[
  {
    "path": ".gitignore",
    "content": "SourceCode/MDK-ARM/app_test/"
  },
  {
    "path": "SourceCode/.mxproject",
    "content": "[PreviousLibFiles]\nLibFiles=Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_cortex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_rcc.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_rcc_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_flash.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_flash_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_gpio.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_gpio_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_hsem.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_dma.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_dma_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_mdma.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_pwr.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_pwr_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_def.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\Legacy\\stm32_hal_legacy.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_i2c.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_i2c_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_exti.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_tim.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_tim_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_uart.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_uart_ex.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\croutine.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\deprecated_definitions.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\event_groups.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\FreeRTOS.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\list.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\message_buffer.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\mpu_prototypes.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\mpu_wrappers.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\portable.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\projdefs.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\queue.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\semphr.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\stack_macros.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\StackMacros.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\stream_buffer.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\task.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\timers.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\atomic.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS\\cmsis_os.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F\\portmacro.h;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_cortex.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_rcc.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_rcc_ex.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_flash.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_flash_ex.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_gpio.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_hsem.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_dma.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_dma_ex.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_mdma.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_pwr.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_pwr_ex.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_i2c.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_i2c_ex.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_exti.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_tim.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_tim_ex.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_uart.c;Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_uart_ex.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\croutine.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\event_groups.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\list.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\queue.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\stream_buffer.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\tasks.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\timers.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS\\cmsis_os.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang\\heap_4.c;Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F\\port.c;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_cortex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_rcc.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_rcc_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_flash.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_flash_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_gpio.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_gpio_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_hsem.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_dma.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_dma_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_mdma.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_pwr.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_pwr_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_def.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\Legacy\\stm32_hal_legacy.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_i2c.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_i2c_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_exti.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_tim.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_tim_ex.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_uart.h;Drivers\\STM32H7xx_HAL_Driver\\Inc\\stm32h7xx_hal_uart_ex.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\croutine.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\deprecated_definitions.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\event_groups.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\FreeRTOS.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\list.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\message_buffer.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\mpu_prototypes.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\mpu_wrappers.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\portable.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\projdefs.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\queue.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\semphr.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\stack_macros.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\StackMacros.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\stream_buffer.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\task.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\timers.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\include\\atomic.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS\\cmsis_os.h;Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F\\portmacro.h;Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Include\\stm32h750xx.h;Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Include\\stm32h7xx.h;Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Include\\system_stm32h7xx.h;Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Source\\Templates\\system_stm32h7xx.c;Drivers\\CMSIS\\Include\\cmsis_armcc.h;Drivers\\CMSIS\\Include\\cmsis_armclang.h;Drivers\\CMSIS\\Include\\cmsis_armclang_ltm.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_armv81mml.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_cm35p.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;\n\n[PreviousUsedKeilFiles]\nSourceFiles=..\\Core\\Src\\main.c;..\\Core\\Src\\gpio.c;..\\Core\\Src\\freertos.c;..\\Core\\Src\\dma.c;..\\Core\\Src\\i2c.c;..\\Core\\Src\\usart.c;..\\Core\\Src\\stm32h7xx_it.c;..\\Core\\Src\\stm32h7xx_hal_msp.c;..\\Core\\Src\\stm32h7xx_hal_timebase_tim.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_cortex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_rcc.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_rcc_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_flash.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_flash_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_gpio.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_hsem.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_dma.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_dma_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_mdma.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_pwr.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_pwr_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_i2c.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_i2c_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_exti.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_tim.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_tim_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_uart.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_uart_ex.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\croutine.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\event_groups.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\list.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\queue.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\stream_buffer.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\tasks.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\timers.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS\\cmsis_os.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang\\heap_4.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F\\port.c;..\\Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Source\\Templates\\system_stm32h7xx.c;..\\Core\\Src\\system_stm32h7xx.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_cortex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_rcc.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_rcc_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_flash.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_flash_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_gpio.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_hsem.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_dma.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_dma_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_mdma.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_pwr.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_pwr_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_i2c.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_i2c_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_exti.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_tim.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_tim_ex.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_uart.c;..\\Drivers\\STM32H7xx_HAL_Driver\\Src\\stm32h7xx_hal_uart_ex.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\croutine.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\event_groups.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\list.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\queue.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\stream_buffer.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\tasks.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\timers.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS\\cmsis_os.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang\\heap_4.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F\\port.c;..\\Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Source\\Templates\\system_stm32h7xx.c;..\\Core\\Src\\system_stm32h7xx.c;;;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\croutine.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\event_groups.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\list.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\queue.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\stream_buffer.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\tasks.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\timers.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS\\cmsis_os.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang\\heap_4.c;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F\\port.c;\nHeaderPath=..\\Drivers\\STM32H7xx_HAL_Driver\\Inc;..\\Drivers\\STM32H7xx_HAL_Driver\\Inc\\Legacy;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\include;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS;..\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F;..\\Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Include;..\\Drivers\\CMSIS\\Include;..\\Middlewares\\ST\\ARM\\DSP\\Inc;..\\Core\\Inc;\nCDefines=USE_HAL_DRIVER;STM32H750xx;USE_HAL_DRIVER;USE_HAL_DRIVER;\n\n[PreviousGenFiles]\nAdvancedFolderStructure=true\nHeaderFileListSize=8\nHeaderFiles#0=E:/Hexapod/Hexapod/SourceCode/Core/Inc/gpio.h\nHeaderFiles#1=E:/Hexapod/Hexapod/SourceCode/Core/Inc/FreeRTOSConfig.h\nHeaderFiles#2=E:/Hexapod/Hexapod/SourceCode/Core/Inc/dma.h\nHeaderFiles#3=E:/Hexapod/Hexapod/SourceCode/Core/Inc/i2c.h\nHeaderFiles#4=E:/Hexapod/Hexapod/SourceCode/Core/Inc/usart.h\nHeaderFiles#5=E:/Hexapod/Hexapod/SourceCode/Core/Inc/stm32h7xx_it.h\nHeaderFiles#6=E:/Hexapod/Hexapod/SourceCode/Core/Inc/stm32h7xx_hal_conf.h\nHeaderFiles#7=E:/Hexapod/Hexapod/SourceCode/Core/Inc/main.h\nHeaderFolderListSize=1\nHeaderPath#0=E:/Hexapod/Hexapod/SourceCode/Core/Inc\nHeaderFiles=;\nSourceFileListSize=9\nSourceFiles#0=E:/Hexapod/Hexapod/SourceCode/Core/Src/gpio.c\nSourceFiles#1=E:/Hexapod/Hexapod/SourceCode/Core/Src/freertos.c\nSourceFiles#2=E:/Hexapod/Hexapod/SourceCode/Core/Src/dma.c\nSourceFiles#3=E:/Hexapod/Hexapod/SourceCode/Core/Src/i2c.c\nSourceFiles#4=E:/Hexapod/Hexapod/SourceCode/Core/Src/usart.c\nSourceFiles#5=E:/Hexapod/Hexapod/SourceCode/Core/Src/stm32h7xx_it.c\nSourceFiles#6=E:/Hexapod/Hexapod/SourceCode/Core/Src/stm32h7xx_hal_msp.c\nSourceFiles#7=E:/Hexapod/Hexapod/SourceCode/Core/Src/stm32h7xx_hal_timebase_tim.c\nSourceFiles#8=E:/Hexapod/Hexapod/SourceCode/Core/Src/main.c\nSourceFolderListSize=1\nSourcePath#0=E:/Hexapod/Hexapod/SourceCode/Core/Src\nSourceFiles=;\n\n[ThirdPartyIp]\nThirdPartyIpNumber=1\nThirdPartyIpName#0=STMicroelectronics.X-CUBE-ALGOBUILD.1.3.0\n\n[ThirdPartyIp#STMicroelectronics.X-CUBE-ALGOBUILD.1.3.0]\nheader=..\\Middlewares\\ST\\ARM\\DSP\\Inc\\arm_math.h;\n\n"
  },
  {
    "path": "SourceCode/Core/Inc/FreeRTOSConfig.h",
    "content": "/* USER CODE BEGIN Header */\n/*\n * FreeRTOS Kernel V10.3.1\n * Portion Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n * Portion Copyright (C) 2019 StMicroelectronics, Inc.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n/* USER CODE END Header */\n\n#ifndef FREERTOS_CONFIG_H\n#define FREERTOS_CONFIG_H\n\n/*-----------------------------------------------------------\n * Application specific definitions.\n *\n * These definitions should be adjusted for your particular hardware and\n * application requirements.\n *\n * These parameters and more are described within the 'configuration' section of the\n * FreeRTOS API documentation available on the FreeRTOS.org web site.\n *\n * See http://www.freertos.org/a00110.html\n *----------------------------------------------------------*/\n\n/* USER CODE BEGIN Includes */\n/* Section where include file can be added */\n/* USER CODE END Includes */\n\n/* Ensure definitions are only used by the compiler, and not by the assembler. */\n#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)\n  #include <stdint.h>\n  extern uint32_t SystemCoreClock;\n#endif\n#define configENABLE_FPU                         1\n#define configENABLE_MPU                         0\n\n#define configUSE_PREEMPTION                     1\n#define configSUPPORT_STATIC_ALLOCATION          1\n#define configSUPPORT_DYNAMIC_ALLOCATION         1\n#define configUSE_IDLE_HOOK                      0\n#define configUSE_TICK_HOOK                      0\n#define configCPU_CLOCK_HZ                       ( SystemCoreClock )\n#define configTICK_RATE_HZ                       ((TickType_t)1000)\n#define configMAX_PRIORITIES                     ( 7 )\n#define configMINIMAL_STACK_SIZE                 ((uint16_t)128)\n#define configTOTAL_HEAP_SIZE                    ((size_t)15360)\n#define configMAX_TASK_NAME_LEN                  ( 16 )\n#define configUSE_16_BIT_TICKS                   0\n#define configUSE_MUTEXES                        1\n#define configQUEUE_REGISTRY_SIZE                8\n#define configUSE_PORT_OPTIMISED_TASK_SELECTION  1\n/* USER CODE BEGIN MESSAGE_BUFFER_LENGTH_TYPE */\n/* Defaults to size_t for backward compatibility, but can be changed\n   if lengths will always be less than the number of bytes in a size_t. */\n#define configMESSAGE_BUFFER_LENGTH_TYPE         size_t\n/* USER CODE END MESSAGE_BUFFER_LENGTH_TYPE */\n\n/* Co-routine definitions. */\n#define configUSE_CO_ROUTINES                    0\n#define configMAX_CO_ROUTINE_PRIORITIES          ( 2 )\n\n/* Set the following definitions to 1 to include the API function, or zero\nto exclude the API function. */\n#define INCLUDE_vTaskPrioritySet             1\n#define INCLUDE_uxTaskPriorityGet            1\n#define INCLUDE_vTaskDelete                  1\n#define INCLUDE_vTaskCleanUpResources        0\n#define INCLUDE_vTaskSuspend                 1\n#define INCLUDE_vTaskDelayUntil              0\n#define INCLUDE_vTaskDelay                   1\n#define INCLUDE_xTaskGetSchedulerState       1\n\n/* Cortex-M specific definitions. */\n#ifdef __NVIC_PRIO_BITS\n /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */\n #define configPRIO_BITS         __NVIC_PRIO_BITS\n#else\n #define configPRIO_BITS         4\n#endif\n\n/* The lowest interrupt priority that can be used in a call to a \"set priority\"\nfunction. */\n#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY   15\n\n/* The highest interrupt priority that can be used by any interrupt service\nroutine that makes calls to interrupt safe FreeRTOS API functions.  DO NOT CALL\nINTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER\nPRIORITY THAN THIS! (higher priorities are lower numeric values. */\n#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5\n\n/* Interrupt priorities used by the kernel port layer itself.  These are generic\nto all Cortex-M ports, and do not rely on any particular library functions. */\n#define configKERNEL_INTERRUPT_PRIORITY \t\t( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )\n/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!\nSee http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */\n#define configMAX_SYSCALL_INTERRUPT_PRIORITY \t( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )\n\n/* Normal assert() semantics without relying on the provision of an assert.h\nheader file. */\n/* USER CODE BEGIN 1 */\n#define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS(); for( ;; );}\n/* USER CODE END 1 */\n\n/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS\nstandard names. */\n#define vPortSVCHandler    SVC_Handler\n#define xPortPendSVHandler PendSV_Handler\n\n/* IMPORTANT: This define is commented when used with STM32Cube firmware, when the timebase source is SysTick,\n              to prevent overwriting SysTick_Handler defined within STM32Cube HAL */\n\n#define xPortSysTickHandler SysTick_Handler\n\n/* USER CODE BEGIN Defines */\n/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */\n/* USER CODE END Defines */\n\n#endif /* FREERTOS_CONFIG_H */\n"
  },
  {
    "path": "SourceCode/Core/Inc/dma.h",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    dma.h\n  * @brief   This file contains all the function prototypes for\n  *          the dma.c file\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef __DMA_H__\n#define __DMA_H__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"main.h\"\n\n/* DMA memory to memory transfer handles -------------------------------------*/\n\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\n/* USER CODE BEGIN Private defines */\n\n/* USER CODE END Private defines */\n\nvoid MX_DMA_Init(void);\n\n/* USER CODE BEGIN Prototypes */\n\n/* USER CODE END Prototypes */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __DMA_H__ */\n\n"
  },
  {
    "path": "SourceCode/Core/Inc/gpio.h",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    gpio.h\n  * @brief   This file contains all the function prototypes for\n  *          the gpio.c file\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef __GPIO_H__\n#define __GPIO_H__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"main.h\"\n\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\n/* USER CODE BEGIN Private defines */\n\n/* USER CODE END Private defines */\n\nvoid MX_GPIO_Init(void);\n\n/* USER CODE BEGIN Prototypes */\n\n/* USER CODE END Prototypes */\n\n#ifdef __cplusplus\n}\n#endif\n#endif /*__ GPIO_H__ */\n\n"
  },
  {
    "path": "SourceCode/Core/Inc/i2c.h",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    i2c.h\n  * @brief   This file contains all the function prototypes for\n  *          the i2c.c file\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef __I2C_H__\n#define __I2C_H__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"main.h\"\n\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\nextern I2C_HandleTypeDef hi2c4;\n\n/* USER CODE BEGIN Private defines */\n\n/* USER CODE END Private defines */\n\nvoid MX_I2C4_Init(void);\n\n/* USER CODE BEGIN Prototypes */\n\n/* USER CODE END Prototypes */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __I2C_H__ */\n\n"
  },
  {
    "path": "SourceCode/Core/Inc/main.h",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file           : main.h\n  * @brief          : Header for main.c file.\n  *                   This file contains the common defines of the application.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef __MAIN_H\n#define __MAIN_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/* Private includes ----------------------------------------------------------*/\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\n/* Exported types ------------------------------------------------------------*/\n/* USER CODE BEGIN ET */\n\n/* USER CODE END ET */\n\n/* Exported constants --------------------------------------------------------*/\n/* USER CODE BEGIN EC */\n\n/* USER CODE END EC */\n\n/* Exported macro ------------------------------------------------------------*/\n/* USER CODE BEGIN EM */\n\n/* USER CODE END EM */\n\n/* Exported functions prototypes ---------------------------------------------*/\nvoid Error_Handler(void);\n\n/* USER CODE BEGIN EFP */\n\n/* USER CODE END EFP */\n\n/* Private defines -----------------------------------------------------------*/\n#define LED_Pin GPIO_PIN_3\n#define LED_GPIO_Port GPIOE\n#define ARM_TXE_Pin GPIO_PIN_1\n#define ARM_TXE_GPIO_Port GPIOA\n#define ARM_RXE_Pin GPIO_PIN_0\n#define ARM_RXE_GPIO_Port GPIOA\n#define LEG3_TXE_Pin GPIO_PIN_14\n#define LEG3_TXE_GPIO_Port GPIOE\n#define LEG3_RXE_Pin GPIO_PIN_15\n#define LEG3_RXE_GPIO_Port GPIOE\n#define LEG1_TXE_Pin GPIO_PIN_12\n#define LEG1_TXE_GPIO_Port GPIOB\n#define LEG1_RXE_Pin GPIO_PIN_13\n#define LEG1_RXE_GPIO_Port GPIOB\n#define LEG6_TXE_Pin GPIO_PIN_8\n#define LEG6_TXE_GPIO_Port GPIOC\n#define LEG6_RXE_Pin GPIO_PIN_9\n#define LEG6_RXE_GPIO_Port GPIOC\n#define LEG4_RXE_Pin GPIO_PIN_9\n#define LEG4_RXE_GPIO_Port GPIOA\n#define LEG4_TXE_Pin GPIO_PIN_10\n#define LEG4_TXE_GPIO_Port GPIOA\n#define LEG5_TXE_Pin GPIO_PIN_0\n#define LEG5_TXE_GPIO_Port GPIOD\n#define LEG5_RXE_Pin GPIO_PIN_1\n#define LEG5_RXE_GPIO_Port GPIOD\n#define LEG2_TXE_Pin GPIO_PIN_3\n#define LEG2_TXE_GPIO_Port GPIOD\n#define LEG2_RXE_Pin GPIO_PIN_4\n#define LEG2_RXE_GPIO_Port GPIOD\n#define MPU6050_SDA_Pin GPIO_PIN_7\n#define MPU6050_SDA_GPIO_Port GPIOB\n#define MPU6050_SCL_Pin GPIO_PIN_8\n#define MPU6050_SCL_GPIO_Port GPIOB\n#define MPU6050_INT_Pin GPIO_PIN_9\n#define MPU6050_INT_GPIO_Port GPIOB\n#define MPU6050_INT_EXTI_IRQn EXTI9_5_IRQn\n/* USER CODE BEGIN Private defines */\n\n/* USER CODE END Private defines */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __MAIN_H */\n"
  },
  {
    "path": "SourceCode/Core/Inc/stm32h7xx_hal_conf.h",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_conf.h\n  * @author  MCD Application Team\n  * @brief   HAL configuration file.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_CONF_H\n#define STM32H7xx_HAL_CONF_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Exported types ------------------------------------------------------------*/\n/* Exported constants --------------------------------------------------------*/\n\n/* ########################## Module Selection ############################## */\n/**\n  * @brief This is the list of modules to be used in the HAL driver\n  */\n#define HAL_MODULE_ENABLED\n\n  /* #define HAL_ADC_MODULE_ENABLED   */\n/* #define HAL_FDCAN_MODULE_ENABLED   */\n/* #define HAL_FMAC_MODULE_ENABLED   */\n/* #define HAL_CEC_MODULE_ENABLED   */\n/* #define HAL_COMP_MODULE_ENABLED   */\n/* #define HAL_CORDIC_MODULE_ENABLED   */\n/* #define HAL_CRC_MODULE_ENABLED   */\n/* #define HAL_CRYP_MODULE_ENABLED   */\n/* #define HAL_DAC_MODULE_ENABLED   */\n/* #define HAL_DCMI_MODULE_ENABLED   */\n/* #define HAL_DMA2D_MODULE_ENABLED   */\n/* #define HAL_ETH_MODULE_ENABLED   */\n/* #define HAL_NAND_MODULE_ENABLED   */\n/* #define HAL_NOR_MODULE_ENABLED   */\n/* #define HAL_OTFDEC_MODULE_ENABLED   */\n/* #define HAL_SRAM_MODULE_ENABLED   */\n/* #define HAL_SDRAM_MODULE_ENABLED   */\n/* #define HAL_HASH_MODULE_ENABLED   */\n/* #define HAL_HRTIM_MODULE_ENABLED   */\n/* #define HAL_HSEM_MODULE_ENABLED   */\n/* #define HAL_GFXMMU_MODULE_ENABLED   */\n/* #define HAL_JPEG_MODULE_ENABLED   */\n/* #define HAL_OPAMP_MODULE_ENABLED   */\n/* #define HAL_OSPI_MODULE_ENABLED   */\n/* #define HAL_OSPI_MODULE_ENABLED   */\n/* #define HAL_I2S_MODULE_ENABLED   */\n/* #define HAL_SMBUS_MODULE_ENABLED   */\n/* #define HAL_IWDG_MODULE_ENABLED   */\n/* #define HAL_LPTIM_MODULE_ENABLED   */\n/* #define HAL_LTDC_MODULE_ENABLED   */\n/* #define HAL_QSPI_MODULE_ENABLED   */\n/* #define HAL_RAMECC_MODULE_ENABLED   */\n/* #define HAL_RNG_MODULE_ENABLED   */\n/* #define HAL_RTC_MODULE_ENABLED   */\n/* #define HAL_SAI_MODULE_ENABLED   */\n/* #define HAL_SD_MODULE_ENABLED   */\n/* #define HAL_MMC_MODULE_ENABLED   */\n/* #define HAL_SPDIFRX_MODULE_ENABLED   */\n/* #define HAL_SPI_MODULE_ENABLED   */\n/* #define HAL_SWPMI_MODULE_ENABLED   */\n#define HAL_TIM_MODULE_ENABLED\n#define HAL_UART_MODULE_ENABLED\n/* #define HAL_USART_MODULE_ENABLED   */\n/* #define HAL_IRDA_MODULE_ENABLED   */\n/* #define HAL_SMARTCARD_MODULE_ENABLED   */\n/* #define HAL_WWDG_MODULE_ENABLED   */\n/* #define HAL_PCD_MODULE_ENABLED   */\n/* #define HAL_HCD_MODULE_ENABLED   */\n/* #define HAL_DFSDM_MODULE_ENABLED   */\n/* #define HAL_DSI_MODULE_ENABLED   */\n/* #define HAL_JPEG_MODULE_ENABLED   */\n/* #define HAL_MDIOS_MODULE_ENABLED   */\n/* #define HAL_PSSI_MODULE_ENABLED   */\n/* #define HAL_DTS_MODULE_ENABLED   */\n#define HAL_GPIO_MODULE_ENABLED\n#define HAL_DMA_MODULE_ENABLED\n#define HAL_MDMA_MODULE_ENABLED\n#define HAL_RCC_MODULE_ENABLED\n#define HAL_FLASH_MODULE_ENABLED\n#define HAL_EXTI_MODULE_ENABLED\n#define HAL_PWR_MODULE_ENABLED\n#define HAL_I2C_MODULE_ENABLED\n#define HAL_CORTEX_MODULE_ENABLED\n#define HAL_HSEM_MODULE_ENABLED\n\n/* ########################## Oscillator Values adaptation ####################*/\n/**\n  * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.\n  *        This value is used by the RCC HAL module to compute the system frequency\n  *        (when HSE is used as system clock source, directly or through the PLL).\n  */\n#if !defined  (HSE_VALUE)\n#define HSE_VALUE    (25000000UL) /*!< Value of the External oscillator in Hz : FPGA case fixed to 60MHZ */\n#endif /* HSE_VALUE */\n\n#if !defined  (HSE_STARTUP_TIMEOUT)\n  #define HSE_STARTUP_TIMEOUT    (100UL)   /*!< Time out for HSE start up, in ms */\n#endif /* HSE_STARTUP_TIMEOUT */\n\n/**\n  * @brief Internal  oscillator (CSI) default value.\n  *        This value is the default CSI value after Reset.\n  */\n#if !defined  (CSI_VALUE)\n  #define CSI_VALUE    (4000000UL) /*!< Value of the Internal oscillator in Hz*/\n#endif /* CSI_VALUE */\n\n/**\n  * @brief Internal High Speed oscillator (HSI) value.\n  *        This value is used by the RCC HAL module to compute the system frequency\n  *        (when HSI is used as system clock source, directly or through the PLL).\n  */\n#if !defined  (HSI_VALUE)\n  #define HSI_VALUE    (64000000UL) /*!< Value of the Internal oscillator in Hz*/\n#endif /* HSI_VALUE */\n\n/**\n  * @brief External Low Speed oscillator (LSE) value.\n  *        This value is used by the UART, RTC HAL module to compute the system frequency\n  */\n#if !defined  (LSE_VALUE)\n  #define LSE_VALUE    (32768UL) /*!< Value of the External oscillator in Hz*/\n#endif /* LSE_VALUE */\n\n#if !defined  (LSE_STARTUP_TIMEOUT)\n  #define LSE_STARTUP_TIMEOUT    (5000UL)   /*!< Time out for LSE start up, in ms */\n#endif /* LSE_STARTUP_TIMEOUT */\n\n#if !defined  (LSI_VALUE)\n  #define LSI_VALUE  (32000UL)              /*!< LSI Typical Value in Hz*/\n#endif /* LSI_VALUE */                      /*!< Value of the Internal Low Speed oscillator in Hz\n                                              The real value may vary depending on the variations\n                                              in voltage and temperature.*/\n\n/**\n  * @brief External clock source for I2S peripheral\n  *        This value is used by the I2S HAL module to compute the I2S clock source\n  *        frequency, this source is inserted directly through I2S_CKIN pad.\n  */\n#if !defined  (EXTERNAL_CLOCK_VALUE)\n  #define EXTERNAL_CLOCK_VALUE    12288000UL /*!< Value of the External clock in Hz*/\n#endif /* EXTERNAL_CLOCK_VALUE */\n\n/* Tip: To avoid modifying this file each time you need to use different HSE,\n   ===  you can define the HSE value in your toolchain compiler preprocessor. */\n\n/* ########################### System Configuration ######################### */\n/**\n  * @brief This is the HAL system configuration section\n  */\n#define  VDD_VALUE                    (3300UL) /*!< Value of VDD in mv */\n#define  TICK_INT_PRIORITY            (15UL) /*!< tick interrupt priority */\n#define  USE_RTOS                     0\n#define  USE_SD_TRANSCEIVER           0U               /*!< use uSD Transceiver */\n#define  USE_SPI_CRC\t              0U               /*!< use CRC in SPI */\n\n#define  USE_HAL_ADC_REGISTER_CALLBACKS     0U /* ADC register callback disabled     */\n#define  USE_HAL_CEC_REGISTER_CALLBACKS     0U /* CEC register callback disabled     */\n#define  USE_HAL_COMP_REGISTER_CALLBACKS    0U /* COMP register callback disabled    */\n#define  USE_HAL_CORDIC_REGISTER_CALLBACKS  0U /* CORDIC register callback disabled  */\n#define  USE_HAL_CRYP_REGISTER_CALLBACKS    0U /* CRYP register callback disabled    */\n#define  USE_HAL_DAC_REGISTER_CALLBACKS     0U /* DAC register callback disabled     */\n#define  USE_HAL_DCMI_REGISTER_CALLBACKS    0U /* DCMI register callback disabled    */\n#define  USE_HAL_DFSDM_REGISTER_CALLBACKS   0U /* DFSDM register callback disabled   */\n#define  USE_HAL_DMA2D_REGISTER_CALLBACKS   0U /* DMA2D register callback disabled   */\n#define  USE_HAL_DSI_REGISTER_CALLBACKS     0U /* DSI register callback disabled     */\n#define  USE_HAL_DTS_REGISTER_CALLBACKS     0U /* DTS register callback disabled     */\n#define  USE_HAL_ETH_REGISTER_CALLBACKS     0U /* ETH register callback disabled     */\n#define  USE_HAL_FDCAN_REGISTER_CALLBACKS   0U /* FDCAN register callback disabled   */\n#define  USE_HAL_FMAC_REGISTER_CALLBACKS    0U /* FMAC register callback disabled  */\n#define  USE_HAL_NAND_REGISTER_CALLBACKS    0U /* NAND register callback disabled    */\n#define  USE_HAL_NOR_REGISTER_CALLBACKS     0U /* NOR register callback disabled     */\n#define  USE_HAL_SDRAM_REGISTER_CALLBACKS   0U /* SDRAM register callback disabled   */\n#define  USE_HAL_SRAM_REGISTER_CALLBACKS    0U /* SRAM register callback disabled    */\n#define  USE_HAL_HASH_REGISTER_CALLBACKS    0U /* HASH register callback disabled    */\n#define  USE_HAL_HCD_REGISTER_CALLBACKS     0U /* HCD register callback disabled     */\n#define  USE_HAL_GFXMMU_REGISTER_CALLBACKS  0U /* GFXMMU register callback disabled  */\n#define  USE_HAL_HRTIM_REGISTER_CALLBACKS   0U /* HRTIM register callback disabled   */\n#define  USE_HAL_I2C_REGISTER_CALLBACKS     0U /* I2C register callback disabled     */\n#define  USE_HAL_I2S_REGISTER_CALLBACKS     0U /* I2S register callback disabled     */\n#define  USE_HAL_IRDA_REGISTER_CALLBACKS    0U /* IRDA register callback disabled    */\n#define  USE_HAL_JPEG_REGISTER_CALLBACKS    0U /* JPEG register callback disabled    */\n#define  USE_HAL_LPTIM_REGISTER_CALLBACKS   0U /* LPTIM register callback disabled   */\n#define  USE_HAL_LTDC_REGISTER_CALLBACKS    0U /* LTDC register callback disabled    */\n#define  USE_HAL_MDIOS_REGISTER_CALLBACKS   0U /* MDIO register callback disabled    */\n#define  USE_HAL_MMC_REGISTER_CALLBACKS     0U /* MMC register callback disabled     */\n#define  USE_HAL_OPAMP_REGISTER_CALLBACKS   0U /* MDIO register callback disabled    */\n#define  USE_HAL_OSPI_REGISTER_CALLBACKS    0U /* OSPI register callback disabled    */\n#define  USE_HAL_OTFDEC_REGISTER_CALLBACKS  0U /* OTFDEC register callback disabled  */\n#define  USE_HAL_PCD_REGISTER_CALLBACKS     0U /* PCD register callback disabled     */\n#define  USE_HAL_QSPI_REGISTER_CALLBACKS    0U /* QSPI register callback disabled    */\n#define  USE_HAL_RNG_REGISTER_CALLBACKS     0U /* RNG register callback disabled     */\n#define  USE_HAL_RTC_REGISTER_CALLBACKS     0U /* RTC register callback disabled     */\n#define  USE_HAL_SAI_REGISTER_CALLBACKS     0U /* SAI register callback disabled     */\n#define  USE_HAL_SD_REGISTER_CALLBACKS      0U /* SD register callback disabled      */\n#define  USE_HAL_SMARTCARD_REGISTER_CALLBACKS  0U /* SMARTCARD register callback disabled */\n#define  USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */\n#define  USE_HAL_SMBUS_REGISTER_CALLBACKS   0U /* SMBUS register callback disabled   */\n#define  USE_HAL_SPI_REGISTER_CALLBACKS     0U /* SPI register callback disabled     */\n#define  USE_HAL_SWPMI_REGISTER_CALLBACKS   0U /* SWPMI register callback disabled   */\n#define  USE_HAL_TIM_REGISTER_CALLBACKS     0U /* TIM register callback disabled     */\n#define  USE_HAL_UART_REGISTER_CALLBACKS    0U /* UART register callback disabled    */\n#define  USE_HAL_USART_REGISTER_CALLBACKS   0U /* USART register callback disabled   */\n#define  USE_HAL_WWDG_REGISTER_CALLBACKS    0U /* WWDG register callback disabled    */\n\n/* ########################### Ethernet Configuration ######################### */\n#define ETH_TX_DESC_CNT         4  /* number of Ethernet Tx DMA descriptors */\n#define ETH_RX_DESC_CNT         4  /* number of Ethernet Rx DMA descriptors */\n\n#define ETH_MAC_ADDR0    (0x02UL)\n#define ETH_MAC_ADDR1    (0x00UL)\n#define ETH_MAC_ADDR2    (0x00UL)\n#define ETH_MAC_ADDR3    (0x00UL)\n#define ETH_MAC_ADDR4    (0x00UL)\n#define ETH_MAC_ADDR5    (0x00UL)\n\n/* ########################## Assert Selection ############################## */\n/**\n  * @brief Uncomment the line below to expanse the \"assert_param\" macro in the\n  *        HAL drivers code\n  */\n/* #define USE_FULL_ASSERT    1U */\n\n/* Includes ------------------------------------------------------------------*/\n/**\n  * @brief Include module's header file\n  */\n\n#ifdef HAL_RCC_MODULE_ENABLED\n  #include \"stm32h7xx_hal_rcc.h\"\n#endif /* HAL_RCC_MODULE_ENABLED */\n\n#ifdef HAL_GPIO_MODULE_ENABLED\n  #include \"stm32h7xx_hal_gpio.h\"\n#endif /* HAL_GPIO_MODULE_ENABLED */\n\n#ifdef HAL_DMA_MODULE_ENABLED\n  #include \"stm32h7xx_hal_dma.h\"\n#endif /* HAL_DMA_MODULE_ENABLED */\n\n#ifdef HAL_MDMA_MODULE_ENABLED\n #include \"stm32h7xx_hal_mdma.h\"\n#endif /* HAL_MDMA_MODULE_ENABLED */\n\n#ifdef HAL_HASH_MODULE_ENABLED\n  #include \"stm32h7xx_hal_hash.h\"\n#endif /* HAL_HASH_MODULE_ENABLED */\n\n#ifdef HAL_DCMI_MODULE_ENABLED\n  #include \"stm32h7xx_hal_dcmi.h\"\n#endif /* HAL_DCMI_MODULE_ENABLED */\n\n#ifdef HAL_DMA2D_MODULE_ENABLED\n  #include \"stm32h7xx_hal_dma2d.h\"\n#endif /* HAL_DMA2D_MODULE_ENABLED */\n\n#ifdef HAL_DSI_MODULE_ENABLED\n  #include \"stm32h7xx_hal_dsi.h\"\n#endif /* HAL_DSI_MODULE_ENABLED */\n\n#ifdef HAL_DFSDM_MODULE_ENABLED\n  #include \"stm32h7xx_hal_dfsdm.h\"\n#endif /* HAL_DFSDM_MODULE_ENABLED */\n\n#ifdef HAL_DTS_MODULE_ENABLED\n #include \"stm32h7xx_hal_dts.h\"\n#endif /* HAL_DTS_MODULE_ENABLED */\n\n#ifdef HAL_ETH_MODULE_ENABLED\n  #include \"stm32h7xx_hal_eth.h\"\n#endif /* HAL_ETH_MODULE_ENABLED */\n\n#ifdef HAL_EXTI_MODULE_ENABLED\n  #include \"stm32h7xx_hal_exti.h\"\n#endif /* HAL_EXTI_MODULE_ENABLED */\n\n#ifdef HAL_CORTEX_MODULE_ENABLED\n  #include \"stm32h7xx_hal_cortex.h\"\n#endif /* HAL_CORTEX_MODULE_ENABLED */\n\n#ifdef HAL_ADC_MODULE_ENABLED\n  #include \"stm32h7xx_hal_adc.h\"\n#endif /* HAL_ADC_MODULE_ENABLED */\n\n#ifdef HAL_FDCAN_MODULE_ENABLED\n  #include \"stm32h7xx_hal_fdcan.h\"\n#endif /* HAL_FDCAN_MODULE_ENABLED */\n\n#ifdef HAL_CEC_MODULE_ENABLED\n  #include \"stm32h7xx_hal_cec.h\"\n#endif /* HAL_CEC_MODULE_ENABLED */\n\n#ifdef HAL_COMP_MODULE_ENABLED\n  #include \"stm32h7xx_hal_comp.h\"\n#endif /* HAL_COMP_MODULE_ENABLED */\n\n#ifdef HAL_CORDIC_MODULE_ENABLED\n  #include \"stm32h7xx_hal_cordic.h\"\n#endif /* HAL_CORDIC_MODULE_ENABLED */\n\n#ifdef HAL_CRC_MODULE_ENABLED\n  #include \"stm32h7xx_hal_crc.h\"\n#endif /* HAL_CRC_MODULE_ENABLED */\n\n#ifdef HAL_CRYP_MODULE_ENABLED\n  #include \"stm32h7xx_hal_cryp.h\"\n#endif /* HAL_CRYP_MODULE_ENABLED */\n\n#ifdef HAL_DAC_MODULE_ENABLED\n  #include \"stm32h7xx_hal_dac.h\"\n#endif /* HAL_DAC_MODULE_ENABLED */\n\n#ifdef HAL_FLASH_MODULE_ENABLED\n  #include \"stm32h7xx_hal_flash.h\"\n#endif /* HAL_FLASH_MODULE_ENABLED */\n\n#ifdef HAL_GFXMMU_MODULE_ENABLED\n  #include \"stm32h7xx_hal_gfxmmu.h\"\n#endif /* HAL_GFXMMU_MODULE_ENABLED */\n\n#ifdef HAL_FMAC_MODULE_ENABLED\n  #include \"stm32h7xx_hal_fmac.h\"\n#endif /* HAL_FMAC_MODULE_ENABLED */\n\n#ifdef HAL_HRTIM_MODULE_ENABLED\n  #include \"stm32h7xx_hal_hrtim.h\"\n#endif /* HAL_HRTIM_MODULE_ENABLED */\n\n#ifdef HAL_HSEM_MODULE_ENABLED\n  #include \"stm32h7xx_hal_hsem.h\"\n#endif /* HAL_HSEM_MODULE_ENABLED */\n\n#ifdef HAL_SRAM_MODULE_ENABLED\n  #include \"stm32h7xx_hal_sram.h\"\n#endif /* HAL_SRAM_MODULE_ENABLED */\n\n#ifdef HAL_NOR_MODULE_ENABLED\n  #include \"stm32h7xx_hal_nor.h\"\n#endif /* HAL_NOR_MODULE_ENABLED */\n\n#ifdef HAL_NAND_MODULE_ENABLED\n  #include \"stm32h7xx_hal_nand.h\"\n#endif /* HAL_NAND_MODULE_ENABLED */\n\n#ifdef HAL_I2C_MODULE_ENABLED\n #include \"stm32h7xx_hal_i2c.h\"\n#endif /* HAL_I2C_MODULE_ENABLED */\n\n#ifdef HAL_I2S_MODULE_ENABLED\n #include \"stm32h7xx_hal_i2s.h\"\n#endif /* HAL_I2S_MODULE_ENABLED */\n\n#ifdef HAL_IWDG_MODULE_ENABLED\n #include \"stm32h7xx_hal_iwdg.h\"\n#endif /* HAL_IWDG_MODULE_ENABLED */\n\n#ifdef HAL_JPEG_MODULE_ENABLED\n #include \"stm32h7xx_hal_jpeg.h\"\n#endif /* HAL_JPEG_MODULE_ENABLED */\n\n#ifdef HAL_MDIOS_MODULE_ENABLED\n #include \"stm32h7xx_hal_mdios.h\"\n#endif /* HAL_MDIOS_MODULE_ENABLED */\n\n#ifdef HAL_MMC_MODULE_ENABLED\n #include \"stm32h7xx_hal_mmc.h\"\n#endif /* HAL_MMC_MODULE_ENABLED */\n\n#ifdef HAL_LPTIM_MODULE_ENABLED\n#include \"stm32h7xx_hal_lptim.h\"\n#endif /* HAL_LPTIM_MODULE_ENABLED */\n\n#ifdef HAL_LTDC_MODULE_ENABLED\n#include \"stm32h7xx_hal_ltdc.h\"\n#endif /* HAL_LTDC_MODULE_ENABLED */\n\n#ifdef HAL_OPAMP_MODULE_ENABLED\n#include \"stm32h7xx_hal_opamp.h\"\n#endif /* HAL_OPAMP_MODULE_ENABLED */\n\n#ifdef HAL_OSPI_MODULE_ENABLED\n #include \"stm32h7xx_hal_ospi.h\"\n#endif /* HAL_OSPI_MODULE_ENABLED */\n\n#ifdef HAL_OTFDEC_MODULE_ENABLED\n#include \"stm32h7xx_hal_otfdec.h\"\n#endif /* HAL_OTFDEC_MODULE_ENABLED */\n\n#ifdef HAL_PSSI_MODULE_ENABLED\n #include \"stm32h7xx_hal_pssi.h\"\n#endif /* HAL_PSSI_MODULE_ENABLED */\n\n#ifdef HAL_PWR_MODULE_ENABLED\n #include \"stm32h7xx_hal_pwr.h\"\n#endif /* HAL_PWR_MODULE_ENABLED */\n\n#ifdef HAL_QSPI_MODULE_ENABLED\n #include \"stm32h7xx_hal_qspi.h\"\n#endif /* HAL_QSPI_MODULE_ENABLED */\n\n#ifdef HAL_RAMECC_MODULE_ENABLED\n #include \"stm32h7xx_hal_ramecc.h\"\n#endif /* HAL_RAMECC_MODULE_ENABLED */\n\n#ifdef HAL_RNG_MODULE_ENABLED\n #include \"stm32h7xx_hal_rng.h\"\n#endif /* HAL_RNG_MODULE_ENABLED */\n\n#ifdef HAL_RTC_MODULE_ENABLED\n #include \"stm32h7xx_hal_rtc.h\"\n#endif /* HAL_RTC_MODULE_ENABLED */\n\n#ifdef HAL_SAI_MODULE_ENABLED\n #include \"stm32h7xx_hal_sai.h\"\n#endif /* HAL_SAI_MODULE_ENABLED */\n\n#ifdef HAL_SD_MODULE_ENABLED\n #include \"stm32h7xx_hal_sd.h\"\n#endif /* HAL_SD_MODULE_ENABLED */\n\n#ifdef HAL_SDRAM_MODULE_ENABLED\n #include \"stm32h7xx_hal_sdram.h\"\n#endif /* HAL_SDRAM_MODULE_ENABLED */\n\n#ifdef HAL_SPI_MODULE_ENABLED\n #include \"stm32h7xx_hal_spi.h\"\n#endif /* HAL_SPI_MODULE_ENABLED */\n\n#ifdef HAL_SPDIFRX_MODULE_ENABLED\n #include \"stm32h7xx_hal_spdifrx.h\"\n#endif /* HAL_SPDIFRX_MODULE_ENABLED */\n\n#ifdef HAL_SWPMI_MODULE_ENABLED\n #include \"stm32h7xx_hal_swpmi.h\"\n#endif /* HAL_SWPMI_MODULE_ENABLED */\n\n#ifdef HAL_TIM_MODULE_ENABLED\n #include \"stm32h7xx_hal_tim.h\"\n#endif /* HAL_TIM_MODULE_ENABLED */\n\n#ifdef HAL_UART_MODULE_ENABLED\n #include \"stm32h7xx_hal_uart.h\"\n#endif /* HAL_UART_MODULE_ENABLED */\n\n#ifdef HAL_USART_MODULE_ENABLED\n #include \"stm32h7xx_hal_usart.h\"\n#endif /* HAL_USART_MODULE_ENABLED */\n\n#ifdef HAL_IRDA_MODULE_ENABLED\n #include \"stm32h7xx_hal_irda.h\"\n#endif /* HAL_IRDA_MODULE_ENABLED */\n\n#ifdef HAL_SMARTCARD_MODULE_ENABLED\n #include \"stm32h7xx_hal_smartcard.h\"\n#endif /* HAL_SMARTCARD_MODULE_ENABLED */\n\n#ifdef HAL_SMBUS_MODULE_ENABLED\n #include \"stm32h7xx_hal_smbus.h\"\n#endif /* HAL_SMBUS_MODULE_ENABLED */\n\n#ifdef HAL_WWDG_MODULE_ENABLED\n #include \"stm32h7xx_hal_wwdg.h\"\n#endif /* HAL_WWDG_MODULE_ENABLED */\n\n#ifdef HAL_PCD_MODULE_ENABLED\n #include \"stm32h7xx_hal_pcd.h\"\n#endif /* HAL_PCD_MODULE_ENABLED */\n\n#ifdef HAL_HCD_MODULE_ENABLED\n #include \"stm32h7xx_hal_hcd.h\"\n#endif /* HAL_HCD_MODULE_ENABLED */\n\n/* Exported macro ------------------------------------------------------------*/\n#ifdef  USE_FULL_ASSERT\n/**\n  * @brief  The assert_param macro is used for function's parameters check.\n  * @param  expr: If expr is false, it calls assert_failed function\n  *         which reports the name of the source file and the source\n  *         line number of the call that failed.\n  *         If expr is true, it returns no value.\n  * @retval None\n  */\n  #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))\n/* Exported functions ------------------------------------------------------- */\n  void assert_failed(uint8_t *file, uint32_t line);\n#else\n  #define assert_param(expr) ((void)0U)\n#endif /* USE_FULL_ASSERT */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_CONF_H */\n"
  },
  {
    "path": "SourceCode/Core/Inc/stm32h7xx_it.h",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    stm32h7xx_it.h\n  * @brief   This file contains the headers of the interrupt handlers.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef __STM32H7xx_IT_H\n#define __STM32H7xx_IT_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Private includes ----------------------------------------------------------*/\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\n/* Exported types ------------------------------------------------------------*/\n/* USER CODE BEGIN ET */\n\n/* USER CODE END ET */\n\n/* Exported constants --------------------------------------------------------*/\n/* USER CODE BEGIN EC */\n\n/* USER CODE END EC */\n\n/* Exported macro ------------------------------------------------------------*/\n/* USER CODE BEGIN EM */\n\n/* USER CODE END EM */\n\n/* Exported functions prototypes ---------------------------------------------*/\nvoid NMI_Handler(void);\nvoid HardFault_Handler(void);\nvoid MemManage_Handler(void);\nvoid BusFault_Handler(void);\nvoid UsageFault_Handler(void);\nvoid DebugMon_Handler(void);\nvoid DMA1_Stream0_IRQHandler(void);\nvoid DMA1_Stream1_IRQHandler(void);\nvoid DMA1_Stream2_IRQHandler(void);\nvoid DMA1_Stream3_IRQHandler(void);\nvoid EXTI9_5_IRQHandler(void);\nvoid TIM1_UP_IRQHandler(void);\nvoid USART1_IRQHandler(void);\nvoid USART2_IRQHandler(void);\nvoid USART3_IRQHandler(void);\nvoid UART4_IRQHandler(void);\nvoid UART5_IRQHandler(void);\nvoid DMA2_Stream0_IRQHandler(void);\nvoid DMA2_Stream1_IRQHandler(void);\nvoid DMA2_Stream2_IRQHandler(void);\nvoid USART6_IRQHandler(void);\nvoid UART7_IRQHandler(void);\nvoid UART8_IRQHandler(void);\nvoid I2C4_EV_IRQHandler(void);\n/* USER CODE BEGIN EFP */\n\n/* USER CODE END EFP */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __STM32H7xx_IT_H */\n"
  },
  {
    "path": "SourceCode/Core/Inc/usart.h",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    usart.h\n  * @brief   This file contains all the function prototypes for\n  *          the usart.c file\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef __USART_H__\n#define __USART_H__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"main.h\"\n\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\nextern UART_HandleTypeDef huart4;\n\nextern UART_HandleTypeDef huart5;\n\nextern UART_HandleTypeDef huart7;\n\nextern UART_HandleTypeDef huart8;\n\nextern UART_HandleTypeDef huart1;\n\nextern UART_HandleTypeDef huart2;\n\nextern UART_HandleTypeDef huart3;\n\nextern UART_HandleTypeDef huart6;\n\n/* USER CODE BEGIN Private defines */\n\n/* USER CODE END Private defines */\n\nvoid MX_UART4_Init(void);\nvoid MX_UART5_Init(void);\nvoid MX_UART7_Init(void);\nvoid MX_UART8_Init(void);\nvoid MX_USART1_UART_Init(void);\nvoid MX_USART2_UART_Init(void);\nvoid MX_USART3_UART_Init(void);\nvoid MX_USART6_UART_Init(void);\n\n/* USER CODE BEGIN Prototypes */\n\n/* USER CODE END Prototypes */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __USART_H__ */\n\n"
  },
  {
    "path": "SourceCode/Core/Src/dma.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    dma.c\n  * @brief   This file provides code for the configuration\n  *          of all the requested memory to memory DMA transfers.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"dma.h\"\n\n/* USER CODE BEGIN 0 */\n\n/* USER CODE END 0 */\n\n/*----------------------------------------------------------------------------*/\n/* Configure DMA                                                              */\n/*----------------------------------------------------------------------------*/\n\n/* USER CODE BEGIN 1 */\n\n/* USER CODE END 1 */\n\n/**\n  * Enable DMA controller clock\n  */\nvoid MX_DMA_Init(void)\n{\n\n  /* DMA controller clock enable */\n  __HAL_RCC_DMA1_CLK_ENABLE();\n  __HAL_RCC_DMA2_CLK_ENABLE();\n\n  /* DMA interrupt init */\n  /* DMA1_Stream0_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);\n  /* DMA1_Stream1_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);\n  /* DMA1_Stream2_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);\n  /* DMA1_Stream3_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);\n  /* DMA2_Stream0_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);\n  /* DMA2_Stream1_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);\n  /* DMA2_Stream2_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);\n\n}\n\n/* USER CODE BEGIN 2 */\n\n/* USER CODE END 2 */\n\n"
  },
  {
    "path": "SourceCode/Core/Src/freertos.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * File Name          : freertos.c\n  * Description        : Code for freertos applications\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"main.h\"\n#include \"cmsis_os.h\"\n\n/* Private includes ----------------------------------------------------------*/\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\n/* Private typedef -----------------------------------------------------------*/\n/* USER CODE BEGIN PTD */\n\n/* USER CODE END PTD */\n\n/* Private define ------------------------------------------------------------*/\n/* USER CODE BEGIN PD */\n\n/* USER CODE END PD */\n\n/* Private macro -------------------------------------------------------------*/\n/* USER CODE BEGIN PM */\n\n/* USER CODE END PM */\n\n/* Private variables ---------------------------------------------------------*/\n/* USER CODE BEGIN Variables */\n\n/* USER CODE END Variables */\nosThreadId defaultTaskHandle;\nosThreadId LED_taskHandle;\nosThreadId LegControl_taskHandle;\nosThreadId MPU_taskHandle;\n\n/* Private function prototypes -----------------------------------------------*/\n/* USER CODE BEGIN FunctionPrototypes */\n\n/* USER CODE END FunctionPrototypes */\n\nvoid StartDefaultTask(void const * argument);\nextern void LED_Task(void const * argument);\nextern void LegControl_Task(void const * argument);\nextern void MPU_Task(void const * argument);\n\nvoid MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */\n\n/* GetIdleTaskMemory prototype (linked to static allocation support) */\nvoid vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize );\n\n/* USER CODE BEGIN GET_IDLE_TASK_MEMORY */\nstatic StaticTask_t xIdleTaskTCBBuffer;\nstatic StackType_t xIdleStack[configMINIMAL_STACK_SIZE];\n\nvoid vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )\n{\n  *ppxIdleTaskTCBBuffer = &xIdleTaskTCBBuffer;\n  *ppxIdleTaskStackBuffer = &xIdleStack[0];\n  *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;\n  /* place for user code */\n}\n/* USER CODE END GET_IDLE_TASK_MEMORY */\n\n/**\n  * @brief  FreeRTOS initialization\n  * @param  None\n  * @retval None\n  */\nvoid MX_FREERTOS_Init(void) {\n  /* USER CODE BEGIN Init */\n\n  /* USER CODE END Init */\n\n  /* USER CODE BEGIN RTOS_MUTEX */\n  /* add mutexes, ... */\n  /* USER CODE END RTOS_MUTEX */\n\n  /* USER CODE BEGIN RTOS_SEMAPHORES */\n  /* add semaphores, ... */\n  /* USER CODE END RTOS_SEMAPHORES */\n\n  /* USER CODE BEGIN RTOS_TIMERS */\n  /* start timers, add new ones, ... */\n  /* USER CODE END RTOS_TIMERS */\n\n  /* USER CODE BEGIN RTOS_QUEUES */\n  /* add queues, ... */\n  /* USER CODE END RTOS_QUEUES */\n\n  /* Create the thread(s) */\n  /* definition and creation of defaultTask */\n  osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);\n  defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);\n\n  /* definition and creation of LED_task */\n  osThreadDef(LED_task, LED_Task, osPriorityIdle, 0, 128);\n  LED_taskHandle = osThreadCreate(osThread(LED_task), NULL);\n\n  /* definition and creation of LegControl_task */\n  osThreadDef(LegControl_task, LegControl_Task, osPriorityRealtime, 0, 1024);\n  LegControl_taskHandle = osThreadCreate(osThread(LegControl_task), NULL);\n\n  /* definition and creation of MPU_task */\n  osThreadDef(MPU_task, MPU_Task, osPriorityRealtime, 0, 512);\n  MPU_taskHandle = osThreadCreate(osThread(MPU_task), NULL);\n\n  /* USER CODE BEGIN RTOS_THREADS */\n  /* add threads, ... */\n  /* USER CODE END RTOS_THREADS */\n\n}\n\n/* USER CODE BEGIN Header_StartDefaultTask */\n/**\n  * @brief  Function implementing the defaultTask thread.\n  * @param  argument: Not used\n  * @retval None\n  */\n/* USER CODE END Header_StartDefaultTask */\nvoid StartDefaultTask(void const * argument)\n{\n  /* USER CODE BEGIN StartDefaultTask */\n  /* Infinite loop */\n  for(;;)\n  {\n    osDelay(1);\n  }\n  /* USER CODE END StartDefaultTask */\n}\n\n/* Private application code --------------------------------------------------*/\n/* USER CODE BEGIN Application */\n\n/* USER CODE END Application */\n"
  },
  {
    "path": "SourceCode/Core/Src/gpio.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    gpio.c\n  * @brief   This file provides code for the configuration\n  *          of all used GPIO pins.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"gpio.h\"\n\n/* USER CODE BEGIN 0 */\n\n/* USER CODE END 0 */\n\n/*----------------------------------------------------------------------------*/\n/* Configure GPIO                                                             */\n/*----------------------------------------------------------------------------*/\n/* USER CODE BEGIN 1 */\n\n/* USER CODE END 1 */\n\n/** Configure pins\n     PH0-OSC_IN (PH0)   ------> RCC_OSC_IN\n     PH1-OSC_OUT (PH1)   ------> RCC_OSC_OUT\n     PA13 (JTMS/SWDIO)   ------> DEBUG_JTMS-SWDIO\n     PA14 (JTCK/SWCLK)   ------> DEBUG_JTCK-SWCLK\n     PA15 (JTDI)   ------> DEBUG_JTDI\n     PB3 (JTDO/TRACESWO)   ------> DEBUG_JTDO-SWO\n*/\nvoid MX_GPIO_Init(void)\n{\n\n  GPIO_InitTypeDef GPIO_InitStruct = {0};\n\n  /* GPIO Ports Clock Enable */\n  __HAL_RCC_GPIOE_CLK_ENABLE();\n  __HAL_RCC_GPIOH_CLK_ENABLE();\n  __HAL_RCC_GPIOA_CLK_ENABLE();\n  __HAL_RCC_GPIOB_CLK_ENABLE();\n  __HAL_RCC_GPIOC_CLK_ENABLE();\n  __HAL_RCC_GPIOD_CLK_ENABLE();\n\n  /*Configure GPIO pin Output Level */\n  HAL_GPIO_WritePin(GPIOE, LED_Pin|LEG3_TXE_Pin|LEG3_RXE_Pin, GPIO_PIN_RESET);\n\n  /*Configure GPIO pin Output Level */\n  HAL_GPIO_WritePin(GPIOA, ARM_TXE_Pin|ARM_RXE_Pin|LEG4_RXE_Pin|LEG4_TXE_Pin, GPIO_PIN_RESET);\n\n  /*Configure GPIO pin Output Level */\n  HAL_GPIO_WritePin(GPIOB, LEG1_TXE_Pin|LEG1_RXE_Pin, GPIO_PIN_RESET);\n\n  /*Configure GPIO pin Output Level */\n  HAL_GPIO_WritePin(GPIOC, LEG6_TXE_Pin|LEG6_RXE_Pin, GPIO_PIN_RESET);\n\n  /*Configure GPIO pin Output Level */\n  HAL_GPIO_WritePin(GPIOD, LEG5_TXE_Pin|LEG5_RXE_Pin|LEG2_TXE_Pin|LEG2_RXE_Pin, GPIO_PIN_RESET);\n\n  /*Configure GPIO pins : PEPin PEPin PEPin */\n  GPIO_InitStruct.Pin = LED_Pin|LEG3_TXE_Pin|LEG3_RXE_Pin;\n  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\n  GPIO_InitStruct.Pull = GPIO_NOPULL;\n  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);\n\n  /*Configure GPIO pins : PAPin PAPin PAPin PAPin */\n  GPIO_InitStruct.Pin = ARM_TXE_Pin|ARM_RXE_Pin|LEG4_RXE_Pin|LEG4_TXE_Pin;\n  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\n  GPIO_InitStruct.Pull = GPIO_NOPULL;\n  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);\n\n  /*Configure GPIO pins : PBPin PBPin */\n  GPIO_InitStruct.Pin = LEG1_TXE_Pin|LEG1_RXE_Pin;\n  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\n  GPIO_InitStruct.Pull = GPIO_NOPULL;\n  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);\n\n  /*Configure GPIO pins : PCPin PCPin */\n  GPIO_InitStruct.Pin = LEG6_TXE_Pin|LEG6_RXE_Pin;\n  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\n  GPIO_InitStruct.Pull = GPIO_NOPULL;\n  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);\n\n  /*Configure GPIO pins : PDPin PDPin PDPin PDPin */\n  GPIO_InitStruct.Pin = LEG5_TXE_Pin|LEG5_RXE_Pin|LEG2_TXE_Pin|LEG2_RXE_Pin;\n  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\n  GPIO_InitStruct.Pull = GPIO_NOPULL;\n  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);\n\n  /*Configure GPIO pin : PtPin */\n  GPIO_InitStruct.Pin = MPU6050_INT_Pin;\n  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;\n  GPIO_InitStruct.Pull = GPIO_PULLUP;\n  HAL_GPIO_Init(MPU6050_INT_GPIO_Port, &GPIO_InitStruct);\n\n  /* EXTI interrupt init*/\n  HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0);\n  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);\n\n}\n\n/* USER CODE BEGIN 2 */\n\n/* USER CODE END 2 */\n"
  },
  {
    "path": "SourceCode/Core/Src/i2c.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    i2c.c\n  * @brief   This file provides code for the configuration\n  *          of the I2C instances.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Includes ------------------------------------------------------------------*/\n#include \"i2c.h\"\n\n/* USER CODE BEGIN 0 */\n\n/* USER CODE END 0 */\n\nI2C_HandleTypeDef hi2c4;\n\n/* I2C4 init function */\nvoid MX_I2C4_Init(void)\n{\n\n  /* USER CODE BEGIN I2C4_Init 0 */\n\n  /* USER CODE END I2C4_Init 0 */\n\n  /* USER CODE BEGIN I2C4_Init 1 */\n\n  /* USER CODE END I2C4_Init 1 */\n  hi2c4.Instance = I2C4;\n  hi2c4.Init.Timing = 0x00501E6C;\n  hi2c4.Init.OwnAddress1 = 0;\n  hi2c4.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;\n  hi2c4.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;\n  hi2c4.Init.OwnAddress2 = 0;\n  hi2c4.Init.OwnAddress2Masks = I2C_OA2_NOMASK;\n  hi2c4.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;\n  hi2c4.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;\n  if (HAL_I2C_Init(&hi2c4) != HAL_OK)\n  {\n    Error_Handler();\n  }\n\n  /** Configure Analogue filter\n  */\n  if (HAL_I2CEx_ConfigAnalogFilter(&hi2c4, I2C_ANALOGFILTER_ENABLE) != HAL_OK)\n  {\n    Error_Handler();\n  }\n\n  /** Configure Digital filter\n  */\n  if (HAL_I2CEx_ConfigDigitalFilter(&hi2c4, 0) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN I2C4_Init 2 */\n\n  /* USER CODE END I2C4_Init 2 */\n\n}\n\nvoid HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)\n{\n\n  GPIO_InitTypeDef GPIO_InitStruct = {0};\n  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};\n  if(i2cHandle->Instance==I2C4)\n  {\n  /* USER CODE BEGIN I2C4_MspInit 0 */\n\n  /* USER CODE END I2C4_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C4;\n    PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_D3PCLK1;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_RCC_GPIOB_CLK_ENABLE();\n    /**I2C4 GPIO Configuration\n    PB7     ------> I2C4_SDA\n    PB8     ------> I2C4_SCL\n    */\n    GPIO_InitStruct.Pin = MPU6050_SDA_Pin|MPU6050_SCL_Pin;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF6_I2C4;\n    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);\n\n    /* I2C4 clock enable */\n    __HAL_RCC_I2C4_CLK_ENABLE();\n\n    /* I2C4 interrupt Init */\n    HAL_NVIC_SetPriority(I2C4_EV_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(I2C4_EV_IRQn);\n  /* USER CODE BEGIN I2C4_MspInit 1 */\n\n  /* USER CODE END I2C4_MspInit 1 */\n  }\n}\n\nvoid HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)\n{\n\n  if(i2cHandle->Instance==I2C4)\n  {\n  /* USER CODE BEGIN I2C4_MspDeInit 0 */\n\n  /* USER CODE END I2C4_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_I2C4_CLK_DISABLE();\n\n    /**I2C4 GPIO Configuration\n    PB7     ------> I2C4_SDA\n    PB8     ------> I2C4_SCL\n    */\n    HAL_GPIO_DeInit(MPU6050_SDA_GPIO_Port, MPU6050_SDA_Pin);\n\n    HAL_GPIO_DeInit(MPU6050_SCL_GPIO_Port, MPU6050_SCL_Pin);\n\n    /* I2C4 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(I2C4_EV_IRQn);\n  /* USER CODE BEGIN I2C4_MspDeInit 1 */\n\n  /* USER CODE END I2C4_MspDeInit 1 */\n  }\n}\n\n/* USER CODE BEGIN 1 */\n\n/* USER CODE END 1 */\n"
  },
  {
    "path": "SourceCode/Core/Src/main.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file           : main.c\n  * @brief          : Main program body\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Includes ------------------------------------------------------------------*/\n#include \"main.h\"\n#include \"cmsis_os.h\"\n#include \"dma.h\"\n#include \"i2c.h\"\n#include \"usart.h\"\n#include \"gpio.h\"\n\n/* Private includes ----------------------------------------------------------*/\n/* USER CODE BEGIN Includes */\n#include \"debug_uart.h\"\n#include \"remote.h\"\n#include \"dwt_delay_us.h\"\n/* USER CODE END Includes */\n\n/* Private typedef -----------------------------------------------------------*/\n/* USER CODE BEGIN PTD */\n\n/* USER CODE END PTD */\n\n/* Private define ------------------------------------------------------------*/\n/* USER CODE BEGIN PD */\n/* USER CODE END PD */\n\n/* Private macro -------------------------------------------------------------*/\n/* USER CODE BEGIN PM */\n\n/* USER CODE END PM */\n\n/* Private variables ---------------------------------------------------------*/\n\n/* USER CODE BEGIN PV */\n\n/* USER CODE END PV */\n\n/* Private function prototypes -----------------------------------------------*/\nvoid SystemClock_Config(void);\nstatic void MPU_Config(void);\nvoid MX_FREERTOS_Init(void);\n/* USER CODE BEGIN PFP */\n/**\n * @brief       ʹSTM32H7L1-Cache, ͬʱD cacheǿ͸д\n * @param       \n * @retval      \n */\nvoid sys_cache_enable(void)\n{\n    //SCB_EnableICache(); /* ʹI-Cache,core_cm7.h涨 */\n    SCB_EnableDCache(); /* ʹD-Cache,core_cm7.h涨 */\n    SCB->CACR |= 1 << 2;/* ǿD-Cache͸д,粻͸д,ʵʹп */\n}\n/* USER CODE END PFP */\n\n/* Private user code ---------------------------------------------------------*/\n/* USER CODE BEGIN 0 */\n/**\n  * @brief  The application entry point.\n  * @retval int\n  */\nint main(void)\n{\n  \n\tSCB->VTOR = 0x90000000; /* жַ */\n  sys_cache_enable();\n  //MPU_Config();   //ȥעͻᵼ½쳣\n\n  /* MCU Configuration--------------------------------------------------------*/\n\n  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */\n  HAL_Init();\n  /* Configure the system clock */\n  SystemClock_Config();\n\tMX_DMA_Init();\n  MX_GPIO_Init();\n\t/************Ӳʼ***************/\n\tDebug_UART_Init();\n\tRemote_Init();\n\tDWT_Delay_Init();\n\t/************FreeRTOS***************/\n\tMX_FREERTOS_Init();  //ʼ\n\tosKernelStart(); //ʼ\n\t//ʼȺﲻᱻִ\n  while (1)\n  {\n\t\tHAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);\n\t\t//APP_PRINT(\"HelloWorld\\r\\n\");\n\t\tHAL_Delay(1);\n  }\n}\n/* USER CODE END 0 */\n\n/**\n  * @brief  The application entry point.\n  * @retval int\n  */\n\n/**\n  * @brief System Clock Configuration\n  * @retval None\n  */\nvoid SystemClock_Config(void)\n{\n  RCC_OscInitTypeDef RCC_OscInitStruct = {0};\n  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};\n\n  /** Supply configuration update enable\n  */\n  HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);\n\n  /** Configure the main internal regulator output voltage\n  */\n  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);\n\n  while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}\n\n  /** Initializes the RCC Oscillators according to the specified parameters\n  * in the RCC_OscInitTypeDef structure.\n  */\n  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;\n  RCC_OscInitStruct.HSIState = RCC_HSI_DIV1;\n  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;\n  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;\n  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;\n  RCC_OscInitStruct.PLL.PLLM = 4;\n  RCC_OscInitStruct.PLL.PLLN = 60;\n  RCC_OscInitStruct.PLL.PLLP = 2;\n  RCC_OscInitStruct.PLL.PLLQ = 2;\n  RCC_OscInitStruct.PLL.PLLR = 2;\n  RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;\n  RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;\n  RCC_OscInitStruct.PLL.PLLFRACN = 0;\n  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)\n  {\n    Error_Handler();\n  }\n\n  /** Initializes the CPU, AHB and APB buses clocks\n  */\n  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK\n                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2\n                              |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;\n  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;\n  RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;\n  RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV4;\n  RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;\n  RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;\n  RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;\n  RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;\n\n  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)\n  {\n    Error_Handler();\n  }\n}\n\n/* USER CODE BEGIN 4 */\n\n/* USER CODE END 4 */\n\n/* MPU Configuration */\n\nvoid MPU_Config(void)\n{\n  MPU_Region_InitTypeDef MPU_InitStruct = {0};\n\n  /* Disables the MPU */\n  HAL_MPU_Disable();\n\n  /** Initializes and configures the Region and the memory to be protected\n  */\n  MPU_InitStruct.Enable = MPU_REGION_ENABLE;\n  MPU_InitStruct.Number = MPU_REGION_NUMBER0;\n  MPU_InitStruct.BaseAddress = 0x0;\n  MPU_InitStruct.Size = MPU_REGION_SIZE_4GB;\n  MPU_InitStruct.SubRegionDisable = 0x87;\n  MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;\n  MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS;\n  MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;\n  MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;\n  MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;\n  MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;\n\n  HAL_MPU_ConfigRegion(&MPU_InitStruct);\n  /* Enables the MPU */\n  HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);\n\n}\n\n/**\n  * @brief  Period elapsed callback in non blocking mode\n  * @note   This function is called  when TIM1 interrupt took place, inside\n  * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment\n  * a global variable \"uwTick\" used as application time base.\n  * @param  htim : TIM handle\n  * @retval None\n  */\nvoid HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)\n{\n  /* USER CODE BEGIN Callback 0 */\n\n  /* USER CODE END Callback 0 */\n  if (htim->Instance == TIM1) {\n    HAL_IncTick();\n  }\n  /* USER CODE BEGIN Callback 1 */\n\n  /* USER CODE END Callback 1 */\n}\n\n/**\n  * @brief  This function is executed in case of error occurrence.\n  * @retval None\n  */\nvoid Error_Handler(void)\n{\n  /* USER CODE BEGIN Error_Handler_Debug */\n  /* User can add his own implementation to report the HAL error return state */\n  __disable_irq();\n  while (1)\n  {\n  }\n  /* USER CODE END Error_Handler_Debug */\n}\n\n#ifdef  USE_FULL_ASSERT\n/**\n  * @brief  Reports the name of the source file and the source line number\n  *         where the assert_param error has occurred.\n  * @param  file: pointer to the source file name\n  * @param  line: assert_param error line source number\n  * @retval None\n  */\nvoid assert_failed(uint8_t *file, uint32_t line)\n{\n  /* USER CODE BEGIN 6 */\n  /* User can add his own implementation to report the file name and line number,\n     ex: printf(\"Wrong parameters value: file %s on line %d\\r\\n\", file, line) */\n  /* USER CODE END 6 */\n}\n#endif /* USE_FULL_ASSERT */\n"
  },
  {
    "path": "SourceCode/Core/Src/stm32h7xx_hal_msp.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file         stm32h7xx_hal_msp.c\n  * @brief        This file provides code for the MSP Initialization\n  *               and de-Initialization codes.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"main.h\"\n/* USER CODE BEGIN Includes */\n\n/* USER CODE END Includes */\n\n/* Private typedef -----------------------------------------------------------*/\n/* USER CODE BEGIN TD */\n\n/* USER CODE END TD */\n\n/* Private define ------------------------------------------------------------*/\n/* USER CODE BEGIN Define */\n\n/* USER CODE END Define */\n\n/* Private macro -------------------------------------------------------------*/\n/* USER CODE BEGIN Macro */\n\n/* USER CODE END Macro */\n\n/* Private variables ---------------------------------------------------------*/\n/* USER CODE BEGIN PV */\n\n/* USER CODE END PV */\n\n/* Private function prototypes -----------------------------------------------*/\n/* USER CODE BEGIN PFP */\n\n/* USER CODE END PFP */\n\n/* External functions --------------------------------------------------------*/\n/* USER CODE BEGIN ExternalFunctions */\n\n/* USER CODE END ExternalFunctions */\n\n/* USER CODE BEGIN 0 */\n\n/* USER CODE END 0 */\n/**\n  * Initializes the Global MSP.\n  */\nvoid HAL_MspInit(void)\n{\n  /* USER CODE BEGIN MspInit 0 */\n\n  /* USER CODE END MspInit 0 */\n\n  __HAL_RCC_SYSCFG_CLK_ENABLE();\n\n  /* System interrupt init*/\n  /* PendSV_IRQn interrupt configuration */\n  HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);\n\n  /* USER CODE BEGIN MspInit 1 */\n\n  /* USER CODE END MspInit 1 */\n}\n\n/* USER CODE BEGIN 1 */\n\n/* USER CODE END 1 */\n"
  },
  {
    "path": "SourceCode/Core/Src/stm32h7xx_hal_timebase_tim.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_timebase_TIM.c\n  * @brief   HAL time base based on the hardware TIM.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n#include \"stm32h7xx_hal_tim.h\"\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\nTIM_HandleTypeDef        htim1;\n/* Private function prototypes -----------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n\n/**\n  * @brief  This function configures the TIM1 as a time base source.\n  *         The time source is configured  to have 1ms time base with a dedicated\n  *         Tick interrupt priority.\n  * @note   This function is called  automatically at the beginning of program after\n  *         reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig().\n  * @param  TickPriority: Tick interrupt priority.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)\n{\n  RCC_ClkInitTypeDef    clkconfig;\n  uint32_t              uwTimclock;\n\n  uint32_t              uwPrescalerValue;\n  uint32_t              pFLatency;\n/*Configure the TIM1 IRQ priority */\n  if (TickPriority < (1UL << __NVIC_PRIO_BITS))\n  {\n  HAL_NVIC_SetPriority(TIM1_UP_IRQn, TickPriority ,0U);\n\n  /* Enable the TIM1 global Interrupt */\n  HAL_NVIC_EnableIRQ(TIM1_UP_IRQn);\n    uwTickPrio = TickPriority;\n    }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  /* Enable TIM1 clock */\n  __HAL_RCC_TIM1_CLK_ENABLE();\n\n  /* Get clock configuration */\n  HAL_RCC_GetClockConfig(&clkconfig, &pFLatency);\n\n  /* Compute TIM1 clock */\n\n  uwTimclock = 2*HAL_RCC_GetPCLK2Freq();\n\n  /* Compute the prescaler value to have TIM1 counter clock equal to 1MHz */\n  uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U);\n\n  /* Initialize TIM1 */\n  htim1.Instance = TIM1;\n\n  /* Initialize TIMx peripheral as follow:\n  + Period = [(TIM1CLK/1000) - 1]. to have a (1/1000) s time base.\n  + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock.\n  + ClockDivision = 0\n  + Counter direction = Up\n  */\n  htim1.Init.Period = (1000000U / 1000U) - 1U;\n  htim1.Init.Prescaler = uwPrescalerValue;\n  htim1.Init.ClockDivision = 0;\n  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;\n\n  if(HAL_TIM_Base_Init(&htim1) == HAL_OK)\n  {\n    /* Start the TIM time Base generation in interrupt mode */\n    return HAL_TIM_Base_Start_IT(&htim1);\n  }\n\n  /* Return function status */\n  return HAL_ERROR;\n}\n\n/**\n  * @brief  Suspend Tick increment.\n  * @note   Disable the tick increment by disabling TIM1 update interrupt.\n  * @param  None\n  * @retval None\n  */\nvoid HAL_SuspendTick(void)\n{\n  /* Disable TIM1 update Interrupt */\n  __HAL_TIM_DISABLE_IT(&htim1, TIM_IT_UPDATE);\n}\n\n/**\n  * @brief  Resume Tick increment.\n  * @note   Enable the tick increment by Enabling TIM1 update interrupt.\n  * @param  None\n  * @retval None\n  */\nvoid HAL_ResumeTick(void)\n{\n  /* Enable TIM1 Update interrupt */\n  __HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE);\n}\n\n"
  },
  {
    "path": "SourceCode/Core/Src/stm32h7xx_it.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    stm32h7xx_it.c\n  * @brief   Interrupt Service Routines.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"main.h\"\n#include \"stm32h7xx_it.h\"\n/* Private includes ----------------------------------------------------------*/\n/* USER CODE BEGIN Includes */\n#include \"debug_uart.h\"\n#include \"remote.h\"\n/* USER CODE END Includes */\n\n/* Private typedef -----------------------------------------------------------*/\n/* USER CODE BEGIN TD */\n\n/* USER CODE END TD */\n\n/* Private define ------------------------------------------------------------*/\n/* USER CODE BEGIN PD */\n\n/* USER CODE END PD */\n\n/* Private macro -------------------------------------------------------------*/\n/* USER CODE BEGIN PM */\n\n/* USER CODE END PM */\n\n/* Private variables ---------------------------------------------------------*/\n/* USER CODE BEGIN PV */\n\n/* USER CODE END PV */\n\n/* Private function prototypes -----------------------------------------------*/\n/* USER CODE BEGIN PFP */\n\n/* USER CODE END PFP */\n\n/* Private user code ---------------------------------------------------------*/\n/* USER CODE BEGIN 0 */\n\n/* USER CODE END 0 */\n\n/* External variables --------------------------------------------------------*/\nextern I2C_HandleTypeDef hi2c4;\nextern DMA_HandleTypeDef hdma_uart4_tx;\nextern DMA_HandleTypeDef hdma_uart5_tx;\nextern DMA_HandleTypeDef hdma_uart8_tx;\nextern DMA_HandleTypeDef hdma_usart1_tx;\nextern DMA_HandleTypeDef hdma_usart2_tx;\nextern DMA_HandleTypeDef hdma_usart3_tx;\nextern DMA_HandleTypeDef hdma_usart6_tx;\nextern UART_HandleTypeDef huart4;\nextern UART_HandleTypeDef huart5;\nextern UART_HandleTypeDef huart7;\nextern UART_HandleTypeDef huart8;\nextern UART_HandleTypeDef huart1;\nextern UART_HandleTypeDef huart2;\nextern UART_HandleTypeDef huart3;\nextern UART_HandleTypeDef huart6;\nextern TIM_HandleTypeDef htim1;\n\n/* USER CODE BEGIN EV */\n\n/* USER CODE END EV */\n\n/******************************************************************************/\n/*           Cortex Processor Interruption and Exception Handlers          */\n/******************************************************************************/\n/**\n  * @brief This function handles Non maskable interrupt.\n  */\nvoid NMI_Handler(void)\n{\n  /* USER CODE BEGIN NonMaskableInt_IRQn 0 */\n\n  /* USER CODE END NonMaskableInt_IRQn 0 */\n  /* USER CODE BEGIN NonMaskableInt_IRQn 1 */\n  while (1)\n  {\n  }\n  /* USER CODE END NonMaskableInt_IRQn 1 */\n}\n\n/**\n  * @brief This function handles Hard fault interrupt.\n  */\nvoid HardFault_Handler(void)\n{\n  /* USER CODE BEGIN HardFault_IRQn 0 */\n  __set_FAULTMASK(1);\n  NVIC_SystemReset();\n  /* USER CODE END HardFault_IRQn 0 */\n  while (1)\n  {\n    /* USER CODE BEGIN W1_HardFault_IRQn 0 */\n    /* USER CODE END W1_HardFault_IRQn 0 */\n  }\n}\n\n/**\n  * @brief This function handles Memory management fault.\n  */\nvoid MemManage_Handler(void)\n{\n  /* USER CODE BEGIN MemoryManagement_IRQn 0 */\n  __set_FAULTMASK(1);\n  NVIC_SystemReset();\n  /* USER CODE END MemoryManagement_IRQn 0 */\n  while (1)\n  {\n    /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */\n    /* USER CODE END W1_MemoryManagement_IRQn 0 */\n  }\n}\n\n/**\n  * @brief This function handles Pre-fetch fault, memory access fault.\n  */\nvoid BusFault_Handler(void)\n{\n  /* USER CODE BEGIN BusFault_IRQn 0 */\n\n  /* USER CODE END BusFault_IRQn 0 */\n  while (1)\n  {\n    /* USER CODE BEGIN W1_BusFault_IRQn 0 */\n    /* USER CODE END W1_BusFault_IRQn 0 */\n  }\n}\n\n/**\n  * @brief This function handles Undefined instruction or illegal state.\n  */\nvoid UsageFault_Handler(void)\n{\n  /* USER CODE BEGIN UsageFault_IRQn 0 */\n\n  /* USER CODE END UsageFault_IRQn 0 */\n  while (1)\n  {\n    /* USER CODE BEGIN W1_UsageFault_IRQn 0 */\n    /* USER CODE END W1_UsageFault_IRQn 0 */\n  }\n}\n\n/**\n  * @brief This function handles Debug monitor.\n  */\nvoid DebugMon_Handler(void)\n{\n  /* USER CODE BEGIN DebugMonitor_IRQn 0 */\n\n  /* USER CODE END DebugMonitor_IRQn 0 */\n  /* USER CODE BEGIN DebugMonitor_IRQn 1 */\n\n  /* USER CODE END DebugMonitor_IRQn 1 */\n}\n\n/******************************************************************************/\n/* STM32H7xx Peripheral Interrupt Handlers                                    */\n/* Add here the Interrupt Handlers for the used peripherals.                  */\n/* For the available peripheral interrupt handler names,                      */\n/* please refer to the startup file (startup_stm32h7xx.s).                    */\n/******************************************************************************/\n\n/**\n  * @brief This function handles DMA1 stream0 global interrupt.\n  */\nvoid DMA1_Stream0_IRQHandler(void)\n{\n  /* USER CODE BEGIN DMA1_Stream0_IRQn 0 */\n\n  /* USER CODE END DMA1_Stream0_IRQn 0 */\n  HAL_DMA_IRQHandler(&hdma_usart3_tx);\n  /* USER CODE BEGIN DMA1_Stream0_IRQn 1 */\n\n  /* USER CODE END DMA1_Stream0_IRQn 1 */\n}\n\n/**\n  * @brief This function handles DMA1 stream1 global interrupt.\n  */\nvoid DMA1_Stream1_IRQHandler(void)\n{\n  /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */\n\n  /* USER CODE END DMA1_Stream1_IRQn 0 */\n  HAL_DMA_IRQHandler(&hdma_uart8_tx);\n  /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */\n\n  /* USER CODE END DMA1_Stream1_IRQn 1 */\n}\n\n/**\n  * @brief This function handles DMA1 stream2 global interrupt.\n  */\nvoid DMA1_Stream2_IRQHandler(void)\n{\n  /* USER CODE BEGIN DMA1_Stream2_IRQn 0 */\n\n  /* USER CODE END DMA1_Stream2_IRQn 0 */\n  HAL_DMA_IRQHandler(&hdma_usart1_tx);\n  /* USER CODE BEGIN DMA1_Stream2_IRQn 1 */\n\n  /* USER CODE END DMA1_Stream2_IRQn 1 */\n}\n\n/**\n  * @brief This function handles DMA1 stream3 global interrupt.\n  */\nvoid DMA1_Stream3_IRQHandler(void)\n{\n  /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */\n\n  /* USER CODE END DMA1_Stream3_IRQn 0 */\n  HAL_DMA_IRQHandler(&hdma_usart2_tx);\n  /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */\n\n  /* USER CODE END DMA1_Stream3_IRQn 1 */\n}\n\n/**\n  * @brief This function handles EXTI line[9:5] interrupts.\n  */\nvoid EXTI9_5_IRQHandler(void)\n{\n  /* USER CODE BEGIN EXTI9_5_IRQn 0 */\n\n  /* USER CODE END EXTI9_5_IRQn 0 */\n  HAL_GPIO_EXTI_IRQHandler(MPU6050_INT_Pin);\n  /* USER CODE BEGIN EXTI9_5_IRQn 1 */\n\n  /* USER CODE END EXTI9_5_IRQn 1 */\n}\n\n/**\n  * @brief This function handles TIM1 update interrupt.\n  */\nvoid TIM1_UP_IRQHandler(void)\n{\n  /* USER CODE BEGIN TIM1_UP_IRQn 0 */\n\n  /* USER CODE END TIM1_UP_IRQn 0 */\n  HAL_TIM_IRQHandler(&htim1);\n  /* USER CODE BEGIN TIM1_UP_IRQn 1 */\n\n  /* USER CODE END TIM1_UP_IRQn 1 */\n}\n\n/**\n  * @brief This function handles USART1 global interrupt.\n  */\nvoid USART1_IRQHandler(void)\n{\n  /* USER CODE BEGIN USART1_IRQn 0 */\n\n  /* USER CODE END USART1_IRQn 0 */\n  HAL_UART_IRQHandler(&huart1);\n  /* USER CODE BEGIN USART1_IRQn 1 */\n\n  /* USER CODE END USART1_IRQn 1 */\n}\n\n/**\n  * @brief This function handles USART2 global interrupt.\n  */\nvoid USART2_IRQHandler(void)\n{\n  /* USER CODE BEGIN USART2_IRQn 0 */\n\n  /* USER CODE END USART2_IRQn 0 */\n  HAL_UART_IRQHandler(&huart2);\n  /* USER CODE BEGIN USART2_IRQn 1 */\n\n  /* USER CODE END USART2_IRQn 1 */\n}\n\n/**\n  * @brief This function handles USART3 global interrupt.\n  */\nvoid USART3_IRQHandler(void)\n{\n  /* USER CODE BEGIN USART3_IRQn 0 */\n\n  /* USER CODE END USART3_IRQn 0 */\n  HAL_UART_IRQHandler(&huart3);\n  /* USER CODE BEGIN USART3_IRQn 1 */\n\n  /* USER CODE END USART3_IRQn 1 */\n}\n\n/**\n  * @brief This function handles UART4 global interrupt.\n  */\nvoid UART4_IRQHandler(void)\n{\n  /* USER CODE BEGIN UART4_IRQn 0 */\n\n  /* USER CODE END UART4_IRQn 0 */\n  HAL_UART_IRQHandler(&huart4);\n  /* USER CODE BEGIN UART4_IRQn 1 */\n\n  /* USER CODE END UART4_IRQn 1 */\n}\n\n/**\n  * @brief This function handles UART5 global interrupt.\n  */\nvoid UART5_IRQHandler(void)\n{\n  /* USER CODE BEGIN UART5_IRQn 0 */\n\n  /* USER CODE END UART5_IRQn 0 */\n  HAL_UART_IRQHandler(&huart5);\n  /* USER CODE BEGIN UART5_IRQn 1 */\n\n  /* USER CODE END UART5_IRQn 1 */\n}\n\n/**\n  * @brief This function handles DMA2 stream0 global interrupt.\n  */\nvoid DMA2_Stream0_IRQHandler(void)\n{\n  /* USER CODE BEGIN DMA2_Stream0_IRQn 0 */\n\n  /* USER CODE END DMA2_Stream0_IRQn 0 */\n  HAL_DMA_IRQHandler(&hdma_uart4_tx);\n  /* USER CODE BEGIN DMA2_Stream0_IRQn 1 */\n\n  /* USER CODE END DMA2_Stream0_IRQn 1 */\n}\n\n/**\n  * @brief This function handles DMA2 stream1 global interrupt.\n  */\nvoid DMA2_Stream1_IRQHandler(void)\n{\n  /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */\n\n  /* USER CODE END DMA2_Stream1_IRQn 0 */\n  HAL_DMA_IRQHandler(&hdma_uart5_tx);\n  /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */\n\n  /* USER CODE END DMA2_Stream1_IRQn 1 */\n}\n\n/**\n  * @brief This function handles DMA2 stream2 global interrupt.\n  */\nvoid DMA2_Stream2_IRQHandler(void)\n{\n  /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */\n\n  /* USER CODE END DMA2_Stream2_IRQn 0 */\n  HAL_DMA_IRQHandler(&hdma_usart6_tx);\n  /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */\n\n  /* USER CODE END DMA2_Stream2_IRQn 1 */\n}\n\n/**\n  * @brief This function handles USART6 global interrupt.\n  */\nvoid USART6_IRQHandler(void)\n{\n  /* USER CODE BEGIN USART6_IRQn 0 */\n\n  /* USER CODE END USART6_IRQn 0 */\n  HAL_UART_IRQHandler(&huart6);\n  /* USER CODE BEGIN USART6_IRQn 1 */\n\n  /* USER CODE END USART6_IRQn 1 */\n}\n\n/**\n  * @brief This function handles UART7 global interrupt.\n  */\nvoid UART7_IRQHandler(void)\n{\n  /* USER CODE BEGIN UART7_IRQn 0 */\n\n  /* USER CODE END UART7_IRQn 0 */\n  HAL_UART_IRQHandler(&huart7);\n  /* USER CODE BEGIN UART7_IRQn 1 */\n\n  /* USER CODE END UART7_IRQn 1 */\n}\n\n/**\n  * @brief This function handles UART8 global interrupt.\n  */\nvoid UART8_IRQHandler(void)\n{\n  /* USER CODE BEGIN UART8_IRQn 0 */\n\n  /* USER CODE END UART8_IRQn 0 */\n  HAL_UART_IRQHandler(&huart8);\n  /* USER CODE BEGIN UART8_IRQn 1 */\n\n  /* USER CODE END UART8_IRQn 1 */\n}\n\n/**\n  * @brief This function handles I2C4 event interrupt.\n  */\nvoid I2C4_EV_IRQHandler(void)\n{\n  /* USER CODE BEGIN I2C4_EV_IRQn 0 */\n\n  /* USER CODE END I2C4_EV_IRQn 0 */\n  HAL_I2C_EV_IRQHandler(&hi2c4);\n  /* USER CODE BEGIN I2C4_EV_IRQn 1 */\n\n  /* USER CODE END I2C4_EV_IRQn 1 */\n}\n\n/* USER CODE BEGIN 1 */\nvoid HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)\n{\n\tif(huart->Instance==DEBUG_UART)\n\t{\n\t\tDebug_UART_Callback(huart);\n\t}\n\tif(huart->Instance==REMOTE_UART)\n\t{\n\t\tRemote_UART_Callback(huart);\n\t}\n}\n/* USER CODE END 1 */\n"
  },
  {
    "path": "SourceCode/Core/Src/system_stm32h7xx.c",
    "content": "/**\n  ******************************************************************************\n  * @file    system_stm32h7xx.c\n  * @author  MCD Application Team\n  * @brief   CMSIS Cortex-Mx Device Peripheral Access Layer System Source File.\n  *\n  *   This file provides two functions and one global variable to be called from\n  *   user application:\n  *      - SystemInit(): This function is called at startup just after reset and\n  *                      before branch to main program. This call is made inside\n  *                      the \"startup_stm32h7xx.s\" file.\n  *\n  *      - SystemCoreClock variable: Contains the core clock, it can be used\n  *                                  by the user application to setup the SysTick\n  *                                  timer or configure other parameters.\n  *\n  *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must\n  *                                 be called whenever the core clock is changed\n  *                                 during program execution.\n  *\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/** @addtogroup CMSIS\n  * @{\n  */\n\n/** @addtogroup stm32h7xx_system\n  * @{\n  */\n\n/** @addtogroup STM32H7xx_System_Private_Includes\n  * @{\n  */\n\n#include \"stm32h7xx.h\"\n#include <math.h>\n\n#if !defined  (HSE_VALUE)\n#define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */\n#endif /* HSE_VALUE */\n\n#if !defined  (CSI_VALUE)\n  #define CSI_VALUE    ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/\n#endif /* CSI_VALUE */\n\n#if !defined  (HSI_VALUE)\n  #define HSI_VALUE    ((uint32_t)64000000) /*!< Value of the Internal oscillator in Hz*/\n#endif /* HSI_VALUE */\n\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Private_TypesDefinitions\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Private_Defines\n  * @{\n  */\n\n/************************* Miscellaneous Configuration ************************/\n/*!< Uncomment the following line if you need to use initialized data in D2 domain SRAM (AHB SRAM) */\n/* #define DATA_IN_D2_SRAM */\n\n/* Note: Following vector table addresses must be defined in line with linker\n         configuration. */\n/*!< Uncomment the following line if you need to relocate the vector table\n     anywhere in FLASH BANK1 or AXI SRAM, else the vector table is kept at the automatic\n     remap of boot address selected */\n/* #define USER_VECT_TAB_ADDRESS */\n\n#if defined(USER_VECT_TAB_ADDRESS)\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n/*!< Uncomment the following line if you need to relocate your vector Table\n     in D2 AXI SRAM else user remap will be done in FLASH BANK2. */\n/* #define VECT_TAB_SRAM */\n#if defined(VECT_TAB_SRAM)\n#define VECT_TAB_BASE_ADDRESS   D2_AXISRAM_BASE   /*!< Vector Table base address field.\n                                                       This value must be a multiple of 0x300. */\n#define VECT_TAB_OFFSET         0x00000000U       /*!< Vector Table base offset field.\n                                                       This value must be a multiple of 0x300. */\n#else\n#define VECT_TAB_BASE_ADDRESS   FLASH_BANK2_BASE  /*!< Vector Table base address field.\n                                                       This value must be a multiple of 0x300. */\n#define VECT_TAB_OFFSET         0x00000000U       /*!< Vector Table base offset field.\n                                                       This value must be a multiple of 0x300. */\n#endif /* VECT_TAB_SRAM */\n#else\n/*!< Uncomment the following line if you need to relocate your vector Table\n     in D1 AXI SRAM else user remap will be done in FLASH BANK1. */\n/* #define VECT_TAB_SRAM */\n#if defined(VECT_TAB_SRAM)\n#define VECT_TAB_BASE_ADDRESS   D1_AXISRAM_BASE   /*!< Vector Table base address field.\n                                                       This value must be a multiple of 0x300. */\n#define VECT_TAB_OFFSET         0x00000000U       /*!< Vector Table base offset field.\n                                                       This value must be a multiple of 0x300. */\n#else\n#define VECT_TAB_BASE_ADDRESS   FLASH_BANK1_BASE  /*!< Vector Table base address field.\n                                                       This value must be a multiple of 0x300. */\n#define VECT_TAB_OFFSET         0x00000000U       /*!< Vector Table base offset field.\n                                                       This value must be a multiple of 0x300. */\n#endif /* VECT_TAB_SRAM */\n#endif /* DUAL_CORE && CORE_CM4 */\n#endif /* USER_VECT_TAB_ADDRESS */\n/******************************************************************************/\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Private_Macros\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Private_Variables\n  * @{\n  */\n  /* This variable is updated in three ways:\n      1) by calling CMSIS function SystemCoreClockUpdate()\n      2) by calling HAL API function HAL_RCC_GetHCLKFreq()\n      3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency\n         Note: If you use this function to configure the system clock; then there\n               is no need to call the 2 first functions listed above, since SystemCoreClock\n               variable is updated automatically.\n  */\n  uint32_t SystemCoreClock = 64000000;\n  uint32_t SystemD2Clock = 64000000;\n  const  uint8_t D1CorePrescTable[16] = {0, 0, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 6, 7, 8, 9};\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Private_FunctionPrototypes\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Setup the microcontroller system\n  *         Initialize the FPU setting and  vector table location\n  *         configuration.\n  * @param  None\n  * @retval None\n  */\nvoid SystemInit (void)\n{\n#if defined (DATA_IN_D2_SRAM)\n __IO uint32_t tmpreg;\n#endif /* DATA_IN_D2_SRAM */\n\n  /* FPU settings ------------------------------------------------------------*/\n  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n    SCB->CPACR |= ((3UL << (10*2))|(3UL << (11*2)));  /* set CP10 and CP11 Full Access */\n  #endif\n  /* Reset the RCC clock configuration to the default reset state ------------*/\n\n   /* Increasing the CPU frequency */\n  if(FLASH_LATENCY_DEFAULT  > (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY)))\n  {\n    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\n    MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT));\n  }\n\n  /* Set HSION bit */\n  RCC->CR |= RCC_CR_HSION;\n\n  /* Reset CFGR register */\n  RCC->CFGR = 0x00000000;\n\n  /* Reset HSEON, HSECSSON, CSION, HSI48ON, CSIKERON, PLL1ON, PLL2ON and PLL3ON bits */\n  RCC->CR &= 0xEAF6ED7FU;\n\n   /* Decreasing the number of wait states because of lower CPU frequency */\n  if(FLASH_LATENCY_DEFAULT  < (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY)))\n  {\n    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\n    MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT));\n  }\n\n#if defined(D3_SRAM_BASE)\n  /* Reset D1CFGR register */\n  RCC->D1CFGR = 0x00000000;\n\n  /* Reset D2CFGR register */\n  RCC->D2CFGR = 0x00000000;\n\n  /* Reset D3CFGR register */\n  RCC->D3CFGR = 0x00000000;\n#else\n  /* Reset CDCFGR1 register */\n  RCC->CDCFGR1 = 0x00000000;\n\n  /* Reset CDCFGR2 register */\n  RCC->CDCFGR2 = 0x00000000;\n\n  /* Reset SRDCFGR register */\n  RCC->SRDCFGR = 0x00000000;\n#endif\n  /* Reset PLLCKSELR register */\n  RCC->PLLCKSELR = 0x02020200;\n\n  /* Reset PLLCFGR register */\n  RCC->PLLCFGR = 0x01FF0000;\n  /* Reset PLL1DIVR register */\n  RCC->PLL1DIVR = 0x01010280;\n  /* Reset PLL1FRACR register */\n  RCC->PLL1FRACR = 0x00000000;\n\n  /* Reset PLL2DIVR register */\n  RCC->PLL2DIVR = 0x01010280;\n\n  /* Reset PLL2FRACR register */\n\n  RCC->PLL2FRACR = 0x00000000;\n  /* Reset PLL3DIVR register */\n  RCC->PLL3DIVR = 0x01010280;\n\n  /* Reset PLL3FRACR register */\n  RCC->PLL3FRACR = 0x00000000;\n\n  /* Reset HSEBYP bit */\n  RCC->CR &= 0xFFFBFFFFU;\n\n  /* Disable all interrupts */\n  RCC->CIER = 0x00000000;\n\n#if (STM32H7_DEV_ID == 0x450UL)\n  /* dual core CM7 or single core line */\n  if((DBGMCU->IDCODE & 0xFFFF0000U) < 0x20000000U)\n  {\n    /* if stm32h7 revY*/\n    /* Change  the switch matrix read issuing capability to 1 for the AXI SRAM target (Target 7) */\n    *((__IO uint32_t*)0x51008108) = 0x000000001U;\n  }\n#endif /* STM32H7_DEV_ID */\n\n#if defined(DATA_IN_D2_SRAM)\n  /* in case of initialized data in D2 SRAM (AHB SRAM), enable the D2 SRAM clock (AHB SRAM clock) */\n#if defined(RCC_AHB2ENR_D2SRAM3EN)\n  RCC->AHB2ENR |= (RCC_AHB2ENR_D2SRAM1EN | RCC_AHB2ENR_D2SRAM2EN | RCC_AHB2ENR_D2SRAM3EN);\n#elif defined(RCC_AHB2ENR_D2SRAM2EN)\n  RCC->AHB2ENR |= (RCC_AHB2ENR_D2SRAM1EN | RCC_AHB2ENR_D2SRAM2EN);\n#else\n  RCC->AHB2ENR |= (RCC_AHB2ENR_AHBSRAM1EN | RCC_AHB2ENR_AHBSRAM2EN);\n#endif /* RCC_AHB2ENR_D2SRAM3EN */\n\n  tmpreg = RCC->AHB2ENR;\n  (void) tmpreg;\n#endif /* DATA_IN_D2_SRAM */\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  /* Configure the Vector Table location add offset address for cortex-M4 ------------------*/\n#if defined(USER_VECT_TAB_ADDRESS)\n  SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal D2 AXI-RAM or in Internal FLASH */\n#endif /* USER_VECT_TAB_ADDRESS */\n\n#else\n  /*\n   * Disable the FMC bank1 (enabled after reset).\n   * This, prevents CPU speculation access on this bank which blocks the use of FMC during\n   * 24us. During this time the others FMC master (such as LTDC) cannot use it!\n   */\n  FMC_Bank1_R->BTCR[0] = 0x000030D2;\n\n  /* Configure the Vector Table location -------------------------------------*/\n#if defined(USER_VECT_TAB_ADDRESS)\n  SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal D1 AXI-RAM or in Internal FLASH */\n#endif /* USER_VECT_TAB_ADDRESS */\n\n#endif /*DUAL_CORE && CORE_CM4*/\n}\n\n/**\n   * @brief  Update SystemCoreClock variable according to Clock Register Values.\n  *         The SystemCoreClock variable contains the core clock , it can\n  *         be used by the user application to setup the SysTick timer or configure\n  *         other parameters.\n  *\n  * @note   Each time the core clock changes, this function must be called\n  *         to update SystemCoreClock variable value. Otherwise, any configuration\n  *         based on this variable will be incorrect.\n  *\n  * @note   - The system frequency computed by this function is not the real\n  *           frequency in the chip. It is calculated based on the predefined\n  *           constant and the selected clock source:\n  *\n  *           - If SYSCLK source is CSI, SystemCoreClock will contain the CSI_VALUE(*)\n  *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**)\n  *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***)\n  *           - If SYSCLK source is PLL, SystemCoreClock will contain the CSI_VALUE(*),\n  *             HSI_VALUE(**) or HSE_VALUE(***) multiplied/divided by the PLL factors.\n  *\n  *         (*) CSI_VALUE is a constant defined in stm32h7xx_hal.h file (default value\n  *             4 MHz) but the real value may vary depending on the variations\n  *             in voltage and temperature.\n  *         (**) HSI_VALUE is a constant defined in stm32h7xx_hal.h file (default value\n  *             64 MHz) but the real value may vary depending on the variations\n  *             in voltage and temperature.\n  *\n  *         (***)HSE_VALUE is a constant defined in stm32h7xx_hal.h file (default value\n  *              25 MHz), user has to ensure that HSE_VALUE is same as the real\n  *              frequency of the crystal used. Otherwise, this function may\n  *              have wrong result.\n  *\n  *         - The result of this function could be not correct when using fractional\n  *           value for HSE crystal.\n  * @param  None\n  * @retval None\n  */\nvoid SystemCoreClockUpdate (void)\n{\n  uint32_t pllp, pllsource, pllm, pllfracen, hsivalue, tmp;\n  uint32_t common_system_clock;\n  float_t fracn1, pllvco;\n\n\n  /* Get SYSCLK source -------------------------------------------------------*/\n\n  switch (RCC->CFGR & RCC_CFGR_SWS)\n  {\n  case RCC_CFGR_SWS_HSI:  /* HSI used as system clock source */\n    common_system_clock = (uint32_t) (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3));\n    break;\n\n  case RCC_CFGR_SWS_CSI:  /* CSI used as system clock  source */\n    common_system_clock = CSI_VALUE;\n    break;\n\n  case RCC_CFGR_SWS_HSE:  /* HSE used as system clock  source */\n    common_system_clock = HSE_VALUE;\n    break;\n\n  case RCC_CFGR_SWS_PLL1:  /* PLL1 used as system clock  source */\n\n    /* PLL_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLLM) * PLLN\n    SYSCLK = PLL_VCO / PLLR\n    */\n    pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC);\n    pllm = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> 4)  ;\n    pllfracen = ((RCC->PLLCFGR & RCC_PLLCFGR_PLL1FRACEN)>>RCC_PLLCFGR_PLL1FRACEN_Pos);\n    fracn1 = (float_t)(uint32_t)(pllfracen* ((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1)>> 3));\n\n    if (pllm != 0U)\n    {\n      switch (pllsource)\n      {\n        case RCC_PLLCKSELR_PLLSRC_HSI:  /* HSI used as PLL clock source */\n\n        hsivalue = (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)) ;\n        pllvco = ( (float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n\n        break;\n\n        case RCC_PLLCKSELR_PLLSRC_CSI:  /* CSI used as PLL clock source */\n          pllvco = ((float_t)CSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        break;\n\n        case RCC_PLLCKSELR_PLLSRC_HSE:  /* HSE used as PLL clock source */\n          pllvco = ((float_t)HSE_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        break;\n\n      default:\n          hsivalue = (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)) ;\n          pllvco = ((float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        break;\n      }\n      pllp = (((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >>9) + 1U ) ;\n      common_system_clock =  (uint32_t)(float_t)(pllvco/(float_t)pllp);\n    }\n    else\n    {\n      common_system_clock = 0U;\n    }\n    break;\n\n  default:\n    common_system_clock = (uint32_t) (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3));\n    break;\n  }\n\n  /* Compute SystemClock frequency --------------------------------------------------*/\n#if defined (RCC_D1CFGR_D1CPRE)\n  tmp = D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos];\n\n  /* common_system_clock frequency : CM7 CPU frequency  */\n  common_system_clock >>= tmp;\n\n  /* SystemD2Clock frequency : CM4 CPU, AXI and AHBs Clock frequency  */\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU));\n\n#else\n  tmp = D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos];\n\n  /* common_system_clock frequency : CM7 CPU frequency  */\n  common_system_clock >>= tmp;\n\n  /* SystemD2Clock frequency : AXI and AHBs Clock frequency  */\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_HPRE)>> RCC_CDCFGR1_HPRE_Pos]) & 0x1FU));\n\n#endif\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  SystemCoreClock = SystemD2Clock;\n#else\n  SystemCoreClock = common_system_clock;\n#endif /* DUAL_CORE && CORE_CM4 */\n}\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n"
  },
  {
    "path": "SourceCode/Core/Src/usart.c",
    "content": "/* USER CODE BEGIN Header */\n/**\n  ******************************************************************************\n  * @file    usart.c\n  * @brief   This file provides code for the configuration\n  *          of the USART instances.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2023 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n/* USER CODE END Header */\n/* Includes ------------------------------------------------------------------*/\n#include \"usart.h\"\n\n/* USER CODE BEGIN 0 */\n\n/* USER CODE END 0 */\n\nUART_HandleTypeDef huart4;\nUART_HandleTypeDef huart5;\nUART_HandleTypeDef huart7;\nUART_HandleTypeDef huart8;\nUART_HandleTypeDef huart1;\nUART_HandleTypeDef huart2;\nUART_HandleTypeDef huart3;\nUART_HandleTypeDef huart6;\nDMA_HandleTypeDef hdma_uart4_tx;\nDMA_HandleTypeDef hdma_uart5_tx;\nDMA_HandleTypeDef hdma_uart8_tx;\nDMA_HandleTypeDef hdma_usart1_tx;\nDMA_HandleTypeDef hdma_usart2_tx;\nDMA_HandleTypeDef hdma_usart3_tx;\nDMA_HandleTypeDef hdma_usart6_tx;\n\n/* UART4 init function */\nvoid MX_UART4_Init(void)\n{\n\n  /* USER CODE BEGIN UART4_Init 0 */\n\n  /* USER CODE END UART4_Init 0 */\n\n  /* USER CODE BEGIN UART4_Init 1 */\n\n  /* USER CODE END UART4_Init 1 */\n  huart4.Instance = UART4;\n  huart4.Init.BaudRate = 115200;\n  huart4.Init.WordLength = UART_WORDLENGTH_8B;\n  huart4.Init.StopBits = UART_STOPBITS_1;\n  huart4.Init.Parity = UART_PARITY_NONE;\n  huart4.Init.Mode = UART_MODE_TX_RX;\n  huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart4.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\n  if (HAL_UART_Init(&huart4) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN UART4_Init 2 */\n\n  /* USER CODE END UART4_Init 2 */\n\n}\n/* UART5 init function */\nvoid MX_UART5_Init(void)\n{\n\n  /* USER CODE BEGIN UART5_Init 0 */\n\n  /* USER CODE END UART5_Init 0 */\n\n  /* USER CODE BEGIN UART5_Init 1 */\n\n  /* USER CODE END UART5_Init 1 */\n  huart5.Instance = UART5;\n  huart5.Init.BaudRate = 115200;\n  huart5.Init.WordLength = UART_WORDLENGTH_8B;\n  huart5.Init.StopBits = UART_STOPBITS_1;\n  huart5.Init.Parity = UART_PARITY_NONE;\n  huart5.Init.Mode = UART_MODE_TX_RX;\n  huart5.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart5.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart5.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart5.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart5.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\n  if (HAL_UART_Init(&huart5) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart5, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart5, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart5) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN UART5_Init 2 */\n\n  /* USER CODE END UART5_Init 2 */\n\n}\n/* UART7 init function */\nvoid MX_UART7_Init(void)\n{\n\n  /* USER CODE BEGIN UART7_Init 0 */\n\n  /* USER CODE END UART7_Init 0 */\n\n  /* USER CODE BEGIN UART7_Init 1 */\n\n  /* USER CODE END UART7_Init 1 */\n  huart7.Instance = UART7;\n  huart7.Init.BaudRate = 100000;\n  huart7.Init.WordLength = UART_WORDLENGTH_8B;\n  huart7.Init.StopBits = UART_STOPBITS_1;\n  huart7.Init.Parity = UART_PARITY_EVEN;\n  huart7.Init.Mode = UART_MODE_RX;\n  huart7.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart7.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart7.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart7.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart7.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXINVERT_INIT;\n  huart7.AdvancedInit.RxPinLevelInvert = UART_ADVFEATURE_RXINV_ENABLE;\n  if (HAL_UART_Init(&huart7) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart7, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart7, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart7) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN UART7_Init 2 */\n\n  /* USER CODE END UART7_Init 2 */\n\n}\n/* UART8 init function */\nvoid MX_UART8_Init(void)\n{\n\n  /* USER CODE BEGIN UART8_Init 0 */\n\n  /* USER CODE END UART8_Init 0 */\n\n  /* USER CODE BEGIN UART8_Init 1 */\n\n  /* USER CODE END UART8_Init 1 */\n  huart8.Instance = UART8;\n  huart8.Init.BaudRate = 115200;\n  huart8.Init.WordLength = UART_WORDLENGTH_8B;\n  huart8.Init.StopBits = UART_STOPBITS_1;\n  huart8.Init.Parity = UART_PARITY_NONE;\n  huart8.Init.Mode = UART_MODE_TX_RX;\n  huart8.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart8.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart8.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart8.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart8.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT;\n  huart8.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;\n  if (HAL_UART_Init(&huart8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart8, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart8, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN UART8_Init 2 */\n\n  /* USER CODE END UART8_Init 2 */\n\n}\n/* USART1 init function */\n\nvoid MX_USART1_UART_Init(void)\n{\n\n  /* USER CODE BEGIN USART1_Init 0 */\n\n  /* USER CODE END USART1_Init 0 */\n\n  /* USER CODE BEGIN USART1_Init 1 */\n\n  /* USER CODE END USART1_Init 1 */\n  huart1.Instance = USART1;\n  huart1.Init.BaudRate = 115200;\n  huart1.Init.WordLength = UART_WORDLENGTH_8B;\n  huart1.Init.StopBits = UART_STOPBITS_1;\n  huart1.Init.Parity = UART_PARITY_NONE;\n  huart1.Init.Mode = UART_MODE_TX_RX;\n  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart1.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\n  if (HAL_UART_Init(&huart1) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN USART1_Init 2 */\n\n  /* USER CODE END USART1_Init 2 */\n\n}\n/* USART2 init function */\n\nvoid MX_USART2_UART_Init(void)\n{\n\n  /* USER CODE BEGIN USART2_Init 0 */\n\n  /* USER CODE END USART2_Init 0 */\n\n  /* USER CODE BEGIN USART2_Init 1 */\n\n  /* USER CODE END USART2_Init 1 */\n  huart2.Instance = USART2;\n  huart2.Init.BaudRate = 115200;\n  huart2.Init.WordLength = UART_WORDLENGTH_8B;\n  huart2.Init.StopBits = UART_STOPBITS_1;\n  huart2.Init.Parity = UART_PARITY_NONE;\n  huart2.Init.Mode = UART_MODE_TX_RX;\n  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart2.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\n  if (HAL_UART_Init(&huart2) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN USART2_Init 2 */\n\n  /* USER CODE END USART2_Init 2 */\n\n}\n/* USART3 init function */\n\nvoid MX_USART3_UART_Init(void)\n{\n\n  /* USER CODE BEGIN USART3_Init 0 */\n\n  /* USER CODE END USART3_Init 0 */\n\n  /* USER CODE BEGIN USART3_Init 1 */\n\n  /* USER CODE END USART3_Init 1 */\n  huart3.Instance = USART3;\n  huart3.Init.BaudRate = 115200;\n  huart3.Init.WordLength = UART_WORDLENGTH_8B;\n  huart3.Init.StopBits = UART_STOPBITS_1;\n  huart3.Init.Parity = UART_PARITY_NONE;\n  huart3.Init.Mode = UART_MODE_TX_RX;\n  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart3.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT;\n  huart3.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;\n  if (HAL_UART_Init(&huart3) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN USART3_Init 2 */\n\n  /* USER CODE END USART3_Init 2 */\n\n}\n/* USART6 init function */\n\nvoid MX_USART6_UART_Init(void)\n{\n\n  /* USER CODE BEGIN USART6_Init 0 */\n\n  /* USER CODE END USART6_Init 0 */\n\n  /* USER CODE BEGIN USART6_Init 1 */\n\n  /* USER CODE END USART6_Init 1 */\n  huart6.Instance = USART6;\n  huart6.Init.BaudRate = 115200;\n  huart6.Init.WordLength = UART_WORDLENGTH_8B;\n  huart6.Init.StopBits = UART_STOPBITS_1;\n  huart6.Init.Parity = UART_PARITY_NONE;\n  huart6.Init.Mode = UART_MODE_TX_RX;\n  huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;\n  huart6.Init.OverSampling = UART_OVERSAMPLING_16;\n  huart6.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\n  huart6.Init.ClockPrescaler = UART_PRESCALER_DIV1;\n  huart6.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\n  if (HAL_UART_Init(&huart6) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetTxFifoThreshold(&huart6, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_SetRxFifoThreshold(&huart6, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  if (HAL_UARTEx_DisableFifoMode(&huart6) != HAL_OK)\n  {\n    Error_Handler();\n  }\n  /* USER CODE BEGIN USART6_Init 2 */\n\n  /* USER CODE END USART6_Init 2 */\n\n}\n\nvoid HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)\n{\n\n  GPIO_InitTypeDef GPIO_InitStruct = {0};\n  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};\n  if(uartHandle->Instance==UART4)\n  {\n  /* USER CODE BEGIN UART4_MspInit 0 */\n\n  /* USER CODE END UART4_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART4;\n    PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* UART4 clock enable */\n    __HAL_RCC_UART4_CLK_ENABLE();\n\n    __HAL_RCC_GPIOA_CLK_ENABLE();\n    /**UART4 GPIO Configuration\n    PA11     ------> UART4_RX\n    PA12     ------> UART4_TX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF6_UART4;\n    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);\n\n    /* UART4 DMA Init */\n    /* UART4_TX Init */\n    hdma_uart4_tx.Instance = DMA2_Stream0;\n    hdma_uart4_tx.Init.Request = DMA_REQUEST_UART4_TX;\n    hdma_uart4_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;\n    hdma_uart4_tx.Init.PeriphInc = DMA_PINC_DISABLE;\n    hdma_uart4_tx.Init.MemInc = DMA_MINC_ENABLE;\n    hdma_uart4_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\n    hdma_uart4_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\n    hdma_uart4_tx.Init.Mode = DMA_NORMAL;\n    hdma_uart4_tx.Init.Priority = DMA_PRIORITY_LOW;\n    hdma_uart4_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\n    if (HAL_DMA_Init(&hdma_uart4_tx) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart4_tx);\n\n    /* UART4 interrupt Init */\n    HAL_NVIC_SetPriority(UART4_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(UART4_IRQn);\n  /* USER CODE BEGIN UART4_MspInit 1 */\n\n  /* USER CODE END UART4_MspInit 1 */\n  }\n  else if(uartHandle->Instance==UART5)\n  {\n  /* USER CODE BEGIN UART5_MspInit 0 */\n\n  /* USER CODE END UART5_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART5;\n    PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* UART5 clock enable */\n    __HAL_RCC_UART5_CLK_ENABLE();\n\n    __HAL_RCC_GPIOC_CLK_ENABLE();\n    __HAL_RCC_GPIOD_CLK_ENABLE();\n    /**UART5 GPIO Configuration\n    PC12     ------> UART5_TX\n    PD2     ------> UART5_RX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_12;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF8_UART5;\n    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);\n\n    GPIO_InitStruct.Pin = GPIO_PIN_2;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF8_UART5;\n    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);\n\n    /* UART5 DMA Init */\n    /* UART5_TX Init */\n    hdma_uart5_tx.Instance = DMA2_Stream1;\n    hdma_uart5_tx.Init.Request = DMA_REQUEST_UART5_TX;\n    hdma_uart5_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;\n    hdma_uart5_tx.Init.PeriphInc = DMA_PINC_DISABLE;\n    hdma_uart5_tx.Init.MemInc = DMA_MINC_ENABLE;\n    hdma_uart5_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\n    hdma_uart5_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\n    hdma_uart5_tx.Init.Mode = DMA_NORMAL;\n    hdma_uart5_tx.Init.Priority = DMA_PRIORITY_LOW;\n    hdma_uart5_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\n    if (HAL_DMA_Init(&hdma_uart5_tx) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart5_tx);\n\n    /* UART5 interrupt Init */\n    HAL_NVIC_SetPriority(UART5_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(UART5_IRQn);\n  /* USER CODE BEGIN UART5_MspInit 1 */\n\n  /* USER CODE END UART5_MspInit 1 */\n  }\n  else if(uartHandle->Instance==UART7)\n  {\n  /* USER CODE BEGIN UART7_MspInit 0 */\n\n  /* USER CODE END UART7_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART7;\n    PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* UART7 clock enable */\n    __HAL_RCC_UART7_CLK_ENABLE();\n\n    __HAL_RCC_GPIOE_CLK_ENABLE();\n    /**UART7 GPIO Configuration\n    PE7     ------> UART7_RX\n    PE8     ------> UART7_TX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF7_UART7;\n    HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);\n\n    /* UART7 interrupt Init */\n    HAL_NVIC_SetPriority(UART7_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(UART7_IRQn);\n  /* USER CODE BEGIN UART7_MspInit 1 */\n\n  /* USER CODE END UART7_MspInit 1 */\n  }\n  else if(uartHandle->Instance==UART8)\n  {\n  /* USER CODE BEGIN UART8_MspInit 0 */\n\n  /* USER CODE END UART8_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART8;\n    PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* UART8 clock enable */\n    __HAL_RCC_UART8_CLK_ENABLE();\n\n    __HAL_RCC_GPIOE_CLK_ENABLE();\n    /**UART8 GPIO Configuration\n    PE0     ------> UART8_RX\n    PE1     ------> UART8_TX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF8_UART8;\n    HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);\n\n    /* UART8 DMA Init */\n    /* UART8_TX Init */\n    hdma_uart8_tx.Instance = DMA1_Stream1;\n    hdma_uart8_tx.Init.Request = DMA_REQUEST_UART8_TX;\n    hdma_uart8_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;\n    hdma_uart8_tx.Init.PeriphInc = DMA_PINC_DISABLE;\n    hdma_uart8_tx.Init.MemInc = DMA_MINC_ENABLE;\n    hdma_uart8_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\n    hdma_uart8_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\n    hdma_uart8_tx.Init.Mode = DMA_NORMAL;\n    hdma_uart8_tx.Init.Priority = DMA_PRIORITY_LOW;\n    hdma_uart8_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\n    if (HAL_DMA_Init(&hdma_uart8_tx) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart8_tx);\n\n    /* UART8 interrupt Init */\n    HAL_NVIC_SetPriority(UART8_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(UART8_IRQn);\n  /* USER CODE BEGIN UART8_MspInit 1 */\n\n  /* USER CODE END UART8_MspInit 1 */\n  }\n  else if(uartHandle->Instance==USART1)\n  {\n  /* USER CODE BEGIN USART1_MspInit 0 */\n\n  /* USER CODE END USART1_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1;\n    PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* USART1 clock enable */\n    __HAL_RCC_USART1_CLK_ENABLE();\n\n    __HAL_RCC_GPIOB_CLK_ENABLE();\n    /**USART1 GPIO Configuration\n    PB14     ------> USART1_TX\n    PB15     ------> USART1_RX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF4_USART1;\n    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);\n\n    /* USART1 DMA Init */\n    /* USART1_TX Init */\n    hdma_usart1_tx.Instance = DMA1_Stream2;\n    hdma_usart1_tx.Init.Request = DMA_REQUEST_USART1_TX;\n    hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;\n    hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;\n    hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;\n    hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\n    hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\n    hdma_usart1_tx.Init.Mode = DMA_NORMAL;\n    hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;\n    hdma_usart1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\n    if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart1_tx);\n\n    /* USART1 interrupt Init */\n    HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(USART1_IRQn);\n  /* USER CODE BEGIN USART1_MspInit 1 */\n\n  /* USER CODE END USART1_MspInit 1 */\n  }\n  else if(uartHandle->Instance==USART2)\n  {\n  /* USER CODE BEGIN USART2_MspInit 0 */\n\n  /* USER CODE END USART2_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART2;\n    PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* USART2 clock enable */\n    __HAL_RCC_USART2_CLK_ENABLE();\n\n    __HAL_RCC_GPIOD_CLK_ENABLE();\n    /**USART2 GPIO Configuration\n    PD5     ------> USART2_TX\n    PD6     ------> USART2_RX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF7_USART2;\n    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);\n\n    /* USART2 DMA Init */\n    /* USART2_TX Init */\n    hdma_usart2_tx.Instance = DMA1_Stream3;\n    hdma_usart2_tx.Init.Request = DMA_REQUEST_USART2_TX;\n    hdma_usart2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;\n    hdma_usart2_tx.Init.PeriphInc = DMA_PINC_DISABLE;\n    hdma_usart2_tx.Init.MemInc = DMA_MINC_ENABLE;\n    hdma_usart2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\n    hdma_usart2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\n    hdma_usart2_tx.Init.Mode = DMA_NORMAL;\n    hdma_usart2_tx.Init.Priority = DMA_PRIORITY_LOW;\n    hdma_usart2_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\n    if (HAL_DMA_Init(&hdma_usart2_tx) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart2_tx);\n\n    /* USART2 interrupt Init */\n    HAL_NVIC_SetPriority(USART2_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(USART2_IRQn);\n  /* USER CODE BEGIN USART2_MspInit 1 */\n\n  /* USER CODE END USART2_MspInit 1 */\n  }\n  else if(uartHandle->Instance==USART3)\n  {\n  /* USER CODE BEGIN USART3_MspInit 0 */\n\n  /* USER CODE END USART3_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;\n    PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* USART3 clock enable */\n    __HAL_RCC_USART3_CLK_ENABLE();\n\n    __HAL_RCC_GPIOB_CLK_ENABLE();\n    /**USART3 GPIO Configuration\n    PB10     ------> USART3_TX\n    PB11     ------> USART3_RX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_10;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF7_USART3;\n    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);\n\n    GPIO_InitStruct.Pin = GPIO_PIN_11;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;\n    GPIO_InitStruct.Alternate = GPIO_AF7_USART3;\n    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);\n\n    /* USART3 DMA Init */\n    /* USART3_TX Init */\n    hdma_usart3_tx.Instance = DMA1_Stream0;\n    hdma_usart3_tx.Init.Request = DMA_REQUEST_USART3_TX;\n    hdma_usart3_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;\n    hdma_usart3_tx.Init.PeriphInc = DMA_PINC_DISABLE;\n    hdma_usart3_tx.Init.MemInc = DMA_MINC_ENABLE;\n    hdma_usart3_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\n    hdma_usart3_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\n    hdma_usart3_tx.Init.Mode = DMA_NORMAL;\n    hdma_usart3_tx.Init.Priority = DMA_PRIORITY_LOW;\n    hdma_usart3_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\n    if (HAL_DMA_Init(&hdma_usart3_tx) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart3_tx);\n\n    /* USART3 interrupt Init */\n    HAL_NVIC_SetPriority(USART3_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(USART3_IRQn);\n  /* USER CODE BEGIN USART3_MspInit 1 */\n\n  /* USER CODE END USART3_MspInit 1 */\n  }\n  else if(uartHandle->Instance==USART6)\n  {\n  /* USER CODE BEGIN USART6_MspInit 0 */\n\n  /* USER CODE END USART6_MspInit 0 */\n\n  /** Initializes the peripherals clock\n  */\n    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6;\n    PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2;\n    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    /* USART6 clock enable */\n    __HAL_RCC_USART6_CLK_ENABLE();\n\n    __HAL_RCC_GPIOC_CLK_ENABLE();\n    /**USART6 GPIO Configuration\n    PC6     ------> USART6_TX\n    PC7     ------> USART6_RX\n    */\n    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    GPIO_InitStruct.Alternate = GPIO_AF7_USART6;\n    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);\n\n    /* USART6 DMA Init */\n    /* USART6_TX Init */\n    hdma_usart6_tx.Instance = DMA2_Stream2;\n    hdma_usart6_tx.Init.Request = DMA_REQUEST_USART6_TX;\n    hdma_usart6_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;\n    hdma_usart6_tx.Init.PeriphInc = DMA_PINC_DISABLE;\n    hdma_usart6_tx.Init.MemInc = DMA_MINC_ENABLE;\n    hdma_usart6_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\n    hdma_usart6_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\n    hdma_usart6_tx.Init.Mode = DMA_NORMAL;\n    hdma_usart6_tx.Init.Priority = DMA_PRIORITY_LOW;\n    hdma_usart6_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\n    if (HAL_DMA_Init(&hdma_usart6_tx) != HAL_OK)\n    {\n      Error_Handler();\n    }\n\n    __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart6_tx);\n\n    /* USART6 interrupt Init */\n    HAL_NVIC_SetPriority(USART6_IRQn, 5, 0);\n    HAL_NVIC_EnableIRQ(USART6_IRQn);\n  /* USER CODE BEGIN USART6_MspInit 1 */\n\n  /* USER CODE END USART6_MspInit 1 */\n  }\n}\n\nvoid HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)\n{\n\n  if(uartHandle->Instance==UART4)\n  {\n  /* USER CODE BEGIN UART4_MspDeInit 0 */\n\n  /* USER CODE END UART4_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_UART4_CLK_DISABLE();\n\n    /**UART4 GPIO Configuration\n    PA11     ------> UART4_RX\n    PA12     ------> UART4_TX\n    */\n    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);\n\n    /* UART4 DMA DeInit */\n    HAL_DMA_DeInit(uartHandle->hdmatx);\n\n    /* UART4 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(UART4_IRQn);\n  /* USER CODE BEGIN UART4_MspDeInit 1 */\n\n  /* USER CODE END UART4_MspDeInit 1 */\n  }\n  else if(uartHandle->Instance==UART5)\n  {\n  /* USER CODE BEGIN UART5_MspDeInit 0 */\n\n  /* USER CODE END UART5_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_UART5_CLK_DISABLE();\n\n    /**UART5 GPIO Configuration\n    PC12     ------> UART5_TX\n    PD2     ------> UART5_RX\n    */\n    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_12);\n\n    HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);\n\n    /* UART5 DMA DeInit */\n    HAL_DMA_DeInit(uartHandle->hdmatx);\n\n    /* UART5 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(UART5_IRQn);\n  /* USER CODE BEGIN UART5_MspDeInit 1 */\n\n  /* USER CODE END UART5_MspDeInit 1 */\n  }\n  else if(uartHandle->Instance==UART7)\n  {\n  /* USER CODE BEGIN UART7_MspDeInit 0 */\n\n  /* USER CODE END UART7_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_UART7_CLK_DISABLE();\n\n    /**UART7 GPIO Configuration\n    PE7     ------> UART7_RX\n    PE8     ------> UART7_TX\n    */\n    HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8);\n\n    /* UART7 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(UART7_IRQn);\n  /* USER CODE BEGIN UART7_MspDeInit 1 */\n\n  /* USER CODE END UART7_MspDeInit 1 */\n  }\n  else if(uartHandle->Instance==UART8)\n  {\n  /* USER CODE BEGIN UART8_MspDeInit 0 */\n\n  /* USER CODE END UART8_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_UART8_CLK_DISABLE();\n\n    /**UART8 GPIO Configuration\n    PE0     ------> UART8_RX\n    PE1     ------> UART8_TX\n    */\n    HAL_GPIO_DeInit(GPIOE, GPIO_PIN_0|GPIO_PIN_1);\n\n    /* UART8 DMA DeInit */\n    HAL_DMA_DeInit(uartHandle->hdmatx);\n\n    /* UART8 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(UART8_IRQn);\n  /* USER CODE BEGIN UART8_MspDeInit 1 */\n\n  /* USER CODE END UART8_MspDeInit 1 */\n  }\n  else if(uartHandle->Instance==USART1)\n  {\n  /* USER CODE BEGIN USART1_MspDeInit 0 */\n\n  /* USER CODE END USART1_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_USART1_CLK_DISABLE();\n\n    /**USART1 GPIO Configuration\n    PB14     ------> USART1_TX\n    PB15     ------> USART1_RX\n    */\n    HAL_GPIO_DeInit(GPIOB, GPIO_PIN_14|GPIO_PIN_15);\n\n    /* USART1 DMA DeInit */\n    HAL_DMA_DeInit(uartHandle->hdmatx);\n\n    /* USART1 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(USART1_IRQn);\n  /* USER CODE BEGIN USART1_MspDeInit 1 */\n\n  /* USER CODE END USART1_MspDeInit 1 */\n  }\n  else if(uartHandle->Instance==USART2)\n  {\n  /* USER CODE BEGIN USART2_MspDeInit 0 */\n\n  /* USER CODE END USART2_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_USART2_CLK_DISABLE();\n\n    /**USART2 GPIO Configuration\n    PD5     ------> USART2_TX\n    PD6     ------> USART2_RX\n    */\n    HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5|GPIO_PIN_6);\n\n    /* USART2 DMA DeInit */\n    HAL_DMA_DeInit(uartHandle->hdmatx);\n\n    /* USART2 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(USART2_IRQn);\n  /* USER CODE BEGIN USART2_MspDeInit 1 */\n\n  /* USER CODE END USART2_MspDeInit 1 */\n  }\n  else if(uartHandle->Instance==USART3)\n  {\n  /* USER CODE BEGIN USART3_MspDeInit 0 */\n\n  /* USER CODE END USART3_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_USART3_CLK_DISABLE();\n\n    /**USART3 GPIO Configuration\n    PB10     ------> USART3_TX\n    PB11     ------> USART3_RX\n    */\n    HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_11);\n\n    /* USART3 DMA DeInit */\n    HAL_DMA_DeInit(uartHandle->hdmatx);\n\n    /* USART3 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(USART3_IRQn);\n  /* USER CODE BEGIN USART3_MspDeInit 1 */\n\n  /* USER CODE END USART3_MspDeInit 1 */\n  }\n  else if(uartHandle->Instance==USART6)\n  {\n  /* USER CODE BEGIN USART6_MspDeInit 0 */\n\n  /* USER CODE END USART6_MspDeInit 0 */\n    /* Peripheral clock disable */\n    __HAL_RCC_USART6_CLK_DISABLE();\n\n    /**USART6 GPIO Configuration\n    PC6     ------> USART6_TX\n    PC7     ------> USART6_RX\n    */\n    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7);\n\n    /* USART6 DMA DeInit */\n    HAL_DMA_DeInit(uartHandle->hdmatx);\n\n    /* USART6 interrupt Deinit */\n    HAL_NVIC_DisableIRQ(USART6_IRQn);\n  /* USER CODE BEGIN USART6_MspDeInit 1 */\n\n  /* USER CODE END USART6_MspDeInit 1 */\n  }\n}\n\n/* USER CODE BEGIN 1 */\n\n/* USER CODE END 1 */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/cmsis_armcc.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armcc.h\n * @brief    CMSIS compiler ARMCC (Arm Compiler 5) header file\n * @version  V5.1.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_ARMCC_H\n#define __CMSIS_ARMCC_H\n\n\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677)\n  #error \"Please use Arm Compiler Toolchain V4.0.677 or later!\"\n#endif\n\n/* CMSIS compiler control architecture macros */\n#if ((defined (__TARGET_ARCH_6_M  ) && (__TARGET_ARCH_6_M   == 1)) || \\\n     (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M  == 1))   )\n  #define __ARM_ARCH_6M__           1\n#endif\n\n#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M  == 1))\n  #define __ARM_ARCH_7M__           1\n#endif\n\n#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1))\n  #define __ARM_ARCH_7EM__          1\n#endif\n\n  /* __ARM_ARCH_8M_BASE__  not applicable */\n  /* __ARM_ARCH_8M_MAIN__  not applicable */\n\n/* CMSIS compiler control DSP macros */\n#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n  #define __ARM_FEATURE_DSP         1\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE                 \n  #define __STATIC_FORCEINLINE                   static __forceinline\n#endif           \n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __declspec(noreturn)\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        __packed struct\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         __packed union\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #define __UNALIGNED_UINT32(x)                  (*((__packed uint32_t *)(x)))\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    ((*((__packed uint16_t *)(addr))) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #define __UNALIGNED_UINT16_READ(addr)          (*((const __packed uint16_t *)(addr)))\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    ((*((__packed uint32_t *)(addr))) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #define __UNALIGNED_UINT32_READ(addr)          (*((const __packed uint32_t *)(addr)))\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __memory_changed()\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __main\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\"RESET\")))\n#endif\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __enable_irq();     */\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __disable_irq();    */\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_INLINE uint32_t __get_CONTROL(void)\n{\n  register uint32_t __regControl         __ASM(\"control\");\n  return(__regControl);\n}\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_INLINE void __set_CONTROL(uint32_t control)\n{\n  register uint32_t __regControl         __ASM(\"control\");\n  __regControl = control;\n}\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_INLINE uint32_t __get_IPSR(void)\n{\n  register uint32_t __regIPSR          __ASM(\"ipsr\");\n  return(__regIPSR);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_INLINE uint32_t __get_APSR(void)\n{\n  register uint32_t __regAPSR          __ASM(\"apsr\");\n  return(__regAPSR);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_INLINE uint32_t __get_xPSR(void)\n{\n  register uint32_t __regXPSR          __ASM(\"xpsr\");\n  return(__regXPSR);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_INLINE uint32_t __get_PSP(void)\n{\n  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n  return(__regProcessStackPointer);\n}\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n  __regProcessStackPointer = topOfProcStack;\n}\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_INLINE uint32_t __get_MSP(void)\n{\n  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n  return(__regMainStackPointer);\n}\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n  __regMainStackPointer = topOfMainStack;\n}\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_INLINE uint32_t __get_PRIMASK(void)\n{\n  register uint32_t __regPriMask         __ASM(\"primask\");\n  return(__regPriMask);\n}\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n{\n  register uint32_t __regPriMask         __ASM(\"primask\");\n  __regPriMask = (priMask);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __enable_fault_irq                __enable_fiq\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __disable_fault_irq               __disable_fiq\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_INLINE uint32_t  __get_BASEPRI(void)\n{\n  register uint32_t __regBasePri         __ASM(\"basepri\");\n  return(__regBasePri);\n}\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)\n{\n  register uint32_t __regBasePri         __ASM(\"basepri\");\n  __regBasePri = (basePri & 0xFFU);\n}\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  register uint32_t __regBasePriMax      __ASM(\"basepri_max\");\n  __regBasePriMax = (basePri & 0xFFU);\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_INLINE uint32_t __get_FAULTMASK(void)\n{\n  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n  return(__regFaultMask);\n}\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n  __regFaultMask = (faultMask & (uint32_t)1U);\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n__STATIC_INLINE uint32_t __get_FPSCR(void)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  register uint32_t __regfpscr         __ASM(\"fpscr\");\n  return(__regfpscr);\n#else\n   return(0U);\n#endif\n}\n\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  register uint32_t __regfpscr         __ASM(\"fpscr\");\n  __regfpscr = (fpscr);\n#else\n  (void)fpscr;\n#endif\n}\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP                             __nop\n\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI                             __wfi\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE                             __wfe\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV                             __sev\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n#define __ISB() do {\\\n                   __schedule_barrier();\\\n                   __isb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n#define __DSB() do {\\\n                   __schedule_barrier();\\\n                   __dsb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n#define __DMB() do {\\\n                   __schedule_barrier();\\\n                   __dmb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n                  \n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV                             __rev\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".rev16_text\"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\n{\n  rev16 r0, r0\n  bx lr\n}\n#endif\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".revsh_text\"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)\n{\n  revsh r0, r0\n  bx lr\n}\n#endif\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n#define __ROR                             __ror\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)                       __breakpoint(value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n  #define __RBIT                          __rbit\n#else\n__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)\n{\n  uint32_t result;\n  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */\n\n  result = value;                      /* r will be reversed bits of v; first get LSB of v */\n  for (value >>= 1U; value != 0U; value >>= 1U)\n  {\n    result <<= 1U;\n    result |= value & 1U;\n    s--;\n  }\n  result <<= s;                        /* shift when v's highest bits are zero */\n  return result;\n}\n#endif\n\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n#define __CLZ                             __clz\n\n\n#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXB(ptr)                                                        ((uint8_t ) __ldrex(ptr))\n#else\n  #define __LDREXB(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint8_t ) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXH(ptr)                                                        ((uint16_t) __ldrex(ptr))\n#else\n  #define __LDREXH(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint16_t) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXW(ptr)                                                        ((uint32_t ) __ldrex(ptr))\n#else\n  #define __LDREXW(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint32_t ) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXB(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXB(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXH(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXH(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXW(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXW(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX                           __clrex\n\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT                            __ssat\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT                            __usat\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".rrx_text\"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)\n{\n  rrx r0, r0\n  bx lr\n}\n#endif\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define __LDRBT(ptr)                      ((uint8_t )  __ldrt(ptr))\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define __LDRHT(ptr)                      ((uint16_t)  __ldrt(ptr))\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define __LDRT(ptr)                       ((uint32_t ) __ldrt(ptr))\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n#define __STRBT(value, ptr)               __strt(value, ptr)\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n#define __STRHT(value, ptr)               __strt(value, ptr)\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n#define __STRT(value, ptr)                __strt(value, ptr)\n\n#else  /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n\n#define __SADD8                           __sadd8\n#define __QADD8                           __qadd8\n#define __SHADD8                          __shadd8\n#define __UADD8                           __uadd8\n#define __UQADD8                          __uqadd8\n#define __UHADD8                          __uhadd8\n#define __SSUB8                           __ssub8\n#define __QSUB8                           __qsub8\n#define __SHSUB8                          __shsub8\n#define __USUB8                           __usub8\n#define __UQSUB8                          __uqsub8\n#define __UHSUB8                          __uhsub8\n#define __SADD16                          __sadd16\n#define __QADD16                          __qadd16\n#define __SHADD16                         __shadd16\n#define __UADD16                          __uadd16\n#define __UQADD16                         __uqadd16\n#define __UHADD16                         __uhadd16\n#define __SSUB16                          __ssub16\n#define __QSUB16                          __qsub16\n#define __SHSUB16                         __shsub16\n#define __USUB16                          __usub16\n#define __UQSUB16                         __uqsub16\n#define __UHSUB16                         __uhsub16\n#define __SASX                            __sasx\n#define __QASX                            __qasx\n#define __SHASX                           __shasx\n#define __UASX                            __uasx\n#define __UQASX                           __uqasx\n#define __UHASX                           __uhasx\n#define __SSAX                            __ssax\n#define __QSAX                            __qsax\n#define __SHSAX                           __shsax\n#define __USAX                            __usax\n#define __UQSAX                           __uqsax\n#define __UHSAX                           __uhsax\n#define __USAD8                           __usad8\n#define __USADA8                          __usada8\n#define __SSAT16                          __ssat16\n#define __USAT16                          __usat16\n#define __UXTB16                          __uxtb16\n#define __UXTAB16                         __uxtab16\n#define __SXTB16                          __sxtb16\n#define __SXTAB16                         __sxtab16\n#define __SMUAD                           __smuad\n#define __SMUADX                          __smuadx\n#define __SMLAD                           __smlad\n#define __SMLADX                          __smladx\n#define __SMLALD                          __smlald\n#define __SMLALDX                         __smlaldx\n#define __SMUSD                           __smusd\n#define __SMUSDX                          __smusdx\n#define __SMLSD                           __smlsd\n#define __SMLSDX                          __smlsdx\n#define __SMLSLD                          __smlsld\n#define __SMLSLDX                         __smlsldx\n#define __SEL                             __sel\n#define __QADD                            __qadd\n#define __QSUB                            __qsub\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \\\n                                                      ((int64_t)(ARG3) << 32U)     ) >> 32U))\n\n#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#endif /* __CMSIS_ARMCC_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/cmsis_armclang.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armclang.h\n * @brief    CMSIS compiler armclang (Arm Compiler 6) header file\n * @version  V5.2.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */\n\n#ifndef __CMSIS_ARMCLANG_H\n#define __CMSIS_ARMCLANG_H\n\n#pragma clang system_header   /* treat file as system include file */\n\n#ifndef __ARM_COMPAT_H\n#include <arm_compat.h>    /* Compatibility header for Arm Compiler 5 intrinsics */\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline\n#endif\n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */\n  struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __main\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\"RESET\")))\n#endif\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __enable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __disable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Control Register (non-secure)\n  \\details Returns the content of the non-secure Control Register when in secure mode.\n  \\return               non-secure Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\n{\n  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Control Register (non-secure)\n  \\details Writes the given value to the non-secure Control Register when in secure state.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\n{\n  __ASM volatile (\"MSR control_ns, %0\" : : \"r\" (control) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_APSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp\"  : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp_ns\"  : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp, %0\" : : \"r\" (topOfProcStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp_ns, %0\" : : \"r\" (topOfProcStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Main Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp, %0\" : : \"r\" (topOfMainStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Main Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp_ns, %0\" : : \"r\" (topOfMainStack) : );\n}\n#endif\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\n  \\return               SP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, sp_ns\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Set Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\n  \\param [in]    topOfStack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\n{\n  __ASM volatile (\"MSR sp_ns, %0\" : : \"r\" (topOfStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Priority Mask (non-secure)\n  \\details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Priority Mask (non-secure)\n  \\details Assigns the given value to the non-secure Priority Mask Register when in secure state.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask_ns, %0\" : : \"r\" (priMask) : \"memory\");\n}\n#endif\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __enable_fault_irq                __enable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __disable_fault_irq               __disable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Base Priority (non-secure)\n  \\details Returns the current value of the non-secure Base Priority register when in secure state.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Base Priority (non-secure)\n  \\details Assigns the given value to the non-secure Base Priority register when in secure state.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_ns, %0\" : : \"r\" (basePri) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_max, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Fault Mask (non-secure)\n  \\details Returns the current value of the non-secure Fault Mask register when in secure state.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Fault Mask (non-secure)\n  \\details Assigns the given value to the non-secure Fault Mask register when in secure state.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask_ns, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n/**\n  \\brief   Get Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n  \n  \\details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n\n#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n\n  \\details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim_ns\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n  \n  \\details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim, %0\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n\n  \\details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim_ns, %0\\n\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim\" : \"=r\" (result) );\n  return result;\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Get Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim_ns\" : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim_ns, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __get_FPSCR      (uint32_t)__builtin_arm_get_fpscr\n#else\n#define __get_FPSCR()      ((uint32_t)0U)\n#endif\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __set_FPSCR      __builtin_arm_set_fpscr\n#else\n#define __set_FPSCR(x)      ((void)(x))\n#endif\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/* Define macros for porting to both thumb1 and thumb2.\n * For thumb1, use low register (r0-r7), specified by constraint \"l\"\n * Otherwise, use general registers, specified by constraint \"r\" */\n#if defined (__thumb__) && !defined (__thumb2__)\n#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+l\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n#else\n#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+r\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n#endif\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP          __builtin_arm_nop\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI          __builtin_arm_wfi\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE          __builtin_arm_wfe\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV          __builtin_arm_sev\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n#define __ISB()        __builtin_arm_isb(0xF)\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n#define __DSB()        __builtin_arm_dsb(0xF)\n\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n#define __DMB()        __builtin_arm_dmb(0xF)\n\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV(value)   __builtin_bswap32(value)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV16(value) __ROR(__REV(value), 16)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REVSH(value) (int16_t)__builtin_bswap16(value)\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U)\n  {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)     __ASM volatile (\"bkpt \"#value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __RBIT            __builtin_arm_rbit\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define __LDREXB        (uint8_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define __LDREXH        (uint16_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define __LDREXW        (uint32_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXB        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXH        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXW        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX             __builtin_arm_clrex\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT             __builtin_arm_ssat\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT             __builtin_arm_usat\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rrx %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return(result);\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrbt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrht %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"strbt %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"strht %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"strt %1, %0\" : \"=Q\" (*ptr) : \"r\" (value) );\n}\n\n#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   Load-Acquire (8 bit)\n  \\details Executes a LDAB instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldab %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (16 bit)\n  \\details Executes a LDAH instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldah %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (32 bit)\n  \\details Executes a LDA instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"lda %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   Store-Release (8 bit)\n  \\details Executes a STLB instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"stlb %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (16 bit)\n  \\details Executes a STLH instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"stlh %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (32 bit)\n  \\details Executes a STL instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"stl %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (8 bit)\n  \\details Executes a LDAB exclusive instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define     __LDAEXB                 (uint8_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (16 bit)\n  \\details Executes a LDAH exclusive instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define     __LDAEXH                 (uint16_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (32 bit)\n  \\details Executes a LDA exclusive instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define     __LDAEX                  (uint32_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Store-Release Exclusive (8 bit)\n  \\details Executes a STLB exclusive instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXB                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (16 bit)\n  \\details Executes a STLH exclusive instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXH                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (32 bit)\n  \\details Executes a STL exclusive instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEX                  (uint32_t)__builtin_arm_stlex\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n\n#define     __SADD8                 __builtin_arm_sadd8\n#define     __QADD8                 __builtin_arm_qadd8\n#define     __SHADD8                __builtin_arm_shadd8\n#define     __UADD8                 __builtin_arm_uadd8\n#define     __UQADD8                __builtin_arm_uqadd8\n#define     __UHADD8                __builtin_arm_uhadd8\n#define     __SSUB8                 __builtin_arm_ssub8\n#define     __QSUB8                 __builtin_arm_qsub8\n#define     __SHSUB8                __builtin_arm_shsub8\n#define     __USUB8                 __builtin_arm_usub8\n#define     __UQSUB8                __builtin_arm_uqsub8\n#define     __UHSUB8                __builtin_arm_uhsub8\n#define     __SADD16                __builtin_arm_sadd16\n#define     __QADD16                __builtin_arm_qadd16\n#define     __SHADD16               __builtin_arm_shadd16\n#define     __UADD16                __builtin_arm_uadd16\n#define     __UQADD16               __builtin_arm_uqadd16\n#define     __UHADD16               __builtin_arm_uhadd16\n#define     __SSUB16                __builtin_arm_ssub16\n#define     __QSUB16                __builtin_arm_qsub16\n#define     __SHSUB16               __builtin_arm_shsub16\n#define     __USUB16                __builtin_arm_usub16\n#define     __UQSUB16               __builtin_arm_uqsub16\n#define     __UHSUB16               __builtin_arm_uhsub16\n#define     __SASX                  __builtin_arm_sasx\n#define     __QASX                  __builtin_arm_qasx\n#define     __SHASX                 __builtin_arm_shasx\n#define     __UASX                  __builtin_arm_uasx\n#define     __UQASX                 __builtin_arm_uqasx\n#define     __UHASX                 __builtin_arm_uhasx\n#define     __SSAX                  __builtin_arm_ssax\n#define     __QSAX                  __builtin_arm_qsax\n#define     __SHSAX                 __builtin_arm_shsax\n#define     __USAX                  __builtin_arm_usax\n#define     __UQSAX                 __builtin_arm_uqsax\n#define     __UHSAX                 __builtin_arm_uhsax\n#define     __USAD8                 __builtin_arm_usad8\n#define     __USADA8                __builtin_arm_usada8\n#define     __SSAT16                __builtin_arm_ssat16\n#define     __USAT16                __builtin_arm_usat16\n#define     __UXTB16                __builtin_arm_uxtb16\n#define     __UXTAB16               __builtin_arm_uxtab16\n#define     __SXTB16                __builtin_arm_sxtb16\n#define     __SXTAB16               __builtin_arm_sxtab16\n#define     __SMUAD                 __builtin_arm_smuad\n#define     __SMUADX                __builtin_arm_smuadx\n#define     __SMLAD                 __builtin_arm_smlad\n#define     __SMLADX                __builtin_arm_smladx\n#define     __SMLALD                __builtin_arm_smlald\n#define     __SMLALDX               __builtin_arm_smlaldx\n#define     __SMUSD                 __builtin_arm_smusd\n#define     __SMUSDX                __builtin_arm_smusdx\n#define     __SMLSD                 __builtin_arm_smlsd\n#define     __SMLSDX                __builtin_arm_smlsdx\n#define     __SMLSLD                __builtin_arm_smlsld\n#define     __SMLSLDX               __builtin_arm_smlsldx\n#define     __SEL                   __builtin_arm_sel\n#define     __QADD                  __builtin_arm_qadd\n#define     __QSUB                  __builtin_arm_qsub\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n  int32_t result;\n\n  __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#endif /* (__ARM_FEATURE_DSP == 1) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#endif /* __CMSIS_ARMCLANG_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/cmsis_armclang_ltm.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armclang_ltm.h\n * @brief    CMSIS compiler armclang (Arm Compiler 6) header file\n * @version  V1.2.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2018-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */\n\n#ifndef __CMSIS_ARMCLANG_H\n#define __CMSIS_ARMCLANG_H\n\n#pragma clang system_header   /* treat file as system include file */\n\n#ifndef __ARM_COMPAT_H\n#include <arm_compat.h>    /* Compatibility header for Arm Compiler 5 intrinsics */\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline\n#endif\n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */\n  struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __main\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\"RESET\")))\n#endif\n\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __enable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __disable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Control Register (non-secure)\n  \\details Returns the content of the non-secure Control Register when in secure mode.\n  \\return               non-secure Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\n{\n  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Control Register (non-secure)\n  \\details Writes the given value to the non-secure Control Register when in secure state.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\n{\n  __ASM volatile (\"MSR control_ns, %0\" : : \"r\" (control) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_APSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp\"  : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp_ns\"  : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp, %0\" : : \"r\" (topOfProcStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp_ns, %0\" : : \"r\" (topOfProcStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Main Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp, %0\" : : \"r\" (topOfMainStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Main Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp_ns, %0\" : : \"r\" (topOfMainStack) : );\n}\n#endif\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\n  \\return               SP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, sp_ns\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Set Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\n  \\param [in]    topOfStack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\n{\n  __ASM volatile (\"MSR sp_ns, %0\" : : \"r\" (topOfStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Priority Mask (non-secure)\n  \\details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Priority Mask (non-secure)\n  \\details Assigns the given value to the non-secure Priority Mask Register when in secure state.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask_ns, %0\" : : \"r\" (priMask) : \"memory\");\n}\n#endif\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __enable_fault_irq                __enable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __disable_fault_irq               __disable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Base Priority (non-secure)\n  \\details Returns the current value of the non-secure Base Priority register when in secure state.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Base Priority (non-secure)\n  \\details Assigns the given value to the non-secure Base Priority register when in secure state.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_ns, %0\" : : \"r\" (basePri) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_max, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Fault Mask (non-secure)\n  \\details Returns the current value of the non-secure Fault Mask register when in secure state.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Fault Mask (non-secure)\n  \\details Assigns the given value to the non-secure Fault Mask register when in secure state.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask_ns, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n/**\n  \\brief   Get Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n  \n  \\details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n\n#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n\n  \\details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim_ns\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n  \n  \\details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim, %0\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n\n  \\details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim_ns, %0\\n\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim\" : \"=r\" (result) );\n  return result;\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Get Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim_ns\" : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim_ns, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __get_FPSCR      (uint32_t)__builtin_arm_get_fpscr\n#else\n#define __get_FPSCR()      ((uint32_t)0U)\n#endif\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __set_FPSCR      __builtin_arm_set_fpscr\n#else\n#define __set_FPSCR(x)      ((void)(x))\n#endif\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/* Define macros for porting to both thumb1 and thumb2.\n * For thumb1, use low register (r0-r7), specified by constraint \"l\"\n * Otherwise, use general registers, specified by constraint \"r\" */\n#if defined (__thumb__) && !defined (__thumb2__)\n#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n#else\n#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n#endif\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP          __builtin_arm_nop\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI          __builtin_arm_wfi\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE          __builtin_arm_wfe\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV          __builtin_arm_sev\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n#define __ISB()        __builtin_arm_isb(0xF)\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n#define __DSB()        __builtin_arm_dsb(0xF)\n\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n#define __DMB()        __builtin_arm_dmb(0xF)\n\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV(value)   __builtin_bswap32(value)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV16(value) __ROR(__REV(value), 16)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REVSH(value) (int16_t)__builtin_bswap16(value)\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U)\n  {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)     __ASM volatile (\"bkpt \"#value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __RBIT            __builtin_arm_rbit\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define __LDREXB        (uint8_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define __LDREXH        (uint16_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define __LDREXW        (uint32_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXB        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXH        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXW        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX             __builtin_arm_clrex\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT             __builtin_arm_ssat\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT             __builtin_arm_usat\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rrx %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return(result);\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrbt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrht %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"strbt %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"strht %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"strt %1, %0\" : \"=Q\" (*ptr) : \"r\" (value) );\n}\n\n#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   Load-Acquire (8 bit)\n  \\details Executes a LDAB instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldab %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (16 bit)\n  \\details Executes a LDAH instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldah %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (32 bit)\n  \\details Executes a LDA instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"lda %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   Store-Release (8 bit)\n  \\details Executes a STLB instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"stlb %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (16 bit)\n  \\details Executes a STLH instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"stlh %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (32 bit)\n  \\details Executes a STL instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"stl %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (8 bit)\n  \\details Executes a LDAB exclusive instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define     __LDAEXB                 (uint8_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (16 bit)\n  \\details Executes a LDAH exclusive instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define     __LDAEXH                 (uint16_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (32 bit)\n  \\details Executes a LDA exclusive instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define     __LDAEX                  (uint32_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Store-Release Exclusive (8 bit)\n  \\details Executes a STLB exclusive instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXB                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (16 bit)\n  \\details Executes a STLH exclusive instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXH                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (32 bit)\n  \\details Executes a STL exclusive instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEX                  (uint32_t)__builtin_arm_stlex\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n\n__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usad8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usada8 %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#define __SSAT16(ARG1,ARG2) \\\n({                          \\\n  int32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"ssat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n#define __USAT16(ARG1,ARG2) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"usat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusdx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsd %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsdx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sel %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n  int32_t result;\n\n  __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#endif /* (__ARM_FEATURE_DSP == 1) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#endif /* __CMSIS_ARMCLANG_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/cmsis_compiler.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_compiler.h\n * @brief    CMSIS compiler generic header file\n * @version  V5.1.0\n * @date     09. October 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_COMPILER_H\n#define __CMSIS_COMPILER_H\n\n#include <stdint.h>\n\n/*\n * Arm Compiler 4/5\n */\n#if   defined ( __CC_ARM )\n  #include \"cmsis_armcc.h\"\n\n\n/*\n * Arm Compiler 6.6 LTM (armclang)\n */\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)\n  #include \"cmsis_armclang_ltm.h\"\n\n  /*\n * Arm Compiler above 6.10.1 (armclang)\n */\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100)\n  #include \"cmsis_armclang.h\"\n\n\n/*\n * GNU Compiler\n */\n#elif defined ( __GNUC__ )\n  #include \"cmsis_gcc.h\"\n\n\n/*\n * IAR Compiler\n */\n#elif defined ( __ICCARM__ )\n  #include <cmsis_iccarm.h>\n\n\n/*\n * TI Arm Compiler\n */\n#elif defined ( __TI_ARM__ )\n  #include <cmsis_ccs.h>\n\n  #ifndef   __ASM\n    #define __ASM                                  __asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                               inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE                        static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE                   __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    #define __NO_RETURN                            __attribute__((noreturn))\n  #endif\n  #ifndef   __USED\n    #define __USED                                 __attribute__((used))\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                                 __attribute__((weak))\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                               __attribute__((packed))\n  #endif\n  #ifndef   __PACKED_STRUCT\n    #define __PACKED_STRUCT                        struct __attribute__((packed))\n  #endif\n  #ifndef   __PACKED_UNION\n    #define __PACKED_UNION                         union __attribute__((packed))\n  #endif\n  #ifndef   __UNALIGNED_UINT32        /* deprecated */\n    struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT16_WRITE\n    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT16_READ\n    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT32_WRITE\n    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT32_READ\n    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #define __ALIGNED(x)                           __attribute__((aligned(x)))\n  #endif\n  #ifndef   __RESTRICT\n    #define __RESTRICT                             __restrict\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()                   (void)0\n  #endif\n\n\n/*\n * TASKING Compiler\n */\n#elif defined ( __TASKING__ )\n  /*\n   * The CMSIS functions have been implemented as intrinsics in the compiler.\n   * Please use \"carm -?i\" to get an up to date list of all intrinsics,\n   * Including the CMSIS ones.\n   */\n\n  #ifndef   __ASM\n    #define __ASM                                  __asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                               inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE                        static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE                   __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    #define __NO_RETURN                            __attribute__((noreturn))\n  #endif\n  #ifndef   __USED\n    #define __USED                                 __attribute__((used))\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                                 __attribute__((weak))\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                               __packed__\n  #endif\n  #ifndef   __PACKED_STRUCT\n    #define __PACKED_STRUCT                        struct __packed__\n  #endif\n  #ifndef   __PACKED_UNION\n    #define __PACKED_UNION                         union __packed__\n  #endif\n  #ifndef   __UNALIGNED_UINT32        /* deprecated */\n    struct __packed__ T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT16_WRITE\n    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT16_READ\n    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT32_WRITE\n    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT32_READ\n    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #define __ALIGNED(x)              __align(x)\n  #endif\n  #ifndef   __RESTRICT\n    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.\n    #define __RESTRICT\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()                   (void)0\n  #endif\n\n\n/*\n * COSMIC Compiler\n */\n#elif defined ( __CSMC__ )\n   #include <cmsis_csm.h>\n\n #ifndef   __ASM\n    #define __ASM                                  _asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                               inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE                        static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE                   __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    // NO RETURN is automatically detected hence no warning here\n    #define __NO_RETURN\n  #endif\n  #ifndef   __USED\n    #warning No compiler specific solution for __USED. __USED is ignored.\n    #define __USED\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                                 __weak\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                               @packed\n  #endif\n  #ifndef   __PACKED_STRUCT\n    #define __PACKED_STRUCT                        @packed struct\n  #endif\n  #ifndef   __PACKED_UNION\n    #define __PACKED_UNION                         @packed union\n  #endif\n  #ifndef   __UNALIGNED_UINT32        /* deprecated */\n    @packed struct T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT16_WRITE\n    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT16_READ\n    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT32_WRITE\n    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT32_READ\n    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.\n    #define __ALIGNED(x)\n  #endif\n  #ifndef   __RESTRICT\n    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.\n    #define __RESTRICT\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()                   (void)0\n  #endif\n\n\n#else\n  #error Unknown compiler.\n#endif\n\n\n#endif /* __CMSIS_COMPILER_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/cmsis_gcc.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_gcc.h\n * @brief    CMSIS compiler GCC header file\n * @version  V5.2.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_GCC_H\n#define __CMSIS_GCC_H\n\n/* ignore some GCC warnings */\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wsign-conversion\"\n#pragma GCC diagnostic ignored \"-Wconversion\"\n#pragma GCC diagnostic ignored \"-Wunused-parameter\"\n\n/* Fallback for __has_builtin */\n#ifndef __has_builtin\n  #define __has_builtin(x) (0)\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static inline\n#endif\n#ifndef   __STATIC_FORCEINLINE                 \n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static inline\n#endif                                           \n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n\n/**\n  \\brief   Initializes data and bss sections\n  \\details This default implementations initialized all data and additional bss\n           sections relying on .copy.table and .zero.table specified properly\n           in the used linker script.\n  \n */\n__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void)\n{\n  extern void _start(void) __NO_RETURN;\n  \n  typedef struct {\n    uint32_t const* src;\n    uint32_t* dest;\n    uint32_t  wlen;\n  } __copy_table_t;\n  \n  typedef struct {\n    uint32_t* dest;\n    uint32_t  wlen;\n  } __zero_table_t;\n  \n  extern const __copy_table_t __copy_table_start__;\n  extern const __copy_table_t __copy_table_end__;\n  extern const __zero_table_t __zero_table_start__;\n  extern const __zero_table_t __zero_table_end__;\n\n  for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) {\n    for(uint32_t i=0u; i<pTable->wlen; ++i) {\n      pTable->dest[i] = pTable->src[i];\n    }\n  }\n \n  for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) {\n    for(uint32_t i=0u; i<pTable->wlen; ++i) {\n      pTable->dest[i] = 0u;\n    }\n  }\n \n  _start();\n}\n  \n#define __PROGRAM_START           __cmsis_start\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              __StackTop\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             __StackLimit\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\".vectors\")))\n#endif\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __enable_irq(void)\n{\n  __ASM volatile (\"cpsie i\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __disable_irq(void)\n{\n  __ASM volatile (\"cpsid i\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Control Register (non-secure)\n  \\details Returns the content of the non-secure Control Register when in secure mode.\n  \\return               non-secure Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\n{\n  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Control Register (non-secure)\n  \\details Writes the given value to the non-secure Control Register when in secure state.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\n{\n  __ASM volatile (\"MSR control_ns, %0\" : : \"r\" (control) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_APSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp\"  : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp_ns\"  : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp, %0\" : : \"r\" (topOfProcStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp_ns, %0\" : : \"r\" (topOfProcStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Main Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp, %0\" : : \"r\" (topOfMainStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Main Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp_ns, %0\" : : \"r\" (topOfMainStack) : );\n}\n#endif\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\n  \\return               SP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, sp_ns\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Set Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\n  \\param [in]    topOfStack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\n{\n  __ASM volatile (\"MSR sp_ns, %0\" : : \"r\" (topOfStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) :: \"memory\");\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Priority Mask (non-secure)\n  \\details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask_ns\" : \"=r\" (result) :: \"memory\");\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Priority Mask (non-secure)\n  \\details Assigns the given value to the non-secure Priority Mask Register when in secure state.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask_ns, %0\" : : \"r\" (priMask) : \"memory\");\n}\n#endif\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __enable_fault_irq(void)\n{\n  __ASM volatile (\"cpsie f\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __disable_fault_irq(void)\n{\n  __ASM volatile (\"cpsid f\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Base Priority (non-secure)\n  \\details Returns the current value of the non-secure Base Priority register when in secure state.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Base Priority (non-secure)\n  \\details Assigns the given value to the non-secure Base Priority register when in secure state.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_ns, %0\" : : \"r\" (basePri) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_max, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Fault Mask (non-secure)\n  \\details Returns the current value of the non-secure Fault Mask register when in secure state.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Fault Mask (non-secure)\n  \\details Assigns the given value to the non-secure Fault Mask register when in secure state.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask_ns, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n/**\n  \\brief   Get Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n  \n  \\details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n\n#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim_ns\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n  \n  \\details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim, %0\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim_ns, %0\\n\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n\n  \\details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim\" : \"=r\" (result) );\n  return result;\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Get Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim_ns\" : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n\n  \\details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim_ns, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FPSCR(void)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#if __has_builtin(__builtin_arm_get_fpscr) \n// Re-enable using built-in when GCC has been fixed\n// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\n  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\n  return __builtin_arm_get_fpscr();\n#else\n  uint32_t result;\n\n  __ASM volatile (\"VMRS %0, fpscr\" : \"=r\" (result) );\n  return(result);\n#endif\n#else\n  return(0U);\n#endif\n}\n\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#if __has_builtin(__builtin_arm_set_fpscr)\n// Re-enable using built-in when GCC has been fixed\n// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\n  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\n  __builtin_arm_set_fpscr(fpscr);\n#else\n  __ASM volatile (\"VMSR fpscr, %0\" : : \"r\" (fpscr) : \"vfpcc\", \"memory\");\n#endif\n#else\n  (void)fpscr;\n#endif\n}\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/* Define macros for porting to both thumb1 and thumb2.\n * For thumb1, use low register (r0-r7), specified by constraint \"l\"\n * Otherwise, use general registers, specified by constraint \"r\" */\n#if defined (__thumb__) && !defined (__thumb2__)\n#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+l\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n#else\n#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+r\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n#endif\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP()                             __ASM volatile (\"nop\")\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI()                             __ASM volatile (\"wfi\")\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE()                             __ASM volatile (\"wfe\")\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV()                             __ASM volatile (\"sev\")\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n__STATIC_FORCEINLINE void __ISB(void)\n{\n  __ASM volatile (\"isb 0xF\":::\"memory\");\n}\n\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n__STATIC_FORCEINLINE void __DSB(void)\n{\n  __ASM volatile (\"dsb 0xF\":::\"memory\");\n}\n\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n__STATIC_FORCEINLINE void __DMB(void)\n{\n  __ASM volatile (\"dmb 0xF\":::\"memory\");\n}\n\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE uint32_t __REV(uint32_t value)\n{\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)\n  return __builtin_bswap32(value);\n#else\n  uint32_t result;\n\n  __ASM volatile (\"rev %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return result;\n#endif\n}\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rev16 %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return result;\n}\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE int16_t __REVSH(int16_t value)\n{\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n  return (int16_t)__builtin_bswap16(value);\n#else\n  int16_t result;\n\n  __ASM volatile (\"revsh %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return result;\n#endif\n}\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U)\n  {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)                       __ASM volatile (\"bkpt \"#value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value)\n{\n  uint32_t result;\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n   __ASM volatile (\"rbit %0, %1\" : \"=r\" (result) : \"r\" (value) );\n#else\n  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */\n\n  result = value;                      /* r will be reversed bits of v; first get LSB of v */\n  for (value >>= 1U; value != 0U; value >>= 1U)\n  {\n    result <<= 1U;\n    result |= value & 1U;\n    s--;\n  }\n  result <<= s;                        /* shift when v's highest bits are zero */\n#endif\n  return result;\n}\n\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrexb %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrexb %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n#endif\n   return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrexh %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrexh %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n#endif\n   return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldrex %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n   return(result);\n}\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n__STATIC_FORCEINLINE void __CLREX(void)\n{\n  __ASM volatile (\"clrex\" ::: \"memory\");\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  ARG1  Value to be saturated\n  \\param [in]  ARG2  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT(ARG1,ARG2) \\\n__extension__ \\\n({                          \\\n  int32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"ssat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  ARG1  Value to be saturated\n  \\param [in]  ARG2  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT(ARG1,ARG2) \\\n __extension__ \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"usat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rrx %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return(result);\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrbt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrbt %0, [%1]\" : \"=r\" (result) : \"r\" (ptr) : \"memory\" );\n#endif\n   return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrht %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrht %0, [%1]\" : \"=r\" (result) : \"r\" (ptr) : \"memory\" );\n#endif\n   return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldrt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return(result);\n}\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\n{\n   __ASM volatile (\"strbt %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\n{\n   __ASM volatile (\"strht %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\n{\n   __ASM volatile (\"strt %1, %0\" : \"=Q\" (*ptr) : \"r\" (value) );\n}\n\n#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   Load-Acquire (8 bit)\n  \\details Executes a LDAB instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldab %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (16 bit)\n  \\details Executes a LDAH instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldah %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (32 bit)\n  \\details Executes a LDA instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"lda %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release (8 bit)\n  \\details Executes a STLB instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\n{\n   __ASM volatile (\"stlb %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (16 bit)\n  \\details Executes a STLH instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\n{\n   __ASM volatile (\"stlh %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (32 bit)\n  \\details Executes a STL instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\n{\n   __ASM volatile (\"stl %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (8 bit)\n  \\details Executes a LDAB exclusive instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldaexb %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (16 bit)\n  \\details Executes a LDAH exclusive instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldaexh %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (32 bit)\n  \\details Executes a LDA exclusive instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldaex %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release Exclusive (8 bit)\n  \\details Executes a STLB exclusive instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"stlexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release Exclusive (16 bit)\n  \\details Executes a STLH exclusive instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"stlexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release Exclusive (32 bit)\n  \\details Executes a STL exclusive instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"stlex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n\n__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usad8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usada8 %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#define __SSAT16(ARG1,ARG2) \\\n({                          \\\n  int32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"ssat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n#define __USAT16(ARG1,ARG2) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"usat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusdx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsd %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsdx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sel %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n#if 0\n#define __PKHBT(ARG1,ARG2,ARG3) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n  __ASM (\"pkhbt %0, %1, %2, lsl %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n  __RES; \\\n })\n\n#define __PKHTB(ARG1,ARG2,ARG3) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n  if (ARG3 == 0) \\\n    __ASM (\"pkhtb %0, %1, %2\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2)  ); \\\n  else \\\n    __ASM (\"pkhtb %0, %1, %2, asr %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n  __RES; \\\n })\n#endif\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n int32_t result;\n\n __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n return(result);\n}\n\n#endif /* (__ARM_FEATURE_DSP == 1) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#pragma GCC diagnostic pop\n\n#endif /* __CMSIS_GCC_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/cmsis_iccarm.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_iccarm.h\n * @brief    CMSIS compiler ICCARM (IAR Compiler for Arm) header file\n * @version  V5.1.0\n * @date     08. May 2019\n ******************************************************************************/\n\n//------------------------------------------------------------------------------\n//\n// Copyright (c) 2017-2019 IAR Systems\n// Copyright (c) 2017-2019 Arm Limited. All rights reserved. \n//\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n//------------------------------------------------------------------------------\n\n\n#ifndef __CMSIS_ICCARM_H__\n#define __CMSIS_ICCARM_H__\n\n#ifndef __ICCARM__\n  #error This file should only be compiled by ICCARM\n#endif\n\n#pragma system_include\n\n#define __IAR_FT _Pragma(\"inline=forced\") __intrinsic\n\n#if (__VER__ >= 8000000)\n  #define __ICCARM_V8 1\n#else\n  #define __ICCARM_V8 0\n#endif\n\n#ifndef __ALIGNED\n  #if __ICCARM_V8\n    #define __ALIGNED(x) __attribute__((aligned(x)))\n  #elif (__VER__ >= 7080000)\n    /* Needs IAR language extensions */\n    #define __ALIGNED(x) __attribute__((aligned(x)))\n  #else\n    #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored.\n    #define __ALIGNED(x)\n  #endif\n#endif\n\n\n/* Define compiler macros for CPU architecture, used in CMSIS 5.\n */\n#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__\n/* Macros already defined */\n#else\n  #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__)\n    #define __ARM_ARCH_8M_MAIN__ 1\n  #elif defined(__ARM8M_BASELINE__)\n    #define __ARM_ARCH_8M_BASE__ 1\n  #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M'\n    #if __ARM_ARCH == 6\n      #define __ARM_ARCH_6M__ 1\n    #elif __ARM_ARCH == 7\n      #if __ARM_FEATURE_DSP\n        #define __ARM_ARCH_7EM__ 1\n      #else\n        #define __ARM_ARCH_7M__ 1\n      #endif\n    #endif /* __ARM_ARCH */\n  #endif /* __ARM_ARCH_PROFILE == 'M' */\n#endif\n\n/* Alternativ core deduction for older ICCARM's */\n#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \\\n    !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__)\n  #if defined(__ARM6M__) && (__CORE__ == __ARM6M__)\n    #define __ARM_ARCH_6M__ 1\n  #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__)\n    #define __ARM_ARCH_7M__ 1\n  #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__)\n    #define __ARM_ARCH_7EM__  1\n  #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__)\n    #define __ARM_ARCH_8M_BASE__ 1\n  #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__)\n    #define __ARM_ARCH_8M_MAIN__ 1\n  #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__)\n    #define __ARM_ARCH_8M_MAIN__ 1\n  #else\n    #error \"Unknown target.\"\n  #endif\n#endif\n\n\n\n#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1\n  #define __IAR_M0_FAMILY  1\n#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1\n  #define __IAR_M0_FAMILY  1\n#else\n  #define __IAR_M0_FAMILY  0\n#endif\n\n\n#ifndef __ASM\n  #define __ASM __asm\n#endif\n\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER() __ASM volatile(\"\":::\"memory\")\n#endif\n\n#ifndef __INLINE\n  #define __INLINE inline\n#endif\n\n#ifndef   __NO_RETURN\n  #if __ICCARM_V8\n    #define __NO_RETURN __attribute__((__noreturn__))\n  #else\n    #define __NO_RETURN _Pragma(\"object_attribute=__noreturn\")\n  #endif\n#endif\n\n#ifndef   __PACKED\n  #if __ICCARM_V8\n    #define __PACKED __attribute__((packed, aligned(1)))\n  #else\n    /* Needs IAR language extensions */\n    #define __PACKED __packed\n  #endif\n#endif\n\n#ifndef   __PACKED_STRUCT\n  #if __ICCARM_V8\n    #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))\n  #else\n    /* Needs IAR language extensions */\n    #define __PACKED_STRUCT __packed struct\n  #endif\n#endif\n\n#ifndef   __PACKED_UNION\n  #if __ICCARM_V8\n    #define __PACKED_UNION union __attribute__((packed, aligned(1)))\n  #else\n    /* Needs IAR language extensions */\n    #define __PACKED_UNION __packed union\n  #endif\n#endif\n\n#ifndef   __RESTRICT\n  #if __ICCARM_V8\n    #define __RESTRICT            __restrict\n  #else\n    /* Needs IAR language extensions */\n    #define __RESTRICT            restrict\n  #endif\n#endif\n\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE       static inline\n#endif\n\n#ifndef   __FORCEINLINE\n  #define __FORCEINLINE         _Pragma(\"inline=forced\")\n#endif\n\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE  __FORCEINLINE __STATIC_INLINE\n#endif\n\n#ifndef __UNALIGNED_UINT16_READ\n#pragma language=save\n#pragma language=extended\n__IAR_FT uint16_t __iar_uint16_read(void const *ptr)\n{\n  return *(__packed uint16_t*)(ptr);\n}\n#pragma language=restore\n#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR)\n#endif\n\n\n#ifndef __UNALIGNED_UINT16_WRITE\n#pragma language=save\n#pragma language=extended\n__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val)\n{\n  *(__packed uint16_t*)(ptr) = val;;\n}\n#pragma language=restore\n#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL)\n#endif\n\n#ifndef __UNALIGNED_UINT32_READ\n#pragma language=save\n#pragma language=extended\n__IAR_FT uint32_t __iar_uint32_read(void const *ptr)\n{\n  return *(__packed uint32_t*)(ptr);\n}\n#pragma language=restore\n#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR)\n#endif\n\n#ifndef __UNALIGNED_UINT32_WRITE\n#pragma language=save\n#pragma language=extended\n__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val)\n{\n  *(__packed uint32_t*)(ptr) = val;;\n}\n#pragma language=restore\n#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL)\n#endif\n\n#ifndef __UNALIGNED_UINT32   /* deprecated */\n#pragma language=save\n#pragma language=extended\n__packed struct  __iar_u32 { uint32_t v; };\n#pragma language=restore\n#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v)\n#endif\n\n#ifndef   __USED\n  #if __ICCARM_V8\n    #define __USED __attribute__((used))\n  #else\n    #define __USED _Pragma(\"__root\")\n  #endif\n#endif\n\n#ifndef   __WEAK\n  #if __ICCARM_V8\n    #define __WEAK __attribute__((weak))\n  #else\n    #define __WEAK _Pragma(\"__weak\")\n  #endif\n#endif\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __iar_program_start\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              CSTACK$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             CSTACK$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __vector_table\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  @\".intvec\"\n#endif\n\n#ifndef __ICCARM_INTRINSICS_VERSION__\n  #define __ICCARM_INTRINSICS_VERSION__  0\n#endif\n\n#if __ICCARM_INTRINSICS_VERSION__ == 2\n\n  #if defined(__CLZ)\n    #undef __CLZ\n  #endif\n  #if defined(__REVSH)\n    #undef __REVSH\n  #endif\n  #if defined(__RBIT)\n    #undef __RBIT\n  #endif\n  #if defined(__SSAT)\n    #undef __SSAT\n  #endif\n  #if defined(__USAT)\n    #undef __USAT\n  #endif\n\n  #include \"iccarm_builtin.h\"\n\n  #define __disable_fault_irq __iar_builtin_disable_fiq\n  #define __disable_irq       __iar_builtin_disable_interrupt\n  #define __enable_fault_irq  __iar_builtin_enable_fiq\n  #define __enable_irq        __iar_builtin_enable_interrupt\n  #define __arm_rsr           __iar_builtin_rsr\n  #define __arm_wsr           __iar_builtin_wsr\n\n\n  #define __get_APSR()                (__arm_rsr(\"APSR\"))\n  #define __get_BASEPRI()             (__arm_rsr(\"BASEPRI\"))\n  #define __get_CONTROL()             (__arm_rsr(\"CONTROL\"))\n  #define __get_FAULTMASK()           (__arm_rsr(\"FAULTMASK\"))\n\n  #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n       (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n    #define __get_FPSCR()             (__arm_rsr(\"FPSCR\"))\n    #define __set_FPSCR(VALUE)        (__arm_wsr(\"FPSCR\", (VALUE)))\n  #else\n    #define __get_FPSCR()             ( 0 )\n    #define __set_FPSCR(VALUE)        ((void)VALUE)\n  #endif\n\n  #define __get_IPSR()                (__arm_rsr(\"IPSR\"))\n  #define __get_MSP()                 (__arm_rsr(\"MSP\"))\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure MSPLIM is RAZ/WI\n    #define __get_MSPLIM()            (0U)\n  #else\n    #define __get_MSPLIM()            (__arm_rsr(\"MSPLIM\"))\n  #endif\n  #define __get_PRIMASK()             (__arm_rsr(\"PRIMASK\"))\n  #define __get_PSP()                 (__arm_rsr(\"PSP\"))\n\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n    #define __get_PSPLIM()            (0U)\n  #else\n    #define __get_PSPLIM()            (__arm_rsr(\"PSPLIM\"))\n  #endif\n\n  #define __get_xPSR()                (__arm_rsr(\"xPSR\"))\n\n  #define __set_BASEPRI(VALUE)        (__arm_wsr(\"BASEPRI\", (VALUE)))\n  #define __set_BASEPRI_MAX(VALUE)    (__arm_wsr(\"BASEPRI_MAX\", (VALUE)))\n  #define __set_CONTROL(VALUE)        (__arm_wsr(\"CONTROL\", (VALUE)))\n  #define __set_FAULTMASK(VALUE)      (__arm_wsr(\"FAULTMASK\", (VALUE)))\n  #define __set_MSP(VALUE)            (__arm_wsr(\"MSP\", (VALUE)))\n\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure MSPLIM is RAZ/WI\n    #define __set_MSPLIM(VALUE)       ((void)(VALUE))\n  #else\n    #define __set_MSPLIM(VALUE)       (__arm_wsr(\"MSPLIM\", (VALUE)))\n  #endif\n  #define __set_PRIMASK(VALUE)        (__arm_wsr(\"PRIMASK\", (VALUE)))\n  #define __set_PSP(VALUE)            (__arm_wsr(\"PSP\", (VALUE)))\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n    #define __set_PSPLIM(VALUE)       ((void)(VALUE))\n  #else\n    #define __set_PSPLIM(VALUE)       (__arm_wsr(\"PSPLIM\", (VALUE)))\n  #endif\n\n  #define __TZ_get_CONTROL_NS()       (__arm_rsr(\"CONTROL_NS\"))\n  #define __TZ_set_CONTROL_NS(VALUE)  (__arm_wsr(\"CONTROL_NS\", (VALUE)))\n  #define __TZ_get_PSP_NS()           (__arm_rsr(\"PSP_NS\"))\n  #define __TZ_set_PSP_NS(VALUE)      (__arm_wsr(\"PSP_NS\", (VALUE)))\n  #define __TZ_get_MSP_NS()           (__arm_rsr(\"MSP_NS\"))\n  #define __TZ_set_MSP_NS(VALUE)      (__arm_wsr(\"MSP_NS\", (VALUE)))\n  #define __TZ_get_SP_NS()            (__arm_rsr(\"SP_NS\"))\n  #define __TZ_set_SP_NS(VALUE)       (__arm_wsr(\"SP_NS\", (VALUE)))\n  #define __TZ_get_PRIMASK_NS()       (__arm_rsr(\"PRIMASK_NS\"))\n  #define __TZ_set_PRIMASK_NS(VALUE)  (__arm_wsr(\"PRIMASK_NS\", (VALUE)))\n  #define __TZ_get_BASEPRI_NS()       (__arm_rsr(\"BASEPRI_NS\"))\n  #define __TZ_set_BASEPRI_NS(VALUE)  (__arm_wsr(\"BASEPRI_NS\", (VALUE)))\n  #define __TZ_get_FAULTMASK_NS()     (__arm_rsr(\"FAULTMASK_NS\"))\n  #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr(\"FAULTMASK_NS\", (VALUE)))\n\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n    #define __TZ_get_PSPLIM_NS()      (0U)\n    #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE))\n  #else\n    #define __TZ_get_PSPLIM_NS()      (__arm_rsr(\"PSPLIM_NS\"))\n    #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr(\"PSPLIM_NS\", (VALUE)))\n  #endif\n\n  #define __TZ_get_MSPLIM_NS()        (__arm_rsr(\"MSPLIM_NS\"))\n  #define __TZ_set_MSPLIM_NS(VALUE)   (__arm_wsr(\"MSPLIM_NS\", (VALUE)))\n\n  #define __NOP     __iar_builtin_no_operation\n\n  #define __CLZ     __iar_builtin_CLZ\n  #define __CLREX   __iar_builtin_CLREX\n\n  #define __DMB     __iar_builtin_DMB\n  #define __DSB     __iar_builtin_DSB\n  #define __ISB     __iar_builtin_ISB\n\n  #define __LDREXB  __iar_builtin_LDREXB\n  #define __LDREXH  __iar_builtin_LDREXH\n  #define __LDREXW  __iar_builtin_LDREX\n\n  #define __RBIT    __iar_builtin_RBIT\n  #define __REV     __iar_builtin_REV\n  #define __REV16   __iar_builtin_REV16\n\n  __IAR_FT int16_t __REVSH(int16_t val)\n  {\n    return (int16_t) __iar_builtin_REVSH(val);\n  }\n\n  #define __ROR     __iar_builtin_ROR\n  #define __RRX     __iar_builtin_RRX\n\n  #define __SEV     __iar_builtin_SEV\n\n  #if !__IAR_M0_FAMILY\n    #define __SSAT    __iar_builtin_SSAT\n  #endif\n\n  #define __STREXB  __iar_builtin_STREXB\n  #define __STREXH  __iar_builtin_STREXH\n  #define __STREXW  __iar_builtin_STREX\n\n  #if !__IAR_M0_FAMILY\n    #define __USAT    __iar_builtin_USAT\n  #endif\n\n  #define __WFE     __iar_builtin_WFE\n  #define __WFI     __iar_builtin_WFI\n\n  #if __ARM_MEDIA__\n    #define __SADD8   __iar_builtin_SADD8\n    #define __QADD8   __iar_builtin_QADD8\n    #define __SHADD8  __iar_builtin_SHADD8\n    #define __UADD8   __iar_builtin_UADD8\n    #define __UQADD8  __iar_builtin_UQADD8\n    #define __UHADD8  __iar_builtin_UHADD8\n    #define __SSUB8   __iar_builtin_SSUB8\n    #define __QSUB8   __iar_builtin_QSUB8\n    #define __SHSUB8  __iar_builtin_SHSUB8\n    #define __USUB8   __iar_builtin_USUB8\n    #define __UQSUB8  __iar_builtin_UQSUB8\n    #define __UHSUB8  __iar_builtin_UHSUB8\n    #define __SADD16  __iar_builtin_SADD16\n    #define __QADD16  __iar_builtin_QADD16\n    #define __SHADD16 __iar_builtin_SHADD16\n    #define __UADD16  __iar_builtin_UADD16\n    #define __UQADD16 __iar_builtin_UQADD16\n    #define __UHADD16 __iar_builtin_UHADD16\n    #define __SSUB16  __iar_builtin_SSUB16\n    #define __QSUB16  __iar_builtin_QSUB16\n    #define __SHSUB16 __iar_builtin_SHSUB16\n    #define __USUB16  __iar_builtin_USUB16\n    #define __UQSUB16 __iar_builtin_UQSUB16\n    #define __UHSUB16 __iar_builtin_UHSUB16\n    #define __SASX    __iar_builtin_SASX\n    #define __QASX    __iar_builtin_QASX\n    #define __SHASX   __iar_builtin_SHASX\n    #define __UASX    __iar_builtin_UASX\n    #define __UQASX   __iar_builtin_UQASX\n    #define __UHASX   __iar_builtin_UHASX\n    #define __SSAX    __iar_builtin_SSAX\n    #define __QSAX    __iar_builtin_QSAX\n    #define __SHSAX   __iar_builtin_SHSAX\n    #define __USAX    __iar_builtin_USAX\n    #define __UQSAX   __iar_builtin_UQSAX\n    #define __UHSAX   __iar_builtin_UHSAX\n    #define __USAD8   __iar_builtin_USAD8\n    #define __USADA8  __iar_builtin_USADA8\n    #define __SSAT16  __iar_builtin_SSAT16\n    #define __USAT16  __iar_builtin_USAT16\n    #define __UXTB16  __iar_builtin_UXTB16\n    #define __UXTAB16 __iar_builtin_UXTAB16\n    #define __SXTB16  __iar_builtin_SXTB16\n    #define __SXTAB16 __iar_builtin_SXTAB16\n    #define __SMUAD   __iar_builtin_SMUAD\n    #define __SMUADX  __iar_builtin_SMUADX\n    #define __SMMLA   __iar_builtin_SMMLA\n    #define __SMLAD   __iar_builtin_SMLAD\n    #define __SMLADX  __iar_builtin_SMLADX\n    #define __SMLALD  __iar_builtin_SMLALD\n    #define __SMLALDX __iar_builtin_SMLALDX\n    #define __SMUSD   __iar_builtin_SMUSD\n    #define __SMUSDX  __iar_builtin_SMUSDX\n    #define __SMLSD   __iar_builtin_SMLSD\n    #define __SMLSDX  __iar_builtin_SMLSDX\n    #define __SMLSLD  __iar_builtin_SMLSLD\n    #define __SMLSLDX __iar_builtin_SMLSLDX\n    #define __SEL     __iar_builtin_SEL\n    #define __QADD    __iar_builtin_QADD\n    #define __QSUB    __iar_builtin_QSUB\n    #define __PKHBT   __iar_builtin_PKHBT\n    #define __PKHTB   __iar_builtin_PKHTB\n  #endif\n\n#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */\n\n  #if __IAR_M0_FAMILY\n   /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */\n    #define __CLZ  __cmsis_iar_clz_not_active\n    #define __SSAT __cmsis_iar_ssat_not_active\n    #define __USAT __cmsis_iar_usat_not_active\n    #define __RBIT __cmsis_iar_rbit_not_active\n    #define __get_APSR  __cmsis_iar_get_APSR_not_active\n  #endif\n\n\n  #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n         (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     ))\n    #define __get_FPSCR __cmsis_iar_get_FPSR_not_active\n    #define __set_FPSCR __cmsis_iar_set_FPSR_not_active\n  #endif\n\n  #ifdef __INTRINSICS_INCLUDED\n  #error intrinsics.h is already included previously!\n  #endif\n\n  #include <intrinsics.h>\n\n  #if __IAR_M0_FAMILY\n   /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */\n    #undef __CLZ\n    #undef __SSAT\n    #undef __USAT\n    #undef __RBIT\n    #undef __get_APSR\n\n    __STATIC_INLINE uint8_t __CLZ(uint32_t data)\n    {\n      if (data == 0U) { return 32U; }\n\n      uint32_t count = 0U;\n      uint32_t mask = 0x80000000U;\n\n      while ((data & mask) == 0U)\n      {\n        count += 1U;\n        mask = mask >> 1U;\n      }\n      return count;\n    }\n\n    __STATIC_INLINE uint32_t __RBIT(uint32_t v)\n    {\n      uint8_t sc = 31U;\n      uint32_t r = v;\n      for (v >>= 1U; v; v >>= 1U)\n      {\n        r <<= 1U;\n        r |= v & 1U;\n        sc--;\n      }\n      return (r << sc);\n    }\n\n    __STATIC_INLINE  uint32_t __get_APSR(void)\n    {\n      uint32_t res;\n      __asm(\"MRS      %0,APSR\" : \"=r\" (res));\n      return res;\n    }\n\n  #endif\n\n  #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n         (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     ))\n    #undef __get_FPSCR\n    #undef __set_FPSCR\n    #define __get_FPSCR()       (0)\n    #define __set_FPSCR(VALUE)  ((void)VALUE)\n  #endif\n\n  #pragma diag_suppress=Pe940\n  #pragma diag_suppress=Pe177\n\n  #define __enable_irq    __enable_interrupt\n  #define __disable_irq   __disable_interrupt\n  #define __NOP           __no_operation\n\n  #define __get_xPSR      __get_PSR\n\n  #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0)\n\n    __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr)\n    {\n      return __LDREX((unsigned long *)ptr);\n    }\n\n    __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr)\n    {\n      return __STREX(value, (unsigned long *)ptr);\n    }\n  #endif\n\n\n  /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */\n  #if (__CORTEX_M >= 0x03)\n\n    __IAR_FT uint32_t __RRX(uint32_t value)\n    {\n      uint32_t result;\n      __ASM(\"RRX      %0, %1\" : \"=r\"(result) : \"r\" (value) : \"cc\");\n      return(result);\n    }\n\n    __IAR_FT void __set_BASEPRI_MAX(uint32_t value)\n    {\n      __asm volatile(\"MSR      BASEPRI_MAX,%0\"::\"r\" (value));\n    }\n\n\n    #define __enable_fault_irq  __enable_fiq\n    #define __disable_fault_irq __disable_fiq\n\n\n  #endif /* (__CORTEX_M >= 0x03) */\n\n  __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2)\n  {\n    return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2));\n  }\n\n  #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n       (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n   __IAR_FT uint32_t __get_MSPLIM(void)\n    {\n      uint32_t res;\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure MSPLIM is RAZ/WI\n      res = 0U;\n    #else\n      __asm volatile(\"MRS      %0,MSPLIM\" : \"=r\" (res));\n    #endif\n      return res;\n    }\n\n    __IAR_FT void   __set_MSPLIM(uint32_t value)\n    {\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure MSPLIM is RAZ/WI\n      (void)value;\n    #else\n      __asm volatile(\"MSR      MSPLIM,%0\" :: \"r\" (value));\n    #endif\n    }\n\n    __IAR_FT uint32_t __get_PSPLIM(void)\n    {\n      uint32_t res;\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      res = 0U;\n    #else\n      __asm volatile(\"MRS      %0,PSPLIM\" : \"=r\" (res));\n    #endif\n      return res;\n    }\n\n    __IAR_FT void   __set_PSPLIM(uint32_t value)\n    {\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      (void)value;\n    #else\n      __asm volatile(\"MSR      PSPLIM,%0\" :: \"r\" (value));\n    #endif\n    }\n\n    __IAR_FT uint32_t __TZ_get_CONTROL_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,CONTROL_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_CONTROL_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      CONTROL_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_PSP_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,PSP_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_PSP_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      PSP_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_MSP_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,MSP_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_MSP_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      MSP_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_SP_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,SP_NS\" : \"=r\" (res));\n      return res;\n    }\n    __IAR_FT void   __TZ_set_SP_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      SP_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_PRIMASK_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,PRIMASK_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_PRIMASK_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      PRIMASK_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_BASEPRI_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,BASEPRI_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_BASEPRI_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      BASEPRI_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_FAULTMASK_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,FAULTMASK_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_FAULTMASK_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      FAULTMASK_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_PSPLIM_NS(void)\n    {\n      uint32_t res;\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      res = 0U;\n    #else\n      __asm volatile(\"MRS      %0,PSPLIM_NS\" : \"=r\" (res));\n    #endif\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_PSPLIM_NS(uint32_t value)\n    {\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      (void)value;\n    #else\n      __asm volatile(\"MSR      PSPLIM_NS,%0\" :: \"r\" (value));\n    #endif\n    }\n\n    __IAR_FT uint32_t   __TZ_get_MSPLIM_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,MSPLIM_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_MSPLIM_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      MSPLIM_NS,%0\" :: \"r\" (value));\n    }\n\n  #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */\n\n#endif   /* __ICCARM_INTRINSICS_VERSION__ == 2 */\n\n#define __BKPT(value)    __asm volatile (\"BKPT     %0\" : : \"i\"(value))\n\n#if __IAR_M0_FAMILY\n  __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)\n  {\n    if ((sat >= 1U) && (sat <= 32U))\n    {\n      const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n      const int32_t min = -1 - max ;\n      if (val > max)\n      {\n        return max;\n      }\n      else if (val < min)\n      {\n        return min;\n      }\n    }\n    return val;\n  }\n\n  __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)\n  {\n    if (sat <= 31U)\n    {\n      const uint32_t max = ((1U << sat) - 1U);\n      if (val > (int32_t)max)\n      {\n        return max;\n      }\n      else if (val < 0)\n      {\n        return 0U;\n      }\n    }\n    return (uint32_t)val;\n  }\n#endif\n\n#if (__CORTEX_M >= 0x03)   /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */\n\n  __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr)\n  {\n    uint32_t res;\n    __ASM(\"LDRBT %0, [%1]\" : \"=r\" (res) : \"r\" (addr) : \"memory\");\n    return ((uint8_t)res);\n  }\n\n  __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr)\n  {\n    uint32_t res;\n    __ASM(\"LDRHT %0, [%1]\" : \"=r\" (res) : \"r\" (addr) : \"memory\");\n    return ((uint16_t)res);\n  }\n\n  __IAR_FT uint32_t __LDRT(volatile uint32_t *addr)\n  {\n    uint32_t res;\n    __ASM(\"LDRT %0, [%1]\" : \"=r\" (res) : \"r\" (addr) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr)\n  {\n    __ASM(\"STRBT %1, [%0]\" : : \"r\" (addr), \"r\" ((uint32_t)value) : \"memory\");\n  }\n\n  __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr)\n  {\n    __ASM(\"STRHT %1, [%0]\" : : \"r\" (addr), \"r\" ((uint32_t)value) : \"memory\");\n  }\n\n  __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr)\n  {\n    __ASM(\"STRT %1, [%0]\" : : \"r\" (addr), \"r\" (value) : \"memory\");\n  }\n\n#endif /* (__CORTEX_M >= 0x03) */\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n\n  __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAB %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint8_t)res);\n  }\n\n  __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAH %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint16_t)res);\n  }\n\n  __IAR_FT uint32_t __LDA(volatile uint32_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDA %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr)\n  {\n    __ASM volatile (\"STLB %1, [%0]\" :: \"r\" (ptr), \"r\" (value) : \"memory\");\n  }\n\n  __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr)\n  {\n    __ASM volatile (\"STLH %1, [%0]\" :: \"r\" (ptr), \"r\" (value) : \"memory\");\n  }\n\n  __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr)\n  {\n    __ASM volatile (\"STL %1, [%0]\" :: \"r\" (ptr), \"r\" (value) : \"memory\");\n  }\n\n  __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAEXB %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint8_t)res);\n  }\n\n  __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAEXH %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint16_t)res);\n  }\n\n  __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAEX %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"STLEXB %0, %2, [%1]\" : \"=r\" (res) : \"r\" (ptr), \"r\" (value) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"STLEXH %0, %2, [%1]\" : \"=r\" (res) : \"r\" (ptr), \"r\" (value) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"STLEX %0, %2, [%1]\" : \"=r\" (res) : \"r\" (ptr), \"r\" (value) : \"memory\");\n    return res;\n  }\n\n#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */\n\n#undef __IAR_FT\n#undef __IAR_M0_FAMILY\n#undef __ICCARM_V8\n\n#pragma diag_default=Pe940\n#pragma diag_default=Pe177\n\n#endif /* __CMSIS_ICCARM_H__ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/cmsis_version.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_version.h\n * @brief    CMSIS Core(M) Version definitions\n * @version  V5.0.3\n * @date     24. June 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CMSIS_VERSION_H\n#define __CMSIS_VERSION_H\n\n/*  CMSIS Version definitions */\n#define __CM_CMSIS_VERSION_MAIN  ( 5U)                                      /*!< [31:16] CMSIS Core(M) main version */\n#define __CM_CMSIS_VERSION_SUB   ( 3U)                                      /*!< [15:0]  CMSIS Core(M) sub version */\n#define __CM_CMSIS_VERSION       ((__CM_CMSIS_VERSION_MAIN << 16U) | \\\n                                   __CM_CMSIS_VERSION_SUB           )       /*!< CMSIS Core(M) version number */\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_armv81mml.h",
    "content": "/**************************************************************************//**\n * @file     core_armv81mml.h\n * @brief    CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File\n * @version  V1.0.0\n * @date     15. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2018-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_ARMV81MML_H_GENERIC\n#define __CORE_ARMV81MML_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_ARMV81MML\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n#define __ARM_ARCH_8M_MAIN__    1  // patching for now\n/*  CMSIS ARMV81MML definitions */\n#define __ARMv81MML_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __ARMv81MML_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __ARMv81MML_CMSIS_VERSION       ((__ARMv81MML_CMSIS_VERSION_MAIN << 16U) | \\\n                                         __ARMv81MML_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                     (81U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n  \n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n  \n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n  \n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n  \n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV81MML_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_ARMV81MML_H_DEPENDANT\n#define __CORE_ARMV81MML_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __ARMv81MML_REV\n    #define __ARMv81MML_REV               0x0000U\n    #warning \"__ARMv81MML_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group ARMv81MML */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n        uint32_t RESERVED7[6U];\n  __IOM uint32_t ITCMCR;                 /*!< Offset: 0x290 (R/W)  Instruction Tightly-Coupled Memory Control Register */\n  __IOM uint32_t DTCMCR;                 /*!< Offset: 0x294 (R/W)  Data Tightly-Coupled Memory Control Registers */\n  __IOM uint32_t AHBPCR;                 /*!< Offset: 0x298 (R/W)  AHBP Control Register */\n  __IOM uint32_t CACR;                   /*!< Offset: 0x29C (R/W)  L1 Cache Control Register */\n  __IOM uint32_t AHBSCR;                 /*!< Offset: 0x2A0 (R/W)  AHB Slave Control Register */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t ABFSR;                  /*!< Offset: 0x2A8 (R/W)  Auxiliary Bus Fault Status Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/* Instruction Tightly-Coupled Memory Control Register Definitions */\n#define SCB_ITCMCR_SZ_Pos                   3U                                            /*!< SCB ITCMCR: SZ Position */\n#define SCB_ITCMCR_SZ_Msk                  (0xFUL << SCB_ITCMCR_SZ_Pos)                   /*!< SCB ITCMCR: SZ Mask */\n\n#define SCB_ITCMCR_RETEN_Pos                2U                                            /*!< SCB ITCMCR: RETEN Position */\n#define SCB_ITCMCR_RETEN_Msk               (1UL << SCB_ITCMCR_RETEN_Pos)                  /*!< SCB ITCMCR: RETEN Mask */\n\n#define SCB_ITCMCR_RMW_Pos                  1U                                            /*!< SCB ITCMCR: RMW Position */\n#define SCB_ITCMCR_RMW_Msk                 (1UL << SCB_ITCMCR_RMW_Pos)                    /*!< SCB ITCMCR: RMW Mask */\n\n#define SCB_ITCMCR_EN_Pos                   0U                                            /*!< SCB ITCMCR: EN Position */\n#define SCB_ITCMCR_EN_Msk                  (1UL /*<< SCB_ITCMCR_EN_Pos*/)                 /*!< SCB ITCMCR: EN Mask */\n\n/* Data Tightly-Coupled Memory Control Register Definitions */\n#define SCB_DTCMCR_SZ_Pos                   3U                                            /*!< SCB DTCMCR: SZ Position */\n#define SCB_DTCMCR_SZ_Msk                  (0xFUL << SCB_DTCMCR_SZ_Pos)                   /*!< SCB DTCMCR: SZ Mask */\n\n#define SCB_DTCMCR_RETEN_Pos                2U                                            /*!< SCB DTCMCR: RETEN Position */\n#define SCB_DTCMCR_RETEN_Msk               (1UL << SCB_DTCMCR_RETEN_Pos)                   /*!< SCB DTCMCR: RETEN Mask */\n\n#define SCB_DTCMCR_RMW_Pos                  1U                                            /*!< SCB DTCMCR: RMW Position */\n#define SCB_DTCMCR_RMW_Msk                 (1UL << SCB_DTCMCR_RMW_Pos)                    /*!< SCB DTCMCR: RMW Mask */\n\n#define SCB_DTCMCR_EN_Pos                   0U                                            /*!< SCB DTCMCR: EN Position */\n#define SCB_DTCMCR_EN_Msk                  (1UL /*<< SCB_DTCMCR_EN_Pos*/)                 /*!< SCB DTCMCR: EN Mask */\n\n/* AHBP Control Register Definitions */\n#define SCB_AHBPCR_SZ_Pos                   1U                                            /*!< SCB AHBPCR: SZ Position */\n#define SCB_AHBPCR_SZ_Msk                  (7UL << SCB_AHBPCR_SZ_Pos)                     /*!< SCB AHBPCR: SZ Mask */\n\n#define SCB_AHBPCR_EN_Pos                   0U                                            /*!< SCB AHBPCR: EN Position */\n#define SCB_AHBPCR_EN_Msk                  (1UL /*<< SCB_AHBPCR_EN_Pos*/)                 /*!< SCB AHBPCR: EN Mask */\n\n/* L1 Cache Control Register Definitions */\n#define SCB_CACR_FORCEWT_Pos                2U                                            /*!< SCB CACR: FORCEWT Position */\n#define SCB_CACR_FORCEWT_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: FORCEWT Mask */\n\n#define SCB_CACR_ECCEN_Pos                  1U                                            /*!< SCB CACR: ECCEN Position */\n#define SCB_CACR_ECCEN_Msk                 (1UL << SCB_CACR_ECCEN_Pos)                    /*!< SCB CACR: ECCEN Mask */\n\n#define SCB_CACR_SIWT_Pos                   0U                                            /*!< SCB CACR: SIWT Position */\n#define SCB_CACR_SIWT_Msk                  (1UL /*<< SCB_CACR_SIWT_Pos*/)                 /*!< SCB CACR: SIWT Mask */\n\n/* AHBS Control Register Definitions */\n#define SCB_AHBSCR_INITCOUNT_Pos           11U                                            /*!< SCB AHBSCR: INITCOUNT Position */\n#define SCB_AHBSCR_INITCOUNT_Msk           (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos)           /*!< SCB AHBSCR: INITCOUNT Mask */\n\n#define SCB_AHBSCR_TPRI_Pos                 2U                                            /*!< SCB AHBSCR: TPRI Position */\n#define SCB_AHBSCR_TPRI_Msk                (0x1FFUL << SCB_AHBPCR_TPRI_Pos)               /*!< SCB AHBSCR: TPRI Mask */\n\n#define SCB_AHBSCR_CTL_Pos                  0U                                            /*!< SCB AHBSCR: CTL Position*/\n#define SCB_AHBSCR_CTL_Msk                 (3UL /*<< SCB_AHBPCR_CTL_Pos*/)                /*!< SCB AHBSCR: CTL Mask */\n\n/* Auxiliary Bus Fault Status Register Definitions */\n#define SCB_ABFSR_AXIMTYPE_Pos              8U                                            /*!< SCB ABFSR: AXIMTYPE Position*/\n#define SCB_ABFSR_AXIMTYPE_Msk             (3UL << SCB_ABFSR_AXIMTYPE_Pos)                /*!< SCB ABFSR: AXIMTYPE Mask */\n\n#define SCB_ABFSR_EPPB_Pos                  4U                                            /*!< SCB ABFSR: EPPB Position*/\n#define SCB_ABFSR_EPPB_Msk                 (1UL << SCB_ABFSR_EPPB_Pos)                    /*!< SCB ABFSR: EPPB Mask */\n\n#define SCB_ABFSR_AXIM_Pos                  3U                                            /*!< SCB ABFSR: AXIM Position*/\n#define SCB_ABFSR_AXIM_Msk                 (1UL << SCB_ABFSR_AXIM_Pos)                    /*!< SCB ABFSR: AXIM Mask */\n\n#define SCB_ABFSR_AHBP_Pos                  2U                                            /*!< SCB ABFSR: AHBP Position*/\n#define SCB_ABFSR_AHBP_Msk                 (1UL << SCB_ABFSR_AHBP_Pos)                    /*!< SCB ABFSR: AHBP Mask */\n\n#define SCB_ABFSR_DTCM_Pos                  1U                                            /*!< SCB ABFSR: DTCM Position*/\n#define SCB_ABFSR_DTCM_Msk                 (1UL << SCB_ABFSR_DTCM_Pos)                    /*!< SCB ABFSR: DTCM Mask */\n\n#define SCB_ABFSR_ITCM_Pos                  0U                                            /*!< SCB ABFSR: ITCM Position*/\n#define SCB_ABFSR_ITCM_Msk                 (1UL /*<< SCB_ABFSR_ITCM_Pos*/)                /*!< SCB ABFSR: ITCM Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[29U];\n  __OM  uint32_t IWR;                    /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register */\n  __IM  uint32_t IRR;                    /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register */\n  __IOM uint32_t IMCR;                   /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register */\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Integration Write Register Definitions */\n#define ITM_IWR_ATVALIDM_Pos                0U                                            /*!< ITM IWR: ATVALIDM Position */\n#define ITM_IWR_ATVALIDM_Msk               (1UL /*<< ITM_IWR_ATVALIDM_Pos*/)              /*!< ITM IWR: ATVALIDM Mask */\n\n/* ITM Integration Read Register Definitions */\n#define ITM_IRR_ATREADYM_Pos                0U                                            /*!< ITM IRR: ATREADYM Position */\n#define ITM_IRR_ATREADYM_Msk               (1UL /*<< ITM_IRR_ATREADYM_Pos*/)              /*!< ITM IRR: ATREADYM Mask */\n\n/* ITM Integration Mode Control Register Definitions */\n#define ITM_IMCR_INTEGRATION_Pos            0U                                            /*!< ITM IMCR: INTEGRATION Position */\n#define ITM_IMCR_INTEGRATION_Msk           (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/)          /*!< ITM IMCR: INTEGRATION Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Sizes Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Sizes Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR2: ATREADY Position */\n#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/)    /*!< TPI ITATBCTR2: ATREADY Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR0: ATREADY Position */\n#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/)    /*!< TPI ITATBCTR0: ATREADY Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_MajorType_Pos           4U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n#define TPI_DEVTYPE_SubType_Pos             0U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_PXN_Pos                    4U                                            /*!< MPU RLAR: PXN Position */\n#define MPU_RLAR_PXN_Msk                   (0x1UL << MPU_RLAR_PXN_Pos)                    /*!< MPU RLAR: PXN Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk));             /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV81MML_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_armv8mbl.h",
    "content": "/**************************************************************************//**\n * @file     core_armv8mbl.h\n * @brief    CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File\n * @version  V5.0.8\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_ARMV8MBL_H_GENERIC\n#define __CORE_ARMV8MBL_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_ARMv8MBL\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS definitions */\n#define __ARMv8MBL_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __ARMv8MBL_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __ARMv8MBL_CMSIS_VERSION       ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \\\n                                         __ARMv8MBL_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                     ( 2U)                                            /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MBL_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_ARMV8MBL_H_DEPENDANT\n#define __CORE_ARMV8MBL_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __ARMv8MBL_REV\n    #define __ARMv8MBL_REV               0x0000U\n    #warning \"__ARMv8MBL_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __VTOR_PRESENT\n    #define __VTOR_PRESENT            0U\n    #warning \"__VTOR_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __ETM_PRESENT\n    #define __ETM_PRESENT             0U\n    #warning \"__ETM_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MTB_PRESENT\n    #define __MTB_PRESENT             0U\n    #warning \"__MTB_PRESENT not defined in device header file; using default!\"\n  #endif\n\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group ARMv8MBL */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint32_t IPR[124U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n#else\n        uint32_t RESERVED0;\n#endif\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHPR[2U];               /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n        uint32_t RESERVED0[6U];\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x3UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Sizes Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Sizes Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[809U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  Software Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  Software Lock Status Register */\n        uint32_t RESERVED4[4U];\n  __IM  uint32_t TYPE;                   /*!< Offset: 0xFC8 (R/ )  Device Identifier Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_SWOSCALER_Pos              0U                                         /*!< TPI ACPR: SWOSCALER Position */\n#define TPI_ACPR_SWOSCALER_Msk             (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/)    /*!< TPI ACPR: SWOSCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI Periodic Synchronization Control Register Definitions */\n#define TPI_PSCR_PSCount_Pos                0U                                         /*!< TPI PSCR: PSCount Position */\n#define TPI_PSCR_PSCount_Msk               (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/)        /*!< TPI PSCR: TPSCount Mask */\n\n/* TPI Software Lock Status Register Definitions */\n#define TPI_LSR_nTT_Pos                     1U                                         /*!< TPI LSR: Not thirty-two bit. Position */\n#define TPI_LSR_nTT_Msk                    (0x1UL << TPI_LSR_nTT_Pos)                  /*!< TPI LSR: Not thirty-two bit. Mask */\n\n#define TPI_LSR_SLK_Pos                     1U                                         /*!< TPI LSR: Software Lock status Position */\n#define TPI_LSR_SLK_Msk                    (0x1UL << TPI_LSR_SLK_Pos)                  /*!< TPI LSR: Software Lock status Mask */\n\n#define TPI_LSR_SLI_Pos                     0U                                         /*!< TPI LSR: Software Lock implemented Position */\n#define TPI_LSR_SLI_Msk                    (0x1UL /*<< TPI_LSR_SLI_Pos*/)              /*!< TPI LSR: Software Lock implemented Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFO depth Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFO depth Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n        uint32_t RESERVED0[7U];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  1U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: EN Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: EN Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#endif\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register */\n#define CoreDebug_DEMCR_DWTENA_Pos         24U                                            /*!< CoreDebug DEMCR: DWTENA Position */\n#define CoreDebug_DEMCR_DWTENA_Msk         (1UL << CoreDebug_DEMCR_DWTENA_Pos)            /*!< CoreDebug DEMCR: DWTENA Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */\n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n           If VTOR is not present address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MBL_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_armv8mml.h",
    "content": "/**************************************************************************//**\n * @file     core_armv8mml.h\n * @brief    CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     12. September 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_ARMV8MML_H_GENERIC\n#define __CORE_ARMV8MML_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_ARMv8MML\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS Armv8MML definitions */\n#define __ARMv8MML_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __ARMv8MML_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __ARMv8MML_CMSIS_VERSION       ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \\\n                                         __ARMv8MML_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                     (81U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MML_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_ARMV8MML_H_DEPENDANT\n#define __CORE_ARMV8MML_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __ARMv8MML_REV\n    #define __ARMv8MML_REV               0x0000U\n    #warning \"__ARMv8MML_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group ARMv8MML */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Sizes Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Sizes Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[809U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  Software Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  Software Lock Status Register */\n        uint32_t RESERVED4[4U];\n  __IM  uint32_t TYPE;                   /*!< Offset: 0xFC8 (R/ )  Device Identifier Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_SWOSCALER_Pos              0U                                         /*!< TPI ACPR: SWOSCALER Position */\n#define TPI_ACPR_SWOSCALER_Msk             (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/)    /*!< TPI ACPR: SWOSCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI Periodic Synchronization Control Register Definitions */\n#define TPI_PSCR_PSCount_Pos                0U                                         /*!< TPI PSCR: PSCount Position */\n#define TPI_PSCR_PSCount_Msk               (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/)        /*!< TPI PSCR: TPSCount Mask */\n\n/* TPI Software Lock Status Register Definitions */\n#define TPI_LSR_nTT_Pos                     1U                                         /*!< TPI LSR: Not thirty-two bit. Position */\n#define TPI_LSR_nTT_Msk                    (0x1UL << TPI_LSR_nTT_Pos)                  /*!< TPI LSR: Not thirty-two bit. Mask */\n\n#define TPI_LSR_SLK_Pos                     1U                                         /*!< TPI LSR: Software Lock status Position */\n#define TPI_LSR_SLK_Msk                    (0x1UL << TPI_LSR_SLK_Pos)                  /*!< TPI LSR: Software Lock status Mask */\n\n#define TPI_LSR_SLI_Pos                     0U                                         /*!< TPI LSR: Software Lock implemented Position */\n#define TPI_LSR_SLI_Msk                    (0x1UL /*<< TPI_LSR_SLI_Pos*/)              /*!< TPI LSR: Software Lock implemented Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFO depth Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFO depth Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */\n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk));             /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)                      );              /* Insert write key and priority group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MML_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm0.h",
    "content": "/**************************************************************************//**\n * @file     core_cm0.h\n * @brief    CMSIS Cortex-M0 Core Peripheral Access Layer Header File\n * @version  V5.0.6\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM0_H_GENERIC\n#define __CORE_CM0_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M0\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n/*  CMSIS CM0 definitions */\n#define __CM0_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM0_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM0_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (0U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM0_H_DEPENDANT\n#define __CORE_CM0_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM0_REV\n    #define __CM0_REV               0x0000U\n    #warning \"__CM0_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M0 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n        uint32_t RESERVED0;\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the Cortex-M0 header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M0 */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           Address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = 0x0U;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M0 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = 0x0U;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm0plus.h",
    "content": "/**************************************************************************//**\n * @file     core_cm0plus.h\n * @brief    CMSIS Cortex-M0+ Core Peripheral Access Layer Header File\n * @version  V5.0.7\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM0PLUS_H_GENERIC\n#define __CORE_CM0PLUS_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex-M0+\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n/*  CMSIS CM0+ definitions */\n#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN)                  /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM0PLUS_CMSIS_VERSION_SUB  (__CM_CMSIS_VERSION_SUB)                   /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM0PLUS_CMSIS_VERSION      ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \\\n                                       __CM0PLUS_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                   (0U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0PLUS_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM0PLUS_H_DEPENDANT\n#define __CORE_CM0PLUS_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM0PLUS_REV\n    #define __CM0PLUS_REV             0x0000U\n    #warning \"__CM0PLUS_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __VTOR_PRESENT\n    #define __VTOR_PRESENT            0U\n    #warning \"__VTOR_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex-M0+ */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n#else\n        uint32_t RESERVED0;\n#endif\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 8U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  1U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   8U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << MPU_RBAR_ADDR_Pos)              /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the Cortex-M0+ header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M0+ */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n           If VTOR is not present address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t vectors = SCB->VTOR;\n#else\n  uint32_t vectors = 0x0U;\n#endif\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M0+ does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t vectors = SCB->VTOR;\n#else\n  uint32_t vectors = 0x0U;\n#endif\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0PLUS_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm1.h",
    "content": "/**************************************************************************//**\n * @file     core_cm1.h\n * @brief    CMSIS Cortex-M1 Core Peripheral Access Layer Header File\n * @version  V1.0.1\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM1_H_GENERIC\n#define __CORE_CM1_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M1\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n/*  CMSIS CM1 definitions */\n#define __CM1_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM1_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM1_CMSIS_VERSION       ((__CM1_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM1_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (1U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM1_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM1_H_DEPENDANT\n#define __CORE_CM1_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM1_REV\n    #define __CM1_REV               0x0100U\n    #warning \"__CM1_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M1 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n        uint32_t RESERVED0;\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_ITCMUAEN_Pos            4U                                        /*!< ACTLR: Instruction TCM Upper Alias Enable Position */\n#define SCnSCB_ACTLR_ITCMUAEN_Msk           (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos)         /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */\n\n#define SCnSCB_ACTLR_ITCMLAEN_Pos            3U                                        /*!< ACTLR: Instruction TCM Lower Alias Enable Position */\n#define SCnSCB_ACTLR_ITCMLAEN_Msk           (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos)         /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the Cortex-M1 header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M1 */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           Address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)0x0U;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  /* ARM Application Note 321 states that the M1 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)0x0U;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM1_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm23.h",
    "content": "/**************************************************************************//**\n * @file     core_cm23.h\n * @brief    CMSIS Cortex-M23 Core Peripheral Access Layer Header File\n * @version  V5.0.8\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM23_H_GENERIC\n#define __CORE_CM23_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M23\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS definitions */\n#define __CM23_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM23_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM23_CMSIS_VERSION       ((__CM23_CMSIS_VERSION_MAIN << 16U) | \\\n                                     __CM23_CMSIS_VERSION_SUB           )      /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                 (23U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM23_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM23_H_DEPENDANT\n#define __CORE_CM23_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM23_REV\n    #define __CM23_REV                0x0000U\n    #warning \"__CM23_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __VTOR_PRESENT\n    #define __VTOR_PRESENT            0U\n    #warning \"__VTOR_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __ETM_PRESENT\n    #define __ETM_PRESENT             0U\n    #warning \"__ETM_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MTB_PRESENT\n    #define __MTB_PRESENT             0U\n    #warning \"__MTB_PRESENT not defined in device header file; using default!\"\n  #endif\n\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M23 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint32_t IPR[124U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n#else\n        uint32_t RESERVED0;\n#endif\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHPR[2U];               /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n        uint32_t RESERVED0[6U];\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x3UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t ITFTTD0;                /*!< Offset: 0xEEC (R/ )  Integration Test FIFO Test Data 0 Register */\n  __IOM uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/W)  Integration Test ATB Control Register 2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  Integration Test ATB Control Register 0 */\n  __IM  uint32_t ITFTTD1;                /*!< Offset: 0xEFC (R/ )  Integration Test FIFO Test Data 1 Register */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  Device Configuration Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Identifier Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration Test FIFO Test Data 0 Register Definitions */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data2_Pos      16U                                         /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\n#define TPI_ITFTTD0_ATB_IF1_data2_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data1_Pos       8U                                         /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\n#define TPI_ITFTTD0_ATB_IF1_data1_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data0_Pos       0U                                          /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\n#define TPI_ITFTTD0_ATB_IF1_data0_Msk      (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 2 Register Definitions */\n#define TPI_ITATBCTR2_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID2S Position */\n#define TPI_ITATBCTR2_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos)      /*!< TPI ITATBCTR2: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR2_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID1S Position */\n#define TPI_ITATBCTR2_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos)      /*!< TPI ITATBCTR2: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR2_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY2S Position */\n#define TPI_ITATBCTR2_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY2S Mask */\n\n#define TPI_ITATBCTR2_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY1S Position */\n#define TPI_ITATBCTR2_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY1S Mask */\n\n/* TPI Integration Test FIFO Test Data 1 Register Definitions */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data2_Pos      16U                                         /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\n#define TPI_ITFTTD1_ATB_IF2_data2_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data1_Pos       8U                                         /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\n#define TPI_ITFTTD1_ATB_IF2_data1_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data0_Pos       0U                                          /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\n#define TPI_ITFTTD1_ATB_IF2_data0_Msk      (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 0 Definitions */\n#define TPI_ITATBCTR0_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID2S Position */\n#define TPI_ITATBCTR0_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos)      /*!< TPI ITATBCTR0: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR0_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID1S Position */\n#define TPI_ITATBCTR0_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos)      /*!< TPI ITATBCTR0: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR0_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY2S Position */\n#define TPI_ITATBCTR0_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY2S Mask */\n\n#define TPI_ITATBCTR0_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY1S Position */\n#define TPI_ITATBCTR0_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY1S Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFOSZ Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFOSZ Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n        uint32_t RESERVED0[7U];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  1U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: EN Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: EN Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#endif\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register */\n#define CoreDebug_DEMCR_DWTENA_Pos         24U                                            /*!< CoreDebug DEMCR: DWTENA Position */\n#define CoreDebug_DEMCR_DWTENA_Msk         (1UL << CoreDebug_DEMCR_DWTENA_Pos)            /*!< CoreDebug DEMCR: DWTENA Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n/*#define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping   not available for Cortex-M23 */\n/*#define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping   not available for Cortex-M23 */\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */ \n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else \n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\t\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n           If VTOR is not present address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM23_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm3.h",
    "content": "/**************************************************************************//**\n * @file     core_cm3.h\n * @brief    CMSIS Cortex-M3 Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM3_H_GENERIC\n#define __CORE_CM3_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M3\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS CM3 definitions */\n#define __CM3_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM3_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM3_CMSIS_VERSION       ((__CM3_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM3_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (3U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM3_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM3_H_DEPENDANT\n#define __CORE_CM3_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM3_REV\n    #define __CM3_REV               0x0200U\n    #warning \"__CM3_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M3 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t _reserved1:8;               /*!< bit: 16..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[5U];\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#if defined (__CM3_REV) && (__CM3_REV < 0x0201U)                   /* core r2p1 */\n#define SCB_VTOR_TBLBASE_Pos               29U                                            /*!< SCB VTOR: TBLBASE Position */\n#define SCB_VTOR_TBLBASE_Msk               (1UL << SCB_VTOR_TBLBASE_Pos)                  /*!< SCB VTOR: TBLBASE Mask */\n\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */\n#else\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n#if defined (__CM3_REV) && (__CM3_REV >= 0x200U)\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n#else\n        uint32_t RESERVED1[1U];\n#endif\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#if defined (__CM3_REV) && (__CM3_REV >= 0x200U)\n#define SCnSCB_ACTLR_DISOOFP_Pos            9U                                         /*!< ACTLR: DISOOFP Position */\n#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\n\n#define SCnSCB_ACTLR_DISFPCA_Pos            8U                                         /*!< ACTLR: DISFPCA Position */\n#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\n\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */\n#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n#endif\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n   #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) );               /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M3 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM3_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm33.h",
    "content": "/**************************************************************************//**\n * @file     core_cm33.h\n * @brief    CMSIS Cortex-M33 Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM33_H_GENERIC\n#define __CORE_CM33_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M33\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS CM33 definitions */\n#define __CM33_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM33_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM33_CMSIS_VERSION       ((__CM33_CMSIS_VERSION_MAIN << 16U) | \\\n                                     __CM33_CMSIS_VERSION_SUB           )      /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                 (33U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined (__TARGET_FPU_VFP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined (__ARM_FP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined (__ARMVFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined (__TI_VFP_SUPPORT__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined (__FPU_VFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM33_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM33_H_DEPENDANT\n#define __CORE_CM33_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM33_REV\n    #define __CM33_REV                0x0000U\n    #warning \"__CM33_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M33 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t ITFTTD0;                /*!< Offset: 0xEEC (R/ )  Integration Test FIFO Test Data 0 Register */\n  __IOM uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/W)  Integration Test ATB Control Register 2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  Integration Test ATB Control Register 0 */\n  __IM  uint32_t ITFTTD1;                /*!< Offset: 0xEFC (R/ )  Integration Test FIFO Test Data 1 Register */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  Device Configuration Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Identifier Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration Test FIFO Test Data 0 Register Definitions */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data2_Pos      16U                                         /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\n#define TPI_ITFTTD0_ATB_IF1_data2_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data1_Pos       8U                                         /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\n#define TPI_ITFTTD0_ATB_IF1_data1_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data0_Pos       0U                                          /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\n#define TPI_ITFTTD0_ATB_IF1_data0_Msk      (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 2 Register Definitions */\n#define TPI_ITATBCTR2_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID2S Position */\n#define TPI_ITATBCTR2_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos)      /*!< TPI ITATBCTR2: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR2_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID1S Position */\n#define TPI_ITATBCTR2_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos)      /*!< TPI ITATBCTR2: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR2_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY2S Position */\n#define TPI_ITATBCTR2_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY2S Mask */\n\n#define TPI_ITATBCTR2_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY1S Position */\n#define TPI_ITATBCTR2_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY1S Mask */\n\n/* TPI Integration Test FIFO Test Data 1 Register Definitions */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data2_Pos      16U                                         /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\n#define TPI_ITFTTD1_ATB_IF2_data2_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data1_Pos       8U                                         /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\n#define TPI_ITFTTD1_ATB_IF2_data1_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data0_Pos       0U                                          /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\n#define TPI_ITFTTD1_ATB_IF2_data0_Msk      (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 0 Definitions */\n#define TPI_ITATBCTR0_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID2S Position */\n#define TPI_ITATBCTR0_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos)      /*!< TPI ITATBCTR0: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR0_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID1S Position */\n#define TPI_ITATBCTR0_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos)      /*!< TPI ITATBCTR0: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR0_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY2S Position */\n#define TPI_ITATBCTR0_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY2S Mask */\n\n#define TPI_ITATBCTR0_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY1S Position */\n#define TPI_ITATBCTR0_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY1S Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFOSZ Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFOSZ Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */ \n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else \n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM33_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm35p.h",
    "content": "/**************************************************************************//**\n * @file     core_cm35p.h\n * @brief    CMSIS Cortex-M35P Core Peripheral Access Layer Header File\n * @version  V1.0.0\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM35P_H_GENERIC\n#define __CORE_CM35P_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M35P\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS CM35P definitions */\n#define __CM35P_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                  /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM35P_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                   /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM35P_CMSIS_VERSION       ((__CM35P_CMSIS_VERSION_MAIN << 16U) | \\\n                                      __CM35P_CMSIS_VERSION_SUB           )    /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                 (35U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined (__TARGET_FPU_VFP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined (__ARM_FP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined (__ARMVFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined (__TI_VFP_SUPPORT__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined (__FPU_VFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM35P_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM35P_H_DEPENDANT\n#define __CORE_CM35P_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM35P_REV\n    #define __CM35P_REV               0x0000U\n    #warning \"__CM35P_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M35P */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t ITFTTD0;                /*!< Offset: 0xEEC (R/ )  Integration Test FIFO Test Data 0 Register */\n  __IOM uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/W)  Integration Test ATB Control Register 2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  Integration Test ATB Control Register 0 */\n  __IM  uint32_t ITFTTD1;                /*!< Offset: 0xEFC (R/ )  Integration Test FIFO Test Data 1 Register */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  Device Configuration Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Identifier Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration Test FIFO Test Data 0 Register Definitions */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data2_Pos      16U                                         /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\n#define TPI_ITFTTD0_ATB_IF1_data2_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data1_Pos       8U                                         /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\n#define TPI_ITFTTD0_ATB_IF1_data1_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data0_Pos       0U                                          /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\n#define TPI_ITFTTD0_ATB_IF1_data0_Msk      (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 2 Register Definitions */\n#define TPI_ITATBCTR2_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID2S Position */\n#define TPI_ITATBCTR2_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos)      /*!< TPI ITATBCTR2: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR2_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID1S Position */\n#define TPI_ITATBCTR2_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos)      /*!< TPI ITATBCTR2: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR2_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY2S Position */\n#define TPI_ITATBCTR2_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY2S Mask */\n\n#define TPI_ITATBCTR2_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY1S Position */\n#define TPI_ITATBCTR2_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY1S Mask */\n\n/* TPI Integration Test FIFO Test Data 1 Register Definitions */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data2_Pos      16U                                         /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\n#define TPI_ITFTTD1_ATB_IF2_data2_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data1_Pos       8U                                         /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\n#define TPI_ITFTTD1_ATB_IF2_data1_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data0_Pos       0U                                          /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\n#define TPI_ITFTTD1_ATB_IF2_data0_Msk      (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 0 Definitions */\n#define TPI_ITATBCTR0_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID2S Position */\n#define TPI_ITATBCTR0_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos)      /*!< TPI ITATBCTR0: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR0_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID1S Position */\n#define TPI_ITATBCTR0_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos)      /*!< TPI ITATBCTR0: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR0_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY2S Position */\n#define TPI_ITATBCTR0_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY2S Mask */\n\n#define TPI_ITATBCTR0_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY1S Position */\n#define TPI_ITATBCTR0_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY1S Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFOSZ Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFOSZ Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */ \n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else \n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM35P_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm4.h",
    "content": "/**************************************************************************//**\n * @file     core_cm4.h\n * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM4_H_GENERIC\n#define __CORE_CM4_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M4\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/* CMSIS CM4 definitions */\n#define __CM4_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM4_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM4_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (4U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM4_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM4_H_DEPENDANT\n#define __CORE_CM4_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM4_REV\n    #define __CM4_REV               0x0000U\n    #warning \"__CM4_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M4 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag */\n    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[5U];\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISOOFP_Pos            9U                                         /*!< ACTLR: DISOOFP Position */\n#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\n\n#define SCnSCB_ACTLR_DISFPCA_Pos            8U                                         /*!< ACTLR: DISFPCA Position */\n#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\n\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */\n#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x018 (R/ )  Media and FP Feature Register 2 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/* Media and FP Feature Register 2 Definitions */\n\n#define FPU_MVFR2_VFP_Misc_Pos              4U                                            /*!< MVFR2: VFP Misc bits Position */\n#define FPU_MVFR2_VFP_Misc_Msk             (0xFUL << FPU_MVFR2_VFP_Misc_Pos)              /*!< MVFR2: VFP Misc bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n#define FPU_BASE            (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit */\n#define FPU                 ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit */\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n#define EXC_RETURN_HANDLER_FPU     (0xFFFFFFE1UL)     /* return to Handler mode, uses MSP after return, restore floating-point state */\n#define EXC_RETURN_THREAD_MSP_FPU  (0xFFFFFFE9UL)     /* return to Thread mode, uses MSP after return, restore floating-point state  */\n#define EXC_RETURN_THREAD_PSP_FPU  (0xFFFFFFEDUL)     /* return to Thread mode, uses PSP after return, restore floating-point state  */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M4 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM4_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_cm7.h",
    "content": "/**************************************************************************//**\n * @file     core_cm7.h\n * @brief    CMSIS Cortex-M7 Core Peripheral Access Layer Header File\n * @version  V5.1.1\n * @date     28. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM7_H_GENERIC\n#define __CORE_CM7_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M7\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/* CMSIS CM7 definitions */\n#define __CM7_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                  /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM7_CMSIS_VERSION_SUB   ( __CM_CMSIS_VERSION_SUB)                  /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM7_CMSIS_VERSION       ((__CM7_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM7_CMSIS_VERSION_SUB           )      /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (7U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM7_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM7_H_DEPENDANT\n#define __CORE_CM7_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM7_REV\n    #define __CM7_REV               0x0000U\n    #warning \"__CM7_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __ICACHE_PRESENT\n    #define __ICACHE_PRESENT          0U\n    #warning \"__ICACHE_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DCACHE_PRESENT\n    #define __DCACHE_PRESENT          0U\n    #warning \"__DCACHE_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DTCM_PRESENT\n    #define __DTCM_PRESENT            0U\n    #warning \"__DTCM_PRESENT        not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M7 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag */\n    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MFR[4U];             /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[5U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n        uint32_t RESERVED3[93U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n        uint32_t RESERVED7[6U];\n  __IOM uint32_t ITCMCR;                 /*!< Offset: 0x290 (R/W)  Instruction Tightly-Coupled Memory Control Register */\n  __IOM uint32_t DTCMCR;                 /*!< Offset: 0x294 (R/W)  Data Tightly-Coupled Memory Control Registers */\n  __IOM uint32_t AHBPCR;                 /*!< Offset: 0x298 (R/W)  AHBP Control Register */\n  __IOM uint32_t CACR;                   /*!< Offset: 0x29C (R/W)  L1 Cache Control Register */\n  __IOM uint32_t AHBSCR;                 /*!< Offset: 0x2A0 (R/W)  AHB Slave Control Register */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t ABFSR;                  /*!< Offset: 0x2A8 (R/W)  Auxiliary Bus Fault Status Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                      18U                                           /*!< SCB CCR: Branch prediction enable bit Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: Branch prediction enable bit Mask */\n\n#define SCB_CCR_IC_Pos                      17U                                           /*!< SCB CCR: Instruction cache enable bit Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: Instruction cache enable bit Mask */\n\n#define SCB_CCR_DC_Pos                      16U                                           /*!< SCB CCR: Cache enable bit Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: Cache enable bit Mask */\n\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/* Instruction Tightly-Coupled Memory Control Register Definitions */\n#define SCB_ITCMCR_SZ_Pos                   3U                                            /*!< SCB ITCMCR: SZ Position */\n#define SCB_ITCMCR_SZ_Msk                  (0xFUL << SCB_ITCMCR_SZ_Pos)                   /*!< SCB ITCMCR: SZ Mask */\n\n#define SCB_ITCMCR_RETEN_Pos                2U                                            /*!< SCB ITCMCR: RETEN Position */\n#define SCB_ITCMCR_RETEN_Msk               (1UL << SCB_ITCMCR_RETEN_Pos)                  /*!< SCB ITCMCR: RETEN Mask */\n\n#define SCB_ITCMCR_RMW_Pos                  1U                                            /*!< SCB ITCMCR: RMW Position */\n#define SCB_ITCMCR_RMW_Msk                 (1UL << SCB_ITCMCR_RMW_Pos)                    /*!< SCB ITCMCR: RMW Mask */\n\n#define SCB_ITCMCR_EN_Pos                   0U                                            /*!< SCB ITCMCR: EN Position */\n#define SCB_ITCMCR_EN_Msk                  (1UL /*<< SCB_ITCMCR_EN_Pos*/)                 /*!< SCB ITCMCR: EN Mask */\n\n/* Data Tightly-Coupled Memory Control Register Definitions */\n#define SCB_DTCMCR_SZ_Pos                   3U                                            /*!< SCB DTCMCR: SZ Position */\n#define SCB_DTCMCR_SZ_Msk                  (0xFUL << SCB_DTCMCR_SZ_Pos)                   /*!< SCB DTCMCR: SZ Mask */\n\n#define SCB_DTCMCR_RETEN_Pos                2U                                            /*!< SCB DTCMCR: RETEN Position */\n#define SCB_DTCMCR_RETEN_Msk               (1UL << SCB_DTCMCR_RETEN_Pos)                   /*!< SCB DTCMCR: RETEN Mask */\n\n#define SCB_DTCMCR_RMW_Pos                  1U                                            /*!< SCB DTCMCR: RMW Position */\n#define SCB_DTCMCR_RMW_Msk                 (1UL << SCB_DTCMCR_RMW_Pos)                    /*!< SCB DTCMCR: RMW Mask */\n\n#define SCB_DTCMCR_EN_Pos                   0U                                            /*!< SCB DTCMCR: EN Position */\n#define SCB_DTCMCR_EN_Msk                  (1UL /*<< SCB_DTCMCR_EN_Pos*/)                 /*!< SCB DTCMCR: EN Mask */\n\n/* AHBP Control Register Definitions */\n#define SCB_AHBPCR_SZ_Pos                   1U                                            /*!< SCB AHBPCR: SZ Position */\n#define SCB_AHBPCR_SZ_Msk                  (7UL << SCB_AHBPCR_SZ_Pos)                     /*!< SCB AHBPCR: SZ Mask */\n\n#define SCB_AHBPCR_EN_Pos                   0U                                            /*!< SCB AHBPCR: EN Position */\n#define SCB_AHBPCR_EN_Msk                  (1UL /*<< SCB_AHBPCR_EN_Pos*/)                 /*!< SCB AHBPCR: EN Mask */\n\n/* L1 Cache Control Register Definitions */\n#define SCB_CACR_FORCEWT_Pos                2U                                            /*!< SCB CACR: FORCEWT Position */\n#define SCB_CACR_FORCEWT_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: FORCEWT Mask */\n\n#define SCB_CACR_ECCEN_Pos                  1U                                            /*!< SCB CACR: ECCEN Position */\n#define SCB_CACR_ECCEN_Msk                 (1UL << SCB_CACR_ECCEN_Pos)                    /*!< SCB CACR: ECCEN Mask */\n\n#define SCB_CACR_SIWT_Pos                   0U                                            /*!< SCB CACR: SIWT Position */\n#define SCB_CACR_SIWT_Msk                  (1UL /*<< SCB_CACR_SIWT_Pos*/)                 /*!< SCB CACR: SIWT Mask */\n\n/* AHBS Control Register Definitions */\n#define SCB_AHBSCR_INITCOUNT_Pos           11U                                            /*!< SCB AHBSCR: INITCOUNT Position */\n#define SCB_AHBSCR_INITCOUNT_Msk           (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos)           /*!< SCB AHBSCR: INITCOUNT Mask */\n\n#define SCB_AHBSCR_TPRI_Pos                 2U                                            /*!< SCB AHBSCR: TPRI Position */\n#define SCB_AHBSCR_TPRI_Msk                (0x1FFUL << SCB_AHBPCR_TPRI_Pos)               /*!< SCB AHBSCR: TPRI Mask */\n\n#define SCB_AHBSCR_CTL_Pos                  0U                                            /*!< SCB AHBSCR: CTL Position*/\n#define SCB_AHBSCR_CTL_Msk                 (3UL /*<< SCB_AHBPCR_CTL_Pos*/)                /*!< SCB AHBSCR: CTL Mask */\n\n/* Auxiliary Bus Fault Status Register Definitions */\n#define SCB_ABFSR_AXIMTYPE_Pos              8U                                            /*!< SCB ABFSR: AXIMTYPE Position*/\n#define SCB_ABFSR_AXIMTYPE_Msk             (3UL << SCB_ABFSR_AXIMTYPE_Pos)                /*!< SCB ABFSR: AXIMTYPE Mask */\n\n#define SCB_ABFSR_EPPB_Pos                  4U                                            /*!< SCB ABFSR: EPPB Position*/\n#define SCB_ABFSR_EPPB_Msk                 (1UL << SCB_ABFSR_EPPB_Pos)                    /*!< SCB ABFSR: EPPB Mask */\n\n#define SCB_ABFSR_AXIM_Pos                  3U                                            /*!< SCB ABFSR: AXIM Position*/\n#define SCB_ABFSR_AXIM_Msk                 (1UL << SCB_ABFSR_AXIM_Pos)                    /*!< SCB ABFSR: AXIM Mask */\n\n#define SCB_ABFSR_AHBP_Pos                  2U                                            /*!< SCB ABFSR: AHBP Position*/\n#define SCB_ABFSR_AHBP_Msk                 (1UL << SCB_ABFSR_AHBP_Pos)                    /*!< SCB ABFSR: AHBP Mask */\n\n#define SCB_ABFSR_DTCM_Pos                  1U                                            /*!< SCB ABFSR: DTCM Position*/\n#define SCB_ABFSR_DTCM_Msk                 (1UL << SCB_ABFSR_DTCM_Pos)                    /*!< SCB ABFSR: DTCM Mask */\n\n#define SCB_ABFSR_ITCM_Pos                  0U                                            /*!< SCB ABFSR: ITCM Position*/\n#define SCB_ABFSR_ITCM_Msk                 (1UL /*<< SCB_ABFSR_ITCM_Pos*/)                /*!< SCB ABFSR: ITCM Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISDYNADD_Pos         26U                                         /*!< ACTLR: DISDYNADD Position */\n#define SCnSCB_ACTLR_DISDYNADD_Msk         (1UL << SCnSCB_ACTLR_DISDYNADD_Pos)         /*!< ACTLR: DISDYNADD Mask */\n\n#define SCnSCB_ACTLR_DISISSCH1_Pos         21U                                         /*!< ACTLR: DISISSCH1 Position */\n#define SCnSCB_ACTLR_DISISSCH1_Msk         (0x1FUL << SCnSCB_ACTLR_DISISSCH1_Pos)      /*!< ACTLR: DISISSCH1 Mask */\n\n#define SCnSCB_ACTLR_DISDI_Pos             16U                                         /*!< ACTLR: DISDI Position */\n#define SCnSCB_ACTLR_DISDI_Msk             (0x1FUL << SCnSCB_ACTLR_DISDI_Pos)          /*!< ACTLR: DISDI Mask */\n\n#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos     15U                                         /*!< ACTLR: DISCRITAXIRUR Position */\n#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk     (1UL << SCnSCB_ACTLR_DISCRITAXIRUR_Pos)     /*!< ACTLR: DISCRITAXIRUR Mask */\n\n#define SCnSCB_ACTLR_DISBTACALLOC_Pos      14U                                         /*!< ACTLR: DISBTACALLOC Position */\n#define SCnSCB_ACTLR_DISBTACALLOC_Msk      (1UL << SCnSCB_ACTLR_DISBTACALLOC_Pos)      /*!< ACTLR: DISBTACALLOC Mask */\n\n#define SCnSCB_ACTLR_DISBTACREAD_Pos       13U                                         /*!< ACTLR: DISBTACREAD Position */\n#define SCnSCB_ACTLR_DISBTACREAD_Msk       (1UL << SCnSCB_ACTLR_DISBTACREAD_Pos)       /*!< ACTLR: DISBTACREAD Mask */\n\n#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos    12U                                         /*!< ACTLR: DISITMATBFLUSH Position */\n#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk    (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos)    /*!< ACTLR: DISITMATBFLUSH Mask */\n\n#define SCnSCB_ACTLR_DISRAMODE_Pos         11U                                         /*!< ACTLR: DISRAMODE Position */\n#define SCnSCB_ACTLR_DISRAMODE_Msk         (1UL << SCnSCB_ACTLR_DISRAMODE_Pos)         /*!< ACTLR: DISRAMODE Mask */\n\n#define SCnSCB_ACTLR_FPEXCODIS_Pos         10U                                         /*!< ACTLR: FPEXCODIS Position */\n#define SCnSCB_ACTLR_FPEXCODIS_Msk         (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos)         /*!< ACTLR: FPEXCODIS Mask */\n\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED3[981U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 (  W)  Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x018 (R/ )  Media and FP Feature Register 2 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/* Media and FP Feature Register 2 Definitions */\n\n#define FPU_MVFR2_VFP_Misc_Pos              4U                                            /*!< MVFR2: VFP Misc bits Position */\n#define FPU_MVFR2_VFP_Misc_Msk             (0xFUL << FPU_MVFR2_VFP_Misc_Pos)              /*!< MVFR2: VFP Misc bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n#define FPU_BASE            (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit */\n#define FPU                 ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit */\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n#define EXC_RETURN_HANDLER_FPU     (0xFFFFFFE1UL)     /* return to Handler mode, uses MSP after return, restore floating-point state */\n#define EXC_RETURN_THREAD_MSP_FPU  (0xFFFFFFE9UL)     /* return to Thread mode, uses MSP after return, restore floating-point state  */\n#define EXC_RETURN_THREAD_PSP_FPU  (0xFFFFFFEDUL)     /* return to Thread mode, uses PSP after return, restore floating-point state  */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]                = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]                >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = SCB->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################  Cache functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_CacheFunctions Cache Functions\n  \\brief    Functions that configure Instruction and Data cache.\n  @{\n */\n\n/* Cache Size ID Register Macros */\n#define CCSIDR_WAYS(x)         (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos)\n#define CCSIDR_SETS(x)         (((x) & SCB_CCSIDR_NUMSETS_Msk      ) >> SCB_CCSIDR_NUMSETS_Pos      )\n\n#define __SCB_DCACHE_LINE_SIZE  32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */\n#define __SCB_ICACHE_LINE_SIZE  32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */\n\n/**\n  \\brief   Enable I-Cache\n  \\details Turns on I-Cache\n  */\n__STATIC_FORCEINLINE void SCB_EnableICache (void)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    if (SCB->CCR & SCB_CCR_IC_Msk) return;  /* return if ICache is already enabled */\n\n    __DSB();\n    __ISB();\n    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */\n    __DSB();\n    __ISB();\n    SCB->CCR |=  (uint32_t)SCB_CCR_IC_Msk;  /* enable I-Cache */\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Disable I-Cache\n  \\details Turns off I-Cache\n  */\n__STATIC_FORCEINLINE void SCB_DisableICache (void)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    __DSB();\n    __ISB();\n    SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk;  /* disable I-Cache */\n    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Invalidate I-Cache\n  \\details Invalidates I-Cache\n  */\n__STATIC_FORCEINLINE void SCB_InvalidateICache (void)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    __DSB();\n    __ISB();\n    SCB->ICIALLU = 0UL;\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   I-Cache Invalidate by address\n  \\details Invalidates I-Cache for the given address.\n           I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity.\n           I-Cache memory blocks which are part of given address + given size are invalidated.\n  \\param[in]   addr    address\n  \\param[in]   isize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int32_t isize)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    if ( isize > 0 ) {\n       int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */;\n\n      __DSB();\n\n      do {\n        SCB->ICIMVAU = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr += __SCB_ICACHE_LINE_SIZE;\n        op_size -= __SCB_ICACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n\n/**\n  \\brief   Enable D-Cache\n  \\details Turns on D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_EnableDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    if (SCB->CCR & SCB_CCR_DC_Msk) return;  /* return if DCache is already enabled */\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |\n                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n    __DSB();\n\n    SCB->CCR |=  (uint32_t)SCB_CCR_DC_Msk;  /* enable D-Cache */\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Disable D-Cache\n  \\details Turns off D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_DisableDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk;  /* disable D-Cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* clean & invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |\n                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Invalidate D-Cache\n  \\details Invalidates D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_InvalidateDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |\n                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Clean D-Cache\n  \\details Cleans D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_CleanDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* clean D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) |\n                      ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Clean & Invalidate D-Cache\n  \\details Cleans and Invalidates D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* clean & invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |\n                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   D-Cache Invalidate by address\n  \\details Invalidates D-Cache for the given address.\n           D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity.\n           D-Cache memory blocks which are part of given address + given size are invalidated.\n  \\param[in]   addr    address\n  \\param[in]   dsize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    if ( dsize > 0 ) { \n       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;\n    \n      __DSB();\n\n      do {\n        SCB->DCIMVAC = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr += __SCB_DCACHE_LINE_SIZE;\n        op_size -= __SCB_DCACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n\n/**\n  \\brief   D-Cache Clean by address\n  \\details Cleans D-Cache for the given address\n           D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity.\n           D-Cache memory blocks which are part of given address + given size are cleaned.\n  \\param[in]   addr    address\n  \\param[in]   dsize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    if ( dsize > 0 ) { \n       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;\n    \n      __DSB();\n\n      do {\n        SCB->DCCMVAC = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr += __SCB_DCACHE_LINE_SIZE;\n        op_size -= __SCB_DCACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n\n/**\n  \\brief   D-Cache Clean and Invalidate by address\n  \\details Cleans and invalidates D_Cache for the given address\n           D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity.\n           D-Cache memory blocks which are part of given address + given size are cleaned and invalidated.\n  \\param[in]   addr    address (aligned to 32-byte boundary)\n  \\param[in]   dsize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    if ( dsize > 0 ) { \n       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;\n    \n      __DSB();\n\n      do {\n        SCB->DCCIMVAC = op_addr;            /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr +=          __SCB_DCACHE_LINE_SIZE;\n        op_size -=          __SCB_DCACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n/*@} end of CMSIS_Core_CacheFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM7_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_sc000.h",
    "content": "/**************************************************************************//**\n * @file     core_sc000.h\n * @brief    CMSIS SC000 Core Peripheral Access Layer Header File\n * @version  V5.0.6\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_SC000_H_GENERIC\n#define __CORE_SC000_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup SC000\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS SC000 definitions */\n#define __SC000_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __SC000_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                 /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __SC000_CMSIS_VERSION       ((__SC000_CMSIS_VERSION_MAIN << 16U) | \\\n                                      __SC000_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_SC                 (000U)                                   /*!< Cortex secure core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC000_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_SC000_H_DEPENDANT\n#define __CORE_SC000_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __SC000_REV\n    #define __SC000_REV             0x0000U\n    #warning \"__SC000_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group SC000 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n        uint32_t RESERVED1[154U];\n  __IOM uint32_t SFCR;                   /*!< Offset: 0x290 (R/W)  Security Features Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n} MPU_Type;\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   8U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << MPU_RBAR_ADDR_Pos)              /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the SC000 header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n/*#define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping   not available for SC000 */\n/*#define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping   not available for SC000 */\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for SC000 */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  /* ARM Application Note 321 states that the M0 and M0+ do not require the architectural barrier - assume SC000 is the same */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC000_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/core_sc300.h",
    "content": "/**************************************************************************//**\n * @file     core_sc300.h\n * @brief    CMSIS SC300 Core Peripheral Access Layer Header File\n * @version  V5.0.8\n * @date     31. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_SC300_H_GENERIC\n#define __CORE_SC300_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup SC3000\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS SC300 definitions */\n#define __SC300_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __SC300_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                 /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __SC300_CMSIS_VERSION       ((__SC300_CMSIS_VERSION_MAIN << 16U) | \\\n                                      __SC300_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_SC                 (300U)                                   /*!< Cortex secure core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC300_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_SC300_H_DEPENDANT\n#define __CORE_SC300_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __SC300_REV\n    #define __SC300_REV               0x0000U\n    #warning \"__SC300_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group SC300 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t _reserved1:8;               /*!< bit: 16..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[5U];\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n        uint32_t RESERVED1[129U];\n  __IOM uint32_t SFCR;                   /*!< Offset: 0x290 (R/W)  Security Features Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLBASE_Pos               29U                                            /*!< SCB VTOR: TBLBASE Position */\n#define SCB_VTOR_TBLBASE_Msk               (1UL << SCB_VTOR_TBLBASE_Pos)                  /*!< SCB VTOR: TBLBASE Mask */\n\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */\n#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M3 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC300_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/mpu_armv7.h",
    "content": "/******************************************************************************\n * @file     mpu_armv7.h\n * @brief    CMSIS MPU API for Armv7-M MPU\n * @version  V5.1.0\n * @date     08. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n \n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header    /* treat file as system include file */\n#endif\n \n#ifndef ARM_MPU_ARMV7_H\n#define ARM_MPU_ARMV7_H\n\n#define ARM_MPU_REGION_SIZE_32B      ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes\n#define ARM_MPU_REGION_SIZE_64B      ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes\n#define ARM_MPU_REGION_SIZE_128B     ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes\n#define ARM_MPU_REGION_SIZE_256B     ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes\n#define ARM_MPU_REGION_SIZE_512B     ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes\n#define ARM_MPU_REGION_SIZE_1KB      ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte\n#define ARM_MPU_REGION_SIZE_2KB      ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes\n#define ARM_MPU_REGION_SIZE_4KB      ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes\n#define ARM_MPU_REGION_SIZE_8KB      ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes\n#define ARM_MPU_REGION_SIZE_16KB     ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes\n#define ARM_MPU_REGION_SIZE_32KB     ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes\n#define ARM_MPU_REGION_SIZE_64KB     ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes\n#define ARM_MPU_REGION_SIZE_128KB    ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes\n#define ARM_MPU_REGION_SIZE_256KB    ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes\n#define ARM_MPU_REGION_SIZE_512KB    ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes\n#define ARM_MPU_REGION_SIZE_1MB      ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte\n#define ARM_MPU_REGION_SIZE_2MB      ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes\n#define ARM_MPU_REGION_SIZE_4MB      ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes\n#define ARM_MPU_REGION_SIZE_8MB      ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes\n#define ARM_MPU_REGION_SIZE_16MB     ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes\n#define ARM_MPU_REGION_SIZE_32MB     ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes\n#define ARM_MPU_REGION_SIZE_64MB     ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes\n#define ARM_MPU_REGION_SIZE_128MB    ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes\n#define ARM_MPU_REGION_SIZE_256MB    ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes\n#define ARM_MPU_REGION_SIZE_512MB    ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes\n#define ARM_MPU_REGION_SIZE_1GB      ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte\n#define ARM_MPU_REGION_SIZE_2GB      ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes\n#define ARM_MPU_REGION_SIZE_4GB      ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes\n\n#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access\n#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only\n#define ARM_MPU_AP_URO  2U ///!< MPU Access Permission unprivileged access read-only\n#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access\n#define ARM_MPU_AP_PRO  5U ///!< MPU Access Permission privileged access read-only\n#define ARM_MPU_AP_RO   6U ///!< MPU Access Permission read-only access\n\n/** MPU Region Base Address Register Value\n*\n* \\param Region The region to be configured, number 0 to 15.\n* \\param BaseAddress The base address for the region.\n*/\n#define ARM_MPU_RBAR(Region, BaseAddress) \\\n  (((BaseAddress) & MPU_RBAR_ADDR_Msk) |  \\\n   ((Region) & MPU_RBAR_REGION_Msk)    |  \\\n   (MPU_RBAR_VALID_Msk))\n\n/**\n* MPU Memory Access Attributes\n* \n* \\param TypeExtField      Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral.\n* \\param IsShareable       Region is shareable between multiple bus masters.\n* \\param IsCacheable       Region is cacheable, i.e. its value may be kept in cache.\n* \\param IsBufferable      Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy.\n*/  \n#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable)   \\\n  ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk)                  | \\\n   (((IsShareable)  << MPU_RASR_S_Pos)   & MPU_RASR_S_Msk)                    | \\\n   (((IsCacheable)  << MPU_RASR_C_Pos)   & MPU_RASR_C_Msk)                    | \\\n   (((IsBufferable) << MPU_RASR_B_Pos)   & MPU_RASR_B_Msk))\n\n/**\n* MPU Region Attribute and Size Register Value\n* \n* \\param DisableExec       Instruction access disable bit, 1= disable instruction fetches.\n* \\param AccessPermission  Data access permissions, allows you to configure read/write access for User and Privileged mode.\n* \\param AccessAttributes  Memory access attribution, see \\ref ARM_MPU_ACCESS_.\n* \\param SubRegionDisable  Sub-region disable field.\n* \\param Size              Region size of the region to be configured, for example 4K, 8K.\n*/\n#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size)    \\\n  ((((DisableExec)      << MPU_RASR_XN_Pos)   & MPU_RASR_XN_Msk)                                  | \\\n   (((AccessPermission) << MPU_RASR_AP_Pos)   & MPU_RASR_AP_Msk)                                  | \\\n   (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \\\n   (((SubRegionDisable) << MPU_RASR_SRD_Pos)  & MPU_RASR_SRD_Msk)                                 | \\\n   (((Size)             << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk)                                | \\\n   (((MPU_RASR_ENABLE_Msk))))\n\n/**\n* MPU Region Attribute and Size Register Value\n* \n* \\param DisableExec       Instruction access disable bit, 1= disable instruction fetches.\n* \\param AccessPermission  Data access permissions, allows you to configure read/write access for User and Privileged mode.\n* \\param TypeExtField      Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral.\n* \\param IsShareable       Region is shareable between multiple bus masters.\n* \\param IsCacheable       Region is cacheable, i.e. its value may be kept in cache.\n* \\param IsBufferable      Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy.\n* \\param SubRegionDisable  Sub-region disable field.\n* \\param Size              Region size of the region to be configured, for example 4K, 8K.\n*/                         \n#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \\\n  ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size)\n\n/**\n* MPU Memory Access Attribute for strongly ordered memory.\n*  - TEX: 000b\n*  - Shareable\n*  - Non-cacheable\n*  - Non-bufferable\n*/ \n#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U)\n\n/**\n* MPU Memory Access Attribute for device memory.\n*  - TEX: 000b (if shareable) or 010b (if non-shareable)\n*  - Shareable or non-shareable\n*  - Non-cacheable\n*  - Bufferable (if shareable) or non-bufferable (if non-shareable)\n*\n* \\param IsShareable Configures the device memory as shareable or non-shareable.\n*/ \n#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U))\n\n/**\n* MPU Memory Access Attribute for normal memory.\n*  - TEX: 1BBb (reflecting outer cacheability rules)\n*  - Shareable or non-shareable\n*  - Cacheable or non-cacheable (reflecting inner cacheability rules)\n*  - Bufferable or non-bufferable (reflecting inner cacheability rules)\n*\n* \\param OuterCp Configures the outer cache policy.\n* \\param InnerCp Configures the inner cache policy.\n* \\param IsShareable Configures the memory as shareable or non-shareable.\n*/ \n#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U))\n\n/**\n* MPU Memory Access Attribute non-cacheable policy.\n*/\n#define ARM_MPU_CACHEP_NOCACHE 0U\n\n/**\n* MPU Memory Access Attribute write-back, write and read allocate policy.\n*/\n#define ARM_MPU_CACHEP_WB_WRA 1U\n\n/**\n* MPU Memory Access Attribute write-through, no write allocate policy.\n*/\n#define ARM_MPU_CACHEP_WT_NWA 2U\n\n/**\n* MPU Memory Access Attribute write-back, no write allocate policy.\n*/\n#define ARM_MPU_CACHEP_WB_NWA 3U\n\n\n/**\n* Struct for a single MPU Region\n*/\ntypedef struct {\n  uint32_t RBAR; //!< The region base address register value (RBAR)\n  uint32_t RASR; //!< The region attribute and size register value (RASR) \\ref MPU_RASR\n} ARM_MPU_Region_t;\n    \n/** Enable the MPU.\n* \\param MPU_Control Default access permissions for unconfigured regions.\n*/\n__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)\n{\n  MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  __DSB();\n  __ISB();\n}\n\n/** Disable the MPU.\n*/\n__STATIC_INLINE void ARM_MPU_Disable(void)\n{\n  __DMB();\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  MPU->CTRL  &= ~MPU_CTRL_ENABLE_Msk;\n}\n\n/** Clear and disable the given MPU region.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)\n{\n  MPU->RNR = rnr;\n  MPU->RASR = 0U;\n}\n\n/** Configure an MPU region.\n* \\param rbar Value for RBAR register.\n* \\param rsar Value for RSAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr)\n{\n  MPU->RBAR = rbar;\n  MPU->RASR = rasr;\n}\n\n/** Configure the given MPU region.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rsar Value for RSAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr)\n{\n  MPU->RNR = rnr;\n  MPU->RBAR = rbar;\n  MPU->RASR = rasr;\n}\n\n/** Memcopy with strictly ordered memory access, e.g. for register targets.\n* \\param dst Destination data is copied to.\n* \\param src Source data is copied from.\n* \\param len Amount of data words to be copied.\n*/\n__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len)\n{\n  uint32_t i;\n  for (i = 0U; i < len; ++i) \n  {\n    dst[i] = src[i];\n  }\n}\n\n/** Load the given number of MPU regions from a table.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U;\n  while (cnt > MPU_TYPE_RALIASES) {\n    ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize);\n    table += MPU_TYPE_RALIASES;\n    cnt -= MPU_TYPE_RALIASES;\n  }\n  ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize);\n}\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/mpu_armv8.h",
    "content": "/******************************************************************************\n * @file     mpu_armv8.h\n * @brief    CMSIS MPU API for Armv8-M and Armv8.1-M MPU\n * @version  V5.1.0\n * @date     08. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header    /* treat file as system include file */\n#endif\n\n#ifndef ARM_MPU_ARMV8_H\n#define ARM_MPU_ARMV8_H\n\n/** \\brief Attribute for device memory (outer only) */\n#define ARM_MPU_ATTR_DEVICE                           ( 0U )\n\n/** \\brief Attribute for non-cacheable, normal memory */\n#define ARM_MPU_ATTR_NON_CACHEABLE                    ( 4U )\n\n/** \\brief Attribute for normal memory (outer and inner)\n* \\param NT Non-Transient: Set to 1 for non-transient data.\n* \\param WB Write-Back: Set to 1 to use write-back update policy.\n* \\param RA Read Allocation: Set to 1 to use cache allocation on read miss.\n* \\param WA Write Allocation: Set to 1 to use cache allocation on write miss.\n*/\n#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \\\n  (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U))\n\n/** \\brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U)\n\n/** \\brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_nGnRE  (1U)\n\n/** \\brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_nGRE   (2U)\n\n/** \\brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_GRE    (3U)\n\n/** \\brief Memory Attribute\n* \\param O Outer memory attributes\n* \\param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes\n*/\n#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U)))\n\n/** \\brief Normal memory non-shareable  */\n#define ARM_MPU_SH_NON   (0U)\n\n/** \\brief Normal memory outer shareable  */\n#define ARM_MPU_SH_OUTER (2U)\n\n/** \\brief Normal memory inner shareable  */\n#define ARM_MPU_SH_INNER (3U)\n\n/** \\brief Memory access permissions\n* \\param RO Read-Only: Set to 1 for read-only memory.\n* \\param NP Non-Privileged: Set to 1 for non-privileged memory.\n*/\n#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U))\n\n/** \\brief Region Base Address Register value\n* \\param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned.\n* \\param SH Defines the Shareability domain for this memory region.\n* \\param RO Read-Only: Set to 1 for a read-only memory region.\n* \\param NP Non-Privileged: Set to 1 for a non-privileged memory region.\n* \\oaram XN eXecute Never: Set to 1 for a non-executable memory region.\n*/\n#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \\\n  ((BASE & MPU_RBAR_BASE_Msk) | \\\n  ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \\\n  ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \\\n  ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk))\n\n/** \\brief Region Limit Address Register value\n* \\param LIMIT The limit address bits [31:5] for this memory region. The value is one extended.\n* \\param IDX The attribute index to be associated with this memory region.\n*/\n#define ARM_MPU_RLAR(LIMIT, IDX) \\\n  ((LIMIT & MPU_RLAR_LIMIT_Msk) | \\\n  ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \\\n  (MPU_RLAR_EN_Msk))\n\n#if defined(MPU_RLAR_PXN_Pos)\n  \n/** \\brief Region Limit Address Register with PXN value\n* \\param LIMIT The limit address bits [31:5] for this memory region. The value is one extended.\n* \\param PXN Privileged execute never. Defines whether code can be executed from this privileged region.\n* \\param IDX The attribute index to be associated with this memory region.\n*/\n#define ARM_MPU_RLAR_PXN(LIMIT, PXN, IDX) \\\n  ((LIMIT & MPU_RLAR_LIMIT_Msk) | \\\n  ((PXN << MPU_RLAR_PXN_Pos) & MPU_RLAR_PXN_Msk) | \\\n  ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \\\n  (MPU_RLAR_EN_Msk))\n  \n#endif\n\n/**\n* Struct for a single MPU Region\n*/\ntypedef struct {\n  uint32_t RBAR;                   /*!< Region Base Address Register value */\n  uint32_t RLAR;                   /*!< Region Limit Address Register value */\n} ARM_MPU_Region_t;\n    \n/** Enable the MPU.\n* \\param MPU_Control Default access permissions for unconfigured regions.\n*/\n__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)\n{\n  MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  __DSB();\n  __ISB();\n}\n\n/** Disable the MPU.\n*/\n__STATIC_INLINE void ARM_MPU_Disable(void)\n{\n  __DMB();\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  MPU->CTRL  &= ~MPU_CTRL_ENABLE_Msk;\n}\n\n#ifdef MPU_NS\n/** Enable the Non-secure MPU.\n* \\param MPU_Control Default access permissions for unconfigured regions.\n*/\n__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control)\n{\n  MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  __DSB();\n  __ISB();\n}\n\n/** Disable the Non-secure MPU.\n*/\n__STATIC_INLINE void ARM_MPU_Disable_NS(void)\n{\n  __DMB();\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  MPU_NS->CTRL  &= ~MPU_CTRL_ENABLE_Msk;\n}\n#endif\n\n/** Set the memory attribute encoding to the given MPU.\n* \\param mpu Pointer to the MPU to be configured.\n* \\param idx The attribute index to be set [0-7]\n* \\param attr The attribute value to be set.\n*/\n__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr)\n{\n  const uint8_t reg = idx / 4U;\n  const uint32_t pos = ((idx % 4U) * 8U);\n  const uint32_t mask = 0xFFU << pos;\n  \n  if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) {\n    return; // invalid index\n  }\n  \n  mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask));\n}\n\n/** Set the memory attribute encoding.\n* \\param idx The attribute index to be set [0-7]\n* \\param attr The attribute value to be set.\n*/\n__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr)\n{\n  ARM_MPU_SetMemAttrEx(MPU, idx, attr);\n}\n\n#ifdef MPU_NS\n/** Set the memory attribute encoding to the Non-secure MPU.\n* \\param idx The attribute index to be set [0-7]\n* \\param attr The attribute value to be set.\n*/\n__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr)\n{\n  ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr);\n}\n#endif\n\n/** Clear and disable the given MPU region of the given MPU.\n* \\param mpu Pointer to MPU to be used.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr)\n{\n  mpu->RNR = rnr;\n  mpu->RLAR = 0U;\n}\n\n/** Clear and disable the given MPU region.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)\n{\n  ARM_MPU_ClrRegionEx(MPU, rnr);\n}\n\n#ifdef MPU_NS\n/** Clear and disable the given Non-secure MPU region.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr)\n{  \n  ARM_MPU_ClrRegionEx(MPU_NS, rnr);\n}\n#endif\n\n/** Configure the given MPU region of the given MPU.\n* \\param mpu Pointer to MPU to be used.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rlar Value for RLAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar)\n{\n  mpu->RNR = rnr;\n  mpu->RBAR = rbar;\n  mpu->RLAR = rlar;\n}\n\n/** Configure the given MPU region.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rlar Value for RLAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar)\n{\n  ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar);\n}\n\n#ifdef MPU_NS\n/** Configure the given Non-secure MPU region.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rlar Value for RLAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar)\n{\n  ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar);  \n}\n#endif\n\n/** Memcopy with strictly ordered memory access, e.g. for register targets.\n* \\param dst Destination data is copied to.\n* \\param src Source data is copied from.\n* \\param len Amount of data words to be copied.\n*/\n__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len)\n{\n  uint32_t i;\n  for (i = 0U; i < len; ++i) \n  {\n    dst[i] = src[i];\n  }\n}\n\n/** Load the given number of MPU regions from a table to the given MPU.\n* \\param mpu Pointer to the MPU registers to be used.\n* \\param rnr First region number to be configured.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U;\n  if (cnt == 1U) {\n    mpu->RNR = rnr;\n    ARM_MPU_OrderedMemcpy(&(mpu->RBAR), &(table->RBAR), rowWordSize);\n  } else {\n    uint32_t rnrBase   = rnr & ~(MPU_TYPE_RALIASES-1U);\n    uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES;\n    \n    mpu->RNR = rnrBase;\n    while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) {\n      uint32_t c = MPU_TYPE_RALIASES - rnrOffset;\n      ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize);\n      table += c;\n      cnt -= c;\n      rnrOffset = 0U;\n      rnrBase += MPU_TYPE_RALIASES;\n      mpu->RNR = rnrBase;\n    }\n    \n    ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize);\n  }\n}\n\n/** Load the given number of MPU regions from a table.\n* \\param rnr First region number to be configured.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  ARM_MPU_LoadEx(MPU, rnr, table, cnt);\n}\n\n#ifdef MPU_NS\n/** Load the given number of MPU regions from a table to the Non-secure MPU.\n* \\param rnr First region number to be configured.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt);\n}\n#endif\n\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Include/tz_context.h",
    "content": "/******************************************************************************\n * @file     tz_context.h\n * @brief    Context Management for Armv8-M TrustZone\n * @version  V1.0.1\n * @date     10. January 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef TZ_CONTEXT_H\n#define TZ_CONTEXT_H\n \n#include <stdint.h>\n \n#ifndef TZ_MODULEID_T\n#define TZ_MODULEID_T\n/// \\details Data type that identifies secure software modules called by a process.\ntypedef uint32_t TZ_ModuleId_t;\n#endif\n \n/// \\details TZ Memory ID identifies an allocated memory slot.\ntypedef uint32_t TZ_MemoryId_t;\n  \n/// Initialize secure context memory system\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_InitContextSystem_S (void);\n \n/// Allocate context memory for calling secure software modules in TrustZone\n/// \\param[in]  module   identifies software modules called from non-secure mode\n/// \\return value != 0 id TrustZone memory slot identifier\n/// \\return value 0    no memory available or internal error\nTZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module);\n \n/// Free context memory that was previously allocated with \\ref TZ_AllocModuleContext_S\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id);\n \n/// Load secure context (called on RTOS thread context switch)\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_LoadContext_S (TZ_MemoryId_t id);\n \n/// Store secure context (called on RTOS thread context switch)\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_StoreContext_S (TZ_MemoryId_t id);\n \n#endif  // TZ_CONTEXT_H\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Template/ARMv8-M/main_s.c",
    "content": "/******************************************************************************\n * @file     main_s.c\n * @brief    Code template for secure main function\n * @version  V1.1.1\n * @date     10. January 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2013-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Use CMSE intrinsics */\n#include <arm_cmse.h>\n \n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n \n/* TZ_START_NS: Start address of non-secure application */\n#ifndef TZ_START_NS\n#define TZ_START_NS (0x200000U)\n#endif\n \n/* typedef for non-secure callback functions */\ntypedef void (*funcptr_void) (void) __attribute__((cmse_nonsecure_call));\n \n/* Secure main() */\nint main(void) {\n  funcptr_void NonSecure_ResetHandler;\n \n  /* Add user setup code for secure part here*/\n \n  /* Set non-secure main stack (MSP_NS) */\n  __TZ_set_MSP_NS(*((uint32_t *)(TZ_START_NS)));\n \n  /* Get non-secure reset handler */\n  NonSecure_ResetHandler = (funcptr_void)(*((uint32_t *)((TZ_START_NS) + 4U)));\n \n  /* Start non-secure state software application */\n  NonSecure_ResetHandler();\n \n  /* Non-secure software does not return, this code is not executed */\n  while (1) {\n    __NOP();\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core/Template/ARMv8-M/tz_context.c",
    "content": "/******************************************************************************\n * @file     tz_context.c\n * @brief    Context Management for Armv8-M TrustZone - Sample implementation\n * @version  V1.1.1\n * @date     10. January 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2016-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n#include \"tz_context.h\"\n\n/// Number of process slots (threads may call secure library code)\n#ifndef TZ_PROCESS_STACK_SLOTS\n#define TZ_PROCESS_STACK_SLOTS     8U\n#endif\n\n/// Stack size of the secure library code\n#ifndef TZ_PROCESS_STACK_SIZE\n#define TZ_PROCESS_STACK_SIZE      256U\n#endif\n\ntypedef struct {\n  uint32_t sp_top;      // stack space top\n  uint32_t sp_limit;    // stack space limit\n  uint32_t sp;          // current stack pointer\n} stack_info_t;\n\nstatic stack_info_t ProcessStackInfo  [TZ_PROCESS_STACK_SLOTS];\nstatic uint64_t     ProcessStackMemory[TZ_PROCESS_STACK_SLOTS][TZ_PROCESS_STACK_SIZE/8U];\nstatic uint32_t     ProcessStackFreeSlot = 0xFFFFFFFFU;\n\n\n/// Initialize secure context memory system\n/// \\return execution status (1: success, 0: error)\n__attribute__((cmse_nonsecure_entry))\nuint32_t TZ_InitContextSystem_S (void) {\n  uint32_t n;\n\n  if (__get_IPSR() == 0U) {\n    return 0U;  // Thread Mode\n  }\n\n  for (n = 0U; n < TZ_PROCESS_STACK_SLOTS; n++) {\n    ProcessStackInfo[n].sp = 0U;\n    ProcessStackInfo[n].sp_limit = (uint32_t)&ProcessStackMemory[n];\n    ProcessStackInfo[n].sp_top   = (uint32_t)&ProcessStackMemory[n] + TZ_PROCESS_STACK_SIZE;\n    *((uint32_t *)ProcessStackMemory[n]) = n + 1U;\n  }\n  *((uint32_t *)ProcessStackMemory[--n]) = 0xFFFFFFFFU;\n\n  ProcessStackFreeSlot = 0U;\n\n  // Default process stack pointer and stack limit\n  __set_PSPLIM((uint32_t)ProcessStackMemory);\n  __set_PSP   ((uint32_t)ProcessStackMemory);\n\n  // Privileged Thread Mode using PSP\n  __set_CONTROL(0x02U);\n\n  return 1U;    // Success\n}\n\n\n/// Allocate context memory for calling secure software modules in TrustZone\n/// \\param[in]  module   identifies software modules called from non-secure mode\n/// \\return value != 0 id TrustZone memory slot identifier\n/// \\return value 0    no memory available or internal error\n__attribute__((cmse_nonsecure_entry))\nTZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module) {\n  uint32_t slot;\n\n  (void)module; // Ignore (fixed Stack size)\n\n  if (__get_IPSR() == 0U) {\n    return 0U;  // Thread Mode\n  }\n\n  if (ProcessStackFreeSlot == 0xFFFFFFFFU) {\n    return 0U;  // No slot available\n  }\n\n  slot = ProcessStackFreeSlot;\n  ProcessStackFreeSlot = *((uint32_t *)ProcessStackMemory[slot]);\n\n  ProcessStackInfo[slot].sp = ProcessStackInfo[slot].sp_top;\n\n  return (slot + 1U);\n}\n\n\n/// Free context memory that was previously allocated with \\ref TZ_AllocModuleContext_S\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\n__attribute__((cmse_nonsecure_entry))\nuint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id) {\n  uint32_t slot;\n\n  if (__get_IPSR() == 0U) {\n    return 0U;  // Thread Mode\n  }\n\n  if ((id == 0U) || (id > TZ_PROCESS_STACK_SLOTS)) {\n    return 0U;  // Invalid ID\n  }\n\n  slot = id - 1U;\n\n  if (ProcessStackInfo[slot].sp == 0U) {\n    return 0U;  // Inactive slot\n  }\n  ProcessStackInfo[slot].sp = 0U;\n\n  *((uint32_t *)ProcessStackMemory[slot]) = ProcessStackFreeSlot;\n  ProcessStackFreeSlot = slot;\n\n  return 1U;    // Success\n}\n\n\n/// Load secure context (called on RTOS thread context switch)\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\n__attribute__((cmse_nonsecure_entry))\nuint32_t TZ_LoadContext_S (TZ_MemoryId_t id) {\n  uint32_t slot;\n\n  if ((__get_IPSR() == 0U) || ((__get_CONTROL() & 2U) == 0U)) {\n    return 0U;  // Thread Mode or using Main Stack for threads\n  }\n\n  if ((id == 0U) || (id > TZ_PROCESS_STACK_SLOTS)) {\n    return 0U;  // Invalid ID\n  }\n\n  slot = id - 1U;\n\n  if (ProcessStackInfo[slot].sp == 0U) {\n    return 0U;  // Inactive slot\n  }\n\n  // Setup process stack pointer and stack limit\n  __set_PSPLIM(ProcessStackInfo[slot].sp_limit);\n  __set_PSP   (ProcessStackInfo[slot].sp);\n\n  return 1U;    // Success\n}\n\n\n/// Store secure context (called on RTOS thread context switch)\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\n__attribute__((cmse_nonsecure_entry))\nuint32_t TZ_StoreContext_S (TZ_MemoryId_t id) {\n  uint32_t slot;\n  uint32_t sp;\n\n  if ((__get_IPSR() == 0U) || ((__get_CONTROL() & 2U) == 0U)) {\n    return 0U;  // Thread Mode or using Main Stack for threads\n  }\n\n  if ((id == 0U) || (id > TZ_PROCESS_STACK_SLOTS)) {\n    return 0U;  // Invalid ID\n  }\n\n  slot = id - 1U;\n\n  if (ProcessStackInfo[slot].sp == 0U) {\n    return 0U;  // Inactive slot\n  }\n\n  sp = __get_PSP();\n  if ((sp < ProcessStackInfo[slot].sp_limit) ||\n      (sp > ProcessStackInfo[slot].sp_top)) {\n    return 0U;  // SP out of range\n  }\n  ProcessStackInfo[slot].sp = sp;\n\n  // Default process stack pointer and stack limit\n  __set_PSPLIM((uint32_t)ProcessStackMemory);\n  __set_PSP   ((uint32_t)ProcessStackMemory);\n\n  return 1U;    // Success\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/cmsis_armcc.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armcc.h\n * @brief    CMSIS compiler specific macros, functions, instructions\n * @version  V1.0.3\n * @date     15. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_ARMCC_H\n#define __CMSIS_ARMCC_H\n\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677)\n  #error \"Please use Arm Compiler Toolchain V4.0.677 or later!\"\n#endif\n\n/* CMSIS compiler control architecture macros */\n#if (defined (__TARGET_ARCH_7_A ) && (__TARGET_ARCH_7_A  == 1))\n  #define __ARM_ARCH_7A__           1\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __FORCEINLINE\n  #define __FORCEINLINE                          __forceinline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE                   static __forceinline\n#endif\n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __declspec(noreturn)\n#endif\n#ifndef   CMSIS_DEPRECATED\n  #define CMSIS_DEPRECATED                       __attribute__((deprecated))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        __packed struct\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    ((*((__packed uint16_t *)(addr))) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #define __UNALIGNED_UINT16_READ(addr)          (*((const __packed uint16_t *)(addr)))\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    ((*((__packed uint32_t *)(addr))) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #define __UNALIGNED_UINT32_READ(addr)          (*((const __packed uint32_t *)(addr)))\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed))\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __memory_changed()\n#endif\n\n/* ##########################  Core Instruction Access  ######################### */\n/**\n  \\brief   No Operation\n */\n#define __NOP                             __nop\n\n/**\n  \\brief   Wait For Interrupt\n */\n#define __WFI                             __wfi\n\n/**\n  \\brief   Wait For Event\n */\n#define __WFE                             __wfe\n\n/**\n  \\brief   Send Event\n */\n#define __SEV                             __sev\n\n/**\n  \\brief   Instruction Synchronization Barrier\n */\n#define __ISB() do {\\\n                   __schedule_barrier();\\\n                   __isb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Synchronization Barrier\n */\n#define __DSB() do {\\\n                   __schedule_barrier();\\\n                   __dsb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Memory Barrier\n */\n#define __DMB() do {\\\n                   __schedule_barrier();\\\n                   __dmb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV                             __rev\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".rev16_text\"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\n{\n  rev16 r0, r0\n  bx lr\n}\n#endif\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".revsh_text\"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)\n{\n  revsh r0, r0\n  bx lr\n}\n#endif\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n#define __ROR                             __ror\n\n/**\n  \\brief   Breakpoint\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)                     __breakpoint(value)\n\n/**\n  \\brief   Reverse bit order of value\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __RBIT                            __rbit\n\n/**\n  \\brief   Count leading zeros\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n#define __CLZ                             __clz\n\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXB(ptr)                                                        ((uint8_t ) __ldrex(ptr))\n#else\n  #define __LDREXB(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint8_t ) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXH(ptr)                                                        ((uint16_t) __ldrex(ptr))\n#else\n  #define __LDREXH(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint16_t) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXW(ptr)                                                        ((uint32_t ) __ldrex(ptr))\n#else\n  #define __LDREXW(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint32_t ) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXB(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXB(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXH(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXH(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXW(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXW(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX                           __clrex\n\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT                            __ssat\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT                            __usat\n\n/* ###########################  Core Function Access  ########################### */\n\n/**\n  \\brief   Get FPSCR (Floating Point Status/Control)\n  \\return               Floating Point Status/Control register value\n */\n__STATIC_INLINE uint32_t __get_FPSCR(void)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  register uint32_t __regfpscr         __ASM(\"fpscr\");\n  return(__regfpscr);\n#else\n   return(0U);\n#endif\n}\n\n/**\n  \\brief   Set FPSCR (Floating Point Status/Control)\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  register uint32_t __regfpscr         __ASM(\"fpscr\");\n  __regfpscr = (fpscr);\n#else\n  (void)fpscr;\n#endif\n}\n\n/** \\brief  Get CPSR (Current Program Status Register)\n    \\return               CPSR Register value\n */\n__STATIC_INLINE uint32_t __get_CPSR(void)\n{\n  register uint32_t __regCPSR          __ASM(\"cpsr\");\n  return(__regCPSR);\n}\n\n\n/** \\brief  Set CPSR (Current Program Status Register)\n    \\param [in]    cpsr  CPSR value to set\n */\n__STATIC_INLINE void __set_CPSR(uint32_t cpsr)\n{\n  register uint32_t __regCPSR          __ASM(\"cpsr\");\n  __regCPSR = cpsr;\n}\n\n/** \\brief  Get Mode\n    \\return                Processor Mode\n */\n__STATIC_INLINE uint32_t __get_mode(void)\n{\n  return (__get_CPSR() & 0x1FU);\n}\n\n/** \\brief  Set Mode\n    \\param [in]    mode  Mode value to set\n */\n__STATIC_INLINE __ASM void __set_mode(uint32_t mode)\n{\n  MOV  r1, lr\n  MSR  CPSR_C, r0\n  BX   r1\n}\n\n/** \\brief  Get Stack Pointer\n    \\return Stack Pointer\n */\n__STATIC_INLINE __ASM uint32_t __get_SP(void)\n{\n  MOV  r0, sp\n  BX   lr\n}\n\n/** \\brief  Set Stack Pointer\n    \\param [in]    stack  Stack Pointer value to set\n */\n__STATIC_INLINE __ASM void __set_SP(uint32_t stack)\n{\n  MOV  sp, r0\n  BX   lr\n}\n\n\n/** \\brief  Get USR/SYS Stack Pointer\n    \\return USR/SYSStack Pointer\n */\n__STATIC_INLINE __ASM uint32_t __get_SP_usr(void)\n{\n  ARM\n  PRESERVE8\n\n  MRS     R1, CPSR\n  CPS     #0x1F       ;no effect in USR mode\n  MOV     R0, SP\n  MSR     CPSR_c, R1  ;no effect in USR mode\n  ISB\n  BX      LR\n}\n\n/** \\brief  Set USR/SYS Stack Pointer\n    \\param [in]    topOfProcStack  USR/SYS Stack Pointer value to set\n */\n__STATIC_INLINE __ASM void __set_SP_usr(uint32_t topOfProcStack)\n{\n  ARM\n  PRESERVE8\n\n  MRS     R1, CPSR\n  CPS     #0x1F       ;no effect in USR mode\n  MOV     SP, R0\n  MSR     CPSR_c, R1  ;no effect in USR mode\n  ISB\n  BX      LR\n}\n\n/** \\brief  Get FPEXC (Floating Point Exception Control Register)\n    \\return               Floating Point Exception Control Register value\n */\n__STATIC_INLINE uint32_t __get_FPEXC(void)\n{\n#if (__FPU_PRESENT == 1)\n  register uint32_t __regfpexc         __ASM(\"fpexc\");\n  return(__regfpexc);\n#else\n  return(0);\n#endif\n}\n\n/** \\brief  Set FPEXC (Floating Point Exception Control Register)\n    \\param [in]    fpexc  Floating Point Exception Control value to set\n */\n__STATIC_INLINE void __set_FPEXC(uint32_t fpexc)\n{\n#if (__FPU_PRESENT == 1)\n  register uint32_t __regfpexc         __ASM(\"fpexc\");\n  __regfpexc = (fpexc);\n#endif\n}\n\n/*\n * Include common core functions to access Coprocessor 15 registers\n */\n\n#define __get_CP(cp, op1, Rt, CRn, CRm, op2) do { register volatile uint32_t tmp __ASM(\"cp\" # cp \":\" # op1 \":c\" # CRn \":c\" # CRm \":\" # op2); (Rt) = tmp; } while(0)\n#define __set_CP(cp, op1, Rt, CRn, CRm, op2) do { register volatile uint32_t tmp __ASM(\"cp\" # cp \":\" # op1 \":c\" # CRn \":c\" # CRm \":\" # op2); tmp = (Rt); } while(0)\n#define __get_CP64(cp, op1, Rt, CRm) \\\n  do { \\\n    uint32_t ltmp, htmp; \\\n    __ASM volatile(\"MRRC p\" # cp \", \" # op1 \", ltmp, htmp, c\" # CRm); \\\n    (Rt) = ((((uint64_t)htmp) << 32U) | ((uint64_t)ltmp)); \\\n  } while(0)\n\n#define __set_CP64(cp, op1, Rt, CRm) \\\n  do { \\\n    const uint64_t tmp = (Rt); \\\n    const uint32_t ltmp = (uint32_t)(tmp); \\\n    const uint32_t htmp = (uint32_t)(tmp >> 32U); \\\n    __ASM volatile(\"MCRR p\" # cp \", \" # op1 \", ltmp, htmp, c\" # CRm); \\\n  } while(0)\n\n#include \"cmsis_cp15.h\"\n\n/** \\brief  Enable Floating Point Unit\n\n  Critical section, called from undef handler, so systick is disabled\n */\n__STATIC_INLINE __ASM void __FPU_Enable(void)\n{\n        ARM\n\n        //Permit access to VFP/NEON, registers by modifying CPACR\n        MRC     p15,0,R1,c1,c0,2\n        ORR     R1,R1,#0x00F00000\n        MCR     p15,0,R1,c1,c0,2\n\n        //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted\n        ISB\n\n        //Enable VFP/NEON\n        VMRS    R1,FPEXC\n        ORR     R1,R1,#0x40000000\n        VMSR    FPEXC,R1\n\n        //Initialise VFP/NEON registers to 0\n        MOV     R2,#0\n\n        //Initialise D16 registers to 0\n        VMOV    D0, R2,R2\n        VMOV    D1, R2,R2\n        VMOV    D2, R2,R2\n        VMOV    D3, R2,R2\n        VMOV    D4, R2,R2\n        VMOV    D5, R2,R2\n        VMOV    D6, R2,R2\n        VMOV    D7, R2,R2\n        VMOV    D8, R2,R2\n        VMOV    D9, R2,R2\n        VMOV    D10,R2,R2\n        VMOV    D11,R2,R2\n        VMOV    D12,R2,R2\n        VMOV    D13,R2,R2\n        VMOV    D14,R2,R2\n        VMOV    D15,R2,R2\n\n  IF {TARGET_FEATURE_EXTENSION_REGISTER_COUNT} == 32\n        //Initialise D32 registers to 0\n        VMOV    D16,R2,R2\n        VMOV    D17,R2,R2\n        VMOV    D18,R2,R2\n        VMOV    D19,R2,R2\n        VMOV    D20,R2,R2\n        VMOV    D21,R2,R2\n        VMOV    D22,R2,R2\n        VMOV    D23,R2,R2\n        VMOV    D24,R2,R2\n        VMOV    D25,R2,R2\n        VMOV    D26,R2,R2\n        VMOV    D27,R2,R2\n        VMOV    D28,R2,R2\n        VMOV    D29,R2,R2\n        VMOV    D30,R2,R2\n        VMOV    D31,R2,R2\n  ENDIF\n\n        //Initialise FPSCR to a known state\n        VMRS    R1,FPSCR\n        LDR     R2,=0x00086060 //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero.\n        AND     R1,R1,R2\n        VMSR    FPSCR,R1\n\n        BX      LR\n}\n\n#endif /* __CMSIS_ARMCC_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/cmsis_armclang.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armclang.h\n * @brief    CMSIS compiler specific macros, functions, instructions\n * @version  V1.1.1\n * @date     15. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_ARMCLANG_H\n#define __CMSIS_ARMCLANG_H\n\n#pragma clang system_header   /* treat file as system include file */\n\n#ifndef __ARM_COMPAT_H\n#include <arm_compat.h>    /* Compatibility header for Arm Compiler 5 intrinsics */\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __FORCEINLINE\n  #define __FORCEINLINE                          __attribute__((always_inline))\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline\n#endif\n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   CMSIS_DEPRECATED\n  #define CMSIS_DEPRECATED                       __attribute__((deprecated))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed))\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n/* ##########################  Core Instruction Access  ######################### */\n/**\n  \\brief   No Operation\n */\n#define __NOP                             __builtin_arm_nop\n\n/**\n  \\brief   Wait For Interrupt\n */\n#define __WFI                             __builtin_arm_wfi\n\n/**\n  \\brief   Wait For Event\n */\n#define __WFE                             __builtin_arm_wfe\n\n/**\n  \\brief   Send Event\n */\n#define __SEV                             __builtin_arm_sev\n\n/**\n  \\brief   Instruction Synchronization Barrier\n */\n#define __ISB() do {\\\n                   __schedule_barrier();\\\n                   __builtin_arm_isb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Synchronization Barrier\n */\n#define __DSB() do {\\\n                   __schedule_barrier();\\\n                   __builtin_arm_dsb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Memory Barrier\n */\n#define __DMB() do {\\\n                   __schedule_barrier();\\\n                   __builtin_arm_dmb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV(value)   __builtin_bswap32(value)\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV16(value) __ROR(__REV(value), 16)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REVSH(value) (int16_t)__builtin_bswap16(value)\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U)\n  {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)   __ASM volatile (\"bkpt \"#value)\n\n/**\n  \\brief   Reverse bit order of value\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __RBIT          __builtin_arm_rbit\n\n/**\n  \\brief   Count leading zeros\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define __LDREXB        (uint8_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define __LDREXH        (uint16_t)__builtin_arm_ldrex\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define __LDREXW        (uint32_t)__builtin_arm_ldrex\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXB        (uint32_t)__builtin_arm_strex\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXH        (uint32_t)__builtin_arm_strex\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXW        (uint32_t)__builtin_arm_strex\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX             __builtin_arm_clrex\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT             __builtin_arm_ssat\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT             __builtin_arm_usat\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n\n#define     __QADD8                 __builtin_arm_qadd8\n#define     __QSUB8                 __builtin_arm_qsub8\n#define     __QADD16                __builtin_arm_qadd16\n#define     __SHADD16               __builtin_arm_shadd16\n#define     __QSUB16                __builtin_arm_qsub16\n#define     __SHSUB16               __builtin_arm_shsub16\n#define     __QASX                  __builtin_arm_qasx\n#define     __SHASX                 __builtin_arm_shasx\n#define     __QSAX                  __builtin_arm_qsax\n#define     __SHSAX                 __builtin_arm_shsax\n#define     __SXTB16                __builtin_arm_sxtb16\n#define     __SMUAD                 __builtin_arm_smuad\n#define     __SMUADX                __builtin_arm_smuadx\n#define     __SMLAD                 __builtin_arm_smlad\n#define     __SMLADX                __builtin_arm_smladx\n#define     __SMLALD                __builtin_arm_smlald\n#define     __SMLALDX               __builtin_arm_smlaldx\n#define     __SMUSD                 __builtin_arm_smusd\n#define     __SMUSDX                __builtin_arm_smusdx\n#define     __SMLSDX                __builtin_arm_smlsdx\n\n\n\n__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n  int32_t result;\n\n  __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#endif /* (__ARM_FEATURE_DSP == 1) */\n\n/* ###########################  Core Function Access  ########################### */\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n#define __get_FPSCR      __builtin_arm_get_fpscr\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n#define __set_FPSCR      __builtin_arm_set_fpscr\n\n/** \\brief  Get CPSR Register\n    \\return               CPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CPSR(void)\n{\n  uint32_t result;\n  __ASM volatile(\"MRS %0, cpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n/** \\brief  Set CPSR Register\n    \\param [in]    cpsr  CPSR value to set\n */\n__STATIC_FORCEINLINE void __set_CPSR(uint32_t cpsr)\n{\n__ASM volatile (\"MSR cpsr, %0\" : : \"r\" (cpsr) : \"memory\");\n}\n\n/** \\brief  Get Mode\n    \\return                Processor Mode\n */\n__STATIC_FORCEINLINE uint32_t __get_mode(void)\n{\n\treturn (__get_CPSR() & 0x1FU);\n}\n\n/** \\brief  Set Mode\n    \\param [in]    mode  Mode value to set\n */\n__STATIC_FORCEINLINE void __set_mode(uint32_t mode)\n{\n  __ASM volatile(\"MSR  cpsr_c, %0\" : : \"r\" (mode) : \"memory\");\n}\n\n/** \\brief  Get Stack Pointer\n    \\return Stack Pointer value\n */\n__STATIC_FORCEINLINE uint32_t __get_SP()\n{\n  uint32_t result;\n  __ASM volatile(\"MOV  %0, sp\" : \"=r\" (result) : : \"memory\");\n  return result;\n}\n\n/** \\brief  Set Stack Pointer\n    \\param [in]    stack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_SP(uint32_t stack)\n{\n  __ASM volatile(\"MOV  sp, %0\" : : \"r\" (stack) : \"memory\");\n}\n\n/** \\brief  Get USR/SYS Stack Pointer\n    \\return USR/SYS Stack Pointer value\n */\n__STATIC_FORCEINLINE uint32_t __get_SP_usr()\n{\n  uint32_t cpsr;\n  uint32_t result;\n  __ASM volatile(\n    \"MRS     %0, cpsr   \\n\"\n    \"CPS     #0x1F      \\n\" // no effect in USR mode\n    \"MOV     %1, sp     \\n\"\n    \"MSR     cpsr_c, %0 \\n\" // no effect in USR mode\n    \"ISB\" :  \"=r\"(cpsr), \"=r\"(result) : : \"memory\"\n   );\n  return result;\n}\n\n/** \\brief  Set USR/SYS Stack Pointer\n    \\param [in]    topOfProcStack  USR/SYS Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_SP_usr(uint32_t topOfProcStack)\n{\n  uint32_t cpsr;\n  __ASM volatile(\n    \"MRS     %0, cpsr   \\n\"\n    \"CPS     #0x1F      \\n\" // no effect in USR mode\n    \"MOV     sp, %1     \\n\"\n    \"MSR     cpsr_c, %0 \\n\" // no effect in USR mode\n    \"ISB\" : \"=r\"(cpsr) : \"r\" (topOfProcStack) : \"memory\"\n   );\n}\n\n/** \\brief  Get FPEXC\n    \\return               Floating Point Exception Control register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FPEXC(void)\n{\n#if (__FPU_PRESENT == 1)\n  uint32_t result;\n  __ASM volatile(\"VMRS %0, fpexc\" : \"=r\" (result) : : \"memory\");\n  return(result);\n#else\n  return(0);\n#endif\n}\n\n/** \\brief  Set FPEXC\n    \\param [in]    fpexc  Floating Point Exception Control value to set\n */\n__STATIC_FORCEINLINE void __set_FPEXC(uint32_t fpexc)\n{\n#if (__FPU_PRESENT == 1)\n  __ASM volatile (\"VMSR fpexc, %0\" : : \"r\" (fpexc) : \"memory\");\n#endif\n}\n\n/*\n * Include common core functions to access Coprocessor 15 registers\n */\n\n#define __get_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile(\"MRC p\" # cp \", \" # op1 \", %0, c\" # CRn \", c\" # CRm \", \" # op2 : \"=r\" (Rt) : : \"memory\" )\n#define __set_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile(\"MCR p\" # cp \", \" # op1 \", %0, c\" # CRn \", c\" # CRm \", \" # op2 : : \"r\" (Rt) : \"memory\" )\n#define __get_CP64(cp, op1, Rt, CRm)         __ASM volatile(\"MRRC p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : \"=r\" (Rt) : : \"memory\" )\n#define __set_CP64(cp, op1, Rt, CRm)         __ASM volatile(\"MCRR p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : : \"r\" (Rt) : \"memory\" )\n\n#include \"cmsis_cp15.h\"\n\n/** \\brief  Enable Floating Point Unit\n\n  Critical section, called from undef handler, so systick is disabled\n */\n__STATIC_INLINE void __FPU_Enable(void)\n{\n  __ASM volatile(\n    //Permit access to VFP/NEON, registers by modifying CPACR\n    \"        MRC     p15,0,R1,c1,c0,2  \\n\"\n    \"        ORR     R1,R1,#0x00F00000 \\n\"\n    \"        MCR     p15,0,R1,c1,c0,2  \\n\"\n\n    //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted\n    \"        ISB                       \\n\"\n\n    //Enable VFP/NEON\n    \"        VMRS    R1,FPEXC          \\n\"\n    \"        ORR     R1,R1,#0x40000000 \\n\"\n    \"        VMSR    FPEXC,R1          \\n\"\n\n    //Initialise VFP/NEON registers to 0\n    \"        MOV     R2,#0             \\n\"\n\n    //Initialise D16 registers to 0\n    \"        VMOV    D0, R2,R2         \\n\"\n    \"        VMOV    D1, R2,R2         \\n\"\n    \"        VMOV    D2, R2,R2         \\n\"\n    \"        VMOV    D3, R2,R2         \\n\"\n    \"        VMOV    D4, R2,R2         \\n\"\n    \"        VMOV    D5, R2,R2         \\n\"\n    \"        VMOV    D6, R2,R2         \\n\"\n    \"        VMOV    D7, R2,R2         \\n\"\n    \"        VMOV    D8, R2,R2         \\n\"\n    \"        VMOV    D9, R2,R2         \\n\"\n    \"        VMOV    D10,R2,R2         \\n\"\n    \"        VMOV    D11,R2,R2         \\n\"\n    \"        VMOV    D12,R2,R2         \\n\"\n    \"        VMOV    D13,R2,R2         \\n\"\n    \"        VMOV    D14,R2,R2         \\n\"\n    \"        VMOV    D15,R2,R2         \\n\"\n\n#if __ARM_NEON == 1\n    //Initialise D32 registers to 0\n    \"        VMOV    D16,R2,R2         \\n\"\n    \"        VMOV    D17,R2,R2         \\n\"\n    \"        VMOV    D18,R2,R2         \\n\"\n    \"        VMOV    D19,R2,R2         \\n\"\n    \"        VMOV    D20,R2,R2         \\n\"\n    \"        VMOV    D21,R2,R2         \\n\"\n    \"        VMOV    D22,R2,R2         \\n\"\n    \"        VMOV    D23,R2,R2         \\n\"\n    \"        VMOV    D24,R2,R2         \\n\"\n    \"        VMOV    D25,R2,R2         \\n\"\n    \"        VMOV    D26,R2,R2         \\n\"\n    \"        VMOV    D27,R2,R2         \\n\"\n    \"        VMOV    D28,R2,R2         \\n\"\n    \"        VMOV    D29,R2,R2         \\n\"\n    \"        VMOV    D30,R2,R2         \\n\"\n    \"        VMOV    D31,R2,R2         \\n\"\n#endif\n\n    //Initialise FPSCR to a known state\n    \"        VMRS    R1,FPSCR          \\n\"\n    \"        LDR     R2,=0x00086060    \\n\" //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero.\n    \"        AND     R1,R1,R2          \\n\"\n    \"        VMSR    FPSCR,R1            \"\n    : : : \"cc\", \"r1\", \"r2\"\n  );\n}\n\n#endif /* __CMSIS_ARMCLANG_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/cmsis_compiler.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_compiler.h\n * @brief    CMSIS compiler specific macros, functions, instructions\n * @version  V1.0.2\n * @date     10. January 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_COMPILER_H\n#define __CMSIS_COMPILER_H\n\n#include <stdint.h>\n\n/*\n * Arm Compiler 4/5\n */\n#if   defined ( __CC_ARM )\n  #include \"cmsis_armcc.h\"\n\n\n/*\n * Arm Compiler 6 (armclang)\n */\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #include \"cmsis_armclang.h\"\n\n\n/*\n * GNU Compiler\n */\n#elif defined ( __GNUC__ )\n  #include \"cmsis_gcc.h\"\n\n\n/*\n * IAR Compiler\n */\n#elif defined ( __ICCARM__ )\n  #include \"cmsis_iccarm.h\"\n\n\n/*\n * TI Arm Compiler\n */\n#elif defined ( __TI_ARM__ )\n  #include <cmsis_ccs.h>\n\n  #ifndef   __ASM\n    #define __ASM                     __asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                  inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE           static inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE           static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE      __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    #define __NO_RETURN               __attribute__((noreturn))\n  #endif\n  #ifndef   CMSIS_DEPRECATED\n    #define CMSIS_DEPRECATED          __attribute__((deprecated))\n  #endif\n  #ifndef   __USED\n    #define __USED                    __attribute__((used))\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                    __attribute__((weak))\n  #endif\n  #ifndef   __UNALIGNED_UINT32\n    struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)     (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #define __ALIGNED(x)              __attribute__((aligned(x)))\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                  __attribute__((packed))\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()      (void)0\n  #endif\n\n\n/*\n * TASKING Compiler\n */\n#elif defined ( __TASKING__ )\n  /*\n   * The CMSIS functions have been implemented as intrinsics in the compiler.\n   * Please use \"carm -?i\" to get an up to date list of all intrinsics,\n   * Including the CMSIS ones.\n   */\n\n  #ifndef   __ASM\n    #define __ASM                     __asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                  inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE           static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE      __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    #define __NO_RETURN               __attribute__((noreturn))\n  #endif\n  #ifndef   CMSIS_DEPRECATED\n    #define CMSIS_DEPRECATED          __attribute__((deprecated))\n  #endif\n  #ifndef   __USED\n    #define __USED                    __attribute__((used))\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                    __attribute__((weak))\n  #endif\n  #ifndef   __UNALIGNED_UINT32\n    struct __packed__ T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)     (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #define __ALIGNED(x)              __align(x)\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                  __packed__\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()      (void)0\n  #endif\n\n\n/*\n * COSMIC Compiler\n */\n#elif defined ( __CSMC__ )\n   #include <cmsis_csm.h>\n\n #ifndef   __ASM\n    #define __ASM                     _asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                  inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE           static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE      __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    // NO RETURN is automatically detected hence no warning here\n    #define __NO_RETURN\n  #endif\n  #ifndef   __USED\n    #warning No compiler specific solution for __USED. __USED is ignored.\n    #define __USED\n  #endif\n  #ifndef   CMSIS_DEPRECATED\n    #warning No compiler specific solution for CMSIS_DEPRECATED. CMSIS_DEPRECATED is ignored.\n    #define CMSIS_DEPRECATED\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                    __weak\n  #endif\n  #ifndef   __UNALIGNED_UINT32\n    @packed struct T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)     (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.\n    #define __ALIGNED(x)\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                  @packed\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()      (void)0\n  #endif\n\n\n#else\n  #error Unknown compiler.\n#endif\n\n\n#endif /* __CMSIS_COMPILER_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/cmsis_cp15.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_cp15.h\n * @brief    CMSIS compiler specific macros, functions, instructions\n * @version  V1.0.1\n * @date     07. Sep 2017\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CMSIS_CP15_H\n#define __CMSIS_CP15_H\n\n/** \\brief  Get ACTLR\n    \\return               Auxiliary Control register value\n */\n__STATIC_FORCEINLINE uint32_t __get_ACTLR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 1, 0, 1);\n  return(result);\n}\n\n/** \\brief  Set ACTLR\n    \\param [in]    actlr  Auxiliary Control value to set\n */\n__STATIC_FORCEINLINE void __set_ACTLR(uint32_t actlr)\n{\n  __set_CP(15, 0, actlr, 1, 0, 1);\n}\n\n/** \\brief  Get CPACR\n    \\return               Coprocessor Access Control register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CPACR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 1, 0, 2);\n  return result;\n}\n\n/** \\brief  Set CPACR\n    \\param [in]    cpacr  Coprocessor Access Control value to set\n */\n__STATIC_FORCEINLINE void __set_CPACR(uint32_t cpacr)\n{\n  __set_CP(15, 0, cpacr, 1, 0, 2);\n}\n\n/** \\brief  Get DFSR\n    \\return               Data Fault Status Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_DFSR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 5, 0, 0);\n  return result;\n}\n\n/** \\brief  Set DFSR\n    \\param [in]    dfsr  Data Fault Status value to set\n */\n__STATIC_FORCEINLINE void __set_DFSR(uint32_t dfsr)\n{\n  __set_CP(15, 0, dfsr, 5, 0, 0);\n}\n\n/** \\brief  Get IFSR\n    \\return               Instruction Fault Status Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_IFSR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 5, 0, 1);\n  return result;\n}\n\n/** \\brief  Set IFSR\n    \\param [in]    ifsr  Instruction Fault Status value to set\n */\n__STATIC_FORCEINLINE void __set_IFSR(uint32_t ifsr)\n{\n  __set_CP(15, 0, ifsr, 5, 0, 1);\n}\n\n/** \\brief  Get ISR\n    \\return               Interrupt Status Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_ISR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 12, 1, 0);\n  return result;\n}\n\n/** \\brief  Get CBAR\n    \\return               Configuration Base Address register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CBAR(void)\n{\n  uint32_t result;\n  __get_CP(15, 4, result, 15, 0, 0);\n  return result;\n}\n\n/** \\brief  Get TTBR0\n\n    This function returns the value of the Translation Table Base Register 0.\n\n    \\return               Translation Table Base Register 0 value\n */\n__STATIC_FORCEINLINE uint32_t __get_TTBR0(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 2, 0, 0);\n  return result;\n}\n\n/** \\brief  Set TTBR0\n\n    This function assigns the given value to the Translation Table Base Register 0.\n\n    \\param [in]    ttbr0  Translation Table Base Register 0 value to set\n */\n__STATIC_FORCEINLINE void __set_TTBR0(uint32_t ttbr0)\n{\n  __set_CP(15, 0, ttbr0, 2, 0, 0);\n}\n\n/** \\brief  Get DACR\n\n    This function returns the value of the Domain Access Control Register.\n\n    \\return               Domain Access Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_DACR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 3, 0, 0);\n  return result;\n}\n\n/** \\brief  Set DACR\n\n    This function assigns the given value to the Domain Access Control Register.\n\n    \\param [in]    dacr   Domain Access Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_DACR(uint32_t dacr)\n{\n  __set_CP(15, 0, dacr, 3, 0, 0);\n}\n\n/** \\brief  Set SCTLR\n\n    This function assigns the given value to the System Control Register.\n\n    \\param [in]    sctlr  System Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_SCTLR(uint32_t sctlr)\n{\n  __set_CP(15, 0, sctlr, 1, 0, 0);\n}\n\n/** \\brief  Get SCTLR\n    \\return               System Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_SCTLR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 1, 0, 0);\n  return result;\n}\n\n/** \\brief  Set ACTRL\n    \\param [in]    actrl  Auxiliary Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_ACTRL(uint32_t actrl)\n{\n  __set_CP(15, 0, actrl, 1, 0, 1);\n}\n\n/** \\brief  Get ACTRL\n    \\return               Auxiliary Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_ACTRL(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 1, 0, 1);\n  return result;\n}\n\n/** \\brief  Get MPIDR\n\n    This function returns the value of the Multiprocessor Affinity Register.\n\n    \\return               Multiprocessor Affinity Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MPIDR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 0, 0, 5);\n  return result;\n}\n\n/** \\brief  Get VBAR\n\n    This function returns the value of the Vector Base Address Register.\n\n    \\return               Vector Base Address Register\n */\n__STATIC_FORCEINLINE uint32_t __get_VBAR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 12, 0, 0);\n  return result;\n}\n\n/** \\brief  Set VBAR\n\n    This function assigns the given value to the Vector Base Address Register.\n\n    \\param [in]    vbar  Vector Base Address Register value to set\n */\n__STATIC_FORCEINLINE void __set_VBAR(uint32_t vbar)\n{\n  __set_CP(15, 0, vbar, 12, 0, 0);\n}\n\n/** \\brief  Get MVBAR\n\n    This function returns the value of the Monitor Vector Base Address Register.\n\n    \\return               Monitor Vector Base Address Register\n */\n__STATIC_FORCEINLINE uint32_t __get_MVBAR(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 12, 0, 1);\n  return result;\n}\n\n/** \\brief  Set MVBAR\n\n    This function assigns the given value to the Monitor Vector Base Address Register.\n\n    \\param [in]    mvbar  Monitor Vector Base Address Register value to set\n */\n__STATIC_FORCEINLINE void __set_MVBAR(uint32_t mvbar)\n{\n  __set_CP(15, 0, mvbar, 12, 0, 1);\n}\n\n#if (defined(__CORTEX_A) && (__CORTEX_A == 7U) && \\\n    defined(__TIM_PRESENT) && (__TIM_PRESENT == 1U)) || \\\n    defined(DOXYGEN)\n\n/** \\brief  Set CNTFRQ\n\n  This function assigns the given value to PL1 Physical Timer Counter Frequency Register (CNTFRQ).\n\n  \\param [in]    value  CNTFRQ Register value to set\n*/\n__STATIC_FORCEINLINE void __set_CNTFRQ(uint32_t value)\n{\n  __set_CP(15, 0, value, 14, 0, 0);\n}\n\n/** \\brief  Get CNTFRQ\n\n    This function returns the value of the PL1 Physical Timer Counter Frequency Register (CNTFRQ).\n\n    \\return               CNTFRQ Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CNTFRQ(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 14, 0 , 0);\n  return result;\n}\n\n/** \\brief  Set CNTP_TVAL\n\n  This function assigns the given value to PL1 Physical Timer Value Register (CNTP_TVAL).\n\n  \\param [in]    value  CNTP_TVAL Register value to set\n*/\n__STATIC_FORCEINLINE void __set_CNTP_TVAL(uint32_t value)\n{\n  __set_CP(15, 0, value, 14, 2, 0);\n}\n\n/** \\brief  Get CNTP_TVAL\n\n    This function returns the value of the PL1 Physical Timer Value Register (CNTP_TVAL).\n\n    \\return               CNTP_TVAL Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CNTP_TVAL(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 14, 2, 0);\n  return result;\n}\n\n/** \\brief  Get CNTPCT\n\n    This function returns the value of the 64 bits PL1 Physical Count Register (CNTPCT).\n\n    \\return               CNTPCT Register value\n */\n__STATIC_FORCEINLINE uint64_t __get_CNTPCT(void)\n{\n  uint64_t result;\n  __get_CP64(15, 0, result, 14);\n  return result;\n}\n\n/** \\brief  Set CNTP_CVAL\n\n  This function assigns the given value to 64bits PL1 Physical Timer CompareValue Register (CNTP_CVAL).\n\n  \\param [in]    value  CNTP_CVAL Register value to set\n*/\n__STATIC_FORCEINLINE void __set_CNTP_CVAL(uint64_t value)\n{\n  __set_CP64(15, 2, value, 14);\n}\n\n/** \\brief  Get CNTP_CVAL\n\n    This function returns the value of the 64 bits PL1 Physical Timer CompareValue Register (CNTP_CVAL).\n\n    \\return               CNTP_CVAL Register value\n */\n__STATIC_FORCEINLINE uint64_t __get_CNTP_CVAL(void)\n{\n  uint64_t result;\n  __get_CP64(15, 2, result, 14);\n  return result;\n}\n\n/** \\brief  Set CNTP_CTL\n\n  This function assigns the given value to PL1 Physical Timer Control Register (CNTP_CTL).\n\n  \\param [in]    value  CNTP_CTL Register value to set\n*/\n__STATIC_FORCEINLINE void __set_CNTP_CTL(uint32_t value)\n{\n  __set_CP(15, 0, value, 14, 2, 1);\n}\n\n/** \\brief  Get CNTP_CTL register\n    \\return               CNTP_CTL Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CNTP_CTL(void)\n{\n  uint32_t result;\n  __get_CP(15, 0, result, 14, 2, 1);\n  return result;\n}\n\n#endif\n\n/** \\brief  Set TLBIALL\n\n  TLB Invalidate All\n */\n__STATIC_FORCEINLINE void __set_TLBIALL(uint32_t value)\n{\n  __set_CP(15, 0, value, 8, 7, 0);\n}\n\n/** \\brief  Set BPIALL.\n\n  Branch Predictor Invalidate All\n */\n__STATIC_FORCEINLINE void __set_BPIALL(uint32_t value)\n{\n  __set_CP(15, 0, value, 7, 5, 6);\n}\n\n/** \\brief  Set ICIALLU\n\n  Instruction Cache Invalidate All\n */\n__STATIC_FORCEINLINE void __set_ICIALLU(uint32_t value)\n{\n  __set_CP(15, 0, value, 7, 5, 0);\n}\n\n/** \\brief  Set DCCMVAC\n\n  Data cache clean\n */\n__STATIC_FORCEINLINE void __set_DCCMVAC(uint32_t value)\n{\n  __set_CP(15, 0, value, 7, 10, 1);\n}\n\n/** \\brief  Set DCIMVAC\n\n  Data cache invalidate\n */\n__STATIC_FORCEINLINE void __set_DCIMVAC(uint32_t value)\n{\n  __set_CP(15, 0, value, 7, 6, 1);\n}\n\n/** \\brief  Set DCCIMVAC\n\n  Data cache clean and invalidate\n */\n__STATIC_FORCEINLINE void __set_DCCIMVAC(uint32_t value)\n{\n  __set_CP(15, 0, value, 7, 14, 1);\n}\n\n/** \\brief  Set CSSELR\n */\n__STATIC_FORCEINLINE void __set_CSSELR(uint32_t value)\n{\n//  __ASM volatile(\"MCR p15, 2, %0, c0, c0, 0\" : : \"r\"(value) : \"memory\");\n  __set_CP(15, 2, value, 0, 0, 0);\n}\n\n/** \\brief  Get CSSELR\n    \\return CSSELR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CSSELR(void)\n{\n  uint32_t result;\n//  __ASM volatile(\"MRC p15, 2, %0, c0, c0, 0\" : \"=r\"(result) : : \"memory\");\n  __get_CP(15, 2, result, 0, 0, 0);\n  return result;\n}\n\n/** \\brief  Set CCSIDR\n    \\deprecated CCSIDR itself is read-only. Use __set_CSSELR to select cache level instead.\n */\nCMSIS_DEPRECATED\n__STATIC_FORCEINLINE void __set_CCSIDR(uint32_t value)\n{\n  __set_CSSELR(value);\n}\n\n/** \\brief  Get CCSIDR\n    \\return CCSIDR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CCSIDR(void)\n{\n  uint32_t result;\n//  __ASM volatile(\"MRC p15, 1, %0, c0, c0, 0\" : \"=r\"(result) : : \"memory\");\n  __get_CP(15, 1, result, 0, 0, 0);\n  return result;\n}\n\n/** \\brief  Get CLIDR\n    \\return CLIDR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CLIDR(void)\n{\n  uint32_t result;\n//  __ASM volatile(\"MRC p15, 1, %0, c0, c0, 1\" : \"=r\"(result) : : \"memory\");\n  __get_CP(15, 1, result, 0, 0, 1);\n  return result;\n}\n\n/** \\brief  Set DCISW\n */\n__STATIC_FORCEINLINE void __set_DCISW(uint32_t value)\n{\n//  __ASM volatile(\"MCR p15, 0, %0, c7, c6, 2\" : : \"r\"(value) : \"memory\")\n  __set_CP(15, 0, value, 7, 6, 2);\n}\n\n/** \\brief  Set DCCSW\n */\n__STATIC_FORCEINLINE void __set_DCCSW(uint32_t value)\n{\n//  __ASM volatile(\"MCR p15, 0, %0, c7, c10, 2\" : : \"r\"(value) : \"memory\")\n  __set_CP(15, 0, value, 7, 10, 2);\n}\n\n/** \\brief  Set DCCISW\n */\n__STATIC_FORCEINLINE void __set_DCCISW(uint32_t value)\n{\n//  __ASM volatile(\"MCR p15, 0, %0, c7, c14, 2\" : : \"r\"(value) : \"memory\")\n  __set_CP(15, 0, value, 7, 14, 2);\n}\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/cmsis_gcc.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_gcc.h\n * @brief    CMSIS compiler specific macros, functions, instructions\n * @version  V1.2.0\n * @date     17. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_GCC_H\n#define __CMSIS_GCC_H\n\n/* ignore some GCC warnings */\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wsign-conversion\"\n#pragma GCC diagnostic ignored \"-Wconversion\"\n#pragma GCC diagnostic ignored \"-Wunused-parameter\"\n\n/* Fallback for __has_builtin */\n#ifndef __has_builtin\n  #define __has_builtin(x) (0)\n#endif\n\n/* CMSIS compiler specific defines */\n\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               inline\n#endif\n#ifndef   __FORCEINLINE\n  #define __FORCEINLINE                          __attribute__((always_inline))\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static inline\n#endif\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static inline\n#endif\n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   CMSIS_DEPRECATED\n #define  CMSIS_DEPRECATED                       __attribute__((deprecated))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n\n__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n int32_t result;\n\n __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n return(result);\n}\n\n\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/**\n  \\brief   No Operation\n */\n#define __NOP()                             __ASM volatile (\"nop\")\n\n/**\n  \\brief   Wait For Interrupt\n */\n#define __WFI()                             __ASM volatile (\"wfi\")\n\n/**\n  \\brief   Wait For Event\n */\n#define __WFE()                             __ASM volatile (\"wfe\")\n\n/**\n  \\brief   Send Event\n */\n#define __SEV()                             __ASM volatile (\"sev\")\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n__STATIC_FORCEINLINE  void __ISB(void)\n{\n  __ASM volatile (\"isb 0xF\":::\"memory\");\n}\n\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n__STATIC_FORCEINLINE  void __DSB(void)\n{\n  __ASM volatile (\"dsb 0xF\":::\"memory\");\n}\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n__STATIC_FORCEINLINE  void __DMB(void)\n{\n  __ASM volatile (\"dmb 0xF\":::\"memory\");\n}\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE  uint32_t __REV(uint32_t value)\n{\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)\n  return __builtin_bswap32(value);\n#else\n  uint32_t result;\n\n  __ASM volatile (\"rev %0, %1\" : \"=r\" (result) : \"r\" (value) );\n  return result;\n#endif\n}\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".rev16_text\"))) __STATIC_INLINE uint32_t __REV16(uint32_t value)\n{\n  uint32_t result;\n  __ASM volatile(\"rev16 %0, %1\" : \"=r\" (result) : \"r\" (value));\n  return result;\n}\n#endif\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE  int16_t __REVSH(int16_t value)\n{\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n  return (int16_t)__builtin_bswap16(value);\n#else\n  int16_t result;\n\n  __ASM volatile (\"revsh %0, %1\" : \"=r\" (result) : \"r\" (value) );\n  return result;\n#endif\n}\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE  uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U) {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)                       __ASM volatile (\"bkpt \"#value)\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE  uint32_t __RBIT(uint32_t value)\n{\n  uint32_t result;\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n   __ASM volatile (\"rbit %0, %1\" : \"=r\" (result) : \"r\" (value) );\n#else\n  int32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */\n\n  result = value;                      /* r will be reversed bits of v; first get LSB of v */\n  for (value >>= 1U; value; value >>= 1U)\n  {\n    result <<= 1U;\n    result |= value & 1U;\n    s--;\n  }\n  result <<= s;                        /* shift when v's highest bits are zero */\n#endif\n  return result;\n}\n\n/**\n  \\brief   Count leading zeros\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE  uint8_t __LDREXB(volatile uint8_t *addr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrexb %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrexb %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n#endif\n   return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE  uint16_t __LDREXH(volatile uint16_t *addr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrexh %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrexh %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n#endif\n   return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE  uint32_t __LDREXW(volatile uint32_t *addr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldrex %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE  uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE  uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE  uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n   return(result);\n}\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n__STATIC_FORCEINLINE  void __CLREX(void)\n{\n  __ASM volatile (\"clrex\" ::: \"memory\");\n}\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT(ARG1,ARG2) \\\n__extension__ \\\n({                          \\\n  int32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"ssat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT(ARG1,ARG2) \\\n__extension__ \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"usat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n/* ###########################  Core Function Access  ########################### */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __enable_irq(void)\n{\n  __ASM volatile (\"cpsie i\" : : : \"memory\");\n}\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n  Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE  void __disable_irq(void)\n{\n  __ASM volatile (\"cpsid i\" : : : \"memory\");\n}\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return Floating Point Status/Control register value\n*/\n__STATIC_FORCEINLINE  uint32_t __get_FPSCR(void)\n{\n  #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n       (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  #if __has_builtin(__builtin_arm_get_fpscr) \n  // Re-enable using built-in when GCC has been fixed\n  // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\n    /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\n    return __builtin_arm_get_fpscr();\n  #else\n    uint32_t result;\n\n    __ASM volatile (\"VMRS %0, fpscr\" : \"=r\" (result) );\n    return(result);\n  #endif\n  #else\n    return(0U);\n  #endif\n}\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in] fpscr  Floating Point Status/Control value to set\n*/\n__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)\n{\n  #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n       (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  #if __has_builtin(__builtin_arm_set_fpscr)\n  // Re-enable using built-in when GCC has been fixed\n  // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\n    /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\n    __builtin_arm_set_fpscr(fpscr);\n  #else\n    __ASM volatile (\"VMSR fpscr, %0\" : : \"r\" (fpscr) : \"vfpcc\", \"memory\");\n  #endif\n  #else\n    (void)fpscr;\n  #endif\n}\n\n/** \\brief  Get CPSR Register\n    \\return               CPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CPSR(void)\n{\n  uint32_t result;\n  __ASM volatile(\"MRS %0, cpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n/** \\brief  Set CPSR Register\n    \\param [in]    cpsr  CPSR value to set\n */\n__STATIC_FORCEINLINE void __set_CPSR(uint32_t cpsr)\n{\n__ASM volatile (\"MSR cpsr, %0\" : : \"r\" (cpsr) : \"memory\");\n}\n\n/** \\brief  Get Mode\n    \\return                Processor Mode\n */\n__STATIC_FORCEINLINE uint32_t __get_mode(void)\n{\n    return (__get_CPSR() & 0x1FU);\n}\n\n/** \\brief  Set Mode\n    \\param [in]    mode  Mode value to set\n */\n__STATIC_FORCEINLINE void __set_mode(uint32_t mode)\n{\n  __ASM volatile(\"MSR  cpsr_c, %0\" : : \"r\" (mode) : \"memory\");\n}\n\n/** \\brief  Get Stack Pointer\n    \\return Stack Pointer value\n */\n__STATIC_FORCEINLINE uint32_t __get_SP(void)\n{\n  uint32_t result;\n  __ASM volatile(\"MOV  %0, sp\" : \"=r\" (result) : : \"memory\");\n  return result;\n}\n\n/** \\brief  Set Stack Pointer\n    \\param [in]    stack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_SP(uint32_t stack)\n{\n  __ASM volatile(\"MOV  sp, %0\" : : \"r\" (stack) : \"memory\");\n}\n\n/** \\brief  Get USR/SYS Stack Pointer\n    \\return USR/SYS Stack Pointer value\n */\n__STATIC_FORCEINLINE uint32_t __get_SP_usr(void)\n{\n  uint32_t cpsr = __get_CPSR();\n  uint32_t result;\n  __ASM volatile(\n    \"CPS     #0x1F  \\n\"\n    \"MOV     %0, sp   \" : \"=r\"(result) : : \"memory\"\n   );\n  __set_CPSR(cpsr);\n  __ISB();\n  return result;\n}\n\n/** \\brief  Set USR/SYS Stack Pointer\n    \\param [in]    topOfProcStack  USR/SYS Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_SP_usr(uint32_t topOfProcStack)\n{\n  uint32_t cpsr = __get_CPSR();\n  __ASM volatile(\n    \"CPS     #0x1F  \\n\"\n    \"MOV     sp, %0   \" : : \"r\" (topOfProcStack) : \"memory\"\n   );\n  __set_CPSR(cpsr);\n  __ISB();\n}\n\n/** \\brief  Get FPEXC\n    \\return               Floating Point Exception Control register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FPEXC(void)\n{\n#if (__FPU_PRESENT == 1)\n  uint32_t result;\n  __ASM volatile(\"VMRS %0, fpexc\" : \"=r\" (result) );\n  return(result);\n#else\n  return(0);\n#endif\n}\n\n/** \\brief  Set FPEXC\n    \\param [in]    fpexc  Floating Point Exception Control value to set\n */\n__STATIC_FORCEINLINE void __set_FPEXC(uint32_t fpexc)\n{\n#if (__FPU_PRESENT == 1)\n  __ASM volatile (\"VMSR fpexc, %0\" : : \"r\" (fpexc) : \"memory\");\n#endif\n}\n\n/*\n * Include common core functions to access Coprocessor 15 registers\n */\n\n#define __get_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile(\"MRC p\" # cp \", \" # op1 \", %0, c\" # CRn \", c\" # CRm \", \" # op2 : \"=r\" (Rt) : : \"memory\" )\n#define __set_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile(\"MCR p\" # cp \", \" # op1 \", %0, c\" # CRn \", c\" # CRm \", \" # op2 : : \"r\" (Rt) : \"memory\" )\n#define __get_CP64(cp, op1, Rt, CRm) __ASM volatile(\"MRRC p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : \"=r\" (Rt) : : \"memory\" )\n#define __set_CP64(cp, op1, Rt, CRm) __ASM volatile(\"MCRR p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : : \"r\" (Rt) : \"memory\" )\n\n#include \"cmsis_cp15.h\"\n\n/** \\brief  Enable Floating Point Unit\n\n  Critical section, called from undef handler, so systick is disabled\n */\n__STATIC_INLINE void __FPU_Enable(void)\n{\n  __ASM volatile(\n    //Permit access to VFP/NEON, registers by modifying CPACR\n    \"        MRC     p15,0,R1,c1,c0,2  \\n\"\n    \"        ORR     R1,R1,#0x00F00000 \\n\"\n    \"        MCR     p15,0,R1,c1,c0,2  \\n\"\n\n    //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted\n    \"        ISB                       \\n\"\n\n    //Enable VFP/NEON\n    \"        VMRS    R1,FPEXC          \\n\"\n    \"        ORR     R1,R1,#0x40000000 \\n\"\n    \"        VMSR    FPEXC,R1          \\n\"\n\n    //Initialise VFP/NEON registers to 0\n    \"        MOV     R2,#0             \\n\"\n\n    //Initialise D16 registers to 0\n    \"        VMOV    D0, R2,R2         \\n\"\n    \"        VMOV    D1, R2,R2         \\n\"\n    \"        VMOV    D2, R2,R2         \\n\"\n    \"        VMOV    D3, R2,R2         \\n\"\n    \"        VMOV    D4, R2,R2         \\n\"\n    \"        VMOV    D5, R2,R2         \\n\"\n    \"        VMOV    D6, R2,R2         \\n\"\n    \"        VMOV    D7, R2,R2         \\n\"\n    \"        VMOV    D8, R2,R2         \\n\"\n    \"        VMOV    D9, R2,R2         \\n\"\n    \"        VMOV    D10,R2,R2         \\n\"\n    \"        VMOV    D11,R2,R2         \\n\"\n    \"        VMOV    D12,R2,R2         \\n\"\n    \"        VMOV    D13,R2,R2         \\n\"\n    \"        VMOV    D14,R2,R2         \\n\"\n    \"        VMOV    D15,R2,R2         \\n\"\n\n#if (defined(__ARM_NEON) && (__ARM_NEON == 1))\n    //Initialise D32 registers to 0\n    \"        VMOV    D16,R2,R2         \\n\"\n    \"        VMOV    D17,R2,R2         \\n\"\n    \"        VMOV    D18,R2,R2         \\n\"\n    \"        VMOV    D19,R2,R2         \\n\"\n    \"        VMOV    D20,R2,R2         \\n\"\n    \"        VMOV    D21,R2,R2         \\n\"\n    \"        VMOV    D22,R2,R2         \\n\"\n    \"        VMOV    D23,R2,R2         \\n\"\n    \"        VMOV    D24,R2,R2         \\n\"\n    \"        VMOV    D25,R2,R2         \\n\"\n    \"        VMOV    D26,R2,R2         \\n\"\n    \"        VMOV    D27,R2,R2         \\n\"\n    \"        VMOV    D28,R2,R2         \\n\"\n    \"        VMOV    D29,R2,R2         \\n\"\n    \"        VMOV    D30,R2,R2         \\n\"\n    \"        VMOV    D31,R2,R2         \\n\"\n#endif\n\n    //Initialise FPSCR to a known state\n    \"        VMRS    R1,FPSCR          \\n\"\n    \"        LDR     R2,=0x00086060    \\n\" //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero.\n    \"        AND     R1,R1,R2          \\n\"\n    \"        VMSR    FPSCR,R1            \"\n    : : : \"cc\", \"r1\", \"r2\"\n  );\n}\n\n#pragma GCC diagnostic pop\n\n#endif /* __CMSIS_GCC_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/cmsis_iccarm.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_iccarm.h\n * @brief    CMSIS compiler ICCARM (IAR Compiler for Arm) header file\n * @version  V5.0.7\n * @date     15. May 2019\n ******************************************************************************/\n\n//------------------------------------------------------------------------------\n//\n// Copyright (c) 2017-2018 IAR Systems\n// Copyright (c) 2018-2019 Arm Limited \n//\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n//------------------------------------------------------------------------------\n\n\n#ifndef __CMSIS_ICCARM_H__\n#define __CMSIS_ICCARM_H__\n\n#ifndef __ICCARM__\n  #error This file should only be compiled by ICCARM\n#endif\n\n#pragma system_include\n\n#define __IAR_FT _Pragma(\"inline=forced\") __intrinsic\n\n#if (__VER__ >= 8000000)\n  #define __ICCARM_V8 1\n#else\n  #define __ICCARM_V8 0\n#endif\n\n#pragma language=extended\n\n#ifndef __ALIGNED\n  #if __ICCARM_V8\n    #define __ALIGNED(x) __attribute__((aligned(x)))\n  #elif (__VER__ >= 7080000)\n    /* Needs IAR language extensions */\n    #define __ALIGNED(x) __attribute__((aligned(x)))\n  #else\n    #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored.\n    #define __ALIGNED(x)\n  #endif\n#endif\n\n\n/* Define compiler macros for CPU architecture, used in CMSIS 5.\n */\n#if __ARM_ARCH_7A__\n/* Macro already defined */\n#else\n  #if defined(__ARM7A__)\n    #define __ARM_ARCH_7A__ 1\n  #endif\n#endif\n\n#ifndef __ASM\n  #define __ASM __asm\n#endif\n\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER() __ASM volatile(\"\":::\"memory\")\n#endif\n\n#ifndef __INLINE\n  #define __INLINE inline\n#endif\n\n#ifndef   __NO_RETURN\n  #if __ICCARM_V8\n    #define __NO_RETURN __attribute__((__noreturn__))\n  #else\n    #define __NO_RETURN _Pragma(\"object_attribute=__noreturn\")\n  #endif\n#endif\n\n#ifndef   __PACKED\n  /* Needs IAR language extensions */\n  #if __ICCARM_V8\n    #define __PACKED __attribute__((packed, aligned(1)))\n  #else\n    #define __PACKED __packed\n  #endif\n#endif\n\n#ifndef   __PACKED_STRUCT\n  /* Needs IAR language extensions */\n  #if __ICCARM_V8\n    #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))\n  #else\n    #define __PACKED_STRUCT __packed struct\n  #endif\n#endif\n\n#ifndef   __PACKED_UNION\n  /* Needs IAR language extensions */\n  #if __ICCARM_V8\n    #define __PACKED_UNION union __attribute__((packed, aligned(1)))\n  #else\n    #define __PACKED_UNION __packed union\n  #endif\n#endif\n\n#ifndef   __RESTRICT\n  #if __ICCARM_V8\n    #define __RESTRICT            __restrict\n  #else\n    /* Needs IAR language extensions */\n    #define __RESTRICT            restrict\n  #endif\n#endif\n\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE       static inline\n#endif\n\n#ifndef   __FORCEINLINE\n  #define __FORCEINLINE         _Pragma(\"inline=forced\")\n#endif\n\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE  __FORCEINLINE __STATIC_INLINE\n#endif\n\n#ifndef   CMSIS_DEPRECATED\n  #define CMSIS_DEPRECATED      __attribute__((deprecated))\n#endif\n\n#ifndef __UNALIGNED_UINT16_READ\n  #pragma language=save\n  #pragma language=extended\n  __IAR_FT uint16_t __iar_uint16_read(void const *ptr)\n  {\n    return *(__packed uint16_t*)(ptr);\n  }\n  #pragma language=restore\n  #define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR)\n#endif\n\n\n#ifndef __UNALIGNED_UINT16_WRITE\n  #pragma language=save\n  #pragma language=extended\n  __IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val)\n  {\n    *(__packed uint16_t*)(ptr) = val;;\n  }\n  #pragma language=restore\n  #define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL)\n#endif\n\n#ifndef __UNALIGNED_UINT32_READ\n  #pragma language=save\n  #pragma language=extended\n  __IAR_FT uint32_t __iar_uint32_read(void const *ptr)\n  {\n    return *(__packed uint32_t*)(ptr);\n  }\n  #pragma language=restore\n  #define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR)\n#endif\n\n#ifndef __UNALIGNED_UINT32_WRITE\n  #pragma language=save\n  #pragma language=extended\n  __IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val)\n  {\n    *(__packed uint32_t*)(ptr) = val;;\n  }\n  #pragma language=restore\n  #define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL)\n#endif\n\n#if 0\n#ifndef __UNALIGNED_UINT32   /* deprecated */\n  #pragma language=save\n  #pragma language=extended\n  __packed struct  __iar_u32 { uint32_t v; };\n  #pragma language=restore\n  #define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v)\n#endif\n#endif\n\n#ifndef   __USED\n  #if __ICCARM_V8\n    #define __USED __attribute__((used))\n  #else\n    #define __USED _Pragma(\"__root\")\n  #endif\n#endif\n\n#ifndef   __WEAK\n  #if __ICCARM_V8\n    #define __WEAK __attribute__((weak))\n  #else\n    #define __WEAK _Pragma(\"__weak\")\n  #endif\n#endif\n\n\n#ifndef __ICCARM_INTRINSICS_VERSION__\n  #define __ICCARM_INTRINSICS_VERSION__  0\n#endif\n\n#if __ICCARM_INTRINSICS_VERSION__ == 2\n\n  #if defined(__CLZ)\n    #undef __CLZ\n  #endif\n  #if defined(__REVSH)\n    #undef __REVSH\n  #endif\n  #if defined(__RBIT)\n    #undef __RBIT\n  #endif\n  #if defined(__SSAT)\n    #undef __SSAT\n  #endif\n  #if defined(__USAT)\n    #undef __USAT\n  #endif\n\n  #include \"iccarm_builtin.h\"\n\n  #define __enable_irq        __iar_builtin_enable_interrupt\n  #define __disable_irq       __iar_builtin_disable_interrupt\n  #define __enable_fault_irq    __iar_builtin_enable_fiq\n  #define __disable_fault_irq   __iar_builtin_disable_fiq\n  #define __arm_rsr           __iar_builtin_rsr\n  #define __arm_wsr           __iar_builtin_wsr\n\n  #if __FPU_PRESENT\n    #define __get_FPSCR()             (__arm_rsr(\"FPSCR\"))\n  #else\n    #define __get_FPSCR()             ( 0 )\n  #endif\n\n  #define __set_FPSCR(VALUE)          (__arm_wsr(\"FPSCR\", VALUE))\n\n  #define __get_CPSR()                (__arm_rsr(\"CPSR\"))\n  #define __get_mode()                (__get_CPSR() & 0x1FU)\n\n  #define __set_CPSR(VALUE)           (__arm_wsr(\"CPSR\", (VALUE)))\n  #define __set_mode(VALUE)           (__arm_wsr(\"CPSR_c\", (VALUE)))\n\n\n  #define __get_FPEXC()       (__arm_rsr(\"FPEXC\"))\n  #define __set_FPEXC(VALUE)    (__arm_wsr(\"FPEXC\", VALUE))\n\n  #define __get_CP(cp, op1, RT, CRn, CRm, op2) \\\n    ((RT) = __arm_rsr(\"p\" # cp \":\" # op1 \":c\" # CRn \":c\" # CRm \":\" # op2))\n\n  #define __set_CP(cp, op1, RT, CRn, CRm, op2) \\\n    (__arm_wsr(\"p\" # cp \":\" # op1 \":c\" # CRn \":c\" # CRm \":\" # op2, (RT)))\n\n  #define __get_CP64(cp, op1, Rt, CRm) \\\n    __ASM volatile(\"MRRC p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : \"=r\" (Rt) : : \"memory\" )\n\n  #define __set_CP64(cp, op1, Rt, CRm) \\\n    __ASM volatile(\"MCRR p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : : \"r\" (Rt) : \"memory\" )\n\n  #include \"cmsis_cp15.h\"\n\n  #define __NOP     __iar_builtin_no_operation\n\n  #define __CLZ     __iar_builtin_CLZ\n  #define __CLREX   __iar_builtin_CLREX\n\n  #define __DMB     __iar_builtin_DMB\n  #define __DSB     __iar_builtin_DSB\n  #define __ISB     __iar_builtin_ISB\n\n  #define __LDREXB  __iar_builtin_LDREXB\n  #define __LDREXH  __iar_builtin_LDREXH\n  #define __LDREXW  __iar_builtin_LDREX\n\n  #define __RBIT    __iar_builtin_RBIT\n  #define __REV     __iar_builtin_REV\n  #define __REV16   __iar_builtin_REV16\n\n  __IAR_FT int16_t __REVSH(int16_t val)\n  {\n    return (int16_t) __iar_builtin_REVSH(val);\n  }\n\n  #define __ROR     __iar_builtin_ROR\n  #define __RRX     __iar_builtin_RRX\n\n  #define __SEV     __iar_builtin_SEV\n\n  #define __SSAT    __iar_builtin_SSAT\n\n  #define __STREXB  __iar_builtin_STREXB\n  #define __STREXH  __iar_builtin_STREXH\n  #define __STREXW  __iar_builtin_STREX\n\n  #define __USAT    __iar_builtin_USAT\n\n  #define __WFE     __iar_builtin_WFE\n  #define __WFI     __iar_builtin_WFI\n\n  #define __SADD8   __iar_builtin_SADD8\n  #define __QADD8   __iar_builtin_QADD8\n  #define __SHADD8  __iar_builtin_SHADD8\n  #define __UADD8   __iar_builtin_UADD8\n  #define __UQADD8  __iar_builtin_UQADD8\n  #define __UHADD8  __iar_builtin_UHADD8\n  #define __SSUB8   __iar_builtin_SSUB8\n  #define __QSUB8   __iar_builtin_QSUB8\n  #define __SHSUB8  __iar_builtin_SHSUB8\n  #define __USUB8   __iar_builtin_USUB8\n  #define __UQSUB8  __iar_builtin_UQSUB8\n  #define __UHSUB8  __iar_builtin_UHSUB8\n  #define __SADD16  __iar_builtin_SADD16\n  #define __QADD16  __iar_builtin_QADD16\n  #define __SHADD16 __iar_builtin_SHADD16\n  #define __UADD16  __iar_builtin_UADD16\n  #define __UQADD16 __iar_builtin_UQADD16\n  #define __UHADD16 __iar_builtin_UHADD16\n  #define __SSUB16  __iar_builtin_SSUB16\n  #define __QSUB16  __iar_builtin_QSUB16\n  #define __SHSUB16 __iar_builtin_SHSUB16\n  #define __USUB16  __iar_builtin_USUB16\n  #define __UQSUB16 __iar_builtin_UQSUB16\n  #define __UHSUB16 __iar_builtin_UHSUB16\n  #define __SASX    __iar_builtin_SASX\n  #define __QASX    __iar_builtin_QASX\n  #define __SHASX   __iar_builtin_SHASX\n  #define __UASX    __iar_builtin_UASX\n  #define __UQASX   __iar_builtin_UQASX\n  #define __UHASX   __iar_builtin_UHASX\n  #define __SSAX    __iar_builtin_SSAX\n  #define __QSAX    __iar_builtin_QSAX\n  #define __SHSAX   __iar_builtin_SHSAX\n  #define __USAX    __iar_builtin_USAX\n  #define __UQSAX   __iar_builtin_UQSAX\n  #define __UHSAX   __iar_builtin_UHSAX\n  #define __USAD8   __iar_builtin_USAD8\n  #define __USADA8  __iar_builtin_USADA8\n  #define __SSAT16  __iar_builtin_SSAT16\n  #define __USAT16  __iar_builtin_USAT16\n  #define __UXTB16  __iar_builtin_UXTB16\n  #define __UXTAB16 __iar_builtin_UXTAB16\n  #define __SXTB16  __iar_builtin_SXTB16\n  #define __SXTAB16 __iar_builtin_SXTAB16\n  #define __SMUAD   __iar_builtin_SMUAD\n  #define __SMUADX  __iar_builtin_SMUADX\n  #define __SMMLA   __iar_builtin_SMMLA\n  #define __SMLAD   __iar_builtin_SMLAD\n  #define __SMLADX  __iar_builtin_SMLADX\n  #define __SMLALD  __iar_builtin_SMLALD\n  #define __SMLALDX __iar_builtin_SMLALDX\n  #define __SMUSD   __iar_builtin_SMUSD\n  #define __SMUSDX  __iar_builtin_SMUSDX\n  #define __SMLSD   __iar_builtin_SMLSD\n  #define __SMLSDX  __iar_builtin_SMLSDX\n  #define __SMLSLD  __iar_builtin_SMLSLD\n  #define __SMLSLDX __iar_builtin_SMLSLDX\n  #define __SEL     __iar_builtin_SEL\n  #define __QADD    __iar_builtin_QADD\n  #define __QSUB    __iar_builtin_QSUB\n  #define __PKHBT   __iar_builtin_PKHBT\n  #define __PKHTB   __iar_builtin_PKHTB\n\n#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */\n\n  #if !__FPU_PRESENT\n  #define __get_FPSCR __cmsis_iar_get_FPSR_not_active\n  #endif\n\n  #ifdef __INTRINSICS_INCLUDED\n  #error intrinsics.h is already included previously!\n  #endif\n\n  #include <intrinsics.h>\n\n  #if !__FPU_PRESENT\n  #define __get_FPSCR() (0)\n  #endif\n\n  #pragma diag_suppress=Pe940\n  #pragma diag_suppress=Pe177\n\n  #define __enable_irq        __enable_interrupt\n  #define __disable_irq       __disable_interrupt\n  #define __enable_fault_irq    __enable_fiq\n  #define __disable_fault_irq   __disable_fiq\n  #define __NOP               __no_operation\n\n  #define __get_xPSR          __get_PSR\n\n  __IAR_FT void __set_mode(uint32_t mode)\n  {\n    __ASM volatile(\"MSR  cpsr_c, %0\" : : \"r\" (mode) : \"memory\");\n  }\n\n  __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr)\n  {\n    return __LDREX((unsigned long *)ptr);\n  }\n\n  __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr)\n  {\n    return __STREX(value, (unsigned long *)ptr);\n  }\n\n\n  __IAR_FT uint32_t __RRX(uint32_t value)\n  {\n    uint32_t result;\n    __ASM(\"RRX      %0, %1\" : \"=r\"(result) : \"r\" (value) : \"cc\");\n    return(result);\n  }\n\n\n  __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2)\n  {\n    return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2));\n  }\n\n  __IAR_FT uint32_t __get_FPEXC(void)\n  {\n  #if (__FPU_PRESENT == 1)\n    uint32_t result;\n    __ASM volatile(\"VMRS %0, fpexc\" : \"=r\" (result) : : \"memory\");\n    return(result);\n  #else\n    return(0);\n  #endif\n  }\n\n  __IAR_FT void __set_FPEXC(uint32_t fpexc)\n  {\n  #if (__FPU_PRESENT == 1)\n    __ASM volatile (\"VMSR fpexc, %0\" : : \"r\" (fpexc) : \"memory\");\n  #endif\n  }\n\n\n  #define __get_CP(cp, op1, Rt, CRn, CRm, op2) \\\n    __ASM volatile(\"MRC p\" # cp \", \" # op1 \", %0, c\" # CRn \", c\" # CRm \", \" # op2 : \"=r\" (Rt) : : \"memory\" )\n  #define __set_CP(cp, op1, Rt, CRn, CRm, op2) \\\n    __ASM volatile(\"MCR p\" # cp \", \" # op1 \", %0, c\" # CRn \", c\" # CRm \", \" # op2 : : \"r\" (Rt) : \"memory\" )\n  #define __get_CP64(cp, op1, Rt, CRm) \\\n    __ASM volatile(\"MRRC p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : \"=r\" (Rt) : : \"memory\" )\n  #define __set_CP64(cp, op1, Rt, CRm) \\\n    __ASM volatile(\"MCRR p\" # cp \", \" # op1 \", %Q0, %R0, c\" # CRm  : : \"r\" (Rt) : \"memory\" )\n\n  #include \"cmsis_cp15.h\"\n\n#endif   /* __ICCARM_INTRINSICS_VERSION__ == 2 */\n\n#define __BKPT(value)    __asm volatile (\"BKPT     %0\" : : \"i\"(value))\n\n\n__IAR_FT uint32_t __get_SP_usr(void)\n{\n  uint32_t cpsr;\n  uint32_t result;\n  __ASM volatile(\n    \"MRS     %0, cpsr   \\n\"\n    \"CPS     #0x1F      \\n\" // no effect in USR mode\n    \"MOV     %1, sp     \\n\"\n    \"MSR     cpsr_c, %2 \\n\" // no effect in USR mode\n    \"ISB\" :  \"=r\"(cpsr), \"=r\"(result) : \"r\"(cpsr) : \"memory\"\n   );\n  return result;\n}\n\n__IAR_FT void __set_SP_usr(uint32_t topOfProcStack)\n{\n  uint32_t cpsr;\n  __ASM volatile(\n    \"MRS     %0, cpsr   \\n\"\n    \"CPS     #0x1F      \\n\" // no effect in USR mode\n    \"MOV     sp, %1     \\n\"\n    \"MSR     cpsr_c, %2 \\n\" // no effect in USR mode\n    \"ISB\" : \"=r\"(cpsr) : \"r\" (topOfProcStack), \"r\"(cpsr) : \"memory\"\n   );\n}\n\n#define __get_mode()                (__get_CPSR() & 0x1FU)\n\n__STATIC_INLINE\nvoid __FPU_Enable(void)\n{\n  __ASM volatile(\n    //Permit access to VFP/NEON, registers by modifying CPACR\n    \"        MRC     p15,0,R1,c1,c0,2  \\n\"\n    \"        ORR     R1,R1,#0x00F00000 \\n\"\n    \"        MCR     p15,0,R1,c1,c0,2  \\n\"\n\n    //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted\n    \"        ISB                       \\n\"\n\n    //Enable VFP/NEON\n    \"        VMRS    R1,FPEXC          \\n\"\n    \"        ORR     R1,R1,#0x40000000 \\n\"\n    \"        VMSR    FPEXC,R1          \\n\"\n\n    //Initialise VFP/NEON registers to 0\n    \"        MOV     R2,#0             \\n\"\n\n    //Initialise D16 registers to 0\n    \"        VMOV    D0, R2,R2         \\n\"\n    \"        VMOV    D1, R2,R2         \\n\"\n    \"        VMOV    D2, R2,R2         \\n\"\n    \"        VMOV    D3, R2,R2         \\n\"\n    \"        VMOV    D4, R2,R2         \\n\"\n    \"        VMOV    D5, R2,R2         \\n\"\n    \"        VMOV    D6, R2,R2         \\n\"\n    \"        VMOV    D7, R2,R2         \\n\"\n    \"        VMOV    D8, R2,R2         \\n\"\n    \"        VMOV    D9, R2,R2         \\n\"\n    \"        VMOV    D10,R2,R2         \\n\"\n    \"        VMOV    D11,R2,R2         \\n\"\n    \"        VMOV    D12,R2,R2         \\n\"\n    \"        VMOV    D13,R2,R2         \\n\"\n    \"        VMOV    D14,R2,R2         \\n\"\n    \"        VMOV    D15,R2,R2         \\n\"\n\n#ifdef __ARM_ADVANCED_SIMD__\n    //Initialise D32 registers to 0\n    \"        VMOV    D16,R2,R2         \\n\"\n    \"        VMOV    D17,R2,R2         \\n\"\n    \"        VMOV    D18,R2,R2         \\n\"\n    \"        VMOV    D19,R2,R2         \\n\"\n    \"        VMOV    D20,R2,R2         \\n\"\n    \"        VMOV    D21,R2,R2         \\n\"\n    \"        VMOV    D22,R2,R2         \\n\"\n    \"        VMOV    D23,R2,R2         \\n\"\n    \"        VMOV    D24,R2,R2         \\n\"\n    \"        VMOV    D25,R2,R2         \\n\"\n    \"        VMOV    D26,R2,R2         \\n\"\n    \"        VMOV    D27,R2,R2         \\n\"\n    \"        VMOV    D28,R2,R2         \\n\"\n    \"        VMOV    D29,R2,R2         \\n\"\n    \"        VMOV    D30,R2,R2         \\n\"\n    \"        VMOV    D31,R2,R2         \\n\"\n#endif\n\n    //Initialise FPSCR to a known state\n    \"        VMRS    R1,FPSCR          \\n\"\n    \"        MOV32   R2,#0x00086060    \\n\" //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero.\n    \"        AND     R1,R1,R2          \\n\"\n    \"        VMSR    FPSCR,R1          \\n\"\n    : : : \"cc\", \"r1\", \"r2\"\n  );\n}\n\n\n\n#undef __IAR_FT\n#undef __ICCARM_V8\n\n#pragma diag_default=Pe940\n#pragma diag_default=Pe177\n\n#endif /* __CMSIS_ICCARM_H__ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/core_ca.h",
    "content": "/**************************************************************************//**\n * @file     core_ca.h\n * @brief    CMSIS Cortex-A Core Peripheral Access Layer Header File\n * @version  V1.0.2\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CA_H_GENERIC\n#define __CORE_CA_H_GENERIC\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n\n/*  CMSIS CA definitions */\n#define __CA_CMSIS_VERSION_MAIN  (1U)                                      /*!< \\brief [31:16] CMSIS-Core(A) main version   */\n#define __CA_CMSIS_VERSION_SUB   (1U)                                      /*!< \\brief [15:0]  CMSIS-Core(A) sub version    */\n#define __CA_CMSIS_VERSION       ((__CA_CMSIS_VERSION_MAIN << 16U) | \\\n                                   __CA_CMSIS_VERSION_SUB          )       /*!< \\brief CMSIS-Core(A) version number         */\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if (__FPU_PRESENT == 1)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if (__FPU_PRESENT == 1)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TMS470__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if (__FPU_PRESENT == 1)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if (__FPU_PRESENT == 1)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if (__FPU_PRESENT == 1)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CA_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CA_H_DEPENDANT\n#define __CORE_CA_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n /* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CA_REV\n    #define __CA_REV              0x0000U\n    #warning \"__CA_REV not defined in device header file; using default!\"\n  #endif\n  \n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n    \n  #ifndef __GIC_PRESENT\n    #define __GIC_PRESENT             1U\n    #warning \"__GIC_PRESENT not defined in device header file; using default!\"\n  #endif\n  \n  #ifndef __TIM_PRESENT\n    #define __TIM_PRESENT             1U\n    #warning \"__TIM_PRESENT not defined in device header file; using default!\"\n  #endif\n  \n  #ifndef __L2C_PRESENT\n    #define __L2C_PRESENT             0U\n    #warning \"__L2C_PRESENT not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< \\brief Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< \\brief Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< \\brief Defines 'write only' permissions */\n#define     __IO    volatile             /*!< \\brief Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*!< \\brief Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*!< \\brief Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*!< \\brief Defines 'read / write' structure member permissions */\n#define RESERVED(N, T) T RESERVED##N;    // placeholder struct members used for \"reserved\" areas\n\n /*******************************************************************************\n  *                 Register Abstraction\n   Core Register contain:\n   - CPSR\n   - CP15 Registers\n   - L2C-310 Cache Controller\n   - Generic Interrupt Controller Distributor\n   - Generic Interrupt Controller Interface\n  ******************************************************************************/\n\n/* Core Register CPSR */\ntypedef union\n{\n  struct\n  {\n    uint32_t M:5;                        /*!< \\brief bit:  0.. 4  Mode field */\n    uint32_t T:1;                        /*!< \\brief bit:      5  Thumb execution state bit */\n    uint32_t F:1;                        /*!< \\brief bit:      6  FIQ mask bit */\n    uint32_t I:1;                        /*!< \\brief bit:      7  IRQ mask bit */\n    uint32_t A:1;                        /*!< \\brief bit:      8  Asynchronous abort mask bit */\n    uint32_t E:1;                        /*!< \\brief bit:      9  Endianness execution state bit */\n    uint32_t IT1:6;                      /*!< \\brief bit: 10..15  If-Then execution state bits 2-7 */\n    uint32_t GE:4;                       /*!< \\brief bit: 16..19  Greater than or Equal flags */\n    RESERVED(0:4, uint32_t)              \n    uint32_t J:1;                        /*!< \\brief bit:     24  Jazelle bit */\n    uint32_t IT0:2;                      /*!< \\brief bit: 25..26  If-Then execution state bits 0-1 */\n    uint32_t Q:1;                        /*!< \\brief bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< \\brief bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< \\brief bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< \\brief bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< \\brief bit:     31  Negative condition code flag */\n  } b;                                   /*!< \\brief Structure used for bit  access */\n  uint32_t w;                            /*!< \\brief Type      used for word access */\n} CPSR_Type;\n\n\n\n/* CPSR Register Definitions */\n#define CPSR_N_Pos                       31U                                    /*!< \\brief CPSR: N Position */\n#define CPSR_N_Msk                       (1UL << CPSR_N_Pos)                    /*!< \\brief CPSR: N Mask */\n\n#define CPSR_Z_Pos                       30U                                    /*!< \\brief CPSR: Z Position */\n#define CPSR_Z_Msk                       (1UL << CPSR_Z_Pos)                    /*!< \\brief CPSR: Z Mask */\n\n#define CPSR_C_Pos                       29U                                    /*!< \\brief CPSR: C Position */\n#define CPSR_C_Msk                       (1UL << CPSR_C_Pos)                    /*!< \\brief CPSR: C Mask */\n\n#define CPSR_V_Pos                       28U                                    /*!< \\brief CPSR: V Position */\n#define CPSR_V_Msk                       (1UL << CPSR_V_Pos)                    /*!< \\brief CPSR: V Mask */\n\n#define CPSR_Q_Pos                       27U                                    /*!< \\brief CPSR: Q Position */\n#define CPSR_Q_Msk                       (1UL << CPSR_Q_Pos)                    /*!< \\brief CPSR: Q Mask */\n\n#define CPSR_IT0_Pos                     25U                                    /*!< \\brief CPSR: IT0 Position */\n#define CPSR_IT0_Msk                     (3UL << CPSR_IT0_Pos)                  /*!< \\brief CPSR: IT0 Mask */\n\n#define CPSR_J_Pos                       24U                                    /*!< \\brief CPSR: J Position */\n#define CPSR_J_Msk                       (1UL << CPSR_J_Pos)                    /*!< \\brief CPSR: J Mask */\n\n#define CPSR_GE_Pos                      16U                                    /*!< \\brief CPSR: GE Position */\n#define CPSR_GE_Msk                      (0xFUL << CPSR_GE_Pos)                 /*!< \\brief CPSR: GE Mask */\n\n#define CPSR_IT1_Pos                     10U                                    /*!< \\brief CPSR: IT1 Position */\n#define CPSR_IT1_Msk                     (0x3FUL << CPSR_IT1_Pos)               /*!< \\brief CPSR: IT1 Mask */\n\n#define CPSR_E_Pos                       9U                                     /*!< \\brief CPSR: E Position */\n#define CPSR_E_Msk                       (1UL << CPSR_E_Pos)                    /*!< \\brief CPSR: E Mask */\n\n#define CPSR_A_Pos                       8U                                     /*!< \\brief CPSR: A Position */\n#define CPSR_A_Msk                       (1UL << CPSR_A_Pos)                    /*!< \\brief CPSR: A Mask */\n\n#define CPSR_I_Pos                       7U                                     /*!< \\brief CPSR: I Position */\n#define CPSR_I_Msk                       (1UL << CPSR_I_Pos)                    /*!< \\brief CPSR: I Mask */\n\n#define CPSR_F_Pos                       6U                                     /*!< \\brief CPSR: F Position */\n#define CPSR_F_Msk                       (1UL << CPSR_F_Pos)                    /*!< \\brief CPSR: F Mask */\n\n#define CPSR_T_Pos                       5U                                     /*!< \\brief CPSR: T Position */\n#define CPSR_T_Msk                       (1UL << CPSR_T_Pos)                    /*!< \\brief CPSR: T Mask */\n\n#define CPSR_M_Pos                       0U                                     /*!< \\brief CPSR: M Position */\n#define CPSR_M_Msk                       (0x1FUL << CPSR_M_Pos)                 /*!< \\brief CPSR: M Mask */\n\n#define CPSR_M_USR                       0x10U                                  /*!< \\brief CPSR: M User mode (PL0) */\n#define CPSR_M_FIQ                       0x11U                                  /*!< \\brief CPSR: M Fast Interrupt mode (PL1) */\n#define CPSR_M_IRQ                       0x12U                                  /*!< \\brief CPSR: M Interrupt mode (PL1) */\n#define CPSR_M_SVC                       0x13U                                  /*!< \\brief CPSR: M Supervisor mode (PL1) */\n#define CPSR_M_MON                       0x16U                                  /*!< \\brief CPSR: M Monitor mode (PL1) */\n#define CPSR_M_ABT                       0x17U                                  /*!< \\brief CPSR: M Abort mode (PL1) */\n#define CPSR_M_HYP                       0x1AU                                  /*!< \\brief CPSR: M Hypervisor mode (PL2) */\n#define CPSR_M_UND                       0x1BU                                  /*!< \\brief CPSR: M Undefined mode (PL1) */\n#define CPSR_M_SYS                       0x1FU                                  /*!< \\brief CPSR: M System mode (PL1) */\n\n/* CP15 Register SCTLR */\ntypedef union\n{\n  struct\n  {\n    uint32_t M:1;                        /*!< \\brief bit:     0  MMU enable */\n    uint32_t A:1;                        /*!< \\brief bit:     1  Alignment check enable */\n    uint32_t C:1;                        /*!< \\brief bit:     2  Cache enable */\n    RESERVED(0:2, uint32_t)              \n    uint32_t CP15BEN:1;                  /*!< \\brief bit:     5  CP15 barrier enable */\n    RESERVED(1:1, uint32_t)              \n    uint32_t B:1;                        /*!< \\brief bit:     7  Endianness model */\n    RESERVED(2:2, uint32_t)              \n    uint32_t SW:1;                       /*!< \\brief bit:    10  SWP and SWPB enable */\n    uint32_t Z:1;                        /*!< \\brief bit:    11  Branch prediction enable */\n    uint32_t I:1;                        /*!< \\brief bit:    12  Instruction cache enable */\n    uint32_t V:1;                        /*!< \\brief bit:    13  Vectors bit */\n    uint32_t RR:1;                       /*!< \\brief bit:    14  Round Robin select */\n    RESERVED(3:2, uint32_t)              \n    uint32_t HA:1;                       /*!< \\brief bit:    17  Hardware Access flag enable */\n    RESERVED(4:1, uint32_t)              \n    uint32_t WXN:1;                      /*!< \\brief bit:    19  Write permission implies XN */\n    uint32_t UWXN:1;                     /*!< \\brief bit:    20  Unprivileged write permission implies PL1 XN */\n    uint32_t FI:1;                       /*!< \\brief bit:    21  Fast interrupts configuration enable */\n    uint32_t U:1;                        /*!< \\brief bit:    22  Alignment model */\n    RESERVED(5:1, uint32_t)              \n    uint32_t VE:1;                       /*!< \\brief bit:    24  Interrupt Vectors Enable */\n    uint32_t EE:1;                       /*!< \\brief bit:    25  Exception Endianness */\n    RESERVED(6:1, uint32_t)              \n    uint32_t NMFI:1;                     /*!< \\brief bit:    27  Non-maskable FIQ (NMFI) support */\n    uint32_t TRE:1;                      /*!< \\brief bit:    28  TEX remap enable. */\n    uint32_t AFE:1;                      /*!< \\brief bit:    29  Access flag enable */\n    uint32_t TE:1;                       /*!< \\brief bit:    30  Thumb Exception enable */\n    RESERVED(7:1, uint32_t)              \n  } b;                                   /*!< \\brief Structure used for bit  access */\n  uint32_t w;                            /*!< \\brief Type      used for word access */\n} SCTLR_Type;\n\n#define SCTLR_TE_Pos                     30U                                    /*!< \\brief SCTLR: TE Position */\n#define SCTLR_TE_Msk                     (1UL << SCTLR_TE_Pos)                  /*!< \\brief SCTLR: TE Mask */\n\n#define SCTLR_AFE_Pos                    29U                                    /*!< \\brief SCTLR: AFE Position */\n#define SCTLR_AFE_Msk                    (1UL << SCTLR_AFE_Pos)                 /*!< \\brief SCTLR: AFE Mask */\n\n#define SCTLR_TRE_Pos                    28U                                    /*!< \\brief SCTLR: TRE Position */\n#define SCTLR_TRE_Msk                    (1UL << SCTLR_TRE_Pos)                 /*!< \\brief SCTLR: TRE Mask */\n\n#define SCTLR_NMFI_Pos                   27U                                    /*!< \\brief SCTLR: NMFI Position */\n#define SCTLR_NMFI_Msk                   (1UL << SCTLR_NMFI_Pos)                /*!< \\brief SCTLR: NMFI Mask */\n\n#define SCTLR_EE_Pos                     25U                                    /*!< \\brief SCTLR: EE Position */\n#define SCTLR_EE_Msk                     (1UL << SCTLR_EE_Pos)                  /*!< \\brief SCTLR: EE Mask */\n\n#define SCTLR_VE_Pos                     24U                                    /*!< \\brief SCTLR: VE Position */\n#define SCTLR_VE_Msk                     (1UL << SCTLR_VE_Pos)                  /*!< \\brief SCTLR: VE Mask */\n\n#define SCTLR_U_Pos                      22U                                    /*!< \\brief SCTLR: U Position */\n#define SCTLR_U_Msk                      (1UL << SCTLR_U_Pos)                   /*!< \\brief SCTLR: U Mask */\n\n#define SCTLR_FI_Pos                     21U                                    /*!< \\brief SCTLR: FI Position */\n#define SCTLR_FI_Msk                     (1UL << SCTLR_FI_Pos)                  /*!< \\brief SCTLR: FI Mask */\n\n#define SCTLR_UWXN_Pos                   20U                                    /*!< \\brief SCTLR: UWXN Position */\n#define SCTLR_UWXN_Msk                   (1UL << SCTLR_UWXN_Pos)                /*!< \\brief SCTLR: UWXN Mask */\n\n#define SCTLR_WXN_Pos                    19U                                    /*!< \\brief SCTLR: WXN Position */\n#define SCTLR_WXN_Msk                    (1UL << SCTLR_WXN_Pos)                 /*!< \\brief SCTLR: WXN Mask */\n\n#define SCTLR_HA_Pos                     17U                                    /*!< \\brief SCTLR: HA Position */\n#define SCTLR_HA_Msk                     (1UL << SCTLR_HA_Pos)                  /*!< \\brief SCTLR: HA Mask */\n\n#define SCTLR_RR_Pos                     14U                                    /*!< \\brief SCTLR: RR Position */\n#define SCTLR_RR_Msk                     (1UL << SCTLR_RR_Pos)                  /*!< \\brief SCTLR: RR Mask */\n\n#define SCTLR_V_Pos                      13U                                    /*!< \\brief SCTLR: V Position */\n#define SCTLR_V_Msk                      (1UL << SCTLR_V_Pos)                   /*!< \\brief SCTLR: V Mask */\n\n#define SCTLR_I_Pos                      12U                                    /*!< \\brief SCTLR: I Position */\n#define SCTLR_I_Msk                      (1UL << SCTLR_I_Pos)                   /*!< \\brief SCTLR: I Mask */\n\n#define SCTLR_Z_Pos                      11U                                    /*!< \\brief SCTLR: Z Position */\n#define SCTLR_Z_Msk                      (1UL << SCTLR_Z_Pos)                   /*!< \\brief SCTLR: Z Mask */\n\n#define SCTLR_SW_Pos                     10U                                    /*!< \\brief SCTLR: SW Position */\n#define SCTLR_SW_Msk                     (1UL << SCTLR_SW_Pos)                  /*!< \\brief SCTLR: SW Mask */\n\n#define SCTLR_B_Pos                      7U                                     /*!< \\brief SCTLR: B Position */\n#define SCTLR_B_Msk                      (1UL << SCTLR_B_Pos)                   /*!< \\brief SCTLR: B Mask */\n\n#define SCTLR_CP15BEN_Pos                5U                                     /*!< \\brief SCTLR: CP15BEN Position */\n#define SCTLR_CP15BEN_Msk                (1UL << SCTLR_CP15BEN_Pos)             /*!< \\brief SCTLR: CP15BEN Mask */\n\n#define SCTLR_C_Pos                      2U                                     /*!< \\brief SCTLR: C Position */\n#define SCTLR_C_Msk                      (1UL << SCTLR_C_Pos)                   /*!< \\brief SCTLR: C Mask */\n\n#define SCTLR_A_Pos                      1U                                     /*!< \\brief SCTLR: A Position */\n#define SCTLR_A_Msk                      (1UL << SCTLR_A_Pos)                   /*!< \\brief SCTLR: A Mask */\n\n#define SCTLR_M_Pos                      0U                                     /*!< \\brief SCTLR: M Position */\n#define SCTLR_M_Msk                      (1UL << SCTLR_M_Pos)                   /*!< \\brief SCTLR: M Mask */\n\n/* CP15 Register ACTLR */\ntypedef union\n{\n#if __CORTEX_A == 5 || defined(DOXYGEN)\n  /** \\brief Structure used for bit access on Cortex-A5 */\n  struct\n  {\n    uint32_t FW:1;                      /*!< \\brief bit:      0  Cache and TLB maintenance broadcast */\n    RESERVED(0:5, uint32_t)              \n    uint32_t SMP:1;                      /*!< \\brief bit:     6  Enables coherent requests to the processor */\n    uint32_t EXCL:1;                     /*!< \\brief bit:     7  Exclusive L1/L2 cache control */\n    RESERVED(1:2, uint32_t)\n    uint32_t DODMBS:1;                   /*!< \\brief bit:    10  Disable optimized data memory barrier behavior */\n    uint32_t DWBST:1;                    /*!< \\brief bit:    11  AXI data write bursts to Normal memory */\n    uint32_t RADIS:1;                    /*!< \\brief bit:    12  L1 Data Cache read-allocate mode disable */\n    uint32_t L1PCTL:2;                   /*!< \\brief bit:13..14  L1 Data prefetch control */    \n    uint32_t BP:2;                       /*!< \\brief bit:16..15  Branch prediction policy */\n    uint32_t RSDIS:1;                    /*!< \\brief bit:    17  Disable return stack operation */\n    uint32_t BTDIS:1;                    /*!< \\brief bit:    18  Disable indirect Branch Target Address Cache (BTAC) */\n    RESERVED(3:9, uint32_t)             \n    uint32_t DBDI:1;                     /*!< \\brief bit:    28  Disable branch dual issue */\n    RESERVED(7:3, uint32_t)              \n } b;\n#endif  \n#if __CORTEX_A == 7 || defined(DOXYGEN)\n  /** \\brief Structure used for bit access on Cortex-A7 */\n  struct\n  {\n    RESERVED(0:6, uint32_t)              \n    uint32_t SMP:1;                      /*!< \\brief bit:     6  Enables coherent requests to the processor */\n    RESERVED(1:3, uint32_t)              \n    uint32_t DODMBS:1;                   /*!< \\brief bit:    10  Disable optimized data memory barrier behavior */\n    uint32_t L2RADIS:1;                  /*!< \\brief bit:    11  L2 Data Cache read-allocate mode disable */\n    uint32_t L1RADIS:1;                  /*!< \\brief bit:    12  L1 Data Cache read-allocate mode disable */\n    uint32_t L1PCTL:2;                   /*!< \\brief bit:13..14  L1 Data prefetch control */\n    uint32_t DDVM:1;                     /*!< \\brief bit:    15  Disable Distributed Virtual Memory (DVM) transactions */\n    RESERVED(3:12, uint32_t)             \n    uint32_t DDI:1;                      /*!< \\brief bit:    28  Disable dual issue */\n    RESERVED(7:3, uint32_t)              \n  } b;\n#endif  \n#if __CORTEX_A == 9 || defined(DOXYGEN)\n  /** \\brief Structure used for bit access on Cortex-A9 */\n  struct\n  {\n    uint32_t FW:1;                       /*!< \\brief bit:     0  Cache and TLB maintenance broadcast */\n    RESERVED(0:1, uint32_t)\n    uint32_t L1PE:1;                     /*!< \\brief bit:     2  Dside prefetch */\n    uint32_t WFLZM:1;                    /*!< \\brief bit:     3  Cache and TLB maintenance broadcast */\n    RESERVED(1:2, uint32_t)\n    uint32_t SMP:1;                      /*!< \\brief bit:     6  Enables coherent requests to the processor */\n    uint32_t EXCL:1;                     /*!< \\brief bit:     7  Exclusive L1/L2 cache control */\n    uint32_t AOW:1;                      /*!< \\brief bit:     8  Enable allocation in one cache way only */\n    uint32_t PARITY:1;                   /*!< \\brief bit:     9  Support for parity checking, if implemented */\n    RESERVED(7:22, uint32_t)              \n  } b;\n#endif  \n  uint32_t w;                            /*!< \\brief Type      used for word access */\n} ACTLR_Type;\n\n#define ACTLR_DDI_Pos                    28U                                     /*!< \\brief ACTLR: DDI Position */\n#define ACTLR_DDI_Msk                    (1UL << ACTLR_DDI_Pos)                  /*!< \\brief ACTLR: DDI Mask */\n\n#define ACTLR_DBDI_Pos                   28U                                     /*!< \\brief ACTLR: DBDI Position */\n#define ACTLR_DBDI_Msk                   (1UL << ACTLR_DBDI_Pos)                 /*!< \\brief ACTLR: DBDI Mask */\n\n#define ACTLR_BTDIS_Pos                  18U                                     /*!< \\brief ACTLR: BTDIS Position */\n#define ACTLR_BTDIS_Msk                  (1UL << ACTLR_BTDIS_Pos)                /*!< \\brief ACTLR: BTDIS Mask */\n\n#define ACTLR_RSDIS_Pos                  17U                                     /*!< \\brief ACTLR: RSDIS Position */\n#define ACTLR_RSDIS_Msk                  (1UL << ACTLR_RSDIS_Pos)                /*!< \\brief ACTLR: RSDIS Mask */\n\n#define ACTLR_BP_Pos                     15U                                     /*!< \\brief ACTLR: BP Position */\n#define ACTLR_BP_Msk                     (3UL << ACTLR_BP_Pos)                   /*!< \\brief ACTLR: BP Mask */\n\n#define ACTLR_DDVM_Pos                   15U                                     /*!< \\brief ACTLR: DDVM Position */\n#define ACTLR_DDVM_Msk                   (1UL << ACTLR_DDVM_Pos)                 /*!< \\brief ACTLR: DDVM Mask */\n\n#define ACTLR_L1PCTL_Pos                 13U                                     /*!< \\brief ACTLR: L1PCTL Position */\n#define ACTLR_L1PCTL_Msk                 (3UL << ACTLR_L1PCTL_Pos)               /*!< \\brief ACTLR: L1PCTL Mask */\n\n#define ACTLR_RADIS_Pos                  12U                                     /*!< \\brief ACTLR: RADIS Position */\n#define ACTLR_RADIS_Msk                  (1UL << ACTLR_RADIS_Pos)                /*!< \\brief ACTLR: RADIS Mask */\n\n#define ACTLR_L1RADIS_Pos                12U                                     /*!< \\brief ACTLR: L1RADIS Position */\n#define ACTLR_L1RADIS_Msk                (1UL << ACTLR_L1RADIS_Pos)              /*!< \\brief ACTLR: L1RADIS Mask */\n\n#define ACTLR_DWBST_Pos                  11U                                     /*!< \\brief ACTLR: DWBST Position */\n#define ACTLR_DWBST_Msk                  (1UL << ACTLR_DWBST_Pos)                /*!< \\brief ACTLR: DWBST Mask */\n\n#define ACTLR_L2RADIS_Pos                11U                                     /*!< \\brief ACTLR: L2RADIS Position */\n#define ACTLR_L2RADIS_Msk                (1UL << ACTLR_L2RADIS_Pos)              /*!< \\brief ACTLR: L2RADIS Mask */\n\n#define ACTLR_DODMBS_Pos                 10U                                     /*!< \\brief ACTLR: DODMBS Position */\n#define ACTLR_DODMBS_Msk                 (1UL << ACTLR_DODMBS_Pos)               /*!< \\brief ACTLR: DODMBS Mask */\n\n#define ACTLR_PARITY_Pos                 9U                                      /*!< \\brief ACTLR: PARITY Position */\n#define ACTLR_PARITY_Msk                 (1UL << ACTLR_PARITY_Pos)               /*!< \\brief ACTLR: PARITY Mask */\n\n#define ACTLR_AOW_Pos                    8U                                      /*!< \\brief ACTLR: AOW Position */\n#define ACTLR_AOW_Msk                    (1UL << ACTLR_AOW_Pos)                  /*!< \\brief ACTLR: AOW Mask */\n\n#define ACTLR_EXCL_Pos                   7U                                      /*!< \\brief ACTLR: EXCL Position */\n#define ACTLR_EXCL_Msk                   (1UL << ACTLR_EXCL_Pos)                 /*!< \\brief ACTLR: EXCL Mask */\n\n#define ACTLR_SMP_Pos                    6U                                      /*!< \\brief ACTLR: SMP Position */\n#define ACTLR_SMP_Msk                    (1UL << ACTLR_SMP_Pos)                  /*!< \\brief ACTLR: SMP Mask */\n\n#define ACTLR_WFLZM_Pos                  3U                                      /*!< \\brief ACTLR: WFLZM Position */\n#define ACTLR_WFLZM_Msk                  (1UL << ACTLR_WFLZM_Pos)                /*!< \\brief ACTLR: WFLZM Mask */\n\n#define ACTLR_L1PE_Pos                   2U                                      /*!< \\brief ACTLR: L1PE Position */\n#define ACTLR_L1PE_Msk                   (1UL << ACTLR_L1PE_Pos)                 /*!< \\brief ACTLR: L1PE Mask */\n\n#define ACTLR_FW_Pos                     0U                                      /*!< \\brief ACTLR: FW Position */\n#define ACTLR_FW_Msk                     (1UL << ACTLR_FW_Pos)                   /*!< \\brief ACTLR: FW Mask */\n\n/* CP15 Register CPACR */\ntypedef union\n{\n  struct\n  {\n    uint32_t CP0:2;                      /*!< \\brief bit:  0..1  Access rights for coprocessor 0 */\n    uint32_t CP1:2;                      /*!< \\brief bit:  2..3  Access rights for coprocessor 1 */\n    uint32_t CP2:2;                      /*!< \\brief bit:  4..5  Access rights for coprocessor 2 */\n    uint32_t CP3:2;                      /*!< \\brief bit:  6..7  Access rights for coprocessor 3 */\n    uint32_t CP4:2;                      /*!< \\brief bit:  8..9  Access rights for coprocessor 4 */\n    uint32_t CP5:2;                      /*!< \\brief bit:10..11  Access rights for coprocessor 5 */\n    uint32_t CP6:2;                      /*!< \\brief bit:12..13  Access rights for coprocessor 6 */\n    uint32_t CP7:2;                      /*!< \\brief bit:14..15  Access rights for coprocessor 7 */\n    uint32_t CP8:2;                      /*!< \\brief bit:16..17  Access rights for coprocessor 8 */\n    uint32_t CP9:2;                      /*!< \\brief bit:18..19  Access rights for coprocessor 9 */\n    uint32_t CP10:2;                     /*!< \\brief bit:20..21  Access rights for coprocessor 10 */\n    uint32_t CP11:2;                     /*!< \\brief bit:22..23  Access rights for coprocessor 11 */\n    uint32_t CP12:2;                     /*!< \\brief bit:24..25  Access rights for coprocessor 11 */\n    uint32_t CP13:2;                     /*!< \\brief bit:26..27  Access rights for coprocessor 11 */\n    uint32_t TRCDIS:1;                   /*!< \\brief bit:    28  Disable CP14 access to trace registers */\n    RESERVED(0:1, uint32_t)              \n    uint32_t D32DIS:1;                   /*!< \\brief bit:    30  Disable use of registers D16-D31 of the VFP register file */\n    uint32_t ASEDIS:1;                   /*!< \\brief bit:    31  Disable Advanced SIMD Functionality */\n  } b;                                   /*!< \\brief Structure used for bit  access */\n  uint32_t w;                            /*!< \\brief Type      used for word access */\n} CPACR_Type;\n\n#define CPACR_ASEDIS_Pos                 31U                                    /*!< \\brief CPACR: ASEDIS Position */\n#define CPACR_ASEDIS_Msk                 (1UL << CPACR_ASEDIS_Pos)              /*!< \\brief CPACR: ASEDIS Mask */\n\n#define CPACR_D32DIS_Pos                 30U                                    /*!< \\brief CPACR: D32DIS Position */\n#define CPACR_D32DIS_Msk                 (1UL << CPACR_D32DIS_Pos)              /*!< \\brief CPACR: D32DIS Mask */\n\n#define CPACR_TRCDIS_Pos                 28U                                    /*!< \\brief CPACR: D32DIS Position */\n#define CPACR_TRCDIS_Msk                 (1UL << CPACR_D32DIS_Pos)              /*!< \\brief CPACR: D32DIS Mask */\n\n#define CPACR_CP_Pos_(n)                 (n*2U)                                 /*!< \\brief CPACR: CPn Position */\n#define CPACR_CP_Msk_(n)                 (3UL << CPACR_CP_Pos_(n))              /*!< \\brief CPACR: CPn Mask */\n\n#define CPACR_CP_NA                      0U                                     /*!< \\brief CPACR CPn field: Access denied. */\n#define CPACR_CP_PL1                     1U                                     /*!< \\brief CPACR CPn field: Accessible from PL1 only. */\n#define CPACR_CP_FA                      3U                                     /*!< \\brief CPACR CPn field: Full access. */\n\n/* CP15 Register DFSR */\ntypedef union\n{\n  struct\n  {\n    uint32_t FS0:4;                      /*!< \\brief bit: 0.. 3  Fault Status bits bit 0-3 */\n    uint32_t Domain:4;                   /*!< \\brief bit: 4.. 7  Fault on which domain */\n    RESERVED(0:1, uint32_t)              \n    uint32_t LPAE:1;                     /*!< \\brief bit:     9  Large Physical Address Extension */\n    uint32_t FS1:1;                      /*!< \\brief bit:    10  Fault Status bits bit 4 */\n    uint32_t WnR:1;                      /*!< \\brief bit:    11  Write not Read bit */\n    uint32_t ExT:1;                      /*!< \\brief bit:    12  External abort type */\n    uint32_t CM:1;                       /*!< \\brief bit:    13  Cache maintenance fault */\n    RESERVED(1:18, uint32_t)             \n  } s;                                   /*!< \\brief Structure used for bit  access in short format */\n  struct\n  {\n    uint32_t STATUS:5;                   /*!< \\brief bit: 0.. 5  Fault Status bits */\n    RESERVED(0:3, uint32_t)              \n    uint32_t LPAE:1;                     /*!< \\brief bit:     9  Large Physical Address Extension */\n    RESERVED(1:1, uint32_t)              \n    uint32_t WnR:1;                      /*!< \\brief bit:    11  Write not Read bit */\n    uint32_t ExT:1;                      /*!< \\brief bit:    12  External abort type */\n    uint32_t CM:1;                       /*!< \\brief bit:    13  Cache maintenance fault */\n    RESERVED(2:18, uint32_t)             \n  } l;                                   /*!< \\brief Structure used for bit  access in long format */\n  uint32_t w;                            /*!< \\brief Type      used for word access */\n} DFSR_Type;\n\n#define DFSR_CM_Pos                      13U                                    /*!< \\brief DFSR: CM Position */\n#define DFSR_CM_Msk                      (1UL << DFSR_CM_Pos)                   /*!< \\brief DFSR: CM Mask */\n\n#define DFSR_Ext_Pos                     12U                                    /*!< \\brief DFSR: Ext Position */\n#define DFSR_Ext_Msk                     (1UL << DFSR_Ext_Pos)                  /*!< \\brief DFSR: Ext Mask */\n\n#define DFSR_WnR_Pos                     11U                                    /*!< \\brief DFSR: WnR Position */\n#define DFSR_WnR_Msk                     (1UL << DFSR_WnR_Pos)                  /*!< \\brief DFSR: WnR Mask */\n\n#define DFSR_FS1_Pos                     10U                                    /*!< \\brief DFSR: FS1 Position */\n#define DFSR_FS1_Msk                     (1UL << DFSR_FS1_Pos)                  /*!< \\brief DFSR: FS1 Mask */\n\n#define DFSR_LPAE_Pos                    9U                                    /*!< \\brief DFSR: LPAE Position */\n#define DFSR_LPAE_Msk                    (1UL << DFSR_LPAE_Pos)                /*!< \\brief DFSR: LPAE Mask */\n\n#define DFSR_Domain_Pos                  4U                                     /*!< \\brief DFSR: Domain Position */\n#define DFSR_Domain_Msk                  (0xFUL << DFSR_Domain_Pos)             /*!< \\brief DFSR: Domain Mask */\n\n#define DFSR_FS0_Pos                     0U                                     /*!< \\brief DFSR: FS0 Position */\n#define DFSR_FS0_Msk                     (0xFUL << DFSR_FS0_Pos)                /*!< \\brief DFSR: FS0 Mask */\n\n#define DFSR_STATUS_Pos                  0U                                     /*!< \\brief DFSR: STATUS Position */\n#define DFSR_STATUS_Msk                  (0x3FUL << DFSR_STATUS_Pos)            /*!< \\brief DFSR: STATUS Mask */\n\n/* CP15 Register IFSR */\ntypedef union\n{\n  struct\n  {\n    uint32_t FS0:4;                      /*!< \\brief bit: 0.. 3  Fault Status bits bit 0-3 */\n    RESERVED(0:5, uint32_t)              \n    uint32_t LPAE:1;                     /*!< \\brief bit:     9  Large Physical Address Extension */\n    uint32_t FS1:1;                      /*!< \\brief bit:    10  Fault Status bits bit 4 */\n    RESERVED(1:1, uint32_t)              \n    uint32_t ExT:1;                      /*!< \\brief bit:    12  External abort type */\n    RESERVED(2:19, uint32_t)             \n  } s;                                   /*!< \\brief Structure used for bit access in short format */\n  struct\n  {\n    uint32_t STATUS:6;                   /*!< \\brief bit: 0.. 5  Fault Status bits */\n    RESERVED(0:3, uint32_t)              \n    uint32_t LPAE:1;                     /*!< \\brief bit:     9  Large Physical Address Extension */\n    RESERVED(1:2, uint32_t)              \n    uint32_t ExT:1;                      /*!< \\brief bit:    12  External abort type */\n    RESERVED(2:19, uint32_t)             \n  } l;                                   /*!< \\brief Structure used for bit access in long format */\n  uint32_t w;                            /*!< \\brief Type      used for word access */\n} IFSR_Type;\n\n#define IFSR_ExT_Pos                     12U                                    /*!< \\brief IFSR: ExT Position */\n#define IFSR_ExT_Msk                     (1UL << IFSR_ExT_Pos)                  /*!< \\brief IFSR: ExT Mask */\n\n#define IFSR_FS1_Pos                     10U                                    /*!< \\brief IFSR: FS1 Position */\n#define IFSR_FS1_Msk                     (1UL << IFSR_FS1_Pos)                  /*!< \\brief IFSR: FS1 Mask */\n\n#define IFSR_LPAE_Pos                    9U                                     /*!< \\brief IFSR: LPAE Position */\n#define IFSR_LPAE_Msk                    (0x1UL << IFSR_LPAE_Pos)               /*!< \\brief IFSR: LPAE Mask */\n\n#define IFSR_FS0_Pos                     0U                                     /*!< \\brief IFSR: FS0 Position */\n#define IFSR_FS0_Msk                     (0xFUL << IFSR_FS0_Pos)                /*!< \\brief IFSR: FS0 Mask */\n\n#define IFSR_STATUS_Pos                  0U                                     /*!< \\brief IFSR: STATUS Position */\n#define IFSR_STATUS_Msk                  (0x3FUL << IFSR_STATUS_Pos)            /*!< \\brief IFSR: STATUS Mask */\n\n/* CP15 Register ISR */\ntypedef union\n{\n  struct\n  {\n    RESERVED(0:6, uint32_t)              \n    uint32_t F:1;                        /*!< \\brief bit:     6  FIQ pending bit */\n    uint32_t I:1;                        /*!< \\brief bit:     7  IRQ pending bit */\n    uint32_t A:1;                        /*!< \\brief bit:     8  External abort pending bit */\n    RESERVED(1:23, uint32_t)             \n  } b;                                   /*!< \\brief Structure used for bit  access */\n  uint32_t w;                            /*!< \\brief Type      used for word access */\n} ISR_Type;\n\n#define ISR_A_Pos                        13U                                    /*!< \\brief ISR: A Position */\n#define ISR_A_Msk                        (1UL << ISR_A_Pos)                     /*!< \\brief ISR: A Mask */\n\n#define ISR_I_Pos                        12U                                    /*!< \\brief ISR: I Position */\n#define ISR_I_Msk                        (1UL << ISR_I_Pos)                     /*!< \\brief ISR: I Mask */\n\n#define ISR_F_Pos                        11U                                    /*!< \\brief ISR: F Position */\n#define ISR_F_Msk                        (1UL << ISR_F_Pos)                     /*!< \\brief ISR: F Mask */\n\n/* DACR Register */\n#define DACR_D_Pos_(n)                   (2U*n)                                 /*!< \\brief DACR: Dn Position */\n#define DACR_D_Msk_(n)                   (3UL << DACR_D_Pos_(n))                /*!< \\brief DACR: Dn Mask */\n#define DACR_Dn_NOACCESS                 0U                                     /*!< \\brief DACR Dn field: No access */\n#define DACR_Dn_CLIENT                   1U                                     /*!< \\brief DACR Dn field: Client */\n#define DACR_Dn_MANAGER                  3U                                     /*!< \\brief DACR Dn field: Manager */\n\n/**\n  \\brief     Mask and shift a bit field value for use in a register bit range.\n  \\param [in] field  Name of the register bit field.\n  \\param [in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param [in] field  Name of the register bit field.\n  \\param [in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n\n/**\n \\brief  Union type to access the L2C_310 Cache Controller.\n*/\n#if (__L2C_PRESENT == 1U) || defined(DOXYGEN)\ntypedef struct\n{\n  __IM  uint32_t CACHE_ID;                   /*!< \\brief Offset: 0x0000 (R/ ) Cache ID Register               */\n  __IM  uint32_t CACHE_TYPE;                 /*!< \\brief Offset: 0x0004 (R/ ) Cache Type Register             */\n        RESERVED(0[0x3e], uint32_t)\n  __IOM uint32_t CONTROL;                    /*!< \\brief Offset: 0x0100 (R/W) Control Register                */\n  __IOM uint32_t AUX_CNT;                    /*!< \\brief Offset: 0x0104 (R/W) Auxiliary Control               */\n        RESERVED(1[0x3e], uint32_t)\n  __IOM uint32_t EVENT_CONTROL;              /*!< \\brief Offset: 0x0200 (R/W) Event Counter Control           */\n  __IOM uint32_t EVENT_COUNTER1_CONF;        /*!< \\brief Offset: 0x0204 (R/W) Event Counter 1 Configuration   */\n  __IOM uint32_t EVENT_COUNTER0_CONF;        /*!< \\brief Offset: 0x0208 (R/W) Event Counter 1 Configuration   */\n        RESERVED(2[0x2], uint32_t)\n  __IOM uint32_t INTERRUPT_MASK;             /*!< \\brief Offset: 0x0214 (R/W) Interrupt Mask                  */\n  __IM  uint32_t MASKED_INT_STATUS;          /*!< \\brief Offset: 0x0218 (R/ ) Masked Interrupt Status         */\n  __IM  uint32_t RAW_INT_STATUS;             /*!< \\brief Offset: 0x021c (R/ ) Raw Interrupt Status            */\n  __OM  uint32_t INTERRUPT_CLEAR;            /*!< \\brief Offset: 0x0220 ( /W) Interrupt Clear                 */\n        RESERVED(3[0x143], uint32_t)\n  __IOM uint32_t CACHE_SYNC;                 /*!< \\brief Offset: 0x0730 (R/W) Cache Sync                      */\n        RESERVED(4[0xf], uint32_t)\n  __IOM uint32_t INV_LINE_PA;                /*!< \\brief Offset: 0x0770 (R/W) Invalidate Line By PA           */\n        RESERVED(6[2], uint32_t)\n  __IOM uint32_t INV_WAY;                    /*!< \\brief Offset: 0x077c (R/W) Invalidate by Way               */\n        RESERVED(5[0xc], uint32_t)\n  __IOM uint32_t CLEAN_LINE_PA;              /*!< \\brief Offset: 0x07b0 (R/W) Clean Line by PA                */\n        RESERVED(7[1], uint32_t)\n  __IOM uint32_t CLEAN_LINE_INDEX_WAY;       /*!< \\brief Offset: 0x07b8 (R/W) Clean Line by Index/Way         */\n  __IOM uint32_t CLEAN_WAY;                  /*!< \\brief Offset: 0x07bc (R/W) Clean by Way                    */\n        RESERVED(8[0xc], uint32_t)\n  __IOM uint32_t CLEAN_INV_LINE_PA;          /*!< \\brief Offset: 0x07f0 (R/W) Clean and Invalidate Line by PA  */\n        RESERVED(9[1], uint32_t)\n  __IOM uint32_t CLEAN_INV_LINE_INDEX_WAY;   /*!< \\brief Offset: 0x07f8 (R/W) Clean and Invalidate Line by Index/Way  */\n  __IOM uint32_t CLEAN_INV_WAY;              /*!< \\brief Offset: 0x07fc (R/W) Clean and Invalidate by Way     */\n        RESERVED(10[0x40], uint32_t)\n  __IOM uint32_t DATA_LOCK_0_WAY;            /*!< \\brief Offset: 0x0900 (R/W) Data Lockdown 0 by Way          */\n  __IOM uint32_t INST_LOCK_0_WAY;            /*!< \\brief Offset: 0x0904 (R/W) Instruction Lockdown 0 by Way   */\n  __IOM uint32_t DATA_LOCK_1_WAY;            /*!< \\brief Offset: 0x0908 (R/W) Data Lockdown 1 by Way          */\n  __IOM uint32_t INST_LOCK_1_WAY;            /*!< \\brief Offset: 0x090c (R/W) Instruction Lockdown 1 by Way   */\n  __IOM uint32_t DATA_LOCK_2_WAY;            /*!< \\brief Offset: 0x0910 (R/W) Data Lockdown 2 by Way          */\n  __IOM uint32_t INST_LOCK_2_WAY;            /*!< \\brief Offset: 0x0914 (R/W) Instruction Lockdown 2 by Way   */\n  __IOM uint32_t DATA_LOCK_3_WAY;            /*!< \\brief Offset: 0x0918 (R/W) Data Lockdown 3 by Way          */\n  __IOM uint32_t INST_LOCK_3_WAY;            /*!< \\brief Offset: 0x091c (R/W) Instruction Lockdown 3 by Way   */\n  __IOM uint32_t DATA_LOCK_4_WAY;            /*!< \\brief Offset: 0x0920 (R/W) Data Lockdown 4 by Way          */\n  __IOM uint32_t INST_LOCK_4_WAY;            /*!< \\brief Offset: 0x0924 (R/W) Instruction Lockdown 4 by Way   */\n  __IOM uint32_t DATA_LOCK_5_WAY;            /*!< \\brief Offset: 0x0928 (R/W) Data Lockdown 5 by Way          */\n  __IOM uint32_t INST_LOCK_5_WAY;            /*!< \\brief Offset: 0x092c (R/W) Instruction Lockdown 5 by Way   */\n  __IOM uint32_t DATA_LOCK_6_WAY;            /*!< \\brief Offset: 0x0930 (R/W) Data Lockdown 5 by Way          */\n  __IOM uint32_t INST_LOCK_6_WAY;            /*!< \\brief Offset: 0x0934 (R/W) Instruction Lockdown 5 by Way   */\n  __IOM uint32_t DATA_LOCK_7_WAY;            /*!< \\brief Offset: 0x0938 (R/W) Data Lockdown 6 by Way          */\n  __IOM uint32_t INST_LOCK_7_WAY;            /*!< \\brief Offset: 0x093c (R/W) Instruction Lockdown 6 by Way   */\n        RESERVED(11[0x4], uint32_t)\n  __IOM uint32_t LOCK_LINE_EN;               /*!< \\brief Offset: 0x0950 (R/W) Lockdown by Line Enable         */\n  __IOM uint32_t UNLOCK_ALL_BY_WAY;          /*!< \\brief Offset: 0x0954 (R/W) Unlock All Lines by Way         */\n        RESERVED(12[0xaa], uint32_t)\n  __IOM uint32_t ADDRESS_FILTER_START;       /*!< \\brief Offset: 0x0c00 (R/W) Address Filtering Start         */\n  __IOM uint32_t ADDRESS_FILTER_END;         /*!< \\brief Offset: 0x0c04 (R/W) Address Filtering End           */\n        RESERVED(13[0xce], uint32_t)\n  __IOM uint32_t DEBUG_CONTROL;              /*!< \\brief Offset: 0x0f40 (R/W) Debug Control Register          */\n} L2C_310_TypeDef;\n\n#define L2C_310           ((L2C_310_TypeDef *)L2C_310_BASE) /*!< \\brief L2C_310 register set access pointer */\n#endif\n\n#if (__GIC_PRESENT == 1U) || defined(DOXYGEN)\n    \n/** \\brief  Structure type to access the Generic Interrupt Controller Distributor (GICD)\n*/\ntypedef struct\n{\n  __IOM uint32_t CTLR;                 /*!< \\brief  Offset: 0x000 (R/W) Distributor Control Register */\n  __IM  uint32_t TYPER;                /*!< \\brief  Offset: 0x004 (R/ ) Interrupt Controller Type Register */\n  __IM  uint32_t IIDR;                 /*!< \\brief  Offset: 0x008 (R/ ) Distributor Implementer Identification Register */\n        RESERVED(0, uint32_t)\n  __IOM uint32_t STATUSR;              /*!< \\brief  Offset: 0x010 (R/W) Error Reporting Status Register, optional */\n        RESERVED(1[11], uint32_t)\n  __OM  uint32_t SETSPI_NSR;           /*!< \\brief  Offset: 0x040 ( /W) Set SPI Register */\n        RESERVED(2, uint32_t)\n  __OM  uint32_t CLRSPI_NSR;           /*!< \\brief  Offset: 0x048 ( /W) Clear SPI Register */\n        RESERVED(3, uint32_t)\n  __OM  uint32_t SETSPI_SR;            /*!< \\brief  Offset: 0x050 ( /W) Set SPI, Secure Register */\n        RESERVED(4, uint32_t)\n  __OM  uint32_t CLRSPI_SR;            /*!< \\brief  Offset: 0x058 ( /W) Clear SPI, Secure Register */\n        RESERVED(5[9], uint32_t)\n  __IOM uint32_t IGROUPR[32];          /*!< \\brief  Offset: 0x080 (R/W) Interrupt Group Registers */\n  __IOM uint32_t ISENABLER[32];        /*!< \\brief  Offset: 0x100 (R/W) Interrupt Set-Enable Registers */\n  __IOM uint32_t ICENABLER[32];        /*!< \\brief  Offset: 0x180 (R/W) Interrupt Clear-Enable Registers */\n  __IOM uint32_t ISPENDR[32];          /*!< \\brief  Offset: 0x200 (R/W) Interrupt Set-Pending Registers */\n  __IOM uint32_t ICPENDR[32];          /*!< \\brief  Offset: 0x280 (R/W) Interrupt Clear-Pending Registers */\n  __IOM uint32_t ISACTIVER[32];        /*!< \\brief  Offset: 0x300 (R/W) Interrupt Set-Active Registers */\n  __IOM uint32_t ICACTIVER[32];        /*!< \\brief  Offset: 0x380 (R/W) Interrupt Clear-Active Registers */\n  __IOM uint32_t IPRIORITYR[255];      /*!< \\brief  Offset: 0x400 (R/W) Interrupt Priority Registers */\n        RESERVED(6, uint32_t)\n  __IOM uint32_t  ITARGETSR[255];      /*!< \\brief  Offset: 0x800 (R/W) Interrupt Targets Registers */\n        RESERVED(7, uint32_t)\n  __IOM uint32_t ICFGR[64];            /*!< \\brief  Offset: 0xC00 (R/W) Interrupt Configuration Registers */\n  __IOM uint32_t IGRPMODR[32];         /*!< \\brief  Offset: 0xD00 (R/W) Interrupt Group Modifier Registers */\n        RESERVED(8[32], uint32_t)\n  __IOM uint32_t NSACR[64];            /*!< \\brief  Offset: 0xE00 (R/W) Non-secure Access Control Registers */\n  __OM  uint32_t SGIR;                 /*!< \\brief  Offset: 0xF00 ( /W) Software Generated Interrupt Register */\n        RESERVED(9[3], uint32_t)\n  __IOM uint32_t CPENDSGIR[4];         /*!< \\brief  Offset: 0xF10 (R/W) SGI Clear-Pending Registers */\n  __IOM uint32_t SPENDSGIR[4];         /*!< \\brief  Offset: 0xF20 (R/W) SGI Set-Pending Registers */\n        RESERVED(10[5236], uint32_t)\n  __IOM uint64_t IROUTER[988];         /*!< \\brief  Offset: 0x6100(R/W) Interrupt Routing Registers */\n}  GICDistributor_Type;\n\n#define GICDistributor      ((GICDistributor_Type      *)     GIC_DISTRIBUTOR_BASE ) /*!< \\brief GIC Distributor register set access pointer */\n\n/** \\brief  Structure type to access the Generic Interrupt Controller Interface (GICC)\n*/\ntypedef struct\n{\n  __IOM uint32_t CTLR;                 /*!< \\brief  Offset: 0x000 (R/W) CPU Interface Control Register */\n  __IOM uint32_t PMR;                  /*!< \\brief  Offset: 0x004 (R/W) Interrupt Priority Mask Register */\n  __IOM uint32_t BPR;                  /*!< \\brief  Offset: 0x008 (R/W) Binary Point Register */\n  __IM  uint32_t IAR;                  /*!< \\brief  Offset: 0x00C (R/ ) Interrupt Acknowledge Register */\n  __OM  uint32_t EOIR;                 /*!< \\brief  Offset: 0x010 ( /W) End Of Interrupt Register */\n  __IM  uint32_t RPR;                  /*!< \\brief  Offset: 0x014 (R/ ) Running Priority Register */\n  __IM  uint32_t HPPIR;                /*!< \\brief  Offset: 0x018 (R/ ) Highest Priority Pending Interrupt Register */\n  __IOM uint32_t ABPR;                 /*!< \\brief  Offset: 0x01C (R/W) Aliased Binary Point Register */\n  __IM  uint32_t AIAR;                 /*!< \\brief  Offset: 0x020 (R/ ) Aliased Interrupt Acknowledge Register */\n  __OM  uint32_t AEOIR;                /*!< \\brief  Offset: 0x024 ( /W) Aliased End Of Interrupt Register */\n  __IM  uint32_t AHPPIR;               /*!< \\brief  Offset: 0x028 (R/ ) Aliased Highest Priority Pending Interrupt Register */\n  __IOM uint32_t STATUSR;              /*!< \\brief  Offset: 0x02C (R/W) Error Reporting Status Register, optional */\n        RESERVED(1[40], uint32_t)\n  __IOM uint32_t APR[4];               /*!< \\brief  Offset: 0x0D0 (R/W) Active Priority Register */\n  __IOM uint32_t NSAPR[4];             /*!< \\brief  Offset: 0x0E0 (R/W) Non-secure Active Priority Register */\n        RESERVED(2[3], uint32_t)\n  __IM  uint32_t IIDR;                 /*!< \\brief  Offset: 0x0FC (R/ ) CPU Interface Identification Register */\n        RESERVED(3[960], uint32_t)\n  __OM  uint32_t DIR;                  /*!< \\brief  Offset: 0x1000( /W) Deactivate Interrupt Register */\n}  GICInterface_Type;\n\n#define GICInterface        ((GICInterface_Type        *)     GIC_INTERFACE_BASE )   /*!< \\brief GIC Interface register set access pointer */\n#endif\n\n#if (__TIM_PRESENT == 1U) || defined(DOXYGEN)\n#if ((__CORTEX_A == 5U) || (__CORTEX_A == 9U)) || defined(DOXYGEN)\n/** \\brief Structure type to access the Private Timer\n*/\ntypedef struct\n{\n  __IOM uint32_t LOAD;            //!< \\brief  Offset: 0x000 (R/W) Private Timer Load Register\n  __IOM uint32_t COUNTER;         //!< \\brief  Offset: 0x004 (R/W) Private Timer Counter Register\n  __IOM uint32_t CONTROL;         //!< \\brief  Offset: 0x008 (R/W) Private Timer Control Register\n  __IOM uint32_t ISR;             //!< \\brief  Offset: 0x00C (R/W) Private Timer Interrupt Status Register\n        RESERVED(0[4], uint32_t)\n  __IOM uint32_t WLOAD;           //!< \\brief  Offset: 0x020 (R/W) Watchdog Load Register\n  __IOM uint32_t WCOUNTER;        //!< \\brief  Offset: 0x024 (R/W) Watchdog Counter Register\n  __IOM uint32_t WCONTROL;        //!< \\brief  Offset: 0x028 (R/W) Watchdog Control Register\n  __IOM uint32_t WISR;            //!< \\brief  Offset: 0x02C (R/W) Watchdog Interrupt Status Register\n  __IOM uint32_t WRESET;          //!< \\brief  Offset: 0x030 (R/W) Watchdog Reset Status Register\n  __OM  uint32_t WDISABLE;        //!< \\brief  Offset: 0x034 ( /W) Watchdog Disable Register\n} Timer_Type;\n#define PTIM ((Timer_Type *) TIMER_BASE )   /*!< \\brief Timer register struct */\n#endif\n#endif\n\n /*******************************************************************************\n  *                Hardware Abstraction Layer\n   Core Function Interface contains:\n   - L1 Cache Functions\n   - L2C-310 Cache Controller Functions \n   - PL1 Timer Functions\n   - GIC Functions\n   - MMU Functions\n  ******************************************************************************/\n \n/* ##########################  L1 Cache functions  ################################# */\n\n/** \\brief Enable Caches by setting I and C bits in SCTLR register.\n*/\n__STATIC_FORCEINLINE void L1C_EnableCaches(void) {\n  __set_SCTLR( __get_SCTLR() | SCTLR_I_Msk | SCTLR_C_Msk);\n  __ISB();\n}\n\n/** \\brief Disable Caches by clearing I and C bits in SCTLR register.\n*/\n__STATIC_FORCEINLINE void L1C_DisableCaches(void) {\n  __set_SCTLR( __get_SCTLR() & (~SCTLR_I_Msk) & (~SCTLR_C_Msk));\n  __ISB();\n}\n\n/** \\brief  Enable Branch Prediction by setting Z bit in SCTLR register.\n*/\n__STATIC_FORCEINLINE void L1C_EnableBTAC(void) {\n  __set_SCTLR( __get_SCTLR() | SCTLR_Z_Msk);\n  __ISB();\n}\n\n/** \\brief  Disable Branch Prediction by clearing Z bit in SCTLR register.\n*/\n__STATIC_FORCEINLINE void L1C_DisableBTAC(void) {\n  __set_SCTLR( __get_SCTLR() & (~SCTLR_Z_Msk));\n  __ISB();\n}\n\n/** \\brief  Invalidate entire branch predictor array\n*/\n__STATIC_FORCEINLINE void L1C_InvalidateBTAC(void) {\n  __set_BPIALL(0);\n  __DSB();     //ensure completion of the invalidation\n  __ISB();     //ensure instruction fetch path sees new state\n}\n\n/** \\brief  Invalidate the whole instruction cache\n*/\n__STATIC_FORCEINLINE void L1C_InvalidateICacheAll(void) {\n  __set_ICIALLU(0);\n  __DSB();     //ensure completion of the invalidation\n  __ISB();     //ensure instruction fetch path sees new I cache state\n}\n\n/** \\brief  Clean data cache line by address.\n* \\param [in] va Pointer to data to clear the cache for.\n*/\n__STATIC_FORCEINLINE void L1C_CleanDCacheMVA(void *va) {\n  __set_DCCMVAC((uint32_t)va);\n  __DMB();     //ensure the ordering of data cache maintenance operations and their effects\n}\n\n/** \\brief  Invalidate data cache line by address.\n* \\param [in] va Pointer to data to invalidate the cache for.\n*/\n__STATIC_FORCEINLINE void L1C_InvalidateDCacheMVA(void *va) {\n  __set_DCIMVAC((uint32_t)va);\n  __DMB();     //ensure the ordering of data cache maintenance operations and their effects\n}\n\n/** \\brief  Clean and Invalidate data cache by address.\n* \\param [in] va Pointer to data to invalidate the cache for.\n*/\n__STATIC_FORCEINLINE void L1C_CleanInvalidateDCacheMVA(void *va) {\n  __set_DCCIMVAC((uint32_t)va);\n  __DMB();     //ensure the ordering of data cache maintenance operations and their effects\n}\n\n/** \\brief Calculate log2 rounded up\n*  - log(0)  => 0\n*  - log(1)  => 0\n*  - log(2)  => 1\n*  - log(3)  => 2\n*  - log(4)  => 2\n*  - log(5)  => 3\n*        :      :\n*  - log(16) => 4\n*  - log(32) => 5\n*        :      :\n* \\param [in] n input value parameter \n* \\return log2(n)\n*/\n__STATIC_FORCEINLINE uint8_t __log2_up(uint32_t n)\n{\n  if (n < 2U) {\n    return 0U;\n  }\n  uint8_t log = 0U;\n  uint32_t t = n;\n  while(t > 1U)\n  {\n    log++;\n    t >>= 1U;\n  }\n  if (n & 1U) { log++; }\n  return log;\n}\n\n/** \\brief  Apply cache maintenance to given cache level.\n* \\param [in] level cache level to be maintained\n* \\param [in] maint 0 - invalidate, 1 - clean, otherwise - invalidate and clean\n*/\n__STATIC_FORCEINLINE void __L1C_MaintainDCacheSetWay(uint32_t level, uint32_t maint)\n{\n  uint32_t Dummy;\n  uint32_t ccsidr;\n  uint32_t num_sets;\n  uint32_t num_ways;\n  uint32_t shift_way;\n  uint32_t log2_linesize;\n   int32_t log2_num_ways;\n\n  Dummy = level << 1U;\n  /* set csselr, select ccsidr register */\n  __set_CSSELR(Dummy);\n  /* get current ccsidr register */\n  ccsidr = __get_CCSIDR();\n  num_sets = ((ccsidr & 0x0FFFE000U) >> 13U) + 1U;\n  num_ways = ((ccsidr & 0x00001FF8U) >> 3U) + 1U;\n  log2_linesize = (ccsidr & 0x00000007U) + 2U + 2U;\n  log2_num_ways = __log2_up(num_ways);\n  if ((log2_num_ways < 0) || (log2_num_ways > 32)) {\n    return; // FATAL ERROR\n  }\n  shift_way = 32U - (uint32_t)log2_num_ways;\n  for(int32_t way = num_ways-1; way >= 0; way--)\n  {\n    for(int32_t set = num_sets-1; set >= 0; set--)\n    {\n      Dummy = (level << 1U) | (((uint32_t)set) << log2_linesize) | (((uint32_t)way) << shift_way);\n      switch (maint)\n      {\n        case 0U: __set_DCISW(Dummy);  break;\n        case 1U: __set_DCCSW(Dummy);  break;\n        default: __set_DCCISW(Dummy); break;\n      }\n    }\n  }\n  __DMB();\n}\n\n/** \\brief  Clean and Invalidate the entire data or unified cache\n* Generic mechanism for cleaning/invalidating the entire data or unified cache to the point of coherency\n* \\param [in] op 0 - invalidate, 1 - clean, otherwise - invalidate and clean\n*/\n__STATIC_FORCEINLINE void L1C_CleanInvalidateCache(uint32_t op) {\n  uint32_t clidr;\n  uint32_t cache_type;\n  clidr =  __get_CLIDR();\n  for(uint32_t i = 0U; i<7U; i++)\n  {\n    cache_type = (clidr >> i*3U) & 0x7UL;\n    if ((cache_type >= 2U) && (cache_type <= 4U))\n    {\n      __L1C_MaintainDCacheSetWay(i, op);\n    }\n  }\n}\n\n/** \\brief  Clean and Invalidate the entire data or unified cache\n* Generic mechanism for cleaning/invalidating the entire data or unified cache to the point of coherency\n* \\param [in] op 0 - invalidate, 1 - clean, otherwise - invalidate and clean\n* \\deprecated Use generic L1C_CleanInvalidateCache instead.\n*/\nCMSIS_DEPRECATED\n__STATIC_FORCEINLINE void __L1C_CleanInvalidateCache(uint32_t op) {\n  L1C_CleanInvalidateCache(op);\n}\n\n/** \\brief  Invalidate the whole data cache.\n*/\n__STATIC_FORCEINLINE void L1C_InvalidateDCacheAll(void) {\n  L1C_CleanInvalidateCache(0);\n}\n\n/** \\brief  Clean the whole data cache.\n */\n__STATIC_FORCEINLINE void L1C_CleanDCacheAll(void) {\n  L1C_CleanInvalidateCache(1);\n}\n\n/** \\brief  Clean and invalidate the whole data cache.\n */\n__STATIC_FORCEINLINE void L1C_CleanInvalidateDCacheAll(void) {\n  L1C_CleanInvalidateCache(2);\n}\n\n/* ##########################  L2 Cache functions  ################################# */\n#if (__L2C_PRESENT == 1U) || defined(DOXYGEN)\n/** \\brief Cache Sync operation by writing CACHE_SYNC register.\n*/\n__STATIC_INLINE void L2C_Sync(void)\n{\n  L2C_310->CACHE_SYNC = 0x0;\n}\n\n/** \\brief Read cache controller cache ID from CACHE_ID register.\n * \\return L2C_310_TypeDef::CACHE_ID\n */\n__STATIC_INLINE int L2C_GetID (void)\n{\n  return L2C_310->CACHE_ID;\n}\n\n/** \\brief Read cache controller cache type from CACHE_TYPE register.\n*  \\return L2C_310_TypeDef::CACHE_TYPE\n*/\n__STATIC_INLINE int L2C_GetType (void)\n{\n  return L2C_310->CACHE_TYPE;\n}\n\n/** \\brief Invalidate all cache by way\n*/\n__STATIC_INLINE void L2C_InvAllByWay (void)\n{\n  unsigned int assoc;\n\n  if (L2C_310->AUX_CNT & (1U << 16U)) {\n    assoc = 16U;\n  } else {\n    assoc =  8U;\n  }\n  \n  L2C_310->INV_WAY = (1U << assoc) - 1U;\n  while(L2C_310->INV_WAY & ((1U << assoc) - 1U)); //poll invalidate\n\n  L2C_Sync();\n}\n\n/** \\brief Clean and Invalidate all cache by way\n*/\n__STATIC_INLINE void L2C_CleanInvAllByWay (void)\n{\n  unsigned int assoc;\n\n  if (L2C_310->AUX_CNT & (1U << 16U)) {\n    assoc = 16U;\n  } else {\n    assoc =  8U;\n  }\n\n  L2C_310->CLEAN_INV_WAY = (1U << assoc) - 1U;\n  while(L2C_310->CLEAN_INV_WAY & ((1U << assoc) - 1U)); //poll invalidate\n\n  L2C_Sync();\n}\n\n/** \\brief Enable Level 2 Cache\n*/\n__STATIC_INLINE void L2C_Enable(void)\n{\n  L2C_310->CONTROL = 0;\n  L2C_310->INTERRUPT_CLEAR = 0x000001FFuL;\n  L2C_310->DEBUG_CONTROL = 0;\n  L2C_310->DATA_LOCK_0_WAY = 0;\n  L2C_310->CACHE_SYNC = 0;\n  L2C_310->CONTROL = 0x01;\n  L2C_Sync();\n}\n\n/** \\brief Disable Level 2 Cache\n*/\n__STATIC_INLINE void L2C_Disable(void)\n{\n  L2C_310->CONTROL = 0x00;\n  L2C_Sync();\n}\n\n/** \\brief Invalidate cache by physical address\n* \\param [in] pa Pointer to data to invalidate cache for.\n*/\n__STATIC_INLINE void L2C_InvPa (void *pa)\n{\n  L2C_310->INV_LINE_PA = (unsigned int)pa;\n  L2C_Sync();\n}\n\n/** \\brief Clean cache by physical address\n* \\param [in] pa Pointer to data to invalidate cache for.\n*/\n__STATIC_INLINE void L2C_CleanPa (void *pa)\n{\n  L2C_310->CLEAN_LINE_PA = (unsigned int)pa;\n  L2C_Sync();\n}\n\n/** \\brief Clean and invalidate cache by physical address\n* \\param [in] pa Pointer to data to invalidate cache for.\n*/\n__STATIC_INLINE void L2C_CleanInvPa (void *pa)\n{\n  L2C_310->CLEAN_INV_LINE_PA = (unsigned int)pa;\n  L2C_Sync();\n}\n#endif\n\n/* ##########################  GIC functions  ###################################### */\n#if (__GIC_PRESENT == 1U) || defined(DOXYGEN)\n  \n/** \\brief  Enable the interrupt distributor using the GIC's CTLR register.\n*/\n__STATIC_INLINE void GIC_EnableDistributor(void)\n{\n  GICDistributor->CTLR |= 1U;\n}\n\n/** \\brief Disable the interrupt distributor using the GIC's CTLR register.\n*/\n__STATIC_INLINE void GIC_DisableDistributor(void)\n{\n  GICDistributor->CTLR &=~1U;\n}\n\n/** \\brief Read the GIC's TYPER register.\n* \\return GICDistributor_Type::TYPER\n*/\n__STATIC_INLINE uint32_t GIC_DistributorInfo(void)\n{\n  return (GICDistributor->TYPER);\n}\n\n/** \\brief Reads the GIC's IIDR register.\n* \\return GICDistributor_Type::IIDR\n*/\n__STATIC_INLINE uint32_t GIC_DistributorImplementer(void)\n{\n  return (GICDistributor->IIDR);\n}\n\n/** \\brief Sets the GIC's ITARGETSR register for the given interrupt.\n* \\param [in] IRQn Interrupt to be configured.\n* \\param [in] cpu_target CPU interfaces to assign this interrupt to.\n*/\n__STATIC_INLINE void GIC_SetTarget(IRQn_Type IRQn, uint32_t cpu_target)\n{\n  uint32_t mask = GICDistributor->ITARGETSR[IRQn / 4U] & ~(0xFFUL << ((IRQn % 4U) * 8U));\n  GICDistributor->ITARGETSR[IRQn / 4U] = mask | ((cpu_target & 0xFFUL) << ((IRQn % 4U) * 8U));\n}\n\n/** \\brief Read the GIC's ITARGETSR register.\n* \\param [in] IRQn Interrupt to acquire the configuration for.\n* \\return GICDistributor_Type::ITARGETSR\n*/\n__STATIC_INLINE uint32_t GIC_GetTarget(IRQn_Type IRQn)\n{\n  return (GICDistributor->ITARGETSR[IRQn / 4U] >> ((IRQn % 4U) * 8U)) & 0xFFUL;\n}\n\n/** \\brief Enable the CPU's interrupt interface.\n*/\n__STATIC_INLINE void GIC_EnableInterface(void)\n{\n  GICInterface->CTLR |= 1U; //enable interface\n}\n\n/** \\brief Disable the CPU's interrupt interface.\n*/\n__STATIC_INLINE void GIC_DisableInterface(void)\n{\n  GICInterface->CTLR &=~1U; //disable distributor\n}\n\n/** \\brief Read the CPU's IAR register.\n* \\return GICInterface_Type::IAR\n*/\n__STATIC_INLINE IRQn_Type GIC_AcknowledgePending(void)\n{\n  return (IRQn_Type)(GICInterface->IAR);\n}\n\n/** \\brief Writes the given interrupt number to the CPU's EOIR register.\n* \\param [in] IRQn The interrupt to be signaled as finished.\n*/\n__STATIC_INLINE void GIC_EndInterrupt(IRQn_Type IRQn)\n{\n  GICInterface->EOIR = IRQn;\n}\n\n/** \\brief Enables the given interrupt using GIC's ISENABLER register.\n* \\param [in] IRQn The interrupt to be enabled.\n*/\n__STATIC_INLINE void GIC_EnableIRQ(IRQn_Type IRQn)\n{\n  GICDistributor->ISENABLER[IRQn / 32U] = 1U << (IRQn % 32U);\n}\n\n/** \\brief Get interrupt enable status using GIC's ISENABLER register.\n* \\param [in] IRQn The interrupt to be queried.\n* \\return 0 - interrupt is not enabled, 1 - interrupt is enabled.\n*/\n__STATIC_INLINE uint32_t GIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  return (GICDistributor->ISENABLER[IRQn / 32U] >> (IRQn % 32U)) & 1UL;\n}\n\n/** \\brief Disables the given interrupt using GIC's ICENABLER register.\n* \\param [in] IRQn The interrupt to be disabled.\n*/\n__STATIC_INLINE void GIC_DisableIRQ(IRQn_Type IRQn)\n{\n  GICDistributor->ICENABLER[IRQn / 32U] = 1U << (IRQn % 32U);\n}\n\n/** \\brief Get interrupt pending status from GIC's ISPENDR register.\n* \\param [in] IRQn The interrupt to be queried.\n* \\return 0 - interrupt is not pending, 1 - interrupt is pendig.\n*/\n__STATIC_INLINE uint32_t GIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  uint32_t pend;\n\n  if (IRQn >= 16U) {\n    pend = (GICDistributor->ISPENDR[IRQn / 32U] >> (IRQn % 32U)) & 1UL;\n  } else {\n    // INTID 0-15 Software Generated Interrupt\n    pend = (GICDistributor->SPENDSGIR[IRQn / 4U] >> ((IRQn % 4U) * 8U)) & 0xFFUL;\n    // No CPU identification offered\n    if (pend != 0U) {\n      pend = 1U;\n    } else {\n      pend = 0U;\n    }\n  }\n\n  return (pend);\n}\n\n/** \\brief Sets the given interrupt as pending using GIC's ISPENDR register.\n* \\param [in] IRQn The interrupt to be enabled.\n*/\n__STATIC_INLINE void GIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if (IRQn >= 16U) {\n    GICDistributor->ISPENDR[IRQn / 32U] = 1U << (IRQn % 32U);\n  } else {\n    // INTID 0-15 Software Generated Interrupt\n    GICDistributor->SPENDSGIR[IRQn / 4U] = 1U << ((IRQn % 4U) * 8U);\n  }\n}\n\n/** \\brief Clears the given interrupt from being pending using GIC's ICPENDR register.\n* \\param [in] IRQn The interrupt to be enabled.\n*/\n__STATIC_INLINE void GIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if (IRQn >= 16U) {\n    GICDistributor->ICPENDR[IRQn / 32U] = 1U << (IRQn % 32U);\n  } else {\n    // INTID 0-15 Software Generated Interrupt\n    GICDistributor->CPENDSGIR[IRQn / 4U] = 1U << ((IRQn % 4U) * 8U);\n  }\n}\n\n/** \\brief Sets the interrupt configuration using GIC's ICFGR register.\n* \\param [in] IRQn The interrupt to be configured.\n* \\param [in] int_config Int_config field value. Bit 0: Reserved (0 - N-N model, 1 - 1-N model for some GIC before v1)\n*                                           Bit 1: 0 - level sensitive, 1 - edge triggered\n*/\n__STATIC_INLINE void GIC_SetConfiguration(IRQn_Type IRQn, uint32_t int_config)\n{\n  uint32_t icfgr = GICDistributor->ICFGR[IRQn / 16U];\n  uint32_t shift = (IRQn % 16U) << 1U;\n\n  icfgr &= (~(3U         << shift));\n  icfgr |= (  int_config << shift);\n\n  GICDistributor->ICFGR[IRQn / 16U] = icfgr;\n}\n\n/** \\brief Get the interrupt configuration from the GIC's ICFGR register.\n* \\param [in] IRQn Interrupt to acquire the configuration for.\n* \\return Int_config field value. Bit 0: Reserved (0 - N-N model, 1 - 1-N model for some GIC before v1)\n*                                 Bit 1: 0 - level sensitive, 1 - edge triggered\n*/\n__STATIC_INLINE uint32_t GIC_GetConfiguration(IRQn_Type IRQn)\n{\n  return (GICDistributor->ICFGR[IRQn / 16U] >> ((IRQn % 16U) >> 1U));\n}\n\n/** \\brief Set the priority for the given interrupt in the GIC's IPRIORITYR register.\n* \\param [in] IRQn The interrupt to be configured.\n* \\param [in] priority The priority for the interrupt, lower values denote higher priorities.\n*/\n__STATIC_INLINE void GIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  uint32_t mask = GICDistributor->IPRIORITYR[IRQn / 4U] & ~(0xFFUL << ((IRQn % 4U) * 8U));\n  GICDistributor->IPRIORITYR[IRQn / 4U] = mask | ((priority & 0xFFUL) << ((IRQn % 4U) * 8U));\n}\n\n/** \\brief Read the current interrupt priority from GIC's IPRIORITYR register.\n* \\param [in] IRQn The interrupt to be queried.\n*/\n__STATIC_INLINE uint32_t GIC_GetPriority(IRQn_Type IRQn)\n{\n  return (GICDistributor->IPRIORITYR[IRQn / 4U] >> ((IRQn % 4U) * 8U)) & 0xFFUL;\n}\n\n/** \\brief Set the interrupt priority mask using CPU's PMR register.\n* \\param [in] priority Priority mask to be set.\n*/\n__STATIC_INLINE void GIC_SetInterfacePriorityMask(uint32_t priority)\n{\n  GICInterface->PMR = priority & 0xFFUL; //set priority mask\n}\n\n/** \\brief Read the current interrupt priority mask from CPU's PMR register.\n* \\result GICInterface_Type::PMR\n*/\n__STATIC_INLINE uint32_t GIC_GetInterfacePriorityMask(void)\n{\n  return GICInterface->PMR;\n}\n\n/** \\brief Configures the group priority and subpriority split point using CPU's BPR register.\n* \\param [in] binary_point Amount of bits used as subpriority.\n*/\n__STATIC_INLINE void GIC_SetBinaryPoint(uint32_t binary_point)\n{\n  GICInterface->BPR = binary_point & 7U; //set binary point\n}\n\n/** \\brief Read the current group priority and subpriority split point from CPU's BPR register.\n* \\return GICInterface_Type::BPR\n*/\n__STATIC_INLINE uint32_t GIC_GetBinaryPoint(void)\n{\n  return GICInterface->BPR;\n}\n\n/** \\brief Get the status for a given interrupt.\n* \\param [in] IRQn The interrupt to get status for.\n* \\return 0 - not pending/active, 1 - pending, 2 - active, 3 - pending and active\n*/\n__STATIC_INLINE uint32_t GIC_GetIRQStatus(IRQn_Type IRQn)\n{\n  uint32_t pending, active;\n\n  active = ((GICDistributor->ISACTIVER[IRQn / 32U])  >> (IRQn % 32U)) & 1UL;\n  pending = ((GICDistributor->ISPENDR[IRQn / 32U]) >> (IRQn % 32U)) & 1UL;\n\n  return ((active<<1U) | pending);\n}\n\n/** \\brief Generate a software interrupt using GIC's SGIR register.\n* \\param [in] IRQn Software interrupt to be generated.\n* \\param [in] target_list List of CPUs the software interrupt should be forwarded to.\n* \\param [in] filter_list Filter to be applied to determine interrupt receivers.\n*/\n__STATIC_INLINE void GIC_SendSGI(IRQn_Type IRQn, uint32_t target_list, uint32_t filter_list)\n{\n  GICDistributor->SGIR = ((filter_list & 3U) << 24U) | ((target_list & 0xFFUL) << 16U) | (IRQn & 0x0FUL);\n}\n\n/** \\brief Get the interrupt number of the highest interrupt pending from CPU's HPPIR register.\n* \\return GICInterface_Type::HPPIR\n*/\n__STATIC_INLINE uint32_t GIC_GetHighPendingIRQ(void) \n{ \n  return GICInterface->HPPIR; \n}\n\n/** \\brief Provides information about the implementer and revision of the CPU interface.\n* \\return GICInterface_Type::IIDR\n*/\n__STATIC_INLINE uint32_t GIC_GetInterfaceId(void)\n{ \n  return GICInterface->IIDR; \n}\n\n/** \\brief Set the interrupt group from the GIC's IGROUPR register.\n* \\param [in] IRQn The interrupt to be queried.\n* \\param [in] group Interrupt group number: 0 - Group 0, 1 - Group 1\n*/\n__STATIC_INLINE void GIC_SetGroup(IRQn_Type IRQn, uint32_t group)\n{\n  uint32_t igroupr = GICDistributor->IGROUPR[IRQn / 32U];\n  uint32_t shift   = (IRQn % 32U);\n\n  igroupr &= (~(1U          << shift));\n  igroupr |= ( (group & 1U) << shift);\n\n  GICDistributor->IGROUPR[IRQn / 32U] = igroupr;\n}\n#define GIC_SetSecurity         GIC_SetGroup\n\n/** \\brief Get the interrupt group from the GIC's IGROUPR register.\n* \\param [in] IRQn The interrupt to be queried.\n* \\return 0 - Group 0, 1 - Group 1\n*/\n__STATIC_INLINE uint32_t GIC_GetGroup(IRQn_Type IRQn)\n{\n  return (GICDistributor->IGROUPR[IRQn / 32U] >> (IRQn % 32U)) & 1UL;\n}\n#define GIC_GetSecurity         GIC_GetGroup\n\n/** \\brief Initialize the interrupt distributor.\n*/\n__STATIC_INLINE void GIC_DistInit(void)\n{\n  uint32_t i;\n  uint32_t num_irq = 0U;\n  uint32_t priority_field;\n\n  //A reset sets all bits in the IGROUPRs corresponding to the SPIs to 0,\n  //configuring all of the interrupts as Secure.\n\n  //Disable interrupt forwarding\n  GIC_DisableDistributor();\n  //Get the maximum number of interrupts that the GIC supports\n  num_irq = 32U * ((GIC_DistributorInfo() & 0x1FU) + 1U);\n\n  /* Priority level is implementation defined.\n   To determine the number of priority bits implemented write 0xFF to an IPRIORITYR\n   priority field and read back the value stored.*/\n  GIC_SetPriority((IRQn_Type)0U, 0xFFU);\n  priority_field = GIC_GetPriority((IRQn_Type)0U);\n\n  for (i = 32U; i < num_irq; i++)\n  {\n      //Disable the SPI interrupt\n      GIC_DisableIRQ((IRQn_Type)i);\n      //Set level-sensitive (and N-N model)\n      GIC_SetConfiguration((IRQn_Type)i, 0U);\n      //Set priority\n      GIC_SetPriority((IRQn_Type)i, priority_field/2U);\n      //Set target list to CPU0\n      GIC_SetTarget((IRQn_Type)i, 1U);\n  }\n  //Enable distributor\n  GIC_EnableDistributor();\n}\n\n/** \\brief Initialize the CPU's interrupt interface\n*/\n__STATIC_INLINE void GIC_CPUInterfaceInit(void)\n{\n  uint32_t i;\n  uint32_t priority_field;\n\n  //A reset sets all bits in the IGROUPRs corresponding to the SPIs to 0,\n  //configuring all of the interrupts as Secure.\n\n  //Disable interrupt forwarding\n  GIC_DisableInterface();\n\n  /* Priority level is implementation defined.\n   To determine the number of priority bits implemented write 0xFF to an IPRIORITYR\n   priority field and read back the value stored.*/\n  GIC_SetPriority((IRQn_Type)0U, 0xFFU);\n  priority_field = GIC_GetPriority((IRQn_Type)0U);\n\n  //SGI and PPI\n  for (i = 0U; i < 32U; i++)\n  {\n    if(i > 15U) {\n      //Set level-sensitive (and N-N model) for PPI\n      GIC_SetConfiguration((IRQn_Type)i, 0U);\n    }\n    //Disable SGI and PPI interrupts\n    GIC_DisableIRQ((IRQn_Type)i);\n    //Set priority\n    GIC_SetPriority((IRQn_Type)i, priority_field/2U);\n  }\n  //Enable interface\n  GIC_EnableInterface();\n  //Set binary point to 0\n  GIC_SetBinaryPoint(0U);\n  //Set priority mask\n  GIC_SetInterfacePriorityMask(0xFFU);\n}\n\n/** \\brief Initialize and enable the GIC\n*/\n__STATIC_INLINE void GIC_Enable(void)\n{\n  GIC_DistInit();\n  GIC_CPUInterfaceInit(); //per CPU\n}\n#endif\n\n/* ##########################  Generic Timer functions  ############################ */\n#if (__TIM_PRESENT == 1U) || defined(DOXYGEN)\n  \n/* PL1 Physical Timer */\n#if (__CORTEX_A == 7U) || defined(DOXYGEN)\n  \n/** \\brief Physical Timer Control register */\ntypedef union\n{\n  struct\n  {\n    uint32_t ENABLE:1;      /*!< \\brief bit: 0      Enables the timer. */\n    uint32_t IMASK:1;       /*!< \\brief bit: 1      Timer output signal mask bit. */\n    uint32_t ISTATUS:1;     /*!< \\brief bit: 2      The status of the timer. */\n    RESERVED(0:29, uint32_t)\n  } b;                      /*!< \\brief Structure used for bit  access */\n  uint32_t w;               /*!< \\brief Type      used for word access */\n} CNTP_CTL_Type;\n\n/** \\brief Configures the frequency the timer shall run at.\n* \\param [in] value The timer frequency in Hz.\n*/\n__STATIC_INLINE void PL1_SetCounterFrequency(uint32_t value)\n{\n  __set_CNTFRQ(value);\n  __ISB();\n}\n\n/** \\brief Sets the reset value of the timer.\n* \\param [in] value The value the timer is loaded with.\n*/\n__STATIC_INLINE void PL1_SetLoadValue(uint32_t value)\n{\n  __set_CNTP_TVAL(value);\n  __ISB();\n}\n\n/** \\brief Get the current counter value.\n* \\return Current counter value.\n*/\n__STATIC_INLINE uint32_t PL1_GetCurrentValue(void)\n{\n  return(__get_CNTP_TVAL());\n}\n\n/** \\brief Get the current physical counter value.\n* \\return Current physical counter value.\n*/\n__STATIC_INLINE uint64_t PL1_GetCurrentPhysicalValue(void)\n{\n  return(__get_CNTPCT());\n}\n\n/** \\brief Set the physical compare value.\n* \\param [in] value New physical timer compare value.\n*/\n__STATIC_INLINE void PL1_SetPhysicalCompareValue(uint64_t value)\n{\n  __set_CNTP_CVAL(value);\n  __ISB();\n}\n\n/** \\brief Get the physical compare value.\n* \\return Physical compare value.\n*/\n__STATIC_INLINE uint64_t PL1_GetPhysicalCompareValue(void)\n{\n  return(__get_CNTP_CVAL());\n}\n\n/** \\brief Configure the timer by setting the control value.\n* \\param [in] value New timer control value.\n*/\n__STATIC_INLINE void PL1_SetControl(uint32_t value)\n{\n  __set_CNTP_CTL(value);\n  __ISB();\n}\n\n/** \\brief Get the control value.\n* \\return Control value.\n*/\n__STATIC_INLINE uint32_t PL1_GetControl(void)\n{\n  return(__get_CNTP_CTL());\n}\n#endif\n\n/* Private Timer */\n#if ((__CORTEX_A == 5U) || (__CORTEX_A == 9U)) || defined(DOXYGEN)\n/** \\brief Set the load value to timers LOAD register.\n* \\param [in] value The load value to be set.\n*/\n__STATIC_INLINE void PTIM_SetLoadValue(uint32_t value)\n{\n  PTIM->LOAD = value;\n}\n\n/** \\brief Get the load value from timers LOAD register.\n* \\return Timer_Type::LOAD\n*/\n__STATIC_INLINE uint32_t PTIM_GetLoadValue(void)\n{\n  return(PTIM->LOAD);\n}\n\n/** \\brief Set current counter value from its COUNTER register.\n*/\n__STATIC_INLINE void PTIM_SetCurrentValue(uint32_t value)\n{\n  PTIM->COUNTER = value;\n}\n\n/** \\brief Get current counter value from timers COUNTER register.\n* \\result Timer_Type::COUNTER\n*/\n__STATIC_INLINE uint32_t PTIM_GetCurrentValue(void)\n{\n  return(PTIM->COUNTER);\n}\n\n/** \\brief Configure the timer using its CONTROL register.\n* \\param [in] value The new configuration value to be set.\n*/\n__STATIC_INLINE void PTIM_SetControl(uint32_t value)\n{\n  PTIM->CONTROL = value;\n}\n\n/** ref Timer_Type::CONTROL Get the current timer configuration from its CONTROL register.\n* \\return Timer_Type::CONTROL\n*/\n__STATIC_INLINE uint32_t PTIM_GetControl(void)\n{\n  return(PTIM->CONTROL);\n}\n\n/** ref Timer_Type::CONTROL Get the event flag in timers ISR register.\n* \\return 0 - flag is not set, 1- flag is set\n*/\n__STATIC_INLINE uint32_t PTIM_GetEventFlag(void)\n{\n  return (PTIM->ISR & 1UL);\n}\n\n/** ref Timer_Type::CONTROL Clears the event flag in timers ISR register.\n*/\n__STATIC_INLINE void PTIM_ClearEventFlag(void)\n{\n  PTIM->ISR = 1;\n}\n#endif\n#endif\n\n/* ##########################  MMU functions  ###################################### */\n\n#define SECTION_DESCRIPTOR      (0x2)\n#define SECTION_MASK            (0xFFFFFFFC)\n\n#define SECTION_TEXCB_MASK      (0xFFFF8FF3)\n#define SECTION_B_SHIFT         (2)\n#define SECTION_C_SHIFT         (3)\n#define SECTION_TEX0_SHIFT      (12)\n#define SECTION_TEX1_SHIFT      (13)\n#define SECTION_TEX2_SHIFT      (14)\n\n#define SECTION_XN_MASK         (0xFFFFFFEF)\n#define SECTION_XN_SHIFT        (4)\n\n#define SECTION_DOMAIN_MASK     (0xFFFFFE1F)\n#define SECTION_DOMAIN_SHIFT    (5)\n\n#define SECTION_P_MASK          (0xFFFFFDFF)\n#define SECTION_P_SHIFT         (9)\n\n#define SECTION_AP_MASK         (0xFFFF73FF)\n#define SECTION_AP_SHIFT        (10)\n#define SECTION_AP2_SHIFT       (15)\n\n#define SECTION_S_MASK          (0xFFFEFFFF)\n#define SECTION_S_SHIFT         (16)\n\n#define SECTION_NG_MASK         (0xFFFDFFFF)\n#define SECTION_NG_SHIFT        (17)\n\n#define SECTION_NS_MASK         (0xFFF7FFFF)\n#define SECTION_NS_SHIFT        (19)\n\n#define PAGE_L1_DESCRIPTOR      (0x1)\n#define PAGE_L1_MASK            (0xFFFFFFFC)\n\n#define PAGE_L2_4K_DESC         (0x2)\n#define PAGE_L2_4K_MASK         (0xFFFFFFFD)\n\n#define PAGE_L2_64K_DESC        (0x1)\n#define PAGE_L2_64K_MASK        (0xFFFFFFFC)\n\n#define PAGE_4K_TEXCB_MASK      (0xFFFFFE33)\n#define PAGE_4K_B_SHIFT         (2)\n#define PAGE_4K_C_SHIFT         (3)\n#define PAGE_4K_TEX0_SHIFT      (6)\n#define PAGE_4K_TEX1_SHIFT      (7)\n#define PAGE_4K_TEX2_SHIFT      (8)\n\n#define PAGE_64K_TEXCB_MASK     (0xFFFF8FF3)\n#define PAGE_64K_B_SHIFT        (2)\n#define PAGE_64K_C_SHIFT        (3)\n#define PAGE_64K_TEX0_SHIFT     (12)\n#define PAGE_64K_TEX1_SHIFT     (13)\n#define PAGE_64K_TEX2_SHIFT     (14)\n\n#define PAGE_TEXCB_MASK         (0xFFFF8FF3)\n#define PAGE_B_SHIFT            (2)\n#define PAGE_C_SHIFT            (3)\n#define PAGE_TEX_SHIFT          (12)\n\n#define PAGE_XN_4K_MASK         (0xFFFFFFFE)\n#define PAGE_XN_4K_SHIFT        (0)\n#define PAGE_XN_64K_MASK        (0xFFFF7FFF)\n#define PAGE_XN_64K_SHIFT       (15)\n\n#define PAGE_DOMAIN_MASK        (0xFFFFFE1F)\n#define PAGE_DOMAIN_SHIFT       (5)\n\n#define PAGE_P_MASK             (0xFFFFFDFF)\n#define PAGE_P_SHIFT            (9)\n\n#define PAGE_AP_MASK            (0xFFFFFDCF)\n#define PAGE_AP_SHIFT           (4)\n#define PAGE_AP2_SHIFT          (9)\n\n#define PAGE_S_MASK             (0xFFFFFBFF)\n#define PAGE_S_SHIFT            (10)\n\n#define PAGE_NG_MASK            (0xFFFFF7FF)\n#define PAGE_NG_SHIFT           (11)\n\n#define PAGE_NS_MASK            (0xFFFFFFF7)\n#define PAGE_NS_SHIFT           (3)\n\n#define OFFSET_1M               (0x00100000)\n#define OFFSET_64K              (0x00010000)\n#define OFFSET_4K               (0x00001000)\n\n#define DESCRIPTOR_FAULT        (0x00000000)\n\n/* Attributes enumerations */\n\n/* Region size attributes */\ntypedef enum\n{\n   SECTION,\n   PAGE_4k,\n   PAGE_64k,\n} mmu_region_size_Type;\n\n/* Region type attributes */\ntypedef enum\n{\n   NORMAL,\n   DEVICE,\n   SHARED_DEVICE,\n   NON_SHARED_DEVICE,\n   STRONGLY_ORDERED\n} mmu_memory_Type;\n\n/* Region cacheability attributes */\ntypedef enum\n{\n   NON_CACHEABLE,\n   WB_WA,\n   WT,\n   WB_NO_WA,\n} mmu_cacheability_Type;\n\n/* Region parity check attributes */\ntypedef enum\n{\n   ECC_DISABLED,\n   ECC_ENABLED,\n} mmu_ecc_check_Type;\n\n/* Region execution attributes */\ntypedef enum\n{\n   EXECUTE,\n   NON_EXECUTE,\n} mmu_execute_Type;\n\n/* Region global attributes */\ntypedef enum\n{\n   GLOBAL,\n   NON_GLOBAL,\n} mmu_global_Type;\n\n/* Region shareability attributes */\ntypedef enum\n{\n   NON_SHARED,\n   SHARED,\n} mmu_shared_Type;\n\n/* Region security attributes */\ntypedef enum\n{\n   SECURE,\n   NON_SECURE,\n} mmu_secure_Type;\n\n/* Region access attributes */\ntypedef enum\n{\n   NO_ACCESS,\n   RW,\n   READ,\n} mmu_access_Type;\n\n/* Memory Region definition */\ntypedef struct RegionStruct {\n    mmu_region_size_Type rg_t;\n    mmu_memory_Type mem_t;\n    uint8_t domain;\n    mmu_cacheability_Type inner_norm_t;\n    mmu_cacheability_Type outer_norm_t;\n    mmu_ecc_check_Type e_t;\n    mmu_execute_Type xn_t;\n    mmu_global_Type g_t;\n    mmu_secure_Type sec_t;\n    mmu_access_Type priv_t;\n    mmu_access_Type user_t;\n    mmu_shared_Type sh_t;\n\n} mmu_region_attributes_Type;\n\n//Following macros define the descriptors and attributes\n//Sect_Normal. Outer & inner wb/wa, non-shareable, executable, rw, domain 0\n#define section_normal(descriptor_l1, region)     region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = WB_WA; \\\n                                   region.outer_norm_t = WB_WA; \\\n                                   region.mem_t = NORMAL; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = EXECUTE; \\\n                                   region.priv_t = RW; \\\n                                   region.user_t = RW; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n\n//Sect_Normal_NC. Outer & inner non-cacheable, non-shareable, executable, rw, domain 0\n#define section_normal_nc(descriptor_l1, region)     region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = NON_CACHEABLE; \\\n                                   region.outer_norm_t = NON_CACHEABLE; \\\n                                   region.mem_t = NORMAL; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = EXECUTE; \\\n                                   region.priv_t = RW; \\\n                                   region.user_t = RW; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n\n//Sect_Normal_Cod. Outer & inner wb/wa, non-shareable, executable, ro, domain 0\n#define section_normal_cod(descriptor_l1, region) region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = WB_WA; \\\n                                   region.outer_norm_t = WB_WA; \\\n                                   region.mem_t = NORMAL; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = EXECUTE; \\\n                                   region.priv_t = READ; \\\n                                   region.user_t = READ; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n\n//Sect_Normal_RO. Sect_Normal_Cod, but not executable\n#define section_normal_ro(descriptor_l1, region)  region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = WB_WA; \\\n                                   region.outer_norm_t = WB_WA; \\\n                                   region.mem_t = NORMAL; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = NON_EXECUTE; \\\n                                   region.priv_t = READ; \\\n                                   region.user_t = READ; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n\n//Sect_Normal_RW. Sect_Normal_Cod, but writeable and not executable\n#define section_normal_rw(descriptor_l1, region) region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = WB_WA; \\\n                                   region.outer_norm_t = WB_WA; \\\n                                   region.mem_t = NORMAL; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = NON_EXECUTE; \\\n                                   region.priv_t = RW; \\\n                                   region.user_t = RW; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n//Sect_SO. Strongly-ordered (therefore shareable), not executable, rw, domain 0, base addr 0\n#define section_so(descriptor_l1, region) region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = NON_CACHEABLE; \\\n                                   region.outer_norm_t = NON_CACHEABLE; \\\n                                   region.mem_t = STRONGLY_ORDERED; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = NON_EXECUTE; \\\n                                   region.priv_t = RW; \\\n                                   region.user_t = RW; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n\n//Sect_Device_RO. Device, non-shareable, non-executable, ro, domain 0, base addr 0\n#define section_device_ro(descriptor_l1, region) region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = NON_CACHEABLE; \\\n                                   region.outer_norm_t = NON_CACHEABLE; \\\n                                   region.mem_t = STRONGLY_ORDERED; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = NON_EXECUTE; \\\n                                   region.priv_t = READ; \\\n                                   region.user_t = READ; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n\n//Sect_Device_RW. Sect_Device_RO, but writeable\n#define section_device_rw(descriptor_l1, region) region.rg_t = SECTION; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = NON_CACHEABLE; \\\n                                   region.outer_norm_t = NON_CACHEABLE; \\\n                                   region.mem_t = STRONGLY_ORDERED; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = NON_EXECUTE; \\\n                                   region.priv_t = RW; \\\n                                   region.user_t = RW; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetSectionDescriptor(&descriptor_l1, region);\n//Page_4k_Device_RW.  Shared device, not executable, rw, domain 0\n#define page4k_device_rw(descriptor_l1, descriptor_l2, region) region.rg_t = PAGE_4k; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = NON_CACHEABLE; \\\n                                   region.outer_norm_t = NON_CACHEABLE; \\\n                                   region.mem_t = SHARED_DEVICE; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = NON_EXECUTE; \\\n                                   region.priv_t = RW; \\\n                                   region.user_t = RW; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetPageDescriptor(&descriptor_l1, &descriptor_l2, region);\n\n//Page_64k_Device_RW.  Shared device, not executable, rw, domain 0\n#define page64k_device_rw(descriptor_l1, descriptor_l2, region)  region.rg_t = PAGE_64k; \\\n                                   region.domain = 0x0; \\\n                                   region.e_t = ECC_DISABLED; \\\n                                   region.g_t = GLOBAL; \\\n                                   region.inner_norm_t = NON_CACHEABLE; \\\n                                   region.outer_norm_t = NON_CACHEABLE; \\\n                                   region.mem_t = SHARED_DEVICE; \\\n                                   region.sec_t = SECURE; \\\n                                   region.xn_t = NON_EXECUTE; \\\n                                   region.priv_t = RW; \\\n                                   region.user_t = RW; \\\n                                   region.sh_t = NON_SHARED; \\\n                                   MMU_GetPageDescriptor(&descriptor_l1, &descriptor_l2, region);\n\n/** \\brief  Set section execution-never attribute\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]                xn  Section execution-never attribute : EXECUTE , NON_EXECUTE.\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_XNSection(uint32_t *descriptor_l1, mmu_execute_Type xn)\n{\n  *descriptor_l1 &= SECTION_XN_MASK;\n  *descriptor_l1 |= ((xn & 0x1) << SECTION_XN_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set section domain\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]            domain  Section domain\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_DomainSection(uint32_t *descriptor_l1, uint8_t domain)\n{\n  *descriptor_l1 &= SECTION_DOMAIN_MASK;\n  *descriptor_l1 |= ((domain & 0xF) << SECTION_DOMAIN_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set section parity check\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]              p_bit Parity check: ECC_DISABLED, ECC_ENABLED\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_PSection(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit)\n{\n  *descriptor_l1 &= SECTION_P_MASK;\n  *descriptor_l1 |= ((p_bit & 0x1) << SECTION_P_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set section access privileges\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]              user  User Level Access: NO_ACCESS, RW, READ\n  \\param [in]              priv  Privilege Level Access: NO_ACCESS, RW, READ\n  \\param [in]               afe  Access flag enable\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_APSection(uint32_t *descriptor_l1, mmu_access_Type user, mmu_access_Type priv, uint32_t afe)\n{\n  uint32_t ap = 0;\n\n  if (afe == 0) { //full access\n    if ((priv == NO_ACCESS) && (user == NO_ACCESS)) { ap = 0x0; }\n    else if ((priv == RW) && (user == NO_ACCESS))   { ap = 0x1; }\n    else if ((priv == RW) && (user == READ))        { ap = 0x2; }\n    else if ((priv == RW) && (user == RW))          { ap = 0x3; }\n    else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; }\n    else if ((priv == READ) && (user == READ))      { ap = 0x7; }\n  }\n\n  else { //Simplified access\n    if ((priv == RW) && (user == NO_ACCESS))        { ap = 0x1; }\n    else if ((priv == RW) && (user == RW))          { ap = 0x3; }\n    else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; }\n    else if ((priv == READ) && (user == READ))      { ap = 0x7; }\n  }\n\n  *descriptor_l1 &= SECTION_AP_MASK;\n  *descriptor_l1 |= (ap & 0x3) << SECTION_AP_SHIFT;\n  *descriptor_l1 |= ((ap & 0x4)>>2) << SECTION_AP2_SHIFT;\n\n  return 0;\n}\n\n/** \\brief  Set section shareability\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]             s_bit  Section shareability: NON_SHARED, SHARED\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_SharedSection(uint32_t *descriptor_l1, mmu_shared_Type s_bit)\n{\n  *descriptor_l1 &= SECTION_S_MASK;\n  *descriptor_l1 |= ((s_bit & 0x1) << SECTION_S_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set section Global attribute\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]             g_bit  Section attribute: GLOBAL, NON_GLOBAL\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_GlobalSection(uint32_t *descriptor_l1, mmu_global_Type g_bit)\n{\n  *descriptor_l1 &= SECTION_NG_MASK;\n  *descriptor_l1 |= ((g_bit & 0x1) << SECTION_NG_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set section Security attribute\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]             s_bit  Section Security attribute: SECURE, NON_SECURE\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_SecureSection(uint32_t *descriptor_l1, mmu_secure_Type s_bit)\n{\n  *descriptor_l1 &= SECTION_NS_MASK;\n  *descriptor_l1 |= ((s_bit & 0x1) << SECTION_NS_SHIFT);\n  return 0;\n}\n\n/* Page 4k or 64k */\n/** \\brief  Set 4k/64k page execution-never attribute\n\n  \\param [out]    descriptor_l2  L2 descriptor.\n  \\param [in]                xn  Page execution-never attribute : EXECUTE , NON_EXECUTE.\n  \\param [in]              page  Page size: PAGE_4k, PAGE_64k,\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_XNPage(uint32_t *descriptor_l2, mmu_execute_Type xn, mmu_region_size_Type page)\n{\n  if (page == PAGE_4k)\n  {\n      *descriptor_l2 &= PAGE_XN_4K_MASK;\n      *descriptor_l2 |= ((xn & 0x1) << PAGE_XN_4K_SHIFT);\n  }\n  else\n  {\n      *descriptor_l2 &= PAGE_XN_64K_MASK;\n      *descriptor_l2 |= ((xn & 0x1) << PAGE_XN_64K_SHIFT);\n  }\n  return 0;\n}\n\n/** \\brief  Set 4k/64k page domain\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]            domain  Page domain\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_DomainPage(uint32_t *descriptor_l1, uint8_t domain)\n{\n  *descriptor_l1 &= PAGE_DOMAIN_MASK;\n  *descriptor_l1 |= ((domain & 0xf) << PAGE_DOMAIN_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set 4k/64k page parity check\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]              p_bit Parity check: ECC_DISABLED, ECC_ENABLED\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_PPage(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit)\n{\n  *descriptor_l1 &= SECTION_P_MASK;\n  *descriptor_l1 |= ((p_bit & 0x1) << SECTION_P_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set 4k/64k page access privileges\n\n  \\param [out]    descriptor_l2  L2 descriptor.\n  \\param [in]              user  User Level Access: NO_ACCESS, RW, READ\n  \\param [in]              priv  Privilege Level Access: NO_ACCESS, RW, READ\n  \\param [in]               afe  Access flag enable\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_APPage(uint32_t *descriptor_l2, mmu_access_Type user, mmu_access_Type priv, uint32_t afe)\n{\n  uint32_t ap = 0;\n\n  if (afe == 0) { //full access\n    if ((priv == NO_ACCESS) && (user == NO_ACCESS)) { ap = 0x0; }\n    else if ((priv == RW) && (user == NO_ACCESS))   { ap = 0x1; }\n    else if ((priv == RW) && (user == READ))        { ap = 0x2; }\n    else if ((priv == RW) && (user == RW))          { ap = 0x3; }\n    else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; }\n    else if ((priv == READ) && (user == READ))      { ap = 0x6; }\n  }\n\n  else { //Simplified access\n    if ((priv == RW) && (user == NO_ACCESS))        { ap = 0x1; }\n    else if ((priv == RW) && (user == RW))          { ap = 0x3; }\n    else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; }\n    else if ((priv == READ) && (user == READ))      { ap = 0x7; }\n  }\n\n  *descriptor_l2 &= PAGE_AP_MASK;\n  *descriptor_l2 |= (ap & 0x3) << PAGE_AP_SHIFT;\n  *descriptor_l2 |= ((ap & 0x4)>>2) << PAGE_AP2_SHIFT;\n\n  return 0;\n}\n\n/** \\brief  Set 4k/64k page shareability\n\n  \\param [out]    descriptor_l2  L2 descriptor.\n  \\param [in]             s_bit  4k/64k page shareability: NON_SHARED, SHARED\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_SharedPage(uint32_t *descriptor_l2, mmu_shared_Type s_bit)\n{\n  *descriptor_l2 &= PAGE_S_MASK;\n  *descriptor_l2 |= ((s_bit & 0x1) << PAGE_S_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set 4k/64k page Global attribute\n\n  \\param [out]    descriptor_l2  L2 descriptor.\n  \\param [in]             g_bit  4k/64k page attribute: GLOBAL, NON_GLOBAL\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_GlobalPage(uint32_t *descriptor_l2, mmu_global_Type g_bit)\n{\n  *descriptor_l2 &= PAGE_NG_MASK;\n  *descriptor_l2 |= ((g_bit & 0x1) << PAGE_NG_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set 4k/64k page Security attribute\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]             s_bit  4k/64k page Security attribute: SECURE, NON_SECURE\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_SecurePage(uint32_t *descriptor_l1, mmu_secure_Type s_bit)\n{\n  *descriptor_l1 &= PAGE_NS_MASK;\n  *descriptor_l1 |= ((s_bit & 0x1) << PAGE_NS_SHIFT);\n  return 0;\n}\n\n/** \\brief  Set Section memory attributes\n\n  \\param [out]    descriptor_l1  L1 descriptor.\n  \\param [in]               mem  Section memory type: NORMAL, DEVICE, SHARED_DEVICE, NON_SHARED_DEVICE, STRONGLY_ORDERED\n  \\param [in]             outer  Outer cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA,\n  \\param [in]             inner  Inner cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA,\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_MemorySection(uint32_t *descriptor_l1, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner)\n{\n  *descriptor_l1 &= SECTION_TEXCB_MASK;\n\n  if (STRONGLY_ORDERED == mem)\n  {\n    return 0;\n  }\n  else if (SHARED_DEVICE == mem)\n  {\n    *descriptor_l1 |= (1 << SECTION_B_SHIFT);\n  }\n  else if (NON_SHARED_DEVICE == mem)\n  {\n    *descriptor_l1 |= (1 << SECTION_TEX1_SHIFT);\n  }\n  else if (NORMAL == mem)\n  {\n   *descriptor_l1 |= 1 << SECTION_TEX2_SHIFT;\n   switch(inner)\n   {\n      case NON_CACHEABLE:\n        break;\n      case WB_WA:\n        *descriptor_l1 |= (1 << SECTION_B_SHIFT);\n        break;\n      case WT:\n        *descriptor_l1 |= 1 << SECTION_C_SHIFT;\n        break;\n      case WB_NO_WA:\n        *descriptor_l1 |= (1 << SECTION_B_SHIFT) | (1 << SECTION_C_SHIFT);\n        break;\n    }\n    switch(outer)\n    {\n      case NON_CACHEABLE:\n        break;\n      case WB_WA:\n        *descriptor_l1 |= (1 << SECTION_TEX0_SHIFT);\n        break;\n      case WT:\n        *descriptor_l1 |= 1 << SECTION_TEX1_SHIFT;\n        break;\n      case WB_NO_WA:\n        *descriptor_l1 |= (1 << SECTION_TEX0_SHIFT) | (1 << SECTION_TEX0_SHIFT);\n        break;\n    }\n  }\n  return 0;\n}\n\n/** \\brief  Set 4k/64k page memory attributes\n\n  \\param [out]    descriptor_l2  L2 descriptor.\n  \\param [in]               mem  4k/64k page memory type: NORMAL, DEVICE, SHARED_DEVICE, NON_SHARED_DEVICE, STRONGLY_ORDERED\n  \\param [in]             outer  Outer cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA,\n  \\param [in]             inner  Inner cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA,\n  \\param [in]              page  Page size\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_MemoryPage(uint32_t *descriptor_l2, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner, mmu_region_size_Type page)\n{\n  *descriptor_l2 &= PAGE_4K_TEXCB_MASK;\n\n  if (page == PAGE_64k)\n  {\n    //same as section\n    MMU_MemorySection(descriptor_l2, mem, outer, inner);\n  }\n  else\n  {\n    if (STRONGLY_ORDERED == mem)\n    {\n      return 0;\n    }\n    else if (SHARED_DEVICE == mem)\n    {\n      *descriptor_l2 |= (1 << PAGE_4K_B_SHIFT);\n    }\n    else if (NON_SHARED_DEVICE == mem)\n    {\n      *descriptor_l2 |= (1 << PAGE_4K_TEX1_SHIFT);\n    }\n    else if (NORMAL == mem)\n    {\n      *descriptor_l2 |= 1 << PAGE_4K_TEX2_SHIFT;\n      switch(inner)\n      {\n        case NON_CACHEABLE:\n          break;\n        case WB_WA:\n          *descriptor_l2 |= (1 << PAGE_4K_B_SHIFT);\n          break;\n        case WT:\n          *descriptor_l2 |= 1 << PAGE_4K_C_SHIFT;\n          break;\n        case WB_NO_WA:\n          *descriptor_l2 |= (1 << PAGE_4K_B_SHIFT) | (1 << PAGE_4K_C_SHIFT);\n          break;\n      }\n      switch(outer)\n      {\n        case NON_CACHEABLE:\n          break;\n        case WB_WA:\n          *descriptor_l2 |= (1 << PAGE_4K_TEX0_SHIFT);\n          break;\n        case WT:\n          *descriptor_l2 |= 1 << PAGE_4K_TEX1_SHIFT;\n          break;\n        case WB_NO_WA:\n          *descriptor_l2 |= (1 << PAGE_4K_TEX0_SHIFT) | (1 << PAGE_4K_TEX0_SHIFT);\n          break;\n      }\n    }\n  }\n\n  return 0;\n}\n\n/** \\brief  Create a L1 section descriptor\n\n  \\param [out]     descriptor  L1 descriptor\n  \\param [in]      reg  Section attributes\n  \n  \\return          0\n*/\n__STATIC_INLINE int MMU_GetSectionDescriptor(uint32_t *descriptor, mmu_region_attributes_Type reg)\n{\n  *descriptor  = 0;\n\n  MMU_MemorySection(descriptor, reg.mem_t, reg.outer_norm_t, reg.inner_norm_t);\n  MMU_XNSection(descriptor,reg.xn_t);\n  MMU_DomainSection(descriptor, reg.domain);\n  MMU_PSection(descriptor, reg.e_t);\n  MMU_APSection(descriptor, reg.priv_t, reg.user_t, 1);\n  MMU_SharedSection(descriptor,reg.sh_t);\n  MMU_GlobalSection(descriptor,reg.g_t);\n  MMU_SecureSection(descriptor,reg.sec_t);\n  *descriptor &= SECTION_MASK;\n  *descriptor |= SECTION_DESCRIPTOR;\n \n  return 0;\n}\n\n\n/** \\brief  Create a L1 and L2 4k/64k page descriptor\n\n  \\param [out]       descriptor  L1 descriptor\n  \\param [out]      descriptor2  L2 descriptor\n  \\param [in]               reg  4k/64k page attributes\n\n  \\return          0\n*/\n__STATIC_INLINE int MMU_GetPageDescriptor(uint32_t *descriptor, uint32_t *descriptor2, mmu_region_attributes_Type reg)\n{\n  *descriptor  = 0;\n  *descriptor2 = 0;\n\n  switch (reg.rg_t)\n  {\n    case PAGE_4k:\n      MMU_MemoryPage(descriptor2, reg.mem_t, reg.outer_norm_t, reg.inner_norm_t, PAGE_4k);\n      MMU_XNPage(descriptor2, reg.xn_t, PAGE_4k);\n      MMU_DomainPage(descriptor, reg.domain);\n      MMU_PPage(descriptor, reg.e_t);\n      MMU_APPage(descriptor2, reg.priv_t, reg.user_t, 1);\n      MMU_SharedPage(descriptor2,reg.sh_t);\n      MMU_GlobalPage(descriptor2,reg.g_t);\n      MMU_SecurePage(descriptor,reg.sec_t);\n      *descriptor &= PAGE_L1_MASK;\n      *descriptor |= PAGE_L1_DESCRIPTOR;\n      *descriptor2 &= PAGE_L2_4K_MASK;\n      *descriptor2 |= PAGE_L2_4K_DESC;\n      break;\n\n    case PAGE_64k:\n      MMU_MemoryPage(descriptor2, reg.mem_t, reg.outer_norm_t, reg.inner_norm_t, PAGE_64k);\n      MMU_XNPage(descriptor2, reg.xn_t, PAGE_64k);\n      MMU_DomainPage(descriptor, reg.domain);\n      MMU_PPage(descriptor, reg.e_t);\n      MMU_APPage(descriptor2, reg.priv_t, reg.user_t, 1);\n      MMU_SharedPage(descriptor2,reg.sh_t);\n      MMU_GlobalPage(descriptor2,reg.g_t);\n      MMU_SecurePage(descriptor,reg.sec_t);\n      *descriptor &= PAGE_L1_MASK;\n      *descriptor |= PAGE_L1_DESCRIPTOR;\n      *descriptor2 &= PAGE_L2_64K_MASK;\n      *descriptor2 |= PAGE_L2_64K_DESC;\n      break;\n\n    case SECTION:\n      //error\n      break;\n  }\n  \n  return 0;\n}\n\n/** \\brief  Create a 1MB Section\n\n  \\param [in]               ttb  Translation table base address\n  \\param [in]      base_address  Section base address\n  \\param [in]             count  Number of sections to create\n  \\param [in]     descriptor_l1  L1 descriptor (region attributes)\n\n*/\n__STATIC_INLINE void MMU_TTSection(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1)\n{\n  uint32_t offset;\n  uint32_t entry;\n  uint32_t i;\n\n  offset = base_address >> 20;\n  entry  = (base_address & 0xFFF00000) | descriptor_l1;\n\n  //4 bytes aligned\n  ttb = ttb + offset;\n\n  for (i = 0; i < count; i++ )\n  {\n    //4 bytes aligned\n    *ttb++ = entry;\n    entry += OFFSET_1M;\n  }\n}\n\n/** \\brief  Create a 4k page entry\n\n  \\param [in]               ttb  L1 table base address\n  \\param [in]      base_address  4k base address\n  \\param [in]             count  Number of 4k pages to create\n  \\param [in]     descriptor_l1  L1 descriptor (region attributes)\n  \\param [in]            ttb_l2  L2 table base address\n  \\param [in]     descriptor_l2  L2 descriptor (region attributes)\n\n*/\n__STATIC_INLINE void MMU_TTPage4k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 )\n{\n\n  uint32_t offset, offset2;\n  uint32_t entry, entry2;\n  uint32_t i;\n\n  offset = base_address >> 20;\n  entry  = ((int)ttb_l2 & 0xFFFFFC00) | descriptor_l1;\n\n  //4 bytes aligned\n  ttb += offset;\n  //create l1_entry\n  *ttb = entry;\n\n  offset2 = (base_address & 0xff000) >> 12;\n  ttb_l2 += offset2;\n  entry2 = (base_address & 0xFFFFF000) | descriptor_l2;\n  for (i = 0; i < count; i++ )\n  {\n    //4 bytes aligned\n    *ttb_l2++ = entry2;\n    entry2 += OFFSET_4K;\n  }\n}\n\n/** \\brief  Create a 64k page entry\n\n  \\param [in]               ttb  L1 table base address\n  \\param [in]      base_address  64k base address\n  \\param [in]             count  Number of 64k pages to create\n  \\param [in]     descriptor_l1  L1 descriptor (region attributes)\n  \\param [in]            ttb_l2  L2 table base address\n  \\param [in]     descriptor_l2  L2 descriptor (region attributes)\n\n*/\n__STATIC_INLINE void MMU_TTPage64k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 )\n{\n  uint32_t offset, offset2;\n  uint32_t entry, entry2;\n  uint32_t i,j;\n\n\n  offset = base_address >> 20;\n  entry  = ((int)ttb_l2 & 0xFFFFFC00) | descriptor_l1;\n\n  //4 bytes aligned\n  ttb += offset;\n  //create l1_entry\n  *ttb = entry;\n\n  offset2 = (base_address & 0xff000) >> 12;\n  ttb_l2 += offset2;\n  entry2 = (base_address & 0xFFFF0000) | descriptor_l2;\n  for (i = 0; i < count; i++ )\n  {\n    //create 16 entries\n    for (j = 0; j < 16; j++)\n    {\n      //4 bytes aligned\n      *ttb_l2++ = entry2;\n    }\n    entry2 += OFFSET_64K;\n  }\n}\n\n/** \\brief  Enable MMU\n*/\n__STATIC_INLINE void MMU_Enable(void)\n{\n  // Set M bit 0 to enable the MMU\n  // Set AFE bit to enable simplified access permissions model\n  // Clear TRE bit to disable TEX remap and A bit to disable strict alignment fault checking\n  __set_SCTLR( (__get_SCTLR() & ~(1 << 28) & ~(1 << 1)) | 1 | (1 << 29));\n  __ISB();\n}\n\n/** \\brief  Disable MMU\n*/\n__STATIC_INLINE void MMU_Disable(void)\n{\n  // Clear M bit 0 to disable the MMU\n  __set_SCTLR( __get_SCTLR() & ~1);\n  __ISB();\n}\n\n/** \\brief  Invalidate entire unified TLB\n*/\n\n__STATIC_INLINE void MMU_InvalidateTLB(void)\n{\n  __set_TLBIALL(0);\n  __DSB();     //ensure completion of the invalidation\n  __ISB();     //ensure instruction fetch path sees new state\n}\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CA_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Include/irq_ctrl.h",
    "content": "/**************************************************************************//**\n * @file     irq_ctrl.h\n * @brief    Interrupt Controller API header file\n * @version  V1.0.0\n * @date     23. June 2017\n ******************************************************************************/\n/*\n * Copyright (c) 2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef IRQ_CTRL_H_\n#define IRQ_CTRL_H_\n\n#include <stdint.h>\n\n#ifndef IRQHANDLER_T\n#define IRQHANDLER_T\n/// Interrupt handler data type\ntypedef void (*IRQHandler_t) (void);\n#endif\n\n#ifndef IRQN_ID_T\n#define IRQN_ID_T\n/// Interrupt ID number data type\ntypedef int32_t IRQn_ID_t;\n#endif\n\n/* Interrupt mode bit-masks */\n#define IRQ_MODE_TRIG_Pos           (0U)\n#define IRQ_MODE_TRIG_Msk           (0x07UL /*<< IRQ_MODE_TRIG_Pos*/)\n#define IRQ_MODE_TRIG_LEVEL         (0x00UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: level triggered interrupt\n#define IRQ_MODE_TRIG_LEVEL_LOW     (0x01UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: low level triggered interrupt\n#define IRQ_MODE_TRIG_LEVEL_HIGH    (0x02UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: high level triggered interrupt\n#define IRQ_MODE_TRIG_EDGE          (0x04UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: edge triggered interrupt\n#define IRQ_MODE_TRIG_EDGE_RISING   (0x05UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: rising edge triggered interrupt\n#define IRQ_MODE_TRIG_EDGE_FALLING  (0x06UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: falling edge triggered interrupt\n#define IRQ_MODE_TRIG_EDGE_BOTH     (0x07UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: rising and falling edge triggered interrupt\n\n#define IRQ_MODE_TYPE_Pos           (3U)\n#define IRQ_MODE_TYPE_Msk           (0x01UL << IRQ_MODE_TYPE_Pos)\n#define IRQ_MODE_TYPE_IRQ           (0x00UL << IRQ_MODE_TYPE_Pos)     ///< Type: interrupt source triggers CPU IRQ line\n#define IRQ_MODE_TYPE_FIQ           (0x01UL << IRQ_MODE_TYPE_Pos)     ///< Type: interrupt source triggers CPU FIQ line\n\n#define IRQ_MODE_DOMAIN_Pos         (4U)\n#define IRQ_MODE_DOMAIN_Msk         (0x01UL << IRQ_MODE_DOMAIN_Pos)\n#define IRQ_MODE_DOMAIN_NONSECURE   (0x00UL << IRQ_MODE_DOMAIN_Pos)   ///< Domain: interrupt is targeting non-secure domain\n#define IRQ_MODE_DOMAIN_SECURE      (0x01UL << IRQ_MODE_DOMAIN_Pos)   ///< Domain: interrupt is targeting secure domain\n\n#define IRQ_MODE_CPU_Pos            (5U)\n#define IRQ_MODE_CPU_Msk            (0xFFUL << IRQ_MODE_CPU_Pos)\n#define IRQ_MODE_CPU_ALL            (0x00UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets all CPUs\n#define IRQ_MODE_CPU_0              (0x01UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 0\n#define IRQ_MODE_CPU_1              (0x02UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 1\n#define IRQ_MODE_CPU_2              (0x04UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 2\n#define IRQ_MODE_CPU_3              (0x08UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 3\n#define IRQ_MODE_CPU_4              (0x10UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 4\n#define IRQ_MODE_CPU_5              (0x20UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 5\n#define IRQ_MODE_CPU_6              (0x40UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 6\n#define IRQ_MODE_CPU_7              (0x80UL << IRQ_MODE_CPU_Pos)      ///< CPU: interrupt targets CPU 7\n\n#define IRQ_MODE_ERROR              (0x80000000UL)                    ///< Bit indicating mode value error\n\n/* Interrupt priority bit-masks */\n#define IRQ_PRIORITY_Msk            (0x0000FFFFUL)                    ///< Interrupt priority value bit-mask\n#define IRQ_PRIORITY_ERROR          (0x80000000UL)                    ///< Bit indicating priority value error\n\n/// Initialize interrupt controller.\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_Initialize (void);\n\n/// Register interrupt handler.\n/// \\param[in]     irqn          interrupt ID number\n/// \\param[in]     handler       interrupt handler function address\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_SetHandler (IRQn_ID_t irqn, IRQHandler_t handler);\n\n/// Get the registered interrupt handler.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return registered interrupt handler function address.\nIRQHandler_t IRQ_GetHandler (IRQn_ID_t irqn);\n\n/// Enable interrupt.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_Enable (IRQn_ID_t irqn);\n\n/// Disable interrupt.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_Disable (IRQn_ID_t irqn);\n\n/// Get interrupt enable state.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return 0 - interrupt is disabled, 1 - interrupt is enabled.\nuint32_t IRQ_GetEnableState (IRQn_ID_t irqn);\n\n/// Configure interrupt request mode.\n/// \\param[in]     irqn          interrupt ID number\n/// \\param[in]     mode          mode configuration\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_SetMode (IRQn_ID_t irqn, uint32_t mode);\n\n/// Get interrupt mode configuration.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return current interrupt mode configuration with optional IRQ_MODE_ERROR bit set.\nuint32_t IRQ_GetMode (IRQn_ID_t irqn);\n\n/// Get ID number of current interrupt request (IRQ).\n/// \\return interrupt ID number.\nIRQn_ID_t IRQ_GetActiveIRQ (void);\n\n/// Get ID number of current fast interrupt request (FIQ).\n/// \\return interrupt ID number.\nIRQn_ID_t IRQ_GetActiveFIQ (void);\n\n/// Signal end of interrupt processing.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_EndOfInterrupt (IRQn_ID_t irqn);\n\n/// Set interrupt pending flag.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_SetPending (IRQn_ID_t irqn);\n\n/// Get interrupt pending flag.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return 0 - interrupt is not pending, 1 - interrupt is pending.\nuint32_t IRQ_GetPending (IRQn_ID_t irqn);\n\n/// Clear interrupt pending flag.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_ClearPending (IRQn_ID_t irqn);\n\n/// Set interrupt priority value.\n/// \\param[in]     irqn          interrupt ID number\n/// \\param[in]     priority      interrupt priority value\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_SetPriority (IRQn_ID_t irqn, uint32_t priority);\n\n/// Get interrupt priority.\n/// \\param[in]     irqn          interrupt ID number\n/// \\return current interrupt priority value with optional IRQ_PRIORITY_ERROR bit set.\nuint32_t IRQ_GetPriority (IRQn_ID_t irqn);\n\n/// Set priority masking threshold.\n/// \\param[in]     priority      priority masking threshold value\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_SetPriorityMask (uint32_t priority);\n\n/// Get priority masking threshold\n/// \\return current priority masking threshold value with optional IRQ_PRIORITY_ERROR bit set.\nuint32_t IRQ_GetPriorityMask (void);\n\n/// Set priority grouping field split point\n/// \\param[in]     bits          number of MSB bits included in the group priority field comparison\n/// \\return 0 on success, -1 on error.\nint32_t IRQ_SetPriorityGroupBits (uint32_t bits);\n\n/// Get priority grouping field split point\n/// \\return current number of MSB bits included in the group priority field comparison with\n///         optional IRQ_PRIORITY_ERROR bit set.\nuint32_t IRQ_GetPriorityGroupBits (void);\n\n#endif  // IRQ_CTRL_H_\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Core_A/Source/irq_ctrl_gic.c",
    "content": "/**************************************************************************//**\n * @file     irq_ctrl_gic.c\n * @brief    Interrupt controller handling implementation for GIC\n * @version  V1.0.1\n * @date     9. April 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include <stddef.h>\n\n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n\n#include \"irq_ctrl.h\"\n\n#if defined(__GIC_PRESENT) && (__GIC_PRESENT == 1U)\n\n/// Number of implemented interrupt lines\n#ifndef IRQ_GIC_LINE_COUNT\n#define IRQ_GIC_LINE_COUNT      (1020U)\n#endif\n\nstatic IRQHandler_t IRQTable[IRQ_GIC_LINE_COUNT] = { 0U };\nstatic uint32_t     IRQ_ID0;\n\n/// Initialize interrupt controller.\n__WEAK int32_t IRQ_Initialize (void) {\n  uint32_t i;\n\n  for (i = 0U; i < IRQ_GIC_LINE_COUNT; i++) {\n    IRQTable[i] = (IRQHandler_t)NULL;\n  }\n  GIC_Enable();\n  return (0);\n}\n\n\n/// Register interrupt handler.\n__WEAK int32_t IRQ_SetHandler (IRQn_ID_t irqn, IRQHandler_t handler) {\n  int32_t status;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    IRQTable[irqn] = handler;\n    status =  0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n\n/// Get the registered interrupt handler.\n__WEAK IRQHandler_t IRQ_GetHandler (IRQn_ID_t irqn) {\n  IRQHandler_t h;\n\n  // Ignore CPUID field (software generated interrupts)\n  irqn &= 0x3FFU;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    h = IRQTable[irqn];\n  } else {\n    h = (IRQHandler_t)0;\n  }\n\n  return (h);\n}\n\n\n/// Enable interrupt.\n__WEAK int32_t IRQ_Enable (IRQn_ID_t irqn) {\n  int32_t status;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    GIC_EnableIRQ ((IRQn_Type)irqn);\n    status = 0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n\n/// Disable interrupt.\n__WEAK int32_t IRQ_Disable (IRQn_ID_t irqn) {\n  int32_t status;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    GIC_DisableIRQ ((IRQn_Type)irqn);\n    status = 0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n\n/// Get interrupt enable state.\n__WEAK uint32_t IRQ_GetEnableState (IRQn_ID_t irqn) {\n  uint32_t enable;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    enable = GIC_GetEnableIRQ((IRQn_Type)irqn);\n  } else {\n    enable = 0U;\n  }\n\n  return (enable);\n}\n\n\n/// Configure interrupt request mode.\n__WEAK int32_t IRQ_SetMode (IRQn_ID_t irqn, uint32_t mode) {\n  uint32_t val;\n  uint8_t cfg;\n  uint8_t secure;\n  uint8_t cpu;\n  int32_t status = 0;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    // Check triggering mode\n    val = (mode & IRQ_MODE_TRIG_Msk);\n\n    if (val == IRQ_MODE_TRIG_LEVEL) {\n      cfg = 0x00U;\n    } else if (val == IRQ_MODE_TRIG_EDGE) {\n      cfg = 0x02U;\n    } else {\n      cfg = 0x00U;\n      status = -1;\n    }\n\n    // Check interrupt type\n    val = mode & IRQ_MODE_TYPE_Msk;\n\n    if (val != IRQ_MODE_TYPE_IRQ) {\n      status = -1;\n    }\n\n    // Check interrupt domain\n    val = mode & IRQ_MODE_DOMAIN_Msk;\n\n    if (val == IRQ_MODE_DOMAIN_NONSECURE) {\n      secure = 0U;\n    } else {\n      // Check security extensions support\n      val = GIC_DistributorInfo() & (1UL << 10U);\n\n      if (val != 0U) {\n        // Security extensions are supported\n        secure = 1U;\n      } else {\n        secure = 0U;\n        status = -1;\n      }\n    }\n\n    // Check interrupt CPU targets\n    val = mode & IRQ_MODE_CPU_Msk;\n\n    if (val == IRQ_MODE_CPU_ALL) {\n      cpu = 0xFFU;\n    } else {\n      cpu = val >> IRQ_MODE_CPU_Pos;\n    }\n\n    // Apply configuration if no mode error\n    if (status == 0) {\n      GIC_SetConfiguration((IRQn_Type)irqn, cfg);\n      GIC_SetTarget       ((IRQn_Type)irqn, cpu);\n\n      if (secure != 0U) {\n        GIC_SetGroup ((IRQn_Type)irqn, secure);\n      }\n    }\n  }\n\n  return (status);\n}\n\n\n/// Get interrupt mode configuration.\n__WEAK uint32_t IRQ_GetMode (IRQn_ID_t irqn) {\n  uint32_t mode;\n  uint32_t val;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    mode = IRQ_MODE_TYPE_IRQ;\n\n    // Get trigger mode\n    val = GIC_GetConfiguration((IRQn_Type)irqn);\n\n    if ((val & 2U) != 0U) {\n      // Corresponding interrupt is edge triggered\n      mode |= IRQ_MODE_TRIG_EDGE;\n    } else {\n      // Corresponding interrupt is level triggered\n      mode |= IRQ_MODE_TRIG_LEVEL;\n    }\n\n    // Get interrupt CPU targets\n    mode |= GIC_GetTarget ((IRQn_Type)irqn) << IRQ_MODE_CPU_Pos;\n\n  } else {\n    mode = IRQ_MODE_ERROR;\n  }\n\n  return (mode);\n}\n\n\n/// Get ID number of current interrupt request (IRQ).\n__WEAK IRQn_ID_t IRQ_GetActiveIRQ (void) {\n  IRQn_ID_t irqn;\n  uint32_t prio;\n\n  /* Dummy read to avoid GIC 390 errata 801120 */\n  GIC_GetHighPendingIRQ();\n\n  irqn = GIC_AcknowledgePending();\n\n  __DSB();\n\n  /* Workaround GIC 390 errata 733075 (GIC-390_Errata_Notice_v6.pdf, 09-Jul-2014)  */\n  /* The following workaround code is for a single-core system.  It would be       */\n  /* different in a multi-core system.                                             */\n  /* If the ID is 0 or 0x3FE or 0x3FF, then the GIC CPU interface may be locked-up */\n  /* so unlock it, otherwise service the interrupt as normal.                      */\n  /* Special IDs 1020=0x3FC and 1021=0x3FD are reserved values in GICv1 and GICv2  */\n  /* so will not occur here.                                                       */\n\n  if ((irqn == 0) || (irqn >= 0x3FE)) {\n    /* Unlock the CPU interface with a dummy write to Interrupt Priority Register */\n    prio = GIC_GetPriority((IRQn_Type)0);\n    GIC_SetPriority ((IRQn_Type)0, prio);\n\n    __DSB();\n\n    if ((irqn == 0U) && ((GIC_GetIRQStatus ((IRQn_Type)irqn) & 1U) != 0U) && (IRQ_ID0 == 0U)) {\n      /* If the ID is 0, is active and has not been seen before */\n      IRQ_ID0 = 1U;\n    }\n    /* End of Workaround GIC 390 errata 733075 */\n  }\n\n  return (irqn);\n}\n\n\n/// Get ID number of current fast interrupt request (FIQ).\n__WEAK IRQn_ID_t IRQ_GetActiveFIQ (void) {\n  return ((IRQn_ID_t)-1);\n}\n\n\n/// Signal end of interrupt processing.\n__WEAK int32_t IRQ_EndOfInterrupt (IRQn_ID_t irqn) {\n  int32_t status;\n  IRQn_Type irq = (IRQn_Type)irqn;\n\n  irqn &= 0x3FFU;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    GIC_EndInterrupt (irq);\n\n    if (irqn == 0) {\n      IRQ_ID0 = 0U;\n    }\n\n    status = 0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n\n/// Set interrupt pending flag.\n__WEAK int32_t IRQ_SetPending (IRQn_ID_t irqn) {\n  int32_t status;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    GIC_SetPendingIRQ ((IRQn_Type)irqn);\n    status = 0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n/// Get interrupt pending flag.\n__WEAK uint32_t IRQ_GetPending (IRQn_ID_t irqn) {\n  uint32_t pending;\n\n  if ((irqn >= 16) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    pending = GIC_GetPendingIRQ ((IRQn_Type)irqn);\n  } else {\n    pending = 0U;\n  }\n\n  return (pending & 1U);\n}\n\n\n/// Clear interrupt pending flag.\n__WEAK int32_t IRQ_ClearPending (IRQn_ID_t irqn) {\n  int32_t status;\n\n  if ((irqn >= 16) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    GIC_ClearPendingIRQ ((IRQn_Type)irqn);\n    status = 0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n\n/// Set interrupt priority value.\n__WEAK int32_t IRQ_SetPriority (IRQn_ID_t irqn, uint32_t priority) {\n  int32_t status;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    GIC_SetPriority ((IRQn_Type)irqn, priority);\n    status = 0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n\n/// Get interrupt priority.\n__WEAK uint32_t IRQ_GetPriority (IRQn_ID_t irqn) {\n  uint32_t priority;\n\n  if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) {\n    priority = GIC_GetPriority ((IRQn_Type)irqn);\n  } else {\n    priority = IRQ_PRIORITY_ERROR;\n  }\n\n  return (priority);\n}\n\n\n/// Set priority masking threshold.\n__WEAK int32_t IRQ_SetPriorityMask (uint32_t priority) {\n  GIC_SetInterfacePriorityMask (priority);\n  return (0);\n}\n\n\n/// Get priority masking threshold\n__WEAK uint32_t IRQ_GetPriorityMask (void) {\n  return GIC_GetInterfacePriorityMask();\n}\n\n\n/// Set priority grouping field split point\n__WEAK int32_t IRQ_SetPriorityGroupBits (uint32_t bits) {\n  int32_t status;\n\n  if (bits == IRQ_PRIORITY_Msk) {\n    bits = 7U;\n  }\n\n  if (bits < 8U) {\n    GIC_SetBinaryPoint (7U - bits);\n    status = 0;\n  } else {\n    status = -1;\n  }\n\n  return (status);\n}\n\n\n/// Get priority grouping field split point\n__WEAK uint32_t IRQ_GetPriorityGroupBits (void) {\n  uint32_t bp;\n\n  bp = GIC_GetBinaryPoint() & 0x07U;\n\n  return (7U - bp);\n}\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\ncmake_policy(SET CMP0077 NEW)\n# The tests are assuming that MATRIX_CHECK is enabled when building\n# CMSIS-DSP.\nset(MATRIXCHECK ON)\nset(FASTMATHCOMPUTATIONS OFF)\noption(DUMPPATTERN \"Dump test patterns when test is failing\" ON)\n\noption(CUSTOMIZE_TESTS \"Enable customizations of tests\" ON)\noption(BASICMATH_TESTS \"Enable Basic Math testing\" ON)\noption(COMPLEXMATH_TESTS \"Enable Complex Math testing\" ON)\noption(CONTROLLER_TESTS \"Enable Controller testing\" ON)\noption(FASTMATH_TESTS \"Enable Fast Math testing\" ON)\noption(INTRINSICS_TESTS \"Enable Intrinsics testing\" ON)\noption(FILTERING_TESTS \"Enable Filtering testing\" ON)\noption(MATRIX_TESTS \"Enable Matrix testing\" ON)\noption(STATISTICS_TESTS \"Enable Statistics testing\" ON)\noption(SUPPORT_TESTS \"Enable Support testing\" ON)\noption(TRANSFORM_TESTS \"Enable Transform testing\" ON)\n\n\nproject(DSP_Lib_TestSuite)\n\n# Needed to find the config modules\nlist(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/..)\n\n\nset(ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)\n\n\nfile(GLOB MAIN \"Common/src/*.c\")\nfile(GLOB BASICMATH_TESTS_SRC \"Common/src/basic_math_tests/*.c\")\nfile(GLOB COMPLEXMATH_TESTS_SRC \"Common/src/complex_math_tests/*.c\")\nfile(GLOB CONTROLLER_TESTS_SRC \"Common/src/controller_tests/*.c\")\nfile(GLOB FASTMATH_TESTS_SRC \"Common/src/fast_math_tests/*.c\")\nfile(GLOB FILTERING_TESTS_SRC \"Common/src/filtering_tests/*.c\")\nfile(GLOB INTRINSINCS_TESTS_SRC \"Common/src/intrinsics_tests/*.c\")\nfile(GLOB MATRIX_TESTS_SRC \"Common/src/matrix_tests/*.c\")\nfile(GLOB STATISTICS_TESTS_SRC \"Common/src/statistics_tests/*.c\")\nfile(GLOB SUPPORT_TESTS_SRC \"Common/src/support_tests/*.c\")\nfile(GLOB TRANSFORM_TESTS_SRC \"Common/src/transform_tests/*.c\")\nfile(GLOB JTEST_MAIN \"Common/JTest/src/*.c\")\n\nset(TESTSRC ${MAIN}\n  ${BASICMATH_TESTS_SRC}\n  ${COMPLEXMATH_TESTS_SRC}\n  ${CONTROLLER_TESTS_SRC}\n  ${FASTMATH_TESTS_SRC}\n  ${FILTERING_TESTS_SRC}\n  ${INTRINSINCS_TESTS_SRC}\n  ${MATRIX_TESTS_SRC}\n  ${STATISTICS_TESTS_SRC}\n  ${SUPPORT_TESTS_SRC}\n  ${TRANSFORM_TESTS_SRC}\n  ${JTEST_MAIN}\n  )\n\nset(JINCS \n  Common/JTest/inc\n  Common/JTest/inc/arr_desc\n  Common/inc/basic_math_tests\n  Common/inc/complex_math_tests\n  Common/inc/controller_tests\n  Common/inc/fast_math_tests\n  Common/inc/filtering_tests\n  Common/inc/intrinsics_tests\n  Common/inc/matrix_tests\n  Common/inc/statistics_tests \n  Common/inc/support_tests \n  Common/inc/transform_tests\n  )\n\nadd_subdirectory(../Source bin_dsp)\nadd_subdirectory(RefLibs bin_ref)\n\n\nadd_executable(DSP_Lib_TestSuite)\n\nif (CUSTOMIZE_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE CUSTOMIZE_TESTS)\nendif()\n\nif (BASICMATH_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_BASICMATH_TESTS)\nendif()\nif (COMPLEXMATH_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_COMPLEXMATH_TESTS)\nendif()\nif (CONTROLLER_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_CONTROLLER_TESTS)\nendif()\nif (FASTMATH_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_FASTMATH_TESTS)\nendif()\nif (FILTERING_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_FILTERING_TESTS)\nendif()\nif (INTRINSICS_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_INTRINSICS_TESTS)\nendif()\nif (MATRIX_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_MATRIX_TESTS)\nendif()\nif (STATISTICS_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_STATISTICS_TESTS)\nendif()\nif (SUPPORT_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_SUPPORT_TESTS)\nendif()\nif (TRANSFORM_TESTS)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE ENABLE_TRANSFORM_TESTS)\nendif()\n\n\nif (DUMPPATTERN)\n      target_compile_definitions(DSP_Lib_TestSuite PRIVATE DUMPPATTERN)\nendif()\n\n# Change behavior of configBoot for scatter file\nset(TESTFRAMEWORK ON)\n\ninclude(configBoot)\n\nfile(COPY ${ROOT}/CMSIS/DSP/Examples/ARM/boot/RTE_Components.h DESTINATION tempLink)\n\ntarget_link_libraries(DSP_Lib_TestSuite PRIVATE CMSISDSP)\ntarget_link_libraries(DSP_Lib_TestSuite PRIVATE DspRefLibs)\n\ntarget_sources(DSP_Lib_TestSuite PRIVATE ${TESTSRC})\n\n### Includes\ntarget_include_directories(DSP_Lib_TestSuite PRIVATE \"Common/inc\")\ntarget_include_directories(DSP_Lib_TestSuite PRIVATE \"Common/inc/templates\")\ntarget_include_directories(DSP_Lib_TestSuite PRIVATE ${JINCS})\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/arr_desc/arr_desc.h",
    "content": "#ifndef _ARR_DESC_H_\n#define _ARR_DESC_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n#include <stdint.h>\n#include <string.h>             /* memset() */\n#include \"../util/util.h\"       /* CONCAT() */\n\n/*--------------------------------------------------------------------------------*/\n/* Type Definitions */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Array-descriptor struct.\n */\ntypedef struct ARR_DESC_struct\n{\n    void *  data_ptr;                /* Pointer to the array contents. */\n    int32_t element_count;           /* Number of current elements. */\n    int32_t element_size;            /* Size of current elements in bytes. */\n    int32_t underlying_size;         /* Size of underlying array in bytes. */\n} ARR_DESC_t;\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Prefix of the array variable's name when creating an array and an array\n *  descriptor at the same time.\n */\n#define ARR_DESC_ARR_PREFIX ARR_DESC_ARR_\n\n/**\n *  Evaluate to the array variable's name when creating an array and an array\n *  descriptor at the same time.\n */\n#define ARR_DESC_ARR_NAME(name)                 \\\n    CONCAT(ARR_DESC_ARR_PREFIX, name)\n\n/**\n *  Define an #ARR_DESC_t by itself.\n *\n *  @note The user must supply an array to store the data used by the\n *  #ARR_DESC_t.\n */\n#define ARR_DESC_INTERNAL_DEFINE(name, data_ptr,                \\\n                                 element_count, element_size)   \\\n    ARR_DESC_t name = {                                         \\\n        data_ptr,                                               \\\n        element_count,                                          \\\n        element_size,                                           \\\n        element_count * element_size                            \\\n    }                                                           \\\n\n/**\n *  Define both an array and an #ARR_DESC_t that describes it.\n *\n *  @note Use the #CURLY() macro for the content field; it provides the curly\n *  braces necessary for an array initialization.\n */\n#define ARR_DESC_DEFINE(type, name, element_count, content)             \\\n    type ARR_DESC_ARR_NAME(name)[element_count] = content;              \\\n    ARR_DESC_INTERNAL_DEFINE(name,                                      \\\n                             &ARR_DESC_ARR_NAME(name),                  \\\n                             element_count,                             \\\n                             sizeof(type)) /* Note the lacking semicolon */\n\n/**\n *  Create a #ARR_DESC_t which refers to a subset of the data in another.\n *\n *  The new #ARR_DESC_t shares the same underlying array as the aliased\n *  #ARR_DESC_t, but only describes a subset of the originals values.\n */\n#define ARR_DESC_DEFINE_SUBSET(name, original, element_cnt)         \\\n    ARR_DESC_INTERNAL_DEFINE(name,                                  \\\n                             &ARR_DESC_ARR_NAME(original),          \\\n                             element_cnt,                           \\\n                             sizeof(ARR_DESC_ARR_NAME(original)[0]) \\\n        ) /* Note the lacking semicolon */\n\n/**\n *  Creat an #ARR_DESC_t which points to the data in an existing array.\n *\n *  @param start_idx Offset in array_ptr of first element.\n *  @param element_cnt Number of elements to include in the #ARR_DESC_t.\n *\n *  @example\n *\n *  float my_floats[4] = {0.0f, 1.0f, 2.0f, 3.0f};\n *\n *  ARR_DESC_DEFINE_USING_ARR(my_arr_desc, my_floats, 1, 3);\n *\n *  printf(\"Element 0: %f\\n\", ARR_DESC_ELT(float, 0, &my_arr_desc));\n *  printf(\"Element 1: %f\\n\", ARR_DESC_ELT(float, 1, &my_arr_desc));\n *\n *  Outputs:\n *\n *  Element 0: 1.000000\n *  Element 1: 2.000000\n *\n *  @warning There are no checks in place to catch invalid start indices; This\n *  is left to the user.\n */\n#define ARR_DESC_DEFINE_USING_ARR(type, name, array_ptr, start_idx, element_cnt) \\\n    ARR_DESC_INTERNAL_DEFINE(                                           \\\n        name,                                                           \\\n        (type *) (array_ptr + start_idx),                               \\\n        element_cnt,                                                    \\\n        sizeof(type)                                                    \\\n        ) /* Note the lacking semicolon*/\n\n/**\n *  Declare an #ARR_DESC_t object.\n */\n#define ARR_DESC_DECLARE(name)                              \\\n    extern ARR_DESC_t name /* Note the lacking semicolon */\n\n/**\n *  Evaluate to the number of bytes stored in the #ARR_DESC_t.\n */\n#define ARR_DESC_BYTES(arr_desc_ptr)                                \\\n    ((arr_desc_ptr)->element_count * (arr_desc_ptr)->element_size)\n\n/**\n *  Set the contents of #ARR_DESC_t to value.\n */\n#define ARR_DESC_MEMSET(arr_desc_ptr, value, bytes)     \\\n    do                                                  \\\n    {                                                   \\\n        memset((arr_desc_ptr)->data_ptr,                \\\n               value,                                   \\\n               BOUND(0,                                 \\\n                     (arr_desc_ptr)->underlying_size,   \\\n                     bytes)                             \\\n            );                                          \\\n    } while (0)\n\n/**\n *  Perform a memcpy of 'bytes' bytes from the source #ARR_DESC_t to the\n *  destination #ARR_DESC_t.\n */\n#define ARR_DESC_MEMCPY(arr_desc_dest_ptr, arr_desc_src_ptr, bytes) \\\n    do                                                              \\\n    {                                                               \\\n        memcpy((arr_desc_dest_ptr)->data_ptr,                       \\\n               (arr_desc_src_ptr)->data_ptr,                        \\\n               BOUND(0,                                             \\\n                     (arr_desc_dest_ptr)->underlying_size,          \\\n                     bytes));                                       \\\n    } while (0)\n\n/**\n *  Evaluate to true if the source #ARR_DESC_t contents will fit into the\n *  destination #ARR_DESC_t and false otherwise.\n */\n#define ARR_DESC_COPYABLE(arr_desc_dest_ptr, arr_desc_src_ptr)  \\\n      (ARR_DESC_BYTES(arr_desc_src_ptr) <=                      \\\n       (arr_desc_dest_ptr)->underlying_size)\n\n/**\n *  Copy all the data from the source #ARR_DESC_t to the destination\n *  #ARR_DESC_t.\n *\n *  @note If the destination #ARR_DESC_t is too small to fit the source data the\n *  copy is aborted and nothing happens.\n */\n#define ARR_DESC_COPY(arr_desc_dest_ptr, arr_desc_src_ptr)      \\\n    do                                                          \\\n    {                                                           \\\n        if (ARR_DESC_COPYABLE(arr_desc_dest_ptr,                 \\\n                             arr_desc_src_ptr))                 \\\n        {                                                       \\\n            ARR_DESC_MEMCPY(arr_desc_dest_ptr,                  \\\n                            arr_desc_src_ptr,                   \\\n                            ARR_DESC_BYTES(arr_desc_src_ptr));  \\\n            /* Update the properties*/                          \\\n            (arr_desc_dest_ptr)->element_count =                \\\n                (arr_desc_src_ptr)->element_count;              \\\n            (arr_desc_dest_ptr)->element_size =                 \\\n                (arr_desc_src_ptr)->element_size;               \\\n        }                                                       \\\n    } while (0)\n\n/**\n *  Compare the data in two #ARR_DESC_t structs for the specified number of\n *  bytes.\n */\n#define ARR_DESC_MEMCMP(arr_desc_ptr_a, arr_desc_ptr_b, bytes)  \\\n        memcmp((arr_desc_ptr_a)->data_ptr,                      \\\n            (arr_desc_ptr_b)->data_ptr,                         \\\n               bytes) /* Note the lacking semicolon */          \\\n\n/**\n *  Zero out the contents of the #ARR_DESC_t.\n */\n#define ARR_DESC_ZERO(arr_desc_ptr)             \\\n        ARR_DESC_MEMSET(arr_desc_ptr,           \\\n                        0,                      \\\n                        (arr_desc_ptr)->underlying_size)\n\n/**\n *  Evaluate to the data address in #ARR_DESC_t at offset.\n */\n#define ARR_DESC_DATA_ADDR(type, arr_desc_ptr, offset)  \\\n        ((void*)(((type *)                              \\\n                  ((arr_desc_ptr)->data_ptr))           \\\n                 + offset))\n\n/**\n *  Evaluate to the element in #ARR_DESC_t with type at idx.\n */\n#define ARR_DESC_ELT(type, idx, arr_desc_ptr)           \\\n        (*((type *) ARR_DESC_DATA_ADDR(type,            \\\n                                       arr_desc_ptr,    \\\n                                       idx)))\n\n#endif /* _ARR_DESC_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest.h",
    "content": "#ifndef _JTEST_H_\n#define _JTEST_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"jtest_fw.h\"\n#include \"jtest_test.h\"\n#include \"jtest_test_define.h\"\n#include \"jtest_test_call.h\"\n#include \"jtest_group.h\"\n#include \"jtest_group_define.h\"\n#include \"jtest_group_call.h\"\n#include \"jtest_cycle.h\"\n\n#endif /* _JTEST_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_cycle.h",
    "content": "#ifndef _JTEST_CYCLE_H_\n#define _JTEST_CYCLE_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"jtest_fw.h\"           /* JTEST_DUMP_STRF() */\n#include \"jtest_systick.h\"\n#include \"jtest_util.h\"         /* STR() */\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Module Variables */\n/*--------------------------------------------------------------------------------*/\nextern const char * JTEST_CYCLE_STRF;\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Wrap the function call, fn_call, to count execution cycles and display the\n *  results.\n */\n/* skipp function name + param\n#define JTEST_COUNT_CYCLES(fn_call)                     \\\n    do                                                  \\\n    {                                                   \\\n        uint32_t __jtest_cycle_end_count;               \\\n                                                        \\\n        JTEST_SYSTICK_RESET(SysTick);                   \\\n        JTEST_SYSTICK_START(SysTick);                   \\\n                                                        \\\n        fn_call;                                        \\\n                                                        \\\n        __jtest_cycle_end_count =                       \\\n            JTEST_SYSTICK_VALUE(SysTick);               \\\n                                                        \\\n\t\tJTEST_SYSTICK_RESET(SysTick);                   \\\n        JTEST_DUMP_STRF(JTEST_CYCLE_STRF,               \\\n                        STR(fn_call),                   \\\n                        (JTEST_SYSTICK_INITIAL_VALUE -  \\\n                         __jtest_cycle_end_count));     \\\n    } while (0)\n*/\n#ifndef ARMv7A\n\n#define JTEST_COUNT_CYCLES(fn_call)                     \\\n    do                                                  \\\n    {                                                   \\\n        uint32_t __jtest_cycle_end_count;               \\\n                                                        \\\n        JTEST_SYSTICK_RESET(SysTick);                   \\\n        JTEST_SYSTICK_START(SysTick);                   \\\n                                                        \\\n        fn_call;                                        \\\n                                                        \\\n        __jtest_cycle_end_count =                       \\\n            JTEST_SYSTICK_VALUE(SysTick);               \\\n                                                        \\\n\t\tJTEST_SYSTICK_RESET(SysTick);           \\\n        JTEST_DUMP_STRF(JTEST_CYCLE_STRF,               \\\n                        (JTEST_SYSTICK_INITIAL_VALUE -  \\\n                         __jtest_cycle_end_count));     \\\n    } while (0)\n\n#else\n/* TODO */\n#define JTEST_COUNT_CYCLES(fn_call)                     \\\n    do                                                  \\\n    {                                                   \\\n\t\tfn_call;   \t\t\t\t\t\t\t\t\t\t\\\n    } while (0)\n\n#endif\n\n#endif /* _JTEST_CYCLE_H_ */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_define.h",
    "content": "#ifndef _JTEST_DEFINE_H_\n#define _JTEST_DEFINE_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Makes a symbol for use as a struct name. Names made this way have two parts;\n *  the first parts is a prefix common to all structs of that class. The second\n *  is a specifier which differs for each instance of that struct type.\n */\n#define JTEST_STRUCT_NAME(prefix, specifier)    \\\n    CONCAT(prefix, specifier)\n\n/**\n *  Define a struct with type with a name generated by #JTEST_STRUCT_NAME().\n */\n#define JTEST_DEFINE_STRUCT(type, struct_name)    \\\n    type struct_name\n\n/**\n *  Declare a struct with type with a name generated by #JTEST_STRUCT_NAME().\n */\n#define JTEST_DECLARE_STRUCT(struct_definition) \\\n    extern struct_definition\n\n/**\n *  Define and initialize a struct (created with JTEST_DEFINE_STRUCT()) and\n *  initialize it with init_values.\n */\n#define JTEST_INIT_STRUCT(struct_definition, init_values)       \\\n    struct_definition = {                                       \\\n        init_values                                             \\\n    }\n\n#endif /* _JTEST_DEFINE_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_fw.h",
    "content": "#ifndef _JTEST_FW_H_\n#define _JTEST_FW_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include <stdint.h>             /* int32_t */\n#include <string.h>             /* strcpy() */\n#include <stdio.h>              /* sprintf() */\n#include \"jtest_pf.h\"           /* Extend JTEST_FW_t with Pass/Fail data */\n#include \"jtest_group.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Type Definitions */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  A struct used to interface with the Keil Debugger.\n */\ntypedef struct JTEST_FW_struct\n{\n    /* Action Triggers: The Keil debugger monitors these values for changes.  In\n     * response to a change, the debugger executes code on the host. */\n    volatile int32_t test_start;\n    volatile int32_t test_end;\n    volatile int32_t group_start;\n    volatile int32_t group_end;\n    volatile int32_t dump_str;\n    volatile int32_t dump_data;\n    volatile int32_t exit_fw;\n\n    JTEST_GROUP_t * current_group_ptr;\n\n    /* Buffers: The C-code cannot send strings and data directly to the\n     * debugging framework. Instead, the debugger can be told to read 128 byte\n     * (by default) chunks of memory.  Data received in this manner requires\n     * post-processing to be legible.*/\n    char * str_buffer;\n    char * data_buffer;\n\n    /* Pass/Fail Data */\n    JTEST_PF_MEMBERS;\n\n} JTEST_FW_t;\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Default name for the JTEST_FW struct.\n *\n *  Define your own if you want the variable containing the #JTEST_FW_t to have\n *  a different name.\n */\n#ifndef JTEST_FW\n#define JTEST_FW JTEST_FW\n#endif\n\n/**\n *  Default name for the JTEST_FW_STR_BUFFER.\n *\n *  Define your own if you want the variable containing the char buffer to have\n *  a different name.\n */\n#ifndef JTEST_FW_STR_BUFFER\n#define JTEST_FW_STR_BUFFER JTEST_FW_STR_BUFFER\n#endif\n\n/**\n *  Size of the #JTEST_FW_t, output string-buffer.\n *\n *  If you change this value, make sure the \"dump_str_fn\" and \"dump_data_fn\"\n *  functions in jtest_fns.ini uses the same size. If you aren't sure, read the\n *  documentation Keil Debugger Command 'DISPLAY'.\n */\n#define JTEST_BUF_SIZE 256\n\n\n/**\n *  The maximum number of bytes output at once using #JTEST_DUMP_STRF().\n */\n#define JTEST_STR_MAX_OUTPUT_SIZE 128\n\n/**\n *  The maximum number of block transimissions needed to send a string from a\n *  buffer with JTEST_BUF_SIZE.\n */\n#define JTEST_STR_MAX_OUTPUT_SEGMENTS           \\\n    (JTEST_BUF_SIZE / JTEST_STR_MAX_OUTPUT_SIZE)\n\n/**\n *  Initialize the JTEST framework.\n */\n#define JTEST_INIT()                                                    \\\n    do                                                                  \\\n    {                                                                   \\\n        JTEST_FW.str_buffer = JTEST_FW_STR_BUFFER;                      \\\n    } while (0)\n\n/* Debugger Action-triggering Macros */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Dispatch macro to trigger various actions in the Keil Debugger.\n */\n#define JTEST_TRIGGER_ACTION(action_name)       \\\n    do                                          \\\n    {                                           \\\n        action_name();                          \\\n    } while (0)\n\n/**\n *  Trigger the \"Test Start\" action in the Keil Debugger.\n */\n#define JTEST_ACT_TEST_START()                  \\\n    JTEST_TRIGGER_ACTION(test_start)\n\n/**\n *  Trigger the \"Test End\" action in the Keil Debugger.\n */\n#define JTEST_ACT_TEST_END()                    \\\n    JTEST_TRIGGER_ACTION(test_end)\n\n\n/**\n *  Trigger the \"Group Start\" action in the Keil Debugger.\n */\n#define JTEST_ACT_GROUP_START()                 \\\n    JTEST_TRIGGER_ACTION(group_start)\n\n/**\n *  Trigger the \"Group End\" action in the Keil Debugger.\n */\n#define JTEST_ACT_GROUP_END()                   \\\n    JTEST_TRIGGER_ACTION(group_end)\n\n\n/**\n *  Fill the buffer named buf_name with value and dump it to the Keil debugger\n *  using action.\n */\n#if defined(ARMv7A) || defined(FILEIO)\n\n#define JTEST_ACT_DUMP(action, buf_name, value) \\\n    do                                          \\\n    {                                           \\\n        JTEST_CLEAR_BUFFER(buf_name);           \\\n\t    printf(\"%s\",value);                     \\\n        strcpy(JTEST_FW.buf_name, (value));     \\\n        JTEST_TRIGGER_ACTION(action);           \\\n    } while (0)\n\n#else\n\n#define JTEST_ACT_DUMP(action, buf_name, value) \\\n    do                                          \\\n    {                                           \\\n        JTEST_CLEAR_BUFFER(buf_name);           \\\n        strcpy(JTEST_FW.buf_name, (value));     \\\n        JTEST_TRIGGER_ACTION(action);           \\\n    } while (0)\n\n#endif\n/**\n *  Trigger the \"Exit Framework\" action in the Keil Debugger.\n */\n#define JTEST_ACT_EXIT_FW()                     \\\n    do                                          \\\n    {                                           \\\n        JTEST_TRIGGER_ACTION(exit_fw);          \\\n    } while (0)\n\n\n/* Buffer Manipulation Macros */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Clear the JTEST_FW buffer with name buf_name.\n */\n#define JTEST_CLEAR_BUFFER(buf_name)                    \\\n    do                                                  \\\n    {                                                   \\\n        memset(JTEST_FW.buf_name, 0, JTEST_BUF_SIZE);   \\\n    } while (0)\n\n/**\n *  Clear the memory needed for the JTEST_FW's string buffer.\n */\n#define JTEST_CLEAR_STR_BUFFER()                \\\n        JTEST_CLEAR_BUFFER(str_buffer)\n\n/**\n *  Clear the memory needed for the JTEST_FW's data buffer.\n */\n#define JTEST_CLEAR_DATA_BUFFER()               \\\n        JTEST_CLEAR_BUFFER(data_buffer)\n\n/**\n *  Dump the given string to the Keil Debugger.\n */\n#define JTEST_DUMP_STR(string)                          \\\n        JTEST_ACT_DUMP(dump_str, str_buffer, string)\n\n/**\n *  Dump a formatted string to the Keil Debugger.\n */\n#if defined(ARMv7A) || defined(FILEIO)\n\n#define JTEST_DUMP_STRF(format_str, ... )                               \\\n    do                                                                  \\\n    {                                                                   \\\n        JTEST_CLEAR_STR_BUFFER();                                       \\\n        sprintf(JTEST_FW.str_buffer,format_str, __VA_ARGS__);           \\\n        printf(\"%s\",JTEST_FW.str_buffer);                               \\\n        jtest_dump_str_segments();                                      \\\n    } while (0)\n\n#else\n\n#define JTEST_DUMP_STRF(format_str, ... )                               \\\n    do                                                                  \\\n    {                                                                   \\\n        JTEST_CLEAR_STR_BUFFER();                                       \\\n        sprintf(JTEST_FW.str_buffer,format_str, __VA_ARGS__);           \\\n        jtest_dump_str_segments();                                      \\\n    } while (0)\n\n#endif\n\n/* Pass/Fail Macros */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Increment the number of passed tests in #JTEST_FW.\n */\n#define JTEST_FW_INC_PASSED(amount)             \\\n        JTEST_PF_INC_PASSED(&JTEST_FW, amount)\n\n/**\n *  Increment the number of passed tests in #JTEST_FW.\n */\n#define JTEST_FW_INC_FAILED(amount)             \\\n        JTEST_PF_INC_FAILED(&JTEST_FW, amount)\n\n/* Manipulating the Current Group */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Evaluate to the current_group_ptr in #JTEST_FW.\n */\n#define JTEST_CURRENT_GROUP_PTR()               \\\n    (JTEST_FW.current_group_ptr)\n\n#define JTEST_SET_CURRENT_GROUP(group_ptr)      \\\n    do                                          \\\n    {                                           \\\n        JTEST_CURRENT_GROUP_PTR() = group_ptr;  \\\n    } while (0)\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Global Variables */\n/*--------------------------------------------------------------------------------*/\nextern char JTEST_FW_STR_BUFFER[JTEST_BUF_SIZE];\nextern volatile JTEST_FW_t JTEST_FW;\n\n/*--------------------------------------------------------------------------------*/\n/* Function Prototypes */\n/*--------------------------------------------------------------------------------*/\nvoid jtest_dump_str_segments(void);\n\nvoid test_start  (void);\nvoid test_end    (void);\nvoid group_start (void);\nvoid group_end   (void);\nvoid dump_str    (void);\nvoid dump_data   (void);\nvoid exit_fw     (void);\n\n\n#endif /* _JTEST_FW_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group.h",
    "content": "#ifndef _JTEST_GROUP_H_\n#define _JTEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"jtest_pf.h\"\n#include \"jtest_util.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Type Definitions */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  A struct which represents a group of #JTEST_TEST_t structs. This struct is\n *  used to run the group of tests, and report on their outcomes.\n */\ntypedef struct JTEST_GROUP_struct\n{\n    void (* group_fn_ptr) (void); /**< Pointer to the test group */\n    char * name_str;              /**< Name of the group */\n    \n    /* Extend the #JTEST_GROUP_t with Pass/Fail information.*/\n    JTEST_PF_MEMBERS;\n} JTEST_GROUP_t;\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Set the name of JTEST_GROUP_t.\n */\n#define JTEST_GROUP_SET_NAME(group_ptr, name)     \\\n    JTEST_SET_STRUCT_ATTRIBUTE(group_ptr, name_str, name)\n\n#define JTEST_GROUP_SET_FN(group_ptr, fn_ptr)     \\\n    JTEST_SET_STRUCT_ATTRIBUTE(group_ptr, group_fn_ptr, fn_ptr)\n\n/**\n *  Increment the number of tests passed in the JTEST_GROUP_t pointed to by\n *  group_ptr.\n */\n#define JTEST_GROUP_INC_PASSED(group_ptr, amount) \\\n    JTEST_PF_INC_PASSED(group_ptr, amount)\n\n/**\n *  Increment the number of tests failed in the JTEST_GROUP_t pointed to by\n *  group_ptr.\n */\n#define JTEST_GROUP_INC_FAILED(group_ptr, amount) \\\n    JTEST_PF_INC_FAILED(group_ptr, amount)\n\n/**\n *  Reset the pass/fail information of the #JTEST_GROUP_t pointed to by\n *  group_ptr.\n */\n#define JTEST_GROUP_RESET_PF(group_ptr)         \\\n    do                                          \\\n    {                                           \\\n        JTEST_PF_RESET_PASSED(group_ptr);       \\\n        JTEST_PF_RESET_FAILED(group_ptr);       \\\n    } while (0)\n\n#endif /* _JTEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_call.h",
    "content": "#ifndef _JTEST_GROUP_CALL_H_\n#define _JTEST_GROUP_CALL_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"jtest_fw.h\"\n#include <inttypes.h>\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Execute the test in the #JTEST_GROUP_t struct associated witht he identifier\n *  group_fn.\n */\n#define JTEST_GROUP_RUN(group_fn)                                   \\\n    do                                                              \\\n    {                                                               \\\n        JTEST_DUMP_STR(\"Group Name:\\n\");                            \\\n        JTEST_DUMP_STR(JTEST_GROUP_STRUCT_NAME(group_fn).name_str); \\\n        JTEST_GROUP_STRUCT_NAME(group_fn).group_fn_ptr();           \\\n    } while (0)\n\n\n/**\n *  Update the enclosing #JTEST_GROUP_t's pass/fail information using the\n *  current #JTEST_GROUP_t's.\n *\n *  @param group_ptr Pointer to the current #JTEST_GROUP_t.\n *  @param parent_ptr Pointer to the enclosing #JTEST_GROUP_t.\n *\n *  @warning Only run this if the current #JTEST_GROUP_t is being called within\n *  the context of another #JTEST_GROUP_t.\n */\n#define JTEST_GROUP_UPDATE_PARENT_GROUP_PF(group_ptr, parent_group_ptr) \\\n    do                                                                  \\\n    {                                                                   \\\n        JTEST_GROUP_INC_PASSED(parent_group_ptr,                        \\\n                               (group_ptr)->passed);                    \\\n        JTEST_GROUP_INC_FAILED(parent_group_ptr,                        \\\n                               (group_ptr)->failed);                    \\\n    } while (0)\n\n/**\n *  Update the #JTEST_FW's pass/fail information using the current\n *  #JTEST_GROUP_t's.\n */\n#define JTEST_GROUP_UPDATE_FW_PF(group_ptr)                     \\\n    do                                                          \\\n    {                                                           \\\n        JTEST_FW_INC_PASSED((group_ptr)->passed);               \\\n        JTEST_FW_INC_FAILED((group_ptr)->failed);               \\\n    } while (0)\n\n/**\n *  Update the enclosing context with the current #JTEST_GROUP_t's pass/fail\n *  information. If this group isn't in an enclosing group, it updates the\n *  #JTEST_FW's pass/fail info by default.\n */\n#define JTEST_GROUP_UPDATE_PARENT_GROUP_OR_FW_PF(group_ptr,         \\\n                                                 parent_group_ptr)  \\\n    do                                                              \\\n    {                                                               \\\n        /* Update the pass fail counts in the parent group */       \\\n        if (parent_group_ptr /* Null implies Top*/)                 \\\n        {                                                           \\\n            JTEST_GROUP_UPDATE_PARENT_GROUP_PF(                     \\\n                group_ptr,                                          \\\n                parent_group_ptr);                                  \\\n        } else {                                                    \\\n            JTEST_GROUP_UPDATE_FW_PF(                               \\\n                group_ptr);                                         \\\n        }                                                           \\\n    } while (0)\n\n/**\n *  Dump the results of running the #JTEST_GROUP_t to the Keil Debugger.\n */\n#define JTEST_GROUP_DUMP_RESULTS(group_ptr)                             \\\n        do                                                              \\\n        {                                                               \\\n            JTEST_DUMP_STRF(                                            \\\n                \"Tests Run: %\" PRIu32 \"\\n\"                              \\\n                \"----------\\n\"                                          \\\n                \"   Passed: %\" PRIu32 \"\\n\"                              \\\n                \"   Failed: %\" PRIu32 \"\\n\",                             \\\n                (group_ptr)->passed + (group_ptr)->failed,              \\\n                (group_ptr)->passed,                                    \\\n                (group_ptr)->failed);                                   \\\n        } while (0)\n\n/**\n *  Call the #JTEST_GROUP_t associated with the identifier group_fn.\n */\n#define JTEST_GROUP_CALL(group_fn)                                      \\\n        do                                                              \\\n        {   /* Save the current group from JTEST_FW_t before swapping */ \\\n            /* it to this group (in order to restore it later )*/       \\\n            JTEST_GROUP_t * __jtest_temp_group_ptr =                    \\\n                JTEST_CURRENT_GROUP_PTR();                              \\\n            JTEST_SET_CURRENT_GROUP(&JTEST_GROUP_STRUCT_NAME(group_fn)); \\\n                                                                        \\\n            /* Reset this group's pass/fail count. Each group */        \\\n            /* should only remember counts for its last execution. */   \\\n            JTEST_GROUP_RESET_PF(JTEST_CURRENT_GROUP_PTR());            \\\n                                                                        \\\n            /* Run the current group */                                 \\\n            JTEST_ACT_GROUP_START();                                    \\\n            JTEST_GROUP_RUN(group_fn);                                  \\\n            JTEST_ACT_GROUP_END();                                      \\\n                                                                        \\\n            /* Update the pass fail counts in the parent group (or FW) */ \\\n            JTEST_GROUP_UPDATE_PARENT_GROUP_OR_FW_PF(                   \\\n                JTEST_CURRENT_GROUP_PTR(),                              \\\n                __jtest_temp_group_ptr);                                \\\n                                                                        \\\n            JTEST_GROUP_DUMP_RESULTS(JTEST_CURRENT_GROUP_PTR());        \\\n                                                                        \\\n            /* Restore the previously current group */                  \\\n            JTEST_SET_CURRENT_GROUP(__jtest_temp_group_ptr);            \\\n        } while (0)\n\n#endif /* _JTEST_GROUP_CALL_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_define.h",
    "content": "#ifndef _JTEST_GROUP_DEFINE_H_\n#define _JTEST_GROUP_DEFINE_H_\n\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"jtest_util.h\"\n#include \"jtest_define.h\"\n#include \"jtest_group.h\"\n\n/* For defining macros with optional arguments */\n#include \"opt_arg/opt_arg.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Prefix for all #JTEST_GROUP_t structs.\n */\n#define JTEST_GROUP_STRUCT_NAME_PREFIX G_JTEST_GROUP_STRUCT_\n\n/**\n *  Define test template used by #JTEST_GROUP_t tests.\n */\n#define JTEST_GROUP_FN_TEMPLATE(group_fn)    \\\n    void group_fn(void)\n\n#define JTEST_GROUP_FN_PROTOTYPE JTEST_GROUP_FN_TEMPLATE /**< Alias for\n                                                            #JTEST_GROUP_FN_TEMPLATE. */\n\n/**\n *  Evaluate to the name of the #JTEST_GROUP_t struct associated with group_fn.\n */\n#define JTEST_GROUP_STRUCT_NAME(group_fn)    \\\n    JTEST_STRUCT_NAME(JTEST_GROUP_STRUCT_NAME_PREFIX, group_fn)\n\n/**\n *  Define a #JTEST_GROUP_t struct based on the given group_fn.\n */\n#define JTEST_GROUP_DEFINE_STRUCT(group_fn)  \\\n    JTEST_DEFINE_STRUCT(JTEST_GROUP_t,       \\\n                        JTEST_GROUP_STRUCT_NAME(group_fn))\n\n/**\n *  Declare a #JTEST_GROUP_t struct based on the given group_fn.\n */\n#define JTEST_GROUP_DECLARE_STRUCT(group_fn) \\\n    JTEST_DECLARE_STRUCT(JTEST_GROUP_DEFINE_STRUCT(group_fn))\n\n/**\n *  Contents needed to initialize a JTEST_GROUP_t struct.\n */\n#define JTEST_GROUP_STRUCT_INIT(group_fn)    \\\n    group_fn,                                \\\n        STR_NL(group_fn),                       \\\n        JTEST_PF_MEMBER_INIT\n\n/**\n *  Initialize the contents of a #JTEST_GROUP_t struct.\n */\n#define JTEST_GROUP_INIT(group_fn)           \\\n    JTEST_GROUP_DEFINE_STRUCT(group_fn) = {  \\\n        JTEST_GROUP_STRUCT_INIT(group_fn)    \\\n    }\n\n/* Test Definition Macro */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Define a #JTEST_GROUP_t object and a test function.\n */\n#define JTEST_DEFINE_GROUP(group_fn)         \\\n    JTEST_GROUP_FN_PROTOTYPE(group_fn);      \\\n    JTEST_GROUP_INIT(group_fn);              \\\n    JTEST_GROUP_FN_PROTOTYPE(group_fn) /* Notice the lacking semicolon */\n\n/**\n *  Declare a #JTEST_GROUP_t object and a test function prototype.\n */\n#define JTEST_DECLARE_GROUP(group_fn)        \\\n    JTEST_GROUP_FN_PROTOTYPE(group_fn);      \\\n    JTEST_GROUP_DECLARE_STRUCT(group_fn) /* Note the lacking semicolon */\n\n#endif /* _JTEST_GROUP_DEFINE_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_pf.h",
    "content": "#ifndef _JTEST_PF_H_\n#define _JTEST_PF_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Purpose */\n/*--------------------------------------------------------------------------------*/\n/* jtest_pf.h Contains macros useful for capturing pass/fail data. */\n\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n * Members that can be added to other structs to extend them pass/fail data and\n * corresponding functionality.\n */\n#define JTEST_PF_MEMBERS                            \\\n    uint32_t passed;                                \\\n    uint32_t failed /* Note the lacking semicolon*/ \\\n\n/**\n *  Used for initializing JTEST_PF_MEMBERS in a struct declaration.\n */\n#define JTEST_PF_MEMBER_INIT                    \\\n    0,                                          \\\n    0\n\n/* Member-Incrementing Macros */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Dispatch macro for incrementing #JTEST_PF_MEMBERS.\n *\n *  @param xxx Values: 'passed', 'failed'\n */\n#define JTEST_PF_INC_XXX(xxx, struct_pf_ptr, amount)    \\\n    do                                                  \\\n    {                                                   \\\n        ((struct_pf_ptr)->xxx) += (amount);             \\\n    } while (0)\n\n/**\n *  Specialization of the #JTEST_PF_INC_XXX macro to increment the passed\n *  member.\n */\n#define JTEST_PF_INC_PASSED(struct_pf_ptr, amount)  \\\n    JTEST_PF_INC_XXX(passed, struct_pf_ptr, amount)\n\n\n/**\n *  Specialization of the #JTEST_PF_INC_XXX macro to increment the failed\n *  member.\n */\n#define JTEST_PF_INC_FAILED(struct_pf_ptr, amount)  \\\n    JTEST_PF_INC_XXX(failed, struct_pf_ptr, amount)\n\n\n/* Member-Resetting Macros */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Dispatch macro for setting #JTEST_PF_MEMBERS to zero.\n *\n *  @param xxx Values: 'passed', 'failed'\n */\n#define JTEST_PF_RESET_XXX(xxx, struct_pf_ptr)  \\\n    do                                          \\\n    {                                           \\\n        ((struct_pf_ptr)->xxx) = UINT32_C(0);   \\\n    } while (0)\n\n/**\n *  Specialization of #JTEST_PF_RESET_XXX for the 'passed' member.\n */\n#define JTEST_PF_RESET_PASSED(struct_pf_ptr)    \\\n    JTEST_PF_RESET_XXX(passed, struct_pf_ptr)\n\n/**\n *  Specialization of #JTEST_PF_RESET_XXX for the 'failed' member.\n */\n#define JTEST_PF_RESET_FAILED(struct_pf_ptr)    \\\n    JTEST_PF_RESET_XXX(failed, struct_pf_ptr)\n\n#endif /* _JTEST_PF_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_systick.h",
    "content": "#ifndef _JTEST_SYSTICK_H_\n#define _JTEST_SYSTICK_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes                                                                       */\n/*--------------------------------------------------------------------------------*/\n\n/* Get access to the SysTick structure. */\n#if   defined ARMCM0\n  #include \"ARMCM0.h\"\n#elif defined ARMCM0P\n  #include \"ARMCM0plus.h\"\n#elif defined ARMCM0P_MPU\n  #include \"ARMCM0plus_MPU.h\"\n#elif defined ARMCM3\n  #include \"ARMCM3.h\"\n#elif defined ARMCM4\n  #include \"ARMCM4.h\"\n#elif defined ARMCM4_FP\n  #include \"ARMCM4_FP.h\"\n#elif defined ARMCM7\n  #include \"ARMCM7.h\" \n#elif defined ARMCM7_SP\n  #include \"ARMCM7_SP.h\"\n#elif defined ARMCM7_DP\n  #include \"ARMCM7_DP.h\"\n#elif defined ARMSC000\n  #include \"ARMSC000.h\"\n#elif defined ARMSC300\n  #include \"ARMSC300.h\"\n#elif defined ARMv8MBL\n  #include \"ARMv8MBL.h\"\n#elif defined ARMv8MML\n  #include \"ARMv8MML.h\"\n#elif defined ARMv8MML_DSP\n  #include \"ARMv8MML_DSP.h\"\n#elif defined ARMv8MML_SP\n  #include \"ARMv8MML_SP.h\"\n#elif defined ARMv8MML_DSP_SP\n  #include \"ARMv8MML_DSP_SP.h\"\n#elif defined ARMv8MML_DP\n  #include \"ARMv8MML_DP.h\"\n#elif defined ARMv8MML_DSP_DP\n  #include \"ARMv8MML_DSP_DP.h\"\n#elif defined ARMv7A\n  /* TODO */\n#else\n  #warning \"no appropriate header file found!\"\n#endif\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines                                                             */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Initial value for the SysTick module.\n *\n *  This is also the maximum value, important as SysTick is a decrementing counter.\n */\n#define JTEST_SYSTICK_INITIAL_VALUE       0xFFFFFF\n\n/**\n *  Reset the SysTick, decrementing timer to it's maximum value and disable it.\n *\n *  This macro should leave the SysTick timer in a state that's ready for cycle\n *  counting.\n */\n#define JTEST_SYSTICK_RESET(systick_ptr)                    \\\n    do                                                      \\\n    {                                                       \\\n        (systick_ptr)->CTRL = SysTick_CTRL_CLKSOURCE_Msk;   \\\n                                                            \\\n        (systick_ptr)->LOAD = JTEST_SYSTICK_INITIAL_VALUE;  \\\n        (systick_ptr)->VAL  = JTEST_SYSTICK_INITIAL_VALUE;  \\\n    } while (0)\n\n/**\n *  Start the SysTick timer, sourced by the processor clock.\n */\n#define JTEST_SYSTICK_START(systick_ptr)                    \\\n    do                                                      \\\n    {                                                       \\\n        (systick_ptr)->CTRL =                               \\\n            SysTick_CTRL_ENABLE_Msk |                       \\\n            SysTick_CTRL_CLKSOURCE_Msk;                     \\\n    } while (0)\n\n/**\n *  Evaluate to the current value of the SysTick timer.\n */\n#define JTEST_SYSTICK_VALUE(systick_ptr)                    \\\n    ((systick_ptr)->VAL)\n           \n#endif /* _JTEST_SYSTICK_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test.h",
    "content": "#ifndef _JTEST_TEST_H_\n#define _JTEST_TEST_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include <stdint.h>\n#include \"jtest_util.h\"\n#include \"jtest_test_ret.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Type Definitions */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  A struct which represents a Test in the JTEST framework.  This struct is\n *  used to enable, run, and describe the test it represents.\n */\ntypedef struct JTEST_TEST_struct\n{\n    JTEST_TEST_RET_t ( * test_fn_ptr)(void); /**< Pointer to the test function. */\n    char   * test_fn_str;                    /**< Name of the test function */\n    char   * fut_str;           /**< Name of the function under test. */\n\n    /**\n     *  Flags that govern how the #JTEST_TEST_t behaves.\n     */\n    union {\n        struct {\n            unsigned enabled : 1;\n            unsigned unused  : 7;\n        } bits;\n        uint8_t byte;           /* Access all flags at once. */\n    } flags;\n    \n} JTEST_TEST_t;\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Assign a test function to the #JTEST_TEST_t struct.\n */\n#define JTEST_TEST_SET_FN(jtest_test_ptr, fn_ptr)                   \\\n    JTEST_SET_STRUCT_ATTRIBUTE(jtest_test_ptr, test_fn_ptr, fn_ptr)\n\n/**\n *  Specify a function under test (FUT) for the #JTEST_TEST_t struct.\n */\n#define JTEST_TEST_SET_FUT(jtest_test_ptr, str)                 \\\n    JTEST_SET_STRUCT_ATTRIBUTE(jtest_test_ptr, fut_str, str)\n\n/* Macros concerning JTEST_TEST_t flags */\n/*--------------------------------------------------------------------------------*/\n\n#define JTEST_TEST_FLAG_SET 1 /**< Value of a set #JTEST_TEST_t flag. */\n#define JTEST_TEST_FLAG_CLR 0 /**< Value of a cleared #JTEST_TEST_t flag. */\n\n/**\n *  Evaluate to the flag in #JTEST_TEST_t having flag_name.\n */\n#define JTEST_TEST_FLAG(jtest_test_ptr, flag_name)  \\\n    ((jtest_test_ptr)->flags.bits.flag_name)\n\n/**\n *  Dispatch macro for setting and clearing #JTEST_TEST_t flags.\n *\n *  @param jtest_test_ptr Pointer to a #JTEST_TEST_t struct.\n *  @param flag_name      Name of the flag to set in #JTEST_TEST_t.flags.bits\n *  @param xxx            Vaid values: \"SET\" or \"CLR\"\n *\n *  @note This function depends on JTEST_TEST_FLAG_SET and JTEST_TEST_FLAG_CLR.\n */\n#define JTEST_TEST_XXX_FLAG(jtest_test_ptr, flag_name, xxx)                  \\\n    do                                                                       \\\n    {                                                                        \\\n        JTEST_TEST_FLAG(jtest_test_ptr, flag_name) = JTEST_TEST_FLAG_##xxx ; \\\n    } while (0)\n\n/**\n *  Specification of #JTEST_TEST_XXX_FLAG to set #JTEST_TEST_t flags.\n */\n#define JTEST_TEST_SET_FLAG(jtest_test_ptr, flag_name)                       \\\n    JTEST_TEST_XXX_FLAG(jtest_test_ptr, flag_name, SET)\n\n/**\n *  Specification of #JTEST_TEST_XXX_FLAG to clear #JTEST_TEST_t flags.\n */\n#define JTEST_TEST_CLR_FLAG(jtest_test_ptr, flag_name)                       \\\n    JTEST_TEST_XXX_FLAG(jtest_test_ptr, flag_name, CLR)\n\n/**\n *  Evaluate to true if the #JTEST_TEST_t is enabled.\n */\n#define JTEST_TEST_IS_ENABLED(jtest_test_ptr)                           \\\n    (JTEST_TEST_FLAG(jtest_test_ptr, enabled) == JTEST_TEST_FLAG_SET)\n\n#endif /* _JTEST_TEST_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_call.h",
    "content": "#ifndef _JTEST_TEST_CALL_H_\n#define _JTEST_TEST_CALL_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n#include \"jtest_test.h\"\n#include \"jtest_test_define.h\"\n#include \"jtest_fw.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Exectute the test in the #JTEST_TEST_t struct associated with the identifier\n *  test_fn and store the result in retval.\n */\n#define JTEST_TEST_RUN(retval, test_fn)                                 \\\n    do                                                                  \\\n    {                                                                   \\\n        JTEST_DUMP_STR(\"Test Name:\\n\");                                 \\\n        JTEST_DUMP_STR(JTEST_TEST_STRUCT_NAME(test_fn).test_fn_str);    \\\n        JTEST_DUMP_STR(\"Function Under Test:\\n\");                       \\\n        JTEST_DUMP_STR(JTEST_TEST_STRUCT_NAME(test_fn).fut_str);        \\\n        retval = JTEST_TEST_STRUCT_NAME(test_fn).test_fn_ptr();         \\\n    } while (0)\n\n/**\n *  Update the enclosing #JTEST_GROUP_t's pass/fail information based on\n *  test_retval.\n *\n *  @param test_retval A #JTEST_TEST_RET_enum for the current test.\n *\n *  @warning Only use if #JTEST_TEST_t is called in the context of a\n *  #JTEST_GROUP_t.\n */\n#define JTEST_TEST_UPDATE_PARENT_GROUP_PF(test_retval)              \\\n    do                                                              \\\n    {                                                               \\\n        /* Update enclosing JTEST_GROUP_t with pass/fail info */    \\\n        if (test_retval == JTEST_TEST_PASSED)                       \\\n        {                                                           \\\n            JTEST_GROUP_INC_PASSED(JTEST_CURRENT_GROUP_PTR(), 1);   \\\n        } else {                                                    \\\n            JTEST_GROUP_INC_FAILED(JTEST_CURRENT_GROUP_PTR(), 1);   \\\n        }                                                           \\\n    } while (0)\n\n/**\n *  Update the #JTEST_FW with pass/fail information based on test_retval.\n *\n *  @param test_retval A #JTEST_TEST_RET_enum for the current test.\n */\n#define JTEST_TEST_UPDATE_FW_PF(test_retval)                        \\\n    do                                                              \\\n    {                                                               \\\n        /* Update the JTEST_FW with pass/fail info */                \\\n        if (test_retval == JTEST_TEST_PASSED)                       \\\n        {                                                           \\\n            JTEST_FW_INC_PASSED( 1);                                \\\n        } else {                                                    \\\n            JTEST_FW_INC_FAILED(1);                                 \\\n        }                                                           \\\n    } while (0)\n\n/**\n *  Update the enclosing JTEST_GROUP_t's pass/fail information, or the\n *  #JTEST_FW's if this test has no enclosing #JTEST_GROUP_t.\n *\n *  @param test_retval A #JTEST_TEST_RET_enum for the current test.\n */\n#define JTEST_TEST_UPDATE_PARENT_GROUP_OR_FW_PF(test_retval)            \\\n    do                                                                  \\\n    {                                                                   \\\n        /* Update pass-fail information */                              \\\n        if (JTEST_CURRENT_GROUP_PTR() /* Non-null */)                    \\\n        {                                                               \\\n            JTEST_TEST_UPDATE_PARENT_GROUP_PF(test_retval);             \\\n        } else {                                                        \\\n            JTEST_TEST_UPDATE_FW_PF(test_retval);                       \\\n        }                                                               \\\n    } while (0)\n\n/**\n *  Dump the results of the test to the Keil Debugger.\n */\n#define JTEST_TEST_DUMP_RESULTS(test_retval)        \\\n        do                                          \\\n        {                                           \\\n            if (test_retval == JTEST_TEST_PASSED)   \\\n            {                                       \\\n                JTEST_DUMP_STR(\"Test Passed\\n\");      \\\n            } else {                                \\\n                JTEST_DUMP_STR(\"Test Failed\\n\");      \\\n            }                                       \\\n        } while (0)\n\n/**\n *  Call the #JTEST_TEST_t assocaited with the identifier test_fn.\n */\n#define JTEST_TEST_CALL(test_fn)                                        \\\n    do                                                                  \\\n    {                                                                   \\\n        if (JTEST_TEST_IS_ENABLED(&JTEST_TEST_STRUCT_NAME(test_fn)))    \\\n        {                                                               \\\n            /* Default to failure */                                    \\\n            JTEST_TEST_RET_t __jtest_test_ret = JTEST_TEST_FAILED;      \\\n                                                                        \\\n            JTEST_ACT_TEST_START();                                     \\\n            JTEST_TEST_RUN(__jtest_test_ret, test_fn);                  \\\n                                                                        \\\n            /* Update pass-fail information */                          \\\n            JTEST_TEST_UPDATE_PARENT_GROUP_OR_FW_PF(__jtest_test_ret);  \\\n                                                                        \\\n            JTEST_TEST_DUMP_RESULTS(__jtest_test_ret);                  \\\n            JTEST_ACT_TEST_END();                                       \\\n        }                                                               \\\n    } while (0)\n\n#endif /* _JTEST_TEST_CALL_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_define.h",
    "content": "#ifndef _JTEST_TEST_DEFINE_H_\n#define _JTEST_TEST_DEFINE_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"jtest_util.h\"\n#include \"jtest_define.h\"\n#include \"jtest_test.h\"\n\n/* For defining macros with optional arguments */\n#include \"opt_arg/opt_arg.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Prefix for all #JTEST_TEST_t structs.\n */\n#define JTEST_TEST_STRUCT_NAME_PREFIX G_JTEST_TEST_STRUCT_\n\n/**\n *  Define test template used by #JTEST_TEST_t tests.\n */\n#define JTEST_TEST_FN_TEMPLATE(test_fn)                         \\\n    JTEST_TEST_RET_t test_fn(void)\n\n#define JTEST_TEST_FN_PROTOTYPE JTEST_TEST_FN_TEMPLATE /**< Alias for\n                                                        * #JTEST_TEST_FN_TEMPLATE. */\n\n/**\n *  Evaluate to the name of the #JTEST_TEST_t struct associated with test_fn.\n */\n#define JTEST_TEST_STRUCT_NAME(test_fn)                         \\\n    JTEST_STRUCT_NAME(JTEST_TEST_STRUCT_NAME_PREFIX, test_fn)\n\n/**\n *  Define a #JTEST_TEST_t struct based on the given test_fn.\n */\n#define JTEST_TEST_DEFINE_STRUCT(test_fn)                   \\\n    JTEST_DEFINE_STRUCT(JTEST_TEST_t,                       \\\n                        JTEST_TEST_STRUCT_NAME(test_fn))\n\n/**\n *  Declare a #JTEST_TEST_t struct based on the given test_fn.\n */\n#define JTEST_TEST_DECLARE_STRUCT(test_fn)      \\\n    JTEST_DECLARE_STRUCT(JTEST_TEST_DEFINE_STRUCT(test_fn))\n\n/**\n *  Contents needed to initialize a JTEST_TEST_t struct.\n */\n#define JTEST_TEST_STRUCT_INIT(test_fn, fut, enable)    \\\n    test_fn,                                            \\\n        STR_NL(test_fn),                                   \\\n        STR_NL(fut),                                       \\\n    {                                                   \\\n        {                                               \\\n            enable,                                     \\\n                0                                       \\\n        }                                               \\\n    }                                                   \\\n        \n\n/**\n *  Initialize the contents of a #JTEST_TEST_t struct.\n */\n#define JTEST_TEST_INIT(test_fn, fut, enable)              \\\n    JTEST_TEST_DEFINE_STRUCT(test_fn) = {                  \\\n        JTEST_TEST_STRUCT_INIT(test_fn, fut, enable)       \\\n    }\n\n/* Test Definition Macro */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Define a #JTEST_TEST_t object and a test function.\n */\n#define _JTEST_DEFINE_TEST(test_fn, fut, enable)           \\\n    JTEST_TEST_FN_PROTOTYPE(test_fn);                      \\\n    JTEST_TEST_INIT(test_fn, fut, enable);                 \\\n    JTEST_TEST_FN_PROTOTYPE(test_fn) /* Notice the lacking semicolon */\n\n/**\n *  Declare a #JTEST_TEST_t object and a test function prototype.\n */\n#define JTEST_DECLARE_TEST(test_fn)                                     \\\n    JTEST_TEST_FN_PROTOTYPE(test_fn);                                   \\\n    JTEST_TEST_DECLARE_STRUCT(test_fn) /* Note the lacking semicolon */\n\n/*--------------------------------------------------------------------------------*/\n/* Macros with optional arguments */\n/*--------------------------------------------------------------------------------*/\n\n/* Top-level Interface */\n#define JTEST_DEFINE_TEST(...)                             \\\n    JTEST_DEFINE_TEST_(PP_NARG(__VA_ARGS__), ##__VA_ARGS__)\n\n/* Dispatch Macro*/\n#define JTEST_DEFINE_TEST_(N, ...)                         \\\n    SPLICE(JTEST_DEFINE_TEST_, N)(__VA_ARGS__)\n\n/* Default Arguments */\n#define JTEST_DEFINE_TEST_DEFAULT_FUT /* Blank */\n#define JTEST_DEFINE_TEST_DEFAULT_ENABLE                   \\\n    JTEST_TRUE                                 /* Tests enabled by\n                                                * default. */ \n\n/* Dispatch Cases*/\n#define JTEST_DEFINE_TEST_1(_1)                            \\\n    _JTEST_DEFINE_TEST(                                    \\\n        _1,                                                \\\n        JTEST_DEFINE_TEST_DEFAULT_FUT,                     \\\n        JTEST_DEFINE_TEST_DEFAULT_ENABLE                   \\\n        )\n\n#define JTEST_DEFINE_TEST_2(_1, _2)                        \\\n    _JTEST_DEFINE_TEST(                                    \\\n        _1,                                                \\\n        _2,                                                \\\n        JTEST_DEFINE_TEST_DEFAULT_ENABLE                   \\\n        )\n\n#define JTEST_DEFINE_TEST_3(_1, _2, _3)                    \\\n    _JTEST_DEFINE_TEST(                                    \\\n        _1,                                                \\\n        _2,                                                \\\n        _3                                                 \\\n        )\n\n#endif /* _JTEST_TEST_DEFINE_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_ret.h",
    "content": "#ifndef _JTEST_TEST_RET_H_\n#define _JTEST_TEST_RET_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Type Definitions */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Values a #JTEST_TEST_t can return.\n */\ntypedef enum JTEST_TEST_RET_enum\n{\n    JTEST_TEST_PASSED,\n    JTEST_TEST_FAILED\n} JTEST_TEST_RET_t;\n\n#endif /* _JTEST_TEST_RET_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_util.h",
    "content": "#ifndef _JTEST_UTIL_H_\n#define _JTEST_UTIL_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"util/util.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/* Define boolean values for the framework. */\n#define JTEST_TRUE  1           /**< Value used for TRUE in JTEST. */\n#define JTEST_FALSE 0           /**< Value used for FALSE in JTEST. */\n\n/**\n *  Set the value of the attribute in the struct to by struct_ptr to value.\n */\n#define JTEST_SET_STRUCT_ATTRIBUTE(struct_ptr, attribute, value)    \\\n    do                                                              \\\n    {                                                               \\\n        (struct_ptr)->attribute = (value);                          \\\n    } while (0)\n\n#endif /* _JTEST_UTIL_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/opt_arg.h",
    "content": "#ifndef _OPT_ARG_H_\n#define _OPT_ARG_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"pp_narg.h\"\n#include \"splice.h\"\n\n/* If you are Joseph Jaoudi, you have a snippet which expands into an\n   example. If you are not Joseph, but possess his code, study the examples. If\n   you have no examples, turn back contact Joseph. */\n\n#endif /* _OPT_ARG_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/pp_narg.h",
    "content": "#ifndef _PP_NARG_H_\n#define _PP_NARG_H_\n\n#define PP_NARG(...)                                      \\\n    PP_NARG_(__VA_ARGS__,PP_RSEQ_N())\n#define PP_NARG_(...)                                     \\\n    PP_ARG_N(__VA_ARGS__)\n#define PP_ARG_N(                                         \\\n                 _1, _2, _3, _4, _5, _6, _7, _8, _9,_10,  \\\n                 _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \\\n                 _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \\\n                 _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \\\n                 _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \\\n                 _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \\\n                 _61,_62,_63,N,...) N\n#define PP_RSEQ_N()                                       \\\n    63,62,61,60,                                          \\\n        59,58,57,56,55,54,53,52,51,50,                    \\\n        49,48,47,46,45,44,43,42,41,40,                    \\\n        39,38,37,36,35,34,33,32,31,30,                    \\\n        29,28,27,26,25,24,23,22,21,20,                    \\\n        19,18,17,16,15,14,13,12,11,10,                    \\\n        9,8,7,6,5,4,3,2,1,0\n\n#endif /* _PP_NARG_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/splice.h",
    "content": "#ifndef _SPLICE_H_\n#define _SPLICE_H_\n\n#define SPLICE(a,b) SPLICE_1(a,b)\n#define SPLICE_1(a,b) SPLICE_2(a,b)\n#define SPLICE_2(a,b) a##b\n\n#endif /* _SPLICE_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/util/util.h",
    "content": "#ifndef _UTIL_H_\n#define _UTIL_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Convert a symbol to a string and add a 'NewLine'.\n */\n#define STR_NL(x)  STR1_NL(x)\n#define STR1_NL(x) (STR2_NL(x)\"\\n\")\n#define STR2_NL(x) #x\n\n/**\n *  Convert a symbol to a string.\n */\n#define STR(x)  STR1(x)\n#define STR1(x) STR2(x)\n#define STR2(x) #x\n\n/**\n *  Concatenate two symbols.\n */\n#define CONCAT(a, b)  CONCAT1(a, b)\n#define CONCAT1(a, b) CONCAT2(a, b)\n#define CONCAT2(a, b) a##b\n\n\n/**\n *  Place curly braces around a varaible number of macro arguments.\n */\n#define CURLY(...) {__VA_ARGS__}\n\n/**\n *  Place parenthesis around a variable number of macro arguments.\n */\n#define PAREN(...) (__VA_ARGS__)\n\n/* Standard min/max macros. */\n#define MIN(x,y) (((x) < (y)) ? (x) : (y) )\n#define MAX(x,y) (((x) > (y)) ? (x) : (y) )\n\n/**\n *  Bound value using low and high limits.\n *\n *  Evaluate to a number in the range, endpoint inclusive.\n */\n#define BOUND(low, high, value)                 \\\n    MAX(MIN(high, value), low)\n\n#endif /* _UTIL_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_cycle.c",
    "content": "#include \"../inc/jtest_cycle.h\"\n#include <inttypes.h>\n\n/*--------------------------------------------------------------------------------*/\n/* Define Module Variables */\n/*--------------------------------------------------------------------------------*/\n\n/* const char * JTEST_CYCLE_STRF = \"Running: %s\\nCycles: %\" PRIu32 \"\\n\"; */\nconst char * JTEST_CYCLE_STRF = \"Cycles: %\" PRIu32 \"\\n\"; /* function name + parameter string skipped */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_dump_str_segments.c",
    "content": "#include \"jtest_fw.h\"\n\n/**\n *  Dump the JTEST_FW.str_buffer the Keil framework in pieces.\n *\n *  The JTEST_FW.str_buffer contains more characters than the Keil framework can\n *  dump at once. This function dumps them in blocks.\n */\nvoid jtest_dump_str_segments(void)\n{\n    uint32_t seg_idx      = 0;\n    uint32_t memmove_idx = 0;\n    uint32_t seg_cnt  =\n        (strlen(JTEST_FW.str_buffer) / JTEST_STR_MAX_OUTPUT_SIZE) + 1;\n\n    for( seg_idx = 0; seg_idx < seg_cnt; ++seg_idx)\n    {\n        JTEST_TRIGGER_ACTION(dump_str);\n\n        if (seg_idx < JTEST_STR_MAX_OUTPUT_SEGMENTS)\n        {\n            memmove_idx = 0;\n            while (memmove_idx < (seg_cnt - seg_idx -1) )\n            {\n                memmove(\n                    JTEST_FW.str_buffer+\n                    (memmove_idx* JTEST_STR_MAX_OUTPUT_SIZE),\n                    JTEST_FW.str_buffer+\n                    ((memmove_idx+1)*JTEST_STR_MAX_OUTPUT_SIZE),\n                    JTEST_BUF_SIZE);\n                ++memmove_idx;\n            }\n        }\n    }\n    return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_fw.c",
    "content": "#include \"../inc/jtest.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Define Global Variables */\n/*--------------------------------------------------------------------------------*/\n\nchar JTEST_FW_STR_BUFFER[JTEST_BUF_SIZE] = {0};\n\nvolatile JTEST_FW_t JTEST_FW = {0};\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_trigger_action.c",
    "content": "\n#include \"jtest_fw.h\"\n\nvoid test_start    (void) {\n//  ;\n  JTEST_FW.test_start++;\n}\n\nvoid test_end      (void) {\n//  ;\n  JTEST_FW.test_end++;\n}\n\nvoid group_start   (void) {\n//  ;\n  JTEST_FW.group_start++;\n}\n\nvoid group_end     (void) {\n//  ;\n  JTEST_FW.group_end++;\n}\n\nvoid dump_str      (void) {\n//  ;\n  JTEST_FW.dump_str++;\n}\n\nvoid dump_data     (void) {\n//  ;\n  JTEST_FW.dump_data++;\n}\n\nvoid exit_fw       (void) {\n//  ;\n  JTEST_FW.exit_fw++;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/all_tests.h",
    "content": "#ifndef _ALL_TESTS_H_\n#define _ALL_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(all_tests);\n\n#endif /* _ALL_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_templates.h",
    "content": "#ifndef _BASIC_MATH_TEMPLATES_H_\n#define _BASIC_MATH_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n#include \"test_templates.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Compare the outputs used by basic math tests for the function under test and\n *  the reference function.\n */\n#define BASIC_MATH_COMPARE_INTERFACE(block_size, output_type)   \\\n    TEST_ASSERT_BUFFERS_EQUAL(                                  \\\n        basic_math_output_ref.data_ptr,                         \\\n        basic_math_output_fut.data_ptr,                         \\\n        block_size * sizeof(output_type))\n\n/*\n * Comparison SNR thresholds for the data types used in basic_math_tests.\n */\n#define BASIC_MATH_SNR_THRESHOLD_float32_t 120\n#define BASIC_MATH_SNR_THRESHOLD_q31_t 100\n#define BASIC_MATH_SNR_THRESHOLD_q15_t 75\n#define BASIC_MATH_SNR_THRESHOLD_q7_t 25\n\n/**\n *  Compare reference and fut outputs using SNR.\n *\n *  @note The outputs are converted to float32_t before comparison.\n */\n#define BASIC_MATH_SNR_COMPARE_INTERFACE(block_size, output_type)   \\\n    do                                                              \\\n    {                                                               \\\n        TEST_CONVERT_AND_ASSERT_SNR(                                \\\n            basic_math_output_f32_ref,                              \\\n            basic_math_output_ref.data_ptr,                         \\\n            basic_math_output_f32_fut,                              \\\n            basic_math_output_fut.data_ptr,                         \\\n            block_size,                                             \\\n            output_type,                                            \\\n            BASIC_MATH_SNR_THRESHOLD_##output_type                  \\\n            );                                                      \\\n    } while (0)\n\n\n/**\n *  Compare reference and fut outputs using SNR.\n *\n *  @note The outputs are converted to float32_t before comparison.\n */\n#define BASIC_MATH_SNR_ELT1_COMPARE_INTERFACE(block_size, output_type)  \\\n    do                                                                  \\\n    {                                                                   \\\n        TEST_CONVERT_AND_ASSERT_SNR(                                    \\\n            basic_math_output_f32_ref,                                  \\\n            basic_math_output_ref.data_ptr,                             \\\n            basic_math_output_f32_fut,                                  \\\n            basic_math_output_fut.data_ptr,                             \\\n            1,                                                          \\\n            output_type,                                                \\\n            BASIC_MATH_SNR_THRESHOLD_##output_type                      \\\n            );                                                          \\\n    } while (0)\n\n\n\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n#define ARM_abs_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, basic_math_output_fut.data_ptr, block_size)\n\n#define REF_abs_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, basic_math_output_ref.data_ptr, block_size)\n\n#define ARM_add_INPUT_INTERFACE(input_a, input_b, block_size)           \\\n    PAREN(input_a, input_b, basic_math_output_fut.data_ptr, block_size) \\\n\n#define REF_add_INPUT_INTERFACE(input_a, input_b, block_size)           \\\n    PAREN(input_a, input_b, basic_math_output_ref.data_ptr, block_size) \\\n\n#define ARM_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size)      \\\n    PAREN(input_a, input_b, block_size, basic_math_output_fut.data_ptr) \\\n\n#define REF_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size)      \\\n    PAREN(input_a, input_b, block_size, basic_math_output_ref.data_ptr) \\\n\n#define ARM_mult_INPUT_INTERFACE(input_a, input_b, block_size)          \\\n    PAREN(input_a, input_b, basic_math_output_fut.data_ptr, block_size) \\\n\n#define REF_mult_INPUT_INTERFACE(input_a, input_b, block_size)          \\\n    PAREN(input_a, input_b, basic_math_output_ref.data_ptr, block_size) \\\n\n#define ARM_negate_INPUT_INTERFACE(input, block_size)           \\\n    PAREN(input, basic_math_output_fut.data_ptr, block_size)\n\n#define REF_negate_INPUT_INTERFACE(input, block_size)           \\\n    PAREN(input, basic_math_output_ref.data_ptr, block_size)\n\n#define ARM_offset_INPUT_INTERFACE(input, elt, block_size)          \\\n    PAREN(input, elt, basic_math_output_fut.data_ptr, block_size)   \\\n\n#define REF_offset_INPUT_INTERFACE(input, elt, block_size)          \\\n    PAREN(input, elt, basic_math_output_ref.data_ptr, block_size)   \\\n\n#define ARM_shift_INPUT_INTERFACE(input, elt, block_size)           \\\n    PAREN(input, elt, basic_math_output_fut.data_ptr, block_size)   \\\n\n#define REF_shift_INPUT_INTERFACE(input, elt, block_size)           \\\n    PAREN(input, elt, basic_math_output_ref.data_ptr, block_size)   \\\n\n#define ARM_scale_float_INPUT_INTERFACE(input, elt, block_size)     \\\n    PAREN(input, elt, basic_math_output_fut.data_ptr, block_size)   \\\n\n#define REF_scale_float_INPUT_INTERFACE(input, elt, block_size)     \\\n    PAREN(input, elt, basic_math_output_ref.data_ptr, block_size)   \\\n\n/* These two are for the fixed point functions */\n#define ARM_scale_INPUT_INTERFACE(input, elt1, elt2, block_size)        \\\n    PAREN(input, elt1, elt2, basic_math_output_fut.data_ptr, block_size) \\\n\n#define REF_scale_INPUT_INTERFACE(input, elt1, elt2, block_size)        \\\n    PAREN(input, elt1, elt2, basic_math_output_ref.data_ptr, block_size) \\\n\n#define ARM_sub_INPUT_INTERFACE(input_a, input_b, block_size)           \\\n    PAREN(input_a, input_b, basic_math_output_fut.data_ptr, block_size) \\\n\n#define REF_sub_INPUT_INTERFACE(input_a, input_b, block_size)           \\\n    PAREN(input_a, input_b, basic_math_output_ref.data_ptr, block_size) \\\n\n\n/*--------------------------------------------------------------------------------*/\n/* Test Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF1_BLK() for basic math tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name,       \\\n                                                 suffix,        \\\n                                                 input_type,    \\\n                                                 output_type)   \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,          \\\n                      arm_##fn_name##_##suffix)                 \\\n    {                                                           \\\n        TEST_TEMPLATE_BUF1_BLK(                                 \\\n            basic_math_f_all,                                   \\\n            basic_math_block_sizes,                             \\\n            input_type,                                         \\\n            output_type,                                        \\\n            arm_##fn_name##_##suffix,                           \\\n            ARM_##fn_name##_INPUT_INTERFACE,                    \\\n            ref_##fn_name##_##suffix,                           \\\n            REF_##fn_name##_INPUT_INTERFACE,                    \\\n            BASIC_MATH_COMPARE_INTERFACE);                      \\\n    }\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF2_BLK() for basic math tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(fn_name,               \\\n                                                 suffix,                \\\n                                                 input_type,            \\\n                                                 output_type,           \\\n                                                 comparison_interface)  \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,                  \\\n                      arm_##fn_name##_##suffix)                         \\\n    {                                                                   \\\n        TEST_TEMPLATE_BUF2_BLK(                                         \\\n            basic_math_f_all,                                           \\\n            basic_math_f_all,                                           \\\n            basic_math_block_sizes,                                     \\\n            input_type,                                                 \\\n            output_type,                                                \\\n            arm_##fn_name##_##suffix,                                   \\\n            ARM_##fn_name##_INPUT_INTERFACE,                            \\\n            ref_##fn_name##_##suffix,                                   \\\n            REF_##fn_name##_INPUT_INTERFACE,                            \\\n            comparison_interface);                                      \\\n    }\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF1_ELT1_BLK() for basic math tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK(fn_name,      \\\n                                                      suffix,       \\\n                                                      input_type,   \\\n                                                      elt_type,     \\\n                                                      output_type)  \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \\\n                      arm_##fn_name##_##suffix)                     \\\n    {                                                               \\\n        TEST_TEMPLATE_BUF1_ELT1_BLK(                                \\\n            basic_math_f_all,                                       \\\n            basic_math_elts,                                        \\\n            basic_math_block_sizes,                                 \\\n            input_type,                                             \\\n            elt_type,                                               \\\n            output_type,                                            \\\n            arm_##fn_name##_##suffix,                               \\\n            ARM_##fn_name##_INPUT_INTERFACE,                        \\\n            ref_##fn_name##_##suffix,                               \\\n            REF_##fn_name##_INPUT_INTERFACE,                        \\\n            BASIC_MATH_COMPARE_INTERFACE);                          \\\n    }\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF1_ELT2_BLK() for basic math tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT2_BLK(fn_name,      \\\n                                                      suffix,       \\\n                                                      input_type,   \\\n                                                      elt1_type,    \\\n                                                      elt2_type,    \\\n                                                      output_type)  \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \\\n                      arm_##fn_name##_##suffix)                     \\\n    {                                                               \\\n        TEST_TEMPLATE_BUF1_ELT2_BLK(                                \\\n            basic_math_f_all,                                       \\\n            basic_math_elts,                                        \\\n            basic_math_elts2,                                       \\\n            basic_math_block_sizes,                                 \\\n            input_type,                                             \\\n            elt1_type,                                              \\\n            elt2_type,                                              \\\n            output_type,                                            \\\n            arm_##fn_name##_##suffix,                               \\\n            ARM_##fn_name##_INPUT_INTERFACE,                        \\\n            ref_##fn_name##_##suffix,                               \\\n            REF_##fn_name##_INPUT_INTERFACE,                        \\\n            BASIC_MATH_COMPARE_INTERFACE);                          \\\n    }\n\n#endif /* _BASIC_MATH_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_data.h",
    "content": "#ifndef ARM_BASIC_MATH_TEST_DATA_H\n#define ARM_BASIC_MATH_TEST_DATA_H\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n#define BASIC_MATH_MAX_INPUT_ELEMENTS 32\n#define BASIC_MATH_BIGGEST_INPUT_TYPE float32_t\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Variables */\n/*--------------------------------------------------------------------------------*/\n\n/* Input/Output Buffers */\nARR_DESC_DECLARE(basic_math_output_fut);\nARR_DESC_DECLARE(basic_math_output_ref);\n\nextern BASIC_MATH_BIGGEST_INPUT_TYPE\nbasic_math_output_f32_ref[BASIC_MATH_MAX_INPUT_ELEMENTS];\n\nextern BASIC_MATH_BIGGEST_INPUT_TYPE\nbasic_math_output_f32_fut[BASIC_MATH_MAX_INPUT_ELEMENTS];\n\n/* Block Sizes*/\nARR_DESC_DECLARE(basic_math_block_sizes);\n\n/* Numbers */\nARR_DESC_DECLARE(basic_math_elts);\nARR_DESC_DECLARE(basic_math_elts2);\nARR_DESC_DECLARE(basic_math_eltsf);\n\n/* Float Inputs */\nARR_DESC_DECLARE(basic_math_zeros);\nARR_DESC_DECLARE(basic_math_f_2);\nARR_DESC_DECLARE(basic_math_f_15);\nARR_DESC_DECLARE(basic_math_f_32);\nARR_DESC_DECLARE(basic_math_f_all);\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_group.h",
    "content": "#ifndef _BASIC_MATH_TEST_GROUP_H_\n#define _BASIC_MATH_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(basic_math_tests);\n\n#endif /* _BASIC_MATH_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_tests.h",
    "content": "#ifndef _BASIC_MATH_TESTS_H_\n#define _BASIC_MATH_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(abs_tests);\nJTEST_DECLARE_GROUP(add_tests);\nJTEST_DECLARE_GROUP(dot_prod_tests);\nJTEST_DECLARE_GROUP(mult_tests);\nJTEST_DECLARE_GROUP(negate_tests);\nJTEST_DECLARE_GROUP(offset_tests);\nJTEST_DECLARE_GROUP(scale_tests);\nJTEST_DECLARE_GROUP(shift_tests);\nJTEST_DECLARE_GROUP(sub_tests);\n\n#endif /* _BASIC_MATH_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_templates.h",
    "content": "#ifndef _COMPLEX_MATH_TEMPLATES_H_\n#define _COMPLEX_MATH_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n#include \"test_templates.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Compare the real outputs from the function under test and the reference\n *  function.\n */\n#define COMPLEX_MATH_COMPARE_RE_INTERFACE(block_size, output_type)  \\\n    TEST_ASSERT_BUFFERS_EQUAL(                                      \\\n        complex_math_output_ref_a.data_ptr,                         \\\n        complex_math_output_fut_a.data_ptr,                         \\\n        block_size * sizeof(output_type))\n\n/**\n *  Compare the real and imaginary outputs from the function under test and the\n *  reference function.\n */\n#define COMPLEX_MATH_COMPARE_CMPLX_INTERFACE(block_size, output_type)   \\\n    do                                                                  \\\n    {                                                                   \\\n        COMPLEX_MATH_COMPARE_RE_INTERFACE(block_size * 2, output_type); \\\n    } while (0)\n\n\n/*\n * Comparison SNR thresholds for the data types used in complex_math_tests.\n */\n#define COMPLEX_MATH_SNR_THRESHOLD_float32_t 120\n#define COMPLEX_MATH_SNR_THRESHOLD_q31_t 100\n#define COMPLEX_MATH_SNR_THRESHOLD_q15_t 75\n\n/**\n *  Compare reference and fut outputs using SNR.\n *\n *  The output_suffix specifies which output buffers to use for the\n *  comparison. An output_suffix of 'a' expands to the following buffers:\n *\n *  - complex_math_output_f32_ref_a\n *  - complex_math_output_f32_fut_a\n *  - complex_math_output_ref_a\n *  - complex_math_output_fut_a\n *\n *  @note The outputs are converted to float32_t before comparison.\n */\n#define COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size,      \\\n                                               output_type,     \\\n                                               output_suffix)   \\\n    do                                                          \\\n    {                                                           \\\n        TEST_CONVERT_AND_ASSERT_SNR(                            \\\n            complex_math_output_f32_ref_##output_suffix,        \\\n            complex_math_output_ref_##output_suffix.data_ptr,   \\\n            complex_math_output_f32_fut_##output_suffix,        \\\n            complex_math_output_fut_##output_suffix.data_ptr,   \\\n            block_size,                                         \\\n            output_type,                                        \\\n            COMPLEX_MATH_SNR_THRESHOLD_##output_type            \\\n            );                                                  \\\n    } while (0)\n\n/**\n *  Specification of #COMPLEX_MATH_SNR_COMPARE_INTERFACE() for real outputs.\n */\n#define COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE(block_size,       \\\n                                                   output_type) \\\n    COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size,          \\\n                                           output_type,         \\\n                                           a)\n\n/**\n *  Specification of #COMPLEX_MATH_SNR_COMPARE_INTERFACE() for complex outputs.\n */\n#define COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE(block_size,    \\\n                                                 output_type)   \\\n        COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size * 2,  \\\n                                               output_type,     \\\n                                               a)\n\n/**\n *  Compare reference and fut split outputs using SNR.\n *\n *  'Split' refers to two separate output buffers; one for real and one for\n *  complex.\n */\n#define COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE(block_size,    \\\n                                                 output_type)   \\\n        do                                                      \\\n        {                                                       \\\n            COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size,  \\\n                                                   output_type, \\\n                                                   a);          \\\n            COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size,  \\\n                                                   output_type, \\\n                                                   b);          \\\n        } while (0)\n\n\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n#define ARM_cmplx_conj_INPUT_INTERFACE(input, block_size)           \\\n    PAREN(input, complex_math_output_fut_a.data_ptr, block_size)\n\n#define REF_cmplx_conj_INPUT_INTERFACE(input, block_size)           \\\n    PAREN(input, complex_math_output_ref_a.data_ptr, block_size)\n\n#define ARM_cmplx_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size) \\\n    PAREN(input_a, input_b, block_size,                                 \\\n          complex_math_output_fut_a.data_ptr,                          \\\n          complex_math_output_fut_b.data_ptr)\n\n#define REF_cmplx_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size) \\\n    PAREN(input_a, input_b, block_size,                                 \\\n          complex_math_output_ref_a.data_ptr,                          \\\n          complex_math_output_ref_b.data_ptr)\n\n#define ARM_cmplx_mag_INPUT_INTERFACE(input, block_size)            \\\n    PAREN(input, complex_math_output_fut_a.data_ptr, block_size)\n\n#define REF_cmplx_mag_INPUT_INTERFACE(input, block_size)            \\\n    PAREN(input, complex_math_output_ref_a.data_ptr, block_size)\n\n#define ARM_cmplx_mag_squared_INPUT_INTERFACE(input, block_size)    \\\n    PAREN(input, complex_math_output_fut_a.data_ptr, block_size)\n\n#define REF_cmplx_mag_squared_INPUT_INTERFACE(input, block_size)    \\\n    PAREN(input, complex_math_output_ref_a.data_ptr, block_size)\n\n#define ARM_cmplx_mult_cmplx_INPUT_INTERFACE(input_a, input_b, block_size) \\\n    PAREN(input_a, input_b, complex_math_output_fut_a.data_ptr, block_size)\n\n#define REF_cmplx_mult_cmplx_INPUT_INTERFACE(input_a, input_b, block_size) \\\n    PAREN(input_a, input_b, complex_math_output_ref_a.data_ptr, block_size)\n\n#define ARM_cmplx_mult_real_INPUT_INTERFACE(input_a, input_b, block_size) \\\n    PAREN(input_a, input_b, complex_math_output_fut_a.data_ptr, block_size)\n\n#define REF_cmplx_mult_real_INPUT_INTERFACE(input_a, input_b, block_size) \\\n    PAREN(input_a, input_b, complex_math_output_ref_a.data_ptr, block_size)\n\n/*--------------------------------------------------------------------------------*/\n/* Test Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF1_BLK() for complex math tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name,         \\\n                                                   suffix,          \\\n                                                   input_type,      \\\n                                                   output_type,     \\\n                                                   comparison_interface) \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \\\n                      arm_##fn_name##_##suffix)                     \\\n    {                                                               \\\n        TEST_TEMPLATE_BUF1_BLK(                                     \\\n            complex_math_f_all,                                     \\\n            complex_math_block_sizes,                               \\\n            input_type,                                             \\\n            output_type,                                            \\\n            arm_##fn_name##_##suffix,                               \\\n            ARM_##fn_name##_INPUT_INTERFACE,                        \\\n            ref_##fn_name##_##suffix,                               \\\n            REF_##fn_name##_INPUT_INTERFACE,                        \\\n            comparison_interface);                                  \\\n    }\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF2_BLK1() for complex math tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(fn_name,         \\\n                                                   suffix,          \\\n                                                   input_type,      \\\n                                                   output_type,     \\\n                                                   comparison_interface) \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \\\n                      arm_##fn_name##_##suffix)                     \\\n    {                                                               \\\n        TEST_TEMPLATE_BUF2_BLK(                                     \\\n            complex_math_f_all,                                     \\\n            complex_math_f_all,                                     \\\n            complex_math_block_sizes,                               \\\n            input_type,                                             \\\n            output_type,                                            \\\n            arm_##fn_name##_##suffix,                               \\\n            ARM_##fn_name##_INPUT_INTERFACE,                        \\\n            ref_##fn_name##_##suffix,                               \\\n            REF_##fn_name##_INPUT_INTERFACE,                        \\\n            comparison_interface);                                  \\\n    }\n\n#endif /* _COMPLEX_MATH_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_data.h",
    "content": "#ifndef _COMPLEX_MATH_TEST_DATA_H_\n#define _COMPLEX_MATH_TEST_DATA_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n#define COMPLEX_MATH_MAX_INPUT_ELEMENTS 32\n#define COMPLEX_MATH_BIGGEST_INPUT_TYPE float32_t\n\n/*--------------------------------------------------------------------------------*/\n/* Decalare Variables */\n/*--------------------------------------------------------------------------------*/\n\n/* Input/Output Buffers */\nARR_DESC_DECLARE(complex_math_output_fut_a);\nARR_DESC_DECLARE(complex_math_output_fut_b);\nARR_DESC_DECLARE(complex_math_output_ref_a);\nARR_DESC_DECLARE(complex_math_output_ref_b);\n\nextern COMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_ref_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\nextern COMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_ref_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\nextern COMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_fut_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\nextern COMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_fut_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\n/* Block Sizes*/\nARR_DESC_DECLARE(complex_math_block_sizes);\n\n/* Float Inputs */\nARR_DESC_DECLARE(complex_math_zeros);\nARR_DESC_DECLARE(complex_math_f_2);\nARR_DESC_DECLARE(complex_math_f_15);\nARR_DESC_DECLARE(complex_math_f_32);\nARR_DESC_DECLARE(complex_math_f_all);\n\n\n#endif /* _COMPLEX_MATH_TEST_DATA_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_group.h",
    "content": "#ifndef _COMPLEX_MATH_TEST_GROUP_H_\n#define _COMPLEX_MATH_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(complex_math_tests);\n\n#endif /* _COMPLEX_MATH_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_tests.h",
    "content": "#ifndef _COMPLEX_MATH_TESTS_H_\n#define _COMPLEX_MATH_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(cmplx_conj_tests);\nJTEST_DECLARE_GROUP(cmplx_dot_prod_tests);\nJTEST_DECLARE_GROUP(cmplx_mag_tests);\nJTEST_DECLARE_GROUP(cmplx_mag_squared_tests);\nJTEST_DECLARE_GROUP(cmplx_mult_cmplx_tests);\nJTEST_DECLARE_GROUP(cmplx_mult_real_tests);\n\n#endif /* _COMPLEX_MATH_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_templates.h",
    "content": "#ifndef _CONTROLLER_TEMPLATES_H_\n#define _CONTROLLER_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"test_templates.h\"\n#include <string.h>             /* memcpy() */\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n * Comparison SNR thresholds for the data types used in transform_tests.\n */\n#define CONTROLLER_SNR_THRESHOLD_float32_t 110\n#define CONTROLLER_SNR_THRESHOLD_q31_t     100\n#define CONTROLLER_SNR_THRESHOLD_q15_t     45\n\n/**\n *  Compare the outputs from the function under test and the reference\n *  function using SNR.\n */\n#define CONTROLLER_SNR_COMPARE_INTERFACE(block_size,    \\\n                                         output_type)   \\\n    do                                                  \\\n    {                                                   \\\n        TEST_CONVERT_AND_ASSERT_SNR(                    \\\n            controller_output_f32_ref,                  \\\n            (output_type *) controller_output_ref,      \\\n            controller_output_f32_fut,                  \\\n            (output_type *) controller_output_fut,      \\\n            block_size,                                 \\\n            output_type,                                \\\n            CONTROLLER_SNR_THRESHOLD_##output_type      \\\n            );                                          \\\n    } while (0)\n\n\n/*--------------------------------------------------------------------------------*/\n/* TEST Templates */\n/*--------------------------------------------------------------------------------*/\n\n#endif /* _CONTROLLER_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_data.h",
    "content": "#ifndef _CONTROLLER_TEST_DATA_H_\n#define _CONTROLLER_TEST_DATA_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n#define CONTROLLER_MAX_LEN 1024\n#define CONTROLLER_MAX_COEFFS_LEN (12 * 3)\n#define TRANFORM_BIGGEST_INPUT_TYPE float32_t\n\n/*--------------------------------------------------------------------------------*/\n/* Variable Declarations */\n/*--------------------------------------------------------------------------------*/\n\nextern float32_t controller_output_fut[CONTROLLER_MAX_LEN];\nextern float32_t controller_output_ref[CONTROLLER_MAX_LEN];\nextern float32_t controller_output_f32_fut[CONTROLLER_MAX_LEN];\nextern float32_t controller_output_f32_ref[CONTROLLER_MAX_LEN];\nextern const float32_t controller_f32_inputs[CONTROLLER_MAX_LEN];\nextern const q31_t controller_q31_inputs[CONTROLLER_MAX_LEN];\nextern const q15_t * controller_q15_inputs;\nextern const float32_t controller_f32_coeffs[CONTROLLER_MAX_COEFFS_LEN];\nextern const q31_t controller_q31_coeffs[CONTROLLER_MAX_COEFFS_LEN];\nextern const q15_t controller_q15_coeffs[CONTROLLER_MAX_COEFFS_LEN];\n\n#endif /* _CONTROLLER_TEST_DATA_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_group.h",
    "content": "#ifndef _CONTROLLER_TEST_GROUP_H_\n#define _CONTROLLER_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Group */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(controller_tests);\n\n#endif /* _CONTROLLER_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_tests.h",
    "content": "#ifndef _CONTROLLER_TESTS_H_\n#define _CONTROLLER_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(pid_reset_tests);\nJTEST_DECLARE_GROUP(sin_cos_tests);\nJTEST_DECLARE_GROUP(pid_tests);\n\n#endif /* _CONTROLLER_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/fast_math_tests/fast_math_templates.h",
    "content": "#ifndef _FAST_MATH_TEMPLATES_H_\n#define _FAST_MATH_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"test_templates.h\"\n#include <string.h>             /* memcpy() */\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n * Comparison SNR thresholds for the data types used in transform_tests.\n */\n#define FAST_MATH_SNR_THRESHOLD_float32_t 95\n#define FAST_MATH_SNR_THRESHOLD_q31_t     95\n#define FAST_MATH_SNR_THRESHOLD_q15_t     45\n\n/**\n *  Compare the outputs from the function under test and the reference\n *  function using SNR.\n */\n#define FAST_MATH_SNR_COMPARE_INTERFACE(block_size,     \\\n                                        output_type)    \\\n    do                                                  \\\n    {                                                   \\\n        TEST_CONVERT_AND_ASSERT_SNR(                    \\\n            fast_math_output_f32_ref,                   \\\n            (output_type *) fast_math_output_ref,       \\\n            fast_math_output_f32_fut,                   \\\n            (output_type *) fast_math_output_fut,       \\\n            block_size,                                 \\\n            output_type,                                \\\n            FAST_MATH_SNR_THRESHOLD_##output_type       \\\n            );                                          \\\n    } while (0)\n\n\n/*--------------------------------------------------------------------------------*/\n/* TEST Templates */\n/*--------------------------------------------------------------------------------*/\n\n#define SQRT_TEST_TEMPLATE_ELT1(suffix)                             \\\n                                                                    \\\n    JTEST_DEFINE_TEST(arm_sqrt_##suffix##_test, arm_sqrt_##suffix)  \\\n    {                                                               \\\n        uint32_t i;                                                 \\\n                                                                    \\\n        JTEST_COUNT_CYCLES(                                         \\\n            for(i=0;i<FAST_MATH_MAX_LEN;i++)                        \\\n            {                                                       \\\n                arm_sqrt_##suffix(                                  \\\n                    (suffix##_t)fast_math_##suffix##_inputs[i]      \\\n                    ,(suffix##_t*)fast_math_output_fut + i);        \\\n            });                                                     \\\n                                                                    \\\n        for(i=0;i<FAST_MATH_MAX_LEN;i++)                            \\\n        {                                                           \\\n            ref_sqrt_##suffix(                                      \\\n                (suffix##_t)fast_math_##suffix##_inputs[i]          \\\n                ,(suffix##_t*)fast_math_output_ref + i);            \\\n        }                                                           \\\n                                                                    \\\n        FAST_MATH_SNR_COMPARE_INTERFACE(                            \\\n            FAST_MATH_MAX_LEN,                                      \\\n            suffix##_t);                                            \\\n                                                                    \\\n        return JTEST_TEST_PASSED;                                   \\\n    }\n\n\n#define SIN_COS_TEST_TEMPLATE_ELT1(suffix, type, func)                  \\\n                                                                        \\\n        JTEST_DEFINE_TEST(arm_##func##_##suffix##_test, arm_##func##_##suffix) \\\n        {                                                               \\\n            uint32_t i;                                                 \\\n                                                                        \\\n            JTEST_COUNT_CYCLES(                                         \\\n                for(i=0;i<FAST_MATH_MAX_LEN;i++)                        \\\n                {                                                       \\\n                    *((type*)fast_math_output_fut + i) = arm_##func##_##suffix( \\\n                        fast_math_##suffix##_inputs[i]);                \\\n                });                                                     \\\n                                                                        \\\n            JTEST_COUNT_CYCLES(                                         \\\n                for(i=0;i<FAST_MATH_MAX_LEN;i++)                        \\\n                {                                                       \\\n                    *((type*)fast_math_output_ref + i) = ref_##func##_##suffix( \\\n                        fast_math_##suffix##_inputs[i]);                \\\n                });                                                     \\\n                                                                        \\\n            FAST_MATH_SNR_COMPARE_INTERFACE(                            \\\n                FAST_MATH_MAX_LEN,                                      \\\n                type);                                                  \\\n                                                                        \\\n            return JTEST_TEST_PASSED;                                   \\\n        }\n\n#endif /* _FAST_MATH_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/fast_math_tests/fast_math_test_data.h",
    "content": "#ifndef _FAST_MATH_TEST_DATA_H_\n#define _FAST_MATH_TEST_DATA_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n#define FAST_MATH_MAX_LEN 1024\n#define TRANFORM_BIGGEST_INPUT_TYPE float32_t\n\n/*--------------------------------------------------------------------------------*/\n/* Variable Declarations */\n/*--------------------------------------------------------------------------------*/\n\nextern float32_t fast_math_output_fut[FAST_MATH_MAX_LEN];\nextern float32_t fast_math_output_ref[FAST_MATH_MAX_LEN];\nextern float32_t fast_math_output_f32_fut[FAST_MATH_MAX_LEN];\nextern float32_t fast_math_output_f32_ref[FAST_MATH_MAX_LEN];\nextern const float32_t fast_math_f32_inputs[FAST_MATH_MAX_LEN];\nextern const q31_t fast_math_q31_inputs[FAST_MATH_MAX_LEN];\nextern const q15_t * fast_math_q15_inputs;\n\n#endif /* _FAST_MATH_TEST_DATA_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/fast_math_tests/fast_math_test_group.h",
    "content": "#ifndef _FAST_MATH_TEST_GROUP_H_\n#define _FAST_MATH_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(fast_math_tests);\n\n#endif /* _FAST_MATH_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/filtering_tests/filtering_templates.h",
    "content": "#ifndef _FILTERING_TEMPLATES_H_\n#define _FILTERING_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n#include \"test_templates.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/*\n * Comparison SNR thresholds for the data types used in statistics_tests.\n */\n#define FILTERING_SNR_THRESHOLD_float64_t 120\n#define FILTERING_SNR_THRESHOLD_float32_t 99\n#define FILTERING_SNR_THRESHOLD_q31_t 90\n#define FILTERING_SNR_THRESHOLD_q15_t 60\n#define FILTERING_SNR_THRESHOLD_q7_t 30\n\n/**\n *  Compare reference and fut outputs using SNR.\n *\n *  @note The outputs are converted to float32_t before comparison.\n */\n#define FILTERING_SNR_COMPARE_INTERFACE(block_size,                     \\\n                                        output_type)                    \\\n    FILTERING_SNR_COMPARE_INTERFACE_OFFSET(0, block_size, output_type)\n\n/**\n *  Compare reference and fut outputs starting at some offset using SNR.\n */\n#define FILTERING_SNR_COMPARE_INTERFACE_OFFSET(offset,      \\\n                                               block_size,  \\\n                                               output_type) \\\n    do                                                      \\\n    {                                                       \\\n        TEST_CONVERT_AND_ASSERT_SNR(                        \\\n            filtering_output_f32_ref,                       \\\n            (output_type *) filtering_output_ref + offset,  \\\n            filtering_output_f32_fut,                       \\\n            (output_type *) filtering_output_fut + offset,  \\\n            block_size,                                     \\\n            output_type,                                    \\\n            FILTERING_SNR_THRESHOLD_##output_type           \\\n            );                                              \\\n    } while (0)                                              \n\n/**\n *  Compare reference and fut outputs starting at some offset using SNR.\n *  Special case for float64_t\n */\n#define FILTERING_DBL_SNR_COMPARE_INTERFACE(block_size,  \t\t\t\t\\\n                                            output_type) \t\t\t\t\\\n    do                                                      \t\t\\\n    {                                                       \t\t\\\n        TEST_ASSERT_DBL_SNR(                        \t\t\t\t\t\t\\\n            (float64_t*)filtering_output_ref,               \\\n            (float64_t*)filtering_output_fut,               \\\n            block_size,                                     \t\t\\\n            FILTERING_SNR_THRESHOLD_##output_type           \t\t\\\n            );                                              \t\t\\\n    } while (0)                                              \n\t\t\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n\n/*--------------------------------------------------------------------------------*/\n/* Test Templates */\n/*--------------------------------------------------------------------------------*/\n\n\n\n#endif /* _FILTERING_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/filtering_tests/filtering_test_data.h",
    "content": "#ifndef FILTERING_TEST_DATA_H\n#define FILTERING_TEST_DATA_H\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n#define FILTERING_MAX_BLOCKSIZE  33\n#define LMS_MAX_BLOCKSIZE        512\n#define FILTERING_MAX_NUMTAPS\t\t34\n#define FILTERING_MAX_NUMSTAGES  14\n#define FILTERING_MAX_POSTSHIFT  8\n#define FILTERING_MAX_TAP_DELAY\t0xFF\n#define FILTERING_MAX_L\t\t\t\t3\n#define FILTERING_MAX_M\t\t\t\t33\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Variables */\n/*--------------------------------------------------------------------------------*/\n\n/* Input/Output Buffers */\nextern float32_t filtering_output_fut[LMS_MAX_BLOCKSIZE*2];\nextern float32_t filtering_output_ref[LMS_MAX_BLOCKSIZE*2];\nextern float32_t filtering_output_f32_fut[LMS_MAX_BLOCKSIZE*2];\nextern float32_t filtering_output_f32_ref[LMS_MAX_BLOCKSIZE*2];\nextern float32_t filtering_input_lms[LMS_MAX_BLOCKSIZE*2];\nextern float32_t filtering_pState[LMS_MAX_BLOCKSIZE + FILTERING_MAX_NUMTAPS];\nextern float32_t filtering_scratch[FILTERING_MAX_BLOCKSIZE * 3];\nextern float32_t filtering_scratch2[FILTERING_MAX_BLOCKSIZE * 3];\nextern float32_t filtering_coeffs_lms[FILTERING_MAX_NUMTAPS];\n\nextern const float64_t filtering_f64_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS];\nextern const float32_t filtering_f32_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS];\nextern const q31_t filtering_q31_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS];\nextern const q15_t * filtering_q15_inputs;\nextern const q7_t * filtering_q7_inputs;\n\n/* Block Sizes */\nARR_DESC_DECLARE(filtering_blocksizes);\nARR_DESC_DECLARE(lms_blocksizes);\nARR_DESC_DECLARE(filtering_numtaps);\nARR_DESC_DECLARE(filtering_numtaps2);\nARR_DESC_DECLARE(filtering_postshifts);\nARR_DESC_DECLARE(filtering_numstages);\nARR_DESC_DECLARE(filtering_Ls);\nARR_DESC_DECLARE(filtering_Ms);\n\n/* Coefficient Lists */\nextern const float64_t filtering_coeffs_f64[FILTERING_MAX_NUMSTAGES * 6 + 2];\nextern const float64_t filtering_coeffs_b_f64[FILTERING_MAX_NUMSTAGES * 6 + 2];\nextern const float32_t filtering_coeffs_f32[FILTERING_MAX_NUMSTAGES * 6 + 2];\nextern const float32_t filtering_coeffs_b_f32[FILTERING_MAX_NUMSTAGES * 6 + 2];\nextern const float32_t *filtering_coeffs_c_f32;\nextern float32_t filtering_coeffs_lms_f32[FILTERING_MAX_NUMTAPS];\nextern const q31_t filtering_coeffs_q31[FILTERING_MAX_NUMSTAGES * 6 + 2];\nextern const q31_t *filtering_coeffs_b_q31;\nextern const q31_t *filtering_coeffs_c_q31;\nextern q31_t filtering_coeffs_lms_q31[FILTERING_MAX_NUMTAPS];\nextern const q15_t filtering_coeffs_q15[FILTERING_MAX_NUMSTAGES * 6 + 4];\nextern const q15_t *filtering_coeffs_b_q15;\nextern const q15_t *filtering_coeffs_c_q15;\nextern q15_t filtering_coeffs_lms_q15[FILTERING_MAX_NUMTAPS];\nextern const q7_t filtering_coeffs_q7[FILTERING_MAX_NUMSTAGES * 6 + 8];\nextern const q7_t *filtering_coeffs_b_q7;\nextern const q7_t *filtering_coeffs_c_q7;\n\n/* Tap Delay Lists */\nextern const int32_t filtering_tap_delay[FILTERING_MAX_NUMTAPS];\n\n/* Numbers */\n\n/* Float Inputs */\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/filtering_tests/filtering_test_group.h",
    "content": "#ifndef _FILTERING_TEST_GROUP_H_\n#define _FILTERING_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(filtering_tests);\n\n#endif /* _FILTERING_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/filtering_tests/filtering_tests.h",
    "content": "#ifndef _FILTERING_TESTS_H_\n#define _FILTERING_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DECLARE_GROUP(biquad_tests);\nJTEST_DECLARE_GROUP(conv_tests);\nJTEST_DECLARE_GROUP(correlate_tests);\nJTEST_DECLARE_GROUP(fir_tests);\nJTEST_DECLARE_GROUP(iir_tests);\nJTEST_DECLARE_GROUP(lms_tests);\n\n#endif /* _FILTERING_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/intrinsics_tests/intrinsics_templates.h",
    "content": "#ifndef _INTRINSICS_TEMPLATES_H_\n#define _INTRINSICS_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"test_templates.h\"\n#include <string.h>             /* memcpy() */\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n* Comparison SNR thresholds for the data types used in transform_tests.\n*/\n#define INTRINSICS_SNR_THRESHOLD_q63_t     120\n#define INTRINSICS_SNR_THRESHOLD_q31_t     95\n\n/**\n*  Compare the outputs from the function under test and the reference\n*  function using SNR.\n*/\n#define INTRINSICS_SNR_COMPARE_INTERFACE(block_size,  \\\n   output_type)                                       \\\n   do                                                 \\\n   {                                                  \\\n      TEST_CONVERT_AND_ASSERT_SNR(                    \\\n         intrinsics_output_f32_ref,                   \\\n         (output_type##_t *) intrinsics_output_ref,   \\\n         intrinsics_output_f32_fut,                   \\\n         (output_type##_t *) intrinsics_output_fut,   \\\n         block_size,                                  \\\n         output_type,                                 \\\n         INTRINSICS_SNR_THRESHOLD_##output_type##_t   \\\n      );                                              \\\n   } while (0)\n\n\n/*--------------------------------------------------------------------------------*/\n/* TEST Templates */\n/*--------------------------------------------------------------------------------*/\n\n#define INTRINSICS_TEST_TEMPLATE_ELT1(functionName, dataType)              \\\n                                                                           \\\n   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \\\n   {                                                                       \\\n      uint32_t i;                                                          \\\n                                                                           \\\n      JTEST_COUNT_CYCLES(                                                  \\\n         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \\\n         {                                                                 \\\n            *((dataType##_t*)intrinsics_output_fut + i) =                  \\\n               functionName(                                               \\\n                  (dataType##_t)intrinsics_##dataType##_inputs[i]);        \\\n         });                                                               \\\n                                                                           \\\n      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \\\n      {                                                                    \\\n         *((dataType##_t*)intrinsics_output_ref + i) =                     \\\n            ref##functionName(                                             \\\n               (dataType##_t)intrinsics_##dataType##_inputs[i]);           \\\n      }                                                                    \\\n                                                                           \\\n      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \\\n         INTRINSICS_MAX_LEN,                                               \\\n         dataType);                                                        \\\n                                                                           \\\n      return JTEST_TEST_PASSED;                                            \\\n   }\n\n#define INTRINSICS_TEST_TEMPLATE_ELT2(functionName, dataType)              \\\n                                                                           \\\n   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \\\n   {                                                                       \\\n      uint32_t i;                                                          \\\n                                                                           \\\n      JTEST_COUNT_CYCLES(                                                  \\\n         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \\\n         {                                                                 \\\n            *((dataType##_t*)intrinsics_output_fut + i) =                  \\\n               functionName(                                               \\\n                  (dataType##_t)intrinsics_##dataType##_inputs[i]          \\\n                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]);       \\\n         });                                                               \\\n                                                                           \\\n      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \\\n      {                                                                    \\\n         *((dataType##_t*)intrinsics_output_ref + i) =                     \\\n            ref##functionName(                                             \\\n               (dataType##_t)intrinsics_##dataType##_inputs[i]             \\\n               ,(dataType##_t)intrinsics_##dataType##_inputs[i]);          \\\n      }                                                                    \\\n                                                                           \\\n      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \\\n         INTRINSICS_MAX_LEN,                                               \\\n         dataType);                                                        \\\n                                                                           \\\n      return JTEST_TEST_PASSED;                                            \\\n   }\n\n#define INTRINSICS_TEST_TEMPLATE_ELT3(functionName, dataType)              \\\n                                                                           \\\n   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \\\n   {                                                                       \\\n      uint32_t i;                                                          \\\n                                                                           \\\n      JTEST_COUNT_CYCLES(                                                  \\\n         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \\\n         {                                                                 \\\n            *((dataType##_t*)intrinsics_output_fut + i) =                  \\\n               functionName(                                               \\\n                  (dataType##_t)intrinsics_##dataType##_inputs[i]          \\\n                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]         \\\n                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]);       \\\n         });                                                               \\\n                                                                           \\\n      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \\\n      {                                                                    \\\n         *((dataType##_t*)intrinsics_output_ref + i) =                     \\\n            ref##functionName(                                             \\\n               (dataType##_t)intrinsics_##dataType##_inputs[i]             \\\n               ,(dataType##_t)intrinsics_##dataType##_inputs[i]            \\\n               ,(dataType##_t)intrinsics_##dataType##_inputs[i]);          \\\n      }                                                                    \\\n                                                                           \\\n      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \\\n         INTRINSICS_MAX_LEN,                                               \\\n         dataType);                                                        \\\n                                                                           \\\n      return JTEST_TEST_PASSED;                                            \\\n   }\n\n#define INTRINSICS_TEST_TEMPLATE_ELT4(functionName, dataType, dataType2)   \\\n   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \\\n   {                                                                       \\\n      uint32_t i;                                                          \\\n                                                                           \\\n      JTEST_COUNT_CYCLES(                                                  \\\n         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \\\n         {                                                                 \\\n            *((dataType2##_t*)intrinsics_output_fut + i) =                 \\\n               functionName(                                               \\\n                  (dataType##_t)intrinsics_##dataType##_inputs[i]          \\\n                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]         \\\n                  ,(dataType2##_t)intrinsics_##dataType2##_inputs[i]);     \\\n         });                                                               \\\n                                                                           \\\n      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \\\n      {                                                                    \\\n         *((dataType2##_t*)intrinsics_output_ref + i) =                    \\\n            ref##functionName(                                             \\\n               (dataType##_t)intrinsics_##dataType##_inputs[i]             \\\n               ,(dataType##_t)intrinsics_##dataType##_inputs[i]            \\\n               ,(dataType2##_t)intrinsics_##dataType2##_inputs[i]);        \\\n      }                                                                    \\\n                                                                           \\\n      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \\\n         INTRINSICS_MAX_LEN,                                               \\\n         dataType2);                                                       \\\n                                                                           \\\n      return JTEST_TEST_PASSED;                                            \\\n   }\n\n#endif /* _INTRINSICS_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/intrinsics_tests/intrinsics_test_data.h",
    "content": "#ifndef _INTRINSICS_TEST_DATA_H_\n#define _INTRINSICS_TEST_DATA_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n#define INTRINSICS_MAX_LEN 1024\n\n/*--------------------------------------------------------------------------------*/\n/* Variable Declarations */\n/*--------------------------------------------------------------------------------*/\n\nextern q63_t intrinsics_output_fut[INTRINSICS_MAX_LEN];\nextern q63_t intrinsics_output_ref[INTRINSICS_MAX_LEN];\nextern float32_t intrinsics_output_f32_fut[INTRINSICS_MAX_LEN];\nextern float32_t intrinsics_output_f32_ref[INTRINSICS_MAX_LEN];\nextern const q63_t intrinsics_q63_inputs[INTRINSICS_MAX_LEN];\nextern const q31_t *intrinsics_q31_inputs;\n\n#endif /* _INTRINSICS_TEST_DATA_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/intrinsics_tests/intrinsics_test_group.h",
    "content": "#ifndef _INTRINSICS_TEST_GROUP_H_\n#define _INTRINSICS_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(intrinsics_tests);\n\n#endif /* _INTRINSICS_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/math_helper.h",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010 ARM Limited. All rights reserved.\n*\n* $Date:        29. November 2010\n* $Revision:    V1.0.3\n*\n* Project:      CMSIS DSP Library\n*\n* Title:        math_helper.h\n*\n*\n* Description:\tPrototypes of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Version 1.0.3 2010/11/29\n*    Re-organized the CMSIS folders and updated documentation.\n*\n* Version 1.0.2 2010/11/11\n*    Documentation updated.\n*\n* Version 1.0.1 2010/10/05\n*    Production release and review comments incorporated.\n*\n* Version 1.0.0 2010/09/20\n*    Production release and review comments incorporated.\n*\n* Version 0.0.7  2010/06/10\n*    Misra-C changes done\n* -------------------------------------------------------------------- */\n\n#ifndef MATH_HELPER_H\n#define MATH_HELPER_H\n\n#include \"arm_math.h\"\n\nfloat arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);\ndouble arm_snr_f64(double *pRef, double *pTest,  uint32_t buffSize);\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);\nvoid arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_clip_f32(float *pIn, uint32_t numSamples);\nuint32_t arm_calc_guard_bits(uint32_t num_adds);\nvoid arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);\nuint32_t arm_calc_2pow(uint32_t guard_bits);\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_templates.h",
    "content": "#ifndef _MATRIX_TEMPLATES_H_\n#define _MATRIX_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n#include \"test_templates.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Compare the outputs from the function under test and the reference\n *  function.\n */\n#define MATRIX_COMPARE_INTERFACE(output_type, output_content_type)  \\\n    TEST_ASSERT_BUFFERS_EQUAL(                                      \\\n        ((output_type *) &matrix_output_ref)->pData,                \\\n        ((output_type *) &matrix_output_fut)->pData,                \\\n        ((output_type *) &matrix_output_fut)->numRows *             \\\n        ((output_type *) &matrix_output_ref)->numCols *             \\\n        sizeof(output_content_type))\n\n/**\n * Comparison SNR thresholds for the data types used in matrix_tests.\n */\n#define MATRIX_SNR_THRESHOLD 120\n\n/**\n *  Compare the outputs from the function under test and the reference\n *  function using SNR.\n */\n#define MATRIX_SNR_COMPARE_INTERFACE(output_type, output_content_type)  \\\n    do                                                                  \\\n    {                                                                   \\\n        TEST_CONVERT_AND_ASSERT_SNR(                                    \\\n            (float32_t *)matrix_output_f32_ref,                         \\\n            ((output_type *) &matrix_output_ref)->pData,                \\\n            (float32_t *)matrix_output_f32_fut,                         \\\n            ((output_type *) &matrix_output_ref)->pData,                \\\n            ((output_type *) &matrix_output_fut)->numRows *             \\\n            ((output_type *) &matrix_output_ref)->numCols,              \\\n            output_content_type,                                        \\\n            MATRIX_SNR_THRESHOLD                                        \\\n            );                                                          \\\n    } while (0)\n\n/**\n *  Compare the outputs from the function under test and the reference\n *  function using SNR. This is special for float64_t\n */\n#define MATRIX_DBL_SNR_COMPARE_INTERFACE(output_type)                   \\\n    do                                                                  \\\n    {                                                                   \\\n        TEST_ASSERT_DBL_SNR(                                            \\\n            (float64_t *)matrix_output_f32_ref,                         \\\n            (float64_t *)matrix_output_f32_fut,                         \\\n            ((output_type *) &matrix_output_fut)->numRows *             \\\n            ((output_type *) &matrix_output_ref)->numCols,              \\\n            MATRIX_SNR_THRESHOLD                                        \\\n            );                                                          \\\n    } while (0)\n\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n#define ARM_mat_add_INPUT_INTERFACE(input_a_ptr, input_b_ptr)    \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut)\n\n#define REF_mat_add_INPUT_INTERFACE(input_a_ptr, input_b_ptr)    \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref)\n\n#define ARM_mat_cmplx_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr)    \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut)\n\n#define REF_mat_cmplx_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr)    \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref)\n\n#define ARM_mat_inverse_INPUT_INTERFACE(input_ptr)  \\\n    PAREN(input_ptr, (void *) &matrix_output_fut)\n\n#define REF_mat_inverse_INPUT_INTERFACE(input_ptr)  \\\n    PAREN(input_ptr, (void *) &matrix_output_ref)\n\n#define ARM_mat_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr)      \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut)\n\n#define REF_mat_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr)      \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref)\n\n#define ARM_mat_mult_fast_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut)\n\n#define REF_mat_mult_fast_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref)\n\n#define ARM_mat_sub_INPUT_INTERFACE(input_a_ptr, input_b_ptr)    \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut)\n\n#define REF_mat_sub_INPUT_INTERFACE(input_a_ptr, input_b_ptr)    \\\n    PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref)\n\n#define ARM_mat_trans_INPUT_INTERFACE(input_ptr)    \\\n    PAREN(input_ptr, (void *) &matrix_output_fut)\n\n#define REF_mat_trans_INPUT_INTERFACE(input_ptr)    \\\n    PAREN(input_ptr, (void *) &matrix_output_ref)\n\n/*--------------------------------------------------------------------------------*/\n/* Dimension Validation Interfaces */\n/*--------------------------------------------------------------------------------*/\n\n#define MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS(input_type,   \\\n                                              matrix_a_ptr, \\\n                                              matrix_b_ptr) \\\n    ((((input_type) (matrix_a_ptr))->numRows ==             \\\n      ((input_type) (matrix_b_ptr))->numRows) &&            \\\n     (((input_type) (matrix_a_ptr))->numCols ==             \\\n      ((input_type) (matrix_b_ptr))->numCols))\n\n#define MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS(input_type,     \\\n                                                    matrix_a_ptr,   \\\n                                                    matrix_b_ptr)   \\\n    (((input_type) (matrix_a_ptr))->numCols ==                      \\\n     ((input_type) (matrix_b_ptr))->numRows)\n\n#define MATRIX_TEST_VALID_SQUARE_DIMENSIONS(input_type, \\\n                                            matrix_ptr) \\\n    (((input_type)(matrix_ptr))->numRows ==             \\\n     ((input_type)(matrix_ptr))->numCols)\n\n#define MATRIX_TEST_VALID_DIMENSIONS_ALWAYS(input_type, \\\n                                            matrix_ptr) \\\n    (1 == 1)                                            \\\n\n/*--------------------------------------------------------------------------------*/\n/* Output Configuration Interfaces */\n/*--------------------------------------------------------------------------------*/\n/* The matrix tests assume the output matrix is always the correct size.  These\n * interfaces size the properly size the output matrices according to the input\n * matrices and the operation at hand.*/\n\n#define MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT(input_type,      \\\n                                           matrix_a_ptr,    \\\n                                           matrix_b_ptr)    \\\n    do                                                      \\\n    {                                                       \\\n        ((input_type) &matrix_output_fut)->numRows =        \\\n            ((input_type)(matrix_a_ptr))->numRows;          \\\n        ((input_type) &matrix_output_fut)->numCols =        \\\n            ((input_type)(matrix_a_ptr))->numCols;          \\\n        ((input_type) &matrix_output_ref)->numRows =        \\\n            ((input_type)(matrix_a_ptr))->numRows;          \\\n        ((input_type) &matrix_output_ref)->numCols =        \\\n            ((input_type)(matrix_a_ptr))->numCols;          \\\n    } while (0)\n\n#define MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT(input_type,    \\\n                                                 matrix_a_ptr,  \\\n                                                 matrix_b_ptr)  \\\n    do                                                          \\\n    {                                                           \\\n        ((input_type) &matrix_output_fut)->numRows =            \\\n            ((input_type)(matrix_a_ptr))->numRows;              \\\n        ((input_type) &matrix_output_fut)->numCols =            \\\n            ((input_type)(matrix_b_ptr))->numCols;              \\\n        ((input_type) &matrix_output_ref)->numRows =            \\\n            ((input_type)(matrix_a_ptr))->numRows;              \\\n        ((input_type) &matrix_output_ref)->numCols =            \\\n            ((input_type)(matrix_b_ptr))->numCols;              \\\n    } while (0)\n\n#define MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(input_type,  \\\n                                           matrix_ptr)  \\\n    do                                                  \\\n    {                                                   \\\n        ((input_type) &matrix_output_fut)->numRows =    \\\n            ((input_type)(matrix_ptr))->numRows;        \\\n        ((input_type) &matrix_output_fut)->numCols =    \\\n            ((input_type)(matrix_ptr))->numCols;        \\\n        ((input_type) &matrix_output_ref)->numRows =    \\\n            ((input_type)(matrix_ptr))->numRows;        \\\n        ((input_type) &matrix_output_ref)->numCols =    \\\n            ((input_type)(matrix_ptr))->numCols;        \\\n    } while (0)\n\n#define MATRIX_TEST_CONFIG_TRANSPOSE_OUTPUT(input_type,     \\\n                                            matrix_ptr)     \\\n        do                                                  \\\n        {                                                   \\\n            ((input_type) &matrix_output_fut)->numRows =    \\\n                ((input_type)(matrix_ptr))->numCols;        \\\n            ((input_type) &matrix_output_fut)->numCols =    \\\n                ((input_type)(matrix_ptr))->numRows;        \\\n            ((input_type) &matrix_output_ref)->numRows =    \\\n                ((input_type)(matrix_ptr))->numCols;        \\\n            ((input_type) &matrix_output_ref)->numCols =    \\\n                ((input_type)(matrix_ptr))->numRows;        \\\n        } while (0)\n\n/*--------------------------------------------------------------------------------*/\n/* TEST Templates */\n/*--------------------------------------------------------------------------------*/\n\n#define MATRIX_TEST_TEMPLATE_ELT1(arr_desc_inputs,                      \\\n                                  input_type,                           \\\n                                  output_type, output_content_type,     \\\n                                  fut, fut_arg_interface,               \\\n                                  ref, ref_arg_interface,               \\\n                                  output_config_interface,              \\\n                                  dim_validation_interface,             \\\n                                  compare_interface)                    \\\n    do                                                                  \\\n    {                                                                   \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            input_idx, input_type, input, arr_desc_inputs               \\\n            ,                                                           \\\n            JTEST_DUMP_STRF(\"Matrix Dimensions: %dx%d\\n\",               \\\n                         (int)input->numRows,                           \\\n                         (int)input->numCols);                          \\\n                                                                        \\\n            if (dim_validation_interface(input_type,                     \\\n                                        input)) {                       \\\n                output_config_interface(input_type,                     \\\n                                        input);                         \\\n                TEST_CALL_FUT_AND_REF(                                  \\\n                    fut, fut_arg_interface(input),                      \\\n                    ref, ref_arg_interface(input));                     \\\n                compare_interface(output_type,                          \\\n                                  output_content_type);                 \\\n            } else {                                                    \\\n                arm_status matrix_test_retval;                          \\\n                TEST_CALL_FUT(                                          \\\n                    matrix_test_retval = fut,                           \\\n                    fut_arg_interface(input));                          \\\n                                                                        \\\n                /* If dimensions are known bad, the fut should */       \\\n                /* detect it. */                                        \\\n                if ( matrix_test_retval != ARM_MATH_SIZE_MISMATCH) {     \\\n                    return JTEST_TEST_FAILED;                           \\\n                }                                                       \\\n            });                                                         \\\n        return JTEST_TEST_PASSED;                                       \\\n    } while (0)\n\n\n#define MATRIX_TEST_TEMPLATE_ELT2(arr_desc_inputs_a,                    \\\n                                  arr_desc_inputs_b,                    \\\n                                  input_type,                           \\\n                                  output_type, output_content_type,     \\\n                                  fut, fut_arg_interface,               \\\n                                  ref, ref_arg_interface,               \\\n                                  output_config_interface,              \\\n                                  dim_validation_interface,             \\\n                                  compare_interface)                    \\\n    do                                                                  \\\n    {                                                                   \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            input_a_idx, input_type, input_a, arr_desc_inputs_a         \\\n            ,                                                           \\\n            input_type input_b = ARR_DESC_ELT(                          \\\n                input_type, input_a_idx,                                \\\n                &(arr_desc_inputs_b));                                  \\\n                                                                        \\\n            JTEST_DUMP_STRF(\"Matrix Dimensions: A %dx%d  B %dx%d\\n\",    \\\n                     (int)input_a->numRows,                             \\\n                     (int)input_a->numCols,                             \\\n                     (int)input_b->numRows,                             \\\n                     (int)input_b->numCols);                            \\\n                                                                        \\\n            if (dim_validation_interface(input_type,                     \\\n                                        input_a,                        \\\n                                        input_b)) {                     \\\n                                                                        \\\n                output_config_interface(input_type,                     \\\n                                        input_a,                        \\\n                                        input_b);                       \\\n                                                                        \\\n                TEST_CALL_FUT_AND_REF(                                  \\\n                    fut, fut_arg_interface(input_a, input_b),           \\\n                    ref, ref_arg_interface(input_a, input_b));          \\\n                                                                        \\\n                compare_interface(output_type, output_content_type);    \\\n                                                                        \\\n            } else {                                                    \\\n                arm_status matrix_test_retval;                          \\\n                TEST_CALL_FUT(                                          \\\n                    matrix_test_retval = fut, fut_arg_interface(input_a, input_b)); \\\n                                                                        \\\n                /* If dimensions are known bad, the fut should */       \\\n                /* detect it. */                                        \\\n                if ( matrix_test_retval != ARM_MATH_SIZE_MISMATCH) {     \\\n                    return JTEST_TEST_FAILED;                           \\\n                }                                                       \\\n            });                                                         \\\n        return JTEST_TEST_PASSED;                                       \\\n    } while (0)\n\n/**\n *  Specialization of #MATRIX_TEST_TEMPLATE_ELT2() for matrix tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define MATRIX_DEFINE_TEST_TEMPLATE_ELT2(fn_name, suffix,           \\\n                                         output_config_interface,   \\\n                                         dim_validation_interface,  \\\n                                         comparison_interface)      \\\n        JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,          \\\n                          arm_##fn_name##_##suffix)                 \\\n        {                                                           \\\n            MATRIX_TEST_TEMPLATE_ELT2(                              \\\n                matrix_##suffix##_a_inputs,                         \\\n                matrix_##suffix##_b_inputs,                         \\\n                arm_matrix_instance_##suffix * ,                    \\\n                arm_matrix_instance_##suffix,                       \\\n                TYPE_FROM_ABBREV(suffix),                           \\\n                arm_##fn_name##_##suffix,                           \\\n                ARM_##fn_name##_INPUT_INTERFACE,                    \\\n                ref_##fn_name##_##suffix,                           \\\n                REF_##fn_name##_INPUT_INTERFACE,                    \\\n                output_config_interface,                            \\\n                dim_validation_interface,                           \\\n                comparison_interface);                              \\\n        }                                                           \\\n\n/**\n *  Specialization of #MATRIX_TEST_TEMPLATE_ELT1() for matrix tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define MATRIX_DEFINE_TEST_TEMPLATE_ELT1(fn_name, suffix,           \\\n                                         output_config_interface,   \\\n                                         dim_validation_interface)  \\\n        JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,          \\\n                          arm_##fn_name##_##suffix)                 \\\n        {                                                           \\\n            MATRIX_TEST_TEMPLATE_ELT1(                              \\\n                matrix_##suffix##_a_inputs,                         \\\n                arm_matrix_instance_##suffix * ,                    \\\n                arm_matrix_instance_##suffix,                       \\\n                TYPE_FROM_ABBREV(suffix),                           \\\n                arm_##fn_name##_##suffix,                           \\\n                ARM_##fn_name##_INPUT_INTERFACE,                    \\\n                ref_##fn_name##_##suffix,                           \\\n                REF_##fn_name##_INPUT_INTERFACE,                    \\\n                output_config_interface,                            \\\n                dim_validation_interface,                           \\\n                MATRIX_COMPARE_INTERFACE);                          \\\n        }                                                           \\\n\n\n#endif /* _MATRIX_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_data.h",
    "content": "#ifndef _MATRIX_TEST_DATA_H_\n#define _MATRIX_TEST_DATA_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* float32_t */\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n#define MATRIX_TEST_MAX_ROWS 4\n#define MATRIX_TEST_MAX_COLS 4\n#define MATRIX_TEST_BIGGEST_INPUT_TYPE float64_t\n#define MATRIX_TEST_MAX_ELTS (MATRIX_TEST_MAX_ROWS * MATRIX_TEST_MAX_COLS)\n#define MATRIX_MAX_COEFFS_LEN 16\n#define MATRIX_MAX_SHIFTS_LEN 5\n\n/**\n *  Declare the matrix inputs defined by MATRIX_DEFINE_INPUTS.\n */\n#define MATRIX_DECLARE_INPUTS(suffix)               \\\n    ARR_DESC_DECLARE(matrix_##suffix##_a_inputs);   \\\n    ARR_DESC_DECLARE(matrix_##suffix##_b_inputs);   \\\n    ARR_DESC_DECLARE(matrix_##suffix##_invertible_inputs)\n\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Variables */\n/*--------------------------------------------------------------------------------*/\n\n/* Input/Output Buffers */\nextern arm_matrix_instance_f32 matrix_output_fut;\nextern arm_matrix_instance_f32 matrix_output_ref;\nextern arm_matrix_instance_f64 matrix_output_fut64;\nextern arm_matrix_instance_f64 matrix_output_ref64;\nextern MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_fut[MATRIX_TEST_MAX_ELTS];\nextern MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_ref[MATRIX_TEST_MAX_ELTS];\nextern MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_scratch[MATRIX_TEST_MAX_ELTS];\n\n/* Matrix Inputs */\nMATRIX_DECLARE_INPUTS(f64);\nMATRIX_DECLARE_INPUTS(f32);\nMATRIX_DECLARE_INPUTS(q31);\nMATRIX_DECLARE_INPUTS(q15);\n\nextern const float32_t matrix_f32_scale_values[MATRIX_MAX_COEFFS_LEN];\nextern const q31_t matrix_q31_scale_values[MATRIX_MAX_COEFFS_LEN];\nextern const q15_t matrix_q15_scale_values[MATRIX_MAX_COEFFS_LEN];\nextern const int32_t matrix_shift_values[MATRIX_MAX_SHIFTS_LEN];\n\n#endif /* _MATRIX_TEST_DATA_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_group.h",
    "content": "#ifndef _MATRIX_TEST_GROUP_H_\n#define _MATRIX_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(matrix_tests);\n\n#endif /* _MATRIX_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_tests.h",
    "content": "#ifndef _MATRIX_TESTS_H_\n#define _MATRIX_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(mat_add_tests);\nJTEST_DECLARE_GROUP(mat_cmplx_mult_tests);\nJTEST_DECLARE_GROUP(mat_init_tests);\nJTEST_DECLARE_GROUP(mat_inverse_tests);\nJTEST_DECLARE_GROUP(mat_mult_tests);\nJTEST_DECLARE_GROUP(mat_mult_fast_tests);\nJTEST_DECLARE_GROUP(mat_sub_tests);\nJTEST_DECLARE_GROUP(mat_trans_tests);\nJTEST_DECLARE_GROUP(mat_scale_tests);\n\n#endif /* _MATRIX_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_templates.h",
    "content": "#ifndef _STATISTICS_TEMPLATES_H_\n#define _STATISTICS_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"test_templates.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Compare the outputs from the function under test and the reference function.\n */\n#define STATISTICS_COMPARE_INTERFACE(block_size,    \\\n                                     output_type)   \\\n    do                                              \\\n    {                                               \\\n        TEST_ASSERT_BUFFERS_EQUAL(                  \\\n            statistics_output_ref.data_ptr,         \\\n            statistics_output_fut.data_ptr,         \\\n            1 * sizeof(output_type) /* All fns return one value*/   \\\n            );                                      \\\n        TEST_ASSERT_EQUAL(                          \\\n            statistics_idx_fut,                     \\\n            statistics_idx_ref);                    \\\n    } while (0)                                      \\\n\n/*\n * Comparison SNR thresholds for the data types used in statistics_tests.\n */\n#define STATISTICS_SNR_THRESHOLD_float32_t 120\n#define STATISTICS_SNR_THRESHOLD_q31_t 100\n#define STATISTICS_SNR_THRESHOLD_q15_t 60\n#define STATISTICS_SNR_THRESHOLD_q7_t 30\n\n/**\n *  Compare reference and fut outputs using SNR.\n *\n *  @note The outputs are converted to float32_t before comparison.\n */\n#define STATISTICS_SNR_COMPARE_INTERFACE(block_size,    \\\n                                         output_type)   \\\n    do                                                  \\\n    {                                                   \\\n        TEST_CONVERT_AND_ASSERT_SNR(                    \\\n            statistics_output_f32_ref,                  \\\n            statistics_output_ref.data_ptr,             \\\n            statistics_output_f32_fut,                  \\\n            statistics_output_fut.data_ptr,             \\\n                1, /* All fns return one element*/      \\\n            output_type,                                \\\n            STATISTICS_SNR_THRESHOLD_##output_type      \\\n            );                                          \\\n    } while (0)\n\n\n\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n#define ARM_max_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size,                                    \\\n          statistics_output_fut.data_ptr, &statistics_idx_fut)\n\n#define REF_max_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size,                                    \\\n          statistics_output_ref.data_ptr, &statistics_idx_ref)\n\n#define ARM_mean_INPUT_INTERFACE(input, block_size)             \\\n    PAREN(input, block_size, statistics_output_fut.data_ptr)\n\n#define REF_mean_INPUT_INTERFACE(input, block_size)             \\\n    PAREN(input, block_size, statistics_output_ref.data_ptr)\n\n#define ARM_min_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size,                                    \\\n          statistics_output_fut.data_ptr, &statistics_idx_fut)\n\n#define REF_min_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size,                                    \\\n          statistics_output_ref.data_ptr, &statistics_idx_ref)\n\n#define ARM_power_INPUT_INTERFACE(input, block_size)            \\\n    PAREN(input, block_size, statistics_output_fut.data_ptr)\n\n#define REF_power_INPUT_INTERFACE(input, block_size)            \\\n    PAREN(input, block_size, statistics_output_ref.data_ptr)\n\n#define ARM_rms_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size, statistics_output_fut.data_ptr)\n\n#define REF_rms_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size, statistics_output_ref.data_ptr)\n\n#define ARM_std_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size, statistics_output_fut.data_ptr)\n\n#define REF_std_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size, statistics_output_ref.data_ptr)\n\n#define ARM_var_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size, statistics_output_fut.data_ptr)\n\n#define REF_var_INPUT_INTERFACE(input, block_size)              \\\n    PAREN(input, block_size, statistics_output_ref.data_ptr)\n\n\n/*--------------------------------------------------------------------------------*/\n/* Test Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF1_BLK() for statistics tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name,       \\\n                                                 suffix,        \\\n                                                 input_type,    \\\n                                                 output_type,   \\\n                                                 comparison_interface)  \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,          \\\n                      arm_##fn_name##_##suffix)                 \\\n    {                                                           \\\n        TEST_TEMPLATE_BUF1_BLK(                                 \\\n            statistics_f_all,                                   \\\n            statistics_block_sizes,                             \\\n            input_type,                                         \\\n            output_type,                                        \\\n            arm_##fn_name##_##suffix,                           \\\n            ARM_##fn_name##_INPUT_INTERFACE,                    \\\n            ref_##fn_name##_##suffix,                           \\\n            REF_##fn_name##_INPUT_INTERFACE,                    \\\n            comparison_interface);                              \\\n    }\n\n\n#endif /* _STATISTICS_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_data.h",
    "content": "#ifndef _STATISTICS_TEST_DATA_H_\n#define _STATISTICS_TEST_DATA_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n#define STATISTICS_MAX_INPUT_ELEMENTS 32\n#define STATISTICS_BIGGEST_INPUT_TYPE float32_t\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Variables */\n/*--------------------------------------------------------------------------------*/\n\n/* Input/Output Buffers */\nARR_DESC_DECLARE(statistics_output_fut);\nARR_DESC_DECLARE(statistics_output_ref);\nextern uint32_t statistics_idx_fut;\nextern uint32_t statistics_idx_ref;\n\nextern STATISTICS_BIGGEST_INPUT_TYPE\nstatistics_output_f32_ref[STATISTICS_MAX_INPUT_ELEMENTS];\n\nextern STATISTICS_BIGGEST_INPUT_TYPE\nstatistics_output_f32_fut[STATISTICS_MAX_INPUT_ELEMENTS];\n\n\n/* Block Sizes */\nARR_DESC_DECLARE(statistics_block_sizes);\n\n/* Float Inputs */\nARR_DESC_DECLARE(statistics_zeros);\nARR_DESC_DECLARE(statistics_f_2);\nARR_DESC_DECLARE(statistics_f_15);\nARR_DESC_DECLARE(statistics_f_32);\nARR_DESC_DECLARE(statistics_f_all);\n\n#endif /* _STATISTICS_TEST_DATA_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_group.h",
    "content": "#ifndef _STATISTICS_TEST_GROUP_H_\n#define _STATISTICS_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(statistics_tests);\n\n#endif /* _STATISTICS_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_tests.h",
    "content": "#ifndef _STATISTICS_TESTS_H_\n#define _STATISTICS_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(max_tests);\nJTEST_DECLARE_GROUP(mean_tests);\nJTEST_DECLARE_GROUP(min_tests);\nJTEST_DECLARE_GROUP(power_tests);\nJTEST_DECLARE_GROUP(rms_tests);\nJTEST_DECLARE_GROUP(std_tests);\nJTEST_DECLARE_GROUP(var_tests);\n\n#endif /* _STATISTICS_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_templates.h",
    "content": "#ifndef _SUPPORT_TEMPLATES_H_\n#define _SUPPORT_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"test_templates.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Compare the outputs from the function under test and the reference function.\n */\n#define SUPPORT_COMPARE_INTERFACE(block_size,   \\\n                                  output_type)  \\\n    do                                          \\\n    {                                           \\\n        TEST_ASSERT_BUFFERS_EQUAL(              \\\n            support_output_ref.data_ptr,        \\\n            support_output_fut.data_ptr,        \\\n            block_size * sizeof(output_type));  \\\n    } while (0)                                  \\\n\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n#define ARM_copy_INPUT_INTERFACE(input, block_size)         \\\n    PAREN(input, support_output_fut.data_ptr, block_size)\n\n#define REF_copy_INPUT_INTERFACE(input, block_size)         \\\n    PAREN(input, support_output_ref.data_ptr, block_size)\n\n#define ARM_fill_INPUT_INTERFACE(elt, block_size)       \\\n    PAREN(elt, support_output_fut.data_ptr, block_size)\n\n#define REF_fill_INPUT_INTERFACE(elt, block_size)       \\\n    PAREN(elt, support_output_ref.data_ptr, block_size)\n\n#define ARM_x_to_y_INPUT_INTERFACE(input, block_size)       \\\n    PAREN(input, support_output_fut.data_ptr, block_size)\n\n#define REF_x_to_y_INPUT_INTERFACE(input, block_size)       \\\n    PAREN(input, support_output_ref.data_ptr, block_size)\n\n/*--------------------------------------------------------------------------------*/\n/* Test Templates */\n/*--------------------------------------------------------------------------------*/\n\n\n/**\n *  Specialization of #TEST_TEMPLATE_BUF1_BLK() for support tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define SUPPORT_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name,              \\\n                                              suffix,               \\\n                                              input_type,           \\\n                                              output_type,          \\\n                                              comparison_interface) \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \\\n                      arm_##fn_name##_##suffix)                     \\\n    {                                                               \\\n        TEST_TEMPLATE_BUF1_BLK(                                     \\\n            support_f_all,                                          \\\n            support_block_sizes,                                    \\\n            input_type,                                             \\\n            output_type,                                            \\\n            arm_##fn_name##_##suffix,                               \\\n            ARM_##fn_name##_INPUT_INTERFACE,                        \\\n            ref_##fn_name##_##suffix,                               \\\n            REF_##fn_name##_INPUT_INTERFACE,                        \\\n            comparison_interface);                                  \\\n    }\n\n/**\n *  Specialization of #TEST_TEMPLATE_ELT1_BLK() for support tests.\n *\n *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and\n *  REF_xxx_INPUT_INTERFACEs.\n */\n#define SUPPORT_DEFINE_TEST_TEMPLATE_ELT1_BLK(fn_name,              \\\n                                              suffix,               \\\n                                              elt_type,             \\\n                                              output_type,          \\\n                                              comparison_interface) \\\n    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \\\n                      arm_##fn_name##_##suffix)                     \\\n    {                                                               \\\n        TEST_TEMPLATE_ELT1_BLK(                                     \\\n            support_elts,                                           \\\n            support_block_sizes,                                    \\\n            elt_type,                                               \\\n            output_type,                                            \\\n            arm_##fn_name##_##suffix,                               \\\n            ARM_##fn_name##_INPUT_INTERFACE,                        \\\n            ref_##fn_name##_##suffix,                               \\\n            REF_##fn_name##_INPUT_INTERFACE,                        \\\n            comparison_interface);                                  \\\n    }\n\n#endif /* _SUPPORT_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_data.h",
    "content": "#ifndef ARM_SUPPORT_TEST_DATA_H\n#define ARM_SUPPORT_TEST_DATA_H\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arr_desc.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Variables */\n/*--------------------------------------------------------------------------------*/\n\n/* Input/Output Buffers */\nARR_DESC_DECLARE(support_output_fut);\nARR_DESC_DECLARE(support_output_ref);\n\n/* Block Sizes*/\nARR_DESC_DECLARE(support_block_sizes);\n\n/* Numbers */\nARR_DESC_DECLARE(support_elts);\n\n/* Float Inputs */\nARR_DESC_DECLARE(support_zeros);\nARR_DESC_DECLARE(support_f_2);\nARR_DESC_DECLARE(support_f_15);\nARR_DESC_DECLARE(support_f_32);\nARR_DESC_DECLARE(support_f_all);\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_group.h",
    "content": "#ifndef _SUPPORT_TEST_GROUP_H_\n#define _SUPPORT_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(support_tests);\n\n#endif /* _SUPPORT_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_tests.h",
    "content": "#ifndef _SUPPORT_TESTS_H_\n#define _SUPPORT_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(copy_tests);\nJTEST_DECLARE_GROUP(fill_tests);\nJTEST_DECLARE_GROUP(x_to_y_tests);\n\n#endif /* _SUPPORT_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/template.h",
    "content": "#ifndef _TEMPLATE_H_\n#define _TEMPLATE_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Looping and Iteration */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Template for the general structure of a loop.\n */\n#define TEMPLATE_LOOP(setup, loop_def, body)    \\\n    do                                          \\\n    {                                           \\\n        setup;                                  \\\n        loop_def {                              \\\n            body;                               \\\n        }                                       \\\n    } while (0)\n\n/**\n *  Template for looping over an array-like sequence.\n */\n#define TEMPLATE_DO_ARR_LIKE(iter_idx, type,                            \\\n                             arr, arr_length,                           \\\n                             iter_elem_setup,                           \\\n                             body)                                      \\\n    do                                                                  \\\n    {                                                                   \\\n        TEMPLATE_LOOP(                                                  \\\n            int iter_idx,                                               \\\n            for(iter_idx = 0; iter_idx < (arr_length); ++iter_idx),     \\\n            iter_elem_setup;                                            \\\n            body);                                                      \\\n    } while (0)\n\n/**\n *  Template for looping over the contents of an array.\n */\n#define TEMPLATE_DO_ARR(iter_idx, type, iter_elem, arr, arr_length, body) \\\n    do                                                                  \\\n    {                                                                   \\\n        TEMPLATE_DO_ARR_LIKE(                                           \\\n            iter_idx, type, arr, arr_length,                            \\\n            type iter_elem = (arr)[iter_idx],                           \\\n            body);                                                      \\\n    } while (0)\n\n/**\n *  Template for looping over the contents of an #ARR_DESC.\n */\n#define TEMPLATE_DO_ARR_DESC(iter_idx, type, iter_elem, arr_desc, body) \\\n    do                                                                  \\\n    {                                                                   \\\n        TEMPLATE_DO_ARR_LIKE(                                           \\\n            iter_idx, type, arr_desc, (arr_desc).element_count,         \\\n            type iter_elem = ARR_DESC_ELT(type, iter_idx, &(arr_desc)), \\\n            body);                                                      \\\n    } while (0)\n\n/*--------------------------------------------------------------------------------*/\n/* Test Definition */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Template for the general structure of a test.\n */\n#define TEMPLATE_TEST(setup, body, teardown)    \\\n        do                                      \\\n        {                                       \\\n            setup;                              \\\n            body;                               \\\n            teardown;                           \\\n        } while (0)\n\n/**\n *  Template for calling a function.\n *\n *  @note Surround function arguments with the #PAREN() macro.\n *\n *  @example\n *  void my_func(int arg1, int arg2);\n *\n *  TEMPLATE_CALL_FN(my_func, PAREN(3, 7));\n */\n#define TEMPLATE_CALL_FN(fn, fn_args)           \\\n        fn fn_args\n\n#endif /* _TEMPLATE_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/test_templates.h",
    "content": "#ifndef _TEST_TEMPLATES_H_\n#define _TEST_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n#include \"template.h\"\n#include <string.h>             /* memcmp() */\n#include <inttypes.h>           /* PRIu32 */\n#include \"math_helper.h\"        /* arm_snr_f32() */\n\n/*--------------------------------------------------------------------------------*/\n/* Function Aliases for use in Templates. */\n/*--------------------------------------------------------------------------------*/\n#define ref_q31_t_to_float ref_q31_to_float\n#define ref_q15_t_to_float ref_q15_to_float\n#define ref_q7_t_to_float  ref_q7_to_float\n#define ref_float_to_q31_t ref_float_to_q31\n#define ref_float_to_q15_t ref_float_to_q15\n#define ref_float_to_q7_t  ref_float_to_q7\n#define ref_float32_t_to_float ref_copy_f32\n#define ref_float_to_float32_t ref_copy_f32\n\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Call the function-under-test.\n */\n#define TEST_CALL_FUT(fut, fut_args)                    \\\n    JTEST_COUNT_CYCLES(TEMPLATE_CALL_FN(fut, fut_args))\n\n/**\n *  Call the reference-function.\n */\n#define TEST_CALL_REF(ref, ref_args)            \\\n    TEMPLATE_CALL_FN(ref, ref_args)\n\n/**\n *  Call the function-under-test and the reference-function.\n */\n#define TEST_CALL_FUT_AND_REF(fut, fut_args, ref, ref_args) \\\n    do {                                                    \\\n        TEST_CALL_FUT(fut, fut_args);                       \\\n        TEST_CALL_REF(ref, ref_args);                       \\\n    } while (0)\n\n/**\n *  This macro eats a variable number of arguments and evaluates to a null\n *  statement.\n */\n#define TEST_NULL_STATEMENT(...) (void) \"TEST_NULL_STATEMENT\"\n\n/**\n *  A function name, Usable in any template where a fut or ref name is accepted,\n *  that evaluates to a #TEST_NULL_STATEMENT().\n */\n#define TEST_NULL_FN TEST_NULL_STATEMENT\n\n/**\n *  Assert that buffers A and B are byte-equivalent for a number of bytes.\n */\n\n#define TEST_ASSERT_BUFFERS_EQUAL(buf_a, buf_b, bytes)\\\n    do                                                \\\n    {                                                 \\\n        if (memcmp(buf_a, buf_b, bytes) != 0)         \\\n        {                                             \\\n            return JTEST_TEST_FAILED;                 \\\n        }                                             \\\n    } while (0)\n\n\n\n\n/**\n *  Assert that the two entities are equal.\n */\n#define TEST_ASSERT_EQUAL(a, b)      \\\n    do                               \\\n    {                                \\\n        if ((a) != (b))              \\\n        {                            \\\n            return JTEST_TEST_FAILED;\\\n        }                            \\\n    } while (0)\n\n/**\n *  Convert elements to from src_type to float.\n */\n#define TEST_CONVERT_TO_FLOAT(src_ptr, dst_ptr, block_size, src_type)   \\\n    do                                                                  \\\n    {                                                                   \\\n        ref_##src_type##_to_float(                                      \\\n            src_ptr,                                                    \\\n            dst_ptr,                                                    \\\n            block_size);                                                \\\n        } while (0)                                                      \\\n\n/**\n *  Convert elements to from float to dst_type .\n */\n#define TEST_CONVERT_FLOAT_TO(src_ptr, dst_ptr, block_size, dst_type)   \\\n    do                                                                  \\\n    {                                                                   \\\n        ref_float_to_##dst_type(                                        \\\n            src_ptr,                                                    \\\n            dst_ptr,                                                    \\\n            block_size);                                                \\\n    } while (0)                                                          \\\n\n/**\n *  Assert that the SNR between a reference and test sample is above a given\n *  threshold.\n */\n\n#define TEST_ASSERT_SNR(ref_ptr, tst_ptr, block_size, threshold)  \\\n    do                                                            \\\n    {                                                             \\\n        float32_t snr = arm_snr_f32(ref_ptr, tst_ptr, block_size);\\\n        if ( snr <= threshold)                                    \\\n        {                                                         \\\n            JTEST_DUMP_STRF(\"SNR: %f\\n\", snr);                    \\\n            return JTEST_TEST_FAILED;                             \\\n        }                                                         \\\n    } while (0)\n\n\n/**\n *  Assert that the SNR between a reference and test sample is above a given\n *  threshold.  Special case for float64_t\n */\n\n#define TEST_ASSERT_DBL_SNR(ref_ptr, tst_ptr, block_size, threshold)\\\n    do                                                              \\\n    {                                                               \\\n        float64_t snr = arm_snr_f64(ref_ptr, tst_ptr, block_size);  \\\n        if ( snr <= threshold)                                      \\\n        {                                                           \\\n            JTEST_DUMP_STRF(\"SNR: %f\\n\", snr);                      \\\n            return JTEST_TEST_FAILED;                               \\\n        }                                                           \\\n    } while (0)\n\n\n/**\n *  Compare test and reference elements by converting to float and\n *  calculating an SNR.\n *\n *  This macro is a merger of the #TEST_CONVERT_TO_FLOAT() and\n *  #TEST_ASSERT_SNR() macros.\n */\n#define TEST_CONVERT_AND_ASSERT_SNR(ref_dst_ptr, ref_src_ptr,   \\\n                                    tst_dst_ptr, tst_src_ptr,   \\\n                                    block_size,                 \\\n                                    tst_src_type,               \\\n                                    threshold)                  \\\n        do                                                      \\\n        {                                                       \\\n            TEST_CONVERT_TO_FLOAT(ref_src_ptr,                  \\\n                                  ref_dst_ptr,                  \\\n                                  block_size,                   \\\n                                  tst_src_type);                \\\n            TEST_CONVERT_TO_FLOAT(tst_src_ptr,                  \\\n                                  tst_dst_ptr,                  \\\n                                  block_size,                   \\\n                                  tst_src_type);                \\\n            TEST_ASSERT_SNR(ref_dst_ptr,                        \\\n                            tst_dst_ptr,                        \\\n                            block_size,                         \\\n                            threshold);                         \\\n        } while (0)\n\n/**\n *  Execute statements only if the combination of block size, function type\n *  specifier, and input ARR_DESC_t are valid.\n *\n *  @example An ARR_DESC_t that contains 64 bytes cant service a 32 element\n *  block size if they are extracted in float32_t increments.\n *\n *  8 * 32 = 256 > 64.\n */\n#define TEST_DO_VALID_BLOCKSIZE(block_size, fn_type_spec,   \\\n                                input_arr_desc, body)       \\\n    do                                                      \\\n    {                                                       \\\n        if (block_size * sizeof(fn_type_spec) <=             \\\n           ARR_DESC_BYTES(input_arr_desc))                  \\\n        {                                                   \\\n            JTEST_DUMP_STRF(\"Block Size: %\"PRIu32\"\\n\", block_size); \\\n            body;                                           \\\n        }                                                   \\\n    } while (0)                                              \\\n\n/**\n *  Template for tests that rely on one input buffer and a blocksize parameter.\n *\n *  The buffer is an #ARR_DESC_t.  It is iterated over and it's values are\n *  passed to the function under test and reference functions through their\n *  appropriate argument interfaces.  The argument interfaces this template to\n *  execute structurally similar functions.\n *\n */\n#define TEST_TEMPLATE_BUF1_BLK(arr_desc_inputs,                         \\\n                              arr_desc_block_sizes,                     \\\n                              input_type, output_type,                  \\\n                              fut, fut_arg_interface,                   \\\n                              ref, ref_arg_interface,                   \\\n                              compare_interface)                        \\\n    do                                                                  \\\n    {                                                                   \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            input_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs         \\\n            ,                                                           \\\n            TEMPLATE_DO_ARR_DESC(                                       \\\n                block_size_idx, uint32_t, block_size, arr_desc_block_sizes \\\n                ,                                                       \\\n                void *   input_data_ptr = input_ptr->data_ptr;          \\\n                                                                        \\\n                TEST_DO_VALID_BLOCKSIZE(                                \\\n                    block_size, input_type, input_ptr                   \\\n                    ,                                                   \\\n                    TEST_CALL_FUT_AND_REF(                              \\\n                        fut, fut_arg_interface(                         \\\n                            input_data_ptr, block_size),                \\\n                        ref, ref_arg_interface(                         \\\n                            input_data_ptr, block_size));               \\\n                                                                        \\\n                    compare_interface(block_size, output_type))));      \\\n                                                                        \\\n        return JTEST_TEST_PASSED;                                       \\\n                                                                        \\\n    } while (0)\n\n/**\n *  Template for tests that rely on an input buffer and an element.\n *\n *  An element can is any thing which doesn't walk and talk like a\n *  sequence. Examples include numbers, and structures.\n */\n#define TEST_TEMPLATE_BUF1_ELT1(arr_desc_inputs,                        \\\n                                arr_desc_elts,                          \\\n                                input_type, elt_type, output_type,      \\\n                                fut, fut_arg_interface,                 \\\n                                ref, ref_arg_interface,                 \\\n                                compare_interface)                      \\\n        do                                                              \\\n        {                                                               \\\n            TEMPLATE_DO_ARR_DESC(                                       \\\n                input_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs     \\\n                ,                                                       \\\n                TEMPLATE_DO_ARR_DESC(                                   \\\n                    elt_idx, elt_type, elt, arr_desc_elts               \\\n                    ,                                                   \\\n                    void * input_data_ptr = input_ptr->data_ptr;        \\\n                    TEST_CALL_FUT_AND_REF(                              \\\n                        fut, fut_arg_interface(input_data_ptr, elt),    \\\n                        ref, ref_arg_interface(input_data_ptr, elt));   \\\n                                                                        \\\n                    compare_interface(output_type)));                   \\\n            return JTEST_TEST_PASSED;                                   \\\n        } while (0)\n\n/**\n *  Template for tests that rely on an input buffer, an element, and a blocksize\n *  parameter.\n */\n#define TEST_TEMPLATE_BUF1_ELT1_BLK(arr_desc_inputs,                \\\n                                    arr_desc_elts,                  \\\n                                    arr_desc_block_sizes,           \\\n                                    input_type, elt_type, output_type,  \\\n                                    fut, fut_arg_interface,         \\\n                                    ref, ref_arg_interface,         \\\n                                    compare_interface);             \\\n    do                                                              \\\n    {                                                               \\\n        TEMPLATE_DO_ARR_DESC(                                       \\\n            inut_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs      \\\n            ,                                                       \\\n            TEMPLATE_DO_ARR_DESC(                                   \\\n                block_size_idx, uint32_t, block_size,               \\\n                arr_desc_block_sizes                                \\\n                ,                                                   \\\n                TEMPLATE_DO_ARR_DESC(                               \\\n                    elt_idx, elt_type, elt, arr_desc_elts           \\\n                    ,                                               \\\n                    void * input_data_ptr = input_ptr->data_ptr;    \\\n                    TEST_DO_VALID_BLOCKSIZE(                        \\\n                        block_size, input_type, input_ptr,          \\\n                                              \\\n                        TEST_CALL_FUT_AND_REF(                      \\\n                            fut, fut_arg_interface(                 \\\n                                input_data_ptr, elt, block_size),   \\\n                            ref, ref_arg_interface(                 \\\n                                input_data_ptr, elt, block_size));  \\\n                        compare_interface(block_size, output_type))))); \\\n        return JTEST_TEST_PASSED;                                   \\\n    } while (0)\n\n/**\n *  Template for tests that rely on an input buffer, two elements, and a blocksize\n *  parameter.\n */\n#define TEST_TEMPLATE_BUF1_ELT2_BLK(arr_desc_inputs,                    \\\n                                    arr_desc_elt1s,                     \\\n                                    arr_desc_elt2s,                     \\\n                                    arr_desc_block_sizes,               \\\n                                    input_type, elt1_type,              \\\n                                    elt2_type, output_type,             \\\n                                    fut, fut_arg_interface,             \\\n                                    ref, ref_arg_interface,             \\\n                                    compare_interface)                  \\\n        do                                                              \\\n        {                                                               \\\n            TEMPLATE_DO_ARR_DESC(                                       \\\n                inut_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs      \\\n                ,                                                       \\\n                TEMPLATE_DO_ARR_DESC(                                   \\\n                    block_size_idx, uint32_t, block_size,               \\\n                    arr_desc_block_sizes                                \\\n                    ,                                                   \\\n                    TEMPLATE_DO_ARR_DESC(                               \\\n                        elt1_idx, elt1_type, elt1, arr_desc_elt1s       \\\n                        ,                                               \\\n                        TEMPLATE_DO_ARR_DESC(                           \\\n                            elt2_idx, elt2_type, elt2, arr_desc_elt2s   \\\n                            ,                                           \\\n                            void * input_data_ptr = input_ptr->data_ptr; \\\n                            TEST_DO_VALID_BLOCKSIZE(                    \\\n                                block_size, input_type, input_ptr,      \\\n                                TEST_CALL_FUT_AND_REF(                  \\\n                                    fut, fut_arg_interface(             \\\n                                        input_data_ptr, elt1, elt2, block_size), \\\n                                    ref, ref_arg_interface(             \\\n                                        input_data_ptr, elt1, elt2, block_size)); \\\n                                compare_interface(block_size, output_type)))))); \\\n            return JTEST_TEST_PASSED;                                   \\\n        } while (0)\n\n/**\n *  Template for tests that rely on two input buffers and a blocksize parameter.\n *\n *  The two #ARR_DESC_t, input buffers are iterated through in parallel. The\n *  length of the first #ARR_DESC_t determines the length of the iteration.\n */\n#define TEST_TEMPLATE_BUF2_BLK(arr_desc_inputs_a,                       \\\n                              arr_desc_inputs_b,                        \\\n                              arr_desc_block_sizes,                     \\\n                              input_type, output_type,                  \\\n                              fut, fut_arg_interface,                   \\\n                              ref, ref_arg_interface,                   \\\n                              compare_interface)                        \\\n    do                                                                  \\\n    {                                                                   \\\n        /* Iterate over two input arrays in parallel.*/                 \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            input_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs_a       \\\n            ,                                                           \\\n            TEMPLATE_DO_ARR_DESC(                                       \\\n                block_size_idx, uint32_t, block_size, arr_desc_block_sizes, \\\n                void * input_a_ptr = input_ptr->data_ptr;               \\\n                void * input_b_ptr = ARR_DESC_ELT(                      \\\n                    ARR_DESC_t *, input_idx,                            \\\n                    &(arr_desc_inputs_b))->data_ptr;                    \\\n                                                                        \\\n                TEST_DO_VALID_BLOCKSIZE(                                \\\n                    block_size, input_type, input_ptr                   \\\n                    ,                                                   \\\n                    TEST_CALL_FUT_AND_REF(                              \\\n                        fut, fut_arg_interface(                         \\\n                            input_a_ptr, input_b_ptr, block_size),      \\\n                        ref, ref_arg_interface(                         \\\n                            input_a_ptr, input_b_ptr, block_size));     \\\n                                                                        \\\n                    compare_interface(block_size, output_type))));      \\\n        return JTEST_TEST_PASSED;                                       \\\n    } while (0)\n\n/**\n *  Test template that uses a single element.\n */\n#define TEST_TEMPLATE_ELT1(arr_desc_elts,                       \\\n                           elt_type, output_type,               \\\n                           fut, fut_arg_interface,              \\\n                           ref, ref_arg_interface,              \\\n                           compare_interface)                   \\\n        do                                                      \\\n        {                                                       \\\n            TEMPLATE_DO_ARR_DESC(                               \\\n                elt_idx, elt_type, elt, arr_desc_elts           \\\n                ,                                               \\\n                TEST_CALL_FUT_AND_REF(                          \\\n                    fut, fut_arg_interface(                     \\\n                        elt),                                   \\\n                    ref, ref_arg_interface(                     \\\n                        elt));                                  \\\n                /* Comparison interfaces typically accept */    \\\n                /* a block_size. Pass a dummy value 1.*/        \\\n                compare_interface(1, output_type));             \\\n            return JTEST_TEST_PASSED;                           \\\n        } while (0)\n\n/**\n *  Test template that iterates over two sets of elements in parallel.\n *\n *  The length of the first set determines the number of iteratsions.\n */\n#define TEST_TEMPLATE_ELT2(arr_desc_elts_a,                     \\\n                           arr_desc_elts_b,                     \\\n                           elt_a_type, elt_b_type, output_type, \\\n                           fut, fut_arg_interface,              \\\n                           ref, ref_arg_interface,              \\\n                           compare_interface)                   \\\n        do                                                      \\\n        {                                                       \\\n            TEMPLATE_DO_ARR_DESC(                               \\\n                elt_a_idx, elt_a_type, elt_a, arr_desc_elts_a   \\\n                ,                                               \\\n                elt_b_type * elt_b = ARR_DESC_ELT(              \\\n                    elt_b_type,                                 \\\n                    elt_a_idx,                                  \\\n                    arr_desc_elts_b);                           \\\n                                                                \\\n                TEST_CALL_FUT_AND_REF(                          \\\n                    fut, fut_arg_interface(                     \\\n                        elt_a, elt_b),                          \\\n                    ref, ref_arg_interface(                     \\\n                        elt_a, elt_b));                         \\\n                /* Comparison interfaces typically accept */    \\\n                /* a block_size. Pass a dummy value 1.*/        \\\n                compare_interface(1, output_type));             \\\n            return JTEST_TEST_PASSED;                           \\\n        } while (0)\n\n/**\n *  Test template that uses an element and a block size.\n */\n#define TEST_TEMPLATE_ELT1_BLK(arr_desc_elts,                       \\\n                               arr_desc_block_sizes,                \\\n                               elt_type, output_type,               \\\n                               fut, fut_arg_interface,              \\\n                               ref, ref_arg_interface,              \\\n                               compare_interface)                   \\\n        do                                                          \\\n        {                                                           \\\n            TEMPLATE_DO_ARR_DESC(                                   \\\n                block_size_idx, uint32_t, block_size,               \\\n                arr_desc_block_sizes                                \\\n                ,                                                   \\\n                TEMPLATE_DO_ARR_DESC(                               \\\n                    elt_idx, elt_type, elt, arr_desc_elts           \\\n                    ,                                               \\\n                    JTEST_DUMP_STRF(\"Block Size: %d\\n\",             \\\n                         (int)block_size);                          \\\n                    TEST_CALL_FUT_AND_REF(                          \\\n                        fut, fut_arg_interface(                     \\\n                            elt, block_size),                       \\\n                        ref, ref_arg_interface(                     \\\n                            elt, block_size));                      \\\n                    compare_interface(block_size, output_type)));   \\\n            return JTEST_TEST_PASSED;                               \\\n        } while (0)\n\n#endif /* _TEST_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_templates.h",
    "content": "#ifndef _TRANSFORM_TEMPLATES_H_\n#define _TRANSFORM_TEMPLATES_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"test_templates.h\"\n#include <string.h>             /* memcpy() */\n\n/*--------------------------------------------------------------------------------*/\n/* Group Specific Templates */\n/*--------------------------------------------------------------------------------*/\n\n/**\n * Comparison SNR thresholds for the data types used in transform_tests.\n */\n#define TRANSFORM_SNR_THRESHOLD_float32_t 90\n#define TRANSFORM_SNR_THRESHOLD_q31_t     90\n#define TRANSFORM_SNR_THRESHOLD_q15_t     30\n\n#define DCT4_TRANSFORM_SNR_THRESHOLD_float32_t 80\n#define DCT4_TRANSFORM_SNR_THRESHOLD_q31_t     75\n#define DCT4_TRANSFORM_SNR_THRESHOLD_q15_t     11\n\n/**\n *  Compare the outputs from the function under test and the reference\n *  function using SNR.\n */\n#define TRANSFORM_SNR_COMPARE_INTERFACE(block_size,     \\\n                                        output_type)    \\\n    do                                                  \\\n    {                                                   \\\n        TEST_CONVERT_AND_ASSERT_SNR(                    \\\n            transform_fft_output_f32_ref,               \\\n            (output_type *) transform_fft_output_ref,   \\\n            transform_fft_output_f32_fut,               \\\n            (output_type *) transform_fft_output_fut,   \\\n            block_size,                                 \\\n            output_type,                                \\\n            TRANSFORM_SNR_THRESHOLD_##output_type       \\\n            );                                          \\\n    } while (0)\n    \n/**\n *  Compare the outputs from the function under test and the reference\n *  function using SNR.\n */\n#define DCT_TRANSFORM_SNR_COMPARE_INTERFACE(block_size,  \\\n                                            output_type) \\\n    do                                                   \\\n    {                                                    \\\n        TEST_CONVERT_AND_ASSERT_SNR(                     \\\n            transform_fft_output_f32_ref,                \\\n            (output_type *) transform_fft_output_ref,    \\\n            transform_fft_output_f32_fut,                \\\n            (output_type *) transform_fft_output_fut,    \\\n            block_size,                                  \\\n            output_type,                                 \\\n            DCT4_TRANSFORM_SNR_THRESHOLD_##output_type   \\\n            );                                           \\\n    } while (0)                                           \\\n\n/**\n *  Specialization on #TRANSFORM_SNR_COMPARE_INTERFACE() to fix the block_size\n *  for complex datasets.\n */\n#define TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE(block_size, output_type)  \\\n    /* Complex numbers have two components*/                            \\\n    TRANSFORM_SNR_COMPARE_INTERFACE(block_size * 2, output_type )\n\n/**\n * This macro copys data from the input_ptr into input arrays.\n *\n * Some functions modify their input data; in order to provide the same data to\n * multiple tests, copies must be made so the changes from one function don't\n * impact the others.\n */\n#define TRANSFORM_COPY_INPUTS(input_ptr,        \\\n                              bytes)            \\\n    do                                          \\\n    {                                           \\\n        memcpy(                                 \\\n            transform_fft_input_fut,            \\\n            input_ptr,                          \\\n            bytes);                             \\\n        memcpy(                                 \\\n            transform_fft_input_ref,            \\\n            input_ptr,                          \\\n            bytes);                             \\\n    } while (0)\n\n/**\n * This macro copys data from the input_ptr into input arrays. It also creates\n * symmetric input data for rfft inverse.\n *\n * The 4.534234f just makes the middle entry of the array semi random.  It's\n * actual value doesn't seem to matter much.\n *\n * Some functions modify their input data; in order to provide the same data to\n * multiple tests, copies must be made so the changes from one function don't\n * impact the others.\n */\n#define TRANSFORM_PREPARE_INVERSE_INPUTS(input_ptr,                              \\\n                              fftlen, input_type, bytes)                         \\\n    do                                                                           \\\n    {                                                                            \\\n        uint32_t i;                                                              \\\n                                                                                 \\\n        memcpy(                                                                  \\\n            transform_fft_input_fut,                                             \\\n            input_ptr,                                                           \\\n            bytes);                                                              \\\n                                                                                 \\\n        ((input_type*)transform_fft_input_fut)[1] = 0;                           \\\n        ((input_type*)transform_fft_input_fut)[fftlen + 0] = 0;                  \\\n        ((input_type*)transform_fft_input_fut)[fftlen + 1] = 0;                  \\\n        for(i=1;i<fftlen/2;i++)                                                  \\\n        {                                                                        \\\n           *((input_type*)transform_fft_input_fut + fftlen + 2*i + 0) =          \\\n               *((input_type*)transform_fft_input_fut + fftlen - 2*i + 0);       \\\n           *((input_type*)transform_fft_input_fut + fftlen + 2*i + 1) =          \\\n               -(*((input_type*)transform_fft_input_fut + fftlen - 2*i + 1));    \\\n                                                                                 \\\n        }                                                                        \\\n                                                                                 \\\n        memcpy(                                                                  \\\n            transform_fft_input_ref,                                             \\\n            transform_fft_input_fut,                                             \\\n            bytes * 2);                                                          \\\n    } while (0)\n\n/**\n * This macro copys data from the input_ptr into the in-place input arrays.\n *\n * Some functions modify their input data; in order to provide the same data to\n * multiple tests, copies must be made so the changes from one function don't\n * impact the others.\n */\n#define TRANSFORM_PREPARE_INPLACE_INPUTS_DOWNSHIFT(input_ptr,       \\\n                                         bytes,                     \\\n                                         type)                      \\\n    do                                                              \\\n    {                                                               \\\n        uint32_t i;                                                 \\\n        memcpy(                                                     \\\n            transform_fft_inplace_input_fut,                        \\\n            input_ptr,                                              \\\n            bytes);                                                 \\\n        memcpy(                                                     \\\n            transform_fft_inplace_input_ref,                        \\\n            input_ptr,                                              \\\n            bytes);                                                 \\\n        for(i=0;i<bytes/sizeof(type);i++) {                         \\\n            *((type*)transform_fft_inplace_input_fut + i) >>= 1;    \\\n            *((type*)transform_fft_inplace_input_ref + i) >>= 1;}   \\\n    } while (0)\n\n/**\n * This macro copys data from the input_ptr into the in-place input arrays.\n *\n * Some functions modify their input data; in order to provide the same data to\n * multiple tests, copies must be made so the changes from one function don't\n * impact the others.\n */\n#define TRANSFORM_PREPARE_INPLACE_INPUTS(input_ptr, \\\n                                         bytes)     \\\n    do                                              \\\n    {                                               \\\n        memcpy(                                     \\\n            transform_fft_inplace_input_fut,        \\\n            input_ptr,                              \\\n            bytes);                                 \\\n        memcpy(                                     \\\n            transform_fft_inplace_input_ref,        \\\n            input_ptr,                              \\\n            bytes);                                 \\\n    } while (0)\n\n\n#endif /* _TRANSFORM_TEMPLATES_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_data.h",
    "content": "#ifndef _TRANSFORM_TEST_DATA_H_\n#define _TRANSFORM_TEST_DATA_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Includes */\n/*--------------------------------------------------------------------------------*/\n\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n#define TRANSFORM_MAX_FFT_LEN 4096\n#define TRANFORM_BIGGEST_INPUT_TYPE float32_t\n\n/*--------------------------------------------------------------------------------*/\n/* Variable Declarations */\n/*--------------------------------------------------------------------------------*/\n\n/* Lengths are multiplied by 2 to accomodate complex numbers*/\nextern float32_t transform_fft_output_fut[TRANSFORM_MAX_FFT_LEN * 2];\nextern float32_t transform_fft_output_ref[TRANSFORM_MAX_FFT_LEN * 2];\nextern float32_t transform_fft_input_fut[TRANSFORM_MAX_FFT_LEN * 2];\nextern float32_t transform_fft_input_ref[TRANSFORM_MAX_FFT_LEN * 2];\nextern float32_t transform_fft_output_f32_fut[TRANSFORM_MAX_FFT_LEN * 2];\nextern float32_t transform_fft_output_f32_ref[TRANSFORM_MAX_FFT_LEN * 2];\nextern float32_t * transform_fft_inplace_input_fut;\nextern float32_t * transform_fft_inplace_input_ref;\nextern float32_t transform_fft_f32_inputs[TRANSFORM_MAX_FFT_LEN * 2];\nextern q31_t transform_fft_q31_inputs[TRANSFORM_MAX_FFT_LEN * 2];\nextern q15_t * transform_fft_q15_inputs;\nextern q15_t dct4_transform_fft_q15_inputs[TRANSFORM_MAX_FFT_LEN * 2];\n\n/* FFT Lengths */\nARR_DESC_DECLARE(transform_radix2_fftlens);\nARR_DESC_DECLARE(transform_radix4_fftlens);\nARR_DESC_DECLARE(transform_rfft_fftlens);\nARR_DESC_DECLARE(transform_rfft_fast_fftlens);\nARR_DESC_DECLARE(transform_dct_fftlens);\n\n/* CFFT Structs */\nARR_DESC_DECLARE(transform_cfft_f32_structs);\nARR_DESC_DECLARE(transform_cfft_q31_structs);\nARR_DESC_DECLARE(transform_cfft_q15_structs);\n\n#endif /* _TRANSFORM_TEST_DATA_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_group.h",
    "content": "#ifndef _TRANSFORM_TEST_GROUP_H_\n#define _TRANSFORM_TEST_GROUP_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Declare Test Groups */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(transform_tests);\n\n#endif /* _TRANSFORM_TEST_GROUP_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_tests.h",
    "content": "#ifndef _TRANSFORM_TESTS_H_\n#define _TRANSFORM_TESTS_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Test/Group Declarations */\n/*--------------------------------------------------------------------------------*/\nJTEST_DECLARE_GROUP(cfft_tests);\nJTEST_DECLARE_GROUP(cfft_family_tests);\nJTEST_DECLARE_GROUP(dct4_tests);\nJTEST_DECLARE_GROUP(rfft_tests);\nJTEST_DECLARE_GROUP(rfft_fast_tests);\n\n#endif /* _TRANSFORM_TESTS_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/type_abbrev.h",
    "content": "#ifndef _TYPE_ABBREV_H_\n#define _TYPE_ABBREV_H_\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Expand the abbreviation for a type into the type itself.\n */\n#define TYPE_FROM_ABBREV(abbrev)                \\\n    TYPE_ABBREV_##abbrev                        \\\n\n/**\n *  Expand the type to an abbreviation for that type.\n *\n *  Inverse of #TYPE_FROM_ABBREV().\n *\n *  @note Should be able to get a type back by writing.\n *  TYPE_FROM_ABBREV(ABBREV_FROM_TYPE(type))\n */\n#define ABBREV_FROM_TYPE(type)                  \\\n    TYPE_SUFFIX_##type\n\n#define TYPE_ABBREV_f64 float64_t\n#define TYPE_ABBREV_f32 float32_t\n#define TYPE_ABBREV_q31 q31_t\n#define TYPE_ABBREV_q15 q15_t\n#define TYPE_ABBREV_q7  q7_t\n\n#define TYPE_SUFFIX_float64_t f64\n#define TYPE_SUFFIX_float32_t f32\n#define TYPE_SUFFIX_q31_t q31\n#define TYPE_SUFFIX_q15_t q15\n#define TYPE_SUFFIX_q7_t q7\n\n#endif /* _TYPE_ABBREV_H_ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/Retarget.c",
    "content": "/*----------------------------------------------------------------------------\n * Name:    Retarget.c\n * Purpose: 'Retarget' layer for target-dependent low level functions\n * Note(s):\n *----------------------------------------------------------------------------\n * This file is part of the uVision/ARM development tools.\n * This software may only be used under the terms of a valid, current,\n * end user licence from KEIL for a compatible version of KEIL software\n * development tools. Nothing else gives you the right to use this software.\n *\n * This software is supplied \"AS IS\" without warranties of any kind.\n *\n * Copyright (c) 2011 Keil - An ARM Company. All rights reserved.\n *----------------------------------------------------------------------------*/\n\n#include <stdio.h>\n#include <rt_misc.h>\n#include \"Serial.h\"\n\n#pragma import(__use_no_semihosting_swi)\n\n\n\nstruct __FILE { int handle; /* Add whatever you need here */ };\nFILE __stdout;\nFILE __stdin;\n\n\nint fputc(int c, FILE *f) {\n  return (SER_PutChar(c));\n}\n\n\nint fgetc(FILE *f) {\n  return (SER_GetChar());\n}\n\n\nint ferror(FILE *f) {\n  /* Your implementation of ferror */\n  return EOF;\n}\n\n\nvoid _ttywrch(int c) {\n  SER_PutChar(c);\n}\n\n\nvoid _sys_exit(int return_code) {\nlabel:  goto label;  /* endless loop */\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv6-m.s",
    "content": ";/* File: startup_armv6-m.s\n; * Purpose: startup file for armv7-m architecture devices.\n; *          Should be used with ARMCC\n; * Version: V2.00\n; * Date: 16 November 2015\n; *\n; */\n;/* Copyright (c) 2011 - 2014 ARM LIMITED\n;\n;   All rights reserved.\n;   Redistribution and use in source and binary forms, with or without\n;   modification, are permitted provided that the following conditions are met:\n;   - Redistributions of source code must retain the above copyright\n;     notice, this list of conditions and the following disclaimer.\n;   - Redistributions in binary form must reproduce the above copyright\n;     notice, this list of conditions and the following disclaimer in the\n;     documentation and/or other materials provided with the distribution.\n;   - Neither the name of ARM nor the names of its contributors may be used\n;     to endorse or promote products derived from this software without\n;     specific prior written permission.\n;   *\n;   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n;   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n;   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n;   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n;   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n;   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n;   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n;   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n;   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n;   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n;   POSSIBILITY OF SUCH DAMAGE.\n;   ---------------------------------------------------------------------------*/\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                IMPORT  ||Image$$ARM_LIB_STACK$$ZI$$Limit||\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     ||Image$$ARM_LIB_STACK$$ZI$$Limit||              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                BKPT #0\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                BKPT #0\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\n                ALIGN\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv7-m.s",
    "content": ";/* File: startup_armv7-m.s\n; * Purpose: startup file for armv7-m architecture devices.\n; *          Should be used with ARMCC\n; * Version: V2.00\n; * Date: 16 November 2015\n; *\n; */\n;/* Copyright (c) 2011 - 2014 ARM LIMITED\n;\n;   All rights reserved.\n;   Redistribution and use in source and binary forms, with or without\n;   modification, are permitted provided that the following conditions are met:\n;   - Redistributions of source code must retain the above copyright\n;     notice, this list of conditions and the following disclaimer.\n;   - Redistributions in binary form must reproduce the above copyright\n;     notice, this list of conditions and the following disclaimer in the\n;     documentation and/or other materials provided with the distribution.\n;   - Neither the name of ARM nor the names of its contributors may be used\n;     to endorse or promote products derived from this software without\n;     specific prior written permission.\n;   *\n;   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n;   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n;   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n;   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n;   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n;   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n;   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n;   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n;   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n;   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n;   POSSIBILITY OF SUCH DAMAGE.\n;   ---------------------------------------------------------------------------*/\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                IMPORT  ||Image$$ARM_LIB_STACK$$ZI$$Limit||\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     ||Image$$ARM_LIB_STACK$$ZI$$Limit||              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                BKPT #0\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                BKPT #0\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                BKPT #0\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                BKPT #0\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                BKPT #0\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\n                ALIGN\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv6-m.S",
    "content": "/* File: startup_armv6-m.S\n * Purpose: startup file for armv6-m architecture devices.\n *          Should be used with ARMCLANG\n * Version: V2.00\n * Date: 16 November 2015\n *\n */\n/* Copyright (c) 2011 - 2015 ARM LIMITED\n\n   All rights reserved.\n   Redistribution and use in source and binary forms, with or without\n   modification, are permitted provided that the following conditions are met:\n   - Redistributions of source code must retain the above copyright\n     notice, this list of conditions and the following disclaimer.\n   - Redistributions in binary form must reproduce the above copyright\n     notice, this list of conditions and the following disclaimer in the\n     documentation and/or other materials provided with the distribution.\n   - Neither the name of ARM nor the names of its contributors may be used\n     to endorse or promote products derived from this software without\n     specific prior written permission.\n   *\n   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n   POSSIBILITY OF SUCH DAMAGE.\n   ---------------------------------------------------------------------------*/\n/*\n  ;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n*/\n\n\n    .syntax unified\n    .arch   armv6-m\n\n/* .eabi_attribute Tag_ABI_align8_preserved,1    www.support.code-red-tech.com/CodeRedWiki/Preserve8 */\n.eabi_attribute 25, 1   /* Tag_ABI_align_preserved */\n\n    .global    Image$$ARM_LIB_STACK$$ZI$$Limit\n\n\n    .section RESET, \"x\"\n    .align  2\n    .globl  __Vectors\n    .globl  __Vectors_End\n    .globl  __Vectors_Size\n__Vectors:\n    .long   Image$$ARM_LIB_STACK$$ZI$$Limit            /* Top of Stack */\n    .long   Reset_Handler         /* Reset Handler */\n    .long   NMI_Handler           /* NMI Handler */\n    .long   HardFault_Handler     /* Hard Fault Handler */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   SVC_Handler           /* SVCall Handler */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   PendSV_Handler        /* PendSV Handler */\n    .long   SysTick_Handler       /* SysTick Handler */\n__Vectors_End:\n\n    .equ    __Vectors_Size, __Vectors_End - __Vectors\n\n\n    .text\n    .thumb\n    .align  2\n\n    .globl  Reset_Handler\n    .weak   Reset_Handler\n    .type   Reset_Handler, %function\n    .thumb_func\nReset_Handler:\n    bl      SystemInit\n    bl      __main\n\n    .globl  NMI_Handler\n    .weak   NMI_Handler\n    .type   NMI_Handler, %function\n    .thumb_func\nNMI_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  HardFault_Handler\n    .weak   HardFault_Handler\n    .type   HardFault_Handler, %function\n    .thumb_func\nHardFault_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  SVC_Handler\n    .weak   SVC_Handler\n    .type   SVC_Handler, %function\n    .thumb_func\nSVC_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  PendSV_Handler\n    .weak   PendSV_Handler\n    .type   PendSV_Handler, %function\n    .thumb_func\nPendSV_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  SysTick_Handler\n    .weak   SysTick_Handler\n    .type   SysTick_Handler, %function\n    .thumb_func\nSysTick_Handler:\n    bkpt    #0\n    b       .\n\n    .end\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv7-m.S",
    "content": "/* File: startup_armv7-m.S\n * Purpose: startup file for armv7-m architecture devices.\n *          Should be used with ARMCLANG\n * Version: V2.00\n * Date: 16 November 2015\n *\n */\n/* Copyright (c) 2011 - 2015 ARM LIMITED\n\n   All rights reserved.\n   Redistribution and use in source and binary forms, with or without\n   modification, are permitted provided that the following conditions are met:\n   - Redistributions of source code must retain the above copyright\n     notice, this list of conditions and the following disclaimer.\n   - Redistributions in binary form must reproduce the above copyright\n     notice, this list of conditions and the following disclaimer in the\n     documentation and/or other materials provided with the distribution.\n   - Neither the name of ARM nor the names of its contributors may be used\n     to endorse or promote products derived from this software without\n     specific prior written permission.\n   *\n   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n   POSSIBILITY OF SUCH DAMAGE.\n   ---------------------------------------------------------------------------*/\n/*\n  ;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n*/\n\n\n    .syntax unified\n    .arch   armv7-m\n\n/* .eabi_attribute Tag_ABI_align8_preserved,1    www.support.code-red-tech.com/CodeRedWiki/Preserve8 */\n.eabi_attribute 25, 1   /* Tag_ABI_align_preserved */\n\n    .global    Image$$ARM_LIB_STACK$$ZI$$Limit\n\n\n    .section RESET, \"x\"\n    .align  2\n    .globl  __Vectors\n    .globl  __Vectors_End\n    .globl  __Vectors_Size\n__Vectors:\n    .long   Image$$ARM_LIB_STACK$$ZI$$Limit            /* Top of Stack */\n    .long   Reset_Handler         /* Reset Handler */\n    .long   NMI_Handler           /* NMI Handler */\n    .long   HardFault_Handler     /* Hard Fault Handler */\n    .long   MemManage_Handler     /* MPU Fault Handler */\n    .long   BusFault_Handler      /* Bus Fault Handler */\n    .long   UsageFault_Handler    /* Usage Fault Handler */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   0                     /* Reserved */\n    .long   SVC_Handler           /* SVCall Handler */\n    .long   DebugMon_Handler      /* Debug Monitor Handler */\n    .long   0                     /* Reserved */\n    .long   PendSV_Handler        /* PendSV Handler */\n    .long   SysTick_Handler       /* SysTick Handler */\n__Vectors_End:\n\n    .equ    __Vectors_Size, __Vectors_End - __Vectors\n\n\n    .text\n    .thumb\n    .align  2\n\n    .globl  Reset_Handler\n    .weak   Reset_Handler\n    .type   Reset_Handler, %function\n    .thumb_func\nReset_Handler:\n    bl      SystemInit\n    bl      __main\n\n    .globl  NMI_Handler\n    .weak   NMI_Handler\n    .type   NMI_Handler, %function\n    .thumb_func\nNMI_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  HardFault_Handler\n    .weak   HardFault_Handler\n    .type   HardFault_Handler, %function\n    .thumb_func\nHardFault_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  MemManage_Handler\n    .weak   MemManage_Handler\n    .type   MemManage_Handler, %function\n    .thumb_func\nMemManage_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  BusFault_Handler\n    .weak   BusFault_Handler\n    .type   BusFault_Handler, %function\n    .thumb_func\nBusFault_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  UsageFault_Handler\n    .weak   UsageFault_Handler\n    .type   UsageFault_Handler, %function\n    .thumb_func\nUsageFault_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  SVC_Handler\n    .weak   SVC_Handler\n    .type   SVC_Handler, %function\n    .thumb_func\nSVC_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  DebugMon_Handler\n    .weak   DebugMon_Handler\n    .type   DebugMon_Handler, %function\n    .thumb_func\nDebugMon_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  PendSV_Handler\n    .weak   PendSV_Handler\n    .type   PendSV_Handler, %function\n    .thumb_func\nPendSV_Handler:\n    bkpt    #0\n    b       .\n\n    .globl  SysTick_Handler\n    .weak   SysTick_Handler\n    .type   SysTick_Handler, %function\n    .thumb_func\nSysTick_Handler:\n    bkpt    #0\n    b       .\n\n    .end\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/Retarget.c",
    "content": "/*----------------------------------------------------------------------------\n * Name:    Retarget.c\n * Purpose: 'Retarget' layer for target-dependent low level functions\n * Note(s):\n *----------------------------------------------------------------------------\n * This file is part of the uVision/ARM development tools.\n * This software may only be used under the terms of a valid, current,\n * end user licence from KEIL for a compatible version of KEIL software\n * development tools. Nothing else gives you the right to use this software.\n *\n * This software is supplied \"AS IS\" without warranties of any kind.\n *\n * Copyright (c) 2012 Keil - An ARM Company. All rights reserved.\n *----------------------------------------------------------------------------*/\n\n#include <sys/stat.h>\n#include <string.h>\n#include <errno.h>\n\nint SER_PutChar (int c) {\n\n  return (c);\n}\n\nint SER_GetChar (void) {\n\n  return (-1);\n}\n\n/*-- GCC - Newlib runtime support --------------------------------------------*/\n\nextern int  __HeapBase;\nextern int  __HeapLimit;\n\nint _open (const char * path, int flags, ...) \n{\n  return (-1);\n}\n\nint _close (int fd) \n{\n  return (-1);\n}\n\nint _lseek (int fd, int ptr, int dir) \n{\n  return (0);\n}\n\nint __attribute__((weak)) _fstat (int fd, struct stat * st) \n{\n  memset (st, 0, sizeof (* st));\n  st->st_mode = S_IFCHR;\n  return (0);\n}\n\nint _isatty (int fd) \n{\n  return (1);\n}\n\nint _read (int fd, char * ptr, int len) \n{\n  char c;\n  int  i;\n\n  for (i = 0; i < len; i++) \n  {\n    c = SER_GetChar();\n    if (c == 0x0D) break;\n    *ptr++ = c;\n    SER_PutChar(c);\n  }\n  return (len - i);\n}\n\nint _write (int fd, char * ptr, int len) \n{\n  int i;\n\n  for (i = 0; i < len; i++) SER_PutChar (*ptr++);\n  return (i);\n}\n\ncaddr_t _sbrk (int incr) \n{\n  static char * heap;\n         char * prev_heap;\n\n  if (heap == NULL) \n  {\n    heap = (char *)&__HeapBase;\n  }\n  \n  prev_heap = heap;\n\n  if ((heap + incr) > (char *)&__HeapLimit) \n  {\n    errno = ENOMEM;\n    return (caddr_t) -1;\n  }\n  \n  heap += incr;\n\n  return (caddr_t) prev_heap;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv6-m.S",
    "content": "/* File: startup_armv6-m.S\n * Purpose: startup file for armv6-m architecture devices.\n *          Should be used with GCC for ARM Embedded Processors\n * Version: V2.00\n * Date: 16 November 2015\n *\n */\n/* Copyright (c) 2011 - 2015 ARM LIMITED\n\n   All rights reserved.\n   Redistribution and use in source and binary forms, with or without\n   modification, are permitted provided that the following conditions are met:\n   - Redistributions of source code must retain the above copyright\n     notice, this list of conditions and the following disclaimer.\n   - Redistributions in binary form must reproduce the above copyright\n     notice, this list of conditions and the following disclaimer in the\n     documentation and/or other materials provided with the distribution.\n   - Neither the name of ARM nor the names of its contributors may be used\n     to endorse or promote products derived from this software without\n     specific prior written permission.\n   *\n   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n   POSSIBILITY OF SUCH DAMAGE.\n   ---------------------------------------------------------------------------*/\n\n\n\t.syntax\tunified\n\t.arch\tarmv6-m\n\n\t.section .stack\n\t.align\t3\n#ifdef __STACK_SIZE\n\t.equ\tStack_Size, __STACK_SIZE\n#else\n\t.equ\tStack_Size, 0x00000400\n#endif\n\t.globl\t__StackTop\n\t.globl\t__StackLimit\n__StackLimit:\n\t.space\tStack_Size\n\t.size\t__StackLimit, . - __StackLimit\n__StackTop:\n\t.size\t__StackTop, . - __StackTop\n\n\t.section .heap\n\t.align\t3\n#ifdef __HEAP_SIZE\n\t.equ\tHeap_Size, __HEAP_SIZE\n#else\n\t.equ\tHeap_Size, 0x00000C00\n#endif\n\t.globl\t__HeapBase\n\t.globl\t__HeapLimit\n__HeapBase:\n\t.if\tHeap_Size\n\t.space\tHeap_Size\n\t.endif\n\t.size\t__HeapBase, . - __HeapBase\n__HeapLimit:\n\t.size\t__HeapLimit, . - __HeapLimit\n\n\t.section .vectors\n\t.align 2\n\t.globl\t__Vectors\n__Vectors:\n\t.long\t__StackTop            /* Top of Stack */\n\t.long\tReset_Handler         /* Reset Handler */\n\t.long\tNMI_Handler           /* NMI Handler */\n\t.long\tHardFault_Handler     /* Hard Fault Handler */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\tSVC_Handler           /* SVCall Handler */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\tPendSV_Handler        /* PendSV Handler */\n\t.long\tSysTick_Handler       /* SysTick Handler */\n\n\t.size\t__Vectors, . - __Vectors\n\n\t.text\n\t.thumb\n\t.thumb_func\n\t.align\t1\n\t.globl\tReset_Handler\n\t.type\tReset_Handler, %function\nReset_Handler:\n/*  Firstly it copies data from read only memory to RAM. There are two schemes\n *  to copy. One can copy more than one sections. Another can only copy\n *  one section.  The former scheme needs more instructions and read-only\n *  data to implement than the latter.\n *  Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes.  */\n\n#ifdef __STARTUP_COPY_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of triplets, each of which specify:\n *    offset 0: LMA of start of a section to copy from\n *    offset 4: VMA of start of a section to copy to\n *    offset 8: size of the section to copy. Must be multiply of 4\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n\tldr\tr4, =__copy_table_start__\n\tldr\tr5, =__copy_table_end__\n\n.L_loop0:\n\tcmp\tr4, r5\n\tbge\t.L_loop0_done\n\tldr\tr1, [r4]\n\tldr\tr2, [r4, #4]\n\tldr\tr3, [r4, #8]\n\n.L_loop0_0:\n\tsubs\tr3, #4\n\tblt\t.L_loop0_0_done\n\tldr\tr0, [r1, r3]\n\tstr\tr0, [r2, r3]\n\tb\t.L_loop0_0\n\n.L_loop0_0_done:\n\tadds\tr4, #12\n\tb\t.L_loop0\n\n.L_loop0_done:\n#else\n/*  Single section scheme.\n *\n *  The ranges of copy from/to are specified by following symbols\n *    __etext: LMA of start of the section to copy from. Usually end of text\n *    __data_start__: VMA of start of the section to copy to\n *    __data_end__: VMA of end of the section to copy to\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n\tldr\tr1, =__etext\n\tldr\tr2, =__data_start__\n\tldr\tr3, =__data_end__\n\n\tsubs\tr3, r2\n\tble\t.L_loop1_done\n\n.L_loop1:\n\tsubs\tr3, #4\n\tldr\tr0, [r1,r3]\n\tstr\tr0, [r2,r3]\n\tbgt\t.L_loop1\n\n.L_loop1_done:\n#endif /*__STARTUP_COPY_MULTIPLE */\n\n/*  This part of work usually is done in C library startup code. Otherwise,\n *  define this macro to enable it in this startup.\n *\n *  There are two schemes too. One can clear multiple BSS sections. Another\n *  can only clear one section. The former is more size expensive than the\n *  latter.\n *\n *  Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.\n *  Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later.\n */\n#ifdef __STARTUP_CLEAR_BSS_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of tuples specifying:\n *    offset 0: Start of a BSS section\n *    offset 4: Size of this BSS section. Must be multiply of 4\n */\n\tldr\tr3, =__zero_table_start__\n\tldr\tr4, =__zero_table_end__\n\n.L_loop2:\n\tcmp\tr3, r4\n\tbge\t.L_loop2_done\n\tldr\tr1, [r3]\n\tldr\tr2, [r3, #4]\n\tmovs\tr0, 0\n\n.L_loop2_0:\n\tsubs\tr2, #4\n\tblt\t.L_loop2_0_done\n\tstr\tr0, [r1, r2]\n\tb\t.L_loop2_0\n.L_loop2_0_done:\n\n\tadds\tr3, #8\n\tb\t.L_loop2\n.L_loop2_done:\n#elif defined (__STARTUP_CLEAR_BSS)\n/*  Single BSS section scheme.\n *\n *  The BSS section is specified by following symbols\n *    __bss_start__: start of the BSS section.\n *    __bss_end__: end of the BSS section.\n *\n *  Both addresses must be aligned to 4 bytes boundary.\n */\n\tldr\tr1, =__bss_start__\n\tldr\tr2, =__bss_end__\n\n\tmovs\tr0, 0\n\n\tsubs\tr2, r1\n\tble\t.L_loop3_done\n\n.L_loop3:\n\tsubs\tr2, #4\n\tstr\tr0, [r1, r2]\n\tbgt\t.L_loop3\n.L_loop3_done:\n#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */\n\n#ifndef __NO_SYSTEM_INIT\n\tbl\tSystemInit\n#endif\n\n#ifndef __START\n#define __START _start\n#endif\n\tbl\t__START\n\n\t.pool\n\t.size\tReset_Handler, . - Reset_Handler\n\n\t.align\t1\n\t.thumb_func\n\t.weak\tDefault_Handler\n\t.type\tDefault_Handler, %function\nDefault_Handler:\n    bkpt #0\n\tb\t.\n\t.size\tDefault_Handler, . - Default_Handler\n\n/*    Macro to define default handlers. Default handler\n *    will be weak symbol and just dead loops. They can be\n *    overwritten by other handlers */\n\t.macro\tdef_irq_handler\thandler_name\n\t.weak\t\\handler_name\n\t.set\t\\handler_name, Default_Handler\n\t.endm\n\n\tdef_irq_handler\tNMI_Handler\n\tdef_irq_handler\tHardFault_Handler\n\tdef_irq_handler\tSVC_Handler\n\tdef_irq_handler\tPendSV_Handler\n\tdef_irq_handler\tSysTick_Handler\n\n\t.end\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv7-m.S",
    "content": "/* File: startup_armv7-m.S\n * Purpose: startup file for armv7-m architecture devices.\n *          Should be used with GCC for ARM Embedded Processors\n * Version: V2.00\n * Date: 16 November 2015\n *\n */\n/* Copyright (c) 2011 - 2015 ARM LIMITED\n\n   All rights reserved.\n   Redistribution and use in source and binary forms, with or without\n   modification, are permitted provided that the following conditions are met:\n   - Redistributions of source code must retain the above copyright\n     notice, this list of conditions and the following disclaimer.\n   - Redistributions in binary form must reproduce the above copyright\n     notice, this list of conditions and the following disclaimer in the\n     documentation and/or other materials provided with the distribution.\n   - Neither the name of ARM nor the names of its contributors may be used\n     to endorse or promote products derived from this software without\n     specific prior written permission.\n   *\n   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n   POSSIBILITY OF SUCH DAMAGE.\n   ---------------------------------------------------------------------------*/\n\n\n\t.syntax\tunified\n\t.arch\tarmv7-m\n\n\t.section .stack\n\t.align\t3\n#ifdef __STACK_SIZE\n\t.equ\tStack_Size, __STACK_SIZE\n#else\n\t.equ\tStack_Size, 0x00000400\n#endif\n\t.globl\t__StackTop\n\t.globl\t__StackLimit\n__StackLimit:\n\t.space\tStack_Size\n\t.size\t__StackLimit, . - __StackLimit\n__StackTop:\n\t.size\t__StackTop, . - __StackTop\n\n\t.section .heap\n\t.align\t3\n#ifdef __HEAP_SIZE\n\t.equ\tHeap_Size, __HEAP_SIZE\n#else\n\t.equ\tHeap_Size, 0x00000C00\n#endif\n\t.globl\t__HeapBase\n\t.globl\t__HeapLimit\n__HeapBase:\n\t.if\tHeap_Size\n\t.space\tHeap_Size\n\t.endif\n\t.size\t__HeapBase, . - __HeapBase\n__HeapLimit:\n\t.size\t__HeapLimit, . - __HeapLimit\n\n\t.section .vectors\n\t.align\t2\n\t.globl\t__Vectors\n__Vectors:\n\t.long\t__StackTop            /* Top of Stack */\n\t.long\tReset_Handler         /* Reset Handler */\n\t.long\tNMI_Handler           /* NMI Handler */\n\t.long\tHardFault_Handler     /* Hard Fault Handler */\n\t.long\tMemManage_Handler     /* MPU Fault Handler */\n\t.long\tBusFault_Handler      /* Bus Fault Handler */\n\t.long\tUsageFault_Handler    /* Usage Fault Handler */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\t0                     /* Reserved */\n\t.long\tSVC_Handler           /* SVCall Handler */\n\t.long\tDebugMon_Handler      /* Debug Monitor Handler */\n\t.long\t0                     /* Reserved */\n\t.long\tPendSV_Handler        /* PendSV Handler */\n\t.long\tSysTick_Handler       /* SysTick Handler */\n\n\t.size\t__Vectors, . - __Vectors\n\n\t.text\n\t.thumb\n\t.thumb_func\n\t.align\t2\n\t.globl\tReset_Handler\n\t.type\tReset_Handler, %function\nReset_Handler:\n/*  Firstly it copies data from read only memory to RAM. There are two schemes\n *  to copy. One can copy more than one sections. Another can only copy\n *  one section.  The former scheme needs more instructions and read-only\n *  data to implement than the latter.\n *  Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes.  */\n\n#ifdef __STARTUP_COPY_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of triplets, each of which specify:\n *    offset 0: LMA of start of a section to copy from\n *    offset 4: VMA of start of a section to copy to\n *    offset 8: size of the section to copy. Must be multiply of 4\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n\tldr\tr4, =__copy_table_start__\n\tldr\tr5, =__copy_table_end__\n\n.L_loop0:\n\tcmp\tr4, r5\n\tbge\t.L_loop0_done\n\tldr\tr1, [r4]\n\tldr\tr2, [r4, #4]\n\tldr\tr3, [r4, #8]\n\n.L_loop0_0:\n\tsubs\tr3, #4\n\tittt\tge\n\tldrge\tr0, [r1, r3]\n\tstrge\tr0, [r2, r3]\n\tbge\t.L_loop0_0\n\n\tadds\tr4, #12\n\tb\t.L_loop0\n\n.L_loop0_done:\n#else\n/*  Single section scheme.\n *\n *  The ranges of copy from/to are specified by following symbols\n *    __etext: LMA of start of the section to copy from. Usually end of text\n *    __data_start__: VMA of start of the section to copy to\n *    __data_end__: VMA of end of the section to copy to\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n\tldr\tr1, =__etext\n\tldr\tr2, =__data_start__\n\tldr\tr3, =__data_end__\n\n.L_loop1:\n\tcmp\tr2, r3\n\tittt\tlt\n\tldrlt\tr0, [r1], #4\n\tstrlt\tr0, [r2], #4\n\tblt\t.L_loop1\n#endif /*__STARTUP_COPY_MULTIPLE */\n\n/*  This part of work usually is done in C library startup code. Otherwise,\n *  define this macro to enable it in this startup.\n *\n *  There are two schemes too. One can clear multiple BSS sections. Another\n *  can only clear one section. The former is more size expensive than the\n *  latter.\n *\n *  Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.\n *  Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later.\n */\n#ifdef __STARTUP_CLEAR_BSS_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of tuples specifying:\n *    offset 0: Start of a BSS section\n *    offset 4: Size of this BSS section. Must be multiply of 4\n */\n\tldr\tr3, =__zero_table_start__\n\tldr\tr4, =__zero_table_end__\n\n.L_loop2:\n\tcmp\tr3, r4\n\tbge\t.L_loop2_done\n\tldr\tr1, [r3]\n\tldr\tr2, [r3, #4]\n\tmovs\tr0, 0\n\n.L_loop2_0:\n\tsubs\tr2, #4\n\titt\tge\n\tstrge\tr0, [r1, r2]\n\tbge\t.L_loop2_0\n\n\tadds\tr3, #8\n\tb\t.L_loop2\n.L_loop2_done:\n#elif defined (__STARTUP_CLEAR_BSS)\n/*  Single BSS section scheme.\n *\n *  The BSS section is specified by following symbols\n *    __bss_start__: start of the BSS section.\n *    __bss_end__: end of the BSS section.\n *\n *  Both addresses must be aligned to 4 bytes boundary.\n */\n\tldr\tr1, =__bss_start__\n\tldr\tr2, =__bss_end__\n\n\tmovs\tr0, 0\n.L_loop3:\n\tcmp\tr1, r2\n\titt\tlt\n\tstrlt\tr0, [r1], #4\n\tblt\t.L_loop3\n#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */\n\n#ifndef __NO_SYSTEM_INIT\n\tbl\tSystemInit\n#endif\n\n#ifndef __START\n#define __START _start\n#endif\n\tbl\t__START\n\n\t.pool\n\t.size\tReset_Handler, . - Reset_Handler\n\n\t.align\t1\n\t.thumb_func\n\t.weak\tDefault_Handler\n\t.type\tDefault_Handler, %function\nDefault_Handler:\n    bkpt #0\n\tb\t.\n\t.size\tDefault_Handler, . - Default_Handler\n\n/*    Macro to define default handlers. Default handler\n *    will be weak symbol and just dead loops. They can be\n *    overwritten by other handlers */\n\t.macro\tdef_irq_handler\thandler_name\n\t.weak\t\\handler_name\n\t.set\t\\handler_name, Default_Handler\n\t.endm\n\n\tdef_irq_handler\tNMI_Handler\n\tdef_irq_handler\tHardFault_Handler\n\tdef_irq_handler\tMemManage_Handler\n\tdef_irq_handler\tBusFault_Handler\n\tdef_irq_handler\tUsageFault_Handler\n\tdef_irq_handler\tSVC_Handler\n\tdef_irq_handler\tDebugMon_Handler\n\tdef_irq_handler\tPendSV_Handler\n\tdef_irq_handler\tSysTick_Handler\n\n\t.end\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/startup_generic.S",
    "content": "\n#if defined (__CC_ARM)\n  #if   (defined (ARMCM0))\n    #include \"ARMCC\\startup_armv6-m.s\"\n  #elif (defined (ARMCM0P) || defined (ARMCM0P_MPU))\n    #include \"ARMCC\\startup_armv6-m.s\"\n  #elif (defined (ARMCM3))\n    #include \"ARMCC\\startup_armv7-m.s\"\n  #elif (defined (ARMCM4) || defined (ARMCM4_FP))\n    #include \"ARMCC\\startup_armv7-m.s\"\n  #elif (defined (ARMCM7) || defined (ARMCM7_SP) || defined (ARMCM7_DP))\n    #include \"ARMCC\\startup_armv7-m.s\"\n  #elif (defined (ARMv8MBL))\n    #include \"ARMCC\\startup_armv6-m.s\"\n  #elif (defined (ARMv8MML)    || defined (ARMv8MML_DSP)    || \\\n         defined (ARMv8MML_SP) || defined (ARMv8MML_DSP_SP) || \\\n         defined (ARMv8MML_DP) || defined (ARMv8MML_DSP_DP)   )\n    #include \"ARMCC\\startup_armv7-m.s\"\n  #else\n    #error \"No appropriate startup file found!\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if   (defined (ARMCM0))\n    #include \"ARMCLANG\\startup_armv6-m.S\"\n  #elif (defined (ARMCM0P) || defined (ARMCM0P_MPU))\n    #include \"ARMCLANG\\startup_armv6-m.S\"\n  #elif (defined (ARMCM3))\n    #include \"ARMCLANG\\startup_armv7-m.S\"\n  #elif (defined (ARMCM4) || defined (ARMCM4_FP))\n    #include \"ARMCLANG\\startup_armv7-m.S\"\n  #elif (defined (ARMCM7) || defined (ARMCM7_SP) || defined (ARMCM7_DP))\n    #include \"ARMCLANG\\startup_armv7-m.S\"\n  #elif (defined (ARMv8MBL))\n    #include \"ARMCLANG\\startup_armv6-m.S\"\n  #elif (defined (ARMv8MML)    || defined (ARMv8MML_DSP)    || \\\n         defined (ARMv8MML_SP) || defined (ARMv8MML_DSP_SP) || \\\n         defined (ARMv8MML_DP) || defined (ARMv8MML_DSP_DP)   )\n    #include \"ARMCLANG\\startup_armv7-m.S\"\n  #else\n    #error \"No appropriate startup file found!\"\n  #endif\n\n#elif defined (__GNUC__)\n  #if   (defined (ARMCM0))\n    #include \"GCC\\startup_armv6-m.S\"\n  #elif (defined (ARMCM0P) || defined (ARMCM0P_MPU))\n    #include \"GCC\\startup_armv6-m.S\"\n  #elif (defined (ARMCM3))\n    #include \"GCC\\startup_armv7-m.S\"\n  #elif (defined (ARMCM4) || defined (ARMCM4_FP))\n    #include \"GCC\\startup_armv7-m.S\"\n  #elif (defined (ARMCM7) || defined (ARMCM7_SP) || defined (ARMCM7_DP))\n    #include \"GCC\\startup_armv7-m.S\"\n  #elif (defined (ARMv8MBL))\n    #include \"GCC\\startup_armv6-m.S\"\n  #elif (defined (ARMv8MML)    || defined (ARMv8MML_DSP)    || \\\n         defined (ARMv8MML_SP) || defined (ARMv8MML_DSP_SP) || \\\n         defined (ARMv8MML_DP) || defined (ARMv8MML_DSP_DP)   )\n    #include \"GCC\\startup_armv7-m.S\"\n  #else\n    #error \"No appropriate startup file found!\"\n  #endif\n\n#else\n  #error \"Compiler not supported!\"\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM23.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM23.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM23 Device Series\n * @version  V5.00\n * @date     21. October 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM23)\n  #include \"ARMCM23.h\"\n#elif defined (ARMCM23_TZ)\n  #include \"ARMCM23_TZ.h\"\n\n  #if defined (__ARM_FEATURE_CMSE) &&  (__ARM_FEATURE_CMSE == 3U)\n    #include \"partition_ARMCM23.h\"\n  #endif\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  TZ_SAU_Setup();\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM33.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM33.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM33 Device Series\n * @version  V5.00\n * @date     02. November 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM33)\n  #include \"ARMCM33.h\"\n#elif defined (ARMCM33_TZ)\n  #include \"ARMCM33_TZ.h\"\n\n  #if defined (__ARM_FEATURE_CMSE) &&  (__ARM_FEATURE_CMSE == 3U)\n    #include \"partition_ARMCM33.h\"\n  #endif\n#elif defined (ARMCM33_DSP_FP)\n  #include \"ARMCM33_DSP_FP.h\"\n#elif defined (ARMCM33_DSP_FP_TZ)\n  #include \"ARMCM33_DSP_FP_TZ.h\"\n\n  #if defined (__ARM_FEATURE_CMSE) &&  (__ARM_FEATURE_CMSE == 3U)\n    #include \"partition_ARMCM33.h\"\n  #endif\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* set CP10 Full Access */\n                 (3U << 11U*2U)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  TZ_SAU_Setup();\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* set CP10 Full Access */\n                 (3U << 11U*2U)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* set CP10 Full Access */\n                 (3U << 11U*2U)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC000.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMSC000.c\n * @brief    CMSIS Device System Source File for\n *           for ARMSC000 Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMSC000.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC300.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMSC300.c\n * @brief    CMSIS Device System Source File for\n *           ARMSC300 Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMSC300.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MBL.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMv8MBL.c\n * @brief    CMSIS Device System Source File for\n *           ARMv8MBL Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMv8MBL.h\"\n\n#if defined (__ARM_FEATURE_CMSE) &&  (__ARM_FEATURE_CMSE == 3U)\n  #include \"partition_ARMv8MBL.h\"\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  TZ_SAU_Setup();\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MML.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMv8MML.c\n * @brief    CMSIS Device System Source File for\n *           ARMv8MML Device Series\n * @version  V5.00\n * @date     02. November 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMv8MML)\n  #include \"ARMv8MML.h\"\n#elif defined (ARMv8MML_DSP)\n  #include \"ARMv8MML_DSP.h\"\n#elif defined (ARMv8MML_SP)\n  #include \"ARMv8MML_SP.h\"\n#elif defined (ARMv8MML_DSP_SP)\n  #include \"ARMv8MML_DSP_SP.h\"\n#elif defined (ARMv8MML_DP)\n  #include \"ARMv8MML_DP.h\"\n#elif defined (ARMv8MML_DSP_DP)\n  #include \"ARMv8MML_DSP_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n#if defined (__ARM_FEATURE_CMSE) &&  (__ARM_FEATURE_CMSE == 3U)\n  #include \"partition_ARMv8MML.h\"\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* set CP10 Full Access */\n                 (3U << 11U*2U)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  TZ_SAU_Setup();\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_generic.c",
    "content": "\n#if   (defined (ARMCM0))\n  #include \"system_ARMCM0.c\"\n\n#elif (defined (ARMCM0P))\n  #include \"system_ARMCM0plus.c\"\n\n#elif (defined (ARMCM3))\n  #include \"system_ARMCM3.c\"\n\n#elif (defined (ARMCM4) || defined (ARMCM4_FP))\n  #include \"system_ARMCM4.c\"\n\n#elif (defined (ARMCM7) || defined (ARMCM7_SP) || defined (ARMCM7_DP))\n  #include \"system_ARMCM7.c\"\n\n#elif defined (ARMv8MBL)\n  #include \"system_ARMv8MBL.c\"\n\n#elif (defined (ARMv8MML)    || defined (ARMv8MML_DSP)    || \\\n       defined (ARMv8MML_SP) || defined (ARMv8MML_DSP_SP) || \\\n       defined (ARMv8MML_DP) || defined (ARMv8MML_DSP_DP)   )\n  #include \"system_ARMv8MML.c\"\n\n#else\n  #error \"No appropriate system file found!\"\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/all_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_group.h\"\n#include \"complex_math_test_group.h\"\n#include \"controller_test_group.h\"\n#include \"fast_math_test_group.h\"\n#include \"filtering_test_group.h\"\n#include \"matrix_test_group.h\"\n#include \"statistics_test_group.h\"\n#include \"support_test_group.h\"\n#include \"transform_test_group.h\"\n#include \"intrinsics_test_group.h\"\n\nJTEST_DEFINE_GROUP(all_tests)\n{\n  /*\n    To skip a test, comment it out\n  */\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_BASICMATH_TESTS)\n  JTEST_GROUP_CALL(basic_math_tests);\n#endif \n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_COMPLEXMATH_TESTS)\n  JTEST_GROUP_CALL(complex_math_tests);\n#endif\n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_CONTROLLER_TESTS)\n  JTEST_GROUP_CALL(controller_tests);\n#endif\n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_FASTMATH_TESTS)\n  JTEST_GROUP_CALL(fast_math_tests);\n#endif\n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_FILTERING_TESTS)\n  /* Biquad df2T_f32 will fail with Neon. The test must be updated.\n  Neon implementation is requiring a different initialization.\n  */\n  JTEST_GROUP_CALL(filtering_tests);\n#endif\n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_MATRIX_TESTS)\n  JTEST_GROUP_CALL(matrix_tests);\n#endif \n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_STATISTICS_TESTS)\n  JTEST_GROUP_CALL(statistics_tests);\n#endif()\n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_SUPPORT_TESTS)\n  JTEST_GROUP_CALL(support_tests);\n#endif\n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_TRANSFORM_TESTS)\n  JTEST_GROUP_CALL(transform_tests);\n#endif\n\n#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_INTRINSICS_TESTS)\n  JTEST_GROUP_CALL(intrinsics_tests);\n#endif\n\n  return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/abs_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_ABS_TEST(suffix)              \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        abs,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix))\n    \nJTEST_ARM_ABS_TEST(f32);\nJTEST_ARM_ABS_TEST(q31);\nJTEST_ARM_ABS_TEST(q15);\nJTEST_ARM_ABS_TEST(q7 );\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(abs_tests)\n{\n    JTEST_TEST_CALL(arm_abs_f32_test);\n    JTEST_TEST_CALL(arm_abs_q31_test);\n    JTEST_TEST_CALL(arm_abs_q15_test);\n    JTEST_TEST_CALL(arm_abs_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/add_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_ADD_TEST(suffix)              \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(   \\\n        add,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        BASIC_MATH_COMPARE_INTERFACE)\n\nJTEST_ARM_ADD_TEST(f32);\nJTEST_ARM_ADD_TEST(q31);\nJTEST_ARM_ADD_TEST(q15);\nJTEST_ARM_ADD_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(add_tests)\n{\n    JTEST_TEST_CALL(arm_add_f32_test);\n    JTEST_TEST_CALL(arm_add_q31_test);\n    JTEST_TEST_CALL(arm_add_q15_test);\n    JTEST_TEST_CALL(arm_add_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_common_data.c",
    "content": "#include \"basic_math_test_data.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(BASIC_MATH_BIGGEST_INPUT_TYPE,\n                basic_math_output_fut,\n                BASIC_MATH_MAX_INPUT_ELEMENTS,\n                CURLY(0));\n\nARR_DESC_DEFINE(BASIC_MATH_BIGGEST_INPUT_TYPE,\n                basic_math_output_ref,\n                BASIC_MATH_MAX_INPUT_ELEMENTS,\n                CURLY(0));\n\nBASIC_MATH_BIGGEST_INPUT_TYPE\nbasic_math_output_f32_ref[BASIC_MATH_MAX_INPUT_ELEMENTS];\n\nBASIC_MATH_BIGGEST_INPUT_TYPE\nbasic_math_output_f32_fut[BASIC_MATH_MAX_INPUT_ELEMENTS];\n\n/*--------------------------------------------------------------------------------*/\n/* Block Sizes */\n/*--------------------------------------------------------------------------------*/\n\n/* \n  To change test parameter values add/remove values inside CURLY and update \n  the preceeding parameter to reflect the number of values inside CURLY. \n*/\n\nARR_DESC_DEFINE(uint32_t,\n                basic_math_block_sizes,\n                4,\n                CURLY( 2, 7, 15, 32));\n\n/*--------------------------------------------------------------------------------*/\n/* Numbers */\n/*--------------------------------------------------------------------------------*/\n\n/* \n  To change test parameter values add/remove values inside CURLY and update \n  the preceeding parameter to reflect the number of values inside CURLY. \n*/\n\nARR_DESC_DEFINE(uint32_t,\n                basic_math_elts,\n                4,\n                CURLY( 0, 1, 0x80000000, 0x7fffffff));\n\nARR_DESC_DEFINE(int8_t,\n                basic_math_elts2,\n                5,\n                CURLY( 0, 3, -3, -7, 7));\n\nARR_DESC_DEFINE(float32_t,\n                basic_math_eltsf,\n                6,\n                CURLY( 0.0f, 1.0f, 1.254001, -1.665584, -127.435646, 245.34634267));\n\n/*--------------------------------------------------------------------------------*/\n/* Test Data */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(float32_t,\n                basic_math_f_32,\n                32,\n                CURLY(\n                      -0.432565, -1.665584,  0.125332,  0.287676, -1.146471,\n                       1.190915,  1.189164, -0.037633,  0.327292,  0.174639,\n                      -0.186709,  0.725791, -0.588317,  2.183186, -0.136396,\n                       0.113931,  1.066768,  0.059281, -0.095648, -0.832349,\n                       0.294411, -1.336182,  0.714325,  1.623562, -0.691776,\n                       0.857997,  1.254001, -1.593730, -1.440964,  0.571148,\n                      -0.399886,  0.689997\n                      ));\n\n/* Alias the 32 element array with wrappers that end sooner. */\nARR_DESC_DEFINE_SUBSET(basic_math_f_15,\n                       basic_math_f_32,\n                       15);\n\nARR_DESC_DEFINE_SUBSET(basic_math_f_2,\n                       basic_math_f_32,\n                       2);\n\nARR_DESC_DEFINE(float32_t,\n                basic_math_zeros,\n                32,\n                CURLY(0));\n\n/* Aggregate all float datasets. */\nARR_DESC_DEFINE(ARR_DESC_t *,\n                basic_math_f_all,\n                4,\n                CURLY(\n                      &basic_math_zeros,\n                      &basic_math_f_2,\n                      &basic_math_f_15,\n                      &basic_math_f_32\n                      ));\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_tests.h\"\n\nJTEST_DEFINE_GROUP(basic_math_tests)\n{\n    JTEST_GROUP_CALL(abs_tests);\n    JTEST_GROUP_CALL(add_tests);\n    JTEST_GROUP_CALL(dot_prod_tests);\n    JTEST_GROUP_CALL(mult_tests);\n    JTEST_GROUP_CALL(negate_tests);\n    JTEST_GROUP_CALL(offset_tests);\n    JTEST_GROUP_CALL(scale_tests); \n    JTEST_GROUP_CALL(shift_tests);\n    JTEST_GROUP_CALL(sub_tests);\n\n    return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/dot_prod_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_DOT_PROD_TEST(suffix)         \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(   \\\n        dot_prod,                               \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        BASIC_MATH_SNR_ELT1_COMPARE_INTERFACE)\n\nJTEST_ARM_DOT_PROD_TEST(f32);\nJTEST_ARM_DOT_PROD_TEST(q31);\nJTEST_ARM_DOT_PROD_TEST(q15);\nJTEST_ARM_DOT_PROD_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(dot_prod_tests)\n{\n    JTEST_TEST_CALL(arm_dot_prod_f32_test);\n    JTEST_TEST_CALL(arm_dot_prod_q31_test);\n    JTEST_TEST_CALL(arm_dot_prod_q15_test);\n    JTEST_TEST_CALL(arm_dot_prod_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/mult_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MULT_TEST(suffix, compare_interface)  \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(   \\\n        mult,                                   \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        compare_interface)\n\nJTEST_ARM_MULT_TEST(f32, BASIC_MATH_COMPARE_INTERFACE);\nJTEST_ARM_MULT_TEST(q31, BASIC_MATH_SNR_COMPARE_INTERFACE);\nJTEST_ARM_MULT_TEST(q15, BASIC_MATH_COMPARE_INTERFACE);\nJTEST_ARM_MULT_TEST(q7 , BASIC_MATH_COMPARE_INTERFACE);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mult_tests)\n{\n    JTEST_TEST_CALL(arm_mult_f32_test);\n    JTEST_TEST_CALL(arm_mult_q31_test);\n    JTEST_TEST_CALL(arm_mult_q15_test);\n    JTEST_TEST_CALL(arm_mult_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/negate_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_NEGATE_TEST(suffix)           \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        negate,                                 \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix))\n    \nJTEST_ARM_NEGATE_TEST(f32);\nJTEST_ARM_NEGATE_TEST(q31);\nJTEST_ARM_NEGATE_TEST(q15);\nJTEST_ARM_NEGATE_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(negate_tests)\n{\n    JTEST_TEST_CALL(arm_negate_f32_test);\n    JTEST_TEST_CALL(arm_negate_q31_test);\n    JTEST_TEST_CALL(arm_negate_q15_test);\n    JTEST_TEST_CALL(arm_negate_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/offset_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_OFFSET_TEST(suffix)               \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK(  \\\n        offset,                                     \\\n        suffix,                                     \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        TYPE_FROM_ABBREV(suffix))\n\nJTEST_ARM_OFFSET_TEST(f32);\nJTEST_ARM_OFFSET_TEST(q31);\nJTEST_ARM_OFFSET_TEST(q15);\nJTEST_ARM_OFFSET_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(offset_tests)\n{\n    JTEST_TEST_CALL(arm_offset_f32_test);\n    JTEST_TEST_CALL(arm_offset_q31_test);\n    JTEST_TEST_CALL(arm_offset_q15_test);\n    JTEST_TEST_CALL(arm_offset_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/scale_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n\n#define JTEST_ARM_SCALE_TEST(suffix)                \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT2_BLK(  \\\n        scale,                                      \\\n        suffix,                                     \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        TYPE_FROM_ABBREV(suffix), /*elt1_type*/     \\\n        int8_t, /*elt2_type*/                       \\\n        TYPE_FROM_ABBREV(suffix))\n\n/* float32_t defined separately because it has less arguments */\nJTEST_DEFINE_TEST(arm_scale_f32_test,\n                  arm_scale_f32)\n{\n    TEST_TEMPLATE_BUF1_ELT1_BLK(\n        basic_math_f_all,\n        basic_math_eltsf,\n        basic_math_block_sizes,\n        float32_t,\n        float32_t,\n        float32_t,\n        arm_scale_f32,\n        ARM_scale_float_INPUT_INTERFACE,\n        ref_scale_f32,\n        REF_scale_float_INPUT_INTERFACE,\n        BASIC_MATH_COMPARE_INTERFACE);\n}\n\nJTEST_ARM_SCALE_TEST(q31);\nJTEST_ARM_SCALE_TEST(q15);\nJTEST_ARM_SCALE_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(scale_tests)\n{\n    JTEST_TEST_CALL(arm_scale_f32_test);\n    JTEST_TEST_CALL(arm_scale_q31_test);\n    JTEST_TEST_CALL(arm_scale_q15_test);\n    JTEST_TEST_CALL(arm_scale_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/shift_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_SHIFT_TEST(suffix)                \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK(  \\\n        shift,                                      \\\n        suffix,                                     \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        int8_t, /*elt_type*/                        \\\n        TYPE_FROM_ABBREV(suffix))\n\nJTEST_ARM_SHIFT_TEST(q31);\nJTEST_ARM_SHIFT_TEST(q15);\nJTEST_ARM_SHIFT_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(shift_tests)\n{\n    JTEST_TEST_CALL(arm_shift_q31_test);\n    JTEST_TEST_CALL(arm_shift_q15_test);\n    JTEST_TEST_CALL(arm_shift_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/sub_tests.c",
    "content": "#include \"jtest.h\"\n#include \"basic_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"basic_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_SUB_TEST(suffix)              \\\n    BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(   \\\n        sub,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        BASIC_MATH_COMPARE_INTERFACE)\n\nJTEST_ARM_SUB_TEST(f32);\nJTEST_ARM_SUB_TEST(q31);\nJTEST_ARM_SUB_TEST(q15);\nJTEST_ARM_SUB_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(sub_tests)\n{\n    JTEST_TEST_CALL(arm_sub_f32_test);\n    JTEST_TEST_CALL(arm_sub_q31_test);\n    JTEST_TEST_CALL(arm_sub_q15_test);\n    JTEST_TEST_CALL(arm_sub_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_conj_tests.c",
    "content": "#include \"jtest.h\"\n#include \"complex_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"complex_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_CMPLX_CONJ_TEST(suffix)           \\\n    COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(     \\\n        cmplx_conj,                                 \\\n        suffix,                                     \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE)\n\nJTEST_ARM_CMPLX_CONJ_TEST(f32);\nJTEST_ARM_CMPLX_CONJ_TEST(q31);\nJTEST_ARM_CMPLX_CONJ_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cmplx_conj_tests)\n{\n    JTEST_TEST_CALL(arm_cmplx_conj_f32_test);\n    JTEST_TEST_CALL(arm_cmplx_conj_q31_test);\n    JTEST_TEST_CALL(arm_cmplx_conj_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_dot_prod_tests.c",
    "content": "#include \"jtest.h\"\n#include \"complex_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"complex_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_CMPLX_DOT_PROD_TEST(suffix, comparison_interface) \\\n    COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(                     \\\n        cmplx_dot_prod,                                             \\\n        suffix,                                                     \\\n        TYPE_FROM_ABBREV(suffix),                                   \\\n        TYPE_FROM_ABBREV(suffix),                                   \\\n        comparison_interface)\n\nJTEST_ARM_CMPLX_DOT_PROD_TEST(f32, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE);\nJTEST_ARM_CMPLX_DOT_PROD_TEST(q31, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE);\nJTEST_ARM_CMPLX_DOT_PROD_TEST(q15, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cmplx_dot_prod_tests)\n{\n    JTEST_TEST_CALL(arm_cmplx_dot_prod_f32_test);\n    JTEST_TEST_CALL(arm_cmplx_dot_prod_q31_test);\n    JTEST_TEST_CALL(arm_cmplx_dot_prod_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_squared_tests.c",
    "content": "#include \"jtest.h\"\n#include \"complex_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"complex_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_CMPLX_MAG_SQUARED_TEST(suffix)    \\\n    COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(     \\\n        cmplx_mag_squared,                          \\\n        suffix,                                     \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        COMPLEX_MATH_COMPARE_RE_INTERFACE)\n\nJTEST_ARM_CMPLX_MAG_SQUARED_TEST(f32);\nJTEST_ARM_CMPLX_MAG_SQUARED_TEST(q31);\nJTEST_ARM_CMPLX_MAG_SQUARED_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cmplx_mag_squared_tests)\n{\n    JTEST_TEST_CALL(arm_cmplx_mag_squared_f32_test);\n    JTEST_TEST_CALL(arm_cmplx_mag_squared_q31_test);\n    JTEST_TEST_CALL(arm_cmplx_mag_squared_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_tests.c",
    "content": "#include \"jtest.h\"\n#include \"complex_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"complex_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_CMPLX_MAG_TEST(suffix, comparison_interface)  \\\n    COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(                 \\\n        cmplx_mag,                                              \\\n        suffix,                                                 \\\n        TYPE_FROM_ABBREV(suffix),                               \\\n        TYPE_FROM_ABBREV(suffix),                               \\\n        comparison_interface)\n\nJTEST_ARM_CMPLX_MAG_TEST(f32, COMPLEX_MATH_COMPARE_RE_INTERFACE);\nJTEST_ARM_CMPLX_MAG_TEST(q31, COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE);\nJTEST_ARM_CMPLX_MAG_TEST(q15, COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cmplx_mag_tests)\n{\n    JTEST_TEST_CALL(arm_cmplx_mag_f32_test);\n    JTEST_TEST_CALL(arm_cmplx_mag_q31_test);\n    JTEST_TEST_CALL(arm_cmplx_mag_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_cmplx_tests.c",
    "content": "#include \"jtest.h\"\n#include \"complex_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"complex_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_CMPLX_MULT_CMPLX_TEST(suffix) \\\n    COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \\\n        cmplx_mult_cmplx,                       \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        COMPLEX_MATH_COMPARE_CMPLX_INTERFACE)\n\nJTEST_ARM_CMPLX_MULT_CMPLX_TEST(f32);\nJTEST_ARM_CMPLX_MULT_CMPLX_TEST(q31);\nJTEST_ARM_CMPLX_MULT_CMPLX_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cmplx_mult_cmplx_tests)\n{\n    JTEST_TEST_CALL(arm_cmplx_mult_cmplx_f32_test);\n    JTEST_TEST_CALL(arm_cmplx_mult_cmplx_q31_test);\n    JTEST_TEST_CALL(arm_cmplx_mult_cmplx_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_real_test.c",
    "content": "#include \"jtest.h\"\n#include \"complex_math_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"complex_math_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_CMPLX_MULT_REAL_TEST(suffix, comparison_interface)    \\\n    COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(                         \\\n        cmplx_mult_real,                                                \\\n        suffix,                                                         \\\n        TYPE_FROM_ABBREV(suffix),                                       \\\n        TYPE_FROM_ABBREV(suffix),                                       \\\n        comparison_interface)\n\nJTEST_ARM_CMPLX_MULT_REAL_TEST(f32, COMPLEX_MATH_COMPARE_CMPLX_INTERFACE);\nJTEST_ARM_CMPLX_MULT_REAL_TEST(q31, COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE);\nJTEST_ARM_CMPLX_MULT_REAL_TEST(q15, COMPLEX_MATH_COMPARE_CMPLX_INTERFACE);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cmplx_mult_real_tests)\n{\n    JTEST_TEST_CALL(arm_cmplx_mult_real_f32_test);\n    JTEST_TEST_CALL(arm_cmplx_mult_real_q31_test);\n    JTEST_TEST_CALL(arm_cmplx_mult_real_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_common_data.c",
    "content": "#include \"complex_math_test_data.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,\n                complex_math_output_fut_a,\n                COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,\n                CURLY(0));\n\nARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,\n                complex_math_output_fut_b,\n                COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,\n                CURLY(0));\n\nARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,\n                complex_math_output_ref_a,\n                COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,\n                CURLY(0));\n\n\nARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,\n                complex_math_output_ref_b,\n                COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,\n                CURLY(0));\n\n\nCOMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_ref_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\nCOMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_ref_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\nCOMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_fut_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\nCOMPLEX_MATH_BIGGEST_INPUT_TYPE\ncomplex_math_output_f32_fut_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];\n\n/*--------------------------------------------------------------------------------*/\n/* Block Sizes */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(uint32_t,\n                complex_math_block_sizes,\n                4,\n                CURLY(1, 2, 15, 32));\n\n/*--------------------------------------------------------------------------------*/\n/* Test Data */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(float32_t,\n                complex_math_f_32,\n                32 * 2 /*Complex data has two parts*/,\n                CURLY(\n                      -0.432564811528220680 ,\t0.815622288876143300,\t\n                      -1.665584378238097000 ,\t0.711908323500893280,\t\n                      0.125332306474830680  ,\t1.290249754932477000,\t\n                      0.287676420358548850  ,\t0.668600505682040320,\t\n                      -1.146471350681463700 ,\t1.190838074243369100,\t\n                      1.190915465642998800  ,\t-1.202457114773944000,\t\n                      1.189164201652103100  ,\t-0.019789557768770449,\t\n                      -0.037633276593317645 ,\t-0.156717298831980680,\t\n                      0.327292361408654140  ,\t-1.604085562001158500,\t\n                      0.174639142820924520  ,\t0.257304234677489860,\t\n                      -0.186708577681439360 ,\t-1.056472928081482400,\t\n                      0.725790548293302700  ,\t1.415141485872338600,\t\n                      -0.588316543014188680 ,\t-0.805090404196879830,\t\n                      2.183185818197101100  ,\t0.528743010962224870,\t\n                      -0.136395883086595700 ,\t0.219320672667622370,\t\n                      0.113931313520809620  ,\t-0.921901624355539130,\t\n                      1.066768211359188800  ,\t-2.170674494305262500,\t\n                      0.059281460523605348  ,\t-0.059187824521191180,\t\n                      -0.095648405483669041 ,\t-1.010633706474247400,\t\n                      -0.832349463650022490 ,\t0.614463048895480980,\t\n                      0.294410816392640380  ,\t0.507740785341985520,\t\n                      -1.336181857937804000 ,\t1.692429870190521400,\t\n                      0.714324551818952160  ,\t0.591282586924175900,\t\n                      1.623562064446270700  ,\t-0.643595202682526120,\t\n                      -0.691775701702286750 ,\t0.380337251713910140,\t\n                      0.857996672828262640  ,\t-1.009115524340785000,\t\n                      1.254001421602532400  ,\t-0.019510669530289293,\t\n                      -1.593729576447476800 ,\t-0.048220789145312269,\t\n                      -1.440964431901020000 ,\t0.000043191841625545,\t\n                      0.571147623658177950  ,\t-0.317859451247687890,\t\n                      -0.399885577715363150 ,\t1.095003738787492500,\t\n                      0.689997375464345140  ,\t-1.873990257640960800\n                      ));\n\nARR_DESC_DEFINE_SUBSET(complex_math_f_15,\n                       complex_math_f_32,\n                       15 * 2 /*Complex data has two parts*/);\n\nARR_DESC_DEFINE_SUBSET(complex_math_f_2,\n                       complex_math_f_32,\n                       2 * 2 /*Complex data has two parts*/);\n\nARR_DESC_DEFINE(float32_t,\n                complex_math_zeros,\n                32 * 2 /*Complex data has two parts*/,\n                CURLY(0));\n\n/* Aggregate all float datasets */\nARR_DESC_DEFINE(ARR_DESC_t *,\n                complex_math_f_all,\n                4,\n                CURLY(\n                      &complex_math_zeros,\n                      &complex_math_f_2,\n                      &complex_math_f_15,\n                      &complex_math_f_32\n                      ));\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"complex_math_tests.h\"\n\nJTEST_DEFINE_GROUP(complex_math_tests)\n{\n    JTEST_GROUP_CALL(cmplx_conj_tests);\n    JTEST_GROUP_CALL(cmplx_dot_prod_tests);\n    JTEST_GROUP_CALL(cmplx_mag_tests);\n    JTEST_GROUP_CALL(cmplx_mag_squared_tests);\n    JTEST_GROUP_CALL(cmplx_mult_cmplx_tests);\n    JTEST_GROUP_CALL(cmplx_mult_real_tests);\n    \n    return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_common_data.c",
    "content": "#include \"controller_test_data.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nfloat32_t controller_output_fut[CONTROLLER_MAX_LEN] = {0};\nfloat32_t controller_output_ref[CONTROLLER_MAX_LEN] = {0};\nfloat32_t controller_output_f32_fut[CONTROLLER_MAX_LEN] = {0};\nfloat32_t controller_output_f32_ref[CONTROLLER_MAX_LEN] = {0};\n\nconst q31_t controller_q31_inputs[CONTROLLER_MAX_LEN] =\n{\n\t\t0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB, 0x41F6F6A,\n\t\t0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8, 0x3D060524, 0x93D5E570,\n\t\t0x97D7791D, 0xFFE0C38C, 0x26749841, 0xC0A6EE54, 0x218EC386, 0x39FF3726,\n\t\t0x8DC1F7CA, 0x702F2CF5, 0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49,\n\t\t0x3805DE7E, 0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF,\n\t\t0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24, 0x6CE00F5C,\n\t\t0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530, 0x73394127, 0x773FA6F4,\n\t\t0x9805A980, 0x838DE587, 0x9CF597F4, 0xA2AD1691, 0xFA81A473, 0x7CDC7D7F,\n\t\t0x4A5190D0, 0xED895BB9, 0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516,\n\t\t0x2501A3E1, 0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E,\n\t\t0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4, 0x24DB166C,\n\t\t0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6, 0x419E0C75, 0x46BE9F38,\n\t\t0x2432B9B2, 0x758D83E0, 0xDCE12926, 0x3F57CB74, 0x1F4458E2, 0xF1DD639,\n\t\t0x83A1FB49, 0x173AFC76, 0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549,\n\t\t0x5C314C9, 0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715,\n\t\t0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F, 0x20BFDEB4,\n\t\t0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE, 0x9858E3E1, 0xA36A9C4E,\n\t\t0x88BD21F9, 0xAACF7A68, 0x773665E5, 0xCEDFDF66, 0x617A9610, 0x524FC968,\n\t\t0xC2D086CD, 0x5F008079, 0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608,\n\t\t0xA33A2EE5, 0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5,\n\t\t0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4, 0xB358C0D8,\n\t\t0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF, 0x33035831, 0x13D93987,\n\t\t0xFC542094, 0x845F317E, 0xDDC4BF8B, 0x1379E50C, 0x5C20193F, 0xFDD58298,\n\t\t0x9D482B82, 0x4A6BE062, 0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882,\n\t\t0xE6F8EA35, 0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD,\n\t\t0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677, 0xFB2E04F2,\n\t\t0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8, 0x1A8C7F28, 0x861E452E,\n\t\t0x932D3F78, 0x7652D852, 0x73357BBA, 0xEBBB0A58, 0x62536AFA, 0x3F6B65EF,\n\t\t0x6DC57B58, 0x9EB798CE, 0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302,\n\t\t0xA9FD3E40, 0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3,\n\t\t0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896, 0x6443A0FE,\n\t\t0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820, 0xF18F0810, 0xE1548689,\n\t\t0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B, 0xEA0C1BE0, 0xA1B785DB, 0x7086465D,\n\t\t0x1CC10929, 0x1E1D716E, 0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4,\n\t\t0x441F1E8B, 0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137,\n\t\t0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615, 0x92593380,\n\t\t0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7, 0x10E916B6, 0xE3BCFA68,\n\t\t0x2ACB80BB, 0xE51C5590, 0x994714B5, 0xF30984EE, 0x59BBE1B4, 0xB4867DBC,\n\t\t0xB91C706C, 0xBC16C218, 0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872,\n\t\t0x4B167FD4, 0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55,\n\t\t0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A, 0x9D2C662A,\n\t\t0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C, 0x20306EDB, 0xE381AAE7,\n\t\t0xA55DA748, 0x9B8B617B, 0x3E036FAD, 0x84E4C4A7, 0xD5A3F517, 0x669BA988,\n\t\t0x98FDDE8C, 0x67BD85CE, 0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF,\n\t\t0x205DB5C, 0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC,\n\t\t0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693, 0xC42D12C0,\n\t\t0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC, 0x8D874532, 0x5F5C9DD0,\n\t\t0x5D167858, 0x8559FEA2, 0x9D821476, 0xD9654ED2, 0x594C0DC7, 0x1A87B506,\n\t\t0x3F693200, 0x7A651AB5, 0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0,\n\t\t0xB088C72F, 0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB,\n\t\t0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D, 0x32581A06,\n\t\t0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15, 0xBC79A9BC, 0xB7175917,\n\t\t0x354E381C, 0x762AADD7, 0xF643DAC1, 0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4,\n\t\t0xD7694875, 0x92D30822, 0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7,\n\t\t0x58CE268, 0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1,\n\t\t0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB, 0x8FF5534,\n\t\t0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7, 0x419545EB, 0x993F7880,\n\t\t0xAB246B20, 0x408AABC4, 0xCBF6EA49, 0xC0894C55, 0x4CAA6398, 0xA47856E9,\n\t\t0xAF2AE47D, 0x22F55D33, 0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8,\n\t\t0x9A77D48, 0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A,\n\t\t0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071, 0x7F9930D4,\n\t\t0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A, 0x144B2C12, 0x98E425C7,\n\t\t0xBAA4B373, 0x18F0D03C, 0x99462AC0, 0xD8B4D2EF, 0x72473895, 0xA6BF5435,\n\t\t0xEDAD53B, 0xE0912FA6, 0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929,\n\t\t0xB89962F9, 0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0,\n\t\t0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841, 0x73A60174,\n\t\t0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095, 0x2B370837, 0x83DF6CE3,\n\t\t0xDD08EEFA, 0x3F52A7C2, 0x191B4785, 0x60843D82, 0xB0DE11F1, 0x105EA26C,\n\t\t0x6E1C7AA2, 0x47AADD14, 0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC,\n\t\t0x744206A, 0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9,\n\t\t0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F, 0x2E53E6C1,\n\t\t0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5, 0x119725CC, 0x5406D347,\n\t\t0x1B6FFAF1, 0xECCF71F1, 0x981117F2, 0x7167CA76, 0x74F4B880, 0x77A55F47,\n\t\t0x59EADB62, 0x4A331D95, 0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1,\n\t\t0x60D47AD5, 0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3,\n\t\t0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E, 0x31109C58,\n\t\t0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF, 0xBAF8D31E, 0xA4B31611,\n\t\t0xED37F331, 0x7A832A22, 0xA22591C7, 0x722D1F89, 0x3B19CF18, 0x261B8A4D,\n\t\t0xC3F6F6DB, 0xCF8CED61, 0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4,\n\t\t0x3674E663, 0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD,\n\t\t0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91, 0x4BF0C248,\n\t\t0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26, 0x6C3B7B71, 0xD744B3ED,\n\t\t0xFA25D2F6, 0x4CDE642D, 0xD65B8142, 0xA6F9207F, 0xE7A207BE, 0xDB506684,\n\t\t0x44DA4780, 0x9175EA0C, 0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2,\n\t\t0x5423D9C8, 0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1,\n\t\t0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5, 0x1672BA91,\n\t\t0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4, 0x32AFD40C, 0x99A5FB3B,\n\t\t0xDD1D73A3, 0xA342CB3E, 0xA78445F5, 0x53979C3B, 0x427D7943, 0x5221B58C,\n\t\t0xA6CE9A5E, 0xFB50ECA4, 0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04,\n\t\t0xFBB65E0C, 0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920,\n\t\t0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641, 0x4D6B1760,\n\t\t0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF, 0x4E5F9493, 0x4C215DA5,\n\t\t0x33A052B, 0x1A4D80C2, 0x40AEEBCA, 0x390D106B, 0xE9E8E018, 0x5AF3D6CF,\n\t\t0xE35E1D4, 0xC4FB1C6, 0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6,\n\t\t0x2227567D, 0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6,\n\t\t0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1, 0xC9D06CBC,\n\t\t0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47, 0x9D4804EA, 0x57DD9E67,\n\t\t0xF89C7895, 0xF5336111, 0x25C122C8, 0x62742114, 0xCFBF6D26, 0xBF9F6482,\n\t\t0xE6F02CD9, 0x11083202, 0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1,\n\t\t0x3BF4DC25, 0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129,\n\t\t0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA, 0x31C5A0AF,\n\t\t0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98, 0x82C34882, 0x5D041F11,\n\t\t0x8C613C57, 0xD398CFD1, 0x426F38AD, 0x5599AB1D, 0xFAFA078D, 0xAB25B413,\n\t\t0xD94B32CF, 0xB288FE38, 0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D,\n\t\t0x2174EBBE, 0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6,\n\t\t0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02, 0xC20D47A4,\n\t\t0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4, 0xC58612F4, 0xA2827F6F,\n\t\t0xC49DCDBA, 0x679B7362, 0x4E495845, 0xCFD2F0D1, 0x395E76A0, 0x375A655E,\n\t\t0x92E2058F, 0x73F9F0CA, 0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B,\n\t\t0xA219E2E8, 0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF,\n\t\t0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40, 0x157F6DDF,\n\t\t0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58, 0xB2945F75, 0x4FA23A0E,\n\t\t0x836EB8C0, 0xB3B18FD, 0x86114337, 0x24668ACB, 0x99BB82F0, 0x924C8A47,\n\t\t0xBA959701, 0x81155ABF, 0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7,\n\t\t0x7FC2802D, 0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719,\n\t\t0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD, 0xEBA775AE,\n\t\t0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D, 0xBBD34AB7, 0x2F85B12A,\n\t\t0x16C5C2AD, 0x3990985D, 0x88DF3351, 0x82811AA5, 0x6D351F41, 0x4066A69D,\n\t\t0x86B660BF, 0x6EDB4768, 0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687,\n\t\t0x947CC9C9, 0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB,\n\t\t0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B, 0xB7629C93,\n\t\t0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66, 0xEC71B78C, 0xEAF4BB3A,\n\t\t0x7C16225E, 0x668F337, 0xCBEE1608, 0x6D5B5552, 0x345DC590, 0x681209CC,\n\t\t0x7B24A819, 0xD08A1416, 0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678,\n\t\t0x20EECA0, 0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D,\n\t\t0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960, 0x7CDF59F3,\n\t\t0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110, 0xB8FCF3E3, 0xDEA059B2,\n\t\t0x8229B6EA, 0x316486F6, 0x43919185, 0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9,\n\t\t0x5CD41244, 0x2C9F0A7B, 0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0,\n\t\t0xF105C20D, 0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763,\n\t\t0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53, 0x2D2A85F6,\n\t\t0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B, 0x9FC5AC5F, 0x11AE5DD7,\n\t\t0xA0B9A5A9, 0xFC648AF4, 0x740009AC, 0xED0E0321, 0xB8E6A61, 0x8910C544,\n\t\t0xC74F26C8, 0x9525CCF3, 0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D,\n\t\t0xE1976DD4, 0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1,\n\t\t0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB, 0xF5288568,\n\t\t0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A, 0x1BC03B9, 0xB6BC3061,\n\t\t0xBF30596E, 0xBE2AD27B, 0x8AC04220, 0x641979A3, 0x9ECCBB89, 0xA144FBC1,\n\t\t0x4E8FAE26, 0x8C5A9D90, 0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D,\n\t\t0xCEE81CDF, 0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA,\n\t\t0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38, 0x2E77F2D,\n\t\t0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017, 0x2D6B69A7, 0xFEDB63F9,\n\t\t0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8, 0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6,\n\t\t0xED193443, 0x7615EF1B, 0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022,\n\t\t0x556E825C, 0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF,\n\t\t0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC, 0x1E6A1101,\n\t\t0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599, 0x54EB4809, 0x7839BE6D,\n\t\t0xD50017DD, 0x39B1A0E1, 0x288D52D3, 0x2D52668C, 0x20D22A68, 0x4E1207D1,\n\t\t0x3FCC0EFE, 0x47F3FE64, 0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8,\n\t\t0x6BEAA655, 0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9,\n\t\t0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B, 0x4DCD4EDB,\n\t\t0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6, 0x502F41B0, 0x3616D3F1,\n\t\t0x2E5B8E31, 0x2026EB19, 0x57E783D7, 0x467BBE00, 0x4703ABA3, 0x1F776B9C,\n\t\t0xE2570A84, 0xFEC7DB48, 0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6,\n\t\t0x99D5D8ED, 0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F,\n\t\t0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB, 0x56186AA1,\n\t\t0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94, 0xAC18B207, 0x5FC78B3,\n\t\t0x7F10621E, 0xA769E6B2, 0xEC9F4A11, 0xCE3F982C, 0x62BA2EF5, 0xA5F239CD,\n\t\t0x73D63FED, 0xE36E9F5E, 0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1,\n\t\t0xCD476E86, 0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7,\n\t\t0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78, 0xCC4BE4F6,\n\t\t0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2, 0x55A8F5EC, 0xE81A9A75,\n\t\t0x30A67E1B, 0x4A4A7D0C, 0x20F7F993, 0x1891805, 0x738976AD, 0xD426E7D6,\n\t\t0x3C5CEEBF, 0x4499187F, 0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456,\n\t\t0x421BCF29, 0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE,\n\t\t0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46, 0x5D146234,\n\t\t0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA, 0xB65530CC, 0x2DFAC48C,\n\t\t0x1663D16F, 0x59B80AA, 0x950274EA, 0x92532D4A, 0x3CEF802D, 0x492FBDA5,\n\t\t0xA63A2574, 0xEF8005C2, 0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646,\n\t\t0xD2598516, 0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75,\n\t\t0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F\n};\n\n/* The source data is random across the q31_t range. Accessing it by word should\n   remain random. */\nconst q15_t * controller_q15_inputs = (q15_t *) controller_q31_inputs;\n\nconst float32_t controller_f32_inputs[CONTROLLER_MAX_LEN] =\n{\n\t\t43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580  ,\n\t\t7.2830326091   , 66.8368719314  , 33.9778190671  , 117.8652289772 ,\n\t\t-129.6077797465, -14.6420815368 , 18.0239223278  , 20.6760530292  ,\n\t\t55.0375037651  , 1.8674609862   , -85.6534302408 , -33.5750364909 ,\n\t\t29.2110949614  , 110.4727049460 , -94.1914619387 , -1.4084169343  ,\n\t\t83.5181653041  , 47.3073514127  , -13.3420621181 , 30.3389699104  ,\n\t\t12.1188124277  , 100.9730921941 , -114.0146362390, -77.5823200409 ,\n\t\t37.2019034618  , 40.0026301128  , -58.3387276630 , -34.9472398600 ,\n\t\t-5.1169678311  , -87.7660091118 , -150.5888601131, 56.0349370503  ,\n\t\t50.2168884079  , -74.2313236767 , 22.3648603560  , -6.8676387051  ,\n\t\t74.8957303680  , -90.1292012823 , -55.1436241586 , -66.6732976100 ,\n\t\t-6.7918147615  , 7.7612697081   , 35.7892605979  , -20.0470508830 ,\n\t\t41.8369017546  , -143.7378056984, -41.9127158600 , -108.3531841158,\n\t\t-57.1917422289 , -124.2808828105, 38.9316388820  , -77.9212517405 ,\n\t\t37.1990818377  , -28.9545952748 , -155.6371057564, 45.8088886393  ,\n\t\t36.2537018275  , -6.5727656016  , -104.2070491921, 45.5583813729  ,\n\t\t-19.7674717059 , -80.4802190947 , -1.4444563441  , -42.2142256438 ,\n\t\t36.6546339194  , -57.0866498590 , 44.4677067511  , 65.7285753407  ,\n\t\t-103.8158864647, 25.4348723711  , -153.5419639389, 39.3608409474  ,\n\t\t49.1658103436  , 79.5570602275  , 75.2944095996  , 58.9394700746  ,\n\t\t-53.1018534392 , 33.4172444014  , 35.6224682287  , -64.4353396418 ,\n\t\t-125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 ,\n\t\t-17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604  ,\n\t\t-191.1123732593, 119.6750713043 , 19.6182375803  , -26.7615252921 ,\n\t\t2.2957847015   , -108.3436451287, -50.5906164995 , -5.6360985100  ,\n\t\t-11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218  ,\n\t\t-70.2048296348 , 72.8738253222  , 60.2450218115  , 114.2741231228 ,\n\t\t46.8180775285  , 6.9915412654   , -8.9909197429  , -78.9165936808 ,\n\t\t66.4731535459  , -68.4235455651 , -79.8254597080 , -10.6308477115 ,\n\t\t-62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997  ,\n\t\t35.8213741877  , -54.4694482732 , 86.9631830044  , -53.0343838122 ,\n\t\t-47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 ,\n\t\t12.0258009869  , -5.1098204703  , -9.8420230737  , -107.3328761158,\n\t\t44.6810431959  , -17.9083820345 , -60.9753512872 , -7.5915088994  ,\n\t\t17.2250813329  , 57.9176125648  , 124.3004161362 , -63.1950908493 ,\n\t\t120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 ,\n\t\t-49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 ,\n\t\t-64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575   ,\n\t\t-50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549  ,\n\t\t-102.0850899209, 53.2360193126  , -25.8997883369 , 75.1445512333  ,\n\t\t-113.8148602310, 17.8027281119  , -19.5006822722 , -44.2169628471 ,\n\t\t107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388   ,\n\t\t46.7384653508  , 9.9047443751   , 81.8646964362  , 132.3812863877 ,\n\t\t-95.6959050236 , -68.5015813484 , 65.8586404494  , 18.5039353889  ,\n\t\t-30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 ,\n\t\t-2.2127786675  , -35.4418447703 , -51.8722915974 , -107.9024439078,\n\t\t-51.5940748232 , -51.7463262677 , 74.2795485984  , 94.2205022462  ,\n\t\t9.7016384049   , -47.3556083155 , -36.7822314478 , -151.6455525363,\n\t\t-15.7183814485 , 78.2063383182  , 0.1516414969   , 37.9304181609  ,\n\t\t20.6185902740  , -22.2164106778 , 6.1160554677   , 2.4061326953   ,\n\t\t-111.6681824598, -60.0858917090 , 75.1698614693  , -76.5787410444 ,\n\t\t28.3391655715  , -2.4946186443  , -68.0378899682 , 104.0893199171 ,\n\t\t-51.8319647254 , 38.8521710524  , 75.9114239564  , 73.9206172905  ,\n\t\t-103.2533029987, 6.9002718274   , -36.6346436319 , -25.1990926265 ,\n\t\t1.5852145953   , -50.6438436795 , 21.5018844428  , -151.9305562846,\n\t\t-51.7326681814 , 21.4475994143  , 42.2564011921  , -74.0520586926 ,\n\t\t49.7370635809  , -13.2957534126 , 36.6746826778  , -31.7005492589 ,\n\t\t148.4894964268 , 79.7890632353  , 16.8856024809  , 16.1690460177  ,\n\t\t39.2665169484  , 117.2461167794 , -37.4827984831 , -47.8387803604 ,\n\t\t-95.7025286193 , 34.3058214285  , -124.9536456028, 56.1640195764  ,\n\t\t94.3636873606  , 35.3992852810  , -38.3920852159 , -100.5738062016,\n\t\t-29.7837022314 , 42.9133913996  , -34.2715618187 , -14.3589115627 ,\n\t\t-16.5935468750 , 20.4574192236  , -88.7897972666 , -38.6285080386 ,\n\t\t53.3203422726  , 98.5991486746  , 122.7305462474 , 67.7902817187  ,\n\t\t5.1764117389   , 5.0632821624   , 21.9288789574  , -78.3140512638 ,\n\t\t-21.2069682335 , 23.6342010925  , 34.4445769455  , 59.1346766615  ,\n\t\t28.9978778000  , 39.8121180845  , -17.1650033520 , -56.9174900874 ,\n\t\t17.8157086148  , -112.8801457350, -122.4019040408, 140.8669393157 ,\n\t\t-65.4664329639 , 40.6952775518  , 32.7260891658  , -43.2565155866 ,\n\t\t19.3945751928  , -20.1815002000 , -67.6601711640 , -18.1921178207 ,\n\t\t-35.6802153684 , 49.9550290306  , 131.4925251016 , -31.2940938167 ,\n\t\t-5.2848453344  , -109.5580577933, 20.2437599390  , -8.8782958734  ,\n\t\t54.1836717264  , 7.2555852190   , -3.5698316137  , -51.9236786262 ,\n\t\t6.7861547980   , -104.4814551670, 45.8458629668  , 70.0890876844  ,\n\t\t38.3572837740  , 61.8024165129  , 68.0176962024  , -12.8193934080 ,\n\t\t-21.4661610917 , -0.9377108815  , -74.2100679061 , 71.0490808147  ,\n\t\t91.9813889497  , -14.5797640164 , 3.5036749129   , -138.3605478356,\n\t\t-48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637  ,\n\t\t-34.0878176054 , 55.1075126157  , 97.3829871877  , 0.2053358099   ,\n\t\t-94.8713267382 , 51.5460954054  , 21.2966946363  , 58.1331025047  ,\n\t\t-23.4599044132 , -19.3315856528 , -8.4497193577  , -1.9594679356  ,\n\t\t-33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097  ,\n\t\t61.4666549819  , 14.6536253128  , 82.1632196866  , -44.6230161723 ,\n\t\t-91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003  ,\n\t\t70.7059960183  , -68.2829345081 , -10.2629800455 , -53.6385325047 ,\n\t\t-68.7928766204 , 88.2444688302  , 83.1412324801  , -102.9206928160,\n\t\t-68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 ,\n\t\t5.6685898328   , -36.0392956840 , 43.3269513128  , -8.6436416796  ,\n\t\t-16.5054886972 , 11.5008791788  , 39.6923606683  , -28.9039554061 ,\n\t\t13.5938214364  , -23.6296332202 , 49.1171161163  , 53.1636857935  ,\n\t\t-62.9672053166 , -54.2594757384 , 48.3838956696  , 8.0469071555   ,\n\t\t-33.6472086213 , -120.5381752144, 55.0880453111  , 17.8990740563  ,\n\t\t144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 ,\n\t\t-12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 ,\n\t\t65.7430288442  , -131.8695390036, 10.2750933946  , 90.9752774838  ,\n\t\t-26.5859990591 , -95.6962772568 , 76.2174589344  , 24.8796848060  ,\n\t\t-38.8938223046 , 54.1687774852  , -37.3585968996 , -34.6848570502 ,\n\t\t33.0151011570  , -55.8345877671 , -3.9009101671  , -31.5024971691 ,\n\t\t-9.6863895491  , 91.8719195957  , -58.9993249744 , -25.6887030614 ,\n\t\t-8.0829472205  , 4.6386491741   , -71.4019697167 , -21.3734669095 ,\n\t\t86.2079144404  , 79.6823974266  , -0.0910915997  , 44.8067718095  ,\n\t\t58.7204020766  , 72.6856808976  , -50.3373732478 , -116.1175365534,\n\t\t-15.0884909384 , 5.4593772059   , -63.6553527905 , 37.3460388205  ,\n\t\t-32.2399421679 , 95.7569350513  , -7.3700141964  , -56.0370832967 ,\n\t\t-41.7377150439 , -42.0042856519 , 12.5134312941  , 93.7845584531  ,\n\t\t-32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 ,\n\t\t-20.3704610276 , 15.8571376404  , 88.9127217235  , -33.1132582267 ,\n\t\t-1.0005675836  , -28.1780471904 , 150.9349379135 , 38.0600520828  ,\n\t\t36.4338677563  , -3.3709201641  , 29.7709773016  , 16.5064119077  ,\n\t\t21.3147729463  , 110.6714300904 , 18.8406036507  , 14.8963298097  ,\n\t\t50.9975960392  , 16.3991140350  , -194.0805845907, -41.6723945839 ,\n\t\t-74.8991127408 , -6.4587655805  , -0.6883628218  , -49.8709647175 ,\n\t\t194.2265120473 , 64.3043624521  , 16.0040882780  , 68.4032551772  ,\n\t\t-43.4050313128 , 84.6826289824  , -28.1357565943 , 134.6895584120 ,\n\t\t-7.9746152680  , -95.6692886462 , -48.9444370342 , 79.4479343188  ,\n\t\t-50.5345228122 , 52.4800633307  , -14.7735051703 , -20.1510237050 ,\n\t\t22.5049816980  , 64.4191999102  , 24.8385648232  , 99.4265041360  ,\n\t\t62.0189508473  , -28.3892600378 , -109.8842008564, -79.0407483407 ,\n\t\t18.3408112020  , 49.1650536089  , 31.5419844924  , -36.1160722679 ,\n\t\t-132.9148081329, 10.4053531567  , -129.2463715470, -43.4602207151 ,\n\t\t-24.2420653292 , 91.5388317556  , 21.4762248190  , -44.3810909139 ,\n\t\t18.4098011282  , -45.8691164539 , -20.9831197962 , 16.2076792914  ,\n\t\t66.0224147666  , -13.6794615513 , 101.2163279622 , -62.4462618603 ,\n\t\t22.2040981785  , -52.3208382802 , -24.7909079016 , 58.5150375093  ,\n\t\t18.8569705105  , -55.6083430939 , 131.0273367422 , -34.5209015065 ,\n\t\t121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098   ,\n\t\t-23.8451707592 , -4.5912313547  , 31.1387246821  , 61.7019310824  ,\n\t\t49.1912429744  , -50.5836913031 , -74.8182600630 , -21.6209317022 ,\n\t\t20.9409464654  , -72.7870824583 , -28.3530746820 , -45.0794425434 ,\n\t\t-13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784  ,\n\t\t8.4213193211   , 79.9349022793  , 60.0160502260  , 32.2272994080  ,\n\t\t-72.2893887746 , 17.3063698247  , -134.6335742431, 64.6499736261  ,\n\t\t7.1411921919   , -37.5517577873 , 6.2405670930   , 117.1920927305 ,\n\t\t128.7420689815 , -3.1556854963  , -13.4100422909 , -11.9336372907 ,\n\t\t-8.6022400553  , -102.0033506666, -78.4696575074 , 15.0765861403  ,\n\t\t-111.5219718576, -13.4162786508 , 38.2437013694  , 61.1637732561  ,\n\t\t-34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 ,\n\t\t-26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598  ,\n\t\t103.3266736715 , -58.1865815617 , 27.6231908601  , -11.2004371750 ,\n\t\t26.0340617206  , 12.5696123916  , 0.6442714420   , -30.7393043544 ,\n\t\t1.5314955897   , 49.9110088250  , -106.1358721920, 51.1608329944  ,\n\t\t-32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 ,\n\t\t59.9383486599  , -4.6301990580  , 5.0361682939   , -10.5669407980 ,\n\t\t124.0908762205 , 35.8305364082  , -123.6216777114, -74.2569079167 ,\n\t\t-56.7651776816 , 16.0736385582  , 23.5030632215  , -110.6764295938,\n\t\t44.3086821806  , 9.4452708243   , 5.3300080251   , 39.0483916714  ,\n\t\t151.4550562868 , 62.8957092621  , -116.8103461233, 5.1129927759   ,\n\t\t-33.2252515135 , -9.4522506046  , 22.7026048372  , -15.5264414569 ,\n\t\t71.2087620034  , 19.1191568332  , 50.3019546809  , -5.6096922409  ,\n\t\t22.9344126462  , -7.7591876203  , 31.8949515564  , -58.4253952381 ,\n\t\t66.4341297173  , -19.0583083044 , 96.7695087855  , 20.4934280047  ,\n\t\t4.9544603116   , -20.8288135920 , -173.2659655408, -62.4883621640 ,\n\t\t-48.5528422703 , 12.1437504278  , 60.2482234666  , -19.6072312919 ,\n\t\t-34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477  ,\n\t\t-4.7051792479  , -13.1768910826 , 69.5138802139  , 58.5748201565  ,\n\t\t-45.9385652563 , 151.7952104306 , 34.2541941013  , -58.0417838381 ,\n\t\t28.1480473670  , 46.4006562684  , 97.7001828545  , 4.0855607626   ,\n\t\t-32.6097018162 , 16.8913949959  , 105.7266202978 , -89.3978374651 ,\n\t\t-60.9338593128 , -41.2220734230 , 49.9393070783  , 95.0974764854  ,\n\t\t49.2498366456  , 58.6214364590  , 34.1113830569  , 45.6634098874  ,\n\t\t-22.5356086770 , -97.1978653617 , 86.5565049535  , 70.6118545777  ,\n\t\t-30.6978082909 , 118.7238621666 , 14.5922386932  , 11.3449652072  ,\n\t\t65.6007783405  , 82.6369678204  , -52.0390492248 , -47.0160551227 ,\n\t\t-95.5142448634 , 99.7162626888  , -36.5523815090 , -42.8042935534 ,\n\t\t68.3566199798  , -13.8451547552 , -71.1629911780 , 36.2989433752  ,\n\t\t-32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639  ,\n\t\t51.8078250755  , -26.8715188457 , -9.6291144797  , 40.1999849640  ,\n\t\t-38.4634033246 , 40.9764960915  , -26.1715730268 , 36.5996396515  ,\n\t\t-26.9924731886 , 53.7879986570  , -83.1658398348 , 23.6381378489  ,\n\t\t43.8794937753  , -55.4133836419 , 90.0266130838  , 14.1036181982  ,\n\t\t-18.1225736715 , 85.1363181151  , -62.5970846379 , -18.5291947838 ,\n\t\t-25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803  ,\n\t\t-87.6471123430 , -36.7217762531 , 22.5952364054  , 11.1107885650  ,\n\t\t-0.5377327229  , 160.8145792630 , 73.3103441505  , 10.1656872354  ,\n\t\t-50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 ,\n\t\t-4.9891264771  , -37.0226770057 , -80.9919535641 , 50.4418660876  ,\n\t\t-25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751  ,\n\t\t113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 ,\n\t\t43.5813790265  , 107.1836101171 , -55.1012654323 , -77.1529555887 ,\n\t\t-33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378  ,\n\t\t93.9385415207  , -61.0955216188 , 18.0530957225  , 7.9150142320   ,\n\t\t-12.1218191587 , 34.0173961457  , 40.0084937565  , 9.8119275580   ,\n\t\t44.2065861274  , -1.8718514394  , 67.4740024215  , 46.7391150131  ,\n\t\t207.2404815875 , 45.1635364462  , 43.3580102761  , -44.0244218674 ,\n\t\t83.2387206007  , -8.6441851856  , 12.3993902588  , -22.5091685270 ,\n\t\t-19.8332981376 , 97.9196509289  , -76.6720306234 , 28.9740705859  ,\n\t\t121.9415248016 , 9.6656982611   , -51.0996453694 , 37.3704374740  ,\n\t\t74.7589840907  , -113.4066752631, 120.0029566342 , -105.3786221360,\n\t\t81.8152755619  , -13.4979932982 , -21.4680758393 , -85.1088235539 ,\n\t\t-65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 ,\n\t\t33.1212995259  , -82.1480936443 , -10.5479715135 , 76.4601917004  ,\n\t\t42.1983651157  , 92.6104239912  , -42.3536237955 , -24.5644182272 ,\n\t\t30.4446637772  , -90.2899420489 , 63.6723540422  , 103.0895811428 ,\n\t\t64.1706769263  , -10.7069812309 , 21.8927240409  , 6.3571071738   ,\n\t\t57.1457649358  , -52.9866276448 , 66.0981829072  , -29.5372056881 ,\n\t\t-79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141  ,\n\t\t66.4244149837  , 53.3230426111  , -66.1283059222 , -131.0402660353,\n\t\t8.0548411081   , 122.9088988100 , 1.2626894208   , -60.5059112373 ,\n\t\t-68.8707203082 , -6.4747987200  , 85.8411327244  , 99.9624156733  ,\n\t\t90.4197864338  , -35.9630441182 , -22.9158275507 , -17.3660128776 ,\n\t\t16.7845345761  , 34.7219749782  , -39.3513765878 , 1.0460702756   ,\n\t\t-60.9494500182 , 20.0900333387  , -85.9636743832 , 88.4400782168  ,\n\t\t15.0729628728  , 61.5499846243  , 11.8579871757  , 107.8617581581 ,\n\t\t-42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807   ,\n\t\t-36.0651825425 , 55.7638724501  , -10.4691736080 , -55.5672537178 ,\n\t\t-61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676  ,\n\t\t22.9426321237  , 14.3038202264  , -138.0926317438, -59.0892900856 ,\n\t\t-162.5416439986, 7.1307658250   , -141.1236672256, -4.7173618068  ,\n\t\t-16.7741532807 , -68.2615451173 , -2.6608701102  , 84.1978109826  ,\n\t\t-11.3446202072 , 59.9630033088  , -1.8994925010  , -37.9301641959 ,\n\t\t-119.4435600954, -11.4587491646 , 12.2423215240  , -7.3169898616  ,\n\t\t-67.0373621128 , 36.0198843055  , 53.9791315249  , -134.5885680695,\n\t\t-83.8330811965 , -16.6714816463 , -8.8498552035  , -24.0513088196 ,\n\t\t-22.9444328877 , -37.7961441531 , 25.1975736186  , -136.1611637464,\n\t\t-5.0843464033  , -10.3939554694 , 20.7422826935  , 75.6854136623  ,\n\t\t46.4179626736  , -57.0052830175 , 7.3457235521   , -51.5504447254 ,\n\t\t-158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527   ,\n\t\t21.1746524375  , 99.4092980367  , -2.3206772903  , 45.7989166757  ,\n\t\t2.0181548348   , -88.0556010969 , -59.1527212096 , 47.3607925077  ,\n\t\t-10.4181140309 , 56.3558125650  , -8.9799125560  , -30.0376711812 ,\n\t\t-36.7132904688 , 35.7785050392  , -13.0763909369 , -2.1855594714  ,\n\t\t18.1550954005  , -28.6711803575 , -55.4495172398 , -2.8812973198  ,\n\t\t-59.9575059158 , 40.0588875786  , 57.4713686602  , -3.2835144853  ,\n\t\t-36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 ,\n\t\t-54.9408569587 , -35.2310451959 , 21.3345143458  , 65.7590671151  ,\n\t\t51.2214538168  , 46.1271939944  , -42.2235267919 , 127.2329928299 ,\n\t\t105.2391778600 , 17.6726845966  , -129.9021148044, 8.7065613044   ,\n\t\t-94.0987112511 , -3.5375742950  , -23.1385452379 , 60.6219530633  ,\n\t\t92.5445564235  , 48.5111974469  , -52.5699309159 , -60.0634811685 ,\n\t\t25.9034368684  , 140.0249495491 , 1.5918852392   , 38.0266038291  ,\n\t\t17.5588710703  , 3.4294066089   , -27.6748782173 , 59.6182974489  ,\n\t\t-35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489   ,\n\t\t22.7250686519  , -28.3524510951 , -34.4269062817 , 22.6464817325  ,\n\t\t-61.6528147860 , -5.9782002429  , 61.4730771294  , 43.5582379527  ,\n\t\t55.6862408270  , 87.8745651631  , 46.3401042715  , -19.8780979663 ,\n\t\t74.1272633369  , 29.8590452377  , -12.8665765140 , 34.2931401219  ,\n\t\t53.9279617551  , -16.9017895140 , -70.1527553166 , -79.6367897992 ,\n\t\t109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 ,\n\t\t17.6062148433  , 3.5090251835   , 74.2615941204  , -109.3431097845,\n\t\t40.1403465151  , 28.8714561280  , 94.0868659302  , -19.0047033845 ,\n\t\t-60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846  ,\n\t\t-17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009  ,\n\t\t-36.7817189239 , -29.1580893235 , -6.5848563828  , 90.2868948516  ,\n\t\t-35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021  ,\n\t\t-7.4546621940  , -52.0657517138 , -49.0404829633 , -114.6910280126,\n\t\t-117.6819819437, -32.7856729408 , 31.8232065591  , 12.1192973039  ,\n\t\t35.2678513420  , -1.0336778293  , 30.7021249679  , 127.0442906046 ,\n\t\t-84.8457819393 , 28.9862843096  , -47.3524701726 , -126.1094998460,\n\t\t-2.9700276582  , -2.4956545870  , -53.8624121141 , -85.2114117637 ,\n\t\t76.9057985618  , 137.1205201755 , -19.0830817212 , 14.3407526579  ,\n\t\t-56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090,\n\t\t0.3487447576   , 33.4499716730  , 34.7126257844  , -9.3307383323  ,\n\t\t27.2996276947  , 10.8765676134  , -91.1032360444 , -90.9584216222 ,\n\t\t1.6981490570   , 96.8557438791  , 56.7726390913  , -44.3246449237 ,\n\t\t52.3260643361  , 21.5551140465  , 27.4535327381  , 2.0072717479   ,\n\t\t7.4823125629   , 77.1185863870  , 16.1372262663  , -10.7206012957\n};\n\nconst float32_t controller_f32_coeffs[CONTROLLER_MAX_COEFFS_LEN] =\n{\n\t/* S->Kp, S->Ki, S->Kd; */\n\t0.0000000000  , -1.0336778293 , 56.7726390913 ,\n\t0.3487447576  , 0.0000000000  , 27.4535327381 ,\n\t-29.1580893235, 1.6981490570  , 0.0000000000  ,\n\t0.0000000000  , 0.0000000000  , -2.4956545870 ,\n\t0.0000000000  , 8.7065613044  , 0.0000000000  ,\n\t0.0000000000  , 0.0000000000  , 0.0000000000  ,\n\t18.1550954005 , -5.9782002429 , 2.0072717479  ,\n\t33.1212995259 , -82.1480936443, -10.5479715135,\n\t-23.6296332202, 49.1171161163 , 53.1636857935 ,\n\t7.2830326091  , 66.8368719314 , 33.9778190671 ,\n\t9.4452708243  , 5.3300080251  , 39.0483916714 ,\n\t6.9915412654  , -8.9909197429 , -78.9165936808\n};\n\nconst q31_t controller_q31_coeffs[CONTROLLER_MAX_COEFFS_LEN] =\n{\n\t0x00000000,\t0xFEF760E4,\t0x38C5CBAD,\n\t0x00594756,\t0x00000000,\t0x1B741AB9,\n\t0xE2D78775,\t0x01B2B9E6,\t0x00000000,\n\t0x00000000,\t0x00000000,\t0xFD811CC8,\n\t0x00000000,\t0x08B4E134,\t0x00000000,\n\t0x00000000,\t0x00000000,\t0x00000000,\n\t0x1227B455,\t0xFA0594AB,\t0x0201DC90,\n\t0x211F0D7C,\t0xADDA1689,\t0xF573B824,\n\t0xE85ED05B,\t0x311DFB52,\t0x3529E750,\n\t0x074874D3,\t0x42D63D3D,\t0x21FA525A,\n\t0x0971FD45,\t0x05547B68,\t0x270C6366,\n\t0x06FDD5A6,\t0xF7025315,\t0xB1155A1E\n};\n\n\nconst q15_t controller_q15_coeffs[CONTROLLER_MAX_COEFFS_LEN] =\n{\n\t0x0000,\t0xFEF7,\t0x38C6,\n\t0x0059,\t0x0000,\t0x1B74,\n\t0xE2D8,\t0x01B3,\t0x0000,\n\t0x0000,\t0x0000,\t0xFD81,\n\t0x0000,\t0x08B5,\t0x0000,\n\t0x0000,\t0x0000,\t0x0000,\n\t0x1228,\t0xFA06,\t0x0202,\n\t0x211F,\t0xADDA,\t0xF574,\n\t0xE85F,\t0x311E,\t0x352A,\n\t0x0748,\t0x42D6,\t0x21FA,\n\t0x0972,\t0x0554,\t0x270C,\n\t0x06FE,\t0xF702,\t0xB115\n};\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"controller_tests.h\"\n\nJTEST_DEFINE_GROUP(controller_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_GROUP_CALL(pid_reset_tests);\n    JTEST_GROUP_CALL(pid_tests);\n    JTEST_GROUP_CALL(sin_cos_tests);\n    return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_reset_tests.c",
    "content": "#include \"jtest.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n#include \"type_abbrev.h\"\n#include \"test_templates.h\"\n\n/* Bucket of zeros. For comparison with the output of arm_pid_reset_xxx. */\nARR_DESC_DEFINE(float32_t, zeroes, 3, CURLY(0));\n\n/**\n *  Define a JTEST_TEST_t for the function arm_pid_reset_xxx function having\n *  suffix.\n */\n#define ARM_PID_RESET_TEST(suffix)                                      \\\n    JTEST_DEFINE_TEST(arm_pid_reset_##suffix##_test,                    \\\n                      arm_pid_reset_##suffix)                           \\\n    {                                                                   \\\n        /* Initialise the pid_instance */                               \\\n        arm_pid_instance_##suffix pid_inst = { 0 };                     \\\n            pid_inst.state[0] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff;  \\\n            pid_inst.state[1] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff;  \\\n            pid_inst.state[2] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff;  \\\n                                                                        \\\n            /* Display cycle count and run test */                      \\\n            JTEST_COUNT_CYCLES(arm_pid_reset_##suffix(&pid_inst));      \\\n                                                                        \\\n            /* Test correctness */                                      \\\n            TEST_ASSERT_BUFFERS_EQUAL(                                  \\\n                pid_inst.state,                                         \\\n                zeroes.data_ptr,                                        \\\n                3 * sizeof(TYPE_FROM_ABBREV(suffix)));                  \\\n                                                                        \\\n            return JTEST_TEST_PASSED;                                   \\\n    }\n\nARM_PID_RESET_TEST(f32);\nARM_PID_RESET_TEST(q31);\nARM_PID_RESET_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(pid_reset_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_pid_reset_f32_test);\n    JTEST_TEST_CALL(arm_pid_reset_q31_test);\n    JTEST_TEST_CALL(arm_pid_reset_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_tests.c",
    "content": "#include \"jtest.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n#include \"ref.h\"\n#include \"type_abbrev.h\"\n#include \"test_templates.h\"\n#include \"controller_test_data.h\"\n#include \"controller_templates.h\"\n\n/**\n *  Define a JTEST_TEST_t for the function arm_pid_xxx function having\n *  suffix.\n */\n#define ARM_PID_TEST(suffix,type)                                       \\\n    JTEST_DEFINE_TEST(arm_pid_##suffix##_test, arm_pid_##suffix)        \\\n    {                                                                   \\\n            uint32_t i,j;                                               \\\n                                                                        \\\n            arm_pid_instance_##suffix fut_pid_inst = { 0 };             \\\n            arm_pid_instance_##suffix ref_pid_inst = { 0 };             \\\n                                                                        \\\n            for(i=0;i<CONTROLLER_MAX_COEFFS_LEN/3;i++)                  \\\n            {                                                           \\\n                fut_pid_inst.Kp = controller_##suffix##_coeffs[i*3+0];  \\\n                fut_pid_inst.Ki = controller_##suffix##_coeffs[i*3+1];  \\\n                fut_pid_inst.Kd = controller_##suffix##_coeffs[i*3+2];  \\\n                ref_pid_inst.Kp = controller_##suffix##_coeffs[i*3+0];  \\\n                ref_pid_inst.Ki = controller_##suffix##_coeffs[i*3+1];  \\\n                ref_pid_inst.Kd = controller_##suffix##_coeffs[i*3+2];  \\\n                                                                        \\\n                arm_pid_init_##suffix(&fut_pid_inst, 1);                \\\n                arm_pid_init_##suffix(&ref_pid_inst, 1);                \\\n                                                                        \\\n                /* Display parameter values */                          \\\n                JTEST_DUMP_STRF(\"Block Size: %d\\n\",                     \\\n                                (int)CONTROLLER_MAX_LEN);               \\\n                                                                        \\\n                /* Display cycle count and run test */                  \\\n                JTEST_COUNT_CYCLES(                                     \\\n                    for(j=0;j<CONTROLLER_MAX_LEN;j++)                   \\\n                    {                                                   \\\n                       *((type*)controller_output_fut + j) =            \\\n                           arm_pid_##suffix(&fut_pid_inst,              \\\n                           controller_##suffix##_inputs[j]);            \\\n                    });                                                 \\\n                                                                        \\\n                for(j=0;j<CONTROLLER_MAX_LEN;j++)                       \\\n                {                                                       \\\n                   *((type*)controller_output_ref + j) =                \\\n                        ref_pid_##suffix(&ref_pid_inst,                 \\\n                        controller_##suffix##_inputs[j]);               \\\n                }                                                       \\\n                                                                        \\\n                /* Test correctness */                                  \\\n                CONTROLLER_SNR_COMPARE_INTERFACE(                       \\\n                        CONTROLLER_MAX_LEN,                             \\\n                        type);                                          \\\n            }                                                           \\\n                                                                        \\\n            return JTEST_TEST_PASSED;                                   \\\n    }\n\nARM_PID_TEST(f32,float32_t);\nARM_PID_TEST(q31,q31_t);\nARM_PID_TEST(q15,q15_t);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(pid_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_pid_f32_test);\n    JTEST_TEST_CALL(arm_pid_q31_test);\n    JTEST_TEST_CALL(arm_pid_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/sin_cos_tests.c",
    "content": "#include \"jtest.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"\n#include \"ref.h\"\n#include \"type_abbrev.h\"\n#include \"test_templates.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input Data */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(float32_t,\n                arm_sin_cos_degrees_f32,\n                9,\n                CURLY(\n                    0,\n                    17,\n                    45,\n                    90,\n                    180,\n                    360,\n                    362,\n                    -73,\n                    -191.111\n                      ));\n\n/* The Q31 version of the function maps numbers in the range [-1, 0.9999999]\n * to degrees in the range [-180, 179]*/\nARR_DESC_DEFINE(q31_t,\n                arm_sin_cos_degrees_q31,\n                6,\n                CURLY(\n                    0,\n                    0x80000000, /* -1 */\n                    0x7fffffff, /* 0.99999 */\n                    /* Randoms */\n                    0xf7badafa,\n                    0x285954a1,\n                    0xb9d09511\n                      ));\n\n/*--------------------------------------------------------------------------------*/\n/* Output Variables */\n/*--------------------------------------------------------------------------------*/\nfloat32_t sin_val_fut = 0;\nfloat32_t cos_val_fut = 0;\nfloat32_t sin_val_ref = 0;\nfloat32_t cos_val_ref = 0;\n\n/*--------------------------------------------------------------------------------*/\n/* Test Definitions */\n/*--------------------------------------------------------------------------------*/\n\n#define MAX_DELTA_f32 50.0e-8f\n#define ABS(x) ((x) > 0 ? (x) : -(x))\n\n/*\n  Function to test correctness of sin_cos output by comparing it with reference library\n*/\n#define COMPARISON_INTERFACE(type, threshold)                           \\\n    if ( (ABS((type) sin_val_ref - (type) sin_val_fut) >                 \\\n         (type) threshold ) ||                                          \\\n        (ABS((type) cos_val_ref - (type) cos_val_fut) >                 \\\n         (type) threshold))                                             \\\n    {                                                                   \\\n        JTEST_DUMP_STRF(\"Error: %f %f\\n\",                               \\\n                        ABS((type) sin_val_ref - (type) sin_val_fut),   \\\n                        ABS((type) cos_val_ref - (type) cos_val_fut));  \\\n        return JTEST_TEST_FAILED;                                       \\\n    }\n\n/*\n  Sine and cosine test function for float32_t input\n*/\nJTEST_DEFINE_TEST(arm_sin_cos_f32_test, arm_sin_cos_f32)\n{\n    /* Test function for all input degree values */\n    TEMPLATE_DO_ARR_DESC(\n        degree_idx, TYPE_FROM_ABBREV(f32),\n        degree, arm_sin_cos_degrees_f32\n        ,\n        /* Display cycle count and run test */\n        JTEST_COUNT_CYCLES(\n            arm_sin_cos_f32(\n                degree,\n                (TYPE_FROM_ABBREV(f32) *) &sin_val_fut,\n                (TYPE_FROM_ABBREV(f32) *) &cos_val_fut)\n        );\n        ref_sin_cos_f32(\n            degree,\n            (TYPE_FROM_ABBREV(f32) *) &sin_val_ref,\n            (TYPE_FROM_ABBREV(f32) *) &cos_val_ref);\n\n        /* Test correctness */\n        COMPARISON_INTERFACE(\n            TYPE_FROM_ABBREV(f32),\n            MAX_DELTA_f32));\n\n    return JTEST_TEST_PASSED;\n}\n\n\n/*\n  Sine and cosine test function for q31_t input\n*/\nJTEST_DEFINE_TEST(arm_sin_cos_q31_test,\n                  arm_sin_cos_q31)\n{\n    /* Test function for all input degree values */\n    TEMPLATE_DO_ARR_DESC(\n        degree_idx, TYPE_FROM_ABBREV(q31),\n        degree, arm_sin_cos_degrees_q31\n        ,\n        /* Display cycle count and run test */\n        JTEST_COUNT_CYCLES(\n            arm_sin_cos_q31(\n                degree,\n                (TYPE_FROM_ABBREV(q31) *) &sin_val_fut,\n                (TYPE_FROM_ABBREV(q31) *) &cos_val_fut)\n        );\n        ref_sin_cos_q31(\n            degree,\n            (TYPE_FROM_ABBREV(q31) *) &sin_val_ref,\n            (TYPE_FROM_ABBREV(q31) *) &cos_val_ref);\n\n        /* Convert q31 numbers to float for comparison purposes. */\n        ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &sin_val_fut, &sin_val_fut, 1);\n        ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &cos_val_fut, &cos_val_fut, 1);\n        ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &sin_val_ref, &sin_val_ref, 1);\n        ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &cos_val_ref, &cos_val_ref, 1);\n\n        /* Test correctness */\n        COMPARISON_INTERFACE(\n            TYPE_FROM_ABBREV(f32),\n            MAX_DELTA_f32));\n\n    return JTEST_TEST_PASSED;\n}\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(sin_cos_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_sin_cos_f32_test);\n    JTEST_TEST_CALL(arm_sin_cos_q31_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests.c",
    "content": "#include \"jtest.h\"\n#include \"ref.h\"\n#include \"arr_desc.h\"\n#include \"fast_math_templates.h\"\n#include \"fast_math_test_data.h\"\n#include \"type_abbrev.h\"\n\nSQRT_TEST_TEMPLATE_ELT1(q31);\nSQRT_TEST_TEMPLATE_ELT1(q15);\n\nSIN_COS_TEST_TEMPLATE_ELT1(f32, float32_t, sin);\nSIN_COS_TEST_TEMPLATE_ELT1(q31, q31_t, sin);\nSIN_COS_TEST_TEMPLATE_ELT1(q15, q15_t, sin);\n\nSIN_COS_TEST_TEMPLATE_ELT1(f32, float32_t, cos);\nSIN_COS_TEST_TEMPLATE_ELT1(q31, q31_t, cos);\nSIN_COS_TEST_TEMPLATE_ELT1(q15, q15_t, cos);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(fast_math_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_sqrt_q31_test);\n    JTEST_TEST_CALL(arm_sqrt_q15_test);\n\n    JTEST_TEST_CALL(arm_sin_f32_test);\n    JTEST_TEST_CALL(arm_sin_q31_test);\n    JTEST_TEST_CALL(arm_sin_q15_test);\n\n    JTEST_TEST_CALL(arm_cos_f32_test);\n    JTEST_TEST_CALL(arm_cos_q31_test);\n    JTEST_TEST_CALL(arm_cos_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests_common_data.c",
    "content": "#include \"fast_math_test_data.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nfloat32_t fast_math_output_fut[FAST_MATH_MAX_LEN] = {0};\nfloat32_t fast_math_output_ref[FAST_MATH_MAX_LEN] = {0};\nfloat32_t fast_math_output_f32_fut[FAST_MATH_MAX_LEN] = {0};\nfloat32_t fast_math_output_f32_ref[FAST_MATH_MAX_LEN] = {0};\n\nconst q31_t fast_math_q31_inputs[FAST_MATH_MAX_LEN] =\n{\n    0x414A5524, 0x4CAB5A17, 0x2D6F5B56, 0x7DAF4E3B, 0x29B226EB, 0x41F6F6A ,\n    0x25CE38BF, 0x3A970AFA, 0x3A44382A, 0x05540F8 , 0x3D060524, 0x13D56570,\n    0x17D7791D, 0x7FE0438C, 0x26741841, 0x40A66E54, 0x218E4386, 0x39FF3726,\n    0x0DC177CA, 0x702F2CF5, 0x41142FF1, 0x6C1476AB, 0x15F640DD, 0x662C4E49,\n    0x38055E7E, 0x770871FE, 0x4F8B5360, 0x0D1928A0, 0x57647821, 0x258558CF,\n    0x0C0C604D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0x36462E24, 0x6CE00F5C,\n    0x66D40948, 0x355B5831, 0x3B72150A, 0x1EB61530, 0x73394127, 0x773F26F4,\n    0x18052980, 0x038D6587, 0x1CF517F4, 0x22AD1691, 0x7A812473, 0x7CDC7D7F,\n    0x4A5110D0, 0x6D895BB9, 0x0FD60F35, 0x1A215530, 0x20EB6DDA, 0x3DE62516,\n    0x250123E1, 0x5ED813C8, 0x61E175B1, 0x2CBB32F3, 0x6D350907, 0x5B140D7E,\n    0x6EAE272D, 0x3E221841, 0x418B7B88, 0x26BB1B80, 0x3CF010E4, 0x24DB166C,\n    0x79AB7E42, 0x62DF28D1, 0x47004665, 0x63F56FC6, 0x419E0C75, 0x46BE1F38,\n    0x243239B2, 0x758D03E0, 0x5CE12926, 0x3F574B74, 0x1F4458E2, 0x71D5639 ,\n    0x03A17B49, 0x173A7C76, 0x06EF7531, 0x48D32F34, 0x7D3E3063, 0x0F2F3549,\n    0x5C314C9 , 0x18CB6B6D, 0x26F83697, 0x447B1E9C, 0x2E323A33, 0x50745715,\n    0x01AC5746, 0x655A4E04, 0x4891060F, 0x1DA36B4F, 0x60E6227F, 0x20BF5EB4,\n    0x50B3225B, 0x40C10544, 0x415656C , 0x15405EAE, 0x185863E1, 0x236A1C4E,\n    0x08BD21F9, 0x2ACF7A68, 0x773665E5, 0x4EDF5F66, 0x617A1610, 0x524F4968,\n    0x42D006CD, 0x5F000079, 0x24DC2447, 0x6A4F5599, 0x37064D4A, 0x1DE70608,\n    0x233A2EE5, 0x137E488E, 0x18061B7B, 0x4079569D, 0x24A817D5, 0x44CE48F5,\n    0x575F7883, 0x22406802, 0x71AD70BB, 0x1D4A5D79, 0x3CBC7CE4, 0x335840D8,\n    0x05792E47, 0x27AD2C05, 0x3D196EAB, 0x331A40AF, 0x33035831, 0x13D93987,\n    0x7C542094, 0x045F317E, 0x5DC43F8B, 0x1379650C, 0x5C20193F, 0x7DD50298,\n    0x1D482B82, 0x4A6B6062, 0x5C8A757B, 0x272917C1, 0x10E16FBC, 0x355A5882,\n    0x66F86A35, 0x604555A1, 0x7DF7FBB , 0x758A6216, 0x1A113463, 0x53541BAD,\n    0x21576756, 0x483B6D8D, 0x1F052FCC, 0x4EA63DFB, 0x55B84677, 0x7B2E04F2,\n    0x787A796C, 0x04A12CD3, 0x46029BD , 0x1DB22DD8, 0x1A8C7F28, 0x061E452E,\n    0x132D3F78, 0x76525852, 0x73357BBA, 0x6BBB0A58, 0x62536AFA, 0x3F6B65EF,\n    0x6DC57B58, 0x1EB718CE, 0x66B02740, 0x5FF60B47, 0x32477B8F, 0x7FF35302,\n    0x29FD3E40, 0x475A43D1, 0x6FF9528A, 0x2018209D, 0x47E079C9, 0x4CF576D3,\n    0x28074E34, 0x5D6F58ED, 0x234045D1, 0x51CE35F9, 0x25297896, 0x644320FE,\n    0x0F4449A9, 0x54C361C6, 0x701D52F1, 0x4E094820, 0x718F0810, 0x61540689,\n    0x79DE5A1F, 0x52865C23, 0x48AC3A4B, 0x6A0C1BE0, 0x21B705DB, 0x7086465D,\n    0x1CC10929, 0x1E1D716E, 0x6D231D4C, 0x20495108, 0x38FF1971, 0x149C78D4,\n    0x441F1E8B, 0x43D95372, 0x69C324B4, 0x210B7DC9, 0x47815E78, 0x02476137,\n    0x6163DDF , 0x390D6EC2, 0x2F684E5B, 0x0E680ABD, 0x02232615, 0x12593380,\n    0x7B1465FE, 0x065A6957, 0x130F53EB, 0x6D772EF7, 0x10E916B6, 0x63BC7A68,\n    0x2ACB00BB, 0x651C5590, 0x194714B5, 0x730904EE, 0x59BB61B4, 0x34867DBC,\n    0x391C706C, 0x3C164218, 0x28931CD0, 0x129A66AB, 0x13171F4D, 0x62882872,\n    0x4B167FD4, 0x66902F4C, 0x7A794932, 0x54B152C , 0x30856EA9, 0x39466D55,\n    0x36696451, 0x0F5B1E8C, 0x077A3C6A, 0x51B956B4, 0x367E2D2A, 0x1D2C662A,\n    0x78FB6880, 0x4E6D40B6, 0x40706FDC, 0x4DF9679C, 0x20306EDB, 0x63812AE7,\n    0x255D2748, 0x1B8B617B, 0x3E036FAD, 0x04E444A7, 0x55A37517, 0x669B2988,\n    0x18FD5E8C, 0x67BD05CE, 0x34BB346C, 0x76994800, 0x05B958B6, 0x6DFA2FEF,\n    0x2055B5C , 0x1F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB90B61, 0x43235DAC,\n    0x31D424B4, 0x768C0D7E, 0x162F2F9D, 0x7B2A7A99, 0x79392693, 0x442D12C0,\n    0x0692273E, 0x59A16E80, 0x5D956856, 0x44E73DAC, 0x0D874532, 0x5F5C1DD0,\n    0x5D167858, 0x05597EA2, 0x1D821476, 0x59654ED2, 0x594C0DC7, 0x1A873506,\n    0x3F693200, 0x7A651AB5, 0x20CC3C8A, 0x1F9E662C, 0x78E7631 , 0x2A01DA0 ,\n    0x3088472F, 0x12EE0D42, 0x360D4D5F, 0x73337E48, 0x0D634C06, 0x233A0ACB,\n    0x706651ED, 0x7AA54079, 0x262239D1, 0x3EBB6BB6, 0x225A4F3D, 0x32581A06,\n    0x6E6F5780, 0x577377C7, 0x75ED1DDC, 0x10DF2D15, 0x3C7929BC, 0x37175917,\n    0x354E381C, 0x762A2DD7, 0x76435AC1, 0x73BB749E, 0x52FE4E7E, 0x6C8140F4,\n    0x57694875, 0x12D30822, 0x474227CF, 0x37926D98, 0x121C7E24, 0x204E1EE7,\n    0x58C6268 , 0x2152080 , 0x316C3323, 0x7AB14A31, 0x61C13C03, 0x7D8E74F1,\n    0x73F446D0, 0x6C6C6A0A, 0x3BFD79FB, 0x67242969, 0x3E5524EB, 0x0FF5534 ,\n    0x52F05F1C, 0x17102DE3, 0x540F4A21, 0x798468E7, 0x419545EB, 0x193F7880,\n    0x2B246B20, 0x408A2BC4, 0x4BF66A49, 0x40894C55, 0x4CAA6398, 0x247856E9,\n    0x2F2A647D, 0x22F55D33, 0x70D37915, 0x50634C72, 0x5983671 , 0x2BCC5AF8,\n    0x1A77D48 , 0x411B5CFA, 0x71074D7E, 0x3A6B3593, 0x61425F05, 0x6271012A,\n    0x5B830310, 0x3D8418CA, 0x10A50792, 0x239F7137, 0x213D5071, 0x7F9930D4,\n    0x2462664F, 0x54180F8E, 0x291505BA, 0x6586387A, 0x144B2C12, 0x18E425C7,\n    0x3AA43373, 0x18F0503C, 0x19462AC0, 0x58B452EF, 0x72473895, 0x26BF5435,\n    0x6DA553B , 0x60912FA6, 0x5C337331, 0x3D93CD7 , 0x4D035752, 0x20691929,\n    0x389962F9, 0x36E701E9, 0x758B642C, 0x5FCA69E3, 0x596027F4, 0x2D5A2FD0,\n    0x5F18324A, 0x3DB165AA, 0x76BA3876, 0x1BC21AF6, 0x3CC10841, 0x73A60174,\n    0x625B7F58, 0x67C57724, 0x4458653C, 0x61573095, 0x2B370837, 0x03DF6CE3,\n    0x5D086EFA, 0x3F5227C2, 0x191B4785, 0x60843D82, 0x30DE11F1, 0x105E226C,\n    0x6E1C7AA2, 0x47AA5D14, 0x36676D03, 0x3B8D4DF6, 0x7372694 , 0x409521DC,\n    0x744206A , 0x4722023F, 0x2BE46AD5, 0x63E11D76, 0x4A4A09AB, 0x5CF252B9,\n    0x31586916, 0x4DFD7D84, 0x32037634, 0x2D7329D4, 0x4524582F, 0x2E5366C1,\n    0x3B0E019B, 0x38530C6A, 0x6A2542D , 0x0A6A00E5, 0x119725CC, 0x54065347,\n    0x1B6F7AF1, 0x6CCF71F1, 0x181117F2, 0x71674A76, 0x74F43880, 0x77A55F47,\n    0x59EA5B62, 0x4A331D95, 0x3CBB276F, 0x245C4D50, 0x4718D5  , 0x07CE05D1,\n    0x60D47AD5, 0x25CA1C40, 0x30061766, 0x669B39DF, 0x3D5F1320, 0x19306AD3,\n    0x28B30325, 0x0DD090F , 0x6A6E6F37, 0x2DF16F66, 0x2B514C7E, 0x31101C58,\n    0x7D4847FC, 0x515341CA, 0x77AB0EA6, 0x41320DAF, 0x3AF8531E, 0x24B31611,\n    0x6D377331, 0x7A832A22, 0x222511C7, 0x722D1F89, 0x3B194F18, 0x261B0A4D,\n    0x43F676DB, 0x4F8C6D61, 0x190F2250, 0x202E72A9, 0x560D4EA2, 0x308E67B4,\n    0x36746663, 0x17CC3852, 0x27EB2EAC, 0x7FDE0AA8, 0x264719A , 0x23261EDD,\n    0x3C0B339E, 0x06284D40, 0x48D82ECB, 0x24D44CF8, 0x43631B91, 0x4BF04248,\n    0x36497B9B, 0x68273C58, 0x630B7AF9, 0x20CC3F26, 0x6C3B7B71, 0x574433ED,\n    0x7A2552F6, 0x4CDE642D, 0x565B0142, 0x26F9207F, 0x67A207BE, 0x5B506684,\n    0x44DA4780, 0x11756A0C, 0x156104AF, 0x415561B0, 0x6E3A6886, 0x1DBA1EA2,\n    0x542359C8, 0x4C024E22, 0x758F052A, 0x1DD6395 , 0x2D194BAD, 0x616475A1,\n    0x42084602, 0x09C274AD, 0x13CB5562, 0x57FE2D5B, 0x607A4EE5, 0x16723A91,\n    0x4F624CCF, 0x2E5E24A3, 0x28FE6FAF, 0x3DDA6EF4, 0x32AF540C, 0x19A57B3B,\n    0x5D1D73A3, 0x23424B3E, 0x278445F5, 0x53971C3B, 0x427D7943, 0x5221358C,\n    0x26CE1A5E, 0x7B506CA4, 0x3B86636E, 0x60831F6D, 0x45E142F3, 0x21B77B04,\n    0x7BB65E0C, 0x78B80F5E, 0x7D8D172B, 0x3BF33A90, 0x2D572D9 , 0x2B5B4920,\n    0x36A05E01, 0x52745306, 0x47C64855, 0x1CAA669B, 0x304A2641, 0x4D6B1760,\n    0x3E176D79, 0x523241B0, 0x24A67957, 0x4BDE76AF, 0x4E5F1493, 0x4C215DA5,\n    0x33A052B , 0x1A4D00C2, 0x40AE6BCA, 0x390D106B, 0x69E86018, 0x5AF356CF,\n    0x63561D4 , 0x44F31C6 , 0x14B6299B, 0x0D2E25F0, 0x4CBF132A, 0x45AC18B6,\n    0x2227567D, 0x06B54E2F, 0x26344534, 0x22C515EC, 0x2442370D, 0x6C3721C6,\n    0x34EF687D, 0x1C06323A, 0x6AF36A60, 0x60396F52, 0x6AE70AA1, 0x49D06CBC,\n    0x6F9576C8, 0x584C4258, 0x3A9A27BB, 0x66DF0D47, 0x1D4804EA, 0x57DD1E67,\n    0x789C7895, 0x75336111, 0x25C122C8, 0x62742114, 0x4FBF6D26, 0x3F9F6482,\n    0x66F02CD9, 0x11083202, 0x499E2618, 0x7EBC1351, 0x440112F1, 0x49DF7BC1,\n    0x3BF45C25, 0x31BA7FA0, 0x61AF1AED, 0x6B1F7D29, 0x2D865294, 0x63E01129,\n    0x7E9E77A5, 0x100435D7, 0x1FE3A71 , 0x08597C81, 0x722849FA, 0x31C520AF,\n    0x7BA178DC, 0x7F102D31, 0x5CA07864, 0x150E6F98, 0x02C34882, 0x5D041F11,\n    0x0C613C57, 0x53984FD1, 0x426F38AD, 0x55992B1D, 0x7AFA078D, 0x2B253413,\n    0x594B32CF, 0x32887E38, 0x28933B46, 0x1A0B4168, 0x291B4A94, 0x653A5E8D,\n    0x21746BBE, 0x5EFE6415, 0x30DA429C, 0x50C5640C, 0x34711AA4, 0x529C67A6,\n    0x105957CD, 0x4D287499, 0x03CA0AA7, 0x28385832, 0x25A04A02, 0x420D47A4,\n    0x35627556, 0x4BC11E4C, 0x59E215C7, 0x27E838B4, 0x458612F4, 0x22827F6F,\n    0x449D4DBA, 0x679B7362, 0x4E495845, 0x4FD270D1, 0x395E76A0, 0x375A655E,\n    0x12E2058F, 0x73F970CA, 0x61EF73B3, 0x51FF5362, 0x67410345, 0x7FDA0B3B,\n    0x221962E8, 0x17AB6543, 0x26557412, 0x4B30084D, 0x268E191D, 0x7E0D13DF,\n    0x73EF127D, 0x4DEC5DB1, 0x77FA745F, 0x56002898, 0x12DD0A40, 0x157F6DDF,\n    0x42A55F8E, 0x43597924, 0x7B630C3F, 0x338B6B58, 0x32945F75, 0x4FA23A0E,\n    0x036E38C0, 0x33B18FD , 0x06114337, 0x24660ACB, 0x19BB02F0, 0x124C0A47,\n    0x3A951701, 0x01155ABF, 0x0C612D71, 0x36074CA7, 0x51660C41, 0x635F58C7,\n    0x7FC2002D, 0x0E6A7CF3, 0x65B07D07, 0x015F6A6B, 0x791B70DD, 0x6E475719,\n    0x424314C7, 0x68426EB , 0x71942FEE, 0x464A2F52, 0x677579FD, 0x6BA775AE,\n    0x1F66EFF , 0x1A795237, 0x78D9545F, 0x1D0B344D, 0x3BD34AB7, 0x2F85312A,\n    0x16C542AD, 0x3990185D, 0x08DF3351, 0x02811AA5, 0x6D351F41, 0x4066269D,\n    0x06B660BF, 0x6EDB4768, 0x5DD70CF0, 0x35D74F6E, 0x689E220C, 0x11431687,\n    0x147C49C9, 0x385762BD, 0x302F0AE4, 0x1DAB67F8, 0x483256C9, 0x37D50FCB,\n    0x4EA82711, 0x4D7B2C98, 0x19DB78BC, 0x58DE0DC2, 0x6AFF7E7B, 0x37621C93,\n    0x792C6E19, 0x77001192, 0x7F88439D, 0x2E196A66, 0x6C71378C, 0x6AF43B3A,\n    0x7C16225E, 0x6687337 , 0x4BEE1608, 0x6D5B5552, 0x345D4590, 0x681209CC,\n    0x7B242819, 0x508A1416, 0x19880FE3, 0x1FC7288A, 0x24BD0502, 0x6A1D1678,\n    0x20E6CA0 , 0x59BE2057, 0x5ADE11EB, 0x5EA8649D, 0x7A200E6F, 0x1149481D,\n    0x72281E93, 0x0A5B0451, 0x67312D58, 0x63B849F1, 0x52217960, 0x7CDF59F3,\n    0x33C775C0, 0x1EBA0799, 0x7DF1506 , 0x34E96110, 0x38FC73E3, 0x5EA059B2,\n    0x022936EA, 0x316406F6, 0x43911185, 0x6C0D10F3, 0x1C6F3DF8, 0x38DB12A9,\n    0x5CD41244, 0x2C9F0A7B, 0x5F4A315F, 0x77CE1C66, 0x4C800860, 0x318D53E0,\n    0x7105420D, 0x575361F2, 0x750810BA, 0x217E4CA5, 0x2010140 , 0x4D884763,\n    0x42BB0DA7, 0x32D53A74, 0x141C6CD4, 0x087F5FC3, 0x464B53  , 0x2D2A05F6,\n    0x15532B45, 0x5D5C3CE1, 0x3EB9216A, 0x2214611B, 0x1FC52C5F, 0x11AE5DD7,\n    0x20B925A9, 0x7C640AF4, 0x740009AC, 0x6D0E0321, 0x38E6A61 , 0x09104544,\n    0x474F26C8, 0x15254CF3, 0x341A6B59, 0x661904CE, 0x598B2197, 0x2412659D,\n    0x61976DD4, 0x329B3E16, 0x08FD1FB0, 0x304006F3, 0x3456309 , 0x55CC15F1,\n    0x59DA7630, 0x5C801335, 0x0036D52 , 0x353775A5, 0x299476EB, 0x75280568,\n    0x766F5264, 0x2EA233A6, 0x647619F3, 0x7FB30C7A, 0x1BC03B9 , 0x36BC3061,\n    0x3F30596E, 0x3E2A527B, 0x0AC04220, 0x641979A3, 0x1ECC3B89, 0x21447BC1,\n    0x4E8F2E26, 0x0C5A1D90, 0x299E5467, 0x57C947E3, 0x1D4865ED, 0x76F31C3D,\n    0x4EE81CDF, 0x3479195E, 0x6FFB3AE1, 0x5C82398 , 0x300F7364, 0x47940AFA,\n    0x3B853E3E, 0x598C440D, 0x224A3D89, 0x3A674204, 0x22880A38, 0x2E77F2D ,\n    0x22841C9C, 0x4F0609C3, 0x1FE90922, 0x09335017, 0x2D6B69A7, 0x7EDB63F9,\n    0x099A74EF, 0x1F9F1B40, 0x24BE17E8, 0x251D2F7A, 0x16AC50D3, 0x28D7ED6 ,\n    0x6D193443, 0x76156F1B, 0x30DF6A4E, 0x64FF6794, 0x63DB2C9A, 0x74353022,\n    0x556E025C, 0x23802AF9, 0x425018A4, 0x675A18BB, 0x70B227B9, 0x7FB01BF ,\n    0x63E7910 , 0x6C661591, 0x65745D2B, 0x4F6E379D, 0x52B32FAC, 0x1E6A1101,\n    0x1DE22385, 0x2338191F, 0x469704B6, 0x4BAB4599, 0x54EB4809, 0x78393E6D,\n    0x550017DD, 0x39B120E1, 0x288D52D3, 0x2D52668C, 0x20D22A68, 0x4E1207D1,\n    0x3FCC0EFE, 0x47F37E64, 0x25177A90, 0x34BF5D4D, 0x5A8D3DCE, 0x6F7275A8,\n    0x6BEA2655, 0x2A1810FC, 0x64DB593A, 0x0A4D4BC0, 0x2C402E93, 0x71C077F9,\n    0x6F0C4577, 0x70412414, 0x752F1DC1, 0x582E38EA, 0x2C455F7B, 0x4DCD4EDB,\n    0x12BC2696, 0x7B037135, 0x4FCA1F8C, 0x3D5E75F6, 0x502F41B0, 0x361653F1,\n    0x2E5B0E31, 0x20266B19, 0x57E703D7, 0x467B3E00, 0x47032BA3, 0x1F776B9C,\n    0x62570A84, 0x7EC75B48, 0x1BD5012 , 0x7D0A2D5D, 0x7FCC29F2, 0x291304B6,\n    0x19D558ED, 0x47551C8 , 0x7D12738F, 0x3ADE0892, 0x5F741997, 0x25D2E2F ,\n    0x2B9F2269, 0x5C134FED, 0x15E92399, 0x54437F4E, 0x272D32AB, 0x56186AA1,\n    0x7E4D355C, 0x234D7836, 0x2A871760, 0x4637A94 , 0x2C183207, 0x5FC78B3 ,\n    0x7F10621E, 0x276966B2, 0x6C9F4A11, 0x4E3F182C, 0x62BA2EF5, 0x25F239CD,\n    0x73D63FED, 0x636E1F5E, 0x0AC15A0E, 0x3F3D33EB, 0x738326EA, 0x35C366B1,\n    0x4D476E86, 0x02F63208, 0x711A1FC1, 0x426A4396, 0x7E4D1B93, 0x75E46DB7,\n    0x2F3C44A7, 0x51A56F5C, 0x7AD2463D, 0x0A5639CA, 0x49952C78, 0x4C4B64F6,\n    0x3AFE7F8D, 0x66993D04, 0x43867F37, 0x4BC146C2, 0x55A875EC, 0x681A1A75,\n    0x30A67E1B, 0x4A4A7D0C, 0x20F77993, 0x1891805 , 0x738976AD, 0x542667D6,\n    0x3C5C6EBF, 0x4499187F, 0x2BF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456,\n    0x421B4F29, 0x76740F9C, 0x09163B8D, 0x3D72AAB , 0x1AD54DD7, 0x754946EE,\n    0x7317342B, 0x218546D4, 0x10563DA7, 0x54BB4CCE, 0x0CE63E46, 0x5D146234,\n    0x33BE6C63, 0x325044E5, 0x09D72335, 0x07C36BA , 0x365530CC, 0x2DFA448C,\n    0x1663516F, 0x59B00AA , 0x150274EA, 0x12532D4A, 0x3CEF002D, 0x492F3DA5,\n    0x263A2574, 0x6F8005C2, 0x14A10651, 0x2F627ABA, 0x68293238, 0x26987646,\n    0x52590516, 0x10144D36, 0x59B151B9, 0x2B2A4F05, 0x53953699, 0x27851C75,\n    0x180646F3, 0x2E970306, 0x32843145, 0x18F4FE8F\n};\n\n/* The source data is random across the q31_t range. Accessing it by word should\n   remain random. */\nconst q15_t * fast_math_q15_inputs = (q15_t *) fast_math_q31_inputs;\n\nconst float32_t fast_math_f32_inputs[FAST_MATH_MAX_LEN] =\n{\n    /* Special values close to increments of pi/2 */\n    -0.0,       0.0,        -1.5E-07,   1.5E-07,    1.5707964,  1.5707965,\n    -1.5707964, -1.5707965, 3.1415925,  3.1415927,  -3.1415925, -3.1415927, \n    6.2831855,  6.283186,   -6.2831855, -6.283186, \n\n    /* Test some slightly larger values too */\n    10.1,       -13.2,\n\n    /* Random values (0, 2pi) */\n    -1.3684878, 1.1444261, 0.2627620, 0.6719343, 3.8732286, 5.9040643,\n    -2.2271110, 2.5800587, 6.1848498, 5.9412493, 4.2514839, 6.2096863,\n    -4.8181437, 2.1155439, 4.1618680, 1.5341357, 1.8567268, 4.2736867,\n    -3.3165594, 2.5861183, 3.7864876, 4.7156566, 3.6664471, 3.4670146,\n    -3.6666823, 3.2158594, 0.5189454, 4.5211925, 6.2590334, 2.2276047,\n    -6.1025991, 2.1768018, 5.5703194, 2.8569321, 2.5976403, 1.3680509,\n    -0.7895111, 1.9409676, 4.5622487, 4.9189303, 4.3591961, 0.0615894,\n    -5.2980657, 5.7951829, 4.8440482, 0.2680398, 2.3762136, 4.4254964,\n    -4.5836656, 1.4091744, 1.6905207, 4.2287795, 3.0001720, 3.9189258,\n    -1.4856273, 1.1129014, 5.2128031, 4.8187110, 5.8715002, 0.6778860,\n    -1.1449692, 0.6226340, 3.0772767, 1.2141962, 5.6290528, 0.6225986,\n    -0.2775005, 3.5015887, 4.8537297, 1.9599772, 1.1245801, 2.1297213,\n    -1.3203840, 3.2053828, 5.6948550, 3.9516457, 0.6379562, 2.4558128,\n    -0.3431663, 3.1496534, 2.7125841, 6.2678565, 5.0994494, 3.0514394,\n    -5.6199810, 0.8642307, 2.4504731, 5.8267510, 5.7647838, 4.4835177,\n    3.8851284, 2.1569414, 5.8812331, 0.7839784, 4.5904032, 4.0619375,\n    5.2348483, 2.5024810, 4.7112719, 5.2478452, 2.0260784, 3.4699621,\n    6.1520498, 3.4514073, 2.0761128, 3.8922546, 2.2659464, 4.7532896,\n    2.6006151, 3.0934955, 4.3652005, 6.1118673, 2.0593452, 5.2640727,\n    4.6437278, 5.9952549, 0.2005758, 2.2422740, 4.1635768, 1.7687265,\n    1.4475395, 4.4681525, 3.9243074, 3.7109036, 4.1496541, 0.2987948,\n    2.1914796, 2.8358565, 1.5136507, 4.4927603, 5.3795520, 1.7687650,\n    4.5933278, 0.8655898, 5.2572843, 0.8708603, 3.6958286, 2.3006310,\n    5.0690197, 3.1653480, 3.0762120, 5.5106597, 2.2188555, 2.8239372,\n    6.0540393, 0.2657649, 6.1132775, 1.1888217, 4.1916405, 3.6847088,\n    4.2418564, 2.2683684, 3.8973243, 5.0966113, 0.1209983, 0.5269928,\n    6.1248595, 4.0925498, 1.4529100, 2.5352096, 0.7666775, 1.6866509,\n    1.6200953, 2.0839142, 0.9565145, 2.1865966, 0.7644026, 5.5552975,\n    0.5923686, 5.8436176, 2.5071164, 0.2978322, 2.1511962, 4.6242118,\n    4.9931353, 3.4237447, 4.3116692, 5.6148598, 0.3442670, 1.9079607,\n    0.2902301, 1.2282167, 4.5249352, 4.5349096, 5.5153742, 3.6595342,\n    0.4441228, 5.7977751, 5.0288862, 1.7966571, 3.4159368, 6.1875316,\n    4.4967379, 5.2714014, 2.7222564, 2.9570223, 3.5230663, 1.6907520,\n    4.7062218, 3.1660203, 4.0640250, 1.9336225, 0.8716326, 2.9881129,\n    2.2773988, 4.9518627, 4.9027432, 4.2003861, 0.8388295, 0.1354396,\n    3.5175829, 1.8901016, 5.9024853, 6.1631993, 1.8008890, 5.0317023,\n    5.6304337, 3.7543702, 5.5544410, 5.9296402, 3.4504620, 4.5765894,\n    3.6238793, 0.1624673, 2.8056369, 4.0608350, 3.2748147, 2.3393094,\n    5.8881908, 5.2121085, 5.3349614, 2.3407017, 3.7270886, 5.4824095,\n    5.8653636, 4.2000849, 1.2992148, 4.1082644, 0.4527132, 2.5555406,\n    4.1904544, 5.8667713, 5.0953493, 3.0445066, 4.7547955, 2.6203864,\n    6.1059115, 6.2076281, 5.4295991, 2.4434288, 2.8572272, 1.5499814,\n    4.9286757, 5.5470323, 5.7410198, 3.5078076, 3.7627993, 0.9354200,\n    5.6530665, 2.8299063, 1.2922774, 5.6526739, 4.7914663, 5.5448250,\n    1.7903950, 4.2300036, 4.1737937, 0.7716694, 2.5592571, 1.7296789,\n    4.5029688, 1.7805566, 5.6309835, 5.1935484, 2.4506089, 3.1284165,\n    4.3655898, 5.2424950, 3.8304163, 3.6111801, 2.0485834, 2.8678003,\n    4.4849099, 5.5568808, 4.5292698, 0.1169475, 4.2397456, 2.7552322,\n    2.7509053, 0.7353640, 5.1187960, 2.0411269, 1.5470969, 2.1533307,\n    2.3605433, 3.4340988, 3.5306485, 2.4870244, 2.5015301, 3.2381477,\n    4.1313862, 5.9747764, 4.5386496, 2.5137752, 5.2268018, 0.8440727,\n    0.3799239, 0.5293398, 0.0000000, 2.0371338, 1.8958053, 0.0733938,\n    3.3923238, 0.5992443, 0.9205800, 3.9655772, 5.3992694, 6.1212150,\n    3.5866836, 6.2633946, 3.4780043, 3.2387210, 2.0777367, 2.7017810,\n    3.0901098, 0.4463392, 5.5778300, 0.4061048, 2.7406309, 5.1938664,\n    2.4789345, 3.8545764, 5.1436714, 5.5683790, 5.8503469, 1.1987353,\n    1.6247202, 5.6414565, 3.7282025, 3.1657206, 3.8503962, 5.1485818,\n    3.3419582, 1.2696753, 2.8518968, 2.6886436, 6.0698884, 3.8959208,\n    4.3692639, 4.5249277, 2.1796068, 3.2483466, 3.4978155, 0.9832885,\n    3.5315023, 4.3655778, 2.6794992, 5.2544420, 4.5954405, 2.2621418,\n    2.8539005, 2.4277593, 4.8729535, 4.6135614, 2.7035154, 4.3589760,\n    5.9389515, 4.9274787, 4.4332387, 0.6869673, 2.4500066, 3.7127639,\n    2.8863700, 0.3162955, 1.4368865, 5.2413645, 0.0982985, 5.4268554,\n    0.4905223, 4.2037186, 3.1429204, 1.3696954, 3.5915675, 0.7677371,\n    4.2170618, 3.7673071, 0.3517086, 0.3540136, 0.9581898, 0.1232828,\n    2.7342886, 5.2290017, 3.8791769, 3.2680695, 5.4278441, 0.6138541,\n    5.7054603, 0.6786889, 3.2483864, 0.8994758, 3.5146290, 0.0287746,\n    4.8172051, 5.3325973, 5.7605579, 6.2013046, 3.1738449, 1.7053924,\n    0.6330341, 3.1909083, 3.6794907, 4.7933610, 0.5212697, 4.1569315,\n    3.2482749, 1.0747264, 5.8971330, 3.7101152, 2.7685894, 5.9182512,\n    4.1212281, 2.8396586, 5.2759745, 3.3465722, 3.4801751, 4.2729777,\n    2.3071222, 1.5035072, 3.6374836, 5.4468120, 2.5558538, 0.7075818,\n    2.7887656, 1.8861142, 2.5219880, 5.2361777, 2.5360737, 2.4515477,\n    2.2647672, 0.8812504, 1.6344462, 0.5454754, 2.6979830, 1.6165554,\n    1.8695956, 2.6694641, 0.7490013, 3.1105972, 4.4384875, 1.5304166,\n    4.9327408, 0.4655185, 2.4748426, 0.0213259, 1.3865538, 0.0081717,\n    1.1886509, 0.8952537, 1.6843712, 1.0988793, 0.8711572, 3.7629093,\n    5.6615138, 5.9022971, 1.3897429, 3.0327137, 2.3625475, 3.2910070,\n    1.6642436, 0.4295011, 2.7415239, 1.0923508, 0.1640358, 5.9984205,\n    2.7055177, 6.0416507, 4.7903915, 0.0461730, 4.2728088, 4.4356194,\n    4.0534637, 3.4702651, 1.3704176, 4.8529200, 1.4327442, 2.3302118,\n    5.5978709, 5.3807748, 2.5285646, 1.9981730, 3.8241692, 5.7189253,\n    5.7120324, 3.7170973, 2.0896078, 5.3599569, 2.7796679, 5.6822331,\n    0.2084724, 3.3453343, 4.5018856, 1.1265867, 2.1144987, 1.1794352,\n    2.0227281, 2.5375066, 3.4467437, 0.3062336, 3.4729184, 1.7266910,\n    1.5174002, 1.5277262, 0.9686124, 6.0093412, 5.8789338, 5.1441345,\n    4.5758041, 1.1046577, 2.2642776, 1.1862024, 0.0075297, 1.9881224,\n    4.3958232, 3.9285942, 3.4121603, 2.7585521, 1.8059588, 3.1520171,\n    4.7849358, 4.7903511, 3.6194660, 4.6977042, 4.0560129, 0.7742111,\n    3.1692252, 2.1819072, 0.5789810, 0.9289656, 1.2451370, 4.2239985,\n    2.7112647, 4.3630684, 1.6134250, 0.0613154, 3.3444332, 1.7554715,\n    5.9453394, 5.6953510, 2.4673100, 0.1561700, 4.2187618, 5.2600982,\n    6.1041123, 0.3577199, 2.8294680, 3.6597688, 4.3142726, 4.5203293,\n    4.0843265, 4.5673388, 2.3489542, 3.6541880, 0.7295941, 0.3622530,\n    6.1560465, 1.7896003, 3.7383338, 6.0454361, 1.1672793, 1.2129049,\n    2.1466132, 5.8615704, 2.4546365, 1.7166712, 0.9547117, 2.4951084,\n    2.3544507, 0.8238180, 2.7334414, 0.5749942, 3.8618151, 0.0689837,\n    3.6019012, 4.9620190, 1.4788531, 2.8149909, 3.5773830, 0.3857966,\n    3.1182750, 4.0357856, 1.3902536, 5.2593808, 6.1014456, 5.3179177,\n    3.1792883, 1.7522271, 4.6911344, 1.4886775, 6.0151778, 3.8972087,\n    3.7715583, 1.0845061, 0.5676653, 1.6038597, 5.3945577, 5.7244031,\n    4.3959286, 4.5564551, 1.4444168, 3.6194506, 5.0933266, 2.5374227,\n    6.2105471, 0.5654792, 2.0165320, 3.2132771, 0.3808010, 4.5596317,\n    3.4969429, 3.3260664, 5.2149334, 5.3957421, 4.9576149, 1.9970040,\n    2.8413032, 4.7263877, 0.6902815, 0.6895316, 1.6957291, 3.2963937,\n    6.1113470, 4.4636294, 1.9594738, 1.8312791, 5.3429527, 5.7280497,\n    4.0166905, 1.6045389, 0.5571039, 5.2669152, 3.6738954, 5.9571429,\n    0.3834561, 3.6734096, 1.7913869, 5.2007946, 1.2000032, 2.7804978,\n    2.4718774, 5.1935175, 4.2529065, 1.3044083, 1.9987109, 0.8407592,\n    4.2189258, 3.5876427, 1.0666779, 0.9277486, 2.9912971, 5.7057758,\n    3.4694180, 0.2069675, 0.3384307, 5.0583614, 2.8360719, 2.4042372,\n    4.9614777, 2.2888819, 3.3448533, 4.4714710, 5.4756485, 2.0652177,\n    4.0848120, 6.1250762, 0.4773170, 3.6883502, 2.6005256, 1.9423615,\n    1.6577182, 4.7674690, 6.2531264, 1.1722630, 4.9080805, 1.2302350,\n    6.2351753, 5.0407581, 2.6654950, 4.5795867, 3.1312479, 5.0830358,\n    2.2400117, 0.4602021, 3.7133088, 5.7188788, 1.2174673, 2.7166470,\n    4.7071094, 0.2462034, 5.9459353, 4.7983010, 3.5111731, 1.1551193,\n    3.1287047, 3.2537199, 6.2470131, 5.3711915, 6.0469623, 4.2659122,\n    2.5352740, 5.8746469, 3.0126903, 1.4563896, 2.4899651, 4.4301324,\n    3.5095299, 4.7540509, 6.2547920, 6.0471349, 3.3619258, 6.0561746,\n    0.7264988, 0.3232592, 1.9122808, 3.6454528, 3.3361480, 5.6624574,\n    3.3963785, 2.7142142, 3.4096772, 4.4762342, 0.1047703, 5.0323343,\n    0.8954125, 3.0063438, 1.6137441, 2.3190715, 4.1579916, 1.0656836,\n    1.7516517, 1.2454643, 1.2256706, 2.0535941, 5.5313259, 2.9600203,\n    2.5382144, 1.1261446, 6.0879353, 2.5601199, 5.3060708, 3.8662016,\n    2.3663172, 5.5114955, 4.9313732, 2.9213939, 5.1143679, 5.6450910,\n    2.6969853, 2.1006537, 3.7488443, 5.6673754, 4.4112136, 2.3716204,\n    4.6178643, 5.9948046, 3.4105954, 3.3935850, 1.9547595, 0.4475800,\n    1.1434170, 0.5842667, 2.9121888, 0.0586379, 5.7492774, 4.0384655,\n    0.0089162, 0.1909163, 1.3098570, 2.8586366, 0.7996361, 0.0543350,\n    4.5683759, 2.2249794, 4.9036865, 2.7435946, 2.7429546, 0.3092155,\n    0.3118464, 0.5723993, 3.7324447, 1.5147758, 5.2864780, 5.3860266,\n    6.0545540, 3.0718480, 1.3842492, 1.4213108, 3.3727372, 4.7884765,\n    2.1838288, 2.8980046, 4.0169897, 5.7637923, 1.0151904, 4.4964699,\n    3.6300404, 2.7224978, 5.5558613, 2.4696170, 1.1245340, 3.9793522,\n    3.9207111, 2.0605178, 5.0451799, 6.2799046, 6.1636676, 0.7981966,\n    1.4592079, 0.1484872, 3.8166117, 0.6962355, 2.5601436, 5.5548184,\n    3.4440198, 2.3185147, 1.3090764, 2.7705283, 6.0079576, 0.7792778,\n    2.9578927, 5.3840384, 0.2726304, 4.3456090, 6.1511471, 1.7798247,\n    0.8405677, 4.3057392, 5.7142715, 3.8382030, 5.6547587, 1.2153801,\n    4.7401894, 2.1756202, 2.6303011, 0.9784166, 5.1459324, 3.9265103,\n    4.6405120, 5.0586705, 0.4223724, 5.9739917, 3.1263686, 4.7447217,\n    4.6646686, 5.2221411, 0.9833301, 2.8733554, 3.8836400, 5.8570808,\n    -5.2470141, 5.6261119, 3.6600718, 3.6615062, 5.3716581, 0.2190677,\n    -5.5632585, 2.5618482, 0.2285950, 4.6881858, 0.9728179, 0.9042027,\n    -3.8073530, 1.5989503, 2.0367209, 2.5245268, 2.5533189, 2.4265105,\n    -3.8314979, 1.0486053, 1.1818174, 0.5945707, 2.0306392, 4.8355201,\n    -1.4710068, 4.6518534, 4.3531065, 5.1778361, 5.2023364, 1.8432851,\n    -1.9438243, 3.2862931, 2.0439139, 5.2266206, 5.0912323, 3.4997233,\n    -1.6522518, 4.2761236, 1.4680860, 2.8678051, 2.4163051, 3.3841326,\n    -6.2310582, 4.7451897, 6.1603795, 1.4751828, 3.3210347, 0.3231823,\n    -4.7555888, 3.7823504, 5.3857498, 6.2095284, 5.8401232, 2.5730582,\n    -0.0021455, 3.3984387, 1.3052100, 1.3777994, 2.0471011, 0.6028680,\n    -4.6968925, 4.7030205, 3.4136510, 2.1245480, 5.2297066, 3.4719134,\n    -6.0164208, 5.6098372, 2.2399783, 3.4331443, 2.1782657, 3.9131853,\n    -5.0053405, 4.6864702, 0.7887674, 5.1672539, 0.1580253, 2.6039335,\n    -4.5955687, 4.9095176, 2.3077255, 4.6801428, 5.6062801, 1.5243220,\n    -0.8142818, 1.4141432, 2.1992023, 1.8038058, 5.8275790, 0.3224138,\n    -3.7238350, 1.0235240, 5.2678588, 1.0528164, 3.1554195, 6.2789723,\n    -2.2330890, 0.2957980, 1.3424690, 2.4996969, 2.0964990, 1.4426353,\n    -5.8818165, 4.2926017, 6.0451393, 2.7518666, 5.9083095, 0.0366581,\n    -3.8346722, 5.0333074, 1.4638661, 5.8588735, 4.7957215, 5.1927356,\n    -3.6031780, 4.9799375, 2.0674268, 1.4040530, 1.9627813, 3.6726693,\n    -5.2145043, 1.8250297, 2.5293238, 5.4164658, 3.8625225, 6.2278165,\n    -1.2798778, 5.1975080, 4.2465638, 1.5641957, 2.9894493, 2.5074636,\n    -3.7663816, 5.0298329, 0.6601666, 5.1612735, 5.2847013, 2.2274284,\n    -2.7022061, 3.5954850, 4.4034117, 4.6650751, 4.7619266, 2.4449681,\n    -2.6973871, 6.0088907, 3.6000853, 5.3389611\n};\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/biquad_tests.c",
    "content": "#include \"jtest.h\"\n#include \"filtering_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"filtering_templates.h\"\n#include \"type_abbrev.h\"\n\n#define BIQUAD_DEFINE_TEST(suffix, instance_name, config_suffix, output_type)    \\\n   JTEST_DEFINE_TEST(arm_biquad_cascade_##config_suffix##_##suffix##_test,       \\\n         arm_biquad_cascade_##config_suffix##_##suffix)                          \\\n   {                                                                             \\\n      instance_name biquad_inst_fut = { 0 };                                     \\\n      instance_name biquad_inst_ref = { 0 };                                     \\\n                                                                                 \\\n      TEMPLATE_DO_ARR_DESC(                                                      \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes             \\\n            ,                                                                    \\\n         TEMPLATE_DO_ARR_DESC(                                                   \\\n               numstages_idx, uint16_t, numStages, filtering_numstages           \\\n               ,                                                                 \\\n               /* Initialize the BIQUAD Instances */                             \\\n               arm_biquad_cascade_##config_suffix##_init_##suffix(               \\\n                     &biquad_inst_fut, numStages,                                \\\n                     (output_type*)filtering_coeffs_b_##suffix,                  \\\n                     (void *) filtering_pState);                                 \\\n                                                                                 \\\n               /* Display test parameter values */                               \\\n               JTEST_DUMP_STRF(\"Block Size: %d\\n\"                                \\\n                               \"Number of Stages: %d\\n\",                         \\\n                               (int)blockSize,                                   \\\n                               (int)numStages);                                  \\\n                                                                                 \\\n               JTEST_COUNT_CYCLES(                                               \\\n                     arm_biquad_cascade_##config_suffix##_##suffix(              \\\n                           &biquad_inst_fut,                                     \\\n                           (void *) filtering_##suffix##_inputs,                 \\\n                           (void *) filtering_output_fut,                        \\\n                           blockSize));                                          \\\n                                                                                 \\\n               arm_biquad_cascade_##config_suffix##_init_##suffix(               \\\n                     &biquad_inst_ref, numStages,                                \\\n                     (output_type*)filtering_coeffs_b_##suffix,                  \\\n                     (void *) filtering_pState);                                 \\\n                                                                                 \\\n               ref_biquad_cascade_##config_suffix##_##suffix(                    \\\n                     &biquad_inst_ref,                                           \\\n                     (void *) filtering_##suffix##_inputs,                       \\\n                     (void *) filtering_output_ref,                              \\\n                     blockSize);                                                 \\\n                                                                                 \\\n               FILTERING_SNR_COMPARE_INTERFACE(                                  \\\n                     blockSize,                                                  \\\n                     output_type)));                                             \\\n                                                                                 \\\n            return JTEST_TEST_PASSED;                                            \\\n   }\n\n#define BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(suffix, config_suffix, speed, output_type)   \\\n   JTEST_DEFINE_TEST(arm_biquad_cascade_##config_suffix##speed##_##suffix##_test,      \\\n         arm_biquad_cascade_##config_suffix##speed##_##suffix)                         \\\n   {                                                                                   \\\n      arm_biquad_casd_##config_suffix##_inst_##suffix biquad_inst_fut = { 0 };         \\\n      arm_biquad_casd_##config_suffix##_inst_##suffix biquad_inst_ref = { 0 };         \\\n                                                                                       \\\n      TEMPLATE_DO_ARR_DESC(                                                            \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes                   \\\n            ,                                                                          \\\n         TEMPLATE_DO_ARR_DESC(                                                         \\\n               numstages_idx, uint16_t, numStages, filtering_numstages                 \\\n               ,                                                                       \\\n            TEMPLATE_DO_ARR_DESC(                                                      \\\n                  postshifts_idx, uint8_t, postShift, filtering_postshifts             \\\n                  ,                                                                    \\\n                  /* Display test parameter values */                                  \\\n                  JTEST_DUMP_STRF(\"Block Size: %d\\n\"                                   \\\n                                  \"Number of Stages: %d\\n\"                             \\\n                                  \"Post Shift: %d\\n\",                                  \\\n                                  (int)blockSize,                                      \\\n                                  (int)numStages,                                      \\\n                                  (int)postShift);                                     \\\n                                                                                       \\\n                  /* Initialize the BIQUAD Instances */                                \\\n                  arm_biquad_cascade_##config_suffix##_init_##suffix(                  \\\n                        &biquad_inst_fut, numStages,                                   \\\n                        (output_type*)filtering_coeffs_b_##suffix,                     \\\n                        (void *) filtering_pState, postShift);                         \\\n                                                                                       \\\n                  JTEST_COUNT_CYCLES(                                                  \\\n                        arm_biquad_cascade_##config_suffix##speed##_##suffix(          \\\n                              &biquad_inst_fut,                                        \\\n                              (void *) filtering_##suffix##_inputs,                    \\\n                              (void *) filtering_output_fut,                           \\\n                              blockSize));                                             \\\n                                                                                       \\\n                  arm_biquad_cascade_##config_suffix##_init_##suffix(                  \\\n                        &biquad_inst_ref, numStages,                                   \\\n                        (output_type*)filtering_coeffs_b_##suffix,                     \\\n                        (void *) filtering_pState, postShift);                         \\\n                                                                                       \\\n                  ref_biquad_cascade_##config_suffix##speed##_##suffix(                \\\n                        &biquad_inst_ref,                                              \\\n                        (void *) filtering_##suffix##_inputs,                          \\\n                        (void *) filtering_output_ref,                                 \\\n                        blockSize);                                                    \\\n                                                                                       \\\n                  FILTERING_SNR_COMPARE_INTERFACE(                                     \\\n                        blockSize,                                                     \\\n                        output_type))));                                               \\\n                                                                                       \\\n            return JTEST_TEST_PASSED;                                                  \\\n   }\n\n\nJTEST_DEFINE_TEST(arm_biquad_cas_df1_32x64_q31_test,\n      arm_biquad_cas_df1_32x64_q31)\n{\n   arm_biquad_cas_df1_32x64_ins_q31 biquad_inst_fut = { 0 };\n   arm_biquad_cas_df1_32x64_ins_q31 biquad_inst_ref = { 0 };\n\n   TEMPLATE_DO_ARR_DESC(\n         blocksize_idx, uint32_t, blockSize, filtering_blocksizes\n         ,\n      TEMPLATE_DO_ARR_DESC(\n            numstages_idx, uint16_t, numStages, filtering_numstages\n            ,\n         TEMPLATE_DO_ARR_DESC(\n               postshifts_idx, uint8_t, postShift, filtering_postshifts\n               ,\n               /* Initialize the BIQUAD Instances */\n               arm_biquad_cas_df1_32x64_init_q31(\n                     &biquad_inst_fut, numStages,\n                     (q31_t*)filtering_coeffs_b_q31,\n                     (void *) filtering_pState, postShift);\n\n              /* Display test parameter values */\n              JTEST_DUMP_STRF(\"Block Size: %d\\n\"\n                              \"Number of Stages: %d\\n\",\n                              (int)blockSize,\n                              (int)numStages);\n\n               JTEST_COUNT_CYCLES(\n                     arm_biquad_cas_df1_32x64_q31(\n                           &biquad_inst_fut,\n                           (void *) filtering_q31_inputs,\n                           (void *) filtering_output_fut,\n                           blockSize));\n\n               arm_biquad_cas_df1_32x64_init_q31(\n                     &biquad_inst_ref, numStages,\n                     (q31_t*)filtering_coeffs_b_q31,\n                     (void *) filtering_pState, postShift);\n\n               ref_biquad_cas_df1_32x64_q31(\n                     &biquad_inst_ref,\n                     (void *) filtering_q31_inputs,\n                     (void *) filtering_output_ref,\n                     blockSize);\n\n               FILTERING_SNR_COMPARE_INTERFACE(\n                     blockSize,\n                     q31_t))));\n\n         return JTEST_TEST_PASSED;\n}\n\nJTEST_DEFINE_TEST(arm_biquad_cascade_df2T_f64_test,\n     arm_biquad_cascade_df2T_f64)\n{\n  arm_biquad_cascade_df2T_instance_f64 biquad_inst_fut = { 0 };\n  arm_biquad_cascade_df2T_instance_f64 biquad_inst_ref = { 0 };\n\n  TEMPLATE_DO_ARR_DESC(\n        blocksize_idx, uint32_t, blockSize, filtering_blocksizes\n        ,\n     TEMPLATE_DO_ARR_DESC(\n           numstages_idx, uint16_t, numStages, filtering_numstages\n           ,\n           /* Display test parameter values */\n           JTEST_DUMP_STRF(\"Block Size: %d\\n\"\n                           \"Number of Stages: %d\\n\",\n                           (int)blockSize,\n                           (int)numStages);\n\n           /* Initialize the BIQUAD Instances */\n           arm_biquad_cascade_df2T_init_f64(\n                 &biquad_inst_fut, numStages,\n                 (float64_t*)filtering_coeffs_b_f64,\n                 (void *) filtering_pState);\n\n           JTEST_COUNT_CYCLES(\n                 arm_biquad_cascade_df2T_f64(\n                       &biquad_inst_fut,\n                       (void *) filtering_f64_inputs,\n                       (void *) filtering_output_fut,\n                       blockSize));\n\n           arm_biquad_cascade_df2T_init_f64(\n                 &biquad_inst_ref, numStages,\n                 (float64_t*)filtering_coeffs_b_f64,\n                 (void *) filtering_pState);\n\n           ref_biquad_cascade_df2T_f64(\n                 &biquad_inst_ref,\n                 (void *) filtering_f64_inputs,\n                 (void *) filtering_output_ref,\n                 blockSize);\n\n           FILTERING_DBL_SNR_COMPARE_INTERFACE(\n                 blockSize,\n                 float64_t)));\n\n        return JTEST_TEST_PASSED;\n}\n\n\nBIQUAD_DEFINE_TEST(f32,arm_biquad_casd_df1_inst_f32, df1,float32_t);\nBIQUAD_DEFINE_TEST(f32,arm_biquad_cascade_df2T_instance_f32,df2T,float32_t);\nBIQUAD_DEFINE_TEST(f32,arm_biquad_cascade_stereo_df2T_instance_f32,stereo_df2T,float32_t);\nBIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q31,df1,,q31_t);\nBIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q15,df1,,q15_t);\nBIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q31,df1,_fast,q31_t);\nBIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q15,df1,_fast,q15_t);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(biquad_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n   JTEST_TEST_CALL(arm_biquad_cascade_df1_f32_test);\n   JTEST_TEST_CALL(arm_biquad_cascade_df2T_f32_test);\n   JTEST_TEST_CALL(arm_biquad_cascade_stereo_df2T_f32_test);\n   JTEST_TEST_CALL(arm_biquad_cascade_df2T_f64_test);\n   JTEST_TEST_CALL(arm_biquad_cascade_df1_q31_test);\n   JTEST_TEST_CALL(arm_biquad_cascade_df1_q15_test);\n   JTEST_TEST_CALL(arm_biquad_cascade_df1_fast_q31_test);\n   JTEST_TEST_CALL(arm_biquad_cascade_df1_fast_q15_test);\n   JTEST_TEST_CALL(arm_biquad_cas_df1_32x64_q31_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/conv_tests.c",
    "content": "#include \"jtest.h\"\n#include \"filtering_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"filtering_templates.h\"\n#include \"type_abbrev.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Header Stuff */\n/*--------------------------------------------------------------------------------*/\n\n#define CONV_MAX_INPUT_ELTS  32\n#define CONV_MAX_OUTPUT_ELTS (CONV_MAX_INPUT_ELTS * 2)\n\n#define CONV_TEST_VALID_PARTIAL_PARAMS(input_a_len, input_b_len,           \\\n                                       first_index, num_points)            \\\n    (((((input_a_len) + (input_b_len) - 1)) >= num_points + first_index )  \\\n    && (num_points > 0))\n\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n#define CONV_arm_conv_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)\n\n#define CONV_ref_conv_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)\n\n#define CONV_arm_conv_opt_INPUT_INTERFACE(              \\\n    input_a, input_a_len,                               \\\n    input_b, input_b_len)                               \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,   \\\n          (void*) filtering_output_fut,                 \\\n          (void*) filtering_scratch,                    \\\n          (void*) filtering_scratch2)\n\n#define CONV_ref_conv_opt_INPUT_INTERFACE(              \\\n    input_a, input_a_len,                               \\\n    input_b, input_b_len)                               \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,   \\\n          (void*) filtering_output_ref,                 \\\n          (void*) filtering_scratch,                    \\\n          (void*) filtering_scratch2)\n\n#define CONV_arm_conv_fast_INPUT_INTERFACE(input_a, input_a_len,        \\\n                                           input_b, input_b_len)        \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)\n\n#define CONV_ref_conv_fast_INPUT_INTERFACE(input_a, input_a_len,        \\\n                                           input_b, input_b_len)        \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)\n\n#define CONV_arm_conv_fast_opt_INPUT_INTERFACE(         \\\n    input_a, input_a_len,                               \\\n    input_b, input_b_len)                               \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,   \\\n          (void*) filtering_output_fut,                 \\\n          (void*) filtering_scratch,                    \\\n          (void*) filtering_scratch2)\n\n#define CONV_ref_conv_fast_opt_INPUT_INTERFACE(         \\\n    input_a, input_a_len,                               \\\n    input_b, input_b_len)                               \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,   \\\n          (void*) filtering_output_ref,                 \\\n          (void*) filtering_scratch,                    \\\n          (void*) filtering_scratch2)\n\n#define CONV_arm_conv_partial_INPUT_INTERFACE(input_a, input_a_len,     \\\n                                              input_b, input_b_len,     \\\n                                              first_index, num_points)  \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                   \\\n          (void*)filtering_output_fut, first_index, num_points)\n\n#define CONV_ref_conv_partial_INPUT_INTERFACE(input_a, input_a_len,     \\\n                                              input_b, input_b_len,     \\\n                                              first_index, num_points)  \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                   \\\n          (void*)filtering_output_ref, first_index, num_points)\n\n#define CONV_arm_conv_partial_fast_INPUT_INTERFACE(input_a, input_a_len,   \\\n                                              input_b, input_b_len,        \\\n                                              first_index, num_points)     \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                      \\\n          (void*)filtering_output_fut, first_index, num_points)\n\n#define CONV_ref_conv_partial_fast_INPUT_INTERFACE(input_a, input_a_len,   \\\n                                              input_b, input_b_len,        \\\n                                              first_index, num_points)     \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                      \\\n          (void*)filtering_output_ref, first_index, num_points)\n\n#define CONV_arm_conv_partial_opt_INPUT_INTERFACE(input_a, input_a_len, \\\n                                              input_b, input_b_len,     \\\n                                              first_index, num_points)  \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                   \\\n          (void*)filtering_output_fut, first_index, num_points,         \\\n          (void*) filtering_scratch,                                    \\\n          (void*) filtering_scratch2)\n\n#define CONV_ref_conv_partial_opt_INPUT_INTERFACE(input_a, input_a_len, \\\n                                              input_b, input_b_len,     \\\n                                              first_index, num_points)  \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                   \\\n          (void*)filtering_output_ref, first_index, num_points,         \\\n          (void*) filtering_scratch,                                    \\\n          (void*) filtering_scratch2)\n\n#define CONV_arm_conv_partial_fast_opt_INPUT_INTERFACE(input_a, input_a_len,  \\\n                                              input_b, input_b_len,           \\\n                                              first_index, num_points)        \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                         \\\n          (void*)filtering_output_fut, first_index, num_points,               \\\n          (void*) filtering_scratch,                                          \\\n          (void*) filtering_scratch2)\n\n#define CONV_ref_conv_partial_fast_opt_INPUT_INTERFACE(input_a, input_a_len,  \\\n                                              input_b, input_b_len,           \\\n                                              first_index, num_points)        \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,                         \\\n          (void*)filtering_output_ref, first_index, num_points,               \\\n          (void*) filtering_scratch,                                          \\\n          (void*) filtering_scratch2)\n\n/*--------------------------------------------------------------------------------*/\n/* Convolution Inputs */\n/*--------------------------------------------------------------------------------*/\n\n/* The following symbols alias the filtering_q31_inputs array:\n *\n * - filtering_q15_inputs\n * - filtering_q7_inputs\n *\n * The aliasing conflicts with the instantiation of #ARR_DESC_t structs.\n *\n * These macro-level aliases allow the #CONV_DEFINE_RAND_INPUT_ARR_DESCS() macro\n * to correctly select the filtering_q31_input or filtering_f32_input array,\n * within a template, by type_suffix.\n *\n */\n#define CONV_f32_INPUTS filtering_f32_inputs\n#define CONV_q31_INPUTS filtering_q31_inputs\n#define CONV_q15_INPUTS filtering_q31_inputs\n#define CONV_q7_INPUTS  filtering_q31_inputs\n\n/**\n *  Defines #ARR_DESC_t objects that wrap existing, type-specific, common\n *  inputs.\n */\n#define CONV_DEFINE_RAND_INPUT_ARR_DESCS(type_suffix)           \\\n    ARR_DESC_DEFINE_USING_ARR(                                  \\\n        TYPE_FROM_ABBREV(type_suffix),                          \\\n        conv_input_rand1_##type_suffix,                         \\\n        CONV_##type_suffix##_INPUTS,                            \\\n        0,                                                      \\\n        CONV_MAX_INPUT_ELTS);                                   \\\n                                                                \\\n    ARR_DESC_DEFINE_USING_ARR(                                  \\\n        TYPE_FROM_ABBREV(type_suffix),                          \\\n        conv_input_rand2_##type_suffix,                         \\\n        CONV_##type_suffix##_INPUTS,                            \\\n        1,                                                      \\\n        CONV_MAX_INPUT_ELTS)  /* Note the lacking semicolon */\n\nCONV_DEFINE_RAND_INPUT_ARR_DESCS(f32);\nCONV_DEFINE_RAND_INPUT_ARR_DESCS(q31);\nCONV_DEFINE_RAND_INPUT_ARR_DESCS(q15);\nCONV_DEFINE_RAND_INPUT_ARR_DESCS(q7);\nARR_DESC_DEFINE(float32_t, conv_input_zeros, CONV_MAX_INPUT_ELTS, CURLY(0));\n\n/**\n *  Define Input #ARR_DESC_t arrays by type suffix.\n *\n *  Taking inputs in parallel from the 'a' and 'b' arrays yields the following\n *  test cases (star is convolution):\n *\n *  - zero_array   * zero_array\n *  - zero_array   * random_array\n *  - random_array * zero_array\n *  - random_array * different_random_arary\n */\n#define CONV_DEFINE_ALL_INPUTS(type_suffix)                 \\\n    ARR_DESC_DEFINE(ARR_DESC_t *,                           \\\n                    conv_##type_suffix##_a_inputs,          \\\n                    4,                                      \\\n                    CURLY(                                  \\\n                        &conv_input_zeros,                  \\\n                        &conv_input_zeros,                  \\\n                        &conv_input_rand1_##type_suffix,    \\\n                        &conv_input_rand1_##type_suffix     \\\n                        ));                                 \\\n    ARR_DESC_DEFINE(ARR_DESC_t *,                           \\\n                    conv_##type_suffix##_b_inputs,          \\\n                    4,                                      \\\n                    CURLY(                                  \\\n                        &conv_input_zeros,                  \\\n                        &conv_input_rand1_##type_suffix,    \\\n                        &conv_input_zeros,                  \\\n                        &conv_input_rand2_##type_suffix     \\\n                        )) /* Note the lacking semicolon */\n\nCONV_DEFINE_ALL_INPUTS(f32);\nCONV_DEFINE_ALL_INPUTS(q31);\nCONV_DEFINE_ALL_INPUTS(q15);\nCONV_DEFINE_ALL_INPUTS(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Convolution Lengths */\n/*--------------------------------------------------------------------------------*/\n\n/*\n *  The conv_lens_a and conv_lens_b #ARR_DESC_t objects are accessed in parallel\n *  to provide convolution-length pairs. Taken in parallel they provide the\n *  following cases:\n *\n *  - 1 * 1    : Shortest convolution possible.\n *  - 1 * 2    : Short convolution   , one side is degenerate .\n *  - 17 * 1   : Medium convolution  , one side is degenerate .\n *  - 15 * MAX : Longest convolution , one side is degenerate .\n *  MAX * MAX  : Longest convolution.\n */\nARR_DESC_DEFINE(uint32_t,\n                conv_lens_a,\n                5,\n                CURLY(\n                    1,\n                    1,\n                    17,\n                    15,\n                    CONV_MAX_INPUT_ELTS\n                    ));\n\nARR_DESC_DEFINE(uint32_t,\n                conv_lens_b,\n                5,\n                CURLY(\n                    1,\n                    2,\n                    1,\n                    CONV_MAX_INPUT_ELTS,\n                    CONV_MAX_INPUT_ELTS\n                    ));\n\n/*--------------------------------------------------------------------------------*/\n/* Partial Indexing */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(uint32_t,\n                first_index_arr_desc,\n                4,\n                CURLY(\n                    0,\n                    1,\n                    CONV_MAX_INPUT_ELTS / 2,\n                    CONV_MAX_INPUT_ELTS\n                    ));\n\nARR_DESC_DEFINE(uint32_t,\n                num_points_arr_desc,\n                3,\n                CURLY(\n                    1,\n                    CONV_MAX_OUTPUT_ELTS / 2,\n                    CONV_MAX_OUTPUT_ELTS\n                    ));\n\n/*--------------------------------------------------------------------------------*/\n/* Convolution Tests */\n/*--------------------------------------------------------------------------------*/\n\n#define CONV_TEST_TEMPLATE(fut, fut_arg_interface,                            \\\n                           ref, ref_arg_interface,                            \\\n                           suffix, output_type)                               \\\n    JTEST_DEFINE_TEST(fut##_tests, fut)                                       \\\n    {                                                                         \\\n        TEMPLATE_DO_ARR_DESC(                                                 \\\n            input_idx, ARR_DESC_t *, input_ptr, conv_##suffix##_a_inputs      \\\n            ,                                                                 \\\n            void * input_a_ptr = input_ptr->data_ptr;                         \\\n            void * input_b_ptr = ARR_DESC_ELT(                                \\\n                ARR_DESC_t *, input_idx,                                      \\\n                &(conv_##suffix##_b_inputs))->data_ptr;                       \\\n                                                                              \\\n            TEMPLATE_DO_ARR_DESC(                                             \\\n                conv_len_idx, uint32_t, conv_len_a, conv_lens_a               \\\n                ,                                                             \\\n                uint32_t conv_len_b = ARR_DESC_ELT(                           \\\n                    uint32_t, conv_len_idx, &(conv_lens_b));                  \\\n                                                                              \\\n                JTEST_DUMP_STRF(\"Input A Length: %d\\n\"                        \\\n                                \"Input B Length: %d\\n\",                       \\\n                                (int)conv_len_a,                              \\\n                                (int)conv_len_b);                             \\\n                                                                              \\\n                TEST_CALL_FUT_AND_REF(                                        \\\n                    fut, fut_arg_interface(                                   \\\n                        input_a_ptr, conv_len_a, input_b_ptr, conv_len_b),    \\\n                    ref, ref_arg_interface(                                   \\\n                        input_a_ptr, conv_len_a, input_b_ptr, conv_len_b));   \\\n                                                                              \\\n                FILTERING_SNR_COMPARE_INTERFACE(                              \\\n                    conv_len_a + conv_len_b - 1,                              \\\n                    output_type)));                                           \\\n                                                                              \\\n        return JTEST_TEST_PASSED;                                             \\\n    }                                                                         \\\n                                                                              \\\n\n#define CONV_PARTIAL_TEST_TEMPLATE(fut, fut_arg_interface,                    \\\n                                   ref, ref_arg_interface,                    \\\n                                   suffix, output_type)                       \\\n    JTEST_DEFINE_TEST(fut##_tests, fut)                                       \\\n    {                                                                         \\\n        TEMPLATE_DO_ARR_DESC(                                                 \\\n            input_idx, ARR_DESC_t *, input_ptr, conv_##suffix##_a_inputs      \\\n            ,                                                                 \\\n            void * input_a_ptr = input_ptr->data_ptr;                         \\\n            void * input_b_ptr = ARR_DESC_ELT(                                \\\n                ARR_DESC_t *, input_idx,                                      \\\n                &(conv_##suffix##_b_inputs))->data_ptr;                       \\\n            TEMPLATE_DO_ARR_DESC(                                             \\\n                conv_len_idx, uint32_t, conv_len_a, conv_lens_a               \\\n                ,                                                             \\\n                uint32_t conv_len_b = ARR_DESC_ELT(                           \\\n                    uint32_t, conv_len_idx, &(conv_lens_b));                  \\\n                                                                              \\\n                TEMPLATE_DO_ARR_DESC(                                         \\\n                    first_index_idx, uint32_t, first_index,                   \\\n                    first_index_arr_desc                                      \\\n                    ,                                                         \\\n                    TEMPLATE_DO_ARR_DESC(                                     \\\n                        num_points_idx, uint32_t, num_points,                 \\\n                        num_points_arr_desc                                   \\\n                        ,                                                     \\\n                        if (CONV_TEST_VALID_PARTIAL_PARAMS(                   \\\n                                conv_len_a, conv_len_b,                       \\\n                                first_index, num_points))                     \\\n                        {                                                     \\\n                            /* Display test parameter values */               \\\n                            JTEST_DUMP_STRF(\"Input A Length: %d\\n\"            \\\n                                            \"Input B Length: %d\\n\"            \\\n                                            \"First Sample Index: %d\\n\"        \\\n                                            \"Number of Output Points: %d\\n\",  \\\n                                            (int)conv_len_a,                  \\\n                                            (int)conv_len_b,                  \\\n                                            (int)first_index,                 \\\n                                            (int)num_points);                 \\\n                                                                              \\\n                           memset(filtering_output_ref,0,                     \\\n                                 (2*CONV_MAX_INPUT_ELTS)*sizeof(output_type)); \\\n                           memset(filtering_output_fut,0,                     \\\n                                 (2*CONV_MAX_INPUT_ELTS)*sizeof(output_type)); \\\n                                                                              \\\n                            TEST_CALL_FUT_AND_REF(                            \\\n                                fut, fut_arg_interface(                       \\\n                                    input_a_ptr, conv_len_a,                  \\\n                                    input_b_ptr, conv_len_b,                  \\\n                                    first_index, num_points),                 \\\n                                ref, ref_arg_interface(                       \\\n                                    input_a_ptr, conv_len_a,                  \\\n                                    input_b_ptr, conv_len_b,                  \\\n                                    first_index, num_points));                \\\n                                                                              \\\n                            FILTERING_SNR_COMPARE_INTERFACE_OFFSET(           \\\n                                first_index,                                  \\\n                                num_points,                                   \\\n                                output_type);                                 \\\n                        } else {                                              \\\n                            /* FUT should return ARM_MATH_ARGUMENT_ERROR*/    \\\n                            /* if first_index and num_points don't make */    \\\n                            /* sense*/                                        \\\n                                                                              \\\n                            arm_status conv_test_retval;                      \\\n                            TEST_CALL_FUT(                                    \\\n                                conv_test_retval = fut,                       \\\n                                fut_arg_interface(                            \\\n                                    input_a_ptr, conv_len_a,                  \\\n                                    input_b_ptr, conv_len_b,                  \\\n                                    first_index, num_points));                \\\n                                                                              \\\n                            if (conv_test_retval != ARM_MATH_ARGUMENT_ERROR) { \\\n                                JTEST_DUMP_STR(\"FUT failed to raise error.\"); \\\n                                /* return JTEST_TEST_FAILED; */               \\\n                            }                                                 \\\n                        }))));                                                \\\n                                                                              \\\n        return JTEST_TEST_PASSED;                                             \\\n    }\n\n#define CONV_DEFINE_TEST(fn_name, suffix, output_type, test_template)   \\\n    test_template(                                                      \\\n        arm_##fn_name##_##suffix,                                       \\\n        CONV_arm_##fn_name##_INPUT_INTERFACE,                           \\\n        ref_##fn_name##_##suffix,                                       \\\n        CONV_ref_##fn_name##_INPUT_INTERFACE,                           \\\n        suffix,                                                         \\\n        output_type                                                     \\\n        ) /* Note the lacking semicolon*/\n\n/* Tests on functions without partial outputs */\nCONV_DEFINE_TEST(conv          , f32, float32_t, CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv          , q31, q31_t    , CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv          , q15, q15_t    , CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv          , q7 , q7_t     , CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_opt      , q15, q15_t    , CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_opt      , q7 , q7_t     , CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_fast     , q31, q31_t    , CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_fast     , q15, q15_t    , CONV_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_fast_opt , q15, q15_t    , CONV_TEST_TEMPLATE);\n\n/* Tests on functions with partial outputs  */\nCONV_DEFINE_TEST(conv_partial          , f32, float32_t, CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial          , q31, q31_t    , CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial          , q15, q15_t    , CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial          , q7 , q7_t     , CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial_fast     , q31, q31_t    , CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial_fast     , q15, q15_t    , CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial_fast_opt , q15, q15_t    , CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial_opt      , q15, q15_t    , CONV_PARTIAL_TEST_TEMPLATE);\nCONV_DEFINE_TEST(conv_partial_opt      , q7 , q7_t     , CONV_PARTIAL_TEST_TEMPLATE);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(conv_tests)\n{\n  /*\n    To skip a test, comment it out.\n  */\n  JTEST_TEST_CALL(arm_conv_f32_tests);\n  JTEST_TEST_CALL(arm_conv_q31_tests);\n  JTEST_TEST_CALL(arm_conv_q15_tests);\n  JTEST_TEST_CALL(arm_conv_q7_tests);\n\n  JTEST_TEST_CALL(arm_conv_opt_q15_tests);\n  JTEST_TEST_CALL(arm_conv_opt_q7_tests);\n\n  JTEST_TEST_CALL(arm_conv_fast_q31_tests);\n  JTEST_TEST_CALL(arm_conv_fast_q15_tests);\n\n  JTEST_TEST_CALL(arm_conv_fast_opt_q15_tests);\n\n  JTEST_TEST_CALL(arm_conv_partial_f32_tests);\n  JTEST_TEST_CALL(arm_conv_partial_q31_tests);\n  JTEST_TEST_CALL(arm_conv_partial_q15_tests);\n  JTEST_TEST_CALL(arm_conv_partial_q7_tests);\n\n  JTEST_TEST_CALL(arm_conv_partial_fast_q31_tests);\n  JTEST_TEST_CALL(arm_conv_partial_fast_q15_tests);\n\n  JTEST_TEST_CALL(arm_conv_partial_fast_opt_q15_tests);\n\n  JTEST_TEST_CALL(arm_conv_partial_opt_q15_tests);\n  JTEST_TEST_CALL(arm_conv_partial_opt_q7_tests);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/correlate_tests.c",
    "content": "#include \"jtest.h\"\n#include \"filtering_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"filtering_templates.h\"\n#include \"type_abbrev.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Header Stuff */\n/*--------------------------------------------------------------------------------*/\n\n#define CORRELATE_MAX_INPUT_ELTS  32\n#define CORRELATE_MAX_OUTPUT_ELTS (CORRELATE_MAX_INPUT_ELTS * 2)\n\n/*--------------------------------------------------------------------------------*/\n/* Input Interfaces */\n/*--------------------------------------------------------------------------------*/\n/*\n *  General:\n *  Input interfaces provide inputs to functions inside test templates.  They\n *  ONLY provide the inputs.  The output variables should be hard coded.\n *\n *  The input interfaces must have the following format:\n *\n *  ARM_xxx_INPUT_INTERFACE() or\n *  REF_xxx_INPUT_INTERFACE()\n *\n *  The xxx must be lowercase, and is intended to be the indentifying substring\n *  in the function's name.  Acceptable values are 'sub' or 'add' from the\n *  functions arm_add_q31.\n */\n\n#define CORRELATE_arm_correlate_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)\n\n#define CORRELATE_ref_correlate_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)\n\n#define CORRELATE_arm_correlate_opt_INPUT_INTERFACE(    \\\n    input_a, input_a_len,                               \\\n    input_b, input_b_len)                               \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,   \\\n          (void*) filtering_output_fut,                 \\\n          (void*) filtering_scratch)\n\n#define CORRELATE_arm_correlate_opt_q7_INPUT_INTERFACE(  \\\n    input_a, input_a_len,                                \\\n    input_b, input_b_len)                                \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,    \\\n          (void*) filtering_output_fut,                  \\\n          (void*) filtering_scratch,                     \\\n          (void*) filtering_scratch2)\n\n#define CORRELATE_ref_correlate_opt_INPUT_INTERFACE(    \\\n    input_a, input_a_len,                               \\\n    input_b, input_b_len)                               \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,   \\\n          (void*) filtering_output_ref,                 \\\n          (void*) filtering_scratch)\n\n#define CORRELATE_ref_correlate_opt_q7_INPUT_INTERFACE( \\\n    input_a, input_a_len,                               \\\n    input_b, input_b_len)                               \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,   \\\n          (void*) filtering_output_ref,                 \\\n          (void*) filtering_scratch,                    \\\n          (void*) filtering_scratch2)\n\n#define CORRELATE_arm_correlate_fast_INPUT_INTERFACE(input_a, input_a_len,          \\\n                                           input_b, input_b_len)                    \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)\n\n#define CORRELATE_ref_correlate_fast_INPUT_INTERFACE(input_a, input_a_len,          \\\n                                           input_b, input_b_len)                    \\\n    PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)\n\n#define CORRELATE_arm_correlate_fast_opt_INPUT_INTERFACE(   \\\n    input_a, input_a_len,                                   \\\n    input_b, input_b_len)                                   \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,       \\\n          (void*) filtering_output_fut,                     \\\n          (void*) filtering_scratch)\n\n#define CORRELATE_ref_correlate_fast_opt_INPUT_INTERFACE(   \\\n    input_a, input_a_len,                                   \\\n    input_b, input_b_len)                                   \\\n    PAREN(input_a, input_a_len, input_b, input_b_len,       \\\n          (void*) filtering_output_ref,                     \\\n          (void*) filtering_scratch)\n\n/*--------------------------------------------------------------------------------*/\n/* Convolution Inputs */\n/*--------------------------------------------------------------------------------*/\n\n/* The following symbols alias the filtering_q31_inputs array:\n *\n * - filtering_q15_inputs\n * - filtering_q7_inputs\n *\n * The aliasing conflicts with the instantiation of #ARR_DESC_t structs.\n *\n * These macro-level aliases allow the #CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS() macro\n * to correctly select the filtering_q31_input or filtering_f32_input array,\n * within a template, by type_suffix.\n *\n */\n#define CORRELATE_f32_INPUTS filtering_f32_inputs\n#define CORRELATE_q31_INPUTS filtering_q31_inputs\n#define CORRELATE_q15_INPUTS filtering_q31_inputs\n#define CORRELATE_q7_INPUTS  filtering_q31_inputs\n\n/**\n *  Defines #ARR_DESC_t objects that wrap existing, type-specific, common\n *  inputs.\n */\n#define CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(type_suffix)      \\\n    ARR_DESC_DEFINE_USING_ARR(                                  \\\n        TYPE_FROM_ABBREV(type_suffix),                          \\\n        correlate_input_rand1_##type_suffix,                    \\\n        CORRELATE_##type_suffix##_INPUTS,                       \\\n        0,                                                      \\\n        CORRELATE_MAX_INPUT_ELTS);                              \\\n                                                                \\\n    ARR_DESC_DEFINE_USING_ARR(                                  \\\n        TYPE_FROM_ABBREV(type_suffix),                          \\\n        correlate_input_rand2_##type_suffix,                    \\\n        CORRELATE_##type_suffix##_INPUTS,                       \\\n        1,                                                      \\\n        CORRELATE_MAX_INPUT_ELTS)  /* Note the lacking semicolon */\n\nCORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(f32);\nCORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q31);\nCORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q15);\nCORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q7);\nARR_DESC_DEFINE(float32_t, correlate_input_zeros, CORRELATE_MAX_INPUT_ELTS, CURLY(0));\n\n/**\n *  Define Input #ARR_DESC_t arrays by type suffix.\n *\n *  Taking inputs in parallel from the 'a' and 'b' arrays yields the following\n *  test cases (star is correlate):\n *\n *  - zero_array   * zero_array\n *  - zero_array   * random_array\n *  - random_array * zero_array\n *  - random_array * different_random_arary\n */\n#define CORRELATE_DEFINE_ALL_INPUTS(type_suffix)                  \\\n    ARR_DESC_DEFINE(ARR_DESC_t *,                                 \\\n                    correlate_##type_suffix##_a_inputs,           \\\n                    4,                                            \\\n                    CURLY(                                        \\\n                        &correlate_input_zeros,                   \\\n                        &correlate_input_zeros,                   \\\n                        &correlate_input_rand1_##type_suffix,     \\\n                        &correlate_input_rand1_##type_suffix      \\\n                        ));                                       \\\n    ARR_DESC_DEFINE(ARR_DESC_t *,                                 \\\n                    correlate_##type_suffix##_b_inputs,           \\\n                    4,                                            \\\n                    CURLY(                                        \\\n                        &correlate_input_zeros,                   \\\n                        &correlate_input_rand1_##type_suffix,     \\\n                        &correlate_input_zeros,                   \\\n                        &correlate_input_rand2_##type_suffix      \\\n                        )) /* Note the lacking semicolon */\n\nCORRELATE_DEFINE_ALL_INPUTS(f32);\nCORRELATE_DEFINE_ALL_INPUTS(q31);\nCORRELATE_DEFINE_ALL_INPUTS(q15);\nCORRELATE_DEFINE_ALL_INPUTS(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Convolution Lengths */\n/*--------------------------------------------------------------------------------*/\n\n/*\n *  The correlate_lens_a and correlate_lens_b #ARR_DESC_t objects are accessed in parallel\n *  to provide correlate-length pairs. Taken in parallel they provide the\n *  following cases:\n *\n *  - 1 * 1    : Shortest correlate possible.\n *  - 1 * 2    : Short correlate , one side is degenerate.\n *  - 17 * 1   : Medium correlate, one side is degenerate.\n *  - 15 * MAX : Longest correlate.\n *  MAX * MAX  : Longest correlate.\n */\nARR_DESC_DEFINE(uint32_t,\n                correlate_lens_a,\n                5,\n                CURLY(\n                    1,\n                    1,\n                    17,\n                    15,\n                    CORRELATE_MAX_INPUT_ELTS\n                    ));\n\nARR_DESC_DEFINE(uint32_t,\n                correlate_lens_b,\n                5,\n                CURLY(\n                    1,\n                    2,\n                    1,\n                    CORRELATE_MAX_INPUT_ELTS,\n                    CORRELATE_MAX_INPUT_ELTS\n                    ));\n\n/*--------------------------------------------------------------------------------*/\n/* Convolution Tests */\n/*--------------------------------------------------------------------------------*/\n\n#define CORRELATE_TEST_TEMPLATE(fut, fut_arg_interface,                                \\\n                           ref, ref_arg_interface,                                     \\\n                           suffix, output_type)                                        \\\n    JTEST_DEFINE_TEST(fut##_tests, fut)                                                \\\n    {                                                                                  \\\n        TEMPLATE_DO_ARR_DESC(                                                          \\\n            input_idx, ARR_DESC_t *, input_ptr, correlate_##suffix##_a_inputs          \\\n            ,                                                                          \\\n            void * input_a_ptr = input_ptr->data_ptr;                                  \\\n            void * input_b_ptr = ARR_DESC_ELT(                                         \\\n                ARR_DESC_t *, input_idx,                                               \\\n                &(correlate_##suffix##_b_inputs))->data_ptr;                           \\\n                                                                                       \\\n            TEMPLATE_DO_ARR_DESC(                                                      \\\n                correlate_len_idx, uint32_t, correlate_len_a, correlate_lens_a         \\\n                ,                                                                      \\\n                uint32_t correlate_len_b = ARR_DESC_ELT(                               \\\n                    uint32_t, correlate_len_idx, &(correlate_lens_b));                 \\\n                                                                                       \\\n                /* Display test parameter values */                                    \\\n                 JTEST_DUMP_STRF(\"Input A Length: %d\\n\"                                \\\n                                 \"Input B Length: %d\\n\",                               \\\n                                (int)correlate_len_a,                                  \\\n                                (int)correlate_len_b);                                 \\\n                                                                                       \\\n                memset(filtering_output_ref,0,                                         \\\n                      (2*CORRELATE_MAX_INPUT_ELTS)*sizeof(output_type));               \\\n                memset(filtering_output_fut,0,                                         \\\n                      (2*CORRELATE_MAX_INPUT_ELTS)*sizeof(output_type));               \\\n                                                                                       \\\n                TEST_CALL_FUT_AND_REF(                                                 \\\n                    fut, fut_arg_interface(                                            \\\n                        input_a_ptr, correlate_len_a, input_b_ptr, correlate_len_b),   \\\n                    ref, ref_arg_interface(                                            \\\n                        input_a_ptr, correlate_len_a, input_b_ptr, correlate_len_b));  \\\n                                                                                       \\\n                FILTERING_SNR_COMPARE_INTERFACE(                                       \\\n                    correlate_len_a + correlate_len_b - 2,                             \\\n                    output_type)));                                                    \\\n                                                                                       \\\n        return JTEST_TEST_PASSED;                                                      \\\n    }\n\n#define CORRELATE_DEFINE_TEST(fn_name, suffix, output_type, test_template)    \\\n    test_template(                                                            \\\n        arm_##fn_name##_##suffix,                                             \\\n        CORRELATE_arm_##fn_name##_INPUT_INTERFACE,                            \\\n        ref_##fn_name##_##suffix,                                             \\\n        CORRELATE_ref_##fn_name##_INPUT_INTERFACE,                            \\\n        suffix,                                                               \\\n        output_type                                                           \\\n        ) /* Note the lacking semicolon*/\n\n/* Tests on functions without partial outputs */\nCORRELATE_DEFINE_TEST(correlate          , f32, float32_t, CORRELATE_TEST_TEMPLATE);\nCORRELATE_DEFINE_TEST(correlate          , q31, q31_t    , CORRELATE_TEST_TEMPLATE);\nCORRELATE_DEFINE_TEST(correlate          , q15, q15_t    , CORRELATE_TEST_TEMPLATE);\nCORRELATE_DEFINE_TEST(correlate          , q7 , q7_t     , CORRELATE_TEST_TEMPLATE);\nCORRELATE_DEFINE_TEST(correlate_opt      , q15, q15_t    , CORRELATE_TEST_TEMPLATE);\n\nCORRELATE_TEST_TEMPLATE(\n   arm_correlate_opt_q7,\n   CORRELATE_arm_correlate_opt_q7_INPUT_INTERFACE,\n   ref_correlate_opt_q7,\n   CORRELATE_ref_correlate_opt_q7_INPUT_INTERFACE,\n   q7,\n   q7_t\n   );\n\nCORRELATE_DEFINE_TEST(correlate_fast     , q31, q31_t    , CORRELATE_TEST_TEMPLATE);\nCORRELATE_DEFINE_TEST(correlate_fast     , q15, q15_t    , CORRELATE_TEST_TEMPLATE);\nCORRELATE_DEFINE_TEST(correlate_fast_opt , q15, q15_t    , CORRELATE_TEST_TEMPLATE);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(correlate_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_correlate_f32_tests);\n    JTEST_TEST_CALL(arm_correlate_q31_tests);\n    JTEST_TEST_CALL(arm_correlate_q15_tests);\n    JTEST_TEST_CALL(arm_correlate_q7_tests);\n\n    JTEST_TEST_CALL(arm_correlate_opt_q15_tests);\n    JTEST_TEST_CALL(arm_correlate_opt_q7_tests);\n\n    JTEST_TEST_CALL(arm_correlate_fast_q31_tests);\n    JTEST_TEST_CALL(arm_correlate_fast_q15_tests);\n\n    JTEST_TEST_CALL(arm_correlate_fast_opt_q15_tests);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_common_data.c",
    "content": "#include \"filtering_test_data.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\n//must be max(LMS_MAX_BLOCKSIZE*2, FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_L)\nfloat32_t filtering_output_fut[LMS_MAX_BLOCKSIZE*2] = {0};\nfloat32_t filtering_output_ref[LMS_MAX_BLOCKSIZE*2] = {0};\nfloat32_t filtering_output_f32_fut[LMS_MAX_BLOCKSIZE*2] = {0};\nfloat32_t filtering_output_f32_ref[LMS_MAX_BLOCKSIZE*2] = {0};\nfloat32_t filtering_input_lms[LMS_MAX_BLOCKSIZE*2] = {0};\n__ALIGNED(8) float32_t filtering_pState[LMS_MAX_BLOCKSIZE + FILTERING_MAX_NUMTAPS] = {0};\nfloat32_t filtering_scratch[FILTERING_MAX_BLOCKSIZE * 3] = {0};\nfloat32_t filtering_scratch2[FILTERING_MAX_BLOCKSIZE * 3] = {0};\nfloat32_t filtering_coeffs_lms[FILTERING_MAX_NUMTAPS];\n\nconst q31_t filtering_q31_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] =\n{\n    0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB,\n    0x41F6F6A, 0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8,\n    0x3D060524, 0x93D5E570, 0x97D7791D, 0xFFE0C38C, 0x26749841,\n    0xC0A6EE54, 0x218EC386, 0x39FF3726, 0x8DC1F7CA, 0x702F2CF5,\n    0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49, 0x3805DE7E,\n    0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF,\n    0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24,\n    0x6CE00F5C, 0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530,\n    0x73394127, 0x773FA6F4, 0x9805A980, 0x838DE587, 0x9CF597F4,\n    0xA2AD1691, 0xFA81A473, 0x7CDC7D7F, 0x4A5190D0, 0xED895BB9,\n    0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516, 0x2501A3E1,\n    0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E,\n    0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4,\n    0x24DB166C, 0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6,\n    0x419E0C75, 0x46BE9F38, 0x2432B9B2, 0x758D83E0, 0xDCE12926,\n    0x3F57CB74, 0x1F4458E2, 0xF1DD639, 0x83A1FB49, 0x173AFC76,\n    0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549, 0x5C314C9,\n    0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715,\n    0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F,\n    0x20BFDEB4, 0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE,\n    0x9858E3E1, 0xA36A9C4E, 0x88BD21F9, 0xAACF7A68, 0x773665E5,\n    0xCEDFDF66, 0x617A9610, 0x524FC968, 0xC2D086CD, 0x5F008079,\n    0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608, 0xA33A2EE5,\n    0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5,\n    0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4,\n    0xB358C0D8, 0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF,\n    0x33035831, 0x13D93987, 0xFC542094, 0x845F317E, 0xDDC4BF8B,\n    0x1379E50C, 0x5C20193F, 0xFDD58298, 0x9D482B82, 0x4A6BE062,\n    0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882, 0xE6F8EA35,\n    0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD,\n    0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677,\n    0xFB2E04F2, 0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8,\n    0x1A8C7F28, 0x861E452E, 0x932D3F78, 0x7652D852, 0x73357BBA,\n    0xEBBB0A58, 0x62536AFA, 0x3F6B65EF, 0x6DC57B58, 0x9EB798CE,\n    0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302, 0xA9FD3E40,\n    0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3,\n    0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896,\n    0x6443A0FE, 0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820,\n    0xF18F0810, 0xE1548689, 0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B,\n    0xEA0C1BE0, 0xA1B785DB, 0x7086465D, 0x1CC10929, 0x1E1D716E,\n    0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4, 0x441F1E8B,\n    0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137,\n    0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615,\n    0x92593380, 0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7,\n    0x10E916B6, 0xE3BCFA68, 0x2ACB80BB, 0xE51C5590, 0x994714B5,\n    0xF30984EE, 0x59BBE1B4, 0xB4867DBC, 0xB91C706C, 0xBC16C218,\n    0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872, 0x4B167FD4,\n    0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55,\n    0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A,\n    0x9D2C662A, 0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C,\n    0x20306EDB, 0xE381AAE7, 0xA55DA748, 0x9B8B617B, 0x3E036FAD,\n    0x84E4C4A7, 0xD5A3F517, 0x669BA988, 0x98FDDE8C, 0x67BD85CE,\n    0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF, 0x205DB5C,\n    0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC,\n    0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693,\n    0xC42D12C0, 0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC,\n    0x8D874532, 0x5F5C9DD0, 0x5D167858, 0x8559FEA2, 0x9D821476,\n    0xD9654ED2, 0x594C0DC7, 0x1A87B506, 0x3F693200, 0x7A651AB5,\n    0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0, 0xB088C72F,\n    0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB,\n    0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D,\n    0x32581A06, 0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15,\n    0xBC79A9BC, 0xB7175917, 0x354E381C, 0x762AADD7, 0xF643DAC1,\n    0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4, 0xD7694875, 0x92D30822,\n    0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7, 0x58CE268,\n    0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1,\n    0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB,\n    0x8FF5534, 0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7,\n    0x419545EB, 0x993F7880, 0xAB246B20, 0x408AABC4, 0xCBF6EA49,\n    0xC0894C55, 0x4CAA6398, 0xA47856E9, 0xAF2AE47D, 0x22F55D33,\n    0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8, 0x9A77D48,\n    0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A,\n    0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071,\n    0x7F9930D4, 0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A,\n    0x144B2C12, 0x98E425C7, 0xBAA4B373, 0x18F0D03C, 0x99462AC0,\n    0xD8B4D2EF, 0x72473895, 0xA6BF5435, 0xEDAD53B, 0xE0912FA6,\n    0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929, 0xB89962F9,\n    0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0,\n    0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841,\n    0x73A60174, 0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095,\n    0x2B370837, 0x83DF6CE3, 0xDD08EEFA, 0x3F52A7C2, 0x191B4785,\n    0x60843D82, 0xB0DE11F1, 0x105EA26C, 0x6E1C7AA2, 0x47AADD14,\n    0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC, 0x744206A,\n    0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9,\n    0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F,\n    0x2E53E6C1, 0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5,\n    0x119725CC, 0x5406D347, 0x1B6FFAF1, 0xECCF71F1, 0x981117F2,\n    0x7167CA76, 0x74F4B880, 0x77A55F47, 0x59EADB62, 0x4A331D95,\n    0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1, 0x60D47AD5,\n    0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3,\n    0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E,\n    0x31109C58, 0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF,\n    0xBAF8D31E, 0xA4B31611, 0xED37F331, 0x7A832A22, 0xA22591C7,\n    0x722D1F89, 0x3B19CF18, 0x261B8A4D, 0xC3F6F6DB, 0xCF8CED61,\n    0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4, 0x3674E663,\n    0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD,\n    0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91,\n    0x4BF0C248, 0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26,\n    0x6C3B7B71, 0xD744B3ED, 0xFA25D2F6, 0x4CDE642D, 0xD65B8142,\n    0xA6F9207F, 0xE7A207BE, 0xDB506684, 0x44DA4780, 0x9175EA0C,\n    0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2, 0x5423D9C8,\n    0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1,\n    0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5,\n    0x1672BA91, 0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4,\n    0x32AFD40C, 0x99A5FB3B, 0xDD1D73A3, 0xA342CB3E, 0xA78445F5,\n    0x53979C3B, 0x427D7943, 0x5221B58C, 0xA6CE9A5E, 0xFB50ECA4,\n    0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04, 0xFBB65E0C,\n    0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920,\n    0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641,\n    0x4D6B1760, 0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF,\n    0x4E5F9493, 0x4C215DA5, 0x33A052B, 0x1A4D80C2, 0x40AEEBCA,\n    0x390D106B, 0xE9E8E018, 0x5AF3D6CF, 0xE35E1D4, 0xC4FB1C6,\n    0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6, 0x2227567D,\n    0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6,\n    0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1,\n    0xC9D06CBC, 0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47,\n    0x9D4804EA, 0x57DD9E67, 0xF89C7895, 0xF5336111, 0x25C122C8,\n    0x62742114, 0xCFBF6D26, 0xBF9F6482, 0xE6F02CD9, 0x11083202,\n    0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1, 0x3BF4DC25,\n    0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129,\n    0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA,\n    0x31C5A0AF, 0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98,\n    0x82C34882, 0x5D041F11, 0x8C613C57, 0xD398CFD1, 0x426F38AD,\n    0x5599AB1D, 0xFAFA078D, 0xAB25B413, 0xD94B32CF, 0xB288FE38,\n    0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D, 0x2174EBBE,\n    0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6,\n    0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02,\n    0xC20D47A4, 0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4,\n    0xC58612F4, 0xA2827F6F, 0xC49DCDBA, 0x679B7362, 0x4E495845,\n    0xCFD2F0D1, 0x395E76A0, 0x375A655E, 0x92E2058F, 0x73F9F0CA,\n    0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B, 0xA219E2E8,\n    0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF,\n    0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40,\n    0x157F6DDF, 0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58,\n    0xB2945F75, 0x4FA23A0E, 0x836EB8C0, 0xB3B18FD, 0x86114337,\n    0x24668ACB, 0x99BB82F0, 0x924C8A47, 0xBA959701, 0x81155ABF,\n    0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7, 0x7FC2802D,\n    0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719,\n    0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD,\n    0xEBA775AE, 0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D,\n    0xBBD34AB7, 0x2F85B12A, 0x16C5C2AD, 0x3990985D, 0x88DF3351,\n    0x82811AA5, 0x6D351F41, 0x4066A69D, 0x86B660BF, 0x6EDB4768,\n    0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687, 0x947CC9C9,\n    0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB,\n    0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B,\n    0xB7629C93, 0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66,\n    0xEC71B78C, 0xEAF4BB3A, 0x7C16225E, 0x668F337, 0xCBEE1608,\n    0x6D5B5552, 0x345DC590, 0x681209CC, 0x7B24A819, 0xD08A1416,\n    0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678, 0x20EECA0,\n    0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D,\n    0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960,\n    0x7CDF59F3, 0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110,\n    0xB8FCF3E3, 0xDEA059B2, 0x8229B6EA, 0x316486F6, 0x43919185,\n    0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9, 0x5CD41244, 0x2C9F0A7B,\n    0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0, 0xF105C20D,\n    0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763,\n    0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53,\n    0x2D2A85F6, 0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B,\n    0x9FC5AC5F, 0x11AE5DD7, 0xA0B9A5A9, 0xFC648AF4, 0x740009AC,\n    0xED0E0321, 0xB8E6A61, 0x8910C544, 0xC74F26C8, 0x9525CCF3,\n    0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D, 0xE1976DD4,\n    0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1,\n    0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB,\n    0xF5288568, 0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A,\n    0x1BC03B9, 0xB6BC3061, 0xBF30596E, 0xBE2AD27B, 0x8AC04220,\n    0x641979A3, 0x9ECCBB89, 0xA144FBC1, 0x4E8FAE26, 0x8C5A9D90,\n    0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D, 0xCEE81CDF,\n    0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA,\n    0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38,\n    0x2E77F2D, 0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017,\n    0x2D6B69A7, 0xFEDB63F9, 0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8,\n    0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6, 0xED193443, 0x7615EF1B,\n    0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022, 0x556E825C,\n    0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF,\n    0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC,\n    0x1E6A1101, 0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599,\n    0x54EB4809, 0x7839BE6D, 0xD50017DD, 0x39B1A0E1, 0x288D52D3,\n    0x2D52668C, 0x20D22A68, 0x4E1207D1, 0x3FCC0EFE, 0x47F3FE64,\n    0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8, 0x6BEAA655,\n    0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9,\n    0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B,\n    0x4DCD4EDB, 0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6,\n    0x502F41B0, 0x3616D3F1, 0x2E5B8E31, 0x2026EB19, 0x57E783D7,\n    0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48,\n    0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED,\n    0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F,\n    0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB,\n    0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94,\n    0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11,\n    0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x73D63FED, 0xE36E9F5E,\n    0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1, 0xCD476E86,\n    0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7,\n    0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78,\n    0xCC4BE4F6, 0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2,\n    0x55A8F5EC, 0xE81A9A75, 0x30A67E1B, 0x4A4A7D0C, 0x20F7F993,\n    0x1891805, 0x738976AD, 0xD426E7D6, 0x3C5CEEBF, 0x4499187F,\n    0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456, 0x421BCF29,\n    0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE,\n    0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46,\n    0x5D146234, 0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA,\n    0xB65530CC, 0x2DFAC48C, 0x1663D16F, 0x59B80AA, 0x950274EA,\n    0x92532D4A, 0x3CEF802D, 0x492FBDA5, 0xA63A2574, 0xEF8005C2,\n    0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646, 0xD2598516,\n    0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75,\n    0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F, 0xECDD35CC,\n    0xDDC1EE0E, 0xC4848865, 0x925826BD, 0x4078BE39, 0x68A8561A,\n    0x323045DC, 0xA933B37F, 0xBA2AEE2E, 0x4F24F65D, 0x349EE246,\n    0xF97B9D0E, 0x46DC5759, 0x4529F425, 0x80D17B42, 0x8E16F709,\n    0x1B42206A, 0x4934A526, 0x391BB6DE, 0xB52EF45C, 0x26C30290,\n    0xCBA23CAA, 0xA501A8C3, 0xD922C4F8, 0xE8824E53, 0x6F4255DC,\n    0x5960B544, 0x58BC69D6, 0xCA936323, 0xFDDF053C, 0xC2E002D6,\n    0x7D750755, 0x8A3F9CD1, 0x35F8F6F8, 0xFB7BD154, 0x65CFF94F,\n    0x390A58DD, 0xD97C4093, 0x501CA2A3, 0x8EA5DEBC, 0xCA93461F,\n    0xE02D984C, 0x126F8517, 0x39FDD887, 0x46241AE9, 0x777E854D,\n    0xE2B36349, 0x58E3FA9F, 0x971DEF1E, 0x8E156228, 0xC0E14E9,\n    0xA9A01BE6, 0xB318C990, 0x971680D6, 0xA1F359CE, 0x487E23F4,\n    0x7DE465B0, 0x4E4C905E, 0x2A652959, 0x116FF167, 0x5C74AAB9,\n    0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48,\n    0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED,\n    0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F,\n    0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB,\n    0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94,\n    0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11,\n    0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x4FEFC920, 0x28DF4EB8,\n    0x29EBF45A, 0x1E350CF6\n };\n\n/* The source data is random across the q31_t range. Accessing it by word should\n   remain random. */\nconst q15_t * filtering_q15_inputs = (q15_t *) filtering_q31_inputs;\nconst q7_t * filtering_q7_inputs = (q7_t *) filtering_q31_inputs;\n\nconst float32_t filtering_f32_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] =\n{\n    43.0264275639  , -17.0525215570 , -94.8488973910 , -8.1924989580  , 7.2830326091   , 66.8368719314  , 33.9778190671  , 117.8652289772 ,\n    -129.6077797465, -14.6420815368 , 18.0239223278  , 20.6760530292  , 55.0375037651  , 1.8674609862   , -85.6534302408 , -33.5750364909 ,\n    29.2110949614  , 110.4727049460 , -94.1914619387 , -1.4084169343  , 83.5181653041  , 47.3073514127  , -13.3420621181 , 30.3389699104  ,\n    12.1188124277  , 100.9730921941 , -114.0146362390, -77.5823200409 , 37.2019034618  , 40.0026301128  , -58.3387276630 , -34.9472398600 ,\n    -5.1169678311  , -87.7660091118 , -150.5888601131, 56.0349370503  , 50.2168884079  , -74.2313236767 , 22.3648603560  , -6.8676387051  ,\n    74.8957303680  , -90.1292012823 , -55.1436241586 , -66.6732976100 , -6.7918147615  , 7.7612697081   , 35.7892605979  , -20.0470508830 ,\n    41.8369017546  , -143.7378056984, -41.9127158600 , -108.3531841158, -57.1917422289 , -124.2808828105, 38.9316388820  , -77.9212517405 ,\n    37.1990818377  , -28.9545952748 , -155.6371057564, 45.8088886393  , 36.2537018275  , -6.5727656016  , -104.2070491921, 45.5583813729  ,\n    -19.7674717059 , -80.4802190947 , -1.4444563441  , -42.2142256438 , 36.6546339194  , -57.0866498590 , 44.4677067511  , 65.7285753407  ,\n    -103.8158864647, 25.4348723711  , -153.5419639389, 39.3608409474  , 49.1658103436  , 79.5570602275  , 75.2944095996  , 58.9394700746  ,\n    -53.1018534392 , 33.4172444014  , 35.6224682287  , -64.4353396418 , -125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 ,\n    -17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604  , -191.1123732593, 119.6750713043 , 19.6182375803  , -26.7615252921 ,\n    2.2957847015   , -108.3436451287, -50.5906164995 , -5.6360985100  , -11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218  ,\n    -70.2048296348 , 72.8738253222  , 60.2450218115  , 114.2741231228 , 46.8180775285  , 6.9915412654   , -8.9909197429  , -78.9165936808 ,\n    66.4731535459  , -68.4235455651 , -79.8254597080 , -10.6308477115 , -62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997  ,\n    35.8213741877  , -54.4694482732 , 86.9631830044  , -53.0343838122 , -47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 ,\n    12.0258009869  , -5.1098204703  , -9.8420230737  , -107.3328761158, 44.6810431959  , -17.9083820345 , -60.9753512872 , -7.5915088994  ,\n    17.2250813329  , 57.9176125648  , 124.3004161362 , -63.1950908493 , 120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 ,\n    -49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 , -64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575   ,\n    -50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549  , -102.0850899209, 53.2360193126  , -25.8997883369 , 75.1445512333  ,\n    -113.8148602310, 17.8027281119  , -19.5006822722 , -44.2169628471 , 107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388   ,\n    46.7384653508  , 9.9047443751   , 81.8646964362  , 132.3812863877 , -95.6959050236 , -68.5015813484 , 65.8586404494  , 18.5039353889  ,\n    -30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 , -2.2127786675  , -35.4418447703 , -51.8722915974 , -107.9024439078,\n    -51.5940748232 , -51.7463262677 , 74.2795485984  , 94.2205022462  , 9.7016384049   , -47.3556083155 , -36.7822314478 , -151.6455525363,\n    -15.7183814485 , 78.2063383182  , 0.1516414969   , 37.9304181609  , 20.6185902740  , -22.2164106778 , 6.1160554677   , 2.4061326953   ,\n    -111.6681824598, -60.0858917090 , 75.1698614693  , -76.5787410444 , 28.3391655715  , -2.4946186443  , -68.0378899682 , 104.0893199171 ,\n    -51.8319647254 , 38.8521710524  , 75.9114239564  , 73.9206172905  , -103.2533029987, 6.9002718274   , -36.6346436319 , -25.1990926265 ,\n    1.5852145953   , -50.6438436795 , 21.5018844428  , -151.9305562846, -51.7326681814 , 21.4475994143  , 42.2564011921  , -74.0520586926 ,\n    49.7370635809  , -13.2957534126 , 36.6746826778  , -31.7005492589 , 148.4894964268 , 79.7890632353  , 16.8856024809  , 16.1690460177  ,\n    39.2665169484  , 117.2461167794 , -37.4827984831 , -47.8387803604 , -95.7025286193 , 34.3058214285  , -124.9536456028, 56.1640195764  ,\n    94.3636873606  , 35.3992852810  , -38.3920852159 , -100.5738062016, -29.7837022314 , 42.9133913996  , -34.2715618187 , -14.3589115627 ,\n    -16.5935468750 , 20.4574192236  , -88.7897972666 , -38.6285080386 , 53.3203422726  , 98.5991486746  , 122.7305462474 , 67.7902817187  ,\n    5.1764117389   , 5.0632821624   , 21.9288789574  , -78.3140512638 , -21.2069682335 , 23.6342010925  , 34.4445769455  , 59.1346766615  ,\n    28.9978778000  , 39.8121180845  , -17.1650033520 , -56.9174900874 , 17.8157086148  , -112.8801457350, -122.4019040408, 140.8669393157 ,\n    -65.4664329639 , 40.6952775518  , 32.7260891658  , -43.2565155866 , 19.3945751928  , -20.1815002000 , -67.6601711640 , -18.1921178207 ,\n    -35.6802153684 , 49.9550290306  , 131.4925251016 , -31.2940938167 , -5.2848453344  , -109.5580577933, 20.2437599390  , -8.8782958734  ,\n    54.1836717264  , 7.2555852190   , -3.5698316137  , -51.9236786262 , 6.7861547980   , -104.4814551670, 45.8458629668  , 70.0890876844  ,\n    38.3572837740  , 61.8024165129  , 68.0176962024  , -12.8193934080 , -21.4661610917 , -0.9377108815  , -74.2100679061 , 71.0490808147  ,\n    91.9813889497  , -14.5797640164 , 3.5036749129   , -138.3605478356, -48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637  ,\n    -34.0878176054 , 55.1075126157  , 97.3829871877  , 0.2053358099   , -94.8713267382 , 51.5460954054  , 21.2966946363  , 58.1331025047  ,\n    -23.4599044132 , -19.3315856528 , -8.4497193577  , -1.9594679356  , -33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097  ,\n    61.4666549819  , 14.6536253128  , 82.1632196866  , -44.6230161723 , -91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003  ,\n    70.7059960183  , -68.2829345081 , -10.2629800455 , -53.6385325047 , -68.7928766204 , 88.2444688302  , 83.1412324801  , -102.9206928160,\n    -68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 , 5.6685898328   , -36.0392956840 , 43.3269513128  , -8.6436416796  ,\n    -16.5054886972 , 11.5008791788  , 39.6923606683  , -28.9039554061 , 13.5938214364  , -23.6296332202 , 49.1171161163  , 53.1636857935  ,\n    -62.9672053166 , -54.2594757384 , 48.3838956696  , 8.0469071555   , -33.6472086213 , -120.5381752144, 55.0880453111  , 17.8990740563  ,\n    144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 , -12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 ,\n    65.7430288442  , -131.8695390036, 10.2750933946  , 90.9752774838  , -26.5859990591 , -95.6962772568 , 76.2174589344  , 24.8796848060  ,\n    -38.8938223046 , 54.1687774852  , -37.3585968996 , -34.6848570502 , 33.0151011570  , -55.8345877671 , -3.9009101671  , -31.5024971691 ,\n    -9.6863895491  , 91.8719195957  , -58.9993249744 , -25.6887030614 , -8.0829472205  , 4.6386491741   , -71.4019697167 , -21.3734669095 ,\n    86.2079144404  , 79.6823974266  , -0.0910915997  , 44.8067718095  , 58.7204020766  , 72.6856808976  , -50.3373732478 , -116.1175365534,\n    -15.0884909384 , 5.4593772059   , -63.6553527905 , 37.3460388205  , -32.2399421679 , 95.7569350513  , -7.3700141964  , -56.0370832967 ,\n    -41.7377150439 , -42.0042856519 , 12.5134312941  , 93.7845584531  , -32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 ,\n    -20.3704610276 , 15.8571376404  , 88.9127217235  , -33.1132582267 , -1.0005675836  , -28.1780471904 , 150.9349379135 , 38.0600520828  ,\n    36.4338677563  , -3.3709201641  , 29.7709773016  , 16.5064119077  , 21.3147729463  , 110.6714300904 , 18.8406036507  , 14.8963298097  ,\n    50.9975960392  , 16.3991140350  , -194.0805845907, -41.6723945839 , -74.8991127408 , -6.4587655805  , -0.6883628218  , -49.8709647175 ,\n    194.2265120473 , 64.3043624521  , 16.0040882780  , 68.4032551772  , -43.4050313128 , 84.6826289824  , -28.1357565943 , 134.6895584120 ,\n    -7.9746152680  , -95.6692886462 , -48.9444370342 , 79.4479343188  , -50.5345228122 , 52.4800633307  , -14.7735051703 , -20.1510237050 ,\n    22.5049816980  , 64.4191999102  , 24.8385648232  , 99.4265041360  , 62.0189508473  , -28.3892600378 , -109.8842008564, -79.0407483407 ,\n    18.3408112020  , 49.1650536089  , 31.5419844924  , -36.1160722679 , -132.9148081329, 10.4053531567  , -129.2463715470, -43.4602207151 ,\n    -24.2420653292 , 91.5388317556  , 21.4762248190  , -44.3810909139 , 18.4098011282  , -45.8691164539 , -20.9831197962 , 16.2076792914  ,\n    66.0224147666  , -13.6794615513 , 101.2163279622 , -62.4462618603 , 22.2040981785  , -52.3208382802 , -24.7909079016 , 58.5150375093  ,\n    18.8569705105  , -55.6083430939 , 131.0273367422 , -34.5209015065 , 121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098   ,\n    -23.8451707592 , -4.5912313547  , 31.1387246821  , 61.7019310824  , 49.1912429744  , -50.5836913031 , -74.8182600630 , -21.6209317022 ,\n    20.9409464654  , -72.7870824583 , -28.3530746820 , -45.0794425434 , -13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784  ,\n    8.4213193211   , 79.9349022793  , 60.0160502260  , 32.2272994080  , -72.2893887746 , 17.3063698247  , -134.6335742431, 64.6499736261  ,\n    7.1411921919   , -37.5517577873 , 6.2405670930   , 117.1920927305 , 128.7420689815 , -3.1556854963  , -13.4100422909 , -11.9336372907 ,\n    -8.6022400553  , -102.0033506666, -78.4696575074 , 15.0765861403  , -111.5219718576, -13.4162786508 , 38.2437013694  , 61.1637732561  ,\n    -34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 , -26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598  ,\n    103.3266736715 , -58.1865815617 , 27.6231908601  , -11.2004371750 , 26.0340617206  , 12.5696123916  , 0.6442714420   , -30.7393043544 ,\n    1.5314955897   , 49.9110088250  , -106.1358721920, 51.1608329944  , -32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 ,\n    59.9383486599  , -4.6301990580  , 5.0361682939   , -10.5669407980 , 124.0908762205 , 35.8305364082  , -123.6216777114, -74.2569079167 ,\n    -56.7651776816 , 16.0736385582  , 23.5030632215  , -110.6764295938, 44.3086821806  , 9.4452708243   , 5.3300080251   , 39.0483916714  ,\n    151.4550562868 , 62.8957092621  , -116.8103461233, 5.1129927759   , -33.2252515135 , -9.4522506046  , 22.7026048372  , -15.5264414569 ,\n    71.2087620034  , 19.1191568332  , 50.3019546809  , -5.6096922409  , 22.9344126462  , -7.7591876203  , 31.8949515564  , -58.4253952381 ,\n    66.4341297173  , -19.0583083044 , 96.7695087855  , 20.4934280047  , 4.9544603116   , -20.8288135920 , -173.2659655408, -62.4883621640 ,\n    -48.5528422703 , 12.1437504278  , 60.2482234666  , -19.6072312919 , -34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477  ,\n    -4.7051792479  , -13.1768910826 , 69.5138802139  , 58.5748201565  , -45.9385652563 , 151.7952104306 , 34.2541941013  , -58.0417838381 ,\n    28.1480473670  , 46.4006562684  , 97.7001828545  , 4.0855607626   , -32.6097018162 , 16.8913949959  , 105.7266202978 , -89.3978374651 ,\n    -60.9338593128 , -41.2220734230 , 49.9393070783  , 95.0974764854  , 49.2498366456  , 58.6214364590  , 34.1113830569  , 45.6634098874  ,\n    -22.5356086770 , -97.1978653617 , 86.5565049535  , 70.6118545777  , -30.6978082909 , 118.7238621666 , 14.5922386932  , 11.3449652072  ,\n    65.6007783405  , 82.6369678204  , -52.0390492248 , -47.0160551227 , -95.5142448634 , 99.7162626888  , -36.5523815090 , -42.8042935534 ,\n    68.3566199798  , -13.8451547552 , -71.1629911780 , 36.2989433752  , -32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639  ,\n    51.8078250755  , -26.8715188457 , -9.6291144797  , 40.1999849640  , -38.4634033246 , 40.9764960915  , -26.1715730268 , 36.5996396515  ,\n    -26.9924731886 , 53.7879986570  , -83.1658398348 , 23.6381378489  , 43.8794937753  , -55.4133836419 , 90.0266130838  , 14.1036181982  ,\n    -18.1225736715 , 85.1363181151  , -62.5970846379 , -18.5291947838 , -25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803  ,\n    -87.6471123430 , -36.7217762531 , 22.5952364054  , 11.1107885650  , -0.5377327229  , 160.8145792630 , 73.3103441505  , 10.1656872354  ,\n    -50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 , -4.9891264771  , -37.0226770057 , -80.9919535641 , 50.4418660876  ,\n    -25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751  , 113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 ,\n    43.5813790265  , 107.1836101171 , -55.1012654323 , -77.1529555887 , -33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378  ,\n    93.9385415207  , -61.0955216188 , 18.0530957225  , 7.9150142320   , -12.1218191587 , 34.0173961457  , 40.0084937565  , 9.8119275580   ,\n    44.2065861274  , -1.8718514394  , 67.4740024215  , 46.7391150131  , 207.2404815875 , 45.1635364462  , 43.3580102761  , -44.0244218674 ,\n    83.2387206007  , -8.6441851856  , 12.3993902588  , -22.5091685270 , -19.8332981376 , 97.9196509289  , -76.6720306234 , 28.9740705859  ,\n    121.9415248016 , 9.6656982611   , -51.0996453694 , 37.3704374740  , 74.7589840907  , -113.4066752631, 120.0029566342 , -105.3786221360,\n    81.8152755619  , -13.4979932982 , -21.4680758393 , -85.1088235539 , -65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 ,\n    33.1212995259  , -82.1480936443 , -10.5479715135 , 76.4601917004  , 42.1983651157  , 92.6104239912  , -42.3536237955 , -24.5644182272 ,\n    30.4446637772  , -90.2899420489 , 63.6723540422  , 103.0895811428 , 64.1706769263  , -10.7069812309 , 21.8927240409  , 6.3571071738   ,\n    57.1457649358  , -52.9866276448 , 66.0981829072  , -29.5372056881 , -79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141  ,\n    66.4244149837  , 53.3230426111  , -66.1283059222 , -131.0402660353, 8.0548411081   , 122.9088988100 , 1.2626894208   , -60.5059112373 ,\n    -68.8707203082 , -6.4747987200  , 85.8411327244  , 99.9624156733  , 90.4197864338  , -35.9630441182 , -22.9158275507 , -17.3660128776 ,\n    16.7845345761  , 34.7219749782  , -39.3513765878 , 1.0460702756   , -60.9494500182 , 20.0900333387  , -85.9636743832 , 88.4400782168  ,\n    15.0729628728  , 61.5499846243  , 11.8579871757  , 107.8617581581 , -42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807   ,\n    -36.0651825425 , 55.7638724501  , -10.4691736080 , -55.5672537178 , -61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676  ,\n    22.9426321237  , 14.3038202264  , -138.0926317438, -59.0892900856 , -162.5416439986, 7.1307658250   , -141.1236672256, -4.7173618068  ,\n    -16.7741532807 , -68.2615451173 , -2.6608701102  , 84.1978109826  , -11.3446202072 , 59.9630033088  , -1.8994925010  , -37.9301641959 ,\n    -119.4435600954, -11.4587491646 , 12.2423215240  , -7.3169898616  , -67.0373621128 , 36.0198843055  , 53.9791315249  , -134.5885680695,\n    -83.8330811965 , -16.6714816463 , -8.8498552035  , -24.0513088196 , -22.9444328877 , -37.7961441531 , 25.1975736186  , -136.1611637464,\n    -5.0843464033  , -10.3939554694 , 20.7422826935  , 75.6854136623  , 46.4179626736  , -57.0052830175 , 7.3457235521   , -51.5504447254 ,\n    -158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527   , 21.1746524375  , 99.4092980367  , -2.3206772903  , 45.7989166757  ,\n    2.0181548348   , -88.0556010969 , -59.1527212096 , 47.3607925077  , -10.4181140309 , 56.3558125650  , -8.9799125560  , -30.0376711812 ,\n    -36.7132904688 , 35.7785050392  , -13.0763909369 , -2.1855594714  , 18.1550954005  , -28.6711803575 , -55.4495172398 , -2.8812973198  ,\n    -59.9575059158 , 40.0588875786  , 57.4713686602  , -3.2835144853  , -36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 ,\n    -54.9408569587 , -35.2310451959 , 21.3345143458  , 65.7590671151  , 51.2214538168  , 46.1271939944  , -42.2235267919 , 127.2329928299 ,\n    105.2391778600 , 17.6726845966  , -129.9021148044, 8.7065613044   , -94.0987112511 , -3.5375742950  , -23.1385452379 , 60.6219530633  ,\n    92.5445564235  , 48.5111974469  , -52.5699309159 , -60.0634811685 , 25.9034368684  , 140.0249495491 , 1.5918852392   , 38.0266038291  ,\n    17.5588710703  , 3.4294066089   , -27.6748782173 , 59.6182974489  , -35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489   ,\n    22.7250686519  , -28.3524510951 , -34.4269062817 , 22.6464817325  , -61.6528147860 , -5.9782002429  , 61.4730771294  , 43.5582379527  ,\n    55.6862408270  , 87.8745651631  , 46.3401042715  , -19.8780979663 , 74.1272633369  , 29.8590452377  , -12.8665765140 , 34.2931401219  ,\n    53.9279617551  , -16.9017895140 , -70.1527553166 , -79.6367897992 , 109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 ,\n    17.6062148433  , 3.5090251835   , 74.2615941204  , -109.3431097845, 40.1403465151  , 28.8714561280  , 94.0868659302  , -19.0047033845 ,\n    -60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846  , -17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009  ,\n    -36.7817189239 , -29.1580893235 , -6.5848563828  , 90.2868948516  , -35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021  ,\n    -7.4546621940  , -52.0657517138 , -49.0404829633 , -114.6910280126, -117.6819819437, -32.7856729408 , 31.8232065591  , 12.1192973039  ,\n    35.2678513420  , -1.0336778293  , 30.7021249679  , 127.0442906046 , -84.8457819393 , 28.9862843096  , -47.3524701726 , -126.1094998460,\n    -2.9700276582  , -2.4956545870  , -53.8624121141 , -85.2114117637 , 76.9057985618  , 137.1205201755 , -19.0830817212 , 14.3407526579  ,\n    -56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090, 0.3487447576   , 33.4499716730  , 34.7126257844  , -9.3307383323  ,\n    27.2996276947  , 10.8765676134  , -91.1032360444 , -90.9584216222 , 1.6981490570   , 96.8557438791  , 56.7726390913  , -44.3246449237 ,\n    52.3260643361  , 21.5551140465  , 27.4535327381  , 2.0072717479   , 7.4823125629   , 77.1185863870  , 16.1372262663  , -10.7206012957 ,\n    66.8830091413  , 49.3523828287  , 54.0855375598  , 30.8570349345  , -10.9255375390 , 62.3910624674  , 30.9238561381  , 0.3352881853   ,\n    72.1022806197  , -28.8319885008 , 23.3335288806  , 46.8999035980  , -67.0984424822 , -164.7917209112, 42.5767681360  , -92.4668227688 ,\n    43.8491734282  , -17.1126540408 , 37.4819594334  , 69.0774409673  , -39.3530526854 , -14.0693747124 , -60.2520781215 , -80.3860105519 ,\n    32.6689956840  , 15.3393042576  , -18.5529761307 , 97.3942151573  , -4.4462855745  , 13.7614349817  , 158.3358780719 , -44.7258299667 ,\n    -17.7741912819 , 116.5136962268 , -33.6261057820 , 22.8344441288  , -155.1423976144, 5.7070117893   , -22.7906543902 , -45.0633909283 ,\n    -13.9329987929 , -66.0848932507 , 1.1383038109   , 123.8386958483 , 67.6662401589  , 45.9152963554  , -27.4397697462 , 97.9596747354  ,\n    -6.3544655181  , 29.0832146722  , 96.3468162499  , 32.4535976137  , -91.0650399301 , 2.7293262791   , 70.7853483111  , -92.3655274571 ,\n    69.0359217256  , 83.1530567979  , 35.8375091111  , 7.3393552348   , -95.1770165365 , 76.4905790891  , 55.6253140577  , -29.5315327050 ,\n    -16.5935468750 , 20.4574192236  , -88.7897972666 , -38.6285080386 , 53.3203422726  , 98.5991486746  , 122.7305462474 , 67.7902817187  ,\n    5.1764117389   , 5.0632821624   , 21.9288789574  , -78.3140512638 , -21.2069682335 , 23.6342010925  , 34.4445769455  , 59.1346766615  ,\n    28.9978778000  , 39.8121180845  , -17.1650033520 , -56.9174900874 , 17.8157086148  , -112.8801457350, -122.4019040408, 140.8669393157 ,\n    -65.4664329639 , 40.6952775518  , 32.7260891658  , -43.2565155866 , 19.3945751928  , -20.1815002000 , -67.6601711640 , -18.1921178207 ,\n    -35.6802153684 , -19.6571455162\n};\n\nconst float64_t filtering_f64_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] =\n{\n    43.0264275639  , -17.0525215570 , -94.8488973910 , -8.1924989580  , 7.2830326091   , 66.8368719314  , 33.9778190671  , 117.8652289772 ,\n    -129.6077797465, -14.6420815368 , 18.0239223278  , 20.6760530292  , 55.0375037651  , 1.8674609862   , -85.6534302408 , -33.5750364909 ,\n    29.2110949614  , 110.4727049460 , -94.1914619387 , -1.4084169343  , 83.5181653041  , 47.3073514127  , -13.3420621181 , 30.3389699104  ,\n    12.1188124277  , 100.9730921941 , -114.0146362390, -77.5823200409 , 37.2019034618  , 40.0026301128  , -58.3387276630 , -34.9472398600 ,\n    -5.1169678311  , -87.7660091118 , -150.5888601131, 56.0349370503  , 50.2168884079  , -74.2313236767 , 22.3648603560  , -6.8676387051  ,\n    74.8957303680  , -90.1292012823 , -55.1436241586 , -66.6732976100 , -6.7918147615  , 7.7612697081   , 35.7892605979  , -20.0470508830 ,\n    41.8369017546  , -143.7378056984, -41.9127158600 , -108.3531841158, -57.1917422289 , -124.2808828105, 38.9316388820  , -77.9212517405 ,\n    37.1990818377  , -28.9545952748 , -155.6371057564, 45.8088886393  , 36.2537018275  , -6.5727656016  , -104.2070491921, 45.5583813729  ,\n    -19.7674717059 , -80.4802190947 , -1.4444563441  , -42.2142256438 , 36.6546339194  , -57.0866498590 , 44.4677067511  , 65.7285753407  ,\n    -103.8158864647, 25.4348723711  , -153.5419639389, 39.3608409474  , 49.1658103436  , 79.5570602275  , 75.2944095996  , 58.9394700746  ,\n    -53.1018534392 , 33.4172444014  , 35.6224682287  , -64.4353396418 , -125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 ,\n    -17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604  , -191.1123732593, 119.6750713043 , 19.6182375803  , -26.7615252921 ,\n    2.2957847015   , -108.3436451287, -50.5906164995 , -5.6360985100  , -11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218  ,\n    -70.2048296348 , 72.8738253222  , 60.2450218115  , 114.2741231228 , 46.8180775285  , 6.9915412654   , -8.9909197429  , -78.9165936808 ,\n    66.4731535459  , -68.4235455651 , -79.8254597080 , -10.6308477115 , -62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997  ,\n    35.8213741877  , -54.4694482732 , 86.9631830044  , -53.0343838122 , -47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 ,\n    12.0258009869  , -5.1098204703  , -9.8420230737  , -107.3328761158, 44.6810431959  , -17.9083820345 , -60.9753512872 , -7.5915088994  ,\n    17.2250813329  , 57.9176125648  , 124.3004161362 , -63.1950908493 , 120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 ,\n    -49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 , -64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575   ,\n    -50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549  , -102.0850899209, 53.2360193126  , -25.8997883369 , 75.1445512333  ,\n    -113.8148602310, 17.8027281119  , -19.5006822722 , -44.2169628471 , 107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388   ,\n    46.7384653508  , 9.9047443751   , 81.8646964362  , 132.3812863877 , -95.6959050236 , -68.5015813484 , 65.8586404494  , 18.5039353889  ,\n    -30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 , -2.2127786675  , -35.4418447703 , -51.8722915974 , -107.9024439078,\n    -51.5940748232 , -51.7463262677 , 74.2795485984  , 94.2205022462  , 9.7016384049   , -47.3556083155 , -36.7822314478 , -151.6455525363,\n    -15.7183814485 , 78.2063383182  , 0.1516414969   , 37.9304181609  , 20.6185902740  , -22.2164106778 , 6.1160554677   , 2.4061326953   ,\n    -111.6681824598, -60.0858917090 , 75.1698614693  , -76.5787410444 , 28.3391655715  , -2.4946186443  , -68.0378899682 , 104.0893199171 ,\n    -51.8319647254 , 38.8521710524  , 75.9114239564  , 73.9206172905  , -103.2533029987, 6.9002718274   , -36.6346436319 , -25.1990926265 ,\n    1.5852145953   , -50.6438436795 , 21.5018844428  , -151.9305562846, -51.7326681814 , 21.4475994143  , 42.2564011921  , -74.0520586926 ,\n    49.7370635809  , -13.2957534126 , 36.6746826778  , -31.7005492589 , 148.4894964268 , 79.7890632353  , 16.8856024809  , 16.1690460177  ,\n    39.2665169484  , 117.2461167794 , -37.4827984831 , -47.8387803604 , -95.7025286193 , 34.3058214285  , -124.9536456028, 56.1640195764  ,\n    94.3636873606  , 35.3992852810  , -38.3920852159 , -100.5738062016, -29.7837022314 , 42.9133913996  , -34.2715618187 , -14.3589115627 ,\n    -16.5935468750 , 20.4574192236  , -88.7897972666 , -38.6285080386 , 53.3203422726  , 98.5991486746  , 122.7305462474 , 67.7902817187  ,\n    5.1764117389   , 5.0632821624   , 21.9288789574  , -78.3140512638 , -21.2069682335 , 23.6342010925  , 34.4445769455  , 59.1346766615  ,\n    28.9978778000  , 39.8121180845  , -17.1650033520 , -56.9174900874 , 17.8157086148  , -112.8801457350, -122.4019040408, 140.8669393157 ,\n    -65.4664329639 , 40.6952775518  , 32.7260891658  , -43.2565155866 , 19.3945751928  , -20.1815002000 , -67.6601711640 , -18.1921178207 ,\n    -35.6802153684 , 49.9550290306  , 131.4925251016 , -31.2940938167 , -5.2848453344  , -109.5580577933, 20.2437599390  , -8.8782958734  ,\n    54.1836717264  , 7.2555852190   , -3.5698316137  , -51.9236786262 , 6.7861547980   , -104.4814551670, 45.8458629668  , 70.0890876844  ,\n    38.3572837740  , 61.8024165129  , 68.0176962024  , -12.8193934080 , -21.4661610917 , -0.9377108815  , -74.2100679061 , 71.0490808147  ,\n    91.9813889497  , -14.5797640164 , 3.5036749129   , -138.3605478356, -48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637  ,\n    -34.0878176054 , 55.1075126157  , 97.3829871877  , 0.2053358099   , -94.8713267382 , 51.5460954054  , 21.2966946363  , 58.1331025047  ,\n    -23.4599044132 , -19.3315856528 , -8.4497193577  , -1.9594679356  , -33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097  ,\n    61.4666549819  , 14.6536253128  , 82.1632196866  , -44.6230161723 , -91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003  ,\n    70.7059960183  , -68.2829345081 , -10.2629800455 , -53.6385325047 , -68.7928766204 , 88.2444688302  , 83.1412324801  , -102.9206928160,\n    -68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 , 5.6685898328   , -36.0392956840 , 43.3269513128  , -8.6436416796  ,\n    -16.5054886972 , 11.5008791788  , 39.6923606683  , -28.9039554061 , 13.5938214364  , -23.6296332202 , 49.1171161163  , 53.1636857935  ,\n    -62.9672053166 , -54.2594757384 , 48.3838956696  , 8.0469071555   , -33.6472086213 , -120.5381752144, 55.0880453111  , 17.8990740563  ,\n    144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 , -12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 ,\n    65.7430288442  , -131.8695390036, 10.2750933946  , 90.9752774838  , -26.5859990591 , -95.6962772568 , 76.2174589344  , 24.8796848060  ,\n    -38.8938223046 , 54.1687774852  , -37.3585968996 , -34.6848570502 , 33.0151011570  , -55.8345877671 , -3.9009101671  , -31.5024971691 ,\n    -9.6863895491  , 91.8719195957  , -58.9993249744 , -25.6887030614 , -8.0829472205  , 4.6386491741   , -71.4019697167 , -21.3734669095 ,\n    86.2079144404  , 79.6823974266  , -0.0910915997  , 44.8067718095  , 58.7204020766  , 72.6856808976  , -50.3373732478 , -116.1175365534,\n    -15.0884909384 , 5.4593772059   , -63.6553527905 , 37.3460388205  , -32.2399421679 , 95.7569350513  , -7.3700141964  , -56.0370832967 ,\n    -41.7377150439 , -42.0042856519 , 12.5134312941  , 93.7845584531  , -32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 ,\n    -20.3704610276 , 15.8571376404  , 88.9127217235  , -33.1132582267 , -1.0005675836  , -28.1780471904 , 150.9349379135 , 38.0600520828  ,\n    36.4338677563  , -3.3709201641  , 29.7709773016  , 16.5064119077  , 21.3147729463  , 110.6714300904 , 18.8406036507  , 14.8963298097  ,\n    50.9975960392  , 16.3991140350  , -194.0805845907, -41.6723945839 , -74.8991127408 , -6.4587655805  , -0.6883628218  , -49.8709647175 ,\n    194.2265120473 , 64.3043624521  , 16.0040882780  , 68.4032551772  , -43.4050313128 , 84.6826289824  , -28.1357565943 , 134.6895584120 ,\n    -7.9746152680  , -95.6692886462 , -48.9444370342 , 79.4479343188  , -50.5345228122 , 52.4800633307  , -14.7735051703 , -20.1510237050 ,\n    22.5049816980  , 64.4191999102  , 24.8385648232  , 99.4265041360  , 62.0189508473  , -28.3892600378 , -109.8842008564, -79.0407483407 ,\n    18.3408112020  , 49.1650536089  , 31.5419844924  , -36.1160722679 , -132.9148081329, 10.4053531567  , -129.2463715470, -43.4602207151 ,\n    -24.2420653292 , 91.5388317556  , 21.4762248190  , -44.3810909139 , 18.4098011282  , -45.8691164539 , -20.9831197962 , 16.2076792914  ,\n    66.0224147666  , -13.6794615513 , 101.2163279622 , -62.4462618603 , 22.2040981785  , -52.3208382802 , -24.7909079016 , 58.5150375093  ,\n    18.8569705105  , -55.6083430939 , 131.0273367422 , -34.5209015065 , 121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098   ,\n    -23.8451707592 , -4.5912313547  , 31.1387246821  , 61.7019310824  , 49.1912429744  , -50.5836913031 , -74.8182600630 , -21.6209317022 ,\n    20.9409464654  , -72.7870824583 , -28.3530746820 , -45.0794425434 , -13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784  ,\n    8.4213193211   , 79.9349022793  , 60.0160502260  , 32.2272994080  , -72.2893887746 , 17.3063698247  , -134.6335742431, 64.6499736261  ,\n    7.1411921919   , -37.5517577873 , 6.2405670930   , 117.1920927305 , 128.7420689815 , -3.1556854963  , -13.4100422909 , -11.9336372907 ,\n    -8.6022400553  , -102.0033506666, -78.4696575074 , 15.0765861403  , -111.5219718576, -13.4162786508 , 38.2437013694  , 61.1637732561  ,\n    -34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 , -26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598  ,\n    103.3266736715 , -58.1865815617 , 27.6231908601  , -11.2004371750 , 26.0340617206  , 12.5696123916  , 0.6442714420   , -30.7393043544 ,\n    1.5314955897   , 49.9110088250  , -106.1358721920, 51.1608329944  , -32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 ,\n    59.9383486599  , -4.6301990580  , 5.0361682939   , -10.5669407980 , 124.0908762205 , 35.8305364082  , -123.6216777114, -74.2569079167 ,\n    -56.7651776816 , 16.0736385582  , 23.5030632215  , -110.6764295938, 44.3086821806  , 9.4452708243   , 5.3300080251   , 39.0483916714  ,\n    151.4550562868 , 62.8957092621  , -116.8103461233, 5.1129927759   , -33.2252515135 , -9.4522506046  , 22.7026048372  , -15.5264414569 ,\n    71.2087620034  , 19.1191568332  , 50.3019546809  , -5.6096922409  , 22.9344126462  , -7.7591876203  , 31.8949515564  , -58.4253952381 ,\n    66.4341297173  , -19.0583083044 , 96.7695087855  , 20.4934280047  , 4.9544603116   , -20.8288135920 , -173.2659655408, -62.4883621640 ,\n    -48.5528422703 , 12.1437504278  , 60.2482234666  , -19.6072312919 , -34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477  ,\n    -4.7051792479  , -13.1768910826 , 69.5138802139  , 58.5748201565  , -45.9385652563 , 151.7952104306 , 34.2541941013  , -58.0417838381 ,\n    28.1480473670  , 46.4006562684  , 97.7001828545  , 4.0855607626   , -32.6097018162 , 16.8913949959  , 105.7266202978 , -89.3978374651 ,\n    -60.9338593128 , -41.2220734230 , 49.9393070783  , 95.0974764854  , 49.2498366456  , 58.6214364590  , 34.1113830569  , 45.6634098874  ,\n    -22.5356086770 , -97.1978653617 , 86.5565049535  , 70.6118545777  , -30.6978082909 , 118.7238621666 , 14.5922386932  , 11.3449652072  ,\n    65.6007783405  , 82.6369678204  , -52.0390492248 , -47.0160551227 , -95.5142448634 , 99.7162626888  , -36.5523815090 , -42.8042935534 ,\n    68.3566199798  , -13.8451547552 , -71.1629911780 , 36.2989433752  , -32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639  ,\n    51.8078250755  , -26.8715188457 , -9.6291144797  , 40.1999849640  , -38.4634033246 , 40.9764960915  , -26.1715730268 , 36.5996396515  ,\n    -26.9924731886 , 53.7879986570  , -83.1658398348 , 23.6381378489  , 43.8794937753  , -55.4133836419 , 90.0266130838  , 14.1036181982  ,\n    -18.1225736715 , 85.1363181151  , -62.5970846379 , -18.5291947838 , -25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803  ,\n    -87.6471123430 , -36.7217762531 , 22.5952364054  , 11.1107885650  , -0.5377327229  , 160.8145792630 , 73.3103441505  , 10.1656872354  ,\n    -50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 , -4.9891264771  , -37.0226770057 , -80.9919535641 , 50.4418660876  ,\n    -25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751  , 113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 ,\n    43.5813790265  , 107.1836101171 , -55.1012654323 , -77.1529555887 , -33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378  ,\n    93.9385415207  , -61.0955216188 , 18.0530957225  , 7.9150142320   , -12.1218191587 , 34.0173961457  , 40.0084937565  , 9.8119275580   ,\n    44.2065861274  , -1.8718514394  , 67.4740024215  , 46.7391150131  , 207.2404815875 , 45.1635364462  , 43.3580102761  , -44.0244218674 ,\n    83.2387206007  , -8.6441851856  , 12.3993902588  , -22.5091685270 , -19.8332981376 , 97.9196509289  , -76.6720306234 , 28.9740705859  ,\n    121.9415248016 , 9.6656982611   , -51.0996453694 , 37.3704374740  , 74.7589840907  , -113.4066752631, 120.0029566342 , -105.3786221360,\n    81.8152755619  , -13.4979932982 , -21.4680758393 , -85.1088235539 , -65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 ,\n    33.1212995259  , -82.1480936443 , -10.5479715135 , 76.4601917004  , 42.1983651157  , 92.6104239912  , -42.3536237955 , -24.5644182272 ,\n    30.4446637772  , -90.2899420489 , 63.6723540422  , 103.0895811428 , 64.1706769263  , -10.7069812309 , 21.8927240409  , 6.3571071738   ,\n    57.1457649358  , -52.9866276448 , 66.0981829072  , -29.5372056881 , -79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141  ,\n    66.4244149837  , 53.3230426111  , -66.1283059222 , -131.0402660353, 8.0548411081   , 122.9088988100 , 1.2626894208   , -60.5059112373 ,\n    -68.8707203082 , -6.4747987200  , 85.8411327244  , 99.9624156733  , 90.4197864338  , -35.9630441182 , -22.9158275507 , -17.3660128776 ,\n    16.7845345761  , 34.7219749782  , -39.3513765878 , 1.0460702756   , -60.9494500182 , 20.0900333387  , -85.9636743832 , 88.4400782168  ,\n    15.0729628728  , 61.5499846243  , 11.8579871757  , 107.8617581581 , -42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807   ,\n    -36.0651825425 , 55.7638724501  , -10.4691736080 , -55.5672537178 , -61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676  ,\n    22.9426321237  , 14.3038202264  , -138.0926317438, -59.0892900856 , -162.5416439986, 7.1307658250   , -141.1236672256, -4.7173618068  ,\n    -16.7741532807 , -68.2615451173 , -2.6608701102  , 84.1978109826  , -11.3446202072 , 59.9630033088  , -1.8994925010  , -37.9301641959 ,\n    -119.4435600954, -11.4587491646 , 12.2423215240  , -7.3169898616  , -67.0373621128 , 36.0198843055  , 53.9791315249  , -134.5885680695,\n    -83.8330811965 , -16.6714816463 , -8.8498552035  , -24.0513088196 , -22.9444328877 , -37.7961441531 , 25.1975736186  , -136.1611637464,\n    -5.0843464033  , -10.3939554694 , 20.7422826935  , 75.6854136623  , 46.4179626736  , -57.0052830175 , 7.3457235521   , -51.5504447254 ,\n    -158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527   , 21.1746524375  , 99.4092980367  , -2.3206772903  , 45.7989166757  ,\n    2.0181548348   , -88.0556010969 , -59.1527212096 , 47.3607925077  , -10.4181140309 , 56.3558125650  , -8.9799125560  , -30.0376711812 ,\n    -36.7132904688 , 35.7785050392  , -13.0763909369 , -2.1855594714  , 18.1550954005  , -28.6711803575 , -55.4495172398 , -2.8812973198  ,\n    -59.9575059158 , 40.0588875786  , 57.4713686602  , -3.2835144853  , -36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 ,\n    -54.9408569587 , -35.2310451959 , 21.3345143458  , 65.7590671151  , 51.2214538168  , 46.1271939944  , -42.2235267919 , 127.2329928299 ,\n    105.2391778600 , 17.6726845966  , -129.9021148044, 8.7065613044   , -94.0987112511 , -3.5375742950  , -23.1385452379 , 60.6219530633  ,\n    92.5445564235  , 48.5111974469  , -52.5699309159 , -60.0634811685 , 25.9034368684  , 140.0249495491 , 1.5918852392   , 38.0266038291  ,\n    17.5588710703  , 3.4294066089   , -27.6748782173 , 59.6182974489  , -35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489   ,\n    22.7250686519  , -28.3524510951 , -34.4269062817 , 22.6464817325  , -61.6528147860 , -5.9782002429  , 61.4730771294  , 43.5582379527  ,\n    55.6862408270  , 87.8745651631  , 46.3401042715  , -19.8780979663 , 74.1272633369  , 29.8590452377  , -12.8665765140 , 34.2931401219  ,\n    53.9279617551  , -16.9017895140 , -70.1527553166 , -79.6367897992 , 109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 ,\n    17.6062148433  , 3.5090251835   , 74.2615941204  , -109.3431097845, 40.1403465151  , 28.8714561280  , 94.0868659302  , -19.0047033845 ,\n    -60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846  , -17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009  ,\n    -36.7817189239 , -29.1580893235 , -6.5848563828  , 90.2868948516  , -35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021  ,\n    -7.4546621940  , -52.0657517138 , -49.0404829633 , -114.6910280126, -117.6819819437, -32.7856729408 , 31.8232065591  , 12.1192973039  ,\n    35.2678513420  , -1.0336778293  , 30.7021249679  , 127.0442906046 , -84.8457819393 , 28.9862843096  , -47.3524701726 , -126.1094998460,\n    -2.9700276582  , -2.4956545870  , -53.8624121141 , -85.2114117637 , 76.9057985618  , 137.1205201755 , -19.0830817212 , 14.3407526579  ,\n    -56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090, 0.3487447576   , 33.4499716730  , 34.7126257844  , -9.3307383323  ,\n    27.2996276947  , 10.8765676134  , -91.1032360444 , -90.9584216222 , 1.6981490570   , 96.8557438791  , 56.7726390913  , -44.3246449237 ,\n    52.3260643361  , 21.5551140465  , 27.4535327381  , 2.0072717479   , 7.4823125629   , 77.1185863870  , 16.1372262663  , -10.7206012957 ,\n    66.8830091413  , 49.3523828287  , 54.0855375598  , 30.8570349345  , -10.9255375390 , 62.3910624674  , 30.9238561381  , 0.3352881853   ,\n    72.1022806197  , -28.8319885008 , 23.3335288806  , 46.8999035980  , -67.0984424822 , -164.7917209112, 42.5767681360  , -92.4668227688 ,\n    43.8491734282  , -17.1126540408 , 37.4819594334  , 69.0774409673  , -39.3530526854 , -14.0693747124 , -60.2520781215 , -80.3860105519 ,\n    32.6689956840  , 15.3393042576  , -18.5529761307 , 97.3942151573  , -4.4462855745  , 13.7614349817  , 158.3358780719 , -44.7258299667 ,\n    -17.7741912819 , 116.5136962268 , -33.6261057820 , 22.8344441288  , -155.1423976144, 5.7070117893   , -22.7906543902 , -45.0633909283 ,\n    -13.9329987929 , -66.0848932507 , 1.1383038109   , 123.8386958483 , 67.6662401589  , 45.9152963554  , -27.4397697462 , 97.9596747354  ,\n    -6.3544655181  , 29.0832146722  , 96.3468162499  , 32.4535976137  , -91.0650399301 , 2.7293262791   , 70.7853483111  , -92.3655274571 ,\n    69.0359217256  , 83.1530567979  , 35.8375091111  , 7.3393552348   , -95.1770165365 , 76.4905790891  , 55.6253140577  , -29.5315327050 ,\n    -16.5935468750 , 20.4574192236  , -88.7897972666 , -38.6285080386 , 53.3203422726  , 98.5991486746  , 122.7305462474 , 67.7902817187  ,\n    5.1764117389   , 5.0632821624   , 21.9288789574  , -78.3140512638 , -21.2069682335 , 23.6342010925  , 34.4445769455  , 59.1346766615  ,\n    28.9978778000  , 39.8121180845  , -17.1650033520 , -56.9174900874 , 17.8157086148  , -112.8801457350, -122.4019040408, 140.8669393157 ,\n    -65.4664329639 , 40.6952775518  , 32.7260891658  , -43.2565155866 , 19.3945751928  , -20.1815002000 , -67.6601711640 , -18.1921178207 ,\n    -35.6802153684 , -19.6571455162\n};\n\n/*--------------------------------------------------------------------------------*/\n/* Blocksizes */\n/*--------------------------------------------------------------------------------*/\nARR_DESC_DEFINE(uint32_t,\n                filtering_blocksizes,\n                5,\n                CURLY(\n                      1, 7, 14, 32, FILTERING_MAX_BLOCKSIZE));\n\nARR_DESC_DEFINE(uint32_t,\n                lms_blocksizes,\n                3,\n                CURLY(\n                      128, 256, LMS_MAX_BLOCKSIZE));\n\nARR_DESC_DEFINE(uint16_t,\n                filtering_numtaps,\n                5,\n                CURLY(\n                      4, 6, 14, 32, FILTERING_MAX_NUMTAPS));\n\nARR_DESC_DEFINE(uint16_t,\n                filtering_numtaps2,\n                5,\n                CURLY(\n                      6, 12, 18, 24, 30));\n\nARR_DESC_DEFINE(uint16_t,\n                filtering_numstages,\n                3,\n                CURLY(\n                      1, 7, FILTERING_MAX_NUMSTAGES));\n\nARR_DESC_DEFINE(uint8_t,\n                filtering_postshifts,\n                3,\n                CURLY(\n                      0, 1, FILTERING_MAX_POSTSHIFT));\n\nARR_DESC_DEFINE(uint8_t,\n                filtering_Ls,\n                3,\n                CURLY(\n                      1, 2, FILTERING_MAX_L));\n\nARR_DESC_DEFINE(uint8_t,\n                filtering_Ms,\n                6,\n                CURLY(\n                      1, 2, 4, 7, 11, FILTERING_MAX_M));\n\n\n/*--------------------------------------------------------------------------------*/\n/* Coefficient Lists */\n/*--------------------------------------------------------------------------------*/\n\n// There must be at least max( FILTERING_MAX_NUMTAPS + 2 , FILTERING_MAX_NUMSTAGES * 6 + 2) coefficients\nconst float32_t filtering_coeffs_f32[FILTERING_MAX_NUMSTAGES * 6 + 2] =\n{\n\t-13.0572f, 0.0f     , -97.4724f, 8.4111f  , -7.2193f , -53.7577f, 22.2630f ,\n   -1.0509f  , -25.9198f, 26.5207f , -12.6697f, -78.7453f, -0.6540f , 0.3119f  ,\n   13.4595f  , -6.7225f , -4.1313f , -38.5974f, 3.2700f  , -51.6191f, -22.4314f,\n   0.2481f   , 32.9779f , -37.6421f, 5.4469f  , -7.0023f , 24.3657f , 9.9140f  ,\n   0.2870f   , -13.0499f, 29.3333f , -53.1396f, -2.7555f , 0.5377f  , 35.3491f ,\n   -3.7134f  , 0.8548f  , 4.7469f  , -10.5865f, -2.7285f , -1.5912f , -13.3502f,\n   6.8532f   , -8.2304f , -8.1193f , 3.8257f  , -2.1703f , 13.5727f , 14.2736f ,\n   -0.9855f  , -8.9334f , -13.8883f, 11.8430f , -2.2024f , 0.9795f  , 15.6191f ,\n   5.2121f   , 10.8102f , -9.4171f , 6.0411f  , -0.9131f , 10.6992f , -3.2634f ,\n   7.5849f   , -4.9305f , -6.0549f , -7.9409f , 1.5827f  , 13.3177f , 8.6727f  ,\n   -13.2268f , 11.1239f , 0.2481f  , 32.9779f , -37.6421f, 5.4469f  , -13.8883f,\n   11.8430f  , -2.2024f , 0.9795f  , 15.6191f , 0.2481f  , 32.9779f , -37.6421f,\n   3.2700f   , -51.6191f\n};\nconst float64_t filtering_coeffs_f64[FILTERING_MAX_NUMSTAGES * 6 + 2] =\n{\n\t-13.0572f, 0.0f     , -97.4724f, 8.4111f  , -7.2193f , -53.7577f, 22.2630f ,\n   -1.0509f  , -25.9198f, 26.5207f , -12.6697f, -78.7453f, -0.6540f , 0.3119f  ,\n   13.4595f  , -6.7225f , -4.1313f , -38.5974f, 3.2700f  , -51.6191f, -22.4314f,\n   0.2481f   , 32.9779f , -37.6421f, 5.4469f  , -7.0023f , 24.3657f , 9.9140f  ,\n   0.2870f   , -13.0499f, 29.3333f , -53.1396f, -2.7555f , 0.5377f  , 35.3491f ,\n   -3.7134f  , 0.8548f  , 4.7469f  , -10.5865f, -2.7285f , -1.5912f , -13.3502f,\n   6.8532f   , -8.2304f , -8.1193f , 3.8257f  , -2.1703f , 13.5727f , 14.2736f ,\n   -0.9855f  , -8.9334f , -13.8883f, 11.8430f , -2.2024f , 0.9795f  , 15.6191f ,\n   5.2121f   , 10.8102f , -9.4171f , 6.0411f  , -0.9131f , 10.6992f , -3.2634f ,\n   7.5849f   , -4.9305f , -6.0549f , -7.9409f , 1.5827f  , 13.3177f , 8.6727f  ,\n   -13.2268f , 11.1239f , 0.2481f  , 32.9779f , -37.6421f, 5.4469f  , -13.8883f,\n   11.8430f  , -2.2024f , 0.9795f  , 15.6191f , 0.2481f  , 32.9779f , -37.6421f,\n   3.2700f   , -51.6191f\n};\n\nconst float32_t filtering_coeffs_b_f32[FILTERING_MAX_NUMSTAGES * 6 + 2] =\n{\n\t-0.0572f, 0.0f    , -0.4724f, 0.4111f , -0.9999f, -0.7577f, 0.2630f ,\n   -0.0509f, -1.0000f, 0.5207f , -0.6697f, -0.7453f, -0.6540f, 0.3119f ,\n   0.4595f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, -0.4314f,\n   0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,\n   0.2870f , -0.0499f, 0.3333f , -0.1396f, -0.7555f, 0.5377f , 0.3491f ,\n   0.2369f , -0.5310f, -0.5904f, 0.6263f , 0.0205f , 0.1088f , -0.2926f,\n   -0.4187f, -0.5094f, 0.4479f , -0.3594f, -0.3102f, 0.6748f , 0.7620f ,\n   0.0033f , -0.9195f, 0.3192f , -0.1705f, 0.5524f , -0.5025f, 0.4898f ,\n   -0.0119f, -0.3982f, -0.7818f, -0.9186f, -0.0944f, 0.7228f , 0.7014f ,\n   0.4850f , -0.6814f, 0.4914f , -0.6286f, 0.5130f , -0.8585f, 0.3000f ,\n   0.6068f , 0.4978f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f,\n   0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,\n   0.2369f , -0.5310f\n};\n\nconst float64_t filtering_coeffs_b_f64[FILTERING_MAX_NUMSTAGES * 6 + 2] =\n{\n\t-0.0572f, 0.0f    , -0.4724f, 0.4111f , -0.9999f, -0.7577f, 0.2630f ,\n   -0.0509f, -1.0000f, 0.5207f , -0.6697f, -0.7453f, -0.6540f, 0.3119f ,\n   0.4595f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, -0.4314f,\n   0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,\n   0.2870f , -0.0499f, 0.3333f , -0.1396f, -0.7555f, 0.5377f , 0.3491f ,\n   0.2369f , -0.5310f, -0.5904f, 0.6263f , 0.0205f , 0.1088f , -0.2926f,\n   -0.4187f, -0.5094f, 0.4479f , -0.3594f, -0.3102f, 0.6748f , 0.7620f ,\n   0.0033f , -0.9195f, 0.3192f , -0.1705f, 0.5524f , -0.5025f, 0.4898f ,\n   -0.0119f, -0.3982f, -0.7818f, -0.9186f, -0.0944f, 0.7228f , 0.7014f ,\n   0.4850f , -0.6814f, 0.4914f , -0.6286f, 0.5130f , -0.8585f, 0.3000f ,\n   0.6068f , 0.4978f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f,\n   0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,\n   0.2369f , -0.5310f\n};\n\nconst float32_t *filtering_coeffs_c_f32 = filtering_coeffs_b_f32 + 1;\n\nconst q31_t filtering_coeffs_q31[FILTERING_MAX_NUMSTAGES * 6 + 2] =\n{\n\t0xEEDA759C, 0x00000000, 0x80000000, 0x0B0BA027, 0xF6850544, 0xB967E3EC,\n\t0x1D3C4F64, 0xFFFFFFFF, 0xDDF65B14, 0x22D3A62D, 0xEF5CBB89, 0x98979EE0,\n\t0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5,\n\t0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690,\n\t0x0727234D, 0xF6CDFB14, 0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A,\n\t0x268530EF, 0xBA37B050, 0x7FFFFFFF, 0xEF5CBB89, 0x00000000, 0x2B4E6639,\n\t0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5,\n\t0x1D3C4F64, 0xFFFFFFFF, 0xDDF65B14, 0x22D3A62D, 0xEF5CBB89, 0x98979EE0,\n\t0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690,\n\t0x0727234D, 0xF6CDFB14, 0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A,\n   0xE28B1589, 0x0053690B, 0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0xB967E3EC,\n\t0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690,\n   0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A, 0xFFFFFFFF, 0xDDF65B14,\n\t0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5,\n   0x2B4E6639, 0xCE919690\n};\n\nconst q31_t *filtering_coeffs_b_q31 = filtering_coeffs_q31 + 1;\nconst q31_t *filtering_coeffs_c_q31 = filtering_coeffs_q31 + 2;\n\n//fourth coefficient MUST be zero for arm_biquad_cascade_df1_fast_q15 to work\n//every 6th coefficient after that must also be zero\nconst q15_t filtering_coeffs_q15[FILTERING_MAX_NUMSTAGES * 6 + 4] =\n{\n\t0xBA37, 0xEEDA, 0x8000, 0x0000, 0x0B0B, 0xF685, 0xB967,\n\t0x1D3C, 0xFFFF, 0x0000, 0x22D3, 0xEF5C, 0x9897,\n\t0xFF24, 0x0068, 0x0000, 0xF72C, 0xFA93, 0xCD50,\n\t0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,\n\t0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC,\n\t0x2685, 0xBA37, 0x0000, 0xDDF6, 0x0000, 0x2B4E,\n\t0xFF24, 0x0068, 0x0000, 0xF72C, 0xFA93, 0xCD50,\n\t0x1D3C, 0xFFFF, 0x0000, 0x22D3, 0xEF5C, 0x9897,\n\t0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,\n\t0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC,\n   0xE28B, 0x0053, 0x0000, 0xBC36, 0xE28B, 0xB967,\n\t0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,\n\t0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,\n\t0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC,\n   0xE28B, 0x11AC, 0x0000,\n};\n\nconst q15_t *filtering_coeffs_b_q15 = filtering_coeffs_q15 + 2;\nconst q15_t *filtering_coeffs_c_q15 = filtering_coeffs_q15 + 4;\n\nconst q7_t filtering_coeffs_q7[FILTERING_MAX_NUMSTAGES * 6 + 8] =\n{\n\t0xEE, 0x00, 0x80, 0x0B, 0xF6, 0xB9,\n\t0x1D, 0xFF, 0xDD, 0x22, 0xEF, 0x98,\n\t0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xCD,\n\t0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE,\n\t0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,\n\t0x26, 0xBA, 0x7F, 0x00, 0x80, 0x2B,\n\t0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xCD,\n\t0x1D, 0xFF, 0xDD, 0x22, 0xEF, 0x98,\n\t0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE,\n\t0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,\n   0xE2, 0x00, 0x04, 0xBC, 0xE2, 0xB9,\n\t0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE,\n\t0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,\n\t0x26, 0xBA, 0x7F, 0x00, 0x80, 0x2B,\n\t0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,\n   0xFA, 0xCD\n};\n\nconst q7_t *filtering_coeffs_b_q7 = filtering_coeffs_q7 + 4;\nconst q7_t *filtering_coeffs_c_q7 = filtering_coeffs_q7 + 8;\n\n/*--------------------------------------------------------------------------------*/\n/* Tap Delay Lists */\n/*--------------------------------------------------------------------------------*/\n//const int32_t filtering_tap_delay[FILTERING_MAX_NUMTAPS] = {\n//\t0xEE, 0x00, 0x10, 0x0B, 0xF6, 0xD9,\n//\t0x1D, 0xFF, 0xDD, 0x1A, 0xEF, 0xE8,\n//\t0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xDD,\n//\t0x04, 0xEC, 0xE2, 0x00, 0x2B, 0xFE,\n//\t0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,\n//\t0x20, 0xDF, 0x21\n//};\n\nconst int32_t filtering_tap_delay[FILTERING_MAX_NUMTAPS] = {\n\t0x00, 0x01, 0x10, 0x0B, 0x03, 0x05,\n\t0x1D, 0x21, 0x11, 0x1A, 0x1F, 0x07,\n\t0x20, 0x01, 0x10, 0x0B, 0x03, 0x05,\n\t0x1D, 0x21, 0x11, 0x1A, 0x1F, 0x07,\n\t0x00, 0x01, 0x10, 0x0B, 0x03, 0x05,\n\t0x1D, 0x21, 0x11\n};\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"filtering_tests.h\"\n\nJTEST_DEFINE_GROUP(filtering_tests)\n{\n  /*\n    To skip a test, comment it out.\n  */\n  JTEST_GROUP_CALL(biquad_tests);\n  JTEST_GROUP_CALL(conv_tests);\n  JTEST_GROUP_CALL(correlate_tests);\n  JTEST_GROUP_CALL(fir_tests);\n  JTEST_GROUP_CALL(iir_tests);\n  JTEST_GROUP_CALL(lms_tests);\n\n  return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/fir_tests.c",
    "content": "#include \"jtest.h\"\n#include \"filtering_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"filtering_templates.h\"\n#include \"type_abbrev.h\"\n\n#define FIR_DEFINE_TEST(suffix, config_suffix, output_type)             \\\n   JTEST_DEFINE_TEST(arm_fir##config_suffix##_##suffix##_test,          \\\n         arm_fir##config_suffix##_##suffix)                             \\\n   {                                                                    \\\n      arm_fir_instance_##suffix fir_inst_fut = { 0 };                   \\\n      arm_fir_instance_##suffix fir_inst_ref = { 0 };                   \\\n                                                                        \\\n      TEMPLATE_DO_ARR_DESC(                                             \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes    \\\n            ,                                                           \\\n         TEMPLATE_DO_ARR_DESC(                                          \\\n               numtaps_idx, uint16_t, numTaps, filtering_numtaps        \\\n               ,                                                        \\\n               /* Initialize the FIR Instances */                       \\\n               arm_fir_init_##suffix(                                   \\\n                     &fir_inst_fut, numTaps,                            \\\n                     (output_type*)filtering_coeffs_##suffix,           \\\n                     (void *) filtering_pState, blockSize);             \\\n                                                                        \\\n              /* Display test parameter values */                       \\\n              JTEST_DUMP_STRF(\"Block Size: %d\\n\"                        \\\n                              \"Number of Taps: %d\\n\",                   \\\n                         (int)blockSize,                                \\\n                         (int)numTaps);                                 \\\n                                                                        \\\n               JTEST_COUNT_CYCLES(                                      \\\n                     arm_fir##config_suffix##_##suffix(                 \\\n                           &fir_inst_fut,                               \\\n                           (void *) filtering_##suffix##_inputs,        \\\n                           (void *) filtering_output_fut,               \\\n                           blockSize));                                 \\\n                                                                        \\\n               arm_fir_init_##suffix(                                   \\\n                     &fir_inst_ref, numTaps,                            \\\n                     (output_type*)filtering_coeffs_##suffix,           \\\n                     (void *) filtering_pState, blockSize);             \\\n                                                                        \\\n               ref_fir##config_suffix##_##suffix(                       \\\n                     &fir_inst_ref,                                     \\\n                     (void *) filtering_##suffix##_inputs,              \\\n                     (void *) filtering_output_ref,                     \\\n                     blockSize);                                        \\\n                                                                        \\\n               FILTERING_SNR_COMPARE_INTERFACE(                         \\\n                     blockSize,                                         \\\n                     output_type)));                                    \\\n                                                                        \\\n            return JTEST_TEST_PASSED;                                   \\\n   }\n\n#define FIR_INTERPOLATE_DEFINE_TEST(suffix, output_type)                      \\\n   JTEST_DEFINE_TEST(arm_fir_interpolate_##suffix##_test,                     \\\n         arm_fir_interpolate_##suffix)                                        \\\n   {                                                                          \\\n      arm_fir_interpolate_instance_##suffix fir_inst_fut = { 0 };             \\\n      arm_fir_interpolate_instance_##suffix fir_inst_ref = { 0 };             \\\n                                                                              \\\n      TEMPLATE_DO_ARR_DESC(                                                   \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes          \\\n            ,                                                                 \\\n         TEMPLATE_DO_ARR_DESC(                                                \\\n               numtaps_idx, uint16_t, numTaps, filtering_numtaps2             \\\n               ,                                                              \\\n            TEMPLATE_DO_ARR_DESC(                                             \\\n                  L_idx, uint8_t, L, filtering_Ls                             \\\n                  ,                                                           \\\n                  /* Display test parameter values */                         \\\n                  JTEST_DUMP_STRF(\"Block Size: %d\\n\"                          \\\n                                 \"Number of Taps: %d\\n\"                       \\\n                                 \"Upsample factor: %d\\n\",                     \\\n                                (int)blockSize,                               \\\n                                (int)numTaps,                                 \\\n                                (int)L);                                      \\\n                                                                              \\\n                  /* Initialize the FIR Instances */                          \\\n                  arm_fir_interpolate_init_##suffix(                          \\\n                        &fir_inst_fut, L, numTaps,                            \\\n                        (output_type*)filtering_coeffs_##suffix,              \\\n                        (void *) filtering_pState, blockSize);                \\\n                                                                              \\\n                  JTEST_COUNT_CYCLES(                                         \\\n                        arm_fir_interpolate_##suffix(                         \\\n                              &fir_inst_fut,                                  \\\n                              (void *) filtering_##suffix##_inputs,           \\\n                              (void *) filtering_output_fut,                  \\\n                              blockSize));                                    \\\n                                                                              \\\n                  arm_fir_interpolate_init_##suffix(                          \\\n                        &fir_inst_ref, L, numTaps,                            \\\n                        (output_type*)filtering_coeffs_##suffix,              \\\n                        (void *) filtering_pState, blockSize);                \\\n                                                                              \\\n                  ref_fir_interpolate_##suffix(                               \\\n                        &fir_inst_ref,                                        \\\n                        (void *) filtering_##suffix##_inputs,                 \\\n                        (void *) filtering_output_ref,                        \\\n                        blockSize);                                           \\\n                                                                              \\\n                  FILTERING_SNR_COMPARE_INTERFACE(                            \\\n                        blockSize * (uint32_t)L,                              \\\n                        output_type))));                                      \\\n                                                                              \\\n            return JTEST_TEST_PASSED;                                         \\\n   }\n\n#define FIR_DECIMATE_DEFINE_TEST(suffix, config_suffix, output_type)       \\\n   JTEST_DEFINE_TEST(arm_fir_decimate##config_suffix##_##suffix##_test,    \\\n         arm_fir_decimate##config_suffix##_##suffix)                       \\\n   {                                                                       \\\n      arm_fir_decimate_instance_##suffix fir_inst_fut = { 0 };             \\\n      arm_fir_decimate_instance_##suffix fir_inst_ref = { 0 };             \\\n                                                                           \\\n      TEMPLATE_DO_ARR_DESC(                                                \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes       \\\n            ,                                                              \\\n         TEMPLATE_DO_ARR_DESC(                                             \\\n               numtaps_idx, uint16_t, numTaps, filtering_numtaps           \\\n               ,                                                           \\\n            TEMPLATE_DO_ARR_DESC(                                          \\\n                  M_idx, uint8_t, M, filtering_Ms                          \\\n                  ,                                                        \\\n                  if (blockSize % M == 0)                                   \\\n                  {                                                        \\\n                     /* Display test parameter values */                   \\\n                     JTEST_DUMP_STRF(\"Block Size: %d\\n\"                    \\\n                                     \"Number of Taps: %d\\n\"                \\\n                                     \"Decimation Factor: %d\\n\",            \\\n                                     (int)blockSize,                       \\\n                                     (int)numTaps,                         \\\n                                     (int)M);                              \\\n                                                                           \\\n                     /* Initialize the FIR Instances */                    \\\n                     arm_fir_decimate_init_##suffix(                       \\\n                           &fir_inst_fut, numTaps, M,                      \\\n                           (output_type*)filtering_coeffs_##suffix,        \\\n                           (void *) filtering_pState, blockSize);          \\\n                                                                           \\\n                     JTEST_COUNT_CYCLES(                                   \\\n                           arm_fir_decimate##config_suffix##_##suffix(     \\\n                                 &fir_inst_fut,                            \\\n                                 (void *) filtering_##suffix##_inputs,     \\\n                                 (void *) filtering_output_fut,            \\\n                                 blockSize));                              \\\n                                                                           \\\n                     arm_fir_decimate_init_##suffix(                       \\\n                           &fir_inst_ref, numTaps, M,                      \\\n                           (output_type*)filtering_coeffs_##suffix,        \\\n                           (void *) filtering_pState, blockSize);          \\\n                                                                           \\\n                     ref_fir_decimate##config_suffix##_##suffix(           \\\n                           &fir_inst_ref,                                  \\\n                           (void *) filtering_##suffix##_inputs,           \\\n                           (void *) filtering_output_ref,                  \\\n                           blockSize);                                     \\\n                                                                           \\\n                     FILTERING_SNR_COMPARE_INTERFACE(                      \\\n                           blockSize / M,                                  \\\n                           output_type);                                   \\\n                  })));                                                    \\\n                                                                           \\\n            return JTEST_TEST_PASSED;                                      \\\n   }\n\n#define FIR_LATTICE_DEFINE_TEST(suffix, output_type)                       \\\n   JTEST_DEFINE_TEST(arm_fir_lattice_##suffix##_test,                      \\\n         arm_fir_lattice_##suffix)                                         \\\n   {                                                                       \\\n      arm_fir_lattice_instance_##suffix fir_inst_fut = { 0 };              \\\n      arm_fir_lattice_instance_##suffix fir_inst_ref = { 0 };              \\\n                                                                           \\\n      TEMPLATE_DO_ARR_DESC(                                                \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes       \\\n            ,                                                              \\\n         TEMPLATE_DO_ARR_DESC(                                             \\\n               numstages_idx, uint16_t, numStages, filtering_numstages     \\\n               ,                                                           \\\n               /* Display test parameter values */                         \\\n               JTEST_DUMP_STRF(\"Block Size: %d\\n\"                          \\\n                               \"Number of Stages: %d\\n\",                   \\\n                               (int)blockSize,                             \\\n                               (int)numStages);                            \\\n                                                                           \\\n               /* Initialize the FIR Instances */                          \\\n               arm_fir_lattice_init_##suffix(                              \\\n                     &fir_inst_fut, numStages,                             \\\n                     (output_type*)filtering_coeffs_##suffix,              \\\n                     (void *) filtering_pState);                           \\\n                                                                           \\\n               JTEST_COUNT_CYCLES(                                         \\\n                     arm_fir_lattice_##suffix(                             \\\n                           &fir_inst_fut,                                  \\\n                           (void *) filtering_##suffix##_inputs,           \\\n                           (void *) filtering_output_fut,                  \\\n                           blockSize));                                    \\\n                                                                           \\\n               arm_fir_lattice_init_##suffix(                              \\\n                     &fir_inst_ref, numStages,                             \\\n                     (output_type*)filtering_coeffs_##suffix,              \\\n                     (void *) filtering_pState);                           \\\n                                                                           \\\n               ref_fir_lattice_##suffix(                                   \\\n                     &fir_inst_ref,                                        \\\n                     (void *) filtering_##suffix##_inputs,                 \\\n                     (void *) filtering_output_ref,                        \\\n                     blockSize);                                           \\\n                                                                           \\\n               FILTERING_SNR_COMPARE_INTERFACE(                            \\\n                     blockSize,                                            \\\n                     output_type)));                                       \\\n                                                                           \\\n            return JTEST_TEST_PASSED;                                      \\\n   }\n\n\n#define FIR_SPARSE_DEFINE_TEST(suffix, output_type)                     \\\n   JTEST_DEFINE_TEST(arm_fir_sparse_##suffix##_test,                    \\\n         arm_fir_sparse_##suffix)                                       \\\n   {                                                                    \\\n      arm_fir_sparse_instance_##suffix fir_inst_fut = { 0 };            \\\n      arm_fir_sparse_instance_##suffix fir_inst_ref = { 0 };            \\\n                                                                        \\\n      TEMPLATE_DO_ARR_DESC(                                             \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes    \\\n            ,                                                           \\\n         TEMPLATE_DO_ARR_DESC(                                          \\\n               numtaps_idx, uint16_t, numTaps, filtering_numtaps        \\\n               ,                                                        \\\n               /* Display test parameter values */                      \\\n               JTEST_DUMP_STRF(\"Block Size: %d\\n\"                       \\\n                               \"Number of Taps: %d\\n\"                   \\\n                               \"Tap Delay: %d\\n\",                       \\\n                               (int)blockSize,                          \\\n                               (int)numTaps,                            \\\n                               (int)FILTERING_MAX_TAP_DELAY);           \\\n                                                                        \\\n               /* Initialize the FIR Instances */                       \\\n               arm_fir_sparse_init_##suffix(                            \\\n                     &fir_inst_fut, numTaps,                            \\\n                     (output_type*)filtering_coeffs_##suffix,           \\\n                     (void *) filtering_pState,                         \\\n                     (int32_t*)filtering_tap_delay,                     \\\n                     FILTERING_MAX_TAP_DELAY, blockSize);               \\\n                                                                        \\\n               JTEST_COUNT_CYCLES(                                      \\\n                     arm_fir_sparse_##suffix(                           \\\n                           &fir_inst_fut,                               \\\n                           (void *) filtering_##suffix##_inputs,        \\\n                           (void *) filtering_output_fut,               \\\n                           (void *) filtering_scratch,                  \\\n                           blockSize));                                 \\\n                                                                        \\\n               arm_fir_sparse_init_##suffix(                            \\\n                     &fir_inst_ref, numTaps,                            \\\n                     (output_type*)filtering_coeffs_##suffix,           \\\n                     (void *) filtering_pState,                         \\\n                     (int32_t*)filtering_tap_delay,                     \\\n                     FILTERING_MAX_TAP_DELAY, blockSize);               \\\n                                                                        \\\n               ref_fir_sparse_##suffix(                                 \\\n                     &fir_inst_ref,                                     \\\n                     (void *) filtering_##suffix##_inputs,              \\\n                     (void *) filtering_output_ref,                     \\\n                     (void *) filtering_scratch,                        \\\n                     blockSize);                                        \\\n                                                                        \\\n               FILTERING_SNR_COMPARE_INTERFACE(                         \\\n                     blockSize,                                         \\\n                     output_type)));                                    \\\n                                                                        \\\n            return JTEST_TEST_PASSED;                                   \\\n   }\n\n#define FIR_SPARSE2_DEFINE_TEST(suffix, output_type)                    \\\n   JTEST_DEFINE_TEST(arm_fir_sparse_##suffix##_test,                    \\\n         arm_fir_sparse_##suffix)                                       \\\n   {                                                                    \\\n      arm_fir_sparse_instance_##suffix fir_inst_fut = { 0 };            \\\n      arm_fir_sparse_instance_##suffix fir_inst_ref = { 0 };            \\\n                                                                        \\\n      TEMPLATE_DO_ARR_DESC(                                             \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes    \\\n            ,                                                           \\\n         TEMPLATE_DO_ARR_DESC(                                          \\\n               numtaps_idx, uint16_t, numTaps, filtering_numtaps        \\\n               ,                                                        \\\n              /* Display test parameter values */                       \\\n              JTEST_DUMP_STRF(\"Block Size: %d\\n\"                        \\\n                              \"Number of Taps: %d\\n\"                    \\\n                              \"Tap Delay: %d\\n\",                        \\\n                              (int)blockSize,                           \\\n                              (int)numTaps,                             \\\n                              (int)FILTERING_MAX_TAP_DELAY);            \\\n                                                                        \\\n               /* Initialize the FIR Instances */                       \\\n               arm_fir_sparse_init_##suffix(                            \\\n                     &fir_inst_fut, numTaps,                            \\\n                     (output_type*)filtering_coeffs_##suffix,           \\\n                     (void *) filtering_pState,                         \\\n                     (int32_t*)filtering_tap_delay,                     \\\n                     FILTERING_MAX_TAP_DELAY, blockSize);               \\\n                                                                        \\\n               JTEST_COUNT_CYCLES(                                      \\\n                     arm_fir_sparse_##suffix(                           \\\n                           &fir_inst_fut,                               \\\n                           (void *) filtering_##suffix##_inputs,        \\\n                           (void *) filtering_output_fut,               \\\n                           (void *) filtering_scratch,                  \\\n                           (void *) filtering_scratch2,                 \\\n                           blockSize));                                 \\\n                                                                        \\\n               arm_fir_sparse_init_##suffix(                            \\\n                     &fir_inst_ref, numTaps,                            \\\n                     (output_type*)filtering_coeffs_##suffix,           \\\n                     (void *) filtering_pState,                         \\\n                     (int32_t*)filtering_tap_delay,                     \\\n                     FILTERING_MAX_TAP_DELAY, blockSize);               \\\n                                                                        \\\n               ref_fir_sparse_##suffix(                                 \\\n                     &fir_inst_ref,                                     \\\n                     (void *) filtering_##suffix##_inputs,              \\\n                     (void *) filtering_output_ref,                     \\\n                     (void *) filtering_scratch,                        \\\n                     (void *) filtering_scratch2,                       \\\n                     blockSize);                                        \\\n                                                                        \\\n               FILTERING_SNR_COMPARE_INTERFACE(                         \\\n                     blockSize,                                         \\\n                     output_type)));                                    \\\n                                                                        \\\n            return JTEST_TEST_PASSED;                                   \\\n   }\n\nFIR_DEFINE_TEST(f32,,float32_t);\nFIR_DEFINE_TEST(q31,,q31_t);\nFIR_DEFINE_TEST(q15,,q15_t);\nFIR_DEFINE_TEST(q31,_fast,q31_t);\nFIR_DEFINE_TEST(q15,_fast,q15_t);\nFIR_DEFINE_TEST(q7,,q7_t);\n\nFIR_LATTICE_DEFINE_TEST(f32,float32_t);\nFIR_LATTICE_DEFINE_TEST(q31,q31_t);\nFIR_LATTICE_DEFINE_TEST(q15,q15_t);\n\nFIR_INTERPOLATE_DEFINE_TEST(f32,float32_t);\nFIR_INTERPOLATE_DEFINE_TEST(q31,q31_t);\nFIR_INTERPOLATE_DEFINE_TEST(q15,q15_t);\n\nFIR_DECIMATE_DEFINE_TEST(f32,,float32_t);\nFIR_DECIMATE_DEFINE_TEST(q31,,q31_t);\nFIR_DECIMATE_DEFINE_TEST(q15,,q15_t);\nFIR_DECIMATE_DEFINE_TEST(q31,_fast,q31_t);\nFIR_DECIMATE_DEFINE_TEST(q15,_fast,q15_t);\n\nFIR_SPARSE_DEFINE_TEST(f32,float32_t);\nFIR_SPARSE_DEFINE_TEST(q31,q31_t);\nFIR_SPARSE2_DEFINE_TEST(q15,q15_t);\nFIR_SPARSE2_DEFINE_TEST(q7,q7_t);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(fir_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n   JTEST_TEST_CALL(arm_fir_f32_test);\n   JTEST_TEST_CALL(arm_fir_q31_test);\n   JTEST_TEST_CALL(arm_fir_q15_test);\n   JTEST_TEST_CALL(arm_fir_q7_test);\n   JTEST_TEST_CALL(arm_fir_fast_q31_test);\n   JTEST_TEST_CALL(arm_fir_fast_q15_test);\n\n   JTEST_TEST_CALL(arm_fir_lattice_f32_test);\n   JTEST_TEST_CALL(arm_fir_lattice_q31_test);\n   JTEST_TEST_CALL(arm_fir_lattice_q15_test);\n\n   JTEST_TEST_CALL(arm_fir_interpolate_f32_test);\n   JTEST_TEST_CALL(arm_fir_interpolate_q31_test);\n   JTEST_TEST_CALL(arm_fir_interpolate_q15_test);\n\n   JTEST_TEST_CALL(arm_fir_decimate_f32_test);\n   JTEST_TEST_CALL(arm_fir_decimate_q31_test);\n   JTEST_TEST_CALL(arm_fir_decimate_q15_test);\n   JTEST_TEST_CALL(arm_fir_decimate_fast_q31_test);\n   JTEST_TEST_CALL(arm_fir_decimate_fast_q15_test);\n\n   JTEST_TEST_CALL(arm_fir_sparse_f32_test);\n   JTEST_TEST_CALL(arm_fir_sparse_q31_test);\n   JTEST_TEST_CALL(arm_fir_sparse_q15_test);\n   JTEST_TEST_CALL(arm_fir_sparse_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/iir_tests.c",
    "content": "#include \"jtest.h\"\n#include \"filtering_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"filtering_templates.h\"\n#include \"type_abbrev.h\"\n\n#define IIR_DEFINE_TEST(suffix, output_type)                                              \\\n   JTEST_DEFINE_TEST(arm_iir_lattice_##suffix##_test,                                     \\\n         arm_iir_lattice_##suffix)                                                        \\\n   {                                                                                      \\\n      arm_iir_lattice_instance_##suffix iir_inst_fut = { 0 };                             \\\n      arm_iir_lattice_instance_##suffix iir_inst_ref = { 0 };                             \\\n                                                                                          \\\n      TEMPLATE_DO_ARR_DESC(                                                               \\\n            blocksize_idx, uint32_t, blockSize, filtering_blocksizes                      \\\n            ,                                                                             \\\n         TEMPLATE_DO_ARR_DESC(                                                            \\\n               numstages_idx, uint16_t, numStages, filtering_numstages                    \\\n               ,                                                                          \\\n              /* Display test parameter values */                                         \\\n              JTEST_DUMP_STRF(\"Block Size: %d\\n\"                                          \\\n                              \"Number of Stages: %d\\n\",                                   \\\n                              (int)blockSize,                                             \\\n                              (int)numStages);                                            \\\n                                                                                          \\\n               /* Initialize the IIR Instances */                                         \\\n               arm_iir_lattice_init_##suffix(                                             \\\n                     &iir_inst_fut, numStages, (output_type*)filtering_coeffs_b_##suffix, \\\n                     (output_type*)filtering_coeffs_c_##suffix,                           \\\n                     (void *) filtering_pState, blockSize);                               \\\n                                                                                          \\\n               JTEST_COUNT_CYCLES(                                                        \\\n                     arm_iir_lattice_##suffix(                                            \\\n                           &iir_inst_fut,                                                 \\\n                           (void *) filtering_##suffix##_inputs,                          \\\n                           (void *) filtering_output_fut,                                 \\\n                           blockSize));                                                   \\\n                                                                                          \\\n               arm_iir_lattice_init_##suffix(                                             \\\n                     &iir_inst_ref, numStages, (output_type*)filtering_coeffs_b_##suffix, \\\n                     (output_type*)filtering_coeffs_c_##suffix,                           \\\n                     (void *) filtering_pState, blockSize);                               \\\n                                                                                          \\\n               ref_iir_lattice_##suffix(                                                  \\\n                     &iir_inst_ref,                                                       \\\n                     (void *) filtering_##suffix##_inputs,                                \\\n                     (void *) filtering_output_ref,                                       \\\n                     blockSize);                                                          \\\n                                                                                          \\\n               FILTERING_SNR_COMPARE_INTERFACE(                                           \\\n                     blockSize,                                                           \\\n                     output_type)));                                                      \\\n                                                                                          \\\n            return JTEST_TEST_PASSED;                                                     \\\n   }\n\nIIR_DEFINE_TEST(f32, float32_t);\nIIR_DEFINE_TEST(q31, q31_t);\nIIR_DEFINE_TEST(q15, q15_t);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(iir_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n   JTEST_TEST_CALL(arm_iir_lattice_f32_test);\n   JTEST_TEST_CALL(arm_iir_lattice_q31_test);\n   JTEST_TEST_CALL(arm_iir_lattice_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/lms_tests.c",
    "content": "#include \"jtest.h\"\n#include \"filtering_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"filtering_templates.h\"\n#include \"type_abbrev.h\"\n\nstatic const float32_t mu_f32 = 0.00854f;//1.0f;\nstatic const float32_t mu2_f32 = 1.0f;\nstatic const q31_t mu_q31 = 0x7fffffff;\nstatic const q15_t mu_q15 = 0x7fff;\n\n#define LMS_DEFINE_TEST(suffix, config_suffix, output_type, mu)                        \\\n   JTEST_DEFINE_TEST(arm_lms##config_suffix##_##suffix##_test,                         \\\n         arm_lms##config_suffix##_##suffix)                                            \\\n   {                                                                                   \\\n      arm_lms##config_suffix##_instance_##suffix lms_inst_fut = { 0 };                 \\\n      arm_lms##config_suffix##_instance_##suffix lms_inst_ref = { 0 };                 \\\n      arm_fir_instance_##suffix fir_inst = { 0 };                                      \\\n      uint32_t i;                                                                      \\\n                                                                                       \\\n      TEMPLATE_DO_ARR_DESC(                                                            \\\n            blocksize_idx, uint32_t, blockSize, lms_blocksizes                         \\\n            ,                                                                          \\\n         TEMPLATE_DO_ARR_DESC(                                                         \\\n               numtaps_idx, uint16_t, numTaps, filtering_numtaps                       \\\n               ,                                                                       \\\n               /* Initialize the FIR Instances */                                      \\\n               arm_fir_init_##suffix(                                                  \\\n                     &fir_inst, numTaps,                                               \\\n                     (output_type*)filtering_coeffs_##suffix,                          \\\n                     (void *) filtering_pState, blockSize);                            \\\n                                                                                       \\\n               ref_fir_##suffix(                                                       \\\n                     &fir_inst,                                                        \\\n                     (void *) filtering_##suffix##_inputs,                             \\\n                     (void *) filtering_input_lms,                                     \\\n                     blockSize);                                                       \\\n                                                                                       \\\n               for(i=0;i<numTaps;i++)                                                  \\\n               {                                                                       \\\n                  *((output_type*)filtering_coeffs_lms + i) = (output_type)0;          \\\n               }                                                                       \\\n                                                                                       \\\n               for(i=0;i<blockSize;i++)                                                \\\n               {                                                                       \\\n                  /* scaled down so that lms will converge           */                \\\n                  /* scaled down by almost the max of the abs(input) */                \\\n                  *((output_type*)filtering_input_lms + i) =                           \\\n                        *((output_type*)filtering_input_lms + i) / 200.0f;             \\\n                                                                                       \\\n                  *((output_type*)filtering_output_f32_fut + i) =                      \\\n                        *((output_type*)filtering_##suffix##_inputs + i) / 200.0f;     \\\n               }                                                                       \\\n                                                                                       \\\n               /* Display test parameter values */                                     \\\n               JTEST_DUMP_STRF(\"Block Size: %d\\n\"                                      \\\n                               \"Number of Taps: %d\\n\",                                 \\\n                               (int)blockSize,                                         \\\n                               (int)numTaps);                                          \\\n                                                                                       \\\n               /* Initialize the LMS Instances */                                      \\\n               arm_lms##config_suffix##_init_##suffix(                                 \\\n                     &lms_inst_fut, numTaps,                                           \\\n                     (output_type*)filtering_coeffs_lms,                               \\\n                     (void *) filtering_pState, mu, blockSize);                        \\\n                                                                                       \\\n               JTEST_COUNT_CYCLES(                                                     \\\n                     arm_lms##config_suffix##_##suffix(                                \\\n                           &lms_inst_fut,                                              \\\n                           (void *) filtering_output_f32_fut,                          \\\n                           (void *) filtering_input_lms,                               \\\n                           (void *) filtering_output_fut,                              \\\n                           (void *) ((output_type*)filtering_output_fut+blockSize),    \\\n                           blockSize));                                                \\\n                                                                                       \\\n               for(i=0;i<numTaps;i++)                                                  \\\n               {                                                                       \\\n                  *((output_type*)filtering_coeffs_lms + i) = (output_type)0;          \\\n               }                                                                       \\\n                                                                                       \\\n               arm_lms##config_suffix##_init_##suffix(                                 \\\n                     &lms_inst_ref, numTaps,                                           \\\n                     (output_type*)filtering_coeffs_lms,                               \\\n                     (void *) filtering_pState, mu, blockSize);                        \\\n                                                                                       \\\n               ref_lms##config_suffix##_##suffix(                                      \\\n                     &lms_inst_ref,                                                    \\\n                     (void *) filtering_output_f32_fut,                                \\\n                     (void *) filtering_input_lms,                                     \\\n                     (void *) filtering_output_ref,                                    \\\n                     (void *) ((output_type*)filtering_output_fut+blockSize),          \\\n                     blockSize);                                                       \\\n                                                                                       \\\n               FILTERING_SNR_COMPARE_INTERFACE(                                        \\\n                     blockSize,                                                        \\\n                     output_type)));                                                   \\\n                                                                                       \\\n            return JTEST_TEST_PASSED;                                                  \\\n   }\n\n#define LMS_WITH_POSTSHIFT_DEFINE_TEST(suffix, config_suffix, output_type)             \\\n   JTEST_DEFINE_TEST(arm_lms##config_suffix##_##suffix##_test,                         \\\n         arm_lms##config_suffix##_##suffix)                                            \\\n   {                                                                                   \\\n      arm_lms##config_suffix##_instance_##suffix lms_inst_fut = { 0 };                 \\\n      arm_lms##config_suffix##_instance_##suffix lms_inst_ref = { 0 };                 \\\n      arm_fir_instance_##suffix fir_inst = { 0 };                                      \\\n      uint32_t i;                                                                      \\\n                                                                                       \\\n      TEMPLATE_DO_ARR_DESC(                                                            \\\n            blocksize_idx, uint32_t, blockSize, lms_blocksizes                         \\\n            ,                                                                          \\\n         TEMPLATE_DO_ARR_DESC(                                                         \\\n               numtaps_idx, uint16_t, numTaps, filtering_numtaps                       \\\n               ,                                                                       \\\n               TEMPLATE_DO_ARR_DESC(                                                   \\\n                     postshifts_idx, uint8_t, postShift, filtering_postshifts          \\\n                     ,                                                                 \\\n                  /* Initialize the FIR Instances */                                   \\\n                  arm_fir_init_##suffix(                                               \\\n                        &fir_inst, numTaps,                                            \\\n                        (output_type*)filtering_coeffs_##suffix,                       \\\n                        (void *) filtering_pState, blockSize);                         \\\n                                                                                       \\\n                  ref_fir_##suffix(                                                    \\\n                        &fir_inst,                                                     \\\n                        (void *) filtering_##suffix##_inputs,                          \\\n                        (void *) filtering_input_lms,                                  \\\n                        blockSize);                                                    \\\n                                                                                       \\\n                  for(i=0;i<numTaps;i++)                                               \\\n                  {                                                                    \\\n                     *((output_type*)filtering_coeffs_lms + i) = (output_type)0;       \\\n                  }                                                                    \\\n                                                                                       \\\n                  for(i=0;i<blockSize;i++)                                             \\\n                  {                                                                    \\\n                     /* scaled down so that lms will converge */                       \\\n                     /* scaled down by log2(numTaps) bits     */                       \\\n                     *((output_type*)filtering_output_f32_fut + i) =                   \\\n                           *((output_type*)filtering_##suffix##_inputs + i) >> 6;      \\\n                  }                                                                    \\\n                                                                                       \\\n                  /* Display test parameter values */                                  \\\n                  JTEST_DUMP_STRF(\"Block Size: %d\\n\"                                   \\\n                                  \"Number of Taps: %d\\n\"                               \\\n                                  \"Post Shift: %d\\n\",                                  \\\n                                  (int)blockSize,                                      \\\n                                  (int)numTaps,                                        \\\n                                  (int)postShift);                                     \\\n                                                                                       \\\n                  /* Initialize the LMS Instances */                                   \\\n                  arm_lms##config_suffix##_init_##suffix(                              \\\n                        &lms_inst_fut, numTaps,                                        \\\n                        (output_type*)filtering_coeffs_lms,                            \\\n                        (void *) filtering_pState, mu_##suffix, blockSize, postShift); \\\n                                                                                       \\\n                  JTEST_COUNT_CYCLES(                                                  \\\n                        arm_lms##config_suffix##_##suffix(                             \\\n                              &lms_inst_fut,                                           \\\n                              (void *) filtering_output_f32_fut,                       \\\n                              (void *) filtering_input_lms,                            \\\n                              (void *) filtering_output_fut,                           \\\n                              (void *) ((output_type*)filtering_output_fut+blockSize), \\\n                              blockSize));                                             \\\n                                                                                       \\\n                  for(i=0;i<numTaps;i++)                                               \\\n                  {                                                                    \\\n                     *((output_type*)filtering_coeffs_lms + i) = (output_type)0;       \\\n                  }                                                                    \\\n                                                                                       \\\n                  arm_lms##config_suffix##_init_##suffix(                              \\\n                        &lms_inst_ref, numTaps,                                        \\\n                        (output_type*)filtering_coeffs_lms,                            \\\n                        (void *) filtering_pState, mu_##suffix, blockSize, postShift); \\\n                                                                                       \\\n                  ref_lms##config_suffix##_##suffix(                                   \\\n                        &lms_inst_ref,                                                 \\\n                        (void *) filtering_output_f32_fut,                             \\\n                        (void *) filtering_input_lms,                                  \\\n                        (void *) filtering_output_ref,                                 \\\n                        (void *) ((output_type*)filtering_output_ref+blockSize),       \\\n                        blockSize);                                                    \\\n                                                                                       \\\n                  FILTERING_SNR_COMPARE_INTERFACE(                                     \\\n                        blockSize,                                                     \\\n                        output_type))));                                               \\\n                                                                                       \\\n            return JTEST_TEST_PASSED;                                                  \\\n   }\n\nLMS_DEFINE_TEST(f32,,float32_t, mu_f32);\nLMS_WITH_POSTSHIFT_DEFINE_TEST(q31,,q31_t);\nLMS_WITH_POSTSHIFT_DEFINE_TEST(q15,,q15_t);\n\nLMS_DEFINE_TEST(f32,_norm,float32_t, mu2_f32);\nLMS_WITH_POSTSHIFT_DEFINE_TEST(q31,_norm,q31_t);\nLMS_WITH_POSTSHIFT_DEFINE_TEST(q15,_norm,q15_t);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(lms_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n   JTEST_TEST_CALL(arm_lms_f32_test);\n   JTEST_TEST_CALL(arm_lms_q31_test);\n   JTEST_TEST_CALL(arm_lms_q15_test);\n\n   JTEST_TEST_CALL(arm_lms_norm_f32_test);\n   JTEST_TEST_CALL(arm_lms_norm_q31_test);\n   JTEST_TEST_CALL(arm_lms_norm_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/intrinsics_tests/intrinsics_tests.c",
    "content": "#include \"jtest.h\"\n#include \"ref.h\"\n#include \"arr_desc.h\"\n#include \"intrinsics_templates.h\"\n#include \"intrinsics_test_data.h\"\n#include \"type_abbrev.h\"\n\nINTRINSICS_TEST_TEMPLATE_ELT2(__QADD8, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__QSUB8, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__QADD16, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SHADD16, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__QSUB16, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SHSUB16, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__QASX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SHASX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__QSAX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SHSAX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SMUSDX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SMUADX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__QADD, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__QSUB, q31);\nINTRINSICS_TEST_TEMPLATE_ELT3(__SMLAD, q31);\nINTRINSICS_TEST_TEMPLATE_ELT3(__SMLADX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT3(__SMLSDX, q31);\nINTRINSICS_TEST_TEMPLATE_ELT4(__SMLALD, q31, q63);\nINTRINSICS_TEST_TEMPLATE_ELT4(__SMLALDX, q31, q63);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SMUAD, q31);\nINTRINSICS_TEST_TEMPLATE_ELT2(__SMUSD, q31);\nINTRINSICS_TEST_TEMPLATE_ELT1(__SXTB16, q31);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(intrinsics_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n   JTEST_TEST_CALL(__QADD8_test);\n   JTEST_TEST_CALL(__QSUB8_test);\n   JTEST_TEST_CALL(__QADD16_test);\n   JTEST_TEST_CALL(__SHADD16_test);\n   JTEST_TEST_CALL(__QSUB16_test);\n   JTEST_TEST_CALL(__SHSUB16_test);\n   JTEST_TEST_CALL(__QASX_test);\n   JTEST_TEST_CALL(__SHASX_test);\n   JTEST_TEST_CALL(__QSAX_test);\n   JTEST_TEST_CALL(__SHSAX_test);\n   JTEST_TEST_CALL(__SMUSDX_test);\n   JTEST_TEST_CALL(__SMUADX_test);\n   JTEST_TEST_CALL(__QADD_test);\n   JTEST_TEST_CALL(__QSUB_test);\n   JTEST_TEST_CALL(__SMLAD_test);\n   JTEST_TEST_CALL(__SMLADX_test);\n   JTEST_TEST_CALL(__SMLSDX_test);\n   JTEST_TEST_CALL(__SMLALD_test);\n   JTEST_TEST_CALL(__SMLALDX_test);\n   JTEST_TEST_CALL(__SMUAD_test);\n   JTEST_TEST_CALL(__SMUSD_test);\n   JTEST_TEST_CALL(__SXTB16_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/intrinsics_tests/intrinsics_tests_common_data.c",
    "content": "#include \"intrinsics_test_data.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nq63_t intrinsics_output_fut[INTRINSICS_MAX_LEN] = {0};\nq63_t intrinsics_output_ref[INTRINSICS_MAX_LEN] = {0};\nfloat32_t intrinsics_output_f32_fut[INTRINSICS_MAX_LEN] = {0};\nfloat32_t intrinsics_output_f32_ref[INTRINSICS_MAX_LEN] = {0};\n\nconst q63_t intrinsics_q63_inputs[INTRINSICS_MAX_LEN] =\n{\n    0xF7D2D6F5414A5524, 0x5297DAF44CAB5A17, 0x54129B222D6F5B56, 0x54141F6F7DAF4E3B, 0x44C414A529B226EB, 0x22D4CAB541F6F6A ,\n    0x6053A44325CE38BF, 0x33D055403A970AFA, 0x0133D0603A44382A, 0x32513D5605540F8 , 0x03A25CE33D060524, 0x03A3A97013D56570,\n    0x3402674117D7791D, 0x72140A667FE0438C, 0x439218E426741841, 0x11739FF340A66E54, 0x67F17D77218E4386, 0x4267FE0439FF3726,\n    0x46C411420DC177CA, 0x7156C147702F2CF5, 0x26615F6441142FF1, 0x20D662C46C1476AB, 0x7700DC1715F640DD, 0x441702F2662C4E49,\n    0x50D4F8B538055E7E, 0x5570D192770871FE, 0x725576474F8B5360, 0x538258550D1928A0, 0x2773805557647821, 0x74F77087258558CF,\n    0x05066D230C0C604D, 0x63650FA350A46C19, 0x66C3646266D2370D, 0x30C6CE0050FA359A, 0x3500C0C636462E24, 0x26650A466CE00F5C,\n    0x21E3B72166D40948, 0x0731EB61355B5831, 0x577733943B72150A, 0x166773F21EB61530, 0x13566D4073394127, 0x43B355B5773F26F4,\n    0x7221CF5118052980, 0x27A22AD1038D6587, 0x67C7A8121CF517F4, 0x1187CDC722AD1691, 0x103180527A812473, 0x21C038D67CDC7D7F,\n    0x21A0FD604A5110D0, 0x1201A2156D895BB9, 0x53D20EB60FD60F35, 0x04A3DE621A215530, 0x56D4A51120EB6DDA, 0x60F6D8953DE62516,\n    0x02C61E17250123E1, 0x26D2CBB35ED813C8, 0x15B6D35061E175B1, 0x7255B1402CBB32F3, 0x35E250126D350907, 0x0615ED815B140D7E,\n    0x126418B76EAE272D, 0x23C26BB13E221841, 0x1243CF01418B7B88, 0x76E24DB126BB1B80, 0x13E6EAE23CF010E4, 0x1413E22124DB166C,\n    0x1634700479AB7E42, 0x74163F5662DF28D1, 0x246419E047004665, 0x47946BE163F56FC6, 0x66279AB7419E0C75, 0x04762DF246BE1F38,\n    0x63F5CE12243239B2, 0x31F3F574758D03E0, 0x0711F4455CE12926, 0x22471D563F574B74, 0x475243231F4458E2, 0x55C758D071D5639 ,\n    0x34806EF703A17B49, 0x77D48D32173A7C76, 0x70F7D3E306EF7531, 0x7030F2F348D32F34, 0x21703A177D3E3063, 0x306173A70F2F3549,\n    0x54426F835C314C9 , 0x42E447B118CB6B6D, 0x6502E32326F83697, 0x35C50745447B1E9C, 0x1185C3142E323A33, 0x32618CB650745715,\n    0x51D4891001AC5746, 0x5601DA36655A4E04, 0x42060E624891060F, 0x00120BF51DA36B4F, 0x66501AC560E6227F, 0x248655A420BF5EB4,\n    0x1154156550B3225B, 0x2181540540C10544, 0x02318586415656C , 0x550236A115405EAE, 0x54050B32185863E1, 0x64140C10236A1C4E,\n    0x44E7736608BD21F9, 0x2614EDF52ACF7A68, 0x752617A1773665E5, 0x608524F44EDF5F66, 0x52A08BD2617A1610, 0x1772ACF7524F4968,\n    0x06A24DC242D006CD, 0x0376A4F55F000079, 0x01D3706424DC2447, 0x2421DE706A4F5599, 0x55F42D0037064D4A, 0x4245F0001DE70608,\n    0x44018061233A2EE5, 0x22440795137E488E, 0x44424A8118061B7B, 0x12344CE44079569D, 0x513233A224A817D5, 0x118137E444CE48F5,\n    0x41D71AD7575F7883, 0x73C1D4A522406802, 0x6333CBC771AD70BB, 0x757335841D4A5D79, 0x522575F73CBC7CE4, 0x77122406335840D8,\n    0x3333D19605792E47, 0x233331A427AD2C05, 0x213330353D196EAB, 0x60513D93331A40AF, 0x4270579233035831, 0x53D27AD213D93987,\n    0x0135DC437C542094, 0x25C13796045F317E, 0x37D5C2015DC43F8B, 0x37C7DD501379650C, 0x6047C5425C20193F, 0x15D045F37DD50298,\n    0x5275C8A71D482B82, 0x210272914A6B6062, 0x63510E165C8A757B, 0x71D355A5272917C1, 0x14A1D48210E16FBC, 0x65C4A6B6355A5882,\n    0x1757DF7F66F86A35, 0x61A758A6604555A1, 0x5531A1137DF7FBB , 0xF6653541758A6216, 0x66066F861A113463, 0x37D6045553541BAD,\n    0x04E1F05221576756, 0x6554EA63483B6D8D, 0x67B55B841F052FCC, 0x2217B2E04EA63DFB, 0x3482157655B84677, 0x41F483B67B2E04F2,\n    0x41D46029787A796C, 0x71A1DB2204A12CD3, 0x2061A8C746029BD , 0x978061E41DB22DD8, 0x204787A71A8C7F28, 0x74604A12061E452E,\n    0x66B73357132D3F78, 0x3626BBB076525852, 0x53F6253673357BBA, 0x7133F6B66BBB0A58, 0x076132D362536AFA, 0x673765253F6B65EF,\n    0x55F66B026DC57B58, 0x7325FF601EB718CE, 0x17F3247766B02740, 0x26D7FF355FF60B47, 0x01E6DC5732477B8F, 0x7661EB717FF35302,\n    0x7206FF9529FD3E40, 0x34720182475A43D1, 0x44C47E076FF9528A, 0x5294CF572018209D, 0x24729FD347E079C9, 0x76F475A44CF576D3,\n    0x2512340428074E34, 0x42551CE35D6F58ED, 0x56425297234045D1, 0x4286443251CE35F9, 0x35D2807425297896, 0x7235D6F5644320FE,\n    0x04E701D50F4449A9, 0x4714E09454C361C6, 0x661718F0701D52F1, 0x50F615404E094820, 0x4540F444718F0810, 0x07054C3661540689,\n    0x46A48AC379DE5A1F, 0x5216A0C152865C23, 0x57021B7048AC3A4B, 0x379708646A0C1BE0, 0x15279DE521B705DB, 0x048528657086465D,\n    0x7206D2311CC10929, 0x038204951E1D716E, 0x71438FF16D231D4C, 0x11C149C720495108, 0x51E1CC1038FF1971, 0x16D1E1D7149C78D4,\n    0x62169C32441F1E8B, 0x147210B743D95372, 0x5024781569C324B4, 0x24402476210B7DC9, 0x743441F147815E78, 0x56943D9502476137,\n    0x30E2F6846163DDF , 0xD020E680390D6EC2, 0x612022322F684E5B, 0x461125930E680ABD, 0x0396163D02232615, 0x22F390D612593380,\n    0x76D130F57B1465FE, 0x6106D772065A6957, 0x66310E91130F53EB, 0x57B63BC76D772EF7, 0x2067B14610E916B6, 0x113065A663BC7A68,\n    0x773194712ACB00BB, 0x05973090651C5590, 0x53459BB6194714B5, 0x12A34867730904EE, 0x0652ACB059BB61B4, 0x619651C534867DBC,\n    0x21228931391C706C, 0x713129A63C164218, 0x4621317128931CD0, 0x13962882129A66AB, 0x63C391C713171F4D, 0x1283C16462882872,\n    0x6547A7944B167FD4, 0x73054B1566902F4C, 0x239308567A794932, 0x44B3946654B152C , 0x5664B16730856EA9, 0x67A6690239466D55,\n    0x651077A336696451, 0x63651B950F5B1E8C, 0x11D367E2077A3C6A, 0x3361D2C651B956B4, 0x50F36696367E2D2A, 0x2070F5B11D2C662A,\n    0x24D4070678FB6880, 0x6204DF964E6D40B6, 0x4632030640706FDC, 0x678638124DF9679C, 0x64E78FB620306EDB, 0x6404E6D463812AE7,\n    0x2043E036255D2748, 0x25504E441B8B617B, 0x66655A373E036FAD, 0x625669B204E444A7, 0x41B255D255A37517, 0x73E1B8B6669B2988,\n    0x27634BB318FD5E8C, 0x5057699467BD05CE, 0x06D05B9534BB346C, 0x3186DFA276994800, 0x46718FD505B958B6, 0x53467BD06DFA2FEF,\n    0x573727212055B5C , 0xB5F73EF61F843C4C, 0x3435FB9072721B52, 0x1204323573EF6B86, 0x61F2055B5FB90B61, 0x0721F84343235DAC,\n    0x17B162F231D424B4, 0x2797B2A7768C0D7E, 0x04479392162F2F9D, 0x231442D17B2A7A99, 0x77631D4279392693, 0x216768C0442D12C0,\n    0x1445D9560692273E, 0x20D44E7359A16E80, 0x65F0D8745D956856, 0x6065F5C144E73DAC, 0x359069220D874532, 0x45D59A165F5C1DD0,\n    0x3591D8215D167858, 0x7595965405597EA2, 0x71A594C01D821476, 0x15D1A87359654ED2, 0x4055D167594C0DC7, 0x01D055971A873506,\n    0xD1F20CC33F693200, 0x3781F9E67A651AB5, 0x12A78E7620CC3C8A, 0x33F2A01D1F9E662C, 0x67A3F69378E7631 , 0x6207A6512A01DA0 ,\n    0x073360D43088472F, 0x40D7333712EE0D42, 0x0230D634360D4D5F, 0x430233A073337E48, 0x712308840D634C06, 0x43612EE0233A0ACB,\n    0x13E26223706651ED, 0x5223EBB67AA54079, 0x432225A4262239D1, 0x370325813EBB6BB6, 0x67A70665225A4F3D, 0x4267AA5432581A06,\n    0x51075ED16E6F5780, 0x53C10DF2577377C7, 0x7373C79275ED1DDC, 0x16E3717510DF2D15, 0x2576E6F53C7929BC, 0x2755773737175917,\n    0x47376435354E381C, 0x35273BB7762A2DD7, 0x26C52FE476435AC1, 0x5356C81473BB749E, 0x776354E352FE4E7E, 0x476762A26C8140F4,\n    0x1374742257694875, 0x4123792612D30822, 0x020121C7474227CF, 0x257204E137926D98, 0x61257694121C7E24, 0x74712D30204E1EE7,\n    0x77A316C358C6268 , 0x2617AB142152080 , 0x07D61C13316C3323, 0x3587D8E77AB14A31, 0x42158C6261C13C03, 0x331215207D8E74F1,\n    0x5673BFD773F446D0, 0x43E672426C6C6A0A, 0x60F3E5523BFD79FB, 0x7730FF5567242969, 0x26C73F443E5524EB, 0x23B6C6C60FF5534 ,\n    0x779540F452F05F1C, 0x5417984617102DE3, 0x21941954540F4A21, 0x452193F7798468E7, 0x61752F05419545EB, 0x45417102193F7880,\n    0x5404BF662B246B20, 0x64C40894408A2BC4, 0x2244CAA64BF66A49, 0x62B2478540894C55, 0x4402B2464CAA6398, 0x64B408A2247856E9,\n    0x55070D372F2A647D, 0x6595063422F55D33, 0x52B5983670D37915, 0x72F2BCC550634C72, 0x4222F2A65983671 , 0x67022F552BCC5AF8,\n    0x03A710741A77D48 , 0xD613A6B3411B5CFA, 0x5626142571074D7E, 0x41A627103A6B3593, 0x3411A77D61425F05, 0x571411B56271012A,\n    0x32310A505B830310, 0x021239F73D8418CA, 0x17F213D510A50792, 0x05B7F993239F7137, 0x73D5B830213D5071, 0x5103D8417F9930D4,\n    0x265291502462664F, 0x6146586354180F8E, 0x018144B2291505BA, 0x02418E426586387A, 0x35424626144B2C12, 0x2295418018E425C7,\n    0x558194623AA43373, 0x37258B4518F0503C, 0x5267247319462AC0, 0x23A26BF558B452EF, 0x5183AA4372473895, 0x31918F0526BF5435,\n    0x13D5C3376DA553B , 0x54D3D93C60912FA6, 0x2204D0355C337331, 0x76D206913D93CD7 , 0xC606DA554D035752, 0x55C6091220691929,\n    0x25F758B6389962F9, 0x6595FCA636E701E9, 0x02D59602758B642C, 0x6382D5A25FCA69E3, 0x63638996596027F4, 0x27536E702D5A2FD0,\n    0x01B76BA35F18324A, 0x33C1BC213DB165AA, 0x6733CC1076BA3876, 0x35F73A601BC21AF6, 0x13D5F1833CC10841, 0x0763DB1673A60174,\n    0x66144586625B7F58, 0x72B6157367C57724, 0x7032B3704458653C, 0x66203DF661573095, 0x367625B72B370837, 0x04467C5703DF6CE3,\n    0x260191B45D086EFA, 0x630608433F5227C2, 0x21030DE1191B4785, 0x45D105E260843D82, 0x33F5D08630DE11F1, 0x1193F522105E226C,\n    0x23B366766E1C7AA2, 0x7733B8D447AA5D14, 0x5407372636676D03, 0x66E409523B8D4DF6, 0x4476E1C77372694 , 0x63647AA5409521DC,\n    0x5632BE46744206A , 0x04A63E114722023F, 0x05C4A4A02BE46AD5, 0x6745CF2563E11D76, 0x147744204A4A09AB, 0x02B472205CF252B9,\n    0x62D3203731586916, 0x6452D7324DFD7D84, 0x72E4524532037634, 0x7312E5362D7329D4, 0x24D315864524582F, 0x5324DFD72E5366C1,\n    0x50A6A2543B0E019B, 0x0110A6A038530C6A, 0x054119726A2542D , 0x43B540650A6A00E5, 0x0383B0E0119725CC, 0x26A3853054065347,\n    0x571181111B6F7AF1, 0x774716746CCF71F1, 0x77774F43181117F2, 0x11B77A5571674A76, 0x46C1B6F774F43880, 0x3186CCF777A55F47,\n    0x0243CBB259EA5B62, 0x547245C44A331D95, 0x1074718D3CBB276F, 0x25907CE0245C4D50, 0x44A59EA54718D5  , 0xD3C4A33107CE05D1,\n    0x6663006160D47AD5, 0x73D669B325CA1C40, 0x1193D5F130061766, 0x16019306669B39DF, 0x32560D473D5F1320, 0x13025CA119306AD3,\n    0x12D6A6E628B30325, 0x02B2DF160DD090F , 0x9312B5146A6E6F37, 0x628311012DF16F66, 0x60D28B302B514C7E, 0x46A0DD0931101C58,\n    0x14177AB07D4847FC, 0x43A41320515341CA, 0x4243AF8577AB0EA6, 0x07D24B3141320DAF, 0x0517D4843AF8531E, 0x5775153424B31611,\n    0x072222516D377331, 0x73B722D17A832A22, 0x2263B194222511C7, 0x16D261B0722D1F89, 0x17A6D3773B194F18, 0x4227A832261B0A4D,\n    0x620190F243F676DB, 0x756202E74F8C6D61, 0x630560D4190F2250, 0x243308E6202E72A9, 0x74F43F67560D4EA2, 0x4194F8C6308E67B4,\n    0x17F27EB236746663, 0x6267FDE017CC3852, 0x3232647127EB2EAC, 0x236232617FDE0AA8, 0x01736746264719A , 0x12717CC323261EDD,\n    0x42448D823C0B339E, 0x34324D4406284D40, 0x44B4363148D82ECB, 0x23C4BF0424D44CF8, 0x4063C0B343631B91, 0x148062844BF04248,\n    0x320630B736497B9B, 0x76C20CC368273C58, 0x3576C3B7630B7AF9, 0x7365744320CC3F26, 0x368364976C3B7B71, 0x76368273574433ED,\n    0x626565B07A2552F6, 0x56726F924CDE642D, 0x65B67A20565B0142, 0x07A5B50626F9207F, 0x24C7A25567A207BE, 0x0564CDE65B506684,\n    0x1411561044DA4780, 0x46E4155611756A0C, 0x61D6E3A6156104AF, 0x0441DBA1415561B0, 0x61144DA46E3A6886, 0x615117561DBA1EA2,\n    0x71D758F0542359C8, 0x52D1DD634C024E22, 0x4612D194758F052A, 0x054616471DD6395 , 0x34C542352D194BAD, 0x4754C024616475A1,\n    0x35713CB542084602, 0x46057FE209C274AD, 0x716607A413CB5562, 0x5421672357FE2D5B, 0x20942084607A4EE5, 0x41309C2716723A91,\n    0x73D28FE64F624CCF, 0x4323DDA62E5E24A3, 0x21932AF528FE6FAF, 0x64F19A573DDA6EF4, 0x62E4F62432AF540C, 0x5282E5E219A57B3B,\n    0x353278445D1D73A3, 0x7425397123424B3E, 0x452427D7278445F5, 0x45D5221353971C3B, 0x1235D1D7427D7943, 0x727234245221358C,\n    0x7603B86626CE1A5E, 0x145608317B506CA4, 0x62145E143B86636E, 0x62621B7760831F6D, 0x17B26CE145E142F3, 0x43B7B50621B77B04,\n    0x43B7D8D17BB65E0C, 0x52D3BF3378B80F5E, 0x02B2D5727D8D172B, 0x17B2B5B43BF33A90, 0x3787BB652D572D9 , 0x27D78B802B5B4920,\n    0x11C47C6436A05E01, 0x5301CAA652745306, 0x54D304A247C64855, 0x4364D6B11CAA669B, 0x65236A05304A2641, 0x247527454D6B1760,\n    0x54B24A673E176D79, 0x64E4BDE7523241B0, 0x44C4E5F124A67957, 0x73E4C2154BDE76AF, 0x7523E1764E5F1493, 0x124523244C215DA5,\n    0x53940AE633A052B , 0x569390D11A4D00C2, 0x05A69E8640AE6BCA, 0x6335AF35390D106B, 0x11A33A0569E86018, 0x6401A4D05AF356CF,\n    0x10D14B6263561D4 , 0x14C0D2E244F31C6 , 0x1454CBF114B6299B, 0x26345AC10D2E25F0, 0x244635614CBF132A, 0x11444F3145AC18B6,\n    0x222263442227567D, 0x52422C5106B54E2F, 0x46C2442326344534, 0x4226C37222C515EC, 0x106222752442370D, 0x32606B546C3721C6,\n    0x6606AF3634EF687D, 0x66A603961C06323A, 0x3496AE706AF36A60, 0x63449D0660396F52, 0x61C34EF66AE70AA1, 0x06A1C06349D06CBC,\n    0x1663A9A26F9576C8, 0x71D66DF0584C4258, 0x4571D4803A9A27BB, 0x26F57DD166DF0D47, 0x0586F9571D4804EA, 0x03A584C457DD1E67,\n    0x66225C12789C7895, 0x74F6274275336111, 0x63F4FBF625C122C8, 0x2783F9F662742114, 0x275789C74FBF6D26, 0x625753363F9F6482,\n    0x77E499E266F02CD9, 0x2447EBC111083202, 0x34944011499E2618, 0x26649DF77EBC1351, 0x11166F02440112F1, 0x1491108349DF7BC1,\n    0x16B61AF13BF45C25, 0x52D6B1F731BA7FA0, 0x7632D86561AF1AED, 0x13B63E016B1F7D29, 0x7313BF452D865294, 0x56131BA763E01129,\n    0x2081FE3A7E9E77A5, 0x77208597100435D7, 0x331722841FE3A71 , 0xA7E31C5208597C81, 0x7107E9E7722849FA, 0x41F1004331C520AF,\n    0x1155CA077BA178DC, 0x702150E67F102D31, 0x25D02C345CA07864, 0x77B5D041150E6F98, 0x67F7BA1702C34882, 0x45C7F1025D041F11,\n    0x355426F30C613C57, 0x37A5599253984FD1, 0x42B7AFA0426F38AD, 0x30C2B25355992B1D, 0x2530C6137AFA078D, 0x042539842B253413,\n    0x51A28933594B32CF, 0x3291A0B432887E38, 0x765291B428933B46, 0x359653A51A0B4168, 0x432594B3291B4A94, 0x42832887653A5E8D,\n    0x65030DA421746BBE, 0x63450C565EFE6415, 0x6523471130DA429C, 0x421529C650C5640C, 0x65E2174634711AA4, 0x1305EFE6529C67A6,\n    0x42803CA0105957CD, 0x525283854D287499, 0x74225A0403CA0AA7, 0x010420D428385832, 0x54D1059525A04A02, 0x4034D287420D47A4,\n    0x72759E2135627556, 0x74527E834BC11E4C, 0x1224586159E215C7, 0x1352282727E838B4, 0x34B35627458612F4, 0x1594BC1122827F6F,\n    0x64F4E495449D4DBA, 0x4394FD27679B7362, 0x737395E74E495845, 0x544375A64FD270D1, 0x767449D4395E76A0, 0x74E679B7375A655E,\n    0x05161EF712E2058F, 0x06751FF573F970CA, 0x77F6741061EF73B3, 0x7127FDA051FF5362, 0x57312E2067410345, 0x06173F977FDA0B3B,\n    0x14B26557221962E8, 0x6264B30017AB6543, 0x67E268E126557412, 0x7227E0D14B30084D, 0x01722196268E191D, 0x12617AB67E0D13DF,\n    0x65677FA773EF127D, 0x112560024DEC5DB1, 0x51512DD077FA745F, 0x773157F656002898, 0x24D73EF112DD0A40, 0x0774DEC5157F6DDF,\n    0x3337B63042A55F8E, 0x532338B643597924, 0x74F329457B630C3F, 0x0424FA23338B6B58, 0x64342A5532945F75, 0x57B435974FA23A0E,\n    0x02406114036E38C0, 0x3192466033B18FD , 0x81219BB006114337, 0x403124C024660ACB, 0x033036E319BB02F0, 0x00633B18124C0A47,\n    0x5360C6123A951701, 0x1513607401155ABF, 0x563516600C612D71, 0x23A635F536074CA7, 0x4013A95151660C41, 0x00C01155635F58C7,\n    0x50165B077FC2002D, 0x079015F60E6A7CF3, 0x76E791B765B07D07, 0x77F6E475015F6A6B, 0x60E7FC20791B70DD, 0x7650E6A76E475719,\n    0x74671942424314C7, 0x167464A268426EB , 0x66B6775771942FEE, 0x2426BA77464A2F52, 0x26842431677579FD, 0x771684266BA775AE,\n    0x31D78D951F66EFF , 0xE3B1D0B31A795237, 0x52F3BD3478D9545F, 0x51F2F8531D0B344D, 0x31A1F66E3BD34AB7, 0x4781A7952F85312A,\n    0x20208DF316C542AD, 0x46D028113990185D, 0x1406D35108DF3351, 0x3164066202811AA5, 0x13916C546D351F41, 0x108399014066269D,\n    0x1355DD7006B660BF, 0x66835D746EDB4768, 0x411689E25DD70CF0, 0x0061143135D74F6E, 0x46E06B66689E220C, 0x25D6EDB411431687,\n    0x01D302F0147C49C9, 0x4481DAB6385762BD, 0x63748325302F0AE4, 0x01437D501DAB67F8, 0x638147C4483256C9, 0x5303857637D50FCB,\n    0x15819DB74EA82711, 0x26A58DE04D7B2C98, 0x2376AFF719DB78BC, 0x74E3762158DE0DC2, 0x04D4EA826AFF7E7B, 0x7194D7B237621C93,\n    0x32E7F884792C6E19, 0x66C2E19677001192, 0x16A6C7137F88439D, 0x4796AF432E196A66, 0x677792C66C71378C, 0x37F770016AF43B3A,\n    0x06D4BEE17C16225E, 0x2346D5B56687337 , 0x368345D44BEE1608, 0x17C681206D5B5552, 0x5667C162345D4590, 0x44B66873681209CC,\n    0x11F198807B242819, 0x2241FC72508A1416, 0x16A24BD019880FE3, 0x07B6A1D11FC7288A, 0x2507B24224BD0502, 0x019508A16A1D1678,\n    0x45E5ADE120E6CA0 , 0xC7A5EA8659BE2057, 0x2117A2005ADE11EB, 0x120114945EA8649D, 0x65920E6C7A200E6F, 0x05A59BE21149481D,\n    0x5636731272281E93, 0x15263B840A5B0451, 0x07C5221767312D58, 0x2727CDF563B849F1, 0x40A7228152217960, 0x7670A5B07CDF59F3,\n    0x5347DF1533C775C0, 0x73834E961EBA0799, 0x05E38FC77DF1506 , 0x5335EA0534E96110, 0x61E33C7738FC73E3, 0x77D1EBA05EA059B2,\n    0x16C43911022936EA, 0x31C6C0D1316406F6, 0x0381C6F343911185, 0x10238DB16C0D10F3, 0x131022931C6F3DF8, 0x3433164038DB12A9,\n    0x5775F4A35CD41244, 0x14C77CE12C9F0A7B, 0x0314C8005F4A315F, 0x35C318D577CE1C66, 0x12C5CD414C800860, 0x05F2C9F0318D53E0,\n    0x421750817105420D, 0x420217E4575361F2, 0x64D20101750810BA, 0x1714D884217E4CA5, 0x457710542010140 , 0x175575364D884763,\n    0x008141C642BB0DA7, 0x046087F532D53A74, 0x32D464B5141C6CD4, 0x6422D2A0087F5FC3, 0x53242BB0464B53  , 0x51432D532D2A05F6,\n    0x5223EB9215532B45, 0x21F221465D5C3CE1, 0x3111FC523EB9216A, 0x21511AE52214611B, 0x65D155321FC52C5F, 0x23E5D5C311AE5DD7,\n    0x46D7400020B925A9, 0x2386D0E07C640AF4, 0x00938E6A740009AC, 0x020091046D0E0321, 0x07C20B9238E6A61 , 0xA747C64009104544,\n    0x666341A6474F26C8, 0x2596619015254CF3, 0x424598B2341A6B59, 0x64724126661904CE, 0x015474F2598B2197, 0x234152542412659D,\n    0x13008FD161976DD4, 0x63430400329B3E16, 0x3553456308FD1FB0, 0x16155CC1304006F3, 0x032619763456309 , 0x308329B355CC15F1,\n    0x0350036D59DA7630, 0x729353775C801335, 0x175299470036D52 , 0xD5975280353775A5, 0x75C59DA7299476EB, 0x7005C80175280568,\n    0x37F64761766F5264, 0x51B7FB302EA233A6, 0x3361BC03647619F3, 0x17636BC37FB30C7A, 0x02E766F51BC03B9 , 0x3642EA2336BC3061,\n    0x7640AC043F30596E, 0x51E641973E2A527B, 0x5211ECC30AC04220, 0x43F21447641979A3, 0x73E3F3051ECC3B89, 0x30A3E2A521447BC1,\n    0x157299E54E8F2E26, 0x21D57C940C5A1D90, 0x1761D486299E5467, 0x54E76F3157C947E3, 0x40C4E8F21D4865ED, 0x6290C5A176F31C3D,\n    0x05C6FFB34EE81CDF, 0x1305C8233479195E, 0x147300F76FFB3AE1, 0x34E479405C82398 , 0x3344EE81300F7364, 0x76F3479147940AFA,\n    0xF3A224A33B853E3E, 0x3223A674598C440D, 0x42E22880224A3D89, 0x33B2E77F3A674204, 0x4593B85322880A38, 0x022598C42E77F2D ,\n    0x6091FE9022841C9C, 0x12D093354F0609C3, 0x07E2D6B61FE90922, 0x0227EDB609335017, 0x54F228412D6B69A7, 0x61F4F0607EDB63F9,\n    0xE2524BE1099A74EF, 0x716251D21F9F1B40, 0x12816AC524BE17E8, 0x10928D7E251D2F7A, 0x21F099A716AC50D3, 0x5241F9F128D7ED6 ,\n    0x36430DF66D193443, 0x36364FF676156F1B, 0x67463DB230DF6A4E, 0x66D7435364FF6794, 0x6766D19363DB2C9A, 0x2307615674353022,\n    0x16742501556E025C, 0x070675A123802AF9, 0x27F70B22425018A4, 0x1557FB01675A18BB, 0x123556E070B227B9, 0x242238027FB01BF ,\n    0x14F6574563E7910 , 0x9524F6E36C661591, 0x11E52B3265745D2B, 0x5631E6A14F6E379D, 0x36C63E7952B32FAC, 0x2656C6611E6A1101,\n    0x34B469701DE22385, 0x2544BAB42338191F, 0x17854EB4469704B6, 0x01D783934BAB4599, 0x4231DE2254EB4809, 0x4462338178393E6D,\n    0x02D288D5550017DD, 0x1202D52639B120E1, 0x24E20D22288D52D3, 0x5554E1202D52668C, 0x6395500120D22A68, 0x22839B124E1207D1,\n    0x734251773FCC0EFE, 0x05A34BF547F37E64, 0x76F5A8D325177A90, 0x73F6F72734BF5D4D, 0x5473FCC05A8D3DCE, 0x32547F376F7275A8,\n    0x70A64DB56BEA2655, 0x22C0A4D42A1810FC, 0x1712C40264DB593A, 0x56B71C070A4D4BC0, 0x42A6BEA22C402E93, 0x2642A18171C077F9,\n    0x458752F16F0C4577, 0x42C582E370412414, 0x24D2C455752F1DC1, 0x16F4DCD4582E38EA, 0x3706F0C42C455F7B, 0x575704124DCD4EDB,\n    0x53D4FCA112BC2696, 0x2503D5E77B037135, 0x736502F44FCA1F8C, 0x112361653D5E75F6, 0x77B12BC2502F41B0, 0x44F7B037361653F1,\n    0x64657E702E5B0E31, 0x047467B320266B19, 0x61F4703257E703D7, 0x02E1F776467B3E00, 0x3202E5B047032BA3, 0x257202661F776B9C,\n    0x07D1BD5062570A84, 0x07F7D0A27EC75B48, 0x5297FCC21BD5012 , 0x062291307D0A2D5D, 0x27E625707FCC29F2, 0x21B7EC75291304B6,\n    0xE3A7D12719D558ED, 0x55F3ADE047551C8 , 0x1255F7417D12738F, 0x71925D2E3ADE0892, 0x04719D555F741997, 0x17D4755125D2E2F ,\n    0x65415E922B9F2269, 0x227544375C134FED, 0x456272D315E92399, 0x22B5618654437F4E, 0x75C2B9F2272D32AB, 0x3155C13456186AA1,\n    0x8462A8717E4D355C, 0x32C4637A234D7836, 0x75F2C1832A871760, 0x17E5FC784637A94 , 0xA237E4D32C183207, 0x32A234D75FC78B3 ,\n    0x34E6C9F47F10621E, 0x6624E3F1276966B2, 0x62562BA26C9F4A11, 0x47F25F234E3F182C, 0x1277F10662BA2EF5, 0x26C2769625F239CD,\n    0x63F0AC1573D63FED, 0x3733F3D3636E1F5E, 0x135738320AC15A0E, 0x57335C363F3D33EB, 0x36373D63738326EA, 0x20A636E135C366B1,\n    0x642711A14D476E86, 0x67E426A402F63208, 0x3757E4D1711A1FC1, 0x14D75E46426A4396, 0x4024D4767E4D1B93, 0x17102F6375E46DB7,\n    0x60A7AD242F3C44A7, 0x4490A56351A56F5C, 0x64C499527AD2463D, 0x42F4C4B60A5639CA, 0x3512F3C449952C78, 0x27A51A564C4B64F6,\n    0x14B438673AFE7F8D, 0x7554BC1466993D04, 0x36855A8743867F37, 0x73A681A14BC146C2, 0x4663AFE755A875EC, 0x74366993681A1A75,\n    0x61820F7730A67E1B, 0x773189184A4A7D0C, 0x7547389720F77993, 0x730542661891805 , 0x84A30A67738976AD, 0x7204A4A7542667D6,\n    0x6442BF173C5C6EBF, 0x668447C34499187F, 0x17A68D842BF17C97, 0x73C7AAB6447C317F, 0x3443C5C668D8419C, 0x42B449917AAB6456,\n    0x43D09163421B4F29, 0x41A3D72A76740F9C, 0x0751AD5409163B8D, 0x342754943D72AAB , 0xA76421B41AD54DD7, 0x40976740754946EE,\n    0x654105637317342B, 0x30C54BB4218546D4, 0x45D0CE6310563DA7, 0x3735D14654BB4CCE, 0x421731730CE63E46, 0x310218545D146234,\n    0x40709D7233BE6C63, 0x63607C36325044E5, 0x42D3655309D72335, 0x2332DFA407C36BA , 0x63233BE6365530CC, 0x309325042DFA448C,\n    0x312150271663516F, 0x53C1253259B00AA , 0x0493CEF0150274EA, 0x716492F312532D4A, 0x259166353CEF002D, 0x01559B00492F3DA5,\n    0x72F14A10263A2574, 0x2682F6276F8005C2, 0x0266829314A10651, 0x026269872F627ABA, 0x76F263A268293238, 0x3146F80026987646,\n    0x12B59B1552590516, 0x0532B2A410144D36, 0x4275395359B151B9, 0x552278512B2A4F05, 0x4105259053953699, 0x3591014427851C75,\n    0xF4F32843180646F3, 0x54718F4F2E970306, 0x6623953632843145, 0x318D315E18F4FE8F\n};\n\n/* The source data is random across the q63_t range. Accessing it by word should\n   remain random. */\nconst q31_t * intrinsics_q31_inputs = (q31_t *) intrinsics_q63_inputs;\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/main.c",
    "content": "#include \"jtest.h\"\n#include \"all_tests.h\"\n#include \"arm_math.h\"\n\n\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && !defined (__MICROLIB)\n__asm(\" .global __ARM_use_no_argv\\n\");\n#endif\n\n\nvoid debug_init(void)\n{\n    uint32_t * SHCSR_ptr = (uint32_t *) 0xE000ED24; /* System Handler Control and State Register */\n    *SHCSR_ptr |= 0x70000;             /* Enable  UsageFault, BusFault, and MemManage fault*/\n}\n\nint main(void)\n{\n#if !defined(FILEIO)\n    debug_init();\n#endif\n\n    JTEST_INIT();               /* Initialize test framework. */\n\n    JTEST_GROUP_CALL(all_tests); /* Run all tests. */\n\n    JTEST_ACT_EXIT_FW();        /* Exit test framework.  */\n#if !defined(FILEIO)\n    while (1);                   /* Never return. */\n#endif\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/math_helper.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010 ARM Limited. All rights reserved.\n*\n* $Date:        29. November 2010\n* $Revision:    V1.0.3\n*\n* Project:      CMSIS DSP Library\n*\n* Title:        math_helper.c\n*\n* Description:  Definition of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Version 1.0.3 2010/11/29\n*    Re-organized the CMSIS folders and updated documentation.\n*\n* Version 1.0.2 2010/11/11\n*    Documentation updated.\n*\n* Version 1.0.1 2010/10/05\n*    Production release and review comments incorporated.\n*\n* Version 1.0.0 2010/09/20\n*    Production release and review comments incorporated.\n*\n* Version 0.0.7  2010/06/10\n*    Misra-C changes done\n* -------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------\n*       Include standard header files\n* -------------------------------------------------------------------- */\n#include<math.h>\n\n/* ----------------------------------------------------------------------\n*       Include project header files\n* -------------------------------------------------------------------- */\n#include \"math_helper.h\"\n\n/**\n * @brief  Caluclation of SNR\n * @param  float*   Pointer to the reference buffer\n * @param  float*   Pointer to the test buffer\n * @param  uint32_t     total number of samples\n * @return float    SNR\n * The function Caluclates signal to noise ratio for the reference output\n * and test output\n */\n\nfloat arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)\n{\n  float EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  float SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n      /* Checking for a NAN value in pRef array */\n      test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n      if (temp == 0x7FC00000)\n      {\n        return(100000.0);\n      }\n\n      /* Checking for a NAN value in pTest array */\n      test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n      if (temp == 0x7FC00000)\n      {\n        return(100000.0);\n      }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n    /* Checking for a NAN value in EnergyError */\n    test =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n        return(100000.0);\n    }\n\n\n  SNR = 10 * log10f (EnergySignal / EnergyError);\n\n    /* Checking for a NAN value in SNR */\n    test =   (int *)(&SNR);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n        return(100000.0);\n    }\n\n\treturn (SNR);\n\n}\n\n\n\ndouble arm_snr_f64(double *pRef, double *pTest, uint32_t buffSize)\n{\n  double EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  double SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n      /* Checking for a NAN value in pRef array */\n      test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n      if (temp == 0x7FC00000)\n      {\n        return(100000.0);\n      }\n\n      /* Checking for a NAN value in pTest array */\n      test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n      if (temp == 0x7FC00000)\n      {\n        return(100000.0);\n      }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n    /* Checking for a NAN value in EnergyError */\n    test =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n        return(100000.0);\n    }\n\n\n  SNR = 10 * log10 (EnergySignal / EnergyError);\n\n    /* Checking for a NAN value in SNR */\n    test =   (int *)(&SNR);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n        return(10000.0);\n    }\n\n  return (SNR);\n\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param  q15_t*       Pointer to input buffer\n * @param  uint32_t     blockSize\n * @param  uint32_t     guard_bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,\n                            uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Converts float to fixed in q12.20 format\n * @param  uint32_t     number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point(q12.20) values\n */\n\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      /* 1048576.0f corresponds to pow(2, 20) */\n      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 1.0)\n        {\n          pOut[i] = 0x000FFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param  q15_t*   Pointer to Ref buffer\n * @param  q15_t*   Pointer to Test buffer\n * @param  uint32_t     number of samples in the buffer\n * @return none\n */\n\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n    diff = pIn[i] - pOut[i];\n    diffCrnt = (diff > 0) ? diff : -diff;\n\n    if (diffCrnt > maxDiff)\n    {\n        maxDiff = diffCrnt;\n    }\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param  q31_t*   Pointer to Ref buffer\n * @param  q31_t*   Pointer to Test buffer\n * @param  uint32_t     number of samples in the buffer\n * @return none\n */\n\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n    diff = pIn[i] - pOut[i];\n    diffCrnt = (diff > 0) ? diff : -diff;\n\n    if (diffCrnt > maxDiff)\n    {\n        maxDiff = diffCrnt;\n    }\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param  q31_t*   Pointer to input buffer\n * @param  uint32_t     blockSize\n * @param  uint32_t     guard_bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q31 (q31_t * input_buf,\n                                 uint32_t blockSize,\n                                 uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param  q31_t*   Pointer to input buffer\n * @param  uint32_t     blockSize\n * @param  uint32_t     guard_bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q7 (q7_t * input_buf,\n                                uint32_t blockSize,\n                                uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n\n\n/**\n * @brief  Caluclates number of guard bits\n * @param  uint32_t     number of additions\n * @return none\n * The function Caluclates the number of guard bits\n * depending on the numtaps\n */\n\nuint32_t arm_calc_guard_bits (uint32_t num_adds)\n{\n  uint32_t i = 1, j = 0;\n\n  if (num_adds == 1)\n    {\n      return (0);\n    }\n\n  while (i < num_adds)\n    {\n      i = i * 2;\n      j++;\n    }\n\n  return (j);\n}\n\n/**\n * @brief  Converts Q15 to floating-point\n * @param  uint32_t     number of samples in the buffer\n * @return none\n */\n\nvoid arm_apply_guard_bits (float32_t * pIn,\n                           uint32_t numSamples,\n                           uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);\n    }\n}\n\n/**\n * @brief  Calculates pow(2, numShifts)\n * @param  uint32_t     number of shifts\n * @return pow(2, numShifts)\n */\nuint32_t arm_calc_2pow(uint32_t numShifts)\n{\n\n  uint32_t i, val = 1;\n\n  for (i = 0; i < numShifts; i++)\n    {\n      val = val * 2;\n    }\n\n  return(val);\n}\n\n\n\n/**\n * @brief  Converts float to fixed q14\n * @param  uint32_t     number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q14 (float *pIn, q15_t * pOut,\n                       uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      /* 16384.0f corresponds to pow(2, 14) */\n      pOut[i] = (q15_t) (pIn[i] * 16384.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFF;\n        }\n\n    }\n\n}\n\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param  uint32_t     number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q30 (float *pIn, q31_t * pOut,\n                       uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param  uint32_t     number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q29 (float *pIn, q31_t * pOut,\n                       uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 4.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n\n/**\n * @brief  Converts float to fixed q28 format\n * @param  uint32_t     number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q28 (float *pIn, q31_t * pOut,\n                       uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n    /* 268435456.0f corresponds to pow(2, 28) */\n      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 8.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Clip the float values to +/- 1\n * @param  pIn      input buffer\n * @param  numSamples   number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_clip_f32 (float *pIn, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      if (pIn[i] > 1.0f)\n      {\n        pIn[i] = 1.0;\n      }\n      else if ( pIn[i] < -1.0f)\n      {\n        pIn[i] = -1.0;\n      }\n\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_add_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAT_ADD_TEST(suffix)          \\\n    MATRIX_DEFINE_TEST_TEMPLATE_ELT2(           \\\n        mat_add,                                \\\n        suffix,                                 \\\n        MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT,     \\\n        MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS,  \\\n        MATRIX_COMPARE_INTERFACE)\n\nJTEST_ARM_MAT_ADD_TEST(f32);\nJTEST_ARM_MAT_ADD_TEST(q31);\nJTEST_ARM_MAT_ADD_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_add_tests)\n{\n    JTEST_TEST_CALL(arm_mat_add_f32_test);\n    JTEST_TEST_CALL(arm_mat_add_q31_test);\n    JTEST_TEST_CALL(arm_mat_add_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_cmplx_mult_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAT_CMPLX_MULT_TEST(suffix, comparison_interface) \\\n    MATRIX_DEFINE_TEST_TEMPLATE_ELT2(                               \\\n        mat_cmplx_mult,                                             \\\n        suffix,                                                     \\\n        MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,                   \\\n        MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,                \\\n        comparison_interface)\n\nJTEST_ARM_MAT_CMPLX_MULT_TEST(f32, MATRIX_SNR_COMPARE_INTERFACE);\nJTEST_ARM_MAT_CMPLX_MULT_TEST(q31, MATRIX_COMPARE_INTERFACE);\n\n/*--------------------------------------------------------------------------------*/\n/* Q15 Uses a Different interface than the others. */\n/*--------------------------------------------------------------------------------*/\n\n#define ARM_mat_cmplx_mult_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \\\n    PAREN(input_a_ptr, input_b_ptr,                                     \\\n          (void *) &matrix_output_fut,                                  \\\n          (q15_t *) matrix_output_scratch)\n\nJTEST_DEFINE_TEST(arm_mat_cmplx_mult_q15_test, arm_mat_cmplx_mult_q15)\n{\n    MATRIX_TEST_TEMPLATE_ELT2(\n        matrix_q15_a_inputs,\n        matrix_q15_b_inputs,\n        arm_matrix_instance_q15 * ,\n        arm_matrix_instance_q15,\n        TYPE_FROM_ABBREV(q15),\n        arm_mat_cmplx_mult_q15,\n        ARM_mat_cmplx_mult_q15_INPUT_INTERFACE,\n        ref_mat_cmplx_mult_q15,\n        REF_mat_cmplx_mult_INPUT_INTERFACE,\n        MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,\n        MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,\n        MATRIX_COMPARE_INTERFACE);\n}\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_cmplx_mult_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_cmplx_mult_f32_test);\n    JTEST_TEST_CALL(arm_mat_cmplx_mult_q31_test);\n    JTEST_TEST_CALL(arm_mat_cmplx_mult_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_init_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAT_INIT_TEST(suffix)                     \\\n    JTEST_DEFINE_TEST(arm_mat_init_##suffix##_test,         \\\n                      arm_mat_init_##suffix)                \\\n    {                                                       \\\n        const uint16_t rows = 4;                            \\\n        const uint16_t cols = 2;                            \\\n        arm_matrix_instance_##suffix  matrix = {0};         \\\n        /*  TYPE_FROM_ABBREV(suffix) data[rows*cols] = {0}; */ \\\n            TYPE_FROM_ABBREV(suffix) data[4*2] = {0}; \\\n                                                            \\\n            arm_mat_init_##suffix(&matrix,                  \\\n                                  rows,                     \\\n                                  cols,                     \\\n                                  data);                    \\\n                                                            \\\n                JTEST_DUMP_STRF(\"Matrix Dimensions: %dx%d\\n\", \\\n                     (int)matrix.numRows,                   \\\n                     (int)matrix.numCols);                  \\\n                                                            \\\n                if ((matrix.numRows == rows) &&             \\\n                    (matrix.numCols == cols) &&             \\\n                    (matrix.pData == data))                 \\\n                {                                           \\\n                    return JTEST_TEST_PASSED;               \\\n                }                                           \\\n                else                                        \\\n                {                                           \\\n                    return JTEST_TEST_FAILED;               \\\n                }                                           \\\n                                                            \\\n    }\n\nJTEST_ARM_MAT_INIT_TEST(f32);\nJTEST_ARM_MAT_INIT_TEST(q31);\nJTEST_ARM_MAT_INIT_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_init_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_init_f32_test);\n    JTEST_TEST_CALL(arm_mat_init_q31_test);\n    JTEST_TEST_CALL(arm_mat_init_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_inverse_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\nJTEST_DEFINE_TEST(arm_mat_inverse_f32_test, arm_mat_inverse_f32)\n{\n    TEMPLATE_DO_ARR_DESC(\n        mat_idx, arm_matrix_instance_f32 *, mat_ptr, matrix_f32_invertible_inputs\n        ,\n        JTEST_DUMP_STRF(\"Matrix Dimensions: %dx%d\\n\",                \n                 (int)mat_ptr->numRows,                         \n                 (int)mat_ptr->numCols); \n      \n        if (MATRIX_TEST_VALID_SQUARE_DIMENSIONS(arm_matrix_instance_f32 *, mat_ptr))\n        {\n            MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f32 *, mat_ptr);\n\n            /* arm_mat_inverse_f32() modifies its source input. Use the scratch\n             * buffer to store a copy of the intended input. */\n            {\n                float32_t * original_pdata_ptr = mat_ptr->pData;\n\n                memcpy(matrix_output_scratch,\n                       mat_ptr->pData,\n                       mat_ptr->numRows * mat_ptr->numCols * sizeof(float32_t));\n                mat_ptr->pData = (void*) &matrix_output_scratch;\n\n                JTEST_COUNT_CYCLES(arm_mat_inverse_f32(mat_ptr, &matrix_output_fut));\n                mat_ptr->pData = original_pdata_ptr;\n            }\n\n            ref_mat_inverse_f32(mat_ptr, &matrix_output_ref);\n\n            MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_f32,\n                                         float32_t);\n        });\n\n    return JTEST_TEST_PASSED;\n}\n\nJTEST_DEFINE_TEST(arm_mat_inverse_f64_test, arm_mat_inverse_f64)\n{\n    TEMPLATE_DO_ARR_DESC(\n        mat_idx, arm_matrix_instance_f64 *, mat_ptr, matrix_f64_invertible_inputs\n        ,\n        JTEST_DUMP_STRF(\"Matrix Dimensions: %dx%d\\n\",                \n                         (int)mat_ptr->numRows,                         \n                         (int)mat_ptr->numCols);    \n                         \n        if (MATRIX_TEST_VALID_SQUARE_DIMENSIONS(arm_matrix_instance_f64 *, mat_ptr))\n        {\n            MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f64 *, mat_ptr);\n\n            /* arm_mat_inverse_f64() modifies its source input. Use the scratch\n             * buffer to store a copy of the intended input. */\n            {\n                float64_t * original_pdata_ptr = mat_ptr->pData;\n\n                memcpy(matrix_output_scratch,\n                       mat_ptr->pData,\n                       mat_ptr->numRows * mat_ptr->numCols * sizeof(float64_t));\n                mat_ptr->pData = (void*) &matrix_output_scratch;\n\n                JTEST_COUNT_CYCLES(arm_mat_inverse_f64(mat_ptr, &matrix_output_fut64));\n                mat_ptr->pData = original_pdata_ptr;\n            }\n\n            ref_mat_inverse_f64(mat_ptr, &matrix_output_ref64);\n\n            MATRIX_DBL_SNR_COMPARE_INTERFACE(arm_matrix_instance_f64);\n        });\n\n    return JTEST_TEST_PASSED;\n}\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_inverse_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_inverse_f32_test);\n    JTEST_TEST_CALL(arm_mat_inverse_f64_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_fast_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAT_MULT_FAST_TEST(suffix)            \\\n    MATRIX_DEFINE_TEST_TEMPLATE_ELT2(                   \\\n        mat_mult_fast,                                  \\\n        suffix,                                         \\\n        MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,       \\\n        MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,    \\\n        MATRIX_SNR_COMPARE_INTERFACE)\n\nJTEST_ARM_MAT_MULT_FAST_TEST(q31);\n\n/*--------------------------------------------------------------------------------*/\n/* Q15 Uses a Different interface than the others. */\n/*--------------------------------------------------------------------------------*/\n\n#define ARM_mat_mult_fast_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \\\n    PAREN(input_a_ptr, input_b_ptr,                                     \\\n          (void *) &matrix_output_fut,                                  \\\n          (q15_t *) matrix_output_scratch)\n\nJTEST_DEFINE_TEST(arm_mat_mult_fast_q15_test, arm_mat_mult_fast_q15)\n{\n    MATRIX_TEST_TEMPLATE_ELT2(\n        matrix_q15_a_inputs,\n        matrix_q15_b_inputs,\n        arm_matrix_instance_q15 * ,\n        arm_matrix_instance_q15,\n        TYPE_FROM_ABBREV(q15),\n        arm_mat_mult_fast_q15,\n        ARM_mat_mult_fast_q15_INPUT_INTERFACE,\n        ref_mat_mult_fast_q15,\n        REF_mat_mult_fast_INPUT_INTERFACE,\n        MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,\n        MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,\n        MATRIX_SNR_COMPARE_INTERFACE);\n}\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_mult_fast_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_mult_fast_q31_test);\n    JTEST_TEST_CALL(arm_mat_mult_fast_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAT_MULT_TEST(suffix)                 \\\n    MATRIX_DEFINE_TEST_TEMPLATE_ELT2(                   \\\n        mat_mult,                                       \\\n        suffix,                                         \\\n        MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,       \\\n        MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,    \\\n        MATRIX_COMPARE_INTERFACE)\n\nJTEST_ARM_MAT_MULT_TEST(f32);\nJTEST_ARM_MAT_MULT_TEST(q31);\n\n/*--------------------------------------------------------------------------------*/\n/* Q15 Uses a Different interface than the others. */\n/*--------------------------------------------------------------------------------*/\n\n#define ARM_mat_mult_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \\\n    PAREN(input_a_ptr, input_b_ptr,                                     \\\n          (void *) &matrix_output_fut,                                  \\\n          (q15_t *) matrix_output_scratch)\n\nJTEST_DEFINE_TEST(arm_mat_mult_q15_test, arm_mat_mult_q15)\n{\n    MATRIX_TEST_TEMPLATE_ELT2(\n        matrix_q15_a_inputs,\n        matrix_q15_b_inputs,\n        arm_matrix_instance_q15 * ,\n        arm_matrix_instance_q15,\n        TYPE_FROM_ABBREV(q15),\n        arm_mat_mult_q15,\n        ARM_mat_mult_q15_INPUT_INTERFACE,\n        ref_mat_mult_q15,\n        REF_mat_mult_INPUT_INTERFACE,\n        MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,\n        MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,\n        MATRIX_COMPARE_INTERFACE);\n}\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_mult_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_mult_f32_test);\n    JTEST_TEST_CALL(arm_mat_mult_q31_test);\n    JTEST_TEST_CALL(arm_mat_mult_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_scale_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n/* This is for the two fixed point cases */\n#define JTEST_ARM_MAT_SCALE_TEST(suffix,type)                           \\\n    JTEST_DEFINE_TEST(arm_mat_scale_##suffix##_test, arm_mat_scale_##suffix) \\\n    {                                                                   \\\n        uint32_t i,j;                                                   \\\n                                                                        \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            mat_idx, arm_matrix_instance_##suffix *,                    \\\n            mat_ptr, matrix_##suffix##_b_inputs                         \\\n            ,                                                           \\\n            MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(                         \\\n                arm_matrix_instance_##suffix *, mat_ptr);               \\\n                                                                        \\\n            for(i=0;i<MATRIX_MAX_COEFFS_LEN;i++)                        \\\n            {                                                           \\\n                for(j=0;j<MATRIX_MAX_SHIFTS_LEN;j++)                    \\\n                {                                                       \\\n                    JTEST_DUMP_STRF(\"Matrix Dimensions: %dx%d\\n\",       \\\n                         (int)mat_ptr->numRows,                         \\\n                         (int)mat_ptr->numCols);                        \\\n                                                                        \\\n                    JTEST_COUNT_CYCLES(                                 \\\n                        arm_mat_scale_##suffix(mat_ptr,                 \\\n                                               matrix_##suffix##_scale_values[i], \\\n                                               matrix_shift_values[j],  \\\n                                               (arm_matrix_instance_##suffix*) &matrix_output_fut)); \\\n                                                                        \\\n                    ref_mat_scale_##suffix(mat_ptr,                     \\\n                                           matrix_##suffix##_scale_values[i], \\\n                                           matrix_shift_values[j],      \\\n                                           (arm_matrix_instance_##suffix*) &matrix_output_ref); \\\n                                                                        \\\n                        MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_##suffix, \\\n                                                     type);             \\\n                }                                                       \\\n            });                                                         \\\n                                                                        \\\n        return JTEST_TEST_PASSED;                                       \\\n    }\n\nJTEST_DEFINE_TEST(arm_mat_scale_f32_test, arm_mat_scale_f32)\n{\n    uint32_t i;\n\n    TEMPLATE_DO_ARR_DESC(\n        mat_idx, arm_matrix_instance_f32 *, mat_ptr, matrix_f32_b_inputs\n        ,\n        MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f32 *, mat_ptr);\n\n        for(i=0;i<MATRIX_MAX_COEFFS_LEN;i++)\n        {\n            JTEST_DUMP_STRF(\"Matrix Dimensions: %dx%d\\n\",                \n                         (int)mat_ptr->numRows,                         \n                         (int)mat_ptr->numCols);                        \n            JTEST_COUNT_CYCLES(arm_mat_scale_f32(mat_ptr, matrix_f32_scale_values[i], &matrix_output_fut));\n\n            ref_mat_scale_f32(mat_ptr, matrix_f32_scale_values[i], &matrix_output_ref);\n\n            MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_f32,\n                                         float32_t);\n        });\n\n    return JTEST_TEST_PASSED;\n}\n\nJTEST_ARM_MAT_SCALE_TEST(q31,q31_t);\nJTEST_ARM_MAT_SCALE_TEST(q15,q15_t);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_scale_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_scale_f32_test);\n    JTEST_TEST_CALL(arm_mat_scale_q31_test);\n    JTEST_TEST_CALL(arm_mat_scale_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_sub_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAT_SUB_TEST(suffix)          \\\n    MATRIX_DEFINE_TEST_TEMPLATE_ELT2(           \\\n        mat_sub,                                \\\n        suffix,                                 \\\n        MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT,     \\\n        MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS,  \\\n        MATRIX_COMPARE_INTERFACE)\n\nJTEST_ARM_MAT_SUB_TEST(f32);\nJTEST_ARM_MAT_SUB_TEST(q31);\nJTEST_ARM_MAT_SUB_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_sub_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_sub_f32_test);\n    JTEST_TEST_CALL(arm_mat_sub_q31_test);\n    JTEST_TEST_CALL(arm_mat_sub_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_trans_tests.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"matrix_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAT_TRANS_TEST(suffix)        \\\n    MATRIX_DEFINE_TEST_TEMPLATE_ELT1(           \\\n        mat_trans,                              \\\n        suffix,                                 \\\n        MATRIX_TEST_CONFIG_TRANSPOSE_OUTPUT,    \\\n        MATRIX_TEST_VALID_DIMENSIONS_ALWAYS)\n\nJTEST_ARM_MAT_TRANS_TEST(f32);\nJTEST_ARM_MAT_TRANS_TEST(q31);\nJTEST_ARM_MAT_TRANS_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mat_trans_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mat_trans_f32_test);\n    JTEST_TEST_CALL(arm_mat_trans_q31_test);\n    JTEST_TEST_CALL(arm_mat_trans_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_common_data.c",
    "content": "#include \"arm_math.h\"\n#include \"matrix_test_data.h\"\n#include \"type_abbrev.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nMATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_fut_data[2*MATRIX_TEST_MAX_ELTS] = {0};\nMATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_ref_data[2*MATRIX_TEST_MAX_ELTS] = {0};\nMATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_scratch[MATRIX_TEST_MAX_ELTS] = {0};\n\nMATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_fut[MATRIX_TEST_MAX_ELTS];\nMATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_ref[MATRIX_TEST_MAX_ELTS];\n\narm_matrix_instance_f32 matrix_output_fut = {\n    0,\n    0,\n    (float32_t *) &matrix_output_fut_data\n};\n\narm_matrix_instance_f32 matrix_output_ref = {\n    0,\n    0,\n    (float32_t *) &matrix_output_ref_data\n};\n\narm_matrix_instance_f64 matrix_output_fut64 = {\n    0,\n    0,\n    (float64_t *) &matrix_output_fut_data\n};\n\narm_matrix_instance_f64 matrix_output_ref64 = {\n    0,\n    0,\n    (float64_t *) &matrix_output_ref_data\n};\n\n/*--------------------------------------------------------------------------------*/\n/* Data Buckets */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Pool of random data to base matrix inputs from.\n */\nfloat32_t matrix_f32_100_rand[100] = {\n/*    -45.0345569674258, first number negativ causes fault in 1x1 multiplay with 0.\n                         AC6 DSP_Lib calculatas a -0.0 which is not a 0.0 in memcmp!\n */\n     45.0345569674258,  -11.0261163038747, -14.6841428777929,\n    0.0345569674258,    -11.0261163038747, -14.6841428777929,\n    -20.3679194392227,  27.5712678608402,  -12.1390617339732,\n    -19.8753669720509,  42.3379642103244,  -23.7788252219155,\n    -23.7517765301667,  40.2716109915281,  -25.8308714086167,\n    32.1194040197959,   24.4692807074156,  -1.32083675968276,\n    31.1580458282477,   -2.90766514824093, -6.97926086704160,\n    10.2843089382083,   30.1014622769739,  44.4787189721646,\n    -9.60878544118853,  -48.4596562348445, -31.1044984967456,\n    -6.41414114190809,  3.28255887994549,  -26.9511839788442,\n    -31.5183679875864,  21.1215780433683,  -47.0779722437854,\n    -0.913590753192006, -40.3545474831611, -45.6976198342192,\n    18.6775433365315,   -5.32162505701938, -14.9272896423117,\n    34.4308792695389,   40.4880968679893,  -27.8253265982760,\n    42.8854139478045,   -1.07473615999811, -36.8026707393665,\n    -33.1009970537296,  -31.6488844262730, -19.3650527983443,\n    43.9001561999887,   -30.5235710432951, 47.9748378356085,\n    -38.2582349144194,  23.0330862855453,  -16.2280590178623,\n    44.2050590775485,   14.9115474956452,  -13.1515403509664,\n    0.850865538112700,  37.5942811492984,  -27.4078219027601,\n    -6.11300268738968,  -20.3324126781673, -1.13910261964209,\n    40.0053846417662,   45.6134540229802,  23.1722385658670,\n    12.5618560729690,   1.07715641721097,  5.01563428984222,\n    -32.9291952852141,  -38.8880776559401, -18.1221698074118,\n    7.85250610234389,   -13.0753218879785, 7.52085950784656,\n    14.7745963136307,   28.0227435151377,  31.7627708322262,\n    12.2475086001227,   -27.2335702183447, -24.1935304087933,\n    -7.58332402861928,  -26.2716420228479, -38.8797244706213,\n    -44.0220457052844,  -4.90762935690551, -41.8874231134215,\n    29.4831416883453,   8.70447045314168,  -6.43013158961009,\n    -9.12801538874479,  0.785828466111815, -4.11511718200689,\n    28.0252068321138,   -26.5220086627594, 4.70088922863450,\n    42.9385970968730,   14.4318130193692,  -29.2257707266972,\n    46.3088539286913\n};\n\nfloat64_t matrix_f64_100_rand[100] = {\n//    -45.0345569674258,  -11.0261163038747, -14.6841428777929,\n     45.0345569674258,  -11.0261163038747, -14.6841428777929,\n    0.0345569674258,    -11.0261163038747, -14.6841428777929,\n    -20.3679194392227,  27.5712678608402,  -12.1390617339732,\n    -19.8753669720509,  42.3379642103244,  -23.7788252219155,\n    -23.7517765301667,  40.2716109915281,  -25.8308714086167,\n    32.1194040197959,   24.4692807074156,  -1.32083675968276,\n    31.1580458282477,   -2.90766514824093, -6.97926086704160,\n    10.2843089382083,   30.1014622769739,  44.4787189721646,\n    -9.60878544118853,  -48.4596562348445, -31.1044984967456,\n    -6.41414114190809,  3.28255887994549,  -26.9511839788442,\n    -31.5183679875864,  21.1215780433683,  -47.0779722437854,\n    -0.913590753192006, -40.3545474831611, -45.6976198342192,\n    18.6775433365315,   -5.32162505701938, -14.9272896423117,\n    34.4308792695389,   40.4880968679893,  -27.8253265982760,\n    42.8854139478045,   -1.07473615999811, -36.8026707393665,\n    -33.1009970537296,  -31.6488844262730, -19.3650527983443,\n    43.9001561999887,   -30.5235710432951, 47.9748378356085,\n    -38.2582349144194,  23.0330862855453,  -16.2280590178623,\n    44.2050590775485,   14.9115474956452,  -13.1515403509664,\n    0.850865538112700,  37.5942811492984,  -27.4078219027601,\n    -6.11300268738968,  -20.3324126781673, -1.13910261964209,\n    40.0053846417662,   45.6134540229802,  23.1722385658670,\n    12.5618560729690,   1.07715641721097,  5.01563428984222,\n    -32.9291952852141,  -38.8880776559401, -18.1221698074118,\n    7.85250610234389,   -13.0753218879785, 7.52085950784656,\n    14.7745963136307,   28.0227435151377,  31.7627708322262,\n    12.2475086001227,   -27.2335702183447, -24.1935304087933,\n    -7.58332402861928,  -26.2716420228479, -38.8797244706213,\n    -44.0220457052844,  -4.90762935690551, -41.8874231134215,\n    29.4831416883453,   8.70447045314168,  -6.43013158961009,\n    -9.12801538874479,  0.785828466111815, -4.11511718200689,\n    28.0252068321138,   -26.5220086627594, 4.70088922863450,\n    42.9385970968730,   14.4318130193692,  -29.2257707266972,\n    46.3088539286913\n};\n\nMATRIX_TEST_BIGGEST_INPUT_TYPE matrix_zeros[MATRIX_TEST_MAX_ELTS] = {0};\n\nconst float32_t matrix_f32_scale_values[MATRIX_MAX_COEFFS_LEN] =\n{\n        43.0264275639  , -17.0525215570 , -94.8488973910 , -8.1924989580  ,\n        7.2830326091   , 66.8368719314  , 33.9778190671  , 117.8652289772 ,\n        -129.6077797465, -14.6420815368 , 18.0239223278  , 1.0000000000   ,\n        55.0375037651  , 1.8674609862   , 0.00000000000  , -33.5750364909\n};\n\nconst q31_t matrix_q31_scale_values[MATRIX_MAX_COEFFS_LEN] =\n{\n    0x0201DC90, 0x211F0D7C, 0x80000000, 0xF573B824,\n    0xE85ED05B, 0x311DFB52, 0x3529E750, 0x00000000,\n    0x7FFFFFFF, 0x21FA525A, 0x0971FD45, 0x05547B68,\n    0x270C6366, 0x06FDD5A6, 0xF7025315, 0xB1155A1E\n};\n\nconst q15_t matrix_q15_scale_values[MATRIX_MAX_COEFFS_LEN] =\n{\n    0x0201, 0x211F, 0x8000, 0xF573,\n    0xE85E, 0x311D, 0x3529, 0x0000,\n    0x7FFF, 0x21FA, 0x0971, 0x0554,\n    0x270C, 0x06FD, 0xF702, 0xB115\n};\n\nconst int32_t matrix_shift_values[MATRIX_MAX_SHIFTS_LEN] =\n{\n    -16, -7, 0, 7, 16\n};\n\n/*--------------------------------------------------------------------------------*/\n/* Matrix Definitions */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Define matrices by suffix (f32, q31, q15) for use in test cases.\n *\n *  The rand1 and rand2 suffixes get their data from the same pool of random\n *  data, but their starting points differ by 1 element.\n *\n *  Makes available:\n *  - matrix_`suffix`_1x1_rand1/2\n *  - matrix_`suffix`_1x4_rand1/2\n *  - matrix_`suffix`_2x4_rand1/2\n *  - matrix_`suffix`_4x4_rand1/2\n */\n#define MATRIX_DEFINE_MATRICES(suffix)                              \\\n    arm_matrix_instance_##suffix matrix_##suffix##_1x1_rand1 =      \\\n        {1, 1, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand };  \\\n    arm_matrix_instance_##suffix matrix_##suffix##_1x1_rand2 =      \\\n        {1, 1, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \\\n    arm_matrix_instance_##suffix matrix_##suffix##_1x1_zeros =      \\\n        {1, 1, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros};          \\\n                                                                    \\\n    arm_matrix_instance_##suffix matrix_##suffix##_1x4_rand1 =      \\\n        {1, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand };  \\\n    arm_matrix_instance_##suffix matrix_##suffix##_1x4_rand2 =      \\\n        {1, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \\\n    arm_matrix_instance_##suffix matrix_##suffix##_1x4_zeros =      \\\n        {1, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros};          \\\n                                                                    \\\n    arm_matrix_instance_##suffix matrix_##suffix##_2x4_rand1 =      \\\n        {2, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand };  \\\n    arm_matrix_instance_##suffix matrix_##suffix##_2x4_rand2 =      \\\n        {2, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \\\n    arm_matrix_instance_##suffix matrix_##suffix##_2x4_zeros =      \\\n        {2, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros};          \\\n                                                                    \\\n    arm_matrix_instance_##suffix matrix_##suffix##_4x4_rand1 =      \\\n        {4, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand };  \\\n    arm_matrix_instance_##suffix matrix_##suffix##_4x4_rand2 =      \\\n        {4, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \\\n    arm_matrix_instance_##suffix matrix_##suffix##_4x4_zeros =      \\\n        {4, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}\n\nMATRIX_DEFINE_MATRICES(f64);\nMATRIX_DEFINE_MATRICES(f32);\nMATRIX_DEFINE_MATRICES(q31);\nMATRIX_DEFINE_MATRICES(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Matrix-Input Arrays */\n/*--------------------------------------------------------------------------------*/\n\n/* Define Input #ARR_DESC_t by suffix.\n *\n * Taking inputs in parallel from the 'a' and 'b' arrays yields the following\n * test cases:\n * - 1x1 multiplication by zero\n * - 1x1 multiplication between random numbers\n * - 1x1 * 1x4 valid dimension interaction\n * - 1x1 * 2x4 invalid dimension interaction\n * - 2x4 * 4x4 larger valid dimension interaction\n * - 4x4 * 4x4 larger valid dimension interaction\n */\n#define MATRIX_DEFINE_INPUTS(suffix)                        \\\n    ARR_DESC_DEFINE(arm_matrix_instance_##suffix *,         \\\n                    matrix_##suffix##_a_inputs,             \\\n                    6,                                      \\\n                    CURLY(                                  \\\n                        &matrix_##suffix##_1x1_rand1,       \\\n                        &matrix_##suffix##_1x1_rand1,       \\\n                        &matrix_##suffix##_1x1_rand1,       \\\n                        &matrix_##suffix##_1x1_rand1,       \\\n                        &matrix_##suffix##_2x4_rand1,       \\\n                        &matrix_##suffix##_4x4_rand1        \\\n                        ));                                 \\\n                                                            \\\n    ARR_DESC_DEFINE(arm_matrix_instance_##suffix *,         \\\n                    matrix_##suffix##_b_inputs,             \\\n                    6,                                      \\\n                    CURLY(                                  \\\n                        &matrix_##suffix##_1x1_zeros,       \\\n                        &matrix_##suffix##_1x1_rand2,       \\\n                        &matrix_##suffix##_1x4_rand2,       \\\n                        &matrix_##suffix##_2x4_rand2,       \\\n                        &matrix_##suffix##_4x4_rand2,       \\\n                        &matrix_##suffix##_4x4_rand2        \\\n                        ));                                 \\\n                                                            \\\n    ARR_DESC_DEFINE(arm_matrix_instance_##suffix *,         \\\n                    matrix_##suffix##_invertible_inputs,    \\\n                    4,                                      \\\n                    CURLY(                                  \\\n                        &matrix_##suffix##_1x1_rand1,       \\\n                        &matrix_##suffix##_1x1_rand2,       \\\n                        &matrix_##suffix##_4x4_rand1,       \\\n                        &matrix_##suffix##_4x4_rand2        \\\n                        ))                                  \\\n\nMATRIX_DEFINE_INPUTS(f64);\nMATRIX_DEFINE_INPUTS(f32);\nMATRIX_DEFINE_INPUTS(q31);\nMATRIX_DEFINE_INPUTS(q15);\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"matrix_tests.h\"\n\nJTEST_DEFINE_GROUP(matrix_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_GROUP_CALL(mat_add_tests);\n    JTEST_GROUP_CALL(mat_cmplx_mult_tests);\n    JTEST_GROUP_CALL(mat_init_tests);\n    JTEST_GROUP_CALL(mat_inverse_tests);\n    JTEST_GROUP_CALL(mat_mult_tests);\n    JTEST_GROUP_CALL(mat_mult_fast_tests);\n    JTEST_GROUP_CALL(mat_sub_tests);\n    JTEST_GROUP_CALL(mat_trans_tests);\n    JTEST_GROUP_CALL(mat_scale_tests);\n    return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/max_tests.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"statistics_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MAX_TEST(suffix)              \\\n    STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        max,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        STATISTICS_COMPARE_INTERFACE)\n\nJTEST_ARM_MAX_TEST(f32);\nJTEST_ARM_MAX_TEST(q31);\nJTEST_ARM_MAX_TEST(q15);\nJTEST_ARM_MAX_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(max_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_max_f32_test);\n    JTEST_TEST_CALL(arm_max_q31_test);\n    JTEST_TEST_CALL(arm_max_q15_test);\n    JTEST_TEST_CALL(arm_max_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/mean_tests.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"statistics_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MEAN_TEST(suffix)             \\\n    STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        mean,                                   \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        STATISTICS_COMPARE_INTERFACE)\n\nJTEST_ARM_MEAN_TEST(f32);\nJTEST_ARM_MEAN_TEST(q31);\nJTEST_ARM_MEAN_TEST(q15);\nJTEST_ARM_MEAN_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(mean_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_mean_f32_test);\n    JTEST_TEST_CALL(arm_mean_q31_test);\n    JTEST_TEST_CALL(arm_mean_q15_test);\n    JTEST_TEST_CALL(arm_mean_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/min_tests.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"statistics_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_MIN_TEST(suffix)              \\\n    STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        min,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        STATISTICS_COMPARE_INTERFACE)\n\nJTEST_ARM_MIN_TEST(f32);\nJTEST_ARM_MIN_TEST(q31);\nJTEST_ARM_MIN_TEST(q15);\nJTEST_ARM_MIN_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(min_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_min_f32_test);\n    JTEST_TEST_CALL(arm_min_q31_test);\n    JTEST_TEST_CALL(arm_min_q15_test);\n    JTEST_TEST_CALL(arm_min_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/power_tests.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"statistics_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_POWER_TEST(suffix, output_type)   \\\n    STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(       \\\n        power,                                      \\\n        suffix,                                     \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        TYPE_FROM_ABBREV(suffix),                   \\\n        STATISTICS_SNR_COMPARE_INTERFACE)\n\nJTEST_ARM_POWER_TEST(f32, float32_t);\nJTEST_ARM_POWER_TEST(q31, q63_t);\nJTEST_ARM_POWER_TEST(q15, q63_t);\nJTEST_ARM_POWER_TEST(q7,  q31_t);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(power_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_power_f32_test);\n    JTEST_TEST_CALL(arm_power_q31_test);\n    JTEST_TEST_CALL(arm_power_q15_test);\n    JTEST_TEST_CALL(arm_power_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/rms_tests.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"statistics_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_RMS_TEST(suffix)              \\\n    STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        rms,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        STATISTICS_SNR_COMPARE_INTERFACE)\n\nJTEST_ARM_RMS_TEST(f32);\nJTEST_ARM_RMS_TEST(q31);\nJTEST_ARM_RMS_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(rms_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_rms_f32_test);\n    JTEST_TEST_CALL(arm_rms_q31_test);\n    JTEST_TEST_CALL(arm_rms_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_common_data.c",
    "content": "#include \"statistics_test_data.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\n\nARR_DESC_DEFINE(STATISTICS_BIGGEST_INPUT_TYPE,\n                statistics_output_fut,\n                STATISTICS_MAX_INPUT_ELEMENTS,\n                CURLY(0));\n\nARR_DESC_DEFINE(STATISTICS_BIGGEST_INPUT_TYPE,\n                statistics_output_ref,\n                STATISTICS_MAX_INPUT_ELEMENTS,\n                CURLY(0));\n\nuint32_t statistics_idx_fut = 0;\nuint32_t statistics_idx_ref = 0;\n\nSTATISTICS_BIGGEST_INPUT_TYPE\nstatistics_output_f32_ref[STATISTICS_MAX_INPUT_ELEMENTS];\n\nSTATISTICS_BIGGEST_INPUT_TYPE\nstatistics_output_f32_fut[STATISTICS_MAX_INPUT_ELEMENTS];\n\n/*--------------------------------------------------------------------------------*/\n/* Block Sizes */\n/*--------------------------------------------------------------------------------*/\n\n/* \n  To change test parameter values add/remove values inside CURLY and update \n  the preceeding parameter to reflect the number of values inside CURLY. \n*/\n\nARR_DESC_DEFINE(uint32_t,\n                statistics_block_sizes,\n                4,\n                CURLY(1, 2, 15, 32));\n\n/*--------------------------------------------------------------------------------*/\n/* Test Data */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(float32_t,\n                statistics_f_32,\n                32,\n                CURLY(\n                    -0.0865129623056441 , -0.3331168756476194,\n                    0.0250664612949661  , 0.0575352840717098,\n                    -0.2292942701362928 , 0.2381830931285998,\n                    0.2378328403304206  ,  -0.0075266553186635,\n                    0.0654584722817308  , 0.0349278285641849,\n                    -0.0373417155362879 , 0.1451581096586606,\n                    -0.1176633086028378 , 0.4366371636394202,\n                    -0.0272791766173191 , 0.0227862627041619,\n                    0.2133536422718378  ,  0.0118562921047211,\n                    -0.0191296810967338 , -0.1664698927300045,\n                    0.0588821632785281  , -0.2672363715875608,\n                    0.1428649103637904  ,  0.3247124128892542,\n                    -0.1383551403404573 , 0.1715993345656525,\n                    0.2508002843205065  , -0.3187459152894954,\n                    -0.2881928863802040 , 0.1142295247316356,\n                    -0.0799771155430726 , 0.1379994750928690\n                    ));\n\n\nARR_DESC_DEFINE_SUBSET(statistics_f_31,\n                       statistics_f_32,\n                       31);\n\nARR_DESC_DEFINE_SUBSET(statistics_f_15,\n                       statistics_f_32,\n                       15);\n\nARR_DESC_DEFINE_SUBSET(statistics_f_2,\n                       statistics_f_32,\n                       2);\n\nARR_DESC_DEFINE(float32_t,\n                statistics_zeros,\n                32,\n                CURLY(0));\n\n/* Aggregate all float datasets */\nARR_DESC_DEFINE(ARR_DESC_t *,\n                statistics_f_all,\n                4,\n                CURLY(\n                    &statistics_zeros,\n                    &statistics_f_2,\n                    &statistics_f_15,\n                    &statistics_f_32\n                    ));\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_tests.h\"\n\nJTEST_DEFINE_GROUP(statistics_tests)\n{\n    JTEST_GROUP_CALL(max_tests);\n    JTEST_GROUP_CALL(mean_tests);\n    JTEST_GROUP_CALL(min_tests);\n    JTEST_GROUP_CALL(power_tests);\n    JTEST_GROUP_CALL(rms_tests);\n    JTEST_GROUP_CALL(std_tests);\n    JTEST_GROUP_CALL(var_tests);\n    return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/std_tests.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"statistics_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_STD_TEST(suffix)              \\\n    STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        std,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        STATISTICS_SNR_COMPARE_INTERFACE)\n\nJTEST_ARM_STD_TEST(f32);\nJTEST_ARM_STD_TEST(q31);\nJTEST_ARM_STD_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(std_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_std_f32_test);\n    JTEST_TEST_CALL(arm_std_q31_test);\n    JTEST_TEST_CALL(arm_std_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/var_tests.c",
    "content": "#include \"jtest.h\"\n#include \"statistics_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"statistics_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_VAR_TEST(suffix)              \\\n    STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(   \\\n        var,                                    \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        STATISTICS_SNR_COMPARE_INTERFACE)\n\nJTEST_ARM_VAR_TEST(f32);\nJTEST_ARM_VAR_TEST(q31);\nJTEST_ARM_VAR_TEST(q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(var_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_var_f32_test);\n    JTEST_TEST_CALL(arm_var_q31_test);\n    JTEST_TEST_CALL(arm_var_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/copy_tests.c",
    "content": "#include \"jtest.h\"\n#include \"support_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"support_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_COPY_TEST(suffix)             \\\n    SUPPORT_DEFINE_TEST_TEMPLATE_BUF1_BLK(      \\\n        copy,                                   \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        SUPPORT_COMPARE_INTERFACE)\n\nJTEST_ARM_COPY_TEST(f32);\nJTEST_ARM_COPY_TEST(q31);\nJTEST_ARM_COPY_TEST(q15);\nJTEST_ARM_COPY_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(copy_tests)\n{\n    JTEST_TEST_CALL(arm_copy_f32_test);\n    JTEST_TEST_CALL(arm_copy_q31_test);\n    JTEST_TEST_CALL(arm_copy_q15_test);\n    JTEST_TEST_CALL(arm_copy_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/fill_tests.c",
    "content": "#include \"jtest.h\"\n#include \"support_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"support_templates.h\"\n#include \"type_abbrev.h\"\n\n#define JTEST_ARM_FILL_TEST(suffix)             \\\n    SUPPORT_DEFINE_TEST_TEMPLATE_ELT1_BLK(      \\\n        fill,                                   \\\n        suffix,                                 \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        TYPE_FROM_ABBREV(suffix),               \\\n        SUPPORT_COMPARE_INTERFACE)\n\nJTEST_ARM_FILL_TEST(f32);\nJTEST_ARM_FILL_TEST(q31);\nJTEST_ARM_FILL_TEST(q15);\nJTEST_ARM_FILL_TEST(q7);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(fill_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_fill_f32_test);\n    JTEST_TEST_CALL(arm_fill_q31_test);\n    JTEST_TEST_CALL(arm_fill_q15_test);\n    JTEST_TEST_CALL(arm_fill_q7_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_common_data.c",
    "content": "#include \"arm_math.h\"\n#include \"support_test_data.h\"\n\n#define MAX_INPUT_ELEMENTS 32\n#define BIGGEST_INPUT_TYPE float32_t\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(BIGGEST_INPUT_TYPE,\n                support_output_fut,\n                MAX_INPUT_ELEMENTS,\n                CURLY(0));\n\nARR_DESC_DEFINE(BIGGEST_INPUT_TYPE,\n                support_output_ref,\n                MAX_INPUT_ELEMENTS,\n                CURLY(0));\n\n/*--------------------------------------------------------------------------------*/\n/* Block Sizes */\n/*--------------------------------------------------------------------------------*/\n\n/* \n  To change test parameter values add/remove values inside CURLY and update \n  the preceeding parameter to reflect the number of values inside CURLY. \n*/\n\nARR_DESC_DEFINE(uint32_t,\n                support_block_sizes,\n                4,\n                CURLY( 2, 7, 15, 32));\n\n/*--------------------------------------------------------------------------------*/\n/* Numbers */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(uint32_t,\n                support_elts,\n                4,\n                CURLY( 0, 1, 0x80000000, 0x7fffffff));\n\n/*--------------------------------------------------------------------------------*/\n/* Test Data */\n/*--------------------------------------------------------------------------------*/\n\nARR_DESC_DEFINE(float32_t,\n                support_f_32,\n                32,\n                CURLY(\n                      0.24865986 , -0.13364227, -0.27233250 , -7.33488200,\n                      0.42190653 , 1.17435880 , -0.49824914 , 0.87883663,\n                      0.63066370 , 1.80275680 , -84.83916000, -2.06773800,\n                      7.63452500 , 1.01487610 , -0.65785825 , 1.78019030,\n                      -0.34160388, 0.68546050 , -1.81721590 , -0.10340453,\n                      -4.48600340, -1.69763480, -1.26022340 , -1.58457480,\n                      0.51993870 , 2.83526470 , -0.21502694 , -0.57690346,\n                      -0.22945681, 0.79509383 , 0.07275216  , -2.16279080\n                      ));\n\n/* Alias the 32 element array with wrappers that end sooner. */\nARR_DESC_DEFINE_SUBSET(support_f_15,\n                       support_f_32,\n                       15);\n\nARR_DESC_DEFINE_SUBSET(support_f_2,\n                       support_f_32,\n                       2);\n\nARR_DESC_DEFINE(float32_t,\n                support_zeros,\n                32,\n                CURLY(0));\n\n/* Aggregate all float datasets. */\nARR_DESC_DEFINE(ARR_DESC_t *,\n                support_f_all,\n                4,\n                CURLY(\n                      &support_zeros,\n                      &support_f_2,\n                      &support_f_15,\n                      &support_f_32\n                      ));\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"support_tests.h\"\n\nJTEST_DEFINE_GROUP(support_tests)\n{\n    JTEST_GROUP_CALL(copy_tests);\n    JTEST_GROUP_CALL(fill_tests);\n    JTEST_GROUP_CALL(x_to_y_tests);\n    return;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/x_to_y_tests.c",
    "content": "#include \"jtest.h\"\n#include \"support_test_data.h\"\n#include \"arr_desc.h\"\n#include \"arm_math.h\"           /* FUTs */\n#include \"ref.h\"                /* Reference Functions */\n#include \"test_templates.h\"\n#include \"support_templates.h\"\n#include \"type_abbrev.h\"\n\n/* Aliases to play nicely with templates. */\n#define arm_f32_to_q31 arm_float_to_q31\n#define arm_f32_to_q15 arm_float_to_q15\n#define arm_f32_to_q7  arm_float_to_q7\n#define arm_q31_to_f32 arm_q31_to_float\n#define arm_q15_to_f32 arm_q15_to_float\n#define arm_q7_to_f32  arm_q7_to_float\n#define ref_f32_to_q31 ref_float_to_q31\n#define ref_f32_to_q15 ref_float_to_q15\n#define ref_f32_to_q7  ref_float_to_q7\n#define ref_q31_to_f32 ref_q31_to_float\n#define ref_q15_to_f32 ref_q15_to_float\n#define ref_q7_to_f32  ref_q7_to_float\n\n#define JTEST_ARM_X_TO_Y_TEST(prefix, suffix)               \\\n    JTEST_DEFINE_TEST(arm_##prefix##_to_##suffix##_test,    \\\n                      arm_##prefix##_to_##suffix)           \\\n    {                                                       \\\n        TEST_TEMPLATE_BUF1_BLK(                             \\\n            support_f_all,                                  \\\n            support_block_sizes,                            \\\n            TYPE_FROM_ABBREV(prefix),                       \\\n            TYPE_FROM_ABBREV(suffix),                       \\\n            arm_##prefix##_to_##suffix,                     \\\n            ARM_x_to_y_INPUT_INTERFACE,                     \\\n            ref_##prefix##_to_##suffix,                     \\\n            REF_x_to_y_INPUT_INTERFACE,                     \\\n            SUPPORT_COMPARE_INTERFACE);                     \\\n    }\n\nJTEST_ARM_X_TO_Y_TEST(f32, q31);\nJTEST_ARM_X_TO_Y_TEST(f32, q15);\nJTEST_ARM_X_TO_Y_TEST(f32, q7);\n\nJTEST_ARM_X_TO_Y_TEST(q31, f32);\nJTEST_ARM_X_TO_Y_TEST(q31, q15);\nJTEST_ARM_X_TO_Y_TEST(q31, q7);\n\nJTEST_ARM_X_TO_Y_TEST(q15, f32);\nJTEST_ARM_X_TO_Y_TEST(q15, q31);\nJTEST_ARM_X_TO_Y_TEST(q15, q7);\n\nJTEST_ARM_X_TO_Y_TEST(q7, f32);\nJTEST_ARM_X_TO_Y_TEST(q7, q31);\nJTEST_ARM_X_TO_Y_TEST(q7, q15);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group. */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(x_to_y_tests)\n{\n    /*\n      To skip a test, comment it out.\n    */\n    JTEST_TEST_CALL(arm_f32_to_q31_test);\n    JTEST_TEST_CALL(arm_f32_to_q15_test);\n    JTEST_TEST_CALL(arm_f32_to_q7_test);\n\n    JTEST_TEST_CALL(arm_q31_to_f32_test);\n    JTEST_TEST_CALL(arm_q31_to_q15_test);\n    JTEST_TEST_CALL(arm_q31_to_q7_test);\n\n    JTEST_TEST_CALL(arm_q15_to_f32_test);\n    JTEST_TEST_CALL(arm_q15_to_q31_test);\n    JTEST_TEST_CALL(arm_q15_to_q7_test);\n\n    JTEST_TEST_CALL(arm_q7_to_f32_test);\n    JTEST_TEST_CALL(arm_q7_to_q31_test);\n    JTEST_TEST_CALL(arm_q7_to_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_family_tests.c",
    "content": "#include \"jtest.h\"\n#include \"ref.h\"\n#include \"arr_desc.h\"\n#include \"transform_templates.h\"\n#include \"transform_test_data.h\"\n#include \"type_abbrev.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Macros and Defines */\n/*--------------------------------------------------------------------------------*/\n\n#define CFFT_FN_NAME(fn_specifier, type_suffix) \\\n    arm_cfft_##fn_specifier##_##type_suffix     \\\n\n#define CFFT_TEST_NAME(fn_specifier, type_suffix, config_suffix)        \\\n    arm_cfft_##fn_specifier##_##type_suffix##_##config_suffix##_test    \\\n\n/*--------------------------------------------------------------------------------*/\n/* Function Aliases */\n/*--------------------------------------------------------------------------------*/\n\n/* These aliases allow expansions in the CFFT_FAMILY_DEFINE_TEST() template to\n   make sense */\n#define arm_cfft_mag_init_f32 arm_cfft_radix4_init_f32\n#define arm_cfft_mag_init_q31 arm_cfft_radix4_init_q31\n#define arm_cfft_mag_init_q15 arm_cfft_radix4_init_q15\n#define arm_cfft_mag_instance_f32 arm_cfft_radix4_instance_f32\n#define arm_cfft_mag_instance_q31 arm_cfft_radix4_instance_q31\n#define arm_cfft_mag_instance_q15 arm_cfft_radix4_instance_q15\n#define transform_mag_fftlens transform_radix4_fftlens\n\n/*--------------------------------------------------------------------------------*/\n/* Test Definition */\n/*--------------------------------------------------------------------------------*/\n\n/**\n *  Defines a test for the family of CFFT transforms.\n *\n *  The family of CFFT transforms includes:\n *\n *  - arm_cfft_radix4_xxx\n *  - arm_cfft_radix2_xxx\n *  - arm_cfft_mag_xxx\n *\n *  Where xxx can be f32, q31, or q15.\n *\n *  @param fn_specifier Allowed values: radix4, radix2, mag.\n *  @param type_suffix  Allowed values: f32, q31, q15.\n *\n *  @param config_suffix Used to differentiate test names based configuration\n *  (in this case whether the ifft_flag is set or not.)\n\n *  @param comparison_interface Macro name used to compare reference and fut\n *  outputs.\n *\n *  @param output_tpe The type of variable contained in the output\n *  (e.g. float32_t, uint32_t, etc).\n *\n *  @param ifft_flag Determines whether the arm_cfft_instance_xxx is configured\n *  for an inverse FFT.\n */\n#define CFFT_FAMILY_DEFINE_TEST(fn_specifier,                               \\\n                                type_suffix,                                \\\n                                config_suffix, /* Delineate between test configs*/ \\\n                                comparison_interface,                       \\\n                                output_type,                                \\\n                                ifft_flag)                                  \\\n    JTEST_DEFINE_TEST(CFFT_TEST_NAME(fn_specifier, type_suffix,             \\\n                                     config_suffix),                        \\\n                      CFFT_FN_NAME(fn_specifier, type_suffix))              \\\n    {                                                                       \\\n        arm_cfft_##fn_specifier##_instance_##type_suffix cfft_inst_fut;     \\\n        arm_cfft_##fn_specifier##_instance_##type_suffix cfft_inst_ref;     \\\n                                                                            \\\n        TEMPLATE_DO_ARR_DESC(                                               \\\n            fftlen_idx, uint16_t, fftlen, transform_##fn_specifier##_fftlens \\\n            ,                                                               \\\n                                                                            \\\n            /* Initialize the cfft instance */                              \\\n            arm_cfft_##fn_specifier##_init_##type_suffix(                   \\\n                &cfft_inst_fut, fftlen, ifft_flag, (uint8_t)1);             \\\n            arm_cfft_##fn_specifier##_init_##type_suffix(                   \\\n                &cfft_inst_ref, fftlen, ifft_flag, (uint8_t)1);             \\\n                                                                            \\\n            TRANSFORM_PREPARE_INPLACE_INPUTS(                               \\\n                transform_fft_##type_suffix##_inputs,                       \\\n                fftlen *                                                    \\\n                sizeof(TYPE_FROM_ABBREV(type_suffix)) *                     \\\n                2 /*complex_inputs*/);                                      \\\n                                                                            \\\n            /* Display parameter values */                                  \\\n            JTEST_DUMP_STRF(\"Block Size: %d\\n\"                              \\\n                            \"Inverse-transform flag: %d\\n\",                 \\\n                            (int)fftlen,                                    \\\n                            (int)ifft_flag);                                \\\n                                                                            \\\n            /* Display cycle count and run test */                          \\\n            JTEST_COUNT_CYCLES(                                             \\\n                arm_cfft_##fn_specifier##_##type_suffix(                    \\\n                    &cfft_inst_fut,                                         \\\n                    (void*) transform_fft_inplace_input_fut));              \\\n                                                                            \\\n            ref_cfft_##fn_specifier##_##type_suffix(                        \\\n                &cfft_inst_ref,                                             \\\n                (void *) transform_fft_inplace_input_ref);                  \\\n                                                                            \\\n            /* Test correctness */                                          \\\n            comparison_interface(                                           \\\n                fftlen,                                                     \\\n                output_type));                                              \\\n                                                                            \\\n        return JTEST_TEST_PASSED;                                           \\\n    }\n\n/**\n *  Bulk wrapper for all tests instantiated using #CFFT_FAMILY_DEFINE_TEST().\n *\n *  This macro allows several test definitions to share the same config_suffix\n *  and ifft_flag settings.\n */\n#define CFFT_FAMILY_DEFINE_ALL_TESTS(config_suffix, ifft_flag)      \\\n    /* Radix2 tests*/                                               \\\n    CFFT_FAMILY_DEFINE_TEST(radix2, q31, config_suffix,             \\\n                            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE,  \\\n                            TYPE_FROM_ABBREV(q31),                  \\\n                            ifft_flag);                             \\\n    CFFT_FAMILY_DEFINE_TEST(radix2, q15, config_suffix,             \\\n                            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE,  \\\n                            TYPE_FROM_ABBREV(q15),                  \\\n                            ifft_flag);                             \\\n    /* Radix4 tests*/                                               \\\n    CFFT_FAMILY_DEFINE_TEST(radix4, q31, config_suffix,             \\\n                            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE,  \\\n                            TYPE_FROM_ABBREV(q31),                  \\\n                            ifft_flag);                             \\\n    CFFT_FAMILY_DEFINE_TEST(radix4, q15, config_suffix,             \\\n                            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE,  \\\n                            TYPE_FROM_ABBREV(q15),                  \\\n                            ifft_flag)\n    /* /\\* Mag tests*\\/                                                  \\ */\n    /* CFFT_FAMILY_DEFINE_TEST(mag, f32, config_suffix,                \\ */\n    /*                         TRANSFORM_SNR_COMPARE_INTERFACE,        \\ */\n    /*                         TYPE_FROM_ABBREV(f32),                  \\ */\n    /*                         ifft_flag);                             \\ */\n    /* CFFT_FAMILY_DEFINE_TEST(mag, q31, config_suffix,                \\ */\n    /*                         TRANSFORM_SNR_COMPARE_INTERFACE,        \\ */\n    /*                         TYPE_FROM_ABBREV(q31),                  \\ */\n    /*                         ifft_flag);                             \\ */\n    /* CFFT_FAMILY_DEFINE_TEST(mag, q15, config_suffix,                \\ */\n    /*                         TRANSFORM_SNR_COMPARE_INTERFACE,        \\ */\n    /*                         TYPE_FROM_ABBREV(q15),                  \\ */\n    /*                         ifft_flag) */\n\nCFFT_FAMILY_DEFINE_ALL_TESTS(forward, 0U);\nCFFT_FAMILY_DEFINE_ALL_TESTS(inverse, 1U);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cfft_family_tests)\n{\n    /* Forward FFT tests */\n    JTEST_TEST_CALL(arm_cfft_radix2_q31_forward_test);\n    JTEST_TEST_CALL(arm_cfft_radix2_q15_forward_test);\n    JTEST_TEST_CALL(arm_cfft_radix4_q31_forward_test);\n    JTEST_TEST_CALL(arm_cfft_radix4_q15_forward_test);\n\n    /* Inverse FFT Tests */\n    JTEST_TEST_CALL(arm_cfft_radix2_q31_inverse_test);\n    JTEST_TEST_CALL(arm_cfft_radix2_q15_inverse_test);\n    JTEST_TEST_CALL(arm_cfft_radix4_q31_inverse_test);\n    JTEST_TEST_CALL(arm_cfft_radix4_q15_inverse_test);\n\n    /* Magnitude tests removed from the DSP Library. Keeping them here in case\n       minds are changed. */\n    /* JTEST_TEST_CALL(arm_cfft_mag_f32_forward_test); */\n    /* JTEST_TEST_CALL(arm_cfft_mag_q31_forward_test); */\n    /* JTEST_TEST_CALL(arm_cfft_mag_q15_forward_test); */\n    /* JTEST_TEST_CALL(arm_cfft_mag_f32_inverse_test); */\n    /* JTEST_TEST_CALL(arm_cfft_mag_q31_inverse_test); */\n    /* JTEST_TEST_CALL(arm_cfft_mag_q15_inverse_test); */\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c",
    "content": "#include \"jtest.h\"\n#include \"ref.h\"\n#include \"arr_desc.h\"\n#include \"transform_templates.h\"\n#include \"transform_test_data.h\"\n\n#define CFFT_SNR_THRESHOLD 120\n\n/*\n  CFFT function test template. Arguments are: inverse-transform flag, function\n  suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)\n*/\n#define CFFT_TEST_BODY(ifft_flag, suffix, output_type)                                  \\\n    do                                                                                  \\\n    {                                                                                   \\\n        /* Go through all arm_cfft_instances */                                         \\\n        TEMPLATE_DO_ARR_DESC(                                                           \\\n            cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr,           \\\n            transform_cfft_##suffix##_structs                                           \\\n            ,                                                                           \\\n                                                                                        \\\n            TRANSFORM_PREPARE_INPLACE_INPUTS(                                           \\\n                transform_fft_##suffix##_inputs,                                        \\\n                cfft_inst_ptr->fftLen *                                                 \\\n                sizeof(output_type) *                                                   \\\n                2 /*complex_inputs*/);                                                  \\\n                                                                                        \\\n                /* Display parameter values */                                          \\\n                JTEST_DUMP_STRF(\"Block Size: %d\\n\"                                      \\\n                                \"Inverse-transform flag: %d\\n\",                         \\\n                                (int)cfft_inst_ptr->fftLen,                             \\\n                                (int)ifft_flag);                                        \\\n                                                                                        \\\n            /* Display cycle count and run test */                                      \\\n            JTEST_COUNT_CYCLES(                                                         \\\n                arm_cfft_##suffix(cfft_inst_ptr,                                        \\\n                             (void *) transform_fft_inplace_input_fut,                  \\\n                             ifft_flag,              /* IFFT Flag */                    \\\n                             1));            /* Bitreverse flag */                      \\\n            ref_cfft_##suffix(cfft_inst_ptr,                                            \\\n                         (void *) transform_fft_inplace_input_ref,                      \\\n                         ifft_flag,         /* IFFT Flag */                             \\\n                         1);        /* Bitreverse flag */                               \\\n                                                                                        \\\n            /* Test correctness */                                                      \\\n            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE(                                      \\\n                cfft_inst_ptr->fftLen,                                                  \\\n                output_type));                                                          \\\n                                                                                        \\\n        return JTEST_TEST_PASSED;                                                       \\\n    } while (0)\n\n\n/*\n  CFFT function with downshift test template. Arguments are: inverse-transform flag,\n  function suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)\n*/\n#define CFFT_DOWNSHIFT_INPUT_TEST_BODY(ifft_flag, suffix, output_type)                  \\\n    do                                                                                  \\\n    {                                                                                   \\\n        /* Go through all arm_cfft_instances */                                         \\\n        TEMPLATE_DO_ARR_DESC(                                                           \\\n            cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr,           \\\n            transform_cfft_##suffix##_structs                                           \\\n            ,                                                                           \\\n                                                                                        \\\n            TRANSFORM_PREPARE_INPLACE_INPUTS_DOWNSHIFT(                                 \\\n                transform_fft_##suffix##_inputs,                                        \\\n                cfft_inst_ptr->fftLen *                                                 \\\n                sizeof(output_type) *                                                   \\\n                2 /*complex_inputs*/, output_type);                                     \\\n                                                                                        \\\n            /* Display parameter values */                                              \\\n            JTEST_DUMP_STRF(\"Block Size: %d\\n\"                                          \\\n                            \"Inverse-transform flag: %d\\n\",                             \\\n                            (int)cfft_inst_ptr->fftLen,                                 \\\n                            (int)ifft_flag);                                            \\\n                                                                                        \\\n            /* Display cycle count and run test */                                      \\\n            JTEST_COUNT_CYCLES(                                                         \\\n                arm_cfft_##suffix(cfft_inst_ptr,                                        \\\n                             (void *) transform_fft_inplace_input_fut,                  \\\n                             ifft_flag,              /* IFFT Flag */                    \\\n                             1));            /* Bitreverse flag */                      \\\n            ref_cfft_##suffix(cfft_inst_ptr,                                            \\\n                         (void *) transform_fft_inplace_input_ref,                      \\\n                         ifft_flag,         /* IFFT Flag */                             \\\n                         1);        /* Bitreverse flag */                               \\\n                                                                                        \\\n            /* Test correctness */                                                      \\\n            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE(                                      \\\n                cfft_inst_ptr->fftLen,                                                  \\\n                output_type));                                                          \\\n                                                                                        \\\n        return JTEST_TEST_PASSED;                                                       \\\n    } while (0)\n\n\n/* Test declarations */\nJTEST_DEFINE_TEST(cfft_f32_test, cfft_f32)\n{\n    CFFT_TEST_BODY((uint8_t) 0, f32, float32_t);\n}\n\nJTEST_DEFINE_TEST(cfft_f32_ifft_test, cfft_f32)\n{\n    CFFT_TEST_BODY((uint8_t) 1, f32, float32_t);\n}\n\nJTEST_DEFINE_TEST(cfft_q31_test, cfft_q31)\n{\n    CFFT_TEST_BODY((uint8_t) 0, q31, q31_t);\n}\n\nJTEST_DEFINE_TEST(cfft_q31_ifft_test, cfft_q31)\n{\n    CFFT_TEST_BODY((uint8_t) 1, q31, q31_t);\n}\n\nJTEST_DEFINE_TEST(cfft_q15_test, cfft_q15)\n{\n    CFFT_TEST_BODY((uint8_t) 0, q15, q15_t);\n}\n\nJTEST_DEFINE_TEST(cfft_q15_ifft_test, cfft_q15)\n{\n    CFFT_TEST_BODY((uint8_t) 1, q15, q15_t);\n}\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(cfft_tests)\n{\n    JTEST_TEST_CALL(cfft_f32_test);\n    JTEST_TEST_CALL(cfft_f32_ifft_test);\n\n    JTEST_TEST_CALL(cfft_q31_test);\n    JTEST_TEST_CALL(cfft_q31_ifft_test);\n\n    JTEST_TEST_CALL(cfft_q15_test);\n    JTEST_TEST_CALL(cfft_q15_ifft_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/dct4_tests.c",
    "content": "#include \"jtest.h\"\n#include \"ref.h\"\n#include \"arm_math.h\"\n#include \"arr_desc.h\"\n#include \"transform_templates.h\"\n#include \"transform_test_data.h\"\n#include \"type_abbrev.h\"\n#include <math.h>               /* sqrtf() */\n\n/*--------------------------------------------------------------------------------*/\n/* Aliases to aid macro expansion */\n/*--------------------------------------------------------------------------------*/\n#define ref_sqrt_f32(x) sqrtf(x)\n\n/*--------------------------------------------------------------------------------*/\n/* Test Definitions */\n/*--------------------------------------------------------------------------------*/\n\n/*\nDCT function test template. Arguments are: function configuration suffix\n(q7/q15/q31/f32) and input type (q7_t/q15_t/q31_t/float32_t)\n*/\n#define DCT4_DEFINE_TEST(suffix, input_type)                            \\\n    JTEST_DEFINE_TEST(arm_dct4_##suffix##_test, arm_dct4_##suffix)      \\\n    {                                                                   \\\n        CONCAT(arm_dct4_instance_,suffix) dct4_inst_fut        = {0};   \\\n        CONCAT(arm_rfft_instance_,suffix) rfft_inst_fut        = {0};   \\\n        CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_fut = {0};   \\\n                                                                        \\\n        CONCAT(arm_dct4_instance_,suffix) dct4_inst_ref        = {0};   \\\n        CONCAT(arm_rfft_instance_,suffix) rfft_inst_ref        = {0};   \\\n        CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_ref = {0};   \\\n                                                                        \\\n        /* Go through all dct lengths */                                \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            fftlen_idx, uint16_t, fftlen, transform_dct_fftlens         \\\n            ,                                                           \\\n                                                                        \\\n            float32_t normalize_f32 =                                   \\\n                  ref_sqrt_f32((2.0f/(float32_t)fftlen));               \\\n            input_type normalize;                                       \\\n                                                                        \\\n            /* Calculate normalized DCT4 value for input_type. */       \\\n            TEST_CONVERT_FLOAT_TO(&normalize_f32, &normalize,           \\\n                                  1, input_type);                       \\\n                                                                        \\\n            /* Initialize the DCT4, RFFT, and CFFT instances */         \\\n            arm_dct4_init_##suffix(                                     \\\n                &dct4_inst_fut, &rfft_inst_fut, &cfft_inst_fut,         \\\n                fftlen,                                                 \\\n                fftlen/2,                                               \\\n                normalize);                                             \\\n                                                                        \\\n            arm_dct4_init_##suffix(                                     \\\n                &dct4_inst_ref, &rfft_inst_ref, &cfft_inst_ref,         \\\n                fftlen,                                                 \\\n                fftlen/2,                                               \\\n                normalize);                                             \\\n                                                                        \\\n             memset( transform_fft_input_fut,0,                         \\\n                     fftlen*sizeof(input_type));                        \\\n                                                                        \\\n            TRANSFORM_PREPARE_INPLACE_INPUTS(                           \\\n                transform_fft_##suffix##_inputs,                        \\\n                fftlen * sizeof(input_type));                           \\\n                                                                        \\\n            /* Display parameter values */                              \\\n            JTEST_DUMP_STRF(\"Block Size: %d\\n\",                         \\\n                         (int)fftlen);                                  \\\n                                                                        \\\n            /* Input provided as a scratch buffer. Inplace input is     \\\n             * actual input. Display cycle count and run test*/         \\\n            JTEST_COUNT_CYCLES(                                         \\\n                arm_dct4_##suffix(                                      \\\n                    &dct4_inst_fut,                                     \\\n                    (void *) transform_fft_input_fut,                   \\\n                    (void *) transform_fft_inplace_input_fut));         \\\n                                                                        \\\n             memset( transform_fft_input_ref,0,                         \\\n                     fftlen*sizeof(input_type));                        \\\n                                                                        \\\n            /* Input provided as a scratch buffer. Inplace input is */  \\\n            /* actual input. */                                         \\\n            ref_dct4_##suffix(                                          \\\n                &dct4_inst_ref,                                         \\\n                (void *) transform_fft_input_ref,                       \\\n                (void *) transform_fft_inplace_input_ref);              \\\n                                                                        \\\n            /* Test correctness */                                      \\\n            DCT_TRANSFORM_SNR_COMPARE_INTERFACE(                        \\\n                fftlen,                                                 \\\n                input_type));                                           \\\n                                                                        \\\n        return JTEST_TEST_PASSED;                                       \\\n    }\n\n/*\n  DCT function test template for fixed point data. Arguments are: function\n  suffix (q7/q15/q31/f32), input type (q7_t/q15_t/q31_t/float32_t) and prefix\n  (dct_4)\n*/\n#define DCT4_FIXED_POINT_DEFINE_TEST(suffix, input_type, prefix)           \\\n    JTEST_DEFINE_TEST(arm_dct4_##suffix##_test, arm_dct4_##suffix)         \\\n    {                                                                      \\\n        CONCAT(arm_dct4_instance_,suffix) dct4_inst_fut        = {0};      \\\n        CONCAT(arm_rfft_instance_,suffix) rfft_inst_fut        = {0};      \\\n        CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_fut = {0};      \\\n                                                                           \\\n        CONCAT(arm_dct4_instance_,suffix) dct4_inst_ref        = {0};      \\\n        CONCAT(arm_rfft_instance_,suffix) rfft_inst_ref        = {0};      \\\n        CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_ref = {0};      \\\n                                                                           \\\n        TEMPLATE_DO_ARR_DESC(                                              \\\n            fftlen_idx, uint16_t, fftlen, transform_dct_fftlens            \\\n            ,                                                              \\\n            uint32_t i;                                                    \\\n            float32_t normalize_f32 =                                      \\\n                  ref_sqrt_f32((2.0f/(float32_t)fftlen));                  \\\n            input_type normalize;                                          \\\n                                                                           \\\n            /* Calculate normalized DCT4 value for input_type. */          \\\n            TEST_CONVERT_FLOAT_TO(&normalize_f32, &normalize,              \\\n                                  1, input_type);                          \\\n                                                                           \\\n            /* Initialize the DCT4, RFFT, and CFFT instances */            \\\n            arm_dct4_init_##suffix(                                        \\\n                &dct4_inst_fut, &rfft_inst_fut, &cfft_inst_fut,            \\\n                fftlen,                                                    \\\n                fftlen/2,                                                  \\\n                normalize);                                                \\\n                                                                           \\\n            arm_dct4_init_##suffix(                                        \\\n                &dct4_inst_ref, &rfft_inst_ref, &cfft_inst_ref,            \\\n                fftlen,                                                    \\\n                fftlen/2,                                                  \\\n                normalize);                                                \\\n                                                                           \\\n             /* Input samples need to be downscaled by 1 bit to            \\\n              * avoid saturations in the Q31 DCT process,                  \\\n              * as the conversion from DCT2 to DCT4 involves               \\\n              * one subtraction.                                           \\\n              */                                                           \\\n             for(i=0; i < fftlen; i++)                                     \\\n             {                                                             \\\n               ((input_type*)transform_fft_inplace_input_fut)[i] =         \\\n                        prefix##transform_fft_##suffix##_inputs[i] >> 1;   \\\n               ((input_type*)transform_fft_inplace_input_ref)[i] =         \\\n                        prefix##transform_fft_##suffix##_inputs[i] >> 1;   \\\n             }                                                             \\\n                                                                           \\\n             memset( transform_fft_input_fut,0,                            \\\n                     fftlen*sizeof(input_type));                           \\\n                                                                           \\\n             /* Display test parameter values */                           \\\n            JTEST_DUMP_STRF(\"Block Size: %d\\n\",                            \\\n                         (int)fftlen);                                     \\\n                                                                           \\\n            /* Input provided as a scratch buffer. Inplace input is        \\\n             * actual input. */                                            \\\n            JTEST_COUNT_CYCLES(                                            \\\n                arm_dct4_##suffix(                                         \\\n                    &dct4_inst_fut,                                        \\\n                    (void *) transform_fft_input_fut,                      \\\n                    (void *) transform_fft_inplace_input_fut));            \\\n                                                                           \\\n             memset( transform_fft_input_ref,0,                            \\\n                     fftlen*sizeof(input_type));                           \\\n                                                                           \\\n            /* Input provided as a scratch buffer. Inplace input is */     \\\n            /* actual input. */                                            \\\n            ref_dct4_##suffix(                                             \\\n                &dct4_inst_ref,                                            \\\n                (void *) transform_fft_input_ref,                          \\\n                (void *) transform_fft_inplace_input_ref);                 \\\n                                                                           \\\n            /* Test correctness */                                         \\\n            DCT_TRANSFORM_SNR_COMPARE_INTERFACE(                           \\\n                fftlen,                                                    \\\n                input_type));                                              \\\n                                                                           \\\n        return JTEST_TEST_PASSED;                                          \\\n    }\n\nDCT4_DEFINE_TEST(f32, float32_t);\nDCT4_FIXED_POINT_DEFINE_TEST(q31, q31_t,);\nDCT4_FIXED_POINT_DEFINE_TEST(q15, q15_t, dct4_);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(dct4_tests)\n{\n    JTEST_TEST_CALL(arm_dct4_f32_test);\n    JTEST_TEST_CALL(arm_dct4_q31_test);\n    JTEST_TEST_CALL(arm_dct4_q15_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_fast_tests.c",
    "content": "#include \"jtest.h\"\n#include \"ref.h\"\n#include \"arr_desc.h\"\n#include \"transform_templates.h\"\n#include \"transform_test_data.h\"\n#include \"type_abbrev.h\"\n\n/*\nFFT fast function test template. Arguments are: function configuration suffix\n(q7/q15/q31/f32) and inverse-transform flag\n*/\n#define RFFT_FAST_DEFINE_TEST(config_suffix, ifft_flag)                 \\\n    JTEST_DEFINE_TEST(arm_rfft_fast_f32_##config_suffix##_test,         \\\n                      arm_fft_f32)                                      \\\n    {                                                                   \\\n        arm_rfft_fast_instance_f32 rfft_inst_fut = {{0}, 0, 0};         \\\n        arm_rfft_fast_instance_f32 rfft_inst_ref = {{0}, 0, 0};         \\\n                                                                        \\\n        /* Go through all FFT lengths */                                \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            fftlen_idx, uint16_t, fftlen, transform_rfft_fast_fftlens   \\\n            ,                                                           \\\n                                                                        \\\n            /* Initialize the RFFT and CFFT Instances */                \\\n            arm_rfft_fast_init_f32(                                     \\\n                &rfft_inst_fut, fftlen);                                \\\n                                                                        \\\n            arm_rfft_fast_init_f32(                                     \\\n                &rfft_inst_ref, fftlen);                                \\\n                                                                        \\\n            TRANSFORM_COPY_INPUTS(                                      \\\n                transform_fft_f32_inputs,                               \\\n                fftlen *                                                \\\n                sizeof(float32_t));                                     \\\n                                                                        \\\n            /* Display parameter values */                              \\\n            JTEST_DUMP_STRF(\"Block Size: %d\\n\"                          \\\n                            \"Inverse-transform flag: %d\\n\",             \\\n                         (int)fftlen,                                   \\\n                         (int)ifft_flag);                               \\\n                                                                        \\\n            /* Display cycle count and run test */                      \\\n            JTEST_COUNT_CYCLES(                                         \\\n                arm_rfft_fast_f32(                                      \\\n                    &rfft_inst_fut,                                     \\\n                    (void *) transform_fft_input_fut,                   \\\n                    (void *) transform_fft_output_fut,                  \\\n                    ifft_flag));                                        \\\n                                                                        \\\n            ref_rfft_fast_f32(                                          \\\n                &rfft_inst_ref,                                         \\\n                (void *) transform_fft_input_ref,                       \\\n                (void *) transform_fft_output_ref,                      \\\n                ifft_flag);                                             \\\n                                                                        \\\n            /* Test correctness */                                      \\\n            TRANSFORM_SNR_COMPARE_INTERFACE(                            \\\n                fftlen,                                                 \\\n                float32_t));                                            \\\n                                                                        \\\n        return JTEST_TEST_PASSED;                                       \\\n    }\n\nRFFT_FAST_DEFINE_TEST(forward, 0U);\nRFFT_FAST_DEFINE_TEST(inverse, 1U);\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(rfft_fast_tests)\n{\n    JTEST_TEST_CALL(arm_rfft_fast_f32_forward_test);\n    JTEST_TEST_CALL(arm_rfft_fast_f32_inverse_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c",
    "content": "#include \"jtest.h\"\n#include \"ref.h\"\n#include \"arr_desc.h\"\n#include \"transform_templates.h\"\n#include \"transform_test_data.h\"\n#include \"type_abbrev.h\"\n\n/*\n  FFT function test template. Arguments are: function suffix (q7/q15/q31/f32)\n  function configuration suffix (same as function suffix), inverse-transform flag,\n  input and output type (both q7_t/q15_t/q31_t/float32_t)\n*/\n#define RFFT_DEFINE_TEST(suffix, config_suffix,                         \\\n                         ifft_flag, input_type, output_type)            \\\n    JTEST_DEFINE_TEST(arm_rfft_##suffix##_##config_suffix##_test,       \\\n                      arm_rfft_##suffix)                                \\\n    {                                                                   \\\n        CONCAT(arm_rfft_instance_, suffix) rfft_inst_fut = {0};         \\\n        CONCAT(arm_rfft_instance_, suffix) rfft_inst_ref = {0};         \\\n                                                                        \\\n        /* Go through all arm_rfft lengths */                           \\\n        TEMPLATE_DO_ARR_DESC(                                           \\\n            fftlen_idx, uint16_t, fftlen, transform_rfft_fftlens        \\\n            ,                                                           \\\n                                                                        \\\n            /* Initialize the RFFT and CFFT Instances */                \\\n            arm_rfft_init_##suffix(                                     \\\n                &rfft_inst_fut,                                         \\\n                (uint32_t) fftlen, ifft_flag, 1U);                      \\\n                                                                        \\\n            arm_rfft_init_##suffix(                                     \\\n                &rfft_inst_ref,                                         \\\n                (uint32_t) fftlen, ifft_flag, 1U);                      \\\n                                                                        \\\n            if (ifft_flag)                                               \\\n            {                                                           \\\n               TRANSFORM_PREPARE_INVERSE_INPUTS(                        \\\n                   transform_fft_##suffix##_inputs,                     \\\n                   fftlen, input_type,                                  \\\n                   fftlen *                                             \\\n                   sizeof(input_type));                                 \\\n            }                                                           \\\n            else                                                        \\\n            {                                                           \\\n               TRANSFORM_COPY_INPUTS(                                   \\\n                   transform_fft_##suffix##_inputs,                     \\\n                   fftlen *                                             \\\n                   sizeof(input_type));                                 \\\n            }                                                           \\\n                                                                        \\\n            /* Display parameter values */                              \\\n            JTEST_DUMP_STRF(\"Block Size: %d\\n\"                          \\\n                            \"Inverse-transform flag: %d\\n\",             \\\n                         (int)fftlen,                                   \\\n                         (int)ifft_flag);                               \\\n                                                                        \\\n            /* Display cycle count and run test */                      \\\n            JTEST_COUNT_CYCLES(                                         \\\n                arm_rfft_##suffix(                                      \\\n                    &rfft_inst_fut,                                     \\\n                    (void *) transform_fft_input_fut,                   \\\n                    (void *) transform_fft_output_fut));                \\\n                                                                        \\\n            ref_rfft_##suffix(                                          \\\n                &rfft_inst_ref,                                         \\\n                (void *) transform_fft_input_ref,                       \\\n                (void *) transform_fft_output_ref);                     \\\n                                                                        \\\n            /* Test correctness */                                      \\\n            TRANSFORM_SNR_COMPARE_INTERFACE(                            \\\n                fftlen,                                                 \\\n                output_type));                                          \\\n                                                                        \\\n            return JTEST_TEST_PASSED;                                   \\\n    }\n\nRFFT_DEFINE_TEST(q31, forward, 0U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31));\nRFFT_DEFINE_TEST(q15, forward, 0U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15));\n//RFFT_DEFINE_TEST(f32, inverse, 1U, TYPE_FROM_ABBREV(f32), TYPE_FROM_ABBREV(f32));\nRFFT_DEFINE_TEST(q31, inverse, 1U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31));\nRFFT_DEFINE_TEST(q15, inverse, 1U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15));\n\n/*--------------------------------------------------------------------------------*/\n/* Collect all tests in a group */\n/*--------------------------------------------------------------------------------*/\n\nJTEST_DEFINE_GROUP(rfft_tests)\n{\n    JTEST_TEST_CALL(arm_rfft_q31_forward_test);\n    JTEST_TEST_CALL(arm_rfft_q15_forward_test);\n    //JTEST_TEST_CALL(arm_rfft_f32_inverse_test);\n    JTEST_TEST_CALL(arm_rfft_q31_inverse_test);\n    JTEST_TEST_CALL(arm_rfft_q15_inverse_test);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_test_group.c",
    "content": "#include \"jtest.h\"\n#include \"transform_tests.h\"\n\nJTEST_DEFINE_GROUP(transform_tests)\n{\n    JTEST_GROUP_CALL(cfft_tests);\n    JTEST_GROUP_CALL(cfft_family_tests);\n    JTEST_GROUP_CALL(rfft_tests);\n    JTEST_GROUP_CALL(rfft_fast_tests);\n    JTEST_GROUP_CALL(dct4_tests);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_tests_common_data.c",
    "content": "#include \"transform_test_data.h\"\n#include \"arm_const_structs.h\"\n\n/*--------------------------------------------------------------------------------*/\n/* Input/Output Buffers */\n/*--------------------------------------------------------------------------------*/\n\nfloat32_t transform_fft_output_fut[TRANSFORM_MAX_FFT_LEN * 2] = {0};\nfloat32_t transform_fft_output_ref[TRANSFORM_MAX_FFT_LEN * 2] = {0};\nfloat32_t transform_fft_input_fut[TRANSFORM_MAX_FFT_LEN * 2] = {0};\nfloat32_t transform_fft_input_ref[TRANSFORM_MAX_FFT_LEN * 2] = {0};\nfloat32_t transform_fft_output_f32_fut[TRANSFORM_MAX_FFT_LEN * 2] = {0};\nfloat32_t transform_fft_output_f32_ref[TRANSFORM_MAX_FFT_LEN * 2] = {0};\n\n/* Some of the transform function modify their inputs in-place, so that they\n * become the outputs. */\nfloat32_t * transform_fft_inplace_input_fut = transform_fft_output_fut;\nfloat32_t * transform_fft_inplace_input_ref = transform_fft_output_ref;\n\nq31_t transform_fft_q31_inputs[TRANSFORM_MAX_FFT_LEN * 2] =\n{\n    0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB,\n    0x41F6F6A, 0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8,\n    0x3D060524, 0x93D5E570, 0x97D7791D, 0xFFE0C38C, 0x26749841,\n    0xC0A6EE54, 0x218EC386, 0x39FF3726, 0x8DC1F7CA, 0x702F2CF5,\n    0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49, 0x3805DE7E,\n    0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF,\n    0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24,\n    0x6CE00F5C, 0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530,\n    0x73394127, 0x773FA6F4, 0x9805A980, 0x838DE587, 0x9CF597F4,\n    0xA2AD1691, 0xFA81A473, 0x7CDC7D7F, 0x4A5190D0, 0xED895BB9,\n    0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516, 0x2501A3E1,\n    0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E,\n    0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4,\n    0x24DB166C, 0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6,\n    0x419E0C75, 0x46BE9F38, 0x2432B9B2, 0x758D83E0, 0xDCE12926,\n    0x3F57CB74, 0x1F4458E2, 0xF1DD639, 0x83A1FB49, 0x173AFC76,\n    0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549, 0x5C314C9,\n    0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715,\n    0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F,\n    0x20BFDEB4, 0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE,\n    0x9858E3E1, 0xA36A9C4E, 0x88BD21F9, 0xAACF7A68, 0x773665E5,\n    0xCEDFDF66, 0x617A9610, 0x524FC968, 0xC2D086CD, 0x5F008079,\n    0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608, 0xA33A2EE5,\n    0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5,\n    0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4,\n    0xB358C0D8, 0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF,\n    0x33035831, 0x13D93987, 0xFC542094, 0x845F317E, 0xDDC4BF8B,\n    0x1379E50C, 0x5C20193F, 0xFDD58298, 0x9D482B82, 0x4A6BE062,\n    0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882, 0xE6F8EA35,\n    0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD,\n    0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677,\n    0xFB2E04F2, 0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8,\n    0x1A8C7F28, 0x861E452E, 0x932D3F78, 0x7652D852, 0x73357BBA,\n    0xEBBB0A58, 0x62536AFA, 0x3F6B65EF, 0x6DC57B58, 0x9EB798CE,\n    0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302, 0xA9FD3E40,\n    0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3,\n    0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896,\n    0x6443A0FE, 0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820,\n    0xF18F0810, 0xE1548689, 0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B,\n    0xEA0C1BE0, 0xA1B785DB, 0x7086465D, 0x1CC10929, 0x1E1D716E,\n    0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4, 0x441F1E8B,\n    0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137,\n    0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615,\n    0x92593380, 0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7,\n    0x10E916B6, 0xE3BCFA68, 0x2ACB80BB, 0xE51C5590, 0x994714B5,\n    0xF30984EE, 0x59BBE1B4, 0xB4867DBC, 0xB91C706C, 0xBC16C218,\n    0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872, 0x4B167FD4,\n    0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55,\n    0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A,\n    0x9D2C662A, 0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C,\n    0x20306EDB, 0xE381AAE7, 0xA55DA748, 0x9B8B617B, 0x3E036FAD,\n    0x84E4C4A7, 0xD5A3F517, 0x669BA988, 0x98FDDE8C, 0x67BD85CE,\n    0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF, 0x205DB5C,\n    0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC,\n    0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693,\n    0xC42D12C0, 0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC,\n    0x8D874532, 0x5F5C9DD0, 0x5D167858, 0x8559FEA2, 0x9D821476,\n    0xD9654ED2, 0x594C0DC7, 0x1A87B506, 0x3F693200, 0x7A651AB5,\n    0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0, 0xB088C72F,\n    0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB,\n    0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D,\n    0x32581A06, 0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15,\n    0xBC79A9BC, 0xB7175917, 0x354E381C, 0x762AADD7, 0xF643DAC1,\n    0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4, 0xD7694875, 0x92D30822,\n    0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7, 0x58CE268,\n    0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1,\n    0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB,\n    0x8FF5534, 0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7,\n    0x419545EB, 0x993F7880, 0xAB246B20, 0x408AABC4, 0xCBF6EA49,\n    0xC0894C55, 0x4CAA6398, 0xA47856E9, 0xAF2AE47D, 0x22F55D33,\n    0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8, 0x9A77D48,\n    0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A,\n    0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071,\n    0x7F9930D4, 0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A,\n    0x144B2C12, 0x98E425C7, 0xBAA4B373, 0x18F0D03C, 0x99462AC0,\n    0xD8B4D2EF, 0x72473895, 0xA6BF5435, 0xEDAD53B, 0xE0912FA6,\n    0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929, 0xB89962F9,\n    0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0,\n    0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841,\n    0x73A60174, 0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095,\n    0x2B370837, 0x83DF6CE3, 0xDD08EEFA, 0x3F52A7C2, 0x191B4785,\n    0x60843D82, 0xB0DE11F1, 0x105EA26C, 0x6E1C7AA2, 0x47AADD14,\n    0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC, 0x744206A,\n    0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9,\n    0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F,\n    0x2E53E6C1, 0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5,\n    0x119725CC, 0x5406D347, 0x1B6FFAF1, 0xECCF71F1, 0x981117F2,\n    0x7167CA76, 0x74F4B880, 0x77A55F47, 0x59EADB62, 0x4A331D95,\n    0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1, 0x60D47AD5,\n    0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3,\n    0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E,\n    0x31109C58, 0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF,\n    0xBAF8D31E, 0xA4B31611, 0xED37F331, 0x7A832A22, 0xA22591C7,\n    0x722D1F89, 0x3B19CF18, 0x261B8A4D, 0xC3F6F6DB, 0xCF8CED61,\n    0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4, 0x3674E663,\n    0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD,\n    0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91,\n    0x4BF0C248, 0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26,\n    0x6C3B7B71, 0xD744B3ED, 0xFA25D2F6, 0x4CDE642D, 0xD65B8142,\n    0xA6F9207F, 0xE7A207BE, 0xDB506684, 0x44DA4780, 0x9175EA0C,\n    0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2, 0x5423D9C8,\n    0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1,\n    0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5,\n    0x1672BA91, 0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4,\n    0x32AFD40C, 0x99A5FB3B, 0xDD1D73A3, 0xA342CB3E, 0xA78445F5,\n    0x53979C3B, 0x427D7943, 0x5221B58C, 0xA6CE9A5E, 0xFB50ECA4,\n    0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04, 0xFBB65E0C,\n    0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920,\n    0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641,\n    0x4D6B1760, 0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF,\n    0x4E5F9493, 0x4C215DA5, 0x33A052B, 0x1A4D80C2, 0x40AEEBCA,\n    0x390D106B, 0xE9E8E018, 0x5AF3D6CF, 0xE35E1D4, 0xC4FB1C6,\n    0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6, 0x2227567D,\n    0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6,\n    0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1,\n    0xC9D06CBC, 0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47,\n    0x9D4804EA, 0x57DD9E67, 0xF89C7895, 0xF5336111, 0x25C122C8,\n    0x62742114, 0xCFBF6D26, 0xBF9F6482, 0xE6F02CD9, 0x11083202,\n    0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1, 0x3BF4DC25,\n    0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129,\n    0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA,\n    0x31C5A0AF, 0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98,\n    0x82C34882, 0x5D041F11, 0x8C613C57, 0xD398CFD1, 0x426F38AD,\n    0x5599AB1D, 0xFAFA078D, 0xAB25B413, 0xD94B32CF, 0xB288FE38,\n    0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D, 0x2174EBBE,\n    0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6,\n    0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02,\n    0xC20D47A4, 0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4,\n    0xC58612F4, 0xA2827F6F, 0xC49DCDBA, 0x679B7362, 0x4E495845,\n    0xCFD2F0D1, 0x395E76A0, 0x375A655E, 0x92E2058F, 0x73F9F0CA,\n    0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B, 0xA219E2E8,\n    0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF,\n    0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40,\n    0x157F6DDF, 0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58,\n    0xB2945F75, 0x4FA23A0E, 0x836EB8C0, 0xB3B18FD, 0x86114337,\n    0x24668ACB, 0x99BB82F0, 0x924C8A47, 0xBA959701, 0x81155ABF,\n    0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7, 0x7FC2802D,\n    0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719,\n    0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD,\n    0xEBA775AE, 0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D,\n    0xBBD34AB7, 0x2F85B12A, 0x16C5C2AD, 0x3990985D, 0x88DF3351,\n    0x82811AA5, 0x6D351F41, 0x4066A69D, 0x86B660BF, 0x6EDB4768,\n    0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687, 0x947CC9C9,\n    0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB,\n    0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B,\n    0xB7629C93, 0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66,\n    0xEC71B78C, 0xEAF4BB3A, 0x7C16225E, 0x668F337, 0xCBEE1608,\n    0x6D5B5552, 0x345DC590, 0x681209CC, 0x7B24A819, 0xD08A1416,\n    0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678, 0x20EECA0,\n    0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D,\n    0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960,\n    0x7CDF59F3, 0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110,\n    0xB8FCF3E3, 0xDEA059B2, 0x8229B6EA, 0x316486F6, 0x43919185,\n    0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9, 0x5CD41244, 0x2C9F0A7B,\n    0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0, 0xF105C20D,\n    0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763,\n    0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53,\n    0x2D2A85F6, 0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B,\n    0x9FC5AC5F, 0x11AE5DD7, 0xA0B9A5A9, 0xFC648AF4, 0x740009AC,\n    0xED0E0321, 0xB8E6A61, 0x8910C544, 0xC74F26C8, 0x9525CCF3,\n    0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D, 0xE1976DD4,\n    0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1,\n    0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB,\n    0xF5288568, 0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A,\n    0x1BC03B9, 0xB6BC3061, 0xBF30596E, 0xBE2AD27B, 0x8AC04220,\n    0x641979A3, 0x9ECCBB89, 0xA144FBC1, 0x4E8FAE26, 0x8C5A9D90,\n    0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D, 0xCEE81CDF,\n    0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA,\n    0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38,\n    0x2E77F2D, 0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017,\n    0x2D6B69A7, 0xFEDB63F9, 0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8,\n    0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6, 0xED193443, 0x7615EF1B,\n    0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022, 0x556E825C,\n    0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF,\n    0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC,\n    0x1E6A1101, 0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599,\n    0x54EB4809, 0x7839BE6D, 0xD50017DD, 0x39B1A0E1, 0x288D52D3,\n    0x2D52668C, 0x20D22A68, 0x4E1207D1, 0x3FCC0EFE, 0x47F3FE64,\n    0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8, 0x6BEAA655,\n    0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9,\n    0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B,\n    0x4DCD4EDB, 0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6,\n    0x502F41B0, 0x3616D3F1, 0x2E5B8E31, 0x2026EB19, 0x57E783D7,\n    0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48,\n    0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED,\n    0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F,\n    0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB,\n    0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94,\n    0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11,\n    0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x73D63FED, 0xE36E9F5E,\n    0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1, 0xCD476E86,\n    0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7,\n    0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78,\n    0xCC4BE4F6, 0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2,\n    0x55A8F5EC, 0xE81A9A75, 0x30A67E1B, 0x4A4A7D0C, 0x20F7F993,\n    0x1891805, 0x738976AD, 0xD426E7D6, 0x3C5CEEBF, 0x4499187F,\n    0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456, 0x421BCF29,\n    0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE,\n    0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46,\n    0x5D146234, 0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA,\n    0xB65530CC, 0x2DFAC48C, 0x1663D16F, 0x59B80AA, 0x950274EA,\n    0x92532D4A, 0x3CEF802D, 0x492FBDA5, 0xA63A2574, 0xEF8005C2,\n    0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646, 0xD2598516,\n    0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75,\n    0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F, 0xECDD35CC,\n    0xDDC1EE0E, 0xC4848865, 0x925826BD, 0x4078BE39, 0x68A8561A,\n    0x323045DC, 0xA933B37F, 0xBA2AEE2E, 0x4F24F65D, 0x349EE246,\n    0xF97B9D0E, 0x46DC5759, 0x4529F425, 0x80D17B42, 0x8E16F709,\n    0x1B42206A, 0x4934A526, 0x391BB6DE, 0xB52EF45C, 0x26C30290,\n    0xCBA23CAA, 0xA501A8C3, 0xD922C4F8, 0xE8824E53, 0x6F4255DC,\n    0x5960B544, 0x58BC69D6, 0xCA936323, 0xFDDF053C, 0xC2E002D6,\n    0x7D750755, 0x8A3F9CD1, 0x35F8F6F8, 0xFB7BD154, 0x65CFF94F,\n    0x390A58DD, 0xD97C4093, 0x501CA2A3, 0x8EA5DEBC, 0xCA93461F,\n    0xE02D984C, 0x126F8517, 0x39FDD887, 0x46241AE9, 0x777E854D,\n    0xE2B36349, 0x58E3FA9F, 0x971DEF1E, 0x8E156228, 0xC0E14E9,\n    0xA9A01BE6, 0xB318C990, 0x971680D6, 0xA1F359CE, 0x487E23F4,\n    0x7DE465B0, 0x4E4C905E, 0x2A652959, 0x116FF167, 0x5C74AAB9,\n    0x4FEFC920, 0x28DF4EB8, 0x29EBF45A, 0x1E350CF6, 0x7134F224,\n    0x22CCF1B6, 0x3890ACCD, 0x9BC304F0, 0x7A37B14E, 0xF3724F9C,\n    0xDAC493BE, 0x504692EB, 0x82A56D75, 0x42BC73F0, 0xADA92177,\n    0x2D9D9FD2, 0x41D874F, 0xEFCFD8FE, 0x8E83A5A2, 0xB84AF0DA,\n    0x65F9B035, 0x6DF4EEE0, 0x7D403714, 0x1CCB8B3A, 0x25B30F14,\n    0x5384B044, 0xD21FB429, 0x2C407A2, 0x88622917, 0x92D49C25,\n    0x845AA406, 0x532D7675, 0xC0B7713D, 0x30E6933B, 0xD270DE3B,\n    0x78771A87, 0x1949A28, 0xAEC00040, 0x10A092F4, 0xBD9D5066,\n    0xDE166CB7, 0xE8ECE4D3, 0x867417C9, 0xCF0657E4, 0xD7D550F7,\n    0xCD472B6D, 0x8CD0F002, 0xD7D47B7C, 0xA2E5475F, 0x2B66B40,\n    0x397A7C9F, 0x6C4BC024, 0x9FDA402, 0xD981917E, 0xA3A6C8E,\n    0xC9A42042, 0xCF0D1D5B, 0x1A96C11B, 0x9271030B, 0x4BD5D13C,\n    0xCDA08C03, 0x1E4B3256, 0xDBB263E, 0x94B1E758, 0x5CF0232F,\n    0xC76F252E, 0x27FF7F55, 0xA55DC287, 0x72886B75, 0x38AA73C2,\n    0xA5759CFB, 0xF0A75C8C, 0x7059CBE3, 0x6519FBE2, 0x8C3B4162,\n    0x5A19A4DE, 0x9D93E753, 0xA9EDF8B5, 0xD68126CD, 0xEA6A7399,\n    0xA73005B4, 0x45BC5168, 0xABD166BA, 0x4D0CC0DF, 0xE1376FF9,\n    0x393FB309, 0xE995744E, 0xD5EF71BE, 0x66C2BF35, 0x88D62A85,\n    0x14121E08, 0x7006CE98, 0x7F0A7076, 0x7DB9C751, 0xDC7056CD,\n    0xC1517CD, 0x65BCE88, 0x1B0F1E71, 0x54C2DA11, 0x101BFDD8,\n    0x28096AAD, 0xC365859F, 0xACE13396, 0x7CB432BC, 0xB19EA011,\n    0xAD9BC7D2, 0x3AF387B1, 0xCCE30470, 0x5335FC46, 0x40D13C16,\n    0xD548B4CC, 0xC476A7BD, 0x66BC0663, 0xB7C6960F, 0x12D1E821,\n    0x9A536C48, 0x42641630, 0x740C9A48, 0xF61664E8, 0x3B11E69A,\n    0xBD79E1F1, 0x3F930B7D, 0xD98B085D, 0x2151962F, 0xD4D7F80E,\n    0x88975123, 0x5302989, 0x12F5CA2B, 0x37C29573, 0xD1D2A3A6,\n    0x46DA55DA, 0x2EC8C098, 0x802A42DF, 0xD07A11E5, 0xD5BF4B16,\n    0x171BCB96, 0xB5843001, 0x57BDCAA7, 0xDDD36F33, 0x633D0AA0,\n    0x313B7064, 0x68BD30CE, 0xC986B6C3, 0x2271824F, 0x9951E552,\n    0x15939472, 0xDC668F83, 0x1D98A441, 0xA4A1676, 0x631C444B,\n    0x6EB61C7C, 0x8EEE0B5E, 0x23F82C1F, 0x6C4B53C1, 0x41116D6,\n    0xEBC1627A, 0xC8839049, 0x7F07A8F6, 0xD1F74661, 0x7D9892DD,\n    0xF010EC90, 0x37C8A4F4, 0x6ABA986E, 0x68B1E4F6, 0x8066EE05,\n    0x5E964158, 0x88D477A6, 0x776CF1E1, 0xB7AB3B60, 0x183D58C0,\n    0xA7E13F2F, 0xDD435AD0, 0xF37DF46E, 0xD3F3F774, 0xB6B24A9A,\n    0xC097D9F2, 0x54EE718C, 0x4469BDB, 0x4F20DAC, 0xB4002AD5,\n    0x2E7AB56, 0xCDB4B18C, 0xF2ACE62D, 0x54BD40DE, 0x46DCCA2,\n    0x5B7F32F9, 0xA8CB257D, 0xB138C149, 0x71474D19, 0x6F71C293,\n    0xD88FBC7D, 0x9E0A7F86, 0x14B92605, 0x1CBACDC, 0x29159263,\n    0xBB719E18, 0xD41B37EE, 0xA236E27E, 0xE916BAE3, 0xED34D9DA,\n    0xFDDE09B6, 0x4FE72C56, 0x16927460, 0x8CFFF9A, 0xA9465741,\n    0x2B1CD6E0, 0x6BA277FD, 0xE06F70EC, 0x7CB2715, 0xFEDC13C8,\n    0x7049632E, 0xC6448831, 0xF72CA3A, 0x9B2BE231, 0xC16A8438,\n    0x948EB7E, 0x64041803, 0x82A43295, 0x226D95CE, 0x84AFC1EE,\n    0xB2EF3B82, 0xAC18A45C, 0x74DE3ADE, 0xD0E6FAD4, 0xE10C242E,\n    0x797DF7BA, 0x812CD7B8, 0xED45B681, 0x8F6CCDE8, 0xC2376DFF,\n    0xCABE35D6, 0xD450395B, 0x13493CE3, 0x870E1BF5, 0x7B0BF341,\n    0xEBD572F2, 0xAE22B3F1, 0x7ED22DF8, 0xEFE826ED, 0xF147F4BD,\n    0xA12DA6F2, 0xF3871967, 0xE4423B70, 0x298472D9, 0x45E03E3D,\n    0x2BE705AC, 0x41E3AE6C, 0xA29DF92C, 0x54B33739, 0x8EA8F7A9,\n    0xDEFF7BC9, 0x77D06961, 0x71981BA1, 0xBA5A5647, 0x4A8E0E2E,\n    0x9F519F5D, 0x31BBA940, 0x3D3A0532, 0x7090F0AD, 0x8B47D658,\n    0x8D198BAF, 0x9ED929B6, 0x323BB81, 0x97210404, 0x7B8790DA,\n    0xD8438C25, 0xDFBB1C93, 0x2C3F415B, 0x14738C42, 0xB46C2C7A,\n    0xA3627CAB, 0xFC540D08, 0xE8227979, 0x672B87FE, 0xB257C949,\n    0x9C2B31FF, 0x97AAACA8, 0xC662B448, 0x5BFEFC7C, 0xC2FDEDDE,\n    0xAD306CED, 0x639A2576, 0x9ECC1378, 0xA72D71B3, 0x94E11CDB,\n    0x8BF14832, 0x945C1728, 0x49AE595B, 0x526DD500, 0x40A7D344,\n    0x8EB1DA34, 0x731E17C5, 0xA7CF41A4, 0xCB068104, 0xC842B8E,\n    0x7F5733E1, 0xAC9CB3B, 0x2E3F58C0, 0xFD8BC4F, 0xFFBCBBAA,\n    0x620248F9, 0x27AC344D, 0xF2E5958B, 0x773EBC3A, 0xEA6078F7,\n    0x6B32D1D7, 0xC00DF984, 0xE73C86AA, 0x712026DB, 0x2CE271FF,\n    0x38578573, 0x816605D0, 0x673509A9, 0x8D693AC8, 0x2533C371,\n    0x6783E269, 0xC5731F9, 0xF2A8041E, 0xBB3C008F, 0x2B290D9A,\n    0x122A4BA4, 0x645A69B, 0xB86CC256, 0x9369B8C3, 0x90CF4CEB,\n    0x573005D0, 0x4F7DB793, 0xD6AC972E, 0x178BFB66, 0xC430DCEE,\n    0xD1A8138B, 0xBF6EC4C8, 0x693E6FAF, 0x54119B44, 0x9C904669,\n    0x4D95F608, 0xDB59E550, 0xD85DDBBC, 0xD15818AE, 0x680778D8,\n    0x3B67A234, 0xEBE9DAF3, 0xEB8E049B, 0xDD9E0EB8, 0x5D4FB1FB,\n    0xCEA62C1C, 0x948AF719, 0xA7E58E36, 0x800EAD97, 0xCD895A65,\n    0x72E63F92, 0xA9A82DD3, 0x8CC07793, 0xE70EBE82, 0x1F69534,\n    0xAB727A31, 0x1582EF9, 0x7247F677, 0x5FFD7E2C, 0x950EA9DF,\n    0xFF38A172, 0xDD75DB84, 0x3A416207, 0xD6A23DA7, 0x3BBE70D0,\n    0x538C25CA, 0x2958DF9, 0xD7B9C83E, 0x61F35964, 0x1E05B36,\n    0xDD57CDCF, 0x997335B, 0x3A65762A, 0xC5836CD0, 0x9EF2B7F1,\n    0x5094196, 0x6949A654, 0xB7FD3E5D, 0x6070C271, 0x30364C38,\n    0xDCAFFFA5, 0xCD4ED281, 0x9865FE7C, 0x75F665AD, 0x6ABADB10,\n    0xAB43129, 0x26B7A5B8, 0xA321DDBD, 0x467AD732, 0x153A1AE,\n    0xAD6B1842, 0xBE19B6BE, 0xC1E22C82, 0x73372EA5, 0xF9EF4AD7,\n    0x24C81977, 0xD8451807, 0xCD10ADC8, 0x8FBD95E2, 0xE0789969,\n    0xC77A80F2, 0xF1165BCE, 0x3488C653, 0x16F3E378, 0x8D71B29A,\n    0x628EC98A, 0x40963234, 0xF918E028, 0x9A584D33, 0xC174E2FE,\n    0x417C5145, 0x1C751175, 0xB21E0C12, 0x30218ECC, 0x9D7731BD,\n    0xA07DBA0F, 0xE7504D39, 0x3E37F16B, 0xD3BAB050, 0x6F3DE64,\n    0x1998A7BA, 0xA61A6D07, 0x424FBED7, 0xCD6B3236, 0x68E71248,\n    0x58CC3DFB, 0x584FA4F5, 0xFFE8E2BD, 0x9F0E3D75, 0x788DD779,\n    0x978ED891, 0x7E1BFFC8, 0xB812A1C9, 0x5CCC1A32, 0xF1A47219,\n    0xD6BA6E71, 0xAFA86EB5, 0x28D128E2, 0x9EDD53B, 0x9AAB7E9C,\n    0x493B76F2, 0x31C5C89, 0xCE5FC3B6, 0x974CC3F5, 0xCBBD90FB,\n    0x61DE988E, 0x99B927CB, 0x972EFCCD, 0x2719AD6, 0xE06E4B29,\n    0x48215B1, 0x37EDE8E4, 0xABF9F87F, 0x8BC1C626, 0x5B19EC05,\n    0x212A2AE1, 0x28446975, 0x20D04126, 0xFC453267, 0x967D9524,\n    0xDF1CDF8, 0xFB17DCA3, 0x11E68AC6, 0x3AD7D667, 0xD133EF43,\n    0x5EC41DA3, 0x587AA639, 0x17ADAE3, 0x816DF77A, 0x37D0726A,\n    0x49DC33D9, 0x6C9737E, 0xA6A2F950, 0xEC5F352C, 0x50D1E06D,\n    0xC10009A6, 0x2F70F8BE, 0x382269B1, 0x4C29E7CB, 0xBD474FF3,\n    0xD19A4F6, 0xC3CCE458, 0xE09B348, 0xD15A0DC5, 0x1C10D20E,\n    0x4AFDED15, 0x3C109DC1, 0xD8C117F5, 0xB501DDF5, 0x39C92B5F,\n    0xE76FCA13, 0x76DBAA1B, 0xB0730EBF, 0x67DD1FBC, 0xD8B87AB6,\n    0xA826225B, 0xAB2F7089, 0x499FA36D, 0xF26455B, 0xDC79F8EF,\n    0x987E765E, 0xA13E60C7, 0x500C7803, 0x492C871D, 0x970DE4EE,\n    0xD1423DC1, 0xB66048A3, 0x804895AB, 0xC079A15F, 0x5E6FD682,\n    0xE936476E, 0x8DECE38F, 0x76A011D, 0x53575B91, 0xB263D36A,\n    0x8F2624C1, 0x26B34937, 0x75A7EC2F, 0xE33ED24, 0xBF1BE7C7,\n    0x8D6BA785, 0x1D9FE802, 0xB8F4EC20, 0xD5C714B2, 0xC1326D06,\n    0xFCA78B3F, 0xC0065015, 0xA4B9F286, 0x53F92A8B, 0xF4B02DBB,\n    0xEC47E64C, 0xA29FFB12, 0xBA94FFB2, 0xB6980EB2, 0x7415C83F,\n    0x93F91A24, 0x4C6F7615, 0x34431174, 0xC7D63B4, 0xB1599158,\n    0xA3A01FCE, 0xBD477764, 0x6B16EC41, 0x772D8BF5, 0x90F0A785,\n    0x8F72672C, 0x7AD22CDC, 0x70824998, 0x1BED16D5, 0x596E84FF,\n    0x48B5B4F4, 0xB20D0B81, 0xF00F7AFF, 0x80F618DA, 0xD10AFE11,\n    0xA8EA3109, 0x91BA5E43, 0x31345A01, 0xEB0EF0F8, 0xCC6E7FB5,\n    0x3348AE52, 0xEBB124D9, 0x447E58B1, 0xF2A3D592, 0x7F3EE5D8,\n    0xD3D7B836, 0x9C98DCD4, 0x27F0B7A0, 0xA9655FD9, 0xAB48E5F8,\n    0x7F996D8E, 0xAC13B08B, 0x2530AC6D, 0xAA542552, 0xD4E6B42A,\n    0x6432AA64, 0xEAC84F76, 0x41D5F959, 0xCDE91DDF, 0xA0AA485A,\n    0x6453698, 0x277C18A4, 0x161A497, 0x66FECAE2, 0x1B64683,\n    0x948DD228, 0x1F3C5950, 0xFFC271FB, 0x15C4DF12, 0x7C78252B,\n    0x9D4EBB89, 0xE6FA1D49, 0x6B032100, 0xB65DD3CC, 0x106BC9B5,\n    0xE0223D45, 0xF7779B03, 0x4B0EA0C2, 0x3CB5AAF2, 0x9A458E5F,\n    0x524090ED, 0x3BB1F18F, 0xB4DD065E, 0xA8F13E4F, 0xC4949ABB,\n    0xD8142D31, 0x99069DE6, 0x989D2A16, 0xC72D929, 0xA2AC5754,\n    0x7E29B714, 0x6E25C15F, 0xE8777078, 0x467DDCEA, 0xF94B2ACB,\n    0xDF429476, 0x69AE316, 0x363C664D, 0x85D6AA1E, 0xD727E39E,\n    0x5AF440A3, 0x2F0BB16D, 0x461D52D, 0x610559B6, 0xC28066D9,\n    0x3C13AE61, 0xA965B865, 0x2BCE3D4A, 0x361C4848, 0x46B94657,\n    0xF2AE634D, 0xD7FD4B8B, 0x70C175D8, 0x33128DF, 0xB9718A3B,\n    0x8EF80C0F, 0xAB12E738, 0x124B8055, 0x43448325, 0x9F05E427,\n    0xA0A9F843, 0x57A9A3FA, 0x492EEA32, 0xE73D2B18, 0xF3113C2C,\n    0x2BA9B42D, 0xFF0B320, 0x3A18CD71, 0x59804367, 0xC37F9B87,\n    0xB8A990, 0xAFE9F267, 0x1892892B, 0x25B9C66D, 0x52D4056E,\n    0xCC1508CA, 0xAD213DB2, 0x8B43F743, 0xAA9705AD, 0x9BC756A2,\n    0x43F42526, 0x596FEE87, 0x2B8AFF32, 0x46DEDB48, 0xBF06317C,\n    0x876D4CF2, 0x16951456, 0x2B051AFD, 0xFD093E9D, 0x2F113180,\n    0x77BFC4C0, 0x29200C52, 0x182D384E, 0x54AE29E0, 0xF90961E8,\n    0x6072B8F8, 0x3D346F4E, 0x9AA5DBA4, 0xE5E22EC6, 0x392170DA,\n    0x40939B9B, 0x65B89151, 0xC54AB94, 0xAD7280BC, 0xA3D4395E,\n    0x3B5754D2, 0x9E77A6A2, 0x9A737F56, 0x9B2D432D, 0x8FDDA7E7,\n    0x5958516E, 0x7F52CD74, 0xC1761A50, 0x2B80C01F, 0x5AA99F54,\n    0x36FAA395, 0x5DB4B3AD, 0x82024C73, 0x988CEFE0, 0xB44498C0,\n    0xF9561A4, 0x280470E6, 0x6966F3A0, 0x47E374F4, 0xF00F4CFF,\n    0xBC5C4DB2, 0xE287924F, 0x1ED57369, 0x484FE06D, 0xE92E6564,\n    0x7429DAD2, 0x1473AF49, 0x9619E0CD, 0xE6EC2B63, 0xF7A983B5,\n    0xEC43C28F, 0x4C98EBE7, 0xA61FDF89, 0xA867E5ED, 0x1088A7C,\n    0xCF1CEAE8, 0x223AA207, 0x686F4F7B, 0xEBB013E1, 0xDDC01886,\n    0x77478D4E, 0x2FFCEAEB, 0xFCA58846, 0x1208668E, 0x32F8252,\n    0x65C9F3ED, 0xC7584B2F, 0xF3EB26B2, 0x90890270, 0x5D97ED04,\n    0xF5B5B18A, 0xCF415DF9, 0x4CF4683F, 0xE2E3F29F, 0x850E4BEF,\n    0xDBABF6E2, 0xBD183286, 0x2F36215C, 0xD8CA1DD3, 0x4309CC6F,\n    0x9FA52446, 0xBD94348E, 0x8693D9B6, 0x61E880C2, 0xA1851D5E,\n    0xAAB94F80, 0xF8919C00, 0x74D82ECA, 0x4466A1B6, 0xA0A98E8C,\n    0x95B6D1D, 0xE5393A4C, 0x5A40CFFB, 0x67013370, 0x571B0FDA,\n    0x9E7E805C, 0x15E32653, 0x2CFE7902, 0xA02E0906, 0xA8883783,\n    0x7A68B719, 0x3402833A, 0x68BFD324, 0xE0B43DA3, 0xF9DB0F,\n    0xC9510610, 0x690D30B, 0xE79AB417, 0xC917E4C0, 0x7B05CE55,\n    0xE116EFDB, 0x69E3B158, 0xF91ED58D, 0x1832D16A, 0x91F4EA17,\n    0x3D24C408, 0x76A2C6D0, 0x99B19825, 0x2BF52475, 0xAD49289D,\n    0x66238CD7, 0xAC1571F5, 0xA2EABC02, 0x889337AE, 0x3219AFFB,\n    0x104B8779, 0x810488A8, 0xAC35416A, 0x2C6DEF85, 0x2ED109F5,\n    0xCC8C6732, 0x97CD8E90, 0x339F3E81, 0x91486206, 0x2708D41D,\n    0x1F2B19A7, 0x51A60303, 0x5E90E440, 0xB63092C8, 0xF1031823,\n    0x971A06, 0xB624F6A2, 0x58AC0181, 0xA983D599, 0xA776D877,\n    0xB727FE1, 0x55AC01B1, 0x4298EA17, 0x4D6BB9AA, 0x31C55C65,\n    0x6A266780, 0x4FD92256, 0x817DB37A, 0x46A14DF1, 0xEC7D9F14,\n    0x98D1C1B7, 0x911DF80D, 0xBFBF24E1, 0x9B4DBC6A, 0xE1F71BA4,\n    0x9EE5E44A, 0xD1868C4C, 0x6FB45D76, 0x11EC8672, 0x1CED7F0C,\n    0x1524A040, 0xA49DE9D3, 0x99FF328A, 0xC392F619, 0x52A856CC,\n    0xDB0B0AE6, 0x67F0162E, 0x2C20D410, 0x4E23C4D, 0x828032EA,\n    0xC2E7DFFA, 0x908CF524, 0x919F61EE, 0xF001C6F, 0xA81DDF65,\n    0x5EC56647, 0x28385ACF, 0xBDD764C0, 0x75C853AB, 0xDF0ADD73,\n    0xEEA9C63D, 0x804949F5, 0x658ACD0A, 0xD12F3F50, 0x1FD4F7EE,\n    0x7F023D80, 0xD2CB08B5, 0x477EA9A1, 0x872DB719, 0x7B8B6AE9,\n    0x84F6AC4, 0x81634EB4, 0xD1A89CF, 0xB3F4F3B9, 0x3A6B024B,\n    0xAA2CA2C5, 0x9C902C0C, 0xC40E4135, 0x3C6E612F, 0x11219414,\n    0x1F184277, 0x11B6B30C, 0xDD8A6A5A, 0xA0D21C9D, 0x55377022,\n    0xD0708FBD, 0x8D761020, 0x54FCFCFC, 0x477801BD, 0xD6919EB8,\n    0x9AD29078, 0x36F8D9B8, 0xAE525B8C, 0xCA7ED140, 0x2D8F8B97,\n    0xD1B79EAA, 0x2E26FB2A, 0xFB396E32, 0x399129A3, 0x28B55FA1,\n    0x2ECB2CF0, 0xDF1CBF7C, 0xDE57A70D, 0x33410B33, 0x7C5759BF,\n    0xF534264B, 0x16C8C221, 0x874A3A63, 0xD05808ED, 0x679674BC,\n    0x24B060C9, 0x4B162B53, 0xC7D01208, 0xE753DE61, 0xFA9840E4,\n    0xA4FEC439, 0x4143E13F, 0x327E9EE8, 0x319D901E, 0xC40FC209,\n    0xB1E1FFFC, 0xE737D52B, 0xD074E058, 0xAD8892EE, 0x86B93396,\n    0x49C13F4B, 0x60A5721C, 0xD4C4F599, 0x14B38EBB, 0x86BA655,\n    0x95F4E0C, 0x4217E99A, 0xD0CA3861, 0xBDD3617B, 0xB0BDBF4D,\n    0x99E3389A, 0x8200DCFA, 0xEC22C8AC, 0xBA8DDB32, 0x3F7DDFC8,\n    0xC7DDC171, 0x211CF31, 0xCC31A0C7, 0x99A84F32, 0xC9FFD317,\n    0x2267733A, 0xFBD05569, 0x306BC05F, 0x6E2685D5, 0x43FBF7D1,\n    0x5A2DB2D3, 0xE6491D4B, 0xAD078066, 0x7CAF7AAD, 0x2B1FEBA5,\n    0x3418A0EC, 0xC359E9B7, 0xB024E024, 0x58F22A6B, 0x18EEE710,\n    0x4755B9C5, 0x528D3273, 0xC8F9255, 0x635E5F9D, 0xABDF5BAD,\n    0x8410F054, 0xEA068528, 0x438345EB, 0x56EF340, 0xBD86A7DE,\n    0x543A126A, 0x5F259D83, 0x67EDA87A, 0xFF24F98E, 0x684E6504,\n    0xE4EB57B, 0xD2D3B758, 0x4474D10F, 0xA94594B7, 0x3E4BEB07,\n    0x95C3F257, 0x478B6FA8, 0xBCC7EFD8, 0x1023D258, 0xB4ACD6C0,\n    0x36129B10, 0x16D7D9A3, 0xEA63BE7E, 0x25EC12A1, 0x21B95589,\n    0x3A673799, 0xB8E04594, 0xAE98693C, 0x9879B8F9, 0x601A3F62,\n    0xCF9897C0, 0x87CD1798, 0x629788F1, 0xC1337B31, 0x59D84E67,\n    0xF13FA484, 0x5E8C7B3F, 0x7DEDE9F6, 0x9779F496, 0x74C4EE89,\n    0xB3D9AC8F, 0x44118EFC, 0xB4FE8E45, 0xC9934560, 0x93D739E8,\n    0xCD013773, 0x102411F1, 0x9DB63EFB, 0x63165875, 0xB8B97E98,\n    0x6B4223D0, 0x6F34352B, 0xDB038A46, 0xC187163E, 0x17FE20D8,\n    0x82A1BC9F, 0xB6860AAF, 0x11D5F9E0, 0x5371E14E, 0x20BC8445,\n    0x607589A0, 0x8DDCCF44, 0xCDCD53C2, 0xCBCB32D8, 0xC512E661,\n    0x1EB4E6CE, 0x228E99A0, 0x28EE0177, 0x76ED3F3D, 0xA3DA3300,\n    0x17C57F91, 0xA1855C6, 0x3531FA3, 0xA93A8241, 0xC45D540C,\n    0x365D42EF, 0x2CA39696, 0xE460F7D1, 0xCA32CCB3, 0xA6D9D934,\n    0xAD01079C, 0x9B07D89C, 0x226CE0A5, 0x60D67762, 0xD35A4B7B,\n    0xFF0A698F, 0xDB73BF89, 0xF41FBA9A, 0xCACDF26D, 0xBF594213,\n    0xCD4D3E90, 0xD12F3EB8, 0xE689D238, 0x8CD4C0CA, 0xEB3E841E,\n    0xA513EF0F, 0x2DF4B65D, 0x90161625, 0x9C02AC36, 0x208F328D,\n    0x12BF5D93, 0x7C8C355C, 0x3CDFCA22, 0x29381080, 0x3FF6CA14,\n    0x9F269C74, 0x8A48070B, 0x3BDF51BD, 0x85932156, 0xA7B6F9FF,\n    0x80554507, 0x43820D97, 0x59B7214A, 0xFC3ECC27, 0xED39DB19,\n    0x2B9BDB43, 0xABD4E298, 0xC2C5953E, 0xD3DB0C09, 0x66EC81DA,\n    0x7F41EDE1, 0x5146E8D7, 0x49171DF2, 0xB334BF9A, 0x3AADC9E6,\n    0x56E12468, 0xA2D4B032, 0x662B1F49, 0x9C448B1F, 0xA219526C,\n    0x56D66A27, 0x41609345, 0x8E685EFA, 0x392DA3A4, 0xDE58C26B,\n    0x9C779FC9, 0xCA834F65, 0xA1E34DC4, 0xEC5BE6EA, 0x3737B7AB,\n    0x2E9B7D0A, 0x929E96B9, 0xE38B0019, 0xC1E4115B, 0xD8141740,\n    0x66977F67, 0x7D4CE4B3, 0x245AB554, 0x26F98B88, 0xEC78F24D,\n    0xE1F34C1A, 0x5737AD34, 0xC1A19AC6, 0x3291E363, 0x4E824FF3,\n    0xAC42BDF3, 0x7C2DACE8, 0x8D5C97F6, 0xD120875, 0xC4E5C39D,\n    0xE22AE85D, 0x290FF39D, 0xD495E52A, 0x95414374, 0xD65757A6,\n    0x1E7657F9, 0xF5073D56, 0xC2AA7589, 0xC166A0B3, 0xA0DF8CDE,\n    0x4057EAE5, 0xBAC4DD2F, 0xB51F621F, 0xA96F90E3, 0x392B5D6F,\n    0xC31E9CA1, 0xCCC02FD3, 0x5181074, 0x7BC15C18, 0xCA9232A4,\n    0xD1D104E9, 0x5F0C5D3, 0x4947F6D2, 0x3C923E97, 0x6B486C35,\n    0x9C8ADA96, 0x175C4D87, 0x39A1A0FE, 0x417F201B, 0xD080E114,\n    0x4847B147, 0xFD634E49, 0xBC0BF4CA, 0xECABB1DF, 0x869B0263,\n    0xCD797C28, 0xD2A4683, 0xD50F6A0B, 0x2CA40138, 0x8DA4EB55,\n    0x5D198E5A, 0xA98DB40D, 0x96CA0E68, 0xA8D92294, 0xC4813E60,\n    0x81CD6B09, 0xEBBEBF80, 0x6777688, 0xCDAF6EC5, 0xEB85653E,\n    0x3BB780DD, 0x73718A21, 0x70E8A324, 0x654DE06A, 0x2CB2494A,\n    0xFC1DA829, 0x64059A2F, 0x61CE9D0D, 0x5BC51CAB, 0xDF7DE6AE,\n    0x1596B477, 0xB0F9EA86, 0x9D87D85B, 0x877620A7, 0x586F3AD6,\n    0x96AE645E, 0x65E9D5D7, 0xDB69CEB, 0x2753EF35, 0xC226F633,\n    0xBD373F9D, 0xF2A0E198, 0x4372EEC3, 0xA66F7010, 0xD30E1D18,\n    0x152C0DFB, 0xEB86FC75, 0xC208FE7E, 0xB36625A4, 0xBBE2DE8,\n    0xEC49F9C9, 0xCE724FFE, 0x2D509471, 0xCA6C24B6, 0x1BA93DDF,\n    0xEABE9550, 0xB512D359, 0x83F76766, 0xC8267976, 0x7E50802B,\n    0xE3EC2199, 0xD3269B8E, 0xC515B0CE, 0xB5752537, 0x70474BD,\n    0x7F50EBE, 0xF9FC0B38, 0xD899D19C, 0x317AA41D, 0x6B706374,\n    0x66479538, 0x560455A3, 0xD770DD85, 0x55BB61BD, 0x6DE6723A,\n    0x3F89034B, 0x9C9650BC, 0xE569992C, 0x7B8F4D95, 0x3FB7C516,\n    0x7C28C04B, 0xA12DE6B9, 0x8CFC5AFE, 0xA734A25A, 0xCF1483E8,\n    0x1AB22339, 0xAA94F43F, 0x16319A1E, 0x2C9AA4D0, 0xE9D2618,\n    0x790B699B, 0x3AD9C3A1, 0x55A778DA, 0x6517152F, 0x2139AB74,\n    0x12F762CC, 0x4BE02E6F, 0xE69400F7, 0xDC48DCD0, 0x563DB028,\n    0x32299125, 0x7C9145A9, 0xFB88067B, 0xF070F6FF, 0x3D9A42FF,\n    0xC5D20DC, 0xF96F7EE1, 0xA9C209A3, 0x9A192F36, 0x3E158AD,\n    0x1265DF79, 0x2E49E297, 0x99D3A002, 0xE6AFDDCB, 0x3B56751D,\n    0xB248A31F, 0xE6BE0FFD, 0xBBAB635E, 0xB383C45C, 0xA9DC9F2D,\n    0x735CE03F, 0x69992E32, 0xD1E6A77, 0xE38A7F46, 0xC1E59620,\n    0xFAE7F99A, 0xBDFB440C, 0x9F53F99C, 0x224EA340, 0xAB5D1AF0,\n    0x35F3126D, 0x99430549, 0x83E12C62, 0x6403957B, 0x7B119103,\n    0xC8382BAB, 0x99A85991, 0x9BF370AF, 0xDFA83CAF, 0xDBEC2CC3,\n    0x416D8EBA, 0x774E58FF, 0x29C222F, 0x3DE60561, 0xDF038931,\n    0x8297C377, 0x9867C08, 0x58ADEAED, 0xD88F0856, 0x6E4C2A39,\n    0x2599DF28, 0xD7A6D06A, 0x433B35BE, 0xDAD3175B, 0xC358D423,\n    0x84BF4580, 0xE7D3BE65, 0x9EC8CDBA, 0xCE901946, 0xC4B4D088,\n    0x98B1245D, 0xFBB0CC10, 0xE8CB9C76, 0xDE665AF2, 0x28E46D8B,\n    0xF7012A56, 0xE29F8C07, 0x8BF87AFB, 0x2907C051, 0x820923CB,\n    0xC3E95542, 0x6AB5559E, 0x314BD068, 0x1CEB5637, 0xD1D830D,\n    0xC442D6C2, 0x5F6074F4, 0x37F08A2A, 0x21F782BE, 0xF378B1AE,\n    0xB7FC74DA, 0x4ACB450F, 0x365F3092, 0xFB0C842C, 0x5DD80554,\n    0x741C4F79, 0x290716E0, 0x76E56BA9, 0x10006310, 0x42A183C7,\n    0x5F1FB962, 0x8DE2BA39, 0x6176B6D9, 0xFC059A44, 0x9907DE39,\n    0x71A5EA7B, 0x42309616, 0x1DDE34DD, 0xF0DFA4BF, 0xF69B5E2F,\n    0xD145268, 0x49A3E7B, 0x90508840, 0x861DE564, 0x904730CB,\n    0xC844CD6F, 0xD5A2CEB6, 0xCE895F0D, 0x73EEE4D6, 0xEB4565CF,\n    0x533ED4ED, 0xF4AAB655, 0x591BC278, 0xBD1D929D, 0x80AD7DA6,\n    0x527B3C51, 0x40F627DD, 0xDA420FFD, 0xB9A6F685, 0x5F6D9BC2,\n    0x4F67DE58, 0xFB5F87F0, 0x47540936, 0xB2083BC8, 0xAD48DD69,\n    0x63F7CA5A, 0x28D5372D, 0x61DA54B0, 0x7DA88170, 0xA2DA7B83,\n    0xE1D70E32, 0xA3ADEA46, 0x97026868, 0x60FA4303, 0xA4104416,\n    0x3DB4A8CC, 0x72F0F53B, 0xFF270297, 0xD5600E97, 0xD7D25D62,\n    0x46DBCAC5, 0xFD61775D, 0x93E100DB, 0xBFE0E0C0, 0x8CE51426,\n    0x8216C272, 0xE7300A56, 0x5A61C30E, 0xA7667C78, 0xBD23D39B,\n    0xDC425756, 0x7AE9A42B, 0x249E8C42, 0xABB91D5C, 0xBD1334D5,\n    0x8BCE967D, 0x5CF89EEA, 0xDB125339, 0x225E3C4C, 0xC5DDA12,\n    0xA92903F8, 0xF2F29634, 0xD2AB3419, 0x396DAE59, 0xA02C965E,\n    0x450B8DEF, 0x1E4911B2, 0x4F94BA94, 0x6802E7C0, 0x779671B7,\n    0xC0B06A93, 0x65BF0119, 0x3D672B7F, 0xE7E68CA, 0xF173FBF,\n    0x503C50F4, 0x3D8CA779, 0xD9BC10B2, 0xE6B89F78, 0xFC04B6F2,\n    0x74B0E1B4, 0x3BB8594A, 0x5866C0E6, 0x125FBE40, 0x21239465,\n    0xC00E2791, 0xD7957B76, 0x331D18CA, 0x87D0C340, 0x8D7347DF,\n    0x296D2AA1, 0x8EAA71DF, 0x1D477388, 0x4F666705, 0x211D2B0D,\n    0xA41C0741, 0xD8F7CEEC, 0x4C6EDC5E, 0xFE5DC02A, 0xAA83AED3,\n    0x9AE501A6, 0xFF82168C, 0xDC638114, 0x4C345BA0, 0xDD7E0F1D,\n    0x4C072ABD, 0xFF606768, 0x3CE74279, 0x93DED13D, 0xAB7A9752,\n    0xAF27666, 0x784EDE4F, 0x7F4BE8A7, 0x9A45141D, 0x69E507FF,\n    0x78BAC3AC, 0xDB2A62AC, 0x52561515, 0xA9DFA9A8, 0xCC51778C,\n    0x886CC6A, 0x5246AD23, 0x68A7480, 0xBC267A85, 0x1FF771F4,\n    0x5199BC1E, 0xF8CCD05A, 0x7BD65764, 0xC61A33FA, 0xC9F24B8E,\n    0xBC0B1D9F, 0xE43E103, 0xBE3D7AAF, 0x39154AD2, 0x941C2098,\n    0x1C26174D, 0xC63D21F1, 0xFBC6D732, 0x8C43AE71, 0x1495C044,\n    0x9483EE96, 0x909A94F0, 0xC1B02D9E, 0xDF9A2114, 0x2F4883E9,\n    0x4806958A, 0x209A2722, 0xFE514205, 0xEB85D85F, 0xC25BED82,\n    0xEB2CEABE, 0x8B2A2EDA, 0x68641725, 0x10570304, 0xE53EE68B,\n    0xC43FB1C1, 0x8F763232, 0x41ECC1D0, 0xE3E44CBD, 0xA1A68EC0,\n    0xDAFA770A, 0x6996A5A8, 0x38407C06, 0x4FAD77B4, 0xE30E2912,\n    0x47EE2FD, 0x2CDA167F, 0x88F915F1, 0xF3DF6195, 0x530FBEDE,\n    0x2CFC1C0C, 0x47B21171, 0xDEC1A586, 0x2031A43A, 0xDAAD77AD,\n    0x8BE637E6, 0xA6AC1EBB, 0x6AB9F2A3, 0xBFB5ED6C, 0x15792C44,\n    0xFD3AB89D, 0x27A7E24E, 0x3E76999F, 0x77EE2E6A, 0xE505F3B7,\n    0x429839A6, 0x6BEE7B15, 0xF61F0084, 0xFC20752C, 0x4BF79989,\n    0xC8B4F8E8, 0x46B33427, 0x9F4BA3E8, 0x41B9354D, 0xEED27E23,\n    0xA7FC575F, 0x279180C5, 0x141C3A06, 0x2C2FCEF9, 0x4403AA1F,\n    0xD4496B6C, 0x25C33091, 0x452C754, 0x80534A0, 0x80842F72,\n    0x3DB756B1, 0xEFD010BD, 0x1DE7F9EA, 0x5F9B1769, 0x55D9839F,\n    0xD5B11F46, 0x941D69AE, 0x8C4F3D35, 0xE710E268, 0x2DFBC983,\n    0x5D417C19, 0x7C2561F9, 0x25415FCF, 0xF331B119, 0x235B632F,\n    0x9B1463A9, 0x8249E513, 0xB6F14826, 0x1005E62C, 0x2B1B4F3E,\n    0xEF793550, 0xA90F6AA2, 0x77BFECE6, 0xA6E1C13E, 0xBCB6E143,\n    0x2496D0ED, 0xF4A8D5F0, 0x29C27A0C, 0x7D231D55, 0xB8526623,\n    0xDDDCB82C, 0x2A18B465, 0xB5FD564D, 0xA9647CB5, 0x4300919B,\n    0x9FB2B27A, 0xDB25B0D9, 0xBB5D5711, 0xAA747FC4, 0xAA831194,\n    0x9603ED14, 0xAF921A0E, 0xFA1447D7, 0x8B766768, 0xE8F1C89E,\n    0xB7985D4, 0x6C5C1AEE, 0x2EA66EF3, 0xD176E7D9, 0x228CD940,\n    0xD90C84B4, 0x36253A66, 0xADD7AE4F, 0xF25D5CA5, 0xD34F702F,\n    0xA535AA29, 0xFCF10FB, 0x3D075696, 0x63EF7EF3, 0x81554091,\n    0xC7EEFC78, 0xE0DCDB21, 0x62EFF001, 0x9ACFD7CD, 0xAEBA43ED,\n    0x371BA99B, 0x508B7A31, 0xFF447B05, 0xA239F5D2, 0xA5620A57,\n    0xA16B995A, 0xC334401E, 0x535F51AB, 0xAEA26D82, 0x81D72269,\n    0x3C0BA1D2, 0x80590850, 0x818A26AA, 0xC43E6B02, 0xF72DFB63,\n    0xE7AE3F6A, 0xD31AB683, 0xB99D787A, 0x691FFB53, 0x37EA1E35,\n    0xC2C9FFF8, 0x2A13F6D4, 0x4CC79564, 0x6DD5F2DE, 0xC53560B,\n    0x5A562B6F, 0x3F2C49F1, 0x6953F4CC, 0x8BA12AF2, 0x98A08428,\n    0xA1EF80B3, 0xA977E388, 0x1A3DD9D1, 0x687A3424, 0x2759B568,\n    0xC626A765, 0x7887651E, 0xFC9005E1, 0xE84376A4, 0x387BCF66,\n    0xF7AA4980, 0xBAEE372C, 0xE89CF460, 0xA275FC1A, 0xA5EF8668,\n    0x899F85CE, 0x9CB086A3, 0xF16158AC, 0x4C49EBC0, 0xDCE10FAA,\n    0x4B46ABDA, 0x56947FA1, 0xAD4E7245, 0x54C23373, 0x8B0B6C4D,\n    0x82590F05, 0x5E292D4C, 0x277B63C5, 0x9D51D8CF, 0x86D379EF,\n    0x52CBEF63, 0x7A62AF4C, 0xAC1FA33E, 0x25D454AE, 0x1CDA792D,\n    0x17434813, 0x759F50A7, 0xEEB0D38A, 0xB30964A6, 0x941230A0,\n    0xA464FA3C, 0x9F8685AF, 0xB9A018F4, 0x8080362, 0x2D565F63,\n    0xAB60790A, 0x67252A3C, 0x1715B01D, 0x5384E7F3, 0x79299519,\n    0xA9786ABE, 0x1107A1FC, 0xE0D9B037, 0x4DD34883, 0xA7D476E3,\n    0x5B194AE9, 0x89E50FB1, 0xA9676565, 0xC77CF621, 0x93612BF2,\n    0xE027B80, 0x359C7FBF, 0x39B166FB, 0x1F3B28DF, 0x2848DE70,\n    0xFFE261DD, 0xB78D413C, 0xE011DD7B, 0x286F752B, 0x74A8D775,\n    0x5E540B67, 0xFAF973F, 0xC0035501, 0xB0F16059, 0x1C981017,\n    0xD4871112, 0x9745C0BC, 0x6D85B805, 0xA40253E8, 0x2B0D55CD,\n    0x8FF7EDC4, 0x47EB4ECB, 0xC41A2F17, 0x41C9702F, 0x8549DEE0,\n    0x865FD46C, 0x64A1F181, 0x24E64D11, 0x13337A33, 0xE8CB0924,\n    0x8A2DC003, 0x113C04C7, 0x1CA62E13, 0xC360E708, 0x57DE03AB,\n    0x4D8F2BB5, 0x2CE2E2A1, 0x2580C90D, 0xBF162A7C, 0xEB1490A8,\n    0xBCABC2A7, 0xFBC4C25C, 0xBC83AB6A, 0x25C47DCB, 0x8FE447A9,\n    0x2C0F77CF, 0x6D896845, 0x63CEF5AE, 0xB2FF0326, 0x14D71520,\n    0xA1C15C8E, 0xE53550FB, 0x676B299D, 0xC20A5C14, 0xDB3EC54,\n    0x359733CE, 0x8A619B1E, 0xCDB53E, 0xD285EED5, 0xA6E0181E,\n    0xB81AA3EF, 0x41F8E1A2, 0xE3DEDC6D, 0x4F7CBE5B, 0x24006857,\n    0xACB9B719, 0x4E725B2D, 0x8536AF54, 0x329509E7, 0x72E7C0A7,\n    0xBA97CC78, 0xD822798F, 0x9DFC6780, 0x63E263CA, 0x7B2397A5,\n    0xA42C0C0B, 0x1D5EC588, 0x292F1E7C, 0x2BF5A75, 0xFCD8786B,\n    0x14EB1952, 0x84031982, 0xA0800A40, 0x629C9211, 0x3B17F481,\n    0x50861D9D, 0x8371A304, 0xB3D21511, 0x720E2C6C, 0x5A07F87E,\n    0x868F95BD, 0x8617E7B, 0xD7762105, 0x90707C5A, 0x777473F4,\n    0x67737DC4, 0xC4154562, 0x1840CEB3, 0x373635EE, 0x4E6D4EBA,\n    0x1736A5EC, 0x4D3E335B, 0x59FDB9A1, 0x9162B39A, 0x3F9E1502,\n    0xF661B3DA, 0x77BE0255, 0x65EC8603, 0x21FCA0B, 0x55291C5C,\n    0x69F57B1, 0x5DE1E0D6, 0xA6296E1D, 0x595A45F8, 0x90B166DF,\n    0x61ABB34E, 0xC6D48B5B, 0xB05EF88F, 0x368B0C6E, 0x94C36250,\n    0xB435D440, 0xEFB62847, 0x1473E647, 0x9A101218, 0xC7AA11BF,\n    0x80C241E3, 0xAF648F26, 0xDF48753D, 0x7073509A, 0xAB52665F,\n    0xD1ECCFC0, 0x7BE293F1, 0x396CA014, 0x84336AB9, 0xF9B7E448,\n    0x9566C90E, 0x239F7C25, 0x91A452B3, 0x1E9A4F1C, 0xCCE286F6,\n    0xF46520D6, 0x2943A671, 0xAAA30DCF, 0x28D190CE, 0x88E3D0C9,\n    0x423944F0, 0x81E6712, 0x2714B6B2, 0xF927748, 0x59A5430F,\n    0xCBA530A9, 0x91E12A0E, 0x92598CBE, 0xE61058F5, 0x2604B4B,\n    0x4CB7C3A7, 0x43B5812F, 0xFD90660, 0xD73DF50D, 0xAD3AE409,\n    0xF74D721B, 0xCC2A88D1, 0xCED79510, 0xE64714DD, 0x3BDF0A8A,\n    0xC2C7B689, 0x25B387D8, 0x968DA1A2, 0x8EA5D185, 0xF05F03E1,\n    0xFDDC5B50, 0x78AECEF, 0xE32FBBA2, 0xD512F0AD, 0x5410D1B5,\n    0xDBFD9FFF, 0xC0F2DD4E, 0xF66F8DBA, 0xF5EBA3C8, 0x65F96FE3,\n    0xF7C8962D, 0x8E48A78, 0x255BEDC7, 0xE8FD3698, 0xFD1C4903,\n    0xFDE9830, 0xCDBCF434, 0x16540D39, 0x418EF731, 0xB2F80637,\n    0xDFCC0C9D, 0xB53DC5BC, 0x5A68B10C, 0xC4DCB3DD, 0x8B3778F4,\n    0x7788B194, 0xECBD4903, 0xFD390223, 0x79598BFB, 0xBDECB9D9,\n    0x29576BE3, 0x220F82A5, 0xDBB262F6, 0x1876EF0, 0xE2D9C444,\n    0x32D5ADEF, 0x5F8739ED, 0xAF427122, 0x171E7D7D, 0xA5468BB4,\n    0x94451936, 0x51565032, 0x3CE3CD5, 0xF231F54, 0x98614C6E,\n    0xCE18455D, 0x958D2BD2, 0xA5934FE0, 0x3543931E, 0x77D9C2FB,\n    0x3D3ED736, 0x6762E077, 0xF1B052A, 0x88AF353B, 0xB2A38925,\n    0x8C919686, 0x715EEAAC, 0x34BA46DD, 0xEB486F1C, 0xDF58D7CA,\n    0x90B97BE6, 0x37335293, 0x499414CC, 0x7F725BAF, 0x5ABEBF8,\n    0xE9344F69, 0x1C110FD, 0xA937AD4C, 0xA7CDD9C0, 0x750FD5FE,\n    0x7A7B6D40, 0x41EA948A, 0xA10EE17C, 0x7689C967, 0x9F411C02,\n    0x6C40C3FD, 0xA6FFC648, 0xC6D6F914, 0xA100AF92, 0x4CD97ED5,\n    0x17D9CCBF, 0x915833F, 0x788D78C0, 0xC81903A3, 0x6DE5BAF0,\n    0x3E4D6DCC, 0x98415810, 0xEC23B7AD, 0x822471B0, 0xD2CF5D5A,\n    0xA1BACAD5, 0x40843135, 0x430135A, 0xA7655BAD, 0x7A2472BE,\n    0xCC3D44CC, 0xD1BC9E10, 0x7C215C92, 0x717FA7DD, 0x7EF7D128,\n    0x1BC85798, 0x7C6E19CA, 0xE3FAB7E4, 0xBC884D38, 0x3E220CA,\n    0xE7AE4D8, 0xC8EDD021, 0xF3F05D3E, 0xDE302EB8, 0x40CEFF27,\n    0x56C0550A, 0x96162C92, 0xC004EA48, 0xE0C29A65, 0x496AE22B,\n    0xC7468E6F, 0x8E31BD1F, 0xA53763CF, 0x166CC258, 0x1A2B9CC4,\n    0xDBBADE7B, 0xF8D21AC9, 0xB21CA593, 0xB92F0DEE, 0x9A4391F,\n    0xCDB4D373, 0xB687B3F5, 0x877BF0A0, 0xFD7395DD, 0x1C56AA87,\n    0xCA146BB9, 0x21A2314B, 0x8207A2AC, 0xAA874DC0, 0x4F404E64,\n    0xB69FDE48, 0x324FD456, 0x45F19CF, 0xFC7E6D0E, 0xC8A01C04,\n    0x76C63378, 0xC526F7B3, 0xFDCD2EEF, 0xFFB2F9B9, 0x2DDE75AF,\n    0x5ADF2F86, 0xC9AC84D3, 0x70FF53A0, 0x3FB077C, 0xC2795B30,\n    0xF5438170, 0x557D7080, 0xB784684E, 0xCD089E1D, 0x332B71B0,\n    0x493C3C2A, 0x1D1DED89, 0x8240E170, 0xA7D17522, 0x48C542AD,\n    0xCB357D8F, 0x21E37C1, 0x3B000B34, 0xAAAE4818, 0xCD1EB4B3,\n    0x1736CA0E, 0xDDF8EA2B, 0x76E21C4C, 0x6EE99A3C, 0x27F71B20,\n    0xF6AE929C, 0x3C9CAF6C, 0x5CA7DA97, 0x8EF033C5, 0x8C7EC36B,\n    0x3CB1CFAD, 0x1C5ABBB7, 0xDEF7A78C, 0x9CBC4A73, 0xB3871393,\n    0x8C61DF59, 0x54DF941C, 0xCDD23FE8, 0x758EAD7E, 0x49BE795B,\n    0xC960C6B, 0xE9B76479, 0xC88843F7, 0x82DC3137, 0xEDEE1A1E,\n    0xC6568A7D, 0x42F7F484, 0xA6115655, 0x494779B5, 0xD95FE16A,\n    0xB2AB15F4, 0x64C185B3, 0x9A46066E, 0x8BAE077E, 0xBAAE323F,\n    0x79A965C6, 0x764B71F0, 0x3654F6D3, 0x96B4B2AB, 0x15C2B523,\n    0x720AF416, 0xE6D0F423, 0xFAE44868, 0x6E776BC2, 0x264D41A8,\n    0x3FE4BEE, 0x1598B97B, 0x15A70419, 0xA13CD124, 0x751A09E2,\n    0xF7F7C12B, 0x718AC211, 0x11D03CD1, 0x2F9247BE, 0x77C210E1,\n    0xA2268AAB, 0x2E99F0DD, 0x949D5CC5, 0xA8A309F2, 0x749EC6BE,\n    0x5BD5124A, 0x8BF599E9, 0x3919AD4F, 0xA40901C2, 0xA1D4CC03,\n    0x6ADCA36F, 0x9D5CCB0F, 0x870E2A58, 0xCEBC6333, 0xB2FA28A4,\n    0x579C76A, 0x444849D0, 0x33887308, 0xB3BE3C75, 0x93745501,\n    0xC289F137, 0x89739C7, 0x97C73423, 0xD627FB64, 0x6EE36F05,\n    0x1F4B4B98, 0xFBB7A8AC, 0x60941E62, 0xC3A8ABDC, 0x4AC5E7C9,\n    0x88ACE940, 0x5AA2AE59, 0x9F10C0B7, 0x8F45920B, 0x5FDE21BE,\n    0x1D47779A, 0x3ED27D8B, 0x69FF2BB1, 0xCB1409FB, 0xF27F4FFF,\n    0xA19E3DDC, 0x206050FD, 0xAD98C2D5, 0x4DA4BC0C, 0x95D9B019,\n    0x556ABBFA, 0xBC78B5A, 0xF0F224F8, 0xA9785F8F, 0xED1CE98C,\n    0xD368072E, 0xE212ACE5, 0xBB7F76E0, 0xB02F237F, 0x6D85C5AF,\n    0x31539988, 0x4312BA19, 0x1D5023A7, 0x7320504B, 0x70563ABD,\n    0x2553791A, 0xE9768150, 0xC1B2AF4B, 0x3AF0FD24, 0x3818D0E8,\n    0x7F356F58, 0x98A15B0D, 0xAFA943C4, 0xB2B38831, 0x2E411F37,\n    0xE3D5AF87, 0x67BEEC5A, 0x825E60CC, 0x1C44D856, 0x1A59493A,\n    0x13BAABCF, 0xAEAA4D44, 0x5CFF2A6E, 0xFB47865B, 0xE778E607,\n    0x101500E8, 0x2C17E66A, 0xA0B30350, 0xFC649CDF, 0x8B9802D9,\n    0xAB87D61A, 0x21F38439, 0xD3D11051, 0x1FDA9955, 0xCB9313B8,\n    0x327D1A94, 0x35293099, 0xB803B298, 0x5B8E6883, 0xFA309C3,\n    0xDFDA8B2, 0xDF89211F, 0x9918F18E, 0xF0C05CB1, 0x71D8A4B7,\n    0xE681031D, 0x537012F6, 0x4DF822F2, 0x34B75C8C, 0x4429F85E,\n    0x5D3C4C4D, 0xFB0FC6C7, 0x25F4ECDD, 0xB19D5EFD, 0xD70FD7CF,\n    0xD95C45D5, 0xCDAC06B8, 0x9C3B963B, 0xAB2F2A9C, 0x4D3D4F7D,\n    0x12692C03, 0xB1AEF97E, 0xF243EFA7, 0x78C4C8DF, 0x182D9C17,\n    0x8D2AF450, 0x7596BD9B, 0xE8E7C9C2, 0x86F617F8, 0x1F37A708,\n    0x3F648305, 0x27FF6DF6, 0x4D5FF17D, 0xA9541C2D, 0x9773013,\n    0x78B2313C, 0x82C0B20F, 0xD36A4F02, 0x8DB2BC4F, 0x9296D8BF,\n    0xA983CC7, 0x31AEE908, 0x48CD7E6F, 0x9CB1DD7F, 0xAB89D57,\n    0x5156132E, 0x6345AA59, 0x8D2CB12D, 0x94D3AE56, 0xA4E91B27,\n    0xEE58338, 0x8620EA15, 0x5454D04E, 0x1142ACF0, 0xCA059044,\n    0x31811D8A, 0xD498290, 0xB65F1B67, 0x462745F3, 0xA899191C,\n    0xB9C19F48, 0x824659FE, 0x9A257101, 0xC330F34B, 0x42109127,\n    0x9DA8504B, 0x6C3A989F, 0x5F426E6C, 0x2B922D32, 0x373C66FD,\n    0xAFE3418B, 0xE3788682, 0x83B46626, 0xD0106A4E, 0xFD10B903,\n    0xB0F6531C, 0xC65419E0, 0x3963952B, 0xB8799DF9, 0x3EEB8C1D,\n    0x5C4D3C08, 0x6DD028A6, 0xA55678A0, 0xB8247141, 0xC1267586,\n    0xF6746B19, 0x46C38465, 0x483D24B, 0x99BF79DC, 0x78F778C3,\n    0xAFF40193, 0x58872B07, 0x6DA7F4FA, 0x66B5CEA3, 0xDD2D8C79,\n    0x2A8D289B, 0xB5789670, 0x66AEFCE3, 0x56FB52B3, 0x20FE3BE1,\n    0xCCDFB492, 0xB0F263E8, 0xD0707433, 0x5E58F5DC, 0x4ABEBE63,\n    0x8A45CD95, 0x97037830, 0xBDB1F1B5, 0xA1BE2990, 0x57B718FA,\n    0xD50EC023, 0x810DD849, 0xE650D43F, 0x3895C77D, 0xE142C382,\n    0x35551E5B, 0x3B94330, 0xE92D8A91, 0x50BC837D, 0x61499A8F,\n    0x2639B468, 0xF8FF36E1, 0x74956FC6, 0xFF0F4192, 0x6BBA0C53,\n    0x5B44FF85, 0xBBE4A1DF, 0x12D6CB14, 0x6C679A10, 0x3C0F554D,\n    0xECBADA32, 0x8A99BA10, 0x738C03C4, 0xB8902AC3, 0x7008D470,\n    0x49BC2ED9, 0xFBE19B5A, 0xA1E4879A, 0x36129694, 0x94987C3C,\n    0xE54B84D8, 0x9CFAEF1E, 0x527127DC, 0xA8FCAE0, 0x8699252C,\n    0xDAAD4629, 0xC41F3866, 0x2559C272, 0xB1C25848, 0x3F9B1702,\n    0x7C448BF3, 0x8CCEDF5C, 0x3A37F712, 0xFB9E4F83, 0x5754E801,\n    0xB38FD367, 0x780F4825, 0x959330C4, 0xF6276BE5, 0xAE3E2018,\n    0x182DC907, 0x88E733F9, 0x6FF870A, 0x79EF2D01, 0x3EAC0D6D,\n    0x20D4FF88, 0xAE6EB8C1, 0x80810451, 0xC228E035, 0xBD942803,\n    0x3F3733F2, 0x9F8F16F6, 0xAAA65031, 0x55E839BC, 0x7EAD3461,\n    0x5F5BEE8A, 0x8668BDBA, 0x399366DB, 0x2A54237E, 0x776789E,\n    0x7B171AF5, 0x8C9FCB92, 0xD87465F2, 0xFA3CAAB5, 0xBA5B131E,\n    0x1FD2D438, 0xDCAA9DA, 0xE1BF0AAA, 0x1EAEA8AE, 0xEB46A646,\n    0x989D1EA2, 0x98E8B45F, 0x12A2415B, 0xD107D293, 0x5F54D087,\n    0x95AF5C33, 0x2A12BA88, 0x6381D0FF, 0x688EA1E0, 0xACC60CA2,\n    0xF19636C6, 0xD4D465E2, 0x2A50DC57, 0xFB595CCF, 0xF5C63674,\n    0xB4965626, 0xB903D3D0, 0xD9581548, 0xBBD9E82E, 0xE22BCEF3,\n    0x9FE759D, 0x6E8D8F4E, 0x655325D2, 0xE1986814, 0xEA2B93BF,\n    0x88085C18, 0xF82BFCB0, 0x3FCF713F, 0xADE03EDC, 0x2D2DDCBC,\n    0xEDE2694E, 0xF6DFB11D, 0x5CF35A5A, 0xD38C82D3, 0x52DE32CF,\n    0xB88EA70E, 0xF7FB134F, 0xAEC78D1E, 0x58402C66, 0x54CD1763,\n    0x78A7EB4, 0x88F49C30, 0xDC17F8C0, 0x9C49A368, 0x926E18EB,\n    0x4DD461E1, 0xA6BD8F3C, 0x6D2E4C31, 0x657506D9, 0x445EF83F,\n    0x77E28461, 0xF715400F, 0xBB76D1D, 0x9B670CD2, 0xCEB9EB90,\n    0x7F297088, 0xD3929A52, 0x9B62909, 0x46474012, 0x3D74DFDF,\n    0x46288EF0, 0xF0C51C07, 0xEC642B66, 0x3C76B83C, 0x1E72D08F,\n    0x9F95DC1E, 0x106883C5, 0xB6A867BD, 0xA532C423, 0x95076036,\n    0xA9DBEA73, 0xA3F8C65D, 0x799CF6BF, 0xA4508346, 0xB37CACB2,\n    0xF6A07B5A, 0xA2C24137, 0x2E1D8DEF, 0xD28C26AD, 0xCE745089,\n    0x3B7D9638, 0x7189CE82, 0xBC3F7850, 0x5660A9B8, 0x13895B5C,\n    0xFA59A643, 0x9B0FF4AF, 0xFD2B4FD3, 0x4C0C4E52, 0x272631DE,\n    0xA52FAE47, 0x65850A25, 0xD51ACF2B, 0xD206E6EB, 0x3CDC96EB,\n    0xA6FF9E3A, 0xFC601E27, 0x658EF7F0, 0xB45FF508, 0x36A9A571,\n    0xCE75E7E9, 0xC4BF9261, 0x3A261099, 0xF1B1CE3E, 0x3D28A165,\n    0x3435D2FF, 0x70830AAE, 0x8DFE14F7, 0x3E27CDC1, 0x97BE4BA1,\n    0x33F8D0E2, 0x9B2E7BCD, 0x1923B1C, 0xAA248E78, 0xFDA8AEB9,\n    0x7825E511, 0xBF20B777, 0x218E4234, 0x7B5D1181, 0xA08988A0,\n    0xD9009231, 0xEB15A567, 0x47E045A0, 0x3C515808, 0x35194ACB,\n    0xA476304A, 0xEF738BD6, 0xD035FB8C, 0x3B2013F4, 0x4DE60F26,\n    0x361431DC, 0x82ECB228, 0xAB22266, 0x4E056EEE, 0x6642D288,\n    0x48D851E3, 0xE05D55D9, 0xDC2D6D4F, 0x158F7F48, 0x5D7F7D5A,\n    0xC2835158, 0x793509C5, 0x479DF33C, 0xDEF0696A, 0x9FC2BECD,\n    0xF4EFC675, 0xF8D1FF02, 0x493D3BD6, 0x7FA1C10F, 0x641B324D,\n    0x996DBDDD, 0x24098529, 0x81CCFC35, 0x47F0BE17, 0x5E241815,\n    0xF7F62788, 0x261CDAF5, 0x10CBC4B8, 0x5D6C6A7B, 0xD671AE81,\n    0xB2C8DCD9, 0xD215CB7E, 0x3403AB1B, 0xA7C5999, 0x4675A50,\n    0x369C560C, 0x32C619D9, 0x4FD2E12E, 0xB4A20359, 0x37E93502,\n    0x5EC0CE10, 0xB374340, 0xB0DF0419, 0x5960ED4F, 0xF0A7770E,\n    0x7F504F30, 0x54A92972, 0x3E9848B8, 0xCD980ABE, 0xDE69D570,\n    0xA9FDFFBD, 0x9812C681, 0xDAFCCF4E, 0x2B636CB5, 0xB2B9FF2D,\n    0xB9972800, 0x701231C6, 0x2E1108F8, 0x8C323A3E, 0x20A17A77,\n    0xF2C6CC7, 0x44C5FD1C, 0x731622D4, 0x9BF0C91E, 0xB61CD1B1,\n    0x61FA9CF2, 0x5E460518, 0xF75A1C06, 0x417CCEE2, 0xB45E0FB5,\n    0x53DC30E8, 0x500CBD7F, 0xED61DAE3, 0xEFE91818, 0xB56814BA,\n    0xD37D84C8, 0xD5DA9ED7, 0x5F40F92, 0xF1507FAD, 0x2CC74A65,\n    0x32AA6279, 0x33731317, 0x30E09F03, 0xE1D9C403, 0xC21E638A,\n    0xA7394D05, 0x3879F710, 0xDBB52C37, 0xB7780268, 0xE268E178,\n    0x9F8072D3, 0x97CC035A, 0xEE65287D, 0xA197441A, 0x21C8AFA4,\n    0xB81B50A9, 0xAF6ACC93, 0x7BB55B77, 0x564A0BD4, 0x17F7A6A9,\n    0x36627846, 0xDCE746EA, 0xBB9762DE, 0x47B5B8F0, 0xEF5DA4AD,\n    0x1922E420, 0x15F9299D, 0x243DAB0D, 0x953C67A3, 0xF3DA71D8,\n    0x57122A3E, 0x423A78B, 0xC4A53000, 0xFBE92583, 0x968F3AE,\n    0x61629123, 0x792FA07B, 0xBF45729D, 0x99DDD38E, 0xA14565FC,\n    0x268E9E3F, 0x7EC9286, 0xCCA1D92A, 0xF06519DA, 0x22396664,\n    0xD5DAC24D, 0x71BB4DD5, 0x7D329BB3, 0x401DAB69, 0x19D3E40A,\n    0xB6F40F32, 0xE8D1CAF8, 0x5CD5F35D, 0x6F662316, 0xD38D1A6C,\n    0xF86E720F, 0xE165D1B9, 0x1BC14E79, 0xC19FB43D, 0x891C013B,\n    0x44AED4DC, 0xA7351AAC, 0x5F707A18, 0x3850148, 0x4A425E1,\n    0xF7DD6EBD, 0xE0C3FD0E, 0x8266A425, 0x3BA17650, 0x48753ADB,\n    0x679FA015, 0x88771712, 0x2174B185, 0x29F9A85A, 0x1560964A,\n    0x198E4FCD, 0xD3410A86, 0x9186793D, 0xDAFC5C35, 0x971F4CC8,\n    0x1F8F0E8B, 0x11A884F2, 0x66E6D2AC, 0xE85ECDB0, 0x86C76472,\n    0xDF3B3320, 0xEEF446A6, 0x834CF19B, 0xECEA602A, 0x46C680AD,\n    0x807BA92F, 0x4B3FC42B, 0xEC229845, 0x3FE389C1, 0x63E042D7,\n    0x6C855119, 0x7B1ADF33, 0xE1B9CAE0, 0x62C20BAE, 0xEDF0E919,\n    0xA50FC7EB, 0x2399262F, 0xD6F88130, 0xE2ADA5DB, 0x7D07BC3C,\n    0x36A922F3, 0x7693B84E, 0x3015CD0C, 0x1D1047A7, 0x5D3A75A5,\n    0xEE6F1CA9, 0x734BD19F, 0x3308DD73, 0xCEBBC9FA, 0xF79DD5A6,\n    0xA41CF168, 0xED762FD8, 0x6642159, 0xA63C5CD6, 0xCB96A282,\n    0xA29D9F5C, 0x45CC6CD4, 0x344611EF, 0xC345FE03, 0xC55ADDE0,\n    0xB2B8374C, 0x14F730B1, 0x301D9266, 0xA2D98FD8, 0xBC107DF,\n    0x59905EE3, 0xDB3560DF, 0x1D49F4F3, 0x785F8E0B, 0x8B116097,\n    0x56154F60, 0xE312D829, 0xE0AFAE9B, 0xEAE3692E, 0x95915B8F,\n    0x83BEEE75, 0x48C1C92, 0x8166D95E, 0x697FECA8, 0x135DEBF9,\n    0xF83E6507, 0x11570809, 0x4862CBDE, 0x820E288D, 0x6CA59B2B,\n    0x49DF6AD5, 0x86F41C43, 0xDD128A28, 0x601198A0, 0x3DDD49CB,\n    0x95F3ACCE, 0x500CD9D6, 0xF54A50F2, 0x9936957B, 0x7C881875,\n    0x743B055D, 0x44FD7934, 0xAF2253BB, 0xA2F4A27C, 0xBA8E1C2B,\n    0xCCFA3259, 0x892FC73F, 0x283E74B4, 0x86119027, 0x87961F02,\n    0x1D015187, 0xBA83B762, 0x61948B32, 0xAC741667, 0xFA9E0E39,\n    0xD440D9CB, 0xED93F9F, 0x5FA97905, 0x2F5F82D8, 0x92EC7646,\n    0xC60B3F9, 0xAA28822A, 0x7BA7CD3D, 0x3E41A20B, 0xDE4441A9,\n    0xC75E539B, 0xD9D568C2, 0x2DCAE06, 0x7762550, 0x21C2D5EE,\n    0x95CB6C94, 0xE31FC800, 0x3C03C172, 0xE166E564, 0x359C5102,\n    0x7F717599, 0xBE301B47, 0xB207FA5C, 0x38B8B24B, 0xE6EFF05D,\n    0x9F09D305, 0x31A27808, 0xC56D934F, 0xB440BD60, 0x52B1AAC4,\n    0x78654045, 0x106A67B8, 0xF2A861E5, 0xC45D72B0, 0xA8FF8296,\n    0x97F475A6, 0xDC222733, 0x7A835D7A, 0x45774E9A, 0x9E558C34,\n    0x1124605D, 0x1689FED3, 0x70AB9928, 0xADBF8E55, 0x9C09EE27,\n    0xF95A8C49, 0x75CD52D7, 0x4FC7275A, 0xA46C29F6, 0x747D788,\n    0xA3347E5, 0x5B08AB02, 0x13CDC08C, 0xEDB65176, 0x6B36600A,\n    0x26F5AD2A, 0x39949D1, 0xA1C8F6E5, 0xEBF0CEFF, 0xAB60A06B,\n    0x10E522E8, 0x80E056D8, 0x1B301392, 0xDC3E0B07, 0xE10174EE,\n    0x25DC4733, 0xB4E5A24A, 0x4B569CFE, 0xCCFE9F0D, 0x19BDC038,\n    0xF8A0A718, 0x9944E8E0, 0x9591528, 0xBF27BDF1, 0x2C160255,\n    0xF9E2F1B, 0xCE4FD96B, 0x703B2A77, 0xDB6EB2A7, 0xBFC2FA6A,\n    0x11D00F81, 0x9540FD8D, 0x75849882, 0x183AC87C, 0x91DD1783,\n    0xA3A0CC0D, 0x47F1CED1, 0x4DA4EE62, 0x819BA59E, 0xD5DA1DA5,\n    0xDC218BF5, 0x899CC3A1, 0x1DECAD82, 0x77E193A5, 0x9F390C10,\n    0xF5FCD674, 0x1E43657A, 0x6B61D25E, 0x99B9140E, 0xFEFB9CF9,\n    0x6569445D, 0x14C9A2AF, 0x85A33FB1, 0xE4029ADE, 0x4FABD0FB,\n    0xDE02379B, 0x65C8311F, 0x3CF60630, 0xC8B179FF, 0x9D83CE64,\n    0xFF683C7E, 0x6D796948, 0x249B0AFA, 0xC5A65FDF, 0x252DA26D,\n    0xFE92E52E, 0x90D081E5, 0xC5A8E180, 0xEBDB0943, 0xB0E7C78B,\n    0xD5A89E4D, 0x684EE280, 0x8AAB613C, 0x6BD1547, 0xD12F7355,\n    0x9C5D1363, 0x91E410A4, 0xDC841FBA, 0x703A9371, 0x79F8663,\n    0x553650FC, 0x633CA726, 0x20107BD7, 0x2565F252, 0xCDD93830,\n    0x3446CF7, 0x92B6B42A, 0xA070B2D1, 0x5E0384D1, 0x7CC5A19C,\n    0x6890558F, 0x10D308AA, 0xDFF3016C, 0x1093AA3B, 0x8927683A,\n    0x9259502B, 0x2B544B7C, 0x419B1B1A, 0x22D9E939, 0x568ECCEE,\n    0x4F3CE09B, 0x8B990521, 0x8D6906A3, 0xC15DEDC4, 0x98384A4A,\n    0x8F2F2652, 0xEDB9D614, 0x1D010AC3, 0xA2CDC134, 0xEEE9A9ED,\n    0x241DB9A2, 0xE9DB9AE7, 0x7A788F9E, 0xBD0778B7, 0x27373539,\n    0x7C6B4A4B, 0x3C7A6B37, 0xDE1C625, 0xC1256E67, 0xB8E69163,\n    0xCC05D09B, 0x728A1427, 0xECAC2530, 0x1DD40BC8, 0xEFE42E56,\n    0xB4266BE0, 0x9AD3F869, 0xDDFC2F60, 0xEF29B3F7, 0x7C15F90A,\n    0x705C2992, 0x99AC7AEA, 0xCF1F09A0, 0xB41F14D9, 0xBF3C252C,\n    0xF3483286, 0xD3AC398E, 0xB84BC93D, 0x6B780D11, 0xF682D379,\n    0xB8A062C2, 0x9A003A9E, 0xF18F54FC, 0xDE81BB83, 0xE84C5234,\n    0x37CB67FA, 0xDB685C6, 0xBF2BF28D, 0x8CDE583, 0x94CCD0BD,\n    0x8BCAF516, 0x31BE93C2, 0x3ED4B623, 0xCD23346E, 0x8254E7A0,\n    0x6091EF1F, 0x17A42562, 0xC9821677, 0x447B6623, 0x19D9356C,\n    0x4A1C1953, 0xD1F3B7F9, 0x99F8388D, 0x62F22304, 0x5EDF1ECA,\n    0xB6C9FC2F, 0x42968E22, 0x531BD76E, 0x25E6A95A, 0xA1669784,\n    0x8B915BD2, 0xA5E21483, 0x5ABE3226, 0x605C0E15, 0xFDE713CC,\n    0xFAC58D3B, 0x44FAF6E8, 0x41E2D699, 0x8EE11E34, 0xB03BE4F6,\n    0x75054C0D, 0x1AF2D37, 0xF38E6829, 0xE7F2A519, 0xC9CF2CFF,\n    0x996DDE8, 0x395AC493, 0x42AFF184, 0xB380B71C, 0x11AA0B90,\n    0x66DC636, 0x56557CA8, 0xCB8CAA43, 0x9EBF806E, 0x63F66159,\n    0xA011191D, 0x17B0AED3, 0xB9621251, 0x2B189E3, 0xD45A5D7,\n    0x23009D12, 0x5DEB7918, 0xFDFB1FC8, 0x46808A73, 0x91D29330,\n    0xF872C15D, 0x7BE90206, 0x257E9FCB, 0x2E52FF67, 0x1852DDF9,\n    0x6A2C5C49, 0x6ACF891B, 0x29FFB0E2, 0x76E32CD2, 0x588799,\n    0xD71D970E, 0x9B079EC8, 0xEBD25420, 0xDDB60276, 0x761B106F,\n    0x871473C4, 0xBC697CE2, 0x5378E0E9, 0x8DAECE28, 0xE5B275FA,\n    0x6E6E332, 0x853884E7, 0xD0FFF1A2, 0x722D372, 0xDD5A754D,\n    0x87CDDA3C, 0xA9B629C0, 0xAB2E650D, 0x1709413D, 0xDAE63819,\n    0xC60DE8CA, 0x9F344BD6, 0x8E651EF9, 0x3B6A8019, 0x95CC1296,\n    0xB12DAEAB, 0x8D550156, 0xF14E85AA, 0xD2547469, 0x6336E320,\n    0x223B05B9, 0xB88AD493, 0xEE14916F, 0xC78AF1FE, 0x65FC2787,\n    0x778FA85F, 0xBA23A57E, 0x957EA954, 0xAE4F9577, 0x47C38D4F,\n    0xDB7BCDC9, 0xBA13E42E, 0x46B01094, 0x1A15F5E4, 0x315AB789,\n    0x9E44B54F, 0x8C690B2F, 0xDC4954CD, 0xF176F3FF, 0x9B154C06,\n    0x112BD6D0, 0xCB120BBC, 0x11101771, 0x1F29A19D, 0xC3F8193A,\n    0x805D6739, 0xE3B00ACB, 0x23DD9494, 0x4F88EBA5, 0xE6F32E0E,\n    0x4B76F089, 0x43B66BEB, 0xF2420B12, 0x2CFC5E01, 0x1C68D3DC,\n    0x30C1BD38, 0xF3A0FCCA, 0x2AF13CD5, 0x13E38185, 0x2DEE2A21,\n    0xFC318E26, 0x1954D4B6, 0x3FB86424, 0x24D698F1, 0x4AB76D48,\n    0xA9E87BD9, 0xCE1DD2F2, 0xF5904D9F, 0xF614DB18, 0xF83111D,\n    0x1FB56EFD, 0x5CBD08D8, 0x2D8D4884, 0xE388C534, 0x413D5BB8,\n    0xEB6D14D6, 0xAE54E361, 0xF73D926B, 0x43F27197, 0x7C50A2E5,\n    0x10EDBD6C, 0xD151B569, 0x47C50C06, 0x8FD59E74, 0x551C6841,\n    0x2EC2B6DC, 0x5CEAB3A9, 0x1E6A1609, 0x3FB07FED, 0xC0D5849A,\n    0x6354A21B, 0xEBF18830, 0x2BB3EBBD, 0x9D4DF510, 0xBBBE1103,\n    0x918D6DDF, 0x3FEE7A8B, 0x4FC47254, 0xE0E1EA65, 0xF3DDB31A,\n    0xADF8DE67, 0xADA31FAF, 0x2BC0B8A2, 0x184B7432, 0xFDB2E733,\n    0x236B014, 0x21062C, 0x8FAAD8D7, 0xA1DA7E44, 0x3EF7F42F,\n    0xA67AAB82, 0x9238F0D8, 0x42F93C63, 0xEF0F4BA1, 0xE61DC644,\n    0x994EF92C, 0x71A58613, 0x371665E5, 0x82E77BA1, 0x2FFA1DAE,\n    0xFE19AAA0, 0x95C72A53, 0x6A21395F, 0xC03F853C, 0xBC7B73BC,\n    0xED62A949, 0x4F7D3C52, 0xCACFB353, 0xA1629BE9, 0x16255784,\n    0xAE465FC4, 0xE7FC2626, 0x5E9B0FC2, 0xD109084D, 0xE30E7B89,\n    0x94CD7424, 0x6127AF6E, 0x7D08ED7, 0xFA0B9293, 0x450A112F,\n    0xD0D79344, 0xA204F8B0, 0x5F825780, 0xD681148D, 0x71C6AE83,\n    0x1DF62587, 0x99ABC8A6, 0xCFEE8131, 0xFCD11719, 0xD0D48B0E,\n    0xCC4A710E, 0x7414791C, 0x22167734, 0xD17FE049, 0x5BF15C46,\n    0x30B718E0, 0x6E85104E, 0x52F72575, 0xA17F09E1, 0xCDA7B24E,\n    0xDAF7D03B, 0x3632D94B, 0xBAF4E9EE, 0x390CD998, 0x168C055E,\n    0xBC2D8D0D, 0x35E9F642, 0x89757E1A, 0x2BB98011, 0xC19BCD15,\n    0xEEB73587, 0x6A5194EB, 0xC2C1B4BA, 0x3C8F73FC, 0x8F075D29,\n    0x42D39406, 0x6674167A, 0xC0904A73, 0x1158FE6B, 0x4CAD2FAD,\n    0x9A7EC8A5, 0x651960A6, 0xD0329ECA, 0xF5130525, 0xCC7C40CD,\n    0x259AA3D8, 0x9669412D, 0xB92D39A5, 0x29B217D2, 0x27A07E25,\n    0x9AFFD359, 0x7E8F5AC9, 0xCF7C0F61, 0x5B4F8D7D, 0x31C4E97E,\n    0xBDB9599C, 0xA85BD7E0, 0x87F0BAAB, 0x2852E628, 0x377BD41D,\n    0x4B54844, 0xDABF47AE, 0xA1B7AF6B, 0xCCF57165, 0xA90C4348,\n    0xDC1CE2FB, 0x42582D37, 0x2892F4E0, 0xB89AC8E9, 0xB2718E40,\n    0x93BCCE08, 0x5606C693, 0x1952D10D, 0x96609D8F, 0xEE3BC3C7,\n    0x2DFA50E8, 0x5582FD75, 0xBDC2618C, 0xA3D922EE, 0x8F766106,\n    0x184ED901, 0xDAABDE09, 0x40CBD4E2, 0x4A9A2A70, 0x9814D393,\n    0xE394A090, 0x9EA06A4F, 0x2EC8C8A2, 0xFD2EAFF0, 0x2F6C96B5,\n    0xBB17EF37, 0xDA677FE2, 0x2357E330, 0xA8C9DDED, 0x735A7B2C,\n    0x41C2B39C, 0x787E099A, 0xFBF8204F, 0xA56A4B69, 0x7DE2860,\n    0x34299BB3, 0xD1CAE881, 0x5F452DDC, 0x700904E8, 0xC3B47017,\n    0xF7040305, 0x5C42BE94, 0x88AAAE53, 0x9FCAAD72, 0x2774D420,\n    0xDD685357, 0x80499592, 0xC5FB26E7, 0x90BA598F, 0x4A13D60A,\n    0xC6D5F72, 0x97C35532, 0x6580493F, 0x9D31E266, 0xEF926A38,\n    0xF68CF9C6, 0xF770C570, 0xCA18C06A, 0xFA2BB2, 0xFBA375DC,\n    0xC2FE76ED, 0xB91611FA, 0x528A8EA5, 0x360A527, 0xF631D04B,\n    0xF0C67ECF, 0x4E490A69, 0x19DB46F0, 0x497DFBF4, 0x58E490FC,\n    0x24A51378, 0x186BDC14, 0x90E633A3, 0x6D6F8D95, 0x2FDE02DD,\n    0x4B2714A6, 0x6FC87FE0, 0x21569667, 0xDCC31F06, 0xC9D9DFD0,\n    0x830AA4A4, 0x78FBFE69, 0xDF17CD55, 0x3952AAA7, 0x9A4B5A7D,\n    0xB1EBF3EF, 0x4F3BC1C9, 0xDFEEBF40, 0xAB130CC8, 0x1EB84425,\n    0x4625E802, 0x20B990D6, 0x4E36869F, 0x5EEC0472, 0x29194460,\n    0xCA425ECA, 0xEB0742C, 0x17D07C02, 0xF38BCA14, 0xBC9D555E,\n    0xF15822E7, 0x89CF96E0, 0xAA848F9C, 0x90731AC9, 0x86EECBE3,\n    0x308F3257, 0x5FF375DC, 0x1E62C041, 0xFDB6A3E7, 0xDFEBED8E,\n    0x8FC77E76, 0x6973E542, 0x2AD1616C, 0x99B549C6, 0xD28CF364,\n    0x88C87768, 0xECA2CFB, 0xA0D0B060, 0x42DFFD8, 0xAF80A6DE,\n    0xFF323760, 0x1CB2DAAA, 0xD11DE4FC, 0xEEBF565A, 0x9C986CAC,\n    0xC1C95B3F, 0x6868BF0, 0xF5604930, 0x316DD9EF, 0x1231D331,\n    0x95E38E67, 0x7D30C191, 0x354804BA, 0x265EE5E, 0xC6728C70,\n    0xD36F32D0, 0xBBEA0ECA, 0xD055ED76, 0x9135E317, 0x8A7B9770,\n    0x4D1344B0, 0xE9F29AE3, 0x7BA303B9, 0x2C38AEC, 0x82ABCBA6,\n    0x7729F177, 0x71793932, 0x6FE6E38D, 0x1F8416B, 0x147D8310,\n    0x6A962FEC, 0xFE2F100E, 0x4FB1D511, 0x3D38AB33, 0x58ADC416,\n    0x64B07504, 0x458CC4B4, 0x584BC93E, 0xDE49B6D1, 0x7347876,\n    0x4A2C3EB6, 0xDF5DE09C, 0xBFD376DC, 0xC9F451C5, 0x5F793A0,\n    0x892952A2, 0x15060767, 0xE1E3B589, 0x4D513C3F, 0xAF3D2CC7,\n    0x289DAA2E, 0x8C711417, 0x62E5E006, 0x3BECED98, 0x99E73ACC,\n    0xDE156054, 0x1283655B, 0x5123FC41, 0x3DE21841, 0xC032F050,\n    0x94B5151F, 0xA5577757, 0xCC0C8DF, 0xBDB52821, 0xD530FAAD,\n    0xD070D8FC, 0x46F5BB68, 0xB02DFF88, 0xD4923EA8, 0xC85A5622,\n    0x93E834A3, 0x38E84468, 0x79408C75, 0xCCB635, 0xE76BADA2,\n    0xC2296DA1, 0x711543BB, 0xF441F4A2, 0xBD18127C, 0x8385BFB9,\n    0xD350D4D, 0x90FAF999, 0xABD1A695, 0xFCEE12C7, 0xF428912A,\n    0xC9759F80, 0x6DB6491, 0xD1421D30, 0xBC398DC4, 0xB8E0A889,\n    0xC854AA72, 0x82CAAF64, 0xBB6A65BC, 0x6DCB2D0B, 0xD215ADB,\n    0xF45033DE, 0xC1300029, 0x665C61DF, 0x756D1875, 0xBD2CF722,\n    0xC477E3C7, 0xDDD97C9B, 0x89AE48E4, 0x65000FDC, 0x1FD717CD,\n    0xBEEA764A, 0x8FC2DCB7, 0xA162EFB3, 0xD4AC2490, 0xCDA9A72A,\n    0xBFB4EE17, 0x66C73CBB, 0x6B7CB021, 0xCC5AF099, 0x5389E8B7,\n    0x7668286B, 0x31A223BC, 0xA66475FF, 0x9C3DDA93, 0x2F3171FE,\n    0xDB89A7DA, 0x1699616B, 0xA380F010, 0xB05D7388, 0xD774EA44,\n    0x64D6091C, 0xF23298F8, 0x71C88081, 0xF90C4A04, 0x2FBEEA4F,\n    0x2F9178BB, 0xF8723D8A, 0x1C07FCC8, 0x36D24E08, 0xE02A8B61,\n    0xFD6312AE, 0xA7DDCE9B, 0xAE45AC52, 0xCA2EC55C, 0xEEC6BE42,\n    0x244F3D79, 0x994FB339, 0x8316CC43, 0xE3CEC898, 0x8D37639,\n    0x833D21BB, 0x4333A2F7, 0x95F3B0C0, 0x7258174C, 0xBFCF0EF7,\n    0x9A7F4883, 0x71F2406B, 0x16B2BA04, 0xE1BCEA70, 0xE3C6798A,\n    0x3FBF481C, 0xF5A8D117, 0xB37ED250, 0x49AB5E0D, 0x2793A7EB,\n    0x45DF69A7, 0x4EE4B815, 0x98259530, 0xC223CA40, 0xDB7B208A,\n    0x4AD3C0F7, 0xE7C33E50, 0x49FD7631, 0xA228021B, 0x2C27FCB2,\n    0x5F77BCF4, 0x65D593D4, 0x7C700797, 0x6E67920A, 0xEABAF033,\n    0xBFC8B68B, 0x8835B368, 0x90CACC99, 0x6B90E022, 0xF2466D89,\n    0x432DED25, 0xEFC94B45, 0x3116C3E, 0x1BBFBC45, 0x8FBC3D21,\n    0xFB2039AA, 0x50679156, 0x450F8837, 0x73C7F87D, 0xC27898A7,\n    0x7F48E602, 0x5064FCB3, 0x1EB6F58F, 0xE647C845, 0xBC8E84EC,\n    0x5C4B8FFC, 0x440A88B7, 0xA490480E, 0x371DC115, 0xE1F236FE,\n    0x4D65A2C5, 0xA965B0B7, 0xD05512FB, 0xDFAB9656, 0x191C627C,\n    0x56B7FAC3, 0xF304A2E4, 0xC7ED6DF0, 0xD09B8C49, 0x1A1E777B,\n    0xE70746BA, 0xEB582E9C, 0xFA6014DD, 0xB3B67784, 0xD3F64D81,\n    0x318872EA, 0x4D241611, 0x134DF119, 0x2EA55DFA, 0x71A8D182,\n    0x15AFE856, 0xD5CD885A, 0x5EA2B899, 0xF87BC7FC, 0x25DE8D6,\n    0x93837315, 0x341C3698, 0x58534F, 0xF10652DF, 0x18C92AA4,\n    0x17E969AB, 0xC12D08D, 0x6B0D0FBD, 0x40ACD3E2, 0x8C3AD43C,\n    0xFDE55C9D, 0x25A58094, 0xBBCAB168, 0x2F06ECA1, 0x9D23A101,\n    0x6F850449, 0x769C743A, 0xB63FD349, 0x3B3C852F, 0x1EC89061,\n    0xFE8C7369, 0xA19C0F73, 0xB682F1D3, 0x48DAE3D4, 0x7F9FD390,\n    0xEF784A6E, 0xCB23F15, 0x7BEB1E0E, 0xCBE90203, 0x6979F11D,\n    0x251C50A4, 0xDAD9C59F, 0x5E4E5BFD, 0xCCD4DF48, 0x72BD66E,\n    0xE7FB1B35, 0x75B4B83B, 0x29E9282A, 0x2590317D, 0x7835F9A1,\n    0x25D3602C, 0xCFEC2E4F, 0x9CA2B0E7, 0xA4714302, 0x8F3D53C4,\n    0xDE00F109, 0xC26D6273, 0x3E8DC623, 0xE3A972E2, 0xF67DF096,\n    0x781682A5, 0x6C16F144, 0x49DC8D17, 0xB2EB82EA, 0x3CB93D91,\n    0x44D4D3C4, 0x556040F, 0x1406DD74, 0x55FA83ED, 0x91C35357,\n    0xF5A1C63, 0xA64E34D0, 0x7DF58C80, 0x62E97E52, 0xFBA1A2FE,\n    0x8CB29D60, 0xDC1AEDE5, 0xB260BBF, 0x1AD9C6A6, 0xC60E9788,\n    0xAD9DFA42, 0x2E422C17, 0x51CB5E86, 0xEB840466, 0x2666D5D8,\n    0x7A0F7C62, 0xDE052A31, 0x6F0330C4, 0x9142D4AD, 0xDC8578C9,\n    0x978F3E76, 0xEE43CB4D, 0x14E7EFC7, 0xB50B064B, 0xD7FB2900,\n    0x67C4F4A3, 0x4D1193D7, 0x5091FB73, 0x3EB9C846, 0x960BE069,\n    0x88250E7E, 0x94503385, 0x1C1F244A, 0xCFD72CE3, 0x8CD5F105,\n    0x2B34131F, 0x60D266E2, 0x16BA806A, 0x25C25A42, 0x5FF6C068,\n    0xD23A191F, 0x7AB5C53D, 0x9EA37FBB, 0xD1AD4B07, 0x40BCB39C,\n    0xF45C8526, 0x80FEF5BF, 0x197D6D43, 0xD56FD4D0, 0xF39E498B,\n    0xFB4F6847, 0x84DF289A, 0x2246F5CF, 0xF979B823, 0x42DCD843,\n    0x1AB1BB0C, 0xABEC5FCE, 0x6E7EBC1, 0xE013DB54, 0x73BC8A04,\n    0x88D0F71E, 0x4D93B6D8, 0x57B0B7CF, 0x99371728, 0x86B129E9,\n    0xF4EB3DD2, 0x6956AA9D, 0x4C84AA0, 0xFD22CA10, 0x36E6915F,\n    0xC830D7EA, 0x1EE1666, 0x1036A43F, 0x3FC86E7C, 0xF10F9CD2,\n    0xEFF5F21B, 0xBF9082E0, 0xDD0DD00C, 0x80524F27, 0xDD5A3222,\n    0xEA53B93F, 0x7FDA09AC, 0x89840C97, 0xC3A9BDCF, 0x1EC26899,\n    0xEBCAF99C, 0x2EBB3226, 0x936A3254, 0x2E1E1786, 0x57E4CB9C,\n    0xE5CDBE5, 0xFBA2458C, 0x48F3D0EF, 0x74FD06AB, 0x96C30795,\n    0x14FEF0E9, 0x2F5FBA0C, 0x3CCEA60E, 0x7BA0354A, 0xCD7329FF,\n    0xD4169550, 0x5FAA5E66, 0xF0C25CA2, 0xEBCC8065, 0x3F147D8F,\n    0x5ED3293E, 0x6457117D, 0xE4CF4B98, 0x11F1E74E, 0xC13F47EC,\n    0xBC7E22DC, 0x22512D19, 0x9140ACBB, 0x490D52F, 0x3E2D54C2,\n    0x9FCBBC1B, 0x89646A33, 0x9FE4B65F, 0x92CE9ECC, 0xFBD59FB9,\n    0xCE95DAD1, 0xBBCDE794, 0x9C0FA1C6, 0xCFD90F8B, 0x494C1770,\n    0x21AD2AAE, 0x58EC00A6, 0xB0848A25, 0xEC4FEB5E, 0xFF1517EC,\n    0x52871C07, 0x105E05B0, 0x178B1913, 0x18023805, 0xB16BBC6B,\n    0xF8522A7F, 0xB17DEC22, 0x3808ACAC, 0xBC5B9043, 0xBEC01BA4,\n    0xBC6CDA0B, 0x17906D50, 0x8422829F, 0x51C9AFB9, 0x54F78CEF,\n    0x72CEEA16, 0x76A74B94, 0x7EC063E2, 0x51C65B1D, 0xD97ED9B8,\n    0xDE89F034, 0xB5AEEFA0, 0xB88D3E9D, 0x9D4C57AE, 0xC8CEA9C1,\n    0x941A74D3, 0x8E2FC33, 0xEDCEB551, 0xB91FA3E4, 0x8BA2261F,\n    0xE558E0F2, 0xA4E81979, 0xAAE31455, 0x70B62249, 0xD48D1A67,\n    0x11767EB6, 0x823DFECA, 0xC815C538, 0x2AB67EE6, 0x22FA86BA,\n    0xD7A1F96C, 0xBA96E382, 0xB75B3FB7, 0xCB705FAF, 0xD1B9D3E2,\n    0xD4C8DC2F, 0xF954B0A5, 0xDABE493B, 0xCA3FBB37, 0xBBDC387C,\n    0xA30C87D6, 0xB5B493D5, 0x584F5615, 0x90FB6370, 0x5544A92D,\n    0x980F7FA2, 0xF1459235, 0x130B11BD, 0xC7A44998, 0xFEBCA776,\n    0x7943BE84, 0x72C99B04, 0x353F6042, 0x66F5C2F2, 0x9C5B2CC5,\n    0x9FF06E41, 0xAC9E5492, 0xFF9A1CC8, 0x4429DE05, 0x97845307,\n    0xDBA36668, 0x40BEBB2F, 0x606DBA6A, 0xDE7A4225, 0x9AF7FB71,\n    0xE97A0E6C, 0x99C2AA59, 0xE00C525B, 0x5D4F9521, 0x89C5D7BB,\n    0x18481C9F, 0xA27A1F59, 0x2A6267A3, 0xC467981A, 0xE04CE94D,\n    0xAAB2AC1D, 0x5FD1AC86, 0x8F33E395, 0xE1FBE285, 0x636C2961,\n    0xD838584E, 0x2F845D90, 0xAD52A8ED, 0x8F8C841B, 0x829A3861,\n    0xAA0FF413, 0xA079F240, 0xB15D507B, 0x93722B10, 0x833AF929,\n    0x4FB5B879, 0xEDD3031D, 0xE22CE740, 0x9ADF835A, 0x13A0C7A3,\n    0xD5791B98, 0x99D9409F, 0x9F776A0E, 0x8665EC9F, 0x7301EF7C,\n    0x9B341035, 0x59EADE7F, 0x242C1ECA, 0x20FD13FD, 0xE22DAF76,\n    0x3859E84D, 0x6ED83DA, 0x54ABF391, 0xC43F4740, 0x4661F86,\n    0xC6442213, 0x7FEAF294, 0xC0CAC024, 0x38B9FA9C, 0xFFF33259,\n    0x1AD86335, 0xB365445F, 0x54B58378, 0xFD7AE96A, 0xE019B245,\n    0xCF51C4EC, 0x604D7EE, 0x7B40C023, 0xA5E168B0, 0xD7B8C643,\n    0x91C028D3, 0xCB939A6B, 0x169B0123, 0x96FF8CFA, 0xFCB3E126,\n    0xB95C01B1, 0x1758BFB6, 0x50F50968, 0xF774D536, 0xC5A8BFE7,\n    0xE2496BE, 0x6FB8D434, 0x3F7FEDB9, 0x9BDEE991, 0x1CBD2009,\n    0x2CE74DB4, 0x1CB51025, 0xE965ECE6, 0x89100034, 0xA089E8C0,\n    0x5860A65B, 0x9C4D349E, 0x54898852, 0xD07C9738, 0xBC677E89,\n    0x75B5D0C1, 0xCFD435AF, 0xED550357, 0xAED9301, 0xDCD1734A,\n    0xEDCD21D7, 0x69F6A592, 0xEF8009F7, 0x44374358, 0x9405770D,\n    0x668AC4FA, 0x50507E61, 0x2DB19DDC, 0xA9BDD137, 0xFB722699,\n    0xBC067E88, 0x88740174, 0x717CCEDC, 0x9F7F1E11, 0x389F4CC,\n    0xCF4D0018, 0x24588FF1, 0x25C9F951, 0xDA660468, 0x6C09D91C,\n    0xC9F788E, 0xDD4DF43F, 0x8B04484A, 0xC7F67DDB, 0xD2939F8B,\n    0x96BCFDE5, 0xF6DD10D8, 0x1124A3BC, 0x7C281FBB, 0x5FAFA71B,\n    0x58A9C493, 0x4747793C, 0xD3B79E72, 0x357AA675, 0x8E94A74B,\n    0x1994025, 0x95D10FB8, 0x5C64AE63, 0x9E37973F, 0xFCE67009,\n    0x8480F94E, 0x34DA26F7, 0x126CFB46, 0x206AAA6B, 0xBA0A6200,\n    0x8DF3F67F, 0x4936802F, 0x950F62F8, 0x17E64C44, 0xC70E523E,\n    0x2F910727, 0xAF7C5BC, 0x9EA24508, 0x1E945729, 0x55E48FBD,\n    0x897CB57, 0x8C134FEB, 0x54E68223, 0x91912044, 0x7A461BDB,\n    0xCE91309, 0x72135AF, 0xBF94D484, 0xDD752690, 0x32248D12,\n    0xEA092355, 0xC24CA220, 0xE8A95D65, 0xE4E2EAE6, 0x664763E9,\n    0x71F1AA47, 0x832550FF, 0xFFA73B6B, 0x96F5DFF6, 0x60CB9B66,\n    0x75F29F5C, 0xF863AC8F, 0xF16993FC, 0x3503801C, 0x3D1E8B2,\n    0x583CDFF6, 0x62AD49F2, 0x8261843F, 0x826EA9B6, 0x5E2EF3,\n    0x8D3848EC, 0x7391A581, 0xDFC466FB, 0xB38DCBD1, 0x4145C3C0,\n    0x73F322D7, 0x2B55F284, 0x6B19FBA6, 0xD9446AD1, 0x36C330C5,\n    0xB71E4B29, 0xF29F504E, 0xB4FA4CFB, 0x290B6941, 0xA2197E21,\n    0xF2AAE27F, 0x1A1728B5, 0xAFF5632, 0x6AEE763B, 0x2962A376,\n    0x965D67E7, 0x231A8B76, 0xBD3596FC, 0xD4AE3E8D, 0x58D4D740,\n    0x4EA3B6DC, 0x5479A7F5, 0x110A4791, 0x9A772A63, 0x728C4794,\n    0x6D6A0801, 0x3F89D9E1, 0x326D1BC4, 0x49B3798, 0x5E2B3CA8,\n    0x742C385A, 0x89450FE0, 0x24236A74, 0x81AC9891, 0x7BEF3C66,\n    0xACECD674, 0x29009073, 0x94D6BDBF, 0xF2C6CDF4, 0xDBC21EE3,\n    0xC65C89A4, 0x35DC5337, 0xBA281430, 0x787521B0, 0xADF8317E,\n    0xD5739B77, 0x8567F3A2, 0x374E0CAC, 0x5AFFF50F, 0x9654D41,\n    0x4A86EDEF, 0xE16C9A62, 0x59D15E49, 0xA69769C8, 0xA9197100,\n    0x1E04CB9F, 0xA926CCB8, 0x5047C429, 0xB7E369C, 0x812F5F0A,\n    0xA53EA5BA, 0x9AE5C105, 0xD4C7CC5D, 0xC99E02F9, 0x5BCDFE96,\n    0xCDBAA854, 0xCF209B89, 0xBE08E9B, 0x5C73AED2, 0xBD959602,\n    0x63C309AB, 0xEE289A4, 0xEDA954C9, 0x5C54F616, 0x3BC34487,\n    0x47A3C772, 0xAB0084A4, 0x2CFB8D44, 0xF5F8411D, 0x43F6361D,\n    0x12B8467F, 0xCDC437A5, 0xAC96A375, 0x7962CD18, 0x5D728EF4,\n    0x66B11DEF, 0x73C87A6, 0xA35AEF9A, 0xC84F12F7, 0xB1EDE9B4,\n    0x2F6A1752, 0xCF8DA321, 0x2E37F4E0, 0x4985F516, 0x684E49AF,\n    0x56287772, 0xF74F95EF, 0xD994FF05, 0xC1D23E99, 0x81214F78,\n    0xA5DF2934, 0xC2B686DB, 0xABC54017, 0x6918D067, 0x737A798C,\n    0x3904B21C, 0xD4CB6EFF, 0xC256E4F8, 0x38B0CD4D, 0xE2D27089,\n    0x75A00DC2, 0xDC1D5E7B, 0xE2295307, 0x2F0A683C, 0xD00AF450,\n    0xE45C3252, 0xD86804C8, 0xF9628DB9, 0xEA011DB9, 0x6A67523A,\n    0x488B54B3, 0xA292CDEA, 0xB1D1D89A, 0x17415325, 0x3EAD3D80,\n    0x5D092525, 0xB5880E29, 0x1104A8AF, 0xBC177790, 0xEC730159,\n    0x11B0A1AD, 0xB809FD7C, 0xB23FE31, 0xCCBED7C8, 0x45B7F7BF,\n    0x9491B0EB, 0x1B1A90F9, 0xE34F4317, 0xF060A5B3, 0xF795EF1,\n    0x8254A941, 0xC6CC30E4, 0x770FC40C, 0x17EC9C1F, 0x20DA83EF,\n    0xF9CCBFC9, 0x9D0675AD, 0xACEA7EB3, 0x56326F5C, 0x74D4DF3A,\n    0xA8FF9A9, 0x8F55E3E2, 0x5B0D12F1, 0x12DDB28C, 0x95FADBED,\n    0x81F48694, 0xABEE8392, 0x90E96B15, 0x2C44972E, 0x4E2D3A4F,\n    0xE8D34D14, 0x83C03E59, 0xDC295E2E, 0xDDEA452F, 0xC2A2A33F,\n    0x617210DE, 0x69542DB0, 0x1DD96D24, 0x3E3871D0, 0x9DDDAF6C,\n    0xBD326CD5, 0xD87CE143, 0xF3C79B3A, 0x7F811CCD, 0xDE1B1502,\n    0x8075EA04, 0x9D09F1DC, 0x8CCBD152, 0x669F35C, 0xC9414276,\n    0xA2BFFE0E, 0xF8AAE650, 0x190C1AE7, 0x2DBB4A7D, 0x575B247D,\n    0x3A599D3E, 0xB09B4DFC, 0xCE4904A0, 0x63C72670, 0x15A3BD05,\n    0x799B50CD, 0x19A2718C, 0x4142750D, 0x9013BE74, 0x21288938,\n    0x590BD2BB, 0xE4303149, 0x46B308C0, 0xD2BB7D56, 0x1BFB248,\n    0x943B2E72, 0xCAB18644, 0xFCC921C4, 0x5308C4D9, 0x9098CEE2,\n    0x435B219F, 0x69F1BBE5, 0x155216D4, 0x83F2A4A5, 0xE177744D,\n    0x37DF6FDE, 0x9D9EA50A, 0xDFA8D408, 0x6C72E71E, 0xEA617E3E,\n    0xDAD6C13B, 0xB83A850D, 0x45F6BEB5, 0x6AFB346D, 0x400B29FB,\n    0xBC8E57DE, 0xC6C1081A, 0x4F6A9545, 0xF878303F, 0xB9E519DC,\n    0xCCF25FBA, 0xCAE069A5, 0xB79B082E, 0xF70BB7E7, 0xE6A5535C,\n    0xB769EA37, 0xE07CCBCE, 0xA9F04406, 0xBB7E5A7A, 0x10C986,\n    0x5EB448A0, 0x3B154163, 0xCB832FD3, 0x50100140, 0x6963216B,\n    0xEF480040, 0x75B83F45, 0x4A07D8C5, 0xEFDF39B2, 0xDB139034,\n    0x5BE9C8C9, 0x1915F818, 0x852ACD9, 0x58BFF825, 0x64AF5C20,\n    0x1F13AFAA, 0x8A5A1E9D, 0x57870533, 0x98A418CB, 0xCEBDAD9D,\n    0xFA54CB95, 0x707D0BBA, 0x26EE1F10, 0x428CAAC6, 0x33AC77D0,\n    0x6879957E, 0x522DCDE5, 0xE29E9579, 0x4AB0C59C, 0xB5FA1395,\n    0x4C0BA116, 0x297A0F00, 0x440CD4CD, 0x63BCFEC0, 0xAC14638B,\n    0x3C7DF738, 0xC213D3AE, 0x5CA0779D, 0xB49A3458, 0x678D95A9,\n    0x281735D2, 0x1911DA83, 0x3A5EA479, 0x2C1090F6, 0x40C0D5E7,\n    0x33AD6433, 0x49B076BB, 0xA1C1D333, 0x80474C82, 0xC62FE221,\n    0x87F4E57A, 0x4C5C1506, 0xAD5E1E10, 0xE435A8C6, 0x96D7E0E8,\n    0x53E54D01, 0x7EECEA8B, 0x699C41E0, 0x181C6479, 0xAE6E687E,\n    0x2FD27BB7, 0xDF60DD39, 0xC38A3AC, 0x5AC51EC3, 0x8F1205E1,\n    0xBD71109C, 0xCB2CCA62, 0x236D9D16, 0x45ACA6BD, 0xB33BDCE1,\n    0xE1D9134F, 0x410F24FB, 0x3BF34DF6, 0xB799F963, 0x1B2D4C07,\n    0x8D92C15, 0x9CA0073, 0x76772A47, 0xFBB63B16, 0x78F3C3B7,\n    0xF118B4A6, 0x8E86A34A, 0x56693D7E, 0x381EA186, 0xCB9B430D,\n    0xAD11DC36, 0x599B3370, 0x7A6B80C0, 0xF2A282DC, 0xF58F96FF,\n    0x97AADB3A, 0x5AA06FD, 0x44A43553, 0xBE8097C6, 0x4CF5002D,\n    0xBADE20DD, 0xFEC25B7, 0xC8B50C4E, 0xF0C899D4, 0x815F9958,\n    0x77772B46, 0x7413F82A, 0x7203A939, 0xF4623F73, 0x35EE625C,\n    0x2723BC68, 0x33790B09, 0xA58391E4, 0xA27C7C25, 0xBC032556,\n    0x1D812AD4, 0x301BB65D, 0x22FAF223, 0xDCBB79DE, 0x78CE1CBF,\n    0x570C796B, 0x17EF8909, 0x8E2C32E5, 0xB54FF82F, 0x7702F70,\n    0x1C0A78C2, 0xCB3078DF, 0x7155531A, 0xEAC77450, 0xB9DC2EDF,\n    0xA8B6A1A6, 0x57FC52F0, 0x6B5543E4, 0x40679BEA, 0xE46813E7,\n    0x65525695, 0x6C9CD43C, 0x5E5BD786, 0x44212626, 0x847A8357,\n    0x7E39813D, 0x9FE22F0E, 0x29EC985A, 0xC91CF47C, 0xB31A26AC,\n    0xA4C8B43C, 0x8EAB7865, 0xF6F2F67E, 0x3F73A8DC, 0x4FAF5455,\n    0xE1253CAD, 0x3001A083, 0x532DEAE4, 0x6A110DF6, 0x585D0FDE,\n    0x19071CC0, 0x1A351A69, 0x2FEAD890, 0x33902499, 0xA218C193,\n    0x2294A970, 0xB0544EA1, 0xC54B25F0, 0x6C89048C, 0xC8203390,\n    0x237F30DA, 0xE8F10E5F, 0x6B57E331, 0x43744B6E, 0x2EEF4BB4,\n    0xEBD13AA, 0xA9024B04, 0x22895C31, 0x321C459A, 0xFCEFD3EE,\n    0x94772392, 0xA094B3F3, 0xC070FBB2, 0xF30ADCDF, 0x8D294C6E,\n    0x89E4C299, 0x47DE058E, 0x841A807E, 0xDEA7608F, 0x3A45D7AE,\n    0xFE08A063, 0xF2C65E08, 0x4C653ADB, 0x8E4BED1C, 0xC85C1323,\n    0x63DF1750, 0x4EF4B72F, 0x209903A9, 0x3ECCC1C6, 0x4283795A,\n    0x205AC943, 0x38B1ABE3, 0x1241AC5D, 0x7C645871, 0x747695BB,\n    0x29206570, 0x31BACE6E, 0xFDEEDAC9, 0x4DEFF536, 0xCD6CFDC0,\n    0xEB0FAB42, 0x7DFA5EB6, 0x8363D9BA, 0xCFCD2514, 0x69FEB823,\n    0x10BDBDCD, 0xE4C27020, 0x56DCF966, 0x9C97BD95, 0xCDAB9269,\n    0x8316F55E, 0xC62F7354, 0x5415281A, 0x31EBDCED, 0xCDF7A05D,\n    0x5F674F71, 0xF70EE58B, 0x26037964, 0x584174B4, 0xFEA5520C,\n    0xD01A8007, 0x7F2772E8, 0xC2FF1456, 0x7B2CA1FB, 0xE938BBD0,\n    0xD96CCCF2, 0x9AE8088B, 0xF3A25E6B, 0x3780417E, 0xB9E2917D,\n    0x95872990, 0x12D99C68, 0x2FC5DDB0, 0x55437D2B, 0xDB9C14B7,\n    0x6BBE6AF9, 0xFBDC9201, 0xDCB32A70, 0x1CABF45D, 0xD8BCBF4F,\n    0x271AE6A5, 0xD34B8953, 0x58BBFB3A, 0x537F049A, 0x55B51226,\n    0xCD809DC9, 0x846DB4EB, 0xED476D72, 0xEFC8F8AF, 0x6AA3228D,\n    0xA363F656, 0x2207127, 0xA1BBE245, 0x2AB58A00, 0x637810C9,\n    0x91F61AD, 0x347D333B, 0x1E9598E3, 0x2E7BD8C6, 0x8DCE469F,\n    0x73B82620, 0x9257D4E0, 0xD9580F88, 0xE8EF6D53, 0x2D9FAC45,\n    0xB56E2C6, 0x9B369045, 0xB50702C6, 0x955D3700, 0x577CC21E,\n    0xED02FCBA, 0x73320B99, 0xB55DE16B, 0x7F578129, 0x3F6FD052,\n    0xF211A764, 0x9B7F9204, 0xC61EDC01, 0x1363AA4F, 0xEFAF1CF2,\n    0xE5AF97EC, 0xEEAD4FB7, 0xF41B649, 0x373087FB, 0xE81355EB,\n    0xE04FF410, 0xFD04F4F7, 0xFA269CEE, 0xBE8D7535, 0x5FC007DE,\n    0xCF085F76, 0x94D7201F, 0xAF49F41D, 0x8D6E7F, 0x9D63B6ED,\n    0x9A2A0877, 0xF06123D9, 0x6624C891, 0x508266E4, 0x6921EAA4,\n    0xD6E69A49, 0xCDA0F920, 0xA5870B5E, 0x1A93A2CF, 0xE3A030C6,\n    0x6EC03FE5, 0x37FDBDF6, 0xBEFD0BFF, 0x3D3CBD0E, 0x2DDBFD7D,\n    0x8B58AE2B, 0xCAD61AF3, 0x624F4677, 0xC402CF5E, 0x431D2CC1,\n    0x5C205AE5, 0xFC3B8ED4, 0x501C36DA, 0xBC9217E5, 0x6752573D,\n    0x3BE702E, 0x8E06CF12, 0x81494C86, 0xB2DC2F63, 0x792EC845,\n    0xC6BDEDB5, 0xB255BA4B, 0x6C66C28D, 0xD1A16904, 0x93ABFF21,\n    0x94827FC4, 0x87825689, 0x314D1F33, 0xC0D8B98A, 0xC84AC57D,\n    0xEBDB0F92, 0xBA4F473B, 0x61130498, 0xA534064B, 0x3DC04FBD,\n    0xD0A701F2, 0xA671765D, 0x17464B7E, 0x4CCCB84, 0xC297BAED,\n    0xAAF8C84A, 0x631313F, 0x8E0FD926, 0x1699F616, 0xD9808C9D,\n    0x55BF5BC2, 0x27FD10B0, 0xAE975927, 0x92B3F52F, 0x9025C6B3,\n    0x95E5E313, 0x4CB83334, 0xE4A1E7B8, 0x74F7D3D5, 0xDDDC42B9,\n    0x5A89BEF1, 0xF66A6AE5, 0x33730C23, 0xEB7F079E, 0x742FEF19,\n    0x2C68CAC5, 0x2410679F, 0x9D1632DA, 0x458F4AAD, 0x8889E6AE,\n    0xA3B48216, 0xC9AF4AEC, 0xA506C8F6, 0xB6AF9E59, 0xC6340436,\n    0xA6B294E, 0xF35CF92B, 0xEB3A4113, 0x98070AD1, 0x9E61E01E,\n    0x58C2893A, 0xCC1F8C34, 0xCAD665A0, 0xD0414D39, 0x643BDCD8,\n    0x8AF801AD, 0x9ADBB106, 0x2BD02351, 0x8F890436, 0x546747D0,\n    0x6DC33C48, 0x95FA7FD6, 0x5F12C5A5, 0x5DF2761D, 0x9A9B2F8A,\n    0x8C61276B, 0xACCC7F4, 0x37A5829D, 0xF1A0F1, 0xAAED57E0,\n    0x180CD2A3, 0xDC393CA7, 0x504E7405, 0x89DE2F7, 0xA4D8C4EA,\n    0xD8BECE01, 0xD664017C, 0xF57FA30, 0x6049928D, 0x9832E166,\n    0x176AAC31, 0xA793F88A, 0xCFFA8B54, 0xA30DF1EF, 0x3B6C7611,\n    0xDEFC961, 0x9BFB79F1, 0x1483D430, 0xC3A77C0C, 0x42AC1FA0,\n    0xFA3605B6, 0x9A2EBDF0, 0x684D414E, 0xD9308E10, 0x64D68C19,\n    0xA8A9B67B, 0xF5E7B9D4, 0xC7B70ACE, 0xA6EB6DB8, 0x8A22FBE2,\n    0x3AFFDDA1, 0xFB61F7D5, 0xE057717B, 0x846D96CB, 0x20A4B400,\n    0x574089BB, 0x9F3D2DBD, 0xEEDDDB4B, 0x5E64EA6B, 0x6781DC90,\n    0xCFD86A6, 0xA92441CD, 0xAC5DCCD6, 0xE6BB5582, 0x32FA6B3F,\n    0x3ABB8A64, 0xA49D2003, 0xA965E430, 0xEC4053BB, 0x95859D40,\n    0x2672832, 0xCAC3E608, 0xF8C13A53, 0xB04EC2A3, 0x87F54941,\n    0x62A3A924, 0xE0B48702, 0xE8700446, 0x95BD4B11, 0xCFCFDF9A,\n    0x19F67E7D, 0x60853AC6, 0x468F963, 0x298066B9, 0xEE53E89A,\n    0xFC63E607, 0x6FA101E5, 0x8B2F1F84, 0x24AE7C1C, 0x385008FF,\n    0x96E75EB6, 0xF1175277, 0xE5B4A577, 0xB0C97AC, 0xC21CC45A,\n    0x5C680DF8, 0xDEB046DC, 0x1487FC03, 0x1D90CE3C, 0x712563BF,\n    0x65A26CD9, 0x4D094F62, 0xB5DFE29C, 0xF58B2A62, 0x9420A9DC,\n    0xCEC7537F, 0xC46D1FCA, 0xAD5D7B10, 0x68777A24, 0x6C096D2,\n    0xD787D72, 0xC7743F50, 0xB3D05F4D, 0x53E0A7E3, 0x9E627C6D,\n    0x1AA0959F, 0xD1E00E47, 0x8874BA26, 0xCEAC0958, 0x10F67BBD,\n    0x712C6597, 0x3478BD73, 0x4D6F116, 0xD30BC24B, 0xB98C565A,\n    0xD7C5B116, 0xA8CDAC4F, 0x4144673, 0x848F37E3, 0xADD946EE,\n    0x6F17EAE3, 0xEA0FA265, 0x41DB99E0, 0x6BCFDA5A, 0xB46ECED5,\n    0xAF67610E, 0xC7E9DF2C, 0x5CC6F0C6, 0xAB2C2BA, 0x6BCC3881,\n    0xE482C243, 0xD8053417, 0xFFDB6E41, 0xF13EEB84, 0xE8292661,\n    0xEB9940A6, 0xF0B45F98, 0x1CA82AF4, 0xCCA7771D, 0xDD5F3CFE,\n    0x58BD8E91, 0xDF9E3342, 0xA1003957, 0x4621AF52, 0xF926F465,\n    0x209925AD, 0xB1C72F09, 0x3FAB8ED, 0xA15C0A17, 0xDBE73D2C,\n    0xF917CE51, 0xED047661, 0x7361B752, 0x1AAA57A8, 0x31445667,\n    0xFEC0FD81, 0xE3073574, 0x7D36F720, 0xF418181A, 0x1CB8758E,\n    0x8E85AFBA, 0x407E9AD9, 0xF724E308, 0xD030D3ED, 0x4610418E,\n    0xE799EA4D, 0xF8B68F92, 0xB84B9ACD, 0x4B8168C0, 0x9888977,\n    0x216F3B3E, 0x5C49C1DB, 0x759E718D, 0x7C4309FF, 0xBF6DEE2C,\n    0xE566F231, 0x774B0A7A, 0xBE55CCFF, 0x3081B8CD, 0x2284369E,\n    0x2FDF7473, 0x3AF68AC7, 0x6047E9B8, 0x3743BA0E, 0x691D261,\n    0xADC440E1, 0x24150207, 0xFBFE466C, 0xF767E860, 0x8157332E,\n    0xFB54D774, 0x1AF34C22, 0x74E05695, 0x2101FD57, 0x2904274C,\n    0xA1294E9A, 0xF43CA18F, 0x4FA79EB5, 0xAFD1C9EE, 0x6EB3953F,\n    0xDDFCB3AA, 0xDB48F7BA, 0xE1742183, 0x8A78CEBD, 0x225CD669,\n    0xD76B771A, 0x3520113, 0x428B2892, 0x3A5CE8DD, 0xAB4AC42C,\n    0x2928BE8D, 0xC34E3031, 0x93F0CB9B, 0xB7A6FDB4, 0xEEB2B85E,\n    0xC393597B, 0x9D8457EF, 0x91F0F0FA, 0xC54AEA3C, 0xC639521,\n    0xB668AFE4, 0xE4CCE3CD, 0x86223A5D, 0x6A51A2EB, 0x4333C505,\n    0x3233B8B7, 0x1D01F51E, 0xF0C691A6, 0x699EBC2C, 0x7FEE8DBC,\n    0xCC50E42A, 0x7951DB68, 0x8CF01752, 0x33D33841, 0xB46E353A,\n    0x700B65B, 0x59ACA844, 0x38631893, 0xC32D0F92, 0x6897EFDD,\n    0x3F93BCDD, 0xD50E33C3, 0xD0075F1D, 0xB3CB6096, 0x875896CB,\n    0x5DF6651, 0x8E2D197F, 0xCDF68F10, 0xC74018CE, 0x83E6C42A,\n    0x994DEA76, 0xF932D8AF, 0x98775C2D, 0xF79CAAE5, 0xF2BEB839,\n    0x7318C6DB, 0x3AFD6D85, 0x37F18BDF, 0x10194867, 0xA73B5205,\n    0x3F06A1BD, 0xBC8026DF, 0x531CF753, 0xCAFAED74, 0x817C9E70,\n    0x32338A3F, 0xA5177C74, 0x9A3C131F, 0x90F9AF0, 0xE9281B62,\n    0xEDD87C1E, 0x16577CB0, 0x5E3F7AC3, 0x4E49E1EA, 0x495C1B67,\n    0xC282F5FE, 0xF8993B1, 0x47563C68, 0x49FA0716, 0x26A55B80,\n    0xDF870F8D, 0xFBB8DDA5, 0x130EA4E3, 0xB0B66F1A, 0xD7B92F0F,\n    0x55FD4759, 0x6D11AC86, 0x8AB0B6F8, 0xD8C8C8B0, 0x758DA8A,\n    0x9CD589F, 0xB808C0A0, 0xB2C7A3F3, 0xBA40DA44, 0x937532CF,\n    0x279CFDB2, 0x545896EA, 0x387A8F38, 0xB2E5F9D0, 0x7566CA0D,\n    0x51B45DC4, 0xA93B6EAE, 0x1C22D8D5, 0xEB96BD1D, 0xB8F40750,\n    0xCB7DCF85, 0x188F6018, 0x95BA817E, 0xF7C19E4E, 0xAAF97DDA,\n    0xE5BD967B, 0x1604352F, 0x3758C3BB, 0xE2FA13D1, 0xE3666F4E,\n    0x218059EA, 0x2F4750EA, 0x2F065B46, 0x8FC4F43F, 0x2F45422F,\n    0x45928A5E, 0x77055776, 0xBB8103E1, 0x160EFF29, 0xA704F79B,\n    0x6655E735, 0x2C19DC79, 0xE407A7CD, 0x9F4AE1F0, 0xBED7DCE5,\n    0xA870A304, 0xDC413709, 0x903181E, 0x7C1F6803, 0x44971A01,\n    0xF7A81ED1, 0x5DDFB023, 0x2D90CFBB, 0x7F7A432A, 0x35F3F5B0,\n    0x7D935FC5, 0x1D99E7BB, 0x8EFC82B0, 0xAB0DEF56, 0x70702FA1,\n    0xCF0064DF, 0xDD9DEAA9, 0xF05F927B, 0xB483A6DD, 0x9B7388B8,\n    0x2FD82389, 0xAC982F20, 0xC86AD76F, 0x15C6977C, 0xAB10A137,\n    0x1433E4A0, 0x2762D44, 0x1CB5399B, 0x310A54D8, 0xD4B8623A,\n    0x40FAB5F3, 0xC2D51618, 0xC1F4AF55, 0x17C18E1C, 0x4F37D33F,\n    0x2DC9F168, 0xF5BB9754, 0x716FB1F4, 0x7CFB1CE8, 0x1333224D,\n    0x344C13B3, 0x7798CB50, 0xB4278C76, 0xD7CC1B03, 0x168B21E5,\n    0xF7D77AAB, 0x3B651846, 0x639EB0CD, 0x68EB3E8B, 0xEC82FE45,\n    0x622A71DE, 0xAA05B6CB, 0x878B59B1, 0x3E7FB616, 0x1D650408,\n    0xF21F8C64, 0x9BF7BF7A, 0xA0874898, 0xFE4E3C6E, 0xFA36122E,\n    0x1BCDF4FB, 0xC371B365, 0x8F791BB3, 0x9833AD98, 0xE84887FC,\n    0xF8988AB6, 0x180916E2, 0xB587E39C, 0xD5C884C6, 0x27B6BFEB,\n    0xD8868D1E, 0x689DA503, 0x936B4EFC, 0xDE0DB3C, 0x7950FDCB,\n    0xA61C81C5, 0x9F1C93B2, 0xC983179A, 0x6F847EB0, 0x6F7F899D,\n    0xD270412, 0xCC255717, 0x763112A0, 0x8725C96D, 0x48BC2863,\n    0x85F13BF0, 0x6D8E0251, 0xB7E66CC3, 0xA4F5829F, 0x8779F381,\n    0x16A5E04F, 0x3DF42C14, 0x367F06A3, 0x3BF8666C, 0xC6649CFB,\n    0x4DD9808F, 0xB4F9AFD, 0xC2642410, 0x9740E4F6, 0x8FB667BE,\n    0x4D4B0D3E, 0xE9B236F7, 0x6E30550C, 0x79DA7B48, 0xE721889D,\n    0x79D9B21A, 0xA06B8C2E, 0x997B1696, 0x4383FC27, 0x8B77D293,\n    0x6FAE2A9F, 0xB45ED194, 0xF38E2C59, 0xEAA0D05C, 0xA3BC449A,\n    0x6EB0BB4B, 0x6B242CFF, 0x7FCA0B8A, 0x47221D33, 0x4E18FE39,\n    0xF4691580, 0x6D03D791, 0x3B937AC5, 0x9CB761C3, 0x42812232,\n    0xFB987D6C, 0x86AD164E, 0x5D8CED49, 0x22D6D058, 0x42FADF98,\n    0x9363A1B3, 0x83C6DB74, 0x7AF44F4E, 0x20086D60, 0x7A37665E,\n    0xC4A29C82, 0x330F278B, 0x8750B539, 0xDD2E83D0, 0xB8E002B1,\n    0xF2A9323F, 0x91B60885, 0xDE83F01D, 0xACA126, 0x2F0FADA2,\n    0xC0E879A6, 0x7C715655, 0x16642BA2, 0x43B9C083, 0x95F6789D,\n    0xE6576886, 0x46BEF133, 0x84199FC3, 0xC45BA082, 0x26489AC1,\n    0xA4FE268A, 0x633A25B0, 0x4FCD341D, 0x8E7374B3, 0x7F8A3466,\n    0xC82B53F7, 0x2E2114DC, 0x59213BE7, 0xE72A2395, 0xAC5F982B,\n    0x8F63E9D8, 0xA68BA42E, 0xF0E30E92, 0x580FD13A, 0xB2FCB7EA,\n    0xF3E4C077, 0x2C8588B, 0xC31F5E5, 0x104982D9, 0x2C2F03E3,\n    0x8F1791C, 0xCE14310F, 0x1696133B, 0x1BC68D6D, 0xFC488B95,\n    0xE0E7FC31, 0xBDF0152B, 0x24F78B82, 0x45BD4367, 0xC89AF4B9,\n    0x9698650F, 0xFB2E131A, 0x82B7A451, 0x9F6990FE, 0xB6EDE6BB,\n    0x68D5D90, 0x51FE559E, 0x9B54ECE, 0xC09D3AB2, 0xD9BA990B,\n    0x4CF02BC, 0x70067D7, 0x3568DF20, 0xFF1D7AE4, 0xF1C67DE3,\n    0x5ACC7F95, 0x89ED16EB, 0x6EDCDC94, 0xDF367991, 0xF1D48A79,\n    0x21AA30FB, 0xADA2B5B3, 0xC40A5761, 0x5769556B, 0x5E1510A2,\n    0x5741566A, 0x25B88D83, 0xFD22574E, 0x6E9B2CD2, 0xF5CE960B,\n    0x67F938EF, 0x1A1E3672, 0xFBCE5BDB, 0x756BACAB, 0x2F177A71,\n    0x31F3EFC6, 0xB8263FBA, 0x9A1F772A, 0x84DC1FB0, 0xC907ED89,\n    0xAD3C6092, 0xC225B6C8, 0x37EE4F54, 0x4BDDACF2, 0xB5E944CB,\n    0xDC26F39E, 0x3BCE02DC, 0xC01F2632, 0x89AFE3ED, 0x600757F7,\n    0x4804A684, 0xC4F3FCB8, 0xEBCAA904, 0xE0069A2E, 0xA2FBD213,\n    0xDB736C4, 0xA6930699, 0x71FB43C0, 0xF66C955C, 0xFBD39B5,\n    0xC87D1801, 0xE9D2DD1A, 0x78DA23CE, 0xCADBA5C9, 0x77015761,\n    0xF5581BDF, 0xDEB4DAA0, 0xAF7E41B0, 0x71347196, 0xF8A29A93,\n    0x8DA3BAE6, 0x73396AAD, 0xD4DF7765, 0x326AFF23, 0x27888A0C,\n    0xE48AC062, 0xB9F18047, 0xDE9830DA, 0x8EF78C4D, 0xFBC1896E,\n    0x9BB566A6, 0xB640ED13, 0x8B0D9D1E, 0xD84B471D, 0x4040EFB4,\n    0xF6DF7908, 0xCB8ACF04, 0x253494DD, 0xA85F6D88, 0x1326822,\n    0x61EFDFB8, 0x1C78154F, 0xB13866B1, 0x3ABE5DBB, 0xBB5907BF,\n    0xA1A57FDF, 0x410549C8, 0xA9A364F4, 0x2A371B73, 0x24AC7296,\n    0xA01C035C, 0xE839029C, 0x6E12051E, 0xE6A549FD, 0x345F10FF,\n    0x3BB57347, 0xBDBF3A6A, 0x2A41C3C8, 0x6E0232B0, 0xAE66D42E,\n    0x3BE90433, 0xE185FBF2, 0x9BCA91FE, 0xF4FFB74E, 0x142B6971,\n    0xA75CD7B, 0x9B900DDD, 0xEC56B79, 0x2FE0CD8D, 0x87BE8237,\n    0xB38A7226, 0xB5D8B437, 0xAAADC41D, 0x8014E227, 0x38D84DD1,\n    0xEDF5294F, 0x862F0F, 0xD69F77F6, 0x409C3B68, 0x2F12B0FC,\n    0x32A670B9, 0x5746EE2, 0x96B4901A, 0x57208639, 0xA282A77D,\n    0xE9D9F48E, 0x651ADDA6, 0xFF5E974C, 0x37C833C, 0x41F2BD58,\n    0xDFE1D009, 0x32222DA6, 0x22201781, 0x64A06BAF, 0x8F188902,\n    0xA9C2A07B, 0x617C7DF7, 0x842DA704, 0x40AFDB72, 0x49625110,\n    0x72484F13, 0x7340AC89, 0x6C6A2F36, 0x828EF5F9, 0x20344923,\n    0x21D3304F, 0xD6EEB7C3, 0x8F99732F, 0xEBA045D5, 0x5C0065D4,\n    0xEEB5E899, 0x1B079C47, 0x6198EE3B, 0x946A805F, 0x7C19F966,\n    0x75E8F043, 0xFD9880BE, 0x47BF619, 0x9C001ADB, 0x7438184B,\n    0xA3787EF2, 0xA461EF4E, 0xEB515D0E, 0x64EFA69D, 0xD41F3145,\n    0xD08A900B, 0x495968AC, 0x746639C9, 0x43E85DCB, 0x62E55B3,\n    0x6B913D8E, 0x2685D73B, 0xE4F98C19, 0xB404BD4B, 0xFEA327C5,\n    0x1E0CC908, 0x71BC53EA, 0x530AAECB, 0xBD2977B, 0xB661A52,\n    0x86560EE2, 0x250E2591, 0xDA57D5B3, 0x347D3C22, 0x6CE15221,\n    0x6E5288EB, 0xA79875F3, 0xCA89972F, 0x36E93777, 0x257262E1,\n    0xD1D4E5A4, 0xF7ED5D52, 0xECE58036, 0x644ACA69, 0xCA36DFB8,\n    0x60EAB44D, 0x46FB8AB3, 0x81E6C199, 0xD5AA5C63, 0x4A7CB01D,\n    0xFCC109CD, 0xD999C46B, 0x3FA4C688, 0xC95C0FBE, 0xA1E9DD3,\n    0xBE9EAEF6, 0x1A3014D7, 0x729A662, 0xDC8178FD, 0x7FCAA1EF,\n    0xD4005420, 0x2A904DAD, 0xEE7E52DB, 0x886C0F23, 0x12D49E10,\n    0x2B3F3B39, 0x3373A6C6, 0x5D0759F5, 0x8CF5EF25, 0xCE02371C,\n    0x2FFEEFDE, 0x5D9CFD69, 0x2B5BB7D0, 0x5A378EA9, 0x5BED8331,\n    0x9C1A37CA, 0x702799F, 0x4D37A8EB, 0x370CEDF8, 0x43B95BE0,\n    0xA0C1E534, 0x204130B2, 0x8E4995AC, 0xCF1C3C28, 0x3E901F78,\n    0xB0F43C57, 0xED4B7492, 0xABD3C5CD, 0xEA95ABC4, 0xE03B739A,\n    0x58388E80, 0xFDF22044, 0xF4379C7E, 0x87CFA0C, 0xAE9CA79E,\n    0x41DCB004, 0x8F69512D, 0x73ED4756, 0xE215297A, 0xD931A6AD,\n    0x59866B3D, 0x61825B1D, 0x4F5099E1, 0x25AE168B, 0x1272D5C6,\n    0xBE071035, 0x24314F71, 0x82F4B23F, 0x6C7F3385, 0x36CF0505,\n    0xB71C0E3D, 0xE9F881D0, 0x27F0C290, 0xF4BE30D7, 0x88315CE8,\n    0x9E04FD20, 0xDE197591, 0xCF0D2FF4, 0x67A4C473, 0x158447BF,\n    0xA4B37C88, 0x27918292, 0x5FDE3DF0, 0xE8A93C3D, 0x886287E8,\n    0x746E199B, 0x9A894103, 0x7A529374, 0xA195E2AF, 0xAA3EB0C6,\n    0xF70788A9, 0xCE2B7F30, 0x9C4724AA, 0x902EB7A8, 0x2CBBB407,\n    0x3799651F, 0x9016E9D0, 0xD1C0ABC8, 0xC7684FDD, 0xE4670051,\n    0x25B69E83, 0x1CEC9BBF, 0xD066D2B4, 0x2AD4BF14, 0x7AFBD3CF,\n    0xCB8E5EFA, 0x63B67572, 0x89F7E3F3, 0x8E8D39E6, 0x60617ECD,\n    0x9EECEA31, 0x59E57FAB, 0x807AFCD6, 0xFD0397B8, 0x3C57D963,\n    0x9A972CF5, 0xFC47B628, 0x9CCFAA8B, 0x405869C3, 0x3CC128C1,\n    0xE154C33E, 0xBE53F87D, 0xD23C7947, 0x4CBEB3BB, 0x1F068FFA,\n    0x8A7D350A, 0xB822F33E, 0xFB3BB431, 0x741D2D0F, 0x81FAFE09,\n    0x80B8BA3C, 0x30B4BE94, 0x4B2A2909, 0x31740925, 0xE68C0BC9,\n    0x8E7F31D4, 0x29DA2599, 0xB9D267C9, 0xEDE811D2, 0x8BC7CBC3,\n    0x69DDA8B6, 0x879E1212, 0xF915F0F1, 0xBBCDB1AD, 0x3A01011A,\n    0x7CD005C4, 0x475FC718, 0xF03F454B, 0x7457F264, 0xB22D9DFD,\n    0x569DE931, 0xB585EFEB, 0x9A183445, 0x9CB353AC, 0xE3AA9817,\n    0x32E0722, 0xF0C7595E, 0x316DBD6A, 0x96D0F65C, 0xA6F0ECCE,\n    0xCB8A9494, 0x5B077241, 0xD36BBC7, 0x9C4CD0F9, 0x108F5B32,\n    0xC43C599A, 0x7B10108A, 0xA4106EE9, 0x3860CF99, 0x87B782C,\n    0xF667524C, 0x129929C, 0xEA85C1D5, 0x1A07973E, 0xB9524891,\n    0xBC02BD1F, 0xF378D7F, 0xD0BED4D7, 0x5B782DE2, 0x738681A,\n    0x4BA1192C, 0x46DF1224, 0x4529AED7, 0x9B1DB01D, 0x810AA334,\n    0x661982C8, 0xD3B32F94, 0xF50AC9D6, 0xCE9107C4, 0x203078BF,\n    0x6B0F3B2B, 0xCF63520C, 0xACA9E5BF, 0x7FBE448E, 0x51BD1E2F,\n    0xDF958295, 0x114A9693, 0x60FCBB39, 0x6669B642, 0xC490D54,\n    0xD19C8DBC, 0x14CC7B2A, 0x7106D506, 0xAFDADD98, 0xAF398DF4,\n    0x88AC5400, 0x1912BF0A, 0x5389D050, 0x5AF6233, 0xF10842A3,\n    0x94DD7008, 0x93812804, 0xD8111DFD, 0xB7C97490, 0x7748A45E,\n    0xE70A47A0, 0xC29B718E, 0x55783AEC, 0xA2789E21, 0x97488EBC,\n    0xD9222F6A, 0xBF74BDD2, 0x9A983E5C, 0x6CC067D5, 0xBCFDD3B2,\n    0xD7A2A5FE, 0x4733F2F5, 0xC7AA3556, 0x1CDB485D, 0x31755CA0,\n    0xB9F8E9A7, 0x1346410D, 0x7D885AD7, 0xA30030D8, 0x9813B41C,\n    0x8A64EFD4, 0x273F4CED, 0xFEDDC3FD, 0xF34D9687, 0x6B67F2DC,\n    0x13F72B5A, 0x96445DDB, 0xAC94658B, 0x8FBF54BC, 0xA7C13389,\n    0x95814EA3, 0x7823E5BC, 0x544C27DB, 0xECE6439B, 0xD1141B27,\n    0x7A95ACF4, 0x806E58E7, 0xD07B5422, 0xFD0353AE, 0xC1840431,\n    0x1DD89E9, 0xA102016D, 0x3730505, 0x1F91E46A, 0x3279C793,\n    0xA060010D, 0x9BF86C80, 0xD0C35484, 0x33E81EF7, 0x1C4D3EA7,\n    0x6C2A9935, 0xD65E2FB1, 0xBB1CA42E, 0xEA3E3609, 0x7B478C84,\n    0x70C1DF93, 0xA872CA92, 0x7C025178, 0xF3B19C7D, 0x6F2BD89B,\n    0x1AD7BBDC, 0x39A48FCC, 0xAB5B72E1, 0x821761B9, 0xD2368C1,\n    0x20ABB349, 0x29A3F960, 0xFDB18DF1, 0xC4118A52, 0x5E28E88A,\n    0x549A3386, 0xD81024CE, 0x82DAD5E0, 0xB20BCD42, 0x9DEA0D36,\n    0x49A4992D, 0xAFCB2026, 0xCE7536E8, 0x2C191A65, 0x24FEE0D6,\n    0xA769AB6D, 0xF47E292E, 0xCB501191, 0x6DE13907, 0xF1343277,\n    0xB32AA746, 0xB055DB9E, 0x87CB8583, 0xA546A4C3, 0xF06F809C,\n    0x8FE7A8AA, 0xD0E4037F, 0xD81FCF88, 0xF85830C2, 0x3D6F4840,\n    0x5A43700E, 0xCD300C58, 0x3B81C27C, 0x8AF86EA8, 0xF65935FC,\n    0x46367D7, 0x7FB75E63, 0xBB28A406, 0x173F982, 0xCB92DD14,\n    0xAAA0B1D1, 0x1BCA8892, 0x64D21, 0xFF081A44, 0x8706E93B,\n    0xB7DEFAD9, 0x4A6DEF76, 0xDA1670DF, 0x94ABCEBA, 0x465DA4C6,\n    0x2484496C, 0x97BB3321, 0xEFB09CB, 0x2988AA2E, 0x2722344E,\n    0x5301B744, 0xC5E16C47, 0xF7E05D01, 0xCBE7C20F, 0x4882A6EA,\n    0x7168CF40, 0xA98A2747, 0x35F8E15A, 0x5FAF49F9, 0xD2008D24,\n    0xCC45A63, 0x858A3255, 0xE4C095B6, 0x7074F7A5, 0x699C98FD,\n    0xF0BFE2EA, 0xBDA35C64, 0xE83B891D, 0x7CD09FEA, 0xE8735FDD,\n    0xFEA27F06, 0x631D71D3, 0xA08136CD, 0x42395363, 0xDCBA6E41,\n    0x1562897, 0x4B1061A9, 0xB4F9640B, 0x38D24E3E, 0x76DF4423,\n    0x94B5ED97, 0xFE6AB3B6, 0x6B329B8B, 0x37AFD275, 0xC9ABA12A,\n    0xEC9693B, 0xD49B5585, 0xE0C2BEF7, 0x315D40A8, 0x34FBE3A,\n    0xEBE81550, 0x569F6FC8, 0x5A9C8404, 0x9DBA0090, 0xFE985DE8,\n    0xFF4209AE, 0x89F9E7AF, 0xF841164C, 0x6B4B8F5D, 0x95CB1085,\n    0x1990660C, 0x31263B36, 0xCF8F435C, 0xDEBCF88A, 0xD1EE25C2,\n    0x53D80B69, 0x9EB8F01C, 0xD682EA3C, 0xEEE79205, 0xA7EFAC65,\n    0xE9AA6899, 0x3C1E197E, 0xC8ABE1E9, 0x7BEFE9CA, 0xE792E7D4,\n    0xA955D60F, 0x3FE8A02F, 0xC963FDC1, 0xB3D53E43, 0xE28FFC12,\n    0x7D5BECCC, 0x18E9F223, 0xBC8B0465, 0x7ED8EEFE, 0xBB90FFEE,\n    0x904A9F3A, 0xBC467FF, 0x8AD43A15, 0xF3FC404A, 0x2492D5F4,\n    0xBB3F5025, 0xBED0B8BF, 0x467FE6C2, 0x36E55C77, 0x8E2CAC4F,\n    0xD12D325F, 0x68A4D268, 0xB1AA0895, 0x755B98FC, 0x2314C4FF,\n    0xC3667346, 0x8003B9E8, 0x1185476D, 0x227B69D8, 0x5BADD019,\n    0xB06567BF, 0x2B837581, 0x9E11F7, 0x158E67AE, 0x339AA6FC,\n    0x8FE50AD9, 0x65902A97, 0x42917220, 0xF9AD39C, 0x2DAAD225,\n    0x9673B896, 0xFAE150D6, 0xBEDE3417, 0xD233D722, 0x7E67F33C,\n    0x6E150E30, 0xC856792A, 0x28EF69BA, 0xE2AC7866, 0x928D0A4A,\n    0x8032C4A9, 0x3D413533, 0xC1BA5CCA, 0xD2BDAC83, 0x94198A14,\n    0x3A25972F, 0x253EC030, 0x42D7A1F5, 0x97C28C1C, 0xBE4D0710,\n    0x92F31B62, 0x73CA2F55, 0x15FC5417, 0xEF76B1C6, 0x655A963D,\n    0xBC17C3FD, 0xD5BED3BC, 0xAB0E4857, 0x38BAD61A, 0x8C17E47F,\n    0xE3C27887, 0x45D2A34, 0x6D48333A, 0xF400B767, 0x6ACF41B0,\n    0x88DA15A9, 0x3FA0EAB1, 0xAF7B3786, 0x87F182FF, 0x4112A079,\n    0x53360864, 0xDB5CE625, 0x630678D7, 0x63E01F17, 0x7BF658F1,\n    0xB5E4F1A3, 0xB30E4393, 0x27454C31, 0x8E7E0E2, 0x2151A5F,\n    0x2892E2B2, 0x92B53840, 0x1EB3D483, 0xA4273A65, 0xF0CC632,\n    0x99AC2694, 0xE0A19111, 0xC7FBA613, 0x46C8F873, 0x88A27741,\n    0x7E9A5972, 0xC2E76F79, 0xA5CA8180, 0xA28FF0EE, 0x2A1F7DE1,\n    0xCC130B22, 0x50ECFD8A, 0xF5BAA999, 0x5FA2EC9C, 0xC1B5C5C4,\n    0x90EC0E5D, 0x9C26620A, 0xA97D2935, 0xE1C08B89, 0xCB574B80,\n    0xB3DE8B61, 0x1AF89CA0, 0xFD4A77DC, 0xED9485E1, 0xAF804C92,\n    0x6B8EB167, 0xDCC836B6, 0x85A7FFFD, 0xD4E9A94A, 0x77DDCC31,\n    0x8897B5F9, 0xA4FA88D3, 0x8ECB3E82, 0xBC175E89, 0x963A073E,\n    0x547520C7, 0xEEB81BFB, 0x1D8B1867, 0x78833A4, 0xE40A0CCB,\n    0xF8D5452F, 0x954BDCF6, 0xAC228FFA, 0xE6B32DF3, 0x181ED541,\n    0xACE26A73, 0xF1C1440D, 0xA1B93EDD, 0xE90FF70A, 0xF6741843,\n    0x4DF581AC, 0xBE785B32, 0x751509B5, 0xC30AD864, 0xC18D8A72,\n    0x3BF07FD4, 0x827B4CBA, 0x7DD39A4F, 0x2CFEFE25, 0xE071F371,\n    0xC0C3F6CB, 0x1FD70F85, 0xFDABDA88, 0x8F308991, 0x4CD794F9,\n    0x5D18B022, 0xC13D5FC2, 0xD84337F, 0xED868BB8, 0x9904CD2,\n    0x7551499C, 0x124B262, 0x5139C2A5, 0xEF56F59B, 0xE8B87B40,\n    0x2F030010, 0x42D2E271, 0x4E344F3F, 0xC87CDFE1, 0x44A615C7,\n    0xC32DB543, 0xCFC889E4, 0x60078825, 0x786F5917, 0x2DF9E82,\n    0xEE26DA93, 0x48D0C94, 0xE97D5456, 0xF487F2EB, 0x35A47D65,\n    0x183DA0CA, 0x1A7E1218, 0x8D2674C5, 0xB38D0910, 0x5D9C871C,\n    0x7B463ED1, 0xBBC90FFD, 0x31DED99F, 0x5171DCFA, 0xF9413D0B,\n    0x632A00FD, 0x7B6DA34C, 0xA475C597, 0x8E157360, 0x5911736B,\n    0xCA19D544, 0xF487D465, 0x6E749BB9, 0x888BFB52, 0x3FDAD497,\n    0xDB5D401A, 0x7015A4EC, 0xC1F571, 0xB2D7671A, 0x8203032F,\n    0x5A755E9, 0x24F25BF5, 0x4D2AC51B, 0xE5950FA7, 0x20196F5B,\n    0x68E90D90, 0x5D24196C, 0x9CFCD1C0, 0x745C0318, 0xEEB977E8,\n    0x14AA16D, 0x80662EE1, 0x7BD55DE3, 0x35EE2B08, 0xD3E8051F,\n    0x3D0EA4B5, 0xD551399E, 0x8FF94435, 0xDD4E34ED, 0x9139E4A3,\n    0xE6AF7E5E, 0xE1ED4EAF, 0x638D2846, 0x7084F7EB, 0xF9705E17,\n    0x2E7A89DC, 0x45855252, 0xBA8E51C7, 0x8510425C, 0xA97AF6D,\n    0xF0C27DA, 0x9E00CA15, 0x3BCC0651, 0xEEC38CA9, 0x19597B08,\n    0x4C68AB5D, 0x16CA41DB, 0x35EFBEF9, 0x1E441529, 0x25131FA1,\n    0xC3D8483C, 0xD8650832, 0x60D271E3, 0x47C92A47, 0x9EFBB554,\n    0xBF5DBFBF, 0xFF421FA2, 0x3A38F28, 0xAE4EE06B, 0x819945D1,\n    0xC43101, 0xA3EE9278, 0x5BAE3EE4, 0x57ACE55E, 0xC3D95551,\n    0xC00717B0, 0x38EC1B28, 0x123597, 0x6314F3F7, 0xB3F99DAB,\n    0x7226CE1E, 0xE8350DE6, 0xD7C582CA, 0xBB1D38D, 0x54E656FE,\n    0x400B60BD, 0x48291A06, 0x97819179, 0x850BF937, 0x93888A87,\n    0xF51E684F, 0x4B111E, 0xC6B37E02, 0x6C923547, 0xEF25AF3B,\n    0x8C12CE8E, 0x89296F4F, 0x3BE2C3DA, 0x8A29A35B, 0xBBE2E80C,\n    0x79D0188D, 0xBD4320BC, 0xAFF4F0A9, 0x7FAE6C37, 0xCCA1777E,\n    0xB06D2AE1, 0x26B6398C, 0x5A3E5876, 0xE814DF4E, 0xC43E9677,\n    0x4C962CE8, 0x6C274FF8, 0x8B5A1A03, 0x963E1401, 0xD8CE0DF7,\n    0x659190E7, 0x3AD63330, 0x894BFEDB, 0xEB4CF73A, 0x3731BC86,\n    0x30FE0433, 0x94F5FD2, 0x8417999C, 0x337E86B8, 0xAFE08EF6,\n    0x5B5F05DC, 0x8001C95F, 0x8C8092DC, 0x5EBC7995, 0xDCBE88EE,\n    0x9C602950, 0xE3376596, 0x5D80E318, 0xAF3AC8C3, 0x8C7EDCC6,\n    0x3E795E7, 0xDA8987AB, 0x7B7B4E3C, 0x3239CD40, 0x1B527DED,\n    0xC95DEF29, 0xE40D047D, 0xE53C10C5, 0x5BAF528B, 0xA47921F9,\n    0x6DCB9B0A, 0x7EA11040, 0xBBEFCCD5, 0x502F33FA, 0xAB5EBE8F,\n    0xD59C448, 0x8C34FF3D, 0x4A3255A2, 0x4CFFDCB1, 0x3880A182,\n    0x3499DAAF, 0xA1319450, 0xC550CCE5, 0x51026E2C, 0x73C4F05D,\n    0x21F5FAAC, 0xE1C31B7D, 0xA390E6E6, 0x7B1582ED, 0xB92B4C3B,\n    0x41C1128E, 0xF728F655, 0x3BC8AE16, 0x8A2A4E57, 0x9A8A7DE,\n    0x86065598, 0x4328A574, 0xDBDAFC7D, 0x2C5EE98, 0xEAB5CE80,\n    0xF7E8F60C, 0x7B4C3C0E, 0xE4A2F720, 0x90330B1D, 0xB6783BF2,\n    0x48A8C26B, 0x847F1AAC, 0x351DB247, 0x43E84AC5, 0xAF726AA3,\n    0x5CB4C059, 0x2C5784DE, 0xBA1111FB, 0x9F427968, 0xE41D29D1,\n    0x2CAA8CA7, 0x764C8B63, 0xBDAA6F10, 0x280277B6, 0xE4A908B6,\n    0xA6A9783, 0xD0643B01, 0x44FE52AD, 0x60B04A5, 0x194C190E,\n    0xF73DA669, 0x12EE11C8, 0x2C769D96, 0x694787A4, 0x9FB03623,\n    0xAC6F837C, 0xFC1E5935, 0x16246787, 0x4F94B817, 0xA3A4281F,\n    0x1535252D, 0x13F8F1CB, 0xAAF6A508, 0xB38E10E, 0x7A4B238,\n    0xC6A47410, 0xC864256, 0xF3C25E27, 0x94CE51D4, 0xF4ECAEEA,\n    0x32684D74, 0x1AC8765, 0xDE6F6313, 0xF8C09409, 0xFB21FD21,\n    0x6DB586BA, 0x241894B5, 0x65806E1F, 0x4B9D0DE7, 0x32DDDD16,\n    0x3B16F0B0, 0xB56CAAF0, 0xC533ED5C, 0xADE48431, 0xB5893123,\n    0xE977699C, 0xB295808B, 0x7A252898, 0xE3748392, 0x687A8ACD,\n    0xB792504E, 0xBF4E2D8A, 0xB5EC4376, 0x754D9C34, 0x17BE53CC,\n    0xC817A127, 0x732346E2, 0x29593976, 0x41D6AF89, 0x9072FAEC,\n    0xC2B22666, 0x16A150DF, 0x4D379A36, 0xE732017F, 0xA6D12516,\n    0xEA3DB9B5, 0x6E4C766B, 0xCA0ADEF5, 0x75E98F68, 0xC31687C3,\n    0x62F16F66, 0x6486B129, 0xE237231B, 0xC6653007, 0x2BE06DFC,\n    0x2BC32DC4, 0x9E3DD054, 0x47AA701E, 0x7741E537, 0xA09F9CD8,\n    0x9D40881, 0x4F02F58, 0x6A5F31BB, 0x32BBBD23, 0x4520EB05,\n    0x1DBFDD00, 0x6CCEC7D, 0x48CFC70C, 0xB41FBC13, 0x5B377E90,\n    0x3B87923D, 0xC09F6D28, 0xC1CF24FB, 0xDD6BE459, 0x8B8BDD37,\n    0xF7B103C8, 0xC1611360, 0xA8B8FCC8, 0xC16D4E2, 0x6AD23606,\n    0x951A051, 0x6FC3B984, 0x95876867, 0xA0E1A04C, 0x8267F62C,\n    0xC4B69588, 0xF53421DF, 0xC348685B, 0x59769E2B, 0x21F0FF90,\n    0x2B978BB4, 0x3FDA987B, 0x216F4FFF, 0x95C68589, 0x2286F5D8,\n    0x81E2702D, 0x88E2D01F, 0xE6F6B356, 0x2EA0C31, 0xA5E11CAF,\n    0xE17DC578, 0x2115A0EA, 0x8DC2B323, 0xEB86957, 0xF3C7BECB,\n    0xBCD805EC, 0x1121C3F5, 0xE6DEF224, 0x8EA2EE24, 0x2703D7B7,\n    0x24D73574, 0x4068552C, 0xA85F5B6A, 0x65B563E, 0x4050954C,\n    0xC7043820, 0x91E4A088, 0x19084C84, 0x7250FB54, 0xC1EC72,\n    0x9FDB2412, 0x3B78E4E9, 0x588C2D17, 0x345C3232, 0xBC7CCB29,\n    0xCB5F1F0A, 0x24EDD656, 0x7A9F0605, 0xC2EDB0E5, 0x7F01D20D,\n    0x8EB211A2, 0x74AC4C1A, 0x37EDEDDB, 0x55B9AFF2, 0x100C4193,\n    0x43CDF2C3, 0x9C75E7C1, 0xC43ABEFF, 0xB9704827, 0xDD4E6376,\n    0xEA5FA0D3, 0xC6E14A66, 0xCB163673, 0x9515389, 0x5D3D30C5,\n    0xD1FF8777, 0xC1347921, 0x21A5BAC, 0xD6CB5F87, 0xC6CE680B,\n    0x46D1E5FB, 0x9B98BC15, 0x8D1446D6, 0x184659E7, 0xAAC79D5A,\n    0x773E019E, 0xA1B9F814, 0x933D3D0B, 0x11DB7615, 0xC206A22A,\n    0xE4EF5BA1, 0xF0EFA194, 0xDE0E6C2B, 0xBE185B42, 0xC28FDE0C,\n    0xE416DD8A, 0xC636753F, 0xAFD119E, 0xB0198B17, 0x94C4115C,\n    0x76EDF82A, 0x66818700, 0x6F003485, 0x993DFB2B, 0xF5A1F91E,\n    0xDAB0080C, 0x7DF290D2, 0x72F65E9B, 0xBC126473, 0xF6050B10,\n    0xB7380CA, 0x3352530, 0x9A403054, 0xB12581C1, 0x6F8E0370,\n    0xBB5C1ED1, 0xCE738AFF, 0xE9F605DB, 0xA976BFE4, 0x68C9D107,\n    0xA2BD1833, 0x545ACCE2, 0x965FBAF, 0x12D998F, 0x2C16B1CD,\n    0xB20788BF, 0x96AADE36, 0xDF821415, 0xF1EBD654, 0x33F3C413,\n    0xF2F2A6BF, 0x2DFB0ABA, 0x96845EC5, 0xB24622DD, 0xA83EEE5F,\n    0x49DF9AF8, 0xB8DCFB8A, 0x16F7643, 0x436EFD30, 0xD90C9F8,\n    0x9C10CD4E, 0x600CB15B, 0xE686606A, 0x5EC0502C, 0x23B2DCE5,\n    0xDD5DE18D, 0x235A755C, 0xCB58A693, 0xACBEAFDE, 0xCA201FB5,\n    0x2AE90380, 0x4F7455EC, 0xCA923312, 0x1BD202DD, 0x2D92B9E3,\n    0xA2670F18, 0x831728C, 0x77D33D8C, 0x12400BDA, 0x9508A626,\n    0x9253042B, 0x63C70C8C, 0x5496452F, 0x9237D610, 0x10448F3A,\n    0x9303C709, 0x660D7EC, 0xDF6750F0, 0xBC4F14F2, 0x8F59720C,\n    0xEE5AB051, 0xD5EC1228, 0xCC3E04CE, 0xE9E4D3B9, 0x8676FA58,\n    0xF523860E, 0xF87D9BED, 0x4A6D02C9, 0xC5AD6CF0, 0x65F09045,\n    0x8C620984, 0xDC40B4CD, 0x4216C291, 0x7A44C04B, 0x1E2B5D31,\n    0xA0E77B7D, 0x12076C51, 0x22262FA1, 0x483B54F1, 0x2A7EF465,\n    0xD1395E25, 0xB564369F, 0xC94A47A4, 0xFD678BAA, 0xECEE926A,\n    0xE41A06AE, 0xE8F293C1, 0x3EB052BE, 0xD0959EF1, 0x93FF1935,\n    0x4D65E4F1, 0xE87FC1F9, 0x3BD4BB2B, 0xD5F24F5B, 0x54FF70D4,\n    0x968C7B60, 0x44F9BDE4, 0xF4894BDF, 0x3CFDDF7B, 0xD5CC3F10,\n    0xD7F952C2, 0xEA3DCB60, 0xEFDAC96A, 0xBBF8F5EB, 0x41526813,\n    0x714E3D51, 0x5E15A386, 0x1286AF4F, 0x5E1E5A3E, 0x676C9938,\n    0xA716071B, 0x14D79998, 0x5CB794ED, 0xD815EDED, 0xCB1CA55A,\n    0x9D6D74FD, 0xBE032C25, 0xF3FE1425, 0xC0CB5217, 0x3931A93F,\n    0x82DB8222, 0xD8FF587F, 0x5AD4E8AC, 0xBCF00442, 0x4298A961,\n    0x9F8CC3C2, 0x60E2347F, 0x7E090E, 0x691B735, 0x3D4C4D83,\n    0x5612B097, 0x7B8DA321, 0x2C28A057, 0xF8FE8901, 0xDA39D0DD,\n    0x465CE561, 0xA78756, 0x3B771E01, 0xE638B09, 0x201853B5,\n    0xF934D7D2, 0xBD515A83, 0xC1B5C34E, 0x89159FA9, 0x2DDE3EBE,\n    0xE27771DB, 0xB5983F05, 0xA3FD869D, 0x8ABA53CB, 0x55C8606C,\n    0xDAB769C3, 0x4C4C2EAC, 0x18EE2A56, 0x88452A07, 0x9767C386,\n    0x5C0418D6, 0xF79CA785, 0xF291195D, 0x9B0C286F, 0x68460BED,\n    0xBF0079E5, 0x9906D932, 0x2F9E5535, 0x2A3C4947, 0xF0E240C3,\n    0xE835A264, 0x43F38C0, 0x82DAADD8, 0x313612B1, 0x560D56FB,\n    0x61BD734A, 0x58FD6B36, 0x2C45C40B, 0x55F70159, 0xA21A817D,\n    0xAAA6FCE, 0x85BFDFB9, 0x1C71DE25, 0x56CB4C2C, 0x50FD91E5,\n    0xF2340E88, 0x72BD5702, 0xB4FFBD3A, 0x1B35B171, 0xE94A34BD,\n    0xC4C77575, 0x95B10420, 0x2471BC3F, 0xCB429841, 0x6DC5347F,\n    0xC93CF782, 0xF1D26B2C, 0xEB2A260F, 0x67C3AE9, 0x34A56A4,\n    0xF1F3D01B, 0xD8295F22, 0x7F9E5D4A, 0xE4DB3DEA, 0xE1531DCB,\n    0x2C5FF857, 0x73622A7C, 0xC2691F1, 0xBC622B61, 0xE6A08C89,\n    0xBA1807D4, 0x43ADBE43, 0xD90D427C, 0xC7A5C24, 0x613ED316,\n    0xEC810B10, 0x1049BF74, 0x9A14C123, 0xA7B24E7E, 0x73254165,\n    0x2C54081E, 0x14FF25AA, 0x7A12F3B4, 0xB4DF7C56, 0x89BFE8FC,\n    0x5D5A04A6, 0xBE007173, 0x829DF863, 0x63E5E57D, 0x58F64C28,\n    0x31A38144, 0xE843289B, 0xB48DFAF1, 0x2B335C2A, 0xEC3C96CE,\n    0x255543F6, 0x33F17311, 0x3C60C51A, 0xE5D0D660, 0x5E162559,\n    0xA2D9416, 0x9DDE4967, 0x28156A65, 0x71650796, 0x74EE54D1,\n    0x3E8C19F7, 0x797C1E42, 0x2C536DFD, 0x2F3EED4D, 0x3BFC7C95,\n    0x8EAEF87D, 0x18F5B02A, 0xA3532651, 0x24508E13, 0x280B9049,\n    0xE4FC61CB, 0x388BA30F, 0xEC180A43, 0xBFDE77A4, 0x98CDB399,\n    0xF82B586D, 0x38525AE7, 0x9D857BE8, 0xDD939D18, 0xD5CA6EBA,\n    0xB70DDBA, 0xDFF43867, 0xD06AB2D0, 0xD8C78BB, 0x78F6AE4F,\n    0x4C9A58CC, 0x9F9AA50E, 0x7D6A3912, 0xD897C7E4, 0x82F5939D,\n    0xA4A9FFF5, 0x2CB56FDE, 0x3E082D4B, 0xB829DC58, 0xE4515CEB,\n    0xCE585A33, 0x27901244, 0x68860E95, 0xE156A451, 0x9E351FE0,\n    0xC69BD757, 0x4B2C4A2B, 0xD5DE5A91, 0x3557B0DE, 0x99E910B0,\n    0x975BE470, 0xDB4DE130, 0xE4C6DA1D, 0xC2BC058F, 0x37544906,\n    0x12CC200E, 0x54569133, 0x6586FC03, 0xF183C0CF, 0x642583E,\n    0xFBE882CD, 0x8A098C35, 0xE8300988, 0xFE835E55, 0xEA74FD24,\n    0xF3127AB2, 0xEE8379F2, 0x3F136FD2, 0x472AA942, 0x3BC1A7D7,\n    0x5B6A8A98, 0xF039CCF3, 0x5E55425B, 0x3F801B4, 0x44556FB4,\n    0xCC966D37, 0x56E32B90, 0x2BCDA2E5, 0xC70F1125, 0x8C2A015C,\n    0x3D37FCA7, 0x2118A4EF, 0xCE051A9C, 0xCB84DCB9, 0x8451C9E0,\n    0x4BDB1900, 0x8FC71D5D, 0xF61FD749, 0xA696D2E0, 0x6EED502A,\n    0xB345CE8B, 0x76FCDA8E, 0xBE4A45F8, 0x8375E9E7, 0x625FF29B,\n    0xCEC61240, 0x3876B21D, 0xBA8C8F59, 0x8CD169C6, 0x9F82251F,\n    0x2E6EC495, 0x99319E, 0xB0160B46, 0x8B77EDD8, 0x6217902B,\n    0x76FA6AD0, 0xB541F2BC, 0x961EA91C, 0x6F554C1F, 0xBD92328D,\n    0xA9C077FD, 0x90A5311C, 0xEFE9B1FB, 0x9C84AA8C, 0x812517C3,\n    0xFE71D7F4, 0xC4F6A5BF, 0x8B75A262, 0xC726EB36, 0x5F803035,\n    0xCECDE2B7, 0xF61152A8, 0x78557ED1, 0x50F3BB55, 0xDD830290,\n    0xB125B524, 0xC8683B0D, 0xE5FD573B, 0x48B13066, 0x62AE556E,\n    0x5A637C89, 0x498D69F, 0x3F3A5BE5, 0xB98B86D7, 0x20CF4AF4,\n    0xA3E55E7D, 0xEE93FC6F, 0xCCA95763, 0x5B3C5706, 0x8342B013,\n    0xA0C7BDB9, 0x83D686E4, 0x6934B64, 0x324D75C3, 0x9A100C81,\n    0x72E7E9AE, 0xC729A8AC, 0x9E8489E0, 0xFE5BC233, 0x64709AE9,\n    0x113437BC, 0x296DEBC0, 0xC4376603, 0x9F0CD7EE, 0x6412AB97,\n    0x3EECEFCD, 0x62DCD50, 0x15DFF1, 0xEEFDCF8E, 0x119849C1,\n    0xDAAC93FF, 0xD531AF57, 0x82A10F47, 0xD55B7A97, 0x2F3A268B,\n    0x4F1CC181, 0xAE01C1AC, 0xF3CF6F61, 0xE8BDAED5, 0x7397FD99,\n    0xDD36A03C, 0x9BAED7C3, 0x51404903, 0xB9867B61, 0x3880A4FD,\n    0x42B90A49, 0xA94696C1, 0x546DEA1D, 0xEE73A3DE, 0x1A4BAC37,\n    0xBC6AF7AE, 0x7DD5B57B, 0xD2F121F, 0xD2BCCA1E, 0xD5DC4753,\n    0xA135C08C, 0x78E97831, 0x9B91C00B, 0xFFF2C044, 0x147B797F,\n    0x299CFB60, 0x71083BB, 0xB39A6C4F, 0x4814E3E1, 0xBD246AB0,\n    0xBCD61250, 0x2D0870, 0xC660435C, 0xCA11681E, 0xADA4C80E,\n    0x790C8875, 0x8C4F0D08, 0x48D90C74, 0xE874E9AA, 0xA8013EE8,\n    0xB2D23A7A, 0xAF73A16E, 0x2485512C, 0x698E0CB2, 0x2FF566C9,\n    0xC1B0C3C6, 0x2BE17C0E, 0xC42C3907, 0xD8A2EA94, 0x8991D24C,\n    0x19B939F1, 0xF936F8B3, 0xA72D7EF1, 0x97EED001, 0xBF9C5156,\n    0x75F08A67, 0x9AFD5756, 0x5D9D359C, 0xF905B7EC, 0x2B1553E1,\n    0x9E0FD4E1, 0x8DC4814C, 0x89F28E6D, 0x14174915, 0x1F3A4217,\n    0xA8F367F9, 0x93EE87C5, 0xAD70C6D8, 0xF04D465C, 0xE403D72B,\n    0xA686EC0F, 0xCD3A5728, 0xA1BD007, 0x9E21E401, 0xAE8517CF,\n    0x6DDB79FC, 0x8CB2C475, 0x6F71544, 0xBEAC91CF, 0x4739DC4E,\n    0x6CF4F788, 0x36BAD9AC, 0xF23568D4, 0x250BAB0A, 0x4633384F,\n    0x54F6F251, 0x454F9605, 0xCB1A346, 0x632E207F, 0x3017539C,\n    0x174A33ED, 0xBDCFD2DE, 0xC17F3D39, 0x17B8A9A2, 0xC267FB51,\n    0x9322387D, 0x348760C, 0x3C14D7E0, 0xE4E4254E, 0xCA72AA41,\n    0xB6102ED3, 0x6317A3F, 0xD3B6B9F7, 0xA8C71BB7, 0x6E452957,\n    0x3F896E32, 0xE38A4A58, 0x9893F432, 0x110A21D4, 0xE835FEBE,\n    0x90F51080, 0xD0AC5AF, 0x4FCB9903, 0xFE547785, 0x144B285D,\n    0xD0ECC753, 0xAE503BA4, 0x57CEAABC, 0x95713FE6, 0x5B0F4F86,\n    0xD94BD751, 0x4017F139, 0xF60F5E1D, 0xB9A63351, 0xF7F94F6A,\n    0x7E556ECC, 0xBFDB8642, 0xB70D07D, 0x351BEA77, 0xD1F3CAD,\n    0xA3D7EF4D, 0x1EAA28E3, 0x98A2EA79, 0xD8647392, 0x1B896804,\n    0x35CA6A08, 0x305258F, 0xE58BD955, 0xABCB6278, 0x87CF1146,\n    0x13145966, 0x45BB55CD, 0x818AA368, 0xA027F11F, 0x64C427A3,\n    0xEC831B99, 0xF2BD53F9, 0x7FDA7301, 0x35BE80D4, 0x5256E6FB,\n    0xC97D33AE, 0x30921709, 0xC2724BEC, 0x78F5436F, 0x4F5749CD,\n    0x9007F551, 0x327C31C0, 0x89782D13, 0x119AD125, 0xB1071A01,\n    0x63100C70, 0x83120035, 0xA8E2E403, 0x7E213FA3, 0xBF06AAC4,\n    0xBA68C4D9, 0x4B568927, 0x1DDD40F, 0x10FC10E8, 0xBBD7230A,\n    0x96475640, 0x8C8E6EC1, 0x44A1134A, 0xEF0F40F0, 0x51E2A5E0,\n    0x61AE6D65, 0x9DE72FD6, 0xB1711336, 0x90BEB84, 0xD610EFC6,\n    0x3D231F91, 0xB5885164, 0x2CB2112C, 0x36F50789, 0x3DEF2AB9,\n    0x1D9DC1DA, 0xA37DB070, 0x2AA92EB, 0x2D57ED6E, 0xD6E2C2CD,\n    0xB78FC54C, 0x767A565E, 0x1D1F5AAE, 0x89F256DB, 0x716A97D,\n    0x1344431D, 0xFAF015FB, 0xFED59649, 0xC479882A, 0xEEFC3D1E,\n    0x840AE162, 0xD963A347, 0x75462C25, 0xDA990E07, 0x9A57DE31,\n    0x74A35F20, 0x91852CD6, 0x3F16DE14, 0x5FA6A255, 0x47D00F85,\n    0x1B4836C9, 0xC73D0290, 0xE301026B, 0x592068D6, 0x7C32A301,\n    0x3A3C04C4, 0xB5BD3BAF, 0xB8C3BF60, 0x76723A1B, 0xD05BC35E,\n    0x7679021C, 0x6298096, 0x590BA59C, 0xBB30A2F6, 0xE5F6B06C,\n    0x21BD2A9E, 0xAC68D7DA, 0xEDA2ED5A, 0xA10E60FA, 0xABDBF569,\n    0x17F5868E, 0x82AA8505, 0x384BD8FC, 0x68DC2746, 0x8F029C0D,\n    0x3755EB11, 0xAEF4BB79, 0x453B87BA, 0x9926977F, 0x1FA1B806,\n    0xC905618, 0x9BFE8E92, 0xF6F68A5A, 0xAA955D92, 0x44F57A4A,\n    0x2186E272, 0x62EB01DA, 0x85A2D502, 0xB087955D, 0x26FF2BA0,\n    0x8D462C04, 0xE024573B, 0x609CDBD7, 0xA99B9D19, 0xFEEB3F60,\n    0x12903A0D, 0x46480C6, 0xDD0BD1B9, 0x6C60C43, 0x5E11A4FE,\n    0x935E9E58, 0x8A7F6D33, 0xA505132D, 0xBB2E3E12, 0xF48633F4,\n    0xF3BA8CF7, 0xC25D4EDD, 0x788672B8, 0xB2812608, 0xACB3A62,\n    0x2EEB679A, 0x443A71B9, 0xC42F4B12, 0xD28B3482, 0x5571FA8A,\n    0x5C0B3D55, 0x8B8619C6, 0xF564F10C, 0xD9A7C914, 0xFBD1EF46,\n    0xCEABC573, 0xEC609D28, 0x5839413B, 0x5019E901, 0x248FFF30,\n    0x7BFFB801, 0x7FD46584, 0x43702812, 0x3A5A0880, 0x7E3E9EDA,\n    0xCA4623E3, 0x2FB87A70, 0xFE70D956, 0xCE9EB3E6, 0x9A2CD2F1,\n    0x92EFB0C8, 0xC7E23873, 0x53B63A86, 0xB9D93548, 0x3C022B2,\n    0xCF4F22A6, 0x981E70BC, 0x4A05F3AB, 0xD763E93B, 0x6EAF767D,\n    0x4162629D, 0xD82A25E7, 0x6CDD19A3, 0x13524F68, 0xE5F23FDC,\n    0xB37F311F, 0x35FD43B6, 0x36626469, 0x1E409CF6, 0xE4C04F9D,\n    0xC1B58001, 0xD131078F, 0x9DE279A, 0x80B62212, 0x526405DD,\n    0xC17777C1, 0x7045FCDC, 0x53862AEC, 0x5D583056, 0xEB532222,\n    0x5837EA32, 0x719C06A4, 0x43D4F131, 0x577C6DDB, 0x9E5815A7,\n    0x8189DDD9, 0x170F154F, 0xEF813B20, 0x4DD83A53, 0xB09A28FD,\n    0x8D0DBED5, 0x1836596D, 0xC5BB2696, 0xA69FC859, 0xD6FF5E0D,\n    0xCCC65761, 0xC818C6F7, 0x7A25F980, 0xF949133, 0xC515C093,\n    0xA8AD04B5, 0x6768AC1C, 0xB5BE2C4A, 0x4F04616F, 0xBD28E4E3,\n    0x4CCA6347, 0x5F61C031\n};\n\n/* The source data is random across the q31_t range. Accessing it by word should\n   remain random. */\nq15_t * transform_fft_q15_inputs = (q15_t *) transform_fft_q31_inputs;\n\nq15_t dct4_transform_fft_q15_inputs[TRANSFORM_MAX_FFT_LEN * 2] =\n{\n   0x0000, 0x2d5c, 0x54d5, 0x714b, 0x7f0d, 0x7c51, 0x6972, 0x48e4, \n   0x1edf, 0xf0da, 0xc4cb, 0xa06c, 0x8874, 0x8001, 0x882a, 0x9fe2, \n   0xc413, 0xf00c, 0x1e16, 0x4839, 0x68fc, 0x7c1f, 0x7f25, 0x71ab, \n   0x5570, 0x2e1e, 0x00cf, 0xd367, 0xabc7, 0x8f16, 0x810d, 0x837e, \n   0x9619, 0xb672, 0xe057, 0x0e58, 0x3a7c, 0x5f0a, 0x7741, 0x7ffe, \n   0x781e, 0x60a7, 0x3ca4, 0x10c2, 0xe2b4, 0xb873, 0x977b, 0x8415, \n   0x80c3, 0x8df6, 0xa9f6, 0xd121, 0xfe61, 0x2bd6, 0x539c, 0x7087, \n   0x7ed8, 0x7cb1, 0x6a5c, 0x4a38, 0x2072, 0xf277, 0xc63d, 0xa182, \n   0x890b, 0x8005, 0x879b, 0x9ed2, 0xc2a6, 0xee70, 0x1c81, 0x46e0, \n   0x680c, 0x7bb7, 0x7f53, 0x7268, 0x56a3, 0x2fa0, 0x026f, 0xd4ed, \n   0xad02, 0x8fdc, 0x8145, 0x8321, 0x9531, 0xb51f, 0xdec5, 0x0cba, \n   0x390a, 0x5df1, 0x76a8, 0x7ff7, 0x78ab, 0x61b5, 0x3e10, 0x125e, \n   0xe449, 0xb9cd, 0x986d, 0x847f, 0x8099, 0x8d3c, 0xa8c4, 0xcf9f, \n   0xfcc2, 0x2a4f, 0x5260, 0x6fbf, 0x7e9d, 0x7d0c, 0x6b40, 0x4b89, \n   0x2203, 0xf414, 0xc7b1, 0xa29c, 0x89a7, 0x800e, 0x8710, 0x9dc5, \n   0xc13a, 0xecd5, 0x1aec, 0x4585, 0x6718, 0x7b4a, 0x7f7b, 0x7320, \n   0x57d3, 0x3121, 0x040e, 0xd675, 0xae40, 0x90a7, 0x8182, 0x82c8, \n   0x944f, 0xb3d0, 0xdd35, 0x0b1d, 0x3795, 0x5cd5, 0x760a, 0x7fec, \n   0x7933, 0x62bf, 0x3f7a, 0x13f8, 0xe5df, 0xbb2a, 0x9964, 0x84ef, \n   0x8073, 0x8c86, 0xa796, 0xce20, 0xfb23, 0x28c6, 0x5120, 0x6ef2, \n   0x7e5e, 0x7d63, 0x6c21, 0x4cd7, 0x2393, 0xf5b2, 0xc927, 0xa3ba, \n   0x8a47, 0x801c, 0x868b, 0x9cbd, 0xbfd1, 0xeb3b, 0x1955, 0x4427, \n   0x6620, 0x7ad7, 0x7f9d, 0x73d3, 0x5900, 0x329f, 0x05ad, 0xd7ff, \n   0xaf81, 0x9176, 0x81c4, 0x8274, 0x9370, 0xb284, 0xdba6, 0x097f, \n   0x361d, 0x5bb5, 0x7566, 0x7fda, 0x79b6, 0x63c6, 0x40e2, 0x1592, \n   0xe777, 0xbc8a, 0x9a5e, 0x8564, 0x8053, 0x8bd5, 0xa66b, 0xcca2, \n   0xf983, 0x273c, 0x4fdd, 0x6e21, 0x7e19, 0x7db3, 0x6cfd, 0x4e21, \n   0x2521, 0xf750, 0xca9f, 0xa4dc, 0x8aed, 0x8030, 0x860a, 0x9bb9, \n   0xbe6b, 0xe9a1, 0x17bd, 0x42c6, 0x6523, 0x7a60, 0x7fbb, 0x7481, \n   0x5a29, 0x341c, 0x074c, 0xd98a, 0xb0c6, 0x924a, 0x820b, 0x8226, \n   0x9297, 0xb13b, 0xda18, 0x07e0, 0x34a4, 0x5a92, 0x74bf, 0x7fc4, \n   0x7a34, 0x64c8, 0x4247, 0x172b, 0xe90f, 0xbdec, 0x9b5d, 0x85dd, \n   0x8038, 0x8b29, 0xa544, 0xcb27, 0xf7e5, 0x25af, 0x4e97, 0x6d4b, \n   0x7dcf, 0x7dff, 0x6dd5, 0x4f69, 0x26ae, 0xf8ef, 0xcc1a, 0xa601, \n   0x8b97, 0x8049, 0x858f, 0x9ab9, 0xbd08, 0xe809, 0x1625, 0x4162, \n   0x6422, 0x79e4, 0x7fd3, 0x752b, 0x5b4e, 0x3596, 0x08eb, 0xdb17, \n   0xb20e, 0x9322, 0x8258, 0x81dd, 0x91c1, 0xaff5, 0xd88c, 0x0641, \n   0x3328, 0x596a, 0x7412, 0x7fa8, 0x7aad, 0x65c6, 0x43a9, 0x18c3, \n   0xeaa8, 0xbf51, 0x9c5f, 0x865c, 0x8023, 0x8a82, 0xa421, 0xc9ad, \n   0xf646, 0x2422, 0x4d4d, 0x6c70, 0x7d80, 0x7e46, 0x6ea8, 0x50ad, \n   0x2839, 0xfa8e, 0xcd97, 0xa72b, 0x8c46, 0x8067, 0x8518, 0x99bd, \n   0xbba7, 0xe671, 0x148b, 0x3ffb, 0x631e, 0x7963, 0x7fe6, 0x75d0, \n   0x5c6f, 0x370f, 0x0a89, 0xdca6, 0xb359, 0x93ff, 0x82a9, 0x8199, \n   0x90f0, 0xaeb2, 0xd702, 0x04a2, 0x31aa, 0x583f, 0x7360, 0x7f88, \n   0x7b21, 0x66c0, 0x4508, 0x1a5a, 0xec42, 0xc0b9, 0x9d66, 0x86e0, \n   0x8012, 0x89e0, 0xa302, 0xc836, 0xf4a8, 0x2292, 0x4c01, 0x6b91, \n   0x7d2c, 0x7e87, 0x6f76, 0x51ee, 0x29c3, 0xfc2d, 0xcf16, 0xa858, \n   0x8cfa, 0x808b, 0x84a7, 0x98c5, 0xba4a, 0xe4da, 0x12f1, 0x3e92, \n   0x6215, 0x78dc, 0x7ff4, 0x7670, 0x5d8c, 0x3884, 0x0c27, 0xde36, \n   0xb4a7, 0x94e0, 0x8300, 0x815a, 0x9024, 0xad73, 0xd579, 0x0303, \n   0x302a, 0x5711, 0x72aa, 0x7f61, 0x7b90, 0x67b5, 0x4664, 0x1bf0, \n   0xeddd, 0xc223, 0x9e71, 0x8769, 0x8007, 0x8942, 0xa1e6, 0xc6c2, \n   0xf30b, 0x2102, 0x4ab1, 0x6aae, 0x7cd2, 0x7ec3, 0x7040, 0x532b, \n   0x2b4b, 0xfdcc, 0xd097, 0xa988, 0x8db3, 0x80b4, 0x843a, 0x97d1, \n   0xb8ef, 0xe345, 0x1155, 0x3d27, 0x6108, 0x7851, 0x7ffc, 0x770b, \n   0x5ea6, 0x39f8, 0x0dc4, 0xdfc7, 0xb5f8, 0x95c5, 0x835c, 0x8120, \n   0x8f5d, 0xac37, 0xd3f2, 0x0164, 0x2ea8, 0x55de, 0x71ef, 0x7f36, \n   0x7bfa, 0x68a7, 0x47be, 0x1d85, 0xef79, 0xc390, 0x9f80, 0x87f6, \n   0x8001, 0x88a9, 0xa0cf, 0xc54f, 0xf16e, 0x1f70, 0x495e, 0x69c6, \n   0x7c74, 0x7efa, 0x7106, 0x5465, 0x2cd1, 0xff6c, 0xd219, 0xaabc, \n   0x8e70, 0x80e2, 0x83d3, 0x96e2, 0xb796, 0xe1b1, 0x0fb9, 0x3bb8, \n   0x5ff7, 0x77c1, 0x7fff, 0x77a1, 0x5fbc, 0x3b69, 0x0f61, 0xe15a, \n   0xb74d, 0x96af, 0x83bd, 0x80ec, 0x8e9a, 0xaaff, 0xd26d, 0xffc5, \n   0x2d24, 0x54a8, 0x712f, 0x7f05, 0x7c5f, 0x6994, 0x4914, 0x1f19, \n   0xf115, 0xc500, 0xa093, 0x8889, 0x8001, 0x8816, 0x9fbb, 0xc3df, \n   0xefd1, 0x1ddc, 0x4808, 0x68da, 0x7c10, 0x7f2c, 0x71c6, 0x559c, \n   0x2e55, 0x010a, 0xd39e, 0xabf4, 0x8f32, 0x8115, 0x8371, 0x95f7, \n   0xb641, 0xe01e, 0x0e1d, 0x3a48, 0x5ee2, 0x772c, 0x7ffd, 0x7832, \n   0x60cd, 0x3cd8, 0x10fd, 0xe2ee, 0xb8a4, 0x979e, 0x8423, 0x80bd, \n   0x8ddb, 0xa9ca, 0xd0ea, 0xfe26, 0x2b9f, 0x536f, 0x706b, 0x7ed0, \n   0x7cbf, 0x6a7c, 0x4a68, 0x20ab, 0xf2b2, 0xc672, 0xa1aa, 0x8921, \n   0x8006, 0x8787, 0x9eab, 0xc272, 0xee36, 0x1c48, 0x46af, 0x67ea, \n   0x7ba8, 0x7f59, 0x7282, 0x56cf, 0x2fd7, 0x02aa, 0xd525, 0xad2f, \n   0x8ff9, 0x814d, 0x8314, 0x9511, 0xb4ef, 0xde8c, 0x0c80, 0x38d5, \n   0x5dc9, 0x7692, 0x7ff6, 0x78bf, 0x61db, 0x3e44, 0x1298, 0xe483, \n   0xb9ff, 0x9890, 0x848f, 0x8093, 0x8d22, 0xa899, 0xcf68, 0xfc87, \n   0x2a17, 0x5232, 0x6fa2, 0x7e95, 0x7d19, 0x6b61, 0x4bb8, 0x223c, \n   0xf44f, 0xc7e6, 0xa2c5, 0x89bd, 0x8010, 0x86fd, 0x9d9f, 0xc107, \n   0xec9b, 0x1ab2, 0x4553, 0x66f5, 0x7b3a, 0x7f80, 0x7339, 0x57fe, \n   0x3157, 0x0449, 0xd6ad, 0xae6d, 0x90c4, 0x818b, 0x82bc, 0x942f, \n   0xb3a0, 0xdcfc, 0x0ae2, 0x375f, 0x5cad, 0x75f3, 0x7fe9, 0x7946, \n   0x62e5, 0x3fae, 0x1433, 0xe619, 0xbb5c, 0x9987, 0x84ff, 0x806f, \n   0x8c6d, 0xa76b, 0xcde9, 0xfae7, 0x288e, 0x50f2, 0x6ed5, 0x7e54, \n   0x7d6e, 0x6c41, 0x4d06, 0x23cc, 0xf5ed, 0xc95c, 0xa3e3, 0x8a5f, \n   0x801f, 0x8678, 0x9c98, 0xbf9e, 0xeb00, 0x191b, 0x43f5, 0x65fc, \n   0x7ac7, 0x7fa2, 0x73ec, 0x592a, 0x32d6, 0x05e8, 0xd837, 0xafaf, \n   0x9194, 0x81ce, 0x8269, 0x9351, 0xb255, 0xdb6d, 0x0944, 0x35e8, \n   0x5b8c, 0x754f, 0x7fd8, 0x79c8, 0x63eb, 0x4115, 0x15cc, 0xe7b1, \n   0xbcbc, 0x9a82, 0x8575, 0x804f, 0x8bbd, 0xa641, 0xcc6c, 0xf948, \n   0x2703, 0x4faf, 0x6e03, 0x7e0f, 0x7dbf, 0x6d1c, 0x4e50, 0x255a, \n   0xf78b, 0xcad5, 0xa505, 0x8b05, 0x8033, 0x85f8, 0x9b94, 0xbe39, \n   0xe967, 0x1783, 0x4293, 0x64ff, 0x7a4f, 0x7fbf, 0x749a, 0x5a52, \n   0x3452, 0x0787, 0xd9c3, 0xb0f4, 0x9268, 0x8216, 0x821b, 0x9278, \n   0xb10c, 0xd9e0, 0x07a5, 0x346e, 0x5a68, 0x74a6, 0x7fc0, 0x7a46, \n   0x64ec, 0x4279, 0x1765, 0xe949, 0xbe1f, 0x9b81, 0x85ef, 0x8035, \n   0x8b11, 0xa51b, 0xcaf1, 0xf7aa, 0x2577, 0x4e68, 0x6d2c, 0x7dc4, \n   0x7e0a, 0x6df3, 0x4f97, 0x26e6, 0xf92a, 0xcc50, 0xa62c, 0x8bb0, \n   0x804d, 0x857d, 0x9a95, 0xbcd6, 0xe7cf, 0x15ea, 0x412f, 0x63fe, \n   0x79d2, 0x7fd6, 0x7543, 0x5b77, 0x35cc, 0x0925, 0xdb50, 0xb23d, \n   0x9341, 0x8263, 0x81d3, 0x91a3, 0xafc7, 0xd854, 0x0606, 0x32f2, \n   0x5940, 0x73f9, 0x7fa4, 0x7abe, 0x65ea, 0x43db, 0x18fd, 0xeae2, \n   0xbf84, 0x9c85, 0x866f, 0x8020, 0x8a6b, 0xa3f8, 0xc978, 0xf60b, \n   0x23e9, 0x4d1e, 0x6c51, 0x7d74, 0x7e4f, 0x6ec5, 0x50db, 0x2871, \n   0xfac9, 0xcdcd, 0xa755, 0x8c60, 0x806c, 0x8508, 0x9999, 0xbb75, \n   0xe637, 0x1451, 0x3fc8, 0x62f8, 0x7950, 0x7fe8, 0x75e7, 0x5c98, \n   0x3744, 0x0ac4, 0xdcdf, 0xb388, 0x941e, 0x82b5, 0x8190, 0x90d3, \n   0xae85, 0xd6ca, 0x0467, 0x3173, 0x5814, 0x7347, 0x7f82, 0x7b31, \n   0x66e3, 0x453a, 0x1a94, 0xec7d, 0xc0ec, 0x9d8c, 0x86f3, 0x8011, \n   0x89c9, 0xa2d9, 0xc801, 0xf46d, 0x2259, 0x4bd1, 0x6b71, 0x7d1f, \n   0x7e90, 0x6f93, 0x521b, 0x29fb, 0xfc68, 0xcf4c, 0xa883, 0x8d14, \n   0x8090, 0x8497, 0x98a2, 0xba18, 0xe4a1, 0x12b6, 0x3e5f, 0x61ef, \n   0x78c9, 0x7ff5, 0x7686, 0x5db5, 0x38b9, 0x0c61, 0xde6f, 0xb4d7, \n   0x9500, 0x830d, 0x8152, 0x9007, 0xad46, 0xd541, 0x02c8, 0x2ff3, \n   0x56e5, 0x7290, 0x7f5c, 0x7ba0, 0x67d8, 0x4696, 0x1c2a, 0xee17, \n   0xc257, 0x9e97, 0x877d, 0x8006, 0x892c, 0xa1be, 0xc68d, 0xf2d0, \n   0x20c8, 0x4a81, 0x6a8d, 0x7cc5, 0x7ecc, 0x705d, 0x5358, 0x2b82, \n   0xfe08, 0xd0ce, 0xa9b4, 0x8dce, 0x80ba, 0x842b, 0x97af, 0xb8bd, \n   0xe30b, 0x111b, 0x3cf3, 0x60e1, 0x783d, 0x7ffd, 0x7721, 0x5ece, \n   0x3a2d, 0x0dff, 0xe000, 0xb629, 0x95e6, 0x836a, 0x8119, 0x8f41, \n   0xac0b, 0xd3bb, 0x0129, 0x2e71, 0x55b2, 0x71d4, 0x7f2f, 0x7c09, \n   0x68c9, 0x47ef, 0x1dbf, 0xefb3, 0xc3c4, 0x9fa7, 0x880b, 0x8001, \n   0x8894, 0xa0a7, 0xc51b, 0xf133, 0x1f36, 0x492d, 0x69a5, 0x7c66, \n   0x7f02, 0x7121, 0x5492, 0x2d08, 0xffa7, 0xd251, 0xaae8, 0x8e8b, \n   0x80e9, 0x83c5, 0x96c1, 0xb766, 0xe177, 0x0f7f, 0x3b84, 0x5fd0, \n   0x77ac, 0x7fff, 0x77b6, 0x5fe3, 0x3b9d, 0x0f9b, 0xe193, 0xb77d, \n   0x96d1, 0x83cc, 0x80e5, 0x8e7e, 0xaad3, 0xd236, 0xff8a, 0x2ced, \n   0x547c, 0x7114, 0x7efe, 0x7c6d, 0x69b5, 0x4945, 0x1f52, 0xf150, \n   0xc534, 0xa0ba, 0x889e, 0x8001, 0x8801, 0x9f94, 0xc3ab, 0xef97, \n   0x1da3, 0x47d7, 0x68b8, 0x7c02, 0x7f33, 0x71e1, 0x55c8, 0x2e8c, \n   0x0145, 0xd3d6, 0xac20, 0x8f4e, 0x811c, 0x8363, 0x95d6, 0xb611, \n   0xdfe5, 0x0de2, 0x3a13, 0x5eba, 0x7716, 0x7ffd, 0x7847, 0x60f4, \n   0x3d0c, 0x1137, 0xe327, 0xb8d5, 0x97c0, 0x8432, 0x80b7, 0x8dc1, \n   0xa99f, 0xd0b3, 0xfdeb, 0x2b67, 0x5342, 0x704f, 0x7ec8, 0x7ccc, \n   0x6a9d, 0x4a98, 0x20e4, 0xf2ed, 0xc6a6, 0xa1d2, 0x8937, 0x8007, \n   0x8773, 0x9e85, 0xc23e, 0xedfb, 0x1c0e, 0x467e, 0x67c7, 0x7b98, \n   0x7f5e, 0x729d, 0x56fa, 0x300e, 0x02e5, 0xd55c, 0xad5c, 0x9015, \n   0x8156, 0x8307, 0x94f0, 0xb4c0, 0xde53, 0x0c45, 0x38a0, 0x5da1, \n   0x767b, 0x7ff5, 0x78d2, 0x6201, 0x3e78, 0x12d3, 0xe4bd, 0xba30, \n   0x98b3, 0x849e, 0x808e, 0x8d08, 0xa86e, 0xcf32, 0xfc4c, 0x29df, \n   0x5205, 0x6f85, 0x7e8c, 0x7d25, 0x6b81, 0x4be8, 0x2275, 0xf48a, \n   0xc81b, 0xa2ed, 0x89d4, 0x8011, 0x86ea, 0x9d7a, 0xc0d3, 0xec60, \n   0x1a78, 0x4522, 0x66d2, 0x7b2a, 0x7f85, 0x7353, 0x5829, 0x318e, \n   0x0484, 0xd6e5, 0xae9b, 0x90e1, 0x8194, 0x82b0, 0x940f, 0xb371, \n   0xdcc3, 0x0aa7, 0x372a, 0x5c84, 0x75dc, 0x7fe7, 0x7959, 0x630a, \n   0x3fe1, 0x146d, 0xe653, 0xbb8e, 0x99aa, 0x8510, 0x806a, 0x8c53, \n   0xa741, 0xcdb3, 0xfaac, 0x2856, 0x50c4, 0x6eb7, 0x7e4b, 0x7d7a, \n   0x6c60, 0x4d35, 0x2404, 0xf628, 0xc992, 0xa40c, 0x8a76, 0x8021, \n   0x8666, 0x9c72, 0xbf6b, 0xeac6, 0x18e1, 0x43c2, 0x65d8, 0x7ab6, \n   0x7fa6, 0x7405, 0x5955, 0x330c, 0x0623, 0xd86f, 0xafdd, 0x91b2, \n   0x81d8, 0x825e, 0x9332, 0xb226, 0xdb34, 0x0909, 0x35b2, 0x5b63, \n   0x7537, 0x7fd5, 0x79db, 0x6410, 0x4148, 0x1607, 0xe7eb, 0xbcee, \n   0x9aa6, 0x8586, 0x804b, 0x8ba4, 0xa617, 0xcc36, 0xf90d, 0x26cb, \n   0x4f80, 0x6de4, 0x7e05, 0x7dca, 0x6d3b, 0x4e7f, 0x2592, 0xf7c6, \n   0xcb0b, 0xa52f, 0x8b1d, 0x8037, 0x85e6, 0x9b6f, 0xbe06, 0xe92d, \n   0x1749, 0x4261, 0x64db, 0x7a3d, 0x7fc2, 0x74b2, 0x5a7c, 0x3488, \n   0x07c2, 0xd9fb, 0xb123, 0x9287, 0x8220, 0x8211, 0x9259, 0xb0de, \n   0xd9a7, 0x076a, 0x3438, 0x5a3e, 0x748e, 0x7fbd, 0x7a57, 0x6511, \n   0x42ac, 0x179f, 0xe983, 0xbe51, 0x9ba6, 0x8601, 0x8032, 0x8af9, \n   0xa4f1, 0xcabb, 0xf76f, 0x253e, 0x4e39, 0x6d0d, 0x7db9, 0x7e14, \n   0x6e11, 0x4fc5, 0x271f, 0xf965, 0xcc86, 0xa656, 0x8bc9, 0x8051, \n   0x856c, 0x9a70, 0xbca3, 0xe795, 0x15b0, 0x40fc, 0x63d9, 0x79c0, \n   0x7fd9, 0x755a, 0x5ba0, 0x3602, 0x0960, 0xdb89, 0xb26c, 0x9360, \n   0x826e, 0x81c9, 0x9185, 0xaf99, 0xd81c, 0x05cb, 0x32bb, 0x5916, \n   0x73e0, 0x7fa0, 0x7acf, 0x660d, 0x440d, 0x1937, 0xeb1d, 0xbfb7, \n   0x9caa, 0x8681, 0x801e, 0x8a53, 0xa3cf, 0xc942, 0xf5d0, 0x23b0, \n   0x4cef, 0x6c31, 0x7d69, 0x7e59, 0x6ee3, 0x5108, 0x28a9, 0xfb04, \n   0xce04, 0xa780, 0x8c79, 0x8071, 0x84f7, 0x9976, 0xbb43, 0xe5fd, \n   0x1416, 0x3f95, 0x62d3, 0x793d, 0x7feb, 0x75fe, 0x5cc0, 0x3779, \n   0x0aff, 0xdd18, 0xb3b8, 0x943e, 0x82c2, 0x8186, 0x90b6, 0xae57, \n   0xd692, 0x042c, 0x313d, 0x57ea, 0x732d, 0x7f7d, 0x7b41, 0x6706, \n   0x456b, 0x1ace, 0xecb7, 0xc120, 0x9db2, 0x8706, 0x800f, 0x89b2, \n   0xa2b1, 0xc7cc, 0xf433, 0x2220, 0x4ba1, 0x6b51, 0x7d13, 0x7e99, \n   0x6fb0, 0x5248, 0x2a32, 0xfca3, 0xcf83, 0xa8ae, 0x8d2e, 0x8096, \n   0x8487, 0x987f, 0xb9e6, 0xe467, 0x127c, 0x3e2b, 0x61c9, 0x78b5, \n   0x7ff7, 0x769c, 0x5ddd, 0x38ee, 0x0c9c, 0xdea8, 0xb507, 0x9521, \n   0x831a, 0x8149, 0x8feb, 0xad19, 0xd50a, 0x028d, 0x2fbc, 0x56ba, \n   0x7275, 0x7f56, 0x7baf, 0x67fa, 0x46c7, 0x1c64, 0xee52, 0xc28b, \n   0x9ebe, 0x8791, 0x8005, 0x8916, 0xa196, 0xc658, 0xf295, 0x208f, \n   0x4a51, 0x6a6c, 0x7cb8, 0x7ed4, 0x7079, 0x5385, 0x2bba, 0xfe43, \n   0xd104, 0xa9df, 0x8de8, 0x80c0, 0x841c, 0x978d, 0xb88c, 0xe2d2, \n   0x10e0, 0x3cbf, 0x60bb, 0x7828, 0x7ffe, 0x7736, 0x5ef5, 0x3a61, \n   0x0e39, 0xe03a, 0xb659, 0x9608, 0x8377, 0x8111, 0x8f25, 0xabde, \n   0xd383, 0x00ee, 0x2e3a, 0x5586, 0x71b9, 0x7f29, 0x7c17, 0x68eb, \n   0x4820, 0x1df8, 0xefee, 0xc3f9, 0x9fce, 0x8820, 0x8001, 0x887f, \n   0xa080, 0xc4e6, 0xf0f8, 0x1efd, 0x48fd, 0x6983, 0x7c58, 0x7f09, \n   0x713d, 0x54be, 0x2d3f, 0xffe2, 0xd288, 0xab15, 0x8ea7, 0x80f0, \n   0x83b6, 0x969f, 0xb735, 0xe13e, 0x0f44, 0x3b50, 0x5fa9, 0x7797, \n   0x7fff, 0x77cb, 0x600a, 0x3bd2, 0x0fd6, 0xe1cd, 0xb7ae, 0x96f3, \n   0x83da, 0x80de, 0x8e63, 0xaaa7, 0xd1ff, 0xff4f, 0x2cb6, 0x5450, \n   0x70f8, 0x7ef7, 0x7c7b, 0x69d6, 0x4975, 0x1f8b, 0xf18a, 0xc569, \n   0xa0e2, 0x88b4, 0x8002, 0x87ed, 0x9f6d, 0xc377, 0xef5c, 0x1d69, \n   0x47a6, 0x6896, 0x7bf3, 0x7f39, 0x71fc, 0x55f4, 0x2ec3, 0x0181, \n   0xd40d, 0xac4d, 0x8f6a, 0x8124, 0x8356, 0x95b5, 0xb5e1, 0xdfab, \n   0x0da7, 0x39de, 0x5e93, 0x7700, 0x7ffc, 0x785b, 0x611b, 0x3d40, \n   0x1172, 0xe361, 0xb906, 0x97e2, 0x8441, 0x80b1, 0x8da6, 0xa973, \n   0xd07c, 0xfdb0, 0x2b30, 0x5315, 0x7032, 0x7ebf, 0x7cd9, 0x6abe, \n   0x4ac8, 0x211d, 0xf327, 0xc6db, 0xa1fa, 0x894d, 0x8008, 0x875f, \n   0x9e5f, 0xc20a, 0xedc1, 0x1bd4, 0x464c, 0x67a4, 0x7b89, 0x7f64, \n   0x72b7, 0x5726, 0x3045, 0x0320, 0xd594, 0xad89, 0x9032, 0x815e, \n   0x82fa, 0x94d0, 0xb490, 0xde1a, 0x0c0a, 0x386b, 0x5d79, 0x7665, \n   0x7ff3, 0x78e6, 0x6227, 0x3eab, 0x130d, 0xe4f7, 0xba62, 0x98d6, \n   0x84ae, 0x8088, 0x8cee, 0xa843, 0xcefb, 0xfc10, 0x29a8, 0x51d8, \n   0x6f68, 0x7e83, 0x7d32, 0x6ba1, 0x4c18, 0x22ae, 0xf4c5, 0xc850, \n   0xa316, 0x89eb, 0x8013, 0x86d7, 0x9d54, 0xc0a0, 0xec26, 0x1a3e, \n   0x44f0, 0x66af, 0x7b19, 0x7f8a, 0x736d, 0x5854, 0x31c4, 0x04bf, \n   0xd71d, 0xaec9, 0x90ff, 0x819d, 0x82a4, 0x93ef, 0xb342, 0xdc8a, \n   0x0a6c, 0x36f5, 0x5c5b, 0x75c5, 0x7fe5, 0x796c, 0x6330, 0x4014, \n   0x14a7, 0xe68d, 0xbbc0, 0x99ce, 0x8520, 0x8065, 0x8c3a, 0xa716, \n   0xcd7c, 0xfa71, 0x281e, 0x5097, 0x6e99, 0x7e41, 0x7d86, 0x6c80, \n   0x4d64, 0x243d, 0xf663, 0xc9c7, 0xa435, 0x8a8d, 0x8024, 0x8653, \n   0x9c4d, 0xbf38, 0xea8c, 0x18a7, 0x4390, 0x65b4, 0x7aa5, 0x7fab, \n   0x741e, 0x597f, 0x3342, 0x065e, 0xd8a8, 0xb00b, 0x91d0, 0x81e2, \n   0x8252, 0x9313, 0xb1f7, 0xdafc, 0x08ce, 0x357c, 0x5b39, 0x751f, \n   0x7fd2, 0x79ed, 0x6434, 0x417b, 0x1641, 0xe825, 0xbd20, 0x9aca, \n   0x8597, 0x8047, 0x8b8b, 0xa5ed, 0xcc00, 0xf8d2, 0x2693, 0x4f52, \n   0x6dc6, 0x7dfa, 0x7dd4, 0x6d5a, 0x4ead, 0x25cb, 0xf801, 0xcb41, \n   0xa559, 0x8b35, 0x803a, 0x85d5, 0x9b4b, 0xbdd3, 0xe8f3, 0x170f, \n   0x422e, 0x64b6, 0x7a2c, 0x7fc6, 0x74ca, 0x5aa6, 0x34be, 0x07fd, \n   0xda34, 0xb151, 0x92a5, 0x822b, 0x8206, 0x923b, 0xb0af, 0xd96f, \n   0x072f, 0x3402, 0x5a14, 0x7475, 0x7fb9, 0x7a69, 0x6535, 0x42de, \n   0x17da, 0xe9bd, 0xbe84, 0x9bcb, 0x8613, 0x802f, 0x8ae1, 0xa4c8, \n   0xca85, 0xf734, 0x2506, 0x4e0a, 0x6cee, 0x7dae, 0x7e1e, 0x6e2f, \n   0x4ff3, 0x2757, 0xf9a0, 0xccbc, 0xa680, 0x8be1, 0x8055, 0x855b, \n   0x9a4d, 0xbc71, 0xe75a, 0x1576, 0x40c9, 0x63b4, 0x79ad, 0x7fdc, \n   0x7572, 0x5bca, 0x3637, 0x099b, 0xdbc1, 0xb29b, 0x9380, 0x827a, \n   0x81bf, 0x9168, 0xaf6b, 0xd7e4, 0x0590, 0x3285, 0x58eb, 0x73c7, \n   0x7f9b, 0x7adf, 0x6631, 0x443f, 0x1971, 0xeb57, 0xbfea, 0x9ccf, \n   0x8694, 0x801b, 0x8a3c, 0xa3a6, 0xc90d, 0xf596, 0x2377, 0x4cc0, \n   0x6c12, 0x7d5d, 0x7e62, 0x6f00, 0x5136, 0x28e1, 0xfb3f, 0xce3a, \n   0xa7ab, 0x8c93, 0x8076, 0x84e7, 0x9952, 0xbb12, 0xe5c3, 0x13dc, \n   0x3f62, 0x62ad, 0x792a, 0x7fed, 0x7615, 0x5ce9, 0x37ae, 0x0b39, \n   0xdd50, 0xb3e7, 0x945e, 0x82ce, 0x817d, 0x9099, 0xae2a, 0xd65a, \n   0x03f1, 0x3106, 0x57bf, 0x7313, 0x7f78, 0x7b51, 0x6729, 0x459d, \n   0x1b08, 0xecf1, 0xc153, 0x9dd8, 0x871a, 0x800d, 0x899c, 0xa288, \n   0xc797, 0xf3f8, 0x21e7, 0x4b72, 0x6b31, 0x7d06, 0x7ea2, 0x6fcd, \n   0x5276, 0x2a6a, 0xfcde, 0xcfba, 0xa8d9, 0x8d48, 0x809c, 0x8478, \n   0x985c, 0xb9b5, 0xe42d, 0x1241, 0x3df7, 0x61a2, 0x78a1, 0x7ff8, \n   0x76b3, 0x5e05, 0x3923, 0x0cd7, 0xdee1, 0xb537, 0x9541, 0x8327, \n   0x8141, 0x8fce, 0xacec, 0xd4d2, 0x0252, 0x2f86, 0x568e, 0x725b, \n   0x7f50, 0x7bbe, 0x681d, 0x46f8, 0x1c9d, 0xee8d, 0xc2bf, 0x9ee4, \n   0x87a5, 0x8004, 0x8900, 0xa16f, 0xc623, 0xf25a, 0x2056, 0x4a20, \n   0x6a4c, 0x7cab, 0x7edb, 0x7095, 0x53b2, 0x2bf1, 0xfe7e, 0xd13c, \n   0xaa0b, 0x8e03, 0x80c7, 0x840d, 0x976b, 0xb85b, 0xe298, 0x10a6, \n   0x3c8b, 0x6094, 0x7814, 0x7ffe, 0x774c, 0x5f1d, 0x3a96, 0x0e74, \n   0xe073, 0xb689, 0x9629, 0x8385, 0x810a, 0x8f09, 0xabb2, 0xd34c, \n   0x00b2, 0x2e03, 0x555a, 0x719e, 0x7f22, 0x7c26, 0x690c, 0x4850, \n   0x1e32, 0xf028, 0xc42d, 0x9ff5, 0x8835, 0x8001, 0x886a, 0xa059, \n   0xc4b2, 0xf0be, 0x1ec4, 0x48cc, 0x6962, 0x7c4a, 0x7f10, 0x7158, \n   0x54ea, 0x2d77, 0x001c, 0xd2bf, 0xab41, 0x8ec2, 0x80f7, 0x83a8, \n   0x967d, 0xb705, 0xe105, 0x0f09, 0x3b1b, 0x5f81, 0x7782, 0x7fff, \n   0x77e0, 0x6031, 0x3c06, 0x1011, 0xe206, 0xb7df, 0x9715, 0x83e8, \n   0x80d7, 0x8e48, 0xaa7b, 0xd1c7, 0xff14, 0x2c7e, 0x5423, 0x70dc, \n   0x7eef, 0x7c88, 0x69f8, 0x49a6, 0x1fc5, 0xf1c5, 0xc59d, 0xa10a, \n   0x88c9, 0x8002, 0x87d8, 0x9f46, 0xc343, 0xef21, 0x1d30, 0x4775, \n   0x6874, 0x7be4, 0x7f40, 0x7217, 0x561f, 0x2efa, 0x01bc, 0xd445, \n   0xac7a, 0x8f86, 0x812c, 0x8348, 0x9594, 0xb5b1, 0xdf72, 0x0d6c, \n   0x39aa, 0x5e6b, 0x76ea, 0x7ffb, 0x786f, 0x6141, 0x3d74, 0x11ac, \n   0xe39b, 0xb938, 0x9805, 0x8451, 0x80ab, 0x8d8b, 0xa947, 0xd045, \n   0xfd75, 0x2af8, 0x52e8, 0x7016, 0x7eb7, 0x7ce6, 0x6ade, 0x4af8, \n   0x2156, 0xf362, 0xc710, 0xa222, 0x8963, 0x8009, 0x874b, 0x9e38, \n   0xc1d6, 0xed86, 0x1b9b, 0x461b, 0x6782, 0x7b79, 0x7f6a, 0x72d1, \n   0x5751, 0x307b, 0x035b, 0xd5cc, 0xadb6, 0x904f, 0x8167, 0x82ed, \n   0x94b0, 0xb460, 0xdde1, 0x0bcf, 0x3836, 0x5d50, 0x764e, 0x7ff1, \n   0x78f9, 0x624d, 0x3edf, 0x1347, 0xe530, 0xba93, 0x98f9, 0x84be, \n   0x8083, 0x8cd4, 0xa818, 0xcec5, 0xfbd5, 0x2970, 0x51aa, 0x6f4b, \n   0x7e7a, 0x7d3e, 0x6bc1, 0x4c47, 0x22e7, 0xf500, 0xc885, 0xa33e, \n   0x8a02, 0x8015, 0x86c4, 0x9d2e, 0xc06d, 0xebeb, 0x1a04, 0x44be, \n   0x668b, 0x7b09, 0x7f8f, 0x7386, 0x587f, 0x31fb, 0x04fa, 0xd755, \n   0xaef6, 0x911c, 0x81a7, 0x8298, 0x93d0, 0xb312, 0xdc51, 0x0a31, \n   0x36bf, 0x5c32, 0x75ad, 0x7fe2, 0x797e, 0x6355, 0x4047, 0x14e2, \n   0xe6c7, 0xbbf2, 0x99f2, 0x8531, 0x8060, 0x8c21, 0xa6ec, 0xcd46, \n   0xfa36, 0x27e6, 0x5069, 0x6e7b, 0x7e37, 0x7d91, 0x6c9f, 0x4d93, \n   0x2476, 0xf69e, 0xc9fd, 0xa45f, 0x8aa5, 0x8027, 0x8641, 0x9c28, \n   0xbf05, 0xea51, 0x186d, 0x435e, 0x6590, 0x7a94, 0x7faf, 0x7437, \n   0x59a9, 0x3378, 0x0699, 0xd8e0, 0xb039, 0x91ee, 0x81ec, 0x8247, \n   0x92f4, 0xb1c8, 0xdac3, 0x0893, 0x3547, 0x5b10, 0x7507, 0x7fce, \n   0x79ff, 0x6459, 0x41ad, 0x167b, 0xe85f, 0xbd53, 0x9aee, 0x85a8, \n   0x8043, 0x8b73, 0xa5c3, 0xcbca, 0xf897, 0x265a, 0x4f24, 0x6da7, \n   0x7df0, 0x7ddf, 0x6d78, 0x4edc, 0x2603, 0xf83c, 0xcb77, 0xa583, \n   0x8b4d, 0x803e, 0x85c3, 0x9b26, 0xbda1, 0xe8b8, 0x16d5, 0x41fb, \n   0x6492, 0x7a1a, 0x7fc9, 0x74e2, 0x5ad0, 0x34f4, 0x0838, 0xda6c, \n   0xb180, 0x92c4, 0x8236, 0x81fc, 0x921d, 0xb081, 0xd937, 0x06f4, \n   0x33cc, 0x59ea, 0x745d, 0x7fb5, 0x7a7a, 0x6559, 0x4311, 0x1814, \n   0xe9f8, 0xbeb7, 0x9bef, 0x8625, 0x802b, 0x8ac9, 0xa49e, 0xca50, \n   0xf6f9, 0x24cd, 0x4ddc, 0x6ccf, 0x7da3, 0x7e28, 0x6e4d, 0x5022, \n   0x278f, 0xf9db, 0xccf3, 0xa6aa, 0x8bfa, 0x805a, 0x854a, 0x9a29, \n   0xbc3f, 0xe720, 0x153c, 0x4096, 0x638f, 0x799b, 0x7fdf, 0x7589, \n   0x5bf3, 0x366d, 0x09d6, 0xdbfa, 0xb2ca, 0x939f, 0x8286, 0x81b5, \n   0x914a, 0xaf3d, 0xd7ab, 0x0555, 0x324f, 0x58c1, 0x73ad, 0x7f96, \n   0x7af0, 0x6655, 0x4471, 0x19ab, 0xeb91, 0xc01e, 0x9cf5, 0x86a7, \n   0x8019, 0x8a25, 0xa37d, 0xc8d8, 0xf55b, 0x233e, 0x4c90, 0x6bf2, \n   0x7d51, 0x7e6c, 0x6f1e, 0x5164, 0x2919, 0xfb7a, 0xce71, 0xa7d6, \n   0x8cac, 0x807b, 0x84d7, 0x992f, 0xbae0, 0xe589, 0x13a1, 0x3f2e, \n   0x6287, 0x7917, 0x7fef, 0x762b, 0x5d12, 0x37e4, 0x0b74, 0xdd89, \n   0xb417, 0x947e, 0x82da, 0x8174, 0x907c, 0xadfc, 0xd622, 0x03b6, \n   0x30d0, 0x5793, 0x72f9, 0x7f73, 0x7b61, 0x674c, 0x45cf, 0x1b42, \n   0xed2c, 0xc187, 0x9dfe, 0x872d, 0x800b, 0x8985, 0xa260, 0xc762, \n   0xf3bd, 0x21ae, 0x4b42, 0x6b10, 0x7cfa, 0x7eaa, 0x6fea, 0x52a3, \n   0x2aa2, 0xfd1a, 0xcff1, 0xa905, 0x8d63, 0x80a1, 0x8468, 0x983a, \n   0xb984, 0xe3f4, 0x1207, 0x3dc4, 0x617c, 0x788e, 0x7ff9, 0x76c9, \n   0x5e2d, 0x3958, 0x0d12, 0xdf1a, 0xb567, 0x9562, 0x8334, 0x8139, \n   0x8fb2, 0xacbf, 0xd49a, 0x0217, 0x2f4f, 0x5663, 0x7240, 0x7f49, \n   0x7bcd, 0x683f, 0x4729, 0x1cd7, 0xeec7, 0xc2f3, 0x9f0b, 0x87b9, \n   0x8003, 0x88eb, 0xa147, 0xc5ee, 0xf220, 0x201d, 0x49f0, 0x6a2b, \n   0x7c9d, 0x7ee3, 0x70b1, 0x53de, 0x2c29, 0xfeb9, 0xd173, 0xaa37, \n   0x8e1e, 0x80cd, 0x83ff, 0x9749, 0xb82a, 0xe25f, 0x106b, 0x3c56, \n   0x606d, 0x7800, 0x7fff, 0x7761, 0x5f44, 0x3aca, 0x0eaf, 0xe0ac, \n   0xb6ba, 0x964a, 0x8393, 0x8102, 0x8eed, 0xab85, 0xd314, 0x0077, \n   0x2dcc, 0x552e, 0x7183, 0x7f1b, 0x7c34, 0x692e, 0x4881, 0x1e6b, \n   0xf063, 0xc461, 0xa01c, 0x8849, 0x8001, 0x8855, 0xa031, 0xc47d, \n   0xf083, 0x1e8a, 0x489c, 0x6940, 0x7c3c, 0x7f17, 0x7174, 0x5516, \n   0x2dae, 0x0057, 0xd2f6, 0xab6d, 0x8ede, 0x80fe, 0x839a, 0x965c, \n   0xb6d4, 0xe0cb, 0x0ecf, 0x3ae7, 0x5f5a, 0x776c, 0x7fff, 0x77f4, \n   0x6058, 0x3c3a, 0x104b, 0xe240, 0xb810, 0x9736, 0x83f7, 0x80d1, \n   0x8e2d, 0xaa4f, 0xd190, 0xfed9, 0x2c47, 0x53f7, 0x70c0, 0x7ee7, \n   0x7c96, 0x6a19, 0x49d6, 0x1ffe, 0xf200, 0xc5d2, 0xa131, 0x88df, \n   0x8003, 0x87c4, 0x9f20, 0xc30f, 0xeee7, 0x1cf6, 0x4744, 0x6852, \n   0x7bd5, 0x7f46, 0x7232, 0x564b, 0x2f31, 0x01f7, 0xd47c, 0xaca7, \n   0x8fa3, 0x8134, 0x833b, 0x9574, 0xb581, 0xdf39, 0x0d32, 0x3975, \n   0x5e43, 0x76d5, 0x7ffa, 0x7883, 0x6167, 0x3da8, 0x11e7, 0xe3d4, \n   0xb969, 0x9827, 0x8460, 0x80a5, 0x8d71, 0xa91c, 0xd00e, 0xfd3a, \n   0x2ac0, 0x52bb, 0x6ff9, 0x7eaf, 0x7cf3, 0x6aff, 0x4b28, 0x2190, \n   0xf39d, 0xc745, 0xa24a, 0x8979, 0x800b, 0x8738, 0x9e12, 0xc1a3, \n   0xed4c, 0x1b61, 0x45e9, 0x675f, 0x7b6a, 0x7f70, 0x72eb, 0x577c, \n   0x30b2, 0x0396, 0xd604, 0xade4, 0x906c, 0x8170, 0x82e1, 0x9490, \n   0xb430, 0xdda8, 0x0b94, 0x3800, 0x5d28, 0x7638, 0x7ff0, 0x790c, \n   0x6273, 0x3f12, 0x1382, 0xe56a, 0xbac5, 0x991c, 0x84ce, 0x807e, \n   0x8cba, 0xa7ed, 0xce8e, 0xfb9a, 0x2938, 0x517d, 0x6f2e, 0x7e71, \n   0x7d4a, 0x6be1, 0x4c77, 0x2320, 0xf53b, 0xc8bb, 0xa367, 0x8a19, \n   0x8018, 0x86b1, 0x9d09, 0xc039, 0xebb1, 0x19ca, 0x448c, 0x6668, \n   0x7af9, 0x7f94, 0x73a0, 0x58aa, 0x3231, 0x0535, 0xd78d, 0xaf24, \n   0x913a, 0x81b0, 0x828c, 0x93b0, 0xb2e3, 0xdc19, 0x09f6, 0x368a, \n   0x5c09, 0x7596, 0x7fe0, 0x7991, 0x637a, 0x407a, 0x151c, 0xe701, \n   0xbc24, 0x9a15, 0x8541, 0x805c, 0x8c08, 0xa6c1, 0xcd10, 0xf9fb, \n   0x27ae, 0x503b, 0x6e5e, 0x7e2d, 0x7d9d, 0x6cbe, 0x4dc2, 0x24ae, \n   0xf6d9, 0xca33, 0xa488, 0x8abd, 0x802a, 0x862f, 0x9c03, 0xbed2, \n   0xea17, 0x1833, 0x432c, 0x656c, 0x7a83, 0x7fb3, 0x744f, 0x59d3, \n   0x33ae, 0x06d4, 0xd918, 0xb068, 0x920c, 0x81f6, 0x823c, 0x92d5, \n   0xb199, 0xda8b, 0x0858, 0x3511, 0x5ae6, 0x74ef, 0x7fcb, 0x7a10, \n   0x647e, 0x41e0, 0x16b5, 0xe899, 0xbd85, 0x9b13, 0x85ba, 0x8040, \n   0x8b5a, 0xa599, 0xcb94, 0xf85c, 0x2622, 0x4ef5, 0x6d89, 0x7de5, \n   0x7dea, 0x6d97, 0x4f0b, 0x263c, 0xf877, 0xcbad, 0xa5ac, 0x8b66, \n   0x8041, 0x85b2, 0x9b02, 0xbd6e, 0xe87e, 0x169b, 0x41c9, 0x646d, \n   0x7a08, 0x7fcd, 0x74fa, 0x5af9, 0x3529, 0x0873, 0xdaa5, 0xb1af, \n   0x92e3, 0x8241, 0x81f1, 0x91fe, 0xb053, 0xd8fe, 0x06b9, 0x3396, \n   0x59c0, 0x7444, 0x7fb1, 0x7a8b, 0x657d, 0x4343, 0x184e, 0xea32, \n   0xbeea, 0x9c14, 0x8637, 0x8028, 0x8ab2, 0xa475, 0xca1a, 0xf6be, \n   0x2494, 0x4dad, 0x6cb0, 0x7d97, 0x7e32, 0x6e6b, 0x5050, 0x27c7, \n   0xfa16, 0xcd29, 0xa6d5, 0x8c13, 0x805e, 0x853a, 0x9a05, 0xbc0d, \n   0xe6e7, 0x1501, 0x4063, 0x6369, 0x7988, 0x7fe1, 0x75a1, 0x5c1c, \n   0x36a2, 0x0a11, 0xdc33, 0xb2f9, 0x93bf, 0x8291, 0x81ac, 0x912c, \n   0xaf0f, 0xd773, 0x051a, 0x3218, 0x5896, 0x7394, 0x7f92, 0x7b00, \n   0x6678, 0x44a3, 0x19e5, 0xebcc, 0xc051, 0x9d1a, 0x86b9, 0x8017, \n   0x8a0e, 0xa354, 0xc8a2, 0xf520, 0x2306, 0x4c61, 0x6bd2, 0x7d45, \n   0x7e75, 0x6f3b, 0x5191, 0x2951, 0xfbb5, 0xcea7, 0xa800, 0x8cc6, \n   0x8080, 0x84c7, 0x990c, 0xbaae, 0xe550, 0x1367, 0x3efb, 0x6262, \n   0x7904, 0x7ff0, 0x7642, 0x5d3a, 0x3819, 0x0baf, 0xddc2, 0xb446, \n   0x949e, 0x82e7, 0x816c, 0x905f, 0xadcf, 0xd5ea, 0x037b, 0x3099, \n   0x5768, 0x72df, 0x7f6d, 0x7b71, 0x676f, 0x4600, 0x1b7b, 0xed66, \n   0xc1ba, 0x9e24, 0x8741, 0x800a, 0x896f, 0xa238, 0xc72d, 0xf382, \n   0x2175, 0x4b12, 0x6af0, 0x7ced, 0x7eb3, 0x7006, 0x52d0, 0x2ada, \n   0xfd55, 0xd027, 0xa930, 0x8d7d, 0x80a7, 0x8459, 0x9817, 0xb952, \n   0xe3ba, 0x11cc, 0x3d90, 0x6156, 0x787a, 0x7ffa, 0x76df, 0x5e55, \n   0x398d, 0x0d4d, 0xdf53, 0xb597, 0x9583, 0x8341, 0x8131, 0x8f96, \n   0xac92, 0xd463, 0x01dc, 0x2f18, 0x5637, 0x7226, 0x7f43, 0x7bdc, \n   0x6861, 0x475a, 0x1d11, 0xef02, 0xc327, 0x9f32, 0x87cd, 0x8003, \n   0x88d5, 0xa11f, 0xc5ba, 0xf1e5, 0x1fe4, 0x49c0, 0x6a0a, 0x7c90, \n   0x7eeb, 0x70cd, 0x540b, 0x2c60, 0xfef4, 0xd1aa, 0xaa63, 0x8e39, \n   0x80d4, 0x83f0, 0x9727, 0xb7f9, 0xe225, 0x1030, 0x3c22, 0x6046, \n   0x77eb, 0x7fff, 0x7776, 0x5f6c, 0x3aff, 0x0eea, 0xe0e6, 0xb6ea, \n   0x966b, 0x83a1, 0x80fb, 0x8ed1, 0xab59, 0xd2dd, 0x003c, 0x2d95, \n   0x5502, 0x7167, 0x7f14, 0x7c42, 0x6950, 0x48b2, 0x1ea4, 0xf09e, \n   0xc495, 0xa043, 0x885e, 0x8001, 0x8840, 0xa00a, 0xc449, 0xf048, \n   0x1e51, 0x486b, 0x691f, 0x7c2e, 0x7f1e, 0x718f, 0x5543, 0x2de5, \n   0x0092, 0xd32e, 0xab9a, 0x8efa, 0x8105, 0x838c, 0x963b, 0xb6a4, \n   0xe092, 0x0e94, 0x3ab2, 0x5f32, 0x7757, 0x7fff, 0x7809, 0x607f, \n   0x3c6e, 0x1086, 0xe279, 0xb841, 0x9758, 0x8405, 0x80ca, 0x8e12, \n   0xaa23, 0xd159, 0xfe9e, 0x2c0f, 0x53ca, 0x70a4, 0x7ee0, 0x7ca3, \n   0x6a3a, 0x4a06, 0x2037, 0xf23b, 0xc607, 0xa159, 0x88f5, 0x8004, \n   0x87b0, 0x9ef9, 0xc2db, 0xeeac, 0x1cbd, 0x4713, 0x682f, 0x7bc6, \n   0x7f4c, 0x724c, 0x5677, 0x2f68, 0x0232, 0xd4b4, 0xacd4, 0x8fbf, \n   0x813c, 0x832e, 0x9553, 0xb551, 0xdf00, 0x0cf7, 0x3940, 0x5e1b, \n   0x76bf, 0x7ff9, 0x7897, 0x618e, 0x3ddb, 0x1221, 0xe40e, 0xb99a, \n   0x984a, 0x846f, 0x809f, 0x8d57, 0xa8f1, 0xcfd7, 0xfcfe, 0x2a88, \n   0x528e, 0x6fdd, 0x7ea6, 0x7cff, 0x6b1f, 0x4b58, 0x21c9, 0xf3d8, \n   0xc77a, 0xa273, 0x8990, 0x800c, 0x8724, 0x9dec, 0xc16f, 0xed11, \n   0x1b27, 0x45b8, 0x673c, 0x7b5a, 0x7f75, 0x7305, 0x57a7, 0x30e9, \n   0x03d1, 0xd63c, 0xae11, 0x9089, 0x8179, 0x82d4, 0x9470, 0xb401, \n   0xdd6f, 0x0b59, 0x37cb, 0x5cff, 0x7621, 0x7fee, 0x7920, 0x6299, \n   0x3f46, 0x13bc, 0xe5a4, 0xbaf7, 0x993f, 0x84de, 0x8079, 0x8ca0, \n   0xa7c2, 0xce58, 0xfb5f, 0x2900, 0x514f, 0x6f10, 0x7e67, 0x7d56, \n   0x6c00, 0x4ca6, 0x2359, 0xf576, 0xc8f0, 0xa390, 0x8a30, 0x801a, \n   0x869e, 0x9ce3, 0xc006, 0xeb77, 0x1991, 0x445a, 0x6644, 0x7ae8, \n   0x7f99, 0x73b9, 0x58d4, 0x3268, 0x0570, 0xd7c5, 0xaf52, 0x9157, \n   0x81ba, 0x8280, 0x9391, 0xb2b4, 0xdbe0, 0x09bb, 0x3654, 0x5be0, \n   0x757f, 0x7fdd, 0x79a3, 0x63a0, 0x40ae, 0x1556, 0xe73b, 0xbc56, \n   0x9a39, 0x8552, 0x8058, 0x8bef, 0xa697, 0xccda, 0xf9c0, 0x2775, \n   0x500c, 0x6e40, 0x7e23, 0x7da8, 0x6cdd, 0x4df1, 0x24e7, 0xf714, \n   0xca68, 0xa4b1, 0x8ad4, 0x802d, 0x861d, 0x9bdf, 0xbea0, 0xe9dd, \n   0x17f9, 0x42f9, 0x6548, 0x7a72, 0x7fb7, 0x7468, 0x59fd, 0x33e4, \n   0x070f, 0xd950, 0xb096, 0x922a, 0x8200, 0x8231, 0x92b6, 0xb16b, \n   0xda52, 0x081d, 0x34db, 0x5abd, 0x74d7, 0x7fc8, 0x7a22, 0x64a2, \n   0x4213, 0x16ef, 0xe8d3, 0xbdb8, 0x9b37, 0x85cb, 0x803c, 0x8b42, \n   0xa56f, 0xcb5e, 0xf821, 0x25e9, 0x4ec7, 0x6d6a, 0x7dda, 0x7df4, \n   0x6db5, 0x4f39, 0x2674, 0xf8b2, 0xcbe3, 0xa5d6, 0x8b7e, 0x8045, \n   0x85a0, 0x9ade, 0xbd3c, 0xe844, 0x1660, 0x4196, 0x6448, 0x79f6, \n   0x7fd0, 0x7512, 0x5b23, 0x355f, 0x08ae, 0xdadd, 0xb1dd, 0x9302, \n   0x824c, 0x81e7, 0x91e0, 0xb024, 0xd8c6, 0x067e, 0x3360, 0x5996, \n   0x742b, 0x7fad, 0x7a9c, 0x65a1, 0x4375, 0x1888, 0xea6c, 0xbf1d, \n   0x9c39, 0x8649, 0x8026, 0x8a9a, 0xa44c, 0xc9e4, 0xf683, 0x245c, \n   0x4d7e, 0x6c90, 0x7d8c, 0x7e3c, 0x6e89, 0x507e, 0x2800, 0xfa51, \n   0xcd5f, 0xa6ff, 0x8c2c, 0x8063, 0x8529, 0x99e1, 0xbbdb, 0xe6ad, \n   0x14c7, 0x4030, 0x6344, 0x7976, 0x7fe4, 0x75b8, 0x5c45, 0x36d8, \n   0x0a4c, 0xdc6c, 0xb328, 0x93de, 0x829d, 0x81a2, 0x910f, 0xaee1, \n   0xd73b, 0x04df, 0x31e2, 0x586b, 0x737b, 0x7f8d, 0x7b11, 0x669b, \n   0x44d5, 0x1a1f, 0xec06, 0xc084, 0x9d40, 0x86cc, 0x8014, 0x89f7, \n   0xa32c, 0xc86d, 0xf4e5, 0x22cd, 0x4c31, 0x6bb2, 0x7d38, 0x7e7e, \n   0x6f58, 0x51bf, 0x2989, 0xfbf0, 0xcede, 0xa82b, 0x8ce0, 0x8085, \n   0x84b7, 0x98e9, 0xba7c, 0xe516, 0x132d, 0x3ec7, 0x623c, 0x78f0, \n   0x7ff2, 0x7659, 0x5d63, 0x384e, 0x0bea, 0xddfb, 0xb476, 0x94bf, \n   0x82f3, 0x8163, 0x9042, 0xada2, 0xd5b2, 0x0340, 0x3062, 0x573d, \n   0x72c5, 0x7f67, 0x7b80, 0x6792, 0x4632, 0x1bb5, 0xeda1, 0xc1ee, \n   0x9e4a, 0x8754, 0x8009, 0x8959, 0xa210, 0xc6f8, 0xf347, 0x213c, \n   0x4ae2, 0x6acf, 0x7ce0, 0x7ebb, 0x7023, 0x52fd, 0x2b11, 0xfd90, \n   0xd05e, 0xa95b, 0x8d98, 0x80ad, 0x844a, 0x97f5, 0xb921, 0xe380, \n   0x1191, 0x3d5c, 0x612f, 0x7866, 0x7ffb, 0x76f4, 0x5e7d, 0x39c2, \n   0x0d87, 0xdf8c, 0xb5c7, 0x95a4, 0x834e, 0x8129, 0x8f79, 0xac65, \n   0xd42b, 0x01a1, 0x2ee1, 0x560b, 0x720b, 0x7f3d, 0x7beb, 0x6884, \n   0x478c, 0x1d4a, 0xef3c, 0xc35b, 0x9f58, 0x87e1, 0x8002, 0x88bf, \n   0xa0f7, 0xc585, 0xf1aa, 0x1faa, 0x4990, 0x69e8, 0x7c82, 0x7ef3, \n   0x70e9, 0x5438, 0x2c98, 0xff2f, 0xd1e1, 0xaa8f, 0x8e54, 0x80db, \n   0x83e2, 0x9705, 0xb7c9, 0xe1ec, 0x0ff6, 0x3bee, 0x601f, 0x77d6, \n   0x7fff, 0x778b, 0x5f93, 0x3b33, 0x0f24, 0xe11f, 0xb71b, 0x968d, \n   0x83af, 0x80f3, 0x8eb6, 0xab2c, 0xd2a6, 0x0001, 0x2d5d, 0x54d6, \n   0x714c, 0x7f0d, 0x7c50, 0x6971, 0x48e3, 0x1ede, 0xf0d9, 0xc4ca, \n   0xa06b, 0x8873, 0x8001, 0x882b, 0x9fe3, 0xc415, 0xf00e, 0x1e17, \n   0x483a, 0x68fd, 0x7c1f, 0x7f25, 0x71aa, 0x556f, 0x2e1c, 0x00ce, \n   0xd365, 0xabc6, 0x8f16, 0x810d, 0x837f, 0x9619, 0xb673, 0xe059, \n   0x0e59, 0x3a7e, 0x5f0b, 0x7742, 0x7ffe, 0x781d, 0x60a6, 0x3ca2, \n   0x10c0, 0xe2b3, 0xb872, 0x977a, 0x8414, 0x80c4, 0x8df7, 0xa9f7, \n   0xd122, 0xfe63, 0x2bd8, 0x539d, 0x7088, 0x7ed8, 0x7cb1, 0x6a5b, \n   0x4a36, 0x2070, 0xf275, 0xc63b, 0xa181, 0x890a, 0x8005, 0x879b, \n   0x9ed3, 0xc2a7, 0xee72, 0x1c83, 0x46e2, 0x680d, 0x7bb7, 0x7f52, \n   0x7267, 0x56a2, 0x2f9f, 0x026d, 0xd4ec, 0xad01, 0x8fdb, 0x8145, \n   0x8321, 0x9532, 0xb521, 0xdec7, 0x0cbc, 0x390b, 0x5df3, 0x76a8, \n   0x7ff7, 0x78aa, 0x61b4, 0x3e0f, 0x125c, 0xe448, 0xb9cc, 0x986c, \n   0x847f, 0x8099, 0x8d3c, 0xa8c5, 0xcfa1, 0xfcc3, 0x2a51, 0x5261, \n   0x6fc0, 0x7e9e, 0x7d0c, 0x6b40, 0x4b87, 0x2202, 0xf413, 0xc7af, \n   0xa29b, 0x89a6, 0x800e, 0x8711, 0x9dc6, 0xc13c, 0xecd7, 0x1aed, \n   0x4586, 0x6719, 0x7b4a, 0x7f7a, 0x731f, 0x57d2, 0x311f, 0x040c, \n   0xd674, 0xae3f, 0x90a6, 0x8182, 0x82c8, 0x9450, 0xb3d1, 0xdd36, \n   0x0b1e, 0x3796, 0x5cd7, 0x760a, 0x7fec, 0x7933, 0x62be, 0x3f79, \n   0x13f7, 0xe5de, 0xbb28, 0x9963, 0x84ee, 0x8074, 0x8c87, 0xa797, \n   0xce21, 0xfb24, 0x28c8, 0x5121, 0x6ef3, 0x7e5e, 0x7d62, 0x6c20, \n   0x4cd5, 0x2391, 0xf5b1, 0xc925, 0xa3b9, 0x8a47, 0x801c, 0x868b, \n   0x9cbe, 0xbfd3, 0xeb3c, 0x1957, 0x4428, 0x6621, 0x7ad8, 0x7f9d, \n   0x73d2, 0x58ff, 0x329e, 0x05ab, 0xd7fd, 0xaf80, 0x9175, 0x81c4, \n   0x8275, 0x9371, 0xb285, 0xdba7, 0x0980, 0x361f, 0x5bb7, 0x7567, \n   0x7fdb, 0x79b6, 0x63c5, 0x40e1, 0x1591, 0xe775, 0xbc88, 0x9a5d, \n   0x8563, 0x8053, 0x8bd6, 0xa66d, 0xcca3, 0xf985, 0x273d, 0x4fde, \n   0x6e22, 0x7e19, 0x7db3, 0x6cfc, 0x4e20, 0x2520, 0xf74f, 0xca9e, \n   0xa4db, 0x8aec, 0x8030, 0x860b, 0x9bba, 0xbe6d, 0xe9a3, 0x17bf, \n   0x42c7, 0x6524, 0x7a61, 0x7fbb, 0x7481, 0x5a27, 0x341b, 0x074a, \n   0xd989, 0xb0c4, 0x9249, 0x820b, 0x8226, 0x9297, 0xb13c, 0xda1a, \n   0x07e2, 0x34a5, 0x5a93, 0x74bf, 0x7fc4, 0x7a34, 0x64c7, 0x4245, \n   0x172a, 0xe90d, 0xbdeb, 0x9b5c, 0x85dd, 0x8038, 0x8b2a, 0xa546, \n   0xcb28, 0xf7e6, 0x25b1, 0x4e98, 0x6d4c, 0x7dcf, 0x7dff, 0x6dd4, \n   0x4f67, 0x26ac, 0xf8ed, 0xcc19, 0xa600, 0x8b97, 0x8049, 0x858f, \n   0x9aba, 0xbd09, 0xe80a, 0x1626, 0x4163, 0x6424, 0x79e4, 0x7fd3, \n   0x752a, 0x5b4c, 0x3595, 0x08e9, 0xdb16, 0xb20c, 0x9321, 0x8257, \n   0x81dd, 0x91c2, 0xaff6, 0xd88e, 0x0643, 0x3329, 0x596c, 0x7412, \n   0x7fa9, 0x7aad, 0x65c5, 0x43a7, 0x18c2, 0xeaa6, 0xbf50, 0x9c5e, \n   0x865c, 0x8023, 0x8a83, 0xa422, 0xc9af, 0xf648, 0x2423, 0x4d4f, \n   0x6c71, 0x7d80, 0x7e46, 0x6ea7, 0x50ac, 0x2838, 0xfa8c, 0xcd95, \n   0xa72a, 0x8c46, 0x8067, 0x8518, 0x99be, 0xbba9, 0xe673, 0x148d, \n   0x3ffd, 0x631f, 0x7963, 0x7fe6, 0x75cf, 0x5c6e, 0x370d, 0x0a87, \n   0xdca4, 0xb357, 0x93fe, 0x82a9, 0x8199, 0x90f1, 0xaeb4, 0xd703, \n   0x04a4, 0x31ab, 0x5840, 0x7361, 0x7f88, 0x7b21, 0x66bf, 0x4507, \n   0x1a59, 0xec41, 0xc0b7, 0x9d65, 0x86df, 0x8012, 0x89e0, 0xa303, \n   0xc838, 0xf4aa, 0x2294, 0x4c02, 0x6b92, 0x7d2c, 0x7e87, 0x6f75, \n   0x51ec, 0x29c1, 0xfc2c, 0xcf14, 0xa856, 0x8cfa, 0x808b, 0x84a7, \n   0x98c6, 0xba4b, 0xe4dc, 0x12f2, 0x3e94, 0x6216, 0x78dd, 0x7ff4, \n   0x766f, 0x5d8b, 0x3883, 0x0c25, 0xde34, 0xb4a6, 0x94df, 0x8300, \n   0x815a, 0x9025, 0xad74, 0xd57b, 0x0305, 0x302c, 0x5712, 0x72ab, \n   0x7f62, 0x7b90, 0x67b4, 0x4663, 0x1bef, 0xeddb, 0xc222, 0x9e70, \n   0x8768, 0x8007, 0x8943, 0xa1e8, 0xc6c3, 0xf30c, 0x2103, 0x4ab2, \n   0x6aaf, 0x7cd3, 0x7ec3, 0x703f, 0x532a, 0x2b49, 0xfdcb, 0xd095, \n   0xa987, 0x8db2, 0x80b3, 0x843b, 0x97d2, 0xb8f0, 0xe347, 0x1157, \n   0x3d28, 0x6109, 0x7852, 0x7ffc, 0x770a, 0x5ea5, 0x39f7, 0x0dc2, \n   0xdfc6, 0xb5f7, 0x95c4, 0x835c, 0x8121, 0x8f5d, 0xac39, 0xd3f4, \n   0x0165, 0x2eaa, 0x55df, 0x71f0, 0x7f36, 0x7bfa, 0x68a6, 0x47bd, \n   0x1d84, 0xef77, 0xc38f, 0x9f7f, 0x87f6, 0x8001, 0x88aa, 0xa0d0, \n   0xc551, 0xf16f, 0x1f71, 0x495f, 0x69c7, 0x7c74, 0x7efa, 0x7105, \n   0x5464, 0x2ccf, 0xff6a, 0xd218, 0xaabb, 0x8e6f, 0x80e1, 0x83d3, \n   0x96e3, 0xb798, 0xe1b2, 0x0fbb, 0x3bba, 0x5ff8, 0x77c1, 0x7fff, \n   0x77a0, 0x5fbb, 0x3b68, 0x0f5f, 0xe158, 0xb74b, 0x96ae, 0x83bd, \n   0x80ec, 0x8e9a, 0xab00, 0xd26f, 0xffc7, 0x2d26, 0x54aa, 0x7130, \n   0x7f06, 0x7c5e, 0x6993, 0x4913, 0x1f17, 0xf113, 0xc4fe, 0xa092, \n   0x8889, 0x8001, 0x8816, 0x9fbc, 0xc3e1, 0xefd3, 0x1dde, 0x4809, \n   0x68db, 0x7c11, 0x7f2c, 0x71c5, 0x559b, 0x2e53, 0x0109, 0xd39d, \n   0xabf3, 0x8f31, 0x8115, 0x8371, 0x95f8, 0xb643, 0xe01f, 0x0e1e, \n   0x3a49, 0x5ee3, 0x772c, 0x7ffd, 0x7832, 0x60cc, 0x3cd6, 0x10fb, \n   0xe2ec, 0xb8a3, 0x979d, 0x8423, 0x80bd, 0x8ddc, 0xa9cb, 0xd0eb, \n   0xfe28, 0x2ba0, 0x5370, 0x706c, 0x7ed0, 0x7cbe, 0x6a7b, 0x4a67, \n   0x20aa, 0xf2b0, 0xc670, 0xa1a9, 0x8920, 0x8006, 0x8787, 0x9eac, \n   0xc273, 0xee37, 0x1c49, 0x46b0, 0x67eb, 0x7ba8, 0x7f58, 0x7281, \n   0x56ce, 0x2fd6, 0x02a8, 0xd523, 0xad2e, 0x8ff8, 0x814d, 0x8314, \n   0x9512, 0xb4f1, 0xde8e, 0x0c81, 0x38d6, 0x5dca, 0x7692, 0x7ff6, \n   0x78be, 0x61da, 0x3e43, 0x1296, 0xe481, 0xb9fd, 0x988f, 0x848e, \n   0x8093, 0x8d22, 0xa89a, 0xcf6a, 0xfc88, 0x2a19, 0x5234, 0x6fa3, \n   0x7e95, 0x7d19, 0x6b60, 0x4bb7, 0x223b, 0xf44e, 0xc7e4, 0xa2c3, \n   0x89bd, 0x8010, 0x86fe, 0x9da0, 0xc108, 0xec9c, 0x1ab4, 0x4555\n};\n   \nfloat32_t transform_fft_f32_inputs[TRANSFORM_MAX_FFT_LEN * 2] =\n{\n    43.0264275639,\t-17.0525215570,\t-94.8488973910,\t-8.1924989580,\t7.2830326091,\t66.8368719314,\t33.9778190671,\t117.8652289772,\t\n    -129.6077797465,\t-14.6420815368,\t18.0239223278,\t20.6760530292,\t55.0375037651,\t1.8674609862,\t-85.6534302408,\t-33.5750364909,\t\n    29.2110949614,\t110.4727049460,\t-94.1914619387,\t-1.4084169343,\t83.5181653041,\t47.3073514127,\t-13.3420621181,\t30.3389699104,\t\n    12.1188124277,\t100.9730921941,\t-114.0146362390,\t-77.5823200409,\t37.2019034618,\t40.0026301128,\t-58.3387276630,\t-34.9472398600,\t\n    -5.1169678311,\t-87.7660091118,\t-150.5888601131,\t56.0349370503,\t50.2168884079,\t-74.2313236767,\t22.3648603560,\t-6.8676387051,\t\n    74.8957303680,\t-90.1292012823,\t-55.1436241586,\t-66.6732976100,\t-6.7918147615,\t7.7612697081,\t35.7892605979,\t-20.0470508830,\t\n    41.8369017546,\t-143.7378056984,\t-41.9127158600,\t-108.3531841158,\t-57.1917422289,\t-124.2808828105,\t38.9316388820,\t-77.9212517405,\t\n    37.1990818377,\t-28.9545952748,\t-155.6371057564,\t45.8088886393,\t36.2537018275,\t-6.5727656016,\t-104.2070491921,\t45.5583813729,\t\n    -19.7674717059,\t-80.4802190947,\t-1.4444563441,\t-42.2142256438,\t36.6546339194,\t-57.0866498590,\t44.4677067511,\t65.7285753407,\t\n    -103.8158864647,\t25.4348723711,\t-153.5419639389,\t39.3608409474,\t49.1658103436,\t79.5570602275,\t75.2944095996,\t58.9394700746,\t\n    -53.1018534392,\t33.4172444014,\t35.6224682287,\t-64.4353396418,\t-125.8464291251,\t-47.6072111617,\t-26.2177687594,\t-12.0061322096,\t\n    -17.7887967585,\t-28.2926175090,\t-62.0691715749,\t40.5098573604,\t-191.1123732593,\t119.6750713043,\t19.6182375803,\t-26.7615252921,\t\n    2.2957847015,\t-108.3436451287,\t-50.5906164995,\t-5.6360985100,\t-11.6772204201,\t-84.2765293757,\t-60.9317810068,\t82.0446350218,\t\n    -70.2048296348,\t72.8738253222,\t60.2450218115,\t114.2741231228,\t46.8180775285,\t6.9915412654,\t-8.9909197429,\t-78.9165936808,\t\n    66.4731535459,\t-68.4235455651,\t-79.8254597080,\t-10.6308477115,\t-62.6161569330,\t-55.7744410292,\t-11.8408366528,\t98.1034940997,\t\n    35.8213741877,\t-54.4694482732,\t86.9631830044,\t-53.0343838122,\t-47.4898642865,\t-47.2010929590,\t-31.3312639685,\t-23.0908245172,\t\n    12.0258009869,\t-5.1098204703,\t-9.8420230737,\t-107.3328761158,\t44.6810431959,\t-17.9083820345,\t-60.9753512872,\t-7.5915088994,\t\n    17.2250813329,\t57.9176125648,\t124.3004161362,\t-63.1950908493,\t120.5788885640,\t-44.1734238117,\t-91.7408095116,\t-43.5696066595,\t\n    -49.9560710099,\t-167.8513443296,\t-70.9437505499,\t-46.4109705355,\t-64.2264526456,\t-13.9995803916,\t-100.9548186356,\t9.9101010575,\t\n    -50.0615130815,\t-55.7590145012,\t-60.3195153388,\t61.7913378549,\t-102.0850899209,\t53.2360193126,\t-25.8997883369,\t75.1445512333,\t\n    -113.8148602310,\t17.8027281119,\t-19.5006822722,\t-44.2169628471,\t107.5017084384,\t-113.7909124666,\t-43.9735396033,\t7.6880981388,\t\n    46.7384653508,\t9.9047443751,\t81.8646964362,\t132.3812863877,\t-95.6959050236,\t-68.5015813484,\t65.8586404494,\t18.5039353889,\t\n    -30.1786166621,\t-90.3098515667,\t-22.9356228552,\t-20.5778272423,\t-2.2127786675,\t-35.4418447703,\t-51.8722915974,\t-107.9024439078,\t\n    -51.5940748232,\t-51.7463262677,\t74.2795485984,\t94.2205022462,\t9.7016384049,\t-47.3556083155,\t-36.7822314478,\t-151.6455525363,\t\n    -15.7183814485,\t78.2063383182,\t0.1516414969,\t37.9304181609,\t20.6185902740,\t-22.2164106778,\t6.1160554677,\t2.4061326953,\t\n    -111.6681824598,\t-60.0858917090,\t75.1698614693,\t-76.5787410444,\t28.3391655715,\t-2.4946186443,\t-68.0378899682,\t104.0893199171,\t\n    -51.8319647254,\t38.8521710524,\t75.9114239564,\t73.9206172905,\t-103.2533029987,\t6.9002718274,\t-36.6346436319,\t-25.1990926265,\t\n    1.5852145953,\t-50.6438436795,\t21.5018844428,\t-151.9305562846,\t-51.7326681814,\t21.4475994143,\t42.2564011921,\t-74.0520586926,\t\n    49.7370635809,\t-13.2957534126,\t36.6746826778,\t-31.7005492589,\t148.4894964268,\t79.7890632353,\t16.8856024809,\t16.1690460177,\t\n    39.2665169484,\t117.2461167794,\t-37.4827984831,\t-47.8387803604,\t-95.7025286193,\t34.3058214285,\t-124.9536456028,\t56.1640195764,\t\n    94.3636873606,\t35.3992852810,\t-38.3920852159,\t-100.5738062016,\t-29.7837022314,\t42.9133913996,\t-34.2715618187,\t-14.3589115627,\t\n    -16.5935468750,\t20.4574192236,\t-88.7897972666,\t-38.6285080386,\t53.3203422726,\t98.5991486746,\t122.7305462474,\t67.7902817187,\t\n    5.1764117389,\t5.0632821624,\t21.9288789574,\t-78.3140512638,\t-21.2069682335,\t23.6342010925,\t34.4445769455,\t59.1346766615,\t\n    28.9978778000,\t39.8121180845,\t-17.1650033520,\t-56.9174900874,\t17.8157086148,\t-112.8801457350,\t-122.4019040408,\t140.8669393157,\t\n    -65.4664329639,\t40.6952775518,\t32.7260891658,\t-43.2565155866,\t19.3945751928,\t-20.1815002000,\t-67.6601711640,\t-18.1921178207,\t\n    -35.6802153684,\t49.9550290306,\t131.4925251016,\t-31.2940938167,\t-5.2848453344,\t-109.5580577933,\t20.2437599390,\t-8.8782958734,\t\n    54.1836717264,\t7.2555852190,\t-3.5698316137,\t-51.9236786262,\t6.7861547980,\t-104.4814551670,\t45.8458629668,\t70.0890876844,\t\n    38.3572837740,\t61.8024165129,\t68.0176962024,\t-12.8193934080,\t-21.4661610917,\t-0.9377108815,\t-74.2100679061,\t71.0490808147,\t\n    91.9813889497,\t-14.5797640164,\t3.5036749129,\t-138.3605478356,\t-48.1501349794,\t-16.0636922482,\t-12.1334197606,\t15.0562207637,\t\n    -34.0878176054,\t55.1075126157,\t97.3829871877,\t0.2053358099,\t-94.8713267382,\t51.5460954054,\t21.2966946363,\t58.1331025047,\t\n    -23.4599044132,\t-19.3315856528,\t-8.4497193577,\t-1.9594679356,\t-33.1906549336,\t-144.6825417978,\t-57.1218958072,\t35.7353406097,\t\n    61.4666549819,\t14.6536253128,\t82.1632196866,\t-44.6230161723,\t-91.1022589278,\t-18.5737673927,\t-136.8975612334,\t56.9606788003,\t\n    70.7059960183,\t-68.2829345081,\t-10.2629800455,\t-53.6385325047,\t-68.7928766204,\t88.2444688302,\t83.1412324801,\t-102.9206928160,\t\n    -68.2329763159,\t-69.7552955469,\t108.2132269009,\t-28.2582329307,\t5.6685898328,\t-36.0392956840,\t43.3269513128,\t-8.6436416796,\t\n    -16.5054886972,\t11.5008791788,\t39.6923606683,\t-28.9039554061,\t13.5938214364,\t-23.6296332202,\t49.1171161163,\t53.1636857935,\t\n    -62.9672053166,\t-54.2594757384,\t48.3838956696,\t8.0469071555,\t-33.6472086213,\t-120.5381752144,\t55.0880453111,\t17.8990740563,\t\n    144.9402232336,\t101.7886229203,\t-73.3666393712,\t-16.4721379138,\t-12.7447935685,\t101.8245160983,\t-49.7026860415,\t-15.1227790364,\t\n    65.7430288442,\t-131.8695390036,\t10.2750933946,\t90.9752774838,\t-26.5859990591,\t-95.6962772568,\t76.2174589344,\t24.8796848060,\t\n    -38.8938223046,\t54.1687774852,\t-37.3585968996,\t-34.6848570502,\t33.0151011570,\t-55.8345877671,\t-3.9009101671,\t-31.5024971691,\t\n    -9.6863895491,\t91.8719195957,\t-58.9993249744,\t-25.6887030614,\t-8.0829472205,\t4.6386491741,\t-71.4019697167,\t-21.3734669095,\t\n    86.2079144404,\t79.6823974266,\t-0.0910915997,\t44.8067718095,\t58.7204020766,\t72.6856808976,\t-50.3373732478,\t-116.1175365534,\t\n    -15.0884909384,\t5.4593772059,\t-63.6553527905,\t37.3460388205,\t-32.2399421679,\t95.7569350513,\t-7.3700141964,\t-56.0370832967,\t\n    -41.7377150439,\t-42.0042856519,\t12.5134312941,\t93.7845584531,\t-32.4801087157,\t-33.3976050318,\t-24.2252126001,\t-46.3199064467,\t\n    -20.3704610276,\t15.8571376404,\t88.9127217235,\t-33.1132582267,\t-1.0005675836,\t-28.1780471904,\t150.9349379135,\t38.0600520828,\t\n    36.4338677563,\t-3.3709201641,\t29.7709773016,\t16.5064119077,\t21.3147729463,\t110.6714300904,\t18.8406036507,\t14.8963298097,\t\n    50.9975960392,\t16.3991140350,\t-194.0805845907,\t-41.6723945839,\t-74.8991127408,\t-6.4587655805,\t-0.6883628218,\t-49.8709647175,\t\n    194.2265120473,\t64.3043624521,\t16.0040882780,\t68.4032551772,\t-43.4050313128,\t84.6826289824,\t-28.1357565943,\t134.6895584120,\t\n    -7.9746152680,\t-95.6692886462,\t-48.9444370342,\t79.4479343188,\t-50.5345228122,\t52.4800633307,\t-14.7735051703,\t-20.1510237050,\t\n    22.5049816980,\t64.4191999102,\t24.8385648232,\t99.4265041360,\t62.0189508473,\t-28.3892600378,\t-109.8842008564,\t-79.0407483407,\t\n    18.3408112020,\t49.1650536089,\t31.5419844924,\t-36.1160722679,\t-132.9148081329,\t10.4053531567,\t-129.2463715470,\t-43.4602207151,\t\n    -24.2420653292,\t91.5388317556,\t21.4762248190,\t-44.3810909139,\t18.4098011282,\t-45.8691164539,\t-20.9831197962,\t16.2076792914,\t\n    66.0224147666,\t-13.6794615513,\t101.2163279622,\t-62.4462618603,\t22.2040981785,\t-52.3208382802,\t-24.7909079016,\t58.5150375093,\t\n    18.8569705105,\t-55.6083430939,\t131.0273367422,\t-34.5209015065,\t121.4357296573,\t-77.2590299593,\t-51.5929566898,\t5.0247131098,\t\n    -23.8451707592,\t-4.5912313547,\t31.1387246821,\t61.7019310824,\t49.1912429744,\t-50.5836913031,\t-74.8182600630,\t-21.6209317022,\t\n    20.9409464654,\t-72.7870824583,\t-28.3530746820,\t-45.0794425434,\t-13.4910629905,\t-62.0158772255,\t-34.1421181246,\t44.2844972784,\t\n    8.4213193211,\t79.9349022793,\t60.0160502260,\t32.2272994080,\t-72.2893887746,\t17.3063698247,\t-134.6335742431,\t64.6499736261,\t\n    7.1411921919,\t-37.5517577873,\t6.2405670930,\t117.1920927305,\t128.7420689815,\t-3.1556854963,\t-13.4100422909,\t-11.9336372907,\t\n    -8.6022400553,\t-102.0033506666,\t-78.4696575074,\t15.0765861403,\t-111.5219718576,\t-13.4162786508,\t38.2437013694,\t61.1637732561,\t\n    -34.4804160003,\t107.4438003830,\t-79.4193067813,\t-81.1842853968,\t-26.2622970331,\t132.3205425408,\t-119.1464268477,\t67.3048866598,\t\n    103.3266736715,\t-58.1865815617,\t27.6231908601,\t-11.2004371750,\t26.0340617206,\t12.5696123916,\t0.6442714420,\t-30.7393043544,\t\n    1.5314955897,\t49.9110088250,\t-106.1358721920,\t51.1608329944,\t-32.8684239794,\t-27.7215905745,\t-11.6450303367,\t-36.7731678028,\t\n    59.9383486599,\t-4.6301990580,\t5.0361682939,\t-10.5669407980,\t124.0908762205,\t35.8305364082,\t-123.6216777114,\t-74.2569079167,\t\n    -56.7651776816,\t16.0736385582,\t23.5030632215,\t-110.6764295938,\t44.3086821806,\t9.4452708243,\t5.3300080251,\t39.0483916714,\t\n    151.4550562868,\t62.8957092621,\t-116.8103461233,\t5.1129927759,\t-33.2252515135,\t-9.4522506046,\t22.7026048372,\t-15.5264414569,\t\n    71.2087620034,\t19.1191568332,\t50.3019546809,\t-5.6096922409,\t22.9344126462,\t-7.7591876203,\t31.8949515564,\t-58.4253952381,\t\n    66.4341297173,\t-19.0583083044,\t96.7695087855,\t20.4934280047,\t4.9544603116,\t-20.8288135920,\t-173.2659655408,\t-62.4883621640,\t\n    -48.5528422703,\t12.1437504278,\t60.2482234666,\t-19.6072312919,\t-34.6320214291,\t129.0089698963,\t-50.9042160618,\t98.3952661477,\t\n    -4.7051792479,\t-13.1768910826,\t69.5138802139,\t58.5748201565,\t-45.9385652563,\t151.7952104306,\t34.2541941013,\t-58.0417838381,\t\n    28.1480473670,\t46.4006562684,\t97.7001828545,\t4.0855607626,\t-32.6097018162,\t16.8913949959,\t105.7266202978,\t-89.3978374651,\t\n    -60.9338593128,\t-41.2220734230,\t49.9393070783,\t95.0974764854,\t49.2498366456,\t58.6214364590,\t34.1113830569,\t45.6634098874,\t\n    -22.5356086770,\t-97.1978653617,\t86.5565049535,\t70.6118545777,\t-30.6978082909,\t118.7238621666,\t14.5922386932,\t11.3449652072,\t\n    65.6007783405,\t82.6369678204,\t-52.0390492248,\t-47.0160551227,\t-95.5142448634,\t99.7162626888,\t-36.5523815090,\t-42.8042935534,\t\n    68.3566199798,\t-13.8451547552,\t-71.1629911780,\t36.2989433752,\t-32.4867163365,\t112.4079947071,\t-75.6295117422,\t47.5276421639,\t\n    51.8078250755,\t-26.8715188457,\t-9.6291144797,\t40.1999849640,\t-38.4634033246,\t40.9764960915,\t-26.1715730268,\t36.5996396515,\t\n    -26.9924731886,\t53.7879986570,\t-83.1658398348,\t23.6381378489,\t43.8794937753,\t-55.4133836419,\t90.0266130838,\t14.1036181982,\t\n    -18.1225736715,\t85.1363181151,\t-62.5970846379,\t-18.5291947838,\t-25.7341986703,\t-49.7061342931,\t-59.0442763971,\t50.8960636803,\t\n    -87.6471123430,\t-36.7217762531,\t22.5952364054,\t11.1107885650,\t-0.5377327229,\t160.8145792630,\t73.3103441505,\t10.1656872354,\t\n    -50.4554350397,\t-57.3478171016,\t-15.4201715357,\t-26.9135446491,\t-4.9891264771,\t-37.0226770057,\t-80.9919535641,\t50.4418660876,\t\n    -25.8517575250,\t-69.9538258421,\t-17.5730160671,\t15.9405836751,\t113.9545230349,\t-46.1040379057,\t-94.2458635014,\t-69.0338522452,\t\n    43.5813790265,\t107.1836101171,\t-55.1012654323,\t-77.1529555887,\t-33.1530320656,\t-94.5582659641,\t-53.6837586872,\t27.0680381378,\t\n    93.9385415207,\t-61.0955216188,\t18.0530957225,\t7.9150142320,\t-12.1218191587,\t34.0173961457,\t40.0084937565,\t9.8119275580,\t\n    44.2065861274,\t-1.8718514394,\t67.4740024215,\t46.7391150131,\t207.2404815875,\t45.1635364462,\t43.3580102761,\t-44.0244218674,\t\n    83.2387206007,\t-8.6441851856,\t12.3993902588,\t-22.5091685270,\t-19.8332981376,\t97.9196509289,\t-76.6720306234,\t28.9740705859,\t\n    121.9415248016,\t9.6656982611,\t-51.0996453694,\t37.3704374740,\t74.7589840907,\t-113.4066752631,\t120.0029566342,\t-105.3786221360,\t\n    81.8152755619,\t-13.4979932982,\t-21.4680758393,\t-85.1088235539,\t-65.3610798409,\t-35.0444139470,\t-48.0220794487,\t-41.6210317362,\t\n    33.1212995259,\t-82.1480936443,\t-10.5479715135,\t76.4601917004,\t42.1983651157,\t92.6104239912,\t-42.3536237955,\t-24.5644182272,\t\n    30.4446637772,\t-90.2899420489,\t63.6723540422,\t103.0895811428,\t64.1706769263,\t-10.7069812309,\t21.8927240409,\t6.3571071738,\t\n    57.1457649358,\t-52.9866276448,\t66.0981829072,\t-29.5372056881,\t-79.2252039810,\t-136.2440652798,\t-57.0106422562,\t86.8203548141,\t\n    66.4244149837,\t53.3230426111,\t-66.1283059222,\t-131.0402660353,\t8.0548411081,\t122.9088988100,\t1.2626894208,\t-60.5059112373,\t\n    -68.8707203082,\t-6.4747987200,\t85.8411327244,\t99.9624156733,\t90.4197864338,\t-35.9630441182,\t-22.9158275507,\t-17.3660128776,\t\n    16.7845345761,\t34.7219749782,\t-39.3513765878,\t1.0460702756,\t-60.9494500182,\t20.0900333387,\t-85.9636743832,\t88.4400782168,\t\n    15.0729628728,\t61.5499846243,\t11.8579871757,\t107.8617581581,\t-42.9393027864,\t-62.8422307621,\t-19.0589600542,\t4.0750325807,\t\n    -36.0651825425,\t55.7638724501,\t-10.4691736080,\t-55.5672537178,\t-61.2061519915,\t-21.1885348576,\t-131.2535612498,\t24.7463552676,\t\n    22.9426321237,\t14.3038202264,\t-138.0926317438,\t-59.0892900856,\t-162.5416439986,\t7.1307658250,\t-141.1236672256,\t-4.7173618068,\t\n    -16.7741532807,\t-68.2615451173,\t-2.6608701102,\t84.1978109826,\t-11.3446202072,\t59.9630033088,\t-1.8994925010,\t-37.9301641959,\t\n    -119.4435600954,\t-11.4587491646,\t12.2423215240,\t-7.3169898616,\t-67.0373621128,\t36.0198843055,\t53.9791315249,\t-134.5885680695,\t\n    -83.8330811965,\t-16.6714816463,\t-8.8498552035,\t-24.0513088196,\t-22.9444328877,\t-37.7961441531,\t25.1975736186,\t-136.1611637464,\t\n    -5.0843464033,\t-10.3939554694,\t20.7422826935,\t75.6854136623,\t46.4179626736,\t-57.0052830175,\t7.3457235521,\t-51.5504447254,\t\n    -158.4375751701,\t-200.2426967181,\t-48.1234996261,\t1.6623945527,\t21.1746524375,\t99.4092980367,\t-2.3206772903,\t45.7989166757,\t\n    2.0181548348,\t-88.0556010969,\t-59.1527212096,\t47.3607925077,\t-10.4181140309,\t56.3558125650,\t-8.9799125560,\t-30.0376711812,\t\n    -36.7132904688,\t35.7785050392,\t-13.0763909369,\t-2.1855594714,\t18.1550954005,\t-28.6711803575,\t-55.4495172398,\t-2.8812973198,\t\n    -59.9575059158,\t40.0588875786,\t57.4713686602,\t-3.2835144853,\t-36.7193552111,\t-64.9415131516,\t-166.9555466445,\t-23.5556853844,\t\n    -54.9408569587,\t-35.2310451959,\t21.3345143458,\t65.7590671151,\t51.2214538168,\t46.1271939944,\t-42.2235267919,\t127.2329928299,\t\n    105.2391778600,\t17.6726845966,\t-129.9021148044,\t8.7065613044,\t-94.0987112511,\t-3.5375742950,\t-23.1385452379,\t60.6219530633,\t\n    92.5445564235,\t48.5111974469,\t-52.5699309159,\t-60.0634811685,\t25.9034368684,\t140.0249495491,\t1.5918852392,\t38.0266038291,\t\n    17.5588710703,\t3.4294066089,\t-27.6748782173,\t59.6182974489,\t-35.2924781853,\t-38.6198576115,\t-13.6119803198,\t7.8375587489,\t\n    22.7250686519,\t-28.3524510951,\t-34.4269062817,\t22.6464817325,\t-61.6528147860,\t-5.9782002429,\t61.4730771294,\t43.5582379527,\t\n    55.6862408270,\t87.8745651631,\t46.3401042715,\t-19.8780979663,\t74.1272633369,\t29.8590452377,\t-12.8665765140,\t34.2931401219,\t\n    53.9279617551,\t-16.9017895140,\t-70.1527553166,\t-79.6367897992,\t109.3728271017,\t-129.2214826835,\t-53.4644539730,\t-51.5654458993,\t\n    17.6062148433,\t3.5090251835,\t74.2615941204,\t-109.3431097845,\t40.1403465151,\t28.8714561280,\t94.0868659302,\t-19.0047033845,\t\n    -60.0967410050,\t-19.0998457619,\t-67.2027075128,\t72.0711434846,\t-17.8737851232,\t123.7050551274,\t132.6331504104,\t25.5018761009,\t\n    -36.7817189239,\t-29.1580893235,\t-6.5848563828,\t90.2868948516,\t-35.7017258498,\t-68.5675432955,\t-52.4888589786,\t47.1377730021,\t\n    -7.4546621940,\t-52.0657517138,\t-49.0404829633,\t-114.6910280126,\t-117.6819819437,\t-32.7856729408,\t31.8232065591,\t12.1192973039,\t\n    35.2678513420,\t-1.0336778293,\t30.7021249679,\t127.0442906046,\t-84.8457819393,\t28.9862843096,\t-47.3524701726,\t-126.1094998460,\t\n    -2.9700276582,\t-2.4956545870,\t-53.8624121141,\t-85.2114117637,\t76.9057985618,\t137.1205201755,\t-19.0830817212,\t14.3407526579,\t\n    -56.5921994449,\t-25.6084873186,\t-44.9470801106,\t-133.3139496090,\t0.3487447576,\t33.4499716730,\t34.7126257844,\t-9.3307383323,\t\n    27.2996276947,\t10.8765676134,\t-91.1032360444,\t-90.9584216222,\t1.6981490570,\t96.8557438791,\t56.7726390913,\t-44.3246449237,\t\n    52.3260643361,\t21.5551140465,\t27.4535327381,\t2.0072717479,\t7.4823125629,\t77.1185863870,\t16.1372262663,\t-10.7206012957,\t\n    66.8830091413,\t49.3523828287,\t54.0855375598,\t30.8570349345,\t-10.9255375390,\t62.3910624674,\t30.9238561381,\t0.3352881853,\t\n    72.1022806197,\t-28.8319885008,\t23.3335288806,\t46.8999035980,\t-67.0984424822,\t-164.7917209112,\t42.5767681360,\t-92.4668227688,\t\n    43.8491734282,\t-17.1126540408,\t37.4819594334,\t69.0774409673,\t-39.3530526854,\t-14.0693747124,\t-60.2520781215,\t-80.3860105519,\t\n    32.6689956840,\t15.3393042576,\t-18.5529761307,\t97.3942151573,\t-4.4462855745,\t13.7614349817,\t158.3358780719,\t-44.7258299667,\t\n    -17.7741912819,\t116.5136962268,\t-33.6261057820,\t22.8344441288,\t-155.1423976144,\t5.7070117893,\t-22.7906543902,\t-45.0633909283,\t\n    -13.9329987929,\t-66.0848932507,\t1.1383038109,\t123.8386958483,\t67.6662401589,\t45.9152963554,\t-27.4397697462,\t97.9596747354,\t\n    -6.3544655181,\t29.0832146722,\t96.3468162499,\t32.4535976137,\t-91.0650399301,\t2.7293262791,\t70.7853483111,\t-92.3655274571,\t\n    69.0359217256,\t83.1530567979,\t35.8375091111,\t7.3393552348,\t-95.1770165365,\t76.4905790891,\t55.6253140577,\t-29.5315327050,\t\n    -19.6571455162,\t-65.5631159968,\t-16.1022064890,\t105.8715375468,\t-51.8381429466,\t120.1887801783,\t-12.7792505862,\t45.9625293061,\t\n    5.2249771246,\t-44.2522411781,\t-49.9151046218,\t58.9294840166,\t-39.5237729290,\t7.7590557538,\t-36.9036719322,\t-13.3726971638,\t\n    54.3809777660,\t71.3070336679,\t-51.0631236639,\t-10.0694214486,\t15.9743446435,\t-49.4179644909,\t118.7626471706,\t-53.3128484840,\t\n    13.5615377463,\t-109.8892656203,\t-42.4445411536,\t-66.3623671033,\t-14.8179688320,\t76.6614429072,\t11.1173310385,\t-44.0756061917,\t\n    -31.6081137549,\t-112.6622817309,\t32.5091400724,\t33.0802101919,\t-57.4339078738,\t56.3466203876,\t-17.0577340891,\t-95.3692048341,\t\n    -67.3434566840,\t13.8207460717,\t48.9375767823,\t7.9881518802,\t-33.7163627475,\t38.5685408163,\t12.1465400224,\t-107.6320581108,\t\n    4.0618423016,\t-78.4521092994,\t-86.1605081811,\t76.0528521785,\t-7.4505556232,\t-32.6671595550,\t28.1668313458,\t-44.3982773094,\t\n    -17.6420279051,\t-31.0505367972,\t21.8444018590,\t29.2596019459,\t-15.0890859227,\t-13.1393295693,\t2.8101074170,\t-17.7888538827,\t\n    32.0378687652,\t-74.5375953900,\t135.2497294704,\t-28.0677270675,\t73.5721900551,\t-66.6873287357,\t-25.1872324027,\t66.2043845748,\t\n    -94.9847220021,\t51.0053667797,\t125.6199200698,\t-97.2966230203,\t-100.0987757765,\t38.7851883798,\t20.5509402780,\t91.2789361356,\t\n    -23.6347319001,\t53.4814037964,\t-27.8226699628,\t-4.2998301656,\t-49.0060086613,\t57.7107938724,\t73.8228091191,\t39.2104809606,\t\n    -27.3049570759,\t78.3558930717,\t-39.1465109393,\t-59.6714099634,\t-71.7254332281,\t44.0304489875,\t62.4610534699,\t-47.5531388302,\t\n    62.3692165629,\t6.4426089142,\t9.0422858718,\t23.1735394482,\t-47.2878667545,\t44.2020612249,\t109.3032846597,\t11.6805260558,\t\n    -30.4758154602,\t-82.4704834090,\t38.6561095453,\t-55.4482370852,\t8.5232602822,\t133.2611664825,\t100.1432731096,\t22.9595423699,\t\n    -100.1659221126,\t38.8223174175,\t27.7691674207,\t126.7418939874,\t-91.4494781699,\t141.2081002115,\t39.0632821221,\t63.2623914663,\t\n    -30.0221078403,\t-33.5477169622,\t29.1082028625,\t-3.3848571660,\t61.5724672364,\t-34.9602677014,\t110.9349405045,\t102.6143795477,\t\n    -57.9940910047,\t-35.2709261901,\t16.7143230992,\t-40.5324218543,\t53.9355486697,\t-64.2634715959,\t-54.9387762268,\t-42.9168088882,\t\n    -57.5562950128,\t37.9068250889,\t-12.1446003699,\t-60.1702164080,\t-20.6508515440,\t-98.5324628329,\t101.4072369572,\t129.5400369054,\t\n    -81.3566359702,\t50.6071670655,\t-120.4768679404,\t-42.4978466545,\t-8.7364843153,\t49.6150365421,\t122.5389217747,\t-17.0756316445,\t\n    -62.3577228096,\t-45.0934187476,\t-32.0622747717,\t-30.5522096168,\t28.4509994932,\t-38.2485520772,\t-50.1501458954,\t33.6999850082,\t\n    -53.8053116265,\t5.7733509059,\t-34.6589594313,\t126.1617129527,\t20.7567771895,\t172.0372861812,\t89.0892733767,\t100.7503861649,\t\n    7.3378103261,\t98.5906415363,\t32.0129761463,\t-41.8886119031,\t41.2269067119,\t68.3876187817,\t138.4871996142,\t11.3975797943,\t\n    77.7316432733,\t-158.5764699010,\t-73.0154932162,\t4.7811847147,\t-23.2377092445,\t-15.8949240362,\t-11.9056513173,\t-152.0900719578,\t\n    18.2632385344,\t-54.1998869586,\t-181.7000796389,\t48.1068217262,\t-32.5550981417,\t-28.0507229974,\t-31.8419308387,\t-25.6072993087,\t\n    19.9544408703,\t9.3745877673,\t-83.7112773954,\t69.9469812476,\t103.7806121094,\t7.5661034347,\t19.3961679774,\t-33.6734450687,\t\n    145.2662801261,\t84.6823084936,\t3.8883005529,\t16.9248666945,\t-16.9581909221,\t-89.4228081883,\t16.2888634344,\t11.1954888184,\t\n    2.5472628157,\t18.3389344143,\t-151.4283735338,\t-34.4147990116,\t-25.9480238152,\t-25.5347276158,\t-64.8106533195,\t50.6575131879,\t\n    -7.3028646826,\t-32.2126924117,\t18.1267061221,\t-16.2075818210,\t-45.6339941841,\t-33.6697120217,\t49.2624187554,\t77.8687058107,\t\n    73.6069588809,\t-40.8028084671,\t18.9768190808,\t-30.7579639537,\t42.1813346527,\t-83.5367163130,\t-107.9332971302,\t7.6029737222,\t\n    26.9032374575,\t49.3843590700,\t-46.3813865337,\t9.1625140590,\t-66.2444573706,\t-81.6335790942,\t38.1352819102,\t-26.9099106066,\t\n    -73.7453409821,\t120.4931605467,\t10.3564307049,\t-106.6178964489,\t95.7043175624,\t33.5246942332,\t47.6828732088,\t88.3229069791,\t\n    -15.5217019654,\t-19.5431169450,\t-3.8342503054,\t57.2251891575,\t-48.5444916144,\t71.5434047188,\t12.4489765266,\t-11.7576981068,\t\n    -55.3127919285,\t17.8351394582,\t-103.4011502717,\t-4.0445991564,\t15.2952711643,\t136.5345440142,\t-63.7492382166,\t36.9305043452,\t\n    -1.5952862211,\t16.2532277000,\t-8.2697982122,\t59.2373828733,\t-114.7747262875,\t-10.3140845306,\t-30.5291082162,\t-109.5521180147,\t\n    0.0880047356,\t-26.2704646488,\t-5.8324862328,\t51.9555476050,\t179.0193630333,\t35.7565163112,\t-25.6830342083,\t-38.6240101524,\t\n    7.1156497155,\t-38.9184661158,\t-44.0206559654,\t-61.9671745846,\t49.0909411685,\t30.5438751442,\t61.5412933030,\t-24.2114612829,\t\n    5.7471838440,\t-18.0880708776,\t71.7203646740,\t86.4088528992,\t-58.7737324960,\t-57.5055785792,\t-95.3936802143,\t116.1138906258,\t\n    60.1792035622,\t56.3771096083,\t49.7396983038,\t38.3766351111,\t69.8500772704,\t-49.1498577356,\t70.3558567877,\t8.6780858427,\t\n    34.1723731409,\t15.4734742852,\t109.0630331552,\t-121.1548202826,\t-48.3994829024,\t30.5337026074,\t24.7828521521,\t42.0584760304,\t\n    75.1343090013,\t129.5812051166,\t48.4270407054,\t26.4055953415,\t14.0152471956,\t-95.9222273011,\t90.6485095604,\t-14.3202487407,\t\n    -67.2852187582,\t-166.6666517028,\t40.3833373200,\t-36.1005828038,\t95.8066175560,\t-35.7716615894,\t-49.1292761932,\t-129.7066955214,\t\n    103.7802140124,\t1.3540192035,\t-11.7154031368,\t-33.6798122030,\t38.8567068892,\t-13.4661723261,\t27.7129532179,\t11.5232210014,\t\n    23.1346883982,\t-31.8376649712,\t43.7429902892,\t-6.7521035668,\t9.2376550661,\t49.7442294743,\t-11.0442544230,\t86.0728321584,\t\n    83.9184836462,\t-16.1275908347,\t-18.4328902788,\t29.0599791766,\t-119.8140170048,\t6.1015865800,\t8.3430418870,\t-26.4676140800,\t\n    -54.4170405827,\t65.9500246661,\t-68.2589172652,\t-67.8087618276,\t-32.2785464329,\t15.5784741177,\t-40.7911512889,\t-30.4549351749,\t\n    65.3973162901,\t-88.7812378733,\t-100.7984347025,\t33.8660362781,\t-29.6824618124,\t43.1980425632,\t28.3570049344,\t-53.0517620662,\t\n    77.8517167497,\t-197.3149986900,\t39.9412966213,\t64.7267960844,\t9.0985185643,\t-48.2516330353,\t-25.2702193655,\t43.5324967389,\t\n    25.2174278973,\t-143.4955124244,\t97.6996202090,\t-6.8156183641,\t-24.7105412789,\t-82.1407130477,\t-84.2647074618,\t-31.8474816146,\t\n    -18.8364319750,\t-39.5505715225,\t-54.5495977905,\t17.7158231401,\t-3.7065472234,\t57.0344653317,\t-88.5539921734,\t19.3061972587,\t\n    -71.7736386745,\t-41.9757523004,\t44.0839025453,\t93.6350283513,\t23.9985071911,\t-82.1811236502,\t-109.4369907962,\t63.5407415232,\t\n    8.4092298502,\t28.4295805746,\t18.6411321700,\t-5.3460515491,\t-67.8392754185,\t38.2413165851,\t-48.3890309482,\t-84.8999016731,\t\n    -96.8897430524,\t-108.9709380233,\t12.6763008215,\t0.6495692893,\t42.5729352890,\t-45.4201114101,\t178.6503517211,\t32.3364256219,\t\n    -0.5018953239,\t85.4524577539,\t31.3821199920,\t-77.2752461536,\t-22.5276539124,\t-73.5513316548,\t39.4443099153,\t-85.5453904099,\t\n    -92.8231923388,\t-40.3971881753,\t-58.4187011919,\t43.8859268482,\t8.6368900854,\t36.7106300359,\t46.0279473438,\t98.0046308108,\t\n    141.8908992398,\t99.5148913015,\t-117.8125705364,\t-39.1830583755,\t-7.7274169732,\t-48.2601982254,\t62.7987036515,\t-214.3028855312,\t\n    -63.1561162569,\t-16.8220689219,\t25.8725009221,\t122.4301600524,\t-14.0054049372,\t34.6312211243,\t-80.1152116439,\t19.5089176613,\t\n    -55.4531957952,\t50.2925094566,\t-34.9023849044,\t96.5932330242,\t-23.3903984041,\t18.8379347047,\t-142.5109851060,\t-26.3638740038,\t\n    -45.2635268905,\t10.4556800933,\t-67.2064627051,\t-82.5693793971,\t-61.2994401437,\t-60.8623342608,\t-49.5256808732,\t-67.5095279686,\t\n    109.7221898389,\t30.3565964773,\t-3.9295411009,\t-13.3243471006,\t31.5325109517,\t-42.7881917663,\t-62.3012601651,\t12.8902122674,\t\n    -72.4707062966,\t-1.1385459373,\t31.9714183017,\t25.4392014670,\t5.2034169158,\t7.4078411122,\t3.9210252522,\t5.6054243531,\t\n    -13.9283618935,\t62.6605467523,\t106.2229553720,\t-108.0346097164,\t45.8846468124,\t63.6694544818,\t-10.1426865266,\t-101.2125032732,\t\n    84.7788854892,\t-74.9877442652,\t-90.4102888654,\t82.3491489235,\t13.4299871406,\t8.6923780794,\t21.7402751068,\t1.3078400943,\t\n    -5.3323741070,\t-40.3811284623,\t-2.8868770078,\t160.0268532699,\t-25.4997503943,\t-89.7351898498,\t47.6695601274,\t134.7207474765,\t\n    -28.8772848263,\t43.7271906311,\t7.3228230169,\t-96.1850462320,\t35.8869106751,\t-11.4777855539,\t-25.7781856921,\t48.9895273966,\t\n    13.8032764481,\t14.5942766183,\t5.8336013315,\t87.6897796695,\t-13.6765032835,\t3.3883927453,\t-158.3668079137,\t42.2382326860,\t\n    21.2461344076,\t15.6945936663,\t9.6604677279,\t-9.5678778930,\t123.3597739656,\t22.1167117074,\t-74.9824011460,\t-95.9807585582,\t\n    63.4915942695,\t94.2011376357,\t9.1392063086,\t11.0696792396,\t-61.7781744244,\t32.4342673236,\t47.9943613167,\t-144.1319767603,\t\n    -72.7895423040,\t-51.0997685900,\t-1.7995707656,\t-94.9206104086,\t72.7211674226,\t58.6708314320,\t-20.8389738301,\t-21.1038399946,\t\n    -16.3313082354,\t-9.9622712842,\t25.1381713884,\t-43.3630408732,\t95.4208180249,\t4.9957713162,\t139.7419301257,\t-78.8102530942,\t\n    18.4468841849,\t-36.6529768792,\t32.8656605850,\t-13.9061010905,\t25.3836067009,\t29.3018838146,\t-3.3243716283,\t19.1868542168,\t\n    -24.3576227747,\t35.5704128749,\t9.7305659636,\t-28.0698496733,\t80.9991737110,\t44.1711909705,\t67.2428623477,\t-51.3139105230,\t\n    -84.1430177559,\t48.3068887430,\t9.0115749848,\t14.7342922983,\t69.3129475126,\t15.3916339055,\t19.1526114590,\t-36.2384578425,\t\n    36.3072041758,\t-2.7831098993,\t-79.5517384898,\t2.4496975564,\t14.7441805304,\t168.3353222077,\t6.4042017907,\t-94.1108499663,\t\n    -96.4470728057,\t93.2974672034,\t-25.8910707915,\t-109.8714867373,\t19.6739537972,\t-25.7283734173,\t-63.5666504767,\t-13.2751224909,\t\n    -6.8369303742,\t-44.9757631953,\t59.5220216584,\t-36.6656623877,\t100.4234528842,\t39.7179675926,\t100.4793677526,\t-86.2364278236,\t\n    -92.0288292261,\t-103.2337376347,\t44.2981800782,\t19.1367051770,\t13.8984402872,\t58.8220815831,\t-77.2361735490,\t-114.4879467592,\t\n    89.1682762205,\t51.2266997372,\t81.3502982945,\t-21.5959593928,\t-11.6326571964,\t8.8353642779,\t-12.3913359429,\t-23.1216638844,\t\n    0.3575351650,\t-18.2903762351,\t45.8302612836,\t80.6428162262,\t59.7892572555,\t60.1876610526,\t-145.2533267974,\t106.2800108239,\t\n    -18.1569484863,\t78.3937893751,\t-85.6984739674,\t25.2366777542,\t61.5343531109,\t140.8219730338,\t47.9603484021,\t-66.9887369929,\t\n    -30.6392044667,\t52.9963805955,\t62.4415105078,\t-90.2869564132,\t-24.2283129464,\t-99.9584280390,\t-43.1587468514,\t34.3760232029,\t\n    89.0356907077,\t22.0053768451,\t-53.9159785951,\t-25.1650972100,\t8.0202661814,\t-53.6342885367,\t-7.1736148465,\t109.3934027137,\t\n    33.3102237776,\t-81.7593644113,\t-31.4758286552,\t37.4778685110,\t-22.7494345710,\t2.0108643659,\t46.8251888594,\t55.2739450714,\t\n    25.5904497373,\t80.2180417943,\t60.0712983927,\t5.1023725171,\t-55.3981506793,\t92.0411889173,\t-151.8431761496,\t-17.8889138320,\t\n    13.8369339480,\t-98.9537744078,\t-69.4129195296,\t-9.4399479020,\t-4.5486917569,\t3.8311487140,\t17.2656994939,\t-25.4507802631,\t\n    -42.3325354568,\t-16.6440745458,\t-133.8308014681,\t-25.5109360172,\t-23.1019754685,\t-113.2804091682,\t-14.3636580071,\t87.9235056149,\t\n    72.6206212879,\t-58.7137643393,\t167.9006741193,\t39.5232107063,\t-6.3630485808,\t71.6621087431,\t-114.1539708322,\t101.7815598753,\t\n    27.2475470378,\t-54.1505303371,\t30.1111783717,\t-11.9959488516,\t19.4405070791,\t-108.4745463396,\t71.0642431926,\t-19.8129431719,\t\n    -15.2954756654,\t14.3561030921,\t-16.5356371988,\t52.7783287094,\t28.8939941206,\t-17.2842243626,\t-133.2248386977,\t-83.3404111930,\t\n    -7.0104157691,\t22.1756809435,\t3.2730114916,\t-32.2394014930,\t20.3115837303,\t-17.1488805354,\t-42.1049764681,\t64.9096377499,\t\n    7.1989366097,\t-54.9327048635,\t27.4112784568,\t12.8647289850,\t-47.9584681630,\t28.1940916618,\t-77.7181004478,\t-39.0254847210,\t\n    14.6762624107,\t32.0630508538,\t73.0143676987,\t-22.1015540909,\t41.9874345585,\t-2.8858853990,\t-88.0645760668,\t-90.5936909394,\t\n    -17.7732180284,\t118.5661779332,\t-66.7797486036,\t50.5937256974,\t-21.9300412969,\t32.8513839567,\t9.2389232325,\t7.6133233529,\t\n    11.4306872743,\t86.1899246751,\t-14.8265560191,\t14.3516516628,\t-81.0949021047,\t-14.0165322751,\t6.4193008532,\t91.1325356747,\t\n    136.3161040384,\t-79.8056934391,\t48.3720074062,\t184.1908593323,\t-1.2350224948,\t104.8017124353,\t-70.7660168596,\t59.8117635799,\t\n    38.9768188797,\t-92.6445519451,\t38.4757633507,\t-43.8909508451,\t-68.7430495433,\t-33.5503051820,\t-45.7745564558,\t23.1582292853,\t\n    -53.0556301244,\t-84.2076950671,\t-11.0754062672,\t59.8325332450,\t115.3577555552,\t6.0322991520,\t-27.2020584628,\t-11.6601684536,\t\n    -19.6192551137,\t63.6069935939,\t-90.5530529832,\t-65.9660360514,\t-17.4108821433,\t-32.2870508580,\t-18.8912458596,\t-13.0325547618,\t\n    15.6951179243,\t52.5832125410,\t-5.3522907337,\t-17.8679842370,\t-29.6421416058,\t54.8215269985,\t-33.6000150970,\t-17.9637151319,\t\n    38.7672649613,\t15.9768537914,\t-36.5384968894,\t-25.8899064866,\t143.3564174538,\t-16.7027387067,\t112.4635318759,\t60.9380860218,\t\n    -12.5989262156,\t65.1545135722,\t68.4448023234,\t-26.7853957961,\t93.3277464713,\t103.6052678753,\t-67.2083365675,\t17.5708362440,\t\n    54.8826954360,\t18.1508430942,\t-39.3842844795,\t37.1447880280,\t57.6547054454,\t9.2814912808,\t108.2432242472,\t32.8556189396,\t\n    94.3226005359,\t5.8586602054,\t-110.9028458371,\t-51.1302011664,\t-16.0219070131,\t-7.0598649579,\t-176.6996383318,\t-49.6407750992,\t\n    -66.9977026952,\t-89.9496950726,\t-53.1942620674,\t34.9304683629,\t30.7056949448,\t-64.8309845749,\t73.0371656315,\t-13.2113288868,\t\n    -58.9585474923,\t-49.8700242642,\t-6.1582020634,\t-145.9633036671,\t46.6807699026,\t-9.8057958623,\t45.5962806826,\t17.8413742472,\t\n    -45.1844288752,\t51.6533061953,\t-18.3891326987,\t86.2944939973,\t-88.4475541046,\t109.7385814010,\t80.2606871510,\t-6.8687112951,\t\n    -40.4305300274,\t-68.8038418728,\t98.8182955892,\t45.0578128678,\t-17.9270836619,\t-58.9964717416,\t11.5983932225,\t9.3557201268,\t\n    40.2977049475,\t138.6920714505,\t-107.0950700047,\t-8.5417944988,\t76.5742734827,\t99.7719961192,\t33.2465872494,\t-130.9955599444,\t\n    -29.2255022084,\t35.8580665719,\t35.2949239487,\t47.8913285775,\t-23.4340430256,\t-20.2468230117,\t-129.2315852983,\t-43.7204390811,\t\n    18.6427890127,\t-14.5256762331,\t-114.5390628737,\t83.3822028084,\t-3.5819486705,\t-30.4441161689,\t-112.7352247162,\t-109.1237973030,\t\n    -1.2881432609,\t102.3673365896,\t-56.6529958750,\t-17.8832422128,\t-83.7875095740,\t27.3286576586,\t28.2690336934,\t11.4666255287,\t\n    52.7806502871,\t-32.3964403795,\t-11.7703336362,\t-26.4802375579,\t1.4830249909,\t-46.7745447418,\t-179.0106845682,\t-46.4060214919,\t\n    13.0495006806,\t-15.7093018033,\t-23.0652411102,\t-46.8891647861,\t-11.2767379154,\t54.4284213870,\t61.0257369233,\t25.9537772478,\t\n    32.1447676269,\t-55.7565993845,\t16.1980837538,\t39.7108201653,\t57.5494093425,\t25.4753658982,\t-82.6747317912,\t32.8120846114,\t\n    94.3963947400,\t115.4928024657,\t-103.8033683890,\t0.5505661357,\t17.6017067223,\t0.3340989298,\t11.4554380855,\t60.7715773549,\t\n    47.6023333479,\t8.7147095957,\t-12.4689201501,\t-38.3317139365,\t-70.8372336044,\t19.8454635262,\t-32.5311981944,\t16.6656528545,\t\n    -99.4051451760,\t52.1836216170,\t-36.3751695538,\t-168.5804600081,\t-12.4503257083,\t20.3254098853,\t-115.3933821008,\t99.5221568068,\t\n    -65.3861194417,\t28.8829913431,\t180.5755173101,\t-52.4724526473,\t-17.6810674060,\t-36.4748431538,\t-0.5256538571,\t-55.6217233478,\t\n    -21.4129350702,\t-62.6552175024,\t43.7806633668,\t68.9822663027,\t-103.7310445758,\t24.8680657731,\t-23.1804371879,\t-19.6865562980,\t\n    86.1256756588,\t43.1915528025,\t64.5202069909,\t11.9433963783,\t59.3956955884,\t-136.0065807072,\t54.2444425795,\t-28.2438980841,\t\n    27.6881277816,\t3.3966585075,\t-23.2714416081,\t56.2708787997,\t-104.6936674005,\t-56.2472159428,\t-66.3373352615,\t-79.0727896373,\t\n    -19.4338276833,\t-81.4066241391,\t-7.2994007916,\t104.0111560011,\t19.2521825910,\t39.6171092266,\t8.3114594881,\t-18.6024599138,\t\n    -55.8404695603,\t28.7502170881,\t-35.9621183078,\t-83.4040376758,\t100.9786890719,\t43.7353110787,\t58.0923223162,\t158.0571243490,\t\n    -89.5270222788,\t35.7263973066,\t-85.7794526924,\t-44.9442606374,\t52.4649663641,\t-16.2400821703,\t-137.0501146883,\t33.4104950855,\t\n    -66.4055049018,\t20.4444710408,\t-58.9392047771,\t93.1083108145,\t30.4506487034,\t110.0306666973,\t9.2409143811,\t-24.4812544449,\t\n    74.6860947628,\t40.3769192483,\t-16.9497053699,\t14.5576684325,\t52.3350907389,\t-25.2007169663,\t-125.4063020221,\t62.8691359335,\t\n    12.3811488011,\t-49.4397264264,\t-45.2008829472,\t-45.9893935646,\t-51.0423101211,\t-13.5776298651,\t-117.3962715914,\t20.9725891298,\t\n    -31.2377986416,\t-66.8022452921,\t-52.2545297076,\t36.1808304465,\t105.2804289847,\t-29.7408485717,\t35.4936891096,\t-44.1058624503,\t\n    -7.4267543746,\t45.9626674865,\t43.2586644116,\t-84.9652227215,\t52.2598894211,\t-27.7731305158,\t79.4055411705,\t134.9211049595,\t\n    -77.7683897577,\t38.9772600887,\t-42.4478182670,\t35.7767677279,\t120.4883485663,\t40.9080290988,\t-52.2908368677,\t10.8332681424,\t\n    103.8755744034,\t-69.4025590672,\t63.1667239359,\t51.1565115511,\t30.4688205979,\t-7.2886782047,\t-18.0942283768,\t31.5953801065,\t\n    -34.9573251248,\t-43.3238802424,\t-20.2265574149,\t-41.4045853426,\t-156.8022185924,\t-20.3378496469,\t5.4144969666,\t-49.4467840461,\t\n    -27.8246258947,\t-36.1553394393,\t-40.4493178373,\t13.5989840626,\t69.9757376469,\t-60.0443280971,\t3.4638171519,\t-141.4361514658,\t\n    93.4118114115,\t-7.3645097888,\t2.0470465032,\t-54.6478723026,\t7.3294655198,\t-6.8416716006,\t9.0045502006,\t19.8489919128,\t\n    -6.4702933570,\t16.4343253942,\t-10.3891055517,\t100.4561542312,\t29.1536913142,\t53.8464057947,\t-16.7143417688,\t-153.3024265390,\t\n    45.0496791201,\t-0.9943534787,\t-20.6269990550,\t-50.6212419282,\t-24.6576988474,\t59.6066172704,\t10.2122652005,\t-40.4195486296,\t\n    -29.2714128060,\t62.6802622802,\t-47.4202386064,\t-34.8309723516,\t79.5197299960,\t-20.0749434197,\t169.8665850989,\t98.4267485076,\t\n    31.7347164541,\t37.2604966566,\t6.7605021281,\t-50.6903490963,\t6.6127852698,\t151.3469256096,\t-70.3184827662,\t164.9601379841,\t\n    92.6205263551,\t69.9026079183,\t-31.0866155998,\t-34.9956145613,\t-9.6578985782,\t-32.6789267529,\t80.3319506579,\t91.7685176440,\t\n    5.8995239218,\t-82.0636944263,\t29.2086774264,\t14.7724289401,\t66.8988379781,\t-24.7460191895,\t-114.7525174298,\t-32.9732857706,\t\n    -51.4321208184,\t-66.2382282862,\t21.2981329623,\t9.1062826547,\t125.8754077125,\t51.0615189986,\t-96.7297998983,\t64.9965050494,\t\n    -71.5111010300,\t-180.4535252581,\t-56.1041777677,\t-3.3591726481,\t-74.8271358166,\t-28.4281456554,\t-70.1818488305,\t35.6835607015,\t\n    -13.9275123287,\t-83.1043490068,\t22.2289783248,\t-95.1448030958,\t-40.5966123003,\t11.8470675380,\t106.6983680147,\t52.7565554571,\t\n    -50.5809140712,\t62.1951780988,\t92.8998044629,\t-110.2770489118,\t-5.7088922157,\t13.3095896843,\t-34.0434382314,\t41.5967680846,\t\n    7.1406890165,\t49.0800572858,\t-4.8661130870,\t50.1732411845,\t21.8791360144,\t-20.6230498949,\t33.2629053316,\t34.8156585726,\t\n    7.7974775850,\t85.5360926916,\t-19.6603301120,\t-13.8088176043,\t77.2247366741,\t81.7615386790,\t29.5025756045,\t-202.4477185665,\t\n    -31.0440373761,\t119.6975128752,\t46.8351618237,\t-36.0825651455,\t52.3228058699,\t-61.7212902449,\t-37.0009190140,\t-111.1411485112,\t\n    119.3548750790,\t7.5570310830,\t6.2657871086,\t49.2259611245,\t49.9691348215,\t-30.7394519018,\t-60.1418076104,\t-59.4870457446,\t\n    -111.9152565690,\t124.6406880479,\t-47.4604425483,\t13.0533325061,\t-76.5307924698,\t-60.2632649204,\t-28.0947702114,\t5.4878397959,\t\n    -83.0541772262,\t-3.3172056420,\t20.2732863285,\t29.4076349749,\t47.3392948241,\t55.3208777615,\t-32.1444489144,\t-23.6019236678,\t\n    61.9602080076,\t41.6812616408,\t30.8111928268,\t21.8108462337,\t-24.6948175247,\t16.1446229981,\t-15.8735793778,\t-24.1870889577,\t\n    27.1864566801,\t-50.6435004599,\t-145.1098728714,\t-75.7531085939,\t-4.9397756888,\t74.0940849050,\t-53.5740454881,\t28.4600455809,\t\n    -64.1804054310,\t-56.5695284341,\t45.7257738714,\t27.3208227413,\t-87.4969438966,\t96.9999840115,\t26.5098283187,\t75.3671956291,\t\n    -39.9875814398,\t-71.8080566179,\t-64.7909433975,\t112.6208244120,\t-57.5455840916,\t-9.0666084922,\t36.9334781097,\t69.7260235716,\t\n    -47.6511701810,\t48.9455812098,\t-19.7303239899,\t34.4780933174,\t-24.8188130996,\t1.7918733164,\t-51.1027083896,\t-8.0414842387,\t\n    -69.6904961677,\t91.4021012418,\t143.3158713687,\t127.8431865361,\t-76.2463415340,\t77.1863865583,\t-104.8165933906,\t-82.0491770730,\t\n    -4.2452881018,\t-29.8857354449,\t39.4203383204,\t-78.4428804183,\t-67.3737881273,\t45.7774162557,\t43.1510666403,\t-38.1227007212,\t\n    48.0367915577,\t-2.2796749550,\t-147.5309258951,\t59.4609063787,\t-94.5201743634,\t-90.2713711080,\t83.9499629394,\t-44.4267785769,\t\n    66.2311395310,\t-19.8654393787,\t-40.9657871591,\t-7.6100345494,\t-153.4687135715,\t-24.0528389453,\t-43.0977703429,\t-32.4544558717,\t\n    27.4626014725,\t61.8263048101,\t8.4949142219,\t-120.4489043103,\t9.2738852281,\t65.3309688121,\t44.8133466197,\t-37.4373241359,\t\n    -83.9640842471,\t23.4059670119,\t-93.9143209007,\t-55.4183425033,\t-93.7449781980,\t74.3227981579,\t-11.7471950643,\t84.3803942002,\t\n    -31.4489037424,\t-1.8363204298,\t-55.3456417353,\t-95.1228021775,\t-55.4637768242,\t-17.5611590555,\t8.6597790424,\t19.5417857682,\t\n    -17.2507716259,\t-5.7889755948,\t70.5139270183,\t-26.9177828140,\t39.6037632634,\t4.0845034879,\t-59.7156630403,\t-55.4689095772,\t\n    -58.7669735168,\t62.5057414231,\t50.1807875376,\t-49.3189045747,\t15.4287355682,\t-8.0824504769,\t-47.6198199719,\t15.7657690255,\t\n    24.1207871994,\t27.9173027164,\t-12.5261250855,\t-19.0257872712,\t-82.0154379577,\t76.9194034147,\t-14.6695769647,\t1.4844193915,\t\n    -7.9956835409,\t-55.6156194033,\t39.9952855598,\t51.1083969228,\t48.8829532142,\t62.7988625371,\t51.9432398511,\t2.8722062155,\t\n    156.1476408615,\t37.5905889544,\t54.7112433550,\t80.2943943272,\t-6.5627640190,\t88.6335213431,\t112.2792767414,\t21.0878200837,\t\n    5.8741152139,\t-19.6667337723,\t33.7905147067,\t-34.2798965801,\t-26.4594706418,\t-15.0765526773,\t91.5802201722,\t85.4145356413,\t\n    -36.4818922051,\t-147.9028534383,\t-42.1412753623,\t-27.3632859684,\t44.0453194249,\t-19.1027467398,\t14.3157309983,\t4.1768734004,\t\n    -68.3022440228,\t34.2186781120,\t-10.1854692365,\t-173.8586421151,\t56.7091031998,\t2.6538298634,\t-93.3821299316,\t45.9499799668,\t\n    -11.8122305624,\t26.1216815300,\t-61.0880687199,\t73.1945783047,\t28.9339417573,\t42.3531539412,\t-71.3262502743,\t85.4828937399,\t\n    -66.7918044637,\t5.4192940999,\t-81.2977956585,\t88.4998783552,\t-8.8973642437,\t18.0257683389,\t0.2933847454,\t-87.7509230128,\t\n    1.4360726567,\t57.2432970677,\t103.3736004675,\t-33.8595106764,\t36.4856625370,\t87.6767927437,\t45.9257522623,\t-91.4882358338,\t\n    -43.9564432991,\t36.8048295224,\t-155.8735354347,\t78.5839166200,\t21.7365316114,\t2.8251251119,\t-0.5016069183,\t50.9050618615,\t\n    14.1865751800,\t53.6974572195,\t-47.3239324031,\t-62.3187399635,\t-109.6783459490,\t10.6742758459,\t3.0633856847,\t170.8292829026,\t\n    22.7107314592,\t-115.6997421721,\t179.4541315127,\t36.6353212025,\t-46.8173506792,\t104.9377352185,\t-62.3839485230,\t84.2161407106,\t\n    136.1327139029,\t-1.7544748630,\t-86.9030562131,\t15.4259753671,\t2.5663369046,\t-116.9292434949,\t64.2129157660,\t78.7964806182,\t\n    49.6087028507,\t-23.1282134104,\t-37.4278940992,\t-67.9769820701,\t-32.7546299170,\t103.2337703853,\t59.7504223629,\t147.3485484359,\t\n    -3.2598723366,\t116.2635358555,\t-4.3105783057,\t99.2160004729,\t18.7288916095,\t78.2186271384,\t-32.7460615054,\t26.6048168237,\t\n    54.4099899967,\t-126.6518025639,\t17.8377885986,\t-98.5074167624,\t83.5842655157,\t63.5608049079,\t124.1282700584,\t25.0506382513,\t\n    9.0974612270,\t10.2387616470,\t31.1629214422,\t-24.4182834051,\t-15.9351308181,\t-32.8438279677,\t8.8571103031,\t3.0977533207,\t\n    -23.0359569441,\t-85.1033133185,\t1.2922811622,\t-69.5278720344,\t25.7444385081,\t-92.0141253702,\t35.4374183520,\t6.7043276497,\t\n    -0.7451513477,\t6.4338102885,\t-75.9673321161,\t-91.6026967981,\t34.9987265356,\t-83.2890589702,\t-47.9531745920,\t142.7844807861,\t\n    114.2435566703,\t-26.6531368807,\t-16.5029393959,\t14.8125488050,\t16.9592532170,\t12.9147547847,\t59.7887418020,\t-39.2528866593,\t\n    -15.3658342458,\t-74.4590980998,\t74.3475628113,\t-48.1780064666,\t-11.0564355396,\t70.9519213138,\t110.0516331927,\t36.4575879060,\t\n    91.1281495181,\t-103.0201029342,\t-58.9865587379,\t-87.3023951029,\t-25.5889474724,\t-80.1022425592,\t7.1308546919,\t42.2966419390,\t\n    28.1034227718,\t-110.4992975497,\t52.3250451635,\t-22.1535855498,\t12.7339036777,\t34.0415435152,\t-39.0750294825,\t-30.4963132547,\t\n    -53.1808531221,\t17.7255575164,\t-10.9535616620,\t-95.2135221101,\t100.4987819707,\t-68.9493118541,\t-82.6099501128,\t-18.0285171027,\t\n    -21.9761772415,\t-27.5932967659,\t91.8124465044,\t5.8338598129,\t-7.0338759021,\t-45.7406241732,\t12.9215890948,\t-0.0753638964,\t\n    44.7159304680,\t26.4654167590,\t-40.1423667648,\t-8.7426397748,\t31.4700501616,\t-38.5847107897,\t-17.3446717482,\t33.6461097548,\t\n    -107.3520493912,\t117.4675224001,\t40.6606607876,\t7.9719714143,\t27.8264722603,\t38.7179679154,\t1.7705195429,\t25.5111272928,\t\n    -100.4419129176,\t12.0673509113,\t83.8410184425,\t29.5781971450,\t8.1040630143,\t4.6727315335,\t64.7847825199,\t82.6216823615,\t\n    -15.1627242063,\t-22.6182310171,\t13.1330997407,\t49.5724583221,\t-46.1716475780,\t47.7331801575,\t49.7204543255,\t-85.3529225637,\t\n    44.2195291098,\t14.5616345667,\t25.1355891397,\t40.3146174825,\t28.9423346884,\t-75.1582368771,\t57.1913980615,\t-65.6984554165,\t\n    -40.7664709143,\t66.4827050221,\t-37.4060644320,\t22.4137979914,\t-40.0020443101,\t-50.0281409167,\t4.8184431368,\t62.4290842324,\t\n    -40.0926566688,\t44.5774651507,\t-21.1028032780,\t15.1185206565,\t-16.5265077365,\t50.9848497205,\t-1.0692090929,\t-10.2392281457,\t\n    -73.6134935055,\t-58.7604124292,\t-78.9611342584,\t-22.1438277580,\t38.5664728303,\t39.8041438227,\t-43.2409994985,\t-37.9352795857,\t\n    -10.0448204868,\t-23.8371815139,\t3.2897249640,\t-80.2885168342,\t37.9525301994,\t-75.0706497208,\t83.5246116221,\t-72.9921720117,\t\n    -8.2686558506,\t3.9598212380,\t-88.0878393938,\t14.7857207938,\t37.3105932736,\t-25.5786314639,\t-14.2401437401,\t-131.8844485523,\t\n    -83.2051874645,\t-48.7402478144,\t-47.1392081390,\t-140.1935235859,\t-110.9171286805,\t5.6067034386,\t-61.3508997640,\t-153.0780126325,\t\n    20.9763880517,\t36.9388874884,\t-0.5023108098,\t109.2764166186,\t-64.7679763308,\t27.5264562598,\t12.7297402644,\t135.9094145156,\t\n    28.8725261600,\t107.1985003559,\t-17.0333242428,\t14.6472316711,\t79.6550390697,\t76.3253602754,\t-42.1106361443,\t101.2937610145,\t\n    29.1345513275,\t-81.3710305821,\t-51.6367882642,\t-75.6657420025,\t67.6127817208,\t-143.1235134075,\t63.4083371887,\t20.2771663953,\t\n    -39.6962975349,\t35.4904122251,\t-21.1761177463,\t36.6827629732,\t30.2533761253,\t-100.8244394079,\t42.0562320416,\t-117.0985134680,\t\n    86.9313959966,\t-68.5862263897,\t39.2349791859,\t-62.0712807646,\t-4.7999897806,\t157.2184386950,\t40.1651596554,\t-130.2861272594,\t\n    -21.2745075974,\t96.2019047346,\t130.4626031799,\t47.8121736864,\t67.8619386636,\t-88.5169139565,\t-15.5429762844,\t46.7375894206,\t\n    -19.9234556464,\t74.2075824091,\t-146.2816301611,\t-27.5190709903,\t-105.4977126735,\t82.7567139636,\t-63.4005073458,\t-97.8585647602,\t\n    70.7163936702,\t40.3196085322,\t-92.6325452663,\t-65.4906649632,\t14.2362768591,\t-40.1848110012,\t-27.7039695490,\t-100.7942890248,\t\n    31.7082105399,\t-25.9115041943,\t-37.2685165720,\t12.4301141470,\t-86.2349812607,\t85.4288388492,\t61.4326022560,\t-52.6450593109,\t\n    -78.4043996861,\t32.7052974812,\t1.1786814775,\t65.3401420354,\t8.4364632653,\t148.3052078011,\t-83.0828330696,\t106.6354843068,\t\n    -4.3121195655,\t-44.5526178638,\t-2.9317305696,\t109.9935497492,\t-18.4045116767,\t23.1613955078,\t15.6972686340,\t128.8746575438,\t\n    29.0629973213,\t-10.2922631539,\t-26.9225268881,\t78.3939184322,\t-13.9891592847,\t-14.3955545921,\t56.2259353432,\t-106.9719383698,\t\n    -69.4541718556,\t83.7959262767,\t118.0020136833,\t-76.6757480506,\t53.0531323252,\t20.3374814219,\t-45.9339005486,\t46.3861511953,\t\n    -82.7185926581,\t-51.9983813997,\t-11.1149096121,\t-15.7796335925,\t-14.9611867369,\t-55.5963996752,\t3.4778394189,\t-63.4371998633,\t\n    28.8327087658,\t12.5198672129,\t87.7380213704,\t18.4911159408,\t56.8889056171,\t-21.9589217680,\t-93.4663445471,\t55.1183878788,\t\n    0.6449948853,\t28.6533319776,\t-14.8059318368,\t113.5439226734,\t54.8995357737,\t109.0924325068,\t38.7922835723,\t-0.1180981319,\t\n    157.7915336564,\t81.6839158496,\t11.8100964756,\t-22.1691332044,\t9.1777753259,\t-58.6991331163,\t121.9143128888,\t123.2714985637,\t\n    28.7886850251,\t-73.5910923730,\t-128.7124920003,\t55.3579340152,\t-103.0285920820,\t-68.0360814429,\t-41.1894325447,\t61.1418052767,\t\n    9.1032579737,\t-114.7074592848,\t-35.4778656303,\t-56.5732437789,\t87.7236911508,\t-34.1313499403,\t62.2620712971,\t-52.3364100999,\t\n    -108.5676552169,\t-88.3757117464,\t-19.3248782556,\t-10.6333977657,\t11.1531439202,\t117.9042736262,\t-59.5405468137,\t-29.0685166095,\t\n    84.9970950178,\t-27.4738785887,\t-49.4301782076,\t-23.7375836298,\t123.1572277910,\t-30.7874739051,\t20.0070113012,\t92.6375682898,\t\n    -151.2677413660,\t-64.5993124352,\t-6.1931938222,\t56.2980662344,\t-51.0667271974,\t3.2590148897,\t94.2279629570,\t-81.3680192851,\t\n    -58.2441470779,\t136.3043204550,\t-65.1682000377,\t-11.6204578273,\t82.5051730406,\t-20.7566312389,\t12.9732577973,\t-3.6631681566,\t\n    5.8870959981,\t-15.0765851320,\t82.0878455090,\t-35.8669226696,\t12.3547961199,\t-187.4160833910,\t134.7486191161,\t68.4591403436,\t\n    -10.0461433931,\t59.1539319574,\t43.7723616252,\t79.1999168985,\t-24.1914155320,\t38.0293798436,\t4.5268241580,\t32.8861446301,\t\n    26.8134396608,\t-32.8357678171,\t75.5315658240,\t-98.3994598766,\t27.4380255469,\t-18.2567928813,\t-53.8692115445,\t43.6445077874,\t\n    41.8403964980,\t145.5446940894,\t-45.1527793517,\t36.2478163862,\t-23.4791069949,\t12.4999105154,\t-39.0947731515,\t-94.0528129824,\t\n    58.3030733328,\t-45.3491781120,\t73.6529605858,\t59.5823230864,\t-47.4741019188,\t16.0307838051,\t76.0140317071,\t35.1546855136,\t\n    -5.8237741703,\t8.3668861475,\t125.3567506875,\t55.2422644949,\t22.2611352600,\t-33.7548647520,\t22.9568910221,\t-35.1162490171,\t\n    34.5901055588,\t-28.0490543019,\t-15.6322113695,\t23.3610785957,\t95.0831229094,\t-54.6273674257,\t89.1750392621,\t40.0225575612,\t\n    -14.4413587278,\t97.6869759465,\t14.7675464371,\t-37.4004765161,\t119.4568961628,\t-26.1920161265,\t-58.0012410134,\t-28.7350340564,\t\n    -4.7796929865,\t-19.7344028715,\t-8.6437248253,\t103.9809164360,\t11.0043740394,\t-32.6092633210,\t-80.6443486297,\t49.9986715363,\t\n    105.5490975322,\t104.0899701063,\t59.5660092301,\t-17.9484147791,\t-55.4356343687,\t5.6176664765,\t147.8940936440,\t42.5217478147,\t\n    -33.7007685862,\t76.2702328206,\t17.7168869112,\t29.8692838033,\t47.9156001099,\t78.0087519225,\t-10.9663921228,\t108.3826416455,\t\n    -12.7724638181,\t-84.5882451872,\t19.6390498449,\t50.9452521435,\t-10.4676220676,\t-59.5812635820,\t-165.2174342507,\t52.9034909048,\t\n    4.5103428162,\t28.6714188830,\t151.2376493891,\t-15.6519597742,\t54.5244070834,\t40.6356686042,\t-51.3633558110,\t39.9915724858,\t\n    1.7184423265,\t-4.3510464817,\t6.8579282212,\t-37.7467707598,\t37.4199831388,\t-44.1415061320,\t7.9715921178,\t80.9137854559,\t\n    -93.3883447881,\t-70.4226479003,\t-5.9804507221,\t-12.7588185792,\t-12.7748179660,\t-44.8489354744,\t-27.7084595447,\t-9.4696608732,\t\n    57.0454576802,\t-137.5411295173,\t34.0807152122,\t-82.8428997163,\t36.3720183240,\t117.5741160380,\t91.0621096220,\t16.9215804561,\t\n    82.5046757105,\t-16.3941226525,\t21.6412310432,\t9.9347818503,\t94.4637136289,\t40.3883996184,\t-79.0927933462,\t-74.1126629254,\t\n    -1.8463008698,\t-11.7303452181,\t51.4819690412,\t-40.9029132628,\t79.5478142926,\t37.3467151745,\t119.3061300476,\t81.7656373311,\t\n    40.9995493552,\t-18.8267671804,\t-109.2814037436,\t110.5826225324,\t3.9090047179,\t-12.7311846356,\t50.2434808607,\t-78.9987938122,\t\n    -48.9383950748,\t-23.2509396875,\t-67.8816298850,\t46.0043667633,\t-79.5062435328,\t3.7149881510,\t28.8345576966,\t-2.4062068420,\t\n    111.7203117517,\t0.4410205414,\t-38.3832527193,\t-61.3416288539,\t-102.7939248826,\t67.9533675166,\t58.2475592529,\t10.6035422626,\t\n    37.5730234873,\t49.4994673002,\t-82.1647604961,\t65.7885201078,\t92.2097983704,\t-37.3226143066,\t135.8561958349,\t-49.4816302910,\t\n    10.8193370693,\t-8.1591216625,\t-124.7982308726,\t-14.8282684728,\t90.0927717376,\t33.5256881620,\t-59.8703916309,\t21.7176330197,\t\n    2.1782551834,\t114.1382737688,\t-88.1597739240,\t6.5361543045,\t97.9695862766,\t-39.4694065867,\t11.5962132886,\t33.7697466356,\t\n    58.9764174727,\t-4.3190513332,\t45.4357110166,\t-39.8718237733,\t101.6682995218,\t16.6389670713,\t0.3598261204,\t-29.7440968058,\t\n    -31.6482054502,\t-43.8553776977,\t67.0772865832,\t-54.5098535835,\t30.0974211944,\t45.0867818944,\t8.8681839790,\t-27.6698123459,\t\n    32.5238939056,\t115.1771763945,\t1.0297629680,\t-0.1277281381,\t53.5989816709,\t-15.6940765735,\t214.0039494923,\t-3.9607957468,\t\n    -28.2459062295,\t-78.4309884274,\t-45.1615660948,\t-56.8373512425,\t-14.9182469466,\t-46.6359981712,\t10.2436473643,\t49.6796044695,\t\n    -68.2156643693,\t-73.6736376702,\t-25.8482309017,\t79.6432993680,\t39.8430177404,\t-48.6865340771,\t-4.9554892261,\t-10.8103852199,\t\n    -163.6398049355,\t34.8129987597,\t43.1988001177,\t4.6425367549,\t71.5136740040,\t5.7449295065,\t-129.5178610564,\t23.2851316100,\t\n    -28.9856348679,\t72.2878496468,\t65.5641757637,\t-22.6995529120,\t90.6678161988,\t31.9503079809,\t-38.7957396135,\t-29.8167763909,\t\n    -127.0682245355,\t-114.5912946274,\t95.8998971324,\t14.6842186073,\t38.6817470857,\t53.4220170000,\t30.9640386035,\t-8.7681524726,\t\n    93.2374647164,\t167.2548470938,\t-110.0113841742,\t60.7832491969,\t-10.6378768861,\t-12.9541979766,\t50.4311478762,\t14.8581364205,\t\n    36.2771855577,\t16.0289680028,\t-27.1211553672,\t-27.6119525599,\t-64.3782858077,\t-30.6836783175,\t-11.3104575592,\t46.6583470371,\t\n    43.2576688462,\t106.2483647125,\t35.4221002374,\t38.7051612461,\t55.2640723227,\t-64.1159659536,\t57.0032601941,\t-44.6269768244,\t\n    53.7789820032,\t-157.3514759280,\t9.5791816275,\t6.2806945793,\t18.6705185038,\t153.1320561669,\t-5.5671006976,\t-3.2946321773,\t\n    -13.2024369589,\t-21.6449448269,\t-22.1412657716,\t70.9673800953,\t-7.9864874901,\t41.7239378937,\t71.5984356144,\t87.1584519164,\t\n    71.0575050315,\t-38.5112900717,\t41.0828370864,\t-97.7913314993,\t24.9443056744,\t71.6995496139,\t-116.3501231153,\t67.3823850840,\t\n    94.1851944844,\t-41.7993332022,\t55.6783133892,\t47.5180232694,\t-25.4261377746,\t-16.5909249978,\t-16.5035403522,\t-31.2504616568,\t\n    38.1070466320,\t0.3163573698,\t36.1965564905,\t54.8579811585,\t-54.0608838266,\t-112.2426667925,\t184.8017345857,\t49.4559933628,\t\n    97.2753525540,\t-127.3976019425,\t56.7945066844,\t105.9924251837,\t-9.7156760373,\t44.4969751065,\t-37.0888563276,\t-26.7522105798,\t\n    -40.8300149353,\t52.5243354843,\t-19.8943377495,\t51.1416695022,\t-70.0108248826,\t15.6121585850,\t32.5217684217,\t-90.1820508578,\t\n    39.2513383879,\t-47.3412998909,\t-31.3055181623,\t-56.8173595829,\t-50.8924569276,\t-7.5435701646,\t64.3413557990,\t9.7281927789,\t\n    48.9305305599,\t56.5372975126,\t26.7417330296,\t89.0738343693,\t-48.5280725684,\t-31.0853481463,\t-9.6358615936,\t51.4311918344,\t\n    -33.9718242925,\t-15.7470007951,\t51.2850467492,\t-51.4187903682,\t33.5815172911,\t-71.5483298410,\t-74.6635317137,\t-82.6284293355,\t\n    -19.3084129904,\t-58.4258965628,\t-7.7220084872,\t-50.0589600666,\t-35.4767663181,\t113.1079148915,\t-10.8113655056,\t6.6819361958,\t\n    -58.5734954218,\t-83.7627866065,\t26.5302830531,\t-99.8288161852,\t70.6577997609,\t105.1602805436,\t-26.9709761883,\t16.7715250364,\t\n    100.4598899749,\t-12.8354110399,\t31.2835111044,\t-28.1999286002,\t-71.8821977449,\t-43.8649368179,\t-24.4752744590,\t-13.8122643365,\t\n    -13.2937561135,\t86.7641539982,\t-45.7159093571,\t-13.0092431337,\t71.1728457692,\t-47.6143967182,\t-18.9549445122,\t-52.6530519413,\t\n    -36.3758751689,\t95.3593012050,\t-13.8106918472,\t-47.9731072201,\t-42.5698690212,\t-33.2874699499,\t74.6397905712,\t13.2248699532,\t\n    10.5705384630,\t53.1572412508,\t11.5799356215,\t40.3743911825,\t-30.1315085582,\t-32.5536377528,\t-63.4740422506,\t-8.1108698232,\t\n    -39.7653559069,\t-61.9123876789,\t30.2050339534,\t-13.4902607567,\t-49.0742542298,\t88.5722862352,\t-22.0924973356,\t-43.2051228512,\t\n    23.1418263846,\t-52.0531638851,\t61.7042537346,\t62.2206170738,\t89.7321026525,\t16.2048654039,\t-69.2890753423,\t14.8548152449,\t\n    -44.7911045647,\t-2.5487807022,\t-25.2382987671,\t-73.1162478241,\t-6.5637044361,\t-62.4609072239,\t50.2645328426,\t-127.1218373352,\t\n    35.9901816641,\t-13.2427957988,\t-19.1139418128,\t11.5763910792,\t42.0967727508,\t93.8373969941,\t48.7578089767,\t116.6192984420,\t\n    29.2111912926,\t58.1960409947,\t45.8425638147,\t72.1773323399,\t83.8891643331,\t17.1974768083,\t-78.1227071776,\t-76.1533486330,\t\n    -37.0312632710,\t25.0291081414,\t-104.8734413579,\t19.7434765416,\t-23.3082565679,\t-21.2852819234,\t-25.2235835223,\t-93.6817252275,\t\n    2.7146982161,\t-17.4896953310,\t71.2109780985,\t-59.2294931409,\t-84.0666862918,\t-65.3056520242,\t120.9838686800,\t74.4971556879,\t\n    -9.5684703908,\t64.8377948685,\t-66.6770366247,\t38.8265471508,\t-79.6623440265,\t-39.6171150046,\t68.0022918215,\t64.9078337860,\t\n    19.6121887994,\t7.2244101173,\t-23.1854400590,\t30.4614578804,\t46.9242283532,\t-1.0747268647,\t49.2189640668,\t44.6411673048,\t\n    86.9687811173,\t22.6744479392,\t-48.5360769344,\t-66.6164589196,\t43.6822611836,\t0.0803667092,\t22.1251605426,\t84.5472356977,\t\n    23.3682917569,\t-119.0004161504,\t-77.5731290127,\t-8.1237991059,\t-9.8574787289,\t8.0923731288,\t11.6312746189,\t48.8042209908,\t\n    -91.5385965138,\t-51.9417178439,\t-93.4017678039,\t-7.6902800177,\t42.8038592146,\t208.1745748115,\t-40.2269989314,\t35.9946432857,\t\n    14.8799963031,\t72.5512530025,\t-33.4277806899,\t-3.2314305870,\t-66.9052809329,\t99.7368956670,\t19.5081727184,\t-29.1990516772,\t\n    114.5317858084,\t-154.9703729745,\t-14.9584650353,\t5.6179621219,\t28.6224091068,\t33.0426197666,\t147.4892869040,\t-67.9739211942,\t\n    -71.7894315626,\t-107.3389637620,\t-95.5814122043,\t-16.2209528572,\t-32.6673756107,\t-24.6641235582,\t-96.2759765479,\t42.9819639376,\t\n    -45.0775031344,\t26.9177278735,\t87.2353637167,\t58.4214280318,\t-37.6862314706,\t-27.9660896146,\t-16.9115875649,\t-16.1061688951,\t\n    -28.9055343700,\t58.1888376313,\t-38.1213943166,\t-4.7623621285,\t33.9409953615,\t-85.9445074362,\t3.1450686264,\t-88.4878703313,\t\n    -50.0848195592,\t-22.4167501243,\t21.0397901669,\t11.4240588629,\t-16.0956576256,\t2.8322646297,\t-77.6952409905,\t38.2576382396,\t\n    -53.6616605614,\t-26.4231916298,\t-26.3358464547,\t81.4694985453,\t-50.3033670023,\t-8.2053965822,\t19.9636273501,\t-10.4302918812,\t\n    9.6629338686,\t26.0903202845,\t-37.8068628176,\t9.2638853986,\t-9.6752622225,\t-55.1704616516,\t-182.0875653530,\t-116.3887933434,\t\n    8.5457908424,\t-29.0590636102,\t-52.1712423322,\t-84.2194156867,\t-17.3343644788,\t-69.9177944994,\t98.4410912043,\t-5.8653773568,\t\n    14.8287039959,\t-37.2315894188,\t-15.8744801467,\t55.8855979582,\t82.6374695897,\t-10.3491623457,\t-13.1871637112,\t-59.8321884846,\t\n    -13.6406794918,\t-90.9144246870,\t-39.5280425915,\t-21.9758399218,\t-21.0648164072,\t-37.2225695620,\t179.7142651659,\t-1.6184261744,\t\n    -48.1631682332,\t83.2309613815,\t48.6367549372,\t-30.7160958486,\t-133.8419652482,\t74.7583916606,\t97.1026557281,\t49.5481525536,\t\n    33.9337592438,\t-48.6489706540,\t-74.5656495945,\t11.2027589435,\t2.2601440520,\t-26.1480067313,\t14.1051697860,\t104.3412840234,\t\n    -25.6567602627,\t57.3314373931,\t6.3330980799,\t-55.2666198655,\t-25.4971449454,\t12.5333375030,\t29.8117352747,\t-92.8414244156,\t\n    -143.2454500203,\t-7.5931354464,\t1.8606525257,\t-9.6143470754,\t-56.0408726209,\t-26.0595448033,\t37.1855765550,\t-21.2097936957,\t\n    40.1996970371,\t-41.3351177032,\t34.1834444638,\t-186.6269086563,\t-18.3614205839,\t-37.9357021641,\t135.6670379673,\t127.6586855975,\t\n    23.6471207301,\t73.4502163408,\t-73.9251876551,\t47.5332209105,\t50.1140713450,\t-5.8704801353,\t12.9804536200,\t46.7639885850,\t\n    -36.7458561449,\t-33.4506904080,\t36.4941161678,\t3.4199906571,\t-41.0407898239,\t-9.8181030415,\t4.7245112428,\t96.3687030689,\t\n    -28.2365241736,\t-17.4276379002,\t-65.7706653413,\t-96.5485126192,\t46.4790636261,\t32.1379379931,\t-70.2471563731,\t52.3768573029,\t\n    44.4162811009,\t-74.8951342613,\t5.7318009676,\t-42.1108472837,\t-131.1371125092,\t121.7221178589,\t40.1216742680,\t6.4128170610,\t\n    -32.2753329082,\t36.3368525229,\t-30.2548033001,\t72.6541502245,\t-33.4706909702,\t15.8356670629,\t-50.4602392965,\t-4.4743341580,\t\n    46.2418862356,\t79.9973168669,\t-111.2430552953,\t-41.8285332332,\t25.3359175319,\t83.0841533978,\t-16.9581589718,\t-51.9200860092,\t\n    77.9429675613,\t-100.4955466280,\t-16.9528387572,\t-63.4657485782,\t-14.2913689634,\t20.8998480157,\t-98.7512394038,\t175.0497111959,\t\n    47.0357236193,\t137.1821799965,\t75.4859204931,\t102.0896754000,\t-74.4319389528,\t55.8710604661,\t138.7844756707,\t-23.0214452064,\t\n    -44.0374225169,\t-39.5194006283,\t17.6585042519,\t-83.7726310797,\t-40.9221184784,\t66.2446785328,\t61.9460848477,\t-26.5717761182,\t\n    128.9173728445,\t-90.0154125585,\t30.7220887905,\t19.6211869212,\t91.6137623259,\t31.9401330791,\t-12.2054969481,\t-173.4012681649,\t\n    -37.8843684762,\t2.3280971615,\t58.8027265021,\t39.6103768351,\t45.9231885572,\t-21.2457868614,\t-56.1950724310,\t93.8767608958,\t\n    -20.5075317720,\t81.2860077414,\t-82.0982682957,\t-17.2313104276,\t-36.3367685204,\t146.3298759474,\t83.5645188769,\t-95.7871128855,\t\n    -41.4691805243,\t-4.4610514276,\t76.4605569574,\t-18.7164073238,\t60.5960801248,\t-55.1266248358,\t-49.3982202577,\t163.4790300050,\t\n    138.0264616472,\t-15.2636421738,\t36.7895684788,\t83.0702148363,\t-93.3437893057,\t32.5989066039,\t-49.2049731278,\t117.1479217209,\t\n    -35.4644848480,\t-44.5015630679,\t31.3859706395,\t5.8693717755,\t17.3746859058,\t9.9311131323,\t6.1022018377,\t-121.9841205723,\t\n    48.0645606148,\t-103.1127755426,\t20.0433058006,\t-134.2922130039,\t28.5016581997,\t101.8535712259,\t76.4518488086,\t-9.2802004844,\t\n    78.1358057662,\t3.3099138954,\t69.8587685844,\t110.6444273503,\t-59.6931547724,\t-51.7268303246,\t64.0193271761,\t-15.1660919639,\t\n    78.7207187414,\t-51.4776928138,\t30.8703273062,\t67.4488362333,\t-95.4561768870,\t-100.0161430296,\t198.1825455394,\t131.1359211305,\t\n    3.8645077188,\t-19.1178912788,\t30.3260202103,\t-19.7430200798,\t12.7734912557,\t74.1885333495,\t-67.8364659684,\t-80.8926661663,\t\n    12.2720397333,\t-22.8440467871,\t-42.1377912025,\t22.2591508655,\t-94.9559790816,\t116.4053256024,\t52.9759527067,\t108.1630429012,\t\n    -82.6415576638,\t107.0506710689,\t-32.4925050747,\t-134.7178668343,\t125.0907581204,\t-33.0460380391,\t-37.8115604172,\t13.4036941541,\t\n    27.9798939995,\t-59.6965877877,\t54.1339455110,\t32.0538788400,\t24.4020907468,\t-74.2815166253,\t8.4464964158,\t-20.3601523468,\t\n    28.5216426135,\t54.3051140070,\t91.5671757124,\t44.5687804478,\t-50.8430812549,\t-15.1985800847,\t72.6230011188,\t-63.3817304557,\t\n    31.1651064018,\t50.5057736622,\t-111.8897385947,\t-2.9491865484,\t80.1135762676,\t-14.0696654619,\t52.3521392147,\t88.3353740728,\t\n    87.0542702718,\t44.9528879964,\t24.2675410208,\t-47.3556425676,\t23.6195853690,\t61.7358141399,\t-39.8446197794,\t-28.6054825449,\t\n    -36.0836012134,\t-73.9089369029,\t95.5989535672,\t7.9458092374,\t21.8693430561,\t-10.5751898940,\t-16.1045252653,\t44.4127909167,\t\n    18.0851707496,\t-46.7345019239,\t-92.6347568314,\t-15.6603448228,\t39.6519674060,\t29.9629332247,\t-24.9622443586,\t-47.2975561701,\t\n    -17.7780218654,\t71.7346558516,\t1.8999680118,\t-98.4624329314,\t98.2614298645,\t15.6787428700,\t45.4912030123,\t28.2495734475,\t\n    65.7419427030,\t-99.5295634165,\t27.2786047010,\t77.8875001753,\t16.3977450032,\t10.2037888065,\t60.8912178592,\t82.1708628016,\t\n    48.2506800969,\t-26.2756011209,\t-57.2019501999,\t-91.8180165526,\t-47.2336309942,\t-42.1121454516,\t68.7279348832,\t92.7832491188,\t\n    17.6280339107,\t6.7251426316,\t25.0819097881,\t-59.7146158445,\t-65.8513175770,\t-41.0602910259,\t4.5838916831,\t38.8846775235,\t\n    19.3473841098,\t-105.1434354654,\t-13.7765844991,\t24.1616037866,\t93.0893862826,\t-107.6082978084,\t-58.7977319447,\t58.0759414185,\t\n    -89.7901093790,\t16.1918835625,\t-37.2172665357,\t123.6960140670,\t114.2205895053,\t8.7980887529,\t22.1354877733,\t52.2713979482,\t\n    22.2246402930,\t36.6257130653,\t74.2884386832,\t39.9288008601,\t113.0416245079,\t26.8047584467,\t58.7266876251,\t-6.4680422666,\t\n    -26.7509331673,\t-38.6312732122,\t-145.0208923168,\t-35.9684264419,\t-117.5381191845,\t29.8488196638,\t-51.1247043830,\t112.6915937071,\t\n    31.5277658506,\t-24.1454178026,\t24.0572867542,\t-15.3632719912,\t-44.2556311042,\t58.2449714174,\t-76.1363396817,\t46.3749067777,\t\n    3.4852275006,\t-104.6231553696,\t30.1977700745,\t7.0441446610,\t-10.0102536523,\t120.6615291011,\t188.0249410917,\t44.3295887206,\t\n    -39.4106227621,\t-42.4924838463,\t-28.9316859978,\t103.0113316106,\t51.7061135184,\t-18.2169052015,\t21.6066648209,\t50.1453569033,\t\n    12.7421867528,\t-8.1356008640,\t75.2454422748,\t64.8694058804,\t-161.7997182567,\t-17.1915039219,\t-41.2383269408,\t0.8946812357,\t\n    55.0533498639,\t46.8242610223,\t-5.3780848566,\t-46.8156157192,\t64.2205137708,\t-25.1479872711,\t-54.8298550608,\t73.6823422266,\t\n    41.9888520352,\t-83.9419623261,\t-41.0305214865,\t-47.4087035362,\t33.2268582543,\t-38.7414663450,\t-104.9255474057,\t38.2157988361,\t\n    -22.3790617016,\t-31.5426215850,\t14.8891733573,\t-64.9019662116,\t-44.3044057867,\t-92.3281371013,\t63.6669819235,\t-18.2425819417,\t\n    -49.5109487403,\t-64.0201431562,\t-70.3061633619,\t-147.3930233046,\t128.8254864954,\t7.6978217230,\t-56.3987238261,\t95.5962971177,\t\n    24.9319849141,\t-1.8305826630,\t63.7414243665,\t-49.9852779582,\t-25.7389331291,\t25.2700519583,\t170.5603890165,\t9.5266276922,\t\n    13.5399442827,\t0.7663023156,\t144.5140143737,\t75.6602313295,\t44.5345480965,\t35.8927901197,\t59.9952333199,\t64.3016125781,\t\n    59.7518716703,\t15.8739554628,\t57.5686758914,\t58.5866845774,\t43.8356058096,\t7.1335337346,\t27.6439212874,\t-30.0398764928,\t\n    6.2065364457,\t-79.6476847939,\t-80.1779260414,\t-52.2408711631,\t9.9023027662,\t10.3789070887,\t-46.6717275791,\t57.2822267955,\t\n    73.5763019279,\t-71.4639042142,\t-52.0323289026,\t-80.3692311543,\t8.8431925427,\t-40.3750957204,\t12.8573997402,\t-112.0129690473,\t\n    -67.5403575455,\t-4.9929337525,\t131.9313839610,\t-108.2934624601,\t17.2672219445,\t48.9942839871,\t-90.7089806183,\t114.9850344553,\t\n    31.5988734490,\t59.7636253519,\t-33.9764105756,\t20.7915341567,\t94.3558278877,\t4.9570378129,\t75.5601876581,\t33.8799007373,\t\n    -90.7302419365,\t1.0494275291,\t-33.5814817284,\t-50.4328011162,\t-52.6438122254,\t10.3630633870,\t-90.7790260582,\t-60.4947106306,\t\n    56.5127910083,\t32.1019449106,\t-8.8885657127,\t22.6481300860,\t-74.6992587301,\t-137.1086103933,\t-35.3402671515,\t52.0032440119,\t\n    14.9769109018,\t-23.0406615521,\t-41.8971596726,\t-77.3413472134,\t-46.9910623823,\t-107.4957490524,\t-86.8794002198,\t52.2329975546,\t\n    72.9424340427,\t-74.3244971184,\t85.7023745145,\t60.8778950641,\t-31.5903542844,\t-78.0533202133,\t-73.1733800101,\t53.2034137779,\t\n    83.0498994257,\t30.2580271740,\t-56.1035163750,\t16.6579677161,\t0.2073439761,\t-5.7906867906,\t-66.8711603748,\t74.0261467640,\t\n    -62.2989478643,\t107.8399681550,\t160.1626153730,\t-27.1263316346,\t-79.7784413411,\t-10.8403444789,\t-37.3887634955,\t5.9808867714,\t\n    -10.1978150670,\t-53.9468869673,\t-38.2970373675,\t16.3168988370,\t-1.0483342304,\t-63.6173233903,\t87.0866029730,\t26.3862156999,\t\n    -21.4053546455,\t-7.8216446996,\t90.5994689064,\t44.6928873902,\t-146.7075228500,\t-62.8122471300,\t-121.7119840134,\t-32.8992273432,\t\n    -11.9106565965,\t-104.6076313473,\t127.3823687195,\t2.4852952522,\t8.9975686284,\t45.5738431227,\t16.8209391951,\t26.7216521497,\t\n    -54.8776022226,\t-68.4194899925,\t20.3925320149,\t4.3453071650,\t49.9988757708,\t-8.6636385971,\t0.1191776713,\t-64.1528259747,\t\n    16.0849193094,\t-24.1120788064,\t40.7655203071,\t-23.7853262362,\t91.6933164270,\t-54.3376676772,\t69.7309190298,\t113.1324293560,\t\n    16.9278536871,\t123.2439408123,\t5.9934209089,\t-45.6409119369,\t17.1842607385,\t83.6522464227,\t-174.5484916836,\t-4.9414325022,\t\n    52.8768375216,\t15.6132102239,\t41.1192572000,\t-81.3594721245,\t28.8255333085,\t-2.0603766865,\t6.4061712949,\t82.1547586637,\t\n    -36.3679383103,\t-1.0390408940,\t-13.8483417281,\t37.2231178393,\t-2.5777964710,\t-157.8382079085,\t-60.7910508762,\t48.7258486830,\t\n    33.1256641954,\t-54.6346845809,\t88.2192196002,\t39.9956402036,\t3.2010617529,\t88.1693658284,\t11.7277451767,\t32.7636165636,\t\n    -68.1591305748,\t43.2699890762,\t107.2828531104,\t-36.8225650893,\t1.4407313695,\t53.5742622795,\t103.7597203839,\t-96.8481119045,\t\n    -70.2987605549,\t-55.2783713624,\t-6.9864094662,\t-40.3280834509,\t16.8072891922,\t24.3756993403,\t-84.6501745052,\t-45.3961429485,\t\n    -53.9237387431,\t29.1708008262,\t1.0498758638,\t34.2610169651,\t-9.7905112911,\t-35.2443111357,\t99.4574100554,\t-82.7243314274,\t\n    -12.3112078341,\t-13.4935295204,\t-65.0441169373,\t-1.5707942158,\t-8.0237289199,\t49.5507868185,\t-13.4811149250,\t-3.9030733772,\t\n    -75.6220602476,\t-74.1596322041,\t-5.7789561939,\t73.6177769297,\t-98.9485291892,\t117.7192585235,\t-79.3791252579,\t11.3447373614,\t\n    -24.5743979438,\t33.7169431880,\t39.8633765496,\t-149.5617929692,\t141.9104918620,\t-55.0577810810,\t37.2052313138,\t6.4852281207,\t\n    -51.9122252169,\t-31.2592720321,\t-69.3547398856,\t-78.1122747852,\t66.6338044220,\t8.6865150501,\t-67.8354186666,\t-202.1226264943,\t\n    -31.1645341579,\t18.2037364021,\t-64.8577486822,\t32.5502423750,\t26.0251882844,\t5.0986012605,\t-47.2026094332,\t-13.9009556603,\t\n    59.4152148554,\t101.0702523560,\t-35.6013874662,\t22.1677959258,\t-26.0857605492,\t14.4754773923,\t-0.6780897798,\t-25.6530120006,\t\n    -25.4546641639,\t35.7707567857,\t24.5314489446,\t20.0344481593,\t-18.3207572649,\t-9.7912924757,\t-11.9552594910,\t106.8966283008,\t\n    80.2653334386,\t-3.6056009570,\t77.5441202535,\t37.7136483336,\t-2.3165569778,\t-15.1111584239,\t-21.3047579337,\t63.3629898072,\t\n    15.4217847395,\t-48.6546027271,\t33.3996963722,\t-87.5423526700,\t-18.8955709453,\t-85.0736444599,\t-55.2290313813,\t37.6993014695,\t\n    -1.9420172920,\t143.1251237972,\t-55.5771775185,\t-41.0289639463,\t-82.6515627688,\t48.5420105013,\t10.2288031648,\t-56.3379070490,\t\n    20.0143954586,\t-84.8968512309,\t127.0283241701,\t-79.6996444881,\t-52.6134879057,\t22.0561680431,\t60.7355377150,\t15.4017379435,\t\n    -103.3924328801,\t54.8459420743,\t-75.9157921311,\t-18.5478645340,\t-120.2337715192,\t19.3119533190,\t14.2354651926,\t49.2411155276,\t\n    178.0946722971,\t-75.1044338856,\t-17.7857687140,\t-44.5847020456,\t-90.1973261616,\t21.4416495288,\t51.9825060227,\t-66.7420817203,\t\n    7.5764658958,\t-70.5144035274,\t-58.0645913437,\t-108.7601823595,\t11.3207059592,\t-71.0204300166,\t-71.9141786835,\t-41.1119761277,\t\n    -63.1487461134,\t-7.1948924612,\t37.4257273157,\t-0.3096640281,\t22.3859391424,\t37.4791977942,\t4.7298794262,\t-33.2974745191,\t\n    31.2867641674,\t-32.5753321154,\t66.5419169580,\t-60.5202504180,\t17.4192217276,\t-50.5317834280,\t95.8748766870,\t-31.5464032969,\t\n    44.7045552306,\t64.5521928874,\t-23.1461700992,\t118.1095509083,\t35.1065388893,\t-27.9857316442,\t8.2912382315,\t39.7446781812,\t\n    3.3485245256,\t56.6810611812,\t-22.8994983441,\t80.3970810489,\t22.3086957726,\t128.6454657339,\t22.4798757743,\t49.8362059423,\t\n    22.4019441476,\t27.1059712406,\t11.4540686475,\t-10.0764491110,\t28.4803668412,\t94.7776130875,\t-36.8737987939,\t-88.8666428850,\t\n    141.5495956917,\t-46.9343244046,\t-58.9586661150,\t23.3890221338,\t72.3692845286,\t-27.6356117882,\t-41.8318324842,\t70.9559999727,\t\n    -8.0897813375,\t-78.2950183802,\t87.8658917396,\t-70.5715383399,\t22.1972033651,\t47.8069266963,\t131.7707915958,\t-23.8938128672,\t\n    -33.2047798206,\t-40.7583820499,\t27.0405050078,\t19.6445061622,\t-19.3891108700,\t-136.1942182249,\t8.5255159178,\t-42.8234719503,\t\n    -70.4814202849,\t-41.0662321022,\t-9.3910777305,\t136.7254609331,\t-6.7391967243,\t-68.4796734994,\t-27.6933664361,\t118.5680907562,\t\n    7.1623426945,\t6.8386734240,\t75.2481710418,\t33.2280590090,\t50.6011222647,\t-2.6551190091,\t-54.6429379954,\t-15.6441827245,\t\n    34.8192824650,\t41.1519964665,\t-95.5213521044,\t-7.1466152035,\t-23.1705143065,\t21.8243235569,\t-26.6493944983,\t44.3948925119,\t\n    -0.2695887637,\t-115.9753822388,\t10.0551835964,\t41.6343978371,\t17.7354401036,\t3.3862359071,\t-107.5692389700,\t110.8538665943,\t\n    -77.0898864044,\t-18.5513096154,\t87.7377015326,\t-89.7201205553,\t-21.4828890020,\t12.6716787713,\t71.2019960218,\t37.7530110511,\t\n    -111.0886809644,\t28.0083327042,\t11.6412229475,\t-14.9061811373,\t78.9633564364,\t-17.2424064978,\t78.6411356878,\t31.5888916445,\t\n    -52.2057754767,\t-51.8187552856,\t12.8069170133,\t-44.4192811197,\t-29.6758641711,\t-39.2862559158,\t90.7444415817,\t9.9897923810,\t\n    -33.0089291278,\t-79.7506824464,\t51.5840713006,\t-15.3414477161,\t55.8773639416,\t10.4014931469,\t-12.0825624913,\t30.2487218486,\t\n    13.4626458507,\t-41.6078761320,\t-99.0036616160,\t97.2413199943,\t16.2571104823,\t-106.6994082721,\t-42.5507290539,\t-30.6273488892,\t\n    -65.9180047092,\t-61.6996048814,\t57.0455325157,\t103.2653865169,\t116.3758447306,\t-74.5041275207,\t-0.1164162789,\t-14.3978018054,\t\n    38.0218224919,\t127.8971402721,\t5.4463615012,\t78.8192543895,\t-25.6140607422,\t-9.2485898035,\t-48.8769533605,\t34.5460968716,\t\n    -75.8820751325,\t93.8969485430,\t-38.5976860109,\t7.9177115766,\t-80.5122708885,\t21.2658351542,\t67.4252739338,\t2.3783155124,\t\n    83.9115322121,\t-75.0252790111,\t37.9405478207,\t14.4346316538,\t-109.9157163206,\t108.9078208323,\t15.7162891141,\t-82.1261022291,\t\n    -76.1782289525,\t74.4747265412,\t-46.6029184986,\t-41.2456137340,\t-80.3895294383,\t-8.4118305522,\t-0.1933892651,\t-145.1576077775,\t\n    -15.4312649597,\t39.2200199533,\t-13.6364330998,\t-25.8182203562,\t48.1591475229,\t125.4840761759,\t15.9990051973,\t76.3197750584,\t\n    -191.2988456723,\t38.9117045838,\t-115.8653769258,\t81.9245653626,\t-10.1602378212,\t54.8635932256,\t-62.0258658391,\t83.1033610875,\t\n    -4.8490223558,\t-54.6097329099,\t-10.9477363598,\t33.0862207616,\t52.7148056029,\t35.4875411655,\t49.1104822038,\t55.9764111036,\t\n    19.3458408685,\t89.0606670761,\t-85.0457542002,\t-78.1726308870,\t93.6580344148,\t-26.7125037520,\t15.0835782513,\t45.3860435621,\t\n    12.4384130680,\t70.5409358400,\t9.8929034782,\t-23.4934005067,\t40.6776169075,\t-65.7911681154,\t-167.1217168499,\t-19.4434798044,\t\n    12.5047333259,\t-106.4886582913,\t-22.0096224479,\t-51.4306080664,\t70.4101816964,\t0.0684774882,\t-76.2887185579,\t75.2064469835,\t\n    -63.0584107912,\t78.4585282303,\t-20.2508456707,\t-55.6679838569,\t27.4321350947,\t84.1834097135,\t-10.3659243385,\t-48.4070302399,\t\n    92.8062051508,\t-25.5124355326,\t-84.0473681678,\t71.0714983360,\t25.6083325312,\t-45.0808082818,\t-155.1967735998,\t10.6420814804,\t\n    151.0278845436,\t-44.2955308501,\t29.5425559978,\t-113.6663161729,\t-36.5169042517,\t-72.3071551232,\t-26.8471044056,\t15.6848246843,\t\n    -34.5750914935,\t-198.1775254215,\t25.4131251136,\t-21.2604011481,\t-1.0414028296,\t-46.7191360308,\t2.7446655943,\t54.9295292750,\t\n    92.4228624473,\t54.8526054625,\t-58.0708705172,\t-17.5872514429,\t-107.1263606314,\t3.8705217560,\t8.9778481619,\t-6.0018700075,\t\n    93.9938778953,\t20.8072064757,\t24.1862680085,\t-36.6869801034,\t80.8573435056,\t5.0571862502,\t4.9644714449,\t47.8862765669,\t\n    35.1164783949,\t-43.2306708209,\t-70.4784884015,\t-22.9691864018,\t-13.9209248410,\t-47.9058355842,\t69.2014224885,\t36.4205028832,\t\n    -41.7969907806,\t19.3910242176,\t46.8411651043,\t-101.1964790621,\t1.7651827600,\t2.7058301870,\t-23.9427647032,\t-29.9388425668,\t\n    -85.3458953742,\t-28.9877302845,\t-56.3025916174,\t-20.8442568667,\t52.2658233674,\t16.2060641337,\t4.4319659648,\t114.0813888914,\t\n    -28.7002125175,\t49.5308227691,\t-30.0766397744,\t-61.6828255791,\t-49.3247835301,\t-26.4413883089,\t5.0971297500,\t-28.0554103014,\t\n    42.0857897882,\t-47.9552784036,\t-42.7903198462,\t87.8376670399,\t-140.5238322306,\t101.5731331285,\t52.2212327660,\t-22.4010751415,\t\n    14.4300378085,\t-51.6886150508,\t6.6829221172,\t115.9640673493,\t0.8066647921,\t79.2442610587,\t-18.0322597688,\t-93.1043520771,\t\n    -72.1150120989,\t87.2886742511,\t-25.4133998112,\t-7.4831361426,\t33.0287073819,\t-23.1984191566,\t-23.8078728472,\t59.7504642008,\t\n    -0.6923320155,\t-12.4892802407,\t38.4436035475,\t100.2867176437,\t-99.6305730687,\t-108.5810851604,\t9.7451186318,\t-43.0333845061,\t\n    -101.8397764566,\t-50.5229450341,\t-23.5177624889,\t-64.5537003712,\t174.8259413987,\t80.6820828046,\t156.0492701171,\t-28.0432391315,\t\n    54.5458337882,\t-9.7039186394,\t0.3967891057,\t37.2171179706,\t53.0918819026,\t95.5734474731,\t-0.1572821866,\t35.9295265728,\t\n    52.6110638216,\t65.4681244336,\t-58.8893064188,\t33.3094740223,\t23.7248112965,\t-86.1001662411,\t-124.2990486005,\t-53.0143407367,\t\n    60.7137702328,\t16.7099000008,\t-16.8984625777,\t92.9154007512,\t19.0020902188,\t-60.8943449371,\t19.8803437206,\t-45.4933609435,\t\n    -37.9759751454,\t38.9546342412,\t112.6564725638,\t-20.6282048911,\t-82.6461566213,\t33.1634895891,\t-14.6466202774,\t70.8258934983,\t\n    22.7763755890,\t-23.8551537513,\t38.0027621248,\t13.1891619540,\t-0.2512849813,\t-22.0294650280,\t-3.6017925014,\t-80.9408522816,\t\n    2.1581228675,\t35.0316749727,\t1.4313916959,\t7.6662501879,\t95.6789578890,\t-25.3147779279,\t-11.1001968711,\t133.3263412000,\t\n    57.3919237887,\t-114.5247973399,\t97.7159374781,\t-25.1589170064,\t-28.2795559691,\t-78.0626694271,\t-25.2625001068,\t59.6669532190,\t\n    -24.8854138846,\t15.9627092698,\t52.0951356726,\t-49.4931272094,\t32.2981549802,\t-45.2155042278,\t-117.7954359551,\t71.9214384433,\t\n    -12.0100960200,\t-85.8922139632,\t44.5277402755,\t45.7283733108,\t153.5133743833,\t-12.2908386291,\t-16.7857892861,\t-34.6184196532,\t\n    -56.8327470259,\t-5.4780874150,\t-38.8725168650,\t4.6060525978,\t20.3207039309,\t-3.0993047411,\t10.1132085358,\t-37.8257661018,\t\n    -5.5665784625,\t-69.5263241776,\t-38.3990002707,\t55.5634953442,\t34.1515898646,\t25.6046582443,\t49.9096070185,\t23.8082590350,\t\n    -59.5259871997,\t53.0128767406,\t-14.6534382681,\t25.3901141454,\t-20.2689398092,\t112.6721308068,\t-44.3928586231,\t-46.9200544069,\t\n    -102.6597110918,\t-35.1087345365,\t-16.4476118027,\t-56.5493022087,\t-19.8752899545,\t112.5790185345,\t13.1594262867,\t-98.3712667207,\t\n    84.7454129819,\t-32.0001239970,\t33.2615003229,\t-70.2186017880,\t129.5580075545,\t14.3022334321,\t53.5329352657,\t165.1115533783,\t\n    42.9337492453,\t3.3467665656,\t5.6916538476,\t30.9878624742,\t43.0083773411,\t83.1082949362,\t-68.6733601131,\t129.7158774740,\t\n    0.9829430504,\t-73.5779156249,\t-0.2190628113,\t-66.4832285128,\t-18.1621332482,\t59.5591274811,\t-47.9030207223,\t-33.0134331016,\t\n    8.2663047608,\t13.5843595697,\t-124.6750162116,\t-119.5553229429,\t6.7914845141,\t17.7380901732,\t-133.7630184698,\t33.7185572623,\t\n    -31.1975924142,\t-55.1798482215,\t-72.6025491416,\t-65.3245960982,\t-8.7224630378,\t27.6488501343,\t-79.6246723592,\t-12.1515699989,\t\n    84.6626846949,\t-53.8044373764,\t-47.3237819756,\t58.7153917563,\t23.8284036126,\t18.5922606945,\t-41.5094930442,\t7.4798082503,\t\n    -117.3348631592,\t28.0374584580,\t17.7205965437,\t37.6075060837,\t10.5295050958,\t-10.2113391455,\t-25.4289536763,\t80.7158011723,\t\n    134.2497737713,\t107.8649950212,\t-8.7918461736,\t-99.0628159937,\t-28.4975407702,\t-2.4658161692,\t-1.0354059017,\t3.5152634039,\t\n    34.3665501560,\t-87.6859371958,\t33.3653060530,\t-45.7175591636,\t-65.4175088722,\t-39.9650581770,\t-57.8964432706,\t-74.5229831900,\t\n    38.4192570282,\t-93.0015200930,\t102.6189889638,\t-15.2156059788,\t8.6020521359,\t-40.6649198594,\t19.2140495475,\t68.7122869639,\t\n    43.8544891050,\t31.8559705108,\t-56.5147934081,\t-76.4182242061,\t-20.7528009745,\t122.9729619714,\t19.3412487106,\t119.2231188878,\t\n    -61.6916564137,\t19.7466881922,\t1.9628648319,\t-30.1476626231,\t26.0368611826,\t-25.8750640673,\t126.2461067518,\t-38.3759348959,\t\n    -21.1488548859,\t9.5896772329,\t60.6570721102,\t-27.1555851824,\t-82.6629073502,\t104.2859535395,\t-17.1669088713,\t-104.6106452933,\t\n    -45.0398334945,\t43.2080892320,\t-87.3425077484,\t0.2033770682,\t-25.6876572199,\t79.3659499889,\t29.0973624285,\t-23.8554325099,\t\n    25.8594825320,\t-65.7761031112,\t-3.5831773610,\t-7.5912426740,\t98.1472561219,\t13.1498139916,\t-13.6564623410,\t56.9471294530,\t\n    3.7663518315,\t-75.6123083481,\t44.5806865445,\t-17.4609911479,\t-55.6387091480,\t44.2177387420,\t34.3752520512,\t91.9930112408,\t\n    -102.4716789145,\t-40.4480770016,\t-14.7542706842,\t80.9321121716,\t-67.9012532377,\t74.2022584642,\t-39.2995936367,\t95.8528505885,\t\n    107.5716319470,\t8.1259867727,\t114.9534060173,\t96.1080490303,\t-30.6405288182,\t27.3131447051,\t-22.5066083621,\t-7.9447818944,\t\n    25.6505787602,\t-67.1523588791,\t65.7872616460,\t-3.3285011027,\t-1.1041085569,\t74.8921702514,\t-25.1084011697,\t-9.7589516985,\t\n    126.3993857146,\t-70.7299876677,\t-22.4069284847,\t15.4150555050,\t6.0494312782,\t14.7172132463,\t-36.2348351724,\t-63.4858079910,\t\n    8.2207526905,\t-101.4967633400,\t12.1832438786,\t49.7125534112,\t-99.3127122046,\t49.9528617888,\t-7.3125598688,\t-22.6006580462,\t\n    -31.8424104370,\t18.8121241410,\t-89.2005207726,\t-89.5613310067,\t37.7746014303,\t-33.8940703850,\t98.1050260145,\t132.6754622940,\t\n    91.4832076657,\t48.9724771421,\t-52.3241324047,\t73.9850811745,\t-139.5294058433,\t-14.1985477071,\t10.6320943394,\t32.9842589505,\t\n    -117.2355637537,\t-149.0942826923,\t118.8257377105,\t78.6561766800,\t1.8467003036,\t76.7457523519,\t35.0575934280,\t35.0405067972,\t\n    46.3433191288,\t51.5391456892,\t43.1210412216,\t21.6828221089,\t-24.7058117089,\t-83.9863281328,\t7.1502359525,\t-66.4432335170,\t\n    -11.8942947461,\t27.6420249691,\t101.5285396899,\t-168.7093966612,\t38.1892453170,\t55.9668521894,\t64.4854368465,\t-32.3167099392,\t\n    -37.5824582463,\t-25.5064561372,\t107.2513163415,\t9.6344685960,\t-44.9269370404,\t10.4288908869,\t46.7640176210,\t33.7300219820,\t\n    19.9212664361,\t70.0213390428,\t-62.5237740415,\t-81.5465118244,\t-44.0793815204,\t92.2566857417,\t-51.2000490212,\t6.0091571611,\t\n    30.8037109068,\t-44.7595662927,\t-69.6108606342,\t64.6862483343,\t33.1742048387,\t55.9059849044,\t66.4985799238,\t-48.2816133661,\t\n    -22.7185185172,\t-114.1511261421,\t147.5147842854,\t9.9781895463,\t8.0732325157,\t-35.8047978931,\t75.9079000901,\t-6.3144641143,\t\n    13.1307658403,\t17.7593379387,\t-68.0746602967,\t81.4962779846,\t-21.2130737883,\t4.1881456029,\t-53.3976620104,\t73.0143978370,\t\n    -131.1048524173,\t-34.4396004841,\t-48.7367342675,\t97.0896245872,\t-153.8743591626,\t146.4347629539,\t-23.2984615872,\t62.8412359714,\t\n    12.5390587557,\t-3.5600971161,\t-6.8863206565,\t-43.5270424219,\t32.9707655033,\t-103.0889331877,\t-64.0535042805,\t106.9215904598,\t\n    -46.9078727795,\t-18.2192480137,\t-8.6225312780,\t-75.0230233110,\t33.5402016456,\t63.6373276750,\t-35.3286634556,\t-9.7322691960,\t\n    -104.9070709198,\t-44.8063768563,\t-10.2396474262,\t-141.5682333490,\t-41.9856066191,\t-64.5568181205,\t-105.7644577258,\t-34.3266130311,\t\n    18.7442551407,\t-6.1736131415,\t-25.1300038952,\t45.1470563965,\t74.1676313724,\t-21.5064254542,\t70.6267797692,\t54.4904113618,\t\n    -35.0016926163,\t-36.8626539144,\t-36.1085281705,\t126.4456731006,\t-53.4352000664,\t-42.3833008015,\t80.0205785607,\t-5.8395042605,\t\n    -3.7163929006,\t99.0418697430,\t67.5450923850,\t-71.2740732169,\t-57.7639750215,\t28.3495782004,\t-14.9114371149,\t68.2395578146,\t\n    19.9391412722,\t0.3981730821,\t-67.6429500835,\t99.3355729015,\t16.5267218873,\t-63.2226829304,\t-18.9357631878,\t-2.8614372915,\t\n    181.1332468568,\t34.7347222636,\t-16.1060495743,\t-2.8148621786,\t-45.8170675798,\t43.3943251920,\t28.6117124005,\t-33.2361768688,\t\n    -38.5248849741,\t49.6677439095,\t-220.2210251040,\t39.4305879349,\t66.5483442468,\t-53.8217192052,\t67.6757901350,\t33.4240885070,\t\n    85.1809128375,\t14.6803329701,\t-35.7116442076,\t-45.9462851452,\t142.0722968061,\t7.3538820438,\t-74.1993826074,\t-47.7693348567,\t\n    -3.3338017336,\t41.8589920225,\t-27.7802513358,\t81.0798842587,\t-35.2219569758,\t-22.2714108513,\t20.5772883573,\t68.4758687172,\t\n    51.7089964364,\t25.7997568352,\t-75.1742154071,\t50.1290455164,\t14.2169709710,\t115.3455403147,\t3.0734091132,\t-24.0080167664,\t\n    -30.0430862767,\t-85.1846499745,\t19.4251899965,\t66.7660313085,\t10.4964191964,\t191.8810766140,\t44.1684279713,\t75.7858859863,\t\n    19.2241630741,\t-16.1074277656,\t30.9051369625,\t-103.4147225746,\t-9.9194221597,\t-13.0669809072,\t-14.3302540445,\t49.1519159556,\t\n    -27.2523237365,\t127.6868804216,\t-85.5747904513,\t-40.1209192492,\t178.0522707351,\t-73.6864713410,\t-36.6342055327,\t-99.8126854419,\t\n    -41.0696248653,\t42.1245867015,\t-4.3161823048,\t-13.2747008746,\t119.6002869940,\t-17.1335931288,\t62.5993425061,\t28.9992320778,\t\n    -4.5368180858,\t1.2779053761,\t27.7084888678,\t34.8899603537,\t-30.6048794059,\t-93.8465401416,\t3.3778313360,\t13.8864217937,\t\n    -62.3784185879,\t27.6165516418,\t6.1885364328,\t-45.2772604479,\t-56.8928574665,\t-7.8629078173,\t47.5072063672,\t-47.7279779449,\t\n    116.3659358841,\t-108.7063603401,\t6.8435296791,\t-4.2310899521,\t-48.8520623760,\t-42.6788172675,\t28.7598264712,\t-45.5725981159,\t\n    5.3364646966,\t-8.8259790870,\t53.5478850699,\t-93.0251963014,\t37.5833785601,\t-5.7207089841,\t-36.3899380994,\t21.9593949993,\t\n    27.8919793663,\t50.0242670536,\t38.7060750441,\t13.4383538753,\t24.3284938604,\t-66.6706972814,\t-75.0556788531,\t46.8080800007,\t\n    -76.7685518979,\t-110.1823907916,\t117.3556114385,\t-11.8794346783,\t-100.5931552045,\t-81.1814329321,\t-11.1946927034,\t65.9117165560,\t\n    -35.0871947675,\t68.9890931402,\t-10.8170265109,\t-76.6397320929,\t40.0628004769,\t-13.8876229441,\t-47.6413458333,\t-82.9301597006,\t\n    35.3601089866,\t-27.9439892787,\t93.1557477015,\t-43.0973522277,\t-28.5635146727,\t-12.8419650369,\t-19.2552737753,\t-104.4730738934,\t\n    51.2133027222,\t-80.4713372457,\t82.8904666296,\t-32.8693411980,\t-55.1514350588,\t-32.3215790447,\t15.3586714150,\t56.6281953096,\t\n    -4.1845768663,\t-21.6039139687,\t37.2300232632,\t41.1966104813,\t-18.1197213904,\t-43.3281929812,\t-39.4358705806,\t-68.0037577582,\t\n    102.7052778200,\t1.1074295163,\t148.3224324741,\t-139.1640107475,\t-33.1782275394,\t-49.4813361135,\t33.6935341991,\t57.7540768190,\t\n    -50.1484966873,\t25.5452659987,\t-58.4535765464,\t-124.3028152080,\t46.5749355946,\t88.3984919306,\t18.6343901041,\t27.7237147347,\t\n    7.4621558601,\t-45.2696342528,\t6.2181991419,\t-124.4793150492,\t-34.3600196858,\t-17.2893599431,\t10.3880081085,\t-34.6584762030,\t\n    80.4621681009,\t42.6698890316,\t41.0028635312,\t40.4584805162,\t12.2993857558,\t-2.3438124814,\t-49.4434262439,\t67.7382058590,\t\n    -172.5728037457,\t78.5681808033,\t93.0200717559,\t-34.3893038739,\t25.4332764674,\t-0.3084790746,\t-47.0942986345,\t67.8054627172,\t\n    122.2738316110,\t-84.4716788862,\t-15.1596922578,\t73.4104827953,\t-26.5231401219,\t53.5433793756,\t121.1802722337,\t-24.9087077008,\t\n    65.6955157778,\t-100.0325133938,\t-5.4645525511,\t38.8338919462,\t38.6764256003,\t7.4857563167,\t-84.0517801108,\t-38.0837770598,\t\n    -35.8795970303,\t42.8800471728,\t166.4026567891,\t-45.2596493921,\t88.1539836076,\t-84.1569136898,\t-44.8705239205,\t-112.3135915515,\t\n    76.9816499152,\t53.5768624176,\t-106.3408650991,\t-17.9979586956,\t81.7718580719,\t144.1648782825,\t45.2239065385,\t-50.2094826104,\t\n    -14.6605194110,\t57.1970152560,\t-23.4826391767,\t-27.1562674435,\t110.9001894435,\t20.1915788307,\t12.1467090660,\t16.7983072789,\t\n    -34.1257273005,\t129.1575417206,\t71.4391384766,\t32.9596044485,\t-41.1052127849,\t-48.0458686558,\t0.8731114023,\t-34.4439480200,\t\n    29.9076993320,\t68.5240097999,\t78.8047480081,\t10.3252970915,\t0.3515809390,\t73.8823954039,\t44.2008862678,\t72.6737200450,\t\n    -13.3069689810,\t-25.8971947295,\t16.9120909673,\t53.2843809510,\t49.1074875555,\t-68.1235965933,\t13.6903318056,\t-14.7046510890,\t\n    1.6746416299,\t-108.5007545621,\t-83.0295464360,\t-3.7524687555,\t-14.4088682542,\t-138.1935697707,\t-19.3679003715,\t38.9142288940,\t\n    15.4764570005,\t-2.9192486908,\t43.9598275111,\t-34.5312517096,\t35.8385011650,\t4.4981476232,\t-1.4454488029,\t71.1184852411,\t\n    41.7476890934,\t37.3368072067,\t57.4916368307,\t-32.2735282446,\t-27.5080391474,\t95.6899861001,\t3.3351685514,\t-111.9822940053,\t\n    -12.5463248694,\t39.8668835259,\t-14.9822708781,\t66.9305141224,\t-197.7731587893,\t27.4387742251,\t-25.6710982597,\t13.5207634746,\t\n    50.2848552534,\t-30.0418256053,\t-14.1615451430,\t68.0658302876,\t-62.0642327357,\t4.6615575342,\t-26.7572433532,\t11.5079596851,\t\n    -57.9473530742,\t-26.1405191819,\t70.4111692091,\t-95.7407842078,\t11.2517762488,\t100.2275069926,\t85.3653529140,\t-24.6494053691,\t\n    123.2413542720,\t21.3040690490,\t-192.3747625981,\t215.7057282840,\t-29.9835524152,\t-44.6302014167,\t-66.7559203920,\t25.3479943282,\t\n    126.6443711753,\t-36.7355336011,\t29.0095532019,\t-73.2298015066,\t-5.8223869363,\t11.9451128557,\t-17.3486371102,\t50.0400958000,\t\n    74.7145985867,\t-5.6976135921,\t-73.1829497279,\t-41.0455578170,\t-3.6001825808,\t87.1662509692,\t-39.1602156793,\t-41.5727119025,\t\n    -18.2071856447,\t-3.5383471563,\t28.3732842092,\t-39.9931298054,\t-100.6902365532,\t130.2869328357,\t3.2473773399,\t16.8387727072,\t\n    62.0055283576,\t97.3165730637,\t-40.8530624130,\t-12.0491532592,\t88.5164060609,\t71.9344891420,\t-69.7440181255,\t-51.2866033193,\t\n    -18.4687017548,\t55.7346964760,\t4.4872782938,\t-6.8942183136,\t8.4263132246,\t18.9149616636,\t58.8710265459,\t-17.7415034047,\t\n    5.2927869482,\t-20.1947447871,\t-36.6005304743,\t-67.2193634013,\t-72.8315856033,\t139.7216799221,\t-2.1966369437,\t83.5189402317,\t\n    56.0625496338,\t57.0100118287,\t-9.0542670182,\t58.3126231383,\t-27.9316577822,\t-125.8146267036,\t77.1179593561,\t99.1690581411,\t\n    7.9703321651,\t77.3501770612,\t32.2815633360,\t-22.9643212257,\t-19.8653554993,\t55.4837678464,\t10.8929872542,\t-1.2452363726,\t\n    83.8477026208,\t-88.9116003335,\t-44.6537617432,\t11.0099195187,\t-33.7736999447,\t44.2766753802,\t-27.9436876110,\t16.3088473703,\t\n    45.6564921145,\t18.9199921114,\t77.9125802822,\t11.2795611793,\t42.8571148149,\t32.4846418196,\t-2.4014655924,\t38.0598657284,\t\n    86.5222537258,\t-3.1333316838,\t11.9141807475,\t-2.4712869557,\t47.8938116812,\t35.4899843246,\t42.7527497689,\t-31.3225362175,\t\n    -6.6842304948,\t-133.5691427053,\t-58.7043550030,\t73.3503470631,\t-21.8739658759,\t70.3809855428,\t54.6113598087,\t9.7384709498,\t\n    -141.2343505501,\t27.9788413890,\t-11.7574685128,\t43.1029141674,\t-52.0045609619,\t-83.4803133516,\t-57.2548505744,\t52.8114424452,\t\n    -30.3458066567,\t39.2081027670,\t-49.8609769923,\t68.8871987820,\t45.2005862545,\t21.6377482234,\t-9.7576398020,\t6.4878505019,\t\n    32.1853134925,\t-25.1448500950,\t-67.2234044003,\t103.2446765175,\t80.2584971166,\t-68.8710032588,\t-4.2141933840,\t23.7223935599,\t\n    -35.1939439880,\t63.5237841071,\t-34.7833780059,\t74.4175406287,\t83.0373073374,\t-28.9674699605,\t-55.2233708526,\t64.2239365944,\t\n    6.0025041292,\t-22.2149197781,\t29.1954442931,\t-35.5058495139,\t-76.9452133862,\t34.6912996871,\t-51.1833830895,\t-49.5201882461,\t\n    -7.6144484864,\t116.8549382108,\t-51.5005710672,\t-20.6783396225,\t-97.1232859994,\t-6.8466290384,\t59.0410141864,\t-58.4613374526,\t\n    74.8248237895,\t75.2714612487,\t23.1797286361,\t-2.7866665487,\t56.4240759131,\t60.2417537402,\t-73.0762506733,\t-136.8520754748,\t\n    27.3836498800,\t-29.4294016791,\t58.2863141991,\t-15.7937240880,\t12.9792729458,\t-28.5369095369,\t-179.3559659693,\t-99.4879434608,\t\n    -61.2402838269,\t-24.4763496292,\t-22.6643525306,\t24.4590321501,\t98.4299041736,\t-4.5624798871,\t-59.3191765161,\t139.6951240672,\t\n    27.1672202072,\t-70.9192843433,\t-18.1408458038,\t-71.0174628677,\t-94.0725395768,\t36.1985844031,\t-3.4636448040,\t-39.1453082944,\t\n    40.5244522827,\t-70.0489070024,\t-63.9181488122,\t-4.7099187837,\t-33.0844286599,\t31.8161456785,\t10.7843286816,\t10.6387816259,\t\n    -76.2043252282,\t57.0254136124,\t151.4166547223,\t-50.6728456416,\t-82.4408455004,\t-55.4932097322,\t15.9101565878,\t15.2777050730,\t\n    25.0235583008,\t44.4425994137,\t36.1343164402,\t-24.3058262644,\t17.6630395266,\t-62.6364549232,\t-40.1045046999,\t-3.8451609954,\t\n    -107.1141779059,\t-50.7347331775,\t90.5704587068,\t-59.5674315899,\t-23.9371281478,\t-59.3738147851,\t-29.5056040676,\t26.2990433281,\t\n    -33.2953407976,\t-92.2663237623,\t-25.5442696217,\t-81.4532880743,\t42.7268859073,\t75.7986045911,\t-31.6772573595,\t86.8684653590,\t\n    -61.5786934151,\t32.6176822340,\t-23.2321244436,\t64.9301578846,\t-6.9691761031,\t-51.6553861957,\t-35.7877314260,\t-41.7444743167,\t\n    108.3757802905,\t-29.4164640263,\t-18.4714648512,\t-82.4131988957,\t-52.9499171074,\t-35.7687451877,\t-80.5212521683,\t40.1558185933,\t\n    80.9139882507,\t0.4170638335,\t-52.4487435334,\t-69.0227900586,\t55.0806458770,\t120.0318572894,\t-11.5435935376,\t-19.2791170530,\t\n    -3.0257623065,\t99.3958103659,\t-19.4539047939,\t-54.6600691116,\t0.3603986276,\t9.7863628822,\t-6.2358897021,\t-17.1143829423,\t\n    7.9650683489,\t-27.0465697723,\t-45.9436029022,\t-36.3352947671,\t138.6511673472,\t47.8115852675,\t-10.9612291181,\t3.6500932948,\t\n    -19.3477824988,\t28.7386285394,\t36.0065971791,\t-43.0822654618,\t-43.9342369010,\t-32.1210042559,\t-70.4441432492,\t-94.9421856551,\t\n    -120.0449164046,\t-65.9803176675,\t-55.4329926958,\t-19.2914305328,\t-89.4078846739,\t-30.1962221428,\t61.2293835442,\t93.7229961578,\t\n    -8.3020564344,\t-6.8386266801,\t21.4975406760,\t-15.0903918291,\t94.1044891682,\t-57.6380884034,\t16.2327931770,\t1.7957525957,\t\n    74.7073719610,\t26.8908104028,\t76.5155513347,\t-9.6822139478,\t-8.0655893270,\t-48.1277441855,\t9.8408952157,\t-58.8121626519,\t\n    -80.9751650730,\t-48.3302191201,\t-27.8207839032,\t-46.1625778067,\t-33.5567739103,\t-109.4477338693,\t-168.5366005131,\t156.7874587017,\t\n    8.5940307118,\t-21.7826451231,\t12.4113841726,\t86.7850811554,\t-77.1019195511,\t32.3109085681,\t86.8849726762,\t-41.2571797820,\t\n    19.6006773321,\t31.2507123002,\t41.8106047980,\t101.5445768198,\t51.5335715773,\t-185.1354355374,\t-11.0825031251,\t-20.9631685642,\t\n    111.1640505949,\t162.0618916128,\t3.4498453592,\t44.3198102843,\t0.3505982148,\t21.3783009799,\t24.6853218910,\t-20.3399016930,\t\n    59.5923416012,\t79.4334110932,\t-78.7723219668,\t-47.0670061218,\t-128.3114982420,\t92.4340029556,\t69.1584534808,\t114.9437583487,\t\n    -64.6124706594,\t-10.2486262273,\t-1.6622261589,\t50.9747480555,\t-8.1203432808,\t32.4414442459,\t84.9091411511,\t-17.9846748341,\t\n    -14.7172591486,\t-27.4203006303,\t167.1594042893,\t-25.3372000386,\t-27.9888042652,\t-3.6956600039,\t117.9111608126,\t-25.4132038904,\t\n    -42.2923300579,\t-95.1602974120,\t19.2625367900,\t-15.8766055664,\t-8.8117613783,\t1.1964763941,\t-111.4791843369,\t81.5745053342,\t\n    8.7527287102,\t34.5972180603,\t83.9461794412,\t50.2350993915,\t-19.7720255327,\t53.8516694944,\t-104.4119088056,\t30.4513918056,\t\n    -62.7649123620,\t-29.9513577664,\t7.5719075796,\t61.4944149393,\t70.5737863978,\t-40.0358428522,\t-17.3629194898,\t-10.7304848224,\t\n    -60.1358805635,\t46.5402792333,\t-77.1330673251,\t-86.7606311649,\t22.2000151841,\t-33.7006112473,\t-139.9917432329,\t138.1567785372,\t\n    18.7396823616,\t28.7669927272,\t28.4680008506,\t7.6199316893,\t121.9175024680,\t32.1111318802,\t-58.2808504609,\t-30.6563801124,\t\n    44.2365370915,\t-83.4728239003,\t64.0531120026,\t128.0019381122,\t-40.3205961091,\t-62.8035436979,\t-15.6689887241,\t-6.6975189783,\t\n    -46.1591606362,\t-42.4253060115,\t-71.6473279718,\t-75.5337463898,\t87.5058573621,\t-66.6145644703,\t87.4635891068,\t123.2852237793,\t\n    -0.9887550633,\t-9.6307226422,\t-67.4478350330,\t-86.5892204275,\t-79.0537798176,\t-107.7863332665,\t-8.8330234138,\t38.9605563706,\t\n    15.3133829507,\t-54.4231514572,\t26.7406100788,\t48.7962706395,\t27.1443310148,\t-2.7894277223,\t7.1469114703,\t-57.1657209995,\t\n    -90.4215183139,\t76.7797176290,\t-19.2239853483,\t-26.6041739391,\t139.0298606143,\t-36.8837362822,\t-57.7952841108,\t-135.9897057237,\t\n    4.3453829113,\t-5.1660378716,\t-58.7046205842,\t58.4176557979,\t-120.5866252228,\t34.2409281832,\t105.6219016158,\t-28.5323871865,\t\n    11.0598518159,\t-26.3069115094,\t87.6681723683,\t70.9393661419,\t54.7982850455,\t4.0477327154,\t-89.5568838538,\t-32.8993562613,\t\n    -45.6708773935,\t-52.9428269719,\t14.4126898406,\t39.2142079784,\t-92.9447367684,\t-23.6977408094,\t8.2507547267,\t77.1071852874,\t\n    24.1675316234,\t-159.7349628761,\t-13.9551749672,\t-67.9761692092,\t-30.0410317845,\t-24.6060572570,\t52.6662467162,\t53.1957816963,\t\n    16.7992222346,\t51.7621999618,\t-9.2959681635,\t-22.0395789118,\t63.9887836127,\t-15.4794522124,\t-59.9041019732,\t0.5489176194,\t\n    78.6395685166,\t134.5366929272,\t-6.8712023878,\t-25.4182816023,\t-94.3014920612,\t-120.7349462621,\t15.0267811895,\t64.1156824538,\t\n    72.0730568718,\t36.1969392849,\t37.8409183719,\t23.2904067106,\t-65.2310984397,\t-174.2644489990,\t-19.2228520790,\t27.4717232382,\t\n    -59.1645079992,\t-37.9473607579,\t49.8799507321,\t-79.0510884528,\t-28.3803465367,\t20.3721781567,\t-0.4261835910,\t-35.8489167205,\t\n    105.4583901558,\t59.5722685004,\t-61.0197468314,\t31.9348090719,\t-71.9443219028,\t58.1935525762,\t24.2368907755,\t11.3281193558,\t\n    73.7442066031,\t-58.2463274873,\t62.2364089748,\t-22.1662416753,\t80.8054311590,\t1.1123457543,\t65.0742762981,\t34.9247990206,\t\n    104.0897515469,\t-17.1726872127,\t-55.1967923359,\t-17.3070263921,\t-113.2466807440,\t-34.0273063199,\t6.0065175641,\t-73.2050951521,\t\n    -46.9298900117,\t42.5522795079,\t89.6038769626,\t-13.3758161339,\t20.0379230047,\t44.3053936382,\t38.7871513797,\t-96.5643124661,\t\n    -164.2750976118,\t-37.6742328774,\t-20.7444978754,\t-57.5075374112,\t-82.3747950875,\t-148.0525559565,\t23.1385046849,\t6.3810748790,\t\n    26.2079771260,\t-76.0359611120,\t49.8590173195,\t-55.6975098542,\t63.1577456002,\t131.5982420723,\t46.7778921481,\t-60.9806982634,\t\n    71.7495044841,\t4.3127212188,\t-17.6552774593,\t-32.8038637189,\t-77.8751385740,\t-38.0621029989,\t-10.6340276560,\t16.6596173712,\t\n    -67.3032141305,\t-8.7994716202,\t50.9412272541,\t49.9717453353,\t-43.5703597564,\t-49.6853674924,\t-95.7205166501,\t40.8765465419,\t\n    14.2287448407,\t-27.0614166095,\t38.0714114583,\t-35.8412172130,\t-78.5197707657,\t-25.6825367235,\t-0.3120778923,\t-13.1591053910,\t\n    -13.3423425539,\t-88.8689993653,\t-141.9490353220,\t15.3348435554,\t-1.2351271212,\t-12.5689032236,\t63.2692606259,\t92.6940600989,\t\n    30.9761753348,\t-14.6354581107,\t50.0664499041,\t22.2230304376,\t-128.4011635209,\t26.1869851104,\t8.3304256738,\t-46.1344839419,\t\n    68.3461812478,\t143.4759863425,\t163.6742650341,\t55.1856555010,\t-60.1365810845,\t74.3895957960,\t40.2227984754,\t-11.7394255168,\t\n    55.5453683738,\t15.9202002202,\t-113.1213822368,\t-85.7280046039,\t-39.7263088573,\t-2.5339105246,\t41.0492866970,\t45.3079876954,\t\n    -99.6701239491,\t-29.6980232319,\t18.5340063985,\t51.1922973890,\t-79.7372970167,\t-13.2393250851,\t14.7419728226,\t-4.8211133780,\t\n    -35.5172595564,\t99.3966537203,\t20.0590181900,\t-12.1081446475,\t-61.9594867060,\t-72.2256752476,\t-13.2936631274,\t128.5345002108,\t\n    -71.9401693778,\t31.6533870911,\t50.8594991278,\t25.1808453324,\t-33.5538293275,\t-42.3935228996,\t-20.8053274690,\t16.2131527996,\t\n    118.9172555234,\t89.5930952748,\t-65.8274795934,\t47.3384633282,\t122.5406901256,\t-66.7549348343,\t-54.9185037426,\t-68.6601805746,\t\n    34.4675543582,\t104.9323617738,\t-57.0880010038,\t-43.1248502597,\t-2.0601370211,\t44.1682882967,\t-89.1023577428,\t-35.5506312941,\t\n    -10.5170036504,\t9.6779403375,\t78.9291026934,\t-31.5855420521,\t92.7949646880,\t31.3559964123,\t12.3617000392,\t69.2326522660,\t\n    3.9119449943,\t-36.5330788106,\t-44.5936841393,\t45.7052258609,\t10.6224387668,\t-24.1159570162,\t-21.0651270325,\t-84.0415379963,\t\n    -130.5857682422,\t13.6064059568,\t-33.6699927959,\t-26.0082360265,\t29.6219265142,\t-47.8318612795,\t19.0742065634,\t-52.3410098996,\t\n    32.2488186667,\t8.7112925773,\t68.7336792115,\t23.7944448682,\t99.9050365463,\t8.6093548114,\t59.7174217811,\t23.0796589837,\t\n    -113.0722961466,\t3.5971633707,\t-6.7890993972,\t30.6764504710,\t-41.1295367209,\t-24.9164165484,\t99.2386401122,\t113.8333026527,\t\n    -38.9562599796,\t-55.4108562109,\t-94.4601804558,\t-31.7511549793,\t200.3462283262,\t12.7517487160,\t-42.3353937717,\t-51.1991446233,\t\n    78.8520856510,\t20.4131030912,\t21.8102532347,\t-51.7944815361,\t-21.2191019005,\t33.8300001131,\t135.8377663961,\t-31.0221091170,\t\n    65.7730407411,\t82.5117419278,\t27.7816244812,\t-10.6724454248,\t26.6179164033,\t64.9214169340,\t44.6475686302,\t-29.0683019634,\t\n    2.0965746914,\t-10.0085359932,\t-29.9021362947,\t-38.5046703557,\t-23.5486473509,\t-44.4560504617,\t7.4417079380,\t47.2393973843,\t\n    37.7344798725,\t-13.6323296763,\t-28.2713540400,\t-12.2494841889,\t-113.6616109440,\t-4.4061813255,\t-84.4155850685,\t18.2000114801,\t\n    -37.4375420019,\t-15.0025190330,\t33.1826857536,\t-7.7672966949,\t-41.8570537108,\t-61.9447815201,\t-20.5430470077,\t42.1225812423,\t\n    -4.9372231166,\t80.1718433860,\t-21.7502429381,\t-107.1994683407,\t39.0450370860,\t-13.9605768571,\t57.8271065756,\t100.7288025395,\t\n    106.0257089013,\t-94.5099462535,\t-52.2425831475,\t3.4251117300,\t37.1163293092,\t20.3088713026,\t27.9957748777,\t55.5881357120,\t\n    -49.9425573612,\t-74.3122437274,\t-45.4384442770,\t28.0519415044,\t-57.3995353506,\t-34.0343398092,\t39.4842857378,\t-29.4934441942,\t\n    -42.2931922612,\t75.5085698437,\t-9.1579964746,\t-88.0001960638,\t32.2921191297,\t130.2295801645,\t-77.3690707106,\t-26.5699179687,\t\n    -98.7746128367,\t15.1111986863,\t84.2856839075,\t-91.3321816766,\t75.0539365102,\t-22.9577135979,\t-58.2687890669,\t-16.4158023440,\t\n    -143.1190919220,\t45.6864012367,\t-148.7549620241,\t-87.1075640764,\t-26.5968533502,\t-69.7944158144,\t-34.2978456494,\t35.0769663698,\t\n    4.1465107386,\t69.0864439105,\t22.4789950234,\t-48.0182401768,\t-14.5783104039,\t-61.0550243844,\t-4.2380948973,\t-194.8804104528,\t\n    123.0819765947,\t48.2017401505,\t78.9508457466,\t-99.9736614294,\t32.8340209984,\t-1.0245301508,\t-17.0041736706,\t35.4641249127,\t\n    -33.3575407148,\t192.9072183682,\t-42.9604868802,\t-51.0374996711,\t77.1464797096,\t66.0548981845,\t-61.4282764621,\t-114.3126571027,\t\n    21.1118181552,\t85.5335633765,\t27.8488718530,\t-62.6421354515,\t-57.3557048619,\t41.6670106942,\t16.8928119140,\t-40.2432649132,\t\n    0.6390713008,\t-10.1237727904,\t52.7534146685,\t2.9801643945,\t-11.3804175086,\t119.2039503951,\t46.6809821778,\t84.8768259311,\t\n    29.9865105951,\t57.8288066379,\t107.2625212828,\t28.1456885969,\t-120.3755566725,\t-17.3802551503,\t-40.0564653651,\t56.8407045846,\t\n    1.6793816918,\t-109.5072716396,\t-52.8897837730,\t85.9453300669,\t-20.0298903469,\t52.5871200627,\t13.0362762617,\t92.2325099999,\t\n    -6.5198193020,\t-83.9036654607,\t58.5211535567,\t81.1131330707,\t57.7324249784,\t126.0368845782,\t-79.8586002513,\t-127.7584493863,\t\n    64.8736188900,\t-10.6521288269,\t-0.9851623286,\t-92.3945133485,\t7.5244215841,\t40.5886593287,\t18.6445609457,\t19.1117310556,\t\n    26.5640714899,\t22.8091685027,\t94.3470412324,\t61.6764800801,\t10.8760679684,\t-7.9240673383,\t12.5919458396,\t85.0254983280,\t\n    -15.7186492832,\t30.3331627482,\t-136.2555384486,\t14.2342767573,\t-52.2232864172,\t-49.0105238845,\t16.4028777072,\t13.1934114315,\t\n    67.2005286948,\t-11.5431941527,\t-126.8761059118,\t28.4325197274,\t-5.2730565073,\t-154.2913406142,\t83.8362133106,\t-13.0557850235,\t\n    -24.0425722731,\t-9.3049739156,\t-91.4408491189,\t38.7967852392,\t-54.4364475655,\t-50.1728478153,\t-91.7628978624,\t-92.4046791871,\t\n    72.6594194204,\t36.9149973552,\t-89.5520370642,\t-73.4541912166,\t-83.1026853287,\t55.8083893384,\t-11.3360468605,\t8.0892870502,\t\n    21.3963536134,\t-27.2804196146,\t-86.1680209134,\t11.1581691823,\t-68.2490961721,\t63.5960852067,\t-40.1782672381,\t-50.7929323122,\t\n    2.4820154810,\t35.6921504427,\t-75.6795637705,\t8.6054661804,\t-31.1168448045,\t109.0955889455,\t-76.2488069978,\t5.0199927782,\t\n    37.8749455521,\t5.6982241556,\t27.3294929004,\t-120.2473221866,\t7.8826650171,\t111.0369524326,\t-43.8497436507,\t-66.7312430666,\t\n    97.7440071817,\t49.1570048378,\t-117.8025876335,\t168.0477524482,\t-55.9600221068,\t11.1068434425,\t14.0513599858,\t-47.4087780504,\t\n    100.4504374216,\t6.1074714956,\t53.7678384486,\t24.4635321166,\t-6.0835375669,\t-64.3592936645,\t-25.7780083698,\t-83.3530662624,\t\n    -124.9544432106,\t37.5615380015,\t-19.2986773913,\t-110.0015552689,\t121.7589202263,\t4.3256928319,\t-101.6571157133,\t85.6785418597,\t\n    16.0474362836,\t-31.9024530060,\t-52.6323741801,\t-3.4440544641,\t77.7351607744,\t-10.1741553840,\t48.3997106271,\t1.5020725442,\t\n    -0.2257709330,\t68.9623795901,\t9.4286729097,\t-27.6379770488,\t-3.9912724152,\t44.9954087833,\t-18.7057514605,\t-14.7638693232,\t\n    -1.7397189655,\t68.2217569488,\t63.3439223434,\t38.9512814941,\t-25.6642624084,\t54.1881119719,\t-92.4999870174,\t-11.5788876807,\t\n    69.0279357511,\t55.8205676574,\t-101.8852049100,\t30.7429453237,\t-58.7382928803,\t89.3969596003,\t-44.8903243228,\t2.0422419096,\t\n    41.1330103123,\t-88.6692130110,\t25.4298182542,\t0.8899898304,\t-53.5428328048,\t-11.5755725623,\t-28.6132997670,\t-13.0337245663,\t\n    52.8092078154,\t0.0517964686,\t-138.4959804685,\t31.6788581756,\t-16.6154597478,\t156.3340569922,\t93.3010192905,\t32.6407669098,\t\n    112.1297440517,\t-35.7144834638,\t6.5534121327,\t128.2382195529,\t56.9609192462,\t-52.8328776011,\t-65.7950928061,\t-13.3541979410,\t\n    34.2814367341,\t26.0764152312,\t52.6477198183,\t-121.6672795964,\t53.8959085384,\t-64.8464505733,\t-6.6989481273,\t-164.9991018529,\t\n    -12.9977296783,\t92.2198340788,\t-58.9488062177,\t-17.3136354080,\t-15.0065268104,\t82.2346850297,\t-52.0081326057,\t-31.8754548129,\t\n    -36.3987954967,\t53.0154983421,\t27.4015508471,\t32.8268124997,\t113.6916804444,\t27.8095494681,\t-55.1665416696,\t-16.4156645469,\t\n    -42.1439424759,\t38.5634363918,\t-64.9312441199,\t8.3884871895,\t32.9516167667,\t-0.9395063314,\t58.4852381959,\t101.7397916741,\t\n    -104.2729685077,\t-14.9331020781,\t64.4379817410,\t-5.6149495442,\t-69.4590669042,\t128.5957740501,\t61.9917796337,\t0.5819416032,\t\n    -69.7790071374,\t-1.0381159167,\t20.1469541660,\t13.3351412916,\t-104.5227876095,\t77.5294242919,\t38.0641940199,\t-56.7585742367,\t\n    -9.1765854459,\t40.3713276531,\t72.6358559436,\t-14.4449566608,\t40.7675499413,\t-93.5568526062,\t55.8238199978,\t-57.5895140577,\t\n    -82.1737195067,\t14.7561780278,\t-155.1331660454,\t-3.4741158421,\t-90.9790829737,\t-67.6576031648,\t58.4505812875,\t-127.2647404391,\t\n    -52.6551154593,\t21.5600272148,\t77.4232312163,\t-100.1093952602,\t50.2042564606,\t11.9885332900,\t34.2641380301,\t-51.6644779651,\t\n    -14.4960161445,\t67.8496081597,\t25.8195812544,\t-38.8690931971,\t-116.1556251224,\t-68.6610388123,\t64.4060064748,\t-4.5039590319,\t\n    45.4866635009,\t60.6472857766,\t121.0539185194,\t4.8340889914,\t-37.3668396220,\t-52.4747123096,\t7.6362446201,\t-39.8862759852,\t\n    8.0139163506,\t-19.7768070929,\t55.9705429761,\t-77.6639159836,\t-9.0747973730,\t87.1299271010,\t-56.0307413158,\t22.0261066362,\t\n    -21.4877846313,\t73.7508019333,\t90.2727567859,\t-31.8064851485,\t35.5698971534,\t-123.1337229178,\t-115.6888113061,\t40.8859379019,\t\n    -45.9826093754,\t-55.6481101801,\t-131.3553753176,\t30.0527360996,\t21.6632646479,\t98.0105924807,\t-39.4117175619,\t-101.5958309784,\t\n    2.4560883180,\t47.0714688572,\t-30.5516644873,\t-123.2193558202,\t-81.2276105808,\t-35.2333787774,\t131.7553150138,\t74.1337100485,\t\n    -111.0162621392,\t-50.1520236082,\t-176.7180780270,\t43.6099370000,\t-99.0730647751,\t100.6783161314,\t1.5420581129,\t2.5889162904,\t\n    97.2407277690,\t5.5204254866,\t72.0939017458,\t-100.0077732933,\t30.1572971400,\t19.1994437619,\t-83.8095901131,\t-67.5983524523,\t\n    75.2270686194,\t80.9252084407,\t42.4611462166,\t-75.6376932185,\t-7.5820680566,\t-47.2137370820,\t13.3547714942,\t-49.2227272764,\t\n    -101.2311839023,\t-89.9953284490,\t-59.5627585772,\t3.5045401284,\t87.8927289585,\t-45.7826497344,\t10.7894222301,\t-34.2218214372,\t\n    19.0101005894,\t-79.7412295513,\t-40.7129535835,\t34.9745871635,\t98.5275860299,\t-16.5088968676,\t66.3460699225,\t-133.5365249144,\t\n    -41.4407293928,\t-15.3419046733,\t88.7195803357,\t5.1871004832,\t-98.0467809656,\t-14.1239743026,\t-1.3510821103,\t-38.6189020004,\t\n    114.8822422747,\t65.5094003215,\t88.0532368083,\t-59.2540330178,\t92.9429540023,\t21.9133947331,\t-50.7728654894,\t-36.7011682133,\t\n    -16.9217654808,\t-110.7749962658,\t16.6126865137,\t116.3641432033,\t51.7192473353,\t9.8619033750,\t57.3047648863,\t-21.0275512361,\t\n    66.8618463429,\t68.4016463402,\t13.1978892272,\t36.9294559769,\t79.3415169994,\t-74.4235076906,\t-105.9928928366,\t3.5485737877,\t\n    35.3701917014,\t11.0155135724,\t-42.5279468110,\t57.9138782373,\t32.4492657117,\t-2.5260836533,\t8.2835364235,\t-45.2229140182,\t\n    29.4655763679,\t20.5830184405,\t-92.7731928028,\t-88.2155574314,\t-13.0181590718,\t-67.4752432987,\t12.2964799268,\t-134.7795554776,\t\n    132.5177768161,\t86.4796490878,\t-170.6768976365,\t-53.7059277336,\t23.6295211743,\t100.0865623366,\t134.6726479190,\t-17.6813528616,\t\n    -67.3925719582,\t-12.1986138778,\t-58.6920640259,\t-46.1769630250,\t14.0012237071,\t105.2386807000,\t47.5923010830,\t-13.0446195549,\t\n    21.4905427079,\t89.4924853541,\t-1.6294776664,\t7.0507819885,\t88.9962812504,\t-14.3836298512,\t-14.5755536250,\t-158.3719830729,\t\n    -71.0421641105,\t9.1510759791,\t3.8541666430,\t46.8853635172,\t-115.4505016964,\t112.1915084832,\t60.0579773251,\t-19.3568210670,\t\n    134.6457467896,\t-127.7704101409,\t96.1687814173,\t139.4223376055,\t-16.4889074247,\t8.7407981479,\t-31.8653460842,\t-86.1989364296,\t\n    6.3138143769,\t29.9691806857,\t10.0215115097,\t21.7539979367,\t-10.0119096873,\t-32.7662562735,\t-46.7114278488,\t-32.0468371287,\t\n    -104.9863919627,\t164.6868132811,\t14.2837511902,\t103.8122395985,\t-38.3195610630,\t-66.2071289114,\t-42.7348265210,\t8.1247796770,\t\n    -44.7642634909,\t-99.5977533202,\t-62.5669299697,\t-154.4713244845,\t-54.2004565831,\t-21.0505396466,\t-7.2304668445,\t-63.1457522254,\t\n    121.1292664630,\t-41.2451342849,\t-100.3661302819,\t-79.7893865863,\t2.9782522632,\t28.1233518579,\t-45.4712133921,\t102.1080223649,\t\n    64.1668281113,\t-103.7410276784,\t106.7427715753,\t79.6231477604,\t20.5960195618,\t42.6351844699,\t-8.0432553021,\t-20.9274320455,\t\n    44.7322739383,\t-58.6239231825,\t21.5430765926,\t-32.7159508398,\t56.5825012360,\t-99.4275633192,\t-102.9101109727,\t-83.9315736318,\t\n    25.8630456141,\t-52.7504372152,\t29.5673565938,\t48.9111232224,\t41.5578130085,\t-14.3606917295,\t-2.2040972437,\t94.4661907548,\t\n    132.7457583187,\t55.3945646514,\t-16.7731026022,\t-46.5710214158,\t-29.3542289267,\t-14.2923094674,\t23.0425873685,\t-15.5814746488,\t\n    22.3570974017,\t-42.0180359242,\t-20.3430155274,\t-68.6338886669,\t-64.8088612108,\t-24.2988048174,\t-23.5299375491,\t98.0364255786,\t\n    3.9778504115,\t65.6849914578,\t-1.5168129555,\t-4.8287346639,\t142.1453945317,\t78.2378704371,\t-57.3720730586,\t-19.4585389336,\t\n    76.2735042603,\t-43.9459949675,\t6.9426433355,\t-43.1451402122,\t-18.0751403348,\t-34.1054109171,\t55.1204864738,\t115.4516445351,\t\n    6.5333541873,\t62.4906581904,\t29.9692177776,\t-33.2287635647,\t-18.9268908378,\t-63.0926292852,\t-111.6323734820,\t-10.8864814281,\t\n    14.4649132510,\t-25.6871888082,\t-33.4308400890,\t23.9756688469,\t52.4567038054,\t12.8701945894,\t-20.5116135858,\t-17.4241576687,\t\n    -11.8606594870,\t16.8816614097,\t-18.7270784248,\t-6.2425768906,\t48.5175154819,\t1.7426978337,\t-99.3023967479,\t38.5650914417,\t\n    -61.0127172140,\t42.7784858845,\t-7.2257854969,\t2.2847466905,\t-99.0066793854,\t60.4060120207,\t48.8064141188,\t-72.4258965295,\t\n    -50.7390478551,\t95.1299230407,\t56.4763356354,\t35.4471698843,\t60.4632441624,\t-95.6600449901,\t55.9445226564,\t-28.1942324306,\t\n    26.9826142327,\t-71.4404566440,\t15.9270065277,\t-86.7110877229,\t-80.6677402549,\t0.5529947734,\t-39.4989884635,\t35.7914768080,\t\n    -22.6398243670,\t-33.2598314085,\t-25.7467291233,\t16.6863716736,\t80.3468995127,\t-22.5068845945,\t23.6096621616,\t-99.4288845571,\t\n    29.0662266127,\t3.1265642936,\t133.4725188269,\t10.5889496669,\t78.4289320034,\t46.4143031925,\t97.1026760967,\t-60.1768585008,\t\n    75.4045199491,\t14.1399143092,\t-87.6608741602,\t96.8571208381,\t36.1952990642,\t119.9462706822,\t51.7941617293,\t-10.8814477399,\t\n    66.0010885597,\t68.6769630212,\t70.6032262575,\t-78.6614013388,\t-52.6711668148,\t29.9772317807,\t-67.0938602216,\t-42.3207515671,\t\n    -0.0486165038,\t-15.4758823937,\t56.6129710458,\t-54.2575866392,\t111.9253009797,\t-47.5236184222,\t-95.6434531533,\t24.9411667600,\t\n    35.5636297407,\t-11.3487509511,\t99.6377899302,\t16.0125061627,\t-35.8881400079,\t111.1220549938,\t-2.9395719970,\t-41.6388550114,\t\n    -33.4638181727,\t109.8808145106,\t28.1021441950,\t118.2701610217,\t51.8151816796,\t-19.5803207598,\t-89.9262515893,\t-26.6044307189,\t\n    40.7320823989,\t-19.2602062235,\t62.2560193625,\t85.9346547334,\t49.7871555519,\t-20.0313162309,\t-8.1831982988,\t69.5820284092,\t\n    49.2993116756,\t34.9185452172,\t74.7523126024,\t145.1939754190,\t7.4232669832,\t-4.5344572697,\t34.0472547752,\t41.4294110612,\t\n    -123.0758971920,\t-43.7705297332,\t121.2820069260,\t0.5435048718,\t77.7764299214,\t59.6928983371,\t-27.6522675298,\t-7.1273383508,\t\n    26.7210269180,\t4.4630452796,\t-81.8607570684,\t-26.3402136551,\t-95.7197230242,\t-7.3219091557,\t-82.4289458596,\t77.4381232638,\t\n    65.4006110025,\t36.5844708644,\t66.3796224839,\t-11.0118557858,\t61.4481921771,\t8.0694380153,\t59.4652425227,\t-24.3765004167,\t\n    4.9649042432,\t-28.5624154309,\t-78.5623599502,\t17.8514494843,\t-20.9756518143,\t-10.1916814040,\t11.5732283207,\t57.9552418906,\t\n    -45.7612949110,\t-20.9482951666,\t36.8160063004,\t-45.0567155877,\t63.7098701462,\t6.5938197429,\t46.9692949757,\t-83.3299455774,\t\n    -88.7653437148,\t118.8655843800,\t93.1921951705,\t-18.1354337452,\t-40.1074391033,\t44.0852297241,\t-41.1588703642,\t-105.1428083912,\t\n    -7.1420535313,\t66.5491789931,\t28.7643638361,\t-71.3690563573,\t50.9039393300,\t93.8257368698,\t22.3478174946,\t-109.6001863096,\t\n    64.0649017243,\t-29.4574274496,\t-44.5473845748,\t-132.8280128599,\t-52.8587533053,\t80.0084510351,\t21.4678106815,\t48.4383573310,\t\n    56.6158184924,\t-72.0365616804,\t12.9911383411,\t162.8295288963,\t55.8780535954,\t73.1821757559,\t-100.6826313435,\t23.4262138290,\t\n    -0.5753332881,\t-21.5175209047,\t-138.1106268547,\t-80.7925993001,\t-28.1663114958,\t0.9831816192,\t30.7923417673,\t-51.9827613979,\t\n    -10.8794388756,\t54.1022652480,\t11.1686073161,\t-44.0592484786,\t21.6987012718,\t-42.2412255611,\t-3.4936004646,\t-51.6421714543,\t\n    15.8711886614,\t-40.0043968804,\t-6.1590232957,\t-65.9457642489,\t59.0569838977,\t7.4295907490,\t-12.6833895574,\t-72.2928299923,\t\n    -199.7835511043,\t-71.1580901042,\t-12.8895530614,\t13.8448156167,\t27.4808788351,\t-46.2542221592,\t-3.5153348434,\t-176.2019445127,\t\n    -48.6783165219,\t70.2296726615,\t111.7340160335,\t-60.7655899218,\t-138.1081385724,\t-35.3974788626,\t-65.7355628000,\t57.9555341829,\t\n    13.4670930872,\t-79.3318328665,\t36.5016341422,\t27.5574278118,\t-35.4004898428,\t-79.3903940148,\t243.2421421265,\t-8.0268453199,\t\n    44.0174931524,\t68.8734465340,\t-80.7502038529,\t1.3409036386,\t-86.0777878831,\t37.1475406267,\t18.1068167023,\t-56.9153447361,\t\n    -19.5224115764,\t-78.8474074897,\t-20.0747255852,\t4.5850719720,\t-191.0686482737,\t23.5318026769,\t-32.6675253287,\t27.3087304829,\t\n    31.4351407465,\t19.6192337929,\t-11.8866458644,\t-48.4661089981,\t-3.1226120347,\t20.0138411382,\t29.8813799560,\t67.9558437137,\t\n    38.7174108080,\t-13.3022284820,\t27.1121047281,\t-26.2954327750,\t120.9542179193,\t11.0555865630,\t-34.5895364072,\t73.4542523467,\t\n    -26.6956937208,\t-108.0235037857,\t-35.7355716826,\t-69.8443555160,\t33.3578766421,\t26.3683815560,\t97.2883332520,\t133.5510498515,\t\n    35.5415284008,\t-16.0495119378,\t-19.5483270675,\t93.9985201088,\t27.7795159179,\t-13.1059263368,\t34.2311271533,\t47.1466381795,\t\n    -36.4147469783,\t10.4833119779,\t-5.2292656110,\t-25.0113244760,\t-14.0549947152,\t199.8348526048,\t-43.2547698686,\t98.4817969474,\t\n    37.0586206693,\t33.2121561269,\t-24.7170470026,\t-37.1349105091,\t-30.9578044903,\t-7.4114930133,\t-34.4807046142,\t-27.7773696385,\t\n    29.2740921831,\t-61.0686554741,\t-32.4612619459,\t6.7160769792,\t3.1089599122,\t12.2545595923,\t62.6999428463,\t30.5969686709,\t\n    11.1423411573,\t-57.6502489731,\t60.2408835918,\t-67.7203861906,\t-44.4518971003,\t-5.1109945114,\t5.6528645074,\t-43.3456968092,\t\n    117.8609487802,\t-24.2034537544,\t-78.4496201847,\t44.5294780988,\t85.1475013837,\t15.5247701555,\t89.7512668950,\t54.3013774517,\t\n    -186.8510627600,\t-51.0482727175,\t-9.0267702018,\t48.0681416363,\t-32.9759681266,\t-42.4456615266,\t36.2738833817,\t14.1610476535,\t\n    -99.8207994579,\t-11.5142692827,\t50.1825860327,\t0.3917737329,\t63.3500370315,\t111.2878444719,\t91.6392406660,\t17.6584451589,\t\n    -50.7899615175,\t12.4221556654,\t-86.5413087906,\t48.0563389410,\t29.1384649619,\t83.5027000186,\t7.5729436929,\t22.2136423571,\t\n    -60.2741473997,\t-170.4857658702,\t17.0186844162,\t136.3581532664,\t31.5065683845,\t-96.2326886411,\t72.4014182257,\t26.1414887396,\t\n    -57.2844089463,\t-43.9781986370,\t-95.6611720182,\t-133.8830434822,\t33.4938269182,\t-23.9156927559,\t35.5520154186,\t-93.2468099373,\t\n    -6.2162527113,\t4.5642492223,\t-57.5722591446,\t71.8064120226,\t45.1768685505,\t-9.5130102236,\t110.5798720279,\t-41.5641619544,\t\n    0.1835509076,\t-49.9128593949,\t98.0154257393,\t-46.9365276597,\t-66.0935141873,\t73.1727792846,\t41.3353795661,\t-27.9960128980,\t\n    -44.2412816343,\t46.9707404231,\t12.3575979804,\t-122.9770710291,\t-11.9552135499,\t31.4591712664,\t-14.1931325058,\t-6.8614191170,\t\n    -16.9763787814,\t36.1520894392,\t75.7352320923,\t-99.5121191729,\t17.8024156510,\t72.7923924404,\t38.2259409765,\t1.9325379601,\t\n    -11.1978607868,\t98.2703853998,\t-38.0288299607,\t-41.7008273041,\t80.4517499854,\t-116.8258848759,\t30.7289872645,\t-101.9012423077,\t\n    93.9831977796,\t101.4530665010,\t9.2763209169,\t116.4425755502,\t2.9739225298,\t45.5019124654,\t-64.2956140887,\t105.7408745662,\t\n    -11.3657606620,\t6.3069096678,\t122.8709609828,\t-6.3248578668,\t-60.1760116205,\t-35.9544630869,\t-68.0834090495,\t-34.8224305999,\t\n    -31.5069839788,\t21.2614258718,\t-23.5546199906,\t-128.0293305211,\t-182.3893947839,\t-120.7110714918,\t-65.8822590864,\t-63.8215221762,\t\n    56.7670203795,\t-61.2037205962,\t3.8122259155,\t1.0275735300,\t-64.6391642695,\t75.8652993596,\t115.4068637021,\t46.8849792653,\t\n    -39.5505124775,\t33.1187321149,\t25.3372286880,\t-18.5375942960,\t30.3953994229,\t21.8836680766,\t13.9924166006,\t-109.7038947262,\t\n    -24.2899011732,\t-52.7497505668,\t35.3698361783,\t34.1056231420,\t-13.8686663216,\t-1.7062295227,\t-97.5362177027,\t74.6544677369,\t\n    -78.3935767846,\t35.6517853160,\t51.3830818724,\t-93.7778131463,\t81.6700292143,\t126.8070312922,\t-28.4470816468,\t-71.2638167545,\t\n    -55.2884800428,\t9.0861240716,\t-128.9083303383,\t-16.3800803508,\t34.5467745617,\t28.9315662137,\t84.3386694814,\t-1.7523953786,\t\n    69.7727914393,\t44.6546611575,\t90.9897326057,\t121.8059195607,\t28.9429876729,\t-14.8591127934,\t29.2818722570,\t-84.6318423838,\t\n    11.3290830564,\t40.7084140001,\t-50.5878424847,\t68.2992258419,\t-24.7150040711,\t41.8365599450,\t104.0111319954,\t70.6981835472,\t\n    56.4709262168,\t-20.5343182666,\t-16.1886023808,\t101.3482649415,\t108.5356887852,\t24.5240870510,\t-146.5152615985,\t-24.0194234128,\t\n    18.0331846295,\t-5.1522407439,\t4.9573388243,\t-34.7877468646,\t39.3333900199,\t31.8580232326,\t111.7915751739,\t15.3919610203,\t\n    17.5179415363,\t-22.2065299595,\t31.9496951848,\t-18.7368015481,\t-78.3621490938,\t45.9954796476,\t77.7231064126,\t21.7258618723,\t\n    23.3527631711,\t-136.8686653828,\t-22.5773174812,\t33.6615614603,\t4.8540113479,\t3.9088571058,\t-54.7099788715,\t85.8089519875,\t\n    -86.1460475251,\t-0.1247811474,\t-146.1793416666,\t124.6659345147,\t-60.7858975441,\t10.3154193265,\t-29.5514280889,\t9.4667237048,\t\n    -7.9550953683,\t37.5451209024,\t-27.1735194003,\t46.8842847809,\t41.9179936640,\t-23.3158010522,\t157.3009890625,\t113.2843306932,\t\n    -104.1727731788,\t123.3854503767,\t-5.2055501860,\t27.9879059133,\t-13.4163698144,\t52.2833141248,\t-129.0969704337,\t46.8881212895,\t\n    131.1080768010,\t-19.0213767099,\t155.5021671973,\t20.3698150937,\t37.2314029160,\t40.8492644144,\t-35.6880906860,\t-31.7697839101,\t\n    -24.3255617048,\t-26.5610341544,\t11.6187963194,\t-51.4990517524,\t39.7825587179,\t-54.6696763219,\t-3.8497258220,\t-70.2342476864,\t\n    4.9081928390,\t-71.4654689380,\t30.7344594349,\t32.7496322701,\t-90.9126087838,\t-38.3652430128,\t92.4042844207,\t47.8082836295,\t\n    145.6802813070,\t-18.7426859824,\t17.6059584845,\t36.4864322344,\t-18.7252161480,\t0.9615718128,\t-100.1282552629,\t-42.4349083923,\t\n    -14.3562238984,\t-46.8134065357,\t39.6360915881,\t22.7361846189,\t-3.2257803075,\t37.2350125538,\t115.6400099866,\t-12.7275184486,\t\n    -96.1855573652,\t-10.0276483356,\t57.6455407419,\t77.4560348751,\t-22.1178137498,\t-35.6022362191,\t-68.4831367839,\t2.8390215747,\t\n    -52.0573070842,\t-93.4720169324,\t-28.9154032611,\t-76.6074307649,\t-9.9420438435,\t-6.1893105222,\t29.9369590932,\t74.7852614650,\t\n    -1.6201087045,\t-17.3703711090,\t-98.9790496449,\t26.7869734481,\t17.1602014711,\t-15.6928367417,\t-7.8035969135,\t89.7887008279,\t\n    -70.6197502665,\t-8.2854282454,\t59.3778733341,\t73.2639493915,\t25.8370203675,\t59.1628124401,\t-24.8471900591,\t-25.8194366580,\t\n    -6.0751044137,\t-57.7489484697,\t88.6706386657,\t-84.8771863224,\t-89.4840617668,\t10.9763517990,\t-54.8378810910,\t41.3410088555,\t\n    66.6125927808,\t-14.1311991812,\t29.3005546497,\t96.5047091289,\t-3.3614374997,\t-25.8108903749,\t206.5074424684,\t-61.4084159691,\t\n    -62.4923495769,\t-13.1959183651,\t-59.3730978039,\t-12.7173171637,\t16.2427076425,\t43.4296534191,\t-21.7657996669,\t-28.1531280594,\t\n    -69.0302418588,\t-86.4107750374,\t17.1949881709,\t-41.3078350297,\t-57.6504646238,\t-5.0909583836,\t-8.1631298822,\t1.3096980446,\t\n    -2.2508953688,\t35.1942051704,\t-3.9027768036,\t-91.2713667132,\t63.6694073039,\t41.4248931898,\t9.8384382954,\t-96.0978983961,\t\n    66.1755919288,\t-36.7372549691,\t10.2307178666,\t80.7031291631,\t-38.2719834734,\t39.2035878064,\t-43.1259903655,\t93.4819414373,\t\n    89.7247077937,\t78.9891448344,\t95.0983537363,\t36.5774514331,\t8.9972120390,\t-8.5755002664,\t-102.1337133375,\t76.9830915294,\t\n    -46.7790015335,\t51.0714648600,\t29.5170917782,\t23.9334813635,\t5.2749838346,\t-15.9842728433,\t-1.3574532545,\t-70.2729088611,\t\n    -15.8039920242,\t15.5313565190,\t-18.1312003682,\t-8.0084433716,\t-27.8087982433,\t51.7334750530,\t19.3370491919,\t29.2520159480,\t\n    -68.6735151718,\t8.0558008798,\t-40.2210320066,\t-40.9920576136,\t7.8678303082,\t-72.3041306508,\t-10.2175986624,\t-35.1356797035,\t\n    201.1586117629,\t56.4352966867,\t46.7221688254,\t-11.9012413099,\t-18.9833303926,\t-86.5023414408,\t-23.4675063576,\t-55.5806400666,\t\n    153.4955981228,\t-10.1092363214,\t88.4029573110,\t-65.9117133686,\t-5.4919562765,\t24.5837979674,\t-33.5408574701,\t-4.0004157187,\t\n    56.9848893304,\t-105.2177018084,\t3.4948685307,\t-19.8452050090,\t-7.2453079498,\t102.6389582052,\t-8.3246123264,\t-73.0861922381,\t\n    0.9626940760,\t-28.3612950785,\t-11.1533678981,\t44.2899763978,\t-62.6677448146,\t22.3906970985,\t-13.3484872677,\t67.0703918899,\t\n    42.4772156970,\t-18.5244182335,\t37.4759091463,\t31.3496965213,\t-61.4436264287,\t52.0955155439,\t59.1486887940,\t170.4906735140,\t\n    46.0617455116,\t40.1470772024,\t-107.3976903570,\t-105.4116725861,\t56.8825181023,\t58.5916397550,\t-58.1729962485,\t-60.5270235223,\t\n    -39.2885519005,\t9.5965348817,\t-25.4354894441,\t-14.0981625889,\t-52.7234757042,\t-83.9105208881,\t72.1797338834,\t-134.9219073856,\t\n    9.6103094318,\t9.6768962656,\t26.7360474274,\t41.7881752284,\t-15.3952839007,\t-0.1363655901,\t-47.0864221556,\t-8.2427253205,\t\n    -57.7373834528,\t-55.9508702650,\t-78.5284244100,\t0.1655492302,\t62.9160705153,\t64.1068291282,\t-2.9136214436,\t-105.7842253662,\t\n    -45.8767944713,\t-51.7074257000,\t-98.8568902926,\t64.1232083599,\t71.1116077196,\t-30.6630666091,\t-58.6840707262,\t-15.9383894413,\t\n    -78.6620829271,\t60.7529890099,\t154.2357488637,\t41.3625348402,\t120.2872442705,\t-51.3125389772,\t16.7881412988,\t-70.4938171347,\t\n    -79.4147805796,\t23.5182282020,\t-81.0963234264,\t-59.2244948022,\t28.9135530940,\t92.5951342446,\t-96.6396527065,\t-26.4777264554,\t\n    121.3094449527,\t-34.5951012470,\t-127.8255512216,\t-92.7699064191,\t-58.4398020189,\t-117.7542292595,\t31.0434596629,\t21.5299289765,\t\n    -99.9447239591,\t-16.0626333679,\t6.0199864189,\t82.4757175357,\t22.5970205481,\t73.5485760950,\t35.7980568403,\t72.6857884103,\t\n    28.8479981590,\t-67.5538339177,\t43.4071338656,\t-25.1893024527,\t4.6130159403,\t-65.2605921685,\t-91.8752363625,\t22.5520067301,\t\n    -109.9093500045,\t33.9399454761,\t-13.9115156368,\t-3.1879928935,\t1.3920042271,\t43.3324348308,\t-33.3718525809,\t-15.9282931008,\t\n    0.7677944075,\t78.1072718708,\t-1.1063828562,\t-10.5413152425,\t37.1290958861,\t13.6823396336,\t-3.4014039018,\t89.5388534365,\t\n    37.7089705536,\t64.0323076524,\t44.7808982777,\t-13.5604762388,\t7.5118173888,\t115.2300447558,\t-9.1561273300,\t-41.5332100116,\t\n    -17.0088418256,\t71.2713927804,\t68.0422816650,\t54.9551164038,\t106.8830646917,\t-6.8316822423,\t-66.7609967606,\t-23.3894825625,\t\n    -67.4182747661,\t-28.3219951260,\t-15.9451114055,\t-29.7266619746,\t16.7419712545,\t-20.5565859019,\t-165.5656221846,\t116.3242135199,\t\n    64.2626611081,\t-8.1360214710,\t-94.2273608282,\t-62.9983557391,\t64.1759043922,\t36.5449254036,\t-51.5697599431,\t-5.0466305585,\t\n    -73.2700815931,\t48.7300029897,\t-35.5929303432,\t-90.4816448914,\t16.8187764590,\t-27.9347950060,\t80.7045416696,\t-83.6514663068,\t\n    -58.4556594913,\t3.2348973759,\t52.8657910284,\t85.7278577109,\t37.4138218732,\t82.0512145755,\t76.4606241856,\t-109.2162517858,\t\n    96.6683439683,\t90.7633843052,\t-53.1586977972,\t34.4033331064,\t44.2090456506,\t80.1151111552,\t2.7514790758,\t-64.2623287852,\t\n    126.1409018754,\t-30.2423240636,\t-156.0079941574,\t-2.8027393737,\t64.2513542782,\t69.8534581189,\t-73.4708875363,\t20.2217494242,\t\n    0.5864357659,\t-104.6195300646,\t-42.8322649072,\t26.3037603855,\t-40.7129474708,\t-33.9844594811,\t-26.3521525879,\t109.6645932255,\t\n    -106.9356716414,\t49.2118962107,\t11.7512591870,\t68.8969247665,\t113.4583578600,\t-83.3347276867,\t-36.2485402256,\t85.9855241461,\t\n    104.0814868325,\t33.5770186573,\t-1.9661285608,\t-132.5696804701,\t27.6753215958,\t21.1243350017,\t-28.0882593661,\t35.2778527631,\t\n    18.9175154387,\t83.6190957901,\t-71.4962755318,\t138.3285404575,\t97.9134306607,\t-56.8042150595,\t-143.3089544841,\t-2.7340225658,\t\n    17.5776154385,\t-148.2352087417,\t124.9211804787,\t59.4231271286,\t10.5947124378,\t68.5288310273,\t-67.2703544731,\t-23.7935515786,\t\n    38.8787769309,\t34.5294359419,\t-73.4536038751,\t2.7126504728,\t49.6972438051,\t62.7223593643,\t49.8175933904,\t-110.1534126143,\t\n    -14.6702420578,\t-84.0773525862,\t-92.6188033620,\t-5.5698102323,\t-47.9128909478,\t46.7196485027,\t-53.6444016449,\t98.5014752828,\t\n    -94.7519348776,\t14.1323076055,\t-89.2719075396,\t47.0296071172,\t41.3919626390,\t-39.1489616034,\t-135.6499693540,\t-10.9475781700,\t\n    92.7496269052,\t37.4205820588,\t-51.7237524182,\t49.9460461012,\t87.5396720347,\t32.8710569742,\t-32.8731769330,\t-83.4249720632,\t\n    34.5762125072,\t13.6808877416,\t-26.3766683600,\t-67.8728489559,\t-29.6073750328,\t-47.8030427727,\t-149.0587954245,\t-119.5774481626,\t\n    35.2806694964,\t-24.3695409777,\t48.7160766560,\t8.8288204812,\t-89.3855803242,\t3.1835611015,\t51.9474587643,\t-41.8502161006,\t\n    -34.1035165420,\t94.0854499359,\t-84.2224914514,\t59.1627371631,\t-103.1905795588,\t-18.6082417651,\t36.3103092592,\t63.1937125568,\t\n    -111.1986222065,\t-32.0863426915,\t-56.7330383564,\t32.5073363806,\t-7.1087996309,\t-68.2226145792,\t-157.6532604957,\t45.2078386315,\t\n    -2.8603211008,\t33.3371110420,\t37.7846637198,\t-18.6405663742,\t-91.0982111740,\t23.2221097945,\t-24.3522827840,\t78.9413600618,\t\n    62.8360928143,\t-19.9242767252,\t56.5032728402,\t-5.5496240010,\t8.6994906960,\t83.5527376759,\t-21.2346885874,\t64.0836232315,\t\n    22.9623722574,\t-87.9578765280,\t1.3523030640,\t176.4067098705,\t67.9036978634,\t7.2537723049,\t-122.2309062335,\t-63.8632909466,\t\n    -38.4903796734,\t-16.2974411834,\t2.3970826418,\t64.3700072918,\t-67.9197915888,\t-116.4026668750,\t67.5231031500,\t34.6374455493,\t\n    4.1311157296,\t-2.9105015532,\t70.8086558293,\t39.2725441796,\t33.8256743917,\t-3.5843642097,\t116.7643833804,\t20.1092238787,\t\n    -25.9766854190,\t-51.9950492522,\t3.5926636209,\t-58.7583611171,\t3.2768807331,\t-83.5901878329,\t68.7090363388,\t31.4832422043,\t\n    72.9380572718,\t-165.9742811160,\t33.9362033271,\t-10.9519428632,\t13.0808211304,\t15.6672709051,\t31.7224492437,\t-24.1934977704,\t\n    -111.0830116867,\t11.6282084172,\t-66.2259706857,\t-1.9963673172,\t30.0622960183,\t53.3456859503,\t-37.0919419160,\t67.5944964290,\t\n    18.5935153812,\t48.9664966150,\t67.3157768914,\t-160.7111991618,\t-25.1223842933,\t-47.4479071245,\t-16.7582679230,\t-13.6039270052,\t\n    1.7293472100,\t-24.1741877419,\t-76.9727398203,\t-56.3783736939,\t-66.9556303947,\t-54.3511473684,\t30.2542211582,\t-66.8893229449,\t\n    -73.2990092912,\t239.3981985262,\t-64.2850340511,\t89.9092075497,\t-15.3525489059,\t53.3827372899,\t-14.3319916122,\t-115.0721596412,\t\n    -50.4530123160,\t44.0976786926,\t52.2019557554,\t72.6630207131,\t27.5803572747,\t33.4737730840,\t-170.7640086205,\t152.9204474548,\t\n    -44.5872734278,\t-41.0667502536,\t26.6175854758,\t-13.0179143239,\t40.8518134705,\t23.2781614140,\t22.8861340709,\t165.4158655103,\t\n    45.0461105030,\t-17.0077443894,\t-2.3871329828,\t-86.8854944700,\t-38.5465304439,\t51.8040803063,\t-92.8924802068,\t-113.2325293603,\t\n    51.3604041632,\t-18.3429725256,\t-42.5989033884,\t-38.9445115750,\t-85.8273183104,\t-56.4224331649,\t17.4997720376,\t89.3766578841,\t\n    23.9239370283,\t82.3838988229,\t47.4013397563,\t-28.0666334287,\t77.6218433875,\t-52.2133433307,\t89.2938264737,\t43.2058195424,\t\n    49.4518987655,\t-5.6570623864,\t19.8577713391,\t-33.2615393471,\t73.6654400011,\t27.5602339563,\t-47.1471825605,\t-34.0693505588,\t\n    111.0944675938,\t57.0173259682,\t-63.4190502251,\t46.5969999331,\t49.3458328432,\t-41.3853156260,\t39.2494112424,\t40.7148228670,\t\n    -20.3911372187,\t31.8352000294,\t-0.9980198147,\t22.2804091174,\t54.0978218332,\t-82.3683192993,\t85.9892355872,\t-58.3154306688,\t\n    -104.2068911293,\t91.0603181519,\t32.9518095573,\t20.8407188930,\t34.7499759595,\t81.9688480501,\t-63.1013763435,\t0.0064684915,\t\n    -24.5056101811,\t69.9306176471,\t-27.5369930597,\t-39.0144381716,\t-14.4923929902,\t-54.3182594365,\t-130.3292318388,\t-48.8158919788,\t\n    53.2734036714,\t-104.1048090944,\t-70.0965204183,\t3.6382745923,\t83.6579656965,\t23.1622465812,\t126.4691310854,\t102.9799547579,\t\n    70.8617976147,\t-8.1455978101,\t-28.4590640876,\t108.1156467676,\t-1.9738076313,\t-75.4909376542,\t57.5780163484,\t45.3155422582,\t\n    -38.1742907476,\t-52.1803902400,\t-59.7016262432,\t-23.3823853194,\t-45.5457749841,\t-10.5523915014,\t-110.6271933849,\t-32.0113288878,\t\n    -86.9215548382,\t87.4068451718,\t70.9885834348,\t25.1206930472,\t30.7108505789,\t115.6076847444,\t-40.5697084903,\t-56.6781054555,\t\n    -31.4854227803,\t-31.9552555012,\t25.7938108182,\t25.4540472201,\t76.7058033375,\t2.3905659773,\t-5.9779298940,\t-152.8056710400,\t\n    -51.7485397077,\t28.1462240336,\t33.9693389366,\t-71.9881317816,\t-105.0496130632,\t64.2276458511,\t96.2519735406,\t48.6822690044,\t\n    -19.6594071488,\t24.8884631741,\t-33.0716823639,\t-69.5612618256,\t-25.2898319495,\t98.8036926982,\t-24.3703282453,\t53.1789051370,\t\n    86.5743876344,\t18.0109802577,\t68.3663740236,\t112.3369755598,\t-45.4492280850,\t-151.6437874688,\t-38.2167192413,\t24.2163999975,\t\n    -66.3294468430,\t-150.1009914497,\t-29.4992082835,\t-92.1308610284,\t-1.2762556067,\t23.1500238372,\t69.3063510487,\t-69.0471660018,\t\n    42.5150200276,\t120.6653379806,\t-152.6729845687,\t48.9591377076,\t2.7191539126,\t0.2888762146,\t-3.0784673164,\t32.5853754582,\t\n    -81.3351116851,\t25.2072127071,\t-36.3659441163,\t-28.6250561447,\t95.3073017008,\t-75.7486406052,\t65.1012680265,\t-64.6031857772,\t\n    56.1240652498,\t-10.8517181129,\t-3.7575141784,\t42.9554134355,\t32.9784965739,\t-25.0327158003,\t-147.2361479829,\t-122.4898965848,\t\n    -64.6526214445,\t57.1527521244,\t25.3983254376,\t-74.5887309421,\t105.2278400890,\t118.4451948788,\t-10.9195498541,\t-45.2849091353,\t\n    79.1200975888,\t-60.8806018590,\t-12.2957628012,\t-10.2289743666,\t77.2465842566,\t-19.1618580885,\t-50.3947630673,\t130.5843172047,\t\n    20.1829697245,\t-24.4247513916,\t71.3800655588,\t-30.9467657000,\t1.5373397590,\t53.9054414421,\t-87.7905799212,\t58.1774557931,\t\n    -154.0660955458,\t119.2331706772,\t7.0800339615,\t-83.0564977313,\t-99.0630549412,\t64.4241699198,\t27.5103964537,\t36.9348345670,\t\n    -10.4954521840,\t-23.2759360131,\t-167.1583158447,\t-50.1929188975,\t-17.1065117999,\t-86.3978192131,\t8.3733101608,\t-19.6093068970,\t\n    37.0486109491,\t45.4922144870,\t176.0647013511,\t-14.1950922727,\t16.7968812286,\t-84.3138225875,\t-53.2207464331,\t-14.8171496969,\t\n    65.2824157581,\t93.3387940939,\t-46.2740703075,\t92.8129768305,\t-57.1890439907,\t27.2969064938,\t-67.1547095718,\t132.0520323271,\t\n    -80.7686358272,\t31.4140691769,\t-52.8148627904,\t-54.8739580131,\t-149.8514804755,\t56.0153122854,\t-71.3742949563,\t36.6095599948,\t\n    42.3294500451,\t1.2055515804,\t-109.4906983981,\t-71.9482696076,\t-21.4390953534,\t98.8949510272,\t74.3069855376,\t-35.1569830360,\t\n    -34.9626381657,\t64.2761847423,\t64.7596378221,\t-28.4775450749,\t20.1459803277,\t-26.5247867780,\t-32.4734659348,\t-27.8310906478,\t\n    50.7956581065,\t36.0746451268,\t22.7531905225,\t-13.9681530928,\t49.5451440618,\t-13.8510794385,\t19.4999565108,\t56.8774616945,\t\n    -11.9205397259,\t-71.7174333027,\t138.8034243907,\t-37.8252215401,\t-38.5743154556,\t-22.5072374207,\t12.6209402643,\t69.3207345010,\t\n    70.3534390616,\t71.5844311614,\t4.0715727994,\t25.4390606947,\t-51.0777668722,\t138.3617611366,\t-34.2478029347,\t-58.8492260984,\t\n    -108.6623124843,\t58.3034938571,\t-36.9304647333,\t116.5902412201,\t-24.4020501110,\t-74.7544840602,\t67.7889120207,\t-9.1455389450,\t\n    -46.4456521441,\t83.2551857934,\t-113.9346066504,\t46.2851467498,\t-17.4102217179,\t41.6989724702,\t-23.8829078702,\t76.1395799790,\t\n    -27.1608730178,\t-133.8787483532,\t-59.9242635982,\t120.5266415560,\t124.9797395465,\t35.5722660007,\t-20.2412573812,\t20.5492611902,\t\n    -111.8745990845,\t41.7389321101,\t44.5758622786,\t54.2189628306,\t-44.4745944890,\t-75.9761098966,\t104.0472151578,\t113.7219003284,\t\n    33.0330354214,\t-6.0923562541,\t-14.8744671800,\t62.5024055272,\t3.7922184446,\t1.1256712478,\t-30.2126827228,\t-83.4988699637,\t\n    -103.7060854897,\t-65.4982917403,\t30.8897494352,\t66.1124672663,\t65.0983461952,\t-52.5486436649,\t-4.5556524541,\t-26.5924272500,\t\n    -94.1546367179,\t-0.3559369287,\t-45.0649519841,\t-68.1274094478,\t-7.0521865275,\t-5.6612786174,\t-12.5790011432,\t51.2524661231,\t\n    -3.6515125298,\t92.9598974936,\t-21.0468658542,\t-40.8243392179,\t-7.4342227950,\t11.1119231703,\t37.3371820746,\t21.3179018153,\t\n    50.2932980480,\t-24.1611515405,\t-41.7851721122,\t-24.8691439055,\t-28.3180388219,\t121.1894536511,\t15.7968116384,\t17.9498027226,\t\n    -55.3386005430,\t-80.6689826830,\t31.9394747713,\t-28.1978017432,\t-1.5538441529,\t-4.0360096323,\t73.9611531119,\t17.7253526010,\t\n    -24.8578563772,\t18.4583438017,\t75.2580204243,\t-13.6139802015,\t24.6918362443,\t-63.0552815767,\t-4.0312608443,\t-14.8879121339,\t\n    -2.8237511683,\t-81.5024576341,\t-4.2344562157,\t107.1587476255,\t-131.2910041645,\t-25.6467586377,\t0.4733397655,\t62.8634326464,\t\n    63.1852609425,\t16.5913941858,\t-96.6896044528,\t81.2969911064,\t18.2956425408,\t-81.6677471269,\t-39.2708721333,\t-34.3080597347,\t\n    22.5610412882,\t57.2574226391,\t77.9308780964,\t-39.9342842346,\t58.5581960994,\t-5.7939281526,\t104.9927182940,\t-99.3837066580,\t\n    25.9917768621,\t-32.1605915683,\t-30.4589523848,\t64.8295771021,\t-28.2183758982,\t-37.9771330859,\t-178.0772548046,\t84.2925125233,\t\n    45.4981954662,\t49.2815212900,\t-45.1224250038,\t-5.9322404186,\t-6.1309915876,\t76.9070873365,\t-11.5475730308,\t18.2569564924,\t\n    -124.4953563688,\t53.8646820493,\t-40.0231506068,\t-74.3908746450,\t-63.2011642999,\t-18.9826189881,\t69.7917580387,\t-34.8403308318,\t\n    -36.4625632706,\t17.1934091336,\t-20.8063613141,\t-1.9067935434,\t5.2259139474,\t60.8368210348,\t81.3087550974,\t-42.6679999668,\t\n    -95.5963552311,\t-115.2609753741,\t11.1809831183,\t-48.3640194531,\t75.1073797772,\t30.8228127170,\t-15.0904157375,\t11.0538529673,\t\n    107.4505154927,\t-66.3486660110,\t-32.0311111189,\t38.4346222125,\t8.9422998706,\t-57.6098106212,\t15.9132097612,\t-132.1845158340,\t\n    36.1916704283,\t-10.5055186124,\t-87.5658217149,\t107.8931306399,\t96.0334082800,\t53.7264664477,\t-72.0623965686,\t-1.9038197721,\t\n    26.1152808779,\t119.6235796272,\t48.3325601149,\t117.6457486801,\t28.0275495741,\t-11.7030018715,\t52.9236279862,\t100.1176831736,\t\n    -83.2423151898,\t7.5280868233,\t-15.3686195277,\t-5.3432329923,\t-27.9181052724,\t-64.4492860287,\t129.7502751613,\t-82.3246020383,\t\n    37.3256155504,\t34.7298938660,\t-57.0561320806,\t-44.9581455455,\t93.3481469867,\t-54.3803550243,\t26.4501204966,\t18.8116878139,\t\n    -74.4902220818,\t15.4659232518,\t-49.1948332727,\t34.0006040345,\t56.7177639954,\t-28.8367897421,\t83.8692564278,\t35.6745892475,\t\n    -45.7509262432,\t30.3970223242,\t106.1786129556,\t-35.7843870107,\t7.1339227808,\t13.0894885560,\t56.4666438735,\t-23.8687514544,\t\n    -111.5694112759,\t-58.7858061292,\t-61.2783887765,\t44.1738302093,\t54.7407844064,\t14.3538652267,\t108.5956394164,\t-22.3846808158,\t\n    2.5449431771,\t70.3512724427,\t29.5403015688,\t-0.7212818796,\t143.3497258886,\t-17.2553350633,\t-99.7681623907,\t42.6913312311,\t\n    35.7338157369,\t-54.6728371746,\t-38.0299088541,\t10.1471440532,\t-124.7095236710,\t-190.8743243033,\t139.7543496645,\t-42.2528776639,\t\n    39.0975372290,\t27.8686903911,\t22.7337255980,\t42.7990612235,\t-41.6771094483,\t-23.0843729437,\t49.7020046877,\t11.0018909876,\t\n    -16.5079644797,\t-158.2821637063,\t42.1950179525,\t-30.4282660128,\t67.9797563487,\t-53.8121334664,\t52.8306609341,\t-5.2861803454,\t\n    59.3808475761,\t158.1836295178,\t-26.8953096767,\t78.8646320997,\t-113.9365510474,\t-37.1949934282,\t53.6970193167,\t-9.6523467804,\t\n    7.7358952669,\t-74.6220593088,\t107.4394203873,\t17.2364088475,\t-36.5357935724,\t-23.9301386540,\t17.8174243490,\t14.1204969615,\t\n    -8.2599377000,\t4.2743586584,\t-46.4363395746,\t-63.5670279031,\t9.6872641411,\t21.0630349930,\t108.9834586896,\t-124.7597975398,\t\n    29.4251821664,\t23.8313097730,\t-40.8359610210,\t91.9520219869,\t95.7936525792,\t-109.5783337883,\t-60.1100153384,\t-19.9591228893,\t\n};\n\n/*--------------------------------------------------------------------------------*/\n/* FFT Lengths */\n/*--------------------------------------------------------------------------------*/\n\n/* \n  To change test parameter values add/remove values inside CURLY and update \n  the preceeding parameter to reflect the number of values inside CURLY. \n*/\n\nARR_DESC_DEFINE(uint16_t,\n                transform_radix2_fftlens,\n                7,\n                CURLY(\n                      16, 32, 64, 128, 256,\n                      512, 1024/*, 2048 , 4096 */));\n\nARR_DESC_DEFINE(uint16_t,\n                transform_radix4_fftlens,\n                4,\n                CURLY(\n                      16, 64, 256, 1024/* , 4096 */));\n\nARR_DESC_DEFINE(uint16_t,\n                transform_rfft_fftlens,\n                6,\n                CURLY(\n                      32, 64, 128, 256,\n                      512, 1024/*, 2048 , 4096, 8192*/));\n                    \nARR_DESC_DEFINE(uint16_t,\n                transform_dct_fftlens,\n                3,\n                CURLY(\n                      128, 512, 2048/*, 8192*/));\n\nARR_DESC_DEFINE(uint16_t,\n                transform_rfft_fast_fftlens,\n                7,\n                CURLY(\n                      32, 64, 128, 256,\n                      512, 1024, 2048));\n\n/*--------------------------------------------------------------------------------*/\n/* CFFT_F32 Structs */\n/*--------------------------------------------------------------------------------*/\n\n/* Uses radix2 lengths */\nARR_DESC_DEFINE(const arm_cfft_instance_f32 *,\n                transform_cfft_f32_structs,\n                5,\n                CURLY(\n                    &arm_cfft_sR_f32_len16,\n                    &arm_cfft_sR_f32_len32,\n                    &arm_cfft_sR_f32_len64,\n                    &arm_cfft_sR_f32_len128,\n                    &arm_cfft_sR_f32_len256/*,\n                       &arm_cfft_sR_f32_len512, */\n                    /* &arm_cfft_sR_f32_len1024, */\n                    /* &arm_cfft_sR_f32_len2048, */\n                    /* &arm_cfft_sR_f32_len4096 */\n                    ));\n\n/*--------------------------------------------------------------------------------*/\n/* CFFT_Q31 Structs */\n/*--------------------------------------------------------------------------------*/\n\n/* Uses radix2 lengths */\nARR_DESC_DEFINE(const arm_cfft_instance_q31 *,\n                transform_cfft_q31_structs,\n                5,\n                CURLY(\n                    &arm_cfft_sR_q31_len16,\n                    &arm_cfft_sR_q31_len32,\n                    &arm_cfft_sR_q31_len64,\n                    &arm_cfft_sR_q31_len128,\n                    &arm_cfft_sR_q31_len256/*,\n                       &arm_cfft_sR_q31_len512, */\n                    /* &arm_cfft_sR_q31_len1024, */\n                    /* &arm_cfft_sR_q31_len2048, */\n                    /* &arm_cfft_sR_q31_len4096 */\n                    ));\n\n/*--------------------------------------------------------------------------------*/\n/* CFFT_q15 Structs */\n/*--------------------------------------------------------------------------------*/\n\n/* Uses radix2 lengths */\nARR_DESC_DEFINE(const arm_cfft_instance_q15 *,\n                transform_cfft_q15_structs,\n                5,\n                CURLY(\n                    &arm_cfft_sR_q15_len16,\n                    &arm_cfft_sR_q15_len32,\n                    &arm_cfft_sR_q15_len64,\n                    &arm_cfft_sR_q15_len128,\n                    &arm_cfft_sR_q15_len256/*,\n                       &arm_cfft_sR_q15_len512, */\n                    /* &arm_cfft_sR_q15_len1024, */\n                    /* &arm_cfft_sR_q15_len2048, */\n                    /* &arm_cfft_sR_q15_len4096 */\n                    ));\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMv8MBLl_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMv8MMLl_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=0                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=0                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMv8MMLld_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=0                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=1                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMv8MMLldfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=1                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=1                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMv8MMLlfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=1                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=0                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/cortexM0l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm0ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm0ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm0ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm0ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/cortexM3l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm3ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm3ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm3ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm3ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/cortexM4l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm4ct.vfp-present=0                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm4ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm4ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm4ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm4ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/cortexM4lf_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm4ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm4ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm4ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm4ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm4ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/cortexM7l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=0                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/cortexM7lfdp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/cortexM7lfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/CMSIS/RTX_Config.c",
    "content": "/*\n * Copyright (c) 2013-2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * -----------------------------------------------------------------------------\n *\n * $Revision:   V5.1.0\n *\n * Project:     CMSIS-RTOS RTX\n * Title:       RTX Configuration\n *\n * -----------------------------------------------------------------------------\n */\n \n#include \"cmsis_compiler.h\"\n#include \"rtx_os.h\"\n \n// OS Idle Thread\n__WEAK __NO_RETURN void osRtxIdleThread (void *argument) {\n  (void)argument;\n\n  for (;;) {}\n}\n \n// OS Error Callback function\n__WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) {\n  (void)object_id;\n\n  switch (code) {\n    case osRtxErrorStackUnderflow:\n      // Stack underflow detected for thread (thread_id=object_id)\n      break;\n    case osRtxErrorISRQueueOverflow:\n      // ISR Queue overflow detected when inserting object (object_id)\n      break;\n    case osRtxErrorTimerQueueOverflow:\n      // User Timer Callback Queue overflow detected for timer (timer_id=object_id)\n      break;\n    case osRtxErrorClibSpace:\n      // Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM\n      break;\n    case osRtxErrorClibMutex:\n      // Standard C/C++ library mutex initialization failed\n      break;\n    default:\n      break;\n  }\n  for (;;) {}\nreturn 0U;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/CMSIS/RTX_Config.h",
    "content": "/*\n * Copyright (c) 2013-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * -----------------------------------------------------------------------------\n *\n * $Revision:   V5.5.0\n *\n * Project:     CMSIS-RTOS RTX\n * Title:       RTX Configuration definitions\n *\n * -----------------------------------------------------------------------------\n */\n \n#ifndef RTX_CONFIG_H_\n#define RTX_CONFIG_H_\n \n#ifdef   _RTE_\n#include \"RTE_Components.h\"\n#ifdef    RTE_RTX_CONFIG_H\n#include  RTE_RTX_CONFIG_H\n#endif\n#endif\n \n//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------\n \n// <h>System Configuration\n// =======================\n \n//   <o>Global Dynamic Memory size [bytes] <0-1073741824:8>\n//   <i> Defines the combined global dynamic memory size.\n//   <i> Default: 4096\n#ifndef OS_DYNAMIC_MEM_SIZE\n#define OS_DYNAMIC_MEM_SIZE         4096\n#endif\n \n//   <o>Kernel Tick Frequency [Hz] <1-1000000>\n//   <i> Defines base time unit for delays and timeouts.\n//   <i> Default: 1000 (1ms tick)\n#ifndef OS_TICK_FREQ\n#define OS_TICK_FREQ                1000\n#endif\n \n//   <e>Round-Robin Thread switching\n//   <i> Enables Round-Robin Thread switching.\n#ifndef OS_ROBIN_ENABLE\n#define OS_ROBIN_ENABLE             1\n#endif\n \n//     <o>Round-Robin Timeout <1-1000>\n//     <i> Defines how many ticks a thread will execute before a thread switch.\n//     <i> Default: 5\n#ifndef OS_ROBIN_TIMEOUT\n#define OS_ROBIN_TIMEOUT            5\n#endif\n \n//   </e>\n \n//   <o>ISR FIFO Queue \n//      <4=>  4 entries    <8=>   8 entries   <12=>  12 entries   <16=>  16 entries\n//     <24=> 24 entries   <32=>  32 entries   <48=>  48 entries   <64=>  64 entries\n//     <96=> 96 entries  <128=> 128 entries  <196=> 196 entries  <256=> 256 entries\n//   <i> RTOS Functions called from ISR store requests to this buffer.\n//   <i> Default: 16 entries\n#ifndef OS_ISR_FIFO_QUEUE\n#define OS_ISR_FIFO_QUEUE           16\n#endif\n \n//   <q>Object Memory usage counters\n//   <i> Enables object memory usage counters (requires RTX source variant).\n#ifndef OS_OBJ_MEM_USAGE\n#define OS_OBJ_MEM_USAGE            0\n#endif\n \n// </h>\n \n// <h>Thread Configuration\n// =======================\n \n//   <e>Object specific Memory allocation\n//   <i> Enables object specific memory allocation.\n#ifndef OS_THREAD_OBJ_MEM\n#define OS_THREAD_OBJ_MEM           0\n#endif\n \n//     <o>Number of user Threads <1-1000>\n//     <i> Defines maximum number of user threads that can be active at the same time.\n//     <i> Applies to user threads with system provided memory for control blocks.\n#ifndef OS_THREAD_NUM\n#define OS_THREAD_NUM               1\n#endif\n \n//     <o>Number of user Threads with default Stack size <0-1000>\n//     <i> Defines maximum number of user threads with default stack size.\n//     <i> Applies to user threads with zero stack size specified.\n#ifndef OS_THREAD_DEF_STACK_NUM\n#define OS_THREAD_DEF_STACK_NUM     0\n#endif\n \n//     <o>Total Stack size [bytes] for user Threads with user-provided Stack size <0-1073741824:8>\n//     <i> Defines the combined stack size for user threads with user-provided stack size.\n//     <i> Applies to user threads with user-provided stack size and system provided memory for stack.\n//     <i> Default: 0\n#ifndef OS_THREAD_USER_STACK_SIZE\n#define OS_THREAD_USER_STACK_SIZE   0\n#endif\n \n//   </e>\n \n//   <o>Default Thread Stack size [bytes] <96-1073741824:8>\n//   <i> Defines stack size for threads with zero stack size specified.\n//   <i> Default: 256\n#ifndef OS_STACK_SIZE\n#define OS_STACK_SIZE               512\n#endif\n \n//   <o>Idle Thread Stack size [bytes] <72-1073741824:8>\n//   <i> Defines stack size for Idle thread.\n//   <i> Default: 256\n#ifndef OS_IDLE_THREAD_STACK_SIZE\n#define OS_IDLE_THREAD_STACK_SIZE   512\n#endif\n \n//   <o>Idle Thread TrustZone Module Identifier\n//   <i> Defines TrustZone Thread Context Management Identifier.\n//   <i> Applies only to cores with TrustZone technology.\n//   <i> Default: 0 (not used)\n#ifndef OS_IDLE_THREAD_TZ_MOD_ID\n#define OS_IDLE_THREAD_TZ_MOD_ID    0\n#endif\n \n//   <q>Stack overrun checking\n//   <i> Enables stack overrun check at thread switch.\n//   <i> Enabling this option increases slightly the execution time of a thread switch.\n#ifndef OS_STACK_CHECK\n#define OS_STACK_CHECK              1\n#endif\n \n//   <q>Stack usage watermark\n//   <i> Initializes thread stack with watermark pattern for analyzing stack usage.\n//   <i> Enabling this option increases significantly the execution time of thread creation.\n#ifndef OS_STACK_WATERMARK\n#define OS_STACK_WATERMARK          0\n#endif\n \n//   <o>Processor mode for Thread execution \n//     <0=> Unprivileged mode \n//     <1=> Privileged mode\n//   <i> Default: Privileged mode\n#ifndef OS_PRIVILEGE_MODE\n#define OS_PRIVILEGE_MODE           1\n#endif\n \n// </h>\n \n// <h>Timer Configuration\n// ======================\n \n//   <e>Object specific Memory allocation\n//   <i> Enables object specific memory allocation.\n#ifndef OS_TIMER_OBJ_MEM\n#define OS_TIMER_OBJ_MEM            0\n#endif\n \n//     <o>Number of Timer objects <1-1000>\n//     <i> Defines maximum number of objects that can be active at the same time.\n//     <i> Applies to objects with system provided memory for control blocks.\n#ifndef OS_TIMER_NUM\n#define OS_TIMER_NUM                1\n#endif\n \n//   </e>\n \n//   <o>Timer Thread Priority\n//      <8=> Low\n//     <16=> Below Normal  <24=> Normal  <32=> Above Normal\n//     <40=> High\n//     <48=> Realtime\n//   <i> Defines priority for timer thread\n//   <i> Default: High\n#ifndef OS_TIMER_THREAD_PRIO\n#define OS_TIMER_THREAD_PRIO        40\n#endif\n \n//   <o>Timer Thread Stack size [bytes] <0-1073741824:8>\n//   <i> Defines stack size for Timer thread.\n//   <i> May be set to 0 when timers are not used.\n//   <i> Default: 256\n#ifndef OS_TIMER_THREAD_STACK_SIZE\n#define OS_TIMER_THREAD_STACK_SIZE  256\n#endif\n \n//   <o>Timer Thread TrustZone Module Identifier\n//   <i> Defines TrustZone Thread Context Management Identifier.\n//   <i> Applies only to cores with TrustZone technology.\n//   <i> Default: 0 (not used)\n#ifndef OS_TIMER_THREAD_TZ_MOD_ID\n#define OS_TIMER_THREAD_TZ_MOD_ID   0\n#endif\n \n//   <o>Timer Callback Queue entries <0-256>\n//   <i> Number of concurrent active timer callback functions.\n//   <i> May be set to 0 when timers are not used.\n//   <i> Default: 4\n#ifndef OS_TIMER_CB_QUEUE\n#define OS_TIMER_CB_QUEUE           4\n#endif\n \n// </h>\n \n// <h>Event Flags Configuration\n// ============================\n \n//   <e>Object specific Memory allocation\n//   <i> Enables object specific memory allocation.\n#ifndef OS_EVFLAGS_OBJ_MEM\n#define OS_EVFLAGS_OBJ_MEM          0\n#endif\n \n//     <o>Number of Event Flags objects <1-1000>\n//     <i> Defines maximum number of objects that can be active at the same time.\n//     <i> Applies to objects with system provided memory for control blocks.\n#ifndef OS_EVFLAGS_NUM\n#define OS_EVFLAGS_NUM              1\n#endif\n \n//   </e>\n \n// </h>\n \n// <h>Mutex Configuration\n// ======================\n \n//   <e>Object specific Memory allocation\n//   <i> Enables object specific memory allocation.\n#ifndef OS_MUTEX_OBJ_MEM\n#define OS_MUTEX_OBJ_MEM            0\n#endif\n \n//     <o>Number of Mutex objects <1-1000>\n//     <i> Defines maximum number of objects that can be active at the same time.\n//     <i> Applies to objects with system provided memory for control blocks.\n#ifndef OS_MUTEX_NUM\n#define OS_MUTEX_NUM                1\n#endif\n \n//   </e>\n \n// </h>\n \n// <h>Semaphore Configuration\n// ==========================\n \n//   <e>Object specific Memory allocation\n//   <i> Enables object specific memory allocation.\n#ifndef OS_SEMAPHORE_OBJ_MEM\n#define OS_SEMAPHORE_OBJ_MEM        0\n#endif\n \n//     <o>Number of Semaphore objects <1-1000>\n//     <i> Defines maximum number of objects that can be active at the same time.\n//     <i> Applies to objects with system provided memory for control blocks.\n#ifndef OS_SEMAPHORE_NUM\n#define OS_SEMAPHORE_NUM            1\n#endif\n \n//   </e>\n \n// </h>\n \n// <h>Memory Pool Configuration\n// ============================\n \n//   <e>Object specific Memory allocation\n//   <i> Enables object specific memory allocation.\n#ifndef OS_MEMPOOL_OBJ_MEM\n#define OS_MEMPOOL_OBJ_MEM          0\n#endif\n \n//     <o>Number of Memory Pool objects <1-1000>\n//     <i> Defines maximum number of objects that can be active at the same time.\n//     <i> Applies to objects with system provided memory for control blocks.\n#ifndef OS_MEMPOOL_NUM\n#define OS_MEMPOOL_NUM              1\n#endif\n \n//     <o>Data Storage Memory size [bytes] <0-1073741824:8>\n//     <i> Defines the combined data storage memory size.\n//     <i> Applies to objects with system provided memory for data storage.\n//     <i> Default: 0\n#ifndef OS_MEMPOOL_DATA_SIZE\n#define OS_MEMPOOL_DATA_SIZE        0\n#endif\n \n//   </e>\n \n// </h>\n \n// <h>Message Queue Configuration\n// ==============================\n \n//   <e>Object specific Memory allocation\n//   <i> Enables object specific memory allocation.\n#ifndef OS_MSGQUEUE_OBJ_MEM\n#define OS_MSGQUEUE_OBJ_MEM         0\n#endif\n \n//     <o>Number of Message Queue objects <1-1000>\n//     <i> Defines maximum number of objects that can be active at the same time.\n//     <i> Applies to objects with system provided memory for control blocks.\n#ifndef OS_MSGQUEUE_NUM\n#define OS_MSGQUEUE_NUM             1\n#endif\n \n//     <o>Data Storage Memory size [bytes] <0-1073741824:8>\n//     <i> Defines the combined data storage memory size.\n//     <i> Applies to objects with system provided memory for data storage.\n//     <i> Default: 0\n#ifndef OS_MSGQUEUE_DATA_SIZE\n#define OS_MSGQUEUE_DATA_SIZE       0\n#endif\n \n//   </e>\n \n// </h>\n \n// <h>Event Recorder Configuration\n// ===============================\n \n//   <e>Global Initialization\n//   <i> Initialize Event Recorder during 'osKernelInitialize'.\n#ifndef OS_EVR_INIT\n#define OS_EVR_INIT                 0\n#endif\n \n//     <q>Start recording\n//     <i> Start event recording after initialization.\n#ifndef OS_EVR_START\n#define OS_EVR_START                1\n#endif\n \n//     <h>Global Event Filter Setup\n//     <i> Initial recording level applied to all components.\n//       <o.0>Error events\n//       <o.1>API function call events\n//       <o.2>Operation events\n//       <o.3>Detailed operation events\n//     </h>\n#ifndef OS_EVR_LEVEL\n#define OS_EVR_LEVEL                0x00U\n#endif\n \n//     <h>RTOS Event Filter Setup\n//     <i> Recording levels for RTX components.\n//     <i> Only applicable if events for the respective component are generated.\n \n//       <h>Memory Management\n//       <i> Recording level for Memory Management events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_MEMORY_LEVEL \n#define OS_EVR_MEMORY_LEVEL         0x01U\n#endif\n \n//       <h>Kernel\n//       <i> Recording level for Kernel events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_KERNEL_LEVEL \n#define OS_EVR_KERNEL_LEVEL         0x01U\n#endif\n \n//       <h>Thread\n//       <i> Recording level for Thread events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_THREAD_LEVEL \n#define OS_EVR_THREAD_LEVEL         0x05U\n#endif\n \n//       <h>Generic Wait\n//       <i> Recording level for Generic Wait events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_WAIT_LEVEL \n#define OS_EVR_WAIT_LEVEL           0x01U\n#endif\n \n//       <h>Thread Flags\n//       <i> Recording level for Thread Flags events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_THFLAGS_LEVEL \n#define OS_EVR_THFLAGS_LEVEL        0x01U\n#endif\n \n//       <h>Event Flags\n//       <i> Recording level for Event Flags events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_EVFLAGS_LEVEL \n#define OS_EVR_EVFLAGS_LEVEL        0x01U\n#endif\n \n//       <h>Timer\n//       <i> Recording level for Timer events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_TIMER_LEVEL \n#define OS_EVR_TIMER_LEVEL          0x01U\n#endif\n \n//       <h>Mutex\n//       <i> Recording level for Mutex events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_MUTEX_LEVEL \n#define OS_EVR_MUTEX_LEVEL          0x01U\n#endif\n \n//       <h>Semaphore\n//       <i> Recording level for Semaphore events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_SEMAPHORE_LEVEL \n#define OS_EVR_SEMAPHORE_LEVEL      0x01U\n#endif\n \n//       <h>Memory Pool\n//       <i> Recording level for Memory Pool events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_MEMPOOL_LEVEL \n#define OS_EVR_MEMPOOL_LEVEL        0x01U\n#endif\n \n//       <h>Message Queue\n//       <i> Recording level for Message Queue events.\n//         <o.0>Error events\n//         <o.1>API function call events\n//         <o.2>Operation events\n//         <o.3>Detailed operation events\n//       </h>\n#ifndef OS_EVR_MSGQUEUE_LEVEL \n#define OS_EVR_MSGQUEUE_LEVEL       0x01U\n#endif\n \n//     </h>\n \n//   </e>\n \n//   <h>RTOS Event Generation\n//   <i> Enables event generation for RTX components (requires RTX source variant).\n \n//     <q>Memory Management\n//     <i> Enables Memory Management event generation.\n#ifndef OS_EVR_MEMORY\n#define OS_EVR_MEMORY               1\n#endif\n \n//     <q>Kernel\n//     <i> Enables Kernel event generation.\n#ifndef OS_EVR_KERNEL\n#define OS_EVR_KERNEL               1\n#endif\n \n//     <q>Thread\n//     <i> Enables Thread event generation.\n#ifndef OS_EVR_THREAD\n#define OS_EVR_THREAD               1\n#endif\n \n//     <q>Generic Wait\n//     <i> Enables Generic Wait event generation.\n#ifndef OS_EVR_WAIT\n#define OS_EVR_WAIT                 1\n#endif\n \n//     <q>Thread Flags\n//     <i> Enables Thread Flags event generation.\n#ifndef OS_EVR_THFLAGS\n#define OS_EVR_THFLAGS              1\n#endif\n \n//     <q>Event Flags\n//     <i> Enables Event Flags event generation.\n#ifndef OS_EVR_EVFLAGS\n#define OS_EVR_EVFLAGS              1\n#endif\n \n//     <q>Timer\n//     <i> Enables Timer event generation.\n#ifndef OS_EVR_TIMER\n#define OS_EVR_TIMER                1\n#endif\n \n//     <q>Mutex\n//     <i> Enables Mutex event generation.\n#ifndef OS_EVR_MUTEX\n#define OS_EVR_MUTEX                1\n#endif\n \n//     <q>Semaphore\n//     <i> Enables Semaphore event generation.\n#ifndef OS_EVR_SEMAPHORE\n#define OS_EVR_SEMAPHORE            1\n#endif\n \n//     <q>Memory Pool\n//     <i> Enables Memory Pool event generation.\n#ifndef OS_EVR_MEMPOOL\n#define OS_EVR_MEMPOOL              1\n#endif\n \n//     <q>Message Queue\n//     <i> Enables Message Queue event generation.\n#ifndef OS_EVR_MSGQUEUE\n#define OS_EVR_MSGQUEUE             1\n#endif\n \n//   </h>\n \n// </h>\n \n// Number of Threads which use standard C/C++ library libspace\n// (when thread specific memory allocation is not used).\n#if (OS_THREAD_OBJ_MEM == 0)\n#define OS_THREAD_LIBSPACE_NUM      4\n#else\n#define OS_THREAD_LIBSPACE_NUM      OS_THREAD_NUM\n#endif\n \n//------------- <<< end of configuration section >>> ---------------------------\n \n#endif  // RTX_CONFIG_H_\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/CMSIS/handlers.c",
    "content": "/*\n * Copyright (c) 2013-2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * -----------------------------------------------------------------------------\n *\n * Project:     CMSIS-RTOS RTX\n * Title:       Exception handlers (C functions)\n *\n * -----------------------------------------------------------------------------\n */\n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n\n\n//Fault Status Register (IFSR/DFSR) definitions\n#define FSR_ALIGNMENT_FAULT                  0x01   //DFSR only. Fault on first lookup\n#define FSR_INSTRUCTION_CACHE_MAINTENANCE    0x04   //DFSR only - async/external\n#define FSR_SYNC_EXT_TTB_WALK_FIRST          0x0c   //sync/external\n#define FSR_SYNC_EXT_TTB_WALK_SECOND         0x0e   //sync/external\n#define FSR_SYNC_PARITY_TTB_WALK_FIRST       0x1c   //sync/external\n#define FSR_SYNC_PARITY_TTB_WALK_SECOND      0x1e   //sync/external\n#define FSR_TRANSLATION_FAULT_FIRST          0x05   //MMU Fault - internal\n#define FSR_TRANSLATION_FAULT_SECOND         0x07   //MMU Fault - internal\n#define FSR_ACCESS_FLAG_FAULT_FIRST          0x03   //MMU Fault - internal\n#define FSR_ACCESS_FLAG_FAULT_SECOND         0x06   //MMU Fault - internal\n#define FSR_DOMAIN_FAULT_FIRST               0x09   //MMU Fault - internal\n#define FSR_DOMAIN_FAULT_SECOND              0x0b   //MMU Fault - internal\n#define FSR_PERMISSION_FAULT_FIRST           0x0f   //MMU Fault - internal\n#define FSR_PERMISSION_FAULT_SECOND          0x0d   //MMU Fault - internal\n#define FSR_DEBUG_EVENT                      0x02   //internal\n#define FSR_SYNC_EXT_ABORT                   0x08   //sync/external\n#define FSR_TLB_CONFLICT_ABORT               0x10   //sync/external\n#define FSR_LOCKDOWN                         0x14   //internal\n#define FSR_COPROCESSOR_ABORT                0x1a   //internal\n#define FSR_SYNC_PARITY_ERROR                0x19   //sync/external\n#define FSR_ASYNC_EXTERNAL_ABORT             0x16   //DFSR only - async/external\n#define FSR_ASYNC_PARITY_ERROR               0x18   //DFSR only - async/external\n\nvoid CDAbtHandler(uint32_t DFSR, uint32_t DFAR, uint32_t LR) {\n    uint32_t FS = (DFSR & (1 << 10)) >> 6 | (DFSR & 0x0f); //Store Fault Status\n\n    switch(FS) {\n        //Synchronous parity errors - retry\n        case FSR_SYNC_PARITY_ERROR:\n        case FSR_SYNC_PARITY_TTB_WALK_FIRST:\n        case FSR_SYNC_PARITY_TTB_WALK_SECOND:\n            return;\n\n        //Your code here. Value in DFAR is invalid for some fault statuses.\n        case FSR_ALIGNMENT_FAULT:\n        case FSR_INSTRUCTION_CACHE_MAINTENANCE:\n        case FSR_SYNC_EXT_TTB_WALK_FIRST:\n        case FSR_SYNC_EXT_TTB_WALK_SECOND:\n        case FSR_TRANSLATION_FAULT_FIRST:\n        case FSR_TRANSLATION_FAULT_SECOND:\n        case FSR_ACCESS_FLAG_FAULT_FIRST:\n        case FSR_ACCESS_FLAG_FAULT_SECOND:\n        case FSR_DOMAIN_FAULT_FIRST:\n        case FSR_DOMAIN_FAULT_SECOND:\n        case FSR_PERMISSION_FAULT_FIRST:\n        case FSR_PERMISSION_FAULT_SECOND:\n        case FSR_DEBUG_EVENT:\n        case FSR_SYNC_EXT_ABORT:\n        case FSR_TLB_CONFLICT_ABORT:\n        case FSR_LOCKDOWN:\n        case FSR_COPROCESSOR_ABORT:\n        case FSR_ASYNC_EXTERNAL_ABORT: //DFAR invalid\n        case FSR_ASYNC_PARITY_ERROR:   //DFAR invalid\n        default:\n            while(1);\n    }\n}\n\nvoid CPAbtHandler(uint32_t IFSR, uint32_t IFAR, uint32_t LR) {\n    uint32_t FS = (IFSR & (1 << 10)) >> 6 | (IFSR & 0x0f); //Store Fault Status\n\n    switch(FS) {\n        //Synchronous parity errors - retry\n        case FSR_SYNC_PARITY_ERROR:\n        case FSR_SYNC_PARITY_TTB_WALK_FIRST:\n        case FSR_SYNC_PARITY_TTB_WALK_SECOND:\n            return;\n\n        //Your code here. Value in IFAR is invalid for some fault statuses.\n        case FSR_SYNC_EXT_TTB_WALK_FIRST:\n        case FSR_SYNC_EXT_TTB_WALK_SECOND:\n        case FSR_TRANSLATION_FAULT_FIRST:\n        case FSR_TRANSLATION_FAULT_SECOND:\n        case FSR_ACCESS_FLAG_FAULT_FIRST:\n        case FSR_ACCESS_FLAG_FAULT_SECOND:\n        case FSR_DOMAIN_FAULT_FIRST:\n        case FSR_DOMAIN_FAULT_SECOND:\n        case FSR_PERMISSION_FAULT_FIRST:\n        case FSR_PERMISSION_FAULT_SECOND:\n        case FSR_DEBUG_EVENT: //IFAR invalid\n        case FSR_SYNC_EXT_ABORT:\n        case FSR_TLB_CONFLICT_ABORT:\n        case FSR_LOCKDOWN:\n        case FSR_COPROCESSOR_ABORT:\n        default:\n            while(1);\n    }\n}\n\n\n//returns amount to decrement lr by\n//this will be 0 when we have emulated the instruction and want to execute the next instruction\n//this will be 2 when we have performed some maintenance and want to retry the instruction in Thumb (state == 2)\n//this will be 4 when we have performed some maintenance and want to retry the instruction in ARM   (state == 4)\nuint32_t CUndefHandler(uint32_t opcode, uint32_t state, uint32_t LR) {\n    const int THUMB = 2;\n    const int ARM = 4;\n    //Lazy VFP/NEON initialisation and switching\n\n    // (ARM ARM section A7.5) VFP data processing instruction?\n    // (ARM ARM section A7.6) VFP/NEON register load/store instruction?\n    // (ARM ARM section A7.8) VFP/NEON register data transfer instruction?\n    // (ARM ARM section A7.9) VFP/NEON 64-bit register data transfer instruction?\n    if ((state == ARM   && ((opcode & 0x0C000000) >> 26 == 0x03)) ||\n        (state == THUMB && ((opcode & 0xEC000000) >> 26 == 0x3B))) {\n        if (((opcode & 0x00000E00) >> 9) == 5) {\n            __FPU_Enable();\n            return state;\n        }\n    }\n\n    // (ARM ARM section A7.4) NEON data processing instruction?\n    if ((state == ARM   && ((opcode & 0xFE000000) >> 24 == 0xF2)) ||\n        (state == THUMB && ((opcode & 0xEF000000) >> 24 == 0xEF)) ||\n    // (ARM ARM section A7.7) NEON load/store instruction?\n        (state == ARM   && ((opcode >> 24) == 0xF4)) ||\n        (state == THUMB && ((opcode >> 24) == 0xF9))) {\n            __FPU_Enable();\n            return state;\n    }\n\n    //Add code here for other Undef cases\n    while(1);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/Device/ARMCA5/mem_ARMCA5.h",
    "content": "/**************************************************************************//**\n * @file     mem_ARMCA5.h\n * @brief    Memory base and size definitions (used in scatter file)\n * @version  V1.00\n * @date     10. January 2018\n *\n * @note\n *\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __MEM_ARMCA5_H\n#define __MEM_ARMCA5_H\n\n/*----------------------------------------------------------------------------\n  User Stack & Heap size definition\n *----------------------------------------------------------------------------*/\n/*\n//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n*/\n\n/*--------------------- ROM Configuration ------------------------------------\n//\n// <h> ROM Configuration\n//   <o0> ROM Base Address <0x0-0xFFFFFFFF:8>\n//   <o1> ROM Size (in Bytes) <0x0-0xFFFFFFFF:8>\n// </h>\n *----------------------------------------------------------------------------*/\n#define __ROM_BASE       0x80000000\n#define __ROM_SIZE       0x00200000\n\n/*--------------------- RAM Configuration -----------------------------------\n// <h> RAM Configuration\n//   <o0> RAM Base Address    <0x0-0xFFFFFFFF:8>\n//   <o1> RAM Total Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//   <o2> RW_DATA Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//   <o3> ZI_DATA Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//   <h> Stack / Heap Configuration\n//     <o4>  Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//     <o5>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//     <h> Exceptional Modes\n//       <o6> UND Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//       <o7> ABT Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//       <o8> SVC Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//       <o9> IRQ Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//       <o10> FIQ Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n//     </h>\n//   </h>\n// </h>\n *----------------------------------------------------------------------------*/\n#define __RAM_BASE       0x80200000\n#define __RAM_SIZE       0x00200000\n\n#define __RW_DATA_SIZE   0x00100000\n#define __ZI_DATA_SIZE   0x000F0000\n\n#define __STACK_SIZE     0x00001000\n#define __HEAP_SIZE      0x00008000\n\n#define __UND_STACK_SIZE 0x00000100\n#define __ABT_STACK_SIZE 0x00000100\n#define __SVC_STACK_SIZE 0x00000100\n#define __IRQ_STACK_SIZE 0x00000100\n#define __FIQ_STACK_SIZE 0x00000100\n\n/*----------------------------------------------------------------------------*/\n\n/*--------------------- TTB Configuration ------------------------------------\n//\n// <h> TTB Configuration\n//   <o0> TTB Base Address <0x0-0xFFFFFFFF:8>\n//   <o1> TTB Size (in Bytes) <0x0-0xFFFFFFFF:8>\n// </h>\n *----------------------------------------------------------------------------*/\n#define __TTB_BASE       0x80500000\n#define __TTB_SIZE       0x00004000\n\n#endif /* __MEM_ARMCA5_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/Device/ARMCA5/mmu_ARMCA5.c",
    "content": "/**************************************************************************//**\n * @file     mmu_ARMCA5.c\n * @brief    MMU Configuration for ARM Cortex-A5 Device Series\n * @version  V1.1.0\n * @date     23. November 2018\n *\n * @note\n *\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Memory map description from: DUI0447G_v2m_p1_trm.pdf 4.2.2 ARM Cortex-A Series memory map\n\n                                                     Memory Type\n0xffffffff |--------------------------|             ------------\n           |       FLAG SYNC          |             Device Memory\n0xfffff000 |--------------------------|             ------------\n           |         Fault            |                Fault\n0xfff00000 |--------------------------|             ------------\n           |                          |                Normal\n           |                          |\n           |      Daughterboard       |\n           |         memory           |\n           |                          |\n0x80505000 |--------------------------|             ------------\n           |TTB (L2 Sync Flags   ) 4k |                Normal\n0x80504C00 |--------------------------|             ------------\n           |TTB (L2 Peripherals-B) 16k|                Normal\n0x80504800 |--------------------------|             ------------\n           |TTB (L2 Peripherals-A) 16k|                Normal\n0x80504400 |--------------------------|             ------------\n           |TTB (L2 Priv Periphs)  4k |                Normal\n0x80504000 |--------------------------|             ------------\n           |    TTB (L1 Descriptors)  |                Normal\n0x80500000 |--------------------------|             ------------\n           |           Heap           |                Normal\n           |--------------------------|             ------------\n           |          Stack           |                Normal\n0x80400000 |--------------------------|             ------------\n           |         ZI Data          |                Normal\n0x80300000 |--------------------------|             ------------\n           |         RW Data          |                Normal\n0x80200000 |--------------------------|             ------------\n           |         RO Data          |                Normal\n           |--------------------------|             ------------\n           |         RO Code          |              USH Normal\n0x80000000 |--------------------------|             ------------\n           |      Daughterboard       |                Fault\n           |      HSB AXI buses       |\n0x40000000 |--------------------------|             ------------\n           |      Daughterboard       |                Fault\n           |  test chips peripherals  |\n0x2c002000 |--------------------------|             ------------\n           |     Private Address      |            Device Memory\n0x2c000000 |--------------------------|             ------------\n           |      Daughterboard       |                Fault\n           |  test chips peripherals  |\n0x20000000 |--------------------------|             ------------\n           |       Peripherals        |           Device Memory RW/RO\n           |                          |              & Fault\n0x00000000 |--------------------------|\n*/\n\n// L1 Cache info and restrictions about architecture of the caches (CCSIR register):\n// Write-Through support *not* available\n// Write-Back support available.\n// Read allocation support available.\n// Write allocation support available.\n\n//Note: You should use the Shareable attribute carefully.\n//For cores without coherency logic (such as SCU) marking a region as shareable forces the processor to not cache that region regardless of the inner cache settings.\n//Cortex-A versions of RTX use LDREX/STREX instructions relying on Local monitors. Local monitors will be used only when the region gets cached, regions that are not cached will use the Global Monitor.\n//Some Cortex-A implementations do not include Global Monitors, so wrongly setting the attribute Shareable may cause STREX to fail.\n\n//Recall: When the Shareable attribute is applied to a memory region that is not Write-Back, Normal memory, data held in this region is treated as Non-cacheable.\n//When SMP bit = 0, Inner WB/WA Cacheable Shareable attributes are treated as Non-cacheable.\n//When SMP bit = 1, Inner WB/WA Cacheable Shareable attributes are treated as Cacheable.\n\n\n//Following MMU configuration is expected\n//SCTLR.AFE == 1 (Simplified access permissions model - AP[2:1] define access permissions, AP[0] is an access flag)\n//SCTLR.TRE == 0 (TEX remap disabled, so memory type and attributes are described directly by bits in the descriptor)\n//Domain 0 is always the Client domain\n//Descriptors should place all memory in domain 0\n\n#include \"ARMCA5.h\"\n\n\n// L2 table pointers\n//----------------------------------------\n#define PRIVATE_TABLE_L2_BASE_4k       (0x80504000) //Map 4k Private Address space\n#define SYNC_FLAGS_TABLE_L2_BASE_4k    (0x80504C00) //Map 4k Flag synchronization\n#define PERIPHERAL_A_TABLE_L2_BASE_64k (0x80504400) //Map 64k Peripheral #1 0x1C000000 - 0x1C00FFFFF\n#define PERIPHERAL_B_TABLE_L2_BASE_64k (0x80504800) //Map 64k Peripheral #2 0x1C100000 - 0x1C1FFFFFF\n\n//--------------------- PERIPHERALS -------------------\n#define PERIPHERAL_A_FAULT (0x00000000 + 0x1c000000) //0x1C000000-0x1C00FFFF (1M)\n#define PERIPHERAL_B_FAULT (0x00100000 + 0x1c000000) //0x1C100000-0x1C10FFFF (1M)\n\n//--------------------- SYNC FLAGS --------------------\n#define FLAG_SYNC     0xFFFFF000\n#define F_SYNC_BASE   0xFFF00000  //1M aligned\n\n//Import symbols from linker\nextern uint32_t Image$$VECTORS$$Base;\nextern uint32_t Image$$RW_DATA$$Base;\nextern uint32_t Image$$ZI_DATA$$Base;\nextern uint32_t Image$$TTB$$ZI$$Base;\n\nstatic uint32_t Sect_Normal;     //outer & inner wb/wa, non-shareable, executable, rw, domain 0, base addr 0\nstatic uint32_t Sect_Normal_Cod; //outer & inner wb/wa, non-shareable, executable, ro, domain 0, base addr 0\nstatic uint32_t Sect_Normal_RO;  //as Sect_Normal_Cod, but not executable\nstatic uint32_t Sect_Normal_RW;  //as Sect_Normal_Cod, but writeable and not executable\nstatic uint32_t Sect_Device_RO;  //device, non-shareable, non-executable, ro, domain 0, base addr 0\nstatic uint32_t Sect_Device_RW;  //as Sect_Device_RO, but writeable\n\n/* Define global descriptors */\nstatic uint32_t Page_L1_4k  = 0x0;  //generic\nstatic uint32_t Page_L1_64k = 0x0;  //generic\nstatic uint32_t Page_4k_Device_RW;  //Shared device, not executable, rw, domain 0\nstatic uint32_t Page_64k_Device_RW; //Shared device, not executable, rw, domain 0\n\nvoid MMU_CreateTranslationTable(void)\n{\n    mmu_region_attributes_Type region;\n\n    //Create 4GB of faulting entries\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, 0, 4096, DESCRIPTOR_FAULT);\n\n    /*\n     * Generate descriptors. Refer to core_ca.h to get information about attributes\n     *\n     */\n    //Create descriptors for Vectors, RO, RW, ZI sections\n    section_normal(Sect_Normal, region);\n    section_normal_cod(Sect_Normal_Cod, region);\n    section_normal_ro(Sect_Normal_RO, region);\n    section_normal_rw(Sect_Normal_RW, region);\n    //Create descriptors for peripherals\n    section_device_ro(Sect_Device_RO, region);\n    section_device_rw(Sect_Device_RW, region);\n    //Create descriptors for 64k pages\n    page64k_device_rw(Page_L1_64k, Page_64k_Device_RW, region);\n    //Create descriptors for 4k pages\n    page4k_device_rw(Page_L1_4k, Page_4k_Device_RW, region);\n\n\n    /*\n     *  Define MMU flat-map regions and attributes\n     *\n     */\n\n    //Define Image\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$VECTORS$$Base, 2, Sect_Normal_Cod);\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RW_DATA$$Base, 1, Sect_Normal_RW);\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$ZI_DATA$$Base, 1, Sect_Normal_RW);\n\n    //all DRAM executable, rw, cacheable - applications may choose to divide memory into ro executable\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$TTB$$ZI$$Base, 2043, Sect_Normal);\n\n    //--------------------- PERIPHERALS -------------------\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, VE_A5_MP_FLASH_BASE0    , 64, Sect_Device_RO);\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, VE_A5_MP_FLASH_BASE1    , 64, Sect_Device_RO);\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, VE_A5_MP_SRAM_BASE      , 64, Sect_Device_RW);\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, VE_A5_MP_VRAM_BASE      , 32, Sect_Device_RW);\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, VE_A5_MP_ETHERNET_BASE  , 16, Sect_Device_RW);\n    MMU_TTSection (&Image$$TTB$$ZI$$Base, VE_A5_MP_USB_BASE       , 16, Sect_Device_RW);\n\n    // Create (16 * 64k)=1MB faulting entries to cover peripheral range 0x1C000000-0x1C00FFFF\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, PERIPHERAL_A_FAULT      , 16, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, DESCRIPTOR_FAULT);\n    // Define peripheral range 0x1C000000-0x1C00FFFF\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_DAP_BASE       ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_SYSTEM_REG_BASE,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_SERIAL_BASE    ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_AACI_BASE      ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_MMCI_BASE      ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_KMI0_BASE      ,  2, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_UART_BASE      ,  4, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_WDT_BASE       ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_A_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n\n    // Create (16 * 64k)=1MB faulting entries to cover peripheral range 0x1C100000-0x1C10FFFF\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, PERIPHERAL_B_FAULT      , 16, Page_L1_64k, (uint32_t *)PERIPHERAL_B_TABLE_L2_BASE_64k, DESCRIPTOR_FAULT);\n    // Define peripheral range 0x1C100000-0x1C10FFFF\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_TIMER_BASE     ,  2, Page_L1_64k, (uint32_t *)PERIPHERAL_B_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_DVI_BASE       ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_B_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_RTC_BASE       ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_B_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_UART4_BASE     ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_B_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n    MMU_TTPage64k(&Image$$TTB$$ZI$$Base, VE_A5_MP_CLCD_BASE      ,  1, Page_L1_64k, (uint32_t *)PERIPHERAL_B_TABLE_L2_BASE_64k, Page_64k_Device_RW);\n\n    // Create (256 * 4k)=1MB faulting entries to cover private address space. Needs to be marked as Device memory\n    MMU_TTPage4k (&Image$$TTB$$ZI$$Base, __get_CBAR()            ,256,  Page_L1_4k, (uint32_t *)PRIVATE_TABLE_L2_BASE_4k, DESCRIPTOR_FAULT);\n    // Define private address space entry.\n    MMU_TTPage4k (&Image$$TTB$$ZI$$Base, __get_CBAR()            ,  3,  Page_L1_4k, (uint32_t *)PRIVATE_TABLE_L2_BASE_4k, Page_4k_Device_RW);\n    // Define L2CC entry.  Uncomment if PL310 is present\n    //    MMU_TTPage4k (&Image$$TTB$$ZI$$Base, VE_A5_MP_PL310_BASE     ,  1,  Page_L1_4k, (uint32_t *)PRIVATE_TABLE_L2_BASE_4k, Page_4k_Device_RW);\n\n    // Create (256 * 4k)=1MB faulting entries to synchronization space (Useful if some non-cacheable DMA agent is present in the SoC)\n    MMU_TTPage4k (&Image$$TTB$$ZI$$Base, F_SYNC_BASE , 256, Page_L1_4k, (uint32_t *)SYNC_FLAGS_TABLE_L2_BASE_4k, DESCRIPTOR_FAULT);\n    // Define synchronization space entry.\n    MMU_TTPage4k (&Image$$TTB$$ZI$$Base, FLAG_SYNC   ,   1, Page_L1_4k, (uint32_t *)SYNC_FLAGS_TABLE_L2_BASE_4k, Page_4k_Device_RW);\n\n    /* Set location of level 1 page table\n    ; 31:14 - Translation table base addr (31:14-TTBCR.N, TTBCR.N is 0 out of reset)\n    ; 13:7  - 0x0\n    ; 6     - IRGN[0] 0x1  (Inner WB WA)\n    ; 5     - NOS     0x0  (Non-shared)\n    ; 4:3   - RGN     0x01 (Outer WB WA)\n    ; 2     - IMP     0x0  (Implementation Defined)\n    ; 1     - S       0x0  (Non-shared)\n    ; 0     - IRGN[1] 0x0  (Inner WB WA) */\n    __set_TTBR0(((uint32_t)&Image$$TTB$$ZI$$Base) | 0x48);\n    __ISB();\n\n    /* Set up domain access control register\n    ; We set domain 0 to Client and all other domains to No Access.\n    ; All translation table entries specify domain 0 */\n    __set_DACR(1);\n    __ISB();\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/Device/ARMCA5/startup_ARMCA5.c",
    "content": "/******************************************************************************\n * @file     startup_ARMCA5.c\n * @brief    CMSIS Device System Source File for Arm Cortex-A5 Device Series\n * @version  V1.00\n * @date     10. January 2018\n *\n * @note\n *\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include <ARMCA5.h>\n\n/*----------------------------------------------------------------------------\n  Definitions\n *----------------------------------------------------------------------------*/\n#define USR_MODE 0x10            // User mode\n#define FIQ_MODE 0x11            // Fast Interrupt Request mode\n#define IRQ_MODE 0x12            // Interrupt Request mode\n#define SVC_MODE 0x13            // Supervisor mode\n#define ABT_MODE 0x17            // Abort mode\n#define UND_MODE 0x1B            // Undefined Instruction mode\n#define SYS_MODE 0x1F            // System mode\n\n/*----------------------------------------------------------------------------\n  Internal References\n *----------------------------------------------------------------------------*/\nvoid Vectors       (void) __attribute__ ((naked, section(\"RESET\")));\nvoid Reset_Handler (void) __attribute__ ((naked));\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Handler\n *----------------------------------------------------------------------------*/\nvoid Undef_Handler (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SVC_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid PAbt_Handler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid DAbt_Handler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid IRQ_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid FIQ_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Vector Table\n *----------------------------------------------------------------------------*/\nvoid Vectors(void) {\n  __ASM volatile(\n  \"LDR    PC, =Reset_Handler                        \\n\"\n  \"LDR    PC, =Undef_Handler                        \\n\"\n  \"LDR    PC, =SVC_Handler                          \\n\"\n  \"LDR    PC, =PAbt_Handler                         \\n\"\n  \"LDR    PC, =DAbt_Handler                         \\n\"\n  \"NOP                                              \\n\"\n  \"LDR    PC, =IRQ_Handler                          \\n\"\n  \"LDR    PC, =FIQ_Handler                          \\n\"\n  );\n}\n\n/*----------------------------------------------------------------------------\n  Reset Handler called on controller reset\n *----------------------------------------------------------------------------*/\nvoid Reset_Handler(void) {\n  __ASM volatile(\n\n  // Mask interrupts\n  \"CPSID   if                                      \\n\"\n\n  // Put any cores other than 0 to sleep\n  \"MRC     p15, 0, R0, c0, c0, 5                   \\n\"  // Read MPIDR\n  \"ANDS    R0, R0, #3                              \\n\"\n  \"goToSleep:                                      \\n\"\n  \"WFINE                                           \\n\"\n  \"BNE     goToSleep                               \\n\"\n\n  // Reset SCTLR Settings\n  \"MRC     p15, 0, R0, c1, c0, 0                   \\n\"  // Read CP15 System Control register\n  \"BIC     R0, R0, #(0x1 << 12)                    \\n\"  // Clear I bit 12 to disable I Cache\n  \"BIC     R0, R0, #(0x1 <<  2)                    \\n\"  // Clear C bit  2 to disable D Cache\n  \"BIC     R0, R0, #0x1                            \\n\"  // Clear M bit  0 to disable MMU\n  \"BIC     R0, R0, #(0x1 << 11)                    \\n\"  // Clear Z bit 11 to disable branch prediction\n  \"BIC     R0, R0, #(0x1 << 13)                    \\n\"  // Clear V bit 13 to disable hivecs\n  \"MCR     p15, 0, R0, c1, c0, 0                   \\n\"  // Write value back to CP15 System Control register\n  \"ISB                                             \\n\"\n\n  // Configure ACTLR\n  \"MRC     p15, 0, r0, c1, c0, 1                   \\n\"  // Read CP15 Auxiliary Control Register\n  \"ORR     r0, r0, #(1 <<  1)                      \\n\"  // Enable L2 prefetch hint (UNK/WI since r4p1)\n  \"MCR     p15, 0, r0, c1, c0, 1                   \\n\"  // Write CP15 Auxiliary Control Register\n\n  // Set Vector Base Address Register (VBAR) to point to this application's vector table\n  \"LDR    R0, =Vectors                             \\n\"\n  \"MCR    p15, 0, R0, c12, c0, 0                   \\n\"\n\n  // Setup Stack for each exceptional mode\n  \"CPS    #0x11                                    \\n\"\n  \"LDR    SP, =Image$$FIQ_STACK$$ZI$$Limit         \\n\"\n  \"CPS    #0x12                                    \\n\"\n  \"LDR    SP, =Image$$IRQ_STACK$$ZI$$Limit         \\n\"\n  \"CPS    #0x13                                    \\n\"\n  \"LDR    SP, =Image$$SVC_STACK$$ZI$$Limit         \\n\"\n  \"CPS    #0x17                                    \\n\"\n  \"LDR    SP, =Image$$ABT_STACK$$ZI$$Limit         \\n\"\n  \"CPS    #0x1B                                    \\n\"\n  \"LDR    SP, =Image$$UND_STACK$$ZI$$Limit         \\n\"\n  \"CPS    #0x1F                                    \\n\"\n  \"LDR    SP, =Image$$ARM_LIB_STACK$$ZI$$Limit     \\n\"\n\n  // Call SystemInit\n  \"BL     SystemInit                               \\n\"\n\n  // Unmask interrupts\n  \"CPSIE  if                                       \\n\"\n\n  // Call __main\n  \"BL     __main                                   \\n\"\n  );\n}\n\n/*----------------------------------------------------------------------------\n  Default Handler for Exceptions / Interrupts\n *----------------------------------------------------------------------------*/\nvoid Default_Handler(void) {\n  while(1);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/Device/ARMCA5/system_ARMCA5.c",
    "content": "/******************************************************************************\n * @file     system_ARMCA5.c\n * @brief    CMSIS Device System Source File for Arm Cortex-A5 Device Series\n * @version  V1.0.1\n * @date     13. February 2019\n *\n * @note\n *\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n#include \"irq_ctrl.h\"\n\n#define  SYSTEM_CLOCK  12000000U\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System Initialization\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n/* do not use global variables because this function is called before\n   reaching pre-main. RW section may be overwritten afterwards.          */\n\n  // Invalidate entire Unified TLB\n  __set_TLBIALL(0);\n\n  // Invalidate entire branch predictor array\n  __set_BPIALL(0);\n  __DSB();\n  __ISB();\n\n  //  Invalidate instruction cache and flush branch target cache\n  __set_ICIALLU(0);\n  __DSB();\n  __ISB();\n\n  //  Invalidate data cache\n  L1C_InvalidateDCacheAll();\n\n#if ((__FPU_PRESENT == 1) && (__FPU_USED == 1))\n  // Enable FPU\n  __FPU_Enable();\n#endif\n\n  // Create Translation Table\n  MMU_CreateTranslationTable();\n\n  // Enable MMU\n  MMU_Enable();\n\n  // Enable Caches\n  L1C_EnableCaches();\n  L1C_EnableBTAC();\n\n#if (__L2C_PRESENT == 1) \n  // Enable GIC\n  L2C_Enable();\n#endif\n\n  // IRQ Initialize\n  IRQ_Initialize();\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/Device/ARMCA5/system_ARMCA5.h",
    "content": "/******************************************************************************\n * @file     system_ARMCA5.h\n * @brief    CMSIS Device System Header File for Arm Cortex-A5 Device Series\n * @version  V1.00\n * @date     10. January 2018\n *\n * @note\n *\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __SYSTEM_ARMCA5_H\n#define __SYSTEM_ARMCA5_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <stdint.h>\n\nextern uint32_t SystemCoreClock;     /*!< System Clock Frequency (Core Clock)  */\n\n/**\n  \\brief Setup the microcontroller system.\n\n   Initialize the System and update the SystemCoreClock variable.\n */\nextern void SystemInit (void);\n\n\n/**\n  \\brief  Update SystemCoreClock variable.\n\n   Updates the SystemCoreClock with current core Clock retrieved from cpu registers.\n */\nextern void SystemCoreClockUpdate (void);\n\n/**\n  \\brief  Create Translation Table.\n\n   Creates Memory Management Unit Translation Table.\n */\nextern void MMU_CreateTranslationTable(void);\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __SYSTEM_ARMCA5_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/RTE/RTE_Components.h",
    "content": "/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: DspLibTest_FVP_A5\n * RTE configuration: DspLibTest_FVP_A5.rteconfig\n*/\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n/*\n * Define the Device Header File:\n*/\n#define CMSIS_device_header \"ARMCA5.h\"\n\n#define RTE_CMSIS_RTOS2                 /* CMSIS-RTOS2 */\n        #define RTE_CMSIS_RTOS2_RTX5            /* CMSIS-RTOS2 Keil RTX5 */\n        #define RTE_CMSIS_RTOS2_RTX5_SOURCE     /* CMSIS-RTOS2 Keil RTX5 Source */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP_A5/main.c",
    "content": "/* -------------------------------------------------------------------------- \n * Copyright (c) 2013-2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *---------------------------------------------------------------------------*/\n\n#include <stdio.h>\n\n#include \"jtest.h\"\n#include \"all_tests.h\"\n#include \"arm_math.h\"\n\n\nint main (void) {\n\n  JTEST_INIT();                 /* Initialize test framework. */\n  JTEST_GROUP_CALL(all_tests);  /* Run all tests. */\n  JTEST_ACT_EXIT_FW();          /* Exit test framework.  */\n\n  while(1);\t\t\t\t\t\t/* Never return */\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_MPS2/HowTo.txt",
    "content": "\nUsed board:\n   MPS2+.\n\nUsed BIOS:\n  mbb_v121.ebf         ; use this for ULINKpro\n  mbb_v220.ebf         ; CMSIS-DAP\n\nUsed Images:\n  AN382\\an382_v3.txt   ; Cortex-M0\n  AN385\\an385_v3.txt   ; Cortex-M3\n  AN386\\an386_v3.txt   ; Cortex-M4\n  AN500\\an500_v1.txt   ; Cortex-M7\n  AN505\\an505_v2.txt   ; Cortex-M33 (IoT Kit)\n  AN519\\an519_v1.txt   ; Cortex-M23 (IoT Kit)\n\nUsed Debugger:\n  IoT Kit:\n    ULINKpro, JTAG, 25MHz, HW Reset\n  other:\n    ULINKpro, JTAG, 25MHz, Autodetect\n\nMemory Settings:\n  IoT Kit:\n    ROM: 0x10000000\n    RAM: 0x38000000    \n  other:\n    ROM: 0x00000000\n    RAM: 0x20000000"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/ARMv8MBLl_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/ARMv8MMLl_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=0                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=0                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/ARMv8MMLld_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=0                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=1                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/ARMv8MMLldfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=1                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=1                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/ARMv8MMLlfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=1                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=0                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/cortexM0l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm0ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm0ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm0ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm0ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/cortexM3l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm3ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm3ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm3ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm3ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/cortexM4l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm4ct.vfp-present=0                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm4ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm4ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm4ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm4ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/cortexM4lf_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm4ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm4ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm4ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm4ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm4ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/cortexM7l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=0                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/cortexM7lfdp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_FVP/cortexM7lfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/ARMv8MBLl_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/ARMv8MMLl_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=0                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=0                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/ARMv8MMLld_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=0                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=1                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/ARMv8MMLldfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=1                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=1                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/ARMv8MMLlfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\ncpu0.FPU=1                                            # (bool  , init-time) default = '1'      : Set whether the model has VFP support\ncpu0.DSP=0                                            # (bool  , init-time) default = '1'      : Set whether the model has the DSP extension\ncpu0.semihosting-enable=0                             # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\ncpu0.min_sync_level=0x3                               # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\ncpu0.cpi_mul=0x1                                      # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.cpi_div=0x1                                      # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\ncpu0.SECEXT=0                                         # (bool  , init-time) default = '1'      : Whether the ARMv8-M Security Extensions are included\nidau.NUM_IDAU_REGION=0x0                              # (int   , init-time) default = '0xA'    : \nfvp_mps2.DISABLE_GATING=1                             # (bool  , init-time) default = '0'      : Disable Memory gating logic\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/cortexM0l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm0ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm0ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm0ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm0ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/cortexM3l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm3ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm3ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm3ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm3ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/cortexM4l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm4ct.vfp-present=0                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm4ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm4ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm4ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm4ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/cortexM4lf_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm4ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm4ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm4ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm4ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm4ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/cortexM7l_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=0                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/cortexM7lfdp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_SV_MPS2/cortexM7lfsp_config.txt",
    "content": "# Parameters:\n# instance.parameter=value       #(type, mode) default = 'def value' : description : [min..max]\n#----------------------------------------------------------------------------------------------\narmcortexm7ct.vfp-present=1                           # (bool  , init-time) default = '1'      : Set whether the model has VFP support\narmcortexm7ct.semihosting-enable=0                    # (bool  , init-time) default = '1'      : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false.\narmcortexm7ct.min_sync_level=0x3                      # (int   , run-time ) default = '0x0'    : force minimum syncLevel (0=off=default,1=syncState,2=postInsnIO,3=postInsnAll) : [0x0..0x3]\narmcortexm7ct.cpi_mul=0x1                             # (int   , run-time ) default = '0x1'    : multiplier for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\narmcortexm7ct.cpi_div=0x1                             # (int   , run-time ) default = '0x1'    : divider for calculating CPI (Cycles Per Instruction) : [0x1..0x7FFFFFFF]\n#----------------------------------------------------------------------------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/HowTo.txt",
    "content": "HowTo DSP_Lib_TestSuite     18.02.2019\n=======================================\n\nThis file describes the folder structure, content, prerequisites and instructions to validate the\nbuild of the CMSIS-DSP library. This is done by processing input data sets using the DSP Library\nfunctions executing on a target simulator or hardware. The output data sets are then compared \nwith the reference data set produced by unoptimized DSP functions and a Signal to Noise Ratio (SNR)\nis computed. If the SNR is below a defined threshold the test is considered \"passed\".\n\n\nFolder structure\n----------------\n\t.\\DSP_Lib_TestSuite                                       Batch files for building the reference libraries and running the tests.\n\t.\\DSP_Lib_TestSuite\\Common\n\t.\\DSP_Lib_TestSuite\\Common\\inc                            DSP_Lib test include files\n\t.\\DSP_Lib_TestSuite\\Common\\JTest                          JTEST Test Framework + INI files for uVision\n\t.\\DSP_Lib_TestSuite\\Common\\platform                       ARM/GCC device startup/system files\n\t.\\DSP_Lib_TestSuite\\Common\\src                            DSP_Lib test source files\n\t.\\DSP_Lib_TestSuite\\DspLibTest_FVP                        ARM/GCC DSP_Lib test projects for Fixed Virtual Platforms\n\t.\\DSP_Lib_TestSuite\\DspLibTest_MPS2                       ARM/GCC DSP_Lib test projects for MPS2\n\t.\\DSP_Lib_TestSuite\\DspLibTest_Simulator                  ARM/GCC DSP_Lib test projects for uVision simulator\n\t.\\DSP_Lib_TestSuite\\RefLibs                               ARM/GCC DSP_Lib reference libraries (and projects)\n\n\n\nPrerequisites\n--------------\n - Python (running on Windows). Tested with ActivePython 2.7.8.10.\n - Keil MDK-ARM (tested with MDK-ARM 5.22: http://www2.keil.com/mdk5)\n - ULINKpro debug adapter (http://www2.keil.com/mdk5/ulink)\n - MPS2 (Cortex-M Prototyping System:https://www.arm.com/products/tools/development-boards/versatile-express/cortex-m-prototyping-system.php)\n - CMSIS 5.0.0 (https://github.com/ARM-software/CMSIS_5/releases/tag/5.0.0)\n\n\nSetup\n------\n - remove 'read-only' tag from folder .\\CMSIS\\DSP\\Lib\n   (required for rebuild of the DSP_Lib libraries)\n\n - open a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite.\n\n\n\nHow to run the tests\n---------------------\n\na) build the DSP_Lib libraries:\n - batch file: buildDspLibs.bat \n   Note: only require if the DSP_Lib source code got updated or the desired configuration is missing\n   buildDspLibs.bat overwrites the prebuild libraries in .\\CMSIS\\DSP\\Lib.\n   Log files of the build process are generated in folder .\\CMSIS\\DSP\\DSP_Lib/[ARM|GCC]\n - run:  buildDspLibs.bat in a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite\n         buildDspLibs ARM        -> builds the ARMCC libraries\n         buildDspLibs GCC        -> builds the GCC libraries\n\nb) build the reference libraries:\n - batch file: buildRefLibs.bat\n   \n   Log files of the build process are generated in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite\\RefLibs/[ARM|GCC]\n - run: buildRefLibs.bat in a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite\n        buildRefLibs ARM        -> builds the ARMCC reference libraries\n        buildRefLibs GCC        -> builds the GCC reference libraries\n\nc) running an individual test using uVision (MDK-ARM):\n - batch file: runTest.bat\n - run:  runTest.bat in a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite\n         runTest                                -> prints usage information\n    e.g. runTest ARM cortexM4lf Simulator       -> runs the test for toolchain ARM, Cortex-M4 littel endian with FPU, uVision Simulator.\n\n   Tests running on MPS2 requires additional steps to setup. See section 'MPS2'.\n\nd) parsing the test output log file\n - script: parseLog.py \n - run:  parseLog.py python script in a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite\n   command line options should match the invocation of the runTest executed before.\n   e.g: runTest ARM cortexM4lf Simulator  ->  python parseLog.py ARM cortexM4lf Simulator\n   \n - check the test log\n   depending on your test parameters change into the required folder\n      .\\DSP_Lib_TestSuite\\DspLibTest_[FVP|MPS2|Simulator]\\[ARM|GCC]\\Logs\n   the folder will contain the following files (e.g. for a 'runTest') :\n       DspLibTest_Simulator.log                    raw result of the last test run.\n       DspLibTest_Simulator_cortexM4lf.log         raw result of a cortexM4lf test run\n       DspLibTest_Simulator_cortexM4lf_build.log   build result of cortexM4lf test\n       DspLibTest_Simulator_cortexM4lf_parsed.log  parsed log of raw result of a cortexM4lf test run\n       DspLibTest_Simulator_cortexM4lf_time.log    log how long the test took (some tests e.g. M0 take really a long time!).\n   'runTest' produces files of the format:     DspLibTest_<test>_<core>...\n\n\nDifferences between the tests for FVP, MPS2, Simulator\n------------------------------------------------------\n - all tests are identical except for:\n    'Simulator' uses uVision with uVision simulator and generates also code coverage information\n         can be used for little/big endian tests\n         ! do not use 'Simulator' for M7 with FPU      -> no uVision simulation available.\n         ! do not use 'Simulator' for ARMv8-M devices  -> no uVision simulation available.\n    'MPS2' uses uVision with ULINKpro debugger and MPS2. No code coverage information is generated.\n         can be used for little endian only (because of the lack of MPS2 FPGA images).\n    'FVP' uses uVision with Models debugger. No code coverage information is generated.\n         can be used for little/big endian tests.\n         ! config files must be prepared.\n         ! uVision target for big endianess are not yet prepared.\n\n\nSetup 'MPS2'\n-------------\n - load the appropriate FPGA image to the MPS2 board matching the CPU of the test builds prior to running the test\n - check if ULINKpro can connect with the configured debug connection (JTAG or SWD) as this must\n   match the protocol implemented in the FPGA image.\n \n\nHow to select tests for \"run all tests\"\n----------------------------------------\n - edit .\\CMSIS\\DSP\\DSP_Lib_TestSuite\\Common\\src\\all_tests.c\n   comment out all unwanted test groups.\n   e.g.  //    JTEST_GROUP_CALL(complex_math_tests);\n\n - edit .\\CMSIS\\DSP\\DSP_Lib_TestSuite\\Common\\src\\<test group>/<test group>_group.c\n   comment out all unwanted sub test groups.\n   e.g. file .\\DSP_Lib_TestSuite\\Common\\src\\basic_math_tests\\basic_math_test_group.c ->  //    JTEST_GROUP_CALL(abs_tests);\n\n - edit .\\CMSIS\\DSP\\DSP_Lib_TestSuite\\Common\\src\\<test group>/<test>_tests.c\n   comment out all unwanted tests.\n   e.g. file .\\DSP_Lib_TestSuite\\Common\\src\\basic_math_tests\\abs_tests.c  ->  //    JTEST_TEST_CALL(arm_abs_f32_test);\n\n\nNotes\n-----\n - How to use ARM Clang (ARM Compiler 6):\n   in uVision 'Options for Target' tab you can select which compiler to use\n   by default uVision uses ARMCC V5 for Cortex-M devices and ARMCLANG V6 only for ARMv8M.\n   Only ARMv8M cores have been tested using ARMCLANG\n\n - test data used for the tests is used as provided by DSP Concepts.\n\n - some tests run for a very long time before they finish. This is expected\n \n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/HowTo_SV.txt",
    "content": "HowTo DSP_Lib_TestSuite  (Source Variant)   18.02.2019\n======================================================\n\nThis file describes the folder structure, content, prerequisites and instructions to validate the\nbuild of the CMSIS-DSP library. This is done by processing input data sets using the DSP Library\nfunctions executing on a target simulator or hardware. The output data sets are then compared \nwith the reference data set produced by unoptimized DSP functions and a Signal to Noise Ratio (SNR)\nis computed. If the SNR is below a defined threshold the test is considered \"passed\".\n\n\nFolder structure\n----------------\n\t.\\DSP_Lib_TestSuite                                       Batch files for building the reference libraries and running the tests.\n\t.\\DSP_Lib_TestSuite\\Common\n\t.\\DSP_Lib_TestSuite\\Common\\inc                            DSP_Lib test include files\n\t.\\DSP_Lib_TestSuite\\Common\\JTest                          JTEST Test Framework + INI files for uVision\n\t.\\DSP_Lib_TestSuite\\Common\\platform                       ARM/GCC device startup/system files\n\t.\\DSP_Lib_TestSuite\\Common\\src                            DSP_Lib test source files\n\t.\\DSP_Lib_TestSuite\\DspLibTest_FVP                        ARM/GCC DSP_Lib test projects for Fixed Virtual Platforms\n\t.\\DSP_Lib_TestSuite\\DspLibTest_MPS2                       ARM/GCC DSP_Lib test projects for MPS2\n\t.\\DSP_Lib_TestSuite\\DspLibTest_Simulator                  ARM/GCC DSP_Lib test projects for uVision simulator\n\t.\\DSP_Lib_TestSuite\\RefLibs                               ARM/GCC DSP_Lib reference libraries (and projects)\n\n\n\nPrerequisites\n--------------\n - Python (running on Windows). Tested with ActivePython 2.7.8.10.\n - Keil MDK-ARM (tested with MDK-ARM 5.22: http://www2.keil.com/mdk5)\n - ULINKpro debug adapter (http://www2.keil.com/mdk5/ulink)\n - MPS2 (Cortex-M Prototyping System:https://www.arm.com/products/tools/development-boards/versatile-express/cortex-m-prototyping-system.php)\n - CMSIS 5.0.0 (https://github.com/ARM-software/CMSIS_5/releases/tag/5.0.0)\n\n\nSetup\n------\n - open a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite.\n\n\n\nHow to run the tests\n---------------------\n\na) running an individual test using uVision (MDK-ARM):\n - batch file: runTest_SV.bat\n - run:  runTest_SV.bat in a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite\n         runTest_SV                                -> prints usage information\n    e.g. runTest_SV ARM cortexM4lf Simulator       -> runs the test for toolchain ARM, Cortex-M4 littel endian with FPU, uVision Simulator.\n\n   Tests running on MPS2 requires additional steps to setup. See section 'MPS2'.\n\nd) parsing the test output log file\n - script: parseLog_SV.py \n - run:  parseLog_SV.py python script in a Windows command window in folder .\\CMSIS\\DSP\\DSP_Lib_TestSuite\n   command line options should match the invocation of the runTest executed before.\n   e.g: runTest ARM cortexM4lf Simulator  ->  python parseLog.py ARM cortexM4lf Simulator\n   \n - check the test log\n   depending on your test parameters change into the required folder\n      .\\DSP_Lib_TestSuite\\DspLibTest_[FVP|MPS2|Simulator]\\[ARM|GCC]\\Logs\n   the folder will contain the following files (e.g. for a 'runTest') :\n       DspLibTest_Simulator.log                    raw result of the last test run.\n       DspLibTest_Simulator_cortexM4lf.log         raw result of a cortexM4lf test run\n       DspLibTest_Simulator_cortexM4lf_build.log   build result of cortexM4lf test\n       DspLibTest_Simulator_cortexM4lf_parsed.log  parsed log of raw result of a cortexM4lf test run\n       DspLibTest_Simulator_cortexM4lf_time.log    log how long the test took (some tests e.g. M0 take really a long time!).\n   'runTest' produces files of the format:     DspLibTest_<test>_<core>...\n\n\nDifferences between the tests for FVP, MPS2, Simulator\n------------------------------------------------------\n - all tests are identical except for:\n    'Simulator' uses uVision with uVision simulator and generates also code coverage information\n         can be used for little/big endian tests\n         ! do not use 'Simulator' for M7 with FPU      -> no uVision simulation available.\n         ! do not use 'Simulator' for ARMv8-M devices  -> no uVision simulation available.\n    'MPS2' uses uVision with ULINKpro debugger and MPS2. No code coverage information is generated.\n         can be used for little endian only (because of the lack of MPS2 FPGA images).\n    'FVP' uses uVision with Models debugger. No code coverage information is generated.\n         can be used for little/big endian tests.\n         ! config files must be prepared.\n         ! uVision target for big endianess are not yet prepared.\n\n\nSetup 'MPS2'\n-------------\n - load the appropriate FPGA image to the MPS2 board matching the CPU of the test builds prior to running the test\n - check if ULINKpro can connect with the configured debug connection (JTAG or SWD) as this must\n   match the protocol implemented in the FPGA image.\n \n\nHow to select tests for \"run all tests\"\n----------------------------------------\n - edit .\\CMSIS\\DSP\\DSP_Lib_TestSuite\\Common\\src\\all_tests.c\n   comment out all unwanted test groups.\n   e.g.  //    JTEST_GROUP_CALL(complex_math_tests);\n\n - edit .\\CMSIS\\DSP\\DSP_Lib_TestSuite\\Common\\src\\<test group>/<test group>_group.c\n   comment out all unwanted sub test groups.\n   e.g. file .\\DSP_Lib_TestSuite\\Common\\src\\basic_math_tests\\basic_math_test_group.c ->  //    JTEST_GROUP_CALL(abs_tests);\n\n - edit .\\CMSIS\\DSP\\DSP_Lib_TestSuite\\Common\\src\\<test group>/<test>_tests.c\n   comment out all unwanted tests.\n   e.g. file .\\DSP_Lib_TestSuite\\Common\\src\\basic_math_tests\\abs_tests.c  ->  //    JTEST_TEST_CALL(arm_abs_f32_test);\n\n\nNotes\n-----\n - How to use ARM Clang (ARM Compiler 6):\n   in uVision 'Options for Target' tab you can select which compiler to use\n   by default uVision uses ARMCC V5 for Cortex-M devices and ARMCLANG V6 only for ARMv8M.\n   Only ARMv8M cores have been tested using ARMCLANG\n\n - test data used for the tests is used as provided by DSP Concepts.\n\n - some tests run for a very long time before they finish. This is expected\n \n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(DspRefLibs)\n\n# Needed to find the config modules\nlist(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../..)\n\n\n\n\nset(REFSRC src/BasicMathFunctions/abs.c\n  src/BasicMathFunctions/add.c\n  src/BasicMathFunctions/dot_prod.c\n  src/BasicMathFunctions/mult.c\n  src/BasicMathFunctions/negate.c\n  src/BasicMathFunctions/offset.c\n  src/BasicMathFunctions/scale.c\n  src/BasicMathFunctions/shift.c\n  src/BasicMathFunctions/sub.c\n  src/ComplexMathFunctions/cmplx_conj.c\n  src/ComplexMathFunctions/cmplx_dot_prod.c\n  src/ComplexMathFunctions/cmplx_mag.c\n  src/ComplexMathFunctions/cmplx_mag_squared.c\n  src/ComplexMathFunctions/cmplx_mult_cmplx.c\n  src/ComplexMathFunctions/cmplx_mult_real.c\n  src/ControllerFunctions/pid.c\n  src/ControllerFunctions/sin_cos.c\n  src/FastMathFunctions/cos.c\n  src/FastMathFunctions/sin.c\n  src/FastMathFunctions/sqrt.c\n  src/FilteringFunctions/biquad.c\n  src/FilteringFunctions/conv.c\n  src/FilteringFunctions/correlate.c\n  src/FilteringFunctions/fir.c\n  src/FilteringFunctions/fir_decimate.c\n  src/FilteringFunctions/fir_interpolate.c\n  src/FilteringFunctions/fir_lattice.c\n  src/FilteringFunctions/fir_sparse.c\n  src/FilteringFunctions/iir_lattice.c\n  src/FilteringFunctions/lms.c\n  src/HelperFunctions/mat_helper.c\n  src/HelperFunctions/ref_helper.c\n  src/Intrinsics/intrinsics.c\n  src/MatrixFunctions/mat_add.c\n  src/MatrixFunctions/mat_cmplx_mult.c\n  src/MatrixFunctions/mat_inverse.c\n  src/MatrixFunctions/mat_mult.c\n  src/MatrixFunctions/mat_scale.c\n  src/MatrixFunctions/mat_sub.c\n  src/MatrixFunctions/mat_trans.c\n  src/StatisticsFunctions/max.c\n  src/StatisticsFunctions/mean.c\n  src/StatisticsFunctions/min.c\n  src/StatisticsFunctions/power.c\n  src/StatisticsFunctions/rms.c\n  src/StatisticsFunctions/std.c\n  src/StatisticsFunctions/var.c\n  src/SupportFunctions/copy.c\n  src/SupportFunctions/fill.c\n  src/SupportFunctions/fixed_to_fixed.c\n  src/SupportFunctions/fixed_to_float.c\n  src/SupportFunctions/float_to_fixed.c\n  src/TransformFunctions/bitreversal.c\n  src/TransformFunctions/cfft.c\n  src/TransformFunctions/dct4.c\n  src/TransformFunctions/rfft.c\n  )\n\nadd_library(DspRefLibs STATIC ${REFSRC})\n\ninclude(config)\nconfigdsp(DspRefLibs ../../Source)\n\n### Includes\ntarget_include_directories(DspRefLibs PUBLIC \"inc\")\ntarget_include_directories(DspRefLibs PUBLIC \"../../Include\")\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/inc/ref.h",
    "content": "\n#ifndef _REF_H\n#define _REF_H\n\n#include <math.h>\n#include <stdint.h>\n#include \"arm_math.h\"\n\n#ifdef\t__cplusplus\nextern \"C\"\n{\n#endif\n\n#ifndef PI\n#define PI\t\t\t\t\t3.14159265358979f\n#endif\n\n  /**\n   * @brief 8-bit fractional data type in 1.7 format.\n   */\n//  typedef int8_t q7_t;\n\n  /**\n   * @brief 16-bit fractional data type in 1.15 format.\n   */\n//  typedef int16_t q15_t;\n\n  /**\n   * @brief 32-bit fractional data type in 1.31 format.\n   */\n//  typedef int32_t q31_t;\n\n  /**\n   * @brief 64-bit fractional data type in 1.63 format.\n   */\n//  typedef int64_t q63_t;\n\n  /**\n   * @brief 32-bit floating-point type definition.\n   */\n//  typedef float float32_t;\n\n  /**\n   * @brief 64-bit floating-point type definition.\n   */\n//  typedef double float64_t;\n\n\n  /**\n   * @brief Error status returned by some functions in the library.\n   */\n\n  typedef enum\n  {\n    REF_Q7 = 0,\n    REF_Q15,\n    REF_Q31,\n    REF_F32,\n  } dataType;\n\n\n#ifndef FLT_MAX\n#define FLT_MAX  3.40282347e+38F\n#endif \n\n#define DBL_MAX  1.79769313486231571e+308\n\n#ifndef FLT_MIN\n#define FLT_MIN  1.175494351e-38F\n#endif\n#define DBL_MIN  2.22507385850720138e-308\n\n#define SCHAR_MIN (-128)\n    /* mimimum value for an object of type signed char */\n#define SCHAR_MAX 127\n    /* maximum value for an object of type signed char */\n#define UCHAR_MAX 255\n    /* maximum value for an object of type unsigned char */\n#define SHRT_MIN  (-0x8000)\n    /* minimum value for an object of type short int */\n#define SHRT_MAX  0x7fff\n    /* maximum value for an object of type short int */\n#define USHRT_MAX 65535\n    /* maximum value for an object of type unsigned short int */\n#define INT_MIN   (~0x7fffffff)  /* -2147483648 and 0x80000000 are unsigned */\n    /* minimum value for an object of type int */\n#define INT_MAX   0x7fffffff\n    /* maximum value for an object of type int */\n#define UINT_MAX  0xffffffffU\n    /* maximum value for an object of type unsigned int */\n#define LONG_MIN  (~0x7fffffffL)\n    /* minimum value for an object of type long int */\n#define LONG_MAX  0x7fffffffL\n    /* maximum value for an object of type long int */\n#define ULONG_MAX 0xffffffffUL\n    /* maximum value for an object of type unsigned long int */\n\n\t/*\n\t * Ref Lib Global Variables\n\t */\nextern float32_t scratchArray[];\nextern arm_cfft_instance_f32 ref_cfft_sR_f32_len8192;\n\n\t/*\n\t * Ref Lib Functions\n\t */\n\n\t/*\n\t * Helper Functions\n\t */\nq31_t ref_sat_n(q31_t num, uint32_t bits);\n\nq31_t ref_sat_q31(q63_t num);\n\nq15_t ref_sat_q15(q31_t num);\n\nq7_t ref_sat_q7(q15_t num);\n\nfloat32_t ref_pow(float32_t a, uint32_t b);\n\nextern float32_t tempMatrixArray[];\n\nfloat32_t ref_detrm(float32_t *pSrc, float32_t *temp, uint32_t size);\n\nvoid ref_cofact(float32_t *pSrc, float32_t *pDst, float32_t *temp, uint32_t size);\n\nfloat64_t ref_detrm64(float64_t *pSrc, float64_t *temp, uint32_t size);\n\nvoid ref_cofact64(float64_t *pSrc, float64_t *pDst, float64_t *temp, uint32_t size);\n\n\t/*\n\t * Basic Math Functions\n\t */\nvoid ref_abs_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_abs_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_abs_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_abs_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_add_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_add_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_add_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_add_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_dot_prod_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  uint32_t blockSize,\n  float32_t * result);\n\nvoid ref_dot_prod_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  uint32_t blockSize,\n  q63_t * result);\n\nvoid ref_dot_prod_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  uint32_t blockSize,\n  q63_t * result);\n\nvoid ref_dot_prod_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  uint32_t blockSize,\n  q31_t * result);\n\nvoid ref_mult_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_mult_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_mult_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_mult_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_negate_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_negate_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_negate_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_negate_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_offset_f32(\n  float32_t * pSrc,\n  float32_t offset,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_offset_q31(\n  q31_t * pSrc,\n  q31_t offset,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_offset_q15(\n  q15_t * pSrc,\n  q15_t offset,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_offset_q7(\n  q7_t * pSrc,\n  q7_t offset,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_scale_f32(\n  float32_t * pSrc,\n  float32_t scale,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_scale_q31(\n  q31_t * pSrc,\n  q31_t scaleFract,\n  int8_t shift,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_scale_q15(\n  q15_t * pSrc,\n  q15_t scaleFract,\n  int8_t shift,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_scale_q7(\n  q7_t * pSrc,\n  q7_t scaleFract,\n  int8_t shift,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_shift_q31(\n  q31_t * pSrc,\n  int8_t shiftBits,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_shift_q15(\n  q15_t * pSrc,\n  int8_t shiftBits,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_shift_q7(\n  q7_t * pSrc,\n  int8_t shiftBits,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_sub_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_sub_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_sub_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_sub_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\t/*\n\t * Complex Math Functions\n\t */\nvoid ref_cmplx_conj_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_conj_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_conj_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_dot_prod_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  uint32_t numSamples,\n  float32_t * realResult,\n  float32_t * imagResult);\n\nvoid ref_cmplx_dot_prod_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  uint32_t numSamples,\n  q63_t * realResult,\n  q63_t * imagResult);\n\nvoid ref_cmplx_dot_prod_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  uint32_t numSamples,\n  q31_t * realResult,\n  q31_t * imagResult);\n\nvoid ref_cmplx_mag_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mag_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mag_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mag_squared_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mag_squared_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mag_squared_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mult_cmplx_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mult_cmplx_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mult_cmplx_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mult_real_f32(\n  float32_t * pSrcCmplx,\n  float32_t * pSrcReal,\n  float32_t * pCmplxDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mult_real_q31(\n  q31_t * pSrcCmplx,\n  q31_t * pSrcReal,\n  q31_t * pCmplxDst,\n  uint32_t numSamples);\n\nvoid ref_cmplx_mult_real_q15(\n  q15_t * pSrcCmplx,\n  q15_t * pSrcReal,\n  q15_t * pCmplxDst,\n  uint32_t numSamples);\n\n\t/*\n\t * Controller Functions\n\t */\nvoid ref_sin_cos_f32(\n  float32_t theta,\n  float32_t * pSinVal,\n  float32_t * pCosVal);\n\nvoid ref_sin_cos_q31(\n  q31_t theta,\n  q31_t * pSinVal,\n  q31_t * pCosVal);\n\nfloat32_t ref_pid_f32(\n\tarm_pid_instance_f32 * S,\n\tfloat32_t in);\n\nq31_t ref_pid_q31(\n\tarm_pid_instance_q31 * S,\n\tq31_t in);\n\nq15_t ref_pid_q15(\n\tarm_pid_instance_q15 * S,\n\tq15_t in);\n\n\t/*\n\t * Fast Math Functions\n\t */\n#define ref_sin_f32(a) sinf(a)\n\nq31_t ref_sin_q31(q31_t x);\n\nq15_t ref_sin_q15(q15_t x);\n\n#define ref_cos_f32(a) cosf(a)\n\nq31_t ref_cos_q31(q31_t x);\n\nq15_t ref_cos_q15(q15_t x);\n\narm_status ref_sqrt_q31(q31_t in, q31_t * pOut);\n\narm_status ref_sqrt_q15(q15_t in, q15_t * pOut);\n\n\t/*\n\t * Filtering Functions\n\t */\nvoid ref_biquad_cascade_df2T_f32(\n\tconst arm_biquad_cascade_df2T_instance_f32 * S,\n\tfloat32_t * pSrc,\n\tfloat32_t * pDst,\n\tuint32_t blockSize);\n\t\nvoid ref_biquad_cascade_stereo_df2T_f32(\n\tconst arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n\tfloat32_t * pSrc,\n\tfloat32_t * pDst,\n\tuint32_t blockSize);\n\t\nvoid ref_biquad_cascade_df2T_f64(\n\tconst arm_biquad_cascade_df2T_instance_f64 * S,\n\tfloat64_t * pSrc,\n\tfloat64_t * pDst,\n\tuint32_t blockSize);\n\nvoid ref_biquad_cascade_df1_f32(\n  const arm_biquad_casd_df1_inst_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n  \nvoid ref_biquad_cas_df1_32x64_q31(\n  const arm_biquad_cas_df1_32x64_ins_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_biquad_cascade_df1_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_biquad_cascade_df1_fast_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_biquad_cascade_df1_fast_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_biquad_cascade_df1_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_conv_f32(\n  float32_t * pSrcA,\n  uint32_t \t\tsrcALen,\n  float32_t * pSrcB,\n  uint32_t \t\tsrcBLen,\n  float32_t * pDst);\n\narm_status ref_conv_partial_f32(\n  float32_t * pSrcA,\n  uint32_t srcALen,\n  float32_t * pSrcB,\n  uint32_t srcBLen,\n  float32_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\nvoid ref_conv_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\nvoid ref_conv_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\narm_status ref_conv_partial_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\narm_status ref_conv_partial_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\nvoid ref_conv_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst);\n\n#define ref_conv_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,  \\\n                         pScratch1, pScratch2)                  \\\n    ref_conv_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst)\n\nvoid ref_conv_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst);\n  \nvoid ref_conv_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\narm_status ref_conv_partial_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n#define ref_conv_partial_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,  \\\n                                 firstIndex, numPoints,                 \\\n                                 pScratch1, pScratch2)                  \\\n    ref_conv_partial_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,          \\\n                         firstIndex, numPoints)\n\narm_status ref_conv_partial_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n  \narm_status ref_conv_partial_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\nvoid ref_conv_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst);\n\n#define ref_conv_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,   \\\n                        pScratch1, pScratch2)                   \\\n    ref_conv_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst)\n\narm_status ref_conv_partial_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n#define ref_conv_partial_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,   \\\n                                firstIndex, numPoints,                  \\\n                                pScratch1, pScratch2)                   \\\n    ref_conv_partial_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,           \\\n                        firstIndex, numPoints)\n\nvoid ref_correlate_f32(\n  float32_t * pSrcA,\n  uint32_t srcALen,\n  float32_t * pSrcB,\n  uint32_t srcBLen,\n  float32_t * pDst);\n\nvoid ref_correlate_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\nvoid ref_correlate_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\nvoid ref_correlate_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst);\n\n#define ref_correlate_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,  \\\n                         pScratch1)                                  \\\n    ref_correlate_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst)\n\nvoid ref_correlate_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst);\n\nvoid ref_correlate_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch);\n    \nvoid ref_correlate_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst);\n\n#define ref_correlate_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,   \\\n                        pScratch1, pScratch2)                        \\\n    ref_correlate_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst)\n\nvoid ref_fir_f32(\n\tconst arm_fir_instance_f32 * S,\n\tfloat32_t * pSrc,\n\tfloat32_t * pDst,\n\tuint32_t blockSize);\n\nvoid ref_fir_q31(\n  const arm_fir_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_fast_q31(\n  const arm_fir_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_q15(\n  const arm_fir_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_fast_q15(\n  const arm_fir_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_q7(\n  const arm_fir_instance_q7 * S,\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_decimate_f32(\n  const arm_fir_decimate_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_decimate_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_decimate_fast_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_decimate_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_decimate_fast_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_lattice_f32(\n  const arm_fir_lattice_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_lattice_q31(\n  const arm_fir_lattice_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_lattice_q15(\n  const arm_fir_lattice_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_sparse_f32(\n  arm_fir_sparse_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  float32_t * pScratchIn,\n  uint32_t blockSize);\n\nvoid ref_fir_sparse_q31(\n  arm_fir_sparse_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  q31_t * pScratchIn,\n  uint32_t blockSize);\n\nvoid ref_fir_sparse_q15(\n  arm_fir_sparse_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  q15_t * pScratchIn,\n  q31_t * pScratchOut,\n  uint32_t blockSize);\n\nvoid ref_fir_sparse_q7(\n  arm_fir_sparse_instance_q7 * S,\n  q7_t *pSrc,\n  q7_t *pDst,\n  q7_t *pScratchIn,\n  q31_t * pScratchOut,\n  uint32_t blockSize);\n\nvoid ref_iir_lattice_f32(\n  const arm_iir_lattice_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_iir_lattice_q31(\n  const arm_iir_lattice_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_iir_lattice_q15(\n  const arm_iir_lattice_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_lms_f32(\n  const arm_lms_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize);\n\nvoid ref_lms_norm_f32(\n  arm_lms_norm_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize);\n\nvoid ref_lms_q31(\n  const arm_lms_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pRef,\n  q31_t * pOut,\n  q31_t * pErr,\n  uint32_t blockSize);\n\nvoid ref_lms_norm_q31(\n  arm_lms_norm_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pRef,\n  q31_t * pOut,\n  q31_t * pErr,\n  uint32_t blockSize);\n\nvoid ref_lms_q15(\n  const arm_lms_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pRef,\n  q15_t * pOut,\n  q15_t * pErr,\n  uint32_t blockSize);\n\nvoid ref_lms_norm_q15(\n  arm_lms_norm_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pRef,\n  q15_t * pOut,\n  q15_t * pErr,\n  uint32_t blockSize);\n\nvoid ref_fir_interpolate_f32(\n  const arm_fir_interpolate_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_interpolate_q31(\n  const arm_fir_interpolate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fir_interpolate_q15(\n  const arm_fir_interpolate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\t/*\n\t * Matrix Functions\n\t */\narm_status ref_mat_cmplx_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\narm_status ref_mat_cmplx_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\narm_status ref_mat_cmplx_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst);\n\narm_status ref_mat_inverse_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  arm_matrix_instance_f32 * pDst);\n\narm_status ref_mat_inverse_f64(\n  const arm_matrix_instance_f64 * pSrc,\n  arm_matrix_instance_f64 * pDst);\n\narm_status ref_mat_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\narm_status ref_mat_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\n/* Alias for testing purposes*/\n#define ref_mat_mult_fast_q31 ref_mat_mult_q31\n\narm_status ref_mat_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst);\n\n/* Alias for testing purposes*/\n#define ref_mat_mult_fast_q15 ref_mat_mult_q15\n\narm_status ref_mat_scale_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  float32_t scale,\n  arm_matrix_instance_f32 * pDst);\n\narm_status ref_mat_scale_q31(\n  const arm_matrix_instance_q31 * pSrc,\n  q31_t scale,\n  int32_t shift,\n  arm_matrix_instance_q31 * pDst);\n\narm_status ref_mat_scale_q15(\n  const arm_matrix_instance_q15 * pSrc,\n  q15_t scale,\n  int32_t shift,\n  arm_matrix_instance_q15 * pDst);\n\narm_status ref_mat_sub_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\narm_status ref_mat_sub_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\narm_status ref_mat_sub_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst);\n\narm_status ref_mat_trans_f64(\n  const arm_matrix_instance_f64 * pSrc,\n  arm_matrix_instance_f64 * pDst);\n\narm_status ref_mat_trans_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  arm_matrix_instance_f32 * pDst);\n\narm_status ref_mat_trans_q31(\n  const arm_matrix_instance_q31 * pSrc,\n  arm_matrix_instance_q31 * pDst);\n\narm_status ref_mat_trans_q15(\n  const arm_matrix_instance_q15 * pSrc,\n  arm_matrix_instance_q15 * pDst);\n\narm_status ref_mat_add_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\narm_status ref_mat_add_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\narm_status ref_mat_add_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst);\n\n\t/*\n\t * Statistics Functions\n\t */\nvoid ref_max_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_max_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_max_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_max_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_mean_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\nvoid ref_mean_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\nvoid ref_mean_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\nvoid ref_mean_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult);\n\nvoid ref_min_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_min_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_min_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_min_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult,\n  uint32_t * pIndex);\n\nvoid ref_power_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\nvoid ref_power_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q63_t * pResult);\n\nvoid ref_power_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q63_t * pResult);\n\nvoid ref_power_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\nvoid ref_rms_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\nvoid ref_rms_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\nvoid ref_rms_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\nvoid ref_std_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\nvoid ref_std_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\nvoid ref_std_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\nvoid ref_var_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\nvoid ref_var_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\nvoid ref_var_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\n\t/*\n\t * Support Functions\n\t */\nvoid ref_copy_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_copy_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_copy_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_copy_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fill_f32(\n  float32_t value,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fill_q31(\n  q31_t value,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fill_q15(\n  q15_t value,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_fill_q7(\n  q7_t value,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q31_to_q15(\n  q31_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q31_to_q7(\n  q31_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q15_to_q31(\n  q15_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q15_to_q7(\n  q15_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q7_to_q31(\n  q7_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q7_to_q15(\n  q7_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q63_to_float(\n  q63_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q31_to_float(\n  q31_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q15_to_float(\n  q15_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_q7_to_float(\n  q7_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_float_to_q31(\n  float32_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_float_to_q15(\n  float32_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\nvoid ref_float_to_q7(\n  float32_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\t/*\n\t * Transform Functions\n\t */\nvoid ref_cfft_f32(\n   const arm_cfft_instance_f32 * S,\n   float32_t * p1,\n   uint8_t ifftFlag,\n   uint8_t bitReverseFlag);\n\t \nvoid ref_cfft_q31(\n\tconst arm_cfft_instance_q31 * S,\n    q31_t * p1,\n    uint8_t ifftFlag,\n    uint8_t bitReverseFlag);\n\t \nvoid ref_cfft_q15(\n\tconst arm_cfft_instance_q15 * S,\n    q15_t * p1,\n    uint8_t ifftFlag,\n    uint8_t bitReverseFlag);\n\nvoid ref_cfft_radix2_f32(\n\tconst arm_cfft_radix2_instance_f32 * S,\n\tfloat32_t * pSrc);\n\nvoid ref_cfft_radix2_q31(\n\tconst arm_cfft_radix2_instance_q31 * S,\n\tq31_t * pSrc);\n\nvoid ref_cfft_radix2_q15(\n\tconst arm_cfft_radix2_instance_q15 * S,\n\tq15_t * pSrc);\n\nvoid ref_cfft_radix4_f32(\n\tconst arm_cfft_radix4_instance_f32 * S,\n\tfloat32_t * pSrc);\n\nvoid ref_cfft_radix4_q31(\n\tconst arm_cfft_radix4_instance_q31 * S,\n\tq31_t * pSrc);\n\nvoid ref_cfft_radix4_q15(\n\tconst arm_cfft_radix4_instance_q15 * S,\n\tq15_t * pSrc);\n\nvoid ref_rfft_f32(\n\tarm_rfft_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst);\n\nvoid ref_rfft_fast_f32(\n\tarm_rfft_fast_instance_f32 * S,\n\tfloat32_t * p, float32_t * pOut,\n\tuint8_t ifftFlag);\n\nvoid ref_rfft_q31(\n  const arm_rfft_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst);\n\nvoid ref_rfft_q15(\n  const arm_rfft_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst);\n\nvoid ref_dct4_f32(\n  const arm_dct4_instance_f32 * S,\n  float32_t * pState,\n  float32_t * pInlineBuffer);\n\nvoid ref_dct4_q31(\n  const arm_dct4_instance_q31 * S,\n  q31_t * pState,\n  q31_t * pInlineBuffer);\n\nvoid ref_dct4_q15(\n  const arm_dct4_instance_q15 * S,\n  q15_t * pState,\n  q15_t * pInlineBuffer);\n\n\t/*\n\t * Intrinsics\n\t */\nq31_t ref__QADD8(q31_t x, q31_t y);\nq31_t ref__QSUB8(q31_t x, q31_t y);\nq31_t ref__QADD16(q31_t x, q31_t y);\nq31_t ref__SHADD16(q31_t x, q31_t y);\nq31_t ref__QSUB16(q31_t x, q31_t y);\nq31_t ref__SHSUB16(q31_t x, q31_t y);\nq31_t ref__QASX(q31_t x, q31_t y);\nq31_t ref__SHASX(q31_t x, q31_t y);\nq31_t ref__QSAX(q31_t x, q31_t y);\nq31_t ref__SHSAX(q31_t x, q31_t y);\nq31_t ref__SMUSDX(q31_t x, q31_t y);\nq31_t ref__SMUADX(q31_t x, q31_t y);\nq31_t ref__QADD(q31_t x, q31_t y);\nq31_t ref__QSUB(q31_t x, q31_t y);\nq31_t ref__SMLAD(q31_t x, q31_t y, q31_t sum);\nq31_t ref__SMLADX(q31_t x, q31_t y, q31_t sum);\nq31_t ref__SMLSDX(q31_t x, q31_t y, q31_t sum);\nq63_t ref__SMLALD(q31_t x, q31_t y, q63_t sum);\nq63_t ref__SMLALDX(q31_t x, q31_t y, q63_t sum);\nq31_t ref__SMUAD(q31_t x, q31_t y);\nq31_t ref__SMUSD(q31_t x, q31_t y);\nq31_t ref__SXTB16(q31_t x);\n\n#ifdef\t__cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/BasicMathFunctions.c",
    "content": "\n#include \"abs.c\"\n#include \"add.c\"\n#include \"dot_prod.c\"\n#include \"mult.c\"\n#include \"negate.c\"\n#include \"offset.c\"\n#include \"scale.c\"\n#include \"shift.c\"\n#include \"sub.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/abs.c",
    "content": "#include \"ref.h\"\n\nvoid ref_abs_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] < 0 ? -pSrc[i] : pSrc[i];\n\t}\n}\n\nvoid ref_abs_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] < 0 ? -pSrc[i] : pSrc[i];\n\t}\n}\n\nvoid ref_abs_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] < 0 ? -pSrc[i] : pSrc[i];\n\t}\n}\n\nvoid ref_abs_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] < 0 ? -pSrc[i] : pSrc[i];\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/add.c",
    "content": "#include \"ref.h\"\n\nvoid ref_add_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrcA[i] + pSrcB[i];\n\t}\n}\n\nvoid ref_add_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q31( (q63_t)pSrcA[i] + pSrcB[i] );\n\t}\n}\n\nvoid ref_add_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q15( (q31_t)pSrcA[i] + pSrcB[i] );\n\t}\n}\n\nvoid ref_add_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q7( (q15_t)pSrcA[i] + pSrcB[i] );\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/dot_prod.c",
    "content": "#include \"ref.h\"\n\nvoid ref_dot_prod_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  uint32_t blockSize,\n  float32_t * result)\n{\n\tuint32_t i;\n  float32_t sum = 0.0f;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tsum += pSrcA[i] * pSrcB[i];\n\t}\n  *result = sum;\n}\n\nvoid ref_dot_prod_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  uint32_t blockSize,\n  q63_t * result)\n{\n\tuint32_t i;\n  q63_t sum = 0.0f;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tsum += ((q63_t)pSrcA[i] * pSrcB[i]) >> 14; //16.48\n\t}\n  *result = sum;\n}\n\nvoid ref_dot_prod_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  uint32_t blockSize,\n  q63_t * result)\n{\n\tuint32_t i;\n  q63_t sum = 0.0f;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tsum += (q31_t)pSrcA[i] * pSrcB[i]; //34.30\n\t}\n  *result = sum;\n}\n\nvoid ref_dot_prod_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  uint32_t blockSize,\n  q31_t * result)\n{\n\tuint32_t i;\n  q31_t sum = 0.0f;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tsum += (q31_t)pSrcA[i] * pSrcB[i]; //18.14\n\t}\n  *result = sum;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/mult.c",
    "content": "#include \"ref.h\"\n\nvoid ref_mult_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrcA[i] * pSrcB[i];\n\t}\n}\n\nvoid ref_mult_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\tq63_t temp;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\ttemp = ((q63_t)pSrcA[i] * pSrcB[i]) >> 32;\n\t\ttemp = temp << 1;\n\t\tpDst[i] = ref_sat_q31(temp);\n\t}\n}\n\nvoid ref_mult_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\tq31_t temp;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\ttemp = ((q31_t)pSrcA[i] * pSrcB[i]) >> 15; //this comment is for JD, this is specifically 15 and not 16 like the q31 case might imply.  This is because CMSIS DSP lib does it this way.  No other reason.\n\t\tpDst[i] = ref_sat_q15(temp);\n\t}\n}\n\nvoid ref_mult_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\tq15_t temp;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\ttemp = ((q15_t)pSrcA[i] * pSrcB[i]) >> 7;\n\t\tpDst[i] = ref_sat_q7(temp);\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/negate.c",
    "content": "#include \"ref.h\"\n\nvoid ref_negate_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = -pSrc[i];\n\t}\n}\n\nvoid ref_negate_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = -pSrc[i];\n\t}\n}\n\nvoid ref_negate_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = -pSrc[i];\n\t}\n}\n\nvoid ref_negate_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = -pSrc[i];\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/offset.c",
    "content": "#include \"ref.h\"\n\nvoid ref_offset_f32(\n  float32_t * pSrc,\n  float32_t offset,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] + offset;\n\t}\n}\n\nvoid ref_offset_q31(\n  q31_t * pSrc,\n  q31_t offset,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q31( (q63_t)pSrc[i] + offset );\n\t}\n}\n\nvoid ref_offset_q15(\n  q15_t * pSrc,\n  q15_t offset,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q15( (q31_t)pSrc[i] + offset );\n\t}\n}\n\nvoid ref_offset_q7(\n  q7_t * pSrc,\n  q7_t offset,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q7( (q15_t)pSrc[i] + offset );\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/scale.c",
    "content": "#include \"ref.h\"\n\nvoid ref_scale_f32(\n  float32_t * pSrc,\n  float32_t scale,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] * scale;\n\t}\n}\n\nvoid ref_scale_q31(\n  q31_t * pSrc,\n  q31_t scaleFract,\n  int8_t shift,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n  int8_t kShift = shift + 1;                     /* Shift to apply after scaling */\n  int8_t sign = (kShift & 0x80);\n\tq63_t temp;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\ttemp = ((q63_t) pSrc[i] * scaleFract) >> 32;\n\t\tif (sign)\n\t\t\tpDst[i] = temp >> -kShift;\n\t\telse\n\t\t\tpDst[i] = ref_sat_q31( (q63_t)temp << kShift );\n\t}\n}\n\nvoid ref_scale_q15(\n  q15_t * pSrc,\n  q15_t scaleFract,\n  int8_t shift,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n  int8_t kShift = 15 - shift;                      /* Shift to apply after scaling */\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q15(((q31_t) pSrc[i] * scaleFract) >> kShift);\n\t}\n}\n\nvoid ref_scale_q7(\n  q7_t * pSrc,\n  q7_t scaleFract,\n  int8_t shift,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n  int8_t kShift = 7 - shift;                      /* Shift to apply after scaling */\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q7(((q15_t) pSrc[i] * scaleFract) >> kShift);\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/shift.c",
    "content": "#include \"ref.h\"\n\nvoid ref_shift_q31(\n  q31_t * pSrc,\n  int8_t shiftBits,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tif (shiftBits < 0)\n\t{\n\t\tfor(i=0;i<blockSize;i++)\n\t\t{\n\t\t\tpDst[i] = pSrc[i] << shiftBits;\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<blockSize;i++)\n\t\t{\n\t\t\tpDst[i] = pSrc[i] >> -shiftBits;\n\t\t}\n\t}\n}\n\nvoid ref_shift_q15(\n  q15_t * pSrc,\n  int8_t shiftBits,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tif (shiftBits < 0)\n\t{\n\t\tfor(i=0;i<blockSize;i++)\n\t\t{\n\t\t\tpDst[i] = pSrc[i] << shiftBits;\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<blockSize;i++)\n\t\t{\n\t\t\tpDst[i] = pSrc[i] >> -shiftBits;\n\t\t}\n\t}\n}\n\nvoid ref_shift_q7(\n  q7_t * pSrc,\n  int8_t shiftBits,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tif (shiftBits < 0)\n\t{\n\t\tfor(i=0;i<blockSize;i++)\n\t\t{\n\t\t\tpDst[i] = pSrc[i] << shiftBits;\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<blockSize;i++)\n\t\t{\n\t\t\tpDst[i] = pSrc[i] >> -shiftBits;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/sub.c",
    "content": "#include \"ref.h\"\n\nvoid ref_sub_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrcA[i] - pSrcB[i];\n\t}\n}\n\nvoid ref_sub_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q31( (q63_t)pSrcA[i] - pSrcB[i] );\n\t}\n}\n\nvoid ref_sub_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q15( (q31_t)pSrcA[i] - pSrcB[i] );\n\t}\n}\n\nvoid ref_sub_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ref_sat_q7( (q15_t)pSrcA[i] - pSrcB[i] );\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/ComplexMathFunctions.c",
    "content": "\n#include \"cmplx_conj.c\"\n#include \"cmplx_dot_prod.c\"\n#include \"cmplx_mag.c\"\n#include \"cmplx_mag_squared.c\"\n#include \"cmplx_mult_cmplx.c\"\n#include \"cmplx_mult_real.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_conj.c",
    "content": "#include \"ref.h\"\n\nvoid ref_cmplx_conj_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tpDst[i] = pSrc[i];\n\t\tpDst[i+1] = -pSrc[i+1];\n\t}\n}\n\nvoid ref_cmplx_conj_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tpDst[i] = pSrc[i];\n\t\tpDst[i+1] = -pSrc[i+1];\n\t}\n}\n\nvoid ref_cmplx_conj_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tpDst[i] = pSrc[i];\n\t\tpDst[i+1] = -pSrc[i+1];\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_dot_prod.c",
    "content": "#include \"ref.h\"\n\nvoid ref_cmplx_dot_prod_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  uint32_t numSamples,\n  float32_t * realResult,\n  float32_t * imagResult)\n{\n\tfloat32_t sumr, sumi;\n\tuint32_t i;\n\t\n\tsumr = 0;\n\tsumi = 0;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tsumr += pSrcA[i] * pSrcB[i]   - pSrcA[i+1] * pSrcB[i+1];\n\t\tsumi += pSrcA[i] * pSrcB[i+1] + pSrcA[i+1] * pSrcB[i];\n\t}\n\t\n\t*realResult = sumr;\n\t*imagResult = sumi;\n}\n\nvoid ref_cmplx_dot_prod_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  uint32_t numSamples,\n  q63_t * realResult,\n  q63_t * imagResult)\n{\n\tq63_t sumr, sumi;\n\tuint32_t i;\n\t\n\tsumr = 0;\n\tsumi = 0;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\t//shifting down 14 here to provide guard bits\n\t\tsumr += (((q63_t)pSrcA[i] * pSrcB[i]  ) >> 14) - (((q63_t)pSrcA[i+1] * pSrcB[i+1]) >> 14);\n\t\tsumi += (((q63_t)pSrcA[i] * pSrcB[i+1]) >> 14) + (((q63_t)pSrcA[i+1] * pSrcB[i]  ) >> 14);\n\t}\n\t\n\t*realResult = sumr;\n\t*imagResult = sumi;\n}\n\nvoid ref_cmplx_dot_prod_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  uint32_t numSamples,\n  q31_t * realResult,\n  q31_t * imagResult)\n{\n\tq63_t sumr, sumi;\n\tuint32_t i;\n\t\n\tsumr = 0;\n\tsumi = 0;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tsumr += (q31_t)pSrcA[i] * pSrcB[i]   - (q31_t)pSrcA[i+1] * pSrcB[i+1];\n\t\tsumi += (q31_t)pSrcA[i] * pSrcB[i+1] + (q31_t)pSrcA[i+1] * pSrcB[i];\n\t}\n\t\n\t//shifting down 6 at the end here because there are already 32 guard bits available, this method is more accurate\n\t*realResult = (q31_t)(sumr >> 6);\n\t*imagResult = (q31_t)(sumi >> 6);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag.c",
    "content": "#include \"ref.h\"\n\nvoid ref_cmplx_mag_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\t*pDst++ = sqrtf(pSrc[i] * pSrc[i] + pSrc[i+1] * pSrc[i+1]);\n\t}\n}\n\nvoid ref_cmplx_mag_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t acc0,acc1,out;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tacc0 = (q31_t)(((q63_t)pSrc[i] * pSrc[i]) >> 33);\n\t\tacc1 = (q31_t)(((q63_t)pSrc[i+1] * pSrc[i+1]) >> 33);\n\t\tout = acc0 + acc1;\n\t\t*pDst++ = (q31_t)(sqrtf((float)out / 2147483648.0f) * 2147483648.0f);\n\t}\n}\n\nvoid ref_cmplx_mag_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t acc0,acc1;\n\tq15_t out;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tacc0 = pSrc[i] * pSrc[i];\n\t\tacc1 = pSrc[i+1] * pSrc[i+1];\n\t\tout = (q15_t) (((q63_t) acc0 + acc1) >> 17);\n\t\t*pDst++ = (q15_t)(sqrtf((float)out / 32768.0f) * 32768.0f);\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag_squared.c",
    "content": "#include \"ref.h\"\n\nvoid ref_cmplx_mag_squared_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\t*pDst++ = pSrc[i] * pSrc[i] + pSrc[i+1] * pSrc[i+1];\n\t}\n}\n\nvoid ref_cmplx_mag_squared_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t acc0,acc1;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tacc0 = (q31_t)(((q63_t)pSrc[i] * pSrc[i]) >> 33);\n\t\tacc1 = (q31_t)(((q63_t)pSrc[i+1] * pSrc[i+1]) >> 33);\n\t\t*pDst++ = acc0 + acc1;\n\t}\n}\n\nvoid ref_cmplx_mag_squared_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t acc0,acc1;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tacc0 = pSrc[i] * pSrc[i];\n\t\tacc1 = pSrc[i+1] * pSrc[i+1];\n\t\t*pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_cmplx.c",
    "content": "#include \"ref.h\"\n\nvoid ref_cmplx_mult_cmplx_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tpDst[i]   = pSrcA[i] * pSrcB[i]   - pSrcA[i+1] * pSrcB[i+1];\n\t\tpDst[i+1] = pSrcA[i] * pSrcB[i+1] + pSrcA[i+1] * pSrcB[i];\n\t}\n}\n\nvoid ref_cmplx_mult_cmplx_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t mul1, mul2, mul3, mul4;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tmul1 = ((q63_t)pSrcA[i]   * pSrcB[i])   >> 33;\n\t\tmul2 = ((q63_t)pSrcA[i+1] * pSrcB[i+1]) >> 33;\n\t\tmul3 = ((q63_t)pSrcA[i]   * pSrcB[i+1]) >> 33;\n\t\tmul4 = ((q63_t)pSrcA[i+1] * pSrcB[i])   >> 33;\n\t\tpDst[i]   = mul1 - mul2;\n\t\tpDst[i+1] = mul3 + mul4;\n\t}\n}\n\nvoid ref_cmplx_mult_cmplx_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t mul1, mul2, mul3, mul4;\n\t\n\tfor(i=0;i<numSamples*2;i+=2)\n\t{\n\t\tmul1 = ((q31_t)pSrcA[i]   * pSrcB[i])   >> 17;\n\t\tmul2 = ((q31_t)pSrcA[i+1] * pSrcB[i+1]) >> 17;\n\t\tmul3 = ((q31_t)pSrcA[i]   * pSrcB[i+1]) >> 17;\n\t\tmul4 = ((q31_t)pSrcA[i+1] * pSrcB[i])   >> 17;\n\t\tpDst[i]   = mul1 - mul2;\n\t\tpDst[i+1] = mul3 + mul4;\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_real.c",
    "content": "#include \"ref.h\"\n\nvoid ref_cmplx_mult_real_f32(\n  float32_t * pSrcCmplx,\n  float32_t * pSrcReal,\n  float32_t * pCmplxDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpCmplxDst[2*i+0] = pSrcCmplx[2*i+0] * pSrcReal[i];\n\t\tpCmplxDst[2*i+1] = pSrcCmplx[2*i+1] * pSrcReal[i];\n\t}\n}\n\nvoid ref_cmplx_mult_real_q31(\n  q31_t * pSrcCmplx,\n  q31_t * pSrcReal,\n  q31_t * pCmplxDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t tempR, tempI;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\ttempR = ((q63_t) pSrcCmplx[2*i+0] * pSrcReal[i]) >> 32;\n\t\ttempI = ((q63_t) pSrcCmplx[2*i+1] * pSrcReal[i]) >> 32;\n\t\tpCmplxDst[2*i+0] = ref_sat_n(tempR, 31) << 1;\n\t\tpCmplxDst[2*i+1] = ref_sat_n(tempI, 31) << 1;\n\t}\n}\n\nvoid ref_cmplx_mult_real_q15(\n  q15_t * pSrcCmplx,\n  q15_t * pSrcReal,\n  q15_t * pCmplxDst,\n  uint32_t numSamples)\n{\n\tuint32_t i;\n\tq31_t tempR, tempI;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\ttempR = ((q31_t) pSrcCmplx[2*i+0] * pSrcReal[i]) >> 15;\n\t\ttempI = ((q31_t) pSrcCmplx[2*i+1] * pSrcReal[i]) >> 15;\n\t\tpCmplxDst[2*i+0] = ref_sat_q15(tempR);\n\t\tpCmplxDst[2*i+1] = ref_sat_q15(tempI);\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/ControllerFunctions.c",
    "content": "\n#include \"pid.c\"\n#include \"sin_cos.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/pid.c",
    "content": "#include \"ref.h\"\n\nfloat32_t ref_pid_f32(\n\tarm_pid_instance_f32 * S,\n\tfloat32_t in)\n{\n\tfloat32_t out;\n\n\t/* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]  */\n\tout = S->state[2] + S->A0 * in + S->A1 * S->state[0] + S->A2 * S->state[1];\n\n\t/* Update state */\n\tS->state[1] = S->state[0];\n\tS->state[0] = in;\n\tS->state[2] = out;\n\n\t/* return to application */\n\treturn (out);\n}\n\nq31_t ref_pid_q31(\n\tarm_pid_instance_q31 * S,\n\tq31_t in)\n{\n\tq63_t acc;\n\tq31_t out;\n\n\t/* acc = A0 * x[n]  */\n\tacc = (q63_t) S->A0 * in;\n\n\t/* acc += A1 * x[n-1] */\n\tacc += (q63_t) S->A1 * S->state[0];\n\n\t/* acc += A2 * x[n-2]  */\n\tacc += (q63_t) S->A2 * S->state[1];\n\n\t/* convert output to 1.31 format to add y[n-1] */\n\tout = (q31_t) (acc >> 31U);\n\n\t/* out += y[n-1] */\n\tout += S->state[2];\n\n\t/* Update state */\n\tS->state[1] = S->state[0];\n\tS->state[0] = in;\n\tS->state[2] = out;\n\n\t/* return to application */\n\treturn (out);\n}\n\nq15_t ref_pid_q15(\n\tarm_pid_instance_q15 * S,\n\tq15_t in)\n{\n\tq63_t acc;\n\tq15_t out;\n\tq15_t A1, A2;\n\t\n#if defined (ARM_MATH_DSP)\n   \n#ifndef  ARM_MATH_BIG_ENDIAN\n\tA2 = S->A1 >> 16;\n\tA1 = (q15_t)S->A1;\t\n#else\n\tA1 = S->A1 >> 16;\n\tA2 = (q15_t)S->A1;\t\n#endif\n   \n#else\n\t\n\tA1 = S->A1;\n\tA2 = S->A2;\n\t\n#endif\t\n\t\n\t/* acc = A0 * x[n]  */\n\tacc = ((q31_t) S->A0) * in;\n\n\t/* acc += A1 * x[n-1] + A2 * x[n-2]  */\n\tacc += (q31_t) A1 * S->state[0];\n\tacc += (q31_t) A2 * S->state[1];\n\n\t/* acc += y[n-1] */\n\tacc += (q31_t) S->state[2] << 15;\n\n\t/* saturate the output */\n\tout = ref_sat_q15(acc >> 15);\n\n\t/* Update state */\n\tS->state[1] = S->state[0];\n\tS->state[0] = in;\n\tS->state[2] = out;\n\n\t/* return to application */\n\treturn (out);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/sin_cos.c",
    "content": "#include \"ref.h\"\n\nvoid ref_sin_cos_f32(\n  float32_t theta,\n  float32_t * pSinVal,\n  float32_t * pCosVal)\n{\n\t//theta is given in degrees\n\t*pSinVal = sinf(theta * 6.28318530717959f / 360.0f);\n\t*pCosVal = cosf(theta * 6.28318530717959f / 360.0f);\n}\n\nvoid ref_sin_cos_q31(\n  q31_t theta,\n  q31_t * pSinVal,\n  q31_t * pCosVal)\n{\n\t//theta is given in the range [-1,1) to represent [-pi,pi)\n\t*pSinVal = (q31_t)(sinf((float32_t)theta * 3.14159265358979f / 2147483648.0f) * 2147483648.0f);\n\t*pCosVal = (q31_t)(cosf((float32_t)theta * 3.14159265358979f / 2147483648.0f) * 2147483648.0f);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/FastMathFunctions.c",
    "content": "\n#include \"cos.c\"\n#include \"sin.c\"\n#include \"sqrt.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/cos.c",
    "content": "#include \"ref.h\"\n\nq31_t ref_cos_q31(q31_t x)\n{\n\treturn (q31_t)(cosf((float32_t)x * 6.28318530717959f / 2147483648.0f) * 2147483648.0f);\n}\n\nq15_t ref_cos_q15(q15_t x)\n{\n\treturn (q15_t)(cosf((float32_t)x * 6.28318530717959f / 32768.0f) * 32768.0f);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sin.c",
    "content": "#include \"ref.h\"\n\nq31_t ref_sin_q31(q31_t x)\n{\n\treturn (q31_t)(sinf((float32_t)x * 6.28318530717959f / 2147483648.0f) * 2147483648.0f);\n}\n\nq15_t ref_sin_q15(q15_t x)\n{\n\treturn (q15_t)(sinf((float32_t)x * 6.28318530717959f / 32768.0f) * 32768.0f);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sqrt.c",
    "content": "#include \"ref.h\"\n\narm_status ref_sqrt_q31(q31_t in, q31_t * pOut)\n{\n\t*pOut = (q31_t)(sqrtf((float32_t)in / 2147483648.0f) * 2147483648.0f);\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_sqrt_q15(q15_t in, q15_t * pOut)\n{\n\t*pOut = (q15_t)(sqrtf((float32_t)in / 32768.0f) * 32768.0f);\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/FilteringFunctions.c",
    "content": "\n#include \"biquad.c\"\n#include \"conv.c\"\n#include \"correlate.c\"\n#include \"fir.c\"\n#include \"fir_decimate.c\"\n#include \"fir_interpolate.c\"\n#include \"fir_lattice.c\"\n#include \"fir_sparse.c\"\n#include \"iir_lattice.c\"\n#include \"lms.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/biquad.c",
    "content": "#include \"ref.h\"\n\nvoid ref_biquad_cascade_df2T_f32(\n\tconst arm_biquad_cascade_df2T_instance_f32 * S,\n\tfloat32_t * pSrc,\n\tfloat32_t * pDst,\n\tuint32_t blockSize)\n{\n        float32_t *pIn = pSrc;                         /*  source pointer            */\n        float32_t *pOut = pDst;                        /*  destination pointer       */\n        float32_t *pState = S->pState;                 /*  State pointer             */\n  const float32_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */\n        float32_t acc;                                 /*  accumulator               */\n        float32_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */\n        float32_t Xn;                                  /*  temporary input           */\n        float32_t d1, d2;                              /*  state variables           */\n        uint32_t sample, stage = S->numStages;         /*  loop counters             */\n\n   do\n   {\n      /* Reading the coefficients */\n      b0 = *pCoeffs++;\n      b1 = *pCoeffs++;\n      b2 = *pCoeffs++;\n      a1 = *pCoeffs++;\n      a2 = *pCoeffs++;\n\n      /*Reading the state values */\n      d1 = pState[0];\n      d2 = pState[1];\n\n      sample = blockSize;\n\n      while (sample > 0U)\n      {\n         /* Read the input */\n         Xn = *pIn++;\n\n         /* y[n] = b0 * x[n] + d1 */\n         acc = (b0 * Xn) + d1;\n\n         /* Store the result in the accumulator in the destination buffer. */\n         *pOut++ = acc;\n\n         /* Every time after the output is computed state should be updated. */\n         /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n         d1 = (b1 * Xn + a1 * acc) + d2;\n\n         /* d2 = b2 * x[n] + a2 * y[n] */\n         d2 = (b2 * Xn) + (a2 * acc);\n\n         /* decrement the loop counter */\n         sample--;\n      }\n\n      /* Store the updated state variables back into the state array */\n      *pState++ = d1;\n      *pState++ = d2;\n\n      /* The current stage input is given as the output to the next stage */\n      pIn = pDst;\n\n      /*Reset the output working pointer */\n      pOut = pDst;\n\n      /* decrement the loop counter */\n      stage--;\n\n   } while (stage > 0U);\n}\n\n\nvoid ref_biquad_cascade_stereo_df2T_f32(\n\tconst arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n\t      float32_t * pSrc,\n\t      float32_t * pDst,\n\t      uint32_t blockSize)\n{\n        float32_t *pIn = pSrc;                         /*  source pointer            */\n        float32_t *pOut = pDst;                        /*  destination pointer       */\n        float32_t *pState = S->pState;                 /*  State pointer             */\n  const float32_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */\n        float32_t acc1a, acc1b;                        /*  accumulator               */\n        float32_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */\n        float32_t Xn1a, Xn1b;                          /*  temporary input           */\n        float32_t d1a, d2a, d1b, d2b;                  /*  state variables           */\n        uint32_t sample, stage = S->numStages;         /*  loop counters             */\n\n    do\n    {\n        /* Reading the coefficients */\n        b0 = *pCoeffs++;\n        b1 = *pCoeffs++;\n        b2 = *pCoeffs++;\n        a1 = *pCoeffs++;\n        a2 = *pCoeffs++;\n\n        /*Reading the state values */\n        d1a = pState[0];\n        d2a = pState[1];\n        d1b = pState[2];\n        d2b = pState[3];\n\n        sample = blockSize;\n\n        while (sample > 0U)\n        {\n            /* Read the input */\n            Xn1a = *pIn++; //Channel a\n            Xn1b = *pIn++; //Channel b\n\n            /* y[n] = b0 * x[n] + d1 */\n            acc1a = (b0 * Xn1a) + d1a;\n            acc1b = (b0 * Xn1b) + d1b;\n\n            /* Store the result in the accumulator in the destination buffer. */\n            *pOut++ = acc1a;\n            *pOut++ = acc1b;\n\n            /* Every time after the output is computed state should be updated. */\n            /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n            d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n            d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n            /* d2 = b2 * x[n] + a2 * y[n] */\n            d2a = (b2 * Xn1a) + (a2 * acc1a);\n            d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n            /* decrement the loop counter */\n            sample--;\n        }\n\n        /* Store the updated state variables back into the state array */\n        *pState++ = d1a;\n        *pState++ = d2a;\n        *pState++ = d1b;\n        *pState++ = d2b;\n\n        /* The current stage input is given as the output to the next stage */\n        pIn = pDst;\n\n        /*Reset the output working pointer */\n        pOut = pDst;\n\n        /* decrement the loop counter */\n        stage--;\n\n    } while (stage > 0U);\n\t\n}\n\nvoid ref_biquad_cascade_df2T_f64(\n\tconst arm_biquad_cascade_df2T_instance_f64 * S,\n\tfloat64_t * pSrc,\n\tfloat64_t * pDst,\n\tuint32_t blockSize)\n{\n   float64_t *pIn = pSrc;                         /*  source pointer            */\n   float64_t *pOut = pDst;                        /*  destination pointer       */\n   float64_t *pState = S->pState;                 /*  State pointer             */\n   float64_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */\n   float64_t acc;                                 /*  accumulator               */\n   float64_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */\n   float64_t Xn;                                  /*  temporary input           */\n   float64_t d1, d2;                              /*  state variables           */\n   uint32_t sample, stage = S->numStages;         /*  loop counters             */\n\n   do\n   {\n      /* Reading the coefficients */\n      b0 = *pCoeffs++;\n      b1 = *pCoeffs++;\n      b2 = *pCoeffs++;\n      a1 = *pCoeffs++;\n      a2 = *pCoeffs++;\n\n      /*Reading the state values */\n      d1 = pState[0];\n      d2 = pState[1];\n\n      sample = blockSize;\n\n      while (sample > 0U)\n      {\n         /* Read the input */\n         Xn = *pIn++;\n\n         /* y[n] = b0 * x[n] + d1 */\n         acc = (b0 * Xn) + d1;\n\n         /* Store the result in the accumulator in the destination buffer. */\n         *pOut++ = acc;\n\n         /* Every time after the output is computed state should be updated. */\n         /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n         d1 = (b1 * Xn + a1 * acc) + d2;\n\n         /* d2 = b2 * x[n] + a2 * y[n] */\n         d2 = (b2 * Xn) + (a2 * acc);\n\n         /* decrement the loop counter */\n         sample--;\n      }\n\n      /* Store the updated state variables back into the state array */\n      *pState++ = d1;\n      *pState++ = d2;\n\n      /* The current stage input is given as the output to the next stage */\n      pIn = pDst;\n\n      /*Reset the output working pointer */\n      pOut = pDst;\n\n      /* decrement the loop counter */\n      stage--;\n\n   } while (stage > 0U);\n}\n\nvoid ref_biquad_cascade_df1_f32(\n  const arm_biquad_casd_df1_inst_f32 * S,\n        float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        float32_t *pIn = pSrc;                         /*  source pointer            */\n        float32_t *pOut = pDst;                        /*  destination pointer       */\n        float32_t *pState = S->pState;                 /*  pState pointer            */\n  const float32_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */\n        float32_t acc;                                 /*  Simulates the accumulator */\n        float32_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */\n        float32_t Xn1, Xn2, Yn1, Yn2;                  /*  Filter pState variables   */\n        float32_t Xn;                                  /*  temporary input           */\n        uint32_t sample, stage = S->numStages;         /*  loop counters             */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the pState values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n    /*      The variables acc holds the output value that is computed:        \n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1]   + a2 * y[n-2]        \n     */\n\n    sample = blockSize;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2);\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = acc;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:    */\n      /* Xn2 = Xn1    */\n      /* Xn1 = Xn     */\n      /* Yn2 = Yn1    */\n      /* Yn1 = acc   */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = acc;\n\n      /* decrement the loop counter */\n      sample--;\n    }\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n    /*  The first stage goes from the input buffer to the output buffer. */\n    /*  Subsequent numStages  occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset the output pointer */\n    pOut = pDst;\n\n    /* decrement the loop counter */\n    stage--;\n\n  } while (stage > 0U);\n}\n\nvoid ref_biquad_cas_df1_32x64_q31(\n  const arm_biquad_cas_df1_32x64_ins_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pIn = pSrc;                             /*  input pointer initialization  \t\t\t*/\n        q31_t *pOut = pDst;                            /*  output pointer initialization \t\t\t*/\n        q63_t *pState = S->pState;                     /*  state pointer initialization  \t\t\t*/\n  const q31_t *pCoeffs = S->pCoeffs;                   /*  coeff pointer initialization  \t\t\t*/\n        q63_t acc;                                     /*  accumulator                   \t\t\t*/\n        q31_t Xn1, Xn2;                                /*  Input Filter state variables  \t\t\t*/\n        q63_t Yn1, Yn2;                                /*  Output Filter state variables \t\t\t*/\n        q31_t b0, b1, b2, a1, a2;                      /*  Filter coefficients           \t\t\t*/\n        q31_t Xn;                                      /*  temporary input               \t\t\t*/\n        int32_t shift = (int32_t) S->postShift + 1;    /*  Shift to be applied to the output \t*/\n        uint32_t sample, stage = S->numStages;         /*  loop counters                     \t*/\n        q31_t acc_l, acc_h;                            /*  temporary output               \t\t*/\n        uint32_t uShift = ((uint32_t) S->postShift + 1U);\n        uint32_t lShift = 32U - uShift;                /*  Shift to be applied to the output \t*/\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the state values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n    sample = blockSize;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = (q63_t)Xn*b0 + (q63_t)Xn1*b1 + (q63_t)Xn2*b2;\n      /* acc +=  a1 * y[n-1] */\n      acc += mult32x64(Yn1, a1);\n      /* acc +=  a2 * y[n-2] */\n      acc += mult32x64(Yn2, a2);\n\n      /* Every time after the output is computed state should be updated. */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n\n      /* The result is converted to 1.63, Yn1 variable is reused  */\n      Yn1 = acc << shift;\n\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store the output in the destination buffer in 1.31 format. */\n      *pOut++ = acc_h;\n\n      /* decrement the loop counter */\n      sample--;\n    }\n\n    /*  The first stage output is given as input to the second stage. */\n    pIn = pDst;\n\n    /* Reset to destination buffer working pointer */\n    pOut = pDst;\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = (q63_t) Xn1;\n    *pState++ = (q63_t) Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n}\n\nvoid ref_biquad_cascade_df1_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\t\n        q63_t acc;                                     /*  accumulator                   */\n        uint32_t uShift = ((uint32_t) S->postShift + 1U);\n        uint32_t lShift = 32U - uShift;                /*  Shift to be applied to the output */\n        q31_t *pIn = pSrc;                             /*  input pointer initialization  */\n        q31_t *pOut = pDst;                            /*  output pointer initialization */\n        q31_t *pState = S->pState;                     /*  pState pointer initialization */\n  const q31_t *pCoeffs = S->pCoeffs;                   /*  coeff pointer initialization  */\n        q31_t Xn1, Xn2, Yn1, Yn2;                      /*  Filter state variables        */\n        q31_t b0, b1, b2, a1, a2;                      /*  Filter coefficients           */\n        q31_t Xn;                                      /*  temporary input               */\n        uint32_t sample, stage = S->numStages;         /*  loop counters                 */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the state values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n    /*      The variables acc holds the output value that is computed:         \n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]         \n     */\n\n    sample = blockSize;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      acc = (q63_t) b0 *Xn;\n\n      /* acc +=  b1 * x[n-1] */\n      acc += (q63_t) b1 *Xn1;\n      /* acc +=  b[2] * x[n-2] */\n      acc += (q63_t) b2 *Xn2;\n      /* acc +=  a1 * y[n-1] */\n      acc += (q63_t) a1 *Yn1;\n      /* acc +=  a2 * y[n-2] */\n      acc += (q63_t) a2 *Yn2;\n\n      /* The result is converted to 1.31  */\n      acc = acc >> lShift;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1    */\n      /* Xn1 = Xn     */\n      /* Yn2 = Yn1    */\n      /* Yn1 = acc    */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = (q31_t) acc;\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = (q31_t) acc;\n\n      /* decrement the loop counter */\n      sample--;\n    }\n\n    /*  The first stage goes from the input buffer to the output buffer. */\n    /*  Subsequent stages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset to destination pointer */\n    pOut = pDst;\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n}\n\n\nvoid ref_biquad_cascade_df1_fast_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n        q31_t acc = 0;                                 /*  accumulator                   */\n        q31_t Xn1, Xn2, Yn1, Yn2;                      /*  Filter state variables        */\n        q31_t b0, b1, b2, a1, a2;                      /*  Filter coefficients           */\n        q31_t *pIn = pSrc;                             /*  input pointer initialization  */\n        q31_t *pOut = pDst;                            /*  output pointer initialization */\n        q31_t *pState = S->pState;                     /*  pState pointer initialization */\n  const q31_t *pCoeffs = S->pCoeffs;                   /*  coeff pointer initialization  */\n        q31_t Xn;                                      /*  temporary input               */\n        int32_t shift = (int32_t) S->postShift + 1;    /*  Shift to be applied to the output */\n        uint32_t sample, stage = S->numStages;         /*  loop counters                     */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the state values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\t\t\n    sample = blockSize;\n\n   while (sample > 0U)\n   {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */    \n      mult_32x32_keep32_R(acc, b0, Xn);\n      multAcc_32x32_keep32_R(acc, b1, Xn1);\n      multAcc_32x32_keep32_R(acc, b2, Xn2);\n      multAcc_32x32_keep32_R(acc, a1, Yn1);\n      multAcc_32x32_keep32_R(acc, a2, Yn2);\n\n      /* The result is converted to 1.31  */\n      acc <<= shift;\n\n      /* Every time after the output is computed state should be updated. */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = acc;\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = acc;\n\n      /* decrement the loop counter */\n      sample--;\n   }\n\n    /*  The first stage goes from the input buffer to the output buffer. */\n    /*  Subsequent stages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset to destination pointer */\n    pOut = pDst;\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n}\n\nvoid ref_biquad_cascade_df1_fast_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\t      q15_t *pIn = pSrc;                             \t\t\t/*  Source pointer                           */\n\t      q15_t *pOut = pDst;                            \t\t\t/*  Destination pointer                      */\n\t      q15_t b0, b1, b2, a1, a2;                      \t\t\t/*  Filter coefficients           \t\t\t\t*/\n\t      q15_t Xn1, Xn2, Yn1, Yn2;                      \t\t\t/*  Filter state variables        \t\t\t\t*/\n\t      q15_t Xn;                                      \t\t\t/*  temporary input               \t\t\t\t*/\n\t      q31_t acc;                                     \t\t\t/*  Accumulator                              */\n\t      int32_t shift = (15 - (int32_t) S->postShift); \t\t\t/*  Post shift                               */\n\t      q15_t *pState = S->pState;                     \t\t\t/*  State pointer                            */\n  const q15_t *pCoeffs = S->pCoeffs;                   \t\t\t/*  Coefficient pointer                      */\n        uint32_t sample, stage = (uint32_t) S->numStages;   /*  Stage loop counter                          */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    pCoeffs++;  // skip the 0 coefficient\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the state values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n    sample = blockSize;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = (q31_t)b0*Xn + (q31_t)b1*Xn1 + (q31_t)b2*Xn2 + (q31_t)a1*Yn1 + (q31_t)a2*Yn2;\n\n      /* The result is converted to 1.15  */\n      acc = ref_sat_q15(acc >> shift);\n\n      /* Every time after the output is computed state should be updated. */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = (q15_t) acc;\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = (q15_t) acc;\n\n      /* decrement the loop counter */\n      sample--;\n    }\n\n    /*  The first stage goes from the input buffer to the output buffer. */\n    /*  Subsequent stages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset to destination pointer */\n    pOut = pDst;\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n}\n\nvoid ref_biquad_cascade_df1_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\t      q15_t *pIn = pSrc;                             \t\t\t/*  Source pointer                           */\n\t      q15_t *pOut = pDst;                            \t\t\t/*  Destination pointer                      */\n\t      q15_t b0, b1, b2, a1, a2;                      \t\t\t/*  Filter coefficients           \t\t\t\t*/\n\t      q15_t Xn1, Xn2, Yn1, Yn2;                      \t\t\t/*  Filter state variables        \t\t\t\t*/\n\t      q15_t Xn;                                      \t\t\t/*  temporary input               \t\t\t\t*/\n\t      q63_t acc;                                     \t\t\t/*  Accumulator                              */\n\t      int32_t shift = (15 - (int32_t) S->postShift); \t\t\t/*  Post shift                               */\n\t      q15_t *pState = S->pState;                     \t\t\t/*  State pointer                            */\n  const q15_t *pCoeffs = S->pCoeffs;                   \t\t\t/*  Coefficient pointer                      */\n        uint32_t sample, stage = (uint32_t) S->numStages;   /*  Stage loop counter                          */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    pCoeffs++;  // skip the 0 coefficient\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the state values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n    sample = blockSize;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = (q31_t)b0*Xn + (q31_t)b1*Xn1 + (q31_t)b2*Xn2 + (q31_t)a1*Yn1 + (q31_t)a2*Yn2;\n\n      /* The result is converted to 1.15  */\n      acc = ref_sat_q15(acc >> shift);\n\n      /* Every time after the output is computed state should be updated. */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = (q15_t) acc;\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = (q15_t) acc;\n\n      /* decrement the loop counter */\n      sample--;\n    }\n\n    /*  The first stage goes from the input buffer to the output buffer. */\n    /*  Subsequent stages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset to destination pointer */\n    pOut = pDst;\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/conv.c",
    "content": "#include \"ref.h\"\n\nvoid ref_conv_f32(\n  float32_t * pSrcA,\n  uint32_t \t\tsrcALen,\n  float32_t * pSrcB,\n  uint32_t \t\tsrcBLen,\n  float32_t * pDst)\n{\n  float32_t sum;                                 /* Accumulator */\n  uint32_t i, j;                                 /* loop counters */\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry out MAC operations */\n    sum = 0.0f;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += pSrcB[i - j] * pSrcA[j];\n      }\n    }\n    /* Store the output in the destination buffer */\n    pDst[i] = sum;\n  }\n}\n\narm_status ref_conv_partial_f32(\n  float32_t * pSrcA,\n  uint32_t srcALen,\n  float32_t * pSrcB,\n  uint32_t srcBLen,\n  float32_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints)\n{\n\tref_conv_f32(pSrcA,srcALen,pSrcB,srcBLen,pDst);\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\nvoid ref_conv_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst)\n{\n  q63_t sum;                                     /* Accumulator */\n  uint32_t i, j;                                 /* loop counter */\n\n  /* Loop to calculate output of convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += (q63_t) pSrcA[j] * (pSrcB[i - j]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = (q31_t)(sum >> 31U);\n  }\n}\n\nvoid ref_conv_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst)\n{\n  q31_t sum;                                     /* Accumulator */\n  uint32_t i, j;                                 /* loop counter */\n\n  /* Loop to calculate output of convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n\t\t\t\tsum = (q31_t) ((((q63_t)sum << 32) +\n                      ((q63_t)pSrcA[j] * pSrcB[i - j])) >> 32);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = (q31_t)(sum << 1U);\n  }\n}\n\narm_status ref_conv_partial_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints)\n{\n\tref_conv_q31(pSrcA,srcALen,pSrcB,srcBLen,pDst);\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_conv_partial_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints)\n{\n\tref_conv_fast_q31(pSrcA,srcALen,pSrcB,srcBLen,pDst);\n   \n\treturn ARM_MATH_SUCCESS;\n}\n\nvoid ref_conv_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst)\n{\n  q63_t sum;                                     /* Accumulator */\n  uint32_t i, j;                                 /* loop counter */\n\n  /* Loop to calculate output of convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += (q31_t)pSrcA[j] * pSrcB[i - j];\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = ref_sat_q15(sum >> 15U);\n  }\n}\n\narm_status ref_conv_partial_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints,\n  q15_t * pScratch1,\n  q15_t * pScratch2)\n{\n  q31_t sum;                                     /* Accumulator */\n  uint32_t i, j;                                 /* loop counter */\n\n  /* Loop to calculate output of convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += (q31_t)pSrcA[j] * pSrcB[i - j];\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = ref_sat_q15(sum >> 15U);\n  }\n\t\n  return ARM_MATH_SUCCESS;\n}\n\nvoid ref_conv_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst)\n{\n  q31_t sum;                                     /* Accumulator */\n  uint32_t i, j;                                 /* loop counter */\n\n  /* Loop to calculate output of convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += (q31_t)pSrcA[j] * pSrcB[i - j];\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = sum >> 15U;\n  }\n}\n\nvoid ref_conv_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch1,\n  q15_t * pScratch2)\n{\n  q31_t sum;                                     /* Accumulator */\n  uint32_t i, j;                                 /* loop counter */\n\n  /* Loop to calculate output of convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += (q31_t)pSrcA[j] * pSrcB[i - j];\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = ref_sat_q15(sum >> 15U);\n  }\n}\n\narm_status ref_conv_partial_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints)\n{\n\tref_conv_q15(pSrcA,srcALen,pSrcB,srcBLen,pDst);\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_conv_partial_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints)\n{\n\tref_conv_fast_q15(pSrcA,srcALen,pSrcB,srcBLen,pDst);\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\n\nvoid ref_conv_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst)\n{\n  q31_t sum;                                     /* Accumulator */\n  uint32_t i, j;                                 /* loop counter */\n\n  /* Loop to calculate output of convolution for output length number of times */\n  for (i = 0; i < srcALen + srcBLen - 1; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += (q15_t)pSrcA[j] * pSrcB[i - j];\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = (q7_t)ref_sat_q7(sum >> 7);\n  }\n}\n\narm_status ref_conv_partial_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints)\n{\t\n\tref_conv_q7(pSrcA,srcALen,pSrcB,srcBLen,pDst);\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/correlate.c",
    "content": "#include \"ref.h\"\n\nvoid ref_correlate_f32(\n  float32_t * pSrcA,\n  uint32_t srcALen,\n  float32_t * pSrcB,\n  uint32_t srcBLen,\n  float32_t * pDst)\n{\n  float32_t *pIn1 = pSrcA;                       /* inputA pointer \t\t\t*/\n  float32_t *pIn2 = pSrcB + (srcBLen - 1U);      /* inputB pointer \t\t\t*/\n  float32_t sum;                                 /* Accumulator \t\t\t\t*/\n  uint32_t i = 0U, j;                            /* loop counters \t\t\t*/\n  uint32_t inv = 0U;                             /* Reverse order flag \t*/\n  uint32_t tot = 0U;                             /* Length \t\t\t\t\t\t\t*/\n\n  /* The algorithm implementation is based on the lengths of the inputs. \n   * srcB is always made to slide across srcA. \n   * So srcBLen is always considered as shorter or equal to srcALen \n   * But CORR(x, y) is reverse of CORR(y, x) \n   * So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer \n   * and a variable, inv is set to 1 \n   * If lengths are not equal then zero pad has to be done to make the two    \n   * inputs of same length. But to improve the performance, we include zeroes    \n   * in the output instead of zero padding either of the the inputs\n   * If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the    \n   * starting of the output buffer \n   * If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the   \n   * ending of the output buffer \n   * Once the zero padding is done the remaining of the output is calcualted   \n   * using convolution but with the shorter signal time shifted. \n\t */\n\n  /* Calculate the length of the remaining sequence */\n  tot = srcALen + srcBLen - 2U;\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    /* Initialise the pointer after zero padding */\n    pDst += srcALen - srcBLen;\n  }\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + srcALen - 1U;\n\n    /* Initialisation of the pointer after zero padding */\n    pDst += tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n  }\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0.0f;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((i - j < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += pIn1[j] * pIn2[-((int32_t)i - j)];\n      }\n    }\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = sum;\n    else\n      *pDst++ = sum;\n  }\n}\n\nvoid ref_correlate_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst)\n{\n  q31_t *pIn1 = pSrcA;                           /* inputA pointer               */\n  q31_t *pIn2 = pSrcB + (srcBLen - 1U);          /* inputB pointer               */\n  q63_t sum;                                     /* Accumulators                  */\n  uint32_t i = 0U, j;                            /* loop counters */\n  uint32_t inv = 0U;                             /* Reverse order flag */\n  uint32_t tot = 0U;                             /* Length */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n\n  }\n\n  /* Loop to calculate correlation for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to correlation equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((((i - j) < srcBLen) && (j < srcALen)))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q31_t)(sum >> 31U);\n    else\n      *pDst++ = (q31_t)(sum >> 31U);\n  }\n}\n\nvoid ref_correlate_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst)\n{\n  q31_t *pIn1 = pSrcA;                           /* inputA pointer               */\n  q31_t *pIn2 = pSrcB + (srcBLen - 1U);          /* inputB pointer               */\n  q63_t sum;                                     /* Accumulators                  */\n  uint32_t i = 0U, j;                            /* loop counters */\n  uint32_t inv = 0U;                             /* Reverse order flag */\n  uint32_t tot = 0U;                             /* Length */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n\n  }\n\n  /* Loop to calculate correlation for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to correlation equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((((i - j) < srcBLen) && (j < srcALen)))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n\t\t\t\t\t\t\t\t\t\t\t\t((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)])) >> 32);\n      }\n    }\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q31_t)(sum << 1U);\n    else\n      *pDst++ = (q31_t)(sum << 1U);\n  }          \n}\n\nvoid ref_correlate_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst)\n{\n  q15_t *pIn1 = pSrcA;                           /* inputA pointer               */\n  q15_t *pIn2 = pSrcB + (srcBLen - 1U);          /* inputB pointer               */\n  q63_t sum;                                     /* Accumulators                  */\n  uint32_t i = 0U, j;                            /* loop counters */\n  uint32_t inv = 0U;                             /* Reverse order flag */\n  uint32_t tot = 0U;                             /* Length */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n\n  }\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((((i - j) < srcBLen) && (j < srcALen)))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q15_t) ref_sat_q15(sum >> 15U);\n    else\n      *pDst++ = (q15_t) ref_sat_q15(sum >> 15U);\n  }\n}\n\nvoid ref_correlate_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst)\n{\n  q15_t *pIn1 = pSrcA;                           /* inputA pointer               */\n  q15_t *pIn2 = pSrcB + (srcBLen - 1U);          /* inputB pointer               */\n  q63_t sum;                                     /* Accumulators                  */\n  uint32_t i = 0U, j;                            /* loop counters */\n  uint32_t inv = 0U;                             /* Reverse order flag */\n  uint32_t tot = 0U;                             /* Length */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n\n  }\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((((i - j) < srcBLen) && (j < srcALen)))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q15_t)(sum >> 15U);\n    else\n      *pDst++ = (q15_t)(sum >> 15U);\n  }\n}\n\nvoid ref_correlate_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch)\n{\n  q15_t *pIn1 = pSrcA;                           /* inputA pointer               */\n  q15_t *pIn2 = pSrcB + (srcBLen - 1U);          /* inputB pointer               */\n  q31_t sum;                                     /* Accumulators                  */\n  uint32_t i = 0U, j;                            /* loop counters */\n  uint32_t inv = 0U;                             /* Reverse order flag */\n  uint32_t tot = 0U;                             /* Length */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n\n  }\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((((i - j) < srcBLen) && (j < srcALen)))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q15_t) ref_sat_q15(sum >> 15U);\n    else\n      *pDst++ = (q15_t) ref_sat_q15(sum >> 15U);\n  }\n}\n\nvoid ref_correlate_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst)\n{\n  q7_t *pIn1 = pSrcA;                            /* inputA pointer */\n  q7_t *pIn2 = pSrcB + (srcBLen - 1U);           /* inputB pointer */\n  q31_t sum;                                     /* Accumulator */\n  uint32_t i = 0U, j;                            /* loop counters */\n  uint32_t inv = 0U;                             /* Reverse order flag */\n  uint32_t tot = 0U;                             /* Length */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n\n  }\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((((i - j) < srcBLen) && (j < srcALen)))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q7_t) __SSAT((sum >> 7U), 8U);\n    else\n      *pDst++ = (q7_t) __SSAT((sum >> 7U), 8U);\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir.c",
    "content": "#include \"ref.h\"\n\nvoid ref_fir_f32(\n\tconst arm_fir_instance_f32 * S,\n\t      float32_t * pSrc,\n\t      float32_t * pDst,\n\t      uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n\tconst float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i;                    \t\t\t\t\t\t\t\t/* Loop counters */\n        float32_t acc;\n\n   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n   /* pStateCurnt points to the location where the new input data should be written */\n   pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n   while (blockSize > 0U)\n   {\n      /* Copy one sample at a time into state buffer */\n      *pStateCurnt++ = *pSrc++;\n\n      /* Set the accumulator to zero */\n      acc = 0.0f;\n\n\t\t\tfor(i=0;i<numTaps;i++)\n\t\t\t{\n\t\t\t\t/* Perform the multiply-accumulates */\n\t\t\t\tacc += pState[i] * pCoeffs[i];\n\t\t\t}\n\n      /* The result is store in the destination buffer. */\n      *pDst++ = acc;\n\n      /* Advance state pointer by 1 for the next sample */\n      pState++;\n\n      blockSize--;\n   }\n\n   /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n   /* Points to the start of the state buffer */\n   pStateCurnt = S->pState;\n\n   /* Copy data */\n\t for(i=0;i<numTaps-1;i++)\n\t {\n      pStateCurnt[i] = pState[i];\n\t }\n}\n\nvoid ref_fir_q31(\n  const arm_fir_instance_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                 /* State pointer */\n\tconst q31_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        q31_t *pStateCurnt;                        /* Points to the current sample of the state */\n        uint32_t numTaps = S->numTaps;             /* Number of filter coefficients in the filter */\n        uint32_t i;                                /* Loop counter */\n        q63_t acc;\n\n   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n   /* pStateCurnt points to the location where the new input data should be written */\n   pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n   while (blockSize > 0U)\n   {\n      /* Copy one sample at a time into state buffer */\n      *pStateCurnt++ = *pSrc++;\n\n      /* Set the accumulator to zero */\n      acc = 0.0f;\n\n\t\t\tfor(i=0;i<numTaps;i++)\n\t\t\t{\n\t\t\t\t/* Perform the multiply-accumulates */\n\t\t\t\tacc += (q63_t)pState[i] * pCoeffs[i];\n\t\t\t}\n\n      /* The result is store in the destination buffer. */\n      *pDst++ = (q31_t)(acc >> 31);\n\n      /* Advance state pointer by 1 for the next sample */\n      pState++;\n\n      blockSize--;\n   }\n\n   /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n   /* Points to the start of the state buffer */\n   pStateCurnt = S->pState;\n\n   /* Copy data */\n\t for(i=0;i<numTaps-1;i++)\n\t {\n      pStateCurnt[i] = pState[i];\n\t }\n}\n\nvoid ref_fir_fast_q31(\n  const arm_fir_instance_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                 /* State pointer */\n\tconst q31_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        q31_t *pStateCurnt;                        /* Points to the current sample of the state */\n        uint32_t numTaps = S->numTaps;             /* Number of filter coefficients in the filter */\n        uint32_t i;                                /* Loop counter */\n        q31_t acc;\n\n   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n   /* pStateCurnt points to the location where the new input data should be written */\n   pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n   while (blockSize > 0U)\n   {\n      /* Copy one sample at a time into state buffer */\n      *pStateCurnt++ = *pSrc++;\n\n      /* Set the accumulator to zero */\n      acc = 0.0f;\n\n\t\t\tfor(i=0;i<numTaps;i++)\n\t\t\t{\n\t\t\t\t/* Perform the multiply-accumulates */\n\t\t\t\tacc = (q31_t) (((((q63_t) acc) << 32) + ((q63_t) pState[i] * pCoeffs[i]) + 0x80000000LL ) >> 32);\n\t\t\t}\n\n      /* The result is store in the destination buffer. */\n      *pDst++ = (q31_t)(acc << 1);\n\n      /* Advance state pointer by 1 for the next sample */\n      pState++;\n\n      blockSize--;\n   }\n\n   /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n   /* Points to the start of the state buffer */\n   pStateCurnt = S->pState;\n\n   /* Copy data */\n\t for(i=0;i<numTaps-1;i++)\n\t {\n      pStateCurnt[i] = pState[i];\n\t }\n}\n\nvoid ref_fir_q15(\n  const arm_fir_instance_q15 * S,\n        q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                 /* State pointer */\n\tconst q15_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        q15_t *pStateCurnt;                        /* Points to the current sample of the state */\n        uint32_t numTaps = S->numTaps;             /* Number of filter coefficients in the filter */\n        uint32_t i;                                /* Loop counter */\n        q63_t acc;\n\n   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n   /* pStateCurnt points to the location where the new input data should be written */\n   pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n   while (blockSize > 0U)\n   {\n      /* Copy one sample at a time into state buffer */\n      *pStateCurnt++ = *pSrc++;\n\n      /* Set the accumulator to zero */\n      acc = 0.0f;\n\n\t\t\tfor(i=0;i<numTaps;i++)\n\t\t\t{\n\t\t\t\t/* Perform the multiply-accumulates */\n\t\t\t\tacc += (q31_t)pState[i] * pCoeffs[i];\n\t\t\t}\n\n      /* The result is store in the destination buffer. */\n      *pDst++ = ref_sat_q15(acc >> 15);\n\n      /* Advance state pointer by 1 for the next sample */\n      pState++;\n\n      blockSize--;\n   }\n\n   /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n   /* Points to the start of the state buffer */\n   pStateCurnt = S->pState;\n\n   /* Copy data */\n\t for(i=0;i<numTaps;i++)\n\t {\n      pStateCurnt[i] = pState[i];\n\t }\n}\n\nvoid ref_fir_fast_q15(\n  const arm_fir_instance_q15 * S,\n        q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                 /* State pointer */\n\tconst q15_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        q15_t *pStateCurnt;                        /* Points to the current sample of the state */\n        uint32_t numTaps = S->numTaps;             /* Number of filter coefficients in the filter */\n        uint32_t i;                                /* Loop counter */\n        q31_t acc;\n\n   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n   /* pStateCurnt points to the location where the new input data should be written */\n   pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n   while (blockSize > 0U)\n   {\n      /* Copy one sample at a time into state buffer */\n      *pStateCurnt++ = *pSrc++;\n\n      /* Set the accumulator to zero */\n      acc = 0.0f;\n\n\t\t\tfor(i=0;i<numTaps;i++)\n\t\t\t{\n\t\t\t\t/* Perform the multiply-accumulates */\n\t\t\t\tacc += (q31_t)pState[i] * pCoeffs[i];\n\t\t\t}\n\n      /* The result is store in the destination buffer. */\n      *pDst++ = ref_sat_q15(acc >> 15);\n\n      /* Advance state pointer by 1 for the next sample */\n      pState++;\n\n      blockSize--;\n   }\n\n   /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n   /* Points to the start of the state buffer */\n   pStateCurnt = S->pState;\n\n   /* Copy data */\n\t for(i=0;i<numTaps-1;i++)\n\t {\n      pStateCurnt[i] = pState[i];\n\t }\n}\n\nvoid ref_fir_q7(\n  const arm_fir_instance_q7 * S,\n        q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        q7_t *pState = S->pState;                 /* State pointer */\n\tconst q7_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        q7_t *pStateCurnt;                        /* Points to the current sample of the state */\n        uint32_t numTaps = S->numTaps;            /* Number of filter coefficients in the filter */\n        uint32_t i;                               /* Loop counter */\n        q31_t acc;\n\n   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n   /* pStateCurnt points to the location where the new input data should be written */\n   pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n   while (blockSize > 0U)\n   {\n      /* Copy one sample at a time into state buffer */\n      *pStateCurnt++ = *pSrc++;\n\n      /* Set the accumulator to zero */\n      acc = 0.0f;\n\n\t\t\tfor(i=0;i<numTaps;i++)\n\t\t\t{\n\t\t\t\t/* Perform the multiply-accumulates */\n\t\t\t\tacc += (q31_t)pState[i] * pCoeffs[i];\n\t\t\t}\n\n      /* The result is store in the destination buffer. */\n      *pDst++ = ref_sat_q7(acc >> 7);\n\n      /* Advance state pointer by 1 for the next sample */\n      pState++;\n\n      blockSize--;\n   }\n\n   /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n   /* Points to the start of the state buffer */\n   pStateCurnt = S->pState;\n\n   /* Copy data */\n\t for(i=0;i<numTaps-1;i++)\n\t {\n      pStateCurnt[i] = pState[i];\n\t }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_decimate.c",
    "content": "#include \"ref.h\"\n\nvoid ref_fir_decimate_f32(\n  const arm_fir_decimate_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n        float32_t sum0;                                /* Accumulator */\n        float32_t x0, c0;                              /* Temporary variables to hold state and coefficient values */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, blkCnt;  \t\t\t\t\t\t\t\t\t \t\t\t\t /* Loop counters */\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + numTaps - 1U;\n\n  /* Total number of output samples to be computed */\n  blkCnt = blockSize / S->M;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCurnt++ = *pSrc++;\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0.0f;\n\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{\n      /* Read coefficients */\n      c0 = pCoeffs[i];\n\n      /* Fetch 1 state variable */\n      x0 = pState[i];\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\t\t}\n\n    /* Advance the state pointer by the decimation factor           \n     * to process the next group of decimation factor number samples */\n    pState += S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = sum0;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n  /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  /* Copy numTaps number of values */\n  i = numTaps - 1U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n}\n\nvoid ref_fir_decimate_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        q63_t sum0;                                    /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt;  \t\t\t\t\t\t\t\t\t\t\t\t\t /* Loop counters */\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + numTaps - 1U;\n\n  /* Total number of output samples to be computed */\n  blkCnt = blockSize / S->M;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCurnt++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{\n      /* Read coefficients */\n      c0 = pCoeffs[i];\n\n      /* Fetch 1 state variable */\n      x0 = pState[i];\n\n      /* Perform the multiply-accumulate */\n      sum0 += (q63_t)x0 * c0;\n\t\t}\n\n    /* Advance the state pointer by the decimation factor           \n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = (q31_t) (sum0 >> 31);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  i = numTaps - 1U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n}\n\nvoid ref_fir_decimate_fast_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        q31_t sum0;                                    /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt;  \t\t\t\t\t\t\t\t\t\t\t\t\t /* Loop counters */\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + numTaps - 1U;\n\n  /* Total number of output samples to be computed */\n  blkCnt = blockSize / S->M;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCurnt++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{\n      /* Read coefficients */\n      c0 = pCoeffs[i];\n\n      /* Fetch 1 state variable */\n      x0 = pState[i];\n\n      /* Perform the multiply-accumulate */\n\t\t\tsum0 = (q31_t)((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);\n\t\t}\n\n    /* Advance the state pointer by the decimation factor           \n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = (q31_t) (sum0 << 1);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  i = numTaps - 1U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n}\n\nvoid ref_fir_decimate_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        q63_t sum0;                                    /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt;  \t\t\t\t\t\t\t\t\t\t\t\t\t /* Loop counters */\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + numTaps - 1U;\n\n  /* Total number of output samples to be computed */\n  blkCnt = blockSize / S->M;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCurnt++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{\n      /* Read coefficients */\n      c0 = pCoeffs[i];\n\n      /* Fetch 1 state variable */\n      x0 = pState[i];\n\n      /* Perform the multiply-accumulate */\n      sum0 += (q31_t)x0 * c0;\n\t\t}\n\n    /* Advance the state pointer by the decimation factor           \n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = ref_sat_q15(sum0 >> 15);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  i = numTaps - 1U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n}\n\nvoid ref_fir_decimate_fast_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q15_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        q31_t sum0;                                    /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt;  \t\t\t\t\t\t\t\t\t\t\t\t\t /* Loop counters */\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + numTaps - 1U;\n\n  /* Total number of output samples to be computed */\n  blkCnt = blockSize / S->M;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCurnt++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{\n      /* Read coefficients */\n      c0 = pCoeffs[i];\n\n      /* Fetch 1 state variable */\n      x0 = pState[i];\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\t\t}\n\n    /* Advance the state pointer by the decimation factor           \n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = ref_sat_q15(sum0 >> 15);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.         \n   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  i = numTaps - 1U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n}\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_interpolate.c",
    "content": "#include \"ref.h\"\n\nvoid ref_fir_interpolate_f32(\n  const arm_fir_interpolate_instance_f32 * S,\n        float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n        float32_t *ptr1;                               /* Temporary pointer for state buffer */\n  const float32_t *ptr2;                               /* Temporary pointer for coefficient buffer */\n        float32_t sum;                                 /* Accumulator */\n        uint32_t i, blkCnt;                            /* Loop counters */\n        uint16_t phaseLen = S->phaseLength, tapCnt;    /* Length of each polyphase filter component */\n\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + phaseLen - 1;\n\n  /* Total number of intput samples */\n  blkCnt = blockSize;\n\n  /* Loop over the blockSize. */\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum = 0.0f;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + i - 1;\n\n      /* Loop over the polyPhase length */\n      tapCnt = phaseLen;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *ptr1++ * *ptr2;\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = sum;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1           \n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.         \n   ** Now copy the last phaseLen - 1 samples to the start of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  tapCnt = phaseLen - 1U;\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n}\n\nvoid ref_fir_interpolate_q31(\n  const arm_fir_interpolate_instance_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t *ptr1;                                   /* Temporary pointer for state buffer */\n  const q31_t *ptr2;                                   /* Temporary pointer for coefficient buffer */\n        q63_t sum;                                     /* Accumulator */\n        q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        uint32_t i, blkCnt;                            /* Loop counters */\n        uint16_t phaseLen = S->phaseLength, tapCnt;    /* Length of each polyphase filter component */\n\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + (q31_t)phaseLen - 1;\n\n  /* Total number of intput samples */\n  blkCnt = blockSize;\n\n  /* Loop over the blockSize. */\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + i - 1;\n\n      tapCnt = phaseLen;\n\n      while (tapCnt > 0U)\n      {\n        /* Read the coefficient */\n        c0 = *(ptr2);\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Read the input sample */\n        x0 = *ptr1++;\n\n        /* Perform the multiply-accumulate */\n        sum += (q63_t) x0 *c0;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = (q31_t)(sum >> 31);\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1           \n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.         \n   ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  tapCnt = phaseLen - 1U;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n}\n\nvoid ref_fir_interpolate_q15(\n  const arm_fir_interpolate_instance_q15 * S,\n        q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer                                            */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer                                      */\n        q15_t *pStateCurnt;                            /* Points to the current sample of the state                */\n        q15_t *ptr1;                                   /* Temporary pointer for state buffer */\n  const q15_t *ptr2;                                   /* Temporary pointer for coefficient buffer */\n        q63_t sum;                                     /* Accumulator */\n        q15_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        uint32_t i, blkCnt, tapCnt;                    /* Loop counters                                            */\n        uint16_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */\n\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + phaseLen - 1;\n\n  /* Total number of intput samples */\n  blkCnt = blockSize;\n\n  /* Loop over the blockSize. */\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + i - 1;\n\n      /* Loop over the polyPhase length */\n      tapCnt = (uint32_t)phaseLen;\n\n      while (tapCnt > 0U)\n      {\n        /* Read the coefficient */\n        c0 = *ptr2;\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Read the input sample */\n        x0 = *ptr1++;\n\n        /* Perform the multiply-accumulate */\n        sum += (q31_t) x0 * c0;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* Store the result after converting to 1.15 format in the destination buffer */\n      *pDst++ = ref_sat_q15(sum >> 15);\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1           \n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.         \n   ** Now copy the last phaseLen - 1 samples to the start of the state buffer.       \n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  i = (uint32_t) phaseLen - 1U;\n\n  while (i > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_lattice.c",
    "content": "#include \"ref.h\"\n\nvoid ref_fir_lattice_f32(\n  const arm_fir_lattice_instance_f32 * S,\n        float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        float32_t *pState;                             /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *px;                                 /* temporary state pointer */\n  const float32_t *pk;                                 /* temporary coefficient pointer */\n        float32_t fcurr, fnext, gcurr, gnext;          /* temporary variables */\n        uint32_t numStages = S->numStages;             /* Length of the filter */\n        uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */\n\n  pState = &S->pState[0];\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* read g0(n-1) from state buffer */\n    gcurr = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext = fcurr + ((*pk) * gcurr);\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext = (fcurr * (*pk++)) + gcurr;\n\n    /* save f0(n) in state buffer */\n    *px++ = fcurr;\n\n    /* f1(n) is saved in fcurr            \n       for next stage processing */\n    fcurr = fnext;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g2(n) from state buffer */\n      gcurr = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext = fcurr + ((*pk) * gcurr);\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext = (fcurr * (*pk++)) + gcurr;\n\n      /* f1(n) is saved in fcurr1            \n         for next stage processing */\n      fcurr = fnext;\n\n      stageCnt--;\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = fcurr;\n\n    blkCnt--;\n  }\n}\n\nvoid ref_fir_lattice_q31(\n  const arm_fir_lattice_instance_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState;                                 /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *px;                                     /* temporary state pointer */\n  const q31_t *pk;                                     /* temporary coefficient pointer */\n        q31_t fcurr, fnext, gcurr, gnext;              /* temporary variables */\n        uint32_t numStages = S->numStages;             /* Length of the filter */\n        uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */\n\n  pState = &S->pState[0];\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* read g0(n-1) from state buffer */\n    gcurr = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr;\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr;\n    /* save g1(n) in state buffer */\n    *px++ = fcurr;\n\n    /* f1(n) is saved in fcurr1            \n       for next stage processing */\n    fcurr = fnext;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g2(n) from state buffer */\n      gcurr = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr;\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr;\n\n      /* f1(n) is saved in fcurr1            \n         for next stage processing */\n      fcurr = fnext;\n\n      stageCnt--;\n\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = fcurr;\n\n    blkCnt--;\n\n  }\n}\n\nvoid ref_fir_lattice_q15(\n  const arm_fir_lattice_instance_q15 * S,\n        q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState;                                 /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *px;                                     /* temporary state pointer */\n  const q15_t *pk;                                     /* temporary coefficient pointer */\n        q31_t fcurnt, fnext, gcurnt, gnext;            /* temporary variables */\n        uint32_t numStages = S->numStages;             /* Length of the filter */\n        uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */\n\n  pState = &S->pState[0];\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurnt = *pSrc++;\n\n    /* Initialize coeff pointer */\n    pk = (pCoeffs);\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* read g0(n-1) from state buffer */\n    gcurnt = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt;\n    fnext = ref_sat_q15(fnext);\n\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt;\n    gnext = ref_sat_q15(gnext);\n\n    /* save f0(n) in state buffer */\n    *px++ = (q15_t) fcurnt;\n\n    /* f1(n) is saved in fcurnt            \n       for next stage processing */\n    fcurnt = fnext;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g1(n-1) from state buffer */\n      gcurnt = *px;\n\n      /* save g0(n-1) in state buffer */\n      *px++ = (q15_t) gnext;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt;\n      fnext = ref_sat_q15(fnext);\n\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt;\n      gnext = ref_sat_q15(gnext);\n\n\n      /* f1(n) is saved in fcurnt            \n         for next stage processing */\n      fcurnt = fnext;\n\n      stageCnt--;\n\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = ref_sat_q15(fcurnt);\n\n\n    blkCnt--;\n\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_sparse.c",
    "content": "#include \"ref.h\"\n\nvoid ref_fir_sparse_f32(\n        arm_fir_sparse_instance_f32 * S,\n        float32_t * pSrc,\n        float32_t * pDst,\n        float32_t * pScratchIn,\n        uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *px;                                 /* Scratch buffer pointer */\n        float32_t *py = pState;                        /* Temporary pointers for state buffer */\n        float32_t *pb = pScratchIn;                    /* Temporary pointers for scratch buffer */\n        float32_t *pOut;                               /* Destination pointer */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter  */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        float32_t coeff = *pCoeffs++;                  /* Read the first coefficient value */\n\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1,\n                        (int32_t *) pSrc, 1, blockSize);\n\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                       (int32_t *) pb, (int32_t *) pb, blockSize, 1,\n                       blockSize);\n\n  /* Working pointer for the scratch buffer */\n  px = pb;\n\n  /* Working pointer for destination buffer */\n  pOut = pDst;\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplications and store in destination buffer */\n    *pOut++ = *px++ * coeff;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 1U;\n\n  while (tapCnt > 0U)\n  {\n    /* Load the coefficient value and\n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                         (int32_t *) pb, (int32_t *) pb, blockSize, 1,\n                         blockSize);\n\n    /* Working pointer for the scratch buffer */\n    px = pb;\n\n    /* Working pointer for destination buffer */\n    pOut = pDst;\n\n    blkCnt = blockSize;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      *pOut++ += *px++ * coeff;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* Decrement the tap loop counter */\n    tapCnt--;\n  }\n}\n\nvoid ref_fir_sparse_q31(\n        arm_fir_sparse_instance_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        q31_t * pScratchIn,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *px;                                     /* Scratch buffer pointer */\n        q31_t *py = pState;                            /* Temporary pointers for state buffer */\n        q31_t *pb = pScratchIn;                        /* Temporary pointers for scratch buffer */\n        q31_t *pOut;                                   /* Destination pointer */\n        q63_t out;                                     /* Temporary output variable */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Filter order */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        q31_t coeff = *pCoeffs++;                      /* Read the first coefficient value */\n        q31_t in;\n\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1,\n                        (int32_t *) pSrc, 1, blockSize);\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                       (int32_t *) pb, (int32_t *) pb, blockSize, 1,\n                       blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pOut = pDst;\n  \n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplications and store in the destination buffer */\n    *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 1U;\n\n  while (tapCnt > 0U)\n  {\n    /* Load the coefficient value and           \n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                         (int32_t *) pb, (int32_t *) pb, blockSize, 1,\n                         blockSize);\n\n    /* Working pointer for the scratch buffer of state values */\n    px = pb;\n\n    /* Working pointer for scratch buffer of output values */\n    pOut = pDst;\n\n    blkCnt = blockSize;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      out = *pOut;\n      out += ((q63_t) * px++ * coeff) >> 32;\n      *pOut++ = (q31_t) (out);\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* Decrement the tap loop counter */\n    tapCnt--;\n  }\n\n  /* Working output pointer is updated */\n  pOut = pDst;\n\n  /* Output is converted into 1.31 format. */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    in = *pOut << 1;\n    *pOut++ = in;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n}\n\nvoid ref_fir_sparse_q15(\n        arm_fir_sparse_instance_q15 * S,\n        q15_t * pSrc,\n        q15_t * pDst,\n        q15_t * pScratchIn,\n        q31_t * pScratchOut,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pIn = pSrc;                             /* Working pointer for input */\n        q15_t *pOut = pDst;                            /* Working pointer for output */\n        q15_t *px;                                     /* Temporary pointers for scratch buffer */\n        q15_t *pb = pScratchIn;                        /* Temporary pointers for scratch buffer */\n        q15_t *py = pState;                            /* Temporary pointers for state buffer */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Filter order */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        q15_t coeff = *pCoeffs++;                      /* Read the first coefficient value */\n        q31_t *pScr2 = pScratchOut;                    /* Working pointer for pScratchOut */\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize);\n\n  /* Loop over the number of taps. */\n  tapCnt = numTaps;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_q15(py, delaySize, &readIndex, 1,\n                       pb, pb, blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pScratchOut = pScr2;\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform multiplication and store in the scratch buffer */\n    *pScratchOut++ = ((q31_t) * px++ * coeff);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 1U;\n\n  while (tapCnt > 0U)\n  {\n    /* Load the coefficient value and           \n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = (S->stateIndex - blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_q15(py, delaySize, &readIndex, 1,\n                         pb, pb, blockSize, 1, blockSize);\n\n    /* Working pointer for the scratch buffer of state values */\n    px = pb;\n\n    /* Working pointer for scratch buffer of output values */\n    pScratchOut = pScr2;\n\n    blkCnt = blockSize;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      *pScratchOut++ += (q31_t) * px++ * coeff;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* Decrement the tap loop counter */\n    tapCnt--;\n  }\n\n  /* All the output values are in pScratchOut buffer.       \n     Convert them into 1.15 format, saturate and store in the destination buffer. */\n  /* Loop over the blockSize. */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16);\n    blkCnt--;\n  }\n}\n\nvoid ref_fir_sparse_q7(\n        arm_fir_sparse_instance_q7 * S,\n        q7_t *pSrc,\n        q7_t *pDst,\n        q7_t *pScratchIn,\n        q31_t * pScratchOut,\n        uint32_t blockSize)\n{\n        q7_t *pState = S->pState;                      /* State pointer */\n  const q7_t *pCoeffs = S->pCoeffs;                    /* Coefficient pointer */\n        q7_t *px;                                      /* Scratch buffer pointer */\n        q7_t *py = pState;                             /* Temporary pointers for state buffer */\n        q7_t *pb = pScratchIn;                         /* Temporary pointers for scratch buffer */\n        q7_t *pOut = pDst;                             /* Destination pointer */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Filter order */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        q7_t coeff = *pCoeffs++;                       /* Read the coefficient value */\n        q31_t *pScr2 = pScratchOut;                    /* Working pointer for scratch buffer of output values */\n        q31_t in;\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1,\n                       blockSize);\n\n  /* Loop over the number of taps. */\n  tapCnt = numTaps;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,\n                      (int32_t) blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pScratchOut = pScr2;\n\n  /* Loop over the blockSize */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform multiplication and store in the scratch buffer */\n    *pScratchOut++ = ((q31_t) * px++ * coeff);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 1U;\n\n  while (tapCnt > 0U)\n  {\n    /* Load the coefficient value and           \n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,\n                        (int32_t) blockSize, 1, blockSize);\n\n    /* Working pointer for the scratch buffer of state values */\n    px = pb;\n\n    /* Working pointer for scratch buffer of output values */\n    pScratchOut = pScr2;\n\n    /* Loop over the blockSize */\n    blkCnt = blockSize;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      in = *pScratchOut + ((q31_t) * px++ * coeff);\n      *pScratchOut++ = in;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* Decrement the tap loop counter */\n    tapCnt--;\n  }\n\n  /* All the output values are in pScratchOut buffer.       \n     Convert them into 1.15 format, saturate and store in the destination buffer. */\n  /* Loop over the blockSize. */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8);\n\n    /* Decrement the blockSize loop counter */\n    blkCnt--;\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/iir_lattice.c",
    "content": "#include \"ref.h\"\n\nvoid ref_iir_lattice_f32(\n  const arm_iir_lattice_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  float32_t fcurr, fnext = 0, gcurr, gnext;      /* Temporary variables for lattice stages */\n  float32_t acc;                                 /* Accumlator */\n  uint32_t blkCnt, tapCnt;                       /* temporary variables for counts */\n  float32_t *px1, *px2, *pk, *pv;                /* temporary pointers for state and coef */\n  uint32_t numStages = S->numStages;             /* number of stages */\n  float32_t *pState;                             /* State pointer */\n  float32_t *pStateCurnt;                        /* State current pointer */\n\n  blkCnt = blockSize;\n  pState = &S->pState[0];\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize state read pointer */\n    px1 = pState;\n    /* Initialize state write pointer */\n    px2 = pState;\n    /* Set accumulator to zero */\n    acc = 0.0f;\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    /* Process sample for numStages */\n    tapCnt = numStages;\n\n    while (tapCnt > 0U)\n    {\n      gcurr = *px1++;\n      /* Process sample for last taps */\n      fnext = fcurr - (*pk) * gcurr;\n      gnext = fnext * (*pk++) + gcurr;\n\n      /* Output samples for last taps */\n      acc += gnext * (*pv++);\n      *px2++ = gnext;\n      fcurr = fnext;\n\n      /* Decrementing loop counter */\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += fnext * (*pv);\n\n    *px2++ = fnext;\n\n    /* write out into pDst */\n    *pDst++ = acc;\n\n    /* Advance the state pointer by 1 to process the next group of samples */\n    pState = pState + 1U;\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer           \n     for the preperation of next frame process */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  tapCnt = numStages;\n\n  /* Copy the data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n}\n\nvoid ref_iir_lattice_q31(\n  const arm_iir_lattice_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n  q31_t fcurr, fnext = 0, gcurr = 0, gnext;      /* Temporary variables for lattice stages */\n  q63_t acc;                                     /* Accumlator */\n  uint32_t blkCnt, tapCnt;                       /* Temporary variables for counts */\n  q31_t *px1, *px2, *pk, *pv;                    /* Temporary pointers for state and coef */\n  uint32_t numStages = S->numStages;             /* number of stages */\n  q31_t *pState;                                 /* State pointer */\n  q31_t *pStateCurnt;                            /* State current pointer */\n\n  blkCnt = blockSize;\n  pState = &S->pState[0];\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize state read pointer */\n    px1 = pState;\n    /* Initialize state write pointer */\n    px2 = pState;\n    /* Set accumulator to zero */\n    acc = 0;\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    tapCnt = numStages;\n\n    while (tapCnt > 0U)\n    {\n      gcurr = *px1++;\n      /* Process sample */\n      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */\n      fnext =\n        ref_sat_q31(((q63_t) fcurr -\n                         ((q31_t) (((q63_t) gcurr * (*pk)) >> 31))));\n      /* gN(n) = kN * fN-1(n) + gN-1(n-1) */\n      gnext =\n        ref_sat_q31(((q63_t) gcurr +\n                         ((q31_t) (((q63_t) fnext * (*pk++)) >> 31))));\n      /* Output samples */\n      /* y(n) += gN(n) * vN  */\n      acc += ((q63_t) gnext * *pv++);\n      /* write gN-1(n-1) into state for next sample processing */\n      *px2++ = gnext;\n      /* Update f values for next coefficient processing */\n      fcurr = fnext;\n\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += (q63_t) fnext *(*pv++);\n\n    *px2++ = fnext;\n\n    /* write out into pDst */\n    *pDst++ = (q31_t) (acc >> 31U);\n\n    /* Advance the state pointer by 1 to process the next group of samples */\n    pState = pState + 1U;\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer           \n     for the preperation of next frame process */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  tapCnt = numStages;\n\n  /* Copy the remaining q31_t data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n}\n\nvoid ref_iir_lattice_q15(\n  const arm_iir_lattice_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n  q31_t fcurr, fnext = 0, gcurr = 0, gnext;      /* Temporary variables for lattice stages */\n  uint32_t stgCnt;                               /* Temporary variables for counts */\n  q63_t acc;                                     /* Accumlator */\n  uint32_t blkCnt, tapCnt;                       /* Temporary variables for counts */\n  q15_t *px1, *px2, *pk, *pv;                    /* temporary pointers for state and coef */\n  uint32_t numStages = S->numStages;             /* number of stages */\n  q15_t *pState;                                 /* State pointer */\n  q15_t *pStateCurnt;                            /* State current pointer */\n  q15_t out;                                     /* Temporary variable for output */\n\n  blkCnt = blockSize;\n  pState = &S->pState[0];\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize state read pointer */\n    px1 = pState;\n    /* Initialize state write pointer */\n    px2 = pState;\n    /* Set accumulator to zero */\n    acc = 0;\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    tapCnt = numStages;\n\n    while (tapCnt > 0U)\n    {\n      gcurr = *px1++;\n      /* Process sample */\n      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */\n      fnext = fcurr - ((gcurr * (*pk)) >> 15);\n      fnext = ref_sat_q15(fnext);\n      /* gN(n) = kN * fN-1(n) + gN-1(n-1) */\n      gnext = ((fnext * (*pk++)) >> 15) + gcurr;\n      gnext = ref_sat_q15(gnext);\n      /* Output samples */\n      /* y(n) += gN(n) * vN */\n      acc += (q31_t) ((gnext * (*pv++)));\n      /* write gN(n) into state for next sample processing */\n      *px2++ = (q15_t) gnext;\n      /* Update f values for next coefficient processing */\n      fcurr = fnext;\n\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += (q31_t) ((fnext * (*pv++)));\n\n    out = ref_sat_q15(acc >> 15);\n    *px2++ = (q15_t) fnext;\n\n    /* write out into pDst */\n    *pDst++ = out;\n\n    /* Advance the state pointer by 1 to process the next group of samples */\n    pState = pState + 1U;\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer           \n     for the preperation of next frame process */\n  /* Points to the start of the state buffer */\n  pStateCurnt = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  stgCnt = numStages;\n\n  /* copy data */\n  while (stgCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    stgCnt--;\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/lms.c",
    "content": "#include \"ref.h\"\n\nvoid ref_lms_f32(\n  const arm_lms_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize)\n{\n  float32_t *pState = S->pState;                 /* State pointer */\n  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n  float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n  float32_t mu = S->mu;                          /* Adaptive factor */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  uint32_t i, blkCnt;                     \t\t\t /* Loop counters */\n  float32_t sum, e, d;                           /* accumulator, error, reference data sample */\n  float32_t w = 0.0f;                            /* weight factor */\n\n  e = 0.0f;\n  d = 0.0f;\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[numTaps - 1U]);\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set the accumulator to zero */\n    sum = 0.0f;\n\t\t\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{ /* Perform the multiply-accumulate */\n      sum += pState[i] * pCoeffs[i];\n\t\t}\n\n    /* The result is stored in the destination buffer. */\n    *pOut++ = sum;\n\n    /* Compute and store error */\n    d = *pRef++;\n    e = d - sum;\n    *pErr++ = e;\n\n    /* Weighting factor for the LMS version */\n    w = e * mu;\n\t\t\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{ /* Perform the multiply-accumulate */\n      pCoeffs[i] += w * pState[i];\n\t\t}\n\n    /* Advance state pointer by 1 for the next sample */\n    pState++;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the        \n   * start of the state buffer. This prepares the state buffer for the        \n   * next function call. */\n\tfor(i=0;i<numTaps-1;i++)\n  {\n    S->pState[i] = pState[i];\n  }\n}\n\nvoid ref_lms_norm_f32(\n  arm_lms_norm_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize)\n{\n  float32_t *pState = S->pState;                 /* State pointer */\n  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n  float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n  float32_t mu = S->mu;                          /* Adaptive factor */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  uint32_t i, blkCnt;                    \t\t\t\t /* Loop counters */\n  float32_t energy;                              /* Energy of the input */\n  float32_t sum, e, d;                           /* accumulator, error, reference data sample */\n  float32_t w, x0, in;                           /* weight factor, temporary variable to hold input sample and state */\n\n  /* Initializations of error,  difference, Coefficient update */\n  e = 0.0f;\n  d = 0.0f;\n  w = 0.0f;\n\n  energy = S->energy;\n  x0 = S->x0;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[numTaps - 1U]);\n\n  for(blkCnt = blockSize; blkCnt > 0U; blkCnt--)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc;\n\n    /* Read the sample from input buffer */\n    in = *pSrc++;\n\n    /* Update the energy calculation */\n    energy -= x0 * x0;\n    energy += in * in;\n\n    /* Set the accumulator to zero */\n    sum = 0.0f;\n\t\t\n\t\tfor(i=0;i<numTaps;i++)\n\t\t{ /* Perform the multiply-accumulate */\n      sum += pState[i] * pCoeffs[i];\n\t\t}\n\n    /* The result in the accumulator is stored in the destination buffer. */\n    *pOut++ = sum;\n\n    /* Compute and store error */\n    d = *pRef++;\n    e = d - sum;\n    *pErr++ = e;\n\n    /* Calculation of Weighting factor for updating filter coefficients */\n    /* epsilon value 0.000000119209289f */\n    w = e * mu / (energy + 0.000000119209289f);\n\n\t\tfor(i=0;i<numTaps;i++)\n    {\n      /* Perform the multiply-accumulate */\n      pCoeffs[i] += w * pState[i];\n    }\n\n    x0 = *pState;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState++;\n  }\n\n  S->energy = energy;\n  S->x0 = x0;\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the        \n   * start of the state buffer. This prepares the state buffer for the        \n   * next function call. */\n\tfor(i=0;i<numTaps-1;i++)\n  {\n    S->pState[i] = pState[i];\n  }\n}\n\nvoid ref_lms_q31(\n  const arm_lms_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pRef,\n  q31_t * pOut,\n  q31_t * pErr,\n  uint32_t blockSize)\n{\n  q31_t *pState = S->pState;                     /* State pointer */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n  q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n  q31_t mu = S->mu;                              /* Adaptive factor */\n  q31_t *px;                                     /* Temporary pointer for state */\n  q31_t *pb;                                     /* Temporary pointer for coefficient buffer */\n  uint32_t tapCnt, blkCnt;                       /* Loop counters */\n  q63_t acc;                                     /* Accumulator */\n  q31_t e = 0;                                   /* error of data sample */\n  q31_t alpha;                                   /* Intermediate constant for taps update */\n  q31_t coef;                                    /* Temporary variable for coef */\n  q31_t acc_l, acc_h;                            /*  temporary input */\n  uint32_t uShift = (uint32_t)S->postShift + 1;\n  uint32_t lShift = 32U - uShift;                /*  Shift to be applied to the output */\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  for(blkCnt = blockSize; blkCnt > 0U; blkCnt--)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize pCoeffs pointer */\n    pb = pCoeffs;\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (q63_t)(*px++) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Converting the result to 1.31 format */\n    /* Store the result from accumulator into the destination buffer. */\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    acc = (uint32_t)acc_l >> lShift | acc_h << uShift;\n\n    *pOut++ = (q31_t)acc;\n\n    /* Compute and store error */\n    e = *pRef++ - (q31_t)acc;\n\n    *pErr++ = (q31_t)e;\n\n    /* Weighting factor for the LMS version */\n    alpha = (q31_t)(((q63_t)e * mu) >> 31);\n\n    /* Initialize pState pointer */\n    /* Advance state pointer by 1 for the next sample */\n    px = pState++;\n\n    /* Initialize pCoeffs pointer */\n    pb = pCoeffs;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      coef = (q31_t)(((q63_t) alpha * (*px++)) >> 32);\n      *pb = ref_sat_q31((q63_t)*pb + (coef << 1));\n      pb++;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n  }\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the     \n     start of the state buffer. This prepares the state buffer for the   \n     next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /*  Copy (numTaps - 1U) samples  */\n  tapCnt = numTaps - 1;\n\n  /* Copy the data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n}\n\nvoid ref_lms_norm_q31(\n  arm_lms_norm_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pRef,\n  q31_t * pOut,\n  q31_t * pErr,\n  uint32_t blockSize)\n{\n  q31_t *pState = S->pState;                     /* State pointer */\n  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n  q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n  q31_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */\n  q31_t mu = S->mu;                              /* Adaptive factor */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  uint32_t tapCnt, blkCnt;                       /* Loop counters */\n  q63_t energy;                                  /* Energy of the input */\n  q63_t acc;                                     /* Accumulator */\n  q31_t e = 0, d = 0;                            /* error, reference data sample */\n  q31_t w = 0, in;                               /* weight factor and state */\n  q31_t x0;                                      /* temporary variable to hold input sample */   \n  q63_t errorXmu;                   \t\t\t\t /* Temporary variables to store error and mu product and reciprocal of energy */\n  q31_t coef;                                    /* Temporary variable for coef */\n  q31_t acc_l, acc_h;                            /*  temporary input */\n  uint32_t uShift = ((uint32_t) S->postShift + 1U);\n  uint32_t lShift = 32U - uShift;                /*  Shift to be applied to the output */\n\n  energy = S->energy;\n  x0 = S->x0;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  for(blkCnt = blockSize; blkCnt > 0U; blkCnt--)\n  {\n\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize pCoeffs pointer */\n    pb = pCoeffs;\n\n    /* Read the sample from input buffer */\n    in = *pSrc++;\n\n    /* Update the energy calculation */\n    energy = (q31_t)((((q63_t)energy << 32) - (((q63_t)x0 * x0) << 1)) >> 32) & 0xffffffff;\n    energy = (q31_t)(((((q63_t)in * in) << 1) + ((q63_t)energy << 32)) >> 32) & 0xffffffff;\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Converting the result to 1.31 format */\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    acc = (uint32_t)acc_l >> lShift | acc_h << uShift;\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = (q31_t)acc;\n\n    /* Compute and store error */\n    d = *pRef++;\n    e = d - (q31_t)acc;\n    *pErr++ = e;\n\n    /* Calculation of product of (e * mu) */\n    errorXmu = (q63_t)e * mu;\n\n    /* Weighting factor for the normalized version */\n    w = ref_sat_q31(errorXmu / (energy + DELTA_Q31));\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* coef is in 2.30 format */\n      coef = (q31_t)(((q63_t)w * (*px++)) >> 32);\n      /* get coef in 1.31 format by left shifting */\n      *pb = ref_sat_q31((q63_t)*pb + (coef << 1U));\n      /* update coefficient buffer to next coefficient */\n      pb++;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Read the sample from state buffer */\n    x0 = *pState;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState++;\n  }\n\n  /* Save energy and x0 values for the next frame */\n  S->energy = (q31_t)energy;\n  S->x0 = x0;\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the     \n     start of the state buffer. This prepares the state buffer for the        \n     next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* Loop for (numTaps - 1U) samples copy */\n  tapCnt = numTaps - 1;\n\n  /* Copy the remaining q31_t data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n}\n\nvoid ref_lms_q15(\n  const arm_lms_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pRef,\n  q15_t * pOut,\n  q15_t * pErr,\n  uint32_t blockSize)\n{\n  q15_t *pState = S->pState;                     /* State pointer */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n  q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n  q15_t mu = S->mu;                              /* Adaptive factor */\n  q15_t *px;                                     /* Temporary pointer for state */\n  q15_t *pb;                                     /* Temporary pointer for coefficient buffer */\n  uint32_t tapCnt, blkCnt;                       /* Loop counters */\n  q63_t acc;                                     /* Accumulator */\n  q15_t e = 0;                                   /* error of data sample */\n  q15_t alpha;                                   /* Intermediate constant for taps update */\n  q31_t coef;                                    /* Teporary variable for coefficient */\n  q31_t acc_l, acc_h;\n  int32_t lShift = 15 - (int32_t)S->postShift;   /*  Post shift  */\n  int32_t uShift = 32 - lShift;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  for(blkCnt = blockSize; blkCnt > 0U; blkCnt--)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize pCoeffs pointer */\n    pb = pCoeffs;\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (q63_t)((q31_t)(*px++) * (*pb++));\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    /* Apply shift for lower part of acc and upper part of acc */\n    acc = (uint32_t)acc_l >> lShift | acc_h << uShift;\n\n    /* Converting the result to 1.15 format and saturate the output */\n    acc = ref_sat_q15(acc);\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = (q15_t)acc;\n\n    /* Compute and store error */\n    e = *pRef++ - (q15_t)acc;\n\n    *pErr++ = (q15_t)e;\n\n    /* Compute alpha i.e. intermediate constant for taps update */\n    alpha = (q15_t)(((q31_t)e * mu) >> 15);\n\n    /* Initialize pState pointer */\n    /* Advance state pointer by 1 for the next sample */\n    px = pState++;\n\n    /* Initialize pCoeffs pointer */\n    pb = pCoeffs;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);\n      *pb++ = (q15_t) ref_sat_q15(coef);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n  }\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the        \n     start of the state buffer. This prepares the state buffer for the   \n     next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /*  Copy (numTaps - 1U) samples  */\n  tapCnt = numTaps - 1;\n\n  /* Copy the data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n}\n\nvoid ref_lms_norm_q15(\n  arm_lms_norm_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pRef,\n  q15_t * pOut,\n  q15_t * pErr,\n  uint32_t blockSize)\n{\n  q15_t *pState = S->pState;                     /* State pointer */\n  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n  q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n  q15_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */\n  q15_t mu = S->mu;                              /* Adaptive factor */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  uint32_t tapCnt, blkCnt;                       /* Loop counters */\n  q31_t energy;                                  /* Energy of the input */\n  q63_t acc;                                     /* Accumulator */\n  q15_t e = 0, d = 0;                            /* error, reference data sample */\n  q15_t w = 0, in;                               /* weight factor and state */\n  q15_t x0;                                      /* temporary variable to hold input sample */\n  q15_t errorXmu, oneByEnergy;                   /* Temporary variables to store error and mu product and reciprocal of energy */\n  //q31_t errorXmu;                   \t\t\t\t /* Temporary variables to store error and mu product and reciprocal of energy */\n  q15_t postShift;                               /* Post shift to be applied to weight after reciprocal calculation */\n  q31_t coef;                                    /* Teporary variable for coefficient */\n  q31_t acc_l, acc_h;\n  int32_t lShift = 15 - (int32_t)S->postShift;  /*  Post shift  */\n  int32_t uShift = 32 - lShift;\n\n  energy = S->energy;\n  x0 = S->x0;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  for(blkCnt = blockSize; blkCnt > 0U; blkCnt--)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize pCoeffs pointer */\n    pb = pCoeffs;\n\n    /* Read the sample from input buffer */\n    in = *pSrc++;\n\n    /* Update the energy calculation */\n    energy -= (((q31_t)x0 * x0) >> 15) & 0xffff;\n    energy += (((q31_t)in * in) >> 15) & 0xffff;\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (q31_t)*px++ * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    /* Apply shift for lower part of acc and upper part of acc */\n    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n    /* Converting the result to 1.15 format and saturate the output */\n    acc = ref_sat_q15(acc);\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = (q15_t) acc;\n\n    /* Compute and store error */\n    d = *pRef++;\n    e = d - (q15_t) acc;\n    *pErr++ = e;\n    \n#if 0\n    /* Calculation of e * mu value */\n    errorXmu = (q31_t) e * mu;\n\n    /* Calculation of (e * mu) /energy value */\n    acc = errorXmu / (energy + DELTA_Q15);\n#endif\n\n    /* Calculation of 1/energy */\n    postShift = arm_recip_q15((q15_t) energy + DELTA_Q15,\n                              &oneByEnergy, S->recipTable);\n\n    /* Calculation of e * mu value */\n    errorXmu = (q15_t) (((q31_t) e * mu) >> 15);\n\n    /* Calculation of (e * mu) * (1/energy) value */\n    acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift));\n    \n    /* Weighting factor for the normalized version */\n    w = ref_sat_q15((q31_t)acc);\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n    /* Loop over numTaps number of values */\n    tapCnt = numTaps;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      coef = *pb + (((q31_t)w * (*px++)) >> 15);\n      *pb++ = ref_sat_q15(coef);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Read the sample from state buffer */\n    x0 = *pState;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1U;\n  }\n\n  /* Save energy and x0 values for the next frame */\n  S->energy = (q15_t)energy;\n  S->x0 = x0;\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the        \n     satrt of the state buffer. This prepares the state buffer for the        \n     next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* copy (numTaps - 1U) data */\n  tapCnt = numTaps - 1;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/HelperFunctions.c",
    "content": "\n#include \"mat_helper.c\"\n#include \"ref_helper.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/mat_helper.c",
    "content": "#include \"ref.h\"\n\nfloat32_t ref_detrm(float32_t *pSrc, float32_t *temp, uint32_t size)\n{\n   float32_t s = 1, det = 0;\n   int i, j, m, n, c;\n\n   if ( size == 1 )\n   {\n      return ( pSrc[ 0 ] );\n   }\n   else\n   {\n      det = 0;\n\n      for ( c = 0;c < size;c++ )\n      {\n         m = 0;\n         n = 0;\n\n         for ( i = 0;i < size;i++ )\n         {\n            for ( j = 0;j < size;j++ )\n            {\n               temp[ i*size + j ] = 0;\n\n               if ( i != 0 && j != c )\n               {\n                  temp[ m*(size-1) + n ] = pSrc[ i*size + j ];\n\n                  if ( n < ( size - 2 ) )\n                  {\n                     n++;\n                  }\n                  else\n                  {\n                     n = 0;\n                     m++;\n                  }\n               }\n            }\n         }\n\n         det += s * ( pSrc[ c ] * ref_detrm( temp, temp + size*size, size - 1 ) );\n         s = -s;\n      }\n   }\n   \n   return ( det );\n}\n\n\nvoid ref_cofact(float32_t *pSrc, float32_t *pDst, float32_t *temp, uint32_t size)\n{\n   int p, q, m, n, i, j;\n\t\n\t if (size == 1)\n\t {\n\t\t pDst[0] = 1;\n\t\t return;\n\t }\n\n   for ( q = 0;q < size;q++ )\n   {\n      for ( p = 0;p < size;p++ )\n      {\n         m = 0;\n         n = 0;\n\n         for ( i = 0;i < size;i++ )\n         {\n            for ( j = 0;j < size;j++ )\n            {\n               temp[ i*size + j ] = 0;\n\n               if ( i != q && j != p )\n               {\n                  temp[ m*(size-1) + n ] = pSrc[ i*size + j ];\n\n                  if ( n < ( size - 2 ) )\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tn++;\n\t\t\t\t\t\t\t\t\t}\n                  else\n                  {\n                     n = 0;\n                     m++;\n                  }\n               }\n            }\n         }\n\n         pDst[ q*size + p ] = ref_pow( -1, q + p ) * ref_detrm( temp, temp + (size-1)*(size-1), size - 1 );\n      }\n   }\n}\n\n\n\nfloat64_t ref_detrm64(float64_t *pSrc, float64_t *temp, uint32_t size)\n{\n   float64_t s = 1, det = 0;\n   int i, j, m, n, c;\n\n   if ( size == 1 )\n   {\n      return ( pSrc[ 0 ] );\n   }\n   else\n   {\n      det = 0;\n\n      for ( c = 0;c < size;c++ )\n      {\n         m = 0;\n         n = 0;\n\n         for ( i = 0;i < size;i++ )\n         {\n            for ( j = 0;j < size;j++ )\n            {\n               temp[ i*size + j ] = 0;\n\n               if ( i != 0 && j != c )\n               {\n                  temp[ m*(size-1) + n ] = pSrc[ i*size + j ];\n\n                  if ( n < ( size - 2 ) )\n                  {\n                     n++;\n                  }\n                  else\n                  {\n                     n = 0;\n                     m++;\n                  }\n               }\n            }\n         }\n\n         det += s * ( pSrc[ c ] * ref_detrm64( temp, temp + size*size, size - 1 ) );\n         s = -s;\n      }\n   }\n   \n   return ( det );\n}\n\n\nvoid ref_cofact64(float64_t *pSrc, float64_t *pDst, float64_t *temp, uint32_t size)\n{\n   int p, q, m, n, i, j;\n\t\n\t if (size == 1)\n\t {\n\t\t pDst[0] = 1;\n\t\t return;\n\t }\n\n   for ( q = 0;q < size;q++ )\n   {\n      for ( p = 0;p < size;p++ )\n      {\n         m = 0;\n         n = 0;\n\n         for ( i = 0;i < size;i++ )\n         {\n            for ( j = 0;j < size;j++ )\n            {\n               temp[ i*size + j ] = 0;\n\n               if ( i != q && j != p )\n               {\n                  temp[ m*(size-1) + n ] = pSrc[ i*size + j ];\n\n                  if ( n < ( size - 2 ) )\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tn++;\n\t\t\t\t\t\t\t\t\t}\n                  else\n                  {\n                     n = 0;\n                     m++;\n                  }\n               }\n            }\n         }\n\n         pDst[ q*size + p ] = ref_pow( -1, q + p ) * ref_detrm64( temp, temp + (size-1)*(size-1), size - 1 );\n      }\n   }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/ref_helper.c",
    "content": "#include \"ref.h\"\n\nfloat32_t scratchArray[8192*2]; \n\narm_cfft_instance_f32 ref_cfft_sR_f32_len8192 = { 8192, 0, 0, 0 };\n\t\nq31_t ref_sat_n(q31_t num, uint32_t bits)\n{\n\tint32_t posMax, negMin;\n\tuint32_t i;\n\n\tposMax = 1;\n\tfor (i = 0; i < (bits - 1); i++)\n\t{\n\t\tposMax = posMax * 2;\n\t}\n\n\tif (num > 0)\n\t{\n\t\tposMax = (posMax - 1);\n\n\t\tif (num > posMax)\n\t\t{\n\t\t\tnum = posMax;\n\t\t}\n\t}\n\telse\n\t{\n\t\tnegMin = -posMax;\n\n\t\tif (num < negMin)\n\t\t{\n\t\t\tnum = negMin;\n\t\t}\n\t}\n\treturn (num);\n}\n\nq31_t ref_sat_q31(q63_t num)\n{\n\tif (num > (q63_t)INT_MAX)\n\t{\n\t\treturn INT_MAX;\n\t}\n\telse if (num < (q63_t)0xffffffff80000000ll)\n\t{\n\t\treturn INT_MIN;\n\t}\n\telse\n\t{\n\t\treturn (q31_t)num;\n\t}\n}\n\nq15_t ref_sat_q15(q31_t num)\n{\n\tif (num > (q31_t)SHRT_MAX)\n\t{\n\t\treturn SHRT_MAX;\n\t}\n\telse if (num < (q31_t)0xffff8000)\n\t{\n\t\treturn SHRT_MIN;\n\t}\n\telse\n\t{\n\t\treturn (q15_t)num;\n\t}\n}\n\nq7_t ref_sat_q7(q15_t num)\n{\n\tif (num > (q15_t)SCHAR_MAX)\n\t{\n\t\treturn SCHAR_MAX;\n\t}\n\telse if (num < (q15_t)0xff80)\n\t{\n\t\treturn SCHAR_MIN;\n\t}\n\telse\n\t{\n\t\treturn (q7_t)num;\n\t}\n}\n\nfloat32_t ref_pow(float32_t a, uint32_t b)\n{\n\tuint32_t i;\n\tfloat32_t r = a;\n\t\n\tfor(i=1;i<b;i++) \n\t{\n\t\tr *= a;\n\t}\n\t\n\tif ( b == 0)\n\t{\n\t\treturn 1;\n\t}\n\t\n\treturn r;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/Intrinsics/Intrinsics_.c",
    "content": "\n#include \"intrinsics.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/Intrinsics/intrinsics.c",
    "content": "#include \"ref.h\"\n\nq31_t ref__QADD8(q31_t x, q31_t y)\n{\n   q31_t sum;\n   q7_t r, s, t, u;\n\n   r = (q7_t) x;\n   s = (q7_t) y;\n\n   r = ref_sat_n((q31_t) (r + s), 8);\n   s = ref_sat_n(((q31_t) (((x << 16) >> 24) + ((y << 16) >> 24))), 8);\n   t = ref_sat_n(((q31_t) (((x << 8) >> 24) + ((y << 8) >> 24))), 8);\n   u = ref_sat_n(((q31_t) ((x >> 24) + (y >> 24))), 8);\n\n   sum =\n      (((q31_t) u << 24) & 0xFF000000) | (((q31_t) t << 16) & 0x00FF0000) |\n      (((q31_t) s << 8) & 0x0000FF00) | (r & 0x000000FF);\n\n   return sum;\n\n}\n\nq31_t ref__QSUB8(q31_t x, q31_t y)\n{\n   q31_t sum;\n   q31_t r, s, t, u;\n\n   r = (q7_t) x;\n   s = (q7_t) y;\n\n   r = ref_sat_n((r - s), 8);\n   s = ref_sat_n(((q31_t) (((x << 16) >> 24) - ((y << 16) >> 24))), 8) << 8;\n   t = ref_sat_n(((q31_t) (((x << 8) >> 24) - ((y << 8) >> 24))), 8) << 16;\n   u = ref_sat_n(((q31_t) ((x >> 24) - (y >> 24))), 8) << 24;\n\n   sum = (u & 0xFF000000) | (t & 0x00FF0000) | (s & 0x0000FF00) | (r & 0x000000FF);\n\n   return sum;\n}\n\nq31_t ref__QADD16(q31_t x, q31_t y)\n{\n   q31_t sum;\n   q31_t r, s;\n\n   r = (q15_t) x;\n   s = (q15_t) y;\n\n   r = ref_sat_q15(r + s);\n   s = (q31_t)ref_sat_q15(((q31_t) ((x >> 16) + (y >> 16)))) << 16;\n\n   sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\n\n   return sum;\n\n}\n\nq31_t ref__SHADD16(q31_t x, q31_t y)\n{\n   q31_t sum;\n   q31_t r, s;\n\n   r = (q15_t) x;\n   s = (q15_t) y;\n\n   r = (r + s) >> 1;\n   s = ((q31_t) (((x >> 16) + (y >> 16)) >> 1) << 16);\n\n   sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\n\n   return sum;\n\n}\n\nq31_t ref__QSUB16(q31_t x, q31_t y)\n{\n   q31_t sum;\n   q31_t r, s;\n\n   r = (q15_t) x;\n   s = (q15_t) y;\n\n   r = ref_sat_q15(r - s);\n   s = (q31_t)ref_sat_q15(((q31_t) ((x >> 16) - (y >> 16)))) << 16;\n\n   sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\n\n   return sum;\n}\n\nq31_t ref__SHSUB16(q31_t x, q31_t y)\n{\n   q31_t diff;\n   q31_t r, s;\n\n   r = (q15_t) x;\n   s = (q15_t) y;\n\n   r = ((r >> 1) - (s >> 1));\n   s = (((x >> 17) - (y >> 17)) << 16);\n\n   diff = (s & 0xFFFF0000) | (r & 0x0000FFFF);\n\n   return diff;\n}\n\nq31_t ref__QASX(q31_t x, q31_t y)\n{\n   q31_t sum = 0;\n\tq31_t xL, xH, yL, yH;\n\t\n   // extract bottom halfword and sign extend\n\txL = (q15_t)(x & 0xffff);\n   // extract bottom halfword and sign extend\n\tyL = (q15_t)(y & 0xffff);\n   // extract top halfword and sign extend\n   xH = (q15_t)(x >> 16);\n   // extract top halfword and sign extend\n   yH = (q15_t)(y >> 16);\n   \n   sum = (((q31_t)ref_sat_q15(xH + yL )) << 16) |\n         (((q31_t)ref_sat_q15(xL - yH )) & 0xffff);\n\n   return sum;\n}\n\nq31_t ref__SHASX(q31_t x, q31_t y)\n{\n   q31_t sum;\n   q31_t r, s;\n\n   r = (q15_t) x;\n   s = (q15_t) y;\n\n    r = (r - (y >> 16)) / 2;\n    s = (((x >> 16) + s) << 15);\n\n   sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\n\n   return sum;\n}\n\nq31_t ref__QSAX(q31_t x, q31_t y)\n{\n   q31_t sum = 0;\n\tq31_t xL, xH, yL, yH;\n\t\n   // extract bottom halfword and sign extend\n\txL = (q15_t)(x & 0xffff);\n   // extract bottom halfword and sign extend\n\tyL = (q15_t)(y & 0xffff);\n   // extract top halfword and sign extend\n   xH = (q15_t)(x >> 16);\n   // extract top halfword and sign extend\n   yH = (q15_t)(y >> 16);\n   \n   sum = (((q31_t)ref_sat_q15(xH - yL )) << 16) |\n         (((q31_t)ref_sat_q15(xL + yH )) & 0xffff);\n\n   return sum;\n}\n\nq31_t ref__SHSAX(q31_t x, q31_t y)\n{\n   q31_t sum;\n   q31_t r, s;\n\n   r = (q15_t) x;\n   s = (q15_t) y;\n\n    r = (r + (y >> 16)) / 2;\n    s = (((x >> 16) - s) << 15);\n\n   sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\n\n   return sum;\n}\n\nq31_t ref__SMUSDX(q31_t x, q31_t y)\n{\n   return ((q31_t) (((q15_t) x * (q15_t) (y >> 16)) - ((q15_t) (x >> 16) * (q15_t) y)));\n}\n\nq31_t ref__SMUADX(q31_t x, q31_t y)\n{\n   return ((q31_t) (((q15_t) x * (q15_t) (y >> 16)) + ((q15_t) (x >> 16) * (q15_t) y)));\n}\n\nq31_t ref__QADD(q31_t x, q31_t y)\n{\n   return ref_sat_q31((q63_t) x + y);\n}\n\nq31_t ref__QSUB(q31_t x, q31_t y)\n{\n   return ref_sat_q31((q63_t) x - y);\n}\n\nq31_t ref__SMLAD(q31_t x, q31_t y, q31_t sum)\n{\n   return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y));\n}\n\nq31_t ref__SMLADX(q31_t x, q31_t y, q31_t sum)\n{\n   return (sum + ((q15_t) (x >> 16) * (q15_t) (y)) + ((q15_t) x * (q15_t) (y >> 16)));\n}\n\nq31_t ref__SMLSDX(q31_t x, q31_t y, q31_t sum)\n{\n   return (sum - ((q15_t) (x >> 16) * (q15_t) (y)) + ((q15_t) x * (q15_t) (y >> 16)));\n}\n\nq63_t ref__SMLALD(q31_t x, q31_t y, q63_t sum)\n{\n   return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y));\n}\n\nq63_t ref__SMLALDX(q31_t x, q31_t y, q63_t sum)\n{\n   return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16));\n}\n\nq31_t ref__SMUAD(q31_t x, q31_t y)\n{\n   return (((x >> 16) * (y >> 16)) + (((x << 16) >> 16) * ((y << 16) >> 16)));\n}\n\nq31_t ref__SMUSD(q31_t x, q31_t y)\n{\n   return (-((x >> 16) * (y >> 16)) + (((x << 16) >> 16) * ((y << 16) >> 16)));\n}\n\nq31_t ref__SXTB16(q31_t x)\n{\n   return ((((x << 24) >> 24) & 0x0000FFFF) | (((x << 8) >> 8) & 0xFFFF0000));\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/MatrixFunctions.c",
    "content": "\n#include \"mat_add.c\"\n#include \"mat_cmplx_mult.c\"\n#include \"mat_inverse.c\"\n#include \"mat_mult.c\"\n#include \"mat_scale.c\"\n#include \"mat_sub.c\"\n#include \"mat_trans.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_add.c",
    "content": "#include \"ref.h\"\n\narm_status ref_mat_add_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = pSrcA->pData[i] + pSrcB->pData[i];\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_add_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = ref_sat_q31( (q63_t)pSrcA->pData[i] + pSrcB->pData[i]);\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_add_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = ref_sat_q15( (q31_t)pSrcA->pData[i] + pSrcB->pData[i]);\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_cmplx_mult.c",
    "content": "#include \"ref.h\"\n\narm_status ref_mat_cmplx_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n\tuint32_t r,c,i,outR,outC,innerSize;\n\tfloat32_t sumR,sumI;\n\tfloat32_t a0,b0,c0,d0;\n\t\n\toutR = pSrcA->numRows;\n\toutC = pSrcB->numCols;\n\tinnerSize = pSrcA->numCols;\n\t\n\tfor(r=0;r<outR;r++)\n\t{\n\t\tfor(c=0;c<outC;c++)\n\t\t{\n\t\t\tsumR = 0;\n\t\t\tsumI = 0;\n\t\t\t\n\t\t\tfor(i=0;i<innerSize;i++)\n\t\t\t{\n\t\t\t\ta0 = pSrcA->pData[2*(r*innerSize + i) + 0];\n\t\t\t\tb0 = pSrcA->pData[2*(r*innerSize + i) + 1];\n\t\t\t\tc0 = pSrcB->pData[2*(i*outC + c) + 0]; \n\t\t\t\td0 = pSrcB->pData[2*(i*outC + c) + 1];\t\n\t\t\t\t\n\t\t\t\tsumR += a0 * c0 - b0 * d0;\n\t\t\t\tsumI += b0 * c0 + a0 * d0;\n\t\t\t}\n\t\t\t\n\t\t\tpDst->pData[2*(r*outC + c) + 0] = sumR;\n\t\t\tpDst->pData[2*(r*outC + c) + 1] = sumI;\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_cmplx_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst)\n{\n\tuint32_t r,c,i,outR,outC,innerSize;\n\tq63_t sumR,sumI;\n\tq31_t a0,b0,c0,d0;\n\t\n\toutR = pSrcA->numRows;\n\toutC = pSrcB->numCols;\n\tinnerSize = pSrcA->numCols;\n\t\n\tfor(r=0;r<outR;r++)\n\t{\n\t\tfor(c=0;c<outC;c++)\n\t\t{\n\t\t\tsumR = 0;\n\t\t\tsumI = 0;\n\t\t\t\n\t\t\tfor(i=0;i<innerSize;i++)\n\t\t\t{\n\t\t\t\ta0 = pSrcA->pData[2*(r*innerSize + i) + 0];\n\t\t\t\tb0 = pSrcA->pData[2*(r*innerSize + i) + 1];\n\t\t\t\tc0 = pSrcB->pData[2*(i*outC + c) + 0]; \n\t\t\t\td0 = pSrcB->pData[2*(i*outC + c) + 1];\t\n\t\t\t\t\n\t\t\t\tsumR += (q63_t)a0 * c0 - (q63_t)b0 * d0;\n\t\t\t\tsumI += (q63_t)b0 * c0 + (q63_t)a0 * d0;\n\t\t\t}\n\t\t\t\n\t\t\tpDst->pData[2*(r*outC + c) + 0] = ref_sat_q31(sumR >> 31);\n\t\t\tpDst->pData[2*(r*outC + c) + 1] = ref_sat_q31(sumI >> 31);\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_cmplx_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst)\n{\n\tuint32_t r,c,i,outR,outC,innerSize;\n\tq63_t sumR,sumI;\n\tq15_t a0,b0,c0,d0;\n\t\n\toutR = pSrcA->numRows;\n\toutC = pSrcB->numCols;\n\tinnerSize = pSrcA->numCols;\n\t\n\tfor(r=0;r<outR;r++)\n\t{\n\t\tfor(c=0;c<outC;c++)\n\t\t{\n\t\t\tsumR = 0;\n\t\t\tsumI = 0;\n\t\t\t\n\t\t\tfor(i=0;i<innerSize;i++)\n\t\t\t{\n\t\t\t\ta0 = pSrcA->pData[2*(r*innerSize + i) + 0];\n\t\t\t\tb0 = pSrcA->pData[2*(r*innerSize + i) + 1];\n\t\t\t\tc0 = pSrcB->pData[2*(i*outC + c) + 0]; \n\t\t\t\td0 = pSrcB->pData[2*(i*outC + c) + 1];\t\n\t\t\t\t\n\t\t\t\tsumR += (q31_t)a0 * c0 - (q31_t)b0 * d0;\n\t\t\t\tsumI += (q31_t)b0 * c0 + (q31_t)a0 * d0;\n\t\t\t}\n\t\t\t\n\t\t\tpDst->pData[2*(r*outC + c) + 0] = ref_sat_q15(sumR >> 15);\n\t\t\tpDst->pData[2*(r*outC + c) + 1] = ref_sat_q15(sumI >> 15);\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_inverse.c",
    "content": "#include \"ref.h\"\n\narm_status ref_mat_inverse_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  arm_matrix_instance_f32 * pDst)\n{\n\tfloat32_t det;\n\tuint32_t i, size;\n\tarm_matrix_instance_f32 tmp;\n\t\n\ttmp.numCols = pSrc->numCols;\n\ttmp.numRows = pSrc->numRows;\n\ttmp.pData = scratchArray;\n\t\n\tdet = ref_detrm(pSrc->pData,scratchArray,pSrc->numCols);\n\t\n\tsize = pSrc->numCols * pSrc->numCols;\n\t\n\tref_cofact(pSrc->pData,scratchArray,scratchArray + size,pSrc->numCols);\n\t\n\tref_mat_trans_f32(&tmp,pDst);\t\n\t\n\tfor(i=0;i<size;i++)\n\t{\n\t\tpDst->pData[i] /= det;\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_inverse_f64(\n  const arm_matrix_instance_f64 * pSrc,\n  arm_matrix_instance_f64 * pDst)\n{\n\tfloat64_t det;\n\tuint32_t i, size;\n\tarm_matrix_instance_f64 tmp;\n\t\n\ttmp.numCols = pSrc->numCols;\n\ttmp.numRows = pSrc->numRows;\n\ttmp.pData = (float64_t*)scratchArray;\n\t\n\tdet = ref_detrm64(pSrc->pData,(float64_t*)scratchArray,pSrc->numCols);\n\t\n\tsize = pSrc->numCols * pSrc->numCols;\n\t\n\tref_cofact64(pSrc->pData,(float64_t*)scratchArray,(float64_t*)scratchArray + size,pSrc->numCols);\n\t\n\tref_mat_trans_f64(&tmp,pDst);\t\n\t\n\tfor(i=0;i<size;i++)\n\t{\n\t\tpDst->pData[i] /= det;\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_mult.c",
    "content": "#include \"ref.h\"\n\narm_status ref_mat_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n\tuint32_t r,c,i,outR,outC,innerSize;\n\tfloat32_t sum;\n\t\n\toutR = pSrcA->numRows;\n\toutC = pSrcB->numCols;\n\tinnerSize = pSrcA->numCols;\n\t\n\tfor(r=0;r<outR;r++)\n\t{\n\t\tfor(c=0;c<outC;c++)\n\t\t{\n\t\t\tsum = 0;\n\t\t\t\n\t\t\tfor(i=0;i<innerSize;i++)\n\t\t\t{\n\t\t\t\tsum += pSrcA->pData[r*innerSize + i] * pSrcB->pData[i*outC + c];\n\t\t\t}\n\t\t\t\n\t\t\tpDst->pData[r*outC + c] = sum;\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst)\n{\n\tuint32_t r,c,i,outR,outC,innerSize;\n\tq63_t sum;\n\t\n\toutR = pSrcA->numRows;\n\toutC = pSrcB->numCols;\n\tinnerSize = pSrcA->numCols;\n\t\n\tfor(r=0;r<outR;r++)\n\t{\n\t\tfor(c=0;c<outC;c++)\n\t\t{\n\t\t\tsum = 0;\n\t\t\t\n\t\t\tfor(i=0;i<innerSize;i++)\n\t\t\t{\n\t\t\t\tsum += (q63_t)(pSrcA->pData[r*innerSize + i]) * pSrcB->pData[i*outC + c];\n\t\t\t}\n\t\t\t\n\t\t\tpDst->pData[r*outC + c] = ref_sat_q31(sum >> 31);\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst)\n{\n\tuint32_t r,c,i,outR,outC,innerSize;\n\tq63_t sum;\n\t\n\toutR = pSrcA->numRows;\n\toutC = pSrcB->numCols;\n\tinnerSize = pSrcA->numCols;\n\t\n\tfor(r=0;r<outR;r++)\n\t{\n\t\tfor(c=0;c<outC;c++)\n\t\t{\n\t\t\tsum = 0;\n\t\t\t\n\t\t\tfor(i=0;i<innerSize;i++)\n\t\t\t{\n\t\t\t\tsum += (q31_t)(pSrcA->pData[r*innerSize + i]) * pSrcB->pData[i*outC + c];\n\t\t\t}\n\t\t\t\n\t\t\tpDst->pData[r*outC + c] = ref_sat_q15(sum >> 15);\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_scale.c",
    "content": "#include \"ref.h\"\n\narm_status ref_mat_scale_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  float32_t scale,\n  arm_matrix_instance_f32 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrc->numRows * pSrc->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = pSrc->pData[i] * scale;\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_scale_q31(\n  const arm_matrix_instance_q31 * pSrc,\n  q31_t scale,\n  int32_t shift,\n  arm_matrix_instance_q31 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\tint32_t totShift = shift + 1; \n\tq31_t tmp;\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrc->numRows * pSrc->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\ttmp = ((q63_t)pSrc->pData[i] * scale) >> 32;\n\t\tpDst->pData[i] = ref_sat_q31((q63_t)tmp << totShift );\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_scale_q15(\n  const arm_matrix_instance_q15 * pSrc,\n  q15_t scale,\n  int32_t shift,\n  arm_matrix_instance_q15 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\tint32_t totShift = 15 - shift;\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrc->numRows * pSrc->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = ref_sat_q15( ((q31_t)pSrc->pData[i] * scale) >> totShift);\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_sub.c",
    "content": "#include \"ref.h\"\n\narm_status ref_mat_sub_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = pSrcA->pData[i] - pSrcB->pData[i];\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_sub_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = ref_sat_q31( (q63_t)pSrcA->pData[i] - pSrcB->pData[i]);\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_sub_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst)\n{\n\tuint32_t i;\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n\n\t/* Total number of samples in the input matrix */\n\tnumSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\t\n\tfor(i=0;i<numSamples;i++)\n\t{\n\t\tpDst->pData[i] = ref_sat_q15( (q31_t)pSrcA->pData[i] - pSrcB->pData[i]);\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_trans.c",
    "content": "#include \"ref.h\"\n\narm_status ref_mat_trans_f64(\n  const arm_matrix_instance_f64 * pSrc,\n  arm_matrix_instance_f64 * pDst)\n{\n\tuint64_t r,c;\n\tuint64_t numR = pSrc->numRows;\n\tuint64_t numC = pSrc->numCols;\n\t\n\tfor(r=0;r<numR;r++)\n\t{\n\t\tfor(c=0;c<numC;c++)\n\t\t{\n\t\t\tpDst->pData[c*numR + r] = pSrc->pData[r*numC + c];\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_trans_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  arm_matrix_instance_f32 * pDst)\n{\n\tuint32_t r,c;\n\tuint32_t numR = pSrc->numRows;\n\tuint32_t numC = pSrc->numCols;\n\t\n\tfor(r=0;r<numR;r++)\n\t{\n\t\tfor(c=0;c<numC;c++)\n\t\t{\n\t\t\tpDst->pData[c*numR + r] = pSrc->pData[r*numC + c];\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_trans_q31(\n  const arm_matrix_instance_q31 * pSrc,\n  arm_matrix_instance_q31 * pDst)\n{\n\tuint32_t r,c;\n\tuint32_t numR = pSrc->numRows;\n\tuint32_t numC = pSrc->numCols;\n\t\n\tfor(r=0;r<numR;r++)\n\t{\n\t\tfor(c=0;c<numC;c++)\n\t\t{\n\t\t\tpDst->pData[c*numR + r] = pSrc->pData[r*numC + c];\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n\narm_status ref_mat_trans_q15(\n  const arm_matrix_instance_q15 * pSrc,\n  arm_matrix_instance_q15 * pDst)\n{\n\tuint32_t r,c;\n\tuint32_t numR = pSrc->numRows;\n\tuint32_t numC = pSrc->numCols;\n\t\n\tfor(r=0;r<numR;r++)\n\t{\n\t\tfor(c=0;c<numC;c++)\n\t\t{\n\t\t\tpDst->pData[c*numR + r] = pSrc->pData[r*numC + c];\n\t\t}\n\t}\n\t\n\treturn ARM_MATH_SUCCESS;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/StatisticsFunctions.c",
    "content": "\n#include \"max.c\"\n#include \"mean.c\"\n#include \"min.c\"\n#include \"power.c\"\n#include \"rms.c\"\n#include \"std.c\"\n#include \"var.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/max.c",
    "content": "#include \"ref.h\"\n\nvoid ref_max_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tfloat32_t max=-FLT_MAX;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (max < pSrc[i])\n\t\t{\n\t\t\tmax = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = max;\n\t*pIndex = ind;\n}\n\nvoid ref_max_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tq31_t max=INT_MIN;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (max < pSrc[i])\n\t\t{\n\t\t\tmax = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = max;\n\t*pIndex = ind;\n}\n\nvoid ref_max_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tq15_t max=SHRT_MIN;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (max < pSrc[i])\n\t\t{\n\t\t\tmax = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = max;\n\t*pIndex = ind;\n}\n\nvoid ref_max_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tq7_t max=SCHAR_MIN;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (max < pSrc[i])\n\t\t{\n\t\t\tmax = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = max;\n\t*pIndex = ind;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/mean.c",
    "content": "#include \"ref.h\"\n\nvoid ref_mean_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n\tuint32_t i;\n\tfloat32_t sum=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t}\n\t*pResult = sum / (float32_t)blockSize;\n}\n\nvoid ref_mean_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult)\n{\n\tuint32_t i;\n\tq63_t sum=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t}\n\t*pResult = (q31_t) (sum / (int32_t) blockSize);\n}\n\nvoid ref_mean_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult)\n{\n\tuint32_t i;\n\tq31_t sum=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t}\n\t*pResult = (q15_t) (sum / (int32_t) blockSize);\n}\n\nvoid ref_mean_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult)\n{\n\tuint32_t i;\n\tq31_t sum=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t}\n\t*pResult = (q7_t) (sum / (int32_t) blockSize);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/min.c",
    "content": "#include \"ref.h\"\n\nvoid ref_min_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tfloat32_t min=FLT_MAX;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (min > pSrc[i])\n\t\t{\n\t\t\tmin = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = min;\n\t*pIndex = ind;\n}\n\nvoid ref_min_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tq31_t min=INT_MAX;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (min > pSrc[i])\n\t\t{\n\t\t\tmin = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = min;\n\t*pIndex = ind;\n}\n\nvoid ref_min_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tq15_t min=SHRT_MAX;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (min > pSrc[i])\n\t\t{\n\t\t\tmin = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = min;\n\t*pIndex = ind;\n}\n\nvoid ref_min_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult,\n  uint32_t * pIndex)\n{\n\tuint32_t i, ind=0;\n\tq7_t min=SCHAR_MAX;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tif (min > pSrc[i])\n\t\t{\n\t\t\tmin = pSrc[i];\n\t\t\tind = i;\n\t\t}\n\t}\n\t*pResult = min;\n\t*pIndex = ind;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/power.c",
    "content": "#include \"ref.h\"\n\nvoid ref_power_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n\tuint32_t i;\n\tfloat32_t sumsq=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsumsq += pSrc[i] * pSrc[i];\n\t}\n\t*pResult = sumsq;\n}\n\nvoid ref_power_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q63_t * pResult)\n{\n\tuint32_t i;\n\tq63_t sumsq=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsumsq += ((q63_t)pSrc[i] * pSrc[i]) >> 14;\n\t}\n\t*pResult = sumsq;\n}\n\nvoid ref_power_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q63_t * pResult)\n{\n\tuint32_t i;\n\tq63_t sumsq=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsumsq += (q63_t)pSrc[i] * pSrc[i];\n\t}\n\t*pResult = sumsq;\n}\n\nvoid ref_power_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult)\n{\n\tuint32_t i;\n\tq31_t sumsq=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsumsq += (q31_t)pSrc[i] * pSrc[i];\n\t}\n\t*pResult = sumsq;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/rms.c",
    "content": "#include \"ref.h\"\n\nvoid ref_rms_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n\tuint32_t i;\n\tfloat32_t sumsq=0;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsumsq += pSrc[i] * pSrc[i];\n\t}\n\t*pResult = sqrtf(sumsq / (float32_t)blockSize);\n}\n\nvoid ref_rms_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult)\n{\n\tuint32_t i;\n    uint64_t sumsq = 0;             /* accumulator (can get never negative. changed type from q63 to uint64 */\n\tq63_t tmp1;\n\tq31_t tmp2;\n  \n  float help_float;\n  \n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsumsq += (q63_t)pSrc[i] * pSrc[i];\n\t}\n\ttmp1 = (sumsq / (q63_t)blockSize) >> 31;\n\ttmp2 = ref_sat_q31(tmp1);\n\n  /* GCC M0 problem: __aeabi_f2iz(QNAN) returns not 0 */\n  help_float = (sqrtf((float)tmp2 / 2147483648.0f) * 2147483648.0f);\n  /* Checking for a NAN value in help_float */\n  if (((*((int *)(&help_float))) & 0x7FC00000) == 0x7FC00000) {\n      help_float = 0;\n  }\n  *pResult = (q31_t)(help_float);\n\n//  *pResult = (q31_t)(sqrtf((float)tmp2 / 2147483648.0f) * 2147483648.0f);\n}\n\nvoid ref_rms_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult)\n{\n\tuint32_t i;\n\tq63_t sumsq=0;\n\tq31_t tmp1;\n\tq15_t tmp2;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsumsq += (q63_t)pSrc[i] * pSrc[i];\n\t}\n\ttmp1 = (sumsq / (q63_t)blockSize) >> 15;\n\ttmp2 = ref_sat_q15(tmp1);\n\t*pResult = (q15_t)(sqrtf((float)tmp2 / 32768.0f) * 32768.0f);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/std.c",
    "content": "#include \"ref.h\"\n\nvoid ref_std_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n\tuint32_t i;\n\tfloat32_t sum=0, sumsq=0;\n\t\n\tif (blockSize == 1)\n\t{\n\t\t*pResult = 0;\n\t\treturn;\n\t}\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t\t\tsumsq += pSrc[i] * pSrc[i];\n\t}\n\t*pResult = sqrtf((sumsq - sum * sum / (float32_t)blockSize) / ((float32_t)blockSize - 1));\n}\n\nvoid ref_std_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult)\n{\n\tuint32_t i;\n\tq63_t sum=0, sumsq=0;\n\tq31_t in;\n\t\n\tif (blockSize == 1)\n\t{\n\t\t*pResult = 0;\n\t\treturn;\n\t}\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tin = pSrc[i] >> 8;\n\t\t\tsum += in;\n\t\t\tsumsq += (q63_t)in * in;\n\t}\n\tsumsq /= (q63_t)(blockSize - 1);\n\tsum = sum * sum / (q63_t)(blockSize * (blockSize - 1));\n\t*pResult = (q31_t)(sqrtf((float)( (sumsq - sum) >> 15) / 2147483648.0f ) * 2147483648.0f);\n}\n\nvoid ref_std_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult)\n{\n\tuint32_t i;\n\tq31_t sum=0;\n\tq63_t sumsq=0;\n\t\n\tif (blockSize == 1)\n\t{\n\t\t*pResult = 0;\n\t\treturn;\n\t}\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t\t\tsumsq += (q63_t)pSrc[i] * pSrc[i];\n\t}\n\tsumsq /= (q63_t)(blockSize - 1);\n\tsum = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));\n\t*pResult = (q15_t)(sqrtf((float)ref_sat_q15( (sumsq - sum) >> 15) / 32768.0f ) * 32768.0f);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/var.c",
    "content": "#include \"ref.h\"\n\nvoid ref_var_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n\tuint32_t i;\n\tfloat32_t sum=0, sumsq=0;\n\t\n\tif (blockSize == 1)\n\t{\n\t\t*pResult = 0;\n\t\treturn;\n\t}\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t\t\tsumsq += pSrc[i] * pSrc[i];\n\t}\n\t*pResult = (sumsq - sum * sum / (float32_t)blockSize) / ((float32_t)blockSize - 1);\n}\n\nvoid ref_var_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult)\n{\n\tuint32_t i;\n\tq63_t sum=0, sumsq=0;\n\tq31_t in;\n\t\n\tif (blockSize == 1)\n\t{\n\t\t*pResult = 0;\n\t\treturn;\n\t}\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tin = pSrc[i] >> 8;\n\t\t\tsum += in;\n\t\t\tsumsq += (q63_t)in * in;\n\t}\n\t*pResult = (sumsq - sum * sum / (q31_t)blockSize) / ((q31_t)blockSize - 1) >> 15;\n}\n\nvoid ref_var_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult)\n{\n\tuint32_t i;\n\tq31_t sum=0;\n\tq63_t sumsq=0;\n\t\n\tif (blockSize == 1)\n\t{\n\t\t*pResult = 0;\n\t\treturn;\n\t}\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\t\tsum += pSrc[i];\n\t\t\tsumsq += (q63_t)pSrc[i] * pSrc[i];\n\t}\n\t*pResult = (q31_t)((sumsq - (q63_t)sum * sum / (q63_t)blockSize) / ((q63_t)blockSize - 1)) >> 15;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/SupportFunctions.c",
    "content": "\n#include \"copy.c\"\n#include \"fill.c\"\n#include \"fixed_to_fixed.c\"\n#include \"fixed_to_float.c\"\n#include \"float_to_fixed.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/copy.c",
    "content": "#include \"ref.h\"\n\nvoid ref_copy_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i];\n\t}\n}\n\nvoid ref_copy_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i];\n\t}\n}\n\nvoid ref_copy_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i];\n\t}\n}\n\nvoid ref_copy_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i];\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/fill.c",
    "content": "#include \"ref.h\"\n\nvoid ref_fill_f32(\n  float32_t value,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = value;\n\t}\n}\n\nvoid ref_fill_q31(\n  q31_t value,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = value;\n\t}\n}\n\nvoid ref_fill_q15(\n  q15_t value,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = value;\n\t}\n}\n\nvoid ref_fill_q7(\n  q7_t value,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = value;\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/fixed_to_fixed.c",
    "content": "#include \"ref.h\"\n\nvoid ref_q31_to_q15(\n  q31_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] >> 16;\n\t}\n}\n\nvoid ref_q31_to_q7(\n  q31_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] >> 24;\n\t}\n}\n\nvoid ref_q15_to_q31(\n  q15_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ((q31_t)pSrc[i]) << 16;\n\t}\n}\n\nvoid ref_q15_to_q7(\n  q15_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = pSrc[i] >> 8;\n\t}\n}\n\nvoid ref_q7_to_q31(\n  q7_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ((q31_t)pSrc[i]) << 24;\n\t}\n}\n\nvoid ref_q7_to_q15(\n  q7_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ((q15_t)pSrc[i]) << 8;\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/fixed_to_float.c",
    "content": "#include \"ref.h\"\n\nvoid ref_q63_to_float(\n  q63_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ((float32_t)pSrc[i]) / 9223372036854775808.0f;\n\t}\n}\n\nvoid ref_q31_to_float(\n  q31_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ((float32_t)pSrc[i]) / 2147483648.0f;\n\t}\n}\n\t\nvoid ref_q15_to_float(\n  q15_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ((float32_t)pSrc[i]) / 32768.0f;\n\t}\n}\n\t\nvoid ref_q7_to_float(\n  q7_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tpDst[i] = ((float32_t)pSrc[i]) / 128.0f;\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/float_to_fixed.c",
    "content": "#include \"ref.h\"\n\nvoid ref_float_to_q31(\n  float32_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\tfloat32_t in;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tin = pSrc[i];\n\t\tin *= 2147483648.0f;\t\t\t\t//scale up\n\t\tin += in > 0.0f ? 0.5f : -0.5f;\t\t//round\n\t\tpDst[i] = ref_sat_q31((q63_t)in);\t//cast and saturate\n\t}\n}\n\t\nvoid ref_float_to_q15(\n  float32_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\tfloat32_t in;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tin = pSrc[i];\n\t\tin *= 32768.0f;\n\t\tin += in > 0.0f ? 0.5f : -0.5f;\n\t\tpDst[i] = ref_sat_q15((q31_t)in);\n\t}\n}\n\t\nvoid ref_float_to_q7(\n  float32_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n\tuint32_t i;\n\tfloat32_t in;\n\t\n\tfor(i=0;i<blockSize;i++)\n\t{\n\t\tin = pSrc[i];\n\t\tin *= 128.0f;\n\t\tin += in > 0.0f ? 0.5f : -0.5f;\n\t\tpDst[i] = ref_sat_q7((q15_t)in);\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/TransformFunctions.c",
    "content": "\n#include \"cfft.c\"\n#include \"dct4.c\"\n#include \"rfft.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/bitreversal.c",
    "content": "#include \"ref.h\"\n\n\n;/*    \n;* @brief  In-place bit reversal function.   \n;* @param[in, out] *pSrc        points to the in-place buffer of unknown 32-bit data type. \n;* @param[in]      bitRevLen    bit reversal table length\n;* @param[in]      *pBitRevTab  points to bit reversal table.   \n;* @return none.   \n;*/\nvoid ref_arm_bitreversal_32(uint32_t *pSrc, uint32_t bitRevLen, uint32_t *pBitRevTab)\n{\n\tuint32_t a,b,i,tmp;\n\t\n\tfor(i=0; i<bitRevLen; i++) \n\t{\n\t\t a = pBitRevTab[2*i];\n\t\t b = pBitRevTab[2*i + 1];\n\n\t//real\n\t\t tmp = pSrc[a];\n\t\t pSrc[a] = pSrc[b];\n\t\t pSrc[b] = tmp;\n\n\t//complex\n\t\t tmp = pSrc[a+1];\n\t\t pSrc[a+1] = pSrc[b+1];\n\t\t pSrc[b+1] = tmp;\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/cfft.c",
    "content": "#include \"ref.h\"\n#include \"arm_const_structs.h\"\n\t \nvoid ref_cfft_f32(\n   const arm_cfft_instance_f32 * S, \n   float32_t * p1,\n   uint8_t ifftFlag,\n   uint8_t bitReverseFlag)\n{\n\tint n, mmax, m, j, istep, i;\n\tfloat32_t wtemp, wr, wpr, wpi, wi, theta;\n\tfloat32_t tempr, tempi;\n\tfloat32_t *  data = p1;\n\tuint32_t N = S->fftLen;\n\tint32_t dir = (ifftFlag) ? -1 : 1;\n\n\t// decrement pointer since the original version used fortran style indexing.\n\tdata--;\n\n\tn = N << 1;\n\tj = 1;\n\tfor (i = 1; i < n; i += 2) {\n\t\tif (j > i) {\n\t\t\ttempr = data[j];     data[j] = data[i];     data[i] = tempr;\n\t\t\ttempr = data[j+1]; data[j+1] = data[i+1]; data[i+1] = tempr;\n\t\t}\n\t\tm = n >> 1;\n\t\twhile (m >= 2 && j > m) {\n\t\t\tj -= m;\n\t\t\tm >>= 1;\n\t\t}\n\t\tj += m;\n\t}\n\tmmax = 2;\n\twhile (n > mmax) {\n\t\tistep = 2*mmax;\n\t\ttheta = -6.283185307179586f/(dir*mmax);\n\t\twtemp = sinf(0.5f*theta);\n\t\twpr = -2.0f*wtemp*wtemp;\n\t\twpi = sinf(theta);\n\t\twr = 1.0f;\n\t\twi = 0.0f;\n\t\tfor (m = 1; m < mmax; m += 2) {\n\t\t\tfor (i = m; i <= n; i += istep) {\n\t\t\t\tj =i + mmax;\n\t\t\t\ttempr = wr*data[j]   - wi*data[j+1];\n\t\t\t\ttempi = wr*data[j+1] + wi*data[j];\n\t\t\t\tdata[j]   = data[i]   - tempr;\n\t\t\t\tdata[j+1] = data[i+1] - tempi;\n\t\t\t\tdata[i] += tempr;\n\t\t\t\tdata[i+1] += tempi;\n\t\t\t}\n\t\t\twr = (wtemp = wr)*wpr - wi*wpi + wr;\n\t\t\twi = wi*wpr + wtemp*wpi + wi;\n\t\t}\n\t\tmmax = istep;\n\t}\n\n\t// Inverse transform is scaled by 1/N\n\tif (ifftFlag)\n\t{\n\t\tdata++;\n\t\tfor(i = 0; i<2*N; i++)\n\t\t{\n\t\t\tdata[i] /= N;\n\t\t}\n\t}\n}\n\nvoid ref_cfft_q31(\n\tconst arm_cfft_instance_q31 * S,\n    q31_t * p1,\n    uint8_t ifftFlag,\n    uint8_t bitReverseFlag)\n{\n\tuint32_t i;\n\tfloat32_t *fSrc = (float32_t*)p1;\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//read the q31 data, cast to float, scale down for float\n\t\tfSrc[i] = (float32_t)p1[i] / 2147483648.0f;\n\t}\n\t\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n\t}\n\t\n\tif (ifftFlag)\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tp1[i] = (q31_t)( fSrc[i] * 2147483648.0f );\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tp1[i] = (q31_t)( fSrc[i] * 2147483648.0f / (float32_t)S->fftLen);\n\t\t}\n\t}\n}\n\nvoid ref_cfft_q15(\n\tconst arm_cfft_instance_q15 * S,\n    q15_t * pSrc,\n    uint8_t ifftFlag,\n    uint8_t bitReverseFlag)\n{\n\tuint32_t i;\n\tfloat32_t *fSrc = (float32_t*)pSrc;\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//read the q15 data, cast to float, scale down for float, place in temporary buffer\n\t\tscratchArray[i] = (float32_t)pSrc[i] / 32768.0f;\n\t}\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//copy from temp buffer to final buffer\n\t\tfSrc[i] = scratchArray[i];\n\t}\n\t\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, ifftFlag, bitReverseFlag);\n\t\t break;\n\t}\n\t\n\tif (ifftFlag)\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q15, cast to q15\n\t\t\tpSrc[i] = (q15_t)( fSrc[i] * 32768.0f );\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q15, cast to q15\n\t\t\tpSrc[i] = (q15_t)( fSrc[i] * 32768.0f / (float32_t)S->fftLen);\n\t\t}\n\t}\n}\n\nvoid ref_cfft_radix2_f32(\n\tconst arm_cfft_radix2_instance_f32 * S,\n\tfloat32_t * pSrc)\n{\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n\t}\n}\n\nvoid ref_cfft_radix2_q31(\n\tconst arm_cfft_radix2_instance_q31 * S,\n\tq31_t * pSrc)\n{\n\tuint32_t i;\n\tfloat32_t *fSrc = (float32_t*)pSrc;\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//read the q31 data, cast to float, scale down for float\n\t\tfSrc[i] = (float32_t)pSrc[i] / 2147483648.0f;\n\t}\n\t\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n\t}\n\t\n\tif (S->ifftFlag)\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tpSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f );\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tpSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f / (float32_t)S->fftLen);\n\t\t}\n\t}\n}\n\nvoid ref_cfft_radix2_q15(\n\tconst arm_cfft_radix2_instance_q15 * S,\n\tq15_t * pSrc)\n{\n\tuint32_t i;\n\tfloat32_t *fSrc = (float32_t*)pSrc;\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//read the q15 data, cast to float, scale down for float, place in temporary buffer\n\t\tscratchArray[i] = (float32_t)pSrc[i] / 32768.0f;\n\t}\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//copy from temp buffer to final buffer\n\t\tfSrc[i] = scratchArray[i];\n\t}\n\t\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n\t}\n\t\n\tif (S->ifftFlag)\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t//read the float data, scale up for q15, cast to q15\n\t\tpSrc[i] = (q15_t)( fSrc[i] * 32768.0f );\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t//read the float data, scale up for q15, cast to q15\n\t\tpSrc[i] = (q15_t)( fSrc[i] * 32768.0f / (float32_t)S->fftLen);\n\t\t}\n\t}\n}\n\nvoid ref_cfft_radix4_f32(\n\tconst arm_cfft_radix4_instance_f32 * S,\n\tfloat32_t * pSrc)\n{\t\t\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, pSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n\t}\n}\n\nvoid ref_cfft_radix4_q31(\n\tconst arm_cfft_radix4_instance_q31 * S,\n\tq31_t * pSrc)\n{\n\tuint32_t i;\n\tfloat32_t *fSrc = (float32_t*)pSrc;\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//read the q31 data, cast to float, scale down for float\n\t\tfSrc[i] = (float32_t)pSrc[i] / 2147483648.0f;\n\t}\n\t\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n\t}\n\t\n\tif (S->ifftFlag)\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tpSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f );\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tpSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f / (float32_t)S->fftLen);\n\t\t}\n\t}\n}\n\nvoid ref_cfft_radix4_q15(\n\tconst arm_cfft_radix4_instance_q15 * S,\n\tq15_t * pSrc)\n{\n\tuint32_t i;\n\tfloat32_t *fSrc = (float32_t*)pSrc;\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//read the q15 data, cast to float, scale down for float, place in temporary buffer\n\t\tscratchArray[i] = (float32_t)pSrc[i] / 32768.0f;\n\t}\n\t\n\tfor(i=0;i<S->fftLen*2;i++)\n\t{\n\t\t//copy from temp buffer to final buffer\n\t\tfSrc[i] = scratchArray[i];\n\t}\n\t\n\tswitch(S->fftLen)\n\t{\n   case 16: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag);\n\t\t break;\n\t}\n\t\n\tif (S->ifftFlag)\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t//read the float data, scale up for q15, cast to q15\n\t\tpSrc[i] = (q15_t)( fSrc[i] * 32768.0f );\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLen*2;i++)\n\t\t{\n\t\t//read the float data, scale up for q15, cast to q15\n\t\tpSrc[i] = (q15_t)( fSrc[i] * 32768.0f / (float32_t)S->fftLen);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/dct4.c",
    "content": "#include \"ref.h\"\n\nvoid ref_dct4_f32(\n  const arm_dct4_instance_f32 * S,\n  float32_t * pState,\n  float32_t * pInlineBuffer)\n{\n\tuint32_t n,k;\n\tfloat32_t sum;\n   float32_t pi_by_N = 3.14159265358979f / (float32_t)S->N;\n   float32_t tmp;\n   float32_t normalize = sqrtf(2.0f / (float32_t)S->N);\n\t\n\tfor(k=0;k<S->N;k++)\n\t{\n\t\tsum=0.0f;\n      tmp = ((float32_t)k + 0.5f)*pi_by_N;\n\t\tfor(n=0;n<S->N;n++)\n\t\t{\n\t\t\tsum += pInlineBuffer[n] * cosf(tmp * ((float32_t)n + 0.5f));\n\t\t}\n\t\tscratchArray[k] = normalize * sum;\n\t}\n\t\n\tfor(k=0;k<S->N;k++)\n\t{\n\t\tpInlineBuffer[k] = scratchArray[k];\n\t}\n}\n\nvoid ref_dct4_q31(\n  const arm_dct4_instance_q31 * S,\n  q31_t * pState,\n  q31_t * pInlineBuffer)\n{\n\tarm_dct4_instance_f32 SS;\n\tfloat32_t *fSrc = (float32_t*)pInlineBuffer;\n\tuint32_t i;\n\t\n\tSS.N = S->N;\n\t\n\tfor(i=0;i<S->N;i++)\n\t{\n\t\t//read the q31 data, cast to float, scale down for float\n\t\tfSrc[i] = (float32_t)pInlineBuffer[i] / 2147483648.0f;\n\t}\n\t\n\tref_dct4_f32(&SS,(float32_t*)0,fSrc);\n\t\n\tfor(i=0;i<S->N;i++)\n\t{\n\t\tfSrc[i] = fSrc[i] * 2147483648.0f / (float32_t)S->N ;\n\t\tfSrc[i] += (fSrc[i] > 0) ? 0.5f : -0.5f;\n\t\tpInlineBuffer[i] = (q31_t)fSrc[i];\n\t}\n}\n\nvoid ref_dct4_q15(\n  const arm_dct4_instance_q15 * S,\n  q15_t * pState,\n  q15_t * pInlineBuffer)\n{\n\tarm_dct4_instance_f32 SS;\n\tfloat32_t *fSrc = (float32_t*)pInlineBuffer;\n\tuint32_t i;\n\t\n\tSS.N = S->N;\n\t\n\tfor(i=0;i<S->N;i++)\n\t{\n\t\t//read the q15 data, cast to float, scale down for float, place in temporary buffer\n\t\tscratchArray[i] = (float32_t)pInlineBuffer[i] / 32768.0f;\n\t}\n\t\n\tfor(i=0;i<S->N;i++)\n\t{\n\t\t//copy from temp buffer to final buffer\n\t\tfSrc[i] = scratchArray[i];\n\t}\n\t\n\tref_dct4_f32(&SS,(float32_t*)0,fSrc);\n\t\n\tfor(i=0;i<S->N;i++)\n\t{\n\t\tfSrc[i] = fSrc[i] * 32768.0f / (float32_t)S->N;\n\t\tfSrc[i] += (fSrc[i] > 0) ? 0.5f : -0.5f;\n\t\tpInlineBuffer[i] = (q15_t)fSrc[i];\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/rfft.c",
    "content": "#include \"ref.h\"\t\n#include \"arm_const_structs.h\"\n\t\nvoid ref_rfft_f32(\n\tarm_rfft_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst)\n{\n\tuint32_t i;\n\t\n\tif (S->ifftFlagR)\n\t{\n\t\tfor(i=0;i<S->fftLenReal*2;i++)\n\t\t{\n\t\t\tpDst[i] = pSrc[i];\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\tpDst[2*i+0] = pSrc[i];\n\t\t\tpDst[2*i+1] = 0.0f;\n\t\t}\n\t}\n\t\n\tswitch(S->fftLenReal)\n\t{   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, pDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, pDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, pDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 8192: \n\t\t ref_cfft_f32(&ref_cfft_sR_f32_len8192, pDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t}\n\t\n\tif (S->ifftFlagR)\n\t{\n\t\t//throw away the imaginary part which should be all zeros\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\tpDst[i] = pDst[2*i];\n\t\t}\n\t}\n}\n\t\nvoid ref_rfft_fast_f32(\n\tarm_rfft_fast_instance_f32 * S,\n\tfloat32_t * p, float32_t * pOut,\n\tuint8_t ifftFlag)\n{\n\tuint32_t i,j;\n\t\n\tif (ifftFlag)\n\t{\n\t\tfor(i=0;i<S->fftLenRFFT;i++)\n\t\t{\n\t\t\tpOut[i] = p[i];\n\t\t}\n\t\t//unpack first sample's complex part into middle sample's real part\n\t\tpOut[S->fftLenRFFT] = pOut[1];\n\t\tpOut[S->fftLenRFFT+1] = 0;\n\t\tpOut[1] = 0;\n\t\tj=4;\n\t\tfor(i = S->fftLenRFFT / 2 + 1;i < S->fftLenRFFT;i++)\n\t\t{\n\t\t\tpOut[2*i+0] = p[2*i+0 - j];\n\t\t\tpOut[2*i+1] = -p[2*i+1 - j];\n\t\t\tj+=4;\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLenRFFT;i++)\n\t\t{\n\t\t\tpOut[2*i+0] = p[i];\n\t\t\tpOut[2*i+1] = 0.0f;\n\t\t}\n\t}\n\t\n\tswitch(S->fftLenRFFT)\n\t{   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, pOut, ifftFlag, 1);\n\t\t break;\n   \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, pOut, ifftFlag, 1);\n\t\t break;\n   \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, pOut, ifftFlag, 1);\n\t\t break;\n   \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, pOut, ifftFlag, 1);\n\t\t break;\n   \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, pOut, ifftFlag, 1);\n\t\t break;\n   \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, pOut, ifftFlag, 1);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, pOut, ifftFlag, 1);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, pOut, ifftFlag, 1);\n\t\t break;\n\t}\n\t\n\tif (ifftFlag)\n\t{\n\t\t//throw away the imaginary part which should be all zeros\n\t\tfor(i=0;i<S->fftLenRFFT;i++)\n\t\t{\n\t\t\tpOut[i] = pOut[2*i];\n\t\t}\n\t}\n\telse\n\t{\n\t\t//pack last sample's real part into first sample's complex part\n\t\tpOut[1] = pOut[S->fftLenRFFT];\n\t}\n}\n\t\nvoid ref_rfft_q31(\n  const arm_rfft_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst)\n{\n\tuint32_t i;\n\tfloat32_t *fDst = (float32_t*)pDst;\n\t\n\tif (S->ifftFlagR)\n\t{\n\t\tfor(i=0;i<S->fftLenReal*2;i++)\n\t\t{\n\t\t\tfDst[i] = (float32_t)pSrc[i] / 2147483648.0f;\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\tfDst[2*i+0] = (float32_t)pSrc[i] / 2147483648.0f;\n\t\t\tfDst[2*i+1] = 0.0f;\n\t\t}\n\t}\n\t\n\tswitch(S->fftLenReal)\n\t{\n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 8192: \n\t\t ref_cfft_f32(&ref_cfft_sR_f32_len8192, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t}\n\t\n\tif (S->ifftFlagR)\n\t{\n\t\t//throw away the imaginary part which should be all zeros\t\t\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tpDst[i] = (q31_t)( fDst[2*i] * 2147483648.0f);\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\t//read the float data, scale up for q31, cast to q31\n\t\t\tpDst[i] = (q31_t)( fDst[i] * 2147483648.0f / (float32_t)S->fftLenReal);\n\t\t}\n\t}\n}\n\nvoid ref_rfft_q15(\n  const arm_rfft_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst)\n{\n\tuint32_t i;\n\tfloat32_t *fDst = (float32_t*)pDst;\n\t\n\t\n\tif (S->ifftFlagR)\n\t{\n\t\tfor(i=0;i<S->fftLenReal*2;i++)\n\t\t{\n\t\t\tfDst[i] = (float32_t)pSrc[i] / 32768.0f;\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\t//read the q15 data, cast to float, scale down for float\n\t\t\tfDst[2*i+0] = (float32_t)pSrc[i] / 32768.0f;\n\t\t\tfDst[2*i+1] = 0.0f;\n\t\t}\n\t}\n\t\n\tswitch(S->fftLenReal)\n\t{   \n   case 32: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len32, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 64: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len64, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 128: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len128, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 256: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len256, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 512: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len512, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t \n   case 1024: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len1024, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 2048: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len2048, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 4096: \n\t\t ref_cfft_f32(&arm_cfft_sR_f32_len4096, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n   \n   case 8192: \n\t\t ref_cfft_f32(&ref_cfft_sR_f32_len8192, fDst, S->ifftFlagR, S->bitReverseFlagR);\n\t\t break;\n\t}\n\t\n\tif (S->ifftFlagR)\n\t{\n\t\t//throw away the imaginary part which should be all zeros\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\tpDst[i] = (q15_t)( fDst[2*i] * 32768.0f);\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor(i=0;i<S->fftLenReal;i++)\n\t\t{\n\t\t\tpDst[i] = (q15_t)( fDst[i] * 32768.0f / (float32_t)S->fftLenReal);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_class_marks_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/arm_class_marks_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_class_marks_example_f32.c\n*\n* Description:   Example code to calculate Minimum, Maximum\n*                Mean, std and variance of marks obtained in a class\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup ClassMarks Class Marks Example\n *\n * \\par Description:\n * \\par\n * Demonstrates the use the Maximum, Minimum, Mean, Standard Deviation, Variance\n * and Matrix functions to calculate statistical values of marks obtained in a class.\n *\n * \\note This example also demonstrates the usage of static initialization.\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testMarks_f32 points to the marks scored by 20 students in 4 subjects\n * \\li \\c max_marks     Maximum of all marks\n * \\li \\c min_marks     Minimum of all marks\n * \\li \\c mean          Mean of all marks\n * \\li \\c var           Variance of the marks\n * \\li \\c std           Standard deviation of the marks\n * \\li \\c numStudents   Total number of students in the class\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_mat_init_f32()\n * - arm_mat_mult_f32()\n * - arm_max_f32()\n * - arm_min_f32()\n * - arm_mean_f32()\n * - arm_std_f32()\n * - arm_var_f32()\n *\n * <b> Refer  </b>\n * \\link arm_class_marks_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_class_marks_example_f32.c\n  */\n#include \"arm_math.h\"\n\n#define USE_STATIC_INIT\n\n /* ----------------------------------------------------------------------\n** Global defines\n** ------------------------------------------------------------------- */\n\n#define TEST_LENGTH_SAMPLES   (20*4)\n\n/* ----------------------------------------------------------------------\n** List of Marks scored by 20 students for 4 subjects\n** ------------------------------------------------------------------- */\nconst float32_t testMarks_f32[TEST_LENGTH_SAMPLES] =\n{\n  42.000000,  37.000000,  81.000000,  28.000000,\n  83.000000,  72.000000,  36.000000,  38.000000,\n  32.000000,  51.000000,  63.000000,  64.000000,\n  97.000000,  82.000000,  95.000000,  90.000000,\n  66.000000,  51.000000,  54.000000,  42.000000,\n  67.000000,  56.000000,  45.000000,  57.000000,\n  67.000000,  69.000000,  35.000000,  52.000000,\n  29.000000,  81.000000,  58.000000,  47.000000,\n  38.000000,  76.000000, 100.000000,  29.000000,\n  33.000000,  47.000000,  29.000000,  50.000000,\n  34.000000,  41.000000,  61.000000,  46.000000,\n  52.000000,  50.000000,  48.000000,  36.000000,\n  47.000000,  55.000000,  44.000000,  40.000000,\n 100.000000,  94.000000,  84.000000,  37.000000,\n  32.000000,  71.000000,  47.000000,  77.000000,\n  31.000000,  50.000000,  49.000000,  35.000000,\n  63.000000,  67.000000,  40.000000,  31.000000,\n  29.000000,  68.000000,  61.000000,  38.000000,\n  31.000000,  28.000000,  28.000000,  76.000000,\n  55.000000,  33.000000,  29.000000,  39.000000\n};\n\n\n/* ----------------------------------------------------------------------\n* Number of subjects X 1\n* ------------------------------------------------------------------- */\nconst float32_t testUnity_f32[4] =\n{\n  1.000,  1.000,   1.000,  1.000\n};\n\n\n/* ----------------------------------------------------------------------\n** f32 Output buffer\n** ------------------------------------------------------------------- */\nstatic float32_t testOutput[TEST_LENGTH_SAMPLES];\n\n\n/* ------------------------------------------------------------------\n* Global defines\n*------------------------------------------------------------------- */\n#define   NUMSTUDENTS  20\n#define     NUMSUBJECTS  4\n\n/* ------------------------------------------------------------------\n* Global variables\n*------------------------------------------------------------------- */\n\n uint32_t    numStudents = 20;\n uint32_t    numSubjects = 4;\nfloat32_t    max_marks, min_marks, mean, std, var;\n uint32_t    student_num;\n\n/* ----------------------------------------------------------------------------------\n* Main f32 test function.  It returns maximum marks secured and student number\n* ------------------------------------------------------------------------------- */\n\nint32_t main()\n{\n\n#ifndef  USE_STATIC_INIT\n\n  arm_matrix_instance_f32 srcA;\n  arm_matrix_instance_f32 srcB;\n  arm_matrix_instance_f32 dstC;\n\n  /* Input and output matrices initializations */\n  arm_mat_init_f32(&srcA, numStudents, numSubjects, (float32_t *)testMarks_f32);\n  arm_mat_init_f32(&srcB, numSubjects, 1, (float32_t *)testUnity_f32);\n  arm_mat_init_f32(&dstC, numStudents, 1, testOutput);\n\n#else\n\n  /* Static Initializations of Input and output matrix sizes and array */\n  arm_matrix_instance_f32 srcA = {NUMSTUDENTS, NUMSUBJECTS, (float32_t *)testMarks_f32};\n  arm_matrix_instance_f32 srcB = {NUMSUBJECTS, 1, (float32_t *)testUnity_f32};\n  arm_matrix_instance_f32 dstC = {NUMSTUDENTS, 1, testOutput};\n\n#endif\n\n\n  /* ----------------------------------------------------------------------\n  *Call the Matrix multiplication process function\n  * ------------------------------------------------------------------- */\n  arm_mat_mult_f32(&srcA, &srcB, &dstC);\n\n  /* ----------------------------------------------------------------------\n  ** Call the Max function to calculate max marks among numStudents\n  ** ------------------------------------------------------------------- */\n  arm_max_f32(testOutput, numStudents, &max_marks, &student_num);\n\n  /* ----------------------------------------------------------------------\n  ** Call the Min function to calculate min marks among numStudents\n  ** ------------------------------------------------------------------- */\n  arm_min_f32(testOutput, numStudents, &min_marks, &student_num);\n\n  /* ----------------------------------------------------------------------\n  ** Call the Mean function to calculate mean\n  ** ------------------------------------------------------------------- */\n  arm_mean_f32(testOutput, numStudents, &mean);\n\n  /* ----------------------------------------------------------------------\n  ** Call the std function to calculate standard deviation\n  ** ------------------------------------------------------------------- */\n  arm_std_f32(testOutput, numStudents, &std);\n\n  /* ----------------------------------------------------------------------\n  ** Call the var function to calculate variance\n  ** ------------------------------------------------------------------- */\n  arm_var_f32(testOutput, numStudents, &var);\n\n  while (1);                             /* main function does not return */\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_convolution_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/arm_convolution_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_convolution_example_f32.c\n*\n* Description:   Example code demonstrating Convolution of two input signals using fft.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup ConvolutionExample Convolution Example\n *\n * \\par Description:\n * \\par\n * Demonstrates the convolution theorem with the use of the Complex FFT, Complex-by-Complex\n * Multiplication, and Support Functions.\n *\n * \\par Algorithm:\n * \\par\n * The convolution theorem states that convolution in the time domain corresponds to\n * multiplication in the frequency domain. Therefore, the Fourier transform of the convoution of\n * two signals is equal to the product of their individual Fourier transforms.\n * The Fourier transform of a signal can be evaluated efficiently using the Fast Fourier Transform (FFT).\n * \\par\n * Two input signals, <code>a[n]</code> and <code>b[n]</code>, with lengths \\c n1 and \\c n2 respectively,\n * are zero padded so that their lengths become \\c N, which is greater than or equal to <code>(n1+n2-1)</code>\n * and is a power of 4 as FFT implementation is radix-4.\n * The convolution of <code>a[n]</code> and <code>b[n]</code> is obtained by taking the FFT of the input\n * signals, multiplying the Fourier transforms of the two signals, and taking the inverse FFT of\n * the multiplied result.\n * \\par\n * This is denoted by the following equations:\n * <pre> A[k] = FFT(a[n],N)\n * B[k] = FFT(b[n],N)\n * conv(a[n], b[n]) = IFFT(A[k] * B[k], N)</pre>\n * where <code>A[k]</code> and <code>B[k]</code> are the N-point FFTs of the signals <code>a[n]</code>\n * and <code>b[n]</code> respectively.\n * The length of the convolved signal is <code>(n1+n2-1)</code>.\n *\n * \\par Block Diagram:\n * \\par\n * \\image html Convolution.gif\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInputA_f32 points to the first input sequence\n * \\li \\c srcALen length of the first input sequence\n * \\li \\c testInputB_f32 points to the second input sequence\n * \\li \\c srcBLen length of the second input sequence\n * \\li \\c outLen length of convolution output sequence, <code>(srcALen + srcBLen - 1)</code>\n * \\li \\c AxB points to the output array where the product of individual FFTs of inputs is stored.\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_fill_f32()\n * - arm_copy_f32()\n * - arm_cfft_radix4_init_f32()\n * - arm_cfft_radix4_f32()\n * - arm_cmplx_mult_cmplx_f32()\n *\n * <b> Refer  </b>\n * \\link arm_convolution_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_convolution_example_f32.c\n  */\n\n#include \"arm_math.h\"\n#include \"math_helper.h\"\n\n/* ----------------------------------------------------------------------\n* Defines each of the tests performed\n* ------------------------------------------------------------------- */\n#define MAX_BLOCKSIZE   128\n#define DELTA           (0.000001f)\n#define SNR_THRESHOLD   90\n\n/* ----------------------------------------------------------------------\n* Declare I/O buffers\n* ------------------------------------------------------------------- */\nfloat32_t Ak[MAX_BLOCKSIZE];        /* Input A */\nfloat32_t Bk[MAX_BLOCKSIZE];        /* Input B */\nfloat32_t AxB[MAX_BLOCKSIZE * 2];   /* Output */\n\n/* ----------------------------------------------------------------------\n* Test input data for Floating point Convolution example for 32-blockSize\n* Generated by the MATLAB randn() function\n* ------------------------------------------------------------------- */\nfloat32_t testInputA_f32[64] =\n{\n  -0.808920,   1.357369,   1.180861,  -0.504544,   1.762637,  -0.703285,\n   1.696966,   0.620571,  -0.151093,  -0.100235,  -0.872382,  -0.403579,\n  -0.860749,  -0.382648,  -1.052338,   0.128113,  -0.646269,   1.093377,\n  -2.209198,   0.471706,   0.408901,   1.266242,   0.598252,   1.176827,\n  -0.203421,   0.213596,  -0.851964,  -0.466958,   0.021841,  -0.698938,\n  -0.604107,   0.461778,  -0.318219,   0.942520,   0.577585,   0.417619,\n   0.614665,   0.563679,  -1.295073,  -0.764437,   0.952194,  -0.859222,\n  -0.618554,  -2.268542,  -1.210592,   1.655853,  -2.627219,  -0.994249,\n  -1.374704,   0.343799,   0.025619,   1.227481,  -0.708031,   0.069355,\n  -1.845228,  -1.570886,   1.010668,  -1.802084,   1.630088,   1.286090,\n  -0.161050,  -0.940794,   0.367961,   0.291907\n\n};\n\nfloat32_t testInputB_f32[64] =\n{\n   0.933724,   0.046881,   1.316470,   0.438345,   0.332682,   2.094885,\n   0.512081,   0.035546,   0.050894,  -2.320371,   0.168711,  -1.830493,\n  -0.444834,  -1.003242,  -0.531494,  -1.365600,  -0.155420,  -0.757692,\n  -0.431880,  -0.380021,   0.096243,  -0.695835,   0.558850,  -1.648962,\n   0.020369,  -0.363630,   0.887146,   0.845503,  -0.252864,  -0.330397,\n   1.269131,  -1.109295,  -1.027876,   0.135940,   0.116721,  -0.293399,\n  -1.349799,   0.166078,  -0.802201,   0.369367,  -0.964568,  -2.266011,\n   0.465178,   0.651222,  -0.325426,   0.320245,  -0.784178,  -0.579456,\n   0.093374,   0.604778,  -0.048225,   0.376297,  -0.394412,   0.578182,\n  -1.218141,  -1.387326,   0.692462,  -0.631297,   0.153137,  -0.638952,\n  0.635474,   -0.970468,   1.334057,  -0.111370\n};\n\nconst float testRefOutput_f32[127] =\n{\n   -0.818943,    1.229484,  -0.533664,    1.016604,   0.341875,  -1.963656,\n    5.171476,    3.478033,   7.616361,    6.648384,   0.479069,   1.792012,\n   -1.295591,   -7.447818,   0.315830,  -10.657445,  -2.483469,  -6.524236,\n   -7.380591,   -3.739005,  -8.388957,    0.184147,  -1.554888,   3.786508,\n   -1.684421,    5.400610,  -1.578126,    7.403361,   8.315999,   2.080267,\n   11.077776,    2.749673,   7.138962,    2.748762,   0.660363,   0.981552,\n    1.442275,    0.552721,  -2.576892,    4.703989,   0.989156,   8.759344,\n   -0.564825,   -3.994680,   0.954710,   -5.014144,   6.592329,   1.599488,\n  -13.979146,   -0.391891,  -4.453369,   -2.311242,  -2.948764,   1.761415,\n   -0.138322,   10.433007,  -2.309103,    4.297153,   8.535523,   3.209462,\n    8.695819,    5.569919,   2.514304,    5.582029,   2.060199,   0.642280,\n    7.024616,    1.686615,  -6.481756,    1.343084,  -3.526451,   1.099073,\n   -2.965764,   -0.173723,  -4.111484,    6.528384,  -6.965658,   1.726291,\n    1.535172,   11.023435,   2.338401,   -4.690188,   1.298210,   3.943885,\n    8.407885,    5.168365,   0.684131,    1.559181,   1.859998,   2.852417,\n    8.574070,   -6.369078,   6.023458,   11.837963,  -6.027632,   4.469678,\n   -6.799093,   -2.674048,   6.250367,   -6.809971,  -3.459360,   9.112410,\n   -2.711621,   -1.336678,   1.564249,   -1.564297,  -1.296760,   8.904013,\n   -3.230109,    6.878013,  -7.819823,    3.369909,  -1.657410,  -2.007358,\n   -4.112825,    1.370685,  -3.420525,   -6.276605,   3.244873,  -3.352638,\n    1.545372,    0.902211,   0.197489,   -1.408732,   0.523390,   0.348440, 0\n};\n\n\n/* ----------------------------------------------------------------------\n* Declare Global variables\n* ------------------------------------------------------------------- */\nuint32_t srcALen = 64;   /* Length of Input A */\nuint32_t srcBLen = 64;   /* Length of Input B */\nuint32_t outLen;         /* Length of convolution output */\nfloat32_t snr;           /* output SNR */\n\nint32_t main(void)\n{\n  arm_status status;                           /* Status of the example */\n  arm_cfft_radix4_instance_f32 cfft_instance;  /* CFFT Structure instance */\n\n  /* CFFT Structure instance pointer */\n  arm_cfft_radix4_instance_f32 *cfft_instance_ptr =\n      (arm_cfft_radix4_instance_f32*) &cfft_instance;\n\n  /* output length of convolution */\n  outLen = srcALen + srcBLen - 1;\n\n  /* Initialise the fft input buffers with all zeros */\n  arm_fill_f32(0.0,  Ak, MAX_BLOCKSIZE);\n  arm_fill_f32(0.0,  Bk, MAX_BLOCKSIZE);\n\n  /* Copy the input values to the fft input buffers */\n  arm_copy_f32(testInputA_f32,  Ak, MAX_BLOCKSIZE/2);\n  arm_copy_f32(testInputB_f32,  Bk, MAX_BLOCKSIZE/2);\n\n  /* Initialize the CFFT function to compute 64 point fft */\n  status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 0, 1);\n\n  /* Transform input a[n] from time domain to frequency domain A[k] */\n  arm_cfft_radix4_f32(cfft_instance_ptr, Ak);\n  /* Transform input b[n] from time domain to frequency domain B[k] */\n  arm_cfft_radix4_f32(cfft_instance_ptr, Bk);\n\n  /* Complex Multiplication of the two input buffers in frequency domain */\n  arm_cmplx_mult_cmplx_f32(Ak, Bk, AxB, MAX_BLOCKSIZE/2);\n\n  /* Initialize the CIFFT function to compute 64 point ifft */\n  status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 1, 1);\n\n  /* Transform the multiplication output from frequency domain to time domain,\n     that gives the convolved output  */\n  arm_cfft_radix4_f32(cfft_instance_ptr, AxB);\n\n  /* SNR Calculation */\n  snr = arm_snr_f32((float32_t *)testRefOutput_f32, AxB, srcALen + srcBLen - 1);\n\n  /* Compare the SNR with threshold to test whether the\n     computed output is matched with the reference output values. */\n  if ( snr > SNR_THRESHOLD)\n  {\n    status = ARM_MATH_SUCCESS;\n  }\n\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n /** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:        17. January 2013\n* $Revision: \tV1.4.0  b\n*\n* Project: \t    CMSIS DSP Library\n*\n* Title:\t    math_helper.c\n*\n* Description:\tDefinition of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------\n*\t\tInclude standard header files\n* -------------------------------------------------------------------- */\n#include<math.h>\n\n/* ----------------------------------------------------------------------\n*\t\tInclude project header files\n* -------------------------------------------------------------------- */\n#include \"math_helper.h\"\n\n/**\n * @brief  Caluclation of SNR\n * @param[in]  pRef \tPointer to the reference buffer\n * @param[in]  pTest\tPointer to the test buffer\n * @param[in]  buffSize\ttotal number of samples\n * @return     SNR\n * The function Caluclates signal to noise ratio for the reference output\n * and test output\n */\n\nfloat arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)\n{\n  float EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  float SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n \t  /* Checking for a NAN value in pRef array */\n\t  test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n\n\t  /* Checking for a NAN value in pTest array */\n\t  test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n\t/* Checking for a NAN value in EnergyError */\n\ttest =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n  \t\treturn(0);\n    }\n\n\n  SNR = 10 * log10 (EnergySignal / EnergyError);\n\n  return (SNR);\n\n}\n\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,\n                            uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Converts float to fixed in q12.20 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to outputbuffer\n * @param[in]  numSamples  number of samples in the input buffer\n * @return none\n * The function converts floating point values to fixed point(q12.20) values\n */\n\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1048576.0f corresponds to pow(2, 20) */\n      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 1.0)\n        {\n          pOut[i] = 0x000FFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q31 (q31_t * input_buf,\n\t\t\t\t\t\t\t\t uint32_t blockSize,\n                                 uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q7 (q7_t * input_buf,\n\t\t\t\t\t\t\t\tuint32_t blockSize,\n                                uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n\n\n/**\n * @brief  Caluclates number of guard bits\n * @param[in]  num_adds \tnumber of additions\n * @return guard bits\n * The function Caluclates the number of guard bits\n * depending on the numtaps\n */\n\nuint32_t arm_calc_guard_bits (uint32_t num_adds)\n{\n  uint32_t i = 1, j = 0;\n\n  if (num_adds == 1)\n    {\n      return (0);\n    }\n\n  while (i < num_adds)\n    {\n      i = i * 2;\n      j++;\n    }\n\n  return (j);\n}\n\n/**\n * @brief  Apply guard bits to buffer\n * @param[in,out]  pIn         pointer to input buffer\n * @param[in]      numSamples  number of samples in the input buffer\n * @param[in]      guard_bits  guard bits\n * @return none\n */\n\nvoid arm_apply_guard_bits (float32_t *pIn,\n\t\t\t\t\t\t   uint32_t numSamples,\n\t\t\t\t\t\t   uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);\n    }\n}\n\n/**\n * @brief  Calculates pow(2, numShifts)\n * @param[in]  numShifts \tnumber of shifts\n * @return pow(2, numShifts)\n */\nuint32_t arm_calc_2pow(uint32_t numShifts)\n{\n\n  uint32_t i, val = 1;\n\n  for (i = 0; i < numShifts; i++)\n    {\n      val = val * 2;\n    }\n\n  return(val);\n}\n\n\n\n/**\n * @brief  Converts float to fixed q14\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 16384.0f corresponds to pow(2, 14) */\n      pOut[i] = (q15_t) (pIn[i] * 16384.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFF;\n        }\n\n    }\n\n}\n\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 4.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n\n/**\n * @brief  Converts float to fixed q28 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t/* 268435456.0f corresponds to pow(2, 28) */\n      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 8.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Clip the float values to +/- 1\n * @param[in,out]  pIn           input buffer\n * @param[in]      numSamples    number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_clip_f32 (float *pIn, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      if (pIn[i] > 1.0f)\n\t  {\n\t    pIn[i] = 1.0;\n\t  }\n\t  else if ( pIn[i] < -1.0f)\n\t  {\n\t    pIn[i] = -1.0;\n\t  }\n\n    }\n}\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.h",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*  \n* Project: \t    CMSIS DSP Library \n*\n* Title:\t    math_helper.h\n* \n* Description:\tPrototypes of all helper functions required.  \n*\n* Target Processor: Cortex-M4/Cortex-M3\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n* -------------------------------------------------------------------- */\n\n\n#include \"arm_math.h\"\n\n#ifndef MATH_HELPER_H\n#define MATH_HELPER_H\n\nfloat arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  \nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);\nvoid arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_clip_f32(float *pIn, uint32_t numSamples);\nuint32_t arm_calc_guard_bits(uint32_t num_adds);\nvoid arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);\nuint32_t arm_calc_2pow(uint32_t guard_bits);\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_dotproduct_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/arm_dotproduct_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_dotproduct_example_f32.c\n*\n* Description:   Example code computing dot product of two vectors.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n * -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup DotproductExample Dot Product Example\n *\n * \\par Description:\n * \\par\n * Demonstrates the use of the Multiply and Add functions to perform the dot product.\n * The dot product of two vectors is obtained by multiplying corresponding elements\n * and summing the products.\n\n * \\par Algorithm:\n * \\par\n * The two input vectors \\c A and \\c B with length \\c n, are multiplied element-by-element\n * and then added to obtain dot product.\n * \\par\n * This is denoted by the following equation:\n *         <pre>  dotProduct = A[0] * B[0] + A[1] * B[1] + ... + A[n-1] * B[n-1]</pre>\n *\n * \\par Block Diagram:\n * \\par\n * \\image html dotProduct.gif\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c srcA_buf_f32 points to first input vector\n * \\li \\c srcB_buf_f32 points to second input vector\n * \\li \\c testOutput   stores dot product of the two input vectors.\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_mult_f32()\n * - arm_add_f32()\n *\n * <b> Refer  </b>\n * \\link arm_dotproduct_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_dotproduct_example_f32.c\n  */\n\n#include <math.h>\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n* Defines each of the tests performed\n* ------------------------------------------------------------------- */\n#define MAX_BLOCKSIZE     32\n#define DELTA           (0.000001f)\n\n/* ----------------------------------------------------------------------\n* Test input data for Floating point Dot Product example for 32-blockSize\n* Generated by the MATLAB randn() function\n* ------------------------------------------------------------------- */\n/* ----------------------------------------------------------------------\n** Test input data of srcA for blockSize 32\n** ------------------------------------------------------------------- */\nfloat32_t srcA_buf_f32[MAX_BLOCKSIZE] =\n{\n  -0.4325648115282207,  -1.6655843782380970,  0.1253323064748307,\n   0.2876764203585489,  -1.1464713506814637,  1.1909154656429988,\n   1.1891642016521031,  -0.0376332765933176,  0.3272923614086541,\n   0.1746391428209245,  -0.1867085776814394,  0.7257905482933027,\n  -0.5883165430141887,   2.1831858181971011, -0.1363958830865957,\n   0.1139313135208096,   1.0667682113591888,  0.0592814605236053,\n  -0.0956484054836690,  -0.8323494636500225,  0.2944108163926404,\n  -1.3361818579378040,   0.7143245518189522,  1.6235620644462707,\n  -0.6917757017022868,   0.8579966728282626,  1.2540014216025324,\n  -1.5937295764474768,  -1.4409644319010200,  0.5711476236581780,\n  -0.3998855777153632,   0.6899973754643451\n};\n\n/* ----------------------------------------------------------------------\n** Test input data of srcB for blockSize 32\n** ------------------------------------------------------------------- */\nfloat32_t srcB_buf_f32[MAX_BLOCKSIZE] =\n{\n   1.7491401329284098,  0.1325982188803279,   0.3252281811989881,\n  -0.7938091410349637,  0.3149236145048914,  -0.5272704888029532,\n   0.9322666565031119,  1.1646643544607362,  -2.0456694357357357,\n  -0.6443728590041911,  1.7410657940825480,   0.4867684246821860,\n   1.0488288293660140,  1.4885752747099299,   1.2705014969484090,\n  -1.8561241921210170,  2.1343209047321410,   1.4358467535865909,\n  -0.9173023332875400, -1.1060770780029008,   0.8105708062681296,\n   0.6985430696369063, -0.4015827425012831,   1.2687512030669628,\n  -0.7836083053674872,  0.2132664971465569,   0.7878984786088954,\n   0.8966819356782295, -0.1869172943544062,   1.0131816724341454,\n   0.2484350696132857,  0.0596083377937976\n};\n\n/* Reference dot product output */\nfloat32_t  refDotProdOut = 5.9273644806352142;\n\n/* ----------------------------------------------------------------------\n* Declare Global variables\n* ------------------------------------------------------------------- */\nfloat32_t multOutput[MAX_BLOCKSIZE];  /* Intermediate output */\nfloat32_t testOutput;  /* Final ouput */\n\narm_status status;   /* Status of the example */\n\nint32_t main(void)\n{\n  uint32_t i;       /* Loop counter */\n  float32_t diff;     /* Difference between reference and test outputs */\n\n  /* Multiplication of two input buffers */\n  arm_mult_f32(srcA_buf_f32, srcB_buf_f32, multOutput, MAX_BLOCKSIZE);\n\n  /* Accumulate the multiplication output values to\n     get the dot product of the two inputs */\n  for(i=0; i< MAX_BLOCKSIZE; i++)\n  {\n    arm_add_f32(&testOutput, &multOutput[i], &testOutput, 1);\n  }\n\n  /* absolute value of difference between ref and test */\n  diff = fabsf(refDotProdOut - testOutput);\n\n  /* Comparison of dot product value with reference */\n  if (diff > DELTA)\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n\n  if ( status == ARM_MATH_TEST_FAILURE)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n /** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_fft_bin_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_data.c",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*   \n* Project: \t    CMSIS DSP Library   \n* Title:\t     \tarm_fft_bin_data.c\n*   \n* Description:\t Data file used for example code\n*   \n* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\nTest Input signal contains 10KHz signal + Uniformly distributed white noise\n** ------------------------------------------------------------------- */\n\nfloat32_t testInput_f32_10khz[2048] = \n{   \n-0.865129623056441, \t0.000000000000000, \t-2.655020678073846, \t0.000000000000000, \t0.600664612949661, \t0.000000000000000, \t0.080378093886515, \t0.000000000000000, \t\n-2.899160484012034, \t0.000000000000000, \t2.563004262857762, \t0.000000000000000, \t3.078328403304206, \t0.000000000000000, \t0.105906778385130, \t0.000000000000000, \t\n0.048366940168201, \t0.000000000000000, \t-0.145696461188734, \t0.000000000000000, \t-0.023417155362879, \t0.000000000000000, \t2.127729174988954, \t0.000000000000000, \t\n-1.176633086028377, \t0.000000000000000, \t3.690223557991855, \t0.000000000000000, \t-0.622791766173194, \t0.000000000000000, \t0.722837373872203, \t0.000000000000000, \t\n2.739754205367484, \t0.000000000000000, \t-0.062610410524552, \t0.000000000000000, \t-0.891296810967338, \t0.000000000000000, \t-1.845872258871811, \t0.000000000000000, \t\n1.195039415434387, \t0.000000000000000, \t-2.177388969045026, \t0.000000000000000, \t1.078649103637905, \t0.000000000000000, \t2.570976050490193, \t0.000000000000000, \t\n-1.383551403404574, \t0.000000000000000, \t2.392141424058873, \t0.000000000000000, \t2.858002843205065, \t0.000000000000000, \t-3.682433899725536, \t0.000000000000000, \t\n-3.488146646451150, \t0.000000000000000, \t1.323468578888120, \t0.000000000000000, \t-0.099771155430726, \t0.000000000000000, \t1.561168082500454, \t0.000000000000000, \t\n1.025026795103179, \t0.000000000000000, \t0.928841900171200, \t0.000000000000000, \t2.930499509864950, \t0.000000000000000, \t2.013349089766430, \t0.000000000000000, \t\n2.381676148486737, \t0.000000000000000, \t-3.081062307950236, \t0.000000000000000, \t-0.389579115537544, \t0.000000000000000, \t0.181540149166620, \t0.000000000000000, \t\n-2.601953341353208, \t0.000000000000000, \t0.333435137783218, \t0.000000000000000, \t-2.812945856162965, \t0.000000000000000, \t2.649109640172910, \t0.000000000000000, \t\n-1.003963025744654, \t0.000000000000000, \t1.552460768755035, \t0.000000000000000, \t0.088641345335247, \t0.000000000000000, \t-2.519951327113426, \t0.000000000000000, \t\n-4.341348988610527, \t0.000000000000000, \t0.557772429359965, \t0.000000000000000, \t-1.671267412948494, \t0.000000000000000, \t0.733951350960387, \t0.000000000000000, \t\n0.409263788034864, \t0.000000000000000, \t3.566033071952806, \t0.000000000000000, \t1.882565173848352, \t0.000000000000000, \t-1.106017073793287, \t0.000000000000000, \t\n0.154456720778718, \t0.000000000000000, \t-2.513205795512153, \t0.000000000000000, \t0.310978660939421, \t0.000000000000000, \t0.579706500111723, \t0.000000000000000, \t\n0.000086383683251, \t0.000000000000000, \t-1.311866980897721, \t0.000000000000000, \t1.840007477574986, \t0.000000000000000, \t-3.253005768451345, \t0.000000000000000, \t\n1.462584328739432, \t0.000000000000000, \t1.610103610851738, \t0.000000000000000, \t0.761914676858907, \t0.000000000000000, \t0.974541361089834, \t0.000000000000000, \t\n0.686845845885983, \t0.000000000000000, \t1.849153122025191, \t0.000000000000000, \t0.787800410401453, \t0.000000000000000, \t-1.187438909666279, \t0.000000000000000, \t\n-0.754937911044720, \t0.000000000000000, \t0.084373858395232, \t0.000000000000000, \t-2.600269011710521, \t0.000000000000000, \t-0.962982842142644, \t0.000000000000000, \t\n-0.369328108540868, \t0.000000000000000, \t0.810791418361879, \t0.000000000000000, \t3.587016488699641, \t0.000000000000000, \t-0.520776145083723, \t0.000000000000000, \t\n0.640249919627884, \t0.000000000000000, \t1.103122489464969, \t0.000000000000000, \t2.231779881455556, \t0.000000000000000, \t-1.308035392685241, \t0.000000000000000, \t\n0.424070304330106, \t0.000000000000000, \t-0.200383932651189, \t0.000000000000000, \t-2.365526783356541, \t0.000000000000000, \t-0.989114757436628, \t0.000000000000000, \t\n2.770807688959777, \t0.000000000000000, \t-0.444172737462307, \t0.000000000000000, \t0.079760979374078, \t0.000000000000000, \t-0.005199118412183, \t0.000000000000000, \t\n-0.664712668309527, \t0.000000000000000, \t-0.624171857561896, \t0.000000000000000, \t0.537306979007338, \t0.000000000000000, \t-2.575955675497642, \t0.000000000000000, \t\n1.562363235756780, \t0.000000000000000, \t1.814069369848895, \t0.000000000000000, \t-1.293428583392509, \t0.000000000000000, \t-1.026188449495686, \t0.000000000000000, \t\n-2.981771815588717, \t0.000000000000000, \t-4.223468103075124, \t0.000000000000000, \t2.672674782004045, \t0.000000000000000, \t-0.856096801117735, \t0.000000000000000, \t\n0.048517345512563, \t0.000000000000000, \t-0.026860721136222, \t0.000000000000000, \t0.392932277758187, \t0.000000000000000, \t-1.331740855093099, \t0.000000000000000, \t\n-1.894292129477081, \t0.000000000000000, \t-1.425006468460681, \t0.000000000000000, \t-2.721772427617057, \t0.000000000000000, \t-1.616831100216806, \t0.000000000000000, \t\n3.551177651488947, \t0.000000000000000, \t-0.069685667896087, \t0.000000000000000, \t-3.134634907409102, \t0.000000000000000, \t-0.263627598944639, \t0.000000000000000, \t\n-1.650469945991350, \t0.000000000000000, \t-2.203580339374399, \t0.000000000000000, \t-0.872203246123242, \t0.000000000000000, \t1.230782812607287, \t0.000000000000000, \t\n0.257288860093291, \t0.000000000000000, \t1.989083106173137, \t0.000000000000000, \t-1.985638729453261, \t0.000000000000000, \t-1.416185105842892, \t0.000000000000000, \t\n-1.131097688325772, \t0.000000000000000, \t-2.245130805416057, \t0.000000000000000, \t-1.938873996219074, \t0.000000000000000, \t2.043608361562645, \t0.000000000000000, \t\n-0.583727989880841, \t0.000000000000000, \t-1.785266378212929, \t0.000000000000000, \t1.961457586224753, \t0.000000000000000, \t1.139400099963223, \t0.000000000000000, \t\n-1.979519343363991, \t0.000000000000000, \t2.003023322818429, \t0.000000000000000, \t0.229004069076829, \t0.000000000000000, \t3.452808862193135, \t0.000000000000000, \t\n2.882273808365857, \t0.000000000000000, \t-1.549450501844438, \t0.000000000000000, \t-3.283872089931876, \t0.000000000000000, \t-0.327025884099064, \t0.000000000000000, \t\n-0.054979977136430, \t0.000000000000000, \t-1.192280531479012, \t0.000000000000000, \t0.645539328365578, \t0.000000000000000, \t2.300832863404618, \t0.000000000000000, \t\n-1.092951789535240, \t0.000000000000000, \t-1.017368249363773, \t0.000000000000000, \t-0.142673056169787, \t0.000000000000000, \t0.831073544881250, \t0.000000000000000, \t\n-2.314612531587064, \t0.000000000000000, \t-2.221456299106321, \t0.000000000000000, \t0.460261143885226, \t0.000000000000000, \t0.050585301888595, \t0.000000000000000, \t\n0.364373329183988, \t0.000000000000000, \t-1.685956552069538, \t0.000000000000000, \t0.050664512351055, \t0.000000000000000, \t-0.193355783902718, \t0.000000000000000, \t\n-0.158660446046828, \t0.000000000000000, \t2.394156453841953, \t0.000000000000000, \t-1.562965718554525, \t0.000000000000000, \t-2.199750600869900, \t0.000000000000000, \t\n1.544984022381773, \t0.000000000000000, \t-1.988307216807315, \t0.000000000000000, \t-0.628240722541046, \t0.000000000000000, \t-1.436235771505429, \t0.000000000000000, \t\n1.677013691147313, \t0.000000000000000, \t1.600741781678228, \t0.000000000000000, \t-0.757380959134706, \t0.000000000000000, \t-4.784797439515566, \t0.000000000000000, \t\n0.265121462834569, \t0.000000000000000, \t3.862029485934378, \t0.000000000000000, \t2.386823577249430, \t0.000000000000000, \t-3.655779745436893, \t0.000000000000000, \t\n-0.763541621368016, \t0.000000000000000, \t-1.182140388432962, \t0.000000000000000, \t-1.349106114858063, \t0.000000000000000, \t-2.287533624396759, \t0.000000000000000, \t\n-0.028603745188423, \t0.000000000000000, \t-1.353580755934427, \t0.000000000000000, \t0.461602380352937, \t0.000000000000000, \t-0.059599055078928, \t0.000000000000000, \t\n-0.929946734342228, \t0.000000000000000, \t0.065773089295561, \t0.000000000000000, \t1.106565863102982, \t0.000000000000000, \t4.719295086373593, \t0.000000000000000, \t\n-2.108377703544395, \t0.000000000000000, \t-2.226393620240159, \t0.000000000000000, \t1.375668397437521, \t0.000000000000000, \t-0.960772428525443, \t0.000000000000000, \t\n-2.156313465390571, \t0.000000000000000, \t1.126060012375311, \t0.000000000000000, \t2.756485137030720, \t0.000000000000000, \t0.739639690862600, \t0.000000000000000, \t\n3.914769510295006, \t0.000000000000000, \t1.685232785586675, \t0.000000000000000, \t4.079058040970612, \t0.000000000000000, \t-1.174598301660513, \t0.000000000000000, \t\n-2.885776587275580, \t0.000000000000000, \t-0.241073635188767, \t0.000000000000000, \t3.080489872502403, \t0.000000000000000, \t-2.051244183999421, \t0.000000000000000, \t\n0.664330486845139, \t0.000000000000000, \t-1.697798999370016, \t0.000000000000000, \t1.452369423649782, \t0.000000000000000, \t-1.523532831019280, \t0.000000000000000, \t\n0.171981186587481, \t0.000000000000000, \t-4.685274721583927, \t0.000000000000000, \t-1.336175835319380, \t0.000000000000000, \t1.419070770428945, \t0.000000000000000, \t\n-0.035791601713475, \t0.000000000000000, \t2.291937971632081, \t0.000000000000000, \t-1.962559313450293, \t0.000000000000000, \t-4.831595589339301, \t0.000000000000000, \t\n-1.857055284000925, \t0.000000000000000, \t2.606271522635512, \t0.000000000000000, \t-0.576447978738030, \t0.000000000000000, \t0.082299166967720, \t0.000000000000000, \t\n1.888399453494614, \t0.000000000000000, \t-3.564705298046079, \t0.000000000000000, \t-0.939357831083889, \t0.000000000000000, \t-1.903578203697778, \t0.000000000000000, \t\n-2.642492215447250, \t0.000000000000000, \t-0.182990405251017, \t0.000000000000000, \t3.742026478011174, \t0.000000000000000, \t0.104295803798333, \t0.000000000000000, \t\n1.848678195370347, \t0.000000000000000, \t-1.887384346896369, \t0.000000000000000, \t0.365048973046045, \t0.000000000000000, \t-0.889638010354219, \t0.000000000000000, \t\n1.173877118428863, \t0.000000000000000, \t-1.178562827540109, \t0.000000000000000, \t0.610271645685184, \t0.000000000000000, \t1.831284815697871, \t0.000000000000000, \t\n0.449575390102283, \t0.000000000000000, \t1.597171905253443, \t0.000000000000000, \t3.918574971904773, \t0.000000000000000, \t0.868104027970404, \t0.000000000000000, \t\n0.582643134746494, \t0.000000000000000, \t2.321256382353331, \t0.000000000000000, \t-0.238118642223180, \t0.000000000000000, \t-2.890287868054370, \t0.000000000000000, \t\n0.970995414625622, \t0.000000000000000, \t0.666137930891283, \t0.000000000000000, \t-0.202435718709502, \t0.000000000000000, \t2.057930200518194, \t0.000000000000000, \t\n3.120583443719949, \t0.000000000000000, \t-0.863945271701041, \t0.000000000000000, \t0.906848893874630, \t0.000000000000000, \t-1.434124930222570, \t0.000000000000000, \t\n0.754659384848783, \t0.000000000000000, \t-5.224154442713778, \t0.000000000000000, \t2.330229744098967, \t0.000000000000000, \t1.113946320164698, \t0.000000000000000, \t\n0.523324920322840, \t0.000000000000000, \t1.750740911548348, \t0.000000000000000, \t-0.899333972913577, \t0.000000000000000, \t0.228705845203506, \t0.000000000000000, \t\n-1.934782624767648, \t0.000000000000000, \t-3.508386237231303, \t0.000000000000000, \t-2.107108523073510, \t0.000000000000000, \t0.380587645474815, \t0.000000000000000, \t\n-0.476200877183279, \t0.000000000000000, \t-2.172086712642198, \t0.000000000000000, \t1.795372535780299, \t0.000000000000000, \t-2.100318983391055, \t0.000000000000000, \t\n-0.022571122461405, \t0.000000000000000, \t0.674514020010955, \t0.000000000000000, \t-0.148872569390857, \t0.000000000000000, \t0.298175890592737, \t0.000000000000000, \t\n-1.134244492493590, \t0.000000000000000, \t-3.146848422289455, \t0.000000000000000, \t-1.357950199087602, \t0.000000000000000, \t0.667362732020878, \t0.000000000000000, \t\n-3.119397998316724, \t0.000000000000000, \t-1.189341126297637, \t0.000000000000000, \t-1.532744386856668, \t0.000000000000000, \t-1.672972484202534, \t0.000000000000000, \t\n-2.042283373871558, \t0.000000000000000, \t-1.479481547595924, \t0.000000000000000, \t-0.002668662875396, \t0.000000000000000, \t0.262737760129546, \t0.000000000000000, \t\n2.734456080621830, \t0.000000000000000, \t-0.671945925075102, \t0.000000000000000, \t-3.735078262179111, \t0.000000000000000, \t-0.161705013319883, \t0.000000000000000, \t\n0.748963512361001, \t0.000000000000000, \t1.128046374367600, \t0.000000000000000, \t0.649651335592966, \t0.000000000000000, \t1.880020215025867, \t0.000000000000000, \t\n-1.095632293842306, \t0.000000000000000, \t1.197764876160487, \t0.000000000000000, \t0.323646656252985, \t0.000000000000000, \t-1.655502751114502, \t0.000000000000000, \t\n3.666399062961496, \t0.000000000000000, \t-0.334060899735197, \t0.000000000000000, \t-2.119056978738397, \t0.000000000000000, \t3.721375117275012, \t0.000000000000000, \t\n0.044874186872307, \t0.000000000000000, \t-2.733053897593234, \t0.000000000000000, \t1.590700278891042, \t0.000000000000000, \t3.215711772781902, \t0.000000000000000, \t\n-1.792085012843801, \t0.000000000000000, \t-0.405797188885475, \t0.000000000000000, \t-0.628080020080892, \t0.000000000000000, \t-1.831815840843960, \t0.000000000000000, \t\n2.973656862522834, \t0.000000000000000, \t-0.212032655138417, \t0.000000000000000, \t0.372437389437234, \t0.000000000000000, \t-1.614030579023492, \t0.000000000000000, \t\n-0.704900996358698, \t0.000000000000000, \t1.123700273452105, \t0.000000000000000, \t-0.136371848130819, \t0.000000000000000, \t3.020284357635585, \t0.000000000000000, \t\n-0.550211350877649, \t0.000000000000000, \t5.101256236381711, \t0.000000000000000, \t3.367051512192333, \t0.000000000000000, \t-4.385131946669234, \t0.000000000000000, \t\n-3.967303337694391, \t0.000000000000000, \t-0.965894936640022, \t0.000000000000000, \t0.328366945264681, \t0.000000000000000, \t0.199041562924914, \t0.000000000000000, \t\n1.067681999025495, \t0.000000000000000, \t-1.939516091697170, \t0.000000000000000, \t-1.092980954328824, \t0.000000000000000, \t0.273786079368066, \t0.000000000000000, \t\n-0.040928322190265, \t0.000000000000000, \t-0.118368078577437, \t0.000000000000000, \t1.766589628899997, \t0.000000000000000, \t1.738321311635393, \t0.000000000000000, \t\n-2.895012794321649, \t0.000000000000000, \t1.213521771395142, \t0.000000000000000, \t0.922971726633985, \t0.000000000000000, \t1.091516563636489, \t0.000000000000000, \t\n3.226378465469620, \t0.000000000000000, \t1.149169778666974, \t0.000000000000000, \t-1.695986327709386, \t0.000000000000000, \t-0.974803077355813, \t0.000000000000000, \t\n-4.898035507513607, \t0.000000000000000, \t1.622719302889447, \t0.000000000000000, \t0.583891313586579, \t0.000000000000000, \t-1.677182424094957, \t0.000000000000000, \t\n-1.915633132814685, \t0.000000000000000, \t-1.980150370851616, \t0.000000000000000, \t0.604538269404190, \t0.000000000000000, \t0.939862406149365, \t0.000000000000000, \t\n-1.266939874246416, \t0.000000000000000, \t-1.494771249200063, \t0.000000000000000, \t0.278042784093988, \t0.000000000000000, \t0.326627416008916, \t0.000000000000000, \t\n-1.914530157643303, \t0.000000000000000, \t1.908947721862196, \t0.000000000000000, \t0.531819285694044, \t0.000000000000000, \t3.056856632319658, \t0.000000000000000, \t\n-0.389241827774643, \t0.000000000000000, \t-2.418606606780420, \t0.000000000000000, \t0.915299238878703, \t0.000000000000000, \t-0.098774174295283, \t0.000000000000000, \t\n-0.906199428444304, \t0.000000000000000, \t0.316716451217743, \t0.000000000000000, \t-4.367700643578311, \t0.000000000000000, \t1.491687997515293, \t0.000000000000000, \t\n-1.962381126288365, \t0.000000000000000, \t-0.700829196527045, \t0.000000000000000, \t3.028958963615630, \t0.000000000000000, \t-2.313461067462598, \t0.000000000000000, \t\n-1.431933239886712, \t0.000000000000000, \t-0.831153039725342, \t0.000000000000000, \t3.939495598250743, \t0.000000000000000, \t0.342974753984771, \t0.000000000000000, \t\n-2.768330763002974, \t0.000000000000000, \t-2.744010370019008, \t0.000000000000000, \t3.821352685212561, \t0.000000000000000, \t4.551065271455856, \t0.000000000000000, \t\n3.270136437041298, \t0.000000000000000, \t-3.188028411950982, \t0.000000000000000, \t-0.777075012417436, \t0.000000000000000, \t0.097110650265216, \t0.000000000000000, \t\n1.221216137608812, \t0.000000000000000, \t-1.325824244541822, \t0.000000000000000, \t-2.655296734084113, \t0.000000000000000, \t-1.074792144885704, \t0.000000000000000, \t\n2.770401584439407, \t0.000000000000000, \t5.240270645610543, \t0.000000000000000, \t0.108576672208892, \t0.000000000000000, \t-1.209394350650142, \t0.000000000000000, \t\n1.403344353838785, \t0.000000000000000, \t-0.299032904177277, \t0.000000000000000, \t4.074959450638227, \t0.000000000000000, \t1.718727473952107, \t0.000000000000000, \t\n-3.061349227080806, \t0.000000000000000, \t-1.158596888541269, \t0.000000000000000, \t3.381858904662625, \t0.000000000000000, \t0.957339964054052, \t0.000000000000000, \t\n0.179900074904899, \t0.000000000000000, \t-3.909641902506081, \t0.000000000000000, \t0.805717289408649, \t0.000000000000000, \t2.047413793928261, \t0.000000000000000, \t\n-1.273580225826614, \t0.000000000000000, \t-2.681359186869971, \t0.000000000000000, \t-0.721241345822093, \t0.000000000000000, \t-1.613090681569475, \t0.000000000000000, \t\n0.463138804815955, \t0.000000000000000, \t0.377223507800954, \t0.000000000000000, \t2.046550684968141, \t0.000000000000000, \t0.178508732797712, \t0.000000000000000, \t\n-0.477815330358845, \t0.000000000000000, \t3.763355908332053, \t0.000000000000000, \t1.300430303035163, \t0.000000000000000, \t-0.214625793857725, \t0.000000000000000, \t\n1.343267891864081, \t0.000000000000000, \t-0.340007682433245, \t0.000000000000000, \t2.062703194680005, \t0.000000000000000, \t0.042032160234235, \t0.000000000000000, \t\n0.643732569732250, \t0.000000000000000, \t-1.913502543857589, \t0.000000000000000, \t3.771340762937158, \t0.000000000000000, \t1.050024807363386, \t0.000000000000000, \t\n-4.440489488592649, \t0.000000000000000, \t0.444904302066643, \t0.000000000000000, \t2.898702265650048, \t0.000000000000000, \t1.953232980548558, \t0.000000000000000, \t\n2.761564952735079, \t0.000000000000000, \t1.963537633260397, \t0.000000000000000, \t-2.168858472916215, \t0.000000000000000, \t-4.116235357699841, \t0.000000000000000, \t\n4.183678271896528, \t0.000000000000000, \t0.600422284944681, \t0.000000000000000, \t-0.659352647255126, \t0.000000000000000, \t-0.993127338218109, \t0.000000000000000, \t\n-2.463571314945747, \t0.000000000000000, \t0.937720951545881, \t0.000000000000000, \t-3.098957308429730, \t0.000000000000000, \t-2.354719140045463, \t0.000000000000000, \t\n-0.417285119323949, \t0.000000000000000, \t2.187974075975947, \t0.000000000000000, \t1.101468905172585, \t0.000000000000000, \t-3.185800678152109, \t0.000000000000000, \t\n2.357534709345083, \t0.000000000000000, \t0.246645606729407, \t0.000000000000000, \t4.440905650784504, \t0.000000000000000, \t-2.236807716637866, \t0.000000000000000, \t\n-2.171481518317550, \t0.000000000000000, \t-2.029571795072690, \t0.000000000000000, \t0.135599790431348, \t0.000000000000000, \t-1.277965265520191, \t0.000000000000000, \t\n-1.927976233157507, \t0.000000000000000, \t-5.434492783745394, \t0.000000000000000, \t-2.026375829312657, \t0.000000000000000, \t1.009666016819321, \t0.000000000000000, \t\n0.238549782367247, \t0.000000000000000, \t-0.516403923971309, \t0.000000000000000, \t-0.933977817429352, \t0.000000000000000, \t0.155803015935614, \t0.000000000000000, \t\n-0.396194809997929, \t0.000000000000000, \t-0.915178100253214, \t0.000000000000000, \t0.666329367985015, \t0.000000000000000, \t-1.517991149945785, \t0.000000000000000, \t\n0.458266744144822, \t0.000000000000000, \t-1.242845974381418, \t0.000000000000000, \t0.057914823556477, \t0.000000000000000, \t0.994101307476875, \t0.000000000000000, \t\n-2.387209849199325, \t0.000000000000000, \t0.459297048883826, \t0.000000000000000, \t0.227711405683905, \t0.000000000000000, \t0.030255073506117, \t0.000000000000000, \t\n-1.323361608181337, \t0.000000000000000, \t-4.650244457426706, \t0.000000000000000, \t0.062908579526021, \t0.000000000000000, \t3.462831028244432, \t0.000000000000000, \t\n1.303608183314856, \t0.000000000000000, \t-1.430415193881612, \t0.000000000000000, \t-1.672886118942142, \t0.000000000000000, \t0.992890699210099, \t0.000000000000000, \t\n-0.160814531784247, \t0.000000000000000, \t-1.238132939350430, \t0.000000000000000, \t-0.589223271459376, \t0.000000000000000, \t2.326363810561534, \t0.000000000000000, \t\n-4.433789496230785, \t0.000000000000000, \t1.664686987538929, \t0.000000000000000, \t-2.366128834617921, \t0.000000000000000, \t1.212421570743837, \t0.000000000000000, \t\n-4.847914267690055, \t0.000000000000000, \t0.228485221404712, \t0.000000000000000, \t0.466139765470957, \t0.000000000000000, \t-1.344202776943546, \t0.000000000000000, \t\n-1.012053673330574, \t0.000000000000000, \t-2.844980626424742, \t0.000000000000000, \t-1.552703722026340, \t0.000000000000000, \t-1.448830983885038, \t0.000000000000000, \t\n0.127010756753980, \t0.000000000000000, \t-1.667188263752299, \t0.000000000000000, \t3.424818052085100, \t0.000000000000000, \t0.956291135453840, \t0.000000000000000, \t\n-3.725533331754662, \t0.000000000000000, \t-1.584534272368832, \t0.000000000000000, \t-1.654148210472472, \t0.000000000000000, \t0.701610500675698, \t0.000000000000000, \t\n0.164954538683927, \t0.000000000000000, \t-0.739260064712987, \t0.000000000000000, \t-2.167324026090101, \t0.000000000000000, \t-0.310240491909496, \t0.000000000000000, \t\n-2.281790349106906, \t0.000000000000000, \t1.719655331305361, \t0.000000000000000, \t-2.997005923606441, \t0.000000000000000, \t-1.999301431556852, \t0.000000000000000, \t\n-0.292229010068828, \t0.000000000000000, \t1.172317994855851, \t0.000000000000000, \t0.196734885241533, \t0.000000000000000, \t2.981365193477068, \t0.000000000000000, \t\n2.637726016926352, \t0.000000000000000, \t1.434045125217982, \t0.000000000000000, \t0.883627180451827, \t0.000000000000000, \t-1.434040761445747, \t0.000000000000000, \t\n-1.528891971086553, \t0.000000000000000, \t-3.306913135367542, \t0.000000000000000, \t-0.399059265470646, \t0.000000000000000, \t-0.265674394285178, \t0.000000000000000, \t\n3.502591252855384, \t0.000000000000000, \t0.830301156604454, \t0.000000000000000, \t-0.220021317046083, \t0.000000000000000, \t-0.090553770476646, \t0.000000000000000, \t\n0.771863477047951, \t0.000000000000000, \t1.351209629105760, \t0.000000000000000, \t3.773699756201963, \t0.000000000000000, \t0.472600118752329, \t0.000000000000000, \t\n2.332825668012222, \t0.000000000000000, \t1.853747950314528, \t0.000000000000000, \t0.759515251766178, \t0.000000000000000, \t1.327112776215496, \t0.000000000000000, \t\n2.518730296237868, \t0.000000000000000, \t0.764450208786353, \t0.000000000000000, \t-0.278275349491296, \t0.000000000000000, \t-0.041559465082020, \t0.000000000000000, \t\n1.387166083167787, \t0.000000000000000, \t2.612996769598122, \t0.000000000000000, \t-0.385404831721799, \t0.000000000000000, \t2.005630016170309, \t0.000000000000000, \t\n-0.950500047307998, \t0.000000000000000, \t-1.166884021392492, \t0.000000000000000, \t1.432973552928162, \t0.000000000000000, \t2.540370505384567, \t0.000000000000000, \t\n-1.140505295054501, \t0.000000000000000, \t-3.673358835201185, \t0.000000000000000, \t-0.450691288038056, \t0.000000000000000, \t1.601024294408014, \t0.000000000000000, \t\n0.773213556014045, \t0.000000000000000, \t2.973873693246168, \t0.000000000000000, \t-1.361548406382279, \t0.000000000000000, \t1.409136332424815, \t0.000000000000000, \t\n-0.963382518314713, \t0.000000000000000, \t-2.031268227368161, \t0.000000000000000, \t0.983309972085586, \t0.000000000000000, \t-3.461412488471631, \t0.000000000000000, \t\n-2.601124929406039, \t0.000000000000000, \t-0.533896239766343, \t0.000000000000000, \t-2.627129008866350, \t0.000000000000000, \t0.622111169161305, \t0.000000000000000, \t\n-1.160926365580422, \t0.000000000000000, \t-2.406196188132628, \t0.000000000000000, \t-1.076870362758737, \t0.000000000000000, \t-1.791866820937175, \t0.000000000000000, \t\n-0.749453071522325, \t0.000000000000000, \t-5.324156615990973, \t0.000000000000000, \t-1.038698022238289, \t0.000000000000000, \t-2.106629944730630, \t0.000000000000000, \t\n0.659295598564773, \t0.000000000000000, \t0.520940881580988, \t0.000000000000000, \t-0.055649203928700, \t0.000000000000000, \t0.292096765423137, \t0.000000000000000, \t\n-4.663743901790872, \t0.000000000000000, \t-0.125066503391666, \t0.000000000000000, \t-2.452620252445380, \t0.000000000000000, \t-0.712128227397468, \t0.000000000000000, \t\n-0.048938037970968, \t0.000000000000000, \t-1.821520226003361, \t0.000000000000000, \t0.810106421304257, \t0.000000000000000, \t-0.196636623956257, \t0.000000000000000, \t\n-0.701769836763804, \t0.000000000000000, \t2.460345045649201, \t0.000000000000000, \t3.506597671641116, \t0.000000000000000, \t-2.711322611972225, \t0.000000000000000, \t\n-0.658079876600542, \t0.000000000000000, \t-2.040082099646173, \t0.000000000000000, \t2.201668355395807, \t0.000000000000000, \t1.181507395879711, \t0.000000000000000, \t\n-1.640739552179682, \t0.000000000000000, \t-1.613393726467190, \t0.000000000000000, \t-1.156741241731352, \t0.000000000000000, \t2.527773464519963, \t0.000000000000000, \t\n-0.497040638009502, \t0.000000000000000, \t-0.975817112895589, \t0.000000000000000, \t-2.866830755546166, \t0.000000000000000, \t1.120214498507878, \t0.000000000000000, \t\n5.986771654661698, \t0.000000000000000, \t0.398219252656757, \t0.000000000000000, \t-3.545606013198135, \t0.000000000000000, \t0.312398099396191, \t0.000000000000000, \t\n-2.265327979531788, \t0.000000000000000, \t0.792121001107366, \t0.000000000000000, \t-3.736145137670100, \t0.000000000000000, \t0.762228883650802, \t0.000000000000000, \t\n2.283545661214646, \t0.000000000000000, \t3.780020629583529, \t0.000000000000000, \t3.117260228608810, \t0.000000000000000, \t-2.011159255609613, \t0.000000000000000, \t\n0.279107700476072, \t0.000000000000000, \t2.003369134246936, \t0.000000000000000, \t-1.448171234480257, \t0.000000000000000, \t0.584697150310140, \t0.000000000000000, \t\n0.919508663636197, \t0.000000000000000, \t-3.071349141675388, \t0.000000000000000, \t-1.555923649263667, \t0.000000000000000, \t2.232497079438850, \t0.000000000000000, \t\n-0.012662139119883, \t0.000000000000000, \t0.372825540734715, \t0.000000000000000, \t2.378543590847629, \t0.000000000000000, \t1.459053407813062, \t0.000000000000000, \t\n-0.967913907390927, \t0.000000000000000, \t1.322825200678212, \t0.000000000000000, \t-1.033775820061824, \t0.000000000000000, \t-1.813629552693142, \t0.000000000000000, \t\n4.794348161661486, \t0.000000000000000, \t0.655279811518676, \t0.000000000000000, \t-2.224590138589720, \t0.000000000000000, \t0.595329481295766, \t0.000000000000000, \t\n3.364055988866225, \t0.000000000000000, \t1.863416422998127, \t0.000000000000000, \t1.930305751828105, \t0.000000000000000, \t-0.284467053432545, \t0.000000000000000, \t\n-0.923374905878938, \t0.000000000000000, \t1.922988234041399, \t0.000000000000000, \t0.310482143432719, \t0.000000000000000, \t0.332122302397134, \t0.000000000000000, \t\n-1.659487472408966, \t0.000000000000000, \t-1.865943507877961, \t0.000000000000000, \t-0.186775297569864, \t0.000000000000000, \t-1.700543850628361, \t0.000000000000000, \t\n0.497157959366735, \t0.000000000000000, \t-0.471244843957418, \t0.000000000000000, \t-0.432013753969948, \t0.000000000000000, \t-4.000189880113231, \t0.000000000000000, \t\n-0.415335170016467, \t0.000000000000000, \t0.317311950972859, \t0.000000000000000, \t0.038393428927595, \t0.000000000000000, \t0.177219909465206, \t0.000000000000000, \t\n0.531650958095143, \t0.000000000000000, \t-2.711644985175806, \t0.000000000000000, \t0.328744077805156, \t0.000000000000000, \t-0.938417707547928, \t0.000000000000000, \t\n0.970379584897379, \t0.000000000000000, \t1.873649473917137, \t0.000000000000000, \t0.177938226987023, \t0.000000000000000, \t0.155609346302393, \t0.000000000000000, \t\n-1.276504241867208, \t0.000000000000000, \t-0.463725075928807, \t0.000000000000000, \t-0.064748250389500, \t0.000000000000000, \t-1.725568534062385, \t0.000000000000000, \t\n-0.139066584804067, \t0.000000000000000, \t1.975514554117767, \t0.000000000000000, \t-0.807063199499478, \t0.000000000000000, \t-0.326926659682788, \t0.000000000000000, \t\n1.445727032487938, \t0.000000000000000, \t-0.597151107739100, \t0.000000000000000, \t2.732557531709386, \t0.000000000000000, \t-2.907130934109188, \t0.000000000000000, \t\n-1.461264832679981, \t0.000000000000000, \t-1.708588604968163, \t0.000000000000000, \t3.652851925431363, \t0.000000000000000, \t0.682050868282879, \t0.000000000000000, \t\n-0.281312579963294, \t0.000000000000000, \t0.554966483307825, \t0.000000000000000, \t-0.981341739340932, \t0.000000000000000, \t1.279543331141603, \t0.000000000000000, \t\n0.036589747826856, \t0.000000000000000, \t2.312073745896073, \t0.000000000000000, \t1.754682200732425, \t0.000000000000000, \t-0.957515875428627, \t0.000000000000000, \t\n-0.833596942819695, \t0.000000000000000, \t0.437054368791033, \t0.000000000000000, \t-0.898819399360279, \t0.000000000000000, \t-0.296050580896839, \t0.000000000000000, \t\n-0.785144257649601, \t0.000000000000000, \t-2.541503089003311, \t0.000000000000000, \t2.225075846758761, \t0.000000000000000, \t-1.587290487902002, \t0.000000000000000, \t\n-1.421404172056462, \t0.000000000000000, \t-3.015149802293631, \t0.000000000000000, \t1.780874288867949, \t0.000000000000000, \t-0.865812740882613, \t0.000000000000000, \t\n-2.845327531197112, \t0.000000000000000, \t1.445225867774367, \t0.000000000000000, \t2.183733236584647, \t0.000000000000000, \t1.163371072749080, \t0.000000000000000, \t\n0.883547693520409, \t0.000000000000000, \t-1.224093106684675, \t0.000000000000000, \t-1.854501116331044, \t0.000000000000000, \t1.783082089255796, \t0.000000000000000, \t\n2.301508706196191, \t0.000000000000000, \t-0.539901944139077, \t0.000000000000000, \t1.962315832319967, \t0.000000000000000, \t-0.060709041870503, \t0.000000000000000, \t\n-1.353139923300238, \t0.000000000000000, \t-1.482887537805234, \t0.000000000000000, \t1.273732601967176, \t0.000000000000000, \t-3.456609915556321, \t0.000000000000000, \t\n-3.752320586540873, \t0.000000000000000, \t3.536356614978951, \t0.000000000000000, \t0.206035952043233, \t0.000000000000000, \t5.933966913773842, \t0.000000000000000, \t\n-0.486633898075490, \t0.000000000000000, \t-0.329595089863342, \t0.000000000000000, \t1.496414153905337, \t0.000000000000000, \t0.137868749388880, \t0.000000000000000, \t\n-0.437192030996792, \t0.000000000000000, \t2.682750615210656, \t0.000000000000000, \t-2.440234892848570, \t0.000000000000000, \t1.433910252426186, \t0.000000000000000, \t\n-0.415051506104074, \t0.000000000000000, \t1.982003013708649, \t0.000000000000000, \t1.345796609972435, \t0.000000000000000, \t-2.335949513404370, \t0.000000000000000, \t\n1.065988867433025, \t0.000000000000000, \t2.741844905000464, \t0.000000000000000, \t-1.754047930934362, \t0.000000000000000, \t0.229252730015575, \t0.000000000000000, \t\n-0.679791016408669, \t0.000000000000000, \t-2.274097820043743, \t0.000000000000000, \t0.149802252231876, \t0.000000000000000, \t-0.139697151364830, \t0.000000000000000, \t\n-2.773367420505435, \t0.000000000000000, \t-4.403400246165611, \t0.000000000000000, \t-1.468974515184135, \t0.000000000000000, \t0.664990623095844, \t0.000000000000000, \t\n-3.446979775557143, \t0.000000000000000, \t1.850006428987618, \t0.000000000000000, \t-1.550866747921936, \t0.000000000000000, \t-3.632874882935257, \t0.000000000000000, \t\n0.828039662992464, \t0.000000000000000, \t2.794055182632816, \t0.000000000000000, \t-0.593995716682633, \t0.000000000000000, \t0.142788156054200, \t0.000000000000000, \t\n0.552461945119668, \t0.000000000000000, \t0.842127129738758, \t0.000000000000000, \t1.414335509600077, \t0.000000000000000, \t-0.311559241382430, \t0.000000000000000, \t\n1.510590844695250, \t0.000000000000000, \t1.692217183824300, \t0.000000000000000, \t0.613760285711957, \t0.000000000000000, \t0.065233463207770, \t0.000000000000000, \t\n-2.571912893711505, \t0.000000000000000, \t-1.707001531141341, \t0.000000000000000, \t0.673884968382041, \t0.000000000000000, \t0.889863883420103, \t0.000000000000000, \t\n-2.395635435233346, \t0.000000000000000, \t1.129247296359819, \t0.000000000000000, \t0.569074704779735, \t0.000000000000000, \t6.139436017480722, \t0.000000000000000, \t\n0.822158309259017, \t0.000000000000000, \t-3.289872016222589, \t0.000000000000000, \t0.417612988384414, \t0.000000000000000, \t1.493982103868165, \t0.000000000000000, \t\n-0.415353391377005, \t0.000000000000000, \t0.288670764933155, \t0.000000000000000, \t-1.895650228872272, \t0.000000000000000, \t-0.139631694475020, \t0.000000000000000, \t\n1.445103299005436, \t0.000000000000000, \t2.877182243683429, \t0.000000000000000, \t1.192428490172580, \t0.000000000000000, \t-5.964591921763842, \t0.000000000000000, \t\n0.570859795882959, \t0.000000000000000, \t2.328333316356666, \t0.000000000000000, \t0.333755014930026, \t0.000000000000000, \t1.221901577771909, \t0.000000000000000, \t\n0.943358697415568, \t0.000000000000000, \t2.793063983613067, \t0.000000000000000, \t3.163005066073616, \t0.000000000000000, \t2.098300664513867, \t0.000000000000000, \t\n-3.915313164333447, \t0.000000000000000, \t-2.475766769064539, \t0.000000000000000, \t1.720472044894277, \t0.000000000000000, \t-1.273591949275665, \t0.000000000000000, \t\n-1.213451272938616, \t0.000000000000000, \t0.697439404325690, \t0.000000000000000, \t-0.309902287574293, \t0.000000000000000, \t2.622575852162781, \t0.000000000000000, \t\n-2.075881936219060, \t0.000000000000000, \t0.777847545691770, \t0.000000000000000, \t-3.967947986440650, \t0.000000000000000, \t-3.066503371806472, \t0.000000000000000, \t\n1.193780625937845, \t0.000000000000000, \t0.214246579281311, \t0.000000000000000, \t-2.610681491162162, \t0.000000000000000, \t-1.261224183972745, \t0.000000000000000, \t\n-1.165071748544285, \t0.000000000000000, \t-1.116548474834374, \t0.000000000000000, \t0.847202164846982, \t0.000000000000000, \t-3.474301529532390, \t0.000000000000000, \t\n0.020799541946476, \t0.000000000000000, \t-3.868995473288166, \t0.000000000000000, \t1.757979409638067, \t0.000000000000000, \t0.868115130183109, \t0.000000000000000, \t\n0.910167436737958, \t0.000000000000000, \t-1.878855115563720, \t0.000000000000000, \t1.710357104174161, \t0.000000000000000, \t-1.468933980990902, \t0.000000000000000, \t\n1.799544171601169, \t0.000000000000000, \t-4.922332880027887, \t0.000000000000000, \t0.219424548939720, \t0.000000000000000, \t-0.971671113451924, \t0.000000000000000, \t\n-0.940533475616266, \t0.000000000000000, \t0.122510114412152, \t0.000000000000000, \t-1.373686254916911, \t0.000000000000000, \t1.760348103896323, \t0.000000000000000, \t\n0.391745067829643, \t0.000000000000000, \t2.521958505327354, \t0.000000000000000, \t-1.300693516405092, \t0.000000000000000, \t-0.538251788309178, \t0.000000000000000, \t\n0.797184135810173, \t0.000000000000000, \t2.908800548982588, \t0.000000000000000, \t1.590902251655215, \t0.000000000000000, \t-1.070323714487264, \t0.000000000000000, \t\n-3.349764443340999, \t0.000000000000000, \t-1.190563529731447, \t0.000000000000000, \t1.363369471291963, \t0.000000000000000, \t-1.814270299924576, \t0.000000000000000, \t\n-0.023381588315711, \t0.000000000000000, \t1.719182048679569, \t0.000000000000000, \t0.839917213252626, \t0.000000000000000, \t1.006099633839122, \t0.000000000000000, \t\n0.812462674381527, \t0.000000000000000, \t1.755814336346739, \t0.000000000000000, \t2.546848681206319, \t0.000000000000000, \t-1.555300208869455, \t0.000000000000000, \t\n1.017053811631167, \t0.000000000000000, \t0.996591039170903, \t0.000000000000000, \t-1.228047247924881, \t0.000000000000000, \t4.809462271463009, \t0.000000000000000, \t\n2.318113116151685, \t0.000000000000000, \t-1.206932520679733, \t0.000000000000000, \t1.273757685623312, \t0.000000000000000, \t0.724335352481802, \t0.000000000000000, \t\n1.519876652073198, \t0.000000000000000, \t-2.749670314714158, \t0.000000000000000, \t3.424042481847581, \t0.000000000000000, \t-3.714668360421517, \t0.000000000000000, \t\n1.612834197004014, \t0.000000000000000, \t-2.038234723985566, \t0.000000000000000, \t1.470938786562152, \t0.000000000000000, \t2.111634918450302, \t0.000000000000000, \t\n1.030376670151787, \t0.000000000000000, \t-0.420877189003829, \t0.000000000000000, \t-1.502024800532894, \t0.000000000000000, \t0.452310749163804, \t0.000000000000000, \t\n-1.606059382300987, \t0.000000000000000, \t-4.006159967834147, \t0.000000000000000, \t-2.152801208196508, \t0.000000000000000, \t1.671674089372579, \t0.000000000000000, \t\n1.714536333564101, \t0.000000000000000, \t-1.011518543005344, \t0.000000000000000, \t-0.576410282180584, \t0.000000000000000, \t0.733689809480836, \t0.000000000000000, \t\n1.004245602717974, \t0.000000000000000, \t1.010090391888449, \t0.000000000000000, \t3.811459513385621, \t0.000000000000000, \t-5.230621089271954, \t0.000000000000000, \t\n0.678044861034399, \t0.000000000000000, \t1.255935859598107, \t0.000000000000000, \t1.674521701615288, \t0.000000000000000, \t-1.656695216761705, \t0.000000000000000, \t\n1.169286028869693, \t0.000000000000000, \t0.524915416191998, \t0.000000000000000, \t2.397642885039520, \t0.000000000000000, \t2.108711400616072, \t0.000000000000000, \t\n2.037618211018084, \t0.000000000000000, \t-0.623664553406925, \t0.000000000000000, \t2.984106170984409, \t0.000000000000000, \t1.132182737400932, \t0.000000000000000, \t\n-2.859274340352130, \t0.000000000000000, \t-0.975550071398723, \t0.000000000000000, \t-1.359935119997407, \t0.000000000000000, \t-2.963308211050121, \t0.000000000000000, \t\n-0.228726662781163, \t0.000000000000000, \t-1.411110379682043, \t0.000000000000000, \t0.741553355734225, \t0.000000000000000, \t0.497554254758309, \t0.000000000000000, \t\n2.371907950598855, \t0.000000000000000, \t1.063465168988748, \t0.000000000000000, \t-0.641082692081488, \t0.000000000000000, \t-0.855439878540726, \t0.000000000000000, \t\n0.578321738578726, \t0.000000000000000, \t3.005809768796194, \t0.000000000000000, \t1.961458699064065, \t0.000000000000000, \t-3.206261663772745, \t0.000000000000000, \t\n-0.364431989095434, \t0.000000000000000, \t-0.263182496622273, \t0.000000000000000, \t1.843464680631139, \t0.000000000000000, \t-0.419107530229249, \t0.000000000000000, \t\n1.662335873298487, \t0.000000000000000, \t-0.853687563304005, \t0.000000000000000, \t-2.584133404357169, \t0.000000000000000, \t3.466839568922895, \t0.000000000000000, \t\n0.881671345091973, \t0.000000000000000, \t0.454620014206908, \t0.000000000000000, \t-1.737245187402739, \t0.000000000000000, \t2.162713238369243, \t0.000000000000000, \t\n-3.868539002714486, \t0.000000000000000, \t2.014114855933826, \t0.000000000000000, \t-0.703233831811006, \t0.000000000000000, \t-3.410319935997574, \t0.000000000000000, \t\n-1.851235811006584, \t0.000000000000000, \t0.909783907894036, \t0.000000000000000, \t0.091884002136728, \t0.000000000000000, \t-2.688294201131650, \t0.000000000000000, \t\n-0.906134178460955, \t0.000000000000000, \t3.475054609035133, \t0.000000000000000, \t-0.573927964170323, \t0.000000000000000, \t-0.429542937515399, \t0.000000000000000, \t\n0.991348618739939, \t0.000000000000000, \t1.974804904926325, \t0.000000000000000, \t0.975783450796698, \t0.000000000000000, \t-3.057119549071503, \t0.000000000000000, \t\n-3.899429237481194, \t0.000000000000000, \t0.362439009175350, \t0.000000000000000, \t-1.124461670265618, \t0.000000000000000, \t1.806000360163583, \t0.000000000000000, \t\n-2.768333362600288, \t0.000000000000000, \t0.244387897900379, \t0.000000000000000, \t0.908767296720926, \t0.000000000000000, \t1.254669374391882, \t0.000000000000000, \t\n-1.420441929463686, \t0.000000000000000, \t-0.875658895966293, \t0.000000000000000, \t0.183824603376167, \t0.000000000000000, \t-3.361653917011686, \t0.000000000000000, \t\n-0.796615630227952, \t0.000000000000000, \t-1.660226542658673, \t0.000000000000000, \t1.654439358307226, \t0.000000000000000, \t2.782812946709771, \t0.000000000000000, \t\n1.418064412811531, \t0.000000000000000, \t-0.819645647243761, \t0.000000000000000, \t0.807724772592699, \t0.000000000000000, \t-0.941967976379298, \t0.000000000000000, \t\n-2.312768306047469, \t0.000000000000000, \t0.872426936477443, \t0.000000000000000, \t0.919528961530845, \t0.000000000000000, \t-2.084904575264847, \t0.000000000000000, \t\n-1.972464868459322, \t0.000000000000000, \t-1.050687203338466, \t0.000000000000000, \t1.659579707007902, \t0.000000000000000, \t-1.820640014705855, \t0.000000000000000, \t\n-1.195078061671045, \t0.000000000000000, \t-1.639773173762048, \t0.000000000000000, \t1.616744338157063, \t0.000000000000000, \t4.019216096811563, \t0.000000000000000, \t\n3.461021102549681, \t0.000000000000000, \t1.642352734361484, \t0.000000000000000, \t-0.046354693720813, \t0.000000000000000, \t-0.041936252359677, \t0.000000000000000, \t\n-2.393307519480551, \t0.000000000000000, \t-0.341471634615121, \t0.000000000000000, \t-0.392073595257017, \t0.000000000000000, \t-0.219299018372730, \t0.000000000000000, \t\n-2.016391579662071, \t0.000000000000000, \t-0.653096251969787, \t0.000000000000000, \t1.466353155666821, \t0.000000000000000, \t-2.872058864320412, \t0.000000000000000, \t\n-2.157180779503830, \t0.000000000000000, \t0.723257479841560, \t0.000000000000000, \t3.769951308104384, \t0.000000000000000, \t-1.923392042420024, \t0.000000000000000, \t\n0.644899359942840, \t0.000000000000000, \t-2.090226891621437, \t0.000000000000000, \t-0.277043982890403, \t0.000000000000000, \t-0.528271428321112, \t0.000000000000000, \t\n2.518120645960652, \t0.000000000000000, \t1.040820431111488, \t0.000000000000000, \t-4.560583754742486, \t0.000000000000000, \t-0.226899614918836, \t0.000000000000000, \t\n1.713331231108959, \t0.000000000000000, \t-3.293941019163642, \t0.000000000000000, \t-1.113331444648290, \t0.000000000000000, \t-1.032308423149906, \t0.000000000000000, \t\n1.593774272982443, \t0.000000000000000, \t-1.246840475090529, \t0.000000000000000, \t-0.190344684920137, \t0.000000000000000, \t-1.719386356896355, \t0.000000000000000, \t\n-2.827721754659679, \t0.000000000000000, \t-0.092438285279020, \t0.000000000000000, \t-0.565844430675246, \t0.000000000000000, \t-1.077916121691716, \t0.000000000000000, \t\n-1.208665809504693, \t0.000000000000000, \t-2.996014266381254, \t0.000000000000000, \t2.888573323402423, \t0.000000000000000, \t2.829507048720695, \t0.000000000000000, \t\n-0.859177034120755, \t0.000000000000000, \t-1.969302377743254, \t0.000000000000000, \t0.777437674525362, \t0.000000000000000, \t-0.124910190157646, \t0.000000000000000, \t\n0.129875493115290, \t0.000000000000000, \t-4.192139262163992, \t0.000000000000000, \t3.023496047962126, \t0.000000000000000, \t1.149775163736637, \t0.000000000000000, \t\n2.038151304801731, \t0.000000000000000, \t3.016122489841263, \t0.000000000000000, \t-4.829481812137012, \t0.000000000000000, \t-1.668436615909279, \t0.000000000000000, \t\n0.958586784636918, \t0.000000000000000, \t1.550652410058678, \t0.000000000000000, \t-1.456305257976716, \t0.000000000000000, \t-0.079588392344731, \t0.000000000000000, \t\n-2.453213599392345, \t0.000000000000000, \t0.296795909127105, \t0.000000000000000, \t-0.253426616607643, \t0.000000000000000, \t1.418937160028195, \t0.000000000000000, \t\n-1.672949529066915, \t0.000000000000000, \t-1.620990298572947, \t0.000000000000000, \t-1.085103073196045, \t0.000000000000000, \t0.738606361195386, \t0.000000000000000, \t\n-2.097831202853255, \t0.000000000000000, \t2.711952282071310, \t0.000000000000000, \t1.498539238246888, \t0.000000000000000, \t1.317457282535915, \t0.000000000000000, \t\n-0.302765938349717, \t0.000000000000000, \t-0.044623707947201, \t0.000000000000000, \t2.337405215062395, \t0.000000000000000, \t-3.980689173859100, \t0.000000000000000, \t\n\n\n};\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:\t     arm_fft_bin_example_f32.c\n*\n* Description:   Example code demonstrating calculation of Max energy bin of\n*                frequency domain of input signal.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n * -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup FrequencyBin Frequency Bin Example\n *\n * \\par Description\n * \\par\n * Demonstrates the calculation of the maximum energy bin in the frequency\n * domain of the input signal with the use of Complex FFT, Complex\n * Magnitude, and Maximum functions.\n *\n * \\par Algorithm:\n * \\par\n * The input test signal contains a 10 kHz signal with uniformly distributed white noise.\n * Calculating the FFT of the input signal will give us the maximum energy of the\n * bin corresponding to the input frequency of 10 kHz.\n *\n * \\par Block Diagram:\n * \\image html FFTBin.gif \"Block Diagram\"\n * \\par\n * The figure below shows the time domain signal of 10 kHz signal with\n * uniformly distributed white noise, and the next figure shows the input\n * in the frequency domain. The bin with maximum energy corresponds to 10 kHz signal.\n * \\par\n * \\image html FFTBinInput.gif \"Input signal in Time domain\"\n * \\image html FFTBinOutput.gif \"Input signal in Frequency domain\"\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInput_f32_10khz points to the input data\n * \\li \\c testOutput points to the output data\n * \\li \\c fftSize length of FFT\n * \\li \\c ifftFlag flag for the selection of CFFT/CIFFT\n * \\li \\c doBitReverse Flag for selection of normal order or bit reversed order\n * \\li \\c refIndex reference index value at which maximum energy of bin ocuurs\n * \\li \\c testIndex calculated index value at which maximum energy of bin ocuurs\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_cfft_f32()\n * - arm_cmplx_mag_f32()\n * - arm_max_f32()\n *\n * <b> Refer  </b>\n * \\link arm_fft_bin_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_fft_bin_example_f32.c\n  */\n\n\n#include \"arm_math.h\"\n#include \"arm_const_structs.h\"\n\n#define TEST_LENGTH_SAMPLES 2048\n\n/* -------------------------------------------------------------------\n* External Input and Output buffer Declarations for FFT Bin Example\n* ------------------------------------------------------------------- */\nextern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];\nstatic float32_t testOutput[TEST_LENGTH_SAMPLES/2];\n\n/* ------------------------------------------------------------------\n* Global variables for FFT Bin Example\n* ------------------------------------------------------------------- */\nuint32_t fftSize = 1024;\nuint32_t ifftFlag = 0;\nuint32_t doBitReverse = 1;\n\n/* Reference index at which max energy of bin ocuurs */\nuint32_t refIndex = 213, testIndex = 0;\n\n/* ----------------------------------------------------------------------\n* Max magnitude FFT Bin test\n* ------------------------------------------------------------------- */\n\nint32_t main(void)\n{\n\n  arm_status status;\n  float32_t maxValue;\n\n  status = ARM_MATH_SUCCESS;\n\n  /* Process the data through the CFFT/CIFFT module */\n  arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse);\n\n  /* Process the data through the Complex Magnitude Module for\n  calculating the magnitude at each bin */\n  arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize);\n\n  /* Calculates maxValue and returns corresponding BIN value */\n  arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);\n\n  if (testIndex !=  refIndex)\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n\n  /* ----------------------------------------------------------------------\n  ** Loop here if the signals fail the PASS check.\n  ** This denotes a test failure\n  ** ------------------------------------------------------------------- */\n\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n /** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_fir_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_data.c",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*   \n* Project: \t    CMSIS DSP Library   \n* Title:\t     \tarm_fir_data.c\n*   \n* Description:\t Data file used for example code\n*   \n* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n** Test input signal contains 1000Hz + 15000 Hz\n** ------------------------------------------------------------------- */\n\nfloat32_t testInput_f32_1kHz_15kHz[320] =\n{\n+0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, \n+0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, \n+0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, \n-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, \n-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, \n-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, \n+0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, \n+0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, \n+0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, \n+0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, \n-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, \n-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, \n+0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, \n+0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, \n+0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, \n+0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, \n-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, \n-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, \n-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, \n+0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, \n+0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, \n-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, \n-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, \n-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, \n+0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, \n+0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, \n+0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, \n+0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, \n-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, \n-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, \n-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, \n+0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, \n+0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, \n+0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, \n-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, \n-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, \n-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, \n+0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, \n+0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, \n+0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, \n};\n\nfloat32_t refOutput[320] = \n{\n+0.0000000000f, -0.0010797829f, -0.0007681386f, -0.0001982932f, +0.0000644313f, +0.0020854271f, +0.0036891871f, +0.0015855941f, \n-0.0026280805f, -0.0075907658f, -0.0119390538f, -0.0086665968f, +0.0088981202f, +0.0430539279f, +0.0974468742f, +0.1740405600f, \n+0.2681416601f, +0.3747720089f, +0.4893362230f, +0.6024154672f, +0.7058740791f, +0.7968348987f, +0.8715901940f, +0.9277881093f, \n+0.9682182661f, +0.9934674267f, +1.0012052245f, +0.9925859371f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, \n+0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, \n-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, \n-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, \n-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, \n+0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, \n+0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, \n+0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, \n-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, \n-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, \n-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, \n+0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, \n+0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, \n+0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, \n-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, \n-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, \n-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, \n+0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, \n+0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, \n+0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, \n-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, \n-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, \n-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, \n+0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, \n+0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, \n+0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, \n-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, \n-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, \n-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, -0.0000000000f, +0.1309866321f, \n+0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, \n+0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, \n+0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, \n-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, \n-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, \n-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, \n+0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, \n+0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f \n};\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n *\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n * Title:        arm_fir_example_f32.c\n *\n * Description:  Example code demonstrating how an FIR filter can be used\n *               as a low pass filter.\n *\n * Target Processor: Cortex-M4/Cortex-M3\n *\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n * -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup FIRLPF FIR Lowpass Filter Example\n *\n * \\par Description:\n * \\par\n * Removes high frequency signal components from the input using an FIR lowpass filter.\n * The example demonstrates how to configure an FIR filter and then pass data through\n * it in a block-by-block fashion.\n * \\image html FIRLPF_signalflow.gif\n *\n * \\par Algorithm:\n * \\par\n * The input signal is a sum of two sine waves:  1 kHz and 15 kHz.\n * This is processed by an FIR lowpass filter with cutoff frequency 6 kHz.\n * The lowpass filter eliminates the 15 kHz signal leaving only the 1 kHz sine wave at the output.\n * \\par\n * The lowpass filter was designed using MATLAB with a sample rate of 48 kHz and\n * a length of 29 points.\n * The MATLAB code to generate the filter coefficients is shown below:\n * <pre>\n *     h = fir1(28, 6/24);\n * </pre>\n * The first argument is the \"order\" of the filter and is always one less than the desired length.\n * The second argument is the normalized cutoff frequency.  This is in the range 0 (DC) to 1.0 (Nyquist).\n * A 6 kHz cutoff with a Nyquist frequency of 24 kHz lies at a normalized frequency of 6/24 = 0.25.\n * The CMSIS FIR filter function requires the coefficients to be in time reversed order.\n * <pre>\n *     fliplr(h)\n * </pre>\n * The resulting filter coefficients and are shown below.\n * Note that the filter is symmetric (a property of linear phase FIR filters)\n * and the point of symmetry is sample 14.  Thus the filter will have a delay of\n * 14 samples for all frequencies.\n * \\par\n * \\image html FIRLPF_coeffs.gif\n * \\par\n * The frequency response of the filter is shown next.\n * The passband gain of the filter is 1.0 and it reaches 0.5 at the cutoff frequency 6 kHz.\n * \\par\n * \\image html FIRLPF_response.gif\n * \\par\n * The input signal is shown below.\n * The left hand side shows the signal in the time domain while the right hand side is a frequency domain representation.\n * The two sine wave components can be clearly seen.\n * \\par\n * \\image html FIRLPF_input.gif\n * \\par\n * The output of the filter is shown below.  The 15 kHz component has been eliminated.\n * \\par\n * \\image html FIRLPF_output.gif\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInput_f32_1kHz_15kHz points to the input data\n * \\li \\c refOutput points to the reference output data\n * \\li \\c testOutput points to the test output data\n * \\li \\c firStateF32 points to state buffer\n * \\li \\c firCoeffs32 points to coefficient buffer\n * \\li \\c blockSize number of samples processed at a time\n * \\li \\c numBlocks number of frames\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_fir_init_f32()\n * - arm_fir_f32()\n *\n * <b> Refer  </b>\n * \\link arm_fir_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_fir_example_f32.c\n */\n\n/* ----------------------------------------------------------------------\n** Include Files\n** ------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"math_helper.h\"\n\n/* ----------------------------------------------------------------------\n** Macro Defines\n** ------------------------------------------------------------------- */\n\n#define TEST_LENGTH_SAMPLES  320\n#define SNR_THRESHOLD_F32    140.0f\n#define BLOCK_SIZE            32\n#define NUM_TAPS              29\n\n/* -------------------------------------------------------------------\n * The input signal and reference output (computed with MATLAB)\n * are defined externally in arm_fir_lpf_data.c.\n * ------------------------------------------------------------------- */\n\nextern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES];\nextern float32_t refOutput[TEST_LENGTH_SAMPLES];\n\n/* -------------------------------------------------------------------\n * Declare Test output buffer\n * ------------------------------------------------------------------- */\n\nstatic float32_t testOutput[TEST_LENGTH_SAMPLES];\n\n/* -------------------------------------------------------------------\n * Declare State buffer of size (numTaps + blockSize - 1)\n * ------------------------------------------------------------------- */\n\nstatic float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1];\n\n/* ----------------------------------------------------------------------\n** FIR Coefficients buffer generated using fir1() MATLAB function.\n** fir1(28, 6/24)\n** ------------------------------------------------------------------- */\n\nconst float32_t firCoeffs32[NUM_TAPS] = {\n  -0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, +0.0085302217f, -0.0000000000f, -0.0173976984f,\n  -0.0341458607f, -0.0333591565f, +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, +0.2229246956f,\n  +0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f,\n  +0.0080754303f, +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f\n};\n\n/* ------------------------------------------------------------------\n * Global variables for FIR LPF Example\n * ------------------------------------------------------------------- */\n\nuint32_t blockSize = BLOCK_SIZE;\nuint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE;\n\nfloat32_t  snr;\n\n/* ----------------------------------------------------------------------\n * FIR LPF Example\n * ------------------------------------------------------------------- */\n\nint32_t main(void)\n{\n  uint32_t i;\n  arm_fir_instance_f32 S;\n  arm_status status;\n  float32_t  *inputF32, *outputF32;\n\n  /* Initialize input and output buffer pointers */\n  inputF32 = &testInput_f32_1kHz_15kHz[0];\n  outputF32 = &testOutput[0];\n\n  /* Call FIR init function to initialize the instance structure. */\n  arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize);\n\n  /* ----------------------------------------------------------------------\n  ** Call the FIR process function for every blockSize samples\n  ** ------------------------------------------------------------------- */\n\n  for(i=0; i < numBlocks; i++)\n  {\n    arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);\n  }\n\n  /* ----------------------------------------------------------------------\n  ** Compare the generated output against the reference output computed\n  ** in MATLAB.\n  ** ------------------------------------------------------------------- */\n\n  snr = arm_snr_f32(&refOutput[0], &testOutput[0], TEST_LENGTH_SAMPLES);\n\n  if (snr < SNR_THRESHOLD_F32)\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n  else\n  {\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* ----------------------------------------------------------------------\n  ** Loop here if the signal does not match the reference output.\n  ** ------------------------------------------------------------------- */\n\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n/** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:        17. January 2013\n* $Revision: \tV1.4.0  b\n*\n* Project: \t    CMSIS DSP Library\n*\n* Title:\t    math_helper.c\n*\n* Description:\tDefinition of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------\n*\t\tInclude standard header files\n* -------------------------------------------------------------------- */\n#include<math.h>\n\n/* ----------------------------------------------------------------------\n*\t\tInclude project header files\n* -------------------------------------------------------------------- */\n#include \"math_helper.h\"\n\n/**\n * @brief  Caluclation of SNR\n * @param[in]  pRef \tPointer to the reference buffer\n * @param[in]  pTest\tPointer to the test buffer\n * @param[in]  buffSize\ttotal number of samples\n * @return     SNR\n * The function Caluclates signal to noise ratio for the reference output\n * and test output\n */\n\nfloat arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)\n{\n  float EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  float SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n \t  /* Checking for a NAN value in pRef array */\n\t  test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n\n\t  /* Checking for a NAN value in pTest array */\n\t  test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n\t/* Checking for a NAN value in EnergyError */\n\ttest =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n  \t\treturn(0);\n    }\n\n\n  SNR = 10 * log10 (EnergySignal / EnergyError);\n\n  return (SNR);\n\n}\n\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,\n                            uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Converts float to fixed in q12.20 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to outputbuffer\n * @param[in]  numSamples  number of samples in the input buffer\n * @return none\n * The function converts floating point values to fixed point(q12.20) values\n */\n\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1048576.0f corresponds to pow(2, 20) */\n      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 1.0)\n        {\n          pOut[i] = 0x000FFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q31 (q31_t * input_buf,\n\t\t\t\t\t\t\t\t uint32_t blockSize,\n                                 uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q7 (q7_t * input_buf,\n\t\t\t\t\t\t\t\tuint32_t blockSize,\n                                uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n\n\n/**\n * @brief  Caluclates number of guard bits\n * @param[in]  num_adds \tnumber of additions\n * @return guard bits\n * The function Caluclates the number of guard bits\n * depending on the numtaps\n */\n\nuint32_t arm_calc_guard_bits (uint32_t num_adds)\n{\n  uint32_t i = 1, j = 0;\n\n  if (num_adds == 1)\n    {\n      return (0);\n    }\n\n  while (i < num_adds)\n    {\n      i = i * 2;\n      j++;\n    }\n\n  return (j);\n}\n\n/**\n * @brief  Apply guard bits to buffer\n * @param[in,out]  pIn         pointer to input buffer\n * @param[in]      numSamples  number of samples in the input buffer\n * @param[in]      guard_bits  guard bits\n * @return none\n */\n\nvoid arm_apply_guard_bits (float32_t *pIn,\n\t\t\t\t\t\t   uint32_t numSamples,\n\t\t\t\t\t\t   uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);\n    }\n}\n\n/**\n * @brief  Calculates pow(2, numShifts)\n * @param[in]  numShifts \tnumber of shifts\n * @return pow(2, numShifts)\n */\nuint32_t arm_calc_2pow(uint32_t numShifts)\n{\n\n  uint32_t i, val = 1;\n\n  for (i = 0; i < numShifts; i++)\n    {\n      val = val * 2;\n    }\n\n  return(val);\n}\n\n\n\n/**\n * @brief  Converts float to fixed q14\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 16384.0f corresponds to pow(2, 14) */\n      pOut[i] = (q15_t) (pIn[i] * 16384.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFF;\n        }\n\n    }\n\n}\n\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 4.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n\n/**\n * @brief  Converts float to fixed q28 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t/* 268435456.0f corresponds to pow(2, 28) */\n      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 8.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Clip the float values to +/- 1\n * @param[in,out]  pIn           input buffer\n * @param[in]      numSamples    number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_clip_f32 (float *pIn, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      if (pIn[i] > 1.0f)\n\t  {\n\t    pIn[i] = 1.0;\n\t  }\n\t  else if ( pIn[i] < -1.0f)\n\t  {\n\t    pIn[i] = -1.0;\n\t  }\n\n    }\n}\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.h",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*  \n* Project: \t    CMSIS DSP Library \n*\n* Title:\t    math_helper.h\n* \n* Description:\tPrototypes of all helper functions required.  \n*\n* Target Processor: Cortex-M4/Cortex-M3\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n* -------------------------------------------------------------------- */\n\n\n#include \"arm_math.h\"\n\n#ifndef MATH_HELPER_H\n#define MATH_HELPER_H\n\nfloat arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  \nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);\nvoid arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_clip_f32(float *pIn, uint32_t numSamples);\nuint32_t arm_calc_guard_bits(uint32_t num_adds);\nvoid arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);\nuint32_t arm_calc_2pow(uint32_t guard_bits);\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_graphic_equalizer_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*   \n* Project: \t    CMSIS DSP Library   \n* Title:\t     \tarm_graphic_equalizer_data.c\n*   \n* Description:\t Data file used for example code\n*   \n* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n\nfloat32_t testRefOutput_f32[320] = {\n\n0.000000000000000000,\t0.001898396760225296,\t0.004215449094772339,\t0.007432077080011368,\t0.010948467999696732,\t0.015026375651359558,\t0.019191544502973557,\t0.023574527353048325,\t\n0.027919445186853409,\t0.032277785241603851,\t0.036551639437675476,\t0.040732793509960175,\t0.044799156486988068,\t0.048710610717535019,\t0.052476800978183746,\t0.056059073656797409,\t\n0.059482168406248093,\t0.062726479023694992,\t0.065821025520563126,\t0.068763464689254761,\t0.071577839553356171,\t0.074270240962505341,\t0.076856281608343124,\t0.079344697296619415,\t\n0.081745062023401260,\t0.084067162126302719,\t0.086318407207727432,\t0.088509257882833481,\t0.090647127479314804,\t0.092742368578910828,\t0.094802625477313995,\t0.096837285906076431,\t\n0.098853722214698792,\t0.100859899073839190,\t0.102862443774938580,\t0.104867763817310330,\t0.106881409883499150,\t0.108908228576183320,\t0.110952425748109820,\t0.113017357885837550,\t\n0.115105822682380680,\t0.117219865322113040,\t0.119361080229282380,\t0.121530555188655850,\t0.123729091137647630,\t0.125957202166318890,\t0.128215309232473370,\t0.130503740161657330,\t\n0.132822841405868530,\t0.135173004120588300,\t0.137554679065942760,\t0.139968376606702800,\t0.142414685338735580,\t0.144894234836101530,\t0.147407654672861100,\t0.149955596774816510,\t\n0.152538605034351350,\t0.155157200992107390,\t0.157811731100082400,\t0.160502441227436070,\t0.163229387253522870,\t0.165992442518472670,\t0.168791320174932480,\t0.171625509858131410,\t\n0.174494370818138120,\t0.177397061139345170,\t0.180332608520984650,\t0.183299910277128220,\t0.186297744512557980,\t0.189324837177991870,\t0.192379791289567950,\t0.195461250841617580,\t\n0.198567759245634080,\t0.201697919517755510,\t0.204850304871797560,\t0.208023533225059510,\t0.211216274648904800,\t0.214427210390567780,\t0.217655111104249950,\t0.220898788422346120,\t\n0.224157124757766720,\t0.227429077029228210,\t0.230713658034801480,\t0.234009962528944020,\t0.237317133694887160,\t0.240634419023990630,\t0.243961080908775330,\t0.247296508401632310,\t\n0.250640105456113820,\t0.253991369158029560,\t0.257349837571382520,\t0.260715119540691380,\t0.264086868613958360,\t0.267464816570281980,\t0.270848698914051060,\t0.274238351732492450,\t\n0.277633611112833020,\t0.281034380197525020,\t0.284440591931343080,\t0.287852220237255100,\t0.291269283741712570,\t0.294691801071166990,\t0.298119872808456420,\t0.301553562283515930,\t\n0.304993014782667160,\t0.308438356965780260,\t0.311889752745628360,\t0.315347377210855480,\t0.318811416625976560,\t0.322282072156667710,\t0.325759567320346830,\t0.329244095832109450,\t\n0.332735907286405560,\t0.336235217750072480,\t0.339742250740528110,\t0.343257248401641850,\t0.346780419349670410,\t0.350311983376741410,\t0.353852160274982450,\t0.357401121407747270,\t\n0.360959105193614960,\t0.364526227116584780,\t0.368102725595235820,\t0.371688675135374070,\t0.375284302979707720,\t0.378889638930559160,\t0.382504884153604510,\t0.386130042374134060,\t\n0.389765247702598570,\t0.393410529941320420,\t0.397065933793783190,\t0.400731507688760760,\t0.404407206922769550,\t0.408093083649873730,\t0.411789052188396450,\t0.415495119988918300,\t\n0.419211201369762420,\t0.422937240451574330,\t0.426673140376806260,\t0.430418811738491060,\t0.434174135327339170,\t0.437938995659351350,\t0.441713258624076840,\t0.445496778935194020,\t\n0.449289388954639430,\t0.453090950846672060,\t0.456901267170906070,\t0.460720170289278030,\t0.464547459036111830,\t0.468382950872182850,\t0.472226426005363460,\t0.476077698171138760,\t\n0.479936532676219940,\t0.483802750706672670,\t0.487676106393337250,\t0.491556398570537570,\t0.495443399995565410,\t0.499336875975131990,\t0.503236617892980580,\t0.507142387330532070,\t\n0.511053957045078280,\t0.514971107244491580,\t0.518893606960773470,\t0.522821225225925450,\t0.526753749698400500,\t0.530690938234329220,\t0.534632585942745210,\t0.538578454405069350,\t\n0.542528338730335240,\t0.546481993049383160,\t0.550439231097698210,\t0.554399792104959490,\t0.558363504707813260,\t0.562330115586519240,\t0.566299438476562500,\t0.570271246135234830,\t\n0.574245333671569820,\t0.578221492469310760,\t0.582199502736330030,\t0.586179181933403020,\t0.590160276740789410,\t0.594142623245716090,\t0.598125983029603960,\t0.602110169827938080,\t\n0.606094967573881150,\t0.610080175101757050,\t0.614065583795309070,\t0.618050977587699890,\t0.622036151587963100,\t0.626020893454551700,\t0.630004994571208950,\t0.633988231420516970,\t\n0.637970402836799620,\t0.641951277852058410,\t0.645930647850036620,\t0.649908289313316350,\t0.653883971273899080,\t0.657857488840818410,\t0.661828581243753430,\t0.665797054767608640,\t\n0.669762641191482540,\t0.673725124448537830,\t0.677684243768453600,\t0.681639779359102250,\t0.685591462999582290,\t0.689539063721895220,\t0.693482317030429840,\t0.697420965880155560,\t\n0.701354760676622390,\t0.705283410847187040,\t0.709206689149141310,\t0.713124278932809830,\t0.717035952955484390,\t0.720941375941038130,\t0.724840316921472550,\t0.728732451796531680,\t\n0.732617516070604320,\t0.736495196819305420,\t0.740365199744701390,\t0.744227230548858640,\t0.748080968856811520,\t0.751926124095916750,\t0.755762357264757160,\t0.759589381515979770,\t\n0.763406842947006230,\t0.767214450985193250,\t0.771011855453252790,\t0.774798732250928880,\t0.778574761003255840,\t0.782339565455913540,\t0.786092851310968400,\t0.789834223687648770,\t\n0.793563373386859890,\t0.797279909253120420,\t0.800983514636754990,\t0.804673787206411360,\t0.808350402861833570,\t0.812012966722249980,\t0.815661124885082240,\t0.819294504821300510,\t\n0.822912722826004030,\t0.826515413820743560,\t0.830102190375328060,\t0.833672653883695600,\t0.837226435542106630,\t0.840763118118047710,\t0.844282336533069610,\t0.847783654928207400,\t\n0.851266715675592420,\t0.854731071740388870,\t0.858176350593566890,\t0.861602116376161580,\t0.865007970482110980,\t0.868393491953611370,\t0.871758259832859040,\t0.875101849436759950,\t\n0.878423850983381270,\t0.881723806262016300,\t0.885001312941312790,\t0.888255912810564040,\t0.891487173736095430,\t0.894694659858942030,\t0.897877920418977740,\t0.901036512106657030,\t\n0.904169965535402300,\t0.907277844846248630,\t0.910359673202037810,\t0.913415014743804930,\t0.916443370282649990,\t0.919444311410188670,\t0.922417331486940380,\t0.925361987203359600,\t\n0.928277771919965740,\t0.931164238601922990,\t0.934020876884460450,\t0.936847217381000520,\t0.939642757177352910,\t0.942407000809907910,\t0.945139460265636440,\t0.947839632630348210,\t\n0.950507018715143200,\t0.953141096979379650,\t0.955741371959447860,\t0.958307322114706040,\t0.960838429629802700,\t0.963334184139966960,\t0.965794049203395840,\t0.968217510730028150,\t\n0.970604017376899720,\t0.972953058779239650,\t0.975264083594083790,\t0.977536566555500030,\t0.979769956320524220,\t0.981963708996772770,\t0.984117280691862110,\t0.986230112612247470,\t\n0.988301653414964680,\t0.990331344306468960,\t0.992318630218505860,\t0.994262944906950000,\t0.996163722127676010,\t0.998020399361848830,\t0.999832402914762500,\t1.001599155366420700,\t\n1.003320086747407900,\t1.004994612187147100,\t1.006622135639190700,\t1.008202098309993700,\t1.009733878076076500,\t1.011216927319765100,\t1.012650609016418500,\t1.014034371823072400,\t\n1.015367589890956900,\t1.016649682074785200,\t1.017880033701658200,\t1.019058048725128200,\t1.020183108747005500,\t1.021254621446132700,\t1.022271949797868700,\t1.023234523832798000,\t\n\n};\n/* ----------------------------------------------------------------------\n** Test input - logarithmic chirp signal\n** ------------------------------------------------------------------- */\n\nfloat32_t testInput_f32[320] =\n  {\n    0.000000000000000061,\t0.002622410992047861,\t0.005253663973466970,\t0.007893770384930297,\t0.010542741395035495,\t0.013200587895525877,\t0.015867320496454066,\t0.018542949521290073,\t\n0.021227485001971542,\t0.023920936673895138,\t0.026623313970853074,\t0.029334626019908643,\t0.032054881636210709,\t0.034784089317753723,\t0.037522257240071598,\t0.040269393250875855,\t\n0.043025504864628375,\t0.045790599257054837,\t0.048564683259595690,\t0.051347763353792118,\t0.054139845665610427,\t0.056940935959702531,\t0.059751039633601337,\t0.062570161711849828,\t\n0.065398306840066575,\t0.068235479278943648,\t0.071081682898178900,\t0.073936921170339814,\t0.076801197164660218,\t0.079674513540768196,\t0.082556872542344922,\t0.085448275990715375,\t\n0.088348725278367082,\t0.091258221362398390,\t0.094176764757897533,\t0.097104355531246703,\t0.100040993293358240,\t0.102986677192832010,\t0.105941405909045980,\t0.108905177645166230,\t\n0.111877990121087980,\t0.114859840566297130,\t0.117850725712659680,\t0.120850641787131110,\t0.123859584504392860,\t0.126877549059407400,\t0.129904530119898690,\t0.132940521818751430,\t\n0.135985517746334080,\t0.139039510942737950,\t0.142102493889940090,\t0.145174458503884160,\t0.148255396126476810,\t0.151345297517508140,\t0.154444152846483080,\t0.157551951684374300,\t\n0.160668682995289720,\t0.163794335128054890,\t0.166928895807713030,\t0.170072352126936720,\t0.173224690537355760,\t0.176385896840798810,\t0.179555956180445340,\t0.182734853031894270,\t\n0.185922571194139130,\t0.189119093780459800,\t0.192324403209221870,\t0.195538481194587030,\t0.198761308737133020,\t0.201992866114384050,\t0.205233132871247170,\t0.208482087810360570,\t\n0.211739708982344370,\t0.215005973675965020,\t0.218280858408200220,\t0.221564338914212730,\t0.224856390137231970,\t0.228156986218334190,\t0.231466100486134670,\t0.234783705446379690,\t\n0.238109772771442410,\t0.241444273289723230,\t0.244787176974952890,\t0.248138452935395580,\t0.251498069402956710,\t0.254865993722190930,\t0.258242192339209860,\t0.261626630790492030,\t\n0.265019273691591620,\t0.268420084725748410,\t0.271829026632395280,\t0.275246061195565440,\t0.278671149232197430,\t0.282104250580339830,\t0.285545324087251580,\t0.288994327597401960,\t\n0.292451217940364990,\t0.295915950918612280,\t0.299388481295203350,\t0.302868762781368150,\t0.306356748023990040,\t0.309852388592980640,\t0.313355634968552230,\t0.316866436528383590,\t\n0.320384741534681720,\t0.323910497121136620,\t0.327443649279772870,\t0.330984142847692230,\t0.334531921493712690,\t0.338086927704900790,\t0.341649102772995210,\t0.345218386780727190,\t\n0.348794718588032520,\t0.352378035818156910,\t0.355968274843654950,\t0.359565370772282730,\t0.363169257432780890,\t0.366779867360555120,\t0.370397131783246010,\t0.374020980606193880,\t\n0.377651342397795690,\t0.381288144374756830,\t0.384931312387234990,\t0.388580770903877330,\t0.392236442996751310,\t0.395898250326170650,\t0.399566113125414350,\t0.403239950185338420,\t\n0.406919678838884410,\t0.410605214945482130,\t0.414296472875345100,\t0.417993365493664670,\t0.421695804144698540,\t0.425403698635752780,\t0.429116957221065130,\t0.432835486585582130,\t\n0.436559191828633180,\t0.440287976447505720,\t0.444021742320914510,\t0.447760389692375140,\t0.451503817153472210,\t0.455251921627031540,\t0.459004598350192470,\t0.462761740857380200,\t\n0.466523240963184150,\t0.470288988745136360,\t0.474058872526396560,\t0.477832778858340690,\t0.481610592503056990,\t0.485392196415748600,\t0.489177471727042850,\t0.492966297725213780,\t\n0.496758551838309250,\t0.500554109616195060,\t0.504352844712508190,\t0.508154628866524960,\t0.511959331884944910,\t0.515766821623591440,\t0.519576963969030530,\t0.523389622820107150,\t\n0.527204660069405030,\t0.531021935584629400,\t0.534841307189911630,\t0.538662630647041900,\t0.542485759636628150,\t0.546310545739186690,\t0.550136838416161340,\t0.553964484990880020,\t\n0.557793330629441700,\t0.561623218321546380,\t0.565453988861259300,\t0.569285480827721570,\t0.573117530565801950,\t0.576949972166696630,\t0.580782637448476910,\t0.584615355936589420,\t\n0.588447954844309340,\t0.592280259053150400,\t0.596112091093235260,\t0.599943271123626440,\t0.603773616912622660,\t0.607602943818024150,\t0.611431064767369080,\t0.615257790238142090,\t\n0.619082928237961740,\t0.622906284284749700,\t0.626727661386881850,\t0.630546860023327600,\t0.634363678123782030,\t0.638177911048790960,\t0.641989351569874020,\t0.645797789849653410,\t\n0.649603013421986450,\t0.653404807172108140,\t0.657202953316791350,\t0.660997231384523490,\t0.664787418195706640,\t0.668573287842887610,\t0.672354611671016960,\t0.676131158257749170,\t\n0.679902693393781730,\t0.683668980063242500,\t0.687429778424128110,\t0.691184845788802130,\t0.694933936604551380,\t0.698676802434213370,\t0.702413191936877570,\t0.706142850848662460,\t\n0.709865521963579990,\t0.713580945114492330,\t0.717288857154159800,\t0.720988991936399870,\t0.724681080297347790,\t0.728364850036839040,\t0.732040025899910680,\t0.735706329558433620,\t\n0.739363479592880620,\t0.743011191474238440,\t0.746649177546067850,\t0.750277147006723990,\t0.753894805891742180,\t0.757501857056394940,\t0.761098000158428880,\t0.764682931640995540,\t\n0.768256344715771980,\t0.771817929346292900,\t0.775367372231492210,\t0.778904356789468790,\t0.782428563141483460,\t0.785939668096195860,\t0.789437345134148760,\t0.792921264392515420,\t\n0.796391092650110770,\t0.799846493312681210,\t0.803287126398485760,\t0.806712648524170680,\t0.810122712890953390,\t0.813516969271127150,\t0.816895063994893090,\t0.820256639937531280,\t\n0.823601336506926020,\t0.826928789631450890,\t0.830238631748229430,\t0.833530491791779850,\t0.836803995183058700,\t0.840058763818912760,\t0.843294416061954100,\t0.846510566730867220,\t\n0.849706827091166740,\t0.852882804846411770,\t0.856038104129895340,\t0.859172325496819990,\t0.862285065916973510,\t0.865375918767918860,\t0.868444473828712590,\t0.871490317274166260,\t\n0.874513031669661770,\t0.877512195966544280,\t0.880487385498096800,\t0.883438171976119850,\t0.886364123488128100,\t0.889264804495180530,\t0.892139775830360640,\t0.894988594697921020,\t\n0.897810814673113080,\t0.900605985702712770,\t0.903373654106265470,\t0.906113362578062300,\t0.908824650189867690,\t0.911507052394417540,\t0.914160101029702910,\t0.916783324324059180,\t\n0.919376246902079860,\t0.921938389791372770,\t0.924469270430179120,\t0.926968402675872660,\t0.929435296814361430,\t0.931869459570409790,\t0.934270394118903560,\t0.936637600097074200,\t\n0.938970573617708970,\t0.941268807283364040,\t0.943531790201601380,\t0.945759008001275100,\t0.947949942849885320,\t0.950104073472023970,\t0.952220875168933280,\t0.954299819839202090,\t\n0.956340376000621160,\t0.958342008813221960,\t0.960304180103520260,\t0.962226348389994210,\t0.964107968909812760,\t0.965948493646846980,\t0.967747371360983650,\t0.969504047618768740,\t\n0.971217964825405680,\t0.972888562258134030,\t0.974515276101013520,\t0.976097539481141750,\t0.977634782506330400,\t0.979126432304266880,\t0.980571913063189360,\t0.981970646074102120,\t\n0.983322049774557390,\t0.984625539794035220,\t0.985880529000944810,\t0.987086427551279730,\t0.988242642938953360,\t0.989348580047844540,\t0.990403641205582440,\t0.991407226239099710,\t\n0.992358732531984260,\t0.993257555083659870,\t0.994103086570423680,\t0.994894717408374870,\t0.995631835818261310,\t0.996313827892278070,\t0.996940077662846650,\t0.997509967173408010,\t\n\n  };\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_graphic_equalizer_example_q31.c\n*\n* Description:   Example showing an audio graphic equalizer constructed\n*                out of Biquad filters.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n * -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup GEQ5Band Graphic Audio Equalizer Example\n *\n * \\par Description:\n * \\par\n * This example demonstrates how a 5-band graphic equalizer can be constructed\n * using the Biquad cascade functions.\n * A graphic equalizer is used in audio applications to vary the tonal quality\n * of the audio.\n *\n * \\par Block Diagram:\n * \\par\n * The design is based on a cascade of 5 filter sections.\n * \\image html GEQ_signalflow.gif\n * Each filter section is 4th order and consists of a cascade of two Biquads.\n * Each filter has a nominal gain of 0 dB (1.0 in linear units) and\n * boosts or cuts signals within a specific frequency range.\n * The edge frequencies between the 5 bands are 100, 500, 2000, and 6000 Hz.\n * Each band has an adjustable boost or cut in the range of +/- 9 dB.\n * For example, the band that extends from 500 to 2000 Hz has the response shown below:\n * \\par\n * \\image html GEQ_bandresponse.gif\n * \\par\n * With 1 dB steps, each filter has a total of 19 different settings.\n * The filter coefficients for all possible 19 settings were precomputed\n * in MATLAB and stored in a table.  With 5 different tables, there are\n * a total of 5 x 19 = 95 different 4th order filters.\n * All 95 responses are shown below:\n * \\par\n * \\image html GEQ_allbandresponse.gif\n * \\par\n * Each 4th order filter has 10 coefficents for a grand total of 950 different filter\n * coefficients that must be tabulated. The input and output data is in Q31 format.\n * For better noise performance, the two low frequency bands are implemented using the high\n * precision 32x64-bit Biquad filters. The remaining 3 high frequency bands use standard\n * 32x32-bit Biquad filters. The input signal used in the example is a logarithmic chirp.\n * \\par\n * \\image html GEQ_inputchirp.gif\n * \\par\n * The array <code>bandGains</code> specifies the gain in dB to apply in each band.\n * For example, if <code>bandGains={0, -3, 6, 4, -6};</code> then the output signal will be:\n * \\par\n * \\image html GEQ_outputchirp.gif\n * \\par\n * \\note The output chirp signal follows the gain or boost of each band.\n * \\par\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInput_f32 points to the input data\n * \\li \\c testRefOutput_f32 points to the reference output data\n * \\li \\c testOutput points to the test output data\n * \\li \\c inputQ31 temporary input buffer\n * \\li \\c outputQ31 temporary output buffer\n * \\li \\c biquadStateBand1Q31 points to state buffer for band1\n * \\li \\c biquadStateBand2Q31 points to state buffer for band2\n * \\li \\c biquadStateBand3Q31 points to state buffer for band3\n * \\li \\c biquadStateBand4Q31 points to state buffer for band4\n * \\li \\c biquadStateBand5Q31 points to state buffer for band5\n * \\li \\c coeffTable points to coefficient buffer for all bands\n * \\li \\c gainDB gain buffer which has gains applied for all the bands\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_biquad_cas_df1_32x64_init_q31()\n * - arm_biquad_cas_df1_32x64_q31()\n * - arm_biquad_cascade_df1_init_q31()\n * - arm_biquad_cascade_df1_q31()\n * - arm_scale_q31()\n * - arm_scale_f32()\n * - arm_float_to_q31()\n * - arm_q31_to_float()\n *\n * <b> Refer  </b>\n * \\link arm_graphic_equalizer_example_q31.c \\endlink\n *\n */\n\n\n/** \\example arm_graphic_equalizer_example_q31.c\n */\n\n\n#include \"arm_math.h\"\n#include \"math_helper.h\"\n\n/* Length of the overall data in the test */\n#define TESTLENGTH 320\n\n/* Block size for the underlying processing */\n#define BLOCKSIZE 32\n\n/* Total number of blocks to run */\n#define NUMBLOCKS (TESTLENGTH/BLOCKSIZE)\n\n/* Number of 2nd order Biquad stages per filter */\n#define NUMSTAGES 2\n\n#define SNR_THRESHOLD_F32  98\n\n/* -------------------------------------------------------------------\n * External Declarations for Input and Output buffers\n * ------------------------------------------------------------------- */\n\nextern float32_t testInput_f32[TESTLENGTH];\nstatic float32_t testOutput[TESTLENGTH];\n\nextern float32_t testRefOutput_f32[TESTLENGTH];\n\n/* ----------------------------------------------------------------------\n** Q31 state buffers for Band1, Band2, Band3, Band4, Band5\n** ------------------------------------------------------------------- */\n\nstatic q63_t biquadStateBand1Q31[4 * 2];\nstatic q63_t biquadStateBand2Q31[4 * 2];\nstatic q31_t biquadStateBand3Q31[4 * 2];\nstatic q31_t biquadStateBand4Q31[4 * 2];\nstatic q31_t biquadStateBand5Q31[4 * 2];\n\n/* ----------------------------------------------------------------------\n** Q31 input and output buffers\n** ------------------------------------------------------------------- */\n\nq31_t inputQ31[BLOCKSIZE];\nq31_t outputQ31[BLOCKSIZE];\n\n/* ----------------------------------------------------------------------\n** Entire coefficient table.  There are 10 coefficients per 4th order Biquad\n** cascade filter.  The first 10 coefficients correspond to the -9 dB gain\n** setting of band 1; the next 10 coefficient correspond to the -8 dB gain\n** setting of band 1; and so on.  There are 10*19=190 coefficients in total\n** for band 1 (gains = -9, -8, -7, ..., 9).  After this come the 190 coefficients\n** for band 2.\n**\n** The coefficients are in Q29 format and require a postShift of 2.\n** ------------------------------------------------------------------- */\n\nconst q31_t coeffTable[950] = {\n\n  /* Band 1, -9 dB gain */\n  535576962, -1071153923, 535576962, 1073741824, -536870912, 535576962, -1063501998, 527979313, 1060865294, -524146981,\n  /* Band 1, -8 dB gain */\n  535723226, -1071446451, 535723226, 1073741824, -536870912, 535723226, -1063568947, 527903217, 1061230578, -524503778,\n  535868593, -1071737186, 535868593, 1073741824, -536870912, 535868593, -1063627467, 527819780, 1061585502, -524850686,\n  536013181, -1072026363, 536013181, 1073741824, -536870912, 536013181, -1063677598, 527728935, 1061930361, -525187972,\n  536157109, -1072314217, 536157109, 1073741824, -536870912, 536157109, -1063719372, 527630607, 1062265438, -525515897,\n  536300492, -1072600983, 536300492, 1073741824, -536870912, 536300492, -1063752815, 527524720, 1062591011, -525834716,\n  536443447, -1072886894, 536443447, 1073741824, -536870912, 536443447, -1063777945, 527411186, 1062907350, -526144676,\n  536586091, -1073172183, 536586091, 1073741824, -536870912, 536586091, -1063794775, 527289917, 1063214717, -526446017,\n  536728541, -1073457082, 536728541, 1073741824, -536870912, 536728541, -1063803308, 527160815, 1063513366, -526738975,\n  536870912, -1073741824, 536870912, 1073741824, -536870912, 536870912, -1063803543, 527023777, 1063803543, -527023777,\n  537013321, -1074026642, 537013321, 1073741824, -536870912, 537013321, -1063795470, 526878696, 1064085490, -527300648,\n  537155884, -1074311768, 537155884, 1073741824, -536870912, 537155884, -1063779073, 526725455, 1064359439, -527569803,\n  537298718, -1074597435, 537298718, 1073741824, -536870912, 537298718, -1063754328, 526563934, 1064625617, -527831454,\n  537441939, -1074883878, 537441939, 1073741824, -536870912, 537441939, -1063721205, 526394005, 1064884245, -528085806,\n  537585666, -1075171331, 537585666, 1073741824, -536870912, 537585666, -1063679666, 526215534, 1065135536, -528333059,\n  537730015, -1075460030, 537730015, 1073741824, -536870912, 537730015, -1063629666, 526028380, 1065379699, -528573409,\n  537875106, -1075750212, 537875106, 1073741824, -536870912, 537875106, -1063571152, 525832396, 1065616936, -528807045,\n  538021057, -1076042114, 538021057, 1073741824, -536870912, 538021057, -1063504065, 525627429, 1065847444, -529034151,\n  538167989, -1076335977, 538167989, 1073741824, -536870912, 538167989, -1063428338, 525413317, 1066071412, -529254907,\n\n  /* Band 2, -9 dB gain */\n  531784976, -1055497692, 523873415, 1066213307, -529420241, 531784976, -1040357886, 509828014, 1028908252, -494627367,\n  /* Band 2, -8 dB gain */\n  532357636, -1056601982, 524400080, 1066115844, -529326645, 532357636, -1040623406, 509562600, 1030462237, -496062122,\n  532927392, -1057707729, 524931110, 1066024274, -529239070, 532927392, -1040848253, 509262081, 1031969246, -497457090,\n  533494678, -1058816094, 525467240, 1065939047, -529157961, 533494678, -1041032161, 508925950, 1033429976, -498812573,\n  534059929, -1059928204, 526009170, 1065860582, -529083734, 534059929, -1041174868, 508553717, 1034845124, -500128887,\n  534623580, -1061045148, 526557561, 1065789260, -529016764, 534623580, -1041276126, 508144920, 1036215393, -501406373,\n  535186068, -1062167969, 527113032, 1065725420, -528957385, 535186068, -1041335703, 507699125, 1037541500, -502645399,\n  535747827, -1063297666, 527676151, 1065669351, -528905879, 535747827, -1041353386, 507215934, 1038824183, -503846368,\n  536309295, -1064435183, 528247436, 1065621289, -528862476, 536309295, -1041328990, 506694984, 1040064203, -505009724,\n  536870912, -1065581413, 528827349, 1065581413, -528827349, 536870912, -1041262354, 506135953, 1041262354, -506135953,\n  537433117, -1066737194, 529416295, 1065549847, -528800610, 537433117, -1041153346, 505538564, 1042419457, -507225588,\n  537996352, -1067903307, 530014622, 1065526651, -528782316, 537996352, -1041001864, 504902578, 1043536370, -508279208,\n  538561061, -1069080480, 530622620, 1065511830, -528772462, 538561061, -1040807833, 504227800, 1044613981, -509297437,\n  539127690, -1070269387, 531240527, 1065505333, -528770987, 539127690, -1040571205, 503514074, 1045653211, -510280946,\n  539696690, -1071470656, 531868525, 1065507054, -528777778, 539696690, -1040291951, 502761277, 1046655011, -511230450,\n  540268512, -1072684867, 532506750, 1065516837, -528792672, 540268512, -1039970063, 501969320, 1047620358, -512146700,\n  540843613, -1073912567, 533155297, 1065534483, -528815459, 540843613, -1039605542, 501138139, 1048550251, -513030484,\n  541422451, -1075154268, 533814224, 1065559750, -528845892, 541422451, -1039198394, 500267687, 1049445708, -513882621,\n  542005489, -1076410460, 534483561, 1065592362, -528883686, 542005489, -1038748624, 499357932, 1050307760, -514703956,\n  518903861, -1001986830, 486725277, 1037235801, -502367695, 518903861, -945834422, 446371043, 902366163, -400700571,\n  520899989, -1005630916, 488289126, 1036926846, -502147311, 520899989, -946490935, 445581846, 907921945, -404936158,\n  522893209, -1009290002, 489869792, 1036650484, -501961419, 522893209, -947006359, 444685310, 913306106, -409075225,\n  524884763, -1012968199, 491470256, 1036407567, -501810737, 524884763, -947377809, 443679533, 918521018, -413116221,\n  526875910, -1016669649, 493093518, 1036198712, -501695739, 526875910, -947602324, 442562672, 923569247, -417057897,\n  528867927, -1020398503, 494742575, 1036024293, -501616651, 528867927, -947676875, 441332970, 928453558, -420899319,\n  530862111, -1024158905, 496420407, 1035884447, -501573457, 530862111, -947598385, 439988777, 933176909, -424639872,\n  532859778, -1027954970, 498129955, 1035779077, -501565907, 532859778, -947363742, 438528571, 937742446, -428279254,\n  534862260, -1031790763, 499874098, 1035707863, -501593525, 534862260, -946969823, 436950987, 942153486, -431817474,\n  536870912, -1035670279, 501655630, 1035670279, -501655630, 536870912, -946413508, 435254839, 946413508, -435254839,\n  538887107, -1039597419, 503477238, 1035665609, -501751354, 538887107, -945691703, 433439146, 950526127, -438591937,\n  540912240, -1043575967, 505341475, 1035692963, -501879659, 540912240, -944801359, 431503152, 954495080, -441829621,\n  542947726, -1047609569, 507250741, 1035751307, -502039364, 542947726, -943739490, 429446349, 958324201, -444968987,\n  544995000, -1051701717, 509207261, 1035839473, -502229165, 544995000, -942503190, 427268492, 962017400, -448011351,\n  547055523, -1055855728, 511213065, 1035956193, -502447657, 547055523, -941089647, 424969617, 965578640, -450958226,\n  549130774, -1060074734, 513269973, 1036100110, -502693359, 549130774, -939496155, 422550049, 969011913, -453811298,\n  551222259, -1064361672, 515379585, 1036269804, -502964731, 551222259, -937720119, 420010407, 972321228, -456572401,\n  553331507, -1068719280, 517543273, 1036463810, -503260192, 553331507, -935759057, 417351601, 975510582, -459243495,\n  555460072, -1073150100, 519762181, 1036680633, -503578144, 555460072, -933610600, 414574832, 978583948, -461826644,\n  494084017, -851422604, 404056273, 930151631, -423619864, 494084017, -673714108, 339502486, 561843007, -265801750,\n  498713542, -859177141, 406587077, 929211656, -423786402, 498713542, -673274906, 338185129, 573719128, -272222942,\n  503369016, -867012190, 409148384, 928362985, -424054784, 503369016, -672533059, 336693984, 585290277, -278599028,\n  508052536, -874935599, 411746438, 927604291, -424422151, 508052536, -671478538, 335026905, 596558312, -284920289,\n  512766286, -882955583, 414387826, 926933782, -424885216, 512766286, -670100998, 333182045, 607525792, -291177811,\n  517512534, -891080712, 417079474, 926349262, -425440318, 517512534, -668389789, 331157902, 618195914, -297363485,\n  522293635, -899319903, 419828635, 925848177, -426083491, 522293635, -666333963, 328953368, 628572440, -303470012,\n  527112032, -907682405, 422642886, 925427679, -426810526, 527112032, -663922286, 326567785, 638659631, -309490882,\n  531970251, -916177781, 425530105, 925084675, -427617023, 531970251, -661143261, 324000998, 648462180, -315420352,\n  536870912, -924815881, 428498454, 924815881, -428498454, 536870912, -657985147, 321253420, 657985147, -321253420,\n  541816719, -933606817, 431556352, 924617870, -429450209, 541816719, -654435997, 318326093, 667233900, -326985786,\n  546810467, -942560921, 434712438, 924487114, -430467639, 546810467, -650483688, 315220754, 676214053, -332613816,\n  551855042, -951688708, 437975532, 924420027, -431546101, 551855042, -646115970, 311939896, 684931422, -338134495,\n  556953421, -961000826, 441354588, 924413001, -432680993, 556953421, -641320513, 308486839, 693391970, -343545389,\n  562108672, -970508005, 444858642, 924462435, -433867780, 562108672, -636084967, 304865786, 701601770, -348844597,\n  567323959, -980220994, 448496743, 924564764, -435102022, 567323959, -630397020, 301081886, 709566963, -354030710,\n  572602539, -990150500, 452277894, 924716482, -436379394, 572602539, -624244471, 297141281, 717293726, -359102767,\n  577947763, -1000307125, 456210977, 924914158, -437695705, 577947763, -617615296, 293051155, 724788245, -364060214,\n  583363084, -1010701292, 460304674, 925154455, -439046908, 583363084, -610497723, 288819761, 732056685, -368902865,\n  387379495, -506912469, 196933274, 840112184, -347208270, 387379495, 506912469, 196933274, -840112184, -347208270,\n  401658082, -532275898, 207149427, 833765363, -343175316, 401658082, 532275898, 207149427, -833765363, -343175316,\n  416472483, -558722695, 217902617, 827270154, -339107319, 416472483, 558722695, 217902617, -827270154, -339107319,\n  431841949, -586290861, 229212798, 820624988, -335007540, 431841949, 586290861, 229212798, -820624988, -335007540,\n  447786335, -615019650, 241100489, 813828443, -330879528, 447786335, 615019650, 241100489, -813828443, -330879528,\n  464326111, -644949597, 253586805, 806879270, -326727141, 464326111, 644949597, 253586805, -806879270, -326727141,\n  481482377, -676122557, 266693475, 799776409, -322554559, 481482377, 676122557, 266693475, -799776409, -322554559,\n  499276882, -708581728, 280442865, 792519013, -318366296, 499276882, 708581728, 280442865, -792519013, -318366296,\n  517732032, -742371685, 294857996, 785106465, -314167221, 517732032, 742371685, 294857996, -785106465, -314167221,\n  536870912, -777538408, 309962566, 777538408, -309962566, 536870912, 777538408, 309962566, -777538408, -309962566,\n  556717294, -814129313, 325780968, 769814766, -305757943, 556717294, 814129313, 325780968, -769814766, -305757943,\n  577295658, -852193284, 342338310, 761935777, -301559360, 577295658, 852193284, 342338310, -761935777, -301559360,\n  598631206, -891780698, 359660433, 753902014, -297373230, 598631206, 891780698, 359660433, -753902014, -297373230,\n  620749877, -932943463, 377773927, 745714425, -293206383, 620749877, 932943463, 377773927, -745714425, -293206383,\n  643678365, -975735041, 396706151, 737374355, -289066077, 643678365, 975735041, 396706151, -737374355, -289066077,\n  667444134, -1020210487, 416485252, 728883588, -284960004, 667444134, 1020210487, 416485252, -728883588, -284960004,\n  692075438, -1066426476, 437140179, 720244375, -280896294, 692075438, 1066426476, 437140179, -720244375, -280896294,\n  717601336, -1114441339, 458700704, 711459472, -276883515, 717601336, 1114441339, 458700704, -711459472, -276883515,\n  744051710, -1164315096, 481197437, 702532174, -272930673, 744051710, 1164315096, 481197437, -702532174, -272930673\n\n};\n\n/* ----------------------------------------------------------------------\n** Desired gains, in dB, per band\n** ------------------------------------------------------------------- */\n\nint gainDB[5] = {0, -3, 6, 4, -6};\n\nfloat32_t snr;\n\n\n/* ----------------------------------------------------------------------\n * Graphic equalizer Example\n * ------------------------------------------------------------------- */\n\nint32_t main(void)\n{\n  float32_t  *inputF32, *outputF32;\n  arm_biquad_cas_df1_32x64_ins_q31 S1;\n  arm_biquad_cas_df1_32x64_ins_q31 S2;\n  arm_biquad_casd_df1_inst_q31 S3;\n  arm_biquad_casd_df1_inst_q31 S4;\n  arm_biquad_casd_df1_inst_q31 S5;\n  int i;\n  int32_t status;\n\n  inputF32 = &testInput_f32[0];\n  outputF32 = &testOutput[0];\n\n  /* Initialize the state and coefficient buffers for all Biquad sections */\n\n  arm_biquad_cas_df1_32x64_init_q31(&S1, NUMSTAGES,\n            (q31_t *) &coeffTable[190*0 + 10*(gainDB[0] + 9)],\n            &biquadStateBand1Q31[0], 2);\n\n  arm_biquad_cas_df1_32x64_init_q31(&S2, NUMSTAGES,\n            (q31_t *) &coeffTable[190*1 + 10*(gainDB[1] + 9)],\n            &biquadStateBand2Q31[0], 2);\n\n  arm_biquad_cascade_df1_init_q31(&S3, NUMSTAGES,\n          (q31_t *) &coeffTable[190*2 + 10*(gainDB[2] + 9)],\n          &biquadStateBand3Q31[0], 2);\n\n  arm_biquad_cascade_df1_init_q31(&S4, NUMSTAGES,\n          (q31_t *) &coeffTable[190*3 + 10*(gainDB[3] + 9)],\n          &biquadStateBand4Q31[0], 2);\n\n  arm_biquad_cascade_df1_init_q31(&S5, NUMSTAGES,\n          (q31_t *) &coeffTable[190*4 + 10*(gainDB[4] + 9)],\n          &biquadStateBand5Q31[0], 2);\n\n\n  /* Call the process functions and needs to change filter coefficients\n     for varying the gain of each band */\n\n  for(i=0; i < NUMBLOCKS; i++)\n  {\n\n    /* ----------------------------------------------------------------------\n    ** Convert block of input data from float to Q31\n    ** ------------------------------------------------------------------- */\n\n    arm_float_to_q31(inputF32 + (i*BLOCKSIZE), inputQ31, BLOCKSIZE);\n\n    /* ----------------------------------------------------------------------\n    ** Scale down by 1/8.  This provides additional headroom so that the\n    ** graphic EQ can apply gain.\n    ** ------------------------------------------------------------------- */\n\n    arm_scale_q31(inputQ31, 0x7FFFFFFF, -3, inputQ31, BLOCKSIZE);\n\n    /* ----------------------------------------------------------------------\n    ** Call the Q31 Biquad Cascade DF1 32x64 process function for band1, band2\n    ** ------------------------------------------------------------------- */\n\n    arm_biquad_cas_df1_32x64_q31(&S1, inputQ31, outputQ31, BLOCKSIZE);\n    arm_biquad_cas_df1_32x64_q31(&S2, outputQ31, outputQ31, BLOCKSIZE);\n\n    /* ----------------------------------------------------------------------\n    ** Call the Q31 Biquad Cascade DF1 process function for band3, band4, band5\n    ** ------------------------------------------------------------------- */\n\n    arm_biquad_cascade_df1_q31(&S3, outputQ31, outputQ31, BLOCKSIZE);\n    arm_biquad_cascade_df1_q31(&S4, outputQ31, outputQ31, BLOCKSIZE);\n    arm_biquad_cascade_df1_q31(&S5, outputQ31, outputQ31, BLOCKSIZE);\n\n    /* ----------------------------------------------------------------------\n    ** Convert Q31 result back to float\n    ** ------------------------------------------------------------------- */\n\n    arm_q31_to_float(outputQ31, outputF32 + (i * BLOCKSIZE), BLOCKSIZE);\n\n    /* ----------------------------------------------------------------------\n    ** Scale back up\n    ** ------------------------------------------------------------------- */\n\n    arm_scale_f32(outputF32 + (i * BLOCKSIZE), 8.0f, outputF32 + (i * BLOCKSIZE), BLOCKSIZE);\n  };\n\n  snr = arm_snr_f32(testRefOutput_f32, testOutput, TESTLENGTH);\n\n  if (snr < SNR_THRESHOLD_F32)\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n  else\n  {\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* ----------------------------------------------------------------------\n  ** Loop here if the signal does not match the reference output.\n  ** ------------------------------------------------------------------- */\n\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n/** \\endlink */\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:        17. January 2013\n* $Revision: \tV1.4.0  b\n*\n* Project: \t    CMSIS DSP Library\n*\n* Title:\t    math_helper.c\n*\n* Description:\tDefinition of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------\n*\t\tInclude standard header files\n* -------------------------------------------------------------------- */\n#include<math.h>\n\n/* ----------------------------------------------------------------------\n*\t\tInclude project header files\n* -------------------------------------------------------------------- */\n#include \"math_helper.h\"\n\n/**\n * @brief  Caluclation of SNR\n * @param[in]  pRef \tPointer to the reference buffer\n * @param[in]  pTest\tPointer to the test buffer\n * @param[in]  buffSize\ttotal number of samples\n * @return     SNR\n * The function Caluclates signal to noise ratio for the reference output\n * and test output\n */\n\nfloat arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)\n{\n  float EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  float SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n \t  /* Checking for a NAN value in pRef array */\n\t  test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n\n\t  /* Checking for a NAN value in pTest array */\n\t  test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n\t/* Checking for a NAN value in EnergyError */\n\ttest =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n  \t\treturn(0);\n    }\n\n\n  SNR = 10 * log10 (EnergySignal / EnergyError);\n\n  return (SNR);\n\n}\n\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,\n                            uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Converts float to fixed in q12.20 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to outputbuffer\n * @param[in]  numSamples  number of samples in the input buffer\n * @return none\n * The function converts floating point values to fixed point(q12.20) values\n */\n\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1048576.0f corresponds to pow(2, 20) */\n      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 1.0)\n        {\n          pOut[i] = 0x000FFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q31 (q31_t * input_buf,\n\t\t\t\t\t\t\t\t uint32_t blockSize,\n                                 uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q7 (q7_t * input_buf,\n\t\t\t\t\t\t\t\tuint32_t blockSize,\n                                uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n\n\n/**\n * @brief  Caluclates number of guard bits\n * @param[in]  num_adds \tnumber of additions\n * @return guard bits\n * The function Caluclates the number of guard bits\n * depending on the numtaps\n */\n\nuint32_t arm_calc_guard_bits (uint32_t num_adds)\n{\n  uint32_t i = 1, j = 0;\n\n  if (num_adds == 1)\n    {\n      return (0);\n    }\n\n  while (i < num_adds)\n    {\n      i = i * 2;\n      j++;\n    }\n\n  return (j);\n}\n\n/**\n * @brief  Apply guard bits to buffer\n * @param[in,out]  pIn         pointer to input buffer\n * @param[in]      numSamples  number of samples in the input buffer\n * @param[in]      guard_bits  guard bits\n * @return none\n */\n\nvoid arm_apply_guard_bits (float32_t *pIn,\n\t\t\t\t\t\t   uint32_t numSamples,\n\t\t\t\t\t\t   uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);\n    }\n}\n\n/**\n * @brief  Calculates pow(2, numShifts)\n * @param[in]  numShifts \tnumber of shifts\n * @return pow(2, numShifts)\n */\nuint32_t arm_calc_2pow(uint32_t numShifts)\n{\n\n  uint32_t i, val = 1;\n\n  for (i = 0; i < numShifts; i++)\n    {\n      val = val * 2;\n    }\n\n  return(val);\n}\n\n\n\n/**\n * @brief  Converts float to fixed q14\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 16384.0f corresponds to pow(2, 14) */\n      pOut[i] = (q15_t) (pIn[i] * 16384.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFF;\n        }\n\n    }\n\n}\n\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 4.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n\n/**\n * @brief  Converts float to fixed q28 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t/* 268435456.0f corresponds to pow(2, 28) */\n      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 8.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Clip the float values to +/- 1\n * @param[in,out]  pIn           input buffer\n * @param[in]      numSamples    number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_clip_f32 (float *pIn, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      if (pIn[i] > 1.0f)\n\t  {\n\t    pIn[i] = 1.0;\n\t  }\n\t  else if ( pIn[i] < -1.0f)\n\t  {\n\t    pIn[i] = -1.0;\n\t  }\n\n    }\n}\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.h",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*  \n* Project: \t    CMSIS DSP Library \n*\n* Title:\t    math_helper.h\n* \n* Description:\tPrototypes of all helper functions required.  \n*\n* Target Processor: Cortex-M4/Cortex-M3\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n* -------------------------------------------------------------------- */\n\n\n#include \"arm_math.h\"\n\n#ifndef MATH_HELPER_H\n#define MATH_HELPER_H\n\nfloat arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  \nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);\nvoid arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_clip_f32(float *pIn, uint32_t numSamples);\nuint32_t arm_calc_guard_bits(uint32_t num_adds);\nvoid arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);\nuint32_t arm_calc_2pow(uint32_t guard_bits);\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_linear_interp_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_data.c",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*   \n* Project: \t    CMSIS DSP Library   \n* Title:\t     \tarm_linear_interp_data.c\n*   \n* Description:\t Data file used for example.  Generation method described\n*               below\n*   \n* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n * -------------------------------------------------------------------- */\n \n/* ---------------------------------------------------------------------- \n* Table generated from following MATLAB Command\n* x = -pi: 0.00005 : (2*pi - 0.00005);\n* y = sin(x);\n* where pi value is 3.141592653589793\n* --------------------------------------------------------------------*/\n\nfloat arm_linear_interep_table[188495] =  {\n\n\n-0.000000000000000122,\t-0.000049999999979173,\t-0.000099999999833667,\t-0.000149999999437717,\t-0.000199999998666767,\t-0.000249999997395817,\t-0.000299999995500311,\t-0.000349999992854362,\t\n-0.000399999989333412,\t-0.000449999984812462,\t-0.000499999979166956,\t-0.000549999972271007,\t-0.000599999964000057,\t-0.000649999954229107,\t-0.000699999942833602,\t-0.000749999929687653,\t\n-0.000799999914666704,\t-0.000849999897645755,\t-0.000899999878500250,\t-0.000949999857104302,\t-0.000999999833333354,\t-0.001049999807062851,\t-0.001099999778166904,\t-0.001149999746520957,\t\n-0.001199999712000011,\t-0.001249999674479510,\t-0.001299999633833566,\t-0.001349999589937622,\t-0.001399999542666680,\t-0.001449999491896183,\t-0.001499999437500243,\t-0.001549999379354304,\t\n-0.001599999317333367,\t-0.001649999251312876,\t-0.001699999181166942,\t-0.001749999106771011,\t-0.001799999028000082,\t-0.001849998944729599,\t-0.001899998856833675,\t-0.001949998764187754,\t\n-0.001999998666666836,\t-0.002049998564146365,\t-0.002099998456500453,\t-0.002149998343604546,\t-0.002199998225334087,\t-0.002249998101563188,\t-0.002299997972167294,\t-0.002349997837021405,\t\n-0.002399997696000966,\t-0.002449997548980088,\t-0.002499997395834216,\t-0.002549997236438351,\t-0.002599997070667937,\t-0.002649996898397086,\t-0.002699996719501243,\t-0.002749996533855408,\t\n-0.002799996341335026,\t-0.002849996141814208,\t-0.002899995935168401,\t-0.002949995721272604,\t-0.002999995500002261,\t-0.003049995271231486,\t-0.003099995034835722,\t-0.003149994790690415,\t\n-0.003199994538669677,\t-0.003249994278648952,\t-0.003299994010503243,\t-0.003349993734107991,\t-0.003399993449337312,\t-0.003449993156066649,\t-0.003499992854171003,\t-0.003549992543525819,\t\n-0.003599992224005209,\t-0.003649991895484619,\t-0.003699991557839049,\t-0.003749991210943944,\t-0.003799990854673418,\t-0.003849990488902914,\t-0.003899990113507434,\t-0.003949989728362423,\t\n-0.003999989333341993,\t-0.004049988928321590,\t-0.004099988513176658,\t-0.004149988087781312,\t-0.004199987652010995,\t-0.004249987205740709,\t-0.004299986748845899,\t-0.004349986281200678,\t\n-0.004399985802680492,\t-0.004449985313160341,\t-0.004499984812515671,\t-0.004549984300620594,\t-0.004599983777350557,\t-0.004649983242580561,\t-0.004699982696186050,\t-0.004749982138041138,\t\n-0.004799981568021272,\t-0.004849980986001451,\t-0.004899980391857122,\t-0.004949979785462398,\t-0.004999979166692725,\t-0.005049978535423547,\t-0.005099977891528979,\t-0.005149977234884466,\t\n-0.005199976565365011,\t-0.005249975882846058,\t-0.005299975187201721,\t-0.005349974478307446,\t-0.005399973756038235,\t-0.005449973020269535,\t-0.005499972270875456,\t-0.005549971507731448,\t\n-0.005599970730712511,\t-0.005649969939694091,\t-0.005699969134550302,\t-0.005749968315156590,\t-0.005799967481387958,\t-0.005849966633119851,\t-0.005899965770226383,\t-0.005949964892583000,\t\n-0.005999964000064706,\t-0.006049963092546945,\t-0.006099962169903833,\t-0.006149961232010816,\t-0.006199960278743339,\t-0.006249959309975518,\t-0.006299958325582797,\t-0.006349957325440182,\t\n-0.006399956309423117,\t-0.006449955277405718,\t-0.006499954229263430,\t-0.006549953164871257,\t-0.006599952084104644,\t-0.006649950986837708,\t-0.006699949872945895,\t-0.006749948742304206,\t\n-0.006799947594788089,\t-0.006849946430271660,\t-0.006899945248630365,\t-0.006949944049739206,\t-0.006999942833473632,\t-0.007049941599707755,\t-0.007099940348317025,\t-0.007149939079176889,\t\n-0.007199937792161461,\t-0.007249936487146187,\t-0.007299935164006074,\t-0.007349933822616566,\t-0.007399932462851779,\t-0.007449931084587162,\t-0.007499929687697716,\t-0.007549928272058891,\t\n-0.007599926837544801,\t-0.007649925384030893,\t-0.007699923911392173,\t-0.007749922419504085,\t-0.007799920908240749,\t-0.007849919377477610,\t-0.007899917827089672,\t-0.007949916256952384,\t\n-0.007999914666939863,\t-0.008049913056927554,\t-0.008099911426790906,\t-0.008149909776404035,\t-0.008199908105642390,\t-0.008249906414380975,\t-0.008299904702495238,\t-0.008349902969859295,\t\n-0.008399901216348595,\t-0.008449899441838141,\t-0.008499897646203384,\t-0.008549895829318437,\t-0.008599893991058752,\t-0.008649892131299332,\t-0.008699890249915625,\t-0.008749888346781748,\t\n-0.008799886421773151,\t-0.008849884474764837,\t-0.008899882505632256,\t-0.008949880514249525,\t-0.008999878500492093,\t-0.009049876464234965,\t-0.009099874405353590,\t-0.009149872323722084,\t\n-0.009199870219215898,\t-0.009249868091710479,\t-0.009299865941079948,\t-0.009349863767199750,\t-0.009399861569944894,\t-0.009449859349190827,\t-0.009499857104811669,\t-0.009549854836682867,\t\n-0.009599852544679429,\t-0.009649850228676803,\t-0.009699847888549109,\t-0.009749845524171793,\t-0.009799843135419864,\t-0.009849840722168771,\t-0.009899838284292632,\t-0.009949835821666898,\t\n-0.009999833334166574,\t-0.010049830821667110,\t-0.010099828284042626,\t-0.010149825721168572,\t-0.010199823132920397,\t-0.010249820519172219,\t-0.010299817879799491,\t-0.010349815214677217,\t\n-0.010399812523680850,\t-0.010449809806684508,\t-0.010499807063563642,\t-0.010549804294193258,\t-0.010599801498448806,\t-0.010649798676204407,\t-0.010699795827335511,\t-0.010749792951717126,\t\n-0.010799790049224703,\t-0.010849787119732359,\t-0.010899784163115548,\t-0.010949781179249277,\t-0.010999778168008997,\t-0.011049775129268828,\t-0.011099772062904221,\t-0.011149768968790628,\t\n-0.011199765846802169,\t-0.011249762696814294,\t-0.011299759518702013,\t-0.011349756312340777,\t-0.011399753077604706,\t-0.011449749814369253,\t-0.011499746522509425,\t-0.011549743201900674,\t\n-0.011599739852417123,\t-0.011649736473934221,\t-0.011699733066326979,\t-0.011749729629470847,\t-0.011799726163239948,\t-0.011849722667509732,\t-0.011899719142155211,\t-0.011949715587051834,\t\n-0.011999712002073726,\t-0.012049708387096337,\t-0.012099704741995123,\t-0.012149701066644201,\t-0.012199697360919026,\t-0.012249693624694609,\t-0.012299689857846402,\t-0.012349686060248525,\t\n-0.012399682231776434,\t-0.012449678372305137,\t-0.012499674481710089,\t-0.012549670559865410,\t-0.012599666606646555,\t-0.012649662621928532,\t-0.012699658605586799,\t-0.012749654557495473,\t\n-0.012799650477530011,\t-0.012849646365565424,\t-0.012899642221477166,\t-0.012949638045139357,\t-0.012999633836427452,\t-0.013049629595216463,\t-0.013099625321381845,\t-0.013149621014797719,\t\n-0.013199616675339540,\t-0.013249612302882765,\t-0.013299607897301514,\t-0.013349603458471243,\t-0.013399598986266964,\t-0.013449594480564131,\t-0.013499589941236869,\t-0.013549585368160630,\t\n-0.013599580761210430,\t-0.013649576120261721,\t-0.013699571445188626,\t-0.013749566735866605,\t-0.013799561992170667,\t-0.013849557213976266,\t-0.013899552401157530,\t-0.013949547553589911,\t\n-0.013999542671148425,\t-0.014049537753708525,\t-0.014099532801144338,\t-0.014149527813331319,\t-0.014199522790144923,\t-0.014249517731459277,\t-0.014299512637149837,\t-0.014349507507091614,\t\n-0.014399502341160067,\t-0.014449497139229321,\t-0.014499491901174831,\t-0.014549486626871612,\t-0.014599481316195120,\t-0.014649475969019481,\t-0.014699470585220153,\t-0.014749465164672147,\t\n-0.014799459707250922,\t-0.014849454212830605,\t-0.014899448681286651,\t-0.014949443112494076,\t-0.014999437506328338,\t-0.015049431862663561,\t-0.015099426181375206,\t-0.015149420462338728,\t\n-0.015199414705428255,\t-0.015249408910519246,\t-0.015299403077486715,\t-0.015349397206206119,\t-0.015399391296551587,\t-0.015449385348398575,\t-0.015499379361622101,\t-0.015549373336097624,\t\n-0.015599367271699268,\t-0.015649361168302494,\t-0.015699355025782315,\t-0.015749348844014195,\t-0.015799342622872262,\t-0.015849336362231969,\t-0.015899330061968333,\t-0.015949323721956819,\t\n-0.015999317342071551,\t-0.016049310922187990,\t-0.016099304462181149,\t-0.016149297961926493,\t-0.016199291421298147,\t-0.016249284840171574,\t-0.016299278218422232,\t-0.016349271555924253,\t\n-0.016399264852553091,\t-0.016449258108183769,\t-0.016499251322691748,\t-0.016549244495951149,\t-0.016599237627837445,\t-0.016649230718225643,\t-0.016699223766991209,\t-0.016749216774008271,\t\n-0.016799209739152290,\t-0.016849202662298290,\t-0.016899195543321723,\t-0.016949188382096723,\t-0.016999181178498753,\t-0.017049173932402829,\t-0.017099166643684417,\t-0.017149159312217641,\t\n-0.017199151937877969,\t-0.017249144520540861,\t-0.017299137060080447,\t-0.017349129556372193,\t-0.017399122009291113,\t-0.017449114418712670,\t-0.017499106784510998,\t-0.017549099106561560,\t\n-0.017599091384739373,\t-0.017649083618919904,\t-0.017699075808977279,\t-0.017749067954786969,\t-0.017799060056223986,\t-0.017849052113163795,\t-0.017899044125480532,\t-0.017949036093049660,\t\n-0.017999028015746196,\t-0.018049019893445605,\t-0.018099011726022022,\t-0.018149003513350907,\t-0.018198995255307732,\t-0.018248986951766622,\t-0.018298978602603044,\t-0.018348970207692019,\t\n-0.018398961766909014,\t-0.018448953280128161,\t-0.018498944747224924,\t-0.018548936168074327,\t-0.018598927542551831,\t-0.018648918870531574,\t-0.018698910151889018,\t-0.018748901386499189,\t\n-0.018798892574237547,\t-0.018848883714978233,\t-0.018898874808596710,\t-0.018948865854967998,\t-0.018998856853967565,\t-0.019048847805469546,\t-0.019098838709349409,\t-0.019148829565482174,\t\n-0.019198820373743309,\t-0.019248811134006949,\t-0.019298801846148562,\t-0.019348792510043615,\t-0.019398783125566241,\t-0.019448773692591910,\t-0.019498764210995646,\t-0.019548754680652914,\t\n-0.019598745101437852,\t-0.019648735473225928,\t-0.019698725795892161,\t-0.019748716069312028,\t-0.019798706293359659,\t-0.019848696467910525,\t-0.019898686592839651,\t-0.019948676668022504,\t\n-0.019998666693333219,\t-0.020048656668647271,\t-0.020098646593839677,\t-0.020148636468785914,\t-0.020198626293360115,\t-0.020248616067437750,\t-0.020298605790894288,\t-0.020348595463603868,\t\n-0.020398585085441959,\t-0.020448574656283587,\t-0.020498564176004225,\t-0.020548553644478006,\t-0.020598543061580404,\t-0.020648532427186443,\t-0.020698521741171597,\t-0.020748511003410002,\t\n-0.020798500213777129,\t-0.020848489372148005,\t-0.020898478478398104,\t-0.020948467532401559,\t-0.020998456534033847,\t-0.021048445483169996,\t-0.021098434379685473,\t-0.021148423223454418,\t\n-0.021198412014352307,\t-0.021248400752254610,\t-0.021298389437035468,\t-0.021348378068570352,\t-0.021398366646734290,\t-0.021448355171402755,\t-0.021498343642449892,\t-0.021548332059751166,\t\n-0.021598320423181612,\t-0.021648308732616698,\t-0.021698296987930570,\t-0.021748285188998701,\t-0.021798273335696117,\t-0.021848261427898294,\t-0.021898249465479372,\t-0.021948237448314829,\t\n-0.021998225376279691,\t-0.022048213249249434,\t-0.022098201067098200,\t-0.022148188829701463,\t-0.022198176536934698,\t-0.022248164188672048,\t-0.022298151784788989,\t-0.022348139325160547,\t\n-0.022398126809662203,\t-0.022448114238168098,\t-0.022498101610553708,\t-0.022548088926694063,\t-0.022598076186464637,\t-0.022648063389739580,\t-0.022698050536394364,\t-0.022748037626304021,\t\n-0.022798024659344031,\t-0.022848011635388531,\t-0.022897998554313004,\t-0.022947985415992481,\t-0.022997972220302438,\t-0.023047958967117019,\t-0.023097945656311705,\t-0.023147932287761526,\t\n-0.023197918861341957,\t-0.023247905376927152,\t-0.023297891834392580,\t-0.023347878233613725,\t-0.023397864574464730,\t-0.023447850856821072,\t-0.023497837080557787,\t-0.023547823245550353,\t\n-0.023597809351672917,\t-0.023647795398800960,\t-0.023697781386809513,\t-0.023747767315574056,\t-0.023797753184968740,\t-0.023847738994869038,\t-0.023897724745149989,\t-0.023947710435687070,\t\n-0.023997696066354435,\t-0.024047681637027557,\t-0.024097667147581475,\t-0.024147652597891669,\t-0.024197637987832289,\t-0.024247623317278814,\t-0.024297608586106724,\t-0.024347593794190169,\t\n-0.024397578941404627,\t-0.024447564027625143,\t-0.024497549052727188,\t-0.024547534016584920,\t-0.024597518919073816,\t-0.024647503760068912,\t-0.024697488539445693,\t-0.024747473257078312,\t\n-0.024797457912842245,\t-0.024847442506612534,\t-0.024897427038264662,\t-0.024947411507672778,\t-0.024997395914712364,\t-0.025047380259258463,\t-0.025097364541186551,\t-0.025147348760370787,\t\n-0.025197332916686650,\t-0.025247317010009623,\t-0.025297301040213861,\t-0.025347285007174848,\t-0.025397268910767622,\t-0.025447252750867667,\t-0.025497236527349136,\t-0.025547220240087511,\t\n-0.025597203888957840,\t-0.025647187473835601,\t-0.025697170994594950,\t-0.025747154451111372,\t-0.025797137843259908,\t-0.025847121170916042,\t-0.025897104433953929,\t-0.025947087632249056,\t\n-0.025997070765676464,\t-0.026047053834111638,\t-0.026097036837428735,\t-0.026147019775503239,\t-0.026197002648210635,\t-0.026246985455425084,\t-0.026296968197022069,\t-0.026346950872876633,\t\n-0.026396933482864263,\t-0.026446916026859116,\t-0.026496898504736681,\t-0.026546880916371998,\t-0.026596863261640555,\t-0.026646845540416509,\t-0.026696827752575352,\t-0.026746809897992125,\t\n-0.026796791976542320,\t-0.026846773988100085,\t-0.026896755932540921,\t-0.026946737809739864,\t-0.026996719619572406,\t-0.027046701361912708,\t-0.027096683036636253,\t-0.027146664643618094,\t\n-0.027196646182733715,\t-0.027246627653857276,\t-0.027296609056864270,\t-0.027346590391630184,\t-0.027396571658029178,\t-0.027446552855936744,\t-0.027496533985227927,\t-0.027546515045778219,\t\n-0.027596496037461778,\t-0.027646476960154098,\t-0.027696457813730226,\t-0.027746438598065654,\t-0.027796419313034542,\t-0.027846399958512381,\t-0.027896380534374220,\t-0.027946361040495551,\t\n-0.027996341476750536,\t-0.028046321843014668,\t-0.028096302139162994,\t-0.028146282365071010,\t-0.028196262520612875,\t-0.028246242605664086,\t-0.028296222620100130,\t-0.028346202563795178,\t\n-0.028396182436624718,\t-0.028446162238463801,\t-0.028496141969187923,\t-0.028546121628671248,\t-0.028596101216789266,\t-0.028646080733417033,\t-0.028696060178430041,\t-0.028746039551702456,\t\n-0.028796018853109770,\t-0.028845998082527038,\t-0.028895977239829753,\t-0.028945956324892084,\t-0.028995935337589523,\t-0.029045914277797125,\t-0.029095893145390381,\t-0.029145871940243463,\t\n-0.029195850662231865,\t-0.029245829311231087,\t-0.029295807887115288,\t-0.029345786389759970,\t-0.029395764819040188,\t-0.029445743174831437,\t-0.029495721457007882,\t-0.029545699665445027,\t\n-0.029595677800017921,\t-0.029645655860602062,\t-0.029695633847071624,\t-0.029745611759302099,\t-0.029795589597168545,\t-0.029845567360546461,\t-0.029895545049310013,\t-0.029945522663334705,\t\n-0.029995500202495588,\t-0.030045477666668166,\t-0.030095455055726604,\t-0.030145432369546407,\t-0.030195409608002627,\t-0.030245386770970769,\t-0.030295363858325000,\t-0.030345340869940819,\t\n-0.030395317805693732,\t-0.030445294665457905,\t-0.030495271449108841,\t-0.030545248156521602,\t-0.030595224787571682,\t-0.030645201342133260,\t-0.030695177820081833,\t-0.030745154221292460,\t\n-0.030795130545640648,\t-0.030845106793000565,\t-0.030895082963247715,\t-0.030945059056257156,\t-0.030995035071904393,\t-0.031045011010063600,\t-0.031094986870610280,\t-0.031144962653419490,\t\n-0.031194938358366741,\t-0.031244913985326202,\t-0.031294889534173378,\t-0.031344865004783770,\t-0.031394840397031561,\t-0.031444815710792245,\t-0.031494790945940897,\t-0.031544766102353010,\t\n-0.031594741179902762,\t-0.031644716178465669,\t-0.031694691097916783,\t-0.031744665938131605,\t-0.031794640698984328,\t-0.031844615380350445,\t-0.031894589982105023,\t-0.031944564504123571,\t\n-0.031994538946280265,\t-0.032044513308450616,\t-0.032094487590509674,\t-0.032144461792332962,\t-0.032194435913794651,\t-0.032244409954770251,\t-0.032294383915135269,\t-0.032344357794763884,\t\n-0.032394331593531604,\t-0.032444305311313495,\t-0.032494278947985067,\t-0.032544252503420502,\t-0.032594225977495297,\t-0.032644199370084531,\t-0.032694172681063713,\t-0.032744145910307020,\t\n-0.032794119057689960,\t-0.032844092123087601,\t-0.032894065106375457,\t-0.032944038007427706,\t-0.032994010826119857,\t-0.033043983562326990,\t-0.033093956215924598,\t-0.033143928786786875,\t\n-0.033193901274789335,\t-0.033243873679807037,\t-0.033293846001715498,\t-0.033343818240388901,\t-0.033393790395702755,\t-0.033443762467532584,\t-0.033493734455752558,\t-0.033543706360238200,\t\n-0.033593678180864575,\t-0.033643649917507193,\t-0.033693621570040251,\t-0.033743593138339245,\t-0.033793564622279268,\t-0.033843536021735815,\t-0.033893507336583077,\t-0.033943478566696578,\t\n-0.033993449711951375,\t-0.034043420772222999,\t-0.034093391747385619,\t-0.034143362637314767,\t-0.034193333441885507,\t-0.034243304160973355,\t-0.034293274794452495,\t-0.034343245342198452,\t\n-0.034393215804086739,\t-0.034443186179991543,\t-0.034493156469788386,\t-0.034543126673352333,\t-0.034593096790558907,\t-0.034643066821282299,\t-0.034693036765398019,\t-0.034743006622781153,\t\n-0.034792976393307209,\t-0.034842946076850380,\t-0.034892915673286187,\t-0.034942885182489711,\t-0.034992854604336460,\t-0.035042823938700625,\t-0.035092793185457737,\t-0.035142762344482860,\t\n-0.035192731415651525,\t-0.035242700398837916,\t-0.035292669293917563,\t-0.035342638100765975,\t-0.035392606819257343,\t-0.035442575449267197,\t-0.035492543990670616,\t-0.035542512443343117,\t\n-0.035592480807158891,\t-0.035642449081993467,\t-0.035692417267721918,\t-0.035742385364219767,\t-0.035792353371361212,\t-0.035842321289021775,\t-0.035892289117076537,\t-0.035942256855401013,\t\n-0.035992224503869408,\t-0.036042192062357238,\t-0.036092159530739590,\t-0.036142126908891986,\t-0.036192094196688625,\t-0.036242061394005022,\t-0.036292028500716271,\t-0.036341995516697888,\t\n-0.036391962441824077,\t-0.036441929275970356,\t-0.036491896019012260,\t-0.036541862670823974,\t-0.036591829231281035,\t-0.036641795700258523,\t-0.036691762077631966,\t-0.036741728363275557,\t\n-0.036791694557064832,\t-0.036841660658874870,\t-0.036891626668581194,\t-0.036941592586058017,\t-0.036991558411180854,\t-0.037041524143824792,\t-0.037091489783865367,\t-0.037141455331176770,\t\n-0.037191420785634539,\t-0.037241386147113753,\t-0.037291351415489948,\t-0.037341316590637316,\t-0.037391281672431401,\t-0.037441246660747718,\t-0.037491211555460480,\t-0.037541176356445209,\t\n-0.037591141063576999,\t-0.037641105676731380,\t-0.037691070195782550,\t-0.037741034620606045,\t-0.037790998951076960,\t-0.037840963187070815,\t-0.037890927328461818,\t-0.037940891375125504,\t\n-0.037990855326936968,\t-0.038040819183771730,\t-0.038090782945504005,\t-0.038140746612009321,\t-0.038190710183162765,\t-0.038240673658839881,\t-0.038290637038914874,\t-0.038340600323263266,\t\n-0.038390563511760609,\t-0.038440526604281093,\t-0.038490489600700263,\t-0.038540452500893212,\t-0.038590415304735469,\t-0.038640378012101247,\t-0.038690340622866082,\t-0.038740303136905060,\t\n-0.038790265554093727,\t-0.038840227874306285,\t-0.038890190097418273,\t-0.038940152223304790,\t-0.038990114251841367,\t-0.039040076182902214,\t-0.039090038016362870,\t-0.039139999752098434,\t\n-0.039189961389984436,\t-0.039239922929895095,\t-0.039289884371705948,\t-0.039339845715292532,\t-0.039389806960529065,\t-0.039439768107291072,\t-0.039489729155453658,\t-0.039539690104892368,\t\n-0.039589650955481413,\t-0.039639611707096324,\t-0.039689572359612207,\t-0.039739532912904607,\t-0.039789493366847728,\t-0.039839453721317121,\t-0.039889413976187872,\t-0.039939374131335532,\t\n-0.039989334186634320,\t-0.040039294141959766,\t-0.040089253997186977,\t-0.040139213752191497,\t-0.040189173406847543,\t-0.040239132961030655,\t-0.040289092414616375,\t-0.040339051767478921,\t\n-0.040389011019493840,\t-0.040438970170536229,\t-0.040488929220481633,\t-0.040538888169204278,\t-0.040588847016579700,\t-0.040638805762483000,\t-0.040688764406789736,\t-0.040738722949374112,\t\n-0.040788681390111679,\t-0.040838639728877552,\t-0.040888597965547259,\t-0.040938556099995034,\t-0.040988514132096414,\t-0.041038472061726512,\t-0.041088429888760873,\t-0.041138387613073715,\t\n-0.041188345234540590,\t-0.041238302753036603,\t-0.041288260168437299,\t-0.041338217480616897,\t-0.041388174689450961,\t-0.041438131794815029,\t-0.041488088796583319,\t-0.041538045694631390,\t\n-0.041588002488834347,\t-0.041637959179067742,\t-0.041687915765205794,\t-0.041737872247124060,\t-0.041787828624697640,\t-0.041837784897802099,\t-0.041887741066311650,\t-0.041937697130101842,\t\n-0.041987653089047797,\t-0.042037608943025065,\t-0.042087564691907858,\t-0.042137520335571749,\t-0.042187475873891836,\t-0.042237431306743671,\t-0.042287386634001493,\t-0.042337341855540847,\t\n-0.042387296971237283,\t-0.042437251980965041,\t-0.042487206884599664,\t-0.042537161682016274,\t-0.042587116373090421,\t-0.042637070957696331,\t-0.042687025435709569,\t-0.042736979807005242,\t\n-0.042786934071458907,\t-0.042836888228944790,\t-0.042886842279338457,\t-0.042936796222515020,\t-0.042986750058350030,\t-0.043036703786717728,\t-0.043086657407493664,\t-0.043136610920552952,\t\n-0.043186564325771164,\t-0.043236517623022518,\t-0.043286470812182579,\t-0.043336423893126905,\t-0.043386376865729728,\t-0.043436329729866607,\t-0.043486282485412663,\t-0.043536235132243459,\t\n-0.043586187670233222,\t-0.043636140099257516,\t-0.043686092419191462,\t-0.043736044629910618,\t-0.043785996731289217,\t-0.043835948723202824,\t-0.043885900605526565,\t-0.043935852378135992,\t\n-0.043985804040905345,\t-0.044035755593710195,\t-0.044085707036425649,\t-0.044135658368927279,\t-0.044185609591089324,\t-0.044235560702787342,\t-0.044285511703896455,\t-0.044335462594292240,\t\n-0.044385413373848923,\t-0.044435364042442069,\t-0.044485314599947250,\t-0.044535265046238698,\t-0.044585215381191985,\t-0.044635165604682239,\t-0.044685115716585018,\t-0.044735065716774568,\t\n-0.044785015605126446,\t-0.044834965381515789,\t-0.044884915045818166,\t-0.044934864597907805,\t-0.044984814037660290,\t-0.045034763364950735,\t-0.045084712579654712,\t-0.045134661681646468,\t\n-0.045184610670801574,\t-0.045234559546995151,\t-0.045284508310102771,\t-0.045334456959998673,\t-0.045384405496558436,\t-0.045434353919657632,\t-0.045484302229170492,\t-0.045534250424972604,\t\n-0.045584198506939087,\t-0.045634146474945521,\t-0.045684094328866137,\t-0.045734042068576522,\t-0.045783989693951803,\t-0.045833937204867552,\t-0.045883884601198015,\t-0.045933831882818764,\t\n-0.045983779049604941,\t-0.046033726101432110,\t-0.046083673038174518,\t-0.046133619859707743,\t-0.046183566565906921,\t-0.046233513156647622,\t-0.046283459631804101,\t-0.046333405991251929,\t\n-0.046383352234866684,\t-0.046433298362522614,\t-0.046483244374095303,\t-0.046533190269459880,\t-0.046583136048491923,\t-0.046633081711065685,\t-0.046683027257056739,\t-0.046732972686340225,\t\n-0.046782917998791723,\t-0.046832863194285486,\t-0.046882808272697092,\t-0.046932753233901670,\t-0.046982698077774818,\t-0.047032642804190769,\t-0.047082587413025116,\t-0.047132531904152994,\t\n-0.047182476277449988,\t-0.047232420532790344,\t-0.047282364670049655,\t-0.047332308689103049,\t-0.047382252589826118,\t-0.047432196372093109,\t-0.047482140035779608,\t-0.047532083580761206,\t\n-0.047582027006912150,\t-0.047631970314108020,\t-0.047681913502223970,\t-0.047731856571135579,\t-0.047781799520717101,\t-0.047831742350844128,\t-0.047881685061391802,\t-0.047931627652235700,\t\n-0.047981570123250085,\t-0.048031512474310548,\t-0.048081454705292230,\t-0.048131396816070718,\t-0.048181338806520271,\t-0.048231280676516476,\t-0.048281222425934481,\t-0.048331164054649871,\t\n-0.048381105562536907,\t-0.048431046949471181,\t-0.048480988215328286,\t-0.048530929359982468,\t-0.048580870383309334,\t-0.048630811285184018,\t-0.048680752065482120,\t-0.048730692724077894,\t\n-0.048780633260846945,\t-0.048830573675664408,\t-0.048880513968405877,\t-0.048930454138945624,\t-0.048980394187159236,\t-0.049030334112921854,\t-0.049080273916109085,\t-0.049130213596595189,\t\n-0.049180153154255758,\t-0.049230092588965949,\t-0.049280031900601345,\t-0.049329971089036223,\t-0.049379910154146167,\t-0.049429849095806784,\t-0.049479787913892334,\t-0.049529726608278417,\t\n-0.049579665178840181,\t-0.049629603625453225,\t-0.049679541947991818,\t-0.049729480146331551,\t-0.049779418220347586,\t-0.049829356169915524,\t-0.049879293994909625,\t-0.049929231695205488,\t\n-0.049979169270678275,\t-0.050029106721203580,\t-0.050079044046655675,\t-0.050128981246910162,\t-0.050178918321842195,\t-0.050228855271327380,\t-0.050278792095239978,\t-0.050328728793455596,\t\n-0.050378665365849389,\t-0.050428601812296969,\t-0.050478538132672598,\t-0.050528474326851883,\t-0.050578410394710421,\t-0.050628346336122496,\t-0.050678282150963705,\t-0.050728217839109205,\t\n-0.050778153400434602,\t-0.050828088834814177,\t-0.050878024142123529,\t-0.050927959322237815,\t-0.050977894375032654,\t-0.051027829300382306,\t-0.051077764098162393,\t-0.051127698768248062,\t\n-0.051177633310514933,\t-0.051227567724837275,\t-0.051277502011090700,\t-0.051327436169150371,\t-0.051377370198891888,\t-0.051427304100189544,\t-0.051477237872918934,\t-0.051527171516955676,\t\n-0.051577105032174046,\t-0.051627038418449650,\t-0.051676971675657664,\t-0.051726904803673687,\t-0.051776837802372008,\t-0.051826770671628226,\t-0.051876703411317525,\t-0.051926636021315510,\t\n-0.051976568501496463,\t-0.052026500851735991,\t-0.052076433071909262,\t-0.052126365161891904,\t-0.052176297121558184,\t-0.052226228950783722,\t-0.052276160649443688,\t-0.052326092217413696,\t\n-0.052376023654568026,\t-0.052425954960782298,\t-0.052475886135932133,\t-0.052525817179891805,\t-0.052575748092536935,\t-0.052625678873742691,\t-0.052675609523384695,\t-0.052725540041337234,\t\n-0.052775470427475921,\t-0.052825400681675933,\t-0.052875330803812882,\t-0.052925260793761066,\t-0.052975190651396095,\t-0.053025120376593154,\t-0.053075049969227850,\t-0.053124979429174476,\t\n-0.053174908756308654,\t-0.053224837950505567,\t-0.053274767011640821,\t-0.053324695939588718,\t-0.053374624734224871,\t-0.053424553395424908,\t-0.053474481923063123,\t-0.053524410317015131,\t\n-0.053574338577156107,\t-0.053624266703361685,\t-0.053674194695506154,\t-0.053724122553465134,\t-0.053774050277113808,\t-0.053823977866327796,\t-0.053873905320981401,\t-0.053923832640950242,\t\n-0.053973759826109496,\t-0.054023686876334805,\t-0.054073613791500441,\t-0.054123540571482054,\t-0.054173467216154805,\t-0.054223393725394337,\t-0.054273320099074943,\t-0.054323246337072244,\t\n-0.054373172439261881,\t-0.054423098405518136,\t-0.054473024235716642,\t-0.054522949929732598,\t-0.054572875487441615,\t-0.054622800908718003,\t-0.054672726193437382,\t-0.054722651341474957,\t\n-0.054772576352706340,\t-0.054822501227005840,\t-0.054872425964249086,\t-0.054922350564311266,\t-0.054972275027068015,\t-0.055022199352393636,\t-0.055072123540163755,\t-0.055122047590253562,\t\n-0.055171971502538698,\t-0.055221895276893460,\t-0.055271818913193486,\t-0.055321742411313962,\t-0.055371665771130528,\t-0.055421588992517486,\t-0.055471512075350470,\t-0.055521435019505121,\t\n-0.055571357824855741,\t-0.055621280491277958,\t-0.055671203018646982,\t-0.055721125406838441,\t-0.055771047655726637,\t-0.055820969765187224,\t-0.055870891735095379,\t-0.055920813565326750,\t\n-0.055970735255755640,\t-0.056020656806257701,\t-0.056070578216708113,\t-0.056120499486982521,\t-0.056170420616955243,\t-0.056220341606501911,\t-0.056270262455497724,\t-0.056320183163818323,\t\n-0.056370103731338023,\t-0.056420024157932465,\t-0.056469944443477291,\t-0.056519864587846809,\t-0.056569784590916668,\t-0.056619704452562064,\t-0.056669624172658639,\t-0.056719543751080716,\t\n-0.056769463187703935,\t-0.056819382482403487,\t-0.056869301635055033,\t-0.056919220645532884,\t-0.056969139513712679,\t-0.057019058239469622,\t-0.057068976822679369,\t-0.057118895263216229,\t\n-0.057168813560955850,\t-0.057218731715773435,\t-0.057268649727544640,\t-0.057318567596143774,\t-0.057368485321446491,\t-0.057418402903328433,\t-0.057468320341663930,\t-0.057518237636328622,\t\n-0.057568154787197720,\t-0.057618071794146873,\t-0.057667988657050410,\t-0.057717905375783973,\t-0.057767821950222766,\t-0.057817738380242456,\t-0.057867654665717354,\t-0.057917570806523114,\t\n-0.057967486802534947,\t-0.058017402653628508,\t-0.058067318359678120,\t-0.058117233920559432,\t-0.058167149336147660,\t-0.058217064606318460,\t-0.058266979730946154,\t-0.058316894709906399,\t\n-0.058366809543074410,\t-0.058416724230325838,\t-0.058466638771535011,\t-0.058516553166577591,\t-0.058566467415329226,\t-0.058616381517664254,\t-0.058666295473458328,\t-0.058716209282586661,\t\n-0.058766122944924913,\t-0.058816036460347415,\t-0.058865949828729829,\t-0.058915863049947365,\t-0.058965776123875685,\t-0.059015689050389127,\t-0.059065601829363344,\t-0.059115514460673556,\t\n-0.059165426944195423,\t-0.059215339279803283,\t-0.059265251467372798,\t-0.059315163506779178,\t-0.059365075397898093,\t-0.059414987140603878,\t-0.059464898734772197,\t-0.059514810180278710,\t\n-0.059564721476997755,\t-0.059614632624804993,\t-0.059664543623575657,\t-0.059714454473185401,\t-0.059764365173508562,\t-0.059814275724420815,\t-0.059864186125797379,\t-0.059914096377513916,\t\n-0.059964006479444776,\t-0.060013916431465614,\t-0.060063826233451661,\t-0.060113735885278588,\t-0.060163645386820737,\t-0.060213554737953763,\t-0.060263463938552905,\t-0.060313372988493832,\t\n-0.060363281887650888,\t-0.060413190635899734,\t-0.060463099233116047,\t-0.060513007679174169,\t-0.060562915973949770,\t-0.060612824117318082,\t-0.060662732109154779,\t-0.060712639949334200,\t\n-0.060762547637732020,\t-0.060812455174223477,\t-0.060862362558684234,\t-0.060912269790988648,\t-0.060962176871012380,\t-0.061012083798630670,\t-0.061061990573719201,\t-0.061111897196152308,\t\n-0.061161803665805668,\t-0.061211709982554520,\t-0.061261616146274546,\t-0.061311522156840083,\t-0.061361428014126820,\t-0.061411333718009983,\t-0.061461239268365254,\t-0.061511144665066991,\t\n-0.061561049907990856,\t-0.061610954997012544,\t-0.061660859932006401,\t-0.061710764712848115,\t-0.061760669339412912,\t-0.061810573811576473,\t-0.061860478129213164,\t-0.061910382292198654,\t\n-0.061960286300408195,\t-0.062010190153717455,\t-0.062060093852000807,\t-0.062109997395133919,\t-0.062159900782992036,\t-0.062209804015450842,\t-0.062259707092384702,\t-0.062309610013669289,\t\n-0.062359512779179851,\t-0.062409415388792078,\t-0.062459317842380319,\t-0.062509220139820271,\t-0.062559122280987617,\t-0.062609024265756708,\t-0.062658926094003239,\t-0.062708827765602451,\t\n-0.062758729280430040,\t-0.062808630638360369,\t-0.062858531839269122,\t-0.062908432883031537,\t-0.062958333769523311,\t-0.063008234498618809,\t-0.063058135070193727,\t-0.063108035484123304,\t\n-0.063157935740283236,\t-0.063207835838547888,\t-0.063257735778792956,\t-0.063307635560893666,\t-0.063357535184725741,\t-0.063407434650163547,\t-0.063457333957082751,\t-0.063507233105359065,\t\n-0.063557132094866853,\t-0.063607030925481811,\t-0.063656929597079193,\t-0.063706828109534694,\t-0.063756726462722679,\t-0.063806624656518859,\t-0.063856522690798473,\t-0.063906420565437216,\t\n-0.063956318280309468,\t-0.064006215835290925,\t-0.064056113230256839,\t-0.064106010465082922,\t-0.064155907539643522,\t-0.064205804453814366,\t-0.064255701207470692,\t-0.064305597800488210,\t\n-0.064355494232741298,\t-0.064405390504105639,\t-0.064455286614456500,\t-0.064505182563669605,\t-0.064555078351619291,\t-0.064604973978181296,\t-0.064654869443231303,\t-0.064704764746643703,\t\n-0.064754659888294180,\t-0.064804554868058001,\t-0.064854449685810889,\t-0.064904344341427209,\t-0.064954238834782671,\t-0.065004133165752528,\t-0.065054027334212505,\t-0.065103921340036966,\t\n-0.065153815183101621,\t-0.065203708863281737,\t-0.065253602380453024,\t-0.065303495734489861,\t-0.065353388925267972,\t-0.065403281952663039,\t-0.065453174816549470,\t-0.065503067516802946,\t\n-0.065552960053298776,\t-0.065602852425912628,\t-0.065652744634518923,\t-0.065702636678993342,\t-0.065752528559211182,\t-0.065802420275048137,\t-0.065852311826378601,\t-0.065902203213078284,\t\n-0.065952094435022451,\t-0.066001985492086829,\t-0.066051876384145808,\t-0.066101767111075085,\t-0.066151657672749956,\t-0.066201548069046129,\t-0.066251438299837970,\t-0.066301328365001230,\t\n-0.066351218264411163,\t-0.066401107997943493,\t-0.066450997565472611,\t-0.066500886966874243,\t-0.066550776202024098,\t-0.066600665270796555,\t-0.066650554173067367,\t-0.066700442908711785,\t\n-0.066750331477605535,\t-0.066800219879623021,\t-0.066850108114639956,\t-0.066899996182531618,\t-0.066949884083173733,\t-0.066999771816440706,\t-0.067049659382208235,\t-0.067099546780351613,\t\n-0.067149434010746578,\t-0.067199321073267509,\t-0.067249207967790145,\t-0.067299094694189751,\t-0.067348981252342066,\t-0.067398867642121496,\t-0.067448753863403738,\t-0.067498639916064113,\t\n-0.067548525799978318,\t-0.067598411515020773,\t-0.067648297061067189,\t-0.067698182437993318,\t-0.067748067645673551,\t-0.067797952683983601,\t-0.067847837552798773,\t-0.067897722251994794,\t\n-0.067947606781446068,\t-0.067997491141028335,\t-0.068047375330616861,\t-0.068097259350087397,\t-0.068147143199314336,\t-0.068197026878173431,\t-0.068246910386539947,\t-0.068296793724289637,\t\n-0.068346676891296892,\t-0.068396559887437453,\t-0.068446442712587069,\t-0.068496325366620134,\t-0.068546207849412372,\t-0.068596090160839104,\t-0.068645972300776043,\t-0.068695854269097620,\t\n-0.068745736065679547,\t-0.068795617690397146,\t-0.068845499143126140,\t-0.068895380423740937,\t-0.068945261532117288,\t-0.068995142468130488,\t-0.069045023231656275,\t-0.069094903822569068,\t\n-0.069144784240744592,\t-0.069194664486058155,\t-0.069244544558385496,\t-0.069294424457601034,\t-0.069344304183580521,\t-0.069394183736199239,\t-0.069444063115332938,\t-0.069493942320856039,\t\n-0.069543821352644294,\t-0.069593700210573428,\t-0.069643578894517874,\t-0.069693457404353371,\t-0.069743335739955226,\t-0.069793213901199178,\t-0.069843091887959660,\t-0.069892969700112398,\t\n-0.069942847337532726,\t-0.069992724800096370,\t-0.070042602087677777,\t-0.070092479200152658,\t-0.070142356137396347,\t-0.070192232899284598,\t-0.070242109485691817,\t-0.070291985896493756,\t\n-0.070341862131565736,\t-0.070391738190783509,\t-0.070441614074021483,\t-0.070491489781155436,\t-0.070541365312061094,\t-0.070591240666612903,\t-0.070641115844686603,\t-0.070690990846157514,\t\n-0.070740865670901404,\t-0.070790740318792678,\t-0.070840614789707101,\t-0.070890489083519984,\t-0.070940363200107090,\t-0.070990237139342854,\t-0.071040110901103015,\t-0.071089984485262894,\t\n-0.071139857891698272,\t-0.071189731120283539,\t-0.071239604170894505,\t-0.071289477043406435,\t-0.071339349737695137,\t-0.071389222253635004,\t-0.071439094591101829,\t-0.071488966749971350,\t\n-0.071538838730118015,\t-0.071588710531417590,\t-0.071638582153745384,\t-0.071688453596977161,\t-0.071738324860987371,\t-0.071788195945651764,\t-0.071838066850845664,\t-0.071887937576444835,\t\n-0.071937808122323726,\t-0.071987678488358103,\t-0.072037548674423274,\t-0.072087418680395018,\t-0.072137288506147770,\t-0.072187158151557310,\t-0.072237027616498944,\t-0.072286896900848469,\t\n-0.072336766004480288,\t-0.072386634927270210,\t-0.072436503669093530,\t-0.072486372229826040,\t-0.072536240609342176,\t-0.072586108807517716,\t-0.072635976824228413,\t-0.072685844659348742,\t\n-0.072735712312754441,\t-0.072785579784320875,\t-0.072835447073923795,\t-0.072885314181437663,\t-0.072935181106738231,\t-0.072985047849700863,\t-0.073034914410201310,\t-0.073084780788114020,\t\n-0.073134646983314788,\t-0.073184512995678935,\t-0.073234378825082241,\t-0.073284244471399168,\t-0.073334109934505468,\t-0.073383975214276503,\t-0.073433840310588042,\t-0.073483705223314544,\t\n-0.073533569952331776,\t-0.073583434497515518,\t-0.073633298858740245,\t-0.073683163035881710,\t-0.073733027028815276,\t-0.073782890837416723,\t-0.073832754461560485,\t-0.073882617901122369,\t\n-0.073932481155977711,\t-0.073982344226002292,\t-0.074032207111070572,\t-0.074082069811058332,\t-0.074131932325840921,\t-0.074181794655294106,\t-0.074231656799292375,\t-0.074281518757711509,\t\n-0.074331380530426830,\t-0.074381242117314159,\t-0.074431103518247929,\t-0.074480964733103935,\t-0.074530825761757985,\t-0.074580686604084512,\t-0.074630547259959337,\t-0.074680407729257797,\t\n-0.074730268011855672,\t-0.074780128107627436,\t-0.074829988016448870,\t-0.074879847738195351,\t-0.074929707272742646,\t-0.074979566619965229,\t-0.075029425779738895,\t-0.075079284751938993,\t\n-0.075129143536441331,\t-0.075179002133120371,\t-0.075228860541851891,\t-0.075278718762511271,\t-0.075328576794974303,\t-0.075378434639115435,\t-0.075428292294810489,\t-0.075478149761934815,\t\n-0.075528007040364192,\t-0.075577864129973124,\t-0.075627721030637390,\t-0.075677577742232813,\t-0.075727434264633825,\t-0.075777290597716263,\t-0.075827146741355475,\t-0.075877002695427256,\t\n-0.075926858459806096,\t-0.075976714034367787,\t-0.076026569418987694,\t-0.076076424613541610,\t-0.076126279617904039,\t-0.076176134431950759,\t-0.076225989055557150,\t-0.076275843488599004,\t\n-0.076325697730950798,\t-0.076375551782488366,\t-0.076425405643087044,\t-0.076475259312622654,\t-0.076525112790969671,\t-0.076574966078003903,\t-0.076624819173601172,\t-0.076674672077635939,\t\n-0.076724524789984039,\t-0.076774377310520822,\t-0.076824229639122096,\t-0.076874081775662365,\t-0.076923933720017421,\t-0.076973785472062642,\t-0.077023637031673850,\t-0.077073488398725520,\t\n-0.077123339573093461,\t-0.077173190554653062,\t-0.077223041343280133,\t-0.077272891938849148,\t-0.077322742341235942,\t-0.077372592550315866,\t-0.077422442565964769,\t-0.077472292388057112,\t\n-0.077522142016468731,\t-0.077571991451075434,\t-0.077621840691751709,\t-0.077671689738373392,\t-0.077721538590815847,\t-0.077771387248954896,\t-0.077821235712665041,\t-0.077871083981822090,\t\n-0.077920932056301434,\t-0.077970779935978882,\t-0.078020627620728950,\t-0.078070475110427445,\t-0.078120322404949746,\t-0.078170169504171688,\t-0.078220016407967760,\t-0.078269863116213798,\t\n-0.078319709628785178,\t-0.078369555945557723,\t-0.078419402066405935,\t-0.078469247991205637,\t-0.078519093719832234,\t-0.078568939252161518,\t-0.078618784588068036,\t-0.078668629727427580,\t\n-0.078718474670115987,\t-0.078768319416007773,\t-0.078818163964978760,\t-0.078868008316904326,\t-0.078917852471660319,\t-0.078967696429121242,\t-0.079017540189162933,\t-0.079067383751660766,\t\n-0.079117227116490579,\t-0.079167070283526875,\t-0.079216913252645516,\t-0.079266756023721852,\t-0.079316598596631746,\t-0.079366440971249716,\t-0.079416283147451569,\t-0.079466125125113155,\t\n-0.079515966904108989,\t-0.079565808484314909,\t-0.079615649865606306,\t-0.079665491047859027,\t-0.079715332030947578,\t-0.079765172814747792,\t-0.079815013399135076,\t-0.079864853783985265,\t\n-0.079914693969172876,\t-0.079964533954573758,\t-0.080014373740063302,\t-0.080064213325517358,\t-0.080114052710810443,\t-0.080163891895818393,\t-0.080213730880416598,\t-0.080263569664480935,\t\n-0.080313408247885895,\t-0.080363246630507340,\t-0.080413084812220675,\t-0.080462922792901737,\t-0.080512760572425041,\t-0.080562598150666451,\t-0.080612435527501802,\t-0.080662272702805626,\t\n-0.080712109676453772,\t-0.080761946448321645,\t-0.080811783018285080,\t-0.080861619386218636,\t-0.080911455551998121,\t-0.080961291515498982,\t-0.081011127276597053,\t-0.081060962835166867,\t\n-0.081110798191084271,\t-0.081160633344224672,\t-0.081210468294463947,\t-0.081260303041676599,\t-0.081310137585738490,\t-0.081359971926525040,\t-0.081409806063912113,\t-0.081459639997774225,\t\n-0.081509473727987225,\t-0.081559307254426547,\t-0.081609140576968053,\t-0.081658973695486248,\t-0.081708806609857021,\t-0.081758639319956222,\t-0.081808471825658369,\t-0.081858304126839351,\t\n-0.081908136223374561,\t-0.081957968115139876,\t-0.082007799802009840,\t-0.082057631283860288,\t-0.082107462560566669,\t-0.082157293632004830,\t-0.082207124498049317,\t-0.082256955158575992,\t\n-0.082306785613460276,\t-0.082356615862578045,\t-0.082406445905803830,\t-0.082456275743013493,\t-0.082506105374082914,\t-0.082555934798886635,\t-0.082605764017300506,\t-0.082655593029199975,\t\n-0.082705421834460904,\t-0.082755250432957839,\t-0.082805078824566655,\t-0.082854907009162759,\t-0.082904734986622042,\t-0.082954562756819047,\t-0.083004390319629640,\t-0.083054217674929265,\t\n-0.083104044822593787,\t-0.083153871762497750,\t-0.083203698494517031,\t-0.083253525018527078,\t-0.083303351334403752,\t-0.083353177442021600,\t-0.083403003341256499,\t-0.083452829031983894,\t\n-0.083502654514079663,\t-0.083552479787418352,\t-0.083602304851875850,\t-0.083652129707328007,\t-0.083701954353649410,\t-0.083751778790715936,\t-0.083801603018403004,\t-0.083851427036586504,\t\n-0.083901250845141009,\t-0.083951074443942370,\t-0.084000897832866059,\t-0.084050721011787927,\t-0.084100543980582573,\t-0.084150366739125848,\t-0.084200189287293198,\t-0.084250011624960527,\t\n-0.084299833752002382,\t-0.084349655668294651,\t-0.084399477373712783,\t-0.084449298868132669,\t-0.084499120151428866,\t-0.084548941223477253,\t-0.084598762084153289,\t-0.084648582733332867,\t\n-0.084698403170890543,\t-0.084748223396702210,\t-0.084798043410643759,\t-0.084847863212589761,\t-0.084897682802416108,\t-0.084947502179998247,\t-0.084997321345212068,\t-0.085047140297932144,\t\n-0.085096959038034381,\t-0.085146777565394210,\t-0.085196595879887538,\t-0.085246413981388935,\t-0.085296231869774294,\t-0.085346049544919075,\t-0.085395867006699169,\t-0.085445684254989163,\t\n-0.085495501289664946,\t-0.085545318110602411,\t-0.085595134717676144,\t-0.085644951110762035,\t-0.085694767289735560,\t-0.085744583254472595,\t-0.085794399004847741,\t-0.085844214540736888,\t\n-0.085894029862015484,\t-0.085943844968559460,\t-0.085993659860243390,\t-0.086043474536943151,\t-0.086093288998534245,\t-0.086143103244892549,\t-0.086192917275892650,\t-0.086242731091410452,\t\n-0.086292544691321443,\t-0.086342358075501502,\t-0.086392171243825228,\t-0.086441984196168525,\t-0.086491796932406870,\t-0.086541609452416152,\t-0.086591421756070971,\t-0.086641233843247234,\t\n-0.086691045713820872,\t-0.086740857367666430,\t-0.086790668804659854,\t-0.086840480024676606,\t-0.086890291027592603,\t-0.086940101813282433,\t-0.086989912381622000,\t-0.087039722732486793,\t\n-0.087089532865752717,\t-0.087139342781294371,\t-0.087189152478987661,\t-0.087238961958708075,\t-0.087288771220331532,\t-0.087338580263732604,\t-0.087388389088787238,\t-0.087438197695370895,\t\n-0.087488006083359507,\t-0.087537814252627646,\t-0.087587622203051260,\t-0.087637429934506253,\t-0.087687237446867239,\t-0.087737044740010137,\t-0.087786851813810407,\t-0.087836658668143996,\t\n-0.087886465302885491,\t-0.087936271717910838,\t-0.087986077913095498,\t-0.088035883888315403,\t-0.088085689643445153,\t-0.088135495178360682,\t-0.088185300492937477,\t-0.088235105587051457,\t\n-0.088284910460577223,\t-0.088334715113390735,\t-0.088384519545367440,\t-0.088434323756383298,\t-0.088484127746312896,\t-0.088533931515032194,\t-0.088583735062417082,\t-0.088633538388342203,\t\n-0.088683341492683476,\t-0.088733144375316403,\t-0.088782947036116902,\t-0.088832749474959588,\t-0.088882551691720407,\t-0.088932353686274848,\t-0.088982155458498843,\t-0.089031957008267007,\t\n-0.089081758335455272,\t-0.089131559439939154,\t-0.089181360321594572,\t-0.089231160980296154,\t-0.089280961415919832,\t-0.089330761628341096,\t-0.089380561617435905,\t-0.089430361383078874,\t\n-0.089480160925145935,\t-0.089529960243512591,\t-0.089579759338054787,\t-0.089629558208647153,\t-0.089679356855165607,\t-0.089729155277486122,\t-0.089778953475483314,\t-0.089828751449033115,\t\n-0.089878549198011026,\t-0.089928346722293023,\t-0.089978144021753706,\t-0.090027941096269021,\t-0.090077737945714498,\t-0.090127534569966056,\t-0.090177330968898350,\t-0.090227127142387301,\t\n-0.090276923090308450,\t-0.090326718812537732,\t-0.090376514308949760,\t-0.090426309579420522,\t-0.090476104623825493,\t-0.090525899442040647,\t-0.090575694033940626,\t-0.090625488399401349,\t\n-0.090675282538298804,\t-0.090725076450507619,\t-0.090774870135903726,\t-0.090824663594362670,\t-0.090874456825760383,\t-0.090924249829971521,\t-0.090974042606872044,\t-0.091023835156337454,\t\n-0.091073627478243713,\t-0.091123419572465461,\t-0.091173211438878660,\t-0.091223003077358839,\t-0.091272794487781944,\t-0.091322585670022619,\t-0.091372376623956836,\t-0.091422167349460112,\t\n-0.091471957846408408,\t-0.091521748114676379,\t-0.091571538154139959,\t-0.091621327964675148,\t-0.091671117546156575,\t-0.091720906898460214,\t-0.091770696021461567,\t-0.091820484915036638,\t\n-0.091870273579060052,\t-0.091920062013407786,\t-0.091969850217955354,\t-0.092019638192578745,\t-0.092069425937152602,\t-0.092119213451552884,\t-0.092169000735655135,\t-0.092218787789335330,\t\n-0.092268574612468124,\t-0.092318361204929464,\t-0.092368147566594908,\t-0.092417933697340429,\t-0.092467719597040671,\t-0.092517505265571606,\t-0.092567290702808780,\t-0.092617075908628180,\t\n-0.092666860882904434,\t-0.092716645625513544,\t-0.092766430136331485,\t-0.092816214415232912,\t-0.092865998462093799,\t-0.092915782276789677,\t-0.092965565859196561,\t-0.093015349209189080,\t\n-0.093065132326643221,\t-0.093114915211434529,\t-0.093164697863439005,\t-0.093214480282531278,\t-0.093264262468587364,\t-0.093314044421482792,\t-0.093363826141093550,\t-0.093413607627294296,\t\n-0.093463388879961029,\t-0.093513169898969725,\t-0.093562950684195054,\t-0.093612731235513016,\t-0.093662511552799144,\t-0.093712291635929437,\t-0.093762071484778553,\t-0.093811851099222493,\t\n-0.093861630479136815,\t-0.093911409624397493,\t-0.093961188534879211,\t-0.094010967210457944,\t-0.094060745651009275,\t-0.094110523856409167,\t-0.094160301826532330,\t-0.094210079561254725,\t\n-0.094259857060451924,\t-0.094309634323999914,\t-0.094359411351773378,\t-0.094409188143648320,\t-0.094458964699500297,\t-0.094508741019205297,\t-0.094558517102638004,\t-0.094608292949674419,\t\n-0.094658068560190545,\t-0.094707843934061051,\t-0.094757619071161953,\t-0.094807393971368809,\t-0.094857168634557607,\t-0.094906943060603058,\t-0.094956717249381151,\t-0.095006491200767443,\t\n-0.095056264914637950,\t-0.095106038390867356,\t-0.095155811629331663,\t-0.095205584629906442,\t-0.095255357392467710,\t-0.095305129916890136,\t-0.095354902203049735,\t-0.095404674250822080,\t\n-0.095454446060083187,\t-0.095504217630707725,\t-0.095553988962571723,\t-0.095603760055550754,\t-0.095653530909520820,\t-0.095703301524356618,\t-0.095753071899934178,\t-0.095802842036129487,\t\n-0.095852611932817244,\t-0.095902381589873478,\t-0.095952151007173761,\t-0.096001920184594094,\t-0.096051689122009204,\t-0.096101457819295077,\t-0.096151226276327315,\t-0.096200994492981917,\t\n-0.096250762469133597,\t-0.096300530204658383,\t-0.096350297699431819,\t-0.096400064953329978,\t-0.096449831966227514,\t-0.096499598738000486,\t-0.096549365268524895,\t-0.096599131557675438,\t\n-0.096648897605328174,\t-0.096698663411358646,\t-0.096748428975642911,\t-0.096798194298055668,\t-0.096847959378472931,\t-0.096897724216770301,\t-0.096947488812823793,\t-0.096997253166508118,\t\n-0.097047017277699321,\t-0.097096781146272987,\t-0.097146544772105131,\t-0.097196308155070479,\t-0.097246071295045047,\t-0.097295834191904434,\t-0.097345596845524685,\t-0.097395359255780509,\t\n-0.097445121422547923,\t-0.097494883345702540,\t-0.097544645025120391,\t-0.097594406460676186,\t-0.097644167652245956,\t-0.097693928599705757,\t-0.097743689302930301,\t-0.097793449761795617,\t\n-0.097843209976177306,\t-0.097892969945951411,\t-0.097942729670992656,\t-0.097992489151177073,\t-0.098042248386380260,\t-0.098092007376478274,\t-0.098141766121345828,\t-0.098191524620858978,\t\n-0.098241282874893296,\t-0.098291040883324854,\t-0.098340798646028377,\t-0.098390556162879894,\t-0.098440313433755033,\t-0.098490070458529824,\t-0.098539827237078992,\t-0.098589583769278594,\t\n-0.098639340055004243,\t-0.098689096094131970,\t-0.098738851886536527,\t-0.098788607432093958,\t-0.098838362730680307,\t-0.098888117782170298,\t-0.098937872586440004,\t-0.098987627143365023,\t\n-0.099037381452821427,\t-0.099087135514683927,\t-0.099136889328828595,\t-0.099186642895131030,\t-0.099236396213467304,\t-0.099286149283712141,\t-0.099335902105741614,\t-0.099385654679431334,\t\n-0.099435407004657347,\t-0.099485159081294405,\t-0.099534910909218566,\t-0.099584662488305900,\t-0.099634413818431120,\t-0.099684164899470323,\t-0.099733915731299097,\t-0.099783666313793540,\t\n-0.099833416646828363,\t-0.099883166730279652,\t-0.099932916564023019,\t-0.099982666147934537,\t-0.100032415481888940,\t-0.100082164565762330,\t-0.100131913399430280,\t-0.100181661982768900,\t\n-0.100231410315652930,\t-0.100281158397958430,\t-0.100330906229561020,\t-0.100380653810336800,\t-0.100430401140160510,\t-0.100480148218908200,\t-0.100529895046455530,\t-0.100579641622678570,\t\n-0.100629387947452050,\t-0.100679134020652070,\t-0.100728879842154700,\t-0.100778625411834670,\t-0.100828370729568100,\t-0.100878115795230590,\t-0.100927860608698240,\t-0.100977605169845790,\t\n-0.101027349478549330,\t-0.101077093534684480,\t-0.101126837338127360,\t-0.101176580888752700,\t-0.101226324186436580,\t-0.101276067231054660,\t-0.101325810022483000,\t-0.101375552560596400,\t\n-0.101425294845270890,\t-0.101475036876382150,\t-0.101524778653806270,\t-0.101574520177418000,\t-0.101624261447093430,\t-0.101674002462708630,\t-0.101723743224138390,\t-0.101773483731258800,\t\n-0.101823223983945500,\t-0.101872963982074590,\t-0.101922703725520810,\t-0.101972443214160280,\t-0.102022182447868630,\t-0.102071921426521980,\t-0.102121660149995090,\t-0.102171398618164040,\t\n-0.102221136830904490,\t-0.102270874788092550,\t-0.102320612489602970,\t-0.102370349935311870,\t-0.102420087125094890,\t-0.102469824058828120,\t-0.102519560736386360,\t-0.102569297157645710,\t\n-0.102619033322482250,\t-0.102668769230770760,\t-0.102718504882387360,\t-0.102768240277207680,\t-0.102817975415107860,\t-0.102867710295962640,\t-0.102917444919648160,\t-0.102967179286040060,\t\n-0.103016913395014450,\t-0.103066647246446120,\t-0.103116380840211170,\t-0.103166114176185280,\t-0.103215847254244530,\t-0.103265580074263730,\t-0.103315312636118970,\t-0.103365044939685930,\t\n-0.103414776984840720,\t-0.103464508771458140,\t-0.103514240299414280,\t-0.103563971568584810,\t-0.103613702578845860,\t-0.103663433330072220,\t-0.103713163822139990,\t-0.103762894054925280,\t\n-0.103812624028302910,\t-0.103862353742148970,\t-0.103912083196339160,\t-0.103961812390749570,\t-0.104011541325255020,\t-0.104061269999731600,\t-0.104110998414055010,\t-0.104160726568101370,\t\n-0.104210454461745470,\t-0.104260182094863430,\t-0.104309909467330940,\t-0.104359636579024130,\t-0.104409363429817770,\t-0.104459090019588000,\t-0.104508816348210510,\t-0.104558542415561420,\t\n-0.104608268221515530,\t-0.104657993765948980,\t-0.104707719048737880,\t-0.104757444069757040,\t-0.104807168828882590,\t-0.104856893325990230,\t-0.104906617560956070,\t-0.104956341533654920,\t\n-0.105006065243962910,\t-0.105055788691755750,\t-0.105105511876909560,\t-0.105155234799299140,\t-0.105204957458800640,\t-0.105254679855289730,\t-0.105304401988642590,\t-0.105354123858733980,\t\n-0.105403845465440070,\t-0.105453566808636550,\t-0.105503287888199540,\t-0.105553008704003890,\t-0.105602729255925700,\t-0.105652449543841150,\t-0.105702169567625020,\t-0.105751889327153460,\t\n-0.105801608822302190,\t-0.105851328052947320,\t-0.105901047018963700,\t-0.105950765720227480,\t-0.106000484156614320,\t-0.106050202328000400,\t-0.106099920234260540,\t-0.106149637875270870,\t\n-0.106199355250907110,\t-0.106249072361045400,\t-0.106298789205560570,\t-0.106348505784328760,\t-0.106398222097225700,\t-0.106447938144127520,\t-0.106497653924909050,\t-0.106547369439446440,\t\n-0.106597084687615420,\t-0.106646799669292120,\t-0.106696514384351390,\t-0.106746228832669360,\t-0.106795943014122210,\t-0.106845656928584750,\t-0.106895370575933170,\t-0.106945083956043140,\t\n-0.106994797068790850,\t-0.107044509914051120,\t-0.107094222491700130,\t-0.107143934801613580,\t-0.107193646843667630,\t-0.107243358617737110,\t-0.107293070123698210,\t-0.107342781361426620,\t\n-0.107392492330798530,\t-0.107442203031688760,\t-0.107491913463973490,\t-0.107541623627528430,\t-0.107591333522229770,\t-0.107641043147952320,\t-0.107690752504572260,\t-0.107740461591965760,\t\n-0.107790170410007670,\t-0.107839878958574160,\t-0.107889587237540940,\t-0.107939295246784210,\t-0.107989002986178780,\t-0.108038710455600860,\t-0.108088417654926150,\t-0.108138124584030840,\t\n-0.108187831242789790,\t-0.108237537631079140,\t-0.108287243748774660,\t-0.108336949595752520,\t-0.108386655171887540,\t-0.108436360477055950,\t-0.108486065511133430,\t-0.108535770273996220,\t\n-0.108585474765519120,\t-0.108635178985578340,\t-0.108684882934050060,\t-0.108734586610809120,\t-0.108784290015731710,\t-0.108833993148693590,\t-0.108883696009570920,\t-0.108933398598238570,\t\n-0.108983100914572720,\t-0.109032802958449120,\t-0.109082504729743970,\t-0.109132206228332100,\t-0.109181907454089720,\t-0.109231608406892570,\t-0.109281309086616830,\t-0.109331009493137380,\t\n-0.109380709626330420,\t-0.109430409486071680,\t-0.109480109072237350,\t-0.109529808384702320,\t-0.109579507423342760,\t-0.109629206188034430,\t-0.109678904678653530,\t-0.109728602895074930,\t\n-0.109778300837174810,\t-0.109827998504829380,\t-0.109877695897913520,\t-0.109927393016303430,\t-0.109977089859874840,\t-0.110026786428503970,\t-0.110076482722065700,\t-0.110126178740436220,\t\n-0.110175874483491300,\t-0.110225569951107120,\t-0.110275265143158580,\t-0.110324960059521890,\t-0.110374654700072780,\t-0.110424349064687480,\t-0.110474043153240870,\t-0.110523736965609160,\t\n-0.110573430501668540,\t-0.110623123761293910,\t-0.110672816744361450,\t-0.110722509450746960,\t-0.110772201880326650,\t-0.110821894032975390,\t-0.110871585908569380,\t-0.110921277506984410,\t\n-0.110970968828096710,\t-0.111020659871781110,\t-0.111070350637913890,\t-0.111120041126370780,\t-0.111169731337028010,\t-0.111219421269760480,\t-0.111269110924444390,\t-0.111318800300955510,\t\n-0.111368489399170090,\t-0.111418178218962990,\t-0.111467866760210450,\t-0.111517555022788250,\t-0.111567243006572600,\t-0.111616930711438400,\t-0.111666618137261860,\t-0.111716305283919240,\t\n-0.111765992151285400,\t-0.111815678739236590,\t-0.111865365047648570,\t-0.111915051076397580,\t-0.111964736825358540,\t-0.112014422294407640,\t-0.112064107483420690,\t-0.112113792392273910,\t\n-0.112163477020842210,\t-0.112213161369001820,\t-0.112262845436628520,\t-0.112312529223598560,\t-0.112362212729786830,\t-0.112411895955069560,\t-0.112461578899322550,\t-0.112511261562422040,\t\n-0.112560943944242940,\t-0.112610626044661470,\t-0.112660307863553450,\t-0.112709989400795090,\t-0.112759670656261320,\t-0.112809351629828370,\t-0.112859032321372480,\t-0.112908712730768570,\t\n-0.112958392857892890,\t-0.113008072702621210,\t-0.113057752264829790,\t-0.113107431544393550,\t-0.113157110541188740,\t-0.113206789255091160,\t-0.113256467685977020,\t-0.113306145833721300,\t\n-0.113355823698200200,\t-0.113405501279289540,\t-0.113455178576865570,\t-0.113504855590803210,\t-0.113554532320978730,\t-0.113604208767268340,\t-0.113653884929546990,\t-0.113703560807690940,\t\n-0.113753236401575970,\t-0.113802911711078360,\t-0.113852586736073030,\t-0.113902261476436230,\t-0.113951935932043780,\t-0.114001610102771930,\t-0.114051283988495610,\t-0.114100957589091080,\t\n-0.114150630904434160,\t-0.114200303934401100,\t-0.114249976678866840,\t-0.114299649137707640,\t-0.114349321310799320,\t-0.114398993198018130,\t-0.114448664799239030,\t-0.114498336114338270,\t\n-0.114548007143191650,\t-0.114597677885675460,\t-0.114647348341664640,\t-0.114697018511035450,\t-0.114746688393664140,\t-0.114796357989425680,\t-0.114846027298196330,\t-0.114895696319851900,\t\n-0.114945365054268680,\t-0.114995033501321610,\t-0.115044701660886940,\t-0.115094369532840520,\t-0.115144037117058630,\t-0.115193704413416200,\t-0.115243371421789500,\t-0.115293038142054380,\t\n-0.115342704574087100,\t-0.115392370717762640,\t-0.115442036572957220,\t-0.115491702139546720,\t-0.115541367417407420,\t-0.115591032406414250,\t-0.115640697106443490,\t-0.115690361517371440,\t\n-0.115740025639073050,\t-0.115789689471424580,\t-0.115839353014301900,\t-0.115889016267581270,\t-0.115938679231137670,\t-0.115988341904847360,\t-0.116038004288586200,\t-0.116087666382230480,\t\n-0.116137328185655130,\t-0.116186989698736480,\t-0.116236650921350340,\t-0.116286311853373030,\t-0.116335972494679490,\t-0.116385632845146010,\t-0.116435292904648460,\t-0.116484952673063120,\t\n-0.116534612150264960,\t-0.116584271336130270,\t-0.116633930230535320,\t-0.116683588833355130,\t-0.116733247144465950,\t-0.116782905163743660,\t-0.116832562891064560,\t-0.116882220326303590,\t\n-0.116931877469337090,\t-0.116981534320040880,\t-0.117031190878291280,\t-0.117080847143963260,\t-0.117130503116933130,\t-0.117180158797076740,\t-0.117229814184270390,\t-0.117279469278389060,\t\n-0.117329124079309070,\t-0.117378778586906260,\t-0.117428432801056940,\t-0.117478086721636110,\t-0.117527740348520050,\t-0.117577393681584650,\t-0.117627046720706200,\t-0.117676699465759700,\t\n-0.117726351916621450,\t-0.117776004073167750,\t-0.117825655935273610,\t-0.117875307502815330,\t-0.117924958775668780,\t-0.117974609753710270,\t-0.118024260436814800,\t-0.118073910824858670,\t\n-0.118123560917717770,\t-0.118173210715268410,\t-0.118222860217385580,\t-0.118272509423945600,\t-0.118322158334824350,\t-0.118371806949898140,\t-0.118421455269041960,\t-0.118471103292132160,\t\n-0.118520751019044610,\t-0.118570398449655600,\t-0.118620045583840160,\t-0.118669692421474610,\t-0.118719338962435280,\t-0.118768985206597150,\t-0.118818631153836550,\t-0.118868276804029380,\t\n-0.118917922157051960,\t-0.118967567212779290,\t-0.119017211971087710,\t-0.119066856431853090,\t-0.119116500594951780,\t-0.119166144460258780,\t-0.119215788027650400,\t-0.119265431297002570,\t\n-0.119315074268191590,\t-0.119364716941092490,\t-0.119414359315581590,\t-0.119464001391534800,\t-0.119513643168828440,\t-0.119563284647337540,\t-0.119612925826938430,\t-0.119662566707507440,\t\n-0.119712207288919580,\t-0.119761847571051220,\t-0.119811487553778240,\t-0.119861127236976980,\t-0.119910766620522450,\t-0.119960405704291020,\t-0.120010044488158570,\t-0.120059682972001450,\t\n-0.120109321155694670,\t-0.120158959039114610,\t-0.120208596622137130,\t-0.120258233904638610,\t-0.120307870886494070,\t-0.120357507567579850,\t-0.120407143947771860,\t-0.120456780026946440,\t\n-0.120506415804978630,\t-0.120556051281744790,\t-0.120605686457120830,\t-0.120655321330983080,\t-0.120704955903206600,\t-0.120754590173667710,\t-0.120804224142242800,\t-0.120853857808806880,\t\n-0.120903491173236330,\t-0.120953124235407040,\t-0.121002756995195390,\t-0.121052389452476390,\t-0.121102021607126420,\t-0.121151653459021420,\t-0.121201285008037700,\t-0.121250916254050340,\t\n-0.121300547196935680,\t-0.121350177836569660,\t-0.121399808172828640,\t-0.121449438205587650,\t-0.121499067934723070,\t-0.121548697360110810,\t-0.121598326481627260,\t-0.121647955299147440,\t\n-0.121697583812547750,\t-0.121747212021704530,\t-0.121796839926492840,\t-0.121846467526789060,\t-0.121896094822469090,\t-0.121945721813409350,\t-0.121995348499484850,\t-0.122044974880571980,\t\n-0.122094600956546660,\t-0.122144226727285300,\t-0.122193852192662920,\t-0.122243477352555920,\t-0.122293102206840210,\t-0.122342726755392190,\t-0.122392350998086930,\t-0.122441974934800770,\t\n-0.122491598565409680,\t-0.122541221889790040,\t-0.122590844907816910,\t-0.122640467619366660,\t-0.122690090024315680,\t-0.122739712122539040,\t-0.122789333913913110,\t-0.122838955398313850,\t\n-0.122888576575617640,\t-0.122938197445699550,\t-0.122987818008435970,\t-0.123037438263702840,\t-0.123087058211376550,\t-0.123136677851332190,\t-0.123186297183446130,\t-0.123235916207594320,\t\n-0.123285534923653170,\t-0.123335153331497730,\t-0.123384771431004420,\t-0.123434389222049160,\t-0.123484006704508390,\t-0.123533623878257160,\t-0.123583240743171850,\t-0.123632857299128460,\t\n-0.123682473546003370,\t-0.123732089483671630,\t-0.123781705112009700,\t-0.123831320430893930,\t-0.123880935440199420,\t-0.123930550139802560,\t-0.123980164529579340,\t-0.124029778609406140,\t\n-0.124079392379158060,\t-0.124129005838711490,\t-0.124178618987942410,\t-0.124228231826727240,\t-0.124277844354941030,\t-0.124327456572460210,\t-0.124377068479160760,\t-0.124426680074919070,\t\n-0.124476291359610230,\t-0.124525902333110690,\t-0.124575512995296820,\t-0.124625123346043710,\t-0.124674733385227820,\t-0.124724343112725080,\t-0.124773952528411920,\t-0.124823561632163450,\t\n-0.124873170423856070,\t-0.124922778903365760,\t-0.124972387070568940,\t-0.125021994925340720,\t-0.125071602467557520,\t-0.125121209697095310,\t-0.125170816613830500,\t-0.125220423217638240,\t\n-0.125270029508394890,\t-0.125319635485976490,\t-0.125369241150259410,\t-0.125418846501118810,\t-0.125468451538431110,\t-0.125518056262072240,\t-0.125567660671918710,\t-0.125617264767845570,\t\n-0.125666868549729280,\t-0.125716472017446230,\t-0.125766075170871570,\t-0.125815678009881750,\t-0.125865280534352700,\t-0.125914882744160910,\t-0.125964484639181470,\t-0.126014086219290810,\t\n-0.126063687484364940,\t-0.126113288434280300,\t-0.126162889068911990,\t-0.126212489388136450,\t-0.126262089391829670,\t-0.126311689079868140,\t-0.126361288452126940,\t-0.126410887508482530,\t\n-0.126460486248810870,\t-0.126510084672988470,\t-0.126559682780890390,\t-0.126609280572393120,\t-0.126658878047372640,\t-0.126708475205705410,\t-0.126758072047266550,\t-0.126807668571932510,\t\n-0.126857264779579730,\t-0.126906860670083360,\t-0.126956456243319830,\t-0.127006051499165160,\t-0.127055646437495810,\t-0.127105241058186910,\t-0.127154835361114880,\t-0.127204429346155780,\t\n-0.127254023013186060,\t-0.127303616362080820,\t-0.127353209392716550,\t-0.127402802104969240,\t-0.127452394498715400,\t-0.127501986573830110,\t-0.127551578330189850,\t-0.127601169767671080,\t\n-0.127650760886148960,\t-0.127700351685499920,\t-0.127749942165600040,\t-0.127799532326325710,\t-0.127849122167552120,\t-0.127898711689155730,\t-0.127948300891012560,\t-0.127997889772999060,\t\n-0.128047478334990390,\t-0.128097066576863040,\t-0.128146654498493050,\t-0.128196242099756830,\t-0.128245829380529560,\t-0.128295416340687750,\t-0.128345002980107370,\t-0.128394589298664930,\t\n-0.128444175296235590,\t-0.128493760972695800,\t-0.128543346327921610,\t-0.128592931361789480,\t-0.128642516074174600,\t-0.128692100464953410,\t-0.128741684534002420,\t-0.128791268281196800,\t\n-0.128840851706412990,\t-0.128890434809527050,\t-0.128940017590415460,\t-0.128989600048953410,\t-0.129039182185017340,\t-0.129088763998483290,\t-0.129138345489227810,\t-0.129187926657126000,\t\n-0.129237507502054400,\t-0.129287088023889000,\t-0.129336668222506330,\t-0.129386248097781570,\t-0.129435827649591190,\t-0.129485406877811210,\t-0.129534985782318170,\t-0.129584564362987240,\t\n-0.129634142619694890,\t-0.129683720552317170,\t-0.129733298160730590,\t-0.129782875444810320,\t-0.129832452404432890,\t-0.129882029039474740,\t-0.129931605349811100,\t-0.129981181335318440,\t\n-0.130030756995872830,\t-0.130080332331350750,\t-0.130129907341627410,\t-0.130179482026579310,\t-0.130229056386082480,\t-0.130278630420013470,\t-0.130328204128247440,\t-0.130377777510660900,\t\n-0.130427350567129920,\t-0.130476923297530990,\t-0.130526495701739330,\t-0.130576067779631410,\t-0.130625639531083780,\t-0.130675210955971590,\t-0.130724782054171400,\t-0.130774352825559240,\t\n-0.130823923270011630,\t-0.130873493387403780,\t-0.130923063177612210,\t-0.130972632640512980,\t-0.131022201775982590,\t-0.131071770583896270,\t-0.131121339064130510,\t-0.131170907216561410,\t\n-0.131220475041065490,\t-0.131270042537517920,\t-0.131319609705795260,\t-0.131369176545773570,\t-0.131418743057329400,\t-0.131468309240337890,\t-0.131517875094675660,\t-0.131567440620218690,\t\n-0.131617005816843600,\t-0.131666570684425530,\t-0.131716135222841040,\t-0.131765699431966670,\t-0.131815263311677590,\t-0.131864826861850360,\t-0.131914390082361050,\t-0.131963952973086220,\t\n-0.132013515533901060,\t-0.132063077764682120,\t-0.132112639665305480,\t-0.132162201235647670,\t-0.132211762475583940,\t-0.132261323384990780,\t-0.132310883963744320,\t-0.132360444211721110,\t\n-0.132410004128796330,\t-0.132459563714846550,\t-0.132509122969748290,\t-0.132558681893376770,\t-0.132608240485608570,\t-0.132657798746319750,\t-0.132707356675386440,\t-0.132756914272685180,\t\n-0.132806471538091220,\t-0.132856028471481040,\t-0.132905585072731260,\t-0.132955141341717040,\t-0.133004697278315010,\t-0.133054252882401220,\t-0.133103808153852230,\t-0.133153363092543280,\t\n-0.133202917698350940,\t-0.133252471971151280,\t-0.133302025910820880,\t-0.133351579517235000,\t-0.133401132790270160,\t-0.133450685729802480,\t-0.133500238335708540,\t-0.133549790607863570,\t\n-0.133599342546144110,\t-0.133648894150426720,\t-0.133698445420586680,\t-0.133747996356500500,\t-0.133797546958044360,\t-0.133847097225094770,\t-0.133896647157527000,\t-0.133946196755217630,\t\n-0.133995746018042760,\t-0.134045294945878940,\t-0.134094843538601460,\t-0.134144391796086890,\t-0.134193939718211310,\t-0.134243487304851330,\t-0.134293034555882210,\t-0.134342581471180500,\t\n-0.134392128050622310,\t-0.134441674294084270,\t-0.134491220201441580,\t-0.134540765772570870,\t-0.134590311007348220,\t-0.134639855905650250,\t-0.134689400467352170,\t-0.134738944692330610,\t\n-0.134788488580462130,\t-0.134838032131621990,\t-0.134887575345686770,\t-0.134937118222532600,\t-0.134986660762036080,\t-0.135036202964072480,\t-0.135085744828518340,\t-0.135135286355249880,\t\n-0.135184827544143630,\t-0.135234368395074860,\t-0.135283908907920160,\t-0.135333449082555710,\t-0.135382988918858080,\t-0.135432528416702530,\t-0.135482067575965650,\t-0.135531606396524030,\t\n-0.135581144878252980,\t-0.135630683021029070,\t-0.135680220824728440,\t-0.135729758289227260,\t-0.135779295414402120,\t-0.135828832200128310,\t-0.135878368646282420,\t-0.135927904752741050,\t\n-0.135977440519379460,\t-0.136026975946074300,\t-0.136076511032701660,\t-0.136126045779138200,\t-0.136175580185259220,\t-0.136225114250941250,\t-0.136274647976060510,\t-0.136324181360493570,\t\n-0.136373714404115750,\t-0.136423247106803650,\t-0.136472779468433420,\t-0.136522311488881690,\t-0.136571843168023730,\t-0.136621374505736190,\t-0.136670905501895620,\t-0.136720436156377360,\t\n-0.136769966469058010,\t-0.136819496439813750,\t-0.136869026068521190,\t-0.136918555355055620,\t-0.136968084299293660,\t-0.137017612901111500,\t-0.137067141160385740,\t-0.137116669076991690,\t\n-0.137166196650805950,\t-0.137215723881704720,\t-0.137265250769564640,\t-0.137314777314260980,\t-0.137364303515670390,\t-0.137413829373669030,\t-0.137463354888133550,\t-0.137512880058939220,\t\n-0.137562404885962690,\t-0.137611929369080180,\t-0.137661453508168250,\t-0.137710977303102280,\t-0.137760500753758840,\t-0.137810023860014590,\t-0.137859546621744850,\t-0.137909069038826240,\t\n-0.137958591111134980,\t-0.138008112838547640,\t-0.138057634220939610,\t-0.138107155258187480,\t-0.138156675950167480,\t-0.138206196296756210,\t-0.138255716297829010,\t-0.138305235953262520,\t\n-0.138354755262932950,\t-0.138404274226716920,\t-0.138453792844489780,\t-0.138503311116128150,\t-0.138552829041508670,\t-0.138602346620506690,\t-0.138651863852998850,\t-0.138701380738861350,\t\n-0.138750897277970820,\t-0.138800413470202640,\t-0.138849929315433380,\t-0.138899444813539330,\t-0.138948959964397100,\t-0.138998474767882020,\t-0.139047989223870770,\t-0.139097503332239550,\t\n-0.139147017092865010,\t-0.139196530505622470,\t-0.139246043570388610,\t-0.139295556287039630,\t-0.139345068655452240,\t-0.139394580675501700,\t-0.139444092347064730,\t-0.139493603670017510,\t\n-0.139543114644236720,\t-0.139592625269597730,\t-0.139642135545977150,\t-0.139691645473251690,\t-0.139741155051296670,\t-0.139790664279988760,\t-0.139840173159204190,\t-0.139889681688819630,\t\n-0.139939189868710400,\t-0.139988697698753220,\t-0.140038205178824320,\t-0.140087712308800290,\t-0.140137219088556590,\t-0.140186725517969820,\t-0.140236231596916230,\t-0.140285737325272520,\t\n-0.140335242702914000,\t-0.140384747729717400,\t-0.140434252405558930,\t-0.140483756730315270,\t-0.140533260703861770,\t-0.140582764326075110,\t-0.140632267596831530,\t-0.140681770516007750,\t\n-0.140731273083479070,\t-0.140780775299122250,\t-0.140830277162813900,\t-0.140879778674429440,\t-0.140929279833845510,\t-0.140978780640938380,\t-0.141028281095584770,\t-0.141077781197659980,\t\n-0.141127280947040770,\t-0.141176780343603340,\t-0.141226279387224400,\t-0.141275778077779330,\t-0.141325276415144810,\t-0.141374774399197070,\t-0.141424272029812860,\t-0.141473769306867560,\t\n-0.141523266230237780,\t-0.141572762799800300,\t-0.141622259015430490,\t-0.141671754877005010,\t-0.141721250384400140,\t-0.141770745537492610,\t-0.141820240336157750,\t-0.141869734780272320,\t\n-0.141919228869712530,\t-0.141968722604355110,\t-0.142018215984075440,\t-0.142067709008750240,\t-0.142117201678255760,\t-0.142166693992468700,\t-0.142216185951264510,\t-0.142265677554519830,\t\n-0.142315168802110950,\t-0.142364659693914600,\t-0.142414150229806140,\t-0.142463640409662310,\t-0.142513130233359400,\t-0.142562619700774080,\t-0.142612108811781800,\t-0.142661597566259210,\t\n-0.142711085964083080,\t-0.142760574005128820,\t-0.142810061689273100,\t-0.142859549016392220,\t-0.142909035986362930,\t-0.142958522599060610,\t-0.143008008854361960,\t-0.143057494752143300,\t\n-0.143106980292281360,\t-0.143156465474651500,\t-0.143205950299130500,\t-0.143255434765594600,\t-0.143304918873920580,\t-0.143354402623983800,\t-0.143403886015661040,\t-0.143453369048828550,\t\n-0.143502851723363080,\t-0.143552334039140030,\t-0.143601815996036160,\t-0.143651297593927750,\t-0.143700778832691530,\t-0.143750259712202900,\t-0.143799740232338660,\t-0.143849220392975490,\t\n-0.143898700193988820,\t-0.143948179635255410,\t-0.143997658716651540,\t-0.144047137438054000,\t-0.144096615799338130,\t-0.144146093800380760,\t-0.144195571441058130,\t-0.144245048721247020,\t\n-0.144294525640822850,\t-0.144344002199662370,\t-0.144393478397641880,\t-0.144442954234638130,\t-0.144492429710526560,\t-0.144541904825183890,\t-0.144591379578486940,\t-0.144640853970311070,\t\n-0.144690328000533080,\t-0.144739801669029280,\t-0.144789274975676400,\t-0.144838747920349900,\t-0.144888220502926520,\t-0.144937692723282580,\t-0.144987164581294880,\t-0.145036636076838810,\t\n-0.145086107209791150,\t-0.145135577980028210,\t-0.145185048387426800,\t-0.145234518431862300,\t-0.145283988113211500,\t-0.145333457431350730,\t-0.145382926386156800,\t-0.145432394977505070,\t\n-0.145481863205272370,\t-0.145531331069335000,\t-0.145580798569569740,\t-0.145630265705852050,\t-0.145679732478058710,\t-0.145729198886066470,\t-0.145778664929750780,\t-0.145828130608988440,\t\n-0.145877595923655760,\t-0.145927060873629550,\t-0.145976525458785260,\t-0.146025989678999630,\t-0.146075453534149020,\t-0.146124917024110230,\t-0.146174380148758720,\t-0.146223842907971250,\t\n-0.146273305301624160,\t-0.146322767329594230,\t-0.146372228991756980,\t-0.146421690287989150,\t-0.146471151218167530,\t-0.146520611782167580,\t-0.146570071979866130,\t-0.146619531811139460,\t\n-0.146668991275864000,\t-0.146718450373916480,\t-0.146767909105172400,\t-0.146817367469508550,\t-0.146866825466801710,\t-0.146916283096927360,\t-0.146965740359762310,\t-0.147015197255182940,\t\n-0.147064653783065990,\t-0.147114109943286970,\t-0.147163565735722670,\t-0.147213021160249450,\t-0.147262476216744130,\t-0.147311930905082180,\t-0.147361385225140390,\t-0.147410839176795150,\t\n-0.147460292759923230,\t-0.147509745974400170,\t-0.147559198820102740,\t-0.147608651296907730,\t-0.147658103404690650,\t-0.147707555143328340,\t-0.147757006512697130,\t-0.147806457512673850,\t\n-0.147855908143133980,\t-0.147905358403954330,\t-0.147954808295011290,\t-0.148004257816181680,\t-0.148053706967340960,\t-0.148103155748365990,\t-0.148152604159133140,\t-0.148202052199519210,\t\n-0.148251499869399730,\t-0.148300947168651470,\t-0.148350394097150840,\t-0.148399840654774680,\t-0.148449286841398490,\t-0.148498732656899060,\t-0.148548178101152810,\t-0.148597623174036550,\t\n-0.148647067875425810,\t-0.148696512205197360,\t-0.148745956163228110,\t-0.148795399749393510,\t-0.148844842963570420,\t-0.148894285805635210,\t-0.148943728275464730,\t-0.148993170372934500,\t\n-0.149042612097921330,\t-0.149092053450301630,\t-0.149141494429952250,\t-0.149190935036748680,\t-0.149240375270567800,\t-0.149289815131285950,\t-0.149339254618780000,\t-0.149388693732925510,\t\n-0.149438132473599240,\t-0.149487570840678120,\t-0.149537008834037620,\t-0.149586446453554590,\t-0.149635883699105440,\t-0.149685320570566580,\t-0.149734757067814860,\t-0.149784193190725830,\t\n-0.149833628939176290,\t-0.149883064313043130,\t-0.149932499312201870,\t-0.149981933936529370,\t-0.150031368185902010,\t-0.150080802060196690,\t-0.150130235559288920,\t-0.150179668683055570,\t\n-0.150229101431373020,\t-0.150278533804118180,\t-0.150327965801166560,\t-0.150377397422395030,\t-0.150426828667680010,\t-0.150476259536898360,\t-0.150525690029925610,\t-0.150575120146638620,\t\n-0.150624549886914290,\t-0.150673979250628140,\t-0.150723408237657060,\t-0.150772836847877430,\t-0.150822265081166170,\t-0.150871692937398800,\t-0.150921120416452200,\t-0.150970547518202800,\t\n-0.151019974242527470,\t-0.151069400589301740,\t-0.151118826558402530,\t-0.151168252149706280,\t-0.151217677363089800,\t-0.151267102198428700,\t-0.151316526655599860,\t-0.151365950734479670,\t\n-0.151415374434945070,\t-0.151464797756871580,\t-0.151514220700136090,\t-0.151563643264615080,\t-0.151613065450185380,\t-0.151662487256722570,\t-0.151711908684103560,\t-0.151761329732205210,\t\n-0.151810750400903080,\t-0.151860170690074100,\t-0.151909590599594690,\t-0.151959010129341710,\t-0.152008429279190810,\t-0.152057848049018810,\t-0.152107266438702200,\t-0.152156684448117860,\t\n-0.152206102077141360,\t-0.152255519325649620,\t-0.152304936193519090,\t-0.152354352680626640,\t-0.152403768786847860,\t-0.152453184512059690,\t-0.152502599856138980,\t-0.152552014818961330,\t\n-0.152601429400403640,\t-0.152650843600342370,\t-0.152700257418654450,\t-0.152749670855215430,\t-0.152799083909902270,\t-0.152848496582591360,\t-0.152897908873159650,\t-0.152947320781482740,\t\n-0.152996732307437540,\t-0.153046143450900480,\t-0.153095554211748530,\t-0.153144964589857240,\t-0.153194374585103540,\t-0.153243784197363900,\t-0.153293193426515260,\t-0.153342602272433180,\t\n-0.153392010734994590,\t-0.153441418814075970,\t-0.153490826509554260,\t-0.153540233821305020,\t-0.153589640749205230,\t-0.153639047293131740,\t-0.153688453452960230,\t-0.153737859228567560,\t\n-0.153787264619830250,\t-0.153836669626625210,\t-0.153886074248828050,\t-0.153935478486315720,\t-0.153984882338964710,\t-0.154034285806651900,\t-0.154083688889252970,\t-0.154133091586644790,\t\n-0.154182493898703890,\t-0.154231895825307190,\t-0.154281297366330340,\t-0.154330698521650210,\t-0.154380099291143350,\t-0.154429499674686670,\t-0.154478899672155810,\t-0.154528299283427710,\t\n-0.154577698508378850,\t-0.154627097346886180,\t-0.154676495798825340,\t-0.154725893864073260,\t-0.154775291542506880,\t-0.154824688834001830,\t-0.154874085738435060,\t-0.154923482255683060,\t\n-0.154972878385622820,\t-0.155022274128129940,\t-0.155071669483081350,\t-0.155121064450353620,\t-0.155170459029823630,\t-0.155219853221367080,\t-0.155269247024860890,\t-0.155318640440181590,\t\n-0.155368033467206120,\t-0.155417426105810140,\t-0.155466818355870590,\t-0.155516210217264420,\t-0.155565601689867300,\t-0.155614992773556170,\t-0.155664383468207550,\t-0.155713773773698410,\t\n-0.155763163689904420,\t-0.155812553216702510,\t-0.155861942353969190,\t-0.155911331101581480,\t-0.155960719459415000,\t-0.156010107427346720,\t-0.156059495005253180,\t-0.156108882193011330,\t\n-0.156158268990496840,\t-0.156207655397586690,\t-0.156257041414157390,\t-0.156306427040085900,\t-0.156355812275247950,\t-0.156405197119520440,\t-0.156454581572779940,\t-0.156503965634903430,\t\n-0.156553349305766560,\t-0.156602732585246350,\t-0.156652115473219690,\t-0.156701497969562340,\t-0.156750880074151250,\t-0.156800261786862930,\t-0.156849643107574430,\t-0.156899024036161380,\t\n-0.156948404572500750,\t-0.156997784716469110,\t-0.157047164467943450,\t-0.157096543826799440,\t-0.157145922792914060,\t-0.157195301366163890,\t-0.157244679546425900,\t-0.157294057333575790,\t\n-0.157343434727490520,\t-0.157392811728046670,\t-0.157442188335121220,\t-0.157491564548589870,\t-0.157540940368329580,\t-0.157590315794216980,\t-0.157639690826129000,\t-0.157689065463941370,\t\n-0.157738439707531070,\t-0.157787813556775100,\t-0.157837187011549170,\t-0.157886560071730270,\t-0.157935932737194970,\t-0.157985305007820290,\t-0.158034676883481880,\t-0.158084048364056820,\t\n-0.158133419449421610,\t-0.158182790139453300,\t-0.158232160434027550,\t-0.158281530333021420,\t-0.158330899836311460,\t-0.158380268943774720,\t-0.158429637655286840,\t-0.158479005970724840,\t\n-0.158528373889965800,\t-0.158577741412885390,\t-0.158627108539360600,\t-0.158676475269268060,\t-0.158725841602484760,\t-0.158775207538886440,\t-0.158824573078350070,\t-0.158873938220752270,\t\n-0.158923302965970070,\t-0.158972667313879180,\t-0.159022031264356630,\t-0.159071394817279000,\t-0.159120757972523310,\t-0.159170120729965280,\t-0.159219483089481970,\t-0.159268845050949930,\t\n-0.159318206614246230,\t-0.159367567779246570,\t-0.159416928545827980,\t-0.159466288913867080,\t-0.159515648883240910,\t-0.159565008453825150,\t-0.159614367625496880,\t-0.159663726398133140,\t\n-0.159713084771609640,\t-0.159762442745803420,\t-0.159811800320591110,\t-0.159861157495849730,\t-0.159910514271455030,\t-0.159959870647284040,\t-0.160009226623213350,\t-0.160058582199120060,\t\n-0.160107937374879860,\t-0.160157292150369810,\t-0.160206646525466540,\t-0.160256000500047100,\t-0.160305354073987190,\t-0.160354707247163940,\t-0.160404060019454310,\t-0.160453412390734130,\t\n-0.160502764360880400,\t-0.160552115929769780,\t-0.160601467097278850,\t-0.160650817863284700,\t-0.160700168227663060,\t-0.160749518190291010,\t-0.160798867751045600,\t-0.160848216909802580,\t\n-0.160897565666439010,\t-0.160946914020831560,\t-0.160996261972857210,\t-0.161045609522391800,\t-0.161094956669312370,\t-0.161144303413495530,\t-0.161193649754818370,\t-0.161242995693156670,\t\n-0.161292341228387450,\t-0.161341686360387400,\t-0.161391031089033580,\t-0.161440375414201730,\t-0.161489719335768940,\t-0.161539062853612280,\t-0.161588405967607540,\t-0.161637748677631780,\t\n-0.161687090983561650,\t-0.161736432885274230,\t-0.161785774382645300,\t-0.161835115475551930,\t-0.161884456163870760,\t-0.161933796447478880,\t-0.161983136326252110,\t-0.162032475800067470,\t\n-0.162081814868801630,\t-0.162131153532331710,\t-0.162180491790533450,\t-0.162229829643284000,\t-0.162279167090459950,\t-0.162328504131938420,\t-0.162377840767595180,\t-0.162427176997307350,\t\n-0.162476512820951570,\t-0.162525848238404960,\t-0.162575183249543290,\t-0.162624517854243640,\t-0.162673852052383160,\t-0.162723185843837600,\t-0.162772519228484100,\t-0.162821852206199270,\t\n-0.162871184776860270,\t-0.162920516940342850,\t-0.162969848696524140,\t-0.163019180045280820,\t-0.163068510986489970,\t-0.163117841520027420,\t-0.163167171645770270,\t-0.163216501363595200,\t\n-0.163265830673379300,\t-0.163315159574998370,\t-0.163364488068329570,\t-0.163413816153249960,\t-0.163463143829635390,\t-0.163512471097362940,\t-0.163561797956309350,\t-0.163611124406351230,\t\n-0.163660450447365740,\t-0.163709776079228710,\t-0.163759101301817230,\t-0.163808426115008430,\t-0.163857750518678120,\t-0.163907074512703450,\t-0.163956398096961080,\t-0.164005721271328150,\t\n-0.164055044035680500,\t-0.164104366389895230,\t-0.164153688333849020,\t-0.164203009867419060,\t-0.164252330990481120,\t-0.164301651702912360,\t-0.164350972004589480,\t-0.164400291895389600,\t\n-0.164449611375188540,\t-0.164498930443863460,\t-0.164548249101291480,\t-0.164597567347348460,\t-0.164646885181911510,\t-0.164696202604857370,\t-0.164745519616063120,\t-0.164794836215404670,\t\n-0.164844152402759130,\t-0.164893468178003180,\t-0.164942783541014020,\t-0.164992098491667460,\t-0.165041413029840630,\t-0.165090727155410290,\t-0.165140040868253570,\t-0.165189354168246320,\t\n-0.165238667055265660,\t-0.165287979529188330,\t-0.165337291589891520,\t-0.165386603237251020,\t-0.165435914471144030,\t-0.165485225291447240,\t-0.165534535698037830,\t-0.165583845690791630,\t\n-0.165633155269585830,\t-0.165682464434297570,\t-0.165731773184802730,\t-0.165781081520978420,\t-0.165830389442701450,\t-0.165879696949848910,\t-0.165929004042296710,\t-0.165978310719922000,\t\n-0.166027616982601520,\t-0.166076922830212410,\t-0.166126228262630570,\t-0.166175533279733170,\t-0.166224837881396910,\t-0.166274142067499020,\t-0.166323445837915310,\t-0.166372749192523010,\t\n-0.166422052131199260,\t-0.166471354653819960,\t-0.166520656760262260,\t-0.166569958450402900,\t-0.166619259724119120,\t-0.166668560581286730,\t-0.166717861021782930,\t-0.166767161045484500,\t\n-0.166816460652268600,\t-0.166865759842011100,\t-0.166915058614589190,\t-0.166964356969879660,\t-0.167013654907759660,\t-0.167062952428105090,\t-0.167112249530793150,\t-0.167161546215700560,\t\n-0.167210842482704570,\t-0.167260138331681020,\t-0.167309433762507120,\t-0.167358728775059670,\t-0.167408023369215790,\t-0.167457317544851440,\t-0.167506611301843800,\t-0.167555904640070060,\t\n-0.167605197559406120,\t-0.167654490059729180,\t-0.167703782140916020,\t-0.167753073802843850,\t-0.167802365045388540,\t-0.167851655868427350,\t-0.167900946271836990,\t-0.167950236255494710,\t\n-0.167999525819276410,\t-0.168048814963059290,\t-0.168098103686720120,\t-0.168147391990136150,\t-0.168196679873183240,\t-0.168245967335738660,\t-0.168295254377679140,\t-0.168344540998881910,\t\n-0.168393827199222910,\t-0.168443112978579330,\t-0.168492398336828000,\t-0.168541683273846080,\t-0.168590967789509520,\t-0.168640251883695550,\t-0.168689535556281380,\t-0.168738818807142920,\t\n-0.168788101636157430,\t-0.168837384043201700,\t-0.168886666028152920,\t-0.168935947590887060,\t-0.168985228731281300,\t-0.169034509449212500,\t-0.169083789744557840,\t-0.169133069617193290,\t\n-0.169182349066996060,\t-0.169231628093842960,\t-0.169280906697611230,\t-0.169330184878176780,\t-0.169379462635416870,\t-0.169428739969208740,\t-0.169478016879428340,\t-0.169527293365952870,\t\n-0.169576569428659200,\t-0.169625845067424510,\t-0.169675120282124810,\t-0.169724395072637290,\t-0.169773669438838760,\t-0.169822943380606520,\t-0.169872216897816480,\t-0.169921489990345900,\t\n-0.169970762658071570,\t-0.170020034900870810,\t-0.170069306718619500,\t-0.170118578111194930,\t-0.170167849078473900,\t-0.170217119620333700,\t-0.170266389736650260,\t-0.170315659427300870,\t\n-0.170364928692162300,\t-0.170414197531111870,\t-0.170463465944025480,\t-0.170512733930780450,\t-0.170562001491254000,\t-0.170611268625322140,\t-0.170660535332862070,\t-0.170709801613750680,\t\n-0.170759067467865230,\t-0.170808332895081680,\t-0.170857597895277270,\t-0.170906862468328900,\t-0.170956126614113770,\t-0.171005390332507920,\t-0.171054653623388590,\t-0.171103916486632620,\t\n-0.171153178922117290,\t-0.171202440929718590,\t-0.171251702509313790,\t-0.171300963660779710,\t-0.171350224383993670,\t-0.171399484678831650,\t-0.171448744545170890,\t-0.171498003982888280,\t\n-0.171547262991861100,\t-0.171596521571965310,\t-0.171645779723078230,\t-0.171695037445077160,\t-0.171744294737838030,\t-0.171793551601238160,\t-0.171842808035154420,\t-0.171892064039464110,\t\n-0.171941319614043190,\t-0.171990574758768970,\t-0.172039829473518310,\t-0.172089083758168530,\t-0.172138337612595590,\t-0.172187591036676800,\t-0.172236844030289050,\t-0.172286096593309620,\t\n-0.172335348725614510,\t-0.172384600427081040,\t-0.172433851697586490,\t-0.172483102537006850,\t-0.172532352945219490,\t-0.172581602922101260,\t-0.172630852467529430,\t-0.172680101581380030,\t\n-0.172729350263530400,\t-0.172778598513857380,\t-0.172827846332238300,\t-0.172877093718549170,\t-0.172926340672667290,\t-0.172975587194469590,\t-0.173024833283833330,\t-0.173074078940634590,\t\n-0.173123324164750620,\t-0.173172568956058340,\t-0.173221813314435090,\t-0.173271057239756860,\t-0.173320300731900970,\t-0.173369543790744350,\t-0.173418786416164320,\t-0.173468028608036840,\t\n-0.173517270366239320,\t-0.173566511690649070,\t-0.173615752581142090,\t-0.173664993037595750,\t-0.173714233059886900,\t-0.173763472647892910,\t-0.173812711801489800,\t-0.173861950520554920,\t\n-0.173911188804965170,\t-0.173960426654597880,\t-0.174009664069329080,\t-0.174058901049036100,\t-0.174108137593595890,\t-0.174157373702885780,\t-0.174206609376781780,\t-0.174255844615161280,\t\n-0.174305079417901160,\t-0.174354313784878760,\t-0.174403547715970160,\t-0.174452781211052680,\t-0.174502014270003250,\t-0.174551246892699240,\t-0.174600479079016660,\t-0.174649710828832880,\t\n-0.174698942142025250,\t-0.174748173018469840,\t-0.174797403458043980,\t-0.174846633460624650,\t-0.174895863026089140,\t-0.174945092154313560,\t-0.174994320845175220,\t-0.175043549098551100,\t\n-0.175092776914318540,\t-0.175142004292353600,\t-0.175191231232533630,\t-0.175240457734735620,\t-0.175289683798836890,\t-0.175338909424713500,\t-0.175388134612242840,\t-0.175437359361302280,\t\n-0.175486583671767890,\t-0.175535807543517050,\t-0.175585030976426660,\t-0.175634253970374160,\t-0.175683476525235580,\t-0.175732698640888310,\t-0.175781920317209290,\t-0.175831141554075920,\t\n-0.175880362351364230,\t-0.175929582708951650,\t-0.175978802626715110,\t-0.176028022104532000,\t-0.176077241142278410,\t-0.176126459739831710,\t-0.176175677897068870,\t-0.176224895613867260,\t\n-0.176274112890102970,\t-0.176323329725653400,\t-0.176372546120395520,\t-0.176421762074206710,\t-0.176470977586963030,\t-0.176520192658541940,\t-0.176569407288820780,\t-0.176618621477675680,\t\n-0.176667835224984030,\t-0.176717048530622780,\t-0.176766261394469350,\t-0.176815473816399840,\t-0.176864685796291640,\t-0.176913897334021710,\t-0.176963108429467500,\t-0.177012319082505060,\t\n-0.177061529293011830,\t-0.177110739060864770,\t-0.177159948385941320,\t-0.177209157268117530,\t-0.177258365707270880,\t-0.177307573703278740,\t-0.177356781256017230,\t-0.177405988365363750,\t\n-0.177455195031195310,\t-0.177504401253388870,\t-0.177553607031821880,\t-0.177602812366370460,\t-0.177652017256911960,\t-0.177701221703323890,\t-0.177750425705482330,\t-0.177799629263264670,\t\n-0.177848832376547970,\t-0.177898035045209620,\t-0.177947237269125730,\t-0.177996439048173780,\t-0.178045640382230700,\t-0.178094841271173950,\t-0.178144041714879690,\t-0.178193241713225310,\t\n-0.178242441266087820,\t-0.178291640373344690,\t-0.178340839034872000,\t-0.178390037250547220,\t-0.178439235020247780,\t-0.178488432343849810,\t-0.178537629221230760,\t-0.178586825652267630,\t\n-0.178636021636837890,\t-0.178685217174817670,\t-0.178734412266084390,\t-0.178783606910515090,\t-0.178832801107987190,\t-0.178881994858376860,\t-0.178931188161561530,\t-0.178980381017418260,\t\n-0.179029573425824460,\t-0.179078765386656290,\t-0.179127956899791190,\t-0.179177147965106230,\t-0.179226338582478800,\t-0.179275528751785120,\t-0.179324718472902600,\t-0.179373907745708300,\t\n-0.179423096570079650,\t-0.179472284945892820,\t-0.179521472873025280,\t-0.179570660351354520,\t-0.179619847380756650,\t-0.179669033961109170,\t-0.179718220092289080,\t-0.179767405774173910,\t\n-0.179816591006639770,\t-0.179865775789564140,\t-0.179914960122824100,\t-0.179964144006297090,\t-0.180013327439859290,\t-0.180062510423388140,\t-0.180111692956760740,\t-0.180160875039854530,\t\n-0.180210056672545720,\t-0.180259237854711730,\t-0.180308418586230120,\t-0.180357598866977000,\t-0.180406778696829890,\t-0.180455958075665860,\t-0.180505137003362350,\t-0.180554315479795560,\t\n-0.180603493504842980,\t-0.180652671078381650,\t-0.180701848200289120,\t-0.180751024870441510,\t-0.180800201088716330,\t-0.180849376854990640,\t-0.180898552169141970,\t-0.180947727031046470,\t\n-0.180996901440581640,\t-0.181046075397624600,\t-0.181095248902052780,\t-0.181144421953742390,\t-0.181193594552570950,\t-0.181242766698415550,\t-0.181291938391153620,\t-0.181341109630661440,\t\n-0.181390280416816490,\t-0.181439450749496270,\t-0.181488620628576990,\t-0.181537790053936170,\t-0.181586959025450860,\t-0.181636127542998570,\t-0.181685295606455550,\t-0.181734463215699280,\t\n-0.181783630370606850,\t-0.181832797071055790,\t-0.181881963316922300,\t-0.181931129108083900,\t-0.181980294444417680,\t-0.182029459325801170,\t-0.182078623752110540,\t-0.182127787723223380,\t\n-0.182176951239016750,\t-0.182226114299368160,\t-0.182275276904153880,\t-0.182324439053251380,\t-0.182373600746537800,\t-0.182422761983890620,\t-0.182471922765186150,\t-0.182521083090301850,\t\n-0.182570242959115250,\t-0.182619402371502650,\t-0.182668561327341520,\t-0.182717719826509000,\t-0.182766877868882600,\t-0.182816035454338580,\t-0.182865192582754470,\t-0.182914349254007370,\t\n-0.182963505467974850,\t-0.183012661224533140,\t-0.183061816523559740,\t-0.183110971364931820,\t-0.183160125748526910,\t-0.183209279674221260,\t-0.183258433141892390,\t-0.183307586151417870,\t\n-0.183356738702673970,\t-0.183405890795538210,\t-0.183455042429887720,\t-0.183504193605600080,\t-0.183553344322551490,\t-0.183602494580619560,\t-0.183651644379681400,\t-0.183700793719614540,\t\n-0.183749942600295290,\t-0.183799091021601160,\t-0.183848238983409300,\t-0.183897386485597310,\t-0.183946533528041380,\t-0.183995680110619150,\t-0.184044826233207700,\t-0.184093971895684600,\t\n-0.184143117097926160,\t-0.184192261839809940,\t-0.184241406121213040,\t-0.184290549942013080,\t-0.184339693302086300,\t-0.184388836201310270,\t-0.184437978639562600,\t-0.184487120616719570,\t\n-0.184536262132658700,\t-0.184585403187257190,\t-0.184634543780392620,\t-0.184683683911941260,\t-0.184732823581780670,\t-0.184781962789788030,\t-0.184831101535840920,\t-0.184880239819815610,\t\n-0.184929377641589700,\t-0.184978515001040340,\t-0.185027651898045150,\t-0.185076788332480400,\t-0.185125924304223670,\t-0.185175059813152100,\t-0.185224194859143350,\t-0.185273329442073670,\t\n-0.185322463561820670,\t-0.185371597218261520,\t-0.185420730411273800,\t-0.185469863140733800,\t-0.185518995406519170,\t-0.185568127208507460,\t-0.185617258546575010,\t-0.185666389420599430,\t\n-0.185715519830457860,\t-0.185764649776027940,\t-0.185813779257185950,\t-0.185862908273809500,\t-0.185912036825775780,\t-0.185961164912962440,\t-0.186010292535245730,\t-0.186059419692503280,\t\n-0.186108546384612270,\t-0.186157672611450360,\t-0.186206798372893810,\t-0.186255923668820270,\t-0.186305048499107370,\t-0.186354172863631400,\t-0.186403296762269990,\t-0.186452420194900350,\t\n-0.186501543161400110,\t-0.186550665661645550,\t-0.186599787695514360,\t-0.186648909262883660,\t-0.186698030363631140,\t-0.186747150997633120,\t-0.186796271164767210,\t-0.186845390864910620,\t\n-0.186894510097941000,\t-0.186943628863734670,\t-0.186992747162169240,\t-0.187041864993121980,\t-0.187090982356470450,\t-0.187140099252091070,\t-0.187189215679861410,\t-0.187238331639658750,\t\n-0.187287447131360670,\t-0.187336562154843540,\t-0.187385676709984990,\t-0.187434790796662700,\t-0.187483904414752990,\t-0.187533017564133540,\t-0.187582130244681510,\t-0.187631242456274630,\t\n-0.187680354198789170,\t-0.187729465472102870,\t-0.187778576276092870,\t-0.187827686610636870,\t-0.187876796475611230,\t-0.187925905870893580,\t-0.187975014796361200,\t-0.188024123251891690,\t\n-0.188073231237361440,\t-0.188122338752648110,\t-0.188171445797628960,\t-0.188220552372181600,\t-0.188269658476182430,\t-0.188318764109509120,\t-0.188367869272038880,\t-0.188416973963649430,\t\n-0.188466078184217100,\t-0.188515181933619570,\t-0.188564285211734520,\t-0.188613388018438330,\t-0.188662490353608660,\t-0.188711592217122780,\t-0.188760693608858330,\t-0.188809794528691730,\t\n-0.188858894976500660,\t-0.188907994952162320,\t-0.188957094455554450,\t-0.189006193486553400,\t-0.189055292045036850,\t-0.189104390130882090,\t-0.189153487743966790,\t-0.189202584884167330,\t\n-0.189251681551361410,\t-0.189300777745426720,\t-0.189349873466239630,\t-0.189398968713677900,\t-0.189448063487618720,\t-0.189497157787939820,\t-0.189546251614517600,\t-0.189595344967229740,\t\n-0.189644437845953530,\t-0.189693530250566650,\t-0.189742622180945510,\t-0.189791713636967810,\t-0.189840804618510830,\t-0.189889895125452260,\t-0.189938985157668550,\t-0.189988074715037340,\t\n-0.190037163797435990,\t-0.190086252404742110,\t-0.190135340536832200,\t-0.190184428193583940,\t-0.190233515374874600,\t-0.190282602080581900,\t-0.190331688310582280,\t-0.190380774064753430,\t\n-0.190429859342973070,\t-0.190478944145117620,\t-0.190528028471064840,\t-0.190577112320691970,\t-0.190626195693876760,\t-0.190675278590495630,\t-0.190724361010426280,\t-0.190773442953546060,\t\n-0.190822524419732630,\t-0.190871605408862500,\t-0.190920685920813320,\t-0.190969765955462440,\t-0.191018845512687580,\t-0.191067924592365160,\t-0.191117003194372940,\t-0.191166081318588640,\t\n-0.191215158964888720,\t-0.191264236133150880,\t-0.191313312823252450,\t-0.191362389035070750,\t-0.191411464768483530,\t-0.191460540023367180,\t-0.191509614799599490,\t-0.191558689097058200,\t\n-0.191607762915619760,\t-0.191656836255161890,\t-0.191705909115561960,\t-0.191754981496697670,\t-0.191804053398445500,\t-0.191853124820683200,\t-0.191902195763288070,\t-0.191951266226137920,\t\n-0.192000336209109140,\t-0.192049405712079540,\t-0.192098474734926420,\t-0.192147543277527530,\t-0.192196611339759350,\t-0.192245678921499660,\t-0.192294746022626200,\t-0.192343812643015450,\t\n-0.192392878782545160,\t-0.192441944441092670,\t-0.192491009618535740,\t-0.192540074314750870,\t-0.192589138529615820,\t-0.192638202263007900,\t-0.192687265514804920,\t-0.192736328284883350,\t\n-0.192785390573120940,\t-0.192834452379395090,\t-0.192883513703583500,\t-0.192932574545562730,\t-0.192981634905210500,\t-0.193030694782404200,\t-0.193079754177021580,\t-0.193128813088939140,\t\n-0.193177871518034670,\t-0.193226929464185540,\t-0.193275986927269490,\t-0.193325043907163070,\t-0.193374100403744030,\t-0.193423156416890170,\t-0.193472211946477980,\t-0.193521266992385250,\t\n-0.193570321554489390,\t-0.193619375632668120,\t-0.193668429226798000,\t-0.193717482336756790,\t-0.193766534962421880,\t-0.193815587103671080,\t-0.193864638760380880,\t-0.193913689932429080,\t\n-0.193962740619693040,\t-0.194011790822050580,\t-0.194060840539378220,\t-0.194109889771553770,\t-0.194158938518455000,\t-0.194207986779958490,\t-0.194257034555941980,\t-0.194306081846282900,\t\n-0.194355128650858610,\t-0.194404174969546930,\t-0.194453220802224380,\t-0.194502266148768780,\t-0.194551311009057950,\t-0.194600355382968410,\t-0.194649399270377970,\t-0.194698442671164040,\t\n-0.194747485585204440,\t-0.194796528012375710,\t-0.194845569952555640,\t-0.194894611405621640,\t-0.194943652371451560,\t-0.194992692849921910,\t-0.195041732840910500,\t-0.195090772344294780,\t\n-0.195139811359952590,\t-0.195188849887760390,\t-0.195237887927596110,\t-0.195286925479337510,\t-0.195335962542861170,\t-0.195384999118044940,\t-0.195434035204766210,\t-0.195483070802902810,\t\n-0.195532105912331310,\t-0.195581140532929550,\t-0.195630174664574910,\t-0.195679208307145300,\t-0.195728241460517230,\t-0.195777274124568550,\t-0.195826306299176660,\t-0.195875337984219470,\t\n-0.195924369179573510,\t-0.195973399885116610,\t-0.196022430100726200,\t-0.196071459826280160,\t-0.196120489061655050,\t-0.196169517806728700,\t-0.196218546061378560,\t-0.196267573825482490,\t\n-0.196316601098917050,\t-0.196365627881560120,\t-0.196414654173289540,\t-0.196463679973981900,\t-0.196512705283515030,\t-0.196561730101766420,\t-0.196610754428613920,\t-0.196659778263934100,\t\n-0.196708801607604840,\t-0.196757824459503570,\t-0.196806846819508160,\t-0.196855868687495220,\t-0.196904890063342610,\t-0.196953910946927770,\t-0.197002931338128570,\t-0.197051951236821620,\t\n-0.197100970642884790,\t-0.197149989556195980,\t-0.197199007976631730,\t-0.197248025904070010,\t-0.197297043338388180,\t-0.197346060279464190,\t-0.197395076727174630,\t-0.197444092681397340,\t\n-0.197493108142009850,\t-0.197542123108890020,\t-0.197591137581914460,\t-0.197640151560961040,\t-0.197689165045907250,\t-0.197738178036630960,\t-0.197787190533008810,\t-0.197836202534918680,\t\n-0.197885214042238050,\t-0.197934225054844810,\t-0.197983235572615570,\t-0.198032245595428260,\t-0.198081255123160330,\t-0.198130264155689680,\t-0.198179272692892950,\t-0.198228280734648040,\t\n-0.198277288280832850,\t-0.198326295331324010,\t-0.198375301885999440,\t-0.198424307944736590,\t-0.198473313507413430,\t-0.198522318573906560,\t-0.198571323144093870,\t-0.198620327217852890,\t\n-0.198669330795061520,\t-0.198718333875596370,\t-0.198767336459335420,\t-0.198816338546156100,\t-0.198865340135936370,\t-0.198914341228552870,\t-0.198963341823883500,\t-0.199012341921805810,\t\n-0.199061341522197680,\t-0.199110340624935740,\t-0.199159339229897980,\t-0.199208337336961860,\t-0.199257334946005310,\t-0.199306332056905010,\t-0.199355328669538890,\t-0.199404324783784860,\t\n-0.199453320399519600,\t-0.199502315516621040,\t-0.199551310134966690,\t-0.199600304254434480,\t-0.199649297874901100,\t-0.199698290996244480,\t-0.199747283618342100,\t-0.199796275741071980,\t\n-0.199845267364310710,\t-0.199894258487936290,\t-0.199943249111826200,\t-0.199992239235858430,\t-0.200041228859909660,\t-0.200090217983857790,\t-0.200139206607580810,\t-0.200188194730955370,\t\n-0.200237182353859460,\t-0.200286169476170590,\t-0.200335156097766730,\t-0.200384142218524550,\t-0.200433127838322010,\t-0.200482112957036630,\t-0.200531097574546430,\t-0.200580081690728050,\t\n-0.200629065305459460,\t-0.200678048418618190,\t-0.200727031030082270,\t-0.200776013139728320,\t-0.200824994747434320,\t-0.200873975853077870,\t-0.200922956456536880,\t-0.200971936557688080,\t\n-0.201020916156409430,\t-0.201069895252578510,\t-0.201118873846073270,\t-0.201167851936770420,\t-0.201216829524547920,\t-0.201265806609283810,\t-0.201314783190854720,\t-0.201363759269138690,\t\n-0.201412734844013260,\t-0.201461709915356420,\t-0.201510684483044880,\t-0.201559658546956620,\t-0.201608632106969220,\t-0.201657605162960690,\t-0.201706577714807680,\t-0.201755549762388240,\t\n-0.201804521305579940,\t-0.201853492344260750,\t-0.201902462878307400,\t-0.201951432907597900,\t-0.202000402432009810,\t-0.202049371451421160,\t-0.202098339965708640,\t-0.202147307974750280,\t\n-0.202196275478423640,\t-0.202245242476606750,\t-0.202294208969176300,\t-0.202343174956010340,\t-0.202392140436986890,\t-0.202441105411982650,\t-0.202490069880875640,\t-0.202539033843543460,\t\n-0.202587997299864130,\t-0.202636960249714370,\t-0.202685922692972200,\t-0.202734884629515220,\t-0.202783846059221480,\t-0.202832806981967710,\t-0.202881767397631890,\t-0.202930727306091660,\t\n-0.202979686707225050,\t-0.203028645600908770,\t-0.203077603987020900,\t-0.203126561865439450,\t-0.203175519236041160,\t-0.203224476098704060,\t-0.203273432453305790,\t-0.203322388299724350,\t\n-0.203371343637836520,\t-0.203420298467520330,\t-0.203469252788653380,\t-0.203518206601113750,\t-0.203567159904778170,\t-0.203616112699524680,\t-0.203665064985230900,\t-0.203714016761774920,\t\n-0.203762968029033460,\t-0.203811918786884570,\t-0.203860869035205870,\t-0.203909818773875460,\t-0.203958768002770050,\t-0.204007716721767710,\t-0.204056664930746090,\t-0.204105612629583240,\t\n-0.204154559818155920,\t-0.204203506496342220,\t-0.204252452664020170,\t-0.204301398321066560,\t-0.204350343467359450,\t-0.204399288102776490,\t-0.204448232227195740,\t-0.204497175840493980,\t\n-0.204546118942549260,\t-0.204595061533239280,\t-0.204644003612442060,\t-0.204692945180034390,\t-0.204741886235894370,\t-0.204790826779899630,\t-0.204839766811928250,\t-0.204888706331857020,\t\n-0.204937645339564020,\t-0.204986583834927350,\t-0.205035521817823780,\t-0.205084459288131400,\t-0.205133396245727910,\t-0.205182332690490880,\t-0.205231268622298480,\t-0.205280204041027480,\t\n-0.205329138946555970,\t-0.205378073338762010,\t-0.205427007217522470,\t-0.205475940582715400,\t-0.205524873434218490,\t-0.205573805771909810,\t-0.205622737595666180,\t-0.205671668905365730,\t\n-0.205720599700886100,\t-0.205769529982105400,\t-0.205818459748900450,\t-0.205867389001149340,\t-0.205916317738729760,\t-0.205965245961519800,\t-0.206014173669396310,\t-0.206063100862237390,\t\n-0.206112027539921170,\t-0.206160953702324400,\t-0.206209879349325280,\t-0.206258804480801440,\t-0.206307729096631060,\t-0.206356653196690890,\t-0.206405576780859110,\t-0.206454499849013370,\t\n-0.206503422401031810,\t-0.206552344436791270,\t-0.206601265956169870,\t-0.206650186959045300,\t-0.206699107445295710,\t-0.206748027414797920,\t-0.206796946867430030,\t-0.206845865803069790,\t\n-0.206894784221595320,\t-0.206943702122883460,\t-0.206992619506812360,\t-0.207041536373259670,\t-0.207090452722103610,\t-0.207139368553220990,\t-0.207188283866489910,\t-0.207237198661788580,\t\n-0.207286112938993820,\t-0.207335026697983760,\t-0.207383939938636160,\t-0.207432852660829110,\t-0.207481764864439530,\t-0.207530676549345510,\t-0.207579587715424810,\t-0.207628498362555590,\t\n-0.207677408490614670,\t-0.207726318099480220,\t-0.207775227189029990,\t-0.207824135759142130,\t-0.207873043809693490,\t-0.207921951340562240,\t-0.207970858351626570,\t-0.208019764842763300,\t\n-0.208068670813850610,\t-0.208117576264766240,\t-0.208166481195387940,\t-0.208215385605593880,\t-0.208264289495260910,\t-0.208313192864267220,\t-0.208362095712490980,\t-0.208410998039809060,\t\n-0.208459899846099670,\t-0.208508801131240510,\t-0.208557701895109780,\t-0.208606602137584360,\t-0.208655501858542450,\t-0.208704401057861750,\t-0.208753299735420530,\t-0.208802197891095610,\t\n-0.208851095524765190,\t-0.208899992636307010,\t-0.208948889225599320,\t-0.208997785292518940,\t-0.209046680836944110,\t-0.209095575858753020,\t-0.209144470357822550,\t-0.209193364334030910,\t\n-0.209242257787255860,\t-0.209291150717375580,\t-0.209340043124267020,\t-0.209388935007808340,\t-0.209437826367877310,\t-0.209486717204352160,\t-0.209535607517109780,\t-0.209584497306028380,\t\n-0.209633386570985740,\t-0.209682275311860070,\t-0.209731163528528270,\t-0.209780051220868570,\t-0.209828938388758740,\t-0.209877825032077000,\t-0.209926711150700250,\t-0.209975596744506720,\t\n-0.210024481813374210,\t-0.210073366357180940,\t-0.210122250375803820,\t-0.210171133869121060,\t-0.210220016837010890,\t-0.210268899279350270,\t-0.210317781196017380,\t-0.210366662586890050,\t\n-0.210415543451846490,\t-0.210464423790763630,\t-0.210513303603519750,\t-0.210562182889992570,\t-0.210611061650060380,\t-0.210659939883600100,\t-0.210708817590489980,\t-0.210757694770607800,\t\n-0.210806571423831830,\t-0.210855447550038990,\t-0.210904323149107540,\t-0.210953198220915710,\t-0.211002072765340440,\t-0.211050946782260000,\t-0.211099820271552190,\t-0.211148693233095260,\t\n-0.211197565666766170,\t-0.211246437572443190,\t-0.211295308950004090,\t-0.211344179799327150,\t-0.211393050120289330,\t-0.211441919912768870,\t-0.211490789176643630,\t-0.211539657911791860,\t\n-0.211588526118090480,\t-0.211637393795417790,\t-0.211686260943651640,\t-0.211735127562670270,\t-0.211783993652350620,\t-0.211832859212571000,\t-0.211881724243209250,\t-0.211930588744143610,\t\n-0.211979452715251070,\t-0.212028316156409880,\t-0.212077179067498340,\t-0.212126041448393420,\t-0.212174903298973400,\t-0.212223764619116130,\t-0.212272625408699870,\t-0.212321485667601620,\t\n-0.212370345395699660,\t-0.212419204592871810,\t-0.212468063258996390,\t-0.212516921393950400,\t-0.212565778997612090,\t-0.212614636069859340,\t-0.212663492610570440,\t-0.212712348619622380,\t\n-0.212761204096893420,\t-0.212810059042261470,\t-0.212858913455604790,\t-0.212907767336800420,\t-0.212956620685726600,\t-0.213005473502261260,\t-0.213054325786282640,\t-0.213103177537667800,\t\n-0.213152028756294990,\t-0.213200879442042580,\t-0.213249729594787500,\t-0.213298579214408120,\t-0.213347428300782270,\t-0.213396276853788290,\t-0.213445124873303190,\t-0.213493972359205280,\t\n-0.213542819311372420,\t-0.213591665729682970,\t-0.213640511614013930,\t-0.213689356964243570,\t-0.213738201780249850,\t-0.213787046061911040,\t-0.213835889809104200,\t-0.213884733021707630,\t\n-0.213933575699599670,\t-0.213982417842657310,\t-0.214031259450758930,\t-0.214080100523782400,\t-0.214128941061606040,\t-0.214177781064106900,\t-0.214226620531163310,\t-0.214275459462653170,\t\n-0.214324297858454800,\t-0.214373135718445270,\t-0.214421973042502880,\t-0.214470809830505590,\t-0.214519646082331680,\t-0.214568481797858230,\t-0.214617316976963600,\t-0.214666151619525620,\t\n-0.214714985725422750,\t-0.214763819294531950,\t-0.214812652326731630,\t-0.214861484821899650,\t-0.214910316779914400,\t-0.214959148200652930,\t-0.215007979083993610,\t-0.215056809429814750,\t\n-0.215105639237993420,\t-0.215154468508408030,\t-0.215203297240936430,\t-0.215252125435457050,\t-0.215300953091846910,\t-0.215349780209984380,\t-0.215398606789747430,\t-0.215447432831014360,\t\n-0.215496258333662290,\t-0.215545083297569580,\t-0.215593907722614160,\t-0.215642731608674390,\t-0.215691554955627360,\t-0.215740377763351480,\t-0.215789200031724610,\t-0.215838021760625190,\t\n-0.215886842949930300,\t-0.215935663599518270,\t-0.215984483709267090,\t-0.216033303279055150,\t-0.216082122308759510,\t-0.216130940798258560,\t-0.216179758747430700,\t-0.216228576156153010,\t\n-0.216277393024303880,\t-0.216326209351761250,\t-0.216375025138403540,\t-0.216423840384107840,\t-0.216472655088752520,\t-0.216521469252215580,\t-0.216570282874375410,\t-0.216619095955109090,\t\n-0.216667908494295010,\t-0.216716720491811180,\t-0.216765531947535980,\t-0.216814342861346520,\t-0.216863153233121190,\t-0.216911963062738440,\t-0.216960772350075330,\t-0.217009581095010280,\t\n-0.217058389297421270,\t-0.217107196957186750,\t-0.217156004074183780,\t-0.217204810648290810,\t-0.217253616679385810,\t-0.217302422167347210,\t-0.217351227112052130,\t-0.217400031513378940,\t\n-0.217448835371205710,\t-0.217497638685410830,\t-0.217546441455871400,\t-0.217595243682465860,\t-0.217644045365072230,\t-0.217692846503568900,\t-0.217741647097833060,\t-0.217790447147743070,\t\n-0.217839246653176940,\t-0.217888045614013180,\t-0.217936844030128830,\t-0.217985641901402400,\t-0.218034439227712290,\t-0.218083236008935640,\t-0.218132032244950900,\t-0.218180827935636090,\t\n-0.218229623080869630,\t-0.218278417680528690,\t-0.218327211734491710,\t-0.218376005242636670,\t-0.218424798204842090,\t-0.218473590620985060,\t-0.218522382490944050,\t-0.218571173814597090,\t\n-0.218619964591822650,\t-0.218668754822497840,\t-0.218717544506501160,\t-0.218766333643711040,\t-0.218815122234004650,\t-0.218863910277260460,\t-0.218912697773356480,\t-0.218961484722170780,\t\n-0.219010271123581790,\t-0.219059056977466690,\t-0.219107842283703950,\t-0.219156627042172040,\t-0.219205411252748120,\t-0.219254194915310670,\t-0.219302978029737750,\t-0.219351760595907800,\t\n-0.219400542613698010,\t-0.219449324082986900,\t-0.219498105003652440,\t-0.219546885375573180,\t-0.219595665198626250,\t-0.219644444472690160,\t-0.219693223197642980,\t-0.219742001373363170,\t\n-0.219790778999727900,\t-0.219839556076615710,\t-0.219888332603905030,\t-0.219937108581473110,\t-0.219985884009198410,\t-0.220034658886959030,\t-0.220083433214633390,\t-0.220132206992098760,\t\n-0.220180980219233600,\t-0.220229752895916010,\t-0.220278525022024470,\t-0.220327296597436160,\t-0.220376067622029630,\t-0.220424838095682920,\t-0.220473608018274540,\t-0.220522377389681720,\t\n-0.220571146209782960,\t-0.220619914478456330,\t-0.220668682195580330,\t-0.220717449361032210,\t-0.220766215974690480,\t-0.220814982036433180,\t-0.220863747546138880,\t-0.220912512503684770,\t\n-0.220961276908949370,\t-0.221010040761811240,\t-0.221058804062147530,\t-0.221107566809836840,\t-0.221156329004757230,\t-0.221205090646787230,\t-0.221253851735804090,\t-0.221302612271686290,\t\n-0.221351372254311980,\t-0.221400131683559650,\t-0.221448890559306580,\t-0.221497648881431250,\t-0.221546406649811840,\t-0.221595163864326820,\t-0.221643920524853460,\t-0.221692676631270320,\t\n-0.221741432183455910,\t-0.221790187181287480,\t-0.221838941624643570,\t-0.221887695513402320,\t-0.221936448847441850,\t-0.221985201626640680,\t-0.222033953850876040,\t-0.222082705520026540,\t\n-0.222131456633970710,\t-0.222180207192585830,\t-0.222228957195750390,\t-0.222277706643342590,\t-0.222326455535240940,\t-0.222375203871322730,\t-0.222423951651466500,\t-0.222472698875550380,\t\n-0.222521445543452960,\t-0.222570191655051490,\t-0.222618937210224550,\t-0.222667682208850250,\t-0.222716426650807180,\t-0.222765170535972640,\t-0.222813913864225140,\t-0.222862656635443300,\t\n-0.222911398849504390,\t-0.222960140506286990,\t-0.223008881605669200,\t-0.223057622147529670,\t-0.223106362131745640,\t-0.223155101558195730,\t-0.223203840426758030,\t-0.223252578737311190,\t\n-0.223301316489732480,\t-0.223350053683900460,\t-0.223398790319693290,\t-0.223447526396989590,\t-0.223496261915666660,\t-0.223544996875603060,\t-0.223593731276676950,\t-0.223642465118766980,\t\n-0.223691198401750390,\t-0.223739931125505800,\t-0.223788663289911400,\t-0.223837394894845780,\t-0.223886125940186230,\t-0.223934856425811350,\t-0.223983586351599790,\t-0.224032315717428790,\t\n-0.224081044523177040,\t-0.224129772768722670,\t-0.224178500453944300,\t-0.224227227578719240,\t-0.224275954142926110,\t-0.224324680146443110,\t-0.224373405589148840,\t-0.224422130470920610,\t\n-0.224470854791637060,\t-0.224519578551176350,\t-0.224568301749417170,\t-0.224617024386236760,\t-0.224665746461513830,\t-0.224714467975126950,\t-0.224763188926953460,\t-0.224811909316872010,\t\n-0.224860629144760770,\t-0.224909348410498390,\t-0.224958067113962240,\t-0.225006785255030900,\t-0.225055502833582580,\t-0.225104219849495970,\t-0.225152936302648350,\t-0.225201652192918410,\t\n-0.225250367520184320,\t-0.225299082284324740,\t-0.225347796485217050,\t-0.225396510122739840,\t-0.225445223196771380,\t-0.225493935707190260,\t-0.225542647653873910,\t-0.225591359036700910,\t\n-0.225640069855549520,\t-0.225688780110298390,\t-0.225737489800824890,\t-0.225786198927007660,\t-0.225834907488725340,\t-0.225883615485855340,\t-0.225932322918276310,\t-0.225981029785866460,\t\n-0.226029736088504490,\t-0.226078441826067710,\t-0.226127146998434860,\t-0.226175851605484120,\t-0.226224555647094180,\t-0.226273259123142450,\t-0.226321962033507550,\t-0.226370664378067740,\t\n-0.226419366156701720,\t-0.226468067369286820,\t-0.226516768015701780,\t-0.226565468095824810,\t-0.226614167609534590,\t-0.226662866556708560,\t-0.226711564937225330,\t-0.226760262750963200,\t\n-0.226808959997800820,\t-0.226857656677615650,\t-0.226906352790286310,\t-0.226955048335691520,\t-0.227003743313708680,\t-0.227052437724216490,\t-0.227101131567093190,\t-0.227149824842217520,\t\n-0.227198517549466850,\t-0.227247209688719860,\t-0.227295901259854880,\t-0.227344592262750560,\t-0.227393282697284320,\t-0.227441972563334870,\t-0.227490661860780510,\t-0.227539350589499920,\t\n-0.227588038749370530,\t-0.227636726340271020,\t-0.227685413362080150,\t-0.227734099814675290,\t-0.227782785697935200,\t-0.227831471011738150,\t-0.227880155755962850,\t-0.227928839930486710,\t\n-0.227977523535188490,\t-0.228026206569946460,\t-0.228074889034639350,\t-0.228123570929144560,\t-0.228172252253340870,\t-0.228220933007106550,\t-0.228269613190320330,\t-0.228318292802859620,\t\n-0.228366971844603190,\t-0.228415650315429320,\t-0.228464328215216780,\t-0.228513005543842990,\t-0.228561682301186670,\t-0.228610358487126130,\t-0.228659034101540150,\t-0.228707709144306160,\t\n-0.228756383615302870,\t-0.228805057514409080,\t-0.228853730841502210,\t-0.228902403596461000,\t-0.228951075779163770,\t-0.228999747389489310,\t-0.229048418427315020,\t-0.229097088892519700,\t\n-0.229145758784981670,\t-0.229194428104579660,\t-0.229243096851191150,\t-0.229291765024694890,\t-0.229340432624969250,\t-0.229389099651892940,\t-0.229437766105343440,\t-0.229486431985199520,\t\n-0.229535097291339560,\t-0.229583762023642250,\t-0.229632426181985120,\t-0.229681089766246900,\t-0.229729752776305970,\t-0.229778415212041120,\t-0.229827077073329780,\t-0.229875738360050740,\t\n-0.229924399072082790,\t-0.229973059209303390,\t-0.230021718771591360,\t-0.230070377758825050,\t-0.230119036170883200,\t-0.230167694007643340,\t-0.230216351268984270,\t-0.230265007954784270,\t\n-0.230313664064922210,\t-0.230362319599275560,\t-0.230410974557723110,\t-0.230459628940143210,\t-0.230508282746414690,\t-0.230556935976415020,\t-0.230605588630023030,\t-0.230654240707117490,\t\n-0.230702892207575890,\t-0.230751543131277080,\t-0.230800193478099410,\t-0.230848843247921710,\t-0.230897492440621440,\t-0.230946141056077440,\t-0.230994789094168100,\t-0.231043436554772220,\t\n-0.231092083437767330,\t-0.231140729743032210,\t-0.231189375470445270,\t-0.231238020619885330,\t-0.231286665191229900,\t-0.231335309184357800,\t-0.231383952599147430,\t-0.231432595435477620,\t\n-0.231481237693225870,\t-0.231529879372271040,\t-0.231578520472491530,\t-0.231627160993766120,\t-0.231675800935972400,\t-0.231724440298989170,\t-0.231773079082695260,\t-0.231821717286968240,\t\n-0.231870354911686890,\t-0.231918991956729690,\t-0.231967628421975440,\t-0.232016264307301680,\t-0.232064899612587250,\t-0.232113534337710590,\t-0.232162168482550500,\t-0.232210802046984580,\t\n-0.232259435030891640,\t-0.232308067434150110,\t-0.232356699256638850,\t-0.232405330498235420,\t-0.232453961158818670,\t-0.232502591238267000,\t-0.232551220736459290,\t-0.232599849653273070,\t\n-0.232648477988587260,\t-0.232697105742280250,\t-0.232745732914230900,\t-0.232794359504316790,\t-0.232842985512416780,\t-0.232891610938409740,\t-0.232940235782173240,\t-0.232988860043586150,\t\n-0.233037483722526920,\t-0.233086106818874400,\t-0.233134729332506170,\t-0.233183351263301140,\t-0.233231972611137710,\t-0.233280593375894800,\t-0.233329213557449950,\t-0.233377833155682110,\t\n-0.233426452170469640,\t-0.233475070601691510,\t-0.233523688449225250,\t-0.233572305712949760,\t-0.233620922392743960,\t-0.233669538488485430,\t-0.233718154000053020,\t-0.233766768927325260,\t\n-0.233815383270180980,\t-0.233863997028497830,\t-0.233912610202154670,\t-0.233961222791029990,\t-0.234009834795002700,\t-0.234058446213950390,\t-0.234107057047751950,\t-0.234155667296285870,\t\n-0.234204276959431050,\t-0.234252886037065120,\t-0.234301494529066960,\t-0.234350102435315070,\t-0.234398709755688360,\t-0.234447316490064450,\t-0.234495922638322220,\t-0.234544528200340220,\t\n-0.234593133175997310,\t-0.234641737565171150,\t-0.234690341367740610,\t-0.234738944583584690,\t-0.234787547212580970,\t-0.234836149254608360,\t-0.234884750709545400,\t-0.234933351577270990,\t\n-0.234981951857662770,\t-0.235030551550599650,\t-0.235079150655960160,\t-0.235127749173623250,\t-0.235176347103466520,\t-0.235224944445368900,\t-0.235273541199208960,\t-0.235322137364865570,\t\n-0.235370732942216420,\t-0.235419327931140430,\t-0.235467922331516530,\t-0.235516516143222420,\t-0.235565109366137030,\t-0.235613702000138840,\t-0.235662294045106410,\t-0.235710885500918680,\t\n-0.235759476367453290,\t-0.235808066644589230,\t-0.235856656332205400,\t-0.235905245430179540,\t-0.235953833938390530,\t-0.236002421856716970,\t-0.236051009185037770,\t-0.236099595923230600,\t\n-0.236148182071174470,\t-0.236196767628747860,\t-0.236245352595829770,\t-0.236293936972297860,\t-0.236342520758031140,\t-0.236391103952908080,\t-0.236439686556807720,\t-0.236488268569607700,\t\n-0.236536849991187010,\t-0.236585430821424610,\t-0.236634011060198210,\t-0.236682590707386810,\t-0.236731169762868900,\t-0.236779748226523510,\t-0.236828326098228320,\t-0.236876903377862320,\t\n-0.236925480065304060,\t-0.236974056160432520,\t-0.237022631663125400,\t-0.237071206573261720,\t-0.237119780890720030,\t-0.237168354615379300,\t-0.237216927747117250,\t-0.237265500285812890,\t\n-0.237314072231344790,\t-0.237362643583591940,\t-0.237411214342432040,\t-0.237459784507744100,\t-0.237508354079406710,\t-0.237556923057298860,\t-0.237605491441298280,\t-0.237654059231283940,\t\n-0.237702626427134910,\t-0.237751193028728880,\t-0.237799759035944860,\t-0.237848324448661470,\t-0.237896889266757670,\t-0.237945453490111230,\t-0.237994017118601160,\t-0.238042580152106030,\t\n-0.238091142590504870,\t-0.238139704433675460,\t-0.238188265681496760,\t-0.238236826333847410,\t-0.238285386390606420,\t-0.238333945851651550,\t-0.238382504716861790,\t-0.238431062986116220,\t\n-0.238479620659292540,\t-0.238528177736269830,\t-0.238576734216926660,\t-0.238625290101142080,\t-0.238673845388793880,\t-0.238722400079761030,\t-0.238770954173922190,\t-0.238819507671156390,\t\n-0.238868060571341410,\t-0.238916612874356280,\t-0.238965164580079600,\t-0.239013715688390440,\t-0.239062266199166570,\t-0.239110816112287020,\t-0.239159365427630440,\t-0.239207914145075890,\t\n-0.239256462264501090,\t-0.239305009785785170,\t-0.239353556708806700,\t-0.239402103033444780,\t-0.239450648759577170,\t-0.239499193887082930,\t-0.239547738415841150,\t-0.239596282345729610,\t\n-0.239644825676627340,\t-0.239693368408413020,\t-0.239741910540965690,\t-0.239790452074163160,\t-0.239838993007884500,\t-0.239887533342008350,\t-0.239936073076413820,\t-0.239984612210978670,\t\n-0.240033150745581960,\t-0.240081688680102410,\t-0.240130226014419050,\t-0.240178762748409710,\t-0.240227298881953430,\t-0.240275834414928950,\t-0.240324369347215290,\t-0.240372903678690270,\t\n-0.240421437409233000,\t-0.240469970538722130,\t-0.240518503067036760,\t-0.240567034994054710,\t-0.240615566319655080,\t-0.240664097043716970,\t-0.240712627166118160,\t-0.240761156686737810,\t\n-0.240809685605454540,\t-0.240858213922147510,\t-0.240906741636694510,\t-0.240955268748974660,\t-0.241003795258866640,\t-0.241052321166249560,\t-0.241100846471001220,\t-0.241149371173000780,\t\n-0.241197895272126930,\t-0.241246418768258750,\t-0.241294941661274100,\t-0.241343463951052110,\t-0.241391985637471880,\t-0.241440506720411260,\t-0.241489027199749350,\t-0.241537547075364900,\t\n-0.241586066347137000,\t-0.241634585014943500,\t-0.241683103078663560,\t-0.241731620538175850,\t-0.241780137393359520,\t-0.241828653644092400,\t-0.241877169290253660,\t-0.241925684331721990,\t\n-0.241974198768376560,\t-0.242022712600095170,\t-0.242071225826757020,\t-0.242119738448240810,\t-0.242168250464425670,\t-0.242216761875189480,\t-0.242265272680411370,\t-0.242313782879970100,\t\n-0.242362292473744800,\t-0.242410801461613340,\t-0.242459309843454870,\t-0.242507817619148550,\t-0.242556324788572280,\t-0.242604831351605180,\t-0.242653337308125990,\t-0.242701842658013920,\t\n-0.242750347401146790,\t-0.242798851537403800,\t-0.242847355066663660,\t-0.242895857988805590,\t-0.242944360303707420,\t-0.242992862011248370,\t-0.243041363111307170,\t-0.243089863603762970,\t\n-0.243138363488493690,\t-0.243186862765378510,\t-0.243235361434296170,\t-0.243283859495125850,\t-0.243332356947745470,\t-0.243380853792034170,\t-0.243429350027870750,\t-0.243477845655134390,\t\n-0.243526340673702960,\t-0.243574835083455700,\t-0.243623328884271790,\t-0.243671822076029110,\t-0.243720314658606880,\t-0.243768806631883880,\t-0.243817297995739280,\t-0.243865788750050990,\t\n-0.243914278894698240,\t-0.243962768429559800,\t-0.244011257354514870,\t-0.244059745669441360,\t-0.244108233374218500,\t-0.244156720468725050,\t-0.244205206952840200,\t-0.244253692826441940,\t\n-0.244302178089409430,\t-0.244350662741621930,\t-0.244399146782957290,\t-0.244447630213294830,\t-0.244496113032513280,\t-0.244544595240491880,\t-0.244593076837108570,\t-0.244641557822242560,\t\n-0.244690038195772650,\t-0.244738517957578060,\t-0.244786997107536760,\t-0.244835475645527990,\t-0.244883953571430500,\t-0.244932430885123560,\t-0.244980907586485140,\t-0.245029383675394420,\t\n-0.245077859151730250,\t-0.245126334015371870,\t-0.245174808266197230,\t-0.245223281904085540,\t-0.245271754928915680,\t-0.245320227340566850,\t-0.245368699138917010,\t-0.245417170323845440,\t\n-0.245465640895231370,\t-0.245514110852952770,\t-0.245562580196888870,\t-0.245611048926918540,\t-0.245659517042921020,\t-0.245707984544774270,\t-0.245756451432357550,\t-0.245804917705549740,\t\n-0.245853383364230020,\t-0.245901848408276450,\t-0.245950312837568240,\t-0.245998776651984250,\t-0.246047239851403730,\t-0.246095702435704690,\t-0.246144164404766410,\t-0.246192625758467700,\t\n-0.246241086496687880,\t-0.246289546619304880,\t-0.246338006126198050,\t-0.246386465017246180,\t-0.246434923292328580,\t-0.246483380951323240,\t-0.246531837994109470,\t-0.246580294420566530,\t\n-0.246628750230572400,\t-0.246677205424006420,\t-0.246725660000747420,\t-0.246774113960674670,\t-0.246822567303666250,\t-0.246871020029601370,\t-0.246919472138358960,\t-0.246967923629818310,\t\n-0.247016374503857410,\t-0.247064824760355600,\t-0.247113274399191700,\t-0.247161723420245030,\t-0.247210171823393670,\t-0.247258619608516830,\t-0.247307066775493910,\t-0.247355513324202860,\t\n-0.247403959254523050,\t-0.247452404566333330,\t-0.247500849259512600,\t-0.247549293333940180,\t-0.247597736789494090,\t-0.247646179626053680,\t-0.247694621843498250,\t-0.247743063441705800,\t\n-0.247791504420555720,\t-0.247839944779926880,\t-0.247888384519698610,\t-0.247936823639748920,\t-0.247985262139957200,\t-0.248033700020202750,\t-0.248082137280363600,\t-0.248130573920319120,\t\n-0.248179009939948210,\t-0.248227445339129770,\t-0.248275880117743150,\t-0.248324314275666400,\t-0.248372747812778880,\t-0.248421180728959880,\t-0.248469613024087540,\t-0.248518044698041150,\t\n-0.248566475750699650,\t-0.248614906181942400,\t-0.248663335991647440,\t-0.248711765179694150,\t-0.248760193745961420,\t-0.248808621690328660,\t-0.248857049012673910,\t-0.248905475712876550,\t\n-0.248953901790815500,\t-0.249002327246370110,\t-0.249050752079418490,\t-0.249099176289839960,\t-0.249147599877513950,\t-0.249196022842318510,\t-0.249244445184133000,\t-0.249292866902836360,\t\n-0.249341287998307570,\t-0.249389708470425990,\t-0.249438128319069720,\t-0.249486547544118110,\t-0.249534966145450590,\t-0.249583384122945200,\t-0.249631801476481370,\t-0.249680218205938030,\t\n-0.249728634311194550,\t-0.249777049792129090,\t-0.249825464648620960,\t-0.249873878880549210,\t-0.249922292487793190,\t-0.249970705470230980,\t-0.250019117827742050,\t-0.250067529560205280,\t\n-0.250115940667500150,\t-0.250164351149504690,\t-0.250212761006098410,\t-0.250261170237160660,\t-0.250309578842569490,\t-0.250357986822204450,\t-0.250406394175944400,\t-0.250454800903668340,\t\n-0.250503207005255750,\t-0.250551612480584720,\t-0.250600017329534630,\t-0.250648421551984910,\t-0.250696825147813720,\t-0.250745228116900480,\t-0.250793630459124170,\t-0.250842032174364240,\t\n-0.250890433262498770,\t-0.250938833723407200,\t-0.250987233556969000,\t-0.251035632763062290,\t-0.251084031341566480,\t-0.251132429292360630,\t-0.251180826615323650,\t-0.251229223310335090,\t\n-0.251277619377273000,\t-0.251326014816016910,\t-0.251374409626446140,\t-0.251422803808438950,\t-0.251471197361874790,\t-0.251519590286632570,\t-0.251567982582591830,\t-0.251616374249630740,\t\n-0.251664765287628660,\t-0.251713155696464690,\t-0.251761545476018260,\t-0.251809934626167580,\t-0.251858323146792020,\t-0.251906711037770630,\t-0.251955098298982940,\t-0.252003484930307050,\t\n-0.252051870931622460,\t-0.252100256302808580,\t-0.252148641043743680,\t-0.252197025154307140,\t-0.252245408634378050,\t-0.252293791483835460,\t-0.252342173702558790,\t-0.252390555290426310,\t\n-0.252438936247317390,\t-0.252487316573111580,\t-0.252535696267687020,\t-0.252584075330923250,\t-0.252632453762699270,\t-0.252680831562894610,\t-0.252729208731387430,\t-0.252777585268057270,\t\n-0.252825961172783110,\t-0.252874336445444440,\t-0.252922711085919520,\t-0.252971085094087830,\t-0.253019458469828480,\t-0.253067831213020840,\t-0.253116203323543230,\t-0.253164574801275080,\t\n-0.253212945646095980,\t-0.253261315857884030,\t-0.253309685436518830,\t-0.253358054381879360,\t-0.253406422693845220,\t-0.253454790372294620,\t-0.253503157417106990,\t-0.253551523828161480,\t\n-0.253599889605337640,\t-0.253648254748513600,\t-0.253696619257568920,\t-0.253744983132382750,\t-0.253793346372834520,\t-0.253841708978802430,\t-0.253890070950166140,\t-0.253938432286805070,\t\n-0.253986792988597500,\t-0.254035153055422960,\t-0.254083512487160550,\t-0.254131871283689300,\t-0.254180229444888880,\t-0.254228586970637380,\t-0.254276943860814450,\t-0.254325300115299640,\t\n-0.254373655733971080,\t-0.254422010716708390,\t-0.254470365063390660,\t-0.254518718773897480,\t-0.254567071848107060,\t-0.254615424285899010,\t-0.254663776087152350,\t-0.254712127251746630,\t\n-0.254760477779560230,\t-0.254808827670472640,\t-0.254857176924362940,\t-0.254905525541110790,\t-0.254953873520594340,\t-0.255002220862693200,\t-0.255050567567286950,\t-0.255098913634253910,\t\n-0.255147259063473520,\t-0.255195603854824980,\t-0.255243948008187450,\t-0.255292291523440520,\t-0.255340634400462340,\t-0.255388976639132630,\t-0.255437318239330910,\t-0.255485659200935470,\t\n-0.255533999523825880,\t-0.255582339207881260,\t-0.255630678252981250,\t-0.255679016659004110,\t-0.255727354425829450,\t-0.255775691553336350,\t-0.255824028041404530,\t-0.255872363889912140,\t\n-0.255920699098738880,\t-0.255969033667763860,\t-0.256017367596866660,\t-0.256065700885925620,\t-0.256114033534820370,\t-0.256162365543430410,\t-0.256210696911634170,\t-0.256259027639311130,\t\n-0.256307357726340560,\t-0.256355687172601990,\t-0.256404015977973800,\t-0.256452344142335530,\t-0.256500671665566450,\t-0.256548998547546090,\t-0.256597324788152840,\t-0.256645650387266220,\t\n-0.256693975344765510,\t-0.256742299660530300,\t-0.256790623334438920,\t-0.256838946366370950,\t-0.256887268756206040,\t-0.256935590503822590,\t-0.256983911609100110,\t-0.257032232071917830,\t\n-0.257080551892155010,\t-0.257128871069691230,\t-0.257177189604404830,\t-0.257225507496175450,\t-0.257273824744882810,\t-0.257322141350405100,\t-0.257370457312622040,\t-0.257418772631412830,\t\n-0.257467087306657180,\t-0.257515401338233310,\t-0.257563714726020960,\t-0.257612027469899360,\t-0.257660339569748100,\t-0.257708651025445550,\t-0.257756961836871360,\t-0.257805272003904800,\t\n-0.257853581526425460,\t-0.257901890404311770,\t-0.257950198637443340,\t-0.257998506225699810,\t-0.258046813168959610,\t-0.258095119467102400,\t-0.258143425120007370,\t-0.258191730127553750,\t\n-0.258240034489621300,\t-0.258288338206088260,\t-0.258336641276834420,\t-0.258384943701739420,\t-0.258433245480681580,\t-0.258481546613540670,\t-0.258529847100195890,\t-0.258578146940526890,\t\n-0.258626446134412100,\t-0.258674744681731240,\t-0.258723042582363500,\t-0.258771339836188550,\t-0.258819636443084870,\t-0.258867932402932040,\t-0.258916227715609400,\t-0.258964522380996650,\t\n-0.259012816398972170,\t-0.259061109769415600,\t-0.259109402492206710,\t-0.259157694567223870,\t-0.259205985994346800,\t-0.259254276773454810,\t-0.259302566904427490,\t-0.259350856387143340,\t\n-0.259399145221482110,\t-0.259447433407322960,\t-0.259495720944545650,\t-0.259544007833028610,\t-0.259592294072651550,\t-0.259640579663293790,\t-0.259688864604834980,\t-0.259737148897153600,\t\n-0.259785432540129370,\t-0.259833715533641930,\t-0.259881997877569830,\t-0.259930279571792660,\t-0.259978560616189850,\t-0.260026841010640610,\t-0.260075120755024700,\t-0.260123399849220560,\t\n-0.260171678293107940,\t-0.260219956086566560,\t-0.260268233229474840,\t-0.260316509721712550,\t-0.260364785563158950,\t-0.260413060753693860,\t-0.260461335293195650,\t-0.260509609181544140,\t\n-0.260557882418618600,\t-0.260606155004298790,\t-0.260654426938463140,\t-0.260702698220991400,\t-0.260750968851762970,\t-0.260799238830657530,\t-0.260847508157553530,\t-0.260895776832330780,\t\n-0.260944044854869050,\t-0.260992312225046710,\t-0.261040578942743630,\t-0.261088845007839130,\t-0.261137110420212480,\t-0.261185375179743500,\t-0.261233639286310660,\t-0.261281902739793680,\t\n-0.261330165540072430,\t-0.261378427687025290,\t-0.261426689180532080,\t-0.261474950020472160,\t-0.261523210206725310,\t-0.261571469739170000,\t-0.261619728617686010,\t-0.261667986842152700,\t\n-0.261716244412449890,\t-0.261764501328455970,\t-0.261812757590050850,\t-0.261861013197113800,\t-0.261909268149524700,\t-0.261957522447161920,\t-0.262005776089905380,\t-0.262054029077634810,\t\n-0.262102281410228790,\t-0.262150533087567030,\t-0.262198784109528900,\t-0.262247034475994290,\t-0.262295284186841670,\t-0.262343533241950810,\t-0.262391781641201140,\t-0.262440029384472420,\t\n-0.262488276471643240,\t-0.262536522902593330,\t-0.262584768677202100,\t-0.262633013795349420,\t-0.262681258256913740,\t-0.262729502061774920,\t-0.262777745209812790,\t-0.262825987700905870,\t\n-0.262874229534934000,\t-0.262922470711776550,\t-0.262970711231312880,\t-0.263018951093422880,\t-0.263067190297985090,\t-0.263115428844879320,\t-0.263163666733985390,\t-0.263211903965181850,\t\n-0.263260140538348620,\t-0.263308376453364970,\t-0.263356611710110820,\t-0.263404846308464720,\t-0.263453080248306550,\t-0.263501313529515610,\t-0.263549546151971850,\t-0.263597778115553790,\t\n-0.263646009420141270,\t-0.263694240065613760,\t-0.263742470051851030,\t-0.263790699378731730,\t-0.263838928046135680,\t-0.263887156053942750,\t-0.263935383402031490,\t-0.263983610090281760,\t\n-0.264031836118573000,\t-0.264080061486784650,\t-0.264128286194796610,\t-0.264176510242487390,\t-0.264224733629736920,\t-0.264272956356425060,\t-0.264321178422430300,\t-0.264369399827632690,\t\n-0.264417620571911540,\t-0.264465840655146780,\t-0.264514060077216950,\t-0.264562278838001990,\t-0.264610496937381760,\t-0.264658714375234860,\t-0.264706931151441170,\t-0.264755147265880180,\t\n-0.264803362718431300,\t-0.264851577508974480,\t-0.264899791637388250,\t-0.264948005103552540,\t-0.264996217907347230,\t-0.265044430048650970,\t-0.265092641527343630,\t-0.265140852343304700,\t\n-0.265189062496414050,\t-0.265237271986550340,\t-0.265285480813593430,\t-0.265333688977422820,\t-0.265381896477918430,\t-0.265430103314958870,\t-0.265478309488423990,\t-0.265526514998193410,\t\n-0.265574719844146930,\t-0.265622924026163280,\t-0.265671127544122250,\t-0.265719330397903850,\t-0.265767532587386720,\t-0.265815734112450740,\t-0.265863934972975450,\t-0.265912135168840270,\t\n-0.265960334699925250,\t-0.266008533566108930,\t-0.266056731767271240,\t-0.266104929303292210,\t-0.266153126174050400,\t-0.266201322379425730,\t-0.266249517919297850,\t-0.266297712793546530,\t\n-0.266345907002050520,\t-0.266394100544689760,\t-0.266442293421343730,\t-0.266490485631892370,\t-0.266538677176214430,\t-0.266586868054189740,\t-0.266635058265697940,\t-0.266683247810618860,\t\n-0.266731436688831260,\t-0.266779624900215060,\t-0.266827812444650260,\t-0.266875999322015440,\t-0.266924185532190660,\t-0.266972371075055450,\t-0.267020555950489680,\t-0.267068740158372120,\t\n-0.267116923698582700,\t-0.267165106571000950,\t-0.267213288775506930,\t-0.267261470311979220,\t-0.267309651180297810,\t-0.267357831380342300,\t-0.267406010911992620,\t-0.267454189775127530,\t\n-0.267502367969626900,\t-0.267550545495370830,\t-0.267598722352237970,\t-0.267646898540108260,\t-0.267695074058861340,\t-0.267743248908376750,\t-0.267791423088534430,\t-0.267839596599213140,\t\n-0.267887769440292860,\t-0.267935941611653570,\t-0.267984113113173990,\t-0.268032283944734160,\t-0.268080454106213560,\t-0.268128623597492340,\t-0.268176792418449050,\t-0.268224960568963830,\t\n-0.268273128048916230,\t-0.268321294858186180,\t-0.268369460996652490,\t-0.268417626464195150,\t-0.268465791260693750,\t-0.268513955386028290,\t-0.268562118840077520,\t-0.268610281622721440,\t\n-0.268658443733840120,\t-0.268706605173312240,\t-0.268754765941017830,\t-0.268802926036836530,\t-0.268851085460647900,\t-0.268899244212331970,\t-0.268947402291767500,\t-0.268995559698834540,\t\n-0.269043716433413130,\t-0.269091872495381970,\t-0.269140027884621160,\t-0.269188182601010240,\t-0.269236336644429360,\t-0.269284490014757130,\t-0.269332642711873740,\t-0.269380794735658680,\t\n-0.269428946085992100,\t-0.269477096762752720,\t-0.269525246765820630,\t-0.269573396095075360,\t-0.269621544750397070,\t-0.269669692731664470,\t-0.269717840038757650,\t-0.269765986671556660,\t\n-0.269814132629940310,\t-0.269862277913788580,\t-0.269910422522981140,\t-0.269958566457398130,\t-0.270006709716918260,\t-0.270054852301421570,\t-0.270102994210787820,\t-0.270151135444896940,\t\n-0.270199276003627810,\t-0.270247415886860520,\t-0.270295555094474670,\t-0.270343693626350360,\t-0.270391831482366400,\t-0.270439968662402890,\t-0.270488105166339870,\t-0.270536240994056100,\t\n-0.270584376145431790,\t-0.270632510620346490,\t-0.270680644418679950,\t-0.270728777540312220,\t-0.270776909985122160,\t-0.270825041752989770,\t-0.270873172843795200,\t-0.270921303257417310,\t\n-0.270969432993736100,\t-0.271017562052631390,\t-0.271065690433983150,\t-0.271113818137670270,\t-0.271161945163572840,\t-0.271210071511570560,\t-0.271258197181543480,\t-0.271306322173370530,\t\n-0.271354446486931740,\t-0.271402570122106890,\t-0.271450693078776010,\t-0.271498815356817970,\t-0.271546936956112870,\t-0.271595057876540870,\t-0.271643178117980830,\t-0.271691297680312800,\t\n-0.271739416563416550,\t-0.271787534767171770,\t-0.271835652291458560,\t-0.271883769136155810,\t-0.271931885301143590,\t-0.271980000786302130,\t-0.272028115591510240,\t-0.272076229716648020,\t\n-0.272124343161595280,\t-0.272172455926232070,\t-0.272220568010437310,\t-0.272268679414091110,\t-0.272316790137073270,\t-0.272364900179263850,\t-0.272413009540541710,\t-0.272461118220787110,\t\n-0.272509226219879660,\t-0.272557333537699620,\t-0.272605440174125800,\t-0.272653546129038360,\t-0.272701651402317500,\t-0.272749755993842050,\t-0.272797859903492260,\t-0.272845963131147780,\t\n-0.272894065676688890,\t-0.272942167539994340,\t-0.272990268720944400,\t-0.273038369219418760,\t-0.273086469035297650,\t-0.273134568168459930,\t-0.273182666618785820,\t-0.273230764386155010,\t\n-0.273278861470447720,\t-0.273326957871542870,\t-0.273375053589320570,\t-0.273423148623661130,\t-0.273471242974443360,\t-0.273519336641547480,\t-0.273567429624853250,\t-0.273615521924240490,\t\n-0.273663613539589290,\t-0.273711704470778690,\t-0.273759794717688800,\t-0.273807884280199860,\t-0.273855973158190770,\t-0.273904061351541770,\t-0.273952148860132580,\t-0.274000235683843460,\t\n-0.274048321822553340,\t-0.274096407276142370,\t-0.274144492044490430,\t-0.274192576127477660,\t-0.274240659524983050,\t-0.274288742236886760,\t-0.274336824263068660,\t-0.274384905603408890,\t\n-0.274432986257786450,\t-0.274481066226081540,\t-0.274529145508174370,\t-0.274577224103943920,\t-0.274625302013270400,\t-0.274673379236033630,\t-0.274721455772113430,\t-0.274769531621390010,\t\n-0.274817606783742340,\t-0.274865681259050640,\t-0.274913755047195170,\t-0.274961828148054870,\t-0.275009900561510030,\t-0.275057972287440390,\t-0.275106043325726300,\t-0.275154113676246650,\t\n-0.275202183338881750,\t-0.275250252313511360,\t-0.275298320600015740,\t-0.275346388198273890,\t-0.275394455108166130,\t-0.275442521329572200,\t-0.275490586862372380,\t-0.275538651706445700,\t\n-0.275586715861672380,\t-0.275634779327932680,\t-0.275682842105105630,\t-0.275730904193071450,\t-0.275778965591710000,\t-0.275827026300901610,\t-0.275875086320525150,\t-0.275923145650461050,\t\n-0.275971204290589080,\t-0.276019262240789490,\t-0.276067319500941320,\t-0.276115376070924900,\t-0.276163431950619990,\t-0.276211487139906950,\t-0.276259541638664730,\t-0.276307595446773690,\t\n-0.276355648564114100,\t-0.276403700990564940,\t-0.276451752726006530,\t-0.276499803770318740,\t-0.276547854123381450,\t-0.276595903785074930,\t-0.276643952755278260,\t-0.276692001033871650,\t\n-0.276740048620735530,\t-0.276788095515748790,\t-0.276836141718791890,\t-0.276884187229744560,\t-0.276932232048487270,\t-0.276980276174898900,\t-0.277028319608859870,\t-0.277076362350250070,\t\n-0.277124404398949750,\t-0.277172445754838010,\t-0.277220486417795120,\t-0.277268526387701050,\t-0.277316565664436080,\t-0.277364604247879290,\t-0.277412642137910950,\t-0.277460679334411490,\t\n-0.277508715837259830,\t-0.277556751646336420,\t-0.277604786761521170,\t-0.277652821182693910,\t-0.277700854909735010,\t-0.277748887942523560,\t-0.277796920280939890,\t-0.277844951924864360,\t\n-0.277892982874176020,\t-0.277941013128755240,\t-0.277989042688481900,\t-0.278037071553236370,\t-0.278085099722897740,\t-0.278133127197346400,\t-0.278181153976462650,\t-0.278229180060125540,\t\n-0.278277205448215550,\t-0.278325230140612500,\t-0.278373254137196380,\t-0.278421277437847560,\t-0.278469300042445130,\t-0.278517321950869420,\t-0.278565343163000860,\t-0.278613363678718530,\t\n-0.278661383497902760,\t-0.278709402620433530,\t-0.278757421046191220,\t-0.278805438775054980,\t-0.278853455806905070,\t-0.278901472141621590,\t-0.278949487779084790,\t-0.278997502719173900,\t\n-0.279045516961769210,\t-0.279093530506750790,\t-0.279141543353998880,\t-0.279189555503392750,\t-0.279237566954812720,\t-0.279285577708139220,\t-0.279333587763251290,\t-0.279381597120029410,\t\n-0.279429605778353570,\t-0.279477613738103700,\t-0.279525620999160230,\t-0.279573627561402250,\t-0.279621633424710250,\t-0.279669638588964540,\t-0.279717643054044340,\t-0.279765646819830020,\t\n-0.279813649886201610,\t-0.279861652253039440,\t-0.279909653920222770,\t-0.279957654887631970,\t-0.280005655155146970,\t-0.280053654722648320,\t-0.280101653590015100,\t-0.280149651757127690,\t\n-0.280197649223866200,\t-0.280245645990111040,\t-0.280293642055741310,\t-0.280341637420637450,\t-0.280389632084679930,\t-0.280437626047747910,\t-0.280485619309721880,\t-0.280533611870481760,\t\n-0.280581603729907590,\t-0.280629594887879860,\t-0.280677585344277670,\t-0.280725575098981550,\t-0.280773564151871930,\t-0.280821552502827980,\t-0.280869540151730160,\t-0.280917527098458460,\t\n-0.280965513342893380,\t-0.281013498884914060,\t-0.281061483724401040,\t-0.281109467861234700,\t-0.281157451295294290,\t-0.281205434026460200,\t-0.281253416054612570,\t-0.281301397379631450,\t\n-0.281349378001397200,\t-0.281397357919789090,\t-0.281445337134687560,\t-0.281493315645973130,\t-0.281541293453525020,\t-0.281589270557223600,\t-0.281637246956949080,\t-0.281685222652581830,\t\n-0.281733197644001120,\t-0.281781171931087430,\t-0.281829145513720740,\t-0.281877118391781700,\t-0.281925090565149360,\t-0.281973062033704310,\t-0.282021032797326650,\t-0.282069002855896810,\t\n-0.282116972209294050,\t-0.282164940857398850,\t-0.282212908800091700,\t-0.282260876037251860,\t-0.282308842568759880,\t-0.282356808394495730,\t-0.282404773514339570,\t-0.282452737928171940,\t\n-0.282500701635871990,\t-0.282548664637320310,\t-0.282596626932397400,\t-0.282644588520982510,\t-0.282692549402956130,\t-0.282740509578198350,\t-0.282788469046589770,\t-0.282836427808009610,\t\n-0.282884385862338330,\t-0.282932343209456090,\t-0.282980299849243440,\t-0.283028255781579590,\t-0.283076211006345110,\t-0.283124165523420070,\t-0.283172119332685100,\t-0.283220072434019370,\t\n-0.283268024827303510,\t-0.283315976512417970,\t-0.283363927489242050,\t-0.283411877757656310,\t-0.283459827317540940,\t-0.283507776168776370,\t-0.283555724311241930,\t-0.283603671744818210,\t\n-0.283651618469385300,\t-0.283699564484823750,\t-0.283747509791012880,\t-0.283795454387833270,\t-0.283843398275164970,\t-0.283891341452888630,\t-0.283939283920883470,\t-0.283987225679030120,\t\n-0.284035166727209190,\t-0.284083107065299880,\t-0.284131046693182790,\t-0.284178985610738070,\t-0.284226923817845870,\t-0.284274861314386840,\t-0.284322798100240190,\t-0.284370734175286580,\t\n-0.284418669539406530,\t-0.284466604192479430,\t-0.284514538134385760,\t-0.284562471365005790,\t-0.284610403884220040,\t-0.284658335691907850,\t-0.284706266787949860,\t-0.284754197172226160,\t\n-0.284802126844617420,\t-0.284850055805002940,\t-0.284897984053263280,\t-0.284945911589278680,\t-0.284993838412929750,\t-0.285041764524095800,\t-0.285089689922657430,\t-0.285137614608495240,\t\n-0.285185538581488600,\t-0.285233461841518100,\t-0.285281384388463950,\t-0.285329306222206370,\t-0.285377227342625940,\t-0.285425147749601980,\t-0.285473067443015200,\t-0.285520986422746150,\t\n-0.285568904688674190,\t-0.285616822240680020,\t-0.285664739078643760,\t-0.285712655202446100,\t-0.285760570611966360,\t-0.285808485307085190,\t-0.285856399287682810,\t-0.285904312553639850,\t\n-0.285952225104835700,\t-0.286000136941150950,\t-0.286048048062465920,\t-0.286095958468661150,\t-0.286143868159616070,\t-0.286191777135211320,\t-0.286239685395327570,\t-0.286287592939844130,\t\n-0.286335499768641750,\t-0.286383405881600610,\t-0.286431311278601390,\t-0.286479215959523470,\t-0.286527119924247510,\t-0.286575023172653710,\t-0.286622925704622830,\t-0.286670827520034140,\t\n-0.286718728618768460,\t-0.286766629000705930,\t-0.286814528665727260,\t-0.286862427613711830,\t-0.286910325844540350,\t-0.286958223358093460,\t-0.287006120154250590,\t-0.287054016232892390,\t\n-0.287101911593899200,\t-0.287149806237151200,\t-0.287197700162529160,\t-0.287245593369912400,\t-0.287293485859181690,\t-0.287341377630217610,\t-0.287389268682899710,\t-0.287437159017108650,\t\n-0.287485048632724730,\t-0.287532937529628550,\t-0.287580825707699610,\t-0.287628713166818650,\t-0.287676599906865840,\t-0.287724485927721980,\t-0.287772371229266520,\t-0.287820255811380100,\t\n-0.287868139673943040,\t-0.287916022816836090,\t-0.287963905239938590,\t-0.288011786943131400,\t-0.288059667926295120,\t-0.288107548189309230,\t-0.288155427732054490,\t-0.288203306554411230,\t\n-0.288251184656259650,\t-0.288299062037480570,\t-0.288346938697953360,\t-0.288394814637558840,\t-0.288442689856177710,\t-0.288490564353689420,\t-0.288538438129974710,\t-0.288586311184913900,\t\n-0.288634183518387770,\t-0.288682055130275730,\t-0.288729926020458550,\t-0.288777796188816550,\t-0.288825665635230490,\t-0.288873534359579850,\t-0.288921402361745410,\t-0.288969269641607410,\t\n-0.289017136199046680,\t-0.289065002033942700,\t-0.289112867146176180,\t-0.289160731535627940,\t-0.289208595202177450,\t-0.289256458145705440,\t-0.289304320366092330,\t-0.289352181863218820,\t\n-0.289400042636964390,\t-0.289447902687209930,\t-0.289495762013835700,\t-0.289543620616722450,\t-0.289591478495749730,\t-0.289639335650798360,\t-0.289687192081748590,\t-0.289735047788481300,\t\n-0.289782902770875980,\t-0.289830757028813390,\t-0.289878610562174290,\t-0.289926463370838270,\t-0.289974315454686100,\t-0.290022166813598160,\t-0.290070017447454750,\t-0.290117867356136760,\t\n-0.290165716539523670,\t-0.290213564997496290,\t-0.290261412729935440,\t-0.290309259736720620,\t-0.290357106017732620,\t-0.290404951572851900,\t-0.290452796401959200,\t-0.290500640504934070,\t\n-0.290548483881657380,\t-0.290596326532009450,\t-0.290644168455871150,\t-0.290692009653121970,\t-0.290739850123642780,\t-0.290787689867314010,\t-0.290835528884016370,\t-0.290883367173629560,\t\n-0.290931204736034290,\t-0.290979041571111430,\t-0.291026877678740530,\t-0.291074713058802450,\t-0.291122547711177570,\t-0.291170381635746320,\t-0.291218214832389580,\t-0.291266047300986870,\t\n-0.291313879041419030,\t-0.291361710053566920,\t-0.291409540337310090,\t-0.291457369892529410,\t-0.291505198719105350,\t-0.291553026816918690,\t-0.291600854185849020,\t-0.291648680825777220,\t\n-0.291696506736584150,\t-0.291744331918149410,\t-0.291792156370353830,\t-0.291839980093077880,\t-0.291887803086201940,\t-0.291935625349606930,\t-0.291983446883172400,\t-0.292031267686779280,\t\n-0.292079087760308440,\t-0.292126907103639420,\t-0.292174725716653150,\t-0.292222543599230110,\t-0.292270360751251070,\t-0.292318177172595730,\t-0.292365992863144910,\t-0.292413807822779150,\t\n-0.292461622051379320,\t-0.292509435548824970,\t-0.292557248314997020,\t-0.292605060349775960,\t-0.292652871653042710,\t-0.292700682224676820,\t-0.292748492064559220,\t-0.292796301172570830,\t\n-0.292844109548591250,\t-0.292891917192501410,\t-0.292939724104181790,\t-0.292987530283512820,\t-0.293035335730375490,\t-0.293083140444649340,\t-0.293130944426215400,\t-0.293178747674954500,\t\n-0.293226550190746280,\t-0.293274351973471740,\t-0.293322153023011290,\t-0.293369953339245870,\t-0.293417752922055190,\t-0.293465551771320050,\t-0.293513349886921070,\t-0.293561147268739160,\t\n-0.293608943916653930,\t-0.293656739830546350,\t-0.293704535010296920,\t-0.293752329455786610,\t-0.293800123166895020,\t-0.293847916143503090,\t-0.293895708385491840,\t-0.293943499892740880,\t\n-0.293991290665131190,\t-0.294039080702543250,\t-0.294086870004857610,\t-0.294134658571955250,\t-0.294182446403715770,\t-0.294230233500020200,\t-0.294278019860749470,\t-0.294325805485783240,\t\n-0.294373590375002550,\t-0.294421374528287870,\t-0.294469157945520140,\t-0.294516940626579130,\t-0.294564722571345750,\t-0.294612503779701000,\t-0.294660284251524520,\t-0.294708063986697410,\t\n-0.294755842985100100,\t-0.294803621246613130,\t-0.294851398771117600,\t-0.294899175558493150,\t-0.294946951608620720,\t-0.294994726921381340,\t-0.295042501496654790,\t-0.295090275334321920,\t\n-0.295138048434263330,\t-0.295185820796360130,\t-0.295233592420491910,\t-0.295281363306539700,\t-0.295329133454384110,\t-0.295376902863906050,\t-0.295424671534985360,\t-0.295472439467503010,\t\n-0.295520206661339550,\t-0.295567973116375950,\t-0.295615738832492040,\t-0.295663503809568740,\t-0.295711268047487150,\t-0.295759031546126930,\t-0.295806794305369160,\t-0.295854556325094390,\t\n-0.295902317605183260,\t-0.295950078145516720,\t-0.295997837945974560,\t-0.296045597006437840,\t-0.296093355326787540,\t-0.296141112906903430,\t-0.296188869746666530,\t-0.296236625845957450,\t\n-0.296284381204657220,\t-0.296332135822645610,\t-0.296379889699803670,\t-0.296427642836012030,\t-0.296475395231151680,\t-0.296523146885102450,\t-0.296570897797745310,\t-0.296618647968960980,\t\n-0.296666397398630380,\t-0.296714146086633430,\t-0.296761894032851080,\t-0.296809641237164410,\t-0.296857387699453250,\t-0.296905133419598620,\t-0.296952878397481130,\t-0.297000622632981880,\t\n-0.297048366125980620,\t-0.297096108876358460,\t-0.297143850883996030,\t-0.297191592148774440,\t-0.297239332670573400,\t-0.297287072449274050,\t-0.297334811484756990,\t-0.297382549776903370,\t\n-0.297430287325592900,\t-0.297478024130706730,\t-0.297525760192125950,\t-0.297573495509730330,\t-0.297621230083400970,\t-0.297668963913018500,\t-0.297716696998463700,\t-0.297764429339617500,\t\n-0.297812160936359870,\t-0.297859891788571810,\t-0.297907621896134400,\t-0.297955351258927580,\t-0.298003079876832330,\t-0.298050807749729420,\t-0.298098534877499880,\t-0.298146261260023640,\t\n-0.298193986897181680,\t-0.298241711788854780,\t-0.298289435934924020,\t-0.298337159335269280,\t-0.298384881989771590,\t-0.298432603898311720,\t-0.298480325060770770,\t-0.298528045477028550,\t\n-0.298575765146966270,\t-0.298623484070464960,\t-0.298671202247404510,\t-0.298718919677666060,\t-0.298766636361130320,\t-0.298814352297678000,\t-0.298862067487190240,\t-0.298909781929546870,\t\n-0.298957495624629030,\t-0.299005208572317880,\t-0.299052920772493290,\t-0.299100632225036410,\t-0.299148342929827950,\t-0.299196052886749000,\t-0.299243762095679540,\t-0.299291470556500680,\t\n-0.299339178269093120,\t-0.299386885233338060,\t-0.299434591449115380,\t-0.299482296916306180,\t-0.299530001634791270,\t-0.299577705604451740,\t-0.299625408825167580,\t-0.299673111296819840,\t\n-0.299720813019289770,\t-0.299768513992457300,\t-0.299816214216203470,\t-0.299863913690409100,\t-0.299911612414955400,\t-0.299959310389722230,\t-0.300007007614590810,\t-0.300054704089441850,\t\n-0.300102399814156600,\t-0.300150094788614870,\t-0.300197789012697950,\t-0.300245482486286520,\t-0.300293175209261800,\t-0.300340867181503710,\t-0.300388558402893470,\t-0.300436248873312270,\t\n-0.300483938592640050,\t-0.300531627560757960,\t-0.300579315777546760,\t-0.300627003242887330,\t-0.300674689956660800,\t-0.300722375918747060,\t-0.300770061129027490,\t-0.300817745587383110,\t\n-0.300865429293693980,\t-0.300913112247841230,\t-0.300960794449705750,\t-0.301008475899168680,\t-0.301056156596110010,\t-0.301103836540410950,\t-0.301151515731952310,\t-0.301199194170615250,\t\n-0.301246871856279850,\t-0.301294548788827220,\t-0.301342224968138230,\t-0.301389900394094130,\t-0.301437575066574810,\t-0.301485248985461580,\t-0.301532922150635650,\t-0.301580594561977000,\t\n-0.301628266219366890,\t-0.301675937122686030,\t-0.301723607271815410,\t-0.301771276666636170,\t-0.301818945307028300,\t-0.301866613192873060,\t-0.301914280324051710,\t-0.301961946700444240,\t\n-0.302009612321931910,\t-0.302057277188395590,\t-0.302104941299716430,\t-0.302152604655774540,\t-0.302200267256451100,\t-0.302247929101627070,\t-0.302295590191183570,\t-0.302343250525000660,\t\n-0.302390910102959650,\t-0.302438568924941420,\t-0.302486226990827110,\t-0.302533884300496820,\t-0.302581540853831880,\t-0.302629196650713470,\t-0.302676851691021650,\t-0.302724505974637680,\t\n-0.302772159501442430,\t-0.302819812271317270,\t-0.302867464284142130,\t-0.302915115539798270,\t-0.302962766038166690,\t-0.303010415779128630,\t-0.303058064762564080,\t-0.303105712988354370,\t\n-0.303153360456380360,\t-0.303201007166523370,\t-0.303248653118663450,\t-0.303296298312681900,\t-0.303343942748460050,\t-0.303391586425877880,\t-0.303439229344816760,\t-0.303486871505157570,\t\n-0.303534512906781240,\t-0.303582153549569020,\t-0.303629793433400960,\t-0.303677432558158430,\t-0.303725070923722750,\t-0.303772708529974010,\t-0.303820345376793480,\t-0.303867981464062020,\t\n-0.303915616791661130,\t-0.303963251359470720,\t-0.304010885167372180,\t-0.304058518215246430,\t-0.304106150502974790,\t-0.304153782030437360,\t-0.304201412797515500,\t-0.304249042804090100,\t\n-0.304296672050042520,\t-0.304344300535252850,\t-0.304391928259602370,\t-0.304439555222972560,\t-0.304487181425243390,\t-0.304534806866296300,\t-0.304582431546012170,\t-0.304630055464271960,\t\n-0.304677678620957070,\t-0.304725301015947530,\t-0.304772922649124760,\t-0.304820543520370080,\t-0.304868163629563590,\t-0.304915782976586780,\t-0.304963401561320460,\t-0.305011019383646050,\t\n-0.305058636443443660,\t-0.305106252740594720,\t-0.305153868274980530,\t-0.305201483046481260,\t-0.305249097054978320,\t-0.305296710300352600,\t-0.305344322782485080,\t-0.305391934501257230,\t\n-0.305439545456549110,\t-0.305487155648242080,\t-0.305534765076217630,\t-0.305582373740355850,\t-0.305629981640538120,\t-0.305677588776645410,\t-0.305725195148559170,\t-0.305772800756159540,\t\n-0.305820405599327880,\t-0.305868009677945250,\t-0.305915612991892960,\t-0.305963215541051270,\t-0.306010817325301500,\t-0.306058418344524740,\t-0.306106018598602310,\t-0.306153618087414430,\t\n-0.306201216810842450,\t-0.306248814768767920,\t-0.306296411961070880,\t-0.306344008387632870,\t-0.306391604048334760,\t-0.306439198943057710,\t-0.306486793071683080,\t-0.306534386434091030,\t\n-0.306581979030162990,\t-0.306629570859780430,\t-0.306677161922823570,\t-0.306724752219173780,\t-0.306772341748712100,\t-0.306819930511319950,\t-0.306867518506877600,\t-0.306915105735266420,\t\n-0.306962692196367510,\t-0.307010277890062300,\t-0.307057862816230930,\t-0.307105446974754950,\t-0.307153030365515330,\t-0.307200612988393570,\t-0.307248194843269820,\t-0.307295775930025610,\t\n-0.307343356248542420,\t-0.307390935798700360,\t-0.307438514580380960,\t-0.307486092593465320,\t-0.307533669837834420,\t-0.307581246313369750,\t-0.307628822019951560,\t-0.307676396957461300,\t\n-0.307723971125780480,\t-0.307771544524789330,\t-0.307819117154369270,\t-0.307866689014401450,\t-0.307914260104767360,\t-0.307961830425347140,\t-0.308009399976022390,\t-0.308056968756674540,\t\n-0.308104536767183860,\t-0.308152104007431820,\t-0.308199670477299510,\t-0.308247236176668050,\t-0.308294801105418960,\t-0.308342365263432390,\t-0.308389928650589900,\t-0.308437491266773060,\t\n-0.308485053111862030,\t-0.308532614185738350,\t-0.308580174488283180,\t-0.308627734019377930,\t-0.308675292778902990,\t-0.308722850766739780,\t-0.308770407982769500,\t-0.308817964426873590,\t\n-0.308865520098932310,\t-0.308913074998827250,\t-0.308960629126439510,\t-0.309008182481650630,\t-0.309055735064340860,\t-0.309103286874391760,\t-0.309150837911684850,\t-0.309198388176100460,\t\n-0.309245937667520070,\t-0.309293486385824820,\t-0.309341034330895880,\t-0.309388581502614780,\t-0.309436127900861780,\t-0.309483673525518480,\t-0.309531218376466410,\t-0.309578762453585900,\t\n-0.309626305756758420,\t-0.309673848285865250,\t-0.309721390040787860,\t-0.309768931021406570,\t-0.309816471227602920,\t-0.309864010659258120,\t-0.309911549316253700,\t-0.309959087198469980,\t\n-0.310006624305788570,\t-0.310054160638090600,\t-0.310101696195257630,\t-0.310149230977170010,\t-0.310196764983709290,\t-0.310244298214757130,\t-0.310291830670193720,\t-0.310339362349900780,\t\n-0.310386893253759450,\t-0.310434423381651340,\t-0.310481952733456690,\t-0.310529481309057160,\t-0.310577009108333970,\t-0.310624536131168640,\t-0.310672062377441550,\t-0.310719587847034300,\t\n-0.310767112539828080,\t-0.310814636455704560,\t-0.310862159594543940,\t-0.310909681956227980,\t-0.310957203540638220,\t-0.311004724347655030,\t-0.311052244377160000,\t-0.311099763629034410,\t\n-0.311147282103159390,\t-0.311194799799416610,\t-0.311242316717686370,\t-0.311289832857850330,\t-0.311337348219790140,\t-0.311384862803386180,\t-0.311432376608520080,\t-0.311479889635073000,\t\n-0.311527401882926660,\t-0.311574913351961360,\t-0.311622424042058750,\t-0.311669933953100110,\t-0.311717443084967070,\t-0.311764951437540020,\t-0.311812459010700540,\t-0.311859965804329900,\t\n-0.311907471818309800,\t-0.311954977052520620,\t-0.312002481506843950,\t-0.312049985181161560,\t-0.312097488075353760,\t-0.312144990189302200,\t-0.312192491522888190,\t-0.312239992075992960,\t\n-0.312287491848498190,\t-0.312334990840284210,\t-0.312382489051232840,\t-0.312429986481225610,\t-0.312477483130143010,\t-0.312524978997866690,\t-0.312572474084277910,\t-0.312619968389258370,\t\n-0.312667461912688520,\t-0.312714954654449980,\t-0.312762446614424090,\t-0.312809937792492440,\t-0.312857428188535570,\t-0.312904917802435180,\t-0.312952406634072420,\t-0.312999894683329060,\t\n-0.313047381950085580,\t-0.313094868434223630,\t-0.313142354135624970,\t-0.313189839054169970,\t-0.313237323189740350,\t-0.313284806542217460,\t-0.313332289111482980,\t-0.313379770897417310,\t\n-0.313427251899902230,\t-0.313474732118819040,\t-0.313522211554049410,\t-0.313569690205473870,\t-0.313617168072974070,\t-0.313664645156431390,\t-0.313712121455727470,\t-0.313759596970742850,\t\n-0.313807071701359240,\t-0.313854545647458400,\t-0.313902018808920710,\t-0.313949491185628040,\t-0.313996962777461590,\t-0.314044433584302730,\t-0.314091903606033230,\t-0.314139372842533570,\t\n-0.314186841293685460,\t-0.314234308959370660,\t-0.314281775839469700,\t-0.314329241933864250,\t-0.314376707242435720,\t-0.314424171765065820,\t-0.314471635501635090,\t-0.314519098452025300,\t\n-0.314566560616117710,\t-0.314614021993794180,\t-0.314661482584935150,\t-0.314708942389422430,\t-0.314756401407137340,\t-0.314803859637961700,\t-0.314851317081775940,\t-0.314898773738461920,\t\n-0.314946229607901420,\t-0.314993684689974850,\t-0.315041138984564100,\t-0.315088592491550520,\t-0.315136045210815450,\t-0.315183497142240700,\t-0.315230948285706750,\t-0.315278398641095470,\t\n-0.315325848208288570,\t-0.315373296987166650,\t-0.315420744977611520,\t-0.315468192179504450,\t-0.315515638592727410,\t-0.315563084217160780,\t-0.315610529052686490,\t-0.315657973099185860,\t\n-0.315705416356540700,\t-0.315752858824631610,\t-0.315800300503340350,\t-0.315847741392548340,\t-0.315895181492137410,\t-0.315942620801988090,\t-0.315990059321982260,\t-0.316037497052001680,\t\n-0.316084933991926890,\t-0.316132370141639810,\t-0.316179805501021820,\t-0.316227240069954670,\t-0.316274673848319090,\t-0.316322106835996760,\t-0.316369539032869180,\t-0.316416970438818170,\t\n-0.316464401053724310,\t-0.316511830877469480,\t-0.316559259909935050,\t-0.316606688151002900,\t-0.316654115600553570,\t-0.316701542258469030,\t-0.316748968124630990,\t-0.316796393198920110,\t\n-0.316843817481218260,\t-0.316891240971406860,\t-0.316938663669367400,\t-0.316986085574981650,\t-0.317033506688130300,\t-0.317080927008695170,\t-0.317128346536558140,\t-0.317175765271599800,\t\n-0.317223183213702080,\t-0.317270600362746400,\t-0.317318016718614650,\t-0.317365432281187410,\t-0.317412847050346610,\t-0.317460261025973690,\t-0.317507674207950510,\t-0.317555086596157720,\t\n-0.317602498190477260,\t-0.317649908990790540,\t-0.317697318996979450,\t-0.317744728208924630,\t-0.317792136626508070,\t-0.317839544249611530,\t-0.317886951078115710,\t-0.317934357111902490,\t\n-0.317981762350853400,\t-0.318029166794849940,\t-0.318076570443773910,\t-0.318123973297506080,\t-0.318171375355928320,\t-0.318218776618922510,\t-0.318266177086369400,\t-0.318313576758150810,\t\n-0.318360975634148220,\t-0.318408373714243690,\t-0.318455770998317790,\t-0.318503167486252460,\t-0.318550563177929180,\t-0.318597958073229990,\t-0.318645352172035430,\t-0.318692745474227490,\t\n-0.318740137979687700,\t-0.318787529688297930,\t-0.318834920599939010,\t-0.318882310714492690,\t-0.318929700031841070,\t-0.318977088551864800,\t-0.319024476274445800,\t-0.319071863199465570,\t\n-0.319119249326806130,\t-0.319166634656348150,\t-0.319214019187973540,\t-0.319261402921563910,\t-0.319308785857001230,\t-0.319356167994166110,\t-0.319403549332940630,\t-0.319450929873206220,\t\n-0.319498309614844930,\t-0.319545688557737460,\t-0.319593066701765740,\t-0.319640444046811800,\t-0.319687820592756300,\t-0.319735196339481280,\t-0.319782571286868270,\t-0.319829945434798810,\t\n-0.319877318783154900,\t-0.319924691331817280,\t-0.319972063080667950,\t-0.320019434029588880,\t-0.320066804178460780,\t-0.320114173527165700,\t-0.320161542075585170,\t-0.320208909823601170,\t\n-0.320256276771094530,\t-0.320303642917947160,\t-0.320351008264040730,\t-0.320398372809257150,\t-0.320445736553477250,\t-0.320493099496583000,\t-0.320540461638456010,\t-0.320587822978978250,\t\n-0.320635183518030550,\t-0.320682543255494890,\t-0.320729902191253300,\t-0.320777260325186500,\t-0.320824617657176570,\t-0.320871974187105110,\t-0.320919329914853670,\t-0.320966684840304380,\t\n-0.321014038963337910,\t-0.321061392283836400,\t-0.321108744801681780,\t-0.321156096516754860,\t-0.321203447428937750,\t-0.321250797538112030,\t-0.321298146844159690,\t-0.321345495346961610,\t\n-0.321392843046399760,\t-0.321440189942356180,\t-0.321487536034711750,\t-0.321534881323348510,\t-0.321582225808148050,\t-0.321629569488992020,\t-0.321676912365762460,\t-0.321724254438340240,\t\n-0.321771595706607350,\t-0.321818936170445880,\t-0.321866275829736700,\t-0.321913614684361800,\t-0.321960952734202890,\t-0.322008289979141990,\t-0.322055626419059940,\t-0.322102962053838810,\t\n-0.322150296883360330,\t-0.322197630907506470,\t-0.322244964126158160,\t-0.322292296539197440,\t-0.322339628146505960,\t-0.322386958947965820,\t-0.322434288943457880,\t-0.322481618132864190,\t\n-0.322528946516066890,\t-0.322576274092946810,\t-0.322623600863386040,\t-0.322670926827266280,\t-0.322718251984469180,\t-0.322765576334876900,\t-0.322812899878370250,\t-0.322860222614831380,\t\n-0.322907544544142330,\t-0.322954865666183980,\t-0.323002185980838520,\t-0.323049505487987550,\t-0.323096824187513290,\t-0.323144142079296480,\t-0.323191459163219340,\t-0.323238775439163570,\t\n-0.323286090907011270,\t-0.323333405566643360,\t-0.323380719417941890,\t-0.323428032460788660,\t-0.323475344695065730,\t-0.323522656120654010,\t-0.323569966737435710,\t-0.323617276545292880,\t\n-0.323664585544106430,\t-0.323711893733758530,\t-0.323759201114130870,\t-0.323806507685105600,\t-0.323853813446563720,\t-0.323901118398387260,\t-0.323948422540458030,\t-0.323995725872658120,\t\n-0.324043028394868540,\t-0.324090330106971360,\t-0.324137631008848350,\t-0.324184931100381660,\t-0.324232230381452270,\t-0.324279528851942280,\t-0.324326826511733890,\t-0.324374123360707980,\t\n-0.324421419398746800,\t-0.324468714625732070,\t-0.324516009041545540,\t-0.324563302646069420,\t-0.324610595439184630,\t-0.324657887420773340,\t-0.324705178590717740,\t-0.324752468948898750,\t\n-0.324799758495198650,\t-0.324847047229499140,\t-0.324894335151682420,\t-0.324941622261629430,\t-0.324988908559222410,\t-0.325036194044343090,\t-0.325083478716873710,\t-0.325130762576695260,\t\n-0.325178045623689850,\t-0.325225327857739330,\t-0.325272609278725920,\t-0.325319889886530600,\t-0.325367169681035520,\t-0.325414448662122930,\t-0.325461726829673840,\t-0.325509004183570370,\t\n-0.325556280723694410,\t-0.325603556449927780,\t-0.325650831362152670,\t-0.325698105460250020,\t-0.325745378744102140,\t-0.325792651213591240,\t-0.325839922868598310,\t-0.325887193709005540,\t\n-0.325934463734694810,\t-0.325981732945548330,\t-0.326029001341447080,\t-0.326076268922273320,\t-0.326123535687908920,\t-0.326170801638236090,\t-0.326218066773135810,\t-0.326265331092490400,\t\n-0.326312594596181670,\t-0.326359857284091840,\t-0.326407119156101930,\t-0.326454380212094280,\t-0.326501640451951070,\t-0.326548899875553360,\t-0.326596158482783390,\t-0.326643416273523000,\t\n-0.326690673247654500,\t-0.326737929405058910,\t-0.326785184745618460,\t-0.326832439269215120,\t-0.326879692975731050,\t-0.326926945865047340,\t-0.326974197937046240,\t-0.327021449191609690,\t\n-0.327068699628619900,\t-0.327115949247957950,\t-0.327163198049506110,\t-0.327210446033146750,\t-0.327257693198760800,\t-0.327304939546230630,\t-0.327352185075438170,\t-0.327399429786265180,\t\n-0.327446673678594040,\t-0.327493916752305820,\t-0.327541159007282810,\t-0.327588400443407310,\t-0.327635641060560370,\t-0.327682880858624350,\t-0.327730119837481130,\t-0.327777357997013020,\t\n-0.327824595337101120,\t-0.327871831857627690,\t-0.327919067558474720,\t-0.327966302439524520,\t-0.328013536500658060,\t-0.328060769741757850,\t-0.328108002162705640,\t-0.328155233763383900,\t\n-0.328202464543673630,\t-0.328249694503457200,\t-0.328296923642616980,\t-0.328344151961034000,\t-0.328391379458590650,\t-0.328438606135168840,\t-0.328485831990650510,\t-0.328533057024918030,\t\n-0.328580281237852550,\t-0.328627504629336260,\t-0.328674727199251670,\t-0.328721948947479860,\t-0.328769169873903200,\t-0.328816389978403570,\t-0.328863609260863390,\t-0.328910827721163810,\t\n-0.328958045359187100,\t-0.329005262174815290,\t-0.329052478167930760,\t-0.329099693338414660,\t-0.329146907686149240,\t-0.329194121211016600,\t-0.329241333912899060,\t-0.329288545791677770,\t\n-0.329335756847235150,\t-0.329382967079453530,\t-0.329430176488214040,\t-0.329477385073399130,\t-0.329524592834890770,\t-0.329571799772571340,\t-0.329619005886322040,\t-0.329666211176025180,\t\n-0.329713415641562760,\t-0.329760619282817250,\t-0.329807822099669800,\t-0.329855024092002790,\t-0.329902225259698200,\t-0.329949425602638460,\t-0.329996625120704710,\t-0.330043823813779450,\t\n-0.330091021681745030,\t-0.330138218724482620,\t-0.330185414941874700,\t-0.330232610333803240,\t-0.330279804900150240,\t-0.330326998640798120,\t-0.330374191555628140,\t-0.330421383644522610,\t\n-0.330468574907364090,\t-0.330515765344033710,\t-0.330562954954413960,\t-0.330610143738386760,\t-0.330657331695834610,\t-0.330704518826638760,\t-0.330751705130681580,\t-0.330798890607845120,\t\n-0.330846075258011910,\t-0.330893259081063040,\t-0.330940442076881060,\t-0.330987624245347940,\t-0.331034805586346240,\t-0.331081986099757030,\t-0.331129165785462920,\t-0.331176344643346280,\t\n-0.331223522673288360,\t-0.331270699875171660,\t-0.331317876248878150,\t-0.331365051794289990,\t-0.331412226511289650,\t-0.331459400399758300,\t-0.331506573459578460,\t-0.331553745690632560,\t\n-0.331600917092801930,\t-0.331648087665968980,\t-0.331695257410015760,\t-0.331742426324824920,\t-0.331789594410277500,\t-0.331836761666256140,\t-0.331883928092642890,\t-0.331931093689320220,\t\n-0.331978258456169410,\t-0.332025422393072980,\t-0.332072585499912920,\t-0.332119747776571880,\t-0.332166909222931020,\t-0.332214069838872860,\t-0.332261229624280010,\t-0.332308388579033610,\t\n-0.332355546703016260,\t-0.332402703996110050,\t-0.332449860458197520,\t-0.332497016089159880,\t-0.332544170888879720,\t-0.332591324857239130,\t-0.332638477994120660,\t-0.332685630299405570,\t\n-0.332732781772976380,\t-0.332779932414715260,\t-0.332827082224504740,\t-0.332874231202226030,\t-0.332921379347761840,\t-0.332968526660994520,\t-0.333015673141805520,\t-0.333062818790077380,\t\n-0.333109963605692120,\t-0.333157107588531950,\t-0.333204250738479480,\t-0.333251393055415960,\t-0.333298534539223920,\t-0.333345675189785970,\t-0.333392815006983420,\t-0.333439953990698870,\t\n-0.333487092140814400,\t-0.333534229457212620,\t-0.333581365939774830,\t-0.333628501588383640,\t-0.333675636402921190,\t-0.333722770383270080,\t-0.333769903529311630,\t-0.333817035840928420,\t\n-0.333864167318002610,\t-0.333911297960416800,\t-0.333958427768052350,\t-0.334005556740791800,\t-0.334052684878517800,\t-0.334099812181111620,\t-0.334146938648455960,\t-0.334194064280432970,\t\n-0.334241189076924790,\t-0.334288313037814030,\t-0.334335436162982110,\t-0.334382558452311570,\t-0.334429679905685120,\t-0.334476800522983950,\t-0.334523920304090840,\t-0.334571039248887920,\t\n-0.334618157357257860,\t-0.334665274629081910,\t-0.334712391064242830,\t-0.334759506662623160,\t-0.334806621424104330,\t-0.334853735348568940,\t-0.334900848435899180,\t-0.334947960685977320,\t\n-0.334995072098686010,\t-0.335042182673906560,\t-0.335089292411521690,\t-0.335136401311413980,\t-0.335183509373464860,\t-0.335230616597556930,\t-0.335277722983572500,\t-0.335324828531394170,\t\n-0.335371933240903360,\t-0.335419037111982680,\t-0.335466140144514480,\t-0.335513242338381260,\t-0.335560343693464600,\t-0.335607444209647000,\t-0.335654543886810870,\t-0.335701642724838710,\t\n-0.335748740723612100,\t-0.335795837883013590,\t-0.335842934202925940,\t-0.335890029683230510,\t-0.335937124323810010,\t-0.335984218124546760,\t-0.336031311085322910,\t-0.336078403206021170,\t\n-0.336125494486523070,\t-0.336172584926711200,\t-0.336219674526468280,\t-0.336266763285675730,\t-0.336313851204216310,\t-0.336360938281972280,\t-0.336408024518826290,\t-0.336455109914659820,\t\n-0.336502194469355590,\t-0.336549278182795900,\t-0.336596361054863400,\t-0.336643443085439530,\t-0.336690524274407150,\t-0.336737604621648370,\t-0.336784684127046040,\t-0.336831762790481600,\t\n-0.336878840611837760,\t-0.336925917590997210,\t-0.336972993727841450,\t-0.337020069022253180,\t-0.337067143474114760,\t-0.337114217083308520,\t-0.337161289849717110,\t-0.337208361773222050,\t\n-0.337255432853706130,\t-0.337302503091051980,\t-0.337349572485141190,\t-0.337396641035856480,\t-0.337443708743080160,\t-0.337490775606694990,\t-0.337537841626582460,\t-0.337584906802625320,\t\n-0.337631971134706390,\t-0.337679034622707040,\t-0.337726097266510090,\t-0.337773159065997970,\t-0.337820220021052890,\t-0.337867280131557700,\t-0.337914339397393900,\t-0.337961397818444250,\t\n-0.338008455394591510,\t-0.338055512125717270,\t-0.338102568011704190,\t-0.338149623052434680,\t-0.338196677247791570,\t-0.338243730597656330,\t-0.338290783101911800,\t-0.338337834760440270,\t\n-0.338384885573124570,\t-0.338431935539846240,\t-0.338478984660488090,\t-0.338526032934932440,\t-0.338573080363062160,\t-0.338620126944758790,\t-0.338667172679905040,\t-0.338714217568383820,\t\n-0.338761261610076640,\t-0.338808304804866290,\t-0.338855347152635160,\t-0.338902388653265660,\t-0.338949429306640630,\t-0.338996469112641640,\t-0.339043508071151410,\t-0.339090546182052870,\t\n-0.339137583445227540,\t-0.339184619860558260,\t-0.339231655427927440,\t-0.339278690147217840,\t-0.339325724018311130,\t-0.339372757041090160,\t-0.339419789215437250,\t-0.339466820541235280,\t\n-0.339513851018365840,\t-0.339560880646711800,\t-0.339607909426155540,\t-0.339654937356579920,\t-0.339701964437866540,\t-0.339748990669898280,\t-0.339796016052557880,\t-0.339843040585727120,\t\n-0.339890064269288690,\t-0.339937087103125150,\t-0.339984109087119290,\t-0.340031130221152720,\t-0.340078150505108310,\t-0.340125169938868600,\t-0.340172188522316340,\t-0.340219206255333200,\t\n-0.340266223137802030,\t-0.340313239169605260,\t-0.340360254350625890,\t-0.340407268680745390,\t-0.340454282159846800,\t-0.340501294787812880,\t-0.340548306564525280,\t-0.340595317489866930,\t\n-0.340642327563720320,\t-0.340689336785967860,\t-0.340736345156492480,\t-0.340783352675175840,\t-0.340830359341900810,\t-0.340877365156550320,\t-0.340924370119005950,\t-0.340971374229150690,\t\n-0.341018377486866970,\t-0.341065379892037720,\t-0.341112381444544640,\t-0.341159382144270550,\t-0.341206381991098100,\t-0.341253380984910040,\t-0.341300379125588080,\t-0.341347376413015270,\t\n-0.341394372847073910,\t-0.341441368427647110,\t-0.341488363154616450,\t-0.341535357027864920,\t-0.341582350047275330,\t-0.341629342212729500,\t-0.341676333524110310,\t-0.341723323981300290,\t\n-0.341770313584181970,\t-0.341817302332638300,\t-0.341864290226550900,\t-0.341911277265802840,\t-0.341958263450276970,\t-0.342005248779855000,\t-0.342052233254419910,\t-0.342099216873854250,\t\n-0.342146199638040990,\t-0.342193181546861790,\t-0.342240162600199630,\t-0.342287142797937090,\t-0.342334122139957120,\t-0.342381100626141410,\t-0.342428078256372950,\t-0.342475055030534270,\t\n-0.342522030948508360,\t-0.342569006010176980,\t-0.342615980215423110,\t-0.342662953564129680,\t-0.342709926056178450,\t-0.342756897691452400,\t-0.342803868469834130,\t-0.342850838391206610,\t\n-0.342897807455451560,\t-0.342944775662451960,\t-0.342991743012090460,\t-0.343038709504250030,\t-0.343085675138812380,\t-0.343132639915660560,\t-0.343179603834677100,\t-0.343226566895745100,\t\n-0.343273529098746260,\t-0.343320490443563550,\t-0.343367450930080090,\t-0.343414410558177560,\t-0.343461369327739020,\t-0.343508327238647050,\t-0.343555284290784250,\t-0.343602240484033650,\t\n-0.343649195818277020,\t-0.343696150293397450,\t-0.343743103909277870,\t-0.343790056665800150,\t-0.343837008562847270,\t-0.343883959600301880,\t-0.343930909778047020,\t-0.343977859095964460,\t\n-0.344024807553937220,\t-0.344071755151847960,\t-0.344118701889579770,\t-0.344165647767014420,\t-0.344212592784034880,\t-0.344259536940523910,\t-0.344306480236364510,\t-0.344353422671438480,\t\n-0.344400364245628920,\t-0.344447304958818870,\t-0.344494244810890080,\t-0.344541183801725710,\t-0.344588121931208410,\t-0.344635059199220770,\t-0.344681995605645940,\t-0.344728931150365680,\t\n-0.344775865833263080,\t-0.344822799654221250,\t-0.344869732613121980,\t-0.344916664709848390,\t-0.344963595944283160,\t-0.345010526316309350,\t-0.345057455825808770,\t-0.345104384472664620,\t\n-0.345151312256759430,\t-0.345198239177976430,\t-0.345245165236197420,\t-0.345292090431305490,\t-0.345339014763183290,\t-0.345385938231713980,\t-0.345432860836779430,\t-0.345479782578262730,\t\n-0.345526703456047020,\t-0.345573623470014080,\t-0.345620542620047100,\t-0.345667460906028790,\t-0.345714378327842240,\t-0.345761294885369270,\t-0.345808210578493090,\t-0.345855125407096400,\t\n-0.345902039371062340,\t-0.345948952470272740,\t-0.345995864704610740,\t-0.346042776073959110,\t-0.346089686578200940,\t-0.346136596217218100,\t-0.346183504990893840,\t-0.346230412899111160,\t\n-0.346277319941752090,\t-0.346324226118699730,\t-0.346371131429836780,\t-0.346418035875045990,\t-0.346464939454210530,\t-0.346511842167212310,\t-0.346558744013934490,\t-0.346605644994260220,\t\n-0.346652545108071420,\t-0.346699444355251240,\t-0.346746342735682500,\t-0.346793240249248290,\t-0.346840136895830540,\t-0.346887032675312460,\t-0.346933927587576800,\t-0.346980821632506760,\t\n-0.347027714809984230,\t-0.347074607119892410,\t-0.347121498562114110,\t-0.347168389136532420,\t-0.347215278843029380,\t-0.347262167681488150,\t-0.347309055651791930,\t-0.347355942753822590,\t\n-0.347402828987463440,\t-0.347449714352597190,\t-0.347496598849106720,\t-0.347543482476875110,\t-0.347590365235784400,\t-0.347637247125717750,\t-0.347684128146558410,\t-0.347731008298188370,\t\n-0.347777887580490770,\t-0.347824765993348440,\t-0.347871643536644630,\t-0.347918520210261320,\t-0.347965396014081660,\t-0.348012270947988980,\t-0.348059145011865190,\t-0.348106018205593500,\t\n-0.348152890529056790,\t-0.348199761982137870,\t-0.348246632564719940,\t-0.348293502276684990,\t-0.348340371117916330,\t-0.348387239088297160,\t-0.348434106187709420,\t-0.348480972416036480,\t\n-0.348527837773161100,\t-0.348574702258966530,\t-0.348621565873334760,\t-0.348668428616149110,\t-0.348715290487292380,\t-0.348762151486647850,\t-0.348809011614097500,\t-0.348855870869524630,\t\n-0.348902729252812070,\t-0.348949586763843130,\t-0.348996443402499800,\t-0.349043299168665330,\t-0.349090154062223100,\t-0.349137008083055030,\t-0.349183861231044390,\t-0.349230713506074150,\t\n-0.349277564908027140,\t-0.349324415436786610,\t-0.349371265092234650,\t-0.349418113874254480,\t-0.349464961782729460,\t-0.349511808817541620,\t-0.349558654978574300,\t-0.349605500265710300,\t\n-0.349652344678832990,\t-0.349699188217824360,\t-0.349746030882567780,\t-0.349792872672946120,\t-0.349839713588842750,\t-0.349886553630139600,\t-0.349933392796720090,\t-0.349980231088467150,\t\n-0.350027068505263990,\t-0.350073905046992760,\t-0.350120740713536770,\t-0.350167575504779340,\t-0.350214409420602560,\t-0.350261242460889740,\t-0.350308074625523820,\t-0.350354905914387730,\t\n-0.350401736327364770,\t-0.350448565864337090,\t-0.350495394525187960,\t-0.350542222309800760,\t-0.350589049218057610,\t-0.350635875249841860,\t-0.350682700405036350,\t-0.350729524683524580,\t\n-0.350776348085188540,\t-0.350823170609911640,\t-0.350869992257577200,\t-0.350916813028067380,\t-0.350963632921265530,\t-0.351010451937054660,\t-0.351057270075317560,\t-0.351104087335937790,\t\n-0.351150903718797310,\t-0.351197719223779630,\t-0.351244533850768040,\t-0.351291347599644700,\t-0.351338160470292980,\t-0.351384972462595870,\t-0.351431783576436730,\t-0.351478593811697770,\t\n-0.351525403168262250,\t-0.351572211646013270,\t-0.351619019244834190,\t-0.351665825964607100,\t-0.351712631805215450,\t-0.351759436766542260,\t-0.351806240848470900,\t-0.351853044050883470,\t\n-0.351899846373663450,\t-0.351946647816694210,\t-0.351993448379857960,\t-0.352040248063038130,\t-0.352087046866117640,\t-0.352133844788979520,\t-0.352180641831507210,\t-0.352227437993582910,\t\n-0.352274233275090000,\t-0.352321027675911890,\t-0.352367821195930800,\t-0.352414613835030200,\t-0.352461405593093020,\t-0.352508196470002750,\t-0.352554986465641600,\t-0.352601775579892970,\t\n-0.352648563812639930,\t-0.352695351163765880,\t-0.352742137633152990,\t-0.352788923220684780,\t-0.352835707926244300,\t-0.352882491749714920,\t-0.352929274690978960,\t-0.352976056749919720,\t\n-0.353022837926420810,\t-0.353069618220364420,\t-0.353116397631633940,\t-0.353163176160112450,\t-0.353209953805683490,\t-0.353256730568229150,\t-0.353303506447633030,\t-0.353350281443778170,\t\n-0.353397055556547990,\t-0.353443828785824750,\t-0.353490601131492000,\t-0.353537372593432650,\t-0.353584143171530360,\t-0.353630912865667280,\t-0.353677681675726880,\t-0.353724449601592720,\t\n-0.353771216643147040,\t-0.353817982800273320,\t-0.353864748072854620,\t-0.353911512460774010,\t-0.353958275963915100,\t-0.354005038582160040,\t-0.354051800315392410,\t-0.354098561163495700,\t\n-0.354145321126352160,\t-0.354192080203845350,\t-0.354238838395858290,\t-0.354285595702274580,\t-0.354332352122976420,\t-0.354379107657847410,\t-0.354425862306770640,\t-0.354472616069629650,\t\n-0.354519368946306700,\t-0.354566120936685270,\t-0.354612872040648560,\t-0.354659622258080120,\t-0.354706371588862200,\t-0.354753120032878340,\t-0.354799867590012090,\t-0.354846614260145740,\t\n-0.354893360043162910,\t-0.354940104938946620,\t-0.354986848947380140,\t-0.355033592068346890,\t-0.355080334301729250,\t-0.355127075647410810,\t-0.355173816105275040,\t-0.355220555675204390,\t\n-0.355267294357082260,\t-0.355314032150791990,\t-0.355360769056217000,\t-0.355407505073239650,\t-0.355454240201743600,\t-0.355500974441611880,\t-0.355547707792728210,\t-0.355594440254974830,\t\n-0.355641171828235350,\t-0.355687902512392910,\t-0.355734632307331160,\t-0.355781361212932410,\t-0.355828089229080270,\t-0.355874816355658260,\t-0.355921542592548880,\t-0.355968267939635600,\t\n-0.356014992396801620,\t-0.356061715963930600,\t-0.356108438640904910,\t-0.356155160427608090,\t-0.356201881323923390,\t-0.356248601329734400,\t-0.356295320444923460,\t-0.356342038669374250,\t\n-0.356388756002969930,\t-0.356435472445594150,\t-0.356482187997129220,\t-0.356528902657458900,\t-0.356575616426466680,\t-0.356622329304035040,\t-0.356669041290047560,\t-0.356715752384387460,\t\n-0.356762462586938000,\t-0.356809171897582820,\t-0.356855880316204240,\t-0.356902587842686030,\t-0.356949294476911700,\t-0.356996000218763760,\t-0.357042705068125800,\t-0.357089409024881070,\t\n-0.357136112088913270,\t-0.357182814260104730,\t-0.357229515538339200,\t-0.357276215923499840,\t-0.357322915415470340,\t-0.357369614014133200,\t-0.357416311719371990,\t-0.357463008531069990,\t\n-0.357509704449110900,\t-0.357556399473377140,\t-0.357603093603752360,\t-0.357649786840120280,\t-0.357696479182363300,\t-0.357743170630365150,\t-0.357789861184009070,\t-0.357836550843178340,\t\n-0.357883239607756640,\t-0.357929927477626420,\t-0.357976614452671370,\t-0.358023300532775200,\t-0.358069985717820390,\t-0.358116670007690600,\t-0.358163353402269120,\t-0.358210035901439680,\t\n-0.358256717505084750,\t-0.358303398213088040,\t-0.358350078025332810,\t-0.358396756941702810,\t-0.358443434962080480,\t-0.358490112086349570,\t-0.358536788314393400,\t-0.358583463646095670,\t\n-0.358630138081338870,\t-0.358676811620006700,\t-0.358723484261982920,\t-0.358770156007150070,\t-0.358816826855391740,\t-0.358863496806591410,\t-0.358910165860632730,\t-0.358956834017398200,\t\n-0.359003501276771610,\t-0.359050167638636290,\t-0.359096833102875930,\t-0.359143497669373090,\t-0.359190161338011520,\t-0.359236824108674520,\t-0.359283485981245880,\t-0.359330146955608110,\t\n-0.359376807031644980,\t-0.359423466209240210,\t-0.359470124488276420,\t-0.359516781868637280,\t-0.359563438350206210,\t-0.359610093932866530,\t-0.359656748616501990,\t-0.359703402400995240,\t\n-0.359750055286229940,\t-0.359796707272089900,\t-0.359843358358457710,\t-0.359890008545217130,\t-0.359936657832251540,\t-0.359983306219444690,\t-0.360029953706679170,\t-0.360076600293838760,\t\n-0.360123245980806860,\t-0.360169890767467250,\t-0.360216534653702460,\t-0.360263177639396410,\t-0.360309819724432380,\t-0.360356460908694220,\t-0.360403101192064480,\t-0.360449740574426970,\t\n-0.360496379055665560,\t-0.360543016635662790,\t-0.360589653314302430,\t-0.360636289091468000,\t-0.360682923967042820,\t-0.360729557940910720,\t-0.360776191012954330,\t-0.360822823183057470,\t\n-0.360869454451103970,\t-0.360916084816976460,\t-0.360962714280558650,\t-0.361009342841734140,\t-0.361055970500386620,\t-0.361102597256398760,\t-0.361149223109654470,\t-0.361195848060037460,\t\n-0.361242472107430490,\t-0.361289095251717260,\t-0.361335717492781370,\t-0.361382338830506130,\t-0.361428959264775470,\t-0.361475578795472040,\t-0.361522197422479600,\t-0.361568815145682120,\t\n-0.361615431964962210,\t-0.361662047880203670,\t-0.361708662891290060,\t-0.361755276998105170,\t-0.361801890200531660,\t-0.361848502498453460,\t-0.361895113891753990,\t-0.361941724380317130,\t\n-0.361988333964025580,\t-0.362034942642763150,\t-0.362081550416413430,\t-0.362128157284860200,\t-0.362174763247986140,\t-0.362221368305675250,\t-0.362267972457811280,\t-0.362314575704277000,\t\n-0.362361178044956270,\t-0.362407779479732630,\t-0.362454380008489510,\t-0.362500979631110830,\t-0.362547578347479300,\t-0.362594176157478850,\t-0.362640773060993350,\t-0.362687369057905550,\t\n-0.362733964148099270,\t-0.362780558331458110,\t-0.362827151607865940,\t-0.362873743977205510,\t-0.362920335439360700,\t-0.362966925994215090,\t-0.363013515641652520,\t-0.363060104381555780,\t\n-0.363106692213808810,\t-0.363153279138295040,\t-0.363199865154898550,\t-0.363246450263501940,\t-0.363293034463989200,\t-0.363339617756244350,\t-0.363386200140150000,\t-0.363432781615590120,\t\n-0.363479362182448310,\t-0.363525941840608100,\t-0.363572520589953490,\t-0.363619098430367100,\t-0.363665675361733000,\t-0.363712251383935090,\t-0.363758826496856150,\t-0.363805400700380200,\t\n-0.363851973994390680,\t-0.363898546378771670,\t-0.363945117853405890,\t-0.363991688418177250,\t-0.364038258072969860,\t-0.364084826817666410,\t-0.364131394652150890,\t-0.364177961576306890,\t\n-0.364224527590018000,\t-0.364271092693168150,\t-0.364317656885640220,\t-0.364364220167318060,\t-0.364410782538085840,\t-0.364457343997826260,\t-0.364503904546423290,\t-0.364550464183760530,\t\n-0.364597022909722070,\t-0.364643580724190560,\t-0.364690137627050210,\t-0.364736693618184450,\t-0.364783248697477360,\t-0.364829802864811760,\t-0.364876356120071690,\t-0.364922908463140680,\t\n-0.364969459893902840,\t-0.365016010412240910,\t-0.365062560018038940,\t-0.365109108711181020,\t-0.365155656491549910,\t-0.365202203359029640,\t-0.365248749313503870,\t-0.365295294354856250,\t\n-0.365341838482970750,\t-0.365388381697730300,\t-0.365434923999018890,\t-0.365481465386720550,\t-0.365528005860718150,\t-0.365574545420895740,\t-0.365621084067137000,\t-0.365667621799325880,\t\n-0.365714158617345350,\t-0.365760694521079450,\t-0.365807229510411780,\t-0.365853763585226420,\t-0.365900296745406250,\t-0.365946828990835360,\t-0.365993360321397400,\t-0.366039890736976460,\t\n-0.366086420237455360,\t-0.366132948822718180,\t-0.366179476492649090,\t-0.366226003247130890,\t-0.366272529086047680,\t-0.366319054009283110,\t-0.366365578016721370,\t-0.366412101108245240,\t\n-0.366458623283738900,\t-0.366505144543085970,\t-0.366551664886170580,\t-0.366598184312875610,\t-0.366644702823085200,\t-0.366691220416683060,\t-0.366737737093553230,\t-0.366784252853578690,\t\n-0.366830767696643470,\t-0.366877281622631780,\t-0.366923794631426440,\t-0.366970306722911640,\t-0.367016817896971050,\t-0.367063328153488470,\t-0.367109837492347930,\t-0.367156345913432380,\t\n-0.367202853416626010,\t-0.367249360001812910,\t-0.367295865668875950,\t-0.367342370417699350,\t-0.367388874248166850,\t-0.367435377160162560,\t-0.367481879153569450,\t-0.367528380228271560,\t\n-0.367574880384152760,\t-0.367621379621097200,\t-0.367667877938987750,\t-0.367714375337708620,\t-0.367760871817143560,\t-0.367807367377176730,\t-0.367853862017691050,\t-0.367900355738570720,\t\n-0.367946848539699890,\t-0.367993340420961550,\t-0.368039831382239890,\t-0.368086321423418570,\t-0.368132810544381520,\t-0.368179298745012820,\t-0.368225786025195510,\t-0.368272272384813690,\t\n-0.368318757823751620,\t-0.368365242341892220,\t-0.368411725939119750,\t-0.368458208615317920,\t-0.368504690370371040,\t-0.368551171204161980,\t-0.368597651116575000,\t-0.368644130107493860,\t\n-0.368690608176802880,\t-0.368737085324384930,\t-0.368783561550124260,\t-0.368830036853904700,\t-0.368876511235610440,\t-0.368922984695124470,\t-0.368969457232331100,\t-0.369015928847114480,\t\n-0.369062399539357600,\t-0.369108869308944710,\t-0.369155338155759680,\t-0.369201806079686720,\t-0.369248273080608810,\t-0.369294739158410270,\t-0.369341204312974790,\t-0.369387668544186810,\t\n-0.369434131851929190,\t-0.369480594236086260,\t-0.369527055696541820,\t-0.369573516233180190,\t-0.369619975845884300,\t-0.369666434534538510,\t-0.369712892299027040,\t-0.369759349139232920,\t\n-0.369805805055040460,\t-0.369852260046333480,\t-0.369898714112995800,\t-0.369945167254911830,\t-0.369991619471964460,\t-0.370038070764038050,\t-0.370084521131016920,\t-0.370130970572784050,\t\n-0.370177419089223750,\t-0.370223866680219890,\t-0.370270313345656740,\t-0.370316759085417500,\t-0.370363203899386260,\t-0.370409647787447060,\t-0.370456090749484160,\t-0.370502532785380590,\t\n-0.370548973895020730,\t-0.370595414078288390,\t-0.370641853335067940,\t-0.370688291665242480,\t-0.370734729068696260,\t-0.370781165545313650,\t-0.370827601094977700,\t-0.370874035717572710,\t\n-0.370920469412982680,\t-0.370966902181091460,\t-0.371013334021783440,\t-0.371059764934941580,\t-0.371106194920450380,\t-0.371152623978194100,\t-0.371199052108055820,\t-0.371245479309919910,\t\n-0.371291905583670310,\t-0.371338330929191380,\t-0.371384755346366220,\t-0.371431178835079150,\t-0.371477601395214130,\t-0.371524023026655490,\t-0.371570443729286440,\t-0.371616863502991220,\t\n-0.371663282347653890,\t-0.371709700263158750,\t-0.371756117249388950,\t-0.371802533306228870,\t-0.371848948433562810,\t-0.371895362631274040,\t-0.371941775899246820,\t-0.371988188237365180,\t\n-0.372034599645513440,\t-0.372081010123574860,\t-0.372127419671433700,\t-0.372173828288974000,\t-0.372220235976080170,\t-0.372266642732635320,\t-0.372313048558523870,\t-0.372359453453629750,\t\n-0.372405857417837490,\t-0.372452260451030140,\t-0.372498662553092110,\t-0.372545063723907890,\t-0.372591463963360570,\t-0.372637863271334580,\t-0.372684261647713900,\t-0.372730659092382620,\t\n-0.372777055605225120,\t-0.372823451186124530,\t-0.372869845834965300,\t-0.372916239551631890,\t-0.372962632336007460,\t-0.373009024187976490,\t-0.373055415107422910,\t-0.373101805094231240,\t\n-0.373148194148284600,\t-0.373194582269467500,\t-0.373240969457664000,\t-0.373287355712758400,\t-0.373333741034634070,\t-0.373380125423175340,\t-0.373426508878266280,\t-0.373472891399791400,\t\n-0.373519272987633880,\t-0.373565653641678150,\t-0.373612033361808700,\t-0.373658412147908790,\t-0.373704789999862840,\t-0.373751166917554890,\t-0.373797542900869030,\t-0.373843917949689740,\t\n-0.373890292063900230,\t-0.373936665243385040,\t-0.373983037488028520,\t-0.374029408797714070,\t-0.374075779172326040,\t-0.374122148611748580,\t-0.374168517115866130,\t-0.374214884684562040,\t\n-0.374261251317720700,\t-0.374307617015226250,\t-0.374353981776963110,\t-0.374400345602814650,\t-0.374446708492665370,\t-0.374493070446399230,\t-0.374539431463900900,\t-0.374585791545053560,\t\n-0.374632150689741710,\t-0.374678508897849930,\t-0.374724866169261430,\t-0.374771222503860800,\t-0.374817577901532140,\t-0.374863932362159870,\t-0.374910285885627410,\t-0.374956638471819200,\t\n-0.375002990120619440,\t-0.375049340831912600,\t-0.375095690605581960,\t-0.375142039441512140,\t-0.375188387339587200,\t-0.375234734299691730,\t-0.375281080321708980,\t-0.375327425405523550,\t\n-0.375373769551019980,\t-0.375420112758081510,\t-0.375466455026592820,\t-0.375512796356437970,\t-0.375559136747501130,\t-0.375605476199666890,\t-0.375651814712818500,\t-0.375698152286840610,\t\n-0.375744488921617710,\t-0.375790824617033230,\t-0.375837159372971630,\t-0.375883493189317190,\t-0.375929826065954380,\t-0.375976158002766630,\t-0.376022488999638470,\t-0.376068819056454060,\t\n-0.376115148173098050,\t-0.376161476349453740,\t-0.376207803585405790,\t-0.376254129880838280,\t-0.376300455235635880,\t-0.376346779649681880,\t-0.376393103122861010,\t-0.376439425655057720,\t\n-0.376485747246155520,\t-0.376532067896038880,\t-0.376578387604592110,\t-0.376624706371699370,\t-0.376671024197245300,\t-0.376717341081113210,\t-0.376763657023187810,\t-0.376809972023353700,\t\n-0.376856286081494190,\t-0.376902599197493970,\t-0.376948911371237260,\t-0.376995222602608700,\t-0.377041532891491670,\t-0.377087842237770810,\t-0.377134150641330770,\t-0.377180458102054920,\t\n-0.377226764619827900,\t-0.377273070194533990,\t-0.377319374826057430,\t-0.377365678514282820,\t-0.377411981259093590,\t-0.377458283060374430,\t-0.377504583918009950,\t-0.377550883831883620,\t\n-0.377597182801880090,\t-0.377643480827883570,\t-0.377689777909778810,\t-0.377736074047449130,\t-0.377782369240779290,\t-0.377828663489653550,\t-0.377874956793956550,\t-0.377921249153571730,\t\n-0.377967540568383830,\t-0.378013831038277020,\t-0.378060120563136090,\t-0.378106409142844440,\t-0.378152696777286750,\t-0.378198983466347730,\t-0.378245269209910860,\t-0.378291554007860800,\t\n-0.378337837860081850,\t-0.378384120766458330,\t-0.378430402726874890,\t-0.378476683741215070,\t-0.378522963809363510,\t-0.378569242931204970,\t-0.378615521106622890,\t-0.378661798335502060,\t\n-0.378708074617726650,\t-0.378754349953181520,\t-0.378800624341750100,\t-0.378846897783317090,\t-0.378893170277766870,\t-0.378939441824984120,\t-0.378985712424852350,\t-0.379031982077256360,\t\n-0.379078250782080350,\t-0.379124518539209140,\t-0.379170785348526220,\t-0.379217051209916330,\t-0.379263316123264250,\t-0.379309580088453450,\t-0.379355843105368680,\t-0.379402105173894330,\t\n-0.379448366293915100,\t-0.379494626465314570,\t-0.379540885687977450,\t-0.379587143961788160,\t-0.379633401286631370,\t-0.379679657662390700,\t-0.379725913088950870,\t-0.379772167566196250,\t\n-0.379818421094011650,\t-0.379864673672280610,\t-0.379910925300887830,\t-0.379957175979718180,\t-0.380003425708655140,\t-0.380049674487583590,\t-0.380095922316387780,\t-0.380142169194952250,\t\n-0.380188415123161650,\t-0.380234660100899620,\t-0.380280904128050930,\t-0.380327147204500390,\t-0.380373389330131590,\t-0.380419630504829350,\t-0.380465870728477980,\t-0.380512110000962360,\t\n-0.380558348322166060,\t-0.380604585691973860,\t-0.380650822110270240,\t-0.380697057576939950,\t-0.380743292091866580,\t-0.380789525654935010,\t-0.380835758266029610,\t-0.380881989925035250,\t\n-0.380928220631835510,\t-0.380974450386315220,\t-0.381020679188359190,\t-0.381066907037851070,\t-0.381113133934675660,\t-0.381159359878717410,\t-0.381205584869860780,\t-0.381251808907990600,\t\n-0.381298031992990500,\t-0.381344254124745260,\t-0.381390475303139850,\t-0.381436695528057870,\t-0.381482914799384070,\t-0.381529133117003040,\t-0.381575350480799600,\t-0.381621566890657290,\t\n-0.381667782346461150,\t-0.381713996848095540,\t-0.381760210395445330,\t-0.381806422988394180,\t-0.381852634626826950,\t-0.381898845310628180,\t-0.381945055039682680,\t-0.381991263813874160,\t\n-0.382037471633087430,\t-0.382083678497207480,\t-0.382129884406117950,\t-0.382176089359703650,\t-0.382222293357849130,\t-0.382268496400439310,\t-0.382314698487357830,\t-0.382360899618489570,\t\n-0.382407099793719120,\t-0.382453299012931290,\t-0.382499497276009850,\t-0.382545694582839600,\t-0.382591890933305150,\t-0.382638086327291400,\t-0.382684280764682030,\t-0.382730474245361940,\t\n-0.382776666769216070,\t-0.382822858336128110,\t-0.382869048945983000,\t-0.382915238598665280,\t-0.382961427294059460,\t-0.383007615032050500,\t-0.383053801812522080,\t-0.383099987635359180,\t\n-0.383146172500446690,\t-0.383192356407668360,\t-0.383238539356909160,\t-0.383284721348053580,\t-0.383330902380986660,\t-0.383377082455592040,\t-0.383423261571754710,\t-0.383469439729359210,\t\n-0.383515616928290560,\t-0.383561793168432420,\t-0.383607968449669820,\t-0.383654142771887310,\t-0.383700316134969850,\t-0.383746488538801170,\t-0.383792659983266280,\t-0.383838830468250130,\t\n-0.383884999993636510,\t-0.383931168559310420,\t-0.383977336165156390,\t-0.384023502811058960,\t-0.384069668496903270,\t-0.384115833222572980,\t-0.384161996987953060,\t-0.384208159792928610,\t\n-0.384254321637383320,\t-0.384300482521202250,\t-0.384346642444269910,\t-0.384392801406471470,\t-0.384438959407690570,\t-0.384485116447812250,\t-0.384531272526721150,\t-0.384577427644302310,\t\n-0.384623581800439480,\t-0.384669734995017660,\t-0.384715887227921550,\t-0.384762038499036120,\t-0.384808188808245130,\t-0.384854338155433740,\t-0.384900486540486860,\t-0.384946633963288430,\t\n-0.384992780423723370,\t-0.385038925921676320,\t-0.385085070457032440,\t-0.385131214029675430,\t-0.385177356639490380,\t-0.385223498286361930,\t-0.385269638970175190,\t-0.385315778690813900,\t\n-0.385361917448163170,\t-0.385408055242107640,\t-0.385454192072532400,\t-0.385500327939321320,\t-0.385546462842359330,\t-0.385592596781531630,\t-0.385638729756722030,\t-0.385684861767815630,\t\n-0.385730992814697030,\t-0.385777122897250970,\t-0.385823252015362550,\t-0.385869380168915530,\t-0.385915507357795060,\t-0.385961633581886290,\t-0.386007758841072970,\t-0.386053883135240310,\t\n-0.386100006464272890,\t-0.386146128828055880,\t-0.386192250226473130,\t-0.386238370659409750,\t-0.386284490126750480,\t-0.386330608628380370,\t-0.386376726164183340,\t-0.386422842734044480,\t\n-0.386468958337848500,\t-0.386515072975480540,\t-0.386561186646824540,\t-0.386607299351765520,\t-0.386653411090188690,\t-0.386699521861977870,\t-0.386745631667018310,\t-0.386791740505194660,\t\n-0.386837848376391620,\t-0.386883955280494410,\t-0.386930061217386880,\t-0.386976166186954180,\t-0.387022270189081530,\t-0.387068373223652730,\t-0.387114475290553040,\t-0.387160576389667170,\t\n-0.387206676520880260,\t-0.387252775684076230,\t-0.387298873879140250,\t-0.387344971105957110,\t-0.387391067364411980,\t-0.387437162654388710,\t-0.387483256975772570,\t-0.387529350328448260,\t\n-0.387575442712301040,\t-0.387621534127214780,\t-0.387667624573074630,\t-0.387713714049765900,\t-0.387759802557172460,\t-0.387805890095179460,\t-0.387851976663671830,\t-0.387898062262534590,\t\n-0.387944146891651800,\t-0.387990230550908640,\t-0.388036313240189950,\t-0.388082394959380850,\t-0.388128475708365340,\t-0.388174555487028670,\t-0.388220634295255610,\t-0.388266712132931350,\t\n-0.388312788999939930,\t-0.388358864896166500,\t-0.388404939821496320,\t-0.388451013775813430,\t-0.388497086759002960,\t-0.388543158770949800,\t-0.388589229811538710,\t-0.388635299880654980,\t\n-0.388681368978182620,\t-0.388727437104006810,\t-0.388773504258012770,\t-0.388819570440084640,\t-0.388865635650107510,\t-0.388911699887966370,\t-0.388957763153546350,\t-0.389003825446731510,\t\n-0.389049886767407090,\t-0.389095947115457970,\t-0.389142006490769410,\t-0.389188064893225380,\t-0.389234122322711210,\t-0.389280178779111750,\t-0.389326234262312280,\t-0.389372288772196760,\t\n-0.389418342308650520,\t-0.389464394871558870,\t-0.389510446460805790,\t-0.389556497076276600,\t-0.389602546717856160,\t-0.389648595385429400,\t-0.389694643078881520,\t-0.389740689798096620,\t\n-0.389786735542960010,\t-0.389832780313357000,\t-0.389878824109171570,\t-0.389924866930289100,\t-0.389970908776594460,\t-0.390016949647973010,\t-0.390062989544308740,\t-0.390109028465486950,\t\n-0.390155066411393080,\t-0.390201103381911050,\t-0.390247139376926340,\t-0.390293174396323720,\t-0.390339208439988210,\t-0.390385241507805070,\t-0.390431273599658460,\t-0.390477304715433570,\t\n-0.390523334855015890,\t-0.390569364018289460,\t-0.390615392205139630,\t-0.390661419415451290,\t-0.390707445649109860,\t-0.390753470905999380,\t-0.390799495186005210,\t-0.390845518489012280,\t\n-0.390891540814906010,\t-0.390937562163570450,\t-0.390983582534891020,\t-0.391029601928752580,\t-0.391075620345040620,\t-0.391121637783639120,\t-0.391167654244433560,\t-0.391213669727309310,\t\n-0.391259684232150410,\t-0.391305697758842330,\t-0.391351710307270010,\t-0.391397721877318420,\t-0.391443732468872930,\t-0.391489742081817690,\t-0.391535750716038080,\t-0.391581758371419510,\t\n-0.391627765047846190,\t-0.391673770745203380,\t-0.391719775463376220,\t-0.391765779202249980,\t-0.391811781961708900,\t-0.391857783741638320,\t-0.391903784541923320,\t-0.391949784362449320,\t\n-0.391995783203100360,\t-0.392041781063761970,\t-0.392087777944319150,\t-0.392133773844657310,\t-0.392179768764660600,\t-0.392225762704214440,\t-0.392271755663204320,\t-0.392317747641514390,\t\n-0.392363738639030070,\t-0.392409728655636450,\t-0.392455717691218450,\t-0.392501705745661620,\t-0.392547692818850100,\t-0.392593678910669320,\t-0.392639664021004810,\t-0.392685648149740660,\t\n-0.392731631296762470,\t-0.392777613461955170,\t-0.392823594645204220,\t-0.392869574846393840,\t-0.392915554065409620,\t-0.392961532302136870,\t-0.393007509556459860,\t-0.393053485828264100,\t\n-0.393099461117434660,\t-0.393145435423856550,\t-0.393191408747415210,\t-0.393237381087995000,\t-0.393283352445481290,\t-0.393329322819759630,\t-0.393375292210714270,\t-0.393421260618230680,\t\n-0.393467228042193920,\t-0.393513194482489500,\t-0.393559159939001700,\t-0.393605124411615990,\t-0.393651087900217470,\t-0.393697050404691610,\t-0.393743011924922730,\t-0.393788972460796360,\t\n-0.393834932012197490,\t-0.393880890579011770,\t-0.393926848161123390,\t-0.393972804758417890,\t-0.394018760370780760,\t-0.394064714998096370,\t-0.394110668640250130,\t-0.394156621297127250,\t\n-0.394202572968612830,\t-0.394248523654592400,\t-0.394294473354950210,\t-0.394340422069571870,\t-0.394386369798342850,\t-0.394432316541147520,\t-0.394478262297871420,\t-0.394524207068399630,\t\n-0.394570150852617760,\t-0.394616093650410060,\t-0.394662035461662180,\t-0.394707976286259200,\t-0.394753916124086670,\t-0.394799854975028900,\t-0.394845792838971590,\t-0.394891729715799720,\t\n-0.394937665605398950,\t-0.394983600507653630,\t-0.395029534422449310,\t-0.395075467349671530,\t-0.395121399289204700,\t-0.395167330240934370,\t-0.395213260204745680,\t-0.395259189180524270,\t\n-0.395305117168154470,\t-0.395351044167521930,\t-0.395396970178511720,\t-0.395442895201009500,\t-0.395488819234899700,\t-0.395534742280067800,\t-0.395580664336399050,\t-0.395626585403779040,\t\n-0.395672505482092150,\t-0.395718424571224030,\t-0.395764342671060200,\t-0.395810259781485150,\t-0.395856175902384420,\t-0.395902091033643270,\t-0.395948005175146890,\t-0.395993918326780940,\t\n-0.396039830488429720,\t-0.396085741659979010,\t-0.396131651841314270,\t-0.396177561032320050,\t-0.396223469232881880,\t-0.396269376442885070,\t-0.396315282662215220,\t-0.396361187890756750,\t\n-0.396407092128395310,\t-0.396452995375016160,\t-0.396498897630504940,\t-0.396544798894746030,\t-0.396590699167625130,\t-0.396636598449027490,\t-0.396682496738838760,\t-0.396728394036943380,\t\n-0.396774290343227030,\t-0.396820185657575320,\t-0.396866079979872780,\t-0.396911973310005000,\t-0.396957865647857340,\t-0.397003756993314970,\t-0.397049647346263630,\t-0.397095536706587760,\t\n-0.397141425074173100,\t-0.397187312448905210,\t-0.397233198830668650,\t-0.397279084219349150,\t-0.397324968614831910,\t-0.397370852017002620,\t-0.397416734425745820,\t-0.397462615840947160,\t\n-0.397508496262492020,\t-0.397554375690265970,\t-0.397600254124153620,\t-0.397646131564040610,\t-0.397692008009812300,\t-0.397737883461354360,\t-0.397783757918551310,\t-0.397829631381288850,\t\n-0.397875503849452750,\t-0.397921375322927480,\t-0.397967245801598760,\t-0.398013115285351940,\t-0.398058983774072670,\t-0.398104851267645610,\t-0.398150717765956400,\t-0.398196583268890400,\t\n-0.398242447776333330,\t-0.398288311288169770,\t-0.398334173804285370,\t-0.398380035324565620,\t-0.398425895848896150,\t-0.398471755377161510,\t-0.398517613909247500,\t-0.398563471445039840,\t\n-0.398609327984423110,\t-0.398655183527283070,\t-0.398701038073505100,\t-0.398746891622974500,\t-0.398792744175577090,\t-0.398838595731197400,\t-0.398884446289721200,\t-0.398930295851034340,\t\n-0.398976144415021330,\t-0.399021991981567900,\t-0.399067838550559550,\t-0.399113684121881970,\t-0.399159528695419820,\t-0.399205372271058790,\t-0.399251214848684370,\t-0.399297056428182310,\t\n-0.399342897009437200,\t-0.399388736592334870,\t-0.399434575176760680,\t-0.399480412762600430,\t-0.399526249349738790,\t-0.399572084938061510,\t-0.399617919527454400,\t-0.399663753117802110,\t\n-0.399709585708990460,\t-0.399755417300904800,\t-0.399801247893430630,\t-0.399847077486453760,\t-0.399892906079858720,\t-0.399938733673531500,\t-0.399984560267357790,\t-0.400030385861222300,\t\n-0.400076210455010850,\t-0.400122034048608850,\t-0.400167856641902190,\t-0.400213678234775490,\t-0.400259498827114590,\t-0.400305318418804900,\t-0.400351137009732350,\t-0.400396954599781580,\t\n-0.400442771188838420,\t-0.400488586776788280,\t-0.400534401363517150,\t-0.400580214948909550,\t-0.400626027532851430,\t-0.400671839115228630,\t-0.400717649695925880,\t-0.400763459274828980,\t\n-0.400809267851823410,\t-0.400855075426795100,\t-0.400900881999628700,\t-0.400946687570210070,\t-0.400992492138424750,\t-0.401038295704158610,\t-0.401084098267296300,\t-0.401129899827723730,\t\n-0.401175700385326460,\t-0.401221499939990290,\t-0.401267298491600030,\t-0.401313096040041450,\t-0.401358892585200580,\t-0.401404688126962060,\t-0.401450482665211830,\t-0.401496276199835410,\t\n-0.401542068730718240,\t-0.401587860257746340,\t-0.401633650780804430,\t-0.401679440299778310,\t-0.401725228814554080,\t-0.401771016325016330,\t-0.401816802831051030,\t-0.401862588332543740,\t\n-0.401908372829380360,\t-0.401954156321445650,\t-0.401999938808625560,\t-0.402045720290805600,\t-0.402091500767871760,\t-0.402137280239708790,\t-0.402183058706202580,\t-0.402228836167238760,\t\n-0.402274612622703250,\t-0.402320388072480770,\t-0.402366162516457350,\t-0.402411935954518910,\t-0.402457708386550210,\t-0.402503479812437280,\t-0.402549250232065610,\t-0.402595019645320850,\t\n-0.402640788052088970,\t-0.402686555452254680,\t-0.402732321845703960,\t-0.402778087232322890,\t-0.402823851611996190,\t-0.402869614984609880,\t-0.402915377350049510,\t-0.402961138708201110,\t\n-0.403006899058949430,\t-0.403052658402180520,\t-0.403098416737780410,\t-0.403144174065633800,\t-0.403189930385626780,\t-0.403235685697644900,\t-0.403281440001573840,\t-0.403327193297299600,\t\n-0.403372945584706930,\t-0.403418696863681920,\t-0.403464447134110560,\t-0.403510196395877710,\t-0.403555944648869350,\t-0.403601691892971130,\t-0.403647438128069080,\t-0.403693183354048020,\t\n-0.403738927570793990,\t-0.403784670778192690,\t-0.403830412976130090,\t-0.403876154164491070,\t-0.403921894343161610,\t-0.403967633512027470,\t-0.404013371670974620,\t-0.404059108819887990,\t\n-0.404104844958653510,\t-0.404150580087157370,\t-0.404196314205284400,\t-0.404242047312920570,\t-0.404287779409951700,\t-0.404333510496263320,\t-0.404379240571741630,\t-0.404424969636271390,\t\n-0.404470697689738700,\t-0.404516424732029760,\t-0.404562150763029260,\t-0.404607875782623420,\t-0.404653599790697930,\t-0.404699322787138770,\t-0.404745044771830930,\t-0.404790765744660500,\t\n-0.404836485705513170,\t-0.404882204654274990,\t-0.404927922590830880,\t-0.404973639515066990,\t-0.405019355426869010,\t-0.405065070326123040,\t-0.405110784212713960,\t-0.405156497086527960,\t\n-0.405202208947451130,\t-0.405247919795368340,\t-0.405293629630165740,\t-0.405339338451729090,\t-0.405385046259944090,\t-0.405430753054696890,\t-0.405476458835872410,\t-0.405522163603356740,\t\n-0.405567867357036150,\t-0.405613570096795380,\t-0.405659271822520760,\t-0.405704972534097930,\t-0.405750672231413090,\t-0.405796370914351170,\t-0.405842068582798310,\t-0.405887765236640660,\t\n-0.405933460875763210,\t-0.405979155500052090,\t-0.406024849109393130,\t-0.406070541703672020,\t-0.406116233282774960,\t-0.406161923846586890,\t-0.406207613394994060,\t-0.406253301927882560,\t\n-0.406298989445137430,\t-0.406344675946644810,\t-0.406390361432290510,\t-0.406436045901960700,\t-0.406481729355540390,\t-0.406527411792915740,\t-0.406573093213972560,\t-0.406618773618597050,\t\n-0.406664453006674200,\t-0.406710131378090260,\t-0.406755808732730930,\t-0.406801485070482530,\t-0.406847160391229980,\t-0.406892834694859540,\t-0.406938507981257410,\t-0.406984180250308640,\t\n-0.407029851501899350,\t-0.407075521735915490,\t-0.407121190952242810,\t-0.407166859150767560,\t-0.407212526331374780,\t-0.407258192493950620,\t-0.407303857638381450,\t-0.407349521764552190,\t\n-0.407395184872349160,\t-0.407440846961658170,\t-0.407486508032365410,\t-0.407532168084356050,\t-0.407577827117516220,\t-0.407623485131731800,\t-0.407669142126889150,\t-0.407714798102873200,\t\n-0.407760453059570260,\t-0.407806106996866150,\t-0.407851759914647230,\t-0.407897411812798480,\t-0.407943062691206170,\t-0.407988712549756660,\t-0.408034361388334930,\t-0.408080009206827350,\t\n-0.408125656005119690,\t-0.408171301783098290,\t-0.408216946540648270,\t-0.408262590277655880,\t-0.408308232994006980,\t-0.408353874689587950,\t-0.408399515364283820,\t-0.408445155017980900,\t\n-0.408490793650565060,\t-0.408536431261922680,\t-0.408582067851938790,\t-0.408627703420499750,\t-0.408673337967491830,\t-0.408718971492800180,\t-0.408764603996311090,\t-0.408810235477910510,\t\n-0.408855865937484300,\t-0.408901495374918880,\t-0.408947123790099290,\t-0.408992751182911900,\t-0.409038377553243020,\t-0.409084002900977790,\t-0.409129627226002600,\t-0.409175250528203300,\t\n-0.409220872807466270,\t-0.409266494063676710,\t-0.409312114296720870,\t-0.409357733506484740,\t-0.409403351692854690,\t-0.409448968855715860,\t-0.409494584994954610,\t-0.409540200110456890,\t\n-0.409585814202109100,\t-0.409631427269796340,\t-0.409677039313405040,\t-0.409722650332821510,\t-0.409768260327930960,\t-0.409813869298619790,\t-0.409859477244773900,\t-0.409905084166279350,\t\n-0.409950690063022480,\t-0.409996294934888480,\t-0.410041898781763780,\t-0.410087501603534690,\t-0.410133103400086460,\t-0.410178704171305470,\t-0.410224303917077760,\t-0.410269902637289630,\t\n-0.410315500331826340,\t-0.410361097000574330,\t-0.410406692643419610,\t-0.410452287260248520,\t-0.410497880850946300,\t-0.410543473415399370,\t-0.410589064953493790,\t-0.410634655465115960,\t\n-0.410680244950151040,\t-0.410725833408485560,\t-0.410771420840005840,\t-0.410817007244597240,\t-0.410862592622146080,\t-0.410908176972538450,\t-0.410953760295660770,\t-0.410999342591398250,\t\n-0.411044923859637420,\t-0.411090504100264260,\t-0.411136083313165260,\t-0.411181661498225660,\t-0.411227238655331890,\t-0.411272814784370060,\t-0.411318389885226510,\t-0.411363963957786630,\t\n-0.411409537001936890,\t-0.411455109017563660,\t-0.411500680004552260,\t-0.411546249962789160,\t-0.411591818892160400,\t-0.411637386792552130,\t-0.411682953663850830,\t-0.411728519505941690,\t\n-0.411774084318711260,\t-0.411819648102046020,\t-0.411865210855831280,\t-0.411910772579953510,\t-0.411956333274298760,\t-0.412001892938753670,\t-0.412047451573203380,\t-0.412093009177534440,\t\n-0.412138565751633050,\t-0.412184121295385620,\t-0.412229675808677480,\t-0.412275229291395100,\t-0.412320781743424680,\t-0.412366333164652770,\t-0.412411883554964550,\t-0.412457432914246640,\t\n-0.412502981242385550,\t-0.412548528539266660,\t-0.412594074804776390,\t-0.412639620038800950,\t-0.412685164241226420,\t-0.412730707411939460,\t-0.412776249550825260,\t-0.412821790657770470,\t\n-0.412867330732661570,\t-0.412912869775383990,\t-0.412958407785824210,\t-0.413003944763868420,\t-0.413049480709403170,\t-0.413095015622313820,\t-0.413140549502486910,\t-0.413186082349808640,\t\n-0.413231614164165590,\t-0.413277144945443040,\t-0.413322674693527680,\t-0.413368203408305600,\t-0.413413731089663450,\t-0.413459257737486600,\t-0.413504783351661520,\t-0.413550307932074920,\t\n-0.413595831478612170,\t-0.413641353991159810,\t-0.413686875469604090,\t-0.413732395913831600,\t-0.413777915323727650,\t-0.413823433699178960,\t-0.413868951040071710,\t-0.413914467346292450,\t\n-0.413959982617726600,\t-0.414005496854260800,\t-0.414051010055781320,\t-0.414096522222174630,\t-0.414142033353326330,\t-0.414187543449122840,\t-0.414233052509450970,\t-0.414278560534196040,\t\n-0.414324067523244740,\t-0.414369573476483230,\t-0.414415078393797760,\t-0.414460582275075100,\t-0.414506085120200480,\t-0.414551586929060690,\t-0.414597087701542360,\t-0.414642587437530850,\t\n-0.414688086136912880,\t-0.414733583799574760,\t-0.414779080425403010,\t-0.414824576014283190,\t-0.414870070566101920,\t-0.414915564080745480,\t-0.414961056558100560,\t-0.415006547998052530,\t\n-0.415052038400488210,\t-0.415097527765293740,\t-0.415143016092355880,\t-0.415188503381560050,\t-0.415233989632792950,\t-0.415279474845941350,\t-0.415324959020890620,\t-0.415370442157527440,\t\n-0.415415924255738260,\t-0.415461405315409200,\t-0.415506885336427050,\t-0.415552364318677260,\t-0.415597842262046550,\t-0.415643319166421670,\t-0.415688795031688100,\t-0.415734269857732490,\t\n-0.415779743644441260,\t-0.415825216391701060,\t-0.415870688099397420,\t-0.415916158767417050,\t-0.415961628395646650,\t-0.416007096983971870,\t-0.416052564532279230,\t-0.416098031040455290,\t\n-0.416143496508386220,\t-0.416188960935958810,\t-0.416234424323058570,\t-0.416279886669572330,\t-0.416325347975386730,\t-0.416370808240387360,\t-0.416416267464460980,\t-0.416461725647493950,\t\n-0.416507182789372990,\t-0.416552638889983670,\t-0.416598093949212770,\t-0.416643547966946640,\t-0.416689000943071990,\t-0.416734452877474460,\t-0.416779903770040820,\t-0.416825353620657420,\t\n-0.416870802429211040,\t-0.416916250195587200,\t-0.416961696919672780,\t-0.417007142601354520,\t-0.417052587240518020,\t-0.417098030837049990,\t-0.417143473390836960,\t-0.417188914901765180,\t\n-0.417234355369721530,\t-0.417279794794591650,\t-0.417325233176262190,\t-0.417370670514620120,\t-0.417416106809550940,\t-0.417461542060941490,\t-0.417506976268678220,\t-0.417552409432647880,\t\n-0.417597841552736100,\t-0.417643272628829780,\t-0.417688702660815200,\t-0.417734131648579310,\t-0.417779559592007690,\t-0.417824986490987150,\t-0.417870412345404170,\t-0.417915837155145520,\t\n-0.417961260920096890,\t-0.418006683640145150,\t-0.418052105315177060,\t-0.418097525945078320,\t-0.418142945529735800,\t-0.418188364069035870,\t-0.418233781562865000,\t-0.418279198011110130,\t\n-0.418324613413656840,\t-0.418370027770392060,\t-0.418415441081202600,\t-0.418460853345974100,\t-0.418506264564593500,\t-0.418551674736947210,\t-0.418597083862922160,\t-0.418642491942403940,\t\n-0.418687898975279580,\t-0.418733304961435790,\t-0.418778709900758380,\t-0.418824113793134220,\t-0.418869516638449730,\t-0.418914918436591450,\t-0.418960319187446310,\t-0.419005718890899990,\t\n-0.419051117546839320,\t-0.419096515155151280,\t-0.419141911715721520,\t-0.419187307228437000,\t-0.419232701693184220,\t-0.419278095109850090,\t-0.419323487478320320,\t-0.419368878798481840,\t\n-0.419414269070221170,\t-0.419459658293425190,\t-0.419505046467979700,\t-0.419550433593771530,\t-0.419595819670687380,\t-0.419641204698613990,\t-0.419686588677437240,\t-0.419731971607044010,\t\n-0.419777353487321260,\t-0.419822734318154700,\t-0.419868114099431310,\t-0.419913492831037630,\t-0.419958870512860240,\t-0.420004247144786070,\t-0.420049622726700820,\t-0.420094997258491590,\t\n-0.420140370740045230,\t-0.420185743171247570,\t-0.420231114551985530,\t-0.420276484882145750,\t-0.420321854161615100,\t-0.420367222390279460,\t-0.420412589568025740,\t-0.420457955694740540,\t\n-0.420503320770310830,\t-0.420548684794622480,\t-0.420594047767562370,\t-0.420639409689017140,\t-0.420684770558873820,\t-0.420730130377018170,\t-0.420775489143337180,\t-0.420820846857717870,\t\n-0.420866203520046000,\t-0.420911559130208670,\t-0.420956913688092460,\t-0.421002267193584300,\t-0.421047619646570110,\t-0.421092971046936880,\t-0.421138321394571250,\t-0.421183670689360190,\t\n-0.421229018931189520,\t-0.421274366119946340,\t-0.421319712255517230,\t-0.421365057337789230,\t-0.421410401366648200,\t-0.421455744341981190,\t-0.421501086263675160,\t-0.421546427131616050,\t\n-0.421591766945690890,\t-0.421637105705786270,\t-0.421682443411788950,\t-0.421727780063585860,\t-0.421773115661062960,\t-0.421818450204107240,\t-0.421863783692605850,\t-0.421909116126444550,\t\n-0.421954447505510480,\t-0.421999777829690280,\t-0.422045107098871000,\t-0.422090435312938610,\t-0.422135762471780080,\t-0.422181088575282190,\t-0.422226413623331960,\t-0.422271737615815320,\t\n-0.422317060552619310,\t-0.422362382433630670,\t-0.422407703258736440,\t-0.422453023027822620,\t-0.422498341740776160,\t-0.422543659397484280,\t-0.422588975997832850,\t-0.422634291541709010,\t\n-0.422679606028999400,\t-0.422724919459590790,\t-0.422770231833370260,\t-0.422815543150223790,\t-0.422860853410038430,\t-0.422906162612701360,\t-0.422951470758098470,\t-0.422996777846116890,\t\n-0.423042083876643380,\t-0.423087388849565090,\t-0.423132692764767890,\t-0.423177995622138980,\t-0.423223297421565060,\t-0.423268598162933330,\t-0.423313897846129660,\t-0.423359196471041310,\t\n-0.423404494037554920,\t-0.423449790545557700,\t-0.423495085994935570,\t-0.423540380385575790,\t-0.423585673717365440,\t-0.423630965990190460,\t-0.423676257203938140,\t-0.423721547358495100,\t\n-0.423766836453748630,\t-0.423812124489584720,\t-0.423857411465890400,\t-0.423902697382552600,\t-0.423947982239458510,\t-0.423993266036494010,\t-0.424038548773546300,\t-0.424083830450502300,\t\n-0.424129111067249100,\t-0.424174390623672680,\t-0.424219669119660300,\t-0.424264946555099160,\t-0.424310222929875300,\t-0.424355498243875810,\t-0.424400772496987600,\t-0.424446045689097500,\t\n-0.424491317820092640,\t-0.424536588889859070,\t-0.424581858898284090,\t-0.424627127845254800,\t-0.424672395730657350,\t-0.424717662554378870,\t-0.424762928316306240,\t-0.424808193016326660,\t\n-0.424853456654326220,\t-0.424898719230192180,\t-0.424943980743811290,\t-0.424989241195070870,\t-0.425034500583856940,\t-0.425079758910056780,\t-0.425125016173557190,\t-0.425170272374245480,\t\n-0.425215527512007700,\t-0.425260781586731080,\t-0.425306034598302910,\t-0.425351286546609250,\t-0.425396537431537380,\t-0.425441787252974160,\t-0.425487036010806510,\t-0.425532283704921630,\t\n-0.425577530335205680,\t-0.425622775901545850,\t-0.425668020403829510,\t-0.425713263841942690,\t-0.425758506215772770,\t-0.425803747525206560,\t-0.425848987770131360,\t-0.425894226950433270,\t\n-0.425939465065999670,\t-0.425984702116717350,\t-0.426029938102473750,\t-0.426075173023154840,\t-0.426120406878648050,\t-0.426165639668840190,\t-0.426210871393618680,\t-0.426256102052869570,\t\n-0.426301331646480150,\t-0.426346560174337860,\t-0.426391787636328790,\t-0.426437014032340190,\t-0.426482239362259100,\t-0.426527463625972820,\t-0.426572686823367460,\t-0.426617908954330380,\t\n-0.426663130018748560,\t-0.426708350016509250,\t-0.426753568947498720,\t-0.426798786811604270,\t-0.426844003608712830,\t-0.426889219338711770,\t-0.426934434001487280,\t-0.426979647596926690,\t\n-0.427024860124917420,\t-0.427070071585345550,\t-0.427115281978098500,\t-0.427160491303063270,\t-0.427205699560126830,\t-0.427250906749176540,\t-0.427296112870098550,\t-0.427341317922780290,\t\n-0.427386521907109130,\t-0.427431724822971320,\t-0.427476926670254110,\t-0.427522127448844660,\t-0.427567327158630270,\t-0.427612525799497160,\t-0.427657723371332680,\t-0.427702919874023980,\t\n-0.427748115307458320,\t-0.427793309671521960,\t-0.427838502966102370,\t-0.427883695191086540,\t-0.427928886346361840,\t-0.427974076431814510,\t-0.428019265447331990,\t-0.428064453392801750,\t\n-0.428109640268109940,\t-0.428154826073144030,\t-0.428200010807791080,\t-0.428245194471938100,\t-0.428290377065472520,\t-0.428335558588280600,\t-0.428380739040249760,\t-0.428425918421267480,\t\n-0.428471096731220020,\t-0.428516273969994810,\t-0.428561450137478930,\t-0.428606625233559860,\t-0.428651799258123740,\t-0.428696972211058180,\t-0.428742144092250200,\t-0.428787314901587220,\t\n-0.428832484638955570,\t-0.428877653304242710,\t-0.428922820897335690,\t-0.428967987418122090,\t-0.429013152866488060,\t-0.429058317242321130,\t-0.429103480545508840,\t-0.429148642775937450,\t\n-0.429193803933494490,\t-0.429238964018066940,\t-0.429284123029542440,\t-0.429329280967807200,\t-0.429374437832748810,\t-0.429419593624254250,\t-0.429464748342211160,\t-0.429509901986505790,\t\n-0.429555054557025640,\t-0.429600206053657900,\t-0.429645356476289990,\t-0.429690505824808330,\t-0.429735654099100420,\t-0.429780801299053720,\t-0.429825947424554660,\t-0.429871092475490710,\t\n-0.429916236451749030,\t-0.429961379353216770,\t-0.430006521179781440,\t-0.430051661931329430,\t-0.430096801607748270,\t-0.430141940208925490,\t-0.430187077734747460,\t-0.430232214185101770,\t\n-0.430277349559875510,\t-0.430322483858956270,\t-0.430367617082230420,\t-0.430412749229585560,\t-0.430457880300908810,\t-0.430503010296087730,\t-0.430548139215008780,\t-0.430593267057559460,\t\n-0.430638393823626950,\t-0.430683519513098860,\t-0.430728644125861590,\t-0.430773767661802700,\t-0.430818890120809820,\t-0.430864011502769260,\t-0.430909131807568730,\t-0.430954251035095330,\t\n-0.430999369185236290,\t-0.431044486257879280,\t-0.431089602252910600,\t-0.431134717170217950,\t-0.431179831009688930,\t-0.431224943771209900,\t-0.431270055454668510,\t-0.431315166059951960,\t\n-0.431360275586947890,\t-0.431405384035542790,\t-0.431450491405624190,\t-0.431495597697079790,\t-0.431540702909795960,\t-0.431585807043660400,\t-0.431630910098560310,\t-0.431676012074382940,\t\n-0.431721112971015950,\t-0.431766212788345760,\t-0.431811311526260070,\t-0.431856409184646520,\t-0.431901505763391480,\t-0.431946601262382710,\t-0.431991695681507410,\t-0.432036789020653340,\t\n-0.432081881279706810,\t-0.432126972458555640,\t-0.432172062557087010,\t-0.432217151575188640,\t-0.432262239512747000,\t-0.432307326369649750,\t-0.432352412145784180,\t-0.432397496841037950,\t\n-0.432442580455297650,\t-0.432487662988450820,\t-0.432532744440385310,\t-0.432577824810987500,\t-0.432622904100145090,\t-0.432667982307745500,\t-0.432713059433675880,\t-0.432758135477824050,\t\n-0.432803210440076470,\t-0.432848284320320850,\t-0.432893357118444950,\t-0.432938428834335250,\t-0.432983499467879510,\t-0.433028569018964970,\t-0.433073637487479400,\t-0.433118704873309390,\t\n-0.433163771176342580,\t-0.433208836396466350,\t-0.433253900533568440,\t-0.433298963587535340,\t-0.433344025558254850,\t-0.433389086445614360,\t-0.433434146249501500,\t-0.433479204969802860,\t\n-0.433524262606406200,\t-0.433569319159199330,\t-0.433614374628068730,\t-0.433659429012902220,\t-0.433704482313587100,\t-0.433749534530011190,\t-0.433794585662061030,\t-0.433839635709624470,\t\n-0.433884684672588780,\t-0.433929732550841770,\t-0.433974779344270030,\t-0.434019825052761320,\t-0.434064869676203060,\t-0.434109913214483060,\t-0.434154955667487850,\t-0.434199997035105260,\t\n-0.434245037317223080,\t-0.434290076513727920,\t-0.434335114624507520,\t-0.434380151649449380,\t-0.434425187588440840,\t-0.434470222441369740,\t-0.434515256208122700,\t-0.434560288888587500,\t\n-0.434605320482651940,\t-0.434650350990202720,\t-0.434695380411127650,\t-0.434740408745314060,\t-0.434785435992649900,\t-0.434830462153021740,\t-0.434875487226317410,\t-0.434920511212424420,\t\n-0.434965534111230460,\t-0.435010555922622330,\t-0.435055576646487810,\t-0.435100596282714300,\t-0.435145614831189740,\t-0.435190632291800720,\t-0.435235648664435150,\t-0.435280663948980850,\t\n-0.435325678145324470,\t-0.435370691253353930,\t-0.435415703272956640,\t-0.435460714204020050,\t-0.435505724046432120,\t-0.435550732800079500,\t-0.435595740464850000,\t-0.435640747040631600,\t\n-0.435685752527310900,\t-0.435730756924775810,\t-0.435775760232913870,\t-0.435820762451612890,\t-0.435865763580759620,\t-0.435910763620241950,\t-0.435955762569947340,\t-0.436000760429763770,\t\n-0.436045757199577830,\t-0.436090752879277570,\t-0.436135747468750390,\t-0.436180740967884230,\t-0.436225733376565840,\t-0.436270724694683140,\t-0.436315714922124010,\t-0.436360704058775140,\t\n-0.436405692104524570,\t-0.436450679059259770,\t-0.436495664922868620,\t-0.436540649695237980,\t-0.436585633376255670,\t-0.436630615965809320,\t-0.436675597463786760,\t-0.436720577870074840,\t\n-0.436765557184561500,\t-0.436810535407134220,\t-0.436855512537681070,\t-0.436900488576088710,\t-0.436945463522245110,\t-0.436990437376038270,\t-0.437035410137354920,\t-0.437080381806083000,\t\n-0.437125352382110200,\t-0.437170321865324010,\t-0.437215290255612400,\t-0.437260257552862130,\t-0.437305223756961290,\t-0.437350188867797750,\t-0.437395152885258320,\t-0.437440115809231030,\t\n-0.437485077639603430,\t-0.437530038376263590,\t-0.437574998019098220,\t-0.437619956567995350,\t-0.437664914022842580,\t-0.437709870383527930,\t-0.437754825649938230,\t-0.437799779821961440,\t\n-0.437844732899485220,\t-0.437889684882397550,\t-0.437934635770585280,\t-0.437979585563936400,\t-0.438024534262339000,\t-0.438069481865679840,\t-0.438114428373846950,\t-0.438159373786728030,\t\n-0.438204318104210680,\t-0.438249261326182860,\t-0.438294203452531560,\t-0.438339144483144760,\t-0.438384084417910440,\t-0.438429023256715570,\t-0.438473960999448080,\t-0.438518897645995720,\t\n-0.438563833196246530,\t-0.438608767650087330,\t-0.438653701007406250,\t-0.438698633268090890,\t-0.438743564432029330,\t-0.438788494499108510,\t-0.438833423469216390,\t-0.438878351342240740,\t\n-0.438923278118069640,\t-0.438968203796589910,\t-0.439013128377689690,\t-0.439058051861257010,\t-0.439102974247178870,\t-0.439147895535343220,\t-0.439192815725637900,\t-0.439237734817950860,\t\n-0.439282652812169160,\t-0.439327569708180820,\t-0.439372485505873490,\t-0.439417400205135420,\t-0.439462313805853430,\t-0.439507226307915610,\t-0.439552137711209770,\t-0.439597048015623990,\t\n-0.439641957221045150,\t-0.439686865327361450,\t-0.439731772334460980,\t-0.439776678242230710,\t-0.439821583050558680,\t-0.439866486759332760,\t-0.439911389368440600,\t-0.439956290877770330,\t\n-0.440001191287208990,\t-0.440046090596644620,\t-0.440090988805965480,\t-0.440135885915058420,\t-0.440180781923811660,\t-0.440225676832112940,\t-0.440270570639850420,\t-0.440315463346911130,\t\n-0.440360354953183100,\t-0.440405245458554250,\t-0.440450134862912620,\t-0.440495023166145310,\t-0.440539910368140440,\t-0.440584796468785790,\t-0.440629681467969550,\t-0.440674565365578700,\t\n-0.440719448161501380,\t-0.440764329855625910,\t-0.440809210447839220,\t-0.440854089938029440,\t-0.440898968326084490,\t-0.440943845611892150,\t-0.440988721795340540,\t-0.441033596876316710,\t\n-0.441078470854708920,\t-0.441123343730405350,\t-0.441168215503293050,\t-0.441213086173260160,\t-0.441257955740194550,\t-0.441302824203984480,\t-0.441347691564516980,\t-0.441392557821680190,\t\n-0.441437422975362040,\t-0.441482287025450730,\t-0.441527149971833290,\t-0.441572011814397980,\t-0.441616872553032670,\t-0.441661732187625560,\t-0.441706590718063670,\t-0.441751448144235390,\t\n-0.441796304466028860,\t-0.441841159683331150,\t-0.441886013796030540,\t-0.441930866804014890,\t-0.441975718707172500,\t-0.442020569505390370,\t-0.442065419198556850,\t-0.442110267786559820,\t\n-0.442155115269287470,\t-0.442199961646626890,\t-0.442244806918466460,\t-0.442289651084694040,\t-0.442334494145197880,\t-0.442379336099865070,\t-0.442424176948583880,\t-0.442469016691242720,\t\n-0.442513855327728580,\t-0.442558692857929810,\t-0.442603529281734300,\t-0.442648364599029950,\t-0.442693198809705090,\t-0.442738031913646910,\t-0.442782863910743560,\t-0.442827694800883460,\t\n-0.442872524583953760,\t-0.442917353259842770,\t-0.442962180828438360,\t-0.443007007289628880,\t-0.443051832643301500,\t-0.443096656889344580,\t-0.443141480027645970,\t-0.443186302058094060,\t\n-0.443231122980575990,\t-0.443275942794980120,\t-0.443320761501194430,\t-0.443365579099107180,\t-0.443410395588605620,\t-0.443455210969578070,\t-0.443500025241912900,\t-0.443544838405497240,\t\n-0.443589650460219480,\t-0.443634461405967630,\t-0.443679271242629570,\t-0.443724079970093780,\t-0.443768887588247400,\t-0.443813694096978790,\t-0.443858499496176280,\t-0.443903303785727230,\t\n-0.443948106965519840,\t-0.443992909035442200,\t-0.444037709995382720,\t-0.444082509845228510,\t-0.444127308584868100,\t-0.444172106214189790,\t-0.444216902733080790,\t-0.444261698141429520,\t\n-0.444306492439124010,\t-0.444351285626052310,\t-0.444396077702102770,\t-0.444440868667162650,\t-0.444485658521120370,\t-0.444530447263864310,\t-0.444575234895281720,\t-0.444620021415261080,\t\n-0.444664806823690360,\t-0.444709591120458050,\t-0.444754374305451390,\t-0.444799156378558710,\t-0.444843937339668210,\t-0.444888717188668240,\t-0.444933495925446070,\t-0.444978273549890170,\t\n-0.445023050061888580,\t-0.445067825461329780,\t-0.445112599748101020,\t-0.445157372922090730,\t-0.445202144983187440,\t-0.445246915931278350,\t-0.445291685766252000,\t-0.445336454487996470,\t\n-0.445381222096399740,\t-0.445425988591350410,\t-0.445470753972735670,\t-0.445515518240444050,\t-0.445560281394364040,\t-0.445605043434382900,\t-0.445649804360389200,\t-0.445694564172270940,\t\n-0.445739322869916690,\t-0.445784080453213770,\t-0.445828836922050610,\t-0.445873592276315340,\t-0.445918346515896510,\t-0.445963099640681430,\t-0.446007851650558620,\t-0.446052602545416120,\t\n-0.446097352325142580,\t-0.446142100989625200,\t-0.446186848538752570,\t-0.446231594972413270,\t-0.446276340290494570,\t-0.446321084492884990,\t-0.446365827579472680,\t-0.446410569550145850,\t\n-0.446455310404792970,\t-0.446500050143301460,\t-0.446544788765559750,\t-0.446589526271456540,\t-0.446634262660879080,\t-0.446678997933715960,\t-0.446723732089855330,\t-0.446768465129185830,\t\n-0.446813197051594720,\t-0.446857927856970650,\t-0.446902657545202090,\t-0.446947386116176570,\t-0.446992113569782520,\t-0.447036839905908200,\t-0.447081565124441800,\t-0.447126289225271920,\t\n-0.447171012208285870,\t-0.447215734073372280,\t-0.447260454820419760,\t-0.447305174449315720,\t-0.447349892959948760,\t-0.447394610352207070,\t-0.447439326625979240,\t-0.447484041781152640,\t\n-0.447528755817616030,\t-0.447573468735257440,\t-0.447618180533965630,\t-0.447662891213627960,\t-0.447707600774133070,\t-0.447752309215369180,\t-0.447797016537224920,\t-0.447841722739587720,\t\n-0.447886427822346170,\t-0.447931131785389010,\t-0.447975834628603580,\t-0.448020536351878550,\t-0.448065236955102250,\t-0.448109936438162770,\t-0.448154634800948910,\t-0.448199332043348050,\t\n-0.448244028165248830,\t-0.448288723166540000,\t-0.448333417047108940,\t-0.448378109806844280,\t-0.448422801445634400,\t-0.448467491963367940,\t-0.448512181359932320,\t-0.448556869635216240,\t\n-0.448601556789107960,\t-0.448646242821496230,\t-0.448690927732268490,\t-0.448735611521313420,\t-0.448780294188519340,\t-0.448824975733774890,\t-0.448869656156967610,\t-0.448914335457986200,\t\n-0.448959013636719360,\t-0.449003690693054570,\t-0.449048366626880580,\t-0.449093041438085650,\t-0.449137715126558530,\t-0.449182387692186710,\t-0.449227059134858940,\t-0.449271729454463480,\t\n-0.449316398650889130,\t-0.449361066724023370,\t-0.449405733673754970,\t-0.449450399499972230,\t-0.449495064202563850,\t-0.449539727781417490,\t-0.449584390236421720,\t-0.449629051567465410,\t\n-0.449673711774436100,\t-0.449718370857222490,\t-0.449763028815712950,\t-0.449807685649795840,\t-0.449852341359359920,\t-0.449896995944292720,\t-0.449941649404483060,\t-0.449986301739819680,\t\n-0.450030952950190130,\t-0.450075603035483160,\t-0.450120251995587250,\t-0.450164899830391100,\t-0.450209546539782290,\t-0.450254192123649590,\t-0.450298836581881410,\t-0.450343479914366570,\t\n-0.450388122120992610,\t-0.450432763201648380,\t-0.450477403156222200,\t-0.450522041984602940,\t-0.450566679686678130,\t-0.450611316262336690,\t-0.450655951711467330,\t-0.450700586033957680,\t\n-0.450745219229696570,\t-0.450789851298572410,\t-0.450834482240473620,\t-0.450879112055289020,\t-0.450923740742906250,\t-0.450968368303214130,\t-0.451012994736101460,\t-0.451057620041455940,\t\n-0.451102244219166340,\t-0.451146867269121180,\t-0.451191489191209220,\t-0.451236109985318160,\t-0.451280729651336750,\t-0.451325348189153600,\t-0.451369965598657440,\t-0.451414581879735990,\t\n-0.451459197032278050,\t-0.451503811056172160,\t-0.451548423951307120,\t-0.451593035717570590,\t-0.451637646354851540,\t-0.451682255863038730,\t-0.451726864242019910,\t-0.451771471491683900,\t\n-0.451816077611919220,\t-0.451860682602614750,\t-0.451905286463658130,\t-0.451949889194938340,\t-0.451994490796343850,\t-0.452039091267763480,\t-0.452083690609084990,\t-0.452128288820197290,\t\n-0.452172885900988920,\t-0.452217481851348630,\t-0.452262076671164300,\t-0.452306670360324790,\t-0.452351262918718970,\t-0.452395854346234580,\t-0.452440444642760620,\t-0.452485033808185500,\t\n-0.452529621842397810,\t-0.452574208745286420,\t-0.452618794516739200,\t-0.452663379156644900,\t-0.452707962664892600,\t-0.452752545041369970,\t-0.452797126285966020,\t-0.452841706398569240,\t\n-0.452886285379068550,\t-0.452930863227351820,\t-0.452975439943307860,\t-0.453020015526825360,\t-0.453064589977793200,\t-0.453109163296099130,\t-0.453153735481632180,\t-0.453198306534280890,\t\n-0.453242876453934240,\t-0.453287445240480040,\t-0.453332012893807150,\t-0.453376579413804660,\t-0.453421144800360330,\t-0.453465709053363140,\t-0.453510272172701680,\t-0.453554834158264530,\t\n-0.453599395009940680,\t-0.453643954727617980,\t-0.453688513311185370,\t-0.453733070760531820,\t-0.453777627075545250,\t-0.453822182256114650,\t-0.453866736302128540,\t-0.453911289213476010,\t\n-0.453955840990044880,\t-0.454000391631724120,\t-0.454044941138402380,\t-0.454089489509968690,\t-0.454134036746310870,\t-0.454178582847317940,\t-0.454223127812878600,\t-0.454267671642881840,\t\n-0.454312214337215470,\t-0.454356755895768570,\t-0.454401296318430180,\t-0.454445835605088170,\t-0.454490373755631500,\t-0.454534910769949010,\t-0.454579446647929540,\t-0.454623981389461140,\t\n-0.454668514994432730,\t-0.454713047462733060,\t-0.454757578794251160,\t-0.454802108988874910,\t-0.454846638046493390,\t-0.454891165966995250,\t-0.454935692750269630,\t-0.454980218396204390,\t\n-0.455024742904688580,\t-0.455069266275611280,\t-0.455113788508860470,\t-0.455158309604325180,\t-0.455202829561894120,\t-0.455247348381455970,\t-0.455291866062899840,\t-0.455336382606113640,\t\n-0.455380898010986520,\t-0.455425412277407520,\t-0.455469925405264600,\t-0.455514437394446860,\t-0.455558948244843050,\t-0.455603457956342270,\t-0.455647966528832440,\t-0.455692473962202690,\t\n-0.455736980256341740,\t-0.455781485411138780,\t-0.455825989426481670,\t-0.455870492302259570,\t-0.455914994038361280,\t-0.455959494634675890,\t-0.456003994091091380,\t-0.456048492407496840,\t\n-0.456092989583781530,\t-0.456137485619833300,\t-0.456181980515541370,\t-0.456226474270794490,\t-0.456270966885481410,\t-0.456315458359491330,\t-0.456359948692712240,\t-0.456404437885033210,\t\n-0.456448925936343510,\t-0.456493412846531110,\t-0.456537898615485160,\t-0.456582383243094470,\t-0.456626866729248240,\t-0.456671349073834440,\t-0.456715830276742230,\t-0.456760310337860850,\t\n-0.456804789257078350,\t-0.456849267034283860,\t-0.456893743669366190,\t-0.456938219162214110,\t-0.456982693512716920,\t-0.457027166720762660,\t-0.457071638786240410,\t-0.457116109709039490,\t\n-0.457160579489047870,\t-0.457205048126154810,\t-0.457249515620249130,\t-0.457293981971220060,\t-0.457338447178955660,\t-0.457382911243345120,\t-0.457427374164277310,\t-0.457471835941641480,\t\n-0.457516296575325660,\t-0.457560756065219070,\t-0.457605214411210600,\t-0.457649671613189480,\t-0.457694127671043840,\t-0.457738582584662820,\t-0.457783036353935750,\t-0.457827488978750700,\t\n-0.457871940458996930,\t-0.457916390794563310,\t-0.457960839985338760,\t-0.458005288031212430,\t-0.458049734932072520,\t-0.458094180687808270,\t-0.458138625298308950,\t-0.458183068763462710,\t\n-0.458227511083158730,\t-0.458271952257286060,\t-0.458316392285733840,\t-0.458360831168390270,\t-0.458405268905144600,\t-0.458449705495885820,\t-0.458494140940503110,\t-0.458538575238884640,\t\n-0.458583008390919760,\t-0.458627440396497390,\t-0.458671871255506790,\t-0.458716300967836110,\t-0.458760729533374660,\t-0.458805156952011790,\t-0.458849583223635670,\t-0.458894008348135540,\t\n-0.458938432325400440,\t-0.458982855155319220,\t-0.459027276837781270,\t-0.459071697372674730,\t-0.459116116759888950,\t-0.459160534999313310,\t-0.459204952090835890,\t-0.459249368034346070,\t\n-0.459293782829732880,\t-0.459338196476885620,\t-0.459382608975692440,\t-0.459427020326042770,\t-0.459471430527825960,\t-0.459515839580930120,\t-0.459560247485244710,\t-0.459604654240658720,\t\n-0.459649059847061060,\t-0.459693464304341160,\t-0.459737867612387160,\t-0.459782269771088550,\t-0.459826670780334620,\t-0.459871070640013650,\t-0.459915469350014980,\t-0.459959866910227670,\t\n-0.460004263320541060,\t-0.460048658580843370,\t-0.460093052691024070,\t-0.460137445650972140,\t-0.460181837460576950,\t-0.460226228119726850,\t-0.460270617628311120,\t-0.460315005986218880,\t\n-0.460359393193339460,\t-0.460403779249561220,\t-0.460448164154773520,\t-0.460492547908865790,\t-0.460536930511726340,\t-0.460581311963244480,\t-0.460625692263309410,\t-0.460670071411810100,\t\n-0.460714449408635980,\t-0.460758826253675370,\t-0.460803201946817680,\t-0.460847576487952380,\t-0.460891949876967740,\t-0.460936322113753240,\t-0.460980693198197900,\t-0.461025063130191260,\t\n-0.461069431909621570,\t-0.461113799536378320,\t-0.461158166010350530,\t-0.461202531331427690,\t-0.461246895499498210,\t-0.461291258514451410,\t-0.461335620376176540,\t-0.461379981084562960,\t\n-0.461424340639499050,\t-0.461468699040874290,\t-0.461513056288578140,\t-0.461557412382499030,\t-0.461601767322526340,\t-0.461646121108549250,\t-0.461690473740457240,\t-0.461734825218138630,\t\n-0.461779175541482960,\t-0.461823524710379410,\t-0.461867872724717410,\t-0.461912219584385330,\t-0.461956565289272700,\t-0.462000909839268610,\t-0.462045253234262710,\t-0.462089595474143240,\t\n-0.462133936558799810,\t-0.462178276488121930,\t-0.462222615261997980,\t-0.462266952880317440,\t-0.462311289342969560,\t-0.462355624649843480,\t-0.462399958800828680,\t-0.462444291795813590,\t\n-0.462488623634687790,\t-0.462532954317340820,\t-0.462577283843661090,\t-0.462621612213538150,\t-0.462665939426861180,\t-0.462710265483519730,\t-0.462754590383402220,\t-0.462798914126398230,\t\n-0.462843236712397020,\t-0.462887558141288010,\t-0.462931878412959800,\t-0.462976197527301850,\t-0.463020515484203420,\t-0.463064832283554110,\t-0.463109147925242270,\t-0.463153462409157610,\t\n-0.463197775735189670,\t-0.463242087903226910,\t-0.463286398913158930,\t-0.463330708764874980,\t-0.463375017458264200,\t-0.463419324993216310,\t-0.463463631369619710,\t-0.463507936587364000,\t\n-0.463552240646338880,\t-0.463596543546432700,\t-0.463640845287535240,\t-0.463685145869535630,\t-0.463729445292323570,\t-0.463773743555787490,\t-0.463818040659817020,\t-0.463862336604301480,\t\n-0.463906631389130520,\t-0.463950925014192550,\t-0.463995217479377280,\t-0.464039508784573950,\t-0.464083798929672280,\t-0.464128087914560670,\t-0.464172375739128900,\t-0.464216662403266530,\t\n-0.464260947906862120,\t-0.464305232249805360,\t-0.464349515431985550,\t-0.464393797453292290,\t-0.464438078313614170,\t-0.464482358012840820,\t-0.464526636550861630,\t-0.464570913927566160,\t\n-0.464615190142843080,\t-0.464659465196582020,\t-0.464703739088672300,\t-0.464748011819003600,\t-0.464792283387464480,\t-0.464836553793944670,\t-0.464880823038333830,\t-0.464925091120520610,\t\n-0.464969358040394630,\t-0.465013623797845220,\t-0.465057888392761800,\t-0.465102151825034000,\t-0.465146414094550490,\t-0.465190675201200890,\t-0.465234935144875020,\t-0.465279193925461410,\t\n-0.465323451542849820,\t-0.465367707996929610,\t-0.465411963287590490,\t-0.465456217414721100,\t-0.465500470378211180,\t-0.465544722177950070,\t-0.465588972813827550,\t-0.465633222285732230,\t\n-0.465677470593553800,\t-0.465721717737181740,\t-0.465765963716505750,\t-0.465810208531414470,\t-0.465854452181797660,\t-0.465898694667545080,\t-0.465942935988545410,\t-0.465987176144688430,\t\n-0.466031415135863440,\t-0.466075652961959960,\t-0.466119889622867770,\t-0.466164125118475380,\t-0.466208359448672730,\t-0.466252592613349560,\t-0.466296824612394520,\t-0.466341055445697430,\t\n-0.466385285113147700,\t-0.466429513614635140,\t-0.466473740950048400,\t-0.466517967119277340,\t-0.466562192122211340,\t-0.466606415958740250,\t-0.466650638628752720,\t-0.466694860132138570,\t\n-0.466739080468787320,\t-0.466783299638588720,\t-0.466827517641431490,\t-0.466871734477205480,\t-0.466915950145800560,\t-0.466960164647105320,\t-0.467004377981009690,\t-0.467048590147403130,\t\n-0.467092801146175460,\t-0.467137010977215380,\t-0.467181219640412810,\t-0.467225427135657180,\t-0.467269633462838340,\t-0.467313838621845060,\t-0.467358042612567190,\t-0.467402245434894230,\t\n-0.467446447088716020,\t-0.467490647573921280,\t-0.467534846890399920,\t-0.467579045038041870,\t-0.467623242016735830,\t-0.467667437826371660,\t-0.467711632466838890,\t-0.467755825938027000,\t\n-0.467800018239826030,\t-0.467844209372124560,\t-0.467888399334812580,\t-0.467932588127779990,\t-0.467976775750915560,\t-0.468020962204109160,\t-0.468065147487250370,\t-0.468109331600229110,\t\n-0.468153514542934080,\t-0.468197696315255320,\t-0.468241876917082300,\t-0.468286056348305000,\t-0.468330234608812120,\t-0.468374411698493700,\t-0.468418587617239260,\t-0.468462762364938720,\t\n-0.468506935941480850,\t-0.468551108346755670,\t-0.468595279580653110,\t-0.468639449643061980,\t-0.468683618533872190,\t-0.468727786252973400,\t-0.468771952800255130,\t-0.468816118175607310,\t\n-0.468860282378918860,\t-0.468904445410079700,\t-0.468948607268979800,\t-0.468992767955508040,\t-0.469036927469554330,\t-0.469081085811008270,\t-0.469125242979759940,\t-0.469169398975698090,\t\n-0.469213553798712710,\t-0.469257707448693880,\t-0.469301859925530360,\t-0.469346011229112180,\t-0.469390161359329040,\t-0.469434310316070410,\t-0.469478458099226450,\t-0.469522604708685950,\t\n-0.469566750144338960,\t-0.469610894406075450,\t-0.469655037493784290,\t-0.469699179407355560,\t-0.469743320146678910,\t-0.469787459711644320,\t-0.469831598102140700,\t-0.469875735318058100,\t\n-0.469919871359286150,\t-0.469964006225714880,\t-0.470008139917233230,\t-0.470052272433731270,\t-0.470096403775098590,\t-0.470140533941225290,\t-0.470184662932000290,\t-0.470228790747313610,\t\n-0.470272917387055340,\t-0.470317042851114360,\t-0.470361167139380810,\t-0.470405290251744320,\t-0.470449412188094660,\t-0.470493532948321800,\t-0.470537652532314780,\t-0.470581770939963560,\t\n-0.470625888171158360,\t-0.470670004225787970,\t-0.470714119103742670,\t-0.470758232804912020,\t-0.470802345329186190,\t-0.470846456676454080,\t-0.470890566846605850,\t-0.470934675839531190,\t\n-0.470978783655120250,\t-0.471022890293261940,\t-0.471066995753846420,\t-0.471111100036763430,\t-0.471155203141903070,\t-0.471199305069154250,\t-0.471243405818407230,\t-0.471287505389552110,\t\n-0.471331603782477790,\t-0.471375700997074430,\t-0.471419797033231890,\t-0.471463891890839810,\t-0.471507985569788400,\t-0.471552078069966680,\t-0.471596169391264700,\t-0.471640259533572690,\t\n-0.471684348496779700,\t-0.471728436280775820,\t-0.471772522885450800,\t-0.471816608310694940,\t-0.471860692556397120,\t-0.471904775622447540,\t-0.471948857508736500,\t-0.471992938215152870,\t\n-0.472037017741586850,\t-0.472081096087928360,\t-0.472125173254067110,\t-0.472169249239893280,\t-0.472213324045295980,\t-0.472257397670165390,\t-0.472301470114391660,\t-0.472345541377863830,\t\n-0.472389611460472200,\t-0.472433680362106530,\t-0.472477748082657080,\t-0.472521814622012810,\t-0.472565879980064050,\t-0.472609944156700550,\t-0.472654007151812610,\t-0.472698068965289260,\t\n-0.472742129597020720,\t-0.472786189046896900,\t-0.472830247314807940,\t-0.472874304400642990,\t-0.472918360304292300,\t-0.472962415025646070,\t-0.473006468564593440,\t-0.473050520921024620,\t\n-0.473094572094829520,\t-0.473138622085897960,\t-0.473182670894120250,\t-0.473226718519385470,\t-0.473270764961583930,\t-0.473314810220605840,\t-0.473358854296340340,\t-0.473402897188677670,\t\n-0.473446938897507770,\t-0.473490979422720950,\t-0.473535018764206280,\t-0.473579056921854040,\t-0.473623093895554180,\t-0.473667129685196920,\t-0.473711164290671500,\t-0.473755197711868190,\t\n-0.473799229948676850,\t-0.473843261000987840,\t-0.473887290868690250,\t-0.473931319551674450,\t-0.473975347049830800,\t-0.474019373363048340,\t-0.474063398491217420,\t-0.474107422434228040,\t\n-0.474151445191970500,\t-0.474195466764333940,\t-0.474239487151208730,\t-0.474283506352484780,\t-0.474327524368052480,\t-0.474371541197800950,\t-0.474415556841620620,\t-0.474459571299401360,\t\n-0.474503584571033530,\t-0.474547596656406390,\t-0.474591607555410240,\t-0.474635617267935520,\t-0.474679625793871300,\t-0.474723633133108060,\t-0.474767639285535670,\t-0.474811644251044220,\t\n-0.474855648029524070,\t-0.474899650620864420,\t-0.474943652024955590,\t-0.474987652241688040,\t-0.475031651270950980,\t-0.475075649112634830,\t-0.475119645766629520,\t-0.475163641232825450,\t\n-0.475207635511111950,\t-0.475251628601379320,\t-0.475295620503517650,\t-0.475339611217417300,\t-0.475383600742967540,\t-0.475427589080058780,\t-0.475471576228580990,\t-0.475515562188424720,\t\n-0.475559546959479110,\t-0.475603530541634680,\t-0.475647512934781800,\t-0.475691494138809730,\t-0.475735474153608950,\t-0.475779452979069430,\t-0.475823430615081310,\t-0.475867407061535020,\t\n-0.475911382318319810,\t-0.475955356385326160,\t-0.475999329262444480,\t-0.476043300949564100,\t-0.476087271446575480,\t-0.476131240753368660,\t-0.476175208869834170,\t-0.476219175795861260,\t\n-0.476263141531340360,\t-0.476307106076161610,\t-0.476351069430215550,\t-0.476395031593391360,\t-0.476438992565579640,\t-0.476482952346670430,\t-0.476526910936554190,\t-0.476570868335120300,\t\n-0.476614824542259290,\t-0.476658779557861570,\t-0.476702733381816510,\t-0.476746686014014600,\t-0.476790637454345970,\t-0.476834587702701150,\t-0.476878536758969520,\t-0.476922484623041490,\t\n-0.476966431294807260,\t-0.477010376774157360,\t-0.477054321060981110,\t-0.477098264155169090,\t-0.477142206056611340,\t-0.477186146765198550,\t-0.477230086280819920,\t-0.477274024603366150,\t\n-0.477317961732727670,\t-0.477361897668793890,\t-0.477405832411455400,\t-0.477449765960602290,\t-0.477493698316124760,\t-0.477537629477913450,\t-0.477581559445857620,\t-0.477625488219847850,\t\n-0.477669415799774840,\t-0.477713342185527860,\t-0.477757267376997470,\t-0.477801191374074010,\t-0.477845114176647880,\t-0.477889035784608620,\t-0.477932956197846760,\t-0.477976875416252500,\t\n-0.478020793439716480,\t-0.478064710268128020,\t-0.478108625901377820,\t-0.478152540339356060,\t-0.478196453581953340,\t-0.478240365629059080,\t-0.478284276480563930,\t-0.478328186136358470,\t\n-0.478372094596332180,\t-0.478416001860375580,\t-0.478459907928379060,\t-0.478503812800232740,\t-0.478547716475827280,\t-0.478591618955052090,\t-0.478635520237797930,\t-0.478679420323955330,\t\n-0.478723319213413770,\t-0.478767216906063940,\t-0.478811113401796050,\t-0.478855008700500740,\t-0.478898902802067540,\t-0.478942795706387090,\t-0.478986687413349650,\t-0.479030577922845920,\t\n-0.479074467234765320,\t-0.479118355348998550,\t-0.479162242265435860,\t-0.479206127983968000,\t-0.479250012504484400,\t-0.479293895826875820,\t-0.479337777951032830,\t-0.479381658876845030,\t\n-0.479425538604203120,\t-0.479469417132997340,\t-0.479513294463117970,\t-0.479557170594455790,\t-0.479601045526900300,\t-0.479644919260342200,\t-0.479688791794672160,\t-0.479732663129779800,\t\n-0.479776533265555750,\t-0.479820402201890370,\t-0.479864269938674370,\t-0.479908136475797330,\t-0.479952001813149950,\t-0.479995865950622940,\t-0.480039728888105870,\t-0.480083590625489500,\t\n-0.480127451162664090,\t-0.480171310499520110,\t-0.480215168635948260,\t-0.480259025571838080,\t-0.480302881307080320,\t-0.480346735841565730,\t-0.480390589175183960,\t-0.480434441307825700,\t\n-0.480478292239381320,\t-0.480522141969741190,\t-0.480565990498796110,\t-0.480609837826435680,\t-0.480653683952551090,\t-0.480697528877031820,\t-0.480741372599768790,\t-0.480785215120652310,\t\n-0.480829056439572740,\t-0.480872896556421010,\t-0.480916735471086600,\t-0.480960573183460360,\t-0.481004409693433050,\t-0.481048245000894330,\t-0.481092079105735040,\t-0.481135912007845500,\t\n-0.481179743707116250,\t-0.481223574203437980,\t-0.481267403496700390,\t-0.481311231586794290,\t-0.481355058473610490,\t-0.481398884157038690,\t-0.481442708636969640,\t-0.481486531913293820,\t\n-0.481530353985902100,\t-0.481574174854684070,\t-0.481617994519530630,\t-0.481661812980332560,\t-0.481705630236979600,\t-0.481749446289362560,\t-0.481793261137371920,\t-0.481837074780898100,\t\n-0.481880887219831970,\t-0.481924698454063270,\t-0.481968508483482770,\t-0.482012317307981440,\t-0.482056124927448930,\t-0.482099931341776090,\t-0.482143736550853410,\t-0.482187540554571410,\t\n-0.482231343352820920,\t-0.482275144945491730,\t-0.482318945332474600,\t-0.482362744513660570,\t-0.482406542488939270,\t-0.482450339258201580,\t-0.482494134821338070,\t-0.482537929178239620,\t\n-0.482581722328795980,\t-0.482625514272898020,\t-0.482669305010436640,\t-0.482713094541301620,\t-0.482756882865383820,\t-0.482800669982573870,\t-0.482844455892762260,\t-0.482888240595839850,\t\n-0.482932024091696440,\t-0.482975806380223030,\t-0.483019587461310460,\t-0.483063367334848560,\t-0.483107146000728180,\t-0.483150923458839980,\t-0.483194699709074470,\t-0.483238474751322590,\t\n-0.483282248585474140,\t-0.483326021211420430,\t-0.483369792629051330,\t-0.483413562838257700,\t-0.483457331838930190,\t-0.483501099630959390,\t-0.483544866214236150,\t-0.483588631588650400,\t\n-0.483632395754093060,\t-0.483676158710455160,\t-0.483719920457626410,\t-0.483763680995497880,\t-0.483807440323960170,\t-0.483851198442903860,\t-0.483894955352219940,\t-0.483938711051798200,\t\n-0.483982465541529740,\t-0.484026218821305480,\t-0.484069970891015280,\t-0.484113721750550120,\t-0.484157471399800700,\t-0.484201219838657990,\t-0.484244967067011810,\t-0.484288713084753240,\t\n-0.484332457891773320,\t-0.484376201487961790,\t-0.484419943873209800,\t-0.484463685047407940,\t-0.484507425010446860,\t-0.484551163762217630,\t-0.484594901302610070,\t-0.484638637631515270,\t\n-0.484682372748824250,\t-0.484726106654426950,\t-0.484769839348214330,\t-0.484813570830077150,\t-0.484857301099906050,\t-0.484901030157592060,\t-0.484944758003025110,\t-0.484988484636096670,\t\n-0.485032210056696610,\t-0.485075934264716010,\t-0.485119657260045630,\t-0.485163379042576060,\t-0.485207099612198430,\t-0.485250818968802730,\t-0.485294537112279930,\t-0.485338254042521180,\t\n-0.485381969759416390,\t-0.485425684262856700,\t-0.485469397552732770,\t-0.485513109628935400,\t-0.485556820491355570,\t-0.485600530139883360,\t-0.485644238574409800,\t-0.485687945794826050,\t\n-0.485731651801022070,\t-0.485775356592888900,\t-0.485819060170317400,\t-0.485862762533198600,\t-0.485906463681422480,\t-0.485950163614880250,\t-0.485993862333462980,\t-0.486037559837060650,\t\n-0.486081256125564460,\t-0.486124951198865120,\t-0.486168645056853370,\t-0.486212337699420400,\t-0.486256029126456210,\t-0.486299719337851990,\t-0.486343408333498820,\t-0.486387096113286730,\t\n-0.486430782677106930,\t-0.486474468024850120,\t-0.486518152156407200,\t-0.486561835071669280,\t-0.486605516770526330,\t-0.486649197252869650,\t-0.486692876518590330,\t-0.486736554567578470,\t\n-0.486780231399725150,\t-0.486823907014921340,\t-0.486867581413058080,\t-0.486911254594025510,\t-0.486954926557714830,\t-0.486998597304017180,\t-0.487042266832822650,\t-0.487085935144022490,\t\n-0.487129602237507450,\t-0.487173268113168410,\t-0.487216932770896620,\t-0.487260596210582100,\t-0.487304258432116060,\t-0.487347919435389800,\t-0.487391579220293360,\t-0.487435237786717930,\t\n-0.487478895134554390,\t-0.487522551263693650,\t-0.487566206174026960,\t-0.487609859865444310,\t-0.487653512337837440,\t-0.487697163591096330,\t-0.487740813625112350,\t-0.487784462439776360,\t\n-0.487828110034979220,\t-0.487871756410612150,\t-0.487915401566565320,\t-0.487959045502730000,\t-0.488002688218997450,\t-0.488046329715257740,\t-0.488089969991402250,\t-0.488133609047321840,\t\n-0.488177246882907420,\t-0.488220883498050260,\t-0.488264518892640500,\t-0.488308153066569440,\t-0.488351786019728400,\t-0.488395417752007450,\t-0.488439048263297980,\t-0.488482677553490950,\t\n-0.488526305622477560,\t-0.488569932470148020,\t-0.488613558096393670,\t-0.488657182501105790,\t-0.488700805684174570,\t-0.488744427645491360,\t-0.488788048384947050,\t-0.488831667902432650,\t\n-0.488875286197839490,\t-0.488918903271057640,\t-0.488962519121978580,\t-0.489006133750493620,\t-0.489049747156492960,\t-0.489093359339867860,\t-0.489136970300509450,\t-0.489180580038308550,\t\n-0.489224188553156640,\t-0.489267795844943840,\t-0.489311401913561540,\t-0.489355006758901090,\t-0.489398610380852810,\t-0.489442212779307990,\t-0.489485813954157580,\t-0.489529413905293090,\t\n-0.489573012632604660,\t-0.489616610135983680,\t-0.489660206415321540,\t-0.489703801470508570,\t-0.489747395301436020,\t-0.489790987907995020,\t-0.489834579290076570,\t-0.489878169447572010,\t\n-0.489921758380371660,\t-0.489965346088366950,\t-0.490008932571449230,\t-0.490052517829508820,\t-0.490096101862437070,\t-0.490139684670125090,\t-0.490183266252463890,\t-0.490226846609344900,\t\n-0.490270425740658430,\t-0.490314003646296290,\t-0.490357580326148730,\t-0.490401155780107230,\t-0.490444730008062880,\t-0.490488303009906650,\t-0.490531874785530060,\t-0.490575445334823390,\t\n-0.490619014657678100,\t-0.490662582753985720,\t-0.490706149623636460,\t-0.490749715266521780,\t-0.490793279682532890,\t-0.490836842871560760,\t-0.490880404833496930,\t-0.490923965568231650,\t\n-0.490967525075656500,\t-0.491011083355662900,\t-0.491054640408141230,\t-0.491098196232982950,\t-0.491141750830079220,\t-0.491185304199321440,\t-0.491228856340600040,\t-0.491272407253806500,\t\n-0.491315956938832290,\t-0.491359505395567830,\t-0.491403052623904660,\t-0.491446598623733800,\t-0.491490143394946450,\t-0.491533686937434100,\t-0.491577229251087210,\t-0.491620770335797210,\t\n-0.491664310191455680,\t-0.491707848817952990,\t-0.491751386215180660,\t-0.491794922383029850,\t-0.491838457321391750,\t-0.491881991030157950,\t-0.491925523509218750,\t-0.491969054758465700,\t\n-0.492012584777790420,\t-0.492056113567083340,\t-0.492099641126235940,\t-0.492143167455139420,\t-0.492186692553685410,\t-0.492230216421764230,\t-0.492273739059267520,\t-0.492317260466086930,\t\n-0.492360780642112690,\t-0.492404299587236580,\t-0.492447817301349680,\t-0.492491333784343230,\t-0.492534849036108830,\t-0.492578363056536960,\t-0.492621875845519200,\t-0.492665387402947070,\t\n-0.492708897728711130,\t-0.492752406822702940,\t-0.492795914684813710,\t-0.492839421314934690,\t-0.492882926712957530,\t-0.492926430878772640,\t-0.492969933812272110,\t-0.493013435513346310,\t\n-0.493056935981886930,\t-0.493100435217785240,\t-0.493143933220932420,\t-0.493187429991220170,\t-0.493230925528538980,\t-0.493274419832780480,\t-0.493317912903836250,\t-0.493361404741596900,\t\n-0.493404895345954050,\t-0.493448384716798970,\t-0.493491872854022910,\t-0.493535359757517500,\t-0.493578845427173400,\t-0.493622329862882130,\t-0.493665813064535440,\t-0.493709295032023820,\t\n-0.493752775765238960,\t-0.493796255264072170,\t-0.493839733528415150,\t-0.493883210558158370,\t-0.493926686353193590,\t-0.493970160913412450,\t-0.494013634238705530,\t-0.494057106328964550,\t\n-0.494100577184080790,\t-0.494144046803945640,\t-0.494187515188450670,\t-0.494230982337486580,\t-0.494274448250945020,\t-0.494317912928717740,\t-0.494361376370695270,\t-0.494404838576769370,\t\n-0.494448299546831340,\t-0.494491759280772600,\t-0.494535217778484860,\t-0.494578675039858640,\t-0.494622131064785810,\t-0.494665585853157950,\t-0.494709039404865770,\t-0.494752491719801010,\t\n-0.494795942797855050,\t-0.494839392638919570,\t-0.494882841242885230,\t-0.494926288609643770,\t-0.494969734739087010,\t-0.495013179631105530,\t-0.495056623285591080,\t-0.495100065702435090,\t\n-0.495143506881528920,\t-0.495186946822764370,\t-0.495230385526032050,\t-0.495273822991223800,\t-0.495317259218231390,\t-0.495360694206945400,\t-0.495404127957257690,\t-0.495447560469059690,\t\n-0.495490991742242760,\t-0.495534421776698760,\t-0.495577850572318290,\t-0.495621278128993590,\t-0.495664704446615310,\t-0.495708129525075260,\t-0.495751553364264910,\t-0.495794975964075680,\t\n-0.495838397324399380,\t-0.495881817445126660,\t-0.495925236326149430,\t-0.495968653967359560,\t-0.496012070368647580,\t-0.496055485529905470,\t-0.496098899451024640,\t-0.496142312131896520,\t\n-0.496185723572413080,\t-0.496229133772464910,\t-0.496272542731943880,\t-0.496315950450741890,\t-0.496359356928749660,\t-0.496402762165859050,\t-0.496446166161961520,\t-0.496489568916948950,\t\n-0.496532970430712040,\t-0.496576370703142760,\t-0.496619769734132910,\t-0.496663167523573260,\t-0.496706564071355720,\t-0.496749959377371710,\t-0.496793353441512820,\t-0.496836746263670970,\t\n-0.496880137843736860,\t-0.496923528181602350,\t-0.496966917277159470,\t-0.497010305130298870,\t-0.497053691740912520,\t-0.497097077108891950,\t-0.497140461234128690,\t-0.497183844116514670,\t\n-0.497227225755940640,\t-0.497270606152298900,\t-0.497313985305480320,\t-0.497357363215376710,\t-0.497400739881879770,\t-0.497444115304880920,\t-0.497487489484272180,\t-0.497530862419944320,\t\n-0.497574234111789360,\t-0.497617604559699170,\t-0.497660973763564550,\t-0.497704341723277540,\t-0.497747708438729620,\t-0.497791073909812480,\t-0.497834438136418030,\t-0.497877801118437100,\t\n-0.497921162855761660,\t-0.497964523348283730,\t-0.498007882595894070,\t-0.498051240598484710,\t-0.498094597355947240,\t-0.498137952868173690,\t-0.498181307135054870,\t-0.498224660156482760,\t\n-0.498268011932349380,\t-0.498311362462545590,\t-0.498354711746963440,\t-0.498398059785494450,\t-0.498441406578030380,\t-0.498484752124463140,\t-0.498528096424683600,\t-0.498571439478583840,\t\n-0.498614781286055910,\t-0.498658121846990600,\t-0.498701461161280000,\t-0.498744799228815710,\t-0.498788136049489460,\t-0.498831471623193250,\t-0.498874805949817980,\t-0.498918139029255690,\t\n-0.498961470861398420,\t-0.499004801446137130,\t-0.499048130783363800,\t-0.499091458872970130,\t-0.499134785714848260,\t-0.499178111308889010,\t-0.499221435654984450,\t-0.499264758753026730,\t\n-0.499308080602906710,\t-0.499351401204516490,\t-0.499394720557747750,\t-0.499438038662492260,\t-0.499481355518642030,\t-0.499524671126088000,\t-0.499567985484722310,\t-0.499611298594437040,\t\n-0.499654610455123160,\t-0.499697921066672710,\t-0.499741230428977500,\t-0.499784538541929220,\t-0.499827845405419970,\t-0.499871151019340710,\t-0.499914455383583920,\t-0.499957758498040640,\t\n-0.500001060362602940,\t-0.500044360977162650,\t-0.500087660341611450,\t-0.500130958455841430,\t-0.500174255319743690,\t-0.500217550933210300,\t-0.500260845296133350,\t-0.500304138408403930,\t\n-0.500347430269914240,\t-0.500390720880555920,\t-0.500434010240220830,\t-0.500477298348801060,\t-0.500520585206187580,\t-0.500563870812272830,\t-0.500607155166948650,\t-0.500650438270106250,\t\n-0.500693720121637710,\t-0.500737000721434900,\t-0.500780280069389900,\t-0.500823558165393920,\t-0.500866835009339040,\t-0.500910110601117450,\t-0.500953384940620140,\t-0.500996658027739410,\t\n-0.501039929862367010,\t-0.501083200444394810,\t-0.501126469773715000,\t-0.501169737850218570,\t-0.501213004673797920,\t-0.501256270244345050,\t-0.501299534561751140,\t-0.501342797625908390,\t\n-0.501386059436708660,\t-0.501429319994043720,\t-0.501472579297805980,\t-0.501515837347886300,\t-0.501559094144177100,\t-0.501602349686570470,\t-0.501645603974957610,\t-0.501688857009230830,\t\n-0.501732108789281760,\t-0.501775359315002940,\t-0.501818608586285240,\t-0.501861856603021070,\t-0.501905103365102630,\t-0.501948348872421010,\t-0.501991593124868630,\t-0.502034836122337120,\t\n-0.502078077864718590,\t-0.502121318351905320,\t-0.502164557583788310,\t-0.502207795560259850,\t-0.502251032281212370,\t-0.502294267746536850,\t-0.502337501956125700,\t-0.502380734909870790,\t\n-0.502423966607664090,\t-0.502467197049397800,\t-0.502510426234963110,\t-0.502553654164252790,\t-0.502596880837157920,\t-0.502640106253570920,\t-0.502683330413383640,\t-0.502726553316487970,\t\n-0.502769774962776310,\t-0.502812995352139860,\t-0.502856214484470930,\t-0.502899432359661840,\t-0.502942648977603770,\t-0.502985864338189040,\t-0.503029078441309730,\t-0.503072291286857600,\t\n-0.503115502874725280,\t-0.503158713204803760,\t-0.503201922276985460,\t-0.503245130091162670,\t-0.503288336647226720,\t-0.503331541945069900,\t-0.503374745984584320,\t-0.503417948765662150,\t\n-0.503461150288194830,\t-0.503504350552074540,\t-0.503547549557193830,\t-0.503590747303443780,\t-0.503633943790716910,\t-0.503677139018905210,\t-0.503720332987900640,\t-0.503763525697595640,\t\n-0.503806717147881390,\t-0.503849907338650320,\t-0.503893096269794950,\t-0.503936283941206490,\t-0.503979470352777240,\t-0.504022655504399290,\t-0.504065839395964720,\t-0.504109022027365960,\t\n-0.504152203398494310,\t-0.504195383509242090,\t-0.504238562359501820,\t-0.504281739949164700,\t-0.504324916278123260,\t-0.504368091346269590,\t-0.504411265153495990,\t-0.504454437699693890,\t\n-0.504497608984755710,\t-0.504540779008573860,\t-0.504583947771039760,\t-0.504627115272045730,\t-0.504670281511483850,\t-0.504713446489246320,\t-0.504756610205225550,\t-0.504799772659312860,\t\n-0.504842933851400780,\t-0.504886093781381720,\t-0.504929252449147100,\t-0.504972409854589240,\t-0.505015565997600450,\t-0.505058720878072690,\t-0.505101874495898610,\t-0.505145026850969290,\t\n-0.505188177943177940,\t-0.505231327772415750,\t-0.505274476338575140,\t-0.505317623641548420,\t-0.505360769681227560,\t-0.505403914457505210,\t-0.505447057970272670,\t-0.505490200219422590,\t\n-0.505533341204847280,\t-0.505576480926438250,\t-0.505619619384088060,\t-0.505662756577688780,\t-0.505705892507132600,\t-0.505749027172312180,\t-0.505792160573118710,\t-0.505835292709444830,\t\n-0.505878423581183070,\t-0.505921553188224960,\t-0.505964681530462920,\t-0.506007808607789160,\t-0.506050934420096300,\t-0.506094058967275770,\t-0.506137182249220000,\t-0.506180304265821720,\t\n-0.506223425016972260,\t-0.506266544502564250,\t-0.506309662722489890,\t-0.506352779676641380,\t-0.506395895364911250,\t-0.506439009787191030,\t-0.506482122943373250,\t-0.506525234833350660,\t\n-0.506568345457014460,\t-0.506611454814257510,\t-0.506654562904971790,\t-0.506697669729049840,\t-0.506740775286383950,\t-0.506783879576865770,\t-0.506826982600387940,\t-0.506870084356843000,\t\n-0.506913184846122470,\t-0.506956284068118990,\t-0.506999382022724880,\t-0.507042478709832540,\t-0.507085574129333750,\t-0.507128668281120910,\t-0.507171761165086890,\t-0.507214852781122990,\t\n-0.507257943129121980,\t-0.507301032208976150,\t-0.507344120020577720,\t-0.507387206563819420,\t-0.507430291838592670,\t-0.507473375844790240,\t-0.507516458582304650,\t-0.507559540051027660,\t\n-0.507602620250851790,\t-0.507645699181669240,\t-0.507688776843372550,\t-0.507731853235854350,\t-0.507774928359006060,\t-0.507818002212720890,\t-0.507861074796890240,\t-0.507904146111407000,\t\n-0.507947216156163340,\t-0.507990284931051580,\t-0.508033352435964590,\t-0.508076418670793780,\t-0.508119483635431910,\t-0.508162547329771840,\t-0.508205609753704880,\t-0.508248670907124000,\t\n-0.508291730789921400,\t-0.508334789401989400,\t-0.508377846743220840,\t-0.508420902813507380,\t-0.508463957612741550,\t-0.508507011140816310,\t-0.508550063397623100,\t-0.508593114383054770,\t\n-0.508636164097003520,\t-0.508679212539362440,\t-0.508722259710022830,\t-0.508765305608877560,\t-0.508808350235819380,\t-0.508851393590740050,\t-0.508894435673532210,\t-0.508937476484088270,\t\n-0.508980516022300660,\t-0.509023554288062010,\t-0.509066591281264190,\t-0.509109627001799960,\t-0.509152661449561950,\t-0.509195694624441920,\t-0.509238726526332730,\t-0.509281757155126580,\t\n-0.509324786510716220,\t-0.509367814592994070,\t-0.509410841401852110,\t-0.509453866937183530,\t-0.509496891198879750,\t-0.509539914186833750,\t-0.509582935900938060,\t-0.509625956341084980,\t\n-0.509668975507167390,\t-0.509711993399076910,\t-0.509755010016706530,\t-0.509798025359949000,\t-0.509841039428696070,\t-0.509884052222840390,\t-0.509927063742274700,\t-0.509970073986891310,\t\n-0.510013082956583210,\t-0.510056090651241910,\t-0.510099097070760400,\t-0.510142102215031530,\t-0.510185106083947070,\t-0.510228108677399870,\t-0.510271109995282250,\t-0.510314110037486950,\t\n-0.510357108803906830,\t-0.510400106294433440,\t-0.510443102508960190,\t-0.510486097447378830,\t-0.510529091109582220,\t-0.510572083495462900,\t-0.510615074604913400,\t-0.510658064437826460,\t\n-0.510701052994094070,\t-0.510744040273609090,\t-0.510787026276264380,\t-0.510830011001951690,\t-0.510872994450563890,\t-0.510915976621993730,\t-0.510958957516133520,\t-0.511001937132876450,\t\n-0.511044915472114060,\t-0.511087892533739320,\t-0.511130868317645310,\t-0.511173842823723800,\t-0.511216816051867640,\t-0.511259788001969360,\t-0.511302758673922050,\t-0.511345728067617470,\t\n-0.511388696182948580,\t-0.511431663019808360,\t-0.511474628578088450,\t-0.511517592857682170,\t-0.511560555858481810,\t-0.511603517580380030,\t-0.511646478023269900,\t-0.511689437187043180,\t\n-0.511732395071592850,\t-0.511775351676811870,\t-0.511818307002592230,\t-0.511861261048826680,\t-0.511904213815408070,\t-0.511947165302228950,\t-0.511990115509182280,\t-0.512033064436159920,\t\n-0.512076012083055310,\t-0.512118958449760300,\t-0.512161903536167860,\t-0.512204847342170640,\t-0.512247789867661290,\t-0.512290731112532870,\t-0.512333671076677270,\t-0.512376609759987560,\t\n-0.512419547162356600,\t-0.512462483283676380,\t-0.512505418123839980,\t-0.512548351682740040,\t-0.512591283960269210,\t-0.512634214956320670,\t-0.512677144670786070,\t-0.512720073103558600,\t\n-0.512763000254531360,\t-0.512805926123596320,\t-0.512848850710646340,\t-0.512891774015574290,\t-0.512934696038273240,\t-0.512977616778634960,\t-0.513020536236552750,\t-0.513063454411919470,\t\n-0.513106371304627330,\t-0.513149286914569070,\t-0.513192201241637780,\t-0.513235114285725880,\t-0.513278026046726570,\t-0.513320936524531810,\t-0.513363845719034710,\t-0.513406753630128440,\t\n-0.513449660257704890,\t-0.513492565601657120,\t-0.513535469661878020,\t-0.513578372438260210,\t-0.513621273930696790,\t-0.513664174139079830,\t-0.513707073063302540,\t-0.513749970703257790,\t\n-0.513792867058837870,\t-0.513835762129935760,\t-0.513878655916444220,\t-0.513921548418256320,\t-0.513964439635264280,\t-0.514007329567361170,\t-0.514050218214440080,\t-0.514093105576392980,\t\n-0.514135991653113190,\t-0.514178876444493450,\t-0.514221759950426520,\t-0.514264642170805590,\t-0.514307523105522520,\t-0.514350402754470860,\t-0.514393281117543450,\t-0.514436158194632400,\t\n-0.514479033985631110,\t-0.514521908490432110,\t-0.514564781708928390,\t-0.514607653641013020,\t-0.514650524286578200,\t-0.514693393645517470,\t-0.514736261717722910,\t-0.514779128503087600,\t\n-0.514821994001504520,\t-0.514864858212866430,\t-0.514907721137066620,\t-0.514950582773997080,\t-0.514993443123551110,\t-0.515036302185621910,\t-0.515079159960101560,\t-0.515122016446883380,\t\n-0.515164871645860110,\t-0.515207725556924620,\t-0.515250578179970220,\t-0.515293429514888990,\t-0.515336279561574240,\t-0.515379128319919060,\t-0.515421975789815750,\t-0.515464821971157510,\t\n-0.515507666863837200,\t-0.515550510467748140,\t-0.515593352782782400,\t-0.515636193808833300,\t-0.515679033545794030,\t-0.515721871993556790,\t-0.515764709152015000,\t-0.515807545021061300,\t\n-0.515850379600588770,\t-0.515893212890490730,\t-0.515936044890659250,\t-0.515978875600987650,\t-0.516021705021369240,\t-0.516064533151696200,\t-0.516107359991861750,\t-0.516150185541758950,\t\n-0.516193009801280690,\t-0.516235832770320370,\t-0.516278654448769970,\t-0.516321474836523020,\t-0.516364293933472720,\t-0.516407111739511260,\t-0.516449928254532060,\t-0.516492743478428110,\t\n-0.516535557411092580,\t-0.516578370052417800,\t-0.516621181402297180,\t-0.516663991460623920,\t-0.516706800227290210,\t-0.516749607702189580,\t-0.516792413885215020,\t-0.516835218776259260,\t\n-0.516878022375215960,\t-0.516920824681977200,\t-0.516963625696436390,\t-0.517006425418486850,\t-0.517049223848020880,\t-0.517092020984931900,\t-0.517134816829112780,\t-0.517177611380456700,\t\n-0.517220404638856880,\t-0.517263196604205720,\t-0.517305987276396980,\t-0.517348776655322860,\t-0.517391564740876770,\t-0.517434351532951810,\t-0.517477137031440940,\t-0.517519921236237690,\t\n-0.517562704147234150,\t-0.517605485764323860,\t-0.517648266087400330,\t-0.517691045116355660,\t-0.517733822851083380,\t-0.517776599291476570,\t-0.517819374437428310,\t-0.517862148288831920,\t\n-0.517904920845579820,\t-0.517947692107565420,\t-0.517990462074682250,\t-0.518033230746822390,\t-0.518075998123879500,\t-0.518118764205746650,\t-0.518161528992317270,\t-0.518204292483483650,\t\n-0.518247054679139340,\t-0.518289815579177750,\t-0.518332575183491300,\t-0.518375333491973290,\t-0.518418090504517040,\t-0.518460846221015510,\t-0.518503600641362250,\t-0.518546353765449660,\t\n-0.518589105593171170,\t-0.518631856124420310,\t-0.518674605359089380,\t-0.518717353297071910,\t-0.518760099938261110,\t-0.518802845282550160,\t-0.518845589329832270,\t-0.518888332080000180,\t\n-0.518931073532947210,\t-0.518973813688566990,\t-0.519016552546751720,\t-0.519059290107395150,\t-0.519102026370390380,\t-0.519144761335630920,\t-0.519187495003009200,\t-0.519230227372418640,\t\n-0.519272958443752990,\t-0.519315688216904550,\t-0.519358416691766860,\t-0.519401143868233110,\t-0.519443869746196500,\t-0.519486594325550670,\t-0.519529317606187920,\t-0.519572039588001910,\t\n-0.519614760270886160,\t-0.519657479654733080,\t-0.519700197739436320,\t-0.519742914524889080,\t-0.519785630010984660,\t-0.519828344197616370,\t-0.519871057084676960,\t-0.519913768672060290,\t\n-0.519956478959658800,\t-0.519999187947365990,\t-0.520041895635075300,\t-0.520084602022679920,\t-0.520127307110073380,\t-0.520170010897148210,\t-0.520212713383797930,\t-0.520255414569916420,\t\n-0.520298114455395870,\t-0.520340813040130020,\t-0.520383510324012200,\t-0.520426206306935480,\t-0.520468900988793730,\t-0.520511594369479360,\t-0.520554286448886020,\t-0.520596977226907230,\t\n-0.520639666703435760,\t-0.520682354878365010,\t-0.520725041751588400,\t-0.520767727322999590,\t-0.520810411592491080,\t-0.520853094559956540,\t-0.520895776225289600,\t-0.520938456588382890,\t\n-0.520981135649130070,\t-0.521023813407424320,\t-0.521066489863159070,\t-0.521109165016228060,\t-0.521151838866523610,\t-0.521194511413939690,\t-0.521237182658369820,\t-0.521279852599706550,\t\n-0.521322521237843730,\t-0.521365188572674660,\t-0.521407854604092560,\t-0.521450519331991160,\t-0.521493182756263110,\t-0.521535844876802050,\t-0.521578505693501840,\t-0.521621165206255010,\t\n-0.521663823414955210,\t-0.521706480319495850,\t-0.521749135919770680,\t-0.521791790215672350,\t-0.521834443207094490,\t-0.521877094893930860,\t-0.521919745276074100,\t-0.521962394353418070,\t\n-0.522005042125855970,\t-0.522047688593281320,\t-0.522090333755587890,\t-0.522132977612668080,\t-0.522175620164415990,\t-0.522218261410725140,\t-0.522260901351488280,\t-0.522303539986599170,\t\n-0.522346177315951230,\t-0.522388813339437760,\t-0.522431448056952740,\t-0.522474081468388700,\t-0.522516713573639820,\t-0.522559344372598770,\t-0.522601973865159270,\t-0.522644602051214990,\t\n-0.522687228930659110,\t-0.522729854503385600,\t-0.522772478769287010,\t-0.522815101728257290,\t-0.522857723380190100,\t-0.522900343724978290,\t-0.522942962762515620,\t-0.522985580492695610,\t\n-0.523028196915411580,\t-0.523070812030557390,\t-0.523113425838025780,\t-0.523156038337710740,\t-0.523198649529505900,\t-0.523241259413304020,\t-0.523283867988999060,\t-0.523326475256484350,\t\n-0.523369081215653950,\t-0.523411685866400410,\t-0.523454289208617580,\t-0.523496891242199560,\t-0.523539491967038860,\t-0.523582091383029360,\t-0.523624689490064690,\t-0.523667286288038270,\t\n-0.523709881776844080,\t-0.523752475956374750,\t-0.523795068826524270,\t-0.523837660387186490,\t-0.523880250638254160,\t-0.523922839579621160,\t-0.523965427211181110,\t-0.524008013532827550,\t\n-0.524050598544454240,\t-0.524093182245954140,\t-0.524135764637221340,\t-0.524178345718148920,\t-0.524220925488630530,\t-0.524263503948559810,\t-0.524306081097830390,\t-0.524348656936336030,\t\n-0.524391231463969820,\t-0.524433804680625390,\t-0.524476376586196950,\t-0.524518947180577120,\t-0.524561516463659890,\t-0.524604084435338900,\t-0.524646651095507680,\t-0.524689216444060300,\t\n-0.524731780480889420,\t-0.524774343205889120,\t-0.524816904618953250,\t-0.524859464719974910,\t-0.524902023508847740,\t-0.524944580985465590,\t-0.524987137149722340,\t-0.525029692001510950,\t\n-0.525072245540725290,\t-0.525114797767259330,\t-0.525157348681006050,\t-0.525199898281859420,\t-0.525242446569712970,\t-0.525284993544460450,\t-0.525327539205995840,\t-0.525370083554212000,\t\n-0.525412626589002900,\t-0.525455168310262730,\t-0.525497708717884150,\t-0.525540247811761340,\t-0.525582785591787950,\t-0.525625322057857500,\t-0.525667857209864200,\t-0.525710391047700790,\t\n-0.525752923571261470,\t-0.525795454780440210,\t-0.525837984675129990,\t-0.525880513255224780,\t-0.525923040520618220,\t-0.525965566471204520,\t-0.526008091106876410,\t-0.526050614427528210,\t\n-0.526093136433053780,\t-0.526135657123346090,\t-0.526178176498299340,\t-0.526220694557807180,\t-0.526263211301763230,\t-0.526305726730061600,\t-0.526348240842595240,\t-0.526390753639258360,\t\n-0.526433265119944930,\t-0.526475775284548030,\t-0.526518284132961640,\t-0.526560791665079520,\t-0.526603297880795520,\t-0.526645802780003500,\t-0.526688306362596670,\t-0.526730808628469440,\t\n-0.526773309577514890,\t-0.526815809209627010,\t-0.526858307524699530,\t-0.526900804522626440,\t-0.526943300203301600,\t-0.526985794566618200,\t-0.527028287612470230,\t-0.527070779340751970,\t\n-0.527113269751356420,\t-0.527155758844177650,\t-0.527198246619109410,\t-0.527240733076045690,\t-0.527283218214880440,\t-0.527325702035506770,\t-0.527368184537818860,\t-0.527410665721710910,\t\n-0.527453145587075790,\t-0.527495624133807910,\t-0.527538101361801020,\t-0.527580577270949090,\t-0.527623051861145440,\t-0.527665525132284150,\t-0.527707997084259530,\t-0.527750467716964430,\t\n-0.527792937030293170,\t-0.527835405024139500,\t-0.527877871698397390,\t-0.527920337052961040,\t-0.527962801087723310,\t-0.528005263802578730,\t-0.528047725197421270,\t-0.528090185272144240,\t\n-0.528132644026641620,\t-0.528175101460807370,\t-0.528217557574535480,\t-0.528260012367720020,\t-0.528302465840254200,\t-0.528344917992032200,\t-0.528387368822948230,\t-0.528429818332895480,\t\n-0.528472266521768150,\t-0.528514713389460210,\t-0.528557158935865860,\t-0.528599603160878280,\t-0.528642046064391580,\t-0.528684487646300270,\t-0.528726927906497220,\t-0.528769366844876960,\t\n-0.528811804461333250,\t-0.528854240755760040,\t-0.528896675728051550,\t-0.528939109378101070,\t-0.528981541705802800,\t-0.529023972711051060,\t-0.529066402393738920,\t-0.529108830753760920,\t\n-0.529151257791010690,\t-0.529193683505382430,\t-0.529236107896770340,\t-0.529278530965067500,\t-0.529320952710168770,\t-0.529363373131967350,\t-0.529405792230357440,\t-0.529448210005233010,\t\n-0.529490626456488030,\t-0.529533041584016930,\t-0.529575455387712890,\t-0.529617867867470120,\t-0.529660279023183130,\t-0.529702688854745030,\t-0.529745097362050220,\t-0.529787504544992680,\t\n-0.529829910403466280,\t-0.529872314937365640,\t-0.529914718146583750,\t-0.529957120031015030,\t-0.529999520590553890,\t-0.530041919825093630,\t-0.530084317734528580,\t-0.530126714318752690,\t\n-0.530169109577660390,\t-0.530211503511144990,\t-0.530253896119100790,\t-0.530296287401422210,\t-0.530338677358002550,\t-0.530381065988736240,\t-0.530423453293517260,\t-0.530465839272239560,\t\n-0.530508223924797680,\t-0.530550607251084940,\t-0.530592989250995630,\t-0.530635369924424170,\t-0.530677749271263990,\t-0.530720127291409380,\t-0.530762503984754440,\t-0.530804879351193360,\t\n-0.530847253390620330,\t-0.530889626102928890,\t-0.530931997488013340,\t-0.530974367545768100,\t-0.531016736276086590,\t-0.531059103678863330,\t-0.531101469753992310,\t-0.531143834501367930,\t\n-0.531186197920883510,\t-0.531228560012433680,\t-0.531270920775912870,\t-0.531313280211214380,\t-0.531355638318232630,\t-0.531397995096861810,\t-0.531440350546996010,\t-0.531482704668529650,\t\n-0.531525057461356250,\t-0.531567408925370130,\t-0.531609759060465930,\t-0.531652107866536830,\t-0.531694455343477590,\t-0.531736801491182190,\t-0.531779146309544810,\t-0.531821489798459890,\t\n-0.531863831957820830,\t-0.531906172787522610,\t-0.531948512287458650,\t-0.531990850457523260,\t-0.532033187297610840,\t-0.532075522807615500,\t-0.532117856987431640,\t-0.532160189836952790,\t\n-0.532202521356073490,\t-0.532244851544688260,\t-0.532287180402690520,\t-0.532329507929974800,\t-0.532371834126435290,\t-0.532414158991966200,\t-0.532456482526462160,\t-0.532498804729816480,\t\n-0.532541125601923790,\t-0.532583445142678750,\t-0.532625763351974650,\t-0.532668080229706130,\t-0.532710395775767400,\t-0.532752709990053090,\t-0.532795022872456610,\t-0.532837334422872620,\t\n-0.532879644641195640,\t-0.532921953527319080,\t-0.532964261081137810,\t-0.533006567302545810,\t-0.533048872191437370,\t-0.533091175747707150,\t-0.533133477971248550,\t-0.533175778861956330,\t\n-0.533218078419725020,\t-0.533260376644448140,\t-0.533302673536020230,\t-0.533344969094335710,\t-0.533387263319288870,\t-0.533429556210774150,\t-0.533471847768685170,\t-0.533514137992916580,\t\n-0.533556426883363020,\t-0.533598714439917910,\t-0.533641000662476110,\t-0.533683285550931920,\t-0.533725569105179760,\t-0.533767851325113290,\t-0.533810132210627230,\t-0.533852411761616240,\t\n-0.533894689977973740,\t-0.533936966859594580,\t-0.533979242406373070,\t-0.534021516618203410,\t-0.534063789494980350,\t-0.534106061036597410,\t-0.534148331242949250,\t-0.534190600113930710,\t\n-0.534232867649435340,\t-0.534275133849357760,\t-0.534317398713592300,\t-0.534359662242033460,\t-0.534401924434575680,\t-0.534444185291112820,\t-0.534486444811539840,\t-0.534528702995750390,\t\n-0.534570959843639230,\t-0.534613215355100650,\t-0.534655469530028960,\t-0.534697722368319030,\t-0.534739973869864380,\t-0.534782224034559770,\t-0.534824472862300060,\t-0.534866720352978780,\t\n-0.534908966506490670,\t-0.534951211322730160,\t-0.534993454801591550,\t-0.535035696942969820,\t-0.535077937746758380,\t-0.535120177212852100,\t-0.535162415341145730,\t-0.535204652131533010,\t\n-0.535246887583908590,\t-0.535289121698167000,\t-0.535331354474202990,\t-0.535373585911910200,\t-0.535415816011183380,\t-0.535458044771917500,\t-0.535500272194006090,\t-0.535542498277344010,\t\n-0.535584723021825690,\t-0.535626946427345540,\t-0.535669168493798420,\t-0.535711389221077970,\t-0.535753608609079060,\t-0.535795826657696540,\t-0.535838043366824060,\t-0.535880258736356470,\t\n-0.535922472766188210,\t-0.535964685456213790,\t-0.536006896806327960,\t-0.536049106816424590,\t-0.536091315486398880,\t-0.536133522816144460,\t-0.536175728805556200,\t-0.536217933454528620,\t\n-0.536260136762956250,\t-0.536302338730733850,\t-0.536344539357755280,\t-0.536386738643915280,\t-0.536428936589108950,\t-0.536471133193229810,\t-0.536513328456172830,\t-0.536555522377832550,\t\n-0.536597714958103490,\t-0.536639906196880510,\t-0.536682096094057370,\t-0.536724284649529040,\t-0.536766471863190260,\t-0.536808657734935020,\t-0.536850842264658180,\t-0.536893025452254150,\t\n-0.536935207297617900,\t-0.536977387800643300,\t-0.537019566961225210,\t-0.537061744779258610,\t-0.537103921254637350,\t-0.537146096387256190,\t-0.537188270177009760,\t-0.537230442623792710,\t\n-0.537272613727499900,\t-0.537314783488025190,\t-0.537356951905263560,\t-0.537399118979109970,\t-0.537441284709458070,\t-0.537483449096203050,\t-0.537525612139239330,\t-0.537567773838461660,\t\n-0.537609934193764900,\t-0.537652093205042920,\t-0.537694250872190690,\t-0.537736407195103290,\t-0.537778562173674480,\t-0.537820715807799220,\t-0.537862868097372160,\t-0.537905019042288270,\t\n-0.537947168642441520,\t-0.537989316897726890,\t-0.538031463808039230,\t-0.538073609373272640,\t-0.538115753593321980,\t-0.538157896468081990,\t-0.538200037997447200,\t-0.538242178181312700,\t\n-0.538284317019572360,\t-0.538326454512121240,\t-0.538368590658854340,\t-0.538410725459665620,\t-0.538452858914450160,\t-0.538494991023102390,\t-0.538537121785517270,\t-0.538579251201589670,\t\n-0.538621379271213560,\t-0.538663505994284470,\t-0.538705631370696160,\t-0.538747755400343700,\t-0.538789878083121950,\t-0.538831999418925460,\t-0.538874119407649400,\t-0.538916238049187650,\t\n-0.538958355343435280,\t-0.539000471290287390,\t-0.539042585889638050,\t-0.539084699141382130,\t-0.539126811045414490,\t-0.539168921601629770,\t-0.539211030809923280,\t-0.539253138670188650,\t\n-0.539295245182321300,\t-0.539337350346216220,\t-0.539379454161767250,\t-0.539421556628869810,\t-0.539463657747418330,\t-0.539505757517308230,\t-0.539547855938433240,\t-0.539589953010688680,\t\n-0.539632048733969640,\t-0.539674143108169970,\t-0.539716236133185090,\t-0.539758327808909530,\t-0.539800418135238160,\t-0.539842507112066160,\t-0.539884594739287520,\t-0.539926681016797310,\t\n-0.539968765944490840,\t-0.540010849522262080,\t-0.540052931750006240,\t-0.540095012627617940,\t-0.540137092154992170,\t-0.540179170332024120,\t-0.540221247158607750,\t-0.540263322634638170,\t\n-0.540305396760010770,\t-0.540347469534619430,\t-0.540389540958359450,\t-0.540431611031125580,\t-0.540473679752813020,\t-0.540515747123315960,\t-0.540557813142529490,\t-0.540599877810348910,\t\n-0.540641941126668300,\t-0.540684003091382760,\t-0.540726063704387250,\t-0.540768122965576530,\t-0.540810180874845890,\t-0.540852237432089430,\t-0.540894292637202460,\t-0.540936346490080040,\t\n-0.540978398990616390,\t-0.541020450138706700,\t-0.541062499934245930,\t-0.541104548377128960,\t-0.541146595467250970,\t-0.541188641204506050,\t-0.541230685588789950,\t-0.541272728619996870,\t\n-0.541314770298021770,\t-0.541356810622759870,\t-0.541398849594105890,\t-0.541440887211955160,\t-0.541482923476201970,\t-0.541524958386741310,\t-0.541566991943468690,\t-0.541609024146278210,\t\n-0.541651054995065160,\t-0.541693084489724420,\t-0.541735112630151060,\t-0.541777139416240280,\t-0.541819164847886280,\t-0.541861188924984360,\t-0.541903211647429830,\t-0.541945233015116880,\t\n-0.541987253027940820,\t-0.542029271685796730,\t-0.542071288988579700,\t-0.542113304936184150,\t-0.542155319528505380,\t-0.542197332765438690,\t-0.542239344646878170,\t-0.542281355172719360,\t\n-0.542323364342857220,\t-0.542365372157186610,\t-0.542407378615602950,\t-0.542449383718000440,\t-0.542491387464274500,\t-0.542533389854320540,\t-0.542575390888032640,\t-0.542617390565306220,\t\n-0.542659388886036490,\t-0.542701385850118180,\t-0.542743381457446720,\t-0.542785375707916520,\t-0.542827368601422890,\t-0.542869360137861130,\t-0.542911350317125670,\t-0.542953339139111810,\t\n-0.542995326603714630,\t-0.543037312710829450,\t-0.543079297460350660,\t-0.543121280852173590,\t-0.543163262886193770,\t-0.543205243562305370,\t-0.543247222880403830,\t-0.543289200840384230,\t\n-0.543331177442141660,\t-0.543373152685571510,\t-0.543415126570568120,\t-0.543457099097026890,\t-0.543499070264843340,\t-0.543541040073911690,\t-0.543583008524127440,\t-0.543624975615385700,\t\n-0.543666941347581530,\t-0.543708905720610370,\t-0.543750868734366510,\t-0.543792830388745930,\t-0.543834790683642820,\t-0.543876749618952830,\t-0.543918707194570920,\t-0.543960663410392180,\t\n-0.544002618266312240,\t-0.544044571762225320,\t-0.544086523898027030,\t-0.544128474673612810,\t-0.544170424088877060,\t-0.544212372143715100,\t-0.544254318838022330,\t-0.544296264171693740,\t\n-0.544338208144624860,\t-0.544380150756710090,\t-0.544422092007844970,\t-0.544464031897924920,\t-0.544505970426844450,\t-0.544547907594499110,\t-0.544589843400783980,\t-0.544631777845594580,\t\n-0.544673710928825330,\t-0.544715642650371870,\t-0.544757573010129610,\t-0.544799502007993100,\t-0.544841429643857840,\t-0.544883355917618940,\t-0.544925280829171800,\t-0.544967204378411730,\t\n-0.545009126565233260,\t-0.545051047389531920,\t-0.545092966851203450,\t-0.545134884950142170,\t-0.545176801686243610,\t-0.545218717059403170,\t-0.545260631069515830,\t-0.545302543716477240,\t\n-0.545344455000182030,\t-0.545386364920525610,\t-0.545428273477403750,\t-0.545470180670710740,\t-0.545512086500342330,\t-0.545553990966193610,\t-0.545595894068160450,\t-0.545637795806137030,\t\n-0.545679696180019210,\t-0.545721595189702420,\t-0.545763492835081410,\t-0.545805389116051590,\t-0.545847284032508260,\t-0.545889177584346850,\t-0.545931069771462770,\t-0.545972960593750670,\t\n-0.546014850051106170,\t-0.546056738143424920,\t-0.546098624870601350,\t-0.546140510232531300,\t-0.546182394229110080,\t-0.546224276860232780,\t-0.546266158125795150,\t-0.546308038025691720,\t\n-0.546349916559818570,\t-0.546391793728070340,\t-0.546433669530342560,\t-0.546475543966530640,\t-0.546517417036529900,\t-0.546559288740235850,\t-0.546601159077543360,\t-0.546643028048347860,\t\n-0.546684895652545190,\t-0.546726761890030000,\t-0.546768626760697820,\t-0.546810490264444060,\t-0.546852352401164140,\t-0.546894213170753600,\t-0.546936072573107280,\t-0.546977930608120720,\t\n-0.547019787275689670,\t-0.547061642575708880,\t-0.547103496508073880,\t-0.547145349072680200,\t-0.547187200269423470,\t-0.547229050098198440,\t-0.547270898558900760,\t-0.547312745651426180,\t\n-0.547354591375669330,\t-0.547396435731526080,\t-0.547438278718891720,\t-0.547480120337661690,\t-0.547521960587731620,\t-0.547563799468996360,\t-0.547605636981351560,\t-0.547647473124693080,\t\n-0.547689307898915570,\t-0.547731141303914760,\t-0.547772973339586080,\t-0.547814804005825050,\t-0.547856633302527320,\t-0.547898461229587630,\t-0.547940287786902180,\t-0.547982112974365610,\t\n-0.548023936791873780,\t-0.548065759239321990,\t-0.548107580316606000,\t-0.548149400023621340,\t-0.548191218360262740,\t-0.548233035326426200,\t-0.548274850922007340,\t-0.548316665146901140,\t\n-0.548358478001003120,\t-0.548400289484208940,\t-0.548442099596414100,\t-0.548483908337514370,\t-0.548525715707404490,\t-0.548567521705980220,\t-0.548609326333137640,\t-0.548651129588771380,\t\n-0.548692931472777200,\t-0.548734731985050740,\t-0.548776531125487850,\t-0.548818328893983300,\t-0.548860125290432820,\t-0.548901920314732390,\t-0.548943713966776880,\t-0.548985506246462030,\t\n-0.549027297153683480,\t-0.549069086688336650,\t-0.549110874850317400,\t-0.549152661639520700,\t-0.549194447055842310,\t-0.549236231099178180,\t-0.549278013769423090,\t-0.549319795066472990,\t\n-0.549361574990223310,\t-0.549403353540569790,\t-0.549445130717408190,\t-0.549486906520633480,\t-0.549528680950141400,\t-0.549570454005828050,\t-0.549612225687588160,\t-0.549653995995317720,\t\n-0.549695764928912370,\t-0.549737532488267950,\t-0.549779298673279240,\t-0.549821063483842300,\t-0.549862826919853110,\t-0.549904588981206530,\t-0.549946349667798430,\t-0.549988108979524440,\t\n-0.550029866916280200,\t-0.550071623477961680,\t-0.550113378664463640,\t-0.550155132475682260,\t-0.550196884911513310,\t-0.550238635971851850,\t-0.550280385656593870,\t-0.550322133965634790,\t\n-0.550363880898870450,\t-0.550405626456196730,\t-0.550447370637508700,\t-0.550489113442702460,\t-0.550530854871673190,\t-0.550572594924316650,\t-0.550614333600528690,\t-0.550656070900204960,\t\n-0.550697806823241320,\t-0.550739541369532850,\t-0.550781274538975520,\t-0.550823006331465410,\t-0.550864736746897400,\t-0.550906465785167440,\t-0.550948193446171410,\t-0.550989919729804930,\t\n-0.551031644635963990,\t-0.551073368164543550,\t-0.551115090315439700,\t-0.551156811088548420,\t-0.551198530483764880,\t-0.551240248500984850,\t-0.551281965140104410,\t-0.551323680401019310,\t\n-0.551365394283624630,\t-0.551407106787816460,\t-0.551448817913490870,\t-0.551490527660542960,\t-0.551532236028868580,\t-0.551573943018363710,\t-0.551615648628924090,\t-0.551657352860445590,\t\n-0.551699055712823290,\t-0.551740757185953390,\t-0.551782457279732070,\t-0.551824155994054100,\t-0.551865853328815880,\t-0.551907549283912950,\t-0.551949243859241050,\t-0.551990937054696600,\t\n-0.552032628870174350,\t-0.552074319305570490,\t-0.552116008360781230,\t-0.552157696035701530,\t-0.552199382330227690,\t-0.552241067244255370,\t-0.552282750777680740,\t-0.552324432930398790,\t\n-0.552366113702305820,\t-0.552407793093298020,\t-0.552449471103270250,\t-0.552491147732118830,\t-0.552532822979739490,\t-0.552574496846028220,\t-0.552616169330880980,\t-0.552657840434192970,\t\n-0.552699510155860390,\t-0.552741178495779420,\t-0.552782845453845040,\t-0.552824511029953560,\t-0.552866175224000940,\t-0.552907838035882730,\t-0.552949499465495320,\t-0.552991159512733810,\t\n-0.553032818177494830,\t-0.553074475459673360,\t-0.553116131359165820,\t-0.553157785875867840,\t-0.553199439009675390,\t-0.553241090760484780,\t-0.553282741128190980,\t-0.553324390112690410,\t\n-0.553366037713879160,\t-0.553407683931652520,\t-0.553449328765906690,\t-0.553490972216537420,\t-0.553532614283440800,\t-0.553574254966513020,\t-0.553615894265649280,\t-0.553657532180745650,\t\n-0.553699168711698660,\t-0.553740803858403410,\t-0.553782437620756070,\t-0.553824069998652750,\t-0.553865700991989510,\t-0.553907330600661660,\t-0.553948958824565520,\t-0.553990585663597380,\t\n-0.554032211117652440,\t-0.554073835186626900,\t-0.554115457870416720,\t-0.554157079168917990,\t-0.554198699082026900,\t-0.554240317609638660,\t-0.554281934751649660,\t-0.554323550507956230,\t\n-0.554365164878453440,\t-0.554406777863037830,\t-0.554448389461605240,\t-0.554489999674051770,\t-0.554531608500273610,\t-0.554573215940165950,\t-0.554614821993625440,\t-0.554656426660548150,\t\n-0.554698029940829400,\t-0.554739631834365590,\t-0.554781232341052700,\t-0.554822831460787150,\t-0.554864429193464130,\t-0.554906025538979940,\t-0.554947620497231120,\t-0.554989214068112970,\t\n-0.555030806251521680,\t-0.555072397047353340,\t-0.555113986455504140,\t-0.555155574475870270,\t-0.555197161108347050,\t-0.555238746352830990,\t-0.555280330209218410,\t-0.555321912677404720,\t\n-0.555363493757286110,\t-0.555405073448758890,\t-0.555446651751718920,\t-0.555488228666062730,\t-0.555529804191685520,\t-0.555571378328484240,\t-0.555612951076354110,\t-0.555654522435191640,\t\n-0.555696092404892820,\t-0.555737660985353820,\t-0.555779228176470960,\t-0.555820793978139660,\t-0.555862358390256440,\t-0.555903921412717720,\t-0.555945483045418800,\t-0.555987043288256100,\t\n-0.556028602141125820,\t-0.556070159603924140,\t-0.556111715676547270,\t-0.556153270358890840,\t-0.556194823650851270,\t-0.556236375552324970,\t-0.556277926063207360,\t-0.556319475183394860,\t\n-0.556361022912783780,\t-0.556402569251270410,\t-0.556444114198750390,\t-0.556485657755119930,\t-0.556527199920275770,\t-0.556568740694113330,\t-0.556610280076528910,\t-0.556651818067418810,\t\n-0.556693354666679130,\t-0.556734889874206500,\t-0.556776423689896330,\t-0.556817956113645040,\t-0.556859487145349160,\t-0.556901016784904330,\t-0.556942545032206860,\t-0.556984071887153040,\t\n-0.557025597349639080,\t-0.557067121419561380,\t-0.557108644096815600,\t-0.557150165381298250,\t-0.557191685272905860,\t-0.557233203771533850,\t-0.557274720877078740,\t-0.557316236589436960,\t\n-0.557357750908504920,\t-0.557399263834178040,\t-0.557440775366353170,\t-0.557482285504926620,\t-0.557523794249794040,\t-0.557565301600851940,\t-0.557606807557996520,\t-0.557648312121124200,\t\n-0.557689815290131400,\t-0.557731317064913750,\t-0.557772817445367770,\t-0.557814316431390120,\t-0.557855814022876320,\t-0.557897310219722890,\t-0.557938805021826360,\t-0.557980298429082700,\t\n-0.558021790441388670,\t-0.558063281058639780,\t-0.558104770280733130,\t-0.558146258107564130,\t-0.558187744539029530,\t-0.558229229575025520,\t-0.558270713215448520,\t-0.558312195460194950,\t\n-0.558353676309160660,\t-0.558395155762242080,\t-0.558436633819336060,\t-0.558478110480338130,\t-0.558519585745144820,\t-0.558561059613652540,\t-0.558602532085757720,\t-0.558644003161356870,\t\n-0.558685472840345640,\t-0.558726941122620670,\t-0.558768408008078810,\t-0.558809873496615590,\t-0.558851337588127550,\t-0.558892800282511320,\t-0.558934261579663310,\t-0.558975721479479380,\t\n-0.559017179981856070,\t-0.559058637086690240,\t-0.559100092793877510,\t-0.559141547103314430,\t-0.559183000014897510,\t-0.559224451528523180,\t-0.559265901644087960,\t-0.559307350361487710,\t\n-0.559348797680619070,\t-0.559390243601378680,\t-0.559431688123662510,\t-0.559473131247366970,\t-0.559514572972388710,\t-0.559556013298623920,\t-0.559597452225969460,\t-0.559638889754321080,\t\n-0.559680325883575860,\t-0.559721760613629440,\t-0.559763193944378570,\t-0.559804625875719660,\t-0.559846056407549360,\t-0.559887485539764200,\t-0.559928913272259910,\t-0.559970339604933360,\t\n-0.560011764537681310,\t-0.560053188070399610,\t-0.560094610202984790,\t-0.560136030935333480,\t-0.560177450267342110,\t-0.560218868198907540,\t-0.560260284729925400,\t-0.560301699860292550,\t\n-0.560343113589905740,\t-0.560384525918660840,\t-0.560425936846454590,\t-0.560467346373183520,\t-0.560508754498744160,\t-0.560550161223033140,\t-0.560591566545946440,\t-0.560632970467381140,\t\n-0.560674372987233110,\t-0.560715774105399190,\t-0.560757173821775700,\t-0.560798572136259390,\t-0.560839969048746890,\t-0.560881364559134180,\t-0.560922758667318110,\t-0.560964151373195440,\t\n-0.561005542676662030,\t-0.561046932577614840,\t-0.561088321075950190,\t-0.561129708171564820,\t-0.561171093864355600,\t-0.561212478154218150,\t-0.561253861041049570,\t-0.561295242524746720,\t\n-0.561336622605205340,\t-0.561378001282322400,\t-0.561419378555994550,\t-0.561460754426118540,\t-0.561502128892590320,\t-0.561543501955306780,\t-0.561584873614164870,\t-0.561626243869060350,\t\n-0.561667612719890190,\t-0.561708980166551130,\t-0.561750346208939490,\t-0.561791710846952450,\t-0.561833074080485660,\t-0.561874435909436310,\t-0.561915796333701150,\t-0.561957155353176140,\t\n-0.561998512967758270,\t-0.562039869177344050,\t-0.562081223981830250,\t-0.562122577381113710,\t-0.562163929375090410,\t-0.562205279963657540,\t-0.562246629146711200,\t-0.562287976924148340,\t\n-0.562329323295865380,\t-0.562370668261759190,\t-0.562412011821726730,\t-0.562453353975663870,\t-0.562494694723467580,\t-0.562536034065034940,\t-0.562577372000261810,\t-0.562618708529045390,\t\n-0.562660043651282080,\t-0.562701377366868650,\t-0.562742709675702170,\t-0.562784040577678500,\t-0.562825370072694840,\t-0.562866698160648050,\t-0.562908024841434210,\t-0.562949350114950180,\t\n-0.562990673981092930,\t-0.563031996439759210,\t-0.563073317490845220,\t-0.563114637134247920,\t-0.563155955369864400,\t-0.563197272197590640,\t-0.563238587617323700,\t-0.563279901628960240,\t\n-0.563321214232397120,\t-0.563362525427531290,\t-0.563403835214258740,\t-0.563445143592476660,\t-0.563486450562082020,\t-0.563527756122970900,\t-0.563569060275040390,\t-0.563610363018187230,\t\n-0.563651664352308290,\t-0.563692964277300420,\t-0.563734262793059830,\t-0.563775559899483470,\t-0.563816855596468660,\t-0.563858149883911360,\t-0.563899442761708670,\t-0.563940734229757430,\t\n-0.563982024287954630,\t-0.564023312936196450,\t-0.564064600174379980,\t-0.564105886002402410,\t-0.564147170420159720,\t-0.564188453427549090,\t-0.564229735024467380,\t-0.564271015210811240,\t\n-0.564312293986477980,\t-0.564353571351363660,\t-0.564394847305365380,\t-0.564436121848380320,\t-0.564477394980304580,\t-0.564518666701035450,\t-0.564559937010469580,\t-0.564601205908503930,\t\n-0.564642473395035480,\t-0.564683739469960640,\t-0.564725004133176720,\t-0.564766267384580020,\t-0.564807529224067520,\t-0.564848789651536290,\t-0.564890048666883080,\t-0.564931306270005100,\t\n-0.564972562460798520,\t-0.565013817239160550,\t-0.565055070604988270,\t-0.565096322558178100,\t-0.565137573098627000,\t-0.565178822226232060,\t-0.565220069940890020,\t-0.565261316242498200,\t\n-0.565302561130952670,\t-0.565343804606150860,\t-0.565385046667989830,\t-0.565426287316365790,\t-0.565467526551176050,\t-0.565508764372317450,\t-0.565550000779687310,\t-0.565591235773181930,\t\n-0.565632469352698290,\t-0.565673701518134010,\t-0.565714932269384960,\t-0.565756161606348670,\t-0.565797389528922000,\t-0.565838616037001810,\t-0.565879841130485390,\t-0.565921064809269070,\t\n-0.565962287073250030,\t-0.566003507922325680,\t-0.566044727356392220,\t-0.566085945375346960,\t-0.566127161979086750,\t-0.566168377167508670,\t-0.566209590940510040,\t-0.566250803297987050,\t\n-0.566292014239837100,\t-0.566333223765957410,\t-0.566374431876244370,\t-0.566415638570595180,\t-0.566456843848906930,\t-0.566498047711076920,\t-0.566539250157001350,\t-0.566580451186577740,\t\n-0.566621650799703390,\t-0.566662848996274500,\t-0.566704045776188490,\t-0.566745241139342440,\t-0.566786435085633200,\t-0.566827627614958200,\t-0.566868818727213840,\t-0.566910008422297440,\t\n-0.566951196700106410,\t-0.566992383560536940,\t-0.567033569003486560,\t-0.567074753028852240,\t-0.567115935636531070,\t-0.567157116826420450,\t-0.567198296598416580,\t-0.567239474952417440,\t\n-0.567280651888319110,\t-0.567321827406019220,\t-0.567363001505414850,\t-0.567404174186402880,\t-0.567445345448880810,\t-0.567486515292745080,\t-0.567527683717893080,\t-0.567568850724222250,\t\n-0.567610016311628770,\t-0.567651180480010400,\t-0.567692343229264100,\t-0.567733504559286840,\t-0.567774664469976150,\t-0.567815822961228570,\t-0.567856980032941380,\t-0.567898135685012130,\t\n-0.567939289917337110,\t-0.567980442729813850,\t-0.568021594122339550,\t-0.568062744094811610,\t-0.568103892647126460,\t-0.568145039779181520,\t-0.568186185490874410,\t-0.568227329782101440,\t\n-0.568268472652760150,\t-0.568309614102747720,\t-0.568350754131961230,\t-0.568391892740298220,\t-0.568433029927655100,\t-0.568474165693929390,\t-0.568515300039018620,\t-0.568556432962819320,\t\n-0.568597564465228800,\t-0.568638694546144460,\t-0.568679823205463400,\t-0.568720950443083130,\t-0.568762076258900070,\t-0.568803200652811870,\t-0.568844323624716040,\t-0.568885445174509010,\t\n-0.568926565302088410,\t-0.568967684007351430,\t-0.569008801290195490,\t-0.569049917150517230,\t-0.569091031588214170,\t-0.569132144603183950,\t-0.569173256195323000,\t-0.569214366364528820,\t\n-0.569255475110698740,\t-0.569296582433730050,\t-0.569337688333520160,\t-0.569378792809965840,\t-0.569419895862964380,\t-0.569460997492413630,\t-0.569502097698210030,\t-0.569543196480251200,\t\n-0.569584293838434340,\t-0.569625389772656750,\t-0.569666484282816080,\t-0.569707577368808730,\t-0.569748669030532890,\t-0.569789759267885000,\t-0.569830848080762680,\t-0.569871935469063340,\t\n-0.569913021432684070,\t-0.569954105971522630,\t-0.569995189085475530,\t-0.570036270774440520,\t-0.570077351038315140,\t-0.570118429876996120,\t-0.570159507290380900,\t-0.570200583278366980,\t\n-0.570241657840851570,\t-0.570282730977732410,\t-0.570323802688906030,\t-0.570364872974270190,\t-0.570405941833722510,\t-0.570447009267159630,\t-0.570488075274479200,\t-0.570529139855578520,\t\n-0.570570203010355440,\t-0.570611264738706490,\t-0.570652325040529320,\t-0.570693383915721770,\t-0.570734441364180390,\t-0.570775497385802800,\t-0.570816551980486530,\t-0.570857605148128890,\t\n-0.570898656888627620,\t-0.570939707201879370,\t-0.570980756087781760,\t-0.571021803546232780,\t-0.571062849577128830,\t-0.571103894180367670,\t-0.571144937355846930,\t-0.571185979103463690,\t\n-0.571227019423115930,\t-0.571268058314700290,\t-0.571309095778114510,\t-0.571350131813256330,\t-0.571391166420022520,\t-0.571432199598310710,\t-0.571473231348018420,\t-0.571514261669043400,\t\n-0.571555290561282400,\t-0.571596318024633180,\t-0.571637344058993580,\t-0.571678368664260140,\t-0.571719391840330830,\t-0.571760413587103060,\t-0.571801433904474240,\t-0.571842452792342140,\t\n-0.571883470250603600,\t-0.571924486279156370,\t-0.571965500877898330,\t-0.572006514046726200,\t-0.572047525785537640,\t-0.572088536094230380,\t-0.572129544972701740,\t-0.572170552420849690,\t\n-0.572211558438570740,\t-0.572252563025763330,\t-0.572293566182324190,\t-0.572334567908151070,\t-0.572375568203141620,\t-0.572416567067193240,\t-0.572457564500203690,\t-0.572498560502069930,\t\n-0.572539555072689830,\t-0.572580548211961140,\t-0.572621539919780710,\t-0.572662530196046520,\t-0.572703519040655860,\t-0.572744506453506500,\t-0.572785492434496170,\t-0.572826476983521850,\t\n-0.572867460100481280,\t-0.572908441785272340,\t-0.572949422037792090,\t-0.572990400857938180,\t-0.573031378245608350,\t-0.573072354200700350,\t-0.573113328723111160,\t-0.573154301812738630,\t\n-0.573195273469480630,\t-0.573236243693234230,\t-0.573277212483897070,\t-0.573318179841367010,\t-0.573359145765541480,\t-0.573400110256318430,\t-0.573441073313594730,\t-0.573482034937268240,\t\n-0.573522995127237150,\t-0.573563953883398200,\t-0.573604911205649380,\t-0.573645867093888210,\t-0.573686821548012430,\t-0.573727774567920010,\t-0.573768726153507710,\t-0.573809676304673940,\t\n-0.573850625021315670,\t-0.573891572303330880,\t-0.573932518150617080,\t-0.573973462563072020,\t-0.574014405540593690,\t-0.574055347083078930,\t-0.574096287190425820,\t-0.574137225862532350,\t\n-0.574178163099295480,\t-0.574219098900613180,\t-0.574260033266383090,\t-0.574300966196502950,\t-0.574341897690870740,\t-0.574382827749383540,\t-0.574423756371939100,\t-0.574464683558435720,\t\n-0.574505609308770260,\t-0.574546533622840800,\t-0.574587456500544990,\t-0.574628377941780900,\t-0.574669297946445500,\t-0.574710216514436880,\t-0.574751133645653110,\t-0.574792049339991060,\t\n-0.574832963597348920,\t-0.574873876417624330,\t-0.574914787800715140,\t-0.574955697746519220,\t-0.574996606254933870,\t-0.575037513325856840,\t-0.575078418959186430,\t-0.575119323154819620,\t\n-0.575160225912654590,\t-0.575201127232588870,\t-0.575242027114520440,\t-0.575282925558347260,\t-0.575323822563966300,\t-0.575364718131275880,\t-0.575405612260174060,\t-0.575446504950557820,\t\n-0.575487396202325250,\t-0.575528286015374310,\t-0.575569174389602980,\t-0.575610061324908330,\t-0.575650946821188450,\t-0.575691830878341640,\t-0.575732713496264870,\t-0.575773594674856340,\t\n-0.575814474414013900,\t-0.575855352713635190,\t-0.575896229573618410,\t-0.575937104993860750,\t-0.575977978974260400,\t-0.576018851514715320,\t-0.576059722615122840,\t-0.576100592275381020,\t\n-0.576141460495387720,\t-0.576182327275040820,\t-0.576223192614238490,\t-0.576264056512877710,\t-0.576304918970857230,\t-0.576345779988074010,\t-0.576386639564426370,\t-0.576427497699812160,\t\n-0.576468354394129250,\t-0.576509209647275700,\t-0.576550063459148830,\t-0.576590915829646830,\t-0.576631766758667790,\t-0.576672616246109100,\t-0.576713464291868870,\t-0.576754310895844840,\t\n-0.576795156057935190,\t-0.576835999778037900,\t-0.576876842056050280,\t-0.576917682891870620,\t-0.576958522285397010,\t-0.576999360236526870,\t-0.577040196745158160,\t-0.577081031811189080,\t\n-0.577121865434517820,\t-0.577162697615041460,\t-0.577203528352658310,\t-0.577244357647266780,\t-0.577285185498763950,\t-0.577326011907048130,\t-0.577366836872017400,\t-0.577407660393569500,\t\n-0.577448482471602740,\t-0.577489303106014540,\t-0.577530122296702970,\t-0.577570940043566570,\t-0.577611756346502410,\t-0.577652571205408800,\t-0.577693384620183830,\t-0.577734196590725340,\t\n-0.577775007116931750,\t-0.577815816198700370,\t-0.577856623835929280,\t-0.577897430028517120,\t-0.577938234776360970,\t-0.577979038079359240,\t-0.578019839937410020,\t-0.578060640350411380,\t\n-0.578101439318260860,\t-0.578142236840856860,\t-0.578183032918097470,\t-0.578223827549880220,\t-0.578264620736103300,\t-0.578305412476664890,\t-0.578346202771462980,\t-0.578386991620395860,\t\n-0.578427779023360960,\t-0.578468564980256560,\t-0.578509349490981210,\t-0.578550132555432080,\t-0.578590914173507500,\t-0.578631694345105750,\t-0.578672473070124820,\t-0.578713250348462990,\t\n-0.578754026180017590,\t-0.578794800564687570,\t-0.578835573502370250,\t-0.578876344992963920,\t-0.578917115036366780,\t-0.578957883632476800,\t-0.578998650781192500,\t-0.579039416482411200,\t\n-0.579080180736031290,\t-0.579120943541951430,\t-0.579161704900068800,\t-0.579202464810281810,\t-0.579243223272488780,\t-0.579283980286587670,\t-0.579324735852476900,\t-0.579365489970053990,\t\n-0.579406242639217360,\t-0.579446993859865420,\t-0.579487743631895700,\t-0.579528491955206610,\t-0.579569238829696240,\t-0.579609984255263220,\t-0.579650728231804860,\t-0.579691470759219670,\t\n-0.579732211837406200,\t-0.579772951466261730,\t-0.579813689645684920,\t-0.579854426375573940,\t-0.579895161655826890,\t-0.579935895486342280,\t-0.579976627867017540,\t-0.580017358797751290,\t\n-0.580058088278441960,\t-0.580098816308987080,\t-0.580139542889285040,\t-0.580180268019234280,\t-0.580220991698732760,\t-0.580261713927679220,\t-0.580302434705970980,\t-0.580343154033506670,\t\n-0.580383871910184810,\t-0.580424588335902940,\t-0.580465303310559570,\t-0.580506016834053010,\t-0.580546728906281670,\t-0.580587439527143200,\t-0.580628148696536120,\t-0.580668856414359060,\t\n-0.580709562680509440,\t-0.580750267494885900,\t-0.580790970857386730,\t-0.580831672767910150,\t-0.580872373226354770,\t-0.580913072232618120,\t-0.580953769786598630,\t-0.580994465888195260,\t\n-0.581035160537305310,\t-0.581075853733827420,\t-0.581116545477659900,\t-0.581157235768701040,\t-0.581197924606849380,\t-0.581238611992002660,\t-0.581279297924059750,\t-0.581319982402918160,\t\n-0.581360665428476640,\t-0.581401347000633510,\t-0.581442027119286940,\t-0.581482705784335700,\t-0.581523382995677300,\t-0.581564058753210490,\t-0.581604733056833910,\t-0.581645405906445090,\t\n-0.581686077301942770,\t-0.581726747243225260,\t-0.581767415730190860,\t-0.581808082762738320,\t-0.581848748340765280,\t-0.581889412464170250,\t-0.581930075132852110,\t-0.581970736346708370,\t\n-0.582011396105637790,\t-0.582052054409538780,\t-0.582092711258309970,\t-0.582133366651849000,\t-0.582174020590054630,\t-0.582214673072825590,\t-0.582255324100059420,\t-0.582295973671655090,\t\n-0.582336621787510780,\t-0.582377268447524800,\t-0.582417913651596120,\t-0.582458557399622270,\t-0.582499199691501990,\t-0.582539840527134150,\t-0.582580479906416260,\t-0.582621117829247190,\t\n-0.582661754295525360,\t-0.582702389305149170,\t-0.582743022858017270,\t-0.582783654954027510,\t-0.582824285593078640,\t-0.582864914775069410,\t-0.582905542499897460,\t-0.582946168767461750,\t\n-0.582986793577660590,\t-0.583027416930392840,\t-0.583068038825556020,\t-0.583108659263049330,\t-0.583149278242771190,\t-0.583189895764619550,\t-0.583230511828493170,\t-0.583271126434290580,\t\n-0.583311739581910070,\t-0.583352351271250620,\t-0.583392961502209870,\t-0.583433570274686790,\t-0.583474177588580110,\t-0.583514783443787710,\t-0.583555387840208220,\t-0.583595990777740380,\t\n-0.583636592256282500,\t-0.583677192275733450,\t-0.583717790835991070,\t-0.583758387936954670,\t-0.583798983578521890,\t-0.583839577760591590,\t-0.583880170483062400,\t-0.583920761745832850,\t\n-0.583961351548801690,\t-0.584001939891866770,\t-0.584042526774927070,\t-0.584083112197881340,\t-0.584123696160627540,\t-0.584164278663064420,\t-0.584204859705090620,\t-0.584245439286604660,\t\n-0.584286017407505520,\t-0.584326594067690940,\t-0.584367169267059890,\t-0.584407743005511350,\t-0.584448315282942940,\t-0.584488886099253870,\t-0.584529455454342540,\t-0.584570023348107930,\t\n-0.584610589780447890,\t-0.584651154751261390,\t-0.584691718260447300,\t-0.584732280307903700,\t-0.584772840893529210,\t-0.584813400017222820,\t-0.584853957678882820,\t-0.584894513878408300,\t\n-0.584935068615697110,\t-0.584975621890648220,\t-0.585016173703160720,\t-0.585056724053132360,\t-0.585097272940462210,\t-0.585137820365048910,\t-0.585178366326791100,\t-0.585218910825587630,\t\n-0.585259453861336600,\t-0.585299995433937290,\t-0.585340535543287580,\t-0.585381074189286530,\t-0.585421611371832800,\t-0.585462147090825110,\t-0.585502681346162350,\t-0.585543214137742570,\t\n-0.585583745465464660,\t-0.585624275329227780,\t-0.585664803728929930,\t-0.585705330664470060,\t-0.585745856135746810,\t-0.585786380142658940,\t-0.585826902685105510,\t-0.585867423762984400,\t\n-0.585907943376194780,\t-0.585948461524635640,\t-0.585988978208204950,\t-0.586029493426801880,\t-0.586070007180325090,\t-0.586110519468673540,\t-0.586151030291745420,\t-0.586191539649439710,\t\n-0.586232047541655590,\t-0.586272553968290810,\t-0.586313058929244790,\t-0.586353562424416050,\t-0.586394064453703460,\t-0.586434565017005970,\t-0.586475064114221790,\t-0.586515561745249990,\t\n-0.586556057909989550,\t-0.586596552608338650,\t-0.586637045840196380,\t-0.586677537605461490,\t-0.586718027904032710,\t-0.586758516735809250,\t-0.586799004100689190,\t-0.586839489998571610,\t\n-0.586879974429355580,\t-0.586920457392939300,\t-0.586960938889221960,\t-0.587001418918102200,\t-0.587041897479479210,\t-0.587082374573251190,\t-0.587122850199317200,\t-0.587163324357576450,\t\n-0.587203797047927020,\t-0.587244268270268100,\t-0.587284738024498430,\t-0.587325206310516990,\t-0.587365673128222960,\t-0.587406138477514330,\t-0.587446602358290380,\t-0.587487064770450210,\t\n-0.587527525713892110,\t-0.587567985188515160,\t-0.587608443194218230,\t-0.587648899730900180,\t-0.587689354798460300,\t-0.587729808396796560,\t-0.587770260525808720,\t-0.587810711185394960,\t\n-0.587851160375454260,\t-0.587891608095885810,\t-0.587932054346588240,\t-0.587972499127460970,\t-0.588012942438402080,\t-0.588053384279310750,\t-0.588093824650086420,\t-0.588134263550627150,\t\n-0.588174700980832130,\t-0.588215136940600460,\t-0.588255571429830870,\t-0.588296004448422780,\t-0.588336435996274280,\t-0.588376866073284650,\t-0.588417294679353330,\t-0.588457721814378390,\t\n-0.588498147478259010,\t-0.588538571670894410,\t-0.588578994392183750,\t-0.588619415642025130,\t-0.588659835420318080,\t-0.588700253726961660,\t-0.588740670561854420,\t-0.588781085924895420,\t\n-0.588821499815983640,\t-0.588861912235018160,\t-0.588902323181898280,\t-0.588942732656522190,\t-0.588983140658789320,\t-0.589023547188598950,\t-0.589063952245849400,\t-0.589104355830439850,\t\n-0.589144757942269500,\t-0.589185158581237210,\t-0.589225557747242500,\t-0.589265955440183340,\t-0.589306351659959480,\t-0.589346746406470000,\t-0.589387139679613310,\t-0.589427531479288720,\t\n-0.589467921805395420,\t-0.589508310657832600,\t-0.589548698036498560,\t-0.589589083941292950,\t-0.589629468372114830,\t-0.589669851328862850,\t-0.589710232811436090,\t-0.589750612819733840,\t\n-0.589790991353654980,\t-0.589831368413099020,\t-0.589871743997964380,\t-0.589912118108150250,\t-0.589952490743556270,\t-0.589992861904080620,\t-0.590033231589622950,\t-0.590073599800082120,\t\n-0.590113966535357300,\t-0.590154331795347930,\t-0.590194695579952300,\t-0.590235057889070380,\t-0.590275418722600360,\t-0.590315778080441890,\t-0.590356135962493920,\t-0.590396492368655660,\t\n-0.590436847298826510,\t-0.590477200752904880,\t-0.590517552730790210,\t-0.590557903232382110,\t-0.590598252257578780,\t-0.590638599806279860,\t-0.590678945878384540,\t-0.590719290473791680,\t\n-0.590759633592401130,\t-0.590799975234110990,\t-0.590840315398820980,\t-0.590880654086430530,\t-0.590920991296838060,\t-0.590961327029943200,\t-0.591001661285644910,\t-0.591041994063842950,\t\n-0.591082325364435500,\t-0.591122655187322320,\t-0.591162983532402930,\t-0.591203310399575630,\t-0.591243635788740060,\t-0.591283959699795410,\t-0.591324282132640880,\t-0.591364603087175980,\t\n-0.591404922563299240,\t-0.591445240560910190,\t-0.591485557079908350,\t-0.591525872120192250,\t-0.591566185681661530,\t-0.591606497764215370,\t-0.591646808367752850,\t-0.591687117492173840,\t\n-0.591727425137376530,\t-0.591767731303260660,\t-0.591808035989725870,\t-0.591848339196670680,\t-0.591888640923994620,\t-0.591928941171596890,\t-0.591969239939377220,\t-0.592009537227234040,\t\n-0.592049833035067090,\t-0.592090127362775890,\t-0.592130420210258970,\t-0.592170711577416080,\t-0.592211001464146290,\t-0.592251289870349140,\t-0.592291576795924040,\t-0.592331862240769610,\t\n-0.592372146204785620,\t-0.592412428687871580,\t-0.592452709689926140,\t-0.592492989210848810,\t-0.592533267250539120,\t-0.592573543808896260,\t-0.592613818885819880,\t-0.592654092481208480,\t\n-0.592694364594962390,\t-0.592734635226979890,\t-0.592774904377160960,\t-0.592815172045404570,\t-0.592855438231610350,\t-0.592895702935677950,\t-0.592935966157505880,\t-0.592976227896993890,\t\n-0.593016488154041730,\t-0.593056746928547930,\t-0.593097004220412230,\t-0.593137260029534150,\t-0.593177514355812780,\t-0.593217767199148090,\t-0.593258018559438600,\t-0.593298268436584060,\t\n-0.593338516830484220,\t-0.593378763741037710,\t-0.593419009168144270,\t-0.593459253111703330,\t-0.593499495571614630,\t-0.593539736547776810,\t-0.593579976040089610,\t-0.593620214048452890,\t\n-0.593660450572765290,\t-0.593700685612926550,\t-0.593740919168836090,\t-0.593781151240393210,\t-0.593821381827498000,\t-0.593861610930048860,\t-0.593901838547945760,\t-0.593942064681088340,\t\n-0.593982289329375470,\t-0.594022512492706880,\t-0.594062734170981990,\t-0.594102954364100320,\t-0.594143173071961520,\t-0.594183390294464430,\t-0.594223606031508920,\t-0.594263820282994850,\t\n-0.594304033048820730,\t-0.594344244328886550,\t-0.594384454123091820,\t-0.594424662431336180,\t-0.594464869253518600,\t-0.594505074589538940,\t-0.594545278439296830,\t-0.594585480802691250,\t\n-0.594625681679621930,\t-0.594665881069988410,\t-0.594706078973690100,\t-0.594746275390627080,\t-0.594786470320697980,\t-0.594826663763802670,\t-0.594866855719841100,\t-0.594907046188712040,\t\n-0.594947235170315340,\t-0.594987422664550510,\t-0.595027608671317210,\t-0.595067793190515170,\t-0.595107976222043260,\t-0.595148157765801880,\t-0.595188337821689670,\t-0.595228516389606610,\t\n-0.595268693469452330,\t-0.595308869061126230,\t-0.595349043164528410,\t-0.595389215779557610,\t-0.595429386906113690,\t-0.595469556544096720,\t-0.595509724693405460,\t-0.595549891353939990,\t\n-0.595590056525599710,\t-0.595630220208284270,\t-0.595670382401893630,\t-0.595710543106326760,\t-0.595750702321483530,\t-0.595790860047263780,\t-0.595831016283566610,\t-0.595871171030291860,\t\n-0.595911324287339280,\t-0.595951476054608630,\t-0.595991626331998980,\t-0.596031775119410300,\t-0.596071922416742560,\t-0.596112068223894510,\t-0.596152212540766450,\t-0.596192355367257790,\t\n-0.596232496703268280,\t-0.596272636548697780,\t-0.596312774903445360,\t-0.596352911767411120,\t-0.596393047140494900,\t-0.596433181022595680,\t-0.596473313413613540,\t-0.596513444313448100,\t\n-0.596553573721999020,\t-0.596593701639166360,\t-0.596633828064849100,\t-0.596673952998947650,\t-0.596714076441360990,\t-0.596754198391989070,\t-0.596794318850731640,\t-0.596834437817488460,\t\n-0.596874555292159600,\t-0.596914671274643930,\t-0.596954785764841620,\t-0.596994898762652660,\t-0.597035010267976120,\t-0.597075120280711970,\t-0.597115228800760180,\t-0.597155335828020160,\t\n-0.597195441362392220,\t-0.597235545403775330,\t-0.597275647952069550,\t-0.597315749007175100,\t-0.597355848568990820,\t-0.597395946637417020,\t-0.597436043212353220,\t-0.597476138293699720,\t\n-0.597516231881355610,\t-0.597556323975220850,\t-0.597596414575195630,\t-0.597636503681178930,\t-0.597676591293071050,\t-0.597716677410771720,\t-0.597756762034180710,\t-0.597796845163198090,\t\n-0.597836926797723050,\t-0.597877006937655660,\t-0.597917085582896140,\t-0.597957162733343540,\t-0.597997238388898070,\t-0.598037312549459470,\t-0.598077385214927480,\t-0.598117456385202530,\t\n-0.598157526060183580,\t-0.598197594239770700,\t-0.598237660923864320,\t-0.598277726112363410,\t-0.598317789805168140,\t-0.598357852002178390,\t-0.598397912703294340,\t-0.598437971908415190,\t\n-0.598478029617441120,\t-0.598518085830272330,\t-0.598558140546808000,\t-0.598598193766948230,\t-0.598638245490593080,\t-0.598678295717642310,\t-0.598718344447996100,\t-0.598758391681553650,\t\n-0.598798437418215260,\t-0.598838481657881120,\t-0.598878524400450420,\t-0.598918565645823460,\t-0.598958605393900000,\t-0.598998643644580110,\t-0.599038680397763980,\t-0.599078715653350690,\t\n-0.599118749411240990,\t-0.599158781671334180,\t-0.599198812433530350,\t-0.599238841697729450,\t-0.599278869463831470,\t-0.599318895731736580,\t-0.599358920501344210,\t-0.599398943772554540,\t\n-0.599438965545267880,\t-0.599478985819383410,\t-0.599519004594801450,\t-0.599559021871421960,\t-0.599599037649145020,\t-0.599639051927870700,\t-0.599679064707498540,\t-0.599719075987928620,\t\n-0.599759085769061450,\t-0.599799094050796120,\t-0.599839100833033050,\t-0.599879106115672300,\t-0.599919109898614080,\t-0.599959112181757790,\t-0.599999112965003740,\t-0.600039112248252240,\t\n-0.600079110031402570,\t-0.600119106314355170,\t-0.600159101097009870,\t-0.600199094379267000,\t-0.600239086161026610,\t-0.600279076442188250,\t-0.600319065222652100,\t-0.600359052502318800,\t\n-0.600399038281087320,\t-0.600439022558858390,\t-0.600479005335531890,\t-0.600518986611007780,\t-0.600558966385186690,\t-0.600598944657967700,\t-0.600638921429251460,\t-0.600678896698938150,\t\n-0.600718870466927290,\t-0.600758842733119300,\t-0.600798813497414150,\t-0.600838782759712360,\t-0.600878750519913350,\t-0.600918716777917310,\t-0.600958681533624860,\t-0.600998644786935430,\t\n-0.601038606537749320,\t-0.601078566785966720,\t-0.601118525531487700,\t-0.601158482774212690,\t-0.601198438514041200,\t-0.601238392750873540,\t-0.601278345484610230,\t-0.601318296715150800,\t\n-0.601358246442395550,\t-0.601398194666244670,\t-0.601438141386598350,\t-0.601478086603357000,\t-0.601518030316420150,\t-0.601557972525688540,\t-0.601597913231061600,\t-0.601637852432439950,\t\n-0.601677790129723560,\t-0.601717726322812840,\t-0.601757661011607990,\t-0.601797594196008760,\t-0.601837525875915550,\t-0.601877456051228780,\t-0.601917384721848080,\t-0.601957311887673980,\t\n-0.601997237548606570,\t-0.602037161704546020,\t-0.602077084355392870,\t-0.602117005501046740,\t-0.602156925141408060,\t-0.602196843276377460,\t-0.602236759905854350,\t-0.602276675029739360,\t\n-0.602316588647932690,\t-0.602356500760334980,\t-0.602396411366845520,\t-0.602436320467365170,\t-0.602476228061794240,\t-0.602516134150032470,\t-0.602556038731980380,\t-0.602595941807538060,\t\n-0.602635843376606030,\t-0.602675743439084700,\t-0.602715641994873600,\t-0.602755539043873470,\t-0.602795434585984840,\t-0.602835328621107220,\t-0.602875221149141380,\t-0.602915112169987390,\t\n-0.602955001683545650,\t-0.602994889689716820,\t-0.603034776188400290,\t-0.603074661179496930,\t-0.603114544662907260,\t-0.603154426638530810,\t-0.603194307106268310,\t-0.603234186066020080,\t\n-0.603274063517686640,\t-0.603313939461167850,\t-0.603353813896364110,\t-0.603393686823176180,\t-0.603433558241503690,\t-0.603473428151247380,\t-0.603513296552307340,\t-0.603553163444584210,\t\n-0.603593028827978490,\t-0.603632892702389840,\t-0.603672755067718890,\t-0.603712615923866490,\t-0.603752475270732170,\t-0.603792333108216670,\t-0.603832189436220300,\t-0.603872044254643470,\t\n-0.603911897563386920,\t-0.603951749362350300,\t-0.603991599651434560,\t-0.604031448430539570,\t-0.604071295699565860,\t-0.604111141458414050,\t-0.604150985706984220,\t-0.604190828445177350,\t\n-0.604230669672893070,\t-0.604270509390032130,\t-0.604310347596495270,\t-0.604350184292182120,\t-0.604390019476993560,\t-0.604429853150829980,\t-0.604469685313591800,\t-0.604509515965179660,\t\n-0.604549345105493410,\t-0.604589172734433800,\t-0.604628998851901580,\t-0.604668823457796600,\t-0.604708646552019500,\t-0.604748468134470700,\t-0.604788288205051260,\t-0.604828106763660610,\t\n-0.604867923810199710,\t-0.604907739344569430,\t-0.604947553366669390,\t-0.604987365876400450,\t-0.605027176873663140,\t-0.605066986358357870,\t-0.605106794330385500,\t-0.605146600789645770,\t\n-0.605186405736039550,\t-0.605226209169467680,\t-0.605266011089829910,\t-0.605305811497027110,\t-0.605345610390959800,\t-0.605385407771528490,\t-0.605425203638634060,\t-0.605464997992176120,\t\n-0.605504790832055770,\t-0.605544582158173860,\t-0.605584371970430020,\t-0.605624160268725340,\t-0.605663947052960230,\t-0.605703732323035540,\t-0.605743516078851240,\t-0.605783298320308080,\t\n-0.605823079047307140,\t-0.605862858259748060,\t-0.605902635957531910,\t-0.605942412140559110,\t-0.605982186808730280,\t-0.606021959961946300,\t-0.606061731600107120,\t-0.606101501723113610,\t\n-0.606141270330866730,\t-0.606181037423266340,\t-0.606220803000213300,\t-0.606260567061608250,\t-0.606300329607351810,\t-0.606340090637344840,\t-0.606379850151487320,\t-0.606419608149680540,\t\n-0.606459364631824370,\t-0.606499119597819880,\t-0.606538873047567480,\t-0.606578624980967930,\t-0.606618375397922180,\t-0.606658124298330100,\t-0.606697871682092770,\t-0.606737617549111040,\t\n-0.606777361899284990,\t-0.606817104732515490,\t-0.606856846048703270,\t-0.606896585847748970,\t-0.606936324129553450,\t-0.606976060894016790,\t-0.607015796141040060,\t-0.607055529870524140,\t\n-0.607095262082368970,\t-0.607134992776475760,\t-0.607174721952745020,\t-0.607214449611077840,\t-0.607254175751374190,\t-0.607293900373535030,\t-0.607333623477461560,\t-0.607373345063053630,\t\n-0.607413065130212430,\t-0.607452783678838480,\t-0.607492500708832540,\t-0.607532216220095790,\t-0.607571930212528090,\t-0.607611642686030520,\t-0.607651353640504270,\t-0.607691063075849300,\t\n-0.607730770991966600,\t-0.607770477388757000,\t-0.607810182266121270,\t-0.607849885623960360,\t-0.607889587462174360,\t-0.607929287780664800,\t-0.607968986579331740,\t-0.608008683858076050,\t\n-0.608048379616798810,\t-0.608088073855400530,\t-0.608127766573782420,\t-0.608167457771844560,\t-0.608207147449488120,\t-0.608246835606614080,\t-0.608286522243122520,\t-0.608326207358914850,\t\n-0.608365890953891490,\t-0.608405573027953510,\t-0.608445253581001880,\t-0.608484932612936790,\t-0.608524610123659440,\t-0.608564286113070900,\t-0.608603960581071140,\t-0.608643633527561680,\t\n-0.608683304952442940,\t-0.608722974855616110,\t-0.608762643236982150,\t-0.608802310096441150,\t-0.608841975433894840,\t-0.608881639249243210,\t-0.608921301542387440,\t-0.608960962313228380,\t\n-0.609000621561667010,\t-0.609040279287604400,\t-0.609079935490940750,\t-0.609119590171577240,\t-0.609159243329415070,\t-0.609198894964354530,\t-0.609238545076296710,\t-0.609278193665142460,\t\n-0.609317840730792870,\t-0.609357486273148900,\t-0.609397130292110960,\t-0.609436772787580130,\t-0.609476413759457710,\t-0.609516053207643900,\t-0.609555691132040000,\t-0.609595327532546860,\t\n-0.609634962409065780,\t-0.609674595761496960,\t-0.609714227589741590,\t-0.609753857893700960,\t-0.609793486673275490,\t-0.609833113928366140,\t-0.609872739658874120,\t-0.609912363864700160,\t\n-0.609951986545745670,\t-0.609991607701910970,\t-0.610031227333097110,\t-0.610070845439205640,\t-0.610110462020136630,\t-0.610150077075791500,\t-0.610189690606071090,\t-0.610229302610876600,\t\n-0.610268913090109110,\t-0.610308522043669030,\t-0.610348129471458000,\t-0.610387735373376210,\t-0.610427339749325170,\t-0.610466942599205750,\t-0.610506543922918920,\t-0.610546143720366200,\t\n-0.610585741991447660,\t-0.610625338736064840,\t-0.610664933954119030,\t-0.610704527645510530,\t-0.610744119810140650,\t-0.610783710447910470,\t-0.610823299558721060,\t-0.610862887142473720,\t\n-0.610902473199068870,\t-0.610942057728407820,\t-0.610981640730391960,\t-0.611021222204921610,\t-0.611060802151898290,\t-0.611100380571222850,\t-0.611139957462796920,\t-0.611179532826520710,\t\n-0.611219106662295620,\t-0.611258678970023170,\t-0.611298249749603670,\t-0.611337819000938530,\t-0.611377386723928830,\t-0.611416952918475640,\t-0.611456517584480500,\t-0.611496080721843690,\t\n-0.611535642330466640,\t-0.611575202410250870,\t-0.611614760961096680,\t-0.611654317982905700,\t-0.611693873475578800,\t-0.611733427439017370,\t-0.611772979873122620,\t-0.611812530777795070,\t\n-0.611852080152936240,\t-0.611891627998447430,\t-0.611931174314229390,\t-0.611970719100183300,\t-0.612010262356210370,\t-0.612049804082212210,\t-0.612089344278089250,\t-0.612128882943742790,\t\n-0.612168420079074570,\t-0.612207955683984890,\t-0.612247489758375400,\t-0.612287022302147150,\t-0.612326553315201250,\t-0.612366082797439430,\t-0.612405610748762100,\t-0.612445137169070560,\t\n-0.612484662058266680,\t-0.612524185416250750,\t-0.612563707242924300,\t-0.612603227538188740,\t-0.612642746301944930,\t-0.612682263534094720,\t-0.612721779234538410,\t-0.612761293403178090,\t\n-0.612800806039914160,\t-0.612840317144648260,\t-0.612879826717281470,\t-0.612919334757715210,\t-0.612958841265850870,\t-0.612998346241589110,\t-0.613037849684831550,\t-0.613077351595479600,\t\n-0.613116851973434020,\t-0.613156350818596210,\t-0.613195848130867580,\t-0.613235343910149330,\t-0.613274838156343090,\t-0.613314330869349390,\t-0.613353822049069960,\t-0.613393311695406230,\t\n-0.613432799808258820,\t-0.613472286387529490,\t-0.613511771433119410,\t-0.613551254944930240,\t-0.613590736922862590,\t-0.613630217366818110,\t-0.613669696276698430,\t-0.613709173652404180,\t\n-0.613748649493837010,\t-0.613788123800898200,\t-0.613827596573489060,\t-0.613867067811511240,\t-0.613906537514865460,\t-0.613946005683453370,\t-0.613985472317176480,\t-0.614024937415935670,\t\n-0.614064400979632550,\t-0.614103863008168330,\t-0.614143323501444520,\t-0.614182782459362750,\t-0.614222239881823670,\t-0.614261695768728910,\t-0.614301150119980320,\t-0.614340602935478540,\t\n-0.614380054215125200,\t-0.614419503958821830,\t-0.614458952166469950,\t-0.614498398837970310,\t-0.614537843973224750,\t-0.614577287572134920,\t-0.614616729634601460,\t-0.614656170160526210,\t\n-0.614695609149810580,\t-0.614735046602355890,\t-0.614774482518063990,\t-0.614813916896835400,\t-0.614853349738572090,\t-0.614892781043175800,\t-0.614932210810547160,\t-0.614971639040588050,\t\n-0.615011065733199750,\t-0.615050490888283900,\t-0.615089914505742020,\t-0.615129336585475080,\t-0.615168757127385170,\t-0.615208176131373020,\t-0.615247593597340490,\t-0.615287009525188890,\t\n-0.615326423914819730,\t-0.615365836766134990,\t-0.615405248079035180,\t-0.615444657853422280,\t-0.615484066089198150,\t-0.615523472786263400,\t-0.615562877944520030,\t-0.615602281563869540,\t\n-0.615641683644213230,\t-0.615681084185453090,\t-0.615720483187489950,\t-0.615759880650225470,\t-0.615799276573561820,\t-0.615838670957399530,\t-0.615878063801640560,\t-0.615917455106186450,\t\n-0.615956844870938940,\t-0.615996233095799100,\t-0.616035619780668680,\t-0.616075004925449530,\t-0.616114388530042520,\t-0.616153770594349500,\t-0.616193151118272110,\t-0.616232530101711750,\t\n-0.616271907544570510,\t-0.616311283446749130,\t-0.616350657808149570,\t-0.616390030628673700,\t-0.616429401908222370,\t-0.616468771646697560,\t-0.616508139844000770,\t-0.616547506500033650,\t\n-0.616586871614698160,\t-0.616626235187895170,\t-0.616665597219526520,\t-0.616704957709494180,\t-0.616744316657699240,\t-0.616783674064043440,\t-0.616823029928428410,\t-0.616862384250756230,\t\n-0.616901737030927650,\t-0.616941088268844750,\t-0.616980437964409600,\t-0.617019786117522840,\t-0.617059132728086770,\t-0.617098477796002800,\t-0.617137821321172560,\t-0.617177163303498140,\t\n-0.617216503742880510,\t-0.617255842639221620,\t-0.617295179992423560,\t-0.617334515802387070,\t-0.617373850069014350,\t-0.617413182792206920,\t-0.617452513971866620,\t-0.617491843607895330,\t\n-0.617531171700194110,\t-0.617570498248665390,\t-0.617609823253210010,\t-0.617649146713730060,\t-0.617688468630127270,\t-0.617727789002303300,\t-0.617767107830160090,\t-0.617806425113598960,\t\n-0.617845740852521640,\t-0.617885055046830330,\t-0.617924367696426110,\t-0.617963678801210840,\t-0.618002988361086470,\t-0.618042296375954650,\t-0.618081602845717340,\t-0.618120907770275730,\t\n-0.618160211149531900,\t-0.618199512983387820,\t-0.618238813271744570,\t-0.618278112014504440,\t-0.618317409211568860,\t-0.618356704862840220,\t-0.618395998968219400,\t-0.618435291527608680,\t\n-0.618474582540910030,\t-0.618513872008024550,\t-0.618553159928854400,\t-0.618592446303301350,\t-0.618631731131267130,\t-0.618671014412654040,\t-0.618710296147362950,\t-0.618749576335296260,\t\n-0.618788854976355830,\t-0.618828132070443070,\t-0.618867407617459840,\t-0.618906681617308110,\t-0.618945954069889730,\t-0.618985224975106770,\t-0.619024494332860440,\t-0.619063762143052920,\t\n-0.619103028405586290,\t-0.619142293120361730,\t-0.619181556287281440,\t-0.619220817906247280,\t-0.619260077977161430,\t-0.619299336499924970,\t-0.619338593474440200,\t-0.619377848900609320,\t\n-0.619417102778333510,\t-0.619456355107514840,\t-0.619495605888055300,\t-0.619534855119856840,\t-0.619574102802821550,\t-0.619613348936850610,\t-0.619652593521846320,\t-0.619691836557710870,\t\n-0.619731078044345570,\t-0.619770317981652500,\t-0.619809556369533610,\t-0.619848793207890880,\t-0.619888028496626500,\t-0.619927262235641650,\t-0.619966494424839090,\t-0.620005725064119880,\t\n-0.620044954153386450,\t-0.620084181692540540,\t-0.620123407681484220,\t-0.620162632120119680,\t-0.620201855008348240,\t-0.620241076346072170,\t-0.620280296133193800,\t-0.620319514369614300,\t\n-0.620358731055235980,\t-0.620397946189960800,\t-0.620437159773690850,\t-0.620476371806328310,\t-0.620515582287774480,\t-0.620554791217931780,\t-0.620593998596702390,\t-0.620633204423987620,\t\n-0.620672408699689870,\t-0.620711611423711120,\t-0.620750812595953660,\t-0.620790012216318800,\t-0.620829210284708940,\t-0.620868406801026400,\t-0.620907601765172570,\t-0.620946795177049650,\t\n-0.620985987036559720,\t-0.621025177343604850,\t-0.621064366098087460,\t-0.621103553299908740,\t-0.621142738948971100,\t-0.621181923045176940,\t-0.621221105588427690,\t-0.621260286578625640,\t\n-0.621299466015672990,\t-0.621338643899471580,\t-0.621377820229923940,\t-0.621416995006931370,\t-0.621456168230396620,\t-0.621495339900221210,\t-0.621534510016307330,\t-0.621573678578557280,\t\n-0.621612845586873020,\t-0.621652011041156860,\t-0.621691174941310430,\t-0.621730337287236150,\t-0.621769498078836300,\t-0.621808657316012310,\t-0.621847814998666700,\t-0.621886971126701550,\t\n-0.621926125700019040,\t-0.621965278718521470,\t-0.622004430182110380,\t-0.622043580090688280,\t-0.622082728444157460,\t-0.622121875242419580,\t-0.622161020485377030,\t-0.622200164172931780,\t\n-0.622239306304986580,\t-0.622278446881442740,\t-0.622317585902202760,\t-0.622356723367169300,\t-0.622395859276243520,\t-0.622434993629328190,\t-0.622474126426325270,\t-0.622513257667137170,\t\n-0.622552387351666180,\t-0.622591515479813840,\t-0.622630642051482770,\t-0.622669767066575510,\t-0.622708890524993340,\t-0.622748012426639130,\t-0.622787132771414730,\t-0.622826251559222550,\t\n-0.622865368789965120,\t-0.622904484463543850,\t-0.622943598579861370,\t-0.622982711138820310,\t-0.623021822140322090,\t-0.623060931584269340,\t-0.623100039470564250,\t-0.623139145799109340,\t\n-0.623178250569806360,\t-0.623217353782557600,\t-0.623256455437265930,\t-0.623295555533832760,\t-0.623334654072160600,\t-0.623373751052151870,\t-0.623412846473708760,\t-0.623451940336733900,\t\n-0.623491032641128820,\t-0.623530123386796140,\t-0.623569212573638510,\t-0.623608300201557550,\t-0.623647386270455790,\t-0.623686470780235540,\t-0.623725553730799190,\t-0.623764635122049270,\t\n-0.623803714953887420,\t-0.623842793226216610,\t-0.623881869938938460,\t-0.623920945091955610,\t-0.623960018685170480,\t-0.623999090718485250,\t-0.624038161191802660,\t-0.624077230105024360,\t\n-0.624116297458052970,\t-0.624155363250791130,\t-0.624194427483140580,\t-0.624233490155003960,\t-0.624272551266283560,\t-0.624311610816881800,\t-0.624350668806701430,\t-0.624389725235643960,\t\n-0.624428780103612250,\t-0.624467833410508820,\t-0.624506885156235540,\t-0.624545935340695020,\t-0.624584983963789700,\t-0.624624031025422300,\t-0.624663076525494350,\t-0.624702120463908830,\t\n-0.624741162840568350,\t-0.624780203655374570,\t-0.624819242908230320,\t-0.624858280599037920,\t-0.624897316727699770,\t-0.624936351294118730,\t-0.624975384298196550,\t-0.625014415739835740,\t\n-0.625053445618939390,\t-0.625092473935409010,\t-0.625131500689147470,\t-0.625170525880057170,\t-0.625209549508040530,\t-0.625248571573000400,\t-0.625287592074838420,\t-0.625326611013457550,\t\n-0.625365628388760530,\t-0.625404644200649010,\t-0.625443658449025830,\t-0.625482671133793630,\t-0.625521682254855050,\t-0.625560691812111940,\t-0.625599699805467040,\t-0.625638706234823210,\t\n-0.625677711100082410,\t-0.625716714401147180,\t-0.625755716137920250,\t-0.625794716310304030,\t-0.625833714918201390,\t-0.625872711961514060,\t-0.625911707440144900,\t-0.625950701353996890,\t\n-0.625989693702971860,\t-0.626028684486972460,\t-0.626067673705901440,\t-0.626106661359661200,\t-0.626145647448154600,\t-0.626184631971283600,\t-0.626223614928951290,\t-0.626262596321059740,\t\n-0.626301576147511590,\t-0.626340554408209570,\t-0.626379531103056110,\t-0.626418506231954160,\t-0.626457479794805590,\t-0.626496451791513360,\t-0.626535422221980330,\t-0.626574391086108460,\t\n-0.626613358383800500,\t-0.626652324114959190,\t-0.626691288279487170,\t-0.626730250877287180,\t-0.626769211908261180,\t-0.626808171372312260,\t-0.626847129269343160,\t-0.626886085599255960,\t\n-0.626925040361953510,\t-0.626963993557338450,\t-0.627002945185313740,\t-0.627041895245781360,\t-0.627080843738644260,\t-0.627119790663805300,\t-0.627158736021166560,\t-0.627197679810631010,\t\n-0.627236622032101290,\t-0.627275562685480010,\t-0.627314501770670050,\t-0.627353439287573590,\t-0.627392375236093590,\t-0.627431309616132920,\t-0.627470242427593640,\t-0.627509173670378730,\t\n-0.627548103344390930,\t-0.627587031449532870,\t-0.627625957985707530,\t-0.627664882952816970,\t-0.627703806350764170,\t-0.627742728179452310,\t-0.627781648438783150,\t-0.627820567128659970,\t\n-0.627859484248985300,\t-0.627898399799662330,\t-0.627937313780593030,\t-0.627976226191680360,\t-0.628015137032827520,\t-0.628054046303936460,\t-0.628092954004910390,\t-0.628131860135651810,\t\n-0.628170764696063590,\t-0.628209667686048910,\t-0.628248569105509640,\t-0.628287468954348950,\t-0.628326367232469930,\t-0.628365263939774650,\t-0.628404159076166200,\t-0.628443052641547430,\t\n-0.628481944635820860,\t-0.628520835058889890,\t-0.628559723910656510,\t-0.628598611191024110,\t-0.628637496899894900,\t-0.628676381037171940,\t-0.628715263602757980,\t-0.628754144596555880,\t\n-0.628793024018468700,\t-0.628831901868398770,\t-0.628870778146248920,\t-0.628909652851922570,\t-0.628948525985321690,\t-0.628987397546349580,\t-0.629026267534908870,\t-0.629065135950902520,\t\n-0.629104002794233730,\t-0.629142868064804570,\t-0.629181731762518240,\t-0.629220593887277910,\t-0.629259454438985680,\t-0.629298313417544940,\t-0.629337170822858340,\t-0.629376026654829170,\t\n-0.629414880913359620,\t-0.629453733598352770,\t-0.629492584709712030,\t-0.629531434247339480,\t-0.629570282211138310,\t-0.629609128601011480,\t-0.629647973416861740,\t-0.629686816658592500,\t\n-0.629725658326105830,\t-0.629764498419305040,\t-0.629803336938093320,\t-0.629842173882372960,\t-0.629881009252047150,\t-0.629919843047018760,\t-0.629958675267190850,\t-0.629997505912466500,\t\n-0.630036334982748140,\t-0.630075162477938930,\t-0.630113988397942080,\t-0.630152812742660000,\t-0.630191635511995860,\t-0.630230456705852540,\t-0.630269276324133540,\t-0.630308094366740960,\t\n-0.630346910833578190,\t-0.630385725724548430,\t-0.630424539039553980,\t-0.630463350778498240,\t-0.630502160941284200,\t-0.630540969527814580,\t-0.630579776537993020,\t-0.630618581971721600,\t\n-0.630657385828903850,\t-0.630696188109442830,\t-0.630734988813241080,\t-0.630773787940201780,\t-0.630812585490228120,\t-0.630851381463222950,\t-0.630890175859089570,\t-0.630928968677730520,\t\n-0.630967759919049410,\t-0.631006549582948550,\t-0.631045337669331240,\t-0.631084124178100670,\t-0.631122909109159690,\t-0.631161692462411830,\t-0.631200474237759380,\t-0.631239254435105760,\t\n-0.631278033054354370,\t-0.631316810095407630,\t-0.631355585558168730,\t-0.631394359442540850,\t-0.631433131748427190,\t-0.631471902475731040,\t-0.631510671624354700,\t-0.631549439194201700,\t\n-0.631588205185175440,\t-0.631626969597178340,\t-0.631665732430113810,\t-0.631704493683885040,\t-0.631743253358395320,\t-0.631782011453547070,\t-0.631820767969243800,\t-0.631859522905389050,\t\n-0.631898276261885110,\t-0.631937028038635380,\t-0.631975778235543180,\t-0.632014526852511470,\t-0.632053273889443880,\t-0.632092019346242710,\t-0.632130763222811480,\t-0.632169505519053710,\t\n-0.632208246234871820,\t-0.632246985370169320,\t-0.632285722924849300,\t-0.632324458898815060,\t-0.632363193291969990,\t-0.632401926104216530,\t-0.632440657335458620,\t-0.632479386985598800,\t\n-0.632518115054540480,\t-0.632556841542186830,\t-0.632595566448441170,\t-0.632634289773206790,\t-0.632673011516386440,\t-0.632711731677883530,\t-0.632750450257601680,\t-0.632789167255443320,\t\n-0.632827882671312070,\t-0.632866596505111120,\t-0.632905308756743670,\t-0.632944019426113340,\t-0.632982728513122540,\t-0.633021436017674910,\t-0.633060141939674080,\t-0.633098846279022460,\t\n-0.633137549035623800,\t-0.633176250209381290,\t-0.633214949800198550,\t-0.633253647807977990,\t-0.633292344232623260,\t-0.633331039074038090,\t-0.633369732332125010,\t-0.633408424006787540,\t\n-0.633447114097929090,\t-0.633485802605452840,\t-0.633524489529262320,\t-0.633563174869260390,\t-0.633601858625350460,\t-0.633640540797436150,\t-0.633679221385420210,\t-0.633717900389206170,\t\n-0.633756577808697430,\t-0.633795253643797300,\t-0.633833927894409290,\t-0.633872600560436150,\t-0.633911271641781400,\t-0.633949941138349020,\t-0.633988609050041290,\t-0.634027275376762070,\t\n-0.634065940118414660,\t-0.634104603274902810,\t-0.634143264846129040,\t-0.634181924831997090,\t-0.634220583232410710,\t-0.634259240047272520,\t-0.634297895276486280,\t-0.634336548919955280,\t\n-0.634375200977582930,\t-0.634413851449272760,\t-0.634452500334927840,\t-0.634491147634451580,\t-0.634529793347747730,\t-0.634568437474719140,\t-0.634607080015269440,\t-0.634645720969301940,\t\n-0.634684360336720270,\t-0.634722998117427940,\t-0.634761634311327820,\t-0.634800268918323970,\t-0.634838901938319160,\t-0.634877533371217000,\t-0.634916163216921010,\t-0.634954791475334620,\t\n-0.634993418146361680,\t-0.635032043229904810,\t-0.635070666725867760,\t-0.635109288634154500,\t-0.635147908954667550,\t-0.635186527687310990,\t-0.635225144831988000,\t-0.635263760388602110,\t\n-0.635302374357057160,\t-0.635340986737256030,\t-0.635379597529102450,\t-0.635418206732500050,\t-0.635456814347351910,\t-0.635495420373561770,\t-0.635534024811033050,\t-0.635572627659669600,\t\n-0.635611228919374160,\t-0.635649828590050700,\t-0.635688426671603080,\t-0.635727023163934040,\t-0.635765618066947420,\t-0.635804211380546660,\t-0.635842803104635480,\t-0.635881393239117630,\t\n-0.635919981783895860,\t-0.635958568738874240,\t-0.635997154103956520,\t-0.636035737879045550,\t-0.636074320064045300,\t-0.636112900658859170,\t-0.636151479663390810,\t-0.636190057077544060,\t\n-0.636228632901221890,\t-0.636267207134328160,\t-0.636305779776766720,\t-0.636344350828440430,\t-0.636382920289253360,\t-0.636421488159108930,\t-0.636460054437911090,\t-0.636498619125562830,\t\n-0.636537182221967980,\t-0.636575743727030520,\t-0.636614303640653410,\t-0.636652861962740510,\t-0.636691418693195450,\t-0.636729973831921870,\t-0.636768527378823720,\t-0.636807079333803870,\t\n-0.636845629696766280,\t-0.636884178467615030,\t-0.636922725646252960,\t-0.636961271232584060,\t-0.636999815226511950,\t-0.637038357627940370,\t-0.637076898436773290,\t-0.637115437652913450,\t\n-0.637153975276265490,\t-0.637192511306732270,\t-0.637231045744217740,\t-0.637269578588625540,\t-0.637308109839859420,\t-0.637346639497823330,\t-0.637385167562420360,\t-0.637423694033554480,\t\n-0.637462218911129750,\t-0.637500742195049040,\t-0.637539263885216530,\t-0.637577783981535860,\t-0.637616302483910660,\t-0.637654819392245110,\t-0.637693334706442180,\t-0.637731848426405850,\t\n-0.637770360552040280,\t-0.637808871083248460,\t-0.637847380019934460,\t-0.637885887362002020,\t-0.637924393109355230,\t-0.637962897261897030,\t-0.638001399819531630,\t-0.638039900782163110,\t\n-0.638078400149694520,\t-0.638116897922029860,\t-0.638155394099072960,\t-0.638193888680727570,\t-0.638232381666897890,\t-0.638270873057486750,\t-0.638309362852398590,\t-0.638347851051537240,\t\n-0.638386337654806010,\t-0.638424822662108980,\t-0.638463306073349780,\t-0.638501787888432370,\t-0.638540268107260830,\t-0.638578746729738240,\t-0.638617223755768790,\t-0.638655699185256660,\t\n-0.638694173018104940,\t-0.638732645254217800,\t-0.638771115893499000,\t-0.638809584935852710,\t-0.638848052381182250,\t-0.638886518229391580,\t-0.638924982480384870,\t-0.638963445134065560,\t\n-0.639001906190337480,\t-0.639040365649104710,\t-0.639078823510271010,\t-0.639117279773740550,\t-0.639155734439416650,\t-0.639194187507203360,\t-0.639232638977004890,\t-0.639271088848724520,\t\n-0.639309537122266460,\t-0.639347983797534550,\t-0.639386428874432640,\t-0.639424872352865050,\t-0.639463314232734840,\t-0.639501754513946750,\t-0.639540193196403980,\t-0.639578630280010610,\t\n-0.639617065764670810,\t-0.639655499650288230,\t-0.639693931936767270,\t-0.639732362624011230,\t-0.639770791711924190,\t-0.639809219200410560,\t-0.639847645089373530,\t-0.639886069378717390,\t\n-0.639924492068346010,\t-0.639962913158163450,\t-0.640001332648073910,\t-0.640039750537980790,\t-0.640078166827788180,\t-0.640116581517400580,\t-0.640154994606721210,\t-0.640193406095654230,\t\n-0.640231815984103840,\t-0.640270224271974220,\t-0.640308630959168680,\t-0.640347036045591620,\t-0.640385439531147240,\t-0.640423841415738940,\t-0.640462241699271130,\t-0.640500640381647560,\t\n-0.640539037462772520,\t-0.640577432942550100,\t-0.640615826820883920,\t-0.640654219097678060,\t-0.640692609772837040,\t-0.640730998846264050,\t-0.640769386317863730,\t-0.640807772187539810,\t\n-0.640846156455196490,\t-0.640884539120738170,\t-0.640922920184068160,\t-0.640961299645090850,\t-0.640999677503710560,\t-0.641038053759830810,\t-0.641076428413355880,\t-0.641114801464189870,\t\n-0.641153172912237170,\t-0.641191542757401310,\t-0.641229910999586480,\t-0.641268277638697310,\t-0.641306642674637000,\t-0.641345006107310160,\t-0.641383367936620870,\t-0.641421728162473000,\t\n-0.641460086784771290,\t-0.641498443803418920,\t-0.641536799218320520,\t-0.641575153029380400,\t-0.641613505236502070,\t-0.641651855839590060,\t-0.641690204838548330,\t-0.641728552233281070,\t\n-0.641766898023692800,\t-0.641805242209686930,\t-0.641843584791168320,\t-0.641881925768040370,\t-0.641920265140207720,\t-0.641958602907574340,\t-0.641996939070044400,\t-0.642035273627522440,\t\n-0.642073606579912080,\t-0.642111937927117630,\t-0.642150267669043600,\t-0.642188595805593730,\t-0.642226922336672220,\t-0.642265247262183480,\t-0.642303570582031580,\t-0.642341892296121150,\t\n-0.642380212404355610,\t-0.642418530906639470,\t-0.642456847802877480,\t-0.642495163092972940,\t-0.642533476776830590,\t-0.642571788854354400,\t-0.642610099325449210,\t-0.642648408190018340,\t\n-0.642686715447966520,\t-0.642725021099198160,\t-0.642763325143617000,\t-0.642801627581127580,\t-0.642839928411633950,\t-0.642878227635040540,\t-0.642916525251251980,\t-0.642954821260171670,\t\n-0.642993115661704360,\t-0.643031408455754570,\t-0.643069699642225930,\t-0.643107989221023080,\t-0.643146277192050200,\t-0.643184563555211700,\t-0.643222848310411990,\t-0.643261131457554920,\t\n-0.643299412996545360,\t-0.643337692927286930,\t-0.643375971249684260,\t-0.643414247963641660,\t-0.643452523069063420,\t-0.643490796565854280,\t-0.643529068453917770,\t-0.643567338733158520,\t\n-0.643605607403481380,\t-0.643643874464789880,\t-0.643682139916988530,\t-0.643720403759981960,\t-0.643758665993674370,\t-0.643796926617970500,\t-0.643835185632773870,\t-0.643873443037989320,\t\n-0.643911698833521510,\t-0.643949953019274160,\t-0.643988205595151910,\t-0.644026456561059060,\t-0.644064705916900460,\t-0.644102953662579750,\t-0.644141199798001660,\t-0.644179444323070950,\t\n-0.644217687237691240,\t-0.644255928541767390,\t-0.644294168235203690,\t-0.644332406317904450,\t-0.644370642789774630,\t-0.644408877650717860,\t-0.644447110900638890,\t-0.644485342539442560,\t\n-0.644523572567032410,\t-0.644561800983313390,\t-0.644600027788189920,\t-0.644638252981566300,\t-0.644676476563347370,\t-0.644714698533436990,\t-0.644752918891739800,\t-0.644791137638160650,\t\n-0.644829354772603390,\t-0.644867570294972660,\t-0.644905784205173080,\t-0.644943996503109300,\t-0.644982207188685260,\t-0.645020416261805620,\t-0.645058623722375320,\t-0.645096829570298120,\t\n-0.645135033805478870,\t-0.645173236427821980,\t-0.645211437437232080,\t-0.645249636833613920,\t-0.645287834616871230,\t-0.645326030786909090,\t-0.645364225343632140,\t-0.645402418286944220,\t\n-0.645440609616750430,\t-0.645478799332954930,\t-0.645516987435462490,\t-0.645555173924178050,\t-0.645593358799005150,\t-0.645631542059849290,\t-0.645669723706614240,\t-0.645707903739204840,\t\n-0.645746082157525710,\t-0.645784258961481390,\t-0.645822434150976730,\t-0.645860607725915690,\t-0.645898779686203020,\t-0.645936950031743900,\t-0.645975118762441960,\t-0.646013285878202170,\t\n-0.646051451378929280,\t-0.646089615264527680,\t-0.646127777534902470,\t-0.646165938189957380,\t-0.646204097229597600,\t-0.646242254653727750,\t-0.646280410462252040,\t-0.646318564655075200,\t\n-0.646356717232101970,\t-0.646394868193237330,\t-0.646433017538385220,\t-0.646471165267450520,\t-0.646509311380338180,\t-0.646547455876952280,\t-0.646585598757197790,\t-0.646623740020979220,\t\n-0.646661879668201320,\t-0.646700017698769170,\t-0.646738154112586510,\t-0.646776288909558520,\t-0.646814422089590060,\t-0.646852553652585320,\t-0.646890683598449150,\t-0.646928811927086290,\t\n-0.646966938638401380,\t-0.647005063732299380,\t-0.647043187208684480,\t-0.647081309067461640,\t-0.647119429308535830,\t-0.647157547931811130,\t-0.647195664937192490,\t-0.647233780324584670,\t\n-0.647271894093892850,\t-0.647310006245020890,\t-0.647348116777873960,\t-0.647386225692357040,\t-0.647424332988374210,\t-0.647462438665830530,\t-0.647500542724630870,\t-0.647538645164679740,\t\n-0.647576745985882330,\t-0.647614845188142720,\t-0.647652942771366090,\t-0.647691038735457410,\t-0.647729133080320760,\t-0.647767225805861320,\t-0.647805316911983730,\t-0.647843406398592950,\t\n-0.647881494265593940,\t-0.647919580512890780,\t-0.647957665140389110,\t-0.647995748147992880,\t-0.648033829535607400,\t-0.648071909303137180,\t-0.648109987450487310,\t-0.648148063977562750,\t\n-0.648186138884267680,\t-0.648224212170507300,\t-0.648262283836186780,\t-0.648300353881210100,\t-0.648338422305482550,\t-0.648376489108908990,\t-0.648414554291394270,\t-0.648452617852843470,\t\n-0.648490679793160660,\t-0.648528740112251260,\t-0.648566798810020330,\t-0.648604855886372070,\t-0.648642911341211660,\t-0.648680965174443960,\t-0.648719017385974260,\t-0.648757067975706650,\t\n-0.648795116943546300,\t-0.648833164289398520,\t-0.648871210013167500,\t-0.648909254114758530,\t-0.648947296594076350,\t-0.648985337451025930,\t-0.649023376685512470,\t-0.649061414297440350,\t\n-0.649099450286714560,\t-0.649137484653240620,\t-0.649175517396922470,\t-0.649213548517665660,\t-0.649251578015374920,\t-0.649289605889955210,\t-0.649327632141311840,\t-0.649365656769349100,\t\n-0.649403679773972180,\t-0.649441701155086480,\t-0.649479720912596090,\t-0.649517739046406420,\t-0.649555755556422420,\t-0.649593770442549290,\t-0.649631783704691550,\t-0.649669795342754150,\t\n-0.649707805356642740,\t-0.649745813746261500,\t-0.649783820511515620,\t-0.649821825652310280,\t-0.649859829168550340,\t-0.649897831060141210,\t-0.649935831326987070,\t-0.649973829968993440,\t\n-0.650011826986065520,\t-0.650049822378107710,\t-0.650087816145025420,\t-0.650125808286723510,\t-0.650163798803107040,\t-0.650201787694081430,\t-0.650239774959551100,\t-0.650277760599421660,\t\n-0.650315744613597420,\t-0.650353727001983790,\t-0.650391707764485850,\t-0.650429686901008770,\t-0.650467664411457650,\t-0.650505640295737100,\t-0.650543614553752430,\t-0.650581587185409150,\t\n-0.650619558190611460,\t-0.650657527569264870,\t-0.650695495321274580,\t-0.650733461446545420,\t-0.650771425944983050,\t-0.650809388816491640,\t-0.650847350060976940,\t-0.650885309678344020,\t\n-0.650923267668497620,\t-0.650961224031343040,\t-0.650999178766785370,\t-0.651037131874730110,\t-0.651075083355081570,\t-0.651113033207745500,\t-0.651150981432627060,\t-0.651188928029630910,\t\n-0.651226872998662330,\t-0.651264816339626630,\t-0.651302758052428880,\t-0.651340698136974590,\t-0.651378636593168300,\t-0.651416573420915300,\t-0.651454508620121220,\t-0.651492442190690580,\t\n-0.651530374132528790,\t-0.651568304445541040,\t-0.651606233129632620,\t-0.651644160184708940,\t-0.651682085610674420,\t-0.651720009407434800,\t-0.651757931574895370,\t-0.651795852112960870,\t\n-0.651833771021536720,\t-0.651871688300528220,\t-0.651909603949840650,\t-0.651947517969378890,\t-0.651985430359048320,\t-0.652023341118754480,\t-0.652061250248402000,\t-0.652099157747896290,\t\n-0.652137063617142740,\t-0.652174967856046560,\t-0.652212870464513260,\t-0.652250771442447470,\t-0.652288670789754720,\t-0.652326568506340630,\t-0.652364464592109840,\t-0.652402359046967860,\t\n-0.652440251870819890,\t-0.652478143063571440,\t-0.652516032625127920,\t-0.652553920555393960,\t-0.652591806854275540,\t-0.652629691521677270,\t-0.652667574557504790,\t-0.652705455961663290,\t\n-0.652743335734058180,\t-0.652781213874595200,\t-0.652819090383178760,\t-0.652856965259714480,\t-0.652894838504108230,\t-0.652932710116264640,\t-0.652970580096089100,\t-0.653008448443487270,\t\n-0.653046315158364200,\t-0.653084180240625760,\t-0.653122043690176460,\t-0.653159905506922040,\t-0.653197765690768260,\t-0.653235624241619740,\t-0.653273481159382110,\t-0.653311336443960780,\t\n-0.653349190095261490,\t-0.653387042113188880,\t-0.653424892497648570,\t-0.653462741248546530,\t-0.653500588365787170,\t-0.653538433849276350,\t-0.653576277698919460,\t-0.653614119914621930,\t\n-0.653651960496289370,\t-0.653689799443826660,\t-0.653727636757139410,\t-0.653765472436133370,\t-0.653803306480713280,\t-0.653841138890784990,\t-0.653878969666253810,\t-0.653916798807025250,\t\n-0.653954626313005050,\t-0.653992452184097850,\t-0.654030276420209940,\t-0.654068099021245960,\t-0.654105919987111760,\t-0.654143739317712750,\t-0.654181557012954440,\t-0.654219373072742580,\t\n-0.654257187496981810,\t-0.654295000285578190,\t-0.654332811438437360,\t-0.654370620955464170,\t-0.654408428836564470,\t-0.654446235081643680,\t-0.654484039690607310,\t-0.654521842663361110,\t\n-0.654559643999810040,\t-0.654597443699859840,\t-0.654635241763416360,\t-0.654673038190384470,\t-0.654710832980670010,\t-0.654748626134178390,\t-0.654786417650815240,\t-0.654824207530486310,\t\n-0.654861995773096670,\t-0.654899782378552290,\t-0.654937567346758120,\t-0.654975350677620030,\t-0.655013132371043530,\t-0.655050912426934250,\t-0.655088690845198050,\t-0.655126467625739780,\t\n-0.655164242768465300,\t-0.655202016273280560,\t-0.655239788140090430,\t-0.655277558368800860,\t-0.655315326959317380,\t-0.655353093911545610,\t-0.655390859225391420,\t-0.655428622900759650,\t\n-0.655466384937556490,\t-0.655504145335687570,\t-0.655541904095058080,\t-0.655579661215573760,\t-0.655617416697140240,\t-0.655655170539663600,\t-0.655692922743048690,\t-0.655730673307201360,\t\n-0.655768422232027800,\t-0.655806169517432870,\t-0.655843915163322410,\t-0.655881659169602170,\t-0.655919401536177890,\t-0.655957142262955430,\t-0.655994881349839630,\t-0.656032618796736800,\t\n-0.656070354603552670,\t-0.656108088770192330,\t-0.656145821296561740,\t-0.656183552182566630,\t-0.656221281428112650,\t-0.656259009033105740,\t-0.656296734997451110,\t-0.656334459321054830,\t\n-0.656372182003822190,\t-0.656409903045659050,\t-0.656447622446471150,\t-0.656485340206164110,\t-0.656523056324644140,\t-0.656560770801816180,\t-0.656598483637586330,\t-0.656636194831860530,\t\n-0.656673904384543980,\t-0.656711612295542650,\t-0.656749318564762260,\t-0.656787023192108580,\t-0.656824726177487660,\t-0.656862427520804590,\t-0.656900127221965560,\t-0.656937825280876410,\t\n-0.656975521697442440,\t-0.657013216471569630,\t-0.657050909603163810,\t-0.657088601092131070,\t-0.657126290938376490,\t-0.657163979141806130,\t-0.657201665702326190,\t-0.657239350619841730,\t\n-0.657277033894258840,\t-0.657314715525483480,\t-0.657352395513421280,\t-0.657390073857978430,\t-0.657427750559060000,\t-0.657465425616572290,\t-0.657503099030421370,\t-0.657540770800512210,\t\n-0.657578440926751330,\t-0.657616109409044140,\t-0.657653776247296820,\t-0.657691441441415340,\t-0.657729104991304990,\t-0.657766766896871750,\t-0.657804427158022010,\t-0.657842085774660860,\t\n-0.657879742746694470,\t-0.657917398074028830,\t-0.657955051756569990,\t-0.657992703794223030,\t-0.658030354186894480,\t-0.658068002934490300,\t-0.658105650036915790,\t-0.658143295494077240,\t\n-0.658180939305880290,\t-0.658218581472231110,\t-0.658256221993035790,\t-0.658293860868199630,\t-0.658331498097628700,\t-0.658369133681229400,\t-0.658406767618907040,\t-0.658444399910567690,\t\n-0.658482030556117310,\t-0.658519659555461880,\t-0.658557286908507570,\t-0.658594912615159790,\t-0.658632536675325060,\t-0.658670159088908580,\t-0.658707779855816740,\t-0.658745398975955520,\t\n-0.658783016449230760,\t-0.658820632275548770,\t-0.658858246454814830,\t-0.658895858986935370,\t-0.658933469871816560,\t-0.658971079109363700,\t-0.659008686699483200,\t-0.659046292642080920,\t\n-0.659083896937062930,\t-0.659121499584335520,\t-0.659159100583804110,\t-0.659196699935374890,\t-0.659234297638954250,\t-0.659271893694447500,\t-0.659309488101761040,\t-0.659347080860800960,\t\n-0.659384671971473440,\t-0.659422261433683880,\t-0.659459849247338690,\t-0.659497435412344180,\t-0.659535019928605750,\t-0.659572602796029810,\t-0.659610184014522320,\t-0.659647763583989350,\t\n-0.659685341504337440,\t-0.659722917775471760,\t-0.659760492397298730,\t-0.659798065369724850,\t-0.659835636692655440,\t-0.659873206365997000,\t-0.659910774389655510,\t-0.659948340763537140,\t\n-0.659985905487548210,\t-0.660023468561594110,\t-0.660061029985581470,\t-0.660098589759416490,\t-0.660136147883004790,\t-0.660173704356252670,\t-0.660211259179066200,\t-0.660248812351352020,\t\n-0.660286363873015420,\t-0.660323913743963040,\t-0.660361461964101060,\t-0.660399008533335220,\t-0.660436553451571710,\t-0.660474096718716930,\t-0.660511638334676850,\t-0.660549178299358110,\t\n-0.660586716612665990,\t-0.660624253274507130,\t-0.660661788284787940,\t-0.660699321643413940,\t-0.660736853350291640,\t-0.660774383405327240,\t-0.660811911808426800,\t-0.660849438559496960,\t\n-0.660886963658443240,\t-0.660924487105172380,\t-0.660962008899590000,\t-0.660999529041602640,\t-0.661037047531116360,\t-0.661074564368037580,\t-0.661112079552272580,\t-0.661149593083727120,\t\n-0.661187104962307700,\t-0.661224615187920860,\t-0.661262123760472110,\t-0.661299630679868080,\t-0.661337135946014950,\t-0.661374639558818920,\t-0.661412141518186720,\t-0.661449641824023770,\t\n-0.661487140476236800,\t-0.661524637474732220,\t-0.661562132819415780,\t-0.661599626510193990,\t-0.661637118546973160,\t-0.661674608929659790,\t-0.661712097658159640,\t-0.661749584732379210,\t\n-0.661787070152225150,\t-0.661824553917603090,\t-0.661862036028419640,\t-0.661899516484581120,\t-0.661936995285993810,\t-0.661974472432564240,\t-0.662011947924198260,\t-0.662049421760802390,\t\n-0.662086893942283370,\t-0.662124364468546720,\t-0.662161833339499180,\t-0.662199300555046940,\t-0.662236766115096630,\t-0.662274230019554650,\t-0.662311692268326760,\t-0.662349152861319570,\t\n-0.662386611798439940,\t-0.662424069079593390,\t-0.662461524704686670,\t-0.662498978673626170,\t-0.662536430986318540,\t-0.662573881642669500,\t-0.662611330642585820,\t-0.662648777985974100,\t\n-0.662686223672740100,\t-0.662723667702790450,\t-0.662761110076031780,\t-0.662798550792370270,\t-0.662835989851712660,\t-0.662873427253964810,\t-0.662910862999033350,\t-0.662948297086825120,\t\n-0.662985729517245770,\t-0.663023160290202140,\t-0.663060589405600530,\t-0.663098016863347570,\t-0.663135442663349780,\t-0.663172866805513130,\t-0.663210289289744680,\t-0.663247710115950070,\t\n-0.663285129284036270,\t-0.663322546793909560,\t-0.663359962645476590,\t-0.663397376838643970,\t-0.663434789373317570,\t-0.663472200249404230,\t-0.663509609466810700,\t-0.663547017025442830,\t\n-0.663584422925207360,\t-0.663621827166010920,\t-0.663659229747759930,\t-0.663696630670361110,\t-0.663734029933720440,\t-0.663771427537744650,\t-0.663808823482340600,\t-0.663846217767414260,\t\n-0.663883610392872360,\t-0.663921001358621310,\t-0.663958390664568190,\t-0.663995778310618730,\t-0.664033164296679910,\t-0.664070548622658350,\t-0.664107931288460240,\t-0.664145312293992210,\t\n-0.664182691639160990,\t-0.664220069323873010,\t-0.664257445348035100,\t-0.664294819711553350,\t-0.664332192414334500,\t-0.664369563456285510,\t-0.664406932837312230,\t-0.664444300557321730,\t\n-0.664481666616220430,\t-0.664519031013914960,\t-0.664556393750312170,\t-0.664593754825318130,\t-0.664631114238839690,\t-0.664668471990783830,\t-0.664705828081056490,\t-0.664743182509564430,\t\n-0.664780535276214610,\t-0.664817886380913660,\t-0.664855235823567650,\t-0.664892583604083650,\t-0.664929929722368420,\t-0.664967274178328130,\t-0.665004616971869520,\t-0.665041958102899460,\t\n-0.665079297571324560,\t-0.665116635377051680,\t-0.665153971519986900,\t-0.665191306000037170,\t-0.665228638817109470,\t-0.665265969971109870,\t-0.665303299461945330,\t-0.665340627289522590,\t\n-0.665377953453748280,\t-0.665415277954529370,\t-0.665452600791772040,\t-0.665489921965383480,\t-0.665527241475269760,\t-0.665564559321337960,\t-0.665601875503494700,\t-0.665639190021646730,\t\n-0.665676502875701240,\t-0.665713814065564070,\t-0.665751123591142410,\t-0.665788431452343340,\t-0.665825737649072710,\t-0.665863042181237820,\t-0.665900345048745400,\t-0.665937646251501980,\t\n-0.665974945789414850,\t-0.666012243662389980,\t-0.666049539870334550,\t-0.666086834413155530,\t-0.666124127290759200,\t-0.666161418503052440,\t-0.666198708049942190,\t-0.666235995931335530,\t\n-0.666273282147138550,\t-0.666310566697258300,\t-0.666347849581601980,\t-0.666385130800075780,\t-0.666422410352586650,\t-0.666459688239041560,\t-0.666496964459347250,\t-0.666534239013410800,\t\n-0.666571511901138500,\t-0.666608783122437320,\t-0.666646052677214660,\t-0.666683320565376380,\t-0.666720586786829880,\t-0.666757851341481910,\t-0.666795114229239320,\t-0.666832375450009280,\t\n-0.666869635003698000,\t-0.666906892890212880,\t-0.666944149109460200,\t-0.666981403661347170,\t-0.667018656545780740,\t-0.667055907762667540,\t-0.667093157311914870,\t-0.667130405193429140,\t\n-0.667167651407117200,\t-0.667204895952886570,\t-0.667242138830643430,\t-0.667279380040294860,\t-0.667316619581747820,\t-0.667353857454909270,\t-0.667391093659686410,\t-0.667428328195985520,\t\n-0.667465561063713800,\t-0.667502792262778420,\t-0.667540021793085800,\t-0.667577249654543130,\t-0.667614475847057240,\t-0.667651700370535670,\t-0.667688923224884380,\t-0.667726144410010770,\t\n-0.667763363925822250,\t-0.667800581772224900,\t-0.667837797949126120,\t-0.667875012456432880,\t-0.667912225294052030,\t-0.667949436461890980,\t-0.667986645959856020,\t-0.668023853787854450,\t\n-0.668061059945793570,\t-0.668098264433579780,\t-0.668135467251120160,\t-0.668172668398322010,\t-0.668209867875092180,\t-0.668247065681337960,\t-0.668284261816965760,\t-0.668321456281882890,\t\n-0.668358649075996740,\t-0.668395840199213610,\t-0.668433029651440910,\t-0.668470217432585610,\t-0.668507403542555110,\t-0.668544587981255820,\t-0.668581770748595040,\t-0.668618951844480170,\t\n-0.668656131268817510,\t-0.668693309021514580,\t-0.668730485102478340,\t-0.668767659511615990,\t-0.668804832248834690,\t-0.668842003314041090,\t-0.668879172707142370,\t-0.668916340428046150,\t\n-0.668953506476658740,\t-0.668990670852887440,\t-0.669027833556639640,\t-0.669064994587822090,\t-0.669102153946342540,\t-0.669139311632107160,\t-0.669176467645023920,\t-0.669213621984999120,\t\n-0.669250774651940270,\t-0.669287925645754460,\t-0.669325074966348850,\t-0.669362222613630990,\t-0.669399368587507150,\t-0.669436512887884860,\t-0.669473655514671640,\t-0.669510796467774010,\t\n-0.669547935747099250,\t-0.669585073352554790,\t-0.669622209284047590,\t-0.669659343541485260,\t-0.669696476124774120,\t-0.669733607033821900,\t-0.669770736268536000,\t-0.669807863828822850,\t\n-0.669844989714590060,\t-0.669882113925744820,\t-0.669919236462194640,\t-0.669956357323845950,\t-0.669993476510606480,\t-0.670030594022383630,\t-0.670067709859083930,\t-0.670104824020614890,\t\n-0.670141936506883920,\t-0.670179047317798090,\t-0.670216156453264930,\t-0.670253263913191070,\t-0.670290369697484010,\t-0.670327473806051290,\t-0.670364576238799750,\t-0.670401676995636690,\t\n-0.670438776076469290,\t-0.670475873481205080,\t-0.670512969209751560,\t-0.670550063262015270,\t-0.670587155637903720,\t-0.670624246337324650,\t-0.670661335360184680,\t-0.670698422706391460,\t\n-0.670735508375852050,\t-0.670772592368474200,\t-0.670809674684164530,\t-0.670846755322830780,\t-0.670883834284380360,\t-0.670920911568720140,\t-0.670957987175757500,\t-0.670995061105399970,\t\n-0.671032133357554850,\t-0.671069203932129540,\t-0.671106272829031130,\t-0.671143340048166890,\t-0.671180405589444580,\t-0.671217469452771050,\t-0.671254531638053820,\t-0.671291592145200180,\t\n-0.671328650974117650,\t-0.671365708124713860,\t-0.671402763596895320,\t-0.671439817390570350,\t-0.671476869505645450,\t-0.671513919942028360,\t-0.671550968699626490,\t-0.671588015778347150,\t\n-0.671625061178098170,\t-0.671662104898786190,\t-0.671699146940318850,\t-0.671736187302604090,\t-0.671773225985548450,\t-0.671810262989059880,\t-0.671847298313045570,\t-0.671884331957413040,\t\n-0.671921363922069910,\t-0.671958394206923160,\t-0.671995422811880290,\t-0.672032449736849280,\t-0.672069474981736860,\t-0.672106498546450770,\t-0.672143520430898310,\t-0.672180540634987440,\t\n-0.672217559158624910,\t-0.672254576001718450,\t-0.672291591164175920,\t-0.672328604645904050,\t-0.672365616446810700,\t-0.672402626566803270,\t-0.672439635005789290,\t-0.672476641763676500,\t\n-0.672513646840371850,\t-0.672550650235783090,\t-0.672587651949818070,\t-0.672624651982383530,\t-0.672661650333387320,\t-0.672698647002736960,\t-0.672735641990340080,\t-0.672772635296104430,\t\n-0.672809626919936840,\t-0.672846616861745070,\t-0.672883605121437300,\t-0.672920591698920050,\t-0.672957576594101270,\t-0.672994559806888600,\t-0.673031541337189900,\t-0.673068521184912010,\t\n-0.673105499349962780,\t-0.673142475832250180,\t-0.673179450631681050,\t-0.673216423748163260,\t-0.673253395181604430,\t-0.673290364931912190,\t-0.673327332998994280,\t-0.673364299382757660,\t\n-0.673401264083110410,\t-0.673438227099960260,\t-0.673475188433214190,\t-0.673512148082780260,\t-0.673549106048565880,\t-0.673586062330478690,\t-0.673623016928426740,\t-0.673659969842316910,\t\n-0.673696921072057480,\t-0.673733870617555410,\t-0.673770818478718670,\t-0.673807764655454890,\t-0.673844709147671690,\t-0.673881651955277050,\t-0.673918593078177920,\t-0.673955532516282370,\t\n-0.673992470269498270,\t-0.674029406337732670,\t-0.674066340720893550,\t-0.674103273418888650,\t-0.674140204431625480,\t-0.674177133759012230,\t-0.674214061400955740,\t-0.674250987357364110,\t\n-0.674287911628145280,\t-0.674324834213206440,\t-0.674361755112455440,\t-0.674398674325800140,\t-0.674435591853148390,\t-0.674472507694407360,\t-0.674509421849485150,\t-0.674546334318289590,\t\n-0.674583245100727870,\t-0.674620154196708070,\t-0.674657061606137920,\t-0.674693967328925170,\t-0.674730871364977670,\t-0.674767773714202820,\t-0.674804674376508370,\t-0.674841573351802730,\t\n-0.674878470639992730,\t-0.674915366240986580,\t-0.674952260154692010,\t-0.674989152381016750,\t-0.675026042919869010,\t-0.675062931771155840,\t-0.675099818934785210,\t-0.675136704410665530,\t\n-0.675173588198703660,\t-0.675210470298807870,\t-0.675247350710885820,\t-0.675284229434845900,\t-0.675321106470594960,\t-0.675357981818041190,\t-0.675394855477092880,\t-0.675431727447657120,\t\n-0.675468597729641960,\t-0.675505466322955380,\t-0.675542333227505120,\t-0.675579198443199360,\t-0.675616061969945170,\t-0.675652923807650960,\t-0.675689783956224700,\t-0.675726642415573680,\t\n-0.675763499185606080,\t-0.675800354266229640,\t-0.675837207657352450,\t-0.675874059358882450,\t-0.675910909370727060,\t-0.675947757692794690,\t-0.675984604324992520,\t-0.676021449267228960,\t\n-0.676058292519411740,\t-0.676095134081448720,\t-0.676131973953248310,\t-0.676168812134717580,\t-0.676205648625764820,\t-0.676242483426298220,\t-0.676279316536225080,\t-0.676316147955453810,\t\n-0.676352977683892020,\t-0.676389805721447800,\t-0.676426632068029440,\t-0.676463456723544130,\t-0.676500279687900160,\t-0.676537100961005940,\t-0.676573920542768550,\t-0.676610738433096380,\t\n-0.676647554631897300,\t-0.676684369139079700,\t-0.676721181954550890,\t-0.676757993078219040,\t-0.676794802509992690,\t-0.676831610249778890,\t-0.676868416297486060,\t-0.676905220653022170,\t\n-0.676942023316295270,\t-0.676978824287213680,\t-0.677015623565684680,\t-0.677052421151616570,\t-0.677089217044917870,\t-0.677126011245495650,\t-0.677162803753258440,\t-0.677199594568114290,\t\n-0.677236383689971080,\t-0.677273171118737190,\t-0.677309956854320160,\t-0.677346740896628500,\t-0.677383523245569720,\t-0.677420303901052120,\t-0.677457082862983670,\t-0.677493860131272550,\t\n-0.677530635705827170,\t-0.677567409586554810,\t-0.677604181773364010,\t-0.677640952266163050,\t-0.677677721064859240,\t-0.677714488169361310,\t-0.677751253579577110,\t-0.677788017295414710,\t\n-0.677824779316782640,\t-0.677861539643588310,\t-0.677898298275740220,\t-0.677935055213146560,\t-0.677971810455714970,\t-0.678008564003353850,\t-0.678045315855971390,\t-0.678082066013475870,\t\n-0.678118814475774930,\t-0.678155561242776980,\t-0.678192306314390430,\t-0.678229049690522780,\t-0.678265791371082450,\t-0.678302531355977620,\t-0.678339269645116590,\t-0.678376006238407660,\t\n-0.678412741135758330,\t-0.678449474337077250,\t-0.678486205842272700,\t-0.678522935651252430,\t-0.678559663763924740,\t-0.678596390180197910,\t-0.678633114899980020,\t-0.678669837923179810,\t\n-0.678706559249704580,\t-0.678743278879463060,\t-0.678779996812363560,\t-0.678816713048313810,\t-0.678853427587222220,\t-0.678890140428997090,\t-0.678926851573546930,\t-0.678963561020779370,\t\n-0.679000268770602820,\t-0.679036974822926020,\t-0.679073679177656380,\t-0.679110381834702630,\t-0.679147082793972840,\t-0.679183782055375330,\t-0.679220479618818710,\t-0.679257175484210610,\t\n-0.679293869651459550,\t-0.679330562120474160,\t-0.679367252891161950,\t-0.679403941963431680,\t-0.679440629337191520,\t-0.679477315012349870,\t-0.679513998988815150,\t-0.679550681266495200,\t\n-0.679587361845298890,\t-0.679624040725133720,\t-0.679660717905908540,\t-0.679697393387531550,\t-0.679734067169911030,\t-0.679770739252955720,\t-0.679807409636573270,\t-0.679844078320672280,\t\n-0.679880745305161400,\t-0.679917410589948370,\t-0.679954074174941690,\t-0.679990736060049890,\t-0.680027396245181270,\t-0.680064054730244560,\t-0.680100711515147280,\t-0.680137366599798290,\t\n-0.680174019984106090,\t-0.680210671667978660,\t-0.680247321651324510,\t-0.680283969934051940,\t-0.680320616516069900,\t-0.680357261397285920,\t-0.680393904577608840,\t-0.680430546056947310,\t\n-0.680467185835209150,\t-0.680503823912302910,\t-0.680540460288137190,\t-0.680577094962620310,\t-0.680613727935660990,\t-0.680650359207166990,\t-0.680686988777047140,\t-0.680723616645210190,\t\n-0.680760242811563780,\t-0.680796867276016850,\t-0.680833490038477710,\t-0.680870111098854870,\t-0.680906730457057070,\t-0.680943348112992060,\t-0.680979964066568800,\t-0.681016578317695800,\t\n-0.681053190866281130,\t-0.681089801712233430,\t-0.681126410855461330,\t-0.681163018295873450,\t-0.681199624033377750,\t-0.681236228067882870,\t-0.681272830399297870,\t-0.681309431027530390,\t\n-0.681346029952489380,\t-0.681382627174083270,\t-0.681419222692220660,\t-0.681455816506810200,\t-0.681492408617759950,\t-0.681528999024978650,\t-0.681565587728375170,\t-0.681602174727857450,\t\n-0.681638760023334230,\t-0.681675343614714160,\t-0.681711925501905740,\t-0.681748505684817820,\t-0.681785084163358260,\t-0.681821660937436350,\t-0.681858236006959940,\t-0.681894809371838000,\t\n-0.681931381031979030,\t-0.681967950987291570,\t-0.682004519237684570,\t-0.682041085783065880,\t-0.682077650623344580,\t-0.682114213758429400,\t-0.682150775188228420,\t-0.682187334912650490,\t\n-0.682223892931604240,\t-0.682260449244998180,\t-0.682297003852741390,\t-0.682333556754741720,\t-0.682370107950908240,\t-0.682406657441149810,\t-0.682443205225374380,\t-0.682479751303490810,\t\n-0.682516295675408060,\t-0.682552838341034750,\t-0.682589379300279080,\t-0.682625918553049990,\t-0.682662456099256460,\t-0.682698991938806340,\t-0.682735526071608810,\t-0.682772058497572500,\t\n-0.682808589216606030,\t-0.682845118228618380,\t-0.682881645533517600,\t-0.682918171131212780,\t-0.682954695021612770,\t-0.682991217204625740,\t-0.683027737680160670,\t-0.683064256448126180,\t\n-0.683100773508431120,\t-0.683137288860984460,\t-0.683173802505694260,\t-0.683210314442469490,\t-0.683246824671219330,\t-0.683283333191851750,\t-0.683319840004275920,\t-0.683356345108400380,\t\n-0.683392848504134290,\t-0.683429350191385840,\t-0.683465850170064000,\t-0.683502348440077840,\t-0.683538845001335440,\t-0.683575339853745970,\t-0.683611832997218170,\t-0.683648324431660790,\t\n-0.683684814156982900,\t-0.683721302173092570,\t-0.683757788479899100,\t-0.683794273077311440,\t-0.683830755965237790,\t-0.683867237143587210,\t-0.683903716612268560,\t-0.683940194371190690,\t\n-0.683976670420262560,\t-0.684013144759392460,\t-0.684049617388489910,\t-0.684086088307462870,\t-0.684122557516220640,\t-0.684159025014672070,\t-0.684195490802725900,\t-0.684231954880291320,\t\n-0.684268417247276490,\t-0.684304877903590740,\t-0.684341336849143000,\t-0.684377794083841580,\t-0.684414249607595780,\t-0.684450703420314330,\t-0.684487155521906090,\t-0.684523605912280230,\t\n-0.684560054591345170,\t-0.684596501559009860,\t-0.684632946815183720,\t-0.684669390359774810,\t-0.684705832192692430,\t-0.684742272313845430,\t-0.684778710723143110,\t-0.684815147420493760,\t\n-0.684851582405806460,\t-0.684888015678990600,\t-0.684924447239954270,\t-0.684960877088606980,\t-0.684997305224857360,\t-0.685033731648614590,\t-0.685070156359787630,\t-0.685106579358285120,\t\n-0.685143000644016120,\t-0.685179420216889930,\t-0.685215838076814850,\t-0.685252254223700170,\t-0.685288668657454970,\t-0.685325081377987980,\t-0.685361492385208600,\t-0.685397901679025260,\t\n-0.685434309259347120,\t-0.685470715126083490,\t-0.685507119279142760,\t-0.685543521718434250,\t-0.685579922443867010,\t-0.685616321455350230,\t-0.685652718752792320,\t-0.685689114336102580,\t\n-0.685725508205190400,\t-0.685761900359964090,\t-0.685798290800333050,\t-0.685834679526206360,\t-0.685871066537492970,\t-0.685907451834102180,\t-0.685943835415942390,\t-0.685980217282923020,\t\n-0.686016597434953470,\t-0.686052975871942140,\t-0.686089352593798330,\t-0.686125727600431110,\t-0.686162100891749670,\t-0.686198472467663190,\t-0.686234842328080300,\t-0.686271210472910510,\t\n-0.686307576902062460,\t-0.686343941615445540,\t-0.686380304612968620,\t-0.686416665894540980,\t-0.686453025460072030,\t-0.686489383309470180,\t-0.686525739442644830,\t-0.686562093859505510,\t\n-0.686598446559960610,\t-0.686634797543919650,\t-0.686671146811291600,\t-0.686707494361985750,\t-0.686743840195911500,\t-0.686780184312977270,\t-0.686816526713092570,\t-0.686852867396166910,\t\n-0.686889206362108820,\t-0.686925543610827690,\t-0.686961879142232610,\t-0.686998212956233200,\t-0.687034545052737980,\t-0.687070875431656350,\t-0.687107204092897830,\t-0.687143531036371050,\t\n-0.687179856261985410,\t-0.687216179769650100,\t-0.687252501559274420,\t-0.687288821630767770,\t-0.687325139984038770,\t-0.687361456618996840,\t-0.687397771535551590,\t-0.687434084733611670,\t\n-0.687470396213086480,\t-0.687506705973885300,\t-0.687543014015917440,\t-0.687579320339092300,\t-0.687615624943318520,\t-0.687651927828506040,\t-0.687688228994563390,\t-0.687724528441400200,\t\n-0.687760826168925640,\t-0.687797122177049030,\t-0.687833416465679970,\t-0.687869709034726990,\t-0.687905999884099840,\t-0.687942289013707910,\t-0.687978576423459940,\t-0.688014862113265570,\t\n-0.688051146083034080,\t-0.688087428332674670,\t-0.688123708862097060,\t-0.688159987671209780,\t-0.688196264759922570,\t-0.688232540128145050,\t-0.688268813775785860,\t-0.688305085702754620,\t\n-0.688341355908960620,\t-0.688377624394313600,\t-0.688413891158722090,\t-0.688450156202096040,\t-0.688486419524344750,\t-0.688522681125377180,\t-0.688558941005102950,\t-0.688595199163431260,\t\n-0.688631455600271610,\t-0.688667710315533640,\t-0.688703963309126090,\t-0.688740214580958690,\t-0.688776464130941070,\t-0.688812711958981860,\t-0.688848958064990910,\t-0.688885202448877630,\t\n-0.688921445110551200,\t-0.688957686049921580,\t-0.688993925266897510,\t-0.689030162761388510,\t-0.689066398533304430,\t-0.689102632582554110,\t-0.689138864909047080,\t-0.689175095512692960,\t\n-0.689211324393401490,\t-0.689247551551081310,\t-0.689283776985642250,\t-0.689320000696994060,\t-0.689356222685045590,\t-0.689392442949706590,\t-0.689428661490886440,\t-0.689464878308494570,\t\n-0.689501093402440920,\t-0.689537306772634140,\t-0.689573518418984180,\t-0.689609728341400660,\t-0.689645936539792560,\t-0.689682143014069600,\t-0.689718347764141320,\t-0.689754550789917100,\t\n-0.689790752091306910,\t-0.689826951668219390,\t-0.689863149520564930,\t-0.689899345648252280,\t-0.689935540051191180,\t-0.689971732729291240,\t-0.690007923682462000,\t-0.690044112910613290,\t\n-0.690080300413653980,\t-0.690116486191493910,\t-0.690152670244042920,\t-0.690188852571209990,\t-0.690225033172904840,\t-0.690261212049037120,\t-0.690297389199516440,\t-0.690333564624252550,\t\n-0.690369738323154510,\t-0.690405910296132070,\t-0.690442080543095190,\t-0.690478249063952720,\t-0.690514415858614730,\t-0.690550580926990620,\t-0.690586744268990360,\t-0.690622905884523020,\t\n-0.690659065773498340,\t-0.690695223935826390,\t-0.690731380371415900,\t-0.690767535080177080,\t-0.690803688062019420,\t-0.690839839316852560,\t-0.690875988844586340,\t-0.690912136645129960,\t\n-0.690948282718393150,\t-0.690984427064285980,\t-0.691020569682717410,\t-0.691056710573597410,\t-0.691092849736835600,\t-0.691128987172341720,\t-0.691165122880025630,\t-0.691201256859796500,\t\n-0.691237389111564180,\t-0.691273519635238640,\t-0.691309648430729060,\t-0.691345775497945400,\t-0.691381900836797290,\t-0.691418024447194690,\t-0.691454146329046780,\t-0.691490266482263420,\t\n-0.691526384906754780,\t-0.691562501602429820,\t-0.691598616569198630,\t-0.691634729806970830,\t-0.691670841315656260,\t-0.691706951095164890,\t-0.691743059145405900,\t-0.691779165466289150,\t\n-0.691815270057724920,\t-0.691851372919622070,\t-0.691887474051890880,\t-0.691923573454441000,\t-0.691959671127182150,\t-0.691995767070024530,\t-0.692031861282877080,\t-0.692067953765650220,\t\n-0.692104044518253360,\t-0.692140133540596230,\t-0.692176220832588780,\t-0.692212306394140890,\t-0.692248390225162490,\t-0.692284472325562780,\t-0.692320552695251830,\t-0.692356631334139940,\t\n-0.692392708242136060,\t-0.692428783419150480,\t-0.692464856865092850,\t-0.692500928579873110,\t-0.692536998563401450,\t-0.692573066815586950,\t-0.692609133336339780,\t-0.692645198125570020,\t\n-0.692681261183186960,\t-0.692717322509100790,\t-0.692753382103221350,\t-0.692789439965458720,\t-0.692825496095722190,\t-0.692861550493921950,\t-0.692897603159968070,\t-0.692933654093769950,\t\n-0.692969703295237550,\t-0.693005750764281060,\t-0.693041796500810100,\t-0.693077840504734980,\t-0.693113882775964970,\t-0.693149923314410280,\t-0.693185962119981070,\t-0.693221999192586650,\t\n-0.693258034532137190,\t-0.693294068138542660,\t-0.693330100011712910,\t-0.693366130151558350,\t-0.693402158557988040,\t-0.693438185230912390,\t-0.693474210170241580,\t-0.693510233375884910,\t\n-0.693546254847752670,\t-0.693582274585754830,\t-0.693618292589801570,\t-0.693654308859802280,\t-0.693690323395667270,\t-0.693726336197306730,\t-0.693762347264629930,\t-0.693798356597547410,\t\n-0.693834364195968890,\t-0.693870370059804560,\t-0.693906374188964500,\t-0.693942376583358330,\t-0.693978377242896130,\t-0.694014376167488290,\t-0.694050373357044230,\t-0.694086368811474230,\t\n-0.694122362530688370,\t-0.694158354514596510,\t-0.694194344763109150,\t-0.694230333276135590,\t-0.694266320053586460,\t-0.694302305095371270,\t-0.694338288401400330,\t-0.694374269971583580,\t\n-0.694410249805831210,\t-0.694446227904053530,\t-0.694482204266160030,\t-0.694518178892060910,\t-0.694554151781666800,\t-0.694590122934886870,\t-0.694626092351631640,\t-0.694662060031811300,\t\n-0.694698025975335700,\t-0.694733990182115350,\t-0.694769952652059760,\t-0.694805913385079240,\t-0.694841872381084300,\t-0.694877829639984230,\t-0.694913785161689780,\t-0.694949738946110780,\t\n-0.694985690993157770,\t-0.695021641302740130,\t-0.695057589874768510,\t-0.695093536709153190,\t-0.695129481805803700,\t-0.695165425164630420,\t-0.695201366785543670,\t-0.695237306668453510,\t\n-0.695273244813270350,\t-0.695309181219903820,\t-0.695345115888264310,\t-0.695381048818262350,\t-0.695416980009807450,\t-0.695452909462810130,\t-0.695488837177180460,\t-0.695524763152828740,\t\n-0.695560687389665370,\t-0.695596609887600080,\t-0.695632530646543180,\t-0.695668449666405290,\t-0.695704366947095920,\t-0.695740282488525710,\t-0.695776196290604720,\t-0.695812108353243590,\t\n-0.695848018676351820,\t-0.695883927259840050,\t-0.695919834103618800,\t-0.695955739207597680,\t-0.695991642571687220,\t-0.696027544195797490,\t-0.696063444079839110,\t-0.696099342223722270,\t\n-0.696135238627356820,\t-0.696171133290653280,\t-0.696207026213522260,\t-0.696242917395873300,\t-0.696278806837617110,\t-0.696314694538663790,\t-0.696350580498923840,\t-0.696386464718307780,\t\n-0.696422347196725130,\t-0.696458227934086960,\t-0.696494106930302890,\t-0.696529984185283670,\t-0.696565859698939360,\t-0.696601733471180480,\t-0.696637605501917560,\t-0.696673475791060310,\t\n-0.696709344338519390,\t-0.696745211144205400,\t-0.696781076208027980,\t-0.696816939529897980,\t-0.696852801109725580,\t-0.696888660947421300,\t-0.696924519042895540,\t-0.696960375396058260,\t\n-0.696996230006819980,\t-0.697032082875091440,\t-0.697067934000782370,\t-0.697103783383803520,\t-0.697139631024065180,\t-0.697175476921478080,\t-0.697211321075951960,\t-0.697247163487397570,\t\n-0.697283004155725530,\t-0.697318843080845690,\t-0.697354680262668780,\t-0.697390515701105220,\t-0.697426349396065290,\t-0.697462181347459740,\t-0.697498011555198530,\t-0.697533840019192270,\t\n-0.697569666739351720,\t-0.697605491715586610,\t-0.697641314947807900,\t-0.697677136435925770,\t-0.697712956179850960,\t-0.697748774179493990,\t-0.697784590434764710,\t-0.697820404945574290,\t\n-0.697856217711832590,\t-0.697892028733450350,\t-0.697927838010338090,\t-0.697963645542406090,\t-0.697999451329565420,\t-0.698035255371725730,\t-0.698071057668797960,\t-0.698106858220692850,\t\n-0.698142657027320150,\t-0.698178454088590920,\t-0.698214249404415570,\t-0.698250042974704610,\t-0.698285834799368790,\t-0.698321624878318170,\t-0.698357413211463380,\t-0.698393199798715390,\t\n-0.698428984639984150,\t-0.698464767735180400,\t-0.698500549084214770,\t-0.698536328686997780,\t-0.698572106543440150,\t-0.698607882653452080,\t-0.698643657016944530,\t-0.698679429633827560,\t\n-0.698715200504012040,\t-0.698750969627408570,\t-0.698786737003927570,\t-0.698822502633480000,\t-0.698858266515975930,\t-0.698894028651326330,\t-0.698929789039441810,\t-0.698965547680232560,\t\n-0.699001304573609320,\t-0.699037059719482930,\t-0.699072813117763920,\t-0.699108564768363140,\t-0.699144314671190650,\t-0.699180062826157300,\t-0.699215809233174170,\t-0.699251553892151320,\t\n-0.699287296802999390,\t-0.699323037965629330,\t-0.699358777379952000,\t-0.699394515045877350,\t-0.699430250963316460,\t-0.699465985132180170,\t-0.699501717552378670,\t-0.699537448223822910,\t\n-0.699573177146423530,\t-0.699608904320091150,\t-0.699644629744736850,\t-0.699680353420270680,\t-0.699716075346603520,\t-0.699751795523646640,\t-0.699787513951309890,\t-0.699823230629504360,\t\n-0.699858945558140770,\t-0.699894658737129750,\t-0.699930370166382380,\t-0.699966079845808940,\t-0.700001787775320410,\t-0.700037493954827280,\t-0.700073198384240310,\t-0.700108901063470350,\t\n-0.700144601992428120,\t-0.700180301171024700,\t-0.700215998599170280,\t-0.700251694276775800,\t-0.700287388203752470,\t-0.700323080380010340,\t-0.700358770805460500,\t-0.700394459480013660,\t\n-0.700430146403580700,\t-0.700465831576072780,\t-0.700501514997399880,\t-0.700537196667473160,\t-0.700572876586203820,\t-0.700608554753502030,\t-0.700644231169278760,\t-0.700679905833444970,\t\n-0.700715578745911730,\t-0.700751249906589210,\t-0.700786919315388610,\t-0.700822586972220880,\t-0.700858252876996550,\t-0.700893917029626450,\t-0.700929579430021650,\t-0.700965240078092800,\t\n-0.701000898973751290,\t-0.701036556116907180,\t-0.701072211507471680,\t-0.701107865145355950,\t-0.701143517030470180,\t-0.701179167162725660,\t-0.701214815542033240,\t-0.701250462168303780,\t\n-0.701286107041448450,\t-0.701321750161377650,\t-0.701357391528002360,\t-0.701393031141233970,\t-0.701428669000982660,\t-0.701464305107159620,\t-0.701499939459675930,\t-0.701535572058442640,\t\n-0.701571202903370050,\t-0.701606831994369570,\t-0.701642459331352280,\t-0.701678084914228560,\t-0.701713708742909500,\t-0.701749330817306280,\t-0.701784951137329750,\t-0.701820569702891080,\t\n-0.701856186513900690,\t-0.701891801570269870,\t-0.701927414871909790,\t-0.701963026418730980,\t-0.701998636210644510,\t-0.702034244247561560,\t-0.702069850529392860,\t-0.702105455056049930,\t\n-0.702141057827442960,\t-0.702176658843483790,\t-0.702212258104082610,\t-0.702247855609150710,\t-0.702283451358599260,\t-0.702319045352339130,\t-0.702354637590281720,\t-0.702390228072337420,\t\n-0.702425816798417530,\t-0.702461403768433360,\t-0.702496988982295510,\t-0.702532572439915070,\t-0.702568154141203220,\t-0.702603734086071020,\t-0.702639312274429770,\t-0.702674888706189880,\t\n-0.702710463381262860,\t-0.702746036299559900,\t-0.702781607460991610,\t-0.702817176865469300,\t-0.702852744512904030,\t-0.702888310403207210,\t-0.702923874536289350,\t-0.702959436912061750,\t\n-0.702994997530435820,\t-0.703030556391322170,\t-0.703066113494632110,\t-0.703101668840276810,\t-0.703137222428167230,\t-0.703172774258215010,\t-0.703208324330330430,\t-0.703243872644425120,\t\n-0.703279419200410480,\t-0.703314963998196930,\t-0.703350507037695970,\t-0.703386048318818680,\t-0.703421587841476350,\t-0.703457125605580380,\t-0.703492661611041180,\t-0.703528195857770380,\t\n-0.703563728345679480,\t-0.703599259074678910,\t-0.703634788044680160,\t-0.703670315255594430,\t-0.703705840707333220,\t-0.703741364399807170,\t-0.703776886332927560,\t-0.703812406506606150,\t\n-0.703847924920753430,\t-0.703883441575280930,\t-0.703918956470099720,\t-0.703954469605121200,\t-0.703989980980256780,\t-0.704025490595417080,\t-0.704060998450513730,\t-0.704096504545458140,\t\n-0.704132008880160920,\t-0.704167511454533710,\t-0.704203012268487800,\t-0.704238511321934270,\t-0.704274008614784840,\t-0.704309504146950040,\t-0.704344997918341820,\t-0.704380489928870810,\t\n-0.704415980178448530,\t-0.704451468666986270,\t-0.704486955394395430,\t-0.704522440360587420,\t-0.704557923565473090,\t-0.704593405008963840,\t-0.704628884690971510,\t-0.704664362611406640,\t\n-0.704699838770180830,\t-0.704735313167205390,\t-0.704770785802391720,\t-0.704806256675651330,\t-0.704841725786895080,\t-0.704877193136034360,\t-0.704912658722981140,\t-0.704948122547645940,\t\n-0.704983584609940370,\t-0.705019044909775850,\t-0.705054503447064000,\t-0.705089960221715660,\t-0.705125415233642360,\t-0.705160868482755830,\t-0.705196319968966810,\t-0.705231769692187040,\t\n-0.705267217652327800,\t-0.705302663849300520,\t-0.705338108283017020,\t-0.705373550953387830,\t-0.705408991860324800,\t-0.705444431003739550,\t-0.705479868383542930,\t-0.705515303999646570,\t\n-0.705550737851962100,\t-0.705586169940400690,\t-0.705621600264874190,\t-0.705657028825293350,\t-0.705692455621569900,\t-0.705727880653615690,\t-0.705763303921341460,\t-0.705798725424658930,\t\n-0.705834145163479640,\t-0.705869563137715320,\t-0.705904979347276810,\t-0.705940393792075740,\t-0.705975806472024070,\t-0.706011217387032540,\t-0.706046626537013000,\t-0.706082033921876850,\t\n-0.706117439541535610,\t-0.706152843395901120,\t-0.706188245484884240,\t-0.706223645808396690,\t-0.706259044366350340,\t-0.706294441158656030,\t-0.706329836185225710,\t-0.706365229445970690,\t\n-0.706400620940802690,\t-0.706436010669633460,\t-0.706471398632373850,\t-0.706506784828936030,\t-0.706542169259230970,\t-0.706577551923170510,\t-0.706612932820666170,\t-0.706648311951629470,\t\n-0.706683689315972250,\t-0.706719064913605590,\t-0.706754438744441220,\t-0.706789810808391090,\t-0.706825181105366070,\t-0.706860549635278220,\t-0.706895916398038840,\t-0.706931281393559760,\t\n-0.706966644621752740,\t-0.707002006082528830,\t-0.707037365775799900,\t-0.707072723701477890,\t-0.707108079859473770,\t-0.707143434249699390,\t-0.707178786872066480,\t-0.707214137726486890,\t\n-0.707249486812871590,\t-0.707284834131132630,\t-0.707320179681181880,\t-0.707355523462930400,\t-0.707390865476290150,\t-0.707426205721172650,\t-0.707461544197489630,\t-0.707496880905153170,\t\n-0.707532215844074110,\t-0.707567549014164520,\t-0.707602880415336370,\t-0.707638210047500720,\t-0.707673537910569530,\t-0.707708864004454540,\t-0.707744188329067380,\t-0.707779510884319900,\t\n-0.707814831670123490,\t-0.707850150686390010,\t-0.707885467933031420,\t-0.707920783409958900,\t-0.707956097117084400,\t-0.707991409054319680,\t-0.708026719221576670,\t-0.708062027618766580,\t\n-0.708097334245801460,\t-0.708132639102593280,\t-0.708167942189053210,\t-0.708203243505093230,\t-0.708238543050625170,\t-0.708273840825560770,\t-0.708309136829812110,\t-0.708344431063290260,\t\n-0.708379723525907280,\t-0.708415014217575360,\t-0.708450303138205670,\t-0.708485590287710190,\t-0.708520875666000640,\t-0.708556159272988980,\t-0.708591441108587180,\t-0.708626721172706530,\t\n-0.708661999465259320,\t-0.708697275986156840,\t-0.708732550735311160,\t-0.708767823712634140,\t-0.708803094918037500,\t-0.708838364351433440,\t-0.708873632012733120,\t-0.708908897901848860,\t\n-0.708944162018692590,\t-0.708979424363175630,\t-0.709014684935210030,\t-0.709049943734707750,\t-0.709085200761580660,\t-0.709120456015740810,\t-0.709155709497099610,\t-0.709190961205569010,\t\n-0.709226211141061440,\t-0.709261459303487940,\t-0.709296705692760820,\t-0.709331950308791930,\t-0.709367193151493550,\t-0.709402434220776760,\t-0.709437673516553960,\t-0.709472911038737330,\t\n-0.709508146787237950,\t-0.709543380761968320,\t-0.709578612962840300,\t-0.709613843389765630,\t-0.709649072042656700,\t-0.709684298921424820,\t-0.709719524025982150,\t-0.709754747356240890,\t\n-0.709789968912112550,\t-0.709825188693509300,\t-0.709860406700343120,\t-0.709895622932525840,\t-0.709930837389969870,\t-0.709966050072586510,\t-0.710001260980288260,\t-0.710036470112986540,\t\n-0.710071677470593740,\t-0.710106883053021720,\t-0.710142086860182430,\t-0.710177288891988170,\t-0.710212489148350560,\t-0.710247687629181670,\t-0.710282884334393790,\t-0.710318079263898450,\t\n-0.710353272417607930,\t-0.710388463795434190,\t-0.710423653397289300,\t-0.710458841223085560,\t-0.710494027272734470,\t-0.710529211546148340,\t-0.710564394043239340,\t-0.710599574763919220,\t\n-0.710634753708100030,\t-0.710669930875694080,\t-0.710705106266613540,\t-0.710740279880769820,\t-0.710775451718075550,\t-0.710810621778442900,\t-0.710845790061783500,\t-0.710880956568009540,\t\n-0.710916121297033190,\t-0.710951284248766520,\t-0.710986445423121950,\t-0.711021604820010870,\t-0.711056762439345900,\t-0.711091918281039350,\t-0.711127072345002610,\t-0.711162224631148200,\t\n-0.711197375139388300,\t-0.711232523869634870,\t-0.711267670821800540,\t-0.711302815995796700,\t-0.711337959391535770,\t-0.711373101008930250,\t-0.711408240847891780,\t-0.711443378908332540,\t\n-0.711478515190165030,\t-0.711513649693301440,\t-0.711548782417653400,\t-0.711583913363133420,\t-0.711619042529654020,\t-0.711654169917126600,\t-0.711689295525463890,\t-0.711724419354577750,\t\n-0.711759541404380800,\t-0.711794661674785110,\t-0.711829780165702530,\t-0.711864896877045460,\t-0.711900011808726530,\t-0.711935124960657250,\t-0.711970236332750140,\t-0.712005345924917380,\t\n-0.712040453737071370,\t-0.712075559769124510,\t-0.712110664020988440,\t-0.712145766492575990,\t-0.712180867183798800,\t-0.712215966094569500,\t-0.712251063224800250,\t-0.712286158574403250,\t\n-0.712321252143291340,\t-0.712356343931375810,\t-0.712391433938569520,\t-0.712426522164784970,\t-0.712461608609933790,\t-0.712496693273928620,\t-0.712531776156681620,\t-0.712566857258105200,\t\n-0.712601936578111990,\t-0.712637014116613620,\t-0.712672089873522710,\t-0.712707163848751880,\t-0.712742236042212870,\t-0.712777306453818320,\t-0.712812375083480390,\t-0.712847441931111940,\t\n-0.712882506996624480,\t-0.712917570279930750,\t-0.712952631780943370,\t-0.712987691499574190,\t-0.713022749435735740,\t-0.713057805589340510,\t-0.713092859960300700,\t-0.713127912548529030,\t\n-0.713162963353937250,\t-0.713198012376438100,\t-0.713233059615944190,\t-0.713268105072367380,\t-0.713303148745620290,\t-0.713338190635615320,\t-0.713373230742264890,\t-0.713408269065481710,\t\n-0.713443305605177440,\t-0.713478340361265010,\t-0.713513373333657050,\t-0.713548404522265310,\t-0.713583433927002520,\t-0.713618461547781190,\t-0.713653487384513950,\t-0.713688511437112760,\t\n-0.713723533705490350,\t-0.713758554189559250,\t-0.713793572889231620,\t-0.713828589804419880,\t-0.713863604935036870,\t-0.713898618280994770,\t-0.713933629842206320,\t-0.713968639618583590,\t\n-0.714003647610039200,\t-0.714038653816486120,\t-0.714073658237835970,\t-0.714108660874001710,\t-0.714143661724895850,\t-0.714178660790430800,\t-0.714213658070519400,\t-0.714248653565073610,\t\n-0.714283647274006390,\t-0.714318639197229820,\t-0.714353629334656630,\t-0.714388617686199320,\t-0.714423604251770540,\t-0.714458589031283120,\t-0.714493572024648800,\t-0.714528553231780550,\t\n-0.714563532652591200,\t-0.714598510286992840,\t-0.714633486134898080,\t-0.714668460196219660,\t-0.714703432470870090,\t-0.714738402958762230,\t-0.714773371659808030,\t-0.714808338573920450,\t\n-0.714843303701012340,\t-0.714878267040995660,\t-0.714913228593783370,\t-0.714948188359287860,\t-0.714983146337422330,\t-0.715018102528098500,\t-0.715053056931229450,\t-0.715088009546728130,\t\n-0.715122960374506400,\t-0.715157909414477320,\t-0.715192856666553520,\t-0.715227802130647410,\t-0.715262745806672260,\t-0.715297687694539830,\t-0.715332627794163290,\t-0.715367566105455490,\t\n-0.715402502628328390,\t-0.715437437362695050,\t-0.715472370308468110,\t-0.715507301465560190,\t-0.715542230833884460,\t-0.715577158413352790,\t-0.715612084203878230,\t-0.715647008205373640,\t\n-0.715681930417751410,\t-0.715716850840924290,\t-0.715751769474805010,\t-0.715786686319306640,\t-0.715821601374341250,\t-0.715856514639821810,\t-0.715891426115661370,\t-0.715926335801772120,\t\n-0.715961243698067020,\t-0.715996149804458910,\t-0.716031054120860320,\t-0.716065956647184310,\t-0.716100857383343280,\t-0.716135756329250080,\t-0.716170653484817680,\t-0.716205548849958460,\t\n-0.716240442424585290,\t-0.716275334208611000,\t-0.716310224201948450,\t-0.716345112404510600,\t-0.716379998816209730,\t-0.716414883436959030,\t-0.716449766266670900,\t-0.716484647305258400,\t\n-0.716519526552634290,\t-0.716554404008711290,\t-0.716589279673402580,\t-0.716624153546620460,\t-0.716659025628277880,\t-0.716693895918288030,\t-0.716728764416563190,\t-0.716763631123016330,\t\n-0.716798496037560520,\t-0.716833359160108370,\t-0.716868220490573190,\t-0.716903080028867160,\t-0.716937937774903440,\t-0.716972793728595130,\t-0.717007647889854600,\t-0.717042500258594840,\t\n-0.717077350834728900,\t-0.717112199618169850,\t-0.717147046608830110,\t-0.717181891806622620,\t-0.717216735211460790,\t-0.717251576823256800,\t-0.717286416641923830,\t-0.717321254667374840,\t\n-0.717356090899522790,\t-0.717390925338280640,\t-0.717425757983561010,\t-0.717460588835276970,\t-0.717495417893341700,\t-0.717530245157667610,\t-0.717565070628167990,\t-0.717599894304755680,\t\n-0.717634716187343540,\t-0.717669536275844950,\t-0.717704354570172230,\t-0.717739171070238550,\t-0.717773985775957300,\t-0.717808798687240790,\t-0.717843609804002300,\t-0.717878419126154800,\t\n-0.717913226653611570,\t-0.717948032386284910,\t-0.717982836324088210,\t-0.718017638466934670,\t-0.718052438814736790,\t-0.718087237367407760,\t-0.718122034124860640,\t-0.718156829087008510,\t\n-0.718191622253764540,\t-0.718226413625041250,\t-0.718261203200751930,\t-0.718295990980809870,\t-0.718330776965127480,\t-0.718365561153618270,\t-0.718400343546195090,\t-0.718435124142771110,\t\n-0.718469902943259520,\t-0.718504679947572940,\t-0.718539455155624900,\t-0.718574228567328000,\t-0.718609000182595440,\t-0.718643770001340500,\t-0.718678538023476030,\t-0.718713304248915550,\t\n-0.718748068677571570,\t-0.718782831309357380,\t-0.718817592144186390,\t-0.718852351181971110,\t-0.718887108422624930,\t-0.718921863866061050,\t-0.718956617512192420,\t-0.718991369360932660,\t\n-0.719026119412194080,\t-0.719060867665890280,\t-0.719095614121934570,\t-0.719130358780239560,\t-0.719165101640718560,\t-0.719199842703284850,\t-0.719234581967851950,\t-0.719269319434332250,\t\n-0.719304055102639170,\t-0.719338788972686330,\t-0.719373521044386120,\t-0.719408251317652070,\t-0.719442979792397570,\t-0.719477706468535480,\t-0.719512431345979530,\t-0.719547154424642120,\t\n-0.719581875704436880,\t-0.719616595185277210,\t-0.719651312867075840,\t-0.719686028749745970,\t-0.719720742833201200,\t-0.719755455117354610,\t-0.719790165602119610,\t-0.719824874287408930,\t\n-0.719859581173136310,\t-0.719894286259214480,\t-0.719928989545556950,\t-0.719963691032076800,\t-0.719998390718687540,\t-0.720033088605302680,\t-0.720067784691834740,\t-0.720102478978197350,\t\n-0.720137171464304000,\t-0.720171862150067450,\t-0.720206551035401210,\t-0.720241238120218670,\t-0.720275923404433030,\t-0.720310606887957890,\t-0.720345288570705790,\t-0.720379968452590670,\t\n-0.720414646533525830,\t-0.720449322813424110,\t-0.720483997292199030,\t-0.720518669969763880,\t-0.720553340846032510,\t-0.720588009920917430,\t-0.720622677194332370,\t-0.720657342666190860,\t\n-0.720692006336405620,\t-0.720726668204890510,\t-0.720761328271558700,\t-0.720795986536323490,\t-0.720830642999098710,\t-0.720865297659797010,\t-0.720899950518332000,\t-0.720934601574617420,\t\n-0.720969250828566110,\t-0.721003898280091590,\t-0.721038543929107380,\t-0.721073187775526760,\t-0.721107829819263470,\t-0.721142470060230470,\t-0.721177108498341160,\t-0.721211745133509390,\t\n-0.721246379965647890,\t-0.721281012994670510,\t-0.721315644220490660,\t-0.721350273643021960,\t-0.721384901262177140,\t-0.721419527077870270,\t-0.721454151090014760,\t-0.721488773298523570,\t\n-0.721523393703310530,\t-0.721558012304288840,\t-0.721592629101372230,\t-0.721627244094474430,\t-0.721661857283508180,\t-0.721696468668387210,\t-0.721731078249025380,\t-0.721765686025335640,\t\n-0.721800291997231610,\t-0.721834896164626820,\t-0.721869498527434870,\t-0.721904099085569410,\t-0.721938697838943490,\t-0.721973294787471080,\t-0.722007889931065130,\t-0.722042483269639380,\t\n-0.722077074803107570,\t-0.722111664531382870,\t-0.722146252454379580,\t-0.722180838572010100,\t-0.722215422884188610,\t-0.722250005390828950,\t-0.722284586091843980,\t-0.722319164987147430,\t\n-0.722353742076653040,\t-0.722388317360274200,\t-0.722422890837924990,\t-0.722457462509518140,\t-0.722492032374967730,\t-0.722526600434187590,\t-0.722561166687090580,\t-0.722595731133590550,\t\n-0.722630293773601330,\t-0.722664854607036670,\t-0.722699413633809410,\t-0.722733970853833840,\t-0.722768526267023480,\t-0.722803079873291620,\t-0.722837631672551990,\t-0.722872181664718340,\t\n-0.722906729849704170,\t-0.722941276227423550,\t-0.722975820797789330,\t-0.723010363560715570,\t-0.723044904516116360,\t-0.723079443663904420,\t-0.723113981003993930,\t-0.723148516536298520,\t\n-0.723183050260731710,\t-0.723217582177207770,\t-0.723252112285639350,\t-0.723286640585940830,\t-0.723321167078025960,\t-0.723355691761807810,\t-0.723390214637200430,\t-0.723424735704117580,\t\n-0.723459254962473210,\t-0.723493772412180380,\t-0.723528288053153060,\t-0.723562801885305310,\t-0.723597313908550310,\t-0.723631824122802030,\t-0.723666332527974190,\t-0.723700839123980530,\t\n-0.723735343910735020,\t-0.723769846888150940,\t-0.723804348056142130,\t-0.723838847414622900,\t-0.723873344963506080,\t-0.723907840702705970,\t-0.723942334632136310,\t-0.723976826751710710,\t\n-0.724011317061343470,\t-0.724045805560947550,\t-0.724080292250437460,\t-0.724114777129726270,\t-0.724149260198728160,\t-0.724183741457356980,\t-0.724218220905526340,\t-0.724252698543150550,\t\n-0.724287174370142670,\t-0.724321648386416770,\t-0.724356120591887140,\t-0.724390590986466850,\t-0.724425059570070200,\t-0.724459526342610790,\t-0.724493991304002600,\t-0.724528454454159700,\t\n-0.724562915792995480,\t-0.724597375320423900,\t-0.724631833036359140,\t-0.724666288940714500,\t-0.724700743033404260,\t-0.724735195314341940,\t-0.724769645783442160,\t-0.724804094440617890,\t\n-0.724838541285783400,\t-0.724872986318852770,\t-0.724907429539739410,\t-0.724941870948357490,\t-0.724976310544620860,\t-0.725010748328443590,\t-0.725045184299739630,\t-0.725079618458422390,\t\n-0.725114050804406160,\t-0.725148481337605010,\t-0.725182910057932450,\t-0.725217336965302660,\t-0.725251762059629490,\t-0.725286185340826780,\t-0.725320606808809050,\t-0.725355026463489480,\t\n-0.725389444304782360,\t-0.725423860332601870,\t-0.725458274546861510,\t-0.725492686947475370,\t-0.725527097534357620,\t-0.725561506307422330,\t-0.725595913266583010,\t-0.725630318411753960,\t\n-0.725664721742849350,\t-0.725699123259782590,\t-0.725733522962468180,\t-0.725767920850819760,\t-0.725802316924751610,\t-0.725836711184178030,\t-0.725871103629012420,\t-0.725905494259168950,\t\n-0.725939883074562140,\t-0.725974270075105180,\t-0.726008655260712680,\t-0.726043038631298380,\t-0.726077420186776570,\t-0.726111799927061650,\t-0.726146177852066700,\t-0.726180553961706780,\t\n-0.726214928255895060,\t-0.726249300734546080,\t-0.726283671397573770,\t-0.726318040244892440,\t-0.726352407276416150,\t-0.726386772492058630,\t-0.726421135891734180,\t-0.726455497475357200,\t\n-0.726489857242841100,\t-0.726524215194100380,\t-0.726558571329049220,\t-0.726592925647601470,\t-0.726627278149671870,\t-0.726661628835173710,\t-0.726695977704021390,\t-0.726730324756129530,\t\n-0.726764669991411540,\t-0.726799013409781920,\t-0.726833355011154650,\t-0.726867694795444440,\t-0.726902032762564600,\t-0.726936368912429630,\t-0.726970703244954050,\t-0.727005035760051490,\t\n-0.727039366457636340,\t-0.727073695337622670,\t-0.727108022399924890,\t-0.727142347644457290,\t-0.727176671071133600,\t-0.727210992679868110,\t-0.727245312470575440,\t-0.727279630443169340,\t\n-0.727313946597563990,\t-0.727348260933673880,\t-0.727382573451413110,\t-0.727416884150696160,\t-0.727451193031436680,\t-0.727485500093549290,\t-0.727519805336948490,\t-0.727554108761547800,\t\n-0.727588410367261850,\t-0.727622710154004810,\t-0.727657008121691320,\t-0.727691304270235100,\t-0.727725598599550550,\t-0.727759891109552300,\t-0.727794181800154090,\t-0.727828470671270320,\t\n-0.727862757722815500,\t-0.727897042954703700,\t-0.727931326366849650,\t-0.727965607959166870,\t-0.727999887731570210,\t-0.728034165683974050,\t-0.728068441816292160,\t-0.728102716128439240,\t\n-0.728136988620329490,\t-0.728171259291877200,\t-0.728205528142997220,\t-0.728239795173603040,\t-0.728274060383609640,\t-0.728308323772930870,\t-0.728342585341481220,\t-0.728376845089175000,\t\n-0.728411103015926820,\t-0.728445359121651200,\t-0.728479613406261880,\t-0.728513865869673370,\t-0.728548116511800630,\t-0.728582365332557380,\t-0.728616612331858040,\t-0.728650857509617220,\t\n-0.728685100865749340,\t-0.728719342400168890,\t-0.728753582112789840,\t-0.728787820003526820,\t-0.728822056072294560,\t-0.728856290319006890,\t-0.728890522743578460,\t-0.728924753345923770,\t\n-0.728958982125957440,\t-0.728993209083593330,\t-0.729027434218746270,\t-0.729061657531330900,\t-0.729095879021261160,\t-0.729130098688451690,\t-0.729164316532816880,\t-0.729198532554271360,\t\n-0.729232746752729750,\t-0.729266959128106020,\t-0.729301169680314890,\t-0.729335378409271100,\t-0.729369585314888490,\t-0.729403790397082140,\t-0.729437993655766110,\t-0.729472195090855260,\t\n-0.729506394702264080,\t-0.729540592489906660,\t-0.729574788453698050,\t-0.729608982593552220,\t-0.729643174909383910,\t-0.729677365401107720,\t-0.729711554068637970,\t-0.729745740911889710,\t\n-0.729779925930776900,\t-0.729814109125214160,\t-0.729848290495116460,\t-0.729882470040397750,\t-0.729916647760972870,\t-0.729950823656756340,\t-0.729984997727662790,\t-0.730019169973606940,\t\n-0.730053340394502980,\t-0.730087508990265640,\t-0.730121675760809890,\t-0.730155840706049550,\t-0.730190003825899710,\t-0.730224165120274770,\t-0.730258324589089680,\t-0.730292482232258620,\t\n-0.730326638049696330,\t-0.730360792041317650,\t-0.730394944207036770,\t-0.730429094546768410,\t-0.730463243060427430,\t-0.730497389747928330,\t-0.730531534609186070,\t-0.730565677644114620,\t\n-0.730599818852629030,\t-0.730633958234644170,\t-0.730668095790074080,\t-0.730702231518833730,\t-0.730736365420837860,\t-0.730770497496001090,\t-0.730804627744238380,\t-0.730838756165463790,\t\n-0.730872882759592280,\t-0.730907007526538920,\t-0.730941130466217670,\t-0.730975251578543590,\t-0.731009370863431430,\t-0.731043488320796130,\t-0.731077603950551770,\t-0.731111717752613410,\t\n-0.731145829726896120,\t-0.731179939873313980,\t-0.731214048191781930,\t-0.731248154682214710,\t-0.731282259344527170,\t-0.731316362178634270,\t-0.731350463184450180,\t-0.731384562361889980,\t\n-0.731418659710868500,\t-0.731452755231300270,\t-0.731486848923100010,\t-0.731520940786182680,\t-0.731555030820463030,\t-0.731589119025855990,\t-0.731623205402275990,\t-0.731657289949638190,\t\n-0.731691372667856890,\t-0.731725453556847150,\t-0.731759532616523820,\t-0.731793609846801640,\t-0.731827685247595780,\t-0.731861758818820320,\t-0.731895830560390540,\t-0.731929900472221510,\t\n-0.731963968554227300,\t-0.731998034806323190,\t-0.732032099228424050,\t-0.732066161820444710,\t-0.732100222582300120,\t-0.732134281513904810,\t-0.732168338615173720,\t-0.732202393886022040,\t\n-0.732236447326364170,\t-0.732270498936115180,\t-0.732304548715189910,\t-0.732338596663503650,\t-0.732372642780970470,\t-0.732406687067505780,\t-0.732440729523024640,\t-0.732474770147441330,\t\n-0.732508808940671050,\t-0.732542845902628860,\t-0.732576881033229600,\t-0.732610914332388340,\t-0.732644945800019490,\t-0.732678975436038330,\t-0.732713003240359930,\t-0.732747029212898800,\t\n-0.732781053353570130,\t-0.732815075662288870,\t-0.732849096138969760,\t-0.732883114783528300,\t-0.732917131595878790,\t-0.732951146575936410,\t-0.732985159723616440,\t-0.733019171038833290,\t\n-0.733053180521502260,\t-0.733087188171538170,\t-0.733121193988856560,\t-0.733155197973371480,\t-0.733189200124998550,\t-0.733223200443652860,\t-0.733257198929248900,\t-0.733291195581701970,\t\n-0.733325190400927030,\t-0.733359183386839030,\t-0.733393174539353490,\t-0.733427163858384580,\t-0.733461151343847930,\t-0.733495136995658600,\t-0.733529120813731120,\t-0.733563102797980870,\t\n-0.733597082948322820,\t-0.733631061264672150,\t-0.733665037746944030,\t-0.733699012395053090,\t-0.733732985208914830,\t-0.733766956188443900,\t-0.733800925333555560,\t-0.733834892644164900,\t\n-0.733868858120186980,\t-0.733902821761537210,\t-0.733936783568130190,\t-0.733970743539881120,\t-0.734004701676705510,\t-0.734038657978517860,\t-0.734072612445233470,\t-0.734106565076767640,\t\n-0.734140515873035420,\t-0.734174464833952100,\t-0.734208411959432430,\t-0.734242357249391690,\t-0.734276300703745390,\t-0.734310242322408050,\t-0.734344182105295060,\t-0.734378120052321610,\t\n-0.734412056163403100,\t-0.734445990438454270,\t-0.734479922877390390,\t-0.734513853480126990,\t-0.734547782246578800,\t-0.734581709176660990,\t-0.734615634270288980,\t-0.734649557527377820,\t\n-0.734683478947843140,\t-0.734717398531599450,\t-0.734751316278562270,\t-0.734785232188647110,\t-0.734819146261768590,\t-0.734853058497842100,\t-0.734886968896783070,\t-0.734920877458506540,\t\n-0.734954784182928140,\t-0.734988689069962400,\t-0.735022592119525030,\t-0.735056493331531560,\t-0.735090392705896490,\t-0.735124290242535450,\t-0.735158185941363620,\t-0.735192079802296620,\t\n-0.735225971825249180,\t-0.735259862010136820,\t-0.735293750356875050,\t-0.735327636865378610,\t-0.735361521535563110,\t-0.735395404367343850,\t-0.735429285360636010,\t-0.735463164515355210,\t\n-0.735497041831416290,\t-0.735530917308734770,\t-0.735564790947226270,\t-0.735598662746805410,\t-0.735632532707387930,\t-0.735666400828889120,\t-0.735700267111224270,\t-0.735734131554309110,\t\n-0.735767994158058380,\t-0.735801854922387810,\t-0.735835713847212360,\t-0.735869570932447650,\t-0.735903426178009080,\t-0.735937279583811830,\t-0.735971131149771750,\t-0.736004980875803570,\t\n-0.736038828761822810,\t-0.736072674807745410,\t-0.736106519013485890,\t-0.736140361378960220,\t-0.736174201904083560,\t-0.736208040588771430,\t-0.736241877432939450,\t-0.736275712436502580,\t\n-0.736309545599376340,\t-0.736343376921476560,\t-0.736377206402717980,\t-0.736411034043016440,\t-0.736444859842287360,\t-0.736478683800446340,\t-0.736512505917408360,\t-0.736546326193089130,\t\n-0.736580144627404400,\t-0.736613961220268900,\t-0.736647775971598580,\t-0.736681588881308860,\t-0.736715399949315120,\t-0.736749209175533220,\t-0.736783016559877880,\t-0.736816822102265070,\t\n-0.736850625802610510,\t-0.736884427660829180,\t-0.736918227676836680,\t-0.736952025850548530,\t-0.736985822181880470,\t-0.737019616670748110,\t-0.737053409317066420,\t-0.737087200120751130,\t\n-0.737120989081718190,\t-0.737154776199882460,\t-0.737188561475159760,\t-0.737222344907465740,\t-0.737256126496716120,\t-0.737289906242825870,\t-0.737323684145710920,\t-0.737357460205287030,\t\n-0.737391234421469140,\t-0.737425006794173220,\t-0.737458777323314770,\t-0.737492546008809310,\t-0.737526312850572800,\t-0.737560077848520290,\t-0.737593841002567530,\t-0.737627602312630470,\t\n-0.737661361778624180,\t-0.737695119400464390,\t-0.737728875178066850,\t-0.737762629111347050,\t-0.737796381200221060,\t-0.737830131444603850,\t-0.737863879844411490,\t-0.737897626399559140,\t\n-0.737931371109962870,\t-0.737965113975538100,\t-0.737998854996200440,\t-0.738032594171866060,\t-0.738066331502449820,\t-0.738100066987867900,\t-0.738133800628036020,\t-0.738167532422869250,\t\n-0.738201262372283780,\t-0.738234990476195120,\t-0.738268716734518990,\t-0.738302441147171250,\t-0.738336163714067180,\t-0.738369884435122750,\t-0.738403603310253900,\t-0.738437320339375700,\t\n-0.738471035522404230,\t-0.738504748859255210,\t-0.738538460349844610,\t-0.738572169994087480,\t-0.738605877791900010,\t-0.738639583743198050,\t-0.738673287847896880,\t-0.738706990105912450,\t\n-0.738740690517160630,\t-0.738774389081557010,\t-0.738808085799017800,\t-0.738841780669458050,\t-0.738875473692793830,\t-0.738909164868941200,\t-0.738942854197815360,\t-0.738976541679332470,\t\n-0.739010227313408150,\t-0.739043911099958260,\t-0.739077593038898860,\t-0.739111273130145240,\t-0.739144951373613690,\t-0.739178627769219500,\t-0.739212302316878840,\t-0.739245975016507240,\t\n-0.739279645868020860,\t-0.739313314871335560,\t-0.739346982026366620,\t-0.739380647333030330,\t-0.739414310791242760,\t-0.739447972400919080,\t-0.739481632161975380,\t-0.739515290074327700,\t\n-0.739548946137891680,\t-0.739582600352583720,\t-0.739616252718318990,\t-0.739649903235013450,\t-0.739683551902583610,\t-0.739717198720944550,\t-0.739750843690012430,\t-0.739784486809703210,\t\n-0.739818128079932860,\t-0.739851767500617430,\t-0.739885405071672330,\t-0.739919040793013960,\t-0.739952674664557720,\t-0.739986306686219790,\t-0.740019936857916120,\t-0.740053565179562560,\t\n-0.740087191651075390,\t-0.740120816272369920,\t-0.740154439043362420,\t-0.740188059963969190,\t-0.740221679034105410,\t-0.740255296253687580,\t-0.740288911622631330,\t-0.740322525140852950,\t\n-0.740356136808268510,\t-0.740389746624793400,\t-0.740423354590343920,\t-0.740456960704836350,\t-0.740490564968186100,\t-0.740524167380309460,\t-0.740557767941122380,\t-0.740591366650541150,\t\n-0.740624963508481280,\t-0.740658558514858960,\t-0.740692151669590570,\t-0.740725742972591420,\t-0.740759332423778010,\t-0.740792920023066180,\t-0.740826505770372120,\t-0.740860089665612120,\t\n-0.740893671708701460,\t-0.740927251899556770,\t-0.740960830238094230,\t-0.740994406724229230,\t-0.741027981357878280,\t-0.741061554138957360,\t-0.741095125067382510,\t-0.741128694143070140,\t\n-0.741162261365935880,\t-0.741195826735896120,\t-0.741229390252866600,\t-0.741262951916763500,\t-0.741296511727503100,\t-0.741330069685001370,\t-0.741363625789174810,\t-0.741397180039938820,\t\n-0.741430732437210030,\t-0.741464282980904500,\t-0.741497831670938080,\t-0.741531378507227060,\t-0.741564923489687610,\t-0.741598466618235810,\t-0.741632007892788160,\t-0.741665547313260290,\t\n-0.741699084879568480,\t-0.741732620591629250,\t-0.741766154449358120,\t-0.741799686452671690,\t-0.741833216601486050,\t-0.741866744895717580,\t-0.741900271335282020,\t-0.741933795920095670,\t\n-0.741967318650075260,\t-0.742000839525136180,\t-0.742034358545195060,\t-0.742067875710167970,\t-0.742101391019971300,\t-0.742134904474521350,\t-0.742168416073733850,\t-0.742201925817525420,\t\n-0.742235433705812350,\t-0.742268939738510490,\t-0.742302443915536130,\t-0.742335946236805770,\t-0.742369446702235480,\t-0.742402945311742000,\t-0.742436442065240840,\t-0.742469936962648510,\t\n-0.742503430003881640,\t-0.742536921188855840,\t-0.742570410517487840,\t-0.742603897989693730,\t-0.742637383605390220,\t-0.742670867364493060,\t-0.742704349266918530,\t-0.742737829312583590,\t\n-0.742771307501403630,\t-0.742804783833295510,\t-0.742838258308175400,\t-0.742871730925959710,\t-0.742905201686564930,\t-0.742938670589906810,\t-0.742972137635902090,\t-0.743005602824467260,\t\n-0.743039066155518180,\t-0.743072527628971360,\t-0.743105987244743300,\t-0.743139445002750200,\t-0.743172900902908880,\t-0.743206354945134870,\t-0.743239807129345340,\t-0.743273257455456140,\t\n-0.743306705923383550,\t-0.743340152533044310,\t-0.743373597284354700,\t-0.743407040177231470,\t-0.743440481211590230,\t-0.743473920387347720,\t-0.743507357704420890,\t-0.743540793162725260,\t\n-0.743574226762177660,\t-0.743607658502694500,\t-0.743641088384192180,\t-0.743674516406587440,\t-0.743707942569796220,\t-0.743741366873734930,\t-0.743774789318320640,\t-0.743808209903469190,\t\n-0.743841628629097080,\t-0.743875045495120850,\t-0.743908460501457420,\t-0.743941873648022560,\t-0.743975284934732860,\t-0.744008694361505410,\t-0.744042101928255820,\t-0.744075507634901050,\t\n-0.744108911481357490,\t-0.744142313467541670,\t-0.744175713593370200,\t-0.744209111858759380,\t-0.744242508263625700,\t-0.744275902807886030,\t-0.744309295491456300,\t-0.744342686314253270,\t\n-0.744376075276193650,\t-0.744409462377193740,\t-0.744442847617170500,\t-0.744476230996039880,\t-0.744509612513718720,\t-0.744542992170123650,\t-0.744576369965170960,\t-0.744609745898777260,\t\n-0.744643119970859300,\t-0.744676492181333800,\t-0.744709862530116730,\t-0.744743231017125030,\t-0.744776597642275550,\t-0.744809962405484250,\t-0.744843325306668080,\t-0.744876686345743670,\t\n-0.744910045522627410,\t-0.744943402837236370,\t-0.744976758289486510,\t-0.745010111879294780,\t-0.745043463606578140,\t-0.745076813471252430,\t-0.745110161473234720,\t-0.745143507612441640,\t\n-0.745176851888789790,\t-0.745210194302196150,\t-0.745243534852576660,\t-0.745276873539848510,\t-0.745310210363928080,\t-0.745343545324732020,\t-0.745376878422177150,\t-0.745410209656180100,\t\n-0.745443539026657720,\t-0.745476866533526290,\t-0.745510192176702670,\t-0.745543515956103910,\t-0.745576837871645970,\t-0.745610157923245920,\t-0.745643476110820600,\t-0.745676792434286530,\t\n-0.745710106893560760,\t-0.745743419488559490,\t-0.745776730219199660,\t-0.745810039085398220,\t-0.745843346087071370,\t-0.745876651224136270,\t-0.745909954496509540,\t-0.745943255904108150,\t\n-0.745976555446848270,\t-0.746009853124647070,\t-0.746043148937421520,\t-0.746076442885087900,\t-0.746109734967563050,\t-0.746143025184763940,\t-0.746176313536607180,\t-0.746209600023010070,\t\n-0.746242884643888550,\t-0.746276167399159810,\t-0.746309448288741020,\t-0.746342727312548250,\t-0.746376004470498790,\t-0.746409279762509150,\t-0.746442553188496390,\t-0.746475824748377480,\t\n-0.746509094442068810,\t-0.746542362269487340,\t-0.746575628230550240,\t-0.746608892325173910,\t-0.746642154553275210,\t-0.746675414914771180,\t-0.746708673409578920,\t-0.746741930037614690,\t\n-0.746775184798795570,\t-0.746808437693038840,\t-0.746841688720260690,\t-0.746874937880378290,\t-0.746908185173308590,\t-0.746941430598968450,\t-0.746974674157275030,\t-0.747007915848144630,\t\n-0.747041155671494430,\t-0.747074393627241480,\t-0.747107629715302420,\t-0.747140863935594310,\t-0.747174096288034000,\t-0.747207326772538430,\t-0.747240555389024900,\t-0.747273782137409580,\t\n-0.747307007017610100,\t-0.747340230029542860,\t-0.747373451173125040,\t-0.747406670448273690,\t-0.747439887854905560,\t-0.747473103392937930,\t-0.747506317062287430,\t-0.747539528862871010,\t\n-0.747572738794606060,\t-0.747605946857409000,\t-0.747639153051197100,\t-0.747672357375887330,\t-0.747705559831396640,\t-0.747738760417642310,\t-0.747771959134540860,\t-0.747805155982009360,\t\n-0.747838350959965430,\t-0.747871544068325230,\t-0.747904735307006190,\t-0.747937924675925350,\t-0.747971112175000010,\t-0.748004297804146570,\t-0.748037481563282310,\t-0.748070663452324760,\t\n-0.748103843471190190,\t-0.748137021619796010,\t-0.748170197898059270,\t-0.748203372305897170,\t-0.748236544843226770,\t-0.748269715509964680,\t-0.748302884306028430,\t-0.748336051231335290,\t\n-0.748369216285801660,\t-0.748402379469344960,\t-0.748435540781882350,\t-0.748468700223330900,\t-0.748501857793608010,\t-0.748535013492630070,\t-0.748568167320314730,\t-0.748601319276579140,\t\n-0.748634469361340040,\t-0.748667617574514720,\t-0.748700763916020470,\t-0.748733908385774470,\t-0.748767050983693450,\t-0.748800191709694810,\t-0.748833330563695940,\t-0.748866467545613590,\t\n-0.748899602655364930,\t-0.748932735892867350,\t-0.748965867258037930,\t-0.748998996750794070,\t-0.749032124371052490,\t-0.749065250118730490,\t-0.749098373993745680,\t-0.749131495996014810,\t\n-0.749164616125455040,\t-0.749197734381983780,\t-0.749230850765518100,\t-0.749263965275975720,\t-0.749297077913273050,\t-0.749330188677328040,\t-0.749363297568057200,\t-0.749396404585378150,\t\n-0.749429509729208080,\t-0.749462612999464260,\t-0.749495714396064220,\t-0.749528813918924560,\t-0.749561911567962920,\t-0.749595007343096700,\t-0.749628101244242730,\t-0.749661193271318420,\t\n-0.749694283424241270,\t-0.749727371702928360,\t-0.749760458107297300,\t-0.749793542637264720,\t-0.749826625292748460,\t-0.749859706073665810,\t-0.749892784979933610,\t-0.749925862011469490,\t\n-0.749958937168190620,\t-0.749992010450014850,\t-0.750025081856858680,\t-0.750058151388639740,\t-0.750091219045275760,\t-0.750124284826683470,\t-0.750157348732780500,\t-0.750190410763484140,\t\n-0.750223470918711670,\t-0.750256529198380930,\t-0.750289585602408550,\t-0.750322640130712150,\t-0.750355692783209460,\t-0.750388743559817220,\t-0.750421792460453150,\t-0.750454839485034660,\t\n-0.750487884633478930,\t-0.750520927905703910,\t-0.750553969301626210,\t-0.750587008821163910,\t-0.750620046464233860,\t-0.750653082230753550,\t-0.750686116120640730,\t-0.750719148133812460,\t\n-0.750752178270186700,\t-0.750785206529680060,\t-0.750818232912210610,\t-0.750851257417695650,\t-0.750884280046052450,\t-0.750917300797198430,\t-0.750950319671051190,\t-0.750983336667528150,\t\n-0.751016351786547020,\t-0.751049365028024880,\t-0.751082376391879250,\t-0.751115385878027840,\t-0.751148393486387730,\t-0.751181399216876770,\t-0.751214403069412230,\t-0.751247405043911960,\t\n-0.751280405140292820,\t-0.751313403358472740,\t-0.751346399698369470,\t-0.751379394159899850,\t-0.751412386742981830,\t-0.751445377447532700,\t-0.751478366273470310,\t-0.751511353220712160,\t\n-0.751544338289175330,\t-0.751577321478777760,\t-0.751610302789437080,\t-0.751643282221070460,\t-0.751676259773595530,\t-0.751709235446930020,\t-0.751742209240991330,\t-0.751775181155697410,\t\n-0.751808151190965330,\t-0.751841119346712940,\t-0.751874085622857850,\t-0.751907050019317460,\t-0.751940012536009280,\t-0.751972973172851170,\t-0.752005931929760840,\t-0.752038888806655480,\t\n-0.752071843803452820,\t-0.752104796920070930,\t-0.752137748156426640,\t-0.752170697512438040,\t-0.752203644988022720,\t-0.752236590583098220,\t-0.752269534297582590,\t-0.752302476131392780,\t\n-0.752335416084446870,\t-0.752368354156662590,\t-0.752401290347957220,\t-0.752434224658248610,\t-0.752467157087454490,\t-0.752500087635492370,\t-0.752533016302280310,\t-0.752565943087735610,\t\n-0.752598867991776110,\t-0.752631791014319320,\t-0.752664712155282970,\t-0.752697631414584900,\t-0.752730548792142740,\t-0.752763464287874440,\t-0.752796377901697290,\t-0.752829289633529020,\t\n-0.752862199483287920,\t-0.752895107450891050,\t-0.752928013536256380,\t-0.752960917739301740,\t-0.752993820059944750,\t-0.753026720498103490,\t-0.753059619053695120,\t-0.753092515726637710,\t\n-0.753125410516849450,\t-0.753158303424247280,\t-0.753191194448749270,\t-0.753224083590273370,\t-0.753256970848737440,\t-0.753289856224058860,\t-0.753322739716155710,\t-0.753355621324945930,\t\n-0.753388501050346830,\t-0.753421378892276450,\t-0.753454254850652650,\t-0.753487128925393160,\t-0.753520001116416150,\t-0.753552871423638910,\t-0.753585739846979520,\t-0.753618606386355920,\t\n-0.753651471041685620,\t-0.753684333812886690,\t-0.753717194699876750,\t-0.753750053702573970,\t-0.753782910820896320,\t-0.753815766054761080,\t-0.753848619404086540,\t-0.753881470868790540,\t\n-0.753914320448790700,\t-0.753947168144005090,\t-0.753980013954351440,\t-0.754012857879748140,\t-0.754045699920112390,\t-0.754078540075362350,\t-0.754111378345416310,\t-0.754144214730191440,\t\n-0.754177049229606160,\t-0.754209881843578180,\t-0.754242712572025460,\t-0.754275541414866300,\t-0.754308368372017980,\t-0.754341193443398780,\t-0.754374016628926890,\t-0.754406837928519590,\t\n-0.754439657342095280,\t-0.754472474869571700,\t-0.754505290510867120,\t-0.754538104265899510,\t-0.754570916134586380,\t-0.754603726116846120,\t-0.754636534212596350,\t-0.754669340421755260,\t\n-0.754702144744240800,\t-0.754734947179971030,\t-0.754767747728864120,\t-0.754800546390837600,\t-0.754833343165809630,\t-0.754866138053698620,\t-0.754898931054422070,\t-0.754931722167898060,\t\n-0.754964511394044860,\t-0.754997298732780320,\t-0.755030084184022840,\t-0.755062867747689830,\t-0.755095649423699670,\t-0.755128429211970760,\t-0.755161207112420410,\t-0.755193983124966990,\t\n-0.755226757249528700,\t-0.755259529486023710,\t-0.755292299834369740,\t-0.755325068294484980,\t-0.755357834866287710,\t-0.755390599549695670,\t-0.755423362344627150,\t-0.755456123251000200,\t\n-0.755488882268732900,\t-0.755521639397743750,\t-0.755554394637950160,\t-0.755587147989270620,\t-0.755619899451623560,\t-0.755652649024926350,\t-0.755685396709097510,\t-0.755718142504055330,\t\n-0.755750886409717660,\t-0.755783628426003110,\t-0.755816368552829190,\t-0.755849106790114300,\t-0.755881843137776950,\t-0.755914577595734770,\t-0.755947310163906150,\t-0.755980040842209160,\t\n-0.756012769630562410,\t-0.756045496528883530,\t-0.756078221537090810,\t-0.756110944655102870,\t-0.756143665882837210,\t-0.756176385220212350,\t-0.756209102667146690,\t-0.756241818223558180,\t\n-0.756274531889365440,\t-0.756307243664485980,\t-0.756339953548838540,\t-0.756372661542341510,\t-0.756405367644912510,\t-0.756438071856470050,\t-0.756470774176932430,\t-0.756503474606217810,\t\n-0.756536173144244820,\t-0.756568869790931190,\t-0.756601564546195650,\t-0.756634257409955930,\t-0.756666948382130560,\t-0.756699637462637800,\t-0.756732324651395950,\t-0.756765009948323520,\t\n-0.756797693353338240,\t-0.756830374866358850,\t-0.756863054487303840,\t-0.756895732216090740,\t-0.756928408052638390,\t-0.756961081996865070,\t-0.756993754048689070,\t-0.757026424208028900,\t\n-0.757059092474802410,\t-0.757091758848928100,\t-0.757124423330324810,\t-0.757157085918910070,\t-0.757189746614602700,\t-0.757222405417320890,\t-0.757255062326983470,\t-0.757287717343507970,\t\n-0.757320370466813220,\t-0.757353021696817840,\t-0.757385671033439680,\t-0.757418318476597240,\t-0.757450964026209150,\t-0.757483607682193470,\t-0.757516249444469160,\t-0.757548889312953940,\t\n-0.757581527287566450,\t-0.757614163368225510,\t-0.757646797554848870,\t-0.757679429847355150,\t-0.757712060245662840,\t-0.757744688749690480,\t-0.757777315359356660,\t-0.757809940074579250,\t\n-0.757842562895276960,\t-0.757875183821368650,\t-0.757907802852771930,\t-0.757940419989405870,\t-0.757973035231188640,\t-0.758005648578039090,\t-0.758038260029875290,\t-0.758070869586615740,\t\n-0.758103477248179280,\t-0.758136083014483870,\t-0.758168686885448250,\t-0.758201288860990920,\t-0.758233888941030390,\t-0.758266487125485390,\t-0.758299083414273880,\t-0.758331677807314700,\t\n-0.758364270304526580,\t-0.758396860905827470,\t-0.758429449611136340,\t-0.758462036420371470,\t-0.758494621333451470,\t-0.758527204350295300,\t-0.758559785470820810,\t-0.758592364694947060,\t\n-0.758624942022592230,\t-0.758657517453675050,\t-0.758690090988114020,\t-0.758722662625827770,\t-0.758755232366735140,\t-0.758787800210754090,\t-0.758820366157803680,\t-0.758852930207802530,\t\n-0.758885492360668820,\t-0.758918052616321390,\t-0.758950610974678750,\t-0.758983167435659630,\t-0.759015721999182880,\t-0.759048274665166560,\t-0.759080825433529500,\t-0.759113374304190680,\t\n-0.759145921277068150,\t-0.759178466352080860,\t-0.759211009529147330,\t-0.759243550808186620,\t-0.759276090189116790,\t-0.759308627671856580,\t-0.759341163256325280,\t-0.759373696942440720,\t\n-0.759406228730121760,\t-0.759438758619287450,\t-0.759471286609856080,\t-0.759503812701746940,\t-0.759536336894877760,\t-0.759568859189167940,\t-0.759601379584536220,\t-0.759633898080900650,\t\n-0.759666414678180520,\t-0.759698929376294240,\t-0.759731442175160530,\t-0.759763953074698680,\t-0.759796462074826650,\t-0.759828969175463610,\t-0.759861474376527960,\t-0.759893977677938650,\t\n-0.759926479079614300,\t-0.759958978581473880,\t-0.759991476183436210,\t-0.760023971885419590,\t-0.760056465687343090,\t-0.760088957589125650,\t-0.760121447590685450,\t-0.760153935691941780,\t\n-0.760186421892813270,\t-0.760218906193218640,\t-0.760251388593077060,\t-0.760283869092306720,\t-0.760316347690826680,\t-0.760348824388556110,\t-0.760381299185413080,\t-0.760413772081316890,\t\n-0.760446243076186250,\t-0.760478712169940340,\t-0.760511179362497240,\t-0.760543644653776330,\t-0.760576108043696460,\t-0.760608569532176150,\t-0.760641029119134340,\t-0.760673486804489980,\t\n-0.760705942588161930,\t-0.760738396470069360,\t-0.760770848450130430,\t-0.760803298528264450,\t-0.760835746704390360,\t-0.760868192978426780,\t-0.760900637350292670,\t-0.760933079819906990,\t\n-0.760965520387188450,\t-0.760997959052056580,\t-0.761030395814429440,\t-0.761062830674226310,\t-0.761095263631366480,\t-0.761127694685768130,\t-0.761160123837350540,\t-0.761192551086032680,\t\n-0.761224976431733700,\t-0.761257399874372020,\t-0.761289821413866810,\t-0.761322241050137350,\t-0.761354658783101930,\t-0.761387074612679960,\t-0.761419488538790270,\t-0.761451900561351810,\t\n-0.761484310680283990,\t-0.761516718895505100,\t-0.761549125206934300,\t-0.761581529614490990,\t-0.761613932118093690,\t-0.761646332717661470,\t-0.761678731413113490,\t-0.761711128204368590,\t\n-0.761743523091346190,\t-0.761775916073964670,\t-0.761808307152143650,\t-0.761840696325801650,\t-0.761873083594857840,\t-0.761905468959231390,\t-0.761937852418841270,\t-0.761970233973606750,\t\n-0.762002613623446350,\t-0.762034991368279350,\t-0.762067367208025260,\t-0.762099741142602480,\t-0.762132113171930300,\t-0.762164483295927900,\t-0.762196851514514220,\t-0.762229217827608770,\t\n-0.762261582235129960,\t-0.762293944736997080,\t-0.762326305333129730,\t-0.762358664023446320,\t-0.762391020807866250,\t-0.762423375686308690,\t-0.762455728658692930,\t-0.762488079724937600,\t\n-0.762520428884961960,\t-0.762552776138685550,\t-0.762585121486026970,\t-0.762617464926905630,\t-0.762649806461240590,\t-0.762682146088951020,\t-0.762714483809956320,\t-0.762746819624175230,\t\n-0.762779153531527030,\t-0.762811485531931230,\t-0.762843815625306450,\t-0.762876143811572090,\t-0.762908470090647440,\t-0.762940794462451550,\t-0.762973116926904060,\t-0.763005437483923350,\t\n-0.763037756133429170,\t-0.763070072875340790,\t-0.763102387709576950,\t-0.763134700636057260,\t-0.763167011654700690,\t-0.763199320765426960,\t-0.763231627968154580,\t-0.763263933262803170,\t\n-0.763296236649292140,\t-0.763328538127540310,\t-0.763360837697467210,\t-0.763393135358991890,\t-0.763425431112033760,\t-0.763457724956512320,\t-0.763490016892346300,\t-0.763522306919455220,\t\n-0.763554595037758690,\t-0.763586881247175440,\t-0.763619165547624880,\t-0.763651447939026510,\t-0.763683728421299390,\t-0.763716006994363370,\t-0.763748283658136960,\t-0.763780558412540110,\t\n-0.763812831257491660,\t-0.763845102192911130,\t-0.763877371218717790,\t-0.763909638334831050,\t-0.763941903541170530,\t-0.763974166837654840,\t-0.764006428224203840,\t-0.764038687700737020,\t\n-0.764070945267173230,\t-0.764103200923432090,\t-0.764135454669432890,\t-0.764167706505095130,\t-0.764199956430338330,\t-0.764232204445081330,\t-0.764264450549243860,\t-0.764296694742745530,\t\n-0.764328937025505200,\t-0.764361177397442580,\t-0.764393415858476870,\t-0.764425652408528000,\t-0.764457887047514720,\t-0.764490119775356750,\t-0.764522350591973710,\t-0.764554579497284560,\t\n-0.764586806491208910,\t-0.764619031573666290,\t-0.764651254744576070,\t-0.764683476003858000,\t-0.764715695351430910,\t-0.764747912787214550,\t-0.764780128311128850,\t-0.764812341923092440,\t\n-0.764844553623025170,\t-0.764876763410846540,\t-0.764908971286475950,\t-0.764941177249833350,\t-0.764973381300837360,\t-0.765005583439408050,\t-0.765037783665465040,\t-0.765069981978927280,\t\n-0.765102178379714500,\t-0.765134372867746330,\t-0.765166565442942480,\t-0.765198756105221920,\t-0.765230944854504490,\t-0.765263131690710030,\t-0.765295316613757490,\t-0.765327499623566500,\t\n-0.765359680720056890,\t-0.765391859903148060,\t-0.765424037172759860,\t-0.765456212528811240,\t-0.765488385971222150,\t-0.765520557499912320,\t-0.765552727114800820,\t-0.765584894815807600,\t\n-0.765617060602852060,\t-0.765649224475853820,\t-0.765681386434732940,\t-0.765713546479408150,\t-0.765745704609799960,\t-0.765777860825827110,\t-0.765810015127409540,\t-0.765842167514466990,\t\n-0.765874317986919070,\t-0.765906466544685640,\t-0.765938613187685750,\t-0.765970757915839240,\t-0.766002900729066290,\t-0.766035041627285640,\t-0.766067180610417450,\t-0.766099317678381350,\t\n-0.766131452831096960,\t-0.766163586068484110,\t-0.766195717390462110,\t-0.766227846796950770,\t-0.766259974287870180,\t-0.766292099863139290,\t-0.766324223522678150,\t-0.766356345266406390,\t\n-0.766388465094244190,\t-0.766420583006110490,\t-0.766452699001925360,\t-0.766484813081608760,\t-0.766516925245079750,\t-0.766549035492258500,\t-0.766581143823064640,\t-0.766613250237418000,\t\n-0.766645354735238430,\t-0.766677457316445210,\t-0.766709557980958410,\t-0.766741656728697870,\t-0.766773753559582990,\t-0.766805848473533720,\t-0.766837941470469800,\t-0.766870032550311050,\t\n-0.766902121712977560,\t-0.766934208958388370,\t-0.766966294286463680,\t-0.766998377697123650,\t-0.767030459190287230,\t-0.767062538765874820,\t-0.767094616423805940,\t-0.767126692164000870,\t\n-0.767158765986378780,\t-0.767190837890859730,\t-0.767222907877363910,\t-0.767254975945810600,\t-0.767287042096119750,\t-0.767319106328211320,\t-0.767351168642005140,\t-0.767383229037421290,\t\n-0.767415287514379150,\t-0.767447344072798690,\t-0.767479398712600290,\t-0.767511451433703030,\t-0.767543502236027080,\t-0.767575551119492490,\t-0.767607598084018910,\t-0.767639643129526710,\t\n-0.767671686255935070,\t-0.767703727463164620,\t-0.767735766751134420,\t-0.767767804119764860,\t-0.767799839568975790,\t-0.767831873098687060,\t-0.767863904708819050,\t-0.767895934399290820,\t\n-0.767927962170022900,\t-0.767959988020935350,\t-0.767992011951947550,\t-0.768024033962979690,\t-0.768056054053951720,\t-0.768088072224783590,\t-0.768120088475395590,\t-0.768152102805707120,\t\n-0.768184115215638450,\t-0.768216125705109660,\t-0.768248134274040370,\t-0.768280140922350640,\t-0.768312145649960640,\t-0.768344148456790550,\t-0.768376149342759770,\t-0.768408148307788700,\t\n-0.768440145351797390,\t-0.768472140474705580,\t-0.768504133676433330,\t-0.768536124956900820,\t-0.768568114316027890,\t-0.768600101753735050,\t-0.768632087269941700,\t-0.768664070864568010,\t\n-0.768696052537534480,\t-0.768728032288760630,\t-0.768760010118166530,\t-0.768791986025672560,\t-0.768823960011198570,\t-0.768855932074664960,\t-0.768887902215991240,\t-0.768919870435098020,\t\n-0.768951836731904810,\t-0.768983801106332130,\t-0.769015763558299810,\t-0.769047724087728150,\t-0.769079682694537530,\t-0.769111639378647350,\t-0.769143594139978020,\t-0.769175546978450030,\t\n-0.769207497893982910,\t-0.769239446886497040,\t-0.769271393955912600,\t-0.769303339102149540,\t-0.769335282325128600,\t-0.769367223624769060,\t-0.769399163000991430,\t-0.769431100453716210,\t\n-0.769463035982863030,\t-0.769494969588352170,\t-0.769526901270103920,\t-0.769558831028038680,\t-0.769590758862076060,\t-0.769622684772136580,\t-0.769654608758140730,\t-0.769686530820007930,\t\n-0.769718450957658900,\t-0.769750369171013800,\t-0.769782285459992720,\t-0.769814199824516150,\t-0.769846112264503830,\t-0.769878022779876270,\t-0.769909931370553970,\t-0.769941838036456440,\t\n-0.769973742777504410,\t-0.770005645593617950,\t-0.770037546484717450,\t-0.770069445450723310,\t-0.770101342491555260,\t-0.770133237607133920,\t-0.770165130797379800,\t-0.770197022062212520,\t\n-0.770228911401552590,\t-0.770260798815320500,\t-0.770292684303436670,\t-0.770324567865820820,\t-0.770356449502393570,\t-0.770388329213075540,\t-0.770420206997786350,\t-0.770452082856446620,\t\n-0.770483956788976740,\t-0.770515828795296900,\t-0.770547698875327810,\t-0.770579567028989110,\t-0.770611433256201630,\t-0.770643297556885760,\t-0.770675159930961360,\t-0.770707020378349150,\t\n-0.770738878898969300,\t-0.770770735492742330,\t-0.770802590159588740,\t-0.770834442899428370,\t-0.770866293712182180,\t-0.770898142597770120,\t-0.770929989556112580,\t-0.770961834587130080,\t\n-0.770993677690742900,\t-0.771025518866871980,\t-0.771057358115436850,\t-0.771089195436358340,\t-0.771121030829557190,\t-0.771152864294953220,\t-0.771184695832466960,\t-0.771216525442019020,\t\n-0.771248353123529800,\t-0.771280178876919910,\t-0.771312002702109420,\t-0.771343824599018730,\t-0.771375644567568910,\t-0.771407462607679670,\t-0.771439278719271760,\t-0.771471092902265680,\t\n-0.771502905156582040,\t-0.771534715482140920,\t-0.771566523878863040,\t-0.771598330346669140,\t-0.771630134885479050,\t-0.771661937495213720,\t-0.771693738175793560,\t-0.771725536927138970,\t\n-0.771757333749170880,\t-0.771789128641809150,\t-0.771820921604974620,\t-0.771852712638588010,\t-0.771884501742569400,\t-0.771916288916839500,\t-0.771948074161318940,\t-0.771979857475928120,\t\n-0.772011638860587990,\t-0.772043418315218390,\t-0.772075195839740270,\t-0.772106971434074470,\t-0.772138745098141070,\t-0.772170516831860660,\t-0.772202286635154000,\t-0.772234054507941910,\t\n-0.772265820450144470,\t-0.772297584461682400,\t-0.772329346542476650,\t-0.772361106692447290,\t-0.772392864911515150,\t-0.772424621199600760,\t-0.772456375556624940,\t-0.772488127982508430,\t\n-0.772519878477171300,\t-0.772551627040534480,\t-0.772583373672518950,\t-0.772615118373044530,\t-0.772646861142032400,\t-0.772678601979403190,\t-0.772710340885077400,\t-0.772742077858976080,\t\n-0.772773812901019320,\t-0.772805546011128160,\t-0.772837277189223020,\t-0.772869006435224600,\t-0.772900733749053660,\t-0.772932459130630910,\t-0.772964182579877310,\t-0.772995904096712930,\t\n-0.773027623681058820,\t-0.773059341332835940,\t-0.773091057051964350,\t-0.773122770838365230,\t-0.773154482691959080,\t-0.773186192612666860,\t-0.773217900600409290,\t-0.773249606655106780,\t\n-0.773281310776680160,\t-0.773313012965050620,\t-0.773344713220138310,\t-0.773376411541864210,\t-0.773408107930149020,\t-0.773439802384913830,\t-0.773471494906078920,\t-0.773503185493565230,\t\n-0.773534874147293830,\t-0.773566560867185000,\t-0.773598245653159710,\t-0.773629928505138900,\t-0.773661609423043180,\t-0.773693288406793860,\t-0.773724965456310980,\t-0.773756640571515610,\t\n-0.773788313752328930,\t-0.773819984998671220,\t-0.773851654310463540,\t-0.773883321687626750,\t-0.773914987130081670,\t-0.773946650637749260,\t-0.773978312210550130,\t-0.774009971848405140,\t\n-0.774041629551235450,\t-0.774073285318961470,\t-0.774104939151504360,\t-0.774136591048784740,\t-0.774168241010724010,\t-0.774199889037242350,\t-0.774231535128261040,\t-0.774263179283701140,\t\n-0.774294821503482940,\t-0.774326461787527840,\t-0.774358100135756460,\t-0.774389736548089850,\t-0.774421371024449190,\t-0.774453003564754880,\t-0.774484634168927990,\t-0.774516262836889790,\t\n-0.774547889568560690,\t-0.774579514363861850,\t-0.774611137222714240,\t-0.774642758145038800,\t-0.774674377130756710,\t-0.774705994179788360,\t-0.774737609292055370,\t-0.774769222467478040,\t\n-0.774800833705977740,\t-0.774832443007475220,\t-0.774864050371891660,\t-0.774895655799148320,\t-0.774927259289165500,\t-0.774958860841864490,\t-0.774990460457166690,\t-0.775022058134992360,\t\n-0.775053653875263040,\t-0.775085247677899440,\t-0.775116839542822730,\t-0.775148429469954330,\t-0.775180017459214500,\t-0.775211603510524540,\t-0.775243187623805950,\t-0.775274769798979140,\t\n-0.775306350035965260,\t-0.775337928334685620,\t-0.775369504695061500,\t-0.775401079117013170,\t-0.775432651600462260,\t-0.775464222145329950,\t-0.775495790751536850,\t-0.775527357419004250,\t\n-0.775558922147653320,\t-0.775590484937405010,\t-0.775622045788180730,\t-0.775653604699901080,\t-0.775685161672487470,\t-0.775716716705861180,\t-0.775748269799942940,\t-0.775779820954653920,\t\n-0.775811370169915300,\t-0.775842917445648370,\t-0.775874462781774410,\t-0.775906006178213930,\t-0.775937547634888540,\t-0.775969087151719530,\t-0.776000624728627410,\t-0.776032160365533800,\t\n-0.776063694062359870,\t-0.776095225819026900,\t-0.776126755635455630,\t-0.776158283511567460,\t-0.776189809447283770,\t-0.776221333442525420,\t-0.776252855497213680,\t-0.776284375611269840,\t\n-0.776315893784614960,\t-0.776347410017170670,\t-0.776378924308857580,\t-0.776410436659597190,\t-0.776441947069311020,\t-0.776473455537919690,\t-0.776504962065344690,\t-0.776536466651507330,\t\n-0.776567969296328760,\t-0.776599469999730510,\t-0.776630968761633400,\t-0.776662465581959060,\t-0.776693960460628330,\t-0.776725453397562720,\t-0.776756944392683390,\t-0.776788433445911750,\t\n-0.776819920557169310,\t-0.776851405726376790,\t-0.776882888953455810,\t-0.776914370238327770,\t-0.776945849580913620,\t-0.776977326981134750,\t-0.777008802438912680,\t-0.777040275954168580,\t\n-0.777071747526824060,\t-0.777103217156799860,\t-0.777134684844017600,\t-0.777166150588398890,\t-0.777197614389864680,\t-0.777229076248336260,\t-0.777260536163735250,\t-0.777291994135983160,\t\n-0.777323450165000820,\t-0.777354904250709740,\t-0.777386356393031770,\t-0.777417806591887640,\t-0.777449254847198960,\t-0.777480701158887230,\t-0.777512145526873640,\t-0.777543587951080030,\t\n-0.777575028431427120,\t-0.777606466967836750,\t-0.777637903560230330,\t-0.777669338208529020,\t-0.777700770912654220,\t-0.777732201672527660,\t-0.777763630488070400,\t-0.777795057359204510,\t\n-0.777826482285850610,\t-0.777857905267930860,\t-0.777889326305366000,\t-0.777920745398077870,\t-0.777952162545987870,\t-0.777983577749017390,\t-0.778014991007088370,\t-0.778046402320121460,\t\n-0.778077811688038580,\t-0.778109219110761470,\t-0.778140624588211090,\t-0.778172028120309060,\t-0.778203429706977090,\t-0.778234829348136480,\t-0.778266227043708960,\t-0.778297622793615700,\t\n-0.778329016597778420,\t-0.778360408456118870,\t-0.778391798368557990,\t-0.778423186335017500,\t-0.778454572355419150,\t-0.778485956429684430,\t-0.778517338557734970,\t-0.778548718739491940,\t\n-0.778580096974877400,\t-0.778611473263812410,\t-0.778642847606218710,\t-0.778674220002017800,\t-0.778705590451131410,\t-0.778736958953481270,\t-0.778768325508988560,\t-0.778799690117574880,\t\n-0.778831052779162420,\t-0.778862413493671910,\t-0.778893772261025410,\t-0.778925129081144530,\t-0.778956483953950780,\t-0.778987836879366120,\t-0.779019187857311610,\t-0.779050536887709090,\t\n-0.779081883970480500,\t-0.779113229105546920,\t-0.779144572292830300,\t-0.779175913532252240,\t-0.779207252823734710,\t-0.779238590167198760,\t-0.779269925562566250,\t-0.779301259009759330,\t\n-0.779332590508698850,\t-0.779363920059306990,\t-0.779395247661505360,\t-0.779426573315215480,\t-0.779457897020359610,\t-0.779489218776858620,\t-0.779520538584634550,\t-0.779551856443609470,\t\n-0.779583172353704450,\t-0.779614486314841540,\t-0.779645798326942360,\t-0.779677108389928650,\t-0.779708416503722580,\t-0.779739722668245090,\t-0.779771026883418590,\t-0.779802329149164250,\t\n-0.779833629465404020,\t-0.779864927832059850,\t-0.779896224249053250,\t-0.779927518716306500,\t-0.779958811233740560,\t-0.779990101801277590,\t-0.780021390418839670,\t-0.780052677086348070,\t\n-0.780083961803724630,\t-0.780115244570891430,\t-0.780146525387769960,\t-0.780177804254282630,\t-0.780209081170350370,\t-0.780240356135895490,\t-0.780271629150840030,\t-0.780302900215105180,\t\n-0.780334169328612990,\t-0.780365436491285420,\t-0.780396701703044650,\t-0.780427964963811730,\t-0.780459226273508940,\t-0.780490485632058360,\t-0.780521743039381270,\t-0.780552998495399830,\t\n-0.780584252000036010,\t-0.780615503553211410,\t-0.780646753154848330,\t-0.780678000804868160,\t-0.780709246503192960,\t-0.780740490249744900,\t-0.780771732044445390,\t-0.780802971887216480,\t\n-0.780834209777980240,\t-0.780865445716658390,\t-0.780896679703173220,\t-0.780927911737446130,\t-0.780959141819399180,\t-0.780990369948954770,\t-0.781021596126034060,\t-0.781052820350559340,\t\n-0.781084042622452570,\t-0.781115262941636020,\t-0.781146481308031100,\t-0.781177697721559870,\t-0.781208912182144720,\t-0.781240124689706940,\t-0.781271335244168920,\t-0.781302543845452610,\t\n-0.781333750493479860,\t-0.781364955188173060,\t-0.781396157929453490,\t-0.781427358717243670,\t-0.781458557551465650,\t-0.781489754432040940,\t-0.781520949358891940,\t-0.781552142331940480,\t\n-0.781583333351108630,\t-0.781614522416318790,\t-0.781645709527492350,\t-0.781676894684551930,\t-0.781708077887419030,\t-0.781739259136015830,\t-0.781770438430264610,\t-0.781801615770087220,\t\n-0.781832791155406050,\t-0.781863964586142710,\t-0.781895136062219390,\t-0.781926305583558470,\t-0.781957473150081570,\t-0.781988638761710990,\t-0.782019802418368880,\t-0.782050964119977100,\t\n-0.782082123866458370,\t-0.782113281657733860,\t-0.782144437493726310,\t-0.782175591374357880,\t-0.782206743299550200,\t-0.782237893269225660,\t-0.782269041283306320,\t-0.782300187341714690,\t\n-0.782331331444372390,\t-0.782362473591201700,\t-0.782393613782125130,\t-0.782424752017064180,\t-0.782455888295941480,\t-0.782487022618678970,\t-0.782518154985198940,\t-0.782549285395423790,\t\n-0.782580413849275120,\t-0.782611540346675460,\t-0.782642664887547190,\t-0.782673787471811930,\t-0.782704908099392300,\t-0.782736026770210370,\t-0.782767143484188410,\t-0.782798258241248820,\t\n-0.782829371041313230,\t-0.782860481884304350,\t-0.782891590770144470,\t-0.782922697698755330,\t-0.782953802670059540,\t-0.782984905683979160,\t-0.783016006740436810,\t-0.783047105839354110,\t\n-0.783078202980653780,\t-0.783109298164258120,\t-0.783140391390088950,\t-0.783171482658068800,\t-0.783202571968119930,\t-0.783233659320164640,\t-0.783264744714125550,\t-0.783295828149924270,\t\n-0.783326909627483410,\t-0.783357989146725610,\t-0.783389066707572470,\t-0.783420142309946720,\t-0.783451215953770540,\t-0.783482287638966430,\t-0.783513357365456800,\t-0.783544425133163580,\t\n-0.783575490942009510,\t-0.783606554791916430,\t-0.783637616682806960,\t-0.783668676614603490,\t-0.783699734587228300,\t-0.783730790600604020,\t-0.783761844654652600,\t-0.783792896749296420,\t\n-0.783823946884458440,\t-0.783854995060060180,\t-0.783886041276024460,\t-0.783917085532273680,\t-0.783948127828730130,\t-0.783979168165316650,\t-0.784010206541954860,\t-0.784041242958567590,\t\n-0.784072277415077460,\t-0.784103309911406420,\t-0.784134340447477100,\t-0.784165369023211880,\t-0.784196395638533490,\t-0.784227420293363900,\t-0.784258442987625810,\t-0.784289463721241750,\t\n-0.784320482494133890,\t-0.784351499306224720,\t-0.784382514157436870,\t-0.784413527047692740,\t-0.784444537976914940,\t-0.784475546945025640,\t-0.784506553951947460,\t-0.784537558997603130,\t\n-0.784568562081914720,\t-0.784599563204804840,\t-0.784630562366196100,\t-0.784661559566010910,\t-0.784692554804172100,\t-0.784723548080601630,\t-0.784754539395222220,\t-0.784785528747956820,\t\n-0.784816516138727270,\t-0.784847501567456530,\t-0.784878485034066880,\t-0.784909466538481480,\t-0.784940446080621970,\t-0.784971423660411500,\t-0.785002399277772600,\t-0.785033372932627540,\t\n-0.785064344624899050,\t-0.785095314354509630,\t-0.785126282121381910,\t-0.785157247925438840,\t-0.785188211766602250,\t-0.785219173644795210,\t-0.785250133559940560,\t-0.785281091511960240,\t\n-0.785312047500777210,\t-0.785343001526314090,\t-0.785373953588493380,\t-0.785404903687238140,\t-0.785435851822470330,\t-0.785466797994113230,\t-0.785497742202088790,\t-0.785528684446319960,\t\n-0.785559624726729470,\t-0.785590563043239930,\t-0.785621499395774300,\t-0.785652433784254530,\t-0.785683366208603800,\t-0.785714296668744820,\t-0.785745225164599880,\t-0.785776151696091940,\t\n-0.785807076263143500,\t-0.785837998865677400,\t-0.785868919503616590,\t-0.785899838176883250,\t-0.785930754885400320,\t-0.785961669629090750,\t-0.785992582407876730,\t-0.786023493221681190,\t\n-0.786054402070426980,\t-0.786085308954037050,\t-0.786116213872433580,\t-0.786147116825539500,\t-0.786178017813278010,\t-0.786208916835571150,\t-0.786239813892341990,\t-0.786270708983513260,\t\n-0.786301602109007790,\t-0.786332493268748660,\t-0.786363382462657910,\t-0.786394269690658840,\t-0.786425154952674180,\t-0.786456038248626530,\t-0.786486919578438750,\t-0.786517798942033550,\t\n-0.786548676339334010,\t-0.786579551770262950,\t-0.786610425234742780,\t-0.786641296732696560,\t-0.786672166264047350,\t-0.786703033828717420,\t-0.786733899426629970,\t-0.786764763057707710,\t\n-0.786795624721873920,\t-0.786826484419050680,\t-0.786857342149161370,\t-0.786888197912128830,\t-0.786919051707875570,\t-0.786949903536324660,\t-0.786980753397399040,\t-0.787011601291021550,\t\n-0.787042447217115250,\t-0.787073291175602650,\t-0.787104133166406710,\t-0.787134973189450800,\t-0.787165811244657120,\t-0.787196647331949050,\t-0.787227481451249210,\t-0.787258313602480770,\t\n-0.787289143785566800,\t-0.787319972000429580,\t-0.787350798246992830,\t-0.787381622525178740,\t-0.787412444834910690,\t-0.787443265176111410,\t-0.787474083548704070,\t-0.787504899952611750,\t\n-0.787535714387756940,\t-0.787566526854062810,\t-0.787597337351452650,\t-0.787628145879848860,\t-0.787658952439174610,\t-0.787689757029353180,\t-0.787720559650307180,\t-0.787751360301960140,\t\n-0.787782158984234430,\t-0.787812955697053340,\t-0.787843750440340050,\t-0.787874543214017180,\t-0.787905334018008000,\t-0.787936122852235350,\t-0.787966909716622750,\t-0.787997694611092590,\t\n-0.788028477535568150,\t-0.788059258489972940,\t-0.788090037474229230,\t-0.788120814488260320,\t-0.788151589531989490,\t-0.788182362605339690,\t-0.788213133708234200,\t-0.788243902840595640,\t\n-0.788274670002347300,\t-0.788305435193412560,\t-0.788336198413713940,\t-0.788366959663174830,\t-0.788397718941718400,\t-0.788428476249267600,\t-0.788459231585745820,\t-0.788489984951075810,\t\n-0.788520736345181050,\t-0.788551485767984170,\t-0.788582233219408680,\t-0.788612978699377520,\t-0.788643722207813870,\t-0.788674463744641230,\t-0.788705203309782220,\t-0.788735940903160130,\t\n-0.788766676524698450,\t-0.788797410174319920,\t-0.788828141851947720,\t-0.788858871557505230,\t-0.788889599290915510,\t-0.788920325052102190,\t-0.788951048840987660,\t-0.788981770657495530,\t\n-0.789012490501549310,\t-0.789043208373071630,\t-0.789073924271985750,\t-0.789104638198215190,\t-0.789135350151683350,\t-0.789166060132312720,\t-0.789196768140027040,\t-0.789227474174749700,\t\n-0.789258178236403320,\t-0.789288880324911620,\t-0.789319580440197680,\t-0.789350278582184760,\t-0.789380974750796380,\t-0.789411668945955380,\t-0.789442361167585150,\t-0.789473051415609310,\t\n-0.789503739689950580,\t-0.789534425990532470,\t-0.789565110317278270,\t-0.789595792670111370,\t-0.789626473048955280,\t-0.789657151453732610,\t-0.789687827884367200,\t-0.789718502340782450,\t\n-0.789749174822901080,\t-0.789779845330646930,\t-0.789810513863943080,\t-0.789841180422713230,\t-0.789871845006880120,\t-0.789902507616367380,\t-0.789933168251098720,\t-0.789963826910996870,\t\n-0.789994483595985340,\t-0.790025138305987750,\t-0.790055791040927160,\t-0.790086441800727510,\t-0.790117090585311430,\t-0.790147737394602650,\t-0.790178382228524660,\t-0.790209025087000640,\t\n-0.790239665969953880,\t-0.790270304877308090,\t-0.790300941808986470,\t-0.790331576764912840,\t-0.790362209745009920,\t-0.790392840749201800,\t-0.790423469777411290,\t-0.790454096829562030,\t\n-0.790484721905577610,\t-0.790515345005381450,\t-0.790545966128897050,\t-0.790576585276047570,\t-0.790607202446756530,\t-0.790637817640947870,\t-0.790668430858544320,\t-0.790699042099469730,\t\n-0.790729651363647480,\t-0.790760258651001190,\t-0.790790863961454480,\t-0.790821467294930300,\t-0.790852068651352490,\t-0.790882668030644780,\t-0.790913265432730110,\t-0.790943860857532320,\t\n-0.790974454304974820,\t-0.791005045774981540,\t-0.791035635267475330,\t-0.791066222782380040,\t-0.791096808319619370,\t-0.791127391879116510,\t-0.791157973460795190,\t-0.791188553064578910,\t\n-0.791219130690391180,\t-0.791249706338155940,\t-0.791280280007796270,\t-0.791310851699235760,\t-0.791341421412398380,\t-0.791371989147207300,\t-0.791402554903586130,\t-0.791433118681458600,\t\n-0.791463680480748330,\t-0.791494240301379050,\t-0.791524798143274030,\t-0.791555354006356900,\t-0.791585907890551720,\t-0.791616459795781440,\t-0.791647009721970000,\t-0.791677557669041130,\t\n-0.791708103636918570,\t-0.791738647625525480,\t-0.791769189634785820,\t-0.791799729664623310,\t-0.791830267714961340,\t-0.791860803785723650,\t-0.791891337876833970,\t-0.791921869988216010,\t\n-0.791952400119793510,\t-0.791982928271489860,\t-0.792013454443228900,\t-0.792043978634934480,\t-0.792074500846529860,\t-0.792105021077939010,\t-0.792135539329085650,\t-0.792166055599893390,\t\n-0.792196569890286310,\t-0.792227082200187450,\t-0.792257592529521220,\t-0.792288100878210780,\t-0.792318607246179970,\t-0.792349111633352750,\t-0.792379614039652740,\t-0.792410114465003870,\t\n-0.792440612909329540,\t-0.792471109372553610,\t-0.792501603854600220,\t-0.792532096355392570,\t-0.792562586874854590,\t-0.792593075412910240,\t-0.792623561969483140,\t-0.792654046544497450,\t\n-0.792684529137876350,\t-0.792715009749543900,\t-0.792745488379424270,\t-0.792775965027440630,\t-0.792806439693517050,\t-0.792836912377577360,\t-0.792867383079545630,\t-0.792897851799345240,\t\n-0.792928318536900270,\t-0.792958783292134650,\t-0.792989246064971900,\t-0.793019706855335960,\t-0.793050165663150790,\t-0.793080622488340210,\t-0.793111077330828310,\t-0.793141530190538460,\t\n-0.793171981067394840,\t-0.793202429961321510,\t-0.793232876872241750,\t-0.793263321800079860,\t-0.793293764744759770,\t-0.793324205706205100,\t-0.793354644684340250,\t-0.793385081679088610,\t\n-0.793415516690374130,\t-0.793445949718121210,\t-0.793476380762253130,\t-0.793506809822694060,\t-0.793537236899368060,\t-0.793567661992199080,\t-0.793598085101110850,\t-0.793628506226027320,\t\n-0.793658925366872770,\t-0.793689342523570710,\t-0.793719757696045190,\t-0.793750170884220290,\t-0.793780582088020050,\t-0.793810991307368650,\t-0.793841398542189380,\t-0.793871803792406630,\t\n-0.793902207057944790,\t-0.793932608338727030,\t-0.793963007634677750,\t-0.793993404945721020,\t-0.794023800271780660,\t-0.794054193612781180,\t-0.794084584968645870,\t-0.794114974339299450,\t\n-0.794145361724665320,\t-0.794175747124667760,\t-0.794206130539230730,\t-0.794236511968278490,\t-0.794266891411735230,\t-0.794297268869524450,\t-0.794327644341570550,\t-0.794358017827797690,\t\n-0.794388389328129610,\t-0.794418758842490580,\t-0.794449126370804560,\t-0.794479491912995830,\t-0.794509855468988560,\t-0.794540217038706480,\t-0.794570576622073750,\t-0.794600934219014900,\t\n-0.794631289829453410,\t-0.794661643453313690,\t-0.794691995090519910,\t-0.794722344740996340,\t-0.794752692404666730,\t-0.794783038081455340,\t-0.794813381771286690,\t-0.794843723474084270,\t\n-0.794874063189772500,\t-0.794904400918275630,\t-0.794934736659517640,\t-0.794965070413423240,\t-0.794995402179915820,\t-0.795025731958919900,\t-0.795056059750359980,\t-0.795086385554159560,\t\n-0.795116709370243150,\t-0.795147031198535030,\t-0.795177351038959260,\t-0.795207668891440460,\t-0.795237984755902240,\t-0.795268298632269000,\t-0.795298610520465350,\t-0.795328920420414810,\t\n-0.795359228332041980,\t-0.795389534255271150,\t-0.795419838190026710,\t-0.795450140136232390,\t-0.795480440093812800,\t-0.795510738062692350,\t-0.795541034042794750,\t-0.795571328034044510,\t\n-0.795601620036366030,\t-0.795631910049683480,\t-0.795662198073921470,\t-0.795692484109003620,\t-0.795722768154854650,\t-0.795753050211398970,\t-0.795783330278560410,\t-0.795813608356263470,\t\n-0.795843884444432550,\t-0.795874158542991930,\t-0.795904430651866220,\t-0.795934700770979160,\t-0.795964968900255590,\t-0.795995235039619220,\t-0.796025499188994900,\t-0.796055761348306800,\t\n-0.796086021517479310,\t-0.796116279696436950,\t-0.796146535885103760,\t-0.796176790083404140,\t-0.796207042291262820,\t-0.796237292508603640,\t-0.796267540735351220,\t-0.796297786971429940,\t\n-0.796328031216764210,\t-0.796358273471278740,\t-0.796388513734897160,\t-0.796418752007544420,\t-0.796448988289145120,\t-0.796479222579623000,\t-0.796509454878902790,\t-0.796539685186908990,\t\n-0.796569913503566210,\t-0.796600139828798400,\t-0.796630364162530190,\t-0.796660586504686410,\t-0.796690806855190890,\t-0.796721025213968370,\t-0.796751241580943240,\t-0.796781455956040000,\t\n-0.796811668339183380,\t-0.796841878730297330,\t-0.796872087129306680,\t-0.796902293536135950,\t-0.796932497950709310,\t-0.796962700372951360,\t-0.796992900802786730,\t-0.797023099240139810,\t\n-0.797053295684935330,\t-0.797083490137097450,\t-0.797113682596551130,\t-0.797143873063220210,\t-0.797174061537029740,\t-0.797204248017904020,\t-0.797234432505767750,\t-0.797264615000545680,\t\n-0.797294795502161760,\t-0.797324974010540810,\t-0.797355150525607790,\t-0.797385325047286540,\t-0.797415497575502010,\t-0.797445668110178700,\t-0.797475836651241330,\t-0.797506003198614530,\t\n-0.797536167752222580,\t-0.797566330311990090,\t-0.797596490877842010,\t-0.797626649449702520,\t-0.797656806027496450,\t-0.797686960611148300,\t-0.797717113200583030,\t-0.797747263795724690,\t\n-0.797777412396498130,\t-0.797807559002828400,\t-0.797837703614639460,\t-0.797867846231856360,\t-0.797897986854403500,\t-0.797928125482205820,\t-0.797958262115187940,\t-0.797988396753274270,\t\n-0.798018529396389510,\t-0.798048660044458740,\t-0.798078788697406120,\t-0.798108915355156380,\t-0.798139040017634470,\t-0.798169162684764900,\t-0.798199283356472720,\t-0.798229402032682110,\t\n-0.798259518713317910,\t-0.798289633398305170,\t-0.798319746087568170,\t-0.798349856781031760,\t-0.798379965478620670,\t-0.798410072180260060,\t-0.798440176885873880,\t-0.798470279595387300,\t\n-0.798500380308725280,\t-0.798530479025811980,\t-0.798560575746572580,\t-0.798590670470931690,\t-0.798620763198814140,\t-0.798650853930144900,\t-0.798680942664848350,\t-0.798711029402849440,\t\n-0.798741114144073120,\t-0.798771196888443890,\t-0.798801277635886600,\t-0.798831356386326070,\t-0.798861433139687160,\t-0.798891507895895030,\t-0.798921580654873730,\t-0.798951651416548890,\t\n-0.798981720180844570,\t-0.799011786947685930,\t-0.799041851716997820,\t-0.799071914488705070,\t-0.799101975262732860,\t-0.799132034039005460,\t-0.799162090817447930,\t-0.799192145597985460,\t\n-0.799222198380542430,\t-0.799252249165043780,\t-0.799282297951414590,\t-0.799312344739579570,\t-0.799342389529464010,\t-0.799372432320992200,\t-0.799402473114089300,\t-0.799432511908680480,\t\n-0.799462548704690130,\t-0.799492583502043440,\t-0.799522616300665230,\t-0.799552647100480800,\t-0.799582675901414520,\t-0.799612702703391460,\t-0.799642727506336910,\t-0.799672750310175370,\t\n-0.799702771114831900,\t-0.799732789920231560,\t-0.799762806726299180,\t-0.799792821532960050,\t-0.799822834340138570,\t-0.799852845147760010,\t-0.799882853955749650,\t-0.799912860764031900,\t\n-0.799942865572531910,\t-0.799972868381174870,\t-0.800002869189885610,\t-0.800032867998589410,\t-0.800062864807210780,\t-0.800092859615675000,\t-0.800122852423907460,\t-0.800152843231832330,\t\n-0.800182832039375240,\t-0.800212818846461000,\t-0.800242803653014920,\t-0.800272786458961720,\t-0.800302767264226440,\t-0.800332746068734500,\t-0.800362722872410500,\t-0.800392697675179620,\t\n-0.800422670476967020,\t-0.800452641277697770,\t-0.800482610077297150,\t-0.800512576875689770,\t-0.800542541672800920,\t-0.800572504468556100,\t-0.800602465262879590,\t-0.800632424055697010,\t\n-0.800662380846933310,\t-0.800692335636513760,\t-0.800722288424363550,\t-0.800752239210407280,\t-0.800782187994570790,\t-0.800812134776778590,\t-0.800842079556955970,\t-0.800872022335028190,\t\n-0.800901963110920320,\t-0.800931901884557870,\t-0.800961838655865450,\t-0.800991773424768240,\t-0.801021706191192060,\t-0.801051636955061210,\t-0.801081565716301400,\t-0.801111492474837590,\t\n-0.801141417230595070,\t-0.801171339983499210,\t-0.801201260733474860,\t-0.801231179480447200,\t-0.801261096224341940,\t-0.801291010965083710,\t-0.801320923702597890,\t-0.801350834436809880,\t\n-0.801380743167644960,\t-0.801410649895027860,\t-0.801440554618884190,\t-0.801470457339139350,\t-0.801500358055718180,\t-0.801530256768546170,\t-0.801560153477548390,\t-0.801590048182650340,\t\n-0.801619940883777300,\t-0.801649831580854230,\t-0.801679720273806520,\t-0.801709606962559880,\t-0.801739491647038840,\t-0.801769374327169220,\t-0.801799255002876080,\t-0.801829133674084700,\t\n-0.801859010340720930,\t-0.801888885002709270,\t-0.801918757659975450,\t-0.801948628312444960,\t-0.801978496960042640,\t-0.802008363602694010,\t-0.802038228240324560,\t-0.802068090872859800,\t\n-0.802097951500224560,\t-0.802127810122344350,\t-0.802157666739145010,\t-0.802187521350551160,\t-0.802217373956488510,\t-0.802247224556882470,\t-0.802277073151658300,\t-0.802306919740741750,\t\n-0.802336764324057650,\t-0.802366606901531610,\t-0.802396447473089360,\t-0.802426286038655730,\t-0.802456122598156350,\t-0.802485957151516600,\t-0.802515789698662110,\t-0.802545620239518250,\t\n-0.802575448774010210,\t-0.802605275302063710,\t-0.802635099823603810,\t-0.802664922338556130,\t-0.802694742846846170,\t-0.802724561348399420,\t-0.802754377843141410,\t-0.802784192330997290,\t\n-0.802814004811892580,\t-0.802843815285753220,\t-0.802873623752504040,\t-0.802903430212070780,\t-0.802933234664378940,\t-0.802963037109354020,\t-0.802992837546921740,\t-0.803022635977007180,\t\n-0.803052432399535940,\t-0.803082226814433970,\t-0.803112019221626120,\t-0.803141809621038320,\t-0.803171598012595860,\t-0.803201384396224680,\t-0.803231168771849860,\t-0.803260951139397110,\t\n-0.803290731498792150,\t-0.803320509849960170,\t-0.803350286192826890,\t-0.803380060527317920,\t-0.803409832853358760,\t-0.803439603170875370,\t-0.803469371479792580,\t-0.803499137780036450,\t\n-0.803528902071532710,\t-0.803558664354206530,\t-0.803588424627983630,\t-0.803618182892789630,\t-0.803647939148550260,\t-0.803677693395191130,\t-0.803707445632637630,\t-0.803737195860815490,\t\n-0.803766944079650660,\t-0.803796690289068310,\t-0.803826434488994050,\t-0.803856176679353720,\t-0.803885916860073270,\t-0.803915655031077760,\t-0.803945391192293140,\t-0.803975125343645350,\t\n-0.804004857485059340,\t-0.804034587616461290,\t-0.804064315737776700,\t-0.804094041848931410,\t-0.804123765949851130,\t-0.804153488040461270,\t-0.804183208120687780,\t-0.804212926190456370,\t\n-0.804242642249692440,\t-0.804272356298321940,\t-0.804302068336270600,\t-0.804331778363463920,\t-0.804361486379828180,\t-0.804391192385288440,\t-0.804420896379770990,\t-0.804450598363200990,\t\n-0.804480298335504610,\t-0.804509996296607350,\t-0.804539692246435180,\t-0.804569386184914030,\t-0.804599078111969180,\t-0.804628768027526590,\t-0.804658455931512310,\t-0.804688141823851620,\t\n-0.804717825704470700,\t-0.804747507573295050,\t-0.804777187430250730,\t-0.804806865275263790,\t-0.804836541108259310,\t-0.804866214929163440,\t-0.804895886737902360,\t-0.804925556534401340,\t\n-0.804955224318586350,\t-0.804984890090383320,\t-0.805014553849718320,\t-0.805044215596516730,\t-0.805073875330704510,\t-0.805103533052207940,\t-0.805133188760952300,\t-0.805162842456863650,\t\n-0.805192494139867820,\t-0.805222143809890880,\t-0.805251791466858770,\t-0.805281437110697000,\t-0.805311080741331510,\t-0.805340722358688700,\t-0.805370361962693740,\t-0.805399999553272910,\t\n-0.805429635130352040,\t-0.805459268693857090,\t-0.805488900243714220,\t-0.805518529779848950,\t-0.805548157302187540,\t-0.805577782810655510,\t-0.805607406305178910,\t-0.805637027785683910,\t\n-0.805666647252096360,\t-0.805696264704342300,\t-0.805725880142347470,\t-0.805755493566037930,\t-0.805785104975339840,\t-0.805814714370178710,\t-0.805844321750480930,\t-0.805873927116172230,\t\n-0.805903530467178770,\t-0.805933131803426630,\t-0.805962731124841510,\t-0.805992328431349600,\t-0.806021923722877070,\t-0.806051516999349400,\t-0.806081108260693010,\t-0.806110697506833950,\t\n-0.806140284737698280,\t-0.806169869953211600,\t-0.806199453153300330,\t-0.806229034337890730,\t-0.806258613506908190,\t-0.806288190660279120,\t-0.806317765797929690,\t-0.806347338919785720,\t\n-0.806376910025773720,\t-0.806406479115819200,\t-0.806436046189848430,\t-0.806465611247787820,\t-0.806495174289562860,\t-0.806524735315100050,\t-0.806554294324325350,\t-0.806583851317165030,\t\n-0.806613406293545280,\t-0.806642959253391690,\t-0.806672510196630780,\t-0.806702059123188820,\t-0.806731606032991430,\t-0.806761150925965010,\t-0.806790693802035830,\t-0.806820234661130060,\t\n-0.806849773503173440,\t-0.806879310328092460,\t-0.806908845135813510,\t-0.806938377926262110,\t-0.806967908699364740,\t-0.806997437455047590,\t-0.807026964193236940,\t-0.807056488913859060,\t\n-0.807086011616839680,\t-0.807115532302105310,\t-0.807145050969582440,\t-0.807174567619196590,\t-0.807204082250874370,\t-0.807233594864541940,\t-0.807263105460125470,\t-0.807292614037551590,\t\n-0.807322120596745800,\t-0.807351625137635030,\t-0.807381127660144910,\t-0.807410628164202060,\t-0.807440126649732530,\t-0.807469623116662700,\t-0.807499117564919210,\t-0.807528609994427550,\t\n-0.807558100405114330,\t-0.807587588796906180,\t-0.807617075169728800,\t-0.807646559523508720,\t-0.807676041858172210,\t-0.807705522173645550,\t-0.807735000469855470,\t-0.807764476746727580,\t\n-0.807793951004188490,\t-0.807823423242164830,\t-0.807852893460582310,\t-0.807882361659367550,\t-0.807911827838446840,\t-0.807941291997746890,\t-0.807970754137193440,\t-0.808000214256713090,\t\n-0.808029672356232460,\t-0.808059128435677400,\t-0.808088582494974510,\t-0.808118034534050180,\t-0.808147484552830810,\t-0.808176932551242900,\t-0.808206378529212510,\t-0.808235822486666030,\t\n-0.808265264423530420,\t-0.808294704339731270,\t-0.808324142235195330,\t-0.808353578109849090,\t-0.808383011963618950,\t-0.808412443796431510,\t-0.808441873608212620,\t-0.808471301398889120,\t\n-0.808500727168387720,\t-0.808530150916634050,\t-0.808559572643555160,\t-0.808588992349077220,\t-0.808618410033127180,\t-0.808647825695630760,\t-0.808677239336514810,\t-0.808706650955706040,\t\n-0.808736060553130410,\t-0.808765468128714530,\t-0.808794873682385010,\t-0.808824277214068350,\t-0.808853678723691180,\t-0.808883078211179660,\t-0.808912475676460410,\t-0.808941871119460140,\t\n-0.808971264540105040,\t-0.809000655938321710,\t-0.809030045314036880,\t-0.809059432667176730,\t-0.809088817997668410,\t-0.809118201305437770,\t-0.809147582590411860,\t-0.809176961852516640,\t\n-0.809206339091679160,\t-0.809235714307825820,\t-0.809265087500883110,\t-0.809294458670777980,\t-0.809323827817436500,\t-0.809353194940785390,\t-0.809382560040751490,\t-0.809411923117261070,\t\n-0.809441284170240750,\t-0.809470643199617260,\t-0.809500000205317090,\t-0.809529355187267320,\t-0.809558708145393770,\t-0.809588059079623500,\t-0.809617407989883350,\t-0.809646754876099380,\t\n-0.809676099738198540,\t-0.809705442576107550,\t-0.809734783389753130,\t-0.809764122179061460,\t-0.809793458943959490,\t-0.809822793684374150,\t-0.809852126400231630,\t-0.809881457091458760,\t\n-0.809910785757982250,\t-0.809940112399728740,\t-0.809969437016625160,\t-0.809998759608597800,\t-0.810028080175573590,\t-0.810057398717479390,\t-0.810086715234241360,\t-0.810116029725786670,\t\n-0.810145342192041820,\t-0.810174652632933650,\t-0.810203961048389100,\t-0.810233267438334350,\t-0.810262571802696450,\t-0.810291874141402470,\t-0.810321174454378460,\t-0.810350472741551480,\t\n-0.810379769002848360,\t-0.810409063238196170,\t-0.810438355447520960,\t-0.810467645630749800,\t-0.810496933787809960,\t-0.810526219918627390,\t-0.810555504023129370,\t-0.810584786101242520,\t\n-0.810614066152893660,\t-0.810643344178009980,\t-0.810672620176517640,\t-0.810701894148343820,\t-0.810731166093415450,\t-0.810760436011658920,\t-0.810789703903001310,\t-0.810818969767369450,\t\n-0.810848233604690160,\t-0.810877495414890510,\t-0.810906755197896900,\t-0.810936012953636600,\t-0.810965268682036110,\t-0.810994522383022390,\t-0.811023774056522370,\t-0.811053023702462910,\t\n-0.811082271320771150,\t-0.811111516911373510,\t-0.811140760474197030,\t-0.811170002009168890,\t-0.811199241516215470,\t-0.811228478995263960,\t-0.811257714446241280,\t-0.811286947869074290,\t\n-0.811316179263690260,\t-0.811345408630015470,\t-0.811374635967977210,\t-0.811403861277502520,\t-0.811433084558517930,\t-0.811462305810950690,\t-0.811491525034727660,\t-0.811520742229776100,\t\n-0.811549957396022430,\t-0.811579170533393790,\t-0.811608381641817590,\t-0.811637590721220100,\t-0.811666797771528610,\t-0.811696002792670180,\t-0.811725205784571750,\t-0.811754406747160600,\t\n-0.811783605680363120,\t-0.811812802584106600,\t-0.811841997458318420,\t-0.811871190302924870,\t-0.811900381117853450,\t-0.811929569903031000,\t-0.811958756658384680,\t-0.811987941383841670,\t\n-0.812017124079328580,\t-0.812046304744772800,\t-0.812075483380101380,\t-0.812104659985240950,\t-0.812133834560119010,\t-0.812163007104662380,\t-0.812192177618798470,\t-0.812221346102453890,\t\n-0.812250512555556030,\t-0.812279676978032050,\t-0.812308839369808690,\t-0.812337999730813220,\t-0.812367158060972700,\t-0.812396314360214310,\t-0.812425468628465320,\t-0.812454620865652570,\t\n-0.812483771071703110,\t-0.812512919246544560,\t-0.812542065390103430,\t-0.812571209502307210,\t-0.812600351583082860,\t-0.812629491632357650,\t-0.812658629650058970,\t-0.812687765636113560,\t\n-0.812716899590448900,\t-0.812746031512991740,\t-0.812775161403669570,\t-0.812804289262409440,\t-0.812833415089138530,\t-0.812862538883784350,\t-0.812891660646273720,\t-0.812920780376533700,\t\n-0.812949898074492140,\t-0.812979013740075640,\t-0.813008127373211490,\t-0.813037238973827070,\t-0.813066348541849450,\t-0.813095456077206350,\t-0.813124561579824270,\t-0.813153665049630820,\t\n-0.813182766486553520,\t-0.813211865890518970,\t-0.813240963261454790,\t-0.813270058599288140,\t-0.813299151903946640,\t-0.813328243175357010,\t-0.813357332413446880,\t-0.813386419618143510,\t\n-0.813415504789373970,\t-0.813444587927065530,\t-0.813473669031145710,\t-0.813502748101541660,\t-0.813531825138181120,\t-0.813560900140990580,\t-0.813589973109897890,\t-0.813619044044830540,\t\n-0.813648112945715370,\t-0.813677179812479780,\t-0.813706244645051370,\t-0.813735307443357200,\t-0.813764368207325120,\t-0.813793426936881840,\t-0.813822483631955310,\t-0.813851538292472250,\t\n-0.813880590918360400,\t-0.813909641509547030,\t-0.813938690065959540,\t-0.813967736587525640,\t-0.813996781074172060,\t-0.814025823525826530,\t-0.814054863942416770,\t-0.814083902323869620,\t\n-0.814112938670112580,\t-0.814141972981073270,\t-0.814171005256679070,\t-0.814200035496857600,\t-0.814229063701535690,\t-0.814258089870641190,\t-0.814287114004101810,\t-0.814316136101844280,\t\n-0.814345156163796440,\t-0.814374174189885670,\t-0.814403190180039480,\t-0.814432204134185600,\t-0.814461216052250970,\t-0.814490225934163540,\t-0.814519233779850250,\t-0.814548239589238940,\t\n-0.814577243362257010,\t-0.814606245098831950,\t-0.814635244798891490,\t-0.814664242462362690,\t-0.814693238089173380,\t-0.814722231679251170,\t-0.814751223232523030,\t-0.814780212748916990,\t\n-0.814809200228360340,\t-0.814838185670780700,\t-0.814867169076105790,\t-0.814896150444262780,\t-0.814925129775179390,\t-0.814954107068783350,\t-0.814983082325001940,\t-0.815012055543762660,\t\n-0.815041026724993340,\t-0.815069995868621720,\t-0.815098962974574850,\t-0.815127928042780560,\t-0.815156891073166690,\t-0.815185852065660300,\t-0.815214811020189330,\t-0.815243767936681300,\t\n-0.815272722815063910,\t-0.815301675655264900,\t-0.815330626457211440,\t-0.815359575220831470,\t-0.815388521946052820,\t-0.815417466632802570,\t-0.815446409281008640,\t-0.815475349890598780,\t\n-0.815504288461500470,\t-0.815533224993641670,\t-0.815562159486949660,\t-0.815591091941352380,\t-0.815620022356777220,\t-0.815648950733151910,\t-0.815677877070404290,\t-0.815706801368461960,\t\n-0.815735723627252880,\t-0.815764643846704330,\t-0.815793562026744020,\t-0.815822478167300140,\t-0.815851392268299720,\t-0.815880304329670960,\t-0.815909214351341340,\t-0.815938122333238700,\t\n-0.815967028275291110,\t-0.815995932177425500,\t-0.816024834039570270,\t-0.816053733861653030,\t-0.816082631643601290,\t-0.816111527385342980,\t-0.816140421086805850,\t-0.816169312747917930,\t\n-0.816198202368606410,\t-0.816227089948799440,\t-0.816255975488424990,\t-0.816284858987410320,\t-0.816313740445683500,\t-0.816342619863172360,\t-0.816371497239804730,\t-0.816400372575508460,\t\n-0.816429245870211150,\t-0.816458117123840640,\t-0.816486986336325100,\t-0.816515853507591930,\t-0.816544718637569060,\t-0.816573581726184330,\t-0.816602442773365690,\t-0.816631301779041310,\t\n-0.816660158743138240,\t-0.816689013665584880,\t-0.816717866546309180,\t-0.816746717385238630,\t-0.816775566182301290,\t-0.816804412937425010,\t-0.816833257650537940,\t-0.816862100321567470,\t\n-0.816890940950441790,\t-0.816919779537088940,\t-0.816948616081436430,\t-0.816977450583412310,\t-0.817006283042944650,\t-0.817035113459961270,\t-0.817063941834390350,\t-0.817092768166159390,\t\n-0.817121592455196440,\t-0.817150414701429680,\t-0.817179234904786720,\t-0.817208053065195730,\t-0.817236869182584540,\t-0.817265683256881200,\t-0.817294495288013900,\t-0.817323305275910130,\t\n-0.817352113220498280,\t-0.817380919121705960,\t-0.817409722979461240,\t-0.817438524793692390,\t-0.817467324564327140,\t-0.817496122291293760,\t-0.817524917974519870,\t-0.817553711613933750,\t\n-0.817582503209463570,\t-0.817611292761036830,\t-0.817640080268581930,\t-0.817668865732026680,\t-0.817697649151299390,\t-0.817726430526328320,\t-0.817755209857040750,\t-0.817783987143365200,\t\n-0.817812762385229930,\t-0.817841535582562560,\t-0.817870306735291370,\t-0.817899075843344310,\t-0.817927842906649880,\t-0.817956607925135580,\t-0.817985370898729800,\t-0.818014131827360820,\t\n-0.818042890710956260,\t-0.818071647549444390,\t-0.818100402342753500,\t-0.818129155090811630,\t-0.818157905793546970,\t-0.818186654450887450,\t-0.818215401062761250,\t-0.818244145629096750,\t\n-0.818272888149821690,\t-0.818301628624864330,\t-0.818330367054152960,\t-0.818359103437615750,\t-0.818387837775180980,\t-0.818416570066776260,\t-0.818445300312330200,\t-0.818474028511771200,\t\n-0.818502754665026750,\t-0.818531478772025480,\t-0.818560200832695540,\t-0.818588920846965330,\t-0.818617638814762570,\t-0.818646354736015660,\t-0.818675068610653200,\t-0.818703780438602810,\t\n-0.818732490219792890,\t-0.818761197954151810,\t-0.818789903641607750,\t-0.818818607282089110,\t-0.818847308875523710,\t-0.818876008421840050,\t-0.818904705920966650,\t-0.818933401372831220,\t\n-0.818962094777362370,\t-0.818990786134488170,\t-0.819019475444137000,\t-0.819048162706237480,\t-0.819076847920717220,\t-0.819105531087505170,\t-0.819134212206528930,\t-0.819162891277717240,\t\n-0.819191568300998260,\t-0.819220243276300500,\t-0.819248916203552220,\t-0.819277587082681500,\t-0.819306255913616830,\t-0.819334922696286720,\t-0.819363587430618990,\t-0.819392250116542380,\t\n-0.819420910753985150,\t-0.819449569342875610,\t-0.819478225883142340,\t-0.819506880374713420,\t-0.819535532817517120,\t-0.819564183211482390,\t-0.819592831556536840,\t-0.819621477852609300,\t\n-0.819650122099627950,\t-0.819678764297521620,\t-0.819707404446218150,\t-0.819736042545646140,\t-0.819764678595734320,\t-0.819793312596410530,\t-0.819821944547603380,\t-0.819850574449241480,\t\n-0.819879202301253110,\t-0.819907828103566880,\t-0.819936451856110970,\t-0.819965073558813870,\t-0.819993693211604310,\t-0.820022310814410350,\t-0.820050926367160480,\t-0.820079539869783440,\t\n-0.820108151322207490,\t-0.820136760724361480,\t-0.820165368076173240,\t-0.820193973377571610,\t-0.820222576628485190,\t-0.820251177828842160,\t-0.820279776978571240,\t-0.820308374077600820,\t\n-0.820336969125859740,\t-0.820365562123275940,\t-0.820394153069778250,\t-0.820422741965295520,\t-0.820451328809755580,\t-0.820479913603087360,\t-0.820508496345219380,\t-0.820537077036080030,\t\n-0.820565655675598360,\t-0.820594232263702320,\t-0.820622806800320630,\t-0.820651379285382230,\t-0.820679949718815080,\t-0.820708518100548120,\t-0.820737084430509740,\t-0.820765648708628780,\t\n-0.820794210934833960,\t-0.820822771109053220,\t-0.820851329231215950,\t-0.820879885301250000,\t-0.820908439319084420,\t-0.820936991284647700,\t-0.820965541197868460,\t-0.820994089058675660,\t\n-0.821022634866997450,\t-0.821051178622762560,\t-0.821079720325900040,\t-0.821108259976337960,\t-0.821136797574005150,\t-0.821165333118830440,\t-0.821193866610742340,\t-0.821222398049669790,\t\n-0.821250927435541070,\t-0.821279454768285010,\t-0.821307980047830570,\t-0.821336503274106010,\t-0.821365024447040070,\t-0.821393543566561580,\t-0.821422060632599480,\t-0.821450575645082060,\t\n-0.821479088603938150,\t-0.821507599509096800,\t-0.821536108360486180,\t-0.821564615158035250,\t-0.821593119901672830,\t-0.821621622591327540,\t-0.821650123226928540,\t-0.821678621808403900,\t\n-0.821707118335682770,\t-0.821735612808694120,\t-0.821764105227366090,\t-0.821792595591627870,\t-0.821821083901408180,\t-0.821849570156635730,\t-0.821878054357239600,\t-0.821906536503148040,\t\n-0.821935016594290250,\t-0.821963494630595040,\t-0.821991970611990920,\t-0.822020444538406950,\t-0.822048916409771730,\t-0.822077386226014560,\t-0.822105853987063600,\t-0.822134319692848110,\t\n-0.822162783343297070,\t-0.822191244938338730,\t-0.822219704477902270,\t-0.822248161961916630,\t-0.822276617390310550,\t-0.822305070763013180,\t-0.822333522079952810,\t-0.822361971341058710,\t\n-0.822390418546259940,\t-0.822418863695484890,\t-0.822447306788662620,\t-0.822475747825722190,\t-0.822504186806592320,\t-0.822532623731202170,\t-0.822561058599480250,\t-0.822589491411355960,\t\n-0.822617922166757780,\t-0.822646350865614660,\t-0.822674777507855670,\t-0.822703202093409750,\t-0.822731624622206170,\t-0.822760045094173220,\t-0.822788463509240060,\t-0.822816879867336090,\t\n-0.822845294168389700,\t-0.822873706412330040,\t-0.822902116599086080,\t-0.822930524728586850,\t-0.822958930800761550,\t-0.822987334815538650,\t-0.823015736772847450,\t-0.823044136672617220,\t\n-0.823072534514776350,\t-0.823100930299254130,\t-0.823129324025979600,\t-0.823157715694881940,\t-0.823186105305889870,\t-0.823214492858932450,\t-0.823242878353939060,\t-0.823271261790838200,\t\n-0.823299643169559170,\t-0.823328022490031120,\t-0.823356399752183000,\t-0.823384774955944090,\t-0.823413148101243000,\t-0.823441519188009010,\t-0.823469888216171510,\t-0.823498255185659000,\t\n-0.823526620096400990,\t-0.823554982948326300,\t-0.823583343741364100,\t-0.823611702475443910,\t-0.823640059150494210,\t-0.823668413766444620,\t-0.823696766323223640,\t-0.823725116820760880,\t\n-0.823753465258985180,\t-0.823781811637825930,\t-0.823810155957212410,\t-0.823838498217073110,\t-0.823866838417337650,\t-0.823895176557935430,\t-0.823923512638794930,\t-0.823951846659845670,\t\n-0.823980178621016800,\t-0.824008508522237500,\t-0.824036836363437160,\t-0.824065162144544390,\t-0.824093485865488810,\t-0.824121807526199790,\t-0.824150127126605960,\t-0.824178444666636810,\t\n-0.824206760146221520,\t-0.824235073565289690,\t-0.824263384923769830,\t-0.824291694221591540,\t-0.824320001458684230,\t-0.824348306634976710,\t-0.824376609750398390,\t-0.824404910804878540,\t\n-0.824433209798346440,\t-0.824461506730731600,\t-0.824489801601962610,\t-0.824518094411969330,\t-0.824546385160680910,\t-0.824574673848026300,\t-0.824602960473935000,\t-0.824631245038336290,\t\n-0.824659527541159560,\t-0.824687807982334210,\t-0.824716086361789060,\t-0.824744362679453720,\t-0.824772636935257710,\t-0.824800909129129840,\t-0.824829179260999750,\t-0.824857447330796690,\t\n-0.824885713338450290,\t-0.824913977283889270,\t-0.824942239167043350,\t-0.824970498987842140,\t-0.824998756746214370,\t-0.825027012442089650,\t-0.825055266075397480,\t-0.825083517646067240,\t\n-0.825111767154028340,\t-0.825140014599209710,\t-0.825168259981541200,\t-0.825196503300952180,\t-0.825224744557371710,\t-0.825252983750729310,\t-0.825281220880954570,\t-0.825309455947976670,\t\n-0.825337688951725430,\t-0.825365919892129710,\t-0.825394148769119430,\t-0.825422375582623440,\t-0.825450600332571670,\t-0.825478823018893300,\t-0.825507043641517950,\t-0.825535262200375100,\t\n-0.825563478695394040,\t-0.825591693126504160,\t-0.825619905493635290,\t-0.825648115796716490,\t-0.825676324035677260,\t-0.825704530210447320,\t-0.825732734320956060,\t-0.825760936367133210,\t\n-0.825789136348907830,\t-0.825817334266209510,\t-0.825845530118968110,\t-0.825873723907112670,\t-0.825901915630572910,\t-0.825930105289278350,\t-0.825958292883158810,\t-0.825986478412143230,\t\n-0.826014661876161460,\t-0.826042843275143320,\t-0.826071022609017880,\t-0.826099199877714850,\t-0.826127375081163740,\t-0.826155548219294270,\t-0.826183719292036160,\t-0.826211888299318460,\t\n-0.826240055241071140,\t-0.826268220117223780,\t-0.826296382927705800,\t-0.826324543672446680,\t-0.826352702351376370,\t-0.826380858964424150,\t-0.826409013511520190,\t-0.826437165992593310,\t\n-0.826465316407573590,\t-0.826493464756390850,\t-0.826521611038974150,\t-0.826549755255253430,\t-0.826577897405158300,\t-0.826606037488618720,\t-0.826634175505563840,\t-0.826662311455923390,\t\n-0.826690445339627540,\t-0.826718577156605240,\t-0.826746706906786530,\t-0.826774834590101040,\t-0.826802960206478480,\t-0.826831083755848790,\t-0.826859205238141160,\t-0.826887324653285400,\t\n-0.826915442001211700,\t-0.826943557281849100,\t-0.826971670495127540,\t-0.826999781640976870,\t-0.827027890719326810,\t-0.827055997730107180,\t-0.827084102673247390,\t-0.827112205548677480,\t\n-0.827140306356326850,\t-0.827168405096125550,\t-0.827196501768003080,\t-0.827224596371889500,\t-0.827252688907714640,\t-0.827280779375407670,\t-0.827308867774898870,\t-0.827336954106118180,\t\n-0.827365038368994780,\t-0.827393120563458930,\t-0.827421200689440140,\t-0.827449278746868360,\t-0.827477354735673630,\t-0.827505428655785360,\t-0.827533500507133370,\t-0.827561570289648050,\t\n-0.827589638003258350,\t-0.827617703647894780,\t-0.827645767223486820,\t-0.827673828729964640,\t-0.827701888167257760,\t-0.827729945535296110,\t-0.827758000834009850,\t-0.827786054063328280,\t\n-0.827814105223181660,\t-0.827842154313499720,\t-0.827870201334212520,\t-0.827898246285249880,\t-0.827926289166541540,\t-0.827954329978017320,\t-0.827982368719607620,\t-0.828010405391241820,\t\n-0.828038439992849870,\t-0.828066472524361830,\t-0.828094502985707640,\t-0.828122531376817460,\t-0.828150557697620690,\t-0.828178581948047610,\t-0.828206604128028270,\t-0.828234624237492060,\t\n-0.828262642276369480,\t-0.828290658244590140,\t-0.828318672142084430,\t-0.828346683968781860,\t-0.828374693724612590,\t-0.828402701409506780,\t-0.828430707023393940,\t-0.828458710566204350,\t\n-0.828486712037868060,\t-0.828514711438314900,\t-0.828542708767475160,\t-0.828570704025278550,\t-0.828598697211655130,\t-0.828626688326535190,\t-0.828654677369848210,\t-0.828682664341524710,\t\n-0.828710649241494400,\t-0.828738632069687560,\t-0.828766612826034250,\t-0.828794591510464310,\t-0.828822568122908110,\t-0.828850542663295160,\t-0.828878515131555970,\t-0.828906485527620470,\t\n-0.828934453851418730,\t-0.828962420102881010,\t-0.828990384281937160,\t-0.829018346388517240,\t-0.829046306422551730,\t-0.829074264383970250,\t-0.829102220272703080,\t-0.829130174088680280,\t\n-0.829158125831832130,\t-0.829186075502088890,\t-0.829214023099380300,\t-0.829241968623636530,\t-0.829269912074788170,\t-0.829297853452764630,\t-0.829325792757496630,\t-0.829353729988914100,\t\n-0.829381665146947440,\t-0.829409598231526490,\t-0.829437529242581410,\t-0.829465458180042800,\t-0.829493385043840290,\t-0.829521309833904370,\t-0.829549232550165110,\t-0.829577153192552870,\t\n-0.829605071760997960,\t-0.829632988255430080,\t-0.829660902675779740,\t-0.829688815021977330,\t-0.829716725293952680,\t-0.829744633491636300,\t-0.829772539614958230,\t-0.829800443663848860,\t\n-0.829828345638238600,\t-0.829856245538057260,\t-0.829884143363235350,\t-0.829912039113703260,\t-0.829939932789390820,\t-0.829967824390228540,\t-0.829995713916146790,\t-0.830023601367075870,\t\n-0.830051486742945820,\t-0.830079370043686930,\t-0.830107251269230020,\t-0.830135130419504600,\t-0.830163007494441390,\t-0.830190882493970770,\t-0.830218755418022810,\t-0.830246626266528230,\t\n-0.830274495039416860,\t-0.830302361736619310,\t-0.830330226358066080,\t-0.830358088903686900,\t-0.830385949373412590,\t-0.830413807767173440,\t-0.830441664084899720,\t-0.830469518326522160,\t\n-0.830497370491970480,\t-0.830525220581175730,\t-0.830553068594067520,\t-0.830580914530576810,\t-0.830608758390633750,\t-0.830636600174168740,\t-0.830664439881112490,\t-0.830692277511394960,\t\n-0.830720113064946640,\t-0.830747946541698370,\t-0.830775777941579970,\t-0.830803607264522070,\t-0.830831434510455270,\t-0.830859259679309740,\t-0.830887082771016420,\t-0.830914903785505030,\t\n-0.830942722722706420,\t-0.830970539582551290,\t-0.830998354364969600,\t-0.831026167069891960,\t-0.831053977697248980,\t-0.831081786246971270,\t-0.831109592718988770,\t-0.831137397113232310,\t\n-0.831165199429632630,\t-0.831192999668119770,\t-0.831220797828624350,\t-0.831248593911076970,\t-0.831276387915408030,\t-0.831304179841548360,\t-0.831331969689428130,\t-0.831359757458977830,\t\n-0.831387543150128530,\t-0.831415326762810050,\t-0.831443108296953230,\t-0.831470887752488670,\t-0.831498665129346890,\t-0.831526440427458600,\t-0.831554213646754080,\t-0.831581984787164270,\t\n-0.831609753848619130,\t-0.831637520831049800,\t-0.831665285734386470,\t-0.831693048558560080,\t-0.831720809303501230,\t-0.831748567969140100,\t-0.831776324555407620,\t-0.831804079062234520,\t\n-0.831831831489551090,\t-0.831859581837287920,\t-0.831887330105375860,\t-0.831915076293745500,\t-0.831942820402327700,\t-0.831970562431052500,\t-0.831998302379851060,\t-0.832026040248654010,\t\n-0.832053776037391610,\t-0.832081509745994820,\t-0.832109241374394240,\t-0.832136970922520700,\t-0.832164698390304600,\t-0.832192423777676770,\t-0.832220147084568040,\t-0.832247868310908800,\t\n-0.832275587456629770,\t-0.832303304521661900,\t-0.832331019505935690,\t-0.832358732409382180,\t-0.832386443231931560,\t-0.832414151973514870,\t-0.832441858634063060,\t-0.832469563213506400,\t\n-0.832497265711775740,\t-0.832524966128802000,\t-0.832552664464515810,\t-0.832580360718848220,\t-0.832608054891729400,\t-0.832635746983090510,\t-0.832663436992862490,\t-0.832691124920975630,\t\n-0.832718810767360980,\t-0.832746494531949380,\t-0.832774176214671650,\t-0.832801855815458290,\t-0.832829533334240260,\t-0.832857208770948710,\t-0.832884882125513810,\t-0.832912553397866740,\t\n-0.832940222587938320,\t-0.832967889695659270,\t-0.832995554720960760,\t-0.833023217663773190,\t-0.833050878524027590,\t-0.833078537301654930,\t-0.833106193996585700,\t-0.833133848608751060,\t\n-0.833161501138081740,\t-0.833189151584508680,\t-0.833216799947963050,\t-0.833244446228375120,\t-0.833272090425676290,\t-0.833299732539797060,\t-0.833327372570668360,\t-0.833355010518221360,\t\n-0.833382646382386790,\t-0.833410280163095820,\t-0.833437911860279050,\t-0.833465541473867310,\t-0.833493169003792110,\t-0.833520794449983620,\t-0.833548417812373210,\t-0.833576039090891730,\t\n-0.833603658285470230,\t-0.833631275396039760,\t-0.833658890422530830,\t-0.833686503364874710,\t-0.833714114223002570,\t-0.833741722996844900,\t-0.833769329686332990,\t-0.833796934291397670,\t\n-0.833824536811970330,\t-0.833852137247981350,\t-0.833879735599362020,\t-0.833907331866043600,\t-0.833934926047956600,\t-0.833962518145032420,\t-0.833990108157201760,\t-0.834017696084395910,\t\n-0.834045281926546030,\t-0.834072865683582740,\t-0.834100447355437310,\t-0.834128026942040910,\t-0.834155604443324260,\t-0.834183179859218640,\t-0.834210753189654990,\t-0.834238324434564580,\t\n-0.834265893593878480,\t-0.834293460667527410,\t-0.834321025655442750,\t-0.834348588557555780,\t-0.834376149373797000,\t-0.834403708104097920,\t-0.834431264748389580,\t-0.834458819306603260,\t\n-0.834486371778669690,\t-0.834513922164520140,\t-0.834541470464086110,\t-0.834569016677298100,\t-0.834596560804087620,\t-0.834624102844385710,\t-0.834651642798123540,\t-0.834679180665232500,\t\n-0.834706716445643200,\t-0.834734250139287150,\t-0.834761781746095720,\t-0.834789311265999650,\t-0.834816838698930310,\t-0.834844364044818770,\t-0.834871887303596400,\t-0.834899408475194500,\t\n-0.834926927559543900,\t-0.834954444556576190,\t-0.834981959466222110,\t-0.835009472288413160,\t-0.835036983023080490,\t-0.835064491670155400,\t-0.835091998229569370,\t-0.835119502701253010,\t\n-0.835147005085137950,\t-0.835174505381155560,\t-0.835202003589236690,\t-0.835229499709312820,\t-0.835256993741315230,\t-0.835284485685175100,\t-0.835311975540824040,\t-0.835339463308192860,\t\n-0.835366948987212980,\t-0.835394432577815870,\t-0.835421914079932600,\t-0.835449393493494450,\t-0.835476870818432800,\t-0.835504346054679160,\t-0.835531819202164570,\t-0.835559290260820320,\t\n-0.835586759230578120,\t-0.835614226111368820,\t-0.835641690903123900,\t-0.835669153605774760,\t-0.835696614219252680,\t-0.835724072743489480,\t-0.835751529178415660,\t-0.835778983523963180,\t\n-0.835806435780063420,\t-0.835833885946647310,\t-0.835861334023646490,\t-0.835888780010992320,\t-0.835916223908616200,\t-0.835943665716449850,\t-0.835971105434423990,\t-0.835998543062470350,\t\n-0.836025978600520750,\t-0.836053412048505810,\t-0.836080843406357350,\t-0.836108272674006890,\t-0.836135699851385920,\t-0.836163124938425480,\t-0.836190547935057200,\t-0.836217968841212800,\t\n-0.836245387656823210,\t-0.836272804381820170,\t-0.836300219016135160,\t-0.836327631559699580,\t-0.836355042012445150,\t-0.836382450374302920,\t-0.836409856645204510,\t-0.836437260825081740,\t\n-0.836464662913865450,\t-0.836492062911487700,\t-0.836519460817879650,\t-0.836546856632973010,\t-0.836574250356699410,\t-0.836601641988990010,\t-0.836629031529776750,\t-0.836656418978990680,\t\n-0.836683804336563530,\t-0.836711187602426800,\t-0.836738568776512200,\t-0.836765947858751360,\t-0.836793324849075540,\t-0.836820699747416240,\t-0.836848072553705520,\t-0.836875443267874330,\t\n-0.836902811889854600,\t-0.836930178419577840,\t-0.836957542856975540,\t-0.836984905201979660,\t-0.837012265454521340,\t-0.837039623614532320,\t-0.837066979681944430,\t-0.837094333656688950,\t\n-0.837121685538697590,\t-0.837149035327901970,\t-0.837176383024234030,\t-0.837203728627624930,\t-0.837231072138006520,\t-0.837258413555310610,\t-0.837285752879468490,\t-0.837313090110411880,\t\n-0.837340425248072620,\t-0.837367758292382300,\t-0.837395089243272770,\t-0.837422418100675410,\t-0.837449744864521950,\t-0.837477069534744320,\t-0.837504392111273810,\t-0.837531712594042240,\t\n-0.837559030982981460,\t-0.837586347278023060,\t-0.837613661479099100,\t-0.837640973586140760,\t-0.837668283599079850,\t-0.837695591517848560,\t-0.837722897342378150,\t-0.837750201072600340,\t\n-0.837777502708447090,\t-0.837804802249850320,\t-0.837832099696741330,\t-0.837859395049052050,\t-0.837886688306714530,\t-0.837913979469660060,\t-0.837941268537820690,\t-0.837968555511128140,\t\n-0.837995840389514140,\t-0.838023123172910830,\t-0.838050403861249400,\t-0.838077682454462010,\t-0.838104958952480610,\t-0.838132233355236680,\t-0.838159505662662060,\t-0.838186775874688710,\t\n-0.838214043991248440,\t-0.838241310012273310,\t-0.838268573937694610,\t-0.838295835767444820,\t-0.838323095501455120,\t-0.838350353139657670,\t-0.838377608681984300,\t-0.838404862128367070,\t\n-0.838432113478737810,\t-0.838459362733028010,\t-0.838486609891169850,\t-0.838513854953095380,\t-0.838541097918735990,\t-0.838568338788023950,\t-0.838595577560890980,\t-0.838622814237269140,\t\n-0.838650048817090490,\t-0.838677281300286400,\t-0.838704511686789170,\t-0.838731739976530940,\t-0.838758966169443120,\t-0.838786190265457860,\t-0.838813412264507010,\t-0.838840632166523050,\t\n-0.838867849971437150,\t-0.838895065679181710,\t-0.838922279289688770,\t-0.838949490802889940,\t-0.838976700218717400,\t-0.839003907537103080,\t-0.839031112757978930,\t-0.839058315881277330,\t\n-0.839085516906929670,\t-0.839112715834868240,\t-0.839139912665025190,\t-0.839167107397332130,\t-0.839194300031721350,\t-0.839221490568124890,\t-0.839248679006474600,\t-0.839275865346702840,\t\n-0.839303049588741250,\t-0.839330231732522190,\t-0.839357411777977400,\t-0.839384589725039040,\t-0.839411765573639170,\t-0.839438939323709940,\t-0.839466110975183640,\t-0.839493280527991770,\t\n-0.839520447982066600,\t-0.839547613337340740,\t-0.839574776593745460,\t-0.839601937751213280,\t-0.839629096809676350,\t-0.839656253769066610,\t-0.839683408629316450,\t-0.839710561390357490,\t\n-0.839737712052122220,\t-0.839764860614542810,\t-0.839792007077551080,\t-0.839819151441079330,\t-0.839846293705059700,\t-0.839873433869424590,\t-0.839900571934105610,\t-0.839927707899035260,\t\n-0.839954841764145810,\t-0.839981973529369100,\t-0.840009103194637400,\t-0.840036230759882980,\t-0.840063356225037920,\t-0.840090479590034690,\t-0.840117600854805140,\t-0.840144720019281530,\t\n-0.840171837083396380,\t-0.840198952047081280,\t-0.840226064910268970,\t-0.840253175672891370,\t-0.840280284334880890,\t-0.840307390896170010,\t-0.840334495356690250,\t-0.840361597716374310,\t\n-0.840388697975154700,\t-0.840415796132963020,\t-0.840442892189731890,\t-0.840469986145393590,\t-0.840497077999880490,\t-0.840524167753124440,\t-0.840551255405058040,\t-0.840578340955613680,\t\n-0.840605424404723190,\t-0.840632505752319180,\t-0.840659584998333930,\t-0.840686662142699710,\t-0.840713737185349030,\t-0.840740810126213820,\t-0.840767880965226590,\t-0.840794949702319940,\t\n-0.840822016337425590,\t-0.840849080870476160,\t-0.840876143301404140,\t-0.840903203630141700,\t-0.840930261856621560,\t-0.840957317980775440,\t-0.840984372002536280,\t-0.841011423921836030,\t\n-0.841038473738607180,\t-0.841065521452782020,\t-0.841092567064293250,\t-0.841119610573073160,\t-0.841146651979053920,\t-0.841173691282168010,\t-0.841200728482348060,\t-0.841227763579526000,\t\n-0.841254796573634670,\t-0.841281827464606340,\t-0.841308856252373390,\t-0.841335882936868560,\t-0.841362907518023670,\t-0.841389929995771670,\t-0.841416950370045050,\t-0.841443968640775750,\t\n-0.841470984807896620,\t-0.841497998871339910,\t-0.841525010831038260,\t-0.841552020686924360,\t-0.841579028438930180,\t-0.841606034086988640,\t-0.841633037631031700,\t-0.841660039070992290,\t\n-0.841687038406802700,\t-0.841714035638395530,\t-0.841741030765703280,\t-0.841768023788658670,\t-0.841795014707194090,\t-0.841822003521241590,\t-0.841848990230734230,\t-0.841875974835604280,\t\n-0.841902957335784460,\t-0.841929937731207280,\t-0.841956916021805450,\t-0.841983892207511020,\t-0.842010866288257160,\t-0.842037838263975940,\t-0.842064808134600050,\t-0.842091775900062120,\t\n-0.842118741560294870,\t-0.842145705115230680,\t-0.842172666564802500,\t-0.842199625908942370,\t-0.842226583147583470,\t-0.842253538280657850,\t-0.842280491308098340,\t-0.842307442229837670,\t\n-0.842334391045808430,\t-0.842361337755943350,\t-0.842388282360174710,\t-0.842415224858435670,\t-0.842442165250658290,\t-0.842469103536775510,\t-0.842496039716719940,\t-0.842522973790424290,\t\n-0.842549905757821180,\t-0.842576835618843560,\t-0.842603763373423580,\t-0.842630689021494520,\t-0.842657612562988430,\t-0.842684533997838270,\t-0.842711453325976860,\t-0.842738370547336800,\t\n-0.842765285661850830,\t-0.842792198669451880,\t-0.842819109570072110,\t-0.842846018363644920,\t-0.842872925050102360,\t-0.842899829629377480,\t-0.842926732101403120,\t-0.842953632466111880,\t\n-0.842980530723436820,\t-0.843007426873310100,\t-0.843034320915665210,\t-0.843061212850434120,\t-0.843088102677550080,\t-0.843114990396945820,\t-0.843141876008553950,\t-0.843168759512307520,\t\n-0.843195640908139370,\t-0.843222520195981980,\t-0.843249397375768430,\t-0.843276272447431200,\t-0.843303145410903230,\t-0.843330016266117370,\t-0.843356885013006540,\t-0.843383751651503480,\t\n-0.843410616181541340,\t-0.843437478603052520,\t-0.843464338915969840,\t-0.843491197120226350,\t-0.843518053215754790,\t-0.843544907202488200,\t-0.843571759080359310,\t-0.843598608849301160,\t\n-0.843625456509246360,\t-0.843652302060128090,\t-0.843679145501878950,\t-0.843705986834431760,\t-0.843732826057719710,\t-0.843759663171675610,\t-0.843786498176232410,\t-0.843813331071323060,\t\n-0.843840161856880160,\t-0.843866990532837200,\t-0.843893817099126480,\t-0.843920641555681250,\t-0.843947463902434250,\t-0.843974284139318740,\t-0.844001102266267790,\t-0.844027918283213770,\t\n-0.844054732190090200,\t-0.844081543986829550,\t-0.844108353673365120,\t-0.844135161249629730,\t-0.844161966715556430,\t-0.844188770071078290,\t-0.844215571316128340,\t-0.844242370450639320,\t\n-0.844269167474544610,\t-0.844295962387776710,\t-0.844322755190268890,\t-0.844349545881954210,\t-0.844376334462765720,\t-0.844403120932636360,\t-0.844429905291499420,\t-0.844456687539287380,\t\n-0.844483467675933960,\t-0.844510245701371680,\t-0.844537021615533680,\t-0.844563795418353250,\t-0.844590567109763210,\t-0.844617336689697070,\t-0.844644104158087330,\t-0.844670869514867580,\t\n-0.844697632759970340,\t-0.844724393893329100,\t-0.844751152914876900,\t-0.844777909824546700,\t-0.844804664622271880,\t-0.844831417307985500,\t-0.844858167881620380,\t-0.844884916343110140,\t\n-0.844911662692387270,\t-0.844938406929385270,\t-0.844965149054037300,\t-0.844991889066276540,\t-0.845018626966035910,\t-0.845045362753249040,\t-0.845072096427848640,\t-0.845098827989767880,\t\n-0.845125557438940020,\t-0.845152284775298250,\t-0.845179009998775820,\t-0.845205733109305800,\t-0.845232454106821680,\t-0.845259172991256190,\t-0.845285889762543040,\t-0.845312604420614950,\t\n-0.845339316965405320,\t-0.845366027396847410,\t-0.845392735714874390,\t-0.845419441919419530,\t-0.845446146010416340,\t-0.845472847987797650,\t-0.845499547851496950,\t-0.845526245601447180,\t\n-0.845552941237581730,\t-0.845579634759834000,\t-0.845606326168137130,\t-0.845633015462424750,\t-0.845659702642629570,\t-0.845686387708685320,\t-0.845713070660524920,\t-0.845739751498081780,\t\n-0.845766430221289390,\t-0.845793106830080800,\t-0.845819781324389510,\t-0.845846453704149010,\t-0.845873123969292040,\t-0.845899792119752640,\t-0.845926458155463410,\t-0.845953122076358090,\t\n-0.845979783882369940,\t-0.846006443573432350,\t-0.846033101149478610,\t-0.846059756610442410,\t-0.846086409956256610,\t-0.846113061186854920,\t-0.846139710302170390,\t-0.846166357302136630,\t\n-0.846193002186686920,\t-0.846219644955754750,\t-0.846246285609273620,\t-0.846272924147176590,\t-0.846299560569397480,\t-0.846326194875869240,\t-0.846352827066525590,\t-0.846379457141299810,\t\n-0.846406085100125270,\t-0.846432710942935710,\t-0.846459334669664500,\t-0.846485956280244700,\t-0.846512575774610370,\t-0.846539193152694210,\t-0.846565808414430190,\t-0.846592421559751560,\t\n-0.846619032588591950,\t-0.846645641500884950,\t-0.846672248296563620,\t-0.846698852975561910,\t-0.846725455537812870,\t-0.846752055983250100,\t-0.846778654311807210,\t-0.846805250523417710,\t\n-0.846831844618015190,\t-0.846858436595533170,\t-0.846885026455904800,\t-0.846911614199064130,\t-0.846938199824944230,\t-0.846964783333478800,\t-0.846991364724601460,\t-0.847017943998245700,\t\n-0.847044521154345030,\t-0.847071096192833270,\t-0.847097669113643590,\t-0.847124239916709930,\t-0.847150808601965450,\t-0.847177375169343990,\t-0.847203939618779160,\t-0.847230501950204330,\t\n-0.847257062163553560,\t-0.847283620258759810,\t-0.847310176235757330,\t-0.847336730094479180,\t-0.847363281834859210,\t-0.847389831456831000,\t-0.847416378960328180,\t-0.847442924345284450,\t\n-0.847469467611633660,\t-0.847496008759308970,\t-0.847522547788244540,\t-0.847549084698373420,\t-0.847575619489629560,\t-0.847602152161946790,\t-0.847628682715258490,\t-0.847655211149498600,\t\n-0.847681737464600850,\t-0.847708261660498510,\t-0.847734783737125850,\t-0.847761303694415820,\t-0.847787821532302700,\t-0.847814337250719970,\t-0.847840850849601370,\t-0.847867362328880940,\t\n-0.847893871688491840,\t-0.847920378928368250,\t-0.847946884048443540,\t-0.847973387048651550,\t-0.847999887928926110,\t-0.848026386689201050,\t-0.848052883329409870,\t-0.848079377849486840,\t\n-0.848105870249365120,\t-0.848132360528978890,\t-0.848158848688261520,\t-0.848185334727147190,\t-0.848211818645569380,\t-0.848238300443462050,\t-0.848264780120759230,\t-0.848291257677394110,\t\n-0.848317733113301160,\t-0.848344206428413680,\t-0.848370677622665600,\t-0.848397146695990980,\t-0.848423613648323420,\t-0.848450078479596750,\t-0.848476541189745140,\t-0.848503001778702080,\t\n-0.848529460246401520,\t-0.848555916592777290,\t-0.848582370817763110,\t-0.848608822921293140,\t-0.848635272903300990,\t-0.848661720763720710,\t-0.848688166502486350,\t-0.848714610119531420,\t\n-0.848741051614790190,\t-0.848767490988196040,\t-0.848793928239683140,\t-0.848820363369185430,\t-0.848846796376636850,\t-0.848873227261971450,\t-0.848899656025122850,\t-0.848926082666025210,\t\n-0.848952507184612240,\t-0.848978929580818000,\t-0.849005349854576320,\t-0.849031768005821360,\t-0.849058184034486960,\t-0.849084597940507390,\t-0.849111009723816030,\t-0.849137419384347390,\t\n-0.849163826922034960,\t-0.849190232336813010,\t-0.849216635628615490,\t-0.849243036797376340,\t-0.849269435843029610,\t-0.849295832765509460,\t-0.849322227564749840,\t-0.849348620240684250,\t\n-0.849375010793247290,\t-0.849401399222372680,\t-0.849427785527994690,\t-0.849454169710047170,\t-0.849480551768464380,\t-0.849506931703180150,\t-0.849533309514128640,\t-0.849559685201243700,\t\n-0.849586058764459580,\t-0.849612430203710360,\t-0.849638799518929950,\t-0.849665166710052660,\t-0.849691531777012620,\t-0.849717894719743460,\t-0.849744255538179890,\t-0.849770614232255420,\t\n-0.849796970801904420,\t-0.849823325247060950,\t-0.849849677567659170,\t-0.849876027763633470,\t-0.849902375834917460,\t-0.849928721781445740,\t-0.849955065603152040,\t-0.849981407299970630,\t\n-0.850007746871835670,\t-0.850034084318681330,\t-0.850060419640441770,\t-0.850086752837051480,\t-0.850113083908444090,\t-0.850139412854554080,\t-0.850165739675315390,\t-0.850192064370662410,\t\n-0.850218386940529200,\t-0.850244707384850030,\t-0.850271025703559060,\t-0.850297341896590900,\t-0.850323655963878930,\t-0.850349967905358220,\t-0.850376277720962360,\t-0.850402585410625740,\t\n-0.850428890974282650,\t-0.850455194411867340,\t-0.850481495723314330,\t-0.850507794908557320,\t-0.850534091967531050,\t-0.850560386900169330,\t-0.850586679706406560,\t-0.850612970386177230,\t\n-0.850639258939415390,\t-0.850665545366055430,\t-0.850691829666031850,\t-0.850718111839278370,\t-0.850744391885729920,\t-0.850770669805320230,\t-0.850796945597983910,\t-0.850823219263655230,\t\n-0.850849490802268460,\t-0.850875760213757990,\t-0.850902027498058320,\t-0.850928292655103610,\t-0.850954555684828030,\t-0.850980816587165960,\t-0.851007075362051780,\t-0.851033332009420000,\t\n-0.851059586529204880,\t-0.851085838921341040,\t-0.851112089185762310,\t-0.851138337322403630,\t-0.851164583331198930,\t-0.851190827212082720,\t-0.851217068964989390,\t-0.851243308589853420,\t\n-0.851269546086609210,\t-0.851295781455191360,\t-0.851322014695533810,\t-0.851348245807571510,\t-0.851374474791238290,\t-0.851400701646468970,\t-0.851426926373197830,\t-0.851453148971359370,\t\n-0.851479369440888310,\t-0.851505587781718590,\t-0.851531803993785030,\t-0.851558018077021810,\t-0.851584230031363630,\t-0.851610439856744780,\t-0.851636647553099760,\t-0.851662853120363270,\t\n-0.851689056558469830,\t-0.851715257867353470,\t-0.851741457046949260,\t-0.851767654097191130,\t-0.851793849018013920,\t-0.851820041809352000,\t-0.851846232471140000,\t-0.851872421003312510,\t\n-0.851898607405804030,\t-0.851924791678548950,\t-0.851950973821482100,\t-0.851977153834537540,\t-0.852003331717650080,\t-0.852029507470754340,\t-0.852055681093784820,\t-0.852081852586676350,\t\n-0.852108021949362970,\t-0.852134189181779860,\t-0.852160354283860940,\t-0.852186517255541180,\t-0.852212678096755050,\t-0.852238836807437390,\t-0.852264993387522480,\t-0.852291147836945370,\t\n-0.852317300155640220,\t-0.852343450343541980,\t-0.852369598400584900,\t-0.852395744326703840,\t-0.852421888121833390,\t-0.852448029785908280,\t-0.852474169318863110,\t-0.852500306720632710,\t\n-0.852526441991151460,\t-0.852552575130353980,\t-0.852578706138174990,\t-0.852604835014549310,\t-0.852630961759411440,\t-0.852657086372696220,\t-0.852683208854338570,\t-0.852709329204272560,\t\n-0.852735447422433570,\t-0.852761563508755650,\t-0.852787677463173850,\t-0.852813789285622900,\t-0.852839898976037400,\t-0.852866006534352180,\t-0.852892111960502300,\t-0.852918215254421690,\t\n-0.852944316416045960,\t-0.852970415445309050,\t-0.852996512342146240,\t-0.853022607106492030,\t-0.853048699738281350,\t-0.853074790237449250,\t-0.853100878603929800,\t-0.853126964837658490,\t\n-0.853153048938569470,\t-0.853179130906597800,\t-0.853205210741678320,\t-0.853231288443745850,\t-0.853257364012735220,\t-0.853283437448581370,\t-0.853309508751218580,\t-0.853335577920582460,\t\n-0.853361644956607050,\t-0.853387709859227410,\t-0.853413772628378700,\t-0.853439833263995420,\t-0.853465891766012620,\t-0.853491948134365350,\t-0.853518002368987890,\t-0.853544054469815740,\t\n-0.853570104436783160,\t-0.853596152269825330,\t-0.853622197968877170,\t-0.853648241533873420,\t-0.853674282964749340,\t-0.853700322261439330,\t-0.853726359423878760,\t-0.853752394452002130,\t\n-0.853778427345744380,\t-0.853804458105040690,\t-0.853830486729825750,\t-0.853856513220034640,\t-0.853882537575602510,\t-0.853908559796463740,\t-0.853934579882553830,\t-0.853960597833807180,\t\n-0.853986613650159150,\t-0.854012627331544480,\t-0.854038638877898330,\t-0.854064648289155740,\t-0.854090655565251320,\t-0.854116660706120580,\t-0.854142663711697890,\t-0.854168664581918420,\t\n-0.854194663316717450,\t-0.854220659916029800,\t-0.854246654379790420,\t-0.854272646707934790,\t-0.854298636900397200,\t-0.854324624957113250,\t-0.854350610878017450,\t-0.854376594663045270,\t\n-0.854402576312131460,\t-0.854428555825211270,\t-0.854454533202219760,\t-0.854480508443092090,\t-0.854506481547762880,\t-0.854532452516167720,\t-0.854558421348241230,\t-0.854584388043918670,\t\n-0.854610352603135110,\t-0.854636315025825710,\t-0.854662275311925730,\t-0.854688233461369910,\t-0.854714189474093610,\t-0.854740143350031680,\t-0.854766095089119380,\t-0.854792044691291890,\t\n-0.854817992156484240,\t-0.854843937484631610,\t-0.854869880675669380,\t-0.854895821729532160,\t-0.854921760646155660,\t-0.854947697425474500,\t-0.854973632067424160,\t-0.854999564571939710,\t\n-0.855025494938956410,\t-0.855051423168409320,\t-0.855077349260233820,\t-0.855103273214364860,\t-0.855129195030737810,\t-0.855155114709287620,\t-0.855181032249949680,\t-0.855206947652659030,\t\n-0.855232860917351180,\t-0.855258772043961280,\t-0.855284681032424280,\t-0.855310587882675780,\t-0.855336492594650610,\t-0.855362395168284160,\t-0.855388295603511710,\t-0.855414193900268630,\t\n-0.855440090058489980,\t-0.855465984078111360,\t-0.855491875959067620,\t-0.855517765701294230,\t-0.855543653304726370,\t-0.855569538769299310,\t-0.855595422094948430,\t-0.855621303281608900,\t\n-0.855647182329216440,\t-0.855673059237705870,\t-0.855698934007012690,\t-0.855724806637072070,\t-0.855750677127819380,\t-0.855776545479190130,\t-0.855802411691119370,\t-0.855828275763542590,\t\n-0.855854137696395400,\t-0.855879997489612630,\t-0.855905855143130110,\t-0.855931710656882670,\t-0.855957564030806030,\t-0.855983415264835350,\t-0.856009264358906230,\t-0.856035111312953960,\t\n-0.856060956126914130,\t-0.856086798800721690,\t-0.856112639334312480,\t-0.856138477727621420,\t-0.856164313980584120,\t-0.856190148093136090,\t-0.856215980065212710,\t-0.856241809896749580,\t\n-0.856267637587681650,\t-0.856293463137944970,\t-0.856319286547474360,\t-0.856345107816205430,\t-0.856370926944073910,\t-0.856396743931014950,\t-0.856422558776964160,\t-0.856448371481857150,\t\n-0.856474182045629080,\t-0.856499990468215680,\t-0.856525796749552200,\t-0.856551600889574160,\t-0.856577402888217150,\t-0.856603202745416570,\t-0.856629000461108010,\t-0.856654796035227210,\t\n-0.856680589467709310,\t-0.856706380758489820,\t-0.856732169907504340,\t-0.856757956914688480,\t-0.856783741779977740,\t-0.856809524503307610,\t-0.856835305084613810,\t-0.856861083523831610,\t\n-0.856886859820896960,\t-0.856912633975744910,\t-0.856938405988311280,\t-0.856964175858531570,\t-0.856989943586341510,\t-0.857015709171676470,\t-0.857041472614472500,\t-0.857067233914664550,\t\n-0.857092993072188780,\t-0.857118750086980240,\t-0.857144504958974980,\t-0.857170257688108280,\t-0.857196008274316080,\t-0.857221756717533980,\t-0.857247503017697370,\t-0.857273247174742070,\t\n-0.857298989188603590,\t-0.857324729059217530,\t-0.857350466786519720,\t-0.857376202370445650,\t-0.857401935810931160,\t-0.857427667107912070,\t-0.857453396261323550,\t-0.857479123271101760,\t\n-0.857504848137181860,\t-0.857530570859500020,\t-0.857556291437991610,\t-0.857582009872592480,\t-0.857607726163238330,\t-0.857633440309865210,\t-0.857659152312408080,\t-0.857684862170803420,\t\n-0.857710569884986400,\t-0.857736275454892840,\t-0.857761978880458690,\t-0.857787680161619550,\t-0.857813379298311470,\t-0.857839076290469630,\t-0.857864771138030390,\t-0.857890463840929040,\t\n-0.857916154399101520,\t-0.857941842812483530,\t-0.857967529081010930,\t-0.857993213204619630,\t-0.858018895183245480,\t-0.858044575016823850,\t-0.858070252705290910,\t-0.858095928248582270,\t\n-0.858121601646633760,\t-0.858147272899381200,\t-0.858172942006760420,\t-0.858198608968707370,\t-0.858224273785158090,\t-0.858249936456047970,\t-0.858275596981312840,\t-0.858301255360888750,\t\n-0.858326911594711530,\t-0.858352565682717010,\t-0.858378217624841120,\t-0.858403867421019820,\t-0.858429515071188700,\t-0.858455160575283930,\t-0.858480803933241110,\t-0.858506445144996300,\t\n-0.858532084210485320,\t-0.858557721129644120,\t-0.858583355902408640,\t-0.858608988528715030,\t-0.858634619008498690,\t-0.858660247341695990,\t-0.858685873528242550,\t-0.858711497568074410,\t\n-0.858737119461127410,\t-0.858762739207337700,\t-0.858788356806641340,\t-0.858813972258973930,\t-0.858839585564271760,\t-0.858865196722470410,\t-0.858890805733506070,\t-0.858916412597314660,\t\n-0.858942017313832350,\t-0.858967619882994860,\t-0.858993220304738680,\t-0.859018818578999090,\t-0.859044414705712690,\t-0.859070008684815090,\t-0.859095600516242450,\t-0.859121190199930830,\t\n-0.859146777735816270,\t-0.859172363123834710,\t-0.859197946363922440,\t-0.859223527456015160,\t-0.859249106400049150,\t-0.859274683195960230,\t-0.859300257843684690,\t-0.859325830343158350,\t\n-0.859351400694317590,\t-0.859376968897098470,\t-0.859402534951436700,\t-0.859428098857268790,\t-0.859453660614530430,\t-0.859479220223157920,\t-0.859504777683087420,\t-0.859530332994254850,\t\n-0.859555886156596620,\t-0.859581437170048760,\t-0.859606986034547100,\t-0.859632532750028270,\t-0.859658077316427850,\t-0.859683619733682240,\t-0.859709160001727590,\t-0.859734698120499960,\t\n-0.859760234089935630,\t-0.859785767909970970,\t-0.859811299580541920,\t-0.859836829101584320,\t-0.859862356473034660,\t-0.859887881694829210,\t-0.859913404766903920,\t-0.859938925689195170,\t\n-0.859964444461639330,\t-0.859989961084172250,\t-0.860015475556730300,\t-0.860040987879249540,\t-0.860066498051666350,\t-0.860092006073916890,\t-0.860117511945937440,\t-0.860143015667664160,\t\n-0.860168517239033540,\t-0.860194016659981520,\t-0.860219513930444490,\t-0.860245009050358610,\t-0.860270502019660150,\t-0.860295992838285510,\t-0.860321481506170830,\t-0.860346968023252610,\t\n-0.860372452389466800,\t-0.860397934604750110,\t-0.860423414669038380,\t-0.860448892582267980,\t-0.860474368344375520,\t-0.860499841955297050,\t-0.860525313414968960,\t-0.860550782723327860,\t\n-0.860576249880309560,\t-0.860601714885850800,\t-0.860627177739887620,\t-0.860652638442356510,\t-0.860678096993193640,\t-0.860703553392335730,\t-0.860729007639718820,\t-0.860754459735279640,\t\n-0.860779909678954120,\t-0.860805357470678990,\t-0.860830803110390290,\t-0.860856246598024620,\t-0.860881687933518270,\t-0.860907127116807720,\t-0.860932564147829480,\t-0.860957999026519700,\t\n-0.860983431752815220,\t-0.861008862326651860,\t-0.861034290747966340,\t-0.861059717016695040,\t-0.861085141132774570,\t-0.861110563096141090,\t-0.861135982906731550,\t-0.861161400564481870,\t\n-0.861186816069328790,\t-0.861212229421208560,\t-0.861237640620057700,\t-0.861263049665812690,\t-0.861288456558410130,\t-0.861313861297786310,\t-0.861339263883878160,\t-0.861364664316621840,\t\n-0.861390062595953740,\t-0.861415458721810360,\t-0.861440852694128290,\t-0.861466244512844150,\t-0.861491634177894430,\t-0.861517021689215850,\t-0.861542407046744450,\t-0.861567790250417300,\t\n-0.861593171300170440,\t-0.861618550195940580,\t-0.861643926937664450,\t-0.861669301525278430,\t-0.861694673958719130,\t-0.861720044237923480,\t-0.861745412362827420,\t-0.861770778333368010,\t\n-0.861796142149481530,\t-0.861821503811104670,\t-0.861846863318174060,\t-0.861872220670626190,\t-0.861897575868398100,\t-0.861922928911425860,\t-0.861948279799646390,\t-0.861973628532996190,\t\n-0.861998975111411770,\t-0.862024319534829940,\t-0.862049661803187320,\t-0.862075001916420610,\t-0.862100339874466550,\t-0.862125675677261390,\t-0.862151009324742310,\t-0.862176340816845470,\t\n-0.862201670153507790,\t-0.862226997334666010,\t-0.862252322360256620,\t-0.862277645230216440,\t-0.862302965944482410,\t-0.862328284502990710,\t-0.862353600905678590,\t-0.862378915152482220,\t\n-0.862404227243338430,\t-0.862429537178184270,\t-0.862454844956956120,\t-0.862480150579591150,\t-0.862505454046025630,\t-0.862530755356196610,\t-0.862556054510040470,\t-0.862581351507494270,\t\n-0.862606646348494600,\t-0.862631939032978410,\t-0.862657229560882310,\t-0.862682517932143340,\t-0.862707804146697900,\t-0.862733088204483240,\t-0.862758370105435550,\t-0.862783649849491960,\t\n-0.862808927436589210,\t-0.862834202866664120,\t-0.862859476139653860,\t-0.862884747255494580,\t-0.862910016214123670,\t-0.862935283015477510,\t-0.862960547659493150,\t-0.862985810146107420,\t\n-0.863011070475257270,\t-0.863036328646879290,\t-0.863061584660910760,\t-0.863086838517288070,\t-0.863112090215948480,\t-0.863137339756828490,\t-0.863162587139865050,\t-0.863187832364995190,\t\n-0.863213075432155860,\t-0.863238316341283670,\t-0.863263555092316000,\t-0.863288791685189240,\t-0.863314026119840650,\t-0.863339258396206840,\t-0.863364488514224870,\t-0.863389716473831670,\t\n-0.863414942274964180,\t-0.863440165917559570,\t-0.863465387401554320,\t-0.863490606726885820,\t-0.863515823893490580,\t-0.863541038901305740,\t-0.863566251750268350,\t-0.863591462440315260,\t\n-0.863616670971383620,\t-0.863641877343410470,\t-0.863667081556332430,\t-0.863692283610086880,\t-0.863717483504610420,\t-0.863742681239840220,\t-0.863767876815713320,\t-0.863793070232166780,\t\n-0.863818261489137540,\t-0.863843450586562870,\t-0.863868637524379590,\t-0.863893822302524430,\t-0.863919004920934760,\t-0.863944185379547540,\t-0.863969363678299910,\t-0.863994539817128810,\t\n-0.864019713795971640,\t-0.864044885614765000,\t-0.864070055273446270,\t-0.864095222771952280,\t-0.864120388110220180,\t-0.864145551288187150,\t-0.864170712305790120,\t-0.864195871162966480,\t\n-0.864221027859653270,\t-0.864246182395787320,\t-0.864271334771306020,\t-0.864296484986146310,\t-0.864321633040245340,\t-0.864346778933540280,\t-0.864371922665968300,\t-0.864397064237466650,\t\n-0.864422203647972180,\t-0.864447340897422480,\t-0.864472475985754050,\t-0.864497608912904610,\t-0.864522739678811100,\t-0.864547868283410680,\t-0.864572994726640620,\t-0.864598119008438300,\t\n-0.864623241128740450,\t-0.864648361087484660,\t-0.864673478884607880,\t-0.864698594520047270,\t-0.864723707993740210,\t-0.864748819305623970,\t-0.864773928455635610,\t-0.864799035443712620,\t\n-0.864824140269791930,\t-0.864849242933811050,\t-0.864874343435706790,\t-0.864899441775416670,\t-0.864924537952878050,\t-0.864949631968027990,\t-0.864974723820804090,\t-0.864999813511143190,\t\n-0.865024901038983000,\t-0.865049986404260340,\t-0.865075069606912610,\t-0.865100150646877290,\t-0.865125229524091540,\t-0.865150306238492760,\t-0.865175380790018430,\t-0.865200453178605500,\t\n-0.865225523404191570,\t-0.865250591466713570,\t-0.865275657366109120,\t-0.865300721102315600,\t-0.865325782675270270,\t-0.865350842084910420,\t-0.865375899331173760,\t-0.865400954413997230,\t\n-0.865426007333318200,\t-0.865451058089074080,\t-0.865476106681202450,\t-0.865501153109640380,\t-0.865526197374325570,\t-0.865551239475195410,\t-0.865576279412186960,\t-0.865601317185238030,\t\n-0.865626352794285570,\t-0.865651386239267180,\t-0.865676417520120370,\t-0.865701446636782500,\t-0.865726473589191080,\t-0.865751498377283710,\t-0.865776521000997330,\t-0.865801541460269770,\t\n-0.865826559755038190,\t-0.865851575885240310,\t-0.865876589850813390,\t-0.865901601651695050,\t-0.865926611287822890,\t-0.865951618759134070,\t-0.865976624065566300,\t-0.866001627207056870,\t\n-0.866026628183543260,\t-0.866051626994963190,\t-0.866076623641253930,\t-0.866101618122353200,\t-0.866126610438198610,\t-0.866151600588727310,\t-0.866176588573877140,\t-0.866201574393585360,\t\n-0.866226558047789700,\t-0.866251539536427530,\t-0.866276518859436570,\t-0.866301496016754210,\t-0.866326471008318500,\t-0.866351443834066260,\t-0.866376414493935650,\t-0.866401382987863840,\t\n-0.866426349315788550,\t-0.866451313477647370,\t-0.866476275473377910,\t-0.866501235302918000,\t-0.866526192966204810,\t-0.866551148463176270,\t-0.866576101793769760,\t-0.866601052957922890,\t\n-0.866626001955573380,\t-0.866650948786658940,\t-0.866675893451117170,\t-0.866700835948885810,\t-0.866725776279902100,\t-0.866750714444104230,\t-0.866775650441429350,\t-0.866800584271815280,\t\n-0.866825515935199850,\t-0.866850445431520570,\t-0.866875372760715250,\t-0.866900297922721610,\t-0.866925220917477260,\t-0.866950141744919690,\t-0.866975060404986730,\t-0.866999976897616100,\t\n-0.867024891222745510,\t-0.867049803380312790,\t-0.867074713370255660,\t-0.867099621192511600,\t-0.867124526847018680,\t-0.867149430333714280,\t-0.867174331652536210,\t-0.867199230803422430,\t\n-0.867224127786310530,\t-0.867249022601138230,\t-0.867273915247843700,\t-0.867298805726364090,\t-0.867323694036637670,\t-0.867348580178601950,\t-0.867373464152194630,\t-0.867398345957353660,\t\n-0.867423225594016860,\t-0.867448103062122280,\t-0.867472978361607080,\t-0.867497851492409770,\t-0.867522722454467600,\t-0.867547591247718520,\t-0.867572457872100580,\t-0.867597322327551380,\t\n-0.867622184614008970,\t-0.867647044731411300,\t-0.867671902679695850,\t-0.867696758458800790,\t-0.867721612068663610,\t-0.867746463509222470,\t-0.867771312780415080,\t-0.867796159882179400,\t\n-0.867821004814453460,\t-0.867845847577175090,\t-0.867870688170281900,\t-0.867895526593712270,\t-0.867920362847403590,\t-0.867945196931294020,\t-0.867970028845321370,\t-0.867994858589423710,\t\n-0.868019686163539190,\t-0.868044511567605090,\t-0.868069334801560010,\t-0.868094155865341440,\t-0.868118974758887330,\t-0.868143791482135940,\t-0.868168606035024990,\t-0.868193418417492540,\t\n-0.868218228629476730,\t-0.868243036670915180,\t-0.868267842541746270,\t-0.868292646241907500,\t-0.868317447771337130,\t-0.868342247129973100,\t-0.868367044317753470,\t-0.868391839334616170,\t\n-0.868416632180499580,\t-0.868441422855341430,\t-0.868466211359079420,\t-0.868490997691651940,\t-0.868515781852996940,\t-0.868540563843052560,\t-0.868565343661756640,\t-0.868590121309047670,\t\n-0.868614896784863140,\t-0.868639670089141670,\t-0.868664441221820630,\t-0.868689210182838620,\t-0.868713976972133590,\t-0.868738741589643590,\t-0.868763504035306780,\t-0.868788264309061310,\t\n-0.868813022410845020,\t-0.868837778340596500,\t-0.868862532098253150,\t-0.868887283683753560,\t-0.868912033097035800,\t-0.868936780338037900,\t-0.868961525406698240,\t-0.868986268302954560,\t\n-0.869011009026745440,\t-0.869035747578008610,\t-0.869060483956682450,\t-0.869085218162705010,\t-0.869109950196014560,\t-0.869134680056549150,\t-0.869159407744247380,\t-0.869184133259046750,\t\n-0.869208856600886090,\t-0.869233577769703000,\t-0.869258296765436090,\t-0.869283013588023290,\t-0.869307728237403100,\t-0.869332440713513450,\t-0.869357151016293070,\t-0.869381859145679450,\t\n-0.869406565101611520,\t-0.869431268884026890,\t-0.869455970492864050,\t-0.869480669928061390,\t-0.869505367189556950,\t-0.869530062277289350,\t-0.869554755191196400,\t-0.869579445931216830,\t\n-0.869604134497288350,\t-0.869628820889349560,\t-0.869653505107338630,\t-0.869678187151194050,\t-0.869702867020853980,\t-0.869727544716256910,\t-0.869752220237340890,\t-0.869776893584044420,\t\n-0.869801564756305550,\t-0.869826233754062650,\t-0.869850900577254340,\t-0.869875565225818660,\t-0.869900227699694330,\t-0.869924887998819170,\t-0.869949546123132130,\t-0.869974202072570920,\t\n-0.869998855847074150,\t-0.870023507446580300,\t-0.870048156871027660,\t-0.870072804120354700,\t-0.870097449194499940,\t-0.870122092093401190,\t-0.870146732816997610,\t-0.870171371365226930,\t\n-0.870196007738027740,\t-0.870220641935338660,\t-0.870245273957097830,\t-0.870269903803243870,\t-0.870294531473715490,\t-0.870319156968450410,\t-0.870343780287387680,\t-0.870368401430465340,\t\n-0.870393020397622010,\t-0.870417637188796060,\t-0.870442251803925980,\t-0.870466864242950610,\t-0.870491474505807770,\t-0.870516082592436510,\t-0.870540688502774770,\t-0.870565292236761380,\t\n-0.870589893794334710,\t-0.870614493175433380,\t-0.870639090379995760,\t-0.870663685407960690,\t-0.870688278259266090,\t-0.870712868933851030,\t-0.870737457431653650,\t-0.870762043752612570,\t\n-0.870786627896666390,\t-0.870811209863753710,\t-0.870835789653812920,\t-0.870860367266782840,\t-0.870884942702601970,\t-0.870909515961208470,\t-0.870934087042541160,\t-0.870958655946538650,\t\n-0.870983222673139430,\t-0.871007787222282230,\t-0.871032349593905740,\t-0.871056909787948250,\t-0.871081467804348590,\t-0.871106023643045120,\t-0.871130577303976580,\t-0.871155128787081570,\t\n-0.871179678092298680,\t-0.871204225219566750,\t-0.871228770168824380,\t-0.871253312940009850,\t-0.871277853533062310,\t-0.871302391947919920,\t-0.871326928184521510,\t-0.871351462242805800,\t\n-0.871375994122711380,\t-0.871400523824177210,\t-0.871425051347141540,\t-0.871449576691543440,\t-0.871474099857321270,\t-0.871498620844413760,\t-0.871523139652759740,\t-0.871547656282297800,\t\n-0.871572170732966780,\t-0.871596683004705610,\t-0.871621193097452450,\t-0.871645701011146470,\t-0.871670206745726150,\t-0.871694710301130220,\t-0.871719211677297490,\t-0.871743710874166800,\t\n-0.871768207891676750,\t-0.871792702729766500,\t-0.871817195388374210,\t-0.871841685867439150,\t-0.871866174166899710,\t-0.871890660286694820,\t-0.871915144226763310,\t-0.871939625987043890,\t\n-0.871964105567475610,\t-0.871988582967996860,\t-0.872013058188546910,\t-0.872037531229064020,\t-0.872062002089487360,\t-0.872086470769755650,\t-0.872110937269807820,\t-0.872135401589582580,\t\n-0.872159863729019100,\t-0.872184323688055760,\t-0.872208781466631830,\t-0.872233237064685700,\t-0.872257690482156510,\t-0.872282141718983110,\t-0.872306590775104310,\t-0.872331037650458940,\t\n-0.872355482344986390,\t-0.872379924858625030,\t-0.872404365191313590,\t-0.872428803342991330,\t-0.872453239313596970,\t-0.872477673103069670,\t-0.872502104711348040,\t-0.872526534138371450,\t\n-0.872550961384078280,\t-0.872575386448407820,\t-0.872599809331298880,\t-0.872624230032690300,\t-0.872648648552521110,\t-0.872673064890730380,\t-0.872697479047256920,\t-0.872721891022040010,\t\n-0.872746300815018140,\t-0.872770708426130800,\t-0.872795113855316380,\t-0.872819517102514260,\t-0.872843918167663380,\t-0.872868317050702560,\t-0.872892713751571290,\t-0.872917108270207960,\t\n-0.872941500606552070,\t-0.872965890760542210,\t-0.872990278732117650,\t-0.873014664521217340,\t-0.873039048127780440,\t-0.873063429551745980,\t-0.873087808793053030,\t-0.873112185851640410,\t\n-0.873136560727447500,\t-0.873160933420413010,\t-0.873185303930476220,\t-0.873209672257576060,\t-0.873234038401651810,\t-0.873258402362642410,\t-0.873282764140487220,\t-0.873307123735124980,\t\n-0.873331481146495060,\t-0.873355836374536290,\t-0.873380189419187940,\t-0.873404540280389050,\t-0.873428888958078800,\t-0.873453235452196550,\t-0.873477579762681030,\t-0.873501921889471840,\t\n-0.873526261832507590,\t-0.873550599591727650,\t-0.873574935167071190,\t-0.873599268558477360,\t-0.873623599765885440,\t-0.873647928789234810,\t-0.873672255628463960,\t-0.873696580283512820,\t\n-0.873720902754320020,\t-0.873745223040824910,\t-0.873769541142966680,\t-0.873793857060684690,\t-0.873818170793917990,\t-0.873842482342606200,\t-0.873866791706688130,\t-0.873891098886102840,\t\n-0.873915403880789810,\t-0.873939706690688320,\t-0.873964007315737530,\t-0.873988305755876720,\t-0.874012602011045360,\t-0.874036896081182290,\t-0.874061187966227230,\t-0.874085477666118880,\t\n-0.874109765180796860,\t-0.874134050510200540,\t-0.874158333654268980,\t-0.874182614612941670,\t-0.874206893386157980,\t-0.874231169973856860,\t-0.874255444375978020,\t-0.874279716592460400,\t\n-0.874303986623243490,\t-0.874328254468266560,\t-0.874352520127469000,\t-0.874376783600790410,\t-0.874401044888169610,\t-0.874425303989546320,\t-0.874449560904859700,\t-0.874473815634049130,\t\n-0.874498068177054000,\t-0.874522318533813680,\t-0.874546566704267560,\t-0.874570812688355350,\t-0.874595056486015760,\t-0.874619298097188860,\t-0.874643537521813450,\t-0.874667774759829150,\t\n-0.874692009811175450,\t-0.874716242675791730,\t-0.874740473353617490,\t-0.874764701844592100,\t-0.874788928148654830,\t-0.874813152265745520,\t-0.874837374195803100,\t-0.874861593938767170,\t\n-0.874885811494577340,\t-0.874910026863172870,\t-0.874934240044493610,\t-0.874958451038478580,\t-0.874982659845067510,\t-0.875006866464199670,\t-0.875031070895814670,\t-0.875055273139851990,\t\n-0.875079473196251120,\t-0.875103671064951570,\t-0.875127866745893050,\t-0.875152060239014600,\t-0.875176251544256270,\t-0.875200440661557110,\t-0.875224627590856840,\t-0.875248812332094950,\t\n-0.875272994885211040,\t-0.875297175250144720,\t-0.875321353426835590,\t-0.875345529415223140,\t-0.875369703215246650,\t-0.875393874826845830,\t-0.875418044249960390,\t-0.875442211484529830,\t\n-0.875466376530493750,\t-0.875490539387791870,\t-0.875514700056363560,\t-0.875538858536148660,\t-0.875563014827086320,\t-0.875587168929116480,\t-0.875611320842178740,\t-0.875635470566212710,\t\n-0.875659618101158000,\t-0.875683763446954420,\t-0.875707906603541250,\t-0.875732047570858540,\t-0.875756186348845560,\t-0.875780322937442010,\t-0.875804457336587630,\t-0.875828589546222220,\t\n-0.875852719566285520,\t-0.875876847396716780,\t-0.875900973037456070,\t-0.875925096488442860,\t-0.875949217749616760,\t-0.875973336820917710,\t-0.875997453702285320,\t-0.876021568393659190,\t\n-0.876045680894979470,\t-0.876069791206185330,\t-0.876093899327216820,\t-0.876118005258013420,\t-0.876142108998515080,\t-0.876166210548661390,\t-0.876190309908392200,\t-0.876214407077647190,\t\n-0.876238502056366440,\t-0.876262594844489100,\t-0.876286685441955650,\t-0.876310773848705150,\t-0.876334860064677760,\t-0.876358944089813190,\t-0.876383025924051260,\t-0.876407105567332030,\t\n-0.876431183019594880,\t-0.876455258280779860,\t-0.876479331350826560,\t-0.876503402229674930,\t-0.876527470917264680,\t-0.876551537413535860,\t-0.876575601718428190,\t-0.876599663831881700,\t\n-0.876623723753835900,\t-0.876647781484230950,\t-0.876671837023006330,\t-0.876695890370102090,\t-0.876719941525458180,\t-0.876743990489014410,\t-0.876768037260710840,\t-0.876792081840487070,\t\n-0.876816124228283260,\t-0.876840164424038890,\t-0.876864202427694140,\t-0.876888238239188820,\t-0.876912271858462990,\t-0.876936303285456350,\t-0.876960332520109300,\t-0.876984359562361200,\t\n-0.877008384412152340,\t-0.877032407069422320,\t-0.877056427534111280,\t-0.877080445806159180,\t-0.877104461885506060,\t-0.877128475772091630,\t-0.877152487465856390,\t-0.877176496966739610,\t\n-0.877200504274681770,\t-0.877224509389622490,\t-0.877248512311502030,\t-0.877272513040260220,\t-0.877296511575837100,\t-0.877320507918172950,\t-0.877344502067207270,\t-0.877368494022880640,\t\n-0.877392483785132460,\t-0.877416471353903100,\t-0.877440456729132620,\t-0.877464439910760950,\t-0.877488420898728140,\t-0.877512399692974570,\t-0.877536376293439720,\t-0.877560350700064220,\t\n-0.877584322912787650,\t-0.877608292931550180,\t-0.877632260756291970,\t-0.877656226386953180,\t-0.877680189823473840,\t-0.877704151065794140,\t-0.877728110113853880,\t-0.877752066967593560,\t\n-0.877776021626952900,\t-0.877799974091872160,\t-0.877823924362291510,\t-0.877847872438151100,\t-0.877871818319391100,\t-0.877895762005951430,\t-0.877919703497772490,\t-0.877943642794794200,\t\n-0.877967579896956730,\t-0.877991514804200230,\t-0.878015447516464990,\t-0.878039378033691250,\t-0.878063306355819200,\t-0.878087232482788640,\t-0.878111156414540180,\t-0.878135078151013770,\t\n-0.878158997692149560,\t-0.878182915037887810,\t-0.878206830188168810,\t-0.878230743142933030,\t-0.878254653902120100,\t-0.878278562465670710,\t-0.878302468833524810,\t-0.878326373005622660,\t\n-0.878350274981904540,\t-0.878374174762310830,\t-0.878398072346781690,\t-0.878421967735257490,\t-0.878445860927678180,\t-0.878469751923984470,\t-0.878493640724116180,\t-0.878517527328013800,\t\n-0.878541411735617510,\t-0.878565293946867780,\t-0.878589173961704770,\t-0.878613051780069100,\t-0.878636927401900470,\t-0.878660800827139820,\t-0.878684672055726980,\t-0.878708541087602430,\t\n-0.878732407922706460,\t-0.878756272560979550,\t-0.878780135002362180,\t-0.878803995246794200,\t-0.878827853294216530,\t-0.878851709144568890,\t-0.878875562797792110,\t-0.878899414253826340,\t\n-0.878923263512612070,\t-0.878947110574089590,\t-0.878970955438199590,\t-0.878994798104882010,\t-0.879018638574077580,\t-0.879042476845726450,\t-0.879066312919769000,\t-0.879090146796145830,\t\n-0.879113978474797330,\t-0.879137807955663870,\t-0.879161635238686070,\t-0.879185460323804180,\t-0.879209283210958480,\t-0.879233103900089460,\t-0.879256922391137730,\t-0.879280738684043770,\t\n-0.879304552778747860,\t-0.879328364675190930,\t-0.879352174373312700,\t-0.879375981873054320,\t-0.879399787174355850,\t-0.879423590277157770,\t-0.879447391181400810,\t-0.879471189887025330,\t\n-0.879494986393971940,\t-0.879518780702181260,\t-0.879542572811593430,\t-0.879566362722149280,\t-0.879590150433789190,\t-0.879613935946453540,\t-0.879637719260083160,\t-0.879661500374618430,\t\n-0.879685279290000180,\t-0.879709056006168550,\t-0.879732830523064500,\t-0.879756602840628180,\t-0.879780372958800290,\t-0.879804140877521460,\t-0.879827906596732270,\t-0.879851670116373330,\t\n-0.879875431436385470,\t-0.879899190556708840,\t-0.879922947477284390,\t-0.879946702198052380,\t-0.879970454718953630,\t-0.879994205039928650,\t-0.880017953160918240,\t-0.880041699081862920,\t\n-0.880065442802703600,\t-0.880089184323380460,\t-0.880112923643834530,\t-0.880136660764006100,\t-0.880160395683835970,\t-0.880184128403264990,\t-0.880207858922233520,\t-0.880231587240682730,\t\n-0.880255313358552780,\t-0.880279037275784710,\t-0.880302758992318800,\t-0.880326478508095980,\t-0.880350195823057070,\t-0.880373910937142570,\t-0.880397623850293300,\t-0.880421334562450310,\t\n-0.880445043073553650,\t-0.880468749383544580,\t-0.880492453492363490,\t-0.880516155399951210,\t-0.880539855106248550,\t-0.880563552611196340,\t-0.880587247914735190,\t-0.880610941016806150,\t\n-0.880634631917349700,\t-0.880658320616306440,\t-0.880682007113617440,\t-0.880705691409223500,\t-0.880729373503065240,\t-0.880753053395083580,\t-0.880776731085219480,\t-0.880800406573413300,\t\n-0.880824079859606310,\t-0.880847750943739020,\t-0.880871419825752230,\t-0.880895086505587010,\t-0.880918750983183950,\t-0.880942413258484100,\t-0.880966073331428400,\t-0.880989731201957340,\t\n-0.881013386870012070,\t-0.881037040335533210,\t-0.881060691598461680,\t-0.881084340658738530,\t-0.881107987516304370,\t-0.881131632171100580,\t-0.881155274623067530,\t-0.881178914872146390,\t\n-0.881202552918277760,\t-0.881226188761402800,\t-0.881249822401462430,\t-0.881273453838397390,\t-0.881297083072148710,\t-0.881320710102657670,\t-0.881344334929864530,\t-0.881367957553710780,\t\n-0.881391577974136920,\t-0.881415196191084100,\t-0.881438812204493380,\t-0.881462426014305580,\t-0.881486037620461740,\t-0.881509647022902910,\t-0.881533254221569810,\t-0.881556859216403810,\t\n-0.881580462007345520,\t-0.881604062594335990,\t-0.881627660977316260,\t-0.881651257156227500,\t-0.881674851131010740,\t-0.881698442901606590,\t-0.881722032467956550,\t-0.881745619830001330,\t\n-0.881769204987681960,\t-0.881792787940939630,\t-0.881816368689715360,\t-0.881839947233950090,\t-0.881863523573585220,\t-0.881887097708561220,\t-0.881910669638819810,\t-0.881934239364301490,\t\n-0.881957806884947510,\t-0.881981372200699170,\t-0.882004935311497260,\t-0.882028496217283080,\t-0.882052054917997760,\t-0.882075611413582370,\t-0.882099165703977840,\t-0.882122717789125210,\t\n-0.882146267668965980,\t-0.882169815343440970,\t-0.882193360812491440,\t-0.882216904076058680,\t-0.882240445134083510,\t-0.882263983986507410,\t-0.882287520633271090,\t-0.882311055074316060,\t\n-0.882334587309583360,\t-0.882358117339014150,\t-0.882381645162549690,\t-0.882405170780131360,\t-0.882428694191699890,\t-0.882452215397196760,\t-0.882475734396563020,\t-0.882499251189739930,\t\n-0.882522765776668660,\t-0.882546278157290480,\t-0.882569788331546870,\t-0.882593296299378550,\t-0.882616802060727230,\t-0.882640305615533640,\t-0.882663806963739360,\t-0.882687306105285450,\t\n-0.882710803040113400,\t-0.882734297768164260,\t-0.882757790289379620,\t-0.882781280603700310,\t-0.882804768711067940,\t-0.882828254611423450,\t-0.882851738304708420,\t-0.882875219790863920,\t\n-0.882898699069831430,\t-0.882922176141552220,\t-0.882945651005967780,\t-0.882969123663018940,\t-0.882992594112647520,\t-0.883016062354794460,\t-0.883039528389401140,\t-0.883062992216409160,\t\n-0.883086453835759570,\t-0.883109913247394070,\t-0.883133370451253620,\t-0.883156825447279910,\t-0.883180278235414010,\t-0.883203728815597280,\t-0.883227177187771330,\t-0.883250623351877430,\t\n-0.883274067307856960,\t-0.883297509055651520,\t-0.883320948595202160,\t-0.883344385926450480,\t-0.883367821049337750,\t-0.883391253963805470,\t-0.883414684669795000,\t-0.883438113167247850,\t\n-0.883461539456105620,\t-0.883484963536309340,\t-0.883508385407800860,\t-0.883531805070521200,\t-0.883555222524412100,\t-0.883578637769414920,\t-0.883602050805471050,\t-0.883625461632522090,\t\n-0.883648870250509750,\t-0.883672276659374980,\t-0.883695680859059700,\t-0.883719082849505070,\t-0.883742482630652690,\t-0.883765880202444070,\t-0.883789275564820900,\t-0.883812668717724350,\t\n-0.883836059661096460,\t-0.883859448394878180,\t-0.883882834919011540,\t-0.883906219233437480,\t-0.883929601338097950,\t-0.883952981232934420,\t-0.883976358917888390,\t-0.883999734392901690,\t\n-0.884023107657915470,\t-0.884046478712871790,\t-0.884069847557711560,\t-0.884093214192376740,\t-0.884116578616808920,\t-0.884139940830949600,\t-0.884163300834740480,\t-0.884186658628123290,\t\n-0.884210014211039290,\t-0.884233367583430410,\t-0.884256718745237920,\t-0.884280067696403550,\t-0.884303414436869110,\t-0.884326758966576200,\t-0.884350101285466210,\t-0.884373441393481290,\t\n-0.884396779290562600,\t-0.884420114976652070,\t-0.884443448451691090,\t-0.884466779715621490,\t-0.884490108768384960,\t-0.884513435609923130,\t-0.884536760240177910,\t-0.884560082659090590,\t\n-0.884583402866603310,\t-0.884606720862657350,\t-0.884630036647194420,\t-0.884653350220156560,\t-0.884676661581485280,\t-0.884699970731122280,\t-0.884723277669009600,\t-0.884746582395088630,\t\n-0.884769884909301310,\t-0.884793185211589010,\t-0.884816483301893890,\t-0.884839779180157440,\t-0.884863072846321600,\t-0.884886364300328300,\t-0.884909653542118810,\t-0.884932940571635520,\t\n-0.884956225388819570,\t-0.884979507993613020,\t-0.885002788385957810,\t-0.885026066565795520,\t-0.885049342533068220,\t-0.885072616287717610,\t-0.885095887829685290,\t-0.885119157158913540,\t\n-0.885142424275343620,\t-0.885165689178917690,\t-0.885188951869577470,\t-0.885212212347264880,\t-0.885235470611921870,\t-0.885258726663490260,\t-0.885281980501911650,\t-0.885305232127128310,\t\n-0.885328481539081720,\t-0.885351728737713950,\t-0.885374973722966810,\t-0.885398216494782230,\t-0.885421457053102270,\t-0.885444695397868520,\t-0.885467931529023260,\t-0.885491165446507860,\t\n-0.885514397150264700,\t-0.885537626640235390,\t-0.885560853916362080,\t-0.885584078978586710,\t-0.885607301826851320,\t-0.885630522461097410,\t-0.885653740881267360,\t-0.885676957087302870,\t\n-0.885700171079145890,\t-0.885723382856738570,\t-0.885746592420022740,\t-0.885769799768940440,\t-0.885793004903433820,\t-0.885816207823444720,\t-0.885839408528914960,\t-0.885862607019786590,\t\n-0.885885803296001750,\t-0.885908997357502390,\t-0.885932189204230450,\t-0.885955378836128400,\t-0.885978566253137640,\t-0.886001751455200550,\t-0.886024934442259050,\t-0.886048115214255080,\t\n-0.886071293771130920,\t-0.886094470112828490,\t-0.886117644239289850,\t-0.886140816150457370,\t-0.886163985846272540,\t-0.886187153326678080,\t-0.886210318591615480,\t-0.886233481641027110,\t\n-0.886256642474854920,\t-0.886279801093041280,\t-0.886302957495528230,\t-0.886326111682257610,\t-0.886349263653171900,\t-0.886372413408212930,\t-0.886395560947322860,\t-0.886418706270443830,\t\n-0.886441849377518130,\t-0.886464990268487680,\t-0.886488128943295100,\t-0.886511265401881960,\t-0.886534399644190780,\t-0.886557531670163490,\t-0.886580661479742350,\t-0.886603789072869520,\t\n-0.886626914449487270,\t-0.886650037609537640,\t-0.886673158552963250,\t-0.886696277279705680,\t-0.886719393789707540,\t-0.886742508082910890,\t-0.886765620159257860,\t-0.886788730018690850,\t\n-0.886811837661151900,\t-0.886834943086583620,\t-0.886858046294927820,\t-0.886881147286127100,\t-0.886904246060123300,\t-0.886927342616858900,\t-0.886950436956276070,\t-0.886973529078317170,\t\n-0.886996618982924480,\t-0.887019706670040490,\t-0.887042792139607020,\t-0.887065875391566670,\t-0.887088956425861500,\t-0.887112035242433980,\t-0.887135111841226290,\t-0.887158186222180900,\t\n-0.887181258385239980,\t-0.887204328330346130,\t-0.887227396057441500,\t-0.887250461566468140,\t-0.887273524857368550,\t-0.887296585930085310,\t-0.887319644784560490,\t-0.887342701420736570,\t\n-0.887365755838556150,\t-0.887388808037961050,\t-0.887411858018894220,\t-0.887434905781297580,\t-0.887457951325113630,\t-0.887480994650284740,\t-0.887504035756753410,\t-0.887527074644462010,\t\n-0.887550111313353040,\t-0.887573145763368650,\t-0.887596177994451670,\t-0.887619208006543920,\t-0.887642235799588230,\t-0.887665261373526970,\t-0.887688284728302520,\t-0.887711305863857490,\t\n-0.887734324780134140,\t-0.887757341477075080,\t-0.887780355954622460,\t-0.887803368212718990,\t-0.887826378251307060,\t-0.887849386070329260,\t-0.887872391669727980,\t-0.887895395049445810,\t\n-0.887918396209425030,\t-0.887941395149608460,\t-0.887964391869938250,\t-0.887987386370357010,\t-0.888010378650807340,\t-0.888033368711231620,\t-0.888056356551572560,\t-0.888079342171772870,\t\n-0.888102325571774490,\t-0.888125306751520570,\t-0.888148285710953170,\t-0.888171262450015100,\t-0.888194236968648850,\t-0.888217209266796930,\t-0.888240179344402250,\t-0.888263147201406980,\t\n-0.888286112837753940,\t-0.888309076253385510,\t-0.888332037448244290,\t-0.888354996422273110,\t-0.888377953175414350,\t-0.888400907707610710,\t-0.888423860018805020,\t-0.888446810108939440,\t\n-0.888469757977957130,\t-0.888492703625800130,\t-0.888515647052411370,\t-0.888538588257733570,\t-0.888561527241709230,\t-0.888584464004281150,\t-0.888607398545392060,\t-0.888630330864984440,\t\n-0.888653260963000790,\t-0.888676188839384040,\t-0.888699114494076790,\t-0.888722037927021760,\t-0.888744959138161650,\t-0.888767878127439290,\t-0.888790794894797180,\t-0.888813709440178120,\t\n-0.888836621763524630,\t-0.888859531864779620,\t-0.888882439743885810,\t-0.888905345400785810,\t-0.888928248835422540,\t-0.888951150047738840,\t-0.888974049037676960,\t-0.888996945805180290,\t\n-0.889019840350190990,\t-0.889042732672651990,\t-0.889065622772506340,\t-0.889088510649696520,\t-0.889111396304165690,\t-0.889134279735856130,\t-0.889157160944711090,\t-0.889180039930672960,\t\n-0.889202916693684680,\t-0.889225791233689170,\t-0.889248663550629040,\t-0.889271533644447440,\t-0.889294401515087100,\t-0.889317267162490600,\t-0.889340130586601110,\t-0.889362991787361110,\t\n-0.889385850764713550,\t-0.889408707518601460,\t-0.889431562048967560,\t-0.889454414355754790,\t-0.889477264438906180,\t-0.889500112298364230,\t-0.889522957934072100,\t-0.889545801345972500,\t\n-0.889568642534008360,\t-0.889591481498122500,\t-0.889614318238258090,\t-0.889637152754358060,\t-0.889659985046364900,\t-0.889682815114221980,\t-0.889705642957871800,\t-0.889728468577257510,\t\n-0.889751291972322170,\t-0.889774113143008470,\t-0.889796932089259580,\t-0.889819748811018440,\t-0.889842563308227860,\t-0.889865375580831010,\t-0.889888185628770480,\t-0.889910993451989540,\t\n-0.889933799050431130,\t-0.889956602424038180,\t-0.889979403572753740,\t-0.890002202496521070,\t-0.890024999195282770,\t-0.890047793668981790,\t-0.890070585917561390,\t-0.890093375940964490,\t\n-0.890116163739134160,\t-0.890138949312013430,\t-0.890161732659545460,\t-0.890184513781673070,\t-0.890207292678339530,\t-0.890230069349487560,\t-0.890252843795060420,\t-0.890275616015001160,\t\n-0.890298386009252930,\t-0.890321153777758670,\t-0.890343919320461750,\t-0.890366682637304780,\t-0.890389443728231370,\t-0.890412202593184100,\t-0.890434959232106360,\t-0.890457713644941200,\t\n-0.890480465831631760,\t-0.890503215792121440,\t-0.890525963526352720,\t-0.890548709034269410,\t-0.890571452315814140,\t-0.890594193370930150,\t-0.890616932199560730,\t-0.890639668801648910,\t\n-0.890662403177138070,\t-0.890685135325971270,\t-0.890707865248091530,\t-0.890730592943442260,\t-0.890753318411966370,\t-0.890776041653607130,\t-0.890798762668307820,\t-0.890821481456011590,\t\n-0.890844198016661700,\t-0.890866912350201430,\t-0.890889624456573710,\t-0.890912334335722140,\t-0.890935041987589550,\t-0.890957747412119420,\t-0.890980450609254790,\t-0.891003151578939170,\t\n-0.891025850321115700,\t-0.891048546835727540,\t-0.891071241122718180,\t-0.891093933182030450,\t-0.891116623013607940,\t-0.891139310617393930,\t-0.891161995993331570,\t-0.891184679141364230,\t\n-0.891207360061435420,\t-0.891230038753488050,\t-0.891252715217465740,\t-0.891275389453311420,\t-0.891298061460968570,\t-0.891320731240380690,\t-0.891343398791490940,\t-0.891366064114242910,\t\n-0.891388727208579420,\t-0.891411388074444420,\t-0.891434046711780730,\t-0.891456703120531820,\t-0.891479357300641320,\t-0.891502009252052360,\t-0.891524658974708340,\t-0.891547306468552850,\t\n-0.891569951733528930,\t-0.891592594769580420,\t-0.891615235576650120,\t-0.891637874154681760,\t-0.891660510503618720,\t-0.891683144623404370,\t-0.891705776513982200,\t-0.891728406175295810,\t\n-0.891751033607288130,\t-0.891773658809903110,\t-0.891796281783083790,\t-0.891818902526773650,\t-0.891841521040916410,\t-0.891864137325455220,\t-0.891886751380333910,\t-0.891909363205495630,\t\n-0.891931972800884100,\t-0.891954580166442360,\t-0.891977185302114230,\t-0.891999788207843090,\t-0.892022388883572550,\t-0.892044987329245980,\t-0.892067583544807200,\t-0.892090177530199260,\t\n-0.892112769285365980,\t-0.892135358810250630,\t-0.892157946104796930,\t-0.892180531168948350,\t-0.892203114002648400,\t-0.892225694605840670,\t-0.892248272978468980,\t-0.892270849120476490,\t\n-0.892293423031806810,\t-0.892315994712403420,\t-0.892338564162210130,\t-0.892361131381170460,\t-0.892383696369227870,\t-0.892406259126326320,\t-0.892428819652408940,\t-0.892451377947419690,\t\n-0.892473934011301710,\t-0.892496487843999040,\t-0.892519039445455080,\t-0.892541588815613520,\t-0.892564135954417970,\t-0.892586680861812250,\t-0.892609223537739640,\t-0.892631763982144280,\t\n-0.892654302194969220,\t-0.892676838176158390,\t-0.892699371925655520,\t-0.892721903443404190,\t-0.892744432729348340,\t-0.892766959783431120,\t-0.892789484605596820,\t-0.892812007195788460,\t\n-0.892834527553950210,\t-0.892857045680025550,\t-0.892879561573958420,\t-0.892902075235692210,\t-0.892924586665171160,\t-0.892947095862338340,\t-0.892969602827138000,\t-0.892992107559513530,\t\n-0.893014610059408740,\t-0.893037110326767360,\t-0.893059608361533310,\t-0.893082104163650190,\t-0.893104597733061940,\t-0.893127089069712170,\t-0.893149578173544680,\t-0.893172065044503190,\t\n-0.893194549682531540,\t-0.893217032087573410,\t-0.893239512259572770,\t-0.893261990198473520,\t-0.893284465904219170,\t-0.893306939376753760,\t-0.893329410616020780,\t-0.893351879621964380,\t\n-0.893374346394528280,\t-0.893396810933656190,\t-0.893419273239292160,\t-0.893441733311380220,\t-0.893464191149863640,\t-0.893486646754686810,\t-0.893509100125793100,\t-0.893531551263126780,\t\n-0.893554000166631450,\t-0.893576446836251260,\t-0.893598891271929820,\t-0.893621333473611390,\t-0.893643773441239690,\t-0.893666211174758310,\t-0.893688646674111300,\t-0.893711079939242810,\t\n-0.893733510970096570,\t-0.893755939766616600,\t-0.893778366328746960,\t-0.893800790656431140,\t-0.893823212749613630,\t-0.893845632608237790,\t-0.893868050232248020,\t-0.893890465621588030,\t\n-0.893912878776201850,\t-0.893935289696033530,\t-0.893957698381027120,\t-0.893980104831126330,\t-0.894002509046275430,\t-0.894024911026418120,\t-0.894047310771498460,\t-0.894069708281460600,\t\n-0.894092103556248460,\t-0.894114496595806220,\t-0.894136887400077570,\t-0.894159275969006790,\t-0.894181662302537820,\t-0.894204046400614570,\t-0.894226428263181220,\t-0.894248807890181800,\t\n-0.894271185281560350,\t-0.894293560437261160,\t-0.894315933357227810,\t-0.894338304041404910,\t-0.894360672489736050,\t-0.894383038702165400,\t-0.894405402678637220,\t-0.894427764419095550,\t\n-0.894450123923484550,\t-0.894472481191748270,\t-0.894494836223830750,\t-0.894517189019676250,\t-0.894539539579228600,\t-0.894561887902432070,\t-0.894584233989230810,\t-0.894606577839568980,\t\n-0.894628919453390960,\t-0.894651258830640340,\t-0.894673595971261840,\t-0.894695930875199160,\t-0.894718263542396700,\t-0.894740593972798480,\t-0.894762922166348900,\t-0.894785248122991870,\t\n-0.894807571842672010,\t-0.894829893325333030,\t-0.894852212570919400,\t-0.894874529579375190,\t-0.894896844350644540,\t-0.894919156884671830,\t-0.894941467181401220,\t-0.894963775240776970,\t\n-0.894986081062743470,\t-0.895008384647244750,\t-0.895030685994224860,\t-0.895052985103628300,\t-0.895075281975399210,\t-0.895097576609481970,\t-0.895119869005820750,\t-0.895142159164360130,\t\n-0.895164447085043840,\t-0.895186732767816680,\t-0.895209016212622500,\t-0.895231297419405660,\t-0.895253576388110650,\t-0.895275853118681740,\t-0.895298127611063200,\t-0.895320399865199510,\t\n-0.895342669881034610,\t-0.895364937658513220,\t-0.895387203197579360,\t-0.895409466498177430,\t-0.895431727560251910,\t-0.895453986383746960,\t-0.895476242968607280,\t-0.895498497314776820,\t\n-0.895520749422200280,\t-0.895542999290821710,\t-0.895565246920585700,\t-0.895587492311436420,\t-0.895609735463318570,\t-0.895631976376176310,\t-0.895654215049954240,\t-0.895676451484596510,\t\n-0.895698685680047850,\t-0.895720917636252280,\t-0.895743147353154410,\t-0.895765374830698620,\t-0.895787600068829400,\t-0.895809823067491240,\t-0.895832043826628730,\t-0.895854262346185810,\t\n-0.895876478626107530,\t-0.895898692666337810,\t-0.895920904466821380,\t-0.895943114027502710,\t-0.895965321348326180,\t-0.895987526429236620,\t-0.896009729270178080,\t-0.896031929871095370,\t\n-0.896054128231932530,\t-0.896076324352634510,\t-0.896098518233145680,\t-0.896120709873410410,\t-0.896142899273373540,\t-0.896165086432979540,\t-0.896187271352172580,\t-0.896209454030897690,\t\n-0.896231634469099040,\t-0.896253812666721220,\t-0.896275988623708830,\t-0.896298162340006590,\t-0.896320333815558870,\t-0.896342503050310490,\t-0.896364670044205840,\t-0.896386834797189390,\t\n-0.896408997309205870,\t-0.896431157580199760,\t-0.896453315610115880,\t-0.896475471398898600,\t-0.896497624946492880,\t-0.896519776252842850,\t-0.896541925317893670,\t-0.896564072141589400,\t\n-0.896586216723875060,\t-0.896608359064695050,\t-0.896630499163994180,\t-0.896652637021717050,\t-0.896674772637808590,\t-0.896696906012212970,\t-0.896719037144875330,\t-0.896741166035739830,\t\n-0.896763292684751410,\t-0.896785417091854780,\t-0.896807539256994630,\t-0.896829659180115810,\t-0.896851776861162690,\t-0.896873892300080190,\t-0.896896005496812920,\t-0.896918116451305590,\t\n-0.896940225163502910,\t-0.896962331633349710,\t-0.896984435860790690,\t-0.897006537845770780,\t-0.897028637588234260,\t-0.897050735088126380,\t-0.897072830345391540,\t-0.897094923359974540,\t\n-0.897117014131820320,\t-0.897139102660873490,\t-0.897161188947078970,\t-0.897183272990381590,\t-0.897205354790725830,\t-0.897227434348056960,\t-0.897249511662319250,\t-0.897271586733457750,\t\n-0.897293659561417380,\t-0.897315730146142740,\t-0.897337798487579000,\t-0.897359864585670630,\t-0.897381928440362690,\t-0.897403990051599880,\t-0.897426049419327020,\t-0.897448106543488940,\t\n-0.897470161424030800,\t-0.897492214060897080,\t-0.897514264454033040,\t-0.897536312603383290,\t-0.897558358508892760,\t-0.897580402170506280,\t-0.897602443588168760,\t-0.897624482761825050,\t\n-0.897646519691420290,\t-0.897668554376899300,\t-0.897690586818206790,\t-0.897712617015287930,\t-0.897734644968087410,\t-0.897756670676550290,\t-0.897778694140621390,\t-0.897800715360245860,\t\n-0.897822734335368520,\t-0.897844751065934530,\t-0.897866765551888490,\t-0.897888777793175660,\t-0.897910787789740760,\t-0.897932795541528830,\t-0.897954801048485020,\t-0.897976804310554160,\t\n-0.897998805327681170,\t-0.898020804099811550,\t-0.898042800626889570,\t-0.898064794908860820,\t-0.898086786945670010,\t-0.898108776737262080,\t-0.898130764283582290,\t-0.898152749584575580,\t\n-0.898174732640187210,\t-0.898196713450361780,\t-0.898218692015044670,\t-0.898240668334180810,\t-0.898262642407715140,\t-0.898284614235592920,\t-0.898306583817759190,\t-0.898328551154158990,\t\n-0.898350516244737610,\t-0.898372479089439730,\t-0.898394439688210870,\t-0.898416398040995710,\t-0.898438354147739540,\t-0.898460308008387500,\t-0.898482259622884640,\t-0.898504208991176220,\t\n-0.898526156113207410,\t-0.898548100988923240,\t-0.898570043618268530,\t-0.898591984001188780,\t-0.898613922137629140,\t-0.898635858027534650,\t-0.898657791670850470,\t-0.898679723067521970,\t\n-0.898701652217494100,\t-0.898723579120712210,\t-0.898745503777121150,\t-0.898767426186666380,\t-0.898789346349293080,\t-0.898811264264946400,\t-0.898833179933571480,\t-0.898855093355113930,\t\n-0.898877004529518350,\t-0.898898913456730450,\t-0.898920820136695160,\t-0.898942724569357750,\t-0.898964626754663600,\t-0.898986526692557740,\t-0.899008424382985890,\t-0.899030319825892770,\t\n-0.899052213021223960,\t-0.899074103968924510,\t-0.899095992668939800,\t-0.899117879121215100,\t-0.899139763325695670,\t-0.899161645282326890,\t-0.899183524991054140,\t-0.899205402451822340,\t\n-0.899227277664577330,\t-0.899249150629263800,\t-0.899271021345827480,\t-0.899292889814213630,\t-0.899314756034367500,\t-0.899336620006234600,\t-0.899358481729760180,\t-0.899380341204889520,\t\n-0.899402198431568100,\t-0.899424053409740960,\t-0.899445906139353820,\t-0.899467756620351830,\t-0.899489604852680370,\t-0.899511450836285250,\t-0.899533294571111200,\t-0.899555136057104130,\t\n-0.899576975294208990,\t-0.899598812282371480,\t-0.899620647021536990,\t-0.899642479511650770,\t-0.899664309752658430,\t-0.899686137744505450,\t-0.899707963487136890,\t-0.899729786980498770,\t\n-0.899751608224535810,\t-0.899773427219193960,\t-0.899795243964418570,\t-0.899817058460154920,\t-0.899838870706348710,\t-0.899860680702945560,\t-0.899882488449890610,\t-0.899904293947129340,\t\n-0.899926097194607260,\t-0.899947898192270060,\t-0.899969696940063010,\t-0.899991493437931720,\t-0.900013287685821890,\t-0.900035079683678680,\t-0.900056869431447910,\t-0.900078656929074850,\t\n-0.900100442176505090,\t-0.900122225173684230,\t-0.900144005920557880,\t-0.900165784417071400,\t-0.900187560663170740,\t-0.900209334658800930,\t-0.900231106403908020,\t-0.900252875898437170,\t\n-0.900274643142334070,\t-0.900296408135544350,\t-0.900318170878013690,\t-0.900339931369687710,\t-0.900361689610511770,\t-0.900383445600431820,\t-0.900405199339393000,\t-0.900426950827341250,\t\n-0.900448700064222060,\t-0.900470447049981140,\t-0.900492191784564080,\t-0.900513934267916820,\t-0.900535674499984400,\t-0.900557412480713080,\t-0.900579148210048030,\t-0.900600881687935060,\t\n-0.900622612914320000,\t-0.900644341889148330,\t-0.900666068612365760,\t-0.900687793083918220,\t-0.900709515303751100,\t-0.900731235271810320,\t-0.900752952988041260,\t-0.900774668452389850,\t\n-0.900796381664801690,\t-0.900818092625222610,\t-0.900839801333598530,\t-0.900861507789874730,\t-0.900883211993997350,\t-0.900904913945911770,\t-0.900926613645563920,\t-0.900948311092899520,\t\n-0.900970006287864280,\t-0.900991699230404120,\t-0.901013389920464870,\t-0.901035078357991900,\t-0.901056764542931490,\t-0.901078448475229000,\t-0.901100130154830370,\t-0.901121809581681310,\t\n-0.901143486755727860,\t-0.901165161676915630,\t-0.901186834345190760,\t-0.901208504760498740,\t-0.901230172922785180,\t-0.901251838831996330,\t-0.901273502488077800,\t-0.901295163890975640,\t\n-0.901316823040635430,\t-0.901338479937003450,\t-0.901360134580024950,\t-0.901381786969646440,\t-0.901403437105813170,\t-0.901425084988471400,\t-0.901446730617566860,\t-0.901468373993045470,\t\n-0.901490015114853270,\t-0.901511653982936090,\t-0.901533290597239630,\t-0.901554924957710170,\t-0.901576557064293180,\t-0.901598186916934720,\t-0.901619814515580930,\t-0.901641439860177530,\t\n-0.901663062950670780,\t-0.901684683787006060,\t-0.901706302369129960,\t-0.901727918696987760,\t-0.901749532770525940,\t-0.901771144589690210,\t-0.901792754154426610,\t-0.901814361464681080,\t\n-0.901835966520399880,\t-0.901857569321528610,\t-0.901879169868013530,\t-0.901900768159800360,\t-0.901922364196835360,\t-0.901943957979064350,\t-0.901965549506433480,\t-0.901987138778888700,\t\n-0.902008725796376360,\t-0.902030310558841970,\t-0.902051893066231900,\t-0.902073473318491970,\t-0.902095051315568440,\t-0.902116627057407250,\t-0.902138200543954440,\t-0.902159771775156270,\t\n-0.902181340750958570,\t-0.902202907471307710,\t-0.902224471936149300,\t-0.902246034145429810,\t-0.902267594099095180,\t-0.902289151797091570,\t-0.902310707239365130,\t-0.902332260425862120,\t\n-0.902353811356528260,\t-0.902375360031310030,\t-0.902396906450153140,\t-0.902418450613004080,\t-0.902439992519808890,\t-0.902461532170513720,\t-0.902483069565064630,\t-0.902504604703408210,\t\n-0.902526137585490160,\t-0.902547668211256650,\t-0.902569196580653930,\t-0.902590722693628170,\t-0.902612246550125620,\t-0.902633768150092550,\t-0.902655287493475230,\t-0.902676804580219370,\t\n-0.902698319410271790,\t-0.902719831983578190,\t-0.902741342300085070,\t-0.902762850359738580,\t-0.902784356162484980,\t-0.902805859708270430,\t-0.902827360997041420,\t-0.902848860028743870,\t\n-0.902870356803324280,\t-0.902891851320728690,\t-0.902913343580903470,\t-0.902934833583794780,\t-0.902956321329349110,\t-0.902977806817512830,\t-0.902999290048231870,\t-0.903020771021452840,\t\n-0.903042249737121660,\t-0.903063726195184820,\t-0.903085200395588710,\t-0.903106672338279680,\t-0.903128142023203910,\t-0.903149609450307870,\t-0.903171074619537720,\t-0.903192537530840060,\t\n-0.903213998184160930,\t-0.903235456579446700,\t-0.903256912716643880,\t-0.903278366595698820,\t-0.903299818216557800,\t-0.903321267579167420,\t-0.903342714683473710,\t-0.903364159529423390,\t\n-0.903385602116962390,\t-0.903407042446037530,\t-0.903428480516594970,\t-0.903449916328581290,\t-0.903471349881942890,\t-0.903492781176626010,\t-0.903514210212577380,\t-0.903535636989742930,\t\n-0.903557061508069470,\t-0.903578483767503380,\t-0.903599903767991040,\t-0.903621321509478940,\t-0.903642736991913780,\t-0.903664150215241600,\t-0.903685561179409120,\t-0.903706969884362610,\t\n-0.903728376330048650,\t-0.903749780516413860,\t-0.903771182443404490,\t-0.903792582110967360,\t-0.903813979519048630,\t-0.903835374667595230,\t-0.903856767556553090,\t-0.903878158185869030,\t\n-0.903899546555489540,\t-0.903920932665361330,\t-0.903942316515430670,\t-0.903963698105644480,\t-0.903985077435948800,\t-0.904006454506290580,\t-0.904027829316616070,\t-0.904049201866871990,\t\n-0.904070572157004930,\t-0.904091940186961480,\t-0.904113305956688150,\t-0.904134669466131750,\t-0.904156030715238420,\t-0.904177389703955230,\t-0.904198746432228420,\t-0.904220100900004710,\t\n-0.904241453107230700,\t-0.904262803053853090,\t-0.904284150739818720,\t-0.904305496165073720,\t-0.904326839329565260,\t-0.904348180233239480,\t-0.904369518876043220,\t-0.904390855257923070,\t\n-0.904412189378825950,\t-0.904433521238698250,\t-0.904454850837487000,\t-0.904476178175138370,\t-0.904497503251599500,\t-0.904518826066816770,\t-0.904540146620736900,\t-0.904561464913306580,\t\n-0.904582780944472750,\t-0.904604094714181910,\t-0.904625406222380970,\t-0.904646715469016430,\t-0.904668022454035210,\t-0.904689327177383820,\t-0.904710629639009060,\t-0.904731929838857640,\t\n-0.904753227776876500,\t-0.904774523453012570,\t-0.904795816867212000,\t-0.904817108019422060,\t-0.904838396909589230,\t-0.904859683537660440,\t-0.904880967903582410,\t-0.904902250007301960,\t\n-0.904923529848765780,\t-0.904944807427921160,\t-0.904966082744714130,\t-0.904987355799092170,\t-0.905008626591001670,\t-0.905029895120389670,\t-0.905051161387202760,\t-0.905072425391388100,\t\n-0.905093687132892400,\t-0.905114946611662470,\t-0.905136203827645260,\t-0.905157458780787350,\t-0.905178711471035790,\t-0.905199961898337510,\t-0.905221210062639340,\t-0.905242455963888080,\t\n-0.905263699602030900,\t-0.905284940977014290,\t-0.905306180088785490,\t-0.905327416937291020,\t-0.905348651522478120,\t-0.905369883844293510,\t-0.905391113902684120,\t-0.905412341697597100,\t\n-0.905433567228979270,\t-0.905454790496777460,\t-0.905476011500938820,\t-0.905497230241409930,\t-0.905518446718137970,\t-0.905539660931069970,\t-0.905560872880152750,\t-0.905582082565333460,\t\n-0.905603289986558920,\t-0.905624495143776300,\t-0.905645698036932180,\t-0.905666898665973940,\t-0.905688097030848400,\t-0.905709293131502500,\t-0.905730486967883500,\t-0.905751678539938430,\t\n-0.905772867847614020,\t-0.905794054890857630,\t-0.905815239669615860,\t-0.905836422183836090,\t-0.905857602433465140,\t-0.905878780418450270,\t-0.905899956138738420,\t-0.905921129594276840,\t\n-0.905942300785012480,\t-0.905963469710892140,\t-0.905984636371863110,\t-0.906005800767872520,\t-0.906026962898867420,\t-0.906048122764794960,\t-0.906069280365602300,\t-0.906090435701236370,\t\n-0.906111588771644440,\t-0.906132739576773430,\t-0.906153888116570490,\t-0.906175034390982900,\t-0.906196178399957700,\t-0.906217320143442030,\t-0.906238459621383160,\t-0.906259596833728140,\t\n-0.906280731780424230,\t-0.906301864461418250,\t-0.906322994876657680,\t-0.906344123026089580,\t-0.906365248909661190,\t-0.906386372527319910,\t-0.906407493879012430,\t-0.906428612964686460,\t\n-0.906449729784288840,\t-0.906470844337766810,\t-0.906491956625067650,\t-0.906513066646138620,\t-0.906534174400926870,\t-0.906555279889380010,\t-0.906576383111444620,\t-0.906597484067068530,\t\n-0.906618582756198550,\t-0.906639679178782080,\t-0.906660773334766470,\t-0.906681865224098880,\t-0.906702954846726580,\t-0.906724042202597170,\t-0.906745127291657460,\t-0.906766210113855050,\t\n-0.906787290669136990,\t-0.906808368957450760,\t-0.906829444978743520,\t-0.906850518732962630,\t-0.906871590220055700,\t-0.906892659439969550,\t-0.906913726392652000,\t-0.906934791078049970,\t\n-0.906955853496110850,\t-0.906976913646782230,\t-0.906997971530011270,\t-0.907019027145745340,\t-0.907040080493932030,\t-0.907061131574518400,\t-0.907082180387452140,\t-0.907103226932680200,\t\n-0.907124271210150160,\t-0.907145313219809510,\t-0.907166352961605530,\t-0.907187390435485690,\t-0.907208425641397480,\t-0.907229458579288270,\t-0.907250489249105230,\t-0.907271517650796060,\t\n-0.907292543784308010,\t-0.907313567649588590,\t-0.907334589246585280,\t-0.907355608575245550,\t-0.907376625635516800,\t-0.907397640427346610,\t-0.907418652950682140,\t-0.907439663205470980,\t\n-0.907460671191660740,\t-0.907481676909198790,\t-0.907502680358032610,\t-0.907523681538109920,\t-0.907544680449377860,\t-0.907565677091784260,\t-0.907586671465276380,\t-0.907607663569801710,\t\n-0.907628653405307960,\t-0.907649640971742610,\t-0.907670626269053260,\t-0.907691609297187170,\t-0.907712590056092280,\t-0.907733568545715630,\t-0.907754544766005140,\t-0.907775518716908310,\t\n-0.907796490398372620,\t-0.907817459810345780,\t-0.907838426952775390,\t-0.907859391825608820,\t-0.907880354428793890,\t-0.907901314762277980,\t-0.907922272826008680,\t-0.907943228619933820,\t\n-0.907964182144000760,\t-0.907985133398157340,\t-0.908006082382351250,\t-0.908027029096529770,\t-0.908047973540640820,\t-0.908068915714631890,\t-0.908089855618450570,\t-0.908110793252044580,\t\n-0.908131728615361730,\t-0.908152661708349630,\t-0.908173592530955750,\t-0.908194521083128150,\t-0.908215447364813970,\t-0.908236371375961140,\t-0.908257293116517480,\t-0.908278212586430490,\t\n-0.908299129785647970,\t-0.908320044714117870,\t-0.908340957371787440,\t-0.908361867758604840,\t-0.908382775874517430,\t-0.908403681719472940,\t-0.908424585293419410,\t-0.908445486596304310,\t\n-0.908466385628075470,\t-0.908487282388680930,\t-0.908508176878068170,\t-0.908529069096184690,\t-0.908549959042978640,\t-0.908570846718397610,\t-0.908591732122389530,\t-0.908612615254902110,\t\n-0.908633496115883400,\t-0.908654374705280650,\t-0.908675251023042250,\t-0.908696125069115460,\t-0.908716996843448420,\t-0.908737866345988850,\t-0.908758733576684570,\t-0.908779598535483510,\t\n-0.908800461222333600,\t-0.908821321637182430,\t-0.908842179779978050,\t-0.908863035650668060,\t-0.908883889249200600,\t-0.908904740575523280,\t-0.908925589629584140,\t-0.908946436411331220,\t\n-0.908967280920712000,\t-0.908988123157674850,\t-0.909008963122167170,\t-0.909029800814136980,\t-0.909050636233532440,\t-0.909071469380301140,\t-0.909092300254391360,\t-0.909113128855750910,\t\n-0.909133955184327490,\t-0.909154779240069270,\t-0.909175601022924050,\t-0.909196420532839780,\t-0.909217237769764370,\t-0.909238052733646000,\t-0.909258865424432350,\t-0.909279675842071810,\t\n-0.909300483986511980,\t-0.909321289857700890,\t-0.909342093455586700,\t-0.909362894780117110,\t-0.909383693831240400,\t-0.909404490608904270,\t-0.909425285113057090,\t-0.909446077343646580,\t\n-0.909466867300621100,\t-0.909487654983928140,\t-0.909508440393516300,\t-0.909529223529333190,\t-0.909550004391327160,\t-0.909570782979446050,\t-0.909591559293638000,\t-0.909612333333850940,\t\n-0.909633105100033260,\t-0.909653874592132650,\t-0.909674641810097380,\t-0.909695406753875500,\t-0.909716169423415270,\t-0.909736929818664500,\t-0.909757687939571350,\t-0.909778443786084080,\t\n-0.909799197358150510,\t-0.909819948655719140,\t-0.909840697678737760,\t-0.909861444427154780,\t-0.909882188900918100,\t-0.909902931099976000,\t-0.909923671024276510,\t-0.909944408673767910,\t\n-0.909965144048398230,\t-0.909985877148115740,\t-0.910006607972868480,\t-0.910027336522604810,\t-0.910048062797272680,\t-0.910068786796820460,\t-0.910089508521196300,\t-0.910110227970348350,\t\n-0.910130945144224770,\t-0.910151660042773920,\t-0.910172372665943970,\t-0.910193083013682850,\t-0.910213791085939250,\t-0.910234496882661000,\t-0.910255200403796700,\t-0.910275901649294280,\t\n-0.910296600619102110,\t-0.910317297313168460,\t-0.910337991731441590,\t-0.910358683873869650,\t-0.910379373740401120,\t-0.910400061330984060,\t-0.910420746645566940,\t-0.910441429684097800,\t\n-0.910462110446525250,\t-0.910482788932797330,\t-0.910503465142862510,\t-0.910524139076668960,\t-0.910544810734165160,\t-0.910565480115299140,\t-0.910586147220019630,\t-0.910606812048274760,\t\n-0.910627474600012700,\t-0.910648134875182040,\t-0.910668792873730930,\t-0.910689448595608080,\t-0.910710102040761300,\t-0.910730753209139540,\t-0.910751402100690720,\t-0.910772048715363550,\t\n-0.910792693053106060,\t-0.910813335113866970,\t-0.910833974897594540,\t-0.910854612404237150,\t-0.910875247633743170,\t-0.910895880586061190,\t-0.910916511261139370,\t-0.910937139658926420,\t\n-0.910957765779370490,\t-0.910978389622420280,\t-0.910999011188024070,\t-0.911019630476130220,\t-0.911040247486687440,\t-0.911060862219643890,\t-0.911081474674948380,\t-0.911102084852548950,\t\n-0.911122692752394550,\t-0.911143298374433200,\t-0.911163901718613720,\t-0.911184502784884390,\t-0.911205101573194010,\t-0.911225698083490630,\t-0.911246292315723180,\t-0.911266884269839930,\t\n-0.911287473945789460,\t-0.911308061343520270,\t-0.911328646462981060,\t-0.911349229304120100,\t-0.911369809866886200,\t-0.911390388151227640,\t-0.911410964157093220,\t-0.911431537884431320,\t\n-0.911452109333190540,\t-0.911472678503319590,\t-0.911493245394766840,\t-0.911513810007481110,\t-0.911534372341410770,\t-0.911554932396504540,\t-0.911575490172710890,\t-0.911596045669978540,\t\n-0.911616598888256080,\t-0.911637149827492220,\t-0.911657698487635340,\t-0.911678244868634360,\t-0.911698788970437660,\t-0.911719330792994050,\t-0.911739870336252030,\t-0.911760407600160530,\t\n-0.911780942584667800,\t-0.911801475289722770,\t-0.911822005715274160,\t-0.911842533861270450,\t-0.911863059727660460,\t-0.911883583314392680,\t-0.911904104621416020,\t-0.911924623648679100,\t\n-0.911945140396130730,\t-0.911965654863719280,\t-0.911986167051393900,\t-0.912006676959102980,\t-0.912027184586795440,\t-0.912047689934419870,\t-0.912068193001925210,\t-0.912088693789259830,\t\n-0.912109192296372990,\t-0.912129688523212970,\t-0.912150182469728790,\t-0.912170674135869160,\t-0.912191163521582920,\t-0.912211650626818640,\t-0.912232135451525370,\t-0.912252617995651720,\t\n-0.912273098259146380,\t-0.912293576241958500,\t-0.912314051944036470,\t-0.912334525365329550,\t-0.912354996505786110,\t-0.912375465365355300,\t-0.912395931943985720,\t-0.912416396241626520,\t\n-0.912436858258226070,\t-0.912457317993733640,\t-0.912477775448097830,\t-0.912498230621267670,\t-0.912518683513191880,\t-0.912539134123819370,\t-0.912559582453099090,\t-0.912580028500979750,\t\n-0.912600472267410370,\t-0.912620913752339890,\t-0.912641352955717020,\t-0.912661789877490910,\t-0.912682224517610270,\t-0.912702656876024030,\t-0.912723086952681120,\t-0.912743514747530570,\t\n-0.912763940260521210,\t-0.912784363491601860,\t-0.912804784440721770,\t-0.912825203107829660,\t-0.912845619492874570,\t-0.912866033595805430,\t-0.912886445416571270,\t-0.912906854955120810,\t\n-0.912927262211403410,\t-0.912947667185367680,\t-0.912968069876962880,\t-0.912988470286137940,\t-0.913008868412841790,\t-0.913029264257023470,\t-0.913049657818632010,\t-0.913070049097616350,\t\n-0.913090438093925540,\t-0.913110824807508830,\t-0.913131209238314810,\t-0.913151591386292870,\t-0.913171971251391930,\t-0.913192348833561150,\t-0.913212724132749450,\t-0.913233097148905880,\t\n-0.913253467881979590,\t-0.913273836331919720,\t-0.913294202498675210,\t-0.913314566382195210,\t-0.913334927982428660,\t-0.913355287299324910,\t-0.913375644332832910,\t-0.913395999082901920,\t\n-0.913416351549480750,\t-0.913436701732518790,\t-0.913457049631965060,\t-0.913477395247768720,\t-0.913497738579878930,\t-0.913518079628244720,\t-0.913538418392815350,\t-0.913558754873539990,\t\n-0.913579089070367670,\t-0.913599420983247650,\t-0.913619750612129080,\t-0.913640077956961010,\t-0.913660403017692910,\t-0.913680725794273730,\t-0.913701046286652830,\t-0.913721364494779140,\t\n-0.913741680418602260,\t-0.913761994058071010,\t-0.913782305413134770,\t-0.913802614483742780,\t-0.913822921269844430,\t-0.913843225771388550,\t-0.913863527988324710,\t-0.913883827920602080,\t\n-0.913904125568169800,\t-0.913924420930977250,\t-0.913944714008973700,\t-0.913965004802108290,\t-0.913985293310330400,\t-0.914005579533589300,\t-0.914025863471834120,\t-0.914046145125014480,\t\n-0.914066424493079290,\t-0.914086701575978160,\t-0.914106976373660230,\t-0.914127248886074880,\t-0.914147519113171380,\t-0.914167787054899090,\t-0.914188052711207400,\t-0.914208316082045560,\t\n-0.914228577167362830,\t-0.914248835967108710,\t-0.914269092481232450,\t-0.914289346709683650,\t-0.914309598652411350,\t-0.914329848309365030,\t-0.914350095680494190,\t-0.914370340765747970,\t\n-0.914390583565075970,\t-0.914410824078427440,\t-0.914431062305752000,\t-0.914451298246998780,\t-0.914471531902117380,\t-0.914491763271057080,\t-0.914511992353767460,\t-0.914532219150197780,\t\n-0.914552443660297640,\t-0.914572665884016310,\t-0.914592885821303380,\t-0.914613103472108220,\t-0.914633318836380330,\t-0.914653531914069060,\t-0.914673742705124030,\t-0.914693951209494700,\t\n-0.914714157427130360,\t-0.914734361357980700,\t-0.914754563001995090,\t-0.914774762359123140,\t-0.914794959429314210,\t-0.914815154212517910,\t-0.914835346708683720,\t-0.914855536917761230,\t\n-0.914875724839699700,\t-0.914895910474449070,\t-0.914916093821958600,\t-0.914936274882177880,\t-0.914956453655056400,\t-0.914976630140543980,\t-0.914996804338589760,\t-0.915016976249143690,\t\n-0.915037145872155120,\t-0.915057313207573770,\t-0.915077478255349020,\t-0.915097641015430670,\t-0.915117801487768220,\t-0.915137959672311150,\t-0.915158115569009280,\t-0.915178269177812090,\t\n-0.915198420498669170,\t-0.915218569531530250,\t-0.915238716276345010,\t-0.915258860733062840,\t-0.915279002901633550,\t-0.915299142782006750,\t-0.915319280374132130,\t-0.915339415677959290,\t\n-0.915359548693437940,\t-0.915379679420517570,\t-0.915399807859148210,\t-0.915419934009279230,\t-0.915440057870860470,\t-0.915460179443841390,\t-0.915480298728172050,\t-0.915500415723801920,\t\n-0.915520530430680710,\t-0.915540642848758250,\t-0.915560752977984120,\t-0.915580860818308140,\t-0.915600966369680020,\t-0.915621069632049480,\t-0.915641170605366210,\t-0.915661269289580030,\t\n-0.915681365684640650,\t-0.915701459790498000,\t-0.915721551607101560,\t-0.915741641134401260,\t-0.915761728372346820,\t-0.915781813320888150,\t-0.915801895979974970,\t-0.915821976349556980,\t\n-0.915842054429584000,\t-0.915862130220006070,\t-0.915882203720772560,\t-0.915902274931833740,\t-0.915922343853139200,\t-0.915942410484638760,\t-0.915962474826282350,\t-0.915982536878019670,\t\n-0.916002596639800770,\t-0.916022654111575240,\t-0.916042709293293120,\t-0.916062762184904230,\t-0.916082812786358500,\t-0.916102861097605640,\t-0.916122907118595680,\t-0.916142950849278440,\t\n-0.916162992289603850,\t-0.916183031439521730,\t-0.916203068298982130,\t-0.916223102867934740,\t-0.916243135146329600,\t-0.916263165134116650,\t-0.916283192831245820,\t-0.916303218237666920,\t\n-0.916323241353330100,\t-0.916343262178185180,\t-0.916363280712181980,\t-0.916383296955270770,\t-0.916403310907401130,\t-0.916423322568523320,\t-0.916443331938587070,\t-0.916463339017542620,\t\n-0.916483343805339800,\t-0.916503346301928650,\t-0.916523346507258970,\t-0.916543344421281160,\t-0.916563340043944800,\t-0.916583333375200260,\t-0.916603324414997140,\t-0.916623313163285940,\t\n-0.916643299620016340,\t-0.916663283785138620,\t-0.916683265658602480,\t-0.916703245240358400,\t-0.916723222530356100,\t-0.916743197528545720,\t-0.916763170234877410,\t-0.916783140649301110,\t\n-0.916803108771767070,\t-0.916823074602225120,\t-0.916843038140625620,\t-0.916862999386918290,\t-0.916882958341053710,\t-0.916902915002981600,\t-0.916922869372652330,\t-0.916942821450015710,\t\n-0.916962771235022120,\t-0.916982718727621600,\t-0.917002663927764420,\t-0.917022606835400380,\t-0.917042547450479970,\t-0.917062485772953020,\t-0.917082421802770000,\t-0.917102355539880840,\t\n-0.917122286984235920,\t-0.917142216135785170,\t-0.917162142994478960,\t-0.917182067560267320,\t-0.917201989833100530,\t-0.917221909812928730,\t-0.917241827499702180,\t-0.917261742893371150,\t\n-0.917281655993885670,\t-0.917301566801196120,\t-0.917321475315252540,\t-0.917341381536005310,\t-0.917361285463404670,\t-0.917381187097400800,\t-0.917401086437943940,\t-0.917420983484984460,\t\n-0.917440878238472310,\t-0.917460770698358190,\t-0.917480660864592010,\t-0.917500548737124280,\t-0.917520434315905130,\t-0.917540317600884950,\t-0.917560198592013880,\t-0.917580077289242290,\t\n-0.917599953692520680,\t-0.917619827801798960,\t-0.917639699617027850,\t-0.917659569138157380,\t-0.917679436365138050,\t-0.917699301297920100,\t-0.917719163936453920,\t-0.917739024280689760,\t\n-0.917758882330578230,\t-0.917778738086069250,\t-0.917798591547113630,\t-0.917818442713661420,\t-0.917838291585663100,\t-0.917858138163069050,\t-0.917877982445829740,\t-0.917897824433895340,\t\n-0.917917664127216540,\t-0.917937501525743490,\t-0.917957336629426690,\t-0.917977169438216610,\t-0.917996999952063520,\t-0.918016828170918010,\t-0.918036654094730230,\t-0.918056477723451000,\t\n-0.918076299057030590,\t-0.918096118095419360,\t-0.918115934838567790,\t-0.918135749286426490,\t-0.918155561438945830,\t-0.918175371296076180,\t-0.918195178857768140,\t-0.918214984123972180,\t\n-0.918234787094638680,\t-0.918254587769718360,\t-0.918274386149161350,\t-0.918294182232918590,\t-0.918313976020940230,\t-0.918333767513177080,\t-0.918353556709579410,\t-0.918373343610097810,\t\n-0.918393128214682890,\t-0.918412910523285220,\t-0.918432690535855190,\t-0.918452468252343390,\t-0.918472243672700530,\t-0.918492016796876980,\t-0.918511787624823440,\t-0.918531556156490400,\t\n-0.918551322391828570,\t-0.918571086330788320,\t-0.918590847973320360,\t-0.918610607319375270,\t-0.918630364368903770,\t-0.918650119121856230,\t-0.918669871578183470,\t-0.918689621737835970,\t\n-0.918709369600764550,\t-0.918729115166919690,\t-0.918748858436251870,\t-0.918768599408712030,\t-0.918788338084250640,\t-0.918808074462818420,\t-0.918827808544366080,\t-0.918847540328844190,\t\n-0.918867269816203370,\t-0.918886997006394420,\t-0.918906721899367950,\t-0.918926444495074770,\t-0.918946164793465360,\t-0.918965882794490650,\t-0.918985598498101130,\t-0.919005311904247720,\t\n-0.919025023012880920,\t-0.919044731823951740,\t-0.919064438337410470,\t-0.919084142553208360,\t-0.919103844471295670,\t-0.919123544091623560,\t-0.919143241414142500,\t-0.919162936438803310,\t\n-0.919182629165556930,\t-0.919202319594353830,\t-0.919222007725144950,\t-0.919241693557880990,\t-0.919261377092512990,\t-0.919281058328991320,\t-0.919300737267267240,\t-0.919320413907291130,\t\n-0.919340088249014030,\t-0.919359760292386750,\t-0.919379430037360110,\t-0.919399097483884710,\t-0.919418762631911800,\t-0.919438425481391760,\t-0.919458086032275860,\t-0.919477744284514560,\t\n-0.919497400238059150,\t-0.919517053892860090,\t-0.919536705248868320,\t-0.919556354306034880,\t-0.919576001064310480,\t-0.919595645523646250,\t-0.919615287683992700,\t-0.919634927545301070,\t\n-0.919654565107521970,\t-0.919674200370606650,\t-0.919693833334505720,\t-0.919713463999170200,\t-0.919733092364551030,\t-0.919752718430599250,\t-0.919772342197265450,\t-0.919791963664501000,\t\n-0.919811582832256500,\t-0.919831199700483100,\t-0.919850814269131730,\t-0.919870426538153320,\t-0.919890036507498790,\t-0.919909644177119180,\t-0.919929249546965530,\t-0.919948852616988670,\t\n-0.919968453387139840,\t-0.919988051857369650,\t-0.920007648027629470,\t-0.920027241897870110,\t-0.920046833468042720,\t-0.920066422738098130,\t-0.920086009707987600,\t-0.920105594377661930,\t\n-0.920125176747072390,\t-0.920144756816169810,\t-0.920164334584905430,\t-0.920183910053230190,\t-0.920203483221095130,\t-0.920223054088451400,\t-0.920242622655250030,\t-0.920262188921442070,\t\n-0.920281752886978670,\t-0.920301314551810970,\t-0.920320873915889790,\t-0.920340430979166620,\t-0.920359985741592280,\t-0.920379538203118020,\t-0.920399088363694770,\t-0.920418636223274020,\t\n-0.920438181781806470,\t-0.920457725039243610,\t-0.920477265995536360,\t-0.920496804650635990,\t-0.920516341004493530,\t-0.920535875057060360,\t-0.920555406808287400,\t-0.920574936258126030,\t\n-0.920594463406527170,\t-0.920613988253442320,\t-0.920633510798822270,\t-0.920653031042618640,\t-0.920672548984782350,\t-0.920692064625264760,\t-0.920711577964016930,\t-0.920731089000990210,\t\n-0.920750597736135770,\t-0.920770104169404750,\t-0.920789608300748520,\t-0.920809110130118240,\t-0.920828609657465270,\t-0.920848106882740660,\t-0.920867601805895890,\t-0.920887094426882100,\t\n-0.920906584745650570,\t-0.920926072762152550,\t-0.920945558476339410,\t-0.920965041888162190,\t-0.920984522997572610,\t-0.921004001804521580,\t-0.921023478308960590,\t-0.921042952510840780,\t\n-0.921062424410113770,\t-0.921081894006730570,\t-0.921101361300642800,\t-0.921120826291801590,\t-0.921140288980158100,\t-0.921159749365664140,\t-0.921179207448270640,\t-0.921198663227929200,\t\n-0.921218116704591080,\t-0.921237567878207760,\t-0.921257016748730400,\t-0.921276463316110570,\t-0.921295907580299440,\t-0.921315349541248720,\t-0.921334789198909540,\t-0.921354226553233400,\t\n-0.921373661604171670,\t-0.921393094351675820,\t-0.921412524795697240,\t-0.921431952936187290,\t-0.921451378773097460,\t-0.921470802306379340,\t-0.921490223535984090,\t-0.921509642461863290,\t\n-0.921529059083968430,\t-0.921548473402250880,\t-0.921567885416662120,\t-0.921587295127153650,\t-0.921606702533677050,\t-0.921626107636183580,\t-0.921645510434624840,\t-0.921664910928952310,\t\n-0.921684309119117580,\t-0.921703705005072040,\t-0.921723098586767260,\t-0.921742489864154750,\t-0.921761878837185970,\t-0.921781265505812520,\t-0.921800649869985890,\t-0.921820031929657670,\t\n-0.921839411684779340,\t-0.921858789135302390,\t-0.921878164281178640,\t-0.921897537122359450,\t-0.921916907658796300,\t-0.921936275890441030,\t-0.921955641817244990,\t-0.921975005439159780,\t\n-0.921994366756137110,\t-0.922013725768128570,\t-0.922033082475085640,\t-0.922052436876960150,\t-0.922071788973703340,\t-0.922091138765267270,\t-0.922110486251603190,\t-0.922129831432663030,\t\n-0.922149174308398270,\t-0.922168514878760500,\t-0.922187853143701440,\t-0.922207189103172900,\t-0.922226522757126240,\t-0.922245854105513300,\t-0.922265183148285760,\t-0.922284509885395230,\t\n-0.922303834316793520,\t-0.922323156442432010,\t-0.922342476262262840,\t-0.922361793776237280,\t-0.922381108984307360,\t-0.922400421886424680,\t-0.922419732482540940,\t-0.922439040772607740,\t\n-0.922458346756577120,\t-0.922477650434400550,\t-0.922496951806029860,\t-0.922516250871416750,\t-0.922535547630513040,\t-0.922554842083270430,\t-0.922574134229640850,\t-0.922593424069575780,\t\n-0.922612711603027270,\t-0.922631996829946900,\t-0.922651279750286600,\t-0.922670560363998080,\t-0.922689838671033050,\t-0.922709114671343640,\t-0.922728388364881250,\t-0.922747659751598000,\t\n-0.922766928831445510,\t-0.922786195604375800,\t-0.922805460070340480,\t-0.922824722229291570,\t-0.922843982081180900,\t-0.922863239625960290,\t-0.922882494863581430,\t-0.922901747793996470,\t\n-0.922920998417157130,\t-0.922940246733015220,\t-0.922959492741522780,\t-0.922978736442631620,\t-0.922997977836293450,\t-0.923017216922460530,\t-0.923036453701084560,\t-0.923055688172117360,\t\n-0.923074920335510970,\t-0.923094150191217210,\t-0.923113377739188220,\t-0.923132602979375720,\t-0.923151825911731730,\t-0.923171046536208070,\t-0.923190264852756900,\t-0.923209480861330030,\t\n-0.923228694561879500,\t-0.923247905954357240,\t-0.923267115038715170,\t-0.923286321814905330,\t-0.923305526282879650,\t-0.923324728442590170,\t-0.923343928293988920,\t-0.923363125837027840,\t\n-0.923382321071658960,\t-0.923401513997834100,\t-0.923420704615505630,\t-0.923439892924625470,\t-0.923459078925145450,\t-0.923478262617017710,\t-0.923497444000194400,\t-0.923516623074627450,\t\n-0.923535799840268900,\t-0.923554974297070900,\t-0.923574146444985370,\t-0.923593316283964680,\t-0.923612483813960440,\t-0.923631649034925230,\t-0.923650811946810760,\t-0.923669972549569280,\t\n-0.923689130843152850,\t-0.923708286827513710,\t-0.923727440502603690,\t-0.923746591868375160,\t-0.923765740924780140,\t-0.923784887671770800,\t-0.923804032109299180,\t-0.923823174237317520,\t\n-0.923842314055777880,\t-0.923861451564632510,\t-0.923880586763833560,\t-0.923899719653332950,\t-0.923918850233083290,\t-0.923937978503036270,\t-0.923957104463144500,\t-0.923976228113359780,\t\n-0.923995349453634710,\t-0.924014468483921100,\t-0.924033585204171340,\t-0.924052699614337670,\t-0.924071811714372250,\t-0.924090921504227230,\t-0.924110028983854970,\t-0.924129134153207630,\t\n-0.924148237012237470,\t-0.924167337560896640,\t-0.924186435799137620,\t-0.924205531726912440,\t-0.924224625344173270,\t-0.924243716650872790,\t-0.924262805646962840,\t-0.924281892332395990,\t\n-0.924300976707124300,\t-0.924320058771100240,\t-0.924339138524275960,\t-0.924358215966603950,\t-0.924377291098036350,\t-0.924396363918525530,\t-0.924415434428023760,\t-0.924434502626483410,\t\n-0.924453568513856850,\t-0.924472632090096340,\t-0.924491693355154240,\t-0.924510752308982940,\t-0.924529808951534690,\t-0.924548863282762090,\t-0.924567915302617060,\t-0.924586965011052530,\t\n-0.924606012408020430,\t-0.924625057493473350,\t-0.924644100267363540,\t-0.924663140729643510,\t-0.924682178880265710,\t-0.924701214719182430,\t-0.924720248246346130,\t-0.924739279461709080,\t\n-0.924758308365223990,\t-0.924777334956843000,\t-0.924796359236518820,\t-0.924815381204203590,\t-0.924834400859850030,\t-0.924853418203410380,\t-0.924872433234837250,\t-0.924891445954083010,\t\n-0.924910456361100140,\t-0.924929464455841120,\t-0.924948470238258440,\t-0.924967473708304680,\t-0.924986474865932110,\t-0.925005473711093540,\t-0.925024470243741010,\t-0.925043464463827570,\t\n-0.925062456371305240,\t-0.925081445966126960,\t-0.925100433248244980,\t-0.925119418217611900,\t-0.925138400874180310,\t-0.925157381217902700,\t-0.925176359248731650,\t-0.925195334966619650,\t\n-0.925214308371519300,\t-0.925233279463383300,\t-0.925252248242164010,\t-0.925271214707814150,\t-0.925290178860286190,\t-0.925309140699532850,\t-0.925328100225506600,\t-0.925347057438160260,\t\n-0.925366012337446090,\t-0.925384964923317010,\t-0.925403915195725400,\t-0.925422863154624080,\t-0.925441808799965630,\t-0.925460752131702540,\t-0.925479693149787730,\t-0.925498631854173470,\t\n-0.925517568244812790,\t-0.925536502321658180,\t-0.925555434084662340,\t-0.925574363533777870,\t-0.925593290668957460,\t-0.925612215490153820,\t-0.925631137997319780,\t-0.925650058190407690,\t\n-0.925668976069370600,\t-0.925687891634160990,\t-0.925706804884731780,\t-0.925725715821035360,\t-0.925744624443024850,\t-0.925763530750652760,\t-0.925782434743871670,\t-0.925801336422634620,\t\n-0.925820235786894210,\t-0.925839132836603240,\t-0.925858027571714310,\t-0.925876919992180470,\t-0.925895810097954190,\t-0.925914697888988500,\t-0.925933583365236010,\t-0.925952466526649640,\t\n-0.925971347373181990,\t-0.925990225904786080,\t-0.926009102121414520,\t-0.926027976023020230,\t-0.926046847609556020,\t-0.926065716880974720,\t-0.926084583837229030,\t-0.926103448478271970,\t\n-0.926122310804056270,\t-0.926141170814534730,\t-0.926160028509660390,\t-0.926178883889385850,\t-0.926197736953664250,\t-0.926216587702448080,\t-0.926235436135690700,\t-0.926254282253344500,\t\n-0.926273126055362720,\t-0.926291967541698070,\t-0.926310806712303590,\t-0.926329643567131990,\t-0.926348478106136410,\t-0.926367310329269440,\t-0.926386140236484360,\t-0.926404967827733850,\t\n-0.926423793102971070,\t-0.926442616062148620,\t-0.926461436705219740,\t-0.926480255032137160,\t-0.926499071042854120,\t-0.926517884737323330,\t-0.926536696115497720,\t-0.926555505177330430,\t\n-0.926574311922774400,\t-0.926593116351782650,\t-0.926611918464307900,\t-0.926630718260303630,\t-0.926649515739722320,\t-0.926668310902517440,\t-0.926687103748641610,\t-0.926705894278048060,\t\n-0.926724682490689840,\t-0.926743468386519890,\t-0.926762251965491220,\t-0.926781033227557010,\t-0.926799812172670050,\t-0.926818588800783720,\t-0.926837363111850830,\t-0.926856135105824650,\t\n-0.926874904782658100,\t-0.926893672142304230,\t-0.926912437184716160,\t-0.926931199909846960,\t-0.926949960317649870,\t-0.926968718408077820,\t-0.926987474181084070,\t-0.927006227636621550,\t\n-0.927024978774643520,\t-0.927043727595102900,\t-0.927062474097953060,\t-0.927081218283147050,\t-0.927099960150638000,\t-0.927118699700378970,\t-0.927137436932323310,\t-0.927156171846423960,\t\n-0.927174904442634280,\t-0.927193634720907210,\t-0.927212362681196110,\t-0.927231088323454130,\t-0.927249811647634430,\t-0.927268532653690250,\t-0.927287251341574640,\t-0.927305967711240960,\t\n-0.927324681762642270,\t-0.927343393495732030,\t-0.927362102910463170,\t-0.927380810006789180,\t-0.927399514784662980,\t-0.927418217244038170,\t-0.927436917384867780,\t-0.927455615207105070,\t\n-0.927474310710703300,\t-0.927493003895615730,\t-0.927511694761795740,\t-0.927530383309196460,\t-0.927549069537771160,\t-0.927567753447473330,\t-0.927586435038256000,\t-0.927605114310072640,\t\n-0.927623791262876530,\t-0.927642465896620920,\t-0.927661138211259060,\t-0.927679808206744450,\t-0.927698475883030340,\t-0.927717141240069880,\t-0.927735804277816770,\t-0.927754464996223940,\t\n-0.927773123395245090,\t-0.927791779474833380,\t-0.927810433234942280,\t-0.927829084675525050,\t-0.927847733796535180,\t-0.927866380597925810,\t-0.927885025079650650,\t-0.927903667241662840,\t\n-0.927922307083915990,\t-0.927940944606363230,\t-0.927959579808958160,\t-0.927978212691654150,\t-0.927996843254404570,\t-0.928015471497163010,\t-0.928034097419882630,\t-0.928052721022517010,\t\n-0.928071342305019640,\t-0.928089961267343890,\t-0.928108577909443230,\t-0.928127192231271160,\t-0.928145804232781040,\t-0.928164413913926570,\t-0.928183021274660900,\t-0.928201626314937740,\t\n-0.928220229034710460,\t-0.928238829433932770,\t-0.928257427512557800,\t-0.928276023270539370,\t-0.928294616707830870,\t-0.928313207824385870,\t-0.928331796620157750,\t-0.928350383095100320,\t\n-0.928368967249166730,\t-0.928387549082310800,\t-0.928406128594486120,\t-0.928424705785645950,\t-0.928443280655744110,\t-0.928461853204733960,\t-0.928480423432569310,\t-0.928498991339203440,\t\n-0.928517556924590260,\t-0.928536120188683030,\t-0.928554681131435690,\t-0.928573239752801480,\t-0.928591796052734230,\t-0.928610350031187530,\t-0.928628901688114850,\t-0.928647451023470020,\t\n-0.928665998037206510,\t-0.928684542729278030,\t-0.928703085099638170,\t-0.928721625148240640,\t-0.928740162875039020,\t-0.928758698279987030,\t-0.928777231363038250,\t-0.928795762124146500,\t\n-0.928814290563265140,\t-0.928832816680348230,\t-0.928851340475349120,\t-0.928869861948221850,\t-0.928888381098919800,\t-0.928906897927396780,\t-0.928925412433606600,\t-0.928943924617502860,\t\n-0.928962434479039260,\t-0.928980942018169610,\t-0.928999447234847620,\t-0.929017950129026990,\t-0.929036450700661430,\t-0.929054948949704860,\t-0.929073444876110880,\t-0.929091938479833290,\t\n-0.929110429760825810,\t-0.929128918719042350,\t-0.929147405354436520,\t-0.929165889666962120,\t-0.929184371656573190,\t-0.929202851323223110,\t-0.929221328666866020,\t-0.929239803687455620,\t\n-0.929258276384945630,\t-0.929276746759289950,\t-0.929295214810442530,\t-0.929313680538356950,\t-0.929332143942987240,\t-0.929350605024287120,\t-0.929369063782210510,\t-0.929387520216711230,\t\n-0.929405974327743190,\t-0.929424426115260100,\t-0.929442875579216120,\t-0.929461322719564830,\t-0.929479767536260270,\t-0.929498210029256370,\t-0.929516650198506820,\t-0.929535088043965670,\t\n-0.929553523565586850,\t-0.929571956763324270,\t-0.929590387637131640,\t-0.929608816186963120,\t-0.929627242412772500,\t-0.929645666314513950,\t-0.929664087892141060,\t-0.929682507145608070,\t\n-0.929700924074868710,\t-0.929719338679877110,\t-0.929737750960587080,\t-0.929756160916952790,\t-0.929774568548928040,\t-0.929792973856466860,\t-0.929811376839523200,\t-0.929829777498051180,\t\n-0.929848175832004630,\t-0.929866571841337810,\t-0.929884965526004410,\t-0.929903356885958600,\t-0.929921745921154510,\t-0.929940132631545960,\t-0.929958517017087090,\t-0.929976899077731960,\t\n-0.929995278813434580,\t-0.930013656224148890,\t-0.930032031309829250,\t-0.930050404070429380,\t-0.930068774505903640,\t-0.930087142616205840,\t-0.930105508401290250,\t-0.930123871861110780,\t\n-0.930142232995621710,\t-0.930160591804777060,\t-0.930178948288530980,\t-0.930197302446837400,\t-0.930215654279650690,\t-0.930234003786924890,\t-0.930252350968613920,\t-0.930270695824672260,\t\n-0.930289038355053720,\t-0.930307378559712570,\t-0.930325716438602960,\t-0.930344051991679240,\t-0.930362385218895140,\t-0.930380716120205340,\t-0.930399044695563560,\t-0.930417370944924270,\t\n-0.930435694868241400,\t-0.930454016465469440,\t-0.930472335736562410,\t-0.930490652681474570,\t-0.930508967300159970,\t-0.930527279592573090,\t-0.930545589558667950,\t-0.930563897198398830,\t\n-0.930582202511719970,\t-0.930600505498585640,\t-0.930618806158950100,\t-0.930637104492767490,\t-0.930655400499992070,\t-0.930673694180578100,\t-0.930691985534480070,\t-0.930710274561651900,\t\n-0.930728561262048170,\t-0.930746845635622930,\t-0.930765127682330770,\t-0.930783407402125620,\t-0.930801684794961950,\t-0.930819959860794130,\t-0.930838232599576430,\t-0.930856503011263100,\t\n-0.930874771095808520,\t-0.930893036853166930,\t-0.930911300283292940,\t-0.930929561386140580,\t-0.930947820161664330,\t-0.930966076609818450,\t-0.930984330730557530,\t-0.931002582523835720,\t\n-0.931020831989607500,\t-0.931039079127827130,\t-0.931057323938449090,\t-0.931075566421427750,\t-0.931093806576717480,\t-0.931112044404272640,\t-0.931130279904047730,\t-0.931148513075997220,\t\n-0.931166743920075260,\t-0.931184972436236550,\t-0.931203198624435350,\t-0.931221422484626250,\t-0.931239644016763510,\t-0.931257863220801730,\t-0.931276080096695160,\t-0.931294294644398500,\t\n-0.931312506863866020,\t-0.931330716755052410,\t-0.931348924317911940,\t-0.931367129552399090,\t-0.931385332458468550,\t-0.931403533036074590,\t-0.931421731285171810,\t-0.931439927205714670,\t\n-0.931458120797657770,\t-0.931476312060955490,\t-0.931494500995562520,\t-0.931512687601433240,\t-0.931530871878522350,\t-0.931549053826784100,\t-0.931567233446173320,\t-0.931585410736644470,\t\n-0.931603585698152050,\t-0.931621758330650640,\t-0.931639928634094950,\t-0.931658096608439350,\t-0.931676262253638530,\t-0.931694425569646990,\t-0.931712586556419530,\t-0.931730745213910530,\t\n-0.931748901542074680,\t-0.931767055540866580,\t-0.931785207210240830,\t-0.931803356550152010,\t-0.931821503560554820,\t-0.931839648241403970,\t-0.931857790592653830,\t-0.931875930614259330,\t\n-0.931894068306174940,\t-0.931912203668355480,\t-0.931930336700755420,\t-0.931948467403329590,\t-0.931966595776032580,\t-0.931984721818819080,\t-0.932002845531643700,\t-0.932020966914461240,\t\n-0.932039085967226400,\t-0.932057202689893890,\t-0.932075317082418310,\t-0.932093429144754350,\t-0.932111538876856940,\t-0.932129646278680670,\t-0.932147751350180240,\t-0.932165854091310480,\t\n-0.932183954502026070,\t-0.932202052582281730,\t-0.932220148332032370,\t-0.932238241751232490,\t-0.932256332839837110,\t-0.932274421597800830,\t-0.932292508025078570,\t-0.932310592121624930,\t\n-0.932328673887394930,\t-0.932346753322343180,\t-0.932364830426424600,\t-0.932382905199593880,\t-0.932400977641805960,\t-0.932419047753015540,\t-0.932437115533177540,\t-0.932455180982246780,\t\n-0.932473244100178070,\t-0.932491304886926220,\t-0.932509363342446050,\t-0.932527419466692600,\t-0.932545473259620450,\t-0.932563524721184640,\t-0.932581573851340110,\t-0.932599620650041650,\t\n-0.932617665117243980,\t-0.932635707252902350,\t-0.932653747056971350,\t-0.932671784529406020,\t-0.932689819670161180,\t-0.932707852479191860,\t-0.932725882956452760,\t-0.932743911101899140,\t\n-0.932761936915485590,\t-0.932779960397167260,\t-0.932797981546899080,\t-0.932816000364635860,\t-0.932834016850332740,\t-0.932852031003944540,\t-0.932870042825426180,\t-0.932888052314732820,\t\n-0.932906059471819260,\t-0.932924064296640540,\t-0.932942066789151810,\t-0.932960066949307780,\t-0.932978064777063580,\t-0.932996060272374250,\t-0.933014053435194720,\t-0.933032044265480140,\t\n-0.933050032763185430,\t-0.933068018928265520,\t-0.933086002760675770,\t-0.933103984260370890,\t-0.933121963427306020,\t-0.933139940261436320,\t-0.933157914762716700,\t-0.933175886931102430,\t\n-0.933193856766548310,\t-0.933211824269009620,\t-0.933229789438441260,\t-0.933247752274798500,\t-0.933265712778036380,\t-0.933283670948109930,\t-0.933301626784974300,\t-0.933319580288584750,\t\n-0.933337531458896090,\t-0.933355480295863680,\t-0.933373426799442460,\t-0.933391370969587800,\t-0.933409312806254610,\t-0.933427252309398270,\t-0.933445189478973700,\t-0.933463124314936170,\t\n-0.933481056817240810,\t-0.933498986985842880,\t-0.933516914820697430,\t-0.933534840321759710,\t-0.933552763488984860,\t-0.933570684322328150,\t-0.933588602821744720,\t-0.933606518987189720,\t\n-0.933624432818618510,\t-0.933642344315986140,\t-0.933660253479247970,\t-0.933678160308359150,\t-0.933696064803274940,\t-0.933713966963950480,\t-0.933731866790341260,\t-0.933749764282402190,\t\n-0.933767659440088880,\t-0.933785552263356360,\t-0.933803442752159980,\t-0.933821330906454920,\t-0.933839216726196630,\t-0.933857100211340160,\t-0.933874981361841110,\t-0.933892860177654490,\t\n-0.933910736658735700,\t-0.933928610805040190,\t-0.933946482616523020,\t-0.933964352093139770,\t-0.933982219234845590,\t-0.934000084041595850,\t-0.934017946513345910,\t-0.934035806650051040,\t\n-0.934053664451666710,\t-0.934071519918148300,\t-0.934089373049450940,\t-0.934107223845530240,\t-0.934125072306341450,\t-0.934142918431840050,\t-0.934160762221981190,\t-0.934178603676720560,\t\n-0.934196442796013330,\t-0.934214279579815180,\t-0.934232114028081150,\t-0.934249946140766950,\t-0.934267775917827840,\t-0.934285603359219170,\t-0.934303428464896670,\t-0.934321251234815460,\t\n-0.934339071668931260,\t-0.934356889767199330,\t-0.934374705529575130,\t-0.934392518956014160,\t-0.934410330046472000,\t-0.934428138800903920,\t-0.934445945219265490,\t-0.934463749301512210,\t\n-0.934481551047599560,\t-0.934499350457483000,\t-0.934517147531118250,\t-0.934534942268460340,\t-0.934552734669465310,\t-0.934570524734088300,\t-0.934588312462285130,\t-0.934606097854011050,\t\n-0.934623880909221770,\t-0.934641661627872770,\t-0.934659440009919630,\t-0.934677216055317950,\t-0.934694989764023100,\t-0.934712761135990890,\t-0.934730530171176690,\t-0.934748296869536200,\t\n-0.934766061231025010,\t-0.934783823255598610,\t-0.934801582943212690,\t-0.934819340293822850,\t-0.934837095307384570,\t-0.934854847983853540,\t-0.934872598323185480,\t-0.934890346325335850,\t\n-0.934908091990260370,\t-0.934925835317914730,\t-0.934943576308254420,\t-0.934961314961235250,\t-0.934979051276812800,\t-0.934996785254942560,\t-0.935014516895580570,\t-0.935032246198682080,\t\n-0.935049973164203130,\t-0.935067697792099200,\t-0.935085420082325980,\t-0.935103140034839300,\t-0.935120857649594740,\t-0.935138572926548010,\t-0.935156285865654800,\t-0.935173996466870940,\t\n-0.935191704730152120,\t-0.935209410655453930,\t-0.935227114242732300,\t-0.935244815491942830,\t-0.935262514403041420,\t-0.935280210975983680,\t-0.935297905210725420,\t-0.935315597107222340,\t\n-0.935333286665430360,\t-0.935350973885305080,\t-0.935368658766802420,\t-0.935386341309878080,\t-0.935404021514487870,\t-0.935421699380587610,\t-0.935439374908133110,\t-0.935457048097080190,\t\n-0.935474718947384650,\t-0.935492387459002320,\t-0.935510053631888990,\t-0.935527717466000610,\t-0.935545378961292860,\t-0.935563038117721680,\t-0.935580694935242870,\t-0.935598349413812370,\t\n-0.935616001553385980,\t-0.935633651353919630,\t-0.935651298815369010,\t-0.935668943937690290,\t-0.935686586720839260,\t-0.935704227164771640,\t-0.935721865269443450,\t-0.935739501034810630,\t\n-0.935757134460829090,\t-0.935774765547454650,\t-0.935792394294643340,\t-0.935810020702350980,\t-0.935827644770533710,\t-0.935845266499147230,\t-0.935862885888147590,\t-0.935880502937490700,\t\n-0.935898117647132600,\t-0.935915730017029210,\t-0.935933340047136460,\t-0.935950947737410390,\t-0.935968553087807020,\t-0.935986156098282060,\t-0.936003756768791880,\t-0.936021355099292300,\t\n-0.936038951089739340,\t-0.936056544740089040,\t-0.936074136050297210,\t-0.936091725020320230,\t-0.936109311650113800,\t-0.936126895939634160,\t-0.936144477888837260,\t-0.936162057497679110,\t\n-0.936179634766115880,\t-0.936197209694103580,\t-0.936214782281598160,\t-0.936232352528555970,\t-0.936249920434932710,\t-0.936267486000684770,\t-0.936285049225768050,\t-0.936302610110138710,\t\n-0.936320168653752780,\t-0.936337724856566630,\t-0.936355278718535970,\t-0.936372830239617260,\t-0.936390379419766440,\t-0.936407926258939540,\t-0.936425470757093040,\t-0.936443012914182640,\t\n-0.936460552730164820,\t-0.936478090204995620,\t-0.936495625338631290,\t-0.936513158131027760,\t-0.936530688582141390,\t-0.936548216691928230,\t-0.936565742460344630,\t-0.936583265887346530,\t\n-0.936600786972890400,\t-0.936618305716932280,\t-0.936635822119428420,\t-0.936653336180334860,\t-0.936670847899608080,\t-0.936688357277204120,\t-0.936705864313079340,\t-0.936723369007189890,\t\n-0.936740871359492020,\t-0.936758371369942000,\t-0.936775869038495970,\t-0.936793364365110290,\t-0.936810857349741230,\t-0.936828347992345050,\t-0.936845836292877880,\t-0.936863322251296200,\t\n-0.936880805867556180,\t-0.936898287141614270,\t-0.936915766073426530,\t-0.936933242662949420,\t-0.936950716910139090,\t-0.936968188814952140,\t-0.936985658377344600,\t-0.937003125597272950,\t\n-0.937020590474693440,\t-0.937038053009562550,\t-0.937055513201836440,\t-0.937072971051471690,\t-0.937090426558424450,\t-0.937107879722651080,\t-0.937125330544108070,\t-0.937142779022751670,\t\n-0.937160225158538360,\t-0.937177668951424400,\t-0.937195110401366380,\t-0.937212549508320560,\t-0.937229986272243410,\t-0.937247420693091190,\t-0.937264852770820500,\t-0.937282282505387590,\t\n-0.937299709896749160,\t-0.937317134944861240,\t-0.937334557649680660,\t-0.937351978011163540,\t-0.937369396029266610,\t-0.937386811703946000,\t-0.937404225035158520,\t-0.937421636022860440,\t\n-0.937439044667008230,\t-0.937456450967558470,\t-0.937473854924467550,\t-0.937491256537692050,\t-0.937508655807188340,\t-0.937526052732913010,\t-0.937543447314822530,\t-0.937560839552873500,\t\n-0.937578229447022290,\t-0.937595616997225600,\t-0.937613002203439790,\t-0.937630385065621460,\t-0.937647765583727200,\t-0.937665143757713590,\t-0.937682519587537010,\t-0.937699893073154270,\t\n-0.937717264214521620,\t-0.937734633011595990,\t-0.937751999464333630,\t-0.937769363572691360,\t-0.937786725336625550,\t-0.937804084756093110,\t-0.937821441831050430,\t-0.937838796561454080,\t\n-0.937856148947260770,\t-0.937873498988426980,\t-0.937890846684909630,\t-0.937908192036664980,\t-0.937925535043649950,\t-0.937942875705821020,\t-0.937960214023135010,\t-0.937977549995548390,\t\n-0.937994883623017970,\t-0.938012214905500240,\t-0.938029543842952010,\t-0.938046870435329970,\t-0.938064194682590720,\t-0.938081516584690860,\t-0.938098836141587400,\t-0.938116153353236730,\t\n-0.938133468219595760,\t-0.938150780740621080,\t-0.938168090916269510,\t-0.938185398746497650,\t-0.938202704231262290,\t-0.938220007370520140,\t-0.938237308164228010,\t-0.938254606612342610,\t\n-0.938271902714820750,\t-0.938289196471619010,\t-0.938306487882694330,\t-0.938323776948003510,\t-0.938341063667503140,\t-0.938358348041150260,\t-0.938375630068901350,\t-0.938392909750713430,\t\n-0.938410187086543220,\t-0.938427462076347530,\t-0.938444734720083160,\t-0.938462005017707050,\t-0.938479272969175880,\t-0.938496538574446590,\t-0.938513801833475880,\t-0.938531062746220670,\t\n-0.938548321312637770,\t-0.938565577532684100,\t-0.938582831406316600,\t-0.938600082933491840,\t-0.938617332114166980,\t-0.938634578948298710,\t-0.938651823435844080,\t-0.938669065576759780,\t\n-0.938686305371002950,\t-0.938703542818530300,\t-0.938720777919298750,\t-0.938738010673265340,\t-0.938755241080386880,\t-0.938772469140620290,\t-0.938789694853922500,\t-0.938806918220250530,\t\n-0.938824139239561210,\t-0.938841357911811670,\t-0.938858574236958620,\t-0.938875788214959210,\t-0.938892999845770240,\t-0.938910209129348750,\t-0.938927416065651780,\t-0.938944620654636350,\t\n-0.938961822896259290,\t-0.938979022790477740,\t-0.938996220337248500,\t-0.939013415536528840,\t-0.939030608388275570,\t-0.939047798892445830,\t-0.939064987048996550,\t-0.939082172857884870,\t\n-0.939099356319067600,\t-0.939116537432502120,\t-0.939133716198145120,\t-0.939150892615953970,\t-0.939168066685885590,\t-0.939185238407897030,\t-0.939202407781945410,\t-0.939219574807987680,\t\n-0.939236739485981080,\t-0.939253901815882530,\t-0.939271061797649300,\t-0.939288219431238410,\t-0.939305374716607020,\t-0.939322527653712050,\t-0.939339678242510970,\t-0.939356826482960480,\t\n-0.939373972375018070,\t-0.939391115918640660,\t-0.939408257113785510,\t-0.939425395960409640,\t-0.939442532458470430,\t-0.939459666607924680,\t-0.939476798408729890,\t-0.939493927860843070,\t\n-0.939511054964221490,\t-0.939528179718822300,\t-0.939545302124602520,\t-0.939562422181519640,\t-0.939579539889530580,\t-0.939596655248592820,\t-0.939613768258663270,\t-0.939630878919699320,\t\n-0.939647987231658210,\t-0.939665093194497090,\t-0.939682196808173330,\t-0.939699298072643960,\t-0.939716396987866460,\t-0.939733493553797870,\t-0.939750587770395550,\t-0.939767679637616870,\t\n-0.939784769155418860,\t-0.939801856323759120,\t-0.939818941142594570,\t-0.939836023611882680,\t-0.939853103731580710,\t-0.939870181501646140,\t-0.939887256922036010,\t-0.939904329992707680,\t\n-0.939921400713618630,\t-0.939938469084726000,\t-0.939955535105987280,\t-0.939972598777359610,\t-0.939989660098800580,\t-0.940006719070267230,\t-0.940023775691717240,\t-0.940040829963107670,\t\n-0.940057881884396210,\t-0.940074931455539890,\t-0.940091978676496300,\t-0.940109023547222700,\t-0.940126066067676680,\t-0.940143106237815380,\t-0.940160144057596400,\t-0.940177179526976880,\t\n-0.940194212645914630,\t-0.940211243414366680,\t-0.940228271832290740,\t-0.940245297899644170,\t-0.940262321616384230,\t-0.940279342982468510,\t-0.940296361997854380,\t-0.940313378662499530,\t\n-0.940330392976361010,\t-0.940347404939396720,\t-0.940364414551563720,\t-0.940381421812819810,\t-0.940398426723122350,\t-0.940415429282428830,\t-0.940432429490696610,\t-0.940449427347883390,\t\n-0.940466422853946660,\t-0.940483416008843780,\t-0.940500406812532440,\t-0.940517395264970020,\t-0.940534381366114110,\t-0.940551365115922300,\t-0.940568346514352170,\t-0.940585325561360990,\t\n-0.940602302256906550,\t-0.940619276600946350,\t-0.940636248593438080,\t-0.940653218234339010,\t-0.940670185523607040,\t-0.940687150461199440,\t-0.940704113047074130,\t-0.940721073281188480,\t\n-0.940738031163500190,\t-0.940754986693966730,\t-0.940771939872545810,\t-0.940788890699195020,\t-0.940805839173872170,\t-0.940822785296534510,\t-0.940839729067140080,\t-0.940856670485646250,\t\n-0.940873609552010710,\t-0.940890546266191170,\t-0.940907480628145330,\t-0.940924412637830660,\t-0.940941342295204990,\t-0.940958269600226100,\t-0.940975194552851390,\t-0.940992117153038770,\t\n-0.941009037400745820,\t-0.941025955295930250,\t-0.941042870838549870,\t-0.941059784028562270,\t-0.941076694865925160,\t-0.941093603350596440,\t-0.941110509482533500,\t-0.941127413261694470,\t\n-0.941144314688036830,\t-0.941161213761518510,\t-0.941178110482096990,\t-0.941195004849730400,\t-0.941211896864376120,\t-0.941228786525992180,\t-0.941245673834536280,\t-0.941262558789966120,\t\n-0.941279441392239620,\t-0.941296321641314490,\t-0.941313199537148650,\t-0.941330075079699680,\t-0.941346948268925620,\t-0.941363819104784170,\t-0.941380687587233140,\t-0.941397553716230350,\t\n-0.941414417491733820,\t-0.941431278913701040,\t-0.941448137982090260,\t-0.941464994696859070,\t-0.941481849057965390,\t-0.941498701065367040,\t-0.941515550719022040,\t-0.941532398018887990,\t\n-0.941549242964923150,\t-0.941566085557085100,\t-0.941582925795331870,\t-0.941599763679621280,\t-0.941616599209911250,\t-0.941633432386159820,\t-0.941650263208324790,\t-0.941667091676364090,\t\n-0.941683917790235640,\t-0.941700741549897360,\t-0.941717562955307290,\t-0.941734382006423340,\t-0.941751198703203340,\t-0.941768013045605420,\t-0.941784825033587400,\t-0.941801634667107420,\t\n-0.941818441946123190,\t-0.941835246870593060,\t-0.941852049440474630,\t-0.941868849655726150,\t-0.941885647516305550,\t-0.941902443022170850,\t-0.941919236173280110,\t-0.941936026969591110,\t\n-0.941952815411062240,\t-0.941969601497651190,\t-0.941986385229316210,\t-0.942003166606015130,\t-0.942019945627706300,\t-0.942036722294347540,\t-0.942053496605896990,\t-0.942070268562312570,\t\n-0.942087038163552660,\t-0.942103805409575060,\t-0.942120570300338020,\t-0.942137332835799480,\t-0.942154093015917680,\t-0.942170850840650550,\t-0.942187606309956350,\t-0.942204359423793100,\t\n-0.942221110182119070,\t-0.942237858584892170,\t-0.942254604632070670,\t-0.942271348323612590,\t-0.942288089659476190,\t-0.942304828639619510,\t-0.942321565264000790,\t-0.942338299532578190,\t\n-0.942355031445309850,\t-0.942371761002153920,\t-0.942388488203068530,\t-0.942405213048011950,\t-0.942421935536942310,\t-0.942438655669817880,\t-0.942455373446596800,\t-0.942472088867237320,\t\n-0.942488801931697600,\t-0.942505512639935870,\t-0.942522220991910300,\t-0.942538926987579240,\t-0.942555630626900840,\t-0.942572331909833360,\t-0.942589030836335050,\t-0.942605727406364170,\t\n-0.942622421619879080,\t-0.942639113476837820,\t-0.942655802977198750,\t-0.942672490120920250,\t-0.942689174907960450,\t-0.942705857338277720,\t-0.942722537411830430,\t-0.942739215128576720,\t\n-0.942755890488475080,\t-0.942772563491483530,\t-0.942789234137560770,\t-0.942805902426664730,\t-0.942822568358754110,\t-0.942839231933786940,\t-0.942855893151721800,\t-0.942872552012516850,\t\n-0.942889208516130560,\t-0.942905862662521190,\t-0.942922514451647210,\t-0.942939163883466990,\t-0.942955810957938790,\t-0.942972455675021080,\t-0.942989098034672240,\t-0.943005738036850730,\t\n-0.943022375681514700,\t-0.943039010968622860,\t-0.943055643898133460,\t-0.943072274470004970,\t-0.943088902684195760,\t-0.943105528540664320,\t-0.943122152039369000,\t-0.943138773180268400,\t\n-0.943155391963320770,\t-0.943172008388484810,\t-0.943188622455718660,\t-0.943205234164981030,\t-0.943221843516230280,\t-0.943238450509425010,\t-0.943255055144523460,\t-0.943271657421484440,\t\n-0.943288257340266220,\t-0.943304854900827270,\t-0.943321450103126290,\t-0.943338042947121650,\t-0.943354633432771930,\t-0.943371221560035610,\t-0.943387807328871290,\t-0.943404390739237320,\t\n-0.943420971791092410,\t-0.943437550484395150,\t-0.943454126819103900,\t-0.943470700795177360,\t-0.943487272412574240,\t-0.943503841671252670,\t-0.943520408571171700,\t-0.943536973112289680,\t\n-0.943553535294565200,\t-0.943570095117956860,\t-0.943586652582423250,\t-0.943603207687923160,\t-0.943619760434414870,\t-0.943636310821857280,\t-0.943652858850208890,\t-0.943669404519428380,\t\n-0.943685947829474240,\t-0.943702488780305380,\t-0.943719027371880180,\t-0.943735563604157560,\t-0.943752097477095870,\t-0.943768628990654060,\t-0.943785158144790580,\t-0.943801684939464370,\t\n-0.943818209374633790,\t-0.943834731450257760,\t-0.943851251166294760,\t-0.943867768522703820,\t-0.943884283519443310,\t-0.943900796156472270,\t-0.943917306433749050,\t-0.943933814351232690,\t\n-0.943950319908881790,\t-0.943966823106655030,\t-0.943983323944511230,\t-0.943999822422409100,\t-0.944016318540307540,\t-0.944032812298165050,\t-0.944049303695940530,\t-0.944065792733592810,\t\n-0.944082279411080580,\t-0.944098763728362660,\t-0.944115245685397840,\t-0.944131725282144840,\t-0.944148202518562680,\t-0.944164677394609850,\t-0.944181149910245380,\t-0.944197620065428070,\t\n-0.944214087860116740,\t-0.944230553294270080,\t-0.944247016367847140,\t-0.944263477080806600,\t-0.944279935433107400,\t-0.944296391424708340,\t-0.944312845055568340,\t-0.944329296325646220,\t\n-0.944345745234900780,\t-0.944362191783291060,\t-0.944378635970775760,\t-0.944395077797314020,\t-0.944411517262864430,\t-0.944427954367386250,\t-0.944444389110837950,\t-0.944460821493178890,\t\n-0.944477251514367570,\t-0.944493679174363330,\t-0.944510104473124780,\t-0.944526527410610940,\t-0.944542947986780850,\t-0.944559366201593310,\t-0.944575782055007470,\t-0.944592195546982150,\t\n-0.944608606677476260,\t-0.944625015446448950,\t-0.944641421853859020,\t-0.944657825899665520,\t-0.944674227583827570,\t-0.944690626906303900,\t-0.944707023867053850,\t-0.944723418466036140,\t\n-0.944739810703209890,\t-0.944756200578534040,\t-0.944772588091967850,\t-0.944788973243470000,\t-0.944805356032999870,\t-0.944821736460516260,\t-0.944838114525978320,\t-0.944854490229345090,\t\n-0.944870863570575700,\t-0.944887234549629080,\t-0.944903603166464490,\t-0.944919969421040730,\t-0.944936333313317170,\t-0.944952694843252840,\t-0.944969054010806550,\t-0.944985410815937790,\t\n-0.945001765258605460,\t-0.945018117338768730,\t-0.945034467056386610,\t-0.945050814411418470,\t-0.945067159403823240,\t-0.945083502033560060,\t-0.945099842300588190,\t-0.945116180204866650,\t\n-0.945132515746354710,\t-0.945148848925011500,\t-0.945165179740796170,\t-0.945181508193667860,\t-0.945197834283585720,\t-0.945214158010509120,\t-0.945230479374396970,\t-0.945246798375208750,\t\n-0.945263115012903610,\t-0.945279429287440460,\t-0.945295741198778900,\t-0.945312050746877960,\t-0.945328357931696890,\t-0.945344662753194840,\t-0.945360965211331280,\t-0.945377265306065140,\t\n-0.945393563037356000,\t-0.945409858405162780,\t-0.945426151409445080,\t-0.945442442050161920,\t-0.945458730327272680,\t-0.945475016240736600,\t-0.945491299790512940,\t-0.945507580976561070,\t\n-0.945523859798840350,\t-0.945540136257309820,\t-0.945556410351929060,\t-0.945572682082657100,\t-0.945588951449453650,\t-0.945605218452277740,\t-0.945621483091088730,\t-0.945637745365846110,\t\n-0.945654005276509110,\t-0.945670262823037120,\t-0.945686518005389280,\t-0.945702770823525380,\t-0.945719021277404370,\t-0.945735269366985930,\t-0.945751515092229320,\t-0.945767758453093910,\t\n-0.945783999449539060,\t-0.945800238081524250,\t-0.945816474349008730,\t-0.945832708251952200,\t-0.945848939790313810,\t-0.945865168964053040,\t-0.945881395773129350,\t-0.945897620217502340,\t\n-0.945913842297131160,\t-0.945930062011975270,\t-0.945946279361994380,\t-0.945962494347147740,\t-0.945978706967394830,\t-0.945994917222695240,\t-0.946011125113008330,\t-0.946027330638293470,\t\n-0.946043533798510470,\t-0.946059734593618470,\t-0.946075933023577290,\t-0.946092129088346170,\t-0.946108322787884810,\t-0.946124514122152590,\t-0.946140703091109090,\t-0.946156889694713790,\t\n-0.946173073932926380,\t-0.946189255805706120,\t-0.946205435313012930,\t-0.946221612454805960,\t-0.946237787231045120,\t-0.946253959641689790,\t-0.946270129686699430,\t-0.946286297366033870,\t\n-0.946302462679652460,\t-0.946318625627515010,\t-0.946334786209580890,\t-0.946350944425809910,\t-0.946367100276161440,\t-0.946383253760595400,\t-0.946399404879071040,\t-0.946415553631548280,\t\n-0.946431700017986600,\t-0.946447844038345700,\t-0.946463985692585160,\t-0.946480124980664690,\t-0.946496261902543770,\t-0.946512396458182410,\t-0.946528528647539890,\t-0.946544658470576120,\t\n-0.946560785927250680,\t-0.946576911017523280,\t-0.946593033741353730,\t-0.946609154098701390,\t-0.946625272089526290,\t-0.946641387713788030,\t-0.946657500971446190,\t-0.946673611862460680,\t\n-0.946689720386791110,\t-0.946705826544397280,\t-0.946721930335238880,\t-0.946738031759275510,\t-0.946754130816467310,\t-0.946770227506773530,\t-0.946786321830154430,\t-0.946802413786569260,\t\n-0.946818503375978280,\t-0.946834590598340960,\t-0.946850675453617120,\t-0.946866757941766670,\t-0.946882838062749310,\t-0.946898915816524860,\t-0.946914991203053000,\t-0.946931064222293890,\t\n-0.946947134874206900,\t-0.946963203158752150,\t-0.946979269075889360,\t-0.946995332625578560,\t-0.947011393807779210,\t-0.947027452622451580,\t-0.947043509069555140,\t-0.947059563149050040,\t\n-0.947075614860895980,\t-0.947091664205052860,\t-0.947107711181480630,\t-0.947123755790139190,\t-0.947139798030988240,\t-0.947155837903987830,\t-0.947171875409097860,\t-0.947187910546278160,\t\n-0.947203943315488630,\t-0.947219973716689420,\t-0.947236001749840130,\t-0.947252027414900890,\t-0.947268050711831620,\t-0.947284071640592140,\t-0.947300090201142480,\t-0.947316106393442660,\t\n-0.947332120217452500,\t-0.947348131673132030,\t-0.947364140760441400,\t-0.947380147479340180,\t-0.947396151829788760,\t-0.947412153811746930,\t-0.947428153425174720,\t-0.947444150670032070,\t\n-0.947460145546279110,\t-0.947476138053875760,\t-0.947492128192782060,\t-0.947508115962958030,\t-0.947524101364363710,\t-0.947540084396959250,\t-0.947556065060704440,\t-0.947572043355559450,\t\n-0.947588019281484390,\t-0.947603992838439320,\t-0.947619964026384260,\t-0.947635932845279360,\t-0.947651899295084420,\t-0.947667863375759920,\t-0.947683825087265670,\t-0.947699784429561930,\t\n-0.947715741402608720,\t-0.947731696006366090,\t-0.947747648240794270,\t-0.947763598105853310,\t-0.947779545601503350,\t-0.947795490727704530,\t-0.947811433484416990,\t-0.947827373871600880,\t\n-0.947843311889216330,\t-0.947859247537223500,\t-0.947875180815582640,\t-0.947891111724253670,\t-0.947907040263197050,\t-0.947922966432372730,\t-0.947938890231741050,\t-0.947954811661262050,\t\n-0.947970730720896100,\t-0.947986647410603340,\t-0.948002561730344030,\t-0.948018473680078190,\t-0.948034383259766190,\t-0.948050290469368170,\t-0.948066195308844620,\t-0.948082097778155440,\t\n-0.948097997877261010,\t-0.948113895606121580,\t-0.948129790964697520,\t-0.948145683952948850,\t-0.948161574570836050,\t-0.948177462818319380,\t-0.948193348695358870,\t-0.948209232201915220,\t\n-0.948225113337948230,\t-0.948240992103418610,\t-0.948256868498286500,\t-0.948272742522512260,\t-0.948288614176056030,\t-0.948304483458878410,\t-0.948320350370939420,\t-0.948336214912199770,\t\n-0.948352077082619370,\t-0.948367936882158920,\t-0.948383794310778570,\t-0.948399649368438790,\t-0.948415502055099720,\t-0.948431352370722070,\t-0.948447200315265970,\t-0.948463045888691900,\t\n-0.948478889090960230,\t-0.948494729922031320,\t-0.948510568381865650,\t-0.948526404470423360,\t-0.948542238187665250,\t-0.948558069533551480,\t-0.948573898508042520,\t-0.948589725111098850,\t\n-0.948605549342680820,\t-0.948621371202748920,\t-0.948637190691263730,\t-0.948653007808185400,\t-0.948668822553474620,\t-0.948684634927091760,\t-0.948700444928997300,\t-0.948716252559151710,\t\n-0.948732057817515570,\t-0.948747860704049260,\t-0.948763661218713250,\t-0.948779459361468120,\t-0.948795255132274360,\t-0.948811048531092440,\t-0.948826839557882940,\t-0.948842628212606340,\t\n-0.948858414495223010,\t-0.948874198405693870,\t-0.948889979943979060,\t-0.948905759110039380,\t-0.948921535903835320,\t-0.948937310325327470,\t-0.948953082374476180,\t-0.948968852051242370,\t\n-0.948984619355586200,\t-0.949000384287468690,\t-0.949016146846850090,\t-0.949031907033691220,\t-0.949047664847952550,\t-0.949063420289594780,\t-0.949079173358578280,\t-0.949094924054864060,\t\n-0.949110672378412400,\t-0.949126418329184100,\t-0.949142161907139740,\t-0.949157903112240020,\t-0.949173641944445530,\t-0.949189378403716870,\t-0.949205112490014820,\t-0.949220844203299880,\t\n-0.949236573543532970,\t-0.949252300510674550,\t-0.949268025104685440,\t-0.949283747325526230,\t-0.949299467173157720,\t-0.949315184647540390,\t-0.949330899748635270,\t-0.949346612476402730,\t\n-0.949362322830803800,\t-0.949378030811798950,\t-0.949393736419349210,\t-0.949409439653414950,\t-0.949425140513957210,\t-0.949440839000936450,\t-0.949456535114313720,\t-0.949472228854049690,\t\n-0.949487920220104980,\t-0.949503609212440590,\t-0.949519295831017130,\t-0.949534980075795400,\t-0.949550661946736210,\t-0.949566341443800370,\t-0.949582018566948680,\t-0.949597693316141970,\t\n-0.949613365691341030,\t-0.949629035692506670,\t-0.949644703319599710,\t-0.949660368572580960,\t-0.949676031451411330,\t-0.949691691956051630,\t-0.949707350086462680,\t-0.949723005842605380,\t\n-0.949738659224440450,\t-0.949754310231929020,\t-0.949769958865031790,\t-0.949785605123709690,\t-0.949801249007923510,\t-0.949816890517634180,\t-0.949832529652802740,\t-0.949848166413389870,\t\n-0.949863800799356620,\t-0.949879432810663780,\t-0.949895062447272510,\t-0.949910689709143500,\t-0.949926314596237780,\t-0.949941937108516270,\t-0.949957557245940000,\t-0.949973175008469670,\t\n-0.949988790396066540,\t-0.950004403408691410,\t-0.950020014046305320,\t-0.950035622308869070,\t-0.950051228196343800,\t-0.950066831708690440,\t-0.950082432845870130,\t-0.950098031607843670,\t\n-0.950113627994572110,\t-0.950129222006016460,\t-0.950144813642137760,\t-0.950160402902897050,\t-0.950175989788255350,\t-0.950191574298173690,\t-0.950207156432613000,\t-0.950222736191534520,\t\n-0.950238313574899180,\t-0.950253888582668020,\t-0.950269461214802160,\t-0.950285031471262640,\t-0.950300599352010500,\t-0.950316164857006980,\t-0.950331727986212900,\t-0.950347288739589620,\t\n-0.950362847117098060,\t-0.950378403118699480,\t-0.950393956744354780,\t-0.950409507994025240,\t-0.950425056867671870,\t-0.950440603365255930,\t-0.950456147486738460,\t-0.950471689232080590,\t\n-0.950487228601243570,\t-0.950502765594188340,\t-0.950518300210876350,\t-0.950533832451268430,\t-0.950549362315326160,\t-0.950564889803010350,\t-0.950580414914282360,\t-0.950595937649103220,\t\n-0.950611458007434410,\t-0.950626975989236840,\t-0.950642491594471890,\t-0.950658004823100590,\t-0.950673515675084400,\t-0.950689024150384370,\t-0.950704530248961840,\t-0.950720033970777980,\t\n-0.950735535315794020,\t-0.950751034283971230,\t-0.950766530875270740,\t-0.950782025089654040,\t-0.950797516927082250,\t-0.950813006387516650,\t-0.950828493470918580,\t-0.950843978177249300,\t\n-0.950859460506469970,\t-0.950874940458542040,\t-0.950890418033426780,\t-0.950905893231085430,\t-0.950921366051479370,\t-0.950936836494569950,\t-0.950952304560318320,\t-0.950967770248686060,\t\n-0.950983233559634320,\t-0.950998694493124460,\t-0.951014153049117850,\t-0.951029609227575960,\t-0.951045063028460040,\t-0.951060514451731340,\t-0.951075963497351460,\t-0.951091410165281650,\t\n-0.951106854455483370,\t-0.951122296367917790,\t-0.951137735902546690,\t-0.951153173059331000,\t-0.951168607838232540,\t-0.951184040239212550,\t-0.951199470262232500,\t-0.951214897907253660,\t\n-0.951230323174237610,\t-0.951245746063145830,\t-0.951261166573939550,\t-0.951276584706580500,\t-0.951292000461029910,\t-0.951307413837249260,\t-0.951322824835200250,\t-0.951338233454844030,\t\n-0.951353639696142280,\t-0.951369043559056490,\t-0.951384445043547910,\t-0.951399844149578340,\t-0.951415240877109160,\t-0.951430635226101940,\t-0.951446027196518050,\t-0.951461416788319080,\t\n-0.951476804001466610,\t-0.951492188835922130,\t-0.951507571291647090,\t-0.951522951368603210,\t-0.951538329066751950,\t-0.951553704386054910,\t-0.951569077326473440,\t-0.951584447887969480,\t\n-0.951599816070504260,\t-0.951615181874039600,\t-0.951630545298536860,\t-0.951645906343957850,\t-0.951661265010264160,\t-0.951676621297417150,\t-0.951691975205378630,\t-0.951707326734110180,\t\n-0.951722675883573510,\t-0.951738022653729980,\t-0.951753367044541500,\t-0.951768709055969550,\t-0.951784048687975950,\t-0.951799385940522050,\t-0.951814720813569770,\t-0.951830053307080700,\t\n-0.951845383421016540,\t-0.951860711155338770,\t-0.951876036510009400,\t-0.951891359484989820,\t-0.951906680080241930,\t-0.951921998295727210,\t-0.951937314131407590,\t-0.951952627587244750,\t\n-0.951967938663200290,\t-0.951983247359235900,\t-0.951998553675313500,\t-0.952013857611394680,\t-0.952029159167441130,\t-0.952044458343414780,\t-0.952059755139277210,\t-0.952075049554990340,\t\n-0.952090341590515750,\t-0.952105631245815490,\t-0.952120918520850900,\t-0.952136203415584250,\t-0.952151485929976890,\t-0.952166766063990980,\t-0.952182043817588090,\t-0.952197319190730030,\t\n-0.952212592183378730,\t-0.952227862795495980,\t-0.952243131027043500,\t-0.952258396877983300,\t-0.952273660348277100,\t-0.952288921437886680,\t-0.952304180146773980,\t-0.952319436474900800,\t\n-0.952334690422229070,\t-0.952349941988720470,\t-0.952365191174337270,\t-0.952380437979040930,\t-0.952395682402793490,\t-0.952410924445556860,\t-0.952426164107292970,\t-0.952441401387963630,\t\n-0.952456636287530860,\t-0.952471868805956360,\t-0.952487098943202270,\t-0.952502326699230410,\t-0.952517552074002790,\t-0.952532775067481240,\t-0.952547995679627780,\t-0.952563213910404330,\t\n-0.952578429759772800,\t-0.952593643227695350,\t-0.952608854314133560,\t-0.952624063019049780,\t-0.952639269342405840,\t-0.952654473284163750,\t-0.952669674844285330,\t-0.952684874022732830,\t\n-0.952700070819468170,\t-0.952715265234453270,\t-0.952730457267650270,\t-0.952745646919021080,\t-0.952760834188527750,\t-0.952776019076132410,\t-0.952791201581796980,\t-0.952806381705483480,\t\n-0.952821559447154080,\t-0.952836734806770890,\t-0.952851907784295740,\t-0.952867078379690870,\t-0.952882246592918310,\t-0.952897412423940100,\t-0.952912575872718380,\t-0.952927736939215180,\t\n-0.952942895623392740,\t-0.952958051925212880,\t-0.952973205844638070,\t-0.952988357381630120,\t-0.953003506536151400,\t-0.953018653308163820,\t-0.953033797697629640,\t-0.953048939704510990,\t\n-0.953064079328769910,\t-0.953079216570368650,\t-0.953094351429269460,\t-0.953109483905434260,\t-0.953124613998825420,\t-0.953139741709405080,\t-0.953154867037135370,\t-0.953169989981978330,\t\n-0.953185110543896540,\t-0.953200228722851930,\t-0.953215344518806630,\t-0.953230457931723120,\t-0.953245568961563320,\t-0.953260677608289700,\t-0.953275783871864290,\t-0.953290887752249460,\t\n-0.953305989249407460,\t-0.953321088363300430,\t-0.953336185093890730,\t-0.953351279441140620,\t-0.953366371405012130,\t-0.953381460985467830,\t-0.953396548182469880,\t-0.953411632995980530,\t\n-0.953426715425962130,\t-0.953441795472376950,\t-0.953456873135187230,\t-0.953471948414355340,\t-0.953487021309843640,\t-0.953502091821614380,\t-0.953517159949629820,\t-0.953532225693852430,\t\n-0.953547289054244460,\t-0.953562350030768170,\t-0.953577408623386140,\t-0.953592464832060500,\t-0.953607518656753750,\t-0.953622570097428120,\t-0.953637619154046210,\t-0.953652665826570160,\t\n-0.953667710114962430,\t-0.953682752019185510,\t-0.953697791539201640,\t-0.953712828674973310,\t-0.953727863426462870,\t-0.953742895793632810,\t-0.953757925776445580,\t-0.953772953374863340,\t\n-0.953787978588848890,\t-0.953803001418364490,\t-0.953818021863372500,\t-0.953833039923835610,\t-0.953848055599715970,\t-0.953863068890976270,\t-0.953878079797578770,\t-0.953893088319486160,\t\n-0.953908094456660800,\t-0.953923098209065290,\t-0.953938099576661980,\t-0.953953098559413460,\t-0.953968095157282090,\t-0.953983089370230570,\t-0.953998081198221270,\t-0.954013070641216880,\t\n-0.954028057699179640,\t-0.954043042372072380,\t-0.954058024659857450,\t-0.954073004562497550,\t-0.954087982079955150,\t-0.954102957212192630,\t-0.954117929959172880,\t-0.954132900320858180,\t\n-0.954147868297211430,\t-0.954162833888194780,\t-0.954177797093771150,\t-0.954192757913903010,\t-0.954207716348553060,\t-0.954222672397683660,\t-0.954237626061257730,\t-0.954252577339237630,\t\n-0.954267526231586170,\t-0.954282472738265720,\t-0.954297416859239300,\t-0.954312358594469170,\t-0.954327297943918350,\t-0.954342234907549100,\t-0.954357169485324340,\t-0.954372101677206650,\t\n-0.954387031483158730,\t-0.954401958903143170,\t-0.954416883937122760,\t-0.954431806585060110,\t-0.954446726846918000,\t-0.954461644722659040,\t-0.954476560212245920,\t-0.954491473315641440,\t\n-0.954506384032808300,\t-0.954521292363709200,\t-0.954536198308306830,\t-0.954551101866564000,\t-0.954566003038443410,\t-0.954580901823907760,\t-0.954595798222919960,\t-0.954610692235442590,\t\n-0.954625583861438480,\t-0.954640473100870410,\t-0.954655359953701210,\t-0.954670244419893570,\t-0.954685126499410290,\t-0.954700006192214290,\t-0.954714883498268270,\t-0.954729758417534930,\t\n-0.954744630949977300,\t-0.954759501095558070,\t-0.954774368854240050,\t-0.954789234225986160,\t-0.954804097210759100,\t-0.954818957808521880,\t-0.954833816019237220,\t-0.954848671842868040,\t\n-0.954863525279377230,\t-0.954878376328727520,\t-0.954893224990881920,\t-0.954908071265803240,\t-0.954922915153454400,\t-0.954937756653798210,\t-0.954952595766797700,\t-0.954967432492415670,\t\n-0.954982266830615050,\t-0.954997098781358860,\t-0.955011928344609800,\t-0.955026755520331010,\t-0.955041580308485180,\t-0.955056402709035580,\t-0.955071222721944890,\t-0.955086040347176150,\t\n-0.955100855584692270,\t-0.955115668434456390,\t-0.955130478896431100,\t-0.955145286970579880,\t-0.955160092656865300,\t-0.955174895955250510,\t-0.955189696865698430,\t-0.955204495388172200,\t\n-0.955219291522634630,\t-0.955234085269048960,\t-0.955248876627377900,\t-0.955263665597584800,\t-0.955278452179632480,\t-0.955293236373484070,\t-0.955308018179102600,\t-0.955322797596451000,\t\n-0.955337574625492400,\t-0.955352349266189950,\t-0.955367121518506560,\t-0.955381891382405370,\t-0.955396658857849520,\t-0.955411423944801940,\t-0.955426186643225870,\t-0.955440946953084240,\t\n-0.955455704874340280,\t-0.955470460406957050,\t-0.955485213550897770,\t-0.955499964306125270,\t-0.955514712672603020,\t-0.955529458650293930,\t-0.955544202239161260,\t-0.955558943439167920,\t\n-0.955573682250277390,\t-0.955588418672452590,\t-0.955603152705656770,\t-0.955617884349853060,\t-0.955632613605004620,\t-0.955647340471074690,\t-0.955662064948026300,\t-0.955676787035822930,\t\n-0.955691506734427380,\t-0.955706224043803230,\t-0.955720938963913410,\t-0.955735651494721280,\t-0.955750361636189980,\t-0.955765069388282870,\t-0.955779774750963100,\t-0.955794477724193790,\t\n-0.955809178307938320,\t-0.955823876502159940,\t-0.955838572306821900,\t-0.955853265721887340,\t-0.955867956747319610,\t-0.955882645383082100,\t-0.955897331629137930,\t-0.955912015485450350,\t\n-0.955926696951982850,\t-0.955941376028698550,\t-0.955956052715560830,\t-0.955970727012532940,\t-0.955985398919578230,\t-0.956000068436660080,\t-0.956014735563741720,\t-0.956029400300786540,\t\n-0.956044062647757880,\t-0.956058722604618990,\t-0.956073380171333360,\t-0.956088035347864240,\t-0.956102688134175090,\t-0.956117338530229070,\t-0.956131986535989850,\t-0.956146632151420590,\t\n-0.956161275376484880,\t-0.956175916211145840,\t-0.956190554655367060,\t-0.956205190709111920,\t-0.956219824372343760,\t-0.956234455645026070,\t-0.956249084527122210,\t-0.956263711018595640,\t\n-0.956278335119409850,\t-0.956292956829528200,\t-0.956307576148914150,\t-0.956322193077531190,\t-0.956336807615342680,\t-0.956351419762312190,\t-0.956366029518403100,\t-0.956380636883578990,\t\n-0.956395241857803220,\t-0.956409844441039490,\t-0.956424444633250940,\t-0.956439042434401480,\t-0.956453637844454250,\t-0.956468230863373070,\t-0.956482821491121290,\t-0.956497409727662400,\t\n-0.956511995572960070,\t-0.956526579026977570,\t-0.956541160089678820,\t-0.956555738761027060,\t-0.956570315040986000,\t-0.956584888929519090,\t-0.956599460426590050,\t-0.956614029532162350,\t\n-0.956628596246199560,\t-0.956643160568665160,\t-0.956657722499523080,\t-0.956672282038736440,\t-0.956686839186269290,\t-0.956701393942084980,\t-0.956715946306147200,\t-0.956730496278419550,\t\n-0.956745043858865610,\t-0.956759589047449180,\t-0.956774131844133620,\t-0.956788672248882870,\t-0.956803210261660380,\t-0.956817745882429850,\t-0.956832279111154980,\t-0.956846809947799470,\t\n-0.956861338392326790,\t-0.956875864444700850,\t-0.956890388104885250,\t-0.956904909372843780,\t-0.956919428248539820,\t-0.956933944731937490,\t-0.956948458823000170,\t-0.956962970521691770,\t\n-0.956977479827975870,\t-0.956991986741816400,\t-0.957006491263176830,\t-0.957020993392021070,\t-0.957035493128312820,\t-0.957049990472015890,\t-0.957064485423093970,\t-0.957078977981510870,\t\n-0.957093468147230290,\t-0.957107955920216020,\t-0.957122441300431890,\t-0.957136924287841580,\t-0.957151404882409020,\t-0.957165883084097890,\t-0.957180358892872230,\t-0.957194832308695510,\t\n-0.957209303331531760,\t-0.957223771961344670,\t-0.957238238198098280,\t-0.957252702041756160,\t-0.957267163492282470,\t-0.957281622549640670,\t-0.957296079213795000,\t-0.957310533484708960,\t\n-0.957324985362346670,\t-0.957339434846671940,\t-0.957353881937648590,\t-0.957368326635240630,\t-0.957382768939411650,\t-0.957397208850125910,\t-0.957411646367347100,\t-0.957426081491039250,\t\n-0.957440514221166050,\t-0.957454944557691650,\t-0.957469372500579840,\t-0.957483798049794670,\t-0.957498221205300040,\t-0.957512641967059760,\t-0.957527060335037870,\t-0.957541476309198390,\t\n-0.957555889889505240,\t-0.957570301075922340,\t-0.957584709868413600,\t-0.957599116266943160,\t-0.957613520271474950,\t-0.957627921881972880,\t-0.957642321098401080,\t-0.957656717920723490,\t\n-0.957671112348904010,\t-0.957685504382906780,\t-0.957699894022695840,\t-0.957714281268235100,\t-0.957728666119488700,\t-0.957743048576420560,\t-0.957757428638994930,\t-0.957771806307175620,\t\n-0.957786181580926880,\t-0.957800554460212620,\t-0.957814924944996980,\t-0.957829293035244110,\t-0.957843658730917920,\t-0.957858022031982560,\t-0.957872382938402270,\t-0.957886741450140860,\t\n-0.957901097567162680,\t-0.957915451289431790,\t-0.957929802616912300,\t-0.957944151549568250,\t-0.957958498087363770,\t-0.957972842230263130,\t-0.957987183978230350,\t-0.958001523331229570,\t\n-0.958015860289225030,\t-0.958030194852180880,\t-0.958044527020061150,\t-0.958058856792830090,\t-0.958073184170451950,\t-0.958087509152890870,\t-0.958101831740110990,\t-0.958116151932076550,\t\n-0.958130469728751710,\t-0.958144785130100710,\t-0.958159098136087680,\t-0.958173408746677000,\t-0.958187716961832690,\t-0.958202022781519220,\t-0.958216326205700630,\t-0.958230627234341270,\t\n-0.958244925867405280,\t-0.958259222104857030,\t-0.958273515946660660,\t-0.958287807392780520,\t-0.958302096443180870,\t-0.958316383097825960,\t-0.958330667356680150,\t-0.958344949219707590,\t\n-0.958359228686872730,\t-0.958373505758139730,\t-0.958387780433473060,\t-0.958402052712836850,\t-0.958416322596195580,\t-0.958430590083513500,\t-0.958444855174754970,\t-0.958459117869884140,\t\n-0.958473378168865690,\t-0.958487636071663650,\t-0.958501891578242730,\t-0.958516144688566940,\t-0.958530395402600770,\t-0.958544643720308680,\t-0.958558889641654920,\t-0.958573133166603970,\t\n-0.958587374295120200,\t-0.958601613027167950,\t-0.958615849362711710,\t-0.958630083301715840,\t-0.958644314844144700,\t-0.958658543989962860,\t-0.958672770739134590,\t-0.958686995091624470,\t\n-0.958701217047396750,\t-0.958715436606416120,\t-0.958729653768646830,\t-0.958743868534053360,\t-0.958758080902600280,\t-0.958772290874251980,\t-0.958786498448973010,\t-0.958800703626727760,\t\n-0.958814906407480790,\t-0.958829106791196480,\t-0.958843304777839410,\t-0.958857500367374050,\t-0.958871693559765090,\t-0.958885884354976680,\t-0.958900072752973730,\t-0.958914258753720490,\t\n-0.958928442357181670,\t-0.958942623563321720,\t-0.958956802372105230,\t-0.958970978783496690,\t-0.958985152797460770,\t-0.958999324413961960,\t-0.959013493632964840,\t-0.959027660454433880,\t\n-0.959041824878333890,\t-0.959055986904629340,\t-0.959070146533284820,\t-0.959084303764264900,\t-0.959098458597534180,\t-0.959112611033057340,\t-0.959126761070798970,\t-0.959140908710723770,\t\n-0.959155053952796210,\t-0.959169196796981090,\t-0.959183337243242900,\t-0.959197475291546420,\t-0.959211610941856250,\t-0.959225744194137090,\t-0.959239875048353400,\t-0.959254003504470210,\t\n-0.959268129562451890,\t-0.959282253222263350,\t-0.959296374483869060,\t-0.959310493347233950,\t-0.959324609812322590,\t-0.959338723879099690,\t-0.959352835547529930,\t-0.959366944817578120,\t\n-0.959381051689208950,\t-0.959395156162387130,\t-0.959409258237077460,\t-0.959423357913244620,\t-0.959437455190853440,\t-0.959451550069868600,\t-0.959465642550254790,\t-0.959479732631976940,\t\n-0.959493820314999860,\t-0.959507905599288000,\t-0.959521988484806520,\t-0.959536068971520110,\t-0.959550147059393450,\t-0.959564222748391480,\t-0.959578296038478880,\t-0.959592366929620580,\t\n-0.959606435421781370,\t-0.959620501514926060,\t-0.959634565209019570,\t-0.959648626504026600,\t-0.959662685399912060,\t-0.959676741896640760,\t-0.959690795994177610,\t-0.959704847692487650,\t\n-0.959718896991535340,\t-0.959732943891285940,\t-0.959746988391704140,\t-0.959761030492754850,\t-0.959775070194403000,\t-0.959789107496613390,\t-0.959803142399351160,\t-0.959817174902581010,\t\n-0.959831205006267840,\t-0.959845232710376810,\t-0.959859258014872600,\t-0.959873280919720240,\t-0.959887301424884650,\t-0.959901319530330980,\t-0.959915335236023790,\t-0.959929348541928460,\t\n-0.959943359448009680,\t-0.959957367954232480,\t-0.959971374060561880,\t-0.959985377766962800,\t-0.959999379073400270,\t-0.960013377979839320,\t-0.960027374486244980,\t-0.960041368592582160,\t\n-0.960055360298816000,\t-0.960069349604911300,\t-0.960083336510833330,\t-0.960097321016546880,\t-0.960111303122017310,\t-0.960125282827209330,\t-0.960139260132088280,\t-0.960153235036618980,\t\n-0.960167207540766680,\t-0.960181177644496180,\t-0.960195145347772950,\t-0.960209110650561800,\t-0.960223073552827770,\t-0.960237034054536200,\t-0.960250992155651910,\t-0.960264947856140250,\t\n-0.960278901155966150,\t-0.960292852055094850,\t-0.960306800553491380,\t-0.960320746651120990,\t-0.960334690347948610,\t-0.960348631643939580,\t-0.960362570539058940,\t-0.960376507033271930,\t\n-0.960390441126543590,\t-0.960404372818839170,\t-0.960418302110123800,\t-0.960432229000362740,\t-0.960446153489521000,\t-0.960460075577563970,\t-0.960473995264456650,\t-0.960487912550164410,\t\n-0.960501827434652510,\t-0.960515739917885860,\t-0.960529649999829930,\t-0.960543557680449860,\t-0.960557462959710890,\t-0.960571365837578290,\t-0.960585266314017310,\t-0.960599164388993070,\t\n-0.960613060062470940,\t-0.960626953334416170,\t-0.960640844204794120,\t-0.960654732673569820,\t-0.960668618740708750,\t-0.960682502406176140,\t-0.960696383669937260,\t-0.960710262531957350,\t\n-0.960724138992201880,\t-0.960738013050636110,\t-0.960751884707225170,\t-0.960765753961934640,\t-0.960779620814729670,\t-0.960793485265575730,\t-0.960807347314437950,\t-0.960821206961281820,\t\n-0.960835064206072680,\t-0.960848919048776010,\t-0.960862771489356840,\t-0.960876621527780860,\t-0.960890469164013330,\t-0.960904314398019600,\t-0.960918157229765040,\t-0.960931997659215220,\t\n-0.960945835686335290,\t-0.960959671311090840,\t-0.960973504533447100,\t-0.960987335353369660,\t-0.961001163770823900,\t-0.961014989785775260,\t-0.961028813398189130,\t-0.961042634608030970,\t\n-0.961056453415266130,\t-0.961070269819860210,\t-0.961084083821778680,\t-0.961097895420986890,\t-0.961111704617450440,\t-0.961125511411134560,\t-0.961139315802005070,\t-0.961153117790027210,\t\n-0.961166917375166570,\t-0.961180714557388630,\t-0.961194509336658950,\t-0.961208301712942910,\t-0.961222091686206200,\t-0.961235879256414180,\t-0.961249664423532550,\t-0.961263447187526650,\t\n-0.961277227548362200,\t-0.961291005506004660,\t-0.961304781060419720,\t-0.961318554211572640,\t-0.961332324959429330,\t-0.961346093303955150,\t-0.961359859245115690,\t-0.961373622782876640,\t\n-0.961387383917203580,\t-0.961401142648061980,\t-0.961414898975417540,\t-0.961428652899235850,\t-0.961442404419482480,\t-0.961456153536123240,\t-0.961469900249123490,\t-0.961483644558449040,\t\n-0.961497386464065460,\t-0.961511125965938460,\t-0.961524863064033620,\t-0.961538597758316630,\t-0.961552330048753070,\t-0.961566059935308750,\t-0.961579787417949250,\t-0.961593512496640380,\t\n-0.961607235171347610,\t-0.961620955442036850,\t-0.961634673308673690,\t-0.961648388771223720,\t-0.961662101829652950,\t-0.961675812483926750,\t-0.961689520734011150,\t-0.961703226579871730,\t\n-0.961716930021474180,\t-0.961730631058784420,\t-0.961744329691768040,\t-0.961758025920390720,\t-0.961771719744618500,\t-0.961785411164416850,\t-0.961799100179751790,\t-0.961812786790588900,\t\n-0.961826470996894000,\t-0.961840152798633000,\t-0.961853832195771590,\t-0.961867509188275570,\t-0.961881183776110870,\t-0.961894855959243290,\t-0.961908525737638300,\t-0.961922193111262260,\t\n-0.961935858080080530,\t-0.961949520644059250,\t-0.961963180803164120,\t-0.961976838557361160,\t-0.961990493906615950,\t-0.962004146850894640,\t-0.962017797390162910,\t-0.962031445524386690,\t\n-0.962045091253531770,\t-0.962058734577564300,\t-0.962072375496449860,\t-0.962086014010154480,\t-0.962099650118644070,\t-0.962113283821884660,\t-0.962126915119841940,\t-0.962140544012481950,\t\n-0.962154170499770590,\t-0.962167794581673790,\t-0.962181416258157560,\t-0.962195035529187730,\t-0.962208652394730300,\t-0.962222266854751320,\t-0.962235878909216580,\t-0.962249488558092110,\t\n-0.962263095801344060,\t-0.962276700638938220,\t-0.962290303070840620,\t-0.962303903097017190,\t-0.962317500717434160,\t-0.962331095932057230,\t-0.962344688740852660,\t-0.962358279143786350,\t\n-0.962371867140824340,\t-0.962385452731932540,\t-0.962399035917077320,\t-0.962412616696224350,\t-0.962426195069339910,\t-0.962439771036390000,\t-0.962453344597340550,\t-0.962466915752157930,\t\n-0.962480484500807810,\t-0.962494050843256680,\t-0.962507614779470220,\t-0.962521176309414920,\t-0.962534735433056450,\t-0.962548292150361310,\t-0.962561846461295390,\t-0.962575398365824950,\t\n-0.962588947863915910,\t-0.962602494955534520,\t-0.962616039640646900,\t-0.962629581919219210,\t-0.962643121791217470,\t-0.962656659256608040,\t-0.962670194315356830,\t-0.962683726967430320,\t\n-0.962697257212794310,\t-0.962710785051415270,\t-0.962724310483259240,\t-0.962737833508292450,\t-0.962751354126481050,\t-0.962764872337791290,\t-0.962778388142189410,\t-0.962791901539641450,\t\n-0.962805412530113760,\t-0.962818921113572480,\t-0.962832427289983970,\t-0.962845931059314370,\t-0.962859432421530050,\t-0.962872931376597020,\t-0.962886427924481760,\t-0.962899922065150290,\t\n-0.962913413798569210,\t-0.962926903124704410,\t-0.962940390043522500,\t-0.962953874554989490,\t-0.962967356659071850,\t-0.962980836355735840,\t-0.962994313644947700,\t-0.963007788526673790,\t\n-0.963021261000880370,\t-0.963034731067533900,\t-0.963048198726600520,\t-0.963061663978046710,\t-0.963075126821838600,\t-0.963088587257942890,\t-0.963102045286325480,\t-0.963115500906953190,\t\n-0.963128954119791940,\t-0.963142404924808400,\t-0.963155853321968850,\t-0.963169299311239730,\t-0.963182742892587210,\t-0.963196184065977960,\t-0.963209622831378120,\t-0.963223059188754390,\t\n-0.963236493138072910,\t-0.963249924679300260,\t-0.963263353812402800,\t-0.963276780537346890,\t-0.963290204854099000,\t-0.963303626762625600,\t-0.963317046262893270,\t-0.963330463354868160,\t\n-0.963343878038517070,\t-0.963357290313806120,\t-0.963370700180702030,\t-0.963384107639171150,\t-0.963397512689180060,\t-0.963410915330695120,\t-0.963424315563682910,\t-0.963437713388109910,\t\n-0.963451108803942690,\t-0.963464501811147620,\t-0.963477892409691390,\t-0.963491280599540370,\t-0.963504666380661120,\t-0.963518049753020240,\t-0.963531430716584200,\t-0.963544809271319690,\t\n-0.963558185417193070,\t-0.963571559154170920,\t-0.963584930482219940,\t-0.963598299401306700,\t-0.963611665911397570,\t-0.963625030012459470,\t-0.963638391704458640,\t-0.963651750987361890,\t\n-0.963665107861135680,\t-0.963678462325746830,\t-0.963691814381161690,\t-0.963705164027347180,\t-0.963718511264269660,\t-0.963731856091895820,\t-0.963745198510192360,\t-0.963758538519125960,\t\n-0.963771876118663220,\t-0.963785211308770820,\t-0.963798544089415340,\t-0.963811874460563490,\t-0.963825202422181950,\t-0.963838527974237410,\t-0.963851851116696580,\t-0.963865171849526030,\t\n-0.963878490172692670,\t-0.963891806086162980,\t-0.963905119589903880,\t-0.963918430683881830,\t-0.963931739368063870,\t-0.963945045642416450,\t-0.963958349506906510,\t-0.963971650961500610,\t\n-0.963984950006165690,\t-0.963998246640868190,\t-0.964011540865575280,\t-0.964024832680253410,\t-0.964038122084869500,\t-0.964051409079390240,\t-0.964064693663782560,\t-0.964077975838013130,\t\n-0.964091255602048670,\t-0.964104532955856190,\t-0.964117807899402270,\t-0.964131080432653830,\t-0.964144350555577790,\t-0.964157618268140840,\t-0.964170883570309780,\t-0.964184146462051530,\t\n-0.964197406943332890,\t-0.964210665014120780,\t-0.964223920674382010,\t-0.964237173924083480,\t-0.964250424763191890,\t-0.964263673191674390,\t-0.964276919209497540,\t-0.964290162816628600,\t\n-0.964303404013034050,\t-0.964316642798681120,\t-0.964329879173536630,\t-0.964343113137567260,\t-0.964356344690740270,\t-0.964369573833022240,\t-0.964382800564380420,\t-0.964396024884781600,\t\n-0.964409246794192710,\t-0.964422466292580660,\t-0.964435683379912480,\t-0.964448898056155080,\t-0.964462110321275380,\t-0.964475320175240510,\t-0.964488527618017290,\t-0.964501732649572730,\t\n-0.964514935269873860,\t-0.964528135478887600,\t-0.964541333276581090,\t-0.964554528662921130,\t-0.964567721637874960,\t-0.964580912201409510,\t-0.964594100353491690,\t-0.964607286094088750,\t\n-0.964620469423167370,\t-0.964633650340695040,\t-0.964646828846638440,\t-0.964660004940964820,\t-0.964673178623641210,\t-0.964686349894634640,\t-0.964699518753912130,\t-0.964712685201440930,\t\n-0.964725849237187960,\t-0.964739010861120350,\t-0.964752170073205240,\t-0.964765326873409770,\t-0.964778481261700850,\t-0.964791633238045840,\t-0.964804782802411660,\t-0.964817929954765560,\t\n-0.964831074695074560,\t-0.964844217023306030,\t-0.964857356939426870,\t-0.964870494443404340,\t-0.964883629535205570,\t-0.964896762214797700,\t-0.964909892482147980,\t-0.964923020337223440,\t\n-0.964936145779991430,\t-0.964949268810419090,\t-0.964962389428473570,\t-0.964975507634121990,\t-0.964988623427331600,\t-0.965001736808069780,\t-0.965014847776303530,\t-0.965027956332000230,\t\n-0.965041062475127000,\t-0.965054166205651100,\t-0.965067267523539880,\t-0.965080366428760380,\t-0.965093462921279950,\t-0.965106557001065960,\t-0.965119648668085530,\t-0.965132737922306030,\t\n-0.965145824763694590,\t-0.965158909192218690,\t-0.965171991207845470,\t-0.965185070810542280,\t-0.965198148000276370,\t-0.965211222777015100,\t-0.965224295140725830,\t-0.965237365091375810,\t\n-0.965250432628932290,\t-0.965263497753362840,\t-0.965276560464634500,\t-0.965289620762714850,\t-0.965302678647571020,\t-0.965315734119170710,\t-0.965328787177480940,\t-0.965341837822469180,\t\n-0.965354886054102800,\t-0.965367931872349370,\t-0.965380975277176030,\t-0.965394016268550150,\t-0.965407054846439290,\t-0.965420091010810830,\t-0.965433124761632120,\t-0.965446156098870630,\t\n-0.965459185022493730,\t-0.965472211532468760,\t-0.965485235628763430,\t-0.965498257311344980,\t-0.965511276580180770,\t-0.965524293435238490,\t-0.965537307876485400,\t-0.965550319903889060,\t\n-0.965563329517416970,\t-0.965576336717036470,\t-0.965589341502715250,\t-0.965602343874420570,\t-0.965615343832120110,\t-0.965628341375781240,\t-0.965641336505371540,\t-0.965654329220858480,\t\n-0.965667319522209630,\t-0.965680307409392480,\t-0.965693292882374490,\t-0.965706275941123350,\t-0.965719256585606420,\t-0.965732234815791510,\t-0.965745210631645870,\t-0.965758184033137290,\t\n-0.965771155020233140,\t-0.965784123592901220,\t-0.965797089751108890,\t-0.965810053494823960,\t-0.965823014824013780,\t-0.965835973738646160,\t-0.965848930238688560,\t-0.965861884324108690,\t\n-0.965874835994874000,\t-0.965887785250952310,\t-0.965900732092311090,\t-0.965913676518918020,\t-0.965926618530740910,\t-0.965939558127747120,\t-0.965952495309904460,\t-0.965965430077180610,\t\n-0.965978362429543160,\t-0.965991292366959800,\t-0.966004219889398220,\t-0.966017144996826000,\t-0.966030067689211070,\t-0.966042987966520770,\t-0.966055905828723250,\t-0.966068821275785750,\t\n-0.966081734307676300,\t-0.966094644924362480,\t-0.966107553125812090,\t-0.966120458911992830,\t-0.966133362282872390,\t-0.966146263238418460,\t-0.966159161778599060,\t-0.966172057903381680,\t\n-0.966184951612734100,\t-0.966197842906624140,\t-0.966210731785019590,\t-0.966223618247888270,\t-0.966236502295197860,\t-0.966249383926916170,\t-0.966262263143011000,\t-0.966275139943450270,\t\n-0.966288014328201660,\t-0.966300886297232990,\t-0.966313755850512050,\t-0.966326622988006870,\t-0.966339487709685030,\t-0.966352350015514450,\t-0.966365209905463040,\t-0.966378067379498610,\t\n-0.966390922437588950,\t-0.966403775079702100,\t-0.966416625305805630,\t-0.966429473115867800,\t-0.966442318509856180,\t-0.966455161487738800,\t-0.966468002049483580,\t-0.966480840195058200,\t\n-0.966493675924430810,\t-0.966506509237569200,\t-0.966519340134441410,\t-0.966532168615015120,\t-0.966544994679258470,\t-0.966557818327139380,\t-0.966570639558625770,\t-0.966583458373685420,\t\n-0.966596274772286490,\t-0.966609088754396880,\t-0.966621900319984630,\t-0.966634709469017530,\t-0.966647516201463720,\t-0.966660320517291010,\t-0.966673122416467630,\t-0.966685921898961410,\t\n-0.966698718964740360,\t-0.966711513613772500,\t-0.966724305846025870,\t-0.966737095661468480,\t-0.966749883060068370,\t-0.966762668041793560,\t-0.966775450606611960,\t-0.966788230754491940,\t\n-0.966801008485401180,\t-0.966813783799307940,\t-0.966826556696180230,\t-0.966839327175986200,\t-0.966852095238693750,\t-0.966864860884271150,\t-0.966877624112686410,\t-0.966890384923907550,\t\n-0.966903143317902720,\t-0.966915899294640060,\t-0.966928652854087690,\t-0.966941403996213640,\t-0.966954152720986060,\t-0.966966899028373180,\t-0.966979642918343040,\t-0.966992384390863660,\t\n-0.967005123445903500,\t-0.967017860083430380,\t-0.967030594303412650,\t-0.967043326105818450,\t-0.967056055490616020,\t-0.967068782457773280,\t-0.967081507007258700,\t-0.967094229139040310,\t\n-0.967106948853086460,\t-0.967119666149365060,\t-0.967132381027844600,\t-0.967145093488493200,\t-0.967157803531279110,\t-0.967170511156170360,\t-0.967183216363135420,\t-0.967195919152142540,\t\n-0.967208619523159620,\t-0.967221317476155360,\t-0.967234013011097680,\t-0.967246706127955050,\t-0.967259396826695590,\t-0.967272085107287790,\t-0.967284770969699560,\t-0.967297454413899580,\t\n-0.967310135439855890,\t-0.967322814047536840,\t-0.967335490236910790,\t-0.967348164007945990,\t-0.967360835360610790,\t-0.967373504294873570,\t-0.967386170810702440,\t-0.967398834908066000,\t\n-0.967411496586932370,\t-0.967424155847270150,\t-0.967436812689047470,\t-0.967449467112232670,\t-0.967462119116794360,\t-0.967474768702700660,\t-0.967487415869920040,\t-0.967500060618420870,\t\n-0.967512702948171600,\t-0.967525342859140600,\t-0.967537980351296230,\t-0.967550615424606740,\t-0.967563248079040930,\t-0.967575878314566930,\t-0.967588506131153210,\t-0.967601131528768140,\t\n-0.967613754507380410,\t-0.967626375066958140,\t-0.967638993207470040,\t-0.967651608928884470,\t-0.967664222231169880,\t-0.967676833114294640,\t-0.967689441578227340,\t-0.967702047622936550,\t\n-0.967714651248390510,\t-0.967727252454557930,\t-0.967739851241407160,\t-0.967752447608906770,\t-0.967765041557025250,\t-0.967777633085731170,\t-0.967790222194993000,\t-0.967802808884779320,\t\n-0.967815393155058490,\t-0.967827975005799310,\t-0.967840554436970040,\t-0.967853131448539570,\t-0.967865706040476170,\t-0.967878278212748520,\t-0.967890847965325100,\t-0.967903415298174700,\t\n-0.967915980211265680,\t-0.967928542704566740,\t-0.967941102778046350,\t-0.967953660431673300,\t-0.967966215665416070,\t-0.967978768479243360,\t-0.967991318873123730,\t-0.968003866847025660,\t\n-0.968016412400918070,\t-0.968028955534769310,\t-0.968041496248548290,\t-0.968054034542223500,\t-0.968066570415763610,\t-0.968079103869137310,\t-0.968091634902313200,\t-0.968104163515260070,\t\n-0.968116689707946510,\t-0.968129213480341200,\t-0.968141734832412840,\t-0.968154253764130220,\t-0.968166770275461940,\t-0.968179284366376680,\t-0.968191796036843240,\t-0.968204305286830320,\t\n-0.968216812116306610,\t-0.968229316525241020,\t-0.968241818513601920,\t-0.968254318081358420,\t-0.968266815228479020,\t-0.968279309954932720,\t-0.968291802260688010,\t-0.968304292145713900,\t\n-0.968316779609978970,\t-0.968329264653452150,\t-0.968341747276102120,\t-0.968354227477897790,\t-0.968366705258807860,\t-0.968379180618801130,\t-0.968391653557846510,\t-0.968404124075912700,\t\n-0.968416592172968600,\t-0.968429057848983030,\t-0.968441521103924790,\t-0.968453981937762780,\t-0.968466440350465810,\t-0.968478896342002790,\t-0.968491349912342430,\t-0.968503801061453730,\t\n-0.968516249789305620,\t-0.968528696095866670,\t-0.968541139981106140,\t-0.968553581444992710,\t-0.968566020487495400,\t-0.968578457108583040,\t-0.968590891308224510,\t-0.968603323086388630,\t\n-0.968615752443044540,\t-0.968628179378161150,\t-0.968640603891707250,\t-0.968653025983651770,\t-0.968665445653963840,\t-0.968677862902612150,\t-0.968690277729565950,\t-0.968702690134793930,\t\n-0.968715100118265340,\t-0.968727507679948860,\t-0.968739912819813640,\t-0.968752315537828700,\t-0.968764715833962950,\t-0.968777113708185420,\t-0.968789509160465020,\t-0.968801902190771000,\t\n-0.968814292799072050,\t-0.968826680985337530,\t-0.968839066749536130,\t-0.968851450091637200,\t-0.968863831011609560,\t-0.968876209509422440,\t-0.968888585585044760,\t-0.968900959238445660,\t\n-0.968913330469594050,\t-0.968925699278459170,\t-0.968938065665010060,\t-0.968950429629215740,\t-0.968962791171045450,\t-0.968975150290468100,\t-0.968987506987452840,\t-0.968999861261968910,\t\n-0.969012213113985220,\t-0.969024562543471020,\t-0.969036909550395560,\t-0.969049254134727640,\t-0.969061596296436730,\t-0.969073936035491750,\t-0.969086273351861930,\t-0.969098608245516410,\t\n-0.969110940716424450,\t-0.969123270764554960,\t-0.969135598389877510,\t-0.969147923592360900,\t-0.969160246371974620,\t-0.969172566728687570,\t-0.969184884662469330,\t-0.969197200173288700,\t\n-0.969209513261115040,\t-0.969221823925917710,\t-0.969234132167665740,\t-0.969246437986328590,\t-0.969258741381875180,\t-0.969271042354274970,\t-0.969283340903497100,\t-0.969295637029511050,\t\n-0.969307930732285720,\t-0.969320222011790690,\t-0.969332510867994990,\t-0.969344797300868090,\t-0.969357081310379230,\t-0.969369362896497560,\t-0.969381642059192530,\t-0.969393918798433510,\t\n-0.969406193114189520,\t-0.969418465006430140,\t-0.969430734475124510,\t-0.969443001520242210,\t-0.969455266141752260,\t-0.969467528339624240,\t-0.969479788113827400,\t-0.969492045464330990,\t\n-0.969504300391104580,\t-0.969516552894117310,\t-0.969528802973338650,\t-0.969541050628738080,\t-0.969553295860284830,\t-0.969565538667948370,\t-0.969577779051698060,\t-0.969590017011503270,\t\n-0.969602252547333450,\t-0.969614485659157980,\t-0.969626716346946420,\t-0.969638944610667910,\t-0.969651170450292140,\t-0.969663393865788370,\t-0.969675614857126170,\t-0.969687833424274890,\t\n-0.969700049567204130,\t-0.969712263285883220,\t-0.969724474580281550,\t-0.969736683450368790,\t-0.969748889896114190,\t-0.969761093917487550,\t-0.969773295514458010,\t-0.969785494686995380,\t\n-0.969797691435068890,\t-0.969809885758648240,\t-0.969822077657702790,\t-0.969834267132202220,\t-0.969846454182116010,\t-0.969858638807413630,\t-0.969870821008064650,\t-0.969883000784038660,\t\n-0.969895178135305120,\t-0.969907353061833620,\t-0.969919525563593730,\t-0.969931695640555150,\t-0.969943863292687110,\t-0.969956028519959660,\t-0.969968191322342020,\t-0.969980351699803900,\t\n-0.969992509652314870,\t-0.970004665179844630,\t-0.970016818282362750,\t-0.970028968959838700,\t-0.970041117212242290,\t-0.970053263039543090,\t-0.970065406441710800,\t-0.970077547418714880,\t\n-0.970089685970525140,\t-0.970101822097111270,\t-0.970113955798442730,\t-0.970126087074489330,\t-0.970138215925220760,\t-0.970150342350606600,\t-0.970162466350616650,\t-0.970174587925220380,\t\n-0.970186707074387810,\t-0.970198823798088420,\t-0.970210938096291890,\t-0.970223049968968130,\t-0.970235159416086730,\t-0.970247266437617380,\t-0.970259371033529880,\t-0.970271473203793920,\t\n-0.970283572948379300,\t-0.970295670267255830,\t-0.970307765160393080,\t-0.970319857627760960,\t-0.970331947669329180,\t-0.970344035285067630,\t-0.970356120474945790,\t-0.970368203238933800,\t\n-0.970380283577001230,\t-0.970392361489118120,\t-0.970404436975253910,\t-0.970416510035378650,\t-0.970428580669462140,\t-0.970440648877474170,\t-0.970452714659384650,\t-0.970464778015163290,\t\n-0.970476838944779980,\t-0.970488897448204550,\t-0.970500953525406880,\t-0.970513007176356800,\t-0.970525058401024320,\t-0.970537107199379130,\t-0.970549153571391150,\t-0.970561197517030290,\t\n-0.970573239036266470,\t-0.970585278129069470,\t-0.970597314795409340,\t-0.970609349035255970,\t-0.970621380848579180,\t-0.970633410235348880,\t-0.970645437195535090,\t-0.970657461729107720,\t\n-0.970669483836036790,\t-0.970681503516292010,\t-0.970693520769843500,\t-0.970705535596661280,\t-0.970717547996715170,\t-0.970729557969975180,\t-0.970741565516411220,\t-0.970753570635993430,\t\n-0.970765573328691730,\t-0.970777573594476140,\t-0.970789571433316460,\t-0.970801566845182930,\t-0.970813559830045470,\t-0.970825550387874210,\t-0.970837538518638970,\t-0.970849524222309970,\t\n-0.970861507498857020,\t-0.970873488348250380,\t-0.970885466770460060,\t-0.970897442765455980,\t-0.970909416333208370,\t-0.970921387473687280,\t-0.970933356186862610,\t-0.970945322472704600,\t\n-0.970957286331183280,\t-0.970969247762268670,\t-0.970981206765931030,\t-0.970993163342140360,\t-0.971005117490866710,\t-0.971017069212080310,\t-0.971029018505751300,\t-0.971040965371849700,\t\n-0.971052909810345640,\t-0.971064851821209380,\t-0.971076791404410940,\t-0.971088728559920570,\t-0.971100663287708390,\t-0.971112595587744430,\t-0.971124525459999060,\t-0.971136452904442390,\t\n-0.971148377921044580,\t-0.971160300509775860,\t-0.971172220670606380,\t-0.971184138403506260,\t-0.971196053708445860,\t-0.971207966585395430,\t-0.971219877034324890,\t-0.971231785055204800,\t\n-0.971243690648005200,\t-0.971255593812696330,\t-0.971267494549248540,\t-0.971279392857631980,\t-0.971291288737816890,\t-0.971303182189773630,\t-0.971315073213472440,\t-0.971326961808883560,\t\n-0.971338847975977250,\t-0.971350731714723860,\t-0.971362613025093640,\t-0.971374491907056830,\t-0.971386368360583790,\t-0.971398242385644870,\t-0.971410113982210440,\t-0.971421983150250520,\t\n-0.971433849889735800,\t-0.971445714200636410,\t-0.971457576082922710,\t-0.971469435536565060,\t-0.971481292561533930,\t-0.971493147157799440,\t-0.971504999325332190,\t-0.971516849064102290,\t\n-0.971528696374080350,\t-0.971540541255236700,\t-0.971552383707541710,\t-0.971564223730965740,\t-0.971576061325479130,\t-0.971587896491052480,\t-0.971599729227656030,\t-0.971611559535260240,\t\n-0.971623387413835580,\t-0.971635212863352530,\t-0.971647035883781320,\t-0.971658856475092650,\t-0.971670674637256760,\t-0.971682490370244230,\t-0.971694303674025320,\t-0.971706114548570810,\t\n-0.971717922993850960,\t-0.971729729009836340,\t-0.971741532596497310,\t-0.971753333753804570,\t-0.971765132481728470,\t-0.971776928780239470,\t-0.971788722649308160,\t-0.971800514088905110,\t\n-0.971812303099000680,\t-0.971824089679565570,\t-0.971835873830570240,\t-0.971847655551985160,\t-0.971859434843781010,\t-0.971871211705928270,\t-0.971882986138397520,\t-0.971894758141159220,\t\n-0.971906527714184070,\t-0.971918294857442520,\t-0.971930059570905390,\t-0.971941821854543030,\t-0.971953581708326130,\t-0.971965339132225160,\t-0.971977094126211030,\t-0.971988846690253980,\t\n-0.972000596824324940,\t-0.972012344528394360,\t-0.972024089802433040,\t-0.972035832646411360,\t-0.972047573060300100,\t-0.972059311044069950,\t-0.972071046597691610,\t-0.972082779721135440,\t\n-0.972094510414372560,\t-0.972106238677373220,\t-0.972117964510108350,\t-0.972129687912548610,\t-0.972141408884664600,\t-0.972153127426427120,\t-0.972164843537806740,\t-0.972176557218774270,\t\n-0.972188268469300400,\t-0.972199977289355920,\t-0.972211683678911420,\t-0.972223387637937810,\t-0.972235089166405660,\t-0.972246788264285900,\t-0.972258484931548980,\t-0.972270179168166050,\t\n-0.972281870974107450,\t-0.972293560349344330,\t-0.972305247293847260,\t-0.972316931807587160,\t-0.972328613890534600,\t-0.972340293542660610,\t-0.972351970763935760,\t-0.972363645554331080,\t\n-0.972375317913817260,\t-0.972386987842365210,\t-0.972398655339945630,\t-0.972410320406529420,\t-0.972421983042087380,\t-0.972433643246590430,\t-0.972445301020009370,\t-0.972456956362314990,\t\n-0.972468609273478330,\t-0.972480259753469970,\t-0.972491907802261140,\t-0.972503553419822420,\t-0.972515196606124950,\t-0.972526837361139320,\t-0.972538475684836760,\t-0.972550111577187960,\t\n-0.972561745038163840,\t-0.972573376067735310,\t-0.972585004665873500,\t-0.972596630832549100,\t-0.972608254567733140,\t-0.972619875871396530,\t-0.972631494743510180,\t-0.972643111184045120,\t\n-0.972654725192972250,\t-0.972666336770262710,\t-0.972677945915887190,\t-0.972689552629816820,\t-0.972701156912022640,\t-0.972712758762475540,\t-0.972724358181146440,\t-0.972735955168006590,\t\n-0.972747549723026790,\t-0.972759141846178070,\t-0.972770731537431540,\t-0.972782318796758250,\t-0.972793903624129100,\t-0.972805486019515220,\t-0.972817065982887530,\t-0.972828643514217270,\t\n-0.972840218613475360,\t-0.972851791280632930,\t-0.972863361515661110,\t-0.972874929318530700,\t-0.972886494689213070,\t-0.972898057627679220,\t-0.972909618133900200,\t-0.972921176207847130,\t\n-0.972932731849491140,\t-0.972944285058803260,\t-0.972955835835754730,\t-0.972967384180316590,\t-0.972978930092459950,\t-0.972990473572156070,\t-0.973002014619375970,\t-0.973013553234090780,\t\n-0.973025089416271750,\t-0.973036623165890010,\t-0.973048154482916710,\t-0.973059683367323070,\t-0.973071209819080130,\t-0.973082733838159240,\t-0.973094255424531430,\t-0.973105774578168050,\t\n-0.973117291299040230,\t-0.973128805587119230,\t-0.973140317442376060,\t-0.973151826864782300,\t-0.973163333854308750,\t-0.973174838410927000,\t-0.973186340534608170,\t-0.973197840225323520,\t\n-0.973209337483044170,\t-0.973220832307741480,\t-0.973232324699386700,\t-0.973243814657951180,\t-0.973255302183406170,\t-0.973266787275722800,\t-0.973278269934872430,\t-0.973289750160826530,\t\n-0.973301227953556230,\t-0.973312703313032770,\t-0.973324176239227620,\t-0.973335646732111930,\t-0.973347114791657250,\t-0.973358580417834630,\t-0.973370043610615740,\t-0.973381504369971620,\t\n-0.973392962695873830,\t-0.973404418588293520,\t-0.973415872047202260,\t-0.973427323072571180,\t-0.973438771664371980,\t-0.973450217822575680,\t-0.973461661547153970,\t-0.973473102838078090,\t\n-0.973484541695319390,\t-0.973495978118849360,\t-0.973507412108639450,\t-0.973518843664661020,\t-0.973530272786885310,\t-0.973541699475284130,\t-0.973553123729828500,\t-0.973564545550490210,\t\n-0.973575964937240410,\t-0.973587381890050900,\t-0.973598796408892800,\t-0.973610208493737690,\t-0.973621618144557170,\t-0.973633025361322570,\t-0.973644430144005260,\t-0.973655832492577030,\t\n-0.973667232407009250,\t-0.973678629887273270,\t-0.973690024933340780,\t-0.973701417545183250,\t-0.973712807722772130,\t-0.973724195466079020,\t-0.973735580775075380,\t-0.973746963649732790,\t\n-0.973758344090022820,\t-0.973769722095917060,\t-0.973781097667386850,\t-0.973792470804404010,\t-0.973803841506939990,\t-0.973815209774966270,\t-0.973826575608454650,\t-0.973837939007376470,\t\n-0.973849299971703550,\t-0.973860658501407240,\t-0.973872014596459450,\t-0.973883368256831530,\t-0.973894719482495170,\t-0.973906068273422080,\t-0.973917414629583810,\t-0.973928758550951960,\t\n-0.973940100037498200,\t-0.973951439089194240,\t-0.973962775706011750,\t-0.973974109887922210,\t-0.973985441634897420,\t-0.973996770946909060,\t-0.974008097823928720,\t-0.974019422265928190,\t\n-0.974030744272879060,\t-0.974042063844753110,\t-0.974053380981521940,\t-0.974064695683157340,\t-0.974076007949631010,\t-0.974087317780914730,\t-0.974098625176980090,\t-0.974109930137798900,\t\n-0.974121232663342830,\t-0.974132532753583800,\t-0.974143830408493280,\t-0.974155125628043290,\t-0.974166418412205530,\t-0.974177708760951670,\t-0.974188996674253520,\t-0.974200282152082870,\t\n-0.974211565194411540,\t-0.974222845801211320,\t-0.974234123972453900,\t-0.974245399708111190,\t-0.974256673008155110,\t-0.974267943872557220,\t-0.974279212301289550,\t-0.974290478294323800,\t\n-0.974301741851631880,\t-0.974313002973185570,\t-0.974324261658956800,\t-0.974335517908917260,\t-0.974346771723039070,\t-0.974358023101293820,\t-0.974369272043653640,\t-0.974380518550090220,\t\n-0.974391762620575590,\t-0.974403004255081420,\t-0.974414243453579740,\t-0.974425480216042580,\t-0.974436714542441630,\t-0.974447946432748900,\t-0.974459175886936310,\t-0.974470402904975770,\t\n-0.974481627486839310,\t-0.974492849632498710,\t-0.974504069341925900,\t-0.974515286615093120,\t-0.974526501451971950,\t-0.974537713852534630,\t-0.974548923816752950,\t-0.974560131344598960,\t\n-0.974571336436044660,\t-0.974582539091062070,\t-0.974593739309623120,\t-0.974604937091699820,\t-0.974616132437264080,\t-0.974627325346288150,\t-0.974638515818743830,\t-0.974649703854603260,\t\n-0.974660889453838440,\t-0.974672072616421300,\t-0.974683253342324090,\t-0.974694431631518700,\t-0.974705607483977170,\t-0.974716780899671730,\t-0.974727951878574310,\t-0.974739120420656910,\t\n-0.974750286525891800,\t-0.974761450194250980,\t-0.974772611425706590,\t-0.974783770220230550,\t-0.974794926577795100,\t-0.974806080498372360,\t-0.974817231981934480,\t-0.974828381028453480,\t\n-0.974839527637901490,\t-0.974850671810250760,\t-0.974861813545473300,\t-0.974872952843541250,\t-0.974884089704426860,\t-0.974895224128102370,\t-0.974906356114539690,\t-0.974917485663711170,\t\n-0.974928612775588840,\t-0.974939737450145060,\t-0.974950859687351960,\t-0.974961979487181660,\t-0.974973096849606420,\t-0.974984211774598490,\t-0.974995324262129870,\t-0.975006434312173150,\t\n-0.975017541924700250,\t-0.975028647099683510,\t-0.975039749837095070,\t-0.975050850136907400,\t-0.975061947999092520,\t-0.975073043423622780,\t-0.975084136410470430,\t-0.975095226959607710,\t\n-0.975106315071006980,\t-0.975117400744640370,\t-0.975128483980480350,\t-0.975139564778499170,\t-0.975150643138668950,\t-0.975161719060962160,\t-0.975172792545351160,\t-0.975183863591808090,\t\n-0.975194932200305400,\t-0.975205998370815340,\t-0.975217062103310270,\t-0.975228123397762660,\t-0.975239182254144630,\t-0.975250238672428660,\t-0.975261292652587100,\t-0.975272344194592300,\t\n-0.975283393298416730,\t-0.975294439964032530,\t-0.975305484191412390,\t-0.975316525980528430,\t-0.975327565331353230,\t-0.975338602243859040,\t-0.975349636718018330,\t-0.975360668753803670,\t\n-0.975371698351187200,\t-0.975382725510141600,\t-0.975393750230639010,\t-0.975404772512652230,\t-0.975415792356153390,\t-0.975426809761115180,\t-0.975437824727509840,\t-0.975448837255309950,\t\n-0.975459847344487980,\t-0.975470854995016510,\t-0.975481860206867780,\t-0.975492862980014470,\t-0.975503863314428950,\t-0.975514861210083790,\t-0.975525856666951460,\t-0.975536849685004540,\t\n-0.975547840264215370,\t-0.975558828404556650,\t-0.975569814106000970,\t-0.975580797368520660,\t-0.975591778192088420,\t-0.975602756576676610,\t-0.975613732522258030,\t-0.975624706028805130,\t\n-0.975635677096290400,\t-0.975646645724686510,\t-0.975657611913965940,\t-0.975668575664101370,\t-0.975679536975065380,\t-0.975690495846830540,\t-0.975701452279369550,\t-0.975712406272654760,\t\n-0.975723357826659090,\t-0.975734306941354990,\t-0.975745253616715160,\t-0.975756197852712060,\t-0.975767139649318600,\t-0.975778079006507260,\t-0.975789015924250710,\t-0.975799950402521650,\t\n-0.975810882441292660,\t-0.975821812040536530,\t-0.975832739200225840,\t-0.975843663920333280,\t-0.975854586200831540,\t-0.975865506041693420,\t-0.975876423442891380,\t-0.975887338404398450,\t\n-0.975898250926187090,\t-0.975909161008230220,\t-0.975920068650500290,\t-0.975930973852970230,\t-0.975941876615612710,\t-0.975952776938400660,\t-0.975963674821306530,\t-0.975974570264303230,\t\n-0.975985463267363460,\t-0.975996353830460130,\t-0.976007241953565920,\t-0.976018127636653520,\t-0.976029010879695850,\t-0.976039891682665580,\t-0.976050770045535750,\t-0.976061645968278820,\t\n-0.976072519450867810,\t-0.976083390493275530,\t-0.976094259095474870,\t-0.976105125257438420,\t-0.976115988979139200,\t-0.976126850260550020,\t-0.976137709101643770,\t-0.976148565502393150,\t\n-0.976159419462771180,\t-0.976170270982750550,\t-0.976181120062304400,\t-0.976191966701405400,\t-0.976202810900026470,\t-0.976213652658140530,\t-0.976224491975720370,\t-0.976235328852739110,\t\n-0.976246163289169470,\t-0.976256995284984440,\t-0.976267824840156840,\t-0.976278651954659790,\t-0.976289476628465990,\t-0.976300298861548680,\t-0.976311118653880430,\t-0.976321936005434490,\t\n-0.976332750916183660,\t-0.976343563386101070,\t-0.976354373415159400,\t-0.976365181003331920,\t-0.976375986150591400,\t-0.976386788856910990,\t-0.976397589122263600,\t-0.976408386946622240,\t\n-0.976419182329959830,\t-0.976429975272249510,\t-0.976440765773464390,\t-0.976451553833577180,\t-0.976462339452561110,\t-0.976473122630389210,\t-0.976483903367034610,\t-0.976494681662470110,\t\n-0.976505457516668950,\t-0.976516230929604160,\t-0.976527001901248750,\t-0.976537770431575860,\t-0.976548536520558620,\t-0.976559300168169940,\t-0.976570061374383070,\t-0.976580820139171020,\t\n-0.976591576462506940,\t-0.976602330344363830,\t-0.976613081784715060,\t-0.976623830783533430,\t-0.976634577340792290,\t-0.976645321456464770,\t-0.976656063130523780,\t-0.976666802362942790,\t\n-0.976677539153694710,\t-0.976688273502752890,\t-0.976699005410090250,\t-0.976709734875680140,\t-0.976720461899495680,\t-0.976731186481510140,\t-0.976741908621696520,\t-0.976752628320028290,\t\n-0.976763345576478370,\t-0.976774060391020100,\t-0.976784772763626740,\t-0.976795482694271410,\t-0.976806190182927250,\t-0.976816895229567830,\t-0.976827597834166060,\t-0.976838297996695300,\t\n-0.976848995717128800,\t-0.976859690995439790,\t-0.976870383831601630,\t-0.976881074225587450,\t-0.976891762177370620,\t-0.976902447686924250,\t-0.976913130754221930,\t-0.976923811379236670,\t\n-0.976934489561941950,\t-0.976945165302311010,\t-0.976955838600317210,\t-0.976966509455933660,\t-0.976977177869133960,\t-0.976987843839891230,\t-0.976998507368178950,\t-0.977009168453970340,\t\n-0.977019827097238890,\t-0.977030483297957830,\t-0.977041137056100630,\t-0.977051788371640530,\t-0.977062437244551000,\t-0.977073083674805280,\t-0.977083727662376940,\t-0.977094369207239240,\t\n-0.977105008309365640,\t-0.977115644968729490,\t-0.977126279185304260,\t-0.977136910959063300,\t-0.977147540289980080,\t-0.977158167178028060,\t-0.977168791623180490,\t-0.977179413625411050,\t\n-0.977190033184693110,\t-0.977200650301000010,\t-0.977211264974305330,\t-0.977221877204582420,\t-0.977232486991804870,\t-0.977243094335946140,\t-0.977253699236979580,\t-0.977264301694878880,\t\n-0.977274901709617280,\t-0.977285499281168590,\t-0.977296094409506040,\t-0.977306687094603330,\t-0.977317277336433810,\t-0.977327865134971160,\t-0.977338450490188860,\t-0.977349033402060360,\t\n-0.977359613870559360,\t-0.977370191895659320,\t-0.977380767477333710,\t-0.977391340615556330,\t-0.977401911310300520,\t-0.977412479561539870,\t-0.977423045369248070,\t-0.977433608733398680,\t\n-0.977444169653965300,\t-0.977454728130921380,\t-0.977465284164240720,\t-0.977475837753896790,\t-0.977486388899863390,\t-0.977496937602113980,\t-0.977507483860622140,\t-0.977518027675361670,\t\n-0.977528569046306140,\t-0.977539107973429130,\t-0.977549644456704340,\t-0.977560178496105550,\t-0.977570710091606120,\t-0.977581239243180080,\t-0.977591765950800880,\t-0.977602290214442340,\t\n-0.977612812034078020,\t-0.977623331409681610,\t-0.977633848341226910,\t-0.977644362828687610,\t-0.977654874872037390,\t-0.977665384471250070,\t-0.977675891626299200,\t-0.977686396337158590,\t\n-0.977696898603802040,\t-0.977707398426203240,\t-0.977717895804335880,\t-0.977728390738173860,\t-0.977738883227690870,\t-0.977749373272860600,\t-0.977759860873656960,\t-0.977770346030053530,\t\n-0.977780828742024430,\t-0.977791309009543140,\t-0.977801786832583560,\t-0.977812262211119610,\t-0.977822735145124970,\t-0.977833205634573430,\t-0.977843673679438920,\t-0.977854139279695220,\t\n-0.977864602435316250,\t-0.977875063146275700,\t-0.977885521412547480,\t-0.977895977234105480,\t-0.977906430610923530,\t-0.977916881542975510,\t-0.977927330030235350,\t-0.977937776072676730,\t\n-0.977948219670273790,\t-0.977958660823000200,\t-0.977969099530830000,\t-0.977979535793737090,\t-0.977989969611695380,\t-0.978000400984678660,\t-0.978010829912660860,\t-0.978021256395616210,\t\n-0.978031680433518180,\t-0.978042102026341120,\t-0.978052521174058720,\t-0.978062937876645110,\t-0.978073352134074090,\t-0.978083763946319680,\t-0.978094173313355800,\t-0.978104580235156670,\t\n-0.978114984711695890,\t-0.978125386742947800,\t-0.978135786328886090,\t-0.978146183469485120,\t-0.978156578164718570,\t-0.978166970414560580,\t-0.978177360218985160,\t-0.978187747577966340,\t\n-0.978198132491478130,\t-0.978208514959494680,\t-0.978218894981989880,\t-0.978229272558937770,\t-0.978239647690312570,\t-0.978250020376088210,\t-0.978260390616238930,\t-0.978270758410738520,\t\n-0.978281123759561220,\t-0.978291486662681180,\t-0.978301847120072400,\t-0.978312205131709020,\t-0.978322560697565070,\t-0.978332913817614780,\t-0.978343264491832180,\t-0.978353612720191500,\t\n-0.978363958502666660,\t-0.978374301839232020,\t-0.978384642729861590,\t-0.978394981174529500,\t-0.978405317173210000,\t-0.978415650725877220,\t-0.978425981832505290,\t-0.978436310493068450,\t\n-0.978446636707540840,\t-0.978456960475896590,\t-0.978467281798109930,\t-0.978477600674155120,\t-0.978487917104006180,\t-0.978498231087637560,\t-0.978508542625023400,\t-0.978518851716137840,\t\n-0.978529158360955110,\t-0.978539462559449570,\t-0.978549764311595240,\t-0.978560063617366580,\t-0.978570360476737840,\t-0.978580654889683150,\t-0.978590946856176760,\t-0.978601236376193010,\t\n-0.978611523449706260,\t-0.978621808076690640,\t-0.978632090257120500,\t-0.978642369990970100,\t-0.978652647278213880,\t-0.978662922118825880,\t-0.978673194512780680,\t-0.978683464460052500,\t\n-0.978693731960615710,\t-0.978703997014444440,\t-0.978714259621513260,\t-0.978724519781796420,\t-0.978734777495268380,\t-0.978745032761903280,\t-0.978755285581675570,\t-0.978765535954559730,\t\n-0.978775783880530100,\t-0.978786029359560940,\t-0.978796272391626700,\t-0.978806512976701740,\t-0.978816751114760520,\t-0.978826986805777510,\t-0.978837220049726950,\t-0.978847450846583310,\t\n-0.978857679196321160,\t-0.978867905098914750,\t-0.978878128554338530,\t-0.978888349562566980,\t-0.978898568123574670,\t-0.978908784237335850,\t-0.978918997903825080,\t-0.978929209123016840,\t\n-0.978939417894885590,\t-0.978949624219405790,\t-0.978959828096551910,\t-0.978970029526298520,\t-0.978980228508619990,\t-0.978990425043490880,\t-0.979000619130885760,\t-0.979010810770779010,\t\n-0.979020999963145290,\t-0.979031186707959080,\t-0.979041371005194950,\t-0.979051552854827260,\t-0.979061732256830800,\t-0.979071909211179920,\t-0.979082083717849330,\t-0.979092255776813580,\t\n-0.979102425388047150,\t-0.979112592551524610,\t-0.979122757267220640,\t-0.979132919535109720,\t-0.979143079355166530,\t-0.979153236727365650,\t-0.979163391651681760,\t-0.979173544128089320,\t\n-0.979183694156562920,\t-0.979193841737077460,\t-0.979203986869607300,\t-0.979214129554127120,\t-0.979224269790611720,\t-0.979234407579035570,\t-0.979244542919373460,\t-0.979254675811599970,\t\n-0.979264806255689790,\t-0.979274934251617600,\t-0.979285059799358090,\t-0.979295182898885950,\t-0.979305303550175750,\t-0.979315421753202410,\t-0.979325537507940380,\t-0.979335650814364690,\t\n-0.979345761672449690,\t-0.979355870082170400,\t-0.979365976043501400,\t-0.979376079556417480,\t-0.979386180620893440,\t-0.979396279236903760,\t-0.979406375404423550,\t-0.979416469123427280,\t\n-0.979426560393889870,\t-0.979436649215786100,\t-0.979446735589090680,\t-0.979456819513778500,\t-0.979466900989824140,\t-0.979476980017202630,\t-0.979487056595888640,\t-0.979497130725856980,\t\n-0.979507202407082560,\t-0.979517271639540050,\t-0.979527338423204390,\t-0.979537402758050350,\t-0.979547464644052850,\t-0.979557524081186680,\t-0.979567581069426760,\t-0.979577635608747780,\t\n-0.979587687699124740,\t-0.979597737340532570,\t-0.979607784532945950,\t-0.979617829276340000,\t-0.979627871570689310,\t-0.979637911415969010,\t-0.979647948812154000,\t-0.979657983759219090,\t\n-0.979668016257139170,\t-0.979678046305889170,\t-0.979688073905444100,\t-0.979698099055778870,\t-0.979708121756868390,\t-0.979718142008687680,\t-0.979728159811211530,\t-0.979738175164414970,\t\n-0.979748188068273020,\t-0.979758198522760580,\t-0.979768206527852570,\t-0.979778212083524110,\t-0.979788215189750120,\t-0.979798215846505620,\t-0.979808214053765610,\t-0.979818209811504910,\t\n-0.979828203119698870,\t-0.979838193978322170,\t-0.979848182387350050,\t-0.979858168346757540,\t-0.979868151856519540,\t-0.979878132916611080,\t-0.979888111527007500,\t-0.979898087687683490,\t\n-0.979908061398614310,\t-0.979918032659774840,\t-0.979928001471140450,\t-0.979937967832686050,\t-0.979947931744386660,\t-0.979957893206217510,\t-0.979967852218153520,\t-0.979977808780170050,\t\n-0.979987762892241990,\t-0.979997714554344480,\t-0.980007663766452760,\t-0.980017610528541860,\t-0.980027554840586900,\t-0.980037496702563020,\t-0.980047436114445450,\t-0.980057373076209330,\t\n-0.980067307587829670,\t-0.980077239649281840,\t-0.980087169260540850,\t-0.980097096421581940,\t-0.980107021132380350,\t-0.980116943392911220,\t-0.980126863203149570,\t-0.980136780563070960,\t\n-0.980146695472650320,\t-0.980156607931862880,\t-0.980166517940683990,\t-0.980176425499088790,\t-0.980186330607052510,\t-0.980196233264550410,\t-0.980206133471557830,\t-0.980216031228049790,\t\n-0.980225926534001760,\t-0.980235819389388750,\t-0.980245709794186350,\t-0.980255597748369680,\t-0.980265483251913980,\t-0.980275366304794500,\t-0.980285246906986710,\t-0.980295125058465720,\t\n-0.980305000759207010,\t-0.980314874009185710,\t-0.980324744808377280,\t-0.980334613156756960,\t-0.980344479054300110,\t-0.980354342500982080,\t-0.980364203496778220,\t-0.980374062041663770,\t\n-0.980383918135614210,\t-0.980393771778604870,\t-0.980403622970611120,\t-0.980413471711608200,\t-0.980423318001571680,\t-0.980433161840476910,\t-0.980443003228299140,\t-0.980452842165013940,\t\n-0.980462678650596660,\t-0.980472512685022670,\t-0.980482344268267300,\t-0.980492173400306140,\t-0.980502000081114540,\t-0.980511824310667970,\t-0.980521646088941770,\t-0.980531465415911520,\t\n-0.980541282291552570,\t-0.980551096715840400,\t-0.980560908688750570,\t-0.980570718210258430,\t-0.980580525280339450,\t-0.980590329898969220,\t-0.980600132066123060,\t-0.980609931781776690,\t\n-0.980619729045905440,\t-0.980629523858484900,\t-0.980639316219490520,\t-0.980649106128897770,\t-0.980658893586682350,\t-0.980668678592819700,\t-0.980678461147285410,\t-0.980688241250054830,\t\n-0.980698018901103750,\t-0.980707794100407540,\t-0.980717566847941870,\t-0.980727337143682320,\t-0.980737104987604470,\t-0.980746870379683780,\t-0.980756633319895930,\t-0.980766393808216510,\t\n-0.980776151844621080,\t-0.980785907429085340,\t-0.980795660561584740,\t-0.980805411242095080,\t-0.980815159470591840,\t-0.980824905247050680,\t-0.980834648571447310,\t-0.980844389443757290,\t\n-0.980854127863956200,\t-0.980863863832019960,\t-0.980873597347924010,\t-0.980883328411644050,\t-0.980893057023155770,\t-0.980902783182434850,\t-0.980912506889456860,\t-0.980922228144197830,\t\n-0.980931946946632990,\t-0.980941663296738490,\t-0.980951377194489660,\t-0.980961088639862530,\t-0.980970797632832570,\t-0.980980504173375790,\t-0.980990208261467540,\t-0.980999909897083850,\t\n-0.981009609080200410,\t-0.981019305810793000,\t-0.981029000088837200,\t-0.981038691914308920,\t-0.981048381287183970,\t-0.981058068207438130,\t-0.981067752675046980,\t-0.981077434689986540,\t\n-0.981087114252232500,\t-0.981096791361760650,\t-0.981106466018546790,\t-0.981116138222566820,\t-0.981125807973796450,\t-0.981135475272211570,\t-0.981145140117788080,\t-0.981154802510501690,\t\n-0.981164462450328290,\t-0.981174119937243790,\t-0.981183774971223890,\t-0.981193427552244590,\t-0.981203077680281700,\t-0.981212725355311230,\t-0.981222370577308880,\t-0.981232013346250540,\t\n-0.981241653662112250,\t-0.981251291524869780,\t-0.981260926934499070,\t-0.981270559890976110,\t-0.981280190394276720,\t-0.981289818444376790,\t-0.981299444041252360,\t-0.981309067184879420,\t\n-0.981318687875233690,\t-0.981328306112291270,\t-0.981337921896028090,\t-0.981347535226420040,\t-0.981357146103443270,\t-0.981366754527073560,\t-0.981376360497287050,\t-0.981385964014059530,\t\n-0.981395565077367140,\t-0.981405163687185890,\t-0.981414759843491690,\t-0.981424353546260560,\t-0.981433944795468530,\t-0.981443533591091710,\t-0.981453119933106020,\t-0.981462703821487590,\t\n-0.981472285256212330,\t-0.981481864237256360,\t-0.981491440764595710,\t-0.981501014838206510,\t-0.981510586458064770,\t-0.981520155624146520,\t-0.981529722336427990,\t-0.981539286594884990,\t\n-0.981548848399493970,\t-0.981558407750230730,\t-0.981567964647071410,\t-0.981577519089992250,\t-0.981587071078969250,\t-0.981596620613978570,\t-0.981606167694996420,\t-0.981615712321998850,\t\n-0.981625254494961850,\t-0.981634794213861910,\t-0.981644331478674800,\t-0.981653866289377010,\t-0.981663398645944430,\t-0.981672928548353420,\t-0.981682455996580110,\t-0.981691980990600620,\t\n-0.981701503530391210,\t-0.981711023615927990,\t-0.981720541247187330,\t-0.981730056424145240,\t-0.981739569146777960,\t-0.981749079415061840,\t-0.981758587228973020,\t-0.981768092588487630,\t\n-0.981777595493582120,\t-0.981787095944232520,\t-0.981796593940415300,\t-0.981806089482106460,\t-0.981815582569282470,\t-0.981825073201919580,\t-0.981834561379993920,\t-0.981844047103481940,\t\n-0.981853530372359780,\t-0.981863011186603800,\t-0.981872489546190330,\t-0.981881965451095520,\t-0.981891438901295930,\t-0.981900909896767700,\t-0.981910378437487190,\t-0.981919844523430730,\t\n-0.981929308154574690,\t-0.981938769330895410,\t-0.981948228052369140,\t-0.981957684318972230,\t-0.981967138130681260,\t-0.981976589487472350,\t-0.981986038389321970,\t-0.981995484836206580,\t\n-0.982004928828102420,\t-0.982014370364985960,\t-0.982023809446833430,\t-0.982033246073621520,\t-0.982042680245326480,\t-0.982052111961924770,\t-0.982061541223392730,\t-0.982070968029706840,\t\n-0.982080392380843550,\t-0.982089814276779330,\t-0.982099233717490420,\t-0.982108650702953610,\t-0.982118065233145040,\t-0.982127477308041400,\t-0.982136886927619020,\t-0.982146294091854390,\t\n-0.982155698800724060,\t-0.982165101054204510,\t-0.982174500852272200,\t-0.982183898194903590,\t-0.982193293082075260,\t-0.982202685513763660,\t-0.982212075489945490,\t-0.982221463010596980,\t\n-0.982230848075694830,\t-0.982240230685215600,\t-0.982249610839135870,\t-0.982258988537431990,\t-0.982268363780080640,\t-0.982277736567058410,\t-0.982287106898341870,\t-0.982296474773907580,\t\n-0.982305840193732020,\t-0.982315203157791970,\t-0.982324563666063800,\t-0.982333921718524290,\t-0.982343277315149920,\t-0.982352630455917470,\t-0.982361981140803310,\t-0.982371329369784330,\t\n-0.982380675142836890,\t-0.982390018459937900,\t-0.982399359321063700,\t-0.982408697726191220,\t-0.982418033675297010,\t-0.982427367168357660,\t-0.982436698205349850,\t-0.982446026786250370,\t\n-0.982455352911035810,\t-0.982464676579682950,\t-0.982473997792168260,\t-0.982483316548468650,\t-0.982492632848560700,\t-0.982501946692421190,\t-0.982511258080026820,\t-0.982520567011354370,\t\n-0.982529873486380430,\t-0.982539177505081800,\t-0.982548479067435250,\t-0.982557778173417500,\t-0.982567074823005320,\t-0.982576369016175400,\t-0.982585660752904650,\t-0.982594950033169660,\t\n-0.982604236856947310,\t-0.982613521224214410,\t-0.982622803134947650,\t-0.982632082589123930,\t-0.982641359586719940,\t-0.982650634127712590,\t-0.982659906212078770,\t-0.982669175839794960,\t\n-0.982678443010838400,\t-0.982687707725185660,\t-0.982696969982813640,\t-0.982706229783699260,\t-0.982715487127819200,\t-0.982724742015150590,\t-0.982733994445669890,\t-0.982743244419354460,\t\n-0.982752491936180750,\t-0.982761736996125790,\t-0.982770979599166590,\t-0.982780219745279850,\t-0.982789457434442680,\t-0.982798692666631780,\t-0.982807925441824160,\t-0.982817155759996730,\t\n-0.982826383621126400,\t-0.982835609025190180,\t-0.982844831972164880,\t-0.982854052462027510,\t-0.982863270494754970,\t-0.982872486070324290,\t-0.982881699188712380,\t-0.982890909849896240,\t\n-0.982900118053852800,\t-0.982909323800559060,\t-0.982918527089992170,\t-0.982927727922128790,\t-0.982936926296946070,\t-0.982946122214421130,\t-0.982955315674530870,\t-0.982964506677252330,\t\n-0.982973695222562500,\t-0.982982881310438430,\t-0.982992064940857110,\t-0.983001246113795690,\t-0.983010424829231180,\t-0.983019601087140480,\t-0.983028774887500960,\t-0.983037946230289390,\t\n-0.983047115115482930,\t-0.983056281543058690,\t-0.983065445512993800,\t-0.983074607025265390,\t-0.983083766079850260,\t-0.983092922676725880,\t-0.983102076815869030,\t-0.983111228497257180,\t\n-0.983120377720867130,\t-0.983129524486676120,\t-0.983138668794661390,\t-0.983147810644799950,\t-0.983156950037068930,\t-0.983166086971445590,\t-0.983175221447907030,\t-0.983184353466430410,\t\n-0.983193483026992940,\t-0.983202610129571770,\t-0.983211734774144030,\t-0.983220856960686950,\t-0.983229976689177660,\t-0.983239093959593520,\t-0.983248208771911660,\t-0.983257321126109310,\t\n-0.983266431022163600,\t-0.983275538460051780,\t-0.983284643439751190,\t-0.983293745961238860,\t-0.983302846024492360,\t-0.983311943629488590,\t-0.983321038776205030,\t-0.983330131464618780,\t\n-0.983339221694707330,\t-0.983348309466447800,\t-0.983357394779817430,\t-0.983366477634793680,\t-0.983375558031353680,\t-0.983384635969474670,\t-0.983393711449134230,\t-0.983402784470309490,\t\n-0.983411855032977790,\t-0.983420923137116380,\t-0.983429988782702710,\t-0.983439051969714040,\t-0.983448112698127820,\t-0.983457170967921290,\t-0.983466226779071690,\t-0.983475280131556720,\t\n-0.983484331025353490,\t-0.983493379460439350,\t-0.983502425436791780,\t-0.983511468954388230,\t-0.983520510013205950,\t-0.983529548613222500,\t-0.983538584754415020,\t-0.983547618436761200,\t\n-0.983556649660238260,\t-0.983565678424823790,\t-0.983574704730495020,\t-0.983583728577229530,\t-0.983592749965004680,\t-0.983601768893798020,\t-0.983610785363586930,\t-0.983619799374348850,\t\n-0.983628810926061250,\t-0.983637820018701700,\t-0.983646826652247560,\t-0.983655830826676290,\t-0.983664832541965460,\t-0.983673831798092650,\t-0.983682828595035200,\t-0.983691822932770690,\t\n-0.983700814811276580,\t-0.983709804230530450,\t-0.983718791190509870,\t-0.983727775691192190,\t-0.983736757732555200,\t-0.983745737314576260,\t-0.983754714437232950,\t-0.983763689100502940,\t\n-0.983772661304363690,\t-0.983781631048792680,\t-0.983790598333767700,\t-0.983799563159266200,\t-0.983808525525265760,\t-0.983817485431744080,\t-0.983826442878678600,\t-0.983835397866047010,\t\n-0.983844350393827010,\t-0.983853300461996040,\t-0.983862248070531910,\t-0.983871193219412080,\t-0.983880135908614340,\t-0.983889076138116270,\t-0.983898013907895440,\t-0.983906949217929540,\t\n-0.983915882068196360,\t-0.983924812458673470,\t-0.983933740389338450,\t-0.983942665860169210,\t-0.983951588871143200,\t-0.983960509422238340,\t-0.983969427513432080,\t-0.983978343144702340,\t\n-0.983987256316026790,\t-0.983996167027382910,\t-0.984005075278748810,\t-0.984013981070101850,\t-0.984022884401420050,\t-0.984031785272680980,\t-0.984040683683862550,\t-0.984049579634942330,\t\n-0.984058473125898230,\t-0.984067364156707810,\t-0.984076252727349110,\t-0.984085138837799690,\t-0.984094022488037460,\t-0.984102903678040210,\t-0.984111782407785630,\t-0.984120658677251630,\t\n-0.984129532486415990,\t-0.984138403835256530,\t-0.984147272723751020,\t-0.984156139151877380,\t-0.984165003119613410,\t-0.984173864626936900,\t-0.984182723673825640,\t-0.984191580260257660,\t\n-0.984200434386210740,\t-0.984209286051662690,\t-0.984218135256591520,\t-0.984226982000974910,\t-0.984235826284790890,\t-0.984244668108017250,\t-0.984253507470632010,\t-0.984262344372612950,\t\n-0.984271178813938110,\t-0.984280010794585270,\t-0.984288840314532340,\t-0.984297667373757460,\t-0.984306491972238300,\t-0.984315314109952880,\t-0.984324133786879220,\t-0.984332951002995230,\t\n-0.984341765758278920,\t-0.984350578052708090,\t-0.984359387886260980,\t-0.984368195258915280,\t-0.984377000170649110,\t-0.984385802621440380,\t-0.984394602611267210,\t-0.984403400140107520,\t\n-0.984412195207939320,\t-0.984420987814740630,\t-0.984429777960489470,\t-0.984438565645163850,\t-0.984447350868741910,\t-0.984456133631201550,\t-0.984464913932520780,\t-0.984473691772677850,\t\n-0.984482467151650550,\t-0.984491240069417240,\t-0.984500010525955700,\t-0.984508778521244190,\t-0.984517544055260710,\t-0.984526307127983390,\t-0.984535067739390370,\t-0.984543825889459550,\t\n-0.984552581578169270,\t-0.984561334805497460,\t-0.984570085571422340,\t-0.984578833875922040,\t-0.984587579718974590,\t-0.984596323100558220,\t-0.984605064020651070,\t-0.984613802479231250,\t\n-0.984622538476276900,\t-0.984631272011766260,\t-0.984640003085677340,\t-0.984648731697988500,\t-0.984657457848677750,\t-0.984666181537723450,\t-0.984674902765103720,\t-0.984683621530796580,\t\n-0.984692337834780610,\t-0.984701051677033590,\t-0.984709763057533990,\t-0.984718471976260060,\t-0.984727178433189910,\t-0.984735882428301790,\t-0.984744583961573940,\t-0.984753283032984710,\t\n-0.984761979642512220,\t-0.984770673790134720,\t-0.984779365475830670,\t-0.984788054699578090,\t-0.984796741461355540,\t-0.984805425761140940,\t-0.984814107598912860,\t-0.984822786974649530,\t\n-0.984831463888329210,\t-0.984840138339930230,\t-0.984848810329430950,\t-0.984857479856809600,\t-0.984866146922044550,\t-0.984874811525114140,\t-0.984883473665996710,\t-0.984892133344670630,\t\n-0.984900790561114130,\t-0.984909445315305780,\t-0.984918097607223710,\t-0.984926747436846380,\t-0.984935394804152260,\t-0.984944039709119590,\t-0.984952682151726820,\t-0.984961322131952420,\t\n-0.984969959649774630,\t-0.984978594705172020,\t-0.984987227298122820,\t-0.984995857428605740,\t-0.985004485096598770,\t-0.985013110302080830,\t-0.985021733045029930,\t-0.985030353325424770,\t\n-0.985038971143243790,\t-0.985047586498465240,\t-0.985056199391067810,\t-0.985064809821029840,\t-0.985073417788329910,\t-0.985082023292946360,\t-0.985090626334857890,\t-0.985099226914042720,\t\n-0.985107825030479560,\t-0.985116420684146730,\t-0.985125013875022940,\t-0.985133604603086630,\t-0.985142192868316280,\t-0.985150778670690450,\t-0.985159362010187610,\t-0.985167942886786440,\t\n-0.985176521300465400,\t-0.985185097251203070,\t-0.985193670738978010,\t-0.985202241763768690,\t-0.985210810325553910,\t-0.985219376424312010,\t-0.985227940060021680,\t-0.985236501232661490,\t\n-0.985245059942210010,\t-0.985253616188645930,\t-0.985262169971947820,\t-0.985270721292094250,\t-0.985279270149063910,\t-0.985287816542835370,\t-0.985296360473387310,\t-0.985304901940698310,\t\n-0.985313440944747040,\t-0.985321977485512310,\t-0.985330511562972470,\t-0.985339043177106520,\t-0.985347572327892830,\t-0.985356099015310180,\t-0.985364623239337380,\t-0.985373144999952990,\t\n-0.985381664297135810,\t-0.985390181130864300,\t-0.985398695501117470,\t-0.985407207407873910,\t-0.985415716851112290,\t-0.985424223830811300,\t-0.985432728346949840,\t-0.985441230399506600,\t\n-0.985449729988460250,\t-0.985458227113789500,\t-0.985466721775473230,\t-0.985475213973490140,\t-0.985483703707819130,\t-0.985492190978438760,\t-0.985500675785327960,\t-0.985509158128465400,\t\n-0.985517638007829990,\t-0.985526115423400410,\t-0.985534590375155670,\t-0.985543062863074360,\t-0.985551532887135480,\t-0.985560000447317730,\t-0.985568465543599890,\t-0.985576928175960990,\t\n-0.985585388344379810,\t-0.985593846048835040,\t-0.985602301289305700,\t-0.985610754065770590,\t-0.985619204378208600,\t-0.985627652226598650,\t-0.985636097610919530,\t-0.985644540531150250,\t\n-0.985652980987269500,\t-0.985661418979256410,\t-0.985669854507089660,\t-0.985678287570748380,\t-0.985686718170211250,\t-0.985695146305457400,\t-0.985703571976465630,\t-0.985711995183215060,\t\n-0.985720415925684380,\t-0.985728834203852710,\t-0.985737250017698960,\t-0.985745663367202150,\t-0.985754074252341070,\t-0.985762482673094850,\t-0.985770888629442400,\t-0.985779292121362730,\t\n-0.985787693148834850,\t-0.985796091711837800,\t-0.985804487810350460,\t-0.985812881444351860,\t-0.985821272613821130,\t-0.985829661318737170,\t-0.985838047559079000,\t-0.985846431334825860,\t\n-0.985854812645956540,\t-0.985863191492450160,\t-0.985871567874285870,\t-0.985879941791442670,\t-0.985888313243899580,\t-0.985896682231635730,\t-0.985905048754630140,\t-0.985913412812862040,\t\n-0.985921774406310240,\t-0.985930133534954070,\t-0.985938490198772670,\t-0.985946844397744940,\t-0.985955196131850120,\t-0.985963545401067230,\t-0.985971892205375620,\t-0.985980236544754200,\t\n-0.985988578419182190,\t-0.985996917828638740,\t-0.986005254773102970,\t-0.986013589252554110,\t-0.986021921266971300,\t-0.986030250816333660,\t-0.986038577900620330,\t-0.986046902519810640,\t\n-0.986055224673883620,\t-0.986063544362818620,\t-0.986071861586594770,\t-0.986080176345191180,\t-0.986088488638587220,\t-0.986096798466762010,\t-0.986105105829694790,\t-0.986113410727364800,\t\n-0.986121713159751280,\t-0.986130013126833570,\t-0.986138310628590700,\t-0.986146605665002120,\t-0.986154898236047070,\t-0.986163188341704690,\t-0.986171475981954430,\t-0.986179761156775300,\t\n-0.986188043866147000,\t-0.986196324110048430,\t-0.986204601888459150,\t-0.986212877201358310,\t-0.986221150048725240,\t-0.986229420430539410,\t-0.986237688346779940,\t-0.986245953797426300,\t\n-0.986254216782457730,\t-0.986262477301853570,\t-0.986270735355593290,\t-0.986278990943656230,\t-0.986287244066021530,\t-0.986295494722668860,\t-0.986303742913577360,\t-0.986311988638726600,\t\n-0.986320231898095810,\t-0.986328472691664460,\t-0.986336711019411890,\t-0.986344946881317690,\t-0.986353180277360960,\t-0.986361411207521300,\t-0.986369639671778150,\t-0.986377865670110880,\t\n-0.986386089202498930,\t-0.986394310268921880,\t-0.986402528869358970,\t-0.986410745003789670,\t-0.986418958672193540,\t-0.986427169874550040,\t-0.986435378610838630,\t-0.986443584881038780,\t\n-0.986451788685129950,\t-0.986459990023091590,\t-0.986468188894903400,\t-0.986476385300544600,\t-0.986484579239994890,\t-0.986492770713233710,\t-0.986500959720240660,\t-0.986509146260995170,\t\n-0.986517330335476840,\t-0.986525511943665110,\t-0.986533691085539680,\t-0.986541867761079990,\t-0.986550041970265750,\t-0.986558213713076280,\t-0.986566382989491290,\t-0.986574549799490330,\t\n-0.986582714143052990,\t-0.986590876020158940,\t-0.986599035430787640,\t-0.986607192374918780,\t-0.986615346852531830,\t-0.986623498863606670,\t-0.986631648408122670,\t-0.986639795486059620,\t\n-0.986647940097396980,\t-0.986656082242114540,\t-0.986664221920191880,\t-0.986672359131608670,\t-0.986680493876344600,\t-0.986688626154379360,\t-0.986696755965692400,\t-0.986704883310263630,\t\n-0.986713008188072620,\t-0.986721130599099160,\t-0.986729250543322830,\t-0.986737368020723320,\t-0.986745483031280510,\t-0.986753595574973890,\t-0.986761705651783340,\t-0.986769813261688440,\t\n-0.986777918404669110,\t-0.986786021080704900,\t-0.986794121289775730,\t-0.986802219031861160,\t-0.986810314306941220,\t-0.986818407114995240,\t-0.986826497456003480,\t-0.986834585329945280,\t\n-0.986842670736800760,\t-0.986850753676549510,\t-0.986858834149171420,\t-0.986866912154646170,\t-0.986874987692953680,\t-0.986883060764073620,\t-0.986891131367986010,\t-0.986899199504670640,\t\n-0.986907265174107210,\t-0.986915328376275600,\t-0.986923389111155620,\t-0.986931447378727290,\t-0.986939503178970170,\t-0.986947556511864500,\t-0.986955607377389740,\t-0.986963655775526140,\t\n-0.986971701706253260,\t-0.986979745169551230,\t-0.986987786165399730,\t-0.986995824693778890,\t-0.987003860754668390,\t-0.987011894348048260,\t-0.987019925473898390,\t-0.987027954132198790,\t\n-0.987035980322929160,\t-0.987044004046069730,\t-0.987052025301600190,\t-0.987060044089500650,\t-0.987068060409750920,\t-0.987076074262331130,\t-0.987084085647221050,\t-0.987092094564400830,\t\n-0.987100101013850370,\t-0.987108104995549680,\t-0.987116106509478670,\t-0.987124105555617360,\t-0.987132102133945870,\t-0.987140096244444100,\t-0.987148087887092180,\t-0.987156077061869920,\t\n-0.987164063768757540,\t-0.987172048007734950,\t-0.987180029778782280,\t-0.987188009081879430,\t-0.987195985917006640,\t-0.987203960284143920,\t-0.987211932183271300,\t-0.987219901614368790,\t\n-0.987227868577416510,\t-0.987235833072394600,\t-0.987243795099283170,\t-0.987251754658062140,\t-0.987259711748711740,\t-0.987267666371212100,\t-0.987275618525543350,\t-0.987283568211685500,\t\n-0.987291515429618680,\t-0.987299460179323130,\t-0.987307402460778860,\t-0.987315342273966220,\t-0.987323279618865120,\t-0.987331214495455800,\t-0.987339146903718490,\t-0.987347076843633320,\t\n-0.987355004315180420,\t-0.987362929318340130,\t-0.987370851853092370,\t-0.987378771919417590,\t-0.987386689517295800,\t-0.987394604646707360,\t-0.987402517307632400,\t-0.987410427500051040,\t\n-0.987418335223943730,\t-0.987426240479290510,\t-0.987434143266071710,\t-0.987442043584267570,\t-0.987449941433858340,\t-0.987457836814824130,\t-0.987465729727145520,\t-0.987473620170802420,\t\n-0.987481508145775400,\t-0.987489393652044580,\t-0.987497276689590200,\t-0.987505157258392720,\t-0.987513035358432270,\t-0.987520910989689300,\t-0.987528784152143960,\t-0.987536654845776800,\t\n-0.987544523070567840,\t-0.987552388826497650,\t-0.987560252113546590,\t-0.987568112931694770,\t-0.987575971280922670,\t-0.987583827161210740,\t-0.987591680572539100,\t-0.987599531514888330,\t\n-0.987607379988238780,\t-0.987615225992570790,\t-0.987623069527864610,\t-0.987630910594100910,\t-0.987638749191259820,\t-0.987646585319321920,\t-0.987654418978267450,\t-0.987662250168077070,\t\n-0.987670078888730930,\t-0.987677905140209700,\t-0.987685728922493730,\t-0.987693550235563380,\t-0.987701369079399210,\t-0.987709185453981560,\t-0.987716999359290910,\t-0.987724810795307830,\t\n-0.987732619762012650,\t-0.987740426259385960,\t-0.987748230287408320,\t-0.987756031846059980,\t-0.987763830935321610,\t-0.987771627555173560,\t-0.987779421705596520,\t-0.987787213386570940,\t\n-0.987795002598077290,\t-0.987802789340096240,\t-0.987810573612608160,\t-0.987818355415593600,\t-0.987826134749033140,\t-0.987833911612907340,\t-0.987841686007196800,\t-0.987849457931882060,\t\n-0.987857227386943700,\t-0.987864994372362190,\t-0.987872758888118210,\t-0.987880520934192430,\t-0.987888280510565210,\t-0.987896037617217450,\t-0.987903792254129390,\t-0.987911544421282040,\t\n-0.987919294118655760,\t-0.987927041346231220,\t-0.987934786103989100,\t-0.987942528391909990,\t-0.987950268209974560,\t-0.987958005558163490,\t-0.987965740436457350,\t-0.987973472844836940,\t\n-0.987981202783282830,\t-0.987988930251775700,\t-0.987996655250296230,\t-0.988004377778825100,\t-0.988012097837343120,\t-0.988019815425830840,\t-0.988027530544269060,\t-0.988035243192638360,\t\n-0.988042953370919630,\t-0.988050661079093450,\t-0.988058366317140720,\t-0.988066069085042020,\t-0.988073769382778130,\t-0.988081467210329740,\t-0.988089162567677870,\t-0.988096855454802970,\t\n-0.988104545871685950,\t-0.988112233818307590,\t-0.988119919294648600,\t-0.988127602300689860,\t-0.988135282836412050,\t-0.988142960901796100,\t-0.988150636496822780,\t-0.988158309621472770,\t\n-0.988165980275727110,\t-0.988173648459566350,\t-0.988181314172971610,\t-0.988188977415923490,\t-0.988196638188402980,\t-0.988204296490390880,\t-0.988211952321867980,\t-0.988219605682815190,\t\n-0.988227256573213420,\t-0.988234904993043560,\t-0.988242550942286300,\t-0.988250194420922770,\t-0.988257835428933750,\t-0.988265473966300160,\t-0.988273110033002890,\t-0.988280743629022850,\t\n-0.988288374754340840,\t-0.988296003408937970,\t-0.988303629592795050,\t-0.988311253305893200,\t-0.988318874548213100,\t-0.988326493319735770,\t-0.988334109620442320,\t-0.988341723450313570,\t\n-0.988349334809330400,\t-0.988356943697473960,\t-0.988364550114725240,\t-0.988372154061065040,\t-0.988379755536474500,\t-0.988387354540934630,\t-0.988394951074426320,\t-0.988402545136930600,\t\n-0.988410136728428590,\t-0.988417725848901200,\t-0.988425312498329430,\t-0.988432896676694430,\t-0.988440478383977190,\t-0.988448057620158750,\t-0.988455634385220220,\t-0.988463208679142610,\t\n-0.988470780501906840,\t-0.988478349853494250,\t-0.988485916733885750,\t-0.988493481143062460,\t-0.988501043081005500,\t-0.988508602547695900,\t-0.988516159543114780,\t-0.988523714067243260,\t\n-0.988531266120062480,\t-0.988538815701553550,\t-0.988546362811697500,\t-0.988553907450475670,\t-0.988561449617868960,\t-0.988568989313858610,\t-0.988576526538425870,\t-0.988584061291551850,\t\n-0.988591593573217580,\t-0.988599123383404390,\t-0.988606650722093310,\t-0.988614175589265680,\t-0.988621697984902630,\t-0.988629217908985280,\t-0.988636735361494880,\t-0.988644250342412660,\t\n-0.988651762851719850,\t-0.988659272889397590,\t-0.988666780455427110,\t-0.988674285549789760,\t-0.988681788172466660,\t-0.988689288323439050,\t-0.988696786002688290,\t-0.988704281210195600,\t\n-0.988711773945942120,\t-0.988719264209909190,\t-0.988726752002078160,\t-0.988734237322430260,\t-0.988741720170946750,\t-0.988749200547608950,\t-0.988756678452398120,\t-0.988764153885295590,\t\n-0.988771626846282730,\t-0.988779097335340750,\t-0.988786565352451020,\t-0.988794030897594880,\t-0.988801493970753680,\t-0.988808954571908760,\t-0.988816412701041480,\t-0.988823868358133070,\t\n-0.988831321543165110,\t-0.988838772256118710,\t-0.988846220496975460,\t-0.988853666265716690,\t-0.988861109562323760,\t-0.988868550386778010,\t-0.988875988739060910,\t-0.988883424619153790,\t\n-0.988890858027038130,\t-0.988898288962695380,\t-0.988905717426106780,\t-0.988913143417254000,\t-0.988920566936118410,\t-0.988927987982681220,\t-0.988935406556924250,\t-0.988942822658828600,\t\n-0.988950236288375970,\t-0.988957647445547820,\t-0.988965056130325480,\t-0.988972462342690430,\t-0.988979866082624340,\t-0.988987267350108560,\t-0.988994666145124550,\t-0.989002062467653990,\t\n-0.989009456317678230,\t-0.989016847695178720,\t-0.989024236600137270,\t-0.989031623032535110,\t-0.989039006992353920,\t-0.989046388479575160,\t-0.989053767494180500,\t-0.989061144036151420,\t\n-0.989068518105469470,\t-0.989075889702116240,\t-0.989083258826073290,\t-0.989090625477322180,\t-0.989097989655844390,\t-0.989105351361621810,\t-0.989112710594635790,\t-0.989120067354867900,\t\n-0.989127421642299940,\t-0.989134773456913470,\t-0.989142122798689960,\t-0.989149469667611190,\t-0.989156814063658740,\t-0.989164155986814290,\t-0.989171495437059400,\t-0.989178832414375760,\t\n-0.989186166918745060,\t-0.989193498950148960,\t-0.989200828508569160,\t-0.989208155593987230,\t-0.989215480206384950,\t-0.989222802345743890,\t-0.989230122012045850,\t-0.989237439205272520,\t\n-0.989244753925405670,\t-0.989252066172426780,\t-0.989259375946317850,\t-0.989266683247060460,\t-0.989273988074636400,\t-0.989281290429027240,\t-0.989288590310214990,\t-0.989295887718181110,\t\n-0.989303182652907620,\t-0.989310475114376200,\t-0.989317765102568520,\t-0.989325052617466500,\t-0.989332337659051820,\t-0.989339620227306260,\t-0.989346900322211730,\t-0.989354177943749800,\t\n-0.989361453091902600,\t-0.989368725766651690,\t-0.989375995967978980,\t-0.989383263695866270,\t-0.989390528950295330,\t-0.989397791731248200,\t-0.989405052038706430,\t-0.989412309872652160,\t\n-0.989419565233067070,\t-0.989426818119933160,\t-0.989434068533232010,\t-0.989441316472945860,\t-0.989448561939056390,\t-0.989455804931545500,\t-0.989463045450395100,\t-0.989470283495587080,\t\n-0.989477519067103240,\t-0.989484752164925820,\t-0.989491982789036380,\t-0.989499210939416950,\t-0.989506436616049640,\t-0.989513659818916150,\t-0.989520880547998470,\t-0.989528098803278630,\t\n-0.989535314584738530,\t-0.989542527892360190,\t-0.989549738726125510,\t-0.989556947086016490,\t-0.989564152972015050,\t-0.989571356384103320,\t-0.989578557322263070,\t-0.989585755786476560,\t\n-0.989592951776725570,\t-0.989600145292992230,\t-0.989607336335258550,\t-0.989614524903506540,\t-0.989621710997718230,\t-0.989628894617875510,\t-0.989636075763960730,\t-0.989643254435955580,\t\n-0.989650430633842500,\t-0.989657604357603190,\t-0.989664775607219880,\t-0.989671944382674700,\t-0.989679110683949650,\t-0.989686274511026750,\t-0.989693435863888250,\t-0.989700594742516150,\t\n-0.989707751146892580,\t-0.989714905076999550,\t-0.989722056532819310,\t-0.989729205514333970,\t-0.989736352021525550,\t-0.989743496054376280,\t-0.989750637612868190,\t-0.989757776696983620,\t\n-0.989764913306704460,\t-0.989772047442013190,\t-0.989779179102891700,\t-0.989786308289322350,\t-0.989793435001287140,\t-0.989800559238768420,\t-0.989807681001748210,\t-0.989814800290208850,\t\n-0.989821917104132480,\t-0.989829031443501320,\t-0.989836143308297610,\t-0.989843252698503480,\t-0.989850359614101280,\t-0.989857464055073240,\t-0.989864566021401380,\t-0.989871665513068270,\t\n-0.989878762530055910,\t-0.989885857072346550,\t-0.989892949139922760,\t-0.989900038732766440,\t-0.989907125850860050,\t-0.989914210494185820,\t-0.989921292662726100,\t-0.989928372356463250,\t\n-0.989935449575379380,\t-0.989942524319456840,\t-0.989949596588677980,\t-0.989956666383025260,\t-0.989963733702480810,\t-0.989970798547026960,\t-0.989977860916646190,\t-0.989984920811320720,\t\n-0.989991978231033020,\t-0.989999033175765320,\t-0.990006085645499970,\t-0.990013135640219530,\t-0.990020183159906140,\t-0.990027228204542480,\t-0.990034270774110550,\t-0.990041310868593040,\t\n-0.990048348487972190,\t-0.990055383632230560,\t-0.990062416301350390,\t-0.990069446495314250,\t-0.990076474214104390,\t-0.990083499457703460,\t-0.990090522226093730,\t-0.990097542519257750,\t\n-0.990104560337177860,\t-0.990111575679836540,\t-0.990118588547216350,\t-0.990125598939299630,\t-0.990132606856068960,\t-0.990139612297506690,\t-0.990146615263595490,\t-0.990153615754317710,\t\n-0.990160613769655920,\t-0.990167609309592470,\t-0.990174602374110150,\t-0.990181592963191300,\t-0.990188581076818400,\t-0.990195566714974110,\t-0.990202549877640890,\t-0.990209530564801210,\t\n-0.990216508776437850,\t-0.990223484512533170,\t-0.990230457773069730,\t-0.990237428558030210,\t-0.990244396867397070,\t-0.990251362701152880,\t-0.990258326059280440,\t-0.990265286941762080,\t\n-0.990272245348580490,\t-0.990279201279718360,\t-0.990286154735158130,\t-0.990293105714882600,\t-0.990300054218874240,\t-0.990307000247115820,\t-0.990313943799589810,\t-0.990320884876279120,\t\n-0.990327823477165970,\t-0.990334759602233490,\t-0.990341693251463930,\t-0.990348624424840280,\t-0.990355553122344910,\t-0.990362479343960820,\t-0.990369403089670470,\t-0.990376324359456550,\t\n-0.990383243153301950,\t-0.990390159471189140,\t-0.990397073313101010,\t-0.990403984679020130,\t-0.990410893568929310,\t-0.990417799982811210,\t-0.990424703920648630,\t-0.990431605382424360,\t\n-0.990438504368120980,\t-0.990445400877721370,\t-0.990452294911208340,\t-0.990459186468564460,\t-0.990466075549772730,\t-0.990472962154815730,\t-0.990479846283676360,\t-0.990486727936337300,\t\n-0.990493607112781560,\t-0.990500483812991720,\t-0.990507358036950670,\t-0.990514229784641210,\t-0.990521099056046130,\t-0.990527965851148440,\t-0.990534830169930710,\t-0.990541692012375960,\t\n-0.990548551378466980,\t-0.990555408268186670,\t-0.990562262681517700,\t-0.990569114618443210,\t-0.990575964078945880,\t-0.990582811063008720,\t-0.990589655570614400,\t-0.990596497601746060,\t\n-0.990603337156386380,\t-0.990610174234518360,\t-0.990617008836124910,\t-0.990623840961189050,\t-0.990630670609693450,\t-0.990637497781621250,\t-0.990644322476955330,\t-0.990651144695678500,\t\n-0.990657964437773870,\t-0.990664781703224360,\t-0.990671596492012860,\t-0.990678408804122390,\t-0.990685218639535960,\t-0.990692025998236360,\t-0.990698830880206720,\t-0.990705633285430040,\t\n-0.990712433213889240,\t-0.990719230665567440,\t-0.990726025640447430,\t-0.990732818138512440,\t-0.990739608159745490,\t-0.990746395704129370,\t-0.990753180771647310,\t-0.990759963362282340,\t\n-0.990766743476017450,\t-0.990773521112835680,\t-0.990780296272720020,\t-0.990787068955653720,\t-0.990793839161619780,\t-0.990800606890601230,\t-0.990807372142581080,\t-0.990814134917542550,\t\n-0.990820895215468680,\t-0.990827653036342570,\t-0.990834408380147360,\t-0.990841161246866160,\t-0.990847911636482000,\t-0.990854659548978000,\t-0.990861404984337390,\t-0.990868147942543410,\t\n-0.990874888423578850,\t-0.990881626427427160,\t-0.990888361954071480,\t-0.990895095003494820,\t-0.990901825575680410,\t-0.990908553670611480,\t-0.990915279288271170,\t-0.990922002428642590,\t\n-0.990928723091709100,\t-0.990935441277453700,\t-0.990942156985859750,\t-0.990948870216910360,\t-0.990955580970588890,\t-0.990962289246878350,\t-0.990968995045762190,\t-0.990975698367223550,\t\n-0.990982399211245650,\t-0.990989097577811620,\t-0.990995793466905030,\t-0.991002486878508890,\t-0.991009177812606450,\t-0.991015866269181140,\t-0.991022552248216230,\t-0.991029235749694810,\t\n-0.991035916773600370,\t-0.991042595319916120,\t-0.991049271388625420,\t-0.991055944979711610,\t-0.991062616093157820,\t-0.991069284728947510,\t-0.991075950887064020,\t-0.991082614567490580,\t\n-0.991089275770210660,\t-0.991095934495207500,\t-0.991102590742464540,\t-0.991109244511965140,\t-0.991115895803692640,\t-0.991122544617630390,\t-0.991129190953761730,\t-0.991135834812070130,\t\n-0.991142476192538810,\t-0.991149115095151470,\t-0.991155751519891330,\t-0.991162385466741740,\t-0.991169016935686260,\t-0.991175645926708150,\t-0.991182272439790960,\t-0.991188896474918150,\t\n-0.991195518032073060,\t-0.991202137111239170,\t-0.991208753712399910,\t-0.991215367835538760,\t-0.991221979480639280,\t-0.991228588647684710,\t-0.991235195336658830,\t-0.991241799547544880,\t\n-0.991248401280326430,\t-0.991255000534986940,\t-0.991261597311509980,\t-0.991268191609879110,\t-0.991274783430077690,\t-0.991281372772089280,\t-0.991287959635897440,\t-0.991294544021485760,\t\n-0.991301125928837680,\t-0.991307705357936770,\t-0.991314282308766730,\t-0.991320856781310880,\t-0.991327428775552800,\t-0.991333998291476280,\t-0.991340565329064670,\t-0.991347129888301760,\t\n-0.991353691969171000,\t-0.991360251571655970,\t-0.991366808695740230,\t-0.991373363341407580,\t-0.991379915508641570,\t-0.991386465197425680,\t-0.991393012407743580,\t-0.991399557139579060,\t\n-0.991406099392915570,\t-0.991412639167736920,\t-0.991419176464026550,\t-0.991425711281768370,\t-0.991432243620945840,\t-0.991438773481542750,\t-0.991445300863542660,\t-0.991451825766929360,\t\n-0.991458348191686540,\t-0.991464868137797770,\t-0.991471385605246840,\t-0.991477900594017410,\t-0.991484413104093300,\t-0.991490923135458170,\t-0.991497430688095700,\t-0.991503935761989590,\t\n-0.991510438357123820,\t-0.991516938473481770,\t-0.991523436111047430,\t-0.991529931269804490,\t-0.991536423949736840,\t-0.991542914150827960,\t-0.991549401873061950,\t-0.991555887116422290,\t\n-0.991562369880892970,\t-0.991568850166457790,\t-0.991575327973100440,\t-0.991581803300804810,\t-0.991588276149554580,\t-0.991594746519333660,\t-0.991601214410125940,\t-0.991607679821915220,\t\n-0.991614142754685180,\t-0.991620603208419830,\t-0.991627061183103060,\t-0.991633516678718570,\t-0.991639969695250260,\t-0.991646420232682010,\t-0.991652868290997750,\t-0.991659313870181360,\t\n-0.991665756970216640,\t-0.991672197591087600,\t-0.991678635732777920,\t-0.991685071395271730,\t-0.991691504578552930,\t-0.991697935282605300,\t-0.991704363507412870,\t-0.991710789252959410,\t\n-0.991717212519229170,\t-0.991723633306205720,\t-0.991730051613873290,\t-0.991736467442215660,\t-0.991742880791216970,\t-0.991749291660861010,\t-0.991755700051131780,\t-0.991762105962013420,\t\n-0.991768509393489710,\t-0.991774910345544770,\t-0.991781308818162510,\t-0.991787704811326940,\t-0.991794098325022190,\t-0.991800489359232150,\t-0.991806877913940950,\t-0.991813263989132500,\t\n-0.991819647584790910,\t-0.991826028700900200,\t-0.991832407337444380,\t-0.991838783494407570,\t-0.991845157171773790,\t-0.991851528369527170,\t-0.991857897087651710,\t-0.991864263326131420,\t\n-0.991870627084950550,\t-0.991876988364093100,\t-0.991883347163543210,\t-0.991889703483284980,\t-0.991896057323302440,\t-0.991902408683579710,\t-0.991908757564101020,\t-0.991915103964850390,\t\n-0.991921447885812050,\t-0.991927789326970120,\t-0.991934128288308630,\t-0.991940464769811900,\t-0.991946798771463860,\t-0.991953130293248940,\t-0.991959459335151170,\t-0.991965785897154780,\t\n-0.991972109979244010,\t-0.991978431581402860,\t-0.991984750703615580,\t-0.991991067345866510,\t-0.991997381508139760,\t-0.992003693190419590,\t-0.992010002392690100,\t-0.992016309114935660,\t\n-0.992022613357140370,\t-0.992028915119288700,\t-0.992035214401364660,\t-0.992041511203352490,\t-0.992047805525236640,\t-0.992054097367001340,\t-0.992060386728630730,\t-0.992066673610109140,\t\n-0.992072958011420810,\t-0.992079239932550210,\t-0.992085519373481440,\t-0.992091796334198860,\t-0.992098070814686820,\t-0.992104342814929650,\t-0.992110612334911490,\t-0.992116879374616900,\t\n-0.992123143934030120,\t-0.992129406013135480,\t-0.992135665611917240,\t-0.992141922730359950,\t-0.992148177368447740,\t-0.992154429526165170,\t-0.992160679203496490,\t-0.992166926400426140,\t\n-0.992173171116938480,\t-0.992179413353017850,\t-0.992185653108648700,\t-0.992191890383815390,\t-0.992198125178502370,\t-0.992204357492694090,\t-0.992210587326374900,\t-0.992216814679529270,\t\n-0.992223039552141530,\t-0.992229261944196250,\t-0.992235481855677780,\t-0.992241699286570580,\t-0.992247914236859210,\t-0.992254126706528020,\t-0.992260336695561460,\t-0.992266544203944110,\t\n-0.992272749231660420,\t-0.992278951778694850,\t-0.992285151845031850,\t-0.992291349430656000,\t-0.992297544535551750,\t-0.992303737159703660,\t-0.992309927303096310,\t-0.992316114965714040,\t\n-0.992322300147541530,\t-0.992328482848563230,\t-0.992334663068763720,\t-0.992340840808127570,\t-0.992347016066639330,\t-0.992353188844283580,\t-0.992359359141044890,\t-0.992365526956907720,\t\n-0.992371692291856730,\t-0.992377855145876510,\t-0.992384015518951720,\t-0.992390173411066830,\t-0.992396328822206520,\t-0.992402481752355350,\t-0.992408632201498000,\t-0.992414780169619150,\t\n-0.992420925656703260,\t-0.992427068662735110,\t-0.992433209187699280,\t-0.992439347231580450,\t-0.992445482794363180,\t-0.992451615876032260,\t-0.992457746476572260,\t-0.992463874595967850,\t\n-0.992470000234203840,\t-0.992476123391264790,\t-0.992482244067135480,\t-0.992488362261800480,\t-0.992494477975244700,\t-0.992500591207452600,\t-0.992506701958409070,\t-0.992512810228098790,\t\n-0.992518916016506550,\t-0.992525019323616920,\t-0.992531120149414800,\t-0.992537218493884770,\t-0.992543314357011820,\t-0.992549407738780530,\t-0.992555498639175800,\t-0.992561587058182200,\t\n-0.992567672995784740,\t-0.992573756451967990,\t-0.992579837426716960,\t-0.992585915920016220,\t-0.992591991931850770,\t-0.992598065462205410,\t-0.992604136511064720,\t-0.992610205078413800,\t\n-0.992616271164237340,\t-0.992622334768520240,\t-0.992628395891247180,\t-0.992634454532403290,\t-0.992640510691973120,\t-0.992646564369941810,\t-0.992652615566294030,\t-0.992658664281014680,\t\n-0.992664710514088670,\t-0.992670754265501000,\t-0.992676795535236360,\t-0.992682834323279640,\t-0.992688870629615970,\t-0.992694904454230030,\t-0.992700935797106940,\t-0.992706964658231380,\t\n-0.992712991037588590,\t-0.992719014935163120,\t-0.992725036350940230,\t-0.992731055284904680,\t-0.992737071737041620,\t-0.992743085707335720,\t-0.992749097195772200,\t-0.992755106202335870,\t\n-0.992761112727011840,\t-0.992767116769785020,\t-0.992773118330640410,\t-0.992779117409563040,\t-0.992785114006537790,\t-0.992791108121549800,\t-0.992797099754584080,\t-0.992803088905625520,\t\n-0.992809075574659360,\t-0.992815059761670390,\t-0.992821041466643850,\t-0.992827020689564630,\t-0.992832997430417970,\t-0.992838971689188780,\t-0.992844943465862050,\t-0.992850912760423030,\t\n-0.992856879572856730,\t-0.992862843903148270,\t-0.992868805751282670,\t-0.992874765117245150,\t-0.992880722001020620,\t-0.992886676402594310,\t-0.992892628321951240,\t-0.992898577759076640,\t\n-0.992904524713955630,\t-0.992910469186573330,\t-0.992916411176914760,\t-0.992922350684965260,\t-0.992928287710709840,\t-0.992934222254133750,\t-0.992940154315221980,\t-0.992946083893960000,\t\n-0.992952010990332700,\t-0.992957935604325330,\t-0.992963857735923220,\t-0.992969777385111390,\t-0.992975694551875180,\t-0.992981609236199710,\t-0.992987521438070230,\t-0.992993431157471960,\t\n-0.992999338394390030,\t-0.993005243148809780,\t-0.993011145420716450,\t-0.993017045210095260,\t-0.993022942516931460,\t-0.993028837341210280,\t-0.993034729682917060,\t-0.993040619542037040,\t\n-0.993046506918555340,\t-0.993052391812457520,\t-0.993058274223728610,\t-0.993064154152354050,\t-0.993070031598319190,\t-0.993075906561609160,\t-0.993081779042209290,\t-0.993087649040105160,\t\n-0.993093516555281770,\t-0.993099381587724590,\t-0.993105244137418960,\t-0.993111104204350340,\t-0.993116961788503840,\t-0.993122816889864920,\t-0.993128669508419050,\t-0.993134519644151450,\t\n-0.993140367297047580,\t-0.993146212467092780,\t-0.993152055154272410,\t-0.993157895358572020,\t-0.993163733079976740,\t-0.993169568318472250,\t-0.993175401074043780,\t-0.993181231346676800,\t\n-0.993187059136356740,\t-0.993192884443069080,\t-0.993198707266799150,\t-0.993204527607532530,\t-0.993210345465254550,\t-0.993216160839950680,\t-0.993221973731606480,\t-0.993227784140207290,\t\n-0.993233592065738580,\t-0.993239397508186020,\t-0.993245200467534840,\t-0.993251000943770720,\t-0.993256798936879130,\t-0.993262594446845500,\t-0.993268387473655420,\t-0.993274178017294340,\t\n-0.993279966077747820,\t-0.993285751655001440,\t-0.993291534749040640,\t-0.993297315359851000,\t-0.993303093487418080,\t-0.993308869131727330,\t-0.993314642292764560,\t-0.993320412970515100,\t\n-0.993326181164964630,\t-0.993331946876098710,\t-0.993337710103902930,\t-0.993343470848362830,\t-0.993349229109464100,\t-0.993354984887192320,\t-0.993360738181533030,\t-0.993366488992471930,\t\n-0.993372237319994580,\t-0.993377983164086650,\t-0.993383726524733720,\t-0.993389467401921470,\t-0.993395205795635560,\t-0.993400941705861680,\t-0.993406675132585510,\t-0.993412406075792510,\t\n-0.993418134535468570,\t-0.993423860511599250,\t-0.993429584004170360,\t-0.993435305013167460,\t-0.993441023538576330,\t-0.993446739580382650,\t-0.993452453138572000,\t-0.993458164213130380,\t\n-0.993463872804043250,\t-0.993469578911296500,\t-0.993475282534875710,\t-0.993480983674766780,\t-0.993486682330955380,\t-0.993492378503427310,\t-0.993498072192168240,\t-0.993503763397163950,\t\n-0.993509452118400360,\t-0.993515138355863140,\t-0.993520822109537960,\t-0.993526503379410840,\t-0.993532182165467350,\t-0.993537858467693490,\t-0.993543532286074950,\t-0.993549203620597620,\t\n-0.993554872471247300,\t-0.993560538838009770,\t-0.993566202720870820,\t-0.993571864119816460,\t-0.993577523034832380,\t-0.993583179465904460,\t-0.993588833413018730,\t-0.993594484876160760,\t\n-0.993600133855316650,\t-0.993605780350472310,\t-0.993611424361613320,\t-0.993617065888725890,\t-0.993622704931795830,\t-0.993628341490808920,\t-0.993633975565751170,\t-0.993639607156608480,\t\n-0.993645236263366760,\t-0.993650862886012010,\t-0.993656487024530130,\t-0.993662108678906920,\t-0.993667727849128600,\t-0.993673344535180750,\t-0.993678958737049700,\t-0.993684570454721140,\t\n-0.993690179688181300,\t-0.993695786437415850,\t-0.993701390702411040,\t-0.993706992483152750,\t-0.993712591779627010,\t-0.993718188591819710,\t-0.993723782919716970,\t-0.993729374763304700,\t\n-0.993734964122569120,\t-0.993740550997496030,\t-0.993746135388071660,\t-0.993751717294281800,\t-0.993757296716112790,\t-0.993762873653550540,\t-0.993768448106581050,\t-0.993774020075190450,\t\n-0.993779589559364740,\t-0.993785156559090170,\t-0.993790721074352620,\t-0.993796283105138340,\t-0.993801842651433230,\t-0.993807399713223630,\t-0.993812954290495540,\t-0.993818506383234990,\t\n-0.993824055991428200,\t-0.993829603115061300,\t-0.993835147754120410,\t-0.993840689908591650,\t-0.993846229578461030,\t-0.993851766763715010,\t-0.993857301464339480,\t-0.993862833680320690,\t\n-0.993868363411644860,\t-0.993873890658298120,\t-0.993879415420266590,\t-0.993884937697536610,\t-0.993890457490094300,\t-0.993895974797925800,\t-0.993901489621017320,\t-0.993907001959355110,\t\n-0.993912511812925500,\t-0.993918019181714520,\t-0.993923524065708500,\t-0.993929026464893670,\t-0.993934526379256390,\t-0.993940023808782660,\t-0.993945518753458930,\t-0.993951011213271340,\t\n-0.993956501188206330,\t-0.993961988678249920,\t-0.993967473683388670,\t-0.993972956203608700,\t-0.993978436238896370,\t-0.993983913789237890,\t-0.993989388854619630,\t-0.993994861435027910,\t\n-0.994000331530449090,\t-0.994005799140869390,\t-0.994011264266275170,\t-0.994016726906652880,\t-0.994022187061988640,\t-0.994027644732269010,\t-0.994033099917480230,\t-0.994038552617608760,\t\n-0.994044002832640940,\t-0.994049450562563000,\t-0.994054895807361500,\t-0.994060338567022810,\t-0.994065778841533130,\t-0.994071216630879160,\t-0.994076651935047020,\t-0.994082084754023380,\t\n-0.994087515087794360,\t-0.994092942936346760,\t-0.994098368299666690,\t-0.994103791177740610,\t-0.994109211570555210,\t-0.994114629478096700,\t-0.994120044900351660,\t-0.994125457837306440,\t\n-0.994130868288947590,\t-0.994136276255261690,\t-0.994141681736234960,\t-0.994147084731854090,\t-0.994152485242105530,\t-0.994157883266975630,\t-0.994163278806451170,\t-0.994168671860518380,\t\n-0.994174062429164060,\t-0.994179450512374440,\t-0.994184836110136310,\t-0.994190219222436000,\t-0.994195599849260200,\t-0.994200977990595370,\t-0.994206353646428180,\t-0.994211726816745080,\t\n-0.994217097501532530,\t-0.994222465700777440,\t-0.994227831414466020,\t-0.994233194642585080,\t-0.994238555385121180,\t-0.994243913642060880,\t-0.994249269413390760,\t-0.994254622699097480,\t\n-0.994259973499167620,\t-0.994265321813587840,\t-0.994270667642344840,\t-0.994276010985425060,\t-0.994281351842815300,\t-0.994286690214502220,\t-0.994292026100472290,\t-0.994297359500712410,\t\n-0.994302690415209020,\t-0.994308018843949040,\t-0.994313344786918910,\t-0.994318668244105420,\t-0.994323989215495360,\t-0.994329307701075190,\t-0.994334623700831810,\t-0.994339937214751890,\t\n-0.994345248242822110,\t-0.994350556785029260,\t-0.994355862841360020,\t-0.994361166411801060,\t-0.994366467496339170,\t-0.994371766094961140,\t-0.994377062207653650,\t-0.994382355834403600,\t\n-0.994387646975197660,\t-0.994392935630022510,\t-0.994398221798865060,\t-0.994403505481712080,\t-0.994408786678550370,\t-0.994414065389366610,\t-0.994419341614147690,\t-0.994424615352880510,\t\n-0.994429886605551760,\t-0.994435155372148220,\t-0.994440421652656780,\t-0.994445685447064350,\t-0.994450946755357720,\t-0.994456205577523790,\t-0.994461461913549230,\t-0.994466715763421050,\t\n-0.994471967127126040,\t-0.994477216004651220,\t-0.994482462395983260,\t-0.994487706301109160,\t-0.994492947720015840,\t-0.994498186652690070,\t-0.994503423099118880,\t-0.994508657059289150,\t\n-0.994513888533187780,\t-0.994519117520801690,\t-0.994524344022117760,\t-0.994529568037123000,\t-0.994534789565804320,\t-0.994540008608148730,\t-0.994545225164143010,\t-0.994550439233774290,\t\n-0.994555650817029460,\t-0.994560859913895530,\t-0.994566066524359420,\t-0.994571270648408110,\t-0.994576472286028750,\t-0.994581671437208100,\t-0.994586868101933310,\t-0.994592062280191260,\t\n-0.994597253971969190,\t-0.994602443177253880,\t-0.994607629896032570,\t-0.994612814128292060,\t-0.994617995874019560,\t-0.994623175133202090,\t-0.994628351905826660,\t-0.994633526191880390,\t\n-0.994638697991350300,\t-0.994643867304223490,\t-0.994649034130487000,\t-0.994654198470127810,\t-0.994659360323133290,\t-0.994664519689490320,\t-0.994669676569185920,\t-0.994674830962207550,\t\n-0.994679982868541980,\t-0.994685132288176450,\t-0.994690279221098090,\t-0.994695423667294020,\t-0.994700565626751350,\t-0.994705705099457440,\t-0.994710842085399060,\t-0.994715976584563680,\t\n-0.994721108596938410,\t-0.994726238122510260,\t-0.994731365161266590,\t-0.994736489713194500,\t-0.994741611778281240,\t-0.994746731356513810,\t-0.994751848447879670,\t-0.994756963052365830,\t\n-0.994762075169959630,\t-0.994767184800648190,\t-0.994772291944418850,\t-0.994777396601258750,\t-0.994782498771155210,\t-0.994787598454095370,\t-0.994792695650066560,\t-0.994797790359055910,\t\n-0.994802882581050980,\t-0.994807972316038680,\t-0.994813059564006560,\t-0.994818144324941640,\t-0.994823226598831490,\t-0.994828306385663220,\t-0.994833383685424290,\t-0.994838458498101820,\t\n-0.994843530823683150,\t-0.994848600662155750,\t-0.994853668013506720,\t-0.994858732877723640,\t-0.994863795254793740,\t-0.994868855144704240,\t-0.994873912547442730,\t-0.994878967462996310,\t\n-0.994884019891352560,\t-0.994889069832498700,\t-0.994894117286422300,\t-0.994899162253110480,\t-0.994904204732550810,\t-0.994909244724730520,\t-0.994914282229637290,\t-0.994919317247258240,\t\n-0.994924349777580930,\t-0.994929379820592710,\t-0.994934407376281140,\t-0.994939432444633450,\t-0.994944455025637220,\t-0.994949475119279780,\t-0.994954492725548810,\t-0.994959507844431430,\t\n-0.994964520475915440,\t-0.994969530619988050,\t-0.994974538276636840,\t-0.994979543445849380,\t-0.994984546127613000,\t-0.994989546321915160,\t-0.994994544028743540,\t-0.994999539248085600,\t\n-0.995004531979928770,\t-0.995009522224260650,\t-0.995014509981068660,\t-0.995019495250340390,\t-0.995024478032063510,\t-0.995029458326225250,\t-0.995034436132813500,\t-0.995039411451815630,\t\n-0.995044384283219170,\t-0.995049354627011720,\t-0.995054322483180930,\t-0.995059287851714380,\t-0.995064250732599630,\t-0.995069211125824140,\t-0.995074169031375690,\t-0.995079124449241850,\t\n-0.995084077379410180,\t-0.995089027821868250,\t-0.995093975776603860,\t-0.995098921243604440,\t-0.995103864222857680,\t-0.995108804714351370,\t-0.995113742718073070,\t-0.995118678234010350,\t\n-0.995123611262150880,\t-0.995128541802482450,\t-0.995133469854992620,\t-0.995138395419669200,\t-0.995143318496499730,\t-0.995148239085472010,\t-0.995153157186573600,\t-0.995158072799792400,\t\n-0.995162985925115980,\t-0.995167896562532020,\t-0.995172804712028400,\t-0.995177710373592820,\t-0.995182613547212940,\t-0.995187514232876440,\t-0.995192412430571220,\t-0.995197308140284950,\t\n-0.995202201362005430,\t-0.995207092095720340,\t-0.995211980341417560,\t-0.995216866099084880,\t-0.995221749368710000,\t-0.995226630150280680,\t-0.995231508443784940,\t-0.995236384249210350,\t\n-0.995241257566544690,\t-0.995246128395776090,\t-0.995250996736891990,\t-0.995255862589880520,\t-0.995260725954729360,\t-0.995265586831426300,\t-0.995270445219959330,\t-0.995275301120316370,\t\n-0.995280154532484970,\t-0.995285005456453260,\t-0.995289853892209030,\t-0.995294699839740170,\t-0.995299543299034580,\t-0.995304384270080170,\t-0.995309222752864710,\t-0.995314058747376220,\t\n-0.995318892253602590,\t-0.995323723271531850,\t-0.995328551801151650,\t-0.995333377842450130,\t-0.995338201395415180,\t-0.995343022460034590,\t-0.995347841036296590,\t-0.995352657124188970,\t\n-0.995357470723699620,\t-0.995362281834816680,\t-0.995367090457528030,\t-0.995371896591821680,\t-0.995376700237685540,\t-0.995381501395107620,\t-0.995386300064076020,\t-0.995391096244578550,\t\n-0.995395889936603440,\t-0.995400681140138580,\t-0.995405469855172090,\t-0.995410256081691870,\t-0.995415039819686040,\t-0.995419821069142510,\t-0.995424599830049490,\t-0.995429376102395010,\t\n-0.995434149886167070,\t-0.995438921181353690,\t-0.995443689987943080,\t-0.995448456305923270,\t-0.995453220135282260,\t-0.995457981476008170,\t-0.995462740328089240,\t-0.995467496691513350,\t\n-0.995472250566268760,\t-0.995477001952343570,\t-0.995481750849725790,\t-0.995486497258403770,\t-0.995491241178365400,\t-0.995495982609598930,\t-0.995500721552092570,\t-0.995505458005834340,\t\n-0.995510191970812470,\t-0.995514923447015200,\t-0.995519652434430520,\t-0.995524378933046790,\t-0.995529102942852020,\t-0.995533824463834540,\t-0.995538543495982590,\t-0.995543260039284170,\t\n-0.995547974093727640,\t-0.995552685659301110,\t-0.995557394735992920,\t-0.995562101323791300,\t-0.995566805422684390,\t-0.995571507032660400,\t-0.995576206153707680,\t-0.995580902785814460,\t\n-0.995585596928969090,\t-0.995590288583159570,\t-0.995594977748374350,\t-0.995599664424601680,\t-0.995604348611830000,\t-0.995609030310047330,\t-0.995613709519242000,\t-0.995618386239402580,\t\n-0.995623060470517070,\t-0.995627732212573950,\t-0.995632401465561420,\t-0.995637068229468070,\t-0.995641732504281900,\t-0.995646394289991470,\t-0.995651053586585010,\t-0.995655710394050870,\t\n-0.995660364712377510,\t-0.995665016541553260,\t-0.995669665881566470,\t-0.995674312732405480,\t-0.995678957094058740,\t-0.995683598966514590,\t-0.995688238349761390,\t-0.995692875243787690,\t\n-0.995697509648581720,\t-0.995702141564132060,\t-0.995706770990427040,\t-0.995711397927455000,\t-0.995716022375204620,\t-0.995720644333664030,\t-0.995725263802821890,\t-0.995729880782666550,\t\n-0.995734495273186580,\t-0.995739107274370320,\t-0.995743716786206320,\t-0.995748323808683060,\t-0.995752928341788970,\t-0.995757530385512510,\t-0.995762129939842260,\t-0.995766727004766650,\t\n-0.995771321580274260,\t-0.995775913666353650,\t-0.995780503262993170,\t-0.995785090370181370,\t-0.995789674987906940,\t-0.995794257116158320,\t-0.995798836754923980,\t-0.995803413904192580,\t\n-0.995807988563952700,\t-0.995812560734192780,\t-0.995817130414901500,\t-0.995821697606067420,\t-0.995826262307679010,\t-0.995830824519725040,\t-0.995835384242193980,\t-0.995839941475074370,\t\n-0.995844496218355020,\t-0.995849048472024380,\t-0.995853598236071110,\t-0.995858145510483910,\t-0.995862690295251320,\t-0.995867232590361920,\t-0.995871772395804490,\t-0.995876309711567710,\t\n-0.995880844537640030,\t-0.995885376874010350,\t-0.995889906720667130,\t-0.995894434077599260,\t-0.995898958944795190,\t-0.995903481322243820,\t-0.995908001209933720,\t-0.995912518607853570,\t\n-0.995917033515992140,\t-0.995921545934338130,\t-0.995926055862880300,\t-0.995930563301607230,\t-0.995935068250507820,\t-0.995939570709570730,\t-0.995944070678784770,\t-0.995948568158138590,\t\n-0.995953063147621000,\t-0.995957555647220660,\t-0.995962045656926590,\t-0.995966533176727230,\t-0.995971018206611710,\t-0.995975500746568490,\t-0.995979980796586670,\t-0.995984458356654830,\t\n-0.995988933426761760,\t-0.995993406006896450,\t-0.995997876097047600,\t-0.996002343697204080,\t-0.996006808807354700,\t-0.996011271427488350,\t-0.996015731557593710,\t-0.996020189197659780,\t\n-0.996024644347675460,\t-0.996029097007629430,\t-0.996033547177510690,\t-0.996037994857308040,\t-0.996042440047010480,\t-0.996046882746606800,\t-0.996051322956085890,\t-0.996055760675436660,\t\n-0.996060195904648000,\t-0.996064628643708930,\t-0.996069058892608330,\t-0.996073486651334990,\t-0.996077911919877930,\t-0.996082334698226160,\t-0.996086754986368450,\t-0.996091172784293930,\t\n-0.996095588091991500,\t-0.996100000909450060,\t-0.996104411236658600,\t-0.996108819073606160,\t-0.996113224420281610,\t-0.996117627276674080,\t-0.996122027642772470,\t-0.996126425518565670,\t\n-0.996130820904042920,\t-0.996135213799193120,\t-0.996139604204005270,\t-0.996143992118468380,\t-0.996148377542571570,\t-0.996152760476303740,\t-0.996157140919654130,\t-0.996161518872611510,\t\n-0.996165894335165230,\t-0.996170267307304070,\t-0.996174637789017380,\t-0.996179005780294060,\t-0.996183371281123220,\t-0.996187734291493880,\t-0.996192094811395260,\t-0.996196452840816480,\t\n-0.996200808379746450,\t-0.996205161428174500,\t-0.996209511986089540,\t-0.996213860053480890,\t-0.996218205630337470,\t-0.996222548716648730,\t-0.996226889312403440,\t-0.996231227417591070,\t\n-0.996235563032200510,\t-0.996239896156221110,\t-0.996244226789641970,\t-0.996248554932452230,\t-0.996252880584641120,\t-0.996257203746197750,\t-0.996261524417111470,\t-0.996265842597371390,\t\n-0.996270158286966630,\t-0.996274471485886440,\t-0.996278782194120140,\t-0.996283090411656860,\t-0.996287396138485940,\t-0.996291699374596380,\t-0.996296000119977650,\t-0.996300298374618980,\t\n-0.996304594138509470,\t-0.996308887411638590,\t-0.996313178193995340,\t-0.996317466485569290,\t-0.996321752286349450,\t-0.996326035596325270,\t-0.996330316415486080,\t-0.996334594743821020,\t\n-0.996338870581319420,\t-0.996343143927970740,\t-0.996347414783764210,\t-0.996351683148689050,\t-0.996355949022734720,\t-0.996360212405890570,\t-0.996364473298145930,\t-0.996368731699490030,\t\n-0.996372987609912220,\t-0.996377241029402060,\t-0.996381491957948780,\t-0.996385740395541730,\t-0.996389986342170350,\t-0.996394229797823990,\t-0.996398470762492110,\t-0.996402709236164030,\t\n-0.996406945218829110,\t-0.996411178710476910,\t-0.996415409711096770,\t-0.996419638220678030,\t-0.996423864239210260,\t-0.996428087766682790,\t-0.996432308803085200,\t-0.996436527348406710,\t\n-0.996440743402637000,\t-0.996444956965765290,\t-0.996449168037781270,\t-0.996453376618674390,\t-0.996457582708433990,\t-0.996461786307049740,\t-0.996465987414510870,\t-0.996470186030807170,\t\n-0.996474382155927870,\t-0.996478575789862760,\t-0.996482766932601070,\t-0.996486955584132580,\t-0.996491141744446640,\t-0.996495325413532920,\t-0.996499506591380760,\t-0.996503685277979940,\t\n-0.996507861473319820,\t-0.996512035177390180,\t-0.996516206390180350,\t-0.996520375111680010,\t-0.996524541341878730,\t-0.996528705080766190,\t-0.996532866328331710,\t-0.996537025084565210,\t\n-0.996541181349456130,\t-0.996545335122994040,\t-0.996549486405168610,\t-0.996553635195969510,\t-0.996557781495386320,\t-0.996561925303408700,\t-0.996566066620026230,\t-0.996570205445228560,\t\n-0.996574341779005390,\t-0.996578475621346490,\t-0.996582606972241210,\t-0.996586735831679560,\t-0.996590862199650980,\t-0.996594986076145380,\t-0.996599107461152210,\t-0.996603226354661250,\t\n-0.996607342756662300,\t-0.996611456667144900,\t-0.996615568086098860,\t-0.996619677013513950,\t-0.996623783449379850,\t-0.996627887393686350,\t-0.996631988846423010,\t-0.996636087807579840,\t\n-0.996640184277146290,\t-0.996644278255112370,\t-0.996648369741467750,\t-0.996652458736202230,\t-0.996656545239305470,\t-0.996660629250767480,\t-0.996664710770577830,\t-0.996668789798726420,\t\n-0.996672866335203020,\t-0.996676940379997430,\t-0.996681011933099550,\t-0.996685080994499150,\t-0.996689147564186030,\t-0.996693211642150080,\t-0.996697273228380980,\t-0.996701332322868840,\t\n-0.996705388925603230,\t-0.996709443036574270,\t-0.996713494655771640,\t-0.996717543783185330,\t-0.996721590418805040,\t-0.996725634562620870,\t-0.996729676214622610,\t-0.996733715374800160,\t\n-0.996737752043143410,\t-0.996741786219642270,\t-0.996745817904286620,\t-0.996749847097066490,\t-0.996753873797971760,\t-0.996757898006992330,\t-0.996761919724118210,\t-0.996765938949339180,\t\n-0.996769955682645370,\t-0.996773969924026560,\t-0.996777981673472980,\t-0.996781990930974420,\t-0.996785997696520760,\t-0.996790001970102260,\t-0.996794003751708680,\t-0.996798003041330040,\t\n-0.996801999838956450,\t-0.996805994144577930,\t-0.996809985958184370,\t-0.996813975279765780,\t-0.996817962109312280,\t-0.996821946446813880,\t-0.996825928292260690,\t-0.996829907645642610,\t\n-0.996833884506949760,\t-0.996837858876172270,\t-0.996841830753300020,\t-0.996845800138323250,\t-0.996849767031231960,\t-0.996853731432016280,\t-0.996857693340666320,\t-0.996861652757172090,\t\n-0.996865609681523710,\t-0.996869564113711300,\t-0.996873516053724980,\t-0.996877465501554870,\t-0.996881412457191090,\t-0.996885356920623860,\t-0.996889298891843080,\t-0.996893238370839210,\t\n-0.996897175357602140,\t-0.996901109852122210,\t-0.996905041854389440,\t-0.996908971364394160,\t-0.996912898382126380,\t-0.996916822907576330,\t-0.996920744940734240,\t-0.996924664481590340,\t\n-0.996928581530134750,\t-0.996932496086357700,\t-0.996936408150249420,\t-0.996940317721800030,\t-0.996944224800999980,\t-0.996948129387839280,\t-0.996952031482308270,\t-0.996955931084397280,\t\n-0.996959828194096340,\t-0.996963722811395890,\t-0.996967614936286160,\t-0.996971504568757270,\t-0.996975391708799790,\t-0.996979276356403710,\t-0.996983158511559500,\t-0.996987038174257380,\t\n-0.996990915344487580,\t-0.996994790022240560,\t-0.996998662207506550,\t-0.997002531900275990,\t-0.997006399100539010,\t-0.997010263808286060,\t-0.997014126023507360,\t-0.997017985746193490,\t\n-0.997021842976334560,\t-0.997025697713921020,\t-0.997029549958943220,\t-0.997033399711391600,\t-0.997037246971256510,\t-0.997041091738528280,\t-0.997044934013197270,\t-0.997048773795253920,\t\n-0.997052611084688680,\t-0.997056445881491890,\t-0.997060278185654010,\t-0.997064107997165490,\t-0.997067935316016560,\t-0.997071760142197890,\t-0.997075582475699830,\t-0.997079402316512820,\t\n-0.997083219664627210,\t-0.997087034520033670,\t-0.997090846882722430,\t-0.997094656752684160,\t-0.997098464129909210,\t-0.997102269014388030,\t-0.997106071406111290,\t-0.997109871305069340,\t\n-0.997113668711252730,\t-0.997117463624651920,\t-0.997121256045257480,\t-0.997125045973059840,\t-0.997128833408049700,\t-0.997132618350217380,\t-0.997136400799553460,\t-0.997140180756048710,\t\n-0.997143958219693370,\t-0.997147733190478110,\t-0.997151505668393610,\t-0.997155275653430430,\t-0.997159043145578900,\t-0.997162808144829830,\t-0.997166570651173760,\t-0.997170330664601150,\t\n-0.997174088185102780,\t-0.997177843212669220,\t-0.997181595747291040,\t-0.997185345788958900,\t-0.997189093337663370,\t-0.997192838393395120,\t-0.997196580956144720,\t-0.997200321025902950,\t\n-0.997204058602660260,\t-0.997207793686407550,\t-0.997211526277135270,\t-0.997215256374834210,\t-0.997218983979495040,\t-0.997222709091108330,\t-0.997226431709664960,\t-0.997230151835155400,\t\n-0.997233869467570530,\t-0.997237584606900930,\t-0.997241297253137370,\t-0.997245007406270640,\t-0.997248715066291310,\t-0.997252420233190270,\t-0.997256122906958200,\t-0.997259823087585760,\t\n-0.997263520775063750,\t-0.997267215969382950,\t-0.997270908670534140,\t-0.997274598878508000,\t-0.997278286593295430,\t-0.997281971814887090,\t-0.997285654543273890,\t-0.997289334778446500,\t\n-0.997293012520395820,\t-0.997296687769112510,\t-0.997300360524587590,\t-0.997304030786811730,\t-0.997307698555775720,\t-0.997311363831470570,\t-0.997315026613886930,\t-0.997318686903015840,\t\n-0.997322344698847950,\t-0.997326000001374170,\t-0.997329652810585500,\t-0.997333303126472610,\t-0.997336950949026410,\t-0.997340596278238010,\t-0.997344239114097970,\t-0.997347879456597420,\t\n-0.997351517305727020,\t-0.997355152661478010,\t-0.997358785523841050,\t-0.997362415892807050,\t-0.997366043768367130,\t-0.997369669150512060,\t-0.997373292039232750,\t-0.997376912434520310,\t\n-0.997380530336365530,\t-0.997384145744759530,\t-0.997387758659693090,\t-0.997391369081157220,\t-0.997394977009142920,\t-0.997398582443641210,\t-0.997402185384643090,\t-0.997405785832139460,\t\n-0.997409383786121320,\t-0.997412979246579790,\t-0.997416572213505770,\t-0.997420162686890380,\t-0.997423750666724510,\t-0.997427336152999280,\t-0.997430919145705810,\t-0.997434499644834880,\t\n-0.997438077650377840,\t-0.997441653162325580,\t-0.997445226180669110,\t-0.997448796705399650,\t-0.997452364736508110,\t-0.997455930273985820,\t-0.997459493317823580,\t-0.997463053868012590,\t\n-0.997466611924544000,\t-0.997470167487408910,\t-0.997473720556598440,\t-0.997477271132103600,\t-0.997480819213915510,\t-0.997484364802025510,\t-0.997487907896424500,\t-0.997491448497103810,\t\n-0.997494986604054450,\t-0.997498522217267650,\t-0.997502055336734530,\t-0.997505585962446210,\t-0.997509114094394020,\t-0.997512639732568980,\t-0.997516162876962320,\t-0.997519683527565370,\t\n-0.997523201684369140,\t-0.997526717347364870,\t-0.997530230516543880,\t-0.997533741191897310,\t-0.997537249373416370,\t-0.997540755061092300,\t-0.997544258254916330,\t-0.997547758954879680,\t\n-0.997551257160973700,\t-0.997554752873189510,\t-0.997558246091518550,\t-0.997561736815951840,\t-0.997565225046480930,\t-0.997568710783096830,\t-0.997572194025791000,\t-0.997575674774554670,\t\n-0.997579153029379160,\t-0.997582628790255830,\t-0.997586102057175910,\t-0.997589572830130720,\t-0.997593041109111510,\t-0.997596506894109840,\t-0.997599970185116810,\t-0.997603430982123900,\t\n-0.997606889285122420,\t-0.997610345094103620,\t-0.997613798409059060,\t-0.997617249229979960,\t-0.997620697556857780,\t-0.997624143389683860,\t-0.997627586728449530,\t-0.997631027573146260,\t\n-0.997634465923765370,\t-0.997637901780298430,\t-0.997641335142736560,\t-0.997644766011071550,\t-0.997648194385294510,\t-0.997651620265397000,\t-0.997655043651370480,\t-0.997658464543206280,\t\n-0.997661882940895970,\t-0.997665298844431000,\t-0.997668712253802710,\t-0.997672123169002670,\t-0.997675531590022310,\t-0.997678937516853100,\t-0.997682340949486600,\t-0.997685741887914150,\t\n-0.997689140332127410,\t-0.997692536282117850,\t-0.997695929737876910,\t-0.997699320699396150,\t-0.997702709166667150,\t-0.997706095139681340,\t-0.997709478618430180,\t-0.997712859602905460,\t\n-0.997716238093098620,\t-0.997719614089001010,\t-0.997722987590604520,\t-0.997726358597900490,\t-0.997729727110880590,\t-0.997733093129536400,\t-0.997736456653859460,\t-0.997739817683841350,\t\n-0.997743176219473730,\t-0.997746532260748160,\t-0.997749885807656220,\t-0.997753236860189570,\t-0.997756585418339890,\t-0.997759931482098740,\t-0.997763275051457680,\t-0.997766616126408600,\t\n-0.997769954706942850,\t-0.997773290793052210,\t-0.997776624384728360,\t-0.997779955481962970,\t-0.997783284084747700,\t-0.997786610193074130,\t-0.997789933806934150,\t-0.997793254926319320,\t\n-0.997796573551221310,\t-0.997799889681631800,\t-0.997803203317542690,\t-0.997806514458945530,\t-0.997809823105832110,\t-0.997813129258194100,\t-0.997816432916023290,\t-0.997819734079311350,\t\n-0.997823032748050180,\t-0.997826328922231330,\t-0.997829622601846600,\t-0.997832913786887990,\t-0.997836202477346950,\t-0.997839488673215480,\t-0.997842772374485270,\t-0.997846053581148080,\t\n-0.997849332293195830,\t-0.997852608510620190,\t-0.997855882233413150,\t-0.997859153461566280,\t-0.997862422195071600,\t-0.997865688433920760,\t-0.997868952178105780,\t-0.997872213427618450,\t\n-0.997875472182450540,\t-0.997878728442593950,\t-0.997881982208040470,\t-0.997885233478782220,\t-0.997888482254810750,\t-0.997891728536118070,\t-0.997894972322696080,\t-0.997898213614536680,\t\n-0.997901452411631750,\t-0.997904688713973200,\t-0.997907922521552910,\t-0.997911153834362800,\t-0.997914382652394850,\t-0.997917608975640970,\t-0.997920832804092940,\t-0.997924054137742990,\t\n-0.997927272976582790,\t-0.997930489320604460,\t-0.997933703169799900,\t-0.997936914524161000,\t-0.997940123383679880,\t-0.997943329748348430,\t-0.997946533618158770,\t-0.997949734993102690,\t\n-0.997952933873172190,\t-0.997956130258359500,\t-0.997959324148656400,\t-0.997962515544055020,\t-0.997965704444547350,\t-0.997968890850125410,\t-0.997972074760781200,\t-0.997975256176506840,\t\n-0.997978435097294450,\t-0.997981611523135800,\t-0.997984785454023250,\t-0.997987956889948680,\t-0.997991125830904210,\t-0.997994292276881970,\t-0.997997456227873950,\t-0.998000617683872270,\t\n-0.998003776644869060,\t-0.998006933110856420,\t-0.998010087081826480,\t-0.998013238557771350,\t-0.998016387538683050,\t-0.998019534024553790,\t-0.998022678015375700,\t-0.998025819511141000,\t\n-0.998028958511841590,\t-0.998032095017469920,\t-0.998035229028018000,\t-0.998038360543477940,\t-0.998041489563841980,\t-0.998044616089102330,\t-0.998047740119251130,\t-0.998050861654280590,\t\n-0.998053980694182940,\t-0.998057097238950310,\t-0.998060211288574920,\t-0.998063322843048990,\t-0.998066431902364770,\t-0.998069538466514470,\t-0.998072642535490330,\t-0.998075744109284570,\t\n-0.998078843187889420,\t-0.998081939771297220,\t-0.998085033859500200,\t-0.998088125452490480,\t-0.998091214550260620,\t-0.998094301152802510,\t-0.998097385260108830,\t-0.998100466872171580,\t\n-0.998103545988983210,\t-0.998106622610535950,\t-0.998109696736822150,\t-0.998112768367834140,\t-0.998115837503564140,\t-0.998118904144004620,\t-0.998121968289147790,\t-0.998125029938986110,\t\n-0.998128089093511690,\t-0.998131145752717220,\t-0.998134199916594800,\t-0.998137251585136890,\t-0.998140300758335930,\t-0.998143347436184160,\t-0.998146391618673910,\t-0.998149433305797860,\t\n-0.998152472497548130,\t-0.998155509193917270,\t-0.998158543394897620,\t-0.998161575100481540,\t-0.998164604310661560,\t-0.998167631025430160,\t-0.998170655244779550,\t-0.998173676968702410,\t\n-0.998176696197191070,\t-0.998179712930237990,\t-0.998182727167835520,\t-0.998185738909976310,\t-0.998188748156652820,\t-0.998191754907857390,\t-0.998194759163582580,\t-0.998197760923820840,\t\n-0.998200760188564740,\t-0.998203756957806720,\t-0.998206751231539350,\t-0.998209743009755070,\t-0.998212732292446340,\t-0.998215719079605930,\t-0.998218703371226090,\t-0.998221685167299590,\t\n-0.998224664467818880,\t-0.998227641272776520,\t-0.998230615582164970,\t-0.998233587395976900,\t-0.998236556714204970,\t-0.998239523536841530,\t-0.998242487863879370,\t-0.998245449695310930,\t\n-0.998248409031128880,\t-0.998251365871325790,\t-0.998254320215894330,\t-0.998257272064827060,\t-0.998260221418116540,\t-0.998263168275755560,\t-0.998266112637736570,\t-0.998269054504052340,\t\n-0.998271993874695560,\t-0.998274930749658670,\t-0.998277865128934460,\t-0.998280797012515710,\t-0.998283726400394870,\t-0.998286653292564720,\t-0.998289577689017940,\t-0.998292499589747200,\t\n-0.998295418994745280,\t-0.998298335904004740,\t-0.998301250317518480,\t-0.998304162235278960,\t-0.998307071657279050,\t-0.998309978583511560,\t-0.998312883013969030,\t-0.998315784948644370,\t\n-0.998318684387530130,\t-0.998321581330619210,\t-0.998324475777904400,\t-0.998327367729378360,\t-0.998330257185033990,\t-0.998333144144863850,\t-0.998336028608860950,\t-0.998338910577017960,\t\n-0.998341790049327660,\t-0.998344667025782840,\t-0.998347541506376390,\t-0.998350413491101100,\t-0.998353282979949850,\t-0.998356149972915330,\t-0.998359014469990420,\t-0.998361876471168030,\t\n-0.998364735976440820,\t-0.998367592985801910,\t-0.998370447499243970,\t-0.998373299516759900,\t-0.998376149038342600,\t-0.998378996063984840,\t-0.998381840593679740,\t-0.998384682627419970,\t\n-0.998387522165198440,\t-0.998390359207008140,\t-0.998393193752841970,\t-0.998396025802692820,\t-0.998398855356553590,\t-0.998401682414417180,\t-0.998404506976276580,\t-0.998407329042124810,\t\n-0.998410148611954540,\t-0.998412965685759100,\t-0.998415780263531170,\t-0.998418592345263760,\t-0.998421401930949860,\t-0.998424209020582490,\t-0.998427013614154530,\t-0.998429815711659120,\t\n-0.998432615313089130,\t-0.998435412418437580,\t-0.998438207027697590,\t-0.998440999140862040,\t-0.998443788757923940,\t-0.998446575878876420,\t-0.998449360503712470,\t-0.998452142632425100,\t\n-0.998454922265007320,\t-0.998457699401452240,\t-0.998460474041752980,\t-0.998463246185902540,\t-0.998466015833893940,\t-0.998468782985720280,\t-0.998471547641374800,\t-0.998474309800850280,\t\n-0.998477069464140050,\t-0.998479826631237240,\t-0.998482581302134740,\t-0.998485333476825780,\t-0.998488083155303570,\t-0.998490830337561140,\t-0.998493575023591600,\t-0.998496317213388160,\t\n-0.998499056906943850,\t-0.998501794104251990,\t-0.998504528805305600,\t-0.998507261010097900,\t-0.998509990718622010,\t-0.998512717930871150,\t-0.998515442646838560,\t-0.998518164866517340,\t\n-0.998520884589900630,\t-0.998523601816981850,\t-0.998526316547753920,\t-0.998529028782210280,\t-0.998531738520344050,\t-0.998534445762148560,\t-0.998537150507616820,\t-0.998539852756742290,\t\n-0.998542552509518070,\t-0.998545249765937500,\t-0.998547944525993820,\t-0.998550636789680260,\t-0.998553326556990140,\t-0.998556013827916700,\t-0.998558698602453170,\t-0.998561380880592870,\t\n-0.998564060662329170,\t-0.998566737947655380,\t-0.998569412736564630,\t-0.998572085029050480,\t-0.998574754825106050,\t-0.998577422124724670,\t-0.998580086927899790,\t-0.998582749234624760,\t\n-0.998585409044892790,\t-0.998588066358697350,\t-0.998590721176031650,\t-0.998593373496889150,\t-0.998596023321263290,\t-0.998598670649147310,\t-0.998601315480534770,\t-0.998603957815418770,\t\n-0.998606597653793000,\t-0.998609234995650690,\t-0.998611869840985380,\t-0.998614502189790310,\t-0.998617132042058930,\t-0.998619759397784800,\t-0.998622384256961260,\t-0.998625006619581760,\t\n-0.998627626485639740,\t-0.998630243855128660,\t-0.998632858728041970,\t-0.998635471104373120,\t-0.998638080984115660,\t-0.998640688367262940,\t-0.998643293253808520,\t-0.998645895643745840,\t\n-0.998648495537068360,\t-0.998651092933769750,\t-0.998653687833843340,\t-0.998656280237282810,\t-0.998658870144081500,\t-0.998661457554232970,\t-0.998664042467730880,\t-0.998666624884568700,\t\n-0.998669204804739860,\t-0.998671782228238050,\t-0.998674357155056810,\t-0.998676929585189720,\t-0.998679499518630220,\t-0.998682066955371980,\t-0.998684631895408680,\t-0.998687194338733650,\t\n-0.998689754285340680,\t-0.998692311735223440,\t-0.998694866688375260,\t-0.998697419144790040,\t-0.998699969104461240,\t-0.998702516567382400,\t-0.998705061533547430,\t-0.998707604002949670,\t\n-0.998710143975583000,\t-0.998712681451440990,\t-0.998715216430517190,\t-0.998717748912805400,\t-0.998720278898299170,\t-0.998722806386992400,\t-0.998725331378878420,\t-0.998727853873951240,\t\n-0.998730373872204420,\t-0.998732891373631640,\t-0.998735406378226550,\t-0.998737918885983070,\t-0.998740428896894740,\t-0.998742936410955350,\t-0.998745441428158690,\t-0.998747943948498310,\t\n-0.998750443971968100,\t-0.998752941498561750,\t-0.998755436528273140,\t-0.998757929061095840,\t-0.998760419097023840,\t-0.998762906636050720,\t-0.998765391678170360,\t-0.998767874223376430,\t\n-0.998770354271662940,\t-0.998772831823023450,\t-0.998775306877451970,\t-0.998777779434942170,\t-0.998780249495487940,\t-0.998782717059083060,\t-0.998785182125721430,\t-0.998787644695396830,\t\n-0.998790104768103150,\t-0.998792562343834180,\t-0.998795017422583810,\t-0.998797470004345820,\t-0.998799920089114220,\t-0.998802367676882910,\t-0.998804812767645540,\t-0.998807255361396250,\t\n-0.998809695458128700,\t-0.998812133057837000,\t-0.998814568160514950,\t-0.998817000766156540,\t-0.998819430874755550,\t-0.998821858486306000,\t-0.998824283600801780,\t-0.998826706218236880,\t\n-0.998829126338605210,\t-0.998831543961900660,\t-0.998833959088117340,\t-0.998836371717249150,\t-0.998838781849289980,\t-0.998841189484233840,\t-0.998843594622074730,\t-0.998845997262806650,\t\n-0.998848397406423620,\t-0.998850795052919520,\t-0.998853190202288470,\t-0.998855582854524470,\t-0.998857973009621420,\t-0.998860360667573550,\t-0.998862745828374640,\t-0.998865128492019030,\t\n-0.998867508658500490,\t-0.998869886327813260,\t-0.998872261499951230,\t-0.998874634174908630,\t-0.998877004352679340,\t-0.998879372033257610,\t-0.998881737216637420,\t-0.998884099902812910,\t\n-0.998886460091778170,\t-0.998888817783527230,\t-0.998891172978054300,\t-0.998893525675353390,\t-0.998895875875418730,\t-0.998898223578244320,\t-0.998900568783824380,\t-0.998902911492153050,\t\n-0.998905251703224310,\t-0.998907589417032620,\t-0.998909924633571870,\t-0.998912257352836290,\t-0.998914587574820100,\t-0.998916915299517430,\t-0.998919240526922380,\t-0.998921563257029410,\t\n-0.998923883489832410,\t-0.998926201225325720,\t-0.998928516463503560,\t-0.998930829204360050,\t-0.998933139447889530,\t-0.998935447194086110,\t-0.998937752442944140,\t-0.998940055194457720,\t\n-0.998942355448621200,\t-0.998944653205428800,\t-0.998946948464874750,\t-0.998949241226953390,\t-0.998951531491658830,\t-0.998953819258985520,\t-0.998956104528927580,\t-0.998958387301479460,\t\n-0.998960667576635260,\t-0.998962945354389450,\t-0.998965220634736360,\t-0.998967493417670100,\t-0.998969763703185240,\t-0.998972031491275890,\t-0.998974296781936390,\t-0.998976559575161290,\t\n-0.998978819870944720,\t-0.998981077669281130,\t-0.998983332970164730,\t-0.998985585773590090,\t-0.998987836079551550,\t-0.998990083888043330,\t-0.998992329199059890,\t-0.998994572012595670,\t\n-0.998996812328645010,\t-0.998999050147202360,\t-0.999001285468262060,\t-0.999003518291818550,\t-0.999005748617866170,\t-0.999007976446399490,\t-0.999010201777412840,\t-0.999012424610900780,\t\n-0.999014644946857540,\t-0.999016862785277790,\t-0.999019078126155760,\t-0.999021290969486110,\t-0.999023501315263300,\t-0.999025709163481550,\t-0.999027914514135640,\t-0.999030117367220030,\t\n-0.999032317722729050,\t-0.999034515580657260,\t-0.999036710940999110,\t-0.999038903803749270,\t-0.999041094168902190,\t-0.999043282036452320,\t-0.999045467406394330,\t-0.999047650278722550,\t\n-0.999049830653431780,\t-0.999052008530516340,\t-0.999054183909970920,\t-0.999056356791789950,\t-0.999058527175968210,\t-0.999060695062500060,\t-0.999062860451380260,\t-0.999065023342603280,\t\n-0.999067183736163770,\t-0.999069341632056180,\t-0.999071497030275310,\t-0.999073649930815710,\t-0.999075800333672050,\t-0.999077948238838780,\t-0.999080093646310670,\t-0.999082236556082300,\t\n-0.999084376968148450,\t-0.999086514882503550,\t-0.999088650299142400,\t-0.999090783218059660,\t-0.999092913639249900,\t-0.999095041562707900,\t-0.999097166988428210,\t-0.999099289916405730,\t\n-0.999101410346634910,\t-0.999103528279110640,\t-0.999105643713827480,\t-0.999107756650780330,\t-0.999109867089963740,\t-0.999111975031372390,\t-0.999114080475001280,\t-0.999116183420844850,\t\n-0.999118283868897890,\t-0.999120381819155300,\t-0.999122477271611850,\t-0.999124570226262110,\t-0.999126660683100960,\t-0.999128748642123090,\t-0.999130834103323480,\t-0.999132917066696710,\t\n-0.999134997532237670,\t-0.999137075499941130,\t-0.999139150969801880,\t-0.999141223941814700,\t-0.999143294415974600,\t-0.999145362392276140,\t-0.999147427870714310,\t-0.999149490851284020,\t\n-0.999151551333979930,\t-0.999153609318796930,\t-0.999155664805729930,\t-0.999157717794773690,\t-0.999159768285923230,\t-0.999161816279173330,\t-0.999163861774518990,\t-0.999165904771954880,\t\n-0.999167945271476010,\t-0.999169983273077380,\t-0.999172018776753660,\t-0.999174051782499960,\t-0.999176082290311070,\t-0.999178110300182110,\t-0.999180135812107740,\t-0.999182158826083080,\t\n-0.999184179342103020,\t-0.999186197360162560,\t-0.999188212880256610,\t-0.999190225902380050,\t-0.999192236426527990,\t-0.999194244452695330,\t-0.999196249980876970,\t-0.999198253011068130,\t\n-0.999200253543263580,\t-0.999202251577458340,\t-0.999204247113647530,\t-0.999206240151826130,\t-0.999208230691989160,\t-0.999210218734131520,\t-0.999212204278248420,\t-0.999214187324334760,\t\n-0.999216167872385540,\t-0.999218145922395990,\t-0.999220121474361120,\t-0.999222094528275930,\t-0.999224065084135530,\t-0.999226033141934810,\t-0.999227998701669230,\t-0.999229961763333450,\t\n-0.999231922326922930,\t-0.999233880392432550,\t-0.999235835959857430,\t-0.999237789029192690,\t-0.999239739600433550,\t-0.999241687673575020,\t-0.999243633248612320,\t-0.999245576325540560,\t\n-0.999247516904354760,\t-0.999249454985050240,\t-0.999251390567622020,\t-0.999253323652065430,\t-0.999255254238375470,\t-0.999257182326547370,\t-0.999259107916576240,\t-0.999261031008457420,\t\n-0.999262951602186030,\t-0.999264869697757300,\t-0.999266785295166330,\t-0.999268698394408460,\t-0.999270608995478820,\t-0.999272517098372610,\t-0.999274422703085090,\t-0.999276325809611570,\t\n-0.999278226417947280,\t-0.999280124528087340,\t-0.999282020140027090,\t-0.999283913253761870,\t-0.999285803869286780,\t-0.999287691986597280,\t-0.999289577605688480,\t-0.999291460726555720,\t\n-0.999293341349194340,\t-0.999295219473599560,\t-0.999297095099766830,\t-0.999298968227691260,\t-0.999300838857368310,\t-0.999302706988793310,\t-0.999304572621961480,\t-0.999306435756868280,\t\n-0.999308296393508930,\t-0.999310154531878880,\t-0.999312010171973350,\t-0.999313863313787910,\t-0.999315713957317770,\t-0.999317562102558400,\t-0.999319407749505010,\t-0.999321250898153160,\t\n-0.999323091548498190,\t-0.999324929700535550,\t-0.999326765354260460,\t-0.999328598509668600,\t-0.999330429166755190,\t-0.999332257325515670,\t-0.999334082985945500,\t-0.999335906148040130,\t\n-0.999337726811795000,\t-0.999339544977205560,\t-0.999341360644267260,\t-0.999343173812975550,\t-0.999344984483325980,\t-0.999346792655313900,\t-0.999348598328934750,\t-0.999350401504184190,\t\n-0.999352202181057690,\t-0.999354000359550580,\t-0.999355796039658520,\t-0.999357589221376960,\t-0.999359379904701360,\t-0.999361168089627380,\t-0.999362953776150480,\t-0.999364736964266200,\t\n-0.999366517653970110,\t-0.999368295845257660,\t-0.999370071538124520,\t-0.999371844732566130,\t-0.999373615428578170,\t-0.999375383626156190,\t-0.999377149325295750,\t-0.999378912525992420,\t\n-0.999380673228241760,\t-0.999382431432039530,\t-0.999384187137381090,\t-0.999385940344262310,\t-0.999387691052678660,\t-0.999389439262625690,\t-0.999391184974099180,\t-0.999392928187094690,\t\n-0.999394668901607890,\t-0.999396407117634440,\t-0.999398142835170030,\t-0.999399876054210100,\t-0.999401606774750650,\t-0.999403334996787130,\t-0.999405060720315210,\t-0.999406783945330670,\t\n-0.999408504671829180,\t-0.999410222899806410,\t-0.999411938629258150,\t-0.999413651860179940,\t-0.999415362592567690,\t-0.999417070826416950,\t-0.999418776561723620,\t-0.999420479798483250,\t\n-0.999422180536691850,\t-0.999423878776344870,\t-0.999425574517438190,\t-0.999427267759967600,\t-0.999428958503928880,\t-0.999430646749317700,\t-0.999432332496129950,\t-0.999434015744361300,\t\n-0.999435696494007650,\t-0.999437374745064780,\t-0.999439050497528460,\t-0.999440723751394590,\t-0.999442394506658840,\t-0.999444062763317100,\t-0.999445728521365150,\t-0.999447391780798890,\t\n-0.999449052541614200,\t-0.999450710803806870,\t-0.999452366567372800,\t-0.999454019832307860,\t-0.999455670598607740,\t-0.999457318866268540,\t-0.999458964635285940,\t-0.999460607905656050,\t\n-0.999462248677374540,\t-0.999463886950437420,\t-0.999465522724840680,\t-0.999467156000580000,\t-0.999468786777651500,\t-0.999470415056051050,\t-0.999472040835774570,\t-0.999473664116817930,\t\n-0.999475284899177140,\t-0.999476903182848210,\t-0.999478518967826910,\t-0.999480132254109480,\t-0.999481743041691570,\t-0.999483351330569310,\t-0.999484957120738700,\t-0.999486560412195750,\t\n-0.999488161204936330,\t-0.999489759498956580,\t-0.999491355294252370,\t-0.999492948590819830,\t-0.999494539388654850,\t-0.999496127687753530,\t-0.999497713488111890,\t-0.999499296789726040,\t\n-0.999500877592591870,\t-0.999502455896705500,\t-0.999504031702063030,\t-0.999505605008660480,\t-0.999507175816493950,\t-0.999508744125559460,\t-0.999510309935853100,\t-0.999511873247371010,\t\n-0.999513434060109170,\t-0.999514992374063720,\t-0.999516548189230860,\t-0.999518101505606600,\t-0.999519652323187070,\t-0.999521200641968480,\t-0.999522746461946830,\t-0.999524289783118250,\t\n-0.999525830605479060,\t-0.999527368929025270,\t-0.999528904753753000,\t-0.999530438079658580,\t-0.999531968906737900,\t-0.999533497234987410,\t-0.999535023064403230,\t-0.999536546394981350,\t\n-0.999538067226718230,\t-0.999539585559609870,\t-0.999541101393652600,\t-0.999542614728842540,\t-0.999544125565175910,\t-0.999545633902649060,\t-0.999547139741258080,\t-0.999548643080999220,\t\n-0.999550143921868810,\t-0.999551642263862950,\t-0.999553138106978100,\t-0.999554631451210260,\t-0.999556122296555990,\t-0.999557610643011300,\t-0.999559096490572620,\t-0.999560579839236300,\t\n-0.999562060688998440,\t-0.999563539039855400,\t-0.999565014891803600,\t-0.999566488244839180,\t-0.999567959098958570,\t-0.999569427454158000,\t-0.999570893310434030,\t-0.999572356667782660,\t\n-0.999573817526200450,\t-0.999575275885683730,\t-0.999576731746228850,\t-0.999578185107832030,\t-0.999579635970489820,\t-0.999581084334198570,\t-0.999582530198954490,\t-0.999583973564754150,\t\n-0.999585414431593880,\t-0.999586852799470020,\t-0.999588288668379120,\t-0.999589722038317420,\t-0.999591152909281470,\t-0.999592581281267600,\t-0.999594007154272270,\t-0.999595430528292030,\t\n-0.999596851403323110,\t-0.999598269779362060,\t-0.999599685656405330,\t-0.999601099034449380,\t-0.999602509913490760,\t-0.999603918293525790,\t-0.999605324174551060,\t-0.999606727556563100,\t\n-0.999608128439558150,\t-0.999609526823532990,\t-0.999610922708484060,\t-0.999612316094407700,\t-0.999613706981300590,\t-0.999615095369159270,\t-0.999616481257980190,\t-0.999617864647759920,\t\n-0.999619245538494900,\t-0.999620623930181810,\t-0.999621999822817190,\t-0.999623373216397600,\t-0.999624744110919510,\t-0.999626112506379560,\t-0.999627478402774330,\t-0.999628841800100480,\t\n-0.999630202698354450,\t-0.999631561097532930,\t-0.999632916997632570,\t-0.999634270398649830,\t-0.999635621300581480,\t-0.999636969703423970,\t-0.999638315607174200,\t-0.999639659011828500,\t\n-0.999640999917383750,\t-0.999642338323836420,\t-0.999643674231183280,\t-0.999645007639420990,\t-0.999646338548546120,\t-0.999647666958555450,\t-0.999648992869445530,\t-0.999650316281213260,\t\n-0.999651637193855080,\t-0.999652955607367890,\t-0.999654271521748240,\t-0.999655584936993020,\t-0.999656895853098800,\t-0.999658204270062250,\t-0.999659510187880240,\t-0.999660813606549460,\t\n-0.999662114526066680,\t-0.999663412946428580,\t-0.999664708867632030,\t-0.999666002289673620,\t-0.999667293212550210,\t-0.999668581636258600,\t-0.999669867560795460,\t-0.999671150986157660,\t\n-0.999672431912342120,\t-0.999673710339345380,\t-0.999674986267164440,\t-0.999676259695795990,\t-0.999677530625236900,\t-0.999678799055483960,\t-0.999680064986533940,\t-0.999681328418383860,\t\n-0.999682589351030490,\t-0.999683847784470610,\t-0.999685103718701120,\t-0.999686357153718900,\t-0.999687608089520730,\t-0.999688856526103510,\t-0.999690102463464240,\t-0.999691345901599690,\t\n-0.999692586840506770,\t-0.999693825280182360,\t-0.999695061220623350,\t-0.999696294661826750,\t-0.999697525603789440,\t-0.999698754046508320,\t-0.999699979989980280,\t-0.999701203434202210,\t\n-0.999702424379171230,\t-0.999703642824884220,\t-0.999704858771337970,\t-0.999706072218529700,\t-0.999707283166456180,\t-0.999708491615114550,\t-0.999709697564501560,\t-0.999710901014614350,\t\n-0.999712101965450020,\t-0.999713300417005240,\t-0.999714496369277340,\t-0.999715689822263220,\t-0.999716880775959770,\t-0.999718069230364210,\t-0.999719255185473440,\t-0.999720438641284570,\t\n-0.999721619597794490,\t-0.999722798055000420,\t-0.999723974012899360,\t-0.999725147471488440,\t-0.999726318430764540,\t-0.999727486890724990,\t-0.999728652851366580,\t-0.999729816312686540,\t\n-0.999730977274682080,\t-0.999732135737350090,\t-0.999733291700687810,\t-0.999734445164692230,\t-0.999735596129360580,\t-0.999736744594689860,\t-0.999737890560677410,\t-0.999739034027320230,\t\n-0.999740174994615320,\t-0.999741313462560120,\t-0.999742449431151540,\t-0.999743582900386900,\t-0.999744713870263310,\t-0.999745842340777900,\t-0.999746968311927890,\t-0.999748091783710490,\t\n-0.999749212756122830,\t-0.999750331229162130,\t-0.999751447202825600,\t-0.999752560677110490,\t-0.999753671652013900,\t-0.999754780127533270,\t-0.999755886103665500,\t-0.999756989580408150,\t\n-0.999758090557758330,\t-0.999759189035713260,\t-0.999760285014270170,\t-0.999761378493426500,\t-0.999762469473179260,\t-0.999763557953525890,\t-0.999764643934463630,\t-0.999765727415989680,\t\n-0.999766808398101500,\t-0.999767886880796320,\t-0.999768962864071350,\t-0.999770036347924050,\t-0.999771107332351530,\t-0.999772175817351340,\t-0.999773241802920710,\t-0.999774305289056970,\t\n-0.999775366275757470,\t-0.999776424763019530,\t-0.999777480750840610,\t-0.999778534239217920,\t-0.999779585228148800,\t-0.999780633717630930,\t-0.999781679707661300,\t-0.999782723198237580,\t\n-0.999783764189356990,\t-0.999784802681016990,\t-0.999785838673215020,\t-0.999786872165948410,\t-0.999787903159214620,\t-0.999788931653011080,\t-0.999789957647335250,\t-0.999790981142184560,\t\n-0.999792002137556370,\t-0.999793020633448100,\t-0.999794036629857330,\t-0.999795050126781490,\t-0.999796061124218040,\t-0.999797069622164410,\t-0.999798075620618180,\t-0.999799079119576660,\t\n-0.999800080119037430,\t-0.999801078618998140,\t-0.999802074619456030,\t-0.999803068120408760,\t-0.999804059121853770,\t-0.999805047623788750,\t-0.999806033626211010,\t-0.999807017129118240,\t\n-0.999807998132507980,\t-0.999808976636377580,\t-0.999809952640724810,\t-0.999810926145547230,\t-0.999811897150842290,\t-0.999812865656607540,\t-0.999813831662840660,\t-0.999814795169539310,\t\n-0.999815756176700820,\t-0.999816714684322980,\t-0.999817670692403460,\t-0.999818624200939590,\t-0.999819575209929260,\t-0.999820523719370020,\t-0.999821469729259450,\t-0.999822413239595200,\t\n-0.999823354250374830,\t-0.999824292761596230,\t-0.999825228773256750,\t-0.999826162285354260,\t-0.999827093297886440,\t-0.999828021810850840,\t-0.999828947824245140,\t-0.999829871338067110,\t\n-0.999830792352314310,\t-0.999831710866984640,\t-0.999832626882075640,\t-0.999833540397585100,\t-0.999834451413510790,\t-0.999835359929850180,\t-0.999836265946601240,\t-0.999837169463761670,\t\n-0.999838070481329220,\t-0.999838968999301470,\t-0.999839865017676410,\t-0.999840758536451600,\t-0.999841649555624930,\t-0.999842538075194190,\t-0.999843424095157030,\t-0.999844307615511350,\t\n-0.999845188636254930,\t-0.999846067157385440,\t-0.999846943178900880,\t-0.999847816700798920,\t-0.999848687723077440,\t-0.999849556245734240,\t-0.999850422268767080,\t-0.999851285792173970,\t\n-0.999852146815952580,\t-0.999853005340100800,\t-0.999853861364616510,\t-0.999854714889497620,\t-0.999855565914742010,\t-0.999856414440347340,\t-0.999857260466311740,\t-0.999858103992632860,\t\n-0.999858945019308830,\t-0.999859783546337420,\t-0.999860619573716520,\t-0.999861453101444140,\t-0.999862284129518050,\t-0.999863112657936370,\t-0.999863938686696760,\t-0.999864762215797340,\t\n-0.999865583245236110,\t-0.999866401775010850,\t-0.999867217805119560,\t-0.999868031335560240,\t-0.999868842366330890,\t-0.999869650897429410,\t-0.999870456928853790,\t-0.999871260460602040,\t\n-0.999872061492672160,\t-0.999872860025062040,\t-0.999873656057769900,\t-0.999874449590793520,\t-0.999875240624131020,\t-0.999876029157780510,\t-0.999876815191739880,\t-0.999877598726007120,\t\n-0.999878379760580470,\t-0.999879158295457810,\t-0.999879934330637270,\t-0.999880707866116940,\t-0.999881478901894830,\t-0.999882247437969050,\t-0.999883013474337610,\t-0.999883777010998620,\t\n-0.999884538047950190,\t-0.999885296585190430,\t-0.999886052622717350,\t-0.999886806160529270,\t-0.999887557198624100,\t-0.999888305737000050,\t-0.999889051775655240,\t-0.999889795314587880,\t\n-0.999890536353795880,\t-0.999891274893277670,\t-0.999892010933031260,\t-0.999892744473054760,\t-0.999893475513346400,\t-0.999894204053904390,\t-0.999894930094726850,\t-0.999895653635812010,\t\n-0.999896374677157970,\t-0.999897093218763080,\t-0.999897809260625440,\t-0.999898522802743160,\t-0.999899233845114700,\t-0.999899942387738160,\t-0.999900648430611770,\t-0.999901351973733640,\t\n-0.999902053017102220,\t-0.999902751560715730,\t-0.999903447604572280,\t-0.999904141148670210,\t-0.999904832193007740,\t-0.999905520737583320,\t-0.999906206782394950,\t-0.999906890327441180,\t\n-0.999907571372720130,\t-0.999908249918230130,\t-0.999908925963969630,\t-0.999909599509936740,\t-0.999910270556129800,\t-0.999910939102547250,\t-0.999911605149187310,\t-0.999912268696048320,\t\n-0.999912929743128730,\t-0.999913588290426870,\t-0.999914244337940960,\t-0.999914897885669450,\t-0.999915548933610680,\t-0.999916197481763080,\t-0.999916843530124890,\t-0.999917487078694660,\t\n-0.999918128127470720,\t-0.999918766676451520,\t-0.999919402725635290,\t-0.999920036275020570,\t-0.999920667324605830,\t-0.999921295874389380,\t-0.999921921924369680,\t-0.999922545474545180,\t\n-0.999923166524914420,\t-0.999923785075475640,\t-0.999924401126227380,\t-0.999925014677168100,\t-0.999925625728296350,\t-0.999926234279610580,\t-0.999926840331109120,\t-0.999927443882790650,\t\n-0.999928044934653480,\t-0.999928643486696300,\t-0.999929239538917440,\t-0.999929833091315450,\t-0.999930424143888890,\t-0.999931012696636310,\t-0.999931598749556280,\t-0.999932182302647130,\t\n-0.999932763355907530,\t-0.999933341909336030,\t-0.999933917962931180,\t-0.999934491516691560,\t-0.999935062570615710,\t-0.999935631124702300,\t-0.999936197178949660,\t-0.999936760733356580,\t\n-0.999937321787921610,\t-0.999937880342643300,\t-0.999938436397520340,\t-0.999938989952551260,\t-0.999939541007734740,\t-0.999940089563069350,\t-0.999940635618553620,\t-0.999941179174186460,\t\n-0.999941720229966300,\t-0.999942258785891820,\t-0.999942794841961690,\t-0.999943328398174680,\t-0.999943859454529240,\t-0.999944388011024140,\t-0.999944914067658170,\t-0.999945437624429780,\t\n-0.999945958681337840,\t-0.999946477238381040,\t-0.999946993295558140,\t-0.999947506852867600,\t-0.999948017910308410,\t-0.999948526467879020,\t-0.999949032525578430,\t-0.999949536083405310,\t\n-0.999950037141358220,\t-0.999950535699436150,\t-0.999951031757637670,\t-0.999951525315961650,\t-0.999952016374406780,\t-0.999952504932971830,\t-0.999952990991655690,\t-0.999953474550457130,\t\n-0.999953955609374720,\t-0.999954434168407570,\t-0.999954910227554230,\t-0.999955383786813700,\t-0.999955854846184660,\t-0.999956323405665980,\t-0.999956789465256570,\t-0.999957253024955080,\t\n-0.999957714084760530,\t-0.999958172644671680,\t-0.999958628704687440,\t-0.999959082264806560,\t-0.999959533325027960,\t-0.999959981885350510,\t-0.999960427945773220,\t-0.999960871506294760,\t\n-0.999961312566914230,\t-0.999961751127630310,\t-0.999962187188441990,\t-0.999962620749348270,\t-0.999963051810348060,\t-0.999963480371440120,\t-0.999963906432623560,\t-0.999964329993897170,\t\n-0.999964751055259950,\t-0.999965169616710890,\t-0.999965585678248890,\t-0.999965999239872950,\t-0.999966410301581950,\t-0.999966818863375020,\t-0.999967224925250920,\t-0.999967628487208880,\t\n-0.999968029549247680,\t-0.999968428111366440,\t-0.999968824173564140,\t-0.999969217735839800,\t-0.999969608798192410,\t-0.999969997360620980,\t-0.999970383423124500,\t-0.999970766985702090,\t\n-0.999971148048352850,\t-0.999971526611075690,\t-0.999971902673869710,\t-0.999972276236733900,\t-0.999972647299667510,\t-0.999973015862669400,\t-0.999973381925738810,\t-0.999973745488874850,\t\n-0.999974106552076410,\t-0.999974465115342710,\t-0.999974821178672870,\t-0.999975174742065990,\t-0.999975525805521180,\t-0.999975874369037570,\t-0.999976220432614250,\t-0.999976563996250340,\t\n-0.999976905059945080,\t-0.999977243623697550,\t-0.999977579687506890,\t-0.999977913251372310,\t-0.999978244315292920,\t-0.999978572879267950,\t-0.999978898943296500,\t-0.999979222507377810,\t\n-0.999979543571511090,\t-0.999979862135695450,\t-0.999980178199930240,\t-0.999980491764214550,\t-0.999980802828547620,\t-0.999981111392928670,\t-0.999981417457357020,\t-0.999981721021831800,\t\n-0.999982022086352230,\t-0.999982320650917630,\t-0.999982616715527240,\t-0.999982910280180270,\t-0.999983201344876060,\t-0.999983489909613830,\t-0.999983775974392920,\t-0.999984059539212540,\t\n-0.999984340604071930,\t-0.999984619168970630,\t-0.999984895233907660,\t-0.999985168798882550,\t-0.999985439863894430,\t-0.999985708428942740,\t-0.999985974494026710,\t-0.999986238059145880,\t\n-0.999986499124299380,\t-0.999986757689486640,\t-0.999987013754707000,\t-0.999987267319959790,\t-0.999987518385244470,\t-0.999987766950560350,\t-0.999988013015906780,\t-0.999988256581283210,\t\n-0.999988497646689070,\t-0.999988736212123590,\t-0.999988972277586320,\t-0.999989205843076490,\t-0.999989436908593770,\t-0.999989665474137480,\t-0.999989891539706970,\t-0.999990115105301780,\t\n-0.999990336170921260,\t-0.999990554736564840,\t-0.999990770802232090,\t-0.999990984367922440,\t-0.999991195433635350,\t-0.999991403999370140,\t-0.999991610065126600,\t-0.999991813630903950,\t\n-0.999992014696701740,\t-0.999992213262519520,\t-0.999992409328356760,\t-0.999992602894212990,\t-0.999992793960087670,\t-0.999992982525980460,\t-0.999993168591890690,\t-0.999993352157818040,\t\n-0.999993533223762050,\t-0.999993711789722180,\t-0.999993887855698090,\t-0.999994061421689230,\t-0.999994232487695140,\t-0.999994401053715620,\t-0.999994567119749990,\t-0.999994730685798030,\t\n-0.999994891751859180,\t-0.999995050317933120,\t-0.999995206384019400,\t-0.999995359950117680,\t-0.999995511016227630,\t-0.999995659582348710,\t-0.999995805648480670,\t-0.999995949214623090,\t\n-0.999996090280775740,\t-0.999996228846938060,\t-0.999996364913109840,\t-0.999996498479290730,\t-0.999996629545480410,\t-0.999996758111678430,\t-0.999996884177884570,\t-0.999997007744098500,\t\n-0.999997128810319990,\t-0.999997247376548600,\t-0.999997363442784120,\t-0.999997477009026190,\t-0.999997588075274610,\t-0.999997696641529040,\t-0.999997802707789150,\t-0.999997906274054830,\t\n-0.999998007340325730,\t-0.999998105906601650,\t-0.999998201972882250,\t-0.999998295539167410,\t-0.999998386605456810,\t-0.999998475171750220,\t-0.999998561238047420,\t-0.999998644804348300,\t\n-0.999998725870652530,\t-0.999998804436959880,\t-0.999998880503270350,\t-0.999998954069583500,\t-0.999999025135899330,\t-0.999999093702217620,\t-0.999999159768538040,\t-0.999999223334860690,\t\n-0.999999284401185240,\t-0.999999342967511580,\t-0.999999399033839610,\t-0.999999452600169090,\t-0.999999503666499920,\t-0.999999552232832100,\t-0.999999598299165290,\t-0.999999641865499500,\t\n-0.999999682931834610,\t-0.999999721498170510,\t-0.999999757564507100,\t-0.999999791130844360,\t-0.999999822197182090,\t-0.999999850763520270,\t-0.999999876829858910,\t-0.999999900396197680,\t\n-0.999999921462536800,\t-0.999999940028876160,\t-0.999999956095215640,\t-0.999999969661555240,\t-0.999999980727894870,\t-0.999999989294234610,\t-0.999999995360574270,\t-0.999999998926914050,\t\n-0.999999999993253730,\t-0.999999998559593540,\t-0.999999994625933250,\t-0.999999988192273090,\t-0.999999979258612840,\t-0.999999967824952710,\t-0.999999953891292590,\t-0.999999937457632600,\t\n-0.999999918523972850,\t-0.999999897090313230,\t-0.999999873156653950,\t-0.999999846722994910,\t-0.999999817789336220,\t-0.999999786355678100,\t-0.999999752422020440,\t-0.999999715988363350,\t\n-0.999999677054707050,\t-0.999999635621051540,\t-0.999999591687396940,\t-0.999999545253743350,\t-0.999999496320091000,\t-0.999999444886439770,\t-0.999999390952790000,\t-0.999999334519141690,\t\n-0.999999275585495170,\t-0.999999214151850340,\t-0.999999150218207510,\t-0.999999083784566810,\t-0.999999014850928350,\t-0.999998943417292450,\t-0.999998869483659130,\t-0.999998793050028700,\t\n-0.999998714116401180,\t-0.999998632682777000,\t-0.999998548749156170,\t-0.999998462315538910,\t-0.999998373381925540,\t-0.999998281948316300,\t-0.999998188014711300,\t-0.999998091581110860,\t\n-0.999997992647515100,\t-0.999997891213924460,\t-0.999997787280339060,\t-0.999997680846759220,\t-0.999997571913185170,\t-0.999997460479617130,\t-0.999997346546055540,\t-0.999997230112500520,\t\n-0.999997111178952400,\t-0.999996989745411510,\t-0.999996865811878190,\t-0.999996739378352760,\t-0.999996610444835340,\t-0.999996479011326490,\t-0.999996345077826420,\t-0.999996208644335470,\t\n-0.999996069710853970,\t-0.999995928277382370,\t-0.999995784343920890,\t-0.999995637910470080,\t-0.999995488977030060,\t-0.999995337543601260,\t-0.999995183610184250,\t-0.999995027176779240,\t\n-0.999994868243386570,\t-0.999994706810006790,\t-0.999994542876640360,\t-0.999994376443287370,\t-0.999994207509948610,\t-0.999994036076624290,\t-0.999993862143314760,\t-0.999993685710020670,\t\n-0.999993506776742370,\t-0.999993325343480290,\t-0.999993141410234990,\t-0.999992954977006690,\t-0.999992766043796060,\t-0.999992574610603540,\t-0.999992380677429570,\t-0.999992184244274610,\t\n-0.999991985311139310,\t-0.999991783878023900,\t-0.999991579944929150,\t-0.999991373511855300,\t-0.999991164578803100,\t-0.999990953145773020,\t-0.999990739212765600,\t-0.999990522779781290,\t\n-0.999990303846820640,\t-0.999990082413884210,\t-0.999989858480972550,\t-0.999989632048086330,\t-0.999989403115225990,\t-0.999989171682392210,\t-0.999988937749585420,\t-0.999988701316806280,\t\n-0.999988462384055480,\t-0.999988220951333440,\t-0.999987977018640840,\t-0.999987730585978340,\t-0.999987481653346500,\t-0.999987230220745980,\t-0.999986976288177340,\t-0.999986719855641360,\t\n-0.999986460923138480,\t-0.999986199490669470,\t-0.999985935558234900,\t-0.999985669125835640,\t-0.999985400193472040,\t-0.999985128761145090,\t-0.999984854828855240,\t-0.999984578396603260,\t\n-0.999984299464389830,\t-0.999984018032215700,\t-0.999983734100081460,\t-0.999983447667987970,\t-0.999983158735935800,\t-0.999982867303925720,\t-0.999982573371958510,\t-0.999982276940034830,\t\n-0.999981978008155470,\t-0.999981676576321200,\t-0.999981372644532680,\t-0.999981066212790700,\t-0.999980757281096140,\t-0.999980445849449670,\t-0.999980131917852070,\t-0.999979815486304210,\t\n-0.999979496554806670,\t-0.999979175123360540,\t-0.999978851191966390,\t-0.999978524760625100,\t-0.999978195829337560,\t-0.999977864398104430,\t-0.999977530466926720,\t-0.999977194035805210,\t\n-0.999976855104740660,\t-0.999976513673733970,\t-0.999976169742786030,\t-0.999975823311897600,\t-0.999975474381069710,\t-0.999975122950303110,\t-0.999974769019598700,\t-0.999974412588957250,\t\n-0.999974053658379880,\t-0.999973692227867360,\t-0.999973328297420690,\t-0.999972961867040540,\t-0.999972592936728130,\t-0.999972221506484130,\t-0.999971847576309640,\t-0.999971471146205550,\t\n-0.999971092216172750,\t-0.999970710786212250,\t-0.999970326856324920,\t-0.999969940426511770,\t-0.999969551496773800,\t-0.999969160067111900,\t-0.999968766137527170,\t-0.999968369708020500,\t\n-0.999967970778592900,\t-0.999967569349245360,\t-0.999967165419978990,\t-0.999966758990794570,\t-0.999966350061693320,\t-0.999965938632676240,\t-0.999965524703744220,\t-0.999965108274898480,\t\n-0.999964689346139910,\t-0.999964267917469620,\t-0.999963843988888710,\t-0.999963417560398080,\t-0.999962988631999060,\t-0.999962557203692430,\t-0.999962123275479510,\t-0.999961686847361200,\t\n-0.999961247919338710,\t-0.999960806491413170,\t-0.999960362563585560,\t-0.999959916135857000,\t-0.999959467208228700,\t-0.999959015780701680,\t-0.999958561853277140,\t-0.999958105425956200,\t\n-0.999957646498740080,\t-0.999957185071629780,\t-0.999956721144626530,\t-0.999956254717731420,\t-0.999955785790945680,\t-0.999955314364270540,\t-0.999954840437707100,\t-0.999954364011256480,\t\n-0.999953885084920000,\t-0.999953403658698890,\t-0.999952919732594150,\t-0.999952433306607210,\t-0.999951944380739090,\t-0.999951452954991220,\t-0.999950959029364590,\t-0.999950462603860670,\t\n-0.999949963678480550,\t-0.999949462253225560,\t-0.999948958328096830,\t-0.999948451903095780,\t-0.999947942978223540,\t-0.999947431553481540,\t-0.999946917628870890,\t-0.999946401204392930,\t\n-0.999945882280048990,\t-0.999945360855840400,\t-0.999944836931768390,\t-0.999944310507834170,\t-0.999943781584039290,\t-0.999943250160384990,\t-0.999942716236872480,\t-0.999942179813503200,\t\n-0.999941640890278480,\t-0.999941099467199670,\t-0.999940555544268080,\t-0.999940009121485060,\t-0.999939460198852050,\t-0.999938908776370480,\t-0.999938354854041590,\t-0.999937798431866810,\t\n-0.999937239509847480,\t-0.999936678087985030,\t-0.999936114166281030,\t-0.999935547744736590,\t-0.999934978823353360,\t-0.999934407402132690,\t-0.999933833481076010,\t-0.999933257060184770,\t\n-0.999932678139460300,\t-0.999932096718904150,\t-0.999931512798517770,\t-0.999930926378302610,\t-0.999930337458260210,\t-0.999929746038391910,\t-0.999929152118699260,\t-0.999928555699183710,\t\n-0.999927956779846800,\t-0.999927355360689880,\t-0.999926751441714720,\t-0.999926145022922650,\t-0.999925536104315120,\t-0.999924924685893890,\t-0.999924310767660310,\t-0.999923694349615920,\t\n-0.999923075431762290,\t-0.999922454014100960,\t-0.999921830096633490,\t-0.999921203679361550,\t-0.999920574762286460,\t-0.999919943345410010,\t-0.999919309428733750,\t-0.999918673012259120,\t\n-0.999918034095987780,\t-0.999917392679921520,\t-0.999916748764061670,\t-0.999916102348409890,\t-0.999915453432967950,\t-0.999914802017737410,\t-0.999914148102719720,\t-0.999913491687916770,\t\n-0.999912832773330100,\t-0.999912171358961270,\t-0.999911507444812050,\t-0.999910841030884120,\t-0.999910172117179030,\t-0.999909500703698550,\t-0.999908826790444240,\t-0.999908150377417980,\t\n-0.999907471464621220,\t-0.999906790052055850,\t-0.999906106139723530,\t-0.999905419727625810,\t-0.999904730815764700,\t-0.999904039404141740,\t-0.999903345492758610,\t-0.999902649081617190,\t\n-0.999901950170719030,\t-0.999901248760066140,\t-0.999900544849660070,\t-0.999899838439502590,\t-0.999899129529595590,\t-0.999898418119940740,\t-0.999897704210539810,\t-0.999896987801394690,\t\n-0.999896268892507050,\t-0.999895547483878660,\t-0.999894823575511520,\t-0.999894097167407290,\t-0.999893368259567870,\t-0.999892636851994920,\t-0.999891902944690440,\t-0.999891166537656200,\t\n-0.999890427630894090,\t-0.999889686224405880,\t-0.999888942318193360,\t-0.999888195912258640,\t-0.999887447006603370,\t-0.999886695601229450,\t-0.999885941696138760,\t-0.999885185291333300,\t\n-0.999884426386814850,\t-0.999883664982585300,\t-0.999882901078646640,\t-0.999882134675000640,\t-0.999881365771649430,\t-0.999880594368594780,\t-0.999879820465838560,\t-0.999879044063382790,\t\n-0.999878265161229460,\t-0.999877483759380570,\t-0.999876699857837780,\t-0.999875913456603320,\t-0.999875124555679170,\t-0.999874333155067130,\t-0.999873539254769180,\t-0.999872742854787440,\t\n-0.999871943955123910,\t-0.999871142555780470,\t-0.999870338656759120,\t-0.999869532258061970,\t-0.999868723359691010,\t-0.999867911961648260,\t-0.999867098063935700,\t-0.999866281666555450,\t\n-0.999865462769509380,\t-0.999864641372799730,\t-0.999863817476428500,\t-0.999862991080397670,\t-0.999862162184709360,\t-0.999861330789365680,\t-0.999860496894368620,\t-0.999859660499720420,\t\n-0.999858821605422940,\t-0.999857980211478540,\t-0.999857136317889080,\t-0.999856289924656800,\t-0.999855441031783810,\t-0.999854589639272210,\t-0.999853735747124220,\t-0.999852879355341840,\t\n-0.999852020463927180,\t-0.999851159072882580,\t-0.999850295182210020,\t-0.999849428791911740,\t-0.999848559901989840,\t-0.999847688512446650,\t-0.999846814623284170,\t-0.999845938234504630,\t\n-0.999845059346110340,\t-0.999844177958103320,\t-0.999843294070485890,\t-0.999842407683260160,\t-0.999841518796428460,\t-0.999840627409993020,\t-0.999839733523955940,\t-0.999838837138319560,\t\n-0.999837938253086090,\t-0.999837036868257760,\t-0.999836132983836780,\t-0.999835226599825600,\t-0.999834317716226220,\t-0.999833406333041070,\t-0.999832492450272500,\t-0.999831576067922610,\t\n-0.999830657185993840,\t-0.999829735804488420,\t-0.999828811923408560,\t-0.999827885542756810,\t-0.999826956662535290,\t-0.999826025282746330,\t-0.999825091403392370,\t-0.999824155024475640,\t\n-0.999823216145998560,\t-0.999822274767963480,\t-0.999821330890372620,\t-0.999820384513228520,\t-0.999819435636533420,\t-0.999818484260289630,\t-0.999817530384499720,\t-0.999816574009166010,\t\n-0.999815615134290850,\t-0.999814653759876660,\t-0.999813689885925780,\t-0.999812723512440770,\t-0.999811754639423840,\t-0.999810783266877670,\t-0.999809809394804460,\t-0.999808833023206670,\t\n-0.999807854152086840,\t-0.999806872781447420,\t-0.999805888911290740,\t-0.999804902541619470,\t-0.999803913672435820,\t-0.999802922303742460,\t-0.999801928435541720,\t-0.999800932067836160,\t\n-0.999799933200628320,\t-0.999798931833920660,\t-0.999797927967715610,\t-0.999796921602015830,\t-0.999795912736823670,\t-0.999794901372141780,\t-0.999793887507972600,\t-0.999792871144318700,\t\n-0.999791852281182610,\t-0.999790830918566910,\t-0.999789807056474130,\t-0.999788780694906840,\t-0.999787751833867590,\t-0.999786720473359040,\t-0.999785686613383630,\t-0.999784650253943920,\t\n-0.999783611395042680,\t-0.999782570036682360,\t-0.999781526178865730,\t-0.999780479821595120,\t-0.999779430964873430,\t-0.999778379608703190,\t-0.999777325753086870,\t-0.999776269398027330,\t\n-0.999775210543527030,\t-0.999774149189588850,\t-0.999773085336215120,\t-0.999772018983408840,\t-0.999770950131172450,\t-0.999769878779508630,\t-0.999768804928420130,\t-0.999767728577909740,\t\n-0.999766649727979910,\t-0.999765568378633510,\t-0.999764484529873100,\t-0.999763398181701570,\t-0.999762309334121470,\t-0.999761217987135690,\t-0.999760124140746780,\t-0.999759027794957620,\t\n-0.999757928949770890,\t-0.999756827605189360,\t-0.999755723761215690,\t-0.999754617417852760,\t-0.999753508575103260,\t-0.999752397232969940,\t-0.999751283391455690,\t-0.999750167050563300,\t\n-0.999749048210295420,\t-0.999747926870654830,\t-0.999746803031644540,\t-0.999745676693267190,\t-0.999744547855525690,\t-0.999743416518422800,\t-0.999742282681961410,\t-0.999741146346144300,\t\n-0.999740007510974250,\t-0.999738866176454240,\t-0.999737722342587070,\t-0.999736576009375600,\t-0.999735427176822730,\t-0.999734275844931240,\t-0.999733122013704010,\t-0.999731965683144040,\t\n-0.999730806853254110,\t-0.999729645524037200,\t-0.999728481695496220,\t-0.999727315367633930,\t-0.999726146540453440,\t-0.999724975213957530,\t-0.999723801388149200,\t-0.999722625063031440,\t\n-0.999721446238607040,\t-0.999720264914878980,\t-0.999719081091850370,\t-0.999717894769524000,\t-0.999716705947902850,\t-0.999715514626990040,\t-0.999714320806788350,\t-0.999713124487300870,\t\n-0.999711925668530620,\t-0.999710724350480580,\t-0.999709520533153650,\t-0.999708314216552930,\t-0.999707105400681530,\t-0.999705894085542220,\t-0.999704680271138240,\t-0.999703463957472670,\t\n-0.999702245144548310,\t-0.999701023832368360,\t-0.999699800020935840,\t-0.999698573710253830,\t-0.999697344900325360,\t-0.999696113591153620,\t-0.999694879782741520,\t-0.999693643475092260,\t\n-0.999692404668208860,\t-0.999691163362094400,\t-0.999689919556752130,\t-0.999688673252185020,\t-0.999687424448396200,\t-0.999686173145388880,\t-0.999684919343166060,\t-0.999683663041731060,\t\n-0.999682404241086790,\t-0.999681142941236560,\t-0.999679879142183370,\t-0.999678612843930670,\t-0.999677344046481230,\t-0.999676072749838610,\t-0.999674798954005680,\t-0.999673522658985790,\t\n-0.999672243864782150,\t-0.999670962571397870,\t-0.999669678778836170,\t-0.999668392487100270,\t-0.999667103696193380,\t-0.999665812406118850,\t-0.999664518616879660,\t-0.999663222328479150,\t\n-0.999661923540920650,\t-0.999660622254207380,\t-0.999659318468342440,\t-0.999658012183329280,\t-0.999656703399171120,\t-0.999655392115871180,\t-0.999654078333432670,\t-0.999652762051859050,\t\n-0.999651443271153520,\t-0.999650121991319420,\t-0.999648798212359970,\t-0.999647471934278500,\t-0.999646143157078340,\t-0.999644811880762930,\t-0.999643478105335380,\t-0.999642141830799140,\t\n-0.999640803057157630,\t-0.999639461784414100,\t-0.999638118012571850,\t-0.999636771741634340,\t-0.999635422971604900,\t-0.999634071702486860,\t-0.999632717934283650,\t-0.999631361666998730,\t\n-0.999630002900635310,\t-0.999628641635196940,\t-0.999627277870686950,\t-0.999625911607108790,\t-0.999624542844465780,\t-0.999623171582761480,\t-0.999621797821999230,\t-0.999620421562182560,\t\n-0.999619042803314710,\t-0.999617661545399330,\t-0.999616277788439760,\t-0.999614891532439540,\t-0.999613502777402020,\t-0.999612111523330850,\t-0.999610717770229360,\t-0.999609321518101000,\t\n-0.999607922766949430,\t-0.999606521516777980,\t-0.999605117767590310,\t-0.999603711519389760,\t-0.999602302772179980,\t-0.999600891525964430,\t-0.999599477780746650,\t-0.999598061536530190,\t\n-0.999596642793318610,\t-0.999595221551115350,\t-0.999593797809924080,\t-0.999592371569748340,\t-0.999590942830591580,\t-0.999589511592457570,\t-0.999588077855349750,\t-0.999586641619271690,\t\n-0.999585202884227030,\t-0.999583761650219450,\t-0.999582317917252380,\t-0.999580871685329500,\t-0.999579422954454460,\t-0.999577971724630920,\t-0.999576517995862450,\t-0.999575061768152580,\t\n-0.999573603041505110,\t-0.999572141815923690,\t-0.999570678091411870,\t-0.999569211867973430,\t-0.999567743145611810,\t-0.999566271924330900,\t-0.999564798204134350,\t-0.999563321985025840,\t\n-0.999561843267008920,\t-0.999560362050087470,\t-0.999558878334265040,\t-0.999557392119545530,\t-0.999555903405932370,\t-0.999554412193429550,\t-0.999552918482040750,\t-0.999551422271769630,\t\n-0.999549923562619960,\t-0.999548422354595400,\t-0.999546918647699840,\t-0.999545412441936950,\t-0.999543903737310610,\t-0.999542392533824490,\t-0.999540878831482350,\t-0.999539362630287980,\t\n-0.999537843930245250,\t-0.999536322731357950,\t-0.999534799033629740,\t-0.999533272837064610,\t-0.999531744141666230,\t-0.999530212947438600,\t-0.999528679254385380,\t-0.999527143062510450,\t\n-0.999525604371817700,\t-0.999524063182310910,\t-0.999522519493993960,\t-0.999520973306870730,\t-0.999519424620945010,\t-0.999517873436220780,\t-0.999516319752701940,\t-0.999514763570392150,\t\n-0.999513204889295510,\t-0.999511643709415920,\t-0.999510080030757140,\t-0.999508513853323290,\t-0.999506945177118020,\t-0.999505374002145450,\t-0.999503800328409350,\t-0.999502224155913830,\t\n-0.999500645484662780,\t-0.999499064314660070,\t-0.999497480645909710,\t-0.999495894478415690,\t-0.999494305812181900,\t-0.999492714647212340,\t-0.999491120983511010,\t-0.999489524821081890,\t\n-0.999487926159928870,\t-0.999486325000056080,\t-0.999484721341467490,\t-0.999483115184167100,\t-0.999481506528158930,\t-0.999479895373447060,\t-0.999478281720035390,\t-0.999476665567927910,\t\n-0.999475046917128850,\t-0.999473425767642200,\t-0.999471802119472060,\t-0.999470175972622330,\t-0.999468547327097110,\t-0.999466916182900620,\t-0.999465282540036750,\t-0.999463646398509710,\t\n-0.999462007758323610,\t-0.999460366619482340,\t-0.999458722981990340,\t-0.999457076845851390,\t-0.999455428211069810,\t-0.999453777077649710,\t-0.999452123445595090,\t-0.999450467314910160,\t\n-0.999448808685599150,\t-0.999447147557666060,\t-0.999445483931115100,\t-0.999443817805950370,\t-0.999442149182176220,\t-0.999440478059796520,\t-0.999438804438815830,\t-0.999437128319238030,\t\n-0.999435449701067350,\t-0.999433768584308100,\t-0.999432084968964520,\t-0.999430398855040590,\t-0.999428710242540760,\t-0.999427019131469140,\t-0.999425325521829940,\t-0.999423629413627390,\t\n-0.999421930806865810,\t-0.999420229701549420,\t-0.999418526097682450,\t-0.999416819995269210,\t-0.999415111394313830,\t-0.999413400294820730,\t-0.999411686696794140,\t-0.999409970600238280,\t\n-0.999408252005157480,\t-0.999406530911556180,\t-0.999404807319438370,\t-0.999403081228808720,\t-0.999401352639671230,\t-0.999399621552030440,\t-0.999397887965890570,\t-0.999396151881255970,\t\n-0.999394413298131060,\t-0.999392672216520060,\t-0.999390928636427310,\t-0.999389182557857360,\t-0.999387433980814420,\t-0.999385682905302830,\t-0.999383929331327030,\t-0.999382173258891560,\t\n-0.999380414688000540,\t-0.999378653618658410,\t-0.999376890050869830,\t-0.999375123984638900,\t-0.999373355419970190,\t-0.999371584356868130,\t-0.999369810795337040,\t-0.999368034735381380,\t\n-0.999366256177005810,\t-0.999364475120214420,\t-0.999362691565012010,\t-0.999360905511402780,\t-0.999359116959391280,\t-0.999357325908981960,\t-0.999355532360179380,\t-0.999353736312987960,\t\n-0.999351937767412160,\t-0.999350136723456520,\t-0.999348333181125590,\t-0.999346527140423820,\t-0.999344718601355760,\t-0.999342907563925850,\t-0.999341094028138640,\t-0.999339277993998800,\t\n-0.999337459461510650,\t-0.999335638430678960,\t-0.999333814901508080,\t-0.999331988874002760,\t-0.999330160348167350,\t-0.999328329324006610,\t-0.999326495801525110,\t-0.999324659780727260,\t\n-0.999322821261617760,\t-0.999320980244201240,\t-0.999319136728482270,\t-0.999317290714465510,\t-0.999315442202155510,\t-0.999313591191556830,\t-0.999311737682674230,\t-0.999309881675512270,\t\n-0.999308023170075610,\t-0.999306162166368920,\t-0.999304298664396850,\t-0.999302432664163960,\t-0.999300564165675030,\t-0.999298693168934600,\t-0.999296819673947570,\t-0.999294943680718360,\t\n-0.999293065189251870,\t-0.999291184199552760,\t-0.999289300711625690,\t-0.999287414725475220,\t-0.999285526241106340,\t-0.999283635258523590,\t-0.999281741777731880,\t-0.999279845798735630,\t\n-0.999277947321539850,\t-0.999276046346149190,\t-0.999274142872568440,\t-0.999272236900802360,\t-0.999270328430855610,\t-0.999268417462733090,\t-0.999266503996439570,\t-0.999264588031979710,\t\n-0.999262669569358390,\t-0.999260748608580500,\t-0.999258825149650590,\t-0.999256899192573660,\t-0.999254970737354590,\t-0.999253039783997930,\t-0.999251106332508800,\t-0.999249170382891850,\t\n-0.999247231935151970,\t-0.999245290989294040,\t-0.999243347545322850,\t-0.999241401603243260,\t-0.999239453163060290,\t-0.999237502224778580,\t-0.999235548788403150,\t-0.999233592853938870,\t\n-0.999231634421390510,\t-0.999229673490763190,\t-0.999227710062061570,\t-0.999225744135290750,\t-0.999223775710455510,\t-0.999221804787560950,\t-0.999219831366611740,\t-0.999217855447613100,\t\n-0.999215877030569690,\t-0.999213896115486610,\t-0.999211912702368870,\t-0.999209926791221340,\t-0.999207938382048910,\t-0.999205947474856690,\t-0.999203954069649570,\t-0.999201958166432540,\t\n-0.999199959765210700,\t-0.999197958865988940,\t-0.999195955468772270,\t-0.999193949573565670,\t-0.999191941180374240,\t-0.999189930289202890,\t-0.999187916900056820,\t-0.999185901012940910,\t\n-0.999183882627860290,\t-0.999181861744819930,\t-0.999179838363824850,\t-0.999177812484880250,\t-0.999175784107991130,\t-0.999173753233162490,\t-0.999171719860399540,\t-0.999169683989707180,\t\n-0.999167645621090730,\t-0.999165604754555070,\t-0.999163561390105540,\t-0.999161515527747010,\t-0.999159467167484610,\t-0.999157416309323640,\t-0.999155362953269120,\t-0.999153307099326260,\t\n-0.999151248747500050,\t-0.999149187897795720,\t-0.999147124550218370,\t-0.999145058704773330,\t-0.999142990361465590,\t-0.999140919520300370,\t-0.999138846181282900,\t-0.999136770344418170,\t\n-0.999134692009711610,\t-0.999132611177168340,\t-0.999130527846793570,\t-0.999128442018592410,\t-0.999126353692570190,\t-0.999124262868732020,\t-0.999122169547083330,\t-0.999120073727629120,\t\n-0.999117975410374730,\t-0.999115874595325360,\t-0.999113771282486350,\t-0.999111665471862920,\t-0.999109557163460280,\t-0.999107446357283880,\t-0.999105333053338710,\t-0.999103217251630320,\t\n-0.999101098952163810,\t-0.999098978154944530,\t-0.999096854859977900,\t-0.999094729067269150,\t-0.999092600776823490,\t-0.999090469988646370,\t-0.999088336702743000,\t-0.999086200919118930,\t\n-0.999084062637779270,\t-0.999081921858729460,\t-0.999079778581974830,\t-0.999077632807520710,\t-0.999075484535372650,\t-0.999073333765535750,\t-0.999071180498015580,\t-0.999069024732817450,\t\n-0.999066866469946690,\t-0.999064705709408860,\t-0.999062542451209290,\t-0.999060376695353300,\t-0.999058208441846340,\t-0.999056037690693950,\t-0.999053864441901360,\t-0.999051688695474120,\t\n-0.999049510451417770,\t-0.999047329709737530,\t-0.999045146470439070,\t-0.999042960733527610,\t-0.999040772499008910,\t-0.999038581766888200,\t-0.999036388537171030,\t-0.999034192809862830,\t\n-0.999031994584969270,\t-0.999029793862495570,\t-0.999027590642447500,\t-0.999025384924830510,\t-0.999023176709649910,\t-0.999020965996911480,\t-0.999018752786620560,\t-0.999016537078782800,\t\n-0.999014318873403750,\t-0.999012098170488750,\t-0.999009874970043680,\t-0.999007649272073750,\t-0.999005421076584850,\t-0.999003190383582320,\t-0.999000957193071800,\t-0.998998721505058970,\t\n-0.998996483319549270,\t-0.998994242636548350,\t-0.998991999456061870,\t-0.998989753778095400,\t-0.998987505602654480,\t-0.998985254929744880,\t-0.998983001759372050,\t-0.998980746091541860,\t\n-0.998978487926259650,\t-0.998976227263531300,\t-0.998973964103362370,\t-0.998971698445758500,\t-0.998969430290725380,\t-0.998967159638268760,\t-0.998964886488394210,\t-0.998962610841107380,\t\n-0.998960332696414150,\t-0.998958052054319980,\t-0.998955768914830730,\t-0.998953483277951970,\t-0.998951195143689570,\t-0.998948904512049210,\t-0.998946611383036640,\t-0.998944315756657430,\t\n-0.998942017632917460,\t-0.998939717011822490,\t-0.998937413893378200,\t-0.998935108277590360,\t-0.998932800164464730,\t-0.998930489554007090,\t-0.998928176446223340,\t-0.998925860841119010,\t\n-0.998923542738700100,\t-0.998921222138972280,\t-0.998918899041941530,\t-0.998916573447613420,\t-0.998914245355993930,\t-0.998911914767088850,\t-0.998909581680903940,\t-0.998907246097445080,\t\n-0.998904908016718050,\t-0.998902567438728850,\t-0.998900224363483140,\t-0.998897878790986900,\t-0.998895530721246040,\t-0.998893180154266200,\t-0.998890827090053500,\t-0.998888471528613820,\t\n-0.998886113469952820,\t-0.998883752914076610,\t-0.998881389860991060,\t-0.998879024310701970,\t-0.998876656263215310,\t-0.998874285718536980,\t-0.998871912676672970,\t-0.998869537137629270,\t\n-0.998867159101411660,\t-0.998864778568026130,\t-0.998862395537478690,\t-0.998860010009775200,\t-0.998857621984921670,\t-0.998855231462924210,\t-0.998852838443788580,\t-0.998850442927520900,\t\n-0.998848044914127040,\t-0.998845644403613120,\t-0.998843241395985130,\t-0.998840835891248950,\t-0.998838427889410800,\t-0.998836017390476450,\t-0.998833604394452120,\t-0.998831188901343810,\t\n-0.998828770911157520,\t-0.998826350423899220,\t-0.998823927439575040,\t-0.998821501958191190,\t-0.998819073979753450,\t-0.998816643504268130,\t-0.998814210531741130,\t-0.998811775062178550,\t\n-0.998809337095586610,\t-0.998806896631971310,\t-0.998804453671338850,\t-0.998802008213695140,\t-0.998799560259046480,\t-0.998797109807398890,\t-0.998794656858758460,\t-0.998792201413131520,\t\n-0.998789743470523960,\t-0.998787283030942110,\t-0.998784820094392070,\t-0.998782354660879950,\t-0.998779886730411960,\t-0.998777416302994210,\t-0.998774943378632930,\t-0.998772467957334320,\t\n-0.998769990039104600,\t-0.998767509623949780,\t-0.998765026711876280,\t-0.998762541302890110,\t-0.998760053396997690,\t-0.998757562994205150,\t-0.998755070094518580,\t-0.998752574697944430,\t\n-0.998750076804488800,\t-0.998747576414158010,\t-0.998745073526958290,\t-0.998742568142895860,\t-0.998740060261977040,\t-0.998737549884208040,\t-0.998735037009595210,\t-0.998732521638144740,\t\n-0.998730003769862980,\t-0.998727483404756140,\t-0.998724960542830660,\t-0.998722435184092760,\t-0.998719907328548870,\t-0.998717376976205110,\t-0.998714844127067900,\t-0.998712308781143590,\t\n-0.998709770938438600,\t-0.998707230598959050,\t-0.998704687762711480,\t-0.998702142429702230,\t-0.998699594599937620,\t-0.998697044273423980,\t-0.998694491450167750,\t-0.998691936130175260,\t\n-0.998689378313452950,\t-0.998686818000007250,\t-0.998684255189844490,\t-0.998681689882971010,\t-0.998679122079393360,\t-0.998676551779117960,\t-0.998673978982151040,\t-0.998671403688499270,\t\n-0.998668825898168970,\t-0.998666245611166680,\t-0.998663662827498740,\t-0.998661077547171590,\t-0.998658489770191780,\t-0.998655899496565750,\t-0.998653306726299930,\t-0.998650711459400870,\t\n-0.998648113695875030,\t-0.998645513435728940,\t-0.998642910678969040,\t-0.998640305425601780,\t-0.998637697675633930,\t-0.998635087429071700,\t-0.998632474685921760,\t-0.998629859446190760,\t\n-0.998627241709884930,\t-0.998624621477011140,\t-0.998621998747575730,\t-0.998619373521585360,\t-0.998616745799046470,\t-0.998614115579965820,\t-0.998611482864349860,\t-0.998608847652205140,\t\n-0.998606209943538330,\t-0.998603569738356070,\t-0.998600927036664810,\t-0.998598281838471210,\t-0.998595634143781940,\t-0.998592983952603650,\t-0.998590331264942790,\t-0.998587676080806120,\t\n-0.998585018400200310,\t-0.998582358223131910,\t-0.998579695549607680,\t-0.998577030379634190,\t-0.998574362713218090,\t-0.998571692550366040,\t-0.998569019891084820,\t-0.998566344735381080,\t\n-0.998563667083261500,\t-0.998560986934732610,\t-0.998558304289801410,\t-0.998555619148474350,\t-0.998552931510758300,\t-0.998550241376659820,\t-0.998547548746185900,\t-0.998544853619342980,\t\n-0.998542155996137940,\t-0.998539455876577550,\t-0.998536753260668600,\t-0.998534048148417620,\t-0.998531340539831610,\t-0.998528630434917130,\t-0.998525917833681160,\t-0.998523202736130490,\t\n-0.998520485142271650,\t-0.998517765052111650,\t-0.998515042465657250,\t-0.998512317382915350,\t-0.998509589803892480,\t-0.998506859728595760,\t-0.998504127157031850,\t-0.998501392089207630,\t\n-0.998498654525129870,\t-0.998495914464805570,\t-0.998493171908241380,\t-0.998490426855444310,\t-0.998487679306421240,\t-0.998484929261178930,\t-0.998482176719724280,\t-0.998479421682064160,\t\n-0.998476664148205460,\t-0.998473904118155180,\t-0.998471141591920070,\t-0.998468376569507270,\t-0.998465609050923300,\t-0.998462839036175500,\t-0.998460066525270530,\t-0.998457291518215380,\t\n-0.998454514015016950,\t-0.998451734015682320,\t-0.998448951520218290,\t-0.998446166528631940,\t-0.998443379040930170,\t-0.998440589057119960,\t-0.998437796577208210,\t-0.998435001601202020,\t\n-0.998432204129108380,\t-0.998429404160934180,\t-0.998426601696686400,\t-0.998423796736372160,\t-0.998420989279998450,\t-0.998418179327572260,\t-0.998415366879100710,\t-0.998412551934590550,\t\n-0.998409734494049130,\t-0.998406914557483430,\t-0.998404092124900330,\t-0.998401267196307060,\t-0.998398439771710610,\t-0.998395609851118080,\t-0.998392777434536470,\t-0.998389942521973000,\t\n-0.998387105113434650,\t-0.998384265208928530,\t-0.998381422808461650,\t-0.998378577912041320,\t-0.998375730519674540,\t-0.998372880631368420,\t-0.998370028247130060,\t-0.998367173366966680,\t\n-0.998364315990885380,\t-0.998361456118893260,\t-0.998358593750997450,\t-0.998355728887205250,\t-0.998352861527523670,\t-0.998349991671960040,\t-0.998347119320521340,\t-0.998344244473214790,\t\n-0.998341367130047730,\t-0.998338487291027140,\t-0.998335604956160470,\t-0.998332720125454710,\t-0.998329832798917180,\t-0.998326942976555000,\t-0.998324050658375480,\t-0.998321155844385970,\t\n-0.998318258534593440,\t-0.998315358729005230,\t-0.998312456427628780,\t-0.998309551630471080,\t-0.998306644337539460,\t-0.998303734548841360,\t-0.998300822264383770,\t-0.998297907484174240,\t\n-0.998294990208219880,\t-0.998292070436528120,\t-0.998289148169106080,\t-0.998286223405961290,\t-0.998283296147100870,\t-0.998280366392532150,\t-0.998277434142262670,\t-0.998274499396299530,\t\n-0.998271562154650070,\t-0.998268622417321730,\t-0.998265680184321940,\t-0.998262735455657910,\t-0.998259788231336990,\t-0.998256838511366600,\t-0.998253886295754180,\t-0.998250931584506950,\t\n-0.998247974377632460,\t-0.998245014675138040,\t-0.998242052477031020,\t-0.998239087783318930,\t-0.998236120594009120,\t-0.998233150909108910,\t-0.998230178728625960,\t-0.998227204052567480,\t\n-0.998224226880941030,\t-0.998221247213754050,\t-0.998218265051013850,\t-0.998215280392728000,\t-0.998212293238904040,\t-0.998209303589549290,\t-0.998206311444671310,\t-0.998203316804277540,\t\n-0.998200319668375410,\t-0.998197320036972590,\t-0.998194317910076400,\t-0.998191313287694500,\t-0.998188306169834230,\t-0.998185296556503230,\t-0.998182284447708960,\t-0.998179269843458950,\t\n-0.998176252743760870,\t-0.998173233148622050,\t-0.998170211058050260,\t-0.998167186472052830,\t-0.998164159390637520,\t-0.998161129813811780,\t-0.998158097741583260,\t-0.998155063173959410,\t\n-0.998152026110948000,\t-0.998148986552556460,\t-0.998145944498792460,\t-0.998142899949663540,\t-0.998139852905177480,\t-0.998136803365341720,\t-0.998133751330164020,\t-0.998130696799651830,\t\n-0.998127639773813020,\t-0.998124580252655050,\t-0.998121518236185670,\t-0.998118453724412440,\t-0.998115386717343120,\t-0.998112317214985280,\t-0.998109245217346670,\t-0.998106170724434970,\t\n-0.998103093736257830,\t-0.998100014252822910,\t-0.998096932274137980,\t-0.998093847800210820,\t-0.998090760831048970,\t-0.998087671366660210,\t-0.998084579407052200,\t-0.998081484952232810,\t\n-0.998078388002209720,\t-0.998075288556990680,\t-0.998072186616583370,\t-0.998069082180995660,\t-0.998065975250235220,\t-0.998062865824309810,\t-0.998059753903227210,\t-0.998056639486995300,\t\n-0.998053522575621740,\t-0.998050403169114420,\t-0.998047281267481100,\t-0.998044156870729450,\t-0.998041029978867570,\t-0.998037900591903000,\t-0.998034768709843760,\t-0.998031634332697480,\t\n-0.998028497460472290,\t-0.998025358093175720,\t-0.998022216230815770,\t-0.998019071873400330,\t-0.998015925020937170,\t-0.998012775673434270,\t-0.998009623830899420,\t-0.998006469493340380,\t\n-0.998003312660765250,\t-0.998000153333181930,\t-0.997996991510598060,\t-0.997993827193021880,\t-0.997990660380461030,\t-0.997987491072923500,\t-0.997984319270417310,\t-0.997981144972950320,\t\n-0.997977968180530420,\t-0.997974788893165600,\t-0.997971607110863860,\t-0.997968422833633070,\t-0.997965236061481240,\t-0.997962046794416360,\t-0.997958855032446300,\t-0.997955660775579180,\t\n-0.997952464023822760,\t-0.997949264777185260,\t-0.997946063035674680,\t-0.997942858799298890,\t-0.997939652068065900,\t-0.997936442841983800,\t-0.997933231121060690,\t-0.997930016905304360,\t\n-0.997926800194723020,\t-0.997923580989324770,\t-0.997920359289117490,\t-0.997917135094109290,\t-0.997913908404308380,\t-0.997910679219722540,\t-0.997907447540360090,\t-0.997904213366229030,\t\n-0.997900976697337460,\t-0.997897737533693370,\t-0.997894495875304990,\t-0.997891251722180290,\t-0.997888005074327510,\t-0.997884755931754740,\t-0.997881504294470090,\t-0.997878250162481660,\t\n-0.997874993535797670,\t-0.997871734414426110,\t-0.997868472798375210,\t-0.997865208687653160,\t-0.997861942082268080,\t-0.997858672982228190,\t-0.997855401387541590,\t-0.997852127298216480,\t\n-0.997848850714260990,\t-0.997845571635683440,\t-0.997842290062491920,\t-0.997839005994694770,\t-0.997835719432299980,\t-0.997832430375315990,\t-0.997829138823750910,\t-0.997825844777612940,\t\n-0.997822548236910410,\t-0.997819249201651440,\t-0.997815947671844450,\t-0.997812643647497440,\t-0.997809337128618970,\t-0.997806028115217130,\t-0.997802716607300130,\t-0.997799402604876430,\t\n-0.997796086107954230,\t-0.997792767116541750,\t-0.997789445630647310,\t-0.997786121650279360,\t-0.997782795175446100,\t-0.997779466206155760,\t-0.997776134742416890,\t-0.997772800784237580,\t\n-0.997769464331626280,\t-0.997766125384591420,\t-0.997762783943141110,\t-0.997759440007283890,\t-0.997756093577028100,\t-0.997752744652382060,\t-0.997749393233354210,\t-0.997746039319952760,\t\n-0.997742682912186260,\t-0.997739324010063160,\t-0.997735962613591650,\t-0.997732598722780200,\t-0.997729232337637330,\t-0.997725863458171380,\t-0.997722492084390680,\t-0.997719118216303770,\t\n-0.997715741853919200,\t-0.997712362997245080,\t-0.997708981646290180,\t-0.997705597801062830,\t-0.997702211461571450,\t-0.997698822627824500,\t-0.997695431299830630,\t-0.997692037477598050,\t\n-0.997688641161135430,\t-0.997685242350451200,\t-0.997681841045553910,\t-0.997678437246451890,\t-0.997675030953153910,\t-0.997671622165668290,\t-0.997668210884003590,\t-0.997664797108168470,\t\n-0.997661380838171240,\t-0.997657962074020580,\t-0.997654540815725130,\t-0.997651117063293240,\t-0.997647690816733550,\t-0.997644262076054610,\t-0.997640830841264980,\t-0.997637397112373430,\t\n-0.997633960889388270,\t-0.997630522172318180,\t-0.997627080961171920,\t-0.997623637255957820,\t-0.997620191056684760,\t-0.997616742363361060,\t-0.997613291175995620,\t-0.997609837494596970,\t\n-0.997606381319173670,\t-0.997602922649734380,\t-0.997599461486287860,\t-0.997595997828842670,\t-0.997592531677407470,\t-0.997589063031991020,\t-0.997585591892601760,\t-0.997582118259248580,\t\n-0.997578642131940140,\t-0.997575163510685090,\t-0.997571682395492100,\t-0.997568198786369930,\t-0.997564712683327360,\t-0.997561224086372820,\t-0.997557732995515310,\t-0.997554239410763490,\t\n-0.997550743332126120,\t-0.997547244759611760,\t-0.997543743693229400,\t-0.997540240132987590,\t-0.997536734078895200,\t-0.997533225530961020,\t-0.997529714489193810,\t-0.997526200953602230,\t\n-0.997522684924195160,\t-0.997519166400981370,\t-0.997515645383969750,\t-0.997512121873168960,\t-0.997508595868587870,\t-0.997505067370235250,\t-0.997501536378120000,\t-0.997498002892250880,\t\n-0.997494466912636770,\t-0.997490928439286550,\t-0.997487387472209000,\t-0.997483844011412880,\t-0.997480298056907190,\t-0.997476749608700810,\t-0.997473198666802510,\t-0.997469645231221280,\t\n-0.997466089301965900,\t-0.997462530879045240,\t-0.997458969962468300,\t-0.997455406552243960,\t-0.997451840648381110,\t-0.997448272250888610,\t-0.997444701359775480,\t-0.997441127975050470,\t\n-0.997437552096722800,\t-0.997433973724801140,\t-0.997430392859294580,\t-0.997426809500212120,\t-0.997423223647562530,\t-0.997419635301354910,\t-0.997416044461598260,\t-0.997412451128301460,\t\n-0.997408855301473500,\t-0.997405256981123370,\t-0.997401656167260180,\t-0.997398052859892800,\t-0.997394447059030350,\t-0.997390838764681710,\t-0.997387227976856080,\t-0.997383614695562250,\t\n-0.997379998920809420,\t-0.997376380652606590,\t-0.997372759890962860,\t-0.997369136635887220,\t-0.997365510887388780,\t-0.997361882645476430,\t-0.997358251910159480,\t-0.997354618681446920,\t\n-0.997350982959347760,\t-0.997347344743871100,\t-0.997343704035026150,\t-0.997340060832821900,\t-0.997336415137267560,\t-0.997332766948372140,\t-0.997329116266144730,\t-0.997325463090594670,\t\n-0.997321807421730820,\t-0.997318149259562530,\t-0.997314488604098880,\t-0.997310825455348990,\t-0.997307159813321960,\t-0.997303491678027120,\t-0.997299821049473570,\t-0.997296147927670410,\t\n-0.997292472312626970,\t-0.997288794204352240,\t-0.997285113602855540,\t-0.997281430508146110,\t-0.997277744920233020,\t-0.997274056839125620,\t-0.997270366264833120,\t-0.997266673197364620,\t\n-0.997262977636729550,\t-0.997259279582936920,\t-0.997255579035996150,\t-0.997251875995916470,\t-0.997248170462707080,\t-0.997244462436377210,\t-0.997240751916936170,\t-0.997237038904393300,\t\n-0.997233323398757920,\t-0.997229605400039130,\t-0.997225884908246260,\t-0.997222161923388750,\t-0.997218436445475920,\t-0.997214708474516880,\t-0.997210978010521170,\t-0.997207245053497890,\t\n-0.997203509603456610,\t-0.997199771660406520,\t-0.997196031224356960,\t-0.997192288295317360,\t-0.997188542873297060,\t-0.997184794958305360,\t-0.997181044550351730,\t-0.997177291649445350,\t\n-0.997173536255595900,\t-0.997169778368812600,\t-0.997166017989104760,\t-0.997162255116481930,\t-0.997158489750953450,\t-0.997154721892528740,\t-0.997150951541217250,\t-0.997147178697028400,\t\n-0.997143403359971540,\t-0.997139625530056200,\t-0.997135845207291820,\t-0.997132062391687720,\t-0.997128277083253580,\t-0.997124489281998700,\t-0.997120698987932650,\t-0.997116906201064860,\t\n-0.997113110921404750,\t-0.997109313148961900,\t-0.997105512883745710,\t-0.997101710125765760,\t-0.997097904875031580,\t-0.997094097131552610,\t-0.997090286895338410,\t-0.997086474166398510,\t\n-0.997082658944742350,\t-0.997078841230379600,\t-0.997075021023319690,\t-0.997071198323572270,\t-0.997067373131146910,\t-0.997063545446053020,\t-0.997059715268300280,\t-0.997055882597898350,\t\n-0.997052047434856650,\t-0.997048209779184850,\t-0.997044369630892490,\t-0.997040526989989240,\t-0.997036681856484640,\t-0.997032834230388350,\t-0.997028984111709930,\t-0.997025131500459130,\t\n-0.997021276396645510,\t-0.997017418800278610,\t-0.997013558711368210,\t-0.997009696129923960,\t-0.997005831055955420,\t-0.997001963489472340,\t-0.996998093430484290,\t-0.996994220879001030,\t\n-0.996990345835032210,\t-0.996986468298587500,\t-0.996982588269676670,\t-0.996978705748309380,\t-0.996974820734495280,\t-0.996970933228244150,\t-0.996967043229565750,\t-0.996963150738469640,\t\n-0.996959255754965800,\t-0.996955358279063670,\t-0.996951458310773140,\t-0.996947555850104080,\t-0.996943650897066050,\t-0.996939743451668910,\t-0.996935833513922450,\t-0.996931921083836330,\t\n-0.996928006161420520,\t-0.996924088746684590,\t-0.996920168839638520,\t-0.996916246440291980,\t-0.996912321548654830,\t-0.996908394164736870,\t-0.996904464288547840,\t-0.996900531920097750,\t\n-0.996896597059396370,\t-0.996892659706453470,\t-0.996888719861278920,\t-0.996884777523882490,\t-0.996880832694274190,\t-0.996876885372463770,\t-0.996872935558461130,\t-0.996868983252276240,\t\n-0.996865028453918780,\t-0.996861071163398840,\t-0.996857111380726190,\t-0.996853149105910830,\t-0.996849184338962520,\t-0.996845217079891270,\t-0.996841247328706940,\t-0.996837275085419530,\t\n-0.996833300350038920,\t-0.996829323122575000,\t-0.996825343403037860,\t-0.996821361191437380,\t-0.996817376487783460,\t-0.996813389292086070,\t-0.996809399604355220,\t-0.996805407424600890,\t\n-0.996801412752832960,\t-0.996797415589061650,\t-0.996793415933296730,\t-0.996789413785548200,\t-0.996785409145826250,\t-0.996781402014140670,\t-0.996777392390501670,\t-0.996773380274919130,\t\n-0.996769365667403260,\t-0.996765348567963840,\t-0.996761328976611070,\t-0.996757306893355070,\t-0.996753282318205700,\t-0.996749255251173190,\t-0.996745225692267530,\t-0.996741193641498710,\t\n-0.996737159098877060,\t-0.996733122064412450,\t-0.996729082538114990,\t-0.996725040519994890,\t-0.996720996010062140,\t-0.996716949008326970,\t-0.996712899514799360,\t-0.996708847529489520,\t\n-0.996704793052407560,\t-0.996700736083563580,\t-0.996696676622967790,\t-0.996692614670630310,\t-0.996688550226561330,\t-0.996684483290770970,\t-0.996680413863269330,\t-0.996676341944066730,\t\n-0.996672267533173280,\t-0.996668190630599080,\t-0.996664111236354460,\t-0.996660029350449620,\t-0.996655944972894670,\t-0.996651858103699830,\t-0.996647768742875310,\t-0.996643676890431430,\t\n-0.996639582546378300,\t-0.996635485710726240,\t-0.996631386383485470,\t-0.996627284564666320,\t-0.996623180254278870,\t-0.996619073452333470,\t-0.996614964158840430,\t-0.996610852373809860,\t\n-0.996606738097252310,\t-0.996602621329177870,\t-0.996598502069596880,\t-0.996594380318519550,\t-0.996590256075956420,\t-0.996586129341917480,\t-0.996582000116413290,\t-0.996577868399454170,\t\n-0.996573734191050330,\t-0.996569597491212100,\t-0.996565458299949910,\t-0.996561316617274100,\t-0.996557172443194970,\t-0.996553025777722980,\t-0.996548876620868330,\t-0.996544724972641570,\t\n-0.996540570833052920,\t-0.996536414202112920,\t-0.996532255079831900,\t-0.996528093466220180,\t-0.996523929361288200,\t-0.996519762765046500,\t-0.996515593677505310,\t-0.996511422098675160,\t\n-0.996507248028566380,\t-0.996503071467189640,\t-0.996498892414555030,\t-0.996494710870673320,\t-0.996490526835554840,\t-0.996486340309210020,\t-0.996482151291649300,\t-0.996477959782883230,\t\n-0.996473765782922350,\t-0.996469569291776880,\t-0.996465370309457700,\t-0.996461168835974910,\t-0.996456964871339280,\t-0.996452758415561250,\t-0.996448549468651250,\t-0.996444338030619940,\t\n-0.996440124101477750,\t-0.996435907681235360,\t-0.996431688769903070,\t-0.996427467367491660,\t-0.996423243474011460,\t-0.996419017089473220,\t-0.996414788213887510,\t-0.996410556847264760,\t\n-0.996406322989615510,\t-0.996402086640950650,\t-0.996397847801280490,\t-0.996393606470615700,\t-0.996389362648966830,\t-0.996385116336344630,\t-0.996380867532759670,\t-0.996376616238222490,\t\n-0.996372362452743740,\t-0.996368106176334200,\t-0.996363847409004300,\t-0.996359586150764810,\t-0.996355322401626280,\t-0.996351056161599580,\t-0.996346787430695160,\t-0.996342516208923780,\t\n-0.996338242496296100,\t-0.996333966292822890,\t-0.996329687598514700,\t-0.996325406413382300,\t-0.996321122737436340,\t-0.996316836570687590,\t-0.996312547913146830,\t-0.996308256764824600,\t\n-0.996303963125731770,\t-0.996299666995879020,\t-0.996295368375277210,\t-0.996291067263936790,\t-0.996286763661868860,\t-0.996282457569083960,\t-0.996278148985592860,\t-0.996273837911406450,\t\n-0.996269524346535480,\t-0.996265208290990630,\t-0.996260889744782880,\t-0.996256568707922780,\t-0.996252245180421330,\t-0.996247919162289160,\t-0.996243590653537290,\t-0.996239259654176480,\t\n-0.996234926164217380,\t-0.996230590183671110,\t-0.996226251712548310,\t-0.996221910750859860,\t-0.996217567298616660,\t-0.996213221355829460,\t-0.996208872922509260,\t-0.996204521998666940,\t\n-0.996200168584313260,\t-0.996195812679459220,\t-0.996191454284115600,\t-0.996187093398293370,\t-0.996182730022003300,\t-0.996178364155256510,\t-0.996173995798063760,\t-0.996169624950436040,\t\n-0.996165251612384340,\t-0.996160875783919430,\t-0.996156497465052300,\t-0.996152116655793950,\t-0.996147733356155360,\t-0.996143347566147420,\t-0.996138959285781000,\t-0.996134568515067320,\t\n-0.996130175254017150,\t-0.996125779502641580,\t-0.996121381260951620,\t-0.996116980528958030,\t-0.996112577306672130,\t-0.996108171594104810,\t-0.996103763391266940,\t-0.996099352698169740,\t\n-0.996094939514824200,\t-0.996090523841241190,\t-0.996086105677431940,\t-0.996081685023407440,\t-0.996077261879178670,\t-0.996072836244756840,\t-0.996068408120152850,\t-0.996063977505377900,\t\n-0.996059544400442860,\t-0.996055108805359080,\t-0.996050670720137530,\t-0.996046230144789320,\t-0.996041787079325450,\t-0.996037341523757220,\t-0.996032893478095540,\t-0.996028442942351710,\t\n-0.996023989916536730,\t-0.996019534400661710,\t-0.996015076394737960,\t-0.996010615898776490,\t-0.996006152912788490,\t-0.996001687436785080,\t-0.995997219470777460,\t-0.995992749014776750,\t\n-0.995988276068794250,\t-0.995983800632840980,\t-0.995979322706928240,\t-0.995974842291067250,\t-0.995970359385269120,\t-0.995965873989545060,\t-0.995961386103906390,\t-0.995956895728364100,\t\n-0.995952402862929740,\t-0.995947907507614310,\t-0.995943409662429110,\t-0.995938909327385380,\t-0.995934406502494320,\t-0.995929901187767360,\t-0.995925393383215620,\t-0.995920883088850300,\t\n-0.995916370304682830,\t-0.995911855030724440,\t-0.995907337266986440,\t-0.995902817013480160,\t-0.995898294270216700,\t-0.995893769037207610,\t-0.995889241314463990,\t-0.995884711101997390,\t\n-0.995880178399818900,\t-0.995875643207939980,\t-0.995871105526372040,\t-0.995866565355126300,\t-0.995862022694214090,\t-0.995857477543646840,\t-0.995852929903435990,\t-0.995848379773592750,\t\n-0.995843827154128450,\t-0.995839272045054740,\t-0.995834714446382830,\t-0.995830154358124050,\t-0.995825591780289950,\t-0.995821026712891850,\t-0.995816459155941190,\t-0.995811889109449400,\t\n-0.995807316573427910,\t-0.995802741547888060,\t-0.995798164032841380,\t-0.995793584028299320,\t-0.995789001534273300,\t-0.995784416550774760,\t-0.995779829077815150,\t-0.995775239115406000,\t\n-0.995770646663558750,\t-0.995766051722284830,\t-0.995761454291595900,\t-0.995756854371503300,\t-0.995752251962018440,\t-0.995747647063153110,\t-0.995743039674918620,\t-0.995738429797326410,\t\n-0.995733817430388250,\t-0.995729202574115570,\t-0.995724585228519810,\t-0.995719965393612630,\t-0.995715343069405460,\t-0.995710718255910070,\t-0.995706090953137780,\t-0.995701461161100250,\t\n-0.995696828879809150,\t-0.995692194109275900,\t-0.995687556849512160,\t-0.995682917100529590,\t-0.995678274862339730,\t-0.995673630134954140,\t-0.995668982918384460,\t-0.995664333212642470,\t\n-0.995659681017739500,\t-0.995655026333687300,\t-0.995650369160497650,\t-0.995645709498181990,\t-0.995641047346752070,\t-0.995636382706219570,\t-0.995631715576596130,\t-0.995627045957893420,\t\n-0.995622373850122980,\t-0.995617699253296680,\t-0.995613022167426090,\t-0.995608342592523070,\t-0.995603660528599050,\t-0.995598975975665930,\t-0.995594288933735360,\t-0.995589599402819100,\t\n-0.995584907382928820,\t-0.995580212874076280,\t-0.995575515876273240,\t-0.995570816389531380,\t-0.995566114413862450,\t-0.995561409949278220,\t-0.995556702995790580,\t-0.995551993553411060,\t\n-0.995547281622151560,\t-0.995542567202023940,\t-0.995537850293039870,\t-0.995533130895211120,\t-0.995528409008549660,\t-0.995523684633067060,\t-0.995518957768775300,\t-0.995514228415686150,\t\n-0.995509496573811380,\t-0.995504762243162980,\t-0.995500025423752600,\t-0.995495286115592130,\t-0.995490544318693440,\t-0.995485800033068520,\t-0.995481053258728930,\t-0.995476303995686870,\t\n-0.995471552243953890,\t-0.995466798003542100,\t-0.995462041274463360,\t-0.995457282056729450,\t-0.995452520350352370,\t-0.995447756155343980,\t-0.995442989471716280,\t-0.995438220299481040,\t\n-0.995433448638650240,\t-0.995428674489235780,\t-0.995423897851249630,\t-0.995419118724703790,\t-0.995414337109610140,\t-0.995409553005980660,\t-0.995404766413827360,\t-0.995399977333161990,\t\n-0.995395185763996770,\t-0.995390391706343580,\t-0.995385595160214410,\t-0.995380796125621250,\t-0.995375994602576090,\t-0.995371190591091030,\t-0.995366384091177950,\t-0.995361575102848840,\t\n-0.995356763626115800,\t-0.995351949660990940,\t-0.995347133207486130,\t-0.995342314265613480,\t-0.995337492835385080,\t-0.995332668916812930,\t-0.995327842509909130,\t-0.995323013614685670,\t\n-0.995318182231154760,\t-0.995313348359328390,\t-0.995308511999218550,\t-0.995303673150837560,\t-0.995298831814197320,\t-0.995293987989310010,\t-0.995289141676187650,\t-0.995284292874842550,\t\n-0.995279441585286690,\t-0.995274587807532200,\t-0.995269731541591260,\t-0.995264872787476000,\t-0.995260011545198500,\t-0.995255147814771090,\t-0.995250281596205770,\t-0.995245412889514620,\t\n-0.995240541694710100,\t-0.995235668011804190,\t-0.995230791840808980,\t-0.995225913181736920,\t-0.995221032034600110,\t-0.995216148399410640,\t-0.995211262276180840,\t-0.995206373664922820,\t\n-0.995201482565648890,\t-0.995196588978371270,\t-0.995191692903102280,\t-0.995186794339853910,\t-0.995181893288638600,\t-0.995176989749468550,\t-0.995172083722356100,\t-0.995167175207313350,\t\n-0.995162264204352720,\t-0.995157350713486320,\t-0.995152434734726700,\t-0.995147516268085840,\t-0.995142595313576290,\t-0.995137671871210270,\t-0.995132745940999990,\t-0.995127817522957980,\t\n-0.995122886617096250,\t-0.995117953223427440,\t-0.995113017341963670,\t-0.995108078972717360,\t-0.995103138115700950,\t-0.995098194770926540,\t-0.995093248938406780,\t-0.995088300618153900,\t\n-0.995083349810180100,\t-0.995078396514498140,\t-0.995073440731120030,\t-0.995068482460058410,\t-0.995063521701325500,\t-0.995058558454933850,\t-0.995053592720895770,\t-0.995048624499223820,\t\n-0.995043653789930200,\t-0.995038680593027470,\t-0.995033704908528050,\t-0.995028726736444380,\t-0.995023746076788780,\t-0.995018762929573920,\t-0.995013777294812110,\t-0.995008789172515900,\t\n-0.995003798562697720,\t-0.994998805465370010,\t-0.994993809880545310,\t-0.994988811808236060,\t-0.994983811248454810,\t-0.994978808201213980,\t-0.994973802666526240,\t-0.994968794644403910,\t\n-0.994963784134859640,\t-0.994958771137905870,\t-0.994953755653555150,\t-0.994948737681820130,\t-0.994943717222713130,\t-0.994938694276246930,\t-0.994933668842434060,\t-0.994928640921286860,\t\n-0.994923610512818190,\t-0.994918577617040390,\t-0.994913542233966220,\t-0.994908504363608230,\t-0.994903464005978840,\t-0.994898421161090950,\t-0.994893375828956870,\t-0.994888328009589480,\t\n-0.994883277703001110,\t-0.994878224909204740,\t-0.994873169628212590,\t-0.994868111860037650,\t-0.994863051604692460,\t-0.994857988862189570,\t-0.994852923632541740,\t-0.994847855915761640,\t\n-0.994842785711861800,\t-0.994837713020855110,\t-0.994832637842754110,\t-0.994827560177571460,\t-0.994822480025319920,\t-0.994817397386012160,\t-0.994812312259660940,\t-0.994807224646279020,\t\n-0.994802134545878960,\t-0.994797041958473520,\t-0.994791946884075570,\t-0.994786849322697670,\t-0.994781749274352700,\t-0.994776646739053310,\t-0.994771541716812370,\t-0.994766434207642550,\t\n-0.994761324211556610,\t-0.994756211728567430,\t-0.994751096758687670,\t-0.994745979301930090,\t-0.994740859358307690,\t-0.994735736927833130,\t-0.994730612010519160,\t-0.994725484606378770,\t\n-0.994720354715424530,\t-0.994715222337669510,\t-0.994710087473126390,\t-0.994704950121808040,\t-0.994699810283727340,\t-0.994694667958897160,\t-0.994689523147330170,\t-0.994684375849039460,\t\n-0.994679226064037800,\t-0.994674073792338190,\t-0.994668919033953270,\t-0.994663761788896040,\t-0.994658602057179490,\t-0.994653439838816380,\t-0.994648275133819700,\t-0.994643107942202230,\t\n-0.994637938263977060,\t-0.994632766099157070,\t-0.994627591447755140,\t-0.994622414309784260,\t-0.994617234685257310,\t-0.994612052574187390,\t-0.994606867976587150,\t-0.994601680892469920,\t\n-0.994596491321848350,\t-0.994591299264735660,\t-0.994586104721144610,\t-0.994580907691088310,\t-0.994575708174579850,\t-0.994570506171632010,\t-0.994565301682257990,\t-0.994560094706470670,\t\n-0.994554885244283150,\t-0.994549673295708310,\t-0.994544458860759480,\t-0.994539241939449310,\t-0.994534022531791130,\t-0.994528800637797920,\t-0.994523576257482670,\t-0.994518349390858480,\t\n-0.994513120037938350,\t-0.994507888198735480,\t-0.994502653873262870,\t-0.994497417061533720,\t-0.994492177763560910,\t-0.994486935979357780,\t-0.994481691708937190,\t-0.994476444952312470,\t\n-0.994471195709496490,\t-0.994465943980502700,\t-0.994460689765343960,\t-0.994455433064033500,\t-0.994450173876584410,\t-0.994444912203010010,\t-0.994439648043323190,\t-0.994434381397537370,\t\n-0.994429112265665550,\t-0.994423840647720940,\t-0.994418566543716740,\t-0.994413289953666070,\t-0.994408010877582240,\t-0.994402729315478350,\t-0.994397445267367620,\t-0.994392158733263360,\t\n-0.994386869713178690,\t-0.994381578207126800,\t-0.994376284215120920,\t-0.994370987737174360,\t-0.994365688773300450,\t-0.994360387323512170,\t-0.994355083387822970,\t-0.994349776966246050,\t\n-0.994344468058794730,\t-0.994339156665482230,\t-0.994333842786321860,\t-0.994328526421326850,\t-0.994323207570510510,\t-0.994317886233886170,\t-0.994312562411467040,\t-0.994307236103266660,\t\n-0.994301907309298130,\t-0.994296576029574770,\t-0.994291242264109920,\t-0.994285906012917110,\t-0.994280567276009440,\t-0.994275226053400460,\t-0.994269882345103270,\t-0.994264536151131530,\t\n-0.994259187471498330,\t-0.994253836306217220,\t-0.994248482655301520,\t-0.994243126518764560,\t-0.994237767896619880,\t-0.994232406788880700,\t-0.994227043195560540,\t-0.994221677116672750,\t\n-0.994216308552230750,\t-0.994210937502247980,\t-0.994205563966737870,\t-0.994200187945713960,\t-0.994194809439189480,\t-0.994189428447177950,\t-0.994184044969692930,\t-0.994178659006747730,\t\n-0.994173270558355910,\t-0.994167879624530900,\t-0.994162486205286240,\t-0.994157090300635260,\t-0.994151691910591720,\t-0.994146291035168830,\t-0.994140887674380250,\t-0.994135481828239410,\t\n-0.994130073496759860,\t-0.994124662679955250,\t-0.994119249377838910,\t-0.994113833590424380,\t-0.994108415317725310,\t-0.994102994559755260,\t-0.994097571316527650,\t-0.994092145588056140,\t\n-0.994086717374354280,\t-0.994081286675435600,\t-0.994075853491313670,\t-0.994070417822002230,\t-0.994064979667514610,\t-0.994059539027864590,\t-0.994054095903065700,\t-0.994048650293131720,\t\n-0.994043202198075960,\t-0.994037751617912190,\t-0.994032298552654070,\t-0.994026843002315250,\t-0.994021384966909280,\t-0.994015924446449930,\t-0.994010461440950620,\t-0.994004995950425240,\t\n-0.993999527974887440,\t-0.993994057514350770,\t-0.993988584568828880,\t-0.993983109138335540,\t-0.993977631222884520,\t-0.993972150822489350,\t-0.993966667937163820,\t-0.993961182566921670,\t\n-0.993955694711776470,\t-0.993950204371742090,\t-0.993944711546832280,\t-0.993939216237060500,\t-0.993933718442440830,\t-0.993928218162986820,\t-0.993922715398712240,\t-0.993917210149630970,\t\n-0.993911702415756550,\t-0.993906192197102970,\t-0.993900679493683880,\t-0.993895164305513060,\t-0.993889646632604370,\t-0.993884126474971490,\t-0.993878603832628380,\t-0.993873078705588720,\t\n-0.993867551093866370,\t-0.993862020997475120,\t-0.993856488416428930,\t-0.993850953350741360,\t-0.993845415800426510,\t-0.993839875765498150,\t-0.993834333245969930,\t-0.993828788241856050,\t\n-0.993823240753170080,\t-0.993817690779926100,\t-0.993812138322137880,\t-0.993806583379819310,\t-0.993801025952984250,\t-0.993795466041646700,\t-0.993789903645820430,\t-0.993784338765519410,\t\n-0.993778771400757430,\t-0.993773201551548690,\t-0.993767629217906840,\t-0.993762054399846000,\t-0.993756477097380020,\t-0.993750897310522800,\t-0.993745315039288310,\t-0.993739730283690560,\t\n-0.993734143043743520,\t-0.993728553319461080,\t-0.993722961110857340,\t-0.993717366417946060,\t-0.993711769240741450,\t-0.993706169579257390,\t-0.993700567433507990,\t-0.993694962803507110,\t\n-0.993689355689268860,\t-0.993683746090807120,\t-0.993678134008136090,\t-0.993672519441269660,\t-0.993666902390222040,\t-0.993661282855007100,\t-0.993655660835638940,\t-0.993650036332131670,\t\n-0.993644409344499270,\t-0.993638779872755950,\t-0.993633147916915590,\t-0.993627513476992300,\t-0.993621876553000270,\t-0.993616237144953620,\t-0.993610595252866320,\t-0.993604950876752600,\t\n-0.993599304016626440,\t-0.993593654672502050,\t-0.993588002844393410,\t-0.993582348532314860,\t-0.993576691736280490,\t-0.993571032456304290,\t-0.993565370692400580,\t-0.993559706444583470,\t\n-0.993554039712867040,\t-0.993548370497265520,\t-0.993542698797793000,\t-0.993537024614463800,\t-0.993531347947292030,\t-0.993525668796292010,\t-0.993519987161477600,\t-0.993514303042863370,\t\n-0.993508616440463400,\t-0.993502927354291800,\t-0.993497235784362890,\t-0.993491541730690990,\t-0.993485845193290080,\t-0.993480146172174730,\t-0.993474444667358900,\t-0.993468740678856930,\t\n-0.993463034206683250,\t-0.993457325250851840,\t-0.993451613811377250,\t-0.993445899888273480,\t-0.993440183481555050,\t-0.993434464591236190,\t-0.993428743217331100,\t-0.993423019359854220,\t\n-0.993417293018819760,\t-0.993411564194242040,\t-0.993405832886135380,\t-0.993400099094514210,\t-0.993394362819392750,\t-0.993388624060785430,\t-0.993382882818706460,\t-0.993377139093170380,\t\n-0.993371392884191410,\t-0.993365644191783970,\t-0.993359893015962390,\t-0.993354139356741220,\t-0.993348383214134540,\t-0.993342624588156920,\t-0.993336863478822770,\t-0.993331099886146540,\t\n-0.993325333810142430,\t-0.993319565250824990,\t-0.993313794208208760,\t-0.993308020682307950,\t-0.993302244673137100,\t-0.993296466180710660,\t-0.993290685205043040,\t-0.993284901746148700,\t\n-0.993279115804042160,\t-0.993273327378737750,\t-0.993267536470250010,\t-0.993261743078593500,\t-0.993255947203782630,\t-0.993250148845831850,\t-0.993244348004755810,\t-0.993238544680568710,\t\n-0.993232738873285450,\t-0.993226930582920220,\t-0.993221119809487680,\t-0.993215306553002390,\t-0.993209490813478760,\t-0.993203672590931450,\t-0.993197851885374900,\t-0.993192028696823770,\t\n-0.993186203025292590,\t-0.993180374870795910,\t-0.993174544233348280,\t-0.993168711112964230,\t-0.993162875509658430,\t-0.993157037423445520,\t-0.993151196854339950,\t-0.993145353802356360,\t\n-0.993139508267509410,\t-0.993133660249813750,\t-0.993127809749283830,\t-0.993121956765934510,\t-0.993116101299780120,\t-0.993110243350835640,\t-0.993104382919115510,\t-0.993098520004634390,\t\n-0.993092654607407030,\t-0.993086786727447990,\t-0.993080916364772030,\t-0.993075043519393690,\t-0.993069168191327840,\t-0.993063290380589050,\t-0.993057410087191950,\t-0.993051527311151430,\t\n-0.993045642052482020,\t-0.993039754311198510,\t-0.993033864087315640,\t-0.993027971380848080,\t-0.993022076191810710,\t-0.993016178520218060,\t-0.993010278366084910,\t-0.993004375729426130,\t\n-0.992998470610256370,\t-0.992992563008590510,\t-0.992986652924443210,\t-0.992980740357829240,\t-0.992974825308763460,\t-0.992968907777260550,\t-0.992962987763335470,\t-0.992957065267002890,\t\n-0.992951140288277580,\t-0.992945212827174520,\t-0.992939282883708360,\t-0.992933350457893990,\t-0.992927415549746280,\t-0.992921478159280000,\t-0.992915538286510020,\t-0.992909595931451340,\t\n-0.992903651094118490,\t-0.992897703774526570,\t-0.992891753972690360,\t-0.992885801688624840,\t-0.992879846922344770,\t-0.992873889673865140,\t-0.992867929943200720,\t-0.992861967730366500,\t\n-0.992856003035377350,\t-0.992850035858248160,\t-0.992844066198993900,\t-0.992838094057629570,\t-0.992832119434169820,\t-0.992826142328629980,\t-0.992820162741024580,\t-0.992814180671368950,\t\n-0.992808196119677740,\t-0.992802209085966170,\t-0.992796219570248990,\t-0.992790227572541210,\t-0.992784233092858020,\t-0.992778236131214080,\t-0.992772236687624600,\t-0.992766234762104570,\t\n-0.992760230354668980,\t-0.992754223465332710,\t-0.992748214094110960,\t-0.992742202241018720,\t-0.992736187906070880,\t-0.992730171089282630,\t-0.992724151790668970,\t-0.992718130010244780,\t\n-0.992712105748025490,\t-0.992706079004025740,\t-0.992700049778260870,\t-0.992694018070745860,\t-0.992687983881495930,\t-0.992681947210525830,\t-0.992675908057851000,\t-0.992669866423486420,\t\n-0.992663822307447100,\t-0.992657775709748220,\t-0.992651726630404910,\t-0.992645675069432350,\t-0.992639621026845550,\t-0.992633564502659720,\t-0.992627505496889940,\t-0.992621444009551430,\t\n-0.992615380040659300,\t-0.992609313590228750,\t-0.992603244658274870,\t-0.992597173244812890,\t-0.992591099349858010,\t-0.992585022973425320,\t-0.992578944115530050,\t-0.992572862776187500,\t\n-0.992566778955412790,\t-0.992560692653221110,\t-0.992554603869627680,\t-0.992548512604647830,\t-0.992542418858296640,\t-0.992536322630589330,\t-0.992530223921541330,\t-0.992524122731167750,\t\n-0.992518019059483780,\t-0.992511912906504870,\t-0.992505804272246110,\t-0.992499693156722820,\t-0.992493579559950320,\t-0.992487463481943940,\t-0.992481344922718890,\t-0.992475223882290370,\t\n-0.992469100360673820,\t-0.992462974357884550,\t-0.992456845873937900,\t-0.992450714908849060,\t-0.992444581462633480,\t-0.992438445535306470,\t-0.992432307126883240,\t-0.992426166237379340,\t\n-0.992420022866809970,\t-0.992413877015190570,\t-0.992407728682536460,\t-0.992401577868863070,\t-0.992395424574185720,\t-0.992389268798519740,\t-0.992383110541880660,\t-0.992376949804283810,\t\n-0.992370786585744510,\t-0.992364620886278410,\t-0.992358452705900620,\t-0.992352282044626670,\t-0.992346108902472100,\t-0.992339933279452250,\t-0.992333755175582530,\t-0.992327574590878500,\t\n-0.992321391525355370,\t-0.992315205979028890,\t-0.992309017951914400,\t-0.992302827444027310,\t-0.992296634455383190,\t-0.992290438985997450,\t-0.992284241035885640,\t-0.992278040605063190,\t\n-0.992271837693545770,\t-0.992265632301348570,\t-0.992259424428487470,\t-0.992253214074977690,\t-0.992247001240834870,\t-0.992240785926074560,\t-0.992234568130712310,\t-0.992228347854763660,\t\n-0.992222125098244150,\t-0.992215899861169310,\t-0.992209672143554710,\t-0.992203441945415880,\t-0.992197209266768580,\t-0.992190974107628130,\t-0.992184736468010200,\t-0.992178496347930540,\t\n-0.992172253747404590,\t-0.992166008666448110,\t-0.992159761105076530,\t-0.992153511063305520,\t-0.992147258541150710,\t-0.992141003538627890,\t-0.992134746055752470,\t-0.992128486092540120,\t\n-0.992122223649006710,\t-0.992115958725167670,\t-0.992109691321038660,\t-0.992103421436635550,\t-0.992097149071973770,\t-0.992090874227069210,\t-0.992084596901937400,\t-0.992078317096594110,\t\n-0.992072034811054990,\t-0.992065750045335810,\t-0.992059462799452340,\t-0.992053173073420110,\t-0.992046880867255010,\t-0.992040586180972680,\t-0.992034289014588900,\t-0.992027989368119420,\t\n-0.992021687241579910,\t-0.992015382634986230,\t-0.992009075548354050,\t-0.992002765981699230,\t-0.991996453935037440,\t-0.991990139408384540,\t-0.991983822401756310,\t-0.991977502915168510,\t\n-0.991971180948637010,\t-0.991964856502177470,\t-0.991958529575805880,\t-0.991952200169537890,\t-0.991945868283389380,\t-0.991939533917376210,\t-0.991933197071514280,\t-0.991926857745819350,\t\n-0.991920515940307170,\t-0.991914171654993850,\t-0.991907824889894930,\t-0.991901475645026620,\t-0.991895123920404460,\t-0.991888769716044670,\t-0.991882413031962780,\t-0.991876053868175010,\t\n-0.991869692224697010,\t-0.991863328101544760,\t-0.991856961498734260,\t-0.991850592416281370,\t-0.991844220854201990,\t-0.991837846812511970,\t-0.991831470291227420,\t-0.991825091290364110,\t\n-0.991818709809938140,\t-0.991812325849965370,\t-0.991805939410461800,\t-0.991799550491443420,\t-0.991793159092926090,\t-0.991786765214925920,\t-0.991780368857458790,\t-0.991773970020540800,\t\n-0.991767568704187810,\t-0.991761164908415930,\t-0.991754758633241250,\t-0.991748349878679550,\t-0.991741938644747020,\t-0.991735524931459560,\t-0.991729108738833350,\t-0.991722690066884400,\t\n-0.991716268915628700,\t-0.991709845285082330,\t-0.991703419175261280,\t-0.991696990586181770,\t-0.991690559517859780,\t-0.991684125970311300,\t-0.991677689943552650,\t-0.991671251437599710,\t\n-0.991664810452468570,\t-0.991658366988175440,\t-0.991651921044736430,\t-0.991645472622167620,\t-0.991639021720485130,\t-0.991632568339705030,\t-0.991626112479843560,\t-0.991619654140916800,\t\n-0.991613193322940960,\t-0.991606730025932030,\t-0.991600264249906330,\t-0.991593795994879960,\t-0.991587325260869120,\t-0.991580852047890040,\t-0.991574376355958690,\t-0.991567898185091500,\t\n-0.991561417535304470,\t-0.991554934406614020,\t-0.991548448799036140,\t-0.991541960712587160,\t-0.991535470147283270,\t-0.991528977103140700,\t-0.991522481580175640,\t-0.991515983578404430,\t\n-0.991509483097843370,\t-0.991502980138508460,\t-0.991496474700416130,\t-0.991489966783582590,\t-0.991483456388024260,\t-0.991476943513757150,\t-0.991470428160797780,\t-0.991463910329162260,\t\n-0.991457390018867010,\t-0.991450867229928260,\t-0.991444341962362310,\t-0.991437814216185600,\t-0.991431283991414340,\t-0.991424751288064840,\t-0.991418216106153440,\t-0.991411678445696440,\t\n-0.991405138306710400,\t-0.991398595689211400,\t-0.991392050593215890,\t-0.991385503018740400,\t-0.991378952965801030,\t-0.991372400434414320,\t-0.991365845424596600,\t-0.991359287936364300,\t\n-0.991352727969733730,\t-0.991346165524721320,\t-0.991339600601343630,\t-0.991333033199616850,\t-0.991326463319557430,\t-0.991319890961181890,\t-0.991313316124506680,\t-0.991306738809548120,\t\n-0.991300159016322740,\t-0.991293576744846970,\t-0.991286991995137260,\t-0.991280404767210020,\t-0.991273815061081810,\t-0.991267222876769050,\t-0.991260628214288290,\t-0.991254031073655840,\t\n-0.991247431454888470,\t-0.991240829358002400,\t-0.991234224783014260,\t-0.991227617729940610,\t-0.991221008198797880,\t-0.991214396189602610,\t-0.991207781702371450,\t-0.991201164737120720,\t\n-0.991194545293867190,\t-0.991187923372627180,\t-0.991181298973417450,\t-0.991174672096254430,\t-0.991168042741154780,\t-0.991161410908135030,\t-0.991154776597211630,\t-0.991148139808401440,\t\n-0.991141500541720790,\t-0.991134858797186440,\t-0.991128214574814930,\t-0.991121567874622910,\t-0.991114918696626930,\t-0.991108267040843650,\t-0.991101612907289710,\t-0.991094956295981770,\t\n-0.991088297206936470,\t-0.991081635640170380,\t-0.991074971595700130,\t-0.991068305073542600,\t-0.991061636073714220,\t-0.991054964596231770,\t-0.991048290641111880,\t-0.991041614208371340,\t\n-0.991034935298026660,\t-0.991028253910094750,\t-0.991021570044592130,\t-0.991014883701535560,\t-0.991008194880941830,\t-0.991001503582827570,\t-0.990994809807209660,\t-0.990988113554104650,\t\n-0.990981414823529310,\t-0.990974713615500490,\t-0.990968009930034870,\t-0.990961303767149300,\t-0.990954595126860350,\t-0.990947884009184990,\t-0.990941170414139980,\t-0.990934454341741880,\t\n-0.990927735792007770,\t-0.990921014764954310,\t-0.990914291260598270,\t-0.990907565278956510,\t-0.990900836820045820,\t-0.990894105883883050,\t-0.990887372470485080,\t-0.990880636579868580,\t\n-0.990873898212050520,\t-0.990867157367047780,\t-0.990860414044877120,\t-0.990853668245555430,\t-0.990846919969099460,\t-0.990840169215526310,\t-0.990833415984852750,\t-0.990826660277095540,\t\n-0.990819902092271780,\t-0.990813141430398230,\t-0.990806378291491870,\t-0.990799612675569490,\t-0.990792844582648160,\t-0.990786074012744660,\t-0.990779300965875960,\t-0.990772525442059070,\t\n-0.990765747441310740,\t-0.990758966963648180,\t-0.990752184009088150,\t-0.990745398577647650,\t-0.990738610669343660,\t-0.990731820284193150,\t-0.990725027422213130,\t-0.990718232083420470,\t\n-0.990711434267832260,\t-0.990704633975465490,\t-0.990697831206337140,\t-0.990691025960464210,\t-0.990684218237863680,\t-0.990677408038552640,\t-0.990670595362547980,\t-0.990663780209866900,\t\n-0.990656962580526490,\t-0.990650142474543530,\t-0.990643319891935210,\t-0.990636494832718650,\t-0.990629667296910820,\t-0.990622837284528820,\t-0.990616004795589760,\t-0.990609169830110710,\t\n-0.990602332388108690,\t-0.990595492469600880,\t-0.990588650074604280,\t-0.990581805203136100,\t-0.990574957855213320,\t-0.990568108030853270,\t-0.990561255730072920,\t-0.990554400952889380,\t\n-0.990547543699319850,\t-0.990540683969381440,\t-0.990533821763091350,\t-0.990526957080466790,\t-0.990520089921524740,\t-0.990513220286282530,\t-0.990506348174757130,\t-0.990499473586965990,\t\n-0.990492596522926090,\t-0.990485716982654860,\t-0.990478834966169170,\t-0.990471950473486460,\t-0.990465063504623820,\t-0.990458174059598570,\t-0.990451282138427920,\t-0.990444387741128970,\t\n-0.990437490867719150,\t-0.990430591518215550,\t-0.990423689692635500,\t-0.990416785390996090,\t-0.990409878613314860,\t-0.990402969359608920,\t-0.990396057629895580,\t-0.990389143424192040,\t\n-0.990382226742515640,\t-0.990375307584883680,\t-0.990368385951313490,\t-0.990361461841822280,\t-0.990354535256427470,\t-0.990347606195146280,\t-0.990340674657996130,\t-0.990333740644994240,\t\n-0.990326804156158040,\t-0.990319865191504830,\t-0.990312923751051840,\t-0.990305979834816720,\t-0.990299033442816560,\t-0.990292084575068790,\t-0.990285133231590840,\t-0.990278179412400040,\t\n-0.990271223117513810,\t-0.990264264346949590,\t-0.990257303100724570,\t-0.990250339378856430,\t-0.990243373181362350,\t-0.990236404508259890,\t-0.990229433359566370,\t-0.990222459735299320,\t\n-0.990215483635476070,\t-0.990208505060114150,\t-0.990201524009230890,\t-0.990194540482843940,\t-0.990187554480970620,\t-0.990180566003628360,\t-0.990173575050834700,\t-0.990166581622607070,\t\n-0.990159585718963010,\t-0.990152587339920070,\t-0.990145586485495550,\t-0.990138583155707130,\t-0.990131577350572220,\t-0.990124569070108370,\t-0.990117558314333120,\t-0.990110545083263900,\t\n-0.990103529376918370,\t-0.990096511195314060,\t-0.990089490538468400,\t-0.990082467406399050,\t-0.990075441799123550,\t-0.990068413716659430,\t-0.990061383159024260,\t-0.990054350126235660,\t\n-0.990047314618311190,\t-0.990040276635268390,\t-0.990033236177124910,\t-0.990026193243898400,\t-0.990019147835606290,\t-0.990012099952266470,\t-0.990005049593896240,\t-0.989997996760513480,\t\n-0.989990941452135730,\t-0.989983883668780650,\t-0.989976823410465780,\t-0.989969760677208880,\t-0.989962695469027600,\t-0.989955627785939600,\t-0.989948557627962410,\t-0.989941484995114030,\t\n-0.989934409887411770,\t-0.989927332304873510,\t-0.989920252247517010,\t-0.989913169715359810,\t-0.989906084708419680,\t-0.989898997226714370,\t-0.989891907270261550,\t-0.989884814839078970,\t\n-0.989877719933184300,\t-0.989870622552595390,\t-0.989863522697329910,\t-0.989856420367405620,\t-0.989849315562840280,\t-0.989842208283651660,\t-0.989835098529857520,\t-0.989827986301475620,\t\n-0.989820871598523830,\t-0.989813754421019710,\t-0.989806634768981340,\t-0.989799512642426380,\t-0.989792388041372590,\t-0.989785260965837850,\t-0.989778131415839920,\t-0.989770999391396680,\t\n-0.989763864892525880,\t-0.989756727919245520,\t-0.989749588471573350,\t-0.989742446549527140,\t-0.989735302153124770,\t-0.989728155282384340,\t-0.989721005937323370,\t-0.989713854117959870,\t\n-0.989706699824311810,\t-0.989699543056396960,\t-0.989692383814233300,\t-0.989685222097838600,\t-0.989678057907230850,\t-0.989670891242428020,\t-0.989663722103448000,\t-0.989656550490308540,\t\n-0.989649376403027750,\t-0.989642199841623600,\t-0.989635020806113870,\t-0.989627839296516650,\t-0.989620655312849820,\t-0.989613468855131240,\t-0.989606279923379130,\t-0.989599088517611250,\t\n-0.989591894637845690,\t-0.989584698284100340,\t-0.989577499456393280,\t-0.989570298154742510,\t-0.989563094379165900,\t-0.989555888129681650,\t-0.989548679406307640,\t-0.989541468209061970,\t\n-0.989534254537962510,\t-0.989527038393027580,\t-0.989519819774274940,\t-0.989512598681722810,\t-0.989505375115389160,\t-0.989498149075291990,\t-0.989490920561449610,\t-0.989483689573879780,\t\n-0.989476456112600820,\t-0.989469220177630620,\t-0.989461981768987480,\t-0.989454740886689390,\t-0.989447497530754340,\t-0.989440251701200650,\t-0.989433003398046300,\t-0.989425752621309380,\t\n-0.989418499371008120,\t-0.989411243647160710,\t-0.989403985449785030,\t-0.989396724778899510,\t-0.989389461634522130,\t-0.989382196016671100,\t-0.989374927925364520,\t-0.989367657360620710,\t\n-0.989360384322457760,\t-0.989353108810893780,\t-0.989345830825947070,\t-0.989338550367635850,\t-0.989331267435978100,\t-0.989323982030992250,\t-0.989316694152696520,\t-0.989309403801108990,\t\n-0.989302110976247980,\t-0.989294815678131600,\t-0.989287517906778270,\t-0.989280217662206200,\t-0.989272914944433480,\t-0.989265609753478550,\t-0.989258302089359500,\t-0.989250991952094760,\t\n-0.989243679341702540,\t-0.989236364258201050,\t-0.989229046701608830,\t-0.989221726671943860,\t-0.989214404169224570,\t-0.989207079193469290,\t-0.989199751744696320,\t-0.989192421822923880,\t\n-0.989185089428170520,\t-0.989177754560454430,\t-0.989170417219793820,\t-0.989163077406207350,\t-0.989155735119713000,\t-0.989148390360329420,\t-0.989141043128074830,\t-0.989133693422967750,\t\n-0.989126341245026300,\t-0.989118986594269000,\t-0.989111629470714290,\t-0.989104269874380490,\t-0.989096907805286030,\t-0.989089543263449330,\t-0.989082176248888720,\t-0.989074806761622630,\t\n-0.989067434801669590,\t-0.989060060369047920,\t-0.989052683463776170,\t-0.989045304085872660,\t-0.989037922235355920,\t-0.989030537912244270,\t-0.989023151116556360,\t-0.989015761848310640,\t\n-0.989008370107525400,\t-0.989000975894219310,\t-0.988993579208410690,\t-0.988986180050118180,\t-0.988978778419360330,\t-0.988971374316155340,\t-0.988963967740522090,\t-0.988956558692478780,\t\n-0.988949147172044190,\t-0.988941733179236620,\t-0.988934316714074830,\t-0.988926897776577160,\t-0.988919476366762250,\t-0.988912052484648640,\t-0.988904626130254980,\t-0.988897197303599710,\t\n-0.988889766004701460,\t-0.988882332233578800,\t-0.988874895990250250,\t-0.988867457274734460,\t-0.988860016087050100,\t-0.988852572427215690,\t-0.988845126295249790,\t-0.988837677691171150,\t\n-0.988830226614998200,\t-0.988822773066749820,\t-0.988815317046444430,\t-0.988807858554100800,\t-0.988800397589737480,\t-0.988792934153373220,\t-0.988785468245026560,\t-0.988777999864716260,\t\n-0.988770529012460990,\t-0.988763055688279380,\t-0.988755579892190100,\t-0.988748101624211890,\t-0.988740620884363430,\t-0.988733137672663350,\t-0.988725651989130540,\t-0.988718163833783530,\t\n-0.988710673206641080,\t-0.988703180107721960,\t-0.988695684537045040,\t-0.988688186494628750,\t-0.988680685980492080,\t-0.988673182994653570,\t-0.988665677537132190,\t-0.988658169607946610,\t\n-0.988650659207115700,\t-0.988643146334658000,\t-0.988635630990592480,\t-0.988628113174937930,\t-0.988620592887713090,\t-0.988613070128936730,\t-0.988605544898627730,\t-0.988598017196804730,\t\n-0.988590487023486840,\t-0.988582954378692700,\t-0.988575419262441190,\t-0.988567881674751070,\t-0.988560341615641320,\t-0.988552799085130610,\t-0.988545254083238010,\t-0.988537706609982300,\t\n-0.988530156665382240,\t-0.988522604249456820,\t-0.988515049362224900,\t-0.988507492003705250,\t-0.988499932173916960,\t-0.988492369872878920,\t-0.988484805100609880,\t-0.988477237857128820,\t\n-0.988469668142454630,\t-0.988462095956606280,\t-0.988454521299602760,\t-0.988446944171462950,\t-0.988439364572205710,\t-0.988431782501850040,\t-0.988424197960414920,\t-0.988416610947919330,\t\n-0.988409021464382250,\t-0.988401429509822570,\t-0.988393835084259380,\t-0.988386238187711540,\t-0.988378638820198160,\t-0.988371036981738120,\t-0.988363432672350490,\t-0.988355825892054280,\t\n-0.988348216640868580,\t-0.988340604918812260,\t-0.988332990725904410,\t-0.988325374062164140,\t-0.988317754927610430,\t-0.988310133322262360,\t-0.988302509246138940,\t-0.988294882699259250,\t\n-0.988287253681642270,\t-0.988279622193307230,\t-0.988271988234273090,\t-0.988264351804559070,\t-0.988256712904184040,\t-0.988249071533167320,\t-0.988241427691527900,\t-0.988233781379284970,\t\n-0.988226132596457530,\t-0.988218481343064780,\t-0.988210827619125820,\t-0.988203171424659740,\t-0.988195512759685760,\t-0.988187851624223070,\t-0.988180188018290660,\t-0.988172521941907860,\t\n-0.988164853395093750,\t-0.988157182377867430,\t-0.988149508890248220,\t-0.988141832932255220,\t-0.988134154503907620,\t-0.988126473605224650,\t-0.988118790236225400,\t-0.988111104396929290,\t\n-0.988103416087355410,\t-0.988095725307522990,\t-0.988088032057451220,\t-0.988080336337159420,\t-0.988072638146666790,\t-0.988064937485992440,\t-0.988057234355155910,\t-0.988049528754176180,\t\n-0.988041820683072670,\t-0.988034110141864600,\t-0.988026397130571280,\t-0.988018681649211920,\t-0.988010963697805940,\t-0.988003243276372460,\t-0.987995520384930880,\t-0.987987795023500540,\t\n-0.987980067192100740,\t-0.987972336890750700,\t-0.987964604119469850,\t-0.987956868878277490,\t-0.987949131167192960,\t-0.987941390986235680,\t-0.987933648335424740,\t-0.987925903214779800,\t\n-0.987918155624320060,\t-0.987910405564065060,\t-0.987902653034033910,\t-0.987894898034246130,\t-0.987887140564721160,\t-0.987879380625478310,\t-0.987871618216537020,\t-0.987863853337916710,\t\n-0.987856085989636700,\t-0.987848316171716530,\t-0.987840543884175530,\t-0.987832769127033220,\t-0.987824991900309040,\t-0.987817212204022300,\t-0.987809430038192550,\t-0.987801645402839100,\t\n-0.987793858297981720,\t-0.987786068723639610,\t-0.987778276679832310,\t-0.987770482166579370,\t-0.987762685183900200,\t-0.987754885731814360,\t-0.987747083810341260,\t-0.987739279419500460,\t\n-0.987731472559311490,\t-0.987723663229793770,\t-0.987715851430966960,\t-0.987708037162850490,\t-0.987700220425463900,\t-0.987692401218826840,\t-0.987684579542958740,\t-0.987676755397879140,\t\n-0.987668928783607680,\t-0.987661099700163910,\t-0.987653268147567380,\t-0.987645434125837720,\t-0.987637597634994480,\t-0.987629758675057200,\t-0.987621917246045530,\t-0.987614073347979130,\t\n-0.987606226980877410,\t-0.987598378144760260,\t-0.987590526839647100,\t-0.987582673065557580,\t-0.987574816822511470,\t-0.987566958110528300,\t-0.987559096929627730,\t-0.987551233279829410,\t\n-0.987543367161152990,\t-0.987535498573618110,\t-0.987527627517244540,\t-0.987519753992051940,\t-0.987511877998059950,\t-0.987503999535288220,\t-0.987496118603756520,\t-0.987488235203484390,\t\n-0.987480349334491910,\t-0.987472460996798420,\t-0.987464570190423770,\t-0.987456676915387740,\t-0.987448781171709980,\t-0.987440882959410240,\t-0.987432982278508400,\t-0.987425079129024000,\t\n-0.987417173510977020,\t-0.987409265424387010,\t-0.987401354869273830,\t-0.987393441845657250,\t-0.987385526353557140,\t-0.987377608392993160,\t-0.987369687963985280,\t-0.987361765066553040,\t\n-0.987353839700716440,\t-0.987345911866495230,\t-0.987337981563909170,\t-0.987330048792978250,\t-0.987322113553722240,\t-0.987314175846160880,\t-0.987306235670314060,\t-0.987298293026201760,\t\n-0.987290347913843620,\t-0.987282400333259650,\t-0.987274450284469700,\t-0.987266497767493530,\t-0.987258542782351260,\t-0.987250585329062510,\t-0.987242625407647400,\t-0.987234663018125680,\t\n-0.987226698160517220,\t-0.987218730834842130,\t-0.987210761041120160,\t-0.987202788779371400,\t-0.987194814049615510,\t-0.987186836851872700,\t-0.987178857186162720,\t-0.987170875052505560,\t\n-0.987162890450921320,\t-0.987154903381429750,\t-0.987146913844051070,\t-0.987138921838805030,\t-0.987130927365711620,\t-0.987122930424790930,\t-0.987114931016062960,\t-0.987106929139547670,\t\n-0.987098924795264950,\t-0.987090917983235010,\t-0.987082908703477810,\t-0.987074896956013250,\t-0.987066882740861520,\t-0.987058866058042490,\t-0.987050846907576380,\t-0.987042825289483170,\t\n-0.987034801203782840,\t-0.987026774650495490,\t-0.987018745629641310,\t-0.987010714141240090,\t-0.987002680185312230,\t-0.986994643761877620,\t-0.986986604870956350,\t-0.986978563512568740,\t\n-0.986970519686734550,\t-0.986962473393474090,\t-0.986954424632807470,\t-0.986946373404754880,\t-0.986938319709336210,\t-0.986930263546571870,\t-0.986922204916481750,\t-0.986914143819086150,\t\n-0.986906080254405180,\t-0.986898014222459150,\t-0.986889945723267940,\t-0.986881874756851960,\t-0.986873801323231210,\t-0.986865725422426010,\t-0.986857647054456440,\t-0.986849566219342720,\t\n-0.986841482917105160,\t-0.986833397147763860,\t-0.986825308911339130,\t-0.986817218207851070,\t-0.986809125037319990,\t-0.986801029399766110,\t-0.986792931295209620,\t-0.986784830723670850,\t\n-0.986776727685170000,\t-0.986768622179727270,\t-0.986760514207362990,\t-0.986752403768097470,\t-0.986744290861950920,\t-0.986736175488943660,\t-0.986728057649095990,\t-0.986719937342428130,\t\n-0.986711814568960510,\t-0.986703689328713220,\t-0.986695561621706800,\t-0.986687431447961450,\t-0.986679298807497500,\t-0.986671163700335250,\t-0.986663026126495150,\t-0.986654886085997610,\t\n-0.986646743578862620,\t-0.986638598605110940,\t-0.986630451164762780,\t-0.986622301257838340,\t-0.986614148884358280,\t-0.986605994044342790,\t-0.986597836737812320,\t-0.986589676964787280,\t\n-0.986581514725288100,\t-0.986573350019334990,\t-0.986565182846948610,\t-0.986557013208149260,\t-0.986548841102957370,\t-0.986540666531393380,\t-0.986532489493477720,\t-0.986524309989230800,\t\n-0.986516128018673170,\t-0.986507943581825140,\t-0.986499756678707370,\t-0.986491567309340180,\t-0.986483375473743980,\t-0.986475181171939440,\t-0.986466984403946870,\t-0.986458785169786910,\t\n-0.986450583469479890,\t-0.986442379303046460,\t-0.986434172670507150,\t-0.986425963571882390,\t-0.986417752007192620,\t-0.986409537976458580,\t-0.986401321479700610,\t-0.986393102516939350,\t\n-0.986384881088195440,\t-0.986376657193489210,\t-0.986368430832841430,\t-0.986360202006272500,\t-0.986351970713803090,\t-0.986343736955453740,\t-0.986335500731244990,\t-0.986327262041197580,\t\n-0.986319020885331970,\t-0.986310777263668890,\t-0.986302531176228790,\t-0.986294282623032430,\t-0.986286031604100330,\t-0.986277778119453160,\t-0.986269522169111460,\t-0.986261263753096080,\t\n-0.986253002871427360,\t-0.986244739524126280,\t-0.986236473711213370,\t-0.986228205432709280,\t-0.986219934688634560,\t-0.986211661479010070,\t-0.986203385803856470,\t-0.986195107663194290,\t\n-0.986186827057044410,\t-0.986178543985427480,\t-0.986170258448364260,\t-0.986161970445875280,\t-0.986153679977981420,\t-0.986145387044703340,\t-0.986137091646061780,\t-0.986128793782077520,\t\n-0.986120493452771310,\t-0.986112190658163800,\t-0.986103885398275760,\t-0.986095577673128170,\t-0.986087267482741560,\t-0.986078954827136700,\t-0.986070639706334570,\t-0.986062322120355830,\t\n-0.986054002069221220,\t-0.986045679552951640,\t-0.986037354571567830,\t-0.986029027125090660,\t-0.986020697213540910,\t-0.986012364836939440,\t-0.986004029995307120,\t-0.985995692688664600,\t\n-0.985987352917032880,\t-0.985979010680432920,\t-0.985970665978885270,\t-0.985962318812411030,\t-0.985953969181030950,\t-0.985945617084765910,\t-0.985937262523636890,\t-0.985928905497664760,\t\n-0.985920546006870290,\t-0.985912184051274450,\t-0.985903819630898240,\t-0.985895452745762400,\t-0.985887083395887930,\t-0.985878711581295810,\t-0.985870337302006900,\t-0.985861960558042090,\t\n-0.985853581349422360,\t-0.985845199676168790,\t-0.985836815538302160,\t-0.985828428935843440,\t-0.985820039868813720,\t-0.985811648337233890,\t-0.985803254341124920,\t-0.985794857880507800,\t\n-0.985786458955403620,\t-0.985778057565833250,\t-0.985769653711817680,\t-0.985761247393378000,\t-0.985752838610535200,\t-0.985744427363310360,\t-0.985736013651724470,\t-0.985727597475798410,\t\n-0.985719178835553490,\t-0.985710757731010580,\t-0.985702334162190770,\t-0.985693908129115060,\t-0.985685479631804640,\t-0.985677048670280500,\t-0.985668615244563840,\t-0.985660179354675540,\t\n-0.985651741000636790,\t-0.985643300182468710,\t-0.985634856900192370,\t-0.985626411153828990,\t-0.985617962943399430,\t-0.985609512268925010,\t-0.985601059130426840,\t-0.985592603527926100,\t\n-0.985584145461443680,\t-0.985575684931001010,\t-0.985567221936619050,\t-0.985558756478319140,\t-0.985550288556122260,\t-0.985541818170049710,\t-0.985533345320122600,\t-0.985524870006362130,\t\n-0.985516392228789400,\t-0.985507911987425820,\t-0.985499429282292390,\t-0.985490944113410320,\t-0.985482456480801020,\t-0.985473966384485480,\t-0.985465473824485130,\t-0.985456978800821060,\t\n-0.985448481313514480,\t-0.985439981362586700,\t-0.985431478948059050,\t-0.985422974069952720,\t-0.985414466728288920,\t-0.985405956923088850,\t-0.985397444654373960,\t-0.985388929922165540,\t\n-0.985380412726484690,\t-0.985371893067352840,\t-0.985363370944791210,\t-0.985354846358821200,\t-0.985346319309464040,\t-0.985337789796741140,\t-0.985329257820673820,\t-0.985320723381283290,\t\n-0.985312186478590870,\t-0.985303647112618090,\t-0.985295105283386150,\t-0.985286560990916490,\t-0.985278014235230310,\t-0.985269465016349270,\t-0.985260913334294440,\t-0.985252359189087380,\t\n-0.985243802580749390,\t-0.985235243509301920,\t-0.985226681974766370,\t-0.985218117977164080,\t-0.985209551516516460,\t-0.985200982592844940,\t-0.985192411206171070,\t-0.985183837356516160,\t\n-0.985175261043901520,\t-0.985166682268348910,\t-0.985158101029879440,\t-0.985149517328514860,\t-0.985140931164276370,\t-0.985132342537185620,\t-0.985123751447264050,\t-0.985115157894532970,\t\n-0.985106561879014130,\t-0.985097963400728750,\t-0.985089362459698580,\t-0.985080759055944940,\t-0.985072153189489490,\t-0.985063544860353520,\t-0.985054934068558820,\t-0.985046320814126690,\t\n-0.985037705097078780,\t-0.985029086917436620,\t-0.985020466275221770,\t-0.985011843170455760,\t-0.985003217603160120,\t-0.984994589573356390,\t-0.984985959081066230,\t-0.984977326126311170,\t\n-0.984968690709112750,\t-0.984960052829492730,\t-0.984951412487472420,\t-0.984942769683073700,\t-0.984934124416318000,\t-0.984925476687227070,\t-0.984916826495822350,\t-0.984908173842125590,\t\n-0.984899518726158440,\t-0.984890861147942440,\t-0.984882201107499240,\t-0.984873538604850610,\t-0.984864873640018180,\t-0.984856206213023500,\t-0.984847536323888330,\t-0.984838863972634320,\t\n-0.984830189159283110,\t-0.984821511883856470,\t-0.984812832146376050,\t-0.984804149946863490,\t-0.984795465285340570,\t-0.984786778161829020,\t-0.984778088576350520,\t-0.984769396528926810,\t\n-0.984760702019579660,\t-0.984752005048330710,\t-0.984743305615201740,\t-0.984734603720214490,\t-0.984725899363390720,\t-0.984717192544752210,\t-0.984708483264320700,\t-0.984699771522118070,\t\n-0.984691057318165970,\t-0.984682340652486170,\t-0.984673621525100630,\t-0.984664899936030900,\t-0.984656175885299080,\t-0.984647449372926700,\t-0.984638720398935630,\t-0.984629988963347970,\t\n-0.984621255066185140,\t-0.984612518707469350,\t-0.984603779887222140,\t-0.984595038605465490,\t-0.984586294862221270,\t-0.984577548657511350,\t-0.984568799991357490,\t-0.984560048863781680,\t\n-0.984551295274805670,\t-0.984542539224451560,\t-0.984533780712741000,\t-0.984525019739695970,\t-0.984516256305338460,\t-0.984507490409690320,\t-0.984498722052773330,\t-0.984489951234609690,\t\n-0.984481177955221050,\t-0.984472402214629510,\t-0.984463624012857030,\t-0.984454843349925390,\t-0.984446060225856790,\t-0.984437274640672880,\t-0.984428486594395860,\t-0.984419696087047600,\t\n-0.984410903118650090,\t-0.984402107689225310,\t-0.984393309798795360,\t-0.984384509447382090,\t-0.984375706635007510,\t-0.984366901361693690,\t-0.984358093627462630,\t-0.984349283432336300,\t\n-0.984340470776336800,\t-0.984331655659485990,\t-0.984322838081806210,\t-0.984314018043319190,\t-0.984305195544047270,\t-0.984296370584012310,\t-0.984287543163236410,\t-0.984278713281741660,\t\n-0.984269880939550150,\t-0.984261046136683860,\t-0.984252208873165000,\t-0.984243369149015670,\t-0.984234526964257840,\t-0.984225682318913720,\t-0.984216835213005400,\t-0.984207985646555090,\t\n-0.984199133619584670,\t-0.984190279132116430,\t-0.984181422184172590,\t-0.984172562775775140,\t-0.984163700906946270,\t-0.984154836577708190,\t-0.984145969788082890,\t-0.984137100538092780,\t\n-0.984128228827759970,\t-0.984119354657106430,\t-0.984110478026154590,\t-0.984101598934926550,\t-0.984092717383444620,\t-0.984083833371730780,\t-0.984074946899807350,\t-0.984066057967696530,\t\n-0.984057166575420640,\t-0.984048272723001770,\t-0.984039376410462350,\t-0.984030477637824360,\t-0.984021576405110230,\t-0.984012672712342160,\t-0.984003766559542360,\t-0.983994857946733140,\t\n-0.983985946873936920,\t-0.983977033341175700,\t-0.983968117348471890,\t-0.983959198895847820,\t-0.983950277983325790,\t-0.983941354610928020,\t-0.983932428778676820,\t-0.983923500486594600,\t\n-0.983914569734703590,\t-0.983905636523026320,\t-0.983896700851584760,\t-0.983887762720401570,\t-0.983878822129498840,\t-0.983869879078899220,\t-0.983860933568624810,\t-0.983851985598698130,\t\n-0.983843035169141400,\t-0.983834082279977150,\t-0.983825126931227590,\t-0.983816169122915360,\t-0.983807208855062560,\t-0.983798246127691840,\t-0.983789280940825520,\t-0.983780313294486010,\t\n-0.983771343188695640,\t-0.983762370623476930,\t-0.983753395598852220,\t-0.983744418114844140,\t-0.983735438171475020,\t-0.983726455768767270,\t-0.983717470906743330,\t-0.983708483585425730,\t\n-0.983699493804837010,\t-0.983690501564999490,\t-0.983681506865935700,\t-0.983672509707668170,\t-0.983663510090219350,\t-0.983654508013611760,\t-0.983645503477867940,\t-0.983636496483010330,\t\n-0.983627487029061440,\t-0.983618475116043940,\t-0.983609460743980150,\t-0.983600443912892700,\t-0.983591424622804240,\t-0.983582402873737220,\t-0.983573378665714040,\t-0.983564351998757580,\t\n-0.983555322872890160,\t-0.983546291288134420,\t-0.983537257244513020,\t-0.983528220742048380,\t-0.983519181780763250,\t-0.983510140360680190,\t-0.983501096481821710,\t-0.983492050144210590,\t\n-0.983483001347869260,\t-0.983473950092820460,\t-0.983464896379086740,\t-0.983455840206690860,\t-0.983446781575655240,\t-0.983437720486002860,\t-0.983428656937756050,\t-0.983419590930937670,\t\n-0.983410522465570260,\t-0.983401451541676570,\t-0.983392378159279160,\t-0.983383302318400880,\t-0.983374224019064380,\t-0.983365143261292320,\t-0.983356060045107340,\t-0.983346974370532200,\t\n-0.983337886237589660,\t-0.983328795646302490,\t-0.983319702596693210,\t-0.983310607088784700,\t-0.983301509122599730,\t-0.983292408698160920,\t-0.983283305815491170,\t-0.983274200474613000,\t\n-0.983265092675549510,\t-0.983255982418323130,\t-0.983246869702956940,\t-0.983237754529473480,\t-0.983228636897895750,\t-0.983219516808246260,\t-0.983210394260548020,\t-0.983201269254823870,\t\n-0.983192141791096490,\t-0.983183011869388830,\t-0.983173879489723570,\t-0.983164744652123670,\t-0.983155607356611890,\t-0.983146467603211010,\t-0.983137325391943980,\t-0.983128180722833810,\t\n-0.983119033595903020,\t-0.983109884011174720,\t-0.983100731968671650,\t-0.983091577468416800,\t-0.983082420510432930,\t-0.983073261094743130,\t-0.983064099221370060,\t-0.983054934890336800,\t\n-0.983045768101666220,\t-0.983036598855381190,\t-0.983027427151504600,\t-0.983018252990059520,\t-0.983009076371068820,\t-0.982999897294555390,\t-0.982990715760542310,\t-0.982981531769052340,\t\n-0.982972345320108580,\t-0.982963156413733890,\t-0.982953965049951470,\t-0.982944771228783990,\t-0.982935574950254630,\t-0.982926376214386280,\t-0.982917175021202130,\t-0.982907971370724940,\t\n-0.982898765262977810,\t-0.982889556697983830,\t-0.982880345675765880,\t-0.982871132196347140,\t-0.982861916259750500,\t-0.982852697865999160,\t-0.982843477015115980,\t-0.982834253707124180,\t\n-0.982825027942046630,\t-0.982815799719906620,\t-0.982806569040727160,\t-0.982797335904531220,\t-0.982788100311341890,\t-0.982778862261182380,\t-0.982769621754075670,\t-0.982760378790044960,\t\n-0.982751133369113240,\t-0.982741885491303700,\t-0.982732635156639440,\t-0.982723382365143670,\t-0.982714127116839360,\t-0.982704869411749730,\t-0.982695609249897960,\t-0.982686346631307160,\t\n-0.982677081556000530,\t-0.982667814024001160,\t-0.982658544035332260,\t-0.982649271590016920,\t-0.982639996688078550,\t-0.982630719329540050,\t-0.982621439514424820,\t-0.982612157242755970,\t\n-0.982602872514556800,\t-0.982593585329850420,\t-0.982584295688660010,\t-0.982575003591008910,\t-0.982565709036920310,\t-0.982556412026417410,\t-0.982547112559523540,\t-0.982537810636261780,\t\n-0.982528506256655660,\t-0.982519199420728070,\t-0.982509890128502650,\t-0.982500578380002490,\t-0.982491264175250790,\t-0.982481947514270980,\t-0.982472628397086270,\t-0.982463306823720070,\t\n-0.982453982794195490,\t-0.982444656308536060,\t-0.982435327366764870,\t-0.982425995968905450,\t-0.982416662114981020,\t-0.982407325805015000,\t-0.982397987039030580,\t-0.982388645817051210,\t\n-0.982379302139100300,\t-0.982369956005201050,\t-0.982360607415376900,\t-0.982351256369651260,\t-0.982341902868047570,\t-0.982332546910589020,\t-0.982323188497299050,\t-0.982313827628201190,\t\n-0.982304464303318750,\t-0.982295098522675160,\t-0.982285730286293850,\t-0.982276359594198120,\t-0.982266986446411640,\t-0.982257610842957600,\t-0.982248232783859530,\t-0.982238852269140870,\t\n-0.982229469298825150,\t-0.982220083872935690,\t-0.982210695991496020,\t-0.982201305654529570,\t-0.982191912862059980,\t-0.982182517614110460,\t-0.982173119910704770,\t-0.982163719751866230,\t\n-0.982154317137618470,\t-0.982144912067984820,\t-0.982135504542988920,\t-0.982126094562654210,\t-0.982116682127004310,\t-0.982107267236062790,\t-0.982097849889852940,\t-0.982088430088398520,\t\n-0.982079007831723080,\t-0.982069583119850150,\t-0.982060155952803160,\t-0.982050726330605860,\t-0.982041294253281680,\t-0.982031859720854270,\t-0.982022422733347280,\t-0.982012983290784240,\t\n-0.982003541393188570,\t-0.981994097040584270,\t-0.981984650232994530,\t-0.981975200970443330,\t-0.981965749252953990,\t-0.981956295080550380,\t-0.981946838453256030,\t-0.981937379371094600,\t\n-0.981927917834089610,\t-0.981918453842264950,\t-0.981908987395644030,\t-0.981899518494250720,\t-0.981890047138108570,\t-0.981880573327241320,\t-0.981871097061672750,\t-0.981861618341426270,\t\n-0.981852137166525860,\t-0.981842653536995070,\t-0.981833167452857650,\t-0.981823678914137240,\t-0.981814187920857730,\t-0.981804694473042750,\t-0.981795198570715950,\t-0.981785700213901210,\t\n-0.981776199402622280,\t-0.981766696136902710,\t-0.981757190416766570,\t-0.981747682242237300,\t-0.981738171613338870,\t-0.981728658530095060,\t-0.981719142992529600,\t-0.981709625000666160,\t\n-0.981700104554528830,\t-0.981690581654141140,\t-0.981681056299526960,\t-0.981671528490710270,\t-0.981661998227714610,\t-0.981652465510564070,\t-0.981642930339282290,\t-0.981633392713893270,\t\n-0.981623852634420760,\t-0.981614310100888510,\t-0.981604765113320620,\t-0.981595217671740740,\t-0.981585667776172840,\t-0.981576115426640810,\t-0.981566560623168380,\t-0.981557003365779670,\t\n-0.981547443654498310,\t-0.981537881489348510,\t-0.981528316870353910,\t-0.981518749797538500,\t-0.981509180270926260,\t-0.981499608290541060,\t-0.981490033856406760,\t-0.981480456968547470,\t\n-0.981470877626987040,\t-0.981461295831749460,\t-0.981451711582858490,\t-0.981442124880338330,\t-0.981432535724212960,\t-0.981422944114506040,\t-0.981413350051241970,\t-0.981403753534444420,\t\n-0.981394154564137480,\t-0.981384553140345120,\t-0.981374949263091430,\t-0.981365342932400410,\t-0.981355734148295910,\t-0.981346122910802140,\t-0.981336509219943090,\t-0.981326893075742830,\t\n-0.981317274478225140,\t-0.981307653427414440,\t-0.981298029923334590,\t-0.981288403966009580,\t-0.981278775555463610,\t-0.981269144691720660,\t-0.981259511374804940,\t-0.981249875604740420,\t\n-0.981240237381551080,\t-0.981230596705261360,\t-0.981220953575895010,\t-0.981211307993476330,\t-0.981201659958029330,\t-0.981192009469578190,\t-0.981182356528147000,\t-0.981172701133759980,\t\n-0.981163043286441220,\t-0.981153382986214790,\t-0.981143720233104920,\t-0.981134055027135800,\t-0.981124387368331520,\t-0.981114717256716170,\t-0.981105044692314190,\t-0.981095369675149430,\t\n-0.981085692205246440,\t-0.981076012282629080,\t-0.981066329907321680,\t-0.981056645079348530,\t-0.981046957798733740,\t-0.981037268065501510,\t-0.981027575879676260,\t-0.981017881241281970,\t\n-0.981008184150342970,\t-0.980998484606883440,\t-0.980988782610927810,\t-0.980979078162500180,\t-0.980969371261624870,\t-0.980959661908326170,\t-0.980949950102628310,\t-0.980940235844555470,\t\n-0.980930519134132100,\t-0.980920799971382480,\t-0.980911078356330850,\t-0.980901354289001490,\t-0.980891627769418740,\t-0.980881898797606900,\t-0.980872167373590400,\t-0.980862433497393440,\t\n-0.980852697169040330,\t-0.980842958388555510,\t-0.980833217155963390,\t-0.980823473471288180,\t-0.980813727334554190,\t-0.980803978745785950,\t-0.980794227705007790,\t-0.980784474212244020,\t\n-0.980774718267519050,\t-0.980764959870857430,\t-0.980755199022283250,\t-0.980745435721821160,\t-0.980735669969495350,\t-0.980725901765330480,\t-0.980716131109350850,\t-0.980706358001580900,\t\n-0.980696582442045050,\t-0.980686804430767720,\t-0.980677023967773340,\t-0.980667241053086450,\t-0.980657455686731460,\t-0.980647667868732810,\t-0.980637877599115030,\t-0.980628084877902540,\t\n-0.980618289705119880,\t-0.980608492080791370,\t-0.980598692004941760,\t-0.980588889477595370,\t-0.980579084498776730,\t-0.980569277068510380,\t-0.980559467186820970,\t-0.980549654853732690,\t\n-0.980539840069270420,\t-0.980530022833458470,\t-0.980520203146321490,\t-0.980510381007884010,\t-0.980500556418170580,\t-0.980490729377205830,\t-0.980480899885014080,\t-0.980471067941620200,\t\n-0.980461233547048620,\t-0.980451396701323970,\t-0.980441557404470920,\t-0.980431715656513880,\t-0.980421871457477500,\t-0.980412024807386540,\t-0.980402175706265420,\t-0.980392324154139020,\t\n-0.980382470151031640,\t-0.980372613696968150,\t-0.980362754791973100,\t-0.980352893436071240,\t-0.980343029629287100,\t-0.980333163371645330,\t-0.980323294663170810,\t-0.980313423503887840,\t\n-0.980303549893821510,\t-0.980293673832996150,\t-0.980283795321436720,\t-0.980273914359167780,\t-0.980264030946214060,\t-0.980254145082600110,\t-0.980244256768351030,\t-0.980234366003491120,\t\n-0.980224472788045480,\t-0.980214577122038520,\t-0.980204679005495130,\t-0.980194778438440050,\t-0.980184875420898050,\t-0.980174969952893880,\t-0.980165062034452310,\t-0.980155151665597970,\t\n-0.980145238846355850,\t-0.980135323576750590,\t-0.980125405856806960,\t-0.980115485686549940,\t-0.980105563066004160,\t-0.980095637995194500,\t-0.980085710474145610,\t-0.980075780502882580,\t\n-0.980065848081430050,\t-0.980055913209813000,\t-0.980045975888055980,\t-0.980036036116184170,\t-0.980026093894222240,\t-0.980016149222195040,\t-0.980006202100127450,\t-0.979996252528044450,\t\n-0.979986300505970800,\t-0.979976346033931360,\t-0.979966389111951000,\t-0.979956429740054700,\t-0.979946467918267340,\t-0.979936503646613890,\t-0.979926536925119110,\t-0.979916567753807980,\t\n-0.979906596132705480,\t-0.979896622061836360,\t-0.979886645541225840,\t-0.979876666570898560,\t-0.979866685150879710,\t-0.979856701281194180,\t-0.979846714961866820,\t-0.979836726192922720,\t\n-0.979826734974386770,\t-0.979816741306284040,\t-0.979806745188639420,\t-0.979796746621477980,\t-0.979786745604824590,\t-0.979776742138704360,\t-0.979766736223142360,\t-0.979756727858163370,\t\n-0.979746717043792680,\t-0.979736703780055170,\t-0.979726688066975940,\t-0.979716669904579950,\t-0.979706649292892200,\t-0.979696626231937980,\t-0.979686600721742070,\t-0.979676572762329780,\t\n-0.979666542353725970,\t-0.979656509495955840,\t-0.979646474189044380,\t-0.979636436433016790,\t-0.979626396227898040,\t-0.979616353573713460,\t-0.979606308470487800,\t-0.979596260918246480,\t\n-0.979586210917014480,\t-0.979576158466817000,\t-0.979566103567679040,\t-0.979556046219625890,\t-0.979545986422682650,\t-0.979535924176874300,\t-0.979525859482226260,\t-0.979515792338763510,\t\n-0.979505722746511380,\t-0.979495650705494820,\t-0.979485576215739280,\t-0.979475499277269730,\t-0.979465419890111380,\t-0.979455338054289530,\t-0.979445253769829380,\t-0.979435167036756040,\t\n-0.979425077855094810,\t-0.979414986224870780,\t-0.979404892146109370,\t-0.979394795618835690,\t-0.979384696643075150,\t-0.979374595218852730,\t-0.979364491346193860,\t-0.979354385025123730,\t\n-0.979344276255667780,\t-0.979334165037850980,\t-0.979324051371698760,\t-0.979313935257236530,\t-0.979303816694489400,\t-0.979293695683482790,\t-0.979283572224241890,\t-0.979273446316792030,\t\n-0.979263317961158620,\t-0.979253187157366870,\t-0.979243053905442080,\t-0.979232918205409810,\t-0.979222780057295130,\t-0.979212639461123580,\t-0.979202496416920360,\t-0.979192350924711020,\t\n-0.979182202984520630,\t-0.979172052596374850,\t-0.979161899760298880,\t-0.979151744476318250,\t-0.979141586744458170,\t-0.979131426564744170,\t-0.979121263937201560,\t-0.979111098861855880,\t\n-0.979100931338732330,\t-0.979090761367856550,\t-0.979080588949253870,\t-0.979070414082949590,\t-0.979060236768969470,\t-0.979050057007338600,\t-0.979039874798082630,\t-0.979029690141226980,\t\n-0.979019503036797190,\t-0.979009313484818570,\t-0.978999121485316650,\t-0.978988927038316860,\t-0.978978730143844840,\t-0.978968530801926030,\t-0.978958329012585840,\t-0.978948124775849800,\t\n-0.978937918091743580,\t-0.978927708960292460,\t-0.978917497381522010,\t-0.978907283355457960,\t-0.978897066882125520,\t-0.978886847961550570,\t-0.978876626593758400,\t-0.978866402778774790,\t\n-0.978856176516625040,\t-0.978845947807334920,\t-0.978835716650929940,\t-0.978825483047435660,\t-0.978815246996877610,\t-0.978805008499281540,\t-0.978794767554672870,\t-0.978784524163077370,\t\n-0.978774278324520460,\t-0.978764030039028010,\t-0.978753779306625330,\t-0.978743526127338280,\t-0.978733270501192300,\t-0.978723012428213250,\t-0.978712751908426660,\t-0.978702488941858180,\t\n-0.978692223528533470,\t-0.978681955668478150,\t-0.978671685361718110,\t-0.978661412608278660,\t-0.978651137408185770,\t-0.978640859761465090,\t-0.978630579668142150,\t-0.978620297128242830,\t\n-0.978610012141792770,\t-0.978599724708817620,\t-0.978589434829343240,\t-0.978579142503395170,\t-0.978568847730999390,\t-0.978558550512181440,\t-0.978548250846967060,\t-0.978537948735382020,\t\n-0.978527644177452190,\t-0.978517337173203220,\t-0.978507027722660960,\t-0.978496715825851070,\t-0.978486401482799420,\t-0.978476084693531760,\t-0.978465765458073840,\t-0.978455443776451550,\t\n-0.978445119648690630,\t-0.978434793074816960,\t-0.978424464054856280,\t-0.978414132588834470,\t-0.978403798676777290,\t-0.978393462318710600,\t-0.978383123514660280,\t-0.978372782264652190,\t\n-0.978362438568712080,\t-0.978352092426865940,\t-0.978341743839139410,\t-0.978331392805558700,\t-0.978321039326149440,\t-0.978310683400937630,\t-0.978300325029949010,\t-0.978289964213209680,\t\n-0.978279600950745400,\t-0.978269235242582020,\t-0.978258867088745760,\t-0.978248496489262150,\t-0.978238123444157390,\t-0.978227747953457350,\t-0.978217370017187890,\t-0.978206989635375000,\t\n-0.978196606808044660,\t-0.978186221535222720,\t-0.978175833816935290,\t-0.978165443653208340,\t-0.978155051044067750,\t-0.978144655989539480,\t-0.978134258489649630,\t-0.978123858544424070,\t\n-0.978113456153888890,\t-0.978103051318070070,\t-0.978092644036993590,\t-0.978082234310685530,\t-0.978071822139171880,\t-0.978061407522478720,\t-0.978050990460632040,\t-0.978040570953657820,\t\n-0.978030149001582250,\t-0.978019724604431210,\t-0.978009297762230890,\t-0.977998868475007390,\t-0.977988436742786680,\t-0.977978002565594860,\t-0.977967565943458130,\t-0.977957126876402350,\t\n-0.977946685364453840,\t-0.977936241407638570,\t-0.977925795005982760,\t-0.977915346159512370,\t-0.977904894868253720,\t-0.977894441132232780,\t-0.977883984951475660,\t-0.977873526326008660,\t\n-0.977863065255857870,\t-0.977852601741049380,\t-0.977842135781609390,\t-0.977831667377564000,\t-0.977821196528939510,\t-0.977810723235762010,\t-0.977800247498057830,\t-0.977789769315852820,\t\n-0.977779288689173520,\t-0.977768805618045910,\t-0.977758320102496410,\t-0.977747832142551010,\t-0.977737341738236120,\t-0.977726848889577730,\t-0.977716353596602360,\t-0.977705855859336000,\t\n-0.977695355677805080,\t-0.977684853052035780,\t-0.977674347982054210,\t-0.977663840467886900,\t-0.977653330509559940,\t-0.977642818107099740,\t-0.977632303260532410,\t-0.977621785969884360,\t\n-0.977611266235181800,\t-0.977600744056451140,\t-0.977590219433718600,\t-0.977579692367010480,\t-0.977569162856353090,\t-0.977558630901772860,\t-0.977548096503296100,\t-0.977537559660949020,\t\n-0.977527020374758030,\t-0.977516478644749550,\t-0.977505934470949800,\t-0.977495387853385300,\t-0.977484838792082260,\t-0.977474287287067200,\t-0.977463733338366340,\t-0.977453176946006200,\t\n-0.977442618110013100,\t-0.977432056830413450,\t-0.977421493107233700,\t-0.977410926940500140,\t-0.977400358330239310,\t-0.977389787276477630,\t-0.977379213779241420,\t-0.977368637838557210,\t\n-0.977358059454451420,\t-0.977347478626950370,\t-0.977336895356080700,\t-0.977326309641868840,\t-0.977315721484341200,\t-0.977305130883524110,\t-0.977294537839444310,\t-0.977283942352128230,\t\n-0.977273344421602190,\t-0.977262744047892820,\t-0.977252141231026660,\t-0.977241535971030030,\t-0.977230928267929570,\t-0.977220318121751810,\t-0.977209705532523290,\t-0.977199090500270540,\t\n-0.977188473025019990,\t-0.977177853106798280,\t-0.977167230745631940,\t-0.977156605941547520,\t-0.977145978694571540,\t-0.977135349004730760,\t-0.977124716872051490,\t-0.977114082296560380,\t\n-0.977103445278284190,\t-0.977092805817249330,\t-0.977082163913482460,\t-0.977071519567010220,\t-0.977060872777859020,\t-0.977050223546055860,\t-0.977039571871627040,\t-0.977028917754599210,\t\n-0.977018261194999240,\t-0.977007602192853540,\t-0.976996940748188770,\t-0.976986276861031790,\t-0.976975610531409020,\t-0.976964941759347230,\t-0.976954270544873160,\t-0.976943596888013350,\t\n-0.976932920788794570,\t-0.976922242247243440,\t-0.976911561263386740,\t-0.976900877837251100,\t-0.976890191968863400,\t-0.976879503658250050,\t-0.976868812905438030,\t-0.976858119710454000,\t\n-0.976847424073324590,\t-0.976836725994076670,\t-0.976826025472737000,\t-0.976815322509332120,\t-0.976804617103888990,\t-0.976793909256434390,\t-0.976783198966994950,\t-0.976772486235597540,\t\n-0.976761771062268910,\t-0.976751053447035830,\t-0.976740333389925160,\t-0.976729610890963660,\t-0.976718885950178080,\t-0.976708158567595410,\t-0.976697428743242170,\t-0.976686696477145460,\t\n-0.976675961769331910,\t-0.976665224619828630,\t-0.976654485028662140,\t-0.976643742995859540,\t-0.976632998521447470,\t-0.976622251605453020,\t-0.976611502247902830,\t-0.976600750448824000,\t\n-0.976589996208243160,\t-0.976579239526187410,\t-0.976568480402683630,\t-0.976557718837758550,\t-0.976546954831439160,\t-0.976536188383752450,\t-0.976525419494725270,\t-0.976514648164384490,\t\n-0.976503874392757100,\t-0.976493098179870070,\t-0.976482319525750260,\t-0.976471538430424670,\t-0.976460754893920260,\t-0.976449968916263900,\t-0.976439180497482680,\t-0.976428389637603370,\t\n-0.976417596336653260,\t-0.976406800594659010,\t-0.976396002411647920,\t-0.976385201787646650,\t-0.976374398722682500,\t-0.976363593216782340,\t-0.976352785269973160,\t-0.976341974882282030,\t\n-0.976331162053735930,\t-0.976320346784362080,\t-0.976309529074187220,\t-0.976298708923238560,\t-0.976287886331543060,\t-0.976277061299127950,\t-0.976266233826020180,\t-0.976255403912246860,\t\n-0.976244571557834950,\t-0.976233736762811670,\t-0.976222899527203980,\t-0.976212059851039090,\t-0.976201217734343980,\t-0.976190373177145960,\t-0.976179526179471900,\t-0.976168676741349000,\t\n-0.976157824862804450,\t-0.976146970543865340,\t-0.976136113784558890,\t-0.976125254584912060,\t-0.976114392944952170,\t-0.976103528864706190,\t-0.976092662344201440,\t-0.976081793383465010,\t\n-0.976070921982524210,\t-0.976060048141405900,\t-0.976049171860137620,\t-0.976038293138746350,\t-0.976027411977259400,\t-0.976016528375703960,\t-0.976005642334107140,\t-0.975994753852496230,\t\n-0.975983862930898450,\t-0.975972969569340880,\t-0.975962073767851050,\t-0.975951175526455940,\t-0.975940274845182860,\t-0.975929371724059250,\t-0.975918466163112060,\t-0.975907558162368850,\t\n-0.975896647721856580,\t-0.975885734841602790,\t-0.975874819521634680,\t-0.975863901761979460,\t-0.975852981562664530,\t-0.975842058923717110,\t-0.975831133845164620,\t-0.975820206327034260,\t\n-0.975809276369353330,\t-0.975798343972149260,\t-0.975787409135449260,\t-0.975776471859280850,\t-0.975765532143671120,\t-0.975754589988647720,\t-0.975743645394237750,\t-0.975732698360468720,\t\n-0.975721748887367850,\t-0.975710796974962660,\t-0.975699842623280470,\t-0.975688885832348700,\t-0.975677926602194770,\t-0.975666964932845880,\t-0.975656000824329680,\t-0.975645034276673480,\t\n-0.975634065289904710,\t-0.975623093864050660,\t-0.975612119999138990,\t-0.975601143695197020,\t-0.975590164952252150,\t-0.975579183770331810,\t-0.975568200149463660,\t-0.975557214089674880,\t\n-0.975546225590993130,\t-0.975535234653445830,\t-0.975524241277060390,\t-0.975513245461864350,\t-0.975502247207885140,\t-0.975491246515150510,\t-0.975480243383687550,\t-0.975469237813524130,\t\n-0.975458229804687550,\t-0.975447219357205460,\t-0.975436206471105180,\t-0.975425191146414460,\t-0.975414173383160830,\t-0.975403153181371720,\t-0.975392130541074650,\t-0.975381105462297390,\t\n-0.975370077945067250,\t-0.975359047989411980,\t-0.975348015595359110,\t-0.975336980762936180,\t-0.975325943492170720,\t-0.975314903783090490,\t-0.975303861635723020,\t-0.975292817050095850,\t\n-0.975281770026236620,\t-0.975270720564172970,\t-0.975259668663932540,\t-0.975248614325543000,\t-0.975237557549031850,\t-0.975226498334426760,\t-0.975215436681755590,\t-0.975204372591045640,\t\n-0.975193306062324900,\t-0.975182237095620800,\t-0.975171165690961180,\t-0.975160091848373600,\t-0.975149015567885800,\t-0.975137936849525430,\t-0.975126855693320250,\t-0.975115772099298010,\t\n-0.975104686067486240,\t-0.975093597597912810,\t-0.975082506690605370,\t-0.975071413345591550,\t-0.975060317562899350,\t-0.975049219342556280,\t-0.975038118684590120,\t-0.975027015589028820,\t\n-0.975015910055899830,\t-0.975004802085231210,\t-0.974993691677050410,\t-0.974982578831385500,\t-0.974971463548264140,\t-0.974960345827714070,\t-0.974949225669763160,\t-0.974938103074439290,\t\n-0.974926978041769980,\t-0.974915850571783320,\t-0.974904720664507060,\t-0.974893588319968970,\t-0.974882453538196800,\t-0.974871316319218640,\t-0.974860176663062130,\t-0.974849034569755250,\t\n-0.974837890039325750,\t-0.974826743071801390,\t-0.974815593667210380,\t-0.974804441825580240,\t-0.974793287546939060,\t-0.974782130831314710,\t-0.974770971678734940,\t-0.974759810089227740,\t\n-0.974748646062821080,\t-0.974737479599542820,\t-0.974726310699420840,\t-0.974715139362483000,\t-0.974703965588757380,\t-0.974692789378271860,\t-0.974681610731054300,\t-0.974670429647132800,\t\n-0.974659246126535210,\t-0.974648060169289510,\t-0.974636871775423570,\t-0.974625680944965490,\t-0.974614487677943230,\t-0.974603291974384780,\t-0.974592093834318110,\t-0.974580893257771200,\t\n-0.974569690244771910,\t-0.974558484795348570,\t-0.974547276909528910,\t-0.974536066587341150,\t-0.974524853828813150,\t-0.974513638633973110,\t-0.974502421002848900,\t-0.974491200935468700,\t\n-0.974479978431860410,\t-0.974468753492052200,\t-0.974457526116072170,\t-0.974446296303948300,\t-0.974435064055708570,\t-0.974423829371381390,\t-0.974412592250994410,\t-0.974401352694576170,\t\n-0.974390110702154420,\t-0.974378866273757360,\t-0.974367619409413190,\t-0.974356370109149990,\t-0.974345118372995870,\t-0.974333864200978890,\t-0.974322607593127280,\t-0.974311348549469210,\t\n-0.974300087070032680,\t-0.974288823154846000,\t-0.974277556803937240,\t-0.974266288017334610,\t-0.974255016795066210,\t-0.974243743137160330,\t-0.974232467043645080,\t-0.974221188514548640,\t\n-0.974209907549899220,\t-0.974198624149725020,\t-0.974187338314054350,\t-0.974176050042915190,\t-0.974164759336336060,\t-0.974153466194344950,\t-0.974142170616970060,\t-0.974130872604239920,\t\n-0.974119572156182500,\t-0.974108269272826230,\t-0.974096963954199200,\t-0.974085656200329940,\t-0.974074346011246320,\t-0.974063033386976970,\t-0.974051718327550000,\t-0.974040400832993700,\t\n-0.974029080903336400,\t-0.974017758538606500,\t-0.974006433738832110,\t-0.973995106504041640,\t-0.973983776834263400,\t-0.973972444729525820,\t-0.973961110189856980,\t-0.973949773215285420,\t\n-0.973938433805839440,\t-0.973927091961547360,\t-0.973915747682437600,\t-0.973904400968538360,\t-0.973893051819878290,\t-0.973881700236485460,\t-0.973870346218388420,\t-0.973858989765615470,\t\n-0.973847630878195150,\t-0.973836269556155650,\t-0.973824905799525520,\t-0.973813539608333170,\t-0.973802170982606910,\t-0.973790799922375270,\t-0.973779426427666570,\t-0.973768050498509340,\t\n-0.973756672134932000,\t-0.973745291336962860,\t-0.973733908104630670,\t-0.973722522437963640,\t-0.973711134336990300,\t-0.973699743801739070,\t-0.973688350832238480,\t-0.973676955428517180,\t\n-0.973665557590603250,\t-0.973654157318525670,\t-0.973642754612312530,\t-0.973631349471992590,\t-0.973619941897594150,\t-0.973608531889145980,\t-0.973597119446676480,\t-0.973585704570214090,\t\n-0.973574287259787560,\t-0.973562867515425200,\t-0.973551445337155760,\t-0.973540020725007670,\t-0.973528593679009460,\t-0.973517164199189880,\t-0.973505732285577350,\t-0.973494297938200530,\t\n-0.973482861157087820,\t-0.973471421942268100,\t-0.973459980293769790,\t-0.973448536211621530,\t-0.973437089695851960,\t-0.973425640746489520,\t-0.973414189363563160,\t-0.973402735547101220,\t\n-0.973391279297132540,\t-0.973379820613685550,\t-0.973368359496789130,\t-0.973356895946471680,\t-0.973345429962762080,\t-0.973333961545688850,\t-0.973322490695280760,\t-0.973311017411566450,\t\n-0.973299541694574550,\t-0.973288063544333840,\t-0.973276582960872940,\t-0.973265099944220500,\t-0.973253614494405510,\t-0.973242126611456370,\t-0.973230636295401850,\t-0.973219143546270820,\t\n-0.973207648364091900,\t-0.973196150748893980,\t-0.973184650700705480,\t-0.973173148219555470,\t-0.973161643305472610,\t-0.973150135958485650,\t-0.973138626178623230,\t-0.973127113965914450,\t\n-0.973115599320387710,\t-0.973104082242072010,\t-0.973092562730996090,\t-0.973081040787188820,\t-0.973069516410678960,\t-0.973057989601495250,\t-0.973046460359666580,\t-0.973034928685221790,\t\n-0.973023394578189650,\t-0.973011858038599020,\t-0.973000319066478770,\t-0.972988777661857650,\t-0.972977233824764750,\t-0.972965687555228610,\t-0.972954138853278310,\t-0.972942587718942600,\t\n-0.972931034152250570,\t-0.972919478153230770,\t-0.972907919721912480,\t-0.972896358858324260,\t-0.972884795562495190,\t-0.972873229834454010,\t-0.972861661674229940,\t-0.972850091081851610,\t\n-0.972838518057348000,\t-0.972826942600748200,\t-0.972815364712081080,\t-0.972803784391375380,\t-0.972792201638660430,\t-0.972780616453964740,\t-0.972769028837317640,\t-0.972757438788747990,\t\n-0.972745846308284760,\t-0.972734251395956820,\t-0.972722654051793260,\t-0.972711054275823160,\t-0.972699452068075400,\t-0.972687847428578940,\t-0.972676240357362890,\t-0.972664630854456310,\t\n-0.972653018919888090,\t-0.972641404553687310,\t-0.972629787755883050,\t-0.972618168526504290,\t-0.972606546865580120,\t-0.972594922773139640,\t-0.972583296249211800,\t-0.972571667293825710,\t\n-0.972560035907010460,\t-0.972548402088795120,\t-0.972536765839208780,\t-0.972525127158280540,\t-0.972513486046039490,\t-0.972501842502514700,\t-0.972490196527735380,\t-0.972478548121730400,\t\n-0.972466897284529170,\t-0.972455244016160680,\t-0.972443588316654120,\t-0.972431930186038570,\t-0.972420269624343140,\t-0.972408606631597120,\t-0.972396941207829490,\t-0.972385273353069570,\t\n-0.972373603067346440,\t-0.972361930350689300,\t-0.972350255203127340,\t-0.972338577624689780,\t-0.972326897615405810,\t-0.972315215175304500,\t-0.972303530304415080,\t-0.972291843002767050,\t\n-0.972280153270389190,\t-0.972268461107311130,\t-0.972256766513561850,\t-0.972245069489170670,\t-0.972233370034166770,\t-0.972221668148579470,\t-0.972209963832437960,\t-0.972198257085771680,\t\n-0.972186547908609590,\t-0.972174836300981230,\t-0.972163122262915790,\t-0.972151405794442480,\t-0.972139686895590720,\t-0.972127965566389700,\t-0.972116241806868730,\t-0.972104515617057240,\t\n-0.972092786996984430,\t-0.972081055946679710,\t-0.972069322466172170,\t-0.972057586555491460,\t-0.972045848214666770,\t-0.972034107443727420,\t-0.972022364242702940,\t-0.972010618611622410,\t\n-0.971998870550515370,\t-0.971987120059411120,\t-0.971975367138339100,\t-0.971963611787328710,\t-0.971951854006409270,\t-0.971940093795610080,\t-0.971928331154960800,\t-0.971916566084490620,\t\n-0.971904798584229070,\t-0.971893028654205460,\t-0.971881256294449440,\t-0.971869481504990080,\t-0.971857704285857160,\t-0.971845924637079860,\t-0.971834142558687830,\t-0.971822358050710380,\t\n-0.971810571113177040,\t-0.971798781746117330,\t-0.971786989949560700,\t-0.971775195723536540,\t-0.971763399068074300,\t-0.971751599983203710,\t-0.971739798468954090,\t-0.971727994525354970,\t\n-0.971716188152435770,\t-0.971704379350226240,\t-0.971692568118755710,\t-0.971680754458053690,\t-0.971668938368149830,\t-0.971657119849073660,\t-0.971645298900854600,\t-0.971633475523522420,\t\n-0.971621649717106520,\t-0.971609821481636440,\t-0.971597990817141820,\t-0.971586157723652200,\t-0.971574322201197330,\t-0.971562484249806510,\t-0.971550643869509510,\t-0.971538801060335850,\t\n-0.971526955822315300,\t-0.971515108155477260,\t-0.971503258059851600,\t-0.971491405535467640,\t-0.971479550582355240,\t-0.971467693200543940,\t-0.971455833390063360,\t-0.971443971150943280,\t\n-0.971432106483213210,\t-0.971420239386902920,\t-0.971408369862042040,\t-0.971396497908660230,\t-0.971384623526787120,\t-0.971372746716452460,\t-0.971360867477686020,\t-0.971348985810517320,\t\n-0.971337101714976230,\t-0.971325215191092380,\t-0.971313326238895440,\t-0.971301434858415250,\t-0.971289541049681350,\t-0.971277644812723720,\t-0.971265746147571880,\t-0.971253845054255830,\t\n-0.971241941532804960,\t-0.971230035583249380,\t-0.971218127205618620,\t-0.971206216399942650,\t-0.971194303166251100,\t-0.971182387504573750,\t-0.971170469414940450,\t-0.971158548897381070,\t\n-0.971146625951925250,\t-0.971134700578602850,\t-0.971122772777443630,\t-0.971110842548477570,\t-0.971098909891734420,\t-0.971086974807243930,\t-0.971075037295036080,\t-0.971063097355140510,\t\n-0.971051154987587320,\t-0.971039210192406130,\t-0.971027262969627050,\t-0.971015313319279700,\t-0.971003361241394190,\t-0.970991406736000150,\t-0.970979449803127670,\t-0.970967490442806500,\t\n-0.970955528655066740,\t-0.970943564439938010,\t-0.970931597797450530,\t-0.970919628727633930,\t-0.970907657230518310,\t-0.970895683306133410,\t-0.970883706954509430,\t-0.970871728175676240,\t\n-0.970859746969663600,\t-0.970847763336501690,\t-0.970835777276220280,\t-0.970823788788849450,\t-0.970811797874419180,\t-0.970799804532959440,\t-0.970787808764500100,\t-0.970775810569071360,\t\n-0.970763809946703080,\t-0.970751806897425240,\t-0.970739801421267810,\t-0.970727793518261000,\t-0.970715783188434540,\t-0.970703770431818770,\t-0.970691755248443530,\t-0.970679737638338920,\t\n-0.970667717601534920,\t-0.970655695138061710,\t-0.970643670247949180,\t-0.970631642931227500,\t-0.970619613187926780,\t-0.970607581018076870,\t-0.970595546421708200,\t-0.970583509398850520,\t\n-0.970571469949534140,\t-0.970559428073789030,\t-0.970547383771645400,\t-0.970535337043133330,\t-0.970523287888282900,\t-0.970511236307124210,\t-0.970499182299687460,\t-0.970487125866002720,\t\n-0.970475067006100200,\t-0.970463005720009990,\t-0.970450942007762270,\t-0.970438875869387260,\t-0.970426807304915040,\t-0.970414736314375690,\t-0.970402662897799640,\t-0.970390587055216860,\t\n-0.970378508786657550,\t-0.970366428092152120,\t-0.970354344971730450,\t-0.970342259425423070,\t-0.970330171453259950,\t-0.970318081055271510,\t-0.970305988231487730,\t-0.970293892981939130,\t\n-0.970281795306655590,\t-0.970269695205667750,\t-0.970257592679005580,\t-0.970245487726699500,\t-0.970233380348779590,\t-0.970221270545276400,\t-0.970209158316219900,\t-0.970197043661640500,\t\n-0.970184926581568520,\t-0.970172807076034260,\t-0.970160685145067920,\t-0.970148560788699930,\t-0.970136434006960480,\t-0.970124304799879990,\t-0.970112173167488770,\t-0.970100039109817010,\t\n-0.970087902626895260,\t-0.970075763718753700,\t-0.970063622385422760,\t-0.970051478626932750,\t-0.970039332443313970,\t-0.970027183834596960,\t-0.970015032800811920,\t-0.970002879341989370,\t\n-0.969990723458159620,\t-0.969978565149352990,\t-0.969966404415600000,\t-0.969954241256930970,\t-0.969942075673376420,\t-0.969929907664966560,\t-0.969917737231732020,\t-0.969905564373703120,\t\n-0.969893389090910270,\t-0.969881211383384010,\t-0.969869031251154650,\t-0.969856848694252700,\t-0.969844663712708720,\t-0.969832476306553000,\t-0.969820286475816080,\t-0.969808094220528600,\t\n-0.969795899540720760,\t-0.969783702436423200,\t-0.969771502907666340,\t-0.969759300954480820,\t-0.969747096576896950,\t-0.969734889774945370,\t-0.969722680548656510,\t-0.969710468898061120,\t\n-0.969698254823189390,\t-0.969686038324072070,\t-0.969673819400739600,\t-0.969661598053222720,\t-0.969649374281551730,\t-0.969637148085757290,\t-0.969624919465870150,\t-0.969612688421920500,\t\n-0.969600454953939320,\t-0.969588219061956910,\t-0.969575980746003930,\t-0.969563740006111010,\t-0.969551496842308790,\t-0.969539251254627700,\t-0.969527003243098710,\t-0.969514752807752010,\t\n-0.969502499948618480,\t-0.969490244665728750,\t-0.969477986959113360,\t-0.969465726828802940,\t-0.969453464274828370,\t-0.969441199297220060,\t-0.969428931896008760,\t-0.969416662071225010,\t\n-0.969404389822899780,\t-0.969392115151063490,\t-0.969379838055746900,\t-0.969367558536980760,\t-0.969355276594795700,\t-0.969342992229222490,\t-0.969330705440291760,\t-0.969318416228034270,\t\n-0.969306124592480670,\t-0.969293830533661920,\t-0.969281534051608440,\t-0.969269235146351220,\t-0.969256933817920880,\t-0.969244630066348200,\t-0.969232323891664030,\t-0.969220015293898900,\t\n-0.969207704273083780,\t-0.969195390829249550,\t-0.969183074962426620,\t-0.969170756672646180,\t-0.969158435959938780,\t-0.969146112824335160,\t-0.969133787265866410,\t-0.969121459284563170,\t\n-0.969109128880456310,\t-0.969096796053576570,\t-0.969084460803954940,\t-0.969072123131622050,\t-0.969059783036608890,\t-0.969047440518946200,\t-0.969035095578665070,\t-0.969022748215796040,\t\n-0.969010398430370290,\t-0.968998046222418470,\t-0.968985691591971570,\t-0.968973334539060320,\t-0.968960975063715810,\t-0.968948613165968920,\t-0.968936248845850390,\t-0.968923882103391310,\t\n-0.968911512938622430,\t-0.968899141351574960,\t-0.968886767342279520,\t-0.968874390910767100,\t-0.968862012057068790,\t-0.968849630781215440,\t-0.968837247083238040,\t-0.968824860963167440,\t\n-0.968812472421034740,\t-0.968800081456870910,\t-0.968787688070706810,\t-0.968775292262573530,\t-0.968762894032501930,\t-0.968750493380523210,\t-0.968738090306668130,\t-0.968725684810967990,\t\n-0.968713276893453430,\t-0.968700866554155880,\t-0.968688453793106090,\t-0.968676038610335130,\t-0.968663621005874110,\t-0.968651200979753990,\t-0.968638778532005970,\t-0.968626353662660920,\t\n-0.968613926371750030,\t-0.968601496659304280,\t-0.968589064525354760,\t-0.968576629969932660,\t-0.968564192993068950,\t-0.968551753594794730,\t-0.968539311775141190,\t-0.968526867534139300,\t\n-0.968514420871820380,\t-0.968501971788215290,\t-0.968489520283355220,\t-0.968477066357271490,\t-0.968464610009994950,\t-0.968452151241557040,\t-0.968439690051988710,\t-0.968427226441321070,\t\n-0.968414760409585410,\t-0.968402291956812820,\t-0.968389821083034510,\t-0.968377347788281660,\t-0.968364872072585480,\t-0.968352393935977160,\t-0.968339913378487680,\t-0.968327430400148570,\t\n-0.968314945000990800,\t-0.968302457181045790,\t-0.968289966940344530,\t-0.968277474278918420,\t-0.968264979196798550,\t-0.968252481694016230,\t-0.968239981770602780,\t-0.968227479426589380,\t\n-0.968214974662007230,\t-0.968202467476887650,\t-0.968189957871261830,\t-0.968177445845161300,\t-0.968164931398616920,\t-0.968152414531660340,\t-0.968139895244322760,\t-0.968127373536635360,\t\n-0.968114849408629690,\t-0.968102322860336710,\t-0.968089793891788060,\t-0.968077262503014730,\t-0.968064728694048470,\t-0.968052192464920250,\t-0.968039653815661590,\t-0.968027112746303820,\t\n-0.968014569256878230,\t-0.968002023347416250,\t-0.967989475017949190,\t-0.967976924268508450,\t-0.967964371099125480,\t-0.967951815509831450,\t-0.967939257500657900,\t-0.967926697071636260,\t\n-0.967914134222797820,\t-0.967901568954174120,\t-0.967889001265796470,\t-0.967876431157696280,\t-0.967863858629904980,\t-0.967851283682454210,\t-0.967838706315375050,\t-0.967826126528699260,\t\n-0.967813544322458030,\t-0.967800959696683010,\t-0.967788372651405490,\t-0.967775783186657250,\t-0.967763191302469350,\t-0.967750596998873560,\t-0.967738000275901290,\t-0.967725401133583960,\t\n-0.967712799571953220,\t-0.967700195591040370,\t-0.967687589190877160,\t-0.967674980371494910,\t-0.967662369132925140,\t-0.967649755475199490,\t-0.967637139398349500,\t-0.967624520902406580,\t\n-0.967611899987402490,\t-0.967599276653368530,\t-0.967586650900336460,\t-0.967574022728337700,\t-0.967561392137404000,\t-0.967548759127566660,\t-0.967536123698857550,\t-0.967523485851307980,\t\n-0.967510845584949820,\t-0.967498202899814470,\t-0.967485557795933700,\t-0.967472910273339040,\t-0.967460260332062120,\t-0.967447607972134360,\t-0.967434953193587740,\t-0.967422295996453680,\t\n-0.967409636380763940,\t-0.967396974346550140,\t-0.967384309893843830,\t-0.967371643022676750,\t-0.967358973733080550,\t-0.967346302025086980,\t-0.967333627898727570,\t-0.967320951354034180,\t\n-0.967308272391038340,\t-0.967295591009771800,\t-0.967282907210266330,\t-0.967270220992553660,\t-0.967257532356665340,\t-0.967244841302633220,\t-0.967232147830488940,\t-0.967219451940264370,\t\n-0.967206753631991160,\t-0.967194052905701150,\t-0.967181349761425890,\t-0.967168644199197240,\t-0.967155936219047050,\t-0.967143225821006870,\t-0.967130513005108880,\t-0.967117797771384400,\t\n-0.967105080119865510,\t-0.967092360050583850,\t-0.967079637563571400,\t-0.967066912658859800,\t-0.967054185336480910,\t-0.967041455596466590,\t-0.967028723438848600,\t-0.967015988863658800,\t\n-0.967003251870929060,\t-0.966990512460691230,\t-0.966977770632977070,\t-0.966965026387818450,\t-0.966952279725247330,\t-0.966939530645295480,\t-0.966926779147994740,\t-0.966914025233377110,\t\n-0.966901268901474430,\t-0.966888510152318580,\t-0.966875748985941420,\t-0.966862985402374920,\t-0.966850219401650950,\t-0.966837450983801470,\t-0.966824680148858250,\t-0.966811906896853480,\t\n-0.966799131227818800,\t-0.966786353141786400,\t-0.966773572638788050,\t-0.966760789718855820,\t-0.966748004382021580,\t-0.966735216628317300,\t-0.966722426457775060,\t-0.966709633870426740,\t\n-0.966696838866304200,\t-0.966684041445439730,\t-0.966671241607865110,\t-0.966658439353612400,\t-0.966645634682713580,\t-0.966632827595200640,\t-0.966620018091105650,\t-0.966607206170460590,\t\n-0.966594391833297540,\t-0.966581575079648480,\t-0.966568755909545610,\t-0.966555934323020670,\t-0.966543110320105980,\t-0.966530283900833510,\t-0.966517455065235340,\t-0.966504623813343570,\t\n-0.966491790145190270,\t-0.966478954060807420,\t-0.966466115560227210,\t-0.966453274643481630,\t-0.966440431310602980,\t-0.966427585561623110,\t-0.966414737396574460,\t-0.966401886815488780,\t\n-0.966389033818398580,\t-0.966376178405335630,\t-0.966363320576332230,\t-0.966350460331420690,\t-0.966337597670632880,\t-0.966324732594001090,\t-0.966311865101557420,\t-0.966298995193334180,\t\n-0.966286122869363440,\t-0.966273248129677410,\t-0.966260370974308170,\t-0.966247491403288140,\t-0.966234609416649180,\t-0.966221725014423940,\t-0.966208838196644160,\t-0.966195948963342490,\t\n-0.966183057314550790,\t-0.966170163250301580,\t-0.966157266770626850,\t-0.966144367875559020,\t-0.966131466565130160,\t-0.966118562839372810,\t-0.966105656698318940,\t-0.966092748142000860,\t\n-0.966079837170451090,\t-0.966066923783701510,\t-0.966054007981784870,\t-0.966041089764733020,\t-0.966028169132578500,\t-0.966015246085353610,\t-0.966002320623090550,\t-0.965989392745821740,\t\n-0.965976462453579380,\t-0.965963529746395880,\t-0.965950594624303660,\t-0.965937657087334810,\t-0.965924717135521860,\t-0.965911774768897110,\t-0.965898829987492990,\t-0.965885882791341800,\t\n-0.965872933180475850,\t-0.965859981154927550,\t-0.965847026714729330,\t-0.965834069859913490,\t-0.965821110590512570,\t-0.965808148906558860,\t-0.965795184808084680,\t-0.965782218295122670,\t\n-0.965769249367705030,\t-0.965756278025864280,\t-0.965743304269632840,\t-0.965730328099043130,\t-0.965717349514127580,\t-0.965704368514918700,\t-0.965691385101448920,\t-0.965678399273750650,\t\n-0.965665411031856320,\t-0.965652420375798570,\t-0.965639427305609700,\t-0.965626431821322240,\t-0.965613433922968720,\t-0.965600433610581680,\t-0.965587430884193520,\t-0.965574425743836780,\t\n-0.965561418189544000,\t-0.965548408221347580,\t-0.965535395839280270,\t-0.965522381043374400,\t-0.965509363833662590,\t-0.965496344210177380,\t-0.965483322172951300,\t-0.965470297722016870,\t\n-0.965457270857406740,\t-0.965444241579153430,\t-0.965431209887289590,\t-0.965418175781847630,\t-0.965405139262860200,\t-0.965392100330359940,\t-0.965379058984379590,\t-0.965366015224951360,\t\n-0.965352969052108320,\t-0.965339920465882680,\t-0.965326869466307300,\t-0.965313816053414710,\t-0.965300760227237650,\t-0.965287701987808670,\t-0.965274641335160390,\t-0.965261578269325570,\t\n-0.965248512790336740,\t-0.965235444898226660,\t-0.965222374593027950,\t-0.965209301874773380,\t-0.965196226743495480,\t-0.965183149199227100,\t-0.965170069242000770,\t-0.965156986871849250,\t\n-0.965143902088805290,\t-0.965130814892901650,\t-0.965117725284170840,\t-0.965104633262645840,\t-0.965091538828359070,\t-0.965078441981343630,\t-0.965065342721632020,\t-0.965052241049257020,\t\n-0.965039136964251590,\t-0.965026030466648140,\t-0.965012921556479660,\t-0.964999810233778900,\t-0.964986696498578600,\t-0.964973580350911520,\t-0.964960461790810630,\t-0.964947340818308460,\t\n-0.964934217433437990,\t-0.964921091636231850,\t-0.964907963426723140,\t-0.964894832804944480,\t-0.964881699770928750,\t-0.964868564324708690,\t-0.964855426466317280,\t-0.964842286195787270,\t\n-0.964829143513151630,\t-0.964815998418443010,\t-0.964802850911694490,\t-0.964789700992938810,\t-0.964776548662208850,\t-0.964763393919537580,\t-0.964750236764957750,\t-0.964737077198502440,\t\n-0.964723915220204290,\t-0.964710750830096500,\t-0.964697584028211710,\t-0.964684414814583110,\t-0.964671243189243350,\t-0.964658069152225520,\t-0.964644892703562460,\t-0.964631713843287280,\t\n-0.964618532571432710,\t-0.964605348888031950,\t-0.964592162793117660,\t-0.964578974286723010,\t-0.964565783368880990,\t-0.964552590039624460,\t-0.964539394298986390,\t-0.964526196146999970,\t\n-0.964512995583697960,\t-0.964499792609113450,\t-0.964486587223279510,\t-0.964473379426229130,\t-0.964460169217995270,\t-0.964446956598611020,\t-0.964433741568109350,\t-0.964420524126523240,\t\n-0.964407304273885990,\t-0.964394082010230360,\t-0.964380857335589540,\t-0.964367630249996610,\t-0.964354400753484660,\t-0.964341168846086560,\t-0.964327934527835720,\t-0.964314697798764890,\t\n-0.964301458658907370,\t-0.964288217108296150,\t-0.964274973146964530,\t-0.964261726774945260,\t-0.964248477992271870,\t-0.964235226798977220,\t-0.964221973195094510,\t-0.964208717180656820,\t\n-0.964195458755697340,\t-0.964182197920249280,\t-0.964168934674345720,\t-0.964155669018019750,\t-0.964142400951304660,\t-0.964129130474233540,\t-0.964115857586839600,\t-0.964102582289156130,\t\n-0.964089304581216110,\t-0.964076024463052850,\t-0.964062741934699430,\t-0.964049456996189270,\t-0.964036169647555450,\t-0.964022879888831170,\t-0.964009587720049630,\t-0.963996293141244240,\t\n-0.963982996152448090,\t-0.963969696753694370,\t-0.963956394945016500,\t-0.963943090726447680,\t-0.963929784098021100,\t-0.963916475059769960,\t-0.963903163611727790,\t-0.963889849753927550,\t\n-0.963876533486402790,\t-0.963863214809186690,\t-0.963849893722312560,\t-0.963836570225813590,\t-0.963823244319723330,\t-0.963809916004074840,\t-0.963796585278901660,\t-0.963783252144236990,\t\n-0.963769916600114240,\t-0.963756578646566610,\t-0.963743238283627510,\t-0.963729895511330370,\t-0.963716550329708490,\t-0.963703202738795280,\t-0.963689852738623950,\t-0.963676500329228140,\t\n-0.963663145510640920,\t-0.963649788282895940,\t-0.963636428646026500,\t-0.963623066600065910,\t-0.963609702145047710,\t-0.963596335281005300,\t-0.963582966007972000,\t-0.963569594325981220,\t\n-0.963556220235066490,\t-0.963542843735261330,\t-0.963529464826598850,\t-0.963516083509112890,\t-0.963502699782836650,\t-0.963489313647803660,\t-0.963475925104047450,\t-0.963462534151601320,\t\n-0.963449140790498930,\t-0.963435745020773560,\t-0.963422346842458980,\t-0.963408946255588480,\t-0.963395543260195720,\t-0.963382137856313880,\t-0.963368730043976940,\t-0.963355319823217980,\t\n-0.963341907194070870,\t-0.963328492156568910,\t-0.963315074710745730,\t-0.963301654856634770,\t-0.963288232594269880,\t-0.963274807923684250,\t-0.963261380844911640,\t-0.963247951357985580,\t\n-0.963234519462939700,\t-0.963221085159807420,\t-0.963207648448622500,\t-0.963194209329418350,\t-0.963180767802228830,\t-0.963167323867087250,\t-0.963153877524027480,\t-0.963140428773082920,\t\n-0.963126977614287340,\t-0.963113524047674360,\t-0.963100068073277530,\t-0.963086609691130580,\t-0.963073148901266940,\t-0.963059685703720580,\t-0.963046220098525030,\t-0.963032752085713820,\t\n-0.963019281665320800,\t-0.963005808837379520,\t-0.962992333601923710,\t-0.962978855958987130,\t-0.962965375908603430,\t-0.962951893450806230,\t-0.962938408585629290,\t-0.962924921313106470,\t\n-0.962911431633271200,\t-0.962897939546157320,\t-0.962884445051798710,\t-0.962870948150228890,\t-0.962857448841481720,\t-0.962843947125590960,\t-0.962830443002590350,\t-0.962816936472513650,\t\n-0.962803427535394500,\t-0.962789916191266860,\t-0.962776402440164490,\t-0.962762886282121030,\t-0.962749367717170350,\t-0.962735846745346290,\t-0.962722323366682620,\t-0.962708797581213080,\t\n-0.962695269388971540,\t-0.962681738789991860,\t-0.962668205784307900,\t-0.962654670371953290,\t-0.962641132552962130,\t-0.962627592327368050,\t-0.962614049695205030,\t-0.962600504656506930,\t\n-0.962586957211307490,\t-0.962573407359640700,\t-0.962559855101540410,\t-0.962546300437040480,\t-0.962532743366174780,\t-0.962519183888977280,\t-0.962505622005481730,\t-0.962492057715722100,\t\n-0.962478491019732370,\t-0.962464921917546510,\t-0.962451350409198270,\t-0.962437776494721620,\t-0.962424200174150530,\t-0.962410621447518990,\t-0.962397040314860840,\t-0.962383456776210180,\t\n-0.962369870831600750,\t-0.962356282481066750,\t-0.962342691724642040,\t-0.962329098562360490,\t-0.962315502994256280,\t-0.962301905020363280,\t-0.962288304640715570,\t-0.962274701855347140,\t\n-0.962261096664291830,\t-0.962247489067583840,\t-0.962233879065257150,\t-0.962220266657345720,\t-0.962206651843883650,\t-0.962193034624904910,\t-0.962179415000443680,\t-0.962165792970533840,\t\n-0.962152168535209570,\t-0.962138541694504750,\t-0.962124912448453770,\t-0.962111280797090300,\t-0.962097646740448730,\t-0.962084010278563050,\t-0.962070371411467340,\t-0.962056730139195790,\t\n-0.962043086461782270,\t-0.962029440379261080,\t-0.962015791891666310,\t-0.962002140999032030,\t-0.961988487701392450,\t-0.961974831998781640,\t-0.961961173891233700,\t-0.961947513378782930,\t\n-0.961933850461463290,\t-0.961920185139308990,\t-0.961906517412354330,\t-0.961892847280633290,\t-0.961879174744180170,\t-0.961865499803029160,\t-0.961851822457214340,\t-0.961838142706769930,\t\n-0.961824460551730210,\t-0.961810775992129270,\t-0.961797089028001540,\t-0.961783399659380980,\t-0.961769707886302010,\t-0.961756013708798600,\t-0.961742317126905280,\t-0.961728618140656130,\t\n-0.961714916750085580,\t-0.961701212955227590,\t-0.961687506756116580,\t-0.961673798152786750,\t-0.961660087145272510,\t-0.961646373733608060,\t-0.961632657917827700,\t-0.961618939697965640,\t\n-0.961605219074056270,\t-0.961591496046133810,\t-0.961577770614232550,\t-0.961564042778386920,\t-0.961550312538631210,\t-0.961536579894999740,\t-0.961522844847526810,\t-0.961509107396246730,\t\n-0.961495367541193910,\t-0.961481625282402660,\t-0.961467880619907290,\t-0.961454133553742320,\t-0.961440384083941950,\t-0.961426632210540700,\t-0.961412877933572770,\t-0.961399121253072700,\t\n-0.961385362169074780,\t-0.961371600681613540,\t-0.961357836790723290,\t-0.961344070496438440,\t-0.961330301798793310,\t-0.961316530697822520,\t-0.961302757193560400,\t-0.961288981286041340,\t\n-0.961275202975299890,\t-0.961261422261370350,\t-0.961247639144287350,\t-0.961233853624085200,\t-0.961220065700798430,\t-0.961206275374461460,\t-0.961192482645108930,\t-0.961178687512775020,\t\n-0.961164889977494500,\t-0.961151090039301660,\t-0.961137287698231260,\t-0.961123482954317490,\t-0.961109675807595100,\t-0.961095866258098400,\t-0.961082054305862240,\t-0.961068239950920720,\t\n-0.961054423193308800,\t-0.961040604033060690,\t-0.961026782470211120,\t-0.961012958504794510,\t-0.960999132136845620,\t-0.960985303366398870,\t-0.960971472193488770,\t-0.960957638618150200,\t\n-0.960943802640417340,\t-0.960929964260325060,\t-0.960916123477907780,\t-0.960902280293200350,\t-0.960888434706237080,\t-0.960874586717052840,\t-0.960860736325682030,\t-0.960846883532159410,\t\n-0.960833028336519620,\t-0.960819170738797190,\t-0.960805310739026860,\t-0.960791448337243280,\t-0.960777583533481080,\t-0.960763716327774910,\t-0.960749846720159400,\t-0.960735974710669400,\t\n-0.960722100299339350,\t-0.960708223486203990,\t-0.960694344271298300,\t-0.960680462654656560,\t-0.960666578636313770,\t-0.960652692216304450,\t-0.960638803394663450,\t-0.960624912171425430,\t\n-0.960611018546625120,\t-0.960597122520297160,\t-0.960583224092476540,\t-0.960569323263197880,\t-0.960555420032495830,\t-0.960541514400405250,\t-0.960527606366960880,\t-0.960513695932197490,\t\n-0.960499783096149920,\t-0.960485867858852820,\t-0.960471950220341150,\t-0.960458030180649460,\t-0.960444107739812810,\t-0.960430182897865860,\t-0.960416255654843450,\t-0.960402326010780350,\t\n-0.960388393965711520,\t-0.960374459519671710,\t-0.960360522672695670,\t-0.960346583424818380,\t-0.960332641776074580,\t-0.960318697726499250,\t-0.960304751276127020,\t-0.960290802424993100,\t\n-0.960276851173132110,\t-0.960262897520579030,\t-0.960248941467368610,\t-0.960234983013535940,\t-0.960221022159115760,\t-0.960207058904143040,\t-0.960193093248652540,\t-0.960179125192679560,\t\n-0.960165154736258520,\t-0.960151181879424720,\t-0.960137206622213020,\t-0.960123228964658180,\t-0.960109248906795390,\t-0.960095266448659390,\t-0.960081281590285270,\t-0.960067294331707900,\t\n-0.960053304672962350,\t-0.960039312614083480,\t-0.960025318155106390,\t-0.960011321296065920,\t-0.959997322036997280,\t-0.959983320377935210,\t-0.959969316318914910,\t-0.959955309859971240,\t\n-0.959941301001139390,\t-0.959927289742454230,\t-0.959913276083950830,\t-0.959899260025664280,\t-0.959885241567629670,\t-0.959871220709881840,\t-0.959857197452455900,\t-0.959843171795387030,\t\n-0.959829143738710310,\t-0.959815113282460720,\t-0.959801080426673230,\t-0.959787045171383140,\t-0.959773007516625310,\t-0.959758967462435160,\t-0.959744925008847450,\t-0.959730880155897470,\t\n-0.959716832903620310,\t-0.959702783252051050,\t-0.959688731201224780,\t-0.959674676751176790,\t-0.959660619901941960,\t-0.959646560653555800,\t-0.959632499006052960,\t-0.959618434959469080,\t\n-0.959604368513839010,\t-0.959590299669198070,\t-0.959576228425581430,\t-0.959562154783024090,\t-0.959548078741561560,\t-0.959534000301228600,\t-0.959519919462060830,\t-0.959505836224093130,\t\n-0.959491750587360910,\t-0.959477662551899260,\t-0.959463572117743580,\t-0.959449479284928850,\t-0.959435384053490490,\t-0.959421286423463580,\t-0.959407186394883540,\t-0.959393083967785440,\t\n-0.959378979142204710,\t-0.959364871918176540,\t-0.959350762295736240,\t-0.959336650274918880,\t-0.959322535855759990,\t-0.959308419038294780,\t-0.959294299822558430,\t-0.959280178208586460,\t\n-0.959266054196413860,\t-0.959251927786076260,\t-0.959237798977608860,\t-0.959223667771046950,\t-0.959209534166425850,\t-0.959195398163780850,\t-0.959181259763147390,\t-0.959167118964560860,\t\n-0.959152975768056470,\t-0.959138830173669740,\t-0.959124682181435760,\t-0.959110531791390160,\t-0.959096379003568260,\t-0.959082223818005450,\t-0.959068066234736950,\t-0.959053906253798380,\t\n-0.959039743875224950,\t-0.959025579099052280,\t-0.959011411925315580,\t-0.958997242354050370,\t-0.958983070385292070,\t-0.958968896019076090,\t-0.958954719255437850,\t-0.958940540094412870,\t\n-0.958926358536036470,\t-0.958912174580344170,\t-0.958897988227371600,\t-0.958883799477153850,\t-0.958869608329726670,\t-0.958855414785125480,\t-0.958841218843385800,\t-0.958827020504543050,\t\n-0.958812819768632750,\t-0.958798616635690330,\t-0.958784411105751410,\t-0.958770203178851420,\t-0.958755992855026110,\t-0.958741780134310550,\t-0.958727565016740720,\t-0.958713347502351930,\t\n-0.958699127591179700,\t-0.958684905283259780,\t-0.958670680578627590,\t-0.958656453477318650,\t-0.958642223979368490,\t-0.958627992084812970,\t-0.958613757793687290,\t-0.958599521106027310,\t\n-0.958585282021868430,\t-0.958571040541246530,\t-0.958556796664196800,\t-0.958542550390755310,\t-0.958528301720957270,\t-0.958514050654838520,\t-0.958499797192434720,\t-0.958485541333781390,\t\n-0.958471283078914160,\t-0.958457022427868790,\t-0.958442759380680690,\t-0.958428493937385830,\t-0.958414226098019740,\t-0.958399955862618060,\t-0.958385683231216530,\t-0.958371408203850810,\t\n-0.958357130780556510,\t-0.958342850961369400,\t-0.958328568746325220,\t-0.958314284135459490,\t-0.958299997128808200,\t-0.958285707726406750,\t-0.958271415928291130,\t-0.958257121734496950,\t\n-0.958242825145059980,\t-0.958228526160015970,\t-0.958214224779400660,\t-0.958199921003249690,\t-0.958185614831599030,\t-0.958171306264484210,\t-0.958156995301941210,\t-0.958142681944005760,\t\n-0.958128366190713510,\t-0.958114048042100430,\t-0.958099727498202160,\t-0.958085404559054670,\t-0.958071079224693480,\t-0.958056751495154790,\t-0.958042421370474130,\t-0.958028088850687460,\t\n-0.958013753935830550,\t-0.957999416625939240,\t-0.957985076921049390,\t-0.957970734821196880,\t-0.957956390326417440,\t-0.957942043436747160,\t-0.957927694152221680,\t-0.957913342472876960,\t\n-0.957898988398748870,\t-0.957884631929873390,\t-0.957870273066286250,\t-0.957855911808023430,\t-0.957841548155121010,\t-0.957827182107614530,\t-0.957812813665540160,\t-0.957798442828933670,\t\n-0.957784069597831240,\t-0.957769693972268520,\t-0.957755315952281580,\t-0.957740935537906290,\t-0.957726552729178840,\t-0.957712167526134860,\t-0.957697779928810560,\t-0.957683389937241670,\t\n-0.957668997551464400,\t-0.957654602771514600,\t-0.957640205597428350,\t-0.957625806029241520,\t-0.957611404066990300,\t-0.957596999710710440,\t-0.957582592960438130,\t-0.957568183816209340,\t\n-0.957553772278060040,\t-0.957539358346026330,\t-0.957524942020144270,\t-0.957510523300449830,\t-0.957496102186979000,\t-0.957481678679768080,\t-0.957467252778852810,\t-0.957452824484269490,\t\n-0.957438393796054110,\t-0.957423960714242740,\t-0.957409525238871460,\t-0.957395087369976470,\t-0.957380647107593630,\t-0.957366204451759240,\t-0.957351759402509270,\t-0.957337311959879920,\t\n-0.957322862123907270,\t-0.957308409894627510,\t-0.957293955272076720,\t-0.957279498256290990,\t-0.957265038847306630,\t-0.957250577045159590,\t-0.957236112849886190,\t-0.957221646261522400,\t\n-0.957207177280104520,\t-0.957192705905668740,\t-0.957178232138251150,\t-0.957163755977888050,\t-0.957149277424615530,\t-0.957134796478469770,\t-0.957120313139487090,\t-0.957105827407703560,\t\n-0.957091339283155480,\t-0.957076848765879060,\t-0.957062355855910600,\t-0.957047860553286060,\t-0.957033362858042080,\t-0.957018862770214530,\t-0.957004360289839930,\t-0.956989855416954360,\t\n-0.956975348151594130,\t-0.956960838493795650,\t-0.956946326443594900,\t-0.956931812001028500,\t-0.956917295166132440,\t-0.956902775938943240,\t-0.956888254319497090,\t-0.956873730307830290,\t\n-0.956859203903979160,\t-0.956844675107980100,\t-0.956830143919869200,\t-0.956815610339683100,\t-0.956801074367457760,\t-0.956786536003229940,\t-0.956771995247035710,\t-0.956757452098911500,\t\n-0.956742906558893600,\t-0.956728358627018550,\t-0.956713808303322530,\t-0.956699255587841970,\t-0.956684700480613270,\t-0.956670142981672860,\t-0.956655583091057030,\t-0.956641020808802310,\t\n-0.956626456134945010,\t-0.956611889069521550,\t-0.956597319612568440,\t-0.956582747764122000,\t-0.956568173524218750,\t-0.956553596892894880,\t-0.956539017870187250,\t-0.956524436456131940,\t\n-0.956509852650765600,\t-0.956495266454124530,\t-0.956480677866245350,\t-0.956466086887164500,\t-0.956451493516918380,\t-0.956436897755543520,\t-0.956422299603076560,\t-0.956407699059553700,\t\n-0.956393096125011550,\t-0.956378490799486890,\t-0.956363883083015790,\t-0.956349272975635100,\t-0.956334660477381140,\t-0.956320045588290650,\t-0.956305428308399930,\t-0.956290808637745740,\t\n-0.956276186576364370,\t-0.956261562124292700,\t-0.956246935281567010,\t-0.956232306048224070,\t-0.956217674424300280,\t-0.956203040409832390,\t-0.956188404004856830,\t-0.956173765209410330,\t\n-0.956159124023529320,\t-0.956144480447250640,\t-0.956129834480610620,\t-0.956115186123646100,\t-0.956100535376393610,\t-0.956085882238889680,\t-0.956071226711171170,\t-0.956056568793274500,\t\n-0.956041908485236510,\t-0.956027245787093640,\t-0.956012580698882840,\t-0.955997913220640430,\t-0.955983243352403260,\t-0.955968571094207960,\t-0.955953896446091300,\t-0.955939219408089790,\t\n-0.955924539980240410,\t-0.955909858162579450,\t-0.955895173955144010,\t-0.955880487357970600,\t-0.955865798371095980,\t-0.955851106994556890,\t-0.955836413228389970,\t-0.955821717072631970,\t\n-0.955807018527319750,\t-0.955792317592490060,\t-0.955777614268179420,\t-0.955762908554424920,\t-0.955748200451262960,\t-0.955733489958730640,\t-0.955718777076864590,\t-0.955704061805701550,\t\n-0.955689344145278400,\t-0.955674624095631860,\t-0.955659901656798700,\t-0.955645176828815890,\t-0.955630449611720060,\t-0.955615720005548170,\t-0.955600988010336880,\t-0.955586253626123260,\t\n-0.955571516852943840,\t-0.955556777690835800,\t-0.955542036139835680,\t-0.955527292199980560,\t-0.955512545871307180,\t-0.955497797153852410,\t-0.955483046047653220,\t-0.955468292552746350,\t\n-0.955453536669168770,\t-0.955438778396957340,\t-0.955424017736148930,\t-0.955409254686780510,\t-0.955394489248889030,\t-0.955379721422511260,\t-0.955364951207684170,\t-0.955350178604444710,\t\n-0.955335403612829760,\t-0.955320626232876390,\t-0.955305846464621470,\t-0.955291064308101840,\t-0.955276279763354610,\t-0.955261492830416610,\t-0.955246703509324950,\t-0.955231911800116460,\t\n-0.955217117702828240,\t-0.955202321217497260,\t-0.955187522344160490,\t-0.955172721082854890,\t-0.955157917433617440,\t-0.955143111396485220,\t-0.955128302971495200,\t-0.955113492158684460,\t\n-0.955098678958089970,\t-0.955083863369748820,\t-0.955069045393697970,\t-0.955054225029974500,\t-0.955039402278615500,\t-0.955024577139658050,\t-0.955009749613139000,\t-0.954994919699095780,\t\n-0.954980087397565120,\t-0.954965252708584230,\t-0.954950415632190300,\t-0.954935576168420290,\t-0.954920734317311280,\t-0.954905890078900480,\t-0.954891043453224950,\t-0.954876194440321790,\t\n-0.954861343040228290,\t-0.954846489252981320,\t-0.954831633078618070,\t-0.954816774517175840,\t-0.954801913568691600,\t-0.954787050233202650,\t-0.954772184510746080,\t-0.954757316401358970,\t\n-0.954742445905078620,\t-0.954727573021942110,\t-0.954712697751986750,\t-0.954697820095249510,\t-0.954682940051767790,\t-0.954668057621578800,\t-0.954653172804719620,\t-0.954638285601227430,\t\n-0.954623396011139550,\t-0.954608504034493270,\t-0.954593609671325670,\t-0.954578712921674070,\t-0.954563813785575640,\t-0.954548912263067710,\t-0.954534008354187450,\t-0.954519102058972280,\t\n-0.954504193377459290,\t-0.954489282309685770,\t-0.954474368855689040,\t-0.954459453015506500,\t-0.954444534789175240,\t-0.954429614176732780,\t-0.954414691178216090,\t-0.954399765793662810,\t\n-0.954384838023110030,\t-0.954369907866595260,\t-0.954354975324155590,\t-0.954340040395828540,\t-0.954325103081651420,\t-0.954310163381661410,\t-0.954295221295896170,\t-0.954280276824392760,\t\n-0.954265329967188710,\t-0.954250380724321330,\t-0.954235429095828040,\t-0.954220475081746120,\t-0.954205518682113010,\t-0.954190559896966110,\t-0.954175598726342940,\t-0.954160635170280600,\t\n-0.954145669228816720,\t-0.954130700901988700,\t-0.954115730189833870,\t-0.954100757092389730,\t-0.954085781609693820,\t-0.954070803741783320,\t-0.954055823488695890,\t-0.954040840850468810,\t\n-0.954025855827139610,\t-0.954010868418745830,\t-0.953995878625324870,\t-0.953980886446914260,\t-0.953965891883551410,\t-0.953950894935273850,\t-0.953935895602119000,\t-0.953920893884124490,\t\n-0.953905889781327620,\t-0.953890883293766150,\t-0.953875874421477370,\t-0.953860863164499030,\t-0.953845849522868440,\t-0.953830833496623230,\t-0.953815815085800930,\t-0.953800794290439180,\t\n-0.953785771110575390,\t-0.953770745546247190,\t-0.953755717597492000,\t-0.953740687264347690,\t-0.953725654546851540,\t-0.953710619445041320,\t-0.953695581958954540,\t-0.953680542088628850,\t\n-0.953665499834101760,\t-0.953650455195410810,\t-0.953635408172593960,\t-0.953620358765688400,\t-0.953605306974732000,\t-0.953590252799762280,\t-0.953575196240817100,\t-0.953560137297933760,\t\n-0.953545075971150120,\t-0.953530012260503820,\t-0.953514946166032500,\t-0.953499877687773780,\t-0.953484806825765420,\t-0.953469733580044940,\t-0.953454657950650210,\t-0.953439579937618740,\t\n-0.953424499540988510,\t-0.953409416760796820,\t-0.953394331597081650,\t-0.953379244049880730,\t-0.953364154119231590,\t-0.953349061805172200,\t-0.953333967107740100,\t-0.953318870026973020,\t\n-0.953303770562908830,\t-0.953288668715585260,\t-0.953273564485039860,\t-0.953258457871310690,\t-0.953243348874435290,\t-0.953228237494451620,\t-0.953213123731397220,\t-0.953198007585310150,\t\n-0.953182889056227940,\t-0.953167768144188690,\t-0.953152644849229790,\t-0.953137519171389450,\t-0.953122391110705180,\t-0.953107260667214960,\t-0.953092127840956760,\t-0.953076992631967990,\t\n-0.953061855040286950,\t-0.953046715065951180,\t-0.953031572708998630,\t-0.953016427969467060,\t-0.953001280847394550,\t-0.952986131342818730,\t-0.952970979455777690,\t-0.952955825186309170,\t\n-0.952940668534451140,\t-0.952925509500241350,\t-0.952910348083717770,\t-0.952895184284918370,\t-0.952880018103881010,\t-0.952864849540643540,\t-0.952849678595244050,\t-0.952834505267720290,\t\n-0.952819329558110330,\t-0.952804151466452030,\t-0.952788970992783260,\t-0.952773788137142200,\t-0.952758602899566490,\t-0.952743415280094430,\t-0.952728225278763770,\t-0.952713032895612600,\t\n-0.952697838130678760,\t-0.952682640984000460,\t-0.952667441455615440,\t-0.952652239545561890,\t-0.952637035253877660,\t-0.952621828580600960,\t-0.952606619525769640,\t-0.952591408089421780,\t\n-0.952576194271595340,\t-0.952560978072328420,\t-0.952545759491659090,\t-0.952530538529625330,\t-0.952515315186265200,\t-0.952500089461616790,\t-0.952484861355718300,\t-0.952469630868607480,\t\n-0.952454398000322720,\t-0.952439162750901900,\t-0.952423925120383210,\t-0.952408685108804610,\t-0.952393442716204410,\t-0.952378197942620460,\t-0.952362950788091190,\t-0.952347701252654440,\t\n-0.952332449336348530,\t-0.952317195039211310,\t-0.952301938361281300,\t-0.952286679302596360,\t-0.952271417863194690,\t-0.952256154043114480,\t-0.952240887842394020,\t-0.952225619261071190,\t\n-0.952210348299184380,\t-0.952195074956771690,\t-0.952179799233871300,\t-0.952164521130521410,\t-0.952149240646760210,\t-0.952133957782625990,\t-0.952118672538156740,\t-0.952103384913390860,\t\n-0.952088094908366540,\t-0.952072802523121990,\t-0.952057507757695380,\t-0.952042210612125130,\t-0.952026911086449210,\t-0.952011609180706150,\t-0.951996304894933920,\t-0.951980998229171040,\t\n-0.951965689183455590,\t-0.951950377757825980,\t-0.951935063952320410,\t-0.951919747766977190,\t-0.951904429201834600,\t-0.951889108256930850,\t-0.951873784932304460,\t-0.951858459227993500,\t\n-0.951843131144036400,\t-0.951827800680471460,\t-0.951812467837337190,\t-0.951797132614671580,\t-0.951781795012513250,\t-0.951766455030900290,\t-0.951751112669871340,\t-0.951735767929464460,\t\n-0.951720420809718300,\t-0.951705071310671060,\t-0.951689719432361140,\t-0.951674365174826840,\t-0.951659008538106700,\t-0.951643649522239010,\t-0.951628288127262190,\t-0.951612924353214650,\t\n-0.951597558200134920,\t-0.951582189668061070,\t-0.951566818757031860,\t-0.951551445467085700,\t-0.951536069798260780,\t-0.951520691750595840,\t-0.951505311324128970,\t-0.951489928518899020,\t\n-0.951474543334944080,\t-0.951459155772302890,\t-0.951443765831013750,\t-0.951428373511115310,\t-0.951412978812645750,\t-0.951397581735643930,\t-0.951382182280148040,\t-0.951366780446196820,\t\n-0.951351376233828480,\t-0.951335969643081870,\t-0.951320560673995170,\t-0.951305149326607150,\t-0.951289735600956200,\t-0.951274319497081080,\t-0.951258901015019980,\t-0.951243480154811640,\t\n-0.951228056916494700,\t-0.951212631300107580,\t-0.951197203305688910,\t-0.951181772933277100,\t-0.951166340182911020,\t-0.951150905054628960,\t-0.951135467548469780,\t-0.951120027664471790,\t\n-0.951104585402673840,\t-0.951089140763114350,\t-0.951073693745832060,\t-0.951058244350865500,\t-0.951042792578253420,\t-0.951027338428034220,\t-0.951011881900246770,\t-0.950996422994929590,\t\n-0.950980961712121320,\t-0.950965498051860700,\t-0.950950032014186260,\t-0.950934563599136860,\t-0.950919092806750910,\t-0.950903619637067380,\t-0.950888144090124680,\t-0.950872666165961670,\t\n-0.950857185864616980,\t-0.950841703186129370,\t-0.950826218130537360,\t-0.950810730697880020,\t-0.950795240888195670,\t-0.950779748701523380,\t-0.950764254137901550,\t-0.950748757197369180,\t\n-0.950733257879964880,\t-0.950717756185727510,\t-0.950702252114695720,\t-0.950686745666908250,\t-0.950671236842403950,\t-0.950655725641221580,\t-0.950640212063399880,\t-0.950624696108977600,\t\n-0.950609177777993590,\t-0.950593657070486710,\t-0.950578133986495600,\t-0.950562608526059230,\t-0.950547080689216340,\t-0.950531550476005680,\t-0.950516017886466220,\t-0.950500482920636600,\t\n-0.950484945578555900,\t-0.950469405860262740,\t-0.950453863765796210,\t-0.950438319295194840,\t-0.950422772448497820,\t-0.950407223225743780,\t-0.950391671626971690,\t-0.950376117652220410,\t\n-0.950360561301528910,\t-0.950345002574935930,\t-0.950329441472480440,\t-0.950313877994201420,\t-0.950298312140137710,\t-0.950282743910328190,\t-0.950267173304811810,\t-0.950251600323627540,\t\n-0.950236024966814140,\t-0.950220447234410790,\t-0.950204867126456240,\t-0.950189284642989570,\t-0.950173699784049750,\t-0.950158112549675640,\t-0.950142522939906200,\t-0.950126930954780510,\t\n-0.950111336594337440,\t-0.950095739858616060,\t-0.950080140747655340,\t-0.950064539261494260,\t-0.950048935400171770,\t-0.950033329163727070,\t-0.950017720552198910,\t-0.950002109565626470,\t\n-0.949986496204048850,\t-0.949970880467505000,\t-0.949955262356033890,\t-0.949939641869674610,\t-0.949924019008466240,\t-0.949908393772447850,\t-0.949892766161658410,\t-0.949877136176137120,\t\n-0.949861503815922940,\t-0.949845869081055060,\t-0.949830231971572460,\t-0.949814592487514320,\t-0.949798950628919720,\t-0.949783306395827640,\t-0.949767659788277370,\t-0.949752010806307890,\t\n-0.949736359449958490,\t-0.949720705719268140,\t-0.949705049614275930,\t-0.949689391135021270,\t-0.949673730281543000,\t-0.949658067053880450,\t-0.949642401452072680,\t-0.949626733476159000,\t\n-0.949611063126178490,\t-0.949595390402170230,\t-0.949579715304173510,\t-0.949564037832227650,\t-0.949548357986371490,\t-0.949532675766644570,\t-0.949516991173085860,\t-0.949501304205734860,\t\n-0.949485614864630350,\t-0.949469923149812050,\t-0.949454229061318710,\t-0.949438532599189980,\t-0.949422833763464810,\t-0.949407132554182630,\t-0.949391428971382510,\t-0.949375723015103870,\t\n-0.949360014685386000,\t-0.949344303982267990,\t-0.949328590905789360,\t-0.949312875455989080,\t-0.949297157632906670,\t-0.949281437436581440,\t-0.949265714867052580,\t-0.949249989924359380,\t\n-0.949234262608541270,\t-0.949218532919637430,\t-0.949202800857687380,\t-0.949187066422730210,\t-0.949171329614805440,\t-0.949155590433952260,\t-0.949139848880210190,\t-0.949124104953618430,\t\n-0.949108358654216500,\t-0.949092609982043590,\t-0.949076858937139220,\t-0.949061105519542700,\t-0.949045349729293330,\t-0.949029591566430740,\t-0.949013831030994020,\t-0.948998068123022790,\t\n-0.948982302842556360,\t-0.948966535189634250,\t-0.948950765164295770,\t-0.948934992766580330,\t-0.948919217996527450,\t-0.948903440854176550,\t-0.948887661339566920,\t-0.948871879452738320,\t\n-0.948856095193729930,\t-0.948840308562581280,\t-0.948824519559331890,\t-0.948808728184021180,\t-0.948792934436688660,\t-0.948777138317373870,\t-0.948761339826116100,\t-0.948745538962954990,\t\n-0.948729735727930180,\t-0.948713930121080850,\t-0.948698122142446860,\t-0.948682311792067520,\t-0.948666499069982350,\t-0.948650683976230980,\t-0.948634866510852940,\t-0.948619046673887630,\t\n-0.948603224465374820,\t-0.948587399885353790,\t-0.948571572933864400,\t-0.948555743610945970,\t-0.948539911916638330,\t-0.948524077850980700,\t-0.948508241414013130,\t-0.948492402605774720,\t\n-0.948476561426305430,\t-0.948460717875644680,\t-0.948444871953832200,\t-0.948429023660907530,\t-0.948413172996910190,\t-0.948397319961880040,\t-0.948381464555856590,\t-0.948365606778879490,\t\n-0.948349746630988260,\t-0.948333884112222750,\t-0.948318019222622490,\t-0.948302151962227340,\t-0.948286282331076590,\t-0.948270410329210220,\t-0.948254535956667870,\t-0.948238659213489150,\t\n-0.948222780099713720,\t-0.948206898615381430,\t-0.948191014760531800,\t-0.948175128535204800,\t-0.948159239939439850,\t-0.948143348973276790,\t-0.948127455636755380,\t-0.948111559929915360,\t\n-0.948095661852796370,\t-0.948079761405438260,\t-0.948063858587880780,\t-0.948047953400163680,\t-0.948032045842326700,\t-0.948016135914409470,\t-0.948000223616452090,\t-0.947984308948493950,\t\n-0.947968391910575250,\t-0.947952472502735400,\t-0.947936550725014480,\t-0.947920626577452020,\t-0.947904700060088200,\t-0.947888771172962440,\t-0.947872839916114930,\t-0.947856906289585190,\t\n-0.947840970293413300,\t-0.947825031927638890,\t-0.947809091192301940,\t-0.947793148087442190,\t-0.947777202613099610,\t-0.947761254769314170,\t-0.947745304556125380,\t-0.947729351973573440,\t\n-0.947713397021698100,\t-0.947697439700539320,\t-0.947681480010136860,\t-0.947665517950530780,\t-0.947649553521760830,\t-0.947633586723866990,\t-0.947617617556889220,\t-0.947601646020867490,\t\n-0.947585672115841550,\t-0.947569695841851470,\t-0.947553717198937000,\t-0.947537736187138440,\t-0.947521752806495420,\t-0.947505767057048140,\t-0.947489778938836240,\t-0.947473788451900110,\t\n-0.947457795596279410,\t-0.947441800372014090,\t-0.947425802779144450,\t-0.947409802817710260,\t-0.947393800487751570,\t-0.947377795789308360,\t-0.947361788722420720,\t-0.947345779287128490,\t\n-0.947329767483471970,\t-0.947313753311490920,\t-0.947297736771225530,\t-0.947281717862715760,\t-0.947265696586001680,\t-0.947249672941123390,\t-0.947233646928120950,\t-0.947217618547034350,\t\n-0.947201587797903750,\t-0.947185554680769150,\t-0.947169519195670720,\t-0.947153481342648320,\t-0.947137441121742360,\t-0.947121398532992820,\t-0.947105353576439660,\t-0.947089306252123290,\t\n-0.947073256560083450,\t-0.947057204500360680,\t-0.947041150072994720,\t-0.947025093278025980,\t-0.947009034115494530,\t-0.946992972585440460,\t-0.946976908687903850,\t-0.946960842422925110,\t\n-0.946944773790544200,\t-0.946928702790801440,\t-0.946912629423736880,\t-0.946896553689390740,\t-0.946880475587803190,\t-0.946864395119014430,\t-0.946848312283064760,\t-0.946832227079994260,\t\n-0.946816139509843220,\t-0.946800049572651740,\t-0.946783957268460320,\t-0.946767862597308830,\t-0.946751765559237790,\t-0.946735666154287280,\t-0.946719564382497600,\t-0.946703460243909060,\t\n-0.946687353738561830,\t-0.946671244866496230,\t-0.946655133627752550,\t-0.946639020022370990,\t-0.946622904050391960,\t-0.946606785711855530,\t-0.946590665006802220,\t-0.946574541935272240,\t\n-0.946558416497305990,\t-0.946542288692943550,\t-0.946526158522225550,\t-0.946510025985191960,\t-0.946493891081883420,\t-0.946477753812340120,\t-0.946461614176602460,\t-0.946445472174710760,\t\n-0.946429327806705410,\t-0.946413181072626730,\t-0.946397031972515010,\t-0.946380880506410780,\t-0.946364726674354340,\t-0.946348570476386100,\t-0.946332411912546470,\t-0.946316250982875750,\t\n-0.946300087687414360,\t-0.946283922026202930,\t-0.946267753999281540,\t-0.946251583606690820,\t-0.946235410848471070,\t-0.946219235724662930,\t-0.946203058235306590,\t-0.946186878380442580,\t\n-0.946170696160111400,\t-0.946154511574353490,\t-0.946138324623209350,\t-0.946122135306719400,\t-0.946105943624924060,\t-0.946089749577863850,\t-0.946073553165579400,\t-0.946057354388110890,\t\n-0.946041153245499090,\t-0.946024949737784390,\t-0.946008743865007330,\t-0.945992535627208310,\t-0.945976325024428080,\t-0.945960112056706940,\t-0.945943896724085630,\t-0.945927679026604570,\t\n-0.945911458964304290,\t-0.945895236537225290,\t-0.945879011745408230,\t-0.945862784588893610,\t-0.945846555067722080,\t-0.945830323181934160,\t-0.945814088931570480,\t-0.945797852316671570,\t\n-0.945781613337277950,\t-0.945765371993430360,\t-0.945749128285169330,\t-0.945732882212535490,\t-0.945716633775569360,\t-0.945700382974311690,\t-0.945684129808803120,\t-0.945667874279084160,\t\n-0.945651616385195570,\t-0.945635356127177970,\t-0.945619093505071890,\t-0.945602828518918080,\t-0.945586561168757280,\t-0.945570291454630010,\t-0.945554019376577020,\t-0.945537744934639050,\t\n-0.945521468128856620,\t-0.945505188959270490,\t-0.945488907425921510,\t-0.945472623528850200,\t-0.945456337268097300,\t-0.945440048643703570,\t-0.945423757655709850,\t-0.945407464304156560,\t\n-0.945391168589084670,\t-0.945374870510534930,\t-0.945358570068547950,\t-0.945342267263164500,\t-0.945325962094425540,\t-0.945309654562371480,\t-0.945293344667043400,\t-0.945277032408481930,\t\n-0.945260717786727930,\t-0.945244400801822040,\t-0.945228081453805210,\t-0.945211759742718090,\t-0.945195435668601760,\t-0.945179109231496620,\t-0.945162780431443860,\t-0.945146449268484120,\t\n-0.945130115742658150,\t-0.945113779854007020,\t-0.945097441602571360,\t-0.945081100988392260,\t-0.945064758011510240,\t-0.945048412671966380,\t-0.945032064969801410,\t-0.945015714905056430,\t\n-0.944999362477772050,\t-0.944983007687989370,\t-0.944966650535749020,\t-0.944950291021092180,\t-0.944933929144059490,\t-0.944917564904692140,\t-0.944901198303030650,\t-0.944884829339116330,\t\n-0.944868458012989910,\t-0.944852084324692250,\t-0.944835708274264550,\t-0.944819329861747440,\t-0.944802949087182100,\t-0.944786565950609390,\t-0.944770180452070170,\t-0.944753792591605520,\t\n-0.944737402369256520,\t-0.944721009785063900,\t-0.944704614839068760,\t-0.944688217531312050,\t-0.944671817861834960,\t-0.944655415830678140,\t-0.944639011437882870,\t-0.944622604683490020,\t\n-0.944606195567540770,\t-0.944589784090075880,\t-0.944573370251136630,\t-0.944556954050763900,\t-0.944540535488998860,\t-0.944524114565882480,\t-0.944507691281455730,\t-0.944491265635759800,\t\n-0.944474837628835660,\t-0.944458407260724500,\t-0.944441974531467280,\t-0.944425539441105190,\t-0.944409101989679090,\t-0.944392662177230390,\t-0.944376220003799950,\t-0.944359775469429060,\t\n-0.944343328574158590,\t-0.944326879318029940,\t-0.944310427701083980,\t-0.944293973723361990,\t-0.944277517384905060,\t-0.944261058685754380,\t-0.944244597625951030,\t-0.944228134205536200,\t\n-0.944211668424551060,\t-0.944195200283036610,\t-0.944178729781034340,\t-0.944162256918585130,\t-0.944145781695730270,\t-0.944129304112511060,\t-0.944112824168968470,\t-0.944096341865143910,\t\n-0.944079857201078450,\t-0.944063370176813410,\t-0.944046880792389850,\t-0.944030389047849080,\t-0.944013894943232510,\t-0.943997398478581000,\t-0.943980899653936170,\t-0.943964398469338880,\t\n-0.943947894924830780,\t-0.943931389020452930,\t-0.943914880756246520,\t-0.943898370132252970,\t-0.943881857148513470,\t-0.943865341805069310,\t-0.943848824101961800,\t-0.943832304039232240,\t\n-0.943815781616921920,\t-0.943799256835072150,\t-0.943782729693724230,\t-0.943766200192919570,\t-0.943749668332699240,\t-0.943733134113104890,\t-0.943716597534177580,\t-0.943700058595958960,\t\n-0.943683517298489980,\t-0.943666973641812400,\t-0.943650427625967180,\t-0.943633879250996070,\t-0.943617328516940250,\t-0.943600775423841020,\t-0.943584219971739910,\t-0.943567662160678220,\t\n-0.943551101990697360,\t-0.943534539461838740,\t-0.943517974574143880,\t-0.943501407327653970,\t-0.943484837722410540,\t-0.943468265758455100,\t-0.943451691435828970,\t-0.943435114754573530,\t\n-0.943418535714730440,\t-0.943401954316340880,\t-0.943385370559446490,\t-0.943368784444088670,\t-0.943352195970308950,\t-0.943335605138148630,\t-0.943319011947649440,\t-0.943302416398852590,\t\n-0.943285818491799710,\t-0.943269218226532310,\t-0.943252615603091930,\t-0.943236010621519960,\t-0.943219403281857940,\t-0.943202793584147380,\t-0.943186181528429920,\t-0.943169567114746980,\t\n-0.943152950343140060,\t-0.943136331213650920,\t-0.943119709726320750,\t-0.943103085881191520,\t-0.943086459678304400,\t-0.943069831117701260,\t-0.943053200199423400,\t-0.943036566923512680,\t\n-0.943019931290010490,\t-0.943003293298958490,\t-0.942986652950398190,\t-0.942970010244371330,\t-0.942953365180919430,\t-0.942936717760084140,\t-0.942920067981906970,\t-0.942903415846429670,\t\n-0.942886761353693870,\t-0.942870104503741090,\t-0.942853445296613080,\t-0.942836783732351470,\t-0.942820119810997890,\t-0.942803453532593980,\t-0.942786784897181600,\t-0.942770113904802140,\t\n-0.942753440555497370,\t-0.942736764849309020,\t-0.942720086786278830,\t-0.942703406366448230,\t-0.942686723589859280,\t-0.942670038456553510,\t-0.942653350966572660,\t-0.942636661119958360,\t\n-0.942619968916752480,\t-0.942603274356996530,\t-0.942586577440732600,\t-0.942569878168002080,\t-0.942553176538846960,\t-0.942536472553308860,\t-0.942519766211429520,\t-0.942503057513250810,\t\n-0.942486346458814460,\t-0.942469633048162340,\t-0.942452917281335960,\t-0.942436199158377400,\t-0.942419478679328290,\t-0.942402755844230500,\t-0.942386030653125870,\t-0.942369303106056160,\t\n-0.942352573203063090,\t-0.942335840944188650,\t-0.942319106329474690,\t-0.942302369358962830,\t-0.942285630032695170,\t-0.942268888350713320,\t-0.942252144313059260,\t-0.942235397919774950,\t\n-0.942218649170902030,\t-0.942201898066482580,\t-0.942185144606558330,\t-0.942168388791171150,\t-0.942151630620363110,\t-0.942134870094175960,\t-0.942118107212651660,\t-0.942101341975832060,\t\n-0.942084574383759140,\t-0.942067804436474750,\t-0.942051032134020860,\t-0.942034257476439320,\t-0.942017480463772320,\t-0.942000701096061380,\t-0.941983919373348910,\t-0.941967135295676440,\t\n-0.941950348863086370,\t-0.941933560075620240,\t-0.941916768933320330,\t-0.941899975436228390,\t-0.941883179584386500,\t-0.941866381377836740,\t-0.941849580816620960,\t-0.941832777900781350,\t\n-0.941815972630359650,\t-0.941799165005398060,\t-0.941782355025938540,\t-0.941765542692023280,\t-0.941748728003694020,\t-0.941731910960993070,\t-0.941715091563962160,\t-0.941698269812643710,\t\n-0.941681445707079460,\t-0.941664619247311600,\t-0.941647790433382200,\t-0.941630959265333360,\t-0.941614125743207130,\t-0.941597289867045610,\t-0.941580451636890750,\t-0.941563611052784850,\t\n-0.941546768114769890,\t-0.941529922822888050,\t-0.941513075177181300,\t-0.941496225177691940,\t-0.941479372824462040,\t-0.941462518117533680,\t-0.941445661056949050,\t-0.941428801642750220,\t\n-0.941411939874979400,\t-0.941395075753678760,\t-0.941378209278890490,\t-0.941361340450656560,\t-0.941344469269019380,\t-0.941327595734020920,\t-0.941310719845703580,\t-0.941293841604109450,\t\n-0.941276961009280710,\t-0.941260078061259440,\t-0.941243192760088050,\t-0.941226305105808740,\t-0.941209415098463680,\t-0.941192522738094950,\t-0.941175628024744970,\t-0.941158730958455920,\t\n-0.941141831539270000,\t-0.941124929767229610,\t-0.941108025642376830,\t-0.941091119164754080,\t-0.941074210334403420,\t-0.941057299151367270,\t-0.941040385615687810,\t-0.941023469727407580,\t\n-0.941006551486568420,\t-0.940989630893213080,\t-0.940972707947383520,\t-0.940955782649122390,\t-0.940938854998471630,\t-0.940921924995473780,\t-0.940904992640171020,\t-0.940888057932605990,\t\n-0.940871120872820650,\t-0.940854181460857640,\t-0.940837239696759030,\t-0.940820295580567350,\t-0.940803349112324990,\t-0.940786400292074170,\t-0.940769449119857490,\t-0.940752495595717050,\t\n-0.940735539719695480,\t-0.940718581491834960,\t-0.940701620912178130,\t-0.940684657980767060,\t-0.940667692697644500,\t-0.940650725062852630,\t-0.940633755076434100,\t-0.940616782738430970,\t\n-0.940599808048885990,\t-0.940582831007841460,\t-0.940565851615339900,\t-0.940548869871423610,\t-0.940531885776135220,\t-0.940514899329517150,\t-0.940497910531611800,\t-0.940480919382461590,\t\n-0.940463925882109140,\t-0.940446930030596980,\t-0.940429931827967300,\t-0.940412931274262950,\t-0.940395928369526240,\t-0.940378923113799670,\t-0.940361915507125780,\t-0.940344905549547190,\t\n-0.940327893241106220,\t-0.940310878581845590,\t-0.940293861571807720,\t-0.940276842211035360,\t-0.940259820499570690,\t-0.940242796437456560,\t-0.940225770024735400,\t-0.940208741261449820,\t\n-0.940191710147642470,\t-0.940174676683355750,\t-0.940157640868632290,\t-0.940140602703514850,\t-0.940123562188045820,\t-0.940106519322267960,\t-0.940089474106223790,\t-0.940072426539955820,\t\n-0.940055376623507020,\t-0.940038324356919590,\t-0.940021269740236360,\t-0.940004212773499990,\t-0.939987153456753100,\t-0.939970091790038320,\t-0.939953027773398290,\t-0.939935961406875740,\t\n-0.939918892690513320,\t-0.939901821624353540,\t-0.939884748208439260,\t-0.939867672442813110,\t-0.939850594327517830,\t-0.939833513862595950,\t-0.939816431048090430,\t-0.939799345884043790,\t\n-0.939782258370498670,\t-0.939765168507498030,\t-0.939748076295084390,\t-0.939730981733300720,\t-0.939713884822189430,\t-0.939696785561793480,\t-0.939679683952155510,\t-0.939662579993318480,\t\n-0.939645473685324810,\t-0.939628365028217560,\t-0.939611254022039380,\t-0.939594140666833110,\t-0.939577024962641390,\t-0.939559906909507300,\t-0.939542786507473250,\t-0.939525663756582310,\t\n-0.939508538656877220,\t-0.939491411208400740,\t-0.939474281411195710,\t-0.939457149265304990,\t-0.939440014770771550,\t-0.939422877927637900,\t-0.939405738735947130,\t-0.939388597195741970,\t\n-0.939371453307065400,\t-0.939354307069960040,\t-0.939337158484469080,\t-0.939320007550635160,\t-0.939302854268501240,\t-0.939285698638110070,\t-0.939268540659504820,\t-0.939251380332728150,\t\n-0.939234217657823000,\t-0.939217052634832350,\t-0.939199885263799050,\t-0.939182715544765960,\t-0.939165543477776250,\t-0.939148369062872580,\t-0.939131192300098010,\t-0.939114013189495390,\t\n-0.939096831731107810,\t-0.939079647924978110,\t-0.939062461771149270,\t-0.939045273269664360,\t-0.939028082420566230,\t-0.939010889223897970,\t-0.938993693679702310,\t-0.938976495788022560,\t\n-0.938959295548901560,\t-0.938942092962382290,\t-0.938924888028507710,\t-0.938907680747321120,\t-0.938890471118865140,\t-0.938873259143183090,\t-0.938856044820317810,\t-0.938838828150312500,\t\n-0.938821609133210000,\t-0.938804387769053620,\t-0.938787164057886090,\t-0.938769937999750840,\t-0.938752709594690590,\t-0.938735478842748660,\t-0.938718245743968010,\t-0.938701010298391810,\t\n-0.938683772506063050,\t-0.938666532367024800,\t-0.938649289881320240,\t-0.938632045048992450,\t-0.938614797870084620,\t-0.938597548344639710,\t-0.938580296472701030,\t-0.938563042254311530,\t\n-0.938545785689514410,\t-0.938528526778352860,\t-0.938511265520870050,\t-0.938494001917108970,\t-0.938476735967112900,\t-0.938459467670925030,\t-0.938442197028588550,\t-0.938424924040146440,\t\n-0.938407648705642080,\t-0.938390371025118690,\t-0.938373090998619210,\t-0.938355808626187170,\t-0.938338523907865430,\t-0.938321236843697500,\t-0.938303947433726470,\t-0.938286655677995630,\t\n-0.938269361576547940,\t-0.938252065129427050,\t-0.938234766336675910,\t-0.938217465198337930,\t-0.938200161714456190,\t-0.938182855885074110,\t-0.938165547710234860,\t-0.938148237189981750,\t\n-0.938130924324358070,\t-0.938113609113407130,\t-0.938096291557172000,\t-0.938078971655696310,\t-0.938061649409023040,\t-0.938044324817195680,\t-0.938026997880257670,\t-0.938009668598251970,\t\n-0.937992336971222200,\t-0.937975002999211550,\t-0.937957666682263440,\t-0.937940328020421150,\t-0.937922987013728000,\t-0.937905643662227400,\t-0.937888297965962740,\t-0.937870949924977330,\t\n-0.937853599539314460,\t-0.937836246809017670,\t-0.937818891734130240,\t-0.937801534314695480,\t-0.937784174550757130,\t-0.937766812442358160,\t-0.937749447989542180,\t-0.937732081192352520,\t\n-0.937714712050832790,\t-0.937697340565026180,\t-0.937679966734976220,\t-0.937662590560726540,\t-0.937645212042320100,\t-0.937627831179800860,\t-0.937610447973211910,\t-0.937593062422596880,\t\n-0.937575674527999170,\t-0.937558284289462310,\t-0.937540891707029700,\t-0.937523496780744870,\t-0.937506099510651340,\t-0.937488699896792620,\t-0.937471297939212020,\t-0.937453893637953170,\t\n-0.937436486993059590,\t-0.937419078004574910,\t-0.937401666672542430,\t-0.937384252997005900,\t-0.937366836978008600,\t-0.937349418615594290,\t-0.937331997909806370,\t-0.937314574860688480,\t\n-0.937297149468284240,\t-0.937279721732636960,\t-0.937262291653790490,\t-0.937244859231788240,\t-0.937227424466673950,\t-0.937209987358491040,\t-0.937192547907283120,\t-0.937175106113093850,\t\n-0.937157661975966840,\t-0.937140215495945620,\t-0.937122766673073930,\t-0.937105315507395290,\t-0.937087861998953440,\t-0.937070406147791800,\t-0.937052947953954220,\t-0.937035487417484210,\t\n-0.937018024538425530,\t-0.937000559316821800,\t-0.936983091752716660,\t-0.936965621846153840,\t-0.936948149597176870,\t-0.936930675005829610,\t-0.936913198072155560,\t-0.936895718796198600,\t\n-0.936878237178002340,\t-0.936860753217610530,\t-0.936843266915066700,\t-0.936825778270414800,\t-0.936808287283698470,\t-0.936790793954961340,\t-0.936773298284247270,\t-0.936755800271599990,\t\n-0.936738299917063140,\t-0.936720797220680690,\t-0.936703292182496040,\t-0.936685784802553380,\t-0.936668275080896010,\t-0.936650763017568110,\t-0.936633248612613320,\t-0.936615731866075270,\t\n-0.936598212777998040,\t-0.936580691348425140,\t-0.936563167577400660,\t-0.936545641464968210,\t-0.936528113011171670,\t-0.936510582216054770,\t-0.936493049079661470,\t-0.936475513602035510,\t\n-0.936457975783220880,\t-0.936440435623261180,\t-0.936422893122200510,\t-0.936405348280082480,\t-0.936387801096951190,\t-0.936370251572850250,\t-0.936352699707823870,\t-0.936335145501915660,\t\n-0.936317588955169590,\t-0.936300030067629520,\t-0.936282468839339300,\t-0.936264905270343010,\t-0.936247339360684490,\t-0.936229771110407620,\t-0.936212200519556230,\t-0.936194627588174400,\t\n-0.936177052316305990,\t-0.936159474703994960,\t-0.936141894751285180,\t-0.936124312458220810,\t-0.936106727824845500,\t-0.936089140851203430,\t-0.936071551537338560,\t-0.936053959883294760,\t\n-0.936036365889115980,\t-0.936018769554846420,\t-0.936001170880529920,\t-0.935983569866210450,\t-0.935965966511932090,\t-0.935948360817738690,\t-0.935930752783674550,\t-0.935913142409783520,\t\n-0.935895529696109560,\t-0.935877914642696760,\t-0.935860297249589300,\t-0.935842677516830920,\t-0.935825055444466040,\t-0.935807431032538380,\t-0.935789804281092150,\t-0.935772175190171420,\t\n-0.935754543759820370,\t-0.935736909990082850,\t-0.935719273881003070,\t-0.935701635432625080,\t-0.935683994644993080,\t-0.935666351518151030,\t-0.935648706052143120,\t-0.935631058247013430,\t\n-0.935613408102806130,\t-0.935595755619565210,\t-0.935578100797334940,\t-0.935560443636159530,\t-0.935542784136082940,\t-0.935525122297149460,\t-0.935507458119403060,\t-0.935489791602888030,\t\n-0.935472122747648570,\t-0.935454451553728750,\t-0.935436778021172870,\t-0.935419102150024990,\t-0.935401423940329320,\t-0.935383743392130260,\t-0.935366060505471660,\t-0.935348375280398050,\t\n-0.935330687716953380,\t-0.935312997815182070,\t-0.935295305575128190,\t-0.935277610996836150,\t-0.935259914080350030,\t-0.935242214825714010,\t-0.935224513232972620,\t-0.935206809302169930,\t\n-0.935189103033350120,\t-0.935171394426557610,\t-0.935153683481836700,\t-0.935135970199231450,\t-0.935118254578786390,\t-0.935100536620545600,\t-0.935082816324553480,\t-0.935065093690854330,\t\n-0.935047368719492460,\t-0.935029641410512150,\t-0.935011911763957810,\t-0.934994179779873540,\t-0.934976445458303940,\t-0.934958708799293210,\t-0.934940969802885770,\t-0.934923228469125790,\t\n-0.934905484798057800,\t-0.934887738789726090,\t-0.934869990444174960,\t-0.934852239761448930,\t-0.934834486741592310,\t-0.934816731384649380,\t-0.934798973690664670,\t-0.934781213659682590,\t\n-0.934763451291747430,\t-0.934745686586903710,\t-0.934727919545195630,\t-0.934710150166667920,\t-0.934692378451364660,\t-0.934674604399330590,\t-0.934656828010610010,\t-0.934639049285247330,\t\n-0.934621268223286950,\t-0.934603484824773510,\t-0.934585699089751310,\t-0.934567911018264860,\t-0.934550120610358580,\t-0.934532327866077090,\t-0.934514532785464700,\t-0.934496735368566030,\t\n-0.934478935615425610,\t-0.934461133526087620,\t-0.934443329100597020,\t-0.934425522338998000,\t-0.934407713241335200,\t-0.934389901807653130,\t-0.934372088037996210,\t-0.934354271932409160,\t\n-0.934336453490936410,\t-0.934318632713622590,\t-0.934300809600512090,\t-0.934282984151649560,\t-0.934265156367079630,\t-0.934247326246846810,\t-0.934229493790995740,\t-0.934211658999570820,\t\n-0.934193821872616790,\t-0.934175982410178190,\t-0.934158140612299630,\t-0.934140296479025740,\t-0.934122450010401060,\t-0.934104601206470320,\t-0.934086750067278040,\t-0.934068896592868960,\t\n-0.934051040783287490,\t-0.934033182638578600,\t-0.934015322158786580,\t-0.933997459343956390,\t-0.933979594194132460,\t-0.933961726709359620,\t-0.933943856889682400,\t-0.933925984735145650,\t\n-0.933908110245793790,\t-0.933890233421671770,\t-0.933872354262824110,\t-0.933854472769295560,\t-0.933836588941130860,\t-0.933818702778374750,\t-0.933800814281071760,\t-0.933782923449266720,\t\n-0.933765030283004500,\t-0.933747134782329510,\t-0.933729236947286930,\t-0.933711336777921060,\t-0.933693434274276980,\t-0.933675529436399200,\t-0.933657622264332690,\t-0.933639712758122080,\t\n-0.933621800917812220,\t-0.933603886743447850,\t-0.933585970235073730,\t-0.933568051392734690,\t-0.933550130216475590,\t-0.933532206706341070,\t-0.933514280862376090,\t-0.933496352684625390,\t\n-0.933478422173133930,\t-0.933460489327946230,\t-0.933442554149107370,\t-0.933424616636662100,\t-0.933406676790655250,\t-0.933388734611131920,\t-0.933370790098136500,\t-0.933352843251714300,\t\n-0.933334894071909840,\t-0.933316942558768290,\t-0.933298988712334300,\t-0.933281032532652820,\t-0.933263074019768820,\t-0.933245113173727160,\t-0.933227149994572570,\t-0.933209184482350240,\t\n-0.933191216637104910,\t-0.933173246458881560,\t-0.933155273947725020,\t-0.933137299103680370,\t-0.933119321926792480,\t-0.933101342417106290,\t-0.933083360574666680,\t-0.933065376399518590,\t\n-0.933047389891707210,\t-0.933029401051277300,\t-0.933011409878273910,\t-0.932993416372742020,\t-0.932975420534726600,\t-0.932957422364272480,\t-0.932939421861424980,\t-0.932921419026228830,\t\n-0.932903413858729210,\t-0.932885406358970990,\t-0.932867396526999240,\t-0.932849384362859020,\t-0.932831369866595430,\t-0.932813353038253300,\t-0.932795333877877830,\t-0.932777312385513980,\t\n-0.932759288561206930,\t-0.932741262405001550,\t-0.932723233916943010,\t-0.932705203097076500,\t-0.932687169945446980,\t-0.932669134462099540,\t-0.932651096647079130,\t-0.932633056500431160,\t\n-0.932615014022200370,\t-0.932596969212432180,\t-0.932578922071171550,\t-0.932560872598463540,\t-0.932542820794353360,\t-0.932524766658886280,\t-0.932506710192107070,\t-0.932488651394061230,\t\n-0.932470590264793620,\t-0.932452526804349760,\t-0.932434461012774380,\t-0.932416392890112910,\t-0.932398322436410520,\t-0.932380249651712290,\t-0.932362174536063400,\t-0.932344097089509050,\t\n-0.932326017312094520,\t-0.932307935203864900,\t-0.932289850764865480,\t-0.932271763995141440,\t-0.932253674894737980,\t-0.932235583463700280,\t-0.932217489702073740,\t-0.932199393609903340,\t\n-0.932181295187234580,\t-0.932163194434112440,\t-0.932145091350582430,\t-0.932126985936689630,\t-0.932108878192479450,\t-0.932090768117996960,\t-0.932072655713287680,\t-0.932054540978396680,\t\n-0.932036423913369380,\t-0.932018304518250960,\t-0.932000182793086720,\t-0.931982058737922170,\t-0.931963932352802390,\t-0.931945803637772800,\t-0.931927672592878680,\t-0.931909539218165440,\t\n-0.931891403513678270,\t-0.931873265479462700,\t-0.931855125115563900,\t-0.931836982422027280,\t-0.931818837398898150,\t-0.931800690046222010,\t-0.931782540364044180,\t-0.931764388352409930,\t\n-0.931746234011364690,\t-0.931728077340953980,\t-0.931709918341222960,\t-0.931691757012217180,\t-0.931673593353981920,\t-0.931655427366562820,\t-0.931637259050005050,\t-0.931619088404354150,\t\n-0.931600915429655620,\t-0.931582740125954770,\t-0.931564562493297000,\t-0.931546382531727830,\t-0.931528200241292790,\t-0.931510015622037170,\t-0.931491828674006590,\t-0.931473639397246370,\t\n-0.931455447791802120,\t-0.931437253857719140,\t-0.931419057595043180,\t-0.931400859003819410,\t-0.931382658084093600,\t-0.931364454835911130,\t-0.931346249259317530,\t-0.931328041354358200,\t\n-0.931309831121078900,\t-0.931291618559524910,\t-0.931273403669741980,\t-0.931255186451775520,\t-0.931236966905671040,\t-0.931218745031474170,\t-0.931200520829230440,\t-0.931182294298985470,\t\n-0.931164065440784670,\t-0.931145834254673790,\t-0.931127600740698220,\t-0.931109364898903720,\t-0.931091126729335810,\t-0.931072886232040100,\t-0.931054643407062120,\t-0.931036398254447620,\t\n-0.931018150774241990,\t-0.930999900966491100,\t-0.930981648831240350,\t-0.930963394368535590,\t-0.930945137578422340,\t-0.930926878460946240,\t-0.930908617016152800,\t-0.930890353244087860,\t\n-0.930872087144797190,\t-0.930853818718326180,\t-0.930835547964720680,\t-0.930817274884026320,\t-0.930798999476288750,\t-0.930780721741553570,\t-0.930762441679866770,\t-0.930744159291273740,\t\n-0.930725874575820460,\t-0.930707587533552320,\t-0.930689298164515290,\t-0.930671006468755000,\t-0.930652712446317310,\t-0.930634416097247620,\t-0.930616117421592120,\t-0.930597816419396100,\t\n-0.930579513090705750,\t-0.930561207435566470,\t-0.930542899454024240,\t-0.930524589146124680,\t-0.930506276511913640,\t-0.930487961551437090,\t-0.930469644264740440,\t-0.930451324651869860,\t\n-0.930433002712870880,\t-0.930414678447789360,\t-0.930396351856671130,\t-0.930378022939562180,\t-0.930359691696508010,\t-0.930341358127554700,\t-0.930323022232747880,\t-0.930304684012133620,\t\n-0.930286343465757560,\t-0.930268000593665770,\t-0.930249655395903870,\t-0.930231307872517840,\t-0.930212958023553530,\t-0.930194605849056890,\t-0.930176251349073670,\t-0.930157894523649830,\t\n-0.930139535372831340,\t-0.930121173896663930,\t-0.930102810095193580,\t-0.930084443968466230,\t-0.930066075516527760,\t-0.930047704739424110,\t-0.930029331637201250,\t-0.930010956209905040,\t\n-0.929992578457581430,\t-0.929974198380276280,\t-0.929955815978035780,\t-0.929937431250905670,\t-0.929919044198932010,\t-0.929900654822160670,\t-0.929882263120637820,\t-0.929863869094409100,\t\n-0.929845472743520920,\t-0.929827074068019010,\t-0.929808673067949340,\t-0.929790269743357990,\t-0.929771864094291020,\t-0.929753456120794410,\t-0.929735045822914110,\t-0.929716633200696200,\t\n-0.929698218254186750,\t-0.929679800983431730,\t-0.929661381388477200,\t-0.929642959469369260,\t-0.929624535226153850,\t-0.929606108658877160,\t-0.929587679767585160,\t-0.929569248552324030,\t\n-0.929550815013139630,\t-0.929532379150078360,\t-0.929513940963186070,\t-0.929495500452508950,\t-0.929477057618092960,\t-0.929458612459984510,\t-0.929440164978229340,\t-0.929421715172873860,\t\n-0.929403263043964150,\t-0.929384808591546150,\t-0.929366351815666290,\t-0.929347892716370420,\t-0.929329431293704930,\t-0.929310967547715690,\t-0.929292501478449220,\t-0.929274033085951360,\t\n-0.929255562370268520,\t-0.929237089331446780,\t-0.929218613969532200,\t-0.929200136284571210,\t-0.929181656276609870,\t-0.929163173945694250,\t-0.929144689291870880,\t-0.929126202315185610,\t\n-0.929107713015684960,\t-0.929089221393414990,\t-0.929070727448422010,\t-0.929052231180752090,\t-0.929033732590451630,\t-0.929015231677566940,\t-0.928996728442144090,\t-0.928978222884229380,\t\n-0.928959715003869200,\t-0.928941204801109750,\t-0.928922692275997220,\t-0.928904177428578000,\t-0.928885660258898290,\t-0.928867140767004500,\t-0.928848618952942790,\t-0.928830094816759600,\t\n-0.928811568358501090,\t-0.928793039578213690,\t-0.928774508475943670,\t-0.928755975051737460,\t-0.928737439305641230,\t-0.928718901237701510,\t-0.928700360847964480,\t-0.928681818136476540,\t\n-0.928663273103284000,\t-0.928644725748433260,\t-0.928626176071970840,\t-0.928607624073942930,\t-0.928589069754395920,\t-0.928570513113376240,\t-0.928551954150930390,\t-0.928533392867104460,\t\n-0.928514829261945170,\t-0.928496263335498840,\t-0.928477695087811860,\t-0.928459124518930530,\t-0.928440551628901490,\t-0.928421976417770910,\t-0.928403398885585540,\t-0.928384819032391670,\t\n-0.928366236858235720,\t-0.928347652363164190,\t-0.928329065547223500,\t-0.928310476410460160,\t-0.928291884952920590,\t-0.928273291174651400,\t-0.928254695075698910,\t-0.928236096656109730,\t\n-0.928217495915930280,\t-0.928198892855207070,\t-0.928180287473986620,\t-0.928161679772315560,\t-0.928143069750240190,\t-0.928124457407807250,\t-0.928105842745063030,\t-0.928087225762054380,\t\n-0.928068606458827490,\t-0.928049984835429220,\t-0.928031360891905850,\t-0.928012734628304250,\t-0.927994106044670590,\t-0.927975475141051830,\t-0.927956841917494390,\t-0.927938206374044780,\t\n-0.927919568510749640,\t-0.927900928327655580,\t-0.927882285824809250,\t-0.927863641002257160,\t-0.927844993860046040,\t-0.927826344398222420,\t-0.927807692616832940,\t-0.927789038515924090,\t\n-0.927770382095542860,\t-0.927751723355735520,\t-0.927733062296548950,\t-0.927714398918029650,\t-0.927695733220224470,\t-0.927677065203179830,\t-0.927658394866942680,\t-0.927639722211559440,\t\n-0.927621047237076950,\t-0.927602369943541730,\t-0.927583690331000630,\t-0.927565008399500290,\t-0.927546324149087440,\t-0.927527637579808830,\t-0.927508948691711080,\t-0.927490257484841040,\t\n-0.927471563959245240,\t-0.927452868114970630,\t-0.927434169952063850,\t-0.927415469470571630,\t-0.927396766670540610,\t-0.927378061552017850,\t-0.927359354115049880,\t-0.927340644359683550,\t\n-0.927321932285965490,\t-0.927303217893942770,\t-0.927284501183661790,\t-0.927265782155169750,\t-0.927247060808513160,\t-0.927228337143738980,\t-0.927209611160893840,\t-0.927190882860024820,\t\n-0.927172152241178550,\t-0.927153419304401760,\t-0.927134684049741640,\t-0.927115946477244600,\t-0.927097206586957930,\t-0.927078464378928050,\t-0.927059719853202120,\t-0.927040973009826800,\t\n-0.927022223848849140,\t-0.927003472370315880,\t-0.926984718574273890,\t-0.926965962460770120,\t-0.926947204029851530,\t-0.926928443281564870,\t-0.926909680215957100,\t-0.926890914833075170,\t\n-0.926872147132965950,\t-0.926853377115676280,\t-0.926834604781253240,\t-0.926815830129743670,\t-0.926797053161194540,\t-0.926778273875652700,\t-0.926759492273165230,\t-0.926740708353779090,\t\n-0.926721922117541120,\t-0.926703133564498400,\t-0.926684342694697680,\t-0.926665549508186360,\t-0.926646754005010950,\t-0.926627956185218760,\t-0.926609156048856630,\t-0.926590353595971640,\t\n-0.926571548826610750,\t-0.926552741740821030,\t-0.926533932338649450,\t-0.926515120620143070,\t-0.926496306585348760,\t-0.926477490234313810,\t-0.926458671567085060,\t-0.926439850583709700,\t\n-0.926421027284234590,\t-0.926402201668707010,\t-0.926383373737173940,\t-0.926364543489682330,\t-0.926345710926279490,\t-0.926326876047012250,\t-0.926308038851927920,\t-0.926289199341073450,\t\n-0.926270357514496050,\t-0.926251513372242650,\t-0.926232666914360570,\t-0.926213818140896760,\t-0.926194967051898410,\t-0.926176113647412700,\t-0.926157257927486600,\t-0.926138399892167400,\t\n-0.926119539541502280,\t-0.926100676875538210,\t-0.926081811894322480,\t-0.926062944597902280,\t-0.926044074986324680,\t-0.926025203059636760,\t-0.926006328817885920,\t-0.925987452261119340,\t\n-0.925968573389384100,\t-0.925949692202727380,\t-0.925930808701196480,\t-0.925911922884838590,\t-0.925893034753700770,\t-0.925874144307830440,\t-0.925855251547274770,\t-0.925836356472080960,\t\n-0.925817459082296180,\t-0.925798559377967840,\t-0.925779657359143030,\t-0.925760753025869130,\t-0.925741846378193340,\t-0.925722937416162960,\t-0.925704026139825160,\t-0.925685112549227470,\t\n-0.925666196644416850,\t-0.925647278425440700,\t-0.925628357892346430,\t-0.925609435045181230,\t-0.925590509883992500,\t-0.925571582408827420,\t-0.925552652619733520,\t-0.925533720516757860,\t\n-0.925514786099947970,\t-0.925495849369351030,\t-0.925476910325014560,\t-0.925457968966985730,\t-0.925439025295312080,\t-0.925420079310040780,\t-0.925401131011219350,\t-0.925382180398894970,\t\n-0.925363227473115280,\t-0.925344272233927460,\t-0.925325314681379020,\t-0.925306354815517150,\t-0.925287392636389480,\t-0.925268428144043310,\t-0.925249461338526040,\t-0.925230492219885290,\t\n-0.925211520788168150,\t-0.925192547043422240,\t-0.925173570985694970,\t-0.925154592615033740,\t-0.925135611931486080,\t-0.925116628935099380,\t-0.925097643625921060,\t-0.925078656003998740,\t\n-0.925059666069379730,\t-0.925040673822111530,\t-0.925021679262241660,\t-0.925002682389817530,\t-0.924983683204886780,\t-0.924964681707496790,\t-0.924945677897695110,\t-0.924926671775529230,\t\n-0.924907663341046680,\t-0.924888652594294870,\t-0.924869639535321530,\t-0.924850624164174070,\t-0.924831606480900130,\t-0.924812586485547090,\t-0.924793564178162610,\t-0.924774539558794180,\t\n-0.924755512627489450,\t-0.924736483384295930,\t-0.924717451829261240,\t-0.924698417962432790,\t-0.924679381783858450,\t-0.924660343293585480,\t-0.924641302491661770,\t-0.924622259378134800,\t\n-0.924603213953052230,\t-0.924584166216461560,\t-0.924565116168410530,\t-0.924546063808946550,\t-0.924527009138117580,\t-0.924507952155971040,\t-0.924488892862554530,\t-0.924469831257915930,\t\n-0.924450767342102630,\t-0.924431701115162490,\t-0.924412632577143010,\t-0.924393561728092060,\t-0.924374488568057150,\t-0.924355413097086130,\t-0.924336335315226410,\t-0.924317255222525950,\t\n-0.924298172819032260,\t-0.924279088104793310,\t-0.924260001079856510,\t-0.924240911744269810,\t-0.924221820098080630,\t-0.924202726141337140,\t-0.924183629874086640,\t-0.924164531296377210,\t\n-0.924145430408256360,\t-0.924126327209771950,\t-0.924107221700971700,\t-0.924088113881903370,\t-0.924069003752614910,\t-0.924049891313153850,\t-0.924030776563568020,\t-0.924011659503905290,\t\n-0.923992540134213500,\t-0.923973418454540170,\t-0.923954294464933490,\t-0.923935168165440860,\t-0.923916039556110570,\t-0.923896908636989920,\t-0.923877775408127210,\t-0.923858639869569950,\t\n-0.923839502021366110,\t-0.923820361863563530,\t-0.923801219396210070,\t-0.923782074619353470,\t-0.923762927533041790,\t-0.923743778137322670,\t-0.923724626432244180,\t-0.923705472417854170,\t\n-0.923686316094200380,\t-0.923667157461330880,\t-0.923647996519293410,\t-0.923628833268136050,\t-0.923609667707906530,\t-0.923590499838652930,\t-0.923571329660422990,\t-0.923552157173264780,\t\n-0.923532982377226030,\t-0.923513805272355050,\t-0.923494625858699350,\t-0.923475444136307330,\t-0.923456260105226520,\t-0.923437073765505100,\t-0.923417885117190920,\t-0.923398694160332160,\t\n-0.923379500894976560,\t-0.923360305321172300,\t-0.923341107438967250,\t-0.923321907248409350,\t-0.923302704749546790,\t-0.923283499942427310,\t-0.923264292827099320,\t-0.923245083403610440,\t\n-0.923225871672008870,\t-0.923206657632342660,\t-0.923187441284659790,\t-0.923168222629008330,\t-0.923149001665436340,\t-0.923129778393991680,\t-0.923110552814722760,\t-0.923091324927677430,\t\n-0.923072094732903750,\t-0.923052862230449800,\t-0.923033627420363770,\t-0.923014390302693610,\t-0.922995150877487510,\t-0.922975909144793550,\t-0.922956665104659680,\t-0.922937418757134310,\t\n-0.922918170102265290,\t-0.922898919140100920,\t-0.922879665870689260,\t-0.922860410294078390,\t-0.922841152410316500,\t-0.922821892219451770,\t-0.922802629721532260,\t-0.922783364916606170,\t\n-0.922764097804721680,\t-0.922744828385926970,\t-0.922725556660270230,\t-0.922706282627799520,\t-0.922687006288563150,\t-0.922667727642609290,\t-0.922648446689986020,\t-0.922629163430741750,\t\n-0.922609877864924430,\t-0.922590589992582480,\t-0.922571299813764070,\t-0.922552007328517390,\t-0.922532712536890730,\t-0.922513415438932170,\t-0.922494116034690230,\t-0.922474814324212970,\t\n-0.922455510307548690,\t-0.922436203984745460,\t-0.922416895355851920,\t-0.922397584420916020,\t-0.922378271179986280,\t-0.922358955633110770,\t-0.922339637780337900,\t-0.922320317621715960,\t\n-0.922300995157293250,\t-0.922281670387117950,\t-0.922262343311238570,\t-0.922243013929703200,\t-0.922223682242560460,\t-0.922204348249858310,\t-0.922185011951645370,\t-0.922165673347970060,\t\n-0.922146332438880450,\t-0.922126989224425040,\t-0.922107643704652040,\t-0.922088295879610050,\t-0.922068945749347280,\t-0.922049593313912230,\t-0.922030238573353090,\t-0.922010881527718370,\t\n-0.921991522177056490,\t-0.921972160521415840,\t-0.921952796560844610,\t-0.921933430295391540,\t-0.921914061725104820,\t-0.921894690850033060,\t-0.921875317670224460,\t-0.921855942185727750,\t\n-0.921836564396590900,\t-0.921817184302862860,\t-0.921797801904591820,\t-0.921778417201826180,\t-0.921759030194614580,\t-0.921739640883005310,\t-0.921720249267047100,\t-0.921700855346788140,\t\n-0.921681459122277060,\t-0.921662060593562370,\t-0.921642659760692480,\t-0.921623256623716030,\t-0.921603851182681400,\t-0.921584443437637010,\t-0.921565033388631720,\t-0.921545621035713690,\t\n-0.921526206378931790,\t-0.921506789418334190,\t-0.921487370153969750,\t-0.921467948585886760,\t-0.921448524714133970,\t-0.921429098538759870,\t-0.921409670059813000,\t-0.921390239277341980,\t\n-0.921370806191395220,\t-0.921351370802021670,\t-0.921331933109269530,\t-0.921312493113187640,\t-0.921293050813824510,\t-0.921273606211228780,\t-0.921254159305448960,\t-0.921234710096533790,\t\n-0.921215258584531790,\t-0.921195804769491810,\t-0.921176348651462140,\t-0.921156890230491740,\t-0.921137429506628910,\t-0.921117966479922720,\t-0.921098501150421470,\t-0.921079033518174110,\t\n-0.921059563583229050,\t-0.921040091345635140,\t-0.921020616805440890,\t-0.921001139962695170,\t-0.920981660817446590,\t-0.920962179369743890,\t-0.920942695619635820,\t-0.920923209567170890,\t\n-0.920903721212397940,\t-0.920884230555365720,\t-0.920864737596122970,\t-0.920845242334718210,\t-0.920825744771200600,\t-0.920806244905618350,\t-0.920786742738020750,\t-0.920767238268456080,\t\n-0.920747731496973530,\t-0.920728222423621400,\t-0.920708711048448980,\t-0.920689197371504560,\t-0.920669681392837220,\t-0.920650163112495700,\t-0.920630642530528840,\t-0.920611119646985280,\t\n-0.920591594461913850,\t-0.920572066975363530,\t-0.920552537187383060,\t-0.920533005098021270,\t-0.920513470707326810,\t-0.920493934015348850,\t-0.920474395022136020,\t-0.920454853727737170,\t\n-0.920435310132201150,\t-0.920415764235576920,\t-0.920396216037913220,\t-0.920376665539259120,\t-0.920357112739663140,\t-0.920337557639174570,\t-0.920318000237841940,\t-0.920298440535714520,\t\n-0.920278878532840850,\t-0.920259314229269990,\t-0.920239747625050790,\t-0.920220178720232320,\t-0.920200607514863430,\t-0.920181034008992870,\t-0.920161458202669920,\t-0.920141880095943220,\t\n-0.920122299688861830,\t-0.920102716981474720,\t-0.920083131973830740,\t-0.920063544665978950,\t-0.920043955057968430,\t-0.920024363149847810,\t-0.920004768941666500,\t-0.919985172433473110,\t\n-0.919965573625316950,\t-0.919945972517246640,\t-0.919926369109311580,\t-0.919906763401560520,\t-0.919887155394042530,\t-0.919867545086806680,\t-0.919847932479902040,\t-0.919828317573377460,\t\n-0.919808700367282020,\t-0.919789080861665000,\t-0.919769459056575140,\t-0.919749834952061750,\t-0.919730208548173780,\t-0.919710579844960300,\t-0.919690948842470160,\t-0.919671315540752880,\t\n-0.919651679939857190,\t-0.919632042039832400,\t-0.919612401840727340,\t-0.919592759342591440,\t-0.919573114545473520,\t-0.919553467449423010,\t-0.919533818054488640,\t-0.919514166360719810,\t\n-0.919494512368165480,\t-0.919474856076874960,\t-0.919455197486897300,\t-0.919435536598281590,\t-0.919415873411077110,\t-0.919396207925332830,\t-0.919376540141098150,\t-0.919356870058422040,\t\n-0.919337197677353780,\t-0.919317522997942560,\t-0.919297846020237560,\t-0.919278166744287750,\t-0.919258485170142750,\t-0.919238801297851400,\t-0.919219115127463130,\t-0.919199426659027100,\t\n-0.919179735892592390,\t-0.919160042828208400,\t-0.919140347465924320,\t-0.919120649805789340,\t-0.919100949847852840,\t-0.919081247592163810,\t-0.919061543038771740,\t-0.919041836187725720,\t\n-0.919022127039075150,\t-0.919002415592869440,\t-0.918982701849157420,\t-0.918962985807988850,\t-0.918943267469412680,\t-0.918923546833478540,\t-0.918903823900235280,\t-0.918884098669732640,\t\n-0.918864371142019690,\t-0.918844641317145830,\t-0.918824909195160360,\t-0.918805174776112680,\t-0.918785438060051860,\t-0.918765699047027650,\t-0.918745957737089110,\t-0.918726214130285770,\t\n-0.918706468226666790,\t-0.918686720026281600,\t-0.918666969529179700,\t-0.918647216735410390,\t-0.918627461645022960,\t-0.918607704258066930,\t-0.918587944574591590,\t-0.918568182594646450,\t\n-0.918548418318280820,\t-0.918528651745544100,\t-0.918508882876485910,\t-0.918489111711155330,\t-0.918469338249602090,\t-0.918449562491875480,\t-0.918429784438024920,\t-0.918410004088099920,\t\n-0.918390221442149990,\t-0.918370436500224430,\t-0.918350649262372750,\t-0.918330859728644480,\t-0.918311067899089120,\t-0.918291273773755970,\t-0.918271477352694760,\t-0.918251678635954690,\t\n-0.918231877623585490,\t-0.918212074315636780,\t-0.918192268712157640,\t-0.918172460813198030,\t-0.918152650618807130,\t-0.918132838129034680,\t-0.918113023343930080,\t-0.918093206263542960,\t\n-0.918073386887922730,\t-0.918053565217119120,\t-0.918033741251181650,\t-0.918013914990159720,\t-0.917994086434103070,\t-0.917974255583061230,\t-0.917954422437083580,\t-0.917934586996220100,\t\n-0.917914749260519970,\t-0.917894909230033140,\t-0.917875066904808910,\t-0.917855222284897020,\t-0.917835375370347100,\t-0.917815526161208760,\t-0.917795674657531650,\t-0.917775820859365150,\t\n-0.917755964766759360,\t-0.917736106379763440,\t-0.917716245698427470,\t-0.917696382722800740,\t-0.917676517452933100,\t-0.917656649888874080,\t-0.917636780030673620,\t-0.917616907878381020,\t\n-0.917597033432046240,\t-0.917577156691718800,\t-0.917557277657448660,\t-0.917537396329285100,\t-0.917517512707278220,\t-0.917497626791477510,\t-0.917477738581932710,\t-0.917457848078693460,\t\n-0.917437955281809710,\t-0.917418060191331100,\t-0.917398162807307240,\t-0.917378263129788100,\t-0.917358361158823190,\t-0.917338456894462470,\t-0.917318550336755580,\t-0.917298641485752240,\t\n-0.917278730341502310,\t-0.917258816904055640,\t-0.917238901173461850,\t-0.917218983149770910,\t-0.917199062833032430,\t-0.917179140223296390,\t-0.917159215320612290,\t-0.917139288125030430,\t\n-0.917119358636600100,\t-0.917099426855371490,\t-0.917079492781394330,\t-0.917059556414718370,\t-0.917039617755393550,\t-0.917019676803469630,\t-0.916999733558996670,\t-0.916979788022024290,\t\n-0.916959840192602460,\t-0.916939890070780920,\t-0.916919937656609840,\t-0.916899982950138750,\t-0.916880025951417820,\t-0.916860066660496690,\t-0.916840105077425530,\t-0.916820141202254080,\t\n-0.916800175035032310,\t-0.916780206575809940,\t-0.916760235824637280,\t-0.916740262781563840,\t-0.916720287446639910,\t-0.916700309819915130,\t-0.916680329901439660,\t-0.916660347691263260,\t\n-0.916640363189436090,\t-0.916620376396007910,\t-0.916600387311028890,\t-0.916580395934548870,\t-0.916560402266617840,\t-0.916540406307285840,\t-0.916520408056602730,\t-0.916500407514618700,\t\n-0.916480404681383700,\t-0.916460399556947580,\t-0.916440392141360530,\t-0.916420382434672500,\t-0.916400370436933450,\t-0.916380356148193580,\t-0.916360339568502600,\t-0.916340320697911050,\t\n-0.916320299536468540,\t-0.916300276084225370,\t-0.916280250341231390,\t-0.916260222307536900,\t-0.916240191983191730,\t-0.916220159368246080,\t-0.916200124462750120,\t-0.916180087266753820,\t\n-0.916160047780307350,\t-0.916140006003460680,\t-0.916119961936264100,\t-0.916099915578767580,\t-0.916079866931021280,\t-0.916059815993075180,\t-0.916039762764979670,\t-0.916019707246784720,\t\n-0.915999649438540620,\t-0.915979589340297220,\t-0.915959526952104920,\t-0.915939462274013790,\t-0.915919395306074020,\t-0.915899326048335680,\t-0.915879254500849170,\t-0.915859180663664450,\t\n-0.915839104536831820,\t-0.915819026120401340,\t-0.915798945414423300,\t-0.915778862418948010,\t-0.915758777134025430,\t-0.915738689559706050,\t-0.915718599696039750,\t-0.915698507543077130,\t\n-0.915678413100868170,\t-0.915658316369463270,\t-0.915638217348912490,\t-0.915618116039266130,\t-0.915598012440574480,\t-0.915577906552887950,\t-0.915557798376256500,\t-0.915537687910730650,\t\n-0.915517575156360450,\t-0.915497460113196440,\t-0.915477342781288780,\t-0.915457223160687780,\t-0.915437101251443620,\t-0.915416977053606700,\t-0.915396850567227420,\t-0.915376721792355960,\t\n-0.915356590729042740,\t-0.915336457377337930,\t-0.915316321737292160,\t-0.915296183808955500,\t-0.915276043592378350,\t-0.915255901087611120,\t-0.915235756294704220,\t-0.915215609213707810,\t\n-0.915195459844672430,\t-0.915175308187648360,\t-0.915155154242686120,\t-0.915134998009835780,\t-0.915114839489148180,\t-0.915094678680673400,\t-0.915074515584461960,\t-0.915054350200564140,\t\n-0.915034182529030460,\t-0.915014012569911330,\t-0.914993840323257150,\t-0.914973665789118430,\t-0.914953488967545470,\t-0.914933309858588890,\t-0.914913128462299000,\t-0.914892944778726290,\t\n-0.914872758807921180,\t-0.914852570549934300,\t-0.914832380004815810,\t-0.914812187172616590,\t-0.914791992053386680,\t-0.914771794647176950,\t-0.914751594954037570,\t-0.914731392974019400,\t\n-0.914711188707172610,\t-0.914690982153547940,\t-0.914670773313195680,\t-0.914650562186166580,\t-0.914630348772511040,\t-0.914610133072279560,\t-0.914589915085522900,\t-0.914569694812291330,\t\n-0.914549472252635720,\t-0.914529247406606240,\t-0.914509020274253740,\t-0.914488790855628620,\t-0.914468559150781510,\t-0.914448325159763040,\t-0.914428088882623840,\t-0.914407850319414290,\t\n-0.914387609470185160,\t-0.914367366334986940,\t-0.914347120913870490,\t-0.914326873206886100,\t-0.914306623214084510,\t-0.914286370935516350,\t-0.914266116371232450,\t-0.914245859521283010,\t\n-0.914225600385719090,\t-0.914205338964591110,\t-0.914185075257949680,\t-0.914164809265845760,\t-0.914144540988329650,\t-0.914124270425452300,\t-0.914103997577264240,\t-0.914083722443816190,\t\n-0.914063445025158790,\t-0.914043165321342890,\t-0.914022883332418990,\t-0.914002599058437950,\t-0.913982312499450280,\t-0.913962023655507050,\t-0.913941732526658560,\t-0.913921439112955870,\t\n-0.913901143414449390,\t-0.913880845431190300,\t-0.913860545163228900,\t-0.913840242610616250,\t-0.913819937773402870,\t-0.913799630651639830,\t-0.913779321245377530,\t-0.913759009554666930,\t\n-0.913738695579559000,\t-0.913718379320104130,\t-0.913698060776353520,\t-0.913677739948357550,\t-0.913657416836167410,\t-0.913637091439833520,\t-0.913616763759407150,\t-0.913596433794938710,\t\n-0.913576101546479170,\t-0.913555767014079480,\t-0.913535430197790270,\t-0.913515091097662490,\t-0.913494749713747110,\t-0.913474406046094760,\t-0.913454060094756380,\t-0.913433711859782840,\t\n-0.913413361341225190,\t-0.913393008539133970,\t-0.913372653453560220,\t-0.913352296084554930,\t-0.913331936432168810,\t-0.913311574496452840,\t-0.913291210277457970,\t-0.913270843775235150,\t\n-0.913250474989835140,\t-0.913230103921308990,\t-0.913209730569707560,\t-0.913189354935081800,\t-0.913168977017482560,\t-0.913148596816961030,\t-0.913128214333567940,\t-0.913107829567354370,\t\n-0.913087442518371150,\t-0.913067053186669360,\t-0.913046661572299970,\t-0.913026267675313920,\t-0.913005871495762070,\t-0.912985473033695700,\t-0.912965072289165570,\t-0.912944669262222730,\t\n-0.912924263952918260,\t-0.912903856361303110,\t-0.912883446487428360,\t-0.912863034331344970,\t-0.912842619893104110,\t-0.912822203172756530,\t-0.912801784170353510,\t-0.912781362885946020,\t\n-0.912760939319585130,\t-0.912740513471321900,\t-0.912720085341207410,\t-0.912699654929292610,\t-0.912679222235628810,\t-0.912658787260266830,\t-0.912638350003257990,\t-0.912617910464653240,\t\n-0.912597468644503750,\t-0.912577024542860490,\t-0.912556578159774650,\t-0.912536129495297500,\t-0.912515678549479900,\t-0.912495225322373150,\t-0.912474769814028310,\t-0.912454312024496670,\t\n-0.912433851953829090,\t-0.912413389602077070,\t-0.912392924969291360,\t-0.912372458055523470,\t-0.912351988860824360,\t-0.912331517385245430,\t-0.912311043628837530,\t-0.912290567591652170,\t\n-0.912270089273740200,\t-0.912249608675153260,\t-0.912229125795942060,\t-0.912208640636158250,\t-0.912188153195852670,\t-0.912167663475076830,\t-0.912147171473881690,\t-0.912126677192318660,\t\n-0.912106180630439020,\t-0.912085681788293860,\t-0.912065180665934560,\t-0.912044677263412320,\t-0.912024171580778310,\t-0.912003663618083940,\t-0.911983153375380380,\t-0.911962640852718830,\t\n-0.911942126050150900,\t-0.911921608967727450,\t-0.911901089605500090,\t-0.911880567963520020,\t-0.911860044041838510,\t-0.911839517840506870,\t-0.911818989359576390,\t-0.911798458599098470,\t\n-0.911777925559124510,\t-0.911757390239705590,\t-0.911736852640893210,\t-0.911716312762738790,\t-0.911695770605293500,\t-0.911675226168608850,\t-0.911654679452736040,\t-0.911634130457726680,\t\n-0.911613579183631840,\t-0.911593025630503150,\t-0.911572469798391900,\t-0.911551911687349500,\t-0.911531351297427240,\t-0.911510788628676630,\t-0.911490223681149070,\t-0.911469656454895970,\t\n-0.911449086949968620,\t-0.911428515166418650,\t-0.911407941104297350,\t-0.911387364763656230,\t-0.911366786144546690,\t-0.911346205247020260,\t-0.911325622071128110,\t-0.911305036616921970,\t\n-0.911284448884453370,\t-0.911263858873773590,\t-0.911243266584934150,\t-0.911222672017986570,\t-0.911202075172982240,\t-0.911181476049972790,\t-0.911160874649009630,\t-0.911140270970144270,\t\n-0.911119665013428340,\t-0.911099056778913010,\t-0.911078446266650240,\t-0.911057833476691340,\t-0.911037218409087800,\t-0.911016601063891260,\t-0.910995981441153240,\t-0.910975359540925120,\t\n-0.910954735363258770,\t-0.910934108908205480,\t-0.910913480175816970,\t-0.910892849166144660,\t-0.910872215879240280,\t-0.910851580315155450,\t-0.910830942473941470,\t-0.910810302355650410,\t\n-0.910789659960333340,\t-0.910769015288042330,\t-0.910748368338828660,\t-0.910727719112744080,\t-0.910707067609840220,\t-0.910686413830168680,\t-0.910665757773781110,\t-0.910645099440729240,\t\n-0.910624438831064480,\t-0.910603775944838660,\t-0.910583110782103410,\t-0.910562443342910480,\t-0.910541773627311260,\t-0.910521101635357710,\t-0.910500427367101350,\t-0.910479750822593910,\t\n-0.910459072001887250,\t-0.910438390905032760,\t-0.910417707532082400,\t-0.910397021883087690,\t-0.910376333958100470,\t-0.910355643757172370,\t-0.910334951280355240,\t-0.910314256527700590,\t\n-0.910293559499260500,\t-0.910272860195086350,\t-0.910252158615230120,\t-0.910231454759743430,\t-0.910210748628678230,\t-0.910190040222086050,\t-0.910169329540018830,\t-0.910148616582528210,\t\n-0.910127901349666150,\t-0.910107183841484260,\t-0.910086464058034390,\t-0.910065741999368400,\t-0.910045017665538030,\t-0.910024291056595210,\t-0.910003562172591480,\t-0.909982831013579020,\t\n-0.909962097579609440,\t-0.909941361870734600,\t-0.909920623887006340,\t-0.909899883628476620,\t-0.909879141095197070,\t-0.909858396287219760,\t-0.909837649204596310,\t-0.909816899847378900,\t\n-0.909796148215619160,\t-0.909775394309369050,\t-0.909754638128680520,\t-0.909733879673605310,\t-0.909713118944195380,\t-0.909692355940502790,\t-0.909671590662579190,\t-0.909650823110476630,\t\n-0.909630053284247060,\t-0.909609281183942240,\t-0.909588506809614450,\t-0.909567730161315200,\t-0.909546951239096680,\t-0.909526170043010730,\t-0.909505386573109530,\t-0.909484600829444600,\t\n-0.909463812812068450,\t-0.909443022521032480,\t-0.909422229956389220,\t-0.909401435118190270,\t-0.909380638006487720,\t-0.909359838621333520,\t-0.909339036962779850,\t-0.909318233030878440,\t\n-0.909297426825681600,\t-0.909276618347241270,\t-0.909255807595609090,\t-0.909234994570837560,\t-0.909214179272978650,\t-0.909193361702083980,\t-0.909172541858206170,\t-0.909151719741396970,\t\n-0.909130895351708550,\t-0.909110068689192640,\t-0.909089239753901770,\t-0.909068408545887770,\t-0.909047575065202730,\t-0.909026739311898590,\t-0.909005901286027870,\t-0.908985060987642310,\t\n-0.908964218416794090,\t-0.908943373573535160,\t-0.908922526457918050,\t-0.908901677069994470,\t-0.908880825409816850,\t-0.908859971477436910,\t-0.908839115272907170,\t-0.908818256796279810,\t\n-0.908797396047606450,\t-0.908776533026939840,\t-0.908755667734331920,\t-0.908734800169834880,\t-0.908713930333500560,\t-0.908693058225381710,\t-0.908672183845530060,\t-0.908651307193998110,\t\n-0.908630428270837620,\t-0.908609547076101200,\t-0.908588663609841030,\t-0.908567777872109070,\t-0.908546889862957620,\t-0.908525999582439070,\t-0.908505107030605500,\t-0.908484212207509190,\t\n-0.908463315113202110,\t-0.908442415747736990,\t-0.908421514111165780,\t-0.908400610203540900,\t-0.908379704024914190,\t-0.908358795575338500,\t-0.908337884854865770,\t-0.908316971863548090,\t\n-0.908296056601438200,\t-0.908275139068588140,\t-0.908254219265050340,\t-0.908233297190876750,\t-0.908212372846120110,\t-0.908191446230832480,\t-0.908170517345066260,\t-0.908149586188873650,\t\n-0.908128652762307140,\t-0.908107717065419040,\t-0.908086779098261740,\t-0.908065838860887210,\t-0.908044896353348290,\t-0.908023951575697040,\t-0.908003004527985990,\t-0.907982055210267310,\t\n-0.907961103622593630,\t-0.907940149765017130,\t-0.907919193637590110,\t-0.907898235240365390,\t-0.907877274573394950,\t-0.907856311636731310,\t-0.907835346430426850,\t-0.907814378954534100,\t\n-0.907793409209105450,\t-0.907772437194193200,\t-0.907751462909849760,\t-0.907730486356127740,\t-0.907709507533079660,\t-0.907688526440757700,\t-0.907667543079214270,\t-0.907646557448502200,\t\n-0.907625569548673680,\t-0.907604579379781230,\t-0.907583586941877240,\t-0.907562592235014340,\t-0.907541595259245050,\t-0.907520596014621540,\t-0.907499594501196770,\t-0.907478590719023040,\t\n-0.907457584668152740,\t-0.907436576348638390,\t-0.907415565760532730,\t-0.907394552903888150,\t-0.907373537778757180,\t-0.907352520385192210,\t-0.907331500723246090,\t-0.907310478792971220,\t\n-0.907289454594420230,\t-0.907268428127645300,\t-0.907247399392699600,\t-0.907226368389635330,\t-0.907205335118505210,\t-0.907184299579361530,\t-0.907163261772257260,\t-0.907142221697244790,\t\n-0.907121179354376640,\t-0.907100134743705770,\t-0.907079087865284570,\t-0.907058038719165570,\t-0.907036987305401280,\t-0.907015933624044760,\t-0.906994877675148410,\t-0.906973819458764870,\t\n-0.906952758974946540,\t-0.906931696223746590,\t-0.906910631205217310,\t-0.906889563919411560,\t-0.906868494366381620,\t-0.906847422546180670,\t-0.906826348458861120,\t-0.906805272104475700,\t\n-0.906784193483077040,\t-0.906763112594717980,\t-0.906742029439451150,\t-0.906720944017329170,\t-0.906699856328404770,\t-0.906678766372730820,\t-0.906657674150360030,\t-0.906636579661344810,\t\n-0.906615482905738350,\t-0.906594383883593260,\t-0.906573282594962060,\t-0.906552179039897600,\t-0.906531073218452830,\t-0.906509965130680270,\t-0.906488854776632990,\t-0.906467742156363280,\t\n-0.906446627269924420,\t-0.906425510117368940,\t-0.906404390698749780,\t-0.906383269014119360,\t-0.906362145063531080,\t-0.906341018847037330,\t-0.906319890364691070,\t-0.906298759616544940,\t\n-0.906277626602651990,\t-0.906256491323065070,\t-0.906235353777836710,\t-0.906214213967020180,\t-0.906193071890668000,\t-0.906171927548833240,\t-0.906150780941568530,\t-0.906129632068926940,\t\n-0.906108480930961300,\t-0.906087327527724470,\t-0.906066171859269190,\t-0.906045013925648620,\t-0.906023853726915410,\t-0.906002691263122720,\t-0.905981526534323070,\t-0.905960359540569750,\t\n-0.905939190281915610,\t-0.905918018758413380,\t-0.905896844970116020,\t-0.905875668917076720,\t-0.905854490599348190,\t-0.905833310016983310,\t-0.905812127170035340,\t-0.905790942058557040,\t\n-0.905769754682601350,\t-0.905748565042221120,\t-0.905727373137469650,\t-0.905706178968399780,\t-0.905684982535064460,\t-0.905663783837516450,\t-0.905642582875809230,\t-0.905621379649995450,\t\n-0.905600174160128280,\t-0.905578966406260570,\t-0.905557756388445490,\t-0.905536544106736120,\t-0.905515329561185300,\t-0.905494112751846100,\t-0.905472893678771710,\t-0.905451672342015070,\t\n-0.905430448741629370,\t-0.905409222877667230,\t-0.905387994750182280,\t-0.905366764359227360,\t-0.905345531704855320,\t-0.905324296787119560,\t-0.905303059606073160,\t-0.905281820161769060,\t\n-0.905260578454260220,\t-0.905239334483600170,\t-0.905218088249841850,\t-0.905196839753038220,\t-0.905175588993242240,\t-0.905154335970507540,\t-0.905133080684887070,\t-0.905111823136433790,\t\n-0.905090563325200770,\t-0.905069301251241630,\t-0.905048036914609110,\t-0.905026770315356610,\t-0.905005501453536980,\t-0.904984230329203720,\t-0.904962956942409910,\t-0.904941681293208510,\t\n-0.904920403381653140,\t-0.904899123207796750,\t-0.904877840771692530,\t-0.904856556073393550,\t-0.904835269112953310,\t-0.904813979890424890,\t-0.904792688405861580,\t-0.904771394659316330,\t\n-0.904750098650842880,\t-0.904728800380494080,\t-0.904707499848323330,\t-0.904686197054383580,\t-0.904664891998728570,\t-0.904643584681411260,\t-0.904622275102485050,\t-0.904600963262003010,\t\n-0.904579649160018650,\t-0.904558332796585260,\t-0.904537014171755800,\t-0.904515693285584010,\t-0.904494370138123060,\t-0.904473044729426020,\t-0.904451717059546300,\t-0.904430387128537410,\t\n-0.904409054936452630,\t-0.904387720483345150,\t-0.904366383769268260,\t-0.904345044794275470,\t-0.904323703558420180,\t-0.904302360061755570,\t-0.904281014304334940,\t-0.904259666286211910,\t\n-0.904238316007439650,\t-0.904216963468071680,\t-0.904195608668161180,\t-0.904174251607761770,\t-0.904152892286926750,\t-0.904131530705709290,\t-0.904110166864163120,\t-0.904088800762341660,\t\n-0.904067432400298080,\t-0.904046061778085890,\t-0.904024688895758600,\t-0.904003313753369620,\t-0.903981936350972350,\t-0.903960556688620080,\t-0.903939174766366650,\t-0.903917790584265250,\t\n-0.903896404142369270,\t-0.903875015440732230,\t-0.903853624479407760,\t-0.903832231258449250,\t-0.903810835777910220,\t-0.903789438037843840,\t-0.903768038038304080,\t-0.903746635779344220,\t\n-0.903725231261017780,\t-0.903703824483378050,\t-0.903682415446478980,\t-0.903661004150373870,\t-0.903639590595116000,\t-0.903618174780759340,\t-0.903596756707357280,\t-0.903575336374963340,\t\n-0.903553913783630920,\t-0.903532488933413870,\t-0.903511061824365580,\t-0.903489632456539680,\t-0.903468200829989470,\t-0.903446766944768890,\t-0.903425330800931460,\t-0.903403892398530690,\t\n-0.903382451737620000,\t-0.903361008818253430,\t-0.903339563640484290,\t-0.903318116204366190,\t-0.903296666509952660,\t-0.903275214557297650,\t-0.903253760346454550,\t-0.903232303877476990,\t\n-0.903210845150418720,\t-0.903189384165333450,\t-0.903167920922274710,\t-0.903146455421295900,\t-0.903124987662451200,\t-0.903103517645794000,\t-0.903082045371378040,\t-0.903060570839256730,\t\n-0.903039094049484240,\t-0.903017615002113970,\t-0.902996133697199670,\t-0.902974650134794830,\t-0.902953164314953540,\t-0.902931676237729410,\t-0.902910185903176070,\t-0.902888693311347020,\t\n-0.902867198462296460,\t-0.902845701356078000,\t-0.902824201992744930,\t-0.902802700372351660,\t-0.902781196494951590,\t-0.902759690360598550,\t-0.902738181969346080,\t-0.902716671321248440,\t\n-0.902695158416359060,\t-0.902673643254731760,\t-0.902652125836420070,\t-0.902630606161478390,\t-0.902609084229960220,\t-0.902587560041919200,\t-0.902566033597409170,\t-0.902544504896484300,\t\n-0.902522973939198110,\t-0.902501440725604450,\t-0.902479905255757050,\t-0.902458367529710090,\t-0.902436827547517200,\t-0.902415285309232210,\t-0.902393740814908860,\t-0.902372194064601230,\t\n-0.902350645058363270,\t-0.902329093796248370,\t-0.902307540278311060,\t-0.902285984504604840,\t-0.902264426475183680,\t-0.902242866190101190,\t-0.902221303649411780,\t-0.902199738853169180,\t\n-0.902178171801427120,\t-0.902156602494239460,\t-0.902135030931660590,\t-0.902113457113744020,\t-0.902091881040543830,\t-0.902070302712113750,\t-0.902048722128508170,\t-0.902027139289780730,\t\n-0.902005554195985490,\t-0.901983966847176080,\t-0.901962377243407000,\t-0.901940785384731990,\t-0.901919191271204790,\t-0.901897594902879800,\t-0.901875996279810850,\t-0.901854395402051920,\t\n-0.901832792269656850,\t-0.901811186882679920,\t-0.901789579241175090,\t-0.901767969345196210,\t-0.901746357194797230,\t-0.901724742790032670,\t-0.901703126130956160,\t-0.901681507217621860,\t\n-0.901659886050083630,\t-0.901638262628395750,\t-0.901616636952612290,\t-0.901595009022787330,\t-0.901573378838974480,\t-0.901551746401228480,\t-0.901530111709603180,\t-0.901508474764152300,\t\n-0.901486835564930480,\t-0.901465194111991550,\t-0.901443550405389590,\t-0.901421904445178670,\t-0.901400256231413070,\t-0.901378605764146860,\t-0.901356953043434220,\t-0.901335298069328880,\t\n-0.901313640841885590,\t-0.901291981361158180,\t-0.901270319627200720,\t-0.901248655640067400,\t-0.901226989399812610,\t-0.901205320906490300,\t-0.901183650160154670,\t-0.901161977160859770,\t\n-0.901140301908660120,\t-0.901118624403609680,\t-0.901096944645762510,\t-0.901075262635173120,\t-0.901053578371895700,\t-0.901031891855984200,\t-0.901010203087492910,\t-0.900988512066476120,\t\n-0.900966818792988230,\t-0.900945123267083200,\t-0.900923425488815210,\t-0.900901725458238770,\t-0.900880023175408160,\t-0.900858318640377350,\t-0.900836611853200630,\t-0.900814902813932620,\t\n-0.900793191522627270,\t-0.900771477979338990,\t-0.900749762184121730,\t-0.900728044137030340,\t-0.900706323838118880,\t-0.900684601287441540,\t-0.900662876485052500,\t-0.900641149431006480,\t\n-0.900619420125357560,\t-0.900597688568159920,\t-0.900575954759468280,\t-0.900554218699336720,\t-0.900532480387819630,\t-0.900510739824971100,\t-0.900488997010845950,\t-0.900467251945498370,\t\n-0.900445504628982650,\t-0.900423755061352860,\t-0.900402003242663950,\t-0.900380249172969990,\t-0.900358492852325500,\t-0.900336734280784530,\t-0.900314973458401950,\t-0.900293210385231910,\t\n-0.900271445061328830,\t-0.900249677486746890,\t-0.900227907661541040,\t-0.900206135585765450,\t-0.900184361259474210,\t-0.900162584682722370,\t-0.900140805855564000,\t-0.900119024778053610,\t\n-0.900097241450245500,\t-0.900075455872194510,\t-0.900053668043954810,\t-0.900031877965581040,\t-0.900010085637127260,\t-0.899988291058648530,\t-0.899966494230199030,\t-0.899944695151833400,\t\n-0.899922893823605690,\t-0.899901090245571080,\t-0.899879284417783640,\t-0.899857476340298000,\t-0.899835666013168560,\t-0.899813853436450040,\t-0.899792038610196960,\t-0.899770221534463620,\t\n-0.899748402209304850,\t-0.899726580634775060,\t-0.899704756810928870,\t-0.899682930737820570,\t-0.899661102415505120,\t-0.899639271844037030,\t-0.899617439023470580,\t-0.899595603953860510,\t\n-0.899573766635261450,\t-0.899551927067728130,\t-0.899530085251314950,\t-0.899508241186076310,\t-0.899486394872067270,\t-0.899464546309342360,\t-0.899442695497955970,\t-0.899420842437962610,\t\n-0.899398987129417460,\t-0.899377129572374810,\t-0.899355269766889290,\t-0.899333407713015400,\t-0.899311543410808210,\t-0.899289676860322130,\t-0.899267808061611660,\t-0.899245937014731990,\t\n-0.899224063719737400,\t-0.899202188176682630,\t-0.899180310385622180,\t-0.899158430346611140,\t-0.899136548059704110,\t-0.899114663524955620,\t-0.899092776742420270,\t-0.899070887712153270,\t\n-0.899048996434208990,\t-0.899027102908642180,\t-0.899005207135507470,\t-0.898983309114860020,\t-0.898961408846754130,\t-0.898939506331244860,\t-0.898917601568386520,\t-0.898895694558234480,\t\n-0.898873785300843050,\t-0.898851873796267080,\t-0.898829960044561620,\t-0.898808044045781300,\t-0.898786125799980740,\t-0.898764205307214790,\t-0.898742282567538410,\t-0.898720357581006430,\t\n-0.898698430347673490,\t-0.898676500867594320,\t-0.898654569140824090,\t-0.898632635167417430,\t-0.898610698947429180,\t-0.898588760480913960,\t-0.898566819767927070,\t-0.898544876808523130,\t\n-0.898522931602756980,\t-0.898500984150683250,\t-0.898479034452357330,\t-0.898457082507833850,\t-0.898435128317167430,\t-0.898413171880413360,\t-0.898391213197626380,\t-0.898369252268861440,\t\n-0.898347289094173050,\t-0.898325323673616730,\t-0.898303356007247090,\t-0.898281386095118980,\t-0.898259413937287250,\t-0.898237439533807190,\t-0.898215462884733530,\t-0.898193483990121220,\t\n-0.898171502850025010,\t-0.898149519464500280,\t-0.898127533833601670,\t-0.898105545957384340,\t-0.898083555835902820,\t-0.898061563469212620,\t-0.898039568857368580,\t-0.898017572000425420,\t\n-0.897995572898438450,\t-0.897973571551462620,\t-0.897951567959552890,\t-0.897929562122763980,\t-0.897907554041151300,\t-0.897885543714769810,\t-0.897863531143674450,\t-0.897841516327920090,\t\n-0.897819499267562100,\t-0.897797479962655460,\t-0.897775458413255010,\t-0.897753434619415810,\t-0.897731408581193160,\t-0.897709380298642000,\t-0.897687349771817300,\t-0.897665317000774120,\t\n-0.897643281985567860,\t-0.897621244726253380,\t-0.897599205222885830,\t-0.897577163475519970,\t-0.897555119484211520,\t-0.897533073249015210,\t-0.897511024769986010,\t-0.897488974047179420,\t\n-0.897466921080650400,\t-0.897444865870454130,\t-0.897422808416645460,\t-0.897400748719279990,\t-0.897378686778412590,\t-0.897356622594098540,\t-0.897334556166392680,\t-0.897312487495350640,\t\n-0.897290416581027480,\t-0.897268343423478170,\t-0.897246268022757860,\t-0.897224190378922090,\t-0.897202110492025810,\t-0.897180028362124180,\t-0.897157943989272400,\t-0.897135857373525860,\t\n-0.897113768514939740,\t-0.897091677413568990,\t-0.897069584069469240,\t-0.897047488482695550,\t-0.897025390653303110,\t-0.897003290581347090,\t-0.896981188266883000,\t-0.896959083709965800,\t\n-0.896936976910651000,\t-0.896914867868993660,\t-0.896892756585049190,\t-0.896870643058872870,\t-0.896848527290520000,\t-0.896826409280045530,\t-0.896804289027505310,\t-0.896782166532954280,\t\n-0.896760041796447970,\t-0.896737914818041220,\t-0.896715785597789970,\t-0.896693654135749200,\t-0.896671520431974180,\t-0.896649384486520430,\t-0.896627246299443350,\t-0.896605105870798000,\t\n-0.896582963200639790,\t-0.896560818289024450,\t-0.896538671136006940,\t-0.896516521741642760,\t-0.896494370105987090,\t-0.896472216229095790,\t-0.896450060111023790,\t-0.896427901751826740,\t\n-0.896405741151559800,\t-0.896383578310278590,\t-0.896361413228038420,\t-0.896339245904894780,\t-0.896317076340902850,\t-0.896294904536118380,\t-0.896272730490596640,\t-0.896250554204393150,\t\n-0.896228375677562970,\t-0.896206194910162070,\t-0.896184011902245730,\t-0.896161826653869120,\t-0.896139639165088210,\t-0.896117449435958170,\t-0.896095257466534510,\t-0.896073063256872530,\t\n-0.896050866807028060,\t-0.896028668117056390,\t-0.896006467187013040,\t-0.895984264016953410,\t-0.895962058606933230,\t-0.895939850957008010,\t-0.895917641067233040,\t-0.895895428937663830,\t\n-0.895873214568356220,\t-0.895850997959365620,\t-0.895828779110747540,\t-0.895806558022557260,\t-0.895784334694850860,\t-0.895762109127683500,\t-0.895739881321110820,\t-0.895717651275188540,\t\n-0.895695418989972070,\t-0.895673184465517140,\t-0.895650947701879030,\t-0.895628708699113820,\t-0.895606467457276790,\t-0.895584223976423570,\t-0.895561978256609550,\t-0.895539730297890910,\t\n-0.895517480100322840,\t-0.895495227663961060,\t-0.895472972988861080,\t-0.895450716075078870,\t-0.895428456922669810,\t-0.895406195531689650,\t-0.895383931902193790,\t-0.895361666034238280,\t\n-0.895339397927878640,\t-0.895317127583170280,\t-0.895294855000169370,\t-0.895272580178931190,\t-0.895250303119511700,\t-0.895228023821966200,\t-0.895205742286350750,\t-0.895183458512721080,\t\n-0.895161172501132700,\t-0.895138884251641230,\t-0.895116593764302640,\t-0.895094301039172650,\t-0.895072006076306880,\t-0.895049708875760960,\t-0.895027409437590960,\t-0.895005107761852380,\t\n-0.894982803848601070,\t-0.894960497697892540,\t-0.894938189309782970,\t-0.894915878684327870,\t-0.894893565821582970,\t-0.894871250721604230,\t-0.894848933384447490,\t-0.894826613810168370,\t\n-0.894804291998822500,\t-0.894781967950466160,\t-0.894759641665154760,\t-0.894737313142944360,\t-0.894714982383890470,\t-0.894692649388049380,\t-0.894670314155476600,\t-0.894647976686227970,\t\n-0.894625636980359350,\t-0.894603295037926790,\t-0.894580950858985920,\t-0.894558604443592700,\t-0.894536255791802850,\t-0.894513904903672440,\t-0.894491551779257320,\t-0.894469196418613330,\t\n-0.894446838821796210,\t-0.894424478988862130,\t-0.894402116919866820,\t-0.894379752614866020,\t-0.894357386073916130,\t-0.894335017297072650,\t-0.894312646284391780,\t-0.894290273035928900,\t\n-0.894267897551740740,\t-0.894245519831882720,\t-0.894223139876410890,\t-0.894200757685381100,\t-0.894178373258849520,\t-0.894155986596872010,\t-0.894133597699504620,\t-0.894111206566802990,\t\n-0.894088813198823500,\t-0.894066417595622000,\t-0.894044019757254560,\t-0.894021619683776800,\t-0.893999217375245130,\t-0.893976812831715480,\t-0.893954406053243610,\t-0.893931997039885800,\t\n-0.893909585791698100,\t-0.893887172308736490,\t-0.893864756591056690,\t-0.893842338638715210,\t-0.893819918451767890,\t-0.893797496030270700,\t-0.893775071374279690,\t-0.893752644483851060,\t\n-0.893730215359040960,\t-0.893707783999905250,\t-0.893685350406499880,\t-0.893662914578881360,\t-0.893640476517105540,\t-0.893618036221228600,\t-0.893595593691306260,\t-0.893573148927395140,\t\n-0.893550701929551220,\t-0.893528252697830320,\t-0.893505801232288950,\t-0.893483347532983090,\t-0.893460891599968890,\t-0.893438433433302310,\t-0.893415973033039770,\t-0.893393510399237310,\t\n-0.893371045531951010,\t-0.893348578431237050,\t-0.893326109097151710,\t-0.893303637529751170,\t-0.893281163729091500,\t-0.893258687695228760,\t-0.893236209428219460,\t-0.893213728928119680,\t\n-0.893191246194985580,\t-0.893168761228873120,\t-0.893146274029838930,\t-0.893123784597939060,\t-0.893101292933229820,\t-0.893078799035767150,\t-0.893056302905607560,\t-0.893033804542807340,\t\n-0.893011303947422340,\t-0.892988801119509290,\t-0.892966296059124250,\t-0.892943788766323410,\t-0.892921279241162940,\t-0.892898767483699560,\t-0.892876253493989140,\t-0.892853737272088170,\t\n-0.892831218818052610,\t-0.892808698131939190,\t-0.892786175213803990,\t-0.892763650063703510,\t-0.892741122681693590,\t-0.892718593067831080,\t-0.892696061222172040,\t-0.892673527144772880,\t\n-0.892650990835689770,\t-0.892628452294979220,\t-0.892605911522697750,\t-0.892583368518901190,\t-0.892560823283646390,\t-0.892538275816989520,\t-0.892515726118987110,\t-0.892493174189694980,\t\n-0.892470620029170210,\t-0.892448063637468980,\t-0.892425505014647460,\t-0.892402944160762050,\t-0.892380381075869480,\t-0.892357815760025820,\t-0.892335248213287800,\t-0.892312678435711380,\t\n-0.892290106427353510,\t-0.892267532188270260,\t-0.892244955718518360,\t-0.892222377018153770,\t-0.892199796087233430,\t-0.892177212925813530,\t-0.892154627533950470,\t-0.892132039911701090,\t\n-0.892109450059121570,\t-0.892086857976268410,\t-0.892064263663197910,\t-0.892041667119967020,\t-0.892019068346631920,\t-0.891996467343249110,\t-0.891973864109874890,\t-0.891951258646566330,\t\n-0.891928650953379590,\t-0.891906041030371190,\t-0.891883428877597530,\t-0.891860814495115450,\t-0.891838197882981350,\t-0.891815579041251750,\t-0.891792957969983040,\t-0.891770334669232060,\t\n-0.891747709139055320,\t-0.891725081379509120,\t-0.891702451390650300,\t-0.891679819172535470,\t-0.891657184725221040,\t-0.891634548048763410,\t-0.891611909143219750,\t-0.891589268008646130,\t\n-0.891566624645099500,\t-0.891543979052636050,\t-0.891521331231312830,\t-0.891498681181186360,\t-0.891476028902313030,\t-0.891453374394749590,\t-0.891430717658552860,\t-0.891408058693779260,\t\n-0.891385397500485620,\t-0.891362734078728240,\t-0.891340068428564280,\t-0.891317400550050040,\t-0.891294730443242370,\t-0.891272058108197650,\t-0.891249383544973070,\t-0.891226706753624920,\t\n-0.891204027734209920,\t-0.891181346486784930,\t-0.891158663011406670,\t-0.891135977308131650,\t-0.891113289377016500,\t-0.891090599218118400,\t-0.891067906831493840,\t-0.891045212217199340,\t\n-0.891022515375291760,\t-0.890999816305828030,\t-0.890977115008864780,\t-0.890954411484458750,\t-0.890931705732666450,\t-0.890908997753545150,\t-0.890886287547151380,\t-0.890863575113541860,\t\n-0.890840860452773110,\t-0.890818143564902520,\t-0.890795424449986490,\t-0.890772703108081760,\t-0.890749979539245400,\t-0.890727253743534230,\t-0.890704525721004780,\t-0.890681795471713890,\t\n-0.890659062995718730,\t-0.890636328293075820,\t-0.890613591363842220,\t-0.890590852208074320,\t-0.890568110825829540,\t-0.890545367217164490,\t-0.890522621382136000,\t-0.890499873320800830,\t\n-0.890477123033216130,\t-0.890454370519438540,\t-0.890431615779525120,\t-0.890408858813532490,\t-0.890386099621517820,\t-0.890363338203537970,\t-0.890340574559649540,\t-0.890317808689909840,\t\n-0.890295040594375700,\t-0.890272270273103960,\t-0.890249497726151250,\t-0.890226722953575080,\t-0.890203945955432060,\t-0.890181166731779160,\t-0.890158385282673210,\t-0.890135601608171510,\t\n-0.890112815708330670,\t-0.890090027583207990,\t-0.890067237232859850,\t-0.890044444657343890,\t-0.890021649856716830,\t-0.889998852831035640,\t-0.889976053580357140,\t-0.889953252104738750,\t\n-0.889930448404237180,\t-0.889907642478909410,\t-0.889884834328812380,\t-0.889862023954003490,\t-0.889839211354539580,\t-0.889816396530477390,\t-0.889793579481874430,\t-0.889770760208787540,\t\n-0.889747938711273670,\t-0.889725114989389780,\t-0.889702289043193370,\t-0.889679460872741190,\t-0.889656630478090400,\t-0.889633797859297750,\t-0.889610963016420840,\t-0.889588125949516530,\t\n-0.889565286658641980,\t-0.889542445143853940,\t-0.889519601405209910,\t-0.889496755442766960,\t-0.889473907256582150,\t-0.889451056846712330,\t-0.889428204213215110,\t-0.889405349356147350,\t\n-0.889382492275565980,\t-0.889359632971528650,\t-0.889336771444092180,\t-0.889313907693313870,\t-0.889291041719250550,\t-0.889268173521959750,\t-0.889245303101498630,\t-0.889222430457924150,\t\n-0.889199555591293490,\t-0.889176678501664040,\t-0.889153799189092990,\t-0.889130917653637390,\t-0.889108033895354310,\t-0.889085147914301270,\t-0.889062259710535430,\t-0.889039369284113980,\t\n-0.889016476635093870,\t-0.888993581763532830,\t-0.888970684669487700,\t-0.888947785353015770,\t-0.888924883814174560,\t-0.888901980053021120,\t-0.888879074069612640,\t-0.888856165864006400,\t\n-0.888833255436259910,\t-0.888810342786430340,\t-0.888787427914574880,\t-0.888764510820750590,\t-0.888741591505015300,\t-0.888718669967425990,\t-0.888695746208039930,\t-0.888672820226914410,\t\n-0.888649892024107050,\t-0.888626961599674910,\t-0.888604028953675410,\t-0.888581094086165590,\t-0.888558156997203200,\t-0.888535217686845510,\t-0.888512276155149490,\t-0.888489332402173090,\t\n-0.888466386427973260,\t-0.888443438232607520,\t-0.888420487816133030,\t-0.888397535178607420,\t-0.888374580320087980,\t-0.888351623240632100,\t-0.888328663940296970,\t-0.888305702419140420,\t\n-0.888282738677219630,\t-0.888259772714591890,\t-0.888236804531314590,\t-0.888213834127445480,\t-0.888190861503041830,\t-0.888167886658160930,\t-0.888144909592860190,\t-0.888121930307197330,\t\n-0.888098948801229640,\t-0.888075965075014630,\t-0.888052979128609480,\t-0.888029990962072020,\t-0.888007000575459670,\t-0.887984007968829590,\t-0.887961013142239630,\t-0.887938016095747300,\t\n-0.887915016829409760,\t-0.887892015343284550,\t-0.887869011637429480,\t-0.887846005711901980,\t-0.887822997566759310,\t-0.887799987202058990,\t-0.887776974617858980,\t-0.887753959814216450,\t\n-0.887730942791189140,\t-0.887707923548834100,\t-0.887684902087209630,\t-0.887661878406372780,\t-0.887638852506381300,\t-0.887615824387292470,\t-0.887592794049164250,\t-0.887569761492054020,\t\n-0.887546726716019310,\t-0.887523689721117840,\t-0.887500650507407230,\t-0.887477609074945000,\t-0.887454565423788530,\t-0.887431519553995800,\t-0.887408471465624290,\t-0.887385421158731650,\t\n-0.887362368633375250,\t-0.887339313889613070,\t-0.887316256927502710,\t-0.887293197747101580,\t-0.887270136348467410,\t-0.887247072731657930,\t-0.887224006896730870,\t-0.887200938843743850,\t\n-0.887177868572754160,\t-0.887154796083819970,\t-0.887131721376998920,\t-0.887108644452348270,\t-0.887085565309926330,\t-0.887062483949790370,\t-0.887039400371998240,\t-0.887016314576607350,\t\n-0.886993226563675960,\t-0.886970136333261490,\t-0.886947043885421670,\t-0.886923949220214000,\t-0.886900852337696670,\t-0.886877753237927280,\t-0.886854651920963470,\t-0.886831548386862730,\t\n-0.886808442635683370,\t-0.886785334667482990,\t-0.886762224482319230,\t-0.886739112080249690,\t-0.886715997461332560,\t-0.886692880625625460,\t-0.886669761573186220,\t-0.886646640304072250,\t\n-0.886623516818341950,\t-0.886600391116052820,\t-0.886577263197262600,\t-0.886554133062029350,\t-0.886531000710410800,\t-0.886507866142464680,\t-0.886484729358248740,\t-0.886461590357821240,\t\n-0.886438449141239700,\t-0.886415305708562080,\t-0.886392160059845890,\t-0.886369012195149630,\t-0.886345862114530700,\t-0.886322709818047280,\t-0.886299555305756770,\t-0.886276398577717560,\t\n-0.886253239633987500,\t-0.886230078474624210,\t-0.886206915099685520,\t-0.886183749509229850,\t-0.886160581703314690,\t-0.886137411681997890,\t-0.886114239445337850,\t-0.886091064993392070,\t\n-0.886067888326218740,\t-0.886044709443875480,\t-0.886021528346420670,\t-0.885998345033911950,\t-0.885975159506407480,\t-0.885951971763964790,\t-0.885928781806642470,\t-0.885905589634498170,\t\n-0.885882395247589830,\t-0.885859198645975400,\t-0.885835999829713060,\t-0.885812798798860770,\t-0.885789595553476580,\t-0.885766390093618130,\t-0.885743182419343910,\t-0.885719972530711660,\t\n-0.885696760427779340,\t-0.885673546110605340,\t-0.885650329579247500,\t-0.885627110833763780,\t-0.885603889874212010,\t-0.885580666700650830,\t-0.885557441313137960,\t-0.885534213711731470,\t\n-0.885510983896489300,\t-0.885487751867469860,\t-0.885464517624731000,\t-0.885441281168330870,\t-0.885418042498327230,\t-0.885394801614778790,\t-0.885371558517743410,\t-0.885348313207279030,\t\n-0.885325065683443710,\t-0.885301815946295870,\t-0.885278563995893550,\t-0.885255309832294610,\t-0.885232053455557550,\t-0.885208794865740440,\t-0.885185534062901350,\t-0.885162271047098100,\t\n-0.885139005818389450,\t-0.885115738376833330,\t-0.885092468722487810,\t-0.885069196855410970,\t-0.885045922775661300,\t-0.885022646483296760,\t-0.884999367978375640,\t-0.884976087260956000,\t\n-0.884952804331096240,\t-0.884929519188854430,\t-0.884906231834288960,\t-0.884882942267457560,\t-0.884859650488419190,\t-0.884836356497231580,\t-0.884813060293953010,\t-0.884789761878641670,\t\n-0.884766461251356160,\t-0.884743158412154450,\t-0.884719853361094710,\t-0.884696546098235450,\t-0.884673236623634840,\t-0.884649924937351170,\t-0.884626611039442510,\t-0.884603294929967480,\t\n-0.884579976608984240,\t-0.884556656076550980,\t-0.884533333332725990,\t-0.884510008377567770,\t-0.884486681211134610,\t-0.884463351833484680,\t-0.884440020244676160,\t-0.884416686444767900,\t\n-0.884393350433817840,\t-0.884370012211884380,\t-0.884346671779025820,\t-0.884323329135300650,\t-0.884299984280767170,\t-0.884276637215483550,\t-0.884253287939508640,\t-0.884229936452900380,\t\n-0.884206582755717290,\t-0.884183226848017530,\t-0.884159868729859970,\t-0.884136508401302760,\t-0.884113145862404190,\t-0.884089781113222670,\t-0.884066414153816820,\t-0.884043044984244910,\t\n-0.884019673604565460,\t-0.883996300014836530,\t-0.883972924215117080,\t-0.883949546205465400,\t-0.883926165985939760,\t-0.883902783556598570,\t-0.883879398917500670,\t-0.883856012068704120,\t\n-0.883832623010267440,\t-0.883809231742249460,\t-0.883785838264708250,\t-0.883762442577702530,\t-0.883739044681290500,\t-0.883715644575531090,\t-0.883692242260482490,\t-0.883668837736203310,\t\n-0.883645431002751840,\t-0.883622022060187030,\t-0.883598610908567170,\t-0.883575197547950770,\t-0.883551781978396120,\t-0.883528364199962280,\t-0.883504944212707530,\t-0.883481522016690390,\t\n-0.883458097611969250,\t-0.883434670998603070,\t-0.883411242176650240,\t-0.883387811146169270,\t-0.883364377907218560,\t-0.883340942459857060,\t-0.883317504804143280,\t-0.883294064940135510,\t\n-0.883270622867892820,\t-0.883247178587473590,\t-0.883223732098936340,\t-0.883200283402339580,\t-0.883176832497742370,\t-0.883153379385203000,\t-0.883129924064780300,\t-0.883106466536532460,\t\n-0.883083006800518660,\t-0.883059544856797380,\t-0.883036080705427270,\t-0.883012614346466720,\t-0.882989145779974890,\t-0.882965675006010200,\t-0.882942202024631250,\t-0.882918726835896560,\t\n-0.882895249439865300,\t-0.882871769836595990,\t-0.882848288026147010,\t-0.882824804008577440,\t-0.882801317783945990,\t-0.882777829352311190,\t-0.882754338713731550,\t-0.882730845868266330,\t\n-0.882707350815973960,\t-0.882683853556913260,\t-0.882660354091142630,\t-0.882636852418721470,\t-0.882613348539708080,\t-0.882589842454161280,\t-0.882566334162139810,\t-0.882542823663702620,\t\n-0.882519310958908340,\t-0.882495796047815810,\t-0.882472278930483630,\t-0.882448759606970890,\t-0.882425238077336300,\t-0.882401714341638390,\t-0.882378188399936430,\t-0.882354660252288920,\t\n-0.882331129898754840,\t-0.882307597339392680,\t-0.882284062574261730,\t-0.882260525603420720,\t-0.882236986426928270,\t-0.882213445044843230,\t-0.882189901457224760,\t-0.882166355664131490,\t\n-0.882142807665622470,\t-0.882119257461756120,\t-0.882095705052591830,\t-0.882072150438188320,\t-0.882048593618604330,\t-0.882025034593898800,\t-0.882001473364130820,\t-0.881977909929359090,\t\n-0.881954344289642700,\t-0.881930776445040140,\t-0.881907206395610930,\t-0.881883634141413690,\t-0.881860059682507140,\t-0.881836483018950680,\t-0.881812904150802930,\t-0.881789323078122970,\t\n-0.881765739800969510,\t-0.881742154319401950,\t-0.881718566633478920,\t-0.881694976743259470,\t-0.881671384648802460,\t-0.881647790350167160,\t-0.881624193847412310,\t-0.881600595140597080,\t\n-0.881576994229780090,\t-0.881553391115020850,\t-0.881529785796378080,\t-0.881506178273910870,\t-0.881482568547678040,\t-0.881458956617738990,\t-0.881435342484152560,\t-0.881411726146977600,\t\n-0.881388107606273510,\t-0.881364486862099120,\t-0.881340863914513490,\t-0.881317238763575480,\t-0.881293611409344590,\t-0.881269981851879770,\t-0.881246350091239860,\t-0.881222716127483930,\t\n-0.881199079960671480,\t-0.881175441590861250,\t-0.881151801018112410,\t-0.881128158242483920,\t-0.881104513264035270,\t-0.881080866082825210,\t-0.881057216698913130,\t-0.881033565112357640,\t\n-0.881009911323218600,\t-0.880986255331554720,\t-0.880962597137424970,\t-0.880938936740888970,\t-0.880915274142005660,\t-0.880891609340834100,\t-0.880867942337433260,\t-0.880844273131862860,\t\n-0.880820601724181750,\t-0.880796928114449210,\t-0.880773252302724070,\t-0.880749574289065970,\t-0.880725894073533970,\t-0.880702211656187230,\t-0.880678527037084820,\t-0.880654840216286260,\t\n-0.880631151193850600,\t-0.880607459969837030,\t-0.880583766544304590,\t-0.880560070917313030,\t-0.880536373088921190,\t-0.880512673059188230,\t-0.880488970828173900,\t-0.880465266395937030,\t\n-0.880441559762537020,\t-0.880417850928032930,\t-0.880394139892484380,\t-0.880370426655950560,\t-0.880346711218490620,\t-0.880322993580163640,\t-0.880299273741029450,\t-0.880275551701147130,\t\n-0.880251827460575840,\t-0.880228101019374760,\t-0.880204372377603740,\t-0.880180641535321720,\t-0.880156908492588100,\t-0.880133173249461940,\t-0.880109435806003200,\t-0.880085696162270730,\t\n-0.880061954318324120,\t-0.880038210274222350,\t-0.880014464030025260,\t-0.879990715585792120,\t-0.879966964941581890,\t-0.879943212097454410,\t-0.879919457053468970,\t-0.879895699809684850,\t\n-0.879871940366161340,\t-0.879848178722958170,\t-0.879824414880134520,\t-0.879800648837749890,\t-0.879776880595863340,\t-0.879753110154534830,\t-0.879729337513823540,\t-0.879705562673788970,\t\n-0.879681785634490180,\t-0.879658006395987240,\t-0.879634224958339210,\t-0.879610441321605710,\t-0.879586655485845800,\t-0.879562867451119450,\t-0.879539077217486030,\t-0.879515284785004630,\t\n-0.879491490153735290,\t-0.879467693323737200,\t-0.879443894295069860,\t-0.879420093067792560,\t-0.879396289641965260,\t-0.879372484017647230,\t-0.879348676194897980,\t-0.879324866173776920,\t\n-0.879301053954343770,\t-0.879277239536658040,\t-0.879253422920779240,\t-0.879229604106766650,\t-0.879205783094680230,\t-0.879181959884579370,\t-0.879158134476523690,\t-0.879134306870572370,\t\n-0.879110477066785580,\t-0.879086645065222490,\t-0.879062810865942620,\t-0.879038974469005920,\t-0.879015135874471890,\t-0.878991295082399930,\t-0.878967452092849430,\t-0.878943606905880690,\t\n-0.878919759521552770,\t-0.878895909939925610,\t-0.878872058161058400,\t-0.878848204185011190,\t-0.878824348011843500,\t-0.878800489641615060,\t-0.878776629074385030,\t-0.878752766310213710,\t\n-0.878728901349160480,\t-0.878705034191284980,\t-0.878681164836646710,\t-0.878657293285305620,\t-0.878633419537321440,\t-0.878609543592753670,\t-0.878585665451661830,\t-0.878561785114105990,\t\n-0.878537902580145750,\t-0.878514017849840510,\t-0.878490130923250460,\t-0.878466241800435090,\t-0.878442350481454140,\t-0.878418456966367000,\t-0.878394561255233960,\t-0.878370663348114640,\t\n-0.878346763245068550,\t-0.878322860946155300,\t-0.878298956451435190,\t-0.878275049760967710,\t-0.878251140874812600,\t-0.878227229793029360,\t-0.878203316515678290,\t-0.878179401042818890,\t\n-0.878155483374511100,\t-0.878131563510814230,\t-0.878107641451788770,\t-0.878083717197494230,\t-0.878059790747990120,\t-0.878035862103336730,\t-0.878011931263593780,\t-0.877987998228820900,\t\n-0.877964062999077920,\t-0.877940125574424910,\t-0.877916185954921600,\t-0.877892244140627830,\t-0.877868300131603220,\t-0.877844353927908160,\t-0.877820405529602170,\t-0.877796454936745070,\t\n-0.877772502149396730,\t-0.877748547167617300,\t-0.877724589991466520,\t-0.877700630621004340,\t-0.877676669056290270,\t-0.877652705297384710,\t-0.877628739344347490,\t-0.877604771197238120,\t\n-0.877580800856117120,\t-0.877556828321044090,\t-0.877532853592079000,\t-0.877508876669281460,\t-0.877484897552712080,\t-0.877460916242430390,\t-0.877436932738496430,\t-0.877412947040969840,\t\n-0.877388959149911220,\t-0.877364969065380200,\t-0.877340976787436720,\t-0.877316982316140530,\t-0.877292985651552120,\t-0.877268986793731330,\t-0.877244985742737900,\t-0.877220982498632010,\t\n-0.877196977061473700,\t-0.877172969431323060,\t-0.877148959608239800,\t-0.877124947592284210,\t-0.877100933383516360,\t-0.877076916981996190,\t-0.877052898387783440,\t-0.877028877600938730,\t\n-0.877004854621521780,\t-0.876980829449592770,\t-0.876956802085211320,\t-0.876932772528438260,\t-0.876908740779333120,\t-0.876884706837956270,\t-0.876860670704367350,\t-0.876836632378626970,\t\n-0.876812591860794970,\t-0.876788549150931520,\t-0.876764504249096580,\t-0.876740457155350540,\t-0.876716407869753240,\t-0.876692356392365090,\t-0.876668302723245700,\t-0.876644246862455790,\t\n-0.876620188810055320,\t-0.876596128566104140,\t-0.876572066130662850,\t-0.876548001503791420,\t-0.876523934685550010,\t-0.876499865675998470,\t-0.876475794475197520,\t-0.876451721083207120,\t\n-0.876427645500087340,\t-0.876403567725898340,\t-0.876379487760700520,\t-0.876355405604554050,\t-0.876331321257519000,\t-0.876307234719655550,\t-0.876283145991024190,\t-0.876259055071684890,\t\n-0.876234961961698030,\t-0.876210866661123470,\t-0.876186769170022030,\t-0.876162669488453670,\t-0.876138567616478350,\t-0.876114463554156900,\t-0.876090357301549270,\t-0.876066248858715760,\t\n-0.876042138225716300,\t-0.876018025402611870,\t-0.875993910389462280,\t-0.875969793186327950,\t-0.875945673793268930,\t-0.875921552210345960,\t-0.875897428437619090,\t-0.875873302475148610,\t\n-0.875849174322994690,\t-0.875825043981217970,\t-0.875800911449878820,\t-0.875776776729037200,\t-0.875752639818753510,\t-0.875728500719088480,\t-0.875704359430102160,\t-0.875680215951854750,\t\n-0.875656070284406950,\t-0.875631922427819060,\t-0.875607772382151260,\t-0.875583620147463940,\t-0.875559465723817710,\t-0.875535309111272750,\t-0.875511150309889690,\t-0.875486989319728350,\t\n-0.875462826140849910,\t-0.875438660773314340,\t-0.875414493217182120,\t-0.875390323472513440,\t-0.875366151539369140,\t-0.875341977417809500,\t-0.875317801107894920,\t-0.875293622609685680,\t\n-0.875269441923242520,\t-0.875245259048625710,\t-0.875221073985895880,\t-0.875196886735113090,\t-0.875172697296338290,\t-0.875148505669631760,\t-0.875124311855053680,\t-0.875100115852665120,\t\n-0.875075917662526240,\t-0.875051717284697660,\t-0.875027514719239450,\t-0.875003309966212670,\t-0.874979103025677720,\t-0.874954893897694870,\t-0.874930682582324650,\t-0.874906469079627990,\t\n-0.874882253389665080,\t-0.874858035512496520,\t-0.874833815448182730,\t-0.874809593196784530,\t-0.874785368758362440,\t-0.874761142132976950,\t-0.874736913320688260,\t-0.874712682321557630,\t\n-0.874688449135645250,\t-0.874664213763011510,\t-0.874639976203717360,\t-0.874615736457823420,\t-0.874591494525390090,\t-0.874567250406477760,\t-0.874543004101147600,\t-0.874518755609459910,\t\n-0.874494504931475400,\t-0.874470252067254260,\t-0.874445997016857770,\t-0.874421739780346320,\t-0.874397480357780530,\t-0.874373218749220800,\t-0.874348954954728200,\t-0.874324688974363220,\t\n-0.874300420808186600,\t-0.874276150456258620,\t-0.874251877918640450,\t-0.874227603195392720,\t-0.874203326286575710,\t-0.874179047192250590,\t-0.874154765912477760,\t-0.874130482447318170,\t\n-0.874106196796832100,\t-0.874081908961080730,\t-0.874057618940124570,\t-0.874033326734024450,\t-0.874009032342840770,\t-0.873984735766634710,\t-0.873960437005466770,\t-0.873936136059397790,\t\n-0.873911832928488170,\t-0.873887527612799310,\t-0.873863220112391590,\t-0.873838910427325750,\t-0.873814598557662410,\t-0.873790284503462970,\t-0.873765968264787700,\t-0.873741649841697220,\t\n-0.873717329234252940,\t-0.873693006442515240,\t-0.873668681466545080,\t-0.873644354306403080,\t-0.873620024962150300,\t-0.873595693433847460,\t-0.873571359721555530,\t-0.873547023825334780,\t\n-0.873522685745246830,\t-0.873498345481352080,\t-0.873474003033711590,\t-0.873449658402385750,\t-0.873425311587436080,\t-0.873400962588923080,\t-0.873376611406907590,\t-0.873352258041450450,\t\n-0.873327902492612940,\t-0.873303544760455570,\t-0.873279184845039300,\t-0.873254822746424960,\t-0.873230458464673730,\t-0.873206091999846330,\t-0.873181723352003610,\t-0.873157352521206740,\t\n-0.873132979507516340,\t-0.873108604310993690,\t-0.873084226931699180,\t-0.873059847369694440,\t-0.873035465625039970,\t-0.873011081697796950,\t-0.872986695588025880,\t-0.872962307295788390,\t\n-0.872937916821145080,\t-0.872913524164157020,\t-0.872889129324884830,\t-0.872864732303390120,\t-0.872840333099733630,\t-0.872815931713976200,\t-0.872791528146178770,\t-0.872767122396402750,\t\n-0.872742714464708860,\t-0.872718304351158050,\t-0.872693892055811720,\t-0.872669477578730590,\t-0.872645060919975730,\t-0.872620642079608100,\t-0.872596221057688970,\t-0.872571797854279410,\t\n-0.872547372469440250,\t-0.872522944903232570,\t-0.872498515155717640,\t-0.872474083226956410,\t-0.872449649117010060,\t-0.872425212825939320,\t-0.872400774353805700,\t-0.872376333700670250,\t\n-0.872351890866593930,\t-0.872327445851637680,\t-0.872302998655862920,\t-0.872278549279330790,\t-0.872254097722102050,\t-0.872229643984238300,\t-0.872205188065800390,\t-0.872180729966849590,\t\n-0.872156269687446640,\t-0.872131807227653270,\t-0.872107342587530420,\t-0.872082875767139170,\t-0.872058406766540560,\t-0.872033935585796120,\t-0.872009462224966890,\t-0.871984986684113950,\t\n-0.871960508963298350,\t-0.871936029062581720,\t-0.871911546982024890,\t-0.871887062721689370,\t-0.871862576281635880,\t-0.871838087661926160,\t-0.871813596862621280,\t-0.871789103883782280,\t\n-0.871764608725470460,\t-0.871740111387747210,\t-0.871715611870673810,\t-0.871691110174311110,\t-0.871666606298720730,\t-0.871642100243963940,\t-0.871617592010101920,\t-0.871593081597195730,\t\n-0.871568569005306990,\t-0.871544054234496880,\t-0.871519537284826560,\t-0.871495018156357220,\t-0.871470496849150570,\t-0.871445973363267680,\t-0.871421447698769840,\t-0.871396919855718100,\t\n-0.871372389834174420,\t-0.871347857634199640,\t-0.871323323255855260,\t-0.871298786699202350,\t-0.871274247964302750,\t-0.871249707051217400,\t-0.871225163960007710,\t-0.871200618690735280,\t\n-0.871176071243461190,\t-0.871151521618247050,\t-0.871126969815153920,\t-0.871102415834243530,\t-0.871077859675577050,\t-0.871053301339215990,\t-0.871028740825221410,\t-0.871004178133655160,\t\n-0.870979613264578620,\t-0.870955046218052860,\t-0.870930476994139390,\t-0.870905905592899930,\t-0.870881332014395660,\t-0.870856756258688080,\t-0.870832178325838480,\t-0.870807598215908580,\t\n-0.870783015928959680,\t-0.870758431465052940,\t-0.870733844824250420,\t-0.870709256006613310,\t-0.870684665012203100,\t-0.870660071841080960,\t-0.870635476493308860,\t-0.870610878968947950,\t\n-0.870586279268059980,\t-0.870561677390706110,\t-0.870537073336948190,\t-0.870512467106847600,\t-0.870487858700465860,\t-0.870463248117864350,\t-0.870438635359104820,\t-0.870414020424248760,\t\n-0.870389403313357570,\t-0.870364784026492640,\t-0.870340162563716050,\t-0.870315538925089060,\t-0.870290913110672970,\t-0.870266285120529840,\t-0.870241654954720940,\t-0.870217022613308020,\t\n-0.870192388096352240,\t-0.870167751403915670,\t-0.870143112536059800,\t-0.870118471492846160,\t-0.870093828274336010,\t-0.870069182880591650,\t-0.870044535311674250,\t-0.870019885567645530,\t\n-0.869995233648566790,\t-0.869970579554500300,\t-0.869945923285507350,\t-0.869921264841649560,\t-0.869896604222988420,\t-0.869871941429586020,\t-0.869847276461503730,\t-0.869822609318803170,\t\n-0.869797940001545980,\t-0.869773268509794080,\t-0.869748594843609110,\t-0.869723919003052350,\t-0.869699240988185960,\t-0.869674560799071570,\t-0.869649878435770800,\t-0.869625193898345030,\t\n-0.869600507186856550,\t-0.869575818301366770,\t-0.869551127241937500,\t-0.869526434008630060,\t-0.869501738601506920,\t-0.869477041020629280,\t-0.869452341266059080,\t-0.869427639337857940,\t\n-0.869402935236087800,\t-0.869378228960810300,\t-0.869353520512087250,\t-0.869328809889980290,\t-0.869304097094551360,\t-0.869279382125862310,\t-0.869254664983974520,\t-0.869229945668950400,\t\n-0.869205224180851220,\t-0.869180500519739160,\t-0.869155774685675510,\t-0.869131046678722760,\t-0.869106316498942320,\t-0.869081584146396020,\t-0.869056849621145600,\t-0.869032112923253330,\t\n-0.869007374052780720,\t-0.868982633009789730,\t-0.868957889794341850,\t-0.868933144406499600,\t-0.868908396846324370,\t-0.868883647113878220,\t-0.868858895209222660,\t-0.868834141132420080,\t\n-0.868809384883532210,\t-0.868784626462620670,\t-0.868759865869747740,\t-0.868735103104975150,\t-0.868710338168364850,\t-0.868685571059978460,\t-0.868660801779878260,\t-0.868636030328126200,\t\n-0.868611256704784010,\t-0.868586480909913420,\t-0.868561702943576930,\t-0.868536922805836050,\t-0.868512140496752960,\t-0.868487356016389270,\t-0.868462569364807480,\t-0.868437780542069220,\t\n-0.868412989548236540,\t-0.868388196383371060,\t-0.868363401047535400,\t-0.868338603540791290,\t-0.868313803863200560,\t-0.868289002014825170,\t-0.868264197995727400,\t-0.868239391805969210,\t\n-0.868214583445612310,\t-0.868189772914719220,\t-0.868164960213351660,\t-0.868140145341571690,\t-0.868115328299441160,\t-0.868090509087022450,\t-0.868065687704377530,\t-0.868040864151568450,\t\n-0.868016038428656930,\t-0.867991210535705490,\t-0.867966380472776080,\t-0.867941548239930750,\t-0.867916713837231240,\t-0.867891877264740260,\t-0.867867038522519450,\t-0.867842197610631190,\t\n-0.867817354529137110,\t-0.867792509278099920,\t-0.867767661857581470,\t-0.867742812267643600,\t-0.867717960508349040,\t-0.867693106579759400,\t-0.867668250481937080,\t-0.867643392214943910,\t\n-0.867618531778842520,\t-0.867593669173694740,\t-0.867568804399562850,\t-0.867543937456508710,\t-0.867519068344594910,\t-0.867494197063883420,\t-0.867469323614436520,\t-0.867444447996316040,\t\n-0.867419570209584710,\t-0.867394690254304380,\t-0.867369808130537320,\t-0.867344923838345610,\t-0.867320037377791730,\t-0.867295148748937760,\t-0.867270257951845760,\t-0.867245364986578340,\t\n-0.867220469853197450,\t-0.867195572551765380,\t-0.867170673082344190,\t-0.867145771444996490,\t-0.867120867639784470,\t-0.867095961666770170,\t-0.867071053526015770,\t-0.867046143217584000,\t\n-0.867021230741536920,\t-0.866996316097936700,\t-0.866971399286845410,\t-0.866946480308325880,\t-0.866921559162440180,\t-0.866896635849250590,\t-0.866871710368819160,\t-0.866846782721208630,\t\n-0.866821852906481280,\t-0.866796920924698950,\t-0.866771986775924600,\t-0.866747050460220270,\t-0.866722111977648370,\t-0.866697171328270840,\t-0.866672228512150640,\t-0.866647283529349940,\t\n-0.866622336379931020,\t-0.866597387063956060,\t-0.866572435581487780,\t-0.866547481932588460,\t-0.866522526117320390,\t-0.866497568135745740,\t-0.866472607987927470,\t-0.866447645673927740,\t\n-0.866422681193808830,\t-0.866397714547632920,\t-0.866372745735463080,\t-0.866347774757361360,\t-0.866322801613390150,\t-0.866297826303611630,\t-0.866272848828088860,\t-0.866247869186884010,\t\n-0.866222887380059260,\t-0.866197903407677440,\t-0.866172917269800950,\t-0.866147928966492060,\t-0.866122938497813190,\t-0.866097945863827160,\t-0.866072951064596360,\t-0.866047954100183090,\t\n-0.866022954970649740,\t-0.865997953676059250,\t-0.865972950216473800,\t-0.865947944591956010,\t-0.865922936802568160,\t-0.865897926848373190,\t-0.865872914729433400,\t-0.865847900445811390,\t\n-0.865822883997569240,\t-0.865797865384770220,\t-0.865772844607476610,\t-0.865747821665750480,\t-0.865722796559655120,\t-0.865697769289252790,\t-0.865672739854606020,\t-0.865647708255777190,\t\n-0.865622674492829260,\t-0.865597638565824720,\t-0.865572600474825980,\t-0.865547560219895540,\t-0.865522517801096460,\t-0.865497473218491130,\t-0.865472426472142060,\t-0.865447377562111760,\t\n-0.865422326488463180,\t-0.865397273251258810,\t-0.865372217850561180,\t-0.865347160286432880,\t-0.865322100558936880,\t-0.865297038668135570,\t-0.865271974614091550,\t-0.865246908396867690,\t\n-0.865221840016526690,\t-0.865196769473130960,\t-0.865171696766743210,\t-0.865146621897426420,\t-0.865121544865242950,\t-0.865096465670255780,\t-0.865071384312527060,\t-0.865046300792120190,\t\n-0.865021215109097570,\t-0.864996127263521930,\t-0.864971037255455770,\t-0.864945945084962140,\t-0.864920850752103790,\t-0.864895754256943210,\t-0.864870655599543010,\t-0.864845554779966500,\t\n-0.864820451798275940,\t-0.864795346654534390,\t-0.864770239348804150,\t-0.864745129881148600,\t-0.864720018251630250,\t-0.864694904460311610,\t-0.864669788507255950,\t-0.864644670392525790,\t\n-0.864619550116183970,\t-0.864594427678292980,\t-0.864569303078916220,\t-0.864544176318116200,\t-0.864519047395955640,\t-0.864493916312497390,\t-0.864468783067804500,\t-0.864443647661939600,\t\n-0.864418510094965730,\t-0.864393370366945190,\t-0.864368228477941590,\t-0.864343084428017330,\t-0.864317938217235350,\t-0.864292789845658380,\t-0.864267639313349600,\t-0.864242486620371730,\t\n-0.864217331766787390,\t-0.864192174752660080,\t-0.864167015578052200,\t-0.864141854243026810,\t-0.864116690747646520,\t-0.864091525091974840,\t-0.864066357276074280,\t-0.864041187300007780,\t\n-0.864016015163838190,\t-0.863990840867628670,\t-0.863965664411442180,\t-0.863940485795341440,\t-0.863915305019389290,\t-0.863890122083649130,\t-0.863864936988183670,\t-0.863839749733055770,\t\n-0.863814560318328370,\t-0.863789368744064760,\t-0.863764175010327650,\t-0.863738979117180010,\t-0.863713781064685100,\t-0.863688580852905790,\t-0.863663378481904890,\t-0.863638173951745470,\t\n-0.863612967262490700,\t-0.863587758414203540,\t-0.863562547406947050,\t-0.863537334240783940,\t-0.863512118915777730,\t-0.863486901431991250,\t-0.863461681789487460,\t-0.863436459988329300,\t\n-0.863411236028580160,\t-0.863386009910302900,\t-0.863360781633560670,\t-0.863335551198416320,\t-0.863310318604933240,\t-0.863285083853174370,\t-0.863259846943202570,\t-0.863234607875081330,\t\n-0.863209366648873600,\t-0.863184123264642560,\t-0.863158877722450920,\t-0.863133630022362320,\t-0.863108380164439580,\t-0.863083128148745880,\t-0.863057873975344170,\t-0.863032617644298060,\t\n-0.863007359155670390,\t-0.862982098509524230,\t-0.862956835705922630,\t-0.862931570744929210,\t-0.862906303626606920,\t-0.862881034351018820,\t-0.862855762918227850,\t-0.862830489328297760,\t\n-0.862805213581291470,\t-0.862779935677272070,\t-0.862754655616302600,\t-0.862729373398446800,\t-0.862704089023767500,\t-0.862678802492327760,\t-0.862653513804191310,\t-0.862628222959420990,\t\n-0.862602929958080190,\t-0.862577634800231750,\t-0.862552337485939510,\t-0.862527038015266420,\t-0.862501736388275760,\t-0.862476432605030490,\t-0.862451126665594310,\t-0.862425818570030420,\t\n-0.862400508318401980,\t-0.862375195910771940,\t-0.862349881347204250,\t-0.862324564627761750,\t-0.862299245752507940,\t-0.862273924721505770,\t-0.862248601534818970,\t-0.862223276192510710,\t\n-0.862197948694644060,\t-0.862172619041282730,\t-0.862147287232489790,\t-0.862121953268328740,\t-0.862096617148862430,\t-0.862071278874154910,\t-0.862045938444269240,\t-0.862020595859268600,\t\n-0.861995251119216380,\t-0.861969904224176190,\t-0.861944555174211200,\t-0.861919203969384930,\t-0.861893850609760310,\t-0.861868495095401310,\t-0.861843137426371090,\t-0.861817777602733040,\t\n-0.861792415624550330,\t-0.861767051491886820,\t-0.861741685204805650,\t-0.861716316763370130,\t-0.861690946167643860,\t-0.861665573417690340,\t-0.861640198513572870,\t-0.861614821455354730,\t\n-0.861589442243099750,\t-0.861564060876871100,\t-0.861538677356732290,\t-0.861513291682746600,\t-0.861487903854977870,\t-0.861462513873489490,\t-0.861437121738344750,\t-0.861411727449607030,\t\n-0.861386331007340080,\t-0.861360932411607380,\t-0.861335531662472450,\t-0.861310128759998350,\t-0.861284723704249130,\t-0.861259316495288200,\t-0.861233907133178930,\t-0.861208495617984630,\t\n-0.861183081949769450,\t-0.861157666128596460,\t-0.861132248154529050,\t-0.861106828027631280,\t-0.861081405747966430,\t-0.861055981315598130,\t-0.861030554730589650,\t-0.861005125993004940,\t\n-0.860979695102907390,\t-0.860954262060360740,\t-0.860928826865428040,\t-0.860903389518173580,\t-0.860877950018660740,\t-0.860852508366952930,\t-0.860827064563113640,\t-0.860801618607206830,\t\n-0.860776170499296110,\t-0.860750720239444880,\t-0.860725267827716630,\t-0.860699813264175440,\t-0.860674356548884690,\t-0.860648897681907890,\t-0.860623436663309090,\t-0.860597973493151590,\t\n-0.860572508171499220,\t-0.860547040698415370,\t-0.860521571073964210,\t-0.860496099298209030,\t-0.860470625371213550,\t-0.860445149293041390,\t-0.860419671063756500,\t-0.860394190683422490,\t\n-0.860368708152102980,\t-0.860343223469861470,\t-0.860317736636762140,\t-0.860292247652868490,\t-0.860266756518244250,\t-0.860241263232952800,\t-0.860215767797058440,\t-0.860190270210624660,\t\n-0.860164770473714980,\t-0.860139268586393670,\t-0.860113764548724120,\t-0.860088258360770190,\t-0.860062750022595360,\t-0.860037239534263920,\t-0.860011726895839380,\t-0.859986212107385460,\t\n-0.859960695168965890,\t-0.859935176080644740,\t-0.859909654842485600,\t-0.859884131454552340,\t-0.859858605916908660,\t-0.859833078229618520,\t-0.859807548392745760,\t-0.859782016406354210,\t\n-0.859756482270507270,\t-0.859730945985269450,\t-0.859705407550704130,\t-0.859679866966875150,\t-0.859654324233846800,\t-0.859628779351682470,\t-0.859603232320446330,\t-0.859577683140201780,\t\n-0.859552131811013310,\t-0.859526578332944550,\t-0.859501022706059330,\t-0.859475464930421260,\t-0.859449905006094860,\t-0.859424342933143630,\t-0.859398778711631510,\t-0.859373212341622230,\t\n-0.859347643823180190,\t-0.859322073156368990,\t-0.859296500341252710,\t-0.859270925377894850,\t-0.859245348266359900,\t-0.859219769006711600,\t-0.859194187599014000,\t-0.859168604043330510,\t\n-0.859143018339725840,\t-0.859117430488263610,\t-0.859091840489007550,\t-0.859066248342022170,\t-0.859040654047371180,\t-0.859015057605118540,\t-0.858989459015327970,\t-0.858963858278063990,\t\n-0.858938255393390420,\t-0.858912650361371210,\t-0.858887043182070100,\t-0.858861433855551580,\t-0.858835822381879610,\t-0.858810208761118020,\t-0.858784592993330540,\t-0.858758975078582010,\t\n-0.858733355016935930,\t-0.858707732808456470,\t-0.858682108453207470,\t-0.858656481951253440,\t-0.858630853302658200,\t-0.858605222507485610,\t-0.858579589565800160,\t-0.858553954477665800,\t\n-0.858528317243146490,\t-0.858502677862306160,\t-0.858477036335209440,\t-0.858451392661920050,\t-0.858425746842502170,\t-0.858400098877019730,\t-0.858374448765537260,\t-0.858348796508118680,\t\n-0.858323142104828070,\t-0.858297485555729490,\t-0.858271826860887320,\t-0.858246166020365630,\t-0.858220503034228480,\t-0.858194837902539920,\t-0.858169170625364350,\t-0.858143501202766060,\t\n-0.858117829634808650,\t-0.858092155921556850,\t-0.858066480063074730,\t-0.858040802059426460,\t-0.858015121910675860,\t-0.857989439616887780,\t-0.857963755178126060,\t-0.857938068594454980,\t\n-0.857912379865938380,\t-0.857886688992641200,\t-0.857860995974627280,\t-0.857835300811960800,\t-0.857809603504705920,\t-0.857783904052927150,\t-0.857758202456688770,\t-0.857732498716054730,\t\n-0.857706792831089300,\t-0.857681084801857120,\t-0.857655374628422230,\t-0.857629662310848810,\t-0.857603947849201130,\t-0.857578231243543710,\t-0.857552512493940820,\t-0.857526791600456420,\t\n-0.857501068563155110,\t-0.857475343382101300,\t-0.857449616057359030,\t-0.857423886588992490,\t-0.857398154977066510,\t-0.857372421221645140,\t-0.857346685322792680,\t-0.857320947280573400,\t\n-0.857295207095051800,\t-0.857269464766292290,\t-0.857243720294359140,\t-0.857217973679316400,\t-0.857192224921229040,\t-0.857166474020161000,\t-0.857140720976176770,\t-0.857114965789340650,\t\n-0.857089208459717260,\t-0.857063448987370860,\t-0.857037687372365520,\t-0.857011923614766300,\t-0.856986157714637260,\t-0.856960389672042800,\t-0.856934619487047190,\t-0.856908847159715160,\t\n-0.856883072690111100,\t-0.856857296078299300,\t-0.856831517324344150,\t-0.856805736428310260,\t-0.856779953390262140,\t-0.856754168210264070,\t-0.856728380888380440,\t-0.856702591424676090,\t\n-0.856676799819215180,\t-0.856651006072062350,\t-0.856625210183281640,\t-0.856599412152938220,\t-0.856573611981096270,\t-0.856547809667820070,\t-0.856522005213174680,\t-0.856496198617224150,\t\n-0.856470389880033100,\t-0.856444579001665930,\t-0.856418765982187470,\t-0.856392950821662110,\t-0.856367133520154370,\t-0.856341314077728620,\t-0.856315492494449830,\t-0.856289668770382150,\t\n-0.856263842905590430,\t-0.856238014900138960,\t-0.856212184754092550,\t-0.856186352467515730,\t-0.856160518040472880,\t-0.856134681473028740,\t-0.856108842765248010,\t-0.856083001917195110,\t\n-0.856057158928934530,\t-0.856031313800531320,\t-0.856005466532049790,\t-0.855979617123554640,\t-0.855953765575110160,\t-0.855927911886781520,\t-0.855902056058633120,\t-0.855876198090729570,\t\n-0.855850337983135260,\t-0.855824475735915470,\t-0.855798611349134370,\t-0.855772744822856700,\t-0.855746876157146950,\t-0.855721005352070410,\t-0.855695132407691130,\t-0.855669257324074170,\t\n-0.855643380101283820,\t-0.855617500739385140,\t-0.855591619238442850,\t-0.855565735598521450,\t-0.855539849819685450,\t-0.855513961902000130,\t-0.855488071845529880,\t-0.855462179650339220,\t\n-0.855436285316493290,\t-0.855410388844056620,\t-0.855384490233094040,\t-0.855358589483670050,\t-0.855332686595849820,\t-0.855306781569697750,\t-0.855280874405278890,\t-0.855254965102657420,\t\n-0.855229053661898940,\t-0.855203140083067750,\t-0.855177224366228780,\t-0.855151306511446440,\t-0.855125386518786110,\t-0.855099464388312190,\t-0.855073540120089740,\t-0.855047613714183140,\t\n-0.855021685170657800,\t-0.854995754489578320,\t-0.854969821671009100,\t-0.854943886715015530,\t-0.854917949621662340,\t-0.854892010391014150,\t-0.854866069023135890,\t-0.854840125518092520,\t\n-0.854814179875948990,\t-0.854788232096769800,\t-0.854762282180620000,\t-0.854736330127564670,\t-0.854710375937668410,\t-0.854684419610996390,\t-0.854658461147612900,\t-0.854632500547583660,\t\n-0.854606537810973070,\t-0.854580572937846170,\t-0.854554605928267600,\t-0.854528636782302730,\t-0.854502665500016300,\t-0.854476692081472920,\t-0.854450716526738100,\t-0.854424738835876440,\t\n-0.854398759008953010,\t-0.854372777046032320,\t-0.854346792947180080,\t-0.854320806712460690,\t-0.854294818341939430,\t-0.854268827835680810,\t-0.854242835193750440,\t-0.854216840416212930,\t\n-0.854190843503133230,\t-0.854164844454576300,\t-0.854138843270607520,\t-0.854112839951291500,\t-0.854086834496693430,\t-0.854060826906878120,\t-0.854034817181910990,\t-0.854008805321856750,\t\n-0.853982791326780450,\t-0.853956775196746950,\t-0.853930756931821740,\t-0.853904736532069770,\t-0.853878713997555660,\t-0.853852689328344900,\t-0.853826662524502570,\t-0.853800633586093480,\t\n-0.853774602513182600,\t-0.853748569305835430,\t-0.853722533964116790,\t-0.853696496488091870,\t-0.853670456877825500,\t-0.853644415133383290,\t-0.853618371254829870,\t-0.853592325242230610,\t\n-0.853566277095650360,\t-0.853540226815154620,\t-0.853514174400808230,\t-0.853488119852676470,\t-0.853462063170824180,\t-0.853436004355316970,\t-0.853409943406219780,\t-0.853383880323597350,\t\n-0.853357815107515630,\t-0.853331747758039330,\t-0.853305678275233630,\t-0.853279606659163470,\t-0.853253532909894590,\t-0.853227457027491810,\t-0.853201379012020420,\t-0.853175298863545370,\t\n-0.853149216582132270,\t-0.853123132167846190,\t-0.853097045620752280,\t-0.853070956940915390,\t-0.853044866128401470,\t-0.853018773183275350,\t-0.852992678105602310,\t-0.852966580895447300,\t\n-0.852940481552876160,\t-0.852914380077953730,\t-0.852888276470745170,\t-0.852862170731316090,\t-0.852836062859731680,\t-0.852809952856056990,\t-0.852783840720357290,\t-0.852757726452698210,\t\n-0.852731610053144800,\t-0.852705491521762340,\t-0.852679370858615890,\t-0.852653248063771300,\t-0.852627123137293610,\t-0.852600996079248000,\t-0.852574866889699750,\t-0.852548735568714580,\t\n-0.852522602116357550,\t-0.852496466532694060,\t-0.852470328817789060,\t-0.852444188971708590,\t-0.852418046994517620,\t-0.852391902886281530,\t-0.852365756647065380,\t-0.852339608276935110,\t\n-0.852313457775955910,\t-0.852287305144192710,\t-0.852261150381711570,\t-0.852234993488577450,\t-0.852208834464855960,\t-0.852182673310612150,\t-0.852156510025911750,\t-0.852130344610820160,\t\n-0.852104177065402760,\t-0.852078007389724610,\t-0.852051835583851780,\t-0.852025661647849210,\t-0.851999485581782620,\t-0.851973307385716970,\t-0.851947127059718420,\t-0.851920944603851930,\t\n-0.851894760018183090,\t-0.851868573302777210,\t-0.851842384457700000,\t-0.851816193483016960,\t-0.851790000378793160,\t-0.851763805145094530,\t-0.851737607781986480,\t-0.851711408289534290,\t\n-0.851685206667803450,\t-0.851659002916859810,\t-0.851632797036768640,\t-0.851606589027595450,\t-0.851580378889405630,\t-0.851554166622265130,\t-0.851527952226239120,\t-0.851501735701393200,\t\n-0.851475517047792780,\t-0.851449296265503810,\t-0.851423073354591550,\t-0.851396848315121630,\t-0.851370621147159330,\t-0.851344391850770820,\t-0.851318160426021150,\t-0.851291926872976060,\t\n-0.851265691191701260,\t-0.851239453382262260,\t-0.851213213444724560,\t-0.851186971379153670,\t-0.851160727185615530,\t-0.851134480864175650,\t-0.851108232414899520,\t-0.851081981837852550,\t\n-0.851055729133100900,\t-0.851029474300709850,\t-0.851003217340745240,\t-0.850976958253272240,\t-0.850950697038357130,\t-0.850924433696065300,\t-0.850898168226462360,\t-0.850871900629613820,\t\n-0.850845630905585630,\t-0.850819359054443500,\t-0.850793085076252620,\t-0.850766808971079370,\t-0.850740530738989030,\t-0.850714250380047440,\t-0.850687967894319890,\t-0.850661683281872750,\t\n-0.850635396542771320,\t-0.850609107677081420,\t-0.850582816684868570,\t-0.850556523566198820,\t-0.850530228321137890,\t-0.850503930949751300,\t-0.850477631452104640,\t-0.850451329828264210,\t\n-0.850425026078295400,\t-0.850398720202264040,\t-0.850372412200235630,\t-0.850346102072276340,\t-0.850319789818451910,\t-0.850293475438828050,\t-0.850267158933470160,\t-0.850240840302444620,\t\n-0.850214519545817060,\t-0.850188196663652860,\t-0.850161871656018530,\t-0.850135544522979460,\t-0.850109215264601480,\t-0.850082883880950320,\t-0.850056550372092050,\t-0.850030214738092480,\t\n-0.850003876979017470,\t-0.849977537094932400,\t-0.849951195085903780,\t-0.849924850951997100,\t-0.849898504693278320,\t-0.849872156309813160,\t-0.849845805801667690,\t-0.849819453168907830,\t\n-0.849793098411599220,\t-0.849766741529807800,\t-0.849740382523599620,\t-0.849714021393040530,\t-0.849687658138196130,\t-0.849661292759132820,\t-0.849634925255916330,\t-0.849608555628612480,\t\n-0.849582183877287010,\t-0.849555810002006310,\t-0.849529434002836090,\t-0.849503055879842320,\t-0.849476675633090590,\t-0.849450293262647430,\t-0.849423908768578650,\t-0.849397522150949990,\t\n-0.849371133409827280,\t-0.849344742545277030,\t-0.849318349557364850,\t-0.849291954446156900,\t-0.849265557211718810,\t-0.849239157854116970,\t-0.849212756373417310,\t-0.849186352769685460,\t\n-0.849159947042988030,\t-0.849133539193390740,\t-0.849107129220959660,\t-0.849080717125760390,\t-0.849054302907859660,\t-0.849027886567323090,\t-0.849001468104216840,\t-0.848975047518606640,\t\n-0.848948624810559100,\t-0.848922199980140070,\t-0.848895773027415480,\t-0.848869343952451170,\t-0.848842912755313760,\t-0.848816479436069080,\t-0.848790043994783310,\t-0.848763606431522040,\t\n-0.848737166746352020,\t-0.848710724939339190,\t-0.848684281010549380,\t-0.848657834960048760,\t-0.848631386787903730,\t-0.848604936494180230,\t-0.848578484078944210,\t-0.848552029542262170,\t\n-0.848525572884200050,\t-0.848499114104824040,\t-0.848472653204199960,\t-0.848446190182394530,\t-0.848419725039473600,\t-0.848393257775503340,\t-0.848366788390549800,\t-0.848340316884679480,\t\n-0.848313843257958330,\t-0.848287367510452530,\t-0.848260889642228120,\t-0.848234409653351730,\t-0.848207927543889300,\t-0.848181443313907100,\t-0.848154956963470990,\t-0.848128468492647780,\t\n-0.848101977901503430,\t-0.848075485190103780,\t-0.848048990358515780,\t-0.848022493406805240,\t-0.847995994335038470,\t-0.847969493143281410,\t-0.847942989831600990,\t-0.847916484400062950,\t\n-0.847889976848733800,\t-0.847863467177679460,\t-0.847836955386966680,\t-0.847810441476661510,\t-0.847783925446830230,\t-0.847757407297538900,\t-0.847730887028854350,\t-0.847704364640842530,\t\n-0.847677840133569730,\t-0.847651313507102210,\t-0.847624784761506600,\t-0.847598253896848950,\t-0.847571720913195550,\t-0.847545185810613000,\t-0.847518648589167590,\t-0.847492109248925480,\t\n-0.847465567789952860,\t-0.847439024212316540,\t-0.847412478516082700,\t-0.847385930701317620,\t-0.847359380768087480,\t-0.847332828716459210,\t-0.847306274546498760,\t-0.847279718258272750,\t\n-0.847253159851847130,\t-0.847226599327288830,\t-0.847200036684664040,\t-0.847173471924039250,\t-0.847146905045480400,\t-0.847120336049054570,\t-0.847093764934828020,\t-0.847067191702866710,\t\n-0.847040616353237690,\t-0.847014038886007010,\t-0.846987459301241420,\t-0.846960877599006840,\t-0.846934293779370350,\t-0.846907707842398110,\t-0.846881119788156500,\t-0.846854529616712040,\t\n-0.846827937328131330,\t-0.846801342922480880,\t-0.846774746399826970,\t-0.846748147760236100,\t-0.846721547003775000,\t-0.846694944130510050,\t-0.846668339140507760,\t-0.846641732033834420,\t\n-0.846615122810556840,\t-0.846588511470741660,\t-0.846561898014455030,\t-0.846535282441763460,\t-0.846508664752734010,\t-0.846482044947432840,\t-0.846455423025926250,\t-0.846428798988281380,\t\n-0.846402172834564540,\t-0.846375544564842320,\t-0.846348914179180900,\t-0.846322281677647560,\t-0.846295647060308460,\t-0.846269010327230120,\t-0.846242371478479140,\t-0.846215730514122470,\t\n-0.846189087434226490,\t-0.846162442238857730,\t-0.846135794928082660,\t-0.846109145501968250,\t-0.846082493960581110,\t-0.846055840303987730,\t-0.846029184532254400,\t-0.846002526645448390,\t\n-0.845975866643636110,\t-0.845949204526883940,\t-0.845922540295258930,\t-0.845895873948827590,\t-0.845869205487656540,\t-0.845842534911812270,\t-0.845815862221361960,\t-0.845789187416371880,\t\n-0.845762510496908870,\t-0.845735831463039430,\t-0.845709150314830630,\t-0.845682467052348840,\t-0.845655781675661020,\t-0.845629094184833340,\t-0.845602404579933300,\t-0.845575712861027280,\t\n-0.845549019028181800,\t-0.845522323081463690,\t-0.845495625020940000,\t-0.845468924846677240,\t-0.845442222558741910,\t-0.845415518157201170,\t-0.845388811642121760,\t-0.845362103013570290,\t\n-0.845335392271613360,\t-0.845308679416318150,\t-0.845281964447751170,\t-0.845255247365979350,\t-0.845228528171069190,\t-0.845201806863087990,\t-0.845175083442102130,\t-0.845148357908178660,\t\n-0.845121630261384090,\t-0.845094900501785600,\t-0.845068168629449890,\t-0.845041434644443810,\t-0.845014698546833750,\t-0.844987960336687330,\t-0.844961220014071030,\t-0.844934477579051600,\t\n-0.844907733031695750,\t-0.844880986372070760,\t-0.844854237600243470,\t-0.844827486716280160,\t-0.844800733720248440,\t-0.844773978612214930,\t-0.844747221392246450,\t-0.844720462060409630,\t\n-0.844693700616771960,\t-0.844666937061399950,\t-0.844640171394360650,\t-0.844613403615720790,\t-0.844586633725547540,\t-0.844559861723907730,\t-0.844533087610868320,\t-0.844506311386495790,\t\n-0.844479533050857880,\t-0.844452752604021080,\t-0.844425970046052350,\t-0.844399185377018520,\t-0.844372398596986980,\t-0.844345609706024460,\t-0.844318818704197670,\t-0.844292025591574010,\t\n-0.844265230368220320,\t-0.844238433034203540,\t-0.844211633589590390,\t-0.844184832034448500,\t-0.844158028368844460,\t-0.844131222592845450,\t-0.844104414706517980,\t-0.844077604709929870,\t\n-0.844050792603147640,\t-0.844023978386238550,\t-0.843997162059269110,\t-0.843970343622307160,\t-0.843943523075419310,\t-0.843916700418672620,\t-0.843889875652133910,\t-0.843863048775870820,\t\n-0.843836219789950050,\t-0.843809388694438440,\t-0.843782555489403730,\t-0.843755720174912520,\t-0.843728882751032080,\t-0.843702043217829270,\t-0.843675201575371460,\t-0.843648357823725710,\t\n-0.843621511962958980,\t-0.843594663993138320,\t-0.843567813914331220,\t-0.843540961726604640,\t-0.843514107430025530,\t-0.843487251024661040,\t-0.843460392510578580,\t-0.843433531887845090,\t\n-0.843406669156527840,\t-0.843379804316693680,\t-0.843352937368410330,\t-0.843326068311744500,\t-0.843299197146763380,\t-0.843272323873534460,\t-0.843245448492124680,\t-0.843218571002601340,\t\n-0.843191691405031250,\t-0.843164809699482260,\t-0.843137925886021210,\t-0.843111039964715370,\t-0.843084151935631580,\t-0.843057261798837780,\t-0.843030369554400800,\t-0.843003475202387940,\t\n-0.842976578742866020,\t-0.842949680175902990,\t-0.842922779501565690,\t-0.842895876719921610,\t-0.842868971831037370,\t-0.842842064834981140,\t-0.842815155731819640,\t-0.842788244521620270,\t\n-0.842761331204450070,\t-0.842734415780376670,\t-0.842707498249467330,\t-0.842680578611789020,\t-0.842653656867409450,\t-0.842626733016395790,\t-0.842599807058815320,\t-0.842572878994734990,\t\n-0.842545948824222850,\t-0.842519016547345730,\t-0.842492082164171040,\t-0.842465145674766050,\t-0.842438207079198250,\t-0.842411266377535050,\t-0.842384323569843610,\t-0.842357378656191200,\t\n-0.842330431636645560,\t-0.842303482511273850,\t-0.842276531280143460,\t-0.842249577943321450,\t-0.842222622500875760,\t-0.842195664952873460,\t-0.842168705299381810,\t-0.842141743540468670,\t\n-0.842114779676201080,\t-0.842087813706646650,\t-0.842060845631872330,\t-0.842033875451946190,\t-0.842006903166935380,\t-0.841979928776907300,\t-0.841952952281929120,\t-0.841925973682068900,\t\n-0.841898992977393680,\t-0.841872010167970970,\t-0.841845025253867950,\t-0.841818038235152670,\t-0.841791049111892290,\t-0.841764057884154320,\t-0.841737064552005920,\t-0.841710069115515160,\t\n-0.841683071574749090,\t-0.841656071929775210,\t-0.841629070180661350,\t-0.841602066327474920,\t-0.841575060370283180,\t-0.841548052309153640,\t-0.841521042144154130,\t-0.841494029875352050,\t\n-0.841467015502815000,\t-0.841439999026610040,\t-0.841412980446805350,\t-0.841385959763468190,\t-0.841358936976666190,\t-0.841331912086466630,\t-0.841304885092937440,\t-0.841277855996146130,\t\n-0.841250824796160090,\t-0.841223791493046820,\t-0.841196756086874280,\t-0.841169718577709840,\t-0.841142678965621120,\t-0.841115637250675400,\t-0.841088593432940960,\t-0.841061547512484960,\t\n-0.841034499489374810,\t-0.841007449363678660,\t-0.840980397135463910,\t-0.840953342804798280,\t-0.840926286371748930,\t-0.840899227836384040,\t-0.840872167198771230,\t-0.840845104458977980,\t\n-0.840818039617071690,\t-0.840790972673120530,\t-0.840763903627191890,\t-0.840736832479353600,\t-0.840709759229672950,\t-0.840682683878218100,\t-0.840655606425056550,\t-0.840628526870256020,\t\n-0.840601445213883910,\t-0.840574361456008500,\t-0.840547275596697060,\t-0.840520187636017320,\t-0.840493097574037230,\t-0.840466005410824500,\t-0.840438911146446750,\t-0.840411814780971380,\t\n-0.840384716314466760,\t-0.840357615747000410,\t-0.840330513078639930,\t-0.840303408309453050,\t-0.840276301439507820,\t-0.840249192468871750,\t-0.840222081397612790,\t-0.840194968225798420,\t\n-0.840167852953496830,\t-0.840140735580775620,\t-0.840113616107702520,\t-0.840086494534345140,\t-0.840059370860771870,\t-0.840032245087050100,\t-0.840005117213247440,\t-0.839977987239432290,\t\n-0.839950855165672140,\t-0.839923720992034940,\t-0.839896584718588080,\t-0.839869446345400060,\t-0.839842305872538390,\t-0.839815163300071000,\t-0.839788018628065400,\t-0.839760871856590100,\t\n-0.839733722985712470,\t-0.839706572015500700,\t-0.839679418946022160,\t-0.839652263777345250,\t-0.839625106509537810,\t-0.839597947142667560,\t-0.839570785676802210,\t-0.839543622112010060,\t\n-0.839516456448358930,\t-0.839489288685916430,\t-0.839462118824750860,\t-0.839434946864930140,\t-0.839407772806521900,\t-0.839380596649594080,\t-0.839353418394214960,\t-0.839326238040452370,\t\n-0.839299055588374140,\t-0.839271871038048010,\t-0.839244684389542470,\t-0.839217495642925250,\t-0.839190304798264290,\t-0.839163111855627200,\t-0.839135916815082710,\t-0.839108719676698310,\t\n-0.839081520440542180,\t-0.839054319106682040,\t-0.839027115675186290,\t-0.838999910146122850,\t-0.838972702519559580,\t-0.838945492795564180,\t-0.838918280974205510,\t-0.838891067055550940,\t\n-0.838863851039668540,\t-0.838836632926626800,\t-0.838809412716493450,\t-0.838782190409336550,\t-0.838754966005223920,\t-0.838727739504224190,\t-0.838700510906405070,\t-0.838673280211834630,\t\n-0.838646047420580800,\t-0.838618812532712090,\t-0.838591575548296330,\t-0.838564336467401690,\t-0.838537095290095900,\t-0.838509852016447680,\t-0.838482606646524740,\t-0.838455359180395380,\t\n-0.838428109618127190,\t-0.838400857959789140,\t-0.838373604205448930,\t-0.838346348355174410,\t-0.838319090409034300,\t-0.838291830367096540,\t-0.838264568229429070,\t-0.838237303996099970,\t\n-0.838210037667177940,\t-0.838182769242730720,\t-0.838155498722826690,\t-0.838128226107533570,\t-0.838100951396920090,\t-0.838073674591054310,\t-0.838046395690004390,\t-0.838019114693838160,\t\n-0.837991831602624360,\t-0.837964546416431030,\t-0.837937259135326350,\t-0.837909969759378260,\t-0.837882678288655480,\t-0.837855384723225960,\t-0.837828089063157870,\t-0.837800791308519700,\t\n-0.837773491459379520,\t-0.837746189515805710,\t-0.837718885477866100,\t-0.837691579345629540,\t-0.837664271119164080,\t-0.837636960798537890,\t-0.837609648383819130,\t-0.837582333875076410,\t\n-0.837555017272377910,\t-0.837527698575791790,\t-0.837500377785386220,\t-0.837473054901230030,\t-0.837445729923391060,\t-0.837418402851937920,\t-0.837391073686938440,\t-0.837363742428461450,\t\n-0.837336409076575250,\t-0.837309073631347990,\t-0.837281736092847730,\t-0.837254396461143410,\t-0.837227054736303100,\t-0.837199710918394960,\t-0.837172365007487710,\t-0.837145017003649630,\t\n-0.837117666906948890,\t-0.837090314717453880,\t-0.837062960435233210,\t-0.837035604060355260,\t-0.837008245592888220,\t-0.836980885032900250,\t-0.836953522380460390,\t-0.836926157635636820,\t\n-0.836898790798497720,\t-0.836871421869111450,\t-0.836844050847546870,\t-0.836816677733872140,\t-0.836789302528155750,\t-0.836761925230465780,\t-0.836734545840871370,\t-0.836707164359440480,\t\n-0.836679780786241500,\t-0.836652395121343260,\t-0.836625007364814040,\t-0.836597617516722350,\t-0.836570225577136340,\t-0.836542831546125080,\t-0.836515435423756730,\t-0.836488037210099680,\t\n-0.836460636905222430,\t-0.836433234509193710,\t-0.836405830022081910,\t-0.836378423443955630,\t-0.836351014774883050,\t-0.836323604014933110,\t-0.836296191164174090,\t-0.836268776222674700,\t\n-0.836241359190503130,\t-0.836213940067728420,\t-0.836186518854418750,\t-0.836159095550642610,\t-0.836131670156469050,\t-0.836104242671966260,\t-0.836076813097202830,\t-0.836049381432247050,\t\n-0.836021947677168200,\t-0.835994511832034440,\t-0.835967073896914380,\t-0.835939633871876420,\t-0.835912191756989610,\t-0.835884747552322340,\t-0.835857301257943110,\t-0.835829852873920530,\t\n-0.835802402400323440,\t-0.835774949837220450,\t-0.835747495184679940,\t-0.835720038442770540,\t-0.835692579611561290,\t-0.835665118691120590,\t-0.835637655681516820,\t-0.835610190582819270,\t\n-0.835582723395096090,\t-0.835555254118416140,\t-0.835527782752847890,\t-0.835500309298460310,\t-0.835472833755322000,\t-0.835445356123501680,\t-0.835417876403067640,\t-0.835390394594089150,\t\n-0.835362910696634710,\t-0.835335424710773040,\t-0.835307936636572550,\t-0.835280446474102380,\t-0.835252954223431150,\t-0.835225459884627490,\t-0.835197963457759980,\t-0.835170464942897820,\t\n-0.835142964340109480,\t-0.835115461649463710,\t-0.835087956871029100,\t-0.835060450004874830,\t-0.835032941051069400,\t-0.835005430009681300,\t-0.834977916880780050,\t-0.834950401664433910,\t\n-0.834922884360711710,\t-0.834895364969682090,\t-0.834867843491414300,\t-0.834840319925976960,\t-0.834812794273438800,\t-0.834785266533868420,\t-0.834757736707335110,\t-0.834730204793907470,\t\n-0.834702670793654230,\t-0.834675134706644120,\t-0.834647596532946510,\t-0.834620056272629810,\t-0.834592513925762950,\t-0.834564969492414650,\t-0.834537422972654100,\t-0.834509874366550000,\t\n-0.834482323674170970,\t-0.834454770895586400,\t-0.834427216030864890,\t-0.834399659080075300,\t-0.834372100043286320,\t-0.834344538920567480,\t-0.834316975711987150,\t-0.834289410417614400,\t\n-0.834261843037517940,\t-0.834234273571767050,\t-0.834206702020430460,\t-0.834179128383577220,\t-0.834151552661275830,\t-0.834123974853595800,\t-0.834096394960605950,\t-0.834068812982375010,\t\n-0.834041228918971810,\t-0.834013642770465750,\t-0.833986054536925540,\t-0.833958464218420130,\t-0.833930871815018680,\t-0.833903277326790040,\t-0.833875680753803250,\t-0.833848082096127040,\t\n-0.833820481353830800,\t-0.833792878526983360,\t-0.833765273615653780,\t-0.833737666619910670,\t-0.833710057539823750,\t-0.833682446375461630,\t-0.833654833126893480,\t-0.833627217794187910,\t\n-0.833599600377414540,\t-0.833571980876642190,\t-0.833544359291939930,\t-0.833516735623376470,\t-0.833489109871021430,\t-0.833461482034943630,\t-0.833433852115212150,\t-0.833406220111895690,\t\n-0.833378586025063980,\t-0.833350949854785860,\t-0.833323311601130160,\t-0.833295671264166260,\t-0.833268028843963340,\t-0.833240384340590220,\t-0.833212737754115970,\t-0.833185089084610090,\t\n-0.833157438332141510,\t-0.833129785496779300,\t-0.833102130578592500,\t-0.833074473577650520,\t-0.833046814494022290,\t-0.833019153327777100,\t-0.832991490078983880,\t-0.832963824747712020,\t\n-0.832936157334030700,\t-0.832908487838008970,\t-0.832880816259715660,\t-0.832853142599220720,\t-0.832825466856592870,\t-0.832797789031901050,\t-0.832770109125215100,\t-0.832742427136603740,\t\n-0.832714743066136460,\t-0.832687056913882010,\t-0.832659368679910080,\t-0.832631678364289860,\t-0.832603985967090400,\t-0.832576291488380750,\t-0.832548594928230630,\t-0.832520896286708890,\t\n-0.832493195563885010,\t-0.832465492759827950,\t-0.832437787874607320,\t-0.832410080908292270,\t-0.832382371860951990,\t-0.832354660732655520,\t-0.832326947523472690,\t-0.832299232233472460,\t\n-0.832271514862723880,\t-0.832243795411296780,\t-0.832216073879260220,\t-0.832188350266683470,\t-0.832160624573635600,\t-0.832132896800186430,\t-0.832105166946405020,\t-0.832077435012360640,\t\n-0.832049700998122480,\t-0.832021964903760240,\t-0.831994226729343200,\t-0.831966486474940430,\t-0.831938744140621300,\t-0.831910999726455550,\t-0.831883253232512330,\t-0.831855504658860930,\t\n-0.831827754005570630,\t-0.831800001272711030,\t-0.831772246460351530,\t-0.831744489568561170,\t-0.831716730597409800,\t-0.831688969546966580,\t-0.831661206417300900,\t-0.831633441208482040,\t\n-0.831605673920579820,\t-0.831577904553663430,\t-0.831550133107802240,\t-0.831522359583065530,\t-0.831494583979523030,\t-0.831466806297244230,\t-0.831439026536298310,\t-0.831411244696754650,\t\n-0.831383460778683080,\t-0.831355674782152780,\t-0.831327886707233450,\t-0.831300096553994060,\t-0.831272304322504760,\t-0.831244510012834610,\t-0.831216713625053230,\t-0.831188915159229770,\t\n-0.831161114615434290,\t-0.831133311993736080,\t-0.831105507294204290,\t-0.831077700516908990,\t-0.831049891661919450,\t-0.831022080729305170,\t-0.830994267719135430,\t-0.830966452631480280,\t\n-0.830938635466409000,\t-0.830910816223991100,\t-0.830882994904295960,\t-0.830855171507393630,\t-0.830827346033353290,\t-0.830799518482244650,\t-0.830771688854136880,\t-0.830743857149100150,\t\n-0.830716023367203740,\t-0.830688187508517360,\t-0.830660349573110300,\t-0.830632509561052500,\t-0.830604667472413460,\t-0.830576823307262570,\t-0.830548977065669770,\t-0.830521128747704670,\t\n-0.830493278353436670,\t-0.830465425882935150,\t-0.830437571336270390,\t-0.830409714713511770,\t-0.830381856014728690,\t-0.830353995239990870,\t-0.830326132389368250,\t-0.830298267462930340,\t\n-0.830270400460746740,\t-0.830242531382886840,\t-0.830214660229420920,\t-0.830186787000418260,\t-0.830158911695948800,\t-0.830131034316081710,\t-0.830103154860887260,\t-0.830075273330434960,\t\n-0.830047389724794190,\t-0.830019504044035240,\t-0.829991616288227490,\t-0.829963726457440760,\t-0.829935834551744470,\t-0.829907940571208760,\t-0.829880044515903250,\t-0.829852146385897660,\t\n-0.829824246181261380,\t-0.829796343902064800,\t-0.829768439548377310,\t-0.829740533120268740,\t-0.829712624617808590,\t-0.829684714041067140,\t-0.829656801390113880,\t-0.829628886665018660,\t\n-0.829600969865850970,\t-0.829573050992681080,\t-0.829545130045578500,\t-0.829517207024613180,\t-0.829489281929854600,\t-0.829461354761373060,\t-0.829433425519238040,\t-0.829405494203519390,\t\n-0.829377560814287040,\t-0.829349625351610940,\t-0.829321687815560700,\t-0.829293748206206050,\t-0.829265806523617250,\t-0.829237862767863930,\t-0.829209916939016020,\t-0.829181969037142920,\t\n-0.829154019062315230,\t-0.829126067014602560,\t-0.829098112894074650,\t-0.829070156700801200,\t-0.829042198434852610,\t-0.829014238096298590,\t-0.828986275685208880,\t-0.828958311201653310,\t\n-0.828930344645702140,\t-0.828902376017425220,\t-0.828874405316892050,\t-0.828846432544173120,\t-0.828818457699338040,\t-0.828790480782456870,\t-0.828762501793599230,\t-0.828734520732835600,\t\n-0.828706537600235720,\t-0.828678552395869410,\t-0.828650565119806500,\t-0.828622575772117510,\t-0.828594584352872030,\t-0.828566590862140020,\t-0.828538595299991300,\t-0.828510597666496370,\t\n-0.828482597961724960,\t-0.828454596185747130,\t-0.828426592338632470,\t-0.828398586420451500,\t-0.828370578431274150,\t-0.828342568371170150,\t-0.828314556240209890,\t-0.828286542038463300,\t\n-0.828258525766000340,\t-0.828230507422890840,\t-0.828202487009205290,\t-0.828174464525013530,\t-0.828146439970385620,\t-0.828118413345391380,\t-0.828090384650101320,\t-0.828062353884585270,\t\n-0.828034321048913390,\t-0.828006286143155410,\t-0.827978249167382050,\t-0.827950210121662920,\t-0.827922169006068410,\t-0.827894125820668240,\t-0.827866080565532900,\t-0.827838033240732350,\t\n-0.827809983846336530,\t-0.827781932382416040,\t-0.827753878849040610,\t-0.827725823246280520,\t-0.827697765574205710,\t-0.827669705832886680,\t-0.827641644022393370,\t-0.827613580142795960,\t\n-0.827585514194164370,\t-0.827557446176569230,\t-0.827529376090080370,\t-0.827501303934768170,\t-0.827473229710702470,\t-0.827445153417953990,\t-0.827417075056592570,\t-0.827388994626688470,\t\n-0.827360912128311640,\t-0.827332827561532700,\t-0.827304740926421810,\t-0.827276652223049020,\t-0.827248561451484290,\t-0.827220468611798430,\t-0.827192373704061510,\t-0.827164276728343360,\t\n-0.827136177684714700,\t-0.827108076573245590,\t-0.827079973394006410,\t-0.827051868147066880,\t-0.827023760832498070,\t-0.826995651450369800,\t-0.826967540000752450,\t-0.826939426483715880,\t\n-0.826911310899331120,\t-0.826883193247668010,\t-0.826855073528796950,\t-0.826826951742787970,\t-0.826798827889711820,\t-0.826770701969638640,\t-0.826742573982638620,\t-0.826714443928782020,\t\n-0.826686311808139560,\t-0.826658177620781310,\t-0.826630041366777310,\t-0.826601903046198520,\t-0.826573762659114860,\t-0.826545620205596960,\t-0.826517475685714650,\t-0.826489329099538870,\t\n-0.826461180447139900,\t-0.826433029728587900,\t-0.826404876943953040,\t-0.826376722093306260,\t-0.826348565176717730,\t-0.826320406194257730,\t-0.826292245145996530,\t-0.826264082032004850,\t\n-0.826235916852353090,\t-0.826207749607111520,\t-0.826179580296350300,\t-0.826151408920140270,\t-0.826123235478551820,\t-0.826095059971655110,\t-0.826066882399520860,\t-0.826038702762219470,\t\n-0.826010521059821310,\t-0.825982337292396670,\t-0.825954151460016380,\t-0.825925963562750720,\t-0.825897773600670070,\t-0.825869581573844820,\t-0.825841387482345920,\t-0.825813191326243420,\t\n-0.825784993105608050,\t-0.825756792820509840,\t-0.825728590471019990,\t-0.825700386057208640,\t-0.825672179579146290,\t-0.825643971036903350,\t-0.825615760430550630,\t-0.825587547760158520,\t\n-0.825559333025797540,\t-0.825531116227538050,\t-0.825502897365450910,\t-0.825474676439606590,\t-0.825446453450075390,\t-0.825418228396928130,\t-0.825390001280235430,\t-0.825361772100067670,\t\n-0.825333540856495350,\t-0.825305307549589310,\t-0.825277072179420030,\t-0.825248834746058040,\t-0.825220595249573810,\t-0.825192353690038290,\t-0.825164110067521880,\t-0.825135864382095190,\t\n-0.825107616633828590,\t-0.825079366822793150,\t-0.825051114949059360,\t-0.825022861012697730,\t-0.824994605013778750,\t-0.824966346952373470,\t-0.824938086828552410,\t-0.824909824642385820,\t\n-0.824881560393944890,\t-0.824853294083300100,\t-0.824825025710522080,\t-0.824796755275681190,\t-0.824768482778848730,\t-0.824740208220094970,\t-0.824711931599490740,\t-0.824683652917106550,\t\n-0.824655372173013320,\t-0.824627089367281680,\t-0.824598804499982350,\t-0.824570517571185820,\t-0.824542228580963150,\t-0.824513937529384950,\t-0.824485644416521830,\t-0.824457349242444510,\t\n-0.824429052007223940,\t-0.824400752710930830,\t-0.824372451353635460,\t-0.824344147935409330,\t-0.824315842456322830,\t-0.824287534916446680,\t-0.824259225315851380,\t-0.824230913654608320,\t\n-0.824202599932787990,\t-0.824174284150461230,\t-0.824145966307698430,\t-0.824117646404570970,\t-0.824089324441149350,\t-0.824061000417504520,\t-0.824032674333706860,\t-0.824004346189827760,\t\n-0.823976015985937840,\t-0.823947683722107920,\t-0.823919349398408500,\t-0.823891013014910970,\t-0.823862674571685830,\t-0.823834334068803800,\t-0.823805991506336150,\t-0.823777646884353620,\t\n-0.823749300202926920,\t-0.823720951462126760,\t-0.823692600662024430,\t-0.823664247802690540,\t-0.823635892884196140,\t-0.823607535906611730,\t-0.823579176870008700,\t-0.823550815774457770,\t\n-0.823522452620029770,\t-0.823494087406795310,\t-0.823465720134826000,\t-0.823437350804192340,\t-0.823408979414965270,\t-0.823380605967215520,\t-0.823352230461014580,\t-0.823323852896433060,\t\n-0.823295473273541800,\t-0.823267091592411630,\t-0.823238707853114040,\t-0.823210322055719650,\t-0.823181934200299280,\t-0.823153544286924220,\t-0.823125152315665410,\t-0.823096758286593570,\t\n-0.823068362199779750,\t-0.823039964055295110,\t-0.823011563853210730,\t-0.822983161593597300,\t-0.822954757276525780,\t-0.822926350902067560,\t-0.822897942470293580,\t-0.822869531981274660,\t\n-0.822841119435081650,\t-0.822812704831786150,\t-0.822784288171458880,\t-0.822755869454170790,\t-0.822727448679992920,\t-0.822699025848996570,\t-0.822670600961252660,\t-0.822642174016832040,\t\n-0.822613745015806200,\t-0.822585313958246080,\t-0.822556880844222630,\t-0.822528445673806670,\t-0.822500008447069940,\t-0.822471569164083150,\t-0.822443127824917460,\t-0.822414684429643610,\t\n-0.822386238978333410,\t-0.822357791471057590,\t-0.822329341907887200,\t-0.822300890288893300,\t-0.822272436614147400,\t-0.822243980883720420,\t-0.822215523097683420,\t-0.822187063256107460,\t\n-0.822158601359064050,\t-0.822130137406624110,\t-0.822101671398858700,\t-0.822073203335839220,\t-0.822044733217636820,\t-0.822016261044322460,\t-0.821987786815967290,\t-0.821959310532642930,\t\n-0.821930832194420310,\t-0.821902351801370500,\t-0.821873869353564660,\t-0.821845384851074390,\t-0.821816898293970640,\t-0.821788409682324580,\t-0.821759919016207260,\t-0.821731426295690400,\t\n-0.821702931520845060,\t-0.821674434691742280,\t-0.821645935808453240,\t-0.821617434871049660,\t-0.821588931879602360,\t-0.821560426834182840,\t-0.821531919734861950,\t-0.821503410581711500,\t\n-0.821474899374802560,\t-0.821446386114206060,\t-0.821417870799993950,\t-0.821389353432237180,\t-0.821360834011006900,\t-0.821332312536374290,\t-0.821303789008411280,\t-0.821275263427188710,\t\n-0.821246735792777960,\t-0.821218206105250090,\t-0.821189674364677050,\t-0.821161140571129770,\t-0.821132604724679640,\t-0.821104066825397830,\t-0.821075526873356050,\t-0.821046984868625370,\t\n-0.821018440811277280,\t-0.820989894701382950,\t-0.820961346539013980,\t-0.820932796324241760,\t-0.820904244057137240,\t-0.820875689737772360,\t-0.820847133366218170,\t-0.820818574942546290,\t\n-0.820790014466827640,\t-0.820761451939134300,\t-0.820732887359537310,\t-0.820704320728107950,\t-0.820675752044917720,\t-0.820647181310038220,\t-0.820618608523540850,\t-0.820590033685496990,\t\n-0.820561456795977700,\t-0.820532877855055130,\t-0.820504296862800240,\t-0.820475713819284750,\t-0.820447128724579590,\t-0.820418541578756930,\t-0.820389952381887940,\t-0.820361361134043790,\t\n-0.820332767835296410,\t-0.820304172485717190,\t-0.820275575085377520,\t-0.820246975634348670,\t-0.820218374132702710,\t-0.820189770580510680,\t-0.820161164977844300,\t-0.820132557324774750,\t\n-0.820103947621374060,\t-0.820075335867713530,\t-0.820046722063864530,\t-0.820018106209898570,\t-0.819989488305887580,\t-0.819960868351902960,\t-0.819932246348016090,\t-0.819903622294298360,\t\n-0.819874996190821830,\t-0.819846368037657760,\t-0.819817737834877770,\t-0.819789105582553250,\t-0.819760471280756240,\t-0.819731834929557920,\t-0.819703196529029900,\t-0.819674556079244110,\t\n-0.819645913580271830,\t-0.819617269032184900,\t-0.819588622435054480,\t-0.819559973788952730,\t-0.819531323093951160,\t-0.819502670350121140,\t-0.819474015557534300,\t-0.819445358716262670,\t\n-0.819416699826377550,\t-0.819388038887950750,\t-0.819359375901053570,\t-0.819330710865758260,\t-0.819302043782136110,\t-0.819273374650258850,\t-0.819244703470197950,\t-0.819216030242025490,\t\n-0.819187354965812960,\t-0.819158677641631860,\t-0.819129998269554240,\t-0.819101316849651710,\t-0.819072633381995760,\t-0.819043947866658130,\t-0.819015260303710750,\t-0.818986570693225340,\t\n-0.818957879035273400,\t-0.818929185329926530,\t-0.818900489577257030,\t-0.818871791777336160,\t-0.818843091930235970,\t-0.818814390036027740,\t-0.818785686094783750,\t-0.818756980106575490,\t\n-0.818728272071474920,\t-0.818699561989553400,\t-0.818670849860883120,\t-0.818642135685535790,\t-0.818613419463582900,\t-0.818584701195096630,\t-0.818555980880148580,\t-0.818527258518810700,\t\n-0.818498534111154360,\t-0.818469807657251970,\t-0.818441079157175010,\t-0.818412348610995430,\t-0.818383616018784620,\t-0.818354881380615070,\t-0.818326144696558400,\t-0.818297405966686210,\t\n-0.818268665191070330,\t-0.818239922369783050,\t-0.818211177502895960,\t-0.818182430590481010,\t-0.818153681632609600,\t-0.818124930629354320,\t-0.818096177580786680,\t-0.818067422486978390,\t\n-0.818038665348001740,\t-0.818009906163928440,\t-0.817981144934830320,\t-0.817952381660779220,\t-0.817923616341847290,\t-0.817894848978106380,\t-0.817866079569628310,\t-0.817837308116484810,\t\n-0.817808534618748360,\t-0.817779759076490480,\t-0.817750981489783200,\t-0.817722201858698260,\t-0.817693420183308040,\t-0.817664636463684370,\t-0.817635850699898970,\t-0.817607062892023780,\t\n-0.817578273040131090,\t-0.817549481144292820,\t-0.817520687204580820,\t-0.817491891221066800,\t-0.817463093193823380,\t-0.817434293122922150,\t-0.817405491008434960,\t-0.817376686850434410,\t\n-0.817347880648992000,\t-0.817319072404179890,\t-0.817290262116069920,\t-0.817261449784734580,\t-0.817232635410245490,\t-0.817203818992674910,\t-0.817175000532094460,\t-0.817146180028576860,\t\n-0.817117357482193720,\t-0.817088532893017190,\t-0.817059706261119120,\t-0.817030877586572000,\t-0.817002046869447770,\t-0.816973214109818380,\t-0.816944379307755650,\t-0.816915542463332200,\t\n-0.816886703576619970,\t-0.816857862647690670,\t-0.816829019676617030,\t-0.816800174663470770,\t-0.816771327608324160,\t-0.816742478511248930,\t-0.816713627372317790,\t-0.816684774191602570,\t\n-0.816655918969175440,\t-0.816627061705108130,\t-0.816598202399473560,\t-0.816569341052343470,\t-0.816540477663790010,\t-0.816511612233885020,\t-0.816482744762701330,\t-0.816453875250310770,\t\n-0.816425003696785500,\t-0.816396130102197470,\t-0.816367254466619400,\t-0.816338376790123220,\t-0.816309497072780780,\t-0.816280615314664890,\t-0.816251731515847510,\t-0.816222845676400690,\t\n-0.816193957796396590,\t-0.816165067875907810,\t-0.816136175915006310,\t-0.816107281913764470,\t-0.816078385872254120,\t-0.816049487790548090,\t-0.816020587668718320,\t-0.815991685506837090,\t\n-0.815962781304976350,\t-0.815933875063208910,\t-0.815904966781606840,\t-0.815876056460242300,\t-0.815847144099187460,\t-0.815818229698514920,\t-0.815789313258296840,\t-0.815760394778605510,\t\n-0.815731474259512870,\t-0.815702551701091850,\t-0.815673627103414400,\t-0.815644700466552690,\t-0.815615771790579420,\t-0.815586841075566780,\t-0.815557908321587030,\t-0.815528973528712230,\t\n-0.815500036697015210,\t-0.815471097826568130,\t-0.815442156917443370,\t-0.815413213969712890,\t-0.815384268983449730,\t-0.815355321958725730,\t-0.815326372895613600,\t-0.815297421794185180,\t\n-0.815268468654513520,\t-0.815239513476670560,\t-0.815210556260728910,\t-0.815181597006760630,\t-0.815152635714838650,\t-0.815123672385035030,\t-0.815094707017421930,\t-0.815065739612072400,\t\n-0.815036770169058510,\t-0.815007798688452630,\t-0.814978825170327050,\t-0.814949849614754700,\t-0.814920872021807630,\t-0.814891892391558350,\t-0.814862910724079240,\t-0.814833927019443020,\t\n-0.814804941277721960,\t-0.814775953498988570,\t-0.814746963683315120,\t-0.814717971830774430,\t-0.814688977941438800,\t-0.814659982015380810,\t-0.814630984052672540,\t-0.814601984053387020,\t\n-0.814572982017596650,\t-0.814543977945373480,\t-0.814514971836790670,\t-0.814485963691920390,\t-0.814456953510835250,\t-0.814427941293607520,\t-0.814398927040310030,\t-0.814369910751015390,\t\n-0.814340892425795880,\t-0.814311872064723890,\t-0.814282849667872570,\t-0.814253825235313980,\t-0.814224798767120950,\t-0.814195770263365540,\t-0.814166739724121010,\t-0.814137707149459660,\t\n-0.814108672539454070,\t-0.814079635894176530,\t-0.814050597213700100,\t-0.814021556498097270,\t-0.813992513747440190,\t-0.813963468961802160,\t-0.813934422141255440,\t-0.813905373285872650,\t\n-0.813876322395726160,\t-0.813847269470889150,\t-0.813818214511433880,\t-0.813789157517433190,\t-0.813760098488959360,\t-0.813731037426085440,\t-0.813701974328884030,\t-0.813672909197427520,\t\n-0.813643842031788630,\t-0.813614772832040420,\t-0.813585701598255160,\t-0.813556628330505680,\t-0.813527553028864370,\t-0.813498475693404500,\t-0.813469396324198350,\t-0.813440314921318740,\t\n-0.813411231484838180,\t-0.813382146014829720,\t-0.813353058511365860,\t-0.813323968974519080,\t-0.813294877404362680,\t-0.813265783800969140,\t-0.813236688164411080,\t-0.813207590494761100,\t\n-0.813178490792092370,\t-0.813149389056477380,\t-0.813120285287988960,\t-0.813091179486699510,\t-0.813062071652682410,\t-0.813032961786010140,\t-0.813003849886755450,\t-0.812974735954990920,\t\n-0.812945619990789740,\t-0.812916501994224490,\t-0.812887381965368140,\t-0.812858259904292950,\t-0.812829135811072410,\t-0.812800009685778920,\t-0.812770881528485310,\t-0.812741751339264630,\t\n-0.812712619118189710,\t-0.812683484865333150,\t-0.812654348580767570,\t-0.812625210264566470,\t-0.812596069916802330,\t-0.812566927537548000,\t-0.812537783126876080,\t-0.812508636684859950,\t\n-0.812479488211572340,\t-0.812450337707085860,\t-0.812421185171473330,\t-0.812392030604808140,\t-0.812362874007162890,\t-0.812333715378610320,\t-0.812304554719223360,\t-0.812275392029075170,\t\n-0.812246227308238590,\t-0.812217060556786110,\t-0.812187891774791230,\t-0.812158720962326660,\t-0.812129548119465250,\t-0.812100373246279710,\t-0.812071196342843530,\t-0.812042017409229320,\t\n-0.812012836445510140,\t-0.811983653451758600,\t-0.811954468428048080,\t-0.811925281374451520,\t-0.811896092291041650,\t-0.811866901177891400,\t-0.811837708035074050,\t-0.811808512862662530,\t\n-0.811779315660729580,\t-0.811750116429348250,\t-0.811720915168591790,\t-0.811691711878533060,\t-0.811662506559245100,\t-0.811633299210800520,\t-0.811604089833273030,\t-0.811574878426735260,\t\n-0.811545664991260130,\t-0.811516449526921040,\t-0.811487232033790810,\t-0.811458012511942490,\t-0.811428790961448930,\t-0.811399567382383610,\t-0.811370341774819370,\t-0.811341114138829260,\t\n-0.811311884474486210,\t-0.811282652781863620,\t-0.811253419061034430,\t-0.811224183312071580,\t-0.811194945535048120,\t-0.811165705730037550,\t-0.811136463897112690,\t-0.811107220036346720,\t\n-0.811077974147812460,\t-0.811048726231583420,\t-0.811019476287732630,\t-0.810990224316332940,\t-0.810960970317457840,\t-0.810931714291180380,\t-0.810902456237573620,\t-0.810873196156710500,\t\n-0.810843934048664620,\t-0.810814669913508810,\t-0.810785403751316470,\t-0.810756135562160310,\t-0.810726865346114050,\t-0.810697593103250620,\t-0.810668318833643210,\t-0.810639042537364850,\t\n-0.810609764214488940,\t-0.810580483865088740,\t-0.810551201489237320,\t-0.810521917087007710,\t-0.810492630658473430,\t-0.810463342203707750,\t-0.810434051722783270,\t-0.810404759215774040,\t\n-0.810375464682752900,\t-0.810346168123793010,\t-0.810316869538967530,\t-0.810287568928350080,\t-0.810258266292013700,\t-0.810228961630031770,\t-0.810199654942477030,\t-0.810170346229423520,\t\n-0.810141035490944070,\t-0.810111722727112180,\t-0.810082407938000570,\t-0.810053091123683180,\t-0.810023772284233170,\t-0.809994451419723700,\t-0.809965128530227840,\t-0.809935803615819410,\t\n-0.809906476676571450,\t-0.809877147712557030,\t-0.809847816723849980,\t-0.809818483710523450,\t-0.809789148672650730,\t-0.809759811610304860,\t-0.809730472523559670,\t-0.809701131412488340,\t\n-0.809671788277164240,\t-0.809642443117660320,\t-0.809613095934050620,\t-0.809583746726408090,\t-0.809554395494806230,\t-0.809525042239318090,\t-0.809495686960017720,\t-0.809466329656978070,\t\n-0.809436970330272510,\t-0.809407608979974440,\t-0.809378245606157450,\t-0.809348880208894950,\t-0.809319512788260200,\t-0.809290143344326360,\t-0.809260771877167500,\t-0.809231398386856650,\t\n-0.809202022873467100,\t-0.809172645337072780,\t-0.809143265777746760,\t-0.809113884195562630,\t-0.809084500590593560,\t-0.809055114962913490,\t-0.809025727312595590,\t-0.808996337639713350,\t\n-0.808966945944340040,\t-0.808937552226549620,\t-0.808908156486415340,\t-0.808878758724010720,\t-0.808849358939408790,\t-0.808819957132683840,\t-0.808790553303909030,\t-0.808761147453157750,\t\n-0.808731739580503370,\t-0.808702329686019850,\t-0.808672917769780560,\t-0.808643503831858680,\t-0.808614087872328360,\t-0.808584669891262760,\t-0.808555249888735620,\t-0.808525827864819970,\t\n-0.808496403819589980,\t-0.808466977753119040,\t-0.808437549665480650,\t-0.808408119556748180,\t-0.808378687426995590,\t-0.808349253276296360,\t-0.808319817104723890,\t-0.808290378912351670,\t\n-0.808260938699253860,\t-0.808231496465503520,\t-0.808202052211174580,\t-0.808172605936340220,\t-0.808143157641074580,\t-0.808113707325451070,\t-0.808084254989542950,\t-0.808054800633424500,\t\n-0.808025344257169100,\t-0.807995885860850360,\t-0.807966425444541560,\t-0.807936963008316970,\t-0.807907498552249970,\t-0.807878032076414290,\t-0.807848563580883190,\t-0.807819093065731080,\t\n-0.807789620531031090,\t-0.807760145976857080,\t-0.807730669403282530,\t-0.807701190810381500,\t-0.807671710198227480,\t-0.807642227566894190,\t-0.807612742916455020,\t-0.807583256246984350,\t\n-0.807553767558555460,\t-0.807524276851242170,\t-0.807494784125117990,\t-0.807465289380257080,\t-0.807435792616732930,\t-0.807406293834619040,\t-0.807376793033989680,\t-0.807347290214918360,\t\n-0.807317785377478780,\t-0.807288278521744560,\t-0.807258769647789750,\t-0.807229258755688180,\t-0.807199745845513350,\t-0.807170230917338970,\t-0.807140713971239210,\t-0.807111195007287670,\t\n-0.807081674025558190,\t-0.807052151026124260,\t-0.807022626009060160,\t-0.806993098974439490,\t-0.806963569922336200,\t-0.806934038852823550,\t-0.806904505765976170,\t-0.806874970661867530,\t\n-0.806845433540571140,\t-0.806815894402161500,\t-0.806786353246712110,\t-0.806756810074296780,\t-0.806727264884989250,\t-0.806697717678863780,\t-0.806668168455993980,\t-0.806638617216453800,\t\n-0.806609063960316730,\t-0.806579508687657380,\t-0.806549951398549240,\t-0.806520392093066140,\t-0.806490830771281920,\t-0.806461267433270850,\t-0.806431702079106530,\t-0.806402134708863020,\t\n-0.806372565322613920,\t-0.806342993920433630,\t-0.806313420502395850,\t-0.806283845068574310,\t-0.806254267619043400,\t-0.806224688153876820,\t-0.806195106673148420,\t-0.806165523176932130,\t\n-0.806135937665302230,\t-0.806106350138332540,\t-0.806076760596096900,\t-0.806047169038669130,\t-0.806017575466123740,\t-0.805987979878534320,\t-0.805958382275975050,\t-0.805928782658519530,\t\n-0.805899181026242360,\t-0.805869577379217160,\t-0.805839971717517980,\t-0.805810364041218750,\t-0.805780754350393760,\t-0.805751142645116940,\t-0.805721528925462000,\t-0.805691913191503460,\t\n-0.805662295443315140,\t-0.805632675680971080,\t-0.805603053904545120,\t-0.805573430114111750,\t-0.805543804309744820,\t-0.805514176491518350,\t-0.805484546659506200,\t-0.805454914813782950,\t\n-0.805425280954422340,\t-0.805395645081498630,\t-0.805366007195085550,\t-0.805336367295257590,\t-0.805306725382088810,\t-0.805277081455653240,\t-0.805247435516024730,\t-0.805217787563277780,\t\n-0.805188137597486420,\t-0.805158485618724720,\t-0.805128831627066500,\t-0.805099175622586480,\t-0.805069517605358610,\t-0.805039857575456600,\t-0.805010195532955160,\t-0.804980531477928360,\t\n-0.804950865410450130,\t-0.804921197330594530,\t-0.804891527238436160,\t-0.804861855134048950,\t-0.804832181017507200,\t-0.804802504888884720,\t-0.804772826748256230,\t-0.804743146595695570,\t\n-0.804713464431277110,\t-0.804683780255074810,\t-0.804654094067163150,\t-0.804624405867616410,\t-0.804594715656508640,\t-0.804565023433913670,\t-0.804535329199906560,\t-0.804505632954561120,\t\n-0.804475934697951310,\t-0.804446234430151840,\t-0.804416532151236870,\t-0.804386827861280570,\t-0.804357121560356880,\t-0.804327413248540730,\t-0.804297702925905970,\t-0.804267990592527070,\t\n-0.804238276248477880,\t-0.804208559893833220,\t-0.804178841528667140,\t-0.804149121153054040,\t-0.804119398767067730,\t-0.804089674370783380,\t-0.804059947964274710,\t-0.804030219547616220,\t\n-0.804000489120881840,\t-0.803970756684146640,\t-0.803941022237484430,\t-0.803911285780969490,\t-0.803881547314676540,\t-0.803851806838679740,\t-0.803822064353053370,\t-0.803792319857871700,\t\n-0.803762573353209440,\t-0.803732824839140660,\t-0.803703074315739950,\t-0.803673321783081150,\t-0.803643567241239420,\t-0.803613810690288810,\t-0.803584052130303590,\t-0.803554291561357940,\t\n-0.803524528983526890,\t-0.803494764396884500,\t-0.803464997801505270,\t-0.803435229197463130,\t-0.803405458584833370,\t-0.803375685963689800,\t-0.803345911334107150,\t-0.803316134696159370,\t\n-0.803286356049921490,\t-0.803256575395467800,\t-0.803226792732872340,\t-0.803197008062210170,\t-0.803167221383555560,\t-0.803137432696982790,\t-0.803107642002566240,\t-0.803077849300380840,\t\n-0.803048054590500770,\t-0.803018257873000630,\t-0.802988459147954580,\t-0.802958658415437570,\t-0.802928855675524080,\t-0.802899050928288280,\t-0.802869244173804670,\t-0.802839435412148190,\t\n-0.802809624643393120,\t-0.802779811867614050,\t-0.802749997084885040,\t-0.802720180295281470,\t-0.802690361498877400,\t-0.802660540695747100,\t-0.802630717885965740,\t-0.802600893069607580,\t\n-0.802571066246747230,\t-0.802541237417458860,\t-0.802511406581817740,\t-0.802481573739898150,\t-0.802451738891774570,\t-0.802421902037521280,\t-0.802392063177213680,\t-0.802362222310925800,\t\n-0.802332379438732370,\t-0.802302534560707770,\t-0.802272687676927050,\t-0.802242838787464720,\t-0.802212987892395150,\t-0.802183134991792950,\t-0.802153280085733170,\t-0.802123423174290200,\t\n-0.802093564257538310,\t-0.802063703335552880,\t-0.802033840408408080,\t-0.802003975476178740,\t-0.801974108538939250,\t-0.801944239596764640,\t-0.801914368649729540,\t-0.801884495697908540,\t\n-0.801854620741375920,\t-0.801824743780207070,\t-0.801794864814476370,\t-0.801764983844258540,\t-0.801735100869627960,\t-0.801705215890659790,\t-0.801675328907428650,\t-0.801645439920009250,\t\n-0.801615548928475970,\t-0.801585655932903980,\t-0.801555760933368000,\t-0.801525863929942290,\t-0.801495964922702140,\t-0.801466063911722150,\t-0.801436160897076920,\t-0.801406255878841070,\t\n-0.801376348857089860,\t-0.801346439831897790,\t-0.801316528803339480,\t-0.801286615771489740,\t-0.801256700736423740,\t-0.801226783698215870,\t-0.801196864656941070,\t-0.801166943612673930,\t\n-0.801137020565489630,\t-0.801107095515462770,\t-0.801077168462668190,\t-0.801047239407180480,\t-0.801017308349074810,\t-0.800987375288426010,\t-0.800957440225308680,\t-0.800927503159797440,\t\n-0.800897564091967880,\t-0.800867623021894290,\t-0.800837679949651380,\t-0.800807734875314540,\t-0.800777787798958360,\t-0.800747838720657690,\t-0.800717887640487240,\t-0.800687934558522270,\t\n-0.800657979474837520,\t-0.800628022389507700,\t-0.800598063302607740,\t-0.800568102214212820,\t-0.800538139124397530,\t-0.800508174033236930,\t-0.800478206940805740,\t-0.800448237847179220,\t\n-0.800418266752432110,\t-0.800388293656639330,\t-0.800358318559875600,\t-0.800328341462216320,\t-0.800298362363736190,\t-0.800268381264509830,\t-0.800238398164612840,\t-0.800208413064119830,\t\n-0.800178425963105840,\t-0.800148436861645500,\t-0.800118445759814280,\t-0.800088452657686910,\t-0.800058457555338550,\t-0.800028460452843700,\t-0.799998461350277970,\t-0.799968460247716060,\t\n-0.799938457145233040,\t-0.799908452042903620,\t-0.799878444940803290,\t-0.799848435839006890,\t-0.799818424737589350,\t-0.799788411636625510,\t-0.799758396536190960,\t-0.799728379436360330,\t\n-0.799698360337208540,\t-0.799668339238811090,\t-0.799638316141242810,\t-0.799608291044578760,\t-0.799578263948893750,\t-0.799548234854263300,\t-0.799518203760762210,\t-0.799488170668465670,\t\n-0.799458135577448380,\t-0.799428098487786070,\t-0.799398059399553550,\t-0.799368018312825780,\t-0.799337975227677800,\t-0.799307930144185110,\t-0.799277883062422530,\t-0.799247833982465350,\t\n-0.799217782904388270,\t-0.799187729828267020,\t-0.799157674754176430,\t-0.799127617682191650,\t-0.799097558612387520,\t-0.799067497544839860,\t-0.799037434479623390,\t-0.799007369416813050,\t\n-0.798977302356484560,\t-0.798947233298712870,\t-0.798917162243573010,\t-0.798887089191140040,\t-0.798857014141489570,\t-0.798826937094696650,\t-0.798796858050836330,\t-0.798766777009983550,\t\n-0.798736693972214250,\t-0.798706608937603040,\t-0.798676521906225400,\t-0.798646432878156180,\t-0.798616341853471080,\t-0.798586248832245270,\t-0.798556153814553690,\t-0.798526056800471510,\t\n-0.798495957790074540,\t-0.798465856783437510,\t-0.798435753780635690,\t-0.798405648781744800,\t-0.798375541786839670,\t-0.798345432795995680,\t-0.798315321809287880,\t-0.798285208826792100,\t\n-0.798255093848583290,\t-0.798224976874736700,\t-0.798194857905327400,\t-0.798164736940431220,\t-0.798134613980123200,\t-0.798104489024478610,\t-0.798074362073572630,\t-0.798044233127480960,\t\n-0.798014102186278660,\t-0.797983969250041230,\t-0.797953834318843480,\t-0.797923697392761480,\t-0.797893558471870160,\t-0.797863417556244790,\t-0.797833274645961100,\t-0.797803129741094240,\t\n-0.797772982841719490,\t-0.797742833947912010,\t-0.797712683059747850,\t-0.797682530177301840,\t-0.797652375300649590,\t-0.797622218429866030,\t-0.797592059565027320,\t-0.797561898706208420,\t\n-0.797531735853484690,\t-0.797501571006931420,\t-0.797471404166624540,\t-0.797441235332639110,\t-0.797411064505050620,\t-0.797380891683934110,\t-0.797350716869365650,\t-0.797320540061420500,\t\n-0.797290361260173610,\t-0.797260180465701240,\t-0.797229997678078340,\t-0.797199812897380400,\t-0.797169626123682700,\t-0.797139437357061160,\t-0.797109246597591080,\t-0.797079053845347830,\t\n-0.797048859100406790,\t-0.797018662362843800,\t-0.796988463632734120,\t-0.796958262910153260,\t-0.796928060195176590,\t-0.796897855487879950,\t-0.796867648788338710,\t-0.796837440096628380,\t\n-0.796807229412824110,\t-0.796777016737002080,\t-0.796746802069237430,\t-0.796716585409605880,\t-0.796686366758182610,\t-0.796656146115043650,\t-0.796625923480264290,\t-0.796595698853919900,\t\n-0.796565472236086420,\t-0.796535243626839360,\t-0.796505013026254200,\t-0.796474780434406230,\t-0.796444545851371590,\t-0.796414309277225560,\t-0.796384070712043760,\t-0.796353830155901440,\t\n-0.796323587608874890,\t-0.796293343071039380,\t-0.796263096542470520,\t-0.796232848023243680,\t-0.796202597513434920,\t-0.796172345013119730,\t-0.796142090522373610,\t-0.796111834041271950,\t\n-0.796081575569891120,\t-0.796051315108306290,\t-0.796021052656592840,\t-0.795990788214827050,\t-0.795960521783084410,\t-0.795930253361440300,\t-0.795899982949970440,\t-0.795869710548750780,\t\n-0.795839436157856910,\t-0.795809159777364330,\t-0.795778881407348760,\t-0.795748601047886140,\t-0.795718318699051960,\t-0.795688034360922170,\t-0.795657748033571920,\t-0.795627459717077600,\t\n-0.795597169411514590,\t-0.795566877116958620,\t-0.795536582833485270,\t-0.795506286561170730,\t-0.795475988300090360,\t-0.795445688050319900,\t-0.795415385811935380,\t-0.795385081585012530,\t\n-0.795354775369626840,\t-0.795324467165854030,\t-0.795294156973770260,\t-0.795263844793451140,\t-0.795233530624972370,\t-0.795203214468409470,\t-0.795172896323838920,\t-0.795142576191335990,\t\n-0.795112254070976740,\t-0.795081929962836550,\t-0.795051603866991810,\t-0.795021275783518000,\t-0.794990945712491070,\t-0.794960613653986510,\t-0.794930279608080600,\t-0.794899943574849050,\t\n-0.794869605554367700,\t-0.794839265546712030,\t-0.794808923551958420,\t-0.794778579570182500,\t-0.794748233601459960,\t-0.794717885645866980,\t-0.794687535703479390,\t-0.794657183774372890,\t\n-0.794626829858623210,\t-0.794596473956306730,\t-0.794566116067499050,\t-0.794535756192276010,\t-0.794505394330713320,\t-0.794475030482887480,\t-0.794444664648874090,\t-0.794414296828748980,\t\n-0.794383927022587870,\t-0.794353555230467250,\t-0.794323181452462720,\t-0.794292805688650240,\t-0.794262427939105400,\t-0.794232048203904810,\t-0.794201666483124180,\t-0.794171282776839020,\t\n-0.794140897085125920,\t-0.794110509408060610,\t-0.794080119745719020,\t-0.794049728098176870,\t-0.794019334465510650,\t-0.793988938847796090,\t-0.793958541245109230,\t-0.793928141657525790,\t\n-0.793897740085122150,\t-0.793867336527974250,\t-0.793836930986157930,\t-0.793806523459749000,\t-0.793776113948824080,\t-0.793745702453458880,\t-0.793715288973729450,\t-0.793684873509711510,\t\n-0.793654456061481660,\t-0.793624036629115630,\t-0.793593615212689230,\t-0.793563191812279190,\t-0.793532766427961000,\t-0.793502339059811050,\t-0.793471909707904820,\t-0.793441478372319150,\t\n-0.793411045053129870,\t-0.793380609750412910,\t-0.793350172464244110,\t-0.793319733194700280,\t-0.793289291941856930,\t-0.793258848705790550,\t-0.793228403486576640,\t-0.793197956284292020,\t\n-0.793167507099012510,\t-0.793137055930814290,\t-0.793106602779773180,\t-0.793076147645965680,\t-0.793045690529467940,\t-0.793015231430355680,\t-0.792984770348705630,\t-0.792954307284593600,\t\n-0.792923842238095870,\t-0.792893375209288150,\t-0.792862906198247400,\t-0.792832435205049310,\t-0.792801962229770170,\t-0.792771487272485810,\t-0.792741010333272930,\t-0.792710531412207600,\t\n-0.792680050509366070,\t-0.792649567624823970,\t-0.792619082758658330,\t-0.792588595910944880,\t-0.792558107081760000,\t-0.792527616271179620,\t-0.792497123479280360,\t-0.792466628706138380,\t\n-0.792436131951829830,\t-0.792405633216430650,\t-0.792375132500017680,\t-0.792344629802666840,\t-0.792314125124454200,\t-0.792283618465456470,\t-0.792253109825749700,\t-0.792222599205410160,\t\n-0.792192086604513900,\t-0.792161572023137640,\t-0.792131055461357540,\t-0.792100536919249750,\t-0.792070016396890340,\t-0.792039493894356130,\t-0.792008969411723160,\t-0.791978442949067830,\t\n-0.791947914506466180,\t-0.791917384083994920,\t-0.791886851681730230,\t-0.791856317299748370,\t-0.791825780938125500,\t-0.791795242596938450,\t-0.791764702276263280,\t-0.791734159976176020,\t\n-0.791703615696753740,\t-0.791673069438072360,\t-0.791642521200208280,\t-0.791611970983237660,\t-0.791581418787237420,\t-0.791550864612283630,\t-0.791520308458452670,\t-0.791489750325820580,\t\n-0.791459190214464540,\t-0.791428628124460350,\t-0.791398064055884750,\t-0.791367498008813560,\t-0.791336929983324060,\t-0.791306359979492170,\t-0.791275787997394290,\t-0.791245214037106790,\t\n-0.791214638098706510,\t-0.791184060182269610,\t-0.791153480287872250,\t-0.791122898415591580,\t-0.791092314565503550,\t-0.791061728737684770,\t-0.791031140932211390,\t-0.791000551149160460,\t\n-0.790969959388608030,\t-0.790939365650630830,\t-0.790908769935305010,\t-0.790878172242707400,\t-0.790847572572914380,\t-0.790816970926002450,\t-0.790786367302047880,\t-0.790755761701127600,\t\n-0.790725154123317900,\t-0.790694544568695370,\t-0.790663933037336180,\t-0.790633319529317370,\t-0.790602704044715330,\t-0.790572086583606560,\t-0.790541467146067210,\t-0.790510845732174560,\t\n-0.790480222342004660,\t-0.790449596975634110,\t-0.790418969633139730,\t-0.790388340314597930,\t-0.790357709020085290,\t-0.790327075749678090,\t-0.790296440503453490,\t-0.790265803281487880,\t\n-0.790235164083857630,\t-0.790204522910639250,\t-0.790173879761909780,\t-0.790143234637745720,\t-0.790112587538223550,\t-0.790081938463419560,\t-0.790051287413411020,\t-0.790020634388274300,\t\n-0.789989979388086020,\t-0.789959322412922440,\t-0.789928663462860840,\t-0.789898002537977590,\t-0.789867339638349100,\t-0.789836674764052500,\t-0.789806007915164310,\t-0.789775339091761010,\t\n-0.789744668293919090,\t-0.789713995521715730,\t-0.789683320775227400,\t-0.789652644054530840,\t-0.789621965359702300,\t-0.789591284690819300,\t-0.789560602047957970,\t-0.789529917431195050,\t\n-0.789499230840607140,\t-0.789468542276271500,\t-0.789437851738264420,\t-0.789407159226662710,\t-0.789376464741542880,\t-0.789345768282982090,\t-0.789315069851056930,\t-0.789284369445843790,\t\n-0.789253667067420060,\t-0.789222962715862120,\t-0.789192256391246790,\t-0.789161548093650470,\t-0.789130837823150630,\t-0.789100125579823670,\t-0.789069411363746420,\t-0.789038695174995360,\t\n-0.789007977013647780,\t-0.788977256879780380,\t-0.788946534773469770,\t-0.788915810694792550,\t-0.788885084643826010,\t-0.788854356620646850,\t-0.788823626625331790,\t-0.788792894657957430,\t\n-0.788762160718600950,\t-0.788731424807339150,\t-0.788700686924248550,\t-0.788669947069406520,\t-0.788639205242889660,\t-0.788608461444774700,\t-0.788577715675138350,\t-0.788546967934057990,\t\n-0.788516218221610110,\t-0.788485466537871770,\t-0.788454712882919460,\t-0.788423957256830680,\t-0.788393199659682020,\t-0.788362440091550320,\t-0.788331678552512290,\t-0.788300915042645320,\t\n-0.788270149562026010,\t-0.788239382110731410,\t-0.788208612688838020,\t-0.788177841296423430,\t-0.788147067933564150,\t-0.788116292600337220,\t-0.788085515296819360,\t-0.788054736023087950,\t\n-0.788023954779219720,\t-0.787993171565291250,\t-0.787962386381380160,\t-0.787931599227563170,\t-0.787900810103917100,\t-0.787870019010518790,\t-0.787839225947445710,\t-0.787808430914774480,\t\n-0.787777633912582260,\t-0.787746834940945660,\t-0.787716033999942280,\t-0.787685231089648720,\t-0.787654426210142140,\t-0.787623619361499160,\t-0.787592810543797480,\t-0.787561999757113830,\t\n-0.787531187001525020,\t-0.787500372277108120,\t-0.787469555583940490,\t-0.787438736922098980,\t-0.787407916291660400,\t-0.787377093692702260,\t-0.787346269125301370,\t-0.787315442589534790,\t\n-0.787284614085479340,\t-0.787253783613212740,\t-0.787222951172811490,\t-0.787192116764353080,\t-0.787161280387914000,\t-0.787130442043571970,\t-0.787099601731403810,\t-0.787068759451486690,\t\n-0.787037915203897430,\t-0.787007068988713530,\t-0.786976220806012150,\t-0.786945370655870110,\t-0.786914518538364360,\t-0.786883664453572610,\t-0.786852808401571680,\t-0.786821950382438520,\t\n-0.786791090396250610,\t-0.786760228443085130,\t-0.786729364523019000,\t-0.786698498636129170,\t-0.786667630782493470,\t-0.786636760962188600,\t-0.786605889175291840,\t-0.786575015421880130,\t\n-0.786544139702031080,\t-0.786513262015821720,\t-0.786482382363329240,\t-0.786451500744630550,\t-0.786420617159803270,\t-0.786389731608924560,\t-0.786358844092071460,\t-0.786327954609321030,\t\n-0.786297063160750880,\t-0.786266169746438150,\t-0.786235274366460010,\t-0.786204377020893410,\t-0.786173477709816050,\t-0.786142576433305100,\t-0.786111673191437380,\t-0.786080767984290830,\t\n-0.786049860811942280,\t-0.786018951674469110,\t-0.785988040571948270,\t-0.785957127504457560,\t-0.785926212472074170,\t-0.785895295474875130,\t-0.785864376512937610,\t-0.785833455586339440,\t\n-0.785802532695157650,\t-0.785771607839469420,\t-0.785740681019352020,\t-0.785709752234883150,\t-0.785678821486139880,\t-0.785647888773199580,\t-0.785616954096139190,\t-0.785586017455036870,\t\n-0.785555078849969330,\t-0.785524138281013970,\t-0.785493195748248390,\t-0.785462251251749950,\t-0.785431304791595840,\t-0.785400356367863210,\t-0.785369405980629880,\t-0.785338453629973120,\t\n-0.785307499315970210,\t-0.785276543038698200,\t-0.785245584798235250,\t-0.785214624594658180,\t-0.785183662428044720,\t-0.785152698298471670,\t-0.785121732206017220,\t-0.785090764150758510,\t\n-0.785059794132772830,\t-0.785028822152137320,\t-0.784997848208930150,\t-0.784966872303228260,\t-0.784935894435108920,\t-0.784904914604650170,\t-0.784873932811929190,\t-0.784842949057023230,\t\n-0.784811963340009690,\t-0.784780975660966610,\t-0.784749986019970920,\t-0.784718994417100360,\t-0.784688000852432070,\t-0.784657005326043990,\t-0.784626007838013400,\t-0.784595008388417890,\t\n-0.784564006977334530,\t-0.784533003604841350,\t-0.784501998271015740,\t-0.784470990975935090,\t-0.784439981719676770,\t-0.784408970502318610,\t-0.784377957323938220,\t-0.784346942184612760,\t\n-0.784315925084419830,\t-0.784284906023437260,\t-0.784253885001742420,\t-0.784222862019412600,\t-0.784191837076525950,\t-0.784160810173159750,\t-0.784129781309391370,\t-0.784098750485298420,\t\n-0.784067717700958730,\t-0.784036682956449900,\t-0.784005646251849210,\t-0.783974607587234250,\t-0.783943566962682970,\t-0.783912524378272750,\t-0.783881479834081300,\t-0.783850433330185890,\t\n-0.783819384866664580,\t-0.783788334443594860,\t-0.783757282061054330,\t-0.783726227719120260,\t-0.783695171417870930,\t-0.783664113157383600,\t-0.783633052937735890,\t-0.783601990759005720,\t\n-0.783570926621270480,\t-0.783539860524608000,\t-0.783508792469095660,\t-0.783477722454811510,\t-0.783446650481833150,\t-0.783415576550238080,\t-0.783384500660103790,\t-0.783353422811508660,\t\n-0.783322343004529850,\t-0.783291261239245200,\t-0.783260177515732070,\t-0.783229091834068860,\t-0.783198004194332940,\t-0.783166914596601930,\t-0.783135823040953420,\t-0.783104729527465570,\t\n-0.783073634056215990,\t-0.783042536627281960,\t-0.783011437240741850,\t-0.782980335896673150,\t-0.782949232595153700,\t-0.782918127336260870,\t-0.782887020120072940,\t-0.782855910946667510,\t\n-0.782824799816122300,\t-0.782793686728514790,\t-0.782762571683923270,\t-0.782731454682425440,\t-0.782700335724098920,\t-0.782669214809021300,\t-0.782638091937270960,\t-0.782606967108925300,\t\n-0.782575840324062360,\t-0.782544711582759400,\t-0.782513580885095040,\t-0.782482448231146650,\t-0.782451313620991850,\t-0.782420177054709120,\t-0.782389038532375960,\t-0.782357898054070080,\t\n-0.782326755619869310,\t-0.782295611229851810,\t-0.782264464884095400,\t-0.782233316582677810,\t-0.782202166325676520,\t-0.782171014113170250,\t-0.782139859945236380,\t-0.782108703821952860,\t\n-0.782077545743397270,\t-0.782046385709648130,\t-0.782015223720783030,\t-0.781984059776879900,\t-0.781952893878016250,\t-0.781921726024270790,\t-0.781890556215720900,\t-0.781859384452444630,\t\n-0.781828210734519690,\t-0.781797035062024470,\t-0.781765857435036570,\t-0.781734677853633820,\t-0.781703496317894710,\t-0.781672312827896840,\t-0.781641127383718160,\t-0.781609939985436370,\t\n-0.781578750633129980,\t-0.781547559326876810,\t-0.781516366066754680,\t-0.781485170852841300,\t-0.781453973685215300,\t-0.781422774563954480,\t-0.781391573489136570,\t-0.781360370460839610,\t\n-0.781329165479141880,\t-0.781297958544121320,\t-0.781266749655855740,\t-0.781235538814423090,\t-0.781204326019901860,\t-0.781173111272369880,\t-0.781141894571904750,\t-0.781110675918585180,\t\n-0.781079455312488900,\t-0.781048232753694060,\t-0.781017008242278380,\t-0.780985781778320340,\t-0.780954553361897900,\t-0.780923322993089090,\t-0.780892090671971740,\t-0.780860856398624350,\t\n-0.780829620173124850,\t-0.780798381995551290,\t-0.780767141865981510,\t-0.780735899784494200,\t-0.780704655751167100,\t-0.780673409766078350,\t-0.780642161829305790,\t-0.780610911940928130,\t\n-0.780579660101023200,\t-0.780548406309668820,\t-0.780517150566943710,\t-0.780485892872925690,\t-0.780454633227692930,\t-0.780423371631323360,\t-0.780392108083895700,\t-0.780360842585487660,\t\n-0.780329575136177510,\t-0.780298305736043200,\t-0.780267034385163430,\t-0.780235761083616030,\t-0.780204485831479280,\t-0.780173208628830990,\t-0.780141929475749900,\t-0.780110648372314030,\t\n-0.780079365318601560,\t-0.780048080314690420,\t-0.780016793360659320,\t-0.779985504456586210,\t-0.779954213602549460,\t-0.779922920798626800,\t-0.779891626044897150,\t-0.779860329341438340,\t\n-0.779829030688328540,\t-0.779797730085646460,\t-0.779766427533469920,\t-0.779735123031877420,\t-0.779703816580946780,\t-0.779672508180756950,\t-0.779641197831385860,\t-0.779609885532911660,\t\n-0.779578571285412520,\t-0.779547255088967270,\t-0.779515936943653840,\t-0.779484616849550620,\t-0.779453294806735530,\t-0.779421970815287410,\t-0.779390644875284530,\t-0.779359316986804940,\t\n-0.779327987149926790,\t-0.779296655364728920,\t-0.779265321631289480,\t-0.779233985949686400,\t-0.779202648319998640,\t-0.779171308742304340,\t-0.779139967216681660,\t-0.779108623743208880,\t\n-0.779077278321964720,\t-0.779045930953027430,\t-0.779014581636475300,\t-0.778983230372386480,\t-0.778951877160839800,\t-0.778920522001913420,\t-0.778889164895685830,\t-0.778857805842234960,\t\n-0.778826444841639880,\t-0.778795081893978610,\t-0.778763716999329780,\t-0.778732350157771310,\t-0.778700981369382150,\t-0.778669610634240670,\t-0.778638237952424930,\t-0.778606863324013740,\t\n-0.778575486749085390,\t-0.778544108227718470,\t-0.778512727759990810,\t-0.778481345345981790,\t-0.778449960985769240,\t-0.778418574679431870,\t-0.778387186427047850,\t-0.778355796228696000,\t\n-0.778324404084454800,\t-0.778293009994402540,\t-0.778261613958617480,\t-0.778230215977178560,\t-0.778198816050164280,\t-0.778167414177652890,\t-0.778136010359722570,\t-0.778104604596452700,\t\n-0.778073196887921200,\t-0.778041787234206470,\t-0.778010375635387440,\t-0.777978962091542600,\t-0.777947546602750340,\t-0.777916129169088920,\t-0.777884709790637400,\t-0.777853288467474150,\t\n-0.777821865199677660,\t-0.777790439987326330,\t-0.777759012830499090,\t-0.777727583729274310,\t-0.777696152683730600,\t-0.777664719693946240,\t-0.777633284760000270,\t-0.777601847881971180,\t\n-0.777570409059937460,\t-0.777538968293977390,\t-0.777507525584170240,\t-0.777476080930594280,\t-0.777444634333328110,\t-0.777413185792450000,\t-0.777381735308039220,\t-0.777350282880174160,\t\n-0.777318828508933190,\t-0.777287372194395250,\t-0.777255913936638950,\t-0.777224453735742890,\t-0.777192991591785450,\t-0.777161527504845790,\t-0.777130061475002300,\t-0.777098593502333570,\t\n-0.777067123586918210,\t-0.777035651728835260,\t-0.777004177928163120,\t-0.776972702184980710,\t-0.776941224499366090,\t-0.776909744871398740,\t-0.776878263301157060,\t-0.776846779788719740,\t\n-0.776815294334165190,\t-0.776783806937572650,\t-0.776752317599020530,\t-0.776720826318587410,\t-0.776689333096352460,\t-0.776657837932394290,\t-0.776626340826791380,\t-0.776594841779622460,\t\n-0.776563340790966670,\t-0.776531837860902520,\t-0.776500332989508710,\t-0.776468826176863970,\t-0.776437317423047220,\t-0.776405806728137300,\t-0.776374294092212920,\t-0.776342779515352470,\t\n-0.776311262997635310,\t-0.776279744539140060,\t-0.776248224139945320,\t-0.776216701800129920,\t-0.776185177519772900,\t-0.776153651298952970,\t-0.776122123137748640,\t-0.776090593036239400,\t\n-0.776059060994503500,\t-0.776027527012620010,\t-0.775995991090667530,\t-0.775964453228725200,\t-0.775932913426871760,\t-0.775901371685186140,\t-0.775869828003746710,\t-0.775838282382632970,\t\n-0.775806734821923640,\t-0.775775185321697420,\t-0.775743633882032930,\t-0.775712080503009660,\t-0.775680525184706200,\t-0.775648967927201390,\t-0.775617408730573940,\t-0.775585847594903120,\t\n-0.775554284520267870,\t-0.775522719506746780,\t-0.775491152554418580,\t-0.775459583663362870,\t-0.775428012833658140,\t-0.775396440065383220,\t-0.775364865358617370,\t-0.775333288713439320,\t\n-0.775301710129928210,\t-0.775270129608162440,\t-0.775238547148221600,\t-0.775206962750184410,\t-0.775175376414129810,\t-0.775143788140136510,\t-0.775112197928284010,\t-0.775080605778651010,\t\n-0.775049011691316570,\t-0.775017415666359180,\t-0.774985817703858660,\t-0.774954217803893510,\t-0.774922615966542880,\t-0.774891012191885390,\t-0.774859406480000620,\t-0.774827798830967420,\t\n-0.774796189244864380,\t-0.774764577721771210,\t-0.774732964261766520,\t-0.774701348864929470,\t-0.774669731531338780,\t-0.774638112261073930,\t-0.774606491054213860,\t-0.774574867910837630,\t\n-0.774543242831023940,\t-0.774511615814852390,\t-0.774479986862401710,\t-0.774448355973751170,\t-0.774416723148979470,\t-0.774385088388166220,\t-0.774353451691390250,\t-0.774321813058730600,\t\n-0.774290172490266220,\t-0.774258529986076690,\t-0.774226885546240750,\t-0.774195239170837320,\t-0.774163590859946240,\t-0.774131940613645990,\t-0.774100288432015950,\t-0.774068634315134950,\t\n-0.774036978263082600,\t-0.774005320275937820,\t-0.773973660353779680,\t-0.773941998496687210,\t-0.773910334704740020,\t-0.773878668978016940,\t-0.773847001316597230,\t-0.773815331720559610,\t\n-0.773783660189984120,\t-0.773751986724949380,\t-0.773720311325534650,\t-0.773688633991818970,\t-0.773656954723881850,\t-0.773625273521802440,\t-0.773593590385659560,\t-0.773561905315532930,\t\n-0.773530218311501590,\t-0.773498529373644720,\t-0.773466838502041230,\t-0.773435145696770850,\t-0.773403450957912630,\t-0.773371754285545940,\t-0.773340055679749390,\t-0.773308355140603030,\t\n-0.773276652668185790,\t-0.773244948262577060,\t-0.773213241923855540,\t-0.773181533652101180,\t-0.773149823447393030,\t-0.773118111309810230,\t-0.773086397239431950,\t-0.773054681236338030,\t\n-0.773022963300607380,\t-0.772991243432319170,\t-0.772959521631552680,\t-0.772927797898387730,\t-0.772896072232903240,\t-0.772864344635178280,\t-0.772832615105292660,\t-0.772800883643325550,\t\n-0.772769150249356330,\t-0.772737414923463820,\t-0.772705677665728170,\t-0.772673938476228230,\t-0.772642197355043470,\t-0.772610454302252950,\t-0.772578709317936600,\t-0.772546962402173460,\t\n-0.772515213555042930,\t-0.772483462776624050,\t-0.772451710066996760,\t-0.772419955426240310,\t-0.772388198854433880,\t-0.772356440351656740,\t-0.772324679917988700,\t-0.772292917553508930,\t\n-0.772261153258296700,\t-0.772229387032431820,\t-0.772197618875993470,\t-0.772165848789061030,\t-0.772134076771713750,\t-0.772102302824031580,\t-0.772070526946093570,\t-0.772038749137979320,\t\n-0.772006969399767870,\t-0.771975187731539280,\t-0.771943404133372810,\t-0.771911618605347740,\t-0.771879831147543330,\t-0.771848041760039630,\t-0.771816250442915910,\t-0.771784457196251440,\t\n-0.771752662020125600,\t-0.771720864914618440,\t-0.771689065879809010,\t-0.771657264915776690,\t-0.771625462022601520,\t-0.771593657200362770,\t-0.771561850449139720,\t-0.771530041769011850,\t\n-0.771498231160059110,\t-0.771466418622360760,\t-0.771434604155996410,\t-0.771402787761045320,\t-0.771370969437587430,\t-0.771339149185702230,\t-0.771307327005469110,\t-0.771275502896967450,\t\n-0.771243676860277170,\t-0.771211848895477780,\t-0.771180019002648760,\t-0.771148187181869500,\t-0.771116353433219940,\t-0.771084517756779550,\t-0.771052680152627850,\t-0.771020840620844190,\t\n-0.770988999161508650,\t-0.770957155774700700,\t-0.770925310460499500,\t-0.770893463218985330,\t-0.770861614050237560,\t-0.770829762954335700,\t-0.770797909931359100,\t-0.770766054981388060,\t\n-0.770734198104501940,\t-0.770702339300780250,\t-0.770670478570302460,\t-0.770638615913148750,\t-0.770606751329398490,\t-0.770574884819131390,\t-0.770543016382426730,\t-0.770511146019364880,\t\n-0.770479273730025120,\t-0.770447399514487150,\t-0.770415523372830480,\t-0.770383645305135260,\t-0.770351765311480970,\t-0.770319883391946900,\t-0.770287999546613420,\t-0.770256113775559910,\t\n-0.770224226078866200,\t-0.770192336456611560,\t-0.770160444908876470,\t-0.770128551435740220,\t-0.770096656037282500,\t-0.770064758713582930,\t-0.770032859464721780,\t-0.770000958290778410,\t\n-0.769969055191832670,\t-0.769937150167964050,\t-0.769905243219252800,\t-0.769873334345778430,\t-0.769841423547620750,\t-0.769809510824859270,\t-0.769777596177574240,\t-0.769745679605845280,\t\n-0.769713761109751760,\t-0.769681840689374170,\t-0.769649918344791910,\t-0.769617994076085000,\t-0.769586067883332610,\t-0.769554139766615460,\t-0.769522209726013040,\t-0.769490277761604950,\t\n-0.769458343873470900,\t-0.769426408061691380,\t-0.769394470326345780,\t-0.769362530667513920,\t-0.769330589085275520,\t-0.769298645579711060,\t-0.769266700150899820,\t-0.769234752798921840,\t\n-0.769202803523856730,\t-0.769170852325784970,\t-0.769138899204785950,\t-0.769106944160939500,\t-0.769074987194325880,\t-0.769043028305024910,\t-0.769011067493116210,\t-0.768979104758679700,\t\n-0.768947140101795660,\t-0.768915173522543790,\t-0.768883205021003930,\t-0.768851234597255790,\t-0.768819262251379860,\t-0.768787287983455860,\t-0.768755311793563490,\t-0.768723333681782690,\t\n-0.768691353648193740,\t-0.768659371692876460,\t-0.768627387815910780,\t-0.768595402017376310,\t-0.768563414297353640,\t-0.768531424655922390,\t-0.768499433093162600,\t-0.768467439609153870,\t\n-0.768435444203976910,\t-0.768403446877711340,\t-0.768371447630436850,\t-0.768339446462234070,\t-0.768307443373182570,\t-0.768275438363362540,\t-0.768243431432853670,\t-0.768211422581736470,\t\n-0.768179411810090640,\t-0.768147399117996340,\t-0.768115384505533290,\t-0.768083367972781980,\t-0.768051349519822350,\t-0.768019329146734320,\t-0.767987306853597620,\t-0.767955282640493060,\t\n-0.767923256507500150,\t-0.767891228454699150,\t-0.767859198482169880,\t-0.767827166589992840,\t-0.767795132778247850,\t-0.767763097047014730,\t-0.767731059396374200,\t-0.767699019826405980,\t\n-0.767666978337190220,\t-0.767634934928806740,\t-0.767602889601336270,\t-0.767570842354858510,\t-0.767538793189453620,\t-0.767506742105201530,\t-0.767474689102182860,\t-0.767442634180477420,\t\n-0.767410577340165490,\t-0.767378518581326660,\t-0.767346457904041990,\t-0.767314395308391070,\t-0.767282330794454290,\t-0.767250264362311250,\t-0.767218196012042890,\t-0.767186125743729020,\t\n-0.767154053557449590,\t-0.767121979453285310,\t-0.767089903431316110,\t-0.767057825491622050,\t-0.767025745634283270,\t-0.766993663859380280,\t-0.766961580166993230,\t-0.766929494557202160,\t\n-0.766897407030087130,\t-0.766865317585728850,\t-0.766833226224207240,\t-0.766801132945602590,\t-0.766769037749994830,\t-0.766736940637464780,\t-0.766704841608092380,\t-0.766672740661957790,\t\n-0.766640637799141160,\t-0.766608533019723200,\t-0.766576426323783870,\t-0.766544317711403520,\t-0.766512207182662110,\t-0.766480094737640340,\t-0.766447980376418480,\t-0.766415864099076360,\t\n-0.766383745905694800,\t-0.766351625796353850,\t-0.766319503771133890,\t-0.766287379830114970,\t-0.766255253973377790,\t-0.766223126201002410,\t-0.766190996513069320,\t-0.766158864909658450,\t\n-0.766126731390850630,\t-0.766094595956726130,\t-0.766062458607364990,\t-0.766030319342847490,\t-0.765998178163254440,\t-0.765966035068666010,\t-0.765933890059162460,\t-0.765901743134823840,\t\n-0.765869594295731200,\t-0.765837443541964590,\t-0.765805290873604050,\t-0.765773136290730630,\t-0.765740979793424260,\t-0.765708821381765550,\t-0.765676661055834430,\t-0.765644498815711950,\t\n-0.765612334661478270,\t-0.765580168593213760,\t-0.765548000610998480,\t-0.765515830714913470,\t-0.765483658905039000,\t-0.765451485181455340,\t-0.765419309544242640,\t-0.765387131993481960,\t\n-0.765354952529253450,\t-0.765322771151637490,\t-0.765290587860714470,\t-0.765258402656565200,\t-0.765226215539269840,\t-0.765194026508908780,\t-0.765161835565562940,\t-0.765129642709312390,\t\n-0.765097447940237820,\t-0.765065251258419290,\t-0.765033052663937950,\t-0.765000852156874080,\t-0.764968649737307940,\t-0.764936445405319910,\t-0.764904239160991150,\t-0.764872031004401710,\t\n-0.764839820935632190,\t-0.764807608954762850,\t-0.764775395061874750,\t-0.764743179257048160,\t-0.764710961540363670,\t-0.764678741911901440,\t-0.764646520371742630,\t-0.764614296919967630,\t\n-0.764582071556656470,\t-0.764549844281890540,\t-0.764517615095749890,\t-0.764485383998315230,\t-0.764453150989666930,\t-0.764420916069885940,\t-0.764388679239052630,\t-0.764356440497247710,\t\n-0.764324199844551360,\t-0.764291957281044710,\t-0.764259712806808270,\t-0.764227466421922520,\t-0.764195218126467850,\t-0.764162967920525400,\t-0.764130715804175580,\t-0.764098461777498850,\t\n-0.764066205840575720,\t-0.764033947993487450,\t-0.764001688236314200,\t-0.763969426569136800,\t-0.763937162992035510,\t-0.763904897505091610,\t-0.763872630108385580,\t-0.763840360801997580,\t\n-0.763808089586008990,\t-0.763775816460500080,\t-0.763743541425551790,\t-0.763711264481244270,\t-0.763678985627658790,\t-0.763646704864875960,\t-0.763614422192976370,\t-0.763582137612040410,\t\n-0.763549851122149350,\t-0.763517562723383780,\t-0.763485272415824200,\t-0.763452980199551210,\t-0.763420686074645970,\t-0.763388390041189080,\t-0.763356092099261250,\t-0.763323792248942870,\t\n-0.763291490490315310,\t-0.763259186823458950,\t-0.763226881248454390,\t-0.763194573765382910,\t-0.763162264374325110,\t-0.763129953075361470,\t-0.763097639868572710,\t-0.763065324754040210,\t\n-0.763033007731844350,\t-0.763000688802065950,\t-0.762968367964785620,\t-0.762936045220084620,\t-0.762903720568043450,\t-0.762871394008743040,\t-0.762839065542263770,\t-0.762806735168687240,\t\n-0.762774402888093840,\t-0.762742068700564380,\t-0.762709732606179470,\t-0.762677394605020600,\t-0.762645054697168150,\t-0.762612712882702830,\t-0.762580369161705910,\t-0.762548023534258210,\t\n-0.762515676000440350,\t-0.762483326560333130,\t-0.762450975214017830,\t-0.762418621961575060,\t-0.762386266803085740,\t-0.762353909738630490,\t-0.762321550768290670,\t-0.762289189892147110,\t\n-0.762256827110280530,\t-0.762224462422771530,\t-0.762192095829701710,\t-0.762159727331151670,\t-0.762127356927202240,\t-0.762094984617934120,\t-0.762062610403428930,\t-0.762030234283767150,\t\n-0.761997856259029830,\t-0.761965476329297560,\t-0.761933094494651850,\t-0.761900710755173520,\t-0.761868325110943050,\t-0.761835937562042040,\t-0.761803548108551110,\t-0.761771156750551400,\t\n-0.761738763488123530,\t-0.761706368321349080,\t-0.761673971250308560,\t-0.761641572275083220,\t-0.761609171395753680,\t-0.761576768612401420,\t-0.761544363925107270,\t-0.761511957333952270,\t\n-0.761479548839017030,\t-0.761447138440383140,\t-0.761414726138131550,\t-0.761382311932343070,\t-0.761349895823098530,\t-0.761317477810479540,\t-0.761285057894566800,\t-0.761252636075441250,\t\n-0.761220212353184270,\t-0.761187786727876790,\t-0.761155359199599870,\t-0.761122929768434320,\t-0.761090498434461640,\t-0.761058065197762760,\t-0.761025630058418720,\t-0.760993193016510250,\t\n-0.760960754072119160,\t-0.760928313225326170,\t-0.760895870476212430,\t-0.760863425824858660,\t-0.760830979271346690,\t-0.760798530815757210,\t-0.760766080458171400,\t-0.760733628198670080,\t\n-0.760701174037335060,\t-0.760668717974247070,\t-0.760636260009487030,\t-0.760603800143136550,\t-0.760571338375276570,\t-0.760538874705988350,\t-0.760506409135352610,\t-0.760473941663451060,\t\n-0.760441472290364740,\t-0.760409001016174700,\t-0.760376527840961880,\t-0.760344052764807990,\t-0.760311575787794070,\t-0.760279096910001170,\t-0.760246616131510230,\t-0.760214133452402960,\t\n-0.760181648872760410,\t-0.760149162392663840,\t-0.760116674012193960,\t-0.760084183731432720,\t-0.760051691550461040,\t-0.760019197469359750,\t-0.759986701488210900,\t-0.759954203607095200,\t\n-0.759921703826093920,\t-0.759889202145288210,\t-0.759856698564759790,\t-0.759824193084589590,\t-0.759791685704858890,\t-0.759759176425648720,\t-0.759726665247040910,\t-0.759694152169116400,\t\n-0.759661637191956450,\t-0.759629120315642230,\t-0.759596601540255430,\t-0.759564080865877230,\t-0.759531558292588670,\t-0.759499033820471010,\t-0.759466507449606090,\t-0.759433979180074940,\t\n-0.759401449011958720,\t-0.759368916945338590,\t-0.759336382980296490,\t-0.759303847116913460,\t-0.759271309355270540,\t-0.759238769695449680,\t-0.759206228137531800,\t-0.759173684681598290,\t\n-0.759141139327730310,\t-0.759108592076009890,\t-0.759076042926517980,\t-0.759043491879335840,\t-0.759010938934544740,\t-0.758978384092226620,\t-0.758945827352462520,\t-0.758913268715333820,\t\n-0.758880708180921680,\t-0.758848145749308150,\t-0.758815581420574150,\t-0.758783015194801180,\t-0.758750447072070400,\t-0.758717877052463850,\t-0.758685305136062470,\t-0.758652731322947640,\t\n-0.758620155613201290,\t-0.758587578006904570,\t-0.758554998504138880,\t-0.758522417104985360,\t-0.758489833809526060,\t-0.758457248617842250,\t-0.758424661530015310,\t-0.758392072546126390,\t\n-0.758359481666257660,\t-0.758326888890490160,\t-0.758294294218905480,\t-0.758261697651584690,\t-0.758229099188610030,\t-0.758196498830062570,\t-0.758163896576023900,\t-0.758131292426575180,\t\n-0.758098686381798450,\t-0.758066078441775200,\t-0.758033468606586270,\t-0.758000856876314020,\t-0.757968243251039730,\t-0.757935627730844660,\t-0.757903010315810310,\t-0.757870391006018720,\t\n-0.757837769801551260,\t-0.757805146702489220,\t-0.757772521708914070,\t-0.757739894820907980,\t-0.757707266038552100,\t-0.757674635361928030,\t-0.757642002791117040,\t-0.757609368326201400,\t\n-0.757576731967262380,\t-0.757544093714381470,\t-0.757511453567640050,\t-0.757478811527120270,\t-0.757446167592903400,\t-0.757413521765071260,\t-0.757380874043704910,\t-0.757348224428886720,\t\n-0.757315572920697950,\t-0.757282919519220000,\t-0.757250264224535010,\t-0.757217607036724360,\t-0.757184947955869660,\t-0.757152286982052390,\t-0.757119624115354610,\t-0.757086959355857790,\t\n-0.757054292703643550,\t-0.757021624158793260,\t-0.756988953721389300,\t-0.756956281391512940,\t-0.756923607169245780,\t-0.756890931054669420,\t-0.756858253047866030,\t-0.756825573148916850,\t\n-0.756792891357903950,\t-0.756760207674908370,\t-0.756727522100012600,\t-0.756694834633298120,\t-0.756662145274846100,\t-0.756629454024739130,\t-0.756596760883058490,\t-0.756564065849886000,\t\n-0.756531368925303040,\t-0.756498670109391870,\t-0.756465969402234100,\t-0.756433266803911320,\t-0.756400562314505140,\t-0.756367855934097830,\t-0.756335147662770990,\t-0.756302437500606110,\t\n-0.756269725447684890,\t-0.756237011504089730,\t-0.756204295669901990,\t-0.756171577945203510,\t-0.756138858330075880,\t-0.756106136824601260,\t-0.756073413428861360,\t-0.756040688142937570,\t\n-0.756007960966912470,\t-0.755975231900867350,\t-0.755942500944884130,\t-0.755909768099044530,\t-0.755877033363430710,\t-0.755844296738124250,\t-0.755811558223207220,\t-0.755778817818760880,\t\n-0.755746075524867830,\t-0.755713331341609560,\t-0.755680585269067890,\t-0.755647837307324540,\t-0.755615087456461890,\t-0.755582335716561530,\t-0.755549582087705400,\t-0.755516826569974880,\t\n-0.755484069163452680,\t-0.755451309868220290,\t-0.755418548684359310,\t-0.755385785611952240,\t-0.755353020651080680,\t-0.755320253801826660,\t-0.755287485064271680,\t-0.755254714438498230,\t\n-0.755221941924588020,\t-0.755189167522622990,\t-0.755156391232684740,\t-0.755123613054855760,\t-0.755090832989217860,\t-0.755058051035852770,\t-0.755025267194842310,\t-0.754992481466268960,\t\n-0.754959693850214440,\t-0.754926904346760570,\t-0.754894112955989180,\t-0.754861319677982980,\t-0.754828524512823230,\t-0.754795727460592310,\t-0.754762928521371830,\t-0.754730127695244170,\t\n-0.754697324982291360,\t-0.754664520382594790,\t-0.754631713896237290,\t-0.754598905523300440,\t-0.754566095263866420,\t-0.754533283118016820,\t-0.754500469085834350,\t-0.754467653167400610,\t\n-0.754434835362797870,\t-0.754402015672107630,\t-0.754369194095412700,\t-0.754336370632794790,\t-0.754303545284335960,\t-0.754270718050117920,\t-0.754237888930223480,\t-0.754205057924734130,\t\n-0.754172225033732270,\t-0.754139390257299590,\t-0.754106553595518700,\t-0.754073715048471430,\t-0.754040874616239480,\t-0.754008032298905780,\t-0.753975188096551950,\t-0.753942342009260140,\t\n-0.753909494037112160,\t-0.753876644180190740,\t-0.753843792438577690,\t-0.753810938812355170,\t-0.753778083301605120,\t-0.753745225906410020,\t-0.753712366626851930,\t-0.753679505463012880,\t\n-0.753646642414974810,\t-0.753613777482820320,\t-0.753580910666631460,\t-0.753548041966490390,\t-0.753515171382478920,\t-0.753482298914679770,\t-0.753449424563174870,\t-0.753416548328046050,\t\n-0.753383670209376240,\t-0.753350790207247160,\t-0.753317908321741170,\t-0.753285024552940220,\t-0.753252138900926900,\t-0.753219251365783160,\t-0.753186361947591370,\t-0.753153470646433450,\t\n-0.753120577462392030,\t-0.753087682395549240,\t-0.753054785445987250,\t-0.753021886613787990,\t-0.752988985899034290,\t-0.752956083301808080,\t-0.752923178822191730,\t-0.752890272460267070,\t\n-0.752857364216117150,\t-0.752824454089823680,\t-0.752791542081469260,\t-0.752758628191135480,\t-0.752725712418905510,\t-0.752692794764861280,\t-0.752659875229084730,\t-0.752626953811658890,\t\n-0.752594030512665490,\t-0.752561105332187120,\t-0.752528178270305710,\t-0.752495249327104100,\t-0.752462318502664430,\t-0.752429385797068860,\t-0.752396451210399660,\t-0.752363514742739550,\t\n-0.752330576394170670,\t-0.752297636164775300,\t-0.752264694054635590,\t-0.752231750063834470,\t-0.752198804192453880,\t-0.752165856440576430,\t-0.752132906808283930,\t-0.752099955295659430,\t\n-0.752067001902785080,\t-0.752034046629743050,\t-0.752001089476616040,\t-0.751968130443486320,\t-0.751935169530436380,\t-0.751902206737548150,\t-0.751869242064904690,\t-0.751836275512588140,\t\n-0.751803307080680880,\t-0.751770336769265080,\t-0.751737364578423770,\t-0.751704390508239010,\t-0.751671414558793270,\t-0.751638436730168720,\t-0.751605457022448410,\t-0.751572475435714370,\t\n-0.751539491970049210,\t-0.751506506625534980,\t-0.751473519402254820,\t-0.751440530300290790,\t-0.751407539319725260,\t-0.751374546460641060,\t-0.751341551723120560,\t-0.751308555107246150,\t\n-0.751275556613100080,\t-0.751242556240765410,\t-0.751209553990324300,\t-0.751176549861859330,\t-0.751143543855452680,\t-0.751110535971187600,\t-0.751077526209146030,\t-0.751044514569410680,\t\n-0.751011501052063710,\t-0.750978485657188390,\t-0.750945468384866750,\t-0.750912449235181520,\t-0.750879428208214850,\t-0.750846405304049780,\t-0.750813380522768910,\t-0.750780353864454190,\t\n-0.750747325329188860,\t-0.750714294917055210,\t-0.750681262628135840,\t-0.750648228462513110,\t-0.750615192420269970,\t-0.750582154501489020,\t-0.750549114706252520,\t-0.750516073034642960,\t\n-0.750483029486743500,\t-0.750449984062636520,\t-0.750416936762404620,\t-0.750383887586129950,\t-0.750350836533896000,\t-0.750317783605784940,\t-0.750284728801879350,\t-0.750251672122261630,\t\n-0.750218613567015140,\t-0.750185553136222040,\t-0.750152490829965050,\t-0.750119426648326540,\t-0.750086360591389780,\t-0.750053292659237150,\t-0.750020222851950910,\t-0.749987151169614450,\t\n-0.749954077612310140,\t-0.749921002180120590,\t-0.749887924873128280,\t-0.749854845691416360,\t-0.749821764635067440,\t-0.749788681704164130,\t-0.749755596898788680,\t-0.749722510219024580,\t\n-0.749689421664954340,\t-0.749656331236660420,\t-0.749623238934225330,\t-0.749590144757732560,\t-0.749557048707264360,\t-0.749523950782903570,\t-0.749490850984732560,\t-0.749457749312834820,\t\n-0.749424645767292620,\t-0.749391540348188560,\t-0.749358433055605900,\t-0.749325323889627140,\t-0.749292212850335090,\t-0.749259099937812260,\t-0.749225985152141890,\t-0.749192868493406610,\t\n-0.749159749961689210,\t-0.749126629557072100,\t-0.749093507279638640,\t-0.749060383129471430,\t-0.749027257106653410,\t-0.748994129211266850,\t-0.748960999443395230,\t-0.748927867803121150,\t\n-0.748894734290527330,\t-0.748861598905696480,\t-0.748828461648711860,\t-0.748795322519656080,\t-0.748762181518611850,\t-0.748729038645662200,\t-0.748695893900890200,\t-0.748662747284378320,\t\n-0.748629598796209380,\t-0.748596448436466670,\t-0.748563296205232880,\t-0.748530142102590830,\t-0.748496986128623030,\t-0.748463828283413180,\t-0.748430668567043770,\t-0.748397506979597620,\t\n-0.748364343521157440,\t-0.748331178191806720,\t-0.748298010991627960,\t-0.748264841920704300,\t-0.748231670979118140,\t-0.748198498166953160,\t-0.748165323484291880,\t-0.748132146931217320,\t\n-0.748098968507812100,\t-0.748065788214159810,\t-0.748032606050343050,\t-0.747999422016444430,\t-0.747966236112547530,\t-0.747933048338734970,\t-0.747899858695089900,\t-0.747866667181694920,\t\n-0.747833473798633520,\t-0.747800278545988410,\t-0.747767081423842630,\t-0.747733882432278900,\t-0.747700681571380700,\t-0.747667478841230750,\t-0.747634274241912200,\t-0.747601067773507650,\t\n-0.747567859436100710,\t-0.747534649229774080,\t-0.747501437154610810,\t-0.747468223210693730,\t-0.747435007398106420,\t-0.747401789716931500,\t-0.747368570167251890,\t-0.747335348749151080,\t\n-0.747302125462711910,\t-0.747268900308017400,\t-0.747235673285150390,\t-0.747202444394194480,\t-0.747169213635232480,\t-0.747135981008347440,\t-0.747102746513622180,\t-0.747069510151140310,\t\n-0.747036271920984650,\t-0.747003031823238350,\t-0.746969789857984120,\t-0.746936546025305680,\t-0.746903300325286070,\t-0.746870052758008110,\t-0.746836803323554620,\t-0.746803552022009540,\t\n-0.746770298853455470,\t-0.746737043817975450,\t-0.746703786915653090,\t-0.746670528146571200,\t-0.746637267510813050,\t-0.746604005008461470,\t-0.746570740639600160,\t-0.746537474404311950,\t\n-0.746504206302680110,\t-0.746470936334787450,\t-0.746437664500717690,\t-0.746404390800553870,\t-0.746371115234378930,\t-0.746337837802276030,\t-0.746304558504328750,\t-0.746271277340620150,\t\n-0.746237994311233280,\t-0.746204709416251170,\t-0.746171422655757640,\t-0.746138134029835420,\t-0.746104843538567990,\t-0.746071551182038050,\t-0.746038256960329660,\t-0.746004960873525520,\t\n-0.745971662921708690,\t-0.745938363104962980,\t-0.745905061423371430,\t-0.745871757877017210,\t-0.745838452465983350,\t-0.745805145190353570,\t-0.745771836050210910,\t-0.745738525045638760,\t\n-0.745705212176719920,\t-0.745671897443538350,\t-0.745638580846177070,\t-0.745605262384719360,\t-0.745571942059248150,\t-0.745538619869847370,\t-0.745505295816600080,\t-0.745471969899589530,\t\n-0.745438642118898760,\t-0.745405312474611730,\t-0.745371980966811340,\t-0.745338647595580770,\t-0.745305312361003840,\t-0.745271975263163580,\t-0.745238636302143490,\t-0.745205295478026500,\t\n-0.745171952790896540,\t-0.745138608240836660,\t-0.745105261827930240,\t-0.745071913552260430,\t-0.745038563413911170,\t-0.745005211412965500,\t-0.744971857549506680,\t-0.744938501823617980,\t\n-0.744905144235383340,\t-0.744871784784885800,\t-0.744838423472208970,\t-0.744805060297435540,\t-0.744771695260649900,\t-0.744738328361934990,\t-0.744704959601373950,\t-0.744671588979050840,\t\n-0.744638216495048690,\t-0.744604842149451110,\t-0.744571465942341030,\t-0.744538087873802600,\t-0.744504707943918990,\t-0.744471326152773560,\t-0.744437942500449590,\t-0.744404556987031010,\t\n-0.744371169612601080,\t-0.744337780377243190,\t-0.744304389281040480,\t-0.744270996324077230,\t-0.744237601506436360,\t-0.744204204828201600,\t-0.744170806289455980,\t-0.744137405890283650,\t\n-0.744104003630767790,\t-0.744070599510991640,\t-0.744037193531039250,\t-0.744003785690994010,\t-0.743970375990939180,\t-0.743936964430958140,\t-0.743903551011135030,\t-0.743870135731553030,\t\n-0.743836718592295610,\t-0.743803299593446150,\t-0.743769878735088710,\t-0.743736456017306650,\t-0.743703031440183350,\t-0.743669605003802190,\t-0.743636176708247440,\t-0.743602746553602150,\t\n-0.743569314539950010,\t-0.743535880667374300,\t-0.743502444935959180,\t-0.743469007345787910,\t-0.743435567896944090,\t-0.743402126589511210,\t-0.743368683423573100,\t-0.743335238399213450,\t\n-0.743301791516515320,\t-0.743268342775563080,\t-0.743234892176439900,\t-0.743201439719229580,\t-0.743167985404015300,\t-0.743134529230881300,\t-0.743101071199911090,\t-0.743067611311188150,\t\n-0.743034149564795960,\t-0.743000685960818590,\t-0.742967220499339610,\t-0.742933753180442520,\t-0.742900284004210710,\t-0.742866812970728540,\t-0.742833340080079290,\t-0.742799865332346650,\t\n-0.742766388727614140,\t-0.742732910265966000,\t-0.742699429947485500,\t-0.742665947772256140,\t-0.742632463740362180,\t-0.742598977851887110,\t-0.742565490106914640,\t-0.742532000505528030,\t\n-0.742498509047811780,\t-0.742465015733849270,\t-0.742431520563724190,\t-0.742398023537520050,\t-0.742364524655321210,\t-0.742331023917210950,\t-0.742297521323273090,\t-0.742264016873591230,\t\n-0.742230510568249620,\t-0.742197002407331660,\t-0.742163492390921280,\t-0.742129980519101840,\t-0.742096466791957620,\t-0.742062951209572440,\t-0.742029433772029570,\t-0.741995914479413270,\t\n-0.741962393331807250,\t-0.741928870329295220,\t-0.741895345471960790,\t-0.741861818759888210,\t-0.741828290193161210,\t-0.741794759771863380,\t-0.741761227496078310,\t-0.741727693365890620,\t\n-0.741694157381383560,\t-0.741660619542641180,\t-0.741627079849746960,\t-0.741593538302785290,\t-0.741559994901839770,\t-0.741526449646994320,\t-0.741492902538332330,\t-0.741459353575938510,\t\n-0.741425802759896220,\t-0.741392250090289530,\t-0.741358695567201800,\t-0.741325139190717740,\t-0.741291580960920740,\t-0.741258020877894610,\t-0.741224458941723620,\t-0.741190895152491480,\t\n-0.741157329510282130,\t-0.741123762015179150,\t-0.741090192667267060,\t-0.741056621466629540,\t-0.741023048413350430,\t-0.740989473507513320,\t-0.740955896749202920,\t-0.740922318138502730,\t\n-0.740888737675496900,\t-0.740855155360268690,\t-0.740821571192903040,\t-0.740787985173483430,\t-0.740754397302093800,\t-0.740720807578818090,\t-0.740687216003740430,\t-0.740653622576944780,\t\n-0.740620027298514840,\t-0.740586430168535090,\t-0.740552831187089260,\t-0.740519230354261370,\t-0.740485627670135040,\t-0.740452023134794970,\t-0.740418416748324870,\t-0.740384808510808680,\t\n-0.740351198422330330,\t-0.740317586482974190,\t-0.740283972692823980,\t-0.740250357051963960,\t-0.740216739560477730,\t-0.740183120218449900,\t-0.740149499025964270,\t-0.740115875983104910,\t\n-0.740082251089955620,\t-0.740048624346600900,\t-0.740014995753124680,\t-0.739981365309610780,\t-0.739947733016143580,\t-0.739914098872807120,\t-0.739880462879685340,\t-0.739846825036862280,\t\n-0.739813185344422310,\t-0.739779543802449480,\t-0.739745900411027720,\t-0.739712255170240860,\t-0.739678608080173830,\t-0.739644959140910110,\t-0.739611308352533970,\t-0.739577655715129460,\t\n-0.739544001228780950,\t-0.739510344893572480,\t-0.739476686709588100,\t-0.739443026676911860,\t-0.739409364795628240,\t-0.739375701065821180,\t-0.739342035487574600,\t-0.739308368060973220,\t\n-0.739274698786100970,\t-0.739241027663041890,\t-0.739207354691880040,\t-0.739173679872700000,\t-0.739140003205585930,\t-0.739106324690621760,\t-0.739072644327891440,\t-0.739038962117479770,\t\n-0.739005278059470690,\t-0.738971592153948590,\t-0.738937904400997050,\t-0.738904214800701120,\t-0.738870523353144630,\t-0.738836830058411830,\t-0.738803134916586670,\t-0.738769437927753960,\t\n-0.738735739091997630,\t-0.738702038409401960,\t-0.738668335880050990,\t-0.738634631504029420,\t-0.738600925281421180,\t-0.738567217212310450,\t-0.738533507296781910,\t-0.738499795534919620,\t\n-0.738466081926807850,\t-0.738432366472530520,\t-0.738398649172172680,\t-0.738364930025818160,\t-0.738331209033551320,\t-0.738297486195456100,\t-0.738263761511617540,\t-0.738230034982119590,\t\n-0.738196306607046490,\t-0.738162576386482420,\t-0.738128844320512070,\t-0.738095110409219710,\t-0.738061374652689620,\t-0.738027637051005710,\t-0.737993897604252940,\t-0.737960156312515550,\t\n-0.737926413175877370,\t-0.737892668194423560,\t-0.737858921368238050,\t-0.737825172697405220,\t-0.737791422182009100,\t-0.737757669822134750,\t-0.737723915617866320,\t-0.737690159569288070,\t\n-0.737656401676484050,\t-0.737622641939539300,\t-0.737588880358538090,\t-0.737555116933564570,\t-0.737521351664703010,\t-0.737487584552038330,\t-0.737453815595654700,\t-0.737420044795636500,\t\n-0.737386272152068090,\t-0.737352497665034080,\t-0.737318721334618840,\t-0.737284943160906540,\t-0.737251163143982200,\t-0.737217381283930000,\t-0.737183597580834180,\t-0.737149812034779250,\t\n-0.737116024645849910,\t-0.737082235414130650,\t-0.737048444339705840,\t-0.737014651422659430,\t-0.736980856663076890,\t-0.736947060061042160,\t-0.736913261616639730,\t-0.736879461329953860,\t\n-0.736845659201069590,\t-0.736811855230071200,\t-0.736778049417043170,\t-0.736744241762069760,\t-0.736710432265236030,\t-0.736676620926626220,\t-0.736642807746324850,\t-0.736608992724416160,\t\n-0.736575175860985310,\t-0.736541357156116570,\t-0.736507536609893990,\t-0.736473714222402930,\t-0.736439889993727670,\t-0.736406063923952580,\t-0.736372236013162040,\t-0.736338406261441310,\t\n-0.736304574668874450,\t-0.736270741235546260,\t-0.736236905961540790,\t-0.736203068846943420,\t-0.736169229891838420,\t-0.736135389096310270,\t-0.736101546460443350,\t-0.736067701984322920,\t\n-0.736033855668033250,\t-0.736000007511658950,\t-0.735966157515284270,\t-0.735932305678994480,\t-0.735898452002873960,\t-0.735864596487006970,\t-0.735830739131478890,\t-0.735796879936373880,\t\n-0.735763018901776640,\t-0.735729156027771670,\t-0.735695291314444000,\t-0.735661424761878120,\t-0.735627556370158750,\t-0.735593686139370150,\t-0.735559814069597580,\t-0.735525940160925540,\t\n-0.735492064413438620,\t-0.735458186827221310,\t-0.735424307402358760,\t-0.735390426138935460,\t-0.735356543037036130,\t-0.735322658096745130,\t-0.735288771318147740,\t-0.735254882701328330,\t\n-0.735220992246371610,\t-0.735187099953362620,\t-0.735153205822385860,\t-0.735119309853526140,\t-0.735085412046867840,\t-0.735051512402496220,\t-0.735017610920496000,\t-0.734983707600951550,\t\n-0.734949802443947700,\t-0.734915895449569480,\t-0.734881986617901720,\t-0.734848075949028790,\t-0.734814163443035520,\t-0.734780249100007050,\t-0.734746332920028000,\t-0.734712414903183060,\t\n-0.734678495049556850,\t-0.734644573359234720,\t-0.734610649832301180,\t-0.734576724468840590,\t-0.734542797268938560,\t-0.734508868232679580,\t-0.734474937360148350,\t-0.734441004651429470,\t\n-0.734407070106608440,\t-0.734373133725769730,\t-0.734339195508998180,\t-0.734305255456378370,\t-0.734271313567995690,\t-0.734237369843934730,\t-0.734203424284280310,\t-0.734169476889117050,\t\n-0.734135527658530410,\t-0.734101576592604890,\t-0.734067623691425530,\t-0.734033668955076820,\t-0.733999712383644140,\t-0.733965753977212200,\t-0.733931793735865920,\t-0.733897831659689800,\t\n-0.733863867748769440,\t-0.733829902003189430,\t-0.733795934423034370,\t-0.733761965008389750,\t-0.733727993759340170,\t-0.733694020675970670,\t-0.733660045758365850,\t-0.733626069006611090,\t\n-0.733592090420791320,\t-0.733558110000991250,\t-0.733524127747295580,\t-0.733490143659789820,\t-0.733456157738558880,\t-0.733422169983687370,\t-0.733388180395260210,\t-0.733354188973362910,\t\n-0.733320195718080160,\t-0.733286200629496900,\t-0.733252203707697840,\t-0.733218204952768570,\t-0.733184204364793810,\t-0.733150201943858270,\t-0.733116197690047430,\t-0.733082191603446120,\t\n-0.733048183684139380,\t-0.733014173932211800,\t-0.732980162347749100,\t-0.732946148930836090,\t-0.732912133681557610,\t-0.732878116599998570,\t-0.732844097686244480,\t-0.732810076940380140,\t\n-0.732776054362490600,\t-0.732742029952660690,\t-0.732708003710976000,\t-0.732673975637521240,\t-0.732639945732381670,\t-0.732605913995641790,\t-0.732571880427387520,\t-0.732537845027703470,\t\n-0.732503807796674570,\t-0.732469768734386410,\t-0.732435727840923810,\t-0.732401685116371940,\t-0.732367640560815490,\t-0.732333594174340410,\t-0.732299545957031170,\t-0.732265495908973160,\t\n-0.732231444030251090,\t-0.732197390320950660,\t-0.732163334781156800,\t-0.732129277410954570,\t-0.732095218210428890,\t-0.732061157179665470,\t-0.732027094318749130,\t-0.731993029627765020,\t\n-0.731958963106798090,\t-0.731924894755934030,\t-0.731890824575257780,\t-0.731856752564854380,\t-0.731822678724808770,\t-0.731788603055206880,\t-0.731754525556133520,\t-0.731720446227673400,\t\n-0.731686365069912580,\t-0.731652282082935760,\t-0.731618197266828310,\t-0.731584110621675050,\t-0.731550022147561820,\t-0.731515931844573420,\t-0.731481839712795350,\t-0.731447745752312310,\t\n-0.731413649963210230,\t-0.731379552345573950,\t-0.731345452899488820,\t-0.731311351625039910,\t-0.731277248522312680,\t-0.731243143591392530,\t-0.731209036832364380,\t-0.731174928245313380,\t\n-0.731140817830325360,\t-0.731106705587485360,\t-0.731072591516878310,\t-0.731038475618589920,\t-0.731004357892705460,\t-0.730970238339310190,\t-0.730936116958488810,\t-0.730901993750327610,\t\n-0.730867868714911270,\t-0.730833741852325410,\t-0.730799613162654850,\t-0.730765482645985510,\t-0.730731350302402440,\t-0.730697216131991120,\t-0.730663080134836380,\t-0.730628942311024270,\t\n-0.730594802660639810,\t-0.730560661183768280,\t-0.730526517880494830,\t-0.730492372750905390,\t-0.730458225795085010,\t-0.730424077013118840,\t-0.730389926405092700,\t-0.730355773971091750,\t\n-0.730321619711201350,\t-0.730287463625506670,\t-0.730253305714093640,\t-0.730219145977047290,\t-0.730184984414453010,\t-0.730150821026396060,\t-0.730116655812962370,\t-0.730082488774236980,\t\n-0.730048319910305390,\t-0.730014149221252740,\t-0.729979976707164970,\t-0.729945802368127340,\t-0.729911626204225120,\t-0.729877448215543570,\t-0.729843268402168620,\t-0.729809086764185540,\t\n-0.729774903301679490,\t-0.729740718014736500,\t-0.729706530903441620,\t-0.729672341967880440,\t-0.729638151208138130,\t-0.729603958624300830,\t-0.729569764216453590,\t-0.729535567984681890,\t\n-0.729501369929070890,\t-0.729467170049706850,\t-0.729432968346674930,\t-0.729398764820060500,\t-0.729364559469948940,\t-0.729330352296426290,\t-0.729296143299577700,\t-0.729261932479488780,\t\n-0.729227719836244680,\t-0.729193505369931660,\t-0.729159289080634760,\t-0.729125070968439810,\t-0.729090851033431740,\t-0.729056629275696920,\t-0.729022405695320510,\t-0.728988180292387770,\t\n-0.728953953066984850,\t-0.728919724019197020,\t-0.728885493149110000,\t-0.728851260456808920,\t-0.728817025942379960,\t-0.728782789605908370,\t-0.728748551447479960,\t-0.728714311467179690,\t\n-0.728680069665094130,\t-0.728645826041308230,\t-0.728611580595907920,\t-0.728577333328978230,\t-0.728543084240605540,\t-0.728508833330875130,\t-0.728474580599872690,\t-0.728440326047683500,\t\n-0.728406069674393700,\t-0.728371811480088780,\t-0.728337551464854020,\t-0.728303289628775770,\t-0.728269025971939210,\t-0.728234760494430140,\t-0.728200493196333840,\t-0.728166224077736570,\t\n-0.728131953138723700,\t-0.728097680379381050,\t-0.728063405799793890,\t-0.728029129400048490,\t-0.727994851180230330,\t-0.727960571140425010,\t-0.727926289280717900,\t-0.727892005601195380,\t\n-0.727857720101942830,\t-0.727823432783046060,\t-0.727789143644590350,\t-0.727754852686662070,\t-0.727720559909346700,\t-0.727686265312729620,\t-0.727651968896897210,\t-0.727617670661934830,\t\n-0.727583370607928330,\t-0.727549068734962940,\t-0.727514765043125400,\t-0.727480459532500840,\t-0.727446152203175100,\t-0.727411843055233760,\t-0.727377532088762990,\t-0.727343219303848490,\t\n-0.727308904700575960,\t-0.727274588279030800,\t-0.727240270039299470,\t-0.727205949981467590,\t-0.727171628105620750,\t-0.727137304411844540,\t-0.727102978900225240,\t-0.727068651570848660,\t\n-0.727034322423800510,\t-0.726999991459166050,\t-0.726965658677032000,\t-0.726931324077483950,\t-0.726896987660607060,\t-0.726862649426488150,\t-0.726828309375212480,\t-0.726793967506866200,\t\n-0.726759623821534580,\t-0.726725278319304220,\t-0.726690931000260720,\t-0.726656581864489890,\t-0.726622230912077230,\t-0.726587878143109320,\t-0.726553523557671780,\t-0.726519167155850410,\t\n-0.726484808937730710,\t-0.726450448903399490,\t-0.726416087052942030,\t-0.726381723386444240,\t-0.726347357903992070,\t-0.726312990605671670,\t-0.726278621491568850,\t-0.726244250561769110,\t\n-0.726209877816359040,\t-0.726175503255424350,\t-0.726141126879050860,\t-0.726106748687324280,\t-0.726072368680331090,\t-0.726037986858157010,\t-0.726003603220887970,\t-0.725969217768609560,\t\n-0.725934830501408500,\t-0.725900441419370270,\t-0.725866050522581020,\t-0.725831657811126350,\t-0.725797263285092750,\t-0.725762866944566040,\t-0.725728468789632150,\t-0.725694068820376790,\t\n-0.725659667036886560,\t-0.725625263439247160,\t-0.725590858027544310,\t-0.725556450801864590,\t-0.725522041762293850,\t-0.725487630908917880,\t-0.725453218241822520,\t-0.725418803761094470,\t\n-0.725384387466819440,\t-0.725349969359083470,\t-0.725315549437972160,\t-0.725281127703572340,\t-0.725246704155969700,\t-0.725212278795250300,\t-0.725177851621499950,\t-0.725143422634805250,\t\n-0.725108991835251900,\t-0.725074559222926180,\t-0.725040124797913690,\t-0.725005688560301230,\t-0.724971250510174530,\t-0.724936810647619390,\t-0.724902368972722530,\t-0.724867925485569780,\t\n-0.724833480186247160,\t-0.724799033074840620,\t-0.724764584151436740,\t-0.724730133416121360,\t-0.724695680868980840,\t-0.724661226510100680,\t-0.724626770339567680,\t-0.724592312357467790,\t\n-0.724557852563887160,\t-0.724523390958911720,\t-0.724488927542627950,\t-0.724454462315121890,\t-0.724419995276479600,\t-0.724385526426787110,\t-0.724351055766131120,\t-0.724316583294597470,\t\n-0.724282109012272410,\t-0.724247632919241660,\t-0.724213155015592250,\t-0.724178675301409890,\t-0.724144193776780520,\t-0.724109710441790950,\t-0.724075225296527240,\t-0.724040738341075300,\t\n-0.724006249575521290,\t-0.723971758999951920,\t-0.723937266614453230,\t-0.723902772419111380,\t-0.723868276414012190,\t-0.723833778599242690,\t-0.723799278974888830,\t-0.723764777541036630,\t\n-0.723730274297772150,\t-0.723695769245182420,\t-0.723661262383353150,\t-0.723626753712370840,\t-0.723592243232321300,\t-0.723557730943291460,\t-0.723523216845367250,\t-0.723488700938634710,\t\n-0.723454183223180670,\t-0.723419663699091280,\t-0.723385142366452680,\t-0.723350619225350930,\t-0.723316094275872960,\t-0.723281567518104680,\t-0.723247038952132600,\t-0.723212508578042420,\t\n-0.723177976395921520,\t-0.723143442405855490,\t-0.723108906607930920,\t-0.723074369002233870,\t-0.723039829588851050,\t-0.723005288367868700,\t-0.722970745339373110,\t-0.722936200503450420,\t\n-0.722901653860187570,\t-0.722867105409670470,\t-0.722832555151985410,\t-0.722798003087219200,\t-0.722763449215457990,\t-0.722728893536788150,\t-0.722694336051295740,\t-0.722659776759067900,\t\n-0.722625215660190560,\t-0.722590652754750210,\t-0.722556088042832780,\t-0.722521521524525650,\t-0.722486953199914520,\t-0.722452383069086100,\t-0.722417811132126440,\t-0.722383237389122580,\t\n-0.722348661840160560,\t-0.722314084485326970,\t-0.722279505324707750,\t-0.722244924358390160,\t-0.722210341586460250,\t-0.722175757009004380,\t-0.722141170626108940,\t-0.722106582437860740,\t\n-0.722071992444346280,\t-0.722037400645651360,\t-0.722002807041863370,\t-0.721968211633068240,\t-0.721933614419352660,\t-0.721899015400802810,\t-0.721864414577505610,\t-0.721829811949547430,\t\n-0.721795207517014650,\t-0.721760601279993640,\t-0.721725993238571340,\t-0.721691383392834120,\t-0.721656771742868460,\t-0.721622158288760530,\t-0.721587543030597470,\t-0.721552925968465650,\t\n-0.721518307102451460,\t-0.721483686432641160,\t-0.721449063959122010,\t-0.721414439681980160,\t-0.721379813601301880,\t-0.721345185717174430,\t-0.721310556029684080,\t-0.721275924538917200,\t\n-0.721241291244960280,\t-0.721206656147900470,\t-0.721172019247823930,\t-0.721137380544817350,\t-0.721102740038967130,\t-0.721068097730360290,\t-0.721033453619083110,\t-0.720998807705222510,\t\n-0.720964159988864430,\t-0.720929510470096350,\t-0.720894859149004310,\t-0.720860206025675240,\t-0.720825551100195420,\t-0.720790894372651980,\t-0.720756235843131310,\t-0.720721575511719670,\t\n-0.720686913378504430,\t-0.720652249443571980,\t-0.720617583707008790,\t-0.720582916168901470,\t-0.720548246829337050,\t-0.720513575688402130,\t-0.720478902746183090,\t-0.720444228002766640,\t\n-0.720409551458239930,\t-0.720374873112689220,\t-0.720340192966201440,\t-0.720305511018862870,\t-0.720270827270760750,\t-0.720236141721981580,\t-0.720201454372612180,\t-0.720166765222738700,\t\n-0.720132074272448630,\t-0.720097381521828450,\t-0.720062686970964430,\t-0.720027990619944050,\t-0.719993292468853690,\t-0.719958592517780050,\t-0.719923890766809630,\t-0.719889187216029900,\t\n-0.719854481865527030,\t-0.719819774715388050,\t-0.719785065765699340,\t-0.719750355016548270,\t-0.719715642468021330,\t-0.719680928120205230,\t-0.719646211973186460,\t-0.719611494027052600,\t\n-0.719576774281889930,\t-0.719542052737785260,\t-0.719507329394825310,\t-0.719472604253097230,\t-0.719437877312687600,\t-0.719403148573683370,\t-0.719368418036170910,\t-0.719333685700237810,\t\n-0.719298951565970460,\t-0.719264215633455330,\t-0.719229477902780020,\t-0.719194738374031030,\t-0.719159997047295160,\t-0.719125253922659020,\t-0.719090509000209990,\t-0.719055762280034760,\t\n-0.719021013762220160,\t-0.718986263446852680,\t-0.718951511334019800,\t-0.718916757423808230,\t-0.718882001716304670,\t-0.718847244211595850,\t-0.718812484909769230,\t-0.718777723810911430,\t\n-0.718742960915109250,\t-0.718708196222449410,\t-0.718673429733019290,\t-0.718638661446905800,\t-0.718603891364195220,\t-0.718569119484975150,\t-0.718534345809332400,\t-0.718499570337353680,\t\n-0.718464793069125810,\t-0.718430014004736270,\t-0.718395233144271670,\t-0.718360450487819050,\t-0.718325666035464880,\t-0.718290879787296890,\t-0.718256091743401770,\t-0.718221301903866350,\t\n-0.718186510268777330,\t-0.718151716838222430,\t-0.718116921612288240,\t-0.718082124591061690,\t-0.718047325774629600,\t-0.718012525163079340,\t-0.717977722756497960,\t-0.717942918554971830,\t\n-0.717908112558588770,\t-0.717873304767435490,\t-0.717838495181598810,\t-0.717803683801165660,\t-0.717768870626223630,\t-0.717734055656859440,\t-0.717699238893160010,\t-0.717664420335212270,\t\n-0.717629599983103720,\t-0.717594777836921270,\t-0.717559953896751760,\t-0.717525128162682100,\t-0.717490300634799900,\t-0.717455471313191980,\t-0.717420640197945380,\t-0.717385807289146920,\t\n-0.717350972586884180,\t-0.717316136091244120,\t-0.717281297802313640,\t-0.717246457720179590,\t-0.717211615844929650,\t-0.717176772176650770,\t-0.717141926715429650,\t-0.717107079461353990,\t\n-0.717072230414510630,\t-0.717037379574986700,\t-0.717002526942868920,\t-0.716967672518245340,\t-0.716932816301202420,\t-0.716897958291827450,\t-0.716863098490207350,\t-0.716828236896429830,\t\n-0.716793373510581700,\t-0.716758508332750010,\t-0.716723641363021910,\t-0.716688772601485000,\t-0.716653902048226100,\t-0.716619029703332470,\t-0.716584155566890920,\t-0.716549279638989290,\t\n-0.716514401919714490,\t-0.716479522409153360,\t-0.716444641107393700,\t-0.716409758014522560,\t-0.716374873130626980,\t-0.716339986455793780,\t-0.716305097990111110,\t-0.716270207733665560,\t\n-0.716235315686544530,\t-0.716200421848834920,\t-0.716165526220624570,\t-0.716130628802000400,\t-0.716095729593049680,\t-0.716060828593859220,\t-0.716025925804517070,\t-0.715991021225110160,\t\n-0.715956114855725630,\t-0.715921206696450430,\t-0.715886296747372700,\t-0.715851385008579140,\t-0.715816471480156810,\t-0.715781556162193630,\t-0.715746639054776530,\t-0.715711720157992780,\t\n-0.715676799471929530,\t-0.715641876996674590,\t-0.715606952732314780,\t-0.715572026678937820,\t-0.715537098836630300,\t-0.715502169205480490,\t-0.715467237785575190,\t-0.715432304577001800,\t\n-0.715397369579847340,\t-0.715362432794199750,\t-0.715327494220146080,\t-0.715292553857773680,\t-0.715257611707169620,\t-0.715222667768421800,\t-0.715187722041617400,\t-0.715152774526843340,\t\n-0.715117825224187540,\t-0.715082874133737280,\t-0.715047921255579810,\t-0.715012966589802180,\t-0.714978010136492540,\t-0.714943051895737810,\t-0.714908091867625490,\t-0.714873130052242620,\t\n-0.714838166449677240,\t-0.714803201060016490,\t-0.714768233883347650,\t-0.714733264919757970,\t-0.714698294169335390,\t-0.714663321632167060,\t-0.714628347308340460,\t-0.714593371197942750,\t\n-0.714558393301061860,\t-0.714523413617784930,\t-0.714488432148199570,\t-0.714453448892392820,\t-0.714418463850452710,\t-0.714383477022466410,\t-0.714348488408521170,\t-0.714313498008705030,\t\n-0.714278505823105040,\t-0.714243511851808900,\t-0.714208516094903540,\t-0.714173518552477350,\t-0.714138519224617240,\t-0.714103518111410930,\t-0.714068515212945450,\t-0.714033510529309080,\t\n-0.713998504060588850,\t-0.713963495806872350,\t-0.713928485768246860,\t-0.713893473944800410,\t-0.713858460336620370,\t-0.713823444943794130,\t-0.713788427766408830,\t-0.713753408804552960,\t\n-0.713718388058313450,\t-0.713683365527777780,\t-0.713648341213033890,\t-0.713613315114169260,\t-0.713578287231271260,\t-0.713543257564427270,\t-0.713508226113725440,\t-0.713473192879253040,\t\n-0.713438157861097650,\t-0.713403121059346560,\t-0.713368082474087890,\t-0.713333042105409150,\t-0.713297999953397710,\t-0.713262956018141050,\t-0.713227910299727320,\t-0.713192862798243680,\t\n-0.713157813513777940,\t-0.713122762446417370,\t-0.713087709596250230,\t-0.713052654963363790,\t-0.713017598547845410,\t-0.712982540349783370,\t-0.712947480369264920,\t-0.712912418606377880,\t\n-0.712877355061209420,\t-0.712842289733847780,\t-0.712807222624380570,\t-0.712772153732895260,\t-0.712737083059479250,\t-0.712702010604220780,\t-0.712666936367207350,\t-0.712631860348526550,\t\n-0.712596782548265860,\t-0.712561702966513440,\t-0.712526621603356780,\t-0.712491538458883580,\t-0.712456453533181210,\t-0.712421366826338050,\t-0.712386278338441370,\t-0.712351188069579200,\t\n-0.712316096019838580,\t-0.712281002189308010,\t-0.712245906578075070,\t-0.712210809186226920,\t-0.712175710013852160,\t-0.712140609061038040,\t-0.712105506327872510,\t-0.712070401814442810,\t\n-0.712035295520837440,\t-0.712000187447143770,\t-0.711965077593449850,\t-0.711929965959842700,\t-0.711894852546411050,\t-0.711859737353242260,\t-0.711824620380424040,\t-0.711789501628044110,\t\n-0.711754381096190600,\t-0.711719258784951240,\t-0.711684134694413610,\t-0.711649008824665420,\t-0.711613881175795050,\t-0.711578751747889870,\t-0.711543620541037590,\t-0.711508487555326590,\t\n-0.711473352790844230,\t-0.711438216247678670,\t-0.711403077925917170,\t-0.711367937825648220,\t-0.711332795946959530,\t-0.711297652289938800,\t-0.711262506854673630,\t-0.711227359641252500,\t\n-0.711192210649763010,\t-0.711157059880292990,\t-0.711121907332930010,\t-0.711086753007762580,\t-0.711051596904878180,\t-0.711016439024364840,\t-0.710981279366310170,\t-0.710946117930802530,\t\n-0.710910954717929530,\t-0.710875789727778980,\t-0.710840622960439150,\t-0.710805454415997850,\t-0.710770284094542900,\t-0.710735111996161910,\t-0.710699938120943450,\t-0.710664762468975140,\t\n-0.710629585040344900,\t-0.710594405835140440,\t-0.710559224853450240,\t-0.710524042095362020,\t-0.710488857560963690,\t-0.710453671250342870,\t-0.710418483163588130,\t-0.710383293300787310,\t\n-0.710348101662028110,\t-0.710312908247398460,\t-0.710277713056986840,\t-0.710242516090880960,\t-0.710207317349168310,\t-0.710172116831937930,\t-0.710136914539277080,\t-0.710101710471274020,\t\n-0.710066504628016350,\t-0.710031297009592670,\t-0.709996087616090790,\t-0.709960876447598750,\t-0.709925663504204160,\t-0.709890448785995720,\t-0.709855232293061240,\t-0.709820014025488550,\t\n-0.709784793983365580,\t-0.709749572166780920,\t-0.709714348575822380,\t-0.709679123210577910,\t-0.709643896071135320,\t-0.709608667157583310,\t-0.709573436470009700,\t-0.709538204008502430,\t\n-0.709502969773149310,\t-0.709467733764039150,\t-0.709432495981259570,\t-0.709397256424898480,\t-0.709362015095044600,\t-0.709326771991785730,\t-0.709291527115209820,\t-0.709256280465404790,\t\n-0.709221032042459450,\t-0.709185781846461420,\t-0.709150529877499050,\t-0.709115276135659940,\t-0.709080020621033040,\t-0.709044763333706030,\t-0.709009504273767190,\t-0.708974243441304110,\t\n-0.708938980836405830,\t-0.708903716459160170,\t-0.708868450309655170,\t-0.708833182387978660,\t-0.708797912694219660,\t-0.708762641228465770,\t-0.708727367990804940,\t-0.708692092981326070,\t\n-0.708656816200117000,\t-0.708621537647265760,\t-0.708586257322860400,\t-0.708550975226989730,\t-0.708515691359741680,\t-0.708480405721204410,\t-0.708445118311465730,\t-0.708409829130614680,\t\n-0.708374538178738970,\t-0.708339245455926860,\t-0.708303950962266390,\t-0.708268654697846390,\t-0.708233356662754670,\t-0.708198056857079590,\t-0.708162755280909110,\t-0.708127451934332020,\t\n-0.708092146817436260,\t-0.708056839930309880,\t-0.708021531273041680,\t-0.707986220845719720,\t-0.707950908648432130,\t-0.707915594681266970,\t-0.707880278944313050,\t-0.707844961437658630,\t\n-0.707809642161391750,\t-0.707774321115600350,\t-0.707738998300373460,\t-0.707703673715799120,\t-0.707668347361965600,\t-0.707633019238960940,\t-0.707597689346874060,\t-0.707562357685792900,\t\n-0.707527024255805830,\t-0.707491689057000880,\t-0.707456352089467110,\t-0.707421013353292330,\t-0.707385672848565130,\t-0.707350330575373440,\t-0.707314986533806200,\t-0.707279640723951440,\t\n-0.707244293145897320,\t-0.707208943799732760,\t-0.707173592685545800,\t-0.707138239803424940,\t-0.707102885153458200,\t-0.707067528735734420,\t-0.707032170550341950,\t-0.706996810597368960,\t\n-0.706961448876903710,\t-0.706926085389035120,\t-0.706890720133851240,\t-0.706855353111440650,\t-0.706819984321891410,\t-0.706784613765292450,\t-0.706749241441731900,\t-0.706713867351298370,\t\n-0.706678491494079800,\t-0.706643113870165320,\t-0.706607734479642980,\t-0.706572353322601040,\t-0.706536970399128660,\t-0.706501585709313650,\t-0.706466199253244830,\t-0.706430811031010130,\t\n-0.706395421042698700,\t-0.706360029288398810,\t-0.706324635768198710,\t-0.706289240482186780,\t-0.706253843430452060,\t-0.706218444613082810,\t-0.706183044030167300,\t-0.706147641681794000,\t\n-0.706112237568051750,\t-0.706076831689029020,\t-0.706041424044814180,\t-0.706006014635495500,\t-0.705970603461162140,\t-0.705935190521902230,\t-0.705899775817803940,\t-0.705864359348956640,\t\n-0.705828941115448360,\t-0.705793521117367820,\t-0.705758099354803050,\t-0.705722675827843430,\t-0.705687250536577100,\t-0.705651823481092680,\t-0.705616394661478300,\t-0.705580964077823340,\t\n-0.705545531730215950,\t-0.705510097618744610,\t-0.705474661743497820,\t-0.705439224104564720,\t-0.705403784702033580,\t-0.705368343535992870,\t-0.705332900606530980,\t-0.705297455913737270,\t\n-0.705262009457699790,\t-0.705226561238507350,\t-0.705191111256248230,\t-0.705155659511011670,\t-0.705120206002885830,\t-0.705084750731959310,\t-0.705049293698321140,\t-0.705013834902059710,\t\n-0.704978374343263820,\t-0.704942912022021530,\t-0.704907447938422300,\t-0.704871982092554530,\t-0.704836514484506790,\t-0.704801045114367360,\t-0.704765573982225720,\t-0.704730101088170140,\t\n-0.704694626432289310,\t-0.704659150014671610,\t-0.704623671835406310,\t-0.704588191894581770,\t-0.704552710192286820,\t-0.704517226728609840,\t-0.704481741503640070,\t-0.704446254517465900,\t\n-0.704410765770175810,\t-0.704375275261859170,\t-0.704339782992604250,\t-0.704304288962499860,\t-0.704268793171634490,\t-0.704233295620097510,\t-0.704197796307977190,\t-0.704162295235362450,\t\n-0.704126792402341550,\t-0.704091287809004100,\t-0.704055781455438350,\t-0.704020273341733230,\t-0.703984763467977110,\t-0.703949251834259270,\t-0.703913738440668400,\t-0.703878223287293210,\t\n-0.703842706374222080,\t-0.703807187701544600,\t-0.703771667269349030,\t-0.703736145077724080,\t-0.703700621126759020,\t-0.703665095416542430,\t-0.703629567947163030,\t-0.703594038718709400,\t\n-0.703558507731271150,\t-0.703522974984936430,\t-0.703487440479794390,\t-0.703451904215933400,\t-0.703416366193443050,\t-0.703380826412411730,\t-0.703345284872928240,\t-0.703309741575081300,\t\n-0.703274196518960390,\t-0.703238649704653880,\t-0.703203101132250820,\t-0.703167550801839680,\t-0.703131998713509950,\t-0.703096444867350230,\t-0.703060889263449120,\t-0.703025331901896090,\t\n-0.702989772782779630,\t-0.702954211906188900,\t-0.702918649272212150,\t-0.702883084880939310,\t-0.702847518732458540,\t-0.702811950826859100,\t-0.702776381164229470,\t-0.702740809744659130,\t\n-0.702705236568236800,\t-0.702669661635051400,\t-0.702634084945191530,\t-0.702598506498746780,\t-0.702562926295805750,\t-0.702527344336457360,\t-0.702491760620790330,\t-0.702456175148894250,\t\n-0.702420587920857710,\t-0.702384998936769640,\t-0.702349408196718760,\t-0.702313815700794760,\t-0.702278221449086140,\t-0.702242625441681700,\t-0.702207027678671050,\t-0.702171428160142770,\t\n-0.702135826886185920,\t-0.702100223856889190,\t-0.702064619072342190,\t-0.702029012532633720,\t-0.701993404237852610,\t-0.701957794188087790,\t-0.701922182383428740,\t-0.701886568823964270,\t\n-0.701850953509783330,\t-0.701815336440974710,\t-0.701779717617628140,\t-0.701744097039832200,\t-0.701708474707675940,\t-0.701672850621248290,\t-0.701637224780638840,\t-0.701601597185936290,\t\n-0.701565967837229460,\t-0.701530336734607960,\t-0.701494703878160710,\t-0.701459069267976630,\t-0.701423432904144550,\t-0.701387794786754170,\t-0.701352154915894420,\t-0.701316513291654230,\t\n-0.701280869914122420,\t-0.701245224783388800,\t-0.701209577899542080,\t-0.701173929262671410,\t-0.701138278872865620,\t-0.701102626730214510,\t-0.701066972834806680,\t-0.701031317186731510,\t\n-0.700995659786077810,\t-0.700960000632935180,\t-0.700924339727392540,\t-0.700888677069538720,\t-0.700853012659463650,\t-0.700817346497255910,\t-0.700781678583004890,\t-0.700746008916799280,\t\n-0.700710337498729020,\t-0.700674664328882920,\t-0.700638989407350140,\t-0.700603312734219610,\t-0.700567634309581020,\t-0.700531954133523430,\t-0.700496272206135970,\t-0.700460588527507480,\t\n-0.700424903097727760,\t-0.700389215916885850,\t-0.700353526985070920,\t-0.700317836302371880,\t-0.700282143868878440,\t-0.700246449684679750,\t-0.700210753749864970,\t-0.700175056064522900,\t\n-0.700139356628743490,\t-0.700103655442615770,\t-0.700067952506228550,\t-0.700032247819671770,\t-0.699996541383034470,\t-0.699960833196405670,\t-0.699925123259874550,\t-0.699889411573530910,\t\n-0.699853698137463680,\t-0.699817982951762340,\t-0.699782266016515610,\t-0.699746547331813630,\t-0.699710826897745220,\t-0.699675104714399750,\t-0.699639380781866160,\t-0.699603655100234480,\t\n-0.699567927669593750,\t-0.699532198490033120,\t-0.699496467561641630,\t-0.699460734884509330,\t-0.699425000458725240,\t-0.699389264284378200,\t-0.699353526361558450,\t-0.699317786690354830,\t\n-0.699282045270856800,\t-0.699246302103153190,\t-0.699210557187334270,\t-0.699174810523488950,\t-0.699139062111706620,\t-0.699103311952076200,\t-0.699067560044687950,\t-0.699031806389630810,\t\n-0.698996050986994020,\t-0.698960293836866860,\t-0.698924534939339260,\t-0.698888774294500360,\t-0.698853011902439540,\t-0.698817247763245830,\t-0.698781481877009390,\t-0.698745714243819150,\t\n-0.698709944863764370,\t-0.698674173736934970,\t-0.698638400863420220,\t-0.698602626243309490,\t-0.698566849876691710,\t-0.698531071763657250,\t-0.698495291904295160,\t-0.698459510298694800,\t\n-0.698423726946945320,\t-0.698387941849136770,\t-0.698352155005358520,\t-0.698316366415699830,\t-0.698280576080249850,\t-0.698244783999098730,\t-0.698208990172335730,\t-0.698173194600050230,\t\n-0.698137397282331370,\t-0.698101598219269430,\t-0.698065797410953430,\t-0.698029994857472640,\t-0.697994190558917200,\t-0.697958384515376280,\t-0.697922576726939360,\t-0.697886767193695690,\t\n-0.697850955915735430,\t-0.697815142893147830,\t-0.697779328126022280,\t-0.697743511614448140,\t-0.697707693358515570,\t-0.697671873358313710,\t-0.697636051613932270,\t-0.697600228125460300,\t\n-0.697564402892988040,\t-0.697528575916604780,\t-0.697492747196400200,\t-0.697456916732463350,\t-0.697421084524884490,\t-0.697385250573753000,\t-0.697349414879158250,\t-0.697313577441189820,\t\n-0.697277738259937660,\t-0.697241897335491130,\t-0.697206054667939610,\t-0.697170210257373250,\t-0.697134364103881410,\t-0.697098516207553590,\t-0.697062666568479150,\t-0.697026815186748470,\t\n-0.696990962062450590,\t-0.696955107195675440,\t-0.696919250586512160,\t-0.696883392235051020,\t-0.696847532141381510,\t-0.696811670305593100,\t-0.696775806727775170,\t-0.696739941408018090,\t\n-0.696704074346411130,\t-0.696668205543043980,\t-0.696632334998006030,\t-0.696596462711387530,\t-0.696560588683277970,\t-0.696524712913766500,\t-0.696488835402943600,\t-0.696452956150898640,\t\n-0.696417075157721220,\t-0.696381192423500940,\t-0.696345307948327830,\t-0.696309421732291600,\t-0.696273533775481730,\t-0.696237644077987720,\t-0.696201752639899920,\t-0.696165859461307710,\t\n-0.696129964542300920,\t-0.696094067882968790,\t-0.696058169483401820,\t-0.696022269343689490,\t-0.695986367463921510,\t-0.695950463844187240,\t-0.695914558484577170,\t-0.695878651385180680,\t\n-0.695842742546087250,\t-0.695806831967387350,\t-0.695770919649170260,\t-0.695735005591525900,\t-0.695699089794543760,\t-0.695663172258314200,\t-0.695627252982926600,\t-0.695591331968471000,\t\n-0.695555409215036670,\t-0.695519484722714190,\t-0.695483558491593050,\t-0.695447630521762950,\t-0.695411700813313380,\t-0.695375769366334940,\t-0.695339836180917100,\t-0.695303901257149690,\t\n-0.695267964595122080,\t-0.695232026194924970,\t-0.695196086056647840,\t-0.695160144180380520,\t-0.695124200566212380,\t-0.695088255214234120,\t-0.695052308124535220,\t-0.695016359297205290,\t\n-0.694980408732334690,\t-0.694944456430013120,\t-0.694908502390330420,\t-0.694872546613376050,\t-0.694836589099240730,\t-0.694800629848013940,\t-0.694764668859785610,\t-0.694728706134645210,\t\n-0.694692741672683360,\t-0.694656775473989740,\t-0.694620807538654070,\t-0.694584837866766060,\t-0.694548866458416400,\t-0.694512893313694480,\t-0.694476918432690330,\t-0.694440941815493650,\t\n-0.694404963462194820,\t-0.694368983372883660,\t-0.694333001547649650,\t-0.694297017986583500,\t-0.694261032689774900,\t-0.694225045657313580,\t-0.694189056889289340,\t-0.694153066385792880,\t\n-0.694117074146913590,\t-0.694081080172741730,\t-0.694045084463366880,\t-0.694009087018879530,\t-0.693973087839369620,\t-0.693937086924926840,\t-0.693901084275641120,\t-0.693865079891602950,\t\n-0.693829073772902040,\t-0.693793065919628530,\t-0.693757056331872010,\t-0.693721045009723200,\t-0.693685031953271690,\t-0.693649017162607300,\t-0.693613000637820720,\t-0.693576982379001670,\t\n-0.693540962386240190,\t-0.693504940659625870,\t-0.693468917199249630,\t-0.693432892005201080,\t-0.693396865077570260,\t-0.693360836416446970,\t-0.693324806021921810,\t-0.693288773894084830,\t\n-0.693252740033025730,\t-0.693216704438834540,\t-0.693180667111601980,\t-0.693144628051417630,\t-0.693108587258371770,\t-0.693072544732554200,\t-0.693036500474055520,\t-0.693000454482965540,\t\n-0.692964406759374100,\t-0.692928357303371990,\t-0.692892306115049040,\t-0.692856253194495290,\t-0.692820198541800550,\t-0.692784142157055640,\t-0.692748084040350490,\t-0.692712024191775020,\t\n-0.692675962611419170,\t-0.692639899299373750,\t-0.692603834255728580,\t-0.692567767480573800,\t-0.692531698973999350,\t-0.692495628736095940,\t-0.692459556766953480,\t-0.692423483066662130,\t\n-0.692387407635311700,\t-0.692351330472993130,\t-0.692315251579796120,\t-0.692279170955811150,\t-0.692243088601127820,\t-0.692207004515837170,\t-0.692170918700028890,\t-0.692134831153793040,\t\n-0.692098741877220420,\t-0.692062650870401090,\t-0.692026558133424950,\t-0.691990463666382170,\t-0.691954367469363560,\t-0.691918269542459050,\t-0.691882169885758790,\t-0.691846068499352820,\t\n-0.691809965383332060,\t-0.691773860537786330,\t-0.691737753962805900,\t-0.691701645658480910,\t-0.691665535624901960,\t-0.691629423862159310,\t-0.691593310370343000,\t-0.691557195149543170,\t\n-0.691521078199850650,\t-0.691484959521355360,\t-0.691448839114147450,\t-0.691412716978317740,\t-0.691376593113956160,\t-0.691340467521153190,\t-0.691304340199998760,\t-0.691268211150583680,\t\n-0.691232080372998100,\t-0.691195947867332410,\t-0.691159813633676510,\t-0.691123677672121350,\t-0.691087539982756960,\t-0.691051400565673820,\t-0.691015259420961760,\t-0.690979116548711910,\t\n-0.690942971949014330,\t-0.690906825621959260,\t-0.690870677567636760,\t-0.690834527786137960,\t-0.690798376277552810,\t-0.690762223041971430,\t-0.690726068079484780,\t-0.690689911390182990,\t\n-0.690653752974156430,\t-0.690617592831495150,\t-0.690581430962290190,\t-0.690545267366631690,\t-0.690509102044609910,\t-0.690472934996315240,\t-0.690436766221838360,\t-0.690400595721269660,\t\n-0.690364423494699510,\t-0.690328249542217940,\t-0.690292073863916110,\t-0.690255896459884060,\t-0.690219717330212260,\t-0.690183536474990870,\t-0.690147353894310920,\t-0.690111169588262570,\t\n-0.690074983556936310,\t-0.690038795800422380,\t-0.690002606318811610,\t-0.689966415112194480,\t-0.689930222180660910,\t-0.689894027524302070,\t-0.689857831143208200,\t-0.689821633037469790,\t\n-0.689785433207176890,\t-0.689749231652420860,\t-0.689713028373291630,\t-0.689676823369879900,\t-0.689640616642275830,\t-0.689604408190570450,\t-0.689568198014854030,\t-0.689531986115217150,\t\n-0.689495772491750090,\t-0.689459557144543770,\t-0.689423340073688660,\t-0.689387121279275150,\t-0.689350900761393490,\t-0.689314678520134950,\t-0.689278454555589670,\t-0.689242228867847920,\t\n-0.689206001457000950,\t-0.689169772323139030,\t-0.689133541466352640,\t-0.689097308886732040,\t-0.689061074584368600,\t-0.689024838559352370,\t-0.688988600811774040,\t-0.688952361341723880,\t\n-0.688916120149293150,\t-0.688879877234572220,\t-0.688843632597651470,\t-0.688807386238621370,\t-0.688771138157573180,\t-0.688734888354597060,\t-0.688698636829783720,\t-0.688662383583223510,\t\n-0.688626128615007600,\t-0.688589871925226470,\t-0.688553613513970260,\t-0.688517353381330350,\t-0.688481091527397120,\t-0.688444827952261030,\t-0.688408562656012690,\t-0.688372295638743140,\t\n-0.688336026900542960,\t-0.688299756441502650,\t-0.688263484261712690,\t-0.688227210361264220,\t-0.688190934740247840,\t-0.688154657398754140,\t-0.688118378336873390,\t-0.688082097554697070,\t\n-0.688045815052315430,\t-0.688009530829819300,\t-0.687973244887299050,\t-0.687936957224845940,\t-0.687900667842550550,\t-0.687864376740503050,\t-0.687828083918795020,\t-0.687791789377516730,\t\n-0.687755493116758990,\t-0.687719195136612170,\t-0.687682895437167760,\t-0.687646594018516020,\t-0.687610290880747880,\t-0.687573986023953590,\t-0.687537679448224750,\t-0.687501371153651620,\t\n-0.687465061140325130,\t-0.687428749408335650,\t-0.687392435957774550,\t-0.687356120788732540,\t-0.687319803901300100,\t-0.687283485295567820,\t-0.687247164971627190,\t-0.687210842929568580,\t\n-0.687174519169482910,\t-0.687138193691460670,\t-0.687101866495593240,\t-0.687065537581971090,\t-0.687029206950684810,\t-0.686992874601825900,\t-0.686956540535484720,\t-0.686920204751752190,\t\n-0.686883867250718820,\t-0.686847528032476170,\t-0.686811187097114640,\t-0.686774844444725140,\t-0.686738500075398270,\t-0.686702153989225410,\t-0.686665806186297130,\t-0.686629456666704390,\t\n-0.686593105430537750,\t-0.686556752477888610,\t-0.686520397808847550,\t-0.686484041423505500,\t-0.686447683321953050,\t-0.686411323504281800,\t-0.686374961970582120,\t-0.686338598720944710,\t\n-0.686302233755461290,\t-0.686265867074222100,\t-0.686229498677318310,\t-0.686193128564840490,\t-0.686156756736880150,\t-0.686120383193527860,\t-0.686084007934874670,\t-0.686047630961011070,\t\n-0.686011252272028860,\t-0.685974871868018420,\t-0.685938489749070790,\t-0.685902105915276560,\t-0.685865720366727550,\t-0.685829333103514130,\t-0.685792944125727330,\t-0.685756553433457980,\t\n-0.685720161026797450,\t-0.685683766905836660,\t-0.685647371070665980,\t-0.685610973521377230,\t-0.685574574258061120,\t-0.685538173280808570,\t-0.685501770589710180,\t-0.685465366184857760,\t\n-0.685428960066341910,\t-0.685392552234253550,\t-0.685356142688683610,\t-0.685319731429723580,\t-0.685283318457464260,\t-0.685246903771996710,\t-0.685210487373411500,\t-0.685174069261800360,\t\n-0.685137649437254080,\t-0.685101227899863720,\t-0.685064804649719860,\t-0.685028379686914430,\t-0.684991953011538040,\t-0.684955524623681700,\t-0.684919094523436240,\t-0.684882662710893380,\t\n-0.684846229186143800,\t-0.684809793949278430,\t-0.684773357000388880,\t-0.684736918339565960,\t-0.684700477966900700,\t-0.684664035882483810,\t-0.684627592086407330,\t-0.684591146578761740,\t\n-0.684554699359638420,\t-0.684518250429127950,\t-0.684481799787322150,\t-0.684445347434311960,\t-0.684408893370188290,\t-0.684372437595042070,\t-0.684335980108965130,\t-0.684299520912048260,\t\n-0.684263060004382530,\t-0.684226597386058840,\t-0.684190133057169030,\t-0.684153667017803780,\t-0.684117199268054140,\t-0.684080729808011820,\t-0.684044258637767630,\t-0.684007785757412830,\t\n-0.683971311167038240,\t-0.683934834866735670,\t-0.683898356856595950,\t-0.683861877136710430,\t-0.683825395707169940,\t-0.683788912568066180,\t-0.683752427719490190,\t-0.683715941161533110,\t\n-0.683679452894285890,\t-0.683642962917840320,\t-0.683606471232287350,\t-0.683569977837718220,\t-0.683533482734223760,\t-0.683496985921896010,\t-0.683460487400825770,\t-0.683423987171103970,\t\n-0.683387485232822560,\t-0.683350981586072330,\t-0.683314476230944770,\t-0.683277969167530590,\t-0.683241460395921930,\t-0.683204949916209500,\t-0.683168437728484790,\t-0.683131923832838610,\t\n-0.683095408229362990,\t-0.683058890918148750,\t-0.683022371899287380,\t-0.682985851172869700,\t-0.682949328738987840,\t-0.682912804597732510,\t-0.682876278749195210,\t-0.682839751193466960,\t\n-0.682803221930639580,\t-0.682766690960804220,\t-0.682730158284051700,\t-0.682693623900474170,\t-0.682657087810162540,\t-0.682620550013208320,\t-0.682584010509702300,\t-0.682547469299736530,\t\n-0.682510926383402160,\t-0.682474381760790450,\t-0.682437835431992430,\t-0.682401287397100260,\t-0.682364737656204760,\t-0.682328186209397500,\t-0.682291633056769320,\t-0.682255078198412470,\t\n-0.682218521634417980,\t-0.682181963364877130,\t-0.682145403389881060,\t-0.682108841709521800,\t-0.682072278323890390,\t-0.682035713233078320,\t-0.681999146437176630,\t-0.681962577936277460,\t\n-0.681926007730471740,\t-0.681889435819850730,\t-0.681852862204506470,\t-0.681816286884530110,\t-0.681779709860012910,\t-0.681743131131046230,\t-0.681706550697721900,\t-0.681669968560131290,\t\n-0.681633384718365760,\t-0.681596799172516480,\t-0.681560211922675460,\t-0.681523622968933870,\t-0.681487032311383300,\t-0.681450439950114780,\t-0.681413845885220580,\t-0.681377250116791620,\t\n-0.681340652644919720,\t-0.681304053469695690,\t-0.681267452591211910,\t-0.681230850009559520,\t-0.681194245724829670,\t-0.681157639737114520,\t-0.681121032046505310,\t-0.681084422653093440,\t\n-0.681047811556970250,\t-0.681011198758227910,\t-0.680974584256957450,\t-0.680937968053250580,\t-0.680901350147198550,\t-0.680864730538893290,\t-0.680828109228426400,\t-0.680791486215889140,\t\n-0.680754861501372770,\t-0.680718235084969650,\t-0.680681606966770940,\t-0.680644977146868340,\t-0.680608345625352770,\t-0.680571712402316730,\t-0.680535077477851470,\t-0.680498440852048030,\t\n-0.680461802524998990,\t-0.680425162496795410,\t-0.680388520767528870,\t-0.680351877337290740,\t-0.680315232206173180,\t-0.680278585374267550,\t-0.680241936841665560,\t-0.680205286608458250,\t\n-0.680168634674738200,\t-0.680131981040596470,\t-0.680095325706124850,\t-0.680058668671414510,\t-0.680022009936557930,\t-0.679985349501646240,\t-0.679948687366771170,\t-0.679912023532024070,\t\n-0.679875357997497320,\t-0.679838690763282070,\t-0.679802021829470140,\t-0.679765351196152780,\t-0.679728678863422480,\t-0.679692004831370380,\t-0.679655329100087970,\t-0.679618651669667620,\t\n-0.679581972540200590,\t-0.679545291711778580,\t-0.679508609184493070,\t-0.679471924958436340,\t-0.679435239033699840,\t-0.679398551410375200,\t-0.679361862088553870,\t-0.679325171068328240,\t\n-0.679288478349789670,\t-0.679251783933029870,\t-0.679215087818140330,\t-0.679178390005213410,\t-0.679141690494340480,\t-0.679104989285613360,\t-0.679068286379123310,\t-0.679031581774963030,\t\n-0.678994875473223680,\t-0.678958167473996950,\t-0.678921457777375000,\t-0.678884746383449420,\t-0.678848033292312030,\t-0.678811318504054180,\t-0.678774602018768380,\t-0.678737883836546100,\t\n-0.678701163957479150,\t-0.678664442381658910,\t-0.678627719109177850,\t-0.678590994140127580,\t-0.678554267474599680,\t-0.678517539112685970,\t-0.678480809054478610,\t-0.678444077300069280,\t\n-0.678407343849549700,\t-0.678370608703011470,\t-0.678333871860547170,\t-0.678297133322248060,\t-0.678260393088205740,\t-0.678223651158512910,\t-0.678186907533260830,\t-0.678150162212541540,\t\n-0.678113415196446410,\t-0.678076666485068260,\t-0.678039916078498340,\t-0.678003163976828580,\t-0.677966410180150690,\t-0.677929654688557040,\t-0.677892897502139210,\t-0.677856138620989260,\t\n-0.677819378045198540,\t-0.677782615774859760,\t-0.677745851810064410,\t-0.677709086150904420,\t-0.677672318797471360,\t-0.677635549749857850,\t-0.677598779008155570,\t-0.677562006572455910,\t\n-0.677525232442851570,\t-0.677488456619434130,\t-0.677451679102295650,\t-0.677414899891527480,\t-0.677378118987222550,\t-0.677341336389472250,\t-0.677304552098368600,\t-0.677267766114003300,\t\n-0.677230978436468840,\t-0.677194189065856930,\t-0.677157398002259600,\t-0.677120605245768450,\t-0.677083810796476060,\t-0.677047014654474260,\t-0.677010216819854850,\t-0.676973417292709550,\t\n-0.676936616073131050,\t-0.676899813161210950,\t-0.676863008557041400,\t-0.676826202260713990,\t-0.676789394272321320,\t-0.676752584591955310,\t-0.676715773219707440,\t-0.676678960155670420,\t\n-0.676642145399936060,\t-0.676605328952596290,\t-0.676568510813742920,\t-0.676531690983468550,\t-0.676494869461864990,\t-0.676458046249024280,\t-0.676421221345038130,\t-0.676384394749999230,\t\n-0.676347566463999290,\t-0.676310736487130470,\t-0.676273904819484460,\t-0.676237071461154080,\t-0.676200236412231040,\t-0.676163399672807360,\t-0.676126561242974770,\t-0.676089721122826170,\t\n-0.676052879312453280,\t-0.676016035811947910,\t-0.675979190621402770,\t-0.675942343740909560,\t-0.675905495170560530,\t-0.675868644910447510,\t-0.675831792960663200,\t-0.675794939321299300,\t\n-0.675758083992448080,\t-0.675721226974201450,\t-0.675684368266651900,\t-0.675647507869891580,\t-0.675610645784012420,\t-0.675573782009106340,\t-0.675536916545266040,\t-0.675500049392583570,\t\n-0.675463180551150840,\t-0.675426310021060020,\t-0.675389437802403680,\t-0.675352563895273650,\t-0.675315688299761960,\t-0.675278811015961430,\t-0.675241932043963770,\t-0.675205051383861330,\t\n-0.675168169035745950,\t-0.675131284999710420,\t-0.675094399275846690,\t-0.675057511864247010,\t-0.675020622765003190,\t-0.674983731978208160,\t-0.674946839503953730,\t-0.674909945342332280,\t\n-0.674873049493435630,\t-0.674836151957356690,\t-0.674799252734187390,\t-0.674762351824019890,\t-0.674725449226946220,\t-0.674688544943059300,\t-0.674651638972450950,\t-0.674614731315213540,\t\n-0.674577821971438900,\t-0.674540910941220150,\t-0.674503998224649020,\t-0.674467083821817640,\t-0.674430167732818830,\t-0.674393249957744630,\t-0.674356330496687310,\t-0.674319409349738770,\t\n-0.674282486516992070,\t-0.674245561998539240,\t-0.674208635794472430,\t-0.674171707904883680,\t-0.674134778329866010,\t-0.674097847069511370,\t-0.674060914123912220,\t-0.674023979493160400,\t\n-0.673987043177348920,\t-0.673950105176569840,\t-0.673913165490915510,\t-0.673876224120477870,\t-0.673839281065350070,\t-0.673802336325624030,\t-0.673765389901391900,\t-0.673728441792746600,\t\n-0.673691491999780180,\t-0.673654540522585000,\t-0.673617587361253210,\t-0.673580632515877740,\t-0.673543675986550630,\t-0.673506717773364460,\t-0.673469757876411060,\t-0.673432796295783560,\t\n-0.673395833031574240,\t-0.673358868083875240,\t-0.673321901452778700,\t-0.673284933138377780,\t-0.673247963140764520,\t-0.673210991460031380,\t-0.673174018096270420,\t-0.673137043049574670,\t\n-0.673100066320036380,\t-0.673063087907747600,\t-0.673026107812801480,\t-0.672989126035289930,\t-0.672952142575305670,\t-0.672915157432940720,\t-0.672878170608288250,\t-0.672841182101440280,\t\n-0.672804191912489410,\t-0.672767200041527680,\t-0.672730206488648340,\t-0.672693211253943430,\t-0.672656214337505440,\t-0.672619215739426730,\t-0.672582215459800240,\t-0.672545213498718210,\t\n-0.672508209856273130,\t-0.672471204532557150,\t-0.672434197527663650,\t-0.672397188841684530,\t-0.672360178474712080,\t-0.672323166426839650,\t-0.672286152698159170,\t-0.672249137288763340,\t\n-0.672212120198744320,\t-0.672175101428195370,\t-0.672138080977208730,\t-0.672101058845876790,\t-0.672064035034291910,\t-0.672027009542547350,\t-0.671989982370735150,\t-0.671952953518948020,\t\n-0.671915922987278200,\t-0.671878890775818860,\t-0.671841856884662360,\t-0.671804821313901180,\t-0.671767784063627580,\t-0.671730745133934830,\t-0.671693704524915390,\t-0.671656662236661540,\t\n-0.671619618269265750,\t-0.671582572622821170,\t-0.671545525297420290,\t-0.671508476293155130,\t-0.671471425610119190,\t-0.671434373248404710,\t-0.671397319208104190,\t-0.671360263489310220,\t\n-0.671323206092115820,\t-0.671286147016613380,\t-0.671249086262895590,\t-0.671212023831054720,\t-0.671174959721184130,\t-0.671137893933376200,\t-0.671100826467723510,\t-0.671063757324318440,\t\n-0.671026686503254250,\t-0.670989614004623420,\t-0.670952539828518550,\t-0.670915463975031880,\t-0.670878386444257010,\t-0.670841307236286100,\t-0.670804226351211730,\t-0.670767143789126940,\t\n-0.670730059550124440,\t-0.670692973634296700,\t-0.670655886041736200,\t-0.670618796772536330,\t-0.670581705826789440,\t-0.670544613204588360,\t-0.670507518906025330,\t-0.670470422931193850,\t\n-0.670433325280186400,\t-0.670396225953095560,\t-0.670359124950013820,\t-0.670322022271034660,\t-0.670284917916250440,\t-0.670247811885753890,\t-0.670210704179637460,\t-0.670173594797994650,\t\n-0.670136483740917830,\t-0.670099371008499480,\t-0.670062256600832960,\t-0.670025140518010880,\t-0.669988022760125920,\t-0.669950903327270590,\t-0.669913782219538230,\t-0.669876659437021570,\t\n-0.669839534979813190,\t-0.669802408848005680,\t-0.669765281041692420,\t-0.669728151560965990,\t-0.669691020405919210,\t-0.669653887576644460,\t-0.669616753073235430,\t-0.669579616895784490,\t\n-0.669542479044384460,\t-0.669505339519127940,\t-0.669468198320108400,\t-0.669431055447418320,\t-0.669393910901150630,\t-0.669356764681397820,\t-0.669319616788253470,\t-0.669282467221810060,\t\n-0.669245315982160190,\t-0.669208163069397340,\t-0.669171008483613990,\t-0.669133852224903180,\t-0.669096694293357500,\t-0.669059534689070310,\t-0.669022373412134330,\t-0.668985210462642370,\t\n-0.668948045840687120,\t-0.668910879546361970,\t-0.668873711579759720,\t-0.668836541940973190,\t-0.668799370630094980,\t-0.668762197647218670,\t-0.668725022992436750,\t-0.668687846665842360,\t\n-0.668650668667528090,\t-0.668613488997587440,\t-0.668576307656112980,\t-0.668539124643197540,\t-0.668501939958934590,\t-0.668464753603416730,\t-0.668427565576736990,\t-0.668390375878988090,\t\n-0.668353184510263490,\t-0.668315991470656010,\t-0.668278796760258480,\t-0.668241600379163690,\t-0.668204402327465250,\t-0.668167202605255750,\t-0.668130001212628220,\t-0.668092798149675370,\t\n-0.668055593416490900,\t-0.668018387013167400,\t-0.667981178939797910,\t-0.667943969196475250,\t-0.667906757783292890,\t-0.667869544700343650,\t-0.667832329947720240,\t-0.667795113525516350,\t\n-0.667757895433824690,\t-0.667720675672738300,\t-0.667683454242349870,\t-0.667646231142753120,\t-0.667609006374040750,\t-0.667571779936305900,\t-0.667534551829641280,\t-0.667497322054140700,\t\n-0.667460090609896640,\t-0.667422857497002480,\t-0.667385622715550800,\t-0.667348386265635420,\t-0.667311148147349040,\t-0.667273908360784820,\t-0.667236666906035450,\t-0.667199423783194740,\t\n-0.667162178992355530,\t-0.667124932533610600,\t-0.667087684407053570,\t-0.667050434612777350,\t-0.667013183150874990,\t-0.666975930021439400,\t-0.666938675224564290,\t-0.666901418760342590,\t\n-0.666864160628867220,\t-0.666826900830231220,\t-0.666789639364528290,\t-0.666752376231851130,\t-0.666715111432293120,\t-0.666677844965947060,\t-0.666640576832906670,\t-0.666603307033264760,\t\n-0.666566035567114690,\t-0.666528762434549170,\t-0.666491487635662020,\t-0.666454211170546260,\t-0.666416933039294830,\t-0.666379653242000880,\t-0.666342371778757990,\t-0.666305088649659320,\t\n-0.666267803854797450,\t-0.666230517394266530,\t-0.666193229268159270,\t-0.666155939476568930,\t-0.666118648019588420,\t-0.666081354897311570,\t-0.666044060109831420,\t-0.666006763657240990,\t\n-0.665969465539633430,\t-0.665932165757102460,\t-0.665894864309741210,\t-0.665857561197642720,\t-0.665820256420899930,\t-0.665782949979606960,\t-0.665745641873856540,\t-0.665708332103742030,\t\n-0.665671020669356350,\t-0.665633707570793430,\t-0.665596392808146310,\t-0.665559076381507800,\t-0.665521758290971930,\t-0.665484438536631750,\t-0.665447117118580400,\t-0.665409794036910920,\t\n-0.665372469291717340,\t-0.665335142883092480,\t-0.665297814811129930,\t-0.665260485075922390,\t-0.665223153677564020,\t-0.665185820616147730,\t-0.665148485891766890,\t-0.665111149504514550,\t\n-0.665073811454484630,\t-0.665036471741770160,\t-0.664999130366464630,\t-0.664961787328660850,\t-0.664924442628452850,\t-0.664887096265933900,\t-0.664849748241196800,\t-0.664812398554335720,\t\n-0.664775047205443560,\t-0.664737694194613820,\t-0.664700339521939520,\t-0.664662983187514710,\t-0.664625625191432420,\t-0.664588265533786030,\t-0.664550904214668670,\t-0.664513541234174500,\t\n-0.664476176592396330,\t-0.664438810289427750,\t-0.664401442325361800,\t-0.664364072700292630,\t-0.664326701414313270,\t-0.664289328467517090,\t-0.664251953859997360,\t-0.664214577591847990,\t\n-0.664177199663162240,\t-0.664139820074033490,\t-0.664102438824554890,\t-0.664065055914820460,\t-0.664027671344923350,\t-0.663990285114956840,\t-0.663952897225014830,\t-0.663915507675190590,\t\n-0.663878116465577710,\t-0.663840723596269110,\t-0.663803329067359060,\t-0.663765932878940700,\t-0.663728535031107400,\t-0.663691135523952540,\t-0.663653734357570140,\t-0.663616331532053460,\t\n-0.663578927047495880,\t-0.663541520903990660,\t-0.663504113101632040,\t-0.663466703640513080,\t-0.663429292520727350,\t-0.663391879742368020,\t-0.663354465305529440,\t-0.663317049210304540,\t\n-0.663279631456786810,\t-0.663242212045070280,\t-0.663204790975248320,\t-0.663167368247414290,\t-0.663129943861661460,\t-0.663092517818084200,\t-0.663055090116775550,\t-0.663017660757829310,\t\n-0.662980229741338520,\t-0.662942797067397450,\t-0.662905362736099460,\t-0.662867926747538030,\t-0.662830489101806420,\t-0.662793049798998890,\t-0.662755608839208810,\t-0.662718166222529660,\t\n-0.662680721949054810,\t-0.662643276018878510,\t-0.662605828432093920,\t-0.662568379188794520,\t-0.662530928289074450,\t-0.662493475733027080,\t-0.662456021520746010,\t-0.662418565652324600,\t\n-0.662381108127857000,\t-0.662343648947436690,\t-0.662306188111157270,\t-0.662268725619112100,\t-0.662231261471395330,\t-0.662193795668100550,\t-0.662156328209321130,\t-0.662118859095150670,\t\n-0.662081388325683310,\t-0.662043915901012530,\t-0.662006441821232030,\t-0.661968966086434960,\t-0.661931488696715920,\t-0.661894009652168050,\t-0.661856528952885270,\t-0.661819046598960740,\t\n-0.661781562590489040,\t-0.661744076927563320,\t-0.661706589610277060,\t-0.661669100638724750,\t-0.661631610012999640,\t-0.661594117733195540,\t-0.661556623799405720,\t-0.661519128211724760,\t\n-0.661481630970246040,\t-0.661444132075063140,\t-0.661406631526269550,\t-0.661369129323959860,\t-0.661331625468227210,\t-0.661294119959165540,\t-0.661256612796868200,\t-0.661219103981429690,\t\n-0.661181593512943480,\t-0.661144081391503160,\t-0.661106567617202430,\t-0.661069052190135560,\t-0.661031535110396030,\t-0.660994016378077420,\t-0.660956495993274000,\t-0.660918973956079460,\t\n-0.660881450266587400,\t-0.660843924924891410,\t-0.660806397931085860,\t-0.660768869285264350,\t-0.660731338987520790,\t-0.660693807037948440,\t-0.660656273436641910,\t-0.660618738183694650,\t\n-0.660581201279200610,\t-0.660543662723253270,\t-0.660506122515947090,\t-0.660468580657375570,\t-0.660431037147632630,\t-0.660393491986811740,\t-0.660355945175007400,\t-0.660318396712313290,\t\n-0.660280846598822800,\t-0.660243294834630510,\t-0.660205741419830130,\t-0.660168186354515240,\t-0.660130629638779550,\t-0.660093071272717660,\t-0.660055511256423140,\t-0.660017949589989830,\t\n-0.659980386273511300,\t-0.659942821307082040,\t-0.659905254690795860,\t-0.659867686424746470,\t-0.659830116509027560,\t-0.659792544943733740,\t-0.659754971728958470,\t-0.659717396864795800,\t\n-0.659679820351339320,\t-0.659642242188683610,\t-0.659604662376922280,\t-0.659567080916149020,\t-0.659529497806458310,\t-0.659491913047943860,\t-0.659454326640699700,\t-0.659416738584819310,\t\n-0.659379148880397500,\t-0.659341557527527770,\t-0.659303964526304130,\t-0.659266369876820300,\t-0.659228773579170870,\t-0.659191175633449420,\t-0.659153576039750110,\t-0.659115974798166530,\t\n-0.659078371908793260,\t-0.659040767371724120,\t-0.659003161187053040,\t-0.658965553354873830,\t-0.658927943875280970,\t-0.658890332748368280,\t-0.658852719974229670,\t-0.658815105552959080,\t\n-0.658777489484650980,\t-0.658739871769399080,\t-0.658702252407297300,\t-0.658664631398440230,\t-0.658627008742921460,\t-0.658589384440835260,\t-0.658551758492275210,\t-0.658514130897336130,\t\n-0.658476501656111710,\t-0.658438870768696120,\t-0.658401238235182930,\t-0.658363604055666960,\t-0.658325968230242030,\t-0.658288330759002170,\t-0.658250691642041090,\t-0.658213050879453700,\t\n-0.658175408471333600,\t-0.658137764417775050,\t-0.658100118718871750,\t-0.658062471374718520,\t-0.658024822385409050,\t-0.657987171751037160,\t-0.657949519471697770,\t-0.657911865547484490,\t\n-0.657874209978491550,\t-0.657836552764812790,\t-0.657798893906543000,\t-0.657761233403776010,\t-0.657723571256605850,\t-0.657685907465126450,\t-0.657648242029432620,\t-0.657610574949618280,\t\n-0.657572906225777350,\t-0.657535235858003890,\t-0.657497563846392690,\t-0.657459890191037570,\t-0.657422214892032670,\t-0.657384537949471940,\t-0.657346859363450280,\t-0.657309179134061390,\t\n-0.657271497261399220,\t-0.657233813745558670,\t-0.657196128586633570,\t-0.657158441784718050,\t-0.657120753339906270,\t-0.657083063252292820,\t-0.657045371521971730,\t-0.657007678149037270,\t\n-0.656969983133583240,\t-0.656932286475704560,\t-0.656894588175495180,\t-0.656856888233049330,\t-0.656819186648460950,\t-0.656781483421824960,\t-0.656743778553235180,\t-0.656706072042785970,\t\n-0.656668363890571370,\t-0.656630654096686080,\t-0.656592942661224140,\t-0.656555229584279920,\t-0.656517514865947230,\t-0.656479798506321100,\t-0.656442080505495460,\t-0.656404360863564350,\t\n-0.656366639580622580,\t-0.656328916656764290,\t-0.656291192092083750,\t-0.656253465886674770,\t-0.656215738040632490,\t-0.656178008554050950,\t-0.656140277427024300,\t-0.656102544659646680,\t\n-0.656064810252013020,\t-0.656027074204217240,\t-0.655989336516353940,\t-0.655951597188516810,\t-0.655913856220801120,\t-0.655876113613300780,\t-0.655838369366110060,\t-0.655800623479323220,\t\n-0.655762875953035060,\t-0.655725126787339740,\t-0.655687375982331290,\t-0.655649623538104740,\t-0.655611869454754140,\t-0.655574113732373840,\t-0.655536356371057890,\t-0.655498597370901440,\t\n-0.655460836731998510,\t-0.655423074454443370,\t-0.655385310538330270,\t-0.655347544983754250,\t-0.655309777790809460,\t-0.655272008959590040,\t-0.655234238490190360,\t-0.655196466382705460,\t\n-0.655158692637229370,\t-0.655120917253856460,\t-0.655083140232680990,\t-0.655045361573798000,\t-0.655007581277301630,\t-0.654969799343285920,\t-0.654932015771846120,\t-0.654894230563076270,\t\n-0.654856443717070860,\t-0.654818655233923910,\t-0.654780865113730680,\t-0.654743073356585330,\t-0.654705279962582320,\t-0.654667484931815700,\t-0.654629688264380730,\t-0.654591889960371540,\t\n-0.654554090019882630,\t-0.654516288443008240,\t-0.654478485229843420,\t-0.654440680380482310,\t-0.654402873895019500,\t-0.654365065773549250,\t-0.654327256016166590,\t-0.654289444622965900,\t\n-0.654251631594041210,\t-0.654213816929487770,\t-0.654176000629399730,\t-0.654138182693871810,\t-0.654100363122998020,\t-0.654062541916873630,\t-0.654024719075593010,\t-0.653986894599250410,\t\n-0.653949068487940430,\t-0.653911240741757990,\t-0.653873411360797460,\t-0.653835580345153430,\t-0.653797747694920160,\t-0.653759913410192790,\t-0.653722077491065590,\t-0.653684239937633250,\t\n-0.653646400749990030,\t-0.653608559928231080,\t-0.653570717472450770,\t-0.653532873382743680,\t-0.653495027659203980,\t-0.653457180301927120,\t-0.653419331311007270,\t-0.653381480686538780,\t\n-0.653343628428616930,\t-0.653305774537335960,\t-0.653267919012790690,\t-0.653230061855075150,\t-0.653192203064284830,\t-0.653154342640513970,\t-0.653116480583857300,\t-0.653078616894409160,\t\n-0.653040751572264710,\t-0.653002884617518430,\t-0.652965016030264910,\t-0.652927145810598520,\t-0.652889273958614620,\t-0.652851400474407480,\t-0.652813525358071910,\t-0.652775648609702160,\t\n-0.652737770229393610,\t-0.652699890217240620,\t-0.652662008573337560,\t-0.652624125297779910,\t-0.652586240390661930,\t-0.652548353852078210,\t-0.652510465682123450,\t-0.652472575880892800,\t\n-0.652434684448480630,\t-0.652396791384981860,\t-0.652358896690490740,\t-0.652321000365102650,\t-0.652283102408912070,\t-0.652245202822013810,\t-0.652207301604502130,\t-0.652169398756472620,\t\n-0.652131494278019530,\t-0.652093588169237790,\t-0.652055680430221660,\t-0.652017771061066730,\t-0.651979860061867370,\t-0.651941947432717940,\t-0.651904033173714040,\t-0.651866117284950140,\t\n-0.651828199766520840,\t-0.651790280618520730,\t-0.651752359841045180,\t-0.651714437434188890,\t-0.651676513398046330,\t-0.651638587732712220,\t-0.651600660438282020,\t-0.651562731514850220,\t\n-0.651524800962511420,\t-0.651486868781360420,\t-0.651448934971492590,\t-0.651410999533002300,\t-0.651373062465984590,\t-0.651335123770533930,\t-0.651297183446745700,\t-0.651259241494714590,\t\n-0.651221297914535420,\t-0.651183352706302570,\t-0.651145405870111720,\t-0.651107457406057350,\t-0.651069507314233960,\t-0.651031555594737130,\t-0.650993602247661450,\t-0.650955647273101850,\t\n-0.650917690671152680,\t-0.650879732441909660,\t-0.650841772585467270,\t-0.650803811101920540,\t-0.650765847991363830,\t-0.650727883253892860,\t-0.650689916889602200,\t-0.650651948898586800,\t\n-0.650613979280941110,\t-0.650576008036760970,\t-0.650538035166140620,\t-0.650500060669175320,\t-0.650462084545959440,\t-0.650424106796588690,\t-0.650386127421157760,\t-0.650348146419761020,\t\n-0.650310163792494400,\t-0.650272179539452270,\t-0.650234193660729760,\t-0.650196206156421370,\t-0.650158217026622910,\t-0.650120226271428850,\t-0.650082233890934110,\t-0.650044239885233630,\t\n-0.650006244254422770,\t-0.649968246998596340,\t-0.649930248117849270,\t-0.649892247612276260,\t-0.649854245481973010,\t-0.649816241727034120,\t-0.649778236347554610,\t-0.649740229343629180,\t\n-0.649702220715353440,\t-0.649664210462822190,\t-0.649626198586130130,\t-0.649588185085372860,\t-0.649550169960645190,\t-0.649512153212042030,\t-0.649474134839658210,\t-0.649436114843589430,\t\n-0.649398093223930270,\t-0.649360069980775890,\t-0.649322045114220980,\t-0.649284018624361360,\t-0.649245990511291620,\t-0.649207960775106900,\t-0.649169929415902010,\t-0.649131896433772560,\t\n-0.649093861828813460,\t-0.649055825601119630,\t-0.649017787750786000,\t-0.648979748277908160,\t-0.648941707182580930,\t-0.648903664464899110,\t-0.648865620124958520,\t-0.648827574162853860,\t\n-0.648789526578680160,\t-0.648751477372532470,\t-0.648713426544506260,\t-0.648675374094696670,\t-0.648637320023198520,\t-0.648599264330106730,\t-0.648561207015517120,\t-0.648523148079524490,\t\n-0.648485087522224110,\t-0.648447025343710570,\t-0.648408961544079790,\t-0.648370896123426580,\t-0.648332829081846200,\t-0.648294760419433460,\t-0.648256690136284060,\t-0.648218618232492940,\t\n-0.648180544708155340,\t-0.648142469563365960,\t-0.648104392798220740,\t-0.648066314412814590,\t-0.648028234407242330,\t-0.647990152781599770,\t-0.647952069535981940,\t-0.647913984670483780,\t\n-0.647875898185200420,\t-0.647837810080227670,\t-0.647799720355660360,\t-0.647761629011593730,\t-0.647723536048122720,\t-0.647685441465343130,\t-0.647647345263349990,\t-0.647609247442238580,\t\n-0.647571148002103580,\t-0.647533046943041150,\t-0.647494944265145980,\t-0.647456839968513550,\t-0.647418734053238690,\t-0.647380626519417300,\t-0.647342517367144320,\t-0.647304406596514670,\t\n-0.647266294207624380,\t-0.647228180200568380,\t-0.647190064575441930,\t-0.647151947332340050,\t-0.647113828471358570,\t-0.647075707992592510,\t-0.647037585896137140,\t-0.646999462182087480,\t\n-0.646961336850539580,\t-0.646923209901588250,\t-0.646885081335328960,\t-0.646846951151856640,\t-0.646808819351267220,\t-0.646770685933655830,\t-0.646732550899117630,\t-0.646694414247747760,\t\n-0.646656275979642260,\t-0.646618136094895930,\t-0.646579994593604050,\t-0.646541851475862410,\t-0.646503706741766270,\t-0.646465560391410790,\t-0.646427412424890990,\t-0.646389262842303140,\t\n-0.646351111643742040,\t-0.646312958829303290,\t-0.646274804399081690,\t-0.646236648353173400,\t-0.646198490691673570,\t-0.646160331414677440,\t-0.646122170522280160,\t-0.646084008014577770,\t\n-0.646045843891665420,\t-0.646007678153638460,\t-0.645969510800591950,\t-0.645931341832622020,\t-0.645893171249823710,\t-0.645854999052292490,\t-0.645816825240123400,\t-0.645778649813412600,\t\n-0.645740472772255210,\t-0.645702294116746290,\t-0.645664113846981860,\t-0.645625931963057290,\t-0.645587748465067830,\t-0.645549563353108650,\t-0.645511376627275980,\t-0.645473188287664760,\t\n-0.645434998334370680,\t-0.645396806767488670,\t-0.645358613587114990,\t-0.645320418793344790,\t-0.645282222386273640,\t-0.645244024365996480,\t-0.645205824732609680,\t-0.645167623486208260,\t\n-0.645129420626887720,\t-0.645091216154743410,\t-0.645053010069871370,\t-0.645014802372366750,\t-0.644976593062324800,\t-0.644938382139841780,\t-0.644900169605012730,\t-0.644861955457933230,\t\n-0.644823739698698550,\t-0.644785522327404940,\t-0.644747303344147430,\t-0.644709082749021610,\t-0.644670860542122860,\t-0.644632636723547310,\t-0.644594411293390010,\t-0.644556184251746880,\t\n-0.644517955598712830,\t-0.644479725334384250,\t-0.644441493458856370,\t-0.644403259972224700,\t-0.644365024874584580,\t-0.644326788166032280,\t-0.644288549846662950,\t-0.644250309916571950,\t\n-0.644212068375855430,\t-0.644173825224608860,\t-0.644135580462927630,\t-0.644097334090907190,\t-0.644059086108643710,\t-0.644020836516232540,\t-0.643982585313769280,\t-0.643944332501349190,\t\n-0.643906078079068630,\t-0.643867822047022860,\t-0.643829564405307480,\t-0.643791305154017950,\t-0.643753044293250420,\t-0.643714781823100380,\t-0.643676517743663300,\t-0.643638252055034550,\t\n-0.643599984757310620,\t-0.643561715850586640,\t-0.643523445334958090,\t-0.643485173210521230,\t-0.643446899477371440,\t-0.643408624135604400,\t-0.643370347185315490,\t-0.643332068626601080,\t\n-0.643293788459556430,\t-0.643255506684277330,\t-0.643217223300859060,\t-0.643178938309398210,\t-0.643140651709989910,\t-0.643102363502729980,\t-0.643064073687713900,\t-0.643025782265037930,\t\n-0.642987489234797430,\t-0.642949194597088320,\t-0.642910898352005770,\t-0.642872600499646450,\t-0.642834301040105530,\t-0.642795999973478800,\t-0.642757697299861870,\t-0.642719393019350990,\t\n-0.642681087132041640,\t-0.642642779638029180,\t-0.642604470537410100,\t-0.642566159830279870,\t-0.642527847516734310,\t-0.642489533596868670,\t-0.642451218070779650,\t-0.642412900938562510,\t\n-0.642374582200313180,\t-0.642336261856127020,\t-0.642297939906100510,\t-0.642259616350329130,\t-0.642221291188908800,\t-0.642182964421934900,\t-0.642144636049503890,\t-0.642106306071711260,\t\n-0.642067974488652940,\t-0.642029641300424280,\t-0.641991306507121880,\t-0.641952970108841230,\t-0.641914632105677780,\t-0.641876292497728150,\t-0.641837951285087690,\t-0.641799608467852440,\t\n-0.641761264046117770,\t-0.641722918019980380,\t-0.641684570389535640,\t-0.641646221154879460,\t-0.641607870316107330,\t-0.641569517873315950,\t-0.641531163826600690,\t-0.641492808176057580,\t\n-0.641454450921782100,\t-0.641416092063870850,\t-0.641377731602419400,\t-0.641339369537523570,\t-0.641301005869278960,\t-0.641262640597782260,\t-0.641224273723128960,\t-0.641185905245414520,\t\n-0.641147535164735770,\t-0.641109163481188070,\t-0.641070790194867570,\t-0.641032415305869630,\t-0.640994038814291070,\t-0.640955660720227470,\t-0.640917281023774650,\t-0.640878899725028320,\t\n-0.640840516824085050,\t-0.640802132321040440,\t-0.640763746215990640,\t-0.640725358509031010,\t-0.640686969200258360,\t-0.640648578289768290,\t-0.640610185777656830,\t-0.640571791664019450,\t\n-0.640533395948952980,\t-0.640494998632553100,\t-0.640456599714915640,\t-0.640418199196136410,\t-0.640379797076311870,\t-0.640341393355537970,\t-0.640302988033910280,\t-0.640264581111525400,\t\n-0.640226172588479030,\t-0.640187762464867300,\t-0.640149350740785720,\t-0.640110937416331180,\t-0.640072522491599290,\t-0.640034105966686080,\t-0.639995687841687260,\t-0.639957268116699620,\t\n-0.639918846791818760,\t-0.639880423867140840,\t-0.639841999342761420,\t-0.639803573218777450,\t-0.639765145495284400,\t-0.639726716172378640,\t-0.639688285250155640,\t-0.639649852728712330,\t\n-0.639611418608144410,\t-0.639572982888547580,\t-0.639534545570018540,\t-0.639496106652653330,\t-0.639457666136547640,\t-0.639419224021797630,\t-0.639380780308499760,\t-0.639342334996749970,\t\n-0.639303888086644400,\t-0.639265439578278750,\t-0.639226989471749830,\t-0.639188537767153450,\t-0.639150084464585650,\t-0.639111629564142470,\t-0.639073173065920370,\t-0.639034714970015410,\t\n-0.638996255276523710,\t-0.638957793985540980,\t-0.638919331097164140,\t-0.638880866611488910,\t-0.638842400528611190,\t-0.638803932848627910,\t-0.638765463571634660,\t-0.638726992697727810,\t\n-0.638688520227003180,\t-0.638650046159557560,\t-0.638611570495486780,\t-0.638573093234887090,\t-0.638534614377854410,\t-0.638496133924485450,\t-0.638457651874876130,\t-0.638419168229122810,\t\n-0.638380682987321090,\t-0.638342196149568110,\t-0.638303707715959570,\t-0.638265217686591720,\t-0.638226726061560610,\t-0.638188232840962930,\t-0.638149738024894720,\t-0.638111241613451790,\t\n-0.638072743606731160,\t-0.638034244004828550,\t-0.637995742807840440,\t-0.637957240015862630,\t-0.637918735628992040,\t-0.637880229647324490,\t-0.637841722070956570,\t-0.637803212899983870,\t\n-0.637764702134503540,\t-0.637726189774611370,\t-0.637687675820403870,\t-0.637649160271976710,\t-0.637610643129427060,\t-0.637572124392850830,\t-0.637533604062344160,\t-0.637495082138003210,\t\n-0.637456558619924900,\t-0.637418033508205250,\t-0.637379506802940420,\t-0.637340978504226550,\t-0.637302448612160570,\t-0.637263917126838500,\t-0.637225384048356160,\t-0.637186849376810800,\t\n-0.637148313112298360,\t-0.637109775254915080,\t-0.637071235804757000,\t-0.637032694761921260,\t-0.636994152126503680,\t-0.636955607898600730,\t-0.636917062078308450,\t-0.636878514665723870,\t\n-0.636839965660943030,\t-0.636801415064062180,\t-0.636762862875177580,\t-0.636724309094386040,\t-0.636685753721783820,\t-0.636647196757467170,\t-0.636608638201532130,\t-0.636570078054075950,\t\n-0.636531516315194560,\t-0.636492952984983980,\t-0.636454388063541380,\t-0.636415821550962770,\t-0.636377253447344640,\t-0.636338683752783130,\t-0.636300112467375170,\t-0.636261539591216900,\t\n-0.636222965124404790,\t-0.636184389067034890,\t-0.636145811419204450,\t-0.636107232181009510,\t-0.636068651352546420,\t-0.636030068933911340,\t-0.635991484925201410,\t-0.635952899326512890,\t\n-0.635914312137942030,\t-0.635875723359584980,\t-0.635837132991539100,\t-0.635798541033900320,\t-0.635759947486764900,\t-0.635721352350229860,\t-0.635682755624391470,\t-0.635644157309346200,\t\n-0.635605557405190200,\t-0.635566955912020730,\t-0.635528352829933810,\t-0.635489748159025920,\t-0.635451141899393450,\t-0.635412534051133400,\t-0.635373924614342060,\t-0.635335313589115880,\t\n-0.635296700975551020,\t-0.635258086773744850,\t-0.635219470983793390,\t-0.635180853605793240,\t-0.635142234639840650,\t-0.635103614086032890,\t-0.635064991944465970,\t-0.635026368215236610,\t\n-0.634987742898441070,\t-0.634949115994176360,\t-0.634910487502538980,\t-0.634871857423625060,\t-0.634833225757531760,\t-0.634794592504355440,\t-0.634755957664192570,\t-0.634717321237139530,\t\n-0.634678683223293460,\t-0.634640043622750840,\t-0.634601402435607920,\t-0.634562759661961300,\t-0.634524115301908000,\t-0.634485469355544510,\t-0.634446821822967300,\t-0.634408172704272740,\t\n-0.634369521999557980,\t-0.634330869708919500,\t-0.634292215832453880,\t-0.634253560370257260,\t-0.634214903322427250,\t-0.634176244689059860,\t-0.634137584470251590,\t-0.634098922666099570,\t\n-0.634060259276700400,\t-0.634021594302150440,\t-0.633982927742546280,\t-0.633944259597985060,\t-0.633905589868563270,\t-0.633866918554377380,\t-0.633828245655523980,\t-0.633789571172100220,\t\n-0.633750895104202570,\t-0.633712217451927740,\t-0.633673538215371870,\t-0.633634857394632660,\t-0.633596174989806250,\t-0.633557491000989350,\t-0.633518805428278430,\t-0.633480118271770860,\t\n-0.633441429531562910,\t-0.633402739207751140,\t-0.633364047300432830,\t-0.633325353809704340,\t-0.633286658735662590,\t-0.633247962078403730,\t-0.633209263838025340,\t-0.633170564014623900,\t\n-0.633131862608295900,\t-0.633093159619138040,\t-0.633054455047247440,\t-0.633015748892720830,\t-0.632977041155654900,\t-0.632938331836145900,\t-0.632899620934291420,\t-0.632860908450187940,\t\n-0.632822194383932280,\t-0.632783478735620690,\t-0.632744761505350750,\t-0.632706042693218840,\t-0.632667322299321540,\t-0.632628600323756340,\t-0.632589876766619600,\t-0.632551151628008120,\t\n-0.632512424908018400,\t-0.632473696606748010,\t-0.632434966724293450,\t-0.632396235260751390,\t-0.632357502216218450,\t-0.632318767590791970,\t-0.632280031384568670,\t-0.632241293597645360,\t\n-0.632202554230118400,\t-0.632163813282085370,\t-0.632125070753642880,\t-0.632086326644887620,\t-0.632047580955916290,\t-0.632008833686826250,\t-0.631970084837714220,\t-0.631931334408676880,\t\n-0.631892582399810940,\t-0.631853828811213880,\t-0.631815073642982280,\t-0.631776316895212630,\t-0.631737558568002510,\t-0.631698798661448510,\t-0.631660037175647450,\t-0.631621274110696020,\t\n-0.631582509466691700,\t-0.631543743243731190,\t-0.631504975441911200,\t-0.631466206061328530,\t-0.631427435102080660,\t-0.631388662564264180,\t-0.631349888447976130,\t-0.631311112753312980,\t\n-0.631272335480372320,\t-0.631233556629250850,\t-0.631194776200045490,\t-0.631155994192852840,\t-0.631117210607770600,\t-0.631078425444895340,\t-0.631039638704323560,\t-0.631000850386153170,\t\n-0.630962060490480540,\t-0.630923269017402810,\t-0.630884475967016580,\t-0.630845681339419540,\t-0.630806885134708170,\t-0.630768087352979730,\t-0.630729287994330590,\t-0.630690487058858660,\t\n-0.630651684546660540,\t-0.630612880457833150,\t-0.630574074792473180,\t-0.630535267550678460,\t-0.630496458732545560,\t-0.630457648338171420,\t-0.630418836367652840,\t-0.630380022821087630,\t\n-0.630341207698572270,\t-0.630302391000203580,\t-0.630263572726079250,\t-0.630224752876295870,\t-0.630185931450950810,\t-0.630147108450140440,\t-0.630108283873962670,\t-0.630069457722514210,\t\n-0.630030629995892100,\t-0.629991800694193140,\t-0.629952969817514920,\t-0.629914137365954250,\t-0.629875303339608280,\t-0.629836467738573820,\t-0.629797630562948350,\t-0.629758791812828900,\t\n-0.629719951488312500,\t-0.629681109589495860,\t-0.629642266116476780,\t-0.629603421069352080,\t-0.629564574448218670,\t-0.629525726253173600,\t-0.629486876484314560,\t-0.629448025141738370,\t\n-0.629409172225541710,\t-0.629370317735822420,\t-0.629331461672677390,\t-0.629292604036203680,\t-0.629253744826498210,\t-0.629214884043658660,\t-0.629176021687781860,\t-0.629137157758965060,\t\n-0.629098292257304960,\t-0.629059425182899590,\t-0.629020556535845540,\t-0.628981686316240070,\t-0.628942814524180220,\t-0.628903941159763560,\t-0.628865066223087020,\t-0.628826189714247860,\t\n-0.628787311633342890,\t-0.628748431980469920,\t-0.628709550755725880,\t-0.628670667959207670,\t-0.628631783591013130,\t-0.628592897651239160,\t-0.628554010139982910,\t-0.628515121057341310,\t\n-0.628476230403412270,\t-0.628437338178292610,\t-0.628398444382079590,\t-0.628359549014870120,\t-0.628320652076762130,\t-0.628281753567852540,\t-0.628242853488238500,\t-0.628203951838017030,\t\n-0.628165048617286060,\t-0.628126143826142400,\t-0.628087237464683420,\t-0.628048329533006040,\t-0.628009420031208080,\t-0.627970508959386660,\t-0.627931596317638620,\t-0.627892682106061860,\t\n-0.627853766324753430,\t-0.627814848973810570,\t-0.627775930053330320,\t-0.627737009563410500,\t-0.627698087504148240,\t-0.627659163875640690,\t-0.627620238677984890,\t-0.627581311911278860,\t\n-0.627542383575619530,\t-0.627503453671104270,\t-0.627464522197830110,\t-0.627425589155894860,\t-0.627386654545395660,\t-0.627347718366429890,\t-0.627308780619094340,\t-0.627269841303487290,\t\n-0.627230900419705640,\t-0.627191957967846440,\t-0.627153013948007600,\t-0.627114068360286270,\t-0.627075121204779710,\t-0.627036172481585050,\t-0.626997222190800340,\t-0.626958270332522490,\t\n-0.626919316906848990,\t-0.626880361913876860,\t-0.626841405353704250,\t-0.626802447226428080,\t-0.626763487532145720,\t-0.626724526270954320,\t-0.626685563442952010,\t-0.626646599048235720,\t\n-0.626607633086903040,\t-0.626568665559050890,\t-0.626529696464777300,\t-0.626490725804179640,\t-0.626451753577355050,\t-0.626412779784400800,\t-0.626373804425414900,\t-0.626334827500494520,\t\n-0.626295849009736670,\t-0.626256868953239620,\t-0.626217887331100400,\t-0.626178904143416370,\t-0.626139919390284790,\t-0.626100933071803810,\t-0.626061945188070460,\t-0.626022955739182210,\t\n-0.625983964725236210,\t-0.625944972146330710,\t-0.625905978002562760,\t-0.625866982294029820,\t-0.625827985020829150,\t-0.625788986183058780,\t-0.625749985780816090,\t-0.625710983814198320,\t\n-0.625671980283302730,\t-0.625632975188227580,\t-0.625593968529070010,\t-0.625554960305927170,\t-0.625515950518897190,\t-0.625476939168077450,\t-0.625437926253565310,\t-0.625398911775458030,\t\n-0.625359895733853750,\t-0.625320878128849730,\t-0.625281858960543560,\t-0.625242838229032480,\t-0.625203815934414540,\t-0.625164792076787100,\t-0.625125766656247640,\t-0.625086739672893410,\t\n-0.625047711126822780,\t-0.625008681018132780,\t-0.624969649346921120,\t-0.624930616113284930,\t-0.624891581317322590,\t-0.624852544959131340,\t-0.624813507038808340,\t-0.624774467556451940,\t\n-0.624735426512159300,\t-0.624696383906028220,\t-0.624657339738155740,\t-0.624618294008640220,\t-0.624579246717579030,\t-0.624540197865069760,\t-0.624501147451209550,\t-0.624462095476096880,\t\n-0.624423041939829000,\t-0.624383986842503510,\t-0.624344930184217660,\t-0.624305871965069810,\t-0.624266812185157340,\t-0.624227750844577820,\t-0.624188687943428630,\t-0.624149623481807910,\t\n-0.624110557459813250,\t-0.624071489877542240,\t-0.624032420735092020,\t-0.623993350032561180,\t-0.623954277770046970,\t-0.623915203947646770,\t-0.623876128565458820,\t-0.623837051623580610,\t\n-0.623797973122109720,\t-0.623758893061143520,\t-0.623719811440780480,\t-0.623680728261117980,\t-0.623641643522253600,\t-0.623602557224284700,\t-0.623563469367309780,\t-0.623524379951426290,\t\n-0.623485288976731720,\t-0.623446196443323660,\t-0.623407102351300480,\t-0.623368006700759420,\t-0.623328909491798420,\t-0.623289810724514840,\t-0.623250710399007040,\t-0.623211608515372490,\t\n-0.623172505073708580,\t-0.623133400074113660,\t-0.623094293516685330,\t-0.623055185401521270,\t-0.623016075728718870,\t-0.622976964498376580,\t-0.622937851710591910,\t-0.622898737365462640,\t\n-0.622859621463086150,\t-0.622820504003561040,\t-0.622781384986984540,\t-0.622742264413454700,\t-0.622703142283068780,\t-0.622664018595925350,\t-0.622624893352121900,\t-0.622585766551756240,\t\n-0.622546638194925730,\t-0.622507508281729070,\t-0.622468376812263640,\t-0.622429243786626780,\t-0.622390109204917330,\t-0.622350973067232530,\t-0.622311835373670300,\t-0.622272696124328120,\t\n-0.622233555319304580,\t-0.622194412958697150,\t-0.622155269042603650,\t-0.622116123571121670,\t-0.622076976544349680,\t-0.622037827962385270,\t-0.621998677825326250,\t-0.621959526133270320,\t\n-0.621920372886315740,\t-0.621881218084560430,\t-0.621842061728101970,\t-0.621802903817037960,\t-0.621763744351467080,\t-0.621724583331486840,\t-0.621685420757194800,\t-0.621646256628689550,\t\n-0.621607090946068700,\t-0.621567923709430150,\t-0.621528754918871380,\t-0.621489584574490990,\t-0.621450412676386790,\t-0.621411239224656460,\t-0.621372064219397720,\t-0.621332887660709150,\t\n-0.621293709548688340,\t-0.621254529883433330,\t-0.621215348665041580,\t-0.621176165893611910,\t-0.621136981569241690,\t-0.621097795692029160,\t-0.621058608262071710,\t-0.621019419279468020,\t\n-0.620980228744315910,\t-0.620941036656713190,\t-0.620901843016757440,\t-0.620862647824547590,\t-0.620823451080181000,\t-0.620784252783755490,\t-0.620745052935369630,\t-0.620705851535121140,\t\n-0.620666648583108050,\t-0.620627444079428050,\t-0.620588238024179730,\t-0.620549030417460790,\t-0.620509821259369380,\t-0.620470610550002970,\t-0.620431398289460480,\t-0.620392184477839390,\t\n-0.620352969115237850,\t-0.620313752201753550,\t-0.620274533737485310,\t-0.620235313722530600,\t-0.620196092156987680,\t-0.620156869040954130,\t-0.620117644374528880,\t-0.620078418157809400,\t\n-0.620039190390893500,\t-0.619999961073880110,\t-0.619960730206866710,\t-0.619921497789951540,\t-0.619882263823232190,\t-0.619843028306807600,\t-0.619803791240775450,\t-0.619764552625233780,\t\n-0.619725312460280400,\t-0.619686070746014120,\t-0.619646827482532640,\t-0.619607582669934100,\t-0.619568336308316200,\t-0.619529088397777870,\t-0.619489838938416800,\t-0.619450587930331140,\t\n-0.619411335373618700,\t-0.619372081268378170,\t-0.619332825614707480,\t-0.619293568412704440,\t-0.619254309662467750,\t-0.619215049364095330,\t-0.619175787517685210,\t-0.619136524123335420,\t\n-0.619097259181144550,\t-0.619057992691210530,\t-0.619018724653631610,\t-0.618979455068505490,\t-0.618940183935931090,\t-0.618900911256006210,\t-0.618861637028829010,\t-0.618822361254497410,\t\n-0.618783083933110320,\t-0.618743805064765450,\t-0.618704524649561050,\t-0.618665242687595040,\t-0.618625959178966230,\t-0.618586674123772550,\t-0.618547387522112140,\t-0.618508099374083020,\t\n-0.618468809679783900,\t-0.618429518439312820,\t-0.618390225652767580,\t-0.618350931320247100,\t-0.618311635441849190,\t-0.618272338017672340,\t-0.618233039047814240,\t-0.618193738532373920,\t\n-0.618154436471449300,\t-0.618115132865138530,\t-0.618075827713539530,\t-0.618036521016751440,\t-0.617997212774871960,\t-0.617957902987999460,\t-0.617918591656231860,\t-0.617879278779668080,\t\n-0.617839964358406160,\t-0.617800648392544340,\t-0.617761330882180550,\t-0.617722011827413710,\t-0.617682691228341850,\t-0.617643369085063010,\t-0.617604045397675990,\t-0.617564720166278950,\t\n-0.617525393390970010,\t-0.617486065071847330,\t-0.617446735209009830,\t-0.617407403802555430,\t-0.617368070852582610,\t-0.617328736359189170,\t-0.617289400322474260,\t-0.617250062742535910,\t\n-0.617210723619472380,\t-0.617171382953381590,\t-0.617132040744362790,\t-0.617092696992513900,\t-0.617053351697933180,\t-0.617014004860718890,\t-0.616974656480969830,\t-0.616935306558784150,\t\n-0.616895955094259760,\t-0.616856602087495930,\t-0.616817247538590570,\t-0.616777891447642170,\t-0.616738533814748520,\t-0.616699174640009010,\t-0.616659813923521540,\t-0.616620451665384590,\t\n-0.616581087865696100,\t-0.616541722524555300,\t-0.616502355642060130,\t-0.616462987218309060,\t-0.616423617253400220,\t-0.616384245747432670,\t-0.616344872700504420,\t-0.616305498112714070,\t\n-0.616266121984159640,\t-0.616226744314940290,\t-0.616187365105154040,\t-0.616147984354899370,\t-0.616108602064274310,\t-0.616069218233378240,\t-0.616029832862309060,\t-0.615990445951164920,\t\n-0.615951057500044970,\t-0.615911667509047470,\t-0.615872275978270770,\t-0.615832882907813130,\t-0.615793488297773470,\t-0.615754092148250170,\t-0.615714694459341680,\t-0.615675295231146060,\t\n-0.615635894463762550,\t-0.615596492157289290,\t-0.615557088311824760,\t-0.615517682927467220,\t-0.615478276004315820,\t-0.615438867542468680,\t-0.615399457542024520,\t-0.615360046003081250,\t\n-0.615320632925738130,\t-0.615281218310093530,\t-0.615241802156245580,\t-0.615202384464293430,\t-0.615162965234335330,\t-0.615123544466469770,\t-0.615084122160795000,\t-0.615044698317410380,\t\n-0.615005272936413940,\t-0.614965846017904270,\t-0.614926417561979740,\t-0.614886987568739380,\t-0.614847556038281670,\t-0.614808122970704970,\t-0.614768688366107760,\t-0.614729252224589070,\t\n-0.614689814546247270,\t-0.614650375331180940,\t-0.614610934579488340,\t-0.614571492291268730,\t-0.614532048466620350,\t-0.614492603105641580,\t-0.614453156208431550,\t-0.614413707775088750,\t\n-0.614374257805711640,\t-0.614334806300398490,\t-0.614295353259248670,\t-0.614255898682360520,\t-0.614216442569832650,\t-0.614176984921763310,\t-0.614137525738251750,\t-0.614098065019396460,\t\n-0.614058602765296000,\t-0.614019138976048760,\t-0.613979673651753880,\t-0.613940206792509930,\t-0.613900738398415410,\t-0.613861268469568680,\t-0.613821797006069200,\t-0.613782324008015130,\t\n-0.613742849475504950,\t-0.613703373408638010,\t-0.613663895807512570,\t-0.613624416672227450,\t-0.613584936002881000,\t-0.613545453799572480,\t-0.613505970062400370,\t-0.613466484791463260,\t\n-0.613426997986859620,\t-0.613387509648688820,\t-0.613348019777049340,\t-0.613308528372039750,\t-0.613269035433758440,\t-0.613229540962304980,\t-0.613190044957777620,\t-0.613150547420275080,\t\n-0.613111048349895940,\t-0.613071547746739440,\t-0.613032045610904190,\t-0.612992541942488760,\t-0.612953036741591520,\t-0.612913530008312170,\t-0.612874021742748960,\t-0.612834511945000380,\t\n-0.612795000615165790,\t-0.612755487753343760,\t-0.612715973359633010,\t-0.612676457434131900,\t-0.612636939976940130,\t-0.612597420988155950,\t-0.612557900467878170,\t-0.612518378416205380,\t\n-0.612478854833236940,\t-0.612439329719071330,\t-0.612399803073807370,\t-0.612360274897543630,\t-0.612320745190379600,\t-0.612281213952413640,\t-0.612241681183744670,\t-0.612202146884471050,\t\n-0.612162611054692500,\t-0.612123073694507470,\t-0.612083534804014340,\t-0.612043994383312700,\t-0.612004452432501120,\t-0.611964908951678320,\t-0.611925363940942990,\t-0.611885817400394600,\t\n-0.611846269330131640,\t-0.611806719730253020,\t-0.611767168600857230,\t-0.611727615942043950,\t-0.611688061753911550,\t-0.611648506036558960,\t-0.611608948790084870,\t-0.611569390014588650,\t\n-0.611529829710169000,\t-0.611490267876924840,\t-0.611450704514954540,\t-0.611411139624357890,\t-0.611371573205233390,\t-0.611332005257679610,\t-0.611292435781796150,\t-0.611252864777681590,\t\n-0.611213292245434970,\t-0.611173718185154650,\t-0.611134142596940430,\t-0.611094565480890810,\t-0.611054986837104910,\t-0.611015406665681100,\t-0.610975824966719090,\t-0.610936241740317580,\t\n-0.610896656986575360,\t-0.610857070705591250,\t-0.610817482897464850,\t-0.610777893562294620,\t-0.610738302700179700,\t-0.610698710311218700,\t-0.610659116395511290,\t-0.610619520953156080,\t\n-0.610579923984252090,\t-0.610540325488897920,\t-0.610500725467193250,\t-0.610461123919236790,\t-0.610421520845127130,\t-0.610381916244964070,\t-0.610342310118846210,\t-0.610302702466872570,\t\n-0.610263093289141860,\t-0.610223482585753650,\t-0.610183870356806880,\t-0.610144256602400350,\t-0.610104641322632870,\t-0.610065024517604030,\t-0.610025406187412740,\t-0.609985786332157940,\t\n-0.609946164951938320,\t-0.609906542046853570,\t-0.609866917617002510,\t-0.609827291662484170,\t-0.609787664183397250,\t-0.609748035179841440,\t-0.609708404651915670,\t-0.609668772599718410,\t\n-0.609629139023349700,\t-0.609589503922908120,\t-0.609549867298492700,\t-0.609510229150202250,\t-0.609470589478136700,\t-0.609430948282394520,\t-0.609391305563075080,\t-0.609351661320277070,\t\n-0.609312015554100080,\t-0.609272368264643260,\t-0.609232719452005410,\t-0.609193069116285350,\t-0.609153417257583100,\t-0.609113763875997250,\t-0.609074108971626950,\t-0.609034452544571110,\t\n-0.608994794594929440,\t-0.608955135122800750,\t-0.608915474128283950,\t-0.608875811611478750,\t-0.608836147572484050,\t-0.608796482011398910,\t-0.608756814928322340,\t-0.608717146323354050,\t\n-0.608677476196592850,\t-0.608637804548137980,\t-0.608598131378088270,\t-0.608558456686543510,\t-0.608518780473602640,\t-0.608479102739364900,\t-0.608439423483928990,\t-0.608399742707394830,\t\n-0.608360060409861350,\t-0.608320376591427790,\t-0.608280691252192860,\t-0.608241004392256590,\t-0.608201316011717790,\t-0.608161626110675260,\t-0.608121934689229150,\t-0.608082241747478160,\t\n-0.608042547285521540,\t-0.608002851303458210,\t-0.607963153801388100,\t-0.607923454779410120,\t-0.607883754237623530,\t-0.607844052176127140,\t-0.607804348595021080,\t-0.607764643494404070,\t\n-0.607724936874375450,\t-0.607685228735034170,\t-0.607645519076480120,\t-0.607605807898812240,\t-0.607566095202130010,\t-0.607526380986532000,\t-0.607486665252118470,\t-0.607446947998988350,\t\n-0.607407229227240770,\t-0.607367508936974780,\t-0.607327787128290390,\t-0.607288063801286530,\t-0.607248338956062120,\t-0.607208612592717190,\t-0.607168884711350780,\t-0.607129155312062130,\t\n-0.607089424394950280,\t-0.607049691960115270,\t-0.607009958007655890,\t-0.606970222537671740,\t-0.606930485550261630,\t-0.606890747045525700,\t-0.606851007023562870,\t-0.606811265484472510,\t\n-0.606771522428353640,\t-0.606731777855306300,\t-0.606692031765429520,\t-0.606652284158822660,\t-0.606612535035584770,\t-0.606572784395815860,\t-0.606533032239615080,\t-0.606493278567081240,\t\n-0.606453523378314600,\t-0.606413766673414180,\t-0.606374008452479350,\t-0.606334248715609150,\t-0.606294487462903600,\t-0.606254724694461840,\t-0.606214960410383360,\t-0.606175194610767080,\t\n-0.606135427295713240,\t-0.606095658465320760,\t-0.606055888119689130,\t-0.606016116258917380,\t-0.605976342883105760,\t-0.605936567992353290,\t-0.605896791586759350,\t-0.605857013666423080,\t\n-0.605817234231444730,\t-0.605777453281923120,\t-0.605737670817957710,\t-0.605697886839648310,\t-0.605658101347094300,\t-0.605618314340395040,\t-0.605578525819649550,\t-0.605538735784958200,\t\n-0.605498944236420030,\t-0.605459151174134400,\t-0.605419356598200560,\t-0.605379560508718770,\t-0.605339762905787950,\t-0.605299963789507790,\t-0.605260163159977330,\t-0.605220361017296930,\t\n-0.605180557361565510,\t-0.605140752192882770,\t-0.605100945511347740,\t-0.605061137317060680,\t-0.605021327610120840,\t-0.604981516390627690,\t-0.604941703658680390,\t-0.604901889414379060,\t\n-0.604862073657823180,\t-0.604822256389111690,\t-0.604782437608344830,\t-0.604742617315621960,\t-0.604702795511042560,\t-0.604662972194705770,\t-0.604623147366711970,\t-0.604583321027160280,\t\n-0.604543493176150300,\t-0.604503663813781180,\t-0.604463832940153270,\t-0.604424000555365830,\t-0.604384166659518330,\t-0.604344331252710030,\t-0.604304494335041410,\t-0.604264655906611380,\t\n-0.604224815967519760,\t-0.604184974517865790,\t-0.604145131557749740,\t-0.604105287087270850,\t-0.604065441106528380,\t-0.604025593615622690,\t-0.603985744614652930,\t-0.603945894103718910,\t\n-0.603906042082919760,\t-0.603866188552355740,\t-0.603826333512126450,\t-0.603786476962331230,\t-0.603746618903069470,\t-0.603706759334441510,\t-0.603666898256546620,\t-0.603627035669484500,\t\n-0.603587171573354510,\t-0.603547305968256900,\t-0.603507438854291030,\t-0.603467570231556620,\t-0.603427700100152790,\t-0.603387828460180130,\t-0.603347955311737900,\t-0.603308080654925470,\t\n-0.603268204489843200,\t-0.603228326816590330,\t-0.603188447635266690,\t-0.603148566945971630,\t-0.603108684748805410,\t-0.603068801043867510,\t-0.603028915831257620,\t-0.602989029111075100,\t\n-0.602949140883420330,\t-0.602909251148392780,\t-0.602869359906092030,\t-0.602829467156617560,\t-0.602789572900069740,\t-0.602749677136548030,\t-0.602709779866152150,\t-0.602669881088981450,\t\n-0.602629980805136300,\t-0.602590079014716280,\t-0.602550175717820770,\t-0.602510270914550120,\t-0.602470364605003810,\t-0.602430456789281530,\t-0.602390547467482770,\t-0.602350636639708000,\t\n-0.602310724306056700,\t-0.602270810466628450,\t-0.602230895121522950,\t-0.602190978270840560,\t-0.602151059914680650,\t-0.602111140053143150,\t-0.602071218686327400,\t-0.602031295814334010,\t\n-0.601991371437262330,\t-0.601951445555212290,\t-0.601911518168283250,\t-0.601871589276575800,\t-0.601831658880189300,\t-0.601791726979223670,\t-0.601751793573778390,\t-0.601711858663954050,\t\n-0.601671922249849890,\t-0.601631984331565730,\t-0.601592044909201930,\t-0.601552103982857970,\t-0.601512161552633760,\t-0.601472217618628790,\t-0.601432272180943640,\t-0.601392325239677890,\t\n-0.601352376794931250,\t-0.601312426846803310,\t-0.601272475395394630,\t-0.601232522440804830,\t-0.601192567983133700,\t-0.601152612022480830,\t-0.601112654558946690,\t-0.601072695592630990,\t\n-0.601032735123633530,\t-0.600992773152053910,\t-0.600952809677992580,\t-0.600912844701549380,\t-0.600872878222823650,\t-0.600832910241916100,\t-0.600792940758926310,\t-0.600752969773954090,\t\n-0.600712997287099150,\t-0.600673023298462060,\t-0.600633047808142310,\t-0.600593070816240030,\t-0.600553092322854810,\t-0.600513112328087020,\t-0.600473130832036570,\t-0.600433147834803280,\t\n-0.600393163336486730,\t-0.600353177337187740,\t-0.600313189837005660,\t-0.600273200836040740,\t-0.600233210334392360,\t-0.600193218332161330,\t-0.600153224829447220,\t-0.600113229826349740,\t\n-0.600073233322969580,\t-0.600033235319406330,\t-0.599993235815759920,\t-0.599953234812130140,\t-0.599913232308617590,\t-0.599873228305321970,\t-0.599833222802343300,\t-0.599793215799781180,\t\n-0.599753207297736290,\t-0.599713197296308560,\t-0.599673185795597700,\t-0.599633172795703610,\t-0.599593158296726880,\t-0.599553142298767330,\t-0.599513124801924870,\t-0.599473105806299200,\t\n-0.599433085311991240,\t-0.599393063319100470,\t-0.599353039827727030,\t-0.599313014837970730,\t-0.599272988349932150,\t-0.599232960363711210,\t-0.599192930879407390,\t-0.599152899897121730,\t\n-0.599112867416953690,\t-0.599072833439003530,\t-0.599032797963370940,\t-0.598992760990156750,\t-0.598952722519460630,\t-0.598912682551382640,\t-0.598872641086022670,\t-0.598832598123481440,\t\n-0.598792553663858750,\t-0.598752507707254630,\t-0.598712460253768790,\t-0.598672411303502350,\t-0.598632360856554690,\t-0.598592308913026280,\t-0.598552255473016710,\t-0.598512200536626790,\t\n-0.598472144103956440,\t-0.598432086175105350,\t-0.598392026750174330,\t-0.598351965829263310,\t-0.598311903412472420,\t-0.598271839499901370,\t-0.598231774091651070,\t-0.598191707187821330,\t\n-0.598151638788512300,\t-0.598111568893823890,\t-0.598071497503856800,\t-0.598031424618711060,\t-0.597991350238486710,\t-0.597951274363283660,\t-0.597911196993202830,\t-0.597871118128343930,\t\n-0.597831037768807310,\t-0.597790955914692670,\t-0.597750872566101040,\t-0.597710787723132130,\t-0.597670701385885960,\t-0.597630613554463450,\t-0.597590524228964410,\t-0.597550433409488990,\t\n-0.597510341096137100,\t-0.597470247289009770,\t-0.597430151988206810,\t-0.597390055193828480,\t-0.597349956905974700,\t-0.597309857124746270,\t-0.597269755850243330,\t-0.597229653082565930,\t\n-0.597189548821814080,\t-0.597149443068088590,\t-0.597109335821489620,\t-0.597069227082117290,\t-0.597029116850071540,\t-0.596989005125453280,\t-0.596948891908362530,\t-0.596908777198899230,\t\n-0.596868660997164400,\t-0.596828543303257850,\t-0.596788424117279950,\t-0.596748303439330610,\t-0.596708181269510970,\t-0.596668057607920740,\t-0.596627932454660390,\t-0.596587805809829950,\t\n-0.596547677673530230,\t-0.596507548045861480,\t-0.596467416926923730,\t-0.596427284316817020,\t-0.596387150215642590,\t-0.596347014623500260,\t-0.596306877540490390,\t-0.596266738966712890,\t\n-0.596226598902269030,\t-0.596186457347258610,\t-0.596146314301782000,\t-0.596106169765939330,\t-0.596066023739831530,\t-0.596025876223558740,\t-0.595985727217220760,\t-0.595945576720918970,\t\n-0.595905424734753160,\t-0.595865271258823830,\t-0.595825116293230980,\t-0.595784959838075670,\t-0.595744801893457910,\t-0.595704642459478180,\t-0.595664481536236520,\t-0.595624319123833960,\t\n-0.595584155222370630,\t-0.595543989831947010,\t-0.595503822952662910,\t-0.595463654584619690,\t-0.595423484727917280,\t-0.595383313382656150,\t-0.595343140548936440,\t-0.595302966226859190,\t\n-0.595262790416524630,\t-0.595222613118032600,\t-0.595182434331484430,\t-0.595142254056980180,\t-0.595102072294620310,\t-0.595061889044504970,\t-0.595021704306735180,\t-0.594981518081411090,\t\n-0.594941330368633280,\t-0.594901141168501790,\t-0.594860950481117760,\t-0.594820758306581430,\t-0.594780564644993180,\t-0.594740369496453040,\t-0.594700172861062470,\t-0.594659974738921400,\t\n-0.594619775130130420,\t-0.594579574034789670,\t-0.594539371453000290,\t-0.594499167384862530,\t-0.594458961830476530,\t-0.594418754789943330,\t-0.594378546263363390,\t-0.594338336250836980,\t\n-0.594298124752464460,\t-0.594257911768346970,\t-0.594217697298584650,\t-0.594177481343278190,\t-0.594137263902527520,\t-0.594097044976434230,\t-0.594056824565098120,\t-0.594016602668620110,\t\n-0.593976379287100120,\t-0.593936154420639630,\t-0.593895928069338770,\t-0.593855700233298030,\t-0.593815470912617660,\t-0.593775240107399020,\t-0.593735007817742240,\t-0.593694774043748040,\t\n-0.593654538785516440,\t-0.593614302043148910,\t-0.593574063816745600,\t-0.593533824106406760,\t-0.593493582912233750,\t-0.593453340234326720,\t-0.593413096072786360,\t-0.593372850427712930,\t\n-0.593332603299207780,\t-0.593292354687371070,\t-0.593252104592303490,\t-0.593211853014105280,\t-0.593171599952877720,\t-0.593131345408721260,\t-0.593091089381736380,\t-0.593050831872023450,\t\n-0.593010572879683840,\t-0.592970312404817790,\t-0.592930050447525890,\t-0.592889787007908510,\t-0.592849522086067120,\t-0.592809255682101850,\t-0.592768987796113090,\t-0.592728718428202180,\t\n-0.592688447578469500,\t-0.592648175247015740,\t-0.592607901433941150,\t-0.592567626139347210,\t-0.592527349363334180,\t-0.592487071106002740,\t-0.592446791367453260,\t-0.592406510147787220,\t\n-0.592366227447104880,\t-0.592325943265506920,\t-0.592285657603093820,\t-0.592245370459966840,\t-0.592205081836226550,\t-0.592164791731973450,\t-0.592124500147308110,\t-0.592084207082331890,\t\n-0.592043912537145060,\t-0.592003616511848070,\t-0.591963319006542530,\t-0.591923020021328570,\t-0.591882719556307110,\t-0.591842417611578520,\t-0.591802114187244150,\t-0.591761809283404610,\t\n-0.591721502900160460,\t-0.591681195037612300,\t-0.591640885695861370,\t-0.591600574875008390,\t-0.591560262575153820,\t-0.591519948796398350,\t-0.591479633538843250,\t-0.591439316802589210,\t\n-0.591398998587736810,\t-0.591358678894386540,\t-0.591318357722639850,\t-0.591278035072597350,\t-0.591237710944359510,\t-0.591197385338027570,\t-0.591157058253702240,\t-0.591116729691484320,\t\n-0.591076399651474180,\t-0.591036068133773410,\t-0.590995735138482360,\t-0.590955400665702070,\t-0.590915064715532900,\t-0.590874727288076440,\t-0.590834388383433160,\t-0.590794048001703990,\t\n-0.590753706142989170,\t-0.590713362807390620,\t-0.590673017995008490,\t-0.590632671705943910,\t-0.590592323940297260,\t-0.590551974698170220,\t-0.590511623979663170,\t-0.590471271784877130,\t\n-0.590430918113912570,\t-0.590390562966870980,\t-0.590350206343853050,\t-0.590309848244959250,\t-0.590269488670291160,\t-0.590229127619949280,\t-0.590188765094034730,\t-0.590148401092647770,\t\n-0.590108035615890200,\t-0.590067668663862620,\t-0.590027300236665830,\t-0.589986930334400420,\t-0.589946558957167970,\t-0.589906186105069290,\t-0.589865811778204960,\t-0.589825435976675800,\t\n-0.589785058700583510,\t-0.589744679950028550,\t-0.589704299725111740,\t-0.589663918025933990,\t-0.589623534852596660,\t-0.589583150205200580,\t-0.589542764083846320,\t-0.589502376488635460,\t\n-0.589461987419668600,\t-0.589421596877046870,\t-0.589381204860870760,\t-0.589340811371241950,\t-0.589300416408261140,\t-0.589260019972029260,\t-0.589219622062647000,\t-0.589179222680216050,\t\n-0.589138821824837010,\t-0.589098419496610900,\t-0.589058015695638430,\t-0.589017610422021280,\t-0.588977203675860150,\t-0.588936795457255970,\t-0.588896385766309430,\t-0.588855974603122220,\t\n-0.588815561967795160,\t-0.588775147860428840,\t-0.588734732281124940,\t-0.588694315229984280,\t-0.588653896707107770,\t-0.588613476712596230,\t-0.588573055246551350,\t-0.588532632309073820,\t\n-0.588492207900264690,\t-0.588451782020224630,\t-0.588411354669055590,\t-0.588370925846858130,\t-0.588330495553733290,\t-0.588290063789781880,\t-0.588249630555105710,\t-0.588209195849805470,\t\n-0.588168759673982190,\t-0.588128322027736680,\t-0.588087882911170650,\t-0.588047442324384990,\t-0.588007000267480760,\t-0.587966556740558640,\t-0.587926111743720450,\t-0.587885665277066980,\t\n-0.587845217340699060,\t-0.587804767934718360,\t-0.587764317059225830,\t-0.587723864714322360,\t-0.587683410900109000,\t-0.587642955616687450,\t-0.587602498864158500,\t-0.587562040642623300,\t\n-0.587521580952182650,\t-0.587481119792938490,\t-0.587440657164991390,\t-0.587400193068442710,\t-0.587359727503393160,\t-0.587319260469944760,\t-0.587278791968198100,\t-0.587238321998254430,\t\n-0.587197850560214670,\t-0.587157377654180630,\t-0.587116903280253120,\t-0.587076427438533060,\t-0.587035950129122240,\t-0.586995471352121490,\t-0.586954991107632160,\t-0.586914509395754960,\t\n-0.586874026216591790,\t-0.586833541570243590,\t-0.586793055456811600,\t-0.586752567876396510,\t-0.586712078829100480,\t-0.586671588315024200,\t-0.586631096334268910,\t-0.586590602886935540,\t\n-0.586550107973126010,\t-0.586509611592941240,\t-0.586469113746482470,\t-0.586428614433850410,\t-0.586388113655147310,\t-0.586347611410473980,\t-0.586307107699931110,\t-0.586266602523620950,\t\n-0.586226095881644200,\t-0.586185587774102230,\t-0.586145078201095960,\t-0.586104567162727300,\t-0.586064054659097280,\t-0.586023540690307150,\t-0.585983025256457730,\t-0.585942508357651160,\t\n-0.585901989993988240,\t-0.585861470165570440,\t-0.585820948872498580,\t-0.585780426114874690,\t-0.585739901892799790,\t-0.585699376206375020,\t-0.585658849055701540,\t-0.585618320440881250,\t\n-0.585577790362015180,\t-0.585537258819204260,\t-0.585496725812550630,\t-0.585456191342155100,\t-0.585415655408119130,\t-0.585375118010543650,\t-0.585334579149530800,\t-0.585294038825181380,\t\n-0.585253497037596990,\t-0.585212953786878430,\t-0.585172409073127840,\t-0.585131862896446140,\t-0.585091315256934920,\t-0.585050766154694980,\t-0.585010215589828570,\t-0.584969663562436510,\t\n-0.584929110072620380,\t-0.584888555120481100,\t-0.584847998706120810,\t-0.584807440829640420,\t-0.584766881491141530,\t-0.584726320690725050,\t-0.584685758428493130,\t-0.584645194704546790,\t\n-0.584604629518987170,\t-0.584564062871916200,\t-0.584523494763435240,\t-0.584482925193645420,\t-0.584442354162648000,\t-0.584401781670545020,\t-0.584361207717437600,\t-0.584320632303427120,\t\n-0.584280055428614720,\t-0.584239477093102530,\t-0.584198897296991700,\t-0.584158316040383600,\t-0.584117733323379350,\t-0.584077149146081110,\t-0.584036563508590010,\t-0.583995976411007530,\t\n-0.583955387853434700,\t-0.583914797835973780,\t-0.583874206358725890,\t-0.583833613421792070,\t-0.583793019025274700,\t-0.583752423169274670,\t-0.583711825853893580,\t-0.583671227079232580,\t\n-0.583630626845393910,\t-0.583590025152478600,\t-0.583549422000588350,\t-0.583508817389824070,\t-0.583468211320288140,\t-0.583427603792081690,\t-0.583386994805306200,\t-0.583346384360062920,\t\n-0.583305772456453990,\t-0.583265159094580650,\t-0.583224544274544400,\t-0.583183927996446470,\t-0.583143310260389120,\t-0.583102691066473390,\t-0.583062070414800630,\t-0.583021448305472980,\t\n-0.582980824738591810,\t-0.582940199714258480,\t-0.582899573232574350,\t-0.582858945293641680,\t-0.582818315897561610,\t-0.582777685044435720,\t-0.582737052734365270,\t-0.582696418967452610,\t\n-0.582655783743798890,\t-0.582615147063505700,\t-0.582574508926674170,\t-0.582533869333406900,\t-0.582493228283804900,\t-0.582452585777969770,\t-0.582411941816002860,\t-0.582371296398006440,\t\n-0.582330649524081760,\t-0.582290001194330500,\t-0.582249351408853810,\t-0.582208700167754170,\t-0.582168047471132820,\t-0.582127393319090910,\t-0.582086737711730920,\t-0.582046080649154090,\t\n-0.582005422131462000,\t-0.581964762158756030,\t-0.581924100731138540,\t-0.581883437848710770,\t-0.581842773511574430,\t-0.581802107719830760,\t-0.581761440473582140,\t-0.581720771772930020,\t\n-0.581680101617975900,\t-0.581639430008821230,\t-0.581598756945568280,\t-0.581558082428318520,\t-0.581517406457173420,\t-0.581476729032234570,\t-0.581436050153604220,\t-0.581395369821383730,\t\n-0.581354688035674470,\t-0.581314004796578910,\t-0.581273320104198190,\t-0.581232633958634230,\t-0.581191946359988390,\t-0.581151257308363030,\t-0.581110566803859530,\t-0.581069874846579570,\t\n-0.581029181436624520,\t-0.580988486574096960,\t-0.580947790259098150,\t-0.580907092491729890,\t-0.580866393272093550,\t-0.580825692600291490,\t-0.580784990476425290,\t-0.580744286900596540,\t\n-0.580703581872906830,\t-0.580662875393458400,\t-0.580622167462352850,\t-0.580581458079691530,\t-0.580540747245576920,\t-0.580500034960110490,\t-0.580459321223393830,\t-0.580418606035528640,\t\n-0.580377889396617270,\t-0.580337171306761100,\t-0.580296451766062040,\t-0.580255730774621560,\t-0.580215008332542030,\t-0.580174284439925030,\t-0.580133559096872250,\t-0.580092832303485300,\t\n-0.580052104059866620,\t-0.580011374366117600,\t-0.579970643222340150,\t-0.579929910628635860,\t-0.579889176585107080,\t-0.579848441091855290,\t-0.579807704148982080,\t-0.579766965756590040,\t\n-0.579726225914780510,\t-0.579685484623655430,\t-0.579644741883316270,\t-0.579603997693865610,\t-0.579563252055405040,\t-0.579522504968036260,\t-0.579481756431860840,\t-0.579441006446981490,\t\n-0.579400255013499570,\t-0.579359502131516990,\t-0.579318747801135240,\t-0.579277992022457110,\t-0.579237234795583980,\t-0.579196476120617640,\t-0.579155715997659910,\t-0.579114954426813160,\t\n-0.579074191408178950,\t-0.579033426941859440,\t-0.578992661027955880,\t-0.578951893666571070,\t-0.578911124857806490,\t-0.578870354601763730,\t-0.578829582898545470,\t-0.578788809748253310,\t\n-0.578748035150989050,\t-0.578707259106854390,\t-0.578666481615951910,\t-0.578625702678383200,\t-0.578584922294250290,\t-0.578544140463654770,\t-0.578503357186699100,\t-0.578462572463485200,\t\n-0.578421786294114780,\t-0.578380998678689530,\t-0.578340209617312140,\t-0.578299419110084310,\t-0.578258627157107850,\t-0.578217833758484460,\t-0.578177038914316820,\t-0.578136242624706640,\t\n-0.578095444889755510,\t-0.578054645709566110,\t-0.578013845084240030,\t-0.577973043013879420,\t-0.577932239498585850,\t-0.577891434538462030,\t-0.577850628133609550,\t-0.577809820284130530,\t\n-0.577769010990126670,\t-0.577728200251700570,\t-0.577687388068954030,\t-0.577646574441988970,\t-0.577605759370907080,\t-0.577564942855811280,\t-0.577524124896803050,\t-0.577483305493984410,\t\n-0.577442484647457290,\t-0.577401662357324260,\t-0.577360838623687030,\t-0.577320013446647410,\t-0.577279186826308190,\t-0.577238358762770850,\t-0.577197529256137650,\t-0.577156698306510400,\t\n-0.577115865913991670,\t-0.577075032078683270,\t-0.577034196800687240,\t-0.576993360080105380,\t-0.576952521917040500,\t-0.576911682311594290,\t-0.576870841263869010,\t-0.576829998773966120,\t\n-0.576789154841988560,\t-0.576748309468038230,\t-0.576707462652217060,\t-0.576666614394626960,\t-0.576625764695370640,\t-0.576584913554549880,\t-0.576544060972266850,\t-0.576503206948623340,\t\n-0.576462351483722050,\t-0.576421494577665010,\t-0.576380636230553800,\t-0.576339776442491460,\t-0.576298915213579570,\t-0.576258052543920480,\t-0.576217188433615800,\t-0.576176322882768540,\t\n-0.576135455891480520,\t-0.576094587459853870,\t-0.576053717587990290,\t-0.576012846275992920,\t-0.575971973523963340,\t-0.575931099332003820,\t-0.575890223700216250,\t-0.575849346628703460,\t\n-0.575808468117567250,\t-0.575767588166909980,\t-0.575726706776833240,\t-0.575685823947440170,\t-0.575644939678832570,\t-0.575604053971112250,\t-0.575563166824382130,\t-0.575522278238744130,\t\n-0.575481388214300390,\t-0.575440496751152830,\t-0.575399603849404360,\t-0.575358709509156910,\t-0.575317813730512720,\t-0.575276916513573600,\t-0.575236017858442470,\t-0.575195117765221480,\t\n-0.575154216234012530,\t-0.575113313264917770,\t-0.575072408858040010,\t-0.575031503013481270,\t-0.574990595731343810,\t-0.574949687011729440,\t-0.574908776854741290,\t-0.574867865260481170,\t\n-0.574826952229051000,\t-0.574786037760553810,\t-0.574745121855091520,\t-0.574704204512766490,\t-0.574663285733680530,\t-0.574622365517936660,\t-0.574581443865637030,\t-0.574540520776883670,\t\n-0.574499596251778710,\t-0.574458670290425080,\t-0.574417742892924800,\t-0.574376814059380130,\t-0.574335883789893090,\t-0.574294952084566710,\t-0.574254018943502920,\t-0.574213084366804070,\t\n-0.574172148354572200,\t-0.574131210906910330,\t-0.574090272023920380,\t-0.574049331705704380,\t-0.574008389952365470,\t-0.573967446764005460,\t-0.573926502140726940,\t-0.573885556082631810,\t\n-0.573844608589823110,\t-0.573803659662402990,\t-0.573762709300473570,\t-0.573721757504137120,\t-0.573680804273496660,\t-0.573639849608654110,\t-0.573598893509711940,\t-0.573557935976772180,\t\n-0.573516977009937980,\t-0.573476016609311360,\t-0.573435054774994680,\t-0.573394091507089980,\t-0.573353126805700390,\t-0.573312160670928050,\t-0.573271193102875220,\t-0.573230224101644040,\t\n-0.573189253667337750,\t-0.573148281800058280,\t-0.573107308499907760,\t-0.573066333766989340,\t-0.573025357601405050,\t-0.572984380003257350,\t-0.572943400972648400,\t-0.572902420509681320,\t\n-0.572861438614458150,\t-0.572820455287081360,\t-0.572779470527653100,\t-0.572738484336276500,\t-0.572697496713053810,\t-0.572656507658087180,\t-0.572615517171479070,\t-0.572574525253332520,\t\n-0.572533531903749560,\t-0.572492537122832880,\t-0.572451540910684400,\t-0.572410543267407480,\t-0.572369544193104150,\t-0.572328543687876670,\t-0.572287541751828170,\t-0.572246538385060790,\t\n-0.572205533587677120,\t-0.572164527359779180,\t-0.572123519701470350,\t-0.572082510612852760,\t-0.572041500094028770,\t-0.572000488145100740,\t-0.571959474766171820,\t-0.571918459957344250,\t\n-0.571877443718720510,\t-0.571836426050402750,\t-0.571795406952494420,\t-0.571754386425097460,\t-0.571713364468314560,\t-0.571672341082247960,\t-0.571631316267000700,\t-0.571590290022675250,\t\n-0.571549262349373750,\t-0.571508233247199460,\t-0.571467202716254510,\t-0.571426170756641590,\t-0.571385137368462860,\t-0.571344102551821780,\t-0.571303066306820260,\t-0.571262028633561130,\t\n-0.571220989532146620,\t-0.571179949002679990,\t-0.571138907045263490,\t-0.571097863659999700,\t-0.571056818846990890,\t-0.571015772606340290,\t-0.570974724938150380,\t-0.570933675842523640,\t\n-0.570892625319562420,\t-0.570851573369369870,\t-0.570810519992048460,\t-0.570769465187700780,\t-0.570728408956428960,\t-0.570687351298336590,\t-0.570646292213525810,\t-0.570605231702098870,\t\n-0.570564169764159250,\t-0.570523106399809300,\t-0.570482041609151500,\t-0.570440975392288220,\t-0.570399907749322920,\t-0.570358838680357750,\t-0.570317768185495620,\t-0.570276696264838680,\t\n-0.570235622918490280,\t-0.570194548146552900,\t-0.570153471949129020,\t-0.570112394326321210,\t-0.570071315278232850,\t-0.570030234804966060,\t-0.569989152906623770,\t-0.569948069583308130,\t\n-0.569906984835122810,\t-0.569865898662169970,\t-0.569824811064551960,\t-0.569783722042372380,\t-0.569742631595733460,\t-0.569701539724738030,\t-0.569660446429488320,\t-0.569619351710087820,\t\n-0.569578255566638990,\t-0.569537157999244540,\t-0.569496059008006710,\t-0.569454958593029190,\t-0.569413856754414250,\t-0.569372753492264790,\t-0.569331648806682970,\t-0.569290542697772350,\t\n-0.569249435165635420,\t-0.569208326210374980,\t-0.569167215832093290,\t-0.569126104030893920,\t-0.569084990806879240,\t-0.569043876160151840,\t-0.569002760090814960,\t-0.568961642598971310,\t\n-0.568920523684723570,\t-0.568879403348174110,\t-0.568838281589426400,\t-0.568797158408583140,\t-0.568756033805746910,\t-0.568714907781020300,\t-0.568673780334506660,\t-0.568632651466308700,\t\n-0.568591521176529000,\t-0.568550389465270260,\t-0.568509256332635830,\t-0.568468121778728190,\t-0.568426985803650360,\t-0.568385848407504720,\t-0.568344709590394740,\t-0.568303569352422990,\t\n-0.568262427693692400,\t-0.568221284614305320,\t-0.568180140114365350,\t-0.568138994193975070,\t-0.568097846853236940,\t-0.568056698092254560,\t-0.568015547911130400,\t-0.567974396309967490,\t\n-0.567933243288868070,\t-0.567892088847935960,\t-0.567850932987273740,\t-0.567809775706984100,\t-0.567768617007169630,\t-0.567727456887934020,\t-0.567686295349379750,\t-0.567645132391609740,\t\n-0.567603968014726460,\t-0.567562802218833710,\t-0.567521635004033960,\t-0.567480466370430150,\t-0.567439296318124730,\t-0.567398124847221520,\t-0.567356951957822990,\t-0.567315777650031610,\t\n-0.567274601923951180,\t-0.567233424779684300,\t-0.567192246217333880,\t-0.567151066237002400,\t-0.567109884838793650,\t-0.567068702022810230,\t-0.567027517789155060,\t-0.566986332137930700,\t\n-0.566945145069240870,\t-0.566903956583188150,\t-0.566862766679875560,\t-0.566821575359405690,\t-0.566780382621882240,\t-0.566739188467407900,\t-0.566697992896085580,\t-0.566656795908017760,\t\n-0.566615597503308480,\t-0.566574397682060190,\t-0.566533196444375500,\t-0.566491993790358190,\t-0.566450789720110870,\t-0.566409584233736550,\t-0.566368377331337940,\t-0.566327169013018830,\t\n-0.566285959278881700,\t-0.566244748129029700,\t-0.566203535563565510,\t-0.566162321582592830,\t-0.566121106186214250,\t-0.566079889374533020,\t-0.566038671147651610,\t-0.565997451505673930,\t\n-0.565956230448702690,\t-0.565915007976840800,\t-0.565873784090191070,\t-0.565832558788857190,\t-0.565791332072941970,\t-0.565750103942547990,\t-0.565708874397779170,\t-0.565667643438738100,\t\n-0.565626411065527910,\t-0.565585177278251420,\t-0.565543942077012310,\t-0.565502705461913390,\t-0.565461467433057590,\t-0.565420227990547920,\t-0.565378987134487860,\t-0.565337744864980450,\t\n-0.565296501182128710,\t-0.565255256086035330,\t-0.565214009576804120,\t-0.565172761654537890,\t-0.565131512319339780,\t-0.565090261571312480,\t-0.565049009410559910,\t-0.565007755837184880,\t\n-0.564966500851290410,\t-0.564925244452979310,\t-0.564883986642355510,\t-0.564842727419521680,\t-0.564801466784580760,\t-0.564760204737636550,\t-0.564718941278791740,\t-0.564677676408149590,\t\n-0.564636410125812890,\t-0.564595142431885580,\t-0.564553873326470330,\t-0.564512602809670420,\t-0.564471330881588630,\t-0.564430057542328890,\t-0.564388782791994110,\t-0.564347506630687220,\t\n-0.564306229058511240,\t-0.564264950075570090,\t-0.564223669681966580,\t-0.564182387877803840,\t-0.564141104663184790,\t-0.564099820038213350,\t-0.564058534002992330,\t-0.564017246557624640,\t\n-0.563975957702214200,\t-0.563934667436863930,\t-0.563893375761676860,\t-0.563852082676756130,\t-0.563810788182205420,\t-0.563769492278127780,\t-0.563728194964626450,\t-0.563686896241804240,\t\n-0.563645596109765170,\t-0.563604294568612050,\t-0.563562991618448250,\t-0.563521687259376680,\t-0.563480381491501150,\t-0.563439074314924680,\t-0.563397765729750530,\t-0.563356455736081620,\t\n-0.563315144334021860,\t-0.563273831523674380,\t-0.563232517305141790,\t-0.563191201678528430,\t-0.563149884643937000,\t-0.563108566201470870,\t-0.563067246351232950,\t-0.563025925093327270,\t\n-0.562984602427856750,\t-0.562943278354924750,\t-0.562901952874634180,\t-0.562860625987089190,\t-0.562819297692392470,\t-0.562777967990647610,\t-0.562736636881957520,\t-0.562695304366426120,\t\n-0.562653970444156440,\t-0.562612635115251840,\t-0.562571298379815340,\t-0.562529960237950880,\t-0.562488620689761580,\t-0.562447279735350690,\t-0.562405937374821360,\t-0.562364593608277400,\t\n-0.562323248435822040,\t-0.562281901857558110,\t-0.562240553873589840,\t-0.562199204484020280,\t-0.562157853688952550,\t-0.562116501488489910,\t-0.562075147882736380,\t-0.562033792871795000,\t\n-0.561992436455769130,\t-0.561951078634761680,\t-0.561909719408877020,\t-0.561868358778218060,\t-0.561826996742888160,\t-0.561785633302990470,\t-0.561744268458629010,\t-0.561702902209906820,\t\n-0.561661534556927470,\t-0.561620165499793880,\t-0.561578795038610300,\t-0.561537423173479660,\t-0.561496049904505080,\t-0.561454675231790820,\t-0.561413299155439800,\t-0.561371921675555610,\t\n-0.561330542792241150,\t-0.561289162505600790,\t-0.561247780815737450,\t-0.561206397722754710,\t-0.561165013226755600,\t-0.561123627327844380,\t-0.561082240026124060,\t-0.561040851321698120,\t\n-0.560999461214669590,\t-0.560958069705142950,\t-0.560916676793220990,\t-0.560875282479007420,\t-0.560833886762605260,\t-0.560792489644118760,\t-0.560751091123650960,\t-0.560709691201305200,\t\n-0.560668289877185530,\t-0.560626887151395080,\t-0.560585483024037430,\t-0.560544077495215730,\t-0.560502670565034220,\t-0.560461262233595940,\t-0.560419852501004570,\t-0.560378441367363260,\t\n-0.560337028832776140,\t-0.560295614897346470,\t-0.560254199561177720,\t-0.560212782824373150,\t-0.560171364687036990,\t-0.560129945149272390,\t-0.560088524211182940,\t-0.560047101872871880,\t\n-0.560005678134443350,\t-0.559964252996000610,\t-0.559922826457647020,\t-0.559881398519486590,\t-0.559839969181622710,\t-0.559798538444158830,\t-0.559757106307198330,\t-0.559715672770845440,\t\n-0.559674237835203310,\t-0.559632801500375530,\t-0.559591363766465570,\t-0.559549924633577440,\t-0.559508484101814420,\t-0.559467042171280290,\t-0.559425598842078210,\t-0.559384154114312530,\t\n-0.559342707988086390,\t-0.559301260463503480,\t-0.559259811540667060,\t-0.559218361219681490,\t-0.559176909500650020,\t-0.559135456383676230,\t-0.559094001868863490,\t-0.559052545956316150,\t\n-0.559011088646137360,\t-0.558969629938430470,\t-0.558928169833299960,\t-0.558886708330848970,\t-0.558845245431181190,\t-0.558803781134399990,\t-0.558762315440609610,\t-0.558720848349913530,\t\n-0.558679379862415340,\t-0.558637909978218270,\t-0.558596438697426810,\t-0.558554966020144320,\t-0.558513491946474370,\t-0.558472016476520230,\t-0.558430539610386580,\t-0.558389061348176450,\t\n-0.558347581689993770,\t-0.558306100635941660,\t-0.558264618186124720,\t-0.558223134340646300,\t-0.558181649099609540,\t-0.558140162463119150,\t-0.558098674431278250,\t-0.558057185004190770,\t\n-0.558015694181959840,\t-0.557974201964690160,\t-0.557932708352484990,\t-0.557891213345447890,\t-0.557849716943682570,\t-0.557808219147293170,\t-0.557766719956383270,\t-0.557725219371056680,\t\n-0.557683717391416530,\t-0.557642214017567530,\t-0.557600709249613020,\t-0.557559203087656610,\t-0.557517695531801970,\t-0.557476186582153370,\t-0.557434676238814380,\t-0.557393164501888250,\t\n-0.557351651371479570,\t-0.557310136847691820,\t-0.557268620930628680,\t-0.557227103620393740,\t-0.557185584917091250,\t-0.557144064820824900,\t-0.557102543331698400,\t-0.557061020449815090,\t\n-0.557019496175279680,\t-0.556977970508195420,\t-0.556936443448666330,\t-0.556894914996795660,\t-0.556853385152688230,\t-0.556811853916447270,\t-0.556770321288176610,\t-0.556728787267979810,\t\n-0.556687251855961460,\t-0.556645715052224930,\t-0.556604176856874130,\t-0.556562637270012540,\t-0.556521096291744730,\t-0.556479553922174070,\t-0.556438010161404260,\t-0.556396465009539760,\t\n-0.556354918466684170,\t-0.556313370532941280,\t-0.556271821208414450,\t-0.556230270493208610,\t-0.556188718387427010,\t-0.556147164891173550,\t-0.556105610004551940,\t-0.556064053727666540,\t\n-0.556022496060621150,\t-0.555980937003519360,\t-0.555939376556464970,\t-0.555897814719562570,\t-0.555856251492915510,\t-0.555814686876627830,\t-0.555773120870803110,\t-0.555731553475545930,\t\n-0.555689984690959870,\t-0.555648414517148530,\t-0.555606842954216470,\t-0.555565270002267300,\t-0.555523695661404910,\t-0.555482119931733020,\t-0.555440542813356200,\t-0.555398964306377920,\t\n-0.555357384410902320,\t-0.555315803127032770,\t-0.555274220454874180,\t-0.555232636394530020,\t-0.555191050946104330,\t-0.555149464109700560,\t-0.555107875885423540,\t-0.555066286273376840,\t\n-0.555024695273664380,\t-0.554983102886389860,\t-0.554941509111657850,\t-0.554899913949572170,\t-0.554858317400236280,\t-0.554816719463754990,\t-0.554775120140231890,\t-0.554733519429771120,\t\n-0.554691917332476030,\t-0.554650313848451540,\t-0.554608708977801230,\t-0.554567102720629260,\t-0.554525495077039080,\t-0.554483886047135610,\t-0.554442275631022330,\t-0.554400663828803380,\t\n-0.554359050640582440,\t-0.554317436066464220,\t-0.554275820106552410,\t-0.554234202760951030,\t-0.554192584029763790,\t-0.554150963913095480,\t-0.554109342411049810,\t-0.554067719523730350,\t\n-0.554026095251241910,\t-0.553984469593688300,\t-0.553942842551173540,\t-0.553901214123801220,\t-0.553859584311676370,\t-0.553817953114902450,\t-0.553776320533583610,\t-0.553734686567823650,\t\n-0.553693051217727380,\t-0.553651414483398500,\t-0.553609776364941020,\t-0.553568136862458760,\t-0.553526495976056520,\t-0.553484853705838000,\t-0.553443210051907440,\t-0.553401565014368440,\t\n-0.553359918593325780,\t-0.553318270788883520,\t-0.553276621601145440,\t-0.553234971030215460,\t-0.553193319076198510,\t-0.553151665739198160,\t-0.553110011019318340,\t-0.553068354916663840,\t\n-0.553026697431338480,\t-0.552985038563446380,\t-0.552943378313091260,\t-0.552901716680378130,\t-0.552860053665410580,\t-0.552818389268293080,\t-0.552776723489129100,\t-0.552735056328023780,\t\n-0.552693387785080700,\t-0.552651717860404230,\t-0.552610046554098070,\t-0.552568373866267230,\t-0.552526699797015410,\t-0.552485024346446750,\t-0.552443347514665280,\t-0.552401669301775810,\t\n-0.552359989707882140,\t-0.552318308733088070,\t-0.552276626377498640,\t-0.552234942641217640,\t-0.552193257524349330,\t-0.552151571026997410,\t-0.552109883149267010,\t-0.552068193891261830,\t\n-0.552026503253086220,\t-0.551984811234844000,\t-0.551943117836640180,\t-0.551901423058578480,\t-0.551859726900763240,\t-0.551818029363298270,\t-0.551776330446288600,\t-0.551734630149838150,\t\n-0.551692928474051160,\t-0.551651225419031330,\t-0.551609520984883920,\t-0.551567815171712720,\t-0.551526107979621650,\t-0.551484399408715520,\t-0.551442689459098580,\t-0.551400978130874740,\t\n-0.551359265424148260,\t-0.551317551339023830,\t-0.551275835875605580,\t-0.551234119033997770,\t-0.551192400814304320,\t-0.551150681216630130,\t-0.551108960241079360,\t-0.551067237887756130,\t\n-0.551025514156764370,\t-0.550983789048209330,\t-0.550942062562194690,\t-0.550900334698824930,\t-0.550858605458203980,\t-0.550816874840436950,\t-0.550775142845627670,\t-0.550733409473880500,\t\n-0.550691674725299450,\t-0.550649938599989670,\t-0.550608201098054970,\t-0.550566462219599370,\t-0.550524721964728010,\t-0.550482980333544920,\t-0.550441237326154240,\t-0.550399492942660220,\t\n-0.550357747183167770,\t-0.550316000047781030,\t-0.550274251536604250,\t-0.550232501649741360,\t-0.550190750387297700,\t-0.550148997749377200,\t-0.550107243736084110,\t-0.550065488347522560,\t\n-0.550023731583797690,\t-0.549981973445013540,\t-0.549940213931274350,\t-0.549898453042684370,\t-0.549856690779348510,\t-0.549814927141371030,\t-0.549773162128855740,\t-0.549731395741907990,\t\n-0.549689627980631810,\t-0.549647858845131450,\t-0.549606088335511170,\t-0.549564316451875980,\t-0.549522543194330030,\t-0.549480768562977670,\t-0.549438992557923060,\t-0.549397215179271310,\t\n-0.549355436427126590,\t-0.549313656301593120,\t-0.549271874802775280,\t-0.549230091930778100,\t-0.549188307685705700,\t-0.549146522067662460,\t-0.549104735076752610,\t-0.549062946713081310,\t\n-0.549021156976752580,\t-0.548979365867870660,\t-0.548937573386540700,\t-0.548895779532866720,\t-0.548853984306953310,\t-0.548812187708904610,\t-0.548770389738825860,\t-0.548728590396820980,\t\n-0.548686789682994780,\t-0.548644987597451170,\t-0.548603184140295410,\t-0.548561379311631850,\t-0.548519573111564630,\t-0.548477765540198230,\t-0.548435956597637770,\t-0.548394146283987420,\t\n-0.548352334599351730,\t-0.548310521543834860,\t-0.548268707117541940,\t-0.548226891320577340,\t-0.548185074153045070,\t-0.548143255615050620,\t-0.548101435706697890,\t-0.548059614428091590,\t\n-0.548017791779335960,\t-0.547975967760536140,\t-0.547934142371796500,\t-0.547892315613221380,\t-0.547850487484915270,\t-0.547808657986983190,\t-0.547766827119529510,\t-0.547724994882658690,\t\n-0.547683161276475090,\t-0.547641326301083860,\t-0.547599489956589470,\t-0.547557652243096270,\t-0.547515813160708520,\t-0.547473972709531690,\t-0.547432130889669800,\t-0.547390287701227770,\t\n-0.547348443144309530,\t-0.547306597219020530,\t-0.547264749925465140,\t-0.547222901263747400,\t-0.547181051233972870,\t-0.547139199836245700,\t-0.547097347070670480,\t-0.547055492937351560,\t\n-0.547013637436394200,\t-0.546971780567902850,\t-0.546929922331982010,\t-0.546888062728736020,\t-0.546846201758270150,\t-0.546804339420688850,\t-0.546762475716096710,\t-0.546720610644597980,\t\n-0.546678744206298140,\t-0.546636876401301430,\t-0.546595007229712440,\t-0.546553136691635630,\t-0.546511264787176380,\t-0.546469391516438920,\t-0.546427516879527620,\t-0.546385640876547950,\t\n-0.546343763507604050,\t-0.546301884772800840,\t-0.546260004672242560,\t-0.546218123206034580,\t-0.546176240374281360,\t-0.546134356177087500,\t-0.546092470614557350,\t-0.546050583686796490,\t\n-0.546008695393909060,\t-0.545966805735999980,\t-0.545924914713173500,\t-0.545883022325535090,\t-0.545841128573189120,\t-0.545799233456240260,\t-0.545757336974793010,\t-0.545715439128952820,\t\n-0.545673539918823950,\t-0.545631639344510980,\t-0.545589737406119160,\t-0.545547834103753070,\t-0.545505929437517410,\t-0.545464023407516540,\t-0.545422116013855930,\t-0.545380207256640050,\t\n-0.545338297135973700,\t-0.545296385651961150,\t-0.545254472804708070,\t-0.545212558594318830,\t-0.545170643020898130,\t-0.545128726084550430,\t-0.545086807785381430,\t-0.545044888123495270,\t\n-0.545002967098996980,\t-0.544961044711990810,\t-0.544919120962582440,\t-0.544877195850876350,\t-0.544835269376977130,\t-0.544793341540989460,\t-0.544751412343018830,\t-0.544709481783169580,\t\n-0.544667549861546310,\t-0.544625616578254480,\t-0.544583681933398680,\t-0.544541745927083600,\t-0.544499808559413930,\t-0.544457869830494930,\t-0.544415929740431400,\t-0.544373988289327930,\t\n-0.544332045477289190,\t-0.544290101304420680,\t-0.544248155770826970,\t-0.544206208876612750,\t-0.544164260621882720,\t-0.544122311006742470,\t-0.544080360031296340,\t-0.544038407695649370,\t\n-0.543996453999906040,\t-0.543954498944171800,\t-0.543912542528551480,\t-0.543870584753149310,\t-0.543828625618071100,\t-0.543786665123421330,\t-0.543744703269304910,\t-0.543702740055826310,\t\n-0.543660775483091330,\t-0.543618809551204340,\t-0.543576842260270250,\t-0.543534873610393770,\t-0.543492903601680570,\t-0.543450932234235020,\t-0.543408959508162040,\t-0.543366985423566430,\t\n-0.543325009980553660,\t-0.543283033179228440,\t-0.543241055019695550,\t-0.543199075502059700,\t-0.543157094626426470,\t-0.543115112392900560,\t-0.543073128801586540,\t-0.543031143852589990,\t\n-0.542989157546015620,\t-0.542947169881968340,\t-0.542905180860552840,\t-0.542863190481874590,\t-0.542821198746038510,\t-0.542779205653149410,\t-0.542737211203311860,\t-0.542695215396631790,\t\n-0.542653218233213550,\t-0.542611219713162280,\t-0.542569219836582570,\t-0.542527218603580330,\t-0.542485216014259920,\t-0.542443212068726480,\t-0.542401206767084590,\t-0.542359200109440160,\t\n-0.542317192095897680,\t-0.542275182726561830,\t-0.542233172001538420,\t-0.542191159920932140,\t-0.542149146484847800,\t-0.542107131693390420,\t-0.542065115546665480,\t-0.542023098044777660,\t\n-0.541981079187832230,\t-0.541939058975933750,\t-0.541897037409187930,\t-0.541855014487699460,\t-0.541812990211573590,\t-0.541770964580914780,\t-0.541728937595828960,\t-0.541686909256420710,\t\n-0.541644879562795280,\t-0.541602848515057240,\t-0.541560816113312530,\t-0.541518782357665710,\t-0.541476747248221920,\t-0.541434710785085980,\t-0.541392672968363580,\t-0.541350633798159400,\t\n-0.541308593274578360,\t-0.541266551397726280,\t-0.541224508167707730,\t-0.541182463584627960,\t-0.541140417648591550,\t-0.541098370359704540,\t-0.541056321718071610,\t-0.541014271723797900,\t\n-0.540972220376988110,\t-0.540930167677748150,\t-0.540888113626182720,\t-0.540846058222397060,\t-0.540804001466495880,\t-0.540761943358585070,\t-0.540719883898769460,\t-0.540677823087154060,\t\n-0.540635760923843690,\t-0.540593697408944360,\t-0.540551632542560780,\t-0.540509566324797740,\t-0.540467498755761170,\t-0.540425429835555860,\t-0.540383359564286960,\t-0.540341287942059270,\t\n-0.540299214968978700,\t-0.540257140645150180,\t-0.540215064970678730,\t-0.540172987945669260,\t-0.540130909570227800,\t-0.540088829844458940,\t-0.540046748768468030,\t-0.540004666342359880,\t\n-0.539962582566240520,\t-0.539920497440214640,\t-0.539878410964387490,\t-0.539836323138863980,\t-0.539794233963749930,\t-0.539752143439150460,\t-0.539710051565170160,\t-0.539667958341915170,\t\n-0.539625863769490180,\t-0.539583767848000550,\t-0.539541670577551200,\t-0.539499571958248050,\t-0.539457471990195890,\t-0.539415370673500090,\t-0.539373268008265570,\t-0.539331163994598130,\t\n-0.539289058632602790,\t-0.539246951922384920,\t-0.539204843864049210,\t-0.539162734457701800,\t-0.539120623703447490,\t-0.539078511601391640,\t-0.539036398151639170,\t-0.538994283354296110,\t\n-0.538952167209467260,\t-0.538910049717258090,\t-0.538867930877773290,\t-0.538825810691119120,\t-0.538783689157400380,\t-0.538741566276722090,\t-0.538699442049190290,\t-0.538657316474909780,\t\n-0.538615189553986130,\t-0.538573061286524050,\t-0.538530931672629660,\t-0.538488800712407900,\t-0.538446668405964220,\t-0.538404534753403440,\t-0.538362399754831800,\t-0.538320263410354110,\t\n-0.538278125720075720,\t-0.538235986684101660,\t-0.538193846302537970,\t-0.538151704575489780,\t-0.538109561503062220,\t-0.538067417085360430,\t-0.538025271322490450,\t-0.537983124214557300,\t\n-0.537940975761666000,\t-0.537898825963922580,\t-0.537856674821432180,\t-0.537814522334300050,\t-0.537772368502631220,\t-0.537730213326531810,\t-0.537688056806106870,\t-0.537645898941461860,\t\n-0.537603739732701700,\t-0.537561579179932520,\t-0.537519417283259470,\t-0.537477254042787900,\t-0.537435089458622730,\t-0.537392923530870200,\t-0.537350756259635460,\t-0.537308587645023760,\t\n-0.537266417687140230,\t-0.537224246386091010,\t-0.537182073741981240,\t-0.537139899754915830,\t-0.537097724425001030,\t-0.537055547752341990,\t-0.537013369737044060,\t-0.536971190379212370,\t\n-0.536929009678952960,\t-0.536886827636371190,\t-0.536844644251572190,\t-0.536802459524661320,\t-0.536760273455744620,\t-0.536718086044927320,\t-0.536675897292314690,\t-0.536633707198011960,\t\n-0.536591515762125380,\t-0.536549322984759990,\t-0.536507128866021370,\t-0.536464933406014420,\t-0.536422736604845630,\t-0.536380538462619900,\t-0.536338338979442500,\t-0.536296138155419650,\t\n-0.536253935990656410,\t-0.536211732485258330,\t-0.536169527639330570,\t-0.536127321452979370,\t-0.536085113926309860,\t-0.536042905059427640,\t-0.536000694852437620,\t-0.535958483305446380,\t\n-0.535916270418558830,\t-0.535874056191880670,\t-0.535831840625516920,\t-0.535789623719574060,\t-0.535747405474157110,\t-0.535705185889371550,\t-0.535662964965322730,\t-0.535620742702116900,\t\n-0.535578519099859100,\t-0.535536294158655110,\t-0.535494067878609980,\t-0.535451840259830060,\t-0.535409611302420490,\t-0.535367381006486620,\t-0.535325149372134600,\t-0.535282916399469680,\t\n-0.535240682088597540,\t-0.535198446439623220,\t-0.535156209452653300,\t-0.535113971127792690,\t-0.535071731465147300,\t-0.535029490464822180,\t-0.534987248126923660,\t-0.534945004451557020,\t\n-0.534902759438827920,\t-0.534860513088841530,\t-0.534818265401704180,\t-0.534776016377521150,\t-0.534733766016398220,\t-0.534691514318440420,\t-0.534649261283754120,\t-0.534607006912444780,\t\n-0.534564751204617550,\t-0.534522494160378780,\t-0.534480235779833720,\t-0.534437976063088180,\t-0.534395715010247300,\t-0.534353452621417420,\t-0.534311188896704040,\t-0.534268923836212610,\t\n-0.534226657440048490,\t-0.534184389708318160,\t-0.534142120641126760,\t-0.534099850238580090,\t-0.534057578500783500,\t-0.534015305427843260,\t-0.533973031019864820,\t-0.533930755276953770,\t\n-0.533888478199215370,\t-0.533846199786756290,\t-0.533803920039681580,\t-0.533761638958096810,\t-0.533719356542108230,\t-0.533677072791821310,\t-0.533634787707341740,\t-0.533592501288774780,\t\n-0.533550213536226890,\t-0.533507924449803550,\t-0.533465634029610340,\t-0.533423342275752720,\t-0.533381049188337180,\t-0.533338754767468840,\t-0.533296459013253730,\t-0.533254161925797110,\t\n-0.533211863505205440,\t-0.533169563751584090,\t-0.533127262665038850,\t-0.533084960245675090,\t-0.533042656493599280,\t-0.533000351408916770,\t-0.532958044991733490,\t-0.532915737242154690,\t\n-0.532873428160286930,\t-0.532831117746235590,\t-0.532788806000106030,\t-0.532746492922004930,\t-0.532704178512037550,\t-0.532661862770309690,\t-0.532619545696926820,\t-0.532577227291995410,\t\n-0.532534907555621050,\t-0.532492586487909310,\t-0.532450264088965790,\t-0.532407940358897050,\t-0.532365615297808350,\t-0.532323288905805600,\t-0.532280961182994280,\t-0.532238632129480970,\t\n-0.532196301745371030,\t-0.532153970030770360,\t-0.532111636985784450,\t-0.532069302610519770,\t-0.532026966905081890,\t-0.531984629869576060,\t-0.531942291504109210,\t-0.531899951808786460,\t\n-0.531857610783713960,\t-0.531815268428997070,\t-0.531772924744742360,\t-0.531730579731055310,\t-0.531688233388041720,\t-0.531645885715807290,\t-0.531603536714458480,\t-0.531561186384100880,\t\n-0.531518834724840290,\t-0.531476481736782190,\t-0.531434127420033380,\t-0.531391771774699100,\t-0.531349414800885490,\t-0.531307056498697920,\t-0.531264696868243070,\t-0.531222335909626530,\t\n-0.531179973622953770,\t-0.531137610008331480,\t-0.531095245065865140,\t-0.531052878795660650,\t-0.531010511197823610,\t-0.530968142272460700,\t-0.530925772019677390,\t-0.530883400439579600,\t\n-0.530841027532273020,\t-0.530798653297864240,\t-0.530756277736458840,\t-0.530713900848162720,\t-0.530671522633081480,\t-0.530629143091321810,\t-0.530586762222989170,\t-0.530544380028189820,\t\n-0.530501996507029010,\t-0.530459611659613640,\t-0.530417225486049190,\t-0.530374837986441360,\t-0.530332449160896720,\t-0.530290059009521090,\t-0.530247667532420250,\t-0.530205274729699920,\t\n-0.530162880601466660,\t-0.530120485147826280,\t-0.530078088368884700,\t-0.530035690264747390,\t-0.529993290835521380,\t-0.529950890081312130,\t-0.529908488002225560,\t-0.529866084598367480,\t\n-0.529823679869844580,\t-0.529781273816762430,\t-0.529738866439227070,\t-0.529696457737344200,\t-0.529654047711220600,\t-0.529611636360961870,\t-0.529569223686674030,\t-0.529526809688462770,\t\n-0.529484394366434800,\t-0.529441977720695900,\t-0.529399559751351670,\t-0.529357140458508900,\t-0.529314719842273300,\t-0.529272297902750880,\t-0.529229874640047340,\t-0.529187450054269480,\t\n-0.529145024145523110,\t-0.529102596913914040,\t-0.529060168359548170,\t-0.529017738482532200,\t-0.528975307282971930,\t-0.528932874760973390,\t-0.528890440916642280,\t-0.528848005750085500,\t\n-0.528805569261408650,\t-0.528763131450717850,\t-0.528720692318118910,\t-0.528678251863718530,\t-0.528635810087622620,\t-0.528593366989936750,\t-0.528550922570767860,\t-0.528508476830221620,\t\n-0.528466029768404180,\t-0.528423581385421340,\t-0.528381131681379900,\t-0.528338680656385670,\t-0.528296228310544680,\t-0.528253774643962840,\t-0.528211319656746840,\t-0.528168863349002590,\t\n-0.528126405720836130,\t-0.528083946772353370,\t-0.528041486503661010,\t-0.527999024914865060,\t-0.527956562006071440,\t-0.527914097777386070,\t-0.527871632228915870,\t-0.527829165360766520,\t\n-0.527786697173043940,\t-0.527744227665854940,\t-0.527701756839305420,\t-0.527659284693501540,\t-0.527616811228548980,\t-0.527574336444554870,\t-0.527531860341624800,\t-0.527489382919865140,\t\n-0.527446904179381670,\t-0.527404424120281320,\t-0.527361942742669900,\t-0.527319460046653530,\t-0.527276976032338250,\t-0.527234490699830860,\t-0.527192004049237270,\t-0.527149516080663630,\t\n-0.527107026794215840,\t-0.527064536190000930,\t-0.527022044268124600,\t-0.526979551028693200,\t-0.526937056471812440,\t-0.526894560597589550,\t-0.526852063406130220,\t-0.526809564897540270,\t\n-0.526767065071926940,\t-0.526724563929395820,\t-0.526682061470053360,\t-0.526639557694005280,\t-0.526597052601358810,\t-0.526554546192219640,\t-0.526512038466694140,\t-0.526469529424888120,\t\n-0.526427019066908700,\t-0.526384507392861690,\t-0.526341994402853340,\t-0.526299480096989790,\t-0.526256964475377840,\t-0.526214447538123410,\t-0.526171929285332960,\t-0.526129409717112310,\t\n-0.526086888833568470,\t-0.526044366634807470,\t-0.526001843120935120,\t-0.525959318292058550,\t-0.525916792148283680,\t-0.525874264689716760,\t-0.525831735916463930,\t-0.525789205828632090,\t\n-0.525746674426327170,\t-0.525704141709655630,\t-0.525661607678723390,\t-0.525619072333637470,\t-0.525576535674503910,\t-0.525533997701428950,\t-0.525491458414518610,\t-0.525448917813880030,\t\n-0.525406375899619140,\t-0.525363832671842280,\t-0.525321288130655590,\t-0.525278742276165890,\t-0.525236195108479410,\t-0.525193646627702180,\t-0.525151096833941010,\t-0.525108545727302260,\t\n-0.525065993307892050,\t-0.525023439575816540,\t-0.524980884531182750,\t-0.524938328174096800,\t-0.524895770504664960,\t-0.524853211522993360,\t-0.524810651229189130,\t-0.524768089623358300,\t\n-0.524725526705607130,\t-0.524682962476041850,\t-0.524640396934769600,\t-0.524597830081896200,\t-0.524555261917528330,\t-0.524512692441771900,\t-0.524470121654734170,\t-0.524427549556521040,\t\n-0.524384976147238780,\t-0.524342401426994400,\t-0.524299825395893930,\t-0.524257248054044060,\t-0.524214669401550590,\t-0.524172089438520780,\t-0.524129508165060880,\t-0.524086925581277120,\t\n-0.524044341687275650,\t-0.524001756483163720,\t-0.523959169969047460,\t-0.523916582145033230,\t-0.523873993011227170,\t-0.523831402567736410,\t-0.523788810814667330,\t-0.523746217752126150,\t\n-0.523703623380219030,\t-0.523661027699053210,\t-0.523618430708734820,\t-0.523575832409370330,\t-0.523533232801066010,\t-0.523490631883928860,\t-0.523448029658065140,\t-0.523405426123580990,\t\n-0.523362821280583650,\t-0.523320215129179370,\t-0.523277607669474400,\t-0.523234998901575100,\t-0.523192388825588610,\t-0.523149777441621280,\t-0.523107164749779360,\t-0.523064550750169220,\t\n-0.523021935442898100,\t-0.522979318828072140,\t-0.522936700905797910,\t-0.522894081676181450,\t-0.522851461139330230,\t-0.522808839295350380,\t-0.522766216144348370,\t-0.522723591686430460,\t\n-0.522680965921703990,\t-0.522638338850275110,\t-0.522595710472249950,\t-0.522553080787735880,\t-0.522510449796839140,\t-0.522467817499666310,\t-0.522425183896323530,\t-0.522382548986918160,\t\n-0.522339912771556450,\t-0.522297275250344860,\t-0.522254636423389870,\t-0.522211996290798510,\t-0.522169354852677240,\t-0.522126712109132530,\t-0.522084068060270750,\t-0.522041422706199130,\t\n-0.521998776047023940,\t-0.521956128082851860,\t-0.521913478813789020,\t-0.521870828239942910,\t-0.521828176361419650,\t-0.521785523178325610,\t-0.521742868690768140,\t-0.521700212898853600,\t\n-0.521657555802688360,\t-0.521614897402378990,\t-0.521572237698032740,\t-0.521529576689755750,\t-0.521486914377654930,\t-0.521444250761836540,\t-0.521401585842407700,\t-0.521358919619475000,\t\n-0.521316252093145030,\t-0.521273583263524020,\t-0.521230913130719450,\t-0.521188241694837570,\t-0.521145568955985070,\t-0.521102894914268310,\t-0.521060219569794650,\t-0.521017542922670550,\t\n-0.520974864973002490,\t-0.520932185720896830,\t-0.520889505166461260,\t-0.520846823309801810,\t-0.520804140151024940,\t-0.520761455690238020,\t-0.520718769927547620,\t-0.520676082863060220,\t\n-0.520633394496882170,\t-0.520590704829121180,\t-0.520548013859883250,\t-0.520505321589275430,\t-0.520462628017403840,\t-0.520419933144376070,\t-0.520377236970298470,\t-0.520334539495277750,\t\n-0.520291840719420360,\t-0.520249140642833670,\t-0.520206439265624150,\t-0.520163736587898610,\t-0.520121032609763280,\t-0.520078327331325860,\t-0.520035620752692500,\t-0.519992912873969760,\t\n-0.519950203695265010,\t-0.519907493216684950,\t-0.519864781438336030,\t-0.519822068360324740,\t-0.519779353982758760,\t-0.519736638305744350,\t-0.519693921329388300,\t-0.519651203053797080,\t\n-0.519608483479078290,\t-0.519565762605338270,\t-0.519523040432683820,\t-0.519480316961221430,\t-0.519437592191058560,\t-0.519394866122301790,\t-0.519352138755057810,\t-0.519309410089433100,\t\n-0.519266680125535230,\t-0.519223948863470790,\t-0.519181216303345900,\t-0.519138482445268500,\t-0.519095747289344820,\t-0.519053010835681780,\t-0.519010273084385850,\t-0.518967534035564610,\t\n-0.518924793689324540,\t-0.518882052045772530,\t-0.518839309105014970,\t-0.518796564867159530,\t-0.518753819332312570,\t-0.518711072500581240,\t-0.518668324372071670,\t-0.518625574946891770,\t\n-0.518582824225148010,\t-0.518540072206947090,\t-0.518497318892395590,\t-0.518454564281601190,\t-0.518411808374670380,\t-0.518369051171710060,\t-0.518326292672826710,\t-0.518283532878128120,\t\n-0.518240771787720540,\t-0.518198009401710790,\t-0.518155245720206330,\t-0.518112480743313730,\t-0.518069714471139920,\t-0.518026946903791470,\t-0.517984178041376090,\t-0.517941407884000230,\t\n-0.517898636431770810,\t-0.517855863684794420,\t-0.517813089643178850,\t-0.517770314307030470,\t-0.517727537676456300,\t-0.517684759751562920,\t-0.517641980532458020,\t-0.517599200019248200,\t\n-0.517556418212040350,\t-0.517513635110941060,\t-0.517470850716058140,\t-0.517428065027498050,\t-0.517385278045367380,\t-0.517342489769773930,\t-0.517299700200824160,\t-0.517256909338625230,\t\n-0.517214117183283690,\t-0.517171323734907150,\t-0.517128528993602400,\t-0.517085732959476240,\t-0.517042935632635370,\t-0.517000137013187590,\t-0.516957337101239480,\t-0.516914535896897950,\t\n-0.516871733400269710,\t-0.516828929611462540,\t-0.516786124530583150,\t-0.516743318157738330,\t-0.516700510493034780,\t-0.516657701536580420,\t-0.516614891288481810,\t-0.516572079748845560,\t\n-0.516529266917779560,\t-0.516486452795390290,\t-0.516443637381785000,\t-0.516400820677070160,\t-0.516358002681353680,\t-0.516315183394742140,\t-0.516272362817342790,\t-0.516229540949261990,\t\n-0.516186717790607760,\t-0.516143893341486800,\t-0.516101067602006030,\t-0.516058240572272230,\t-0.516015412252393220,\t-0.515972582642475700,\t-0.515929751742626670,\t-0.515886919552952960,\t\n-0.515844086073562250,\t-0.515801251304561340,\t-0.515758415246056920,\t-0.515715577898156920,\t-0.515672739260967910,\t-0.515629899334597020,\t-0.515587058119151060,\t-0.515544215614737840,\t\n-0.515501371821464050,\t-0.515458526739436820,\t-0.515415680368762950,\t-0.515372832709550250,\t-0.515329983761905420,\t-0.515287133525935580,\t-0.515244282001747660,\t-0.515201429189449330,\t\n-0.515158575089147420,\t-0.515115719700949160,\t-0.515072863024961140,\t-0.515030005061291370,\t-0.514987145810046560,\t-0.514944285271333960,\t-0.514901423445260240,\t-0.514858560331933330,\t\n-0.514815695931459930,\t-0.514772830243947040,\t-0.514729963269502380,\t-0.514687095008232840,\t-0.514644225460245570,\t-0.514601354625647380,\t-0.514558482504546060,\t-0.514515609097048630,\t\n-0.514472734403262240,\t-0.514429858423293580,\t-0.514386981157250570,\t-0.514344102605240220,\t-0.514301222767369560,\t-0.514258341643745400,\t-0.514215459234475870,\t-0.514172575539667660,\t\n-0.514129690559428030,\t-0.514086804293863770,\t-0.514043916743082920,\t-0.514001027907192260,\t-0.513958137786298620,\t-0.513915246380510000,\t-0.513872353689933340,\t-0.513829459714675750,\t\n-0.513786564454844050,\t-0.513743667910546490,\t-0.513700770081889630,\t-0.513657870968980860,\t-0.513614970571927070,\t-0.513572068890836290,\t-0.513529165925815210,\t-0.513486261676971310,\t\n-0.513443356144411280,\t-0.513400449328243360,\t-0.513357541228574240,\t-0.513314631845511290,\t-0.513271721179161420,\t-0.513228809229632540,\t-0.513185895997031680,\t-0.513142981481465750,\t\n-0.513100065683042670,\t-0.513057148601869460,\t-0.513014230238053370,\t-0.512971310591701310,\t-0.512928389662921420,\t-0.512885467451820510,\t-0.512842543958505930,\t-0.512799619183084590,\t\n-0.512756693125664630,\t-0.512713765786352860,\t-0.512670837165256740,\t-0.512627907262483080,\t-0.512584976078140130,\t-0.512542043612334690,\t-0.512499109865174220,\t-0.512456174836765420,\t\n-0.512413238527216760,\t-0.512370300936634830,\t-0.512327362065127300,\t-0.512284421912800880,\t-0.512241480479763810,\t-0.512198537766123010,\t-0.512155593771985610,\t-0.512112648497459520,\t\n-0.512069701942651780,\t-0.512026754107669850,\t-0.511983804992620530,\t-0.511940854597612180,\t-0.511897902922751720,\t-0.511854949968146400,\t-0.511811995733903460,\t-0.511769040220130810,\t\n-0.511726083426935600,\t-0.511683125354425170,\t-0.511640166002706560,\t-0.511597205371887910,\t-0.511554243462076230,\t-0.511511280273378890,\t-0.511468315805903020,\t-0.511425350059756760,\t\n-0.511382383035047130,\t-0.511339414731881160,\t-0.511296445150366980,\t-0.511253474290611740,\t-0.511210502152722900,\t-0.511167528736807260,\t-0.511124554042973300,\t-0.511081578071327920,\t\n-0.511038600821978490,\t-0.510995622295032260,\t-0.510952642490597460,\t-0.510909661408780910,\t-0.510866679049690300,\t-0.510823695413432530,\t-0.510780710500115980,\t-0.510737724309847540,\t\n-0.510694736842734920,\t-0.510651748098885030,\t-0.510608758078406110,\t-0.510565766781405310,\t-0.510522774207989750,\t-0.510479780358267580,\t-0.510436785232345920,\t-0.510393788830332480,\t\n-0.510350791152334060,\t-0.510307792198459010,\t-0.510264791968814580,\t-0.510221790463508130,\t-0.510178787682646790,\t-0.510135783626338820,\t-0.510092778294691460,\t-0.510049771687812180,\t\n-0.510006763805808010,\t-0.509963754648787400,\t-0.509920744216857400,\t-0.509877732510125470,\t-0.509834719528698850,\t-0.509791705272685800,\t-0.509748689742193560,\t-0.509705672937329160,\t\n-0.509662654858200950,\t-0.509619635504916180,\t-0.509576614877582210,\t-0.509533592976306400,\t-0.509490569801197000,\t-0.509447545352361030,\t-0.509404519629906400,\t-0.509361492633939930,\t\n-0.509318464364570180,\t-0.509275434821904290,\t-0.509232404006049740,\t-0.509189371917113890,\t-0.509146338555204970,\t-0.509103303920430130,\t-0.509060268012897050,\t-0.509017230832713000,\t\n-0.508974192379986200,\t-0.508931152654823920,\t-0.508888111657333830,\t-0.508845069387622970,\t-0.508802025845799810,\t-0.508758981031971700,\t-0.508715934946245670,\t-0.508672887588730190,\t\n-0.508629838959532510,\t-0.508586789058760200,\t-0.508543737886520630,\t-0.508500685442922040,\t-0.508457631728071680,\t-0.508414576742077350,\t-0.508371520485046080,\t-0.508328462957086450,\t\n-0.508285404158305700,\t-0.508242344088811420,\t-0.508199282748710850,\t-0.508156220138112460,\t-0.508113156257123610,\t-0.508070091105851770,\t-0.508027024684404420,\t-0.507983956992889780,\t\n-0.507940888031415240,\t-0.507897817800088250,\t-0.507854746299016950,\t-0.507811673528308800,\t-0.507768599488071510,\t-0.507725524178412320,\t-0.507682447599439700,\t-0.507639369751261000,\t\n-0.507596290633983930,\t-0.507553210247715600,\t-0.507510128592564720,\t-0.507467045668638540,\t-0.507423961476044630,\t-0.507380876014890570,\t-0.507337789285284610,\t-0.507294701287334230,\t\n-0.507251612021146990,\t-0.507208521486830490,\t-0.507165429684492960,\t-0.507122336614241890,\t-0.507079242276184620,\t-0.507036146670429620,\t-0.506993049797084260,\t-0.506949951656256230,\t\n-0.506906852248052990,\t-0.506863751572583010,\t-0.506820649629953550,\t-0.506777546420272620,\t-0.506734441943647360,\t-0.506691336200186360,\t-0.506648229189996970,\t-0.506605120913187100,\t\n-0.506562011369864010,\t-0.506518900560136260,\t-0.506475788484111340,\t-0.506432675141896940,\t-0.506389560533600400,\t-0.506346444659330320,\t-0.506303327519194160,\t-0.506260209113299720,\t\n-0.506217089441754360,\t-0.506173968504666670,\t-0.506130846302144000,\t-0.506087722834293820,\t-0.506044598101224820,\t-0.506001472103044250,\t-0.505958344839860020,\t-0.505915216311779600,\t\n-0.505872086518911470,\t-0.505828955461363080,\t-0.505785823139242360,\t-0.505742689552656670,\t-0.505699554701714680,\t-0.505656418586523770,\t-0.505613281207191730,\t-0.505570142563826260,\t\n-0.505527002656535720,\t-0.505483861485427680,\t-0.505440719050610050,\t-0.505397575352190210,\t-0.505354430390276830,\t-0.505311284164977280,\t-0.505268136676399250,\t-0.505224987924651200,\t\n-0.505181837909840730,\t-0.505138686632075620,\t-0.505095534091463460,\t-0.505052380288112720,\t-0.505009225222131210,\t-0.504966068893626500,\t-0.504922911302706280,\t-0.504879752449479140,\t\n-0.504836592334052650,\t-0.504793430956534730,\t-0.504750268317032740,\t-0.504707104415655580,\t-0.504663939252510630,\t-0.504620772827705790,\t-0.504577605141348640,\t-0.504534436193547870,\t\n-0.504491265984410960,\t-0.504448094514045600,\t-0.504404921782560360,\t-0.504361747790062710,\t-0.504318572536660790,\t-0.504275396022462070,\t-0.504232218247575140,\t-0.504189039212107780,\t\n-0.504145858916167810,\t-0.504102677359862690,\t-0.504059494543301460,\t-0.504016310466591340,\t-0.503973125129840490,\t-0.503929938533156370,\t-0.503886750676647900,\t-0.503843561560422540,\t\n-0.503800371184588200,\t-0.503757179549252590,\t-0.503713986654524490,\t-0.503670792500511280,\t-0.503627597087320860,\t-0.503584400415061690,\t-0.503541202483841600,\t-0.503498003293768480,\t\n-0.503454802844950030,\t-0.503411601137494840,\t-0.503368398171510690,\t-0.503325193947105620,\t-0.503281988464387100,\t-0.503238781723464030,\t-0.503195573724444010,\t-0.503152364467435050,\t\n-0.503109153952544740,\t-0.503065942179881990,\t-0.503022729149554370,\t-0.502979514861669920,\t-0.502936299316336320,\t-0.502893082513662270,\t-0.502849864453755680,\t-0.502806645136724240,\t\n-0.502763424562675980,\t-0.502720202731719470,\t-0.502676979643962410,\t-0.502633755299512490,\t-0.502590529698478730,\t-0.502547302840968490,\t-0.502504074727090020,\t-0.502460845356951010,\t\n-0.502417614730660270,\t-0.502374382848325470,\t-0.502331149710054770,\t-0.502287915315955740,\t-0.502244679666137390,\t-0.502201442760707330,\t-0.502158204599773560,\t-0.502114965183444010,\t\n-0.502071724511827360,\t-0.502028482585031410,\t-0.501985239403164310,\t-0.501941994966333630,\t-0.501898749274648390,\t-0.501855502328216300,\t-0.501812254127145030,\t-0.501769004671543510,\t\n-0.501725753961519530,\t-0.501682501997181120,\t-0.501639248778636080,\t-0.501595994305993330,\t-0.501552738579360560,\t-0.501509481598846010,\t-0.501466223364557260,\t-0.501422963876603460,\t\n-0.501379703135092170,\t-0.501336441140131650,\t-0.501293177891829590,\t-0.501249913390295010,\t-0.501206647635635720,\t-0.501163380627959730,\t-0.501120112367374970,\t-0.501076842853990230,\t\n-0.501033572087913440,\t-0.500990300069252270,\t-0.500947026798115760,\t-0.500903752274611700,\t-0.500860476498848240,\t-0.500817199470933280,\t-0.500773921190975630,\t-0.500730641659083210,\t\n-0.500687360875364140,\t-0.500644078839926340,\t-0.500600795552878620,\t-0.500557511014328990,\t-0.500514225224385600,\t-0.500470938183156240,\t-0.500427649890749950,\t-0.500384360347274510,\t\n-0.500341069552838190,\t-0.500297777507548780,\t-0.500254484211515300,\t-0.500211189664845680,\t-0.500167893867648040,\t-0.500124596820030300,\t-0.500081298522101480,\t-0.500037998973969280,\t\n-0.499994698175741830,\t-0.499951396127527980,\t-0.499908092829435660,\t-0.499864788281573050,\t-0.499821482484048120,\t-0.499778175436969900,\t-0.499734867140446180,\t-0.499691557594585330,\t\n-0.499648246799495210,\t-0.499604934755284840,\t-0.499561621462062120,\t-0.499518306919935370,\t-0.499474991129012450,\t-0.499431674089402480,\t-0.499388355801213270,\t-0.499345036264553180,\t\n-0.499301715479530170,\t-0.499258393446253170,\t-0.499215070164830240,\t-0.499171745635369260,\t-0.499128419857979290,\t-0.499085092832768250,\t-0.499041764559844500,\t-0.498998435039315960,\t\n-0.498955104271291690,\t-0.498911772255879680,\t-0.498868438993188220,\t-0.498825104483325290,\t-0.498781768726400010,\t-0.498738431722520250,\t-0.498695093471794470,\t-0.498651753974330540,\t\n-0.498608413230237580,\t-0.498565071239623630,\t-0.498521728002597030,\t-0.498478383519265660,\t-0.498435037789738740,\t-0.498391690814124270,\t-0.498348342592530140,\t-0.498304993125065540,\t\n-0.498261642411838460,\t-0.498218290452957290,\t-0.498174937248530010,\t-0.498131582798665760,\t-0.498088227103472560,\t-0.498044870163058760,\t-0.498001511977532450,\t-0.497958152547002710,\t\n-0.497914791871577610,\t-0.497871429951365520,\t-0.497828066786474450,\t-0.497784702377013670,\t-0.497741336723091070,\t-0.497697969824815120,\t-0.497654601682293920,\t-0.497611232295636530,\t\n-0.497567861664951090,\t-0.497524489790345640,\t-0.497481116671929350,\t-0.497437742309810190,\t-0.497394366704096760,\t-0.497350989854897010,\t-0.497307611762320130,\t-0.497264232426474270,\t\n-0.497220851847467840,\t-0.497177470025408850,\t-0.497134086960406560,\t-0.497090702652569110,\t-0.497047317102004840,\t-0.497003930308821950,\t-0.496960542273129580,\t-0.496917152995035860,\t\n-0.496873762474649260,\t-0.496830370712077920,\t-0.496786977707430970,\t-0.496743583460816600,\t-0.496700187972343280,\t-0.496656791242119090,\t-0.496613393270253280,\t-0.496569994056854040,\t\n-0.496526593602029440,\t-0.496483191905888690,\t-0.496439788968539960,\t-0.496396384790091790,\t-0.496352979370652260,\t-0.496309572710330660,\t-0.496266164809235130,\t-0.496222755667474260,\t\n-0.496179345285156000,\t-0.496135933662389840,\t-0.496092520799283840,\t-0.496049106695946480,\t-0.496005691352486010,\t-0.495962274769011720,\t-0.495918856945631700,\t-0.495875437882454580,\t\n-0.495832017579588450,\t-0.495788596037142650,\t-0.495745173255225380,\t-0.495701749233944830,\t-0.495658323973410250,\t-0.495614897473729830,\t-0.495571469735012200,\t-0.495528040757365510,\t\n-0.495484610540899100,\t-0.495441179085721160,\t-0.495397746391940290,\t-0.495354312459664660,\t-0.495310877289003640,\t-0.495267440880065410,\t-0.495224003232958620,\t-0.495180564347791400,\t\n-0.495137124224673150,\t-0.495093682863712080,\t-0.495050240265016870,\t-0.495006796428695610,\t-0.494963351354857750,\t-0.494919905043611550,\t-0.494876457495065150,\t-0.494833008709328000,\t\n-0.494789558686508370,\t-0.494746107426714820,\t-0.494702654930055610,\t-0.494659201196640200,\t-0.494615746226576720,\t-0.494572290019973880,\t-0.494528832576939970,\t-0.494485373897584350,\t\n-0.494441913982015260,\t-0.494398452830341400,\t-0.494354990442671060,\t-0.494311526819113610,\t-0.494268061959777350,\t-0.494224595864770910,\t-0.494181128534202600,\t-0.494137659968181870,\t\n-0.494094190166816990,\t-0.494050719130216590,\t-0.494007246858489070,\t-0.493963773351743800,\t-0.493920298610089070,\t-0.493876822633633250,\t-0.493833345422485690,\t-0.493789866976754870,\t\n-0.493746387296549290,\t-0.493702906381977390,\t-0.493659424233148620,\t-0.493615940850171300,\t-0.493572456233154100,\t-0.493528970382205390,\t-0.493485483297434640,\t-0.493441994978950140,\t\n-0.493398505426860700,\t-0.493355014641274630,\t-0.493311522622301380,\t-0.493268029370049320,\t-0.493224534884627200,\t-0.493181039166143310,\t-0.493137542214707240,\t-0.493094044030427340,\t\n-0.493050544613411910,\t-0.493007043963770540,\t-0.492963542081611530,\t-0.492920038967043670,\t-0.492876534620175330,\t-0.492833029041116030,\t-0.492789522229974190,\t-0.492746014186858540,\t\n-0.492702504911877450,\t-0.492658994405140490,\t-0.492615482666756030,\t-0.492571969696832870,\t-0.492528455495479410,\t-0.492484940062805190,\t-0.492441423398918610,\t-0.492397905503928480,\t\n-0.492354386377943210,\t-0.492310866021072380,\t-0.492267344433424350,\t-0.492223821615107580,\t-0.492180297566231660,\t-0.492136772286904940,\t-0.492093245777236340,\t-0.492049718037334270,\t\n-0.492006189067308250,\t-0.491962658867266760,\t-0.491919127437318580,\t-0.491875594777572260,\t-0.491832060888137300,\t-0.491788525769122240,\t-0.491744989420635830,\t-0.491701451842786570,\t\n-0.491657913035684010,\t-0.491614372999436720,\t-0.491570831734153500,\t-0.491527289239942820,\t-0.491483745516914320,\t-0.491440200565176400,\t-0.491396654384837650,\t-0.491353106976007590,\t\n-0.491309558338794810,\t-0.491266008473308150,\t-0.491222457379656030,\t-0.491178905057948150,\t-0.491135351508293070,\t-0.491091796730799560,\t-0.491048240725576180,\t-0.491004683492732570,\t\n-0.490961125032377320,\t-0.490917565344619170,\t-0.490874004429566800,\t-0.490830442287329750,\t-0.490786878918016590,\t-0.490743314321736290,\t-0.490699748498597270,\t-0.490656181448709260,\t\n-0.490612613172180800,\t-0.490569043669120850,\t-0.490525472939637890,\t-0.490481900983841590,\t-0.490438327801840600,\t-0.490394753393743330,\t-0.490351177759659640,\t-0.490307600899697940,\t\n-0.490264022813967300,\t-0.490220443502576150,\t-0.490176862965634340,\t-0.490133281203250340,\t-0.490089698215533160,\t-0.490046114002591350,\t-0.490002528564534580,\t-0.489958941901471550,\t\n-0.489915354013511160,\t-0.489871764900761950,\t-0.489828174563333770,\t-0.489784583001335150,\t-0.489740990214875050,\t-0.489697396204062110,\t-0.489653800969006070,\t-0.489610204509815460,\t\n-0.489566606826599030,\t-0.489523007919466460,\t-0.489479407788526330,\t-0.489435806433887730,\t-0.489392203855659180,\t-0.489348600053950530,\t-0.489304995028870370,\t-0.489261388780527720,\t\n-0.489217781309031260,\t-0.489174172614490700,\t-0.489130562697014710,\t-0.489086951556712280,\t-0.489043339193692140,\t-0.488999725608063980,\t-0.488956110799936560,\t-0.488912494769418840,\t\n-0.488868877516619500,\t-0.488825259041648360,\t-0.488781639344614050,\t-0.488738018425625250,\t-0.488694396284791830,\t-0.488650772922222420,\t-0.488607148338026040,\t-0.488563522532311450,\t\n-0.488519895505188370,\t-0.488476267256765630,\t-0.488432637787152180,\t-0.488389007096456720,\t-0.488345375184789150,\t-0.488301742052258180,\t-0.488258107698972820,\t-0.488214472125041820,\t\n-0.488170835330575040,\t-0.488127197315681160,\t-0.488083558080469270,\t-0.488039917625048110,\t-0.487996275949527550,\t-0.487952633054016320,\t-0.487908988938623440,\t-0.487865343603457740,\t\n-0.487821697048629100,\t-0.487778049274246170,\t-0.487734400280417760,\t-0.487690750067253710,\t-0.487647098634862770,\t-0.487603445983354140,\t-0.487559792112836510,\t-0.487516137023419730,\t\n-0.487472480715212650,\t-0.487428823188324370,\t-0.487385164442863620,\t-0.487341504478940310,\t-0.487297843296663310,\t-0.487254180896141700,\t-0.487210517277484210,\t-0.487166852440800820,\t\n-0.487123186386200340,\t-0.487079519113791830,\t-0.487035850623684210,\t-0.486992180915987280,\t-0.486948509990809960,\t-0.486904837848260940,\t-0.486861164488450180,\t-0.486817489911486550,\t\n-0.486773814117479220,\t-0.486730137106536950,\t-0.486686458878769710,\t-0.486642779434286350,\t-0.486599098773196010,\t-0.486555416895607550,\t-0.486511733801630930,\t-0.486468049491374950,\t\n-0.486424363964948870,\t-0.486380677222461530,\t-0.486336989264022860,\t-0.486293300089741700,\t-0.486249609699727300,\t-0.486205918094088470,\t-0.486162225272935290,\t-0.486118531236376490,\t\n-0.486074835984521000,\t-0.486031139517478780,\t-0.485987441835358750,\t-0.485943742938270080,\t-0.485900042826321710,\t-0.485856341499623590,\t-0.485812638958284580,\t-0.485768935202414040,\t\n-0.485725230232120770,\t-0.485681524047514750,\t-0.485637816648704980,\t-0.485594108035800660,\t-0.485550398208910660,\t-0.485506687168145050,\t-0.485462974913612730,\t-0.485419261445423020,\t\n-0.485375546763684720,\t-0.485331830868507950,\t-0.485288113760001580,\t-0.485244395438274580,\t-0.485200675903436960,\t-0.485156955155597650,\t-0.485113233194865930,\t-0.485069510021350790,\t\n-0.485025785635162240,\t-0.484982060036409200,\t-0.484938333225201020,\t-0.484894605201646620,\t-0.484850875965856130,\t-0.484807145517938410,\t-0.484763413858002870,\t-0.484719680986158360,\t\n-0.484675946902515090,\t-0.484632211607181900,\t-0.484588475100268200,\t-0.484544737381882920,\t-0.484500998452136180,\t-0.484457258311136950,\t-0.484413516958994590,\t-0.484369774395818020,\t\n-0.484326030621717420,\t-0.484282285636801760,\t-0.484238539441180000,\t-0.484194792034962240,\t-0.484151043418257540,\t-0.484107293591175210,\t-0.484063542553824280,\t-0.484019790306314810,\t\n-0.483976036848755950,\t-0.483932282181256950,\t-0.483888526303926870,\t-0.483844769216875860,\t-0.483801010920212940,\t-0.483757251414047520,\t-0.483713490698488510,\t-0.483669728773646220,\t\n-0.483625965639629560,\t-0.483582201296548050,\t-0.483538435744510610,\t-0.483494668983627470,\t-0.483450901014007670,\t-0.483407131835760230,\t-0.483363361448995330,\t-0.483319589853822060,\t\n-0.483275817050349780,\t-0.483232043038687550,\t-0.483188267818945640,\t-0.483144491391233060,\t-0.483100713755659270,\t-0.483056934912333260,\t-0.483013154861365310,\t-0.482969373602864520,\t\n-0.482925591136940220,\t-0.482881807463701630,\t-0.482838022583258860,\t-0.482794236495721060,\t-0.482750449201197640,\t-0.482706660699797730,\t-0.482662870991631580,\t-0.482619080076808200,\t\n-0.482575287955436800,\t-0.482531494627627510,\t-0.482487700093489510,\t-0.482443904353132220,\t-0.482400107406664840,\t-0.482356309254197540,\t-0.482312509895839510,\t-0.482268709331700180,\t\n-0.482224907561888680,\t-0.482181104586515310,\t-0.482137300405689140,\t-0.482093495019519760,\t-0.482049688428116240,\t-0.482005880631588890,\t-0.481962071630046840,\t-0.481918261423599610,\t\n-0.481874450012356350,\t-0.481830637396427400,\t-0.481786823575921790,\t-0.481743008550949090,\t-0.481699192321618560,\t-0.481655374888040390,\t-0.481611556250323810,\t-0.481567736408577920,\t\n-0.481523915362913110,\t-0.481480093113438480,\t-0.481436269660263650,\t-0.481392445003497700,\t-0.481348619143251110,\t-0.481304792079632890,\t-0.481260963812752740,\t-0.481217134342719790,\t\n-0.481173303669644390,\t-0.481129471793635740,\t-0.481085638714803370,\t-0.481041804433256560,\t-0.480997968949105630,\t-0.480954132262459750,\t-0.480910294373428530,\t-0.480866455282121190,\t\n-0.480822614988648140,\t-0.480778773493118540,\t-0.480734930795641560,\t-0.480691086896327720,\t-0.480647241795286120,\t-0.480603395492626430,\t-0.480559547988457850,\t-0.480515699282890780,\t\n-0.480471849376034490,\t-0.480427998267998590,\t-0.480384145958892230,\t-0.480340292448825980,\t-0.480296437737908980,\t-0.480252581826250860,\t-0.480208724713960920,\t-0.480164866401149530,\t\n-0.480121006887925970,\t-0.480077146174399950,\t-0.480033284260680590,\t-0.479989421146878480,\t-0.479945556833102800,\t-0.479901691319462810,\t-0.479857824606069020,\t-0.479813956693030620,\t\n-0.479770087580457420,\t-0.479726217268458540,\t-0.479682345757144520,\t-0.479638473046624600,\t-0.479594599137008530,\t-0.479550724028405590,\t-0.479506847720926220,\t-0.479462970214679710,\t\n-0.479419091509775800,\t-0.479375211606323790,\t-0.479331330504434110,\t-0.479287448204216090,\t-0.479243564705779500,\t-0.479199680009233580,\t-0.479155794114688840,\t-0.479111907022254590,\t\n-0.479068018732040250,\t-0.479024129244156220,\t-0.478980238558711860,\t-0.478936346675816860,\t-0.478892453595580690,\t-0.478848559318113710,\t-0.478804663843525380,\t-0.478760767171925390,\t\n-0.478716869303423050,\t-0.478672970238128940,\t-0.478629069976152450,\t-0.478585168517603240,\t-0.478541265862590710,\t-0.478497362011225450,\t-0.478453456963616740,\t-0.478409550719874400,\t\n-0.478365643280107830,\t-0.478321734644427510,\t-0.478277824812942840,\t-0.478233913785763630,\t-0.478190001562999230,\t-0.478146088144760230,\t-0.478102173531156030,\t-0.478058257722295990,\t\n-0.478014340718290690,\t-0.477970422519249540,\t-0.477926503125282290,\t-0.477882582536498460,\t-0.477838660753008520,\t-0.477794737774921980,\t-0.477750813602348560,\t-0.477706888235397700,\t\n-0.477662961674180040,\t-0.477619033918804950,\t-0.477575104969382270,\t-0.477531174826021480,\t-0.477487243488833150,\t-0.477443310957926640,\t-0.477399377233411910,\t-0.477355442315398340,\t\n-0.477311506203996540,\t-0.477267568899315990,\t-0.477223630401466090,\t-0.477179690710557550,\t-0.477135749826699760,\t-0.477091807750002590,\t-0.477047864480575570,\t-0.477003920018529200,\t\n-0.476959974363973080,\t-0.476916027517017000,\t-0.476872079477770490,\t-0.476828130246344130,\t-0.476784179822847490,\t-0.476740228207390370,\t-0.476696275400082300,\t-0.476652321401033920,\t\n-0.476608366210354740,\t-0.476564409828154620,\t-0.476520452254543150,\t-0.476476493489630890,\t-0.476432533533527440,\t-0.476388572386342250,\t-0.476344610048185960,\t-0.476300646519168200,\t\n-0.476256681799398840,\t-0.476212715888987340,\t-0.476168748788044440,\t-0.476124780496679720,\t-0.476080811015002990,\t-0.476036840343123880,\t-0.475992868481153080,\t-0.475948895429200050,\t\n-0.475904921187374820,\t-0.475860945755786910,\t-0.475816969134547020,\t-0.475772991323764660,\t-0.475729012323549860,\t-0.475685032134012140,\t-0.475641050755262200,\t-0.475597068187409660,\t\n-0.475553084430564430,\t-0.475509099484836160,\t-0.475465113350335480,\t-0.475421126027172010,\t-0.475377137515455350,\t-0.475333147815296230,\t-0.475289156926804290,\t-0.475245164850089390,\t\n-0.475201171585261210,\t-0.475157177132430500,\t-0.475113181491706840,\t-0.475069184663200250,\t-0.475025186647020260,\t-0.474981187443277720,\t-0.474937187052082210,\t-0.474893185473543760,\t\n-0.474849182707771930,\t-0.474805178754877490,\t-0.474761173614970170,\t-0.474717167288159880,\t-0.474673159774556320,\t-0.474629151074270230,\t-0.474585141187411240,\t-0.474541130114089050,\t\n-0.474497117854414400,\t-0.474453104408496970,\t-0.474409089776446750,\t-0.474365073958373410,\t-0.474321056954387810,\t-0.474277038764599530,\t-0.474233019389118720,\t-0.474188998828054930,\t\n-0.474144977081519040,\t-0.474100954149620670,\t-0.474056930032469960,\t-0.474012904730176540,\t-0.473968878242851220,\t-0.473924850570603680,\t-0.473880821713544060,\t-0.473836791671782000,\t\n-0.473792760445428340,\t-0.473748728034592780,\t-0.473704694439385010,\t-0.473660659659915880,\t-0.473616623696295090,\t-0.473572586548632770,\t-0.473528548217038600,\t-0.473484508701623400,\t\n-0.473440468002497010,\t-0.473396426119769400,\t-0.473352383053550320,\t-0.473308338803950680,\t-0.473264293371080220,\t-0.473220246755049030,\t-0.473176198955966800,\t-0.473132149973944480,\t\n-0.473088099809091780,\t-0.473044048461518820,\t-0.472999995931335350,\t-0.472955942218652340,\t-0.472911887323579420,\t-0.472867831246226390,\t-0.472823773986704170,\t-0.472779715545122550,\t\n-0.472735655921591610,\t-0.472691595116221110,\t-0.472647533129122050,\t-0.472603469960404200,\t-0.472559405610177620,\t-0.472515340078552120,\t-0.472471273365638710,\t-0.472427205471547100,\t\n-0.472383136396387460,\t-0.472339066140269600,\t-0.472294994703304490,\t-0.472250922085601880,\t-0.472206848287271940,\t-0.472162773308424490,\t-0.472118697149170540,\t-0.472074619809619790,\t\n-0.472030541289882530,\t-0.471986461590068520,\t-0.471942380710288770,\t-0.471898298650653030,\t-0.471854215411271150,\t-0.471810130992254160,\t-0.471766045393711810,\t-0.471721958615754390,\t\n-0.471677870658491650,\t-0.471633781522034610,\t-0.471589691206493130,\t-0.471545599711977400,\t-0.471501507038597330,\t-0.471457413186463840,\t-0.471413318155686820,\t-0.471369221946376540,\t\n-0.471325124558642780,\t-0.471281025992596640,\t-0.471236926248347900,\t-0.471192825326006870,\t-0.471148723225683350,\t-0.471104619947488420,\t-0.471060515491531940,\t-0.471016409857923810,\t\n-0.470972303046775010,\t-0.470928195058195500,\t-0.470884085892295470,\t-0.470839975549184830,\t-0.470795864028974660,\t-0.470751751331774830,\t-0.470707637457695620,\t-0.470663522406846890,\t\n-0.470619406179339780,\t-0.470575288775284150,\t-0.470531170194790290,\t-0.470487050437968120,\t-0.470442929504928720,\t-0.470398807395781990,\t-0.470354684110638300,\t-0.470310559649607440,\t\n-0.470266434012800550,\t-0.470222307200327650,\t-0.470178179212298540,\t-0.470134050048824360,\t-0.470089919710015120,\t-0.470045788195981030,\t-0.470001655506832090,\t-0.469957521642679400,\t\n-0.469913386603632910,\t-0.469869250389802980,\t-0.469825113001299480,\t-0.469780974438233630,\t-0.469736834700715310,\t-0.469692693788854920,\t-0.469648551702762430,\t-0.469604408442548920,\t\n-0.469560264008324400,\t-0.469516118400199240,\t-0.469471971618283360,\t-0.469427823662687930,\t-0.469383674533522980,\t-0.469339524230898810,\t-0.469295372754925500,\t-0.469251220105714070,\t\n-0.469207066283374660,\t-0.469162911288017130,\t-0.469118755119752760,\t-0.469074597778691480,\t-0.469030439264943700,\t-0.468986279578619440,\t-0.468942118719829880,\t-0.468897956688685060,\t\n-0.468853793485295270,\t-0.468809629109770640,\t-0.468765463562222370,\t-0.468721296842760370,\t-0.468677128951495160,\t-0.468632959888536760,\t-0.468588789653996310,\t-0.468544618247983930,\t\n-0.468500445670609940,\t-0.468456271921984520,\t-0.468412097002218750,\t-0.468367920911422760,\t-0.468323743649706580,\t-0.468279565217181450,\t-0.468235385613957390,\t-0.468191204840144870,\t\n-0.468147022895853970,\t-0.468102839781195880,\t-0.468058655496280670,\t-0.468014470041218820,\t-0.467970283416120460,\t-0.467926095621096720,\t-0.467881906656257780,\t-0.467837716521714080,\t\n-0.467793525217575670,\t-0.467749332743953860,\t-0.467705139100958680,\t-0.467660944288700700,\t-0.467616748307289940,\t-0.467572551156837710,\t-0.467528352837454090,\t-0.467484153349249200,\t\n-0.467439952692334350,\t-0.467395750866819560,\t-0.467351547872815460,\t-0.467307343710432030,\t-0.467263138379780670,\t-0.467218931880971470,\t-0.467174724214114930,\t-0.467130515379321210,\t\n-0.467086305376701590,\t-0.467042094206366170,\t-0.466997881868425560,\t-0.466953668362989790,\t-0.466909453690170280,\t-0.466865237850077160,\t-0.466821020842820960,\t-0.466776802668511740,\t\n-0.466732583327260970,\t-0.466688362819178690,\t-0.466644141144375520,\t-0.466599918302961660,\t-0.466555694295048340,\t-0.466511469120745760,\t-0.466467242780164160,\t-0.466423015273414840,\t\n-0.466378786600608000,\t-0.466334556761854150,\t-0.466290325757263540,\t-0.466246093586947520,\t-0.466201860251016230,\t-0.466157625749580360,\t-0.466113390082749990,\t-0.466069153250636530,\t\n-0.466024915253350160,\t-0.465980676091001520,\t-0.465936435763700860,\t-0.465892194271559420,\t-0.465847951614687560,\t-0.465803707793195800,\t-0.465759462807194320,\t-0.465715216656794660,\t\n-0.465670969342106890,\t-0.465626720863241360,\t-0.465582471220309380,\t-0.465538220413421240,\t-0.465493968442687530,\t-0.465449715308218550,\t-0.465405461010125640,\t-0.465361205548519120,\t\n-0.465316948923509550,\t-0.465272691135207190,\t-0.465228432183723560,\t-0.465184172069168790,\t-0.465139910791653620,\t-0.465095648351288250,\t-0.465051384748184190,\t-0.465007119982451640,\t\n-0.464962854054201350,\t-0.464918586963543490,\t-0.464874318710589540,\t-0.464830049295449800,\t-0.464785778718234570,\t-0.464741506979055250,\t-0.464697234078022160,\t-0.464652960015246030,\t\n-0.464608684790837060,\t-0.464564408404906810,\t-0.464520130857565550,\t-0.464475852148923900,\t-0.464431572279092260,\t-0.464387291248182120,\t-0.464343009056303710,\t-0.464298725703567780,\t\n-0.464254441190084630,\t-0.464210155515965780,\t-0.464165868681321590,\t-0.464121580686262690,\t-0.464077291530899440,\t-0.464033001215343350,\t-0.463988709739704740,\t-0.463944417104094010,\t\n-0.463900123308622630,\t-0.463855828353400890,\t-0.463811532238539600,\t-0.463767234964149120,\t-0.463722936530340910,\t-0.463678636937225390,\t-0.463634336184913230,\t-0.463590034273514860,\t\n-0.463545731203141850,\t-0.463501426973904450,\t-0.463457121585913510,\t-0.463412815039279340,\t-0.463368507334113560,\t-0.463324198470526470,\t-0.463279888448628940,\t-0.463235577268531260,\t\n-0.463191264930345070,\t-0.463146951434180660,\t-0.463102636780148900,\t-0.463058320968360190,\t-0.463014003998926000,\t-0.462969685871956860,\t-0.462925366587563060,\t-0.462881046145856290,\t\n-0.462836724546946850,\t-0.462792401790945660,\t-0.462748077877963020,\t-0.462703752808110600,\t-0.462659426581498830,\t-0.462615099198238460,\t-0.462570770658439930,\t-0.462526440962214900,\t\n-0.462482110109673770,\t-0.462437778100927340,\t-0.462393444936086080,\t-0.462349110615261630,\t-0.462304775138564330,\t-0.462260438506105150,\t-0.462216100717994460,\t-0.462171761774343940,\t\n-0.462127421675263990,\t-0.462083080420865100,\t-0.462038738011258940,\t-0.461994394446555880,\t-0.461950049726866820,\t-0.461905703852302290,\t-0.461861356822973910,\t-0.461817008638992110,\t\n-0.461772659300467790,\t-0.461728308807511420,\t-0.461683957160234640,\t-0.461639604358748010,\t-0.461595250403162400,\t-0.461550895293588230,\t-0.461506539030137220,\t-0.461462181612919850,\t\n-0.461417823042047040,\t-0.461373463317629300,\t-0.461329102439778260,\t-0.461284740408604450,\t-0.461240377224218460,\t-0.461196012886731840,\t-0.461151647396255250,\t-0.461107280752899530,\t\n-0.461062912956775210,\t-0.461018544007993970,\t-0.460974173906666400,\t-0.460929802652903400,\t-0.460885430246815500,\t-0.460841056688514440,\t-0.460796681978110690,\t-0.460752306115715270,\t\n-0.460707929101438650,\t-0.460663550935392630,\t-0.460619171617687730,\t-0.460574791148434910,\t-0.460530409527744710,\t-0.460486026755728920,\t-0.460441642832498000,\t-0.460397257758163040,\t\n-0.460352871532834500,\t-0.460308484156624120,\t-0.460264095629642600,\t-0.460219705952000460,\t-0.460175315123809440,\t-0.460130923145180060,\t-0.460086530016223460,\t-0.460042135737050110,\t\n-0.459997740307771800,\t-0.459953343728499160,\t-0.459908945999343180,\t-0.459864547120414410,\t-0.459820147091824670,\t-0.459775745913684530,\t-0.459731343586105070,\t-0.459686940109196860,\t\n-0.459642535483071660,\t-0.459598129707840140,\t-0.459553722783613340,\t-0.459509314710501770,\t-0.459464905488617350,\t-0.459420495118070650,\t-0.459376083598972310,\t-0.459331670931434180,\t\n-0.459287257115566840,\t-0.459242842151481370,\t-0.459198426039288400,\t-0.459154008779099790,\t-0.459109590371026110,\t-0.459065170815178500,\t-0.459020750111667540,\t-0.458976328260605080,\t\n-0.458931905262101870,\t-0.458887481116268810,\t-0.458843055823216720,\t-0.458798629383057380,\t-0.458754201795901430,\t-0.458709773061860000,\t-0.458665343181043740,\t-0.458620912153564490,\t\n-0.458576479979532990,\t-0.458532046659059890,\t-0.458487612192257090,\t-0.458443176579235220,\t-0.458398739820105430,\t-0.458354301914978390,\t-0.458309862863966020,\t-0.458265422667178960,\t\n-0.458220981324728330,\t-0.458176538836724880,\t-0.458132095203280460,\t-0.458087650424505830,\t-0.458043204500512060,\t-0.457998757431409890,\t-0.457954309217311170,\t-0.457909859858326720,\t\n-0.457865409354567650,\t-0.457820957706144620,\t-0.457776504913169620,\t-0.457732050975753310,\t-0.457687595894006540,\t-0.457643139668041100,\t-0.457598682297967850,\t-0.457554223783897930,\t\n-0.457509764125942020,\t-0.457465303324212090,\t-0.457420841378818890,\t-0.457376378289873650,\t-0.457331914057487020,\t-0.457287448681771010,\t-0.457242982162836380,\t-0.457198514500794300,\t\n-0.457154045695755520,\t-0.457109575747832010,\t-0.457065104657134570,\t-0.457020632423774390,\t-0.456976159047862260,\t-0.456931684529510050,\t-0.456887208868828660,\t-0.456842732065929290,\t\n-0.456798254120922680,\t-0.456753775033920780,\t-0.456709294805034470,\t-0.456664813434374540,\t-0.456620330922053010,\t-0.456575847268180570,\t-0.456531362472868570,\t-0.456486876536227770,\t\n-0.456442389458370120,\t-0.456397901239406540,\t-0.456353411879448220,\t-0.456308921378605960,\t-0.456264429736991770,\t-0.456219936954716520,\t-0.456175443031891450,\t-0.456130947968627350,\t\n-0.456086451765036260,\t-0.456041954421229080,\t-0.455997455937317000,\t-0.455952956313410870,\t-0.455908455549622780,\t-0.455863953646063520,\t-0.455819450602843960,\t-0.455774946420076210,\t\n-0.455730441097871090,\t-0.455685934636339880,\t-0.455641427035593400,\t-0.455596918295743780,\t-0.455552408416901810,\t-0.455507897399178910,\t-0.455463385242685810,\t-0.455418871947534660,\t\n-0.455374357513836310,\t-0.455329841941702060,\t-0.455285325231242880,\t-0.455240807382570720,\t-0.455196288395796570,\t-0.455151768271031650,\t-0.455107247008386950,\t-0.455062724607974530,\t\n-0.455018201069905310,\t-0.454973676394290150,\t-0.454929150581241230,\t-0.454884623630869460,\t-0.454840095543286080,\t-0.454795566318602070,\t-0.454751035956929560,\t-0.454706504458379460,\t\n-0.454661971823063060,\t-0.454617438051091390,\t-0.454572903142576480,\t-0.454528367097629340,\t-0.454483829916361270,\t-0.454439291598883240,\t-0.454394752145307390,\t-0.454350211555744620,\t\n-0.454305669830306350,\t-0.454261126969103480,\t-0.454216582972248260,\t-0.454172037839851490,\t-0.454127491572024700,\t-0.454082944168878730,\t-0.454038395630525840,\t-0.453993845957076920,\t\n-0.453949295148643020,\t-0.453904743205336250,\t-0.453860190127267640,\t-0.453815635914548600,\t-0.453771080567289990,\t-0.453726524085604150,\t-0.453681966469601960,\t-0.453637407719394870,\t\n-0.453592847835093850,\t-0.453548286816811090,\t-0.453503724664657600,\t-0.453459161378744870,\t-0.453414596959183790,\t-0.453370031406086620,\t-0.453325464719564420,\t-0.453280896899728500,\t\n-0.453236327946689940,\t-0.453191757860560980,\t-0.453147186641452650,\t-0.453102614289475900,\t-0.453058040804743050,\t-0.453013466187365100,\t-0.452968890437453480,\t-0.452924313555119200,\t\n-0.452879735540474560,\t-0.452835156393630590,\t-0.452790576114698750,\t-0.452745994703790010,\t-0.452701412161016730,\t-0.452656828486489910,\t-0.452612243680320990,\t-0.452567657742621090,\t\n-0.452523070673502450,\t-0.452478482473076150,\t-0.452433893141453600,\t-0.452389302678745940,\t-0.452344711085065410,\t-0.452300118360523140,\t-0.452255524505230160,\t-0.452210929519298750,\t\n-0.452166333402840010,\t-0.452121736155965460,\t-0.452077137778786160,\t-0.452032538271414430,\t-0.451987937633961330,\t-0.451943335866538400,\t-0.451898732969256700,\t-0.451854128942228590,\t\n-0.451809523785565210,\t-0.451764917499377970,\t-0.451720310083778000,\t-0.451675701538877710,\t-0.451631091864788170,\t-0.451586481061620860,\t-0.451541869129486960,\t-0.451497256068498830,\t\n-0.451452641878767550,\t-0.451408026560404240,\t-0.451363410113521270,\t-0.451318792538229760,\t-0.451274173834641250,\t-0.451229554002866960,\t-0.451184933043019150,\t-0.451140310955209010,\t\n-0.451095687739548110,\t-0.451051063396147590,\t-0.451006437925119800,\t-0.450961811326575920,\t-0.450917183600627490,\t-0.450872554747385750,\t-0.450827924766962980,\t-0.450783293659470450,\t\n-0.450738661425019620,\t-0.450694028063721770,\t-0.450649393575689280,\t-0.450604757961033280,\t-0.450560121219865330,\t-0.450515483352296740,\t-0.450470844358439870,\t-0.450426204238405850,\t\n-0.450381562992305920,\t-0.450336920620252430,\t-0.450292277122356700,\t-0.450247632498730290,\t-0.450202986749484390,\t-0.450158339874731360,\t-0.450113691874582560,\t-0.450069042749149490,\t\n-0.450024392498543420,\t-0.449979741122876750,\t-0.449935088622260780,\t-0.449890434996807030,\t-0.449845780246626860,\t-0.449801124371832620,\t-0.449756467372535500,\t-0.449711809248847290,\t\n-0.449667150000879150,\t-0.449622489628743460,\t-0.449577828132551650,\t-0.449533165512414790,\t-0.449488501768445460,\t-0.449443836900754850,\t-0.449399170909454690,\t-0.449354503794656130,\t\n-0.449309835556471750,\t-0.449265166195012830,\t-0.449220495710390910,\t-0.449175824102717390,\t-0.449131151372104740,\t-0.449086477518664150,\t-0.449041802542507420,\t-0.448997126443745790,\t\n-0.448952449222491720,\t-0.448907770878856530,\t-0.448863091412951890,\t-0.448818410824889160,\t-0.448773729114780750,\t-0.448729046282738080,\t-0.448684362328872320,\t-0.448639677253296120,\t\n-0.448594991056120720,\t-0.448550303737457800,\t-0.448505615297418780,\t-0.448460925736116070,\t-0.448416235053661070,\t-0.448371543250165480,\t-0.448326850325740660,\t-0.448282156280499060,\t\n-0.448237461114552090,\t-0.448192764828011460,\t-0.448148067420988560,\t-0.448103368893595870,\t-0.448058669245944730,\t-0.448013968478146950,\t-0.447969266590313830,\t-0.447924563582557940,\t\n-0.447879859454990650,\t-0.447835154207723740,\t-0.447790447840868520,\t-0.447745740354537570,\t-0.447701031748842290,\t-0.447656322023893990,\t-0.447611611179805360,\t-0.447566899216687630,\t\n-0.447522186134652670,\t-0.447477471933811880,\t-0.447432756614277780,\t-0.447388040176161790,\t-0.447343322619575710,\t-0.447298603944630890,\t-0.447253884151440020,\t-0.447209163240114390,\t\n-0.447164441210765870,\t-0.447119718063505870,\t-0.447074993798446950,\t-0.447030268415700540,\t-0.446985541915378480,\t-0.446940814297592140,\t-0.446896085562454190,\t-0.446851355710076000,\t\n-0.446806624740569040,\t-0.446761892654045870,\t-0.446717159450618020,\t-0.446672425130397290,\t-0.446627689693495030,\t-0.446582953140024000,\t-0.446538215470095590,\t-0.446493476683821610,\t\n-0.446448736781313580,\t-0.446403995762684080,\t-0.446359253628044570,\t-0.446314510377506970,\t-0.446269766011182680,\t-0.446225020529184340,\t-0.446180273931623460,\t-0.446135526218611910,\t\n-0.446090777390261150,\t-0.446046027446683870,\t-0.446001276387991470,\t-0.445956524214295550,\t-0.445911770925708660,\t-0.445867016522342340,\t-0.445822261004308500,\t-0.445777504371718590,\t\n-0.445732746624685370,\t-0.445687987763320250,\t-0.445643227787735130,\t-0.445598466698041600,\t-0.445553704494352280,\t-0.445508941176778640,\t-0.445464176745432710,\t-0.445419411200425940,\t\n-0.445374644541871030,\t-0.445329876769879510,\t-0.445285107884563270,\t-0.445240337886033900,\t-0.445195566774404080,\t-0.445150794549785340,\t-0.445106021212289200,\t-0.445061246762028410,\t\n-0.445016471199114530,\t-0.444971694523659420,\t-0.444926916735774720,\t-0.444882137835573120,\t-0.444837357823166190,\t-0.444792576698665840,\t-0.444747794462183650,\t-0.444703011113832370,\t\n-0.444658226653723570,\t-0.444613441081969210,\t-0.444568654398680820,\t-0.444523866603971250,\t-0.444479077697951970,\t-0.444434287680735010,\t-0.444389496552431930,\t-0.444344704313155480,\t\n-0.444299910963017300,\t-0.444255116502129340,\t-0.444210320930603200,\t-0.444165524248551660,\t-0.444120726456086250,\t-0.444075927553318710,\t-0.444031127540361670,\t-0.443986326417326880,\t\n-0.443941524184326250,\t-0.443896720841471360,\t-0.443851916388875170,\t-0.443807110826649090,\t-0.443762304154905310,\t-0.443717496373755290,\t-0.443672687483312010,\t-0.443627877483686980,\t\n-0.443583066374992230,\t-0.443538254157339440,\t-0.443493440830841410,\t-0.443448626395609780,\t-0.443403810851756620,\t-0.443358994199393450,\t-0.443314176438633250,\t-0.443269357569587630,\t\n-0.443224537592368180,\t-0.443179716507087760,\t-0.443134894313858110,\t-0.443090071012791190,\t-0.443045246603998690,\t-0.443000421087593520,\t-0.442955594463687260,\t-0.442910766732391990,\t\n-0.442865937893819450,\t-0.442821107948082440,\t-0.442776276895292640,\t-0.442731444735562200,\t-0.442686611469002730,\t-0.442641777095727110,\t-0.442596941615847060,\t-0.442552105029474670,\t\n-0.442507267336721580,\t-0.442462428537700740,\t-0.442417588632523840,\t-0.442372747621302580,\t-0.442327905504149800,\t-0.442283062281177310,\t-0.442238217952497130,\t-0.442193372518221050,\t\n-0.442148525978461880,\t-0.442103678333331420,\t-0.442058829582941790,\t-0.442013979727404640,\t-0.441969128766832970,\t-0.441924276701338490,\t-0.441879423531033320,\t-0.441834569256029150,\t\n-0.441789713876439010,\t-0.441744857392374570,\t-0.441699999803947970,\t-0.441655141111270970,\t-0.441610281314456510,\t-0.441565420413616350,\t-0.441520558408862670,\t-0.441475695300307170,\t\n-0.441430831088062800,\t-0.441385965772241430,\t-0.441341099352954680,\t-0.441296231830315630,\t-0.441251363204435980,\t-0.441206493475427900,\t-0.441161622643403200,\t-0.441116750708474840,\t\n-0.441071877670754620,\t-0.441027003530354680,\t-0.440982128287386870,\t-0.440937251941964090,\t-0.440892374494198210,\t-0.440847495944201420,\t-0.440802616292085450,\t-0.440757735537963380,\t\n-0.440712853681946900,\t-0.440667970724148370,\t-0.440623086664679480,\t-0.440578201503653230,\t-0.440533315241181500,\t-0.440488427877376130,\t-0.440443539412350040,\t-0.440398649846215130,\t\n-0.440353759179083590,\t-0.440308867411067230,\t-0.440263974542279110,\t-0.440219080572831100,\t-0.440174185502835320,\t-0.440129289332403690,\t-0.440084392061649290,\t-0.440039493690683850,\t\n-0.439994594219619730,\t-0.439949693648568670,\t-0.439904791977643820,\t-0.439859889206956960,\t-0.439814985336620390,\t-0.439770080366745920,\t-0.439725174297446730,\t-0.439680267128834510,\t\n-0.439635358861021290,\t-0.439590449494120070,\t-0.439545539028242730,\t-0.439500627463501490,\t-0.439455714800008330,\t-0.439410801037876280,\t-0.439365886177217170,\t-0.439320970218143430,\t\n-0.439276053160766790,\t-0.439231135005200450,\t-0.439186215751556310,\t-0.439141295399946560,\t-0.439096373950483230,\t-0.439051451403279340,\t-0.439006527758446840,\t-0.438961603016097990,\t\n-0.438916677176344750,\t-0.438871750239300200,\t-0.438826822205076290,\t-0.438781893073784960,\t-0.438736962845539260,\t-0.438692031520451160,\t-0.438647099098632980,\t-0.438602165580196600,\t\n-0.438557230965255280,\t-0.438512295253920880,\t-0.438467358446305690,\t-0.438422420542521730,\t-0.438377481542682130,\t-0.438332541446898820,\t-0.438287600255284180,\t-0.438242657967950090,\t\n-0.438197714585009780,\t-0.438152770106575220,\t-0.438107824532758650,\t-0.438062877863672210,\t-0.438017930099428910,\t-0.437972981240140840,\t-0.437928031285920280,\t-0.437883080236879220,\t\n-0.437838128093130880,\t-0.437793174854787250,\t-0.437748220521960270,\t-0.437703265094763150,\t-0.437658308573307840,\t-0.437613350957706760,\t-0.437568392248071920,\t-0.437523432444516470,\t\n-0.437478471547152470,\t-0.437433509556092280,\t-0.437388546471447930,\t-0.437343582293332590,\t-0.437298617021858290,\t-0.437253650657137450,\t-0.437208683199282130,\t-0.437163714648405420,\t\n-0.437118745004619500,\t-0.437073774268036670,\t-0.437028802438769020,\t-0.436983829516929770,\t-0.436938855502630950,\t-0.436893880395984590,\t-0.436848904197103930,\t-0.436803926906101040,\t\n-0.436758948523088280,\t-0.436713969048177770,\t-0.436668988481482720,\t-0.436624006823115200,\t-0.436579024073187720,\t-0.436534040231812190,\t-0.436489055299102040,\t-0.436444069275169210,\t\n-0.436399082160126180,\t-0.436354093954085090,\t-0.436309104657159160,\t-0.436264114269460490,\t-0.436219122791101480,\t-0.436174130222194310,\t-0.436129136562852180,\t-0.436084141813187220,\t\n-0.436039145973311500,\t-0.435994149043338330,\t-0.435949151023379830,\t-0.435904151913548370,\t-0.435859151713956170,\t-0.435814150424716500,\t-0.435769148045941470,\t-0.435724144577743500,\t\n-0.435679140020234830,\t-0.435634134373528710,\t-0.435589127637737220,\t-0.435544119812972920,\t-0.435499110899347950,\t-0.435454100896975560,\t-0.435409089805967930,\t-0.435364077626437580,\t\n-0.435319064358496650,\t-0.435274050002258440,\t-0.435229034557835130,\t-0.435184018025339240,\t-0.435139000404882850,\t-0.435093981696579420,\t-0.435048961900540990,\t-0.435003941016879780,\t\n-0.434958919045709100,\t-0.434913895987141140,\t-0.434868871841288420,\t-0.434823846608263180,\t-0.434778820288178660,\t-0.434733792881147110,\t-0.434688764387281050,\t-0.434643734806692720,\t\n-0.434598704139495420,\t-0.434553672385801390,\t-0.434508639545723160,\t-0.434463605619372970,\t-0.434418570606864120,\t-0.434373534508308850,\t-0.434328497323819780,\t-0.434283459053509010,\t\n-0.434238419697490050,\t-0.434193379255874980,\t-0.434148337728776150,\t-0.434103295116306800,\t-0.434058251418579230,\t-0.434013206635706030,\t-0.433968160767799430,\t-0.433923113814972840,\t\n-0.433878065777338400,\t-0.433833016655008840,\t-0.433787966448096360,\t-0.433742915156714310,\t-0.433697862780975050,\t-0.433652809320991100,\t-0.433607754776874690,\t-0.433562699148739290,\t\n-0.433517642436697210,\t-0.433472584640860970,\t-0.433427525761342860,\t-0.433382465798256400,\t-0.433337404751713730,\t-0.433292342621827140,\t-0.433247279408710110,\t-0.433202215112474860,\t\n-0.433157149733234100,\t-0.433112083271100070,\t-0.433067015726186220,\t-0.433021947098604810,\t-0.432976877388468570,\t-0.432931806595889700,\t-0.432886734720981770,\t-0.432841661763856970,\t\n-0.432796587724627980,\t-0.432751512603407160,\t-0.432706436400307930,\t-0.432661359115442680,\t-0.432616280748923940,\t-0.432571201300864130,\t-0.432526120771376750,\t-0.432481039160574070,\t\n-0.432435956468568360,\t-0.432390872695473160,\t-0.432345787841400760,\t-0.432300701906463970,\t-0.432255614890774960,\t-0.432210526794447330,\t-0.432165437617593350,\t-0.432120347360325840,\t\n-0.432075256022756980,\t-0.432030163605000460,\t-0.431985070107168470,\t-0.431939975529373850,\t-0.431894879871728870,\t-0.431849783134347130,\t-0.431804685317340900,\t-0.431759586420822910,\t\n-0.431714486444905620,\t-0.431669385389702510,\t-0.431624283255325920,\t-0.431579180041888610,\t-0.431534075749502980,\t-0.431488970378282490,\t-0.431443863928339670,\t-0.431398756399786750,\t\n-0.431353647792737330,\t-0.431308538107303800,\t-0.431263427343598900,\t-0.431218315501735060,\t-0.431173202581825840,\t-0.431128088583983600,\t-0.431082973508321140,\t-0.431037857354950820,\t\n-0.430992740123986310,\t-0.430947621815539920,\t-0.430902502429724440,\t-0.430857381966652350,\t-0.430812260426437220,\t-0.430767137809191400,\t-0.430722014115027750,\t-0.430676889344058680,\t\n-0.430631763496397760,\t-0.430586636572157460,\t-0.430541508571450130,\t-0.430496379494389460,\t-0.430451249341087860,\t-0.430406118111658080,\t-0.430360985806212630,\t-0.430315852424865140,\t\n-0.430270717967727980,\t-0.430225582434914040,\t-0.430180445826535750,\t-0.430135308142706780,\t-0.430090169383539500,\t-0.430045029549146810,\t-0.429999888639641110,\t-0.429954746655136110,\t\n-0.429909603595744260,\t-0.429864459461578420,\t-0.429819314252750990,\t-0.429774167969375680,\t-0.429729020611564980,\t-0.429683872179431270,\t-0.429638722673088340,\t-0.429593572092648590,\t\n-0.429548420438224890,\t-0.429503267709929750,\t-0.429458113907876860,\t-0.429412959032178630,\t-0.429367803082948090,\t-0.429322646060297570,\t-0.429277487964340840,\t-0.429232328795190410,\t\n-0.429187168552959190,\t-0.429142007237759580,\t-0.429096844849705390,\t-0.429051681388909090,\t-0.429006516855483580,\t-0.428961351249541380,\t-0.428916184571196180,\t-0.428871016820560560,\t\n-0.428825847997747370,\t-0.428780678102869180,\t-0.428735507136039700,\t-0.428690335097371420,\t-0.428645161986976890,\t-0.428599987804969880,\t-0.428554812551462940,\t-0.428509636226568900,\t\n-0.428464458830400410,\t-0.428419280363071200,\t-0.428374100824693740,\t-0.428328920215381050,\t-0.428283738535245650,\t-0.428238555784401290,\t-0.428193371962960530,\t-0.428148187071036410,\t\n-0.428103001108741390,\t-0.428057814076189260,\t-0.428012625973492540,\t-0.427967436800764320,\t-0.427922246558117110,\t-0.427877055245664660,\t-0.427831862863519600,\t-0.427786669411794440,\t\n-0.427741474890603050,\t-0.427696279300057940,\t-0.427651082640272180,\t-0.427605884911358260,\t-0.427560686113430070,\t-0.427515486246600130,\t-0.427470285310981470,\t-0.427425083306686720,\t\n-0.427379880233829670,\t-0.427334676092522900,\t-0.427289470882879440,\t-0.427244264605011910,\t-0.427199057259034120,\t-0.427153848845058690,\t-0.427108639363198650,\t-0.427063428813566570,\t\n-0.427018217196276360,\t-0.426973004511440600,\t-0.426927790759171920,\t-0.426882575939584120,\t-0.426837360052789940,\t-0.426792143098902340,\t-0.426746925078034020,\t-0.426701705990298720,\t\n-0.426656485835809170,\t-0.426611264614678460,\t-0.426566042327019170,\t-0.426520818972945140,\t-0.426475594552569060,\t-0.426430369066004010,\t-0.426385142513362680,\t-0.426339914894758860,\t\n-0.426294686210305250,\t-0.426249456460114920,\t-0.426204225644300550,\t-0.426158993762976000,\t-0.426113760816253960,\t-0.426068526804247170,\t-0.426023291727069430,\t-0.425978055584833480,\t\n-0.425932818377652340,\t-0.425887580105638820,\t-0.425842340768906700,\t-0.425797100367568790,\t-0.425751858901738060,\t-0.425706616371527350,\t-0.425661372777050410,\t-0.425616128118420090,\t\n-0.425570882395749470,\t-0.425525635609151240,\t-0.425480387758739310,\t-0.425435138844626410,\t-0.425389888866925640,\t-0.425344637825749770,\t-0.425299385721212670,\t-0.425254132553427140,\t\n-0.425208878322506310,\t-0.425163623028562860,\t-0.425118366671710710,\t-0.425073109252062710,\t-0.425027850769731490,\t-0.424982591224831060,\t-0.424937330617474180,\t-0.424892068947773930,\t\n-0.424846806215843140,\t-0.424801542421795690,\t-0.424756277565744410,\t-0.424711011647802450,\t-0.424665744668082550,\t-0.424620476626698660,\t-0.424575207523763600,\t-0.424529937359390540,\t\n-0.424484666133692230,\t-0.424439393846782640,\t-0.424394120498774560,\t-0.424348846089781240,\t-0.424303570619915360,\t-0.424258294089290940,\t-0.424213016498020790,\t-0.424167737846217700,\t\n-0.424122458133995680,\t-0.424077177361467490,\t-0.424031895528746370,\t-0.423986612635945110,\t-0.423941328683177740,\t-0.423896043670557050,\t-0.423850757598196240,\t-0.423805470466208090,\t\n-0.423760182274706740,\t-0.423714893023804880,\t-0.423669602713615810,\t-0.423624311344252320,\t-0.423579018915828500,\t-0.423533725428457080,\t-0.423488430882251350,\t-0.423443135277324130,\t\n-0.423397838613789490,\t-0.423352540891760280,\t-0.423307242111349290,\t-0.423261942272670610,\t-0.423216641375837090,\t-0.423171339420961910,\t-0.423126036408158050,\t-0.423080732337539460,\t\n-0.423035427209219050,\t-0.422990121023310070,\t-0.422944813779925380,\t-0.422899505479179040,\t-0.422854196121183970,\t-0.422808885706053410,\t-0.422763574233900210,\t-0.422718261704838450,\t\n-0.422672948118981100,\t-0.422627633476441330,\t-0.422582317777332130,\t-0.422537001021767500,\t-0.422491683209860360,\t-0.422446364341724000,\t-0.422401044417471390,\t-0.422355723437216500,\t\n-0.422310401401072340,\t-0.422265078309151780,\t-0.422219754161568930,\t-0.422174428958436650,\t-0.422129102699868360,\t-0.422083775385976860,\t-0.422038447016876370,\t-0.421993117592679710,\t\n-0.421947787113500280,\t-0.421902455579451000,\t-0.421857122990645980,\t-0.421811789347198150,\t-0.421766454649220800,\t-0.421721118896826950,\t-0.421675782090130740,\t-0.421630444229245000,\t\n-0.421585105314283230,\t-0.421539765345358200,\t-0.421494424322584220,\t-0.421449082246074190,\t-0.421403739115941030,\t-0.421358394932298930,\t-0.421313049695260840,\t-0.421267703404940130,\t\n-0.421222356061449750,\t-0.421177007664903900,\t-0.421131658215415540,\t-0.421086307713097960,\t-0.421040956158064310,\t-0.420995603550428590,\t-0.420950249890303880,\t-0.420904895177803610,\t\n-0.420859539413040660,\t-0.420814182596129240,\t-0.420768824727182360,\t-0.420723465806313420,\t-0.420678105833635460,\t-0.420632744809262600,\t-0.420587382733307870,\t-0.420542019605884330,\t\n-0.420496655427106130,\t-0.420451290197086270,\t-0.420405923915938170,\t-0.420360556583774860,\t-0.420315188200710620,\t-0.420269818766858320,\t-0.420224448282331520,\t-0.420179076747243200,\t\n-0.420133704161707590,\t-0.420088330525837720,\t-0.420042955839747050,\t-0.419997580103548540,\t-0.419952203317356500,\t-0.419906825481284000,\t-0.419861446595444390,\t-0.419816066659950750,\t\n-0.419770685674917320,\t-0.419725303640457240,\t-0.419679920556683460,\t-0.419634536423710290,\t-0.419589151241650800,\t-0.419543765010618410,\t-0.419498377730726240,\t-0.419452989402088470,\t\n-0.419407600024818250,\t-0.419362209599029030,\t-0.419316818124833900,\t-0.419271425602347150,\t-0.419226032031681790,\t-0.419180637412951360,\t-0.419135241746268930,\t-0.419089845031748790,\t\n-0.419044447269504070,\t-0.418999048459648190,\t-0.418953648602294340,\t-0.418908247697556750,\t-0.418862845745548550,\t-0.418817442746383220,\t-0.418772038700173880,\t-0.418726633607034830,\t\n-0.418681227467079200,\t-0.418635820280420120,\t-0.418590412047171900,\t-0.418545002767447600,\t-0.418499592441360870,\t-0.418454181069024710,\t-0.418408768650553490,\t-0.418363355186060380,\t\n-0.418317940675658860,\t-0.418272525119462110,\t-0.418227108517584380,\t-0.418181690870138960,\t-0.418136272177239250,\t-0.418090852438998520,\t-0.418045431655531040,\t-0.418000009826949960,\t\n-0.417954586953368900,\t-0.417909163034900940,\t-0.417863738071660440,\t-0.417818312063760630,\t-0.417772885011314650,\t-0.417727456914436860,\t-0.417682027773240430,\t-0.417636597587838890,\t\n-0.417591166358345480,\t-0.417545734084874550,\t-0.417500300767539300,\t-0.417454866406453300,\t-0.417409431001729720,\t-0.417363994553482940,\t-0.417318557061826250,\t-0.417273118526873100,\t\n-0.417227678948736750,\t-0.417182238327531650,\t-0.417136796663370890,\t-0.417091353956368200,\t-0.417045910206636730,\t-0.417000465414290810,\t-0.416955019579443810,\t-0.416909572702208800,\t\n-0.416864124782700300,\t-0.416818675821031490,\t-0.416773225817315960,\t-0.416727774771666950,\t-0.416682322684198970,\t-0.416636869555025100,\t-0.416591415384259140,\t-0.416545960172014170,\t\n-0.416500503918404760,\t-0.416455046623544050,\t-0.416409588287545760,\t-0.416364128910523050,\t-0.416318668492590470,\t-0.416273207033861170,\t-0.416227744534448880,\t-0.416182280994466800,\t\n-0.416136816414029500,\t-0.416091350793250050,\t-0.416045884132242310,\t-0.416000416431119400,\t-0.415954947689995910,\t-0.415909477908984970,\t-0.415864007088199980,\t-0.415818535227755410,\t\n-0.415773062327764450,\t-0.415727588388340840,\t-0.415682113409597880,\t-0.415636637391650020,\t-0.415591160334610580,\t-0.415545682238593230,\t-0.415500203103711270,\t-0.415454722930079230,\t\n-0.415409241717810350,\t-0.415363759467018370,\t-0.415318276177816580,\t-0.415272791850319570,\t-0.415227306484640510,\t-0.415181820080893220,\t-0.415136332639190920,\t-0.415090844159648250,\t\n-0.415045354642378460,\t-0.414999864087494900,\t-0.414954372495112020,\t-0.414908879865343250,\t-0.414863386198302260,\t-0.414817891494102420,\t-0.414772395752858290,\t-0.414726898974683120,\t\n-0.414681401159690710,\t-0.414635902307994410,\t-0.414590402419708740,\t-0.414544901494947050,\t-0.414499399533823140,\t-0.414453896536450320,\t-0.414408392502943150,\t-0.414362887433415040,\t\n-0.414317381327979680,\t-0.414271874186750430,\t-0.414226366009841920,\t-0.414180856797367550,\t-0.414135346549440560,\t-0.414089835266175650,\t-0.414044322947686120,\t-0.413998809594085800,\t\n-0.413953295205488070,\t-0.413907779782007490,\t-0.413862263323757470,\t-0.413816745830851760,\t-0.413771227303403820,\t-0.413725707741528230,\t-0.413680187145338330,\t-0.413634665514947990,\t\n-0.413589142850470550,\t-0.413543619152020650,\t-0.413498094419711750,\t-0.413452568653657590,\t-0.413407041853971590,\t-0.413361514020768430,\t-0.413315985154161460,\t-0.413270455254264530,\t\n-0.413224924321191070,\t-0.413179392355055690,\t-0.413133859355971800,\t-0.413088325324052870,\t-0.413042790259413590,\t-0.412997254162167260,\t-0.412951717032427830,\t-0.412906178870308730,\t\n-0.412860639675924510,\t-0.412815099449388770,\t-0.412769558190815230,\t-0.412724015900317430,\t-0.412678472578009990,\t-0.412632928224006320,\t-0.412587382838420390,\t-0.412541836421365550,\t\n-0.412496288972956540,\t-0.412450740493306820,\t-0.412405190982530260,\t-0.412359640440740300,\t-0.412314088868051650,\t-0.412268536264577770,\t-0.412222982630432170,\t-0.412177427965729480,\t\n-0.412131872270583230,\t-0.412086315545107270,\t-0.412040757789415180,\t-0.411995199003621580,\t-0.411949639187839940,\t-0.411904078342184290,\t-0.411858516466767970,\t-0.411812953561705770,\t\n-0.411767389627111180,\t-0.411721824663098150,\t-0.411676258669780140,\t-0.411630691647271900,\t-0.411585123595686890,\t-0.411539554515139130,\t-0.411493984405742030,\t-0.411448413267610390,\t\n-0.411402841100857730,\t-0.411357267905597570,\t-0.411311693681944590,\t-0.411266118430012430,\t-0.411220542149914940,\t-0.411174964841765690,\t-0.411129386505679480,\t-0.411083807141769790,\t\n-0.411038226750150560,\t-0.410992645330935320,\t-0.410947062884238930,\t-0.410901479410174850,\t-0.410855894908857100,\t-0.410810309380399200,\t-0.410764722824915940,\t-0.410719135242520850,\t\n-0.410673546633327950,\t-0.410627956997450750,\t-0.410582366335004110,\t-0.410536774646101500,\t-0.410491181930856600,\t-0.410445588189384090,\t-0.410399993421797670,\t-0.410354397628211240,\t\n-0.410308800808738380,\t-0.410263202963493940,\t-0.410217604092591500,\t-0.410172004196145080,\t-0.410126403274268190,\t-0.410080801327075750,\t-0.410035198354681270,\t-0.409989594357198840,\t\n-0.409943989334741970,\t-0.409898383287425560,\t-0.409852776215363150,\t-0.409807168118668850,\t-0.409761558997456200,\t-0.409715948851840040,\t-0.409670337681934060,\t-0.409624725487852230,\t\n-0.409579112269708110,\t-0.409533498027616680,\t-0.409487882761691510,\t-0.409442266472046180,\t-0.409396649158795590,\t-0.409351030822053430,\t-0.409305411461933670,\t-0.409259791078549980,\t\n-0.409214169672017180,\t-0.409168547242449000,\t-0.409122923789959460,\t-0.409077299314662190,\t-0.409031673816672050,\t-0.408986047296102720,\t-0.408940419753068330,\t-0.408894791187682460,\t\n-0.408849161600060020,\t-0.408803530990314630,\t-0.408757899358560440,\t-0.408712266704911120,\t-0.408666633029481530,\t-0.408620998332385350,\t-0.408575362613736280,\t-0.408529725873649220,\t\n-0.408484088112237800,\t-0.408438449329616200,\t-0.408392809525898070,\t-0.408347168701198300,\t-0.408301526855630590,\t-0.408255883989309120,\t-0.408210240102347520,\t-0.408164595194860700,\t\n-0.408118949266962410,\t-0.408073302318766710,\t-0.408027654350387400,\t-0.407982005361939350,\t-0.407936355353536230,\t-0.407890704325292290,\t-0.407845052277321150,\t-0.407799399209737790,\t\n-0.407753745122655940,\t-0.407708090016189350,\t-0.407662433890452920,\t-0.407616776745560410,\t-0.407571118581625920,\t-0.407525459398763280,\t-0.407479799197087320,\t-0.407434137976711960,\t\n-0.407388475737751170,\t-0.407342812480318840,\t-0.407297148204529890,\t-0.407251482910498010,\t-0.407205816598337490,\t-0.407160149268161960,\t-0.407114480920086510,\t-0.407068811554224860,\t\n-0.407023141170691160,\t-0.406977469769599200,\t-0.406931797351064000,\t-0.406886123915199290,\t-0.406840449462119280,\t-0.406794773991937700,\t-0.406749097504769620,\t-0.406703420000728790,\t\n-0.406657741479929000,\t-0.406612061942485280,\t-0.406566381388511420,\t-0.406520699818121560,\t-0.406475017231429590,\t-0.406429333628550440,\t-0.406383649009598000,\t-0.406337963374686420,\t\n-0.406292276723929480,\t-0.406246589057442320,\t-0.406200900375338620,\t-0.406155210677732750,\t-0.406109519964738430,\t-0.406063828236470690,\t-0.406018135493043390,\t-0.405972441734570700,\t\n-0.405926746961166600,\t-0.405881051172945980,\t-0.405835354370022720,\t-0.405789656552510700,\t-0.405743957720524910,\t-0.405698257874179240,\t-0.405652557013587930,\t-0.405606855138864850,\t\n-0.405561152250125010,\t-0.405515448347482270,\t-0.405469743431050970,\t-0.405424037500944860,\t-0.405378330557279070,\t-0.405332622600167450,\t-0.405286913629724240,\t-0.405241203646063420,\t\n-0.405195492649299940,\t-0.405149780639547760,\t-0.405104067616921080,\t-0.405058353581533860,\t-0.405012638533501170,\t-0.404966922472936860,\t-0.404921205399954850,\t-0.404875487314670270,\t\n-0.404829768217196910,\t-0.404784048107649170,\t-0.404738326986140870,\t-0.404692604852787190,\t-0.404646881707701970,\t-0.404601157550999570,\t-0.404555432382793840,\t-0.404509706203199980,\t\n-0.404463979012331830,\t-0.404418250810303750,\t-0.404372521597229640,\t-0.404326791373224580,\t-0.404281060138402590,\t-0.404235327892877920,\t-0.404189594636764570,\t-0.404143860370177580,\t\n-0.404098125093230950,\t-0.404052388806038660,\t-0.404006651508715730,\t-0.403960913201376230,\t-0.403915173884134450,\t-0.403869433557104310,\t-0.403823692220400930,\t-0.403777949874138400,\t\n-0.403732206518430950,\t-0.403686462153392600,\t-0.403640716779138540,\t-0.403594970395782630,\t-0.403549223003439320,\t-0.403503474602222520,\t-0.403457725192247480,\t-0.403411974773628110,\t\n-0.403366223346478760,\t-0.403320470910913500,\t-0.403274717467047460,\t-0.403228963014994610,\t-0.403183207554869360,\t-0.403137451086785730,\t-0.403091693610858840,\t-0.403045935127202660,\t\n-0.403000175635931320,\t-0.402954415137159900,\t-0.402908653631002480,\t-0.402862891117573400,\t-0.402817127596986680,\t-0.402771363069357570,\t-0.402725597534800030,\t-0.402679830993428520,\t\n-0.402634063445357020,\t-0.402588294890700750,\t-0.402542525329573740,\t-0.402496754762090460,\t-0.402450983188364860,\t-0.402405210608512200,\t-0.402359437022646540,\t-0.402313662430882240,\t\n-0.402267886833333420,\t-0.402222110230115280,\t-0.402176332621341840,\t-0.402130554007127160,\t-0.402084774387586550,\t-0.402038993762833970,\t-0.401993212132983950,\t-0.401947429498150430,\t\n-0.401901645858448790,\t-0.401855861213992970,\t-0.401810075564897560,\t-0.401764288911276580,\t-0.401718501253245210,\t-0.401672712590917640,\t-0.401626922924408270,\t-0.401581132253831190,\t\n-0.401535340579301680,\t-0.401489547900933770,\t-0.401443754218842040,\t-0.401397959533140560,\t-0.401352163843944510,\t-0.401306367151368140,\t-0.401260569455525350,\t-0.401214770756531610,\t\n-0.401168971054500890,\t-0.401123170349547810,\t-0.401077368641786340,\t-0.401031565931331880,\t-0.400985762218298510,\t-0.400939957502800700,\t-0.400894151784952630,\t-0.400848345064869550,\t\n-0.400802537342665630,\t-0.400756728618455400,\t-0.400710918892352890,\t-0.400665108164473480,\t-0.400619296434931380,\t-0.400573483703840940,\t-0.400527669971316450,\t-0.400481855237473150,\t\n-0.400436039502425290,\t-0.400390222766287270,\t-0.400344405029173290,\t-0.400298586291198690,\t-0.400252766552477660,\t-0.400206945813124270,\t-0.400161124073253940,\t-0.400115301332980790,\t\n-0.400069477592419400,\t-0.400023652851683900,\t-0.399977827110889690,\t-0.399932000370150920,\t-0.399886172629582150,\t-0.399840343889297510,\t-0.399794514149412420,\t-0.399748683410041050,\t\n-0.399702851671297990,\t-0.399657018933297410,\t-0.399611185196154680,\t-0.399565350459983930,\t-0.399519514724899880,\t-0.399473677991016570,\t-0.399427840258449520,\t-0.399382001527312850,\t\n-0.399336161797720750,\t-0.399290321069788680,\t-0.399244479343630830,\t-0.399198636619361720,\t-0.399152792897095650,\t-0.399106948176948030,\t-0.399061102459033030,\t-0.399015255743465250,\t\n-0.398969408030358910,\t-0.398923559319829480,\t-0.398877709611991150,\t-0.398831858906958550,\t-0.398786007204845860,\t-0.398740154505768610,\t-0.398694300809840970,\t-0.398648446117177540,\t\n-0.398602590427892640,\t-0.398556733742101600,\t-0.398510876059918810,\t-0.398465017381458340,\t-0.398419157706835780,\t-0.398373297036165310,\t-0.398327435369561610,\t-0.398281572707138930,\t\n-0.398235709049012730,\t-0.398189844395297200,\t-0.398143978746107070,\t-0.398098112101556660,\t-0.398052244461761300,\t-0.398006375826835350,\t-0.397960506196893490,\t-0.397914635572049920,\t\n-0.397868763952420210,\t-0.397822891338118540,\t-0.397777017729259660,\t-0.397731143125957860,\t-0.397685267528328560,\t-0.397639390936486150,\t-0.397593513350544770,\t-0.397547634770620110,\t\n-0.397501755196826290,\t-0.397455874629278120,\t-0.397409993068089830,\t-0.397364110513377000,\t-0.397318226965253870,\t-0.397272342423835190,\t-0.397226456889235250,\t-0.397180570361569560,\t\n-0.397134682840952440,\t-0.397088794327498610,\t-0.397042904821322370,\t-0.396997014322539310,\t-0.396951122831263710,\t-0.396905230347610270,\t-0.396859336871693390,\t-0.396813442403628590,\t\n-0.396767546943530110,\t-0.396721650491512810,\t-0.396675753047690980,\t-0.396629854612180200,\t-0.396583955185094760,\t-0.396538054766549020,\t-0.396492153356658550,\t-0.396446250955537650,\t\n-0.396400347563301170,\t-0.396354443180063410,\t-0.396308537805940000,\t-0.396262631441045180,\t-0.396216724085493800,\t-0.396170815739400160,\t-0.396124906402879950,\t-0.396078996076047460,\t\n-0.396033084759017500,\t-0.395987172451904350,\t-0.395941259154823750,\t-0.395895344867889960,\t-0.395849429591217830,\t-0.395803513324921700,\t-0.395757596069117200,\t-0.395711677823918750,\t\n-0.395665758589440640,\t-0.395619838365798560,\t-0.395573917153106910,\t-0.395527994951480440,\t-0.395482071761033560,\t-0.395436147581881950,\t-0.395390222414139960,\t-0.395344296257922390,\t\n-0.395298369113343650,\t-0.395252440980519480,\t-0.395206511859564120,\t-0.395160581750592540,\t-0.395114650653719090,\t-0.395068718569059400,\t-0.395022785496727920,\t-0.394976851436839470,\t\n-0.394930916389508500,\t-0.394884980354850650,\t-0.394839043332980310,\t-0.394793105324012020,\t-0.394747166328061340,\t-0.394701226345242740,\t-0.394655285375671070,\t-0.394609343419460800,\t\n-0.394563400476727550,\t-0.394517456547585800,\t-0.394471511632150440,\t-0.394425565730535890,\t-0.394379618842857830,\t-0.394333670969230670,\t-0.394287722109769370,\t-0.394241772264588400,\t\n-0.394195821433803330,\t-0.394149869617528790,\t-0.394103916815879530,\t-0.394057963028970060,\t-0.394012008256916120,\t-0.393966052499832130,\t-0.393920095757833040,\t-0.393874138031033270,\t\n-0.393828179319548550,\t-0.393782219623493410,\t-0.393736258942982360,\t-0.393690297278130990,\t-0.393644334629053900,\t-0.393598370995866030,\t-0.393552406378681770,\t-0.393506440777616930,\t\n-0.393460474192785960,\t-0.393414506624303830,\t-0.393368538072285000,\t-0.393322568536845220,\t-0.393276598018099060,\t-0.393230626516161360,\t-0.393184654031146720,\t-0.393138680563170860,\t\n-0.393092706112348310,\t-0.393046730678793920,\t-0.393000754262622380,\t-0.392954776863949310,\t-0.392908798482889340,\t-0.392862819119556950,\t-0.392816838774067920,\t-0.392770857446536780,\t\n-0.392724875137078490,\t-0.392678891845807620,\t-0.392632907572839920,\t-0.392586922318289950,\t-0.392540936082272700,\t-0.392494948864902660,\t-0.392448960666295700,\t-0.392402971486566330,\t\n-0.392356981325829520,\t-0.392310990184199850,\t-0.392264998061793100,\t-0.392219004958723860,\t-0.392173010875107090,\t-0.392127015811057410,\t-0.392081019766690630,\t-0.392035022742121260,\t\n-0.391989024737463940,\t-0.391943025752834460,\t-0.391897025788347400,\t-0.391851024844117820,\t-0.391805022920260200,\t-0.391759020016890500,\t-0.391713016134123240,\t-0.391667011272073430,\t\n-0.391621005430855650,\t-0.391574998610585810,\t-0.391528990811378430,\t-0.391482982033348580,\t-0.391436972276610890,\t-0.391390961541281220,\t-0.391344949827474090,\t-0.391298937135304560,\t\n-0.391252923464887330,\t-0.391206908816338180,\t-0.391160893189771760,\t-0.391114876585302700,\t-0.391068859003046890,\t-0.391022840443118860,\t-0.390976820905633790,\t-0.390930800390706270,\t\n-0.390884778898452080,\t-0.390838756428986020,\t-0.390792732982423010,\t-0.390746708558877830,\t-0.390700683158466230,\t-0.390654656781302960,\t-0.390608629427503020,\t-0.390562601097181110,\t\n-0.390516571790453070,\t-0.390470541507433650,\t-0.390424510248237820,\t-0.390378478012980370,\t-0.390332444801777090,\t-0.390286410614742730,\t-0.390240375451992360,\t-0.390194339313640610,\t\n-0.390148302199803400,\t-0.390102264110595450,\t-0.390056225046131470,\t-0.390010185006527290,\t-0.389964143991897660,\t-0.389918102002357660,\t-0.389872059038022020,\t-0.389826015099006610,\t\n-0.389779970185426210,\t-0.389733924297395840,\t-0.389687877435030310,\t-0.389641829598445400,\t-0.389595780787755970,\t-0.389549731003077100,\t-0.389503680244523480,\t-0.389457628512211110,\t\n-0.389411575806254630,\t-0.389365522126769170,\t-0.389319467473869530,\t-0.389273411847671670,\t-0.389227355248290220,\t-0.389181297675840030,\t-0.389135239130436960,\t-0.389089179612195800,\t\n-0.389043119121231740,\t-0.388997057657659410,\t-0.388950995221594880,\t-0.388904931813152830,\t-0.388858867432448460,\t-0.388812802079596560,\t-0.388766735754712990,\t-0.388720668457912640,\t\n-0.388674600189310600,\t-0.388628530949021610,\t-0.388582460737161790,\t-0.388536389553845730,\t-0.388490317399188770,\t-0.388444244273305540,\t-0.388398170176312170,\t-0.388352095108323300,\t\n-0.388306019069453830,\t-0.388259942059819730,\t-0.388213864079535790,\t-0.388167785128717140,\t-0.388121705207478680,\t-0.388075624315936340,\t-0.388029542454204900,\t-0.387983459622399660,\t\n-0.387937375820635310,\t-0.387891291049027980,\t-0.387845205307692400,\t-0.387799118596743760,\t-0.387753030916296980,\t-0.387706942266468010,\t-0.387660852647371710,\t-0.387614762059123210,\t\n-0.387568670501837460,\t-0.387522577975630440,\t-0.387476484480616950,\t-0.387430390016912260,\t-0.387384294584631190,\t-0.387338198183889760,\t-0.387292100814802860,\t-0.387246002477485310,\t\n-0.387199903172053160,\t-0.387153802898621220,\t-0.387107701657304850,\t-0.387061599448218720,\t-0.387015496271479080,\t-0.386969392127200660,\t-0.386923287015498770,\t-0.386877180936488260,\t\n-0.386831073890285150,\t-0.386784965877004390,\t-0.386738856896761240,\t-0.386692746949670540,\t-0.386646636035848370,\t-0.386600524155409630,\t-0.386554411308469570,\t-0.386508297495143040,\t\n-0.386462182715546170,\t-0.386416066969793910,\t-0.386369950258001030,\t-0.386323832580283690,\t-0.386277713936756750,\t-0.386231594327535510,\t-0.386185473752734930,\t-0.386139352212471030,\t\n-0.386093229706858780,\t-0.386047106236013460,\t-0.386000981800049940,\t-0.385954856399084390,\t-0.385908730033231730,\t-0.385862602702607190,\t-0.385816474407325750,\t-0.385770345147503520,\t\n-0.385724214923255480,\t-0.385678083734696860,\t-0.385631951581942630,\t-0.385585818465108920,\t-0.385539684384310690,\t-0.385493549339662840,\t-0.385447413331281520,\t-0.385401276359281620,\t\n-0.385355138423778610,\t-0.385308999524887290,\t-0.385262859662723890,\t-0.385216718837403330,\t-0.385170577049041010,\t-0.385124434297751780,\t-0.385078290583651950,\t-0.385032145906856360,\t\n-0.384986000267480370,\t-0.384939853665638990,\t-0.384893706101448410,\t-0.384847557575023540,\t-0.384801408086479780,\t-0.384755257635932100,\t-0.384709106223496690,\t-0.384662953849288500,\t\n-0.384616800513422510,\t-0.384570646216014940,\t-0.384524490957180780,\t-0.384478334737035350,\t-0.384432177555693700,\t-0.384386019413272000,\t-0.384339860309885260,\t-0.384293700245648910,\t\n-0.384247539220677840,\t-0.384201377235088350,\t-0.384155214288995410,\t-0.384109050382514470,\t-0.384062885515760450,\t-0.384016719688849650,\t-0.383970552901897020,\t-0.383924385155018030,\t\n-0.383878216448327700,\t-0.383832046781942220,\t-0.383785876155976590,\t-0.383739704570546290,\t-0.383693532025766340,\t-0.383647358521752910,\t-0.383601184058621150,\t-0.383555008636486010,\t\n-0.383508832255463730,\t-0.383462654915669390,\t-0.383416476617218390,\t-0.383370297360225820,\t-0.383324117144807910,\t-0.383277935971079680,\t-0.383231753839156640,\t-0.383185570749153770,\t\n-0.383139386701187410,\t-0.383093201695372590,\t-0.383047015731824760,\t-0.383000828810658940,\t-0.382954640931991550,\t-0.382908452095937490,\t-0.382862262302612280,\t-0.382816071552131040,\t\n-0.382769879844610030,\t-0.382723687180164360,\t-0.382677493558909010,\t-0.382631298980960320,\t-0.382585103446433430,\t-0.382538906955443790,\t-0.382492709508106430,\t-0.382446511104537700,\t\n-0.382400311744852730,\t-0.382354111429166980,\t-0.382307910157595520,\t-0.382261707930254710,\t-0.382215504747259630,\t-0.382169300608725780,\t-0.382123095514768250,\t-0.382076889465503390,\t\n-0.382030682461046320,\t-0.381984474501512570,\t-0.381938265587017210,\t-0.381892055717676590,\t-0.381845844893605850,\t-0.381799633114920050,\t-0.381753420381735600,\t-0.381707206694167580,\t\n-0.381660992052331560,\t-0.381614776456342670,\t-0.381568559906317220,\t-0.381522342402370370,\t-0.381476123944617720,\t-0.381429904533174270,\t-0.381383684168156490,\t-0.381337462849679560,\t\n-0.381291240577858900,\t-0.381245017352809750,\t-0.381198793174648500,\t-0.381152568043490240,\t-0.381106341959450530,\t-0.381060114922644580,\t-0.381013886933188770,\t-0.380967657991198250,\t\n-0.380921428096788530,\t-0.380875197250074900,\t-0.380828965451173620,\t-0.380782732700199970,\t-0.380736498997269080,\t-0.380690264342497360,\t-0.380644028735999950,\t-0.380597792177892470,\t\n-0.380551554668290100,\t-0.380505316207309260,\t-0.380459076795065130,\t-0.380412836431673340,\t-0.380366595117249020,\t-0.380320352851908570,\t-0.380274109635767300,\t-0.380227865468940770,\t\n-0.380181620351544130,\t-0.380135374283693870,\t-0.380089127265505140,\t-0.380042879297093630,\t-0.379996630378574510,\t-0.379950380510064190,\t-0.379904129691677970,\t-0.379857877923530980,\t\n-0.379811625205739690,\t-0.379765371538419380,\t-0.379719116921685640,\t-0.379672861355653650,\t-0.379626604840439970,\t-0.379580347376159750,\t-0.379534088962928670,\t-0.379487829600861970,\t\n-0.379441569290076050,\t-0.379395308030686270,\t-0.379349045822808210,\t-0.379302782666557090,\t-0.379256518562049450,\t-0.379210253509400520,\t-0.379163987508725930,\t-0.379117720560140980,\t\n-0.379071452663762130,\t-0.379025183819704680,\t-0.378978914028083810,\t-0.378932643289016100,\t-0.378886371602616790,\t-0.378840098969001560,\t-0.378793825388285600,\t-0.378747550860585540,\t\n-0.378701275386016610,\t-0.378654998964694510,\t-0.378608721596734420,\t-0.378562443282253020,\t-0.378516164021365450,\t-0.378469883814187500,\t-0.378423602660834470,\t-0.378377320561422810,\t\n-0.378331037516067840,\t-0.378284753524885280,\t-0.378238468587990430,\t-0.378192182705499810,\t-0.378145895877528730,\t-0.378099608104192520,\t-0.378053319385607660,\t-0.378007029721889540,\t\n-0.377960739113153870,\t-0.377914447559515860,\t-0.377868155061092230,\t-0.377821861617998130,\t-0.377775567230349440,\t-0.377729271898261390,\t-0.377682975621850600,\t-0.377636678401232330,\t\n-0.377590380236522420,\t-0.377544081127836110,\t-0.377497781075290030,\t-0.377451480078999480,\t-0.377405178139080200,\t-0.377358875255647600,\t-0.377312571428818240,\t-0.377266266658707440,\t\n-0.377219960945430920,\t-0.377173654289104150,\t-0.377127346689843660,\t-0.377081038147764720,\t-0.377034728662982880,\t-0.376988418235614580,\t-0.376942106865775230,\t-0.376895794553580630,\t\n-0.376849481299146080,\t-0.376803167102588320,\t-0.376756851964022590,\t-0.376710535883564730,\t-0.376664218861330170,\t-0.376617900897435410,\t-0.376571581991995920,\t-0.376525262145127490,\t\n-0.376478941356945480,\t-0.376432619627566520,\t-0.376386296957106070,\t-0.376339973345679810,\t-0.376293648793403210,\t-0.376247323300392960,\t-0.376200996866764340,\t-0.376154669492632820,\t\n-0.376108341178115040,\t-0.376062011923326440,\t-0.376015681728382790,\t-0.375969350593399530,\t-0.375923018518493300,\t-0.375876685503779510,\t-0.375830351549374050,\t-0.375784016655392240,\t\n-0.375737680821950860,\t-0.375691344049165210,\t-0.375645006337151250,\t-0.375598667686024350,\t-0.375552328095901220,\t-0.375505987566897240,\t-0.375459646099128300,\t-0.375413303692709810,\t\n-0.375366960347758460,\t-0.375320616064389770,\t-0.375274270842719080,\t-0.375227924682863150,\t-0.375181577584937420,\t-0.375135229549057700,\t-0.375088880575339570,\t-0.375042530663899590,\t\n-0.374996179814853280,\t-0.374949828028316560,\t-0.374903475304404820,\t-0.374857121643234810,\t-0.374810767044922000,\t-0.374764411509582280,\t-0.374718055037331130,\t-0.374671697628285230,\t\n-0.374625339282560090,\t-0.374578980000271620,\t-0.374532619781535290,\t-0.374486258626467780,\t-0.374439896535184670,\t-0.374393533507801800,\t-0.374347169544434700,\t-0.374300804645200100,\t\n-0.374254438810213470,\t-0.374208072039590280,\t-0.374161704333447360,\t-0.374115335691900200,\t-0.374068966115064680,\t-0.374022595603056400,\t-0.373976224155991970,\t-0.373929851773986970,\t\n-0.373883478457157360,\t-0.373837104205618660,\t-0.373790729019487620,\t-0.373744352898879690,\t-0.373697975843910960,\t-0.373651597854696820,\t-0.373605218931354120,\t-0.373558839073998390,\t\n-0.373512458282745540,\t-0.373466076557711140,\t-0.373419693899011970,\t-0.373373310306763570,\t-0.373326925781081450,\t-0.373280540322082470,\t-0.373234153929882070,\t-0.373187766604596350,\t\n-0.373141378346340760,\t-0.373094989155232200,\t-0.373048599031386100,\t-0.373002207974918510,\t-0.372955815985945020,\t-0.372909423064582410,\t-0.372863029210946220,\t-0.372816634425152450,\t\n-0.372770238707316680,\t-0.372723842057555770,\t-0.372677444475985160,\t-0.372631045962721010,\t-0.372584646517878810,\t-0.372538246141575440,\t-0.372491844833926440,\t-0.372445442595047420,\t\n-0.372399039425055200,\t-0.372352635324065370,\t-0.372306230292193950,\t-0.372259824329556570,\t-0.372213417436270010,\t-0.372167009612449920,\t-0.372120600858212300,\t-0.372074191173672800,\t\n-0.372027780558948200,\t-0.371981369014154130,\t-0.371934956539406670,\t-0.371888543134821390,\t-0.371842128800515200,\t-0.371795713536603620,\t-0.371749297343202830,\t-0.371702880220428360,\t\n-0.371656462168397090,\t-0.371610043187224680,\t-0.371563623277026740,\t-0.371517202437920140,\t-0.371470780670020540,\t-0.371424357973443970,\t-0.371377934348306130,\t-0.371331509794723850,\t\n-0.371285084312812820,\t-0.371238657902689060,\t-0.371192230564468260,\t-0.371145802298267270,\t-0.371099373104201770,\t-0.371052942982387890,\t-0.371006511932941150,\t-0.370960079955978630,\t\n-0.370913647051615890,\t-0.370867213219969020,\t-0.370820778461153690,\t-0.370774342775286810,\t-0.370727906162484130,\t-0.370681468622861670,\t-0.370635030156535090,\t-0.370588590763621380,\t\n-0.370542150444236160,\t-0.370495709198495170,\t-0.370449267026515370,\t-0.370402823928412340,\t-0.370356379904302260,\t-0.370309934954300810,\t-0.370263489078524970,\t-0.370217042277090400,\t\n-0.370170594550113200,\t-0.370124145897709140,\t-0.370077696319995100,\t-0.370031245817086800,\t-0.369984794389100420,\t-0.369938342036151610,\t-0.369891888758357380,\t-0.369845434555833410,\t\n-0.369798979428695880,\t-0.369752523377060490,\t-0.369706066401044200,\t-0.369659608500762740,\t-0.369613149676331850,\t-0.369566689927868450,\t-0.369520229255488390,\t-0.369473767659307730,\t\n-0.369427305139442270,\t-0.369380841696008930,\t-0.369334377329123500,\t-0.369287912038902100,\t-0.369241445825460530,\t-0.369194978688915710,\t-0.369148510629383530,\t-0.369102041646980020,\t\n-0.369055571741820960,\t-0.369009100914023450,\t-0.368962629163703150,\t-0.368916156490976310,\t-0.368869682895958670,\t-0.368823208378767200,\t-0.368776732939517680,\t-0.368730256578325980,\t\n-0.368683779295309040,\t-0.368637301090582630,\t-0.368590821964262960,\t-0.368544341916465850,\t-0.368497860947308300,\t-0.368451379056906060,\t-0.368404896245375420,\t-0.368358412512832130,\t\n-0.368311927859393150,\t-0.368265442285174440,\t-0.368218955790292070,\t-0.368172468374861890,\t-0.368125980039000990,\t-0.368079490782825090,\t-0.368033000606450500,\t-0.367986509509993010,\t\n-0.367940017493569640,\t-0.367893524557296240,\t-0.367847030701288990,\t-0.367800535925663810,\t-0.367754040230537650,\t-0.367707543616026420,\t-0.367661046082245920,\t-0.367614547629313170,\t\n-0.367568048257344130,\t-0.367521547966454920,\t-0.367475046756761400,\t-0.367428544628380700,\t-0.367382041581428680,\t-0.367335537616021500,\t-0.367289032732275090,\t-0.367242526930306510,\t\n-0.367196020210231620,\t-0.367149512572166660,\t-0.367103004016227530,\t-0.367056494542531310,\t-0.367009984151193790,\t-0.366963472842331380,\t-0.366916960616059830,\t-0.366870447472496310,\t\n-0.366823933411756680,\t-0.366777418433956840,\t-0.366730902539213810,\t-0.366684385727643500,\t-0.366637867999362270,\t-0.366591349354485950,\t-0.366544829793131690,\t-0.366498309315415330,\t\n-0.366451787921453220,\t-0.366405265611361220,\t-0.366358742385256450,\t-0.366312218243254830,\t-0.366265693185472640,\t-0.366219167212025850,\t-0.366172640323031540,\t-0.366126112518605610,\t\n-0.366079583798864410,\t-0.366033054163923840,\t-0.365986523613901050,\t-0.365939992148911990,\t-0.365893459769072500,\t-0.365846926474499730,\t-0.365800392265309690,\t-0.365753857141618680,\t\n-0.365707321103542590,\t-0.365660784151198630,\t-0.365614246284702680,\t-0.365567707504171170,\t-0.365521167809719940,\t-0.365474627201466230,\t-0.365428085679525890,\t-0.365381543244015390,\t\n-0.365334999895050580,\t-0.365288455632748750,\t-0.365241910457225700,\t-0.365195364368597950,\t-0.365148817366981350,\t-0.365102269452493080,\t-0.365055720625249160,\t-0.365009170885365550,\t\n-0.364962620232959390,\t-0.364916068668146690,\t-0.364869516191043850,\t-0.364822962801766790,\t-0.364776408500432690,\t-0.364729853287157620,\t-0.364683297162057940,\t-0.364636740125249550,\t\n-0.364590182176849740,\t-0.364543623316974490,\t-0.364497063545740130,\t-0.364450502863262750,\t-0.364403941269659530,\t-0.364357378765046420,\t-0.364310815349539910,\t-0.364264251023255880,\t\n-0.364217685786311700,\t-0.364171119638823260,\t-0.364124552580907090,\t-0.364077984612679040,\t-0.364031415734256510,\t-0.363984845945755420,\t-0.363938275247291780,\t-0.363891703638982880,\t\n-0.363845131120944740,\t-0.363798557693293720,\t-0.363751983356145950,\t-0.363705408109618600,\t-0.363658831953827750,\t-0.363612254888889820,\t-0.363565676914920810,\t-0.363519098032038020,\t\n-0.363472518240357530,\t-0.363425937539995750,\t-0.363379355931068680,\t-0.363332773413693630,\t-0.363286189987986620,\t-0.363239605654064210,\t-0.363193020412042320,\t-0.363146434262038300,\t\n-0.363099847204168210,\t-0.363053259238548090,\t-0.363006670365295210,\t-0.362960080584525670,\t-0.362913489896355910,\t-0.362866898300902020,\t-0.362820305798281340,\t-0.362773712388609840,\t\n-0.362727118072004080,\t-0.362680522848580100,\t-0.362633926718455290,\t-0.362587329681745560,\t-0.362540731738567600,\t-0.362494132889037370,\t-0.362447533133272160,\t-0.362400932471388220,\t\n-0.362354330903501890,\t-0.362307728429729300,\t-0.362261125050187820,\t-0.362214520764993550,\t-0.362167915574262530,\t-0.362121309478112160,\t-0.362074702476658520,\t-0.362028094570018110,\t\n-0.361981485758307080,\t-0.361934876041642710,\t-0.361888265420141130,\t-0.361841653893918920,\t-0.361795041463092160,\t-0.361748428127778240,\t-0.361701813888093250,\t-0.361655198744153690,\t\n-0.361608582696075710,\t-0.361561965743976700,\t-0.361515347887972790,\t-0.361468729128180510,\t-0.361422109464715980,\t-0.361375488897696610,\t-0.361328867427238460,\t-0.361282245053458180,\t\n-0.361235621776471890,\t-0.361188997596396940,\t-0.361142372513349520,\t-0.361095746527445750,\t-0.361049119638803040,\t-0.361002491847537470,\t-0.360955863153765710,\t-0.360909233557603900,\t\n-0.360862603059169400,\t-0.360815971658578370,\t-0.360769339355947460,\t-0.360722706151392740,\t-0.360676072045031660,\t-0.360629437036980470,\t-0.360582801127355630,\t-0.360536164316273390,\t\n-0.360489526603851140,\t-0.360442887990205070,\t-0.360396248475451820,\t-0.360349608059707500,\t-0.360302966743089590,\t-0.360256324525714270,\t-0.360209681407697710,\t-0.360163037389157340,\t\n-0.360116392470209430,\t-0.360069746650970470,\t-0.360023099931556790,\t-0.359976452312085750,\t-0.359929803792673590,\t-0.359883154373436930,\t-0.359836504054491910,\t-0.359789852835956100,\t\n-0.359743200717945690,\t-0.359696547700577180,\t-0.359649893783966950,\t-0.359603238968232430,\t-0.359556583253489770,\t-0.359509926639855650,\t-0.359463269127446310,\t-0.359416610716379200,\t\n-0.359369951406770580,\t-0.359323291198736630,\t-0.359276630092394910,\t-0.359229968087861620,\t-0.359183305185253380,\t-0.359136641384686430,\t-0.359089976686278340,\t-0.359043311090145310,\t\n-0.358996644596404010,\t-0.358949977205170630,\t-0.358903308916562800,\t-0.358856639730696650,\t-0.358809969647688910,\t-0.358763298667655830,\t-0.358716626790714920,\t-0.358669954016982430,\t\n-0.358623280346575090,\t-0.358576605779609090,\t-0.358529930316202010,\t-0.358483253956470130,\t-0.358436576700530090,\t-0.358389898548498180,\t-0.358343219500491970,\t-0.358296539556627660,\t\n-0.358249858717021640,\t-0.358203176981791380,\t-0.358156494351053180,\t-0.358109810824923710,\t-0.358063126403519340,\t-0.358016441086957520,\t-0.357969754875354650,\t-0.357923067768827370,\t\n-0.357876379767491980,\t-0.357829690871466100,\t-0.357783001080865970,\t-0.357736310395808330,\t-0.357689618816409540,\t-0.357642926342787050,\t-0.357596232975057330,\t-0.357549538713336950,\t\n-0.357502843557742370,\t-0.357456147508391050,\t-0.357409450565399360,\t-0.357362752728883630,\t-0.357316053998961490,\t-0.357269354375749140,\t-0.357222653859363470,\t-0.357175952449920680,\t\n-0.357129250147538490,\t-0.357082546952333160,\t-0.357035842864421420,\t-0.356989137883919730,\t-0.356942432010945550,\t-0.356895725245615300,\t-0.356849017588045770,\t-0.356802309038353250,\t\n-0.356755599596655370,\t-0.356708889263068480,\t-0.356662178037709390,\t-0.356615465920694430,\t-0.356568752912141240,\t-0.356522039012166170,\t-0.356475324220885570,\t-0.356428608538417070,\t\n-0.356381891964877070,\t-0.356335174500382320,\t-0.356288456145049230,\t-0.356241736898995410,\t-0.356195016762337280,\t-0.356148295735191580,\t-0.356101573817674710,\t-0.356054851009904310,\t\n-0.356008127311996820,\t-0.355961402724069010,\t-0.355914677246237270,\t-0.355867950878619220,\t-0.355821223621331340,\t-0.355774495474490420,\t-0.355727766438212800,\t-0.355681036512616180,\t\n-0.355634305697816950,\t-0.355587573993931590,\t-0.355540841401077670,\t-0.355494107919371690,\t-0.355447373548930410,\t-0.355400638289870290,\t-0.355353902142309000,\t-0.355307165106362950,\t\n-0.355260427182148950,\t-0.355213688369783510,\t-0.355166948669384250,\t-0.355120208081067650,\t-0.355073466604950480,\t-0.355026724241149230,\t-0.354979980989781620,\t-0.354933236850964010,\t\n-0.354886491824813350,\t-0.354839745911446070,\t-0.354792999110979780,\t-0.354746251423531000,\t-0.354699502849216640,\t-0.354652753388153050,\t-0.354606003040458030,\t-0.354559251806247980,\t\n-0.354512499685639420,\t-0.354465746678749970,\t-0.354418992785696220,\t-0.354372238006594950,\t-0.354325482341562690,\t-0.354278725790717120,\t-0.354231968354174700,\t-0.354185210032052440,\t\n-0.354138450824466710,\t-0.354091690731535240,\t-0.354044929753374540,\t-0.353998167890101520,\t-0.353951405141832710,\t-0.353904641508685780,\t-0.353857876990777250,\t-0.353811111588223980,\t\n-0.353764345301142590,\t-0.353717578129650710,\t-0.353670810073864860,\t-0.353624041133901610,\t-0.353577271309878700,\t-0.353530500601912550,\t-0.353483729010120210,\t-0.353436956534618040,\t\n-0.353390183175523950,\t-0.353343408932954410,\t-0.353296633807026360,\t-0.353249857797856280,\t-0.353203080905562020,\t-0.353156303130259970,\t-0.353109524472067230,\t-0.353062744931100240,\t\n-0.353015964507476800,\t-0.352969183201313490,\t-0.352922401012727200,\t-0.352875617941834470,\t-0.352828833988753140,\t-0.352782049153599670,\t-0.352735263436490700,\t-0.352688476837544010,\t\n-0.352641689356876120,\t-0.352594900994604000,\t-0.352548111750844160,\t-0.352501321625714510,\t-0.352454530619331570,\t-0.352407738731812250,\t-0.352360945963273220,\t-0.352314152313832230,\t\n-0.352267357783605850,\t-0.352220562372711040,\t-0.352173766081264440,\t-0.352126968909383890,\t-0.352080170857185850,\t-0.352033371924787400,\t-0.351986572112305110,\t-0.351939771419856830,\t\n-0.351892969847559080,\t-0.351846167395528930,\t-0.351799364063882900,\t-0.351752559852738960,\t-0.351705754762213550,\t-0.351658948792423380,\t-0.351612141943486220,\t-0.351565334215518720,\t\n-0.351518525608637890,\t-0.351471716122960350,\t-0.351424905758603910,\t-0.351378094515685190,\t-0.351331282394321260,\t-0.351284469394628710,\t-0.351237655516725370,\t-0.351190840760727930,\t\n-0.351144025126753360,\t-0.351097208614918330,\t-0.351050391225340710,\t-0.351003572958137060,\t-0.350956753813424500,\t-0.350909933791319680,\t-0.350863112891940390,\t-0.350816291115403360,\t\n-0.350769468461825160,\t-0.350722644931323710,\t-0.350675820524015640,\t-0.350628995240018000,\t-0.350582169079447500,\t-0.350535342042421980,\t-0.350488514129058070,\t-0.350441685339472950,\t\n-0.350394855673783150,\t-0.350348025132106610,\t-0.350301193714560030,\t-0.350254361421260480,\t-0.350207528252324600,\t-0.350160694207870330,\t-0.350113859288014310,\t-0.350067023492873610,\t\n-0.350020186822564970,\t-0.349973349277206250,\t-0.349926510856914170,\t-0.349879671561805440,\t-0.349832831391997890,\t-0.349785990347608320,\t-0.349739148428753750,\t-0.349692305635550870,\t\n-0.349645461968117630,\t-0.349598617426570780,\t-0.349551772011027380,\t-0.349504925721604130,\t-0.349458078558418930,\t-0.349411230521588620,\t-0.349364381611230180,\t-0.349317531827460390,\t\n-0.349270681170397170,\t-0.349223829640157250,\t-0.349176977236857760,\t-0.349130123960615430,\t-0.349083269811548190,\t-0.349036414789772760,\t-0.348989558895405890,\t-0.348942702128565540,\t\n-0.348895844489368450,\t-0.348848985977931740,\t-0.348802126594372150,\t-0.348755266338807660,\t-0.348708405211354990,\t-0.348661543212131280,\t-0.348614680341253370,\t-0.348567816598839120,\t\n-0.348520951985005320,\t-0.348474086499869160,\t-0.348427220143547380,\t-0.348380352916157990,\t-0.348333484817817670,\t-0.348286615848643680,\t-0.348239746008752680,\t-0.348192875298262760,\t\n-0.348146003717290650,\t-0.348099131265953540,\t-0.348052257944368170,\t-0.348005383752652610,\t-0.347958508690923540,\t-0.347911632759297820,\t-0.347864755957893400,\t-0.347817878286827140,\t\n-0.347770999746216170,\t-0.347724120336177220,\t-0.347677240056828430,\t-0.347630358908286590,\t-0.347583476890668760,\t-0.347536594004091870,\t-0.347489710248673920,\t-0.347442825624531710,\t\n-0.347395940131782380,\t-0.347349053770542810,\t-0.347302166540931050,\t-0.347255278443063860,\t-0.347208389477058450,\t-0.347161499643031670,\t-0.347114608941101580,\t-0.347067717371384920,\t\n-0.347020824933998550,\t-0.346973931629060540,\t-0.346927037456687740,\t-0.346880142416997330,\t-0.346833246510106110,\t-0.346786349736132260,\t-0.346739452095192470,\t-0.346692553587404080,\t\n-0.346645654212883900,\t-0.346598753971750000,\t-0.346551852864119160,\t-0.346504950890108740,\t-0.346458048049835540,\t-0.346411144343417580,\t-0.346364239770971800,\t-0.346317334332615410,\t\n-0.346270428028465300,\t-0.346223520858639500,\t-0.346176612823254900,\t-0.346129703922428370,\t-0.346082794156277960,\t-0.346035883524920600,\t-0.345988972028473510,\t-0.345942059667053600,\t\n-0.345895146440778960,\t-0.345848232349766420,\t-0.345801317394133280,\t-0.345754401573996510,\t-0.345707484889474060,\t-0.345660567340682960,\t-0.345613648927740440,\t-0.345566729650763350,\t\n-0.345519809509869880,\t-0.345472888505176880,\t-0.345425966636801640,\t-0.345379043904861130,\t-0.345332120309473360,\t-0.345285195850755290,\t-0.345238270528824280,\t-0.345191344343797110,\t\n-0.345144417295792040,\t-0.345097489384925960,\t-0.345050560611315670,\t-0.345003630975079410,\t-0.344956700476334090,\t-0.344909769115197050,\t-0.344862836891785150,\t-0.344815903806216520,\t\n-0.344768969858608220,\t-0.344722035049077450,\t-0.344675099377741160,\t-0.344628162844717530,\t-0.344581225450123540,\t-0.344534287194076470,\t-0.344487348076693230,\t-0.344440408098092070,\t\n-0.344393467258389870,\t-0.344346525557704060,\t-0.344299582996151430,\t-0.344252639573850330,\t-0.344205695290917600,\t-0.344158750147470220,\t-0.344111804143626410,\t-0.344064857279503030,\t\n-0.344017909555217550,\t-0.343970960970886860,\t-0.343924011526629210,\t-0.343877061222561510,\t-0.343830110058801150,\t-0.343783158035465160,\t-0.343736205152671610,\t-0.343689251410537580,\t\n-0.343642296809180460,\t-0.343595341348717110,\t-0.343548385029265880,\t-0.343501427850943670,\t-0.343454469813867850,\t-0.343407510918155520,\t-0.343360551163924780,\t-0.343313590551292620,\t\n-0.343266629080376140,\t-0.343219666751293510,\t-0.343172703564161630,\t-0.343125739519098080,\t-0.343078774616219720,\t-0.343031808855644830,\t-0.342984842237490430,\t-0.342937874761873930,\t\n-0.342890906428912350,\t-0.342843937238723860,\t-0.342796967191425610,\t-0.342749996287134870,\t-0.342703024525968740,\t-0.342656051908045490,\t-0.342609078433482090,\t-0.342562104102396010,\t\n-0.342515128914904270,\t-0.342468152871125090,\t-0.342421175971175500,\t-0.342374198215172620,\t-0.342327219603234590,\t-0.342280240135478590,\t-0.342233259812021960,\t-0.342186278632981730,\t\n-0.342139296598476250,\t-0.342092313708622530,\t-0.342045329963538040,\t-0.341998345363339780,\t-0.341951359908146070,\t-0.341904373598073960,\t-0.341857386433240930,\t-0.341810398413764040,\t\n-0.341763409539761530,\t-0.341716419811350540,\t-0.341669429228648460,\t-0.341622437791772370,\t-0.341575445500840680,\t-0.341528452355970290,\t-0.341481458357278830,\t-0.341434463504883270,\t\n-0.341387467798902000,\t-0.341340471239452050,\t-0.341293473826650540,\t-0.341246475560615710,\t-0.341199476441464700,\t-0.341152476469315010,\t-0.341105475644283730,\t-0.341058473966489140,\t\n-0.341011471436048370,\t-0.340964468053078950,\t-0.340917463817697940,\t-0.340870458730023640,\t-0.340823452790173230,\t-0.340776445998264180,\t-0.340729438354413610,\t-0.340682429858739870,\t\n-0.340635420511360030,\t-0.340588410312391680,\t-0.340541399261951820,\t-0.340494387360158910,\t-0.340447374607130040,\t-0.340400361002982320,\t-0.340353346547834110,\t-0.340306331241802540,\t\n-0.340259315085005120,\t-0.340212298077559040,\t-0.340165280219582590,\t-0.340118261511192950,\t-0.340071241952507650,\t-0.340024221543643870,\t-0.339977200284719890,\t-0.339930178175852970,\t\n-0.339883155217160560,\t-0.339836131408759850,\t-0.339789106750769230,\t-0.339742081243305850,\t-0.339695054886487270,\t-0.339648027680430680,\t-0.339600999625254360,\t-0.339553970721075570,\t\n-0.339506940968011480,\t-0.339459910366180400,\t-0.339412878915699550,\t-0.339365846616686510,\t-0.339318813469258460,\t-0.339271779473533760,\t-0.339224744629629590,\t-0.339177708937663640,\t\n-0.339130672397752910,\t-0.339083635010015980,\t-0.339036596774569930,\t-0.338989557691532440,\t-0.338942517761020580,\t-0.338895476983152870,\t-0.338848435358046430,\t-0.338801392885818950,\t\n-0.338754349566587560,\t-0.338707305400470730,\t-0.338660260387585570,\t-0.338613214528049820,\t-0.338566167821980570,\t-0.338519120269496380,\t-0.338472071870714320,\t-0.338425022625751750,\t\n-0.338377972534726960,\t-0.338330921597757290,\t-0.338283869814960280,\t-0.338236817186453210,\t-0.338189763712354490,\t-0.338142709392781350,\t-0.338095654227851480,\t-0.338048598217682020,\t\n-0.338001541362391470,\t-0.337954483662097130,\t-0.337907425116916520,\t-0.337860365726966980,\t-0.337813305492366880,\t-0.337766244413233550,\t-0.337719182489684630,\t-0.337672119721837300,\t\n-0.337625056109810140,\t-0.337577991653720270,\t-0.337530926353685030,\t-0.337483860209822910,\t-0.337436793222251170,\t-0.337389725391087360,\t-0.337342656716448920,\t-0.337295587198454150,\t\n-0.337248516837220510,\t-0.337201445632865530,\t-0.337154373585506480,\t-0.337107300695261960,\t-0.337060226962249190,\t-0.337013152386585860,\t-0.336966076968389210,\t-0.336919000707777800,\t\n-0.336871923604868890,\t-0.336824845659780160,\t-0.336777766872628890,\t-0.336730687243533670,\t-0.336683606772611670,\t-0.336636525459980240,\t-0.336589443305757960,\t-0.336542360310062020,\t\n-0.336495276473010250,\t-0.336448191794719800,\t-0.336401106275309340,\t-0.336354019914896050,\t-0.336306932713597790,\t-0.336259844671531750,\t-0.336212755788816490,\t-0.336165666065569360,\t\n-0.336118575501908050,\t-0.336071484097949900,\t-0.336024391853813440,\t-0.335977298769616020,\t-0.335930204845475370,\t-0.335883110081508730,\t-0.335836014477834790,\t-0.335788918034570780,\t\n-0.335741820751834120,\t-0.335694722629743260,\t-0.335647623668415610,\t-0.335600523867968900,\t-0.335553423228520440,\t-0.335506321750188910,\t-0.335459219433091540,\t-0.335412116277346070,\t\n-0.335365012283069970,\t-0.335317907450381700,\t-0.335270801779398660,\t-0.335223695270238650,\t-0.335176587923018960,\t-0.335129479737858280,\t-0.335082370714873850,\t-0.335035260854183500,\t\n-0.334988150155904550,\t-0.334941038620155670,\t-0.334893926247054220,\t-0.334846813036717930,\t-0.334799698989264150,\t-0.334752584104811570,\t-0.334705468383477530,\t-0.334658351825379450,\t\n-0.334611234430635840,\t-0.334564116199364160,\t-0.334516997131682200,\t-0.334469877227707320,\t-0.334422756487558200,\t-0.334375634911352190,\t-0.334328512499207030,\t-0.334281389251240240,\t\n-0.334234265167570320,\t-0.334187140248314810,\t-0.334140014493591430,\t-0.334092887903517600,\t-0.334045760478211940,\t-0.333998632217791860,\t-0.333951503122375260,\t-0.333904373192079440,\t\n-0.333857242427023140,\t-0.333810110827323700,\t-0.333762978393098600,\t-0.333715845124466450,\t-0.333668711021544660,\t-0.333621576084451140,\t-0.333574440313303240,\t-0.333527303708219700,\t\n-0.333480166269317870,\t-0.333433027996715590,\t-0.333385888890530340,\t-0.333338748950880780,\t-0.333291608177884390,\t-0.333244466571658960,\t-0.333197324132321950,\t-0.333150180859992040,\t\n-0.333103036754786640,\t-0.333055891816823710,\t-0.333008746046220610,\t-0.332961599443096060,\t-0.332914452007567530,\t-0.332867303739752430,\t-0.332820154639769440,\t-0.332773004707736130,\t\n-0.332725853943770300,\t-0.332678702347989410,\t-0.332631549920512190,\t-0.332584396661456120,\t-0.332537242570938970,\t-0.332490087649078390,\t-0.332442931895992940,\t-0.332395775311800200,\t\n-0.332348617896618010,\t-0.332301459650563900,\t-0.332254300573756490,\t-0.332207140666313410,\t-0.332159979928352390,\t-0.332112818359991070,\t-0.332065655961348070,\t-0.332018492732540970,\t\n-0.331971328673687620,\t-0.331924163784905520,\t-0.331876998066313430,\t-0.331829831518028860,\t-0.331782664140169270,\t-0.331735495932853510,\t-0.331688326896198930,\t-0.331641157030323540,\t\n-0.331593986335344870,\t-0.331546814811381650,\t-0.331499642458551400,\t-0.331452469276972030,\t-0.331405295266761050,\t-0.331358120428037250,\t-0.331310944760918210,\t-0.331263768265521730,\t\n-0.331216590941965480,\t-0.331169412790368100,\t-0.331122233810847270,\t-0.331075054003520770,\t-0.331027873368506310,\t-0.330980691905922500,\t-0.330933509615887020,\t-0.330886326498517290,\t\n-0.330839142553932210,\t-0.330791957782249240,\t-0.330744772183586390,\t-0.330697585758061240,\t-0.330650398505792480,\t-0.330603210426897720,\t-0.330556021521494990,\t-0.330508831789701750,\t\n-0.330461641231636850,\t-0.330414449847417860,\t-0.330367257637162740,\t-0.330320064600989060,\t-0.330272870739015620,\t-0.330225676051360000,\t-0.330178480538140200,\t-0.330131284199473800,\t\n-0.330084087035479590,\t-0.330036889046275150,\t-0.329989690231978110,\t-0.329942490592707250,\t-0.329895290128580150,\t-0.329848088839714840,\t-0.329800886726228870,\t-0.329753683788241100,\t\n-0.329706480025869110,\t-0.329659275439230960,\t-0.329612070028444170,\t-0.329564863793627650,\t-0.329517656734898970,\t-0.329470448852376090,\t-0.329423240146176740,\t-0.329376030616419680,\t\n-0.329328820263222520,\t-0.329281609086703340,\t-0.329234397086979710,\t-0.329187184264170540,\t-0.329139970618393400,\t-0.329092756149765850,\t-0.329045540858406930,\t-0.328998324744434080,\t\n-0.328951107807965440,\t-0.328903890049118630,\t-0.328856671468012450,\t-0.328809452064764640,\t-0.328762231839493210,\t-0.328715010792315800,\t-0.328667788923351250,\t-0.328620566232717180,\t\n-0.328573342720531790,\t-0.328526118386912540,\t-0.328478893231978490,\t-0.328431667255847160,\t-0.328384440458636680,\t-0.328337212840464630,\t-0.328289984401450020,\t-0.328242755141710420,\t\n-0.328195525061363960,\t-0.328148294160528260,\t-0.328101062439322240,\t-0.328053829897863580,\t-0.328006596536269900,\t-0.327959362354660170,\t-0.327912127353152010,\t-0.327864891531863540,\t\n-0.327817654890912470,\t-0.327770417430417630,\t-0.327723179150496760,\t-0.327675940051267930,\t-0.327628700132848840,\t-0.327581459395358430,\t-0.327534217838914340,\t-0.327486975463634760,\t\n-0.327439732269637240,\t-0.327392488257040870,\t-0.327345243425963270,\t-0.327297997776522580,\t-0.327250751308836460,\t-0.327203504023023840,\t-0.327156255919202500,\t-0.327109006997490130,\t\n-0.327061757258005630,\t-0.327014506700866740,\t-0.326967255326191530,\t-0.326920003134097860,\t-0.326872750124704510,\t-0.326825496298129350,\t-0.326778241654490430,\t-0.326730986193905500,\t\n-0.326683729916493470,\t-0.326636472822372180,\t-0.326589214911659650,\t-0.326541956184473740,\t-0.326494696640933280,\t-0.326447436281156130,\t-0.326400175105260370,\t-0.326352913113363790,\t\n-0.326305650305585280,\t-0.326258386682042660,\t-0.326211122242853700,\t-0.326163856988137320,\t-0.326116590918011320,\t-0.326069324032593810,\t-0.326022056332002600,\t-0.325974787816356640,\t\n-0.325927518485773730,\t-0.325880248340371990,\t-0.325832977380269280,\t-0.325785705605584510,\t-0.325738433016435460,\t-0.325691159612940320,\t-0.325643885395216880,\t-0.325596610363384160,\t\n-0.325549334517559910,\t-0.325502057857862290,\t-0.325454780384409170,\t-0.325407502097319450,\t-0.325360222996711020,\t-0.325312943082702030,\t-0.325265662355410210,\t-0.325218380814954740,\t\n-0.325171098461453260,\t-0.325123815295023600,\t-0.325076531315784840,\t-0.325029246523854790,\t-0.324981960919351610,\t-0.324934674502393050,\t-0.324887387273098290,\t-0.324840099231585020,\t\n-0.324792810377971530,\t-0.324745520712375610,\t-0.324698230234916290,\t-0.324650938945711340,\t-0.324603646844879130,\t-0.324556353932537340,\t-0.324509060208805100,\t-0.324461765673800200,\t\n-0.324414470327640870,\t-0.324367174170444970,\t-0.324319877202331520,\t-0.324272579423418420,\t-0.324225280833823400,\t-0.324177981433665660,\t-0.324130681223062930,\t-0.324083380202133510,\t\n-0.324036078370995180,\t-0.323988775729767140,\t-0.323941472278567120,\t-0.323894168017513420,\t-0.323846862946723880,\t-0.323799557066317630,\t-0.323752250376412480,\t-0.323704942877126700,\t\n-0.323657634568578100,\t-0.323610325450885860,\t-0.323563015524167830,\t-0.323515704788542250,\t-0.323468393244127020,\t-0.323421080891041160,\t-0.323373767729402630,\t-0.323326453759329280,\t\n-0.323279138980940180,\t-0.323231823394353250,\t-0.323184506999686760,\t-0.323137189797058580,\t-0.323089871786587880,\t-0.323042552968392460,\t-0.322995233342590670,\t-0.322947912909300360,\t\n-0.322900591668640710,\t-0.322853269620729580,\t-0.322805946765685250,\t-0.322758623103625690,\t-0.322711298634669960,\t-0.322663973358935980,\t-0.322616647276542050,\t-0.322569320387606110,\t\n-0.322521992692247240,\t-0.322474664190583460,\t-0.322427334882732560,\t-0.322380004768813730,\t-0.322332673848944930,\t-0.322285342123244390,\t-0.322238009591830130,\t-0.322190676254821230,\t\n-0.322143342112335640,\t-0.322096007164491720,\t-0.322048671411407360,\t-0.322001334853201760,\t-0.321953997489992760,\t-0.321906659321898820,\t-0.321859320349037800,\t-0.321811980571528880,\t\n-0.321764639989490010,\t-0.321717298603039550,\t-0.321669956412295450,\t-0.321622613417376860,\t-0.321575269618401720,\t-0.321527925015488440,\t-0.321480579608754870,\t-0.321433233398320310,\t\n-0.321385886384302650,\t-0.321338538566819880,\t-0.321291189945991150,\t-0.321243840521934500,\t-0.321196490294768210,\t-0.321149139264610250,\t-0.321101787431579910,\t-0.321054434795795100,\t\n-0.321007081357374160,\t-0.320959727116435110,\t-0.320912372073097200,\t-0.320865016227478320,\t-0.320817659579696930,\t-0.320770302129870950,\t-0.320722943878119670,\t-0.320675584824560990,\t\n-0.320628224969313370,\t-0.320580864312494720,\t-0.320533502854224380,\t-0.320486140594620270,\t-0.320438777533800400,\t-0.320391413671884010,\t-0.320344049008989050,\t-0.320296683545234000,\t\n-0.320249317280736800,\t-0.320201950215616700,\t-0.320154582349991780,\t-0.320107213683980370,\t-0.320059844217700560,\t-0.320012473951271530,\t-0.319965102884811280,\t-0.319917731018438290,\t\n-0.319870358352270570,\t-0.319822984886427350,\t-0.319775610621026720,\t-0.319728235556187010,\t-0.319680859692026310,\t-0.319633483028663900,\t-0.319586105566217750,\t-0.319538727304805930,\t\n-0.319491348244547720,\t-0.319443968385561110,\t-0.319396587727964590,\t-0.319349206271876180,\t-0.319301824017415190,\t-0.319254440964699630,\t-0.319207057113848000,\t-0.319159672464978280,\t\n-0.319112287018209760,\t-0.319064900773660560,\t-0.319017513731449150,\t-0.318970125891693490,\t-0.318922737254512920,\t-0.318875347820025520,\t-0.318827957588349810,\t-0.318780566559603680,\t\n-0.318733174733906610,\t-0.318685782111376600,\t-0.318638388692132180,\t-0.318590994476291300,\t-0.318543599463973370,\t-0.318496203655296460,\t-0.318448807050378590,\t-0.318401409649339160,\t\n-0.318354011452296190,\t-0.318306612459368200,\t-0.318259212670673250,\t-0.318211812086330700,\t-0.318164410706458620,\t-0.318117008531175470,\t-0.318069605560599430,\t-0.318022201794849800,\t\n-0.317974797234044650,\t-0.317927391878302490,\t-0.317879985727741400,\t-0.317832578782480830,\t-0.317785171042638810,\t-0.317737762508333800,\t-0.317690353179684030,\t-0.317642943056808790,\t\n-0.317595532139826160,\t-0.317548120428854270,\t-0.317500707924012530,\t-0.317453294625419050,\t-0.317405880533192300,\t-0.317358465647450410,\t-0.317311049968312770,\t-0.317263633495897530,\t\n-0.317216216230323260,\t-0.317168798171707960,\t-0.317121379320171090,\t-0.317073959675830800,\t-0.317026539238805580,\t-0.316979118009213580,\t-0.316931695987174240,\t-0.316884273172805650,\t\n-0.316836849566226380,\t-0.316789425167554590,\t-0.316741999976909610,\t-0.316694573994409640,\t-0.316647147220172840,\t-0.316599719654318600,\t-0.316552291296964990,\t-0.316504862148230700,\t\n-0.316457432208233860,\t-0.316410001477093860,\t-0.316362569954928790,\t-0.316315137641857370,\t-0.316267704537997630,\t-0.316220270643469080,\t-0.316172835958389850,\t-0.316125400482878520,\t\n-0.316077964217053250,\t-0.316030527161033530,\t-0.315983089314937520,\t-0.315935650678883740,\t-0.315888211252990380,\t-0.315840771037376960,\t-0.315793330032161590,\t-0.315745888237462520,\t\n-0.315698445653399110,\t-0.315651002280089580,\t-0.315603558117652560,\t-0.315556113166206240,\t-0.315508667425870030,\t-0.315461220896762150,\t-0.315413773579001240,\t-0.315366325472705430,\t\n-0.315318876577994290,\t-0.315271426894985940,\t-0.315223976423799010,\t-0.315176525164551690,\t-0.315129073117363550,\t-0.315081620282352650,\t-0.315034166659637740,\t-0.314986712249337000,\t\n-0.314939257051569890,\t-0.314891801066454650,\t-0.314844344294109900,\t-0.314796886734653840,\t-0.314749428388206020,\t-0.314701969254884640,\t-0.314654509334807870,\t-0.314607048628095300,\t\n-0.314559587134865040,\t-0.314512124855235890,\t-0.314464661789325920,\t-0.314417197937254810,\t-0.314369733299140640,\t-0.314322267875102150,\t-0.314274801665257560,\t-0.314227334669726410,\t\n-0.314179866888626920,\t-0.314132398322077790,\t-0.314084928970197190,\t-0.314037458833104740,\t-0.313989987910918590,\t-0.313942516203757520,\t-0.313895043711739710,\t-0.313847570434984680,\t\n-0.313800096373610780,\t-0.313752621527736200,\t-0.313705145897480500,\t-0.313657669482961920,\t-0.313610192284299150,\t-0.313562714301610480,\t-0.313515235535015480,\t-0.313467755984632390,\t\n-0.313420275650579890,\t-0.313372794532976280,\t-0.313325312631941080,\t-0.313277829947592680,\t-0.313230346480049600,\t-0.313182862229430310,\t-0.313135377195854270,\t-0.313087891379439760,\t\n-0.313040404780305540,\t-0.312992917398569880,\t-0.312945429234352370,\t-0.312897940287771290,\t-0.312850450558944890,\t-0.312802960047992800,\t-0.312755468755033350,\t-0.312707976680185180,\t\n-0.312660483823566700,\t-0.312612990185297370,\t-0.312565495765495640,\t-0.312518000564280090,\t-0.312470504581769170,\t-0.312423007818082410,\t-0.312375510273338100,\t-0.312328011947655030,\t\n-0.312280512841151490,\t-0.312233012953947120,\t-0.312185512286160200,\t-0.312138010837909540,\t-0.312090508609313370,\t-0.312043005600491360,\t-0.311995501811561880,\t-0.311947997242643600,\t\n-0.311900491893854940,\t-0.311852985765315450,\t-0.311805478857143490,\t-0.311757971169457470,\t-0.311710462702376900,\t-0.311662953456020130,\t-0.311615443430506070,\t-0.311567932625952890,\t\n-0.311520421042480340,\t-0.311472908680206720,\t-0.311425395539250860,\t-0.311377881619731070,\t-0.311330366921767020,\t-0.311282851445477020,\t-0.311235335190979900,\t-0.311187818158394030,\t\n-0.311140300347839020,\t-0.311092781759433280,\t-0.311045262393295610,\t-0.310997742249544300,\t-0.310950221328299080,\t-0.310902699629678310,\t-0.310855177153800400,\t-0.310807653900784910,\t\n-0.310760129870750360,\t-0.310712605063815430,\t-0.310665079480098580,\t-0.310617553119719450,\t-0.310570025982796430,\t-0.310522498069448370,\t-0.310474969379793630,\t-0.310427439913951890,\t\n-0.310379909672041540,\t-0.310332378654181400,\t-0.310284846860489900,\t-0.310237314291086750,\t-0.310189780946090290,\t-0.310142246825619360,\t-0.310094711929792380,\t-0.310047176258729070,\t\n-0.309999639812547800,\t-0.309952102591367070,\t-0.309904564595306460,\t-0.309857025824484430,\t-0.309809486279019830,\t-0.309761945959031120,\t-0.309714404864637920,\t-0.309666862995958750,\t\n-0.309619320353112400,\t-0.309571776936217350,\t-0.309524232745393260,\t-0.309476687780758600,\t-0.309429142042432210,\t-0.309381595530532570,\t-0.309334048245179350,\t-0.309286500186491010,\t\n-0.309238951354586400,\t-0.309191401749584040,\t-0.309143851371603550,\t-0.309096300220763450,\t-0.309048748297182150,\t-0.309001195600979440,\t-0.308953642132273720,\t-0.308906087891183900,\t\n-0.308858532877828440,\t-0.308810977092327080,\t-0.308763420534798270,\t-0.308715863205360870,\t-0.308668305104133460,\t-0.308620746231235640,\t-0.308573186586786010,\t-0.308525626170903400,\t\n-0.308478064983706280,\t-0.308430503025314440,\t-0.308382940295846340,\t-0.308335376795420890,\t-0.308287812524156550,\t-0.308240247482173100,\t-0.308192681669589070,\t-0.308145115086523310,\t\n-0.308097547733094390,\t-0.308049979609421990,\t-0.308002410715624620,\t-0.307954841051820800,\t-0.307907270618130340,\t-0.307859699414671670,\t-0.307812127441563780,\t-0.307764554698925110,\t\n-0.307716981186875460,\t-0.307669406905533400,\t-0.307621831855017850,\t-0.307574256035447250,\t-0.307526679446941450,\t-0.307479102089618930,\t-0.307431523963598690,\t-0.307383945068999190,\t\n-0.307336365405940280,\t-0.307288784974540430,\t-0.307241203774918650,\t-0.307193621807193400,\t-0.307146039071484520,\t-0.307098455567910540,\t-0.307050871296590030,\t-0.307003286257642730,\t\n-0.306955700451187250,\t-0.306908113877342510,\t-0.306860526536227030,\t-0.306812938427960700,\t-0.306765349552661990,\t-0.306717759910449920,\t-0.306670169501443050,\t-0.306622578325761120,\t\n-0.306574986383522820,\t-0.306527393674846990,\t-0.306479800199852270,\t-0.306432205958658500,\t-0.306384610951384200,\t-0.306337015178148380,\t-0.306289418639069560,\t-0.306241821334267640,\t\n-0.306194223263861200,\t-0.306146624427968750,\t-0.306099024826710140,\t-0.306051424460204000,\t-0.306003823328569290,\t-0.305956221431924640,\t-0.305908618770389770,\t-0.305861015344083440,\t\n-0.305813411153124490,\t-0.305765806197631660,\t-0.305718200477724690,\t-0.305670593993522250,\t-0.305622986745143320,\t-0.305575378732706520,\t-0.305527769956331630,\t-0.305480160416137400,\t\n-0.305432550112242680,\t-0.305384939044766210,\t-0.305337327213827840,\t-0.305289714619546130,\t-0.305242101262040100,\t-0.305194487141428440,\t-0.305146872257830990,\t-0.305099256611366330,\t\n-0.305051640202153080,\t-0.305004023030311210,\t-0.304956405095959280,\t-0.304908786399216310,\t-0.304861166940200930,\t-0.304813546719033100,\t-0.304765925735831390,\t-0.304718303990714870,\t\n-0.304670681483802160,\t-0.304623058215213180,\t-0.304575434185066500,\t-0.304527809393481290,\t-0.304480183840576120,\t-0.304432557526470910,\t-0.304384930451284340,\t-0.304337302615135420,\t\n-0.304289674018142780,\t-0.304242044660426430,\t-0.304194414542104940,\t-0.304146783663297000,\t-0.304099152024122580,\t-0.304051519624700230,\t-0.304003886465149030,\t-0.303956252545587780,\t\n-0.303908617866136270,\t-0.303860982426913230,\t-0.303813346228037740,\t-0.303765709269628430,\t-0.303718071551805300,\t-0.303670433074687000,\t-0.303622793838392580,\t-0.303575153843040790,\t\n-0.303527513088751530,\t-0.303479871575643490,\t-0.303432229303835730,\t-0.303384586273447000,\t-0.303336942484597250,\t-0.303289297937405110,\t-0.303241652631989320,\t-0.303194006568469840,\t\n-0.303146359746965300,\t-0.303098712167594870,\t-0.303051063830477310,\t-0.303003414735732450,\t-0.302955764883479030,\t-0.302908114273836240,\t-0.302860462906922700,\t-0.302812810782858490,\t\n-0.302765157901762230,\t-0.302717504263753050,\t-0.302669849868949680,\t-0.302622194717472150,\t-0.302574538809439080,\t-0.302526882144969700,\t-0.302479224724182700,\t-0.302431566547198050,\t\n-0.302383907614134470,\t-0.302336247925111160,\t-0.302288587480246780,\t-0.302240926279661310,\t-0.302193264323473600,\t-0.302145601611802260,\t-0.302097938144767380,\t-0.302050273922487620,\t\n-0.302002608945082180,\t-0.301954943212669800,\t-0.301907276725370490,\t-0.301859609483302980,\t-0.301811941486586470,\t-0.301764272735339620,\t-0.301716603229682580,\t-0.301668932969734020,\t\n-0.301621261955613120,\t-0.301573590187438620,\t-0.301525917665330550,\t-0.301478244389407730,\t-0.301430570359789320,\t-0.301382895576594030,\t-0.301335220039941900,\t-0.301287543749951760,\t\n-0.301239866706742300,\t-0.301192188910433640,\t-0.301144510361144480,\t-0.301096831058994040,\t-0.301049151004101120,\t-0.301001470196585740,\t-0.300953788636566690,\t-0.300906106324163150,\t\n-0.300858423259493910,\t-0.300810739442679050,\t-0.300763054873837370,\t-0.300715369553088030,\t-0.300667683480549840,\t-0.300619996656342870,\t-0.300572309080585910,\t-0.300524620753398140,\t\n-0.300476931674898470,\t-0.300429241845206860,\t-0.300381551264442100,\t-0.300333859932723100,\t-0.300286167850169870,\t-0.300238475016901150,\t-0.300190781433036350,\t-0.300143087098694080,\t\n-0.300095392013994540,\t-0.300047696179056580,\t-0.299999999593999310,\t-0.299952302258941650,\t-0.299904604174003660,\t-0.299856905339304150,\t-0.299809205754962340,\t-0.299761505421097140,\t\n-0.299713804337828570,\t-0.299666102505275530,\t-0.299618399923557210,\t-0.299570696592792450,\t-0.299522992513101380,\t-0.299475287684602850,\t-0.299427582107415660,\t-0.299379875781659980,\t\n-0.299332168707454550,\t-0.299284460884918720,\t-0.299236752314171350,\t-0.299189042995332440,\t-0.299141332928521020,\t-0.299093622113856210,\t-0.299045910551456910,\t-0.298998198241443300,\t\n-0.298950485183934190,\t-0.298902771379048800,\t-0.298855056826906160,\t-0.298807341527626220,\t-0.298759625481327950,\t-0.298711908688130630,\t-0.298664191148153120,\t-0.298616472861515550,\t\n-0.298568753828336810,\t-0.298521034048736140,\t-0.298473313522832520,\t-0.298425592250746000,\t-0.298377870232595490,\t-0.298330147468499900,\t-0.298282423958579400,\t-0.298234699702952800,\t\n-0.298186974701739440,\t-0.298139248955058220,\t-0.298091522463029330,\t-0.298043795225771620,\t-0.297996067243404440,\t-0.297948338516046630,\t-0.297900609043818430,\t-0.297852878826838700,\t\n-0.297805147865226770,\t-0.297757416159101560,\t-0.297709683708583190,\t-0.297661950513790690,\t-0.297614216574843220,\t-0.297566481891859860,\t-0.297518746464960680,\t-0.297471010294264650,\t\n-0.297423273379890660,\t-0.297375535721958910,\t-0.297327797320588340,\t-0.297280058175898250,\t-0.297232318288007610,\t-0.297184577657036600,\t-0.297136836283104110,\t-0.297089094166329560,\t\n-0.297041351306831850,\t-0.296993607704731210,\t-0.296945863360146500,\t-0.296898118273197180,\t-0.296850372444002090,\t-0.296802625872681520,\t-0.296754878559354400,\t-0.296707130504140050,\t\n-0.296659381707157500,\t-0.296611632168526870,\t-0.296563881888367190,\t-0.296516130866797340,\t-0.296468379103937640,\t-0.296420626599906980,\t-0.296372873354824710,\t-0.296325119368809900,\t\n-0.296277364641982680,\t-0.296229609174462060,\t-0.296181852966367400,\t-0.296134096017817650,\t-0.296086338328933160,\t-0.296038579899832790,\t-0.295990820730635980,\t-0.295943060821461660,\t\n-0.295895300172430150,\t-0.295847538783660380,\t-0.295799776655271740,\t-0.295752013787383250,\t-0.295704250180115150,\t-0.295656485833586450,\t-0.295608720747916500,\t-0.295560954923224370,\t\n-0.295513188359630200,\t-0.295465421057253150,\t-0.295417653016212030,\t-0.295369884236627240,\t-0.295322114718617800,\t-0.295274344462303000,\t-0.295226573467801960,\t-0.295178801735234860,\t\n-0.295131029264720790,\t-0.295083256056379140,\t-0.295035482110328930,\t-0.294987707426690450,\t-0.294939932005582660,\t-0.294892155847125080,\t-0.294844378951436670,\t-0.294796601318637720,\t\n-0.294748822948847300,\t-0.294701043842184820,\t-0.294653263998769290,\t-0.294605483418721060,\t-0.294557702102159090,\t-0.294509920049202400,\t-0.294462137259971390,\t-0.294414353734585020,\t\n-0.294366569473162810,\t-0.294318784475823710,\t-0.294270998742688080,\t-0.294223212273874930,\t-0.294175425069503780,\t-0.294127637129693640,\t-0.294079848454564810,\t-0.294032059044236350,\t\n-0.293984268898827780,\t-0.293936478018458070,\t-0.293888686403247670,\t-0.293840894053315480,\t-0.293793100968781080,\t-0.293745307149763490,\t-0.293697512596383050,\t-0.293649717308758880,\t\n-0.293601921287009960,\t-0.293554124531256620,\t-0.293506327041618050,\t-0.293458528818213600,\t-0.293410729861162460,\t-0.293362930170584850,\t-0.293315129746599960,\t-0.293267328589327250,\t\n-0.293219526698885740,\t-0.293171724075395880,\t-0.293123920718976750,\t-0.293076116629747750,\t-0.293028311807828070,\t-0.292980506253337990,\t-0.292932699966396700,\t-0.292884892947123670,\t\n-0.292837085195637950,\t-0.292789276712059900,\t-0.292741467496508700,\t-0.292693657549103430,\t-0.292645846869964420,\t-0.292598035459210810,\t-0.292550223316962070,\t-0.292502410443337360,\t\n-0.292454596838457090,\t-0.292406782502440290,\t-0.292358967435406570,\t-0.292311151637474950,\t-0.292263335108765900,\t-0.292215517849398530,\t-0.292167699859492370,\t-0.292119881139166480,\t\n-0.292072061688541380,\t-0.292024241507736090,\t-0.291976420596870180,\t-0.291928598956062820,\t-0.291880776585434430,\t-0.291832953485104020,\t-0.291785129655191270,\t-0.291737305095815250,\t\n-0.291689479807096420,\t-0.291641653789153850,\t-0.291593827042106790,\t-0.291545999566075520,\t-0.291498171361179280,\t-0.291450342427537590,\t-0.291402512765269630,\t-0.291354682374495800,\t\n-0.291306851255335290,\t-0.291259019407907660,\t-0.291211186832332050,\t-0.291163353528728910,\t-0.291115519497217310,\t-0.291067684737917000,\t-0.291019849250947040,\t-0.290972013036427830,\t\n-0.290924176094478630,\t-0.290876338425218980,\t-0.290828500028768030,\t-0.290780660905246290,\t-0.290732821054772880,\t-0.290684980477467050,\t-0.290637139173449130,\t-0.290589297142838380,\t\n-0.290541454385754410,\t-0.290493610902316350,\t-0.290445766692644660,\t-0.290397921756858580,\t-0.290350076095077740,\t-0.290302229707421260,\t-0.290254382594009600,\t-0.290206534754962000,\t\n-0.290158686190398090,\t-0.290110836900436990,\t-0.290062986885199270,\t-0.290015136144804060,\t-0.289967284679371000,\t-0.289919432489019300,\t-0.289871579573869440,\t-0.289823725934040650,\t\n-0.289775871569652120,\t-0.289728016480824360,\t-0.289680160667676550,\t-0.289632304130328310,\t-0.289584446868898890,\t-0.289536588883508810,\t-0.289488730174277230,\t-0.289440870741323850,\t\n-0.289393010584767800,\t-0.289345149704729740,\t-0.289297288101328760,\t-0.289249425774684540,\t-0.289201562724916370,\t-0.289153698952144710,\t-0.289105834456488800,\t-0.289057969238068260,\t\n-0.289010103297002440,\t-0.288962236633411750,\t-0.288914369247415480,\t-0.288866501139133260,\t-0.288818632308684380,\t-0.288770762756189350,\t-0.288722892481767410,\t-0.288675021485537810,\t\n-0.288627149767621110,\t-0.288579277328136540,\t-0.288531404167203740,\t-0.288483530284942000,\t-0.288435655681471890,\t-0.288387780356912590,\t-0.288339904311383900,\t-0.288292027545004990,\t\n-0.288244150057896440,\t-0.288196271850177540,\t-0.288148392921967920,\t-0.288100513273386930,\t-0.288052632904555070,\t-0.288004751815591600,\t-0.287956870006616290,\t-0.287908987477748350,\t\n-0.287861104229108380,\t-0.287813220260815680,\t-0.287765335572989440,\t-0.287717450165750340,\t-0.287669564039217620,\t-0.287621677193510950,\t-0.287573789628749690,\t-0.287525901345054350,\t\n-0.287478012342544280,\t-0.287430122621339160,\t-0.287382232181558340,\t-0.287334341023322340,\t-0.287286449146750500,\t-0.287238556551962560,\t-0.287190663239077770,\t-0.287142769208216740,\t\n-0.287094874459498830,\t-0.287046978993043660,\t-0.286999082808970680,\t-0.286951185907400430,\t-0.286903288288452190,\t-0.286855389952245300,\t-0.286807490898900340,\t-0.286759591128536660,\t\n-0.286711690641274000,\t-0.286663789437231750,\t-0.286615887516530390,\t-0.286567984879289310,\t-0.286520081525628300,\t-0.286472177455666670,\t-0.286424272669524970,\t-0.286376367167322620,\t\n-0.286328460949179350,\t-0.286280554015214520,\t-0.286232646365548680,\t-0.286184738000301250,\t-0.286136828919592020,\t-0.286088919123540230,\t-0.286041008612266610,\t-0.285993097385890460,\t\n-0.285945185444531120,\t-0.285897272788309230,\t-0.285849359417344180,\t-0.285801445331755780,\t-0.285753530531663300,\t-0.285705615017187390,\t-0.285657698788447490,\t-0.285609781845563290,\t\n-0.285561864188654260,\t-0.285513945817840950,\t-0.285466026733242840,\t-0.285418106934979600,\t-0.285370186423170690,\t-0.285322265197936740,\t-0.285274343259397160,\t-0.285226420607671670,\t\n-0.285178497242879690,\t-0.285130573165141950,\t-0.285082648374577750,\t-0.285034722871306930,\t-0.284986796655448900,\t-0.284938869727124290,\t-0.284890942086452490,\t-0.284843013733552920,\t\n-0.284795084668546250,\t-0.284747154891551830,\t-0.284699224402689580,\t-0.284651293202078830,\t-0.284603361289840210,\t-0.284555428666093240,\t-0.284507495330957700,\t-0.284459561284553020,\t\n-0.284411626526999810,\t-0.284363691058417580,\t-0.284315754878926070,\t-0.284267817988644760,\t-0.284219880387694360,\t-0.284171942076194230,\t-0.284124003054264270,\t-0.284076063322023900,\t\n-0.284028122879593730,\t-0.283980181727093330,\t-0.283932239864642000,\t-0.283884297292360480,\t-0.283836354010368270,\t-0.283788410018785130,\t-0.283740465317730560,\t-0.283692519907325250,\t\n-0.283644573787688650,\t-0.283596626958940610,\t-0.283548679421200540,\t-0.283500731174589240,\t-0.283452782219226100,\t-0.283404832555231020,\t-0.283356882182723420,\t-0.283308931101824040,\t\n-0.283260979312652320,\t-0.283213026815328170,\t-0.283165073609971010,\t-0.283117119696701610,\t-0.283069165075639400,\t-0.283021209746903870,\t-0.282973253710615710,\t-0.282925296966894450,\t\n-0.282877339515859920,\t-0.282829381357631640,\t-0.282781422492330290,\t-0.282733462920075450,\t-0.282685502640986910,\t-0.282637541655184180,\t-0.282589579962788050,\t-0.282541617563917940,\t\n-0.282493654458693790,\t-0.282445690647235070,\t-0.282397726129662570,\t-0.282349760906095760,\t-0.282301794976654590,\t-0.282253828341458400,\t-0.282205861000628170,\t-0.282157892954283230,\t\n-0.282109924202543550,\t-0.282061954745528640,\t-0.282013984583359300,\t-0.281966013716154980,\t-0.281918042144035210,\t-0.281870069867120760,\t-0.281822096885531110,\t-0.281774123199386270,\t\n-0.281726148808805640,\t-0.281678173713910070,\t-0.281630197914819080,\t-0.281582221411652620,\t-0.281534244204530160,\t-0.281486266293572480,\t-0.281438287678899170,\t-0.281390308360630170,\t\n-0.281342328338884950,\t-0.281294347613784300,\t-0.281246366185447790,\t-0.281198384053995390,\t-0.281150401219546600,\t-0.281102417682222220,\t-0.281054433442141820,\t-0.281006448499424910,\t\n-0.280958462854192290,\t-0.280910476506563530,\t-0.280862489456658540,\t-0.280814501704596930,\t-0.280766513250499450,\t-0.280718524094485720,\t-0.280670534236675710,\t-0.280622543677188920,\t\n-0.280574552416146210,\t-0.280526560453667080,\t-0.280478567789871570,\t-0.280430574424879180,\t-0.280382580358810810,\t-0.280334585591785980,\t-0.280286590123924710,\t-0.280238593955346560,\t\n-0.280190597086172280,\t-0.280142599516521540,\t-0.280094601246513920,\t-0.280046602276270150,\t-0.279998602605909920,\t-0.279950602235553180,\t-0.279902601165319450,\t-0.279854599395329700,\t\n-0.279806596925703480,\t-0.279758593756560700,\t-0.279710589888021060,\t-0.279662585320205330,\t-0.279614580053233200,\t-0.279566574087224570,\t-0.279518567422299080,\t-0.279470560058577620,\t\n-0.279422551996179710,\t-0.279374543235225480,\t-0.279326533775834440,\t-0.279278523618127490,\t-0.279230512762224210,\t-0.279182501208244280,\t-0.279134488956308490,\t-0.279086476006536470,\t\n-0.279038462359048280,\t-0.278990448013963500,\t-0.278942432971403030,\t-0.278894417231486450,\t-0.278846400794333870,\t-0.278798383660064820,\t-0.278750365828800250,\t-0.278702347300659790,\t\n-0.278654328075763400,\t-0.278606308154230820,\t-0.278558287536182890,\t-0.278510266221739240,\t-0.278462244211019890,\t-0.278414221504144580,\t-0.278366198101234090,\t-0.278318174002408100,\t\n-0.278270149207786700,\t-0.278222123717489440,\t-0.278174097531637350,\t-0.278126070650350050,\t-0.278078043073747120,\t-0.278030014801949440,\t-0.277981985835076830,\t-0.277933956173249170,\t\n-0.277885925816586220,\t-0.277837894765208930,\t-0.277789863019236860,\t-0.277741830578790090,\t-0.277693797443988370,\t-0.277645763614952580,\t-0.277597729091802410,\t-0.277549693874657890,\t\n-0.277501657963638680,\t-0.277453621358865750,\t-0.277405584060458840,\t-0.277357546068537910,\t-0.277309507383222690,\t-0.277261468004634140,\t-0.277213427932891940,\t-0.277165387168115670,\t\n-0.277117345710426450,\t-0.277069303559943800,\t-0.277021260716787950,\t-0.276973217181078480,\t-0.276925172952936390,\t-0.276877128032481380,\t-0.276829082419833560,\t-0.276781036115112620,\t\n-0.276732989118439470,\t-0.276684941429933880,\t-0.276636893049715950,\t-0.276588843977905340,\t-0.276540794214623020,\t-0.276492743759988780,\t-0.276444692614122630,\t-0.276396640777144320,\t\n-0.276348588249174850,\t-0.276300535030333920,\t-0.276252481120741190,\t-0.276204426520517740,\t-0.276156371229783150,\t-0.276108315248657700,\t-0.276060258577261020,\t-0.276012201215714130,\t\n-0.275964143164136700,\t-0.275916084422648920,\t-0.275868024991370530,\t-0.275819964870422480,\t-0.275771904059924520,\t-0.275723842559996820,\t-0.275675780370759070,\t-0.275627717492332280,\t\n-0.275579653924836190,\t-0.275531589668391030,\t-0.275483524723116380,\t-0.275435459089133420,\t-0.275387392766561770,\t-0.275339325755521670,\t-0.275291258056132800,\t-0.275243189668516240,\t\n-0.275195120592791660,\t-0.275147050829078920,\t-0.275098980377498910,\t-0.275050909238171490,\t-0.275002837411216780,\t-0.274954764896754580,\t-0.274906691694905890,\t-0.274858617805790460,\t\n-0.274810543229528470,\t-0.274762467966239710,\t-0.274714392016045190,\t-0.274666315379064720,\t-0.274618238055418410,\t-0.274570160045226110,\t-0.274522081348608840,\t-0.274474001965686390,\t\n-0.274425921896578880,\t-0.274377841141406180,\t-0.274329759700289330,\t-0.274281677573348040,\t-0.274233594760702140,\t-0.274185511262472650,\t-0.274137427078779420,\t-0.274089342209742630,\t\n-0.274041256655482010,\t-0.273993170416118700,\t-0.273945083491772490,\t-0.273896995882563500,\t-0.273848907588611690,\t-0.273800818610037970,\t-0.273752728946962230,\t-0.273704638599504670,\t\n-0.273656547567785070,\t-0.273608455851924500,\t-0.273560363452042820,\t-0.273512270368260260,\t-0.273464176600696550,\t-0.273416082149472880,\t-0.273367987014708990,\t-0.273319891196524670,\t\n-0.273271794695041090,\t-0.273223697510378010,\t-0.273175599642655640,\t-0.273127501091993910,\t-0.273079401858513810,\t-0.273031301942335210,\t-0.272983201343578400,\t-0.272935100062363100,\t\n-0.272886998098810510,\t-0.272838895453040410,\t-0.272790792125173100,\t-0.272742688115328370,\t-0.272694583423627350,\t-0.272646478050189880,\t-0.272598371995136150,\t-0.272550265258586110,\t\n-0.272502157840660840,\t-0.272454049741480190,\t-0.272405940961163940,\t-0.272357831499833340,\t-0.272309721357608110,\t-0.272261610534608570,\t-0.272213499030954600,\t-0.272165386846767280,\t\n-0.272117273982166510,\t-0.272069160437272580,\t-0.272021046212205300,\t-0.271972931307085830,\t-0.271924815722034030,\t-0.271876699457170190,\t-0.271828582512614160,\t-0.271780464888487120,\t\n-0.271732346584908910,\t-0.271684227601999840,\t-0.271636107939879800,\t-0.271587987598669870,\t-0.271539866578490000,\t-0.271491744879460480,\t-0.271443622501701120,\t-0.271395499445333140,\t\n-0.271347375710476460,\t-0.271299251297250850,\t-0.271251126205777630,\t-0.271203000436176510,\t-0.271154873988567910,\t-0.271106746863071730,\t-0.271058619059809050,\t-0.271010490578899870,\t\n-0.270962361420464480,\t-0.270914231584622690,\t-0.270866101071495780,\t-0.270817969881203660,\t-0.270769838013866560,\t-0.270721705469604450,\t-0.270673572248538550,\t-0.270625438350788670,\t\n-0.270577303776475210,\t-0.270529168525718070,\t-0.270481032598638430,\t-0.270432895995356190,\t-0.270384758715991270,\t-0.270336620760664950,\t-0.270288482129497020,\t-0.270240342822607890,\t\n-0.270192202840117470,\t-0.270144062182147040,\t-0.270095920848816400,\t-0.270047778840245940,\t-0.269999636156555640,\t-0.269951492797866620,\t-0.269903348764298940,\t-0.269855204055972850,\t\n-0.269807058673008360,\t-0.269758912615526590,\t-0.269710765883647560,\t-0.269662618477491680,\t-0.269614470397178730,\t-0.269566321642830060,\t-0.269518172214565640,\t-0.269470022112505310,\t\n-0.269421871336770370,\t-0.269373719887480770,\t-0.269325567764756800,\t-0.269277414968718540,\t-0.269229261499487170,\t-0.269181107357182650,\t-0.269132952541925370,\t-0.269084797053835260,\t\n-0.269036640893033590,\t-0.268988484059640260,\t-0.268940326553775810,\t-0.268892168375560070,\t-0.268844009525114340,\t-0.268795850002558620,\t-0.268747689808013220,\t-0.268699528941598210,\t\n-0.268651367403434760,\t-0.268603205193642950,\t-0.268555042312343120,\t-0.268506878759655230,\t-0.268458714535700580,\t-0.268410549640599130,\t-0.268362384074470880,\t-0.268314217837437140,\t\n-0.268266050929617810,\t-0.268217883351133330,\t-0.268169715102103800,\t-0.268121546182650330,\t-0.268073376592893040,\t-0.268025206332952290,\t-0.267977035402948090,\t-0.267928863803001740,\t\n-0.267880691533233240,\t-0.267832518593763000,\t-0.267784344984711040,\t-0.267736170706198650,\t-0.267687995758345790,\t-0.267639820141273020,\t-0.267591643855100200,\t-0.267543466899948730,\t\n-0.267495289275938570,\t-0.267447110983189800,\t-0.267398932021823690,\t-0.267350752391960210,\t-0.267302572093719830,\t-0.267254391127222660,\t-0.267206209492589890,\t-0.267158027189941580,\t\n-0.267109844219398260,\t-0.267061660581079830,\t-0.267013476275107740,\t-0.266965291301601960,\t-0.266917105660682890,\t-0.266868919352470700,\t-0.266820732377086590,\t-0.266772544734650670,\t\n-0.266724356425283360,\t-0.266676167449104770,\t-0.266627977806236200,\t-0.266579787496797670,\t-0.266531596520909190,\t-0.266483404878692210,\t-0.266435212570266700,\t-0.266387019595753170,\t\n-0.266338825955271640,\t-0.266290631648943510,\t-0.266242436676888740,\t-0.266194241039227950,\t-0.266146044736081060,\t-0.266097847767569510,\t-0.266049650133813380,\t-0.266001451834933070,\t\n-0.265953252871048760,\t-0.265905053242281700,\t-0.265856852948752000,\t-0.265808651990580180,\t-0.265760450367886310,\t-0.265712248080791750,\t-0.265664045129416600,\t-0.265615841513880850,\t\n-0.265567637234305930,\t-0.265519432290811930,\t-0.265471226683519360,\t-0.265423020412548280,\t-0.265374813478020110,\t-0.265326605880054860,\t-0.265278397618773140,\t-0.265230188694294990,\t\n-0.265181979106741740,\t-0.265133768856233630,\t-0.265085557942891010,\t-0.265037346366834130,\t-0.264989134128184310,\t-0.264940921227061640,\t-0.264892707663586640,\t-0.264844493437879470,\t\n-0.264796278550061490,\t-0.264748063000252830,\t-0.264699846788574000,\t-0.264651629915145130,\t-0.264603412380087550,\t-0.264555194183521520,\t-0.264506975325567050,\t-0.264458755806345590,\t\n-0.264410535625977220,\t-0.264362314784582500,\t-0.264314093282281560,\t-0.264265871119195860,\t-0.264217648295445470,\t-0.264169424811150910,\t-0.264121200666432410,\t-0.264072975861411320,\t\n-0.264024750396207820,\t-0.263976524270942370,\t-0.263928297485735260,\t-0.263880070040707790,\t-0.263831841935980140,\t-0.263783613171672930,\t-0.263735383747906230,\t-0.263687153664801500,\t\n-0.263638922922478870,\t-0.263590691521058520,\t-0.263542459460661900,\t-0.263494226741409100,\t-0.263445993363420730,\t-0.263397759326816970,\t-0.263349524631719180,\t-0.263301289278247640,\t\n-0.263253053266522870,\t-0.263204816596665000,\t-0.263156579268795540,\t-0.263108341283034670,\t-0.263060102639502910,\t-0.263011863338320440,\t-0.262963623379608770,\t-0.262915382763488080,\t\n-0.262867141490078890,\t-0.262818899559501440,\t-0.262770656971877130,\t-0.262722413727326190,\t-0.262674169825968810,\t-0.262625925267926390,\t-0.262577680053319220,\t-0.262529434182267820,\t\n-0.262481187654892370,\t-0.262432940471314440,\t-0.262384692631654150,\t-0.262336444136032080,\t-0.262288194984568510,\t-0.262239945177384860,\t-0.262191694714601350,\t-0.262143443596338620,\t\n-0.262095191822716840,\t-0.262046939393857540,\t-0.261998686309880880,\t-0.261950432570907500,\t-0.261902178177057580,\t-0.261853923128452680,\t-0.261805667425212940,\t-0.261757411067459090,\t\n-0.261709154055311200,\t-0.261660896388890900,\t-0.261612638068318360,\t-0.261564379093713770,\t-0.261516119465198700,\t-0.261467859182893340,\t-0.261419598246918290,\t-0.261371336657393820,\t\n-0.261323074414441470,\t-0.261274811518181440,\t-0.261226547968734350,\t-0.261178283766220430,\t-0.261130018910761260,\t-0.261081753402477080,\t-0.261033487241488500,\t-0.260985220427915720,\t\n-0.260936952961880350,\t-0.260888684843502640,\t-0.260840416072903150,\t-0.260792146650202230,\t-0.260743876575521390,\t-0.260695605848980830,\t-0.260647334470700820,\t-0.260599062440802940,\t\n-0.260550789759407380,\t-0.260502516426634800,\t-0.260454242442605570,\t-0.260405967807441130,\t-0.260357692521261790,\t-0.260309416584188210,\t-0.260261139996340650,\t-0.260212862757840670,\t\n-0.260164584868808560,\t-0.260116306329364940,\t-0.260068027139630180,\t-0.260019747299725710,\t-0.259971466809771960,\t-0.259923185669889480,\t-0.259874903880198630,\t-0.259826621440820920,\t\n-0.259778338351876690,\t-0.259730054613486190,\t-0.259681770225770990,\t-0.259633485188851320,\t-0.259585199502847970,\t-0.259536913167881190,\t-0.259488626184072530,\t-0.259440338551542300,\t\n-0.259392050270411290,\t-0.259343761340799670,\t-0.259295471762829080,\t-0.259247181536619850,\t-0.259198890662292620,\t-0.259150599139967740,\t-0.259102306969766830,\t-0.259054014151810120,\t\n-0.259005720686218350,\t-0.258957426573111880,\t-0.258909131812612270,\t-0.258860836404839870,\t-0.258812540349914910,\t-0.258764243647959020,\t-0.258715946299092500,\t-0.258667648303436190,\t\n-0.258619349661110280,\t-0.258571050372236430,\t-0.258522750436934960,\t-0.258474449855326580,\t-0.258426148627531660,\t-0.258377846753671810,\t-0.258329544233867390,\t-0.258281241068239080,\t\n-0.258232937256907210,\t-0.258184632799993430,\t-0.258136327697618070,\t-0.258088021949901940,\t-0.258039715556965250,\t-0.257991408518929770,\t-0.257943100835915710,\t-0.257894792508043920,\t\n-0.257846483535434710,\t-0.257798173918209750,\t-0.257749863656489330,\t-0.257701552750393860,\t-0.257653241200044900,\t-0.257604929005562810,\t-0.257556616167068430,\t-0.257508302684682110,\t\n-0.257459988558525420,\t-0.257411673788718760,\t-0.257363358375382930,\t-0.257315042318638280,\t-0.257266725618606470,\t-0.257218408275407820,\t-0.257170090289163160,\t-0.257121771659992840,\t\n-0.257073452388018540,\t-0.257025132473360560,\t-0.256976811916139800,\t-0.256928490716476550,\t-0.256880168874492500,\t-0.256831846390308040,\t-0.256783523264043520,\t-0.256735199495820690,\t\n-0.256686875085759770,\t-0.256638550033981730,\t-0.256590224340606850,\t-0.256541898005756830,\t-0.256493571029552060,\t-0.256445243412113390,\t-0.256396915153561170,\t-0.256348586254017130,\t\n-0.256300256713601570,\t-0.256251926532435390,\t-0.256203595710638940,\t-0.256155264248333960,\t-0.256106932145640840,\t-0.256058599402680330,\t-0.256010266019572940,\t-0.255961931996440300,\t\n-0.255913597333402850,\t-0.255865262030580910,\t-0.255816926088096310,\t-0.255768589506069400,\t-0.255720252284620970,\t-0.255671914423871490,\t-0.255623575923942690,\t-0.255575236784954920,\t\n-0.255526897007029070,\t-0.255478556590285510,\t-0.255430215534846070,\t-0.255381873840831000,\t-0.255333531508361300,\t-0.255285188537557330,\t-0.255236844928540820,\t-0.255188500681432170,\t\n-0.255140155796352300,\t-0.255091810273421650,\t-0.255043464112761850,\t-0.254995117314493370,\t-0.254946769878737160,\t-0.254898421805613560,\t-0.254850073095244320,\t-0.254801723747749900,\t\n-0.254753373763250750,\t-0.254705023141868600,\t-0.254656671883723930,\t-0.254608319988937510,\t-0.254559967457629930,\t-0.254511614289922810,\t-0.254463260485936650,\t-0.254414906045792370,\t\n-0.254366550969610360,\t-0.254318195257512420,\t-0.254269838909619020,\t-0.254221481926050990,\t-0.254173124306928840,\t-0.254124766052374330,\t-0.254076407162507840,\t-0.254028047637450400,\t\n-0.253979687477322410,\t-0.253931326682245610,\t-0.253882965252340440,\t-0.253834603187727490,\t-0.253786240488528440,\t-0.253737877154863790,\t-0.253689513186854450,\t-0.253641148584620950,\t\n-0.253592783348284940,\t-0.253544417477966970,\t-0.253496050973788020,\t-0.253447683835868460,\t-0.253399316064330140,\t-0.253350947659293500,\t-0.253302578620879510,\t-0.253254208949208640,\t\n-0.253205838644402710,\t-0.253157467706582150,\t-0.253109096135867910,\t-0.253060723932380550,\t-0.253012351096241760,\t-0.252963977627572110,\t-0.252915603526492060,\t-0.252867228793123460,\t\n-0.252818853427586810,\t-0.252770477430002970,\t-0.252722100800492570,\t-0.252673723539177330,\t-0.252625345646177780,\t-0.252576967121614810,\t-0.252528587965609060,\t-0.252480208178282260,\t\n-0.252431827759754920,\t-0.252383446710148010,\t-0.252335065029582030,\t-0.252286682718178890,\t-0.252238299776058990,\t-0.252189916203343360,\t-0.252141532000152490,\t-0.252093147166608240,\t\n-0.252044761702831130,\t-0.251996375608941670,\t-0.251947988885061700,\t-0.251899601531311750,\t-0.251851213547812810,\t-0.251802824934685370,\t-0.251754435692051360,\t-0.251706045820031200,\t\n-0.251657655318745950,\t-0.251609264188316140,\t-0.251560872428863600,\t-0.251512480040508910,\t-0.251464087023372970,\t-0.251415693377576410,\t-0.251367299103241020,\t-0.251318904200487410,\t\n-0.251270508669436510,\t-0.251222112510208930,\t-0.251173715722926520,\t-0.251125318307709790,\t-0.251076920264679760,\t-0.251028521593957000,\t-0.250980122295663410,\t-0.250931722369919450,\t\n-0.250883321816845810,\t-0.250834920636564260,\t-0.250786518829195390,\t-0.250738116394860270,\t-0.250689713333679400,\t-0.250641309645774690,\t-0.250592905331266710,\t-0.250544500390276480,\t\n-0.250496094822924560,\t-0.250447688629332810,\t-0.250399281809621840,\t-0.250350874363912680,\t-0.250302466292325890,\t-0.250254057594983370,\t-0.250205648272005750,\t-0.250157238323513940,\t\n-0.250108827749628670,\t-0.250060416550471680,\t-0.250012004726163690,\t-0.249963592276825300,\t-0.249915179202578300,\t-0.249866765503543390,\t-0.249818351179841550,\t-0.249769936231593410,\t\n-0.249721520658920840,\t-0.249673104461944490,\t-0.249624687640785350,\t-0.249576270195564110,\t-0.249527852126402580,\t-0.249479433433421440,\t-0.249431014116741710,\t-0.249382594176484010,\t\n-0.249334173612770270,\t-0.249285752425721100,\t-0.249237330615457530,\t-0.249188908182100210,\t-0.249140485125771060,\t-0.249092061446590680,\t-0.249043637144679720,\t-0.248995212220160110,\t\n-0.248946786673152450,\t-0.248898360503777840,\t-0.248849933712156880,\t-0.248801506298411550,\t-0.248753078262662440,\t-0.248704649605030610,\t-0.248656220325636750,\t-0.248607790424602760,\t\n-0.248559359902049300,\t-0.248510928758097440,\t-0.248462496992867820,\t-0.248414064606482410,\t-0.248365631599061800,\t-0.248317197970727150,\t-0.248268763721599060,\t-0.248220328851799480,\t\n-0.248171893361449100,\t-0.248123457250668980,\t-0.248075020519579780,\t-0.248026583168303450,\t-0.247978145196960680,\t-0.247929706605672100,\t-0.247881267394559710,\t-0.247832827563744110,\t\n-0.247784387113346470,\t-0.247735946043487420,\t-0.247687504354288960,\t-0.247639062045871720,\t-0.247590619118356840,\t-0.247542175571864950,\t-0.247493731406518090,\t-0.247445286622436870,\t\n-0.247396841219742450,\t-0.247348395198555500,\t-0.247299948558997980,\t-0.247251501301190580,\t-0.247203053425254450,\t-0.247154604931310250,\t-0.247106155819479980,\t-0.247057706089884280,\t\n-0.247009255742643930,\t-0.246960804777880850,\t-0.246912353195715750,\t-0.246863900996269790,\t-0.246815448179663640,\t-0.246766994746019290,\t-0.246718540695457460,\t-0.246670086028099260,\t\n-0.246621630744065430,\t-0.246573174843477960,\t-0.246524718326457560,\t-0.246476261193125350,\t-0.246427803443602040,\t-0.246379345078009680,\t-0.246330886096468940,\t-0.246282426499101010,\t\n-0.246233966286026560,\t-0.246185505457367640,\t-0.246137044013244930,\t-0.246088581953779200,\t-0.246040119279092450,\t-0.245991655989305390,\t-0.245943192084539190,\t-0.245894727564914590,\t\n-0.245846262430553600,\t-0.245797796681576950,\t-0.245749330318105810,\t-0.245700863340260920,\t-0.245652395748164280,\t-0.245603927541936660,\t-0.245555458721699230,\t-0.245506989287572720,\t\n-0.245458519239679180,\t-0.245410048578139330,\t-0.245361577303074340,\t-0.245313105414605020,\t-0.245264632912853330,\t-0.245216159797940060,\t-0.245167686069986400,\t-0.245119211729113110,\t\n-0.245070736775442190,\t-0.245022261209094460,\t-0.244973785030190630,\t-0.244925308238852750,\t-0.244876830835201620,\t-0.244828352819358410,\t-0.244779874191443900,\t-0.244731394951580110,\t\n-0.244682915099887850,\t-0.244634434636488320,\t-0.244585953561502230,\t-0.244537471875051700,\t-0.244488989577257510,\t-0.244440506668240850,\t-0.244392023148122470,\t-0.244343539017024460,\t\n-0.244295054275067620,\t-0.244246568922373150,\t-0.244198082959061810,\t-0.244149596385255680,\t-0.244101109201075580,\t-0.244052621406642300,\t-0.244004133002077850,\t-0.243955643987503110,\t\n-0.243907154363039220,\t-0.243858664128807050,\t-0.243810173284928630,\t-0.243761681831524770,\t-0.243713189768716730,\t-0.243664697096625250,\t-0.243616203815372500,\t-0.243567709925079200,\t\n-0.243519215425866660,\t-0.243470720317855630,\t-0.243422224601168250,\t-0.243373728275925270,\t-0.243325231342248010,\t-0.243276733800257220,\t-0.243228235650075040,\t-0.243179736891822260,\t\n-0.243131237525619710,\t-0.243082737551589490,\t-0.243034236969852440,\t-0.242985735780529790,\t-0.242937233983742370,\t-0.242888731579612300,\t-0.242840228568260370,\t-0.242791724949807910,\t\n-0.242743220724375680,\t-0.242694715892085850,\t-0.242646210453059230,\t-0.242597704407417070,\t-0.242549197755280220,\t-0.242500690496770810,\t-0.242452182632009680,\t-0.242403674161118100,\t\n-0.242355165084216890,\t-0.242306655401428210,\t-0.242258145112872860,\t-0.242209634218671750,\t-0.242161122718946960,\t-0.242112610613819390,\t-0.242064097903410270,\t-0.242015584587840500,\t\n-0.241967070667232190,\t-0.241918556141706180,\t-0.241870041011383820,\t-0.241821525276385900,\t-0.241773008936834590,\t-0.241724491992850790,\t-0.241675974444555740,\t-0.241627456292070300,\t\n-0.241578937535516680,\t-0.241530418175015720,\t-0.241481898210688720,\t-0.241433377642656520,\t-0.241384856471041300,\t-0.241336334695963970,\t-0.241287812317545790,\t-0.241239289335907630,\t\n-0.241190765751171710,\t-0.241142241563458870,\t-0.241093716772889960,\t-0.241045191379587210,\t-0.240996665383671510,\t-0.240948138785264110,\t-0.240899611584485950,\t-0.240851083781459200,\t\n-0.240802555376304710,\t-0.240754026369143860,\t-0.240705496760097500,\t-0.240656966549287840,\t-0.240608435736835740,\t-0.240559904322862560,\t-0.240511372307489200,\t-0.240462839690837840,\t\n-0.240414306473029390,\t-0.240365772654185160,\t-0.240317238234426050,\t-0.240268703213874310,\t-0.240220167592650800,\t-0.240171631370876440,\t-0.240123094548673420,\t-0.240074557126162660,\t\n-0.240026019103465520,\t-0.239977480480702910,\t-0.239928941257997020,\t-0.239880401435468770,\t-0.239831861013239530,\t-0.239783319991430180,\t-0.239734778370162990,\t-0.239686236149558860,\t\n-0.239637693329739110,\t-0.239589149910824720,\t-0.239540605892937880,\t-0.239492061276199510,\t-0.239443516060731030,\t-0.239394970246653290,\t-0.239346423834088550,\t-0.239297876823157780,\t\n-0.239249329213981870,\t-0.239200781006683070,\t-0.239152232201382320,\t-0.239103682798200990,\t-0.239055132797260010,\t-0.239006582198681650,\t-0.238958031002586810,\t-0.238909479209096910,\t\n-0.238860926818332870,\t-0.238812373830416950,\t-0.238763820245470100,\t-0.238715266063613710,\t-0.238666711284968690,\t-0.238618155909657350,\t-0.238569599937800610,\t-0.238521043369519880,\t\n-0.238472486204936110,\t-0.238423928444171540,\t-0.238375370087347160,\t-0.238326811134584370,\t-0.238278251586004100,\t-0.238229691441728620,\t-0.238181130701878930,\t-0.238132569366575980,\t\n-0.238084007435942050,\t-0.238035444910098090,\t-0.237986881789165520,\t-0.237938318073265320,\t-0.237889753762519750,\t-0.237841188857049800,\t-0.237792623356976870,\t-0.237744057262421950,\t\n-0.237695490573507310,\t-0.237646923290353970,\t-0.237598355413083300,\t-0.237549786941816300,\t-0.237501217876675300,\t-0.237452648217781230,\t-0.237404077965255560,\t-0.237355507119219240,\t\n-0.237306935679794610,\t-0.237258363647102620,\t-0.237209791021264300,\t-0.237161217802401900,\t-0.237112643990636500,\t-0.237064069586089470,\t-0.237015494588881850,\t-0.236966918999135910,\t\n-0.236918342816972660,\t-0.236869766042513590,\t-0.236821188675879650,\t-0.236772610717193160,\t-0.236724032166575170,\t-0.236675453024147080,\t-0.236626873290029930,\t-0.236578292964346040,\t\n-0.236529712047216400,\t-0.236481130538762490,\t-0.236432548439105330,\t-0.236383965748367230,\t-0.236335382466669190,\t-0.236286798594132290,\t-0.236238214130878810,\t-0.236189629077029810,\t\n-0.236141043432706730,\t-0.236092457198030600,\t-0.236043870373123770,\t-0.235995282958107260,\t-0.235946694953102530,\t-0.235898106358230640,\t-0.235849517173613910,\t-0.235800927399373420,\t\n-0.235752337035630590,\t-0.235703746082506470,\t-0.235655154540123420,\t-0.235606562408602500,\t-0.235557969688065170,\t-0.235509376378632480,\t-0.235460782480426790,\t-0.235412187993569140,\t\n-0.235363592918180600,\t-0.235314997254383480,\t-0.235266401002298900,\t-0.235217804162048290,\t-0.235169206733752740,\t-0.235120608717534620,\t-0.235072010113514970,\t-0.235023410921815310,\t\n-0.234974811142556670,\t-0.234926210775861430,\t-0.234877609821850690,\t-0.234829008280645900,\t-0.234780406152368170,\t-0.234731803437139840,\t-0.234683200135082040,\t-0.234634596246316220,\t\n-0.234585991770963450,\t-0.234537386709146170,\t-0.234488781060985390,\t-0.234440174826602680,\t-0.234391568006119100,\t-0.234342960599657040,\t-0.234294352607337550,\t-0.234245744029281780,\t\n-0.234197134865612060,\t-0.234148525116449510,\t-0.234099914781915660,\t-0.234051303862131580,\t-0.234002692357219650,\t-0.233954080267301020,\t-0.233905467592497200,\t-0.233856854332929240,\t\n-0.233808240488719590,\t-0.233759626059989340,\t-0.233711011046860040,\t-0.233662395449452780,\t-0.233613779267889950,\t-0.233565162502292670,\t-0.233516545152782500,\t-0.233467927219480510,\t\n-0.233419308702509150,\t-0.233370689601989530,\t-0.233322069918042750,\t-0.233273449650791190,\t-0.233224828800356050,\t-0.233176207366858820,\t-0.233127585350420640,\t-0.233078962751163940,\t\n-0.233030339569209820,\t-0.232981715804679860,\t-0.232933091457695170,\t-0.232884466528378190,\t-0.232835841016850040,\t-0.232787214923232290,\t-0.232738588247646070,\t-0.232689960990213800,\t\n-0.232641333151056650,\t-0.232592704730296140,\t-0.232544075728053470,\t-0.232495446144451000,\t-0.232446815979609950,\t-0.232398185233651410,\t-0.232349553906697870,\t-0.232300921998870400,\t\n-0.232252289510290640,\t-0.232203656441079740,\t-0.232155022791360130,\t-0.232106388561252960,\t-0.232057753750879810,\t-0.232009118360361840,\t-0.231960482389821530,\t-0.231911845839379990,\t\n-0.231863208709158860,\t-0.231814570999279240,\t-0.231765932709863650,\t-0.231717293841033230,\t-0.231668654392909570,\t-0.231620014365613830,\t-0.231571373759268510,\t-0.231522732573994750,\t\n-0.231474090809914130,\t-0.231425448467147880,\t-0.231376805545818440,\t-0.231328162046046980,\t-0.231279517967954680,\t-0.231230873311664030,\t-0.231182228077296190,\t-0.231133582264972770,\t\n-0.231084935874814960,\t-0.231036288906945250,\t-0.230987641361484840,\t-0.230938993238555300,\t-0.230890344538277840,\t-0.230841695260774970,\t-0.230793045406167850,\t-0.230744394974578130,\t\n-0.230695743966126960,\t-0.230647092380936890,\t-0.230598440219129090,\t-0.230549787480825190,\t-0.230501134166146370,\t-0.230452480275215170,\t-0.230403825808152750,\t-0.230355170765080330,\t\n-0.230306515146120440,\t-0.230257858951394250,\t-0.230209202181023420,\t-0.230160544835129130,\t-0.230111886913833940,\t-0.230063228417259010,\t-0.230014569345526030,\t-0.229965909698756160,\t\n-0.229917249477071980,\t-0.229868588680594650,\t-0.229819927309445870,\t-0.229771265363746840,\t-0.229722602843620060,\t-0.229673939749186790,\t-0.229625276080568680,\t-0.229576611837886910,\t\n-0.229527947021264080,\t-0.229479281630821370,\t-0.229430615666680020,\t-0.229381949128962560,\t-0.229333282017790240,\t-0.229284614333284700,\t-0.229235946075567220,\t-0.229187277244760290,\t\n-0.229138607840985160,\t-0.229089937864363520,\t-0.229041267315016590,\t-0.228992596193066940,\t-0.228943924498635790,\t-0.228895252231844840,\t-0.228846579392815300,\t-0.228797905981669770,\t\n-0.228749231998529480,\t-0.228700557443516080,\t-0.228651882316750880,\t-0.228603206618356400,\t-0.228554530348453910,\t-0.228505853507164650,\t-0.228457176094611190,\t-0.228408498110914790,\t\n-0.228359819556197140,\t-0.228311140430579510,\t-0.228262460734184490,\t-0.228213780467133280,\t-0.228165099629547650,\t-0.228116418221548820,\t-0.228067736243259380,\t-0.228019053694800610,\t\n-0.227970370576294180,\t-0.227921686887861410,\t-0.227873002629624840,\t-0.227824317801705780,\t-0.227775632404225940,\t-0.227726946437306570,\t-0.227678259901070240,\t-0.227629572795638310,\t\n-0.227580885121132420,\t-0.227532196877673870,\t-0.227483508065385280,\t-0.227434818684387920,\t-0.227386128734803100,\t-0.227337438216753370,\t-0.227288747130360040,\t-0.227240055475744830,\t\n-0.227191363253029080,\t-0.227142670462335330,\t-0.227093977103784930,\t-0.227045283177499560,\t-0.226996588683600560,\t-0.226947893622210520,\t-0.226899197993450760,\t-0.226850501797442980,\t\n-0.226801805034308520,\t-0.226753107704170010,\t-0.226704409807148700,\t-0.226655711343366370,\t-0.226607012312944330,\t-0.226558312716005210,\t-0.226509612552670270,\t-0.226460911823060910,\t\n-0.226412210527299680,\t-0.226363508665507920,\t-0.226314806237807390,\t-0.226266103244319420,\t-0.226217399685166630,\t-0.226168695560470310,\t-0.226119990870352280,\t-0.226071285614933840,\t\n-0.226022579794337620,\t-0.225973873408684940,\t-0.225925166458097570,\t-0.225876458942696870,\t-0.225827750862605450,\t-0.225779042217944650,\t-0.225730333008836240,\t-0.225681623235401560,\t\n-0.225632912897763270,\t-0.225584201996042680,\t-0.225535490530361180,\t-0.225486778500841370,\t-0.225438065907604600,\t-0.225389352750772680,\t-0.225340639030466940,\t-0.225291924746810030,\t\n-0.225243209899923330,\t-0.225194494489928590,\t-0.225145778516947200,\t-0.225097061981101770,\t-0.225048344882513710,\t-0.224999627221304760,\t-0.224950908997596320,\t-0.224902190211511060,\t\n-0.224853470863170310,\t-0.224804750952695860,\t-0.224756030480209150,\t-0.224707309445832750,\t-0.224658587849688090,\t-0.224609865691896980,\t-0.224561142972580760,\t-0.224512419691862110,\t\n-0.224463695849862420,\t-0.224414971446703050,\t-0.224366246482506660,\t-0.224317520957394710,\t-0.224268794871488930,\t-0.224220068224910720,\t-0.224171341017782770,\t-0.224122613250226480,\t\n-0.224073884922363660,\t-0.224025156034315690,\t-0.223976426586205260,\t-0.223927696578153780,\t-0.223878966010283040,\t-0.223830234882714450,\t-0.223781503195570720,\t-0.223732770948973230,\t\n-0.223684038143043800,\t-0.223635304777903860,\t-0.223586570853676090,\t-0.223537836370481860,\t-0.223489101328442630,\t-0.223440365727681080,\t-0.223391629568318620,\t-0.223342892850477090,\t\n-0.223294155574277900,\t-0.223245417739843720,\t-0.223196679347296030,\t-0.223147940396756620,\t-0.223099200888346950,\t-0.223050460822189680,\t-0.223001720198406280,\t-0.222952979017118580,\t\n-0.222904237278447990,\t-0.222855494982517250,\t-0.222806752129447750,\t-0.222758008719361380,\t-0.222709264752379570,\t-0.222660520228625040,\t-0.222611775148219170,\t-0.222563029511283460,\t\n-0.222514283317940600,\t-0.222465536568312030,\t-0.222416789262519620,\t-0.222368041400684810,\t-0.222319292982930320,\t-0.222270544009377600,\t-0.222221794480148530,\t-0.222173044395364530,\t\n-0.222124293755148360,\t-0.222075542559621450,\t-0.222026790808905670,\t-0.221978038503122500,\t-0.221929285642394670,\t-0.221880532226843620,\t-0.221831778256591230,\t-0.221783023731758950,\t\n-0.221734268652469590,\t-0.221685513018844510,\t-0.221636756831005250,\t-0.221588000089074500,\t-0.221539242793173770,\t-0.221490484943424940,\t-0.221441726539949450,\t-0.221392967582870080,\t\n-0.221344208072308280,\t-0.221295448008385990,\t-0.221246687391224630,\t-0.221197926220946970,\t-0.221149164497674520,\t-0.221100402221529160,\t-0.221051639392632340,\t-0.221002876011106850,\t\n-0.220954112077074190,\t-0.220905347590656250,\t-0.220856582551974490,\t-0.220807816961151730,\t-0.220759050818309400,\t-0.220710284123569470,\t-0.220661516877053400,\t-0.220612749078883950,\t\n-0.220563980729182620,\t-0.220515211828070930,\t-0.220466442375671650,\t-0.220417672372106240,\t-0.220368901817496660,\t-0.220320130711964380,\t-0.220271359055632220,\t-0.220222586848621640,\t\n-0.220173814091054630,\t-0.220125040783052620,\t-0.220076266924738470,\t-0.220027492516233630,\t-0.219978717557660080,\t-0.219929942049139270,\t-0.219881165990794050,\t-0.219832389382745940,\t\n-0.219783612225116830,\t-0.219734834518028280,\t-0.219686056261603040,\t-0.219637277455962680,\t-0.219588498101228710,\t-0.219539718197523910,\t-0.219490937744969810,\t-0.219442156743688390,\t\n-0.219393375193801120,\t-0.219344593095430830,\t-0.219295810448699090,\t-0.219247027253727830,\t-0.219198243510638550,\t-0.219149459219554090,\t-0.219100674380595990,\t-0.219051888993886220,\t\n-0.219003103059546260,\t-0.218954316577699010,\t-0.218905529548465950,\t-0.218856741971969050,\t-0.218807953848329910,\t-0.218759165177671270,\t-0.218710375960114750,\t-0.218661586195781830,\t\n-0.218612795884795400,\t-0.218564005027276960,\t-0.218515213623348530,\t-0.218466421673131630,\t-0.218417629176749090,\t-0.218368836134322510,\t-0.218320042545973810,\t-0.218271248411824580,\t\n-0.218222453731997670,\t-0.218173658506614600,\t-0.218124862735797400,\t-0.218076066419667620,\t-0.218027269558348110,\t-0.217978472151960400,\t-0.217929674200626530,\t-0.217880875704468040,\t\n-0.217832076663607790,\t-0.217783277078167360,\t-0.217734476948268720,\t-0.217685676274033460,\t-0.217636875055584430,\t-0.217588073293043220,\t-0.217539270986531420,\t-0.217490468136171840,\t\n-0.217441664742086120,\t-0.217392860804396210,\t-0.217344056323223730,\t-0.217295251298691540,\t-0.217246445730921220,\t-0.217197639620034800,\t-0.217148832966153840,\t-0.217100025769401210,\t\n-0.217051218029898550,\t-0.217002409747767830,\t-0.216953600923130650,\t-0.216904791556109890,\t-0.216855981646827150,\t-0.216807171195404490,\t-0.216758360201963430,\t-0.216709548666626920,\t\n-0.216660736589516540,\t-0.216611923970753910,\t-0.216563110810461870,\t-0.216514297108762050,\t-0.216465482865776490,\t-0.216416668081626800,\t-0.216367852756435890,\t-0.216319036890325310,\t\n-0.216270220483417150,\t-0.216221403535833020,\t-0.216172586047695820,\t-0.216123768019127140,\t-0.216074949450249050,\t-0.216026130341183150,\t-0.215977310692052340,\t-0.215928490502978270,\t\n-0.215879669774082960,\t-0.215830848505488060,\t-0.215782026697316470,\t-0.215733204349689790,\t-0.215684381462729700,\t-0.215635558036559070,\t-0.215586734071299550,\t-0.215537909567073190,\t\n-0.215489084524001620,\t-0.215440258942207780,\t-0.215391432821813310,\t-0.215342606162940240,\t-0.215293778965710200,\t-0.215244951230246170,\t-0.215196122956669760,\t-0.215147294145103060,\t\n-0.215098464795667660,\t-0.215049634908486550,\t-0.215000804483681330,\t-0.214951973521374130,\t-0.214903142021686560,\t-0.214854309984741560,\t-0.214805477410660780,\t-0.214756644299565870,\t\n-0.214707810651579790,\t-0.214658976466824190,\t-0.214610141745421120,\t-0.214561306487492300,\t-0.214512470693160620,\t-0.214463634362547780,\t-0.214414797495775860,\t-0.214365960092966490,\t\n-0.214317122154242670,\t-0.214268283679726030,\t-0.214219444669538680,\t-0.214170605123802320,\t-0.214121765042639860,\t-0.214072924426172980,\t-0.214024083274523800,\t-0.213975241587813950,\t\n-0.213926399366166450,\t-0.213877556609702950,\t-0.213828713318545580,\t-0.213779869492815970,\t-0.213731025132637110,\t-0.213682180238130710,\t-0.213633334809418430,\t-0.213584488846623230,\t\n-0.213535642349866800,\t-0.213486795319271280,\t-0.213437947754958330,\t-0.213389099657050970,\t-0.213340251025670840,\t-0.213291401860940060,\t-0.213242552162980380,\t-0.213193701931914730,\t\n-0.213144851167864830,\t-0.213095999870952820,\t-0.213047148041300340,\t-0.212998295679030450,\t-0.212949442784264810,\t-0.212900589357125580,\t-0.212851735397734440,\t-0.212802880906214380,\t\n-0.212754025882687130,\t-0.212705170327274370,\t-0.212656314240099120,\t-0.212607457621283110,\t-0.212558600470948430,\t-0.212509742789216830,\t-0.212460884576211290,\t-0.212412025832053540,\t\n-0.212363166556865740,\t-0.212314306750769570,\t-0.212265446413888090,\t-0.212216585546342980,\t-0.212167724148256410,\t-0.212118862219750100,\t-0.212069999760947060,\t-0.212021136771969020,\t\n-0.211972273252938160,\t-0.211923409203976150,\t-0.211874544625206080,\t-0.211825679516749630,\t-0.211776813878728540,\t-0.211727947711265880,\t-0.211679081014483320,\t-0.211630213788503080,\t\n-0.211581346033446860,\t-0.211532477749437700,\t-0.211483608936597370,\t-0.211434739595047990,\t-0.211385869724911360,\t-0.211336999326310480,\t-0.211288128399367090,\t-0.211239256944203370,\t\n-0.211190384960941090,\t-0.211141512449703280,\t-0.211092639410611680,\t-0.211043765843788510,\t-0.210994891749355460,\t-0.210946017127435630,\t-0.210897141978150740,\t-0.210848266301623010,\t\n-0.210799390097974190,\t-0.210750513367327310,\t-0.210701636109804140,\t-0.210652758325526460,\t-0.210603880014617330,\t-0.210555001177198470,\t-0.210506121813392150,\t-0.210457241923320050,\t\n-0.210408361507105290,\t-0.210359480564869640,\t-0.210310599096735270,\t-0.210261717102823990,\t-0.210212834583258850,\t-0.210163951538161610,\t-0.210115067967654500,\t-0.210066183871859270,\t\n-0.210017299250899010,\t-0.209968414104895530,\t-0.209919528433971020,\t-0.209870642238247220,\t-0.209821755517847260,\t-0.209772868272892930,\t-0.209723980503505990,\t-0.209675092209809510,\t\n-0.209626203391925340,\t-0.209577314049975620,\t-0.209528424184082210,\t-0.209479533794368150,\t-0.209430642880955280,\t-0.209381751443965790,\t-0.209332859483521480,\t-0.209283966999745470,\t\n-0.209235073992759530,\t-0.209186180462685920,\t-0.209137286409646410,\t-0.209088391833764130,\t-0.209039496735160840,\t-0.208990601113958840,\t-0.208941704970279890,\t-0.208892808304247140,\t\n-0.208843911115982330,\t-0.208795013405607330,\t-0.208746115173245230,\t-0.208697216419017840,\t-0.208648317143047410,\t-0.208599417345455730,\t-0.208550517026365980,\t-0.208501616185899910,\t\n-0.208452714824179820,\t-0.208403812941327480,\t-0.208354910537466080,\t-0.208306007612717360,\t-0.208257104167203670,\t-0.208208200201046740,\t-0.208159295714369780,\t-0.208110390707294560,\t\n-0.208061485179943360,\t-0.208012579132438010,\t-0.207963672564901670,\t-0.207914765477456130,\t-0.207865857870223240,\t-0.207816949743326150,\t-0.207768041096886680,\t-0.207719131931027120,\t\n-0.207670222245869280,\t-0.207621312041536330,\t-0.207572401318150110,\t-0.207523490075832870,\t-0.207474578314706480,\t-0.207425666034894070,\t-0.207376753236517470,\t-0.207327839919699030,\t\n-0.207278926084560530,\t-0.207230011731225160,\t-0.207181096859814760,\t-0.207132181470451620,\t-0.207083265563257600,\t-0.207034349138355830,\t-0.206985432195868210,\t-0.206936514735916980,\t\n-0.206887596758624060,\t-0.206838678264112560,\t-0.206789759252504370,\t-0.206740839723921350,\t-0.206691919678486660,\t-0.206642999116322200,\t-0.206594078037550200,\t-0.206545156442292600,\t\n-0.206496234330672520,\t-0.206447311702811890,\t-0.206398388558832940,\t-0.206349464898857610,\t-0.206300540723009050,\t-0.206251616031409120,\t-0.206202690824180160,\t-0.206153765101444040,\t\n-0.206104838863323950,\t-0.206055912109941760,\t-0.206006984841419770,\t-0.205958057057879920,\t-0.205909128759445340,\t-0.205860199946237940,\t-0.205811270618379590,\t-0.205762340775993540,\t\n-0.205713410419201600,\t-0.205664479548126140,\t-0.205615548162889040,\t-0.205566616263613530,\t-0.205517683850421460,\t-0.205468750923435190,\t-0.205419817482776600,\t-0.205370883528568910,\t\n-0.205321949060934010,\t-0.205273014079994240,\t-0.205224078585871490,\t-0.205175142578688990,\t-0.205126206058568630,\t-0.205077269025632750,\t-0.205028331480003270,\t-0.204979393421803380,\t\n-0.204930454851155020,\t-0.204881515768180090,\t-0.204832576173001800,\t-0.204783636065742070,\t-0.204734695446523260,\t-0.204685754315467260,\t-0.204636812672697320,\t-0.204587870518335320,\t\n-0.204538927852503690,\t-0.204489984675324280,\t-0.204441040986920340,\t-0.204392096787413820,\t-0.204343152076927050,\t-0.204294206855581940,\t-0.204245261123501780,\t-0.204196314880808440,\t\n-0.204147368127624320,\t-0.204098420864071370,\t-0.204049473090272770,\t-0.204000524806350500,\t-0.203951576012426920,\t-0.203902626708623970,\t-0.203853676895064890,\t-0.203804726571871600,\t\n-0.203755775739166090,\t-0.203706824397071550,\t-0.203657872545709940,\t-0.203608920185203680,\t-0.203559967315674660,\t-0.203511013937246160,\t-0.203462060050040140,\t-0.203413105654178940,\t\n-0.203364150749784590,\t-0.203315195336980250,\t-0.203266239415887950,\t-0.203217282986630030,\t-0.203168326049328500,\t-0.203119368604106560,\t-0.203070410651086220,\t-0.203021452190389830,\t\n-0.202972493222139390,\t-0.202923533746458130,\t-0.202874573763468070,\t-0.202825613273291130,\t-0.202776652276050570,\t-0.202727690771868420,\t-0.202678728760867010,\t-0.202629766243168360,\t\n-0.202580803218895710,\t-0.202531839688171070,\t-0.202482875651116830,\t-0.202433911107854970,\t-0.202384946058508740,\t-0.202335980503200170,\t-0.202287014442051630,\t-0.202238047875185150,\t\n-0.202189080802723960,\t-0.202140113224790090,\t-0.202091145141505920,\t-0.202042176552993450,\t-0.201993207459375960,\t-0.201944237860775480,\t-0.201895267757313950,\t-0.201846297149114700,\t\n-0.201797326036299710,\t-0.201748354418991390,\t-0.201699382297311770,\t-0.201650409671384120,\t-0.201601436541330450,\t-0.201552462907273160,\t-0.201503488769334300,\t-0.201454514127637150,\t\n-0.201405538982303730,\t-0.201356563333456450,\t-0.201307587181217330,\t-0.201258610525709670,\t-0.201209633367055500,\t-0.201160655705377220,\t-0.201111677540796870,\t-0.201062698873437780,\t\n-0.201013719703421940,\t-0.200964740030871360,\t-0.200915759855909370,\t-0.200866779178657970,\t-0.200817797999239630,\t-0.200768816317776350,\t-0.200719834134391480,\t-0.200670851449207020,\t\n-0.200621868262345400,\t-0.200572884573928720,\t-0.200523900384080240,\t-0.200474915692922030,\t-0.200425930500576500,\t-0.200376944807165720,\t-0.200327958612813020,\t-0.200278971917640440,\t\n-0.200229984721770390,\t-0.200180997025324990,\t-0.200132008828427490,\t-0.200083020131200000,\t-0.200034030933764930,\t-0.199985041236244360,\t-0.199936051038761640,\t-0.199887060341438770,\t\n-0.199838069144397830,\t-0.199789077447762140,\t-0.199740085251653770,\t-0.199691092556195160,\t-0.199642099361508420,\t-0.199593105667716850,\t-0.199544111474942500,\t-0.199495116783307890,\t\n-0.199446121592935070,\t-0.199397125903947340,\t-0.199348129716466820,\t-0.199299133030615970,\t-0.199250135846516850,\t-0.199201138164292830,\t-0.199152139984065970,\t-0.199103141305958740,\t\n-0.199054142130093260,\t-0.199005142456592820,\t-0.198956142285579530,\t-0.198907141617175460,\t-0.198858140451503990,\t-0.198809138788687140,\t-0.198760136628847450,\t-0.198711133972106990,\t\n-0.198662130818589130,\t-0.198613127168415950,\t-0.198564123021709920,\t-0.198515118378593170,\t-0.198466113239189060,\t-0.198417107603619660,\t-0.198368101472007510,\t-0.198319094844474660,\t\n-0.198270087721144490,\t-0.198221080102139120,\t-0.198172071987581050,\t-0.198123063377592360,\t-0.198074054272296430,\t-0.198025044671815390,\t-0.197976034576271300,\t-0.197927023985787570,\t\n-0.197878012900486260,\t-0.197829001320489920,\t-0.197779989245920630,\t-0.197730976676901820,\t-0.197681963613555580,\t-0.197632950056004400,\t-0.197583936004370440,\t-0.197534921458777050,\t\n-0.197485906419346380,\t-0.197436890886200920,\t-0.197387874859462800,\t-0.197338858339255440,\t-0.197289841325700930,\t-0.197240823818921830,\t-0.197191805819040220,\t-0.197142787326179540,\t\n-0.197093768340461880,\t-0.197044748862009820,\t-0.196995728890945440,\t-0.196946708427392150,\t-0.196897687471472130,\t-0.196848666023307420,\t-0.196799644083021500,\t-0.196750621650736480,\t\n-0.196701598726574890,\t-0.196652575310658860,\t-0.196603551403111840,\t-0.196554527004055930,\t-0.196505502113613730,\t-0.196456476731907300,\t-0.196407450859060140,\t-0.196358424495194360,\t\n-0.196309397640432510,\t-0.196260370294896710,\t-0.196211342458710440,\t-0.196162314131995810,\t-0.196113285314875400,\t-0.196064256007471350,\t-0.196015226209907080,\t-0.195966195922304740,\t\n-0.195917165144786490,\t-0.195868133877475760,\t-0.195819102120494660,\t-0.195770069873965860,\t-0.195721037138011420,\t-0.195672003912754830,\t-0.195622970198318230,\t-0.195573935994824200,\t\n-0.195524901302394890,\t-0.195475866121153780,\t-0.195426830451222970,\t-0.195377794292725120,\t-0.195328757645782340,\t-0.195279720510518090,\t-0.195230682887054560,\t-0.195181644775514310,\t\n-0.195132606176019520,\t-0.195083567088693620,\t-0.195034527513658850,\t-0.194985487451037300,\t-0.194936446900952460,\t-0.194887405863526510,\t-0.194838364338882050,\t-0.194789322327141250,\t\n-0.194740279828427560,\t-0.194691236842863190,\t-0.194642193370570700,\t-0.194593149411672330,\t-0.194544104966291490,\t-0.194495060034550390,\t-0.194446014616571660,\t-0.194396968712477440,\t\n-0.194347922322391260,\t-0.194298875446435260,\t-0.194249828084732040,\t-0.194200780237403860,\t-0.194151731904574130,\t-0.194102683086365110,\t-0.194053633782898920,\t-0.194004583994299070,\t\n-0.193955533720687770,\t-0.193906482962187650,\t-0.193857431718920890,\t-0.193808379991010970,\t-0.193759327778580100,\t-0.193710275081750930,\t-0.193661221900645610,\t-0.193612168235387680,\t\n-0.193563114086099330,\t-0.193514059452903200,\t-0.193465004335921480,\t-0.193415948735277700,\t-0.193366892651094020,\t-0.193317836083493150,\t-0.193268779032597200,\t-0.193219721498529780,\t\n-0.193170663481413040,\t-0.193121604981369650,\t-0.193072545998521810,\t-0.193023486532993030,\t-0.192974426584905550,\t-0.192925366154381550,\t-0.192876305241544590,\t-0.192827243846516870,\t\n-0.192778181969421010,\t-0.192729119610379280,\t-0.192680056769515190,\t-0.192630993446950950,\t-0.192581929642809240,\t-0.192532865357212260,\t-0.192483800590283530,\t-0.192434735342145340,\t\n-0.192385669612920280,\t-0.192336603402730620,\t-0.192287536711699900,\t-0.192238469539950330,\t-0.192189401887604580,\t-0.192140333754784900,\t-0.192091265141614790,\t-0.192042196048216540,\t\n-0.191993126474712370,\t-0.191944056421225830,\t-0.191894985887879120,\t-0.191845914874794960,\t-0.191796843382095600,\t-0.191747771409904540,\t-0.191698698958344040,\t-0.191649626027536820,\t\n-0.191600552617605090,\t-0.191551478728672400,\t-0.191502404360861020,\t-0.191453329514293640,\t-0.191404254189092520,\t-0.191355178385381160,\t-0.191306102103281860,\t-0.191257025342917330,\t\n-0.191207948104409780,\t-0.191158870387882820,\t-0.191109792193458670,\t-0.191060713521259580,\t-0.191011634371409170,\t-0.190962554744029650,\t-0.190913474639243770,\t-0.190864394057173760,\t\n-0.190815312997943190,\t-0.190766231461674350,\t-0.190717149448489910,\t-0.190668066958512180,\t-0.190618983991864720,\t-0.190569900548669820,\t-0.190520816629050130,\t-0.190471732233127970,\t\n-0.190422647361026930,\t-0.190373562012869260,\t-0.190324476188777710,\t-0.190275389888874490,\t-0.190226303113283260,\t-0.190177215862126270,\t-0.190128128135526240,\t-0.190079039933605450,\t\n-0.190029951256487500,\t-0.189980862104294660,\t-0.189931772477149240,\t-0.189882682375174830,\t-0.189833591798493710,\t-0.189784500747228610,\t-0.189735409221501810,\t-0.189686317221436950,\t\n-0.189637224747156270,\t-0.189588131798782530,\t-0.189539038376438040,\t-0.189489944480246390,\t-0.189440850110329880,\t-0.189391755266811230,\t-0.189342659949812750,\t-0.189293564159458080,\t\n-0.189244467895869490,\t-0.189195371159169730,\t-0.189146273949481110,\t-0.189097176266927240,\t-0.189048078111630410,\t-0.188998979483712970,\t-0.188949880383298520,\t-0.188900780810509340,\t\n-0.188851680765468240,\t-0.188802580248297490,\t-0.188753479259120730,\t-0.188704377798060260,\t-0.188655275865238860,\t-0.188606173460778820,\t-0.188557070584803810,\t-0.188507967237436100,\t\n-0.188458863418798470,\t-0.188409759129013250,\t-0.188360654368204070,\t-0.188311549136493260,\t-0.188262443434003580,\t-0.188213337260857340,\t-0.188164230617178210,\t-0.188115123503088480,\t\n-0.188066015918710530,\t-0.188016907864167970,\t-0.187967799339583130,\t-0.187918690345078800,\t-0.187869580880777320,\t-0.187820470946802290,\t-0.187771360543276120,\t-0.187722249670321530,\t\n-0.187673138328060870,\t-0.187624026516617830,\t-0.187574914236114690,\t-0.187525801486674280,\t-0.187476688268418930,\t-0.187427574581472300,\t-0.187378460425956740,\t-0.187329345801995010,\t\n-0.187280230709709480,\t-0.187231115149223830,\t-0.187181999120660390,\t-0.187132882624141930,\t-0.187083765659790850,\t-0.187034648227730780,\t-0.186985530328084070,\t-0.186936411960973130,\t\n-0.186887293126521580,\t-0.186838173824851820,\t-0.186789054056086590,\t-0.186739933820348310,\t-0.186690813117760650,\t-0.186641691948445930,\t-0.186592570312526990,\t-0.186543448210126170,\t\n-0.186494325641367200,\t-0.186445202606372370,\t-0.186396079105264570,\t-0.186346955138166130,\t-0.186297830705200730,\t-0.186248705806490750,\t-0.186199580442159040,\t-0.186150454612327900,\t\n-0.186101328317121090,\t-0.186052201556660940,\t-0.186003074331069860,\t-0.185953946640471520,\t-0.185904818484988330,\t-0.185855689864743070,\t-0.185806560779858160,\t-0.185757431230457290,\t\n-0.185708301216662850,\t-0.185659170738597640,\t-0.185610039796384070,\t-0.185560908390145830,\t-0.185511776520005330,\t-0.185462644186085410,\t-0.185413511388508400,\t-0.185364378127398090,\t\n-0.185315244402876810,\t-0.185266110215067420,\t-0.185216975564092310,\t-0.185167840450075200,\t-0.185118704873138500,\t-0.185069568833404610,\t-0.185020432330997210,\t-0.184971295366038760,\t\n-0.184922157938652050,\t-0.184873020048959500,\t-0.184823881697084860,\t-0.184774742883150520,\t-0.184725603607279300,\t-0.184676463869593630,\t-0.184627323670217250,\t-0.184578183009272560,\t\n-0.184529041886882430,\t-0.184479900303169240,\t-0.184430758258256750,\t-0.184381615752267330,\t-0.184332472785323910,\t-0.184283329357548850,\t-0.184234185469065920,\t-0.184185041119997510,\t\n-0.184135896310466060,\t-0.184086751040595300,\t-0.184037605310507700,\t-0.183988459120326050,\t-0.183939312470172810,\t-0.183890165360171750,\t-0.183841017790445260,\t-0.183791869761116250,\t\n-0.183742721272307120,\t-0.183693572324141600,\t-0.183644422916742180,\t-0.183595273050231680,\t-0.183546122724732560,\t-0.183496971940368600,\t-0.183447820697262180,\t-0.183398668995536220,\t\n-0.183349516835313140,\t-0.183300364216716720,\t-0.183251211139869390,\t-0.183202057604894030,\t-0.183152903611913080,\t-0.183103749161050320,\t-0.183054594252428180,\t-0.183005438886169100,\t\n-0.182956283062396890,\t-0.182907126781233940,\t-0.182857970042803210,\t-0.182808812847227110,\t-0.182759655194629390,\t-0.182710497085132570,\t-0.182661338518859460,\t-0.182612179495932610,\t\n-0.182563020016475730,\t-0.182513860080611300,\t-0.182464699688462210,\t-0.182415538840150940,\t-0.182366377535801260,\t-0.182317215775535640,\t-0.182268053559477010,\t-0.182218890887747760,\t\n-0.182169727760471740,\t-0.182120564177771390,\t-0.182071400139769220,\t-0.182022235646588980,\t-0.181973070698353140,\t-0.181923905295184620,\t-0.181874739437205890,\t-0.181825573124540780,\t\n-0.181776406357311710,\t-0.181727239135641650,\t-0.181678071459653030,\t-0.181628903329469680,\t-0.181579734745214080,\t-0.181530565707009120,\t-0.181481396214977330,\t-0.181432226269242460,\t\n-0.181383055869927060,\t-0.181333885017154000,\t-0.181284713711045790,\t-0.181235541951726250,\t-0.181186369739317840,\t-0.181137197073943070,\t-0.181088023955725740,\t-0.181038850384788370,\t\n-0.180989676361253850,\t-0.180940501885244710,\t-0.180891326956884760,\t-0.180842151576296490,\t-0.180792975743602840,\t-0.180743799458926300,\t-0.180694622722390700,\t-0.180645445534118570,\t\n-0.180596267894232800,\t-0.180547089802855940,\t-0.180497911260111780,\t-0.180448732266122850,\t-0.180399552821012080,\t-0.180350372924902000,\t-0.180301192577916440,\t-0.180252011780177880,\t\n-0.180202830531809270,\t-0.180153648832933190,\t-0.180104466683673390,\t-0.180055284084152440,\t-0.180006101034492850,\t-0.179956917534818430,\t-0.179907733585251720,\t-0.179858549185915680,\t\n-0.179809364336932810,\t-0.179760179038427000,\t-0.179710993290520730,\t-0.179661807093336980,\t-0.179612620446998270,\t-0.179563433351628440,\t-0.179514245807350040,\t-0.179465057814286010,\t\n-0.179415869372558910,\t-0.179366680482292570,\t-0.179317491143609510,\t-0.179268301356632740,\t-0.179219111121484780,\t-0.179169920438289470,\t-0.179120729307169380,\t-0.179071537728247020,\t\n-0.179022345701646240,\t-0.178973153227489610,\t-0.178923960305900100,\t-0.178874766937000250,\t-0.178825573120913910,\t-0.178776378857763650,\t-0.178727184147672440,\t-0.178677988990762810,\t\n-0.178628793387158670,\t-0.178579597336982530,\t-0.178530400840357430,\t-0.178481203897405850,\t-0.178432006508251720,\t-0.178382808673017560,\t-0.178333610391826380,\t-0.178284411664800750,\t\n-0.178235212492064530,\t-0.178186012873740280,\t-0.178136812809950560,\t-0.178087612300819210,\t-0.178038411346468860,\t-0.177989209947022500,\t-0.177940008102602630,\t-0.177890805813333220,\t\n-0.177841603079336770,\t-0.177792399900736340,\t-0.177743196277654450,\t-0.177693992210215010,\t-0.177644787698540580,\t-0.177595582742754190,\t-0.177546377342978400,\t-0.177497171499337110,\t\n-0.177447965211952910,\t-0.177398758480948770,\t-0.177349551306447310,\t-0.177300343688572390,\t-0.177251135627446630,\t-0.177201927123192600,\t-0.177152718175934170,\t-0.177103508785793950,\t\n-0.177054298952894980,\t-0.177005088677359810,\t-0.176955877959312340,\t-0.176906666798875210,\t-0.176857455196171380,\t-0.176808243151323490,\t-0.176759030664455420,\t-0.176709817735689780,\t\n-0.176660604365149600,\t-0.176611390552957460,\t-0.176562176299237290,\t-0.176512961604111670,\t-0.176463746467703660,\t-0.176414530890135840,\t-0.176365314871532120,\t-0.176316098412015120,\t\n-0.176266881511707880,\t-0.176217664170733010,\t-0.176168446389214390,\t-0.176119228167274680,\t-0.176070009505036460,\t-0.176020790402623640,\t-0.175971570860158830,\t-0.175922350877765120,\t\n-0.175873130455565070,\t-0.175823909593682660,\t-0.175774688292240470,\t-0.175725466551361540,\t-0.175676244371168520,\t-0.175627021751785320,\t-0.175577798693334590,\t-0.175528575195939340,\t\n-0.175479351259722220,\t-0.175430126884807160,\t-0.175380902071316790,\t-0.175331676819374140,\t-0.175282451129101870,\t-0.175233225000623940,\t-0.175183998434062900,\t-0.175134771429541450,\t\n-0.175085543987183540,\t-0.175036316107111730,\t-0.174987087789449130,\t-0.174937859034318380,\t-0.174888629841843450,\t-0.174839400212146890,\t-0.174790170145351860,\t-0.174740939641580970,\t\n-0.174691708700958180,\t-0.174642477323606080,\t-0.174593245509647830,\t-0.174544013259205990,\t-0.174494780572404580,\t-0.174445547449366220,\t-0.174396313890213980,\t-0.174347079895070510,\t\n-0.174297845464059800,\t-0.174248610597304450,\t-0.174199375294927160,\t-0.174150139557051860,\t-0.174100903383801210,\t-0.174051666775298290,\t-0.174002429731665800,\t-0.173953192253027630,\t\n-0.173903954339506510,\t-0.173854715991225480,\t-0.173805477208307250,\t-0.173756237990875750,\t-0.173706998339053680,\t-0.173657758252964090,\t-0.173608517732729640,\t-0.173559276778474380,\t\n-0.173510035390320920,\t-0.173460793568392360,\t-0.173411551312811360,\t-0.173362308623701940,\t-0.173313065501186750,\t-0.173263821945388890,\t-0.173214577956431050,\t-0.173165333534437190,\t\n-0.173116088679530020,\t-0.173066843391832180,\t-0.173017597671467650,\t-0.172968351518559130,\t-0.172919104933229730,\t-0.172869857915602170,\t-0.172820610465800360,\t-0.172771362583947040,\t\n-0.172722114270165290,\t-0.172672865524577830,\t-0.172623616347308660,\t-0.172574366738480450,\t-0.172525116698216300,\t-0.172475866226638940,\t-0.172426615323872350,\t-0.172377363990039220,\t\n-0.172328112225262680,\t-0.172278860029665410,\t-0.172229607403371430,\t-0.172180354346503440,\t-0.172131100859184120,\t-0.172081846941537500,\t-0.172032592593686250,\t-0.171983337815753530,\t\n-0.171934082607862030,\t-0.171884826970135740,\t-0.171835570902697380,\t-0.171786314405670100,\t-0.171737057479176610,\t-0.171687800123340920,\t-0.171638542338285710,\t-0.171589284124134160,\t\n-0.171540025481008940,\t-0.171490766409034100,\t-0.171441506908332380,\t-0.171392246979026860,\t-0.171342986621240280,\t-0.171293725835096670,\t-0.171244464620718770,\t-0.171195202978229240,\t\n-0.171145940907752180,\t-0.171096678409410230,\t-0.171047415483326610,\t-0.170998152129623990,\t-0.170948888348426450,\t-0.170899624139856680,\t-0.170850359504037850,\t-0.170801094441092680,\t\n-0.170751828951145210,\t-0.170702563034318160,\t-0.170653296690734730,\t-0.170604029920517600,\t-0.170554762723790830,\t-0.170505495100677170,\t-0.170456227051299760,\t-0.170406958575781340,\t\n-0.170357689674245970,\t-0.170308420346816400,\t-0.170259150593615290,\t-0.170209880414766780,\t-0.170160609810393550,\t-0.170111338780618820,\t-0.170062067325565280,\t-0.170012795445357020,\t\n-0.169963523140116760,\t-0.169914250409967720,\t-0.169864977255032580,\t-0.169815703675435470,\t-0.169766429671299070,\t-0.169717155242746610,\t-0.169667880389900830,\t-0.169618605112885790,\t\n-0.169569329411824200,\t-0.169520053286839330,\t-0.169470776738053890,\t-0.169421499765591930,\t-0.169372222369576190,\t-0.169322944550129940,\t-0.169273666307375860,\t-0.169224387641438070,\t\n-0.169175108552439310,\t-0.169125829040502360,\t-0.169076549105751230,\t-0.169027268748308760,\t-0.168977987968298100,\t-0.168928706765842070,\t-0.168879425141064660,\t-0.168830143094088720,\t\n-0.168780860625037420,\t-0.168731577734033520,\t-0.168682294421201110,\t-0.168633010686662980,\t-0.168583726530542320,\t-0.168534441952961880,\t-0.168485156954045810,\t-0.168435871533916840,\t\n-0.168386585692698180,\t-0.168337299430512620,\t-0.168288012747484260,\t-0.168238725643735850,\t-0.168189438119390190,\t-0.168140150174571370,\t-0.168090861809402190,\t-0.168041573024005850,\t\n-0.167992283818505140,\t-0.167942994193024160,\t-0.167893704147685700,\t-0.167844413682612960,\t-0.167795122797928770,\t-0.167745831493757190,\t-0.167696539770221030,\t-0.167647247627443540,\t\n-0.167597955065547500,\t-0.167548662084656990,\t-0.167499368684894820,\t-0.167450074866384250,\t-0.167400780629248040,\t-0.167351485973610330,\t-0.167302190899593890,\t-0.167252895407321550,\t\n-0.167203599496917400,\t-0.167154303168504240,\t-0.167105006422205330,\t-0.167055709258143480,\t-0.167006411676442780,\t-0.166957113677226070,\t-0.166907815260616540,\t-0.166858516426737070,\t\n-0.166809217175711730,\t-0.166759917507663340,\t-0.166710617422715170,\t-0.166661316920990010,\t-0.166612016002612020,\t-0.166562714667703950,\t-0.166513412916389130,\t-0.166464110748790310,\t\n-0.166414808165031680,\t-0.166365505165236020,\t-0.166316201749526580,\t-0.166266897918026210,\t-0.166217593670859030,\t-0.166168289008147870,\t-0.166118983930015560,\t-0.166069678436586210,\t\n-0.166020372527982660,\t-0.165971066204328190,\t-0.165921759465745610,\t-0.165872452312359090,\t-0.165823144744291410,\t-0.165773836761665900,\t-0.165724528364605330,\t-0.165675219553233890,\t\n-0.165625910327674400,\t-0.165576600688050140,\t-0.165527290634483930,\t-0.165477980167099940,\t-0.165428669286021010,\t-0.165379357991370380,\t-0.165330046283270940,\t-0.165280734161846830,\t\n-0.165231421627220850,\t-0.165182108679515910,\t-0.165132795318856110,\t-0.165083481545364340,\t-0.165034167359163850,\t-0.164984852760377530,\t-0.164935537749129500,\t-0.164886222325542620,\t\n-0.164836906489740200,\t-0.164787590241845060,\t-0.164738273581981400,\t-0.164688956510272020,\t-0.164639639026840280,\t-0.164590321131808990,\t-0.164541002825302350,\t-0.164491684107443190,\t\n-0.164442364978354850,\t-0.164393045438160130,\t-0.164343725486983230,\t-0.164294405124947030,\t-0.164245084352174390,\t-0.164195763168789450,\t-0.164146441574915120,\t-0.164097119570674690,\t\n-0.164047797156191000,\t-0.163998474331588260,\t-0.163949151096989350,\t-0.163899827452517580,\t-0.163850503398295770,\t-0.163801178934448150,\t-0.163751854061097570,\t-0.163702528778367380,\t\n-0.163653203086380400,\t-0.163603876985260880,\t-0.163554550475131650,\t-0.163505223556116050,\t-0.163455896228336950,\t-0.163406568491918560,\t-0.163357240346983730,\t-0.163307911793655390,\t\n-0.163258582832057690,\t-0.163209253462313520,\t-0.163159923684546240,\t-0.163110593498878690,\t-0.163061262905435100,\t-0.163011931904338350,\t-0.162962600495711790,\t-0.162913268679678290,\t\n-0.162863936456362050,\t-0.162814603825885950,\t-0.162765270788373360,\t-0.162715937343947150,\t-0.162666603492731540,\t-0.162617269234849400,\t-0.162567934570424120,\t-0.162518599499578530,\t\n-0.162469264022436920,\t-0.162419928139122120,\t-0.162370591849757500,\t-0.162321255154465970,\t-0.162271918053371740,\t-0.162222580546597720,\t-0.162173242634266800,\t-0.162123904316503230,\t\n-0.162074565593429890,\t-0.162025226465170120,\t-0.161975886931846860,\t-0.161926546993584330,\t-0.161877206650505420,\t-0.161827865902733490,\t-0.161778524750391480,\t-0.161729183193603580,\t\n-0.161679841232492710,\t-0.161630498867182250,\t-0.161581156097795110,\t-0.161531812924455510,\t-0.161482469347286380,\t-0.161433125366411080,\t-0.161383780981952520,\t-0.161334436194034950,\t\n-0.161285091002781290,\t-0.161235745408314450,\t-0.161186399410758710,\t-0.161137053010236950,\t-0.161087706206872570,\t-0.161038359000788500,\t-0.160989011392108940,\t-0.160939663380956890,\t\n-0.160890314967455650,\t-0.160840966151728190,\t-0.160791616933898760,\t-0.160742267314090280,\t-0.160692917292426130,\t-0.160643566869029250,\t-0.160594216044023910,\t-0.160544864817533020,\t\n-0.160495513189679940,\t-0.160446161160587690,\t-0.160396808730380420,\t-0.160347455899181170,\t-0.160298102667112840,\t-0.160248749034299670,\t-0.160199395000864640,\t-0.160150040566931110,\t\n-0.160100685732622070,\t-0.160051330498061720,\t-0.160001974863373060,\t-0.159952618828679450,\t-0.159903262394103880,\t-0.159853905559770580,\t-0.159804548325802510,\t-0.159755190692323080,\t\n-0.159705832659455200,\t-0.159656474227323240,\t-0.159607115396050050,\t-0.159557756165759070,\t-0.159508396536573280,\t-0.159459036508616920,\t-0.159409676082012980,\t-0.159360315256884850,\t\n-0.159310954033355490,\t-0.159261592411549190,\t-0.159212230391588910,\t-0.159162867973597600,\t-0.159113505157699560,\t-0.159064141944017770,\t-0.159014778332675630,\t-0.158965414323796100,\t\n-0.158916049917503470,\t-0.158866685113920710,\t-0.158817319913171250,\t-0.158767954315378050,\t-0.158718588320665380,\t-0.158669221929156250,\t-0.158619855140974100,\t-0.158570487956241820,\t\n-0.158521120375083780,\t-0.158471752397622960,\t-0.158422384023982730,\t-0.158373015254286130,\t-0.158323646088657400,\t-0.158274276527219570,\t-0.158224906570095610,\t-0.158175536217409820,\t\n-0.158126165469285210,\t-0.158076794325845150,\t-0.158027422787212680,\t-0.157978050853512100,\t-0.157928678524866390,\t-0.157879305801398970,\t-0.157829932683232870,\t-0.157780559170492360,\t\n-0.157731185263300460,\t-0.157681810961780610,\t-0.157632436266055780,\t-0.157583061176250290,\t-0.157533685692487160,\t-0.157484309814889780,\t-0.157434933543581230,\t-0.157385556878685770,\t\n-0.157336179820326410,\t-0.157286802368626190,\t-0.157237424523709370,\t-0.157188046285699020,\t-0.157138667654718540,\t-0.157089288630890940,\t-0.157039909214340580,\t-0.156990529405190430,\t\n-0.156941149203563950,\t-0.156891768609584180,\t-0.156842387623375410,\t-0.156793006245060680,\t-0.156743624474763420,\t-0.156694242312606670,\t-0.156644859758714760,\t-0.156595476813210700,\t\n-0.156546093476217920,\t-0.156496709747859510,\t-0.156447325628259750,\t-0.156397941117541660,\t-0.156348556215828300,\t-0.156299170923243970,\t-0.156249785239911730,\t-0.156200399165955020,\t\n-0.156151012701496870,\t-0.156101625846661620,\t-0.156052238601572300,\t-0.156002850966352410,\t-0.155953462941124940,\t-0.155904074526014260,\t-0.155854685721143390,\t-0.155805296526635800,\t\n-0.155755906942614510,\t-0.155706516969203930,\t-0.155657126606527030,\t-0.155607735854707330,\t-0.155558344713867840,\t-0.155508953184132940,\t-0.155459561265625660,\t-0.155410168958469460,\t\n-0.155360776262787410,\t-0.155311383178703850,\t-0.155261989706341840,\t-0.155212595845824420,\t-0.155163201597275950,\t-0.155113806960819470,\t-0.155064411936578470,\t-0.155015016524676000,\t\n-0.154965620725236420,\t-0.154916224538382800,\t-0.154866827964238620,\t-0.154817431002926940,\t-0.154768033654572120,\t-0.154718635919297190,\t-0.154669237797225690,\t-0.154619839288480660,\t\n-0.154570440393186460,\t-0.154521041111466170,\t-0.154471641443443270,\t-0.154422241389240820,\t-0.154372840948983210,\t-0.154323440122793500,\t-0.154274038910794780,\t-0.154224637313111370,\t\n-0.154175235329866350,\t-0.154125832961183260,\t-0.154076430207185170,\t-0.154027027067996420,\t-0.153977623543740120,\t-0.153928219634539730,\t-0.153878815340518370,\t-0.153829410661800420,\t\n-0.153780005598508930,\t-0.153730600150767420,\t-0.153681194318699000,\t-0.153631788102428000,\t-0.153582381502077560,\t-0.153532974517771150,\t-0.153483567149631850,\t-0.153434159397784100,\t\n-0.153384751262350930,\t-0.153335342743455450,\t-0.153285933841222080,\t-0.153236524555773830,\t-0.153187114887234300,\t-0.153137704835726530,\t-0.153088294401374920,\t-0.153038883584302590,\t\n-0.152989472384633060,\t-0.152940060802489420,\t-0.152890648837996050,\t-0.152841236491276070,\t-0.152791823762452980,\t-0.152742410651649900,\t-0.152692997158991230,\t-0.152643583284600070,\t\n-0.152594169028599960,\t-0.152544754391113980,\t-0.152495339372266530,\t-0.152445923972180760,\t-0.152396508190980190,\t-0.152347092028787880,\t-0.152297675485728280,\t-0.152248258561924530,\t\n-0.152198841257499660,\t-0.152149423572578130,\t-0.152100005507283060,\t-0.152050587061737960,\t-0.152001168236065960,\t-0.151951749030391460,\t-0.151902329444837610,\t-0.151852909479527930,\t\n-0.151803489134585550,\t-0.151754068410134860,\t-0.151704647306299010,\t-0.151655225823201570,\t-0.151605803960965600,\t-0.151556381719715550,\t-0.151506959099574540,\t-0.151457536100666150,\t\n-0.151408112723113500,\t-0.151358688967040970,\t-0.151309264832571730,\t-0.151259840319828890,\t-0.151210415428936900,\t-0.151160990160018850,\t-0.151111564513198350,\t-0.151062138488598480,\t\n-0.151012712086343730,\t-0.150963285306557170,\t-0.150913858149362400,\t-0.150864430614882560,\t-0.150815002703242080,\t-0.150765574414564090,\t-0.150716145748972160,\t-0.150666716706589430,\t\n-0.150617287287540340,\t-0.150567857491948040,\t-0.150518427319936090,\t-0.150468996771627640,\t-0.150419565847147140,\t-0.150370134546617710,\t-0.150320702870162530,\t-0.150271270817906010,\t\n-0.150221838389971300,\t-0.150172405586482010,\t-0.150122972407561280,\t-0.150073538853333550,\t-0.150024104923921990,\t-0.149974670619450130,\t-0.149925235940041170,\t-0.149875800885819560,\t\n-0.149826365456908470,\t-0.149776929653431450,\t-0.149727493475511650,\t-0.149678056923273570,\t-0.149628619996840350,\t-0.149579182696335580,\t-0.149529745021882400,\t-0.149480306973605310,\t\n-0.149430868551627460,\t-0.149381429756071990,\t-0.149331990587063400,\t-0.149282551044724790,\t-0.149233111129179840,\t-0.149183670840551670,\t-0.149134230178964770,\t-0.149084789144542260,\t\n-0.149035347737407810,\t-0.148985905957684540,\t-0.148936463805496940,\t-0.148887021280968200,\t-0.148837578384221870,\t-0.148788135115381190,\t-0.148738691474570610,\t-0.148689247461913280,\t\n-0.148639803077532830,\t-0.148590358321552460,\t-0.148540913194096620,\t-0.148491467695288480,\t-0.148442021825251680,\t-0.148392575584109400,\t-0.148343128971986120,\t-0.148293681989005000,\t\n-0.148244234635289240,\t-0.148194786910963360,\t-0.148145338816150500,\t-0.148095890350974260,\t-0.148046441515557880,\t-0.147996992310025830,\t-0.147947542734501310,\t-0.147898092789107930,\t\n-0.147848642473968890,\t-0.147799191789208670,\t-0.147749740734950450,\t-0.147700289311317900,\t-0.147650837518434190,\t-0.147601385356423840,\t-0.147551932825409990,\t-0.147502479925516320,\t\n-0.147453026656866020,\t-0.147403573019583590,\t-0.147354119013792250,\t-0.147304664639615140,\t-0.147255209897176800,\t-0.147205754786600470,\t-0.147156299308009750,\t-0.147106843461527830,\t\n-0.147057387247279240,\t-0.147007930665387170,\t-0.146958473715975290,\t-0.146909016399166790,\t-0.146859558715086160,\t-0.146810100663856660,\t-0.146760642245601900,\t-0.146711183460445090,\t\n-0.146661724308510770,\t-0.146612264789922150,\t-0.146562804904802860,\t-0.146513344653276120,\t-0.146463884035466420,\t-0.146414423051497070,\t-0.146364961701491190,\t-0.146315499985573330,\t\n-0.146266037903866750,\t-0.146216575456495080,\t-0.146167112643581510,\t-0.146117649465250600,\t-0.146068185921625570,\t-0.146018722012830090,\t-0.145969257738987330,\t-0.145919793100221910,\t\n-0.145870328096656980,\t-0.145820862728416240,\t-0.145771396995622890,\t-0.145721930898401490,\t-0.145672464436875290,\t-0.145622997611167900,\t-0.145573530421402590,\t-0.145524062867703860,\t\n-0.145474594950195020,\t-0.145425126668999680,\t-0.145375658024241070,\t-0.145326189016043740,\t-0.145276719644530980,\t-0.145227249909825970,\t-0.145177779812053260,\t-0.145128309351336110,\t\n-0.145078838527798180,\t-0.145029367341562710,\t-0.144979895792754280,\t-0.144930423881496070,\t-0.144880951607911840,\t-0.144831478972124780,\t-0.144782005974259470,\t-0.144732532614439140,\t\n-0.144683058892787490,\t-0.144633584809427730,\t-0.144584110364484460,\t-0.144534635558080910,\t-0.144485160390340760,\t-0.144435684861387280,\t-0.144386208971345050,\t-0.144336732720337260,\t\n-0.144287256108487220,\t-0.144237779135919480,\t-0.144188301802757300,\t-0.144138824109124350,\t-0.144089346055143900,\t-0.144039867640940510,\t-0.143990388866637480,\t-0.143940909732358460,\t\n-0.143891430238226730,\t-0.143841950384366870,\t-0.143792470170902130,\t-0.143742989597956230,\t-0.143693508665652390,\t-0.143644027374115250,\t-0.143594545723468000,\t-0.143545063713834410,\t\n-0.143495581345337710,\t-0.143446098618102510,\t-0.143396615532252080,\t-0.143347132087909640,\t-0.143297648285199810,\t-0.143248164124245870,\t-0.143198679605171520,\t-0.143149194728100030,\t\n-0.143099709493156010,\t-0.143050223900462680,\t-0.143000737950143810,\t-0.142951251642322670,\t-0.142901764977123810,\t-0.142852277954670560,\t-0.142802790575086630,\t-0.142753302838495240,\t\n-0.142703814745021060,\t-0.142654326294787360,\t-0.142604837487917800,\t-0.142555348324535730,\t-0.142505858804765740,\t-0.142456368928731090,\t-0.142406878696555080,\t-0.142357388108362320,\t\n-0.142307897164276080,\t-0.142258405864420100,\t-0.142208914208917650,\t-0.142159422197893380,\t-0.142109929831470560,\t-0.142060437109772900,\t-0.142010944032923690,\t-0.141961450601047590,\t\n-0.141911956814267850,\t-0.141862462672708220,\t-0.141812968176491970,\t-0.141763473325743770,\t-0.141713978120586890,\t-0.141664482561145060,\t-0.141614986647541570,\t-0.141565490379901040,\t\n-0.141515993758346810,\t-0.141466496783002600,\t-0.141416999453991690,\t-0.141367501771438750,\t-0.141318003735467020,\t-0.141268505346199860,\t-0.141219006603761880,\t-0.141169507508276370,\t\n-0.141120008059867100,\t-0.141070508258657360,\t-0.141021008104771810,\t-0.140971507598333710,\t-0.140922006739466870,\t-0.140872505528294560,\t-0.140823003964941430,\t-0.140773502049530790,\t\n-0.140723999782186390,\t-0.140674497163031570,\t-0.140624994192190910,\t-0.140575490869787790,\t-0.140525987195945950,\t-0.140476483170788670,\t-0.140426978794440660,\t-0.140377474067025170,\t\n-0.140327968988665590,\t-0.140278463559486500,\t-0.140228957779611250,\t-0.140179451649163620,\t-0.140129945168266910,\t-0.140080438337045780,\t-0.140030931155623570,\t-0.139981423624124020,\t\n-0.139931915742670470,\t-0.139882407511387560,\t-0.139832898930398660,\t-0.139783389999827480,\t-0.139733880719797390,\t-0.139684371090433050,\t-0.139634861111857800,\t-0.139585350784195370,\t\n-0.139535840107569140,\t-0.139486329082103730,\t-0.139436817707922520,\t-0.139387305985148810,\t-0.139337793913907270,\t-0.139288281494321260,\t-0.139238768726514530,\t-0.139189255610610460,\t\n-0.139139742146733690,\t-0.139090228335007530,\t-0.139040714175555830,\t-0.138991199668501900,\t-0.138941684813970430,\t-0.138892169612084730,\t-0.138842654062968580,\t-0.138793138166745380,\t\n-0.138743621923539780,\t-0.138694105333475120,\t-0.138644588396675210,\t-0.138595071113263360,\t-0.138545553483364280,\t-0.138496035507101320,\t-0.138446517184598270,\t-0.138396998515978500,\t\n-0.138347479501366670,\t-0.138297960140886130,\t-0.138248440434660250,\t-0.138198920382813730,\t-0.138149399985469910,\t-0.138099879242752550,\t-0.138050358154785090,\t-0.138000836721692170,\t\n-0.137951314943597140,\t-0.137901792820623810,\t-0.137852270352895600,\t-0.137802747540537120,\t-0.137753224383671800,\t-0.137703700882423400,\t-0.137654177036915320,\t-0.137604652847272220,\t\n-0.137555128313617490,\t-0.137505603436074960,\t-0.137456078214767960,\t-0.137406552649821210,\t-0.137357026741358080,\t-0.137307500489501970,\t-0.137257973894377520,\t-0.137208446956108120,\t\n-0.137158919674817640,\t-0.137109392050629390,\t-0.137059864083668100,\t-0.137010335774057190,\t-0.136960807121920410,\t-0.136911278127381160,\t-0.136861748790564170,\t-0.136812219111592800,\t\n-0.136762689090590920,\t-0.136713158727681830,\t-0.136663628022990310,\t-0.136614096976639700,\t-0.136564565588753880,\t-0.136515033859456180,\t-0.136465501788871320,\t-0.136415969377122750,\t\n-0.136366436624333790,\t-0.136316903530629170,\t-0.136267370096132300,\t-0.136217836320967010,\t-0.136168302205256690,\t-0.136118767749126040,\t-0.136069232952698490,\t-0.136019697816097850,\t\n-0.135970162339447530,\t-0.135920626522872230,\t-0.135871090366495360,\t-0.135821553870440790,\t-0.135772017034831880,\t-0.135722479859793380,\t-0.135672942345448660,\t-0.135623404491921590,\t\n-0.135573866299335570,\t-0.135524327767815340,\t-0.135474788897484270,\t-0.135425249688465810,\t-0.135375710140884650,\t-0.135326170254864210,\t-0.135276630030528370,\t-0.135227089468000490,\t\n-0.135177548567405330,\t-0.135128007328866290,\t-0.135078465752507260,\t-0.135028923838451610,\t-0.134979381586824070,\t-0.134929838997748100,\t-0.134880296071347520,\t-0.134830752807745790,\t\n-0.134781209207067570,\t-0.134731665269436360,\t-0.134682120994975980,\t-0.134632576383809850,\t-0.134583031436062730,\t-0.134533486151858030,\t-0.134483940531319620,\t-0.134434394574570900,\t\n-0.134384848281736660,\t-0.134335301652940280,\t-0.134285754688305200,\t-0.134236207387956190,\t-0.134186659752016660,\t-0.134137111780610470,\t-0.134087563473861080,\t-0.134038014831893200,\t\n-0.133988465854830290,\t-0.133938916542796220,\t-0.133889366895914410,\t-0.133839816914309630,\t-0.133790266598105310,\t-0.133740715947425310,\t-0.133691164962393080,\t-0.133641613643133400,\t\n-0.133592061989769670,\t-0.133542510002425780,\t-0.133492957681225180,\t-0.133443405026292650,\t-0.133393852037751590,\t-0.133344298715725450,\t-0.133294745060339000,\t-0.133245191071715700,\t\n-0.133195636749979420,\t-0.133146082095253610,\t-0.133096527107663040,\t-0.133046971787331130,\t-0.132997416134381820,\t-0.132947860148938500,\t-0.132898303831126000,\t-0.132848747181067710,\t\n-0.132799190198887580,\t-0.132749632884709010,\t-0.132700075238656820,\t-0.132650517260854420,\t-0.132600958951425730,\t-0.132551400310494230,\t-0.132501841338184660,\t-0.132452282034620480,\t\n-0.132402722399925150,\t-0.132353162434223460,\t-0.132303602137638840,\t-0.132254041510295240,\t-0.132204480552316090,\t-0.132154919263826190,\t-0.132105357644948990,\t-0.132055795695808390,\t\n-0.132006233416527840,\t-0.131956670807232170,\t-0.131907107868044830,\t-0.131857544599089690,\t-0.131807981000490270,\t-0.131758417072371350,\t-0.131708852814856360,\t-0.131659288228069240,\t\n-0.131609723312133470,\t-0.131560158067173830,\t-0.131510592493313820,\t-0.131461026590677290,\t-0.131411460359387780,\t-0.131361893799570060,\t-0.131312326911347590,\t-0.131262759694843860,\t\n-0.131213192150183680,\t-0.131163624277490510,\t-0.131114056076888280,\t-0.131064487548500470,\t-0.131014918692451910,\t-0.130965349508866010,\t-0.130915779997866770,\t-0.130866210159577640,\t\n-0.130816639994123410,\t-0.130767069501627560,\t-0.130717498682214080,\t-0.130667927536006370,\t-0.130618356063129330,\t-0.130568784263706360,\t-0.130519212137861440,\t-0.130469639685718060,\t\n-0.130420066907401020,\t-0.130370493803033780,\t-0.130320920372739900,\t-0.130271346616644160,\t-0.130221772534870020,\t-0.130172198127541490,\t-0.130122623394782010,\t-0.130073048336716400,\t\n-0.130023472953468190,\t-0.129973897245161290,\t-0.129924321211919190,\t-0.129874744853866740,\t-0.129825168171127440,\t-0.129775591163825200,\t-0.129726013832083540,\t-0.129676436176027310,\t\n-0.129626858195779960,\t-0.129577279891465470,\t-0.129527701263207370,\t-0.129478122311130430,\t-0.129428543035358200,\t-0.129378963436014150,\t-0.129329383513223150,\t-0.129279803267108690,\t\n-0.129230222697794720,\t-0.129180641805404760,\t-0.129131060590063600,\t-0.129081479051894820,\t-0.129031897191022340,\t-0.128982315007569680,\t-0.128932732501661680,\t-0.128883149673421820,\t\n-0.128833566522974120,\t-0.128783983050442030,\t-0.128734399255950450,\t-0.128684815139622850,\t-0.128635230701583230,\t-0.128585645941955070,\t-0.128536060860863250,\t-0.128486475458431280,\t\n-0.128436889734783120,\t-0.128387303690042310,\t-0.128337717324333660,\t-0.128288130637780720,\t-0.128238543630507020,\t-0.128188956302637410,\t-0.128139368654295400,\t-0.128089780685604950,\t\n-0.128040192396689620,\t-0.127990603787674270,\t-0.127941014858682390,\t-0.127891425609837990,\t-0.127841836041264560,\t-0.127792246153086990,\t-0.127742655945428800,\t-0.127693065418413990,\t\n-0.127643474572166070,\t-0.127593883406809880,\t-0.127544291922469020,\t-0.127494700119267390,\t-0.127445107997328610,\t-0.127395515556777470,\t-0.127345922797737540,\t-0.127296329720332390,\t\n-0.127246736324686830,\t-0.127197142610924440,\t-0.127147548579169180,\t-0.127097954229544650,\t-0.127048359562175640,\t-0.126998764577185730,\t-0.126949169274698900,\t-0.126899573654838730,\t\n-0.126849977717730070,\t-0.126800381463496450,\t-0.126750784892261880,\t-0.126701188004149900,\t-0.126651590799285400,\t-0.126601993277791920,\t-0.126552395439793460,\t-0.126502797285413580,\t\n-0.126453198814777120,\t-0.126403600028007680,\t-0.126354000925228800,\t-0.126304401506565360,\t-0.126254801772140910,\t-0.126205201722079470,\t-0.126155601356504580,\t-0.126106000675541120,\t\n-0.126056399679312650,\t-0.126006798367943210,\t-0.125957196741556310,\t-0.125907594800276860,\t-0.125857992544228410,\t-0.125808389973535000,\t-0.125758787088320170,\t-0.125709183888708830,\t\n-0.125659580374824500,\t-0.125609976546791240,\t-0.125560372404732580,\t-0.125510767948773440,\t-0.125461163179037380,\t-0.125411558095647970,\t-0.125361952698730100,\t-0.125312346988407370,\t\n-0.125262740964803750,\t-0.125213134628042840,\t-0.125163527978249560,\t-0.125113921015547440,\t-0.125064313740060500,\t-0.125014706151912350,\t-0.124965098251227880,\t-0.124915490038130670,\t\n-0.124865881512744720,\t-0.124816272675193630,\t-0.124766663525602310,\t-0.124717054064094320,\t-0.124667444290793700,\t-0.124617834205824020,\t-0.124568223809310210,\t-0.124518613101375820,\t\n-0.124469002082144910,\t-0.124419390751741060,\t-0.124369779110289170,\t-0.124320167157912820,\t-0.124270554894735620,\t-0.124220942320882470,\t-0.124171329436476980,\t-0.124121716241643160,\t\n-0.124072102736504600,\t-0.124022488921186220,\t-0.123972874795811640,\t-0.123923260360504860,\t-0.123873645615389480,\t-0.123824030560590420,\t-0.123774415196231310,\t-0.123724799522436150,\t\n-0.123675183539328550,\t-0.123625567247033430,\t-0.123575950645674390,\t-0.123526333735375480,\t-0.123476716516260300,\t-0.123427098988453750,\t-0.123377481152079470,\t-0.123327863007261030,\t\n-0.123278244554123400,\t-0.123228625792790130,\t-0.123179006723385320,\t-0.123129387346032540,\t-0.123079767660856740,\t-0.123030147667981510,\t-0.122980527367530910,\t-0.122930906759628560,\t\n-0.122881285844399380,\t-0.122831664621966980,\t-0.122782043092455430,\t-0.122732421255988320,\t-0.122682799112690600,\t-0.122633176662685890,\t-0.122583553906098240,\t-0.122533930843051250,\t\n-0.122484307473669880,\t-0.122434683798077750,\t-0.122385059816398470,\t-0.122335435528756980,\t-0.122285810935276880,\t-0.122236186036082270,\t-0.122186560831296750,\t-0.122136935321045280,\t\n-0.122087309505451460,\t-0.122037683384639370,\t-0.121988056958732630,\t-0.121938430227856190,\t-0.121888803192133670,\t-0.121839175851689140,\t-0.121789548206646240,\t-0.121739920257129920,\t\n-0.121690292003263770,\t-0.121640663445171910,\t-0.121591034582977940,\t-0.121541405416806830,\t-0.121491775946782220,\t-0.121442146173028150,\t-0.121392516095668280,\t-0.121342885714827560,\t\n-0.121293255030629630,\t-0.121243624043198120,\t-0.121193992752657990,\t-0.121144361159132880,\t-0.121094729262746860,\t-0.121045097063623580,\t-0.120995464561888010,\t-0.120945831757663750,\t\n-0.120896198651074940,\t-0.120846565242245170,\t-0.120796931531299450,\t-0.120747297518361390,\t-0.120697663203555090,\t-0.120648028587004190,\t-0.120598393668833650,\t-0.120548758449167130,\t\n-0.120499122928128710,\t-0.120449487105842050,\t-0.120399850982432120,\t-0.120350214558022560,\t-0.120300577832737010,\t-0.120250940806700470,\t-0.120201303480036560,\t-0.120151665852869400,\t\n-0.120102027925322650,\t-0.120052389697521260,\t-0.120002751169588890,\t-0.119953112341649650,\t-0.119903473213827190,\t-0.119853833786246480,\t-0.119804194059031190,\t-0.119754554032305410,\t\n-0.119704913706192810,\t-0.119655273080818360,\t-0.119605632156305740,\t-0.119555990932779020,\t-0.119506349410361900,\t-0.119456707589179340,\t-0.119407065469355010,\t-0.119357423051012570,\t\n-0.119307780334277020,\t-0.119258137319272030,\t-0.119208494006121680,\t-0.119158850394949670,\t-0.119109206485880960,\t-0.119059562279039230,\t-0.119009917774548610,\t-0.118960272972532750,\t\n-0.118910627873116640,\t-0.118860982476423970,\t-0.118811336782578840,\t-0.118761690791704930,\t-0.118712044503927240,\t-0.118662397919369430,\t-0.118612751038155620,\t-0.118563103860409500,\t\n-0.118513456386256060,\t-0.118463808615818980,\t-0.118414160549221940,\t-0.118364512186589930,\t-0.118314863528046640,\t-0.118265214573716210,\t-0.118215565323722280,\t-0.118165915778189880,\t\n-0.118116265937242710,\t-0.118066615801004860,\t-0.118016965369600030,\t-0.117967314643153230,\t-0.117917663621788140,\t-0.117868012305628910,\t-0.117818360694799190,\t-0.117768708789424010,\t\n-0.117719056589627060,\t-0.117669404095532460,\t-0.117619751307263920,\t-0.117570098224946450,\t-0.117520444848703720,\t-0.117470791178659880,\t-0.117421137214938620,\t-0.117371482957664960,\t\n-0.117321828406962610,\t-0.117272173562955220,\t-0.117222518425767850,\t-0.117172862995524190,\t-0.117123207272348360,\t-0.117073551256364080,\t-0.117023894947696360,\t-0.116974238346468900,\t\n-0.116924581452805850,\t-0.116874924266830910,\t-0.116825266788669090,\t-0.116775609018444100,\t-0.116725950956280090,\t-0.116676292602300770,\t-0.116626633956631160,\t-0.116576975019394960,\t\n-0.116527315790716320,\t-0.116477656270718950,\t-0.116427996459527880,\t-0.116378336357266830,\t-0.116328675964059480,\t-0.116279015280030900,\t-0.116229354305304760,\t-0.116179693040005250,\t\n-0.116130031484256060,\t-0.116080369638182250,\t-0.116030707501907500,\t-0.115981045075555980,\t-0.115931382359251410,\t-0.115881719353118820,\t-0.115832056057281930,\t-0.115782392471864910,\t\n-0.115732728596991460,\t-0.115683064432786640,\t-0.115633399979374150,\t-0.115583735236878160,\t-0.115534070205422400,\t-0.115484404885131900,\t-0.115434739276130390,\t-0.115385073378541580,\t\n-0.115335407192490540,\t-0.115285740718100980,\t-0.115236073955497060,\t-0.115186406904802520,\t-0.115136739566142400,\t-0.115087071939640430,\t-0.115037404025420800,\t-0.114987735823607200,\t\n-0.114938067334324700,\t-0.114888398557697040,\t-0.114838729493848380,\t-0.114789060142902450,\t-0.114739390504984330,\t-0.114689720580217720,\t-0.114640050368726810,\t-0.114590379870635330,\t\n-0.114540709086068340,\t-0.114491038015149580,\t-0.114441366658003220,\t-0.114391695014753020,\t-0.114342023085524010,\t-0.114292350870439940,\t-0.114242678369624570,\t-0.114193005583202920,\t\n-0.114143332511298770,\t-0.114093659154036280,\t-0.114043985511539210,\t-0.113994311583932630,\t-0.113944637371340250,\t-0.113894962873886270,\t-0.113845288091694460,\t-0.113795613024889870,\t\n-0.113745937673596240,\t-0.113696262037937770,\t-0.113646586118038200,\t-0.113596909914022600,\t-0.113547233426014750,\t-0.113497556654138800,\t-0.113447879598518510,\t-0.113398202259278980,\t\n-0.113348524636543920,\t-0.113298846730437120,\t-0.113249168541083650,\t-0.113199490068607260,\t-0.113149811313132130,\t-0.113100132274782050,\t-0.113050452953682070,\t-0.113000773349955950,\t\n-0.112951093463727910,\t-0.112901413295121700,\t-0.112851732844262380,\t-0.112802052111273740,\t-0.112752371096279960,\t-0.112702689799404810,\t-0.112653008220773380,\t-0.112603326360509450,\t\n-0.112553644218737180,\t-0.112503961795580370,\t-0.112454279091164090,\t-0.112404596105612110,\t-0.112354912839048210,\t-0.112305229291597460,\t-0.112255545463383640,\t-0.112205861354530950,\t\n-0.112156176965163180,\t-0.112106492295405400,\t-0.112056807345381380,\t-0.112007122115215350,\t-0.111957436605031090,\t-0.111907750814953660,\t-0.111858064745106860,\t-0.111808378395614890,\t\n-0.111758691766601540,\t-0.111709004858191890,\t-0.111659317670509750,\t-0.111609630203679300,\t-0.111559942457824340,\t-0.111510254433069960,\t-0.111460566129539950,\t-0.111410877547358080,\t\n-0.111361188686649460,\t-0.111311499547537860,\t-0.111261810130147520,\t-0.111212120434602210,\t-0.111162430461027040,\t-0.111112740209545800,\t-0.111063049680282700,\t-0.111013358873361540,\t\n-0.110963667788907430,\t-0.110913976427044130,\t-0.110864284787895910,\t-0.110814592871586530,\t-0.110764900678241100,\t-0.110715208207983430,\t-0.110665515460937740,\t-0.110615822437227810,\t\n-0.110566129136978770,\t-0.110516435560314420,\t-0.110466741707358970,\t-0.110417047578236230,\t-0.110367353173071290,\t-0.110317658491987990,\t-0.110267963535110110,\t-0.110218268302562730,\t\n-0.110168572794469700,\t-0.110118877010955240,\t-0.110069180952143140,\t-0.110019484618158540,\t-0.109969788009125210,\t-0.109920091125167430,\t-0.109870393966408980,\t-0.109820696532974970,\t\n-0.109770998824989220,\t-0.109721300842575990,\t-0.109671602585859050,\t-0.109621904054963550,\t-0.109572205250013290,\t-0.109522506171132520,\t-0.109472806818445040,\t-0.109423107192075990,\t\n-0.109373407292149170,\t-0.109323707118788390,\t-0.109274006672118770,\t-0.109224305952264150,\t-0.109174604959348760,\t-0.109124903693496420,\t-0.109075202154832250,\t-0.109025500343480090,\t\n-0.108975798259564170,\t-0.108926095903208310,\t-0.108876393274537660,\t-0.108826690373676020,\t-0.108776987200747670,\t-0.108727283755876400,\t-0.108677580039187360,\t-0.108627876050804370,\t\n-0.108578171790851690,\t-0.108528467259453140,\t-0.108478762456733870,\t-0.108429057382817680,\t-0.108379352037828420,\t-0.108329646421891200,\t-0.108279940535129890,\t-0.108230234377668710,\t\n-0.108180527949631510,\t-0.108130821251143430,\t-0.108081114282328310,\t-0.108031407043310380,\t-0.107981699534213510,\t-0.107931991755162830,\t-0.107882283706282150,\t-0.107832575387695780,\t\n-0.107782866799527530,\t-0.107733157941902550,\t-0.107683448814944680,\t-0.107633739418778180,\t-0.107584029753526910,\t-0.107534319819315980,\t-0.107484609616269270,\t-0.107434899144511030,\t\n-0.107385188404165100,\t-0.107335477395356630,\t-0.107285766118209490,\t-0.107236054572847480,\t-0.107186342759395770,\t-0.107136630677978210,\t-0.107086918328719070,\t-0.107037205711742190,\t\n-0.106987492827172740,\t-0.106937779675134560,\t-0.106888066255751940,\t-0.106838352569148700,\t-0.106788638615450020,\t-0.106738924394779750,\t-0.106689209907262160,\t-0.106639495153021110,\t\n-0.106589780132181760,\t-0.106540064844867970,\t-0.106490349291204020,\t-0.106440633471313730,\t-0.106390917385322320,\t-0.106341201033353610,\t-0.106291484415531460,\t-0.106241767531981040,\t\n-0.106192050382826200,\t-0.106142332968191230,\t-0.106092615288199990,\t-0.106042897342977660,\t-0.105993179132648070,\t-0.105943460657335540,\t-0.105893741917163910,\t-0.105844022912258390,\t\n-0.105794303642742800,\t-0.105744584108741440,\t-0.105694864310378180,\t-0.105645144247778210,\t-0.105595423921065380,\t-0.105545703330363990,\t-0.105495982475797900,\t-0.105446261357492290,\t\n-0.105396539975571020,\t-0.105346818330157980,\t-0.105297096421378330,\t-0.105247374249355930,\t-0.105197651814215090,\t-0.105147929116079690,\t-0.105098206155074900,\t-0.105048482931324600,\t\n-0.104998759444953100,\t-0.104949035696084240,\t-0.104899311684843250,\t-0.104849587411353970,\t-0.104799862875740740,\t-0.104750138078127400,\t-0.104700413018639150,\t-0.104650687697399870,\t\n-0.104600962114533870,\t-0.104551236270165030,\t-0.104501510164418540,\t-0.104451783797418280,\t-0.104402057169288100,\t-0.104352330280153230,\t-0.104302603130137530,\t-0.104252875719365340,\t\n-0.104203148047960490,\t-0.104153420116048240,\t-0.104103691923752420,\t-0.104053963471197390,\t-0.104004234758506980,\t-0.103954505785806450,\t-0.103904776553219640,\t-0.103855047060870900,\t\n-0.103805317308884090,\t-0.103755587297384450,\t-0.103705857026495820,\t-0.103656126496342550,\t-0.103606395707048530,\t-0.103556664658738960,\t-0.103506933351537720,\t-0.103457201785569160,\t\n-0.103407469960957150,\t-0.103357737877826900,\t-0.103308005536302320,\t-0.103258272936507270,\t-0.103208540078566990,\t-0.103158806962605350,\t-0.103109073588746700,\t-0.103059339957114910,\t\n-0.103009606067835230,\t-0.102959871921031520,\t-0.102910137516828150,\t-0.102860402855348980,\t-0.102810667936719240,\t-0.102760932761062840,\t-0.102711197328504100,\t-0.102661461639166940,\t\n-0.102611725693176560,\t-0.102561989490656850,\t-0.102512253031732180,\t-0.102462516316526450,\t-0.102412779345164850,\t-0.102363042117771310,\t-0.102313304634469720,\t-0.102263566895385310,\t\n-0.102213828900641980,\t-0.102164090650364090,\t-0.102114352144675530,\t-0.102064613383701530,\t-0.102014874367565980,\t-0.101965135096393270,\t-0.101915395570307250,\t-0.101865655789433210,\t\n-0.101815915753895020,\t-0.101766175463817040,\t-0.101716434919323180,\t-0.101666694120538680,\t-0.101616953067587430,\t-0.101567211760593810,\t-0.101517470199681710,\t-0.101467728384976390,\t\n-0.101417986316601750,\t-0.101368243994681680,\t-0.101318501419341470,\t-0.101268758590704990,\t-0.101219015508896610,\t-0.101169272174040260,\t-0.101119528586261160,\t-0.101069784745683250,\t\n-0.101020040652430880,\t-0.100970296306627960,\t-0.100920551708399740,\t-0.100870806857870140,\t-0.100821061755163520,\t-0.100771316400403810,\t-0.100721570793716260,\t-0.100671824935224770,\t\n-0.100622078825053710,\t-0.100572332463327030,\t-0.100522585850169950,\t-0.100472838985706410,\t-0.100423091870060770,\t-0.100373344503356960,\t-0.100323596885720230,\t-0.100273849017274500,\t\n-0.100224100898143720,\t-0.100174352528453120,\t-0.100124603908326640,\t-0.100074855037888650,\t-0.100025105917263090,\t-0.099975356546575203,\t-0.099925606925948915,\t-0.099875857055508624,\t\n-0.099826106935378231,\t-0.099776356565683025,\t-0.099726605946546920,\t-0.099676855078094304,\t-0.099627103960449118,\t-0.099577352593736609,\t-0.099527600978080707,\t-0.099477849113605812,\t\n-0.099428097000435853,\t-0.099378344638696089,\t-0.099328592028510465,\t-0.099278839170002922,\t-0.099229086063298721,\t-0.099179332708521806,\t-0.099129579105796561,\t-0.099079825255246917,\t\n-0.099030071156998162,\t-0.098980316811174224,\t-0.098930562217899504,\t-0.098880807377297916,\t-0.098831052289494764,\t-0.098781296954613990,\t-0.098731541372779966,\t-0.098681785544116635,\t\n-0.098632029468749299,\t-0.098582273146801888,\t-0.098532516578398788,\t-0.098482759763663955,\t-0.098433002702722663,\t-0.098383245395698871,\t-0.098333487842716519,\t-0.098283730043900883,\t\n-0.098233971999375932,\t-0.098184213709266041,\t-0.098134455173695193,\t-0.098084696392788634,\t-0.098034937366670336,\t-0.097985178095464698,\t-0.097935418579295663,\t-0.097885658818288535,\t\n-0.097835898812567254,\t-0.097786138562256222,\t-0.097736378067479410,\t-0.097686617328362091,\t-0.097636856345028236,\t-0.097587095117602232,\t-0.097537333646208049,\t-0.097487571930970976,\t\n-0.097437809972014969,\t-0.097388047769463998,\t-0.097338285323443352,\t-0.097288522634076988,\t-0.097238759701489333,\t-0.097188996525804316,\t-0.097139233107147255,\t-0.097089469445642118,\t\n-0.097039705541413307,\t-0.096989941394584792,\t-0.096940177005281861,\t-0.096890412373628484,\t-0.096840647499749077,\t-0.096790882383767610,\t-0.096741117025809384,\t-0.096691351425998356,\t\n-0.096641585584458956,\t-0.096591819501315151,\t-0.096542053176692233,\t-0.096492286610714198,\t-0.096442519803505433,\t-0.096392752755189923,\t-0.096342985465892983,\t-0.096293217935738570,\t\n-0.096243450164850683,\t-0.096193682153354609,\t-0.096143913901374320,\t-0.096094145409034257,\t-0.096044376676458376,\t-0.095994607703772009,\t-0.095944838491099110,\t-0.095895069038564124,\t\n-0.095845299346291032,\t-0.095795529414405112,\t-0.095745759243030387,\t-0.095695988832291259,\t-0.095646218182311712,\t-0.095596447293217063,\t-0.095546676165131295,\t-0.095496904798178836,\t\n-0.095447133192483685,\t-0.095397361348171131,\t-0.095347589265365171,\t-0.095297816944189803,\t-0.095248044384770331,\t-0.095198271587230751,\t-0.095148498551695493,\t-0.095098725278288540,\t\n-0.095048951767135223,\t-0.094999178018359526,\t-0.094949404032085891,\t-0.094899629808438288,\t-0.094849855347542061,\t-0.094800080649521196,\t-0.094750305714500133,\t-0.094700530542602857,\t\n-0.094650755133954698,\t-0.094600979488679640,\t-0.094551203606902154,\t-0.094501427488746209,\t-0.094451651134337136,\t-0.094401874543798933,\t-0.094352097717255598,\t-0.094302320654832475,\t\n-0.094252543356653534,\t-0.094202765822843246,\t-0.094152988053525608,\t-0.094103210048825922,\t-0.094053431808868229,\t-0.094003653333776943,\t-0.093953874623676090,\t-0.093904095678690985,\t\n-0.093854316498945656,\t-0.093804537084564515,\t-0.093754757435671604,\t-0.093704977552392238,\t-0.093655197434850429,\t-0.093605417083170619,\t-0.093555636497476835,\t-0.093505855677894406,\t\n-0.093456074624547317,\t-0.093406293337560065,\t-0.093356511817056620,\t-0.093306730063162341,\t-0.093256948076001239,\t-0.093207165855697327,\t-0.093157383402375948,\t-0.093107600716161101,\t\n-0.093057817797177256,\t-0.093008034645548424,\t-0.092958251261399949,\t-0.092908467644855844,\t-0.092858683796040564,\t-0.092808899715078136,\t-0.092759115402093903,\t-0.092709330857211877,\t\n-0.092659546080556529,\t-0.092609761072251884,\t-0.092559975832423258,\t-0.092510190361194705,\t-0.092460404658690681,\t-0.092410618725035185,\t-0.092360832560353601,\t-0.092311046164769928,\t\n-0.092261259538408205,\t-0.092211472681393764,\t-0.092161685593850642,\t-0.092111898275903312,\t-0.092062110727675797,\t-0.092012322949293443,\t-0.091962534940880289,\t-0.091912746702560791,\t\n-0.091862958234458975,\t-0.091813169536700212,\t-0.091763380609408529,\t-0.091713591452708396,\t-0.091663802066723837,\t-0.091614012451580226,\t-0.091564222607401574,\t-0.091514432534312365,\t\n-0.091464642232436638,\t-0.091414851701899738,\t-0.091365060942825718,\t-0.091315269955338604,\t-0.091265478739563755,\t-0.091215687295625208,\t-0.091165895623647436,\t-0.091116103723754491,\t\n-0.091066311596071731,\t-0.091016519240723182,\t-0.090966726657833341,\t-0.090916933847526249,\t-0.090867140809927249,\t-0.090817347545160410,\t-0.090767554053350200,\t-0.090717760334620659,\t\n-0.090667966389097160,\t-0.090618172216903742,\t-0.090568377818164902,\t-0.090518583193004667,\t-0.090468788341548423,\t-0.090418993263920208,\t-0.090369197960244063,\t-0.090319402430645360,\t\n-0.090269606675248165,\t-0.090219810694176950,\t-0.090170014487555752,\t-0.090120218055509974,\t-0.090070421398163653,\t-0.090020624515641273,\t-0.089970827408066889,\t-0.089921030075565872,\t\n-0.089871232518262290,\t-0.089821434736280625,\t-0.089771636729744933,\t-0.089721838498780584,\t-0.089672040043511647,\t-0.089622241364062605,\t-0.089572442460557511,\t-0.089522643333121765,\t\n-0.089472843981879407,\t-0.089423044406954935,\t-0.089373244608472416,\t-0.089323444586557221,\t-0.089273644341333419,\t-0.089223843872925063,\t-0.089174043181457552,\t-0.089124242267054912,\t\n-0.089074441129841683,\t-0.089024639769941905,\t-0.088974838187480962,\t-0.088925036382582923,\t-0.088875234355372298,\t-0.088825432105973143,\t-0.088775629634510855,\t-0.088725826941109490,\t\n-0.088676024025893557,\t-0.088626220888987126,\t-0.088576417530515580,\t-0.088526613950602989,\t-0.088476810149373863,\t-0.088427006126952284,\t-0.088377201883463610,\t-0.088327397419031950,\t\n-0.088277592733781343,\t-0.088227787827837204,\t-0.088177982701323585,\t-0.088128177354365012,\t-0.088078371787085566,\t-0.088028565999610620,\t-0.087978759992064254,\t-0.087928953764571008,\t\n-0.087879147317254921,\t-0.087829340650241408,\t-0.087779533763654549,\t-0.087729726657618856,\t-0.087679919332258396,\t-0.087630111787698584,\t-0.087580304024063499,\t-0.087530496041477640,\t\n-0.087480687840065116,\t-0.087430879419951299,\t-0.087381070781260298,\t-0.087331261924116166,\t-0.087281452848644331,\t-0.087231643554968846,\t-0.087181834043214265,\t-0.087132024313504669,\t\n-0.087082214365965430,\t-0.087032404200720670,\t-0.086982593817894902,\t-0.086932783217612206,\t-0.086882972399997982,\t-0.086833161365176340,\t-0.086783350113271790,\t-0.086733538644408414,\t\n-0.086683726958711654,\t-0.086633915056305563,\t-0.086584102937314680,\t-0.086534290601863101,\t-0.086484478050076252,\t-0.086434665282078188,\t-0.086384852297993475,\t-0.086335039097946181,\t\n-0.086285225682061734,\t-0.086235412050464227,\t-0.086185598203277744,\t-0.086135784140627697,\t-0.086085969862638209,\t-0.086036155369433778,\t-0.085986340661138527,\t-0.085936525737877870,\t\n-0.085886710599775887,\t-0.085836895246957146,\t-0.085787079679545700,\t-0.085737263897667018,\t-0.085687447901445168,\t-0.085637631691004704,\t-0.085587815266469705,\t-0.085537998627965614,\t\n-0.085488181775616540,\t-0.085438364709546993,\t-0.085388547429881112,\t-0.085338729936744295,\t-0.085288912230260652,\t-0.085239094310554278,\t-0.085189276177750628,\t-0.085139457831973769,\t\n-0.085089639273348283,\t-0.085039820501998251,\t-0.084990001518049099,\t-0.084940182321624952,\t-0.084890362912850362,\t-0.084840543291849396,\t-0.084790723458747538,\t-0.084740903413668855,\t\n-0.084691083156737929,\t-0.084641262688078839,\t-0.084591442007817041,\t-0.084541621116076632,\t-0.084491800012982177,\t-0.084441978698657771,\t-0.084392157173228871,\t-0.084342335436819571,\t\n-0.084292513489553994,\t-0.084242691331557581,\t-0.084192868962954429,\t-0.084143046383869116,\t-0.084093223594425739,\t-0.084043400594749740,\t-0.083993577384965240,\t-0.083943753965196807,\t\n-0.083893930335568537,\t-0.083844106496205884,\t-0.083794282447232971,\t-0.083744458188774351,\t-0.083694633720954134,\t-0.083644809043897789,\t-0.083594984157729410,\t-0.083545159062573579,\t\n-0.083495333758554405,\t-0.083445508245797342,\t-0.083395682524426501,\t-0.083345856594566017,\t-0.083296030456341333,\t-0.083246204109876570,\t-0.083196377555296297,\t-0.083146550792724636,\t\n-0.083096723822287041,\t-0.083046896644107637,\t-0.082997069258311004,\t-0.082947241665021237,\t-0.082897413864363820,\t-0.082847585856462860,\t-0.082797757641442940,\t-0.082747929219428182,\t\n-0.082698100590544055,\t-0.082648271754914668,\t-0.082598442712664588,\t-0.082548613463917980,\t-0.082498784008800272,\t-0.082448954347435599,\t-0.082399124479948543,\t-0.082349294406463242,\t\n-0.082299464127105135,\t-0.082249633641998374,\t-0.082199802951267095,\t-0.082149972055036741,\t-0.082100140953431461,\t-0.082050309646575822,\t-0.082000478134593963,\t-0.081950646417611364,\t\n-0.081900814495752150,\t-0.081850982369140887,\t-0.081801150037901726,\t-0.081751317502160151,\t-0.081701484762040269,\t-0.081651651817666676,\t-0.081601818669163509,\t-0.081551985316656236,\t\n-0.081502151760269009,\t-0.081452318000126395,\t-0.081402484036352543,\t-0.081352649869072924,\t-0.081302815498411687,\t-0.081252980924492957,\t-0.081203146147442229,\t-0.081153311167383627,\t\n-0.081103475984441759,\t-0.081053640598740748,\t-0.081003805010406077,\t-0.080953969219561897,\t-0.080904133226332803,\t-0.080854297030842917,\t-0.080804460633217737,\t-0.080754624033581413,\t\n-0.080704787232058525,\t-0.080654950228773226,\t-0.080605113023850983,\t-0.080555275617415975,\t-0.080505438009592770,\t-0.080455600200505531,\t-0.080405762190279728,\t-0.080355923979039526,\t\n-0.080306085566909061,\t-0.080256246954013830,\t-0.080206408140477983,\t-0.080156569126426117,\t-0.080106729911982380,\t-0.080056890497272271,\t-0.080007050882419925,\t-0.079957211067549966,\t\n-0.079907371052786530,\t-0.079857530838255100,\t-0.079807690424079855,\t-0.079757849810385376,\t-0.079708008997295826,\t-0.079658167984936704,\t-0.079608326773432159,\t-0.079558485362906800,\t\n-0.079508643753484792,\t-0.079458801945291604,\t-0.079408959938451415,\t-0.079359117733088833,\t-0.079309275329328008,\t-0.079259432727294438,\t-0.079209589927112287,\t-0.079159746928905719,\t\n-0.079109903732800219,\t-0.079060060338919977,\t-0.079010216747389561,\t-0.078960372958333178,\t-0.078910528971876295,\t-0.078860684788143107,\t-0.078810840407258193,\t-0.078760995829345731,\t\n-0.078711151054531234,\t-0.078661306082938851,\t-0.078611460914693204,\t-0.078561615549918459,\t-0.078511769988740127,\t-0.078461924231282371,\t-0.078412078277669786,\t-0.078362232128026579,\t\n-0.078312385782478233,\t-0.078262539241148926,\t-0.078212692504162823,\t-0.078162845571645420,\t-0.078112998443720924,\t-0.078063151120513916,\t-0.078013303602148601,\t-0.077963455888750463,\t\n-0.077913607980443680,\t-0.077863759877352876,\t-0.077813911579602241,\t-0.077764063087317259,\t-0.077714214400622136,\t-0.077664365519641454,\t-0.077614516444499432,\t-0.077564667175321553,\t\n-0.077514817712232009,\t-0.077464968055355424,\t-0.077415118204815975,\t-0.077365268160739173,\t-0.077315417923249197,\t-0.077265567492470238,\t-0.077215716868527809,\t-0.077165866051546073,\t\n-0.077116015041649680,\t-0.077066163838962809,\t-0.077016312443610971,\t-0.076966460855718344,\t-0.076916609075409578,\t-0.076866757102808839,\t-0.076816904938041650,\t-0.076767052581232190,\t\n-0.076717200032505109,\t-0.076667347291984586,\t-0.076617494359796132,\t-0.076567641236063938,\t-0.076517787920912655,\t-0.076467934414466449,\t-0.076418080716850856,\t-0.076368226828190056,\t\n-0.076318372748608254,\t-0.076268518478230948,\t-0.076218664017182358,\t-0.076168809365587106,\t-0.076118954523569385,\t-0.076069099491254732,\t-0.076019244268767314,\t-0.075969388856231793,\t\n-0.075919533253772362,\t-0.075869677461514531,\t-0.075819821479582508,\t-0.075769965308100928,\t-0.075720108947193998,\t-0.075670252396987242,\t-0.075620395657604852,\t-0.075570538729171480,\t\n-0.075520681611811302,\t-0.075470824305649872,\t-0.075420966810811382,\t-0.075371109127420469,\t-0.075321251255601351,\t-0.075271393195479541,\t-0.075221534947179244,\t-0.075171676510824681,\t\n-0.075121817886541362,\t-0.075071959074453493,\t-0.075022100074685724,\t-0.074972240887362276,\t-0.074922381512608660,\t-0.074872521950549081,\t-0.074822662201308218,\t-0.074772802265010235,\t\n-0.074722942141780699,\t-0.074673081831743815,\t-0.074623221335024220,\t-0.074573360651746134,\t-0.074523499782035083,\t-0.074473638726015284,\t-0.074423777483811390,\t-0.074373916055547606,\t\n-0.074324054441349471,\t-0.074274192641341205,\t-0.074224330655647014,\t-0.074174468484392436,\t-0.074124606127701692,\t-0.074074743585699432,\t-0.074024880858509876,\t-0.073975017946258548,\t\n-0.073925154849069682,\t-0.073875291567067930,\t-0.073825428100377510,\t-0.073775564449123948,\t-0.073725700613431491,\t-0.073675836593424776,\t-0.073625972389228023,\t-0.073576108000966783,\t\n-0.073526243428765278,\t-0.073476378672748172,\t-0.073426513733039656,\t-0.073376648609765310,\t-0.073326783303049342,\t-0.073276917813015971,\t-0.073227052139790749,\t-0.073177186283497897,\t\n-0.073127320244262092,\t-0.073077454022207528,\t-0.073027587617459769,\t-0.072977721030143050,\t-0.072927854260382022,\t-0.072877987308300932,\t-0.072828120174025290,\t-0.072778252857679374,\t\n-0.072728385359387804,\t-0.072678517679274843,\t-0.072628649817466029,\t-0.072578781774085582,\t-0.072528913549258181,\t-0.072479045143108059,\t-0.072429176555760769,\t-0.072379307787340530,\t\n-0.072329438837972021,\t-0.072279569707779476,\t-0.072229700396888460,\t-0.072179830905423181,\t-0.072129961233507886,\t-0.072080091381268127,\t-0.072030221348828138,\t-0.071980351136312598,\t\n-0.071930480743845740,\t-0.071880610171553130,\t-0.071830739419558975,\t-0.071780868487987995,\t-0.071730997376964381,\t-0.071681126086613728,\t-0.071631254617060255,\t-0.071581382968428642,\t\n-0.071531511140843135,\t-0.071481639134429287,\t-0.071431766949311346,\t-0.071381894585613989,\t-0.071332022043461452,\t-0.071282149322979299,\t-0.071232276424291779,\t-0.071182403347523127,\t\n-0.071132530092798907,\t-0.071082656660243354,\t-0.071032783049981160,\t-0.070982909262136573,\t-0.070933035296835159,\t-0.070883161154201138,\t-0.070833286834359230,\t-0.070783412337433654,\t\n-0.070733537663550006,\t-0.070683662812832504,\t-0.070633787785405841,\t-0.070583912581394265,\t-0.070534037200923355,\t-0.070484161644117346,\t-0.070434285911100944,\t-0.070384410001998368,\t\n-0.070334533916935227,\t-0.070284657656035740,\t-0.070234781219424169,\t-0.070184904607226095,\t-0.070135027819565751,\t-0.070085150856567843,\t-0.070035273718356605,\t-0.069985396405057645,\t\n-0.069935518916795170,\t-0.069885641253693911,\t-0.069835763415878105,\t-0.069785885403473330,\t-0.069736007216603849,\t-0.069686128855394353,\t-0.069636250319969076,\t-0.069586371610453626,\t\n-0.069536492726972252,\t-0.069486613669649630,\t-0.069436734438610051,\t-0.069386855033979067,\t-0.069336975455880939,\t-0.069287095704440388,\t-0.069237215779781647,\t-0.069187335682030310,\t\n-0.069137455411310625,\t-0.069087574967746868,\t-0.069037694351464618,\t-0.068987813562588138,\t-0.068937932601242105,\t-0.068888051467550809,\t-0.068838170161639831,\t-0.068788288683633431,\t\n-0.068738407033656301,\t-0.068688525211832704,\t-0.068638643218288248,\t-0.068588761053147179,\t-0.068538878716534204,\t-0.068488996208573599,\t-0.068439113529390944,\t-0.068389230679110499,\t\n-0.068339347657856986,\t-0.068289464465754651,\t-0.068239581102929103,\t-0.068189697569504604,\t-0.068139813865605414,\t-0.068089929991357129,\t-0.068040045946884037,\t-0.067990161732310817,\t\n-0.067940277347761743,\t-0.067890392793362425,\t-0.067840508069237124,\t-0.067790623175510559,\t-0.067740738112306992,\t-0.067690852879752017,\t-0.067640967477969910,\t-0.067591081907085390,\t\n-0.067541196167222720,\t-0.067491310258507506,\t-0.067441424181064011,\t-0.067391537935016954,\t-0.067341651520490611,\t-0.067291764937610590,\t-0.067241878186501153,\t-0.067191991267286574,\t\n-0.067142104180092449,\t-0.067092216925043080,\t-0.067042329502263159,\t-0.066992441911876977,\t-0.066942554154010139,\t-0.066892666228786909,\t-0.066842778136332007,\t-0.066792889876769734,\t\n-0.066743001450225659,\t-0.066693112856824097,\t-0.066643224096689740,\t-0.066593335169946893,\t-0.066543446076721136,\t-0.066493556817136770,\t-0.066443667391318517,\t-0.066393777799390652,\t\n-0.066343888041478782,\t-0.066293998117707184,\t-0.066244108028200160,\t-0.066194217773083305,\t-0.066144327352480908,\t-0.066094436766517689,\t-0.066044546015317937,\t-0.065994655099007260,\t\n-0.065944764017709948,\t-0.065894872771550733,\t-0.065844981360653879,\t-0.065795089785145033,\t-0.065745198045148445,\t-0.065695306140788862,\t-0.065645414072190586,\t-0.065595521839479212,\t\n-0.065545629442779030,\t-0.065495736882214772,\t-0.065445844157910729,\t-0.065395951269992522,\t-0.065346058218584441,\t-0.065296165003811205,\t-0.065246271625797117,\t-0.065196378084667786,\t\n-0.065146484380547529,\t-0.065096590513560607,\t-0.065046696483832642,\t-0.064996802291487951,\t-0.064946907936651241,\t-0.064897013419446828,\t-0.064847118740000320,\t-0.064797223898436021,\t\n-0.064747328894878664,\t-0.064697433729452539,\t-0.064647538402283267,\t-0.064597642913495151,\t-0.064547747263212926,\t-0.064497851451560895,\t-0.064447955478664679,\t-0.064398059344648567,\t\n-0.064348163049637322,\t-0.064298266593755204,\t-0.064248369977127878,\t-0.064198473199879619,\t-0.064148576262134743,\t-0.064098679164018860,\t-0.064048781905656285,\t-0.063998884487171753,\t\n-0.063948986908689567,\t-0.063899089170335363,\t-0.063849191272233430,\t-0.063799293214508529,\t-0.063749394997284936,\t-0.063699496620688301,\t-0.063649598084842940,\t-0.063599699389873560,\t\n-0.063549800535904505,\t-0.063499901523061397,\t-0.063450002351468526,\t-0.063400103021250639,\t-0.063350203532532068,\t-0.063300303885438419,\t-0.063250404080094025,\t-0.063200504116623160,\t\n-0.063150603995151489,\t-0.063100703715803313,\t-0.063050803278703368,\t-0.063000902683975971,\t-0.062951001931746770,\t-0.062901101022140055,\t-0.062851199955280587,\t-0.062801298731292685,\t\n-0.062751397350301968,\t-0.062701495812432770,\t-0.062651594117809822,\t-0.062601692266557443,\t-0.062551790258801282,\t-0.062501888094665656,\t-0.062451985774275298,\t-0.062402083297754533,\t\n-0.062352180665229004,\t-0.062302277876823027,\t-0.062252374932661350,\t-0.062202471832868297,\t-0.062152568577569504,\t-0.062102665166889288,\t-0.062052761600951974,\t-0.062002857879883196,\t\n-0.061952954003807272,\t-0.061903049972848963,\t-0.061853145787132580,\t-0.061803241446783785,\t-0.061753336951926883,\t-0.061703432302686635,\t-0.061653527499187365,\t-0.061603622541554721,\t\n-0.061553717429913023,\t-0.061503812164387030,\t-0.061453906745101060,\t-0.061404001172180769,\t-0.061354095445750476,\t-0.061304189565934947,\t-0.061254283532858493,\t-0.061204377346646778,\t\n-0.061154471007424119,\t-0.061104564515314840,\t-0.061054657870444597,\t-0.061004751072937700,\t-0.060954844122918933,\t-0.060904937020512612,\t-0.060855029765844386,\t-0.060805122359038587,\t\n-0.060755214800219989,\t-0.060705307089512904,\t-0.060655399227042994,\t-0.060605491212934591,\t-0.060555583047312456,\t-0.060505674730300926,\t-0.060455766262025645,\t-0.060405857642610951,\t\n-0.060355948872181618,\t-0.060306039950861964,\t-0.060256130878777653,\t-0.060206221656053015,\t-0.060156312282812381,\t-0.060106402759181408,\t-0.060056493085284435,\t-0.060006583261246221,\t\n-0.059956673287191106,\t-0.059906763163244760,\t-0.059856852889531499,\t-0.059806942466176106,\t-0.059757031893302913,\t-0.059707121171037582,\t-0.059657210299504451,\t-0.059607299278828296,\t\n-0.059557388109133448,\t-0.059507476790545570,\t-0.059457565323189007,\t-0.059407653707188528,\t-0.059357741942668470,\t-0.059307830029754496,\t-0.059257917968570953,\t-0.059208005759242170,\t\n-0.059158093401893819,\t-0.059108180896650230,\t-0.059058268243636192,\t-0.059008355442976036,\t-0.058958442494795441,\t-0.058908529399218736,\t-0.058858616156370704,\t-0.058808702766375689,\t\n-0.058758789229359371,\t-0.058708875545446071,\t-0.058658961714760580,\t-0.058609047737427249,\t-0.058559133613571734,\t-0.058509219343318389,\t-0.058459304926791994,\t-0.058409390364116895,\t\n-0.058359475655418769,\t-0.058309560800821947,\t-0.058259645800451225,\t-0.058209730654430941,\t-0.058159815362886780,\t-0.058109899925943079,\t-0.058059984343724183,\t-0.058010068616355770,\t\n-0.057960152743962184,\t-0.057910236726668222,\t-0.057860320564598215,\t-0.057810404257877861,\t-0.057760487806631490,\t-0.057710571210983899,\t-0.057660654471059440,\t-0.057610737586983783,\t\n-0.057560820558881287,\t-0.057510903386876741,\t-0.057460986071094490,\t-0.057411068611660218,\t-0.057361151008698277,\t-0.057311233262333450,\t-0.057261315372690108,\t-0.057211397339893909,\t\n-0.057161479164069225,\t-0.057111560845340401,\t-0.057061642383833114,\t-0.057011723779671723,\t-0.056961805032981018,\t-0.056911886143885364,\t-0.056861967112510431,\t-0.056812047938980585,\t\n-0.056762128623420616,\t-0.056712209165954888,\t-0.056662289566709073,\t-0.056612369825807543,\t-0.056562449943375080,\t-0.056512529919536050,\t-0.056462609754416145,\t-0.056412689448139708,\t\n-0.056362769000831550,\t-0.056312848412616030,\t-0.056262927683618826,\t-0.056213006813964309,\t-0.056163085803776831,\t-0.056113164653182078,\t-0.056063243362304414,\t-0.056013321931268643,\t\n-0.055963400360199124,\t-0.055913478649221547,\t-0.055863556798460272,\t-0.055813634808040108,\t-0.055763712678085414,\t-0.055713790408721875,\t-0.055663868000073870,\t-0.055613945452266188,\t\n-0.055564022765423202,\t-0.055514099939670596,\t-0.055464176975132749,\t-0.055414253871934452,\t-0.055364330630200083,\t-0.055314407250055327,\t-0.055264483731624556,\t-0.055214560075032573,\t\n-0.055164636280403752,\t-0.055114712347863776,\t-0.055064788277537025,\t-0.055014864069547857,\t-0.054964939724021972,\t-0.054915015241083741,\t-0.054865090620857968,\t-0.054815165863469031,\t\n-0.054765240969042617,\t-0.054715315937703103,\t-0.054665390769575294,\t-0.054615465464783568,\t-0.054565540023453624,\t-0.054515614445709834,\t-0.054465688731677002,\t-0.054415762881479500,\t\n-0.054365836895243040,\t-0.054315910773091988,\t-0.054265984515151161,\t-0.054216058121544924,\t-0.054166131592398990,\t-0.054116204927837724,\t-0.054066278127985506,\t-0.054016351192968035,\t\n-0.053966424122909681,\t-0.053916496917935271,\t-0.053866569578169175,\t-0.053816642103737100,\t-0.053766714494763418,\t-0.053716786751372946,\t-0.053666858873690070,\t-0.053616930861840488,\t\n-0.053567002715948574,\t-0.053517074436139157,\t-0.053467146022536612,\t-0.053417217475266648,\t-0.053367288794453634,\t-0.053317359980222405,\t-0.053267431032697328,\t-0.053217501952004115,\t\n-0.053167572738267152,\t-0.053117643391610812,\t-0.053067713912160808,\t-0.053017784300041511,\t-0.052967854555377766,\t-0.052917924678293933,\t-0.052867994668915730,\t-0.052818064527367550,\t\n-0.052768134253774197,\t-0.052718203848260071,\t-0.052668273310950885,\t-0.052618342641971010,\t-0.052568411841445277,\t-0.052518480909498066,\t-0.052468549846255104,\t-0.052418618651840769,\t\n-0.052368687326379885,\t-0.052318755869996833,\t-0.052268824282817344,\t-0.052218892564965785,\t-0.052168960716566563,\t-0.052119028737745376,\t-0.052069096628626611,\t-0.052019164389335112,\t\n-0.051969232019995260,\t-0.051919299520732771,\t-0.051869366891672028,\t-0.051819434132937874,\t-0.051769501244654688,\t-0.051719568226948190,\t-0.051669635079942773,\t-0.051619701803763268,\t\n-0.051569768398534069,\t-0.051519834864380887,\t-0.051469901201428123,\t-0.051419967409800607,\t-0.051370033489622720,\t-0.051320099441020200,\t-0.051270165264117429,\t-0.051220230959039249,\t\n-0.051170296525910042,\t-0.051120361964855539,\t-0.051070427276000134,\t-0.051020492459468214,\t-0.050970557515385512,\t-0.050920622443876414,\t-0.050870687245065757,\t-0.050820751919077936,\t\n-0.050770816466038683,\t-0.050720880886072392,\t-0.050670945179303893,\t-0.050621009345857587,\t-0.050571073385859207,\t-0.050521137299433139,\t-0.050471201086704227,\t-0.050421264747796873,\t\n-0.050371328282836796,\t-0.050321391691948401,\t-0.050271454975256528,\t-0.050221518132885570,\t-0.050171581164961267,\t-0.050121644071608004,\t-0.050071706852950190,\t-0.050021769509113558,\t\n-0.049971832040222493,\t-0.049921894446401854,\t-0.049871956727776029,\t-0.049822018884470763,\t-0.049772080916610451,\t-0.049722142824319929,\t-0.049672204607723612,\t-0.049622266266947226,\t\n-0.049572327802115172,\t-0.049522389213352301,\t-0.049472450500783006,\t-0.049422511664533035,\t-0.049372572704726787,\t-0.049322633621489108,\t-0.049272694414944397,\t-0.049222755085218395,\t\n-0.049172815632435501,\t-0.049122876056720131,\t-0.049072936358198010,\t-0.049022996536993553,\t-0.048973056593231604,\t-0.048923116527036563,\t-0.048873176338534184,\t-0.048823236027848854,\t\n-0.048773295595105438,\t-0.048723355040428344,\t-0.048673414363943304,\t-0.048623473565774726,\t-0.048573532646047461,\t-0.048523591604885931,\t-0.048473650442415854,\t-0.048423709158761659,\t\n-0.048373767754048190,\t-0.048323826228399855,\t-0.048273884581942400,\t-0.048223942814800233,\t-0.048174000927098205,\t-0.048124058918960738,\t-0.048074116790513564,\t-0.048024174541881098,\t\n-0.047974232173187754,\t-0.047924289684559272,\t-0.047874347076120066,\t-0.047824404347994988,\t-0.047774461500308459,\t-0.047724518533186225,\t-0.047674575446752687,\t-0.047624632241132711,\t\n-0.047574688916450718,\t-0.047524745472832440,\t-0.047474801910402299,\t-0.047424858229285154,\t-0.047374914429605418,\t-0.047324970511488845,\t-0.047275026475059843,\t-0.047225082320443271,\t\n-0.047175138047763555,\t-0.047125193657146437,\t-0.047075249148716330,\t-0.047025304522597663,\t-0.046975359778916176,\t-0.046925414917796282,\t-0.046875469939362861,\t-0.046825524843740321,\t\n-0.046775579631054408,\t-0.046725634301429543,\t-0.046675688854990599,\t-0.046625743291861990,\t-0.046575797612169463,\t-0.046525851816037439,\t-0.046475905903590790,\t-0.046425959874953932,\t\n-0.046376013730252616,\t-0.046326067469611265,\t-0.046276121093154751,\t-0.046226174601007489,\t-0.046176227993295231,\t-0.046126281270142400,\t-0.046076334431673430,\t-0.046026387478014061,\t\n-0.045976440409288728,\t-0.045926493225622290,\t-0.045876545927139183,\t-0.045826598513965144,\t-0.045776650986224618,\t-0.045726703344042462,\t-0.045676755587543104,\t-0.045626807716852298,\t\n-0.045576859732094473,\t-0.045526911633394500,\t-0.045476963420876808,\t-0.045427015094667143,\t-0.045377066654889948,\t-0.045327118101670082,\t-0.045277169435131978,\t-0.045227220655401391,\t\n-0.045177271762602757,\t-0.045127322756860502,\t-0.045077373638300375,\t-0.045027424407046823,\t-0.044977475063224706,\t-0.044927525606958459,\t-0.044877576038373841,\t-0.044827626357595282,\t\n-0.044777676564747661,\t-0.044727726659955398,\t-0.044677776643344269,\t-0.044627826515038695,\t-0.044577876275163554,\t-0.044527925923843276,\t-0.044477975461203634,\t-0.044428024887369050,\t\n-0.044378074202464403,\t-0.044328123406614128,\t-0.044278172499943987,\t-0.044228221482578413,\t-0.044178270354642286,\t-0.044128319116260042,\t-0.044078367767557448,\t-0.044028416308658926,\t\n-0.043978464739688923,\t-0.043928513060773201,\t-0.043878561272036203,\t-0.043828609373602792,\t-0.043778657365597419,\t-0.043728705248145844,\t-0.043678753021372509,\t-0.043628800685402293,\t\n-0.043578848240359624,\t-0.043528895686370285,\t-0.043478943023558703,\t-0.043428990252049771,\t-0.043379037371967910,\t-0.043329084383438903,\t-0.043279131286587183,\t-0.043229178081537638,\t\n-0.043179224768414702,\t-0.043129271347344150,\t-0.043079317818450417,\t-0.043029364181857946,\t-0.042979410437692510,\t-0.042929456586078552,\t-0.042879502627140943,\t-0.042829548561004141,\t\n-0.042779594387793912,\t-0.042729640107634692,\t-0.042679685720651374,\t-0.042629731226968400,\t-0.042579776626711537,\t-0.042529821920005234,\t-0.042479867106974378,\t-0.042429912187743411,\t\n-0.042379957162438107,\t-0.042330002031182909,\t-0.042280046794102702,\t-0.042230091451321942,\t-0.042180136002966391,\t-0.042130180449160504,\t-0.042080224790028722,\t-0.042030269025696815,\t\n-0.041980313156289244,\t-0.041930357181930888,\t-0.041880401102746191,\t-0.041830444918860940,\t-0.041780488630399577,\t-0.041730532237486989,\t-0.041680575740247632,\t-0.041630619138807272,\t\n-0.041580662433290366,\t-0.041530705623821808,\t-0.041480748710526039,\t-0.041430791693528847,\t-0.041380834572954668,\t-0.041330877348928409,\t-0.041280920021574505,\t-0.041230962591018751,\t\n-0.041181005057385589,\t-0.041131047420799920,\t-0.041081089681386178,\t-0.041031131839270166,\t-0.040981173894576318,\t-0.040931215847429092,\t-0.040881257697954275,\t-0.040831299446276309,\t\n-0.040781341092520094,\t-0.040731382636810080,\t-0.040681424079272062,\t-0.040631465420030481,\t-0.040581506659210231,\t-0.040531547796935775,\t-0.040481588833332895,\t-0.040431629768526038,\t\n-0.040381670602640106,\t-0.040331711335799561,\t-0.040281751968130178,\t-0.040231792499756412,\t-0.040181832930803164,\t-0.040131873261394897,\t-0.040081913491657385,\t-0.040031953621715091,\t\n-0.039981993651692471,\t-0.039932033581715307,\t-0.039882073411908060,\t-0.039832113142395632,\t-0.039782152773302472,\t-0.039732192304754381,\t-0.039682231736875802,\t-0.039632271069791648,\t\n-0.039582310303626377,\t-0.039532349438505768,\t-0.039482388474554285,\t-0.039432427411896828,\t-0.039382466250657867,\t-0.039332504990963177,\t-0.039282543632937234,\t-0.039232582176704923,\t\n-0.039182620622390717,\t-0.039132658970120401,\t-0.039082697220018434,\t-0.039032735372209290,\t-0.038982773426818745,\t-0.038932811383971262,\t-0.038882849243791762,\t-0.038832887006404686,\t\n-0.038782924671935837,\t-0.038732962240509677,\t-0.038682999712251115,\t-0.038633037087284612,\t-0.038583074365735957,\t-0.038533111547729613,\t-0.038483148633390495,\t-0.038433185622843057,\t\n-0.038383222516213102,\t-0.038333259313625086,\t-0.038283296015203923,\t-0.038233332621074083,\t-0.038183369131361347,\t-0.038133405546190192,\t-0.038083441865685082,\t-0.038033478089971810,\t\n-0.037983514219174841,\t-0.037933550253419088,\t-0.037883586192829014,\t-0.037833622037530414,\t-0.037783657787647765,\t-0.037733693443305967,\t-0.037683729004629497,\t-0.037633764471744144,\t\n-0.037583799844774383,\t-0.037533835123845123,\t-0.037483870309080826,\t-0.037433905400607301,\t-0.037383940398549018,\t-0.037333975303030877,\t-0.037284010114177354,\t-0.037234044832114253,\t\n-0.037184079456966036,\t-0.037134113988857617,\t-0.037084148427913480,\t-0.037034182774259405,\t-0.036984217028019878,\t-0.036934251189319367,\t-0.036884285258283668,\t-0.036834319235037258,\t\n-0.036784353119705050,\t-0.036734386912411515,\t-0.036684420613282455,\t-0.036634454222442346,\t-0.036584487740016103,\t-0.036534521166128195,\t-0.036484554500904424,\t-0.036434587744469268,\t\n-0.036384620896947648,\t-0.036334653958464025,\t-0.036284686929144216,\t-0.036234719809112692,\t-0.036184752598494359,\t-0.036134785297413707,\t-0.036084817905996540,\t-0.036034850424367319,\t\n-0.035984882852650536,\t-0.035934915190971986,\t-0.035884947439456145,\t-0.035834979598227942,\t-0.035785011667411840,\t-0.035735043647133653,\t-0.035685075537517860,\t-0.035635107338689381,\t\n-0.035585139050772686,\t-0.035535170673893585,\t-0.035485202208176560,\t-0.035435233653746533,\t-0.035385265010727973,\t-0.035335296279246690,\t-0.035285327459427175,\t-0.035235358551394341,\t\n-0.035185389555272659,\t-0.035135420471187957,\t-0.035085451299264700,\t-0.035035482039627364,\t-0.034985512692401778,\t-0.034935543257712399,\t-0.034885573735684169,\t-0.034835604126441565,\t\n-0.034785634430110388,\t-0.034735664646815122,\t-0.034685694776680702,\t-0.034635724819831598,\t-0.034585754776393626,\t-0.034535784646491263,\t-0.034485814430249444,\t-0.034435844127792645,\t\n-0.034385873739246675,\t-0.034335903264736026,\t-0.034285932704385617,\t-0.034235962058319927,\t-0.034185991326664784,\t-0.034136020509544659,\t-0.034086049607084480,\t-0.034036078619408737,\t\n-0.033986107546643239,\t-0.033936136388912477,\t-0.033886165146340928,\t-0.033836193819054408,\t-0.033786222407177401,\t-0.033736250910834840,\t-0.033686279330151211,\t-0.033636307665252323,\t\n-0.033586335916262672,\t-0.033536364083307180,\t-0.033486392166510330,\t-0.033436420165997946,\t-0.033386448081894511,\t-0.033336475914324953,\t-0.033286503663413763,\t-0.033236531329286757,\t\n-0.033186558912068426,\t-0.033136586411883696,\t-0.033086613828857053,\t-0.033036641163114326,\t-0.032986668414779992,\t-0.032936695583978541,\t-0.032886722670835804,\t-0.032836749675476250,\t\n-0.032786776598024828,\t-0.032736803438606014,\t-0.032686830197345640,\t-0.032636856874368195,\t-0.032586883469798600,\t-0.032536909983761353,\t-0.032486936416382277,\t-0.032436962767785862,\t\n-0.032386989038097037,\t-0.032337015227440299,\t-0.032287041335941465,\t-0.032237067363725030,\t-0.032187093310915925,\t-0.032137119177638639,\t-0.032087144964019002,\t-0.032037170670181504,\t\n-0.031987196296250631,\t-0.031937221842352218,\t-0.031887247308610742,\t-0.031837272695151159,\t-0.031787298002097938,\t-0.031737323229576925,\t-0.031687348377712601,\t-0.031637373446629903,\t\n-0.031587398436453334,\t-0.031537423347308705,\t-0.031487448179320525,\t-0.031437472932613716,\t-0.031387497607312791,\t-0.031337522203543557,\t-0.031287546721430526,\t-0.031237571161098619,\t\n-0.031187595522672348,\t-0.031137619806277529,\t-0.031087644012038659,\t-0.031037668140080237,\t-0.030987692190528087,\t-0.030937716163506709,\t-0.030887740059141040,\t-0.030837763877555574,\t\n-0.030787787618876145,\t-0.030737811283227248,\t-0.030687834870733819,\t-0.030637858381520361,\t-0.030587881815712703,\t-0.030537905173435336,\t-0.030487928454813209,\t-0.030437951659970819,\t\n-0.030387974789033989,\t-0.030337997842127224,\t-0.030288020819375466,\t-0.030238043720903211,\t-0.030188066546836291,\t-0.030138089297299202,\t-0.030088111972416894,\t-0.030038134572313861,\t\n-0.029988157097115935,\t-0.029938179546947614,\t-0.029888201921933404,\t-0.029838224222199131,\t-0.029788246447869298,\t-0.029738268599068848,\t-0.029688290675922283,\t-0.029638312678555434,\t\n-0.029588334607092807,\t-0.029538356461659341,\t-0.029488378242379539,\t-0.029438399949379235,\t-0.029388421582782934,\t-0.029338443142715578,\t-0.029288464629301670,\t-0.029238486042667045,\t\n-0.029188507382936203,\t-0.029138528650234096,\t-0.029088549844685219,\t-0.029038570966415416,\t-0.028988592015549181,\t-0.028938612992211024,\t-0.028888633896526780,\t-0.028838654728620950,\t\n-0.028788675488618482,\t-0.028738696176643885,\t-0.028688716792822987,\t-0.028638737337280298,\t-0.028588757810140770,\t-0.028538778211528899,\t-0.028488798541570527,\t-0.028438818800390162,\t\n-0.028388838988112744,\t-0.028338859104862790,\t-0.028288879150766128,\t-0.028238899125947271,\t-0.028188919030531168,\t-0.028138938864642318,\t-0.028088958628406571,\t-0.028038978321948422,\t\n-0.027988997945392387,\t-0.027939017498864301,\t-0.027889036982488669,\t-0.027839056396390446,\t-0.027789075740694134,\t-0.027739095015525583,\t-0.027689114221009292,\t-0.027639133357270213,\t\n-0.027589152424432859,\t-0.027539171422623070,\t-0.027489190351965349,\t-0.027439209212584654,\t-0.027389228004605491,\t-0.027339246728153702,\t-0.027289265383353797,\t-0.027239283970330725,\t\n-0.027189302489209005,\t-0.027139320940114467,\t-0.027089339323171632,\t-0.027039357638505446,\t-0.026989375886240421,\t-0.026939394066502403,\t-0.026889412179415897,\t-0.026839430225105418,\t\n-0.026789448203696806,\t-0.026739466115314577,\t-0.026689483960083679,\t-0.026639501738128631,\t-0.026589519449575268,\t-0.026539537094548111,\t-0.026489554673172107,\t-0.026439572185571775,\t\n-0.026389589631872955,\t-0.026339607012200162,\t-0.026289624326678352,\t-0.026239641575432036,\t-0.026189658758587062,\t-0.026139675876267938,\t-0.026089692928599625,\t-0.026039709915706640,\t\n-0.025989726837714819,\t-0.025939743694748683,\t-0.025889760486932745,\t-0.025839777214392848,\t-0.025789793877253508,\t-0.025739810475639682,\t-0.025689827009675890,\t-0.025639843479487973,\t\n-0.025589859885200444,\t-0.025539876226938270,\t-0.025489892504825959,\t-0.025439908718989358,\t-0.025389924869552990,\t-0.025339940956641806,\t-0.025289956980380328,\t-0.025239972940894403,\t\n-0.025189988838308544,\t-0.025140004672747712,\t-0.025090020444336423,\t-0.025040036153200530,\t-0.024990051799464546,\t-0.024940067383252988,\t-0.024890082904691704,\t-0.024840098363905216,\t\n-0.024790113761018480,\t-0.024740129096156017,\t-0.024690144369443674,\t-0.024640159581005971,\t-0.024590174730967869,\t-0.024540189819453884,\t-0.024490204846589869,\t-0.024440219812500344,\t\n-0.024390234717310270,\t-0.024340249561144164,\t-0.024290264344127878,\t-0.024240279066385931,\t-0.024190293728043284,\t-0.024140308329224463,\t-0.024090322870055313,\t-0.024040337350660357,\t\n-0.023990351771164112,\t-0.023940366131692432,\t-0.023890380432369837,\t-0.023840394673321292,\t-0.023790408854671315,\t-0.023740422976545758,\t-0.023690437039069145,\t-0.023640451042366440,\t\n-0.023590464986562164,\t-0.023540478871782171,\t-0.023490492698150980,\t-0.023440506465793553,\t-0.023390520174834419,\t-0.023340533825399429,\t-0.023290547417613106,\t-0.023240560951600410,\t\n-0.023190574427485872,\t-0.023140587845395338,\t-0.023090601205453337,\t-0.023040614507784832,\t-0.022990627752514349,\t-0.022940640939767738,\t-0.022890654069669527,\t-0.022840667142344236,\t\n-0.022790680157917718,\t-0.022740693116514502,\t-0.022690706018259555,\t-0.022640718863277398,\t-0.022590731651693886,\t-0.022540744383633547,\t-0.022490757059221343,\t-0.022440769678581808,\t\n-0.022390782241840788,\t-0.022340794749122816,\t-0.022290807200552855,\t-0.022240819596255432,\t-0.022190831936356407,\t-0.022140844220980300,\t-0.022090856450252081,\t-0.022040868624296280,\t\n-0.021990880743238749,\t-0.021940892807204019,\t-0.021890904816316611,\t-0.021840916770702382,\t-0.021790928670485866,\t-0.021740940515792024,\t-0.021690952306745389,\t-0.021640964043471819,\t\n-0.021590975726095838,\t-0.021540987354742417,\t-0.021490998929536084,\t-0.021441010450602697,\t-0.021391021918066782,\t-0.021341033332053314,\t-0.021291044692686820,\t-0.021241056000093156,\t\n-0.021191067254396855,\t-0.021141078455722884,\t-0.021091089604195774,\t-0.021041100699941383,\t-0.020991111743084240,\t-0.020941122733748874,\t-0.020891133672061146,\t-0.020841144558145581,\t\n-0.020791155392127156,\t-0.020741166174130399,\t-0.020691176904281173,\t-0.020641187582704001,\t-0.020591198209523862,\t-0.020541208784865282,\t-0.020491219308854124,\t-0.020441229781614920,\t\n-0.020391240203272640,\t-0.020341250573951818,\t-0.020291260893778310,\t-0.020241271162876651,\t-0.020191281381371814,\t-0.020141291549388329,\t-0.020091301667052062,\t-0.020041311734487539,\t\n-0.019991321751819734,\t-0.019941331719173186,\t-0.019891341636673748,\t-0.019841351504445957,\t-0.019791361322614345,\t-0.019741371091304773,\t-0.019691380810641774,\t-0.019641390480750320,\t\n-0.019591400101754950,\t-0.019541409673781519,\t-0.019491419196954567,\t-0.019441428671399068,\t-0.019391438097239550,\t-0.019341447474601883,\t-0.019291456803610597,\t-0.019241466084390670,\t\n-0.019191475317066633,\t-0.019141484501764349,\t-0.019091493638608358,\t-0.019041502727723630,\t-0.018991511769234703,\t-0.018941520763267439,\t-0.018891529709946373,\t-0.018841538609396039,\t\n-0.018791547461742303,\t-0.018741556267109698,\t-0.018691565025623205,\t-0.018641573737407352,\t-0.018591582402588010,\t-0.018541591021289713,\t-0.018491599593637435,\t-0.018441608119755717,\t\n-0.018391616599770424,\t-0.018341625033806087,\t-0.018291633421987689,\t-0.018241641764439761,\t-0.018191650061288176,\t-0.018141658312657464,\t-0.018091666518672604,\t-0.018041674679458136,\t\n-0.017991682795139925,\t-0.017941690865842509,\t-0.017891698891690420,\t-0.017841706872809528,\t-0.017791714809324368,\t-0.017741722701359919,\t-0.017691730549040725,\t-0.017641738352492643,\t\n-0.017591746111840219,\t-0.017541753827208427,\t-0.017491761498721808,\t-0.017441769126506232,\t-0.017391776710686230,\t-0.017341784251386785,\t-0.017291791748732438,\t-0.017241799202849052,\t\n-0.017191806613861171,\t-0.017141813981893773,\t-0.017091821307071396,\t-0.017041828589519911,\t-0.016991835829363852,\t-0.016941843026727764,\t-0.016891850181737507,\t-0.016841857294517627,\t\n-0.016791864365193105,\t-0.016741871393888476,\t-0.016691878380729611,\t-0.016641885325841054,\t-0.016591892229347781,\t-0.016541899091374334,\t-0.016491905912046585,\t-0.016441912691489070,\t\n-0.016391919429826773,\t-0.016341926127184235,\t-0.016291932783687322,\t-0.016241939399460580,\t-0.016191945974628988,\t-0.016141952509317090,\t-0.016091959003650753,\t-0.016041965457754517,\t\n-0.015991971871753368,\t-0.015941978245771846,\t-0.015891984579935823,\t-0.015841990874369837,\t-0.015791997129198432,\t-0.015742003344547475,\t-0.015692009520541512,\t-0.015642015657305525,\t\n-0.015592021754964054,\t-0.015542027813642972,\t-0.015492033833466822,\t-0.015442039814560587,\t-0.015392045757048809,\t-0.015342051661057361,\t-0.015292057526710782,\t-0.015242063354134061,\t\n-0.015192069143451736,\t-0.015142074894789683,\t-0.015092080608272444,\t-0.015042086284025001,\t-0.014992091922171899,\t-0.014942097522839011,\t-0.014892103086150882,\t-0.014842108612232048,\t\n-0.014792114101208387,\t-0.014742119553204442,\t-0.014692124968345198,\t-0.014642130346755197,\t-0.014592135688560314,\t-0.014542140993885093,\t-0.014492146262854519,\t-0.014442151495593135,\t\n-0.014392156692226815,\t-0.014342161852880104,\t-0.014292166977677989,\t-0.014242172066745013,\t-0.014192177120207049,\t-0.014142182138188644,\t-0.014092187120814784,\t-0.014042192068210011,\t\n-0.013992196980500202,\t-0.013942201857809901,\t-0.013892206700263652,\t-0.013842211507987328,\t-0.013792216281105477,\t-0.013742221019743085,\t-0.013692225724024697,\t-0.013642230394076187,\t\n-0.013592235030022102,\t-0.013542239631987430,\t-0.013492244200096714,\t-0.013442248734475831,\t-0.013392253235249328,\t-0.013342257702542191,\t-0.013292262136478966,\t-0.013242266537185529,\t\n-0.013192270904786427,\t-0.013142275239406646,\t-0.013092279541170733,\t-0.013042283810204567,\t-0.012992288046632690,\t-0.012942292250580094,\t-0.012892296422171321,\t-0.012842300561532254,\t\n-0.012792304668787434,\t-0.012742308744061409,\t-0.012692312787480056,\t-0.012642316799167920,\t-0.012592320779249993,\t-0.012542324727850820,\t-0.012492328645096279,\t-0.012442332531110916,\t\n-0.012392336386019722,\t-0.012342340209947242,\t-0.012292344003019358,\t-0.012242347765360612,\t-0.012192351497095997,\t-0.012142355198350059,\t-0.012092358869248677,\t-0.012042362509916400,\t\n-0.011992366120478215,\t-0.011942369701058671,\t-0.011892373251783646,\t-0.011842376772777687,\t-0.011792380264165344,\t-0.011742383726072494,\t-0.011692387158623684,\t-0.011642390561943907,\t\n-0.011592393936157710,\t-0.011542397281390971,\t-0.011492400597768239,\t-0.011442403885414506,\t-0.011392407144454319,\t-0.011342410375013557,\t-0.011292413577216770,\t-0.011242416751188949,\t\n-0.011192419897054643,\t-0.011142423014939730,\t-0.011092426104968760,\t-0.011042429167266726,\t-0.010992432201958174,\t-0.010942435209168985,\t-0.010892438189023709,\t-0.010842441141646892,\t\n-0.010792444067164416,\t-0.010742446965700833,\t-0.010692449837381129,\t-0.010642452682329858,\t-0.010592455500672900,\t-0.010542458292534803,\t-0.010492461058040558,\t-0.010442463797314719,\t\n-0.010392466510483164,\t-0.010342469197670442,\t-0.010292471859001548,\t-0.010242474494601028,\t-0.010192477104594769,\t-0.010142479689107316,\t-0.010092482248263663,\t-0.010042484782188360,\t\n-0.009992487291007291,\t-0.009942489774845003,\t-0.009892492233826490,\t-0.009842494668076303,\t-0.009792497077720322,\t-0.009742499462883100,\t-0.009692501823689184,\t-0.009642504160264459,\t\n-0.009592506472733473,\t-0.009542508761221220,\t-0.009492511025852251,\t-0.009442513266752450,\t-0.009392515484046364,\t-0.009342517677858991,\t-0.009292519848314879,\t-0.009242521995539911,\t\n-0.009192524119658639,\t-0.009142526220796057,\t-0.009092528299076714,\t-0.009042530354626495,\t-0.008992532387569949,\t-0.008942534398032073,\t-0.008892536386137417,\t-0.008842538352011865,\t\n-0.008792540295779966,\t-0.008742542217566273,\t-0.008692544117496667,\t-0.008642545995695701,\t-0.008592547852288371,\t-0.008542549687399228,\t-0.008492551501154154,\t-0.008442553293677700,\t\n-0.008392555065094865,\t-0.008342556815530196,\t-0.008292558545109581,\t-0.008242560253957568,\t-0.008192561942199155,\t-0.008142563609958894,\t-0.008092565257362667,\t-0.008042566884535028,\t\n-0.007992568491600970,\t-0.007942570078685048,\t-0.007892571645913145,\t-0.007842573193409811,\t-0.007792574721299603,\t-0.007742576229708400,\t-0.007692577718760757,\t-0.007642579188581669,\t\n-0.007592580639295690,\t-0.007542582071028704,\t-0.007492583483905262,\t-0.007442584878050361,\t-0.007392586253588554,\t-0.007342587610645725,\t-0.007292588949346428,\t-0.007242590269815658,\t\n-0.007192591572177969,\t-0.007142592856559244,\t-0.007092594123084038,\t-0.007042595371877345,\t-0.006992596603063722,\t-0.006942597816769049,\t-0.006892599013117883,\t-0.006842600192234775,\t\n-0.006792601354245611,\t-0.006742602499274943,\t-0.006692603627447769,\t-0.006642604738888642,\t-0.006592605833723447,\t-0.006542606912076737,\t-0.006492607974073510,\t-0.006442609019838320,\t\n-0.006392610049497051,\t-0.006342611063174256,\t-0.006292612060994934,\t-0.006242613043083638,\t-0.006192614009566253,\t-0.006142614960567333,\t-0.006092615896211876,\t-0.006042616816624435,\t\n-0.005992617721930896,\t-0.005942618612255812,\t-0.005892619487724183,\t-0.005842620348460561,\t-0.005792621194590831,\t-0.005742622026239549,\t-0.005692622843531267,\t-0.005642623646591872,\t\n-0.005592624435545919,\t-0.005542625210518404,\t-0.005492625971633882,\t-0.005442626719018240,\t-0.005392627452796030,\t-0.005342628173092252,\t-0.005292628880031459,\t-0.005242629573739539,\t\n-0.005192630254341044,\t-0.005142630921960973,\t-0.005092631576723882,\t-0.005042632218755655,\t-0.004992632848180848,\t-0.004942633465124459,\t-0.004892634069711042,\t-0.004842634662066484,\t\n-0.004792635242315340,\t-0.004742635810582162,\t-0.004692636366992840,\t-0.004642636911671927,\t-0.004592637444744421,\t-0.004542637966334878,\t-0.004492638476569184,\t-0.004442638975571894,\t\n-0.004392639463468006,\t-0.004342639940382076,\t-0.004292640406439990,\t-0.004242640861766302,\t-0.004192641306486013,\t-0.004142641740723677,\t-0.004092642164605180,\t-0.004042642578255077,\t\n-0.003992642981798369,\t-0.003942643375359608,\t-0.003892643759064683,\t-0.003842644133038149,\t-0.003792644497404561,\t-0.003742644852289805,\t-0.003692645197818437,\t-0.003642645534115456,\t\n-0.003592645861305418,\t-0.003542646179514209,\t-0.003492646488866384,\t-0.003442646789486943,\t-0.003392647081500441,\t-0.003342647365032765,\t-0.003292647640208471,\t-0.003242647907152558,\t\n-0.003192648165989581,\t-0.003142648416845428,\t-0.003092648659844654,\t-0.003042648895112258,\t-0.002992649122772795,\t-0.002942649342952154,\t-0.002892649555774890,\t-0.002842649761366002,\t\n-0.002792649959850045,\t-0.002742650151352907,\t-0.002692650335999144,\t-0.002642650513913312,\t-0.002592650685221296,\t-0.002542650850047655,\t-0.002492651008517386,\t-0.002442651160755045,\t\n-0.002392651306886521,\t-0.002342651447036368,\t-0.002292651581329587,\t-0.002242651709890733,\t-0.002192651832845693,\t-0.002142651950319024,\t-0.002092652062435725,\t-0.002042652169320352,\t\n-0.001992652271098793,\t-0.001942652367895603,\t-0.001892652459835782,\t-0.001842652547043885,\t-0.001792652629645802,\t-0.001742652707766087,\t-0.001692652781529296,\t-0.001642652851061317,\t\n-0.001592652916486706,\t-0.001542652977930462,\t-0.001492653035517143,\t-0.001442653089372634,\t-0.001392653139621493,\t-0.001342653186388719,\t-0.001292653229798869,\t-0.001242653269977829,\t\n-0.001192653307050155,\t-0.001142653341140849,\t-0.001092653372374465,\t-0.001042653400876892,\t-0.000992653426772685,\t-0.000942653450186845,\t-0.000892653471243927,\t-0.000842653490069820,\t\n-0.000792653506789079,\t-0.000742653521526259,\t-0.000692653534407251,\t-0.000642653545556608,\t-0.000592653555099331,\t-0.000542653563159977,\t-0.000492653569864433,\t-0.000442653575337254,\t\n-0.000392653579703442,\t-0.000342653583087552,\t-0.000292653585615472,\t-0.000242653587411758,\t-0.000192653588601410,\t-0.000142653589308984,\t-0.000092653589660368,\t-0.000042653589780118,\t\n0.000007346410206766,\t0.000057346410175728,\t0.000107346410000880,\t0.000157346409557666,\t0.000207346408721530,\t0.000257346407366583,\t0.000307346405368271,\t0.000357346402601593,\t\n0.000407346398941993,\t0.000457346394263583,\t0.000507346388441806,\t0.000557346381351664,\t0.000607346372868600,\t0.000657346362866726,\t0.000707346351221486,\t0.000757346337807880,\t\n0.000807346322501352,\t0.000857346305176015,\t0.000907346285707312,\t0.000957346263970243,\t0.001007346239840252,\t0.001057346213191452,\t0.001107346183899286,\t0.001157346151838755,\t\n0.001207346116885302,\t0.001257346078913040,\t0.001307346037797413,\t0.001357345993413865,\t0.001407345945636508,\t0.001457345894340786,\t0.001507345839401699,\t0.001557345780694692,\t\n0.001607345718093876,\t0.001657345651474696,\t0.001707345580712151,\t0.001757345505681687,\t0.001807345426257415,\t0.001857345342314780,\t0.001907345253728781,\t0.001957345160374863,\t\n0.002007345062127138,\t0.002057344958861051,\t0.002107344850451600,\t0.002157344736774233,\t0.002207344617703058,\t0.002257344493113523,\t0.002307344362881071,\t0.002357344226879813,\t\n0.002407344084985194,\t0.002457343937072216,\t0.002507343783016322,\t0.002557343622691624,\t0.002607343455973567,\t0.002657343282737152,\t0.002707343102857823,\t0.002757342916209691,\t\n0.002807342722668203,\t0.002857342522108357,\t0.002907342314405600,\t0.002957342099434042,\t0.003007341877069129,\t0.003057341647185862,\t0.003107341409659684,\t0.003157341164364709,\t\n0.003207340911176381,\t0.003257340649970145,\t0.003307340380620113,\t0.003357340103001730,\t0.003407339816989997,\t0.003457339522460358,\t0.003507339219286927,\t0.003557338907345147,\t\n0.003607338586510021,\t0.003657338256656991,\t0.003707337917660173,\t0.003757337569395009,\t0.003807337211736501,\t0.003857336844560094,\t0.003907336467739902,\t0.003957336081151368,\t\n0.004007335684669494,\t0.004057335278169725,\t0.004107334861526173,\t0.004157334434614284,\t0.004207333997309060,\t0.004257333549485944,\t0.004307333091019050,\t0.004357332621783824,\t\n0.004407332141655711,\t0.004457331650508822,\t0.004507331148218605,\t0.004557330634660059,\t0.004607330109708632,\t0.004657329573238434,\t0.004707329025124913,\t0.004757328465243070,\t\n0.004807327893468349,\t0.004857327309674865,\t0.004907326713738062,\t0.004957326105532942,\t0.005007325484934952,\t0.005057324851818203,\t0.005107324206058143,\t0.005157323547529772,\t\n0.005207322876108536,\t0.005257322191668548,\t0.005307321494085256,\t0.005357320783234103,\t0.005407320058989205,\t0.005457319321226006,\t0.005507318569819510,\t0.005557317804645160,\t\n0.005607317025577073,\t0.005657316232490692,\t0.005707315425261022,\t0.005757314603763507,\t0.005807313767872260,\t0.005857312917462730,\t0.005907312052409917,\t0.005957311172589269,\t\n0.006007310277874899,\t0.006057309368142251,\t0.006107308443266332,\t0.006157307503122585,\t0.006207306547585126,\t0.006257305576529399,\t0.006307304589830853,\t0.006357303587363602,\t\n0.006407302569003091,\t0.006457301534624325,\t0.006507300484102748,\t0.006557299417312476,\t0.006607298334128956,\t0.006657297234427190,\t0.006707296118082624,\t0.006757294984969375,\t\n0.006807293834962888,\t0.006857292667938166,\t0.006907291483770657,\t0.006957290282334475,\t0.007007289063505067,\t0.007057287827157437,\t0.007107286573167031,\t0.007157285301407965,\t\n0.007207284011755685,\t0.007257282704085639,\t0.007307281378271943,\t0.007357280034190043,\t0.007407278671714943,\t0.007457277290722091,\t0.007507275891085601,\t0.007557274472680921,\t\n0.007607273035383055,\t0.007657271579067451,\t0.007707270103608224,\t0.007757268608880821,\t0.007807267094760247,\t0.007857265561121950,\t0.007907264007840044,\t0.007957262434789978,\t\n0.008007260841846756,\t0.008057259228885828,\t0.008107257595781304,\t0.008157255942408639,\t0.008207254268642833,\t0.008257252574359336,\t0.008307250859432264,\t0.008357249123737063,\t\n0.008407247367149184,\t0.008457245589542743,\t0.008507243790793187,\t0.008557241970775523,\t0.008607240129365198,\t0.008657238266436327,\t0.008707236381864362,\t0.008757234475524305,\t\n0.008807232547291606,\t0.008857230597040383,\t0.008907228624646083,\t0.008957226629983710,\t0.009007224612928716,\t0.009057222573355216,\t0.009107220511138658,\t0.009157218426154051,\t\n0.009207216318276841,\t0.009257214187381147,\t0.009307212033342416,\t0.009357209856036100,\t0.009407207655336316,\t0.009457205431118511,\t0.009507203183257693,\t0.009557200911629312,\t\n0.009607198616107484,\t0.009657196296567659,\t0.009707193952884843,\t0.009757191584934488,\t0.009807189192590708,\t0.009857186775728957,\t0.009907184334224238,\t0.009957181867952003,\t\n0.010007179376786367,\t0.010057176860602784,\t0.010107174319276260,\t0.010157171752682244,\t0.010207169160694854,\t0.010257166543189540,\t0.010307163900041756,\t0.010357161231125615,\t\n0.010407158536316574,\t0.010457155815489635,\t0.010507153068520252,\t0.010557150295282541,\t0.010607147495651954,\t0.010657144669503498,\t0.010707141816712626,\t0.010757138937153455,\t\n0.010807136030701436,\t0.010857133097231577,\t0.010907130136619330,\t0.010957127148738812,\t0.011007124133465478,\t0.011057121090674332,\t0.011107118020240829,\t0.011157114922039087,\t\n0.011207111795944556,\t0.011257108641832247,\t0.011307105459577610,\t0.011357102249054764,\t0.011407099010139164,\t0.011457095742706260,\t0.011507092446630172,\t0.011557089121786353,\t\n0.011607085768049813,\t0.011657082385296001,\t0.011707078973399039,\t0.011757075532234380,\t0.011807072061677032,\t0.011857068561602449,\t0.011907065031884750,\t0.011957061472399387,\t\n0.012007057883021371,\t0.012057054263626155,\t0.012107050614087858,\t0.012157046934281936,\t0.012207043224083397,\t0.012257039483367692,\t0.012307035712008946,\t0.012357031909882609,\t\n0.012407028076864139,\t0.012457024212827652,\t0.012507020317648606,\t0.012557016391202009,\t0.012607012433363315,\t0.012657008444006645,\t0.012707004423007455,\t0.012757000370240754,\t\n0.012806996285581995,\t0.012856992168905302,\t0.012906988020086128,\t0.012956983838999486,\t0.013006979625520826,\t0.013056975379524275,\t0.013106971100885283,\t0.013156966789478865,\t\n0.013206962445180475,\t0.013256958067864233,\t0.013306953657405597,\t0.013356949213680020,\t0.013406944736561626,\t0.013456940225925871,\t0.013506935681647764,\t0.013556931103602763,\t\n0.013606926491664990,\t0.013656921845709900,\t0.013706917165612507,\t0.013756912451248264,\t0.013806907702491296,\t0.013856902919217059,\t0.013906898101300564,\t0.013956893248617269,\t\n0.014006888361041296,\t0.014056883438448102,\t0.014106878480712700,\t0.014156873487710546,\t0.014206868459315763,\t0.014256863395403810,\t0.014306858295850142,\t0.014356853160528885,\t\n0.014406847989315495,\t0.014456842782084983,\t0.014506837538712810,\t0.014556832259073098,\t0.014606826943041308,\t0.014656821590492449,\t0.014706816201301980,\t0.014756810775344026,\t\n0.014806805312494044,\t0.014856799812627051,\t0.014906794275618501,\t0.014956788701342523,\t0.015006783089674571,\t0.015056777440489662,\t0.015106771753663255,\t0.015156766029069473,\t\n0.015206760266583777,\t0.015256754466081180,\t0.015306748627437141,\t0.015356742750525785,\t0.015406736835222574,\t0.015456730881402963,\t0.015506724888941083,\t0.015556718857712390,\t\n0.015606712787591900,\t0.015656706678455069,\t0.015706700530176032,\t0.015756694342630242,\t0.015806688115692715,\t0.015856681849238913,\t0.015906675543142960,\t0.015956669197280320,\t\n0.016006662811526007,\t0.016056656385755482,\t0.016106649919842873,\t0.016156643413663636,\t0.016206636867092790,\t0.016256630280005797,\t0.016306623652276787,\t0.016356616983781214,\t\n0.016406610274394547,\t0.016456603523990906,\t0.016506596732445759,\t0.016556589899634117,\t0.016606583025431446,\t0.016656576109711874,\t0.016706569152350862,\t0.016756562153223426,\t\n0.016806555112205031,\t0.016856548029169801,\t0.016906540903993204,\t0.016956533736550251,\t0.017006526526716411,\t0.017056519274365810,\t0.017106511979373910,\t0.017156504641615729,\t\n0.017206497260966732,\t0.017256489837301048,\t0.017306482370494140,\t0.017356474860421470,\t0.017406467306957166,\t0.017456459709976696,\t0.017506452069355076,\t0.017556444384967770,\t\n0.017606436656688911,\t0.017656428884393959,\t0.017706421067957934,\t0.017756413207256301,\t0.017806405302163191,\t0.017856397352554065,\t0.017906389358303951,\t0.017956381319288305,\t\n0.018006373235381259,\t0.018056365106458284,\t0.018106356932394395,\t0.018156348713065058,\t0.018206340448344405,\t0.018256332138107900,\t0.018306323782230564,\t0.018356315380587865,\t\n0.018406306933053930,\t0.018456298439504231,\t0.018506289899814229,\t0.018556281313858058,\t0.018606272681511184,\t0.018656264002648627,\t0.018706255277145856,\t0.018756246504877002,\t\n0.018806237685717531,\t0.018856228819542468,\t0.018906219906227276,\t0.018956210945646090,\t0.019006201937674376,\t0.019056192882187156,\t0.019106183779059899,\t0.019156174628166739,\t\n0.019206165429383144,\t0.019256156182584132,\t0.019306146887645176,\t0.019356137544440408,\t0.019406128152845297,\t0.019456118712735310,\t0.019506109223984578,\t0.019556099686468577,\t\n0.019606090100062326,\t0.019656080464641294,\t0.019706070780079618,\t0.019756061046252764,\t0.019806051263035755,\t0.019856041430304065,\t0.019906031547931826,\t0.019956021615794507,\t\n0.020006011633767137,\t0.020056001601725180,\t0.020105991519542774,\t0.020155981387095390,\t0.020205971204258055,\t0.020255960970906234,\t0.020305950686914067,\t0.020355940352157022,\t\n0.020405929966510569,\t0.020455919529848852,\t0.020505909042047330,\t0.020555898502981042,\t0.020605887912525447,\t0.020655877270554689,\t0.020705866576944239,\t0.020755855831569123,\t\n0.020805845034304809,\t0.020855834185025440,\t0.020905823283606486,\t0.020955812329922975,\t0.021005801323850375,\t0.021055790265262827,\t0.021105779154035803,\t0.021155767990044334,\t\n0.021205756773163886,\t0.021255745503268607,\t0.021305734180233959,\t0.021355722803935422,\t0.021405711374247134,\t0.021455699891044566,\t0.021505688354202749,\t0.021555676763597157,\t\n0.021605665119101929,\t0.021655653420592537,\t0.021705641667944010,\t0.021755629861031824,\t0.021805617999730121,\t0.021855606083914372,\t0.021905594113459607,\t0.021955582088241301,\t\n0.022005570008133593,\t0.022055557873011965,\t0.022105545682751439,\t0.022155533437227495,\t0.022205521136314271,\t0.022255508779887245,\t0.022305496367821448,\t0.022355483899992354,\t\n0.022405471376274109,\t0.022455458796542180,\t0.022505446160672050,\t0.022555433468537861,\t0.022605420720015090,\t0.022655407914978765,\t0.022705395053304368,\t0.022755382134866033,\t\n0.022805369159539249,\t0.022855356127199036,\t0.022905343037720880,\t0.022955329890978923,\t0.023005316686848642,\t0.023055303425205068,\t0.023105290105923677,\t0.023155276728878620,\t\n0.023205263293945372,\t0.023255249800998964,\t0.023305236249914874,\t0.023355222640567250,\t0.023405208972831573,\t0.023455195246583314,\t0.023505181461696622,\t0.023555167618046980,\t\n0.023605153715509416,\t0.023655139753959414,\t0.023705125733271118,\t0.023755111653320005,\t0.023805097513981115,\t0.023855083315129925,\t0.023905069056640586,\t0.023955054738388569,\t\n0.024005040360248919,\t0.024055025922097111,\t0.024105011423807294,\t0.024154996865254946,\t0.024204982246315107,\t0.024254967566863260,\t0.024304952826773547,\t0.024354938025921452,\t\n0.024404923164182458,\t0.024454908241430710,\t0.024504893257541693,\t0.024554878212390441,\t0.024604863105852439,\t0.024654847937801833,\t0.024704832708114109,\t0.024754817416664302,\t\n0.024804802063327899,\t0.024854786647979042,\t0.024904771170493223,\t0.024954755630745472,\t0.025004740028611278,\t0.025054724363964789,\t0.025104708636681492,\t0.025154692846636420,\t\n0.025204676993705061,\t0.025254661077761566,\t0.025304645098681418,\t0.025354629056339659,\t0.025404612950611770,\t0.025454596781371904,\t0.025504580548495547,\t0.025554564251858179,\t\n0.025604547891333960,\t0.025654531466798372,\t0.025704514978126453,\t0.025754498425193690,\t0.025804481807874240,\t0.025854465126043585,\t0.025904448379576766,\t0.025954431568349270,\t\n0.026004414692235252,\t0.026054397751110195,\t0.026104380744849144,\t0.026154363673327588,\t0.026204346536419676,\t0.026254329334000900,\t0.026304312065946300,\t0.026354294732131363,\t\n0.026404277332430247,\t0.026454259866718434,\t0.026504242334871420,\t0.026554224736763353,\t0.026604207072269726,\t0.026654189341265580,\t0.026704171543626403,\t0.026754153679226355,\t\n0.026804135747940924,\t0.026854117749645152,\t0.026904099684214530,\t0.026954081551523217,\t0.027004063351446696,\t0.027054045083860022,\t0.027104026748638675,\t0.027154008345656819,\t\n0.027203989874789940,\t0.027253971335913087,\t0.027303952728901751,\t0.027353934053630090,\t0.027403915309973593,\t0.027453896497807748,\t0.027503877617006723,\t0.027553858667446002,\t\n0.027603839649000633,\t0.027653820561546111,\t0.027703801404956593,\t0.027753782179107570,\t0.027803762883874095,\t0.027853743519131655,\t0.027903724084754410,\t0.027953704580617859,\t\n0.028003685006597043,\t0.028053665362567461,\t0.028103645648403269,\t0.028153625863979966,\t0.028203606009172596,\t0.028253586083856655,\t0.028303566087906306,\t0.028353546021197041,\t\n0.028403525883604355,\t0.028453505675002412,\t0.028503485395266703,\t0.028553465044272280,\t0.028603444621894639,\t0.028653424128007941,\t0.028703403562487687,\t0.028753382925208921,\t\n0.028803362216047141,\t0.028853341434876514,\t0.028903320581572533,\t0.028953299656010248,\t0.029003278658065158,\t0.029053257587611431,\t0.029103236444524557,\t0.029153215228679592,\t\n0.029203193939952035,\t0.029253172578216049,\t0.029303151143347129,\t0.029353129635220333,\t0.029403108053711158,\t0.029453086398693769,\t0.029503064670043662,\t0.029553042867636336,\t\n0.029603020991345961,\t0.029652999041048032,\t0.029702977016617609,\t0.029752954917930185,\t0.029802932744859928,\t0.029852910497282344,\t0.029902888175072480,\t0.029952865778105839,\t\n0.030002843306256591,\t0.030052820759400235,\t0.030102798137411828,\t0.030152775440166868,\t0.030202752667539527,\t0.030252729819405303,\t0.030302706895639252,\t0.030352683896116880,\t\n0.030402660820712357,\t0.030452637669301178,\t0.030502614441758853,\t0.030552591137959544,\t0.030602567757778761,\t0.030652544301091555,\t0.030702520767773432,\t0.030752497157698566,\t\n0.030802473470742456,\t0.030852449706780163,\t0.030902425865687186,\t0.030952401947337706,\t0.031002377951607218,\t0.031052353878370784,\t0.031102329727503913,\t0.031152305498880772,\t\n0.031202281192376866,\t0.031252256807867258,\t0.031302232345227450,\t0.031352207804331622,\t0.031402183185055270,\t0.031452158487273903,\t0.031502133710861698,\t0.031552108855694164,\t\n0.031602083921646353,\t0.031652058908593773,\t0.031702033816410603,\t0.031752008644972352,\t0.031801983394154076,\t0.031851958063831287,\t0.031901932653878161,\t0.031951907164170200,\t\n0.032001881594582476,\t0.032051855944990486,\t0.032101830215268419,\t0.032151804405291771,\t0.032201778514935615,\t0.032251752544075453,\t0.032301726492585468,\t0.032351700360341164,\t\n0.032401674147217611,\t0.032451647853090321,\t0.032501621477833462,\t0.032551595021322551,\t0.032601568483433097,\t0.032651541864039277,\t0.032701515163016601,\t0.032751488380240140,\t\n0.032801461515585398,\t0.032851434568926564,\t0.032901407540139142,\t0.032951380429098197,\t0.033001353235679251,\t0.033051325959756475,\t0.033101298601205378,\t0.033151271159901040,\t\n0.033201243635718969,\t0.033251216028533349,\t0.033301188338219684,\t0.033351160564653044,\t0.033401132707708954,\t0.033451104767261583,\t0.033501076743186455,\t0.033551048635359078,\t\n0.033601020443653630,\t0.033650992167945634,\t0.033700963808110163,\t0.033750935364022717,\t0.033800906835557497,\t0.033850878222590003,\t0.033900849524995322,\t0.033950820742648956,\t\n0.034000791875425096,\t0.034050762923199251,\t0.034100733885846501,\t0.034150704763242362,\t0.034200675555261018,\t0.034250646261777984,\t0.034300616882668333,\t0.034350587417807589,\t\n0.034400557867069928,\t0.034450528230330874,\t0.034500498507465942,\t0.034550468698349317,\t0.034600438802856522,\t0.034650408820862635,\t0.034700378752243168,\t0.034750348596872302,\t\n0.034800318354625576,\t0.034850288025378047,\t0.034900257609005246,\t0.034950227105381357,\t0.035000196514381895,\t0.035050165835881948,\t0.035100135069757024,\t0.035150104215881321,\t\n0.035200073274130363,\t0.035250042244379214,\t0.035300011126503404,\t0.035349979920377125,\t0.035399948625875900,\t0.035449917242875238,\t0.035499885771249351,\t0.035549854210873741,\t\n0.035599822561623494,\t0.035649790823374140,\t0.035699758995999864,\t0.035749727079376188,\t0.035799695073378199,\t0.035849662977881412,\t0.035899630792760026,\t0.035949598517889557,\t\n0.035999566153145098,\t0.036049533698402164,\t0.036099501153534955,\t0.036149468518418992,\t0.036199435792929363,\t0.036249402976941583,\t0.036299370070329851,\t0.036349337072969695,\t\n0.036399303984736196,\t0.036449270805504877,\t0.036499237535149942,\t0.036549204173546915,\t0.036599170720571318,\t0.036649137176097350,\t0.036699103540000541,\t0.036749069812155970,\t\n0.036799035992439173,\t0.036849002080724343,\t0.036898968076887001,\t0.036948933980802241,\t0.036998899792345594,\t0.037048865511391249,\t0.037098831137814745,\t0.037148796671491159,\t\n0.037198762112296030,\t0.037248727460103548,\t0.037298692714789250,\t0.037348657876228215,\t0.037398622944295981,\t0.037448587918866752,\t0.037498552799816044,\t0.037548517587019402,\t\n0.037598482280351023,\t0.037648446879686437,\t0.037698411384900737,\t0.037748375795869447,\t0.037798340112466779,\t0.037848304334568261,\t0.037898268462048981,\t0.037948232494784469,\t\n0.037998196432648935,\t0.038048160275517912,\t0.038098124023266490,\t0.038148087675770194,\t0.038198051232903242,\t0.038248014694541158,\t0.038297978060559040,\t0.038347941330832420,\t\n0.038397904505235503,\t0.038447867583643824,\t0.038497830565932915,\t0.038547793451976994,\t0.038597756241651585,\t0.038647718934831786,\t0.038697681531393135,\t0.038747644031209838,\t\n0.038797606434157424,\t0.038847568740110999,\t0.038897530948946095,\t0.038947493060536922,\t0.038997455074759012,\t0.039047416991487470,\t0.039097378810597820,\t0.039147340531964288,\t\n0.039197302155462403,\t0.039247263680967259,\t0.039297225108354407,\t0.039347186437498044,\t0.039397147668273715,\t0.039447108800556512,\t0.039497069834221986,\t0.039547030769144342,\t\n0.039596991605199118,\t0.039646952342261864,\t0.039696912980206778,\t0.039746873518909417,\t0.039796833958244869,\t0.039846794298088677,\t0.039896754538315059,\t0.039946714678799553,\t\n0.039996674719417265,\t0.040046634660043733,\t0.040096594500553161,\t0.040146554240821114,\t0.040196513880722679,\t0.040246473420133398,\t0.040296432858927492,\t0.040346392196980503,\t\n0.040396351434167539,\t0.040446310570364137,\t0.040496269605444515,\t0.040546228539284218,\t0.040596187371758789,\t0.040646146102742454,\t0.040696104732110758,\t0.040746063259738792,\t\n0.040796021685502115,\t0.040845980009274939,\t0.040895938230932814,\t0.040945896350350841,\t0.040995854367404570,\t0.041045812281968228,\t0.041095770093917343,\t0.041145727803127044,\t\n0.041195685409472861,\t0.041245642912829027,\t0.041295600313071078,\t0.041345557610074135,\t0.041395514803713743,\t0.041445471893864112,\t0.041495428880400809,\t0.041545385763199376,\t\n0.041595342542134033,\t0.041645299217080337,\t0.041695255787913388,\t0.041745212254508744,\t0.041795168616740631,\t0.041845124874484593,\t0.041895081027615744,\t0.041945037076009634,\t\n0.041994993019540489,\t0.042044948858083860,\t0.042094904591514860,\t0.042144860219709042,\t0.042194815742540630,\t0.042244771159885175,\t0.042294726471617798,\t0.042344681677614043,\t\n0.042394636777748143,\t0.042444591771895655,\t0.042494546659932124,\t0.042544501441731788,\t0.042594456117170200,\t0.042644410686122465,\t0.042694365148464149,\t0.042744319504069483,\t\n0.042794273752814013,\t0.042844227894572859,\t0.042894181929221578,\t0.042944135856634397,\t0.042994089676686879,\t0.043044043389254140,\t0.043093996994211729,\t0.043143950491433887,\t\n0.043193903880796164,\t0.043243857162173688,\t0.043293810335442010,\t0.043343763400475362,\t0.043393716357149302,\t0.043443669205338958,\t0.043493621944919882,\t0.043543574575766304,\t\n0.043593527097753798,\t0.043643479510757907,\t0.043693431814652885,\t0.043743384009314275,\t0.043793336094617205,\t0.043843288070437240,\t0.043893239936648613,\t0.043943191693126889,\t\n0.043993143339747180,\t0.044043094876385060,\t0.044093046302914753,\t0.044142997619211838,\t0.044192948825151422,\t0.044242899920609084,\t0.044292850905459050,\t0.044342801779576890,\t\n0.044392752542837727,\t0.044442703195117124,\t0.044492653736289314,\t0.044542604166229877,\t0.044592554484814369,\t0.044642504691917037,\t0.044692454787413440,\t0.044742404771178704,\t\n0.044792354643088401,\t0.044842304403016765,\t0.044892254050839374,\t0.044942203586431341,\t0.044992153009668252,\t0.045042102320424326,\t0.045092051518575156,\t0.045142000603995848,\t\n0.045191949576561988,\t0.045241898436147801,\t0.045291847182628880,\t0.045341795815880333,\t0.045391744335777744,\t0.045441692742195346,\t0.045491641035008724,\t0.045541589214093438,\t\n0.045591537279323732,\t0.045641485230575186,\t0.045691433067722928,\t0.045741380790642536,\t0.045791328399208242,\t0.045841275893295626,\t0.045891223272779821,\t0.045941170537536401,\t\n0.045991117687439617,\t0.046041064722365035,\t0.046091011642187790,\t0.046140958446783460,\t0.046190905136026292,\t0.046240851709791857,\t0.046290798167955297,\t0.046340744510392183,\t\n0.046390690736976763,\t0.046440636847584621,\t0.046490582842090886,\t0.046540528720371135,\t0.046590474482299617,\t0.046640420127751915,\t0.046690365656603609,\t0.046740311068728939,\t\n0.046790256364003496,\t0.046840201542302409,\t0.046890146603501263,\t0.046940091547474312,\t0.046990036374097127,\t0.047039981083244850,\t0.047089925674793066,\t0.047139870148616023,\t\n0.047189814504589311,\t0.047239758742588053,\t0.047289702862487848,\t0.047339646864162942,\t0.047389590747488913,\t0.047439534512340918,\t0.047489478158594521,\t0.047539421686123989,\t\n0.047589365094804902,\t0.047639308384512843,\t0.047689251555122075,\t0.047739194606508176,\t0.047789137538546286,\t0.047839080351112000,\t0.047889023044079569,\t0.047938965617324580,\t\n0.047988908070722182,\t0.048038850404147952,\t0.048088792617476152,\t0.048138734710582373,\t0.048188676683341758,\t0.048238618535629892,\t0.048288560267321035,\t0.048338501878290779,\t\n0.048388443368414268,\t0.048438384737567092,\t0.048488325985623512,\t0.048538267112459121,\t0.048588208117949498,\t0.048638149001968917,\t0.048688089764392962,\t0.048738030405096777,\t\n0.048787970923955967,\t0.048837911320844786,\t0.048887851595638819,\t0.048937791748213229,\t0.048987731778443601,\t0.049037671686204203,\t0.049087611471370626,\t0.049137551133818021,\t\n0.049187490673421978,\t0.049237430090056766,\t0.049287369383597977,\t0.049337308553920767,\t0.049387247600900727,\t0.049437186524412126,\t0.049487125324330562,\t0.049537064000531178,\t\n0.049587002552889586,\t0.049636940981280041,\t0.049686879285578141,\t0.049736817465659486,\t0.049786755521398343,\t0.049836693452670312,\t0.049886631259350549,\t0.049936568941314652,\t\n0.049986506498436889,\t0.050036443930592860,\t0.050086381237657719,\t0.050136318419507067,\t0.050186255476015185,\t0.050236192407057650,\t0.050286129212509648,\t0.050336065892246755,\t\n0.050386002446143260,\t0.050435938874074757,\t0.050485875175916406,\t0.050535811351543815,\t0.050585747400831250,\t0.050635683323654312,\t0.050685619119888614,\t0.050735554789408423,\t\n0.050785490332089352,\t0.050835425747806542,\t0.050885361036435622,\t0.050935296197850852,\t0.050985231231927844,\t0.051035166138541754,\t0.051085100917568189,\t0.051135035568881437,\t\n0.051184970092357090,\t0.051234904487870318,\t0.051284838755296734,\t0.051334772894510605,\t0.051384706905387545,\t0.051434640787802716,\t0.051484574541631731,\t0.051534508166748864,\t\n0.051584441663029730,\t0.051634375030349934,\t0.051684308268583758,\t0.051734241377606807,\t0.051784174357294252,\t0.051834107207521712,\t0.051884039928163456,\t0.051933972519095095,\t\n0.051983904980191807,\t0.052033837311329205,\t0.052083769512381563,\t0.052133701583224494,\t0.052183633523733175,\t0.052233565333783212,\t0.052283497013248900,\t0.052333428562005839,\t\n0.052383359979929205,\t0.052433291266894617,\t0.052483222422776359,\t0.052533153447450041,\t0.052583084340791286,\t0.052633015102674381,\t0.052682945732974933,\t0.052732876231568117,\t\n0.052782806598329561,\t0.052832736833133540,\t0.052882666935855679,\t0.052932596906371150,\t0.052982526744555572,\t0.053032456450283240,\t0.053082386023429760,\t0.053132315463870317,\t\n0.053182244771480529,\t0.053232173946134685,\t0.053282102987708406,\t0.053332031896076867,\t0.053381960671115697,\t0.053431889312699175,\t0.053481817820702937,\t0.053531746195002151,\t\n0.053581674435472446,\t0.053631602541988108,\t0.053681530514424765,\t0.053731458352658037,\t0.053781386056562221,\t0.053831313626012942,\t0.053881241060885376,\t0.053931168361055153,\t\n0.053981095526396565,\t0.054031022556785241,\t0.054080949452096357,\t0.054130876212205546,\t0.054180802836987098,\t0.054230729326316639,\t0.054280655680069366,\t0.054330581898120893,\t\n0.054380507980345522,\t0.054430433926618879,\t0.054480359736816149,\t0.054530285410812972,\t0.054580210948483629,\t0.054630136349703762,\t0.054680061614348997,\t0.054729986742293638,\t\n0.054779911733413310,\t0.054829836587583204,\t0.054879761304678948,\t0.054929685884574850,\t0.054979610327146530,\t0.055029534632269186,\t0.055079458799818452,\t0.055129382829668623,\t\n0.055179306721695340,\t0.055229230475773793,\t0.055279154091779609,\t0.055329077569587097,\t0.055379000909071892,\t0.055428924110109190,\t0.055478847172574612,\t0.055528770096342474,\t\n0.055578692881288416,\t0.055628615527288067,\t0.055678538034215734,\t0.055728460401947059,\t0.055778382630357233,\t0.055828304719321889,\t0.055878226668715343,\t0.055928148478413230,\t\n0.055978070148290746,\t0.056027991678223532,\t0.056077913068085891,\t0.056127834317753471,\t0.056177755427101468,\t0.056227676396005517,\t0.056277597224339927,\t0.056327517911980346,\t\n0.056377438458801978,\t0.056427358864680449,\t0.056477279129490084,\t0.056527199253106515,\t0.056577119235404955,\t0.056627039076261036,\t0.056676958775549076,\t0.056726878333144722,\t\n0.056776797748923614,\t0.056826717022760063,\t0.056876636154529731,\t0.056926555144107799,\t0.056976473991369923,\t0.057026392696190427,\t0.057076311258444944,\t0.057126229678008678,\t\n0.057176147954757291,\t0.057226066088565085,\t0.057275984079307708,\t0.057325901926860379,\t0.057375819631098737,\t0.057425737191897107,\t0.057475654609131129,\t0.057525571882676013,\t\n0.057575489012407409,\t0.057625405998199646,\t0.057675322839928364,\t0.057725239537469220,\t0.057775156090696535,\t0.057825072499485958,\t0.057874988763712699,\t0.057924904883252408,\t\n0.057974820857979420,\t0.058024736687769370,\t0.058074652372497489,\t0.058124567912039411,\t0.058174483306269474,\t0.058224398555063332,\t0.058274313658296190,\t0.058324228615843708,\t\n0.058374143427580211,\t0.058424058093381352,\t0.058473972613122351,\t0.058523886986678861,\t0.058573801213925213,\t0.058623715294737061,\t0.058673629228990061,\t0.058723543016558549,\t\n0.058773456657318174,\t0.058823370151144166,\t0.058873283497912168,\t0.058923196697496523,\t0.058973109749772878,\t0.059023022654616467,\t0.059072935411902942,\t0.059122848021506635,\t\n0.059172760483303208,\t0.059222672797167877,\t0.059272584962976306,\t0.059322496980602830,\t0.059372408849923120,\t0.059422320570812377,\t0.059472232143146279,\t0.059522143566799163,\t\n0.059572054841646682,\t0.059621965967564507,\t0.059671876944426980,\t0.059721787772109756,\t0.059771698450488062,\t0.059821608979437564,\t0.059871519358832608,\t0.059921429588548847,\t\n0.059971339668461514,\t0.060021249598446270,\t0.060071159378377467,\t0.060121069008130759,\t0.060170978487581385,\t0.060220887816605000,\t0.060270796995075961,\t0.060320706022869923,\t\n0.060370614899862118,\t0.060420523625928230,\t0.060470432200942580,\t0.060520340624780851,\t0.060570248897318275,\t0.060620157018430515,\t0.060670064987991920,\t0.060719972805878167,\t\n0.060769880471964917,\t0.060819787986126528,\t0.060869695348238669,\t0.060919602558176571,\t0.060969509615815910,\t0.061019416521031038,\t0.061069323273697615,\t0.061119229873690888,\t\n0.061169136320886532,\t0.061219042615158883,\t0.061268948756383640,\t0.061318854744436012,\t0.061368760579191703,\t0.061418666260525043,\t0.061468571788311714,\t0.061518477162426963,\t\n0.061568382382746457,\t0.061618287449144556,\t0.061668192361496933,\t0.061718097119679273,\t0.061768001723565925,\t0.061817906173032580,\t0.061867810467954462,\t0.061917714608207261,\t\n0.061967618593665334,\t0.062017522424204365,\t0.062067426099699584,\t0.062117329620026682,\t0.062167232985060009,\t0.062217136194675254,\t0.062267039248747665,\t0.062316942147152915,\t\n0.062366844889765370,\t0.062416747476460713,\t0.062466649907114188,\t0.062516552181601473,\t0.062566454299796945,\t0.062616356261576273,\t0.062666258066815167,\t0.062716159715387965,\t\n0.062766061207170362,\t0.062815962542037598,\t0.062865863719865384,\t0.062915764740528068,\t0.062965665603901336,\t0.063015566309860438,\t0.063065466858281058,\t0.063115367249037588,\t\n0.063165267482005683,\t0.063215167557060623,\t0.063265067474078077,\t0.063314967232932423,\t0.063364866833499345,\t0.063414766275654108,\t0.063464665559272396,\t0.063514564684228586,\t\n0.063564463650398348,\t0.063614362457656962,\t0.063664261105880110,\t0.063714159594942157,\t0.063764057924718814,\t0.063813956095085764,\t0.063863854105917384,\t0.063913751957089357,\t\n0.063963649648476964,\t0.064013547179955888,\t0.064063444551400492,\t0.064113341762686502,\t0.064163238813689141,\t0.064213135704284136,\t0.064263032434345849,\t0.064312929003749963,\t\n0.064362825412371774,\t0.064412721660086963,\t0.064462617746769896,\t0.064512513672296296,\t0.064562409436541401,\t0.064612305039380924,\t0.064662200480689255,\t0.064712095760342078,\t\n0.064761990878215103,\t0.064811885834182709,\t0.064861780628120591,\t0.064911675259904031,\t0.064961569729408725,\t0.065011464036509051,\t0.065061358181080720,\t0.065111252162998998,\t\n0.065161145982139582,\t0.065211039638376850,\t0.065260933131586527,\t0.065310826461643878,\t0.065360719628424602,\t0.065410612631803075,\t0.065460505471655023,\t0.065510398147855711,\t\n0.065560290660280837,\t0.065610183008804793,\t0.065660075193303302,\t0.065709967213652062,\t0.065759859069725465,\t0.065809750761399208,\t0.065859642288548584,\t0.065909533651049290,\t\n0.065959424848775733,\t0.066009315881603609,\t0.066059206749408184,\t0.066109097452065196,\t0.066158987989449011,\t0.066208878361435367,\t0.066258768567899529,\t0.066308658608717208,\t\n0.066358548483762783,\t0.066408438192912006,\t0.066458327736040129,\t0.066508217113022877,\t0.066558106323734628,\t0.066607995368051121,\t0.066657884245848079,\t0.066707772956999867,\t\n0.066757661501382237,\t0.066807549878870442,\t0.066857438089340221,\t0.066907326132665965,\t0.066957214008723384,\t0.067007101717387774,\t0.067056989258534844,\t0.067106876632039014,\t\n0.067156763837775982,\t0.067206650875621041,\t0.067256537745449915,\t0.067306424447136998,\t0.067356310980558026,\t0.067406197345588281,\t0.067456083542103487,\t0.067505969569978022,\t\n0.067555855429087652,\t0.067605741119307644,\t0.067655626640513708,\t0.067705511992580278,\t0.067755397175383064,\t0.067805282188797805,\t0.067855167032698893,\t0.067905051706962066,\t\n0.067954936211462605,\t0.068004820546076247,\t0.068054704710677399,\t0.068104588705141786,\t0.068154472529344701,\t0.068204356183161882,\t0.068254239666467723,\t0.068304122979137960,\t\n0.068354006121047903,\t0.068403889092073275,\t0.068453771892088469,\t0.068503654520969237,\t0.068553536978590873,\t0.068603419264829102,\t0.068653301379558357,\t0.068703183322654335,\t\n0.068753065093992816,\t0.068802946693448178,\t0.068852828120896187,\t0.068902709376212123,\t0.068952590459271726,\t0.069002471369949400,\t0.069052352108120912,\t0.069102232673661529,\t\n0.069152113066447016,\t0.069201993286351779,\t0.069251873333251557,\t0.069301753207021644,\t0.069351632907537791,\t0.069401512434674420,\t0.069451391788307268,\t0.069501270968311643,\t\n0.069551149974563270,\t0.069601028806936582,\t0.069650907465307332,\t0.069700785949551244,\t0.069750664259542752,\t0.069800542395157608,\t0.069850420356271092,\t0.069900298142758985,\t\n0.069950175754495678,\t0.070000053191356937,\t0.070049930453218057,\t0.070099807539954803,\t0.070149684451441582,\t0.070199561187554146,\t0.070249437748167817,\t0.070299314133158333,\t\n0.070349190342400114,\t0.070399066375768926,\t0.070448942233140077,\t0.070498817914389306,\t0.070548693419391045,\t0.070598568748021062,\t0.070648443900154650,\t0.070698318875667562,\t\n0.070748193674434245,\t0.070798068296330452,\t0.070847942741231920,\t0.070897817009013084,\t0.070947691099549709,\t0.070997565012717118,\t0.071047438748391048,\t0.071097312306445934,\t\n0.071147185686757541,\t0.071197058889201192,\t0.071246931913652625,\t0.071296804759986301,\t0.071346677428077959,\t0.071396549917802921,\t0.071446422229036952,\t0.071496294361654486,\t\n0.071546166315531276,\t0.071596038090542657,\t0.071645909686564396,\t0.071695781103470899,\t0.071745652341137958,\t0.071795523399441341,\t0.071845394278255453,\t0.071895264977456089,\t\n0.071945135496918555,\t0.071995005836518633,\t0.072044875996130756,\t0.072094745975630689,\t0.072144615774893756,\t0.072194485393795721,\t0.072244354832211033,\t0.072294224090015458,\t\n0.072344093167084317,\t0.072393962063293391,\t0.072443830778517113,\t0.072493699312631263,\t0.072543567665511163,\t0.072593435837032594,\t0.072643303827069974,\t0.072693171635499113,\t\n0.072743039262195761,\t0.072792906707034366,\t0.072842773969890709,\t0.072892641050640111,\t0.072942507949158353,\t0.072992374665319881,\t0.073042241199000477,\t0.073092107550075461,\t\n0.073141973718420628,\t0.073191839703910425,\t0.073241705506420604,\t0.073291571125826530,\t0.073341436562003981,\t0.073391301814827378,\t0.073441166884172529,\t0.073491031769914769,\t\n0.073540896471929865,\t0.073590760990092277,\t0.073640625324277800,\t0.073690489474362186,\t0.073740353440219911,\t0.073790217221726753,\t0.073840080818758050,\t0.073889944231189594,\t\n0.073939807458895820,\t0.073989670501752536,\t0.074039533359635090,\t0.074089396032419236,\t0.074139258519979448,\t0.074189120822191520,\t0.074238982938930789,\t0.074288844870073048,\t\n0.074338706615492745,\t0.074388568175065686,\t0.074438429548667195,\t0.074488290736173079,\t0.074538151737457786,\t0.074588012552397123,\t0.074637873180866426,\t0.074687733622741490,\t\n0.074737593877896774,\t0.074787453946208074,\t0.074837313827551169,\t0.074887173521800562,\t0.074937033028832006,\t0.074986892348520864,\t0.075036751480742944,\t0.075086610425372693,\t\n0.075136469182285934,\t0.075186327751357987,\t0.075236186132464661,\t0.075286044325480431,\t0.075335902330281090,\t0.075385760146742004,\t0.075435617774738950,\t0.075485475214146405,\t\n0.075535332464840177,\t0.075585189526695615,\t0.075635046399588526,\t0.075684903083393387,\t0.075734759577985977,\t0.075784615883242118,\t0.075834471999036271,\t0.075884327925244244,\t\n0.075934183661741400,\t0.075984039208403534,\t0.076033894565105134,\t0.076083749731721995,\t0.076133604708129479,\t0.076183459494203395,\t0.076233314089818233,\t0.076283168494849771,\t\n0.076333022709173387,\t0.076382876732664903,\t0.076432730565198767,\t0.076482584206650814,\t0.076532437656896407,\t0.076582290915811341,\t0.076632143983270104,\t0.076681996859148505,\t\n0.076731849543322364,\t0.076781702035666144,\t0.076831554336055680,\t0.076881406444366321,\t0.076931258360473903,\t0.076981110084252888,\t0.077030961615579097,\t0.077080812954327907,\t\n0.077130664100375113,\t0.077180515053595231,\t0.077230365813864055,\t0.077280216381056963,\t0.077330066755049789,\t0.077379916935716983,\t0.077429766922934393,\t0.077479616716577396,\t\n0.077529466316521786,\t0.077579315722642067,\t0.077629164934814074,\t0.077679013952913156,\t0.077728862776815150,\t0.077778711406394543,\t0.077828559841527159,\t0.077878408082088818,\t\n0.077928256127954010,\t0.077978103978998570,\t0.078027951635097861,\t0.078077799096127720,\t0.078127646361962635,\t0.078177493432478443,\t0.078227340307550505,\t0.078277186987054673,\t\n0.078327033470865420,\t0.078376879758858584,\t0.078426725850909554,\t0.078476571746894153,\t0.078526417446686869,\t0.078576262950163553,\t0.078626108257199581,\t0.078675953367670776,\t\n0.078725798281451639,\t0.078775642998418008,\t0.078825487518445717,\t0.078875331841409269,\t0.078925175967184485,\t0.078975019895646759,\t0.079024863626671937,\t0.079074707160134511,\t\n0.079124550495910301,\t0.079174393633874726,\t0.079224236573903609,\t0.079274079315871465,\t0.079323921859654117,\t0.079373764205126957,\t0.079423606352165846,\t0.079473448300645261,\t\n0.079523290050441064,\t0.079573131601428634,\t0.079622972953483820,\t0.079672814106481138,\t0.079722655060296410,\t0.079772495814805500,\t0.079822336369882896,\t0.079872176725404462,\t\n0.079922016881245575,\t0.079971856837282099,\t0.080021696593388522,\t0.080071536149440722,\t0.080121375505314077,\t0.080171214660884421,\t0.080221053616026300,\t0.080270892370615549,\t\n0.080320730924527559,\t0.080370569277638179,\t0.080420407429821941,\t0.080470245380954694,\t0.080520083130911815,\t0.080569920679569182,\t0.080619758026801311,\t0.080669595172484024,\t\n0.080719432116493212,\t0.080769268858703364,\t0.080819105398990357,\t0.080868941737229569,\t0.080918777873296877,\t0.080968613807066811,\t0.081018449538415194,\t0.081068285067217458,\t\n0.081118120393349452,\t0.081167955516685708,\t0.081217790437102061,\t0.081267625154473944,\t0.081317459668677219,\t0.081367293979586391,\t0.081417128087077323,\t0.081466961991025447,\t\n0.081516795691306598,\t0.081566629187795323,\t0.081616462480367483,\t0.081666295568898470,\t0.081716128453264175,\t0.081765961133339116,\t0.081815793608999141,\t0.081865625880120127,\t\n0.081915457946576620,\t0.081965289808244454,\t0.082015121464999077,\t0.082064952916716324,\t0.082114784163270754,\t0.082164615204538216,\t0.082214446040394157,\t0.082264276670714412,\t\n0.082314107095373540,\t0.082363937314247390,\t0.082413767327211410,\t0.082463597134141448,\t0.082513426734912049,\t0.082563256129399076,\t0.082613085317477977,\t0.082662914299024601,\t\n0.082712743073913492,\t0.082762571642020527,\t0.082812400003221584,\t0.082862228157391193,\t0.082912056104405232,\t0.082961883844139134,\t0.083011711376468761,\t0.083061538701268672,\t\n0.083111365818414731,\t0.083161192727782385,\t0.083211019429247496,\t0.083260845922684623,\t0.083310672207969616,\t0.083360498284977949,\t0.083410324153585472,\t0.083460149813666729,\t\n0.083509975265097625,\t0.083559800507753579,\t0.083609625541510482,\t0.083659450366242866,\t0.083709274981826634,\t0.083759099388137651,\t0.083808923585050488,\t0.083858747572441009,\t\n0.083908571350184646,\t0.083958394918157320,\t0.084008218276233559,\t0.084058041424289243,\t0.084107864362199830,\t0.084157687089841199,\t0.084207509607087908,\t0.084257331913815833,\t\n0.084307154009900437,\t0.084356975895217609,\t0.084406797569641881,\t0.084456619033049171,\t0.084506440285314899,\t0.084556261326314983,\t0.084606082155923967,\t0.084655902774017744,\t\n0.084705723180471773,\t0.084755543375161918,\t0.084805363357962779,\t0.084855183128750220,\t0.084905002687400158,\t0.084954822033787139,\t0.085004641167787068,\t0.085054460089275391,\t\n0.085104278798128014,\t0.085154097294219480,\t0.085203915577425723,\t0.085253733647622162,\t0.085303551504684716,\t0.085353369148487956,\t0.085403186578907761,\t0.085453003795819604,\t\n0.085502820799099377,\t0.085552637588621666,\t0.085602454164262348,\t0.085652270525896898,\t0.085702086673401220,\t0.085751902606649888,\t0.085801718325518792,\t0.085851533829883836,\t\n0.085901349119619608,\t0.085951164194602012,\t0.086000979054706495,\t0.086050793699808989,\t0.086100608129784040,\t0.086150422344507580,\t0.086200236343855055,\t0.086250050127702399,\t\n0.086299863695924156,\t0.086349677048396259,\t0.086399490184994182,\t0.086449303105593817,\t0.086499115810069735,\t0.086548928298297884,\t0.086598740570153709,\t0.086648552625513117,\t\n0.086698364464250707,\t0.086748176086242385,\t0.086797987491364054,\t0.086847798679490329,\t0.086897609650497101,\t0.086947420404259845,\t0.086997230940654480,\t0.087047041259555605,\t\n0.087096851360839111,\t0.087146661244380502,\t0.087196470910055682,\t0.087246280357739237,\t0.087296089587307099,\t0.087345898598634730,\t0.087395707391598049,\t0.087445515966071669,\t\n0.087495324321931495,\t0.087545132459053016,\t0.087594940377312150,\t0.087644748076583484,\t0.087694555556742937,\t0.087744362817666469,\t0.087794169859228624,\t0.087843976681305377,\t\n0.087893783283772176,\t0.087943589666504965,\t0.087993395829378332,\t0.088043201772268209,\t0.088093007495050085,\t0.088142812997599893,\t0.088192618279792218,\t0.088242423341502993,\t\n0.088292228182607721,\t0.088342032802982307,\t0.088391837202501378,\t0.088441641381040853,\t0.088491445338476221,\t0.088541249074683429,\t0.088591052589537062,\t0.088640855882913067,\t\n0.088690658954686932,\t0.088740461804734591,\t0.088790264432930657,\t0.088840066839151063,\t0.088889869023271742,\t0.088939670985167307,\t0.088989472724713692,\t0.089039274241786398,\t\n0.089089075536261358,\t0.089138876608013187,\t0.089188677456917817,\t0.089238478082850764,\t0.089288278485687961,\t0.089338078665304008,\t0.089387878621574865,\t0.089437678354376021,\t\n0.089487477863583437,\t0.089537277149071698,\t0.089587076210716779,\t0.089636875048394168,\t0.089686673661979813,\t0.089736472051348326,\t0.089786270216375655,\t0.089836068156937759,\t\n0.089885865872909240,\t0.089935663364166071,\t0.089985460630583741,\t0.090035257672038196,\t0.090085054488404065,\t0.090134851079557293,\t0.090184647445373398,\t0.090234443585728324,\t\n0.090284239500496716,\t0.090334035189554490,\t0.090383830652777178,\t0.090433625890040739,\t0.090483420901219788,\t0.090533215686190285,\t0.090583010244827747,\t0.090632804577008119,\t\n0.090682598682606044,\t0.090732392561497469,\t0.090782186213558352,\t0.090831979638663338,\t0.090881772836688371,\t0.090931565807508968,\t0.090981358551001090,\t0.091031151067039379,\t\n0.091080943355499794,\t0.091130735416257838,\t0.091180527249189500,\t0.091230318854169393,\t0.091280110231073491,\t0.091329901379777312,\t0.091379692300156815,\t0.091429482992086655,\t\n0.091479273455442781,\t0.091529063690100734,\t0.091578853695936463,\t0.091628643472824622,\t0.091678433020641159,\t0.091728222339261617,\t0.091778011428561970,\t0.091827800288416847,\t\n0.091877588918702222,\t0.091927377319294068,\t0.091977165490067042,\t0.092026953430897090,\t0.092076741141659743,\t0.092126528622231002,\t0.092176315872485495,\t0.092226102892299197,\t\n0.092275889681547638,\t0.092325676240106805,\t0.092375462567851327,\t0.092425248664657206,\t0.092475034530399958,\t0.092524820164955557,\t0.092574605568198673,\t0.092624390740005266,\t\n0.092674175680250895,\t0.092723960388811519,\t0.092773744865561808,\t0.092823529110377723,\t0.092873313123135265,\t0.092923096903709076,\t0.092972880451975159,\t0.093022663767809030,\t\n0.093072446851086690,\t0.093122229701682782,\t0.093172012319473307,\t0.093221794704333796,\t0.093271576856140237,\t0.093321358774767299,\t0.093371140460090971,\t0.093420921911986782,\t\n0.093470703130330735,\t0.093520484114997485,\t0.093570264865863020,\t0.093620045382802899,\t0.093669825665693110,\t0.093719605714408322,\t0.093769385528824509,\t0.093819165108817673,\t\n0.093868944454262485,\t0.093918723565034931,\t0.093968502441010571,\t0.094018281082065405,\t0.094068059488074077,\t0.094117837658912615,\t0.094167615594456550,\t0.094217393294581897,\t\n0.094267170759163313,\t0.094316947988076813,\t0.094366724981197928,\t0.094416501738402672,\t0.094466278259565731,\t0.094516054544563091,\t0.094565830593270311,\t0.094615606405563407,\t\n0.094665381981317034,\t0.094715157320407209,\t0.094764932422709933,\t0.094814707288099875,\t0.094864481916453067,\t0.094914256307645037,\t0.094964030461551815,\t0.095013804378048086,\t\n0.095063578057009823,\t0.095113351498312640,\t0.095163124701832497,\t0.095212897667444119,\t0.095262670395023494,\t0.095312442884446180,\t0.095362215135588208,\t0.095411987148324259,\t\n0.095461758922530338,\t0.095511530458082028,\t0.095561301754855332,\t0.095611072812724934,\t0.095660843631566850,\t0.095710614211256664,\t0.095760384551670394,\t0.095810154652682708,\t\n0.095859924514169637,\t0.095909694136007195,\t0.095959463518070082,\t0.096009232660234298,\t0.096059001562375443,\t0.096108770224369519,\t0.096158538646091238,\t0.096208306827416601,\t\n0.096258074768221208,\t0.096307842468381061,\t0.096357609927770871,\t0.096407377146266654,\t0.096457144123743982,\t0.096506910860078912,\t0.096556677355146114,\t0.096606443608821618,\t\n0.096656209620981023,\t0.096705975391500332,\t0.096755740920254268,\t0.096805506207118863,\t0.096855271251970118,\t0.096905036054682758,\t0.096954800615132813,\t0.097004564933195855,\t\n0.097054329008747942,\t0.097104092841663756,\t0.097153856431819341,\t0.097203619779090283,\t0.097253382883352613,\t0.097303145744481054,\t0.097352908362351623,\t0.097402670736839919,\t\n0.097452432867821986,\t0.097502194755172536,\t0.097551956398767584,\t0.097601717798482743,\t0.097651478954194057,\t0.097701239865776224,\t0.097751000533105301,\t0.097800760956057317,\t\n0.097850521134506985,\t0.097900281068330347,\t0.097950040757403017,\t0.097999800201601012,\t0.098049559400799083,\t0.098099318354873233,\t0.098149077063699103,\t0.098198835527152722,\t\n0.098248593745108803,\t0.098298351717443402,\t0.098348109444032134,\t0.098397866924751012,\t0.098447624159474806,\t0.098497381148079516,\t0.098547137890440784,\t0.098596894386434653,\t\n0.098646650635935834,\t0.098696406638820400,\t0.098746162394963949,\t0.098795917904242525,\t0.098845673166530867,\t0.098895428181705033,\t0.098945182949641067,\t0.098994937470213692,\t\n0.099044691743298982,\t0.099094445768772535,\t0.099144199546510423,\t0.099193953076387370,\t0.099243706358279435,\t0.099293459392062244,\t0.099343212177611828,\t0.099392964714802953,\t\n0.099442717003511663,\t0.099492469043613571,\t0.099542220834984763,\t0.099591972377499949,\t0.099641723671035201,\t0.099691474715466161,\t0.099741225510668857,\t0.099790976056518058,\t\n0.099840726352889819,\t0.099890476399660214,\t0.099940226196703966,\t0.099989975743897147,\t0.100039725041115400,\t0.100089474088234780,\t0.100139222885130020,\t0.100188971431677220,\t\n0.100238719727751990,\t0.100288467773230390,\t0.100338215567987190,\t0.100387963111898450,\t0.100437710404839800,\t0.100487457446687310,\t0.100537204237315740,\t0.100586950776601170,\t\n0.100636697064419200,\t0.100686443100645950,\t0.100736188885156130,\t0.100785934417825860,\t0.100835679698531190,\t0.100885424727146870,\t0.100935169503549000,\t0.100984914027613200,\t\n0.101034658299215550,\t0.101084402318230820,\t0.101134146084535080,\t0.101183889598003980,\t0.101233632858513600,\t0.101283375865938690,\t0.101333118620155340,\t0.101382861121039200,\t\n0.101432603368466340,\t0.101482345362311540,\t0.101532087102450870,\t0.101581828588759980,\t0.101631569821114970,\t0.101681310799390580,\t0.101731051523462930,\t0.101780791993208080,\t\n0.101830532208500820,\t0.101880272169217220,\t0.101930011875232930,\t0.101979751326424060,\t0.102029490522665380,\t0.102079229463832970,\t0.102128968149802480,\t0.102178706580450020,\t\n0.102228444755650350,\t0.102278182675279560,\t0.102327920339213310,\t0.102377657747327720,\t0.102427394899497540,\t0.102477131795598860,\t0.102526868435507360,\t0.102576604819099120,\t\n0.102626340946248940,\t0.102676076816832900,\t0.102725812430726660,\t0.102775547787806340,\t0.102825282887946720,\t0.102875017731023880,\t0.102924752316913930,\t0.102974486645491680,\t\n0.103024220716633200,\t0.103073954530214160,\t0.103123688086110680,\t0.103173421384197550,\t0.103223154424350860,\t0.103272887206446280,\t0.103322619730359930,\t0.103372351995966570,\t\n0.103422084003142360,\t0.103471815751762920,\t0.103521547241704380,\t0.103571278472841550,\t0.103621009445050510,\t0.103670740158206940,\t0.103720470612186980,\t0.103770200806865390,\t\n0.103819930742118300,\t0.103869660417821820,\t0.103919389833850750,\t0.103969118990081210,\t0.104018847886388880,\t0.104068576522649850,\t0.104118304898738950,\t0.104168033014532290,\t\n0.104217760869905540,\t0.104267488464734840,\t0.104317215798894970,\t0.104366942872262060,\t0.104416669684711790,\t0.104466396236120290,\t0.104516122526362370,\t0.104565848555314130,\t\n0.104615574322851280,\t0.104665299828849920,\t0.104715025073184880,\t0.104764750055732270,\t0.104814474776368240,\t0.104864199234967560,\t0.104913923431406400,\t0.104963647365560420,\t\n0.105013371037305780,\t0.105063094446517260,\t0.105112817593071010,\t0.105162540476842700,\t0.105212263097708490,\t0.105261985455543190,\t0.105311707550222910,\t0.105361429381623360,\t\n0.105411150949620700,\t0.105460872254089700,\t0.105510593294906530,\t0.105560314071946880,\t0.105610034585086870,\t0.105659754834201360,\t0.105709474819166440,\t0.105759194539857840,\t\n0.105808913996151690,\t0.105858633187922810,\t0.105908352115047360,\t0.105958070777401460,\t0.106007789174859950,\t0.106057507307298970,\t0.106107225174594210,\t0.106156942776621840,\t\n0.106206660113256660,\t0.106256377184374850,\t0.106306093989852080,\t0.106355810529564510,\t0.106405526803386980,\t0.106455242811195640,\t0.106504958552866190,\t0.106554674028274790,\t\n0.106604389237296250,\t0.106654104179806750,\t0.106703818855681980,\t0.106753533264798110,\t0.106803247407029960,\t0.106852961282253690,\t0.106902674890345470,\t0.106952388231180110,\t\n0.107002101304633790,\t0.107051814110582210,\t0.107101526648901530,\t0.107151238919466610,\t0.107200950922153580,\t0.107250662656838180,\t0.107300374123396550,\t0.107350085321703550,\t\n0.107399796251635340,\t0.107449506913067640,\t0.107499217305876610,\t0.107548927429937100,\t0.107598637285125270,\t0.107648346871316840,\t0.107698056188388000,\t0.107747765236213570,\t\n0.107797474014669730,\t0.107847182523632640,\t0.107896890762977150,\t0.107946598732579450,\t0.107996306432315240,\t0.108046013862060700,\t0.108095721021690700,\t0.108145427911081380,\t\n0.108195134530108500,\t0.108244840878648220,\t0.108294546956575410,\t0.108344252763766220,\t0.108393958300096390,\t0.108443663565442120,\t0.108493368559678250,\t0.108543073282680950,\t\n0.108592777734325980,\t0.108642481914489500,\t0.108692185823046360,\t0.108741889459872770,\t0.108791592824844460,\t0.108841295917837600,\t0.108890998738727070,\t0.108940701287389030,\t\n0.108990403563699680,\t0.109040105567533890,\t0.109089807298767840,\t0.109139508757277250,\t0.109189209942938350,\t0.109238910855625980,\t0.109288611495216320,\t0.109338311861585140,\t\n0.109388011954608620,\t0.109437711774161630,\t0.109487411320120370,\t0.109537110592360570,\t0.109586809590758440,\t0.109636508315188840,\t0.109686206765527970,\t0.109735904941651590,\t\n0.109785602843435890,\t0.109835300470755720,\t0.109884997823487320,\t0.109934694901506850,\t0.109984391704689220,\t0.110034088232910610,\t0.110083784486046780,\t0.110133480463973910,\t\n0.110183176166566920,\t0.110232871593701970,\t0.110282566745254860,\t0.110332261621101770,\t0.110381956221117570,\t0.110431650545178490,\t0.110481344593160280,\t0.110531038364939160,\t\n0.110580731860390000,\t0.110630425079389000,\t0.110680118021811950,\t0.110729810687535040,\t0.110779503076433170,\t0.110829195188382520,\t0.110878887023259350,\t0.110928578580938510,\t\n0.110978269861296220,\t0.111027960864208260,\t0.111077651589550840,\t0.111127342037198850,\t0.111177032207028500,\t0.111226722098915570,\t0.111276411712736280,\t0.111326101048365520,\t\n0.111375790105679500,\t0.111425478884554010,\t0.111475167384865260,\t0.111524855606488160,\t0.111574543549298910,\t0.111624231213173300,\t0.111673918597987570,\t0.111723605703616590,\t\n0.111773292529936600,\t0.111822979076823810,\t0.111872665344153150,\t0.111922351331800810,\t0.111972037039642610,\t0.112021722467554740,\t0.112071407615412120,\t0.112121092483090990,\t\n0.112170777070467130,\t0.112220461377416770,\t0.112270145403814820,\t0.112319829149537490,\t0.112369512614460600,\t0.112419195798460370,\t0.112468878701411700,\t0.112518561323190840,\t\n0.112568243663673570,\t0.112617925722736140,\t0.112667607500253450,\t0.112717288996101740,\t0.112766970210156820,\t0.112816651142294900,\t0.112866331792390930,\t0.112916012160321110,\t\n0.112965692245961720,\t0.113015372049187640,\t0.113065051569875130,\t0.113114730807900010,\t0.113164409763138490,\t0.113214088435465500,\t0.113263766824757310,\t0.113313444930889680,\t\n0.113363122753738890,\t0.113412800293179850,\t0.113462477549088810,\t0.113512154521341570,\t0.113561831209814390,\t0.113611507614382200,\t0.113661183734921230,\t0.113710859571307300,\t\n0.113760535123416680,\t0.113810210391124250,\t0.113859885374306320,\t0.113909560072839100,\t0.113959234486597550,\t0.114008908615457910,\t0.114058582459296010,\t0.114108256017988070,\t\n0.114157929291409070,\t0.114207602279435240,\t0.114257274981942410,\t0.114306947398806830,\t0.114356619529903430,\t0.114406291375108490,\t0.114455962934297830,\t0.114505634207347690,\t\n0.114555305194133030,\t0.114604975894530100,\t0.114654646308414740,\t0.114704316435663200,\t0.114753986276150440,\t0.114803655829752700,\t0.114853325096346270,\t0.114902994075806080,\t\n0.114952662768008400,\t0.115002331172829070,\t0.115051999290144360,\t0.115101667119829190,\t0.115151334661759880,\t0.115201001915812220,\t0.115250668881862490,\t0.115300335559785650,\t\n0.115350001949457980,\t0.115399668050755300,\t0.115449333863553880,\t0.115498999387728700,\t0.115548664623156020,\t0.115598329569711670,\t0.115647994227271940,\t0.115697658595711790,\t\n0.115747322674907490,\t0.115796986464734880,\t0.115846649965070240,\t0.115896313175788550,\t0.115945976096766060,\t0.115995638727879090,\t0.116045301069002570,\t0.116094963120012790,\t\n0.116144624880785610,\t0.116194286351197320,\t0.116243947531122850,\t0.116293608420438520,\t0.116343269019020190,\t0.116392929326744110,\t0.116442589343485270,\t0.116492249069119950,\t\n0.116541908503524010,\t0.116591567646573750,\t0.116641226498144110,\t0.116690885058111410,\t0.116740543326351500,\t0.116790201302740690,\t0.116839858987153920,\t0.116889516379467500,\t\n0.116939173479557730,\t0.116988830287299590,\t0.117038486802569370,\t0.117088143025242940,\t0.117137798955196590,\t0.117187454592305300,\t0.117237109936445370,\t0.117286764987492670,\t\n0.117336419745323510,\t0.117386074209812840,\t0.117435728380837000,\t0.117485382258271830,\t0.117535035841993650,\t0.117584689131877430,\t0.117634342127799500,\t0.117683994829635710,\t\n0.117733647237262370,\t0.117783299350554480,\t0.117832951169388330,\t0.117882602693640260,\t0.117932253923185220,\t0.117981904857899560,\t0.118031555497659130,\t0.118081205842340260,\t\n0.118130855891817930,\t0.118180505645968460,\t0.118230155104667740,\t0.118279804267792050,\t0.118329453135216420,\t0.118379101706817160,\t0.118428749982470150,\t0.118478397962051690,\t\n0.118528045645436800,\t0.118577693032501800,\t0.118627340123122570,\t0.118676986917175420,\t0.118726633414535380,\t0.118776279615078740,\t0.118825925518681850,\t0.118875571125219700,\t\n0.118925216434568620,\t0.118974861446604500,\t0.119024506161203680,\t0.119074150578241140,\t0.119123794697593220,\t0.119173438519135820,\t0.119223082042745270,\t0.119272725268296580,\t\n0.119322368195666060,\t0.119372010824729630,\t0.119421653155363610,\t0.119471295187443020,\t0.119520936920844190,\t0.119570578355443020,\t0.119620219491115840,\t0.119669860327737670,\t\n0.119719500865184850,\t0.119769141103333280,\t0.119818781042059300,\t0.119868420681237920,\t0.119918060020745500,\t0.119967699060458360,\t0.120017337800251530,\t0.120066976240001360,\t\n0.120116614379583750,\t0.120166252218875040,\t0.120215889757750270,\t0.120265526996085770,\t0.120315163933757450,\t0.120364800570641670,\t0.120414436906613440,\t0.120464072941549120,\t\n0.120513708675324610,\t0.120563344107816270,\t0.120612979238899150,\t0.120662614068449550,\t0.120712248596343440,\t0.120761882822457150,\t0.120811516746665700,\t0.120861150368845450,\t\n0.120910783688872790,\t0.120960416706622710,\t0.121010049421971590,\t0.121059681834795350,\t0.121109313944970350,\t0.121158945752371610,\t0.121208577256875530,\t0.121258208458358000,\t\n0.121307839356695370,\t0.121357469951762720,\t0.121407100243436390,\t0.121456730231592310,\t0.121506359916106840,\t0.121555989296855040,\t0.121605618373713250,\t0.121655247146557440,\t\n0.121704875615263930,\t0.121754503779707800,\t0.121804131639765400,\t0.121853759195313130,\t0.121903386446226020,\t0.121953013392380430,\t0.122002640033652310,\t0.122052266369918030,\t\n0.122101892401052650,\t0.122151518126932530,\t0.122201143547433620,\t0.122250768662432300,\t0.122300393471803600,\t0.122350017975423940,\t0.122399642173169220,\t0.122449266064915840,\t\n0.122498889650538840,\t0.122548512929914630,\t0.122598135902919140,\t0.122647758569428740,\t0.122697380929318510,\t0.122747002982464830,\t0.122796624728743640,\t0.122846246168031330,\t\n0.122895867300202950,\t0.122945488125134920,\t0.122995108642703600,\t0.123044728852784070,\t0.123094348755252730,\t0.123143968349985510,\t0.123193587636858810,\t0.123243206615747700,\t\n0.123292825286528560,\t0.123342443649077370,\t0.123392061703270510,\t0.123441679448983060,\t0.123491296886091410,\t0.123540914014471510,\t0.123590530833999760,\t0.123640147344551250,\t\n0.123689763546002390,\t0.123739379438229100,\t0.123788995021107810,\t0.123838610294513580,\t0.123888225258322840,\t0.123937839912411970,\t0.123987454256656070,\t0.124037068290931520,\t\n0.124086682015114300,\t0.124136295429080820,\t0.124185908532706170,\t0.124235521325866740,\t0.124285133808438500,\t0.124334745980297880,\t0.124384357841319950,\t0.124433969391381110,\t\n0.124483580630357370,\t0.124533191558125100,\t0.124582802174559430,\t0.124632412479536740,\t0.124682022472933020,\t0.124731632154624680,\t0.124781241524486830,\t0.124830850582395870,\t\n0.124880459328228240,\t0.124930067761859000,\t0.124979675883164600,\t0.125029283692021010,\t0.125078891188304650,\t0.125128498371890630,\t0.125178105242655350,\t0.125227711800474820,\t\n0.125277318045225430,\t0.125326923976782330,\t0.125376529595021910,\t0.125426134899820160,\t0.125475739891053510,\t0.125525344568597070,\t0.125574948932327290,\t0.125624552982120140,\t\n0.125674156717852010,\t0.125723760139398070,\t0.125773363246634740,\t0.125822966039438430,\t0.125872568517684270,\t0.125922170681248670,\t0.125971772530007660,\t0.126021374063837680,\t\n0.126070975282613800,\t0.126120576186212470,\t0.126170176774509730,\t0.126219777047381960,\t0.126269377004704310,\t0.126318976646353250,\t0.126368575972204720,\t0.126418174982135200,\t\n0.126467773676019770,\t0.126517372053734950,\t0.126566970115156690,\t0.126616567860161430,\t0.126666165288624320,\t0.126715762400421790,\t0.126765359195429860,\t0.126814955673524990,\t\n0.126864551834582260,\t0.126914147678478170,\t0.126963743205089160,\t0.127013338414290330,\t0.127062933305958160,\t0.127112527879968660,\t0.127162122136198260,\t0.127211716074522140,\t\n0.127261309694816720,\t0.127310902996958020,\t0.127360495980822520,\t0.127410088646285340,\t0.127459680993222910,\t0.127509273021511300,\t0.127558864731026960,\t0.127608456121645010,\t\n0.127658047193241890,\t0.127707637945693670,\t0.127757228378876820,\t0.127806818492666420,\t0.127856408286939010,\t0.127905997761570990,\t0.127955586916437550,\t0.128005175751415150,\t\n0.128054764266379790,\t0.128104352461207970,\t0.128153940335774850,\t0.128203527889956840,\t0.128253115123630020,\t0.128302702036670880,\t0.128352288628954540,\t0.128401874900357450,\t\n0.128451460850755680,\t0.128501046480025720,\t0.128550631788042690,\t0.128600216774683060,\t0.128649801439822910,\t0.128699385783338700,\t0.128748969805105580,\t0.128798553505000050,\t\n0.128848136882898560,\t0.128897719938676270,\t0.128947302672209720,\t0.128996885083374900,\t0.129046467172048290,\t0.129096048938105080,\t0.129145630381421740,\t0.129195211501874350,\t\n0.129244792299339360,\t0.129294372773691930,\t0.129343952924808600,\t0.129393532752565380,\t0.129443112256838740,\t0.129492691437503920,\t0.129542270294437320,\t0.129591848827515090,\t\n0.129641427036613660,\t0.129691004921608230,\t0.129740582482375270,\t0.129790159718790880,\t0.129839736630731510,\t0.129889313218072370,\t0.129938889480689930,\t0.129988465418460740,\t\n0.130038041031259930,\t0.130087616318964010,\t0.130137191281449040,\t0.130186765918591550,\t0.130236340230266700,\t0.130285914216351000,\t0.130335487876720500,\t0.130385061211251760,\t\n0.130434634219819880,\t0.130484206902301450,\t0.130533779258572490,\t0.130583351288509510,\t0.130632922991987730,\t0.130682494368883630,\t0.130732065419073310,\t0.130781636142433240,\t\n0.130831206538838670,\t0.130880776608166080,\t0.130930346350291970,\t0.130979915765091550,\t0.131029484852441370,\t0.131079053612217440,\t0.131128622044296340,\t0.131178190148553250,\t\n0.131227757924864690,\t0.131277325373106710,\t0.131326892493155850,\t0.131376459284887340,\t0.131426025748177690,\t0.131475591882902950,\t0.131525157688939690,\t0.131574723166163090,\t\n0.131624288314449690,\t0.131673853133675550,\t0.131723417623717250,\t0.131772981784449930,\t0.131822545615750190,\t0.131872109117494500,\t0.131921672289558090,\t0.131971235131817520,\t\n0.132020797644148870,\t0.132070359826428650,\t0.132119921678532090,\t0.132169483200335720,\t0.132219044391715640,\t0.132268605252548410,\t0.132318165782709220,\t0.132367725982074610,\t\n0.132417285850520680,\t0.132466845387924000,\t0.132516404594159750,\t0.132565963469104490,\t0.132615522012634300,\t0.132665080224625780,\t0.132714638104954100,\t0.132764195653495810,\t\n0.132813752870127500,\t0.132863309754724350,\t0.132912866307162950,\t0.132962422527319350,\t0.133011978415070150,\t0.133061533970290580,\t0.133111089192857160,\t0.133160644082646020,\t\n0.133210198639533710,\t0.133259752863395450,\t0.133309306754107820,\t0.133358860311546920,\t0.133408413535589330,\t0.133457966426110240,\t0.133507518982986240,\t0.133557071206093450,\t\n0.133606623095308410,\t0.133656174650506360,\t0.133705725871563900,\t0.133755276758357110,\t0.133804827310762600,\t0.133854377528655530,\t0.133903927411912570,\t0.133953476960410180,\t\n0.134003026174023680,\t0.134052575052629630,\t0.134102123596104130,\t0.134151671804323750,\t0.134201219677163780,\t0.134250767214500740,\t0.134300314416210760,\t0.134349861282170470,\t\n0.134399407812255070,\t0.134448954006341160,\t0.134498499864304870,\t0.134548045386022750,\t0.134597590571370110,\t0.134647135420223470,\t0.134696679932458980,\t0.134746224107953260,\t\n0.134795767946581520,\t0.134845311448220350,\t0.134894854612746360,\t0.134944397440034780,\t0.134993939929962230,\t0.135043482082404800,\t0.135093023897239120,\t0.135142565374340440,\t\n0.135192106513585350,\t0.135241647314850000,\t0.135291187778010940,\t0.135340727902943490,\t0.135390267689524220,\t0.135439807137629290,\t0.135489346247135290,\t0.135538885017917470,\t\n0.135588423449852450,\t0.135637961542816350,\t0.135687499296685780,\t0.135737036711336050,\t0.135786573786643720,\t0.135836110522485400,\t0.135885646918736340,\t0.135935182975273180,\t\n0.135984718691972070,\t0.136034254068709590,\t0.136083789105361040,\t0.136133323801803010,\t0.136182858157911670,\t0.136232392173563640,\t0.136281925848634190,\t0.136331459182999910,\t\n0.136380992176536990,\t0.136430524829122020,\t0.136480057140630300,\t0.136529589110938460,\t0.136579120739922620,\t0.136628652027459440,\t0.136678182973424180,\t0.136727713577693450,\t\n0.136777243840143450,\t0.136826773760650780,\t0.136876303339090730,\t0.136925832575339940,\t0.136975361469274970,\t0.137024890020771200,\t0.137074418229705170,\t0.137123946095953130,\t\n0.137173473619391640,\t0.137223000799896020,\t0.137272527637342910,\t0.137322054131608470,\t0.137371580282569350,\t0.137421106090100830,\t0.137470631554079570,\t0.137520156674381690,\t\n0.137569681450883880,\t0.137619205883461440,\t0.137668729971990980,\t0.137718253716348660,\t0.137767777116411190,\t0.137817300172053820,\t0.137866822883153190,\t0.137916345249585960,\t\n0.137965867271227420,\t0.138015388947954200,\t0.138064910279642520,\t0.138114431266169010,\t0.138163951907408960,\t0.138213472203239040,\t0.138262992153535460,\t0.138312511758174830,\t\n0.138362031017032460,\t0.138411549929985030,\t0.138461068496908730,\t0.138510586717680180,\t0.138560104592174740,\t0.138609622120269030,\t0.138659139301839260,\t0.138708656136762090,\t\n0.138758172624912860,\t0.138807688766168170,\t0.138857204560404710,\t0.138906720007497790,\t0.138956235107324080,\t0.139005749859759780,\t0.139055264264681510,\t0.139104778321964690,\t\n0.139154292031485910,\t0.139203805393121380,\t0.139253318406747790,\t0.139302831072240480,\t0.139352343389476080,\t0.139401855358330830,\t0.139451366978681350,\t0.139500878250403050,\t\n0.139550389173372540,\t0.139599899747466060,\t0.139649409972560260,\t0.139698919848530500,\t0.139748429375253450,\t0.139797938552605750,\t0.139847447380462790,\t0.139896955858701180,\t\n0.139946463987197180,\t0.139995971765827480,\t0.140045479194467410,\t0.140094986272993630,\t0.140144493001282400,\t0.140193999379210370,\t0.140243505406652900,\t0.140293011083486690,\t\n0.140342516409587920,\t0.140392021384833310,\t0.140441526009098210,\t0.140491030282259290,\t0.140540534204192800,\t0.140590037774775380,\t0.140639540993882480,\t0.140689043861390690,\t\n0.140738546377176310,\t0.140788048541115980,\t0.140837550353085120,\t0.140887051812960380,\t0.140936552920618440,\t0.140986053675934670,\t0.141035554078785790,\t0.141085054129048010,\t\n0.141134553826598010,\t0.141184053171311220,\t0.141233552163064300,\t0.141283050801733480,\t0.141332549087195470,\t0.141382047019325660,\t0.141431544598000720,\t0.141481041823096950,\t\n0.141530538694490980,\t0.141580035212058250,\t0.141629531375675410,\t0.141679027185218740,\t0.141728522640564960,\t0.141778017741589430,\t0.141827512488168860,\t0.141877006880179930,\t\n0.141926500917498060,\t0.141975994599999930,\t0.142025487927561810,\t0.142074980900060430,\t0.142124473517371150,\t0.142173965779370660,\t0.142223457685935280,\t0.142272949236941700,\t\n0.142322440432265300,\t0.142371931271782800,\t0.142421421755370450,\t0.142470911882905000,\t0.142520401654261860,\t0.142569891069317670,\t0.142619380127948780,\t0.142668868830031880,\t\n0.142718357175442350,\t0.142767845164056940,\t0.142817332795752370,\t0.142866820070403990,\t0.142916306987888600,\t0.142965793548082420,\t0.143015279750862200,\t0.143064765596103340,\t\n0.143114251083682590,\t0.143163736213476170,\t0.143213220985360880,\t0.143262705399212100,\t0.143312189454906540,\t0.143361673152320510,\t0.143411156491330740,\t0.143460639471812620,\t\n0.143510122093642920,\t0.143559604356697930,\t0.143609086260854340,\t0.143658567805987620,\t0.143708048991974450,\t0.143757529818691190,\t0.143807010286014530,\t0.143856490393819900,\t\n0.143905970141984060,\t0.143955449530383720,\t0.144004928558894320,\t0.144054407227392600,\t0.144103885535754870,\t0.144153363483857850,\t0.144202841071576990,\t0.144252318298789010,\t\n0.144301795165370260,\t0.144351271671197460,\t0.144400747816146040,\t0.144450223600092740,\t0.144499699022913870,\t0.144549174084486230,\t0.144598648784685170,\t0.144648123123387510,\t\n0.144697597100469560,\t0.144747070715808030,\t0.144796543969278410,\t0.144846016860757400,\t0.144895489390121810,\t0.144944961557247040,\t0.144994433362009870,\t0.145043904804286610,\t\n0.145093375883954050,\t0.145142846600887610,\t0.145192316954964040,\t0.145241786946059690,\t0.145291256574051290,\t0.145340725838814330,\t0.145390194740225550,\t0.145439663278161270,\t\n0.145489131452498280,\t0.145538599263112020,\t0.145588066709879280,\t0.145637533792676350,\t0.145687000511380030,\t0.145736466865865780,\t0.145785932856010350,\t0.145835398481690550,\t\n0.145884863742781780,\t0.145934328639160890,\t0.145983793170704150,\t0.146033257337288360,\t0.146082721138789010,\t0.146132184575082870,\t0.146181647646046240,\t0.146231110351555920,\t\n0.146280572691487420,\t0.146330034665717450,\t0.146379496274122420,\t0.146428957516579080,\t0.146478418392962910,\t0.146527878903150690,\t0.146577339047018810,\t0.146626798824443960,\t\n0.146676258235301730,\t0.146725717279468810,\t0.146775175956822050,\t0.146824634267236910,\t0.146874092210590200,\t0.146923549786758260,\t0.146973006995617860,\t0.147022463837044510,\t\n0.147071920310915010,\t0.147121376417105710,\t0.147170832155493400,\t0.147220287525953590,\t0.147269742528363030,\t0.147319197162598140,\t0.147368651428535670,\t0.147418105326051150,\t\n0.147467558855021390,\t0.147517012015322690,\t0.147566464806831920,\t0.147615917229424550,\t0.147665369282977380,\t0.147714820967366790,\t0.147764272282469580,\t0.147813723228161280,\t\n0.147863173804318630,\t0.147912624010818510,\t0.147962073847536370,\t0.148011523314349080,\t0.148060972411132950,\t0.148110421137764850,\t0.148159869494120240,\t0.148209317480075960,\t\n0.148258765095508390,\t0.148308212340294370,\t0.148357659214309350,\t0.148407105717430180,\t0.148456551849533270,\t0.148505997610495400,\t0.148555443000192110,\t0.148604888018500190,\t\n0.148654332665296070,\t0.148703776940456560,\t0.148753220843857140,\t0.148802664375374700,\t0.148852107534886040,\t0.148901550322266650,\t0.148950992737393400,\t0.149000434780142660,\t\n0.149049876450391280,\t0.149099317748014740,\t0.149148758672889930,\t0.149198199224893220,\t0.149247639403901460,\t0.149297079209790160,\t0.149346518642436170,\t0.149395957701715880,\t\n0.149445396387506120,\t0.149494834699682420,\t0.149544272638121640,\t0.149593710202700210,\t0.149643147393294930,\t0.149692584209781320,\t0.149742020652036260,\t0.149791456719936600,\t\n0.149840892413357850,\t0.149890327732176860,\t0.149939762676270070,\t0.149989197245514290,\t0.150038631439785100,\t0.150088065258959320,\t0.150137498702913370,\t0.150186931771524150,\t\n0.150236364464667120,\t0.150285796782219210,\t0.150335228724056770,\t0.150384660290056730,\t0.150434091480094590,\t0.150483522294047210,\t0.150532952731791040,\t0.150582382793202910,\t\n0.150631812478158410,\t0.150681241786534360,\t0.150730670718207200,\t0.150780099273053830,\t0.150829527450949740,\t0.150878955251771860,\t0.150928382675397020,\t0.150977809721700770,\t\n0.151027236390560010,\t0.151076662681851160,\t0.151126088595451100,\t0.151175514131235370,\t0.151224939289080850,\t0.151274364068863960,\t0.151323788470461630,\t0.151373212493749380,\t\n0.151422636138604130,\t0.151472059404902240,\t0.151521482292520660,\t0.151570904801334950,\t0.151620326931221960,\t0.151669748682058150,\t0.151719170053720430,\t0.151768591046084340,\t\n0.151818011659026750,\t0.151867431892424600,\t0.151916851746153410,\t0.151966271220090100,\t0.152015690314111110,\t0.152065109028093340,\t0.152114527361912330,\t0.152163945315445030,\t\n0.152213362888567880,\t0.152262780081157730,\t0.152312196893090200,\t0.152361613324242170,\t0.152411029374490140,\t0.152460445043710920,\t0.152509860331780210,\t0.152559275238574820,\t\n0.152608689763971240,\t0.152658103907846370,\t0.152707517670075820,\t0.152756931050536450,\t0.152806344049105200,\t0.152855756665657650,\t0.152905168900070720,\t0.152954580752220880,\t\n0.153003992221984990,\t0.153053403309238720,\t0.153102814013858920,\t0.153152224335722090,\t0.153201634274705120,\t0.153251043830683640,\t0.153300453003534560,\t0.153349861793134340,\t\n0.153399270199359890,\t0.153448678222086850,\t0.153498085861192100,\t0.153547493116552140,\t0.153596899988043880,\t0.153646306475542950,\t0.153695712578926220,\t0.153745118298070690,\t\n0.153794523632851900,\t0.153843928583146800,\t0.153893333148831880,\t0.153942737329784090,\t0.153992141125878970,\t0.154041544536993540,\t0.154090947563004230,\t0.154140350203788000,\t\n0.154189752459220450,\t0.154239154329178510,\t0.154288555813538700,\t0.154337956912177910,\t0.154387357624971830,\t0.154436757951797320,\t0.154486157892530950,\t0.154535557447049580,\t\n0.154584956615228920,\t0.154634355396945840,\t0.154683753792076880,\t0.154733151800498990,\t0.154782549422087770,\t0.154831946656720180,\t0.154881343504273160,\t0.154930739964622340,\t\n0.154980136037644660,\t0.155029531723216650,\t0.155078927021215260,\t0.155128321931516100,\t0.155177716453996140,\t0.155227110588531890,\t0.155276504335000310,\t0.155325897693277010,\t\n0.155375290663238990,\t0.155424683244762720,\t0.155474075437725210,\t0.155523467242002030,\t0.155572858657470230,\t0.155622249684006260,\t0.155671640321487090,\t0.155721030569788390,\t\n0.155770420428787110,\t0.155819809898360250,\t0.155869198978383390,\t0.155918587668733540,\t0.155967975969287240,\t0.156017363879921410,\t0.156066751400511770,\t0.156116138530935230,\t\n0.156165525271068330,\t0.156214911620788070,\t0.156264297579970100,\t0.156313683148491370,\t0.156363068326228430,\t0.156412453113058260,\t0.156461837508856530,\t0.156511221513500190,\t\n0.156560605126865810,\t0.156609988348830360,\t0.156659371179269510,\t0.156708753618060190,\t0.156758135665079460,\t0.156807517320202950,\t0.156856898583307650,\t0.156906279454270080,\t\n0.156955659932967260,\t0.157005040019274870,\t0.157054419713069850,\t0.157103799014228800,\t0.157153177922628700,\t0.157202556438145210,\t0.157251934560655310,\t0.157301312290035580,\t\n0.157350689626163030,\t0.157400066568913280,\t0.157449443118163390,\t0.157498819273789890,\t0.157548195035669770,\t0.157597570403678750,\t0.157646945377693780,\t0.157696319957591450,\t\n0.157745694143248770,\t0.157795067934541400,\t0.157844441331346370,\t0.157893814333540690,\t0.157943186941000010,\t0.157992559153601360,\t0.158041930971221320,\t0.158091302393736920,\t\n0.158140673421023780,\t0.158190044052958970,\t0.158239414289419070,\t0.158288784130281050,\t0.158338153575420660,\t0.158387522624714870,\t0.158436891278040250,\t0.158486259535273870,\t\n0.158535627396291400,\t0.158584994860969860,\t0.158634361929185810,\t0.158683728600816340,\t0.158733094875737060,\t0.158782460753825070,\t0.158831826234957370,\t0.158881191319009660,\t\n0.158930556005858980,\t0.158979920295381880,\t0.159029284187455430,\t0.159078647681955340,\t0.159128010778758660,\t0.159177373477741910,\t0.159226735778782190,\t0.159276097681755160,\t\n0.159325459186537900,\t0.159374820293007010,\t0.159424181001039500,\t0.159473541310511090,\t0.159522901221298840,\t0.159572260733279320,\t0.159621619846329610,\t0.159670978560325390,\t\n0.159720336875143730,\t0.159769694790661660,\t0.159819052306754920,\t0.159868409423300550,\t0.159917766140175170,\t0.159967122457255810,\t0.160016478374418180,\t0.160065833891539390,\t\n0.160115189008495970,\t0.160164543725165060,\t0.160213898041422330,\t0.160263251957144860,\t0.160312605472209270,\t0.160361958586492580,\t0.160411311299870570,\t0.160460663612220280,\t\n0.160510015523418340,\t0.160559367033341780,\t0.160608718141866390,\t0.160658068848869180,\t0.160707419154227260,\t0.160756769057816330,\t0.160806118559513490,\t0.160855467659195370,\t\n0.160904816356738980,\t0.160954164652020140,\t0.161003512544915880,\t0.161052860035302840,\t0.161102207123058090,\t0.161151553808057370,\t0.161200900090177790,\t0.161250245969295960,\t\n0.161299591445288940,\t0.161348936518032500,\t0.161398281187403710,\t0.161447625453279230,\t0.161496969315536140,\t0.161546312774050150,\t0.161595655828698420,\t0.161644998479357540,\t\n0.161694340725904580,\t0.161743682568215340,\t0.161793024006166910,\t0.161842365039636340,\t0.161891705668499420,\t0.161941045892633250,\t0.161990385711914460,\t0.162039725126220140,\t\n0.162089064135426060,\t0.162138402739409330,\t0.162187740938046610,\t0.162237078731214960,\t0.162286416118790160,\t0.162335753100649320,\t0.162385089676669120,\t0.162434425846726630,\t\n0.162483761610697640,\t0.162533096968459220,\t0.162582431919888080,\t0.162631766464861300,\t0.162681100603254660,\t0.162730434334945270,\t0.162779767659810230,\t0.162829100577725340,\t\n0.162878433088567700,\t0.162927765192213970,\t0.162977096888541260,\t0.163026428177425380,\t0.163075759058743410,\t0.163125089532372060,\t0.163174419598188430,\t0.163223749256068310,\t\n0.163273078505888790,\t0.163322407347526590,\t0.163371735780858840,\t0.163421063805761270,\t0.163470391422111060,\t0.163519718629784870,\t0.163569045428659830,\t0.163618371818611720,\t\n0.163667697799517700,\t0.163717023371254850,\t0.163766348533699040,\t0.163815673286727330,\t0.163864997630216420,\t0.163914321564043480,\t0.163963645088084310,\t0.164012968202216000,\t\n0.164062290906315300,\t0.164111613200259270,\t0.164160935083923790,\t0.164210256557185990,\t0.164259577619922520,\t0.164308898272010560,\t0.164358218513325910,\t0.164407538343745720,\t\n0.164456857763146700,\t0.164506176771405940,\t0.164555495368399330,\t0.164604813554003970,\t0.164654131328096560,\t0.164703448690554280,\t0.164752765641252940,\t0.164802082180069670,\t\n0.164851398306881640,\t0.164900714021564670,\t0.164950029323995940,\t0.164999344214052100,\t0.165048658691610370,\t0.165097972756546560,\t0.165147286408737800,\t0.165196599648060800,\t\n0.165245912474392770,\t0.165295224887609530,\t0.165344536887588210,\t0.165393848474205550,\t0.165443159647338690,\t0.165492470406863520,\t0.165541780752657160,\t0.165591090684596350,\t\n0.165640400202558270,\t0.165689709306418740,\t0.165739017996054920,\t0.165788326271344020,\t0.165837634132161850,\t0.165886941578385600,\t0.165936248609891980,\t0.165985555226558200,\t\n0.166034861428260070,\t0.166084167214874820,\t0.166133472586279110,\t0.166182777542350200,\t0.166232082082963860,\t0.166281386207997340,\t0.166330689917327380,\t0.166379993210831110,\t\n0.166429296088384420,\t0.166478598549864490,\t0.166527900595148050,\t0.166577202224112320,\t0.166626503436633130,\t0.166675804232587680,\t0.166725104611853160,\t0.166774404574305450,\t\n0.166823704119821730,\t0.166873003248278750,\t0.166922301959553680,\t0.166971600253522450,\t0.167020898130062180,\t0.167070195589049700,\t0.167119492630362160,\t0.167168789253875430,\t\n0.167218085459466730,\t0.167267381247012850,\t0.167316676616390940,\t0.167365971567476870,\t0.167415266100147900,\t0.167464560214280770,\t0.167513853909752650,\t0.167563147186439500,\t\n0.167612440044218440,\t0.167661732482966290,\t0.167711024502560260,\t0.167760316102876230,\t0.167809607283791410,\t0.167858898045183000,\t0.167908188386926890,\t0.167957478308900340,\t\n0.168006767810980090,\t0.168056056893043340,\t0.168105345554966030,\t0.168154633796625350,\t0.168203921617898100,\t0.168253209018661450,\t0.168302495998791380,\t0.168351782558165050,\t\n0.168401068696659250,\t0.168450354414151240,\t0.168499639710516870,\t0.168548924585633450,\t0.168598209039377670,\t0.168647493071626830,\t0.168696776682256830,\t0.168746059871144880,\t\n0.168795342638168200,\t0.168844624983202740,\t0.168893906906125740,\t0.168943188406813940,\t0.168992469485144630,\t0.169041750140993680,\t0.169091030374238370,\t0.169140310184755500,\t\n0.169189589572422280,\t0.169238868537114650,\t0.169288147078709840,\t0.169337425197084670,\t0.169386702892116350,\t0.169435980163680860,\t0.169485257011655430,\t0.169534533435916850,\t\n0.169583809436342350,\t0.169633085012807910,\t0.169682360165190750,\t0.169731634893368150,\t0.169780909197216000,\t0.169830183076611600,\t0.169879456531431720,\t0.169928729561553640,\t\n0.169978002166853300,\t0.170027274347207960,\t0.170076546102494420,\t0.170125817432589980,\t0.170175088337370550,\t0.170224358816713380,\t0.170273628870495320,\t0.170322898498593640,\t\n0.170372167700884260,\t0.170421436477244480,\t0.170470704827551080,\t0.170519972751681380,\t0.170569240249511310,\t0.170618507320918130,\t0.170667773965779120,\t0.170717040183970240,\t\n0.170766305975368770,\t0.170815571339851510,\t0.170864836277295790,\t0.170914100787577520,\t0.170963364870574010,\t0.171012628526162060,\t0.171061891754219010,\t0.171111154554620780,\t\n0.171160416927244650,\t0.171209678871967500,\t0.171258940388666570,\t0.171308201477217870,\t0.171357462137498670,\t0.171406722369385810,\t0.171455982172756570,\t0.171505241547486950,\t\n0.171554500493454220,\t0.171603759010535230,\t0.171653017098607280,\t0.171702274757546370,\t0.171751531987229760,\t0.171800788787534770,\t0.171850045158337350,\t0.171899301099514850,\t\n0.171948556610944050,\t0.171997811692502330,\t0.172047066344065640,\t0.172096320565511270,\t0.172145574356716100,\t0.172194827717557450,\t0.172244080647911270,\t0.172293333147654910,\t\n0.172342585216665210,\t0.172391836854819490,\t0.172441088061993740,\t0.172490338838065250,\t0.172539589182910930,\t0.172588839096408070,\t0.172638088578432660,\t0.172687337628862040,\t\n0.172736586247573540,\t0.172785834434443120,\t0.172835082189348090,\t0.172884329512165370,\t0.172933576402772270,\t0.172982822861044800,\t0.173032068886860260,\t0.173081314480095530,\t\n0.173130559640627980,\t0.173179804368333580,\t0.173229048663089690,\t0.173278292524773170,\t0.173327535953261340,\t0.173376778948430230,\t0.173426021510157180,\t0.173475263638319080,\t\n0.173524505332793260,\t0.173573746593455760,\t0.173622987420183870,\t0.173672227812854930,\t0.173721467771345010,\t0.173770707295531400,\t0.173819946385291050,\t0.173869185040501250,\t\n0.173918423261038070,\t0.173967661046778830,\t0.174016898397600400,\t0.174066135313380190,\t0.174115371793994220,\t0.174164607839319810,\t0.174213843449233850,\t0.174263078623613760,\t\n0.174312313362335520,\t0.174361547665276480,\t0.174410781532313600,\t0.174460014963324190,\t0.174509247958184290,\t0.174558480516771310,\t0.174607712638962100,\t0.174656944324634050,\t\n0.174706175573663190,\t0.174755406385926900,\t0.174804636761302530,\t0.174853866699666160,\t0.174903096200895090,\t0.174952325264866290,\t0.175001553891457110,\t0.175050782080543620,\t\n0.175100009832003160,\t0.175149237145712680,\t0.175198464021549540,\t0.175247690459389820,\t0.175296916459110860,\t0.175346142020589600,\t0.175395367143703430,\t0.175444591828328420,\t\n0.175493816074341920,\t0.175543039881620870,\t0.175592263250042680,\t0.175641486179483390,\t0.175690708669820370,\t0.175739930720931030,\t0.175789152332691410,\t0.175838373504978910,\t\n0.175887594237670470,\t0.175936814530643500,\t0.175986034383774050,\t0.176035253796939520,\t0.176084472770016850,\t0.176133691302883450,\t0.176182909395415370,\t0.176232127047490030,\t\n0.176281344258984340,\t0.176330561029775760,\t0.176379777359740310,\t0.176428993248755440,\t0.176478208696698090,\t0.176527423703445650,\t0.176576638268874210,\t0.176625852392861160,\t\n0.176675066075283940,\t0.176724279316018610,\t0.176773492114942590,\t0.176822704471932820,\t0.176871916386866720,\t0.176921127859620410,\t0.176970338890071300,\t0.177019549478096310,\t\n0.177068759623572910,\t0.177117969326377160,\t0.177167178586386480,\t0.177216387403477870,\t0.177265595777528710,\t0.177314803708415130,\t0.177364011196014530,\t0.177413218240203920,\t\n0.177462424840860690,\t0.177511630997860990,\t0.177560836711082170,\t0.177610041980401730,\t0.177659246805695730,\t0.177708451186841620,\t0.177757655123716380,\t0.177806858616197440,\t\n0.177856061664160900,\t0.177905264267484240,\t0.177954466426044370,\t0.178003668139718820,\t0.178052869408383630,\t0.178102070231916290,\t0.178151270610193760,\t0.178200470543093490,\t\n0.178249670030491610,\t0.178298869072265580,\t0.178348067668292340,\t0.178397265818449390,\t0.178446463522612810,\t0.178495660780660120,\t0.178544857592468240,\t0.178594053957914670,\t\n0.178643249876875520,\t0.178692445349228230,\t0.178741640374850300,\t0.178790834953617810,\t0.178840029085408220,\t0.178889222770098580,\t0.178938416007566330,\t0.178987608797687580,\t\n0.179036801140339820,\t0.179085993035400040,\t0.179135184482745740,\t0.179184375482253020,\t0.179233566033799360,\t0.179282756137261800,\t0.179331945792517770,\t0.179381134999443470,\t\n0.179430323757916290,\t0.179479512067813350,\t0.179528699929012020,\t0.179577887341388520,\t0.179627074304820310,\t0.179676260819184840,\t0.179725446884358290,\t0.179774632500218130,\t\n0.179823817666641380,\t0.179873002383505510,\t0.179922186650686710,\t0.179971370468062440,\t0.180020553835509740,\t0.180069736752906110,\t0.180118919220127680,\t0.180168101237051990,\t\n0.180217282803556010,\t0.180266463919517260,\t0.180315644584811920,\t0.180364824799317480,\t0.180414004562910960,\t0.180463183875469890,\t0.180512362736870410,\t0.180561541146990020,\t\n0.180610719105706200,\t0.180659896612895170,\t0.180709073668434390,\t0.180758250272200940,\t0.180807426424072270,\t0.180856602123924630,\t0.180905777371635460,\t0.180954952167081850,\t\n0.181004126510141310,\t0.181053300400690010,\t0.181102473838605450,\t0.181151646823764720,\t0.181200819356045290,\t0.181249991435323390,\t0.181299163061476530,\t0.181348334234381740,\t\n0.181397504953916540,\t0.181446675219957170,\t0.181495845032381090,\t0.181545014391065410,\t0.181594183295887610,\t0.181643351746723940,\t0.181692519743451880,\t0.181741687285948940,\t\n0.181790854374091370,\t0.181840021007756670,\t0.181889187186821900,\t0.181938352911164610,\t0.181987518180661000,\t0.182036682995188580,\t0.182085847354624460,\t0.182135011258846150,\t\n0.182184174707729910,\t0.182233337701153190,\t0.182282500238993140,\t0.182331662321127300,\t0.182380823947431850,\t0.182429985117784330,\t0.182479145832061870,\t0.182528306090141950,\t\n0.182577465891900850,\t0.182626625237216090,\t0.182675784125965190,\t0.182724942558024410,\t0.182774100533271260,\t0.182823258051582870,\t0.182872415112836750,\t0.182921571716909180,\t\n0.182970727863677660,\t0.183019883553019320,\t0.183069038784811730,\t0.183118193558931110,\t0.183167347875254990,\t0.183216501733660500,\t0.183265655134025180,\t0.183314808076225300,\t\n0.183363960560138400,\t0.183413112585641610,\t0.183462264152612440,\t0.183511415260927210,\t0.183560565910463440,\t0.183609716101098660,\t0.183658865832709180,\t0.183708015105172540,\t\n0.183757163918365830,\t0.183806312272166680,\t0.183855460166451300,\t0.183904607601097250,\t0.183953754575981730,\t0.184002901090982220,\t0.184052047145975030,\t0.184101192740837720,\t\n0.184150337875447430,\t0.184199482549681740,\t0.184248626763416910,\t0.184297770516530510,\t0.184346913808899670,\t0.184396056640401980,\t0.184445199010913750,\t0.184494340920312470,\t\n0.184543482368475810,\t0.184592623355280010,\t0.184641763880602630,\t0.184690903944320860,\t0.184740043546312240,\t0.184789182686453090,\t0.184838321364621000,\t0.184887459580693080,\t\n0.184936597334546950,\t0.184985734626058910,\t0.185034871455106530,\t0.185084007821566950,\t0.185133143725317810,\t0.185182279166235360,\t0.185231414144197220,\t0.185280548659080560,\t\n0.185329682710762940,\t0.185378816299120670,\t0.185427949424031370,\t0.185477082085372220,\t0.185526214283020770,\t0.185575346016853350,\t0.185624477286747580,\t0.185673608092581040,\t\n0.185722738434230070,\t0.185771868311572250,\t0.185820997724484740,\t0.185870126672845170,\t0.185919255156529850,\t0.185968383175416390,\t0.186017510729382000,\t0.186066637818304240,\t\n0.186115764442059460,\t0.186164890600525270,\t0.186214016293578840,\t0.186263141521097800,\t0.186312266282958490,\t0.186361390579038530,\t0.186410514409215050,\t0.186459637773365740,\t\n0.186508760671366900,\t0.186557883103096180,\t0.186607005068431170,\t0.186656126567248200,\t0.186705247599424940,\t0.186754368164838540,\t0.186803488263366650,\t0.186852607894885610,\t\n0.186901727059273080,\t0.186950845756406190,\t0.186999963986162640,\t0.187049081748418750,\t0.187098199043052170,\t0.187147315869940050,\t0.187196432228960100,\t0.187245548119988640,\t\n0.187294663542903310,\t0.187343778497581300,\t0.187392892983900300,\t0.187442007001736630,\t0.187491120550967920,\t0.187540233631471880,\t0.187589346243124790,\t0.187638458385804340,\t\n0.187687570059387770,\t0.187736681263752670,\t0.187785791998775460,\t0.187834902264333780,\t0.187884012060304810,\t0.187933121386566260,\t0.187982230242994490,\t0.188031338629467110,\t\n0.188080446545861400,\t0.188129553992055030,\t0.188178660967924320,\t0.188227767473346940,\t0.188276873508200160,\t0.188325979072361650,\t0.188375084165707720,\t0.188424188788116090,\t\n0.188473292939464020,\t0.188522396619629110,\t0.188571499828487810,\t0.188620602565917730,\t0.188669704831796600,\t0.188718806626000770,\t0.188767907948407920,\t0.188817008798895290,\t\n0.188866109177340590,\t0.188915209083620170,\t0.188964308517611730,\t0.189013407479192510,\t0.189062505968240230,\t0.189111603984631230,\t0.189160701528243210,\t0.189209798598953480,\t\n0.189258895196639660,\t0.189307991321178150,\t0.189357086972446690,\t0.189406182150322510,\t0.189455276854683300,\t0.189504371085405470,\t0.189553464842366710,\t0.189602558125444710,\t\n0.189651650934515890,\t0.189700743269457960,\t0.189749835130148150,\t0.189798926516464180,\t0.189848017428282470,\t0.189897107865480720,\t0.189946197827936200,\t0.189995287315526620,\t\n0.190044376328128400,\t0.190093464865619200,\t0.190142552927876380,\t0.190191640514777600,\t0.190240727626199290,\t0.190289814262019130,\t0.190338900422114460,\t0.190387986106362980,\t\n0.190437071314641080,\t0.190486156046826500,\t0.190535240302796980,\t0.190584324082428920,\t0.190633407385600060,\t0.190682490212187670,\t0.190731572562069490,\t0.190780654435121960,\t\n0.190829735831222760,\t0.190878816750249260,\t0.190927897192079120,\t0.190976977156588820,\t0.191026056643656070,\t0.191075135653158170,\t0.191124214184972880,\t0.191173292238976610,\t\n0.191222369815047120,\t0.191271446913061720,\t0.191320523532898110,\t0.191369599674432760,\t0.191418675337543420,\t0.191467750522107820,\t0.191516825228002420,\t0.191565899455104940,\t\n0.191614973203292740,\t0.191664046472443510,\t0.191713119262433730,\t0.191762191573141170,\t0.191811263404443130,\t0.191860334756217360,\t0.191909405628340330,\t0.191958476020689770,\t\n0.192007545933143010,\t0.192056615365577860,\t0.192105684317870700,\t0.192154752789899350,\t0.192203820781541110,\t0.192252888292673760,\t0.192301955323173730,\t0.192351021872918830,\t\n0.192400087941786370,\t0.192449153529654140,\t0.192498218636398570,\t0.192547283261897460,\t0.192596347406028600,\t0.192645411068668420,\t0.192694474249694710,\t0.192743536948984800,\t\n0.192792599166416500,\t0.192841660901866270,\t0.192890722155211890,\t0.192939782926330680,\t0.192988843215100490,\t0.193037903021397730,\t0.193086962345100200,\t0.193136021186085280,\t\n0.193185079544230750,\t0.193234137419413060,\t0.193283194811510050,\t0.193332251720399060,\t0.193381308145957860,\t0.193430364088062970,\t0.193479419546592150,\t0.193528474521423220,\t\n0.193577529012432660,\t0.193626583019498310,\t0.193675636542497480,\t0.193724689581307980,\t0.193773742135806340,\t0.193822794205870340,\t0.193871845791377370,\t0.193920896892205210,\t\n0.193969947508230350,\t0.194018997639330640,\t0.194068047285383460,\t0.194117096446266570,\t0.194166145121856510,\t0.194215193312031080,\t0.194264241016667670,\t0.194313288235644090,\t\n0.194362334968836870,\t0.194411381216123810,\t0.194460426977382720,\t0.194509472252490130,\t0.194558517041323880,\t0.194607561343761310,\t0.194656605159680280,\t0.194705648488957300,\t\n0.194754691331470190,\t0.194803733687096360,\t0.194852775555713650,\t0.194901816937198550,\t0.194950857831428900,\t0.194999898238282120,\t0.195048938157636020,\t0.195097977589367140,\t\n0.195147016533353340,\t0.195196054989471960,\t0.195245092957600900,\t0.195294130437616680,\t0.195343167429397110,\t0.195392203932819640,\t0.195441239947762080,\t0.195490275474101000,\t\n0.195539310511714220,\t0.195588345060479620,\t0.195637379120273710,\t0.195686412690974340,\t0.195735445772458940,\t0.195784478364605390,\t0.195833510467290170,\t0.195882542080391190,\t\n0.195931573203785870,\t0.195980603837352020,\t0.196029633980966260,\t0.196078663634506410,\t0.196127692797849890,\t0.196176721470874560,\t0.196225749653457020,\t0.196274777345475080,\t\n0.196323804546806200,\t0.196372831257328270,\t0.196421857476917790,\t0.196470883205452700,\t0.196519908442810810,\t0.196568933188868730,\t0.196617957443504300,\t0.196666981206595010,\t\n0.196716004478018680,\t0.196765027257651910,\t0.196814049545372540,\t0.196863071341058100,\t0.196912092644586370,\t0.196961113455834000,\t0.197010133774678850,\t0.197059153600998350,\t\n0.197108172934670390,\t0.197157191775571590,\t0.197206210123579810,\t0.197255227978572510,\t0.197304245340427540,\t0.197353262209021550,\t0.197402278584232400,\t0.197451294465937980,\t\n0.197500309854014900,\t0.197549324748341030,\t0.197598339148793850,\t0.197647353055251270,\t0.197696366467589870,\t0.197745379385687560,\t0.197794391809421790,\t0.197843403738670490,\t\n0.197892415173310220,\t0.197941426113218940,\t0.197990436558274090,\t0.198039446508353560,\t0.198088455963333990,\t0.198137464923093280,\t0.198186473387508920,\t0.198235481356458800,\t\n0.198284488829819560,\t0.198333495807469060,\t0.198382502289285310,\t0.198431508275144830,\t0.198480513764925590,\t0.198529518758505050,\t0.198578523255761170,\t0.198627527256570540,\t\n0.198676530760811100,\t0.198725533768360300,\t0.198774536279096140,\t0.198823538292895170,\t0.198872539809635400,\t0.198921540829194250,\t0.198970541351449680,\t0.199019541376278340,\t\n0.199068540903558130,\t0.199117539933166580,\t0.199166538464981590,\t0.199215536498879850,\t0.199264534034739260,\t0.199313531072437320,\t0.199362527611852000,\t0.199411523652859940,\t\n0.199460519195339050,\t0.199509514239167300,\t0.199558508784221320,\t0.199607502830379090,\t0.199656496377518090,\t0.199705489425516300,\t0.199754481974250330,\t0.199803474023598160,\t\n0.199852465573437300,\t0.199901456623645720,\t0.199950447174100070,\t0.199999437224678310,\t0.200048426775257940,\t0.200097415825716940,\t0.200146404375931980,\t0.200195392425780990,\t\n0.200244379975141520,\t0.200293367023891560,\t0.200342353571907720,\t0.200391339619067990,\t0.200440325165250370,\t0.200489310210331480,\t0.200538294754189330,\t0.200587278796701430,\t\n0.200636262337745790,\t0.200685245377199060,\t0.200734227914939200,\t0.200783209950843780,\t0.200832191484790760,\t0.200881172516656830,\t0.200930153046319980,\t0.200979133073657720,\t\n0.201028112598548080,\t0.201077091620867730,\t0.201126070140494630,\t0.201175048157306390,\t0.201224025671180940,\t0.201273002681994990,\t0.201321979189626550,\t0.201370955193953590,\t\n0.201419930694852780,\t0.201468905692202190,\t0.201517880185879290,\t0.201566854175762170,\t0.201615827661727450,\t0.201664800643653160,\t0.201713773121416890,\t0.201762745094896580,\t\n0.201811716563969010,\t0.201860687528512130,\t0.201909657988403550,\t0.201958627943521260,\t0.202007597393741970,\t0.202056566338943640,\t0.202105534779003950,\t0.202154502713800840,\t\n0.202203470143211020,\t0.202252437067112540,\t0.202301403485382970,\t0.202350369397900330,\t0.202399334804541310,\t0.202448299705183970,\t0.202497264099706310,\t0.202546227987985050,\t\n0.202595191369898230,\t0.202644154245323420,\t0.202693116614138690,\t0.202742078476220690,\t0.202791039831447530,\t0.202840000679696760,\t0.202888961020846410,\t0.202937920854773250,\t\n0.202986880181355270,\t0.203035839000470090,\t0.203084797311995750,\t0.203133755115808970,\t0.203182712411787810,\t0.203231669199809870,\t0.203280625479753200,\t0.203329581251494530,\t\n0.203378536514911890,\t0.203427491269883350,\t0.203476445516285660,\t0.203525399253996850,\t0.203574352482894540,\t0.203623305202856790,\t0.203672257413760330,\t0.203721209115483220,\t\n0.203770160307903100,\t0.203819110990898030,\t0.203868061164344720,\t0.203917010828121280,\t0.203965959982105290,\t0.204014908626174860,\t0.204063856760206720,\t0.204112804384078920,\t\n0.204161751497669130,\t0.204210698100855380,\t0.204259644193514440,\t0.204308589775524410,\t0.204357534846763330,\t0.204406479407107990,\t0.204455423456436440,\t0.204504366994626350,\t\n0.204553310021555750,\t0.204602252537101460,\t0.204651194541141530,\t0.204700136033553610,\t0.204749077014215800,\t0.204798017483004860,\t0.204846957439798860,\t0.204895896884475490,\t\n0.204944835816912780,\t0.204993774236987590,\t0.205042712144577920,\t0.205091649539561490,\t0.205140586421816370,\t0.205189522791219350,\t0.205238458647648530,\t0.205287393990982000,\t\n0.205336328821096540,\t0.205385263137870260,\t0.205434196941180810,\t0.205483130230906310,\t0.205532063006923560,\t0.205580995269110640,\t0.205629927017345250,\t0.205678858251505480,\t\n0.205727788971468100,\t0.205776719177111270,\t0.205825648868312620,\t0.205874578044950300,\t0.205923506706901100,\t0.205972434854043150,\t0.206021362486254080,\t0.206070289603412060,\t\n0.206119216205393860,\t0.206168142292077640,\t0.206217067863341070,\t0.206265992919062250,\t0.206314917459118010,\t0.206363841483386490,\t0.206412764991745800,\t0.206461687984072740,\t\n0.206510610460245490,\t0.206559532420141690,\t0.206608453863639520,\t0.206657374790615770,\t0.206706295200948580,\t0.206755215094515640,\t0.206804134471195110,\t0.206853053330863820,\t\n0.206901971673399880,\t0.206950889498681010,\t0.206999806806585360,\t0.207048723596989750,\t0.207097639869772340,\t0.207146555624810820,\t0.207195470861983370,\t0.207244385581166780,\t\n0.207293299782239230,\t0.207342213465078890,\t0.207391126629562550,\t0.207440039275568420,\t0.207488951402974160,\t0.207537863011658000,\t0.207586774101496700,\t0.207635684672368510,\t\n0.207684594724151070,\t0.207733504256722600,\t0.207782413269959910,\t0.207831321763741220,\t0.207880229737944210,\t0.207929137192447070,\t0.207978044127126640,\t0.208026950541861100,\t\n0.208075856436528210,\t0.208124761811006090,\t0.208173666665171620,\t0.208222570998903010,\t0.208271474812078390,\t0.208320378104574650,\t0.208369280876269960,\t0.208418183127042080,\t\n0.208467084856769180,\t0.208515986065328120,\t0.208564886752597100,\t0.208613786918453860,\t0.208662686562776590,\t0.208711585685442180,\t0.208760484286328790,\t0.208809382365314180,\t\n0.208858279922276570,\t0.208907176957092820,\t0.208956073469641120,\t0.209004969459799270,\t0.209053864927445400,\t0.209102759872456440,\t0.209151654294710580,\t0.209200548194085570,\t\n0.209249441570459630,\t0.209298334423709650,\t0.209347226753713870,\t0.209396118560350420,\t0.209445009843496260,\t0.209493900603029550,\t0.209542790838828100,\t0.209591680550770130,\t\n0.209640569738732490,\t0.209689458402593450,\t0.209738346542230750,\t0.209787234157522620,\t0.209836121248345970,\t0.209885007814579030,\t0.209933893856099560,\t0.209982779372785780,\t\n0.210031664364514650,\t0.210080548831164340,\t0.210129432772612650,\t0.210178316188737810,\t0.210227199079416750,\t0.210276081444527700,\t0.210324963283948900,\t0.210373844597557230,\t\n0.210422725385230940,\t0.210471605646847860,\t0.210520485382286180,\t0.210569364591422860,\t0.210618243274136140,\t0.210667121430303810,\t0.210715999059804090,\t0.210764876162513960,\t\n0.210813752738311630,\t0.210862628787074930,\t0.210911504308682080,\t0.210960379303010040,\t0.211009253769937040,\t0.211058127709340900,\t0.211107001121099900,\t0.211155874005090950,\t\n0.211204746361192320,\t0.211253618189282260,\t0.211302489489237720,\t0.211351360260936950,\t0.211400230504257800,\t0.211449100219078480,\t0.211497969405275990,\t0.211546838062728560,\t\n0.211595706191314040,\t0.211644573790910700,\t0.211693440861395490,\t0.211742307402646680,\t0.211791173414542090,\t0.211840038896960010,\t0.211888903849777400,\t0.211937768272872530,\t\n0.211986632166123230,\t0.212035495529407810,\t0.212084358362603200,\t0.212133220665587680,\t0.212182082438239550,\t0.212230943680435800,\t0.212279804392054660,\t0.212328664572974030,\t\n0.212377524223072180,\t0.212426383342226080,\t0.212475241930314000,\t0.212524099987213830,\t0.212572957512803830,\t0.212621814506961020,\t0.212670670969563690,\t0.212719526900489650,\t\n0.212768382299617250,\t0.212817237166823440,\t0.212866091501986540,\t0.212914945304984420,\t0.212963798575695390,\t0.213012651313996410,\t0.213061503519765800,\t0.213110355192881430,\t\n0.213159206333221610,\t0.213208056940663330,\t0.213256907015084930,\t0.213305756556364660,\t0.213354605564379600,\t0.213403454039008010,\t0.213452301980127800,\t0.213501149387617250,\t\n0.213549996261353400,\t0.213598842601214560,\t0.213647688407078620,\t0.213696533678823880,\t0.213745378416327380,\t0.213794222619467430,\t0.213843066288121940,\t0.213891909422169210,\t\n0.213940752021486270,\t0.213989594085951450,\t0.214038435615442640,\t0.214087276609838170,\t0.214136117069015090,\t0.214184956992851700,\t0.214233796381226360,\t0.214282635234016080,\t\n0.214331473551099240,\t0.214380311332353720,\t0.214429148577657820,\t0.214477985286888630,\t0.214526821459924490,\t0.214575657096643310,\t0.214624492196923390,\t0.214673326760641820,\t\n0.214722160787676920,\t0.214770994277906630,\t0.214819827231209290,\t0.214868659647461930,\t0.214917491526542940,\t0.214966322868330230,\t0.215015153672702130,\t0.215063983939535710,\t\n0.215112813668709320,\t0.215161642860101370,\t0.215210471513588820,\t0.215259299629050130,\t0.215308127206363190,\t0.215356954245406380,\t0.215405780746056740,\t0.215454606708192640,\t\n0.215503432131692010,\t0.215552257016433240,\t0.215601081362293420,\t0.215649905169150860,\t0.215698728436883560,\t0.215747551165369870,\t0.215796373354486870,\t0.215845195004112920,\t\n0.215894016114126010,\t0.215942836684404480,\t0.215991656714825430,\t0.216040476205267230,\t0.216089295155607850,\t0.216138113565725650,\t0.216186931435497750,\t0.216235748764802500,\t\n0.216284565553518330,\t0.216333381801522310,\t0.216382197508692810,\t0.216431012674907860,\t0.216479827300045780,\t0.216528641383983700,\t0.216577454926600050,\t0.216626267927772730,\t\n0.216675080387380180,\t0.216723892305299480,\t0.216772703681409080,\t0.216821514515586900,\t0.216870324807711370,\t0.216919134557659630,\t0.216967943765310010,\t0.217016752430540550,\t\n0.217065560553229620,\t0.217114368133254380,\t0.217163175170493220,\t0.217211981664824550,\t0.217260787616125490,\t0.217309593024274470,\t0.217358397889149430,\t0.217407202210628870,\t\n0.217456005988589860,\t0.217504809222910820,\t0.217553611913469780,\t0.217602414060145130,\t0.217651215662814030,\t0.217700016721354860,\t0.217748817235645680,\t0.217797617205564870,\t\n0.217846416630989580,\t0.217895215511798270,\t0.217944013847868910,\t0.217992811639079940,\t0.218041608885308520,\t0.218090405586433080,\t0.218139201742332060,\t0.218187997352882580,\t\n0.218236792417963120,\t0.218285586937451700,\t0.218334380911226730,\t0.218383174339165380,\t0.218431967221146080,\t0.218480759557046850,\t0.218529551346746180,\t0.218578342590121180,\t\n0.218627133287050360,\t0.218675923437411680,\t0.218724713041083620,\t0.218773502097943360,\t0.218822290607869310,\t0.218871078570739560,\t0.218919865986432570,\t0.218968652854825450,\t\n0.219017439175796720,\t0.219066224949224790,\t0.219115010174986890,\t0.219163794852961470,\t0.219212578983026540,\t0.219261362565060620,\t0.219310145598940850,\t0.219358928084545710,\t\n0.219407710021753270,\t0.219456491410441960,\t0.219505272250489020,\t0.219554052541772880,\t0.219602832284171600,\t0.219651611477563680,\t0.219700390121826320,\t0.219749168216837960,\t\n0.219797945762476690,\t0.219846722758620970,\t0.219895499205148030,\t0.219944275101936340,\t0.219993050448863970,\t0.220041825245809400,\t0.220090599492649810,\t0.220139373189263740,\t\n0.220188146335529690,\t0.220236918931324830,\t0.220285690976527640,\t0.220334462471016260,\t0.220383233414669140,\t0.220432003807363520,\t0.220480773648977890,\t0.220529542939390310,\t\n0.220578311678479300,\t0.220627079866122090,\t0.220675847502197180,\t0.220724614586582660,\t0.220773381119157040,\t0.220822147099797500,\t0.220870912528382620,\t0.220919677404790460,\t\n0.220968441728899540,\t0.221017205500587070,\t0.221065968719731580,\t0.221114731386211630,\t0.221163493499904410,\t0.221212255060688450,\t0.221261016068441840,\t0.221309776523043120,\t\n0.221358536424369560,\t0.221407295772299640,\t0.221456054566711470,\t0.221504812807483600,\t0.221553570494493280,\t0.221602327627619030,\t0.221651084206738960,\t0.221699840231731620,\t\n0.221748595702474210,\t0.221797350618845340,\t0.221846104980723100,\t0.221894858787986010,\t0.221943612040511360,\t0.221992364738177680,\t0.222041116880863500,\t0.222089868468446110,\t\n0.222138619500804050,\t0.222187369977815440,\t0.222236119899358820,\t0.222284869265311490,\t0.222333618075551990,\t0.222382366329958420,\t0.222431114028409400,\t0.222479861170782140,\t\n0.222528607756955240,\t0.222577353786806790,\t0.222626099260215430,\t0.222674844177058350,\t0.222723588537214190,\t0.222772332340561040,\t0.222821075586977500,\t0.222869818276340840,\t\n0.222918560408529640,\t0.222967301983422040,\t0.223016043000896610,\t0.223064783460830640,\t0.223113523363102690,\t0.223162262707591400,\t0.223211001494174000,\t0.223259739722729110,\t\n0.223308477393134860,\t0.223357214505269850,\t0.223405951059011370,\t0.223454687054238020,\t0.223503422490827970,\t0.223552157368659770,\t0.223600891687610740,\t0.223649625447559510,\t\n0.223698358648384190,\t0.223747091289963400,\t0.223795823372174460,\t0.223844554894895960,\t0.223893285858006080,\t0.223942016261383440,\t0.223990746104905300,\t0.224039475388450290,\t\n0.224088204111897030,\t0.224136932275122820,\t0.224185659878006290,\t0.224234386920425600,\t0.224283113402259400,\t0.224331839323384960,\t0.224380564683680920,\t0.224429289483025480,\t\n0.224478013721297250,\t0.224526737398373560,\t0.224575460514133020,\t0.224624183068453830,\t0.224672905061214600,\t0.224721626492292690,\t0.224770347361566700,\t0.224819067668914850,\t\n0.224867787414215760,\t0.224916506597346770,\t0.224965225218186540,\t0.225013943276613640,\t0.225062660772505470,\t0.225111377705740660,\t0.225160094076197390,\t0.225208809883754300,\t\n0.225257525128288780,\t0.225306239809679430,\t0.225354953927804500,\t0.225403667482542590,\t0.225452380473771110,\t0.225501092901368660,\t0.225549804765213470,\t0.225598516065184220,\t\n0.225647226801158260,\t0.225695936973014210,\t0.225744646580630310,\t0.225793355623885250,\t0.225842064102656340,\t0.225890772016822280,\t0.225939479366261300,\t0.225988186150852060,\t\n0.226036892370471890,\t0.226085598024999530,\t0.226134303114313600,\t0.226183007638291470,\t0.226231711596811800,\t0.226280414989752880,\t0.226329117816993330,\t0.226377820078410590,\t\n0.226426521773883280,\t0.226475222903289640,\t0.226523923466508400,\t0.226572623463416940,\t0.226621322893893890,\t0.226670021757817560,\t0.226718720055066570,\t0.226767417785518370,\t\n0.226816114949051630,\t0.226864811545544610,\t0.226913507574875970,\t0.226962203036923130,\t0.227010897931564810,\t0.227059592258679670,\t0.227108286018145090,\t0.227156979209839820,\t\n0.227205671833642100,\t0.227254363889430630,\t0.227303055377082790,\t0.227351746296477340,\t0.227400436647492520,\t0.227449126430007060,\t0.227497815643898320,\t0.227546504289045050,\t\n0.227595192365325520,\t0.227643879872618470,\t0.227692566810801240,\t0.227741253179752630,\t0.227789938979350880,\t0.227838624209474700,\t0.227887308870001550,\t0.227935992960810100,\t\n0.227984676481779110,\t0.228033359432786020,\t0.228082041813709500,\t0.228130723624427880,\t0.228179404864819910,\t0.228228085534762980,\t0.228276765634135820,\t0.228325445162816780,\t\n0.228374124120684530,\t0.228422802507616540,\t0.228471480323491540,\t0.228520157568187860,\t0.228568834241584200,\t0.228617510343558040,\t0.228666185873988100,\t0.228714860832752690,\t\n0.228763535219730560,\t0.228812209034799150,\t0.228860882277837240,\t0.228909554948723530,\t0.228958227047335510,\t0.229006898573551940,\t0.229055569527251120,\t0.229104239908311800,\t\n0.229152909716611420,\t0.229201578952028810,\t0.229250247614442240,\t0.229298915703730480,\t0.229347583219771000,\t0.229396250162442560,\t0.229444916531623490,\t0.229493582327192550,\t\n0.229542247549027250,\t0.229590912197006340,\t0.229639576271008120,\t0.229688239770911410,\t0.229736902696593640,\t0.229785565047933630,\t0.229834226824809720,\t0.229882888027100660,\t\n0.229931548654683960,\t0.229980208707438380,\t0.230028868185242710,\t0.230077527087974440,\t0.230126185415512360,\t0.230174843167734790,\t0.230223500344520580,\t0.230272156945747150,\t\n0.230320812971293360,\t0.230369468421037530,\t0.230418123294858450,\t0.230466777592633650,\t0.230515431314241880,\t0.230564084459561560,\t0.230612737028471430,\t0.230661389020849040,\t\n0.230710040436573170,\t0.230758691275522200,\t0.230807341537574960,\t0.230855991222608910,\t0.230904640330502900,\t0.230953288861135700,\t0.231001936814384860,\t0.231050584190129170,\t\n0.231099230988247030,\t0.231147877208617240,\t0.231196522851117300,\t0.231245167915626080,\t0.231293812402021960,\t0.231342456310183710,\t0.231391099639988880,\t0.231439742391316320,\t\n0.231488384564044410,\t0.231537026158051940,\t0.231585667173216490,\t0.231634307609416890,\t0.231682947466531510,\t0.231731586744439190,\t0.231780225443017460,\t0.231828863562145190,\t\n0.231877501101701190,\t0.231926138061562980,\t0.231974774441609440,\t0.232023410241718960,\t0.232072045461770400,\t0.232120680101641270,\t0.232169314161210480,\t0.232217947640356360,\t\n0.232266580538957820,\t0.232315212856892410,\t0.232363844594038970,\t0.232412475750275900,\t0.232461106325482090,\t0.232509736319535060,\t0.232558365732313700,\t0.232606994563696430,\t\n0.232655622813562110,\t0.232704250481788280,\t0.232752877568253860,\t0.232801504072837200,\t0.232850129995417240,\t0.232898755335871540,\t0.232947380094078920,\t0.232996004269918290,\t\n0.233044627863267210,\t0.233093250874004590,\t0.233141873302008810,\t0.233190495147158810,\t0.233239116409332120,\t0.233287737088407640,\t0.233336357184263820,\t0.233384976696779540,\t\n0.233433595625832380,\t0.233482213971301230,\t0.233530831733064550,\t0.233579448911001240,\t0.233628065504988850,\t0.233676681514906310,\t0.233725296940632040,\t0.233773911782044990,\t\n0.233822526039022730,\t0.233871139711444130,\t0.233919752799188140,\t0.233968365302132330,\t0.234016977220155600,\t0.234065588553136420,\t0.234114199300953730,\t0.234162809463485080,\t\n0.234211419040609410,\t0.234260028032205190,\t0.234308636438151360,\t0.234357244258325490,\t0.234405851492606510,\t0.234454458140872870,\t0.234503064203003570,\t0.234551669678876140,\t\n0.234600274568369540,\t0.234648878871362270,\t0.234697482587733240,\t0.234746085717360050,\t0.234794688260121650,\t0.234843290215896980,\t0.234891891584563640,\t0.234940492366000560,\t\n0.234989092560086270,\t0.235037692166699670,\t0.235086291185718390,\t0.235134889617021420,\t0.235183487460487200,\t0.235232084715994690,\t0.235280681383421560,\t0.235329277462646700,\t\n0.235377872953548670,\t0.235426467856006380,\t0.235475062169897470,\t0.235523655895100940,\t0.235572249031495230,\t0.235620841578959350,\t0.235669433537370940,\t0.235718024906608950,\t\n0.235766615686552330,\t0.235815205877078720,\t0.235863795478067100,\t0.235912384489396000,\t0.235960972910944370,\t0.236009560742589890,\t0.236058147984211490,\t0.236106734635687710,\t\n0.236155320696897540,\t0.236203906167718640,\t0.236252491048029980,\t0.236301075337710080,\t0.236349659036637900,\t0.236398242144691180,\t0.236446824661748850,\t0.236495406587689440,\t\n0.236543987922391950,\t0.236592568665734080,\t0.236641148817594770,\t0.236689728377852600,\t0.236738307346386510,\t0.236786885723074240,\t0.236835463507794770,\t0.236884040700427070,\t\n0.236932617300848800,\t0.236981193308939020,\t0.237029768724576260,\t0.237078343547639490,\t0.237126917778006460,\t0.237175491415556110,\t0.237224064460167030,\t0.237272636911718240,\t\n0.237321208770087390,\t0.237369780035153550,\t0.237418350706795260,\t0.237466920784891510,\t0.237515490269320030,\t0.237564059159959850,\t0.237612627456689480,\t0.237661195159387990,\t\n0.237709762267933080,\t0.237758328782203790,\t0.237806894702079080,\t0.237855460027436710,\t0.237904024758155700,\t0.237952588894114610,\t0.238001152435192490,\t0.238049715381267040,\t\n0.238098277732217340,\t0.238146839487921920,\t0.238195400648259840,\t0.238243961213108810,\t0.238292521182347890,\t0.238341080555855680,\t0.238389639333511180,\t0.238438197515192160,\t\n0.238486755100777630,\t0.238535312090146220,\t0.238583868483176980,\t0.238632424279747620,\t0.238680979479737210,\t0.238729534083024770,\t0.238778088089488080,\t0.238826641499006150,\t\n0.238875194311457650,\t0.238923746526721550,\t0.238972298144675690,\t0.239020849165199060,\t0.239069399588170330,\t0.239117949413468510,\t0.239166498640971390,\t0.239215047270558030,\t\n0.239263595302107060,\t0.239312142735497530,\t0.239360689570607190,\t0.239409235807315160,\t0.239457781445500010,\t0.239506326485040860,\t0.239554870925815460,\t0.239603414767702860,\t\n0.239651958010581730,\t0.239700500654331160,\t0.239749042698828880,\t0.239797584143954020,\t0.239846124989585600,\t0.239894665235601460,\t0.239943204881880650,\t0.239991743928301830,\t\n0.240040282374744090,\t0.240088820221085190,\t0.240137357467204240,\t0.240185894112979910,\t0.240234430158291300,\t0.240282965603016150,\t0.240331500447033580,\t0.240380034690222290,\t\n0.240428568332461320,\t0.240477101373628520,\t0.240525633813602950,\t0.240574165652263310,\t0.240622696889488650,\t0.240671227525156850,\t0.240719757559146990,\t0.240768286991338150,\t\n0.240816815821608160,\t0.240865344049836120,\t0.240913871675900730,\t0.240962398699681110,\t0.241010925121055040,\t0.241059450939901660,\t0.241107976156099660,\t0.241156500769528160,\t\n0.241205024780064950,\t0.241253548187589210,\t0.241302070991979560,\t0.241350593193115190,\t0.241399114790873920,\t0.241447635785134840,\t0.241496156175776660,\t0.241544675962678560,\t\n0.241593195145718310,\t0.241641713724775080,\t0.241690231699728000,\t0.241738749070454890,\t0.241787265836834940,\t0.241835781998746810,\t0.241884297556069630,\t0.241932812508681320,\t\n0.241981326856460950,\t0.242029840599287280,\t0.242078353737039430,\t0.242126866269595260,\t0.242175378196833930,\t0.242223889518634160,\t0.242272400234875090,\t0.242320910345434600,\t\n0.242369419850191840,\t0.242417928749025490,\t0.242466437041814780,\t0.242514944728437540,\t0.242563451808772950,\t0.242611958282700160,\t0.242660464150097010,\t0.242708969410842750,\t\n0.242757474064816040,\t0.242805978111896080,\t0.242854481551960740,\t0.242902984384889190,\t0.242951486610560180,\t0.242999988228852880,\t0.243048489239645200,\t0.243096989642816290,\t\n0.243145489438244910,\t0.243193988625810240,\t0.243242487205390160,\t0.243290985176863840,\t0.243339482540110090,\t0.243387979295008050,\t0.243436475441435620,\t0.243484970979272020,\t\n0.243533465908396000,\t0.243581960228686720,\t0.243630453940022110,\t0.243678947042281380,\t0.243727439535343730,\t0.243775931419087020,\t0.243824422693390500,\t0.243872913358132910,\t\n0.243921403413193490,\t0.243969892858450110,\t0.244018381693781980,\t0.244066869919067920,\t0.244115357534187120,\t0.244163844539017490,\t0.244212330933438250,\t0.244260816717328190,\t\n0.244309301890566520,\t0.244357786453031130,\t0.244406270404601310,\t0.244454753745155800,\t0.244503236474573840,\t0.244551718592733360,\t0.244600200099513580,\t0.244648680994793750,\t\n0.244697161278451760,\t0.244745640950366880,\t0.244794120010417890,\t0.244842598458484020,\t0.244891076294443260,\t0.244939553518174790,\t0.244988030129557420,\t0.245036506128470420,\t\n0.245084981514791720,\t0.245133456288400580,\t0.245181930449175800,\t0.245230403996996610,\t0.245278876931740970,\t0.245327349253288170,\t0.245375820961516970,\t0.245424292056306640,\t\n0.245472762537535170,\t0.245521232405081810,\t0.245569701658825770,\t0.245618170298645050,\t0.245666638324418900,\t0.245715105736026170,\t0.245763572533346100,\t0.245812038716256680,\t\n0.245860504284637150,\t0.245908969238366360,\t0.245957433577323580,\t0.246005897301386780,\t0.246054360410435240,\t0.246102822904347790,\t0.246151284783003740,\t0.246199746046281030,\t\n0.246248206694058950,\t0.246296666726216360,\t0.246345126142632540,\t0.246393584943185470,\t0.246442043127754420,\t0.246490500696218280,\t0.246538957648456320,\t0.246587413984346530,\t\n0.246635869703768220,\t0.246684324806600630,\t0.246732779292721830,\t0.246781233162011090,\t0.246829686414347240,\t0.246878139049609620,\t0.246926591067676200,\t0.246975042468426330,\t\n0.247023493251738830,\t0.247071943417493060,\t0.247120392965566980,\t0.247168841895839900,\t0.247217290208190750,\t0.247265737902498780,\t0.247314184978642050,\t0.247362631436499860,\t\n0.247411077275951070,\t0.247459522496875060,\t0.247507967099149770,\t0.247556411082654580,\t0.247604854447268790,\t0.247653297192870440,\t0.247701739319338840,\t0.247750180826552900,\t\n0.247798621714391900,\t0.247847061982733960,\t0.247895501631458350,\t0.247943940660444010,\t0.247992379069570220,\t0.248040816858715040,\t0.248089254027757860,\t0.248137690576577500,\t\n0.248186126505053370,\t0.248234561813063500,\t0.248282996500487210,\t0.248331430567203440,\t0.248379864013091510,\t0.248428296838029500,\t0.248476729041896740,\t0.248525160624572610,\t\n0.248573591585935120,\t0.248622021925863660,\t0.248670451644237150,\t0.248718880740934960,\t0.248767309215835090,\t0.248815737068816990,\t0.248864164299759520,\t0.248912590908542090,\t\n0.248961016895042740,\t0.249009442259140850,\t0.249057867000715360,\t0.249106291119645630,\t0.249154714615809740,\t0.249203137489087070,\t0.249251559739356560,\t0.249299981366497560,\t\n0.249348402370388190,\t0.249396822750907830,\t0.249445242507935820,\t0.249493661641350280,\t0.249542080151030580,\t0.249590498036855680,\t0.249638915298704990,\t0.249687331936456560,\t\n0.249735747949989790,\t0.249784163339183680,\t0.249832578103917570,\t0.249880992244069590,\t0.249929405759519140,\t0.249977818650145150,\t0.250026230915827040,\t0.250074642556442960,\t\n0.250123053571872260,\t0.250171463961993910,\t0.250219873726687360,\t0.250268282865830690,\t0.250316691379303290,\t0.250365099266984190,\t0.250413506528752720,\t0.250461913164487130,\t\n0.250510319174066690,\t0.250558724557370880,\t0.250607129314277870,\t0.250655533444667070,\t0.250703936948417360,\t0.250752339825408290,\t0.250800742075517890,\t0.250849143698625650,\t\n0.250897544694610560,\t0.250945945063352050,\t0.250994344804728260,\t0.251042743918618580,\t0.251091142404902050,\t0.251139540263458080,\t0.251187937494164850,\t0.251236334096901770,\t\n0.251284730071547830,\t0.251333125417982530,\t0.251381520136084000,\t0.251429914225731630,\t0.251478307686804900,\t0.251526700519182020,\t0.251575092722742370,\t0.251623484297364970,\t\n0.251671875242929280,\t0.251720265559313480,\t0.251768655246397020,\t0.251817044304058930,\t0.251865432732178710,\t0.251913820530634380,\t0.251962207699305550,\t0.252010594238071210,\t\n0.252058980146810770,\t0.252107365425402520,\t0.252155750073725820,\t0.252204134091659700,\t0.252252517479083730,\t0.252300900235876040,\t0.252349282361916060,\t0.252397663857083340,\t\n0.252446044721256040,\t0.252494424954313570,\t0.252542804556135090,\t0.252591183526599980,\t0.252639561865586500,\t0.252687939572974140,\t0.252736316648641930,\t0.252784693092469370,\t\n0.252833068904334600,\t0.252881444084117170,\t0.252929818631696170,\t0.252978192546951030,\t0.253026565829759960,\t0.253074938480002510,\t0.253123310497557650,\t0.253171681882304990,\t\n0.253220052634122730,\t0.253268422752890300,\t0.253316792238486800,\t0.253365161090791770,\t0.253413529309683420,\t0.253461896895041230,\t0.253510263846744690,\t0.253558630164672120,\t\n0.253606995848702940,\t0.253655360898716260,\t0.253703725314591680,\t0.253752089096207280,\t0.253800452243442720,\t0.253848814756176990,\t0.253897176634289620,\t0.253945537877658940,\t\n0.253993898486164380,\t0.254042258459685090,\t0.254090617798100600,\t0.254138976501289080,\t0.254187334569130170,\t0.254235692001502920,\t0.254284048798286870,\t0.254332404959360210,\t\n0.254380760484602620,\t0.254429115373893510,\t0.254477469627111210,\t0.254525823244135200,\t0.254574176224844630,\t0.254622528569119100,\t0.254670880276836760,\t0.254719231347877270,\t\n0.254767581782119670,\t0.254815931579443600,\t0.254864280739727220,\t0.254912629262850130,\t0.254960977148691480,\t0.255009324397130810,\t0.255057671008046440,\t0.255106016981317850,\t\n0.255154362316824260,\t0.255202707014445140,\t0.255251051074058820,\t0.255299394495544950,\t0.255347737278782960,\t0.255396079423651220,\t0.255444420930029280,\t0.255492761797796230,\t\n0.255541102026831780,\t0.255589441617014130,\t0.255637780568222840,\t0.255686118880337150,\t0.255734456553236570,\t0.255782793586799400,\t0.255831129980905290,\t0.255879465735433300,\t\n0.255927800850263120,\t0.255976135325272970,\t0.256024469160342550,\t0.256072802355350900,\t0.256121134910177680,\t0.256169466824701210,\t0.256217798098801020,\t0.256266128732356820,\t\n0.256314458725246890,\t0.256362788077350750,\t0.256411116788547670,\t0.256459444858717240,\t0.256507772287737750,\t0.256556099075488820,\t0.256604425221849670,\t0.256652750726699850,\t\n0.256701075589917780,\t0.256749399811382950,\t0.256797723390974670,\t0.256846046328572500,\t0.256894368624054790,\t0.256942690277301160,\t0.256991011288190800,\t0.257039331656603360,\t\n0.257087651382417130,\t0.257135970465511790,\t0.257184288905766500,\t0.257232606703060920,\t0.257280923857273410,\t0.257329240368283580,\t0.257377556235971080,\t0.257425871460214280,\t\n0.257474186040892780,\t0.257522499977885840,\t0.257570813271073060,\t0.257619125920332810,\t0.257667437925544750,\t0.257715749286588140,\t0.257764060003342510,\t0.257812370075686360,\t\n0.257860679503499280,\t0.257908988286660480,\t0.257957296425049610,\t0.258005603918545100,\t0.258053910767026610,\t0.258102216970373330,\t0.258150522528464930,\t0.258198827441179780,\t\n0.258247131708397530,\t0.258295435329997940,\t0.258343738305859330,\t0.258392040635861350,\t0.258440342319883280,\t0.258488643357804750,\t0.258536943749504200,\t0.258585243494861340,\t\n0.258633542593755320,\t0.258681841046065900,\t0.258730138851671400,\t0.258778436010451580,\t0.258826732522285720,\t0.258875028387053400,\t0.258923323604633100,\t0.258971618174904490,\t\n0.259019912097746830,\t0.259068205373039820,\t0.259116498000661890,\t0.259164789980492690,\t0.259213081312411940,\t0.259261371996298060,\t0.259309662032030760,\t0.259357951419489310,\t\n0.259406240158553400,\t0.259454528249101420,\t0.259502815691013190,\t0.259551102484167910,\t0.259599388628445280,\t0.259647674123723750,\t0.259695958969883010,\t0.259744243166802390,\t\n0.259792526714361650,\t0.259840809612439110,\t0.259889091860914520,\t0.259937373459667280,\t0.259985654408576960,\t0.260033934707522120,\t0.260082214356382400,\t0.260130493355037180,\t\n0.260178771703366170,\t0.260227049401247750,\t0.260275326448561770,\t0.260323602845187850,\t0.260371878591004520,\t0.260420153685891500,\t0.260468428129728090,\t0.260516701922394010,\t\n0.260564975063767800,\t0.260613247553729110,\t0.260661519392157310,\t0.260709790578932120,\t0.260758061113932070,\t0.260806330997036820,\t0.260854600228125790,\t0.260902868807078640,\t\n0.260951136733773960,\t0.260999404008091350,\t0.261047670629910300,\t0.261095936599110460,\t0.261144201915570360,\t0.261192466579169780,\t0.261240730589788420,\t0.261288993947304870,\t\n0.261337256651598790,\t0.261385518702549560,\t0.261433780100036980,\t0.261482040843939500,\t0.261530300934136930,\t0.261578560370508640,\t0.261626819152934340,\t0.261675077281292580,\t\n0.261723334755463110,\t0.261771591575325310,\t0.261819847740758950,\t0.261868103251642560,\t0.261916358107855910,\t0.261964612309278370,\t0.262012865855789700,\t0.262061118747268450,\t\n0.262109370983594440,\t0.262157622564647420,\t0.262205873490305890,\t0.262254123760449650,\t0.262302373374958150,\t0.262350622333711150,\t0.262398870636587120,\t0.262447118283465950,\t\n0.262495365274226950,\t0.262543611608750000,\t0.262591857286913590,\t0.262640102308597520,\t0.262688346673681180,\t0.262736590382044440,\t0.262784833433565790,\t0.262833075828125040,\t\n0.262881317565601620,\t0.262929558645875310,\t0.262977799068824680,\t0.263026038834329570,\t0.263074277942269790,\t0.263122516392523880,\t0.263170754184971660,\t0.263218991319492560,\t\n0.263267227795966450,\t0.263315463614271830,\t0.263363698774288500,\t0.263411933275895960,\t0.263460167118974020,\t0.263508400303401220,\t0.263556632829057450,\t0.263604864695822060,\t\n0.263653095903574940,\t0.263701326452194680,\t0.263749556341561050,\t0.263797785571553590,\t0.263846014142052050,\t0.263894242052935100,\t0.263942469304082490,\t0.263990695895373770,\t\n0.264038921826688700,\t0.264087147097905870,\t0.264135371708905220,\t0.264183595659566510,\t0.264231818949768440,\t0.264280041579390780,\t0.264328263548313070,\t0.264376484856415070,\t\n0.264424705503575500,\t0.264472925489674100,\t0.264521144814590440,\t0.264569363478204310,\t0.264617581480394330,\t0.264665798821040410,\t0.264714015500021990,\t0.264762231517219000,\t\n0.264810446872509990,\t0.264858661565774810,\t0.264906875596893020,\t0.264955088965744490,\t0.265003301672207760,\t0.265051513716162810,\t0.265099725097489470,\t0.265147935816066440,\t\n0.265196145871773540,\t0.265244355264490250,\t0.265292563994096510,\t0.265340772060470960,\t0.265388979463493490,\t0.265437186203043520,\t0.265485392279001030,\t0.265533597691244680,\t\n0.265581802439654290,\t0.265630006524109400,\t0.265678209944489930,\t0.265726412700674490,\t0.265774614792543050,\t0.265822816219975060,\t0.265871016982850430,\t0.265919217081047880,\t\n0.265967416514447220,\t0.266015615282928500,\t0.266063813386370310,\t0.266112010824652580,\t0.266160207597654800,\t0.266208403705256950,\t0.266256599147337680,\t0.266304793923776870,\t\n0.266352988034454120,\t0.266401181479249290,\t0.266449374258041110,\t0.266497566370709480,\t0.266545757817133910,\t0.266593948597194430,\t0.266642138710769640,\t0.266690328157739460,\t\n0.266738516937983510,\t0.266786705051381630,\t0.266834892497812610,\t0.266883079277156320,\t0.266931265389292400,\t0.266979450834100680,\t0.267027635611459920,\t0.267075819721250110,\t\n0.267124003163351110,\t0.267172185937641750,\t0.267220368044001840,\t0.267268549482311100,\t0.267316730252449340,\t0.267364910354295380,\t0.267413089787729100,\t0.267461268552630140,\t\n0.267509446648878440,\t0.267557624076352640,\t0.267605800834932790,\t0.267653976924498490,\t0.267702152344929610,\t0.267750327096104970,\t0.267798501177904490,\t0.267846674590207780,\t\n0.267894847332894810,\t0.267943019405844250,\t0.267991190808936190,\t0.268039361542050550,\t0.268087531605066100,\t0.268135700997862820,\t0.268183869720320270,\t0.268232037772318470,\t\n0.268280205153736180,\t0.268328371864453350,\t0.268376537904349620,\t0.268424703273304920,\t0.268472867971198070,\t0.268521031997909050,\t0.268569195353317470,\t0.268617358037303300,\t\n0.268665520049745310,\t0.268713681390523540,\t0.268761842059517530,\t0.268810002056607380,\t0.268858161381671790,\t0.268906320034590750,\t0.268954478015244410,\t0.269002635323511430,\t\n0.269050791959271840,\t0.269098947922405240,\t0.269147103212791730,\t0.269195257830310060,\t0.269243411774840240,\t0.269291565046261840,\t0.269339717644455020,\t0.269387869569298440,\t\n0.269436020820672200,\t0.269484171398455870,\t0.269532321302529580,\t0.269580470532772070,\t0.269628619089063330,\t0.269676766971283120,\t0.269724914179311330,\t0.269773060713026870,\t\n0.269821206572309790,\t0.269869351757040080,\t0.269917496267096600,\t0.269965640102359350,\t0.270013783262707970,\t0.270061925748022620,\t0.270110067558182010,\t0.270158208693066230,\t\n0.270206349152554930,\t0.270254488936528150,\t0.270302628044864770,\t0.270350766477444770,\t0.270398904234147920,\t0.270447041314854200,\t0.270495177719442430,\t0.270543313447792750,\t\n0.270591448499784780,\t0.270639582875298600,\t0.270687716574213030,\t0.270735849596408170,\t0.270783981941763730,\t0.270832113610159690,\t0.270880244601474970,\t0.270928374915589690,\t\n0.270976504552383870,\t0.271024633511736330,\t0.271072761793527240,\t0.271120889397636230,\t0.271169016323943410,\t0.271217142572327650,\t0.271265268142668990,\t0.271313393034847190,\t\n0.271361517248742360,\t0.271409640784233300,\t0.271457763641200110,\t0.271505885819522510,\t0.271554007319080640,\t0.271602128139753320,\t0.271650248281420700,\t0.271698367743962440,\t\n0.271746486527258690,\t0.271794604631188260,\t0.271842722055631370,\t0.271890838800468100,\t0.271938954865577290,\t0.271987070250839070,\t0.272035184956133210,\t0.272083298981339820,\t\n0.272131412326337750,\t0.272179524991007120,\t0.272227636975227730,\t0.272275748278879630,\t0.272323858901841740,\t0.272371968843994230,\t0.272420078105216730,\t0.272468186685389520,\t\n0.272516294584391420,\t0.272564401802102560,\t0.272612508338402730,\t0.272660614193172000,\t0.272708719366289320,\t0.272756823857634890,\t0.272804927667088800,\t0.272853030794529940,\t\n0.272901133239838500,\t0.272949235002894250,\t0.272997336083577350,\t0.273045436481766710,\t0.273093536197342450,\t0.273141635230184310,\t0.273189733580172570,\t0.273237831247186040,\t\n0.273285928231104920,\t0.273334024531808990,\t0.273382120149178400,\t0.273430215083092120,\t0.273478309333430310,\t0.273526402900072680,\t0.273574495782899500,\t0.273622587981789680,\t\n0.273670679496623380,\t0.273718770327280370,\t0.273766860473640850,\t0.273814949935583750,\t0.273863038712989280,\t0.273911126805737650,\t0.273959214213707780,\t0.274007300936779830,\t\n0.274055386974833670,\t0.274103472327749450,\t0.274151556995406160,\t0.274199640977683960,\t0.274247724274462650,\t0.274295806885622440,\t0.274343888811042270,\t0.274391970050602450,\t\n0.274440050604182640,\t0.274488130471663150,\t0.274536209652922910,\t0.274584288147842190,\t0.274632365956300690,\t0.274680443078178740,\t0.274728519513355200,\t0.274776595261710390,\t\n0.274824670323124580,\t0.274872744697476580,\t0.274920818384646770,\t0.274968891384514860,\t0.275016963696961210,\t0.275065035321864710,\t0.275113106259105620,\t0.275161176508563750,\t\n0.275209246070119370,\t0.275257314943651410,\t0.275305383129040240,\t0.275353450626165560,\t0.275401517434907710,\t0.275449583555145590,\t0.275497648986759550,\t0.275545713729629380,\t\n0.275593777783635360,\t0.275641841148656470,\t0.275689903824572980,\t0.275737965811265140,\t0.275786027108612000,\t0.275834087716493760,\t0.275882147634790300,\t0.275930206863381880,\t\n0.275978265402147540,\t0.276026323250967540,\t0.276074380409721710,\t0.276122436878290360,\t0.276170492656552520,\t0.276218547744388420,\t0.276266602141677970,\t0.276314655848301450,\t\n0.276362708864137830,\t0.276410761189067430,\t0.276458812822970190,\t0.276506863765726310,\t0.276554914017214830,\t0.276602963577316060,\t0.276651012445910340,\t0.276699060622876640,\t\n0.276747108108095270,\t0.276795154901446180,\t0.276843201002809570,\t0.276891246412064580,\t0.276939291129091440,\t0.276987335153770110,\t0.277035378485980870,\t0.277083421125602750,\t\n0.277131463072516020,\t0.277179504326600710,\t0.277227544887737040,\t0.277275584755804050,\t0.277323623930682110,\t0.277371662412251140,\t0.277419700200391420,\t0.277467737294982030,\t\n0.277515773695903300,\t0.277563809403035100,\t0.277611844416257860,\t0.277659878735450560,\t0.277707912360493530,\t0.277755945291267180,\t0.277803977527650510,\t0.277852009069523950,\t\n0.277900039916767320,\t0.277948070069261030,\t0.277996099526884140,\t0.278044128289517020,\t0.278092156357039600,\t0.278140183729332140,\t0.278188210406273840,\t0.278236236387745030,\t\n0.278284261673625580,\t0.278332286263795970,\t0.278380310158135140,\t0.278428333356523620,\t0.278476355858841170,\t0.278524377664968350,\t0.278572398774784070,\t0.278620419188168880,\t\n0.278668438905003040,\t0.278716457925165640,\t0.278764476248537120,\t0.278812493874997400,\t0.278860510804426860,\t0.278908527036704660,\t0.278956542571711100,\t0.279004557409326230,\t\n0.279052571549430360,\t0.279100584991902660,\t0.279148597736623480,\t0.279196609783472770,\t0.279244621132331010,\t0.279292631783077280,\t0.279340641735591920,\t0.279388650989755020,\t\n0.279436659545446890,\t0.279484667402546630,\t0.279532674560934780,\t0.279580681020491660,\t0.279628686781096370,\t0.279676691842629390,\t0.279724696204970650,\t0.279772699868000630,\t\n0.279820702831598430,\t0.279868705095644490,\t0.279916706660018780,\t0.279964707524601670,\t0.280012707689272440,\t0.280060707153911400,\t0.280108705918398590,\t0.280156703982614500,\t\n0.280204701346438160,\t0.280252698009750060,\t0.280300693972430240,\t0.280348689234359130,\t0.280396683795415880,\t0.280444677655480870,\t0.280492670814434190,\t0.280540663272156270,\t\n0.280588655028526260,\t0.280636646083424590,\t0.280684636436731750,\t0.280732626088326890,\t0.280780615038090490,\t0.280828603285902530,\t0.280876590831643460,\t0.280924577675192520,\t\n0.280972563816430150,\t0.281020549255236340,\t0.281068533991491560,\t0.281116518025075090,\t0.281164501355867290,\t0.281212483983748210,\t0.281260465908598380,\t0.281308447130296960,\t\n0.281356427648724430,\t0.281404407463760780,\t0.281452386575286590,\t0.281500364983180980,\t0.281548342687324480,\t0.281596319687597520,\t0.281644295983879360,\t0.281692271576050480,\t\n0.281740246463990870,\t0.281788220647581080,\t0.281836194126700360,\t0.281884166901229080,\t0.281932138971047460,\t0.281980110336035870,\t0.282028080996073570,\t0.282076050951041100,\t\n0.282124020200818500,\t0.282171988745286260,\t0.282219956584323640,\t0.282267923717811120,\t0.282315890145628800,\t0.282363855867657170,\t0.282411820883775420,\t0.282459785193864220,\t\n0.282507748797803940,\t0.282555711695473830,\t0.282603673886754450,\t0.282651635371525930,\t0.282699596149668720,\t0.282747556221062070,\t0.282795515585586580,\t0.282843474243122280,\t\n0.282891432193549670,\t0.282939389436748120,\t0.282987345972598060,\t0.283035301800979690,\t0.283083256921773440,\t0.283131211334858630,\t0.283179165040115810,\t0.283227118037425060,\t\n0.283275070326666930,\t0.283323021907720740,\t0.283370972780466970,\t0.283418922944785770,\t0.283466872400557680,\t0.283514821147661970,\t0.283562769185979220,\t0.283610716515389990,\t\n0.283658663135773540,\t0.283706609047010390,\t0.283754554248980770,\t0.283802498741565160,\t0.283850442524642920,\t0.283898385598094550,\t0.283946327961800190,\t0.283994269615640450,\t\n0.284042210559494630,\t0.284090150793243290,\t0.284138090316766510,\t0.284186029129945010,\t0.284233967232657980,\t0.284281904624786030,\t0.284329841306209310,\t0.284377777276808410,\t\n0.284425712536462650,\t0.284473647085052570,\t0.284521580922458880,\t0.284569514048560730,\t0.284617446463238830,\t0.284665378166373330,\t0.284713309157844820,\t0.284761239437532570,\t\n0.284809169005317280,\t0.284857097861078990,\t0.284905026004698410,\t0.284952953436054870,\t0.285000880155028950,\t0.285048806161500800,\t0.285096731455351030,\t0.285144656036459050,\t\n0.285192579904705420,\t0.285240503059970340,\t0.285288425502134460,\t0.285336347231077040,\t0.285384268246678790,\t0.285432188548820240,\t0.285480108137380840,\t0.285528027012241170,\t\n0.285575945173281440,\t0.285623862620382250,\t0.285671779353422970,\t0.285719695372284250,\t0.285767610676846310,\t0.285815525266989780,\t0.285863439142593990,\t0.285911352303539590,\t\n0.285959264749706840,\t0.286007176480976290,\t0.286055087497227470,\t0.286102997798340860,\t0.286150907384196740,\t0.286198816254675860,\t0.286246724409657430,\t0.286294631849022260,\t\n0.286342538572650910,\t0.286390444580422730,\t0.286438349872218500,\t0.286486254447918360,\t0.286534158307403090,\t0.286582061450551930,\t0.286629963877245600,\t0.286677865587364410,\t\n0.286725766580788970,\t0.286773666857398690,\t0.286821566417074180,\t0.286869465259695810,\t0.286917363385144230,\t0.286965260793298760,\t0.287013157484040160,\t0.287061053457248690,\t\n0.287108948712805010,\t0.287156843250588490,\t0.287204737070479890,\t0.287252630172359470,\t0.287300522556107830,\t0.287348414221604510,\t0.287396305168730160,\t0.287444195397365430,\t\n0.287492084907389810,\t0.287539973698684000,\t0.287587861771128270,\t0.287635749124603270,\t0.287683635758988480,\t0.287731521674164600,\t0.287779406870011910,\t0.287827291346411160,\t\n0.287875175103241730,\t0.287923058140384380,\t0.287970940457719370,\t0.288018822055127410,\t0.288066702932487980,\t0.288114583089681800,\t0.288162462526589170,\t0.288210341243090810,\t\n0.288258219239066190,\t0.288306096514395980,\t0.288353973068960990,\t0.288401848902640650,\t0.288449724015315660,\t0.288497598406866400,\t0.288545472077173510,\t0.288593345026116550,\t\n0.288641217253576220,\t0.288689088759432830,\t0.288736959543567150,\t0.288784829605858660,\t0.288832698946188130,\t0.288880567564435810,\t0.288928435460482470,\t0.288976302634207650,\t\n0.289024169085492060,\t0.289072034814216060,\t0.289119899820260430,\t0.289167764103504590,\t0.289215627663829360,\t0.289263490501115440,\t0.289311352615242380,\t0.289359214006090990,\t\n0.289407074673541490,\t0.289454934617474790,\t0.289502793837770330,\t0.289550652334308820,\t0.289598510106970740,\t0.289646367155636800,\t0.289694223480186530,\t0.289742079080500650,\t\n0.289789933956459630,\t0.289837788107944140,\t0.289885641534833820,\t0.289933494237009370,\t0.289981346214351180,\t0.290029197466740050,\t0.290077047994055480,\t0.290124897796178340,\t\n0.290172746872988880,\t0.290220595224368050,\t0.290268442850195260,\t0.290316289750351400,\t0.290364135924717210,\t0.290411981373172310,\t0.290459826095597400,\t0.290507670091872950,\t\n0.290555513361879740,\t0.290603355905497300,\t0.290651197722606500,\t0.290699038813087730,\t0.290746879176821740,\t0.290794718813688120,\t0.290842557723567760,\t0.290890395906340970,\t\n0.290938233361888620,\t0.290986070090090250,\t0.291033906090826740,\t0.291081741363978410,\t0.291129575909426170,\t0.291177409727049590,\t0.291225242816729510,\t0.291273075178346720,\t\n0.291320906811780800,\t0.291368737716912630,\t0.291416567893622580,\t0.291464397341791580,\t0.291512226061299120,\t0.291560054052026120,\t0.291607881313853010,\t0.291655707846660620,\t\n0.291703533650328470,\t0.291751358724737560,\t0.291799183069768210,\t0.291847006685301340,\t0.291894829571216540,\t0.291942651727394640,\t0.291990473153716120,\t0.292038293850061860,\t\n0.292086113816311440,\t0.292133933052345700,\t0.292181751558045600,\t0.292229569333290640,\t0.292277386377961800,\t0.292325202691939510,\t0.292373018275104590,\t0.292420833127336740,\t\n0.292468647248516790,\t0.292516460638525210,\t0.292564273297242940,\t0.292612085224549510,\t0.292659896420325920,\t0.292707706884452520,\t0.292755516616810320,\t0.292803325617278950,\t\n0.292851133885739190,\t0.292898941422071620,\t0.292946748226157130,\t0.292994554297875350,\t0.293042359637107170,\t0.293090164243733520,\t0.293137968117634040,\t0.293185771258689660,\t\n0.293233573666780820,\t0.293281375341788500,\t0.293329176283592290,\t0.293376976492073120,\t0.293424775967111530,\t0.293472574708588450,\t0.293520372716383480,\t0.293568169990377600,\t\n0.293615966530451300,\t0.293663762336485450,\t0.293711557408359860,\t0.293759351745955300,\t0.293807145349152370,\t0.293854938217832040,\t0.293902730351873920,\t0.293950521751158990,\t\n0.293998312415567730,\t0.294046102344981130,\t0.294093891539278840,\t0.294141679998341790,\t0.294189467722051010,\t0.294237254710286110,\t0.294285040962928120,\t0.294332826479857480,\t\n0.294380611260955220,\t0.294428395306100990,\t0.294476178615175830,\t0.294523961188060180,\t0.294571743024635010,\t0.294619524124780100,\t0.294667304488376410,\t0.294715084115304390,\t\n0.294762863005445130,\t0.294810641158678280,\t0.294858418574884820,\t0.294906195253945350,\t0.294953971195740790,\t0.295001746400150870,\t0.295049520867056550,\t0.295097294596338930,\t\n0.295145067587877620,\t0.295192839841553590,\t0.295240611357247500,\t0.295288382134840320,\t0.295336152174211770,\t0.295383921475242780,\t0.295431690037814050,\t0.295479457861806460,\t\n0.295527224947099880,\t0.295574991293575170,\t0.295622756901113000,\t0.295670521769594350,\t0.295718285898899040,\t0.295766049288907930,\t0.295813811939501740,\t0.295861573850561440,\t\n0.295909335021966760,\t0.295957095453598770,\t0.296004855145338470,\t0.296052614097065570,\t0.296100372308661150,\t0.296148129780005820,\t0.296195886510980610,\t0.296243642501465180,\t\n0.296291397751340720,\t0.296339152260487740,\t0.296386906028787310,\t0.296434659056119150,\t0.296482411342364360,\t0.296530162887403580,\t0.296577913691117800,\t0.296625663753386780,\t\n0.296673413074091620,\t0.296721161653112960,\t0.296768909490331800,\t0.296816656585627950,\t0.296864402938882390,\t0.296912148549975890,\t0.296959893418789420,\t0.297007637545202820,\t\n0.297055380929097110,\t0.297103123570353400,\t0.297150865468851390,\t0.297198606624472280,\t0.297246347037096630,\t0.297294086706605510,\t0.297341825632878750,\t0.297389563815797450,\t\n0.297437301255242260,\t0.297485037951094210,\t0.297532773903233180,\t0.297580509111540160,\t0.297628243575895900,\t0.297675977296181450,\t0.297723710272276620,\t0.297771442504062570,\t\n0.297819173991419880,\t0.297866904734229660,\t0.297914634732371730,\t0.297962363985727290,\t0.298010092494177310,\t0.298057820257601690,\t0.298105547275881510,\t0.298153273548897480,\t\n0.298200999076530690,\t0.298248723858660970,\t0.298296447895169400,\t0.298344171185936760,\t0.298391893730844130,\t0.298439615529771270,\t0.298487336582599460,\t0.298535056889209230,\t\n0.298582776449481830,\t0.298630495263297050,\t0.298678213330536070,\t0.298725930651079500,\t0.298773647224808540,\t0.298821363051603060,\t0.298869078131344170,\t0.298916792463913010,\t\n0.298964506049189390,\t0.299012218887054590,\t0.299059930977389200,\t0.299107642320074420,\t0.299155352914990070,\t0.299203062762017360,\t0.299250771861036990,\t0.299298480211930170,\t\n0.299346187814576670,\t0.299393894668857690,\t0.299441600774653980,\t0.299489306131846710,\t0.299537010740315750,\t0.299584714599942290,\t0.299632417710607000,\t0.299680120072191140,\t\n0.299727821684574510,\t0.299775522547638340,\t0.299823222661263770,\t0.299870922025330720,\t0.299918620639720410,\t0.299966318504313490,\t0.300014015618991210,\t0.300061711983633520,\t\n0.300109407598121490,\t0.300157102462335960,\t0.300204796576158120,\t0.300252489939467850,\t0.300300182552146360,\t0.300347874414074400,\t0.300395565525133190,\t0.300443255885202600,\t\n0.300490945494163940,\t0.300538634351897870,\t0.300586322458285650,\t0.300634009813207200,\t0.300681696416543740,\t0.300729382268176030,\t0.300777067367985260,\t0.300824751715851440,\t\n0.300872435311655690,\t0.300920118155279360,\t0.300967800246602250,\t0.301015481585505620,\t0.301063162171870350,\t0.301110842005577530,\t0.301158521086507200,\t0.301206199414540630,\t\n0.301253876989558520,\t0.301301553811442140,\t0.301349229880071400,\t0.301396905195327640,\t0.301444579757091600,\t0.301492253565244560,\t0.301539926619666440,\t0.301587598920238510,\t\n0.301635270466841580,\t0.301682941259356910,\t0.301730611297664490,\t0.301778280581645460,\t0.301825949111181210,\t0.301873616886151660,\t0.301921283906438080,\t0.301968950171921270,\t\n0.302016615682482500,\t0.302064280438001760,\t0.302111944438360370,\t0.302159607683439080,\t0.302207270173119210,\t0.302254931907280700,\t0.302302592885804910,\t0.302350253108572610,\t\n0.302397912575465110,\t0.302445571286362400,\t0.302493229241145800,\t0.302540886439696070,\t0.302588542881894570,\t0.302636198567621310,\t0.302683853496757530,\t0.302731507669184550,\t\n0.302779161084782370,\t0.302826813743432290,\t0.302874465645015130,\t0.302922116789412330,\t0.302969767176503760,\t0.303017416806170730,\t0.303065065678294220,\t0.303112713792755450,\t\n0.303160361149434450,\t0.303208007748212600,\t0.303255653588970660,\t0.303303298671590060,\t0.303350942995950780,\t0.303398586561934140,\t0.303446229369421060,\t0.303493871418292820,\t\n0.303541512708429440,\t0.303589153239712310,\t0.303636793012022290,\t0.303684432025240700,\t0.303732070279247650,\t0.303779707773924380,\t0.303827344509152280,\t0.303874980484811370,\t\n0.303922615700783050,\t0.303970250156948170,\t0.304017883853188060,\t0.304065516789382870,\t0.304113148965413860,\t0.304160780381162010,\t0.304208411036508590,\t0.304256040931333740,\t\n0.304303670065518780,\t0.304351298438944650,\t0.304398926051492660,\t0.304446552903043010,\t0.304494178993476920,\t0.304541804322675410,\t0.304589428890519760,\t0.304637052696890180,\t\n0.304684675741667970,\t0.304732298024734450,\t0.304779919545969780,\t0.304827540305255270,\t0.304875160302471970,\t0.304922779537501190,\t0.304970398010223020,\t0.305018015720518840,\t\n0.305065632668269640,\t0.305113248853356780,\t0.305160864275660360,\t0.305208478935061810,\t0.305256092831442060,\t0.305303705964682480,\t0.305351318334663220,\t0.305398929941265660,\t\n0.305446540784370780,\t0.305494150863859950,\t0.305541760179613320,\t0.305589368731512320,\t0.305636976519438330,\t0.305684583543271440,\t0.305732189802893130,\t0.305779795298184330,\t\n0.305827400029026420,\t0.305875003995299650,\t0.305922607196885350,\t0.305970209633664500,\t0.306017811305518580,\t0.306065412212327690,\t0.306113012353973310,\t0.306160611730336370,\t\n0.306208210341298300,\t0.306255808186739360,\t0.306303405266540820,\t0.306351001580583810,\t0.306398597128749730,\t0.306446191910918650,\t0.306493785926972180,\t0.306541379176791640,\t\n0.306588971660257230,\t0.306636563377250370,\t0.306684154327652110,\t0.306731744511343940,\t0.306779333928205940,\t0.306826922578119610,\t0.306874510460965980,\t0.306922097576626470,\t\n0.306969683924981310,\t0.307017269505911960,\t0.307064854319299420,\t0.307112438365025160,\t0.307160021642969350,\t0.307207604153013570,\t0.307255185895038700,\t0.307302766868926320,\t\n0.307350347074556610,\t0.307397926511811030,\t0.307445505180570620,\t0.307493083080716880,\t0.307540660212130000,\t0.307588236574691480,\t0.307635812168282790,\t0.307683386992784190,\t\n0.307730961048077070,\t0.307778534334042560,\t0.307826106850562110,\t0.307873678597516020,\t0.307921249574785670,\t0.307968819782252270,\t0.308016389219797180,\t0.308063957887300730,\t\n0.308111525784644400,\t0.308159092911709230,\t0.308206659268376760,\t0.308254224854527190,\t0.308301789670042070,\t0.308349353714802490,\t0.308396916988689930,\t0.308444479491584710,\t\n0.308492041223368210,\t0.308539602183922070,\t0.308587162373126560,\t0.308634721790863040,\t0.308682280437012790,\t0.308729838311457230,\t0.308777395414076670,\t0.308824951744752610,\t\n0.308872507303366130,\t0.308920062089798890,\t0.308967616103930980,\t0.309015169345644100,\t0.309062721814819250,\t0.309110273511338070,\t0.309157824435080720,\t0.309205374585928890,\t\n0.309252923963763580,\t0.309300472568466380,\t0.309348020399917540,\t0.309395567457998680,\t0.309443113742591370,\t0.309490659253575770,\t0.309538203990833590,\t0.309585747954245870,\t\n0.309633291143694200,\t0.309680833559058900,\t0.309728375200221510,\t0.309775916067063170,\t0.309823456159465490,\t0.309870995477308730,\t0.309918534020474480,\t0.309966071788843890,\t\n0.310013608782298500,\t0.310061145000718740,\t0.310108680443986100,\t0.310156215111981710,\t0.310203749004587250,\t0.310251282121683010,\t0.310298814463150550,\t0.310346346028871010,\t\n0.310393876818726100,\t0.310441406832596020,\t0.310488936070362430,\t0.310536464531906970,\t0.310583992217109860,\t0.310631519125852850,\t0.310679045258016980,\t0.310726570613483910,\t\n0.310774095192134060,\t0.310821618993848910,\t0.310869142018509740,\t0.310916664265998120,\t0.310964185736194390,\t0.311011706428980240,\t0.311059226344236830,\t0.311106745481845750,\t\n0.311154263841687430,\t0.311201781423643410,\t0.311249298227594890,\t0.311296814253423650,\t0.311344329501009880,\t0.311391843970235280,\t0.311439357660981580,\t0.311486870573128960,\t\n0.311534382706559200,\t0.311581894061153500,\t0.311629404636793510,\t0.311676914433359540,\t0.311724423450733310,\t0.311771931688796020,\t0.311819439147429270,\t0.311866945826513590,\t\n0.311914451725930460,\t0.311961956845561270,\t0.312009461185287550,\t0.312056964744989780,\t0.312104467524549620,\t0.312151969523848270,\t0.312199470742767440,\t0.312246971181187490,\t\n0.312294470838990090,\t0.312341969716056990,\t0.312389467812268510,\t0.312436965127506350,\t0.312484461661651840,\t0.312531957414586500,\t0.312579452386190890,\t0.312626946576346710,\t\n0.312674439984935100,\t0.312721932611837780,\t0.312769424456935290,\t0.312816915520109210,\t0.312864405801240810,\t0.312911895300211850,\t0.312959384016902710,\t0.313006871951195090,\t\n0.313054359102970300,\t0.313101845472110060,\t0.313149331058494800,\t0.313196815862006210,\t0.313244299882525950,\t0.313291783119934550,\t0.313339265574113680,\t0.313386747244944700,\t\n0.313434228132309200,\t0.313481708236087730,\t0.313529187556161990,\t0.313576666092413300,\t0.313624143844723370,\t0.313671620812972620,\t0.313719096997042870,\t0.313766572396815320,\t\n0.313814047012171800,\t0.313861520842992740,\t0.313908993889159880,\t0.313956466150554560,\t0.314003937627058420,\t0.314051408318552050,\t0.314098878224917220,\t0.314146347346035140,\t\n0.314193815681787610,\t0.314241283232055080,\t0.314288749996719410,\t0.314336215975662250,\t0.314383681168764140,\t0.314431145575906850,\t0.314478609196971680,\t0.314526072031840410,\t\n0.314573534080393510,\t0.314620995342512810,\t0.314668455818079620,\t0.314715915506975700,\t0.314763374409081590,\t0.314810832524278990,\t0.314858289852449350,\t0.314905746393474410,\t\n0.314953202147234660,\t0.315000657113611910,\t0.315048111292487550,\t0.315095564683743280,\t0.315143017287259740,\t0.315190469102918590,\t0.315237920130601760,\t0.315285370370189670,\t\n0.315332819821564140,\t0.315380268484606600,\t0.315427716359198750,\t0.315475163445221250,\t0.315522609742555800,\t0.315570055251083840,\t0.315617499970687170,\t0.315664943901246330,\t\n0.315712387042643150,\t0.315759829394758940,\t0.315807270957475630,\t0.315854711730673700,\t0.315902151714235020,\t0.315949590908040920,\t0.315997029311973270,\t0.316044466925912650,\t\n0.316091903749740830,\t0.316139339783339690,\t0.316186775026589820,\t0.316234209479372970,\t0.316281643141570590,\t0.316329076013064540,\t0.316376508093735350,\t0.316423939383464910,\t\n0.316471369882134650,\t0.316518799589626370,\t0.316566228505820670,\t0.316613656630599370,\t0.316661083963843960,\t0.316708510505436250,\t0.316755936255256830,\t0.316803361213187580,\t\n0.316850785379109930,\t0.316898208752905750,\t0.316945631334455640,\t0.316993053123641400,\t0.317040474120344530,\t0.317087894324446950,\t0.317135313735829210,\t0.317182732354373110,\t\n0.317230150179960650,\t0.317277567212472410,\t0.317324983451790220,\t0.317372398897795620,\t0.317419813550370410,\t0.317467227409395260,\t0.317514640474751970,\t0.317562052746322150,\t\n0.317609464223987610,\t0.317656874907629010,\t0.317704284797128200,\t0.317751693892366680,\t0.317799102193226320,\t0.317846509699587830,\t0.317893916411333020,\t0.317941322328343430,\t\n0.317988727450501000,\t0.318036131777686300,\t0.318083535309781230,\t0.318130938046667810,\t0.318178339988226590,\t0.318225741134339490,\t0.318273141484888110,\t0.318320541039754270,\t\n0.318367939798818610,\t0.318415337761963180,\t0.318462734929069350,\t0.318510131300019090,\t0.318557526874693130,\t0.318604921652973330,\t0.318652315634741220,\t0.318699708819878750,\t\n0.318747101208266600,\t0.318794492799786670,\t0.318841883594320530,\t0.318889273591750070,\t0.318936662791956040,\t0.318984051194820320,\t0.319031438800224940,\t0.319078825608050510,\t\n0.319126211618179000,\t0.319173596830492010,\t0.319220981244871420,\t0.319268364861197970,\t0.319315747679353610,\t0.319363129699219870,\t0.319410510920678680,\t0.319457891343610860,\t\n0.319505270967898270,\t0.319552649793422520,\t0.319600027820065580,\t0.319647405047708170,\t0.319694781476232200,\t0.319742157105519290,\t0.319789531935451400,\t0.319836905965909250,\t\n0.319884279196774870,\t0.319931651627930190,\t0.319979023259255980,\t0.320026394090634210,\t0.320073764121946440,\t0.320121133353074680,\t0.320168501783899660,\t0.320215869414303410,\t\n0.320263236244167470,\t0.320310602273373880,\t0.320357967501803340,\t0.320405331929337900,\t0.320452695555859090,\t0.320500058381249010,\t0.320547420405388360,\t0.320594781628159130,\t\n0.320642142049442970,\t0.320689501669121860,\t0.320736860487076560,\t0.320784218503189170,\t0.320831575717341170,\t0.320878932129414710,\t0.320926287739290440,\t0.320973642546850460,\t\n0.321020996551976800,\t0.321068349754550290,\t0.321115702154452840,\t0.321163053751566120,\t0.321210404545772210,\t0.321257754536951880,\t0.321305103724987160,\t0.321352452109759710,\t\n0.321399799691151510,\t0.321447146469043380,\t0.321494492443317400,\t0.321541837613855190,\t0.321589181980538820,\t0.321636525543249060,\t0.321683868301868010,\t0.321731210256277270,\t\n0.321778551406358910,\t0.321825891751993780,\t0.321873231293063890,\t0.321920570029451350,\t0.321967907961036970,\t0.322015245087702850,\t0.322062581409330580,\t0.322109916925802320,\t\n0.322157251636998820,\t0.322204585542802180,\t0.322251918643094050,\t0.322299250937756580,\t0.322346582426670580,\t0.322393913109718100,\t0.322441242986780840,\t0.322488572057740900,\t\n0.322535900322479090,\t0.322583227780877560,\t0.322630554432817910,\t0.322677880278182340,\t0.322725205316851670,\t0.322772529548707940,\t0.322819852973633300,\t0.322867175591508630,\t\n0.322914497402216010,\t0.322961818405637200,\t0.323009138601654200,\t0.323056457990147930,\t0.323103776571000530,\t0.323151094344093730,\t0.323198411309309600,\t0.323245727466528960,\t\n0.323293042815634090,\t0.323340357356506570,\t0.323387671089028550,\t0.323434984013080960,\t0.323482296128545900,\t0.323529607435305120,\t0.323576917933240730,\t0.323624227622233640,\t\n0.323671536502165960,\t0.323718844572919440,\t0.323766151834376240,\t0.323813458286417220,\t0.323860763928924600,\t0.323908068761780410,\t0.323955372784865690,\t0.324002675998062540,\t\n0.324049978401252660,\t0.324097279994318310,\t0.324144580777140310,\t0.324191880749600870,\t0.324239179911581690,\t0.324286478262965030,\t0.324333775803631710,\t0.324381072533463990,\t\n0.324428368452343570,\t0.324475663560152620,\t0.324522957856772150,\t0.324570251342084230,\t0.324617544015970700,\t0.324664835878313740,\t0.324712126928994320,\t0.324759417167894530,\t\n0.324806706594896580,\t0.324853995209881510,\t0.324901283012731410,\t0.324948570003328110,\t0.324995856181553850,\t0.325043141547289470,\t0.325090426100417270,\t0.325137709840818970,\t\n0.325184992768376870,\t0.325232274882971790,\t0.325279556184486120,\t0.325326836672801490,\t0.325374116347800220,\t0.325421395209363200,\t0.325468673257372720,\t0.325515950491710560,\t\n0.325563226912258970,\t0.325610502518898840,\t0.325657777311512460,\t0.325705051289982120,\t0.325752324454188670,\t0.325799596804014440,\t0.325846868339341180,\t0.325894139060051210,\t\n0.325941408966025470,\t0.325988678057146150,\t0.326035946333295190,\t0.326083213794354790,\t0.326130480440205930,\t0.326177746270730870,\t0.326225011285811380,\t0.326272275485329890,\t\n0.326319538869167200,\t0.326366801437205700,\t0.326414063189327200,\t0.326461324125413950,\t0.326508584245347010,\t0.326555843549008570,\t0.326603102036280960,\t0.326650359707045150,\t\n0.326697616561183460,\t0.326744872598577710,\t0.326792127819110210,\t0.326839382222661960,\t0.326886635809115260,\t0.326933888578351980,\t0.326981140530254400,\t0.327028391664703540,\t\n0.327075641981581730,\t0.327122891480770780,\t0.327170140162153010,\t0.327217388025609510,\t0.327264635071022550,\t0.327311881298273930,\t0.327359126707246100,\t0.327406371297820020,\t\n0.327453615069877970,\t0.327500858023301920,\t0.327548100157974140,\t0.327595341473775670,\t0.327642581970588880,\t0.327689821648296020,\t0.327737060506778200,\t0.327784298545917730,\t\n0.327831535765596540,\t0.327878772165696890,\t0.327926007746099920,\t0.327973242506687910,\t0.328020476447342780,\t0.328067709567946900,\t0.328114941868381360,\t0.328162173348528430,\t\n0.328209404008270030,\t0.328256633847488600,\t0.328303862866065170,\t0.328351091063882050,\t0.328398318440821180,\t0.328445544996764980,\t0.328492770731594500,\t0.328539995645192040,\t\n0.328587219737440040,\t0.328634443008219590,\t0.328681665457413010,\t0.328728887084902280,\t0.328776107890569770,\t0.328823327874296520,\t0.328870547035965020,\t0.328917765375457080,\t\n0.328964982892655190,\t0.329012199587440380,\t0.329059415459695140,\t0.329106630509301330,\t0.329153844736141340,\t0.329201058140096310,\t0.329248270721048670,\t0.329295482478880350,\t\n0.329342693413473770,\t0.329389903524709980,\t0.329437112812471460,\t0.329484321276640570,\t0.329531528917098470,\t0.329578735733727530,\t0.329625941726409740,\t0.329673146895027580,\t\n0.329720351239462080,\t0.329767554759595680,\t0.329814757455310470,\t0.329861959326488710,\t0.329909160373011660,\t0.329956360594761740,\t0.330003559991620900,\t0.330050758563471550,\t\n0.330097956310194900,\t0.330145153231673370,\t0.330192349327788960,\t0.330239544598424080,\t0.330286739043459900,\t0.330333932662778940,\t0.330381125456263080,\t0.330428317423794860,\t\n0.330475508565255430,\t0.330522698880527210,\t0.330569888369492690,\t0.330617077032032970,\t0.330664264868030630,\t0.330711451877367610,\t0.330758638059926340,\t0.330805823415588120,\t\n0.330853007944235280,\t0.330900191645749960,\t0.330947374520014550,\t0.330994556566910290,\t0.331041737786319680,\t0.331088918178124690,\t0.331136097742207810,\t0.331183276478450310,\t\n0.331230454386734540,\t0.331277631466942720,\t0.331324807718957230,\t0.331371983142659250,\t0.331419157737931350,\t0.331466331504655990,\t0.331513504442714320,\t0.331560676551988950,\t\n0.331607847832361860,\t0.331655018283715570,\t0.331702187905931310,\t0.331749356698891610,\t0.331796524662478500,\t0.331843691796574520,\t0.331890858101060840,\t0.331938023575820080,\t\n0.331985188220734200,\t0.332032352035685820,\t0.332079515020556100,\t0.332126677175227590,\t0.332173838499582430,\t0.332220998993503050,\t0.332268158656870820,\t0.332315317489568110,\t\n0.332362475491477570,\t0.332409632662480410,\t0.332456789002459170,\t0.332503944511296000,\t0.332551099188873320,\t0.332598253035072510,\t0.332645406049776050,\t0.332692558232866090,\t\n0.332739709584225160,\t0.332786860103734540,\t0.332834009791276750,\t0.332881158646733900,\t0.332928306669988630,\t0.332975453860922140,\t0.333022600219417040,\t0.333069745745355470,\t\n0.333116890438619920,\t0.333164034299091690,\t0.333211177326653400,\t0.333258319521187620,\t0.333305460882575570,\t0.333352601410699890,\t0.333399741105442740,\t0.333446879966686590,\t\n0.333494017994312890,\t0.333541155188204100,\t0.333588291548242430,\t0.333635427074310490,\t0.333682561766289520,\t0.333729695624062130,\t0.333776828647510570,\t0.333823960836517280,\t\n0.333871092190963730,\t0.333918222710732400,\t0.333965352395705520,\t0.334012481245765710,\t0.334059609260794250,\t0.334106736440673790,\t0.334153862785286470,\t0.334200988294514940,\t\n0.334248112968240470,\t0.334295236806345760,\t0.334342359808713350,\t0.334389481975224670,\t0.334436603305762250,\t0.334483723800208300,\t0.334530843458445530,\t0.334577962280355190,\t\n0.334625080265819940,\t0.334672197414721980,\t0.334719313726943970,\t0.334766429202367210,\t0.334813543840874420,\t0.334860657642347740,\t0.334907770606669870,\t0.334954882733722150,\t\n0.335001994023387210,\t0.335049104475547310,\t0.335096214090085050,\t0.335143322866881810,\t0.335190430805820280,\t0.335237537906783120,\t0.335284644169651650,\t0.335331749594308610,\t\n0.335378854180636180,\t0.335425957928517040,\t0.335473060837832570,\t0.335520162908465480,\t0.335567264140297920,\t0.335614364533212690,\t0.335661464087091080,\t0.335708562801815820,\t\n0.335755660677269200,\t0.335802757713333790,\t0.335849853909891080,\t0.335896949266823790,\t0.335944043784014050,\t0.335991137461344620,\t0.336038230298697000,\t0.336085322295953730,\t\n0.336132413452997600,\t0.336179503769710060,\t0.336226593245973700,\t0.336273681881670890,\t0.336320769676684280,\t0.336367856630895360,\t0.336414942744186760,\t0.336462028016440820,\t\n0.336509112447540230,\t0.336556196037366420,\t0.336603278785802150,\t0.336650360692729630,\t0.336697441758031680,\t0.336744521981589660,\t0.336791601363286400,\t0.336838679903004090,\t\n0.336885757600625500,\t0.336932834456032120,\t0.336979910469106640,\t0.337026985639731380,\t0.337074059967789110,\t0.337121133453161250,\t0.337168206095730560,\t0.337215277895379750,\t\n0.337262348851990360,\t0.337309418965445030,\t0.337356488235626200,\t0.337403556662416610,\t0.337450624245697660,\t0.337497690985352150,\t0.337544756881262400,\t0.337591821933311220,\t\n0.337638886141380050,\t0.337685949505351630,\t0.337733012025108410,\t0.337780073700533030,\t0.337827134531507030,\t0.337874194517913230,\t0.337921253659633940,\t0.337968311956551910,\t\n0.338015369408548700,\t0.338062426015507070,\t0.338109481777309760,\t0.338156536693838380,\t0.338203590764975640,\t0.338250643990603890,\t0.338297696370605970,\t0.338344747904863410,\t\n0.338391798593258960,\t0.338438848435675010,\t0.338485897431994360,\t0.338532945582098570,\t0.338579992885870430,\t0.338627039343192270,\t0.338674084953946910,\t0.338721129718015990,\t\n0.338768173635282170,\t0.338815216705627980,\t0.338862258928936120,\t0.338909300305088200,\t0.338956340833967080,\t0.339003380515455480,\t0.339050419349435030,\t0.339097457335788500,\t\n0.339144494474398320,\t0.339191530765147350,\t0.339238566207917150,\t0.339285600802590510,\t0.339332634549049880,\t0.339379667447178070,\t0.339426699496856720,\t0.339473730697968550,\t\n0.339520761050396080,\t0.339567790554022140,\t0.339614819208728320,\t0.339661847014397440,\t0.339708873970911930,\t0.339755900078154650,\t0.339802925336007200,\t0.339849949744352450,\t\n0.339896973303072840,\t0.339943996012051160,\t0.339991017871169140,\t0.340038038880309530,\t0.340085059039355260,\t0.340132078348187930,\t0.340179096806690400,\t0.340226114414745100,\t\n0.340273131172234950,\t0.340320147079041570,\t0.340367162135047810,\t0.340414176340136150,\t0.340461189694189480,\t0.340508202197089380,\t0.340555213848718790,\t0.340602224648960170,\t\n0.340649234597696420,\t0.340696243694809160,\t0.340743251940181290,\t0.340790259333695280,\t0.340837265875234050,\t0.340884271564679210,\t0.340931276401913730,\t0.340978280386820430,\t\n0.341025283519281070,\t0.341072285799178480,\t0.341119287226395170,\t0.341166287800814040,\t0.341213287522316780,\t0.341260286390786320,\t0.341307284406105140,\t0.341354281568156170,\t\n0.341401277876821060,\t0.341448273331982800,\t0.341495267933523810,\t0.341542261681327060,\t0.341589254575274280,\t0.341636246615248330,\t0.341683237801131800,\t0.341730228132807570,\t\n0.341777217610157340,\t0.341824206233064090,\t0.341871194001410750,\t0.341918180915078970,\t0.341965166973951800,\t0.342012152177911640,\t0.342059136526841560,\t0.342106120020623180,\t\n0.342153102659139560,\t0.342200084442273120,\t0.342247065369906960,\t0.342294045441922660,\t0.342341024658203260,\t0.342388003018631320,\t0.342434980523089790,\t0.342481957171460350,\t\n0.342528932963626020,\t0.342575907899469400,\t0.342622881978873420,\t0.342669855201719780,\t0.342716827567891570,\t0.342763799077271670,\t0.342810769729741840,\t0.342857739525185110,\t\n0.342904708463483980,\t0.342951676544521580,\t0.342998643768179510,\t0.343045610134340820,\t0.343092575642888140,\t0.343139540293704470,\t0.343186504086671450,\t0.343233467021672230,\t\n0.343280429098589300,\t0.343327390317305750,\t0.343374350677703330,\t0.343421310179664980,\t0.343468268823073410,\t0.343515226607811530,\t0.343562183533761170,\t0.343609139600805360,\t\n0.343656094808826750,\t0.343703049157708270,\t0.343750002647331740,\t0.343796955277580250,\t0.343843907048336730,\t0.343890857959483100,\t0.343937808010902290,\t0.343984757202476950,\t\n0.344031705534090130,\t0.344078653005623620,\t0.344125599616960490,\t0.344172545367983360,\t0.344219490258575290,\t0.344266434288618080,\t0.344313377457994780,\t0.344360319766588040,\t\n0.344407261214280950,\t0.344454201800955260,\t0.344501141526494030,\t0.344548080390780000,\t0.344595018393696160,\t0.344641955535124390,\t0.344688891814947660,\t0.344735827233049190,\t\n0.344782761789310720,\t0.344829695483615310,\t0.344876628315845700,\t0.344923560285884890,\t0.344970491393614800,\t0.345017421638918460,\t0.345064351021678590,\t0.345111279541778280,\t\n0.345158207199099290,\t0.345205133993524820,\t0.345252059924937520,\t0.345298984993220480,\t0.345345909198255590,\t0.345392832539925860,\t0.345439755018114080,\t0.345486676632703330,\t\n0.345533597383575470,\t0.345580517270613670,\t0.345627436293700910,\t0.345674354452719210,\t0.345721271747551570,\t0.345768188178080800,\t0.345815103744189940,\t0.345862018445760920,\t\n0.345908932282676830,\t0.345955845254820430,\t0.346002757362074860,\t0.346049668604321960,\t0.346096578981444860,\t0.346143488493326320,\t0.346190397139849500,\t0.346237304920896270,\t\n0.346284211836349780,\t0.346331117886092720,\t0.346378023070008310,\t0.346424927387978420,\t0.346471830839886250,\t0.346518733425614460,\t0.346565635145046290,\t0.346612535998063580,\t\n0.346659435984549510,\t0.346706335104387310,\t0.346753233357458830,\t0.346800130743647290,\t0.346847027262835450,\t0.346893922914906390,\t0.346940817699742170,\t0.346987711617225860,\t\n0.347034604667240290,\t0.347081496849668600,\t0.347128388164392790,\t0.347175278611295990,\t0.347222168190260970,\t0.347269056901170990,\t0.347315944743907920,\t0.347362831718355030,\t\n0.347409717824395000,\t0.347456603061911170,\t0.347503487430785350,\t0.347550370930900850,\t0.347597253562140830,\t0.347644135324387200,\t0.347691016217523300,\t0.347737896241431870,\t\n0.347784775395996060,\t0.347831653681097920,\t0.347878531096620650,\t0.347925407642447060,\t0.347972283318460360,\t0.348019158124542540,\t0.348066032060576850,\t0.348112905126446050,\t\n0.348159777322033400,\t0.348206648647220900,\t0.348253519101891730,\t0.348300388685928830,\t0.348347257399215350,\t0.348394125241633320,\t0.348440992213065960,\t0.348487858313396510,\t\n0.348534723542507090,\t0.348581587900280760,\t0.348628451386600540,\t0.348675314001349550,\t0.348722175744409890,\t0.348769036615664770,\t0.348815896614997070,\t0.348862755742290030,\t\n0.348909613997425700,\t0.348956471380287350,\t0.349003327890757830,\t0.349050183528720360,\t0.349097038294057030,\t0.349143892186651150,\t0.349190745206385490,\t0.349237597353143360,\t\n0.349284448626806850,\t0.349331299027259230,\t0.349378148554383820,\t0.349424997208062580,\t0.349471844988178850,\t0.349518691894615490,\t0.349565537927255810,\t0.349612383085981910,\t\n0.349659227370677010,\t0.349706070781224070,\t0.349752913317506350,\t0.349799754979405960,\t0.349846595766806160,\t0.349893435679589860,\t0.349940274717640390,\t0.349987112880839830,\t\n0.350033950169071520,\t0.350080786582218310,\t0.350127622120163520,\t0.350174456782789300,\t0.350221290569978920,\t0.350268123481615290,\t0.350314955517581790,\t0.350361786677760470,\t\n0.350408616962034740,\t0.350455446370287800,\t0.350502274902401880,\t0.350549102558260270,\t0.350595929337745920,\t0.350642755240742120,\t0.350689580267131040,\t0.350736404416795990,\t\n0.350783227689619950,\t0.350830050085486290,\t0.350876871604277050,\t0.350923692245875610,\t0.350970512010164940,\t0.351017330897028470,\t0.351064148906348180,\t0.351110966038007570,\t\n0.351157782291889540,\t0.351204597667877430,\t0.351251412165853430,\t0.351298225785700910,\t0.351345038527303260,\t0.351391850390542600,\t0.351438661375302270,\t0.351485471481465310,\t\n0.351532280708915070,\t0.351579089057533770,\t0.351625896527204660,\t0.351672703117810900,\t0.351719508829235750,\t0.351766313661361410,\t0.351813117614071300,\t0.351859920687248360,\t\n0.351906722880776070,\t0.351953524194536570,\t0.352000324628413240,\t0.352047124182289060,\t0.352093922856047570,\t0.352140720649570800,\t0.352187517562742250,\t0.352234313595445270,\t\n0.352281108747562130,\t0.352327903018976260,\t0.352374696409570590,\t0.352421488919228590,\t0.352468280547832470,\t0.352515071295265600,\t0.352561861161411080,\t0.352608650146152340,\t\n0.352655438249371570,\t0.352702225470952200,\t0.352749011810777220,\t0.352795797268730170,\t0.352842581844693190,\t0.352889365538549770,\t0.352936148350182940,\t0.352982930279476140,\t\n0.353029711326311610,\t0.353076491490572800,\t0.353123270772142780,\t0.353170049170905000,\t0.353216826686741650,\t0.353263603319536210,\t0.353310379069172230,\t0.353357153935531850,\t\n0.353403927918498620,\t0.353450701017955560,\t0.353497473233786160,\t0.353544244565872630,\t0.353591015014098560,\t0.353637784578346880,\t0.353684553258501230,\t0.353731321054443710,\t\n0.353778087966057920,\t0.353824853993226880,\t0.353871619135834150,\t0.353918383393761970,\t0.353965146766893830,\t0.354011909255112780,\t0.354058670858302390,\t0.354105431576344940,\t\n0.354152191409123910,\t0.354198950356522770,\t0.354245708418423840,\t0.354292465594710670,\t0.354339221885266340,\t0.354385977289974340,\t0.354432731808717040,\t0.354479485441377860,\t\n0.354526238187839960,\t0.354572990047986920,\t0.354619741021700960,\t0.354666491108865670,\t0.354713240309364130,\t0.354759988623079890,\t0.354806736049895320,\t0.354853482589693850,\t\n0.354900228242358730,\t0.354946973007773390,\t0.354993716885820270,\t0.355040459876382830,\t0.355087201979344620,\t0.355133943194588020,\t0.355180683521996610,\t0.355227422961453430,\t\n0.355274161512842130,\t0.355320899176044980,\t0.355367635950945620,\t0.355414371837427130,\t0.355461106835373190,\t0.355507840944666030,\t0.355554574165189260,\t0.355601306496826090,\t\n0.355648037939460040,\t0.355694768492973430,\t0.355741498157249980,\t0.355788226932172770,\t0.355834954817625390,\t0.355881681813490220,\t0.355928407919650800,\t0.355975133135990830,\t\n0.356021857462392620,\t0.356068580898739720,\t0.356115303444915380,\t0.356162025100803190,\t0.356208745866285590,\t0.356255465741246060,\t0.356302184725567850,\t0.356348902819134670,\t\n0.356395620021828730,\t0.356442336333533780,\t0.356489051754133040,\t0.356535766283510020,\t0.356582479921547180,\t0.356629192668128150,\t0.356675904523136130,\t0.356722615486454790,\t\n0.356769325557966480,\t0.356816034737554850,\t0.356862743025103120,\t0.356909450420494930,\t0.356956156923612770,\t0.357002862534340160,\t0.357049567252560820,\t0.357096271078157170,\t\n0.357142974011012860,\t0.357189676051011040,\t0.357236377198035530,\t0.357283077451968580,\t0.357329776812694010,\t0.357376475280094970,\t0.357423172854055120,\t0.357469869534456970,\t\n0.357516565321184140,\t0.357563260214119880,\t0.357609954213147900,\t0.357656647318150610,\t0.357703339529011730,\t0.357750030845614460,\t0.357796721267842570,\t0.357843410795578410,\t\n0.357890099428705750,\t0.357936787167108250,\t0.357983474010668380,\t0.358030159959269840,\t0.358076845012795850,\t0.358123529171130220,\t0.358170212434155310,\t0.358216894801754890,\t\n0.358263576273812220,\t0.358310256850211010,\t0.358356936530833780,\t0.358403615315564190,\t0.358450293204285560,\t0.358496970196881650,\t0.358543646293234820,\t0.358590321493228950,\t\n0.358636995796747240,\t0.358683669203673450,\t0.358730341713890120,\t0.358777013327280900,\t0.358823684043729550,\t0.358870353863118610,\t0.358917022785331720,\t0.358963690810252310,\t\n0.359010357937764090,\t0.359057024167749590,\t0.359103689500092530,\t0.359150353934676200,\t0.359197017471384440,\t0.359243680110099660,\t0.359290341850705740,\t0.359337002693085940,\t\n0.359383662637124070,\t0.359430321682702610,\t0.359476979829705390,\t0.359523637078015660,\t0.359570293427517280,\t0.359616948878092760,\t0.359663603429625830,\t0.359710257081999940,\t\n0.359756909835098780,\t0.359803561688804950,\t0.359850212643002210,\t0.359896862697574370,\t0.359943511852403920,\t0.359990160107374720,\t0.360036807462370160,\t0.360083453917273920,\t\n0.360130099471968670,\t0.360176744126338160,\t0.360223387880265810,\t0.360270030733635390,\t0.360316672686329500,\t0.360363313738231880,\t0.360409953889226030,\t0.360456593139195650,\t\n0.360503231488023430,\t0.360549868935593100,\t0.360596505481788120,\t0.360643141126492260,\t0.360689775869588170,\t0.360736409710959600,\t0.360783042650490440,\t0.360829674688063260,\t\n0.360876305823561890,\t0.360922936056869760,\t0.360969565387870730,\t0.361016193816447340,\t0.361062821342483460,\t0.361109447965862530,\t0.361156073686468400,\t0.361202698504183680,\t\n0.361249322418892240,\t0.361295945430477440,\t0.361342567538823210,\t0.361389188743812150,\t0.361435809045328130,\t0.361482428443254570,\t0.361529046937475400,\t0.361575664527873150,\t\n0.361622281214331760,\t0.361668896996735050,\t0.361715511874965700,\t0.361762125848907600,\t0.361808738918444120,\t0.361855351083459230,\t0.361901962343835590,\t0.361948572699457020,\t\n0.361995182150207040,\t0.362041790695969480,\t0.362088398336627040,\t0.362135005072063590,\t0.362181610902162670,\t0.362228215826808090,\t0.362274819845882610,\t0.362321422959270060,\t\n0.362368025166853960,\t0.362414626468518190,\t0.362461226864145390,\t0.362507826353619610,\t0.362554424936824660,\t0.362601022613643190,\t0.362647619383959230,\t0.362694215247656160,\t\n0.362740810204618010,\t0.362787404254727390,\t0.362833997397868260,\t0.362880589633924170,\t0.362927180962778980,\t0.362973771384315470,\t0.363020360898417490,\t0.363066949504968650,\t\n0.363113537203852810,\t0.363160123994952730,\t0.363206709878152290,\t0.363253294853335130,\t0.363299878920385180,\t0.363346462079185080,\t0.363393044329618780,\t0.363439625671569950,\t\n0.363486206104922440,\t0.363532785629558990,\t0.363579364245363580,\t0.363625941952220140,\t0.363672518750011500,\t0.363719094638621510,\t0.363765669617933770,\t0.363812243687832330,\t\n0.363858816848199820,\t0.363905389098920280,\t0.363951960439877260,\t0.363998530870954800,\t0.364045100392035580,\t0.364091669003003600,\t0.364138236703742400,\t0.364184803494136070,\t\n0.364231369374067300,\t0.364277934343420150,\t0.364324498402078150,\t0.364371061549925270,\t0.364417623786844390,\t0.364464185112719390,\t0.364510745527434340,\t0.364557305030872080,\t\n0.364603863622916520,\t0.364650421303451270,\t0.364696978072360400,\t0.364743533929526690,\t0.364790088874834160,\t0.364836642908166360,\t0.364883196029407390,\t0.364929748238440040,\t\n0.364976299535148260,\t0.365022849919415800,\t0.365069399391126590,\t0.365115947950163440,\t0.365162495596410450,\t0.365209042329751270,\t0.365255588150069810,\t0.365302133057249010,\t\n0.365348677051172910,\t0.365395220131725480,\t0.365441762298789610,\t0.365488303552249320,\t0.365534843891988310,\t0.365581383317890580,\t0.365627921829838940,\t0.365674459427717540,\t\n0.365720996111409960,\t0.365767531880800360,\t0.365814066735771440,\t0.365860600676207400,\t0.365907133701991850,\t0.365953665813008920,\t0.366000197009141380,\t0.366046727290273320,\t\n0.366093256656288450,\t0.366139785107070900,\t0.366186312642503400,\t0.366232839262470190,\t0.366279364966854810,\t0.366325889755541480,\t0.366372413628413000,\t0.366418936585353520,\t\n0.366465458626247080,\t0.366511979750976550,\t0.366558499959426130,\t0.366605019251479420,\t0.366651537627020570,\t0.366698055085932510,\t0.366744571628099260,\t0.366791087253404650,\t\n0.366837601961732650,\t0.366884115752966310,\t0.366930628626989610,\t0.366977140583686410,\t0.367023651622940710,\t0.367070161744635470,\t0.367116670948654860,\t0.367163179234882560,\t\n0.367209686603202750,\t0.367256193053498270,\t0.367302698585653340,\t0.367349203199552050,\t0.367395706895077330,\t0.367442209672113380,\t0.367488711530543910,\t0.367535212470253000,\t\n0.367581712491123700,\t0.367628211593040160,\t0.367674709775886010,\t0.367721207039545580,\t0.367767703383901630,\t0.367814198808838480,\t0.367860693314239820,\t0.367907186899989860,\t\n0.367953679565971530,\t0.368000171312068970,\t0.368046662138165950,\t0.368093152044146720,\t0.368139641029894220,\t0.368186129095292580,\t0.368232616240226070,\t0.368279102464577570,\t\n0.368325587768231320,\t0.368372072151071150,\t0.368418555612981150,\t0.368465038153844350,\t0.368511519773545020,\t0.368558000471966850,\t0.368604480248994060,\t0.368650959104509680,\t\n0.368697437038397910,\t0.368743914050542580,\t0.368790390140827820,\t0.368836865309136670,\t0.368883339555353410,\t0.368929812879361770,\t0.368976285281045980,\t0.369022756760289120,\t\n0.369069227316975330,\t0.369115696950988950,\t0.369162165662212830,\t0.369208633450531340,\t0.369255100315828260,\t0.369301566257987820,\t0.369348031276893090,\t0.369394495372428240,\t\n0.369440958544477230,\t0.369487420792924180,\t0.369533882117652150,\t0.369580342518545430,\t0.369626801995487860,\t0.369673260548363690,\t0.369719718177055960,\t0.369766174881448920,\t\n0.369812630661426500,\t0.369859085516872850,\t0.369905539447671130,\t0.369951992453705520,\t0.369998444534859920,\t0.370044895691018620,\t0.370091345922064720,\t0.370137795227882430,\t\n0.370184243608356060,\t0.370230691063368640,\t0.370277137592804560,\t0.370323583196547570,\t0.370370027874482090,\t0.370416471626491050,\t0.370462914452458880,\t0.370509356352269450,\t\n0.370555797325807010,\t0.370602237372954670,\t0.370648676493596730,\t0.370695114687617120,\t0.370741551954900110,\t0.370787988295328830,\t0.370834423708787550,\t0.370880858195160260,\t\n0.370927291754331200,\t0.370973724386183530,\t0.371020156090601520,\t0.371066586867469520,\t0.371113016716670690,\t0.371159445638089280,\t0.371205873631609230,\t0.371252300697114960,\t\n0.371298726834489500,\t0.371345152043617230,\t0.371391576324382080,\t0.371437999676668410,\t0.371484422100359310,\t0.371530843595339170,\t0.371577264161491950,\t0.371623683798701920,\t\n0.371670102506852280,\t0.371716520285827410,\t0.371762937135511230,\t0.371809353055788160,\t0.371855768046541250,\t0.371902182107654910,\t0.371948595239013520,\t0.371995007440500290,\t\n0.372041418711999470,\t0.372087829053395160,\t0.372134238464571660,\t0.372180646945412140,\t0.372227054495801070,\t0.372273461115622320,\t0.372319866804760310,\t0.372366271563098210,\t\n0.372412675390520480,\t0.372459078286911050,\t0.372505480252154300,\t0.372551881286133480,\t0.372598281388732970,\t0.372644680559836680,\t0.372691078799329170,\t0.372737476107093510,\t\n0.372783872483014200,\t0.372830267926975210,\t0.372876662438860920,\t0.372923056018554580,\t0.372969448665940620,\t0.373015840380903410,\t0.373062231163326210,\t0.373108621013093440,\t\n0.373155009930089100,\t0.373201397914197650,\t0.373247784965302310,\t0.373294171083287500,\t0.373340556268037300,\t0.373386940519436050,\t0.373433323837367100,\t0.373479706221714780,\t\n0.373526087672363230,\t0.373572468189196870,\t0.373618847772098920,\t0.373665226420953900,\t0.373711604135645750,\t0.373757980916059050,\t0.373804356762076910,\t0.373850731673583960,\t\n0.373897105650464520,\t0.373943478692601970,\t0.373989850799880730,\t0.374036221972184780,\t0.374082592209398770,\t0.374128961511405840,\t0.374175329878090490,\t0.374221697309336850,\t\n0.374268063805029360,\t0.374314429365051270,\t0.374360793989287120,\t0.374407157677621010,\t0.374453520429937400,\t0.374499882246119580,\t0.374546243126052060,\t0.374592603069618950,\t\n0.374638962076704720,\t0.374685320147192690,\t0.374731677280967350,\t0.374778033477913220,\t0.374824388737913570,\t0.374870743060853000,\t0.374917096446615530,\t0.374963448895085760,\t\n0.375009800406146950,\t0.375056150979683640,\t0.375102500615579980,\t0.375148849313720440,\t0.375195197073988350,\t0.375241543896268290,\t0.375287889780444420,\t0.375334234726401150,\t\n0.375380578734021920,\t0.375426921803191260,\t0.375473263933793320,\t0.375519605125712590,\t0.375565945378832420,\t0.375612284693037420,\t0.375658623068212070,\t0.375704960504239790,\t\n0.375751297001005120,\t0.375797632558392210,\t0.375843967176285600,\t0.375890300854568700,\t0.375936633593126010,\t0.375982965391841730,\t0.376029296250600500,\t0.376075626169285580,\t\n0.376121955147781570,\t0.376168283185972730,\t0.376214610283743590,\t0.376260936440977470,\t0.376307261657559010,\t0.376353585933372430,\t0.376399909268302300,\t0.376446231662231960,\t\n0.376492553115046040,\t0.376538873626628750,\t0.376585193196864680,\t0.376631511825637200,\t0.376677829512830960,\t0.376724146258330560,\t0.376770462062019420,\t0.376816776923782070,\t\n0.376863090843502780,\t0.376909403821066190,\t0.376955715856355680,\t0.377002026949255890,\t0.377048337099651020,\t0.377094646307425730,\t0.377140954572463380,\t0.377187261894648680,\t\n0.377233568273865780,\t0.377279873709999440,\t0.377326178202932960,\t0.377372481752551060,\t0.377418784358737940,\t0.377465086021378240,\t0.377511386740355450,\t0.377557686515554160,\t\n0.377603985346859130,\t0.377650283234153670,\t0.377696580177322550,\t0.377742876176249910,\t0.377789171230820560,\t0.377835465340917830,\t0.377881758506426410,\t0.377928050727230680,\t\n0.377974342003215170,\t0.378020632334263420,\t0.378066921720260070,\t0.378113210161089400,\t0.378159497656636150,\t0.378205784206783750,\t0.378252069811416850,\t0.378298354470419820,\t\n0.378344638183677310,\t0.378390920951072740,\t0.378437202772490930,\t0.378483483647816530,\t0.378529763576932960,\t0.378576042559724990,\t0.378622320596076920,\t0.378668597685873460,\t\n0.378714873828998160,\t0.378761149025335590,\t0.378807423274770180,\t0.378853696577186590,\t0.378899968932468410,\t0.378946240340500280,\t0.378992510801166530,\t0.379038780314351900,\t\n0.379085048879939930,\t0.379131316497815400,\t0.379177583167862490,\t0.379223848889966080,\t0.379270113664009590,\t0.379316377489877900,\t0.379362640367455210,\t0.379408902296626330,\t\n0.379455163277274800,\t0.379501423309285320,\t0.379547682392542720,\t0.379593940526930520,\t0.379640197712333430,\t0.379686453948635870,\t0.379732709235722610,\t0.379778963573477120,\t\n0.379825216961784280,\t0.379871469400528350,\t0.379917720889594190,\t0.379963971428865290,\t0.380010221018226460,\t0.380056469657562120,\t0.380102717346756940,\t0.380148964085694600,\t\n0.380195209874259870,\t0.380241454712337110,\t0.380287698599811100,\t0.380333941536565470,\t0.380380183522484930,\t0.380426424557454400,\t0.380472664641357320,\t0.380518903774078650,\t\n0.380565141955502730,\t0.380611379185514300,\t0.380657615463997070,\t0.380703850790835740,\t0.380750085165914850,\t0.380796318589119110,\t0.380842551060332210,\t0.380888782579438870,\t\n0.380935013146323610,\t0.380981242760871250,\t0.381027471422965340,\t0.381073699132490780,\t0.381119925889331970,\t0.381166151693373700,\t0.381212376544499690,\t0.381258600442594740,\t\n0.381304823387543680,\t0.381351045379230150,\t0.381397266417539020,\t0.381443486502354710,\t0.381489705633562100,\t0.381535923811044840,\t0.381582141034687740,\t0.381628357304375330,\t\n0.381674572619992380,\t0.381720786981422640,\t0.381767000388550880,\t0.381813212841261630,\t0.381859424339439810,\t0.381905634882968970,\t0.381951844471734080,\t0.381998053105619520,\t\n0.382044260784510310,\t0.382090467508289950,\t0.382136673276843530,\t0.382182878090055740,\t0.382229081947810410,\t0.382275284849992350,\t0.382321486796486090,\t0.382367687787176500,\t\n0.382413887821947300,\t0.382460086900683340,\t0.382506285023269220,\t0.382552482189589760,\t0.382598678399528710,\t0.382644873652970950,\t0.382691067949801010,\t0.382737261289903820,\t\n0.382783453673163020,\t0.382829645099463660,\t0.382875835568690150,\t0.382922025080727420,\t0.382968213635459300,\t0.383014401232770580,\t0.383060587872545880,\t0.383106773554670100,\t\n0.383152958279027010,\t0.383199142045501540,\t0.383245324853978610,\t0.383291506704341920,\t0.383337687596476460,\t0.383383867530266820,\t0.383430046505597920,\t0.383476224522353530,\t\n0.383522401580418500,\t0.383568577679677500,\t0.383614752820015450,\t0.383660927001316150,\t0.383707100223464490,\t0.383753272486345110,\t0.383799443789842930,\t0.383845614133841770,\t\n0.383891783518226560,\t0.383937951942881880,\t0.383984119407692730,\t0.384030285912542850,\t0.384076451457317280,\t0.384122616041901010,\t0.384168779666177800,\t0.384214942330032620,\t\n0.384261104033350060,\t0.384307264776015180,\t0.384353424557911720,\t0.384399583378924660,\t0.384445741238938710,\t0.384491898137838740,\t0.384538054075508670,\t0.384584209051833440,\t\n0.384630363066697730,\t0.384676516119986490,\t0.384722668211583570,\t0.384768819341373970,\t0.384814969509242270,\t0.384861118715073610,\t0.384907266958751770,\t0.384953414240161720,\t\n0.384999560559188550,\t0.385045705915716070,\t0.385091850309629340,\t0.385137993740812920,\t0.385184136209151980,\t0.385230277714530330,\t0.385276418256832900,\t0.385322557835944490,\t\n0.385368696451750090,\t0.385414834104133520,\t0.385460970792979860,\t0.385507106518173770,\t0.385553241279600330,\t0.385599375077143370,\t0.385645507910688020,\t0.385691639780118830,\t\n0.385737770685321000,\t0.385783900626178290,\t0.385830029602575900,\t0.385876157614398360,\t0.385922284661530890,\t0.385968410743857290,\t0.386014535861262610,\t0.386060660013632040,\t\n0.386106783200849460,\t0.386152905422799840,\t0.386199026679368010,\t0.386245146970438990,\t0.386291266295896720,\t0.386337384655626280,\t0.386383502049512330,\t0.386429618477440120,\t\n0.386475733939293410,\t0.386521848434957350,\t0.386567961964316700,\t0.386614074527256490,\t0.386660186123660770,\t0.386706296753414560,\t0.386752406416402570,\t0.386798515112510010,\t\n0.386844622841620740,\t0.386890729603619920,\t0.386936835398392690,\t0.386982940225822910,\t0.387029044085795860,\t0.387075146978196170,\t0.387121248902909000,\t0.387167349859818320,\t\n0.387213449848809230,\t0.387259548869766550,\t0.387305646922575410,\t0.387351744007119750,\t0.387397840123284710,\t0.387443935270955050,\t0.387490029450016040,\t0.387536122660351480,\t\n0.387582214901846630,\t0.387628306174386210,\t0.387674396477855450,\t0.387720485812138360,\t0.387766574177119960,\t0.387812661572685570,\t0.387858747998719170,\t0.387904833455105850,\t\n0.387950917941730420,\t0.387997001458478150,\t0.388043084005232960,\t0.388089165581880000,\t0.388135246188304190,\t0.388181325824390690,\t0.388227404490023410,\t0.388273482185087670,\t\n0.388319558909468180,\t0.388365634663050240,\t0.388411709445717790,\t0.388457783257356030,\t0.388503856097849880,\t0.388549927967084430,\t0.388595998864943840,\t0.388642068791313190,\t\n0.388688137746077740,\t0.388734205729121600,\t0.388780272740329950,\t0.388826338779587610,\t0.388872403846779790,\t0.388918467941790580,\t0.388964531064505240,\t0.389010593214808520,\t\n0.389056654392585740,\t0.389102714597720890,\t0.389148773830099270,\t0.389194832089605760,\t0.389240889376125550,\t0.389286945689542700,\t0.389333001029742440,\t0.389379055396609770,\t\n0.389425108790029780,\t0.389471161209886670,\t0.389517212656065650,\t0.389563263128451580,\t0.389609312626929770,\t0.389655361151384270,\t0.389701408701700390,\t0.389747455277763390,\t\n0.389793500879457300,\t0.389839545506667500,\t0.389885589159278840,\t0.389931631837176610,\t0.389977673540244870,\t0.390023714268368960,\t0.390069754021433730,\t0.390115792799324570,\t\n0.390161830601925500,\t0.390207867429121890,\t0.390253903280798560,\t0.390299938156840940,\t0.390345972057133010,\t0.390392004981560180,\t0.390438036930007340,\t0.390484067902359790,\t\n0.390530097898501680,\t0.390576126918318280,\t0.390622154961695060,\t0.390668182028515940,\t0.390714208118666470,\t0.390760233232031410,\t0.390806257368496170,\t0.390852280527944910,\t\n0.390898302710262990,\t0.390944323915335230,\t0.390990344143047120,\t0.391036363393282740,\t0.391082381665927400,\t0.391128398960866150,\t0.391174415277984360,\t0.391220430617166050,\t\n0.391266444978296660,\t0.391312458361261220,\t0.391358470765944990,\t0.391404482192232170,\t0.391450492640008200,\t0.391496502109158320,\t0.391542510599566850,\t0.391588518111119050,\t\n0.391634524643700020,\t0.391680530197195060,\t0.391726534771488330,\t0.391772538366465310,\t0.391818540982010910,\t0.391864542618010630,\t0.391910543274348490,\t0.391956542950910040,\t\n0.392002541647580250,\t0.392048539364244500,\t0.392094536100786980,\t0.392140531857093130,\t0.392186526633047980,\t0.392232520428536900,\t0.392278513243444090,\t0.392324505077654980,\t\n0.392370495931054660,\t0.392416485803528500,\t0.392462474694960710,\t0.392508462605236700,\t0.392554449534242010,\t0.392600435481860740,\t0.392646420447978370,\t0.392692404432479990,\t\n0.392738387435250970,\t0.392784369456175560,\t0.392830350495139260,\t0.392876330552027090,\t0.392922309626724530,\t0.392968287719115740,\t0.393014264829086250,\t0.393060240956521090,\t\n0.393106216101305690,\t0.393152190263324430,\t0.393198163442462610,\t0.393244135638605440,\t0.393290106851638340,\t0.393336077081445520,\t0.393382046327912570,\t0.393428014590924860,\t\n0.393473981870366750,\t0.393519948166123620,\t0.393565913478080680,\t0.393611877806123330,\t0.393657841150135910,\t0.393703803510003840,\t0.393749764885612310,\t0.393795725276846750,\t\n0.393841684683591490,\t0.393887643105731990,\t0.393933600543153410,\t0.393979556995741220,\t0.394025512463379690,\t0.394071466945954460,\t0.394117420443350520,\t0.394163372955453450,\t\n0.394209324482147520,\t0.394255275023318310,\t0.394301224578851250,\t0.394347173148630770,\t0.394393120732542400,\t0.394439067330471180,\t0.394485012942302700,\t0.394530957567921280,\t\n0.394576901207212450,\t0.394622843860061410,\t0.394668785526353650,\t0.394714726205973530,\t0.394760665898806600,\t0.394806604604737930,\t0.394852542323653240,\t0.394898479055436790,\t\n0.394944414799974110,\t0.394990349557150400,\t0.395036283326851200,\t0.395082216108960880,\t0.395128147903365090,\t0.395174078709948860,\t0.395220008528597840,\t0.395265937359196460,\t\n0.395311865201630200,\t0.395357792055784640,\t0.395403717921544220,\t0.395449642798794520,\t0.395495566687420750,\t0.395541489587308390,\t0.395587411498341980,\t0.395633332420406990,\t\n0.395679252353388690,\t0.395725171297172660,\t0.395771089251643280,\t0.395817006216686200,\t0.395862922192186550,\t0.395908837178030050,\t0.395954751174101060,\t0.396000664180285180,\t\n0.396046576196467660,\t0.396092487222534040,\t0.396138397258368860,\t0.396184306303857650,\t0.396230214358886110,\t0.396276121423338620,\t0.396322027497100830,\t0.396367932580057980,\t\n0.396413836672095680,\t0.396459739773098400,\t0.396505641882951730,\t0.396551543001541000,\t0.396597443128751780,\t0.396643342264468570,\t0.396689240408577000,\t0.396735137560962350,\t\n0.396781033721510250,\t0.396826928890105180,\t0.396872823066632740,\t0.396918716250978300,\t0.396964608443027440,\t0.397010499642664660,\t0.397056389849775590,\t0.397102279064246000,\t\n0.397148167285960310,\t0.397194054514804160,\t0.397239940750662930,\t0.397285825993422210,\t0.397331710242966540,\t0.397377593499181610,\t0.397423475761952690,\t0.397469357031165480,\t\n0.397515237306704460,\t0.397561116588455330,\t0.397606994876303410,\t0.397652872170134450,\t0.397698748469832890,\t0.397744623775284470,\t0.397790498086374460,\t0.397836371402988610,\t\n0.397882243725011460,\t0.397928115052328670,\t0.397973985384825980,\t0.398019854722387990,\t0.398065723064900290,\t0.398111590412248360,\t0.398157456764317800,\t0.398203322120993190,\t\n0.398249186482160290,\t0.398295049847704420,\t0.398340912217511390,\t0.398386773591465570,\t0.398432633969452890,\t0.398478493351358600,\t0.398524351737068520,\t0.398570209126467120,\t\n0.398616065519440180,\t0.398661920915873100,\t0.398707775315651600,\t0.398753628718660270,\t0.398799481124784920,\t0.398845332533910800,\t0.398891182945923790,\t0.398937032360708380,\t\n0.398982880778150420,\t0.399028728198135670,\t0.399074574620548680,\t0.399120420045275260,\t0.399166264472200770,\t0.399212107901211030,\t0.399257950332190640,\t0.399303791765025340,\t\n0.399349632199600570,\t0.399395471635802140,\t0.399441310073514630,\t0.399487147512623820,\t0.399532983953015170,\t0.399578819394574460,\t0.399624653837186260,\t0.399670487280736510,\t\n0.399716319725110460,\t0.399762151170194040,\t0.399807981615871830,\t0.399853811062029660,\t0.399899639508553400,\t0.399945466955327620,\t0.399991293402238160,\t0.400037118849170480,\t\n0.400082943296010410,\t0.400128766742642580,\t0.400174589188952820,\t0.400220410634826610,\t0.400266231080149750,\t0.400312050524806950,\t0.400357868968683970,\t0.400403686411666350,\t\n0.400449502853639890,\t0.400495318294489310,\t0.400541132734100410,\t0.400586946172358680,\t0.400632758609149990,\t0.400678570044359030,\t0.400724380477871620,\t0.400770189909573640,\t\n0.400815998339349780,\t0.400861805767085970,\t0.400907612192667630,\t0.400953417615980630,\t0.400999222036909740,\t0.401045025455340760,\t0.401090827871159180,\t0.401136629284250980,\t\n0.401182429694500800,\t0.401228229101794560,\t0.401274027506017710,\t0.401319824907056260,\t0.401365621304794750,\t0.401411416699119280,\t0.401457211089915220,\t0.401503004477068550,\t\n0.401548796860463910,\t0.401594588239987340,\t0.401640378615524260,\t0.401686167986960660,\t0.401731956354181240,\t0.401777743717071980,\t0.401823530075518690,\t0.401869315429406180,\t\n0.401915099778620390,\t0.401960883123046840,\t0.402006665462571520,\t0.402052446797079130,\t0.402098227126455600,\t0.402144006450586510,\t0.402189784769357790,\t0.402235562082654260,\t\n0.402281338390361790,\t0.402327113692365960,\t0.402372887988552750,\t0.402418661278806930,\t0.402464433563014480,\t0.402510204841060870,\t0.402555975112832250,\t0.402601744378213220,\t\n0.402647512637089870,\t0.402693279889348110,\t0.402739046134872770,\t0.402784811373549770,\t0.402830575605264810,\t0.402876338829903760,\t0.402922101047351490,\t0.402967862257493980,\t\n0.403013622460216770,\t0.403059381655405950,\t0.403105139842946210,\t0.403150897022723660,\t0.403196653194623890,\t0.403242408358532870,\t0.403288162514335410,\t0.403333915661917560,\t\n0.403379667801164970,\t0.403425418931963540,\t0.403471169054198220,\t0.403516918167754920,\t0.403562666272519740,\t0.403608413368377490,\t0.403654159455214270,\t0.403699904532915600,\t\n0.403745648601367580,\t0.403791391660455020,\t0.403837133710063970,\t0.403882874750080110,\t0.403928614780389440,\t0.403974353800876870,\t0.404020091811428390,\t0.404065828811929710,\t\n0.404111564802266840,\t0.404157299782324670,\t0.404203033751989240,\t0.404248766711146180,\t0.404294498659681640,\t0.404340229597480500,\t0.404385959524428740,\t0.404431688440412500,\t\n0.404477416345316590,\t0.404523143239027220,\t0.404568869121429920,\t0.404614593992410900,\t0.404660317851854970,\t0.404706040699648220,\t0.404751762535676410,\t0.404797483359825570,\t\n0.404843203171980640,\t0.404888921972027690,\t0.404934639759852440,\t0.404980356535340980,\t0.405026072298378230,\t0.405071787048850330,\t0.405117500786642940,\t0.405163213511642200,\t\n0.405208925223733030,\t0.405254635922801530,\t0.405300345608733460,\t0.405346054281414900,\t0.405391761940730840,\t0.405437468586567370,\t0.405483174218810580,\t0.405528878837345510,\t\n0.405574582442058240,\t0.405620285032834480,\t0.405665986609560440,\t0.405711687172121030,\t0.405757386720402350,\t0.405803085254290260,\t0.405848782773670870,\t0.405894479278429090,\t\n0.405940174768451120,\t0.405985869243622680,\t0.406031562703830010,\t0.406077255148958040,\t0.406122946578892920,\t0.406168636993520400,\t0.406214326392726750,\t0.406260014776396840,\t\n0.406305702144416910,\t0.406351388496673130,\t0.406397073833050460,\t0.406442758153435110,\t0.406488441457712850,\t0.406534123745769920,\t0.406579805017491250,\t0.406625485272763100,\t\n0.406671164511471170,\t0.406716842733501840,\t0.406762519938739910,\t0.406808196127071700,\t0.406853871298383020,\t0.406899545452560070,\t0.406945218589487840,\t0.406990890709052530,\t\n0.407036561811140060,\t0.407082231895636580,\t0.407127900962427070,\t0.407173569011397840,\t0.407219236042435100,\t0.407264902055423820,\t0.407310567050250320,\t0.407356231026800410,\t\n0.407401893984960290,\t0.407447555924615070,\t0.407493216845650930,\t0.407538876747953750,\t0.407584535631409840,\t0.407630193495904130,\t0.407675850341322920,\t0.407721506167552150,\t\n0.407767160974477960,\t0.407812814761985500,\t0.407858467529960970,\t0.407904119278290290,\t0.407949770006859720,\t0.407995419715554310,\t0.408041068404260350,\t0.408086716072863730,\t\n0.408132362721250750,\t0.408178008349306400,\t0.408223652956917090,\t0.408269296543968980,\t0.408314939110347270,\t0.408360580655938220,\t0.408406221180627750,\t0.408451860684302060,\t\n0.408497499166846360,\t0.408543136628146900,\t0.408588773068089610,\t0.408634408486560740,\t0.408680042883445500,\t0.408725676258630100,\t0.408771308612000560,\t0.408816939943443150,\t\n0.408862570252842950,\t0.408908199540086390,\t0.408953827805059290,\t0.408999455047648010,\t0.409045081267737700,\t0.409090706465214670,\t0.409136330639965300,\t0.409181953791874720,\t\n0.409227575920829200,\t0.409273197026714770,\t0.409318817109417750,\t0.409364436168823340,\t0.409410054204817800,\t0.409455671217287100,\t0.409501287206117610,\t0.409546902171194550,\t\n0.409592516112404210,\t0.409638129029632590,\t0.409683740922766050,\t0.409729351791689730,\t0.409774961636290070,\t0.409820570456452980,\t0.409866178252064840,\t0.409911785023010900,\t\n0.409957390769177480,\t0.410002995490450990,\t0.410048599186716600,\t0.410094201857860720,\t0.410139803503769330,\t0.410185404124328860,\t0.410231003719424450,\t0.410276602288942530,\t\n0.410322199832769070,\t0.410367796350790570,\t0.410413391842892160,\t0.410458986308960270,\t0.410504579748880940,\t0.410550172162540530,\t0.410595763549824300,\t0.410641353910618680,\t\n0.410686943244809640,\t0.410732531552283620,\t0.410778118832925920,\t0.410823705086622910,\t0.410869290313261030,\t0.410914874512725570,\t0.410960457684902860,\t0.411006039829679040,\t\n0.411051620946940530,\t0.411097201036572550,\t0.411142780098461560,\t0.411188358132493600,\t0.411233935138555220,\t0.411279511116531550,\t0.411325086066309080,\t0.411370659987773950,\t\n0.411416232880812530,\t0.411461804745310130,\t0.411507375581153250,\t0.411552945388227900,\t0.411598514166420570,\t0.411644081915616580,\t0.411689648635702400,\t0.411735214326564070,\t\n0.411780778988088130,\t0.411826342620159820,\t0.411871905222665700,\t0.411917466795492180,\t0.411963027338524580,\t0.412008586851649430,\t0.412054145334752820,\t0.412099702787721230,\t\n0.412145259210439980,\t0.412190814602795610,\t0.412236368964674190,\t0.412281922295962280,\t0.412327474596545120,\t0.412373025866309250,\t0.412418576105140880,\t0.412464125312926420,\t\n0.412509673489551250,\t0.412555220634901960,\t0.412600766748864530,\t0.412646311831325660,\t0.412691855882170560,\t0.412737398901285860,\t0.412782940888558050,\t0.412828481843872440,\t\n0.412874021767115680,\t0.412919560658173870,\t0.412965098516933530,\t0.413010635343280030,\t0.413056171137099970,\t0.413101705898279490,\t0.413147239626705130,\t0.413192772322262260,\t\n0.413238303984837460,\t0.413283834614316890,\t0.413329364210587190,\t0.413374892773533620,\t0.413420420303042880,\t0.413465946799001060,\t0.413511472261294750,\t0.413556996689809390,\t\n0.413602520084431490,\t0.413648042445047710,\t0.413693563771543480,\t0.413739084063805270,\t0.413784603321719400,\t0.413830121545172400,\t0.413875638734049700,\t0.413921154888237890,\t\n0.413966670007623220,\t0.414012184092092230,\t0.414057697141530400,\t0.414103209155824380,\t0.414148720134860260,\t0.414194230078524790,\t0.414239738986703300,\t0.414285246859282530,\t\n0.414330753696148580,\t0.414376259497188200,\t0.414421764262286720,\t0.414467267991330880,\t0.414512770684206830,\t0.414558272340801230,\t0.414603772960999590,\t0.414649272544688530,\t\n0.414694771091754680,\t0.414740268602083460,\t0.414785765075561640,\t0.414831260512075360,\t0.414876754911511330,\t0.414922248273755010,\t0.414967740598693120,\t0.415013231886211810,\t\n0.415058722136197880,\t0.415104211348536700,\t0.415149699523114980,\t0.415195186659819080,\t0.415240672758535550,\t0.415286157819149960,\t0.415331641841548970,\t0.415377124825618890,\t\n0.415422606771246370,\t0.415468087678317000,\t0.415513567546717310,\t0.415559046376334170,\t0.415604524167053010,\t0.415650000918760530,\t0.415695476631343040,\t0.415740951304687300,\t\n0.415786424938678730,\t0.415831897533204100,\t0.415877369088149760,\t0.415922839603402370,\t0.415968309078847520,\t0.416013777514371850,\t0.416059244909861740,\t0.416104711265203930,\t\n0.416150176580283970,\t0.416195640854988560,\t0.416241104089204010,\t0.416286566282817130,\t0.416332027435713400,\t0.416377487547779650,\t0.416422946618902560,\t0.416468404648967670,\t\n0.416513861637861800,\t0.416559317585471320,\t0.416604772491682870,\t0.416650226356382160,\t0.416695679179455820,\t0.416741130960790300,\t0.416786581700272380,\t0.416832031397787570,\t\n0.416877480053222730,\t0.416922927666464160,\t0.416968374237398690,\t0.417013819765911840,\t0.417059264251890440,\t0.417104707695220960,\t0.417150150095790040,\t0.417195591453483340,\t\n0.417241031768187720,\t0.417286471039789890,\t0.417331909268175430,\t0.417377346453231270,\t0.417422782594843720,\t0.417468217692899600,\t0.417513651747284550,\t0.417559084757885390,\t\n0.417604516724588480,\t0.417649947647280690,\t0.417695377525847620,\t0.417740806360176130,\t0.417786234150152650,\t0.417831660895663930,\t0.417877086596595670,\t0.417922511252834690,\t\n0.417967934864267480,\t0.418013357430780770,\t0.418058778952260290,\t0.418104199428592890,\t0.418149618859664950,\t0.418195037245363390,\t0.418240454585573850,\t0.418285870880183150,\t\n0.418331286129078160,\t0.418376700332144580,\t0.418422113489269280,\t0.418467525600338620,\t0.418512936665239590,\t0.418558346683857830,\t0.418603755656080160,\t0.418649163581793160,\t\n0.418694570460883600,\t0.418739976293237230,\t0.418785381078740910,\t0.418830784817281140,\t0.418876187508744830,\t0.418921589153017640,\t0.418966989749986470,\t0.419012389299537880,\t\n0.419057787801558670,\t0.419103185255934540,\t0.419148581662552530,\t0.419193977021299400,\t0.419239371332060960,\t0.419284764594724140,\t0.419330156809175350,\t0.419375547975301580,\t\n0.419420938092988530,\t0.419466327162123120,\t0.419511715182591950,\t0.419557102154281880,\t0.419602488077078620,\t0.419647872950869140,\t0.419693256775539980,\t0.419738639550978120,\t\n0.419784021277069210,\t0.419829401953700280,\t0.419874781580757810,\t0.419920160158128830,\t0.419965537685699050,\t0.420010914163355400,\t0.420056289590984840,\t0.420101663968473200,\t\n0.420147037295707400,\t0.420192409572573980,\t0.420237780798959960,\t0.420283150974751110,\t0.420328520099834350,\t0.420373888174096270,\t0.420419255197423900,\t0.420464621169702960,\t\n0.420509986090820520,\t0.420555349960663070,\t0.420600712779117650,\t0.420646074546070060,\t0.420691435261407290,\t0.420736794925015920,\t0.420782153536783000,\t0.420827511096594220,\t\n0.420872867604336730,\t0.420918223059897070,\t0.420963577463162210,\t0.421008930814018020,\t0.421054283112351550,\t0.421099634358049700,\t0.421144984550998410,\t0.421190333691084660,\t\n0.421235681778195040,\t0.421281028812216630,\t0.421326374793035250,\t0.421371719720537940,\t0.421417063594611340,\t0.421462406415142490,\t0.421507748182017190,\t0.421553088895122550,\t\n0.421598428554345150,\t0.421643767159572140,\t0.421689104710689270,\t0.421734441207583630,\t0.421779776650141880,\t0.421825111038251150,\t0.421870444371797160,\t0.421915776650667150,\t\n0.421961107874748000,\t0.422006438043925740,\t0.422051767158087400,\t0.422097095217119630,\t0.422142422220909470,\t0.422187748169342900,\t0.422233073062306950,\t0.422278396899688320,\t\n0.422323719681374110,\t0.422369041407250180,\t0.422414362077203680,\t0.422459681691121250,\t0.422505000248890040,\t0.422550317750395870,\t0.422595634195525980,\t0.422640949584166980,\t\n0.422686263916205950,\t0.422731577191528930,\t0.422776889410022950,\t0.422822200571575100,\t0.422867510676071420,\t0.422912819723398950,\t0.422958127713444380,\t0.423003434646094910,\t\n0.423048740521236480,\t0.423094045338756220,\t0.423139349098540780,\t0.423184651800477430,\t0.423229953444452020,\t0.423275254030351710,\t0.423320553558063310,\t0.423365852027473900,\t\n0.423411149438469410,\t0.423456445790937110,\t0.423501741084763680,\t0.423547035319836280,\t0.423592328496040950,\t0.423637620613264760,\t0.423682911671394940,\t0.423728201670317380,\t\n0.423773490609919370,\t0.423818778490087640,\t0.423864065310709300,\t0.423909351071670440,\t0.423954635772858250,\t0.423999919414159380,\t0.424045201995461200,\t0.424090483516649570,\t\n0.424135763977611710,\t0.424181043378234480,\t0.424226321718405020,\t0.424271598998009370,\t0.424316875216934670,\t0.424362150375067860,\t0.424407424472296010,\t0.424452697508505230,\t\n0.424497969483582700,\t0.424543240397415260,\t0.424588510249890140,\t0.424633779040893280,\t0.424679046770312040,\t0.424724313438033520,\t0.424769579043943860,\t0.424814843587930260,\t\n0.424860107069879530,\t0.424905369489678940,\t0.424950630847214520,\t0.424995891142373520,\t0.425041150375042810,\t0.425086408545109600,\t0.425131665652459970,\t0.425176921696981180,\t\n0.425222176678560100,\t0.425267430597083940,\t0.425312683452438830,\t0.425357935244512040,\t0.425403185973190380,\t0.425448435638361160,\t0.425493684239910460,\t0.425538931777725560,\t\n0.425584178251693700,\t0.425629423661701030,\t0.425674668007634760,\t0.425719911289381860,\t0.425765153506829530,\t0.425810394659863980,\t0.425855634748372400,\t0.425900873772241730,\t\n0.425946111731359320,\t0.425991348625611170,\t0.426036584454884680,\t0.426081819219066740,\t0.426127052918044650,\t0.426172285551704500,\t0.426217517119933660,\t0.426262747622619060,\t\n0.426307977059647960,\t0.426353205430906490,\t0.426398432736282030,\t0.426443658975661890,\t0.426488884148932210,\t0.426534108255980320,\t0.426579331296693120,\t0.426624553270958050,\t\n0.426669774178661140,\t0.426714994019689820,\t0.426760212793931000,\t0.426805430501272120,\t0.426850647141599200,\t0.426895862714799680,\t0.426941077220760470,\t0.426986290659368990,\t\n0.427031503030511410,\t0.427076714334075010,\t0.427121924569946910,\t0.427167133738014350,\t0.427212341838163530,\t0.427257548870281890,\t0.427302754834256390,\t0.427347959729974360,\t\n0.427393163557322100,\t0.427438366316186870,\t0.427483568006456150,\t0.427528768628016090,\t0.427573968180754100,\t0.427619166664557240,\t0.427664364079312850,\t0.427709560424907100,\t\n0.427754755701227510,\t0.427799949908161000,\t0.427845143045595010,\t0.427890335113415790,\t0.427935526111510700,\t0.427980716039766840,\t0.428025904898071520,\t0.428071092686311110,\t\n0.428116279404372910,\t0.428161465052144030,\t0.428206649629511940,\t0.428251833136362780,\t0.428297015572584040,\t0.428342196938063140,\t0.428387377232686380,\t0.428432556456341150,\t\n0.428477734608914530,\t0.428522911690293990,\t0.428568087700365810,\t0.428613262639017330,\t0.428658436506135780,\t0.428703609301608450,\t0.428748781025321770,\t0.428793951677163110,\t\n0.428839121257019560,\t0.428884289764778600,\t0.428929457200326550,\t0.428974623563550820,\t0.429019788854338560,\t0.429064953072577250,\t0.429110116218153090,\t0.429155278290953680,\t\n0.429200439290866490,\t0.429245599217777770,\t0.429290758071575070,\t0.429335915852145480,\t0.429381072559376460,\t0.429426228193154400,\t0.429471382753366770,\t0.429516536239900660,\t\n0.429561688652643660,\t0.429606839991481970,\t0.429651990256303180,\t0.429697139446994500,\t0.429742287563443290,\t0.429787434605535980,\t0.429832580573160090,\t0.429877725466202790,\t\n0.429922869284551530,\t0.429968012028092710,\t0.430013153696713830,\t0.430058294290302510,\t0.430103433808744990,\t0.430148572251928930,\t0.430193709619741460,\t0.430238845912070120,\t\n0.430283981128801230,\t0.430329115269822370,\t0.430374248335020800,\t0.430419380324283950,\t0.430464511237498240,\t0.430509641074551250,\t0.430554769835330200,\t0.430599897519722610,\t\n0.430645024127614850,\t0.430690149658894570,\t0.430735274113448920,\t0.430780397491165420,\t0.430825519791930620,\t0.430870641015631940,\t0.430915761162156690,\t0.430960880231392450,\t\n0.431005998223225610,\t0.431051115137543740,\t0.431096230974234500,\t0.431141345733184300,\t0.431186459414280690,\t0.431231572017410970,\t0.431276683542462740,\t0.431321793989322360,\t\n0.431366903357877470,\t0.431412011648015400,\t0.431457118859623620,\t0.431502224992588720,\t0.431547330046798240,\t0.431592434022139370,\t0.431637536918499880,\t0.431682638735766120,\t\n0.431727739473825810,\t0.431772839132566090,\t0.431817937711874710,\t0.431863035211638050,\t0.431908131631743850,\t0.431953226972079720,\t0.431998321232532070,\t0.432043414412988660,\t\n0.432088506513336690,\t0.432133597533463860,\t0.432178687473256660,\t0.432223776332602730,\t0.432268864111389320,\t0.432313950809504190,\t0.432359036426833760,\t0.432404120963265800,\t\n0.432449204418687510,\t0.432494286792986570,\t0.432539368086049540,\t0.432584448297764050,\t0.432629527428017470,\t0.432674605476697500,\t0.432719682443690580,\t0.432764758328884500,\t\n0.432809833132166870,\t0.432854906853424260,\t0.432899979492544440,\t0.432945051049414610,\t0.432990121523922580,\t0.433035190915954830,\t0.433080259225399110,\t0.433125326452142740,\t\n0.433170392596073480,\t0.433215457657077810,\t0.433260521635043530,\t0.433305584529857900,\t0.433350646341408740,\t0.433395707069582580,\t0.433440766714267120,\t0.433485825275349730,\t\n0.433530882752718230,\t0.433575939146259080,\t0.433620994455860110,\t0.433666048681408620,\t0.433711101822792430,\t0.433756153879898080,\t0.433801204852613360,\t0.433846254740826000,\t\n0.433891303544422620,\t0.433936351263291000,\t0.433981397897318490,\t0.434026443446392850,\t0.434071487910400730,\t0.434116531289229890,\t0.434161573582767750,\t0.434206614790902060,\t\n0.434251654913519410,\t0.434296693950507630,\t0.434341731901754120,\t0.434386768767146660,\t0.434431804546571930,\t0.434476839239917640,\t0.434521872847071280,\t0.434566905367920640,\t\n0.434611936802352330,\t0.434656967150254150,\t0.434701996411513970,\t0.434747024586018440,\t0.434792051673655310,\t0.434837077674312010,\t0.434882102587876460,\t0.434927126414235250,\t\n0.434972149153276260,\t0.435017170804886890,\t0.435062191368954960,\t0.435107210845367130,\t0.435152229234011310,\t0.435197246534774930,\t0.435242262747545790,\t0.435287277872210670,\t\n0.435332291908657300,\t0.435377304856773170,\t0.435422316716446210,\t0.435467327487563060,\t0.435512337170011590,\t0.435557345763679720,\t0.435602353268454030,\t0.435647359684222470,\t\n0.435692365010872500,\t0.435737369248292040,\t0.435782372396367750,\t0.435827374454987540,\t0.435872375424038890,\t0.435917375303409680,\t0.435962374092986660,\t0.436007371792657690,\t\n0.436052368402310260,\t0.436097363921832350,\t0.436142358351110650,\t0.436187351690032980,\t0.436232343938486980,\t0.436277335096360520,\t0.436322325163540300,\t0.436367314139914310,\t\n0.436412302025370400,\t0.436457288819795340,\t0.436502274523077110,\t0.436547259135103120,\t0.436592242655761410,\t0.436637225084938680,\t0.436682206422522920,\t0.436727186668401660,\t\n0.436772165822462750,\t0.436817143884593080,\t0.436862120854680570,\t0.436907096732612740,\t0.436952071518277580,\t0.436997045211561800,\t0.437042017812353410,\t0.437086989320540020,\t\n0.437131959736009550,\t0.437176929058648740,\t0.437221897288345650,\t0.437266864424987800,\t0.437311830468463170,\t0.437356795418658570,\t0.437401759275462040,\t0.437446722038761450,\t\n0.437491683708443660,\t0.437536644284396700,\t0.437581603766508060,\t0.437626562154665890,\t0.437671519448756870,\t0.437716475648669060,\t0.437761430754290030,\t0.437806384765507870,\t\n0.437851337682209350,\t0.437896289504282440,\t0.437941240231614850,\t0.437986189864094540,\t0.438031138401608340,\t0.438076085844044340,\t0.438121032191290120,\t0.438165977443233660,\t\n0.438210921599761940,\t0.438255864660762830,\t0.438300806626124530,\t0.438345747495733800,\t0.438390687269478660,\t0.438435625947246830,\t0.438480563528926340,\t0.438525500014404050,\t\n0.438570435403567990,\t0.438615369696305820,\t0.438660302892505680,\t0.438705234992054330,\t0.438750165994839900,\t0.438795095900750110,\t0.438840024709672930,\t0.438884952421495280,\t\n0.438929879036105310,\t0.438974804553390610,\t0.439019728973239260,\t0.439064652295538260,\t0.439109574520175570,\t0.439154495647039340,\t0.439199415676016500,\t0.439244334606995130,\t\n0.439289252439862890,\t0.439334169174507960,\t0.439379084810817170,\t0.439423999348678710,\t0.439468912787980230,\t0.439513825128609870,\t0.439558736370454510,\t0.439603646513402340,\t\n0.439648555557341060,\t0.439693463502158820,\t0.439738370347742490,\t0.439783276093980210,\t0.439828180740759740,\t0.439873084287969280,\t0.439917986735495650,\t0.439962888083227090,\t\n0.440007788331051310,\t0.440052687478856400,\t0.440097585526529440,\t0.440142482473958490,\t0.440187378321031720,\t0.440232273067636130,\t0.440277166713659850,\t0.440322059258990650,\t\n0.440366950703516720,\t0.440411841047125000,\t0.440456730289703670,\t0.440501618431140500,\t0.440546505471323730,\t0.440591391410140250,\t0.440636276247478310,\t0.440681159983225660,\t\n0.440726042617270550,\t0.440770924149499920,\t0.440815804579801960,\t0.440860683908064540,\t0.440905562134175750,\t0.440950439258022690,\t0.440995315279493540,\t0.441040190198476460,\t\n0.441085064014858530,\t0.441129936728527900,\t0.441174808339372500,\t0.441219678847280420,\t0.441264548252138790,\t0.441309416553835760,\t0.441354283752259210,\t0.441399149847297330,\t\n0.441444014838837160,\t0.441488878726767010,\t0.441533741510974630,\t0.441578603191348280,\t0.441623463767775060,\t0.441668323240143160,\t0.441713181608340440,\t0.441758038872255180,\t\n0.441802895031774390,\t0.441847750086786450,\t0.441892604037179450,\t0.441937456882840580,\t0.441982308623658060,\t0.442027159259519740,\t0.442072008790313940,\t0.442116857215927750,\t\n0.442161704536249370,\t0.442206550751166770,\t0.442251395860568160,\t0.442296239864340690,\t0.442341082762372610,\t0.442385924554551830,\t0.442430765240766630,\t0.442475604820904090,\t\n0.442520443294852570,\t0.442565280662499950,\t0.442610116923734530,\t0.442654952078443350,\t0.442699786126514890,\t0.442744619067837300,\t0.442789450902297770,\t0.442834281629784610,\t\n0.442879111250185750,\t0.442923939763389560,\t0.442968767169283070,\t0.443013593467754650,\t0.443058418658692280,\t0.443103242741984260,\t0.443148065717517750,\t0.443192887585181050,\t\n0.443237708344862150,\t0.443282527996449350,\t0.443327346539829860,\t0.443372163974891990,\t0.443416980301523660,\t0.443461795519613340,\t0.443506609629048140,\t0.443551422629716360,\t\n0.443596234521506090,\t0.443641045304305590,\t0.443685854978002110,\t0.443730663542483970,\t0.443775470997639590,\t0.443820277343356110,\t0.443865082579521950,\t0.443909886706025050,\t\n0.443954689722753870,\t0.443999491629595570,\t0.444044292426438500,\t0.444089092113170770,\t0.444133890689680620,\t0.444178688155855430,\t0.444223484511583440,\t0.444268279756752820,\t\n0.444313073891251850,\t0.444357866914967810,\t0.444402658827789070,\t0.444447449629603750,\t0.444492239320300130,\t0.444537027899765570,\t0.444581815367888430,\t0.444626601724557150,\t\n0.444671386969658970,\t0.444716171103082260,\t0.444760954124715220,\t0.444805736034446120,\t0.444850516832162310,\t0.444895296517752230,\t0.444940075091103890,\t0.444984852552105740,\t\n0.445029628900645070,\t0.445074404136610370,\t0.445119178259889610,\t0.445163951270371280,\t0.445208723167942740,\t0.445253493952492360,\t0.445298263623908230,\t0.445343032182078880,\t\n0.445387799626891510,\t0.445432565958234660,\t0.445477331175996800,\t0.445522095280065260,\t0.445566858270328380,\t0.445611620146674440,\t0.445656380908991790,\t0.445701140557167810,\t\n0.445745899091091020,\t0.445790656510649420,\t0.445835412815731640,\t0.445880168006224880,\t0.445924922082017670,\t0.445969675042998230,\t0.446014426889054960,\t0.446059177620075240,\t\n0.446103927235947550,\t0.446148675736560090,\t0.446193423121801320,\t0.446238169391558580,\t0.446282914545720390,\t0.446327658584174950,\t0.446372401506810790,\t0.446417143313515170,\t\n0.446461884004176750,\t0.446506623578683980,\t0.446551362036924250,\t0.446596099378786140,\t0.446640835604157740,\t0.446685570712927690,\t0.446730304704983320,\t0.446775037580213140,\t\n0.446819769338505420,\t0.446864499979748640,\t0.446909229503830220,\t0.446953957910638740,\t0.446998685200062360,\t0.447043411371989610,\t0.447088136426308010,\t0.447132860362906060,\t\n0.447177583181671940,\t0.447222304882494260,\t0.447267025465260430,\t0.447311744929859030,\t0.447356463276178620,\t0.447401180504106710,\t0.447445896613531850,\t0.447490611604342230,\t\n0.447535325476426490,\t0.447580038229672020,\t0.447624749863967500,\t0.447669460379201080,\t0.447714169775261410,\t0.447758878052035900,\t0.447803585209413210,\t0.447848291247281540,\t\n0.447892996165529580,\t0.447937699964044640,\t0.447982402642715550,\t0.448027104201430440,\t0.448071804640077900,\t0.448116503958545520,\t0.448161202156721840,\t0.448205899234495610,\t\n0.448250595191754140,\t0.448295290028386250,\t0.448339983744280140,\t0.448384676339324440,\t0.448429367813406700,\t0.448474058166415500,\t0.448518747398239160,\t0.448563435508766320,\t\n0.448608122497884510,\t0.448652808365482440,\t0.448697493111448300,\t0.448742176735670850,\t0.448786859238037520,\t0.448831540618437110,\t0.448876220876757770,\t0.448920900012888310,\t\n0.448965578026716220,\t0.449010254918130180,\t0.449054930687018520,\t0.449099605333269870,\t0.449144278856771880,\t0.449188951257413150,\t0.449233622535082420,\t0.449278292689667290,\t\n0.449322961721056400,\t0.449367629629138120,\t0.449412296413801150,\t0.449456962074933020,\t0.449501626612422540,\t0.449546290026157980,\t0.449590952316028080,\t0.449635613481920380,\t\n0.449680273523723640,\t0.449724932441326270,\t0.449769590234616930,\t0.449814246903483210,\t0.449858902447813900,\t0.449903556867497330,\t0.449948210162422260,\t0.449992862332476260,\t\n0.450037513377548100,\t0.450082163297526590,\t0.450126812092299270,\t0.450171459761754880,\t0.450216106305781850,\t0.450260751724268990,\t0.450305396017103790,\t0.450350039184175150,\t\n0.450394681225371410,\t0.450439322140581360,\t0.450483961929692590,\t0.450528600592593920,\t0.450573238129173770,\t0.450617874539320900,\t0.450662509822922940,\t0.450707143979868720,\t\n0.450751777010046650,\t0.450796408913345490,\t0.450841039689652940,\t0.450885669338857820,\t0.450930297860848930,\t0.450974925255513860,\t0.451019551522741480,\t0.451064176662420210,\t\n0.451108800674438930,\t0.451153423558685210,\t0.451198045315047980,\t0.451242665943415610,\t0.451287285443676970,\t0.451331903815719690,\t0.451376521059432710,\t0.451421137174704390,\t\n0.451465752161423650,\t0.451510366019478140,\t0.451554978748756660,\t0.451599590349147760,\t0.451644200820540300,\t0.451688810162821920,\t0.451733418375881550,\t0.451778025459607990,\t\n0.451822631413889010,\t0.451867236238613410,\t0.451911839933669730,\t0.451956442498946900,\t0.452001043934332490,\t0.452045644239715490,\t0.452090243414984440,\t0.452134841460028080,\t\n0.452179438374734290,\t0.452224034158991870,\t0.452268628812689420,\t0.452313222335715750,\t0.452357814727958610,\t0.452402405989306980,\t0.452446996119649280,\t0.452491585118874550,\t\n0.452536172986870430,\t0.452580759723525850,\t0.452625345328729390,\t0.452669929802369970,\t0.452714513144335360,\t0.452759095354514420,\t0.452803676432796180,\t0.452848256379068340,\t\n0.452892835193219820,\t0.452937412875139220,\t0.452981989424715510,\t0.453026564841836450,\t0.453071139126390960,\t0.453115712278267580,\t0.453160284297355390,\t0.453204855183542030,\t\n0.453249424936716550,\t0.453293993556767530,\t0.453338561043583890,\t0.453383127397053500,\t0.453427692617065230,\t0.453472256703507770,\t0.453516819656270050,\t0.453561381475239890,\t\n0.453605942160306250,\t0.453650501711358180,\t0.453695060128283480,\t0.453739617410971070,\t0.453784173559309670,\t0.453828728573188230,\t0.453873282452494530,\t0.453917835197117650,\t\n0.453962386806946230,\t0.454006937281869190,\t0.454051486621774410,\t0.454096034826550920,\t0.454140581896087300,\t0.454185127830272710,\t0.454229672628994830,\t0.454274216292142820,\t\n0.454318758819605210,\t0.454363300211271140,\t0.454407840467028420,\t0.454452379586766100,\t0.454496917570373250,\t0.454541454417737630,\t0.454585990128748450,\t0.454630524703294290,\t\n0.454675058141264190,\t0.454719590442546060,\t0.454764121607028950,\t0.454808651634601550,\t0.454853180525152890,\t0.454897708278570900,\t0.454942234894744610,\t0.454986760373562780,\t\n0.455031284714914440,\t0.455075807918687460,\t0.455120329984770980,\t0.455164850913053700,\t0.455209370703424650,\t0.455253889355771770,\t0.455298406869984180,\t0.455342923245950600,\t\n0.455387438483560110,\t0.455431952582700580,\t0.455476465543261210,\t0.455520977365131030,\t0.455565488048198080,\t0.455609997592351320,\t0.455654505997479640,\t0.455699013263472060,\t\n0.455743519390216570,\t0.455788024377602240,\t0.455832528225517900,\t0.455877030933852620,\t0.455921532502494340,\t0.455966032931332250,\t0.456010532220255120,\t0.456055030369151960,\t\n0.456099527377910930,\t0.456144023246421000,\t0.456188517974571050,\t0.456233011562250210,\t0.456277504009346410,\t0.456321995315748910,\t0.456366485481346780,\t0.456410974506028020,\t\n0.456455462389681820,\t0.456499949132196990,\t0.456544434733462730,\t0.456588919193366920,\t0.456633402511798850,\t0.456677884688647230,\t0.456722365723801320,\t0.456766845617149090,\t\n0.456811324368579800,\t0.456855801977982150,\t0.456900278445245390,\t0.456944753770257510,\t0.456989227952907810,\t0.457033700993084990,\t0.457078172890678370,\t0.457122643645575870,\t\n0.457167113257666790,\t0.457211581726840290,\t0.457256049052984450,\t0.457300515235988530,\t0.457344980275741280,\t0.457389444172132010,\t0.457433906925048710,\t0.457478368534380620,\t\n0.457522829000016620,\t0.457567288321845960,\t0.457611746499756670,\t0.457656203533638060,\t0.457700659423378900,\t0.457745114168868480,\t0.457789567769994910,\t0.457834020226647380,\t\n0.457878471538714800,\t0.457922921706086510,\t0.457967370728650460,\t0.458011818606295970,\t0.458056265338912360,\t0.458100710926387660,\t0.458145155368611220,\t0.458189598665471880,\t\n0.458234040816858920,\t0.458278481822660510,\t0.458322921682765840,\t0.458367360397063940,\t0.458411797965443960,\t0.458456234387794090,\t0.458500669664003660,\t0.458545103793961570,\t\n0.458589536777557090,\t0.458633968614678420,\t0.458678399305214760,\t0.458722828849055130,\t0.458767257246088860,\t0.458811684496204020,\t0.458856110599289990,\t0.458900535555235630,\t\n0.458944959363930370,\t0.458989382025262290,\t0.459033803539120820,\t0.459078223905395160,\t0.459122643123973610,\t0.459167061194745370,\t0.459211478117599550,\t0.459255893892425380,\t\n0.459300308519111130,\t0.459344721997546060,\t0.459389134327619240,\t0.459433545509219940,\t0.459477955542236360,\t0.459522364426557920,\t0.459566772162073590,\t0.459611178748672690,\t\n0.459655584186243470,\t0.459699988474675300,\t0.459744391613857160,\t0.459788793603678410,\t0.459833194444027260,\t0.459877594134793180,\t0.459921992675865480,\t0.459966390067132410,\t\n0.460010786308483350,\t0.460055181399807330,\t0.460099575340993770,\t0.460143968131930870,\t0.460188359772508050,\t0.460232750262614340,\t0.460277139602139120,\t0.460321527790970690,\t\n0.460365914828998410,\t0.460410300716111330,\t0.460454685452198920,\t0.460499069037149430,\t0.460543451470852240,\t0.460587832753196420,\t0.460632212884071410,\t0.460676591863365460,\t\n0.460720969690968040,\t0.460765346366768640,\t0.460809721890655390,\t0.460854096262517890,\t0.460898469482245170,\t0.460942841549726650,\t0.460987212464850580,\t0.461031582227506560,\t\n0.461075950837583510,\t0.461120318294971020,\t0.461164684599557340,\t0.461209049751231950,\t0.461253413749883930,\t0.461297776595402780,\t0.461342138287676780,\t0.461386498826595440,\t\n0.461430858212047880,\t0.461475216443923530,\t0.461519573522110760,\t0.461563929446499040,\t0.461608284216977530,\t0.461652637833435690,\t0.461696990295761830,\t0.461741341603845560,\t\n0.461785691757576280,\t0.461830040756842360,\t0.461874388601533400,\t0.461918735291538430,\t0.461963080826747030,\t0.462007425207047520,\t0.462051768432329420,\t0.462096110502481950,\t\n0.462140451417394570,\t0.462184791176955710,\t0.462229129781054790,\t0.462273467229581130,\t0.462317803522424130,\t0.462362138659472290,\t0.462406472640615070,\t0.462450805465741690,\t\n0.462495137134741660,\t0.462539467647503420,\t0.462583797003916500,\t0.462628125203870480,\t0.462672452247253730,\t0.462716778133955840,\t0.462761102863866070,\t0.462805426436873890,\t\n0.462849748852867780,\t0.462894070111737280,\t0.462938390213371580,\t0.462982709157660320,\t0.463027026944491940,\t0.463071343573755900,\t0.463115659045341580,\t0.463159973359138500,\t\n0.463204286515035040,\t0.463248598512920880,\t0.463292909352685240,\t0.463337219034217760,\t0.463381527557406800,\t0.463425834922142010,\t0.463470141128313030,\t0.463514446175808340,\t\n0.463558750064517470,\t0.463603052794329780,\t0.463647354365134820,\t0.463691654776821120,\t0.463735954029278250,\t0.463780252122395490,\t0.463824549056062520,\t0.463868844830167770,\t\n0.463913139444600890,\t0.463957432899251180,\t0.464001725194008290,\t0.464046016328760690,\t0.464090306303398040,\t0.464134595117809630,\t0.464178882771885130,\t0.464223169265512990,\t\n0.464267454598582980,\t0.464311738770984690,\t0.464356021782606710,\t0.464400303633338620,\t0.464444584323069790,\t0.464488863851689910,\t0.464533142219087480,\t0.464577419425152180,\t\n0.464621695469773330,\t0.464665970352840630,\t0.464710244074242610,\t0.464754516633869020,\t0.464798788031609070,\t0.464843058267352620,\t0.464887327340988090,\t0.464931595252405240,\t\n0.464975862001493380,\t0.465020127588142260,\t0.465064392012240480,\t0.465108655273677670,\t0.465152917372343270,\t0.465197178308126960,\t0.465241438080917280,\t0.465285696690603990,\t\n0.465329954137076900,\t0.465374210420224530,\t0.465418465539936600,\t0.465462719496102520,\t0.465506972288612040,\t0.465551223917353760,\t0.465595474382217380,\t0.465639723683092310,\t\n0.465683971819868370,\t0.465728218792434090,\t0.465772464600679230,\t0.465816709244493250,\t0.465860952723765880,\t0.465905195038385730,\t0.465949436188242580,\t0.465993676173225850,\t\n0.466037914993225330,\t0.466082152648129630,\t0.466126389137828560,\t0.466170624462211860,\t0.466214858621168240,\t0.466259091614587510,\t0.466303323442358970,\t0.466347554104372560,\t\n0.466391783600516860,\t0.466436011930681740,\t0.466480239094756550,\t0.466524465092631180,\t0.466568689924194260,\t0.466612913589335600,\t0.466657136087944620,\t0.466701357419911260,\t\n0.466745577585124080,\t0.466789796583472970,\t0.466834014414847340,\t0.466878231079137060,\t0.466922446576230830,\t0.466966660906018520,\t0.467010874068389930,\t0.467055086063233700,\t\n0.467099296890439830,\t0.467143506549897670,\t0.467187715041497200,\t0.467231922365127010,\t0.467276128520677010,\t0.467320333508036700,\t0.467364537327095930,\t0.467408739977743400,\t\n0.467452941459869100,\t0.467497141773362380,\t0.467541340918113220,\t0.467585538894010330,\t0.467629735700943570,\t0.467673931338802470,\t0.467718125807476960,\t0.467762319106855730,\t\n0.467806511236828700,\t0.467850702197285420,\t0.467894891988115740,\t0.467939080609208410,\t0.467983268060453430,\t0.468027454341740650,\t0.468071639452958880,\t0.468115823393997990,\t\n0.468160006164747510,\t0.468204187765097420,\t0.468248368194936480,\t0.468292547454154660,\t0.468336725542641390,\t0.468380902460286740,\t0.468425078206979480,\t0.468469252782609480,\t\n0.468513426187066370,\t0.468557598420240030,\t0.468601769482019370,\t0.468645939372294260,\t0.468690108090954290,\t0.468734275637889440,\t0.468778442012988570,\t0.468822607216141550,\t\n0.468866771247238360,\t0.468910934106167910,\t0.468955095792820130,\t0.468999256307084560,\t0.469043415648851270,\t0.469087573818009030,\t0.469131730814447920,\t0.469175886638057430,\t\n0.469220041288727630,\t0.469264194766347340,\t0.469308347070806540,\t0.469352498201994870,\t0.469396648159802370,\t0.469440796944117830,\t0.469484944554831360,\t0.469529090991832490,\t\n0.469573236255011240,\t0.469617380344256540,\t0.469661523259458420,\t0.469705665000506870,\t0.469749805567290730,\t0.469793944959700120,\t0.469838083177624650,\t0.469882220220954330,\t\n0.469926356089578110,\t0.469970490783385930,\t0.470014624302267590,\t0.470058756646113070,\t0.470102887814811240,\t0.470147017808252190,\t0.470191146626325660,\t0.470235274268921590,\t\n0.470279400735928940,\t0.470323526027237810,\t0.470367650142737900,\t0.470411773082319180,\t0.470455894845870690,\t0.470500015433282460,\t0.470544134844444570,\t0.470588253079245960,\t\n0.470632370137576690,\t0.470676486019326550,\t0.470720600724385540,\t0.470764714252642660,\t0.470808826603987980,\t0.470852937778311220,\t0.470897047775502560,\t0.470941156595450830,\t\n0.470985264238046260,\t0.471029370703178460,\t0.471073475990737680,\t0.471117580100612830,\t0.471161683032694010,\t0.471205784786870970,\t0.471249885363033860,\t0.471293984761071650,\t\n0.471338082980874480,\t0.471382180022332120,\t0.471426275885334700,\t0.471470370569771200,\t0.471514464075531770,\t0.471558556402506550,\t0.471602647550584560,\t0.471646737519655910,\t\n0.471690826309610460,\t0.471734913920338340,\t0.471779000351728540,\t0.471823085603671260,\t0.471867169676056240,\t0.471911252568773700,\t0.471955334281712600,\t0.471999414814763210,\t\n0.472043494167815270,\t0.472087572340758990,\t0.472131649333483390,\t0.472175725145878630,\t0.472219799777834570,\t0.472263873229241460,\t0.472307945499988220,\t0.472352016589965120,\t\n0.472396086499062400,\t0.472440155227169030,\t0.472484222774175290,\t0.472528289139971030,\t0.472572354324446390,\t0.472616418327490460,\t0.472660481148993510,\t0.472704542788845380,\t\n0.472748603246936290,\t0.472792662523155270,\t0.472836720617392570,\t0.472880777529538110,\t0.472924833259482090,\t0.472968887807113600,\t0.473012941172322900,\t0.473056993354999840,\t\n0.473101044355034640,\t0.473145094172316480,\t0.473189142806735570,\t0.473233190258182220,\t0.473277236526545520,\t0.473321281611715660,\t0.473365325513582680,\t0.473409368232036720,\t\n0.473453409766966930,\t0.473497450118263660,\t0.473541489285816740,\t0.473585527269516530,\t0.473629564069252050,\t0.473673599684913740,\t0.473717634116391340,\t0.473761667363575280,\t\n0.473805699426354700,\t0.473849730304619850,\t0.473893759998260670,\t0.473937788507167450,\t0.473981815831229390,\t0.474025841970336810,\t0.474069866924379580,\t0.474113890693248110,\t\n0.474157913276831540,\t0.474201934675020140,\t0.474245954887704320,\t0.474289973914773230,\t0.474333991756117180,\t0.474378008411626200,\t0.474422023881190540,\t0.474466038164699460,\t\n0.474510051262043260,\t0.474554063173111940,\t0.474598073897795850,\t0.474642083435984190,\t0.474686091787567320,\t0.474730098952435230,\t0.474774104930478280,\t0.474818109721585670,\t\n0.474862113325647820,\t0.474906115742554650,\t0.474950116972196580,\t0.474994117014462810,\t0.475038115869243830,\t0.475082113536429870,\t0.475126110015910260,\t0.475170105307575360,\t\n0.475214099411315210,\t0.475258092327020210,\t0.475302084054579580,\t0.475346074593883780,\t0.475390063944822750,\t0.475434052107286950,\t0.475478039081165650,\t0.475522024866349200,\t\n0.475566009462727760,\t0.475609992870191680,\t0.475653975088630170,\t0.475697956117933750,\t0.475741935957992470,\t0.475785914608696680,\t0.475829892069935760,\t0.475873868341600110,\t\n0.475917843423580180,\t0.475961817315765260,\t0.476005790018045770,\t0.476049761530311810,\t0.476093731852453850,\t0.476137700984361150,\t0.476181668925924170,\t0.476225635677033080,\t\n0.476269601237578280,\t0.476313565607449090,\t0.476357528786535980,\t0.476401490774728990,\t0.476445451571918750,\t0.476489411177994430,\t0.476533369592846650,\t0.476577326816365390,\t\n0.476621282848441190,\t0.476665237688963410,\t0.476709191337822580,\t0.476753143794909070,\t0.476797095060112420,\t0.476841045133322980,\t0.476884994014430910,\t0.476928941703326780,\t\n0.476972888199899860,\t0.477016833504040780,\t0.477060777615639590,\t0.477104720534586800,\t0.477148662260771850,\t0.477192602794085260,\t0.477236542134417190,\t0.477280480281658090,\t\n0.477324417235697460,\t0.477368352996425770,\t0.477412287563733160,\t0.477456220937510280,\t0.477500153117646430,\t0.477544084104032150,\t0.477588013896557750,\t0.477631942495113650,\t\n0.477675869899589320,\t0.477719796109875310,\t0.477763721125862180,\t0.477807644947439380,\t0.477851567574497430,\t0.477895489006926630,\t0.477939409244617470,\t0.477983328287459370,\t\n0.478027246135342980,\t0.478071162788158480,\t0.478115078245796410,\t0.478158992508146310,\t0.478202905575098700,\t0.478246817446543850,\t0.478290728122372330,\t0.478334637602473630,\t\n0.478378545886738280,\t0.478422452975056590,\t0.478466358867319200,\t0.478510263563415470,\t0.478554167063236110,\t0.478598069366671710,\t0.478641970473611730,\t0.478685870383946830,\t\n0.478729769097567260,\t0.478773666614363710,\t0.478817562934225560,\t0.478861458057043500,\t0.478905351982707780,\t0.478949244711109060,\t0.478993136242136910,\t0.479037026575681870,\t\n0.479080915711634250,\t0.479124803649884750,\t0.479168690390322840,\t0.479212575932839220,\t0.479256460277324160,\t0.479300343423668340,\t0.479344225371761250,\t0.479388106121493630,\t\n0.479431985672756130,\t0.479475864025438240,\t0.479519741179430690,\t0.479563617134623810,\t0.479607491890908290,\t0.479651365448173660,\t0.479695237806310570,\t0.479739108965209440,\t\n0.479782978924760910,\t0.479826847684854510,\t0.479870715245381000,\t0.479914581606230740,\t0.479958446767294380,\t0.480002310728461560,\t0.480046173489622920,\t0.480090035050668830,\t\n0.480133895411490100,\t0.480177754571976200,\t0.480221612532017890,\t0.480265469291505600,\t0.480309324850330010,\t0.480353179208380720,\t0.480397032365548480,\t0.480440884321724050,\t\n0.480484735076797010,\t0.480528584630658120,\t0.480572432983197790,\t0.480616280134306790,\t0.480660126083874650,\t0.480703970831792230,\t0.480747814377949890,\t0.480791656722238390,\t\n0.480835497864547380,\t0.480879337804767600,\t0.480923176542789490,\t0.480967014078503790,\t0.481010850411800190,\t0.481054685542569470,\t0.481098519470702040,\t0.481142352196088700,\t\n0.481186183718619100,\t0.481230014038184000,\t0.481273843154674310,\t0.481317671067979570,\t0.481361497777990700,\t0.481405323284598060,\t0.481449147587692470,\t0.481492970687163680,\t\n0.481536792582902440,\t0.481580613274799230,\t0.481624432762744860,\t0.481668251046629030,\t0.481712068126342540,\t0.481755884001775940,\t0.481799698672819960,\t0.481843512139364380,\t\n0.481887324401300000,\t0.481931135458517290,\t0.481974945310907180,\t0.482018753958359300,\t0.482062561400764530,\t0.482106367638013730,\t0.482150172669996660,\t0.482193976496604120,\t\n0.482237779117726690,\t0.482281580533255150,\t0.482325380743079290,\t0.482369179747089980,\t0.482412977545177760,\t0.482456774137233420,\t0.482500569523146790,\t0.482544363702808730,\t\n0.482588156676109710,\t0.482631948442940770,\t0.482675739003191550,\t0.482719528356752970,\t0.482763316503515560,\t0.482807103443370240,\t0.482850889176206780,\t0.482894673701916130,\t\n0.482938457020389120,\t0.482982239131515670,\t0.483026020035186520,\t0.483069799731292380,\t0.483113578219724120,\t0.483157355500371530,\t0.483201131573125550,\t0.483244906437876760,\t\n0.483288680094516090,\t0.483332452542933280,\t0.483376223783019370,\t0.483419993814664940,\t0.483463762637760860,\t0.483507530252197000,\t0.483551296657864340,\t0.483595061854653400,\t\n0.483638825842455210,\t0.483682588621159590,\t0.483726350190657460,\t0.483770110550839460,\t0.483813869701596620,\t0.483857627642818640,\t0.483901384374396670,\t0.483945139896221570,\t\n0.483988894208183250,\t0.484032647310172700,\t0.484076399202080510,\t0.484120149883797760,\t0.484163899355214200,\t0.484207647616220930,\t0.484251394666708520,\t0.484295140506568020,\t\n0.484338885135689230,\t0.484382628553963300,\t0.484426370761280760,\t0.484470111757532680,\t0.484513851542608950,\t0.484557590116400590,\t0.484601327478798250,\t0.484645063629693010,\t\n0.484688798568974680,\t0.484732532296534350,\t0.484776264812263100,\t0.484819996116050810,\t0.484863726207788500,\t0.484907455087366880,\t0.484951182754677020,\t0.484994909209608800,\t\n0.485038634452053310,\t0.485082358481901290,\t0.485126081299043720,\t0.485169802903370530,\t0.485213523294772850,\t0.485257242473141390,\t0.485300960438367180,\t0.485344677190340190,\t\n0.485388392728951510,\t0.485432107054091900,\t0.485475820165652330,\t0.485519532063522830,\t0.485563242747594550,\t0.485606952217758510,\t0.485650660473904710,\t0.485694367515924260,\t\n0.485738073343707940,\t0.485781777957146780,\t0.485825481356130790,\t0.485869183540551090,\t0.485912884510298460,\t0.485956584265263950,\t0.486000282805337640,\t0.486043980130410610,\t\n0.486087676240373630,\t0.486131371135117840,\t0.486175064814533260,\t0.486218757278510990,\t0.486262448526941840,\t0.486306138559716940,\t0.486349827376726330,\t0.486393514977861150,\t\n0.486437201363012160,\t0.486480886532070560,\t0.486524570484926370,\t0.486568253221470740,\t0.486611934741594860,\t0.486655615045188780,\t0.486699294132143630,\t0.486742972002350280,\t\n0.486786648655699870,\t0.486830324092082490,\t0.486873998311389280,\t0.486917671313511050,\t0.486961343098339050,\t0.487005013665763260,\t0.487048683015675000,\t0.487092351147965010,\t\n0.487136018062524490,\t0.487179683759243590,\t0.487223348238013440,\t0.487267011498724980,\t0.487310673541269330,\t0.487354334365536600,\t0.487397993971418090,\t0.487441652358804930,\t\n0.487485309527587280,\t0.487528965477656340,\t0.487572620208902960,\t0.487616273721218460,\t0.487659926014492870,\t0.487703577088617500,\t0.487747226943483160,\t0.487790875578981150,\t\n0.487834522995001520,\t0.487878169191435620,\t0.487921814168174320,\t0.487965457925108810,\t0.488009100462129310,\t0.488052741779127050,\t0.488096381875992970,\t0.488140020752618310,\t\n0.488183658408893160,\t0.488227294844708890,\t0.488270930059956810,\t0.488314564054526950,\t0.488358196828310720,\t0.488401828381199000,\t0.488445458713083090,\t0.488489087823853140,\t\n0.488532715713400510,\t0.488576342381616070,\t0.488619967828391120,\t0.488663592053615870,\t0.488707215057181680,\t0.488750836838979460,\t0.488794457398900480,\t0.488838076736835050,\t\n0.488881694852674350,\t0.488925311746309430,\t0.488968927417631650,\t0.489012541866531150,\t0.489056155092899290,\t0.489099767096627390,\t0.489143377877605760,\t0.489186987435725640,\t\n0.489230595770878070,\t0.489274202882954420,\t0.489317808771844830,\t0.489361413437440720,\t0.489405016879633110,\t0.489448619098313330,\t0.489492220093371620,\t0.489535819864699350,\t\n0.489579418412187550,\t0.489623015735727530,\t0.489666611835209650,\t0.489710206710525230,\t0.489753800361565240,\t0.489797392788221210,\t0.489840983990383280,\t0.489884573967942880,\t\n0.489928162720791040,\t0.489971750248819230,\t0.490015336551917590,\t0.490058921629977660,\t0.490102505482890800,\t0.490146088110547270,\t0.490189669512838540,\t0.490233249689655650,\t\n0.490276828640890010,\t0.490320406366431930,\t0.490363982866172780,\t0.490407558140003700,\t0.490451132187816110,\t0.490494705009500320,\t0.490538276604947750,\t0.490581846974049500,\t\n0.490625416116697020,\t0.490668984032780590,\t0.490712550722191720,\t0.490756116184821510,\t0.490799680420561320,\t0.490843243429301580,\t0.490886805210933750,\t0.490930365765349260,\t\n0.490973925092438530,\t0.491017483192092930,\t0.491061040064203650,\t0.491104595708662110,\t0.491148150125358730,\t0.491191703314184990,\t0.491235255275031980,\t0.491278806007791170,\t\n0.491322355512353040,\t0.491365903788608950,\t0.491409450836450160,\t0.491452996655768080,\t0.491496541246453140,\t0.491540084608396880,\t0.491583626741490360,\t0.491627167645625200,\t\n0.491670707320691740,\t0.491714245766581460,\t0.491757782983185950,\t0.491801318970395640,\t0.491844853728102050,\t0.491888387256196270,\t0.491931919554569940,\t0.491975450623113430,\t\n0.492018980461718270,\t0.492062509070275660,\t0.492106036448677180,\t0.492149562596813190,\t0.492193087514575360,\t0.492236611201854750,\t0.492280133658543060,\t0.492323654884530560,\t\n0.492367174879708990,\t0.492410693643969500,\t0.492454211177203620,\t0.492497727479301820,\t0.492541242550155740,\t0.492584756389656540,\t0.492628268997695800,\t0.492671780374164040,\t\n0.492715290518952800,\t0.492758799431953720,\t0.492802307113057280,\t0.492845813562155070,\t0.492889318779138330,\t0.492932822763898660,\t0.492976325516326590,\t0.493019827036313640,\t\n0.493063327323751190,\t0.493106826378530760,\t0.493150324200542890,\t0.493193820789679220,\t0.493237316145831000,\t0.493280810268889870,\t0.493324303158746310,\t0.493367794815292030,\t\n0.493411285238418260,\t0.493454774428016610,\t0.493498262383977700,\t0.493541749106193080,\t0.493585234594554500,\t0.493628718848952490,\t0.493672201869278630,\t0.493715683655424290,\t\n0.493759164207281110,\t0.493802643524739630,\t0.493846121607691530,\t0.493889598456028140,\t0.493933074069641150,\t0.493976548448421090,\t0.494020021592259660,\t0.494063493501048170,\t\n0.494106964174678360,\t0.494150433613040730,\t0.494193901816027010,\t0.494237368783528530,\t0.494280834515437030,\t0.494324299011643040,\t0.494367762272038320,\t0.494411224296514570,\t\n0.494454685084962380,\t0.494498144637273480,\t0.494541602953339210,\t0.494585060033051300,\t0.494628515876300410,\t0.494671970482978170,\t0.494715423852976070,\t0.494758875986185730,\t\n0.494802326882497870,\t0.494845776541804170,\t0.494889224963996010,\t0.494932672148965190,\t0.494976118096602300,\t0.495019562806799100,\t0.495063006279447050,\t0.495106448514437800,\t\n0.495149889511662060,\t0.495193329271011620,\t0.495236767792378240,\t0.495280205075652570,\t0.495323641120726350,\t0.495367075927491070,\t0.495410509495838420,\t0.495453941825659160,\t\n0.495497372916845040,\t0.495540802769287470,\t0.495584231382878330,\t0.495627658757508190,\t0.495671084893068880,\t0.495714509789451860,\t0.495757933446549000,\t0.495801355864250890,\t\n0.495844777042449390,\t0.495888196981035980,\t0.495931615679902400,\t0.495975033138939430,\t0.496018449358038900,\t0.496061864337092210,\t0.496105278075991250,\t0.496148690574626740,\t\n0.496192101832890480,\t0.496235511850674380,\t0.496278920627869100,\t0.496322328164366500,\t0.496365734460058050,\t0.496409139514835730,\t0.496452543328590120,\t0.496495945901213150,\t\n0.496539347232596350,\t0.496582747322631520,\t0.496626146171209480,\t0.496669543778222090,\t0.496712940143560770,\t0.496756335267117540,\t0.496799729148783060,\t0.496843121788449300,\t\n0.496886513186007680,\t0.496929903341350230,\t0.496973292254367590,\t0.497016679924951690,\t0.497060066352994550,\t0.497103451538386810,\t0.497146835481020450,\t0.497190218180787010,\t\n0.497233599637578410,\t0.497276979851285380,\t0.497320358821799920,\t0.497363736549013610,\t0.497407113032818320,\t0.497450488273104840,\t0.497493862269765160,\t0.497537235022690870,\t\n0.497580606531773830,\t0.497623976796904840,\t0.497667345817976000,\t0.497710713594878730,\t0.497754080127505110,\t0.497797445415745890,\t0.497840809459493050,\t0.497884172258638570,\t\n0.497927533813073250,\t0.497970894122689130,\t0.498014253187377740,\t0.498057611007031160,\t0.498100967581540100,\t0.498144322910796690,\t0.498187676994692410,\t0.498231029833119340,\t\n0.498274381425968360,\t0.498317731773131380,\t0.498361080874500100,\t0.498404428729966430,\t0.498447775339421360,\t0.498491120702756860,\t0.498534464819864580,\t0.498577807690636480,\t\n0.498621149314963490,\t0.498664489692737580,\t0.498707828823850510,\t0.498751166708194250,\t0.498794503345659670,\t0.498837838736138790,\t0.498881172879523770,\t0.498924505775705410,\t\n0.498967837424575730,\t0.499011167826026560,\t0.499054496979949800,\t0.499097824886236390,\t0.499141151544778450,\t0.499184476955467640,\t0.499227801118195980,\t0.499271124032854450,\t\n0.499314445699335140,\t0.499357766117529690,\t0.499401085287330240,\t0.499444403208627650,\t0.499487719881314070,\t0.499531035305281200,\t0.499574349480421120,\t0.499617662406624750,\t\n0.499660974083784290,\t0.499704284511791720,\t0.499747593690538060,\t0.499790901619915460,\t0.499834208299815560,\t0.499877513730130560,\t0.499920817910751380,\t0.499964120841570160,\t\n0.500007422522478650,\t0.500050722953368940,\t0.500094022134132010,\t0.500137320064660050,\t0.500180616744844820,\t0.500223912174578400,\t0.500267206353751880,\t0.500310499282257240,\t\n0.500353790959986440,\t0.500397081386831480,\t0.500440370562683420,\t0.500483658487434480,\t0.500526945160976840,\t0.500570230583201380,\t0.500613514754000400,\t0.500656797673265540,\t\n0.500700079340889110,\t0.500743359756762100,\t0.500786638920776680,\t0.500829916832824740,\t0.500873193492798350,\t0.500916468900588500,\t0.500959743056087590,\t0.501003015959187280,\t\n0.501046287609779870,\t0.501089558007756230,\t0.501132827153008780,\t0.501176095045429260,\t0.501219361684909880,\t0.501262627071341730,\t0.501305891204616990,\t0.501349154084627550,\t\n0.501392415711265580,\t0.501435676084422190,\t0.501478935203989560,\t0.501522193069860120,\t0.501565449681924620,\t0.501608705040075710,\t0.501651959144204910,\t0.501695211994204530,\t\n0.501738463589965880,\t0.501781713931380930,\t0.501824963018341790,\t0.501868210850740630,\t0.501911457428468540,\t0.501954702751417850,\t0.501997946819480400,\t0.502041189632548400,\t\n0.502084431190513050,\t0.502127671493266650,\t0.502170910540701070,\t0.502214148332708610,\t0.502257384869180370,\t0.502300620150008650,\t0.502343854175085760,\t0.502387086944302900,\t\n0.502430318457552370,\t0.502473548714725940,\t0.502516777715716010,\t0.502560005460413910,\t0.502603231948711590,\t0.502646457180501380,\t0.502689681155675250,\t0.502732903874124610,\t\n0.502776125335741670,\t0.502819345540418520,\t0.502862564488047340,\t0.502905782178519330,\t0.502948998611726930,\t0.502992213787561980,\t0.503035427705916800,\t0.503078640366682820,\t\n0.503121851769752100,\t0.503165061915017200,\t0.503208270802369300,\t0.503251478431700710,\t0.503294684802903400,\t0.503337889915869810,\t0.503381093770491010,\t0.503424296366659530,\t\n0.503467497704267350,\t0.503510697783206780,\t0.503553896603369020,\t0.503597094164646600,\t0.503640290466931480,\t0.503683485510115880,\t0.503726679294091320,\t0.503769871818749990,\t\n0.503813063083983990,\t0.503856253089685730,\t0.503899441835746420,\t0.503942629322058580,\t0.503985815548514520,\t0.504029000515005430,\t0.504072184221423970,\t0.504115366667661990,\t\n0.504158547853612030,\t0.504201727779165280,\t0.504244906444214160,\t0.504288083848650870,\t0.504331259992367720,\t0.504374434875256020,\t0.504417608497208180,\t0.504460780858116410,\t\n0.504503951957873010,\t0.504547121796369400,\t0.504590290373498010,\t0.504633457689150800,\t0.504676623743220420,\t0.504719788535598070,\t0.504762952066176160,\t0.504806114334847010,\t\n0.504849275341502810,\t0.504892435086035210,\t0.504935593568336390,\t0.504978750788299010,\t0.505021906745814380,\t0.505065061440775010,\t0.505108214873072890,\t0.505151367042600660,\t\n0.505194517949249630,\t0.505237667592912330,\t0.505280815973480960,\t0.505323963090847820,\t0.505367108944904330,\t0.505410253535543140,\t0.505453396862656330,\t0.505496538926136440,\t\n0.505539679725874770,\t0.505582819261763850,\t0.505625957533695990,\t0.505669094541563500,\t0.505712230285258020,\t0.505755364764671870,\t0.505798497979697670,\t0.505841629930226970,\t\n0.505884760616152060,\t0.505927890037365380,\t0.505971018193759230,\t0.506014145085225240,\t0.506057270711655850,\t0.506100395072943240,\t0.506143518168980070,\t0.506186639999657740,\t\n0.506229760564868790,\t0.506272879864505530,\t0.506315997898460380,\t0.506359114666624750,\t0.506402230168891410,\t0.506445344405152540,\t0.506488457375300680,\t0.506531569079227250,\t\n0.506574679516825000,\t0.506617788687986350,\t0.506660896592602830,\t0.506704003230567080,\t0.506747108601771300,\t0.506790212706108250,\t0.506833315543469110,\t0.506876417113746870,\t\n0.506919517416833500,\t0.506962616452621640,\t0.507005714221002930,\t0.507048810721869910,\t0.507091905955114890,\t0.507134999920630490,\t0.507178092618308260,\t0.507221184048040730,\t\n0.507264274209720200,\t0.507307363103239430,\t0.507350450728489830,\t0.507393537085364170,\t0.507436622173754630,\t0.507479705993553960,\t0.507522788544653600,\t0.507565869826946180,\t\n0.507608949840324560,\t0.507652028584680170,\t0.507695106059905750,\t0.507738182265893510,\t0.507781257202536310,\t0.507824330869725450,\t0.507867403267353800,\t0.507910474395313670,\t\n0.507953544253497700,\t0.507996612841797530,\t0.508039680160105810,\t0.508082746208314840,\t0.508125810986317480,\t0.508168874494005160,\t0.508211936731270630,\t0.508254997698006310,\t\n0.508298057394104830,\t0.508341115819457840,\t0.508384172973957990,\t0.508427228857498250,\t0.508470283469969920,\t0.508513336811265980,\t0.508556388881278630,\t0.508599439679900730,\t\n0.508642489207023820,\t0.508685537462540640,\t0.508728584446343720,\t0.508771630158325720,\t0.508814674598378150,\t0.508857717766393990,\t0.508900759662265450,\t0.508943800285885480,\t\n0.508986839637145640,\t0.509029877715938660,\t0.509072914522156970,\t0.509115950055693430,\t0.509158984316439580,\t0.509202017304288270,\t0.509245049019132260,\t0.509288079460863300,\t\n0.509331108629374140,\t0.509374136524557210,\t0.509417163146305360,\t0.509460188494510140,\t0.509503212569064500,\t0.509546235369860880,\t0.509589256896791910,\t0.509632277149749570,\t\n0.509675296128626500,\t0.509718313833315120,\t0.509761330263708400,\t0.509804345419697880,\t0.509847359301176640,\t0.509890371908036880,\t0.509933383240171570,\t0.509976393297472460,\t\n0.510019402079832430,\t0.510062409587144220,\t0.510105415819299580,\t0.510148420776191490,\t0.510191424457712260,\t0.510234426863754860,\t0.510277427994211050,\t0.510320427848973580,\t\n0.510363426427935200,\t0.510406423730988550,\t0.510449419758025380,\t0.510492414508938790,\t0.510535407983621070,\t0.510578400181965210,\t0.510621391103863060,\t0.510664380749207390,\t\n0.510707369117890720,\t0.510750356209806020,\t0.510793342024845170,\t0.510836326562900790,\t0.510879309823865760,\t0.510922291807632710,\t0.510965272514093630,\t0.511008251943141260,\t\n0.511051230094668680,\t0.511094206968567780,\t0.511137182564731170,\t0.511180156883051740,\t0.511223129923422230,\t0.511266101685734500,\t0.511309072169881640,\t0.511352041375755960,\t\n0.511395009303250660,\t0.511437975952257370,\t0.511480941322669190,\t0.511523905414378640,\t0.511566868227278700,\t0.511609829761261240,\t0.511652790016219220,\t0.511695748992045170,\t\n0.511738706688632080,\t0.511781663105871920,\t0.511824618243657660,\t0.511867572101882160,\t0.511910524680437300,\t0.511953475979216250,\t0.511996425998111460,\t0.512039374737016000,\t\n0.512082322195821620,\t0.512125268374421520,\t0.512168213272708230,\t0.512211156890574840,\t0.512254099227913100,\t0.512297040284616200,\t0.512339980060576570,\t0.512382918555687520,\t\n0.512425855769840680,\t0.512468791702929250,\t0.512511726354845880,\t0.512554659725483530,\t0.512597591814734080,\t0.512640522622490710,\t0.512683452148646520,\t0.512726380393093150,\t\n0.512769307355723900,\t0.512812233036431420,\t0.512855157435108680,\t0.512898080551647760,\t0.512941002385941540,\t0.512983922937882860,\t0.513026842207364720,\t0.513069760194279080,\t\n0.513112676898519030,\t0.513155592319977320,\t0.513198506458547030,\t0.513241419314120150,\t0.513284330886589650,\t0.513327241175848270,\t0.513370150181789220,\t0.513413057904304470,\t\n0.513455964343287000,\t0.513498869498629660,\t0.513541773370225550,\t0.513584675957966530,\t0.513627577261745900,\t0.513670477281456650,\t0.513713376016990850,\t0.513756273468241710,\t\n0.513799169635101750,\t0.513842064517464280,\t0.513884958115221280,\t0.513927850428265940,\t0.513970741456490910,\t0.514013631199789380,\t0.514056519658053430,\t0.514099406831176160,\t\n0.514142292719050430,\t0.514185177321569320,\t0.514228060638624920,\t0.514270942670110310,\t0.514313823415918360,\t0.514356702875942260,\t0.514399581050074000,\t0.514442457938206750,\t\n0.514485333540233740,\t0.514528207856047140,\t0.514571080885539820,\t0.514613952628604990,\t0.514656823085135610,\t0.514699692255023660,\t0.514742560138162660,\t0.514785426734445160,\t\n0.514828292043764460,\t0.514871156066012640,\t0.514914018801083010,\t0.514956880248868320,\t0.514999740409261770,\t0.515042599282155460,\t0.515085456867442780,\t0.515128313165016280,\t\n0.515171168174769490,\t0.515214021896594380,\t0.515256874330384250,\t0.515299725476032310,\t0.515342575333430640,\t0.515385423902472550,\t0.515428271183050900,\t0.515471117175058890,\t\n0.515513961878388720,\t0.515556805292933680,\t0.515599647418586660,\t0.515642488255240950,\t0.515685327802788530,\t0.515728166061122820,\t0.515771003030136680,\t0.515813838709723420,\t\n0.515856673099775230,\t0.515899506200185320,\t0.515942338010846660,\t0.515985168531652550,\t0.516027997762495080,\t0.516070825703267680,\t0.516113652353863530,\t0.516156477714174940,\t\n0.516199301784095010,\t0.516242124563517040,\t0.516284946052333990,\t0.516327766250438190,\t0.516370585157723050,\t0.516413402774081430,\t0.516456219099406640,\t0.516499034133591000,\t\n0.516541847876527680,\t0.516584660328109790,\t0.516627471488230740,\t0.516670281356782500,\t0.516713089933658500,\t0.516755897218751930,\t0.516798703211955870,\t0.516841507913162750,\t\n0.516884311322265870,\t0.516927113439158090,\t0.516969914263733070,\t0.517012713795882760,\t0.517055512035500710,\t0.517098308982480330,\t0.517141104636713700,\t0.517183898998094360,\t\n0.517226692066515280,\t0.517269483841869770,\t0.517312274324050250,\t0.517355063512950020,\t0.517397851408462060,\t0.517440638010480010,\t0.517483423318895850,\t0.517526207333603220,\t\n0.517568990054494970,\t0.517611771481464760,\t0.517654551614404660,\t0.517697330453208200,\t0.517740107997768370,\t0.517782884247978690,\t0.517825659203731360,\t0.517868432864920010,\t\n0.517911205231437850,\t0.517953976303177300,\t0.517996746080031880,\t0.518039514561894570,\t0.518082281748658780,\t0.518125047640217050,\t0.518167812236462580,\t0.518210575537288660,\t\n0.518253337542588620,\t0.518296098252254870,\t0.518338857666180820,\t0.518381615784259680,\t0.518424372606384960,\t0.518467128132448770,\t0.518509882362344850,\t0.518552635295966290,\t\n0.518595386933206390,\t0.518638137273957690,\t0.518680886318113710,\t0.518723634065567870,\t0.518766380516212490,\t0.518809125669941200,\t0.518851869526647190,\t0.518894612086223780,\t\n0.518937353348563500,\t0.518980093313559760,\t0.519022831981105880,\t0.519065569351095270,\t0.519108305423420350,\t0.519151040197974640,\t0.519193773674651360,\t0.519236505853344020,\t\n0.519279236733945050,\t0.519321966316347970,\t0.519364694600445990,\t0.519407421586132620,\t0.519450147273300410,\t0.519492871661842770,\t0.519535594751652900,\t0.519578316542624540,\t\n0.519621037034649900,\t0.519663756227622730,\t0.519706474121436560,\t0.519749190715983690,\t0.519791906011157990,\t0.519834620006852430,\t0.519877332702960770,\t0.519920044099375420,\t\n0.519962754195989920,\t0.520005462992697560,\t0.520048170489391890,\t0.520090876685965430,\t0.520133581582311710,\t0.520176285178324150,\t0.520218987473896170,\t0.520261688468920400,\t\n0.520304388163290390,\t0.520347086556899430,\t0.520389783649641060,\t0.520432479441407910,\t0.520475173932093530,\t0.520517867121591650,\t0.520560559009794700,\t0.520603249596596320,\t\n0.520645938881889810,\t0.520688626865568830,\t0.520731313547526000,\t0.520773998927654750,\t0.520816683005848600,\t0.520859365782001090,\t0.520902047256004860,\t0.520944727427753440,\t\n0.520987406297140130,\t0.521030083864058800,\t0.521072760128401870,\t0.521115435090062970,\t0.521158108748935530,\t0.521200781104913190,\t0.521243452157888590,\t0.521286121907755250,\t\n0.521328790354407050,\t0.521371457497736390,\t0.521414123337637150,\t0.521456787874002630,\t0.521499451106726570,\t0.521542113035701420,\t0.521584773660821010,\t0.521627432981978670,\t\n0.521670090999068140,\t0.521712747711981950,\t0.521755403120613970,\t0.521798057224857390,\t0.521840710024606080,\t0.521883361519752680,\t0.521926011710190820,\t0.521968660595813930,\t\n0.522011308176515750,\t0.522053954452188940,\t0.522096599422727240,\t0.522139243088024510,\t0.522181885447973170,\t0.522224526502467200,\t0.522267166251399790,\t0.522309804694665040,\t\n0.522352441832155230,\t0.522395077663764360,\t0.522437712189385840,\t0.522480345408913420,\t0.522522977322239730,\t0.522565607929258550,\t0.522608237229863380,\t0.522650865223947990,\t\n0.522693491911405130,\t0.522736117292128430,\t0.522778741366011550,\t0.522821364132948110,\t0.522863985592830980,\t0.522906605745553810,\t0.522949224591010120,\t0.522991842129093780,\t\n0.523034458359697420,\t0.523077073282714910,\t0.523119686898040110,\t0.523162299205565780,\t0.523204910205185670,\t0.523247519896793190,\t0.523290128280282430,\t0.523332735355545810,\t\n0.523375341122477520,\t0.523417945580970770,\t0.523460548730919630,\t0.523503150572216640,\t0.523545751104755760,\t0.523588350328430540,\t0.523630948243134830,\t0.523673544848761390,\t\n0.523716140145204070,\t0.523758734132356410,\t0.523801326810112270,\t0.523843918178364510,\t0.523886508237006890,\t0.523929096985933370,\t0.523971684425036720,\t0.524014270554210900,\t\n0.524056855373349450,\t0.524099438882346110,\t0.524142021081093870,\t0.524184601969486570,\t0.524227181547417760,\t0.524269759814781410,\t0.524312336771470270,\t0.524354912417378300,\t\n0.524397486752398940,\t0.524440059776426380,\t0.524482631489353260,\t0.524525201891073430,\t0.524567770981480770,\t0.524610338760469030,\t0.524652905227930950,\t0.524695470383760740,\t\n0.524738034227852150,\t0.524780596760098140,\t0.524823157980392590,\t0.524865717888629240,\t0.524908276484701840,\t0.524950833768503490,\t0.524993389739928040,\t0.525035944398869030,\t\n0.525078497745220640,\t0.525121049778875530,\t0.525163600499727880,\t0.525206149907671120,\t0.525248698002599430,\t0.525291244784405700,\t0.525333790252983770,\t0.525376334408227400,\t\n0.525418877250030560,\t0.525461418778286120,\t0.525503958992888150,\t0.525546497893730310,\t0.525589035480706570,\t0.525631571753709890,\t0.525674106712634260,\t0.525716640357373750,\t\n0.525759172687821240,\t0.525801703703870800,\t0.525844233405416080,\t0.525886761792351170,\t0.525929288864569020,\t0.525971814621963630,\t0.526014339064428740,\t0.526056862191858320,\t\n0.526099384004145350,\t0.526141904501184030,\t0.526184423682867890,\t0.526226941549091000,\t0.526269458099746460,\t0.526311973334728230,\t0.526354487253930080,\t0.526396999857246080,\t\n0.526439511144569220,\t0.526482021115793560,\t0.526524529770813320,\t0.526567037109521240,\t0.526609543131811630,\t0.526652047837578240,\t0.526694551226715050,\t0.526737053299115020,\t\n0.526779554054672470,\t0.526822053493280930,\t0.526864551614834700,\t0.526907048419226750,\t0.526949543906351180,\t0.526992038076101620,\t0.527034530928372490,\t0.527077022463056540,\t\n0.527119512680048090,\t0.527162001579240870,\t0.527204489160529090,\t0.527246975423805610,\t0.527289460368964740,\t0.527331943995900550,\t0.527374426304506150,\t0.527416907294675610,\t\n0.527459386966302900,\t0.527501865319282110,\t0.527544342353506220,\t0.527586818068869420,\t0.527629292465265690,\t0.527671765542589100,\t0.527714237300732640,\t0.527756707739590600,\t\n0.527799176859056860,\t0.527841644659025500,\t0.527884111139389710,\t0.527926576300043580,\t0.527969040140881090,\t0.528011502661796310,\t0.528053963862682330,\t0.528096423743433570,\t\n0.528138882303944010,\t0.528181339544106950,\t0.528223795463816590,\t0.528266250062966680,\t0.528308703341451520,\t0.528351155299164210,\t0.528393605935999040,\t0.528436055251849780,\t\n0.528478503246610830,\t0.528520949920175290,\t0.528563395272437230,\t0.528605839303290860,\t0.528648282012630140,\t0.528690723400348390,\t0.528733163466339810,\t0.528775602210498350,\t\n0.528818039632718230,\t0.528860475732892630,\t0.528902910510915870,\t0.528945343966681800,\t0.528987776100084740,\t0.529030206911017880,\t0.529072636399375520,\t0.529115064565051970,\t\n0.529157491407940330,\t0.529199916927935000,\t0.529242341124929850,\t0.529284763998819300,\t0.529327185549496430,\t0.529369605776855550,\t0.529412024680790630,\t0.529454442261196090,\t\n0.529496858517965020,\t0.529539273450991830,\t0.529581687060170500,\t0.529624099345395230,\t0.529666510306559420,\t0.529708919943557290,\t0.529751328256282910,\t0.529793735244630580,\t\n0.529836140908493510,\t0.529878545247766010,\t0.529920948262342590,\t0.529963349952116470,\t0.530005750316981940,\t0.530048149356833090,\t0.530090547071564110,\t0.530132943461068540,\t\n0.530175338525240460,\t0.530217732263974170,\t0.530260124677163880,\t0.530302515764702890,\t0.530344905526485500,\t0.530387293962406030,\t0.530429681072358550,\t0.530472066856236600,\t\n0.530514451313934490,\t0.530556834445346180,\t0.530599216250366210,\t0.530641596728887780,\t0.530683975880805400,\t0.530726353706013400,\t0.530768730204405180,\t0.530811105375875170,\t\n0.530853479220317340,\t0.530895851737626210,\t0.530938222927695100,\t0.530980592790418430,\t0.531022961325690270,\t0.531065328533405050,\t0.531107694413456180,\t0.531150058965737970,\t\n0.531192422190144730,\t0.531234784086570770,\t0.531277144654909490,\t0.531319503895055330,\t0.531361861806902370,\t0.531404218390345240,\t0.531446573645277140,\t0.531488927571592610,\t\n0.531531280169185720,\t0.531573631437951000,\t0.531615981377781880,\t0.531658329988572760,\t0.531700677270218190,\t0.531743023222611580,\t0.531785367845647450,\t0.531827711139219780,\t\n0.531870053103223330,\t0.531912393737551280,\t0.531954733042098280,\t0.531997071016758530,\t0.532039407661426320,\t0.532081742975995420,\t0.532124076960360020,\t0.532166409614414420,\t\n0.532208740938053260,\t0.532251070931169750,\t0.532293399593658620,\t0.532335726925413980,\t0.532378052926330450,\t0.532420377596301450,\t0.532462700935221410,\t0.532505022942984960,\t\n0.532547343619485640,\t0.532589662964617960,\t0.532631980978276130,\t0.532674297660354790,\t0.532716613010747240,\t0.532758927029348130,\t0.532801239716051760,\t0.532843551070752650,\t\n0.532885861093344350,\t0.532928169783721260,\t0.532970477141777920,\t0.533012783167408630,\t0.533055087860507040,\t0.533097391220967780,\t0.533139693248684930,\t0.533181993943553370,\t\n0.533224293305466280,\t0.533266591334318530,\t0.533308888030004760,\t0.533351183392418270,\t0.533393477421453930,\t0.533435770117005830,\t0.533478061478968700,\t0.533520351507236090,\t\n0.533562640201702520,\t0.533604927562262410,\t0.533647213588810290,\t0.533689498281239790,\t0.533731781639445570,\t0.533774063663321920,\t0.533816344352763370,\t0.533858623707663680,\t\n0.533900901727917490,\t0.533943178413418870,\t0.533985453764062810,\t0.534027727779742720,\t0.534070000460353240,\t0.534112271805789240,\t0.534154541815944130,\t0.534196810490712660,\t\n0.534239077829989250,\t0.534281343833668430,\t0.534323608501643840,\t0.534365871833810350,\t0.534408133830062030,\t0.534450394490293860,\t0.534492653814399370,\t0.534534911802273080,\t\n0.534577168453809650,\t0.534619423768903700,\t0.534661677747448660,\t0.534703930389339610,\t0.534746181694470630,\t0.534788431662736490,\t0.534830680294031020,\t0.534872927588248780,\t\n0.534915173545284280,\t0.534957418165032280,\t0.534999661447386200,\t0.535041903392241110,\t0.535084143999491560,\t0.535126383269031280,\t0.535168621200755030,\t0.535210857794557240,\t\n0.535253093050332750,\t0.535295326967975100,\t0.535337559547379050,\t0.535379790788439220,\t0.535422020691050270,\t0.535464249255105830,\t0.535506476480500760,\t0.535548702367129590,\t\n0.535590926914886970,\t0.535633150123666750,\t0.535675371993363570,\t0.535717592523871970,\t0.535759811715086690,\t0.535802029566901590,\t0.535844246079211440,\t0.535886461251911080,\t\n0.535928675084894060,\t0.535970887578055440,\t0.536013098731289660,\t0.536055308544491350,\t0.536097517017554480,\t0.536139724150373810,\t0.536181929942843860,\t0.536224134394859500,\t\n0.536266337506314360,\t0.536308539277103310,\t0.536350739707120990,\t0.536392938796262260,\t0.536435136544420770,\t0.536477332951491360,\t0.536519528017368690,\t0.536561721741947490,\t\n0.536603914125121760,\t0.536646105166786120,\t0.536688294866835670,\t0.536730483225164030,\t0.536772670241666190,\t0.536814855916236790,\t0.536857040248770460,\t0.536899223239161280,\t\n0.536941404887304020,\t0.536983585193093190,\t0.537025764156423780,\t0.537067941777189640,\t0.537110118055285630,\t0.537152292990606290,\t0.537194466583046590,\t0.537236638832500390,\t\n0.537278809738862660,\t0.537320979302027820,\t0.537363147521890850,\t0.537405314398345710,\t0.537447479931287280,\t0.537489644120610180,\t0.537531806966209280,\t0.537573968467978560,\t\n0.537616128625812870,\t0.537658287439607200,\t0.537700444909255500,\t0.537742601034652660,\t0.537784755815693290,\t0.537826909252272500,\t0.537869061344283920,\t0.537911212091622850,\t\n0.537953361494183600,\t0.537995509551861370,\t0.538037656264550020,\t0.538079801632144530,\t0.538121945654539520,\t0.538164088331630100,\t0.538206229663310000,\t0.538248369649474310,\t\n0.538290508290017680,\t0.538332645584835290,\t0.538374781533820790,\t0.538416916136869370,\t0.538459049393876010,\t0.538501181304734680,\t0.538543311869340350,\t0.538585441087587770,\t\n0.538627568959372030,\t0.538669695484586870,\t0.538711820663127620,\t0.538753944494888670,\t0.538796066979765340,\t0.538838188117651380,\t0.538880307908442100,\t0.538922426352031910,\t\n0.538964543448316010,\t0.539006659197188490,\t0.539048773598544310,\t0.539090886652278110,\t0.539132998358285100,\t0.539175108716459240,\t0.539217217726695620,\t0.539259325388889320,\t\n0.539301431702934320,\t0.539343536668725700,\t0.539385640286158320,\t0.539427742555127150,\t0.539469843475526290,\t0.539511943047250810,\t0.539554041270195460,\t0.539596138144255330,\t\n0.539638233669324620,\t0.539680327845298180,\t0.539722420672070990,\t0.539764512149538130,\t0.539806602277593690,\t0.539848691056132650,\t0.539890778485049850,\t0.539932864564240500,\t\n0.539974949293598680,\t0.540017032673019480,\t0.540059114702397980,\t0.540101195381628370,\t0.540143274710605750,\t0.540185352689225070,\t0.540227429317381210,\t0.540269504594968470,\t\n0.540311578521882050,\t0.540353651098016590,\t0.540395722323267380,\t0.540437792197528520,\t0.540479860720695200,\t0.540521927892662180,\t0.540563993713324640,\t0.540606058182576900,\t\n0.540648121300313920,\t0.540690183066430690,\t0.540732243480822380,\t0.540774302543382990,\t0.540816360254007920,\t0.540858416612591930,\t0.540900471619030320,\t0.540942525273217180,\t\n0.540984577575047590,\t0.541026628524417070,\t0.541068678121219500,\t0.541110726365350290,\t0.541152773256704300,\t0.541194818795176610,\t0.541236862980661650,\t0.541278905813054490,\t\n0.541320947292250000,\t0.541362987418143590,\t0.541405026190629360,\t0.541447063609602490,\t0.541489099674957950,\t0.541531134386591170,\t0.541573167744396010,\t0.541615199748267990,\t\n0.541657230398101990,\t0.541699259693793290,\t0.541741287635236100,\t0.541783314222325620,\t0.541825339454957260,\t0.541867363333025210,\t0.541909385856424790,\t0.541951407025050850,\t\n0.541993426838798700,\t0.542035445297562650,\t0.542077462401238000,\t0.542119478149719720,\t0.542161492542903130,\t0.542203505580682310,\t0.542245517262952890,\t0.542287527589609630,\t\n0.542329536560547830,\t0.542371544175661910,\t0.542413550434847070,\t0.542455555337998390,\t0.542497558885011280,\t0.542539561075779720,\t0.542581561910199350,\t0.542623561388165480,\t\n0.542665559509572290,\t0.542707556274315220,\t0.542749551682289330,\t0.542791545733389840,\t0.542833538427511140,\t0.542875529764548560,\t0.542917519744397170,\t0.542959508366952390,\t\n0.543001495632108420,\t0.543043481539760790,\t0.543085466089804350,\t0.543127449282134630,\t0.543169431116645950,\t0.543211411593233720,\t0.543253390711792910,\t0.543295368472219040,\t\n0.543337344874406440,\t0.543379319918250280,\t0.543421293603645990,\t0.543463265930488770,\t0.543505236898673030,\t0.543547206508094180,\t0.543589174758647760,\t0.543631141650227970,\t\n0.543673107182730320,\t0.543715071356049910,\t0.543757034170082250,\t0.543798995624721560,\t0.543840955719863350,\t0.543882914455402820,\t0.543924871831235390,\t0.543966827847255360,\t\n0.544008782503358270,\t0.544050735799439190,\t0.544092687735393770,\t0.544134638311116080,\t0.544176587526501890,\t0.544218535381446270,\t0.544260481875844640,\t0.544302427009591420,\t\n0.544344370782582130,\t0.544386313194712310,\t0.544428254245876380,\t0.544470193935969740,\t0.544512132264887700,\t0.544554069232525580,\t0.544596004838778010,\t0.544637939083540410,\t\n0.544679871966707860,\t0.544721803488176120,\t0.544763733647839480,\t0.544805662445593470,\t0.544847589881333420,\t0.544889515954954610,\t0.544931440666351690,\t0.544973364015420180,\t\n0.545015286002055290,\t0.545057206626152540,\t0.545099125887606450,\t0.545141043786312450,\t0.545182960322166290,\t0.545224875495062270,\t0.545266789304896140,\t0.545308701751562990,\t\n0.545350612834958450,\t0.545392522554977060,\t0.545434430911514330,\t0.545476337904465590,\t0.545518243533726240,\t0.545560147799191040,\t0.545602050700755400,\t0.545643952238314630,\t\n0.545685852411764370,\t0.545727751220999150,\t0.545769648665914490,\t0.545811544746405700,\t0.545853439462368420,\t0.545895332813697290,\t0.545937224800287720,\t0.545979115422035480,\t\n0.546021004678835080,\t0.546062892570582160,\t0.546104779097172030,\t0.546146664258500230,\t0.546188548054461490,\t0.546230430484951460,\t0.546272311549865220,\t0.546314191249098640,\t\n0.546356069582546120,\t0.546397946550103540,\t0.546439822151666090,\t0.546481696387129400,\t0.546523569256388120,\t0.546565440759337880,\t0.546607310895874000,\t0.546649179665892330,\t\n0.546691047069287280,\t0.546732913105954620,\t0.546774777775789640,\t0.546816641078688210,\t0.546858503014544750,\t0.546900363583255000,\t0.546942222784714720,\t0.546984080618818420,\t\n0.547025937085462100,\t0.547067792184540820,\t0.547109645915950460,\t0.547151498279585650,\t0.547193349275342020,\t0.547235198903115010,\t0.547277047162800460,\t0.547318894054292900,\t\n0.547360739577488100,\t0.547402583732281340,\t0.547444426518568620,\t0.547486267936244440,\t0.547528107985204570,\t0.547569946665344420,\t0.547611783976559850,\t0.547653619918745390,\t\n0.547695454491796910,\t0.547737287695610140,\t0.547779119530079740,\t0.547820949995101560,\t0.547862779090571020,\t0.547904606816383980,\t0.547946433172434970,\t0.547988258158619850,\t\n0.548030081774834140,\t0.548071904020973610,\t0.548113724896932890,\t0.548155544402607940,\t0.548197362537894080,\t0.548239179302687170,\t0.548280994696881960,\t0.548322808720374310,\t\n0.548364621373059520,\t0.548406432654833690,\t0.548448242565591330,\t0.548490051105228300,\t0.548531858273640590,\t0.548573664070722830,\t0.548615468496370990,\t0.548657271550480390,\t\n0.548699073232947090,\t0.548740873543665630,\t0.548782672482531990,\t0.548824470049441680,\t0.548866266244290580,\t0.548908061066973430,\t0.548949854517386200,\t0.548991646595424320,\t\n0.549033437300983640,\t0.549075226633959020,\t0.549117014594246330,\t0.549158801181741100,\t0.549200586396339170,\t0.549242370237935430,\t0.549284152706425830,\t0.549325933801705800,\t\n0.549367713523671420,\t0.549409491872217210,\t0.549451268847239380,\t0.549493044448633780,\t0.549534818676295170,\t0.549576591530119400,\t0.549618363010002220,\t0.549660133115839610,\t\n0.549701901847526210,\t0.549743669204957990,\t0.549785435188030690,\t0.549827199796640190,\t0.549868963030681220,\t0.549910724890049880,\t0.549952485374641810,\t0.549994244484352750,\t\n0.550036002219077780,\t0.550077758578712880,\t0.550119513563153470,\t0.550161267172295740,\t0.550203019406034440,\t0.550244770264265550,\t0.550286519746885140,\t0.550328267853788080,\t\n0.550370014584870340,\t0.550411759940027560,\t0.550453503919155710,\t0.550495246522149760,\t0.550536987748905690,\t0.550578727599319140,\t0.550620466073286190,\t0.550662203170701690,\t\n0.550703938891461630,\t0.550745673235461750,\t0.550787406202598030,\t0.550829137792765540,\t0.550870868005860050,\t0.550912596841777510,\t0.550954324300413800,\t0.550996050381663880,\t\n0.551037775085423950,\t0.551079498411589870,\t0.551121220360056620,\t0.551162940930720380,\t0.551204660123476800,\t0.551246377938221950,\t0.551288094374850710,\t0.551329809433259270,\t\n0.551371523113343360,\t0.551413235414998980,\t0.551454946338121090,\t0.551496655882605880,\t0.551538364048348990,\t0.551580070835246630,\t0.551621776243193750,\t0.551663480272086340,\t\n0.551705182921820250,\t0.551746884192291560,\t0.551788584083395370,\t0.551830282595027640,\t0.551871979727084240,\t0.551913675479461240,\t0.551955369852053620,\t0.551997062844757690,\t\n0.552038754457469420,\t0.552080444690083880,\t0.552122133542497280,\t0.552163821014605370,\t0.552205507106304230,\t0.552247191817488940,\t0.552288875148055690,\t0.552330557097900240,\t\n0.552372237666918680,\t0.552413916855006290,\t0.552455594662059070,\t0.552497271087972860,\t0.552538946132643870,\t0.552580619795967070,\t0.552622292077838750,\t0.552663962978154680,\t\n0.552705632496811150,\t0.552747300633703140,\t0.552788967388726850,\t0.552830632761778570,\t0.552872296752753290,\t0.552913959361547300,\t0.552955620588056360,\t0.552997280432176770,\t\n0.553038938893803620,\t0.553080595972833100,\t0.553122251669161070,\t0.553163905982683830,\t0.553205558913296370,\t0.553247210460895090,\t0.553288860625375860,\t0.553330509406634750,\t\n0.553372156804566970,\t0.553413802819068820,\t0.553455447450036160,\t0.553497090697365300,\t0.553538732560951320,\t0.553580373040690520,\t0.553622012136479100,\t0.553663649848212370,\t\n0.553705286175786400,\t0.553746921119097290,\t0.553788554678041220,\t0.553830186852513400,\t0.553871817642410220,\t0.553913447047627350,\t0.553955075068061300,\t0.553996701703607150,\t\n0.554038326954161330,\t0.554079950819619580,\t0.554121573299878430,\t0.554163194394832860,\t0.554204814104379380,\t0.554246432428413870,\t0.554288049366832620,\t0.554329664919530950,\t\n0.554371279086405040,\t0.554412891867351320,\t0.554454503262264970,\t0.554496113271042420,\t0.554537721893579530,\t0.554579329129772700,\t0.554620934979517250,\t0.554662539442709490,\t\n0.554704142519245270,\t0.554745744209021120,\t0.554787344511932230,\t0.554828943427874920,\t0.554870540956745370,\t0.554912137098439780,\t0.554953731852853460,\t0.554995325219882820,\t\n0.555036917199423940,\t0.555078507791373020,\t0.555120096995625590,\t0.555161684812077730,\t0.555203271240625850,\t0.555244856281166040,\t0.555286439933593830,\t0.555328022197805420,\t\n0.555369603073697320,\t0.555411182561164950,\t0.555452760660104520,\t0.555494337370412210,\t0.555535912691984430,\t0.555577486624716510,\t0.555619059168504850,\t0.555660630323245640,\t\n0.555702200088835090,\t0.555743768465168710,\t0.555785335452142930,\t0.555826901049653820,\t0.555868465257597810,\t0.555910028075870310,\t0.555951589504367740,\t0.555993149542986180,\t\n0.556034708191622040,\t0.556076265450170860,\t0.556117821318528940,\t0.556159375796592910,\t0.556200928884257980,\t0.556242480581420780,\t0.556284030887977400,\t0.556325579803824240,\t\n0.556367127328856850,\t0.556408673462971630,\t0.556450218206064660,\t0.556491761558032590,\t0.556533303518770730,\t0.556574844088175590,\t0.556616383266143270,\t0.556657921052570500,\t\n0.556699457447352500,\t0.556740992450385770,\t0.556782526061566640,\t0.556824058280791620,\t0.556865589107956030,\t0.556907118542956490,\t0.556948646585689430,\t0.556990173236050490,\t\n0.557031698493936080,\t0.557073222359242390,\t0.557114744831866070,\t0.557156265911702530,\t0.557197785598648300,\t0.557239303892599570,\t0.557280820793452980,\t0.557322336301103950,\t\n0.557363850415449110,\t0.557405363136384670,\t0.557446874463807140,\t0.557488384397612060,\t0.557529892937696060,\t0.557571400083955340,\t0.557612905836286420,\t0.557654410194584840,\t\n0.557695913158747340,\t0.557737414728670000,\t0.557778914904249470,\t0.557820413685381270,\t0.557861911071962150,\t0.557903407063888520,\t0.557944901661056040,\t0.557986394863361320,\t\n0.558027886670700580,\t0.558069377082970550,\t0.558110866100066660,\t0.558152353721885540,\t0.558193839948323610,\t0.558235324779277510,\t0.558276808214642650,\t0.558318290254315790,\t\n0.558359770898193110,\t0.558401250146171480,\t0.558442727998146320,\t0.558484204454014370,\t0.558525679513671940,\t0.558567153177015660,\t0.558608625443941080,\t0.558650096314344920,\t\n0.558691565788123960,\t0.558733033865173700,\t0.558774500545390800,\t0.558815965828671770,\t0.558857429714913030,\t0.558898892204010460,\t0.558940353295860670,\t0.558981812990359870,\t\n0.559023271287405030,\t0.559064728186891570,\t0.559106183688716340,\t0.559147637792775650,\t0.559189090498966260,\t0.559230541807183680,\t0.559271991717324890,\t0.559313440229285970,\t\n0.559354887342963900,\t0.559396333058254200,\t0.559437777375053740,\t0.559479220293259140,\t0.559520661812766160,\t0.559562101933471560,\t0.559603540655271630,\t0.559644977978063230,\t\n0.559686413901742010,\t0.559727848426204820,\t0.559769281551347970,\t0.559810713277068220,\t0.559852143603261410,\t0.559893572529824190,\t0.559935000056653090,\t0.559976426183644740,\t\n0.560017850910695110,\t0.560059274237700740,\t0.560100696164558260,\t0.560142116691164430,\t0.560183535817414870,\t0.560224953543206450,\t0.560266369868436030,\t0.560307784792999360,\t\n0.560349198316793200,\t0.560390610439714050,\t0.560432021161658800,\t0.560473430482523070,\t0.560514838402203730,\t0.560556244920597300,\t0.560597650037600650,\t0.560639053753109520,\t\n0.560680456067020770,\t0.560721856979230830,\t0.560763256489636650,\t0.560804654598134000,\t0.560846051304619620,\t0.560887446608990260,\t0.560928840511142560,\t0.560970233010972370,\t\n0.561011624108376570,\t0.561053013803251790,\t0.561094402095494770,\t0.561135788985001490,\t0.561177174471668590,\t0.561218558555393270,\t0.561259941236071040,\t0.561301322513599100,\t\n0.561342702387873760,\t0.561384080858791990,\t0.561425457926249760,\t0.561466833590143820,\t0.561508207850370810,\t0.561549580706827700,\t0.561590952159410240,\t0.561632322208015400,\t\n0.561673690852539710,\t0.561715058092880250,\t0.561756423928932660,\t0.561797788360594020,\t0.561839151387760970,\t0.561880513010330370,\t0.561921873228198200,\t0.561963232041261310,\t\n0.562004589449416670,\t0.562045945452560260,\t0.562087300050588930,\t0.562128653243399330,\t0.562170005030888540,\t0.562211355412952310,\t0.562252704389487710,\t0.562294051960391280,\t\n0.562335398125560220,\t0.562376742884890260,\t0.562418086238278380,\t0.562459428185621340,\t0.562500768726816090,\t0.562542107861758510,\t0.562583445590345680,\t0.562624781912474230,\t\n0.562666116828041240,\t0.562707450336942580,\t0.562748782439075220,\t0.562790113134336360,\t0.562831442422621730,\t0.562872770303828650,\t0.562914096777853530,\t0.562955421844593570,\t\n0.562996745503944740,\t0.563038067755804010,\t0.563079388600068120,\t0.563120708036634050,\t0.563162026065397890,\t0.563203342686256710,\t0.563244657899107160,\t0.563285971703846310,\t\n0.563327284100370140,\t0.563368595088575840,\t0.563409904668359940,\t0.563451212839619740,\t0.563492519602251110,\t0.563533824956151230,\t0.563575128901216750,\t0.563616431437344740,\t\n0.563657732564431410,\t0.563699032282373610,\t0.563740330591068650,\t0.563781627490412610,\t0.563822922980302340,\t0.563864217060634830,\t0.563905509731307150,\t0.563946800992215390,\t\n0.563988090843256520,\t0.564029379284327500,\t0.564070666315325320,\t0.564111951936146160,\t0.564153236146687110,\t0.564194518946845030,\t0.564235800336516880,\t0.564277080315598980,\t\n0.564318358883988400,\t0.564359636041581900,\t0.564400911788276560,\t0.564442186123968680,\t0.564483459048555350,\t0.564524730561933640,\t0.564566000663999870,\t0.564607269354651000,\t\n0.564648536633784000,\t0.564689802501295970,\t0.564731066957083190,\t0.564772330001042660,\t0.564813591633071320,\t0.564854851853066280,\t0.564896110660923820,\t0.564937368056541160,\t\n0.564978624039815020,\t0.565019878610642620,\t0.565061131768920260,\t0.565102383514545000,\t0.565143633847413730,\t0.565184882767423850,\t0.565226130274471330,\t0.565267376368453590,\t\n0.565308621049267710,\t0.565349864316809890,\t0.565391106170977430,\t0.565432346611667190,\t0.565473585638776480,\t0.565514823252201370,\t0.565556059451839290,\t0.565597294237586980,\t\n0.565638527609341860,\t0.565679759567000010,\t0.565720990110458730,\t0.565762219239615120,\t0.565803446954366240,\t0.565844673254608300,\t0.565885898140238820,\t0.565927121611154550,\t\n0.565968343667252790,\t0.566009564308429860,\t0.566050783534582940,\t0.566092001345609550,\t0.566133217741405680,\t0.566174432721868850,\t0.566215646286895910,\t0.566256858436384180,\t\n0.566298069170229960,\t0.566339278488330540,\t0.566380486390583030,\t0.566421692876884600,\t0.566462897947131560,\t0.566504101601221330,\t0.566545303839050770,\t0.566586504660517300,\t\n0.566627704065517320,\t0.566668902053947930,\t0.566710098625706430,\t0.566751293780690000,\t0.566792487518794960,\t0.566833679839918720,\t0.566874870743958260,\t0.566916060230810980,\t\n0.566957248300373200,\t0.566998434952542210,\t0.567039620187215650,\t0.567080804004289620,\t0.567121986403661520,\t0.567163167385228540,\t0.567204346948887990,\t0.567245525094536180,\t\n0.567286701822070530,\t0.567327877131388100,\t0.567369051022386440,\t0.567410223494961730,\t0.567451394549011500,\t0.567492564184432840,\t0.567533732401123040,\t0.567574899198978520,\t\n0.567616064577896820,\t0.567657228537774890,\t0.567698391078510280,\t0.567739552199999390,\t0.567780711902139630,\t0.567821870184828330,\t0.567863027047962100,\t0.567904182491438260,\t\n0.567945336515154000,\t0.567986489119006730,\t0.568027640302892880,\t0.568068790066709850,\t0.568109938410354950,\t0.568151085333725490,\t0.568192230836717990,\t0.568233374919229980,\t\n0.568274517581158430,\t0.568315658822401090,\t0.568356798642854160,\t0.568397937042415150,\t0.568439074020981370,\t0.568480209578450250,\t0.568521343714718300,\t0.568562476429682940,\t\n0.568603607723241810,\t0.568644737595291220,\t0.568685866045728790,\t0.568726993074451740,\t0.568768118681357570,\t0.568809242866342710,\t0.568850365629304800,\t0.568891486970140910,\t\n0.568932606888748690,\t0.568973725385024550,\t0.569014842458866130,\t0.569055958110170620,\t0.569097072338835550,\t0.569138185144757450,\t0.569179296527833940,\t0.569220406487962130,\t\n0.569261515025039630,\t0.569302622138963100,\t0.569343727829629940,\t0.569384832096937470,\t0.569425934940783310,\t0.569467036361063880,\t0.569508136357676830,\t0.569549234930519900,\t\n0.569590332079489500,\t0.569631427804483280,\t0.569672522105398430,\t0.569713614982132690,\t0.569754706434582590,\t0.569795796462645670,\t0.569836885066219210,\t0.569877972245200980,\t\n0.569919057999487390,\t0.569960142328976180,\t0.570001225233564670,\t0.570042306713150370,\t0.570083386767630040,\t0.570124465396901200,\t0.570165542600861160,\t0.570206618379407670,\t\n0.570247692732437250,\t0.570288765659847650,\t0.570329837161536400,\t0.570370907237400250,\t0.570411975887336830,\t0.570453043111243450,\t0.570494108909017860,\t0.570535173280556700,\t\n0.570576236225757480,\t0.570617297744517750,\t0.570658357836735020,\t0.570699416502306160,\t0.570740473741128680,\t0.570781529553100130,\t0.570822583938118020,\t0.570863636896079110,\t\n0.570904688426881140,\t0.570945738530421410,\t0.570986787206597680,\t0.571027834455306690,\t0.571068880276446090,\t0.571109924669913620,\t0.571150967635605910,\t0.571192009173420940,\t\n0.571233049283255800,\t0.571274087965008450,\t0.571315125218575530,\t0.571356161043854890,\t0.571397195440743740,\t0.571438228409139940,\t0.571479259948940220,\t0.571520290060042460,\t\n0.571561318742343840,\t0.571602345995742330,\t0.571643371820134690,\t0.571684396215418560,\t0.571725419181491330,\t0.571766440718251000,\t0.571807460825594190,\t0.571848479503418770,\t\n0.571889496751622480,\t0.571930512570102080,\t0.571971526958755420,\t0.572012539917479910,\t0.572053551446173540,\t0.572094561544732820,\t0.572135570213055720,\t0.572176577451039670,\t\n0.572217583258582520,\t0.572258587635581020,\t0.572299590581933140,\t0.572340592097536290,\t0.572381592182288230,\t0.572422590836085930,\t0.572463588058827130,\t0.572504583850409250,\t\n0.572545578210730380,\t0.572586571139687250,\t0.572627562637177620,\t0.572668552703099020,\t0.572709541337349530,\t0.572750528539825780,\t0.572791514310425630,\t0.572832498649047170,\t\n0.572873481555587040,\t0.572914463029943200,\t0.572955443072013180,\t0.572996421681694960,\t0.573037398858885380,\t0.573078374603482210,\t0.573119348915383190,\t0.573160321794486060,\t\n0.573201293240687800,\t0.573242263253886280,\t0.573283231833979220,\t0.573324198980864290,\t0.573365164694438660,\t0.573406128974599970,\t0.573447091821245980,\t0.573488053234274760,\t\n0.573529013213582850,\t0.573569971759068540,\t0.573610928870629590,\t0.573651884548163070,\t0.573692838791566740,\t0.573733791600738340,\t0.573774742975575850,\t0.573815692915976120,\t\n0.573856641421837120,\t0.573897588493056500,\t0.573938534129532330,\t0.573979478331161470,\t0.574020421097841900,\t0.574061362429471260,\t0.574102302325947610,\t0.574143240787167830,\t\n0.574184177813029880,\t0.574225113403431520,\t0.574266047558270820,\t0.574306980277444530,\t0.574347911560850850,\t0.574388841408387750,\t0.574429769819952200,\t0.574470696795442160,\t\n0.574511622334755500,\t0.574552546437790080,\t0.574593469104442870,\t0.574634390334612060,\t0.574675310128195280,\t0.574716228485090520,\t0.574757145405194850,\t0.574798060888406350,\t\n0.574838974934622660,\t0.574879887543741970,\t0.574920798715661150,\t0.574961708450278270,\t0.575002616747491200,\t0.575043523607197900,\t0.575084429029295460,\t0.575125333013681960,\t\n0.575166235560255150,\t0.575207136668913100,\t0.575248036339552790,\t0.575288934572072420,\t0.575329831366370060,\t0.575370726722342800,\t0.575411620639888710,\t0.575452513118905550,\t\n0.575493404159291510,\t0.575534293760943560,\t0.575575181923759890,\t0.575616068647638260,\t0.575656953932476840,\t0.575697837778172630,\t0.575738720184623910,\t0.575779601151728330,\t\n0.575820480679384070,\t0.575861358767488340,\t0.575902235415939100,\t0.575943110624634320,\t0.575983984393472200,\t0.576024856722349600,\t0.576065727611165030,\t0.576106597059816370,\t\n0.576147465068200910,\t0.576188331636216860,\t0.576229196763761830,\t0.576270060450734260,\t0.576310922697031210,\t0.576351783502550790,\t0.576392642867190940,\t0.576433500790849870,\t\n0.576474357273424660,\t0.576515212314813510,\t0.576556065914914370,\t0.576596918073625450,\t0.576637768790843830,\t0.576678618066467810,\t0.576719465900395250,\t0.576760312292524450,\t\n0.576801157242752380,\t0.576842000750977470,\t0.576882842817098010,\t0.576923683441010970,\t0.576964522622614770,\t0.577005360361807270,\t0.577046196658486670,\t0.577087031512550250,\t\n0.577127864923896230,\t0.577168696892422560,\t0.577209527418027560,\t0.577250356500608300,\t0.577291184140063200,\t0.577332010336290110,\t0.577372835089187460,\t0.577413658398652220,\t\n0.577454480264582900,\t0.577495300686877380,\t0.577536119665433940,\t0.577576937200149910,\t0.577617753290923460,\t0.577658567937653020,\t0.577699381140235780,\t0.577740192898570150,\t\n0.577781003212553990,\t0.577821812082085720,\t0.577862619507062520,\t0.577903425487382720,\t0.577944230022944480,\t0.577985033113645910,\t0.578025834759384520,\t0.578066634960058390,\t\n0.578107433715565830,\t0.578148231025804930,\t0.578189026890673090,\t0.578229821310068730,\t0.578270614283889820,\t0.578311405812034770,\t0.578352195894400790,\t0.578392984530886280,\t\n0.578433771721389430,\t0.578474557465808450,\t0.578515341764040620,\t0.578556124615984600,\t0.578596906021538570,\t0.578637685980599840,\t0.578678464493066920,\t0.578719241558837920,\t\n0.578760017177811110,\t0.578800791349883940,\t0.578841564074954800,\t0.578882335352921660,\t0.578923105183683170,\t0.578963873567136410,\t0.579004640503180120,\t0.579045405991712170,\t\n0.579086170032630960,\t0.579126932625834150,\t0.579167693771219900,\t0.579208453468686430,\t0.579249211718132150,\t0.579289968519454580,\t0.579330723872552020,\t0.579371477777323010,\t\n0.579412230233664950,\t0.579452981241476260,\t0.579493730800655140,\t0.579534478911100100,\t0.579575225572708570,\t0.579615970785378850,\t0.579656714549009240,\t0.579697456863498270,\t\n0.579738197728743240,\t0.579778937144642680,\t0.579819675111094780,\t0.579860411627998170,\t0.579901146695250060,\t0.579941880312749070,\t0.579982612480393510,\t0.580023343198081690,\t\n0.580064072465711120,\t0.580104800283180340,\t0.580145526650387990,\t0.580186251567231470,\t0.580226975033609320,\t0.580267697049419720,\t0.580308417614561310,\t0.580349136728931400,\t\n0.580389854392428630,\t0.580430570604951290,\t0.580471285366397920,\t0.580511998676665810,\t0.580552710535653830,\t0.580593420943260050,\t0.580634129899383120,\t0.580674837403920450,\t\n0.580715543456770790,\t0.580756248057832100,\t0.580796951207003250,\t0.580837652904181660,\t0.580878353149265950,\t0.580919051942154320,\t0.580959749282745410,\t0.581000445170936850,\t\n0.581041139606627070,\t0.581081832589714910,\t0.581122524120097680,\t0.581163214197674250,\t0.581203902822342800,\t0.581244589994001860,\t0.581285275712549070,\t0.581325959977883170,\t\n0.581366642789902350,\t0.581407324148505270,\t0.581448004053589540,\t0.581488682505053810,\t0.581529359502796380,\t0.581570035046715890,\t0.581610709136709870,\t0.581651381772677170,\t\n0.581692052954515980,\t0.581732722682125060,\t0.581773390955401930,\t0.581814057774245440,\t0.581854723138554020,\t0.581895387048225520,\t0.581936049503158470,\t0.581976710503251390,\t\n0.582017370048402820,\t0.582058028138510490,\t0.582098684773473040,\t0.582139339953189010,\t0.582179993677556910,\t0.582220645946474490,\t0.582261296759840400,\t0.582301946117553040,\t\n0.582342594019511270,\t0.582383240465612630,\t0.582423885455755850,\t0.582464528989839360,\t0.582505171067762010,\t0.582545811689421320,\t0.582586450854716050,\t0.582627088563545060,\t\n0.582667724815805980,\t0.582708359611397550,\t0.582748992950218200,\t0.582789624832166790,\t0.582830255257140940,\t0.582870884225039520,\t0.582911511735760830,\t0.582952137789203630,\t\n0.582992762385265870,\t0.583033385523846090,\t0.583074007204842930,\t0.583114627428155120,\t0.583155246193680310,\t0.583195863501317470,\t0.583236479350964900,\t0.583277093742521570,\t\n0.583317706675885010,\t0.583358318150954290,\t0.583398928167628170,\t0.583439536725804290,\t0.583480143825381600,\t0.583520749466258540,\t0.583561353648333950,\t0.583601956371505690,\t\n0.583642557635672410,\t0.583683157440732850,\t0.583723755786585750,\t0.583764352673128760,\t0.583804948100261070,\t0.583845542067880970,\t0.583886134575887230,\t0.583926725624178020,\t\n0.583967315212651880,\t0.584007903341207450,\t0.584048490009743570,\t0.584089075218158120,\t0.584129658966350050,\t0.584170241254217790,\t0.584210822081660310,\t0.584251401448575460,\t\n0.584291979354861990,\t0.584332555800419100,\t0.584373130785144300,\t0.584413704308936690,\t0.584454276371694890,\t0.584494846973317770,\t0.584535416113703080,\t0.584575983792749890,\t\n0.584616550010356840,\t0.584657114766422680,\t0.584697678060845380,\t0.584738239893523800,\t0.584778800264356800,\t0.584819359173243010,\t0.584859916620080520,\t0.584900472604768300,\t\n0.584941027127204750,\t0.584981580187289070,\t0.585022131784919130,\t0.585062681919993890,\t0.585103230592412200,\t0.585143777802072050,\t0.585184323548872510,\t0.585224867832712210,\t\n0.585265410653490030,\t0.585305952011104020,\t0.585346491905453070,\t0.585387030336435910,\t0.585427567303951620,\t0.585468102807897960,\t0.585508636848174110,\t0.585549169424678610,\t\n0.585589700537310520,\t0.585630230185967830,\t0.585670758370549600,\t0.585711285090954490,\t0.585751810347081460,\t0.585792334138828590,\t0.585832856466094950,\t0.585873377328779420,\t\n0.585913896726780180,\t0.585954414659996090,\t0.585994931128326010,\t0.586035446131669020,\t0.586075959669922990,\t0.586116471742987090,\t0.586156982350759970,\t0.586197491493140820,\t\n0.586237999170027500,\t0.586278505381319200,\t0.586319010126914670,\t0.586359513406713000,\t0.586400015220612140,\t0.586440515568511290,\t0.586481014450309090,\t0.586521511865904840,\t\n0.586562007815196300,\t0.586602502298082750,\t0.586642995314463070,\t0.586683486864236100,\t0.586723976947300160,\t0.586764465563554330,\t0.586804952712897570,\t0.586845438395228070,\t\n0.586885922610445030,\t0.586926405358447200,\t0.586966886639133770,\t0.587007366452402590,\t0.587047844798153080,\t0.587088321676284000,\t0.587128797086694520,\t0.587169271029282620,\t\n0.587209743503947500,\t0.587250214510588010,\t0.587290684049103450,\t0.587331152119391800,\t0.587371618721352130,\t0.587412083854883530,\t0.587452547519885070,\t0.587493009716254950,\t\n0.587533470443892150,\t0.587573929702696170,\t0.587614387492564890,\t0.587654843813397720,\t0.587695298665093510,\t0.587735752047551240,\t0.587776203960669320,\t0.587816654404346940,\t\n0.587857103378482850,\t0.587897550882976460,\t0.587937996917725750,\t0.587978441482630010,\t0.588018884577588220,\t0.588059326202499570,\t0.588099766357262240,\t0.588140205041775550,\t\n0.588180642255938250,\t0.588221077999649730,\t0.588261512272808210,\t0.588301945075312860,\t0.588342376407063110,\t0.588382806267956910,\t0.588423234657893810,\t0.588463661576772550,\t\n0.588504087024492530,\t0.588544511000951950,\t0.588584933506050010,\t0.588625354539685790,\t0.588665774101758580,\t0.588706192192166580,\t0.588746608810808980,\t0.588787023957584980,\t\n0.588827437632393760,\t0.588867849835133520,\t0.588908260565703780,\t0.588948669824003290,\t0.588989077609931470,\t0.589029483923386610,\t0.589069888764268130,\t0.589110292132475230,\t\n0.589150694027906210,\t0.589191094450460470,\t0.589231493400037000,\t0.589271890876535200,\t0.589312286879853260,\t0.589352681409890610,\t0.589393074466546210,\t0.589433466049719580,\t\n0.589473856159308920,\t0.589514244795213530,\t0.589554631957332600,\t0.589595017645565430,\t0.589635401859810340,\t0.589675784599966720,\t0.589716165865933780,\t0.589756545657610600,\t\n0.589796923974895800,\t0.589837300817688700,\t0.589877676185888270,\t0.589918050079394130,\t0.589958422498104370,\t0.589998793441918630,\t0.590039162910736330,\t0.590079530904455640,\t\n0.590119897422976210,\t0.590160262466197020,\t0.590200626034017460,\t0.590240988126336070,\t0.590281348743052160,\t0.590321707884064910,\t0.590362065549273620,\t0.590402421738576930,\t\n0.590442776451874260,\t0.590483129689064470,\t0.590523481450047290,\t0.590563831734721160,\t0.590604180542985360,\t0.590644527874739090,\t0.590684873729881880,\t0.590725218108312020,\t\n0.590765561009929270,\t0.590805902434632930,\t0.590846242382321420,\t0.590886580852894360,\t0.590926917846250840,\t0.590967253362290390,\t0.591007587400911530,\t0.591047919962013560,\t\n0.591088251045495780,\t0.591128580651257840,\t0.591168908779198030,\t0.591209235429216000,\t0.591249560601210810,\t0.591289884295082110,\t0.591330206510728430,\t0.591370527248049060,\t\n0.591410846506943530,\t0.591451164287311150,\t0.591491480589050540,\t0.591531795412061130,\t0.591572108756242780,\t0.591612420621493660,\t0.591652731007713540,\t0.591693039914801490,\t\n0.591733347342657370,\t0.591773653291179370,\t0.591813957760267350,\t0.591854260749820390,\t0.591894562259738130,\t0.591934862289919090,\t0.591975160840262920,\t0.592015457910668900,\t\n0.592055753501036450,\t0.592096047611264440,\t0.592136340241252170,\t0.592176631390899040,\t0.592216921060104820,\t0.592257209248767900,\t0.592297495956787930,\t0.592337781184064220,\t\n0.592378064930496380,\t0.592418347195983070,\t0.592458627980423810,\t0.592498907283718460,\t0.592539185105765420,\t0.592579461446464340,\t0.592619736305714740,\t0.592660009683416140,\t\n0.592700281579467080,\t0.592740551993767410,\t0.592780820926216310,\t0.592821088376713550,\t0.592861354345157630,\t0.592901618831448430,\t0.592941881835485020,\t0.592982143357167370,\t\n0.593022403396394000,\t0.593062661953064670,\t0.593102919027078680,\t0.593143174618335660,\t0.593183428726734460,\t0.593223681352174630,\t0.593263932494555890,\t0.593304182153777000,\t\n0.593344430329737720,\t0.593384677022337330,\t0.593424922231475580,\t0.593465165957051230,\t0.593505408198963910,\t0.593545648957113040,\t0.593585888231398460,\t0.593626126021718830,\t\n0.593666362327973870,\t0.593706597150062910,\t0.593746830487885900,\t0.593787062341341490,\t0.593827292710329300,\t0.593867521594748980,\t0.593907748994500160,\t0.593947974909481700,\t\n0.593988199339593240,\t0.594028422284734630,\t0.594068643744804610,\t0.594108863719702950,\t0.594149082209329160,\t0.594189299213583100,\t0.594229514732363300,\t0.594269728765569830,\t\n0.594309941313102000,\t0.594350152374859660,\t0.594390361950741570,\t0.594430570040647590,\t0.594470776644477120,\t0.594510981762130130,\t0.594551185393505380,\t0.594591387538502600,\t\n0.594631588197021330,\t0.594671787368961540,\t0.594711985054221850,\t0.594752181252702240,\t0.594792375964302460,\t0.594832569188921470,\t0.594872760926459020,\t0.594912951176814640,\t\n0.594953139939888300,\t0.594993327215578740,\t0.595033513003785820,\t0.595073697304409180,\t0.595113880117348560,\t0.595154061442502940,\t0.595194241279772160,\t0.595234419629055770,\t\n0.595274596490253720,\t0.595314771863264870,\t0.595354945747988970,\t0.595395118144325770,\t0.595435289052175130,\t0.595475458471435900,\t0.595515626402008060,\t0.595555792843791120,\t\n0.595595957796685060,\t0.595636121260588740,\t0.595676283235402120,\t0.595716443721025170,\t0.595756602717356640,\t0.595796760224296730,\t0.595836916241744950,\t0.595877070769601170,\t\n0.595917223807764350,\t0.595957375356134470,\t0.595997525414611150,\t0.596037673983094370,\t0.596077821061483100,\t0.596117966649677200,\t0.596158110747576410,\t0.596198253355080810,\t\n0.596238394472089040,\t0.596278534098501400,\t0.596318672234217420,\t0.596358808879137060,\t0.596398944033159410,\t0.596439077696184320,\t0.596479209868111980,\t0.596519340548841150,\t\n0.596559469738272010,\t0.596599597436304200,\t0.596639723642837790,\t0.596679848357771660,\t0.596719971581005870,\t0.596760093312440290,\t0.596800213551974770,\t0.596840332299508280,\t\n0.596880449554941020,\t0.596920565318172720,\t0.596960679589103260,\t0.597000792367631710,\t0.597040903653658250,\t0.597081013447082530,\t0.597121121747804630,\t0.597161228555723620,\t\n0.597201333870739480,\t0.597241437692752290,\t0.597281540021661230,\t0.597321640857366280,\t0.597361740199767290,\t0.597401838048764340,\t0.597441934404256300,\t0.597482029266143580,\t\n0.597522122634325690,\t0.597562214508702840,\t0.597602304889174100,\t0.597642393775639660,\t0.597682481167999160,\t0.597722567066152900,\t0.597762651469999850,\t0.597802734379440090,\t\n0.597842815794373590,\t0.597882895714700320,\t0.597922974140319470,\t0.597963051071131240,\t0.598003126507035350,\t0.598043200447932020,\t0.598083272893720320,\t0.598123343844300440,\t\n0.598163413299572570,\t0.598203481259435790,\t0.598243547723790290,\t0.598283612692535940,\t0.598323676165572920,\t0.598363738142800310,\t0.598403798624118410,\t0.598443857609427090,\t\n0.598483915098626310,\t0.598523971091615480,\t0.598564025588294690,\t0.598604078588563900,\t0.598644130092323200,\t0.598684180099471890,\t0.598724228609910040,\t0.598764275623537730,\t\n0.598804321140254950,\t0.598844365159961090,\t0.598884407682556350,\t0.598924448707940930,\t0.598964488236014000,\t0.599004526266675890,\t0.599044562799826430,\t0.599084597835365830,\t\n0.599124631373193490,\t0.599164663413209620,\t0.599204693955313950,\t0.599244722999407010,\t0.599284750545387880,\t0.599324776593156860,\t0.599364801142613920,\t0.599404824193659370,\t\n0.599444845746192280,\t0.599484865800113180,\t0.599524884355321920,\t0.599564901411718810,\t0.599604916969203040,\t0.599644931027674910,\t0.599684943587034950,\t0.599724954647182230,\t\n0.599764964208017060,\t0.599804972269439520,\t0.599844978831349910,\t0.599884983893647530,\t0.599924987456232680,\t0.599964989519005340,\t0.600004990081865920,\t0.600044989144713600,\t\n0.600084986707448810,\t0.600124982769971620,\t0.600164977332182330,\t0.600204970393980240,\t0.600244961955265670,\t0.600284952015938680,\t0.600324940575899690,\t0.600364927635048010,\t\n0.600404913193284040,\t0.600444897250507760,\t0.600484879806619580,\t0.600524860861518790,\t0.600564840415105940,\t0.600604818467281310,\t0.600644795017944320,\t0.600684770066995280,\t\n0.600724743614334370,\t0.600764715659861890,\t0.600804686203477380,\t0.600844655245081020,\t0.600884622784573110,\t0.600924588821853960,\t0.600964553356822970,\t0.601004516389380680,\t\n0.601044477919427060,\t0.601084437946862500,\t0.601124396471586550,\t0.601164353493499730,\t0.601204309012501880,\t0.601244263028493650,\t0.601284215541374460,\t0.601324166551044700,\t\n0.601364116057404810,\t0.601404064060354400,\t0.601444010559793680,\t0.601483955555623060,\t0.601523899047742840,\t0.601563841036052540,\t0.601603781520452690,\t0.601643720500843250,\t\n0.601683657977124970,\t0.601723593949197170,\t0.601763528416960460,\t0.601803461380314820,\t0.601843392839160880,\t0.601883322793398180,\t0.601923251242927120,\t0.601963178187648000,\t\n0.602003103627461230,\t0.602043027562266350,\t0.602082949991963880,\t0.602122870916454330,\t0.602162790335637350,\t0.602202708249413470,\t0.602242624657682630,\t0.602282539560345720,\t\n0.602322452957302020,\t0.602362364848452290,\t0.602402275233696600,\t0.602442184112935600,\t0.602482091486068680,\t0.602521997352996610,\t0.602561901713619560,\t0.602601804567838070,\t\n0.602641705915551770,\t0.602681605756661190,\t0.602721504091066510,\t0.602761400918668590,\t0.602801296239366620,\t0.602841190053061580,\t0.602881082359653760,\t0.602920973159043030,\t\n0.602960862451129790,\t0.603000750235814450,\t0.603040636512997550,\t0.603080521282578720,\t0.603120404544458480,\t0.603160286298537350,\t0.603200166544715870,\t0.603240045282893540,\t\n0.603279922512971130,\t0.603319798234848940,\t0.603359672448427590,\t0.603399545153606720,\t0.603439416350286970,\t0.603479286038368650,\t0.603519154217752480,\t0.603559020888338130,\t\n0.603598886050026100,\t0.603638749702717030,\t0.603678611846311330,\t0.603718472480708760,\t0.603758331605810050,\t0.603798189221515850,\t0.603838045327725780,\t0.603877899924340600,\t\n0.603917753011260720,\t0.603957604588386760,\t0.603997454655618490,\t0.604037303212856540,\t0.604077150260001310,\t0.604116995796953550,\t0.604156839823613010,\t0.604196682339880330,\t\n0.604236523345656030,\t0.604276362840840740,\t0.604316200825334100,\t0.604356037299037090,\t0.604395872261849880,\t0.604435705713673330,\t0.604475537654407310,\t0.604515368083952340,\t\n0.604555197002209280,\t0.604595024409077860,\t0.604634850304458960,\t0.604674674688252870,\t0.604714497560360550,\t0.604754318920681540,\t0.604794138769116700,\t0.604833957105566640,\t\n0.604873773929931910,\t0.604913589242112470,\t0.604953403042009060,\t0.604993215329522100,\t0.605033026104552450,\t0.605072835366999960,\t0.605112643116765270,\t0.605152449353749010,\t\n0.605192254077852040,\t0.605232057288974110,\t0.605271858987015960,\t0.605311659171878460,\t0.605351457843461560,\t0.605391255001666020,\t0.605431050646392240,\t0.605470844777541320,\t\n0.605510637395012870,\t0.605550428498707770,\t0.605590218088526640,\t0.605630006164370350,\t0.605669792726138630,\t0.605709577773732470,\t0.605749361307052370,\t0.605789143325999310,\t\n0.605828923830472930,\t0.605868702820374190,\t0.605908480295603850,\t0.605948256256062520,\t0.605988030701650300,\t0.606027803632267940,\t0.606067575047816050,\t0.606107344948195630,\t\n0.606147113333306510,\t0.606186880203049560,\t0.606226645557325750,\t0.606266409396035040,\t0.606306171719078190,\t0.606345932526356050,\t0.606385691817769360,\t0.606425449593218090,\t\n0.606465205852603220,\t0.606504960595825260,\t0.606544713822785300,\t0.606584465533383190,\t0.606624215727520010,\t0.606663964405096180,\t0.606703711566012880,\t0.606743457210169870,\t\n0.606783201337468210,\t0.606822943947808670,\t0.606862685041091980,\t0.606902424617218330,\t0.606942162676088580,\t0.606981899217603700,\t0.607021634241663780,\t0.607061367748169770,\t\n0.607101099737022420,\t0.607140830208122590,\t0.607180559161370370,\t0.607220286596666710,\t0.607260012513912370,\t0.607299736913008310,\t0.607339459793854620,\t0.607379181156352250,\t\n0.607418901000401860,\t0.607458619325904610,\t0.607498336132760500,\t0.607538051420870580,\t0.607577765190135510,\t0.607617477440456350,\t0.607657188171733090,\t0.607696897383866900,\t\n0.607736605076758860,\t0.607776311250308950,\t0.607816015904418250,\t0.607855719038987500,\t0.607895420653917770,\t0.607935120749109160,\t0.607974819324462850,\t0.608014516379879360,\t\n0.608054211915259990,\t0.608093905930504720,\t0.608133598425514620,\t0.608173289400190660,\t0.608212978854433710,\t0.608252666788144050,\t0.608292353201222660,\t0.608332038093570390,\t\n0.608371721465088440,\t0.608411403315676780,\t0.608451083645236700,\t0.608490762453669180,\t0.608530439740874400,\t0.608570115506753550,\t0.608609789751207390,\t0.608649462474137090,\t\n0.608689133675442860,\t0.608728803355025770,\t0.608768471512786570,\t0.608808138148626670,\t0.608847803262446030,\t0.608887466854145850,\t0.608927128923626990,\t0.608966789470790750,\t\n0.609006448495537090,\t0.609046105997767430,\t0.609085761977382400,\t0.609125416434283310,\t0.609165069368370340,\t0.609204720779544790,\t0.609244370667707310,\t0.609284019032759310,\t\n0.609323665874600960,\t0.609363311193133360,\t0.609402954988257920,\t0.609442597259874600,\t0.609482238007884920,\t0.609521877232189650,\t0.609561514932689950,\t0.609601151109286140,\t\n0.609640785761879520,\t0.609680418890370830,\t0.609720050494661490,\t0.609759680574651690,\t0.609799309130242720,\t0.609838936161335440,\t0.609878561667831160,\t0.609918185649630070,\t\n0.609957808106633690,\t0.609997429038742660,\t0.610037048445858380,\t0.610076666327881160,\t0.610116282684712300,\t0.610155897516253100,\t0.610195510822403750,\t0.610235122603065670,\t\n0.610274732858139820,\t0.610314341587527400,\t0.610353948791128810,\t0.610393554468845360,\t0.610433158620578010,\t0.610472761246228180,\t0.610512362345696060,\t0.610551961918882950,\t\n0.610591559965690030,\t0.610631156486018510,\t0.610670751479768790,\t0.610710344946842180,\t0.610749936887139630,\t0.610789527300562680,\t0.610829116187011520,\t0.610868703546387560,\t\n0.610908289378592210,\t0.610947873683525880,\t0.610987456461089760,\t0.611027037711185050,\t0.611066617433713040,\t0.611106195628574160,\t0.611145772295669800,\t0.611185347434900940,\t\n0.611224921046169210,\t0.611264493129374700,\t0.611304063684419030,\t0.611343632711203180,\t0.611383200209628550,\t0.611422766179595680,\t0.611462330621005750,\t0.611501893533760050,\t\n0.611541454917760020,\t0.611581014772905940,\t0.611620573099099340,\t0.611660129896241410,\t0.611699685164233340,\t0.611739238902975770,\t0.611778791112370100,\t0.611818341792317870,\t\n0.611857890942719360,\t0.611897438563476110,\t0.611936984654489310,\t0.611976529215660480,\t0.612016072246889810,\t0.612055613748079040,\t0.612095153719129260,\t0.612134692159941980,\t\n0.612174229070417520,\t0.612213764450457500,\t0.612253298299963110,\t0.612292830618835770,\t0.612332361406976110,\t0.612371890664285430,\t0.612411418390665040,\t0.612450944586016570,\t\n0.612490469250240310,\t0.612529992383237800,\t0.612569513984910770,\t0.612609034055159540,\t0.612648552593885840,\t0.612688069600990650,\t0.612727585076375590,\t0.612767099019941310,\t\n0.612806611431589320,\t0.612846122311220710,\t0.612885631658737220,\t0.612925139474039150,\t0.612964645757028360,\t0.613004150507605930,\t0.613043653725673490,\t0.613083155411131560,\t\n0.613122655563881790,\t0.613162154183825250,\t0.613201651270863790,\t0.613241146824897830,\t0.613280640845829010,\t0.613320133333558950,\t0.613359624287988070,\t0.613399113709018230,\t\n0.613438601596550610,\t0.613478087950486860,\t0.613517572770727490,\t0.613557056057174250,\t0.613596537809728340,\t0.613636018028291490,\t0.613675496712764110,\t0.613714973863048070,\t\n0.613754449479044560,\t0.613793923560655320,\t0.613833396107780980,\t0.613872867120323070,\t0.613912336598183010,\t0.613951804541262410,\t0.613991270949461930,\t0.614030735822683420,\t\n0.614070199160828280,\t0.614109660963797380,\t0.614149121231492230,\t0.614188579963814370,\t0.614228037160665430,\t0.614267492821945930,\t0.614306946947557830,\t0.614346399537402220,\t\n0.614385850591381070,\t0.614425300109394890,\t0.614464748091345550,\t0.614504194537134230,\t0.614543639446662790,\t0.614583082819831980,\t0.614622524656543430,\t0.614661964956698560,\t\n0.614701403720199100,\t0.614740840946945810,\t0.614780276636840430,\t0.614819710789784260,\t0.614859143405679260,\t0.614898574484426090,\t0.614938004025926350,\t0.614977432030082040,\t\n0.615016858496793770,\t0.615056283425963410,\t0.615095706817492260,\t0.615135128671282280,\t0.615174548987234120,\t0.615213967765249500,\t0.615253385005230080,\t0.615292800707077480,\t\n0.615332214870692450,\t0.615371627495976960,\t0.615411038582832410,\t0.615450448131160680,\t0.615489856140862380,\t0.615529262611839490,\t0.615568667543993420,\t0.615608070937226030,\t\n0.615647472791438060,\t0.615686873106531470,\t0.615726271882408030,\t0.615765669118968570,\t0.615805064816114970,\t0.615844458973748730,\t0.615883851591771610,\t0.615923242670084580,\t\n0.615962632208589380,\t0.616002020207187640,\t0.616041406665781110,\t0.616080791584270870,\t0.616120174962558550,\t0.616159556800545790,\t0.616198937098134560,\t0.616238315855225590,\t\n0.616277693071720760,\t0.616317068747521790,\t0.616356442882530550,\t0.616395815476647680,\t0.616435186529775470,\t0.616474556041815450,\t0.616513924012668800,\t0.616553290442237390,\t\n0.616592655330422620,\t0.616632018677126690,\t0.616671380482250340,\t0.616710740745695430,\t0.616750099467363810,\t0.616789456647157230,\t0.616828812284976660,\t0.616868166380723950,\t\n0.616907518934300960,\t0.616946869945609540,\t0.616986219414550560,\t0.617025567341025980,\t0.617064913724937550,\t0.617104258566187110,\t0.617143601864675760,\t0.617182943620305350,\t\n0.617222283832977610,\t0.617261622502594420,\t0.617300959629056960,\t0.617340295212267080,\t0.617379629252126750,\t0.617418961748537050,\t0.617458292701399850,\t0.617497622110616980,\t\n0.617536949976090430,\t0.617576276297721160,\t0.617615601075411140,\t0.617654924309062210,\t0.617694245998576250,\t0.617733566143854330,\t0.617772884744798520,\t0.617812201801310470,\t\n0.617851517313292240,\t0.617890831280644930,\t0.617930143703270480,\t0.617969454581070780,\t0.618008763913947660,\t0.618048071701802430,\t0.618087377944536830,\t0.618126682642053280,\t\n0.618165985794252640,\t0.618205287401037080,\t0.618244587462308150,\t0.618283885977968240,\t0.618323182947918220,\t0.618362478372060260,\t0.618401772250296130,\t0.618441064582527900,\t\n0.618480355368656640,\t0.618519644608584440,\t0.618558932302213260,\t0.618598218449444960,\t0.618637503050180840,\t0.618676786104322970,\t0.618716067611773110,\t0.618755347572433450,\t\n0.618794625986205050,\t0.618833902852990110,\t0.618873178172690720,\t0.618912451945208050,\t0.618951724170444310,\t0.618990994848301220,\t0.619030263978680990,\t0.619069531561484700,\t\n0.619108797596614640,\t0.619148062083972550,\t0.619187325023460740,\t0.619226586414980180,\t0.619265846258433170,\t0.619305104553721560,\t0.619344361300747550,\t0.619383616499412320,\t\n0.619422870149617940,\t0.619462122251266400,\t0.619501372804259990,\t0.619540621808499780,\t0.619579869263887970,\t0.619619115170326860,\t0.619658359527717640,\t0.619697602335962490,\t\n0.619736843594963280,\t0.619776083304622420,\t0.619815321464840970,\t0.619854558075521140,\t0.619893793136565010,\t0.619933026647874750,\t0.619972258609351570,\t0.620011489020897640,\t\n0.620050717882415060,\t0.620089945193806000,\t0.620129170954971780,\t0.620168395165814680,\t0.620207617826236460,\t0.620246838936139630,\t0.620286058495425400,\t0.620325276503995940,\t\n0.620364492961753330,\t0.620403707868599770,\t0.620442921224436670,\t0.620482133029166220,\t0.620521343282690820,\t0.620560551984911670,\t0.620599759135731180,\t0.620638964735051200,\t\n0.620678168782774260,\t0.620717371278801560,\t0.620756572223035370,\t0.620795771615377800,\t0.620834969455731130,\t0.620874165743996680,\t0.620913360480076840,\t0.620952553663873590,\t\n0.620991745295289220,\t0.621030935374225270,\t0.621070123900583910,\t0.621109310874267240,\t0.621148496295177650,\t0.621187680163216460,\t0.621226862478286180,\t0.621266043240289000,\t\n0.621305222449126340,\t0.621344400104700600,\t0.621383576206913980,\t0.621422750755668660,\t0.621461923750866170,\t0.621501095192408810,\t0.621540265080198770,\t0.621579433414138350,\t\n0.621618600194129070,\t0.621657765420073340,\t0.621696929091873020,\t0.621736091209430850,\t0.621775251772648140,\t0.621814410781427180,\t0.621853568235670280,\t0.621892724135279850,\t\n0.621931878480157190,\t0.621971031270204810,\t0.622010182505325250,\t0.622049332185419910,\t0.622088480310391210,\t0.622127626880141230,\t0.622166771894572590,\t0.622205915353586710,\t\n0.622245057257086010,\t0.622284197604972670,\t0.622323336397149210,\t0.622362473633517040,\t0.622401609313978700,\t0.622440743438436250,\t0.622479876006792440,\t0.622519007018948470,\t\n0.622558136474807070,\t0.622597264374270210,\t0.622636390717240640,\t0.622675515503619770,\t0.622714638733310010,\t0.622753760406213660,\t0.622792880522233360,\t0.622831999081270400,\t\n0.622871116083227540,\t0.622910231528007170,\t0.622949345415510950,\t0.622988457745641270,\t0.623027568518300550,\t0.623066677733391190,\t0.623105785390814740,\t0.623144891490473920,\t\n0.623183996032270810,\t0.623223099016108060,\t0.623262200441887290,\t0.623301300309510920,\t0.623340398618881350,\t0.623379495369901120,\t0.623418590562471840,\t0.623457684196496050,\t\n0.623496776271876050,\t0.623535866788514470,\t0.623574955746312830,\t0.623614043145173880,\t0.623653128985000140,\t0.623692213265693130,\t0.623731295987155710,\t0.623770377149290070,\t\n0.623809456751998730,\t0.623848534795183430,\t0.623887611278746810,\t0.623926686202591170,\t0.623965759566619150,\t0.624004831370732480,\t0.624043901614833580,\t0.624082970298824980,\t\n0.624122037422609300,\t0.624161102986088290,\t0.624200166989164360,\t0.624239229431740040,\t0.624278290313718070,\t0.624317349634999960,\t0.624356407395488590,\t0.624395463595086350,\t\n0.624434518233695330,\t0.624473571311217830,\t0.624512622827556490,\t0.624551672782613920,\t0.624590721176291890,\t0.624629768008492900,\t0.624668813279119610,\t0.624707856988074630,\t\n0.624746899135259600,\t0.624785939720577390,\t0.624824978743930280,\t0.624864016205221140,\t0.624903052104351600,\t0.624942086441224400,\t0.624981119215741950,\t0.625020150427807120,\t\n0.625059180077321530,\t0.625098208164187930,\t0.625137234688309170,\t0.625176259649587120,\t0.625215283047924290,\t0.625254304883223310,\t0.625293325155386830,\t0.625332343864316800,\t\n0.625371361009915860,\t0.625410376592086540,\t0.625449390610731570,\t0.625488403065752820,\t0.625527413957053020,\t0.625566423284534710,\t0.625605431048100740,\t0.625644437247652840,\t\n0.625683441883093770,\t0.625722444954326160,\t0.625761446461252760,\t0.625800446403775410,\t0.625839444781796870,\t0.625878441595219770,\t0.625917436843946960,\t0.625956430527880190,\t\n0.625995422646922320,\t0.626034413200976300,\t0.626073402189943780,\t0.626112389613727840,\t0.626151375472230990,\t0.626190359765355970,\t0.626229342493004660,\t0.626268323655080010,\t\n0.626307303251484540,\t0.626346281282121220,\t0.626385257746891910,\t0.626424232645699350,\t0.626463205978446180,\t0.626502177745035470,\t0.626541147945368860,\t0.626580116579349420,\t\n0.626619083646879680,\t0.626658049147862610,\t0.626697013082200050,\t0.626735975449794980,\t0.626774936250550250,\t0.626813895484367830,\t0.626852853151150800,\t0.626891809250801460,\t\n0.626930763783223100,\t0.626969716748317360,\t0.627008668145987440,\t0.627047617976135840,\t0.627086566238665430,\t0.627125512933478290,\t0.627164458060477490,\t0.627203401619565450,\t\n0.627242343610645240,\t0.627281284033618820,\t0.627320222888389290,\t0.627359160174859150,\t0.627398095892931380,\t0.627437030042508060,\t0.627475962623492260,\t0.627514893635786830,\t\n0.627553823079293750,\t0.627592750953916200,\t0.627631677259556820,\t0.627670601996118460,\t0.627709525163503310,\t0.627748446761614340,\t0.627787366790354300,\t0.627826285249626140,\t\n0.627865202139331950,\t0.627904117459374800,\t0.627943031209657220,\t0.627981943390082510,\t0.628020854000552630,\t0.628059763040970550,\t0.628098670511239020,\t0.628137576411261220,\t\n0.628176480740939120,\t0.628215383500175810,\t0.628254284688874120,\t0.628293184306937040,\t0.628332082354266520,\t0.628370978830765870,\t0.628409873736338160,\t0.628448767070885370,\t\n0.628487658834310790,\t0.628526549026516950,\t0.628565437647407020,\t0.628604324696883320,\t0.628643210174848700,\t0.628682094081206010,\t0.628720976415858560,\t0.628759857178708190,\t\n0.628798736369658330,\t0.628837613988611490,\t0.628876490035470970,\t0.628915364510138960,\t0.628954237412518550,\t0.628993108742512460,\t0.629031978500024010,\t0.629070846684955160,\t\n0.629109713297209330,\t0.629148578336689470,\t0.629187441803297890,\t0.629226303696937660,\t0.629265164017511760,\t0.629304022764923140,\t0.629342879939074230,\t0.629381735539868090,\t\n0.629420589567207590,\t0.629459442020996020,\t0.629498292901135460,\t0.629537142207529100,\t0.629575989940080020,\t0.629614836098691180,\t0.629653680683264990,\t0.629692523693704540,\t\n0.629731365129912900,\t0.629770204991793040,\t0.629809043279247470,\t0.629847879992179170,\t0.629886715130491550,\t0.629925548694086790,\t0.629964380682868200,\t0.630003211096738620,\t\n0.630042039935601370,\t0.630080867199358740,\t0.630119692887913920,\t0.630158517001169760,\t0.630197339539029790,\t0.630236160501395970,\t0.630274979888171830,\t0.630313797699260330,\t\n0.630352613934564540,\t0.630391428593986890,\t0.630430241677430780,\t0.630469053184798960,\t0.630507863115994940,\t0.630546671470920810,\t0.630585478249480080,\t0.630624283451575950,\t\n0.630663087077110830,\t0.630701889125987900,\t0.630740689598110360,\t0.630779488493381390,\t0.630818285811703290,\t0.630857081552979590,\t0.630895875717113140,\t0.630934668304007350,\t\n0.630973459313564520,\t0.631012248745688060,\t0.631051036600280950,\t0.631089822877246580,\t0.631128607576487370,\t0.631167390697906620,\t0.631206172241407400,\t0.631244952206893030,\t\n0.631283730594266010,\t0.631322507403429660,\t0.631361282634287040,\t0.631400056286741560,\t0.631438828360695540,\t0.631477598856052480,\t0.631516367772715800,\t0.631555135110587810,\t\n0.631593900869572010,\t0.631632665049571500,\t0.631671427650489560,\t0.631710188672228830,\t0.631748948114692510,\t0.631787705977783890,\t0.631826462261406370,\t0.631865216965462270,\t\n0.631903970089855220,\t0.631942721634488170,\t0.631981471599264770,\t0.632020219984087190,\t0.632058966788859200,\t0.632097712013483750,\t0.632136455657864360,\t0.632175197721903450,\t\n0.632213938205504530,\t0.632252677108571250,\t0.632291414431005780,\t0.632330150172711880,\t0.632368884333592510,\t0.632407616913551300,\t0.632446347912490770,\t0.632485077330314230,\t\n0.632523805166925080,\t0.632562531422226850,\t0.632601256096121830,\t0.632639979188513670,\t0.632678700699305650,\t0.632717420628401190,\t0.632756138975702820,\t0.632794855741114050,\t\n0.632833570924538180,\t0.632872284525878740,\t0.632910996545038240,\t0.632949706981920320,\t0.632988415836428400,\t0.633027123108465100,\t0.633065828797934050,\t0.633104532904738340,\t\n0.633143235428781700,\t0.633181936369966560,\t0.633220635728196650,\t0.633259333503375150,\t0.633298029695405610,\t0.633336724304190630,\t0.633375417329633980,\t0.633414108771638620,\t\n0.633452798630108390,\t0.633491486904945830,\t0.633530173596054570,\t0.633568858703337900,\t0.633607542226699350,\t0.633646224166041660,\t0.633684904521268470,\t0.633723583292282950,\t\n0.633762260478988760,\t0.633800936081288620,\t0.633839610099086180,\t0.633878282532285060,\t0.633916953380787800,\t0.633955622644498230,\t0.633994290323319550,\t0.634032956417155510,\t\n0.634071620925908740,\t0.634110283849482980,\t0.634148945187781420,\t0.634187604940707920,\t0.634226263108164990,\t0.634264919690056490,\t0.634303574686285620,\t0.634342228096756220,\t\n0.634380879921370820,\t0.634419530160033270,\t0.634458178812646880,\t0.634496825879115380,\t0.634535471359341520,\t0.634574115253228930,\t0.634612757560681360,\t0.634651398281601660,\t\n0.634690037415893360,\t0.634728674963460080,\t0.634767310924205350,\t0.634805945298032030,\t0.634844578084843960,\t0.634883209284544340,\t0.634921838897037020,\t0.634960466922224740,\t\n0.634999093360011370,\t0.635037718210300190,\t0.635076341472995190,\t0.635114963147998870,\t0.635153583235215200,\t0.635192201734547490,\t0.635230818645899700,\t0.635269433969174570,\t\n0.635308047704275740,\t0.635346659851107170,\t0.635385270409571600,\t0.635423879379572900,\t0.635462486761014470,\t0.635501092553800160,\t0.635539696757832840,\t0.635578299373016240,\t\n0.635616900399253780,\t0.635655499836449530,\t0.635694097684506240,\t0.635732693943327650,\t0.635771288612817290,\t0.635809881692879000,\t0.635848473183415750,\t0.635887063084331290,\t\n0.635925651395529260,\t0.635964238116913380,\t0.636002823248386530,\t0.636041406789852660,\t0.636079988741215630,\t0.636118569102378180,\t0.636157147873244400,\t0.636195725053717690,\t\n0.636234300643702120,\t0.636272874643100340,\t0.636311447051816410,\t0.636350017869753870,\t0.636388587096816670,\t0.636427154732907670,\t0.636465720777930730,\t0.636504285231789480,\t\n0.636542848094387880,\t0.636581409365628790,\t0.636619969045416180,\t0.636658527133653670,\t0.636697083630245240,\t0.636735638535093740,\t0.636774191848103020,\t0.636812743569176940,\t\n0.636851293698219360,\t0.636889842235133120,\t0.636928389179822310,\t0.636966934532190890,\t0.637005478292141710,\t0.637044020459578970,\t0.637082561034406080,\t0.637121100016527110,\t\n0.637159637405845140,\t0.637198173202264020,\t0.637236707405687500,\t0.637275240016019540,\t0.637313771033163110,\t0.637352300457022290,\t0.637390828287500710,\t0.637429354524502330,\t\n0.637467879167930350,\t0.637506402217688510,\t0.637544923673680760,\t0.637583443535811090,\t0.637621961803982450,\t0.637660478478098810,\t0.637698993558064480,\t0.637737507043782180,\t\n0.637776018935156230,\t0.637814529232090140,\t0.637853037934488110,\t0.637891545042253090,\t0.637930050555289290,\t0.637968554473500320,\t0.638007056796790260,\t0.638045557525062310,\t\n0.638084056658220430,\t0.638122554196168370,\t0.638161050138810300,\t0.638199544486049210,\t0.638238037237789380,\t0.638276528393934340,\t0.638315017954388390,\t0.638353505919054490,\t\n0.638391992287836940,\t0.638430477060639600,\t0.638468960237365880,\t0.638507441817919630,\t0.638545921802204820,\t0.638584400190125520,\t0.638622876981584930,\t0.638661352176487120,\t\n0.638699825774735940,\t0.638738297776235590,\t0.638776768180889130,\t0.638815236988600650,\t0.638853704199274230,\t0.638892169812813830,\t0.638930633829122630,\t0.638969096248104830,\t\n0.639007557069664280,\t0.639046016293705280,\t0.639084473920130790,\t0.639122929948845230,\t0.639161384379752230,\t0.639199837212756190,\t0.639238288447760210,\t0.639276738084668450,\t\n0.639315186123385230,\t0.639353632563813720,\t0.639392077405858130,\t0.639430520649422300,\t0.639468962294410530,\t0.639507402340726010,\t0.639545840788272920,\t0.639584277636955360,\t\n0.639622712886677380,\t0.639661146537342300,\t0.639699578588854290,\t0.639738009041117440,\t0.639776437894035820,\t0.639814865147512850,\t0.639853290801452590,\t0.639891714855759240,\t\n0.639930137310336880,\t0.639968558165088800,\t0.640006977419919300,\t0.640045395074732790,\t0.640083811129432470,\t0.640122225583922510,\t0.640160638438107110,\t0.640199049691890340,\t\n0.640237459345175730,\t0.640275867397867350,\t0.640314273849869390,\t0.640352678701086030,\t0.640391081951420690,\t0.640429483600777560,\t0.640467883649060710,\t0.640506282096174660,\t\n0.640544678942022380,\t0.640583074186508510,\t0.640621467829536880,\t0.640659859871012040,\t0.640698250310837050,\t0.640736639148916540,\t0.640775026385154820,\t0.640813412019455080,\t\n0.640851796051721820,\t0.640890178481859140,\t0.640928559309771330,\t0.640966938535361800,\t0.641005316158534840,\t0.641043692179194660,\t0.641082066597245650,\t0.641120439412591000,\t\n0.641158810625135360,\t0.641197180234782560,\t0.641235548241437250,\t0.641273914645002720,\t0.641312279445383380,\t0.641350642642483430,\t0.641389004236207150,\t0.641427364226457960,\t\n0.641465722613140390,\t0.641504079396158940,\t0.641542434575416820,\t0.641580788150818760,\t0.641619140122268620,\t0.641657490489671020,\t0.641695839252929280,\t0.641734186411948020,\t\n0.641772531966631310,\t0.641810875916883570,\t0.641849218262608320,\t0.641887559003709970,\t0.641925898140092820,\t0.641964235671661170,\t0.642002571598318640,\t0.642040905919969650,\t\n0.642079238636518390,\t0.642117569747869490,\t0.642155899253926240,\t0.642194227154593180,\t0.642232553449774590,\t0.642270878139375000,\t0.642309201223297820,\t0.642347522701447680,\t\n0.642385842573729100,\t0.642424160840045500,\t0.642462477500301610,\t0.642500792554401400,\t0.642539106002249620,\t0.642577417843749670,\t0.642615728078806290,\t0.642654036707323460,\t\n0.642692343729205920,\t0.642730649144357290,\t0.642768952952681880,\t0.642807255154084210,\t0.642845555748468690,\t0.642883854735738950,\t0.642922152115799510,\t0.642960447888554780,\t\n0.642998742053909170,\t0.643037034611766420,\t0.643075325562031170,\t0.643113614904607830,\t0.643151902639400140,\t0.643190188766312730,\t0.643228473285249790,\t0.643266756196116060,\t\n0.643305037498815070,\t0.643343317193251550,\t0.643381595279329700,\t0.643419871756954140,\t0.643458146626028630,\t0.643496419886457780,\t0.643534691538145800,\t0.643572961580997420,\t\n0.643611230014916380,\t0.643649496839807210,\t0.643687762055574320,\t0.643726025662122340,\t0.643764287659355010,\t0.643802548047176960,\t0.643840806825492830,\t0.643879063994206360,\t\n0.643917319553222180,\t0.643955573502444810,\t0.643993825841778780,\t0.644032076571127820,\t0.644070325690396680,\t0.644108573199489780,\t0.644146819098311730,\t0.644185063386766400,\t\n0.644223306064758310,\t0.644261547132191970,\t0.644299786588972130,\t0.644338024435002430,\t0.644376260670187720,\t0.644414495294432290,\t0.644452728307641000,\t0.644490959709717590,\t\n0.644529189500566810,\t0.644567417680092960,\t0.644605644248200990,\t0.644643869204794440,\t0.644682092549778370,\t0.644720314283057320,\t0.644758534404535230,\t0.644796752914116640,\t\n0.644834969811706290,\t0.644873185097208920,\t0.644911398770528050,\t0.644949610831568880,\t0.644987821280235570,\t0.645026030116433110,\t0.645064237340065130,\t0.645102442951036690,\t\n0.645140646949252110,\t0.645178849334616220,\t0.645217050107032790,\t0.645255249266406870,\t0.645293446812642780,\t0.645331642745645360,\t0.645369837065318590,\t0.645408029771567190,\t\n0.645446220864296040,\t0.645484410343408980,\t0.645522598208810860,\t0.645560784460406320,\t0.645598969098100220,\t0.645637152121796290,\t0.645675333531399390,\t0.645713513326814260,\t\n0.645751691507945650,\t0.645789868074697520,\t0.645828043026974720,\t0.645866216364681670,\t0.645904388087723550,\t0.645942558196004100,\t0.645980726689428300,\t0.646018893567900650,\t\n0.646057058831326030,\t0.646095222479608490,\t0.646133384512652900,\t0.646171544930364220,\t0.646209703732646300,\t0.646247860919404000,\t0.646286016490542180,\t0.646324170445965680,\t\n0.646362322785578370,\t0.646400473509285310,\t0.646438622616991030,\t0.646476770108600500,\t0.646514915984017670,\t0.646553060243147630,\t0.646591202885894890,\t0.646629343912164530,\t\n0.646667483321860530,\t0.646705621114887720,\t0.646743757291150860,\t0.646781891850555010,\t0.646820024793004040,\t0.646858156118403030,\t0.646896285826656590,\t0.646934413917669810,\t\n0.646972540391346660,\t0.647010665247592100,\t0.647048788486311200,\t0.647086910107408150,\t0.647125030110787700,\t0.647163148496354700,\t0.647201265264014220,\t0.647239380413670130,\t\n0.647277493945227710,\t0.647315605858591490,\t0.647353716153666550,\t0.647391824830357070,\t0.647429931888567900,\t0.647468037328204020,\t0.647506141149170380,\t0.647544243351371060,\t\n0.647582343934711040,\t0.647620442899095260,\t0.647658540244428590,\t0.647696635970615330,\t0.647734730077560440,\t0.647772822565169100,\t0.647810913433345400,\t0.647849002681994300,\t\n0.647887090311020760,\t0.647925176320329870,\t0.647963260709825680,\t0.648001343479413290,\t0.648039424628997550,\t0.648077504158483640,\t0.648115582067775640,\t0.648153658356778630,\t\n0.648191733025397450,\t0.648229806073537420,\t0.648267877501102370,\t0.648305947307997730,\t0.648344015494128120,\t0.648382082059398850,\t0.648420147003714090,\t0.648458210326978920,\t\n0.648496272029098650,\t0.648534332109977240,\t0.648572390569520100,\t0.648610447407631850,\t0.648648502624217920,\t0.648686556219182360,\t0.648724608192430500,\t0.648762658543867050,\t\n0.648800707273397230,\t0.648838754380925420,\t0.648876799866356600,\t0.648914843729595850,\t0.648952885970548340,\t0.648990926589118280,\t0.649028965585210840,\t0.649067002958731100,\t\n0.649105038709584140,\t0.649143072837674250,\t0.649181105342906630,\t0.649219136225186570,\t0.649257165484418360,\t0.649295193120507320,\t0.649333219133358170,\t0.649371243522876450,\t\n0.649409266288966220,\t0.649447287431532790,\t0.649485306950481120,\t0.649523324845716620,\t0.649561341117143360,\t0.649599355764666760,\t0.649637368788191890,\t0.649675380187623830,\t\n0.649713389962866980,\t0.649751398113826650,\t0.649789404640407910,\t0.649827409542515940,\t0.649865412820055170,\t0.649903414472930760,\t0.649941414501047920,\t0.649979412904311830,\t\n0.650017409682626780,\t0.650055404835898300,\t0.650093398364031680,\t0.650131390266931230,\t0.650169380544502240,\t0.650207369196649790,\t0.650245356223279280,\t0.650283341624295020,\t\n0.650321325399602520,\t0.650359307549106540,\t0.650397288072712800,\t0.650435266970325390,\t0.650473244241849820,\t0.650511219887191180,\t0.650549193906254760,\t0.650587166298945090,\t\n0.650625137065167450,\t0.650663106204827040,\t0.650701073717829150,\t0.650739039604078200,\t0.650777003863479700,\t0.650814966495939060,\t0.650852927501360590,\t0.650890886879649910,\t\n0.650928844630711880,\t0.650966800754452120,\t0.651004755250775060,\t0.651042708119586090,\t0.651080659360790400,\t0.651118608974293300,\t0.651156556959999410,\t0.651194503317814140,\t\n0.651232448047642580,\t0.651270391149390230,\t0.651308332622961620,\t0.651346272468262160,\t0.651384210685197030,\t0.651422147273671650,\t0.651460082233590530,\t0.651498015564859310,\t\n0.651535947267383290,\t0.651573877341067200,\t0.651611805785816230,\t0.651649732601535910,\t0.651687657788131540,\t0.651725581345507730,\t0.651763503273569910,\t0.651801423572223370,\t\n0.651839342241373520,\t0.651877259280925100,\t0.651915174690783420,\t0.651953088470853870,\t0.651991000621041980,\t0.652028911141252170,\t0.652066820031390050,\t0.652104727291360930,\t\n0.652142632921070440,\t0.652180536920422880,\t0.652218439289323990,\t0.652256340027679070,\t0.652294239135393640,\t0.652332136612372220,\t0.652370032458520430,\t0.652407926673744030,\t\n0.652445819257947420,\t0.652483710211036130,\t0.652521599532915660,\t0.652559487223491660,\t0.652597373282668420,\t0.652635257710351800,\t0.652673140506447090,\t0.652711021670859810,\t\n0.652748901203494600,\t0.652786779104257200,\t0.652824655373052900,\t0.652862530009787220,\t0.652900403014364920,\t0.652938274386691610,\t0.652976144126672600,\t0.653014012234213510,\t\n0.653051878709219100,\t0.653089743551594990,\t0.653127606761246930,\t0.653165468338079420,\t0.653203328281998340,\t0.653241186592908860,\t0.653279043270716730,\t0.653316898315326690,\t\n0.653354751726644480,\t0.653392603504575290,\t0.653430453649024970,\t0.653468302159898150,\t0.653506149037100580,\t0.653543994280537670,\t0.653581837890115040,\t0.653619679865737550,\t\n0.653657520207310830,\t0.653695358914740290,\t0.653733195987931780,\t0.653771031426789830,\t0.653808865231220390,\t0.653846697401129110,\t0.653884527936420710,\t0.653922356837000950,\t\n0.653960184102775340,\t0.653998009733649630,\t0.654035833729528560,\t0.654073656090317980,\t0.654111476815923080,\t0.654149295906249930,\t0.654187113361203280,\t0.654224929180688750,\t\n0.654262743364611880,\t0.654300555912878500,\t0.654338366825393480,\t0.654376176102062450,\t0.654413983742791030,\t0.654451789747484970,\t0.654489594116049120,\t0.654527396848389230,\t\n0.654565197944411150,\t0.654602997404019840,\t0.654640795227121040,\t0.654678591413620170,\t0.654716385963423190,\t0.654754178876434940,\t0.654791970152561190,\t0.654829759791707540,\t\n0.654867547793779870,\t0.654905334158682910,\t0.654943118886322730,\t0.654980901976604630,\t0.655018683429434700,\t0.655056463244717670,\t0.655094241422359500,\t0.655132017962265830,\t\n0.655169792864342290,\t0.655207566128494070,\t0.655245337754626790,\t0.655283107742646200,\t0.655320876092458260,\t0.655358642803967720,\t0.655396407877080640,\t0.655434171311702900,\t\n0.655471933107739320,\t0.655509693265095890,\t0.655547451783678240,\t0.655585208663392320,\t0.655622963904143100,\t0.655660717505836320,\t0.655698469468377840,\t0.655736219791673510,\t\n0.655773968475628300,\t0.655811715520148280,\t0.655849460925138850,\t0.655887204690506100,\t0.655924946816154990,\t0.655962687301991590,\t0.656000426147921420,\t0.656038163353850460,\t\n0.656075898919683880,\t0.656113632845327530,\t0.656151365130687390,\t0.656189095775668530,\t0.656226824780176910,\t0.656264552144118160,\t0.656302277867398480,\t0.656340001949922700,\t\n0.656377724391596920,\t0.656415445192326860,\t0.656453164352018610,\t0.656490881870576910,\t0.656528597747908170,\t0.656566311983917910,\t0.656604024578512190,\t0.656641735531595990,\t\n0.656679444843075500,\t0.656717152512856450,\t0.656754858540844810,\t0.656792562926945770,\t0.656830265671065280,\t0.656867966773109440,\t0.656905666232983300,\t0.656943364050593060,\t\n0.656981060225844350,\t0.657018754758643350,\t0.657056447648895150,\t0.657094138896505810,\t0.657131828501381190,\t0.657169516463427250,\t0.657207202782549290,\t0.657244887458653170,\t\n0.657282570491644960,\t0.657320251881430620,\t0.657357931627915230,\t0.657395609731005190,\t0.657433286190605930,\t0.657470961006623940,\t0.657508634178964100,\t0.657546305707532810,\t\n0.657583975592235690,\t0.657621643832978940,\t0.657659310429667740,\t0.657696975382208280,\t0.657734638690506750,\t0.657772300354468210,\t0.657809960373998970,\t0.657847618749004880,\t\n0.657885275479392020,\t0.657922930565065570,\t0.657960584005931940,\t0.657998235801896760,\t0.658035885952866330,\t0.658073534458745830,\t0.658111181319441570,\t0.658148826534859290,\t\n0.658186470104905390,\t0.658224112029484830,\t0.658261752308504030,\t0.658299390941868960,\t0.658337027929485560,\t0.658374663271259370,\t0.658412296967096580,\t0.658449929016903250,\t\n0.658487559420584900,\t0.658525188178047500,\t0.658562815289197250,\t0.658600440753940310,\t0.658638064572181770,\t0.658675686743828260,\t0.658713307268785410,\t0.658750926146959740,\t\n0.658788543378256320,\t0.658826158962581570,\t0.658863772899841440,\t0.658901385189942120,\t0.658938995832789140,\t0.658976604828288570,\t0.659014212176346480,\t0.659051817876869280,\t\n0.659089421929762160,\t0.659127024334931530,\t0.659164625092283570,\t0.659202224201723810,\t0.659239821663158420,\t0.659277417476493600,\t0.659315011641635420,\t0.659352604158489400,\t\n0.659390195026961940,\t0.659427784246959030,\t0.659465371818386830,\t0.659502957741150970,\t0.659540542015157770,\t0.659578124640313180,\t0.659615705616523500,\t0.659653284943694350,\t\n0.659690862621731930,\t0.659728438650542430,\t0.659766013030032020,\t0.659803585760106340,\t0.659841156840671680,\t0.659878726271634570,\t0.659916294052900200,\t0.659953860184375070,\t\n0.659991424665965280,\t0.660028987497577320,\t0.660066548679116630,\t0.660104108210489480,\t0.660141666091601960,\t0.660179222322360810,\t0.660216776902671110,\t0.660254329832439590,\t\n0.660291881111572110,\t0.660329430739975410,\t0.660366978717554680,\t0.660404525044216540,\t0.660442069719867190,\t0.660479612744412910,\t0.660517154117759240,\t0.660554693839812690,\t\n0.660592231910479440,\t0.660629768329665910,\t0.660667303097277610,\t0.660704836213221180,\t0.660742367677402910,\t0.660779897489728320,\t0.660817425650104040,\t0.660854952158436260,\t\n0.660892477014631390,\t0.660930000218594940,\t0.660967521770233550,\t0.661005041669453290,\t0.661042559916160790,\t0.661080076510261570,\t0.661117591451662160,\t0.661155104740268840,\t\n0.661192616375988030,\t0.661230126358725360,\t0.661267634688387340,\t0.661305141364880170,\t0.661342646388110580,\t0.661380149757984090,\t0.661417651474407120,\t0.661455151537286400,\t\n0.661492649946527460,\t0.661530146702036910,\t0.661567641803720960,\t0.661605135251486230,\t0.661642627045238350,\t0.661680117184883950,\t0.661717605670329220,\t0.661755092501480790,\t\n0.661792577678244290,\t0.661830061200526340,\t0.661867543068233370,\t0.661905023281271650,\t0.661942501839547280,\t0.661979978742966440,\t0.662017453991435740,\t0.662054927584861840,\t\n0.662092399523150130,\t0.662129869806207470,\t0.662167338433940600,\t0.662204805406254930,\t0.662242270723057190,\t0.662279734384253800,\t0.662317196389751510,\t0.662354656739455820,\t\n0.662392115433273480,\t0.662429572471110890,\t0.662467027852874700,\t0.662504481578470640,\t0.662541933647805230,\t0.662579384060785090,\t0.662616832817316870,\t0.662654279917306190,\t\n0.662691725360659790,\t0.662729169147284080,\t0.662766611277085800,\t0.662804051749970700,\t0.662841490565845400,\t0.662878927724616320,\t0.662916363226190410,\t0.662953797070473190,\t\n0.662991229257371420,\t0.663028659786791930,\t0.663066088658640580,\t0.663103515872823900,\t0.663140941429248400,\t0.663178365327820930,\t0.663215787568447230,\t0.663253208151034060,\t\n0.663290627075487800,\t0.663328044341715330,\t0.663365459949622480,\t0.663402873899115900,\t0.663440286190102200,\t0.663477696822488140,\t0.663515105796179450,\t0.663552513111082990,\t\n0.663589918767105270,\t0.663627322764153040,\t0.663664725102132260,\t0.663702125780949560,\t0.663739524800512020,\t0.663776922160725260,\t0.663814317861496140,\t0.663851711902731290,\t\n0.663889104284337450,\t0.663926495006220590,\t0.663963884068287440,\t0.664001271470444520,\t0.664038657212598920,\t0.664076041294656140,\t0.664113423716523380,\t0.664150804478107040,\t\n0.664188183579314080,\t0.664225561020050260,\t0.664262936800222530,\t0.664300310919737510,\t0.664337683378501960,\t0.664375054176421950,\t0.664412423313404330,\t0.664449790789355950,\t\n0.664487156604182670,\t0.664524520757791670,\t0.664561883250089250,\t0.664599244080982480,\t0.664636603250377210,\t0.664673960758180530,\t0.664711316604298940,\t0.664748670788639310,\t\n0.664786023311107700,\t0.664823374171611080,\t0.664860723370055970,\t0.664898070906349450,\t0.664935416780397360,\t0.664972760992106780,\t0.665010103541384230,\t0.665047444428136790,\t\n0.665084783652270420,\t0.665122121213692070,\t0.665159457112308730,\t0.665196791348026450,\t0.665234123920752210,\t0.665271454830392630,\t0.665308784076854790,\t0.665346111660044540,\t\n0.665383437579869170,\t0.665420761836235110,\t0.665458084429049520,\t0.665495405358218270,\t0.665532724623648650,\t0.665570042225247180,\t0.665607358162920940,\t0.665644672436575880,\t\n0.665681985046119310,\t0.665719295991457630,\t0.665756605272498140,\t0.665793912889146800,\t0.665831218841310580,\t0.665868523128896330,\t0.665905825751811230,\t0.665943126709961140,\t\n0.665980426003253250,\t0.666017723631594620,\t0.666055019594891330,\t0.666092313893050570,\t0.666129606525978970,\t0.666166897493583600,\t0.666204186795770760,\t0.666241474432447410,\t\n0.666278760403520410,\t0.666316044708896830,\t0.666353327348482850,\t0.666390608322185440,\t0.666427887629911670,\t0.666465165271568400,\t0.666502441247061930,\t0.666539715556299320,\t\n0.666576988199187430,\t0.666614259175633330,\t0.666651528485543430,\t0.666688796128824590,\t0.666726062105384100,\t0.666763326415128140,\t0.666800589057963800,\t0.666837850033798030,\t\n0.666875109342538020,\t0.666912366984089840,\t0.666949622958360800,\t0.666986877265257630,\t0.667024129904687620,\t0.667061380876557090,\t0.667098630180772870,\t0.667135877817242260,\t\n0.667173123785872240,\t0.667210368086569080,\t0.667247610719239990,\t0.667284851683791810,\t0.667322090980131840,\t0.667359328608166380,\t0.667396564567802610,\t0.667433798858947710,\t\n0.667471031481507990,\t0.667508262435390740,\t0.667545491720502810,\t0.667582719336751510,\t0.667619945284043000,\t0.667657169562284710,\t0.667694392171383380,\t0.667731613111246510,\t\n0.667768832381780310,\t0.667806049982891950,\t0.667843265914488390,\t0.667880480176477050,\t0.667917692768764340,\t0.667954903691257210,\t0.667992112943862850,\t0.668029320526488670,\t\n0.668066526439040740,\t0.668103730681426480,\t0.668140933253552950,\t0.668178134155327340,\t0.668215333386656170,\t0.668252530947446630,\t0.668289726837606010,\t0.668326921057040830,\t\n0.668364113605658390,\t0.668401304483365540,\t0.668438493690069800,\t0.668475681225677580,\t0.668512867090096050,\t0.668550051283232420,\t0.668587233804993960,\t0.668624414655287100,\t\n0.668661593834019240,\t0.668698771341097340,\t0.668735947176428920,\t0.668773121339920170,\t0.668810293831478720,\t0.668847464651011530,\t0.668884633798426000,\t0.668921801273628550,\t\n0.668958967076526580,\t0.668996131207027500,\t0.669033293665037830,\t0.669070454450464870,\t0.669107613563215800,\t0.669144771003198020,\t0.669181926770317960,\t0.669219080864483120,\t\n0.669256233285600580,\t0.669293384033577740,\t0.669330533108321140,\t0.669367680509738160,\t0.669404826237736120,\t0.669441970292222190,\t0.669479112673103120,\t0.669516253380286200,\t\n0.669553392413678620,\t0.669590529773188000,\t0.669627665458720660,\t0.669664799470184090,\t0.669701931807485940,\t0.669739062470532610,\t0.669776191459231620,\t0.669813318773490150,\t\n0.669850444413215730,\t0.669887568378314870,\t0.669924690668695090,\t0.669961811284263580,\t0.669998930224927850,\t0.670036047490594420,\t0.670073163081170930,\t0.670110276996564560,\t\n0.670147389236682820,\t0.670184499801432240,\t0.670221608690720450,\t0.670258715904454630,\t0.670295821442542290,\t0.670332925304890080,\t0.670370027491405620,\t0.670407128001996420,\t\n0.670444226836569010,\t0.670481323995031130,\t0.670518419477289850,\t0.670555513283252800,\t0.670592605412826730,\t0.670629695865919140,\t0.670666784642437340,\t0.670703871742288850,\t\n0.670740957165380400,\t0.670778040911619520,\t0.670815122980913610,\t0.670852203373170090,\t0.670889282088295790,\t0.670926359126198360,\t0.670963434486784970,\t0.671000508169963260,\t\n0.671037580175640080,\t0.671074650503722840,\t0.671111719154119050,\t0.671148786126736230,\t0.671185851421481130,\t0.671222915038261370,\t0.671259976976984700,\t0.671297037237557850,\t\n0.671334095819888230,\t0.671371152723883480,\t0.671408207949451220,\t0.671445261496497970,\t0.671482313364931690,\t0.671519363554659580,\t0.671556412065589360,\t0.671593458897627780,\t\n0.671630504050682590,\t0.671667547524661180,\t0.671704589319471190,\t0.671741629435019360,\t0.671778667871213540,\t0.671815704627960920,\t0.671852739705169450,\t0.671889773102745890,\t\n0.671926804820597750,\t0.671963834858632980,\t0.672000863216758340,\t0.672037889894881450,\t0.672074914892909940,\t0.672111938210751440,\t0.672148959848312690,\t0.672185979805501650,\t\n0.672222998082225520,\t0.672260014678392360,\t0.672297029593908800,\t0.672334042828682590,\t0.672371054382621350,\t0.672408064255632820,\t0.672445072447623750,\t0.672482078958501980,\t\n0.672519083788175040,\t0.672556086936550780,\t0.672593088403535930,\t0.672630088189038360,\t0.672667086292965900,\t0.672704082715225300,\t0.672741077455724650,\t0.672778070514371220,\t\n0.672815061891072990,\t0.672852051585736800,\t0.672889039598270400,\t0.672926025928581420,\t0.672963010576577700,\t0.672999993542166110,\t0.673036974825254600,\t0.673073954425750580,\t\n0.673110932343562120,\t0.673147908578595850,\t0.673184883130759970,\t0.673221855999961760,\t0.673258827186109300,\t0.673295796689109330,\t0.673332764508870030,\t0.673369730645298700,\t\n0.673406695098303420,\t0.673443657867791030,\t0.673480618953669620,\t0.673517578355846910,\t0.673554536074229880,\t0.673591492108726600,\t0.673628446459244580,\t0.673665399125691680,\t\n0.673702350107975080,\t0.673739299406002520,\t0.673776247019681640,\t0.673813192948920610,\t0.673850137193626190,\t0.673887079753706430,\t0.673924020629069090,\t0.673960959819621900,\t\n0.673997897325272040,\t0.674034833145927380,\t0.674071767281495650,\t0.674108699731884920,\t0.674145630497002050,\t0.674182559576755100,\t0.674219486971052050,\t0.674256412679799970,\t\n0.674293336702906920,\t0.674330259040280430,\t0.674367179691828690,\t0.674404098657458650,\t0.674441015937078390,\t0.674477931530595540,\t0.674514845437918180,\t0.674551757658953480,\t\n0.674588668193609300,\t0.674625577041793490,\t0.674662484203414010,\t0.674699389678378060,\t0.674736293466593580,\t0.674773195567968440,\t0.674810095982410600,\t0.674846994709827120,\t\n0.674883891750126310,\t0.674920787103216010,\t0.674957680769003420,\t0.674994572747396600,\t0.675031463038303300,\t0.675068351641631810,\t0.675105238557288990,\t0.675142123785183120,\t\n0.675179007325221960,\t0.675215889177313680,\t0.675252769341365240,\t0.675289647817284840,\t0.675326524604980440,\t0.675363399704359990,\t0.675400273115330680,\t0.675437144837800820,\t\n0.675474014871678020,\t0.675510883216870470,\t0.675547749873285360,\t0.675584614840830990,\t0.675621478119415310,\t0.675658339708945730,\t0.675695199609330220,\t0.675732057820476630,\t\n0.675768914342293360,\t0.675805769174687490,\t0.675842622317567090,\t0.675879473770840120,\t0.675916323534414890,\t0.675953171608198460,\t0.675990017992099120,\t0.676026862686024740,\t\n0.676063705689883500,\t0.676100547003582800,\t0.676137386627030600,\t0.676174224560134980,\t0.676211060802804020,\t0.676247895354945230,\t0.676284728216466680,\t0.676321559387276230,\t\n0.676358388867282280,\t0.676395216656392020,\t0.676432042754513630,\t0.676468867161555630,\t0.676505689877424990,\t0.676542510902030210,\t0.676579330235279050,\t0.676616147877080020,\t\n0.676652963827340190,\t0.676689778085967970,\t0.676726590652871440,\t0.676763401527958660,\t0.676800210711136940,\t0.676837018202314900,\t0.676873824001400170,\t0.676910628108301270,\t\n0.676947430522925390,\t0.676984231245181030,\t0.677021030274976070,\t0.677057827612218780,\t0.677094623256816690,\t0.677131417208677980,\t0.677168209467711170,\t0.677205000033823450,\t\n0.677241788906923100,\t0.677278576086918440,\t0.677315361573717630,\t0.677352145367228100,\t0.677388927467358130,\t0.677425707874015900,\t0.677462486587109720,\t0.677499263606547000,\t\n0.677536038932236130,\t0.677572812564085190,\t0.677609584502002480,\t0.677646354745895520,\t0.677683123295672600,\t0.677719890151242010,\t0.677756655312511840,\t0.677793418779389920,\t\n0.677830180551784340,\t0.677866940629603620,\t0.677903699012755160,\t0.677940455701147580,\t0.677977210694688860,\t0.678013963993287390,\t0.678050715596850710,\t0.678087465505287200,\t\n0.678124213718505060,\t0.678160960236412700,\t0.678197705058917630,\t0.678234448185928260,\t0.678271189617352780,\t0.678307929353099690,\t0.678344667393076420,\t0.678381403737191470,\t\n0.678418138385353030,\t0.678454871337469510,\t0.678491602593448540,\t0.678528332153198630,\t0.678565060016627860,\t0.678601786183644750,\t0.678638510654156810,\t0.678675233428072570,\t\n0.678711954505300640,\t0.678748673885748440,\t0.678785391569324600,\t0.678822107555937300,\t0.678858821845495060,\t0.678895534437905400,\t0.678932245333076940,\t0.678968954530917770,\t\n0.679005662031336720,\t0.679042367834240990,\t0.679079071939539420,\t0.679115774347140210,\t0.679152475056951870,\t0.679189174068882020,\t0.679225871382839190,\t0.679262566998731780,\t\n0.679299260916468190,\t0.679335953135956180,\t0.679372643657104260,\t0.679409332479821050,\t0.679446019604014180,\t0.679482705029592290,\t0.679519388756463560,\t0.679556070784536730,\t\n0.679592751113719420,\t0.679629429743920270,\t0.679666106675047450,\t0.679702781907009830,\t0.679739455439714810,\t0.679776127273071130,\t0.679812797406987190,\t0.679849465841371630,\t\n0.679886132576131950,\t0.679922797611177020,\t0.679959460946415130,\t0.679996122581754790,\t0.680032782517103970,\t0.680069440752371080,\t0.680106097287464960,\t0.680142752122293250,\t\n0.680179405256764680,\t0.680216056690787660,\t0.680252706424270710,\t0.680289354457121800,\t0.680326000789249320,\t0.680362645420562020,\t0.680399288350968300,\t0.680435929580376130,\t\n0.680472569108694140,\t0.680509206935830610,\t0.680545843061694520,\t0.680582477486193380,\t0.680619110209236160,\t0.680655741230731030,\t0.680692370550586960,\t0.680728998168711690,\t\n0.680765624085013840,\t0.680802248299402280,\t0.680838870811784850,\t0.680875491622070060,\t0.680912110730166660,\t0.680948728135983390,\t0.680985343839427880,\t0.681021957840408980,\t\n0.681058570138835200,\t0.681095180734615390,\t0.681131789627657190,\t0.681168396817869670,\t0.681205002305161010,\t0.681241606089440290,\t0.681278208170615130,\t0.681314808548594500,\t\n0.681351407223286800,\t0.681388004194600990,\t0.681424599462444820,\t0.681461193026727140,\t0.681497784887356460,\t0.681534375044241640,\t0.681570963497290520,\t0.681607550246412060,\t\n0.681644135291515020,\t0.681680718632507340,\t0.681717300269297890,\t0.681753880201795060,\t0.681790458429908040,\t0.681827034953544460,\t0.681863609772613290,\t0.681900182887023030,\t\n0.681936754296682770,\t0.681973324001500240,\t0.682009892001384400,\t0.682046458296243770,\t0.682083022885987320,\t0.682119585770523120,\t0.682156146949759900,\t0.682192706423606190,\t\n0.682229264191971160,\t0.682265820254762680,\t0.682302374611889580,\t0.682338927263260840,\t0.682375478208784520,\t0.682412027448369480,\t0.682448574981924350,\t0.682485120809358190,\t\n0.682521664930578860,\t0.682558207345495330,\t0.682594748054016320,\t0.682631287056050700,\t0.682667824351506640,\t0.682704359940292990,\t0.682740893822318400,\t0.682777425997491920,\t\n0.682813956465721520,\t0.682850485226916270,\t0.682887012280984810,\t0.682923537627836200,\t0.682960061267378290,\t0.682996583199520280,\t0.683033103424171230,\t0.683069621941238990,\t\n0.683106138750632750,\t0.683142653852261140,\t0.683179167246033110,\t0.683215678931856970,\t0.683252188909641680,\t0.683288697179295750,\t0.683325203740728580,\t0.683361708593847930,\t\n0.683398211738563080,\t0.683434713174782660,\t0.683471212902415860,\t0.683507710921370640,\t0.683544207231556180,\t0.683580701832881220,\t0.683617194725254730,\t0.683653685908585000,\t\n0.683690175382781100,\t0.683726663147751660,\t0.683763149203405970,\t0.683799633549652010,\t0.683836116186399060,\t0.683872597113556080,\t0.683909076331031260,\t0.683945553838733790,\t\n0.683982029636572400,\t0.684018503724456270,\t0.684054976102293600,\t0.684091446769993450,\t0.684127915727464790,\t0.684164382974616570,\t0.684200848511356980,\t0.684237312337595440,\t\n0.684273774453240560,\t0.684310234858201530,\t0.684346693552386530,\t0.684383150535704980,\t0.684419605808065380,\t0.684456059369377150,\t0.684492511219548460,\t0.684528961358488510,\t\n0.684565409786106470,\t0.684601856502310540,\t0.684638301507010110,\t0.684674744800113810,\t0.684711186381530950,\t0.684747626251169810,\t0.684784064408939570,\t0.684820500854749330,\t\n0.684856935588508020,\t0.684893368610124060,\t0.684929799919506750,\t0.684966229516564830,\t0.685002657401207800,\t0.685039083573343750,\t0.685075508032881860,\t0.685111930779731430,\t\n0.685148351813801290,\t0.685184771135000090,\t0.685221188743236900,\t0.685257604638421000,\t0.685294018820460930,\t0.685330431289265630,\t0.685366842044744410,\t0.685403251086806330,\t\n0.685439658415359810,\t0.685476064030314140,\t0.685512467931578270,\t0.685548870119061630,\t0.685585270592672490,\t0.685621669352320050,\t0.685658066397913600,\t0.685694461729362210,\t\n0.685730855346574410,\t0.685767247249459370,\t0.685803637437926270,\t0.685840025911884420,\t0.685876412671242220,\t0.685912797715908850,\t0.685949181045793940,\t0.685985562660805680,\t\n0.686021942560853580,\t0.686058320745846610,\t0.686094697215694050,\t0.686131071970304540,\t0.686167445009587370,\t0.686203816333451510,\t0.686240185941806470,\t0.686276553834560650,\t\n0.686312920011623360,\t0.686349284472903890,\t0.686385647218311520,\t0.686422008247754680,\t0.686458367561142760,\t0.686494725158384940,\t0.686531081039390760,\t0.686567435204068380,\t\n0.686603787652327550,\t0.686640138384077230,\t0.686676487399226820,\t0.686712834697684850,\t0.686749180279360830,\t0.686785524144164160,\t0.686821866292003480,\t0.686858206722787970,\t\n0.686894545436427030,\t0.686930882432830070,\t0.686967217711905500,\t0.687003551273563050,\t0.687039883117711580,\t0.687076213244260710,\t0.687112541653119080,\t0.687148868344195970,\t\n0.687185193317400800,\t0.687221516572642970,\t0.687257838109830990,\t0.687294157928874380,\t0.687330476029682450,\t0.687366792412164580,\t0.687403107076229420,\t0.687439420021786600,\t\n0.687475731248745390,\t0.687512040757014660,\t0.687548348546503710,\t0.687584654617122040,\t0.687620958968778950,\t0.687657261601383190,\t0.687693562514844150,\t0.687729861709071360,\t\n0.687766159183974100,\t0.687802454939461240,\t0.687838748975442280,\t0.687875041291826310,\t0.687911331888523160,\t0.687947620765441250,\t0.687983907922490420,\t0.688020193359579760,\t\n0.688056477076618880,\t0.688092759073516640,\t0.688129039350182330,\t0.688165317906525800,\t0.688201594742455680,\t0.688237869857881600,\t0.688274143252712860,\t0.688310414926858960,\t\n0.688346684880228770,\t0.688382953112731900,\t0.688419219624277660,\t0.688455484414775660,\t0.688491747484134550,\t0.688528008832264170,\t0.688564268459073700,\t0.688600526364473000,\t\n0.688636782548370570,\t0.688673037010676170,\t0.688709289751299190,\t0.688745540770149380,\t0.688781790067135360,\t0.688818037642166870,\t0.688854283495153210,\t0.688890527626004220,\t\n0.688926770034628540,\t0.688963010720936020,\t0.688999249684836280,\t0.689035486926238060,\t0.689071722445051100,\t0.689107956241184930,\t0.689144188314549040,\t0.689180418665052530,\t\n0.689216647292604900,\t0.689252874197115670,\t0.689289099378494470,\t0.689325322836650270,\t0.689361544571492790,\t0.689397764582931450,\t0.689433982870875980,\t0.689470199435235240,\t\n0.689506414275919080,\t0.689542627392836780,\t0.689578838785898320,\t0.689615048455012420,\t0.689651256400088840,\t0.689687462621037530,\t0.689723667117767110,\t0.689759869890187670,\t\n0.689796070938208490,\t0.689832270261739430,\t0.689868467860689450,\t0.689904663734968170,\t0.689940857884485340,\t0.689977050309150690,\t0.690013241008872960,\t0.690049429983562220,\t\n0.690085617233128000,\t0.690121802757479920,\t0.690157986556527050,\t0.690194168630179240,\t0.690230348978346010,\t0.690266527600937210,\t0.690302704497861800,\t0.690338879669029630,\t\n0.690375053114350550,\t0.690411224833733520,\t0.690447394827088390,\t0.690483563094324790,\t0.690519729635352690,\t0.690555894450080810,\t0.690592057538419350,\t0.690628218900277590,\t\n0.690664378535565730,\t0.690700536444192490,\t0.690736692626067960,\t0.690772847081101760,\t0.690808999809203740,\t0.690845150810282860,\t0.690881300084249080,\t0.690917447631012040,\t\n0.690953593450481800,\t0.690989737542567210,\t0.691025879907178230,\t0.691062020544224610,\t0.691098159453616300,\t0.691134296635262160,\t0.691170432089072360,\t0.691206565814956760,\t\n0.691242697812824440,\t0.691278828082585340,\t0.691314956624149210,\t0.691351083437426020,\t0.691387208522324830,\t0.691423331878755490,\t0.691459453506627960,\t0.691495573405851990,\t\n0.691531691576336870,\t0.691567808017992560,\t0.691603922730728570,\t0.691640035714455200,\t0.691676146969081420,\t0.691712256494517290,\t0.691748364290672440,\t0.691784470357457050,\t\n0.691820574694780090,\t0.691856677302551850,\t0.691892778180682070,\t0.691928877329080150,\t0.691964974747655950,\t0.692001070436319420,\t0.692037164394980420,\t0.692073256623548240,\t\n0.692109347121932950,\t0.692145435890044290,\t0.692181522927792340,\t0.692217608235086160,\t0.692253691811836050,\t0.692289773657951750,\t0.692325853773343320,\t0.692361932157919970,\t\n0.692398008811591750,\t0.692434083734268400,\t0.692470156925860340,\t0.692506228386276400,\t0.692542298115427000,\t0.692578366113222100,\t0.692614432379571100,\t0.692650496914383850,\t\n0.692686559717570540,\t0.692722620789041010,\t0.692758680128704670,\t0.692794737736471600,\t0.692830793612251640,\t0.692866847755955080,\t0.692902900167491120,\t0.692938950846769820,\t\n0.692974999793701250,\t0.693011047008195380,\t0.693047092490161610,\t0.693083136239510230,\t0.693119178256150880,\t0.693155218539993840,\t0.693191257090948640,\t0.693227293908925120,\t\n0.693263328993833810,\t0.693299362345583760,\t0.693335393964085390,\t0.693371423849248440,\t0.693407452000983300,\t0.693443478419199180,\t0.693479503103806460,\t0.693515526054714890,\t\n0.693551547271834880,\t0.693587566755075600,\t0.693623584504347470,\t0.693659600519560330,\t0.693695614800624580,\t0.693731627347449420,\t0.693767638159945240,\t0.693803647238021900,\t\n0.693839654581589800,\t0.693875660190558240,\t0.693911664064837620,\t0.693947666204337680,\t0.693983666608969040,\t0.694019665278640780,\t0.694055662213263420,\t0.694091657412747250,\t\n0.694127650877001570,\t0.694163642605936770,\t0.694199632599462930,\t0.694235620857490240,\t0.694271607379928210,\t0.694307592166687140,\t0.694343575217677200,\t0.694379556532808470,\t\n0.694415536111990690,\t0.694451513955133940,\t0.694487490062148490,\t0.694523464432944550,\t0.694559437067431730,\t0.694595407965520330,\t0.694631377127120310,\t0.694667344552142190,\t\n0.694703310240495480,\t0.694739274192090360,\t0.694775236406837470,\t0.694811196884646100,\t0.694847155625426760,\t0.694883112629089640,\t0.694919067895544920,\t0.694955021424702220,\t\n0.694990973216472070,\t0.695026923270764430,\t0.695062871587489810,\t0.695098818166557610,\t0.695134763007878460,\t0.695170706111362340,\t0.695206647476919850,\t0.695242587104460410,\t\n0.695278524993894420,\t0.695314461145132180,\t0.695350395558084090,\t0.695386328232659780,\t0.695422259168769540,\t0.695458188366324000,\t0.695494115825232680,\t0.695530041545405990,\t\n0.695565965526754320,\t0.695601887769188080,\t0.695637808272616680,\t0.695673727036950850,\t0.695709644062100560,\t0.695745559347976660,\t0.695781472894488440,\t0.695817384701546530,\t\n0.695853294769061210,\t0.695889203096943020,\t0.695925109685101350,\t0.695961014533447050,\t0.695996917641890090,\t0.696032819010341310,\t0.696068718638710000,\t0.696104616526906920,\t\n0.696140512674842450,\t0.696176407082426900,\t0.696212299749570000,\t0.696248190676182380,\t0.696284079862174550,\t0.696319967307456270,\t0.696355853011938140,\t0.696391736975530250,\t\n0.696427619198143440,\t0.696463499679687130,\t0.696499378420072150,\t0.696535255419208800,\t0.696571130677007490,\t0.696607004193378070,\t0.696642875968231160,\t0.696678746001477170,\t\n0.696714614293026500,\t0.696750480842789010,\t0.696786345650675320,\t0.696822208716595730,\t0.696858070040460960,\t0.696893929622180660,\t0.696929787461665560,\t0.696965643558826400,\t\n0.697001497913572690,\t0.697037350525815390,\t0.697073201395464580,\t0.697109050522431110,\t0.697144897906624710,\t0.697180743547956010,\t0.697216587446335520,\t0.697252429601673880,\t\n0.697288270013880830,\t0.697324108682867090,\t0.697359945608543090,\t0.697395780790819540,\t0.697431614229606200,\t0.697467445924813910,\t0.697503275876352970,\t0.697539104084134110,\t\n0.697574930548067180,\t0.697610755268062930,\t0.697646578244032200,\t0.697682399475884620,\t0.697718218963531030,\t0.697754036706881850,\t0.697789852705848030,\t0.697825666960339210,\t\n0.697861479470266220,\t0.697897290235539480,\t0.697933099256069830,\t0.697968906531767130,\t0.698004712062542220,\t0.698040515848305510,\t0.698076317888967850,\t0.698112118184438970,\t\n0.698147916734629950,\t0.698183713539451080,\t0.698219508598813210,\t0.698255301912626300,\t0.698291093480801090,\t0.698326883303248440,\t0.698362671379878290,\t0.698398457710601490,\t\n0.698434242295328470,\t0.698470025133970270,\t0.698505806226436650,\t0.698541585572638460,\t0.698577363172486310,\t0.698613139025891170,\t0.698648913132762780,\t0.698684685493012100,\t\n0.698720456106549760,\t0.698756224973286600,\t0.698791992093132590,\t0.698827757465998460,\t0.698863521091795060,\t0.698899282970433130,\t0.698935043101822640,\t0.698970801485874650,\t\n0.699006558122499570,\t0.699042313011608460,\t0.699078066153111190,\t0.699113817546918810,\t0.699149567192942190,\t0.699185315091091280,\t0.699221061241277140,\t0.699256805643410420,\t\n0.699292548297401950,\t0.699328289203161700,\t0.699364028360600740,\t0.699399765769629810,\t0.699435501430159760,\t0.699471235342100650,\t0.699506967505363340,\t0.699542697919858680,\t\n0.699578426585497630,\t0.699614153502190140,\t0.699649878669847290,\t0.699685602088379820,\t0.699721323757698580,\t0.699757043677713740,\t0.699792761848336280,\t0.699828478269477250,\t\n0.699864192941046630,\t0.699899905862955580,\t0.699935617035114750,\t0.699971326457435210,\t0.700007034129827010,\t0.700042740052201350,\t0.700078444224468740,\t0.700114146646540370,\t\n0.700149847318326300,\t0.700185546239737500,\t0.700221243410684920,\t0.700256938831079640,\t0.700292632500831620,\t0.700328324419852040,\t0.700364014588051640,\t0.700399703005341490,\t\n0.700435389671631770,\t0.700471074586833550,\t0.700506757750858020,\t0.700542439163615250,\t0.700578118825016420,\t0.700613796734972260,\t0.700649472893393970,\t0.700685147300191600,\t\n0.700720819955276460,\t0.700756490858559180,\t0.700792160009951040,\t0.700827827409362230,\t0.700863493056703810,\t0.700899156951886650,\t0.700934819094821910,\t0.700970479485419800,\t\n0.701006138123591470,\t0.701041795009247790,\t0.701077450142299940,\t0.701113103522658210,\t0.701148755150233670,\t0.701184405024937290,\t0.701220053146680230,\t0.701255699515372700,\t\n0.701291344130925860,\t0.701326986993251020,\t0.701362628102258360,\t0.701398267457859160,\t0.701433905059964280,\t0.701469540908485010,\t0.701505175003331540,\t0.701540807344415040,\t\n0.701576437931646700,\t0.701612066764937480,\t0.701647693844197780,\t0.701683319169338790,\t0.701718942740271580,\t0.701754564556907320,\t0.701790184619156320,\t0.701825802926929860,\t\n0.701861419480138920,\t0.701897034278694760,\t0.701932647322507600,\t0.701968258611488930,\t0.702003868145549830,\t0.702039475924600810,\t0.702075081948553060,\t0.702110686217317650,\t\n0.702146288730805870,\t0.702181889488928010,\t0.702217488491595380,\t0.702253085738719140,\t0.702288681230210380,\t0.702324274965979710,\t0.702359866945938220,\t0.702395457169997180,\t\n0.702431045638067800,\t0.702466632350060460,\t0.702502217305886580,\t0.702537800505457110,\t0.702573381948683460,\t0.702608961635476040,\t0.702644539565746240,\t0.702680115739405360,\t\n0.702715690156363930,\t0.702751262816533220,\t0.702786833719824420,\t0.702822402866148830,\t0.702857970255416850,\t0.702893535887540000,\t0.702929099762429340,\t0.702964661879996180,\t\n0.703000222240151130,\t0.703035780842805490,\t0.703071337687870330,\t0.703106892775257180,\t0.703142446104876530,\t0.703177997676639690,\t0.703213547490457950,\t0.703249095546242600,\t\n0.703284641843904270,\t0.703320186383354250,\t0.703355729164504060,\t0.703391270187264330,\t0.703426809451546340,\t0.703462346957261400,\t0.703497882704320790,\t0.703533416692635250,\t\n0.703568948922116190,\t0.703604479392674680,\t0.703640008104222340,\t0.703675535056669690,\t0.703711060249928130,\t0.703746583683908970,\t0.703782105358523700,\t0.703817625273682750,\t\n0.703853143429297830,\t0.703888659825280040,\t0.703924174461540760,\t0.703959687337990970,\t0.703995198454541840,\t0.704030707811104660,\t0.704066215407591070,\t0.704101721243911680,\t\n0.704137225319978020,\t0.704172727635701490,\t0.704208228190992940,\t0.704243726985763760,\t0.704279224019925150,\t0.704314719293388960,\t0.704350212806065690,\t0.704385704557866750,\t\n0.704421194548703560,\t0.704456682778487830,\t0.704492169247129980,\t0.704527653954541640,\t0.704563136900634320,\t0.704598618085319430,\t0.704634097508507580,\t0.704669575170110530,\t\n0.704705051070039560,\t0.704740525208206290,\t0.704775997584521360,\t0.704811468198896510,\t0.704846937051243240,\t0.704882404141472410,\t0.704917869469495420,\t0.704953333035223890,\t\n0.704988794838569240,\t0.705024254879442310,\t0.705059713157754730,\t0.705095169673417900,\t0.705130624426343560,\t0.705166077416442220,\t0.705201528643625730,\t0.705236978107805390,\t\n0.705272425808892930,\t0.705307871746799100,\t0.705343315921435510,\t0.705378758332713800,\t0.705414198980545360,\t0.705449637864841160,\t0.705485074985512830,\t0.705520510342472210,\t\n0.705555943935629930,\t0.705591375764897830,\t0.705626805830187220,\t0.705662234131410050,\t0.705697660668476830,\t0.705733085441299530,\t0.705768508449789560,\t0.705803929693858520,\t\n0.705839349173417400,\t0.705874766888377910,\t0.705910182838651590,\t0.705945597024150050,\t0.705981009444784150,\t0.706016420100465720,\t0.706051828991106410,\t0.706087236116617720,\t\n0.706122641476910620,\t0.706158045071896940,\t0.706193446901488110,\t0.706228846965595960,\t0.706264245264131450,\t0.706299641797006330,\t0.706335036564132320,\t0.706370429565420510,\t\n0.706405820800782620,\t0.706441210270130180,\t0.706476597973374920,\t0.706511983910427910,\t0.706547368081201000,\t0.706582750485605700,\t0.706618131123553760,\t0.706653509994956130,\t\n0.706688887099724770,\t0.706724262437771200,\t0.706759636009007370,\t0.706795007813344030,\t0.706830377850693250,\t0.706865746120966420,\t0.706901112624075620,\t0.706936477359931700,\t\n0.706971840328446620,\t0.707007201529532110,\t0.707042560963099480,\t0.707077918629060330,\t0.707113274527326420,\t0.707148628657809700,\t0.707183981020421020,\t0.707219331615072330,\t\n0.707254680441675390,\t0.707290027500142030,\t0.707325372790383320,\t0.707360716312311120,\t0.707396058065837270,\t0.707431398050873520,\t0.707466736267330920,\t0.707502072715121440,\t\n0.707537407394156830,\t0.707572740304349020,\t0.707608071445609110,\t0.707643400817848930,\t0.707678728420980560,\t0.707714054254915180,\t0.707749378319564530,\t0.707784700614840450,\t\n0.707820021140655010,\t0.707855339896919180,\t0.707890656883544910,\t0.707925972100444060,\t0.707961285547528570,\t0.707996597224709530,\t0.708031907131899120,\t0.708067215269008840,\t\n0.708102521635950890,\t0.708137826232636210,\t0.708173129058977110,\t0.708208430114885100,\t0.708243729400272470,\t0.708279026915049960,\t0.708314322659130080,\t0.708349616632424570,\t\n0.708384908834844840,\t0.708420199266302730,\t0.708455487926710200,\t0.708490774815979220,\t0.708526059934020960,\t0.708561343280747600,\t0.708596624856070890,\t0.708631904659902890,\t\n0.708667182692154900,\t0.708702458952738870,\t0.708737733441566760,\t0.708773006158550540,\t0.708808277103601610,\t0.708843546276631930,\t0.708878813677553340,\t0.708914079306278030,\t\n0.708949343162717290,\t0.708984605246783080,\t0.709019865558387470,\t0.709055124097442420,\t0.709090380863859230,\t0.709125635857550280,\t0.709160889078427340,\t0.709196140526401900,\t\n0.709231390201386260,\t0.709266638103291940,\t0.709301884232031440,\t0.709337128587515960,\t0.709372371169657570,\t0.709407611978368320,\t0.709442851013560300,\t0.709478088275144910,\t\n0.709513323763034220,\t0.709548557477140300,\t0.709583789417375210,\t0.709619019583650370,\t0.709654247975877950,\t0.709689474593970030,\t0.709724699437838670,\t0.709759922507395170,\t\n0.709795143802551930,\t0.709830363323221140,\t0.709865581069314190,\t0.709900797040743270,\t0.709936011237420230,\t0.709971223659257580,\t0.710006434306166610,\t0.710041643178059510,\t\n0.710076850274848240,\t0.710112055596445190,\t0.710147259142761670,\t0.710182460913710070,\t0.710217660909202240,\t0.710252859129150590,\t0.710288055573466530,\t0.710323250242062330,\t\n0.710358443134849970,\t0.710393634251741850,\t0.710428823592649250,\t0.710464011157484700,\t0.710499196946160260,\t0.710534380958587670,\t0.710569563194679120,\t0.710604743654346560,\t\n0.710639922337502620,\t0.710675099244058470,\t0.710710274373926530,\t0.710745447727018980,\t0.710780619303248100,\t0.710815789102525300,\t0.710850957124763090,\t0.710886123369873450,\t\n0.710921287837768870,\t0.710956450528360760,\t0.710991611441561420,\t0.711026770577283140,\t0.711061927935438210,\t0.711097083515938260,\t0.711132237318695460,\t0.711167389343622110,\t\n0.711202539590630620,\t0.711237688059632390,\t0.711272834750540040,\t0.711307979663265870,\t0.711343122797721490,\t0.711378264153819220,\t0.711413403731471330,\t0.711448541530590230,\t\n0.711483677551087550,\t0.711518811792875570,\t0.711553944255866600,\t0.711589074939973030,\t0.711624203845106610,\t0.711659330971179500,\t0.711694456318104240,\t0.711729579885793000,\t\n0.711764701674157510,\t0.711799821683110400,\t0.711834939912563640,\t0.711870056362429840,\t0.711905171032620520,\t0.711940283923048420,\t0.711975395033625840,\t0.712010504364264500,\t\n0.712045611914876810,\t0.712080717685375180,\t0.712115821675672000,\t0.712150923885679020,\t0.712186024315308640,\t0.712221122964473370,\t0.712256219833085510,\t0.712291314921056680,\t\n0.712326408228299730,\t0.712361499754726620,\t0.712396589500250200,\t0.712431677464781980,\t0.712466763648234470,\t0.712501848050520080,\t0.712536930671551440,\t0.712572011511240170,\t\n0.712607090569498780,\t0.712642167846240020,\t0.712677243341375610,\t0.712712317054817970,\t0.712747388986479600,\t0.712782459136273030,\t0.712817527504110090,\t0.712852594089903310,\t\n0.712887658893564870,\t0.712922721915007830,\t0.712957783154143600,\t0.712992842610884800,\t0.713027900285144070,\t0.713062956176833800,\t0.713098010285865840,\t0.713133062612152810,\t\n0.713168113155607130,\t0.713203161916141530,\t0.713238208893667740,\t0.713273254088098390,\t0.713308297499346210,\t0.713343339127322950,\t0.713378378971941450,\t0.713413417033113890,\t\n0.713448453310753130,\t0.713483487804770890,\t0.713518520515080020,\t0.713553551441592830,\t0.713588580584222030,\t0.713623607942879490,\t0.713658633517477940,\t0.713693657307929770,\t\n0.713728679314147740,\t0.713763699536043680,\t0.713798717973530560,\t0.713833734626520440,\t0.713868749494926400,\t0.713903762578660170,\t0.713938773877634600,\t0.713973783391761980,\t\n0.714008791120955280,\t0.714043797065126220,\t0.714078801224187650,\t0.714113803598052540,\t0.714148804186632510,\t0.714183802989840410,\t0.714218800007588860,\t0.714253795239790600,\t\n0.714288788686357590,\t0.714323780347202670,\t0.714358770222238150,\t0.714393758311377080,\t0.714428744614531320,\t0.714463729131613710,\t0.714498711862536770,\t0.714533692807213350,\t\n0.714568671965555290,\t0.714603649337475780,\t0.714638624922886990,\t0.714673598721701890,\t0.714708570733832650,\t0.714743540959191790,\t0.714778509397692610,\t0.714813476049246610,\t\n0.714848440913767090,\t0.714883403991166460,\t0.714918365281357550,\t0.714953324784252440,\t0.714988282499764090,\t0.715023238427805020,\t0.715058192568288060,\t0.715093144921125410,\t\n0.715128095486229800,\t0.715163044263514070,\t0.715197991252890960,\t0.715232936454272660,\t0.715267879867571900,\t0.715302821492701520,\t0.715337761329574270,\t0.715372699378102440,\t\n0.715407635638198870,\t0.715442570109776410,\t0.715477502792747240,\t0.715512433687024440,\t0.715547362792520400,\t0.715582290109148420,\t0.715617215636820240,\t0.715652139375449140,\t\n0.715687061324947640,\t0.715721981485228810,\t0.715756899856204720,\t0.715791816437788330,\t0.715826731229892490,\t0.715861644232430040,\t0.715896555445313170,\t0.715931464868455050,\t\n0.715966372501768090,\t0.716001278345165690,\t0.716036182398559600,\t0.716071084661863200,\t0.716105985134989020,\t0.716140883817850240,\t0.716175780710358810,\t0.716210675812428030,\t\n0.716245569123970970,\t0.716280460644899470,\t0.716315350375126950,\t0.716350238314566010,\t0.716385124463129850,\t0.716420008820730430,\t0.716454891387281130,\t0.716489772162694490,\t\n0.716524651146883800,\t0.716559528339761220,\t0.716594403741239730,\t0.716629277351232270,\t0.716664149169651930,\t0.716699019196410880,\t0.716733887431422190,\t0.716768753874598930,\t\n0.716803618525854060,\t0.716838481385099870,\t0.716873342452249430,\t0.716908201727215920,\t0.716943059209911640,\t0.716977914900249650,\t0.717012768798142910,\t0.717047620903504600,\t\n0.717082471216246910,\t0.717117319736283010,\t0.717152166463525860,\t0.717187011397888540,\t0.717221854539283440,\t0.717256695887623640,\t0.717291535442822090,\t0.717326373204792090,\t\n0.717361209173445920,\t0.717396043348696550,\t0.717430875730457160,\t0.717465706318640930,\t0.717500535113160030,\t0.717535362113927880,\t0.717570187320857530,\t0.717605010733861400,\t\n0.717639832352852890,\t0.717674652177744620,\t0.717709470208450220,\t0.717744286444881750,\t0.717779100886952510,\t0.717813913534575580,\t0.717848724387664230,\t0.717883533446130650,\t\n0.717918340709888250,\t0.717953146178849980,\t0.717987949852929240,\t0.718022751732038330,\t0.718057551816090430,\t0.718092350104998720,\t0.718127146598676490,\t0.718161941297035920,\t\n0.718196734199990640,\t0.718231525307453820,\t0.718266314619337760,\t0.718301102135556090,\t0.718335887856021540,\t0.718370671780647620,\t0.718405453909346740,\t0.718440234242032180,\t\n0.718475012778617030,\t0.718509789519014790,\t0.718544564463137640,\t0.718579337610899090,\t0.718614108962212230,\t0.718648878516990330,\t0.718683646275146030,\t0.718718412236592610,\t\n0.718753176401243030,\t0.718787938769010930,\t0.718822699339808580,\t0.718857458113549620,\t0.718892215090146890,\t0.718926970269514020,\t0.718961723651563410,\t0.718996475236208470,\t\n0.719031225023362590,\t0.719065973012938400,\t0.719100719204849300,\t0.719135463599008370,\t0.719170206195329120,\t0.719204946993724060,\t0.719239685994106480,\t0.719274423196389790,\t\n0.719309158600487390,\t0.719343892206311790,\t0.719378624013776390,\t0.719413354022794490,\t0.719448082233279500,\t0.719482808645143910,\t0.719517533258301370,\t0.719552256072665040,\t\n0.719586977088148340,\t0.719621696304663880,\t0.719656413722125190,\t0.719691129340445770,\t0.719725843159538250,\t0.719760555179316030,\t0.719795265399692520,\t0.719829973820581110,\t\n0.719864680441894440,\t0.719899385263546130,\t0.719934088285449360,\t0.719968789507517530,\t0.720003488929663590,\t0.720038186551800850,\t0.720072882373842700,\t0.720107576395702550,\t\n0.720142268617293250,\t0.720176959038528300,\t0.720211647659320890,\t0.720246334479584640,\t0.720281019499232290,\t0.720315702718177350,\t0.720350384136333570,\t0.720385063753613440,\t\n0.720419741569930610,\t0.720454417585198570,\t0.720489091799330630,\t0.720523764212239740,\t0.720558434823839410,\t0.720593103634042940,\t0.720627770642764180,\t0.720662435849915630,\t\n0.720697099255410920,\t0.720731760859163460,\t0.720766420661086980,\t0.720801078661094110,\t0.720835734859098460,\t0.720870389255013570,\t0.720905041848753040,\t0.720939692640229500,\t\n0.720974341629356810,\t0.721008988816048250,\t0.721043634200217550,\t0.721078277781777350,\t0.721112919560641610,\t0.721147559536723710,\t0.721182197709936750,\t0.721216834080194210,\t\n0.721251468647409520,\t0.721286101411496630,\t0.721320732372368050,\t0.721355361529937730,\t0.721389988884118980,\t0.721424614434825530,\t0.721459238181970220,\t0.721493860125466900,\t\n0.721528480265228870,\t0.721563098601169960,\t0.721597715133203030,\t0.721632329861241820,\t0.721666942785199720,\t0.721701553904990690,\t0.721736163220527250,\t0.721770770731723580,\t\n0.721805376438493300,\t0.721839980340749140,\t0.721874582438405190,\t0.721909182731374610,\t0.721943781219571480,\t0.721978377902908640,\t0.722012972781299830,\t0.722047565854658460,\t\n0.722082157122898580,\t0.722116746585933060,\t0.722151334243675610,\t0.722185920096039770,\t0.722220504142939480,\t0.722255086384287700,\t0.722289666819998070,\t0.722324245449984410,\t\n0.722358822274160370,\t0.722393397292438900,\t0.722427970504734060,\t0.722462541910959600,\t0.722497111511028360,\t0.722531679304854510,\t0.722566245292351250,\t0.722600809473432860,\t\n0.722635371848012080,\t0.722669932416002860,\t0.722704491177318830,\t0.722739048131873840,\t0.722773603279580960,\t0.722808156620354140,\t0.722842708154106780,\t0.722877257880753080,\t\n0.722911805800205860,\t0.722946351912379100,\t0.722980896217186530,\t0.723015438714541990,\t0.723049979404358560,\t0.723084518286550180,\t0.723119055361030830,\t0.723153590627713560,\t\n0.723188124086512230,\t0.723222655737340680,\t0.723257185580112650,\t0.723291713614741430,\t0.723326239841140970,\t0.723360764259224910,\t0.723395286868907190,\t0.723429807670101010,\t\n0.723464326662720310,\t0.723498843846678730,\t0.723533359221890440,\t0.723567872788268280,\t0.723602384545726670,\t0.723636894494178890,\t0.723671402633539350,\t0.723705908963720780,\t\n0.723740413484637690,\t0.723774916196203380,\t0.723809417098332130,\t0.723843916190937130,\t0.723878413473932230,\t0.723912908947231700,\t0.723947402610748410,\t0.723981894464396760,\t\n0.724016384508090360,\t0.724050872741743400,\t0.724085359165268730,\t0.724119843778580850,\t0.724154326581593290,\t0.724188807574220220,\t0.724223286756374820,\t0.724257764127971160,\t\n0.724292239688923090,\t0.724326713439144790,\t0.724361185378549430,\t0.724395655507050980,\t0.724430123824563510,\t0.724464590331000970,\t0.724499055026276760,\t0.724533517910304850,\t\n0.724567978982999410,\t0.724602438244273730,\t0.724636895694041990,\t0.724671351332217940,\t0.724705805158715850,\t0.724740257173449030,\t0.724774707376331430,\t0.724809155767277110,\t\n0.724843602346200270,\t0.724878047113014070,\t0.724912490067632700,\t0.724946931209970220,\t0.724981370539940610,\t0.725015808057457360,\t0.725050243762434540,\t0.725084677654786120,\t\n0.725119109734426280,\t0.725153540001268420,\t0.725187968455226710,\t0.725222395096215330,\t0.725256819924147590,\t0.725291242938937990,\t0.725325664140500150,\t0.725360083528748480,\t\n0.725394501103596380,\t0.725428916864957920,\t0.725463330812747160,\t0.725497742946878410,\t0.725532153267265060,\t0.725566561773821280,\t0.725600968466461050,\t0.725635373345098760,\t\n0.725669776409647690,\t0.725704177660022260,\t0.725738577096136320,\t0.725772974717904250,\t0.725807370525239470,\t0.725841764518056150,\t0.725876156696268590,\t0.725910547059790860,\t\n0.725944935608536460,\t0.725979322342419690,\t0.726013707261354950,\t0.726048090365255640,\t0.726082471654036170,\t0.726116851127610370,\t0.726151228785892890,\t0.726185604628796890,\t\n0.726219978656237000,\t0.726254350868127170,\t0.726288721264381600,\t0.726323089844914120,\t0.726357456609638800,\t0.726391821558469930,\t0.726426184691321810,\t0.726460546008107830,\t\n0.726494905508742520,\t0.726529263193139930,\t0.726563619061214580,\t0.726597973112879770,\t0.726632325348050110,\t0.726666675766639900,\t0.726701024368562650,\t0.726735371153732880,\t\n0.726769716122064760,\t0.726804059273472580,\t0.726838400607869970,\t0.726872740125171330,\t0.726907077825290850,\t0.726941413708142910,\t0.726975747773641270,\t0.727010080021700200,\t\n0.727044410452233890,\t0.727078739065156960,\t0.727113065860382820,\t0.727147390837825980,\t0.727181713997400610,\t0.727216035339021350,\t0.727250354862601700,\t0.727284672568056180,\t\n0.727318988455299300,\t0.727353302524244570,\t0.727387614774806620,\t0.727421925206899630,\t0.727456233820438110,\t0.727490540615335800,\t0.727524845591506990,\t0.727559148748866180,\t\n0.727593450087327680,\t0.727627749606805320,\t0.727662047307213620,\t0.727696343188466770,\t0.727730637250479370,\t0.727764929493165070,\t0.727799219916438480,\t0.727833508520213890,\t\n0.727867795304405710,\t0.727902080268927780,\t0.727936363413694610,\t0.727970644738620940,\t0.728004924243620290,\t0.728039201928607270,\t0.728073477793496400,\t0.728107751838201980,\t\n0.728142024062637950,\t0.728176294466718830,\t0.728210563050359030,\t0.728244829813473160,\t0.728279094755974850,\t0.728313357877778840,\t0.728347619178799420,\t0.728381878658951100,\t\n0.728416136318148060,\t0.728450392156304470,\t0.728484646173334970,\t0.728518898369154180,\t0.728553148743675830,\t0.728587397296814540,\t0.728621644028484840,\t0.728655888938601230,\t\n0.728690132027077660,\t0.728724373293828780,\t0.728758612738769300,\t0.728792850361812960,\t0.728827086162874500,\t0.728861320141868330,\t0.728895552298709060,\t0.728929782633310760,\t\n0.728964011145587950,\t0.728998237835455030,\t0.729032462702826840,\t0.729066685747617240,\t0.729100906969740950,\t0.729135126369112370,\t0.729169343945646250,\t0.729203559699256540,\t\n0.729237773629857870,\t0.729271985737364740,\t0.729306196021692000,\t0.729340404482753390,\t0.729374611120463870,\t0.729408815934738050,\t0.729443018925489910,\t0.729477220092634270,\t\n0.729511419436085550,\t0.729545616955758590,\t0.729579812651567240,\t0.729614006523426450,\t0.729648198571250520,\t0.729682388794954510,\t0.729716577194452150,\t0.729750763769658420,\t\n0.729784948520487700,\t0.729819131446854950,\t0.729853312548674030,\t0.729887491825859880,\t0.729921669278327020,\t0.729955844905990190,\t0.729990018708763570,\t0.730024190686561880,\t\n0.730058360839299980,\t0.730092529166891820,\t0.730126695669252480,\t0.730160860346296350,\t0.730195023197938280,\t0.730229184224092330,\t0.730263343424673580,\t0.730297500799596320,\t\n0.730331656348775730,\t0.730365810072125640,\t0.730399961969561030,\t0.730434112040996510,\t0.730468260286347040,\t0.730502406705526570,\t0.730536551298450190,\t0.730570694065032390,\t\n0.730604835005188020,\t0.730638974118831390,\t0.730673111405877320,\t0.730707246866240450,\t0.730741380499835720,\t0.730775512306577340,\t0.730809642286380120,\t0.730843770439159050,\t\n0.730877896764828390,\t0.730912021263302790,\t0.730946143934497310,\t0.730980264778326670,\t0.731014383794705180,\t0.731048500983547570,\t0.731082616344768790,\t0.731116729878283800,\t\n0.731150841584006670,\t0.731184951461852470,\t0.731219059511735820,\t0.731253165733571910,\t0.731287270127274680,\t0.731321372692759320,\t0.731355473429940560,\t0.731389572338733360,\t\n0.731423669419051900,\t0.731457764670811360,\t0.731491858093926690,\t0.731525949688312080,\t0.731560039453882590,\t0.731594127390552960,\t0.731628213498238370,\t0.731662297776852880,\t\n0.731696380226311670,\t0.731730460846529480,\t0.731764539637421500,\t0.731798616598901890,\t0.731832691730885610,\t0.731866765033287740,\t0.731900836506023220,\t0.731934906149006360,\t\n0.731968973962152100,\t0.732003039945375520,\t0.732037104098591570,\t0.732071166421714550,\t0.732105226914659620,\t0.732139285577342090,\t0.732173342409675800,\t0.732207397411576370,\t\n0.732241450582958310,\t0.732275501923736920,\t0.732309551433826480,\t0.732343599113142170,\t0.732377644961598960,\t0.732411688979111910,\t0.732445731165595190,\t0.732479771520964330,\t\n0.732513810045133940,\t0.732547846738019310,\t0.732581881599534750,\t0.732615914629595630,\t0.732649945828116600,\t0.732683975195013050,\t0.732718002730199160,\t0.732752028433590440,\t\n0.732786052305101520,\t0.732820074344647800,\t0.732854094552143560,\t0.732888112927504220,\t0.732922129470644720,\t0.732956144181479700,\t0.732990157059924320,\t0.733024168105893550,\t\n0.733058177319302560,\t0.733092184700065990,\t0.733126190248098770,\t0.733160193963316220,\t0.733194195845633390,\t0.733228195894964910,\t0.733262194111225840,\t0.733296190494331260,\t\n0.733330185044196560,\t0.733364177760736040,\t0.733398168643865200,\t0.733432157693498790,\t0.733466144909552420,\t0.733500130291940280,\t0.733534113840577870,\t0.733568095555380490,\t\n0.733602075436262440,\t0.733636053483139430,\t0.733670029695926100,\t0.733704004074538060,\t0.733737976618889620,\t0.733771947328896390,\t0.733805916204473220,\t0.733839883245535620,\t\n0.733873848451997880,\t0.733907811823775620,\t0.733941773360783810,\t0.733975733062937950,\t0.734009690930152340,\t0.734043646962342590,\t0.734077601159423660,\t0.734111553521310970,\t\n0.734145504047919230,\t0.734179452739163630,\t0.734213399594959790,\t0.734247344615222010,\t0.734281287799865900,\t0.734315229148806650,\t0.734349168661959650,\t0.734383106339239310,\t\n0.734417042180561360,\t0.734450976185840760,\t0.734484908354992920,\t0.734518838687932550,\t0.734552767184575180,\t0.734586693844835770,\t0.734620618668629930,\t0.734654541655872300,\t\n0.734688462806478260,\t0.734722382120363230,\t0.734756299597442370,\t0.734790215237630440,\t0.734824129040843040,\t0.734858041006995700,\t0.734891951136002810,\t0.734925859427780100,\t\n0.734959765882242880,\t0.734993670499306310,\t0.735027573278885460,\t0.735061474220895630,\t0.735095373325251990,\t0.735129270591870390,\t0.735163166020665120,\t0.735197059611552130,\t\n0.735230951364446380,\t0.735264841279263500,\t0.735298729355918330,\t0.735332615594326280,\t0.735366499994402730,\t0.735400382556063210,\t0.735434263279222460,\t0.735468142163796080,\t\n0.735502019209699260,\t0.735535894416847640,\t0.735569767785156150,\t0.735603639314540200,\t0.735637509004915310,\t0.735671376856196440,\t0.735705242868299190,\t0.735739107041138760,\t\n0.735772969374630880,\t0.735806829868690280,\t0.735840688523232590,\t0.735874545338173200,\t0.735908400313427750,\t0.735942253448911070,\t0.735976104744538560,\t0.736009954200225970,\t\n0.736043801815888690,\t0.736077647591441670,\t0.736111491526800550,\t0.736145333621880620,\t0.736179173876597700,\t0.736213012290866550,\t0.736246848864602900,\t0.736280683597722360,\t\n0.736314516490139900,\t0.736348347541771030,\t0.736382176752531370,\t0.736416004122336540,\t0.736449829651101400,\t0.736483653338741770,\t0.736517475185172850,\t0.736551295190310710,\t\n0.736585113354069950,\t0.736618929676366330,\t0.736652744157115460,\t0.736686556796233070,\t0.736720367593633910,\t0.736754176549233920,\t0.736787983662948510,\t0.736821788934693300,\t\n0.736855592364383360,\t0.736889393951934530,\t0.736923193697262450,\t0.736956991600282050,\t0.736990787660909200,\t0.737024581879059390,\t0.737058374254648490,\t0.737092164787591320,\t\n0.737125953477803740,\t0.737159740325201260,\t0.737193525329699620,\t0.737227308491213980,\t0.737261089809660100,\t0.737294869284953470,\t0.737328646917009940,\t0.737362422705744480,\t\n0.737396196651073030,\t0.737429968752911000,\t0.737463739011174350,\t0.737497507425778130,\t0.737531273996638090,\t0.737565038723669850,\t0.737598801606789370,\t0.737632562645911590,\t\n0.737666321840952380,\t0.737700079191827670,\t0.737733834698452440,\t0.737767588360742630,\t0.737801340178613870,\t0.737835090151982120,\t0.737868838280762220,\t0.737902584564870230,\t\n0.737936329004221900,\t0.737970071598732960,\t0.738003812348318580,\t0.738037551252894610,\t0.738071288312376780,\t0.738105023526681060,\t0.738138756895722500,\t0.738172488419416960,\t\n0.738206218097680280,\t0.738239945930428300,\t0.738273671917576200,\t0.738307396059039940,\t0.738341118354735480,\t0.738374838804577880,\t0.738408557408483210,\t0.738442274166367100,\t\n0.738475989078145710,\t0.738509702143734010,\t0.738543413363047960,\t0.738577122736003510,\t0.738610830262516500,\t0.738644535942502010,\t0.738678239775876320,\t0.738711941762554950,\t\n0.738745641902454060,\t0.738779340195488850,\t0.738813036641575160,\t0.738846731240628940,\t0.738880423992566150,\t0.738914114897302080,\t0.738947803954752680,\t0.738981491164834030,\t\n0.739015176527461400,\t0.739048860042550770,\t0.739082541710018080,\t0.739116221529779290,\t0.739149899501749590,\t0.739183575625845250,\t0.739217249901981900,\t0.739250922330075830,\t\n0.739284592910042000,\t0.739318261641796810,\t0.739351928525255890,\t0.739385593560335510,\t0.739419256746950750,\t0.739452918085018010,\t0.739486577574452800,\t0.739520235215171520,\t\n0.739553891007089350,\t0.739587544950122470,\t0.739621197044187050,\t0.739654847289198280,\t0.739688495685072440,\t0.739722142231725280,\t0.739755786929073180,\t0.739789429777031220,\t\n0.739823070775515790,\t0.739856709924442520,\t0.739890347223727930,\t0.739923982673287070,\t0.739957616273036360,\t0.739991248022891510,\t0.740024877922768830,\t0.740058505972583710,\t\n0.740092132172252340,\t0.740125756521690660,\t0.740159379020814740,\t0.740192999669540220,\t0.740226618467783150,\t0.740260235415459600,\t0.740293850512485640,\t0.740327463758776780,\t\n0.740361075154249320,\t0.740394684698819530,\t0.740428292392402600,\t0.740461898234915040,\t0.740495502226272690,\t0.740529104366391850,\t0.740562704655188030,\t0.740596303092577400,\t\n0.740629899678476030,\t0.740663494412800110,\t0.740697087295465240,\t0.740730678326387610,\t0.740764267505483410,\t0.740797854832668690,\t0.740831440307859190,\t0.740865023930970870,\t\n0.740898605701920230,\t0.740932185620623240,\t0.740965763686995520,\t0.740999339900953350,\t0.741032914262413240,\t0.741066486771290390,\t0.741100057427501400,\t0.741133626230962240,\t\n0.741167193181589410,\t0.741200758279298210,\t0.741234321524005150,\t0.741267882915626290,\t0.741301442454078030,\t0.741335000139275780,\t0.741368555971136050,\t0.741402109949575010,\t\n0.741435662074508950,\t0.741469212345853390,\t0.741502760763524950,\t0.741536307327439470,\t0.741569852037513580,\t0.741603394893662670,\t0.741636935895803370,\t0.741670475043851970,\t\n0.741704012337724090,\t0.741737547777336250,\t0.741771081362604500,\t0.741804613093445360,\t0.741838142969774350,\t0.741871670991508080,\t0.741905197158562510,\t0.741938721470854270,\t\n0.741972243928298970,\t0.742005764530813130,\t0.742039283278312700,\t0.742072800170714530,\t0.742106315207933910,\t0.742139828389887570,\t0.742173339716491690,\t0.742206849187662780,\t\n0.742240356803316350,\t0.742273862563369140,\t0.742307366467737100,\t0.742340868516337070,\t0.742374368709084690,\t0.742407867045896230,\t0.742441363526688440,\t0.742474858151376930,\t\n0.742508350919878210,\t0.742541841832108700,\t0.742575330887984890,\t0.742608818087422410,\t0.742642303430337880,\t0.742675786916647710,\t0.742709268546268180,\t0.742742748319115350,\t\n0.742776226235105530,\t0.742809702294155220,\t0.742843176496180920,\t0.742876648841098390,\t0.742910119328824230,\t0.742943587959274840,\t0.742977054732366640,\t0.743010519648015680,\t\n0.743043982706138250,\t0.743077443906651200,\t0.743110903249470270,\t0.743144360734512070,\t0.743177816361693000,\t0.743211270130929690,\t0.743244722042137870,\t0.743278172095234390,\t\n0.743311620290135310,\t0.743345066626757480,\t0.743378511105016740,\t0.743411953724829820,\t0.743445394486112800,\t0.743478833388782730,\t0.743512270432755250,\t0.743545705617947080,\t\n0.743579138944274740,\t0.743612570411654740,\t0.743646000020003030,\t0.743679427769236350,\t0.743712853659271420,\t0.743746277690023990,\t0.743779699861410900,\t0.743813120173348550,\t\n0.743846538625753780,\t0.743879955218542220,\t0.743913369951630930,\t0.743946782824936090,\t0.743980193838374660,\t0.744013602991862370,\t0.744047010285316170,\t0.744080415718652350,\t\n0.744113819291787880,\t0.744147221004638480,\t0.744180620857121110,\t0.744214018849152170,\t0.744247414980648500,\t0.744280809251525950,\t0.744314201661701370,\t0.744347592211091590,\t\n0.744380980899612580,\t0.744414367727181060,\t0.744447752693713550,\t0.744481135799127110,\t0.744514517043337490,\t0.744547896426261510,\t0.744581273947815920,\t0.744614649607917340,\t\n0.744648023406481840,\t0.744681395343426260,\t0.744714765418667210,\t0.744748133632121560,\t0.744781499983705350,\t0.744814864473335340,\t0.744848227100928130,\t0.744881587866400690,\t\n0.744914946769668960,\t0.744948303810649910,\t0.744981658989260050,\t0.745015012305416340,\t0.745048363759034830,\t0.745081713350032370,\t0.745115061078325920,\t0.745148406943831660,\t\n0.745181750946466210,\t0.745215093086146420,\t0.745248433362789230,\t0.745281771776310720,\t0.745315108326627730,\t0.745348443013656880,\t0.745381775837315350,\t0.745415106797518990,\t\n0.745448435894184860,\t0.745481763127229690,\t0.745515088496570440,\t0.745548412002123070,\t0.745581733643804760,\t0.745615053421532110,\t0.745648371335222100,\t0.745681687384790900,\t\n0.745715001570155470,\t0.745748313891232750,\t0.745781624347939040,\t0.745814932940191190,\t0.745848239667906030,\t0.745881544531000640,\t0.745914847529391080,\t0.745948148662994410,\t\n0.745981447931727270,\t0.746014745335506820,\t0.746048040874249360,\t0.746081334547871620,\t0.746114626356290670,\t0.746147916299423450,\t0.746181204377186050,\t0.746214490589495630,\t\n0.746247774936269040,\t0.746281057417423340,\t0.746314338032874720,\t0.746347616782540140,\t0.746380893666336860,\t0.746414168684181090,\t0.746447441835989880,\t0.746480713121680070,\t\n0.746513982541168850,\t0.746547250094372170,\t0.746580515781207540,\t0.746613779601591590,\t0.746647041555441370,\t0.746680301642673410,\t0.746713559863204650,\t0.746746816216951940,\t\n0.746780070703832570,\t0.746813323323762710,\t0.746846574076659440,\t0.746879822962439820,\t0.746913069981020920,\t0.746946315132319020,\t0.746979558416251410,\t0.747012799832734830,\t\n0.747046039381686570,\t0.747079277063022910,\t0.747112512876661140,\t0.747145746822518330,\t0.747178978900510880,\t0.747212209110555970,\t0.747245437452570440,\t0.747278663926471690,\t\n0.747311888532176010,\t0.747345111269600570,\t0.747378332138662340,\t0.747411551139278600,\t0.747444768271365630,\t0.747477983534840850,\t0.747511196929621090,\t0.747544408455623530,\t\n0.747577618112764800,\t0.747610825900961950,\t0.747644031820131950,\t0.747677235870192300,\t0.747710438051059190,\t0.747743638362650010,\t0.747776836804882050,\t0.747810033377671710,\t\n0.747843228080936170,\t0.747876420914592720,\t0.747909611878558420,\t0.747942800972749900,\t0.747975988197084220,\t0.748009173551478670,\t0.748042357035850420,\t0.748075538650116110,\t\n0.748108718394192800,\t0.748141896267997760,\t0.748175072271448300,\t0.748208246404460820,\t0.748241418666952820,\t0.748274589058841140,\t0.748307757580043310,\t0.748340924230475930,\t\n0.748374089010056090,\t0.748407251918701390,\t0.748440412956328240,\t0.748473572122854040,\t0.748506729418195850,\t0.748539884842271300,\t0.748573038394996670,\t0.748606190076289370,\t\n0.748639339886066680,\t0.748672487824245890,\t0.748705633890743630,\t0.748738778085477170,\t0.748771920408363930,\t0.748805060859321080,\t0.748838199438265350,\t0.748871336145114030,\t\n0.748904470979784410,\t0.748937603942194000,\t0.748970735032259190,\t0.749003864249897510,\t0.749036991595026570,\t0.749070117067562770,\t0.749103240667423730,\t0.749136362394526520,\t\n0.749169482248788770,\t0.749202600230126970,\t0.749235716338458760,\t0.749268830573701190,\t0.749301942935771900,\t0.749335053424587280,\t0.749368162040065290,\t0.749401268782122650,\t\n0.749434373650677330,\t0.749467476645645610,\t0.749500577766945340,\t0.749533677014493580,\t0.749566774388207850,\t0.749599869888004980,\t0.749632963513802380,\t0.749666055265517440,\t\n0.749699145143067570,\t0.749732233146369610,\t0.749765319275341070,\t0.749798403529899460,\t0.749831485909961630,\t0.749864566415444970,\t0.749897645046266990,\t0.749930721802345210,\t\n0.749963796683596250,\t0.749996869689937840,\t0.750029940821287270,\t0.750063010077562150,\t0.750096077458679120,\t0.750129142964556020,\t0.750162206595110010,\t0.750195268350258740,\t\n0.750228328229919030,\t0.750261386234008510,\t0.750294442362444580,\t0.750327496615144750,\t0.750360548992025980,\t0.750393599493005770,\t0.750426648118001860,\t0.750459694866930980,\t\n0.750492739739710980,\t0.750525782736259030,\t0.750558823856492970,\t0.750591863100329550,\t0.750624900467686480,\t0.750657935958481070,\t0.750690969572631260,\t0.750724001310053680,\t\n0.750757031170666060,\t0.750790059154385900,\t0.750823085261130840,\t0.750856109490817820,\t0.750889131843364590,\t0.750922152318688420,\t0.750955170916707160,\t0.750988187637337660,\t\n0.751021202480497860,\t0.751054215446105180,\t0.751087226534076780,\t0.751120235744330180,\t0.751153243076783110,\t0.751186248531353180,\t0.751219252107957370,\t0.751252253806513390,\t\n0.751285253626938760,\t0.751318251569151330,\t0.751351247633067930,\t0.751384241818606520,\t0.751417234125684400,\t0.751450224554219500,\t0.751483213104128800,\t0.751516199775330020,\t\n0.751549184567740780,\t0.751582167481278820,\t0.751615148515861200,\t0.751648127671405650,\t0.751681104947829800,\t0.751714080345051490,\t0.751747053862987680,\t0.751780025501556310,\t\n0.751812995260675130,\t0.751845963140261090,\t0.751878929140232240,\t0.751911893260506000,\t0.751944855501000430,\t0.751977815861632260,\t0.752010774342319670,\t0.752043730942980160,\t\n0.752076685663531470,\t0.752109638503890900,\t0.752142589463976270,\t0.752175538543705110,\t0.752208485742995370,\t0.752241431061764110,\t0.752274374499929290,\t0.752307316057408530,\t\n0.752340255734119780,\t0.752373193529980220,\t0.752406129444907480,\t0.752439063478819840,\t0.752471995631634140,\t0.752504925903268560,\t0.752537854293640620,\t0.752570780802668370,\t\n0.752603705430268780,\t0.752636628176360010,\t0.752669549040859700,\t0.752702468023685680,\t0.752735385124755350,\t0.752768300343986450,\t0.752801213681296820,\t0.752834125136604530,\t\n0.752867034709826520,\t0.752899942400880980,\t0.752932848209685650,\t0.752965752136158350,\t0.752998654180216500,\t0.753031554341777930,\t0.753064452620760830,\t0.753097349017082250,\t\n0.753130243530660270,\t0.753163136161412840,\t0.753196026909257690,\t0.753228915774112330,\t0.753261802755894600,\t0.753294687854522360,\t0.753327571069913660,\t0.753360452401985790,\t\n0.753393331850656820,\t0.753426209415844370,\t0.753459085097466840,\t0.753491958895441290,\t0.753524830809685800,\t0.753557700840118190,\t0.753590568986656770,\t0.753623435249218490,\t\n0.753656299627721630,\t0.753689162122084370,\t0.753722022732223880,\t0.753754881458058470,\t0.753787738299505740,\t0.753820593256483980,\t0.753853446328910380,\t0.753886297516703220,\t\n0.753919146819780340,\t0.753951994238059810,\t0.753984839771459030,\t0.754017683419896170,\t0.754050525183289080,\t0.754083365061556040,\t0.754116203054614240,\t0.754149039162381960,\t\n0.754181873384777050,\t0.754214705721717780,\t0.754247536173121350,\t0.754280364738906250,\t0.754313191418990110,\t0.754346016213291340,\t0.754378839121727210,\t0.754411660144215900,\t\n0.754444479280675930,\t0.754477296531024360,\t0.754510111895179580,\t0.754542925373059450,\t0.754575736964582360,\t0.754608546669665590,\t0.754641354488227560,\t0.754674160420185980,\t\n0.754706964465459370,\t0.754739766623965140,\t0.754772566895621440,\t0.754805365280346250,\t0.754838161778057960,\t0.754870956388674070,\t0.754903749112112780,\t0.754936539948292020,\t\n0.754969328897130200,\t0.755002115958544830,\t0.755034901132454190,\t0.755067684418776590,\t0.755100465817429400,\t0.755133245328331150,\t0.755166022951399670,\t0.755198798686553490,\t\n0.755231572533710090,\t0.755264344492787680,\t0.755297114563704410,\t0.755329882746378580,\t0.755362649040727810,\t0.755395413446670490,\t0.755428175964124590,\t0.755460936593008500,\t\n0.755493695333239850,\t0.755526452184736910,\t0.755559207147417870,\t0.755591960221201010,\t0.755624711406004070,\t0.755657460701745330,\t0.755690208108343200,\t0.755722953625715290,\t\n0.755755697253780000,\t0.755788438992455400,\t0.755821178841660110,\t0.755853916801311530,\t0.755886652871328060,\t0.755919387051628090,\t0.755952119342129910,\t0.755984849742751040,\t\n0.756017578253410210,\t0.756050304874025360,\t0.756083029604515010,\t0.756115752444796780,\t0.756148473394789300,\t0.756181192454410510,\t0.756213909623579040,\t0.756246624902212620,\t\n0.756279338290229530,\t0.756312049787548070,\t0.756344759394086850,\t0.756377467109763390,\t0.756410172934496310,\t0.756442876868204110,\t0.756475578910804410,\t0.756508279062215630,\t\n0.756540977322356260,\t0.756573673691144810,\t0.756606368168498800,\t0.756639060754336850,\t0.756671751448577350,\t0.756704440251138700,\t0.756737127161938640,\t0.756769812180895670,\t\n0.756802495307928310,\t0.756835176542954740,\t0.756867855885893110,\t0.756900533336662520,\t0.756933208895179900,\t0.756965882561364320,\t0.756998554335134080,\t0.757031224216407450,\t\n0.757063892205102730,\t0.757096558301138310,\t0.757129222504433040,\t0.757161884814904100,\t0.757194545232470540,\t0.757227203757050550,\t0.757259860388562520,\t0.757292515126924970,\t\n0.757325167972055960,\t0.757357818923874220,\t0.757390467982298370,\t0.757423115147245810,\t0.757455760418635380,\t0.757488403796385710,\t0.757521045280414970,\t0.757553684870641560,\t\n0.757586322566983990,\t0.757618958369360550,\t0.757651592277690410,\t0.757684224291890640,\t0.757716854411880410,\t0.757749482637577910,\t0.757782108968901750,\t0.757814733405770320,\t\n0.757847355948102040,\t0.757879976595815960,\t0.757912595348829270,\t0.757945212207061240,\t0.757977827170430050,\t0.758010440238854440,\t0.758043051412252700,\t0.758075660690543220,\t\n0.758108268073644620,\t0.758140873561476080,\t0.758173477153954670,\t0.758206078850999440,\t0.758238678652529140,\t0.758271276558462160,\t0.758303872568717010,\t0.758336466683212200,\t\n0.758369058901866680,\t0.758401649224597960,\t0.758434237651325120,\t0.758466824181966760,\t0.758499408816441290,\t0.758531991554667330,\t0.758564572396563270,\t0.758597151342047970,\t\n0.758629728391040260,\t0.758662303543457650,\t0.758694876799219320,\t0.758727448158243780,\t0.758760017620449530,\t0.758792585185755430,\t0.758825150854079760,\t0.758857714625341130,\t\n0.758890276499458950,\t0.758922836476350390,\t0.758955394555934750,\t0.758987950738130630,\t0.759020505022856670,\t0.759053057410031480,\t0.759085607899573580,\t0.759118156491402240,\t\n0.759150703185434980,\t0.759183247981590980,\t0.759215790879788740,\t0.759248331879947110,\t0.759280870981984600,\t0.759313408185819940,\t0.759345943491371740,\t0.759378476898559310,\t\n0.759411008407300140,\t0.759443538017513410,\t0.759476065729117740,\t0.759508591542031990,\t0.759541115456174860,\t0.759573637471464780,\t0.759606157587820690,\t0.759638675805161760,\t\n0.759671192123405610,\t0.759703706542471440,\t0.759736219062277950,\t0.759768729682744000,\t0.759801238403788100,\t0.759833745225329200,\t0.759866250147286590,\t0.759898753169577670,\t\n0.759931254292121830,\t0.759963753514838030,\t0.759996250837644660,\t0.760028746260460690,\t0.760061239783204940,\t0.760093731405796060,\t0.760126221128153420,\t0.760158708950194660,\t\n0.760191194871839170,\t0.760223678893005570,\t0.760256161013612820,\t0.760288641233579750,\t0.760321119552825000,\t0.760353595971268060,\t0.760386070488826560,\t0.760418543105419900,\t\n0.760451013820966800,\t0.760483482635386230,\t0.760515949548596910,\t0.760548414560517800,\t0.760580877671067520,\t0.760613338880165690,\t0.760645798187730040,\t0.760678255593679740,\t\n0.760710711097933870,\t0.760743164700411260,\t0.760775616401030640,\t0.760808066199711090,\t0.760840514096371320,\t0.760872960090930860,\t0.760905404183307430,\t0.760937846373420430,\t\n0.760970286661188820,\t0.761002725046531550,\t0.761035161529367450,\t0.761067596109615390,\t0.761100028787194960,\t0.761132459562023910,\t0.761164888434021750,\t0.761197315403107310,\t\n0.761229740469199560,\t0.761262163632217440,\t0.761294584892080020,\t0.761327004248706030,\t0.761359421702015090,\t0.761391837251925160,\t0.761424250898355530,\t0.761456662641225250,\t\n0.761489072480453390,\t0.761521480415958800,\t0.761553886447660530,\t0.761586290575478220,\t0.761618692799329480,\t0.761651093119134040,\t0.761683491534810850,\t0.761715888046278880,\t\n0.761748282653457290,\t0.761780675356264920,\t0.761813066154620970,\t0.761845455048444810,\t0.761877842037654520,\t0.761910227122169600,\t0.761942610301909130,\t0.761974991576792050,\t\n0.762007370946737540,\t0.762039748411664660,\t0.762072123971492380,\t0.762104497626140300,\t0.762136869375526490,\t0.762169239219570470,\t0.762201607158191300,\t0.762233973191308150,\t\n0.762266337318840080,\t0.762298699540706170,\t0.762331059856826140,\t0.762363418267117840,\t0.762395774771501000,\t0.762428129369894680,\t0.762460482062218060,\t0.762492832848390200,\t\n0.762525181728330280,\t0.762557528701957480,\t0.762589873769191410,\t0.762622216929950030,\t0.762654558184153180,\t0.762686897531719810,\t0.762719234972569330,\t0.762751570506620680,\t\n0.762783904133793160,\t0.762816235854005820,\t0.762848565667178510,\t0.762880893573229190,\t0.762913219572077580,\t0.762945543663642980,\t0.762977865847844550,\t0.763010186124601360,\t\n0.763042504493832820,\t0.763074820955458530,\t0.763107135509396680,\t0.763139448155566890,\t0.763171758893888550,\t0.763204067724280840,\t0.763236374646662830,\t0.763268679660954020,\t\n0.763300982767073480,\t0.763333283964941050,\t0.763365583254474790,\t0.763397880635594660,\t0.763430176108219730,\t0.763462469672269380,\t0.763494761327662920,\t0.763527051074319510,\t\n0.763559338912159100,\t0.763591624841099660,\t0.763623908861061240,\t0.763656190971963020,\t0.763688471173724400,\t0.763720749466264560,\t0.763753025849502780,\t0.763785300323358450,\t\n0.763817572887751430,\t0.763849843542599990,\t0.763882112287823880,\t0.763914379123342590,\t0.763946644049075200,\t0.763978907064941310,\t0.764011168170860120,\t0.764043427366751020,\t\n0.764075684652533840,\t0.764107940028126990,\t0.764140193493450190,\t0.764172445048422970,\t0.764204694692964700,\t0.764236942426994580,\t0.764269188250432220,\t0.764301432163197350,\t\n0.764333674165208370,\t0.764365914256385230,\t0.764398152436647220,\t0.764430388705913950,\t0.764462623064104620,\t0.764494855511138720,\t0.764527086046935760,\t0.764559314671415580,\t\n0.764591541384496590,\t0.764623766186098730,\t0.764655989076141520,\t0.764688210054544240,\t0.764720429121226510,\t0.764752646276107620,\t0.764784861519107180,\t0.764817074850145160,\t\n0.764849286269139840,\t0.764881495776011390,\t0.764913703370679100,\t0.764945909053062590,\t0.764978112823081370,\t0.765010314680654720,\t0.765042514625702940,\t0.765074712658144310,\t\n0.765106908777898890,\t0.765139102984886190,\t0.765171295279025830,\t0.765203485660237100,\t0.765235674128439740,\t0.765267860683553120,\t0.765300045325497450,\t0.765332228054191100,\t\n0.765364408869554260,\t0.765396587771506320,\t0.765428764759966910,\t0.765460939834855520,\t0.765493112996091910,\t0.765525284243596000,\t0.765557453577286440,\t0.765589620997083050,\t\n0.765621786502905800,\t0.765653950094673960,\t0.765686111772307280,\t0.765718271535725360,\t0.765750429384847720,\t0.765782585319594530,\t0.765814739339884310,\t0.765846891445637330,\t\n0.765879041636773120,\t0.765911189913211170,\t0.765943336274871430,\t0.765975480721673210,\t0.766007623253536330,\t0.766039763870380970,\t0.766071902572125650,\t0.766104039358690540,\t\n0.766136174229995360,\t0.766168307185959740,\t0.766200438226503300,\t0.766232567351545880,\t0.766264694561007540,\t0.766296819854806910,\t0.766328943232864160,\t0.766361064695099130,\t\n0.766393184241431440,\t0.766425301871780710,\t0.766457417586066780,\t0.766489531384209280,\t0.766521643266128590,\t0.766553753231743240,\t0.766585861280973390,\t0.766617967413739000,\t\n0.766650071629959570,\t0.766682173929555070,\t0.766714274312445100,\t0.766746372778549400,\t0.766778469327788370,\t0.766810563960080630,\t0.766842656675346460,\t0.766874747473505700,\t\n0.766906836354477980,\t0.766938923318183250,\t0.766971008364541130,\t0.767003091493472120,\t0.767035172704894740,\t0.767067251998729490,\t0.767099329374896110,\t0.767131404833314430,\t\n0.767163478373904200,\t0.767195549996585240,\t0.767227619701277510,\t0.767259687487901190,\t0.767291753356375120,\t0.767323817306619690,\t0.767355879338554650,\t0.767387939452100040,\t\n0.767419997647175500,\t0.767452053923700970,\t0.767484108281596860,\t0.767516160720781880,\t0.767548211241176560,\t0.767580259842700730,\t0.767612306525274240,\t0.767644351288816920,\t\n0.767676394133248730,\t0.767708435058489620,\t0.767740474064460000,\t0.767772511151078580,\t0.767804546318265890,\t0.767836579565941870,\t0.767868610894026360,\t0.767900640302439320,\t\n0.767932667791100700,\t0.767964693359930340,\t0.767996717008848860,\t0.768028738737775110,\t0.768060758546629360,\t0.768092776435331800,\t0.768124792403802380,\t0.768156806451960830,\t\n0.768188818579727320,\t0.768220828787022360,\t0.768252837073764680,\t0.768284843439875020,\t0.768316847885273210,\t0.768348850409879210,\t0.768380851013613200,\t0.768412849696395010,\t\n0.768444846458144700,\t0.768476841298782800,\t0.768508834218228240,\t0.768540825216401660,\t0.768572814293222990,\t0.768604801448612210,\t0.768636786682489580,\t0.768668769994774850,\t\n0.768700751385388180,\t0.768732730854250310,\t0.768764708401279970,\t0.768796684026397890,\t0.768828657729524020,\t0.768860629510578650,\t0.768892599369481620,\t0.768924567306153110,\t\n0.768956533320513720,\t0.768988497412482540,\t0.769020459581979950,\t0.769052419828926360,\t0.769084378153241600,\t0.769116334554845960,\t0.769148289033659500,\t0.769180241589602300,\t\n0.769212192222595070,\t0.769244140932556770,\t0.769276087719408030,\t0.769308032583069230,\t0.769339975523460230,\t0.769371916540501410,\t0.769403855634112730,\t0.769435792804214920,\t\n0.769467728050727160,\t0.769499661373570070,\t0.769531592772663810,\t0.769563522247928570,\t0.769595449799284510,\t0.769627375426651830,\t0.769659299129950680,\t0.769691220909101910,\t\n0.769723140764024480,\t0.769755058694639230,\t0.769786974700866320,\t0.769818888782625940,\t0.769850800939838380,\t0.769882711172423790,\t0.769914619480302490,\t0.769946525863395070,\t\n0.769978430321620940,\t0.770010332854900610,\t0.770042233463154480,\t0.770074132146302830,\t0.770106028904265830,\t0.770137923736963660,\t0.770169816644317380,\t0.770201707626245850,\t\n0.770233596682670110,\t0.770265483813510450,\t0.770297369018686950,\t0.770329252298120220,\t0.770361133651730200,\t0.770393013079437420,\t0.770424890581162590,\t0.770456766156825010,\t\n0.770488639806345520,\t0.770520511529644400,\t0.770552381326642060,\t0.770584249197258760,\t0.770616115141414810,\t0.770647979159031160,\t0.770679841250026980,\t0.770711701414323210,\t\n0.770743559651840270,\t0.770775415962498320,\t0.770807270346217770,\t0.770839122802919220,\t0.770870973332522750,\t0.770902821934949410,\t0.770934668610118500,\t0.770966513357950860,\t\n0.770998356178366980,\t0.771030197071287170,\t0.771062036036631930,\t0.771093873074321530,\t0.771125708184276500,\t0.771157541366417790,\t0.771189372620664670,\t0.771221201946938000,\t\n0.771253029345158380,\t0.771284854815246220,\t0.771316678357121920,\t0.771348499970705870,\t0.771380319655919240,\t0.771412137412681220,\t0.771443953240912750,\t0.771475767140534450,\t\n0.771507579111466830,\t0.771539389153630180,\t0.771571197266945010,\t0.771603003451331930,\t0.771634807706711890,\t0.771666610033004190,\t0.771698410430130100,\t0.771730208898009920,\t\n0.771762005436564150,\t0.771793800045713410,\t0.771825592725378210,\t0.771857383475478940,\t0.771889172295936900,\t0.771920959186671360,\t0.771952744147603290,\t0.771984527178653510,\t\n0.772016308279742320,\t0.772048087450790340,\t0.772079864691718190,\t0.772111640002446920,\t0.772143413382896050,\t0.772175184832986530,\t0.772206954352639200,\t0.772238721941774340,\t\n0.772270487600312800,\t0.772302251328174980,\t0.772334013125281490,\t0.772365772991553620,\t0.772397530926910660,\t0.772429286931273880,\t0.772461041004563920,\t0.772492793146701380,\t\n0.772524543357606900,\t0.772556291637200960,\t0.772588037985404870,\t0.772619782402138130,\t0.772651524887322030,\t0.772683265440876950,\t0.772715004062723860,\t0.772746740752783160,\t\n0.772778475510975670,\t0.772810208337221920,\t0.772841939231443290,\t0.772873668193559290,\t0.772905395223491000,\t0.772937120321159240,\t0.772968843486484760,\t0.773000564719388050,\t\n0.773032284019790070,\t0.773064001387611330,\t0.773095716822773120,\t0.773127430325195040,\t0.773159141894798400,\t0.773190851531503910,\t0.773222559235232310,\t0.773254265005904330,\t\n0.773285968843440590,\t0.773317670747762590,\t0.773349370718789840,\t0.773381068756443630,\t0.773412764860644810,\t0.773444459031313980,\t0.773476151268372100,\t0.773507841571739800,\t\n0.773539529941337790,\t0.773571216377087700,\t0.773602900878908930,\t0.773634583446722870,\t0.773666264080450360,\t0.773697942780012250,\t0.773729619545329260,\t0.773761294376322130,\t\n0.773792967272911910,\t0.773824638235019790,\t0.773856307262565490,\t0.773887974355470410,\t0.773919639513655390,\t0.773951302737041270,\t0.773982964025549000,\t0.774014623379099210,\t\n0.774046280797613400,\t0.774077936281011400,\t0.774109589829214520,\t0.774141241442143690,\t0.774172891119719760,\t0.774204538861863580,\t0.774236184668496090,\t0.774267828539538130,\t\n0.774299470474911100,\t0.774331110474534840,\t0.774362748538330870,\t0.774394384666220010,\t0.774426018858123230,\t0.774457651113961370,\t0.774489281433655360,\t0.774520909817126620,\t\n0.774552536264295210,\t0.774584160775082300,\t0.774615783349409170,\t0.774647403987196450,\t0.774679022688365300,\t0.774710639452836470,\t0.774742254280531120,\t0.774773867171370760,\t\n0.774805478125275120,\t0.774837087142165700,\t0.774868694221963690,\t0.774900299364589930,\t0.774931902569965360,\t0.774963503838011050,\t0.774995103168647950,\t0.775026700561797680,\t\n0.775058296017380190,\t0.775089889535316880,\t0.775121481115528810,\t0.775153070757937050,\t0.775184658462462650,\t0.775216244229026570,\t0.775247828057550550,\t0.775279409947954300,\t\n0.775310989900159450,\t0.775342567914087290,\t0.775374143989658650,\t0.775405718126794600,\t0.775437290325416310,\t0.775468860585444730,\t0.775500428906801600,\t0.775531995289406860,\t\n0.775563559733182140,\t0.775595122238048500,\t0.775626682803926990,\t0.775658241430738920,\t0.775689798118405100,\t0.775721352866846850,\t0.775752905675985760,\t0.775784456545741910,\t\n0.775816005476036800,\t0.775847552466791820,\t0.775879097517927830,\t0.775910640629366210,\t0.775942181801027920,\t0.775973721032834800,\t0.776005258324706680,\t0.776036793676565530,\t\n0.776068327088332400,\t0.776099858559928360,\t0.776131388091274800,\t0.776162915682292680,\t0.776194441332903270,\t0.776225965043028320,\t0.776257486812587880,\t0.776289006641503800,\t\n0.776320524529697130,\t0.776352040477089280,\t0.776383554483601190,\t0.776415066549154260,\t0.776446576673670230,\t0.776478084857069150,\t0.776509591099272870,\t0.776541095400202660,\t\n0.776572597759779710,\t0.776604098177925310,\t0.776635596654560610,\t0.776667093189606920,\t0.776698587782986060,\t0.776730080434618110,\t0.776761571144425010,\t0.776793059912327940,\t\n0.776824546738248300,\t0.776856031622107260,\t0.776887514563826100,\t0.776918995563326220,\t0.776950474620529350,\t0.776981951735355780,\t0.777013426907727340,\t0.777044900137565330,\t\n0.777076371424791020,\t0.777107840769325820,\t0.777139308171091000,\t0.777170773630008530,\t0.777202237145998450,\t0.777233698718982850,\t0.777265158348883100,\t0.777296616035620280,\t\n0.777328071779116000,\t0.777359525579291550,\t0.777390977436068330,\t0.777422427349368170,\t0.777453875319111360,\t0.777485321345219860,\t0.777516765427615050,\t0.777548207566218340,\t\n0.777579647760951230,\t0.777611086011734900,\t0.777642522318490850,\t0.777673956681141030,\t0.777705389099605740,\t0.777736819573807030,\t0.777768248103666290,\t0.777799674689104940,\t\n0.777831099330044350,\t0.777862522026406040,\t0.777893942778111970,\t0.777925361585082520,\t0.777956778447239650,\t0.777988193364504750,\t0.778019606336799450,\t0.778051017364045140,\t\n0.778082426446163320,\t0.778113833583075400,\t0.778145238774703430,\t0.778176642020967810,\t0.778208043321790610,\t0.778239442677093220,\t0.778270840086797260,\t0.778302235550824230,\t\n0.778333629069095640,\t0.778365020641533460,\t0.778396410268058280,\t0.778427797948591960,\t0.778459183683056220,\t0.778490567471372460,\t0.778521949313462410,\t0.778553329209247360,\t\n0.778584707158649030,\t0.778616083161589480,\t0.778647457217989110,\t0.778678829327770220,\t0.778710199490854180,\t0.778741567707162630,\t0.778772933976617180,\t0.778804298299139440,\t\n0.778835660674650930,\t0.778867021103073820,\t0.778898379584328500,\t0.778929736118337380,\t0.778961090705021840,\t0.778992443344303620,\t0.779023794036104220,\t0.779055142780345380,\t\n0.779086489576949370,\t0.779117834425836380,\t0.779149177326928900,\t0.779180518280148450,\t0.779211857285416750,\t0.779243194342655320,\t0.779274529451785990,\t0.779305862612730270,\t\n0.779337193825410450,\t0.779368523089747130,\t0.779399850405662510,\t0.779431175773078300,\t0.779462499191916010,\t0.779493820662097600,\t0.779525140183544570,\t0.779556457756179320,\t\n0.779587773379922360,\t0.779619087054695850,\t0.779650398780421750,\t0.779681708557021570,\t0.779713016384417150,\t0.779744322262530210,\t0.779775626191282490,\t0.779806928170596160,\t\n0.779838228200392060,\t0.779869526280592360,\t0.779900822411118800,\t0.779932116591893210,\t0.779963408822837320,\t0.779994699103872980,\t0.780025987434921800,\t0.780057273815906280,\t\n0.780088558246746940,\t0.780119840727366290,\t0.780151121257685930,\t0.780182399837627830,\t0.780213676467113700,\t0.780244951146065510,\t0.780276223874405320,\t0.780307494652054180,\t\n0.780338763478934160,\t0.780370030354967330,\t0.780401295280075400,\t0.780432558254180230,\t0.780463819277203650,\t0.780495078349067510,\t0.780526335469694190,\t0.780557590639004540,\t\n0.780588843856920960,\t0.780620095123365170,\t0.780651344438259230,\t0.780682591801524880,\t0.780713837213084070,\t0.780745080672858640,\t0.780776322180771090,\t0.780807561736742150,\t\n0.780838799340694330,\t0.780870034992549480,\t0.780901268692229640,\t0.780932500439656560,\t0.780963730234752180,\t0.780994958077439130,\t0.781026183967638010,\t0.781057407905271560,\t\n0.781088629890261510,\t0.781119849922529920,\t0.781151068001998630,\t0.781182284128589810,\t0.781213498302225200,\t0.781244710522827400,\t0.781275920790317270,\t0.781307129104617300,\t\n0.781338335465649570,\t0.781369539873335910,\t0.781400742327598490,\t0.781431942828359260,\t0.781463141375540630,\t0.781494337969063650,\t0.781525532608850830,\t0.781556725294824120,\t\n0.781587916026905580,\t0.781619104805017280,\t0.781650291629081280,\t0.781681476499019530,\t0.781712659414754540,\t0.781743840376207480,\t0.781775019383300740,\t0.781806196435956500,\t\n0.781837371534096710,\t0.781868544677643550,\t0.781899715866518960,\t0.781930885100645230,\t0.781962052379944650,\t0.781993217704338490,\t0.782024381073749280,\t0.782055542488099160,\t\n0.782086701947310110,\t0.782117859451304300,\t0.782149015000003890,\t0.782180168593331500,\t0.782211320231208100,\t0.782242469913556390,\t0.782273617640298570,\t0.782304763411356690,\t\n0.782335907226652800,\t0.782367049086109210,\t0.782398188989648080,\t0.782429326937191920,\t0.782460462928662000,\t0.782491596963980740,\t0.782522729043070630,\t0.782553859165853630,\t\n0.782584987332252120,\t0.782616113542187960,\t0.782647237795583650,\t0.782678360092361690,\t0.782709480432443370,\t0.782740598815751310,\t0.782771715242207790,\t0.782802829711734980,\t\n0.782833942224255060,\t0.782865052779690210,\t0.782896161377963360,\t0.782927268018995590,\t0.782958372702709630,\t0.782989475429027750,\t0.783020576197872130,\t0.783051675009165060,\t\n0.783082771862828820,\t0.783113866758785690,\t0.783144959696958410,\t0.783176050677268250,\t0.783207139699637840,\t0.783238226763989690,\t0.783269311870245950,\t0.783300395018328930,\t\n0.783331476208160900,\t0.783362555439664710,\t0.783393632712761630,\t0.783424708027374410,\t0.783455781383425530,\t0.783486852780837070,\t0.783517922219531540,\t0.783548989699431210,\t\n0.783580055220458370,\t0.783611118782535980,\t0.783642180385585200,\t0.783673240029528980,\t0.783704297714289730,\t0.783735353439789730,\t0.783766407205951250,\t0.783797459012696820,\t\n0.783828508859948700,\t0.783859556747629860,\t0.783890602675661690,\t0.783921646643966910,\t0.783952688652468030,\t0.783983728701087460,\t0.784014766789747460,\t0.784045802918370670,\t\n0.784076837086879920,\t0.784107869295196380,\t0.784138899543243340,\t0.784169927830942970,\t0.784200954158217780,\t0.784231978524990270,\t0.784263000931182730,\t0.784294021376717780,\t\n0.784325039861518250,\t0.784356056385505540,\t0.784387070948602720,\t0.784418083550732280,\t0.784449094191816520,\t0.784480102871778160,\t0.784511109590539490,\t0.784542114348023010,\t\n0.784573117144151900,\t0.784604117978847330,\t0.784635116852032470,\t0.784666113763629820,\t0.784697108713561910,\t0.784728101701751330,\t0.784759092728120390,\t0.784790081792592240,\t\n0.784821068895088400,\t0.784852054035531820,\t0.784883037213845220,\t0.784914018429950900,\t0.784944997683771570,\t0.784975974975229860,\t0.785006950304248050,\t0.785037923670749540,\t\n0.785068895074655600,\t0.785099864515889420,\t0.785130831994373610,\t0.785161797510030680,\t0.785192761062783350,\t0.785223722652554020,\t0.785254682279265980,\t0.785285639942840620,\t\n0.785316595643201330,\t0.785347549380270400,\t0.785378501153970570,\t0.785409450964224540,\t0.785440398810954950,\t0.785471344694084310,\t0.785502288613535880,\t0.785533230569231080,\t\n0.785564170561093290,\t0.785595108589045130,\t0.785626044653009110,\t0.785656978752907960,\t0.785687910888664410,\t0.785718841060201070,\t0.785749769267441220,\t0.785780695510306380,\t\n0.785811619788719720,\t0.785842542102604070,\t0.785873462451882050,\t0.785904380836476400,\t0.785935297256309840,\t0.785966211711305540,\t0.785997124201385120,\t0.786028034726471980,\t\n0.786058943286488620,\t0.786089849881357990,\t0.786120754511002830,\t0.786151657175345630,\t0.786182557874309350,\t0.786213456607817160,\t0.786244353375790910,\t0.786275248178153750,\t\n0.786306141014828320,\t0.786337031885737670,\t0.786367920790804420,\t0.786398807729951410,\t0.786429692703101260,\t0.786460575710177580,\t0.786491456751101770,\t0.786522335825797450,\t\n0.786553212934187230,\t0.786584088076193950,\t0.786614961251740460,\t0.786645832460749590,\t0.786676701703144630,\t0.786707568978847420,\t0.786738434287781230,\t0.786769297629869020,\t\n0.786800159005033640,\t0.786831018413197690,\t0.786861875854284350,\t0.786892731328216240,\t0.786923584834916870,\t0.786954436374307950,\t0.786985285946313010,\t0.787016133550854760,\t\n0.787046979187856270,\t0.787077822857240260,\t0.787108664558929690,\t0.787139504292848070,\t0.787170342058917120,\t0.787201177857060340,\t0.787232011687200580,\t0.787262843549260790,\t\n0.787293673443163920,\t0.787324501368832810,\t0.787355327326190510,\t0.787386151315160430,\t0.787416973335664410,\t0.787447793387625940,\t0.787478611470967980,\t0.787509427585613490,\t\n0.787540241731485510,\t0.787571053908506900,\t0.787601864116600600,\t0.787632672355690230,\t0.787663478625697520,\t0.787694282926546310,\t0.787725085258159210,\t0.787755885620459510,\t\n0.787786684013370040,\t0.787817480436813990,\t0.787848274890714630,\t0.787879067374994020,\t0.787909857889575900,\t0.787940646434383000,\t0.787971433009338580,\t0.788002217614365510,\t\n0.788033000249386940,\t0.788063780914325830,\t0.788094559609105790,\t0.788125336333648900,\t0.788156111087878640,\t0.788186883871717980,\t0.788217654685090310,\t0.788248423527918350,\t\n0.788279190400125400,\t0.788309955301634950,\t0.788340718232369180,\t0.788371479192251590,\t0.788402238181205250,\t0.788432995199153330,\t0.788463750246018890,\t0.788494503321725100,\t\n0.788525254426195030,\t0.788556003559352400,\t0.788586750721119280,\t0.788617495911419280,\t0.788648239130175450,\t0.788678980377310990,\t0.788709719652749160,\t0.788740456956413040,\t\n0.788771192288225790,\t0.788801925648111020,\t0.788832657035990930,\t0.788863386451789220,\t0.788894113895429070,\t0.788924839366833550,\t0.788955562865925940,\t0.788986284392629520,\t\n0.789017003946867910,\t0.789047721528563170,\t0.789078437137639140,\t0.789109150774019110,\t0.789139862437626130,\t0.789170572128383490,\t0.789201279846214470,\t0.789231985591042130,\t\n0.789262689362790540,\t0.789293391161381530,\t0.789324090986739170,\t0.789354788838786510,\t0.789385484717446850,\t0.789416178622643570,\t0.789446870554299740,\t0.789477560512338860,\t\n0.789508248496684550,\t0.789538934507259090,\t0.789569618543986220,\t0.789600300606789430,\t0.789630980695591790,\t0.789661658810316690,\t0.789692334950887530,\t0.789723009117228040,\t\n0.789753681309260490,\t0.789784351526908730,\t0.789815019770096050,\t0.789845686038745830,\t0.789876350332781470,\t0.789907012652126150,\t0.789937672996703370,\t0.789968331366436960,\t\n0.789998987761249110,\t0.790029642181063750,\t0.790060294625804400,\t0.790090945095394240,\t0.790121593589756750,\t0.790152240108815240,\t0.790182884652493760,\t0.790213527220714470,\t\n0.790244167813401340,\t0.790274806430477870,\t0.790305443071867230,\t0.790336077737493150,\t0.790366710427278800,\t0.790397341141147680,\t0.790427969879023750,\t0.790458596640829290,\t\n0.790489221426488480,\t0.790519844235924470,\t0.790550465069060900,\t0.790581083925821270,\t0.790611700806128860,\t0.790642315709907170,\t0.790672928637080160,\t0.790703539587570450,\t\n0.790734148561301750,\t0.790764755558197810,\t0.790795360578181890,\t0.790825963621177630,\t0.790856564687108410,\t0.790887163775898290,\t0.790917760887469790,\t0.790948356021746850,\t\n0.790978949178653080,\t0.791009540358111880,\t0.791040129560046880,\t0.791070716784381460,\t0.791101302031039340,\t0.791131885299944490,\t0.791162466591019410,\t0.791193045904188040,\t\n0.791223623239374120,\t0.791254198596501150,\t0.791284771975492740,\t0.791315343376272410,\t0.791345912798763650,\t0.791376480242890650,\t0.791407045708575900,\t0.791437609195743570,\t\n0.791468170704317190,\t0.791498730234220460,\t0.791529287785376790,\t0.791559843357710010,\t0.791590396951144080,\t0.791620948565601610,\t0.791651498201006890,\t0.791682045857283300,\t\n0.791712591534354690,\t0.791743135232144570,\t0.791773676950576540,\t0.791804216689574350,\t0.791834754449062260,\t0.791865290228962570,\t0.791895824029199780,\t0.791926355849697390,\t\n0.791956885690379140,\t0.791987413551168640,\t0.792017939431989610,\t0.792048463332766350,\t0.792078985253421350,\t0.792109505193878790,\t0.792140023154062510,\t0.792170539133896230,\t\n0.792201053133303580,\t0.792231565152208270,\t0.792262075190534150,\t0.792292583248205280,\t0.792323089325144390,\t0.792353593421275870,\t0.792384095536523340,\t0.792414595670810520,\t\n0.792445093824061250,\t0.792475589996199270,\t0.792506084187148300,\t0.792536576396832610,\t0.792567066625174950,\t0.792597554872099600,\t0.792628041137530490,\t0.792658525421391150,\t\n0.792689007723605620,\t0.792719488044097420,\t0.792749966382791160,\t0.792780442739609460,\t0.792810917114476490,\t0.792841389507316420,\t0.792871859918052760,\t0.792902328346609450,\t\n0.792932794792910340,\t0.792963259256879270,\t0.792993721738440630,\t0.793024182237517030,\t0.793054640754033090,\t0.793085097287912430,\t0.793115551839079110,\t0.793146004407456860,\t\n0.793176454992969630,\t0.793206903595541360,\t0.793237350215096230,\t0.793267794851557180,\t0.793298237504848740,\t0.793328678174894610,\t0.793359116861618860,\t0.793389553564945340,\t\n0.793419988284797870,\t0.793450421021100970,\t0.793480851773777470,\t0.793511280542751880,\t0.793541707327948150,\t0.793572132129290010,\t0.793602554946701620,\t0.793632975780106830,\t\n0.793663394629429590,\t0.793693811494594500,\t0.793724226375524200,\t0.793754639272143400,\t0.793785050184376060,\t0.793815459112146020,\t0.793845866055377320,\t0.793876271013993940,\t\n0.793906673987920470,\t0.793937074977079770,\t0.793967473981396440,\t0.793997871000794330,\t0.794028266035197610,\t0.794058659084530220,\t0.794089050148716110,\t0.794119439227679360,\t\n0.794149826321344680,\t0.794180211429634800,\t0.794210594552474450,\t0.794240975689787580,\t0.794271354841498240,\t0.794301732007530630,\t0.794332107187808560,\t0.794362480382256320,\t\n0.794392851590798310,\t0.794423220813357700,\t0.794453588049858990,\t0.794483953300226360,\t0.794514316564383870,\t0.794544677842255580,\t0.794575037133765540,\t0.794605394438838490,\t\n0.794635749757397480,\t0.794666103089366920,\t0.794696454434671300,\t0.794726803793234460,\t0.794757151164980580,\t0.794787496549833830,\t0.794817839947718370,\t0.794848181358558840,\t\n0.794878520782278280,\t0.794908858218801420,\t0.794939193668052440,\t0.794969527129955500,\t0.794999858604434670,\t0.795030188091414350,\t0.795060515590818360,\t0.795090841102571780,\t\n0.795121164626597430,\t0.795151486162820280,\t0.795181805711164370,\t0.795212123271553880,\t0.795242438843913210,\t0.795272752428166420,\t0.795303064024238230,\t0.795333373632051810,\t\n0.795363681251532010,\t0.795393986882602990,\t0.795424290525189040,\t0.795454592179214330,\t0.795484891844603140,\t0.795515189521279750,\t0.795545485209168900,\t0.795575778908193860,\t\n0.795606070618279260,\t0.795636360339349590,\t0.795666648071328920,\t0.795696933814141750,\t0.795727217567712140,\t0.795757499331965050,\t0.795787779106823740,\t0.795818056892212860,\t\n0.795848332688056990,\t0.795878606494280110,\t0.795908878310806810,\t0.795939148137561390,\t0.795969415974468020,\t0.795999681821451640,\t0.796029945678435550,\t0.796060207545344570,\t\n0.796090467422103100,\t0.796120725308635420,\t0.796150981204865940,\t0.796181235110719030,\t0.796211487026118990,\t0.796241736950990760,\t0.796271984885257740,\t0.796302230828844660,\t\n0.796332474781676130,\t0.796362716743676310,\t0.796392956714769730,\t0.796423194694880760,\t0.796453430683934260,\t0.796483664681853720,\t0.796513896688564090,\t0.796544126703989660,\t\n0.796574354728054820,\t0.796604580760684190,\t0.796634804801802150,\t0.796665026851333000,\t0.796695246909201900,\t0.796725464975332030,\t0.796755681049648670,\t0.796785895132075980,\t\n0.796816107222538590,\t0.796846317320960900,\t0.796876525427267390,\t0.796906731541382700,\t0.796936935663231650,\t0.796967137792737650,\t0.796997337929825860,\t0.797027536074420780,\t\n0.797057732226446820,\t0.797087926385828480,\t0.797118118552490370,\t0.797148308726357560,\t0.797178496907353320,\t0.797208683095402940,\t0.797238867290430810,\t0.797269049492361550,\t\n0.797299229701119660,\t0.797329407916629650,\t0.797359584138816140,\t0.797389758367604170,\t0.797419930602917380,\t0.797450100844680600,\t0.797480269092818660,\t0.797510435347256070,\t\n0.797540599607917340,\t0.797570761874727200,\t0.797600922147610580,\t0.797631080426491220,\t0.797661236711294070,\t0.797691391001943860,\t0.797721543298365200,\t0.797751693600482700,\t\n0.797781841908220880,\t0.797811988221504450,\t0.797842132540258710,\t0.797872274864407040,\t0.797902415193874610,\t0.797932553528586270,\t0.797962689868466410,\t0.797992824213439980,\t\n0.798022956563431360,\t0.798053086918365410,\t0.798083215278167280,\t0.798113341642760600,\t0.798143466012070530,\t0.798173588386021820,\t0.798203708764539050,\t0.798233827147547090,\t\n0.798263943534970540,\t0.798294057926734690,\t0.798324170322763150,\t0.798354280722981200,\t0.798384389127313470,\t0.798414495535684890,\t0.798444599948019970,\t0.798474702364243560,\t\n0.798504802784280490,\t0.798534901208055810,\t0.798564997635493490,\t0.798595092066518570,\t0.798625184501055910,\t0.798655274939030320,\t0.798685363380366550,\t0.798715449824989430,\t\n0.798745534272824130,\t0.798775616723794490,\t0.798805697177825790,\t0.798835775634842870,\t0.798865852094770570,\t0.798895926557533500,\t0.798925999023056720,\t0.798956069491264960,\t\n0.798986137962083510,\t0.799016204435436190,\t0.799046268911248300,\t0.799076331389444890,\t0.799106391869950580,\t0.799136450352690210,\t0.799166506837588830,\t0.799196561324571060,\t\n0.799226613813562530,\t0.799256664304486830,\t0.799286712797269590,\t0.799316759291835540,\t0.799346803788109520,\t0.799376846286016460,\t0.799406886785481440,\t0.799436925286429620,\t\n0.799466961788785070,\t0.799496996292472950,\t0.799527028797418440,\t0.799557059303546370,\t0.799587087810781580,\t0.799617114319049140,\t0.799647138828273870,\t0.799677161338381290,\t\n0.799707181849295350,\t0.799737200360941420,\t0.799767216873244480,\t0.799797231386129460,\t0.799827243899521310,\t0.799857254413345210,\t0.799887262927525880,\t0.799917269441988930,\t\n0.799947273956658320,\t0.799977276471459440,\t0.800007276986317350,\t0.800037275501157220,\t0.800067272015903770,\t0.800097266530482190,\t0.800127259044817960,\t0.800157249558835160,\t\n0.800187238072459060,\t0.800217224585614950,\t0.800247209098227770,\t0.800277191610222590,\t0.800307172121524470,\t0.800337150632058240,\t0.800367127141749850,\t0.800397101650523020,\t\n0.800427074158303500,\t0.800457044665016220,\t0.800487013170586350,\t0.800516979674939070,\t0.800546944177999210,\t0.800576906679692500,\t0.800606867179943120,\t0.800636825678676440,\t\n0.800666782175817770,\t0.800696736671292040,\t0.800726689165024650,\t0.800756639656940440,\t0.800786588146964570,\t0.800816534635022890,\t0.800846479121039230,\t0.800876421604939440,\t\n0.800906362086648560,\t0.800936300566091770,\t0.800966237043194250,\t0.800996171517881160,\t0.801026103990077680,\t0.801056034459709410,\t0.801085962926700420,\t0.801115889390976670,\t\n0.801145813852463200,\t0.801175736311085070,\t0.801205656766767690,\t0.801235575219436220,\t0.801265491669016280,\t0.801295406115432040,\t0.801325318558609330,\t0.801355228998473330,\t\n0.801385137434949210,\t0.801415043867962360,\t0.801444948297437840,\t0.801474850723300940,\t0.801504751145477370,\t0.801534649563891530,\t0.801564545978468930,\t0.801594440389135080,\t\n0.801624332795815020,\t0.801654223198434270,\t0.801684111596917880,\t0.801713997991191140,\t0.801743882381180110,\t0.801773764766808730,\t0.801803645148002950,\t0.801833523524688060,\t\n0.801863399896789340,\t0.801893274264232180,\t0.801923146626941750,\t0.801953016984844000,\t0.801982885337863220,\t0.802012751685925230,\t0.802042616028955440,\t0.802072478366878890,\t\n0.802102338699621330,\t0.802132197027107920,\t0.802162053349263940,\t0.802191907666015340,\t0.802221759977286510,\t0.802251610283003290,\t0.802281458583090970,\t0.802311304877475040,\t\n0.802341149166080900,\t0.802370991448833840,\t0.802400831725659790,\t0.802430669996483160,\t0.802460506261229890,\t0.802490340519825260,\t0.802520172772194900,\t0.802550003018264070,\t\n0.802579831257958180,\t0.802609657491202830,\t0.802639481717923760,\t0.802669303938045480,\t0.802699124151493910,\t0.802728942358194590,\t0.802758758558072880,\t0.802788572751054310,\t\n0.802818384937064260,\t0.802848195116028340,\t0.802878003287872400,\t0.802907809452520830,\t0.802937613609899900,\t0.802967415759934800,\t0.802997215902551240,\t0.803027014037674620,\t\n0.803056810165230450,\t0.803086604285144890,\t0.803116396397342220,\t0.803146186501748520,\t0.803175974598289380,\t0.803205760686890200,\t0.803235544767476830,\t0.803265326839974430,\t\n0.803295106904308830,\t0.803324884960405880,\t0.803354661008190310,\t0.803384435047587940,\t0.803414207078524620,\t0.803443977100925630,\t0.803473745114716810,\t0.803503511119823650,\t\n0.803533275116171670,\t0.803563037103687040,\t0.803592797082294250,\t0.803622555051919480,\t0.803652311012488350,\t0.803682064963926470,\t0.803711816906159450,\t0.803741566839112800,\t\n0.803771314762712800,\t0.803801060676883950,\t0.803830804581552540,\t0.803860546476644070,\t0.803890286362084150,\t0.803920024237798620,\t0.803949760103713000,\t0.803979493959752990,\t\n0.804009225805844770,\t0.804038955641912860,\t0.804068683467883740,\t0.804098409283682810,\t0.804128133089235810,\t0.804157854884468560,\t0.804187574669306680,\t0.804217292443676350,\t\n0.804247008207502280,\t0.804276721960710650,\t0.804306433703227300,\t0.804336143434977830,\t0.804365851155887880,\t0.804395556865883490,\t0.804425260564890050,\t0.804454962252834080,\t\n0.804484661929640190,\t0.804514359595234650,\t0.804544055249543090,\t0.804573748892491560,\t0.804603440524005560,\t0.804633130144010940,\t0.804662817752433530,\t0.804692503349199620,\t\n0.804722186934233920,\t0.804751868507462720,\t0.804781548068811860,\t0.804811225618207170,\t0.804840901155574380,\t0.804870574680839330,\t0.804900246193928410,\t0.804929915694766350,\t\n0.804959583183279430,\t0.804989248659393590,\t0.805018912123034670,\t0.805048573574128400,\t0.805078233012600840,\t0.805107890438377490,\t0.805137545851385080,\t0.805167199251548230,\t\n0.805196850638793430,\t0.805226500013046410,\t0.805256147374233230,\t0.805285792722279630,\t0.805315436057111640,\t0.805345077378654910,\t0.805374716686836130,\t0.805404353981580060,\t\n0.805433989262812950,\t0.805463622530461000,\t0.805493253784449910,\t0.805522883024705760,\t0.805552510251154370,\t0.805582135463722260,\t0.805611758662334250,\t0.805641379846916860,\t\n0.805670999017396030,\t0.805700616173697700,\t0.805730231315747720,\t0.805759844443472260,\t0.805789455556797260,\t0.805819064655649010,\t0.805848671739952670,\t0.805878276809634640,\t\n0.805907879864620870,\t0.805937480904837410,\t0.805967079930210330,\t0.805996676940665460,\t0.806026271936129410,\t0.806055864916527250,\t0.806085455881785370,\t0.806115044831829830,\t\n0.806144631766586680,\t0.806174216685981990,\t0.806203799589941710,\t0.806233380478391990,\t0.806262959351259360,\t0.806292536208468750,\t0.806322111049946780,\t0.806351683875619510,\t\n0.806381254685413110,\t0.806410823479253640,\t0.806440390257066930,\t0.806469955018779380,\t0.806499517764317500,\t0.806529078493606110,\t0.806558637206572170,\t0.806588193903141630,\t\n0.806617748583240530,\t0.806647301246795180,\t0.806676851893731510,\t0.806706400523976240,\t0.806735947137454450,\t0.806765491734092730,\t0.806795034313817380,\t0.806824574876554350,\t\n0.806854113422230010,\t0.806883649950770220,\t0.806913184462101470,\t0.806942716956150160,\t0.806972247432841570,\t0.807001775892102420,\t0.807031302333858780,\t0.807060826758036810,\t\n0.807090349164562900,\t0.807119869553363120,\t0.807149387924364080,\t0.807178904277491170,\t0.807208418612670900,\t0.807237930929829650,\t0.807267441228893490,\t0.807296949509788810,\t\n0.807326455772441660,\t0.807355960016778450,\t0.807385462242725890,\t0.807414962450209160,\t0.807444460639154980,\t0.807473956809489630,\t0.807503450961139400,\t0.807532943094030560,\t\n0.807562433208089290,\t0.807591921303241980,\t0.807621407379415460,\t0.807650891436534900,\t0.807680373474527040,\t0.807709853493318250,\t0.807739331492834830,\t0.807768807473003060,\t\n0.807798281433749320,\t0.807827753375000350,\t0.807857223296681530,\t0.807886691198719700,\t0.807916157081041030,\t0.807945620943572030,\t0.807975082786238970,\t0.808004542608968150,\t\n0.808034000411686050,\t0.808063456194319410,\t0.808092909956793730,\t0.808122361699035620,\t0.808151811420971700,\t0.808181259122528140,\t0.808210704803631550,\t0.808240148464208110,\t\n0.808269590104184420,\t0.808299029723487220,\t0.808328467322041890,\t0.808357902899775380,\t0.808387336456614200,\t0.808416767992484630,\t0.808446197507313170,\t0.808475625001026100,\t\n0.808505050473550590,\t0.808534473924811930,\t0.808563895354737050,\t0.808593314763252470,\t0.808622732150284570,\t0.808652147515759870,\t0.808681560859604850,\t0.808710972181745810,\t\n0.808740381482109920,\t0.808769788760622550,\t0.808799194017210790,\t0.808828597251800900,\t0.808857998464319610,\t0.808887397654693310,\t0.808916794822848510,\t0.808946189968712260,\t\n0.808975583092209960,\t0.809004974193268780,\t0.809034363271815100,\t0.809063750327775550,\t0.809093135361076520,\t0.809122518371644730,\t0.809151899359406680,\t0.809181278324289430,\t\n0.809210655266218380,\t0.809240030185120700,\t0.809269403080922990,\t0.809298773953551760,\t0.809328142802933530,\t0.809357509628995000,\t0.809386874431662800,\t0.809416237210863750,\t\n0.809445597966523710,\t0.809474956698569610,\t0.809504313406928190,\t0.809533668091525940,\t0.809563020752289480,\t0.809592371389145530,\t0.809621720002021150,\t0.809651066590841960,\t\n0.809680411155535130,\t0.809709753696027160,\t0.809739094212244880,\t0.809768432704114920,\t0.809797769171563870,\t0.809827103614518260,\t0.809856436032905580,\t0.809885766426651220,\t\n0.809915094795682470,\t0.809944421139925930,\t0.809973745459308340,\t0.810003067753756410,\t0.810032388023196770,\t0.810061706267556250,\t0.810091022486761900,\t0.810120336680739570,\t\n0.810149648849416320,\t0.810178958992718970,\t0.810208267110574140,\t0.810237573202908790,\t0.810266877269649410,\t0.810296179310723400,\t0.810325479326056360,\t0.810354777315575700,\t\n0.810384073279208030,\t0.810413367216880290,\t0.810442659128519090,\t0.810471949014051170,\t0.810501236873403360,\t0.810530522706503050,\t0.810559806513275970,\t0.810589088293649280,\t\n0.810618368047549830,\t0.810647645774904560,\t0.810676921475640190,\t0.810706195149683450,\t0.810735466796961730,\t0.810764736417400880,\t0.810794004010928160,\t0.810823269577470420,\t\n0.810852533116954490,\t0.810881794629307320,\t0.810911054114455520,\t0.810940311572326160,\t0.810969567002846610,\t0.810998820405942510,\t0.811028071781541460,\t0.811057321129570190,\t\n0.811086568449955530,\t0.811115813742624650,\t0.811145057007504060,\t0.811174298244520920,\t0.811203537453602520,\t0.811232774634674690,\t0.811262009787664940,\t0.811291242912500320,\t\n0.811320474009107450,\t0.811349703077413390,\t0.811378930117345190,\t0.811408155128830020,\t0.811437378111794060,\t0.811466599066164700,\t0.811495817991868760,\t0.811525034888833210,\t\n0.811554249756985200,\t0.811583462596251470,\t0.811612673406559180,\t0.811641882187835620,\t0.811671088940006950,\t0.811700293663000450,\t0.811729496356743300,\t0.811758697021162320,\t\n0.811787895656184700,\t0.811817092261737260,\t0.811846286837747180,\t0.811875479384141840,\t0.811904669900847310,\t0.811933858387791090,\t0.811963044844900230,\t0.811992229272101680,\t\n0.812021411669322620,\t0.812050592036489990,\t0.812079770373531520,\t0.812108946680373030,\t0.812138120956942160,\t0.812167293203166050,\t0.812196463418971560,\t0.812225631604286070,\t\n0.812254797759036420,\t0.812283961883149770,\t0.812313123976553750,\t0.812342284039174410,\t0.812371442070939360,\t0.812400598071775780,\t0.812429752041610610,\t0.812458903980371130,\t\n0.812488053887984290,\t0.812517201764377920,\t0.812546347609477970,\t0.812575491423212170,\t0.812604633205507690,\t0.812633772956291580,\t0.812662910675491010,\t0.812692046363033270,\t\n0.812721180018845300,\t0.812750311642854940,\t0.812779441234988350,\t0.812808568795173050,\t0.812837694323336410,\t0.812866817819405510,\t0.812895939283307500,\t0.812925058714969670,\t\n0.812954176114319300,\t0.812983291481283900,\t0.813012404815789740,\t0.813041516117764650,\t0.813070625387135700,\t0.813099732623830170,\t0.813128837827775450,\t0.813157940998898490,\t\n0.813187042137127230,\t0.813216141242387950,\t0.813245238314608150,\t0.813274333353715350,\t0.813303426359636710,\t0.813332517332299500,\t0.813361606271631010,\t0.813390693177558520,\t\n0.813419778050009760,\t0.813448860888911000,\t0.813477941694190190,\t0.813507020465774500,\t0.813536097203591210,\t0.813565171907567720,\t0.813594244577631300,\t0.813623315213709230,\t\n0.813652383815729460,\t0.813681450383618170,\t0.813710514917303280,\t0.813739577416712100,\t0.813768637881771890,\t0.813797696312410170,\t0.813826752708554200,\t0.813855807070131940,\t\n0.813884859397069560,\t0.813913909689295000,\t0.813942957946735660,\t0.813972004169319030,\t0.814001048356972290,\t0.814030090509623050,\t0.814059130627198480,\t0.814088168709626640,\t\n0.814117204756833800,\t0.814146238768748030,\t0.814175270745296610,\t0.814204300686407030,\t0.814233328592006700,\t0.814262354462023110,\t0.814291378296384090,\t0.814320400095016050,\t\n0.814349419857847150,\t0.814378437584804550,\t0.814407453275815870,\t0.814436466930808620,\t0.814465478549710300,\t0.814494488132448180,\t0.814523495678950330,\t0.814552501189143240,\t\n0.814581504662954870,\t0.814610506100312830,\t0.814639505501144500,\t0.814668502865377290,\t0.814697498192938910,\t0.814726491483756870,\t0.814755482737759000,\t0.814784471954871910,\t\n0.814813459135023680,\t0.814842444278141790,\t0.814871427384153860,\t0.814900408452987280,\t0.814929387484569670,\t0.814958364478829190,\t0.814987339435692240,\t0.815016312355086870,\t\n0.815045283236940810,\t0.815074252081181560,\t0.815103218887736620,\t0.815132183656533620,\t0.815161146387500150,\t0.815190107080564390,\t0.815219065735652840,\t0.815248022352693560,\t\n0.815276976931614270,\t0.815305929472342590,\t0.815334879974806030,\t0.815363828438932290,\t0.815392774864649450,\t0.815421719251884220,\t0.815450661600564670,\t0.815479601910618520,\t\n0.815508540181973270,\t0.815537476414556650,\t0.815566410608296490,\t0.815595342763120180,\t0.815624272878956110,\t0.815653200955730790,\t0.815682126993372390,\t0.815711050991808740,\t\n0.815739972950967560,\t0.815768892870776360,\t0.815797810751162870,\t0.815826726592054910,\t0.815855640393380650,\t0.815884552155066830,\t0.815913461877041610,\t0.815942369559232720,\t\n0.815971275201567870,\t0.816000178803974800,\t0.816029080366381330,\t0.816057979888715760,\t0.816086877370904570,\t0.816115772812876280,\t0.816144666214558610,\t0.816173557575879170,\t\n0.816202446896765910,\t0.816231334177146440,\t0.816260219416948710,\t0.816289102616100990,\t0.816317983774529910,\t0.816346862892163850,\t0.816375739968930760,\t0.816404615004758250,\t\n0.816433487999574160,\t0.816462358953306320,\t0.816491227865882680,\t0.816520094737231420,\t0.816548959567279460,\t0.816577822355955110,\t0.816606683103186180,\t0.816635541808900520,\t\n0.816664398473026080,\t0.816693253095490570,\t0.816722105676222500,\t0.816750956215148590,\t0.816779804712197350,\t0.816808651167296510,\t0.816837495580374110,\t0.816866337951357990,\t\n0.816895178280175990,\t0.816924016566756060,\t0.816952852811026590,\t0.816981687012914510,\t0.817010519172348130,\t0.817039349289255480,\t0.817068177363564520,\t0.817097003395203080,\t\n0.817125827384099110,\t0.817154649330181120,\t0.817183469233375930,\t0.817212287093612160,\t0.817241102910817640,\t0.817269916684920330,\t0.817298728415848270,\t0.817327538103529430,\t\n0.817356345747891620,\t0.817385151348863470,\t0.817413954906372030,\t0.817442756420345700,\t0.817471555890712410,\t0.817500353317400230,\t0.817529148700337220,\t0.817557942039451310,\t\n0.817586733334670580,\t0.817615522585923520,\t0.817644309793137070,\t0.817673094956239850,\t0.817701878075159930,\t0.817730659149825350,\t0.817759438180164170,\t0.817788215166104230,\t\n0.817816990107574360,\t0.817845763004501510,\t0.817874533856814300,\t0.817903302664440670,\t0.817932069427308780,\t0.817960834145346700,\t0.817989596818482600,\t0.818018357446644530,\t\n0.818047116029760990,\t0.818075872567759270,\t0.818104627060567750,\t0.818133379508114710,\t0.818162129910328220,\t0.818190878267136430,\t0.818219624578467420,\t0.818248368844249340,\t\n0.818277111064410920,\t0.818305851238879110,\t0.818334589367582740,\t0.818363325450449870,\t0.818392059487408670,\t0.818420791478387310,\t0.818449521423314060,\t0.818478249322117430,\t\n0.818506975174724700,\t0.818535698981064490,\t0.818564420741065170,\t0.818593140454654590,\t0.818621858121761360,\t0.818650573742313310,\t0.818679287316238960,\t0.818707998843466900,\t\n0.818736708323924200,\t0.818765415757539810,\t0.818794121144241880,\t0.818822824483958710,\t0.818851525776618460,\t0.818880225022149300,\t0.818908922220480170,\t0.818937617371538140,\t\n0.818966310475252150,\t0.818995001531550360,\t0.819023690540361060,\t0.819052377501612640,\t0.819081062415233150,\t0.819109745281150990,\t0.819138426099294990,\t0.819167104869592540,\t\n0.819195781591972150,\t0.819224456266362420,\t0.819253128892691530,\t0.819281799470887860,\t0.819310468000879590,\t0.819339134482595210,\t0.819367798915963560,\t0.819396461300911820,\t\n0.819425121637368910,\t0.819453779925263250,\t0.819482436164523100,\t0.819511090355076850,\t0.819539742496852910,\t0.819568392589780200,\t0.819597040633785910,\t0.819625686628798980,\t\n0.819654330574747900,\t0.819682972471560970,\t0.819711612319166670,\t0.819740250117493300,\t0.819768885866469230,\t0.819797519566023540,\t0.819826151216083490,\t0.819854780816578140,\t\n0.819883408367435780,\t0.819912033868584910,\t0.819940657319953910,\t0.819969278721471300,\t0.819997898073065560,\t0.820026515374665530,\t0.820055130626198720,\t0.820083743827594080,\t\n0.820112354978779990,\t0.820140964079685180,\t0.820169571130237810,\t0.820198176130366610,\t0.820226779080000410,\t0.820255379979066830,\t0.820283978827494710,\t0.820312575625212760,\t\n0.820341170372149260,\t0.820369763068232840,\t0.820398353713392090,\t0.820426942307555420,\t0.820455528850651870,\t0.820484113342609070,\t0.820512695783355840,\t0.820541276172821020,\t\n0.820569854510933010,\t0.820598430797620290,\t0.820627005032811500,\t0.820655577216435670,\t0.820684147348420430,\t0.820712715428694840,\t0.820741281457187500,\t0.820769845433826920,\t\n0.820798407358541700,\t0.820826967231260470,\t0.820855525051911840,\t0.820884080820424860,\t0.820912634536727250,\t0.820941186200747960,\t0.820969735812415720,\t0.820998283371659250,\t\n0.821026828878406940,\t0.821055372332587630,\t0.821083913734129920,\t0.821112453082962880,\t0.821140990379014220,\t0.821169525622213130,\t0.821198058812488090,\t0.821226589949768050,\t\n0.821255119033981410,\t0.821283646065057100,\t0.821312171042924090,\t0.821340693967510190,\t0.821369214838744480,\t0.821397733656555770,\t0.821426250420872810,\t0.821454765131624190,\t\n0.821483277788738640,\t0.821511788392144780,\t0.821540296941772110,\t0.821568803437548120,\t0.821597307879402110,\t0.821625810267262890,\t0.821654310601059200,\t0.821682808880719650,\t\n0.821711305106173070,\t0.821739799277348190,\t0.821768291394174400,\t0.821796781456579310,\t0.821825269464492300,\t0.821853755417842110,\t0.821882239316557570,\t0.821910721160567400,\t\n0.821939200949800440,\t0.821967678684185970,\t0.821996154363651810,\t0.822024627988127250,\t0.822053099557541130,\t0.822081569071822280,\t0.822110036530899420,\t0.822138501934701500,\t\n0.822166965283157470,\t0.822195426576196380,\t0.822223885813746280,\t0.822252342995736460,\t0.822280798122095760,\t0.822309251192753000,\t0.822337702207637240,\t0.822366151166677220,\t\n0.822394598069802200,\t0.822423042916940240,\t0.822451485708020740,\t0.822479926442972520,\t0.822508365121724430,\t0.822536801744205400,\t0.822565236310344390,\t0.822593668820070350,\t\n0.822622099273312650,\t0.822650527669999130,\t0.822678954010059300,\t0.822707378293422000,\t0.822735800520016380,\t0.822764220689771290,\t0.822792638802615550,\t0.822821054858478230,\t\n0.822849468857288820,\t0.822877880798975280,\t0.822906290683466880,\t0.822934698510692900,\t0.822963104280582060,\t0.822991507993063530,\t0.823019909648066260,\t0.823048309245519640,\t\n0.823076706785351830,\t0.823105102267492230,\t0.823133495691869780,\t0.823161887058413640,\t0.823190276367052890,\t0.823218663617716340,\t0.823247048810333170,\t0.823275431944832880,\t\n0.823303813021143420,\t0.823332192039194500,\t0.823360568998915190,\t0.823388943900234320,\t0.823417316743081160,\t0.823445687527384670,\t0.823474056253074460,\t0.823502422920078690,\t\n0.823530787528326760,\t0.823559150077747940,\t0.823587510568271170,\t0.823615868999825640,\t0.823644225372340500,\t0.823672579685744810,\t0.823700931939968070,\t0.823729282134938570,\t\n0.823757630270585790,\t0.823785976346839030,\t0.823814320363627340,\t0.823842662320879770,\t0.823871002218525610,\t0.823899340056493900,\t0.823927675834714270,\t0.823956009553115100,\t\n0.823984341211625780,\t0.824012670810175710,\t0.824040998348693930,\t0.824069323827109620,\t0.824097647245352060,\t0.824125968603350860,\t0.824154287901034180,\t0.824182605138331860,\t\n0.824210920315172960,\t0.824239233431486750,\t0.824267544487202520,\t0.824295853482249430,\t0.824324160416556650,\t0.824352465290054020,\t0.824380768102669690,\t0.824409068854333520,\t\n0.824437367544974650,\t0.824465664174522270,\t0.824493958742905870,\t0.824522251250054410,\t0.824550541695897480,\t0.824578830080364590,\t0.824607116403384130,\t0.824635400664885940,\t\n0.824663682864799190,\t0.824691963003053250,\t0.824720241079577420,\t0.824748517094300970,\t0.824776791047153850,\t0.824805062938064100,\t0.824833332766961690,\t0.824861600533776000,\t\n0.824889866238436300,\t0.824918129880871990,\t0.824946391461012340,\t0.824974650978786640,\t0.825002908434124830,\t0.825031163826955290,\t0.825059417157207760,\t0.825087668424811850,\t\n0.825115917629696600,\t0.825144164771791640,\t0.825172409851026250,\t0.825200652867330350,\t0.825228893820632250,\t0.825257132710861980,\t0.825285369537948840,\t0.825313604301822320,\t\n0.825341837002411820,\t0.825370067639646710,\t0.825398296213456390,\t0.825426522723770820,\t0.825454747170518480,\t0.825482969553629210,\t0.825511189873032620,\t0.825539408128658000,\t\n0.825567624320434850,\t0.825595838448292650,\t0.825624050512160810,\t0.825652260511969490,\t0.825680468447646860,\t0.825708674319123090,\t0.825736878126327680,\t0.825765079869190120,\t\n0.825793279547639810,\t0.825821477161606250,\t0.825849672711019500,\t0.825877866195808160,\t0.825906057615902080,\t0.825934246971230860,\t0.825962434261724110,\t0.825990619487311120,\t\n0.826018802647921710,\t0.826046983743485290,\t0.826075162773931890,\t0.826103339739190030,\t0.826131514639189880,\t0.826159687473860930,\t0.826187858243132790,\t0.826216026946934860,\t\n0.826244193585196960,\t0.826272358157848610,\t0.826300520664819850,\t0.826328681106039300,\t0.826356839481437010,\t0.826384995790942710,\t0.826413150034485790,\t0.826441302211996080,\t\n0.826469452323403080,\t0.826497600368636950,\t0.826525746347626320,\t0.826553890260301350,\t0.826582032106591650,\t0.826610171886426940,\t0.826638309599736720,\t0.826666445246450720,\t\n0.826694578826498550,\t0.826722710339810480,\t0.826750839786315250,\t0.826778967165942790,\t0.826807092478622940,\t0.826835215724285310,\t0.826863336902859740,\t0.826891456014275830,\t\n0.826919573058463750,\t0.826947688035352120,\t0.826975800944871440,\t0.827003911786951210,\t0.827032020561521140,\t0.827060127268511080,\t0.827088231907850640,\t0.827116334479469640,\t\n0.827144434983298370,\t0.827172533419265440,\t0.827200629787301240,\t0.827228724087335500,\t0.827256816319297820,\t0.827284906483118140,\t0.827312994578726310,\t0.827341080606051830,\t\n0.827369164565025290,\t0.827397246455575220,\t0.827425326277632100,\t0.827453404031125660,\t0.827481479715985730,\t0.827509553332142040,\t0.827537624879524540,\t0.827565694358063380,\t\n0.827593761767687620,\t0.827621827108327320,\t0.827649890379912550,\t0.827677951582373010,\t0.827706010715638540,\t0.827734067779639090,\t0.827762122774304500,\t0.827790175699565140,\t\n0.827818226555349760,\t0.827846275341588830,\t0.827874322058212210,\t0.827902366705149830,\t0.827930409282331530,\t0.827958449789687130,\t0.827986488227146710,\t0.828014524594640420,\t\n0.828042558892097440,\t0.828070591119448030,\t0.828098621276622150,\t0.828126649363549740,\t0.828154675380160630,\t0.828182699326384890,\t0.828210721202153000,\t0.828238741007393700,\t\n0.828266758742037480,\t0.828294774406014400,\t0.828322787999254520,\t0.828350799521687550,\t0.828378808973243560,\t0.828406816353852600,\t0.828434821663445060,\t0.828462824901950000,\t\n0.828490826069297910,\t0.828518825165418750,\t0.828546822190242450,\t0.828574817143699180,\t0.828602810025718780,\t0.828630800836231860,\t0.828658789575167590,\t0.828686776242456240,\t\n0.828714760838027860,\t0.828742743361812750,\t0.828770723813740730,\t0.828798702193741850,\t0.828826678501746180,\t0.828854652737684440,\t0.828882624901485450,\t0.828910594993079950,\t\n0.828938563012397990,\t0.828966528959369510,\t0.828994492833924790,\t0.829022454635993890,\t0.829050414365506750,\t0.829078372022394210,\t0.829106327606585090,\t0.829134281118010240,\t\n0.829162232556599710,\t0.829190181922283550,\t0.829218129214991940,\t0.829246074434655030,\t0.829274017581203340,\t0.829301958654566240,\t0.829329897654674130,\t0.829357834581457400,\t\n0.829385769434845990,\t0.829413702214770180,\t0.829441632921160130,\t0.829469561553945910,\t0.829497488113058350,\t0.829525412598426600,\t0.829553335009981300,\t0.829581255347652700,\t\n0.829609173611370880,\t0.829637089801066210,\t0.829665003916668750,\t0.829692915958108790,\t0.829720825925317150,\t0.829748733818222780,\t0.829776639636756630,\t0.829804543380848970,\t\n0.829832445050429860,\t0.829860344645429680,\t0.829888242165778610,\t0.829916137611407480,\t0.829944030982245450,\t0.829971922278223360,\t0.829999811499271490,\t0.830027698645320000,\t\n0.830055583716299390,\t0.830083466712139730,\t0.830111347632771500,\t0.830139226478125320,\t0.830167103248130590,\t0.830194977942718020,\t0.830222850561818100,\t0.830250721105361130,\t\n0.830278589573277270,\t0.830306455965496900,\t0.830334320281950980,\t0.830362182522568660,\t0.830390042687281000,\t0.830417900776018070,\t0.830445756788710580,\t0.830473610725288580,\t\n0.830501462585682580,\t0.830529312369822970,\t0.830557160077640470,\t0.830585005709064570,\t0.830612849264026230,\t0.830640690742455830,\t0.830668530144283660,\t0.830696367469440090,\t\n0.830724202717855630,\t0.830752035889460670,\t0.830779866984186150,\t0.830807696001961470,\t0.830835522942717450,\t0.830863347806384710,\t0.830891170592893640,\t0.830918991302174610,\t\n0.830946809934158040,\t0.830974626488774960,\t0.831002440965954880,\t0.831030253365628640,\t0.831058063687726830,\t0.831085871932179750,\t0.831113678098918120,\t0.831141482187872200,\t\n0.831169284198972620,\t0.831197084132150320,\t0.831224881987334800,\t0.831252677764457100,\t0.831280471463447750,\t0.831308263084237110,\t0.831336052626755920,\t0.831363840090934560,\t\n0.831391625476703530,\t0.831419408783994010,\t0.831447190012735480,\t0.831474969162858900,\t0.831502746234294990,\t0.831530521226974130,\t0.831558294140827050,\t0.831586064975784130,\t\n0.831613833731776660,\t0.831641600408734030,\t0.831669365006587390,\t0.831697127525267370,\t0.831724887964704560,\t0.831752646324829480,\t0.831780402605572840,\t0.831808156806865150,\t\n0.831835908928637570,\t0.831863658970819820,\t0.831891406933342740,\t0.831919152816137260,\t0.831946896619133900,\t0.831974638342263260,\t0.832002377985456070,\t0.832030115548643370,\t\n0.832057851031754890,\t0.832085584434721800,\t0.832113315757474830,\t0.832141044999944460,\t0.832168772162061530,\t0.832196497243756660,\t0.832224220244960570,\t0.832251941165604410,\t\n0.832279660005617820,\t0.832307376764932160,\t0.832335091443478060,\t0.832362804041186230,\t0.832390514557987400,\t0.832418222993812300,\t0.832445929348591520,\t0.832473633622256570,\t\n0.832501335814736950,\t0.832529035925964060,\t0.832556733955868490,\t0.832584429904381080,\t0.832612123771432680,\t0.832639815556953990,\t0.832667505260876180,\t0.832695192883129100,\t\n0.832722878423644120,\t0.832750561882351860,\t0.832778243259183260,\t0.832805922554069040,\t0.832833599766939940,\t0.832861274897726990,\t0.832888947946361260,\t0.832916618912772690,\t\n0.832944287796892450,\t0.832971954598651590,\t0.832999619317980830,\t0.833027281954811130,\t0.833054942509073080,\t0.833082600980698200,\t0.833110257369616410,\t0.833137911675758900,\t\n0.833165563899056600,\t0.833193214039440360,\t0.833220862096841210,\t0.833248508071189780,\t0.833276151962417110,\t0.833303793770454600,\t0.833331433495232090,\t0.833359071136681060,\t\n0.833386706694732250,\t0.833414340169316700,\t0.833441971560365370,\t0.833469600867809080,\t0.833497228091578670,\t0.833524853231605740,\t0.833552476287820250,\t0.833580097260153590,\t\n0.833607716148536570,\t0.833635332952900380,\t0.833662947673175840,\t0.833690560309293890,\t0.833718170861186050,\t0.833745779328782240,\t0.833773385712013980,\t0.833800990010812320,\t\n0.833828592225108190,\t0.833856192354832550,\t0.833883790399916450,\t0.833911386360290830,\t0.833938980235887310,\t0.833966572026635710,\t0.833994161732467880,\t0.834021749353314520,\t\n0.834049334889106710,\t0.834076918339775710,\t0.834104499705252360,\t0.834132078985467820,\t0.834159656180353480,\t0.834187231289839510,\t0.834214804313857530,\t0.834242375252338460,\t\n0.834269944105213490,\t0.834297510872413770,\t0.834325075553870140,\t0.834352638149514330,\t0.834380198659276480,\t0.834407757083088120,\t0.834435313420880290,\t0.834462867672584260,\t\n0.834490419838131100,\t0.834517969917451750,\t0.834545517910477600,\t0.834573063817140140,\t0.834600607637369430,\t0.834628149371097310,\t0.834655689018254710,\t0.834683226578773030,\t\n0.834710762052583210,\t0.834738295439616420,\t0.834765826739804480,\t0.834793355953077460,\t0.834820883079366970,\t0.834848408118604390,\t0.834875931070720670,\t0.834903451935647300,\t\n0.834930970713315120,\t0.834958487403655640,\t0.834986002006600340,\t0.835013514522079610,\t0.835041024950025080,\t0.835068533290367900,\t0.835096039543039460,\t0.835123543707970930,\t\n0.835151045785093580,\t0.835178545774338590,\t0.835206043675637670,\t0.835233539488921210,\t0.835261033214120820,\t0.835288524851167890,\t0.835316014399993700,\t0.835343501860529410,\t\n0.835370987232706420,\t0.835398470516456440,\t0.835425951711709750,\t0.835453430818398290,\t0.835480907836453120,\t0.835508382765805750,\t0.835535855606387430,\t0.835563326358129470,\t\n0.835590795020963120,\t0.835618261594820330,\t0.835645726079631390,\t0.835673188475328230,\t0.835700648781841910,\t0.835728106999104160,\t0.835755563127046020,\t0.835783017165599000,\t\n0.835810469114694480,\t0.835837918974264180,\t0.835865366744238720,\t0.835892812424549710,\t0.835920256015128760,\t0.835947697515907140,\t0.835975136926816240,\t0.836002574247787570,\t\n0.836030009478752940,\t0.836057442619642770,\t0.836084873670388970,\t0.836112302630923070,\t0.836139729501176430,\t0.836167154281080350,\t0.836194576970566430,\t0.836221997569566060,\t\n0.836249416078011290,\t0.836276832495832290,\t0.836304246822961340,\t0.836331659059329820,\t0.836359069204869020,\t0.836386477259510650,\t0.836413883223186110,\t0.836441287095827210,\t\n0.836468688877364700,\t0.836496088567730500,\t0.836523486166856010,\t0.836550881674672840,\t0.836578275091112490,\t0.836605666416106340,\t0.836633055649586120,\t0.836660442791483770,\t\n0.836687827841729790,\t0.836715210800256240,\t0.836742591666994720,\t0.836769970441876620,\t0.836797347124833670,\t0.836824721715797250,\t0.836852094214699080,\t0.836879464621471230,\t\n0.836906832936044180,\t0.836934199158350100,\t0.836961563288320390,\t0.836988925325886870,\t0.837016285270981040,\t0.837043643123534520,\t0.837070998883479240,\t0.837098352550746160,\t\n0.837125704125267100,\t0.837153053606973780,\t0.837180400995797820,\t0.837207746291670940,\t0.837235089494524630,\t0.837262430604290510,\t0.837289769620900960,\t0.837317106544286370,\t\n0.837344441374379130,\t0.837371774111110740,\t0.837399104754412930,\t0.837426433304217290,\t0.837453759760455550,\t0.837481084123059550,\t0.837508406391961220,\t0.837535726567091410,\t\n0.837563044648382270,\t0.837590360635765530,\t0.837617674529172910,\t0.837644986328536120,\t0.837672296033786900,\t0.837699603644857290,\t0.837726909161678250,\t0.837754212584181920,\t\n0.837781513912300160,\t0.837808813145964560,\t0.837836110285106850,\t0.837863405329658970,\t0.837890698279552540,\t0.837917989134719820,\t0.837945277895091660,\t0.837972564560600320,\t\n0.837999849131177530,\t0.838027131606755130,\t0.838054411987264940,\t0.838081690272638680,\t0.838108966462808750,\t0.838136240557705860,\t0.838163512557262400,\t0.838190782461410100,\t\n0.838218050270080890,\t0.838245315983206510,\t0.838272579600718880,\t0.838299841122549850,\t0.838327100548631580,\t0.838354357878895120,\t0.838381613113272860,\t0.838408866251696530,\t\n0.838436117294097950,\t0.838463366240409070,\t0.838490613090561940,\t0.838517857844488070,\t0.838545100502120170,\t0.838572341063389070,\t0.838599579528227060,\t0.838626815896566070,\t\n0.838654050168338050,\t0.838681282343474940,\t0.838708512421908580,\t0.838735740403571460,\t0.838762966288394530,\t0.838790190076310060,\t0.838817411767250220,\t0.838844631361146840,\t\n0.838871848857931870,\t0.838899064257537350,\t0.838926277559895020,\t0.838953488764937580,\t0.838980697872595990,\t0.839007904882802520,\t0.839035109795489340,\t0.839062312610588390,\t\n0.839089513328031720,\t0.839116711947751170,\t0.839143908469678900,\t0.839171102893747410,\t0.839198295219887540,\t0.839225485448031990,\t0.839252673578112730,\t0.839279859610061800,\t\n0.839307043543811250,\t0.839334225379293030,\t0.839361405116439750,\t0.839388582755182470,\t0.839415758295453670,\t0.839442931737185650,\t0.839470103080310110,\t0.839497272324759460,\t\n0.839524439470465510,\t0.839551604517360550,\t0.839578767465376960,\t0.839605928314446140,\t0.839633087064500350,\t0.839660243715471880,\t0.839687398267292770,\t0.839714550719895200,\t\n0.839741701073211330,\t0.839768849327173550,\t0.839795995481713240,\t0.839823139536763020,\t0.839850281492254820,\t0.839877421348120930,\t0.839904559104293510,\t0.839931694760704730,\t\n0.839958828317286740,\t0.839985959773972060,\t0.840013089130692060,\t0.840040216387379360,\t0.840067341543966120,\t0.840094464600384390,\t0.840121585556566690,\t0.840148704412444940,\t\n0.840175821167951420,\t0.840202935823018750,\t0.840230048377578420,\t0.840257158831562820,\t0.840284267184904450,\t0.840311373437535370,\t0.840338477589387840,\t0.840365579640394160,\t\n0.840392679590486910,\t0.840419777439597620,\t0.840446873187658760,\t0.840473966834602740,\t0.840501058380361820,\t0.840528147824868290,\t0.840555235168054420,\t0.840582320409852370,\t\n0.840609403550195090,\t0.840636484589013740,\t0.840663563526241160,\t0.840690640361809740,\t0.840717715095651740,\t0.840744787727699450,\t0.840771858257885140,\t0.840798926686141650,\t\n0.840825993012400460,\t0.840853057236594200,\t0.840880119358655250,\t0.840907179378516110,\t0.840934237296109060,\t0.840961293111366250,\t0.840988346824220300,\t0.841015398434603930,\t\n0.841042447942448650,\t0.841069495347687270,\t0.841096540650252080,\t0.841123583850075570,\t0.841150624947090030,\t0.841177663941228060,\t0.841204700832421830,\t0.841231735620604380,\t\n0.841258768305707120,\t0.841285798887662860,\t0.841312827366404110,\t0.841339853741863370,\t0.841366878013972920,\t0.841393900182665360,\t0.841420920247873520,\t0.841447938209528790,\t\n0.841474954067564340,\t0.841501967821912440,\t0.841528979472505600,\t0.841555989019276420,\t0.841582996462157170,\t0.841610001801080480,\t0.841637005035979160,\t0.841664006166784940,\t\n0.841691005193430760,\t0.841718002115849020,\t0.841744996933972200,\t0.841771989647732920,\t0.841798980257063680,\t0.841825968761897080,\t0.841852955162165960,\t0.841879939457801930,\t\n0.841906921648738150,\t0.841933901734906900,\t0.841960879716241010,\t0.841987855592672970,\t0.842014829364135190,\t0.842041801030560920,\t0.842068770591881570,\t0.842095738048030400,\t\n0.842122703398939800,\t0.842149666644542490,\t0.842176627784770980,\t0.842203586819557870,\t0.842230543748835880,\t0.842257498572537950,\t0.842284451290595810,\t0.842311401902942510,\t\n0.842338350409510770,\t0.842365296810233090,\t0.842392241105042180,\t0.842419183293870670,\t0.842446123376651700,\t0.842473061353317010,\t0.842499997223799530,\t0.842526930988032220,\t\n0.842553862645947450,\t0.842580792197478060,\t0.842607719642556650,\t0.842634644981116070,\t0.842661568213089240,\t0.842688489338408010,\t0.842715408357005540,\t0.842742325268814650,\t\n0.842769240073767860,\t0.842796152771797980,\t0.842823063362837850,\t0.842849971846819870,\t0.842876878223677520,\t0.842903782493342520,\t0.842930684655748050,\t0.842957584710826820,\t\n0.842984482658511780,\t0.843011378498735310,\t0.843038272231430570,\t0.843065163856530630,\t0.843092053373967200,\t0.843118940783673660,\t0.843145826085582750,\t0.843172709279627400,\t\n0.843199590365740100,\t0.843226469343853920,\t0.843253346213901580,\t0.843280220975816340,\t0.843307093629530050,\t0.843333964174976080,\t0.843360832612087160,\t0.843387698940796130,\t\n0.843414563161035910,\t0.843441425272739240,\t0.843468285275839060,\t0.843495143170268520,\t0.843521998955959810,\t0.843548852632845960,\t0.843575704200860030,\t0.843602553659934860,\t\n0.843629401010003390,\t0.843656246250998330,\t0.843683089382853080,\t0.843709930405499690,\t0.843736769318871430,\t0.843763606122901360,\t0.843790440817522190,\t0.843817273402666880,\t\n0.843844103878268470,\t0.843870932244259690,\t0.843897758500574140,\t0.843924582647143760,\t0.843951404683901840,\t0.843978224610781420,\t0.844005042427715460,\t0.844031858134636880,\t\n0.844058671731478750,\t0.844085483218174340,\t0.844112292594655700,\t0.844139099860856330,\t0.844165905016709290,\t0.844192708062147410,\t0.844219508997103850,\t0.844246307821511440,\t\n0.844273104535303350,\t0.844299899138412860,\t0.844326691630772230,\t0.844353482012314860,\t0.844380270282973690,\t0.844407056442681990,\t0.844433840491372490,\t0.844460622428978570,\t\n0.844487402255432950,\t0.844514179970669350,\t0.844540955574619830,\t0.844567729067217890,\t0.844594500448396680,\t0.844621269718089260,\t0.844648036876228580,\t0.844674801922747800,\t\n0.844701564857580520,\t0.844728325680658920,\t0.844755084391916380,\t0.844781840991286170,\t0.844808595478701460,\t0.844835347854095090,\t0.844862098117400540,\t0.844888846268550650,\t\n0.844915592307479040,\t0.844942336234118070,\t0.844969078048401270,\t0.844995817750261780,\t0.845022555339632660,\t0.845049290816447200,\t0.845076024180638540,\t0.845102755432139750,\t\n0.845129484570884660,\t0.845156211596805320,\t0.845182936509835450,\t0.845209659309908210,\t0.845236379996956890,\t0.845263098570914530,\t0.845289815031714520,\t0.845316529379290360,\t\n0.845343241613574440,\t0.845369951734500470,\t0.845396659742001510,\t0.845423365636011060,\t0.845450069416462060,\t0.845476771083287890,\t0.845503470636421840,\t0.845530168075797620,\t\n0.845556863401347500,\t0.845583556613005110,\t0.845610247710703920,\t0.845636936694377120,\t0.845663623563957970,\t0.845690308319379750,\t0.845716990960576180,\t0.845743671487479750,\t\n0.845770349900024090,\t0.845797026198142570,\t0.845823700381768460,\t0.845850372450835160,\t0.845877042405275840,\t0.845903710245023980,\t0.845930375970013300,\t0.845957039580176210,\t\n0.845983701075446510,\t0.846010360455757620,\t0.846037017721042780,\t0.846063672871235410,\t0.846090325906268870,\t0.846116976826076450,\t0.846143625630592090,\t0.846170272319748170,\t\n0.846196916893478650,\t0.846223559351716780,\t0.846250199694396080,\t0.846276837921449810,\t0.846303474032811480,\t0.846330108028414910,\t0.846356739908192600,\t0.846383369672078390,\t\n0.846409997320005880,\t0.846436622851908240,\t0.846463246267719180,\t0.846489867567371880,\t0.846516486750800050,\t0.846543103817937400,\t0.846569718768716450,\t0.846596331603071350,\t\n0.846622942320935270,\t0.846649550922241920,\t0.846676157406924700,\t0.846702761774916990,\t0.846729364026152510,\t0.846755964160565090,\t0.846782562178087120,\t0.846809158078652870,\t\n0.846835751862195730,\t0.846862343528649200,\t0.846888933077946770,\t0.846915520510022060,\t0.846942105824809000,\t0.846968689022240210,\t0.846995270102249730,\t0.847021849064771070,\t\n0.847048425909737720,\t0.847075000637083410,\t0.847101573246741510,\t0.847128143738645640,\t0.847154712112729970,\t0.847181278368926980,\t0.847207842507170850,\t0.847234404527395180,\t\n0.847260964429533360,\t0.847287522213519220,\t0.847314077879286250,\t0.847340631426768520,\t0.847367182855898740,\t0.847393732166611070,\t0.847420279358839010,\t0.847446824432516290,\t\n0.847473367387576500,\t0.847499908223953270,\t0.847526446941580300,\t0.847552983540391660,\t0.847579518020320170,\t0.847606050381299770,\t0.847632580623264300,\t0.847659108746147360,\t\n0.847685634749882680,\t0.847712158634403860,\t0.847738680399644730,\t0.847765200045539240,\t0.847791717572020430,\t0.847818232979022260,\t0.847844746266478430,\t0.847871257434322790,\t\n0.847897766482489050,\t0.847924273410910920,\t0.847950778219522470,\t0.847977280908256640,\t0.848003781477047690,\t0.848030279925829240,\t0.848056776254535020,\t0.848083270463098950,\t\n0.848109762551454650,\t0.848136252519535950,\t0.848162740367277120,\t0.848189226094610890,\t0.848215709701471750,\t0.848242191187793200,\t0.848268670553509190,\t0.848295147798553530,\t\n0.848321622922860060,\t0.848348095926362960,\t0.848374566808995030,\t0.848401035570690800,\t0.848427502211383970,\t0.848453966731008480,\t0.848480429129497950,\t0.848506889406786310,\t\n0.848533347562807520,\t0.848559803597495830,\t0.848586257510784200,\t0.848612709302606900,\t0.848639158972897770,\t0.848665606521590730,\t0.848692051948619740,\t0.848718495253918630,\t\n0.848744936437421330,\t0.848771375499062010,\t0.848797812438773950,\t0.848824247256491190,\t0.848850679952147910,\t0.848877110525677940,\t0.848903538977015090,\t0.848929965306093550,\t\n0.848956389512847460,\t0.848982811597209900,\t0.849009231559115450,\t0.849035649398497850,\t0.849062065115291030,\t0.849088478709429160,\t0.849114890180846070,\t0.849141299529475700,\t\n0.849167706755252660,\t0.849194111858109780,\t0.849220514837981670,\t0.849246915694802260,\t0.849273314428505620,\t0.849299711039025680,\t0.849326105526296390,\t0.849352497890251910,\t\n0.849378888130826630,\t0.849405276247953590,\t0.849431662241567410,\t0.849458046111602140,\t0.849484427857991610,\t0.849510807480670200,\t0.849537184979571650,\t0.849563560354630540,\t\n0.849589933605780170,\t0.849616304732955020,\t0.849642673736089040,\t0.849669040615116280,\t0.849695405369971010,\t0.849721768000587300,\t0.849748128506899070,\t0.849774486888841050,\t\n0.849800843146346300,\t0.849827197279349410,\t0.849853549287784560,\t0.849879899171585910,\t0.849906246930687390,\t0.849932592565023400,\t0.849958936074528220,\t0.849985277459135320,\t\n0.850011616718779230,\t0.850037953853394090,\t0.850064288862914070,\t0.850090621747273350,\t0.850116952506406070,\t0.850143281140246400,\t0.850169607648728950,\t0.850195932031787120,\t\n0.850222254289355380,\t0.850248574421368030,\t0.850274892427759220,\t0.850301208308463230,\t0.850327522063414110,\t0.850353833692546250,\t0.850380143195794360,\t0.850406450573091500,\t\n0.850432755824372610,\t0.850459058949571860,\t0.850485359948623400,\t0.850511658821461510,\t0.850537955568020480,\t0.850564250188235120,\t0.850590542682038600,\t0.850616833049365750,\t\n0.850643121290150740,\t0.850669407404327950,\t0.850695691391831770,\t0.850721973252596240,\t0.850748252986555760,\t0.850774530593645160,\t0.850800806073797820,\t0.850827079426948350,\t\n0.850853350653031250,\t0.850879619751980790,\t0.850905886723731240,\t0.850932151568217000,\t0.850958414285372440,\t0.850984674875132190,\t0.851010933337429830,\t0.851037189672200210,\t\n0.851063443879377490,\t0.851089695958896280,\t0.851115945910690730,\t0.851142193734695460,\t0.851168439430844970,\t0.851194682999073080,\t0.851220924439314410,\t0.851247163751503440,\t\n0.851273400935574580,\t0.851299635991462190,\t0.851325868919100780,\t0.851352099718424630,\t0.851378328389368670,\t0.851404554931866510,\t0.851430779345852870,\t0.851457001631262370,\t\n0.851483221788029270,\t0.851509439816088180,\t0.851535655715373490,\t0.851561869485820130,\t0.851588081127361620,\t0.851614290639932880,\t0.851640498023468420,\t0.851666703277902730,\t\n0.851692906403170300,\t0.851719107399205640,\t0.851745306265943140,\t0.851771503003317830,\t0.851797697611263340,\t0.851823890089714600,\t0.851850080438606220,\t0.851876268657872470,\t\n0.851902454747448190,\t0.851928638707267650,\t0.851954820537265680,\t0.851981000237377000,\t0.852007177807535320,\t0.852033353247675820,\t0.852059526557732870,\t0.852085697737641090,\t\n0.852111866787335080,\t0.852138033706749340,\t0.852164198495819040,\t0.852190361154477770,\t0.852216521682660710,\t0.852242680080302240,\t0.852268836347337080,\t0.852294990483699830,\t\n0.852321142489325110,\t0.852347292364147520,\t0.852373440108102120,\t0.852399585721122730,\t0.852425729203144300,\t0.852451870554101650,\t0.852478009773929290,\t0.852504146862561930,\t\n0.852530281819934180,\t0.852556414645980640,\t0.852582545340636600,\t0.852608673903835770,\t0.852634800335513200,\t0.852660924635603610,\t0.852687046804041730,\t0.852713166840762260,\t\n0.852739284745699930,\t0.852765400518789800,\t0.852791514159965680,\t0.852817625669162750,\t0.852843735046315830,\t0.852869842291359540,\t0.852895947404228580,\t0.852922050384857800,\t\n0.852948151233181910,\t0.852974249949136070,\t0.853000346532654220,\t0.853026440983671420,\t0.853052533302122610,\t0.853078623487942390,\t0.853104711541065600,\t0.853130797461427060,\t\n0.853156881248962050,\t0.853182962903604290,\t0.853209042425289170,\t0.853235119813951390,\t0.853261195069525910,\t0.853287268191947330,\t0.853313339181150710,\t0.853339408037070650,\t\n0.853365474759642530,\t0.853391539348800300,\t0.853417601804479120,\t0.853443662126614040,\t0.853469720315139790,\t0.853495776369991190,\t0.853521830291103180,\t0.853547882078410700,\t\n0.853573931731848810,\t0.853599979251351780,\t0.853626024636854660,\t0.853652067888292510,\t0.853678109005600260,\t0.853704147988712750,\t0.853730184837564800,\t0.853756219552091800,\t\n0.853782252132227910,\t0.853808282577908310,\t0.853834310889068140,\t0.853860337065642020,\t0.853886361107565110,\t0.853912383014772350,\t0.853938402787198570,\t0.853964420424779270,\t\n0.853990435927448500,\t0.854016449295141530,\t0.854042460527793530,\t0.854068469625339330,\t0.854094476587713980,\t0.854120481414852530,\t0.854146484106689810,\t0.854172484663161310,\t\n0.854198483084201100,\t0.854224479369744770,\t0.854250473519727160,\t0.854276465534083430,\t0.854302455412748520,\t0.854328443155657480,\t0.854354428762745700,\t0.854380412233947560,\t\n0.854406393569198230,\t0.854432372768432980,\t0.854458349831586860,\t0.854484324758594820,\t0.854510297549391900,\t0.854536268203913370,\t0.854562236722094530,\t0.854588203103869630,\t\n0.854614167349174280,\t0.854640129457943430,\t0.854666089430112350,\t0.854692047265615980,\t0.854718002964389600,\t0.854743956526368590,\t0.854769907951487220,\t0.854795857239681100,\t\n0.854821804390885290,\t0.854847749405035050,\t0.854873692282065440,\t0.854899633021911520,\t0.854925571624508550,\t0.854951508089792140,\t0.854977442417696460,\t0.855003374608157230,\t\n0.855029304661109490,\t0.855055232576488520,\t0.855081158354229490,\t0.855107081994267550,\t0.855133003496537870,\t0.855158922860976280,\t0.855184840087516720,\t0.855210755176095240,\t\n0.855236668126646780,\t0.855262578939106620,\t0.855288487613410030,\t0.855314394149492290,\t0.855340298547288990,\t0.855366200806734530,\t0.855392100927764520,\t0.855417998910314230,\t\n0.855443894754318920,\t0.855469788459713890,\t0.855495680026434500,\t0.855521569454415820,\t0.855547456743593670,\t0.855573341893902440,\t0.855599224905277840,\t0.855625105777655160,\t\n0.855650984510969770,\t0.855676861105156950,\t0.855702735560151860,\t0.855728607875890450,\t0.855754478052307090,\t0.855780346089337510,\t0.855806211986917090,\t0.855832075744981100,\t\n0.855857937363464940,\t0.855883796842303870,\t0.855909654181433390,\t0.855935509380789220,\t0.855961362440305850,\t0.855987213359919010,\t0.856013062139564180,\t0.856038908779176650,\t\n0.856064753278691910,\t0.856090595638045240,\t0.856116435857172120,\t0.856142273936008390,\t0.856168109874488440,\t0.856193943672548310,\t0.856219775330123170,\t0.856245604847148730,\t\n0.856271432223560170,\t0.856297257459293190,\t0.856323080554283410,\t0.856348901508465430,\t0.856374720321775310,\t0.856400536994148310,\t0.856426351525520050,\t0.856452163915825790,\t\n0.856477974165001150,\t0.856503782272981630,\t0.856529588239703150,\t0.856555392065100120,\t0.856581193749108680,\t0.856606993291664230,\t0.856632790692702370,\t0.856658585952158490,\t\n0.856684379069968080,\t0.856710170046066870,\t0.856735958880390560,\t0.856761745572873990,\t0.856787530123452990,\t0.856813312532063160,\t0.856839092798640010,\t0.856864870923119250,\t\n0.856890646905436260,\t0.856916420745527100,\t0.856942192443326370,\t0.856967961998770230,\t0.856993729411794190,\t0.857019494682333850,\t0.857045257810324700,\t0.857071018795702470,\t\n0.857096777638402640,\t0.857122534338361390,\t0.857148288895513310,\t0.857174041309794470,\t0.857199791581140570,\t0.857225539709487230,\t0.857251285694769940,\t0.857277029536924530,\t\n0.857302771235886940,\t0.857328510791592000,\t0.857354248203975770,\t0.857379983472973950,\t0.857405716598522160,\t0.857431447580556010,\t0.857457176419011310,\t0.857482903113823690,\t\n0.857508627664929190,\t0.857534350072262750,\t0.857560070335760430,\t0.857585788455357820,\t0.857611504430990880,\t0.857637218262595090,\t0.857662929950106290,\t0.857688639493460190,\t\n0.857714346892592850,\t0.857740052147439310,\t0.857765755257935520,\t0.857791456224017420,\t0.857817155045620730,\t0.857842851722681040,\t0.857868546255134310,\t0.857894238642916580,\t\n0.857919928885962910,\t0.857945616984209350,\t0.857971302937591720,\t0.857996986746045850,\t0.858022668409507580,\t0.858048347927912620,\t0.858074025301196700,\t0.858099700529296290,\t\n0.858125373612146140,\t0.858151044549682500,\t0.858176713341841310,\t0.858202379988558310,\t0.858228044489769300,\t0.858253706845410250,\t0.858279367055416960,\t0.858305025119725620,\t\n0.858330681038271370,\t0.858356334810990380,\t0.858381986437818490,\t0.858407635918691740,\t0.858433283253545730,\t0.858458928442316640,\t0.858484571484940730,\t0.858510212381352830,\t\n0.858535851131489450,\t0.858561487735286510,\t0.858587122192679740,\t0.858612754503605190,\t0.858638384667998800,\t0.858664012685796400,\t0.858689638556934360,\t0.858715262281347870,\t\n0.858740883858973290,\t0.858766503289746350,\t0.858792120573603210,\t0.858817735710479810,\t0.858843348700311980,\t0.858868959543036330,\t0.858894568238587790,\t0.858920174786902860,\t\n0.858945779187917480,\t0.858971381441567590,\t0.858996981547789250,\t0.859022579506518500,\t0.859048175317691290,\t0.859073768981244100,\t0.859099360497112110,\t0.859124949865231580,\t\n0.859150537085538790,\t0.859176122157969570,\t0.859201705082460080,\t0.859227285858946370,\t0.859252864487364380,\t0.859278440967650710,\t0.859304015299740540,\t0.859329587483570250,\t\n0.859355157519075990,\t0.859380725406193920,\t0.859406291144860000,\t0.859431854735010270,\t0.859457416176581450,\t0.859482975469508580,\t0.859508532613728280,\t0.859534087609176710,\t\n0.859559640455789920,\t0.859585191153503960,\t0.859610739702255100,\t0.859636286101979290,\t0.859661830352613340,\t0.859687372454092210,\t0.859712912406352730,\t0.859738450209331040,\t\n0.859763985862963100,\t0.859789519367185280,\t0.859815050721933650,\t0.859840579927144360,\t0.859866106982754120,\t0.859891631888698100,\t0.859917154644913030,\t0.859942675251335160,\t\n0.859968193707900450,\t0.859993710014545390,\t0.860019224171205910,\t0.860044736177818960,\t0.860070246034319700,\t0.860095753740644730,\t0.860121259296730440,\t0.860146762702513000,\t\n0.860172263957928670,\t0.860197763062913620,\t0.860223260017404230,\t0.860248754821337110,\t0.860274247474647650,\t0.860299737977272550,\t0.860325226329148210,\t0.860350712530210670,\t\n0.860376196580396440,\t0.860401678479641660,\t0.860427158227883180,\t0.860452635825056380,\t0.860478111271097970,\t0.860503584565944220,\t0.860529055709531530,\t0.860554524701796280,\t\n0.860579991542674620,\t0.860605456232103050,\t0.860630918770018180,\t0.860656379156355620,\t0.860681837391052200,\t0.860707293474044180,\t0.860732747405267840,\t0.860758199184659680,\t\n0.860783648812155970,\t0.860809096287693200,\t0.860834541611208090,\t0.860859984782636150,\t0.860885425801914290,\t0.860910864668978930,\t0.860936301383766310,\t0.860961735946212950,\t\n0.860987168356255330,\t0.861012598613830170,\t0.861038026718873080,\t0.861063452671321010,\t0.861088876471110210,\t0.861114298118177190,\t0.861139717612458440,\t0.861165134953890470,\t\n0.861190550142409640,\t0.861215963177952790,\t0.861241374060455640,\t0.861266782789855130,\t0.861292189366087650,\t0.861317593789089560,\t0.861342996058797610,\t0.861368396175148150,\t\n0.861393794138077710,\t0.861419189947523200,\t0.861444583603420240,\t0.861469975105705890,\t0.861495364454316630,\t0.861520751649188840,\t0.861546136690259260,\t0.861571519577464360,\t\n0.861596900310740990,\t0.861622278890025070,\t0.861647655315253340,\t0.861673029586362490,\t0.861698401703289150,\t0.861723771665969700,\t0.861749139474340840,\t0.861774505128339200,\t\n0.861799868627901700,\t0.861825229972964070,\t0.861850589163463350,\t0.861875946199336160,\t0.861901301080519210,\t0.861926653806948880,\t0.861952004378562010,\t0.861977352795295530,\t\n0.862002699057085150,\t0.862028043163868160,\t0.862053385115580940,\t0.862078724912160310,\t0.862104062553542880,\t0.862129398039665260,\t0.862154731370464280,\t0.862180062545876760,\t\n0.862205391565838640,\t0.862230718430287090,\t0.862256043139158820,\t0.862281365692390330,\t0.862306686089918450,\t0.862332004331679890,\t0.862357320417611260,\t0.862382634347649830,\t\n0.862407946121731330,\t0.862433255739793010,\t0.862458563201771610,\t0.862483868507603610,\t0.862509171657226070,\t0.862534472650575590,\t0.862559771487589440,\t0.862585068168203350,\t\n0.862610362692354580,\t0.862635655059979860,\t0.862660945271016110,\t0.862686233325399840,\t0.862711519223068100,\t0.862736802963957610,\t0.862762084548005400,\t0.862787363975147660,\t\n0.862812641245321530,\t0.862837916358463740,\t0.862863189314511110,\t0.862888460113400590,\t0.862913728755068890,\t0.862938995239452830,\t0.862964259566489810,\t0.862989521736115650,\t\n0.863014781748267730,\t0.863040039602882780,\t0.863065295299897840,\t0.863090548839249520,\t0.863115800220874860,\t0.863141049444711260,\t0.863166296510694540,\t0.863191541418761980,\t\n0.863216784168850610,\t0.863242024760897400,\t0.863267263194839040,\t0.863292499470612480,\t0.863317733588154780,\t0.863342965547403090,\t0.863368195348293570,\t0.863393422990763600,\t\n0.863418648474750030,\t0.863443871800189780,\t0.863469092967020010,\t0.863494311975177340,\t0.863519528824599480,\t0.863544743515222260,\t0.863569956046983280,\t0.863595166419819260,\t\n0.863620374633667480,\t0.863645580688464640,\t0.863670784584147920,\t0.863695986320654250,\t0.863721185897921020,\t0.863746383315884380,\t0.863771578574481720,\t0.863796771673650210,\t\n0.863821962613326780,\t0.863847151393448360,\t0.863872338013952130,\t0.863897522474775030,\t0.863922704775854530,\t0.863947884917126930,\t0.863973062898529600,\t0.863998238719999480,\t\n0.864023412381473950,\t0.864048583882889740,\t0.864073753224184120,\t0.864098920405294570,\t0.864124085426157260,\t0.864149248286709800,\t0.864174408986889130,\t0.864199567526632520,\t\n0.864224723905876900,\t0.864249878124559560,\t0.864275030182617420,\t0.864300180079988320,\t0.864325327816608200,\t0.864350473392414780,\t0.864375616807345090,\t0.864400758061336540,\t\n0.864425897154325940,\t0.864451034086250680,\t0.864476168857048250,\t0.864501301466654940,\t0.864526431915008440,\t0.864551560202045820,\t0.864576686327704240,\t0.864601810291921070,\t\n0.864626932094633260,\t0.864652051735778190,\t0.864677169215293470,\t0.864702284533115260,\t0.864727397689181390,\t0.864752508683429120,\t0.864777617515795400,\t0.864802724186217840,\t\n0.864827828694633370,\t0.864852931040979270,\t0.864878031225193360,\t0.864903129247211910,\t0.864928225106972650,\t0.864953318804412840,\t0.864978410339469650,\t0.865003499712080570,\t\n0.865028586922182650,\t0.865053671969713720,\t0.865078754854610170,\t0.865103835576809700,\t0.865128914136249700,\t0.865153990532867350,\t0.865179064766600110,\t0.865204136837385170,\t\n0.865229206745159910,\t0.865254274489862030,\t0.865279340071428040,\t0.865304403489795650,\t0.865329464744902350,\t0.865354523836685320,\t0.865379580765082030,\t0.865404635530029780,\t\n0.865429688131465810,\t0.865454738569328200,\t0.865479786843553310,\t0.865504832954078870,\t0.865529876900842490,\t0.865554918683781200,\t0.865579958302832850,\t0.865604995757934480,\t\n0.865630031049024030,\t0.865655064176038100,\t0.865680095138914530,\t0.865705123937590690,\t0.865730150572004090,\t0.865755175042092100,\t0.865780197347792100,\t0.865805217489041710,\t\n0.865830235465778640,\t0.865855251277939610,\t0.865880264925462440,\t0.865905276408284520,\t0.865930285726343450,\t0.865955292879576730,\t0.865980297867921740,\t0.866005300691316430,\t\n0.866030301349697500,\t0.866055299843002780,\t0.866080296171169770,\t0.866105290334135970,\t0.866130282331839090,\t0.866155272164216390,\t0.866180259831205610,\t0.866205245332744460,\t\n0.866230228668769860,\t0.866255209839219660,\t0.866280188844031570,\t0.866305165683142860,\t0.866330140356491250,\t0.866355112864014340,\t0.866380083205649630,\t0.866405051381335170,\t\n0.866430017391007560,\t0.866454981234604960,\t0.866479942912064980,\t0.866504902423325010,\t0.866529859768322860,\t0.866554814946996040,\t0.866579767959282710,\t0.866604718805119360,\t\n0.866629667484444370,\t0.866654613997195120,\t0.866679558343309340,\t0.866704500522724740,\t0.866729440535378810,\t0.866754378381209280,\t0.866779314060154290,\t0.866804247572150470,\t\n0.866829178917136180,\t0.866854108095048810,\t0.866879035105826310,\t0.866903959949406170,\t0.866928882625725980,\t0.866953803134723810,\t0.866978721476337480,\t0.867003637650503810,\t\n0.867028551657161200,\t0.867053463496247120,\t0.867078373167699420,\t0.867103280671455810,\t0.867128186007453890,\t0.867153089175632050,\t0.867177990175927000,\t0.867202889008277020,\t\n0.867227785672619820,\t0.867252680168893120,\t0.867277572497034740,\t0.867302462656982410,\t0.867327350648673940,\t0.867352236472047510,\t0.867377120127040050,\t0.867402001613589820,\t\n0.867426880931634560,\t0.867451758081112080,\t0.867476633061960210,\t0.867501505874116790,\t0.867526376517520070,\t0.867551244992106900,\t0.867576111297815640,\t0.867600975434584140,\t\n0.867625837402350220,\t0.867650697201051700,\t0.867675554830626310,\t0.867700410291012190,\t0.867725263582147410,\t0.867750114703969010,\t0.867774963656415380,\t0.867799810439424340,\t\n0.867824655052933710,\t0.867849497496881450,\t0.867874337771205480,\t0.867899175875843750,\t0.867924011810734420,\t0.867948845575814640,\t0.867973677171022700,\t0.867998506596296630,\t\n0.868023333851574260,\t0.868048158936793660,\t0.868072981851892520,\t0.868097802596809460,\t0.868122621171481420,\t0.868147437575846780,\t0.868172251809843590,\t0.868197063873409780,\t\n0.868221873766483300,\t0.868246681489002080,\t0.868271487040904290,\t0.868296290422128080,\t0.868321091632610840,\t0.868345890672290730,\t0.868370687541106020,\t0.868395482238994540,\t\n0.868420274765894340,\t0.868445065121743460,\t0.868469853306479970,\t0.868494639320042230,\t0.868519423162367410,\t0.868544204833394120,\t0.868568984333060290,\t0.868593761661303980,\t\n0.868618536818063340,\t0.868643309803276200,\t0.868668080616881390,\t0.868692849258815850,\t0.868717615729018180,\t0.868742380027426540,\t0.868767142153978880,\t0.868791902108613460,\t\n0.868816659891268220,\t0.868841415501881320,\t0.868866168940391370,\t0.868890920206735530,\t0.868915669300852290,\t0.868940416222680030,\t0.868965160972156700,\t0.868989903549220340,\t\n0.869014643953809340,\t0.869039382185862190,\t0.869064118245316040,\t0.869088852132109730,\t0.869113583846181200,\t0.869138313387468720,\t0.869163040755910440,\t0.869187765951444650,\t\n0.869212488974009380,\t0.869237209823543360,\t0.869261928499983850,\t0.869286645003269460,\t0.869311359333338470,\t0.869336071490129150,\t0.869360781473579650,\t0.869385489283628130,\t\n0.869410194920212990,\t0.869434898383272700,\t0.869459599672744780,\t0.869484298788567920,\t0.869508995730680190,\t0.869533690499020070,\t0.869558383093525620,\t0.869583073514135330,\t\n0.869607761760787690,\t0.869632447833420310,\t0.869657131731971680,\t0.869681813456380290,\t0.869706493006584420,\t0.869731170382522230,\t0.869755845584132210,\t0.869780518611352530,\t\n0.869805189464122000,\t0.869829858142378010,\t0.869854524646059390,\t0.869879188975104520,\t0.869903851129451570,\t0.869928511109039130,\t0.869953168913805360,\t0.869977824543688550,\t\n0.870002477998627730,\t0.870027129278560300,\t0.870051778383424960,\t0.870076425313160210,\t0.870101070067704430,\t0.870125712646996010,\t0.870150353050973210,\t0.870174991279574980,\t\n0.870199627332738920,\t0.870224261210403750,\t0.870248892912507950,\t0.870273522438989810,\t0.870298149789787920,\t0.870322774964840780,\t0.870347397964086560,\t0.870372018787464290,\t\n0.870396637434911580,\t0.870421253906367260,\t0.870445868201769830,\t0.870470480321057670,\t0.870495090264169380,\t0.870519698031043340,\t0.870544303621618500,\t0.870568907035832450,\t\n0.870593508273624140,\t0.870618107334932060,\t0.870642704219694700,\t0.870667298927850550,\t0.870691891459338230,\t0.870716481814096110,\t0.870741069992063240,\t0.870765655993177230,\t\n0.870790239817377130,\t0.870814821464601430,\t0.870839400934788730,\t0.870863978227877420,\t0.870888553343806220,\t0.870913126282513610,\t0.870937697043938640,\t0.870962265628019040,\t\n0.870986832034693740,\t0.871011396263901340,\t0.871035958315580450,\t0.871060518189669670,\t0.871085075886107620,\t0.871109631404833220,\t0.871134184745784410,\t0.871158735908900140,\t\n0.871183284894119000,\t0.871207831701379610,\t0.871232376330620670,\t0.871256918781780800,\t0.871281459054798700,\t0.871305997149613320,\t0.871330533066162480,\t0.871355066804385350,\t\n0.871379598364220520,\t0.871404127745606720,\t0.871428654948482650,\t0.871453179972786820,\t0.871477702818458600,\t0.871502223485435600,\t0.871526741973657090,\t0.871551258283061680,\t\n0.871575772413588190,\t0.871600284365175230,\t0.871624794137761620,\t0.871649301731285960,\t0.871673807145687430,\t0.871698310380904060,\t0.871722811436874910,\t0.871747310313538690,\t\n0.871771807010834120,\t0.871796301528700130,\t0.871820793867075340,\t0.871845284025898670,\t0.871869772005109070,\t0.871894257804644690,\t0.871918741424444700,\t0.871943222864447810,\t\n0.871967702124592850,\t0.871992179204818640,\t0.872016654105064020,\t0.872041126825268130,\t0.872065597365369040,\t0.872090065725305900,\t0.872114531905017750,\t0.872138995904443100,\t\n0.872163457723521000,\t0.872187917362190370,\t0.872212374820389820,\t0.872236830098058860,\t0.872261283195135300,\t0.872285734111558520,\t0.872310182847267470,\t0.872334629402200970,\t\n0.872359073776297840,\t0.872383515969497150,\t0.872407955981737480,\t0.872432393812958450,\t0.872456829463098100,\t0.872481262932095600,\t0.872505694219889880,\t0.872530123326419990,\t\n0.872554550251624760,\t0.872578974995443120,\t0.872603397557814580,\t0.872627817938677050,\t0.872652236137970050,\t0.872676652155632390,\t0.872701065991603020,\t0.872725477645821090,\t\n0.872749887118225430,\t0.872774294408755090,\t0.872798699517349450,\t0.872823102443946560,\t0.872847503188486030,\t0.872871901750906680,\t0.872896298131147550,\t0.872920692329147710,\t\n0.872945084344846080,\t0.872969474178182270,\t0.872993861829094220,\t0.873018247297521640,\t0.873042630583403370,\t0.873067011686678550,\t0.873091390607286130,\t0.873115767345165380,\t\n0.873140141900255130,\t0.873164514272494970,\t0.873188884461822970,\t0.873213252468178940,\t0.873237618291501700,\t0.873261981931730440,\t0.873286343388804180,\t0.873310702662662090,\t\n0.873335059753243210,\t0.873359414660487170,\t0.873383767384332210,\t0.873408117924717730,\t0.873432466281583000,\t0.873456812454867060,\t0.873481156444509080,\t0.873505498250448320,\t\n0.873529837872624170,\t0.873554175310975010,\t0.873578510565440340,\t0.873602843635959530,\t0.873627174522471520,\t0.873651503224915580,\t0.873675829743230880,\t0.873700154077356570,\t\n0.873724476227232370,\t0.873748796192796550,\t0.873773113973988710,\t0.873797429570748130,\t0.873821742983013960,\t0.873846054210725360,\t0.873870363253821720,\t0.873894670112242200,\t\n0.873918974785926280,\t0.873943277274812690,\t0.873967577578840800,\t0.873991875697949890,\t0.874016171632079450,\t0.874040465381168420,\t0.874064756945156400,\t0.874089046323982770,\t\n0.874113333517586130,\t0.874137618525906210,\t0.874161901348882160,\t0.874186181986453480,\t0.874210460438559210,\t0.874234736705138850,\t0.874259010786131660,\t0.874283282681477370,\t\n0.874307552391114460,\t0.874331819914982660,\t0.874356085253021330,\t0.874380348405169760,\t0.874404609371367330,\t0.874428868151553300,\t0.874453124745667610,\t0.874477379153648650,\t\n0.874501631375436350,\t0.874525881410969870,\t0.874550129260188710,\t0.874574374923032140,\t0.874598618399439750,\t0.874622859689350720,\t0.874647098792705080,\t0.874671335709441220,\t\n0.874695570439498970,\t0.874719802982817820,\t0.874744033339337150,\t0.874768261508996450,\t0.874792487491735100,\t0.874816711287492500,\t0.874840932896208460,\t0.874865152317821800,\t\n0.874889369552272260,\t0.874913584599499190,\t0.874937797459442220,\t0.874962008132040720,\t0.874986216617234300,\t0.875010422914962670,\t0.875034627025164550,\t0.875058828947779980,\t\n0.875083028682748230,\t0.875107226230008920,\t0.875131421589501520,\t0.875155614761165660,\t0.875179805744940700,\t0.875203994540766690,\t0.875228181148582140,\t0.875252365568327310,\t\n0.875276547799941460,\t0.875300727843364320,\t0.875324905698535270,\t0.875349081365394020,\t0.875373254843880070,\t0.875397426133933340,\t0.875421595235492680,\t0.875445762148498010,\t\n0.875469926872888940,\t0.875494089408605070,\t0.875518249755586010,\t0.875542407913771250,\t0.875566563883100950,\t0.875590717663513820,\t0.875614869254949800,\t0.875639018657348720,\t\n0.875663165870650070,\t0.875687310894793460,\t0.875711453729718590,\t0.875735594375365080,\t0.875759732831673080,\t0.875783869098581190,\t0.875808003176029690,\t0.875832135063958180,\t\n0.875856264762306380,\t0.875880392271013890,\t0.875904517590020410,\t0.875928640719266130,\t0.875952761658689740,\t0.875976880408231520,\t0.876000996967830960,\t0.876025111337428000,\t\n0.876049223516962350,\t0.876073333506373510,\t0.876097441305601410,\t0.876121546914586100,\t0.876145650333266410,\t0.876169751561582720,\t0.876193850599474630,\t0.876217947446881860,\t\n0.876242042103744350,\t0.876266134570001580,\t0.876290224845593600,\t0.876314312930460360,\t0.876338398824541010,\t0.876362482527775600,\t0.876386564040104070,\t0.876410643361466010,\t\n0.876434720491801490,\t0.876458795431049990,\t0.876482868179152110,\t0.876506938736046460,\t0.876531007101673640,\t0.876555073275973150,\t0.876579137258885030,\t0.876603199050349110,\t\n0.876627258650305220,\t0.876651316058693060,\t0.876675371275453140,\t0.876699424300524280,\t0.876723475133846960,\t0.876747523775360800,\t0.876771570225005960,\t0.876795614482722140,\t\n0.876819656548449400,\t0.876843696422127450,\t0.876867734103696670,\t0.876891769593096120,\t0.876915802890266050,\t0.876939833995146630,\t0.876963862907677580,\t0.876987889627798830,\t\n0.877011914155450430,\t0.877035936490572650,\t0.877059956633104540,\t0.877083974582986590,\t0.877107990340158740,\t0.877132003904560810,\t0.877156015276132960,\t0.877180024454815020,\t\n0.877204031440547040,\t0.877228036233269390,\t0.877252038832921240,\t0.877276039239443080,\t0.877300037452774740,\t0.877324033472856260,\t0.877348027299627690,\t0.877372018933029190,\t\n0.877396008373000910,\t0.877419995619482250,\t0.877443980672413690,\t0.877467963531735060,\t0.877491944197386520,\t0.877515922669308220,\t0.877539898947440000,\t0.877563873031722120,\t\n0.877587844922094960,\t0.877611814618497800,\t0.877635782120871010,\t0.877659747429154760,\t0.877683710543289200,\t0.877707671463214380,\t0.877731630188870350,\t0.877755586720197270,\t\n0.877779541057135630,\t0.877803493199624700,\t0.877827443147605080,\t0.877851390901016830,\t0.877875336459800090,\t0.877899279823895040,\t0.877923220993241720,\t0.877947159967780830,\t\n0.877971096747451660,\t0.877995031332194700,\t0.878018963721950210,\t0.878042893916658240,\t0.878066821916258950,\t0.878090747720692730,\t0.878114671329899620,\t0.878138592743820330,\t\n0.878162511962394030,\t0.878186428985561540,\t0.878210343813262910,\t0.878234256445438400,\t0.878258166882028290,\t0.878282075122972740,\t0.878305981168212460,\t0.878329885017686830,\t\n0.878353786671336350,\t0.878377686129101500,\t0.878401583390922450,\t0.878425478456739460,\t0.878449371326492700,\t0.878473262000122550,\t0.878497150477569710,\t0.878521036758773580,\t\n0.878544920843674750,\t0.878568802732213720,\t0.878592682424330640,\t0.878616559919965790,\t0.878640435219059660,\t0.878664308321552400,\t0.878688179227384740,\t0.878712047936496270,\t\n0.878735914448827700,\t0.878759778764319210,\t0.878783640882911390,\t0.878807500804544510,\t0.878831358529158830,\t0.878855214056695090,\t0.878879067387092980,\t0.878902918520293230,\t\n0.878926767456236100,\t0.878950614194862090,\t0.878974458736111570,\t0.878998301079924830,\t0.879022141226242450,\t0.879045979175005040,\t0.879069814926152330,\t0.879093648479625010,\t\n0.879117479835363700,\t0.879141308993308560,\t0.879165135953400180,\t0.879188960715578950,\t0.879212783279785360,\t0.879236603645960240,\t0.879260421814043180,\t0.879284237783975020,\t\n0.879308051555696360,\t0.879331863129147460,\t0.879355672504268940,\t0.879379479681001270,\t0.879403284659285300,\t0.879427087439060730,\t0.879450888020268380,\t0.879474686402848870,\t\n0.879498482586742570,\t0.879522276571890080,\t0.879546068358232010,\t0.879569857945708630,\t0.879593645334261100,\t0.879617430523829010,\t0.879641213514353320,\t0.879664994305774720,\t\n0.879688772898033490,\t0.879712549291070340,\t0.879736323484825890,\t0.879760095479241060,\t0.879783865274255560,\t0.879807632869810340,\t0.879831398265846110,\t0.879855161462303360,\t\n0.879878922459122690,\t0.879902681256244710,\t0.879926437853610020,\t0.879950192251159670,\t0.879973944448833370,\t0.879997694446572280,\t0.880021442244317000,\t0.880045187842008030,\t\n0.880068931239586070,\t0.880092672436991850,\t0.880116411434165860,\t0.880140148231049360,\t0.880163882827582070,\t0.880187615223705030,\t0.880211345419358970,\t0.880235073414484480,\t\n0.880258799209022390,\t0.880282522802913300,\t0.880306244196098260,\t0.880329963388517210,\t0.880353680380111300,\t0.880377395170821140,\t0.880401107760587550,\t0.880424818149351140,\t\n0.880448526337052730,\t0.880472232323632920,\t0.880495936109033090,\t0.880519637693192860,\t0.880543337076053590,\t0.880567034257556000,\t0.880590729237640810,\t0.880614422016248730,\t\n0.880638112593320700,\t0.880661800968797310,\t0.880685487142619850,\t0.880709171114728350,\t0.880732852885063870,\t0.880756532453567220,\t0.880780209820179240,\t0.880803884984840750,\t\n0.880827557947492570,\t0.880851228708075860,\t0.880874897266530680,\t0.880898563622798280,\t0.880922227776819500,\t0.880945889728535050,\t0.880969549477885970,\t0.880993207024812990,\t\n0.881016862369257030,\t0.881040515511159250,\t0.881064166450459820,\t0.881087815187099890,\t0.881111461721020510,\t0.881135106052162500,\t0.881158748180466690,\t0.881182388105874010,\t\n0.881206025828325750,\t0.881229661347762040,\t0.881253294664124160,\t0.881276925777353060,\t0.881300554687389660,\t0.881324181394174790,\t0.881347805897649490,\t0.881371428197754710,\t\n0.881395048294431830,\t0.881418666187620880,\t0.881442281877263260,\t0.881465895363299890,\t0.881489506645671830,\t0.881513115724320010,\t0.881536722599185360,\t0.881560327270208940,\t\n0.881583929737332130,\t0.881607530000494970,\t0.881631128059639170,\t0.881654723914705450,\t0.881678317565634860,\t0.881701909012368560,\t0.881725498254847470,\t0.881749085293012990,\t\n0.881772670126805490,\t0.881796252756166240,\t0.881819833181036410,\t0.881843411401356910,\t0.881866987417068930,\t0.881890561228113490,\t0.881914132834431650,\t0.881937702235964900,\t\n0.881961269432653520,\t0.881984834424438870,\t0.882008397211262230,\t0.882031957793064540,\t0.882055516169786950,\t0.882079072341370620,\t0.882102626307756600,\t0.882126178068886380,\t\n0.882149727624700340,\t0.882173274975139980,\t0.882196820120146330,\t0.882220363059660780,\t0.882243903793624270,\t0.882267442321977960,\t0.882290978644663550,\t0.882314512761621210,\t\n0.882338044672792530,\t0.882361574378118910,\t0.882385101877541160,\t0.882408627171000770,\t0.882432150258438800,\t0.882455671139796500,\t0.882479189815015390,\t0.882502706284035820,\t\n0.882526220546799630,\t0.882549732603247760,\t0.882573242453321580,\t0.882596750096962370,\t0.882620255534111280,\t0.882643758764709910,\t0.882667259788698750,\t0.882690758606019420,\t\n0.882714255216613180,\t0.882737749620421290,\t0.882761241817385130,\t0.882784731807445770,\t0.882808219590544670,\t0.882831705166623350,\t0.882855188535622390,\t0.882878669697483410,\t\n0.882902148652147780,\t0.882925625399556880,\t0.882949099939651760,\t0.882972572272374020,\t0.882996042397664830,\t0.883019510315465880,\t0.883042976025717800,\t0.883066439528362170,\t\n0.883089900823340600,\t0.883113359910594140,\t0.883136816790064390,\t0.883160271461692510,\t0.883183723925420440,\t0.883207174181188660,\t0.883230622228938890,\t0.883254068068612510,\t\n0.883277511700151120,\t0.883300953123495770,\t0.883324392338588170,\t0.883347829345369480,\t0.883371264143781750,\t0.883394696733765360,\t0.883418127115262350,\t0.883441555288213890,\t\n0.883464981252561570,\t0.883488405008246770,\t0.883511826555211100,\t0.883535245893395720,\t0.883558663022742660,\t0.883582077943192550,\t0.883605490654687300,\t0.883628901157168300,\t\n0.883652309450576930,\t0.883675715534854910,\t0.883699119409943610,\t0.883722521075784860,\t0.883745920532319370,\t0.883769317779489190,\t0.883792712817235590,\t0.883816105645500280,\t\n0.883839496264224760,\t0.883862884673350390,\t0.883886270872818900,\t0.883909654862572110,\t0.883933036642550740,\t0.883956416212696830,\t0.883979793572951870,\t0.884003168723257350,\t\n0.884026541663554990,\t0.884049912393786270,\t0.884073280913893140,\t0.884096647223816420,\t0.884120011323498160,\t0.884143373212879720,\t0.884166732891902950,\t0.884190090360509330,\t\n0.884213445618640460,\t0.884236798666238060,\t0.884260149503243940,\t0.884283498129599170,\t0.884306844545245550,\t0.884330188750124810,\t0.884353530744178660,\t0.884376870527348700,\t\n0.884400208099576530,\t0.884423543460803870,\t0.884446876610972770,\t0.884470207550023920,\t0.884493536277899730,\t0.884516862794541670,\t0.884540187099891350,\t0.884563509193890710,\t\n0.884586829076481120,\t0.884610146747605080,\t0.884633462207203070,\t0.884656775455217480,\t0.884680086491590020,\t0.884703395316262300,\t0.884726701929176020,\t0.884750006330273010,\t\n0.884773308519495090,\t0.884796608496784210,\t0.884819906262081400,\t0.884843201815328830,\t0.884866495156468310,\t0.884889786285441570,\t0.884913075202190310,\t0.884936361906656370,\t\n0.884959646398781890,\t0.884982928678507920,\t0.885006208745776620,\t0.885029486600529820,\t0.885052762242709350,\t0.885076035672256900,\t0.885099306889114310,\t0.885122575893223520,\t\n0.885145842684526780,\t0.885169107262964940,\t0.885192369628480360,\t0.885215629781014760,\t0.885238887720510180,\t0.885262143446908350,\t0.885285396960151180,\t0.885308648260180520,\t\n0.885331897346938730,\t0.885355144220366650,\t0.885378388880406760,\t0.885401631327000890,\t0.885424871560090980,\t0.885448109579618840,\t0.885471345385526520,\t0.885494578977756190,\t\n0.885517810356248880,\t0.885541039520947200,\t0.885564266471792870,\t0.885587491208727930,\t0.885610713731694200,\t0.885633934040633730,\t0.885657152135488350,\t0.885680368016200540,\t\n0.885703581682711460,\t0.885726793134963280,\t0.885750002372898250,\t0.885773209396458210,\t0.885796414205585080,\t0.885819616800220920,\t0.885842817180307770,\t0.885866015345788020,\t\n0.885889211296602700,\t0.885912405032694420,\t0.885935596554005110,\t0.885958785860476830,\t0.885981972952051610,\t0.886005157828671400,\t0.886028340490278790,\t0.886051520936814830,\t\n0.886074699168222120,\t0.886097875184442610,\t0.886121048985418440,\t0.886144220571091660,\t0.886167389941404320,\t0.886190557096298460,\t0.886213722035716690,\t0.886236884759600160,\t\n0.886260045267891480,\t0.886283203560532700,\t0.886306359637465850,\t0.886329513498633090,\t0.886352665143976590,\t0.886375814573438840,\t0.886398961786961090,\t0.886422106784485960,\t\n0.886445249565955500,\t0.886468390131312070,\t0.886491528480497500,\t0.886514664613454180,\t0.886537798530124270,\t0.886560930230450240,\t0.886584059714373370,\t0.886607186981836490,\t\n0.886630312032781530,\t0.886653434867150870,\t0.886676555484886550,\t0.886699673885930960,\t0.886722790070226030,\t0.886745904037714690,\t0.886769015788338110,\t0.886792125322038990,\t\n0.886815232638759500,\t0.886838337738442010,\t0.886861440621028670,\t0.886884541286461660,\t0.886907639734683780,\t0.886930735965636430,\t0.886953829979262090,\t0.886976921775503360,\t\n0.887000011354302180,\t0.887023098715601030,\t0.887046183859342090,\t0.887069266785467710,\t0.887092347493920630,\t0.887115425984642210,\t0.887138502257575290,\t0.887161576312662010,\t\n0.887184648149844880,\t0.887207717769066150,\t0.887230785170268100,\t0.887253850353392990,\t0.887276913318383760,\t0.887299974065181800,\t0.887323032593729910,\t0.887346088903970490,\t\n0.887369142995845790,\t0.887392194869298320,\t0.887415244524270230,\t0.887438291960704560,\t0.887461337178542700,\t0.887484380177727460,\t0.887507420958201340,\t0.887530459519906610,\t\n0.887553495862785760,\t0.887576529986781160,\t0.887599561891835200,\t0.887622591577890810,\t0.887645619044889480,\t0.887668644292774140,\t0.887691667321487190,\t0.887714688130971100,\t\n0.887737706721168250,\t0.887760723092021140,\t0.887783737243472590,\t0.887806749175464320,\t0.887829758887939250,\t0.887852766380839650,\t0.887875771654108250,\t0.887898774707687300,\t\n0.887921775541519520,\t0.887944774155547290,\t0.887967770549713540,\t0.887990764723959880,\t0.888013756678229350,\t0.888036746412464440,\t0.888059733926607640,\t0.888082719220601560,\t\n0.888105702294388680,\t0.888128683147911490,\t0.888151661781113040,\t0.888174638193934940,\t0.888197612386320330,\t0.888220584358211720,\t0.888243554109551580,\t0.888266521640282520,\t\n0.888289486950347260,\t0.888312450039688620,\t0.888335410908248520,\t0.888358369555969810,\t0.888381325982795180,\t0.888404280188667350,\t0.888427232173528700,\t0.888450181937322060,\t\n0.888473129479989910,\t0.888496074801475300,\t0.888519017901720170,\t0.888541958780667440,\t0.888564897438259840,\t0.888587833874440070,\t0.888610768089150630,\t0.888633700082334220,\t\n0.888656629853933680,\t0.888679557403891930,\t0.888702482732150910,\t0.888725405838653560,\t0.888748326723342810,\t0.888771245386161260,\t0.888794161827051510,\t0.888817076045956390,\t\n0.888839988042818940,\t0.888862897817581210,\t0.888885805370186240,\t0.888908710700576640,\t0.888931613808695340,\t0.888954514694485050,\t0.888977413357888380,\t0.889000309798848250,\t\n0.889023204017307720,\t0.889046096013208720,\t0.889068985786494630,\t0.889091873337107930,\t0.889114758664991570,\t0.889137641770088360,\t0.889160522652341020,\t0.889183401311692820,\t\n0.889206277748085690,\t0.889229151961462900,\t0.889252023951767170,\t0.889274893718941420,\t0.889297761262928370,\t0.889320626583670950,\t0.889343489681111990,\t0.889366350555194750,\t\n0.889389209205861180,\t0.889412065633054530,\t0.889434919836717740,\t0.889457771816793750,\t0.889480621573225270,\t0.889503469105955240,\t0.889526314414926470,\t0.889549157500082340,\t\n0.889571998361365020,\t0.889594836998717660,\t0.889617673412083090,\t0.889640507601404450,\t0.889663339566624580,\t0.889686169307686290,\t0.889708996824532970,\t0.889731822117106770,\t\n0.889754645185350970,\t0.889777466029208600,\t0.889800284648622600,\t0.889823101043535900,\t0.889845915213891450,\t0.889868727159632170,\t0.889891536880701440,\t0.889914344377041530,\t\n0.889937149648595720,\t0.889959952695307030,\t0.889982753517118530,\t0.890005552113973030,\t0.890028348485813690,\t0.890051142632583560,\t0.890073934554225900,\t0.890096724250682980,\t\n0.890119511721898290,\t0.890142296967814880,\t0.890165079988375680,\t0.890187860783523740,\t0.890210639353202220,\t0.890233415697354480,\t0.890256189815922800,\t0.890278961708850570,\t\n0.890301731376081040,\t0.890324498817557150,\t0.890347264033221950,\t0.890370027023018710,\t0.890392787786890240,\t0.890415546324780370,\t0.890438302636631150,\t0.890461056722386180,\t\n0.890483808581988610,\t0.890506558215381380,\t0.890529305622507870,\t0.890552050803311120,\t0.890574793757734630,\t0.890597534485720770,\t0.890620272987213020,\t0.890643009262154560,\t\n0.890665743310488640,\t0.890688475132158320,\t0.890711204727106850,\t0.890733932095277400,\t0.890756657236613460,\t0.890779380151057510,\t0.890802100838553050,\t0.890824819299043340,\t\n0.890847535532471650,\t0.890870249538781130,\t0.890892961317914960,\t0.890915670869816380,\t0.890938378194429000,\t0.890961083291695320,\t0.890983786161558930,\t0.891006486803962990,\t\n0.891029185218850880,\t0.891051881406165870,\t0.891074575365851110,\t0.891097267097850310,\t0.891119956602105970,\t0.891142643878561680,\t0.891165328927160830,\t0.891188011747846680,\t\n0.891210692340562490,\t0.891233370705251550,\t0.891256046841857110,\t0.891278720750323110,\t0.891301392430591810,\t0.891324061882607040,\t0.891346729106312070,\t0.891369394101650280,\t\n0.891392056868565150,\t0.891414717406999730,\t0.891437375716897520,\t0.891460031798202320,\t0.891482685650856640,\t0.891505337274804300,\t0.891527986669988560,\t0.891550633836352800,\t\n0.891573278773840520,\t0.891595921482395080,\t0.891618561961960210,\t0.891641200212478500,\t0.891663836233893780,\t0.891686470026149540,\t0.891709101589189030,\t0.891731730922955880,\t\n0.891754358027393330,\t0.891776982902444890,\t0.891799605548054370,\t0.891822225964164490,\t0.891844844150719070,\t0.891867460107661490,\t0.891890073834935240,\t0.891912685332483800,\t\n0.891935294600250670,\t0.891957901638179670,\t0.891980506446213630,\t0.892003109024296250,\t0.892025709372371130,\t0.892048307490381660,\t0.892070903378271440,\t0.892093497035984060,\t\n0.892116088463462800,\t0.892138677660651800,\t0.892161264627493680,\t0.892183849363932470,\t0.892206431869911550,\t0.892229012145374530,\t0.892251590190265120,\t0.892274166004526580,\t\n0.892296739588102740,\t0.892319310940937300,\t0.892341880062973320,\t0.892364446954154620,\t0.892387011614424800,\t0.892409574043727450,\t0.892432134242006180,\t0.892454692209204480,\t\n0.892477247945266510,\t0.892499801450135080,\t0.892522352723754130,\t0.892544901766067270,\t0.892567448577018090,\t0.892589993156550410,\t0.892612535504607620,\t0.892635075621133640,\t\n0.892657613506072200,\t0.892680149159366440,\t0.892702682580960310,\t0.892725213770797500,\t0.892747742728821510,\t0.892770269454976280,\t0.892792793949205410,\t0.892815316211452940,\t\n0.892837836241661690,\t0.892860354039775930,\t0.892882869605739260,\t0.892905382939495400,\t0.892927894040988050,\t0.892950402910161030,\t0.892972909546957960,\t0.892995413951323090,\t\n0.893017916123199250,\t0.893040416062530600,\t0.893062913769260950,\t0.893085409243333910,\t0.893107902484693410,\t0.893130393493283160,\t0.893152882269046990,\t0.893175368811928940,\t\n0.893197853121872050,\t0.893220335198820600,\t0.893242815042718300,\t0.893265292653508960,\t0.893287768031136300,\t0.893310241175544250,\t0.893332712086677080,\t0.893355180764477730,\t\n0.893377647208890350,\t0.893400111419858870,\t0.893422573397327110,\t0.893445033141239020,\t0.893467490651538190,\t0.893489945928168770,\t0.893512398971074820,\t0.893534849780199480,\t\n0.893557298355486920,\t0.893579744696881280,\t0.893602188804326180,\t0.893624630677765650,\t0.893647070317143520,\t0.893669507722403720,\t0.893691942893490520,\t0.893714375830347070,\t\n0.893736806532917760,\t0.893759235001146400,\t0.893781661234976930,\t0.893804085234353280,\t0.893826506999219510,\t0.893848926529519750,\t0.893871343825197400,\t0.893893758886196600,\t\n0.893916171712461400,\t0.893938582303935860,\t0.893960990660563780,\t0.893983396782289220,\t0.894005800669056220,\t0.894028202320809040,\t0.894050601737491070,\t0.894072998919046570,\t\n0.894095393865419470,\t0.894117786576553940,\t0.894140177052394010,\t0.894162565292883630,\t0.894184951297967160,\t0.894207335067587980,\t0.894229716601690370,\t0.894252095900218590,\t\n0.894274472963116460,\t0.894296847790328250,\t0.894319220381797790,\t0.894341590737469440,\t0.894363958857287370,\t0.894386324741195060,\t0.894408688389137010,\t0.894431049801057140,\t\n0.894453408976899620,\t0.894475765916608710,\t0.894498120620128350,\t0.894520473087402570,\t0.894542823318376090,\t0.894565171312992180,\t0.894587517071195330,\t0.894609860592929680,\t\n0.894632201878139300,\t0.894654540926768550,\t0.894676877738761370,\t0.894699212314062460,\t0.894721544652615000,\t0.894743874754363790,\t0.894766202619252880,\t0.894788528247226430,\t\n0.894810851638228600,\t0.894833172792203760,\t0.894855491709095950,\t0.894877808388849780,\t0.894900122831408740,\t0.894922435036717310,\t0.894944745004719880,\t0.894967052735360590,\t\n0.894989358228583610,\t0.895011661484333200,\t0.895033962502553740,\t0.895056261283189710,\t0.895078557826184620,\t0.895100852131483160,\t0.895123144199029610,\t0.895145434028768120,\t\n0.895167721620643060,\t0.895190006974598720,\t0.895212290090579790,\t0.895234570968529760,\t0.895256849608393250,\t0.895279126010114610,\t0.895301400173638130,\t0.895323672098908170,\t\n0.895345941785869130,\t0.895368209234465140,\t0.895390474444641040,\t0.895412737416340310,\t0.895434998149507780,\t0.895457256644087820,\t0.895479512900024590,\t0.895501766917262690,\t\n0.895524018695746270,\t0.895546268235420270,\t0.895568515536228180,\t0.895590760598114820,\t0.895613003421024570,\t0.895635244004901800,\t0.895657482349690890,\t0.895679718455336340,\t\n0.895701952321782400,\t0.895724183948974020,\t0.895746413336854790,\t0.895768640485369530,\t0.895790865394462730,\t0.895813088064078670,\t0.895835308494161930,\t0.895857526684656900,\t\n0.895879742635508070,\t0.895901956346660260,\t0.895924167818057170,\t0.895946377049643750,\t0.895968584041364260,\t0.895990788793163410,\t0.896012991304985460,\t0.896035191576775140,\t\n0.896057389608477250,\t0.896079585400035410,\t0.896101778951394650,\t0.896123970262499460,\t0.896146159333294330,\t0.896168346163723760,\t0.896190530753732340,\t0.896212713103264670,\t\n0.896234893212265570,\t0.896257071080678760,\t0.896279246708449380,\t0.896301420095521830,\t0.896323591241840800,\t0.896345760147350680,\t0.896367926811996290,\t0.896390091235722000,\t\n0.896412253418472860,\t0.896434413360192690,\t0.896456571060826550,\t0.896478726520318900,\t0.896500879738614590,\t0.896523030715657980,\t0.896545179451393780,\t0.896567325945767050,\t\n0.896589470198721590,\t0.896611612210202470,\t0.896633751980154270,\t0.896655889508521710,\t0.896678024795249500,\t0.896700157840282120,\t0.896722288643564400,\t0.896744417205041390,\t\n0.896766543524656900,\t0.896788667602356090,\t0.896810789438083570,\t0.896832909031784140,\t0.896855026383402310,\t0.896877141492883000,\t0.896899254360171260,\t0.896921364985210910,\t\n0.896943473367947220,\t0.896965579508324780,\t0.896987683406288540,\t0.897009785061782970,\t0.897031884474752910,\t0.897053981645143160,\t0.897076076572898900,\t0.897098169257964040,\t\n0.897120259700283750,\t0.897142347899802740,\t0.897164433856465940,\t0.897186517570218060,\t0.897208599041003920,\t0.897230678268768230,\t0.897252755253456160,\t0.897274829995011960,\t\n0.897296902493380570,\t0.897318972748507030,\t0.897341040760335940,\t0.897363106528812350,\t0.897385170053880850,\t0.897407231335486940,\t0.897429290373574550,\t0.897451347168088940,\t\n0.897473401718974940,\t0.897495454026177470,\t0.897517504089641370,\t0.897539551909311450,\t0.897561597485132650,\t0.897583640817050220,\t0.897605681905008450,\t0.897627720748952360,\t\n0.897649757348826900,\t0.897671791704577230,\t0.897693823816147930,\t0.897715853683484170,\t0.897737881306530760,\t0.897759906685232980,\t0.897781929819535090,\t0.897803950709382350,\t\n0.897825969354719700,\t0.897847985755492180,\t0.897869999911644730,\t0.897892011823122170,\t0.897914021489870100,\t0.897936028911832440,\t0.897958034088954800,\t0.897980037021182120,\t\n0.898002037708459320,\t0.898024036150731340,\t0.898046032347943330,\t0.898068026300040230,\t0.898090018006967530,\t0.898112007468669260,\t0.898133994685091030,\t0.898155979656177880,\t\n0.898177962381874750,\t0.898199942862126680,\t0.898221921096878710,\t0.898243897086076440,\t0.898265870829664030,\t0.898287842327586850,\t0.898309811579790060,\t0.898331778586218820,\t\n0.898353743346818060,\t0.898375705861533040,\t0.898397666130308690,\t0.898419624153090620,\t0.898441579929822990,\t0.898463533460451490,\t0.898485484744921180,\t0.898507433783177100,\t\n0.898529380575164520,\t0.898551325120828360,\t0.898573267420114010,\t0.898595207472966840,\t0.898617145279331230,\t0.898639080839152780,\t0.898661014152376650,\t0.898682945218947870,\t\n0.898704874038811830,\t0.898726800611913570,\t0.898748724938198800,\t0.898770647017611780,\t0.898792566850098120,\t0.898814484435602970,\t0.898836399774071700,\t0.898858312865449370,\t\n0.898880223709681350,\t0.898902132306712680,\t0.898924038656489180,\t0.898945942758955010,\t0.898967844614056100,\t0.898989744221737610,\t0.899011641581944690,\t0.899033536694622710,\t\n0.899055429559716960,\t0.899077320177172900,\t0.899099208546935150,\t0.899121094668949410,\t0.899142978543161050,\t0.899164860169515130,\t0.899186739547957030,\t0.899208616678432100,\t\n0.899230491560885640,\t0.899252364195263440,\t0.899274234581509790,\t0.899296102719570610,\t0.899317968609391170,\t0.899339832250916850,\t0.899361693644092910,\t0.899383552788864730,\t\n0.899405409685177680,\t0.899427264332977590,\t0.899449116732208840,\t0.899470966882817250,\t0.899492814784748410,\t0.899514660437947370,\t0.899536503842359720,\t0.899558344997930860,\t\n0.899580183904606480,\t0.899602020562331290,\t0.899623854971051130,\t0.899645687130711140,\t0.899667517041257030,\t0.899689344702634180,\t0.899711170114787850,\t0.899732993277663760,\t\n0.899754814191207400,\t0.899776632855363690,\t0.899798449270078460,\t0.899820263435297090,\t0.899842075350964940,\t0.899863885017027740,\t0.899885692433430750,\t0.899907497600119570,\t\n0.899929300517040010,\t0.899951101184136790,\t0.899972899601355850,\t0.899994695768642660,\t0.900016489685942720,\t0.900038281353201520,\t0.900060070770364760,\t0.900081857937378050,\t\n0.900103642854186430,\t0.900125425520735600,\t0.900147205936971280,\t0.900168984102838850,\t0.900190760018284020,\t0.900212533683252380,\t0.900234305097689310,\t0.900256074261540860,\t\n0.900277841174751850,\t0.900299605837268200,\t0.900321368249035640,\t0.900343128409999530,\t0.900364886320105700,\t0.900386641979299630,\t0.900408395387527370,\t0.900430146544733630,\t\n0.900451895450864570,\t0.900473642105865890,\t0.900495386509682970,\t0.900517128662261630,\t0.900538868563547480,\t0.900560606213486100,\t0.900582341612023660,\t0.900604074759104980,\t\n0.900625805654676090,\t0.900647534298682610,\t0.900669260691070450,\t0.900690984831785000,\t0.900712706720772190,\t0.900734426357977510,\t0.900756143743347230,\t0.900777858876826150,\t\n0.900799571758360560,\t0.900821282387895940,\t0.900842990765378100,\t0.900864696890752770,\t0.900886400763965760,\t0.900908102384963110,\t0.900929801753689750,\t0.900951498870091960,\t\n0.900973193734115440,\t0.900994886345705900,\t0.901016576704809170,\t0.901038264811370950,\t0.901059950665337060,\t0.901081634266653770,\t0.901103315615265910,\t0.901124994711119840,\t\n0.901146671554161170,\t0.901168346144335940,\t0.901190018481589860,\t0.901211688565868640,\t0.901233356397118210,\t0.901255021975284840,\t0.901276685300313460,\t0.901298346372150450,\t\n0.901320005190741510,\t0.901341661756032590,\t0.901363316067969490,\t0.901384968126498150,\t0.901406617931564740,\t0.901428265483114390,\t0.901449910781093380,\t0.901471553825447520,\t\n0.901493194616122870,\t0.901514833153065240,\t0.901536469436220570,\t0.901558103465534670,\t0.901579735240953810,\t0.901601364762423360,\t0.901622992029889380,\t0.901644617043298010,\t\n0.901666239802595080,\t0.901687860307726520,\t0.901709478558638370,\t0.901731094555276890,\t0.901752708297587250,\t0.901774319785515810,\t0.901795929019008620,\t0.901817535998011620,\t\n0.901839140722470840,\t0.901860743192332110,\t0.901882343407541590,\t0.901903941368045530,\t0.901925537073789200,\t0.901947130524719090,\t0.901968721720781240,\t0.901990310661921480,\t\n0.902011897348085960,\t0.902033481779220710,\t0.902055063955271690,\t0.902076643876185470,\t0.902098221541907220,\t0.902119796952383420,\t0.902141370107560130,\t0.902162941007383480,\t\n0.902184509651799420,\t0.902206076040754090,\t0.902227640174193990,\t0.902249202052064380,\t0.902270761674311750,\t0.902292319040882140,\t0.902313874151721820,\t0.902335427006776820,\t\n0.902356977605993320,\t0.902378525949317220,\t0.902400072036695260,\t0.902421615868072790,\t0.902443157443396200,\t0.902464696762611760,\t0.902486233825665620,\t0.902507768632503820,\t\n0.902529301183072620,\t0.902550831477318180,\t0.902572359515187110,\t0.902593885296624650,\t0.902615408821577540,\t0.902636930089991910,\t0.902658449101813920,\t0.902679965856989730,\t\n0.902701480355465710,\t0.902722992597188470,\t0.902744502582103260,\t0.902766010310156800,\t0.902787515781295240,\t0.902809018995465060,\t0.902830519952612210,\t0.902852018652683050,\t\n0.902873515095623970,\t0.902895009281381330,\t0.902916501209900860,\t0.902937990881129140,\t0.902959478295012440,\t0.902980963451497030,\t0.903002446350529290,\t0.903023926992055360,\t\n0.903045405376021960,\t0.903066881502374800,\t0.903088355371060250,\t0.903109826982024910,\t0.903131296335215050,\t0.903152763430576930,\t0.903174228268056820,\t0.903195690847601210,\t\n0.903217151169156680,\t0.903238609232668970,\t0.903260065038084760,\t0.903281518585350330,\t0.903302969874412160,\t0.903324418905216530,\t0.903345865677709800,\t0.903367310191838470,\t\n0.903388752447549240,\t0.903410192444787710,\t0.903431630183500810,\t0.903453065663634700,\t0.903474498885135980,\t0.903495929847951020,\t0.903517358552026200,\t0.903538784997308440,\t\n0.903560209183743250,\t0.903581631111277540,\t0.903603050779857810,\t0.903624468189430430,\t0.903645883339941890,\t0.903667296231338680,\t0.903688706863567170,\t0.903710115236574300,\t\n0.903731521350305770,\t0.903752925204708400,\t0.903774326799728690,\t0.903795726135313230,\t0.903817123211408500,\t0.903838518027960890,\t0.903859910584916990,\t0.903881300882223630,\t\n0.903902688919826720,\t0.903924074697673110,\t0.903945458215709260,\t0.903966839473881790,\t0.903988218472137170,\t0.904009595210422120,\t0.904030969688683350,\t0.904052341906866790,\t\n0.904073711864919470,\t0.904095079562787780,\t0.904116445000418430,\t0.904137808177757910,\t0.904159169094752910,\t0.904180527751350050,\t0.904201884147496140,\t0.904223238283137220,\t\n0.904244590158220230,\t0.904265939772691650,\t0.904287287126498310,\t0.904308632219586680,\t0.904329975051903600,\t0.904351315623395770,\t0.904372653934009450,\t0.904393989983691360,\t\n0.904415323772388420,\t0.904436655300047130,\t0.904457984566614190,\t0.904479311572036200,\t0.904500636316260100,\t0.904521958799232690,\t0.904543279020900040,\t0.904564596981209170,\t\n0.904585912680106800,\t0.904607226117539630,\t0.904628537293454380,\t0.904649846207797870,\t0.904671152860516690,\t0.904692457251558000,\t0.904713759380867840,\t0.904735059248393260,\t\n0.904756356854081070,\t0.904777652197877870,\t0.904798945279730700,\t0.904820236099586060,\t0.904841524657391210,\t0.904862810953092180,\t0.904884094986636130,\t0.904905376757969890,\t\n0.904926656267040160,\t0.904947933513793770,\t0.904969208498177520,\t0.904990481220138370,\t0.905011751679623330,\t0.905033019876578470,\t0.905054285810951150,\t0.905075549482688090,\t\n0.905096810891736100,\t0.905118070038042230,\t0.905139326921553080,\t0.905160581542215900,\t0.905181833899977080,\t0.905203083994783550,\t0.905224331826582350,\t0.905245577395320300,\t\n0.905266820700944330,\t0.905288061743401370,\t0.905309300522638140,\t0.905330537038602110,\t0.905351771291239340,\t0.905373003280497080,\t0.905394233006322380,\t0.905415460468662170,\t\n0.905436685667463160,\t0.905457908602672500,\t0.905479129274237130,\t0.905500347682104190,\t0.905521563826220070,\t0.905542777706532130,\t0.905563989322987100,\t0.905585198675532220,\t\n0.905606405764114220,\t0.905627610588680240,\t0.905648813149177670,\t0.905670013445552650,\t0.905691211477752670,\t0.905712407245724550,\t0.905733600749415450,\t0.905754791988772400,\t\n0.905775980963742340,\t0.905797167674272320,\t0.905818352120309700,\t0.905839534301800860,\t0.905860714218693190,\t0.905881891870933820,\t0.905903067258469590,\t0.905924240381247750,\t\n0.905945411239215350,\t0.905966579832319320,\t0.905987746160507370,\t0.906008910223725540,\t0.906030072021921540,\t0.906051231555042300,\t0.906072388823034980,\t0.906093543825846610,\t\n0.906114696563424470,\t0.906135847035716040,\t0.906156995242667460,\t0.906178141184226460,\t0.906199284860340180,\t0.906220426270955560,\t0.906241565416019970,\t0.906262702295480450,\t\n0.906283836909284160,\t0.906304969257378690,\t0.906326099339710310,\t0.906347227156226840,\t0.906368352706875210,\t0.906389475991602690,\t0.906410597010356530,\t0.906431715763083790,\t\n0.906452832249732280,\t0.906473946470248150,\t0.906495058424579230,\t0.906516168112672660,\t0.906537275534475720,\t0.906558380689935550,\t0.906579483578999420,\t0.906600584201614600,\t\n0.906621682557728680,\t0.906642778647288150,\t0.906663872470240720,\t0.906684964026533650,\t0.906706053316114090,\t0.906727140338929430,\t0.906748225094926920,\t0.906769307584053830,\t\n0.906790387806257870,\t0.906811465761485520,\t0.906832541449684610,\t0.906853614870802290,\t0.906874686024785830,\t0.906895754911582810,\t0.906916821531140280,\t0.906937885883406180,\t\n0.906958947968326990,\t0.906980007785850310,\t0.907001065335923730,\t0.907022120618494410,\t0.907043173633509840,\t0.907064224380917270,\t0.907085272860664200,\t0.907106319072698340,\t\n0.907127363016966280,\t0.907148404693415840,\t0.907169444101994290,\t0.907190481242649230,\t0.907211516115327910,\t0.907232548719977830,\t0.907253579056546360,\t0.907274607124981420,\t\n0.907295632925229410,\t0.907316656457238470,\t0.907337677720955860,\t0.907358696716328960,\t0.907379713443305370,\t0.907400727901832570,\t0.907421740091858280,\t0.907442750013329190,\t\n0.907463757666193360,\t0.907484763050398050,\t0.907505766165890850,\t0.907526767012619140,\t0.907547765590530630,\t0.907568761899572700,\t0.907589755939693270,\t0.907610747710838940,\t\n0.907631737212957870,\t0.907652724445997430,\t0.907673709409905220,\t0.907694692104628610,\t0.907715672530115310,\t0.907736650686313260,\t0.907757626573169160,\t0.907778600190631060,\t\n0.907799571538646430,\t0.907820540617162890,\t0.907841507426127900,\t0.907862471965489190,\t0.907883434235194350,\t0.907904394235191310,\t0.907925351965426900,\t0.907946307425849030,\t\n0.907967260616405420,\t0.907988211537043680,\t0.908009160187711490,\t0.908030106568356250,\t0.908051050678925890,\t0.908071992519368210,\t0.908092932089630160,\t0.908113869389659770,\t\n0.908134804419404750,\t0.908155737178812710,\t0.908176667667831230,\t0.908197595886408250,\t0.908218521834491590,\t0.908239445512028180,\t0.908260366918966170,\t0.908281286055253380,\t\n0.908302202920837190,\t0.908323117515665630,\t0.908344029839686210,\t0.908364939892846720,\t0.908385847675095340,\t0.908406753186378870,\t0.908427656426645470,\t0.908448557395843070,\t\n0.908469456093919160,\t0.908490352520821660,\t0.908511246676498300,\t0.908532138560896870,\t0.908553028173965330,\t0.908573915515650920,\t0.908594800585901700,\t0.908615683384665580,\t\n0.908636563911890070,\t0.908657442167523310,\t0.908678318151512900,\t0.908699191863806990,\t0.908720063304352840,\t0.908740932473098510,\t0.908761799369991800,\t0.908782663994980640,\t\n0.908803526348012760,\t0.908824386429036070,\t0.908845244237998510,\t0.908866099774848110,\t0.908886953039532150,\t0.908907804031998780,\t0.908928652752195920,\t0.908949499200071400,\t\n0.908970343375573140,\t0.908991185278649080,\t0.909012024909247370,\t0.909032862267315170,\t0.909053697352800950,\t0.909074530165652320,\t0.909095360705817530,\t0.909116188973244200,\t\n0.909137014967880460,\t0.909157838689674260,\t0.909178660138573740,\t0.909199479314526270,\t0.909220296217480020,\t0.909241110847383020,\t0.909261923204183310,\t0.909282733287828830,\t\n0.909303541098267390,\t0.909324346635447260,\t0.909345149899316470,\t0.909365950889822530,\t0.909386749606913680,\t0.909407546050537970,\t0.909428340220643340,\t0.909449132117177930,\t\n0.909469921740089670,\t0.909490709089327050,\t0.909511494164837230,\t0.909532276966568580,\t0.909553057494469350,\t0.909573835748487490,\t0.909594611728570920,\t0.909615385434667910,\t\n0.909636156866726500,\t0.909656926024694950,\t0.909677692908520740,\t0.909698457518152370,\t0.909719219853537760,\t0.909739979914625190,\t0.909760737701362570,\t0.909781493213698170,\t\n0.909802246451580030,\t0.909822997414956650,\t0.909843746103775390,\t0.909864492517984740,\t0.909885236657532960,\t0.909905978522367990,\t0.909926718112438080,\t0.909947455427691400,\t\n0.909968190468076530,\t0.909988923233540750,\t0.910009653724032640,\t0.910030381939500370,\t0.910051107879892180,\t0.910071831545156250,\t0.910092552935240720,\t0.910113272050093740,\t\n0.910133988889664010,\t0.910154703453898930,\t0.910175415742747180,\t0.910196125756156830,\t0.910216833494076120,\t0.910237538956453320,\t0.910258242143236700,\t0.910278943054374850,\t\n0.910299641689815360,\t0.910320338049506630,\t0.910341032133397120,\t0.910361723941435000,\t0.910382413473568630,\t0.910403100729746170,\t0.910423785709916000,\t0.910444468414026710,\t\n0.910465148842025900,\t0.910485826993862160,\t0.910506502869483870,\t0.910527176468839410,\t0.910547847791876920,\t0.910568516838544780,\t0.910589183608791490,\t0.910609848102565510,\t\n0.910630510319814570,\t0.910651170260487360,\t0.910671827924532160,\t0.910692483311897450,\t0.910713136422531490,\t0.910733787256382770,\t0.910754435813399880,\t0.910775082093530530,\t\n0.910795726096723550,\t0.910816367822927190,\t0.910837007272089940,\t0.910857644444160060,\t0.910878279339086270,\t0.910898911956816600,\t0.910919542297300100,\t0.910940170360484360,\t\n0.910960796146318200,\t0.910981419654750100,\t0.911002040885728450,\t0.911022659839201610,\t0.911043276515118180,\t0.911063890913426880,\t0.911084503034075510,\t0.911105112877012900,\t\n0.911125720442187540,\t0.911146325729547790,\t0.911166928739042370,\t0.911187529470619540,\t0.911208127924227900,\t0.911228724099816260,\t0.911249317997332440,\t0.911269909616725380,\t\n0.911290498957943560,\t0.911311086020935360,\t0.911331670805649590,\t0.911352253312034620,\t0.911372833540038950,\t0.911393411489611620,\t0.911413987160700430,\t0.911434560553254220,\t\n0.911455131667221590,\t0.911475700502551110,\t0.911496267059191510,\t0.911516831337091160,\t0.911537393336199100,\t0.911557953056463140,\t0.911578510497832340,\t0.911599065660255280,\t\n0.911619618543680570,\t0.911640169148056790,\t0.911660717473332550,\t0.911681263519456550,\t0.911701807286377730,\t0.911722348774044120,\t0.911742887982404550,\t0.911763424911407830,\t\n0.911783959561002440,\t0.911804491931137220,\t0.911825022021760860,\t0.911845549832821840,\t0.911866075364269220,\t0.911886598616051260,\t0.911907119588116650,\t0.911927638280414230,\t\n0.911948154692892810,\t0.911968668825500980,\t0.911989180678187460,\t0.912009690250901390,\t0.912030197543590710,\t0.912050702556204460,\t0.912071205288691570,\t0.912091705741000620,\t\n0.912112203913080340,\t0.912132699804879650,\t0.912153193416347150,\t0.912173684747432100,\t0.912194173798082430,\t0.912214660568247290,\t0.912235145057875510,\t0.912255627266915890,\t\n0.912276107195317270,\t0.912296584843028340,\t0.912317060209998250,\t0.912337533296175170,\t0.912358004101508250,\t0.912378472625946400,\t0.912398938869438240,\t0.912419402831932790,\t\n0.912439864513378880,\t0.912460323913725340,\t0.912480781032921300,\t0.912501235870914920,\t0.912521688427655460,\t0.912542138703091750,\t0.912562586697172720,\t0.912583032409847280,\t\n0.912603475841064160,\t0.912623916990772390,\t0.912644355858921230,\t0.912664792445458840,\t0.912685226750334370,\t0.912705658773496850,\t0.912726088514895230,\t0.912746515974478420,\t\n0.912766941152195250,\t0.912787364047995100,\t0.912807784661826220,\t0.912828202993637870,\t0.912848619043378990,\t0.912869032810998630,\t0.912889444296445580,\t0.912909853499669020,\t\n0.912930260420617760,\t0.912950665059241160,\t0.912971067415487610,\t0.912991467489306370,\t0.913011865280646480,\t0.913032260789456980,\t0.913052654015686800,\t0.913073044959284870,\t\n0.913093433620200460,\t0.913113819998382810,\t0.913134204093780210,\t0.913154585906342130,\t0.913174965436017510,\t0.913195342682755600,\t0.913215717646505220,\t0.913236090327215640,\t\n0.913256460724836130,\t0.913276828839315160,\t0.913297194670602110,\t0.913317558218646020,\t0.913337919483396040,\t0.913358278464801330,\t0.913378635162810810,\t0.913398989577373870,\t\n0.913419341708439640,\t0.913439691555956830,\t0.913460039119874720,\t0.913480384400142560,\t0.913500727396709400,\t0.913521068109524380,\t0.913541406538536770,\t0.913561742683696050,\t\n0.913582076544950490,\t0.913602408122249800,\t0.913622737415543120,\t0.913643064424779490,\t0.913663389149908300,\t0.913683711590878580,\t0.913704031747639590,\t0.913724349620140930,\t\n0.913744665208330980,\t0.913764978512159430,\t0.913785289531575450,\t0.913805598266528070,\t0.913825904716966900,\t0.913846208882840850,\t0.913866510764099300,\t0.913886810360691860,\t\n0.913907107672567000,\t0.913927402699674430,\t0.913947695441963300,\t0.913967985899383000,\t0.913988274071882660,\t0.914008559959411660,\t0.914028843561919600,\t0.914049124879355080,\t\n0.914069403911667800,\t0.914089680658807020,\t0.914109955120721910,\t0.914130227297362040,\t0.914150497188676580,\t0.914170764794614790,\t0.914191030115126480,\t0.914211293150160360,\t\n0.914231553899665930,\t0.914251812363592540,\t0.914272068541889690,\t0.914292322434506640,\t0.914312574041392880,\t0.914332823362497550,\t0.914353070397770580,\t0.914373315147160580,\t\n0.914393557610617250,\t0.914413797788090070,\t0.914434035679528410,\t0.914454271284881660,\t0.914474504604099180,\t0.914494735637130910,\t0.914514964383925320,\t0.914535190844432360,\t\n0.914555415018601380,\t0.914575636906381990,\t0.914595856507723350,\t0.914616073822575150,\t0.914636288850886770,\t0.914656501592608030,\t0.914676712047687750,\t0.914696920216075520,\t\n0.914717126097721160,\t0.914737329692573820,\t0.914757531000583320,\t0.914777730021698820,\t0.914797926755870460,\t0.914818121203046950,\t0.914838313363178110,\t0.914858503236213430,\t\n0.914878690822102600,\t0.914898876120794900,\t0.914919059132240140,\t0.914939239856387700,\t0.914959418293187500,\t0.914979594442588360,\t0.914999768304540330,\t0.915019939878992770,\t\n0.915040109165895510,\t0.915060276165197810,\t0.915080440876849480,\t0.915100603300800120,\t0.915120763436999550,\t0.915140921285396700,\t0.915161076845941500,\t0.915181230118583770,\t\n0.915201381103272870,\t0.915221529799958410,\t0.915241676208590320,\t0.915261820329118290,\t0.915281962161491380,\t0.915302101705659510,\t0.915322238961572500,\t0.915342373929179720,\t\n0.915362506608431210,\t0.915382636999276240,\t0.915402765101664850,\t0.915422890915546850,\t0.915443014440871170,\t0.915463135677588080,\t0.915483254625647060,\t0.915503371284997920,\t\n0.915523485655590390,\t0.915543597737374150,\t0.915563707530298920,\t0.915583815034314740,\t0.915603920249370650,\t0.915624023175416800,\t0.915644123812402900,\t0.915664222160278650,\t\n0.915684318218993880,\t0.915704411988498280,\t0.915724503468742010,\t0.915744592659674230,\t0.915764679561244850,\t0.915784764173403820,\t0.915804846496100830,\t0.915824926529285820,\t\n0.915845004272908380,\t0.915865079726918550,\t0.915885152891266260,\t0.915905223765900780,\t0.915925292350772250,\t0.915945358645830490,\t0.915965422651025320,\t0.915985484366306670,\t\n0.916005543791624240,\t0.916025600926928310,\t0.916045655772168010,\t0.916065708327293620,\t0.916085758592254830,\t0.916105806567001800,\t0.916125852251484130,\t0.916145895645651960,\t\n0.916165936749455010,\t0.916185975562843540,\t0.916206012085766690,\t0.916226046318174950,\t0.916246078260018030,\t0.916266107911245960,\t0.916286135271808580,\t0.916306160341655910,\t\n0.916326183120737770,\t0.916346203609004540,\t0.916366221806405480,\t0.916386237712890850,\t0.916406251328410690,\t0.916426262652914820,\t0.916446271686353290,\t0.916466278428676120,\t\n0.916486282879833580,\t0.916506285039775050,\t0.916526284908450780,\t0.916546282485810710,\t0.916566277771804990,\t0.916586270766383660,\t0.916606261469496530,\t0.916626249881093760,\t\n0.916646236001125820,\t0.916666219829541880,\t0.916686201366292310,\t0.916706180611327360,\t0.916726157564596860,\t0.916746132226051060,\t0.916766104595639900,\t0.916786074673313410,\t\n0.916806042459022200,\t0.916826007952715400,\t0.916845971154343630,\t0.916865932063857030,\t0.916885890681205520,\t0.916905847006339260,\t0.916925801039208400,\t0.916945752779763420,\t\n0.916965702227953710,\t0.916985649383729730,\t0.917005594247041530,\t0.917025536817839490,\t0.917045477096073540,\t0.917065415081693920,\t0.917085350774650700,\t0.917105284174894560,\t\n0.917125215282374780,\t0.917145144097041950,\t0.917165070618846330,\t0.917184994847738080,\t0.917204916783667220,\t0.917224836426584140,\t0.917244753776439210,\t0.917264668833182140,\t\n0.917284581596763400,\t0.917304492067133270,\t0.917324400244241780,\t0.917344306128039410,\t0.917364209718476210,\t0.917384111015502430,\t0.917404010019068790,\t0.917423906729124770,\t\n0.917443801145620960,\t0.917463693268507630,\t0.917483583097735140,\t0.917503470633253660,\t0.917523355875013550,\t0.917543238822964960,\t0.917563119477058710,\t0.917582997837244170,\t\n0.917602873903472280,\t0.917622747675693180,\t0.917642619153857140,\t0.917662488337914640,\t0.917682355227815830,\t0.917702219823511630,\t0.917722082124951430,\t0.917741942132086040,\t\n0.917761799844865720,\t0.917781655263240960,\t0.917801508387162120,\t0.917821359216579370,\t0.917841207751443400,\t0.917861053991704590,\t0.917880897937312870,\t0.917900739588218940,\t\n0.917920578944373180,\t0.917940416005725960,\t0.917960250772227650,\t0.917980083243828740,\t0.917999913420479930,\t0.918019741302131040,\t0.918039566888732780,\t0.918059390180235520,\t\n0.918079211176589860,\t0.918099029877746280,\t0.918118846283654920,\t0.918138660394266610,\t0.918158472209531950,\t0.918178281729400750,\t0.918198088953823820,\t0.918217893882751660,\t\n0.918237696516134850,\t0.918257496853923770,\t0.918277294896068910,\t0.918297090642520850,\t0.918316884093230310,\t0.918336675248147330,\t0.918356464107222600,\t0.918376250670406740,\t\n0.918396034937650320,\t0.918415816908903730,\t0.918435596584117550,\t0.918455373963242840,\t0.918475149046229290,\t0.918494921833027830,\t0.918514692323589180,\t0.918534460517863690,\t\n0.918554226415802090,\t0.918573990017354960,\t0.918593751322472780,\t0.918613510331106610,\t0.918633267043206360,\t0.918653021458722850,\t0.918672773577606790,\t0.918692523399808890,\t\n0.918712270925279630,\t0.918732016153969710,\t0.918751759085829730,\t0.918771499720810740,\t0.918791238058862540,\t0.918810974099936400,\t0.918830707843982690,\t0.918850439290952340,\t\n0.918870168440795830,\t0.918889895293463880,\t0.918909619848907510,\t0.918929342107076770,\t0.918949062067922710,\t0.918968779731396010,\t0.918988495097447290,\t0.919008208166027350,\t\n0.919027918937086910,\t0.919047627410576770,\t0.919067333586447770,\t0.919087037464650150,\t0.919106739045134850,\t0.919126438327852790,\t0.919146135312754690,\t0.919165829999791130,\t\n0.919185522388913050,\t0.919205212480071480,\t0.919224900273216570,\t0.919244585768299370,\t0.919264268965270800,\t0.919283949864081460,\t0.919303628464682280,\t0.919323304767024060,\t\n0.919342978771057530,\t0.919362650476733930,\t0.919382319884003320,\t0.919401986992816940,\t0.919421651803125630,\t0.919441314314880080,\t0.919460974528031330,\t0.919480632442530200,\t\n0.919500288058327400,\t0.919519941375374180,\t0.919539592393620820,\t0.919559241113018570,\t0.919578887533518130,\t0.919598531655070440,\t0.919618173477626420,\t0.919637813001137010,\t\n0.919657450225553450,\t0.919677085150825800,\t0.919696717776905540,\t0.919716348103743480,\t0.919735976131290540,\t0.919755601859497670,\t0.919775225288315790,\t0.919794846417695820,\t\n0.919814465247589030,\t0.919834081777945790,\t0.919853696008717360,\t0.919873307939854670,\t0.919892917571308750,\t0.919912524903030550,\t0.919932129934970980,\t0.919951732667081080,\t\n0.919971333099312230,\t0.919990931231614680,\t0.920010527063939820,\t0.920030120596238570,\t0.920049711828462070,\t0.920069300760561370,\t0.920088887392487290,\t0.920108471724191410,\t\n0.920128053755624010,\t0.920147633486736450,\t0.920167210917479880,\t0.920186786047805240,\t0.920206358877663550,\t0.920225929407006090,\t0.920245497635783670,\t0.920265063563947990,\t\n0.920284627191449210,\t0.920304188518238920,\t0.920323747544268160,\t0.920343304269487960,\t0.920362858693849480,\t0.920382410817303990,\t0.920401960639802730,\t0.920421508161296310,\t\n0.920441053381735990,\t0.920460596301073130,\t0.920480136919258780,\t0.920499675236243990,\t0.920519211251980110,\t0.920538744966418190,\t0.920558276379509710,\t0.920577805491205270,\t\n0.920597332301456240,\t0.920616856810213880,\t0.920636379017429450,\t0.920655898923053990,\t0.920675416527038770,\t0.920694931829335150,\t0.920714444829894400,\t0.920733955528667320,\t\n0.920753463925605200,\t0.920772970020659500,\t0.920792473813781380,\t0.920811975304922090,\t0.920831474494032910,\t0.920850971381065310,\t0.920870465965969890,\t0.920889958248698460,\t\n0.920909448229201950,\t0.920928935907431970,\t0.920948421283339540,\t0.920967904356876140,\t0.920987385127992940,\t0.921006863596641630,\t0.921026339762772820,\t0.921045813626338190,\t\n0.921065285187289030,\t0.921084754445576580,\t0.921104221401152330,\t0.921123686053967440,\t0.921143148403973380,\t0.921162608451121860,\t0.921182066195363360,\t0.921201521636649700,\t\n0.921220974774932370,\t0.921240425610162510,\t0.921259874142291490,\t0.921279320371270920,\t0.921298764297052370,\t0.921318205919586570,\t0.921337645238825220,\t0.921357082254719790,\t\n0.921376516967221670,\t0.921395949376282220,\t0.921415379481852930,\t0.921434807283885160,\t0.921454232782330740,\t0.921473655977140370,\t0.921493076868265870,\t0.921512495455658720,\t\n0.921531911739270290,\t0.921551325719052070,\t0.921570737394955540,\t0.921590146766932520,\t0.921609553834933810,\t0.921628958598911140,\t0.921648361058816090,\t0.921667761214600260,\t\n0.921687159066214900,\t0.921706554613611730,\t0.921725947856742110,\t0.921745338795557980,\t0.921764727430010140,\t0.921784113760050540,\t0.921803497785630640,\t0.921822879506701940,\t\n0.921842258923216140,\t0.921861636035124610,\t0.921881010842379060,\t0.921900383344931180,\t0.921919753542732150,\t0.921939121435733640,\t0.921958487023887390,\t0.921977850307144960,\t\n0.921997211285457860,\t0.922016569958777680,\t0.922035926327056440,\t0.922055280390245090,\t0.922074632148295550,\t0.922093981601159410,\t0.922113328748788260,\t0.922132673591133820,\t\n0.922152016128147680,\t0.922171356359781540,\t0.922190694285987320,\t0.922210029906716080,\t0.922229363221919730,\t0.922248694231549980,\t0.922268022935558430,\t0.922287349333896890,\t\n0.922306673426516950,\t0.922325995213370330,\t0.922345314694409170,\t0.922364631869584280,\t0.922383946738847830,\t0.922403259302151500,\t0.922422569559447010,\t0.922441877510686070,\t\n0.922461183155820490,\t0.922480486494802300,\t0.922499787527582550,\t0.922519086254113270,\t0.922538382674346290,\t0.922557676788233420,\t0.922576968595726350,\t0.922596258096776810,\t\n0.922615545291336600,\t0.922634830179357990,\t0.922654112760791900,\t0.922673393035590480,\t0.922692671003705670,\t0.922711946665089040,\t0.922731220019692660,\t0.922750491067468200,\t\n0.922769759808367840,\t0.922789026242342820,\t0.922808290369345090,\t0.922827552189326770,\t0.922846811702239480,\t0.922866068908035240,\t0.922885323806665770,\t0.922904576398082990,\t\n0.922923826682239160,\t0.922943074659085430,\t0.922962320328573950,\t0.922981563690656650,\t0.923000804745285450,\t0.923020043492412290,\t0.923039279931989090,\t0.923058514063967550,\t\n0.923077745888300160,\t0.923096975404937960,\t0.923116202613833430,\t0.923135427514938380,\t0.923154650108204740,\t0.923173870393584450,\t0.923193088371029540,\t0.923212304040492150,\t\n0.923231517401923770,\t0.923250728455276560,\t0.923269937200502430,\t0.923289143637553540,\t0.923308347766381820,\t0.923327549586939190,\t0.923346749099177800,\t0.923365946303049690,\t\n0.923385141198506560,\t0.923404333785500460,\t0.923423524063983540,\t0.923442712033907820,\t0.923461897695225350,\t0.923481081047888060,\t0.923500262091848430,\t0.923519440827057840,\t\n0.923538617253468640,\t0.923557791371033000,\t0.923576963179702730,\t0.923596132679430080,\t0.923615299870167110,\t0.923634464751865950,\t0.923653627324478870,\t0.923672787587957460,\t\n0.923691945542254090,\t0.923711101187320800,\t0.923730254523109750,\t0.923749405549573080,\t0.923768554266662930,\t0.923787700674331360,\t0.923806844772530940,\t0.923825986561213060,\t\n0.923845126040330090,\t0.923864263209834390,\t0.923883398069678120,\t0.923902530619813200,\t0.923921660860192010,\t0.923940788790767020,\t0.923959914411489720,\t0.923979037722312710,\t\n0.923998158723188020,\t0.924017277414067920,\t0.924036393794904650,\t0.924055507865650380,\t0.924074619626257370,\t0.924093729076678190,\t0.924112836216864240,\t0.924131941046768320,\t\n0.924151043566342480,\t0.924170143775538970,\t0.924189241674310160,\t0.924208337262608310,\t0.924227430540385590,\t0.924246521507594570,\t0.924265610164186960,\t0.924284696510115240,\t\n0.924303780545331910,\t0.924322862269788990,\t0.924341941683439080,\t0.924361018786234220,\t0.924380093578127120,\t0.924399166059069470,\t0.924418236229013980,\t0.924437304087912800,\t\n0.924456369635718420,\t0.924475432872383100,\t0.924494493797859200,\t0.924513552412099090,\t0.924532608715055380,\t0.924551662706679880,\t0.924570714386925170,\t0.924589763755743640,\t\n0.924608810813087770,\t0.924627855558909810,\t0.924646897993162350,\t0.924665938115797780,\t0.924684975926768240,\t0.924704011426026100,\t0.924723044613523950,\t0.924742075489214280,\t\n0.924761104053049340,\t0.924780130304981740,\t0.924799154244963730,\t0.924818175872948120,\t0.924837195188886850,\t0.924856212192732510,\t0.924875226884437680,\t0.924894239263954750,\t\n0.924913249331236310,\t0.924932257086234720,\t0.924951262528902360,\t0.924970265659192270,\t0.924989266477056260,\t0.925008264982447040,\t0.925027261175317080,\t0.925046255055618990,\t\n0.925065246623305360,\t0.925084235878328440,\t0.925103222820641390,\t0.925122207450195910,\t0.925141189766944930,\t0.925160169770841030,\t0.925179147461836600,\t0.925198122839884340,\t\n0.925217095904936840,\t0.925236066656946580,\t0.925255035095866370,\t0.925274001221648380,\t0.925292965034245300,\t0.925311926533609830,\t0.925330885719694570,\t0.925349842592452120,\t\n0.925368797151834950,\t0.925387749397795890,\t0.925406699330287740,\t0.925425646949262550,\t0.925444592254673240,\t0.925463535246472400,\t0.925482475924612750,\t0.925501414289046860,\t\n0.925520350339727570,\t0.925539284076607680,\t0.925558215499639240,\t0.925577144608775160,\t0.925596071403968380,\t0.925614995885171270,\t0.925633918052336750,\t0.925652837905417410,\t\n0.925671755444366080,\t0.925690670669135570,\t0.925709583579678140,\t0.925728494175946710,\t0.925747402457894000,\t0.925766308425472810,\t0.925785212078635840,\t0.925804113417335930,\t\n0.925823012441525980,\t0.925841909151158160,\t0.925860803546185610,\t0.925879695626561030,\t0.925898585392237240,\t0.925917472843166940,\t0.925936357979303070,\t0.925955240800598210,\t\n0.925974121307005520,\t0.925992999498477350,\t0.926011875374966540,\t0.926030748936426120,\t0.926049620182808790,\t0.926068489114067470,\t0.926087355730154880,\t0.926106220031023940,\t\n0.926125082016627690,\t0.926143941686918490,\t0.926162799041849390,\t0.926181654081373320,\t0.926200506805443080,\t0.926219357214011610,\t0.926238205307031830,\t0.926257051084456770,\t\n0.926275894546238710,\t0.926294735692331010,\t0.926313574522686370,\t0.926332411037257830,\t0.926351245235998320,\t0.926370077118860660,\t0.926388906685797870,\t0.926407733936763010,\t\n0.926426558871708550,\t0.926445381490587750,\t0.926464201793353430,\t0.926483019779958620,\t0.926501835450356250,\t0.926520648804499360,\t0.926539459842340760,\t0.926558268563833830,\t\n0.926577074968931050,\t0.926595879057585450,\t0.926614680829750180,\t0.926633480285378170,\t0.926652277424422470,\t0.926671072246836090,\t0.926689864752572420,\t0.926708654941583720,\t\n0.926727442813823350,\t0.926746228369244470,\t0.926765011607799890,\t0.926783792529442870,\t0.926802571134126340,\t0.926821347421803440,\t0.926840121392427440,\t0.926858893045950820,\t\n0.926877662382326940,\t0.926896429401508850,\t0.926915194103449800,\t0.926933956488102730,\t0.926952716555420770,\t0.926971474305357310,\t0.926990229737864930,\t0.927008982852896900,\t\n0.927027733650406470,\t0.927046482130346570,\t0.927065228292670570,\t0.927083972137331510,\t0.927102713664282540,\t0.927121452873477030,\t0.927140189764867670,\t0.927158924338407740,\t\n0.927177656594050490,\t0.927196386531749180,\t0.927215114151456850,\t0.927233839453126760,\t0.927252562436712060,\t0.927271283102166330,\t0.927290001449441960,\t0.927308717478492640,\t\n0.927327431189271520,\t0.927346142581731870,\t0.927364851655826830,\t0.927383558411509660,\t0.927402262848733950,\t0.927420964967452190,\t0.927439664767618080,\t0.927458362249184760,\t\n0.927477057412105620,\t0.927495750256333800,\t0.927514440781822550,\t0.927533128988525250,\t0.927551814876395380,\t0.927570498445385750,\t0.927589179695449740,\t0.927607858626540940,\t\n0.927626535238612380,\t0.927645209531617550,\t0.927663881505509710,\t0.927682551160242120,\t0.927701218495768480,\t0.927719883512041490,\t0.927738546209014750,\t0.927757206586641630,\t\n0.927775864644875600,\t0.927794520383669830,\t0.927813173802977790,\t0.927831824902753070,\t0.927850473682948480,\t0.927869120143517740,\t0.927887764284414220,\t0.927906406105591270,\t\n0.927925045607002400,\t0.927943682788600730,\t0.927962317650339990,\t0.927980950192173750,\t0.927999580414054840,\t0.928018208315936840,\t0.928036833897773470,\t0.928055457159517980,\t\n0.928074078101123860,\t0.928092696722544460,\t0.928111313023733730,\t0.928129927004644360,\t0.928148538665230170,\t0.928167148005444640,\t0.928185755025241250,\t0.928204359724573490,\t\n0.928222962103394830,\t0.928241562161658650,\t0.928260159899318980,\t0.928278755316328640,\t0.928297348412641330,\t0.928315939188210650,\t0.928334527642990180,\t0.928353113776933410,\t\n0.928371697589993830,\t0.928390279082124900,\t0.928408858253280680,\t0.928427435103414080,\t0.928446009632478700,\t0.928464581840428460,\t0.928483151727216740,\t0.928501719292797120,\t\n0.928520284537123100,\t0.928538847460148810,\t0.928557408061827070,\t0.928575966342111810,\t0.928594522300956630,\t0.928613075938315100,\t0.928631627254140950,\t0.928650176248387640,\t\n0.928668722921008990,\t0.928687267271958830,\t0.928705809301190070,\t0.928724349008656970,\t0.928742886394312910,\t0.928761421458111580,\t0.928779954200006700,\t0.928798484619952070,\t\n0.928817012717901400,\t0.928835538493807960,\t0.928854061947625650,\t0.928872583079308200,\t0.928891101888809300,\t0.928909618376082550,\t0.928928132541081860,\t0.928946644383760840,\t\n0.928965153904073530,\t0.928983661101972950,\t0.929002165977413250,\t0.929020668530348150,\t0.929039168760731340,\t0.929057666668516640,\t0.929076162253657860,\t0.929094655516108590,\t\n0.929113146455822990,\t0.929131635072754200,\t0.929150121366856260,\t0.929168605338083100,\t0.929187086986388410,\t0.929205566311726020,\t0.929224043314049730,\t0.929242517993313700,\t\n0.929260990349470960,\t0.929279460382475770,\t0.929297928092281960,\t0.929316393478843210,\t0.929334856542113560,\t0.929353317282046840,\t0.929371775698596750,\t0.929390231791717540,\t\n0.929408685561362470,\t0.929427137007485690,\t0.929445586130041020,\t0.929464032928982390,\t0.929482477404263710,\t0.929500919555838800,\t0.929519359383661590,\t0.929537796887686340,\t\n0.929556232067866310,\t0.929574664924155640,\t0.929593095456508260,\t0.929611523664878200,\t0.929629949549219400,\t0.929648373109485560,\t0.929666794345631260,\t0.929685213257609670,\t\n0.929703629845374910,\t0.929722044108881150,\t0.929740456048082310,\t0.929758865662932310,\t0.929777272953385080,\t0.929795677919394770,\t0.929814080560915520,\t0.929832480877900710,\t\n0.929850878870304820,\t0.929869274538081660,\t0.929887667881185260,\t0.929906058899569790,\t0.929924447593189150,\t0.929942833961997730,\t0.929961218005948780,\t0.929979599724996890,\t\n0.929997979119095990,\t0.930016356188200220,\t0.930034730932263410,\t0.930053103351239810,\t0.930071473445083560,\t0.930089841213748820,\t0.930108206657189300,\t0.930126569775359120,\t\n0.930144930568212570,\t0.930163289035703670,\t0.930181645177786560,\t0.930199998994415410,\t0.930218350485544130,\t0.930236699651127430,\t0.930255046491118560,\t0.930273391005472130,\t\n0.930291733194142270,\t0.930310073057083020,\t0.930328410594248530,\t0.930346745805593070,\t0.930365078691071100,\t0.930383409250636010,\t0.930401737484242490,\t0.930420063391844580,\t\n0.930438386973396540,\t0.930456708228852510,\t0.930475027158166770,\t0.930493343761293450,\t0.930511658038187030,\t0.930529969988801110,\t0.930548279613090390,\t0.930566586911008910,\t\n0.930584891882510920,\t0.930603194527550800,\t0.930621494846082590,\t0.930639792838060750,\t0.930658088503439670,\t0.930676381842173050,\t0.930694672854215480,\t0.930712961539521210,\t\n0.930731247898044620,\t0.930749531929739860,\t0.930767813634561290,\t0.930786093012463510,\t0.930804370063400110,\t0.930822644787325790,\t0.930840917184194930,\t0.930859187253961770,\t\n0.930877454996580590,\t0.930895720412005860,\t0.930913983500191720,\t0.930932244261093000,\t0.930950502694663400,\t0.930968758800857500,\t0.930987012579629680,\t0.931005264030934310,\t\n0.931023513154725760,\t0.931041759950958500,\t0.931060004419587140,\t0.931078246560565480,\t0.931096486373848120,\t0.931114723859389650,\t0.931132959017144320,\t0.931151191847066630,\t\n0.931169422349110820,\t0.931187650523231600,\t0.931205876369383570,\t0.931224099887520420,\t0.931242321077597190,\t0.931260539939568030,\t0.931278756473387540,\t0.931296970679010180,\t\n0.931315182556390340,\t0.931333392105482600,\t0.931351599326241670,\t0.931369804218621480,\t0.931388006782576720,\t0.931406207018061980,\t0.931424404925031650,\t0.931442600503440410,\t\n0.931460793753242640,\t0.931478984674393160,\t0.931497173266845890,\t0.931515359530555750,\t0.931533543465477230,\t0.931551725071564810,\t0.931569904348773070,\t0.931588081297056500,\t\n0.931606255916369810,\t0.931624428206667800,\t0.931642598167904400,\t0.931660765800034540,\t0.931678931103012700,\t0.931697094076793570,\t0.931715254721331650,\t0.931733413036581640,\t\n0.931751569022498120,\t0.931769722679036020,\t0.931787874006149150,\t0.931806023003792780,\t0.931824169671921280,\t0.931842314010489340,\t0.931860456019451560,\t0.931878595698762750,\t\n0.931896733048377720,\t0.931914868068250520,\t0.931933000758336180,\t0.931951131118589290,\t0.931969259148964560,\t0.931987384849416790,\t0.932005508219900470,\t0.932023629260370410,\t\n0.932041747970781650,\t0.932059864351088120,\t0.932077978401244960,\t0.932096090121206870,\t0.932114199510928550,\t0.932132306570364720,\t0.932150411299470070,\t0.932168513698199750,\t\n0.932186613766507800,\t0.932204711504349360,\t0.932222806911679140,\t0.932240899988451940,\t0.932258990734622480,\t0.932277079150145460,\t0.932295165234975800,\t0.932313248989068530,\t\n0.932331330412377920,\t0.932349409504858890,\t0.932367486266466260,\t0.932385560697155060,\t0.932403632796879880,\t0.932421702565595640,\t0.932439770003257170,\t0.932457835109819500,\t\n0.932475897885236990,\t0.932493958329464800,\t0.932512016442457630,\t0.932530072224170390,\t0.932548125674558030,\t0.932566176793575340,\t0.932584225581177590,\t0.932602272037318820,\t\n0.932620316161954510,\t0.932638357955039350,\t0.932656397416528280,\t0.932674434546376220,\t0.932692469344538090,\t0.932710501810968820,\t0.932728531945623550,\t0.932746559748456660,\t\n0.932764585219423400,\t0.932782608358478590,\t0.932800629165577380,\t0.932818647640674570,\t0.932836663783725100,\t0.932854677594683880,\t0.932872689073506400,\t0.932890698220146920,\t\n0.932908705034560580,\t0.932926709516702530,\t0.932944711666527820,\t0.932962711483991130,\t0.932980708969047830,\t0.932998704121652980,\t0.933016696941761040,\t0.933034687429327380,\t\n0.933052675584307050,\t0.933070661406654960,\t0.933088644896326260,\t0.933106626053275990,\t0.933124604877459070,\t0.933142581368830990,\t0.933160555527346110,\t0.933178527352959920,\t\n0.933196496845627330,\t0.933214464005303610,\t0.933232428831943570,\t0.933250391325502580,\t0.933268351485935900,\t0.933286309313198000,\t0.933304264807244380,\t0.933322217968030050,\t\n0.933340168795510180,\t0.933358117289639910,\t0.933376063450374270,\t0.933394007277668520,\t0.933411948771478150,\t0.933429887931757520,\t0.933447824758462220,\t0.933465759251547290,\t\n0.933483691410967990,\t0.933501621236679460,\t0.933519548728636850,\t0.933537473886795420,\t0.933555396711110540,\t0.933573317201536910,\t0.933591235358030010,\t0.933609151180544990,\t\n0.933627064669037110,\t0.933644975823461620,\t0.933662884643773560,\t0.933680791129928740,\t0.933698695281881540,\t0.933716597099587650,\t0.933734496583002230,\t0.933752393732080520,\t\n0.933770288546777900,\t0.933788181027049640,\t0.933806071172850750,\t0.933823958984137170,\t0.933841844460863270,\t0.933859727602984750,\t0.933877608410456970,\t0.933895486883235090,\t\n0.933913363021274590,\t0.933931236824530610,\t0.933949108292958850,\t0.933966977426514020,\t0.933984844225151820,\t0.934002708688827400,\t0.934020570817496340,\t0.934038430611113800,\t\n0.934056288069635140,\t0.934074143193015740,\t0.934091995981211400,\t0.934109846434176610,\t0.934127694551867280,\t0.934145540334238800,\t0.934163383781246300,\t0.934181224892845500,\t\n0.934199063668991530,\t0.934216900109639980,\t0.934234734214746450,\t0.934252565984265760,\t0.934270395418153710,\t0.934288222516365560,\t0.934306047278857020,\t0.934323869705583230,\t\n0.934341689796499790,\t0.934359507551562500,\t0.934377322970726070,\t0.934395136053946310,\t0.934412946801178810,\t0.934430755212378840,\t0.934448561287501980,\t0.934466365026503820,\t\n0.934484166429339740,\t0.934501965495965430,\t0.934519762226336040,\t0.934537556620407160,\t0.934555348678134390,\t0.934573138399473200,\t0.934590925784379300,\t0.934608710832807940,\t\n0.934626493544714940,\t0.934644273920055890,\t0.934662051958785930,\t0.934679827660860880,\t0.934697601026236110,\t0.934715372054867540,\t0.934733140746710320,\t0.934750907101720370,\t\n0.934768671119853510,\t0.934786432801064550,\t0.934804192145309630,\t0.934821949152544130,\t0.934839703822723740,\t0.934857456155804180,\t0.934875206151740910,\t0.934892953810489760,\t\n0.934910699132006420,\t0.934928442116246040,\t0.934946182763164550,\t0.934963921072717530,\t0.934981657044860800,\t0.934999390679549960,\t0.935017121976740580,\t0.935034850936388720,\t\n0.935052577558449390,\t0.935070301842878650,\t0.935088023789632180,\t0.935105743398665590,\t0.935123460669934680,\t0.935141175603395160,\t0.935158888199002610,\t0.935176598456713190,\t\n0.935194306376482040,\t0.935212011958264980,\t0.935229715202018030,\t0.935247416107696680,\t0.935265114675256860,\t0.935282810904654260,\t0.935300504795844590,\t0.935318196348783990,\t\n0.935335885563427620,\t0.935353572439731500,\t0.935371256977651440,\t0.935388939177143160,\t0.935406619038162690,\t0.935424296560665610,\t0.935441971744608080,\t0.935459644589945350,\t\n0.935477315096633450,\t0.935494983264628320,\t0.935512649093885650,\t0.935530312584361480,\t0.935547973736011400,\t0.935565632548791440,\t0.935583289022657750,\t0.935600943157565480,\t\n0.935618594953470880,\t0.935636244410329780,\t0.935653891528098080,\t0.935671536306731720,\t0.935689178746186400,\t0.935706818846418150,\t0.935724456607383240,\t0.935742092029036800,\t\n0.935759725111335210,\t0.935777355854234270,\t0.935794984257689920,\t0.935812610321658080,\t0.935830234046094780,\t0.935847855430956170,\t0.935865474476197610,\t0.935883091181775370,\t\n0.935900705547645370,\t0.935918317573763650,\t0.935935927260086120,\t0.935953534606568830,\t0.935971139613167690,\t0.935988742279838970,\t0.936006342606538030,\t0.936023940593221360,\t\n0.936041536239844760,\t0.936059129546364390,\t0.936076720512736050,\t0.936094309138916000,\t0.936111895424860510,\t0.936129479370524930,\t0.936147060975865750,\t0.936164640240838790,\t\n0.936182217165400290,\t0.936199791749506290,\t0.936217363993112730,\t0.936234933896175740,\t0.936252501458651800,\t0.936270066680496280,\t0.936287629561665670,\t0.936305190102115880,\t\n0.936322748301803070,\t0.936340304160683480,\t0.936357857678713160,\t0.936375408855848130,\t0.936392957692044890,\t0.936410504187259020,\t0.936428048341446770,\t0.936445590154564410,\t\n0.936463129626568190,\t0.936480666757414040,\t0.936498201547058320,\t0.936515733995457290,\t0.936533264102566760,\t0.936550791868342890,\t0.936568317292742150,\t0.936585840375720680,\t\n0.936603361117234520,\t0.936620879517239930,\t0.936638395575693170,\t0.936655909292550830,\t0.936673420667768260,\t0.936690929701302190,\t0.936708436393108860,\t0.936725940743144410,\t\n0.936743442751365010,\t0.936760942417727120,\t0.936778439742186890,\t0.936795934724700800,\t0.936813427365224550,\t0.936830917663714740,\t0.936848405620127720,\t0.936865891234419550,\t\n0.936883374506546800,\t0.936900855436465510,\t0.936918334024132380,\t0.936935810269503230,\t0.936953284172534430,\t0.936970755733182450,\t0.936988224951403550,\t0.937005691827154210,\t\n0.937023156360390570,\t0.937040618551069020,\t0.937058078399146230,\t0.937075535904577930,\t0.937092991067320800,\t0.937110443887331220,\t0.937127894364565560,\t0.937145342498980070,\t\n0.937162788290531350,\t0.937180231739175860,\t0.937197672844869540,\t0.937215111607568980,\t0.937232548027230660,\t0.937249982103810940,\t0.937267413837266420,\t0.937284843227553230,\t\n0.937302270274627980,\t0.937319694978447360,\t0.937337117338967070,\t0.937354537356144160,\t0.937371955029934870,\t0.937389370360295570,\t0.937406783347182970,\t0.937424193990553430,\t\n0.937441602290363330,\t0.937459008246569580,\t0.937476411859128000,\t0.937493813127995290,\t0.937511212053128150,\t0.937528608634482950,\t0.937546002872016280,\t0.937563394765684510,\t\n0.937580784315444670,\t0.937598171521252470,\t0.937615556383064930,\t0.937632938900838430,\t0.937650319074529560,\t0.937667696904095020,\t0.937685072389491060,\t0.937702445530674610,\t\n0.937719816327602150,\t0.937737184780230050,\t0.937754550888514780,\t0.937771914652413270,\t0.937789276071882010,\t0.937806635146877450,\t0.937823991877356320,\t0.937841346263275310,\t\n0.937858698304591120,\t0.937876048001259900,\t0.937893395353238570,\t0.937910740360483830,\t0.937928083022952160,\t0.937945423340600270,\t0.937962761313384850,\t0.937980096941262830,\t\n0.937997430224190350,\t0.938014761162124230,\t0.938032089755021170,\t0.938049416002837870,\t0.938066739905531130,\t0.938084061463057450,\t0.938101380675373630,\t0.938118697542436710,\t\n0.938136012064202720,\t0.938153324240628690,\t0.938170634071671340,\t0.938187941557287350,\t0.938205246697433660,\t0.938222549492066740,\t0.938239849941143730,\t0.938257148044620900,\t\n0.938274443802455060,\t0.938291737214603240,\t0.938309028281022030,\t0.938326317001668240,\t0.938343603376498690,\t0.938360887405470080,\t0.938378169088539550,\t0.938395448425663360,\t\n0.938412725416798540,\t0.938430000061901910,\t0.938447272360930170,\t0.938464542313840360,\t0.938481809920589160,\t0.938499075181133510,\t0.938516338095430340,\t0.938533598663436110,\t\n0.938550856885107860,\t0.938568112760402530,\t0.938585366289276800,\t0.938602617471687720,\t0.938619866307592090,\t0.938637112796947170,\t0.938654356939709110,\t0.938671598735835170,\t\n0.938688838185282150,\t0.938706075288007090,\t0.938723310043966810,\t0.938740542453118330,\t0.938757772515418480,\t0.938775000230824500,\t0.938792225599292650,\t0.938809448620780310,\t\n0.938826669295244280,\t0.938843887622641700,\t0.938861103602929290,\t0.938878317236064190,\t0.938895528522003200,\t0.938912737460703810,\t0.938929944052122160,\t0.938947148296215730,\t\n0.938964350192941330,\t0.938981549742256230,\t0.938998746944117110,\t0.939015941798481140,\t0.939033134305305660,\t0.939050324464547060,\t0.939067512276162590,\t0.939084697740109390,\t\n0.939101880856344380,\t0.939119061624824720,\t0.939136240045507440,\t0.939153416118349570,\t0.939170589843308370,\t0.939187761220340420,\t0.939204930249403100,\t0.939222096930453440,\t\n0.939239261263448480,\t0.939256423248345460,\t0.939273582885101320,\t0.939290740173673640,\t0.939307895114018690,\t0.939325047706094040,\t0.939342197949856740,\t0.939359345845263930,\t\n0.939376491392272860,\t0.939393634590840470,\t0.939410775440924000,\t0.939427913942480930,\t0.939445050095467750,\t0.939462183899841930,\t0.939479315355560730,\t0.939496444462581180,\t\n0.939513571220860540,\t0.939530695630355960,\t0.939547817691024580,\t0.939564937402824100,\t0.939582054765710880,\t0.939599169779642530,\t0.939616282444576290,\t0.939633392760469310,\t\n0.939650500727278850,\t0.939667606344962160,\t0.939684709613476720,\t0.939701810532779240,\t0.939718909102827180,\t0.939736005323577930,\t0.939753099194988620,\t0.939770190717016510,\t\n0.939787279889618970,\t0.939804366712753250,\t0.939821451186376940,\t0.939838533310446640,\t0.939855613084920050,\t0.939872690509754420,\t0.939889765584907110,\t0.939906838310335280,\t\n0.939923908685996400,\t0.939940976711848060,\t0.939958042387846970,\t0.939975105713950820,\t0.939992166690116870,\t0.940009225316302490,\t0.940026281592465040,\t0.940043335518561900,\t\n0.940060387094550420,\t0.940077436320388320,\t0.940094483196032280,\t0.940111527721440020,\t0.940128569896569010,\t0.940145609721376510,\t0.940162647195819990,\t0.940179682319856940,\t\n0.940196715093444600,\t0.940213745516540690,\t0.940230773589102230,\t0.940247799311086820,\t0.940264822682451930,\t0.940281843703154930,\t0.940298862373153410,\t0.940315878692404630,\t\n0.940332892660866500,\t0.940349904278495850,\t0.940366913545250480,\t0.940383920461087760,\t0.940400925025965280,\t0.940417927239840410,\t0.940434927102670850,\t0.940451924614413850,\t\n0.940468919775027450,\t0.940485912584468340,\t0.940502903042694460,\t0.940519891149663390,\t0.940536876905332610,\t0.940553860309659600,\t0.940570841362601940,\t0.940587820064117120,\t\n0.940604796414163060,\t0.940621770412696790,\t0.940638742059676130,\t0.940655711355058430,\t0.940672678298801630,\t0.940689642890863100,\t0.940706605131200410,\t0.940723565019771500,\t\n0.940740522556533400,\t0.940757477741444030,\t0.940774430574460860,\t0.940791381055541720,\t0.940808329184644080,\t0.940825274961725630,\t0.940842218386744090,\t0.940859159459657150,\t\n0.940876098180422060,\t0.940893034548996750,\t0.940909968565338820,\t0.940926900229406060,\t0.940943829541155960,\t0.940960756500546340,\t0.940977681107535100,\t0.940994603362079300,\t\n0.941011523264137060,\t0.941028440813665990,\t0.941045356010623890,\t0.941062268854968350,\t0.941079179346657080,\t0.941096087485647880,\t0.941112993271898790,\t0.941129896705366950,\t\n0.941146797786010400,\t0.941163696513786730,\t0.941180592888653860,\t0.941197486910569590,\t0.941214378579491530,\t0.941231267895377590,\t0.941248154858185690,\t0.941265039467873100,\t\n0.941281921724397950,\t0.941298801627718060,\t0.941315679177791130,\t0.941332554374574970,\t0.941349427218027390,\t0.941366297708106650,\t0.941383165844769780,\t0.941400031627975030,\t\n0.941416895057680110,\t0.941433756133843060,\t0.941450614856421560,\t0.941467471225373550,\t0.941484325240656950,\t0.941501176902229680,\t0.941518026210049320,\t0.941534873164073800,\t\n0.941551717764261160,\t0.941568560010569100,\t0.941585399902955760,\t0.941602237441378940,\t0.941619072625796470,\t0.941635905456166600,\t0.941652735932446690,\t0.941669564054594900,\t\n0.941686389822569250,\t0.941703213236327660,\t0.941720034295827960,\t0.941736853001028160,\t0.941753669351886650,\t0.941770483348360550,\t0.941787294990408250,\t0.941804104277987770,\t\n0.941820911211057040,\t0.941837715789573980,\t0.941854518013496620,\t0.941871317882783000,\t0.941888115397391370,\t0.941904910557279210,\t0.941921703362404770,\t0.941938493812725990,\t\n0.941955281908200990,\t0.941972067648787830,\t0.941988851034444520,\t0.942005632065129330,\t0.942022410740799730,\t0.942039187061414210,\t0.942055961026930570,\t0.942072732637307180,\t\n0.942089501892501850,\t0.942106268792472830,\t0.942123033337178170,\t0.942139795526576120,\t0.942156555360624370,\t0.942173312839281190,\t0.942190067962504820,\t0.942206820730253190,\t\n0.942223571142484450,\t0.942240319199156850,\t0.942257064900228540,\t0.942273808245657760,\t0.942290549235402120,\t0.942307287869420200,\t0.942324024147670030,\t0.942340758070109860,\t\n0.942357489636697740,\t0.942374218847391810,\t0.942390945702150760,\t0.942407670200931970,\t0.942424392343694130,\t0.942441112130395160,\t0.942457829560993440,\t0.942474544635447220,\t\n0.942491257353714640,\t0.942507967715753850,\t0.942524675721523430,\t0.942541381370981090,\t0.942558084664085190,\t0.942574785600794220,\t0.942591484181066200,\t0.942608180404859500,\t\n0.942624874272132370,\t0.942641565782842970,\t0.942658254936949990,\t0.942674941734411130,\t0.942691626175184870,\t0.942708308259229580,\t0.942724987986503500,\t0.942741665356964910,\t\n0.942758340370572160,\t0.942775013027283950,\t0.942791683327057760,\t0.942808351269852520,\t0.942825016855626250,\t0.942841680084337550,\t0.942858340955944670,\t0.942874999470405870,\t\n0.942891655627679630,\t0.942908309427724410,\t0.942924960870498260,\t0.942941609955959660,\t0.942958256684067080,\t0.942974901054778770,\t0.942991543068053330,\t0.943008182723848900,\t\n0.943024820022124400,\t0.943041454962837530,\t0.943058087545947000,\t0.943074717771411280,\t0.943091345639188730,\t0.943107971149237830,\t0.943124594301517070,\t0.943141215095984810,\t\n0.943157833532599740,\t0.943174449611319800,\t0.943191063332103790,\t0.943207674694910070,\t0.943224283699697130,\t0.943240890346423560,\t0.943257494635047710,\t0.943274096565528190,\t\n0.943290696137823680,\t0.943307293351892120,\t0.943323888207692420,\t0.943340480705182840,\t0.943357070844322190,\t0.943373658625068830,\t0.943390244047381370,\t0.943406827111218480,\t\n0.943423407816538330,\t0.943439986163299600,\t0.943456562151460900,\t0.943473135780980800,\t0.943489707051817890,\t0.943506275963930660,\t0.943522842517277800,\t0.943539406711818130,\t\n0.943555968547509670,\t0.943572528024311240,\t0.943589085142181540,\t0.943605639901079040,\t0.943622192300962450,\t0.943638742341790460,\t0.943655290023521550,\t0.943671835346114760,\t\n0.943688378309528010,\t0.943704918913720440,\t0.943721457158650520,\t0.943737993044276860,\t0.943754526570558360,\t0.943771057737453400,\t0.943787586544921230,\t0.943804112992919770,\t\n0.943820637081407950,\t0.943837158810344580,\t0.943853678179688350,\t0.943870195189397850,\t0.943886709839431900,\t0.943903222129749200,\t0.943919732060308770,\t0.943936239631068650,\t\n0.943952744841987880,\t0.943969247693025370,\t0.943985748184139720,\t0.944002246315289620,\t0.944018742086433990,\t0.944035235497531770,\t0.944051726548541080,\t0.944068215239421190,\t\n0.944084701570130690,\t0.944101185540628500,\t0.944117667150873310,\t0.944134146400824050,\t0.944150623290439310,\t0.944167097819678340,\t0.944183569988499280,\t0.944200039796861290,\t\n0.944216507244723280,\t0.944232972332043950,\t0.944249435058782230,\t0.944265895424896920,\t0.944282353430346830,\t0.944298809075091230,\t0.944315262359088250,\t0.944331713282297150,\t\n0.944348161844676740,\t0.944364608046185940,\t0.944381051886783560,\t0.944397493366428640,\t0.944413932485080210,\t0.944430369242696740,\t0.944446803639237280,\t0.944463235674660840,\t\n0.944479665348926250,\t0.944496092661992640,\t0.944512517613818600,\t0.944528940204363400,\t0.944545360433586170,\t0.944561778301445170,\t0.944578193807899760,\t0.944594606952908870,\t\n0.944611017736431410,\t0.944627426158426430,\t0.944643832218852840,\t0.944660235917670120,\t0.944676637254836420,\t0.944693036230311090,\t0.944709432844053180,\t0.944725827096021710,\t\n0.944742218986175720,\t0.944758608514474130,\t0.944774995680875970,\t0.944791380485340730,\t0.944807762927826640,\t0.944824143008293200,\t0.944840520726699440,\t0.944856896083004270,\t\n0.944873269077166960,\t0.944889639709146410,\t0.944906007978901790,\t0.944922373886392440,\t0.944938737431576860,\t0.944955098614414510,\t0.944971457434864330,\t0.944987813892885550,\t\n0.945004167988437230,\t0.945020519721478380,\t0.945036869091968600,\t0.945053216099866370,\t0.945069560745131150,\t0.945085903027722000,\t0.945102242947598040,\t0.945118580504718530,\t\n0.945134915699042510,\t0.945151248530529230,\t0.945167578999138170,\t0.945183907104827800,\t0.945200232847557720,\t0.945216556227287060,\t0.945232877243974980,\t0.945249195897580720,\t\n0.945265512188063430,\t0.945281826115382360,\t0.945298137679497000,\t0.945314446880366140,\t0.945330753717949060,\t0.945347058192205100,\t0.945363360303093540,\t0.945379660050573500,\t\n0.945395957434604360,\t0.945412252455145600,\t0.945428545112155900,\t0.945444835405594870,\t0.945461123335421760,\t0.945477408901595820,\t0.945493692104076410,\t0.945509972942822690,\t\n0.945526251417794120,\t0.945542527528950180,\t0.945558801276249580,\t0.945575072659652020,\t0.945591341679116850,\t0.945607608334603220,\t0.945623872626070620,\t0.945640134553478280,\t\n0.945656394116785930,\t0.945672651315952350,\t0.945688906150937040,\t0.945705158621699570,\t0.945721408728199210,\t0.945737656470395200,\t0.945753901848247150,\t0.945770144861714400,\t\n0.945786385510756440,\t0.945802623795332310,\t0.945818859715401580,\t0.945835093270923740,\t0.945851324461858160,\t0.945867553288164300,\t0.945883779749801530,\t0.945900003846729230,\t\n0.945916225578907310,\t0.945932444946294470,\t0.945948661948850630,\t0.945964876586535050,\t0.945981088859307320,\t0.945997298767126790,\t0.946013506309953070,\t0.946029711487745840,\t\n0.946045914300464030,\t0.946062114748067560,\t0.946078312830515690,\t0.946094508547768110,\t0.946110701899784190,\t0.946126892886523520,\t0.946143081507945680,\t0.946159267764010380,\t\n0.946175451654676540,\t0.946191633179904180,\t0.946207812339652790,\t0.946223989133881730,\t0.946240163562550810,\t0.946256335625619390,\t0.946272505323047190,\t0.946288672654793990,\t\n0.946304837620818850,\t0.946321000221081570,\t0.946337160455541840,\t0.946353318324159140,\t0.946369473826893290,\t0.946385626963703650,\t0.946401777734550140,\t0.946417926139392020,\t\n0.946434072178189090,\t0.946450215850900940,\t0.946466357157487280,\t0.946482496097907690,\t0.946498632672121860,\t0.946514766880089510,\t0.946530898721770540,\t0.946547028197124000,\t\n0.946563155306109790,\t0.946579280048687850,\t0.946595402424817660,\t0.946611522434458900,\t0.946627640077571390,\t0.946643755354115050,\t0.946659868264049020,\t0.946675978807333340,\t\n0.946692086983927710,\t0.946708192793791930,\t0.946724296236885590,\t0.946740397313168500,\t0.946756496022600480,\t0.946772592365141440,\t0.946788686340750640,\t0.946804777949388110,\t\n0.946820867191013770,\t0.946836954065587100,\t0.946853038573068130,\t0.946869120713416560,\t0.946885200486592190,\t0.946901277892555070,\t0.946917352931264440,\t0.946933425602680570,\t\n0.946949495906763030,\t0.946965563843471750,\t0.946981629412766530,\t0.946997692614607310,\t0.947013753448954110,\t0.947029811915766300,\t0.947045868015003900,\t0.947061921746626840,\t\n0.947077973110594940,\t0.947094022106868110,\t0.947110068735406260,\t0.947126112996169220,\t0.947142154889117240,\t0.947158194414209560,\t0.947174231571406340,\t0.947190266360667610,\t\n0.947206298781953170,\t0.947222328835223060,\t0.947238356520437090,\t0.947254381837555170,\t0.947270404786537570,\t0.947286425367343750,\t0.947302443579933870,\t0.947318459424267840,\t\n0.947334472900305700,\t0.947350484008007370,\t0.947366492747332760,\t0.947382499118242240,\t0.947398503120695290,\t0.947414504754651940,\t0.947430504020072450,\t0.947446500916916620,\t\n0.947462495445144490,\t0.947478487604716200,\t0.947494477395591670,\t0.947510464817731270,\t0.947526449871094360,\t0.947542432555641410,\t0.947558412871332360,\t0.947574390818127220,\t\n0.947590366395986150,\t0.947606339604869060,\t0.947622310444736550,\t0.947638278915547860,\t0.947654245017263590,\t0.947670208749843650,\t0.947686170113248180,\t0.947702129107437340,\t\n0.947718085732371150,\t0.947734039988009650,\t0.947749991874313410,\t0.947765941391241930,\t0.947781888538755560,\t0.947797833316814550,\t0.947813775725378840,\t0.947829715764408780,\t\n0.947845653433864400,\t0.947861588733705850,\t0.947877521663893720,\t0.947893452224387370,\t0.947909380415147500,\t0.947925306236134140,\t0.947941229687307430,\t0.947957150768627740,\t\n0.947973069480055110,\t0.947988985821550220,\t0.948004899793072450,\t0.948020811394582500,\t0.948036720626040500,\t0.948052627487406710,\t0.948068531978641270,\t0.948084434099704660,\t\n0.948100333850556810,\t0.948116231231158510,\t0.948132126241469250,\t0.948148018881449840,\t0.948163909151060190,\t0.948179797050260900,\t0.948195682579012100,\t0.948211565737274050,\t\n0.948227446525007120,\t0.948243324942171780,\t0.948259200988727960,\t0.948275074664636120,\t0.948290945969856520,\t0.948306814904349650,\t0.948322681468075630,\t0.948338545660994960,\t\n0.948354407483068210,\t0.948370266934255190,\t0.948386124014516500,\t0.948401978723812490,\t0.948417831062103530,\t0.948433681029350000,\t0.948449528625512240,\t0.948465373850550630,\t\n0.948481216704425980,\t0.948497057187097870,\t0.948512895298527230,\t0.948528731038674300,\t0.948544564407499570,\t0.948560395404963400,\t0.948576224031026260,\t0.948592050285648750,\t\n0.948607874168791000,\t0.948623695680413490,\t0.948639514820476700,\t0.948655331588941110,\t0.948671145985767290,\t0.948686958010915520,\t0.948702767664346360,\t0.948718574946020630,\t\n0.948734379855898150,\t0.948750182393939710,\t0.948765982560105800,\t0.948781780354357010,\t0.948797575776653690,\t0.948813368826956440,\t0.948829159505225840,\t0.948844947811422480,\t\n0.948860733745506610,\t0.948876517307438830,\t0.948892298497179820,\t0.948908077314689960,\t0.948923853759929940,\t0.948939627832860340,\t0.948955399533441990,\t0.948971168861634800,\t\n0.948986935817399680,\t0.949002700400697230,\t0.949018462611488030,\t0.949034222449732680,\t0.949049979915391750,\t0.949065735008425840,\t0.949081487728795970,\t0.949097238076462070,\t\n0.949112986051385050,\t0.949128731653525510,\t0.949144474882844260,\t0.949160215739301760,\t0.949175954222858720,\t0.949191690333476060,\t0.949207424071113910,\t0.949223155435733210,\t\n0.949238884427294650,\t0.949254611045758810,\t0.949270335291086510,\t0.949286057163238330,\t0.949301776662174970,\t0.949317493787857570,\t0.949333208540246050,\t0.949348920919301560,\t\n0.949364630924984800,\t0.949380338557256340,\t0.949396043816077120,\t0.949411746701407820,\t0.949427447213209040,\t0.949443145351442030,\t0.949458841116066820,\t0.949474534507044550,\t\n0.949490225524335930,\t0.949505914167901750,\t0.949521600437702840,\t0.949537284333699770,\t0.949552965855853910,\t0.949568645004125300,\t0.949584321778475070,\t0.949599996178864150,\t\n0.949615668205253120,\t0.949631337857602900,\t0.949647005135874410,\t0.949662670040028360,\t0.949678332570025980,\t0.949693992725827440,\t0.949709650507393870,\t0.949725305914686290,\t\n0.949740958947665300,\t0.949756609606292050,\t0.949772257890527220,\t0.949787903800331730,\t0.949803547335666850,\t0.949819188496492720,\t0.949834827282770690,\t0.949850463694461470,\t\n0.949866097731526190,\t0.949881729393925680,\t0.949897358681620840,\t0.949912985594572820,\t0.949928610132742100,\t0.949944232296089820,\t0.949959852084577010,\t0.949975469498164580,\t\n0.949991084536813470,\t0.950006697200484580,\t0.950022307489139070,\t0.950037915402737960,\t0.950053520941241850,\t0.950069124104611860,\t0.950084724892809150,\t0.950100323305794530,\t\n0.950115919343529240,\t0.950131513005973980,\t0.950147104293090350,\t0.950162693204838700,\t0.950178279741180190,\t0.950193863902076050,\t0.950209445687487220,\t0.950225025097374830,\t\n0.950240602131699920,\t0.950256176790423400,\t0.950271749073506760,\t0.950287318980910460,\t0.950302886512595870,\t0.950318451668524020,\t0.950334014448656170,\t0.950349574852953130,\t\n0.950365132881376250,\t0.950380688533886460,\t0.950396241810445350,\t0.950411792711013280,\t0.950427341235551730,\t0.950442887384021830,\t0.950458431156384730,\t0.950473972552601460,\t\n0.950489511572633390,\t0.950505048216441770,\t0.950520582483987190,\t0.950536114375231220,\t0.950551643890135020,\t0.950567171028659620,\t0.950582695790766260,\t0.950598218176416320,\t\n0.950613738185570710,\t0.950629255818191020,\t0.950644771074237950,\t0.950660283953672970,\t0.950675794456457220,\t0.950691302582552080,\t0.950706808331918560,\t0.950722311704518150,\t\n0.950737812700311880,\t0.950753311319261440,\t0.950768807561327310,\t0.950784301426471300,\t0.950799792914654440,\t0.950815282025838090,\t0.950830768759983620,\t0.950846253117052180,\t\n0.950861735097005440,\t0.950877214699804020,\t0.950892691925409590,\t0.950908166773783430,\t0.950923639244886760,\t0.950939109338681090,\t0.950954577055127650,\t0.950970042394187810,\t\n0.950985505355823050,\t0.951000965939994280,\t0.951016424146663100,\t0.951031879975790860,\t0.951047333427338940,\t0.951062784501268690,\t0.951078233197541370,\t0.951093679516118900,\t\n0.951109123456961860,\t0.951124565020032060,\t0.951140004205290770,\t0.951155441012699550,\t0.951170875442219680,\t0.951186307493812610,\t0.951201737167439830,\t0.951217164463062930,\t\n0.951232589380642920,\t0.951248011920141410,\t0.951263432081519870,\t0.951278849864739650,\t0.951294265269762460,\t0.951309678296549550,\t0.951325088945062400,\t0.951340497215262810,\t\n0.951355903107111710,\t0.951371306620570900,\t0.951386707755601750,\t0.951402106512165950,\t0.951417502890224750,\t0.951432896889739870,\t0.951448288510672980,\t0.951463677752985130,\t\n0.951479064616638110,\t0.951494449101593310,\t0.951509831207812520,\t0.951525210935257100,\t0.951540588283888660,\t0.951555963253668760,\t0.951571335844559220,\t0.951586706056521070,\t\n0.951602073889516120,\t0.951617439343505960,\t0.951632802418452270,\t0.951648163114316550,\t0.951663521431060480,\t0.951678877368645540,\t0.951694230927033650,\t0.951709582106185950,\t\n0.951724930906064360,\t0.951740277326630360,\t0.951755621367845750,\t0.951770963029672010,\t0.951786302312070840,\t0.951801639215004270,\t0.951816973738433210,\t0.951832305882319820,\t\n0.951847635646625670,\t0.951862963031312460,\t0.951878288036341670,\t0.951893610661675330,\t0.951908930907274910,\t0.951924248773102440,\t0.951939564259119080,\t0.951954877365286830,\t\n0.951970188091567300,\t0.951985496437922410,\t0.952000802404313730,\t0.952016105990702970,\t0.952031407197052370,\t0.952046706023322860,\t0.952062002469476590,\t0.952077296535475350,\t\n0.952092588221280960,\t0.952107877526855000,\t0.952123164452159280,\t0.952138448997155720,\t0.952153731161806350,\t0.952169010946072310,\t0.952184288349915860,\t0.952199563373298590,\t\n0.952214836016182400,\t0.952230106278529220,\t0.952245374160300640,\t0.952260639661458690,\t0.952275902781965390,\t0.952291163521782110,\t0.952306421880870890,\t0.952321677859193640,\t\n0.952336931456712170,\t0.952352182673388390,\t0.952367431509184130,\t0.952382677964061620,\t0.952397922037982130,\t0.952413163730907790,\t0.952428403042800520,\t0.952443639973622250,\t\n0.952458874523335000,\t0.952474106691900470,\t0.952489336479280690,\t0.952504563885437800,\t0.952519788910333290,\t0.952535011553929280,\t0.952550231816187700,\t0.952565449697070580,\t\n0.952580665196539830,\t0.952595878314557390,\t0.952611089051085380,\t0.952626297406085840,\t0.952641503379520250,\t0.952656706971350850,\t0.952671908181539790,\t0.952687107010048990,\t\n0.952702303456840370,\t0.952717497521875960,\t0.952732689205118110,\t0.952747878506528200,\t0.952763065426068700,\t0.952778249963701530,\t0.952793432119388610,\t0.952808611893092180,\t\n0.952823789284774290,\t0.952838964294396850,\t0.952854136921922330,\t0.952869307167312110,\t0.952884475030528750,\t0.952899640511534090,\t0.952914803610290350,\t0.952929964326759690,\t\n0.952945122660904030,\t0.952960278612685840,\t0.952975432182066710,\t0.952990583369008990,\t0.953005732173474730,\t0.953020878595426280,\t0.953036022634825560,\t0.953051164291634830,\t\n0.953066303565816120,\t0.953081440457331900,\t0.953096574966143860,\t0.953111707092214490,\t0.953126836835505700,\t0.953141964195979850,\t0.953157089173599090,\t0.953172211768325670,\t\n0.953187331980121730,\t0.953202449808949640,\t0.953217565254771190,\t0.953232678317548880,\t0.953247788997244830,\t0.953262897293821300,\t0.953278003207240540,\t0.953293106737464700,\t\n0.953308207884456470,\t0.953323306648177440,\t0.953338403028590080,\t0.953353497025656750,\t0.953368588639339710,\t0.953383677869601100,\t0.953398764716403390,\t0.953413849179708730,\t\n0.953428931259479700,\t0.953444010955678100,\t0.953459088268266530,\t0.953474163197207130,\t0.953489235742462360,\t0.953504305903994600,\t0.953519373681765980,\t0.953534439075739200,\t\n0.953549502085875970,\t0.953564562712139070,\t0.953579620954490780,\t0.953594676812893450,\t0.953609730287309440,\t0.953624781377701010,\t0.953639830084030750,\t0.953654876406261120,\t\n0.953669920344354050,\t0.953684961898272120,\t0.953700001067977810,\t0.953715037853433590,\t0.953730072254601600,\t0.953745104271444540,\t0.953760133903924780,\t0.953775161152004890,\t\n0.953790186015646800,\t0.953805208494813320,\t0.953820228589466690,\t0.953835246299569620,\t0.953850261625084350,\t0.953865274565973480,\t0.953880285122199690,\t0.953895293293724910,\t\n0.953910299080511840,\t0.953925302482523050,\t0.953940303499721030,\t0.953955302132068250,\t0.953970298379527290,\t0.953985292242060410,\t0.954000283719630750,\t0.954015272812200000,\t\n0.954030259519731080,\t0.954045243842186470,\t0.954060225779528870,\t0.954075205331720630,\t0.954090182498724460,\t0.954105157280502710,\t0.954120129677018420,\t0.954135099688233510,\t\n0.954150067314110780,\t0.954165032554613050,\t0.954179995409702550,\t0.954194955879342220,\t0.954209913963494420,\t0.954224869662122170,\t0.954239822975187390,\t0.954254773902653120,\t\n0.954269722444481830,\t0.954284668600636320,\t0.954299612371079080,\t0.954314553755772900,\t0.954329492754680260,\t0.954344429367764090,\t0.954359363594986740,\t0.954374295436310920,\t\n0.954389224891699310,\t0.954404151961114610,\t0.954419076644519640,\t0.954433998941876970,\t0.954448918853149530,\t0.954463836378299460,\t0.954478751517289890,\t0.954493664270083420,\t\n0.954508574636642850,\t0.954523482616930760,\t0.954538388210909970,\t0.954553291418543280,\t0.954568192239793500,\t0.954583090674623100,\t0.954597986722994900,\t0.954612880384871800,\t\n0.954627771660216400,\t0.954642660548991610,\t0.954657547051160240,\t0.954672431166684880,\t0.954687312895528770,\t0.954702192237654180,\t0.954717069193024010,\t0.954731943761601200,\t\n0.954746815943348540,\t0.954761685738228840,\t0.954776553146205020,\t0.954791418167239890,\t0.954806280801296150,\t0.954821141048336600,\t0.954835998908324160,\t0.954850854381221750,\t\n0.954865707466992290,\t0.954880558165598470,\t0.954895406477003220,\t0.954910252401169780,\t0.954925095938060520,\t0.954939937087638360,\t0.954954775849866540,\t0.954969612224707660,\t\n0.954984446212124750,\t0.954999277812080720,\t0.955014107024538590,\t0.955028933849461300,\t0.955043758286811540,\t0.955058580336552330,\t0.955073399998646710,\t0.955088217273057590,\t\n0.955103032159747900,\t0.955117844658680660,\t0.955132654769819010,\t0.955147462493125540,\t0.955162267828563280,\t0.955177070776095480,\t0.955191871335684950,\t0.955206669507294830,\t\n0.955221465290887920,\t0.955236258686427360,\t0.955251049693876530,\t0.955265838313197670,\t0.955280624544354360,\t0.955295408387309310,\t0.955310189842025870,\t0.955324968908466960,\t\n0.955339745586595510,\t0.955354519876375100,\t0.955369291777768080,\t0.955384061290737830,\t0.955398828415247370,\t0.955413593151259950,\t0.955428355498738390,\t0.955443115457646040,\t\n0.955457873027945940,\t0.955472628209601330,\t0.955487381002575020,\t0.955502131406830160,\t0.955516879422329990,\t0.955531625049037550,\t0.955546368286916190,\t0.955561109135928840,\t\n0.955575847596038640,\t0.955590583667209170,\t0.955605317349403020,\t0.955620048642583430,\t0.955634777546713890,\t0.955649504061757300,\t0.955664228187676930,\t0.955678949924436030,\t\n0.955693669271998060,\t0.955708386230325610,\t0.955723100799382270,\t0.955737812979131070,\t0.955752522769535370,\t0.955767230170558420,\t0.955781935182163370,\t0.955796637804313450,\t\n0.955811338036972160,\t0.955826035880102290,\t0.955840731333667430,\t0.955855424397630600,\t0.955870115071955300,\t0.955884803356604750,\t0.955899489251542110,\t0.955914172756730740,\t\n0.955928853872134220,\t0.955943532597715360,\t0.955958208933437640,\t0.955972882879264300,\t0.955987554435158930,\t0.956002223601084560,\t0.956016890377004660,\t0.956031554762882710,\t\n0.956046216758681730,\t0.956060876364365210,\t0.956075533579896390,\t0.956090188405238850,\t0.956104840840355740,\t0.956119490885210640,\t0.956134138539766700,\t0.956148783803987710,\t\n0.956163426677836600,\t0.956178067161276850,\t0.956192705254271910,\t0.956207340956785170,\t0.956221974268780190,\t0.956236605190220130,\t0.956251233721068910,\t0.956265859861289420,\t\n0.956280483610845170,\t0.956295104969699720,\t0.956309723937816550,\t0.956324340515159020,\t0.956338954701690720,\t0.956353566497375020,\t0.956368175902175600,\t0.956382782916055500,\t\n0.956397387538978410,\t0.956411989770907910,\t0.956426589611807380,\t0.956441187061640500,\t0.956455782120370520,\t0.956470374787961150,\t0.956484965064376080,\t0.956499552949578340,\t\n0.956514138443531730,\t0.956528721546199830,\t0.956543302257546020,\t0.956557880577533990,\t0.956572456506127320,\t0.956587030043289710,\t0.956601601188984190,\t0.956616169943174780,\t\n0.956630736305824960,\t0.956645300276898200,\t0.956659861856358320,\t0.956674421044168670,\t0.956688977840293050,\t0.956703532244695180,\t0.956718084257338290,\t0.956732633878186080,\t\n0.956747181107202360,\t0.956761725944350720,\t0.956776268389594730,\t0.956790808442897990,\t0.956805346104224300,\t0.956819881373537570,\t0.956834414250800850,\t0.956848944735978040,\t\n0.956863472829032840,\t0.956877998529929050,\t0.956892521838630160,\t0.956907042755100080,\t0.956921561279302610,\t0.956936077411200900,\t0.956950591150759090,\t0.956965102497940760,\t\n0.956979611452709710,\t0.956994118015029650,\t0.957008622184864270,\t0.957023123962177260,\t0.957037623346932760,\t0.957052120339094040,\t0.957066614938624880,\t0.957081107145489220,\t\n0.957095596959650850,\t0.957110084381073370,\t0.957124569409720790,\t0.957139052045557050,\t0.957153532288545380,\t0.957168010138649830,\t0.957182485595834300,\t0.957196958660062600,\t\n0.957211429331298440,\t0.957225897609505720,\t0.957240363494648250,\t0.957254826986690180,\t0.957269288085594750,\t0.957283746791326110,\t0.957298203103848060,\t0.957312657023124510,\t\n0.957327108549119400,\t0.957341557681796520,\t0.957356004421119680,\t0.957370448767053020,\t0.957384890719560120,\t0.957399330278604910,\t0.957413767444151410,\t0.957428202216163540,\t\n0.957442634594604990,\t0.957457064579440020,\t0.957471492170632650,\t0.957485917368146140,\t0.957500340171944960,\t0.957514760581992920,\t0.957529178598253930,\t0.957543594220692020,\t\n0.957558007449271220,\t0.957572418283955340,\t0.957586826724708630,\t0.957601232771494560,\t0.957615636424277490,\t0.957630037683021350,\t0.957644436547690050,\t0.957658833018247610,\t\n0.957673227094658190,\t0.957687618776885690,\t0.957702008064894360,\t0.957716394958647800,\t0.957730779458110250,\t0.957745161563245630,\t0.957759541274018300,\t0.957773918590391960,\t\n0.957788293512330860,\t0.957802666039799360,\t0.957817036172760930,\t0.957831403911179820,\t0.957845769255020190,\t0.957860132204246260,\t0.957874492758821970,\t0.957888850918711340,\t\n0.957903206683878630,\t0.957917560054288190,\t0.957931911029903600,\t0.957946259610689240,\t0.957960605796609240,\t0.957974949587627740,\t0.957989290983708770,\t0.958003629984816700,\t\n0.958017966590915650,\t0.958032300801969550,\t0.958046632617942650,\t0.958060962038799200,\t0.958075289064503340,\t0.958089613695019330,\t0.958103935930311180,\t0.958118255770343150,\t\n0.958132573215079830,\t0.958146888264484800,\t0.958161200918522530,\t0.958175511177157270,\t0.958189819040353270,\t0.958204124508074680,\t0.958218427580285860,\t0.958232728256950830,\t\n0.958247026538034290,\t0.958261322423500040,\t0.958275615913312340,\t0.958289907007435660,\t0.958304195705834250,\t0.958318482008472250,\t0.958332765915314130,\t0.958347047426324260,\t\n0.958361326541466660,\t0.958375603260705590,\t0.958389877584005620,\t0.958404149511330910,\t0.958418419042645800,\t0.958432686177914770,\t0.958446950917101860,\t0.958461213260171970,\t\n0.958475473207088700,\t0.958489730757816740,\t0.958503985912320560,\t0.958518238670564290,\t0.958532489032512540,\t0.958546736998129420,\t0.958560982567379870,\t0.958575225740227470,\t\n0.958589466516637120,\t0.958603704896572980,\t0.958617940879999740,\t0.958632174466881540,\t0.958646405657182950,\t0.958660634450868350,\t0.958674860847902320,\t0.958689084848249000,\t\n0.958703306451872960,\t0.958717525658738580,\t0.958731742468810430,\t0.958745956882052890,\t0.958760168898430520,\t0.958774378517907700,\t0.958788585740449120,\t0.958802790566018910,\t\n0.958816992994581780,\t0.958831193026102090,\t0.958845390660544420,\t0.958859585897873230,\t0.958873778738053130,\t0.958887969181048790,\t0.958902157226824370,\t0.958916342875344440,\t\n0.958930526126573700,\t0.958944706980476620,\t0.958958885437017900,\t0.958973061496161790,\t0.958987235157873210,\t0.959001406422116620,\t0.959015575288856390,\t0.959029741758057110,\t\n0.959043905829683570,\t0.959058067503700260,\t0.959072226780071760,\t0.959086383658762640,\t0.959100538139737610,\t0.959114690222961470,\t0.959128839908398370,\t0.959142987196013210,\t\n0.959157132085770580,\t0.959171274577635070,\t0.959185414671571370,\t0.959199552367544170,\t0.959213687665518290,\t0.959227820565457970,\t0.959241951067328120,\t0.959256079171093350,\t\n0.959270204876718440,\t0.959284328184167980,\t0.959298449093406670,\t0.959312567604399310,\t0.959326683717110720,\t0.959340797431505240,\t0.959354908747547700,\t0.959369017665202880,\t\n0.959383124184435610,\t0.959397228305210460,\t0.959411330027492240,\t0.959425429351245970,\t0.959439526276435810,\t0.959453620803026870,\t0.959467712930983870,\t0.959481802660271610,\t\n0.959495889990854890,\t0.959509974922698410,\t0.959524057455766970,\t0.959538137590025710,\t0.959552215325438770,\t0.959566290661971300,\t0.959580363599588090,\t0.959594434138254070,\t\n0.959608502277933930,\t0.959622568018592470,\t0.959636631360194610,\t0.959650692302705390,\t0.959664750846089270,\t0.959678806990311270,\t0.959692860735336220,\t0.959706912081129020,\t\n0.959720961027654470,\t0.959735007574877620,\t0.959749051722763480,\t0.959763093471276530,\t0.959777132820381680,\t0.959791169770044080,\t0.959805204320228640,\t0.959819236470900060,\t\n0.959833266222023470,\t0.959847293573563690,\t0.959861318525485950,\t0.959875341077754630,\t0.959889361230334970,\t0.959903378983191890,\t0.959917394336290420,\t0.959931407289595360,\t\n0.959945417843071860,\t0.959959425996684820,\t0.959973431750399400,\t0.959987435104180160,\t0.960001436057992490,\t0.960015434611801060,\t0.960029430765571120,\t0.960043424519267500,\t\n0.960057415872855420,\t0.960071404826300050,\t0.960085391379565940,\t0.960099375532618260,\t0.960113357285422240,\t0.960127336637942700,\t0.960141313590144870,\t0.960155288141993800,\t\n0.960169260293454510,\t0.960183230044492350,\t0.960197197395071810,\t0.960211162345158240,\t0.960225124894716900,\t0.960239085043712580,\t0.960253042792110660,\t0.960266998139876040,\t\n0.960280951086974310,\t0.960294901633369840,\t0.960308849779028200,\t0.960322795523914310,\t0.960336738867993530,\t0.960350679811230900,\t0.960364618353591550,\t0.960378554495040730,\t\n0.960392488235543680,\t0.960406419575065120,\t0.960420348513570610,\t0.960434275051025190,\t0.960448199187394100,\t0.960462120922642490,\t0.960476040256735610,\t0.960489957189638590,\t\n0.960503871721316900,\t0.960517783851735360,\t0.960531693580859320,\t0.960545600908654040,\t0.960559505835084760,\t0.960573408360116730,\t0.960587308483715210,\t0.960601206205845660,\t\n0.960615101526472780,\t0.960628994445562270,\t0.960642884963079150,\t0.960656773078988890,\t0.960670658793256640,\t0.960684542105847750,\t0.960698423016727590,\t0.960712301525861510,\t\n0.960726177633214550,\t0.960740051338752070,\t0.960753922642439420,\t0.960767791544241970,\t0.960781658044125080,\t0.960795522142054100,\t0.960809383837994300,\t0.960823243131911250,\t\n0.960837100023769760,\t0.960850954513535640,\t0.960864806601174130,\t0.960878656286650590,\t0.960892503569930390,\t0.960906348450978890,\t0.960920190929761890,\t0.960934031006244080,\t\n0.960947868680391170,\t0.960961703952168620,\t0.960975536821541800,\t0.960989367288476170,\t0.961003195352937100,\t0.961017021014890060,\t0.961030844274300630,\t0.961044665131133960,\t\n0.961058483585355620,\t0.961072299636930970,\t0.961086113285825610,\t0.961099924532004990,\t0.961113733375434600,\t0.961127539816080120,\t0.961141343853906480,\t0.961155145488879480,\t\n0.961168944720964700,\t0.961182741550127510,\t0.961196535976333480,\t0.961210327999547980,\t0.961224117619736810,\t0.961237904836865550,\t0.961251689650899350,\t0.961265472061803790,\t\n0.961279252069544680,\t0.961293029674087360,\t0.961306804875397440,\t0.961320577673440590,\t0.961334348068182300,\t0.961348116059588360,\t0.961361881647623820,\t0.961375644832254680,\t\n0.961389405613446320,\t0.961403163991164540,\t0.961416919965374820,\t0.961430673536042830,\t0.961444424703134290,\t0.961458173466614550,\t0.961471919826449420,\t0.961485663782604360,\t\n0.961499405335045190,\t0.961513144483737480,\t0.961526881228647050,\t0.961540615569739240,\t0.961554347506980210,\t0.961568077040335090,\t0.961581804169769790,\t0.961595528895249910,\t\n0.961609251216741230,\t0.961622971134209470,\t0.961636688647620310,\t0.961650403756939330,\t0.961664116462132570,\t0.961677826763165380,\t0.961691534660003570,\t0.961705240152612940,\t\n0.961718943240959190,\t0.961732643925008120,\t0.961746342204725320,\t0.961760038080077040,\t0.961773731551028410,\t0.961787422617545350,\t0.961801111279593890,\t0.961814797537139500,\t\n0.961828481390148200,\t0.961842162838585700,\t0.961855841882417790,\t0.961869518521610510,\t0.961883192756129210,\t0.961896864585939810,\t0.961910534011008340,\t0.961924201031300610,\t\n0.961937865646782300,\t0.961951527857419330,\t0.961965187663177850,\t0.961978845064022980,\t0.961992500059921210,\t0.962006152650838110,\t0.962019802836739600,\t0.962033450617591600,\t\n0.962047095993359910,\t0.962060738964010560,\t0.962074379529509580,\t0.962088017689822440,\t0.962101653444915160,\t0.962115286794753890,\t0.962128917739304310,\t0.962142546278532460,\t\n0.962156172412404250,\t0.962169796140885600,\t0.962183417463942650,\t0.962197036381540970,\t0.962210652893646710,\t0.962224267000225900,\t0.962237878701244220,\t0.962251487996668040,\t\n0.962265094886463060,\t0.962278699370595510,\t0.962292301449031110,\t0.962305901121735860,\t0.962319498388675920,\t0.962333093249817200,\t0.962346685705125720,\t0.962360275754567510,\t\n0.962373863398108710,\t0.962387448635715460,\t0.962401031467353230,\t0.962414611892988600,\t0.962428189912587270,\t0.962441765526115600,\t0.962455338733539500,\t0.962468909534825000,\t\n0.962482477929938460,\t0.962496043918845580,\t0.962509607501512490,\t0.962523168677905440,\t0.962536727447990460,\t0.962550283811733580,\t0.962563837769101040,\t0.962577389320058980,\t\n0.962590938464573660,\t0.962604485202610660,\t0.962618029534136550,\t0.962631571459117370,\t0.962645110977519150,\t0.962658648089308230,\t0.962672182794450770,\t0.962685715092912670,\t\n0.962699244984660640,\t0.962712772469660250,\t0.962726297547877970,\t0.962739820219279840,\t0.962753340483832210,\t0.962766858341501330,\t0.962780373792253120,\t0.962793886836054380,\t\n0.962807397472870590,\t0.962820905702668320,\t0.962834411525413820,\t0.962847914941073250,\t0.962861415949612940,\t0.962874914550999050,\t0.962888410745197820,\t0.962901904532175950,\t\n0.962915395911899010,\t0.962928884884333480,\t0.962942371449445830,\t0.962955855607202320,\t0.962969337357569070,\t0.962982816700512450,\t0.962996293635998920,\t0.963009768163994750,\t\n0.963023240284466060,\t0.963036709997379110,\t0.963050177302700480,\t0.963063642200396420,\t0.963077104690433280,\t0.963090564772777320,\t0.963104022447395240,\t0.963117477714252820,\t\n0.963130930573316670,\t0.963144381024553240,\t0.963157829067928910,\t0.963171274703409910,\t0.963184717930962830,\t0.963198158750553810,\t0.963211597162149770,\t0.963225033165716390,\t\n0.963238466761220490,\t0.963251897948628420,\t0.963265326727906660,\t0.963278753099021560,\t0.963292177061939480,\t0.963305598616627230,\t0.963319017763050840,\t0.963332434501176890,\t\n0.963345848830971740,\t0.963359260752402080,\t0.963372670265434160,\t0.963386077370034680,\t0.963399482066169990,\t0.963412884353806790,\t0.963426284232911100,\t0.963439681703449740,\t\n0.963453076765389270,\t0.963466469418695960,\t0.963479859663336600,\t0.963493247499277450,\t0.963506632926485310,\t0.963520015944926760,\t0.963533396554567930,\t0.963546774755375650,\t\n0.963560150547316470,\t0.963573523930356890,\t0.963586894904463480,\t0.963600263469602810,\t0.963613629625741710,\t0.963626993372846300,\t0.963640354710883380,\t0.963653713639819660,\t\n0.963667070159621610,\t0.963680424270255910,\t0.963693775971689150,\t0.963707125263887910,\t0.963720472146819110,\t0.963733816620448990,\t0.963747158684744250,\t0.963760498339671590,\t\n0.963773835585197690,\t0.963787170421289250,\t0.963800502847912850,\t0.963813832865035190,\t0.963827160472623180,\t0.963840485670642950,\t0.963853808459061660,\t0.963867128837845750,\t\n0.963880446806962050,\t0.963893762366377250,\t0.963907075516058030,\t0.963920386255971320,\t0.963933694586083470,\t0.963947000506361400,\t0.963960304016771800,\t0.963973605117281360,\t\n0.963986903807857010,\t0.964000200088465430,\t0.964013493959073210,\t0.964026785419647590,\t0.964040074470154720,\t0.964053361110561720,\t0.964066645340835300,\t0.964079927160942260,\t\n0.964093206570849400,\t0.964106483570523530,\t0.964119758159931670,\t0.964133030339040300,\t0.964146300107816210,\t0.964159567466226440,\t0.964172832414237680,\t0.964186094951816840,\t\n0.964199355078930840,\t0.964212612795546380,\t0.964225868101630690,\t0.964239120997150030,\t0.964252371482071660,\t0.964265619556362360,\t0.964278865219988960,\t0.964292108472918350,\t\n0.964305349315117470,\t0.964318587746553320,\t0.964331823767192840,\t0.964345057377002600,\t0.964358288575949740,\t0.964371517364001170,\t0.964384743741123710,\t0.964397967707284480,\t\n0.964411189262450290,\t0.964424408406588380,\t0.964437625139665240,\t0.964450839461648000,\t0.964464051372503680,\t0.964477260872199200,\t0.964490467960701700,\t0.964503672637977870,\t\n0.964516874903994960,\t0.964530074758719990,\t0.964543272202119660,\t0.964556467234161220,\t0.964569659854811470,\t0.964582850064037660,\t0.964596037861806700,\t0.964609223248085730,\t\n0.964622406222841570,\t0.964635586786041670,\t0.964648764937652610,\t0.964661940677641660,\t0.964675114005975830,\t0.964688284922622150,\t0.964701453427547870,\t0.964714619520719910,\t\n0.964727783202105620,\t0.964740944471671580,\t0.964754103329385270,\t0.964767259775213600,\t0.964780413809123940,\t0.964793565431083080,\t0.964806714641058380,\t0.964819861439016990,\t\n0.964833005824926040,\t0.964846147798752440,\t0.964859287360463340,\t0.964872424510026190,\t0.964885559247407820,\t0.964898691572575680,\t0.964911821485496700,\t0.964924948986138450,\t\n0.964938074074467630,\t0.964951196750451600,\t0.964964317014057600,\t0.964977434865252780,\t0.964990550304004380,\t0.965003663330279650,\t0.965016773944045610,\t0.965029882145270080,\t\n0.965042987933919520,\t0.965056091309961390,\t0.965069192273363190,\t0.965082290824091920,\t0.965095386962114940,\t0.965108480687399520,\t0.965121571999912890,\t0.965134660899622520,\t\n0.965147747386495230,\t0.965160831460498690,\t0.965173913121599950,\t0.965186992369766570,\t0.965200069204965590,\t0.965213143627164480,\t0.965226215636330710,\t0.965239285232431300,\t\n0.965252352415433500,\t0.965265417185304900,\t0.965278479542012850,\t0.965291539485524490,\t0.965304597015807290,\t0.965317652132828610,\t0.965330704836556030,\t0.965343755126956470,\t\n0.965356803003997510,\t0.965369848467646510,\t0.965382891517870930,\t0.965395932154638150,\t0.965408970377915510,\t0.965422006187670380,\t0.965435039583870560,\t0.965448070566482850,\t\n0.965461099135475060,\t0.965474125290814440,\t0.965487149032468460,\t0.965500170360404700,\t0.965513189274590510,\t0.965526205774993600,\t0.965539219861580870,\t0.965552231534320130,\t\n0.965565240793178740,\t0.965578247638124280,\t0.965591252069124220,\t0.965604254086146140,\t0.965617253689157300,\t0.965630250878125600,\t0.965643245653017960,\t0.965656238013802290,\t\n0.965669227960445960,\t0.965682215492916660,\t0.965695200611181750,\t0.965708183315208910,\t0.965721163604965740,\t0.965734141480419470,\t0.965747116941537920,\t0.965760089988288440,\t\n0.965773060620638830,\t0.965786028838556580,\t0.965798994642009250,\t0.965811958030964420,\t0.965824919005389910,\t0.965837877565252860,\t0.965850833710521160,\t0.965863787441162300,\t\n0.965876738757144080,\t0.965889687658433970,\t0.965902634144999660,\t0.965915578216808730,\t0.965928519873828990,\t0.965941459116027910,\t0.965954395943373070,\t0.965967330355832270,\t\n0.965980262353373090,\t0.965993191935963340,\t0.966006119103570590,\t0.966019043856162770,\t0.966031966193707130,\t0.966044886116171450,\t0.966057803623523670,\t0.966070718715731360,\t\n0.966083631392762320,\t0.966096541654584140,\t0.966109449501164620,\t0.966122354932471670,\t0.966135257948472550,\t0.966148158549135380,\t0.966161056734427870,\t0.966173952504317590,\t\n0.966186845858772460,\t0.966199736797760280,\t0.966212625321248960,\t0.966225511429205760,\t0.966238395121598930,\t0.966251276398396030,\t0.966264155259564880,\t0.966277031705073400,\t\n0.966289905734889380,\t0.966302777348980620,\t0.966315646547315050,\t0.966328513329860140,\t0.966341377696584010,\t0.966354239647454480,\t0.966367099182439240,\t0.966379956301506300,\t\n0.966392811004623490,\t0.966405663291758590,\t0.966418513162879740,\t0.966431360617954540,\t0.966444205656950770,\t0.966457048279836580,\t0.966469888486579780,\t0.966482726277148150,\t\n0.966495561651509850,\t0.966508394609632780,\t0.966521225151484530,\t0.966534053277033230,\t0.966546878986246690,\t0.966559702279093050,\t0.966572523155540210,\t0.966585341615555980,\t\n0.966598157659108390,\t0.966610971286165690,\t0.966623782496695230,\t0.966636591290665370,\t0.966649397668044030,\t0.966662201628799230,\t0.966675003172898890,\t0.966687802300311150,\t\n0.966700599011003800,\t0.966713393304945210,\t0.966726185182102850,\t0.966738974642445070,\t0.966751761685939790,\t0.966764546312555260,\t0.966777328522259280,\t0.966790108315019990,\t\n0.966802885690805640,\t0.966815660649583800,\t0.966828433191322830,\t0.966841203315990880,\t0.966853971023555860,\t0.966866736313985900,\t0.966879499187249030,\t0.966892259643313490,\t\n0.966905017682147540,\t0.966917773303718860,\t0.966930526507995710,\t0.966943277294946220,\t0.966956025664538530,\t0.966968771616740770,\t0.966981515151521090,\t0.966994256268847830,\t\n0.967006994968688800,\t0.967019731251012150,\t0.967032465115786220,\t0.967045196562979160,\t0.967057925592559100,\t0.967070652204494290,\t0.967083376398752750,\t0.967096098175303060,\t\n0.967108817534112820,\t0.967121534475150590,\t0.967134248998384520,\t0.967146961103782840,\t0.967159670791313710,\t0.967172378060945470,\t0.967185082912646270,\t0.967197785346384560,\t\n0.967210485362128170,\t0.967223182959845550,\t0.967235878139504960,\t0.967248570901074740,\t0.967261261244523050,\t0.967273949169818240,\t0.967286634676928770,\t0.967299317765822450,\t\n0.967311998436467870,\t0.967324676688833260,\t0.967337352522887000,\t0.967350025938597420,\t0.967362696935932690,\t0.967375365514861250,\t0.967388031675351590,\t0.967400695417371610,\t\n0.967413356740889910,\t0.967426015645874830,\t0.967438672132294730,\t0.967451326200117980,\t0.967463977849312820,\t0.967476627079847830,\t0.967489273891691370,\t0.967501918284811580,\t\n0.967514560259176930,\t0.967527199814755990,\t0.967539836951516910,\t0.967552471669428370,\t0.967565103968458630,\t0.967577733848576260,\t0.967590361309749400,\t0.967602986351946640,\t\n0.967615608975136430,\t0.967628229179287150,\t0.967640846964367360,\t0.967653462330345440,\t0.967666075277189730,\t0.967678685804869270,\t0.967691293913351740,\t0.967703899602605940,\t\n0.967716502872600470,\t0.967729103723303790,\t0.967741702154684250,\t0.967754298166710550,\t0.967766891759351270,\t0.967779482932574540,\t0.967792071686349060,\t0.967804658020643420,\t\n0.967817241935426180,\t0.967829823430665810,\t0.967842402506330910,\t0.967854979162389940,\t0.967867553398811810,\t0.967880125215564550,\t0.967892694612616960,\t0.967905261589937730,\t\n0.967917826147495220,\t0.967930388285258240,\t0.967942948003195250,\t0.967955505301274830,\t0.967968060179465910,\t0.967980612637736600,\t0.967993162676055840,\t0.968005710294392090,\t\n0.968018255492714140,\t0.968030798270990480,\t0.968043338629189900,\t0.968055876567281090,\t0.968068412085232530,\t0.968080945183012800,\t0.968093475860590800,\t0.968106004117935020,\t\n0.968118529955014240,\t0.968131053371797170,\t0.968143574368252490,\t0.968156092944349010,\t0.968168609100055200,\t0.968181122835339750,\t0.968193634150171570,\t0.968206143044519240,\t\n0.968218649518351680,\t0.968231153571637360,\t0.968243655204345190,\t0.968256154416444190,\t0.968268651207902510,\t0.968281145578689160,\t0.968293637528772950,\t0.968306127058122690,\t\n0.968318614166707170,\t0.968331098854495090,\t0.968343581121455350,\t0.968356060967556550,\t0.968368538392767600,\t0.968381013397057290,\t0.968393485980394430,\t0.968405956142747940,\t\n0.968418423884086500,\t0.968430889204378920,\t0.968443352103594450,\t0.968455812581701330,\t0.968468270638668690,\t0.968480726274465460,\t0.968493179489060330,\t0.968505630282422200,\t\n0.968518078654520000,\t0.968530524605322960,\t0.968542968134799230,\t0.968555409242918160,\t0.968567847929648560,\t0.968580284194959340,\t0.968592718038819410,\t0.968605149461197690,\t\n0.968617578462063090,\t0.968630005041384750,\t0.968642429199131240,\t0.968654850935271590,\t0.968667270249774840,\t0.968679687142609880,\t0.968692101613745750,\t0.968704513663151360,\t\n0.968716923290795620,\t0.968729330496647890,\t0.968741735280676530,\t0.968754137642850900,\t0.968766537583139910,\t0.968778935101512580,\t0.968791330197937840,\t0.968803722872384920,\t\n0.968816113124822740,\t0.968828500955220220,\t0.968840886363546370,\t0.968853269349770230,\t0.968865649913861040,\t0.968878028055787710,\t0.968890403775519270,\t0.968902777073024860,\t\n0.968915147948273600,\t0.968927516401234420,\t0.968939882431876340,\t0.968952246040168610,\t0.968964607226080240,\t0.968976965989580390,\t0.968989322330638060,\t0.969001676249222510,\t\n0.969014027745302870,\t0.969026376818848070,\t0.969038723469827220,\t0.969051067698209700,\t0.969063409503964410,\t0.969075748887060610,\t0.969088085847467420,\t0.969100420385154200,\t\n0.969112752500089770,\t0.969125082192243470,\t0.969137409461584440,\t0.969149734308081930,\t0.969162056731705080,\t0.969174376732423020,\t0.969186694310205100,\t0.969199009465020580,\t\n0.969211322196838370,\t0.969223632505627820,\t0.969235940391358190,\t0.969248245853998820,\t0.969260548893518650,\t0.969272849509887240,\t0.969285147703073950,\t0.969297443473047470,\t\n0.969309736819777390,\t0.969322027743233060,\t0.969334316243383620,\t0.969346602320198310,\t0.969358885973646610,\t0.969371167203697650,\t0.969383446010321000,\t0.969395722393485480,\t\n0.969407996353160660,\t0.969420267889315900,\t0.969432537001920450,\t0.969444803690943660,\t0.969457067956354780,\t0.969469329798123390,\t0.969481589216218740,\t0.969493846210609970,\t\n0.969506100781266640,\t0.969518352928157910,\t0.969530602651253460,\t0.969542849950522420,\t0.969555094825934270,\t0.969567337277458590,\t0.969579577305064280,\t0.969591814908721150,\t\n0.969604050088398450,\t0.969616282844065650,\t0.969628513175692100,\t0.969640741083247270,\t0.969652966566700520,\t0.969665189626021660,\t0.969677410261179600,\t0.969689628472144020,\t\n0.969701844258884280,\t0.969714057621370080,\t0.969726268559570670,\t0.969738477073455510,\t0.969750683162994510,\t0.969762886828156480,\t0.969775088068911330,\t0.969787286885228420,\t\n0.969799483277077210,\t0.969811677244427410,\t0.969823868787248360,\t0.969836057905509640,\t0.969848244599180950,\t0.969860428868231540,\t0.969872610712630980,\t0.969884790132348850,\t\n0.969896967127354850,\t0.969909141697618440,\t0.969921313843109090,\t0.969933483563796490,\t0.969945650859650340,\t0.969957815730639990,\t0.969969978176735030,\t0.969982138197905130,\t\n0.969994295794119780,\t0.970006450965348770,\t0.970018603711561680,\t0.970030754032728320,\t0.970042901928817700,\t0.970055047399799970,\t0.970067190445644600,\t0.970079331066321160,\t\n0.970091469261799570,\t0.970103605032049180,\t0.970115738377039790,\t0.970127869296741220,\t0.970139997791122920,\t0.970152123860154480,\t0.970164247503805810,\t0.970176368722046490,\t\n0.970188487514846210,\t0.970200603882174770,\t0.970212717824001760,\t0.970224829340297190,\t0.970236938431030430,\t0.970249045096171270,\t0.970261149335689410,\t0.970273251149554760,\t\n0.970285350537737010,\t0.970297447500205750,\t0.970309542036931210,\t0.970321634147882640,\t0.970333723833029850,\t0.970345811092342860,\t0.970357895925791250,\t0.970369978333344930,\t\n0.970382058314973710,\t0.970394135870647380,\t0.970406211000335750,\t0.970418283704008510,\t0.970430353981635570,\t0.970442421833186740,\t0.970454487258631810,\t0.970466550257940710,\t\n0.970478610831083220,\t0.970490668978029380,\t0.970502724698748650,\t0.970514777993211180,\t0.970526828861386750,\t0.970538877303245170,\t0.970550923318756480,\t0.970562966907890460,\t\n0.970575008070617030,\t0.970587046806906220,\t0.970599083116727710,\t0.970611117000051430,\t0.970623148456847270,\t0.970635177487085390,\t0.970647204090735460,\t0.970659228267767630,\t\n0.970671250018151580,\t0.970683269341857780,\t0.970695286238855480,\t0.970707300709114930,\t0.970719312752606260,\t0.970731322369299270,\t0.970743329559163870,\t0.970755334322170200,\t\n0.970767336658288520,\t0.970779336567488160,\t0.970791334049739500,\t0.970803329105012550,\t0.970815321733277230,\t0.970827311934503560,\t0.970839299708661670,\t0.970851285055721490,\t\n0.970863267975653370,\t0.970875248468426880,\t0.970887226534012160,\t0.970899202172379460,\t0.970911175383498690,\t0.970923146167340100,\t0.970935114523873600,\t0.970947080453069210,\t\n0.970959043954897410,\t0.970971005029327760,\t0.970982963676330630,\t0.970994919895876160,\t0.971006873687934260,\t0.971018825052475280,\t0.971030773989469130,\t0.971042720498886400,\t\n0.971054664580696560,\t0.971066606234870070,\t0.971078545461377060,\t0.971090482260187680,\t0.971102416631272170,\t0.971114348574600550,\t0.971126278090143070,\t0.971138205177870080,\t\n0.971150129837751400,\t0.971162052069757360,\t0.971173971873858230,\t0.971185889250024140,\t0.971197804198225320,\t0.971209716718432040,\t0.971221626810614640,\t0.971233534474743030,\t\n0.971245439710787470,\t0.971257342518718430,\t0.971269242898506020,\t0.971281140850120410,\t0.971293036373532040,\t0.971304929468711050,\t0.971316820135627920,\t0.971328708374252560,\t\n0.971340594184555430,\t0.971352477566506780,\t0.971364358520076960,\t0.971376237045236230,\t0.971388113141954950,\t0.971399986810203340,\t0.971411858049952000,\t0.971423726861170730,\t\n0.971435593243830220,\t0.971447457197900710,\t0.971459318723352560,\t0.971471177820156130,\t0.971483034488281770,\t0.971494888727700070,\t0.971506740538380820,\t0.971518589920294830,\t\n0.971530436873412230,\t0.971542281397703710,\t0.971554123493139300,\t0.971565963159689680,\t0.971577800397325220,\t0.971589635206016380,\t0.971601467585733290,\t0.971613297536446430,\t\n0.971625125058126480,\t0.971636950150743580,\t0.971648772814268420,\t0.971660593048671250,\t0.971672410853922640,\t0.971684226229993180,\t0.971696039176852990,\t0.971707849694472660,\t\n0.971719657782822770,\t0.971731463441873670,\t0.971743266671595940,\t0.971755067471959940,\t0.971766865842936590,\t0.971778661784495900,\t0.971790455296608460,\t0.971802246379244950,\t\n0.971814035032375840,\t0.971825821255971610,\t0.971837605050002720,\t0.971849386414439960,\t0.971861165349253930,\t0.971872941854414750,\t0.971884715929893230,\t0.971896487575659940,\t\n0.971908256791685350,\t0.971920023577940160,\t0.971931787934394940,\t0.971943549861020380,\t0.971955309357786850,\t0.971967066424665020,\t0.971978821061625480,\t0.971990573268638910,\t\n0.972002323045675910,\t0.972014070392707040,\t0.972025815309703110,\t0.972037557796634810,\t0.972049297853472380,\t0.972061035480186630,\t0.972072770676748470,\t0.972084503443128240,\t\n0.972096233779296770,\t0.972107961685224730,\t0.972119687160882820,\t0.972131410206241940,\t0.972143130821272240,\t0.972154849005944730,\t0.972166564760230110,\t0.972178278084099070,\t\n0.972189988977522400,\t0.972201697440470690,\t0.972213403472914960,\t0.972225107074825570,\t0.972236808246173310,\t0.972248506986929110,\t0.972260203297063530,\t0.972271897176547610,\t\n0.972283588625351800,\t0.972295277643447140,\t0.972306964230804430,\t0.972318648387394120,\t0.972330330113187150,\t0.972342009408154410,\t0.972353686272266590,\t0.972365360705494510,\t\n0.972377032707809170,\t0.972388702279181170,\t0.972400369419581630,\t0.972412034128980920,\t0.972423696407350160,\t0.972435356254660150,\t0.972447013670881820,\t0.972458668655985850,\t\n0.972470321209943260,\t0.972481971332725070,\t0.972493619024301760,\t0.972505264284644460,\t0.972516907113723960,\t0.972528547511511080,\t0.972540185477976940,\t0.972551821013092340,\t\n0.972563454116828210,\t0.972575084789155550,\t0.972586713030045070,\t0.972598338839467670,\t0.972609962217394600,\t0.972621583163796540,\t0.972633201678644530,\t0.972644817761909470,\t\n0.972656431413562620,\t0.972668042633574540,\t0.972679651421916260,\t0.972691257778558920,\t0.972702861703473310,\t0.972714463196630690,\t0.972726062258001840,\t0.972737658887557810,\t\n0.972749253085269940,\t0.972760844851108700,\t0.972772434185045330,\t0.972784021087050870,\t0.972795605557096320,\t0.972807187595152830,\t0.972818767201191310,\t0.972830344375182900,\t\n0.972841919117098830,\t0.972853491426909800,\t0.972865061304586940,\t0.972876628750101500,\t0.972888193763424500,\t0.972899756344526970,\t0.972911316493380140,\t0.972922874209955160,\t\n0.972934429494222710,\t0.972945982346154260,\t0.972957532765720940,\t0.972969080752893680,\t0.972980626307643700,\t0.972992169429942270,\t0.973003710119760280,\t0.973015248377069320,\t\n0.973026784201839970,\t0.973038317594043690,\t0.973049848553651620,\t0.973061377080635000,\t0.973072903174964860,\t0.973084426836612450,\t0.973095948065549000,\t0.973107466861745870,\t\n0.973118983225173870,\t0.973130497155804460,\t0.973142008653608670,\t0.973153517718557960,\t0.973165024350623460,\t0.973176528549776430,\t0.973188030315988220,\t0.973199529649229730,\t\n0.973211026549472450,\t0.973222521016687600,\t0.973234013050846450,\t0.973245502651920340,\t0.973256989819880400,\t0.973268474554697890,\t0.973279956856344500,\t0.973291436724791010,\t\n0.973302914160008910,\t0.973314389161969550,\t0.973325861730644280,\t0.973337331866004240,\t0.973348799568020890,\t0.973360264836665820,\t0.973371727671909830,\t0.973383188073724480,\t\n0.973394646042081260,\t0.973406101576951290,\t0.973417554678306150,\t0.973429005346117200,\t0.973440453580355580,\t0.973451899380993190,\t0.973463342748000730,\t0.973474783681349990,\t\n0.973486222181012220,\t0.973497658246958890,\t0.973509091879161460,\t0.973520523077591290,\t0.973531951842219860,\t0.973543378173018730,\t0.973554802069958920,\t0.973566223533012030,\t\n0.973577642562149740,\t0.973589059157343280,\t0.973600473318564140,\t0.973611885045783780,\t0.973623294338973990,\t0.973634701198105800,\t0.973646105623150790,\t0.973657507614080540,\t\n0.973668907170866520,\t0.973680304293480180,\t0.973691698981893120,\t0.973703091236076790,\t0.973714481056003000,\t0.973725868441642770,\t0.973737253392967790,\t0.973748635909949760,\t\n0.973760015992560120,\t0.973771393640770480,\t0.973782768854552390,\t0.973794141633877450,\t0.973805511978717010,\t0.973816879889042860,\t0.973828245364826480,\t0.973839608406039450,\t\n0.973850969012653440,\t0.973862327184639940,\t0.973873682921970630,\t0.973885036224617420,\t0.973896387092551330,\t0.973907735525744280,\t0.973919081524167840,\t0.973930425087793820,\t\n0.973941766216593670,\t0.973953104910539100,\t0.973964441169601790,\t0.973975774993753540,\t0.973987106382965710,\t0.973998435337210090,\t0.974009761856458380,\t0.974021085940682260,\t\n0.974032407589853430,\t0.974043726803943580,\t0.974055043582924610,\t0.974066357926767770,\t0.974077669835445080,\t0.974088979308928240,\t0.974100286347189040,\t0.974111590950198950,\t\n0.974122893117929990,\t0.974134192850353740,\t0.974145490147442230,\t0.974156785009166910,\t0.974168077435499490,\t0.974179367426411870,\t0.974190654981875850,\t0.974201940101863230,\t\n0.974213222786345810,\t0.974224503035295290,\t0.974235780848683670,\t0.974247056226482440,\t0.974258329168663510,\t0.974269599675198770,\t0.974280867746060040,\t0.974292133381219230,\t\n0.974303396580648020,\t0.974314657344318550,\t0.974325915672202170,\t0.974337171564271020,\t0.974348425020496900,\t0.974359676040851830,\t0.974370924625307500,\t0.974382170773835930,\t\n0.974393414486408820,\t0.974404655762998400,\t0.974415894603576250,\t0.974427131008114290,\t0.974438364976584430,\t0.974449596508958790,\t0.974460825605209080,\t0.974472052265307310,\t\n0.974483276489225610,\t0.974494498276935570,\t0.974505717628409210,\t0.974516934543618650,\t0.974528149022535710,\t0.974539361065132390,\t0.974550570671380620,\t0.974561777841252530,\t\n0.974572982574720030,\t0.974584184871755020,\t0.974595384732329540,\t0.974606582156415490,\t0.974617777143985120,\t0.974628969695010230,\t0.974640159809462950,\t0.974651347487315300,\t\n0.974662532728539420,\t0.974673715533107000,\t0.974684895900990280,\t0.974696073832161390,\t0.974707249326592250,\t0.974718422384255100,\t0.974729593005121740,\t0.974740761189164750,\t\n0.974751926936355590,\t0.974763090246666520,\t0.974774251120069880,\t0.974785409556537470,\t0.974796565556041660,\t0.974807719118554350,\t0.974818870244047790,\t0.974830018932494210,\t\n0.974841165183865430,\t0.974852308998133800,\t0.974863450375271330,\t0.974874589315250170,\t0.974885725818042560,\t0.974896859883620740,\t0.974907991511956730,\t0.974919120703022890,\t\n0.974930247456791020,\t0.974941371773233590,\t0.974952493652322730,\t0.974963613094030680,\t0.974974730098329470,\t0.974985844665191560,\t0.974996956794589200,\t0.975008066486494180,\t\n0.975019173740879100,\t0.975030278557716070,\t0.975041380936977230,\t0.975052480878635050,\t0.975063578382661670,\t0.975074673449029320,\t0.975085766077710470,\t0.975096856268677040,\t\n0.975107944021901480,\t0.975119029337355950,\t0.975130112215013000,\t0.975141192654844670,\t0.975152270656823420,\t0.975163346220921600,\t0.975174419347111240,\t0.975185490035364920,\t\n0.975196558285654770,\t0.975207624097953360,\t0.975218687472232730,\t0.975229748408465550,\t0.975240806906623850,\t0.975251862966680430,\t0.975262916588607090,\t0.975273967772376520,\t\n0.975285016517960960,\t0.975296062825332880,\t0.975307106694464630,\t0.975318148125328690,\t0.975329187117897290,\t0.975340223672143130,\t0.975351257788038330,\t0.975362289465555250,\t\n0.975373318704666480,\t0.975384345505344470,\t0.975395369867561590,\t0.975406391791290180,\t0.975417411276503050,\t0.975428428323172230,\t0.975439442931270380,\t0.975450455100769780,\t\n0.975461464831643200,\t0.975472472123862900,\t0.975483476977401340,\t0.975494479392231220,\t0.975505479368324990,\t0.975516476905654910,\t0.975527472004193650,\t0.975538464663913700,\t\n0.975549454884787500,\t0.975560442666787760,\t0.975571428009886940,\t0.975582410914057510,\t0.975593391379272260,\t0.975604369405503320,\t0.975615344992723400,\t0.975626318140905170,\t\n0.975637288850021210,\t0.975648257120043990,\t0.975659222950946090,\t0.975670186342700310,\t0.975681147295278990,\t0.975692105808654620,\t0.975703061882800090,\t0.975714015517687990,\t\n0.975724966713290790,\t0.975735915469581050,\t0.975746861786531690,\t0.975757805664115300,\t0.975768747102304210,\t0.975779686101071240,\t0.975790622660389070,\t0.975801556780230280,\t\n0.975812488460567670,\t0.975823417701373820,\t0.975834344502621630,\t0.975845268864283360,\t0.975856190786331900,\t0.975867110268740070,\t0.975878027311480320,\t0.975888941914525580,\t\n0.975899854077848520,\t0.975910763801421830,\t0.975921671085218320,\t0.975932575929210570,\t0.975943478333371250,\t0.975954378297673290,\t0.975965275822089470,\t0.975976170906592390,\t\n0.975987063551154830,\t0.975997953755749600,\t0.976008841520349830,\t0.976019726844927660,\t0.976030609729456210,\t0.976041490173908180,\t0.976052368178256470,\t0.976063243742473770,\t\n0.976074116866533000,\t0.976084987550407180,\t0.976095855794068660,\t0.976106721597490570,\t0.976117584960645600,\t0.976128445883506670,\t0.976139304366046570,\t0.976150160408238320,\t\n0.976161014010054620,\t0.976171865171468590,\t0.976182713892452700,\t0.976193560172980090,\t0.976204404013023440,\t0.976215245412555890,\t0.976226084371550230,\t0.976236920889979260,\t\n0.976247754967816020,\t0.976258586605033620,\t0.976269415801604650,\t0.976280242557502010,\t0.976291066872698840,\t0.976301888747167950,\t0.976312708180882340,\t0.976323525173814930,\t\n0.976334339725938970,\t0.976345151837226920,\t0.976355961507652030,\t0.976366768737187200,\t0.976377573525805560,\t0.976388375873479820,\t0.976399175780183200,\t0.976409973245888740,\t\n0.976420768270569450,\t0.976431560854198020,\t0.976442350996747700,\t0.976453138698191610,\t0.976463923958502570,\t0.976474706777653690,\t0.976485487155618110,\t0.976496265092368980,\t\n0.976507040587879070,\t0.976517813642121420,\t0.976528584255069390,\t0.976539352426695760,\t0.976550118156973790,\t0.976560881445876610,\t0.976571642293377120,\t0.976582400699448790,\t\n0.976593156664064210,\t0.976603910187196830,\t0.976614661268819570,\t0.976625409908905670,\t0.976636156107428270,\t0.976646899864360480,\t0.976657641179675460,\t0.976668380053346550,\t\n0.976679116485346440,\t0.976689850475648600,\t0.976700582024226050,\t0.976711311131052140,\t0.976722037796099900,\t0.976732762019342560,\t0.976743483800753490,\t0.976754203140305590,\t\n0.976764920037972110,\t0.976775634493726400,\t0.976786346507541480,\t0.976797056079390820,\t0.976807763209247450,\t0.976818467897084710,\t0.976829170142875960,\t0.976839869946594110,\t\n0.976850567308212630,\t0.976861262227704750,\t0.976871954705043620,\t0.976882644740202700,\t0.976893332333155010,\t0.976904017483874340,\t0.976914700192333400,\t0.976925380458505630,\t\n0.976936058282364520,\t0.976946733663883180,\t0.976957406603035090,\t0.976968077099793390,\t0.976978745154131520,\t0.976989410766023080,\t0.977000073935440750,\t0.977010734662358330,\t\n0.977021392946749060,\t0.977032048788586400,\t0.977042702187843500,\t0.977053353144493930,\t0.977064001658510930,\t0.977074647729868070,\t0.977085291358538500,\t0.977095932544495670,\t\n0.977106571287712940,\t0.977117207588163780,\t0.977127841445821650,\t0.977138472860660020,\t0.977149101832652240,\t0.977159728361771560,\t0.977170352447991550,\t0.977180974091285790,\t\n0.977191593291627410,\t0.977202210048990110,\t0.977212824363347330,\t0.977223436234672450,\t0.977234045662939250,\t0.977244652648120660,\t0.977255257190190460,\t0.977265859289122130,\t\n0.977276458944889130,\t0.977287056157464920,\t0.977297650926823190,\t0.977308243252937300,\t0.977318833135780940,\t0.977329420575327350,\t0.977340005571550210,\t0.977350588124422990,\t\n0.977361168233919390,\t0.977371745900012860,\t0.977382321122676980,\t0.977392893901885440,\t0.977403464237611490,\t0.977414032129828800,\t0.977424597578511190,\t0.977435160583632000,\t\n0.977445721145164930,\t0.977456279263083540,\t0.977466834937361420,\t0.977477388167972470,\t0.977487938954889830,\t0.977498487298087300,\t0.977509033197538570,\t0.977519576653217310,\t\n0.977530117665097120,\t0.977540656233151560,\t0.977551192357354550,\t0.977561726037679430,\t0.977572257274100020,\t0.977582786066589880,\t0.977593312415122820,\t0.977603836319672510,\t\n0.977614357780212550,\t0.977624876796716720,\t0.977635393369158830,\t0.977645907497512350,\t0.977656419181751060,\t0.977666928421848770,\t0.977677435217779170,\t0.977687939569515940,\t\n0.977698441477032780,\t0.977708940940303580,\t0.977719437959302270,\t0.977729932534002200,\t0.977740424664377160,\t0.977750914350401180,\t0.977761401592047830,\t0.977771886389291020,\t\n0.977782368742104560,\t0.977792848650462230,\t0.977803326114337730,\t0.977813801133704860,\t0.977824273708537420,\t0.977834743838809420,\t0.977845211524494440,\t0.977855676765566510,\t\n0.977866139561999410,\t0.977876599913767080,\t0.977887057820843060,\t0.977897513283201400,\t0.977907966300816000,\t0.977918416873660660,\t0.977928865001709280,\t0.977939310684935780,\t\n0.977949753923313960,\t0.977960194716817940,\t0.977970633065421200,\t0.977981068969097980,\t0.977991502427822070,\t0.978001933441567380,\t0.978012362010307830,\t0.978022788134017330,\t\n0.978033211812670110,\t0.978043633046239760,\t0.978054051834700180,\t0.978064468178025610,\t0.978074882076189760,\t0.978085293529166730,\t0.978095702536930460,\t0.978106109099454950,\t\n0.978116513216714440,\t0.978126914888682310,\t0.978137314115333000,\t0.978147710896640320,\t0.978158105232578400,\t0.978168497123121260,\t0.978178886568242810,\t0.978189273567917410,\t\n0.978199658122118620,\t0.978210040230820590,\t0.978220419893997550,\t0.978230797111623530,\t0.978241171883672320,\t0.978251544210118400,\t0.978261914090935440,\t0.978272281526098020,\t\n0.978282646515579610,\t0.978293009059354570,\t0.978303369157397130,\t0.978313726809681090,\t0.978324082016180930,\t0.978334434776870430,\t0.978344785091723850,\t0.978355132960715520,\t\n0.978365478383819260,\t0.978375821361009200,\t0.978386161892259580,\t0.978396499977544630,\t0.978406835616838390,\t0.978417168810115090,\t0.978427499557348980,\t0.978437827858513960,\t\n0.978448153713584400,\t0.978458477122534420,\t0.978468798085338260,\t0.978479116601970180,\t0.978489432672404290,\t0.978499746296614740,\t0.978510057474576090,\t0.978520366206262040,\t\n0.978530672491647050,\t0.978540976330705470,\t0.978551277723411440,\t0.978561576669739200,\t0.978571873169662990,\t0.978582167223157050,\t0.978592458830195970,\t0.978602747990753530,\t\n0.978613034704804210,\t0.978623318972322350,\t0.978633600793282210,\t0.978643880167658020,\t0.978654157095424030,\t0.978664431576555030,\t0.978674703611024600,\t0.978684973198807540,\t\n0.978695240339877980,\t0.978705505034210280,\t0.978715767281778890,\t0.978726027082558070,\t0.978736284436522160,\t0.978746539343645750,\t0.978756791803902740,\t0.978767041817267810,\t\n0.978777289383715220,\t0.978787534503219540,\t0.978797777175754890,\t0.978808017401295860,\t0.978818255179817020,\t0.978828490511292280,\t0.978838723395696330,\t0.978848953833003520,\t\n0.978859181823188430,\t0.978869407366225300,\t0.978879630462088700,\t0.978889851110753000,\t0.978900069312192870,\t0.978910285066382340,\t0.978920498373296200,\t0.978930709232908700,\t\n0.978940917645194530,\t0.978951123610128040,\t0.978961327127683690,\t0.978971528197836060,\t0.978981726820559730,\t0.978991922995828930,\t0.979002116723618370,\t0.979012308003902490,\t\n0.979022496836655880,\t0.979032683221853000,\t0.979042867159468420,\t0.979053048649476840,\t0.979063227691852500,\t0.979073404286569970,\t0.979083578433604050,\t0.979093750132929100,\t\n0.979103919384519910,\t0.979114086188350830,\t0.979124250544396450,\t0.979134412452631770,\t0.979144571913030840,\t0.979154728925568430,\t0.979164883490219240,\t0.979175035606957840,\t\n0.979185185275758820,\t0.979195332496596850,\t0.979205477269446620,\t0.979215619594282830,\t0.979225759471079700,\t0.979235896899812270,\t0.979246031880455110,\t0.979256164412982910,\t\n0.979266294497370240,\t0.979276422133591900,\t0.979286547321622570,\t0.979296670061436720,\t0.979306790353009270,\t0.979316908196314780,\t0.979327023591328060,\t0.979337136538023790,\t\n0.979347247036376660,\t0.979357355086361350,\t0.979367460687952880,\t0.979377563841125620,\t0.979387664545854350,\t0.979397762802113990,\t0.979407858609879220,\t0.979417951969124840,\t\n0.979428042879825540,\t0.979438131341956340,\t0.979448217355491590,\t0.979458300920406310,\t0.979468382036675300,\t0.979478460704273360,\t0.979488536923175170,\t0.979498610693355750,\t\n0.979508682014789690,\t0.979518750887452220,\t0.979528817311317580,\t0.979538881286361020,\t0.979548942812557220,\t0.979559001889880990,\t0.979569058518307330,\t0.979579112697810950,\t\n0.979589164428366850,\t0.979599213709950070,\t0.979609260542534940,\t0.979619304926096720,\t0.979629346860610320,\t0.979639386346050410,\t0.979649423382392140,\t0.979659457969610290,\t\n0.979669490107680010,\t0.979679519796575750,\t0.979689547036272760,\t0.979699571826745830,\t0.979709594167969990,\t0.979719614059920140,\t0.979729631502571310,\t0.979739646495898400,\t\n0.979749659039876540,\t0.979759669134480320,\t0.979769676779684960,\t0.979779681975465500,\t0.979789684721796730,\t0.979799685018653780,\t0.979809682866011560,\t0.979819678263845310,\t\n0.979829671212129830,\t0.979839661710840030,\t0.979849649759951150,\t0.979859635359438100,\t0.979869618509276010,\t0.979879599209439790,\t0.979889577459904680,\t0.979899553260645710,\t\n0.979909526611637660,\t0.979919497512855900,\t0.979929465964275330,\t0.979939431965871190,\t0.979949395517618390,\t0.979959356619492070,\t0.979969315271467360,\t0.979979271473519600,\t\n0.979989225225623480,\t0.979999176527754260,\t0.980009125379887160,\t0.980019071781997210,\t0.980029015734059540,\t0.980038957236049390,\t0.980048896287942010,\t0.980058832889712180,\t\n0.980068767041335280,\t0.980078698742786520,\t0.980088627994040950,\t0.980098554795073800,\t0.980108479145860300,\t0.980118401046375600,\t0.980128320496595040,\t0.980138237496493540,\t\n0.980148152046046440,\t0.980158064145228990,\t0.980167973794016320,\t0.980177880992383790,\t0.980187785740306520,\t0.980197688037759750,\t0.980207587884718960,\t0.980217485281159040,\t\n0.980227380227055470,\t0.980237272722383370,\t0.980247162767118100,\t0.980257050361234890,\t0.980266935504709110,\t0.980276818197516110,\t0.980286698439630900,\t0.980296576231028950,\t\n0.980306451571685610,\t0.980316324461576130,\t0.980326194900675850,\t0.980336062888960020,\t0.980345928426404110,\t0.980355791512983470,\t0.980365652148673220,\t0.980375510333448830,\t\n0.980385366067285660,\t0.980395219350159050,\t0.980405070182044480,\t0.980414918562917180,\t0.980424764492752730,\t0.980434607971526260,\t0.980444448999213240,\t0.980454287575789120,\t\n0.980464123701229260,\t0.980473957375509020,\t0.980483788598603970,\t0.980493617370489460,\t0.980503443691141060,\t0.980513267560533810,\t0.980523088978643490,\t0.980532907945445450,\t\n0.980542724460915060,\t0.980552538525027880,\t0.980562350137759390,\t0.980572159299085030,\t0.980581966008980400,\t0.980591770267420730,\t0.980601572074381590,\t0.980611371429838560,\t\n0.980621168333767110,\t0.980630962786142700,\t0.980640754786940900,\t0.980650544336137410,\t0.980660331433707340,\t0.980670116079626510,\t0.980679898273870370,\t0.980689678016414380,\t\n0.980699455307234350,\t0.980709230146305620,\t0.980719002533603780,\t0.980728772469104610,\t0.980738539952783370,\t0.980748304984615740,\t0.980758067564577400,\t0.980767827692643810,\t\n0.980777585368790780,\t0.980787340592993660,\t0.980797093365228250,\t0.980806843685470330,\t0.980816591553695050,\t0.980826336969878310,\t0.980836079933995690,\t0.980845820446022980,\t\n0.980855558505935640,\t0.980865294113709370,\t0.980875027269320080,\t0.980884757972743100,\t0.980894486223954140,\t0.980904212022928990,\t0.980913935369643330,\t0.980923656264072850,\t\n0.980933374706193240,\t0.980943090695980180,\t0.980952804233409580,\t0.980962515318456680,\t0.980972223951097620,\t0.980981930131307970,\t0.980991633859063520,\t0.981001335134339850,\t\n0.981011033957112980,\t0.981020730327358700,\t0.981030424245052380,\t0.981040115710170020,\t0.981049804722687320,\t0.981059491282580080,\t0.981069175389824190,\t0.981078857044395350,\t\n0.981088536246269350,\t0.981098212995422210,\t0.981107887291829410,\t0.981117559135466830,\t0.981127228526310290,\t0.981136895464335800,\t0.981146559949519050,\t0.981156221981835830,\t\n0.981165881561262050,\t0.981175538687773850,\t0.981185193361346570,\t0.981194845581956240,\t0.981204495349578880,\t0.981214142664190270,\t0.981223787525766330,\t0.981233429934282860,\t\n0.981243069889715990,\t0.981252707392041290,\t0.981262342441234890,\t0.981271975037272480,\t0.981281605180130300,\t0.981291232869784040,\t0.981300858106209710,\t0.981310480889383220,\t\n0.981320101219280700,\t0.981329719095877740,\t0.981339334519150450,\t0.981348947489074860,\t0.981358558005626990,\t0.981368166068782630,\t0.981377771678517810,\t0.981387374834808650,\t\n0.981396975537631170,\t0.981406573786961170,\t0.981416169582774670,\t0.981425762925047680,\t0.981435353813756460,\t0.981444942248876680,\t0.981454528230384590,\t0.981464111758256430,\t\n0.981473692832467770,\t0.981483271452994850,\t0.981492847619813810,\t0.981502421332900670,\t0.981511992592231320,\t0.981521561397782130,\t0.981531127749529000,\t0.981540691647448280,\t\n0.981550253091515560,\t0.981559812081707280,\t0.981569368617999370,\t0.981578922700368170,\t0.981588474328789600,\t0.981598023503239880,\t0.981607570223695160,\t0.981617114490131450,\t\n0.981626656302524990,\t0.981636195660851810,\t0.981645732565088140,\t0.981655267015210220,\t0.981664799011194080,\t0.981674328553015840,\t0.981683855640652080,\t0.981693380274078490,\t\n0.981702902453271410,\t0.981712422178207090,\t0.981721939448861770,\t0.981731454265211580,\t0.981740966627232760,\t0.981750476534901440,\t0.981759983988194200,\t0.981769488987086710,\t\n0.981778991531555680,\t0.981788491621577000,\t0.981797989257127130,\t0.981807484438182330,\t0.981816977164718830,\t0.981826467436713090,\t0.981835955254140910,\t0.981845440616978870,\t\n0.981854923525203320,\t0.981864403978790380,\t0.981873881977716410,\t0.981883357521957770,\t0.981892830611490690,\t0.981902301246291740,\t0.981911769426336840,\t0.981921235151602570,\t\n0.981930698422065260,\t0.981940159237701060,\t0.981949617598486530,\t0.981959073504398040,\t0.981968526955411810,\t0.981977977951504430,\t0.981987426492651920,\t0.981996872578830840,\t\n0.982006316210017550,\t0.982015757386188510,\t0.982025196107320090,\t0.982034632373388620,\t0.982044066184370790,\t0.982053497540242630,\t0.982062926440980700,\t0.982072352886561470,\t\n0.982081776876961410,\t0.982091198412156750,\t0.982100617492124290,\t0.982110034116840170,\t0.982119448286281170,\t0.982128860000423320,\t0.982138269259243410,\t0.982147676062717800,\t\n0.982157080410822950,\t0.982166482303535430,\t0.982175881740831700,\t0.982185278722688460,\t0.982194673249081830,\t0.982204065319988610,\t0.982213454935385140,\t0.982222842095248020,\t\n0.982232226799553800,\t0.982241609048279060,\t0.982250988841400270,\t0.982260366178894120,\t0.982269741060736950,\t0.982279113486905440,\t0.982288483457376180,\t0.982297850972125630,\t\n0.982307216031130470,\t0.982316578634367280,\t0.982325938781812620,\t0.982335296473443310,\t0.982344651709235570,\t0.982354004489166210,\t0.982363354813211910,\t0.982372702681349130,\t\n0.982382048093554670,\t0.982391391049805000,\t0.982400731550077120,\t0.982410069594347180,\t0.982419405182592080,\t0.982428738314788390,\t0.982438068990913020,\t0.982447397210942320,\t\n0.982456722974853200,\t0.982466046282622240,\t0.982475367134226450,\t0.982484685529641970,\t0.982494001468845800,\t0.982503314951814530,\t0.982512625978525070,\t0.982521934548954090,\t\n0.982531240663078180,\t0.982540544320874450,\t0.982549845522319050,\t0.982559144267389110,\t0.982568440556061300,\t0.982577734388312420,\t0.982587025764119160,\t0.982596314683458430,\t\n0.982605601146306800,\t0.982614885152641390,\t0.982624166702438570,\t0.982633445795675350,\t0.982642722432328530,\t0.982651996612374900,\t0.982661268335791260,\t0.982670537602554410,\t\n0.982679804412641240,\t0.982689068766028790,\t0.982698330662693520,\t0.982707590102612330,\t0.982716847085762240,\t0.982726101612119930,\t0.982735353681662430,\t0.982744603294366530,\t\n0.982753850450209350,\t0.982763095149167380,\t0.982772337391217610,\t0.982781577176336960,\t0.982790814504502450,\t0.982800049375690880,\t0.982809281789879140,\t0.982818511747044270,\t\n0.982827739247163270,\t0.982836964290212720,\t0.982846186876169760,\t0.982855407005011390,\t0.982864624676714540,\t0.982873839891255980,\t0.982883052648612980,\t0.982892262948762200,\t\n0.982901470791681000,\t0.982910676177345950,\t0.982919879105734200,\t0.982929079576822740,\t0.982938277590588600,\t0.982947473147008810,\t0.982956666246060370,\t0.982965856887720310,\t\n0.982975045071965540,\t0.982984230798773060,\t0.982993414068120130,\t0.983002594879983540,\t0.983011773234340520,\t0.983020949131168110,\t0.983030122570443200,\t0.983039293552143260,\t\n0.983048462076244860,\t0.983057628142725350,\t0.983066791751561750,\t0.983075952902731200,\t0.983085111596210700,\t0.983094267831977510,\t0.983103421610008740,\t0.983112572930281310,\t\n0.983121721792772460,\t0.983130868197459210,\t0.983140012144318900,\t0.983149153633328550,\t0.983158292664465190,\t0.983167429237706280,\t0.983176563353028830,\t0.983185695010409870,\t\n0.983194824209826620,\t0.983203950951256340,\t0.983213075234676160,\t0.983222197060063310,\t0.983231316427395030,\t0.983240433336648350,\t0.983249547787800830,\t0.983258659780829270,\t\n0.983267769315711030,\t0.983276876392423340,\t0.983285981010943550,\t0.983295083171248700,\t0.983304182873316220,\t0.983313280117123380,\t0.983322374902647290,\t0.983331467229865200,\t\n0.983340557098754340,\t0.983349644509292190,\t0.983358729461455970,\t0.983367811955222940,\t0.983376891990570320,\t0.983385969567475590,\t0.983395044685915760,\t0.983404117345868410,\t\n0.983413187547310770,\t0.983422255290220090,\t0.983431320574573830,\t0.983440383400349230,\t0.983449443767523750,\t0.983458501676074740,\t0.983467557125979330,\t0.983476610117214990,\t\n0.983485660649759170,\t0.983494708723589240,\t0.983503754338682530,\t0.983512797495016410,\t0.983521838192568440,\t0.983530876431315650,\t0.983539912211235820,\t0.983548945532306100,\t\n0.983557976394504040,\t0.983567004797807010,\t0.983576030742192580,\t0.983585054227637980,\t0.983594075254120900,\t0.983603093821618480,\t0.983612109930108390,\t0.983621123579567990,\t\n0.983630134769974740,\t0.983639143501306210,\t0.983648149773539760,\t0.983657153586653180,\t0.983666154940623480,\t0.983675153835428470,\t0.983684150271045500,\t0.983693144247452130,\t\n0.983702135764626060,\t0.983711124822544520,\t0.983720111421185210,\t0.983729095560525680,\t0.983738077240543410,\t0.983747056461215850,\t0.983756033222520700,\t0.983765007524435410,\t\n0.983773979366937670,\t0.983782948750004940,\t0.983791915673614790,\t0.983800880137745140,\t0.983809842142372990,\t0.983818801687476370,\t0.983827758773032630,\t0.983836713399019570,\t\n0.983845665565414640,\t0.983854615272195640,\t0.983863562519340260,\t0.983872507306825740,\t0.983881449634629980,\t0.983890389502730670,\t0.983899326911105270,\t0.983908261859731570,\t\n0.983917194348587270,\t0.983926124377650040,\t0.983935051946897570,\t0.983943977056307320,\t0.983952899705857090,\t0.983961819895524670,\t0.983970737625287750,\t0.983979652895123900,\t\n0.983988565705010920,\t0.983997476054926600,\t0.984006383944848630,\t0.984015289374754690,\t0.984024192344622460,\t0.984033092854429750,\t0.984041990904154230,\t0.984050886493773810,\t\n0.984059779623266180,\t0.984068670292609250,\t0.984077558501780470,\t0.984086444250757750,\t0.984095327539519000,\t0.984104208368041910,\t0.984113086736304380,\t0.984121962644283980,\t\n0.984130836091958730,\t0.984139707079306540,\t0.984148575606304980,\t0.984157441672931950,\t0.984166305279165380,\t0.984175166424982930,\t0.984184025110362630,\t0.984192881335282270,\t\n0.984201735099719870,\t0.984210586403652890,\t0.984219435247059570,\t0.984228281629917600,\t0.984237125552204880,\t0.984245967013899440,\t0.984254806014979060,\t0.984263642555421540,\t\n0.984272476635205230,\t0.984281308254307490,\t0.984290137412706550,\t0.984298964110380200,\t0.984307788347306480,\t0.984316610123463280,\t0.984325429438828500,\t0.984334246293380180,\t\n0.984343060687096430,\t0.984351872619954940,\t0.984360682091933610,\t0.984369489103010700,\t0.984378293653163980,\t0.984387095742371600,\t0.984395895370611450,\t0.984404692537861670,\t\n0.984413487244100050,\t0.984422279489304720,\t0.984431069273453700,\t0.984439856596525000,\t0.984448641458496640,\t0.984457423859346650,\t0.984466203799053140,\t0.984474981277594360,\t\n0.984483756294947890,\t0.984492528851091950,\t0.984501298946004800,\t0.984510066579664330,\t0.984518831752048800,\t0.984527594463136090,\t0.984536354712904460,\t0.984545112501332030,\t\n0.984553867828396710,\t0.984562620694076740,\t0.984571371098350130,\t0.984580119041195130,\t0.984588864522589870,\t0.984597607542512470,\t0.984606348100941160,\t0.984615086197853870,\t\n0.984623821833228830,\t0.984632555007044160,\t0.984641285719278230,\t0.984650013969909030,\t0.984658739758914820,\t0.984667463086273730,\t0.984676183951964210,\t0.984684902355963950,\t\n0.984693618298251530,\t0.984702331778805060,\t0.984711042797602690,\t0.984719751354622750,\t0.984728457449843500,\t0.984737161083243160,\t0.984745862254799760,\t0.984754560964491770,\t\n0.984763257212297400,\t0.984771950998194810,\t0.984780642322162450,\t0.984789331184178440,\t0.984798017584221030,\t0.984806701522268790,\t0.984815382998299630,\t0.984824062012292000,\t\n0.984832738564224260,\t0.984841412654074650,\t0.984850084281821530,\t0.984858753447443110,\t0.984867420150917880,\t0.984876084392224290,\t0.984884746171340250,\t0.984893405488244330,\t\n0.984902062342915000,\t0.984910716735330480,\t0.984919368665469140,\t0.984928018133309440,\t0.984936665138829710,\t0.984945309682008330,\t0.984953951762823520,\t0.984962591381253970,\t\n0.984971228537277920,\t0.984979863230873720,\t0.984988495462019940,\t0.984997125230694830,\t0.985005752536877170,\t0.985014377380544870,\t0.985022999761676730,\t0.985031619680250990,\t\n0.985040237136246330,\t0.985048852129640990,\t0.985057464660413550,\t0.985066074728542460,\t0.985074682334006300,\t0.985083287476783200,\t0.985091890156852060,\t0.985100490374191120,\t\n0.985109088128778840,\t0.985117683420594030,\t0.985126276249614910,\t0.985134866615820280,\t0.985143454519188280,\t0.985152039959697690,\t0.985160622937326980,\t0.985169203452054720,\t\n0.985177781503859480,\t0.985186357092719730,\t0.985194930218614150,\t0.985203500881521420,\t0.985212069081419670,\t0.985220634818287810,\t0.985229198092104410,\t0.985237758902847930,\t\n0.985246317250497160,\t0.985254873135030460,\t0.985263426556426850,\t0.985271977514664440,\t0.985280526009722160,\t0.985289072041578560,\t0.985297615610212230,\t0.985306156715601840,\t\n0.985314695357726090,\t0.985323231536563650,\t0.985331765252093210,\t0.985340296504293220,\t0.985348825293142490,\t0.985357351618619810,\t0.985365875480703650,\t0.985374396879372780,\t\n0.985382915814605910,\t0.985391432286381820,\t0.985399946294679310,\t0.985408457839476730,\t0.985416966920752980,\t0.985425473538486860,\t0.985433977692657060,\t0.985442479383242250,\t\n0.985450978610221350,\t0.985459475373573150,\t0.985467969673275990,\t0.985476461509309010,\t0.985484950881650890,\t0.985493437790280310,\t0.985501922235176190,\t0.985510404216317190,\t\n0.985518883733682240,\t0.985527360787250230,\t0.985535835376999740,\t0.985544307502909560,\t0.985552777164958590,\t0.985561244363125750,\t0.985569709097389830,\t0.985578171367729630,\t\n0.985586631174124040,\t0.985595088516551860,\t0.985603543394991900,\t0.985611995809423050,\t0.985620445759824220,\t0.985628893246174310,\t0.985637338268452120,\t0.985645780826636560,\t\n0.985654220920706760,\t0.985662658550641280,\t0.985671093716419140,\t0.985679526418019260,\t0.985687956655420530,\t0.985696384428601970,\t0.985704809737542380,\t0.985713232582220880,\t\n0.985721652962616270,\t0.985730070878707560,\t0.985738486330473560,\t0.985746899317893390,\t0.985755309840945950,\t0.985763717899610260,\t0.985772123493865230,\t0.985780526623690090,\t\n0.985788927289063420,\t0.985797325489964460,\t0.985805721226372220,\t0.985814114498265730,\t0.985822505305623880,\t0.985830893648425690,\t0.985839279526650400,\t0.985847662940277040,\t\n0.985856043889284270,\t0.985864422373651460,\t0.985872798393357620,\t0.985881171948381760,\t0.985889543038703020,\t0.985897911664300410,\t0.985906277825152940,\t0.985914641521239980,\t\n0.985923002752540300,\t0.985931361519033040,\t0.985939717820697450,\t0.985948071657512530,\t0.985956423029457410,\t0.985964771936511220,\t0.985973118378653310,\t0.985981462355862370,\t\n0.985989803868117850,\t0.985998142915398890,\t0.986006479497684380,\t0.986014813614953800,\t0.986023145267186150,\t0.986031474454360680,\t0.986039801176456620,\t0.986048125433452990,\t\n0.986056447225329040,\t0.986064766552063880,\t0.986073083413636860,\t0.986081397810027130,\t0.986089709741213900,\t0.986098019207176550,\t0.986106326207893960,\t0.986114630743345600,\t\n0.986122932813510600,\t0.986131232418368310,\t0.986139529557897960,\t0.986147824232078810,\t0.986156116440890070,\t0.986164406184311230,\t0.986172693462321170,\t0.986180978274899370,\t\n0.986189260622025170,\t0.986197540503677690,\t0.986205817919836520,\t0.986214092870480790,\t0.986222365355589710,\t0.986230635375142990,\t0.986238902929119420,\t0.986247168017498680,\t\n0.986255430640260000,\t0.986263690797382740,\t0.986271948488846250,\t0.986280203714629990,\t0.986288456474713190,\t0.986296706769075220,\t0.986304954597695400,\t0.986313199960553330,\t\n0.986321442857628130,\t0.986329683288899360,\t0.986337921254346380,\t0.986346156753948660,\t0.986354389787685640,\t0.986362620355536460,\t0.986370848457480800,\t0.986379074093498010,\t\n0.986387297263567440,\t0.986395517967668780,\t0.986403736205781260,\t0.986411951977884340,\t0.986420165283957710,\t0.986428376123980600,\t0.986436584497932480,\t0.986444790405792920,\t\n0.986452993847541370,\t0.986461194823157310,\t0.986469393332620400,\t0.986477589375910010,\t0.986485782953005490,\t0.986493974063886610,\t0.986502162708532750,\t0.986510348886923460,\t\n0.986518532599038320,\t0.986526713844856910,\t0.986534892624358670,\t0.986543068937523300,\t0.986551242784330150,\t0.986559414164758900,\t0.986567583078789110,\t0.986575749526400370,\t\n0.986583913507572240,\t0.986592075022284300,\t0.986600234070516340,\t0.986608390652247700,\t0.986616544767458080,\t0.986624696416127040,\t0.986632845598234280,\t0.986640992313759460,\t\n0.986649136562682050,\t0.986657278344981850,\t0.986665417660638640,\t0.986673554509631680,\t0.986681688891940860,\t0.986689820807545860,\t0.986697950256426260,\t0.986706077238561740,\t\n0.986714201753932100,\t0.986722323802517010,\t0.986730443384296160,\t0.986738560499249020,\t0.986746675147355590,\t0.986754787328595450,\t0.986762897042948280,\t0.986771004290393880,\t\n0.986779109070912040,\t0.986787211384482550,\t0.986795311231084770,\t0.986803408610698820,\t0.986811503523304380,\t0.986819595968881140,\t0.986827685947408880,\t0.986835773458867420,\t\n0.986843858503236530,\t0.986851941080496230,\t0.986860021190625770,\t0.986868098833605380,\t0.986876174009414740,\t0.986884246718033540,\t0.986892316959441910,\t0.986900384733619300,\t\n0.986908450040545840,\t0.986916512880201440,\t0.986924573252565550,\t0.986932631157618200,\t0.986940686595339290,\t0.986948739565708720,\t0.986956790068706180,\t0.986964838104311790,\t\n0.986972883672505350,\t0.986980926773266650,\t0.986988967406575600,\t0.986997005572412100,\t0.987005041270756170,\t0.987013074501587600,\t0.987021105264886290,\t0.987029133560632270,\t\n0.987037159388805540,\t0.987045182749385690,\t0.987053203642353050,\t0.987061222067687320,\t0.987069238025368500,\t0.987077251515376620,\t0.987085262537691580,\t0.987093271092293610,\t\n0.987101277179162180,\t0.987109280798277640,\t0.987117281949619900,\t0.987125280633168960,\t0.987133276848904840,\t0.987141270596807560,\t0.987149261876857030,\t0.987157250689033480,\t\n0.987165237033316710,\t0.987173220909686840,\t0.987181202318123900,\t0.987189181258607880,\t0.987197157731119050,\t0.987205131735637290,\t0.987213103272142620,\t0.987221072340615400,\t\n0.987229038941035310,\t0.987237003073382690,\t0.987244964737637560,\t0.987252923933779950,\t0.987260880661790070,\t0.987268834921647960,\t0.987276786713333960,\t0.987284736036827870,\t\n0.987292682892109920,\t0.987300627279160240,\t0.987308569197958950,\t0.987316508648486300,\t0.987324445630722300,\t0.987332380144647300,\t0.987340312190241430,\t0.987348241767484590,\t\n0.987356168876357240,\t0.987364093516839400,\t0.987372015688911420,\t0.987379935392553310,\t0.987387852627745420,\t0.987395767394467880,\t0.987403679692701040,\t0.987411589522424800,\t\n0.987419496883619740,\t0.987427401776265870,\t0.987435304200343420,\t0.987443204155832750,\t0.987451101642714100,\t0.987458996660967810,\t0.987466889210573910,\t0.987474779291512840,\t\n0.987482666903764740,\t0.987490552047310070,\t0.987498434722128950,\t0.987506314928201730,\t0.987514192665508660,\t0.987522067934030410,\t0.987529940733746780,\t0.987537811064638230,\t\n0.987545678926685210,\t0.987553544319867970,\t0.987561407244166970,\t0.987569267699562330,\t0.987577125686034730,\t0.987584981203564080,\t0.987592834252131070,\t0.987600684831716040,\t\n0.987608532942299110,\t0.987616378583860980,\t0.987624221756381870,\t0.987632062459842250,\t0.987639900694222580,\t0.987647736459502990,\t0.987655569755664150,\t0.987663400582686310,\t\n0.987671228940549930,\t0.987679054829235570,\t0.987686878248723480,\t0.987694699198994220,\t0.987702517680028480,\t0.987710333691806160,\t0.987718147234308060,\t0.987725958307514530,\t\n0.987733766911406240,\t0.987741573045963440,\t0.987749376711166690,\t0.987757177906996690,\t0.987764976633433540,\t0.987772772890458060,\t0.987780566678050590,\t0.987788357996191690,\t\n0.987796146844861830,\t0.987803933224041700,\t0.987811717133711740,\t0.987819498573852540,\t0.987827277544444550,\t0.987835054045468340,\t0.987842828076904490,\t0.987850599638733560,\t\n0.987858368730936130,\t0.987866135353492770,\t0.987873899506384270,\t0.987881661189590750,\t0.987889420403093240,\t0.987897177146872090,\t0.987904931420908070,\t0.987912683225181660,\t\n0.987920432559673540,\t0.987928179424364280,\t0.987935923819234780,\t0.987943665744265400,\t0.987951405199436690,\t0.987959142184729580,\t0.987966876700124620,\t0.987974608745602500,\t\n0.987982338321143790,\t0.987990065426729290,\t0.987997790062339680,\t0.988005512227955520,\t0.988013231923557500,\t0.988020949149126530,\t0.988028663904643060,\t0.988036376190087990,\t\n0.988044086005442020,\t0.988051793350685940,\t0.988059498225800190,\t0.988067200630765810,\t0.988074900565563350,\t0.988082598030173620,\t0.988090293024577400,\t0.988097985548755500,\t\n0.988105675602688580,\t0.988113363186357670,\t0.988121048299743230,\t0.988128730942826050,\t0.988136411115587140,\t0.988144088818007190,\t0.988151764050066990,\t0.988159436811747450,\t\n0.988167107103029240,\t0.988174774923893380,\t0.988182440274320560,\t0.988190103154291570,\t0.988197763563787300,\t0.988205421502788670,\t0.988213076971276470,\t0.988220729969231600,\t\n0.988228380496634970,\t0.988236028553467260,\t0.988243674139709590,\t0.988251317255342650,\t0.988258957900347350,\t0.988266596074704800,\t0.988274231778395680,\t0.988281865011401030,\t\n0.988289495773701730,\t0.988297124065278700,\t0.988304749886112830,\t0.988312373236185040,\t0.988319994115476330,\t0.988327612523967610,\t0.988335228461639900,\t0.988342841928474210,\t\n0.988350452924451340,\t0.988358061449552410,\t0.988365667503758210,\t0.988373271087049870,\t0.988380872199408290,\t0.988388470840814600,\t0.988396067011249710,\t0.988403660710694850,\t\n0.988411251939130600,\t0.988418840696538290,\t0.988426426982898840,\t0.988434010798193370,\t0.988441592142402790,\t0.988449171015508330,\t0.988456747417490900,\t0.988464321348331730,\t\n0.988471892808011620,\t0.988479461796511800,\t0.988487028313813300,\t0.988494592359897230,\t0.988502153934744720,\t0.988509713038336790,\t0.988517269670654790,\t0.988524823831679390,\t\n0.988532375521391950,\t0.988539924739773590,\t0.988547471486805440,\t0.988555015762468510,\t0.988562557566744160,\t0.988570096899613280,\t0.988577633761057450,\t0.988585168151057350,\t\n0.988592700069594210,\t0.988600229516649500,\t0.988607756492204110,\t0.988615280996239410,\t0.988622803028736400,\t0.988630322589676420,\t0.988637839679040840,\t0.988645354296810440,\t\n0.988652866442966680,\t0.988660376117490800,\t0.988667883320363930,\t0.988675388051567290,\t0.988682890311082250,\t0.988690390098890150,\t0.988697887414971890,\t0.988705382259309040,\t\n0.988712874631882620,\t0.988720364532673980,\t0.988727851961664460,\t0.988735336918835310,\t0.988742819404167860,\t0.988750299417643470,\t0.988757776959243160,\t0.988765252028948490,\t\n0.988772724626740600,\t0.988780194752601040,\t0.988787662406510840,\t0.988795127588451560,\t0.988802590298404560,\t0.988810050536350960,\t0.988817508302272220,\t0.988824963596149800,\t\n0.988832416417964930,\t0.988839866767698970,\t0.988847314645333380,\t0.988854760050849490,\t0.988862202984228780,\t0.988869643445452470,\t0.988877081434502150,\t0.988884516951359040,\t\n0.988891949996004600,\t0.988899380568420310,\t0.988906808668587600,\t0.988914234296487840,\t0.988921657452102700,\t0.988929078135413200,\t0.988936496346401020,\t0.988943912085047620,\t\n0.988951325351334450,\t0.988958736145242880,\t0.988966144466754570,\t0.988973550315850990,\t0.988980953692513490,\t0.988988354596723520,\t0.988995753028462650,\t0.989003148987712350,\t\n0.989010542474454300,\t0.989017933488669840,\t0.989025322030340550,\t0.989032708099448100,\t0.989040091695973730,\t0.989047472819899130,\t0.989054851471205860,\t0.989062227649875500,\t\n0.989069601355889510,\t0.989076972589229550,\t0.989084341349877110,\t0.989091707637813950,\t0.989099071453021450,\t0.989106432795481270,\t0.989113791665174990,\t0.989121148062084180,\t\n0.989128501986190620,\t0.989135853437475680,\t0.989143202415921350,\t0.989150548921508780,\t0.989157892954219850,\t0.989165234514036260,\t0.989172573600939580,\t0.989179910214911360,\t\n0.989187244355933410,\t0.989194576023987420,\t0.989201905219055040,\t0.989209231941117870,\t0.989216556190157580,\t0.989223877966155850,\t0.989231197269094480,\t0.989238514098955020,\t\n0.989245828455719400,\t0.989253140339369290,\t0.989260449749886140,\t0.989267756687251980,\t0.989275061151448360,\t0.989282363142456990,\t0.989289662660259860,\t0.989296959704838550,\t\n0.989304254276174850,\t0.989311546374250560,\t0.989318835999047350,\t0.989326123150547020,\t0.989333407828731360,\t0.989340690033582270,\t0.989347969765081440,\t0.989355247023210650,\t\n0.989362521807951700,\t0.989369794119286610,\t0.989377063957196930,\t0.989384331321664590,\t0.989391596212671360,\t0.989398858630199160,\t0.989406118574229890,\t0.989413376044745220,\t\n0.989420631041727280,\t0.989427883565157650,\t0.989435133615018340,\t0.989442381191291130,\t0.989449626293958050,\t0.989456868923000890,\t0.989464109078401430,\t0.989471346760141810,\t\n0.989478581968203930,\t0.989485814702569470,\t0.989493044963220550,\t0.989500272750138850,\t0.989507498063306620,\t0.989514720902705540,\t0.989521941268317720,\t0.989529159160125070,\t\n0.989536374578109610,\t0.989543587522253130,\t0.989550797992537650,\t0.989558005988945060,\t0.989565211511457600,\t0.989572414560057070,\t0.989579615134725480,\t0.989586813235445060,\t\n0.989594008862197390,\t0.989601202014964710,\t0.989608392693729130,\t0.989615580898472460,\t0.989622766629176920,\t0.989629949885824420,\t0.989637130668396980,\t0.989644308976876940,\t\n0.989651484811245870,\t0.989658658171486240,\t0.989665829057579940,\t0.989672997469508990,\t0.989680163407255620,\t0.989687326870801740,\t0.989694487860129810,\t0.989701646375221400,\t\n0.989708802416058960,\t0.989715955982624520,\t0.989723107074900190,\t0.989730255692867990,\t0.989737401836510270,\t0.989744545505809040,\t0.989751686700746540,\t0.989758825421304670,\t\n0.989765961667465780,\t0.989773095439211990,\t0.989780226736525440,\t0.989787355559388240,\t0.989794481907782740,\t0.989801605781691070,\t0.989808727181095470,\t0.989815846105977950,\t\n0.989822962556320740,\t0.989830076532106200,\t0.989837188033316440,\t0.989844297059933710,\t0.989851403611940240,\t0.989858507689318490,\t0.989865609292050250,\t0.989872708420117990,\t\n0.989879805073503930,\t0.989886899252190310,\t0.989893990956159600,\t0.989901080185393800,\t0.989908166939875380,\t0.989915251219586570,\t0.989922333024509600,\t0.989929412354626730,\t\n0.989936489209920280,\t0.989943563590372720,\t0.989950635495966180,\t0.989957704926683110,\t0.989964771882505870,\t0.989971836363416570,\t0.989978898369397790,\t0.989985957900431650,\t\n0.989993014956500610,\t0.990000069537587010,\t0.990007121643673330,\t0.990014171274741780,\t0.990021218430774950,\t0.990028263111754960,\t0.990035305317664260,\t0.990042345048485320,\t\n0.990049382304200590,\t0.990056417084792310,\t0.990063449390243040,\t0.990070479220535150,\t0.990077506575651190,\t0.990084531455573290,\t0.990091553860284130,\t0.990098573789766070,\t\n0.990105591244001550,\t0.990112606222973040,\t0.990119618726662990,\t0.990126628755054080,\t0.990133636308128450,\t0.990140641385868770,\t0.990147643988257390,\t0.990154644115276980,\t\n0.990161641766909910,\t0.990168636943138840,\t0.990175629643946010,\t0.990182619869314330,\t0.990189607619226030,\t0.990196592893663690,\t0.990203575692609750,\t0.990210556016047020,\t\n0.990217533863957830,\t0.990224509236324770,\t0.990231482133130500,\t0.990238452554357610,\t0.990245420499988540,\t0.990252385970005870,\t0.990259348964392160,\t0.990266309483130100,\t\n0.990273267526202370,\t0.990280223093591430,\t0.990287176185280060,\t0.990294126801250620,\t0.990301074941485780,\t0.990308020605968340,\t0.990314963794680870,\t0.990321904507605930,\t\n0.990328842744726210,\t0.990335778506024500,\t0.990342711791483370,\t0.990349642601085380,\t0.990356570934813220,\t0.990363496792649680,\t0.990370420174577440,\t0.990377341080579070,\t\n0.990384259510637350,\t0.990391175464735210,\t0.990398088942854860,\t0.990404999944979440,\t0.990411908471091400,\t0.990418814521173640,\t0.990425718095208850,\t0.990432619193179710,\t\n0.990439517815069110,\t0.990446413960859750,\t0.990453307630534300,\t0.990460198824075540,\t0.990467087541466400,\t0.990473973782689420,\t0.990480857547727520,\t0.990487738836563490,\t\n0.990494617649180120,\t0.990501493985560310,\t0.990508367845686630,\t0.990515239229542100,\t0.990522108137109390,\t0.990528974568371520,\t0.990535838523311060,\t0.990542700001911140,\t\n0.990549559004154530,\t0.990556415530023940,\t0.990563269579502250,\t0.990570121152572370,\t0.990576970249217310,\t0.990583816869419760,\t0.990590661013162620,\t0.990597502680428900,\t\n0.990604341871201500,\t0.990611178585463100,\t0.990618012823196840,\t0.990624844584385490,\t0.990631673869011960,\t0.990638500677059390,\t0.990645325008510550,\t0.990652146863348350,\t\n0.990658966241555810,\t0.990665783143115930,\t0.990672597568011400,\t0.990679409516225460,\t0.990686218987741010,\t0.990693025982541050,\t0.990699830500608500,\t0.990706632541926480,\t\n0.990713432106477780,\t0.990720229194245410,\t0.990727023805212600,\t0.990733815939362160,\t0.990740605596677200,\t0.990747392777140630,\t0.990754177480735690,\t0.990760959707445380,\t\n0.990767739457252610,\t0.990774516730140500,\t0.990781291526091960,\t0.990788063845090330,\t0.990794833687118510,\t0.990801601052159530,\t0.990808365940196720,\t0.990815128351212880,\t\n0.990821888285191240,\t0.990828645742114930,\t0.990835400721966850,\t0.990842153224730460,\t0.990848903250388550,\t0.990855650798924460,\t0.990862395870321320,\t0.990869138464562040,\t\n0.990875878581629950,\t0.990882616221508080,\t0.990889351384179770,\t0.990896084069628150,\t0.990902814277836220,\t0.990909542008787230,\t0.990916267262464510,\t0.990922990038851090,\t\n0.990929710337930090,\t0.990936428159684860,\t0.990943143504098620,\t0.990949856371154400,\t0.990956566760835660,\t0.990963274673125620,\t0.990969980108007190,\t0.990976683065463830,\t\n0.990983383545478770,\t0.990990081548035250,\t0.990996777073116510,\t0.991003470120705890,\t0.991010160690786510,\t0.991016848783341950,\t0.991023534398355110,\t0.991030217535809440,\t\n0.991036898195688190,\t0.991043576377974690,\t0.991050252082652290,\t0.991056925309704240,\t0.991063596059113870,\t0.991070264330864650,\t0.991076930124939580,\t0.991083593441322240,\t\n0.991090254279995970,\t0.991096912640944020,\t0.991103568524149820,\t0.991110221929596640,\t0.991116872857268020,\t0.991123521307147200,\t0.991130167279217430,\t0.991136810773462380,\t\n0.991143451789865180,\t0.991150090328409390,\t0.991156726389078480,\t0.991163359971855670,\t0.991169991076724540,\t0.991176619703668330,\t0.991183245852670590,\t0.991189869523714790,\t\n0.991196490716784280,\t0.991203109431862520,\t0.991209725668933060,\t0.991216339427979260,\t0.991222950708984580,\t0.991229559511932590,\t0.991236165836806630,\t0.991242769683590260,\t\n0.991249371052266960,\t0.991255969942820170,\t0.991262566355233580,\t0.991269160289490640,\t0.991275751745574700,\t0.991282340723469320,\t0.991288927223158090,\t0.991295511244624670,\t\n0.991302092787852310,\t0.991308671852824790,\t0.991315248439525680,\t0.991321822547938440,\t0.991328394178046520,\t0.991334963329833730,\t0.991341530003283400,\t0.991348094198379330,\t\n0.991354655915104970,\t0.991361215153444110,\t0.991367771913380210,\t0.991374326194896740,\t0.991380877997977470,\t0.991387427322606100,\t0.991393974168766070,\t0.991400518536441070,\t\n0.991407060425614880,\t0.991413599836270980,\t0.991420136768393250,\t0.991426671221964930,\t0.991433203196970040,\t0.991439732693392140,\t0.991446259711214920,\t0.991452784250422050,\t\n0.991459306310997100,\t0.991465825892924090,\t0.991472342996186470,\t0.991478857620767930,\t0.991485369766652250,\t0.991491879433823110,\t0.991498386622264300,\t0.991504891331959510,\t\n0.991511393562892530,\t0.991517893315047140,\t0.991524390588407020,\t0.991530885382955750,\t0.991537377698677340,\t0.991543867535555570,\t0.991550354893574020,\t0.991556839772716580,\t\n0.991563322172967050,\t0.991569802094309450,\t0.991576279536727110,\t0.991582754500204060,\t0.991589226984724180,\t0.991595696990271170,\t0.991602164516829030,\t0.991608629564381450,\t\n0.991615092132912320,\t0.991621552222405440,\t0.991628009832844600,\t0.991634464964213810,\t0.991640917616496750,\t0.991647367789677550,\t0.991653815483739760,\t0.991660260698667530,\t\n0.991666703434444850,\t0.991673143691055190,\t0.991679581468482670,\t0.991686016766711200,\t0.991692449585724670,\t0.991698879925507090,\t0.991705307786042270,\t0.991711733167314200,\t\n0.991718156069306910,\t0.991724576492004070,\t0.991730994435389810,\t0.991737409899448030,\t0.991743822884162740,\t0.991750233389517950,\t0.991756641415497580,\t0.991763046962085730,\t\n0.991769450029266090,\t0.991775850617022780,\t0.991782248725339930,\t0.991788644354201440,\t0.991795037503591330,\t0.991801428173493590,\t0.991807816363892370,\t0.991814202074771670,\t\n0.991820585306115390,\t0.991826966057907540,\t0.991833344330132370,\t0.991839720122773880,\t0.991846093435815980,\t0.991852464269242890,\t0.991858832623038760,\t0.991865198497187460,\t\n0.991871561891673140,\t0.991877922806479910,\t0.991884281241591890,\t0.991890637196993110,\t0.991896990672667790,\t0.991903341668600060,\t0.991909690184773930,\t0.991916036221173640,\t\n0.991922379777783080,\t0.991928720854586720,\t0.991935059451568460,\t0.991941395568712640,\t0.991947729206003270,\t0.991954060363424590,\t0.991960389040960840,\t0.991966715238596030,\t\n0.991973038956314500,\t0.991979360194100270,\t0.991985678951937680,\t0.991991995229810850,\t0.991998309027704140,\t0.992004620345601660,\t0.992010929183487540,\t0.992017235541346130,\t\n0.992023539419161660,\t0.992029840816918360,\t0.992036139734600360,\t0.992042436172192010,\t0.992048730129677650,\t0.992055021607041620,\t0.992061310604267830,\t0.992067597121340740,\t\n0.992073881158244690,\t0.992080162714964020,\t0.992086441791482860,\t0.992092718387785570,\t0.992098992503856470,\t0.992105264139680140,\t0.992111533295240380,\t0.992117799970521850,\t\n0.992124064165508910,\t0.992130325880185680,\t0.992136585114536730,\t0.992142841868546290,\t0.992149096142198820,\t0.992155347935478440,\t0.992161597248369830,\t0.992167844080857120,\t\n0.992174088432924870,\t0.992180330304557430,\t0.992186569695739040,\t0.992192806606454370,\t0.992199041036687660,\t0.992205272986423360,\t0.992211502455645820,\t0.992217729444339500,\t\n0.992223953952488860,\t0.992230175980078340,\t0.992236395527092420,\t0.992242612593515540,\t0.992248827179332160,\t0.992255039284526630,\t0.992261248909083520,\t0.992267456052987160,\t\n0.992273660716222360,\t0.992279862898773240,\t0.992286062600624570,\t0.992292259821760840,\t0.992298454562166370,\t0.992304646821825730,\t0.992310836600723390,\t0.992317023898844130,\t\n0.992323208716172190,\t0.992329391052692240,\t0.992335570908388860,\t0.992341748283246620,\t0.992347923177249960,\t0.992354095590383460,\t0.992360265522631680,\t0.992366432973979310,\t\n0.992372597944410790,\t0.992378760433910820,\t0.992384920442463960,\t0.992391077970054770,\t0.992397233016667930,\t0.992403385582288020,\t0.992409535666899600,\t0.992415683270487240,\t\n0.992421828393035830,\t0.992427971034529730,\t0.992434111194953950,\t0.992440248874292610,\t0.992446384072530830,\t0.992452516789652960,\t0.992458647025643790,\t0.992464774780488110,\t\n0.992470900054170380,\t0.992477022846675490,\t0.992483143157988130,\t0.992489260988092760,\t0.992495376336974270,\t0.992501489204617340,\t0.992507599591006760,\t0.992513707496127110,\t\n0.992519812919963160,\t0.992525915862499830,\t0.992532016323721570,\t0.992538114303613270,\t0.992544209802159740,\t0.992550302819345640,\t0.992556393355155770,\t0.992562481409574930,\t\n0.992568566982587890,\t0.992574650074179550,\t0.992580730684334500,\t0.992586808813037620,\t0.992592884460273720,\t0.992598957626027570,\t0.992605028310283970,\t0.992611096513027920,\t\n0.992617162234244230,\t0.992623225473917460,\t0.992629286232032610,\t0.992635344508574600,\t0.992641400303528210,\t0.992647453616878340,\t0.992653504448609780,\t0.992659552798707550,\t\n0.992665598667156530,\t0.992671642053941320,\t0.992677682959047130,\t0.992683721382458640,\t0.992689757324160870,\t0.992695790784138720,\t0.992701821762377090,\t0.992707850258860880,\t\n0.992713876273575210,\t0.992719899806504660,\t0.992725920857634450,\t0.992731939426949370,\t0.992737955514434440,\t0.992743969120074680,\t0.992749980243854970,\t0.992755988885760330,\t\n0.992761995045775780,\t0.992767998723886100,\t0.992773999920076530,\t0.992779998634331860,\t0.992785994866637210,\t0.992791988616977710,\t0.992797979885338130,\t0.992803968671703620,\t\n0.992809954976059170,\t0.992815938798389920,\t0.992821920138680760,\t0.992827898996916700,\t0.992833875373082990,\t0.992839849267164620,\t0.992845820679146620,\t0.992851789609014100,\t\n0.992857756056751970,\t0.992863720022345570,\t0.992869681505779810,\t0.992875640507039910,\t0.992881597026110780,\t0.992887551062977770,\t0.992893502617625990,\t0.992899451690040240,\t\n0.992905398280205960,\t0.992911342388108190,\t0.992917284013732030,\t0.992923223157062610,\t0.992929159818085270,\t0.992935093996784920,\t0.992941025693146910,\t0.992946954907156340,\t\n0.992952881638798360,\t0.992958805888058070,\t0.992964727654920940,\t0.992970646939371870,\t0.992976563741396200,\t0.992982478060979170,\t0.992988389898106010,\t0.992994299252761730,\t\n0.993000206124931780,\t0.993006110514601190,\t0.993012012421755410,\t0.993017911846379660,\t0.993023808788459080,\t0.993029703247979010,\t0.993035595224924680,\t0.993041484719281330,\t\n0.993047371731034300,\t0.993053256260168830,\t0.993059138306670140,\t0.993065017870523700,\t0.993070894951714630,\t0.993076769550228500,\t0.993082641666050310,\t0.993088511299165530,\t\n0.993094378449559500,\t0.993100243117217450,\t0.993106105302124840,\t0.993111965004266910,\t0.993117822223629210,\t0.993123676960196880,\t0.993129529213955360,\t0.993135378984890020,\t\n0.993141226272986180,\t0.993147071078229300,\t0.993152913400604740,\t0.993158753240097950,\t0.993164590596694370,\t0.993170425470379150,\t0.993176257861137830,\t0.993182087768956000,\t\n0.993187915193818880,\t0.993193740135711930,\t0.993199562594620720,\t0.993205382570530590,\t0.993211200063427000,\t0.993217015073295410,\t0.993222827600121260,\t0.993228637643890020,\t\n0.993234445204587260,\t0.993240250282198310,\t0.993246052876708750,\t0.993251852988104140,\t0.993257650616369840,\t0.993263445761491390,\t0.993269238423454380,\t0.993275028602244150,\t\n0.993280816297846480,\t0.993286601510246720,\t0.993292384239430450,\t0.993298164485383330,\t0.993303942248090710,\t0.993309717527538160,\t0.993315490323711360,\t0.993321260636595870,\t\n0.993327028466177260,\t0.993332793812441000,\t0.993338556675372850,\t0.993344317054958290,\t0.993350074951182880,\t0.993355830364032300,\t0.993361583293492110,\t0.993367333739548000,\t\n0.993373081702185520,\t0.993378827181390370,\t0.993384570177148210,\t0.993390310689444610,\t0.993396048718265150,\t0.993401784263595600,\t0.993407517325421650,\t0.993413247903728760,\t\n0.993418975998502930,\t0.993424701609729510,\t0.993430424737394510,\t0.993436145381483390,\t0.993441863541981830,\t0.993447579218875610,\t0.993453292412150410,\t0.993459003121792140,\t\n0.993464711347786240,\t0.993470417090118630,\t0.993476120348774970,\t0.993481821123740950,\t0.993487519415002350,\t0.993493215222545080,\t0.993498908546354700,\t0.993504599386417000,\t\n0.993510287742717880,\t0.993515973615243020,\t0.993521657003978210,\t0.993527337908909350,\t0.993533016330022000,\t0.993538692267302180,\t0.993544365720735570,\t0.993550036690308170,\t\n0.993555705176005550,\t0.993561371177813850,\t0.993567034695718500,\t0.993572695729705750,\t0.993578354279761160,\t0.993584010345870630,\t0.993589663928020170,\t0.993595315026195470,\t\n0.993600963640382640,\t0.993606609770567250,\t0.993612253416735420,\t0.993617894578872950,\t0.993623533256965620,\t0.993629169450999550,\t0.993634803160960530,\t0.993640434386834580,\t\n0.993646063128607590,\t0.993651689386265360,\t0.993657313159793890,\t0.993662934449179080,\t0.993668553254406950,\t0.993674169575463510,\t0.993679783412334650,\t0.993685394765006390,\t\n0.993691003633464520,\t0.993696610017695160,\t0.993702213917684320,\t0.993707815333417900,\t0.993713414264881910,\t0.993719010712062480,\t0.993724604674945500,\t0.993730196153516990,\t\n0.993735785147763060,\t0.993741371657669510,\t0.993746955683222690,\t0.993752537224408370,\t0.993758116281212690,\t0.993763692853621760,\t0.993769266941621600,\t0.993774838545198440,\t\n0.993780407664338060,\t0.993785974299026600,\t0.993791538449250170,\t0.993797100114995000,\t0.993802659296247000,\t0.993808215992992410,\t0.993813770205217330,\t0.993819321932907780,\t\n0.993824871176049900,\t0.993830417934629780,\t0.993835962208633680,\t0.993841503998047720,\t0.993847043302858000,\t0.993852580123050560,\t0.993858114458611830,\t0.993863646309527730,\t\n0.993869175675784480,\t0.993874702557368320,\t0.993880226954265370,\t0.993885748866461970,\t0.993891268293944030,\t0.993896785236698110,\t0.993902299694710110,\t0.993907811667966380,\t\n0.993913321156453140,\t0.993918828160156530,\t0.993924332679062880,\t0.993929834713158430,\t0.993935334262429420,\t0.993940831326862060,\t0.993946325906442610,\t0.993951818001157280,\t\n0.993957307610992550,\t0.993962794735934410,\t0.993968279375969320,\t0.993973761531083520,\t0.993979241201263350,\t0.993984718386495160,\t0.993990193086765060,\t0.993995665302059520,\t\n0.994001135032364760,\t0.994006602277667240,\t0.994012067037953080,\t0.994017529313208860,\t0.994022989103420910,\t0.994028446408575350,\t0.994033901228658760,\t0.994039353563657360,\t\n0.994044803413557500,\t0.994050250778345750,\t0.994055695658008330,\t0.994061138052531710,\t0.994066577961902230,\t0.994072015386106340,\t0.994077450325130290,\t0.994082882778960730,\t\n0.994088312747583910,\t0.994093740230986290,\t0.994099165229154310,\t0.994104587742074440,\t0.994110007769733240,\t0.994115425312116940,\t0.994120840369212000,\t0.994126252941004980,\t\n0.994131663027482350,\t0.994137070628630550,\t0.994142475744436040,\t0.994147878374885500,\t0.994153278519965160,\t0.994158676179661580,\t0.994164071353961340,\t0.994169464042850890,\t\n0.994174854246316800,\t0.994180241964345620,\t0.994185627196923720,\t0.994191009944037970,\t0.994196390205674520,\t0.994201767981820140,\t0.994207143272461290,\t0.994212516077584650,\t\n0.994217886397176680,\t0.994223254231224040,\t0.994228619579713310,\t0.994233982442630950,\t0.994239342819963620,\t0.994244700711698020,\t0.994250056117820580,\t0.994255409038317990,\t\n0.994260759473176940,\t0.994266107422383970,\t0.994271452885925780,\t0.994276795863788920,\t0.994282136355960080,\t0.994287474362425820,\t0.994292809883172920,\t0.994298142918188080,\t\n0.994303473467457730,\t0.994308801530968790,\t0.994314127108707920,\t0.994319450200661590,\t0.994324770806816690,\t0.994330088927159910,\t0.994335404561677900,\t0.994340717710357260,\t\n0.994346028373184980,\t0.994351336550147620,\t0.994356642241231770,\t0.994361945446424420,\t0.994367246165712260,\t0.994372544399081850,\t0.994377840146520200,\t0.994383133408013880,\t\n0.994388424183549670,\t0.994393712473114590,\t0.994398998276695090,\t0.994404281594278070,\t0.994409562425850440,\t0.994414840771398860,\t0.994420116630910120,\t0.994425390004371130,\t\n0.994430660891768680,\t0.994435929293089660,\t0.994441195208320750,\t0.994446458637448850,\t0.994451719580460750,\t0.994456978037343450,\t0.994462234008083650,\t0.994467487492668220,\t\n0.994472738491084200,\t0.994477987003318240,\t0.994483233029357370,\t0.994488476569188260,\t0.994493717622798150,\t0.994498956190173590,\t0.994504192271301710,\t0.994509425866169420,\t\n0.994514656974763600,\t0.994519885597070940,\t0.994525111733078670,\t0.994530335382773690,\t0.994535556546142780,\t0.994540775223172970,\t0.994545991413851250,\t0.994551205118164640,\t\n0.994556416336099920,\t0.994561625067644120,\t0.994566831312784340,\t0.994572035071507490,\t0.994577236343800460,\t0.994582435129650390,\t0.994587631429044270,\t0.994592825241969130,\t\n0.994598016568411850,\t0.994603205408359450,\t0.994608391761799050,\t0.994613575628717770,\t0.994618757009102520,\t0.994623935902940290,\t0.994629112310218330,\t0.994634286230923650,\t\n0.994639457665043140,\t0.994644626612564030,\t0.994649793073473230,\t0.994654957047758080,\t0.994660118535405480,\t0.994665277536402660,\t0.994670434050736630,\t0.994675588078394510,\t\n0.994680739619363320,\t0.994685888673630390,\t0.994691035241182740,\t0.994696179322007380,\t0.994701320916091650,\t0.994706460023422670,\t0.994711596643987560,\t0.994716730777773340,\t\n0.994721862424767340,\t0.994726991584956700,\t0.994732118258328630,\t0.994737242444870160,\t0.994742364144568620,\t0.994747483357411140,\t0.994752600083385170,\t0.994757714322477500,\t\n0.994762826074675590,\t0.994767935339966550,\t0.994773042118337720,\t0.994778146409776240,\t0.994783248214269440,\t0.994788347531804560,\t0.994793444362368830,\t0.994798538705949360,\t\n0.994803630562533630,\t0.994808719932108840,\t0.994813806814662250,\t0.994818891210181080,\t0.994823973118652670,\t0.994829052540064480,\t0.994834129474403530,\t0.994839203921657260,\t\n0.994844275881813010,\t0.994849345354858030,\t0.994854412340779760,\t0.994859476839565330,\t0.994864538851202410,\t0.994869598375678010,\t0.994874655412979590,\t0.994879709963094610,\t\n0.994884762026010280,\t0.994889811601714080,\t0.994894858690193340,\t0.994899903291435520,\t0.994904945405427950,\t0.994909985032158000,\t0.994915022171612980,\t0.994920056823780490,\t\n0.994925088988647840,\t0.994930118666202400,\t0.994935145856431720,\t0.994940170559323270,\t0.994945192774864370,\t0.994950212503042390,\t0.994955229743844980,\t0.994960244497259390,\t\n0.994965256763273190,\t0.994970266541873930,\t0.994975273833048960,\t0.994980278636785840,\t0.994985280953072040,\t0.994990280781895000,\t0.994995278123242290,\t0.995000272977101250,\t\n0.995005265343459680,\t0.995010255222304910,\t0.995015242613624510,\t0.995020227517406040,\t0.995025209933636860,\t0.995030189862304740,\t0.995035167303397140,\t0.995040142256901630,\t\n0.995045114722805770,\t0.995050084701097130,\t0.995055052191763270,\t0.995060017194791870,\t0.995064979710170270,\t0.995069939737886270,\t0.995074897277927420,\t0.995079852330281400,\t\n0.995084804894935670,\t0.995089754971877900,\t0.995094702561095890,\t0.995099647662577080,\t0.995104590276309040,\t0.995109530402279560,\t0.995114468040476320,\t0.995119403190886880,\t\n0.995124335853498910,\t0.995129266028300100,\t0.995134193715278230,\t0.995139118914420750,\t0.995144041625715460,\t0.995148961849150140,\t0.995153879584712350,\t0.995158794832389890,\t\n0.995163707592170430,\t0.995168617864041870,\t0.995173525647991550,\t0.995178430944007490,\t0.995183333752077350,\t0.995188234072188930,\t0.995193131904329900,\t0.995198027248487940,\t\n0.995202920104650950,\t0.995207810472806820,\t0.995212698352943010,\t0.995217583745047540,\t0.995222466649107960,\t0.995227347065112400,\t0.995232224993048310,\t0.995237100432903700,\t\n0.995241973384666360,\t0.995246843848324180,\t0.995251711823864850,\t0.995256577311276150,\t0.995261440310546090,\t0.995266300821662340,\t0.995271158844612920,\t0.995276014379385620,\t\n0.995280867425968330,\t0.995285717984348730,\t0.995290566054514940,\t0.995295411636454630,\t0.995300254730155820,\t0.995305095335606400,\t0.995309933452794280,\t0.995314769081707240,\t\n0.995319602222333400,\t0.995324432874660550,\t0.995329261038676470,\t0.995334086714369290,\t0.995338909901727020,\t0.995343730600737330,\t0.995348548811388350,\t0.995353364533668070,\t\n0.995358177767564300,\t0.995362988513065150,\t0.995367796770158410,\t0.995372602538832310,\t0.995377405819074630,\t0.995382206610873400,\t0.995387004914216720,\t0.995391800729092610,\t\n0.995396594055488970,\t0.995401384893393690,\t0.995406173242795010,\t0.995410959103680940,\t0.995415742476039480,\t0.995420523359858640,\t0.995425301755126450,\t0.995430077661831230,\t\n0.995434851079960550,\t0.995439622009502870,\t0.995444390450446080,\t0.995449156402778310,\t0.995453919866487680,\t0.995458680841562190,\t0.995463439327990200,\t0.995468195325759360,\t\n0.995472948834858150,\t0.995477699855274570,\t0.995482448386996730,\t0.995487194430012770,\t0.995491937984310790,\t0.995496679049879040,\t0.995501417626705520,\t0.995506153714778570,\t\n0.995510887314086100,\t0.995515618424616440,\t0.995520347046357720,\t0.995525073179298170,\t0.995529796823426020,\t0.995534517978729270,\t0.995539236645196280,\t0.995543952822815160,\t\n0.995548666511574140,\t0.995553377711461460,\t0.995558086422465350,\t0.995562792644574030,\t0.995567496377775750,\t0.995572197622058840,\t0.995576896377411310,\t0.995581592643821510,\t\n0.995586286421277780,\t0.995590977709768230,\t0.995595666509281330,\t0.995600352819805190,\t0.995605036641328270,\t0.995609717973838790,\t0.995614396817325000,\t0.995619073171775120,\t\n0.995623747037177600,\t0.995628418413520680,\t0.995633087300792700,\t0.995637753698982110,\t0.995642417608077150,\t0.995647079028066040,\t0.995651737958937240,\t0.995656394400679100,\t\n0.995661048353280060,\t0.995665699816728260,\t0.995670348791012350,\t0.995674995276120470,\t0.995679639272041170,\t0.995684280778762810,\t0.995688919796273610,\t0.995693556324562130,\t\n0.995698190363616840,\t0.995702821913426070,\t0.995707450973978170,\t0.995712077545261700,\t0.995716701627265110,\t0.995721323219976640,\t0.995725942323384960,\t0.995730558937478310,\t\n0.995735173062245350,\t0.995739784697674430,\t0.995744393843754020,\t0.995749000500472770,\t0.995753604667818930,\t0.995758206345781050,\t0.995762805534347590,\t0.995767402233507240,\t\n0.995771996443248320,\t0.995776588163559410,\t0.995781177394429060,\t0.995785764135845740,\t0.995790348387798010,\t0.995794930150274430,\t0.995799509423263560,\t0.995804086206753870,\t\n0.995808660500733910,\t0.995813232305192360,\t0.995817801620117680,\t0.995822368445498650,\t0.995826932781323610,\t0.995831494627581250,\t0.995836053984260120,\t0.995840610851348780,\t\n0.995845165228836040,\t0.995849717116710330,\t0.995854266514960340,\t0.995858813423574740,\t0.995863357842541990,\t0.995867899771850970,\t0.995872439211490050,\t0.995876976161448100,\t\n0.995881510621713820,\t0.995886042592275640,\t0.995890572073122480,\t0.995895099064242780,\t0.995899623565625340,\t0.995904145577258810,\t0.995908665099132010,\t0.995913182131233480,\t\n0.995917696673551900,\t0.995922208726076290,\t0.995926718288795090,\t0.995931225361697090,\t0.995935729944770980,\t0.995940232038005520,\t0.995944731641389520,\t0.995949228754911650,\t\n0.995953723378560810,\t0.995958215512325660,\t0.995962705156194890,\t0.995967192310157400,\t0.995971676974201970,\t0.995976159148317270,\t0.995980638832492220,\t0.995985116026715470,\t\n0.995989590730976040,\t0.995994062945262710,\t0.995998532669564060,\t0.996002999903869090,\t0.996007464648166700,\t0.996011926902445670,\t0.996016386666694680,\t0.996020843940902840,\t\n0.996025298725058960,\t0.996029751019151700,\t0.996034200823170070,\t0.996038648137102970,\t0.996043092960939290,\t0.996047535294667830,\t0.996051975138277480,\t0.996056412491757250,\t\n0.996060847355096150,\t0.996065279728282740,\t0.996069709611306140,\t0.996074137004155260,\t0.996078561906819090,\t0.996082984319286550,\t0.996087404241546400,\t0.996091821673587900,\t\n0.996096236615399810,\t0.996100649066971160,\t0.996105059028290720,\t0.996109466499347730,\t0.996113871480131090,\t0.996118273970629800,\t0.996122673970832760,\t0.996127071480729210,\t\n0.996131466500307820,\t0.996135859029557810,\t0.996140249068468100,\t0.996144636617027790,\t0.996149021675225900,\t0.996153404243051430,\t0.996157784320493400,\t0.996162161907541140,\t\n0.996166537004183230,\t0.996170909610409110,\t0.996175279726207670,\t0.996179647351568050,\t0.996184012486479250,\t0.996188375130930500,\t0.996192735284910810,\t0.996197092948409190,\t\n0.996201448121414980,\t0.996205800803916960,\t0.996210150995904600,\t0.996214498697366780,\t0.996218843908292740,\t0.996223186628671600,\t0.996227526858492580,\t0.996231864597744600,\t\n0.996236199846416980,\t0.996240532604498960,\t0.996244862871979550,\t0.996249190648847870,\t0.996253515935093370,\t0.996257838730705060,\t0.996262159035672170,\t0.996266476849983820,\t\n0.996270792173629240,\t0.996275105006597770,\t0.996279415348878540,\t0.996283723200460660,\t0.996288028561333580,\t0.996292331431486430,\t0.996296631810908440,\t0.996300929699588830,\t\n0.996305225097516840,\t0.996309518004681930,\t0.996313808421073090,\t0.996318096346679780,\t0.996322381781491240,\t0.996326664725496910,\t0.996330945178685700,\t0.996335223141047170,\t\n0.996339498612570650,\t0.996343771593245280,\t0.996348042083060600,\t0.996352310082005750,\t0.996356575590070070,\t0.996360838607243120,\t0.996365099133513900,\t0.996369357168871980,\t\n0.996373612713306710,\t0.996377865766807420,\t0.996382116329363350,\t0.996386364400964060,\t0.996390609981599010,\t0.996394853071257190,\t0.996399093669928400,\t0.996403331777601760,\t\n0.996407567394266840,\t0.996411800519913070,\t0.996416031154529700,\t0.996420259298106290,\t0.996424484950632290,\t0.996428708112097050,\t0.996432928782490010,\t0.996437146961800630,\t\n0.996441362650018370,\t0.996445575847132780,\t0.996449786553133210,\t0.996453994768009220,\t0.996458200491750160,\t0.996462403724345690,\t0.996466604465785170,\t0.996470802716058040,\t\n0.996474998475153970,\t0.996479191743062430,\t0.996483382519772980,\t0.996487570805275060,\t0.996491756599558130,\t0.996495939902611760,\t0.996500120714425620,\t0.996504299034989160,\t\n0.996508474864291950,\t0.996512648202323660,\t0.996516819049073630,\t0.996520987404531660,\t0.996525153268687070,\t0.996529316641529660,\t0.996533477523048990,\t0.996537635913234630,\t\n0.996541791812076140,\t0.996545945219563190,\t0.996550096135685460,\t0.996554244560432400,\t0.996558390493793690,\t0.996562533935759000,\t0.996566674886318120,\t0.996570813345460380,\t\n0.996574949313175700,\t0.996579082789453620,\t0.996583213774283940,\t0.996587342267656110,\t0.996591468269559910,\t0.996595591779985130,\t0.996599712798921230,\t0.996603831326358210,\t\n0.996607947362285530,\t0.996612060906693080,\t0.996616171959570310,\t0.996620280520907230,\t0.996624386590693410,\t0.996628490168918630,\t0.996632591255572580,\t0.996636689850645130,\t\n0.996640785954125860,\t0.996644879566004780,\t0.996648970686271340,\t0.996653059314915550,\t0.996657145451927070,\t0.996661229097295820,\t0.996665310251011350,\t0.996669388913063670,\t\n0.996673465083442570,\t0.996677538762137830,\t0.996681609949139240,\t0.996685678644436580,\t0.996689744848019640,\t0.996693808559878440,\t0.996697869780002740,\t0.996701928508382240,\t\n0.996705984745007050,\t0.996710038489866830,\t0.996714089742951610,\t0.996718138504251060,\t0.996722184773755180,\t0.996726228551453870,\t0.996730269837336920,\t0.996734308631394340,\t\n0.996738344933616130,\t0.996742378743991850,\t0.996746410062511750,\t0.996750438889165590,\t0.996754465223943290,\t0.996758489066834840,\t0.996762510417830150,\t0.996766529276919220,\t\n0.996770545644092070,\t0.996774559519338470,\t0.996778570902648430,\t0.996782579794011970,\t0.996786586193419090,\t0.996790590100859690,\t0.996794591516323880,\t0.996798590439801570,\t\n0.996802586871282760,\t0.996806580810757570,\t0.996810572258215900,\t0.996814561213647750,\t0.996818547677043140,\t0.996822531648392300,\t0.996826513127685000,\t0.996830492114911590,\t\n0.996834468610061750,\t0.996838442613125930,\t0.996842414124093800,\t0.996846383142955820,\t0.996850349669701760,\t0.996854313704321870,\t0.996858275246806260,\t0.996862234297144930,\t\n0.996866190855327900,\t0.996870144921345510,\t0.996874096495187770,\t0.996878045576844670,\t0.996881992166306570,\t0.996885936263563480,\t0.996889877868605500,\t0.996893816981422880,\t\n0.996897753602005720,\t0.996901687730344150,\t0.996905619366428300,\t0.996909548510248490,\t0.996913475161794740,\t0.996917399321057270,\t0.996921320988026440,\t0.996925240162692240,\t\n0.996929156845045020,\t0.996933071035074780,\t0.996936982732771870,\t0.996940891938126520,\t0.996944798651128950,\t0.996948702871769510,\t0.996952604600038210,\t0.996956503835925380,\t\n0.996960400579421260,\t0.996964294830516180,\t0.996968186589200390,\t0.996972075855464100,\t0.996975962629297660,\t0.996979846910691300,\t0.996983728699635250,\t0.996987607996119960,\t\n0.996991484800135660,\t0.996995359111672590,\t0.996999230930721180,\t0.997003100257271570,\t0.997006967091314310,\t0.997010831432839750,\t0.997014693281837890,\t0.997018552638299420,\t\n0.997022409502214550,\t0.997026263873573630,\t0.997030115752367110,\t0.997033965138585220,\t0.997037812032218530,\t0.997041656433257260,\t0.997045498341691760,\t0.997049337757512590,\t\n0.997053174680710090,\t0.997057009111274590,\t0.997060841049196570,\t0.997064670494466570,\t0.997068497447074820,\t0.997072321907011780,\t0.997076143874268020,\t0.997079963348833860,\t\n0.997083780330699780,\t0.997087594819856200,\t0.997091406816293710,\t0.997095216320002750,\t0.997099023330973670,\t0.997102827849197020,\t0.997106629874663360,\t0.997110429407363050,\t\n0.997114226447286760,\t0.997118020994424810,\t0.997121813048767790,\t0.997125602610306360,\t0.997129389679030860,\t0.997133174254931980,\t0.997136956338000040,\t0.997140735928225720,\t\n0.997144513025599590,\t0.997148287630112210,\t0.997152059741754030,\t0.997155829360515830,\t0.997159596486387970,\t0.997163361119361100,\t0.997167123259425800,\t0.997170882906572740,\t\n0.997174640060792480,\t0.997178394722075590,\t0.997182146890412850,\t0.997185896565794590,\t0.997189643748211620,\t0.997193388437654590,\t0.997197130634113970,\t0.997200870337580650,\t\n0.997204607548045070,\t0.997208342265498040,\t0.997212074489930210,\t0.997215804221332050,\t0.997219531459694440,\t0.997223256205008070,\t0.997226978457263490,\t0.997230698216451380,\t\n0.997234415482562640,\t0.997238130255587830,\t0.997241842535517730,\t0.997245552322343020,\t0.997249259616054370,\t0.997252964416642680,\t0.997256666724098410,\t0.997260366538412660,\t\n0.997264063859575890,\t0.997267758687579000,\t0.997271451022412660,\t0.997275140864067770,\t0.997278828212534880,\t0.997282513067805020,\t0.997286195429868960,\t0.997289875298717270,\t\n0.997293552674340940,\t0.997297227556730780,\t0.997300899945877560,\t0.997304569841771960,\t0.997308237244405090,\t0.997311902153767530,\t0.997315564569850270,\t0.997319224492643990,\t\n0.997322881922139800,\t0.997326536858328390,\t0.997330189301200540,\t0.997333839250747260,\t0.997337486706959320,\t0.997341131669827740,\t0.997344774139343300,\t0.997348414115497020,\t\n0.997352051598279670,\t0.997355686587682140,\t0.997359319083695350,\t0.997362949086310290,\t0.997366576595517970,\t0.997370201611309070,\t0.997373824133674700,\t0.997377444162605760,\t\n0.997381061698093370,\t0.997384676740128210,\t0.997388289288701270,\t0.997391899343803680,\t0.997395506905426330,\t0.997399111973560240,\t0.997402714548196400,\t0.997406314629325720,\t\n0.997409912216939310,\t0.997413507311028070,\t0.997417099911583000,\t0.997420690018595240,\t0.997424277632055770,\t0.997427862751955610,\t0.997431445378285760,\t0.997435025511037470,\t\n0.997438603150201390,\t0.997442178295768870,\t0.997445750947730910,\t0.997449321106078650,\t0.997452888770802960,\t0.997456453941895080,\t0.997460016619346130,\t0.997463576803147120,\t\n0.997467134493289160,\t0.997470689689763380,\t0.997474242392560770,\t0.997477792601672690,\t0.997481340317090020,\t0.997484885538804100,\t0.997488428266805950,\t0.997491968501086680,\t\n0.997495506241637520,\t0.997499041488449590,\t0.997502574241514010,\t0.997506104500822000,\t0.997509632266364800,\t0.997513157538133520,\t0.997516680316119290,\t0.997520200600313430,\t\n0.997523718390706970,\t0.997527233687291350,\t0.997530746490057460,\t0.997534256798996880,\t0.997537764614100490,\t0.997541269935359850,\t0.997544772762765990,\t0.997548273096310220,\t\n0.997551770935983680,\t0.997555266281777710,\t0.997558759133683640,\t0.997562249491692700,\t0.997565737355796010,\t0.997569222725985140,\t0.997572705602251200,\t0.997576185984585420,\t\n0.997579663872979140,\t0.997583139267423700,\t0.997586612167910450,\t0.997590082574430710,\t0.997593550486975730,\t0.997597015905536950,\t0.997600478830105500,\t0.997603939260672920,\t\n0.997607397197230460,\t0.997610852639769560,\t0.997614305588281460,\t0.997617756042757710,\t0.997621204003189540,\t0.997624649469568300,\t0.997628092441885440,\t0.997631532920132290,\t\n0.997634970904300420,\t0.997638406394381060,\t0.997641839390365770,\t0.997645269892245780,\t0.997648697900012760,\t0.997652123413657830,\t0.997655546433172670,\t0.997658966958548610,\t\n0.997662384989777110,\t0.997665800526849720,\t0.997669213569757800,\t0.997672624118492890,\t0.997676032173046350,\t0.997679437733409720,\t0.997682840799574590,\t0.997686241371532280,\t\n0.997689639449274360,\t0.997693035032792390,\t0.997696428122077820,\t0.997699818717122210,\t0.997703206817917020,\t0.997706592424453810,\t0.997709975536724140,\t0.997713356154719460,\t\n0.997716734278431440,\t0.997720109907851650,\t0.997723483042971430,\t0.997726853683782670,\t0.997730221830276710,\t0.997733587482445230,\t0.997736950640279670,\t0.997740311303771830,\t\n0.997743669472913150,\t0.997747025147695310,\t0.997750378328109980,\t0.997753729014148720,\t0.997757077205803090,\t0.997760422903064660,\t0.997763766105925320,\t0.997767106814376530,\t\n0.997770445028409950,\t0.997773780748017150,\t0.997777113973190130,\t0.997780444703920130,\t0.997783772940199150,\t0.997787098682018650,\t0.997790421929370400,\t0.997793742682246190,\t\n0.997797060940637580,\t0.997800376704536250,\t0.997803689973934090,\t0.997807000748822670,\t0.997810309029193650,\t0.997813614815038940,\t0.997816918106350200,\t0.997820218903119120,\t\n0.997823517205337570,\t0.997826813012997250,\t0.997830106326089820,\t0.997833397144607170,\t0.997836685468540980,\t0.997839971297883040,\t0.997843254632625240,\t0.997846535472759260,\t\n0.997849813818276980,\t0.997853089669170190,\t0.997856363025430680,\t0.997859633887050120,\t0.997862902254020630,\t0.997866168126333890,\t0.997869431503981660,\t0.997872692386955860,\t\n0.997875950775248380,\t0.997879206668850880,\t0.997882460067755490,\t0.997885710971953890,\t0.997888959381438070,\t0.997892205296199820,\t0.997895448716231040,\t0.997898689641523730,\t\n0.997901928072069680,\t0.997905164007860780,\t0.997908397448888930,\t0.997911628395146130,\t0.997914856846624180,\t0.997918082803315180,\t0.997921306265210920,\t0.997924527232303400,\t\n0.997927745704584650,\t0.997930961682046420,\t0.997934175164680860,\t0.997937386152479840,\t0.997940594645435270,\t0.997943800643539380,\t0.997947004146783830,\t0.997950205155160860,\t\n0.997953403668662360,\t0.997956599687280340,\t0.997959793211006920,\t0.997962984239833870,\t0.997966172773753430,\t0.997969358812757500,\t0.997972542356838300,\t0.997975723405987610,\t\n0.997978901960197670,\t0.997982078019460480,\t0.997985251583768160,\t0.997988422653112610,\t0.997991591227486040,\t0.997994757306880480,\t0.997997920891288030,\t0.998001081980700810,\t\n0.998004240575110830,\t0.998007396674510330,\t0.998010550278891300,\t0.998013701388245860,\t0.998016850002566120,\t0.998019996121844330,\t0.998023139746072600,\t0.998026280875242920,\t\n0.998029419509347650,\t0.998032555648378780,\t0.998035689292328440,\t0.998038820441188970,\t0.998041949094952360,\t0.998045075253610970,\t0.998048198917156900,\t0.998051320085582280,\t\n0.998054438758879450,\t0.998057554937040400,\t0.998060668620057490,\t0.998063779807922940,\t0.998066888500628970,\t0.998069994698167710,\t0.998073098400531490,\t0.998076199607712540,\t\n0.998079298319703100,\t0.998082394536495390,\t0.998085488258081740,\t0.998088579484454290,\t0.998091668215605470,\t0.998094754451527510,\t0.998097838192212540,\t0.998100919437653000,\t\n0.998103998187841230,\t0.998107074442769360,\t0.998110148202429940,\t0.998113219466815080,\t0.998116288235917140,\t0.998119354509728550,\t0.998122418288241550,\t0.998125479571448480,\t\n0.998128538359341790,\t0.998131594651913590,\t0.998134648449156560,\t0.998137699751062810,\t0.998140748557624910,\t0.998143794868835090,\t0.998146838684685790,\t0.998149880005169350,\t\n0.998152918830278240,\t0.998155955160004880,\t0.998158988994341520,\t0.998162020333280830,\t0.998165049176815030,\t0.998168075524936580,\t0.998171099377637930,\t0.998174120734911520,\t\n0.998177139596749920,\t0.998180155963145350,\t0.998183169834090500,\t0.998186181209577580,\t0.998189190089599390,\t0.998192196474148140,\t0.998195200363216300,\t0.998198201756796630,\t\n0.998201200654881270,\t0.998204197057463110,\t0.998207190964534250,\t0.998210182376087610,\t0.998213171292115400,\t0.998216157712610300,\t0.998219141637564760,\t0.998222123066971450,\t\n0.998225102000822820,\t0.998228078439111320,\t0.998231052381829740,\t0.998234023828970530,\t0.998236992780526240,\t0.998239959236489450,\t0.998242923196852710,\t0.998245884661608680,\t\n0.998248843630750060,\t0.998251800104269170,\t0.998254754082158910,\t0.998257705564411730,\t0.998260654551020310,\t0.998263601041977200,\t0.998266545037275080,\t0.998269486536906610,\t\n0.998272425540864480,\t0.998275362049141250,\t0.998278296061729580,\t0.998281227578622250,\t0.998284156599811730,\t0.998287083125290910,\t0.998290007155052340,\t0.998292928689088810,\t\n0.998295847727392880,\t0.998298764269957340,\t0.998301678316774970,\t0.998304589867838430,\t0.998307498923140300,\t0.998310405482673470,\t0.998313309546430610,\t0.998316211114404490,\t\n0.998319110186587810,\t0.998322006762973450,\t0.998324900843554080,\t0.998327792428322370,\t0.998330681517271110,\t0.998333568110393310,\t0.998336452207681520,\t0.998339333809128540,\t\n0.998342212914727250,\t0.998345089524470540,\t0.998347963638350990,\t0.998350835256361590,\t0.998353704378495130,\t0.998356571004744290,\t0.998359435135102060,\t0.998362296769561340,\t\n0.998365155908114810,\t0.998368012550755470,\t0.998370866697475990,\t0.998373718348269380,\t0.998376567503128420,\t0.998379414162046120,\t0.998382258325015260,\t0.998385099992028740,\t\n0.998387939163079550,\t0.998390775838160380,\t0.998393610017264340,\t0.998396441700384330,\t0.998399270887513120,\t0.998402097578643840,\t0.998404921773769160,\t0.998407743472882300,\t\n0.998410562675976050,\t0.998413379383043420,\t0.998416193594077290,\t0.998419005309070680,\t0.998421814528016590,\t0.998424621250908030,\t0.998427425477737770,\t0.998430227208499050,\t\n0.998433026443184770,\t0.998435823181787920,\t0.998438617424301400,\t0.998441409170718440,\t0.998444198421031940,\t0.998446985175234890,\t0.998449769433320420,\t0.998452551195281530,\t\n0.998455330461111350,\t0.998458107230802750,\t0.998460881504348860,\t0.998463653281742800,\t0.998466422562977570,\t0.998469189348046290,\t0.998471953636942080,\t0.998474715429658040,\t\n0.998477474726187090,\t0.998480231526522540,\t0.998482985830657420,\t0.998485737638584720,\t0.998488486950297790,\t0.998491233765789630,\t0.998493978085053360,\t0.998496719908082090,\t\n0.998499459234869160,\t0.998502196065407470,\t0.998504930399690350,\t0.998507662237710810,\t0.998510391579462200,\t0.998513118424937620,\t0.998515842774130190,\t0.998518564627033140,\t\n0.998521283983639710,\t0.998524000843943100,\t0.998526715207936450,\t0.998529427075613100,\t0.998532136446966030,\t0.998534843321988720,\t0.998537547700674380,\t0.998540249583016020,\t\n0.998542948969007080,\t0.998545645858640810,\t0.998548340251910420,\t0.998551032148809140,\t0.998553721549330200,\t0.998556408453467160,\t0.998559092861213030,\t0.998561774772561030,\t\n0.998564454187504720,\t0.998567131106037230,\t0.998569805528152000,\t0.998572477453842140,\t0.998575146883101120,\t0.998577813815922260,\t0.998580478252298900,\t0.998583140192224270,\t\n0.998585799635691830,\t0.998588456582694910,\t0.998591111033226730,\t0.998593762987280860,\t0.998596412444850650,\t0.998599059405929300,\t0.998601703870510390,\t0.998604345838587150,\t\n0.998606985310153130,\t0.998609622285201560,\t0.998612256763726000,\t0.998614888745719690,\t0.998617518231176280,\t0.998620145220089020,\t0.998622769712451450,\t0.998625391708256930,\t\n0.998628011207498890,\t0.998630628210170790,\t0.998633242716266190,\t0.998635854725778430,\t0.998638464238701170,\t0.998641071255027660,\t0.998643675774751440,\t0.998646277797866080,\t\n0.998648877324364910,\t0.998651474354241620,\t0.998654068887489750,\t0.998656660924102660,\t0.998659250464073890,\t0.998661837507396900,\t0.998664422054065470,\t0.998667004104072830,\t\n0.998669583657412760,\t0.998672160714078830,\t0.998674735274064360,\t0.998677307337363150,\t0.998679876903968640,\t0.998682443973874400,\t0.998685008547074090,\t0.998687570623561170,\t\n0.998690130203329420,\t0.998692687286372280,\t0.998695241872683550,\t0.998697793962256550,\t0.998700343555085190,\t0.998702890651162910,\t0.998705435250483390,\t0.998707977353040290,\t\n0.998710516958827290,\t0.998713054067837950,\t0.998715588680066050,\t0.998718120795505150,\t0.998720650414148920,\t0.998723177535991050,\t0.998725702161025300,\t0.998728224289245240,\t\n0.998730743920644650,\t0.998733261055217200,\t0.998735775692956570,\t0.998738287833856540,\t0.998740797477910780,\t0.998743304625112960,\t0.998745809275456970,\t0.998748311428936390,\t\n0.998750811085545090,\t0.998753308245276750,\t0.998755802908125050,\t0.998758295074083980,\t0.998760784743147110,\t0.998763271915308230,\t0.998765756590561220,\t0.998768238768899860,\t\n0.998770718450317840,\t0.998773195634809040,\t0.998775670322367250,\t0.998778142512986360,\t0.998780612206660030,\t0.998783079403382180,\t0.998785544103146570,\t0.998788006305947220,\t\n0.998790466011777790,\t0.998792923220632180,\t0.998795377932504280,\t0.998797830147387990,\t0.998800279865277090,\t0.998802727086165460,\t0.998805171810047020,\t0.998807614036915650,\t\n0.998810053766765350,\t0.998812490999589800,\t0.998814925735383110,\t0.998817357974138950,\t0.998819787715851560,\t0.998822214960514600,\t0.998824639708122080,\t0.998827061958668110,\t\n0.998829481712146360,\t0.998831898968550960,\t0.998834313727875790,\t0.998836725990114860,\t0.998839135755262060,\t0.998841543023311410,\t0.998843947794257000,\t0.998846350068092750,\t\n0.998848749844812530,\t0.998851147124410370,\t0.998853541906880470,\t0.998855934192216630,\t0.998858323980412970,\t0.998860711271463590,\t0.998863096065362390,\t0.998865478362103380,\t\n0.998867858161680780,\t0.998870235464088490,\t0.998872610269320500,\t0.998874982577371170,\t0.998877352388234270,\t0.998879719701904030,\t0.998882084518374460,\t0.998884446837639770,\t\n0.998886806659693870,\t0.998889163984530980,\t0.998891518812145110,\t0.998893871142530590,\t0.998896220975681200,\t0.998898568311591410,\t0.998900913150255200,\t0.998903255491666700,\t\n0.998905595335820020,\t0.998907932682709390,\t0.998910267532328810,\t0.998912599884672740,\t0.998914929739735060,\t0.998917257097510000,\t0.998919581957991910,\t0.998921904321174890,\t\n0.998924224187053070,\t0.998926541555620660,\t0.998928856426871900,\t0.998931168800801020,\t0.998933478677402120,\t0.998935786056669660,\t0.998938090938597760,\t0.998940393323180520,\t\n0.998942693210412290,\t0.998944990600287410,\t0.998947285492799990,\t0.998949577887944360,\t0.998951867785714880,\t0.998954155186105640,\t0.998956440089111110,\t0.998958722494725390,\t\n0.998961002402942830,\t0.998963279813757770,\t0.998965554727164640,\t0.998967827143157460,\t0.998970097061730790,\t0.998972364482878960,\t0.998974629406596090,\t0.998976891832876750,\t\n0.998979151761715150,\t0.998981409193105630,\t0.998983664127042540,\t0.998985916563520430,\t0.998988166502533410,\t0.998990413944076060,\t0.998992658888142590,\t0.998994901334727570,\t\n0.998997141283825220,\t0.998999378735429990,\t0.999001613689536440,\t0.999003846146138690,\t0.999006076105231510,\t0.999008303566809030,\t0.999010528530865800,\t0.999012750997396280,\t\n0.999014970966394800,\t0.999017188437856030,\t0.999019403411774200,\t0.999021615888143870,\t0.999023825866959480,\t0.999026033348215600,\t0.999028238331906570,\t0.999030440818026940,\t\n0.999032640806571280,\t0.999034838297533920,\t0.999037033290909540,\t0.999039225786692580,\t0.999041415784877480,\t0.999043603285458940,\t0.999045788288431270,\t0.999047970793789260,\t\n0.999050150801527260,\t0.999052328311639930,\t0.999054503324121710,\t0.999056675838967290,\t0.999058845856171110,\t0.999061013375727840,\t0.999063178397632030,\t0.999065340921878380,\t\n0.999067500948461310,\t0.999069658477375390,\t0.999071813508615400,\t0.999073966042176020,\t0.999076116078051580,\t0.999078263616236860,\t0.999080408656726430,\t0.999082551199515060,\t\n0.999084691244597310,\t0.999086828791967750,\t0.999088963841621270,\t0.999091096393552200,\t0.999093226447755560,\t0.999095354004225670,\t0.999097479062957540,\t0.999099601623945620,\t\n0.999101721687184810,\t0.999103839252669660,\t0.999105954320394840,\t0.999108066890355250,\t0.999110176962545340,\t0.999112284536960100,\t0.999114389613594110,\t0.999116492192442140,\t\n0.999118592273498970,\t0.999120689856759390,\t0.999122784942217960,\t0.999124877529869560,\t0.999126967619709090,\t0.999129055211731120,\t0.999131140305930530,\t0.999133222902302000,\t\n0.999135303000840520,\t0.999137380601540780,\t0.999139455704397550,\t0.999141528309405720,\t0.999143598416560090,\t0.999145666025855420,\t0.999147731137286500,\t0.999149793750848340,\t\n0.999151853866535710,\t0.999153911484343520,\t0.999155966604266420,\t0.999158019226299430,\t0.999160069350437440,\t0.999162116976675230,\t0.999164162105007800,\t0.999166204735429830,\t\n0.999168244867936540,\t0.999170282502522490,\t0.999172317639182790,\t0.999174350277912240,\t0.999176380418705820,\t0.999178408061558550,\t0.999180433206465100,\t0.999182455853420690,\t\n0.999184476002420220,\t0.999186493653458350,\t0.999188508806530430,\t0.999190521461631120,\t0.999192531618755540,\t0.999194539277898590,\t0.999196544439055370,\t0.999198547102220780,\t\n0.999200547267389830,\t0.999202544934557510,\t0.999204540103718730,\t0.999206532774868710,\t0.999208522948002330,\t0.999210510623114610,\t0.999212495800200660,\t0.999214478479255490,\t\n0.999216458660273980,\t0.999218436343251470,\t0.999220411528182860,\t0.999222384215063150,\t0.999224354403887460,\t0.999226322094651010,\t0.999228287287348690,\t0.999230249981975630,\t\n0.999232210178526930,\t0.999234167876997810,\t0.999236123077383190,\t0.999238075779678270,\t0.999240025983878180,\t0.999241973689978020,\t0.999243918897972930,\t0.999245861607858000,\t\n0.999247801819628470,\t0.999249739533279340,\t0.999251674748805940,\t0.999253607466203400,\t0.999255537685466710,\t0.999257465406591330,\t0.999259390629572250,\t0.999261313354404600,\t\n0.999263233581083710,\t0.999265151309604800,\t0.999267066539962890,\t0.999268979272153410,\t0.999270889506171490,\t0.999272797242012350,\t0.999274702479671210,\t0.999276605219143190,\t\n0.999278505460423850,\t0.999280403203508080,\t0.999282298448391450,\t0.999284191195068950,\t0.999286081443536030,\t0.999287969193787930,\t0.999289854445819860,\t0.999291737199627160,\t\n0.999293617455205170,\t0.999295495212549010,\t0.999297370471654230,\t0.999299243232515950,\t0.999301113495129620,\t0.999302981259490570,\t0.999304846525593930,\t0.999306709293435240,\t\n0.999308569563009730,\t0.999310427334312860,\t0.999312282607339950,\t0.999314135382086240,\t0.999315985658547290,\t0.999317833436718320,\t0.999319678716594770,\t0.999321521498171990,\t\n0.999323361781445430,\t0.999325199566410530,\t0.999327034853062510,\t0.999328867641396950,\t0.999330697931409270,\t0.999332525723094830,\t0.999334351016449070,\t0.999336173811467440,\t\n0.999337994108145390,\t0.999339811906478250,\t0.999341627206461690,\t0.999343440008091060,\t0.999345250311361790,\t0.999347058116269450,\t0.999348863422809370,\t0.999350666230977240,\t\n0.999352466540768370,\t0.999354264352178330,\t0.999356059665202580,\t0.999357852479836880,\t0.999359642796076360,\t0.999361430613916800,\t0.999363215933353640,\t0.999364998754382450,\t\n0.999366779076998780,\t0.999368556901198190,\t0.999370332226976130,\t0.999372105054328390,\t0.999373875383250180,\t0.999375643213737400,\t0.999377408545785490,\t0.999379171379390140,\t\n0.999380931714546780,\t0.999382689551251090,\t0.999384444889498620,\t0.999386197729285160,\t0.999387948070606160,\t0.999389695913457280,\t0.999391441257834190,\t0.999393184103732460,\t\n0.999394924451147750,\t0.999396662300075730,\t0.999398397650512080,\t0.999400130502452470,\t0.999401860855892550,\t0.999403588710827910,\t0.999405314067254300,\t0.999407036925167410,\t\n0.999408757284563020,\t0.999410475145436570,\t0.999412190507784070,\t0.999413903371601080,\t0.999415613736883260,\t0.999417321603626510,\t0.999419026971826390,\t0.999420729841478670,\t\n0.999422430212579150,\t0.999424128085123600,\t0.999425823459107690,\t0.999427516334527200,\t0.999429206711378030,\t0.999430894589655730,\t0.999432579969356190,\t0.999434262850475210,\t\n0.999435943233008660,\t0.999437621116952220,\t0.999439296502301680,\t0.999440969389052910,\t0.999442639777201710,\t0.999444307666743970,\t0.999445973057675460,\t0.999447635949991970,\t\n0.999449296343689400,\t0.999450954238763620,\t0.999452609635210320,\t0.999454262533025610,\t0.999455912932205260,\t0.999457560832745060,\t0.999459206234641020,\t0.999460849137889020,\t\n0.999462489542484840,\t0.999464127448424390,\t0.999465762855703650,\t0.999467395764318530,\t0.999469026174264810,\t0.999470654085538700,\t0.999472279498135770,\t0.999473902412052250,\t\n0.999475522827284020,\t0.999477140743826990,\t0.999478756161677030,\t0.999480369080830160,\t0.999481979501282370,\t0.999483587423029670,\t0.999485192846067960,\t0.999486795770393340,\t\n0.999488396196001720,\t0.999489994122889080,\t0.999491589551051440,\t0.999493182480484910,\t0.999494772911185380,\t0.999496360843148860,\t0.999497946276371450,\t0.999499529210849280,\t\n0.999501109646578230,\t0.999502687583554320,\t0.999504263021773750,\t0.999505835961232550,\t0.999507406401926700,\t0.999508974343852440,\t0.999510539787005660,\t0.999512102731382580,\t\n0.999513663176979210,\t0.999515221123791650,\t0.999516776571816150,\t0.999518329521048580,\t0.999519879971485280,\t0.999521427923122260,\t0.999522973375955640,\t0.999524516329981630,\t\n0.999526056785196240,\t0.999527594741595800,\t0.999529130199176330,\t0.999530663157934040,\t0.999532193617865160,\t0.999533721578965690,\t0.999535247041231980,\t0.999536770004660120,\t\n0.999538290469246360,\t0.999539808434986910,\t0.999541323901877890,\t0.999542836869915520,\t0.999544347339096140,\t0.999545855309415860,\t0.999547360780870920,\t0.999548863753457640,\t\n0.999550364227172140,\t0.999551862202010750,\t0.999553357677969710,\t0.999554850655045240,\t0.999556341133233660,\t0.999557829112531330,\t0.999559314592934340,\t0.999560797574439050,\t\n0.999562278057041790,\t0.999563756040738770,\t0.999565231525526450,\t0.999566704511401060,\t0.999568174998358820,\t0.999569642986396170,\t0.999571108475509450,\t0.999572571465695000,\t\n0.999574031956949050,\t0.999575489949268040,\t0.999576945442648300,\t0.999578398437086180,\t0.999579848932578120,\t0.999581296929120340,\t0.999582742426709410,\t0.999584185425341550,\t\n0.999585625925013320,\t0.999587063925720940,\t0.999588499427460970,\t0.999589932430229760,\t0.999591362934023620,\t0.999592790938839130,\t0.999594216444672720,\t0.999595639451520630,\t\n0.999597059959379530,\t0.999598477968245860,\t0.999599893478115840,\t0.999601306488986150,\t0.999602717000853240,\t0.999604125013713540,\t0.999605530527563510,\t0.999606933542399600,\t\n0.999608334058218360,\t0.999609732075016360,\t0.999611127592789920,\t0.999612520611535830,\t0.999613911131250310,\t0.999615299151930040,\t0.999616684673571450,\t0.999618067696171230,\t\n0.999619448219725930,\t0.999620826244231870,\t0.999622201769685750,\t0.999623574796084210,\t0.999624945323423720,\t0.999626313351700820,\t0.999627678880912090,\t0.999629041911054280,\t\n0.999630402442123760,\t0.999631760474117280,\t0.999633116007031420,\t0.999634469040862840,\t0.999635819575607990,\t0.999637167611263530,\t0.999638513147826260,\t0.999639856185292610,\t\n0.999641196723659480,\t0.999642534762923200,\t0.999643870303080660,\t0.999645203344128430,\t0.999646533886063170,\t0.999647861928881660,\t0.999649187472580360,\t0.999650510517156250,\t\n0.999651831062605690,\t0.999653149108925660,\t0.999654464656112740,\t0.999655777704163690,\t0.999657088253075200,\t0.999658396302843920,\t0.999659701853466750,\t0.999661004904940250,\t\n0.999662305457261200,\t0.999663603510426490,\t0.999664899064432680,\t0.999666192119276650,\t0.999667482674955200,\t0.999668770731464980,\t0.999670056288802790,\t0.999671339346965500,\t\n0.999672619905949910,\t0.999673897965752790,\t0.999675173526370920,\t0.999676446587800970,\t0.999677717150040060,\t0.999678985213084850,\t0.999680250776932120,\t0.999681513841578770,\t\n0.999682774407021580,\t0.999684032473257540,\t0.999685288040283450,\t0.999686541108096070,\t0.999687791676692310,\t0.999689039746069150,\t0.999690285316223390,\t0.999691528387151810,\t\n0.999692768958851510,\t0.999694007031319280,\t0.999695242604552000,\t0.999696475678546690,\t0.999697706253300120,\t0.999698934328809300,\t0.999700159905071110,\t0.999701382982082550,\t\n0.999702603559840530,\t0.999703821638342040,\t0.999705037217583970,\t0.999706250297563210,\t0.999707460878277000,\t0.999708668959721990,\t0.999709874541895420,\t0.999711077624794050,\t\n0.999712278208415130,\t0.999713476292755420,\t0.999714671877812040,\t0.999715864963582000,\t0.999717055550062180,\t0.999718243637249810,\t0.999719429225141900,\t0.999720612313735320,\t\n0.999721792903027320,\t0.999722970993014770,\t0.999724146583694680,\t0.999725319675064390,\t0.999726490267120680,\t0.999727658359860880,\t0.999728823953281890,\t0.999729987047380810,\t\n0.999731147642154760,\t0.999732305737600860,\t0.999733461333716100,\t0.999734614430497830,\t0.999735765027942920,\t0.999736913126048620,\t0.999738058724812140,\t0.999739201824230370,\t\n0.999740342424300650,\t0.999741480525020100,\t0.999742616126385820,\t0.999743749228395040,\t0.999744879831044870,\t0.999746007934332440,\t0.999747133538255060,\t0.999748256642809860,\t\n0.999749377247993950,\t0.999750495353804670,\t0.999751610960239120,\t0.999752724067294540,\t0.999753834674968140,\t0.999754942783257160,\t0.999756048392158920,\t0.999757151501670440,\t\n0.999758252111789040,\t0.999759350222512170,\t0.999760445833836830,\t0.999761538945760360,\t0.999762629558279990,\t0.999763717671393160,\t0.999764803285096980,\t0.999765886399388900,\t\n0.999766967014265930,\t0.999768045129725610,\t0.999769120745765290,\t0.999770193862381970,\t0.999771264479573320,\t0.999772332597336440,\t0.999773398215668800,\t0.999774461334567600,\t\n0.999775521954030300,\t0.999776580074054120,\t0.999777635694636510,\t0.999778688815774810,\t0.999779739437466450,\t0.999780787559708670,\t0.999781833182498910,\t0.999782876305834620,\t\n0.999783916929713130,\t0.999784955054131900,\t0.999785990679088240,\t0.999787023804579510,\t0.999788054430603370,\t0.999789082557157040,\t0.999790108184237970,\t0.999791131311843610,\t\n0.999792151939971510,\t0.999793170068619010,\t0.999794185697783560,\t0.999795198827462590,\t0.999796209457653680,\t0.999797217588354270,\t0.999798223219561800,\t0.999799226351273720,\t\n0.999800226983487580,\t0.999801225116200950,\t0.999802220749411270,\t0.999803213883115990,\t0.999804204517312670,\t0.999805192651998850,\t0.999806178287172000,\t0.999807161422829770,\t\n0.999808142058969620,\t0.999809120195589100,\t0.999810095832685760,\t0.999811068970257290,\t0.999812039608301010,\t0.999813007746814700,\t0.999813973385795920,\t0.999814936525242120,\t\n0.999815897165150960,\t0.999816855305520110,\t0.999817810946347140,\t0.999818764087629600,\t0.999819714729365150,\t0.999820662871551470,\t0.999821608514186110,\t0.999822551657266740,\t\n0.999823492300790930,\t0.999824430444756440,\t0.999825366089160840,\t0.999826299234001900,\t0.999827229879277190,\t0.999828158024984370,\t0.999829083671121110,\t0.999830006817685190,\t\n0.999830927464674280,\t0.999831845612086050,\t0.999832761259918160,\t0.999833674408168390,\t0.999834585056834420,\t0.999835493205914030,\t0.999836398855404870,\t0.999837302005304740,\t\n0.999838202655611300,\t0.999839100806322430,\t0.999839996457435820,\t0.999840889608949120,\t0.999841780260860240,\t0.999842668413166940,\t0.999843554065866890,\t0.999844437218958100,\t\n0.999845317872438130,\t0.999846196026304870,\t0.999847071680556090,\t0.999847944835189680,\t0.999848815490203320,\t0.999849683645595010,\t0.999850549301362520,\t0.999851412457503530,\t\n0.999852273114016140,\t0.999853131270898030,\t0.999853986928147090,\t0.999854840085761200,\t0.999855690743738150,\t0.999856538902075930,\t0.999857384560772330,\t0.999858227719825240,\t\n0.999859068379232660,\t0.999859906538992370,\t0.999860742199102260,\t0.999861575359560330,\t0.999862406020364470,\t0.999863234181512680,\t0.999864059843002640,\t0.999864883004832560,\t\n0.999865703667000340,\t0.999866521829503750,\t0.999867337492340910,\t0.999868150655509600,\t0.999868961319008040,\t0.999869769482834010,\t0.999870575146985630,\t0.999871378311460780,\t\n0.999872178976257460,\t0.999872977141373800,\t0.999873772806807560,\t0.999874565972556970,\t0.999875356638619930,\t0.999876144804994540,\t0.999876930471678690,\t0.999877713638670620,\t\n0.999878494305968200,\t0.999879272473569560,\t0.999880048141472800,\t0.999880821309675820,\t0.999881591978176830,\t0.999882360146973960,\t0.999883125816065090,\t0.999883888985448440,\t\n0.999884649655122030,\t0.999885407825083950,\t0.999886163495332440,\t0.999886916665865490,\t0.999887667336681220,\t0.999888415507777850,\t0.999889161179153390,\t0.999889904350806050,\t\n0.999890645022733950,\t0.999891383194935200,\t0.999892118867408030,\t0.999892852040150550,\t0.999893582713160980,\t0.999894310886437430,\t0.999895036559978020,\t0.999895759733781090,\t\n0.999896480407844850,\t0.999897198582167300,\t0.999897914256746790,\t0.999898627431581420,\t0.999899338106669530,\t0.999900046282009350,\t0.999900751957598980,\t0.999901455133436760,\t\n0.999902155809520910,\t0.999902853985849660,\t0.999903549662421340,\t0.999904242839234070,\t0.999904933516286180,\t0.999905621693576000,\t0.999906307371101750,\t0.999906990548861780,\t\n0.999907671226854310,\t0.999908349405077670,\t0.999909025083530080,\t0.999909698262209990,\t0.999910368941115620,\t0.999911037120245430,\t0.999911702799597510,\t0.999912365979170440,\t\n0.999913026658962420,\t0.999913684838971810,\t0.999914340519197030,\t0.999914993699636320,\t0.999915644380288130,\t0.999916292561150890,\t0.999916938242222940,\t0.999917581423502620,\t\n0.999918222104988370,\t0.999918860286678530,\t0.999919495968571550,\t0.999920129150665750,\t0.999920759832959800,\t0.999921388015451830,\t0.999922013698140380,\t0.999922636881023900,\t\n0.999923257564100940,\t0.999923875747369740,\t0.999924491430828840,\t0.999925104614476700,\t0.999925715298311870,\t0.999926323482332680,\t0.999926929166537800,\t0.999927532350925460,\t\n0.999928133035494330,\t0.999928731220242950,\t0.999929326905169670,\t0.999929920090273040,\t0.999930510775551620,\t0.999931098961003960,\t0.999931684646628630,\t0.999932267832423950,\t\n0.999932848518388710,\t0.999933426704521230,\t0.999934002390820310,\t0.999934575577284270,\t0.999935146263911890,\t0.999935714450701620,\t0.999936280137652010,\t0.999936843324761740,\t\n0.999937404012029350,\t0.999937962199453520,\t0.999938517887032700,\t0.999939071074765650,\t0.999939621762650830,\t0.999940169950687020,\t0.999940715638872770,\t0.999941258827206750,\t\n0.999941799515687510,\t0.999942337704313840,\t0.999942873393084410,\t0.999943406581997650,\t0.999943937271052460,\t0.999944465460247400,\t0.999944991149581130,\t0.999945514339052430,\t\n0.999946035028659970,\t0.999946553218402310,\t0.999947068908278450,\t0.999947582098286820,\t0.999948092788426220,\t0.999948600978695420,\t0.999949106669093090,\t0.999949609859618000,\t\n0.999950110550268830,\t0.999950608741044470,\t0.999951104431943570,\t0.999951597622964930,\t0.999952088314107200,\t0.999952576505369390,\t0.999953062196750060,\t0.999953545388248100,\t\n0.999954026079862280,\t0.999954504271591380,\t0.999954979963434190,\t0.999955453155389580,\t0.999955923847456350,\t0.999956392039633270,\t0.999956857731919220,\t0.999957320924313000,\t\n0.999957781616813590,\t0.999958239809419670,\t0.999958695502130120,\t0.999959148694943840,\t0.999959599387859720,\t0.999960047580876530,\t0.999960493273993280,\t0.999960936467208740,\t\n0.999961377160521910,\t0.999961815353931690,\t0.999962251047436860,\t0.999962684241036400,\t0.999963114934729220,\t0.999963543128514320,\t0.999963968822390580,\t0.999964392016356780,\t\n0.999964812710412150,\t0.999965230904555470,\t0.999965646598785620,\t0.999966059793101710,\t0.999966470487502650,\t0.999966878681987410,\t0.999967284376554910,\t0.999967687571204240,\t\n0.999968088265934420,\t0.999968486460744320,\t0.999968882155633070,\t0.999969275350599540,\t0.999969666045642860,\t0.999970054240762020,\t0.999970439935956020,\t0.999970823131223870,\t\n0.999971203826564680,\t0.999971582021977560,\t0.999971957717461500,\t0.999972330913015410,\t0.999972701608638600,\t0.999973069804329980,\t0.999973435500088770,\t0.999973798695913850,\t\n0.999974159391804560,\t0.999974517587759790,\t0.999974873283778760,\t0.999975226479860590,\t0.999975577176004270,\t0.999975925372209030,\t0.999976271068473980,\t0.999976614264798220,\t\n0.999976954961181000,\t0.999977293157621410,\t0.999977628854118450,\t0.999977962050671580,\t0.999978292747279670,\t0.999978620943942080,\t0.999978946640658010,\t0.999979269837426470,\t\n0.999979590534246790,\t0.999979908731118080,\t0.999980224428039690,\t0.999980537625010710,\t0.999980848322030380,\t0.999981156519097910,\t0.999981462216212650,\t0.999981765413373580,\t\n0.999982066110580270,\t0.999982364307831610,\t0.999982660005127140,\t0.999982953202466000,\t0.999983243899847500,\t0.999983532097270870,\t0.999983817794735440,\t0.999984100992240440,\t\n0.999984381689785210,\t0.999984659887369070,\t0.999984935584991130,\t0.999985208782650960,\t0.999985479480347770,\t0.999985747678080910,\t0.999986013375849580,\t0.999986276573653240,\t\n0.999986537271491230,\t0.999986795469362980,\t0.999987051167267600,\t0.999987304365204670,\t0.999987555063173380,\t0.999987803261173310,\t0.999988048959203680,\t0.999988292157263920,\t\n0.999988532855353500,\t0.999988771053471730,\t0.999989006751617950,\t0.999989239949791720,\t0.999989470647992370,\t0.999989698846219350,\t0.999989924544472110,\t0.999990147742750080,\t\n0.999990368441052600,\t0.999990586639379230,\t0.999990802337729410,\t0.999991015536102590,\t0.999991226234498210,\t0.999991434432915720,\t0.999991640131354780,\t0.999991843329814610,\t\n0.999992044028294890,\t0.999992242226795060,\t0.999992437925314560,\t0.999992631123853060,\t0.999992821822409890,\t0.999993010020984730,\t0.999993195719577120,\t0.999993378918186400,\t\n0.999993559616812240,\t0.999993737815454200,\t0.999993913514111820,\t0.999994086712784670,\t0.999994257411472300,\t0.999994425610174260,\t0.999994591308890230,\t0.999994754507619650,\t\n0.999994915206362190,\t0.999995073405117510,\t0.999995229103885050,\t0.999995382302664600,\t0.999995533001455610,\t0.999995681200257840,\t0.999995826899070850,\t0.999995970097894320,\t\n0.999996110796727900,\t0.999996248995571160,\t0.999996384694423760,\t0.999996517893285470,\t0.999996648592155870,\t0.999996776791034600,\t0.999996902489921460,\t0.999997025688815990,\t\n0.999997146387717970,\t0.999997264586627080,\t0.999997380285543080,\t0.999997493484465540,\t0.999997604183394340,\t0.999997712382329150,\t0.999997818081269640,\t0.999997921280215580,\t\n0.999998021979166760,\t0.999998120178122840,\t0.999998215877083600,\t0.999998309076048920,\t0.999998399775018370,\t0.999998487973991820,\t0.999998573672969180,\t0.999998656871950000,\t\n0.999998737570934160,\t0.999998815769921560,\t0.999998891468911850,\t0.999998964667904940,\t0.999999035366900600,\t0.999999103565898610,\t0.999999169264898960,\t0.999999232463901320,\t\n0.999999293162905700,\t0.999999351361911760,\t0.999999407060919500,\t0.999999460259928700,\t0.999999510958939240,\t0.999999559157951020,\t0.999999604856963820,\t0.999999648055977740,\t\n0.999999688754992460,\t0.999999726954007960,\t0.999999762653024150,\t0.999999795852040910,\t0.999999826551058240,\t0.999999854750076020,\t0.999999880449094050,\t0.999999903648112530,\t\n0.999999924347131140,\t0.999999942546149990,\t0.999999958245168960,\t0.999999971444187950,\t0.999999982143207180,\t0.999999990342226310,\t0.999999996041245560,\t0.999999999240264840,\t\n0.999999999939284010,\t0.999999998138303310,\t0.999999993837322520,\t0.999999987036341740,\t0.999999977735361090,\t0.999999965934380450,\t0.999999951633399830,\t0.999999934832419330,\t\n0.999999915531439080,\t0.999999893730459060,\t0.999999869429479270,\t0.999999842628499720,\t0.999999813327520640,\t0.999999781526542010,\t0.999999747225563950,\t0.999999710424586570,\t\n0.999999671123609770,\t0.999999629322633980,\t0.999999585021658980,\t0.999999538220684990,\t0.999999488919712240,\t0.999999437118740730,\t0.999999382817770680,\t0.999999326016802190,\t\n0.999999266715835280,\t0.999999204914870270,\t0.999999140613907270,\t0.999999073812946390,\t0.999999004511987750,\t0.999998932711031690,\t0.999998858410078300,\t0.999998781609127700,\t\n0.999998702308180220,\t0.999998620507235980,\t0.999998536206295090,\t0.999998449405357980,\t0.999998360104424670,\t0.999998268303495470,\t0.999998174002570630,\t0.999998077201650350,\t\n0.999997977900734860,\t0.999997876099824490,\t0.999997771798919350,\t0.999997664998019790,\t0.999997555697126120,\t0.999997443896238570,\t0.999997329595357360,\t0.999997212794482840,\t\n0.999997093493615210,\t0.999996971692754920,\t0.999996847391902310,\t0.999996720591057380,\t0.999996591290220780,\t0.999996459489392640,\t0.999996325188573400,\t0.999996188387763390,\t\n0.999996049086962820,\t0.999995907286172160,\t0.999995762985391720,\t0.999995616184621850,\t0.999995466883862980,\t0.999995315083115450,\t0.999995160782379600,\t0.999995003981655860,\t\n0.999994844680944570,\t0.999994682880246290,\t0.999994518579561230,\t0.999994351778889850,\t0.999994182478232570,\t0.999994010677589860,\t0.999993836376962150,\t0.999993659576349890,\t\n0.999993480275753410,\t0.999993298475173260,\t0.999993114174609790,\t0.999992927374063640,\t0.999992738073535170,\t0.999992546273024810,\t0.999992351972533110,\t0.999992155172060530,\t\n0.999991955871607500,\t0.999991754071174580,\t0.999991549770762320,\t0.999991342970371180,\t0.999991133670001700,\t0.999990921869654440,\t0.999990707569329840,\t0.999990490769028350,\t\n0.999990271468750750,\t0.999990049668497470,\t0.999989825368269080,\t0.999989598568066020,\t0.999989369267889060,\t0.999989137467738650,\t0.999988903167615460,\t0.999988666367519930,\t\n0.999988427067452720,\t0.999988185267414510,\t0.999987940967405840,\t0.999987694167427280,\t0.999987444867479480,\t0.999987193067563120,\t0.999986938767678750,\t0.999986681967826920,\t\n0.999986422668008520,\t0.999986160868224010,\t0.999985896568474140,\t0.999985629768759490,\t0.999985360469080820,\t0.999985088669438690,\t0.999984814369833890,\t0.999984537570267060,\t\n0.999984258270738780,\t0.999983976471249920,\t0.999983692171801160,\t0.999983405372393160,\t0.999983116073026590,\t0.999982824273702330,\t0.999982529974420940,\t0.999982233175183200,\t\n0.999981933875989880,\t0.999981632076841760,\t0.999981327777739630,\t0.999981020978684020,\t0.999980711679675950,\t0.999980399880716190,\t0.999980085581805290,\t0.999979768782944260,\t\n0.999979449484133750,\t0.999979127685374560,\t0.999978803386667670,\t0.999978476588013750,\t0.999978147289413590,\t0.999977815490868170,\t0.999977481192378060,\t0.999977144393944360,\t\n0.999976805095567740,\t0.999976463297249100,\t0.999976118998989420,\t0.999975772200789260,\t0.999975422902649850,\t0.999975071104571730,\t0.999974716806556030,\t0.999974360008603510,\t\n0.999974000710715070,\t0.999973638912891700,\t0.999973274615134190,\t0.999972907817443410,\t0.999972538519820490,\t0.999972166722266190,\t0.999971792424781400,\t0.999971415627367240,\t\n0.999971036330024490,\t0.999970654532754130,\t0.999970270235557180,\t0.999969883438434510,\t0.999969494141387140,\t0.999969102344416050,\t0.999968708047522140,\t0.999968311250706510,\t\n0.999967911953970170,\t0.999967510157314000,\t0.999967105860739000,\t0.999966699064246290,\t0.999966289767836860,\t0.999965877971511600,\t0.999965463675271730,\t0.999965046879118250,\t\n0.999964627583052050,\t0.999964205787074350,\t0.999963781491186030,\t0.999963354695388440,\t0.999962925399682350,\t0.999962493604068970,\t0.999962059308549310,\t0.999961622513124480,\t\n0.999961183217795700,\t0.999960741422563860,\t0.999960297127430290,\t0.999959850332395870,\t0.999959401037461840,\t0.999958949242629290,\t0.999958494947899460,\t0.999958038153273330,\t\n0.999957578858752140,\t0.999957117064336990,\t0.999956652770028990,\t0.999956185975829470,\t0.999955716681739330,\t0.999955244887760000,\t0.999954770593892590,\t0.999954293800138230,\t\n0.999953814506498120,\t0.999953332712973490,\t0.999952848419565440,\t0.999952361626275320,\t0.999951872333104340,\t0.999951380540053610,\t0.999950886247124470,\t0.999950389454318130,\t\n0.999949890161635820,\t0.999949388369078760,\t0.999948884076648280,\t0.999948377284345600,\t0.999947867992171830,\t0.999947356200128530,\t0.999946841908216810,\t0.999946325116438000,\t\n0.999945805824793310,\t0.999945284033284200,\t0.999944759741911770,\t0.999944232950677580,\t0.999943703659582630,\t0.999943171868628580,\t0.999942637577816540,\t0.999942100787147850,\t\n0.999941561496624050,\t0.999941019706246270,\t0.999940475416015940,\t0.999939928625934390,\t0.999939379336002960,\t0.999938827546223210,\t0.999938273256596340,\t0.999937716467123820,\t\n0.999937157177806960,\t0.999936595388647210,\t0.999936031099646020,\t0.999935464310804710,\t0.999934895022124850,\t0.999934323233607650,\t0.999933748945254660,\t0.999933172157067230,\t\n0.999932592869046900,\t0.999932011081195120,\t0.999931426793513320,\t0.999930840006002960,\t0.999930250718665480,\t0.999929658931502430,\t0.999929064644515140,\t0.999928467857705280,\t\n0.999927868571074190,\t0.999927266784623400,\t0.999926662498354490,\t0.999926055712268890,\t0.999925446426368270,\t0.999924834640653960,\t0.999924220355127510,\t0.999923603569790490,\t\n0.999922984284644540,\t0.999922362499691130,\t0.999921738214931800,\t0.999921111430368100,\t0.999920482146001710,\t0.999919850361833950,\t0.999919216077866710,\t0.999918579294101440,\t\n0.999917940010539570,\t0.999917298227183000,\t0.999916653944033060,\t0.999916007161091640,\t0.999915357878360060,\t0.999914706095840210,\t0.999914051813533540,\t0.999913395031441720,\t\n0.999912735749566410,\t0.999912073967909270,\t0.999911409686471960,\t0.999910742905256060,\t0.999910073624263430,\t0.999909401843495530,\t0.999908727562954120,\t0.999908050782640890,\t\n0.999907371502557600,\t0.999906689722705800,\t0.999906005443087280,\t0.999905318663703800,\t0.999904629384557040,\t0.999903937605648660,\t0.999903243326980440,\t0.999902546548554150,\t\n0.999901847270371460,\t0.999901145492434140,\t0.999900441214743970,\t0.999899734437302730,\t0.999899025160112090,\t0.999898313383173920,\t0.999897599106490010,\t0.999896882330062020,\t\n0.999896163053891950,\t0.999895441277981360,\t0.999894717002332230,\t0.999893990226946250,\t0.999893260951825290,\t0.999892529176971250,\t0.999891794902385780,\t0.999891058128070890,\t\n0.999890318854028350,\t0.999889577080260050,\t0.999888832806767770,\t0.999888086033553390,\t0.999887336760618920,\t0.999886584987966010,\t0.999885830715596560,\t0.999885073943512670,\t\n0.999884314671716010,\t0.999883552900208580,\t0.999882788628992270,\t0.999882021858069070,\t0.999881252587440650,\t0.999880480817109230,\t0.999879706547076590,\t0.999878929777344600,\t\n0.999878150507915400,\t0.999877368738790740,\t0.999876584469972740,\t0.999875797701463180,\t0.999875008433264270,\t0.999874216665377680,\t0.999873422397805630,\t0.999872625630550020,\t\n0.999871826363612830,\t0.999871024596996060,\t0.999870220330701830,\t0.999869413564731910,\t0.999868604299088530,\t0.999867792533773670,\t0.999866978268789230,\t0.999866161504137430,\t\n0.999865342239820270,\t0.999864520475839620,\t0.999863696212197730,\t0.999862869448896570,\t0.999862040185938270,\t0.999861208423324930,\t0.999860374161058550,\t0.999859537399141130,\t\n0.999858698137575000,\t0.999857856376362040,\t0.999857012115504480,\t0.999856165355004320,\t0.999855316094863780,\t0.999854464335084960,\t0.999853610075669970,\t0.999852753316621050,\t\n0.999851894057940170,\t0.999851032299629460,\t0.999850168041691360,\t0.999849301284127740,\t0.999848432026940850,\t0.999847560270132880,\t0.999846686013705970,\t0.999845809257662420,\t\n0.999844930002004360,\t0.999844048246734010,\t0.999843163991853470,\t0.999842277237364960,\t0.999841387983270820,\t0.999840496229573270,\t0.999839601976274420,\t0.999838705223376590,\t\n0.999837805970882010,\t0.999836904218792790,\t0.999835999967111480,\t0.999835093215840080,\t0.999834183964980920,\t0.999833272214536330,\t0.999832357964508640,\t0.999831441214899970,\t\n0.999830521965712760,\t0.999829600216949220,\t0.999828675968611580,\t0.999827749220702390,\t0.999826819973223760,\t0.999825888226178020,\t0.999824953979567720,\t0.999824017233394870,\t\n0.999823077987662120,\t0.999822136242371600,\t0.999821191997525730,\t0.999820245253126960,\t0.999819296009177520,\t0.999818344265679840,\t0.999817390022636250,\t0.999816433280049210,\t\n0.999815474037921150,\t0.999814512296254400,\t0.999813548055051290,\t0.999812581314314390,\t0.999811612074046010,\t0.999810640334248600,\t0.999809666094924500,\t0.999808689356076360,\t\n0.999807710117706420,\t0.999806728379817320,\t0.999805744142411300,\t0.999804757405490910,\t0.999803768169058690,\t0.999802776433116990,\t0.999801782197668350,\t0.999800785462715340,\t\n0.999799786228260270,\t0.999798784494305810,\t0.999797780260854310,\t0.999796773527908410,\t0.999795764295470570,\t0.999794752563543330,\t0.999793738332129260,\t0.999792721601230780,\t\n0.999791702370850470,\t0.999790680640990970,\t0.999789656411654740,\t0.999788629682844320,\t0.999787600454562390,\t0.999786568726811380,\t0.999785534499594060,\t0.999784497772912890,\t\n0.999783458546770420,\t0.999782416821169310,\t0.999781372596112110,\t0.999780325871601590,\t0.999779276647640210,\t0.999778224924230630,\t0.999777170701375510,\t0.999776113979077400,\t\n0.999775054757339080,\t0.999773993036163100,\t0.999772928815552130,\t0.999771862095508830,\t0.999770792876035870,\t0.999769721157136030,\t0.999768646938811730,\t0.999767570221065880,\t\n0.999766491003901140,\t0.999765409287320160,\t0.999764325071325620,\t0.999763238355920290,\t0.999762149141106840,\t0.999761057426888140,\t0.999759963213266660,\t0.999758866500245260,\t\n0.999757767287826840,\t0.999756665576013840,\t0.999755561364809250,\t0.999754454654215750,\t0.999753345444236110,\t0.999752233734873100,\t0.999751119526129610,\t0.999750002818008190,\t\n0.999748883610511840,\t0.999747761903643230,\t0.999746637697405240,\t0.999745510991800650,\t0.999744381786832230,\t0.999743250082502980,\t0.999742115878815450,\t0.999740979175772760,\t\n0.999739839973377560,\t0.999738698271632750,\t0.999737554070541210,\t0.999736407370105830,\t0.999735258170329380,\t0.999734106471214860,\t0.999732952272764930,\t0.999731795574982820,\t\n0.999730636377871070,\t0.999729474681432690,\t0.999728310485670790,\t0.999727143790588020,\t0.999725974596187390,\t0.999724802902471790,\t0.999723628709444310,\t0.999722452017107630,\t\n0.999721272825464860,\t0.999720091134518870,\t0.999718906944272680,\t0.999717720254729270,\t0.999716531065891530,\t0.999715339377762470,\t0.999714145190345070,\t0.999712948503642230,\t\n0.999711749317657160,\t0.999710547632392640,\t0.999709343447851780,\t0.999708136764037470,\t0.999706927580952920,\t0.999705715898601020,\t0.999704501716984770,\t0.999703285036107280,\t\n0.999702065855971660,\t0.999700844176580890,\t0.999699619997937880,\t0.999698393320045950,\t0.999697164142907990,\t0.999695932466527100,\t0.999694698290906400,\t0.999693461616048880,\t\n0.999692222441957770,\t0.999690980768636160,\t0.999689736596087060,\t0.999688489924313580,\t0.999687240753318940,\t0.999685989083106130,\t0.999684734913678370,\t0.999683478245038780,\t\n0.999682219077190460,\t0.999680957410136630,\t0.999679693243880400,\t0.999678426578424980,\t0.999677157413773390,\t0.999675885749929050,\t0.999674611586894860,\t0.999673334924674250,\t\n0.999672055763270230,\t0.999670774102686120,\t0.999669489942925040,\t0.999668203283990200,\t0.999666914125884930,\t0.999665622468612350,\t0.999664328312175670,\t0.999663031656578220,\t\n0.999661732501823220,\t0.999660430847913780,\t0.999659126694853350,\t0.999657820042645140,\t0.999656510891292260,\t0.999655199240798150,\t0.999653885091166040,\t0.999652568442399250,\t\n0.999651249294501110,\t0.999649927647474730,\t0.999648603501323560,\t0.999647276856050930,\t0.999645947711660040,\t0.999644616068154250,\t0.999643281925536980,\t0.999641945283811560,\t\n0.999640606142981230,\t0.999639264503049300,\t0.999637920364019330,\t0.999636573725894540,\t0.999635224588678260,\t0.999633872952373940,\t0.999632518816985010,\t0.999631162182514690,\t\n0.999629803048966540,\t0.999628441416343770,\t0.999627077284649950,\t0.999625710653888500,\t0.999624341524062650,\t0.999622969895176070,\t0.999621595767232090,\t0.999620219140234020,\t\n0.999618840014185440,\t0.999617458389089770,\t0.999616074264950360,\t0.999614687641770860,\t0.999613298519554610,\t0.999611906898305150,\t0.999610512778025930,\t0.999609116158720390,\t\n0.999607717040392090,\t0.999606315423044460,\t0.999604911306681050,\t0.999603504691305430,\t0.999602095576920920,\t0.999600683963531300,\t0.999599269851139890,\t0.999597853239750370,\t\n0.999596434129366160,\t0.999595012519990830,\t0.999593588411628040,\t0.999592161804281230,\t0.999590732697954070,\t0.999589301092650100,\t0.999587866988372880,\t0.999586430385125850,\t\n0.999584991282912890,\t0.999583549681737460,\t0.999582105581602990,\t0.999580658982513360,\t0.999579209884472130,\t0.999577758287482850,\t0.999576304191549190,\t0.999574847596674700,\t\n0.999573388502863150,\t0.999571926910118090,\t0.999570462818443200,\t0.999568996227842230,\t0.999567527138318760,\t0.999566055549876430,\t0.999564581462518920,\t0.999563104876250110,\t\n0.999561625791073440,\t0.999560144206992680,\t0.999558660124011510,\t0.999557173542133800,\t0.999555684461363110,\t0.999554192881703220,\t0.999552698803157890,\t0.999551202225730790,\t\n0.999549703149425590,\t0.999548201574246290,\t0.999546697500196310,\t0.999545190927279780,\t0.999543681855500130,\t0.999542170284861360,\t0.999540656215367140,\t0.999539139647021240,\t\n0.999537620579827530,\t0.999536099013789700,\t0.999534574948911740,\t0.999533048385197300,\t0.999531519322650160,\t0.999529987761274330,\t0.999528453701073460,\t0.999526917142051440,\t\n0.999525378084212270,\t0.999523836527559490,\t0.999522292472097230,\t0.999520745917829130,\t0.999519196864759210,\t0.999517645312891330,\t0.999516091262229400,\t0.999514534712777180,\t\n0.999512975664538560,\t0.999511414117517540,\t0.999509850071718000,\t0.999508283527143830,\t0.999506714483799020,\t0.999505142941687350,\t0.999503568900812820,\t0.999501992361179430,\t\n0.999500413322790940,\t0.999498831785651460,\t0.999497247749765010,\t0.999495661215135330,\t0.999494072181766560,\t0.999492480649662560,\t0.999490886618827350,\t0.999489290089264900,\t\n0.999487691060979340,\t0.999486089533974440,\t0.999484485508254420,\t0.999482878983823150,\t0.999481269960684650,\t0.999479658438843010,\t0.999478044418302130,\t0.999476427899066210,\t\n0.999474808881139270,\t0.999473187364525280,\t0.999471563349228260,\t0.999469936835252430,\t0.999468307822601650,\t0.999466676311280170,\t0.999465042301291960,\t0.999463405792641150,\t\n0.999461766785331940,\t0.999460125279368230,\t0.999458481274754120,\t0.999456834771493940,\t0.999455185769591580,\t0.999453534269051370,\t0.999451880269877190,\t0.999450223772073380,\t\n0.999448564775644030,\t0.999446903280593270,\t0.999445239286925190,\t0.999443572794644020,\t0.999441903803753970,\t0.999440232314259160,\t0.999438558326163680,\t0.999436881839471880,\t\n0.999435202854187850,\t0.999433521370315820,\t0.999431837387860010,\t0.999430150906824630,\t0.999428461927213800,\t0.999426770449031830,\t0.999425076472282960,\t0.999423379996971390,\t\n0.999421681023101360,\t0.999419979550677180,\t0.999418275579703090,\t0.999416569110183170,\t0.999414860142121890,\t0.999413148675523440,\t0.999411434710392180,\t0.999409718246732300,\t\n0.999407999284548150,\t0.999406277823843950,\t0.999404553864624120,\t0.999402827406892790,\t0.999401098450654500,\t0.999399366995913470,\t0.999397633042673930,\t0.999395896590940410,\t\n0.999394157640717040,\t0.999392416192008360,\t0.999390672244818590,\t0.999388925799152170,\t0.999387176855013440,\t0.999385425412406820,\t0.999383671471336550,\t0.999381915031807180,\t\n0.999380156093822910,\t0.999378394657388310,\t0.999376630722507820,\t0.999374864289185650,\t0.999373095357426240,\t0.999371323927234270,\t0.999369549998613830,\t0.999367773571569580,\t\n0.999365994646105980,\t0.999364213222227350,\t0.999362429299938130,\t0.999360642879242870,\t0.999358853960146010,\t0.999357062542652000,\t0.999355268626765270,\t0.999353472212490490,\t\n0.999351673299831990,\t0.999349871888794320,\t0.999348067979381920,\t0.999346261571599340,\t0.999344452665451130,\t0.999342641260941860,\t0.999340827358075940,\t0.999339010956857950,\t\n0.999337192057292430,\t0.999335370659383940,\t0.999333546763137020,\t0.999331720368556110,\t0.999329891475646100,\t0.999328060084411220,\t0.999326226194856230,\t0.999324389806985680,\t\n0.999322550920804240,\t0.999320709536316350,\t0.999318865653526680,\t0.999317019272439770,\t0.999315170393060390,\t0.999313319015393110,\t0.999311465139442580,\t0.999309608765213350,\t\n0.999307749892709980,\t0.999305888521937360,\t0.999304024652899910,\t0.999302158285602540,\t0.999300289420049670,\t0.999298418056246200,\t0.999296544194196560,\t0.999294667833905640,\t\n0.999292788975377990,\t0.999290907618618380,\t0.999289023763631490,\t0.999287137410422080,\t0.999285248558994810,\t0.999283357209354350,\t0.999281463361505580,\t0.999279567015453170,\t\n0.999277668171201780,\t0.999275766828756300,\t0.999273862988121380,\t0.999271956649301680,\t0.999270047812302220,\t0.999268136477127640,\t0.999266222643782620,\t0.999264306312272140,\t\n0.999262387482600880,\t0.999260466154773600,\t0.999258542328795190,\t0.999256616004670420,\t0.999254687182404180,\t0.999252755862001130,\t0.999250822043466270,\t0.999248885726804260,\t\n0.999246946912020100,\t0.999245005599118550,\t0.999243061788104510,\t0.999241115478982760,\t0.999239166671758270,\t0.999237215366435840,\t0.999235261563020450,\t0.999233305261516770,\t\n0.999231346461929900,\t0.999229385164264630,\t0.999227421368525940,\t0.999225455074718720,\t0.999223486282847850,\t0.999221514992918220,\t0.999219541204934840,\t0.999217564918902570,\t\n0.999215586134826420,\t0.999213604852711270,\t0.999211621072562230,\t0.999209634794383960,\t0.999207646018181790,\t0.999205654743960390,\t0.999203660971724860,\t0.999201664701480200,\t\n0.999199665933231280,\t0.999197664666983340,\t0.999195660902741150,\t0.999193654640509910,\t0.999191645880294410,\t0.999189634622099860,\t0.999187620865931270,\t0.999185604611793510,\t\n0.999183585859691800,\t0.999181564609631150,\t0.999179540861616530,\t0.999177514615653070,\t0.999175485871745870,\t0.999173454629899930,\t0.999171420890120340,\t0.999169384652412230,\t\n0.999167345916780690,\t0.999165304683230730,\t0.999163260951767440,\t0.999161214722396160,\t0.999159165995121780,\t0.999157114769949390,\t0.999155061046884340,\t0.999153004825931500,\t\n0.999150946107096320,\t0.999148884890383670,\t0.999146821175798780,\t0.999144754963346980,\t0.999142686253033150,\t0.999140615044862620,\t0.999138541338840610,\t0.999136465134972230,\t\n0.999134386433262690,\t0.999132305233717210,\t0.999130221536340900,\t0.999128135341139090,\t0.999126046648116880,\t0.999123955457279610,\t0.999121861768632380,\t0.999119765582180630,\t\n0.999117666897929360,\t0.999115565715884000,\t0.999113462036049670,\t0.999111355858431690,\t0.999109247183035290,\t0.999107136009865780,\t0.999105022338928510,\t0.999102906170228680,\t\n0.999100787503771510,\t0.999098666339562350,\t0.999096542677606610,\t0.999094416517909530,\t0.999092287860476320,\t0.999090156705312430,\t0.999088023052423170,\t0.999085886901813770,\t\n0.999083748253489780,\t0.999081607107456300,\t0.999079463463718900,\t0.999077317322282780,\t0.999075168683153380,\t0.999073017546336040,\t0.999070863911836190,\t0.999068707779659170,\t\n0.999066549149810410,\t0.999064388022295250,\t0.999062224397119110,\t0.999060058274287450,\t0.999057889653805600,\t0.999055718535679090,\t0.999053544919913160,\t0.999051368806513460,\t\n0.999049190195485330,\t0.999047009086834300,\t0.999044825480565610,\t0.999042639376684920,\t0.999040450775197650,\t0.999038259676109150,\t0.999036066079425080,\t0.999033869985150870,\t\n0.999031671393291960,\t0.999029470303853920,\t0.999027266716842170,\t0.999025060632262150,\t0.999022852050119650,\t0.999020640970419870,\t0.999018427393168600,\t0.999016211318371260,\t\n0.999013992746033310,\t0.999011771676160510,\t0.999009548108758190,\t0.999007322043831910,\t0.999005093481387440,\t0.999002862421430220,\t0.999000628863965900,\t0.998998392808999940,\t\n0.998996154256537980,\t0.998993913206585700,\t0.998991669659148540,\t0.998989423614232260,\t0.998987175071842430,\t0.998984924031984690,\t0.998982670494664600,\t0.998980414459887830,\t\n0.998978155927660040,\t0.998975894897986880,\t0.998973631370873920,\t0.998971365346326910,\t0.998969096824351530,\t0.998966825804953440,\t0.998964552288138190,\t0.998962276273911650,\t\n0.998959997762279280,\t0.998957716753247070,\t0.998955433246820460,\t0.998953147243005320,\t0.998950858741807330,\t0.998948567743232150,\t0.998946274247285550,\t0.998943978253973300,\t\n0.998941679763301060,\t0.998939378775274610,\t0.998937075289899830,\t0.998934769307182280,\t0.998932460827127830,\t0.998930149849742150,\t0.998927836375031130,\t0.998925520403000640,\t\n0.998923201933656250,\t0.998920880967003820,\t0.998918557503049250,\t0.998916231541798210,\t0.998913903083256670,\t0.998911572127430310,\t0.998909238674325130,\t0.998906902723946780,\t\n0.998904564276301140,\t0.998902223331394110,\t0.998899879889231570,\t0.998897533949819280,\t0.998895185513163140,\t0.998892834579269140,\t0.998890481148142940,\t0.998888125219790650,\t\n0.998885766794217920,\t0.998883405871430870,\t0.998881042451435270,\t0.998878676534237010,\t0.998876308119842180,\t0.998873937208256460,\t0.998871563799486050,\t0.998869187893536630,\t\n0.998866809490414180,\t0.998864428590124810,\t0.998862045192674300,\t0.998859659298068750,\t0.998857270906313930,\t0.998854880017416070,\t0.998852486631380930,\t0.998850090748214630,\t\n0.998847692367923030,\t0.998845291490512270,\t0.998842888115988200,\t0.998840482244356950,\t0.998838073875624510,\t0.998835663009796980,\t0.998833249646880140,\t0.998830833786880200,\t\n0.998828415429803270,\t0.998825994575655240,\t0.998823571224442210,\t0.998821145376170280,\t0.998818717030845460,\t0.998816286188473850,\t0.998813852849061550,\t0.998811417012614560,\t\n0.998808978679139090,\t0.998806537848641150,\t0.998804094521126840,\t0.998801648696602370,\t0.998799200375073750,\t0.998796749556547180,\t0.998794296241028560,\t0.998791840428524310,\t\n0.998789382119040450,\t0.998786921312583180,\t0.998784458009158600,\t0.998781992208772840,\t0.998779523911432100,\t0.998777053117142600,\t0.998774579825910340,\t0.998772104037741750,\t\n0.998769625752642940,\t0.998767144970619910,\t0.998764661691679210,\t0.998762175915826720,\t0.998759687643068770,\t0.998757196873411690,\t0.998754703606861580,\t0.998752207843424670,\t\n0.998749709583107270,\t0.998747208825915610,\t0.998744705571856020,\t0.998742199820934600,\t0.998739691573157560,\t0.998737180828531360,\t0.998734667587062310,\t0.998732151848756520,\t\n0.998729633613620330,\t0.998727112881660050,\t0.998724589652882020,\t0.998722063927292570,\t0.998719535704897910,\t0.998717004985704370,\t0.998714471769718280,\t0.998711936056946080,\t\n0.998709397847394100,\t0.998706857141068550,\t0.998704313937975870,\t0.998701768238122400,\t0.998699220041514570,\t0.998696669348158590,\t0.998694116158061030,\t0.998691560471228090,\t\n0.998689002287666330,\t0.998686441607382070,\t0.998683878430381640,\t0.998681312756671490,\t0.998678744586258160,\t0.998676173919147870,\t0.998673600755347170,\t0.998671025094862500,\t\n0.998668446937700290,\t0.998665866283867000,\t0.998663283133368940,\t0.998660697486212780,\t0.998658109342404730,\t0.998655518701951460,\t0.998652925564859410,\t0.998650329931135120,\t\n0.998647731800784920,\t0.998645131173815480,\t0.998642528050233120,\t0.998639922430044400,\t0.998637314313255970,\t0.998634703699874170,\t0.998632090589905760,\t0.998629474983356970,\t\n0.998626856880234560,\t0.998624236280545090,\t0.998621613184294880,\t0.998618987591490700,\t0.998616359502139010,\t0.998613728916246560,\t0.998611095833819680,\t0.998608460254865050,\t\n0.998605822179389310,\t0.998603181607399030,\t0.998600538538900740,\t0.998597892973901110,\t0.998595244912406700,\t0.998592594354424270,\t0.998589941299960370,\t0.998587285749021560,\t\n0.998584627701614600,\t0.998581967157745940,\t0.998579304117422460,\t0.998576638580650710,\t0.998573970547437350,\t0.998571300017789150,\t0.998568626991712560,\t0.998565951469214450,\t\n0.998563273450301490,\t0.998560592934980340,\t0.998557909923257770,\t0.998555224415140330,\t0.998552536410634790,\t0.998549845909748050,\t0.998547152912486640,\t0.998544457418857330,\t\n0.998541759428866920,\t0.998539058942522040,\t0.998536355959829480,\t0.998533650480796120,\t0.998530942505428620,\t0.998528232033733750,\t0.998525519065718290,\t0.998522803601389120,\t\n0.998520085640752900,\t0.998517365183816400,\t0.998514642230586500,\t0.998511916781069990,\t0.998509188835273730,\t0.998506458393204510,\t0.998503725454869100,\t0.998500990020274480,\t\n0.998498252089427220,\t0.998495511662334410,\t0.998492768739002830,\t0.998490023319439370,\t0.998487275403650790,\t0.998484524991643970,\t0.998481772083425920,\t0.998479016679003520,\t\n0.998476258778383420,\t0.998473498381572730,\t0.998470735488578340,\t0.998467970099407020,\t0.998465202214065870,\t0.998462431832561670,\t0.998459658954901410,\t0.998456883581091970,\t\n0.998454105711140350,\t0.998451325345053430,\t0.998448542482838210,\t0.998445757124501680,\t0.998442969270050720,\t0.998440178919492330,\t0.998437386072833500,\t0.998434590730081230,\t\n0.998431792891242510,\t0.998428992556324220,\t0.998426189725333480,\t0.998423384398277270,\t0.998420576575162700,\t0.998417766255996540,\t0.998414953440786010,\t0.998412138129538110,\t\n0.998409320322259820,\t0.998406500018958360,\t0.998403677219640520,\t0.998400851924313600,\t0.998398024132984400,\t0.998395193845660330,\t0.998392361062348080,\t0.998389525783055070,\t\n0.998386688007788180,\t0.998383847736554530,\t0.998381004969361330,\t0.998378159706215680,\t0.998375311947124480,\t0.998372461692095150,\t0.998369608941134470,\t0.998366753694249990,\t\n0.998363895951448480,\t0.998361035712737270,\t0.998358172978123460,\t0.998355307747614270,\t0.998352440021216810,\t0.998349569798938190,\t0.998346697080785610,\t0.998343821866766400,\t\n0.998340944156887570,\t0.998338063951156430,\t0.998335181249580090,\t0.998332296052165780,\t0.998329408358920810,\t0.998326518169852290,\t0.998323625484967340,\t0.998320730304273480,\t\n0.998317832627777730,\t0.998314932455487410,\t0.998312029787409850,\t0.998309124623552150,\t0.998306216963921630,\t0.998303306808525530,\t0.998300394157371150,\t0.998297479010465840,\t\n0.998294561367816800,\t0.998291641229431480,\t0.998288718595316870,\t0.998285793465480630,\t0.998282865839929870,\t0.998279935718671800,\t0.998277003101713970,\t0.998274067989063710,\t\n0.998271130380728230,\t0.998268190276714980,\t0.998265247677031180,\t0.998262302581684250,\t0.998259354990681640,\t0.998256404904030560,\t0.998253452321738450,\t0.998250497243812870,\t\n0.998247539670260920,\t0.998244579601090140,\t0.998241617036307870,\t0.998238651975921650,\t0.998235684419938710,\t0.998232714368366580,\t0.998229741821212710,\t0.998226766778484540,\t\n0.998223789240189400,\t0.998220809206334710,\t0.998217826676928040,\t0.998214841651976830,\t0.998211854131488500,\t0.998208864115470500,\t0.998205871603930370,\t0.998202876596875680,\t\n0.998199879094313620,\t0.998196879096251990,\t0.998193876602698090,\t0.998190871613659490,\t0.998187864129143730,\t0.998184854149158360,\t0.998181841673710820,\t0.998178826702808660,\t\n0.998175809236459430,\t0.998172789274670680,\t0.998169766817449950,\t0.998166741864804810,\t0.998163714416742790,\t0.998160684473271550,\t0.998157652034398550,\t0.998154617100131540,\t\n0.998151579670477850,\t0.998148539745445260,\t0.998145497325041320,\t0.998142452409273570,\t0.998139404998149790,\t0.998136355091677420,\t0.998133302689864220,\t0.998130247792717750,\t\n0.998127190400245670,\t0.998124130512455630,\t0.998121068129355080,\t0.998118003250952120,\t0.998114935877253970,\t0.998111866008268620,\t0.998108793644003510,\t0.998105718784466520,\t\n0.998102641429665090,\t0.998099561579607110,\t0.998096479234300230,\t0.998093394393752220,\t0.998090307057970640,\t0.998087217226963360,\t0.998084124900737950,\t0.998081030079302380,\t\n0.998077932762664100,\t0.998074832950830990,\t0.998071730643810830,\t0.998068625841611380,\t0.998065518544240300,\t0.998062408751705490,\t0.998059296464014590,\t0.998056181681175490,\t\n0.998053064403195970,\t0.998049944630083670,\t0.998046822361846610,\t0.998043697598492430,\t0.998040570340029130,\t0.998037440586464260,\t0.998034308337805930,\t0.998031173594061680,\t\n0.998028036355239620,\t0.998024896621347410,\t0.998021754392392930,\t0.998018609668384070,\t0.998015462449328820,\t0.998012312735234830,\t0.998009160526110000,\t0.998006005821962310,\t\n0.998002848622799530,\t0.997999688928629780,\t0.997996526739460710,\t0.997993362055300310,\t0.997990194876156590,\t0.997987025202037300,\t0.997983853032950560,\t0.997980678368904140,\t\n0.997977501209905920,\t0.997974321555963990,\t0.997971139407086370,\t0.997967954763280820,\t0.997964767624555330,\t0.997961577990918000,\t0.997958385862376730,\t0.997955191238939500,\t\n0.997951994120614190,\t0.997948794507409030,\t0.997945592399331780,\t0.997942387796390550,\t0.997939180698593440,\t0.997935971105948340,\t0.997932759018463340,\t0.997929544436146340,\t\n0.997926327359005550,\t0.997923107787048960,\t0.997919885720284560,\t0.997916661158720460,\t0.997913434102364770,\t0.997910204551225370,\t0.997906972505310570,\t0.997903737964628280,\t\n0.997900500929186700,\t0.997897261398993820,\t0.997894019374057750,\t0.997890774854386710,\t0.997887527839988690,\t0.997884278330871900,\t0.997881026327044340,\t0.997877771828514230,\t\n0.997874514835289770,\t0.997871255347378970,\t0.997867993364790040,\t0.997864728887531080,\t0.997861461915610310,\t0.997858192449035950,\t0.997854920487815990,\t0.997851646031958860,\t\n0.997848369081472560,\t0.997845089636365310,\t0.997841807696645430,\t0.997838523262320920,\t0.997835236333400210,\t0.997831946909891410,\t0.997828654991802620,\t0.997825360579142170,\t\n0.997822063671918500,\t0.997818764270139600,\t0.997815462373813690,\t0.997812157982949310,\t0.997808851097554350,\t0.997805541717637360,\t0.997802229843206430,\t0.997798915474270020,\t\n0.997795598610836330,\t0.997792279252913580,\t0.997788957400510210,\t0.997785633053634440,\t0.997782306212294470,\t0.997778976876498860,\t0.997775645046255710,\t0.997772310721573460,\t\n0.997768973902460550,\t0.997765634588925090,\t0.997762292780975610,\t0.997758948478620340,\t0.997755601681867830,\t0.997752252390726070,\t0.997748900605203830,\t0.997745546325309430,\t\n0.997742189551050980,\t0.997738830282437260,\t0.997735468519476370,\t0.997732104262176730,\t0.997728737510546800,\t0.997725368264595120,\t0.997721996524330020,\t0.997718622289759940,\t\n0.997715245560893300,\t0.997711866337738560,\t0.997708484620304150,\t0.997705100408598500,\t0.997701713702630060,\t0.997698324502407470,\t0.997694932807938970,\t0.997691538619233100,\t\n0.997688141936298510,\t0.997684742759143540,\t0.997681341087776620,\t0.997677936922206410,\t0.997674530262441240,\t0.997671121108489880,\t0.997667709460360760,\t0.997664295318062220,\t\n0.997660878681603020,\t0.997657459550991720,\t0.997654037926236640,\t0.997650613807346430,\t0.997647187194329770,\t0.997643758087195080,\t0.997640326485951130,\t0.997636892390606270,\t\n0.997633455801169130,\t0.997630016717648390,\t0.997626575140052710,\t0.997623131068390400,\t0.997619684502670360,\t0.997616235442901120,\t0.997612783889091360,\t0.997609329841249610,\t\n0.997605873299384440,\t0.997602414263504710,\t0.997598952733618760,\t0.997595488709735580,\t0.997592022191863710,\t0.997588553180011720,\t0.997585081674188360,\t0.997581607674402290,\t\n0.997578131180662190,\t0.997574652192976810,\t0.997571170711354700,\t0.997567686735804650,\t0.997564200266335520,\t0.997560711302955870,\t0.997557219845674360,\t0.997553725894499870,\t\n0.997550229449441050,\t0.997546730510506570,\t0.997543229077705320,\t0.997539725151046050,\t0.997536218730537440,\t0.997532709816188250,\t0.997529198408007360,\t0.997525684506003430,\t\n0.997522168110185240,\t0.997518649220561660,\t0.997515127837141470,\t0.997511603959933430,\t0.997508077588946440,\t0.997504548724189260,\t0.997501017365670760,\t0.997497483513399620,\t\n0.997493947167384820,\t0.997490408327635030,\t0.997486866994159340,\t0.997483323166966420,\t0.997479776846065260,\t0.997476228031464630,\t0.997472676723173410,\t0.997469122921200490,\t\n0.997465566625554740,\t0.997462007836245170,\t0.997458446553280530,\t0.997454882776669830,\t0.997451316506421830,\t0.997447747742545630,\t0.997444176485050020,\t0.997440602733943970,\t\n0.997437026489236380,\t0.997433447750936230,\t0.997429866519052410,\t0.997426282793594020,\t0.997422696574569940,\t0.997419107861989060,\t0.997415516655860480,\t0.997411922956193080,\t\n0.997408326762995730,\t0.997404728076277670,\t0.997401126896047870,\t0.997397523222315230,\t0.997393917055088730,\t0.997390308394377480,\t0.997386697240190360,\t0.997383083592536580,\t\n0.997379467451425030,\t0.997375848816864920,\t0.997372227688865130,\t0.997368604067434770,\t0.997364977952582830,\t0.997361349344318530,\t0.997357718242650850,\t0.997354084647588790,\t\n0.997350448559141680,\t0.997346809977318280,\t0.997343168902128040,\t0.997339525333579720,\t0.997335879271682660,\t0.997332230716445940,\t0.997328579667878580,\t0.997324926125989660,\t\n0.997321270090788640,\t0.997317611562284380,\t0.997313950540485990,\t0.997310287025402810,\t0.997306621017043930,\t0.997302952515418450,\t0.997299281520535600,\t0.997295608032404580,\t\n0.997291932051034500,\t0.997288253576434580,\t0.997284572608614140,\t0.997280889147582170,\t0.997277203193348010,\t0.997273514745920740,\t0.997269823805309710,\t0.997266130371524230,\t\n0.997262434444573410,\t0.997258736024466460,\t0.997255035111212720,\t0.997251331704821280,\t0.997247625805301570,\t0.997243917412662830,\t0.997240206526914250,\t0.997236493148065170,\t\n0.997232777276124920,\t0.997229058911102580,\t0.997225338053007730,\t0.997221614701849560,\t0.997217888857637290,\t0.997214160520380140,\t0.997210429690087770,\t0.997206696366769400,\t\n0.997202960550434110,\t0.997199222241091590,\t0.997195481438750920,\t0.997191738143421550,\t0.997187992355112800,\t0.997184244073834100,\t0.997180493299594790,\t0.997176740032404200,\t\n0.997172984272271860,\t0.997169226019206990,\t0.997165465273219140,\t0.997161702034317530,\t0.997157936302511590,\t0.997154168077810990,\t0.997150397360224930,\t0.997146624149762850,\t\n0.997142848446434190,\t0.997139070250248390,\t0.997135289561215000,\t0.997131506379343340,\t0.997127720704642840,\t0.997123932537123170,\t0.997120141876793540,\t0.997116348723663730,\t\n0.997112553077742940,\t0.997108754939040720,\t0.997104954307566740,\t0.997101151183330310,\t0.997097345566340890,\t0.997093537456608230,\t0.997089726854141660,\t0.997085913758950840,\t\n0.997082098171045320,\t0.997078280090434420,\t0.997074459517127810,\t0.997070636451135030,\t0.997066810892465740,\t0.997062982841129490,\t0.997059152297135710,\t0.997055319260493960,\t\n0.997051483731213990,\t0.997047645709305370,\t0.997043805194777530,\t0.997039962187640240,\t0.997036116687903040,\t0.997032268695575490,\t0.997028418210667340,\t0.997024565233188160,\t\n0.997020709763147490,\t0.997016851800555100,\t0.997012991345420540,\t0.997009128397753570,\t0.997005262957563750,\t0.997001395024860740,\t0.996997524599654290,\t0.996993651681953970,\t\n0.996989776271769660,\t0.996985898369110780,\t0.996982017973987110,\t0.996978135086408420,\t0.996974249706384490,\t0.996970361833924960,\t0.996966471469039380,\t0.996962578611737760,\t\n0.996958683262029630,\t0.996954785419924770,\t0.996950885085432950,\t0.996946982258563930,\t0.996943076939327490,\t0.996939169127733280,\t0.996935258823791190,\t0.996931346027510990,\t\n0.996927430738902440,\t0.996923512957975210,\t0.996919592684739180,\t0.996915669919204330,\t0.996911744661380220,\t0.996907816911276720,\t0.996903886668903730,\t0.996899953934271000,\t\n0.996896018707388420,\t0.996892080988265650,\t0.996888140776912790,\t0.996884198073339610,\t0.996880252877555990,\t0.996876305189571600,\t0.996872355009396530,\t0.996868402337040550,\t\n0.996864447172513550,\t0.996860489515825400,\t0.996856529366986100,\t0.996852566726005420,\t0.996848601592893350,\t0.996844633967659770,\t0.996840663850314670,\t0.996836691240867820,\t\n0.996832716139329220,\t0.996828738545708860,\t0.996824758460016720,\t0.996820775882262590,\t0.996816790812456670,\t0.996812803250608610,\t0.996808813196728650,\t0.996804820650826650,\t\n0.996800825612912500,\t0.996796828082996300,\t0.996792828061088150,\t0.996788825547197830,\t0.996784820541335550,\t0.996780813043511070,\t0.996776803053734730,\t0.996772790572016180,\t\n0.996768775598365740,\t0.996764758132793420,\t0.996760738175309190,\t0.996756715725923060,\t0.996752690784645230,\t0.996748663351485600,\t0.996744633426454360,\t0.996740601009561410,\t\n0.996736566100817070,\t0.996732528700231320,\t0.996728488807814280,\t0.996724446423575940,\t0.996720401547526500,\t0.996716354179676080,\t0.996712304320034770,\t0.996708251968612680,\t\n0.996704197125419910,\t0.996700139790466790,\t0.996696079963763190,\t0.996692017645319450,\t0.996687952835145660,\t0.996683885533252050,\t0.996679815739648590,\t0.996675743454345730,\t\n0.996671668677353460,\t0.996667591408682000,\t0.996663511648341550,\t0.996659429396342330,\t0.996655344652694560,\t0.996651257417408450,\t0.996647167690494110,\t0.996643075471961850,\t\n0.996638980761822000,\t0.996634883560084670,\t0.996630783866760180,\t0.996626681681858640,\t0.996622577005390480,\t0.996618469837365790,\t0.996614360177794920,\t0.996610248026688180,\t\n0.996606133384055790,\t0.996602016249908180,\t0.996597896624255460,\t0.996593774507107950,\t0.996589649898476090,\t0.996585522798369980,\t0.996581393206800170,\t0.996577261123776870,\t\n0.996573126549310410,\t0.996568989483411110,\t0.996564849926089400,\t0.996560707877355510,\t0.996556563337219870,\t0.996552416305692800,\t0.996548266782784630,\t0.996544114768505910,\t\n0.996539960262866840,\t0.996535803265877980,\t0.996531643777549440,\t0.996527481797891970,\t0.996523317326915570,\t0.996519150364631010,\t0.996514980911048620,\t0.996510808966178720,\t\n0.996506634530031850,\t0.996502457602618350,\t0.996498278183948650,\t0.996494096274033400,\t0.996489911872882720,\t0.996485724980507360,\t0.996481535596917770,\t0.996477343722124260,\t\n0.996473149356137400,\t0.996468952498967610,\t0.996464753150625550,\t0.996460551311121550,\t0.996456346980466150,\t0.996452140158669900,\t0.996447930845743230,\t0.996443719041696820,\t\n0.996439504746541190,\t0.996435287960286690,\t0.996431068682943950,\t0.996426846914523550,\t0.996422622655036120,\t0.996418395904491990,\t0.996414166662902060,\t0.996409934930276520,\t\n0.996405700706626260,\t0.996401463991961720,\t0.996397224786293560,\t0.996392983089632200,\t0.996388738901988540,\t0.996384492223373000,\t0.996380243053796240,\t0.996375991393268820,\t\n0.996371737241801500,\t0.996367480599404720,\t0.996363221466089240,\t0.996358959841865840,\t0.996354695726744950,\t0.996350429120737350,\t0.996346160023853680,\t0.996341888436104610,\t\n0.996337614357500790,\t0.996333337788053000,\t0.996329058727771670,\t0.996324777176667900,\t0.996320493134752130,\t0.996316206602035130,\t0.996311917578527550,\t0.996307626064240280,\t\n0.996303332059183980,\t0.996299035563369180,\t0.996294736576806890,\t0.996290435099507770,\t0.996286131131482570,\t0.996281824672741960,\t0.996277515723296920,\t0.996273204283158020,\t\n0.996268890352336120,\t0.996264573930841890,\t0.996260255018686310,\t0.996255933615880160,\t0.996251609722434090,\t0.996247283338358990,\t0.996242954463665730,\t0.996238623098365080,\t\n0.996234289242467930,\t0.996229952895984930,\t0.996225614058927070,\t0.996221272731305230,\t0.996216928913130180,\t0.996212582604412810,\t0.996208233805164100,\t0.996203882515394710,\t\n0.996199528735115520,\t0.996195172464337530,\t0.996190813703071720,\t0.996186452451328860,\t0.996182088709119840,\t0.996177722476455640,\t0.996173353753347040,\t0.996168982539805130,\t\n0.996164608835840680,\t0.996160232641464800,\t0.996155853956688260,\t0.996151472781522160,\t0.996147089115977380,\t0.996142702960064910,\t0.996138314313795630,\t0.996133923177180520,\t\n0.996129529550230600,\t0.996125133432956830,\t0.996120734825370340,\t0.996116333727481980,\t0.996111930139302770,\t0.996107524060843800,\t0.996103115492115940,\t0.996098704433130310,\t\n0.996094290883897890,\t0.996089874844429790,\t0.996085456314736990,\t0.996081035294830500,\t0.996076611784721510,\t0.996072185784421030,\t0.996067757293939930,\t0.996063326313289530,\t\n0.996058892842480730,\t0.996054456881524830,\t0.996050018430432730,\t0.996045577489215630,\t0.996041134057884530,\t0.996036688136450630,\t0.996032239724924940,\t0.996027788823318660,\t\n0.996023335431642900,\t0.996018879549908860,\t0.996014421178127660,\t0.996009960316310280,\t0.996005496964468160,\t0.996001031122612180,\t0.995996562790753550,\t0.995992091968903700,\t\n0.995987618657073530,\t0.995983142855274340,\t0.995978664563517250,\t0.995974183781813570,\t0.995969700510174420,\t0.995965214748610990,\t0.995960726497134410,\t0.995956235755756090,\t\n0.995951742524487260,\t0.995947246803339010,\t0.995942748592322680,\t0.995938247891449470,\t0.995933744700730710,\t0.995929239020177490,\t0.995924730849801150,\t0.995920220189613010,\t\n0.995915707039624400,\t0.995911191399846410,\t0.995906673270290480,\t0.995902152650967930,\t0.995897629541889980,\t0.995893103943067850,\t0.995888575854513070,\t0.995884045276236750,\t\n0.995879512208250440,\t0.995874976650565240,\t0.995870438603192690,\t0.995865898066144010,\t0.995861355039430630,\t0.995856809523063770,\t0.995852261517054860,\t0.995847711021415450,\t\n0.995843158036156640,\t0.995838602561289980,\t0.995834044596826900,\t0.995829484142778610,\t0.995824921199156550,\t0.995820355765972280,\t0.995815787843237100,\t0.995811217430962460,\t\n0.995806644529159790,\t0.995802069137840420,\t0.995797491257016000,\t0.995792910886697750,\t0.995788328026897210,\t0.995783742677625930,\t0.995779154838895340,\t0.995774564510716780,\t\n0.995769971693101770,\t0.995765376386062000,\t0.995760778589608650,\t0.995756178303753400,\t0.995751575528507570,\t0.995746970263882920,\t0.995742362509890900,\t0.995737752266542930,\t\n0.995733139533850560,\t0.995728524311825350,\t0.995723906600478830,\t0.995719286399822430,\t0.995714663709867940,\t0.995710038530626780,\t0.995705410862110620,\t0.995700780704330770,\t\n0.995696148057299110,\t0.995691512921026980,\t0.995686875295526130,\t0.995682235180808010,\t0.995677592576884260,\t0.995672947483766670,\t0.995668299901466660,\t0.995663649829995890,\t\n0.995658997269366020,\t0.995654342219588710,\t0.995649684680675500,\t0.995645024652637930,\t0.995640362135487900,\t0.995635697129237050,\t0.995631029633896940,\t0.995626359649479210,\t\n0.995621687175995530,\t0.995617012213457770,\t0.995612334761877270,\t0.995607654821266120,\t0.995602972391635750,\t0.995598287472997940,\t0.995593600065364570,\t0.995588910168747070,\t\n0.995584217783157310,\t0.995579522908606960,\t0.995574825545107790,\t0.995570125692671560,\t0.995565423351310150,\t0.995560718521035120,\t0.995556011201858220,\t0.995551301393791330,\t\n0.995546589096846240,\t0.995541874311034580,\t0.995537157036368360,\t0.995532437272859120,\t0.995527715020518840,\t0.995522990279359310,\t0.995518263049392280,\t0.995513533330629640,\t\n0.995508801123083150,\t0.995504066426764480,\t0.995499329241685830,\t0.995494589567858860,\t0.995489847405295340,\t0.995485102754007260,\t0.995480355614006380,\t0.995475605985304600,\t\n0.995470853867913900,\t0.995466099261845930,\t0.995461342167112790,\t0.995456582583726270,\t0.995451820511698340,\t0.995447055951040880,\t0.995442288901765670,\t0.995437519363884800,\t\n0.995432747337410160,\t0.995427972822353620,\t0.995423195818727180,\t0.995418416326542710,\t0.995413634345812200,\t0.995408849876547650,\t0.995404062918760930,\t0.995399273472464040,\t\n0.995394481537668960,\t0.995389687114387690,\t0.995384890202632320,\t0.995380090802414630,\t0.995375288913746710,\t0.995370484536640570,\t0.995365677671108170,\t0.995360868317161640,\t\n0.995356056474812840,\t0.995351242144074000,\t0.995346425324957100,\t0.995341606017474120,\t0.995336784221637070,\t0.995331959937458040,\t0.995327133164949140,\t0.995322303904122350,\t\n0.995317472154989890,\t0.995312637917563750,\t0.995307801191856020,\t0.995302961977878710,\t0.995298120275644130,\t0.995293276085164160,\t0.995288429406451010,\t0.995283580239516690,\t\n0.995278728584373500,\t0.995273874441033550,\t0.995269017809508830,\t0.995264158689811550,\t0.995259297081953930,\t0.995254432985948070,\t0.995249566401806060,\t0.995244697329540240,\t\n0.995239825769162590,\t0.995234951720685430,\t0.995230075184120880,\t0.995225196159481240,\t0.995220314646778510,\t0.995215430646025020,\t0.995210544157232760,\t0.995205655180414370,\t\n0.995200763715581750,\t0.995195869762747320,\t0.995190973321923080,\t0.995186074393121570,\t0.995181172976354780,\t0.995176269071635030,\t0.995171362678974550,\t0.995166453798385750,\t\n0.995161542429880860,\t0.995156628573472090,\t0.995151712229171760,\t0.995146793396992080,\t0.995141872076945490,\t0.995136948269044090,\t0.995132021973300420,\t0.995127093189726700,\t\n0.995122161918335250,\t0.995117228159138390,\t0.995112291912148450,\t0.995107353177377860,\t0.995102411954838730,\t0.995097468244543590,\t0.995092522046504890,\t0.995087573360734830,\t\n0.995082622187245860,\t0.995077668526050400,\t0.995072712377160660,\t0.995067753740589200,\t0.995062792616348220,\t0.995057829004450390,\t0.995052862904907910,\t0.995047894317733330,\t\n0.995042923242939080,\t0.995037949680537490,\t0.995032973630541000,\t0.995027995092962030,\t0.995023014067813020,\t0.995018030555106630,\t0.995013044554855060,\t0.995008056067070880,\t\n0.995003065091766610,\t0.994998071628954710,\t0.994993075678647590,\t0.994988077240857800,\t0.994983076315597680,\t0.994978072902880100,\t0.994973067002717150,\t0.994968058615121610,\t\n0.994963047740106020,\t0.994958034377682710,\t0.994953018527864330,\t0.994948000190663320,\t0.994942979366092330,\t0.994937956054163910,\t0.994932930254890710,\t0.994927901968285070,\t\n0.994922871194359740,\t0.994917837933127270,\t0.994912802184600100,\t0.994907763948790880,\t0.994902723225712380,\t0.994897680015377040,\t0.994892634317797510,\t0.994887586132986330,\t\n0.994882535460956290,\t0.994877482301719910,\t0.994872426655289740,\t0.994867368521678450,\t0.994862307900898800,\t0.994857244792963450,\t0.994852179197884930,\t0.994847111115675920,\t\n0.994842040546349280,\t0.994836967489917460,\t0.994831891946393100,\t0.994826813915789090,\t0.994821733398118080,\t0.994816650393392730,\t0.994811564901625810,\t0.994806476922829970,\t\n0.994801386457017880,\t0.994796293504202290,\t0.994791198064395980,\t0.994786100137611710,\t0.994780999723862140,\t0.994775896823160140,\t0.994770791435518390,\t0.994765683560949630,\t\n0.994760573199466760,\t0.994755460351082310,\t0.994750345015809280,\t0.994745227193660430,\t0.994740106884648420,\t0.994734984088786240,\t0.994729858806086550,\t0.994724731036562230,\t\n0.994719600780226030,\t0.994714468037090850,\t0.994709332807169440,\t0.994704195090474810,\t0.994699054887019710,\t0.994693912196816910,\t0.994688767019879410,\t0.994683619356219850,\t\n0.994678469205851350,\t0.994673316568786550,\t0.994668161445038560,\t0.994663003834620140,\t0.994657843737544290,\t0.994652681153823770,\t0.994647516083471570,\t0.994642348526500570,\t\n0.994637178482923660,\t0.994632005952753810,\t0.994626830936004010,\t0.994621653432687050,\t0.994616473442816010,\t0.994611290966403770,\t0.994606106003463330,\t0.994600918554007670,\t\n0.994595728618049570,\t0.994590536195602230,\t0.994585341286678530,\t0.994580143891291460,\t0.994574944009454120,\t0.994569741641179390,\t0.994564536786480270,\t0.994559329445369840,\t\n0.994554119617861000,\t0.994548907303966940,\t0.994543692503700560,\t0.994538475217075060,\t0.994533255444103310,\t0.994528033184798430,\t0.994522808439173400,\t0.994517581207241320,\t\n0.994512351489015400,\t0.994507119284508630,\t0.994501884593734010,\t0.994496647416704630,\t0.994491407753433700,\t0.994486165603934210,\t0.994480920968219380,\t0.994475673846302090,\t\n0.994470424238195760,\t0.994465172143913280,\t0.994459917563467970,\t0.994454660496872810,\t0.994449400944141030,\t0.994444138905285710,\t0.994438874380319970,\t0.994433607369257120,\t\n0.994428337872110270,\t0.994423065888892620,\t0.994417791419617280,\t0.994412514464297460,\t0.994407235022946260,\t0.994401953095577110,\t0.994396668682202890,\t0.994391381782837150,\t\n0.994386092397492980,\t0.994380800526183490,\t0.994375506168922010,\t0.994370209325721840,\t0.994364909996596100,\t0.994359608181558110,\t0.994354303880620960,\t0.994348997093798200,\t\n0.994343687821102940,\t0.994338376062548380,\t0.994333061818147960,\t0.994327745087914880,\t0.994322425871862480,\t0.994317104170003850,\t0.994311779982352540,\t0.994306453308921760,\t\n0.994301124149724940,\t0.994295792504775290,\t0.994290458374086140,\t0.994285121757670810,\t0.994279782655542730,\t0.994274441067715120,\t0.994269096994201410,\t0.994263750435015030,\t\n0.994258401390169190,\t0.994253049859677440,\t0.994247695843553100,\t0.994242339341809390,\t0.994236980354459950,\t0.994231618881517900,\t0.994226254922996880,\t0.994220888478910330,\t\n0.994215519549271450,\t0.994210148134093810,\t0.994204774233390820,\t0.994199397847175810,\t0.994194018975462330,\t0.994188637618263820,\t0.994183253775593690,\t0.994177867447465500,\t\n0.994172478633892580,\t0.994167087334888570,\t0.994161693550466800,\t0.994156297280640700,\t0.994150898525423820,\t0.994145497284829820,\t0.994140093558872010,\t0.994134687347564050,\t\n0.994129278650919380,\t0.994123867468951430,\t0.994118453801673850,\t0.994113037649100080,\t0.994107619011243780,\t0.994102197888118380,\t0.994096774279737530,\t0.994091348186114780,\t\n0.994085919607263560,\t0.994080488543197640,\t0.994075054993930450,\t0.994069618959475540,\t0.994064180439846680,\t0.994058739435057400,\t0.994053295945121260,\t0.994047849970051910,\t\n0.994042401509862890,\t0.994036950564567870,\t0.994031497134180490,\t0.994026041218714180,\t0.994020582818182950,\t0.994015121932600220,\t0.994009658561979760,\t0.994004192706335110,\t\n0.993998724365679930,\t0.993993253540027990,\t0.993987780229392830,\t0.993982304433788320,\t0.993976826153228020,\t0.993971345387725690,\t0.993965862137294990,\t0.993960376401949670,\t\n0.993954888181703300,\t0.993949397476569850,\t0.993943904286562650,\t0.993938408611695910,\t0.993932910451983060,\t0.993927409807437990,\t0.993921906678074450,\t0.993916401063906110,\t\n0.993910892964946720,\t0.993905382381210070,\t0.993899869312709900,\t0.993894353759460230,\t0.993888835721474570,\t0.993883315198766940,\t0.993877792191350860,\t0.993872266699240450,\t\n0.993866738722449240,\t0.993861208260991220,\t0.993855675314880170,\t0.993850139884130070,\t0.993844601968754460,\t0.993839061568767450,\t0.993833518684182790,\t0.993827973315014270,\t\n0.993822425461275860,\t0.993816875122981220,\t0.993811322300144570,\t0.993805766992779560,\t0.993800209200900180,\t0.993794648924520300,\t0.993789086163653690,\t0.993783520918314460,\t\n0.993777953188516250,\t0.993772382974273390,\t0.993766810275599430,\t0.993761235092508580,\t0.993755657425014480,\t0.993750077273131360,\t0.993744494636872980,\t0.993738909516253430,\t\n0.993733321911286490,\t0.993727731821986370,\t0.993722139248366830,\t0.993716544190441970,\t0.993710946648225790,\t0.993705346621732270,\t0.993699744110975280,\t0.993694139115969040,\t\n0.993688531636727320,\t0.993682921673264330,\t0.993677309225594050,\t0.993671694293730480,\t0.993666076877687710,\t0.993660456977479730,\t0.993654834593120650,\t0.993649209724624340,\t\n0.993643582372005120,\t0.993637952535276980,\t0.993632320214453910,\t0.993626685409550010,\t0.993621048120579500,\t0.993615408347556350,\t0.993609766090494560,\t0.993604121349408340,\t\n0.993598474124311900,\t0.993592824415219340,\t0.993587172222144650,\t0.993581517545102040,\t0.993575860384105610,\t0.993570200739169570,\t0.993564538610307910,\t0.993558873997535060,\t\n0.993553206900865020,\t0.993547537320311870,\t0.993541865255889940,\t0.993536190707613340,\t0.993530513675496270,\t0.993524834159552950,\t0.993519152159797360,\t0.993513467676244040,\t\n0.993507780708907110,\t0.993502091257800650,\t0.993496399322938980,\t0.993490704904336330,\t0.993485008002006900,\t0.993479308615964900,\t0.993473606746224540,\t0.993467902392800360,\t\n0.993462195555706360,\t0.993456486234956860,\t0.993450774430566170,\t0.993445060142548520,\t0.993439343370918220,\t0.993433624115689470,\t0.993427902376876840,\t0.993422178154494410,\t\n0.993416451448556500,\t0.993410722259077450,\t0.993404990586071570,\t0.993399256429553290,\t0.993393519789536830,\t0.993387780666036500,\t0.993382039059066750,\t0.993376294968641990,\t\n0.993370548394776450,\t0.993364799337484560,\t0.993359047796780640,\t0.993353293772679110,\t0.993347537265194420,\t0.993341778274340670,\t0.993336016800132620,\t0.993330252842584580,\t\n0.993324486401710780,\t0.993318717477525870,\t0.993312946070044170,\t0.993307172179280110,\t0.993301395805248010,\t0.993295616947962420,\t0.993289835607437890,\t0.993284051783688730,\t\n0.993278265476729480,\t0.993272476686574590,\t0.993266685413238480,\t0.993260891656735590,\t0.993255095417080460,\t0.993249296694287630,\t0.993243495488371650,\t0.993237691799346840,\t\n0.993231885627227860,\t0.993226076972029140,\t0.993220265833765210,\t0.993214452212450530,\t0.993208636108099730,\t0.993202817520727480,\t0.993196996450348090,\t0.993191172896976340,\t\n0.993185346860626540,\t0.993179518341313460,\t0.993173687339051540,\t0.993167853853855200,\t0.993162017885739430,\t0.993156179434718680,\t0.993150338500807360,\t0.993144495084020250,\t\n0.993138649184371890,\t0.993132800801876940,\t0.993126949936549930,\t0.993121096588405530,\t0.993115240757458380,\t0.993109382443723150,\t0.993103521647214490,\t0.993097658367947060,\t\n0.993091792605935500,\t0.993085924361194360,\t0.993080053633738410,\t0.993074180423582420,\t0.993068304730740930,\t0.993062426555228690,\t0.993056545897060380,\t0.993050662756250760,\t\n0.993044777132814360,\t0.993038889026766180,\t0.993032998438120540,\t0.993027105366892540,\t0.993021209813096830,\t0.993015311776748070,\t0.993009411257861020,\t0.993003508256450450,\t\n0.992997602772531020,\t0.992991694806117710,\t0.992985784357225070,\t0.992979871425867970,\t0.992973956012061290,\t0.992968038115819680,\t0.992962117737157920,\t0.992956194876090880,\t\n0.992950269532633430,\t0.992944341706800130,\t0.992938411398606170,\t0.992932478608066100,\t0.992926543335194810,\t0.992920605580007280,\t0.992914665342518150,\t0.992908722622742320,\t\n0.992902777420694770,\t0.992896829736390150,\t0.992890879569843570,\t0.992884926921069780,\t0.992878971790083660,\t0.992873014176900100,\t0.992867054081533970,\t0.992861091504000260,\t\n0.992855126444313730,\t0.992849158902489480,\t0.992843188878542280,\t0.992837216372487230,\t0.992831241384339090,\t0.992825263914112740,\t0.992819283961823280,\t0.992813301527485700,\t\n0.992807316611114650,\t0.992801329212725570,\t0.992795339332332990,\t0.992789346969952140,\t0.992783352125597980,\t0.992777354799285310,\t0.992771354991029310,\t0.992765352700844980,\t\n0.992759347928747090,\t0.992753340674750960,\t0.992747330938871570,\t0.992741318721123700,\t0.992735304021522660,\t0.992729286840083320,\t0.992723267176820690,\t0.992717245031749850,\t\n0.992711220404886020,\t0.992705193296244070,\t0.992699163705839220,\t0.992693131633686440,\t0.992687097079800850,\t0.992681060044197430,\t0.992675020526891380,\t0.992668978527897710,\t\n0.992662934047231720,\t0.992656887084908400,\t0.992650837640942860,\t0.992644785715350200,\t0.992638731308145510,\t0.992632674419344110,\t0.992626615048960990,\t0.992620553197011150,\t\n0.992614488863510110,\t0.992608422048472880,\t0.992602352751914550,\t0.992596280973850330,\t0.992590206714295430,\t0.992584129973264950,\t0.992578050750774100,\t0.992571969046838200,\t\n0.992565884861472460,\t0.992559798194691870,\t0.992553709046511860,\t0.992547617416947640,\t0.992541523306014310,\t0.992535426713727190,\t0.992529327640101380,\t0.992523226085152310,\t\n0.992517122048895310,\t0.992511015531345350,\t0.992504906532517990,\t0.992498795052428220,\t0.992492681091091570,\t0.992486564648523140,\t0.992480445724738260,\t0.992474324319752350,\t\n0.992468200433580640,\t0.992462074066238430,\t0.992455945217741050,\t0.992449813888103830,\t0.992443680077341960,\t0.992437543785470890,\t0.992431405012506040,\t0.992425263758462740,\t\n0.992419120023356190,\t0.992412973807201840,\t0.992406825110015100,\t0.992400673931811310,\t0.992394520272605770,\t0.992388364132413820,\t0.992382205511251110,\t0.992376044409132850,\t\n0.992369880826074580,\t0.992363714762091510,\t0.992357546217199180,\t0.992351375191413030,\t0.992345201684748270,\t0.992339025697220660,\t0.992332847228845400,\t0.992326666279638060,\t\n0.992320482849614160,\t0.992314296938788920,\t0.992308108547177990,\t0.992301917674796810,\t0.992295724321660690,\t0.992289528487785400,\t0.992283330173186260,\t0.992277129377878820,\t\n0.992270926101878500,\t0.992264720345200970,\t0.992258512107861530,\t0.992252301389875860,\t0.992246088191259370,\t0.992239872512027720,\t0.992233654352196460,\t0.992227433711781020,\t\n0.992221210590796930,\t0.992214984989259860,\t0.992208756907185350,\t0.992202526344588830,\t0.992196293301486070,\t0.992190057777892600,\t0.992183819773823970,\t0.992177579289295840,\t\n0.992171336324323750,\t0.992165090878923240,\t0.992158842953110080,\t0.992152592546899690,\t0.992146339660307960,\t0.992140084293350320,\t0.992133826446042530,\t0.992127566118400140,\t\n0.992121303310438800,\t0.992115038022174270,\t0.992108770253621990,\t0.992102500004797940,\t0.992096227275717560,\t0.992089952066396720,\t0.992083674376850970,\t0.992077394207095950,\t\n0.992071111557147560,\t0.992064826427021320,\t0.992058538816732890,\t0.992052248726298270,\t0.992045956155732990,\t0.992039661105052820,\t0.992033363574273520,\t0.992027063563410860,\t\n0.992020761072480490,\t0.992014456101498190,\t0.992008148650479700,\t0.992001838719440920,\t0.991995526308397490,\t0.991989211417365290,\t0.991982894046360090,\t0.991976574195397640,\t\n0.991970251864493720,\t0.991963927053664100,\t0.991957599762924750,\t0.991951269992291440,\t0.991944937741779940,\t0.991938603011406130,\t0.991932265801185760,\t0.991925926111134730,\t\n0.991919583941268890,\t0.991913239291604020,\t0.991906892162156110,\t0.991900542552940910,\t0.991894190463974420,\t0.991887835895272520,\t0.991881478846850960,\t0.991875119318725740,\t\n0.991868757310912730,\t0.991862392823427590,\t0.991856025856286740,\t0.991849656409505730,\t0.991843284483100660,\t0.991836910077087300,\t0.991830533191481730,\t0.991824153826299740,\t\n0.991817771981557290,\t0.991811387657270620,\t0.991805000853455350,\t0.991798611570127610,\t0.991792219807303370,\t0.991785825564998610,\t0.991779428843229230,\t0.991773029642011310,\t\n0.991766627961360610,\t0.991760223801293580,\t0.991753817161825980,\t0.991747408042973790,\t0.991740996444753110,\t0.991734582367179930,\t0.991728165810270230,\t0.991721746774040120,\t\n0.991715325258505700,\t0.991708901263682940,\t0.991702474789587950,\t0.991696045836236720,\t0.991689614403645450,\t0.991683180491830130,\t0.991676744100806860,\t0.991670305230591630,\t\n0.991663863881200760,\t0.991657420052650120,\t0.991650973744956030,\t0.991644524958134490,\t0.991638073692201690,\t0.991631619947173640,\t0.991625163723066530,\t0.991618705019896460,\t\n0.991612243837679650,\t0.991605780176432310,\t0.991599314036170520,\t0.991592845416910400,\t0.991586374318668140,\t0.991579900741460070,\t0.991573424685302070,\t0.991566946150210570,\t\n0.991560465136201770,\t0.991553981643291780,\t0.991547495671496800,\t0.991541007220833160,\t0.991534516291316950,\t0.991528022882964490,\t0.991521526995791770,\t0.991515028629815440,\t\n0.991508527785051500,\t0.991502024461516250,\t0.991495518659225920,\t0.991489010378196810,\t0.991482499618445150,\t0.991475986379987240,\t0.991469470662839300,\t0.991462952467017880,\t\n0.991456431792538950,\t0.991449908639418950,\t0.991443383007674210,\t0.991436854897320920,\t0.991430324308375630,\t0.991423791240854340,\t0.991417255694773680,\t0.991410717670149990,\t\n0.991404177166999360,\t0.991397634185338330,\t0.991391088725183220,\t0.991384540786550470,\t0.991377990369456290,\t0.991371437473916980,\t0.991364882099949330,\t0.991358324247569310,\t\n0.991351763916793580,\t0.991345201107638460,\t0.991338635820120270,\t0.991332068054255560,\t0.991325497810060520,\t0.991318925087551820,\t0.991312349886745880,\t0.991305772207659030,\t\n0.991299192050307700,\t0.991292609414708430,\t0.991286024300877640,\t0.991279436708831780,\t0.991272846638587280,\t0.991266254090160670,\t0.991259659063568500,\t0.991253061558827200,\t\n0.991246461575953200,\t0.991239859114963040,\t0.991233254175873270,\t0.991226646758700310,\t0.991220036863460720,\t0.991213424490171020,\t0.991206809638847890,\t0.991200192309507620,\t\n0.991193572502167000,\t0.991186950216842330,\t0.991180325453550280,\t0.991173698212307390,\t0.991167068493130300,\t0.991160436296035560,\t0.991153801621039830,\t0.991147164468159430,\t\n0.991140524837411220,\t0.991133882728811640,\t0.991127238142377460,\t0.991120591078125000,\t0.991113941536071130,\t0.991107289516232500,\t0.991100635018625550,\t0.991093978043267040,\t\n0.991087318590173630,\t0.991080656659361960,\t0.991073992250848470,\t0.991067325364650030,\t0.991060656000783410,\t0.991053984159265160,\t0.991047309840111800,\t0.991040633043340340,\t\n0.991033953768967190,\t0.991027272017009240,\t0.991020587787482920,\t0.991013901080405210,\t0.991007211895792880,\t0.991000520233662360,\t0.990993826094030640,\t0.990987129476914360,\t\n0.990980430382330300,\t0.990973728810295110,\t0.990967024760825430,\t0.990960318233938380,\t0.990953609229650480,\t0.990946897747978620,\t0.990940183788939440,\t0.990933467352549830,\t\n0.990926748438826550,\t0.990920027047786370,\t0.990913303179446150,\t0.990906576833822660,\t0.990899848010932780,\t0.990893116710793280,\t0.990886382933420910,\t0.990879646678832660,\t\n0.990872907947045300,\t0.990866166738075480,\t0.990859423051940410,\t0.990852676888656750,\t0.990845928248241470,\t0.990839177130711350,\t0.990832423536083250,\t0.990825667464374060,\t\n0.990818908915600760,\t0.990812147889780110,\t0.990805384386929110,\t0.990798618407064740,\t0.990791849950203750,\t0.990785079016363150,\t0.990778305605559910,\t0.990771529717810790,\t\n0.990764751353132910,\t0.990757970511543130,\t0.990751187193058440,\t0.990744401397695820,\t0.990737613125472150,\t0.990730822376404530,\t0.990724029150509720,\t0.990717233447804930,\t\n0.990710435268306930,\t0.990703634612033040,\t0.990696831478999900,\t0.990690025869224830,\t0.990683217782724610,\t0.990676407219516330,\t0.990669594179617090,\t0.990662778663043750,\t\n0.990655960669813540,\t0.990649140199943430,\t0.990642317253450530,\t0.990635491830351820,\t0.990628663930664290,\t0.990621833554405140,\t0.990615000701591470,\t0.990608165372240170,\t\n0.990601327566368540,\t0.990594487283993570,\t0.990587644525132480,\t0.990580799289802140,\t0.990573951578019860,\t0.990567101389802750,\t0.990560248725167900,\t0.990553393584132190,\t\n0.990546535966713270,\t0.990539675872927900,\t0.990532813302793300,\t0.990525948256326780,\t0.990519080733545330,\t0.990512210734466160,\t0.990505338259106470,\t0.990498463307483480,\t\n0.990491585879614280,\t0.990484705975516190,\t0.990477823595206200,\t0.990470938738701840,\t0.990464051406020010,\t0.990457161597178120,\t0.990450269312193150,\t0.990443374551082670,\t\n0.990436477313863640,\t0.990429577600553500,\t0.990422675411169460,\t0.990415770745728730,\t0.990408863604248510,\t0.990401953986746130,\t0.990395041893238790,\t0.990388127323744040,\t\n0.990381210278278860,\t0.990374290756860680,\t0.990367368759506710,\t0.990360444286234380,\t0.990353517337061010,\t0.990346587912003700,\t0.990339656011079980,\t0.990332721634307080,\t\n0.990325784781702410,\t0.990318845453283410,\t0.990311903649067180,\t0.990304959369071150,\t0.990298012613312850,\t0.990291063381809280,\t0.990284111674578190,\t0.990277157491636920,\t\n0.990270200833002660,\t0.990263241698692950,\t0.990256280088725130,\t0.990249316003116500,\t0.990242349441884610,\t0.990235380405046880,\t0.990228408892620760,\t0.990221434904623550,\t\n0.990214458441072810,\t0.990207479501985840,\t0.990200498087380310,\t0.990193514197273420,\t0.990186527831682710,\t0.990179538990625720,\t0.990172547674119890,\t0.990165553882182750,\t\n0.990158557614831740,\t0.990151558872084280,\t0.990144557653957920,\t0.990137553960470210,\t0.990130547791638450,\t0.990123539147480410,\t0.990116528028013640,\t0.990109514433255460,\t\n0.990102498363223500,\t0.990095479817935330,\t0.990088458797408480,\t0.990081435301660260,\t0.990074409330708670,\t0.990067380884571020,\t0.990060349963264970,\t0.990053316566807950,\t\n0.990046280695217720,\t0.990039242348511710,\t0.990032201526707680,\t0.990025158229822950,\t0.990018112457875520,\t0.990011064210882810,\t0.990004013488862360,\t0.989996960291831930,\t\n0.989989904619809070,\t0.989982846472811540,\t0.989975785850856770,\t0.989968722753962530,\t0.989961657182146460,\t0.989954589135426330,\t0.989947518613819800,\t0.989940445617344400,\t\n0.989933370146017900,\t0.989926292199857950,\t0.989919211778882090,\t0.989912128883108420,\t0.989905043512554370,\t0.989897955667237820,\t0.989890865347176300,\t0.989883772552387580,\t\n0.989876677282889530,\t0.989869579538699700,\t0.989862479319835840,\t0.989855376626315840,\t0.989848271458157460,\t0.989841163815378460,\t0.989834053697996490,\t0.989826941106029310,\t\n0.989819826039494920,\t0.989812708498410740,\t0.989805588482794980,\t0.989798465992665190,\t0.989791341028039230,\t0.989784213588934980,\t0.989777083675370210,\t0.989769951287362670,\t\n0.989762816424930250,\t0.989755679088090700,\t0.989748539276862020,\t0.989741396991262070,\t0.989734252231308620,\t0.989727104997019440,\t0.989719955288412610,\t0.989712803105505800,\t\n0.989705648448317100,\t0.989698491316864050,\t0.989691331711164970,\t0.989684169631237510,\t0.989677005077099660,\t0.989669838048769290,\t0.989662668546264280,\t0.989655496569602610,\t\n0.989648322118802160,\t0.989641145193880910,\t0.989633965794856850,\t0.989626783921747850,\t0.989619599574572020,\t0.989612412753347100,\t0.989605223458091100,\t0.989598031688822100,\t\n0.989590837445557870,\t0.989583640728316730,\t0.989576441537116440,\t0.989569239871974980,\t0.989562035732910570,\t0.989554829119940970,\t0.989547620033084270,\t0.989540408472358470,\t\n0.989533194437781760,\t0.989525977929372020,\t0.989518758947147360,\t0.989511537491125860,\t0.989504313561325400,\t0.989497087157764300,\t0.989489858280460430,\t0.989482626929431670,\t\n0.989475393104696680,\t0.989468156806273090,\t0.989460918034179020,\t0.989453676788432770,\t0.989446433069052330,\t0.989439186876055810,\t0.989431938209461290,\t0.989424687069286770,\t\n0.989417433455550670,\t0.989410177368271080,\t0.989402918807466000,\t0.989395657773153530,\t0.989388394265351970,\t0.989381128284079540,\t0.989373859829354000,\t0.989366588901194000,\t\n0.989359315499617530,\t0.989352039624642800,\t0.989344761276287900,\t0.989337480454571150,\t0.989330197159510760,\t0.989322911391124830,\t0.989315623149431440,\t0.989308332434449160,\t\n0.989301039246196060,\t0.989293743584690350,\t0.989286445449950260,\t0.989279144841994080,\t0.989271841760840040,\t0.989264536206506340,\t0.989257228179011290,\t0.989249917678373230,\t\n0.989242604704610340,\t0.989235289257740960,\t0.989227971337783400,\t0.989220650944755860,\t0.989213328078676790,\t0.989206002739564160,\t0.989198674927436630,\t0.989191344642312510,\t\n0.989184011884210010,\t0.989176676653147460,\t0.989169338949143270,\t0.989161998772215670,\t0.989154656122383070,\t0.989147310999663690,\t0.989139963404076280,\t0.989132613335638840,\t\n0.989125260794369910,\t0.989117905780287800,\t0.989110548293410940,\t0.989103188333757770,\t0.989095825901346370,\t0.989088460996195630,\t0.989081093618323750,\t0.989073723767749050,\t\n0.989066351444490180,\t0.989058976648565350,\t0.989051599379993100,\t0.989044219638791740,\t0.989036837424979830,\t0.989029452738575900,\t0.989022065579598380,\t0.989014675948065690,\t\n0.989007283843996280,\t0.988999889267408670,\t0.988992492218321310,\t0.988985092696752830,\t0.988977690702721350,\t0.988970286236245830,\t0.988962879297344610,\t0.988955469886036220,\t\n0.988948058002339090,\t0.988940643646271880,\t0.988933226817853010,\t0.988925807517101020,\t0.988918385744034570,\t0.988910961498672080,\t0.988903534781032320,\t0.988896105591133720,\t\n0.988888673928994820,\t0.988881239794634160,\t0.988873803188070500,\t0.988866364109322160,\t0.988858922558408130,\t0.988851478535346610,\t0.988844032040156580,\t0.988836583072856380,\t\n0.988829131633464750,\t0.988821677722000250,\t0.988814221338481620,\t0.988806762482927200,\t0.988799301155356080,\t0.988791837355786680,\t0.988784371084237780,\t0.988776902340727900,\t\n0.988769431125275710,\t0.988761957437899960,\t0.988754481278619200,\t0.988747002647452410,\t0.988739521544418020,\t0.988732037969534900,\t0.988724551922821710,\t0.988717063404297100,\t\n0.988709572413979830,\t0.988702078951888660,\t0.988694583018042140,\t0.988687084612459240,\t0.988679583735158740,\t0.988672080386159170,\t0.988664574565479400,\t0.988657066273138320,\t\n0.988649555509154450,\t0.988642042273546680,\t0.988634526566333770,\t0.988627008387534700,\t0.988619487737168010,\t0.988611964615252690,\t0.988604439021807390,\t0.988596910956850980,\t\n0.988589380420402340,\t0.988581847412480120,\t0.988574311933103410,\t0.988566773982290870,\t0.988559233560061480,\t0.988551690666433890,\t0.988544145301427200,\t0.988536597465060060,\t\n0.988529047157351460,\t0.988521494378320150,\t0.988513939127985130,\t0.988506381406365380,\t0.988498821213479540,\t0.988491258549346830,\t0.988483693413985790,\t0.988476125807415620,\t\n0.988468555729654970,\t0.988460983180723060,\t0.988453408160638760,\t0.988445830669420930,\t0.988438250707088460,\t0.988430668273660440,\t0.988423083369155630,\t0.988415495993593240,\t\n0.988407906146991920,\t0.988400313829370880,\t0.988392719040749210,\t0.988385121781145680,\t0.988377522050579270,\t0.988369919849069190,\t0.988362315176634200,\t0.988354708033293510,\t\n0.988347098419065870,\t0.988339486333970620,\t0.988331871778026620,\t0.988324254751253070,\t0.988316635253668750,\t0.988309013285292860,\t0.988301388846144490,\t0.988293761936242520,\t\n0.988286132555606270,\t0.988278500704254600,\t0.988270866382206740,\t0.988263229589481760,\t0.988255590326098670,\t0.988247948592076540,\t0.988240304387434710,\t0.988232657712191820,\t\n0.988225008566367520,\t0.988217356949980590,\t0.988209702863050320,\t0.988202046305595830,\t0.988194387277636200,\t0.988186725779190640,\t0.988179061810278040,\t0.988171395370918030,\t\n0.988163726461129490,\t0.988156055080931630,\t0.988148381230343650,\t0.988140704909384660,\t0.988133026118073960,\t0.988125344856430670,\t0.988117661124473860,\t0.988109974922223080,\t\n0.988102286249697310,\t0.988094595106915890,\t0.988086901493898000,\t0.988079205410662740,\t0.988071506857229550,\t0.988063805833617640,\t0.988056102339845980,\t0.988048396375934220,\t\n0.988040687941901470,\t0.988032977037767050,\t0.988025263663550150,\t0.988017547819270090,\t0.988009829504946200,\t0.988002108720597570,\t0.987994385466243850,\t0.987986659741904140,\t\n0.987978931547597750,\t0.987971200883344000,\t0.987963467749162330,\t0.987955732145071930,\t0.987947994071092240,\t0.987940253527242460,\t0.987932510513542140,\t0.987924765030010480,\t\n0.987917017076667010,\t0.987909266653530960,\t0.987901513760621740,\t0.987893758397958680,\t0.987886000565561310,\t0.987878240263448840,\t0.987870477491640810,\t0.987862712250156650,\t\n0.987854944539015680,\t0.987847174358237320,\t0.987839401707841010,\t0.987831626587846290,\t0.987823848998272360,\t0.987816068939138870,\t0.987808286410465250,\t0.987800501412270830,\t\n0.987792713944575240,\t0.987784924007397920,\t0.987777131600758200,\t0.987769336724675710,\t0.987761539379169660,\t0.987753739564259940,\t0.987745937279965960,\t0.987738132526307040,\t\n0.987730325303302740,\t0.987722515610972680,\t0.987714703449336430,\t0.987706888818413180,\t0.987699071718222910,\t0.987691252148784840,\t0.987683430110118720,\t0.987675605602244100,\t\n0.987667778625180290,\t0.987659949178947170,\t0.987652117263564170,\t0.987644282879050710,\t0.987636446025426660,\t0.987628606702711580,\t0.987620764910924880,\t0.987612920650086320,\t\n0.987605073920215460,\t0.987597224721331820,\t0.987589373053455290,\t0.987581518916605060,\t0.987573662310801240,\t0.987565803236063240,\t0.987557941692410730,\t0.987550077679863360,\t\n0.987542211198440770,\t0.987534342248162720,\t0.987526470829048650,\t0.987518596941118540,\t0.987510720584391930,\t0.987502841758888470,\t0.987494960464628040,\t0.987487076701630050,\t\n0.987479190469914500,\t0.987471301769500930,\t0.987463410600408990,\t0.987455516962658540,\t0.987447620856269470,\t0.987439722281261200,\t0.987431821237653720,\t0.987423917725466670,\t\n0.987416011744719820,\t0.987408103295432830,\t0.987400192377625660,\t0.987392278991317980,\t0.987384363136529660,\t0.987376444813280460,\t0.987368524021590140,\t0.987360600761478470,\t\n0.987352675032965310,\t0.987344746836070320,\t0.987336816170813700,\t0.987328883037214890,\t0.987320947435293970,\t0.987313009365070720,\t0.987305068826564880,\t0.987297125819796340,\t\n0.987289180344784970,\t0.987281232401550520,\t0.987273281990113220,\t0.987265329110492700,\t0.987257373762708830,\t0.987249415946781510,\t0.987241455662730580,\t0.987233492910576160,\t\n0.987225527690337780,\t0.987217560002035750,\t0.987209589845689740,\t0.987201617221319830,\t0.987193642128945890,\t0.987185664568587810,\t0.987177684540265550,\t0.987169702043999120,\t\n0.987161717079808270,\t0.987153729647713310,\t0.987145739747734010,\t0.987137747379890350,\t0.987129752544202320,\t0.987121755240689900,\t0.987113755469373190,\t0.987105753230271940,\t\n0.987097748523406260,\t0.987089741348796350,\t0.987081731706462070,\t0.987073719596423430,\t0.987065705018700500,\t0.987057687973313280,\t0.987049668460281970,\t0.987041646479626220,\t\n0.987033622031366580,\t0.987025595115522790,\t0.987017565732115080,\t0.987009533881163410,\t0.987001499562688010,\t0.986993462776708740,\t0.986985423523245920,\t0.986977381802319310,\t\n0.986969337613949450,\t0.986961290958156210,\t0.986953241834959690,\t0.986945190244380210,\t0.986937136186437640,\t0.986929079661152290,\t0.986921020668544040,\t0.986912959208633420,\t\n0.986904895281440320,\t0.986896828886985160,\t0.986888760025287800,\t0.986880688696368580,\t0.986872614900247580,\t0.986864538636945120,\t0.986856459906481080,\t0.986848378708876100,\t\n0.986840295044150160,\t0.986832208912323480,\t0.986824120313416380,\t0.986816029247448820,\t0.986807935714441250,\t0.986799839714413870,\t0.986791741247386670,\t0.986783640313380390,\t\n0.986775536912414930,\t0.986767431044510590,\t0.986759322709687690,\t0.986751211907966550,\t0.986743098639367380,\t0.986734982903910260,\t0.986726864701615860,\t0.986718744032504260,\t\n0.986710620896595780,\t0.986702495293910850,\t0.986694367224469570,\t0.986686236688292470,\t0.986678103685399770,\t0.986669968215811540,\t0.986661830279548680,\t0.986653689876631160,\t\n0.986645547007079520,\t0.986637401670913960,\t0.986629253868154810,\t0.986621103598822600,\t0.986612950862937650,\t0.986604795660520170,\t0.986596637991590810,\t0.986588477856169880,\t\n0.986580315254277700,\t0.986572150185934800,\t0.986563982651161520,\t0.986555812649978270,\t0.986547640182405370,\t0.986539465248463480,\t0.986531287848172900,\t0.986523107981554180,\t\n0.986514925648627640,\t0.986506740849413810,\t0.986498553583933120,\t0.986490363852206010,\t0.986482171654252890,\t0.986473976990094540,\t0.986465779859751150,\t0.986457580263243370,\t\n0.986449378200591640,\t0.986441173671816380,\t0.986432966676938250,\t0.986424757215977550,\t0.986416545288955060,\t0.986408330895891310,\t0.986400114036806720,\t0.986391894711721730,\t\n0.986383672920657100,\t0.986375448663633250,\t0.986367221940670840,\t0.986358992751790180,\t0.986350761097012140,\t0.986342526976357270,\t0.986334290389846100,\t0.986326051337499180,\t\n0.986317809819337030,\t0.986309565835380430,\t0.986301319385650020,\t0.986293070470166010,\t0.986284819088949490,\t0.986276565242021010,\t0.986268308929401090,\t0.986260050151110400,\t\n0.986251788907169580,\t0.986243525197599280,\t0.986235259022419930,\t0.986226990381652730,\t0.986218719275318010,\t0.986210445703436410,\t0.986202169666028810,\t0.986193891163115730,\t\n0.986185610194717950,\t0.986177326760856120,\t0.986169040861550770,\t0.986160752496823000,\t0.986152461666693460,\t0.986144168371182680,\t0.986135872610311440,\t0.986127574384100590,\t\n0.986119273692570800,\t0.986110970535742700,\t0.986102664913637180,\t0.986094356826275110,\t0.986086046273677130,\t0.986077733255864010,\t0.986069417772856620,\t0.986061099824675600,\t\n0.986052779411341840,\t0.986044456532876090,\t0.986036131189299230,\t0.986027803380632120,\t0.986019473106895530,\t0.986011140368110220,\t0.986002805164296950,\t0.985994467495476810,\t\n0.985986127361670460,\t0.985977784762898660,\t0.985969439699182490,\t0.985961092170542730,\t0.985952742177000240,\t0.985944389718576010,\t0.985936034795290680,\t0.985927677407165250,\t\n0.985919317554220580,\t0.985910955236477650,\t0.985902590453957450,\t0.985894223206680740,\t0.985885853494668400,\t0.985877481317941510,\t0.985869106676520830,\t0.985860729570427470,\t\n0.985852349999682190,\t0.985843967964306070,\t0.985835583464319990,\t0.985827196499745040,\t0.985818807070602100,\t0.985810415176912150,\t0.985802020818696170,\t0.985793623995975030,\t\n0.985785224708769840,\t0.985776822957101670,\t0.985768418740991410,\t0.985760012060460040,\t0.985751602915528770,\t0.985743191306218460,\t0.985734777232550210,\t0.985726360694544780,\t\n0.985717941692223600,\t0.985709520225607650,\t0.985701096294717800,\t0.985692669899575270,\t0.985684241040201140,\t0.985675809716616280,\t0.985667375928841900,\t0.985658939676898990,\t\n0.985650500960808860,\t0.985642059780592490,\t0.985633616136270980,\t0.985625170027865430,\t0.985616721455396920,\t0.985608270418886660,\t0.985599816918355630,\t0.985591360953824940,\t\n0.985582902525316110,\t0.985574441632849910,\t0.985565978276447650,\t0.985557512456130440,\t0.985549044171919460,\t0.985540573423835830,\t0.985532100211900630,\t0.985523624536135290,\t\n0.985515146396561010,\t0.985506665793198790,\t0.985498182726069930,\t0.985489697195195520,\t0.985481209200597010,\t0.985472718742295360,\t0.985464225820311790,\t0.985455730434667830,\t\n0.985447232585384580,\t0.985438732272483130,\t0.985430229495985020,\t0.985421724255911240,\t0.985413216552283090,\t0.985404706385121900,\t0.985396193754448980,\t0.985387678660285650,\t\n0.985379161102653000,\t0.985370641081572570,\t0.985362118597065460,\t0.985353593649153090,\t0.985345066237856780,\t0.985336536363197620,\t0.985328004025197270,\t0.985319469223876810,\t\n0.985310931959257790,\t0.985302392231361400,\t0.985293850040209080,\t0.985285305385822150,\t0.985276758268221920,\t0.985268208687429590,\t0.985259656643466930,\t0.985251102136355140,\t\n0.985242545166115650,\t0.985233985732769660,\t0.985225423836338820,\t0.985216859476844340,\t0.985208292654307650,\t0.985199723368750280,\t0.985191151620193660,\t0.985182577408659220,\t\n0.985174000734168280,\t0.985165421596742360,\t0.985156839996402800,\t0.985148255933171240,\t0.985139669407068870,\t0.985131080418117370,\t0.985122488966338250,\t0.985113895051752950,\t\n0.985105298674382900,\t0.985096699834249630,\t0.985088098531374470,\t0.985079494765779050,\t0.985070888537485030,\t0.985062279846513730,\t0.985053668692886800,\t0.985045055076625650,\t\n0.985036438997751840,\t0.985027820456287010,\t0.985019199452252580,\t0.985010575985669990,\t0.985001950056561100,\t0.984993321664947350,\t0.984984690810850380,\t0.984976057494291620,\t\n0.984967421715292720,\t0.984958783473875220,\t0.984950142770060770,\t0.984941499603870900,\t0.984932853975327370,\t0.984924205884451620,\t0.984915555331265510,\t0.984906902315790480,\t\n0.984898246838048160,\t0.984889588898060220,\t0.984880928495848070,\t0.984872265631433930,\t0.984863600304838990,\t0.984854932516085140,\t0.984846262265193890,\t0.984837589552187030,\t\n0.984828914377086200,\t0.984820236739913040,\t0.984811556640689200,\t0.984802874079436560,\t0.984794189056176770,\t0.984785501570931480,\t0.984776811623722440,\t0.984768119214571410,\t\n0.984759424343500060,\t0.984750727010530120,\t0.984742027215683270,\t0.984733324958981470,\t0.984724620240446270,\t0.984715913060099650,\t0.984707203417963250,\t0.984698491314058730,\t\n0.984689776748408070,\t0.984681059721032810,\t0.984672340231955050,\t0.984663618281196420,\t0.984654893868778800,\t0.984646166994723850,\t0.984637437659053540,\t0.984628705861789630,\t\n0.984619971602954000,\t0.984611234882568190,\t0.984602495700654500,\t0.984593754057234590,\t0.984585009952330230,\t0.984576263385963490,\t0.984567514358155930,\t0.984558762868929630,\t\n0.984550008918306350,\t0.984541252506308080,\t0.984532493632956810,\t0.984523732298274170,\t0.984514968502282260,\t0.984506202245002960,\t0.984497433526458130,\t0.984488662346669760,\t\n0.984479888705659500,\t0.984471112603449770,\t0.984462334040062110,\t0.984453553015518730,\t0.984444769529841500,\t0.984435983583052290,\t0.984427195175173080,\t0.984418404306225960,\t\n0.984409610976232590,\t0.984400815185215380,\t0.984392016933196220,\t0.984383216220196980,\t0.984374413046239630,\t0.984365607411346270,\t0.984356799315538880,\t0.984347988758839440,\t\n0.984339175741270060,\t0.984330360262852810,\t0.984321542323609580,\t0.984312721923562560,\t0.984303899062733740,\t0.984295073741145220,\t0.984286245958818970,\t0.984277415715776870,\t\n0.984268583012041450,\t0.984259747847634590,\t0.984250910222578380,\t0.984242070136894910,\t0.984233227590606160,\t0.984224382583734460,\t0.984215535116301670,\t0.984206685188329990,\t\n0.984197832799841740,\t0.984188977950858910,\t0.984180120641403590,\t0.984171260871497980,\t0.984162398641164280,\t0.984153533950424600,\t0.984144666799300790,\t0.984135797187815520,\t\n0.984126925115990870,\t0.984118050583848820,\t0.984109173591411590,\t0.984100294138701480,\t0.984091412225740700,\t0.984082527852551350,\t0.984073641019155510,\t0.984064751725575730,\t\n0.984055859971833980,\t0.984046965757952700,\t0.984038069083953970,\t0.984029169949860120,\t0.984020268355693230,\t0.984011364301475620,\t0.984002457787229720,\t0.983993548812977630,\t\n0.983984637378741760,\t0.983975723484544210,\t0.983966807130407410,\t0.983957888316353560,\t0.983948967042404980,\t0.983940043308583870,\t0.983931117114912770,\t0.983922188461413880,\t\n0.983913257348109530,\t0.983904323775022020,\t0.983895387742173670,\t0.983886449249586900,\t0.983877508297284040,\t0.983868564885287180,\t0.983859619013619180,\t0.983850670682302030,\t\n0.983841719891358270,\t0.983832766640810100,\t0.983823810930680160,\t0.983814852760990570,\t0.983805892131763730,\t0.983796929043022290,\t0.983787963494788590,\t0.983778995487085030,\t\n0.983770025019933820,\t0.983761052093357740,\t0.983752076707378850,\t0.983743098862019830,\t0.983734118557302970,\t0.983725135793250940,\t0.983716150569886040,\t0.983707162887230810,\t\n0.983698172745307580,\t0.983689180144138970,\t0.983680185083747440,\t0.983671187564155500,\t0.983662187585385260,\t0.983653185147459920,\t0.983644180250401460,\t0.983635172894232630,\t\n0.983626163078975770,\t0.983617150804653620,\t0.983608136071288500,\t0.983599118878902940,\t0.983590099227519720,\t0.983581077117161250,\t0.983572052547850180,\t0.983563025519608840,\t\n0.983553996032459970,\t0.983544964086426220,\t0.983535929681529920,\t0.983526892817793710,\t0.983517853495240350,\t0.983508811713892480,\t0.983499767473772550,\t0.983490720774903070,\t\n0.983481671617306930,\t0.983472620001006550,\t0.983463565926024460,\t0.983454509392383660,\t0.983445450400106560,\t0.983436388949215920,\t0.983427325039734180,\t0.983418258671684200,\t\n0.983409189845088520,\t0.983400118559969890,\t0.983391044816350760,\t0.983381968614254310,\t0.983372889953702870,\t0.983363808834719190,\t0.983354725257325920,\t0.983345639221545940,\t\n0.983336550727401780,\t0.983327459774916310,\t0.983318366364112070,\t0.983309270495011930,\t0.983300172167638760,\t0.983291071382015100,\t0.983281968138163710,\t0.983272862436107450,\t\n0.983263754275869100,\t0.983254643657471170,\t0.983245530580936780,\t0.983236415046288450,\t0.983227297053549280,\t0.983218176602741690,\t0.983209053693888780,\t0.983199928327013200,\t\n0.983190800502137810,\t0.983181670219285260,\t0.983172537478478660,\t0.983163402279740750,\t0.983154264623094300,\t0.983145124508562170,\t0.983135981936167250,\t0.983126836905932390,\t\n0.983117689417880470,\t0.983108539472034140,\t0.983099387068416600,\t0.983090232207050610,\t0.983081074887959040,\t0.983071915111164870,\t0.983062752876690760,\t0.983053588184559900,\t\n0.983044421034794840,\t0.983035251427418880,\t0.983026079362454790,\t0.983016904839925540,\t0.983007727859854020,\t0.982998548422263200,\t0.982989366527175950,\t0.982980182174615360,\t\n0.982970995364604080,\t0.982961806097165440,\t0.982952614372322400,\t0.982943420190097730,\t0.982934223550514630,\t0.982925024453595860,\t0.982915822899364520,\t0.982906618887843480,\t\n0.982897412419056150,\t0.982888203493025190,\t0.982878992109773810,\t0.982869778269324870,\t0.982860561971701460,\t0.982851343216926690,\t0.982842122005023630,\t0.982832898336014950,\t\n0.982823672209924280,\t0.982814443626774500,\t0.982805212586588480,\t0.982795979089389540,\t0.982786743135200540,\t0.982777504724044790,\t0.982768263855945180,\t0.982759020530924790,\t\n0.982749774749007040,\t0.982740526510214820,\t0.982731275814571310,\t0.982722022662099630,\t0.982712767052822840,\t0.982703508986764170,\t0.982694248463946480,\t0.982684985484393430,\t\n0.982675720048127870,\t0.982666452155173010,\t0.982657181805552060,\t0.982647908999288110,\t0.982638633736404480,\t0.982629356016924140,\t0.982620075840870300,\t0.982610793208266500,\t\n0.982601508119135600,\t0.982592220573501040,\t0.982582930571385900,\t0.982573638112813400,\t0.982564343197806830,\t0.982555045826389310,\t0.982545745998584130,\t0.982536443714414730,\t\n0.982527138973904200,\t0.982517831777075860,\t0.982508522123952900,\t0.982499210014558640,\t0.982489895448916290,\t0.982480578427049170,\t0.982471258948980690,\t0.982461937014734050,\t\n0.982452612624332590,\t0.982443285777799600,\t0.982433956475158410,\t0.982424624716432330,\t0.982415290501644670,\t0.982405953830818630,\t0.982396614703977880,\t0.982387273121145600,\t\n0.982377929082345110,\t0.982368582587599740,\t0.982359233636933000,\t0.982349882230368120,\t0.982340528367928400,\t0.982331172049637600,\t0.982321813275518820,\t0.982312452045595470,\t\n0.982303088359891000,\t0.982293722218428810,\t0.982284353621232340,\t0.982274982568324910,\t0.982265609059729930,\t0.982256233095471170,\t0.982246854675571710,\t0.982237473800055110,\t\n0.982228090468944880,\t0.982218704682264350,\t0.982209316440037170,\t0.982199925742286650,\t0.982190532589036100,\t0.982181136980309510,\t0.982171738916129970,\t0.982162338396521120,\t\n0.982152935421506390,\t0.982143529991109320,\t0.982134122105353450,\t0.982124711764262080,\t0.982115298967859210,\t0.982105883716168030,\t0.982096466009212080,\t0.982087045847015010,\t\n0.982077623229600350,\t0.982068198156991530,\t0.982058770629212320,\t0.982049340646286020,\t0.982039908208236500,\t0.982030473315087190,\t0.982021035966861740,\t0.982011596163583690,\t\n0.982002153905276560,\t0.981992709191964240,\t0.981983262023669810,\t0.981973812400417480,\t0.981964360322230560,\t0.981954905789132800,\t0.981945448801147760,\t0.981935989358299070,\t\n0.981926527460610380,\t0.981917063108105450,\t0.981907596300807590,\t0.981898127038741020,\t0.981888655321929040,\t0.981879181150395520,\t0.981869704524164000,\t0.981860225443258240,\t\n0.981850743907701880,\t0.981841259917518690,\t0.981831773472732210,\t0.981822284573366400,\t0.981812793219444810,\t0.981803299410991430,\t0.981793803148029660,\t0.981784304430583400,\t\n0.981774803258676390,\t0.981765299632332280,\t0.981755793551575050,\t0.981746285016428240,\t0.981736774026915840,\t0.981727260583061480,\t0.981717744684888930,\t0.981708226332422050,\t\n0.981698705525684500,\t0.981689182264700140,\t0.981679656549492960,\t0.981670128380086600,\t0.981660597756505050,\t0.981651064678771830,\t0.981641529146911050,\t0.981631991160946460,\t\n0.981622450720901930,\t0.981612907826801000,\t0.981603362478667970,\t0.981593814676526620,\t0.981584264420400700,\t0.981574711710314070,\t0.981565156546290730,\t0.981555598928354420,\t\n0.981546038856529020,\t0.981536476330838630,\t0.981526911351307100,\t0.981517343917958310,\t0.981507774030816130,\t0.981498201689904540,\t0.981488626895247410,\t0.981479049646868720,\t\n0.981469469944792230,\t0.981459887789042250,\t0.981450303179642550,\t0.981440716116617100,\t0.981431126599989770,\t0.981421534629784760,\t0.981411940206025850,\t0.981402343328736880,\t\n0.981392743997942300,\t0.981383142213665850,\t0.981373537975931520,\t0.981363931284763290,\t0.981354322140185360,\t0.981344710542221500,\t0.981335096490896010,\t0.981325479986232430,\t\n0.981315861028255410,\t0.981306239616988820,\t0.981296615752456520,\t0.981286989434682730,\t0.981277360663691420,\t0.981267729439506690,\t0.981258095762152730,\t0.981248459631653300,\t\n0.981238821048032950,\t0.981229180011315430,\t0.981219536521525050,\t0.981209890578685790,\t0.981200242182821870,\t0.981190591333957360,\t0.981180938032116150,\t0.981171282277322750,\t\n0.981161624069601170,\t0.981151963408975480,\t0.981142300295469890,\t0.981132634729108610,\t0.981122966709915720,\t0.981113296237915430,\t0.981103623313131610,\t0.981093947935589020,\t\n0.981084270105311520,\t0.981074589822323430,\t0.981064907086648730,\t0.981055221898311850,\t0.981045534257336980,\t0.981035844163748120,\t0.981026151617569560,\t0.981016456618825750,\t\n0.981006759167540880,\t0.980997059263739040,\t0.980987356907444650,\t0.980977652098681710,\t0.980967944837474740,\t0.980958235123847720,\t0.980948522957825310,\t0.980938808339431590,\t\n0.980929091268690770,\t0.980919371745627380,\t0.980909649770265400,\t0.980899925342629380,\t0.980890198462743500,\t0.980880469130631980,\t0.980870737346319470,\t0.980861003109830150,\t\n0.980851266421188250,\t0.980841527280418180,\t0.980831785687544370,\t0.980822041642591010,\t0.980812295145582440,\t0.980802546196543280,\t0.980792794795497750,\t0.980783040942470260,\t\n0.980773284637485140,\t0.980763525880566810,\t0.980753764671739690,\t0.980744001011028100,\t0.980734234898456460,\t0.980724466334049310,\t0.980714695317830950,\t0.980704921849825940,\t\n0.980695145930058580,\t0.980685367558553400,\t0.980675586735334730,\t0.980665803460427200,\t0.980656017733854910,\t0.980646229555642730,\t0.980636438925815090,\t0.980626645844396180,\t\n0.980616850311410770,\t0.980607052326883280,\t0.980597251890838020,\t0.980587449003299530,\t0.980577643664292680,\t0.980567835873841550,\t0.980558025631970920,\t0.980548212938705310,\t\n0.980538397794069040,\t0.980528580198086750,\t0.980518760150783100,\t0.980508937652182390,\t0.980499112702309490,\t0.980489285301188730,\t0.980479455448844850,\t0.980469623145302280,\t\n0.980459788390585670,\t0.980449951184719670,\t0.980440111527728700,\t0.980430269419637290,\t0.980420424860470320,\t0.980410577850252430,\t0.980400728389007940,\t0.980390876476761710,\t\n0.980381022113538390,\t0.980371165299362410,\t0.980361306034258310,\t0.980351444318251160,\t0.980341580151365410,\t0.980331713533625690,\t0.980321844465056660,\t0.980311972945683060,\t\n0.980302098975529560,\t0.980292222554620780,\t0.980282343682981170,\t0.980272462360636030,\t0.980262578587609680,\t0.980252692363926870,\t0.980242803689612360,\t0.980232912564690810,\t\n0.980223018989186960,\t0.980213122963125460,\t0.980203224486531190,\t0.980193323559429010,\t0.980183420181843460,\t0.980173514353799400,\t0.980163606075321490,\t0.980153695346434590,\t\n0.980143782167163470,\t0.980133866537532650,\t0.980123948457567450,\t0.980114027927292300,\t0.980104104946732060,\t0.980094179515911600,\t0.980084251634855800,\t0.980074321303589180,\t\n0.980064388522136840,\t0.980054453290523430,\t0.980044515608773930,\t0.980034575476913190,\t0.980024632894966110,\t0.980014687862957310,\t0.980004740380911900,\t0.979994790448854510,\t\n0.979984838066810030,\t0.979974883234803640,\t0.979964925952860110,\t0.979954966221004200,\t0.979945004039260880,\t0.979935039407655030,\t0.979925072326211620,\t0.979915102794955530,\t\n0.979905130813911400,\t0.979895156383104760,\t0.979885179502560160,\t0.979875200172302560,\t0.979865218392357070,\t0.979855234162748450,\t0.979845247483501880,\t0.979835258354642020,\t\n0.979825266776193970,\t0.979815272748182810,\t0.979805276270633630,\t0.979795277343571080,\t0.979785275967020470,\t0.979775272141006570,\t0.979765265865554570,\t0.979755257140689230,\t\n0.979745245966435860,\t0.979735232342819450,\t0.979725216269864860,\t0.979715197747597300,\t0.979705176776041740,\t0.979695153355223280,\t0.979685127485166900,\t0.979675099165897460,\t\n0.979665068397440500,\t0.979655035179820890,\t0.979644999513063720,\t0.979634961397193970,\t0.979624920832236850,\t0.979614877818217430,\t0.979604832355160720,\t0.979594784443092000,\t\n0.979584734082036390,\t0.979574681272018850,\t0.979564626013064710,\t0.979554568305198940,\t0.979544508148446740,\t0.979534445542833310,\t0.979524380488383640,\t0.979514312985123040,\t\n0.979504243033076820,\t0.979494170632269960,\t0.979484095782727550,\t0.979474018484475020,\t0.979463938737537450,\t0.979453856541939950,\t0.979443771897707700,\t0.979433684804866140,\t\n0.979423595263440470,\t0.979413503273455780,\t0.979403408834937260,\t0.979393311947910240,\t0.979383212612400020,\t0.979373110828431480,\t0.979363006596030370,\t0.979352899915221790,\t\n0.979342790786030930,\t0.979332679208483100,\t0.979322565182603630,\t0.979312448708417600,\t0.979302329785950550,\t0.979292208415227570,\t0.979282084596274080,\t0.979271958329115510,\t\n0.979261829613777060,\t0.979251698450283930,\t0.979241564838661650,\t0.979231428778935320,\t0.979221290271130360,\t0.979211149315272310,\t0.979201005911386370,\t0.979190860059497960,\t\n0.979180711759632390,\t0.979170561011815100,\t0.979160407816071280,\t0.979150252172426570,\t0.979140094080905960,\t0.979129933541535320,\t0.979119770554339850,\t0.979109605119344970,\t\n0.979099437236576000,\t0.979089266906058580,\t0.979079094127817910,\t0.979068918901879410,\t0.979058741228268530,\t0.979048561107011000,\t0.979038378538132030,\t0.979028193521657150,\t\n0.979018006057611800,\t0.979007816146021390,\t0.978997623786911460,\t0.978987428980307330,\t0.978977231726234740,\t0.978967032024719020,\t0.978956829875785810,\t0.978946625279460520,\t\n0.978936418235768710,\t0.978926208744735790,\t0.978915996806387300,\t0.978905782420748770,\t0.978895565587845850,\t0.978885346307704070,\t0.978875124580348870,\t0.978864900405805870,\t\n0.978854673784100740,\t0.978844444715258780,\t0.978834213199305750,\t0.978823979236267070,\t0.978813742826168510,\t0.978803503969035700,\t0.978793262664894080,\t0.978783018913769290,\t\n0.978772772715687080,\t0.978762524070672770,\t0.978752272978752000,\t0.978742019439950760,\t0.978731763454294580,\t0.978721505021808880,\t0.978711244142519420,\t0.978700980816451850,\t\n0.978690715043631810,\t0.978680446824084950,\t0.978670176157836910,\t0.978659903044913570,\t0.978649627485340460,\t0.978639349479143220,\t0.978629069026347720,\t0.978618786126979500,\t\n0.978608500781064210,\t0.978598212988627590,\t0.978587922749695640,\t0.978577630064293880,\t0.978567334932447960,\t0.978557037354183870,\t0.978546737329527020,\t0.978536434858503390,\t\n0.978526129941138630,\t0.978515822577458510,\t0.978505512767488870,\t0.978495200511255490,\t0.978484885808784120,\t0.978474568660100520,\t0.978464249065230440,\t0.978453927024199870,\t\n0.978443602537034440,\t0.978433275603759700,\t0.978422946224402070,\t0.978412614398987080,\t0.978402280127540490,\t0.978391943410088280,\t0.978381604246656210,\t0.978371262637270030,\t\n0.978360918581955620,\t0.978350572080739060,\t0.978340223133645990,\t0.978329871740702520,\t0.978319517901934280,\t0.978309161617367250,\t0.978298802887027310,\t0.978288441710940320,\t\n0.978278078089132140,\t0.978267712021628880,\t0.978257343508456390,\t0.978246972549640550,\t0.978236599145207220,\t0.978226223295182380,\t0.978215844999592020,\t0.978205464258462000,\t\n0.978195081071818180,\t0.978184695439686890,\t0.978174307362093880,\t0.978163916839065010,\t0.978153523870626370,\t0.978143128456803960,\t0.978132730597623620,\t0.978122330293111350,\t\n0.978111927543293460,\t0.978101522348195700,\t0.978091114707844160,\t0.978080704622264820,\t0.978070292091483770,\t0.978059877115527000,\t0.978049459694420480,\t0.978039039828190070,\t\n0.978028617516862320,\t0.978018192760463090,\t0.978007765559018250,\t0.977997335912554110,\t0.977986903821096540,\t0.977976469284671750,\t0.977966032303305590,\t0.977955592877024600,\t\n0.977945151005854550,\t0.977934706689821630,\t0.977924259928951930,\t0.977913810723271660,\t0.977903359072806790,\t0.977892904977583520,\t0.977882448437627840,\t0.977871989452966270,\t\n0.977861528023624690,\t0.977851064149629190,\t0.977840597831006190,\t0.977830129067781550,\t0.977819657859981710,\t0.977809184207632630,\t0.977798708110760420,\t0.977788229569391710,\t\n0.977777748583552380,\t0.977767265153268620,\t0.977756779278566750,\t0.977746290959472960,\t0.977735800196013360,\t0.977725306988214140,\t0.977714811336101830,\t0.977704313239702530,\t\n0.977693812699042430,\t0.977683309714147740,\t0.977672804285044770,\t0.977662296411759830,\t0.977651786094319130,\t0.977641273332748860,\t0.977630758127075560,\t0.977620240477325320,\t\n0.977609720383524450,\t0.977599197845699370,\t0.977588672863876180,\t0.977578145438081410,\t0.977567615568341260,\t0.977557083254681820,\t0.977546548497129960,\t0.977536011295711660,\t\n0.977525471650453340,\t0.977514929561381420,\t0.977504385028522100,\t0.977493838051901820,\t0.977483288631546770,\t0.977472736767483700,\t0.977462182459738700,\t0.977451625708338320,\t\n0.977441066513308860,\t0.977430504874676750,\t0.977419940792468410,\t0.977409374266710150,\t0.977398805297428290,\t0.977388233884649680,\t0.977377660028400430,\t0.977367083728706950,\t\n0.977356504985595900,\t0.977345923799093460,\t0.977335340169226300,\t0.977324754096020600,\t0.977314165579503120,\t0.977303574619700300,\t0.977292981216638550,\t0.977282385370344290,\t\n0.977271787080844170,\t0.977261186348164500,\t0.977250583172331820,\t0.977239977553372550,\t0.977229369491313560,\t0.977218758986181160,\t0.977208146038001770,\t0.977197530646802040,\t\n0.977186912812608500,\t0.977176292535447690,\t0.977165669815346140,\t0.977155044652330270,\t0.977144417046426960,\t0.977133786997662510,\t0.977123154506063680,\t0.977112519571657010,\t\n0.977101882194468920,\t0.977091242374526270,\t0.977080600111855270,\t0.977069955406482890,\t0.977059308258435680,\t0.977048658667740160,\t0.977038006634422970,\t0.977027352158510890,\t\n0.977016695240030320,\t0.977006035879008030,\t0.976995374075470550,\t0.976984709829444740,\t0.976974043140957150,\t0.976963374010034520,\t0.976952702436703400,\t0.976942028420990540,\t\n0.976931351962922580,\t0.976920673062526280,\t0.976909991719828060,\t0.976899307934855130,\t0.976888621707633800,\t0.976877933038191040,\t0.976867241926553390,\t0.976856548372747710,\t\n0.976845852376800550,\t0.976835153938738650,\t0.976824453058589000,\t0.976813749736378250,\t0.976803043972133130,\t0.976792335765880430,\t0.976781625117646770,\t0.976770912027459140,\t\n0.976760196495344290,\t0.976749478521328650,\t0.976738758105439530,\t0.976728035247703570,\t0.976717309948147430,\t0.976706582206798070,\t0.976695852023682250,\t0.976685119398826850,\t\n0.976674384332258390,\t0.976663646824004190,\t0.976652906874090900,\t0.976642164482545260,\t0.976631419649394260,\t0.976620672374664770,\t0.976609922658383530,\t0.976599170500577430,\t\n0.976588415901273320,\t0.976577658860498300,\t0.976566899378279230,\t0.976556137454642760,\t0.976545373089616090,\t0.976534606283225860,\t0.976523837035499160,\t0.976513065346462870,\t\n0.976502291216143850,\t0.976491514644569180,\t0.976480735631765630,\t0.976469954177760390,\t0.976459170282580220,\t0.976448383946252110,\t0.976437595168803020,\t0.976426803950259830,\t\n0.976416010290649730,\t0.976405214189999700,\t0.976394415648336510,\t0.976383614665687350,\t0.976372811242079200,\t0.976362005377539030,\t0.976351197072093720,\t0.976340386325770360,\t\n0.976329573138596140,\t0.976318757510598050,\t0.976307939441803050,\t0.976297118932238140,\t0.976286295981930510,\t0.976275470590907140,\t0.976264642759194780,\t0.976253812486821080,\t\n0.976242979773812910,\t0.976232144620197250,\t0.976221307026001180,\t0.976210466991251910,\t0.976199624515976530,\t0.976188779600202010,\t0.976177932243955330,\t0.976167082447264020,\t\n0.976156230210154960,\t0.976145375532655460,\t0.976134518414792370,\t0.976123658856593130,\t0.976112796858084610,\t0.976101932419294220,\t0.976091065540248710,\t0.976080196220975750,\t\n0.976069324461502410,\t0.976058450261855560,\t0.976047573622062740,\t0.976036694542150920,\t0.976025813022147410,\t0.976014929062079100,\t0.976004042661973710,\t0.975993153821858250,\t\n0.975982262541759900,\t0.975971368821705880,\t0.975960472661723370,\t0.975949574061839690,\t0.975938673022082150,\t0.975927769542477730,\t0.975916863623053970,\t0.975905955263838170,\t\n0.975895044464857420,\t0.975884131226139150,\t0.975873215547710450,\t0.975862297429598740,\t0.975851376871831320,\t0.975840453874435190,\t0.975829528437438200,\t0.975818600560867330,\t\n0.975807670244750010,\t0.975796737489113440,\t0.975785802293985150,\t0.975774864659392230,\t0.975763924585361990,\t0.975752982071922180,\t0.975742037119099900,\t0.975731089726922460,\t\n0.975720139895417390,\t0.975709187624611900,\t0.975698232914533500,\t0.975687275765209530,\t0.975676316176667060,\t0.975665354148934070,\t0.975654389682037770,\t0.975643422776005350,\t\n0.975632453430864470,\t0.975621481646642420,\t0.975610507423366750,\t0.975599530761064540,\t0.975588551659763660,\t0.975577570119491420,\t0.975566586140275360,\t0.975555599722142670,\t\n0.975544610865121120,\t0.975533619569238010,\t0.975522625834520760,\t0.975511629660996920,\t0.975500631048694110,\t0.975489629997639660,\t0.975478626507861210,\t0.975467620579386190,\t\n0.975456612212242110,\t0.975445601406456530,\t0.975434588162056860,\t0.975423572479070630,\t0.975412554357525610,\t0.975401533797449210,\t0.975390510798868960,\t0.975379485361812400,\t\n0.975368457486307180,\t0.975357427172380830,\t0.975346394420060660,\t0.975335359229374750,\t0.975324321600350430,\t0.975313281533015330,\t0.975302239027396990,\t0.975291194083523050,\t\n0.975280146701421160,\t0.975269096881118850,\t0.975258044622643650,\t0.975246989926023540,\t0.975235932791285950,\t0.975224873218458520,\t0.975213811207568890,\t0.975202746758644820,\t\n0.975191679871713730,\t0.975180610546803490,\t0.975169538783941640,\t0.975158464583156030,\t0.975147387944474310,\t0.975136308867924130,\t0.975125227353533130,\t0.975114143401329070,\t\n0.975103057011339700,\t0.975091968183592450,\t0.975080876918115400,\t0.975069783214936310,\t0.975058687074082610,\t0.975047588495582260,\t0.975036487479463030,\t0.975025384025752450,\t\n0.975014278134478500,\t0.975003169805668590,\t0.974992059039351040,\t0.974980945835553280,\t0.974969830194303170,\t0.974958712115628460,\t0.974947591599557020,\t0.974936468646116490,\t\n0.974925343255334750,\t0.974914215427239770,\t0.974903085161859200,\t0.974891952459221000,\t0.974880817319352940,\t0.974869679742282780,\t0.974858539728038380,\t0.974847397276647710,\t\n0.974836252388138310,\t0.974825105062538500,\t0.974813955299875910,\t0.974802803100178420,\t0.974791648463473990,\t0.974780491389790390,\t0.974769331879155490,\t0.974758169931597360,\t\n0.974747005547143550,\t0.974735838725822480,\t0.974724669467661790,\t0.974713497772689450,\t0.974702323640933340,\t0.974691147072421440,\t0.974679968067181600,\t0.974668786625241700,\t\n0.974657602746630050,\t0.974646416431374400,\t0.974635227679502720,\t0.974624036491042900,\t0.974612842866023010,\t0.974601646804471030,\t0.974590448306414950,\t0.974579247371882510,\t\n0.974568044000902130,\t0.974556838193501700,\t0.974545629949709170,\t0.974534419269552530,\t0.974523206153059870,\t0.974511990600259280,\t0.974500772611178620,\t0.974489552185845760,\t\n0.974478329324289350,\t0.974467104026537020,\t0.974455876292616980,\t0.974444646122557210,\t0.974433413516385900,\t0.974422178474131040,\t0.974410940995820480,\t0.974399701081482770,\t\n0.974388458731145880,\t0.974377213944837780,\t0.974365966722586680,\t0.974354717064420670,\t0.974343464970367830,\t0.974332210440456370,\t0.974320953474714150,\t0.974309694073169700,\t\n0.974298432235851110,\t0.974287167962786360,\t0.974275901254003760,\t0.974264632109531400,\t0.974253360529397370,\t0.974242086513629870,\t0.974230810062257310,\t0.974219531175307680,\t\n0.974208249852809290,\t0.974196966094790230,\t0.974185679901278690,\t0.974174391272303100,\t0.974163100207891430,\t0.974151806708071780,\t0.974140510772872890,\t0.974129212402322750,\t\n0.974117911596449450,\t0.974106608355281510,\t0.974095302678846920,\t0.974083994567174210,\t0.974072684020291460,\t0.974061371038226760,\t0.974050055621008880,\t0.974038737768665790,\t\n0.974027417481225900,\t0.974016094758717530,\t0.974004769601168880,\t0.973993442008608270,\t0.973982111981063880,\t0.973970779518564480,\t0.973959444621138040,\t0.973948107288812980,\t\n0.973936767521617730,\t0.973925425319580480,\t0.973914080682729670,\t0.973902733611093700,\t0.973891384104700770,\t0.973880032163579430,\t0.973868677787758100,\t0.973857320977265070,\t\n0.973845961732128670,\t0.973834600052377430,\t0.973823235938039770,\t0.973811869389143880,\t0.973800500405718190,\t0.973789128987791460,\t0.973777755135391890,\t0.973766378848547890,\t\n0.973755000127288000,\t0.973743618971640520,\t0.973732235381634110,\t0.973720849357296860,\t0.973709460898657620,\t0.973698070005744820,\t0.973686676678586770,\t0.973675280917212120,\t\n0.973663882721649280,\t0.973652482091926670,\t0.973641079028072840,\t0.973629673530116090,\t0.973618265598085400,\t0.973606855232009070,\t0.973595442431915650,\t0.973584027197833550,\t\n0.973572609529791300,\t0.973561189427817660,\t0.973549766891940840,\t0.973538341922189690,\t0.973526914518592860,\t0.973515484681178660,\t0.973504052409975620,\t0.973492617705012610,\t\n0.973481180566318050,\t0.973469740993920470,\t0.973458298987848410,\t0.973446854548130740,\t0.973435407674795970,\t0.973423958367872650,\t0.973412506627389430,\t0.973401052453374940,\t\n0.973389595845857940,\t0.973378136804866840,\t0.973366675330430200,\t0.973355211422577080,\t0.973343745081335920,\t0.973332276306735470,\t0.973320805098804250,\t0.973309331457571040,\t\n0.973297855383064460,\t0.973286376875313050,\t0.973274895934346020,\t0.973263412560191670,\t0.973251926752878750,\t0.973240438512436020,\t0.973228947838892240,\t0.973217454732276050,\t\n0.973205959192616320,\t0.973194461219941350,\t0.973182960814280570,\t0.973171457975662290,\t0.973159952704115370,\t0.973148444999668570,\t0.973136934862350760,\t0.973125422292190460,\t\n0.973113907289216540,\t0.973102389853457980,\t0.973090869984943430,\t0.973079347683701750,\t0.973067822949761680,\t0.973056295783152110,\t0.973044766183901680,\t0.973033234152039460,\t\n0.973021699687593890,\t0.973010162790594270,\t0.972998623461069250,\t0.972987081699047680,\t0.972975537504558340,\t0.972963990877630190,\t0.972952441818292100,\t0.972940890326572940,\t\n0.972929336402501340,\t0.972917780046106520,\t0.972906221257417330,\t0.972894660036462520,\t0.972883096383271080,\t0.972871530297871990,\t0.972859961780293990,\t0.972848390830565850,\t\n0.972836817448716970,\t0.972825241634776130,\t0.972813663388772070,\t0.972802082710733870,\t0.972790499600690530,\t0.972778914058670900,\t0.972767326084703950,\t0.972755735678818570,\t\n0.972744142841044050,\t0.972732547571409030,\t0.972720949869942840,\t0.972709349736674110,\t0.972697747171632040,\t0.972686142174845720,\t0.972674534746343910,\t0.972662924886155580,\t\n0.972651312594310260,\t0.972639697870836480,\t0.972628080715763570,\t0.972616461129120480,\t0.972604839110936200,\t0.972593214661239820,\t0.972581587780060210,\t0.972569958467426780,\t\n0.972558326723368500,\t0.972546692547914370,\t0.972535055941093570,\t0.972523416902935090,\t0.972511775433468120,\t0.972500131532721630,\t0.972488485200724620,\t0.972476836437506600,\t\n0.972465185243096550,\t0.972453531617523570,\t0.972441875560816630,\t0.972430217073005030,\t0.972418556154117990,\t0.972406892804184240,\t0.972395227023233550,\t0.972383558811294790,\t\n0.972371888168397040,\t0.972360215094569710,\t0.972348539589841690,\t0.972336861654242380,\t0.972325181287800990,\t0.972313498490546380,\t0.972301813262508200,\t0.972290125603715530,\t\n0.972278435514197570,\t0.972266742993983520,\t0.972255048043102480,\t0.972243350661583960,\t0.972231650849457060,\t0.972219948606750760,\t0.972208243933494810,\t0.972196536829718290,\t\n0.972184827295450420,\t0.972173115330720480,\t0.972161400935557700,\t0.972149684109991470,\t0.972137964854050800,\t0.972126243167765520,\t0.972114519051164530,\t0.972102792504277220,\t\n0.972091063527133040,\t0.972079332119761050,\t0.972067598282190800,\t0.972055862014451600,\t0.972044123316572530,\t0.972032382188583340,\t0.972020638630513130,\t0.972008892642391430,\t\n0.971997144224247430,\t0.971985393376110670,\t0.971973640098010350,\t0.971961884389975880,\t0.971950126252036580,\t0.971938365684222090,\t0.971926602686561720,\t0.971914837259084900,\t\n0.971903069401820920,\t0.971891299114799320,\t0.971879526398049420,\t0.971867751251600520,\t0.971855973675482490,\t0.971844193669724520,\t0.971832411234356040,\t0.971820626369406470,\t\n0.971808839074905450,\t0.971797049350882180,\t0.971785257197366410,\t0.971773462614387240,\t0.971761665601974630,\t0.971749866160157900,\t0.971738064288966470,\t0.971726259988429870,\t\n0.971714453258577640,\t0.971702644099439290,\t0.971690832511044160,\t0.971679018493422090,\t0.971667202046602510,\t0.971655383170614840,\t0.971643561865488840,\t0.971631738131253810,\t\n0.971619911967939510,\t0.971608083375575360,\t0.971596252354190890,\t0.971584418903815970,\t0.971572583024480020,\t0.971560744716212570,\t0.971548903979043250,\t0.971537060813001730,\t\n0.971525215218117520,\t0.971513367194420270,\t0.971501516741939410,\t0.971489663860704900,\t0.971477808550746280,\t0.971465950812093190,\t0.971454090644775170,\t0.971442228048821850,\t\n0.971430363024263110,\t0.971418495571128140,\t0.971406625689447250,\t0.971394753379249740,\t0.971382878640565270,\t0.971371001473423700,\t0.971359121877854560,\t0.971347239853887710,\t\n0.971335355401552690,\t0.971323468520879140,\t0.971311579211897040,\t0.971299687474636020,\t0.971287793309125850,\t0.971275896715396050,\t0.971263997693476600,\t0.971252096243397260,\t\n0.971240192365187550,\t0.971228286058877120,\t0.971216377324496280,\t0.971204466162074450,\t0.971192552571641500,\t0.971180636553227060,\t0.971168718106861120,\t0.971156797232573420,\t\n0.971144873930393390,\t0.971132948200351450,\t0.971121020042477130,\t0.971109089456800300,\t0.971097156443350820,\t0.971085221002158330,\t0.971073283133252810,\t0.971061342836664010,\t\n0.971049400112421800,\t0.971037454960556160,\t0.971025507381096940,\t0.971013557374074020,\t0.971001604939517150,\t0.970989650077456190,\t0.970977692787921230,\t0.970965733070941810,\t\n0.970953770926548220,\t0.970941806354770120,\t0.970929839355637700,\t0.970917869929180500,\t0.970905898075428710,\t0.970893923794412190,\t0.970881947086160820,\t0.970869967950704460,\t\n0.970857986388073300,\t0.970846002398297210,\t0.970834015981406060,\t0.970822027137429930,\t0.970810035866398800,\t0.970798042168342420,\t0.970786046043291000,\t0.970774047491274270,\t\n0.970762046512322670,\t0.970750043106465950,\t0.970738037273734090,\t0.970726029014157170,\t0.970714018327765050,\t0.970702005214588050,\t0.970689989674655700,\t0.970677971707998630,\t\n0.970665951314646720,\t0.970653928494629840,\t0.970641903247978170,\t0.970629875574721690,\t0.970617845474890610,\t0.970605812948514780,\t0.970593777995624300,\t0.970581740616249580,\t\n0.970569700810420600,\t0.970557658578167230,\t0.970545613919519770,\t0.970533566834508310,\t0.970521517323162830,\t0.970509465385513640,\t0.970497411021590590,\t0.970485354231424120,\t\n0.970473295015044310,\t0.970461233372481360,\t0.970449169303765240,\t0.970437102808926260,\t0.970425033887994390,\t0.970412962540999850,\t0.970400888767973040,\t0.970388812568944050,\t\n0.970376733943943080,\t0.970364652893000220,\t0.970352569416145670,\t0.970340483513409740,\t0.970328395184822610,\t0.970316304430414280,\t0.970304211250215490,\t0.970292115644255990,\t\n0.970280017612566330,\t0.970267917155176570,\t0.970255814272117050,\t0.970243708963418050,\t0.970231601229109450,\t0.970219491069222120,\t0.970207378483786130,\t0.970195263472831580,\t\n0.970183146036388890,\t0.970171026174488360,\t0.970158903887160310,\t0.970146779174434930,\t0.970134652036342420,\t0.970122522472913530,\t0.970110390484178240,\t0.970098256070167090,\t\n0.970086119230910150,\t0.970073979966438070,\t0.970061838276780940,\t0.970049694161969290,\t0.970037547622033090,\t0.970025398657003320,\t0.970013247266909960,\t0.970001093451783650,\t\n0.969988937211654470,\t0.969976778546552950,\t0.969964617456509530,\t0.969952453941554380,\t0.969940288001718280,\t0.969928119637031410,\t0.969915948847524300,\t0.969903775633227270,\t\n0.969891599994170850,\t0.969879421930385340,\t0.969867241441901400,\t0.969855058528749090,\t0.969842873190959300,\t0.969830685428562430,\t0.969818495241588810,\t0.969806302630068950,\t\n0.969794107594033280,\t0.969781910133512340,\t0.969769710248536750,\t0.969757507939136510,\t0.969745303205342800,\t0.969733096047185830,\t0.969720886464696120,\t0.969708674457904210,\t\n0.969696460026840620,\t0.969684243171535790,\t0.969672023892020230,\t0.969659802188324820,\t0.969647578060479850,\t0.969635351508515990,\t0.969623122532463740,\t0.969610891132353660,\t\n0.969598657308216370,\t0.969586421060082420,\t0.969574182387982210,\t0.969561941291946730,\t0.969549697772006500,\t0.969537451828191950,\t0.969525203460533720,\t0.969512952669062570,\t\n0.969500699453809010,\t0.969488443814803480,\t0.969476185752077060,\t0.969463925265660160,\t0.969451662355583550,\t0.969439397021877650,\t0.969427129264573310,\t0.969414859083701170,\t\n0.969402586479291890,\t0.969390311451375890,\t0.969378033999984230,\t0.969365754125147690,\t0.969353471826896570,\t0.969341187105261960,\t0.969328899960274270,\t0.969316610391964370,\t\n0.969304318400362910,\t0.969292023985500410,\t0.969279727147408180,\t0.969267427886116530,\t0.969255126201656330,\t0.969242822094058320,\t0.969230515563353270,\t0.969218206609571920,\t\n0.969205895232744810,\t0.969193581432903240,\t0.969181265210077750,\t0.969168946564298970,\t0.969156625495597890,\t0.969144302004005250,\t0.969131976089551820,\t0.969119647752268550,\t\n0.969107316992185890,\t0.969094983809335120,\t0.969082648203746900,\t0.969070310175452090,\t0.969057969724481440,\t0.969045626850865930,\t0.969033281554636310,\t0.969020933835823330,\t\n0.969008583694458190,\t0.968996231130571650,\t0.968983876144194460,\t0.968971518735357580,\t0.968959158904091900,\t0.968946796650428380,\t0.968934431974397880,\t0.968922064876031050,\t\n0.968909695355359200,\t0.968897323412413190,\t0.968884949047223890,\t0.968872572259822150,\t0.968860193050239070,\t0.968847811418505510,\t0.968835427364652340,\t0.968823040888710410,\t\n0.968810651990711040,\t0.968798260670685200,\t0.968785866928663530,\t0.968773470764677350,\t0.968761072178757400,\t0.968748671170934770,\t0.968736267741240220,\t0.968723861889705270,\t\n0.968711453616360680,\t0.968699042921237430,\t0.968686629804366590,\t0.968674214265779150,\t0.968661796305506200,\t0.968649375923578690,\t0.968636953120027620,\t0.968624527894884400,\t\n0.968612100248179790,\t0.968599670179944860,\t0.968587237690210930,\t0.968574802779008760,\t0.968562365446369640,\t0.968549925692324680,\t0.968537483516904610,\t0.968525038920140970,\t\n0.968512591902064850,\t0.968500142462707210,\t0.968487690602099270,\t0.968475236320271990,\t0.968462779617256690,\t0.968450320493084220,\t0.968437858947786220,\t0.968425394981393460,\t\n0.968412928593937350,\t0.968400459785448860,\t0.968387988555959200,\t0.968375514905499560,\t0.968363038834101130,\t0.968350560341794900,\t0.968338079428612500,\t0.968325596094584910,\t\n0.968313110339743320,\t0.968300622164118940,\t0.968288131567742960,\t0.968275638550646690,\t0.968263143112861210,\t0.968250645254417950,\t0.968238144975348100,\t0.968225642275682970,\t\n0.968213137155453650,\t0.968200629614691550,\t0.968188119653427880,\t0.968175607271693830,\t0.968163092469520590,\t0.968150575246939820,\t0.968138055603982580,\t0.968125533540680320,\t\n0.968113009057064100,\t0.968100482153165460,\t0.968087952829015610,\t0.968075421084645840,\t0.968062886920087240,\t0.968050350335371680,\t0.968037811330530350,\t0.968025269905594340,\t\n0.968012726060595300,\t0.968000179795564300,\t0.967987631110532990,\t0.967975080005532230,\t0.967962526480594110,\t0.967949970535749600,\t0.967937412171030240,\t0.967924851386467330,\t\n0.967912288182092300,\t0.967899722557936440,\t0.967887154514031400,\t0.967874584050408160,\t0.967862011167098800,\t0.967849435864134300,\t0.967836858141546300,\t0.967824277999366100,\t\n0.967811695437625240,\t0.967799110456355140,\t0.967786523055587210,\t0.967773933235352770,\t0.967761340995683780,\t0.967748746336611340,\t0.967736149258167090,\t0.967723549760382440,\t\n0.967710947843288930,\t0.967698343506918080,\t0.967685736751301100,\t0.967673127576470060,\t0.967660515982456170,\t0.967647901969290960,\t0.967635285537006060,\t0.967622666685632900,\t\n0.967610045415203120,\t0.967597421725748250,\t0.967584795617299490,\t0.967572167089889020,\t0.967559536143548170,\t0.967546902778308460,\t0.967534266994201420,\t0.967521628791258800,\t\n0.967508988169512140,\t0.967496345128992630,\t0.967483699669732580,\t0.967471051791763290,\t0.967458401495116420,\t0.967445748779823480,\t0.967433093645916120,\t0.967420436093426090,\t\n0.967407776122385040,\t0.967395113732824160,\t0.967382448924775870,\t0.967369781698271370,\t0.967357112053342520,\t0.967344439990020730,\t0.967331765508337990,\t0.967319088608325720,\t\n0.967306409290015770,\t0.967293727553439680,\t0.967281043398629300,\t0.967268356825616400,\t0.967255667834432620,\t0.967242976425109700,\t0.967230282597679290,\t0.967217586352173250,\t\n0.967204887688623010,\t0.967192186607060630,\t0.967179483107517890,\t0.967166777190026530,\t0.967154068854618080,\t0.967141358101324510,\t0.967128644930177580,\t0.967115929341208940,\t\n0.967103211334450320,\t0.967090490909933930,\t0.967077768067691300,\t0.967065042807754180,\t0.967052315130154550,\t0.967039585034924040,\t0.967026852522094640,\t0.967014117591698090,\t\n0.967001380243766030,\t0.966988640478330770,\t0.966975898295423850,\t0.966963153695077130,\t0.966950406677322680,\t0.966937657242192160,\t0.966924905389717430,\t0.966912151119930230,\t\n0.966899394432862880,\t0.966886635328547130,\t0.966873873807014730,\t0.966861109868297650,\t0.966848343512427770,\t0.966835574739437040,\t0.966822803549357350,\t0.966810029942220430,\t\n0.966797253918058710,\t0.966784475476903940,\t0.966771694618787870,\t0.966758911343742480,\t0.966746125651799960,\t0.966733337542992070,\t0.966720547017350550,\t0.966707754074908050,\t\n0.966694958715696000,\t0.966682160939746680,\t0.966669360747091870,\t0.966656558137763740,\t0.966643753111794070,\t0.966630945669215150,\t0.966618135810058620,\t0.966605323534356910,\t\n0.966592508842141980,\t0.966579691733445710,\t0.966566872208300290,\t0.966554050266737570,\t0.966541225908789880,\t0.966528399134488960,\t0.966515569943866890,\t0.966502738336956210,\t\n0.966489904313788560,\t0.966477067874396130,\t0.966464229018811130,\t0.966451387747065520,\t0.966438544059191500,\t0.966425697955220820,\t0.966412849435186130,\t0.966399998499119280,\t\n0.966387145147052480,\t0.966374289379017810,\t0.966361431195047470,\t0.966348570595173540,\t0.966335707579428100,\t0.966322842147843250,\t0.966309974300451510,\t0.966297104037284750,\t\n0.966284231358375270,\t0.966271356263755270,\t0.966258478753456830,\t0.966245598827512260,\t0.966232716485953660,\t0.966219831728812980,\t0.966206944556122990,\t0.966194054967915660,\t\n0.966181162964223180,\t0.966168268545077760,\t0.966155371710511690,\t0.966142472460557180,\t0.966129570795246310,\t0.966116666714611720,\t0.966103760218685490,\t0.966090851307499830,\t\n0.966077939981087040,\t0.966065026239479320,\t0.966052110082709080,\t0.966039191510808640,\t0.966026270523809960,\t0.966013347121745800,\t0.966000421304648360,\t0.965987493072549720,\t\n0.965974562425482520,\t0.965961629363478740,\t0.965948693886571010,\t0.965935755994791310,\t0.965922815688172400,\t0.965909872966746460,\t0.965896927830545820,\t0.965883980279602870,\t\n0.965871030313950050,\t0.965858077933619550,\t0.965845123138643900,\t0.965832165929055300,\t0.965819206304886380,\t0.965806244266169460,\t0.965793279812936940,\t0.965780312945221260,\t\n0.965767343663054830,\t0.965754371966469960,\t0.965741397855499170,\t0.965728421330174780,\t0.965715442390529420,\t0.965702461036595520,\t0.965689477268405480,\t0.965676491085991630,\t\n0.965663502489386700,\t0.965650511478622910,\t0.965637518053732660,\t0.965624522214748810,\t0.965611523961703690,\t0.965598523294629810,\t0.965585520213559590,\t0.965572514718525570,\t\n0.965559506809560150,\t0.965546496486696100,\t0.965533483749965500,\t0.965520468599401440,\t0.965507451035036320,\t0.965494431056902470,\t0.965481408665032510,\t0.965468383859459100,\t\n0.965455356640214650,\t0.965442327007331680,\t0.965429294960843070,\t0.965416260500781220,\t0.965403223627178670,\t0.965390184340068180,\t0.965377142639482160,\t0.965364098525453240,\t\n0.965351051998014190,\t0.965338003057197190,\t0.965324951703035450,\t0.965311897935561270,\t0.965298841754807400,\t0.965285783160806490,\t0.965272722153591060,\t0.965259658733193750,\t\n0.965246592899647430,\t0.965233524652984290,\t0.965220453993237640,\t0.965207380920439780,\t0.965194305434623480,\t0.965181227535821470,\t0.965168147224066410,\t0.965155064499390920,\t\n0.965141979361827550,\t0.965128891811409480,\t0.965115801848169140,\t0.965102709472139390,\t0.965089614683352750,\t0.965076517481842200,\t0.965063417867640270,\t0.965050315840779830,\t\n0.965037211401293280,\t0.965024104549214060,\t0.965010995284574570,\t0.964997883607407460,\t0.964984769517745810,\t0.964971653015622160,\t0.964958534101069350,\t0.964945412774120270,\t\n0.964932289034807320,\t0.964919162883163930,\t0.964906034319222730,\t0.964892903343016360,\t0.964879769954577690,\t0.964866634153939700,\t0.964853495941135010,\t0.964840355316196390,\t\n0.964827212279157130,\t0.964814066830049890,\t0.964800918968907410,\t0.964787768695762660,\t0.964774616010648510,\t0.964761460913597820,\t0.964748303404643460,\t0.964735143483818060,\t\n0.964721981151155040,\t0.964708816406687150,\t0.964695649250447150,\t0.964682479682468120,\t0.964669307702782810,\t0.964656133311424190,\t0.964642956508425130,\t0.964629777293818820,\t\n0.964616595667638020,\t0.964603411629915810,\t0.964590225180685160,\t0.964577036319978820,\t0.964563845047829880,\t0.964550651364271430,\t0.964537455269335990,\t0.964524256763057200,\t\n0.964511055845467810,\t0.964497852516600810,\t0.964484646776489040,\t0.964471438625165820,\t0.964458228062663900,\t0.964445015089016370,\t0.964431799704256190,\t0.964418581908416670,\t\n0.964405361701530680,\t0.964392139083631310,\t0.964378914054751620,\t0.964365686614924610,\t0.964352456764183350,\t0.964339224502560820,\t0.964325989830090440,\t0.964312752746805060,\t\n0.964299513252737770,\t0.964286271347921660,\t0.964273027032389930,\t0.964259780306175650,\t0.964246531169311920,\t0.964233279621831580,\t0.964220025663768300,\t0.964206769295155030,\t\n0.964193510516024750,\t0.964180249326410670,\t0.964166985726346070,\t0.964153719715863940,\t0.964140451294997480,\t0.964127180463779650,\t0.964113907222244220,\t0.964100631570423920,\t\n0.964087353508352060,\t0.964074073036061850,\t0.964060790153586480,\t0.964047504860959030,\t0.964034217158212690,\t0.964020927045381000,\t0.964007634522496940,\t0.963994339589593910,\t\n0.963981042246704890,\t0.963967742493863410,\t0.963954440331102450,\t0.963941135758455530,\t0.963927828775955400,\t0.963914519383636040,\t0.963901207581530310,\t0.963887893369671510,\t\n0.963874576748093070,\t0.963861257716828180,\t0.963847936275910140,\t0.963834612425372050,\t0.963821286165247650,\t0.963807957495570020,\t0.963794626416372480,\t0.963781292927688330,\t\n0.963767957029550980,\t0.963754618721993860,\t0.963741278005050050,\t0.963727934878752860,\t0.963714589343136030,\t0.963701241398232770,\t0.963687891044076480,\t0.963674538280700380,\t\n0.963661183108137860,\t0.963647825526422470,\t0.963634465535587510,\t0.963621103135666180,\t0.963607738326692330,\t0.963594371108699050,\t0.963581001481719880,\t0.963567629445788220,\t\n0.963554255000937500,\t0.963540878147201130,\t0.963527498884612310,\t0.963514117213205010,\t0.963500733133012430,\t0.963487346644067990,\t0.963473957746405210,\t0.963460566440057510,\t\n0.963447172725058420,\t0.963433776601441360,\t0.963420378069239640,\t0.963406977128487220,\t0.963393573779217300,\t0.963380168021463530,\t0.963366759855259320,\t0.963353349280638200,\t\n0.963339936297633700,\t0.963326520906279350,\t0.963313103106608450,\t0.963299682898655090,\t0.963286260282452460,\t0.963272835258034200,\t0.963259407825433840,\t0.963245977984685030,\t\n0.963232545735821180,\t0.963219111078875810,\t0.963205674013882910,\t0.963192234540875770,\t0.963178792659888040,\t0.963165348370953360,\t0.963151901674105250,\t0.963138452569377470,\t\n0.963125001056803540,\t0.963111547136416780,\t0.963098090808251480,\t0.963084632072340960,\t0.963071170928718860,\t0.963057707377418800,\t0.963044241418474440,\t0.963030773051919530,\t\n0.963017302277787480,\t0.963003829096112260,\t0.962990353506927630,\t0.962976875510267120,\t0.962963395106164350,\t0.962949912294653100,\t0.962936427075767100,\t0.962922939449539990,\t\n0.962909449416005310,\t0.962895956975197250,\t0.962882462127149230,\t0.962868964871895110,\t0.962855465209468630,\t0.962841963139903450,\t0.962828458663233410,\t0.962814951779492170,\t\n0.962801442488713240,\t0.962787930790931060,\t0.962774416686179020,\t0.962760900174490900,\t0.962747381255900650,\t0.962733859930441800,\t0.962720336198148340,\t0.962706810059053900,\t\n0.962693281513192560,\t0.962679750560598070,\t0.962666217201304190,\t0.962652681435344770,\t0.962639143262753570,\t0.962625602683564670,\t0.962612059697811610,\t0.962598514305528230,\t\n0.962584966506748850,\t0.962571416301507000,\t0.962557863689836650,\t0.962544308671771540,\t0.962530751247345770,\t0.962517191416593090,\t0.962503629179547350,\t0.962490064536242420,\t\n0.962476497486712490,\t0.962462928030991320,\t0.962449356169112870,\t0.962435781901111010,\t0.962422205227019710,\t0.962408626146872950,\t0.962395044660704250,\t0.962381460768548250,\t\n0.962367874470438590,\t0.962354285766409360,\t0.962340694656494300,\t0.962327101140727500,\t0.962313505219142940,\t0.962299906891774580,\t0.962286306158656290,\t0.962272703019822480,\t\n0.962259097475306910,\t0.962245489525143550,\t0.962231879169366480,\t0.962218266408009780,\t0.962204651241107320,\t0.962191033668693070,\t0.962177413690801450,\t0.962163791307466320,\t\n0.962150166518721650,\t0.962136539324601640,\t0.962122909725140140,\t0.962109277720371470,\t0.962095643310329600,\t0.962082006495048380,\t0.962068367274562460,\t0.962054725648905480,\t\n0.962041081618111750,\t0.962027435182215340,\t0.962013786341250340,\t0.962000135095250840,\t0.961986481444251030,\t0.961972825388284770,\t0.961959166927386700,\t0.961945506061590680,\t\n0.961931842790930910,\t0.961918177115441590,\t0.961904509035156790,\t0.961890838550110590,\t0.961877165660337210,\t0.961863490365871150,\t0.961849812666746300,\t0.961836132562996940,\t\n0.961822450054657270,\t0.961808765141761500,\t0.961795077824343700,\t0.961781388102438290,\t0.961767695976079250,\t0.961754001445301100,\t0.961740304510137920,\t0.961726605170624030,\t\n0.961712903426793610,\t0.961699199278680970,\t0.961685492726320310,\t0.961671783769745710,\t0.961658072408991820,\t0.961644358644092810,\t0.961630642475082900,\t0.961616923901996380,\t\n0.961603202924867560,\t0.961589479543730750,\t0.961575753758620140,\t0.961562025569569930,\t0.961548294976614980,\t0.961534561979789260,\t0.961520826579127070,\t0.961507088774662950,\t\n0.961493348566430980,\t0.961479605954465690,\t0.961465860938801380,\t0.961452113519472240,\t0.961438363696512920,\t0.961424611469957830,\t0.961410856839841180,\t0.961397099806197360,\t\n0.961383340369060810,\t0.961369578528465830,\t0.961355814284446720,\t0.961342047637038340,\t0.961328278586274790,\t0.961314507132190580,\t0.961300733274820130,\t0.961286957014197860,\t\n0.961273178350358080,\t0.961259397283335430,\t0.961245613813164090,\t0.961231827939878940,\t0.961218039663514160,\t0.961204248984104280,\t0.961190455901683840,\t0.961176660416287240,\t\n0.961162862527948910,\t0.961149062236703600,\t0.961135259542585270,\t0.961121454445629020,\t0.961107646945869140,\t0.961093837043340170,\t0.961080024738076630,\t0.961066210030113060,\t\n0.961052392919483860,\t0.961038573406223450,\t0.961024751490366920,\t0.961010927171948470,\t0.960997100451002730,\t0.960983271327564230,\t0.960969439801667490,\t0.960955605873347270,\t\n0.960941769542637990,\t0.960927930809573950,\t0.960914089674190450,\t0.960900246136521700,\t0.960886400196602320,\t0.960872551854466850,\t0.960858701110150150,\t0.960844847963686630,\t\n0.960830992415110720,\t0.960817134464457600,\t0.960803274111761700,\t0.960789411357057530,\t0.960775546200379860,\t0.960761678641763320,\t0.960747808681242540,\t0.960733936318852290,\t\n0.960720061554626970,\t0.960706184388601780,\t0.960692304820811030,\t0.960678422851289570,\t0.960664538480072050,\t0.960650651707193210,\t0.960636762532687700,\t0.960622870956590270,\t\n0.960608976978935440,\t0.960595080599758510,\t0.960581181819093690,\t0.960567280636976050,\t0.960553377053440240,\t0.960539471068520890,\t0.960525562682252860,\t0.960511651894670690,\t\n0.960497738705809680,\t0.960483823115704350,\t0.960469905124389340,\t0.960455984731899640,\t0.960442061938269980,\t0.960428136743535220,\t0.960414209147730010,\t0.960400279150889100,\t\n0.960386346753047790,\t0.960372411954240500,\t0.960358474754502200,\t0.960344535153867750,\t0.960330593152372010,\t0.960316648750049740,\t0.960302701946935790,\t0.960288752743064910,\t\n0.960274801138472410,\t0.960260847133192820,\t0.960246890727261220,\t0.960232931920712350,\t0.960218970713581090,\t0.960205007105902510,\t0.960191041097711030,\t0.960177072689042290,\t\n0.960163101879930920,\t0.960149128670411690,\t0.960135153060519660,\t0.960121175050289820,\t0.960107194639756910,\t0.960093211828956130,\t0.960079226617922000,\t0.960065239006690160,\t\n0.960051248995295150,\t0.960037256583772040,\t0.960023261772155690,\t0.960009264560481300,\t0.959995264948783730,\t0.959981262937097730,\t0.959967258525458830,\t0.959953251713901780,\t\n0.959939242502461540,\t0.959925230891173320,\t0.959911216880071970,\t0.959897200469192580,\t0.959883181658570120,\t0.959869160448239560,\t0.959855136838236200,\t0.959841110828595130,\t\n0.959827082419351330,\t0.959813051610539650,\t0.959799018402195500,\t0.959784982794353760,\t0.959770944787049500,\t0.959756904380317690,\t0.959742861574193860,\t0.959728816368712880,\t\n0.959714768763909820,\t0.959700718759819880,\t0.959686666356478150,\t0.959672611553919700,\t0.959658554352179500,\t0.959644494751293210,\t0.959630432751295670,\t0.959616368352221970,\t\n0.959602301554107420,\t0.959588232356987090,\t0.959574160760896190,\t0.959560086765869900,\t0.959546010371943200,\t0.959531931579151620,\t0.959517850387530240,\t0.959503766797114240,\t\n0.959489680807938840,\t0.959475592420039210,\t0.959461501633450680,\t0.959447408448208310,\t0.959433312864347190,\t0.959419214881903070,\t0.959405114500910820,\t0.959391011721405840,\t\n0.959376906543423340,\t0.959362798966998610,\t0.959348688992166850,\t0.959334576618963150,\t0.959320461847423140,\t0.959306344677582130,\t0.959292225109475210,\t0.959278103143137660,\t\n0.959263978778604920,\t0.959249852015912170,\t0.959235722855094840,\t0.959221591296188000,\t0.959207457339227300,\t0.959193320984248030,\t0.959179182231285510,\t0.959165041080375040,\t\n0.959150897531551920,\t0.959136751584851450,\t0.959122603240309070,\t0.959108452497960280,\t0.959094299357840410,\t0.959080143819984740,\t0.959065985884428710,\t0.959051825551207830,\t\n0.959037662820357300,\t0.959023497691912640,\t0.959009330165908950,\t0.958995160242382180,\t0.958980987921367540,\t0.958966813202900450,\t0.958952636087016310,\t0.958938456573750540,\t\n0.958924274663138680,\t0.958910090355216130,\t0.958895903650018090,\t0.958881714547580530,\t0.958867523047938650,\t0.958853329151128090,\t0.958839132857184140,\t0.958824934166142340,\t\n0.958810733078038210,\t0.958796529592906950,\t0.958782323710784650,\t0.958768115431706590,\t0.958753904755708210,\t0.958739691682825020,\t0.958725476213092680,\t0.958711258346546690,\t\n0.958697038083222490,\t0.958682815423155370,\t0.958668590366381520,\t0.958654362912936260,\t0.958640133062855000,\t0.958625900816173490,\t0.958611666172927150,\t0.958597429133151710,\t\n0.958583189696882610,\t0.958568947864155360,\t0.958554703635005940,\t0.958540457009469880,\t0.958526207987582590,\t0.958511956569379820,\t0.958497702754897100,\t0.958483446544170170,\t\n0.958469187937234350,\t0.958454926934125710,\t0.958440663534879890,\t0.958426397739532420,\t0.958412129548118940,\t0.958397858960675090,\t0.958383585977236610,\t0.958369310597839140,\t\n0.958355032822518220,\t0.958340752651309910,\t0.958326470084249650,\t0.958312185121373390,\t0.958297897762716570,\t0.958283608008315020,\t0.958269315858204410,\t0.958255021312420240,\t\n0.958240724370998830,\t0.958226425033975590,\t0.958212123301386280,\t0.958197819173266740,\t0.958183512649652510,\t0.958169203730579680,\t0.958154892416083650,\t0.958140578706200290,\t\n0.958126262600965670,\t0.958111944100415340,\t0.958097623204585250,\t0.958083299913511040,\t0.958068974227228590,\t0.958054646145773740,\t0.958040315669182240,\t0.958025982797489740,\t\n0.958011647530732540,\t0.957997309868946160,\t0.957982969812166460,\t0.957968627360429430,\t0.957954282513770790,\t0.957939935272226540,\t0.957925585635832080,\t0.957911233604623940,\t\n0.957896879178637750,\t0.957882522357909380,\t0.957868163142474690,\t0.957853801532369540,\t0.957839437527629900,\t0.957825071128291740,\t0.957810702334390580,\t0.957796331145962850,\t\n0.957781957563044410,\t0.957767581585671100,\t0.957753203213878690,\t0.957738822447703360,\t0.957724439287180980,\t0.957710053732347300,\t0.957695665783238730,\t0.957681275439890900,\t\n0.957666882702339910,\t0.957652487570621710,\t0.957638090044772290,\t0.957623690124827730,\t0.957609287810823880,\t0.957594883102796610,\t0.957580476000782330,\t0.957566066504816790,\t\n0.957551654614936190,\t0.957537240331176490,\t0.957522823653573550,\t0.957508404582163690,\t0.957493983116982750,\t0.957479559258066600,\t0.957465133005451770,\t0.957450704359174230,\t\n0.957436273319269840,\t0.957421839885774780,\t0.957407404058725040,\t0.957392965838156920,\t0.957378525224106050,\t0.957364082216609180,\t0.957349636815702070,\t0.957335189021420900,\t\n0.957320738833801750,\t0.957306286252880720,\t0.957291831278693990,\t0.957277373911277650,\t0.957262914150667670,\t0.957248451996900670,\t0.957233987450012540,\t0.957219520510039450,\t\n0.957205051177017490,\t0.957190579450982960,\t0.957176105331971950,\t0.957161628820020650,\t0.957147149915165030,\t0.957132668617441840,\t0.957118184926887050,\t0.957103698843536630,\t\n0.957089210367427110,\t0.957074719498594460,\t0.957060226237075100,\t0.957045730582904870,\t0.957031232536120550,\t0.957016732096758190,\t0.957002229264853900,\t0.956987724040444190,\t\n0.956973216423565030,\t0.956958706414252960,\t0.956944194012544050,\t0.956929679218474380,\t0.956915162032080820,\t0.956900642453399340,\t0.956886120482466240,\t0.956871596119317820,\t\n0.956857069363990400,\t0.956842540216520380,\t0.956828008676943730,\t0.956813474745297320,\t0.956798938421617230,\t0.956784399705939760,\t0.956769858598301330,\t0.956755315098738120,\t\n0.956740769207286790,\t0.956726220923983520,\t0.956711670248864390,\t0.956697117181966260,\t0.956682561723325440,\t0.956668003872978230,\t0.956653443630961050,\t0.956638880997310090,\t\n0.956624315972062100,\t0.956609748555253270,\t0.956595178746919790,\t0.956580606547098640,\t0.956566031955825900,\t0.956551454973138200,\t0.956536875599071750,\t0.956522293833663160,\t\n0.956507709676948870,\t0.956493123128965060,\t0.956478534189748600,\t0.956463942859335890,\t0.956449349137763250,\t0.956434753025067310,\t0.956420154521284480,\t0.956405553626451300,\t\n0.956390950340604170,\t0.956376344663779410,\t0.956361736596014090,\t0.956347126137344410,\t0.956332513287806880,\t0.956317898047438050,\t0.956303280416274550,\t0.956288660394352790,\t\n0.956274037981709400,\t0.956259413178380700,\t0.956244785984403660,\t0.956230156399814680,\t0.956215524424650300,\t0.956200890058947150,\t0.956186253302741760,\t0.956171614156070770,\t\n0.956156972618970370,\t0.956142328691477860,\t0.956127682373629550,\t0.956113033665462080,\t0.956098382567011960,\t0.956083729078315850,\t0.956069073199410480,\t0.956054414930332390,\t\n0.956039754271118090,\t0.956025091221804570,\t0.956010425782428340,\t0.955995757953026050,\t0.955981087733634330,\t0.955966415124289930,\t0.955951740125029590,\t0.955937062735889520,\t\n0.955922382956907010,\t0.955907700788118710,\t0.955893016229561020,\t0.955878329281270810,\t0.955863639943284830,\t0.955848948215639700,\t0.955834254098372190,\t0.955819557591518820,\t\n0.955804858695116890,\t0.955790157409202700,\t0.955775453733813120,\t0.955760747668984890,\t0.955746039214754870,\t0.955731328371159710,\t0.955716615138236250,\t0.955701899516021030,\t\n0.955687181504551230,\t0.955672461103863500,\t0.955657738313994700,\t0.955643013134981460,\t0.955628285566860750,\t0.955613555609669320,\t0.955598823263443700,\t0.955584088528221300,\t\n0.955569351404038650,\t0.955554611890932710,\t0.955539869988940140,\t0.955525125698098000,\t0.955510379018442930,\t0.955495629950012030,\t0.955480878492841690,\t0.955466124646969450,\t\n0.955451368412431950,\t0.955436609789265920,\t0.955421848777508460,\t0.955407085377196320,\t0.955392319588366570,\t0.955377551411055960,\t0.955362780845301130,\t0.955348007891139720,\t\n0.955333232548608250,\t0.955318454817743690,\t0.955303674698583020,\t0.955288892191163090,\t0.955274107295520980,\t0.955259320011693450,\t0.955244530339717680,\t0.955229738279630760,\t\n0.955214943831469430,\t0.955200146995270670,\t0.955185347771071670,\t0.955170546158909170,\t0.955155742158820380,\t0.955140935770842030,\t0.955126126995011540,\t0.955111315831365660,\t\n0.955096502279941580,\t0.955081686340776170,\t0.955066868013906610,\t0.955052047299369880,\t0.955037224197202830,\t0.955022398707442880,\t0.955007570830126990,\t0.954992740565292150,\t\n0.954977907912975430,\t0.954963072873213910,\t0.954948235446044790,\t0.954933395631505140,\t0.954918553429631610,\t0.954903708840462050,\t0.954888861864033100,\t0.954874012500382060,\t\n0.954859160749546020,\t0.954844306611562050,\t0.954829450086467360,\t0.954814591174299010,\t0.954799729875093870,\t0.954784866188889800,\t0.954770000115723440,\t0.954755131655632190,\t\n0.954740260808653040,\t0.954725387574823170,\t0.954710511954179890,\t0.954695633946760160,\t0.954680753552601510,\t0.954665870771741030,\t0.954650985604215800,\t0.954636098050063110,\t\n0.954621208109320270,\t0.954606315782024370,\t0.954591421068212600,\t0.954576523967922140,\t0.954561624481190530,\t0.954546722608054950,\t0.954531818348552500,\t0.954516911702720460,\t\n0.954502002670596260,\t0.954487091252216980,\t0.954472177447620030,\t0.954457261256842270,\t0.954442342679921670,\t0.954427421716895210,\t0.954412498367800290,\t0.954397572632674000,\t\n0.954382644511553860,\t0.954367714004477060,\t0.954352781111480700,\t0.954337845832602730,\t0.954322908167880010,\t0.954307968117350190,\t0.954293025681050340,\t0.954278080859017890,\t\n0.954263133651290340,\t0.954248184057904900,\t0.954233232078898760,\t0.954218277714309780,\t0.954203320964175150,\t0.954188361828532170,\t0.954173400307418370,\t0.954158436400870950,\t\n0.954143470108927530,\t0.954128501431625090,\t0.954113530369001710,\t0.954098556921094580,\t0.954083581087940890,\t0.954068602869578400,\t0.954053622266044290,\t0.954038639277376200,\t\n0.954023653903611550,\t0.954008666144787410,\t0.953993676000941870,\t0.953978683472112120,\t0.953963688558335800,\t0.953948691259650090,\t0.953933691576092760,\t0.953918689507701200,\t\n0.953903685054512840,\t0.953888678216565090,\t0.953873668993895920,\t0.953858657386542520,\t0.953843643394542420,\t0.953828627017933360,\t0.953813608256752650,\t0.953798587111037930,\t\n0.953783563580826390,\t0.953768537666156320,\t0.953753509367064930,\t0.953738478683589630,\t0.953723445615768270,\t0.953708410163638280,\t0.953693372327237170,\t0.953678332106602690,\t\n0.953663289501772150,\t0.953648244512783630,\t0.953633197139674430,\t0.953618147382482300,\t0.953603095241244760,\t0.953588040715999560,\t0.953572983806784240,\t0.953557924513636410,\t\n0.953542862836593510,\t0.953527798775693710,\t0.953512732330974440,\t0.953497663502473340,\t0.953482592290228140,\t0.953467518694276370,\t0.953452442714655790,\t0.953437364351403920,\t\n0.953422283604558940,\t0.953407200474158170,\t0.953392114960239350,\t0.953377027062840330,\t0.953361936781998760,\t0.953346844117752280,\t0.953331749070138730,\t0.953316651639195540,\t\n0.953301551824960900,\t0.953286449627472440,\t0.953271345046767920,\t0.953256238082884950,\t0.953241128735861420,\t0.953226017005735060,\t0.953210902892543400,\t0.953195786396324850,\t\n0.953180667517116720,\t0.953165546254956860,\t0.953150422609883250,\t0.953135296581933520,\t0.953120168171145640,\t0.953105037377557250,\t0.953089904201206100,\t0.953074768642130370,\t\n0.953059630700367700,\t0.953044490375955950,\t0.953029347668933100,\t0.953014202579336780,\t0.952999055107204950,\t0.952983905252575480,\t0.952968753015486000,\t0.952953598395974930,\t\n0.952938441394079790,\t0.952923282009838670,\t0.952908120243289190,\t0.952892956094469560,\t0.952877789563417510,\t0.952862620650170580,\t0.952847449354767510,\t0.952832275677245820,\t\n0.952817099617643380,\t0.952801921175998160,\t0.952786740352348230,\t0.952771557146731340,\t0.952756371559185690,\t0.952741183589748800,\t0.952725993238459190,\t0.952710800505354620,\t\n0.952695605390473040,\t0.952680407893852440,\t0.952665208015530780,\t0.952650005755546150,\t0.952634801113936170,\t0.952619594090739600,\t0.952604384685993950,\t0.952589172899737320,\t\n0.952573958732007790,\t0.952558742182843420,\t0.952543523252282090,\t0.952528301940361980,\t0.952513078247120840,\t0.952497852172597300,\t0.952482623716829120,\t0.952467392879854380,\t\n0.952452159661711260,\t0.952436924062437630,\t0.952421686082071670,\t0.952406445720651580,\t0.952391202978215000,\t0.952375957854800780,\t0.952360710350446670,\t0.952345460465190750,\t\n0.952330208199071100,\t0.952314953552126030,\t0.952299696524393610,\t0.952284437115911600,\t0.952269175326718730,\t0.952253911156852980,\t0.952238644606352550,\t0.952223375675255390,\t\n0.952208104363599820,\t0.952192830671423910,\t0.952177554598766070,\t0.952162276145663950,\t0.952146995312156520,\t0.952131712098281510,\t0.952116426504077240,\t0.952101138529581890,\t\n0.952085848174833770,\t0.952070555439870960,\t0.952055260324731760,\t0.952039962829454240,\t0.952024662954076950,\t0.952009360698638060,\t0.951994056063175780,\t0.951978749047728390,\t\n0.951963439652334100,\t0.951948127877031200,\t0.951932813721857670,\t0.951917497186852370,\t0.951902178272053370,\t0.951886856977498970,\t0.951871533303227380,\t0.951856207249277000,\t\n0.951840878815686020,\t0.951825548002492860,\t0.951810214809735600,\t0.951794879237453100,\t0.951779541285683320,\t0.951764200954464790,\t0.951748858243835700,\t0.951733513153834480,\t\n0.951718165684499410,\t0.951702815835868800,\t0.951687463607981290,\t0.951672109000875180,\t0.951656752014588770,\t0.951641392649160480,\t0.951626030904628720,\t0.951610666781031900,\t\n0.951595300278408330,\t0.951579931396796310,\t0.951564560136234800,\t0.951549186496761790,\t0.951533810478415790,\t0.951518432081235320,\t0.951503051305258810,\t0.951487668150524660,\t\n0.951472282617071290,\t0.951456894704937000,\t0.951441504414160640,\t0.951426111744780640,\t0.951410716696835300,\t0.951395319270363140,\t0.951379919465402680,\t0.951364517281992560,\t\n0.951349112720170750,\t0.951333705779976450,\t0.951318296461447830,\t0.951302884764623550,\t0.951287470689542110,\t0.951272054236241840,\t0.951256635404761570,\t0.951241214195139630,\t\n0.951225790607414410,\t0.951210364641625010,\t0.951194936297809710,\t0.951179505576007060,\t0.951164072476255560,\t0.951148636998593980,\t0.951133199143060830,\t0.951117758909694520,\t\n0.951102316298533700,\t0.951086871309617330,\t0.951071423942983720,\t0.951055974198671610,\t0.951040522076719520,\t0.951025067577166210,\t0.951009610700050190,\t0.950994151445409770,\t\n0.950978689813284370,\t0.950963225803712180,\t0.950947759416731930,\t0.950932290652382380,\t0.950916819510701950,\t0.950901345991729600,\t0.950885870095503850,\t0.950870391822063120,\t\n0.950854911171446720,\t0.950839428143693040,\t0.950823942738840740,\t0.950808454956928560,\t0.950792964797995350,\t0.950777472262079650,\t0.950761977349220080,\t0.950746480059455720,\t\n0.950730980392825220,\t0.950715478349367320,\t0.950699973929120650,\t0.950684467132124070,\t0.950668957958416330,\t0.950653446408036170,\t0.950637932481022240,\t0.950622416177413610,\t\n0.950606897497249030,\t0.950591376440567130,\t0.950575853007406880,\t0.950560327197806920,\t0.950544799011806110,\t0.950529268449443410,\t0.950513735510757130,\t0.950498200195786900,\t\n0.950482662504571140,\t0.950467122437148700,\t0.950451579993558560,\t0.950436035173839340,\t0.950420487978030140,\t0.950404938406169350,\t0.950389386458296510,\t0.950373832134450260,\t\n0.950358275434669330,\t0.950342716358992810,\t0.950327154907459450,\t0.950311591080108210,\t0.950296024876977950,\t0.950280456298107420,\t0.950264885343536040,\t0.950249312013302430,\t\n0.950233736307445450,\t0.950218158226004190,\t0.950202577769017620,\t0.950186994936524480,\t0.950171409728563950,\t0.950155822145174580,\t0.950140232186395870,\t0.950124639852266690,\t\n0.950109045142825900,\t0.950093448058112470,\t0.950077848598165350,\t0.950062246763023640,\t0.950046642552726080,\t0.950031035967312200,\t0.950015427006820730,\t0.949999815671290660,\t\n0.949984201960761050,\t0.949968585875270890,\t0.949952967414859350,\t0.949937346579565410,\t0.949921723369427710,\t0.949906097784486090,\t0.949890469824779200,\t0.949874839490346120,\t\n0.949859206781225930,\t0.949843571697457700,\t0.949827934239080630,\t0.949812294406133350,\t0.949796652198655610,\t0.949781007616686380,\t0.949765360660264510,\t0.949749711329429200,\t\n0.949734059624219750,\t0.949718405544675020,\t0.949702749090834410,\t0.949687090262736570,\t0.949671429060421230,\t0.949655765483927380,\t0.949640099533294200,\t0.949624431208560660,\t\n0.949608760509766060,\t0.949593087436949590,\t0.949577411990150330,\t0.949561734169407370,\t0.949546053974760220,\t0.949530371406248070,\t0.949514686463909910,\t0.949498999147785020,\t\n0.949483309457912710,\t0.949467617394332050,\t0.949451922957082140,\t0.949436226146202600,\t0.949420526961732620,\t0.949404825403711290,\t0.949389121472177800,\t0.949373415167171660,\t\n0.949357706488731860,\t0.949341995436897790,\t0.949326282011708540,\t0.949310566213203870,\t0.949294848041422720,\t0.949279127496404420,\t0.949263404578188360,\t0.949247679286813750,\t\n0.949231951622319990,\t0.949216221584746390,\t0.949200489174131910,\t0.949184754390516420,\t0.949169017233939090,\t0.949153277704439250,\t0.949137535802056180,\t0.949121791526829290,\t\n0.949106044878797910,\t0.949090295858001200,\t0.949074544464478920,\t0.949058790698270370,\t0.949043034559414860,\t0.949027276047951670,\t0.949011515163920350,\t0.948995751907360190,\t\n0.948979986278310710,\t0.948964218276810990,\t0.948948447902900890,\t0.948932675156619830,\t0.948916900038006990,\t0.948901122547101910,\t0.948885342683944090,\t0.948869560448572850,\t\n0.948853775841027370,\t0.948837988861347850,\t0.948822199509573250,\t0.948806407785743210,\t0.948790613689897140,\t0.948774817222074570,\t0.948759018382314910,\t0.948743217170657790,\t\n0.948727413587142300,\t0.948711607631808510,\t0.948695799304695720,\t0.948679988605843460,\t0.948664175535291250,\t0.948648360093078510,\t0.948632542279244980,\t0.948616722093829970,\t\n0.948600899536872990,\t0.948585074608414010,\t0.948569247308492350,\t0.948553417637147510,\t0.948537585594419250,\t0.948521751180346870,\t0.948505914394970230,\t0.948490075238328510,\t\n0.948474233710461800,\t0.948458389811409620,\t0.948442543541211380,\t0.948426694899906830,\t0.948410843887535490,\t0.948394990504137110,\t0.948379134749751220,\t0.948363276624417220,\t\n0.948347416128175300,\t0.948331553261064770,\t0.948315688023125490,\t0.948299820414396870,\t0.948283950434918750,\t0.948268078084730790,\t0.948252203363872390,\t0.948236326272383630,\t\n0.948220446810304150,\t0.948204564977673580,\t0.948188680774531560,\t0.948172794200917820,\t0.948156905256872020,\t0.948141013942434110,\t0.948125120257643280,\t0.948109224202539960,\t\n0.948093325777163540,\t0.948077424981553900,\t0.948061521815750650,\t0.948045616279793560,\t0.948029708373722470,\t0.948013798097577130,\t0.947997885451396960,\t0.947981970435222370,\t\n0.947966053049092870,\t0.947950133293048340,\t0.947934211167128280,\t0.947918286671372790,\t0.947902359805821600,\t0.947886430570514250,\t0.947870498965491030,\t0.947854564990791570,\t\n0.947838628646455740,\t0.947822689932523390,\t0.947806748849034260,\t0.947790805396028220,\t0.947774859573545240,\t0.947758911381624710,\t0.947742960820307290,\t0.947727007889632490,\t\n0.947711052589640060,\t0.947695094920370070,\t0.947679134881862280,\t0.947663172474156770,\t0.947647207697293270,\t0.947631240551311430,\t0.947615271036251870,\t0.947599299152154020,\t\n0.947583324899057940,\t0.947567348277003620,\t0.947551369286030900,\t0.947535387926179750,\t0.947519404197489810,\t0.947503418100001720,\t0.947487429633754990,\t0.947471438798789810,\t\n0.947455445595145940,\t0.947439450022863450,\t0.947423452081982420,\t0.947407451772542710,\t0.947391449094584060,\t0.947375444048147110,\t0.947359436633271490,\t0.947343426849997280,\t\n0.947327414698364570,\t0.947311400178413310,\t0.947295383290183590,\t0.947279364033715040,\t0.947263342409048410,\t0.947247318416223450,\t0.947231292055280120,\t0.947215263326258610,\t\n0.947199232229198880,\t0.947183198764141140,\t0.947167162931125460,\t0.947151124730191470,\t0.947135084161380040,\t0.947119041224730780,\t0.947102995920284020,\t0.947086948248079820,\t\n0.947070898208158150,\t0.947054845800559210,\t0.947038791025323290,\t0.947022733882490030,\t0.947006674372100180,\t0.946990612494193700,\t0.946974548248810670,\t0.946958481635991280,\t\n0.946942412655775610,\t0.946926341308203970,\t0.946910267593316200,\t0.946894191511153060,\t0.946878113061754400,\t0.946862032245160520,\t0.946845949061411510,\t0.946829863510547650,\t\n0.946813775592609150,\t0.946797685307636190,\t0.946781592655668750,\t0.946765497636747550,\t0.946749400250912700,\t0.946733300498204260,\t0.946717198378662640,\t0.946701093892327930,\t\n0.946684987039240530,\t0.946668877819440760,\t0.946652766232968460,\t0.946636652279864490,\t0.946620535960168820,\t0.946604417273921970,\t0.946588296221163920,\t0.946572172801935290,\t\n0.946556047016276050,\t0.946539918864226500,\t0.946523788345827510,\t0.946507655461118920,\t0.946491520210141270,\t0.946475382592934840,\t0.946459242609539950,\t0.946443100259996890,\t\n0.946426955544346080,\t0.946410808462627710,\t0.946394659014882510,\t0.946378507201150690,\t0.946362353021472540,\t0.946346196475888580,\t0.946330037564439120,\t0.946313876287164570,\t\n0.946297712644105000,\t0.946281546635301400,\t0.946265378260794040,\t0.946249207520623250,\t0.946233034414829310,\t0.946216858943452870,\t0.946200681106534320,\t0.946184500904113990,\t\n0.946168318336232160,\t0.946152133402929810,\t0.946135946104247120,\t0.946119756440224500,\t0.946103564410902600,\t0.946087370016321820,\t0.946071173256522460,\t0.946054974131545270,\t\n0.946038772641430330,\t0.946022568786218820,\t0.946006362565950830,\t0.945990153980666880,\t0.945973943030407600,\t0.945957729715213520,\t0.945941514035125050,\t0.945925295990182490,\t\n0.945909075580427030,\t0.945892852805898850,\t0.945876627666638490,\t0.945860400162686690,\t0.945844170294083740,\t0.945827938060870510,\t0.945811703463087290,\t0.945795466500774620,\t\n0.945779227173973560,\t0.945762985482724420,\t0.945746741427067830,\t0.945730495007044310,\t0.945714246222694620,\t0.945697995074059380,\t0.945681741561179010,\t0.945665485684094140,\t\n0.945649227442845740,\t0.945632966837474330,\t0.945616703868020550,\t0.945600438534524910,\t0.945584170837028170,\t0.945567900775571070,\t0.945551628350193910,\t0.945535353560937990,\t\n0.945519076407843610,\t0.945502796890951620,\t0.945486515010302560,\t0.945470230765937280,\t0.945453944157896410,\t0.945437655186220690,\t0.945421363850950550,\t0.945405070152127270,\t\n0.945388774089791270,\t0.945372475663983410,\t0.945356174874744330,\t0.945339871722114760,\t0.945323566206135560,\t0.945307258326847140,\t0.945290948084290930,\t0.945274635478507320,\t\n0.945258320509537060,\t0.945242003177421020,\t0.945225683482200040,\t0.945209361423914760,\t0.945193037002606150,\t0.945176710218314620,\t0.945160381071081580,\t0.945144049560947660,\t\n0.945127715687953620,\t0.945111379452140190,\t0.945095040853548450,\t0.945078699892219040,\t0.945062356568192820,\t0.945046010881510520,\t0.945029662832213460,\t0.945013312420342140,\t\n0.944996959645937660,\t0.944980604509040760,\t0.944964247009692280,\t0.944947887147933210,\t0.944931524923804170,\t0.944915160337346570,\t0.944898793388601170,\t0.944882424077608700,\t\n0.944866052404410130,\t0.944849678369046540,\t0.944833301971558680,\t0.944816923211987510,\t0.944800542090373900,\t0.944784158606759130,\t0.944767772761183950,\t0.944751384553689340,\t\n0.944734993984316260,\t0.944718601053105790,\t0.944702205760098780,\t0.944685808105336200,\t0.944669408088858800,\t0.944653005710708200,\t0.944636600970925170,\t0.944620193869550540,\t\n0.944603784406625400,\t0.944587372582190940,\t0.944570958396287910,\t0.944554541848957260,\t0.944538122940240530,\t0.944521701670178460,\t0.944505278038812120,\t0.944488852046182710,\t\n0.944472423692331090,\t0.944455992977298430,\t0.944439559901125710,\t0.944423124463853900,\t0.944406686665524520,\t0.944390246506178420,\t0.944373803985856800,\t0.944357359104600500,\t\n0.944340911862450950,\t0.944324462259449100,\t0.944308010295635710,\t0.944291555971052630,\t0.944275099285740720,\t0.944258640239741040,\t0.944242178833094690,\t0.944225715065842960,\t\n0.944209248938026930,\t0.944192780449687800,\t0.944176309600866400,\t0.944159836391604500,\t0.944143360821942950,\t0.944126882891923150,\t0.944110402601586070,\t0.944093919950972920,\t\n0.944077434940125080,\t0.944060947569083650,\t0.944044457837889480,\t0.944027965746584430,\t0.944011471295209570,\t0.943994974483805980,\t0.943978475312414970,\t0.943961973781077820,\t\n0.943945469889835630,\t0.943928963638729580,\t0.943912455027801300,\t0.943895944057091980,\t0.943879430726642820,\t0.943862915036495000,\t0.943846396986689930,\t0.943829876577268800,\t\n0.943813353808273030,\t0.943796828679743680,\t0.943780301191722400,\t0.943763771344250490,\t0.943747239137369020,\t0.943730704571119520,\t0.943714167645543280,\t0.943697628360681610,\t\n0.943681086716575580,\t0.943664542713267160,\t0.943647996350797320,\t0.943631447629207480,\t0.943614896548539140,\t0.943598343108833390,\t0.943581787310131870,\t0.943565229152475870,\t\n0.943548668635906580,\t0.943532105760465870,\t0.943515540526194800,\t0.943498972933135010,\t0.943482402981327680,\t0.943465830670814460,\t0.943449256001636540,\t0.943432678973835540,\t\n0.943416099587452540,\t0.943399517842529620,\t0.943382933739107870,\t0.943366347277228790,\t0.943349758456933810,\t0.943333167278264550,\t0.943316573741262210,\t0.943299977845968310,\t\n0.943283379592424590,\t0.943266778980672570,\t0.943250176010753560,\t0.943233570682709080,\t0.943216962996580640,\t0.943200352952409890,\t0.943183740550238130,\t0.943167125790106860,\t\n0.943150508672057960,\t0.943133889196132840,\t0.943117267362373000,\t0.943100643170819990,\t0.943084016621515420,\t0.943067387714500720,\t0.943050756449817620,\t0.943034122827507320,\t\n0.943017486847612000,\t0.943000848510172850,\t0.942984207815231730,\t0.942967564762830060,\t0.942950919353009450,\t0.942934271585811560,\t0.942917621461277670,\t0.942900968979450080,\t\n0.942884314140369990,\t0.942867656944079150,\t0.942850997390619170,\t0.942834335480031700,\t0.942817671212358490,\t0.942801004587640930,\t0.942784335605920680,\t0.942767664267239900,\t\n0.942750990571639910,\t0.942734314519162450,\t0.942717636109849160,\t0.942700955343741760,\t0.942684272220882020,\t0.942667586741311350,\t0.942650898905072030,\t0.942634208712205380,\t\n0.942617516162753240,\t0.942600821256757260,\t0.942584123994259280,\t0.942567424375301060,\t0.942550722399924100,\t0.942534018068170170,\t0.942517311380081440,\t0.942500602335699540,\t\n0.942483890935066020,\t0.942467177178222810,\t0.942450461065211580,\t0.942433742596074260,\t0.942417021770852630,\t0.942400298589588070,\t0.942383573052323120,\t0.942366845159099300,\t\n0.942350114909958240,\t0.942333382304941900,\t0.942316647344092150,\t0.942299910027450840,\t0.942283170355059370,\t0.942266428326960280,\t0.942249683943195190,\t0.942232937203805850,\t\n0.942216188108834120,\t0.942199436658321950,\t0.942182682852311220,\t0.942165926690843760,\t0.942149168173961100,\t0.942132407301706000,\t0.942115644074119740,\t0.942098878491244410,\t\n0.942082110553121850,\t0.942065340259794050,\t0.942048567611302960,\t0.942031792607690430,\t0.942015015248998000,\t0.941998235535268400,\t0.941981453466543270,\t0.941964669042864470,\t\n0.941947882264273950,\t0.941931093130813800,\t0.941914301642525880,\t0.941897507799451920,\t0.941880711601634450,\t0.941863913049115320,\t0.941847112141936280,\t0.941830308880139520,\t\n0.941813503263766890,\t0.941796695292860590,\t0.941779884967462570,\t0.941763072287614580,\t0.941746257253359140,\t0.941729439864738000,\t0.941712620121793350,\t0.941695798024567150,\t\n0.941678973573101370,\t0.941662146767438200,\t0.941645317607619380,\t0.941628486093687540,\t0.941611652225684550,\t0.941594816003652360,\t0.941577977427633160,\t0.941561136497669040,\t\n0.941544293213802060,\t0.941527447576074320,\t0.941510599584527650,\t0.941493749239204810,\t0.941476896540147660,\t0.941460041487398150,\t0.941443184080998700,\t0.941426324320991160,\t\n0.941409462207417840,\t0.941392597740320800,\t0.941375730919742030,\t0.941358861745724250,\t0.941341990218309330,\t0.941325116337539350,\t0.941308240103456710,\t0.941291361516103380,\t\n0.941274480575521650,\t0.941257597281753400,\t0.941240711634841460,\t0.941223823634827820,\t0.941206933281754530,\t0.941190040575664020,\t0.941173145516598250,\t0.941156248104599750,\t\n0.941139348339710580,\t0.941122446221972720,\t0.941105541751429130,\t0.941088634928121560,\t0.941071725752092520,\t0.941054814223384110,\t0.941037900342038600,\t0.941020984108098420,\t\n0.941004065521605760,\t0.940987144582602690,\t0.940970221291131950,\t0.940953295647235730,\t0.940936367650956340,\t0.940919437302335960,\t0.940902504601416890,\t0.940885569548241650,\t\n0.940868632142852210,\t0.940851692385291430,\t0.940834750275601480,\t0.940817805813824680,\t0.940800859000003320,\t0.940783909834179810,\t0.940766958316396450,\t0.940750004446695760,\t\n0.940733048225119830,\t0.940716089651711500,\t0.940699128726512960,\t0.940682165449566620,\t0.940665199820914900,\t0.940648231840600090,\t0.940631261508664720,\t0.940614288825150970,\t\n0.940597313790101700,\t0.940580336403559200,\t0.940563356665565900,\t0.940546374576164080,\t0.940529390135396490,\t0.940512403343305330,\t0.940495414199933100,\t0.940478422705322110,\t\n0.940461428859515450,\t0.940444432662555060,\t0.940427434114483710,\t0.940410433215343680,\t0.940393429965177610,\t0.940376424364028020,\t0.940359416411937320,\t0.940342406108947700,\t\n0.940325393455102470,\t0.940308378450443790,\t0.940291361095014100,\t0.940274341388856020,\t0.940257319332012060,\t0.940240294924524770,\t0.940223268166436530,\t0.940206239057790330,\t\n0.940189207598628670,\t0.940172173788993870,\t0.940155137628928660,\t0.940138099118475570,\t0.940121058257677330,\t0.940104015046576370,\t0.940086969485215080,\t0.940069921573636780,\t\n0.940052871311883530,\t0.940035818699998190,\t0.940018763738023290,\t0.940001706426001450,\t0.939984646763975310,\t0.939967584751987610,\t0.939950520390080650,\t0.939933453678297610,\t\n0.939916384616681030,\t0.939899313205273530,\t0.939882239444117640,\t0.939865163333256200,\t0.939848084872731860,\t0.939831004062587020,\t0.939813920902864860,\t0.939796835393608030,\t\n0.939779747534859040,\t0.939762657326660760,\t0.939745564769055690,\t0.939728469862086800,\t0.939711372605796740,\t0.939694273000228010,\t0.939677171045423810,\t0.939660066741426660,\t\n0.939642960088279410,\t0.939625851086024810,\t0.939608739734705490,\t0.939591626034364300,\t0.939574509985043770,\t0.939557391586787300,\t0.939540270839637310,\t0.939523147743636770,\t\n0.939506022298828180,\t0.939488894505254630,\t0.939471764362958870,\t0.939454631871983640,\t0.939437497032371560,\t0.939420359844166050,\t0.939403220307409530,\t0.939386078422145050,\t\n0.939368934188415380,\t0.939351787606263370,\t0.939334638675731970,\t0.939317487396863830,\t0.939300333769701790,\t0.939283177794289160,\t0.939266019470668570,\t0.939248858798882870,\t\n0.939231695778975140,\t0.939214530410988120,\t0.939197362694964790,\t0.939180192630947760,\t0.939163020218980570,\t0.939145845459105840,\t0.939128668351366440,\t0.939111488895805310,\t\n0.939094307092465550,\t0.939077122941390010,\t0.939059936442621650,\t0.939042747596203210,\t0.939025556402178110,\t0.939008362860589200,\t0.938991166971479330,\t0.938973968734891580,\t\n0.938956768150868930,\t0.938939565219454210,\t0.938922359940690400,\t0.938905152314621020,\t0.938887942341288690,\t0.938870730020736510,\t0.938853515353007540,\t0.938836298338144750,\t\n0.938819078976191210,\t0.938801857267190010,\t0.938784633211183880,\t0.938767406808216460,\t0.938750178058330500,\t0.938732946961569060,\t0.938715713517975340,\t0.938698477727592300,\t\n0.938681239590463010,\t0.938663999106630680,\t0.938646756276138030,\t0.938629511099028810,\t0.938612263575345770,\t0.938595013705132100,\t0.938577761488430970,\t0.938560506925285360,\t\n0.938543250015738460,\t0.938525990759833120,\t0.938508729157613190,\t0.938491465209121410,\t0.938474198914400980,\t0.938456930273494970,\t0.938439659286446680,\t0.938422385953299300,\t\n0.938405110274095900,\t0.938387832248879450,\t0.938370551877693690,\t0.938353269160581480,\t0.938335984097586230,\t0.938318696688751010,\t0.938301406934119010,\t0.938284114833733420,\t\n0.938266820387637650,\t0.938249523595874550,\t0.938232224458487860,\t0.938214922975520560,\t0.938197619147016050,\t0.938180312973017520,\t0.938163004453568150,\t0.938145693588711250,\t\n0.938128380378489890,\t0.938111064822947820,\t0.938093746922128100,\t0.938076426676074050,\t0.938059104084828840,\t0.938041779148436010,\t0.938024451866938610,\t0.938007122240380190,\t\n0.937989790268803580,\t0.937972455952252760,\t0.937955119290770910,\t0.937937780284401220,\t0.937920438933187000,\t0.937903095237171750,\t0.937885749196398780,\t0.937868400810911160,\t\n0.937851050080752760,\t0.937833697005966750,\t0.937816341586596550,\t0.937798983822685450,\t0.937781623714276980,\t0.937764261261414320,\t0.937746896464141110,\t0.937729529322500310,\t\n0.937712159836536000,\t0.937694788006291250,\t0.937677413831809580,\t0.937660037313134410,\t0.937642658450309030,\t0.937625277243377080,\t0.937607893692381960,\t0.937590507797366750,\t\n0.937573119558375630,\t0.937555728975451700,\t0.937538336048638450,\t0.937520940777979320,\t0.937503543163517810,\t0.937486143205297550,\t0.937468740903361520,\t0.937451336257754010,\t\n0.937433929268518100,\t0.937416519935697410,\t0.937399108259335480,\t0.937381694239475700,\t0.937364277876161720,\t0.937346859169436940,\t0.937329438119344880,\t0.937312014725929400,\t\n0.937294588989233900,\t0.937277160909302020,\t0.937259730486177170,\t0.937242297719902970,\t0.937224862610523070,\t0.937207425158080980,\t0.937189985362620100,\t0.937172543224184530,\t\n0.937155098742817550,\t0.937137651918562800,\t0.937120202751464020,\t0.937102751241564720,\t0.937085297388908440,\t0.937067841193538700,\t0.937050382655499670,\t0.937032921774834660,\t\n0.937015458551587300,\t0.936997992985801330,\t0.936980525077520390,\t0.936963054826788210,\t0.936945582233648320,\t0.936928107298144130,\t0.936910630020320050,\t0.936893150400219250,\t\n0.936875668437885720,\t0.936858184133362970,\t0.936840697486694850,\t0.936823208497924890,\t0.936805717167096600,\t0.936788223494254390,\t0.936770727479441570,\t0.936753229122701870,\t\n0.936735728424079150,\t0.936718225383617150,\t0.936700720001359620,\t0.936683212277350190,\t0.936665702211632480,\t0.936648189804250800,\t0.936630675055248660,\t0.936613157964669820,\t\n0.936595638532558120,\t0.936578116758957300,\t0.936560592643911230,\t0.936543066187463640,\t0.936525537389658050,\t0.936508006250538980,\t0.936490472770149850,\t0.936472936948534510,\t\n0.936455398785736910,\t0.936437858281800710,\t0.936420315436769960,\t0.936402770250688080,\t0.936385222723599590,\t0.936367672855548010,\t0.936350120646577300,\t0.936332566096731210,\t\n0.936315009206053820,\t0.936297449974588860,\t0.936279888402380190,\t0.936262324489471660,\t0.936244758235907470,\t0.936227189641731460,\t0.936209618706987490,\t0.936192045431719410,\t\n0.936174469815971300,\t0.936156891859786900,\t0.936139311563210400,\t0.936121728926285200,\t0.936104143949056060,\t0.936086556631566590,\t0.936068966973860660,\t0.936051374975982340,\t\n0.936033780637975600,\t0.936016183959884400,\t0.935998584941752370,\t0.935980983583624250,\t0.935963379885543680,\t0.935945773847554620,\t0.935928165469701150,\t0.935910554752027220,\t\n0.935892941694576930,\t0.935875326297394340,\t0.935857708560523080,\t0.935840088484007900,\t0.935822466067892430,\t0.935804841312220860,\t0.935787214217037140,\t0.935769584782385370,\t\n0.935751953008309710,\t0.935734318894853810,\t0.935716682442062410,\t0.935699043649979360,\t0.935681402518648620,\t0.935663759048114390,\t0.935646113238420840,\t0.935628465089611950,\t\n0.935610814601731900,\t0.935593161774824540,\t0.935575506608934520,\t0.935557849104105780,\t0.935540189260382400,\t0.935522527077808590,\t0.935504862556428400,\t0.935487195696286130,\t\n0.935469526497425760,\t0.935451854959891360,\t0.935434181083727560,\t0.935416504868978430,\t0.935398826315687940,\t0.935381145423900380,\t0.935363462193659960,\t0.935345776625010950,\t\n0.935328088717997110,\t0.935310398472663400,\t0.935292705889053670,\t0.935275010967212220,\t0.935257313707183240,\t0.935239614109010910,\t0.935221912172739640,\t0.935204207898413520,\t\n0.935186501286076610,\t0.935168792335773660,\t0.935151081047548850,\t0.935133367421446260,\t0.935115651457510300,\t0.935097933155785150,\t0.935080212516315230,\t0.935062489539144840,\t\n0.935044764224317810,\t0.935027036571879240,\t0.935009306581872980,\t0.934991574254343540,\t0.934973839589335110,\t0.934956102586892210,\t0.934938363247058920,\t0.934920621569879430,\t\n0.934902877555398800,\t0.934885131203660900,\t0.934867382514710130,\t0.934849631488590900,\t0.934831878125347630,\t0.934814122425024710,\t0.934796364387666450,\t0.934778604013317030,\t\n0.934760841302021310,\t0.934743076253823470,\t0.934725308868768030,\t0.934707539146899300,\t0.934689767088261680,\t0.934671992692899690,\t0.934654215960857400,\t0.934636436892179790,\t\n0.934618655486911250,\t0.934600871745095980,\t0.934583085666778500,\t0.934565297252003320,\t0.934547506500814970,\t0.934529713413257750,\t0.934511917989376050,\t0.934494120229214740,\t\n0.934476320132818230,\t0.934458517700230920,\t0.934440712931497220,\t0.934422905826661880,\t0.934405096385769180,\t0.934387284608863780,\t0.934369470495989840,\t0.934351654047192560,\t\n0.934333835262516010,\t0.934316014142005050,\t0.934298190685703970,\t0.934280364893657400,\t0.934262536765909980,\t0.934244706302505890,\t0.934226873503490320,\t0.934209038368907560,\t\n0.934191200898802250,\t0.934173361093218910,\t0.934155518952202170,\t0.934137674475796650,\t0.934119827664046890,\t0.934101978516997280,\t0.934084127034693010,\t0.934066273217178500,\t\n0.934048417064498260,\t0.934030558576696920,\t0.934012697753819230,\t0.933994834595909820,\t0.933976969103013310,\t0.933959101275174120,\t0.933941231112437430,\t0.933923358614847650,\t\n0.933905483782449530,\t0.933887606615287690,\t0.933869727113406770,\t0.933851845276851610,\t0.933833961105666410,\t0.933816074599896680,\t0.933798185759586840,\t0.933780294584781510,\t\n0.933762401075525330,\t0.933744505231863250,\t0.933726607053839920,\t0.933708706541500070,\t0.933690803694888110,\t0.933672898514049440,\t0.933654990999028490,\t0.933637081149870100,\t\n0.933619168966619010,\t0.933601254449320070,\t0.933583337598017930,\t0.933565418412757090,\t0.933547496893583070,\t0.933529573040540290,\t0.933511646853673600,\t0.933493718333027860,\t\n0.933475787478647680,\t0.933457854290578150,\t0.933439918768863900,\t0.933421980913549550,\t0.933404040724680640,\t0.933386098202301560,\t0.933368153346457290,\t0.933350206157192550,\t\n0.933332256634552330,\t0.933314304778581460,\t0.933296350589324810,\t0.933278394066827110,\t0.933260435211133550,\t0.933242474022288990,\t0.933224510500338280,\t0.933206544645326260,\t\n0.933188576457297910,\t0.933170605936298080,\t0.933152633082371400,\t0.933134657895563490,\t0.933116680375918990,\t0.933098700523482650,\t0.933080718338299640,\t0.933062733820414820,\t\n0.933044746969873160,\t0.933026757786719730,\t0.933008766270998930,\t0.932990772422756630,\t0.932972776242037450,\t0.932954777728886240,\t0.932936776883348080,\t0.932918773705468050,\t\n0.932900768195291000,\t0.932882760352861770,\t0.932864750178225900,\t0.932846737671428230,\t0.932828722832513720,\t0.932810705661527350,\t0.932792686158514180,\t0.932774664323519410,\t\n0.932756640156587880,\t0.932738613657764450,\t0.932720584827094860,\t0.932702553664623730,\t0.932684520170396270,\t0.932666484344457540,\t0.932648446186852500,\t0.932630405697626450,\t\n0.932612362876824360,\t0.932594317724490970,\t0.932576270240672130,\t0.932558220425412700,\t0.932540168278757630,\t0.932522113800752230,\t0.932504056991441450,\t0.932485997850870610,\t\n0.932467936379084430,\t0.932449872576128660,\t0.932431806442048260,\t0.932413737976888310,\t0.932395667180694110,\t0.932377594053510620,\t0.932359518595383240,\t0.932341440806357060,\t\n0.932323360686476920,\t0.932305278235788680,\t0.932287193454337300,\t0.932269106342167860,\t0.932251016899325770,\t0.932232925125856090,\t0.932214831021804020,\t0.932196734587214970,\t\n0.932178635822133780,\t0.932160534726606200,\t0.932142431300677420,\t0.932124325544392510,\t0.932106217457796760,\t0.932088107040935480,\t0.932069994293853840,\t0.932051879216597050,\t\n0.932033761809210830,\t0.932015642071740150,\t0.931997520004230420,\t0.931979395606726930,\t0.931961268879274880,\t0.931943139821919670,\t0.931925008434706600,\t0.931906874717680740,\t\n0.931888738670887950,\t0.931870600294373410,\t0.931852459588182300,\t0.931834316552360040,\t0.931816171186952040,\t0.931798023492003580,\t0.931779873467559640,\t0.931761721113666510,\t\n0.931743566430368930,\t0.931725409417712540,\t0.931707250075742620,\t0.931689088404504480,\t0.931670924404043750,\t0.931652758074405620,\t0.931634589415635260,\t0.931616418427778760,\t\n0.931598245110881300,\t0.931580069464988170,\t0.931561891490144900,\t0.931543711186396780,\t0.931525528553789560,\t0.931507343592368420,\t0.931489156302178540,\t0.931470966683266230,\t\n0.931452774735676340,\t0.931434580459454710,\t0.931416383854646420,\t0.931398184921297330,\t0.931379983659452740,\t0.931361780069157820,\t0.931343574150458870,\t0.931325365903400870,\t\n0.931307155328029550,\t0.931288942424390310,\t0.931270727192528680,\t0.931252509632490290,\t0.931234289744320540,\t0.931216067528064850,\t0.931197842983769180,\t0.931179616111479040,\t\n0.931161386911239840,\t0.931143155383097110,\t0.931124921527096470,\t0.931106685343283560,\t0.931088446831704000,\t0.931070205992402980,\t0.931051962825426680,\t0.931033717330820520,\t\n0.931015469508630120,\t0.930997219358901010,\t0.930978966881678920,\t0.930960712077009260,\t0.930942454944937660,\t0.930924195485510090,\t0.930905933698772170,\t0.930887669584769320,\t\n0.930869403143547380,\t0.930851134375151880,\t0.930832863279628550,\t0.930814589857023030,\t0.930796314107380730,\t0.930778036030748050,\t0.930759755627170170,\t0.930741472896692960,\t\n0.930723187839362030,\t0.930704900455223140,\t0.930686610744322020,\t0.930668318706704080,\t0.930650024342415620,\t0.930631727651502150,\t0.930613428634009310,\t0.930595127289982840,\t\n0.930576823619468700,\t0.930558517622512400,\t0.930540209299159820,\t0.930521898649456450,\t0.930503585673448600,\t0.930485270371181780,\t0.930466952742701860,\t0.930448632788054450,\t\n0.930430310507285530,\t0.930411985900440830,\t0.930393658967566100,\t0.930375329708706960,\t0.930356998123909820,\t0.930338664213220200,\t0.930320327976683850,\t0.930301989414346720,\t\n0.930283648526254670,\t0.930265305312453440,\t0.930246959772988660,\t0.930228611907906730,\t0.930210261717253300,\t0.930191909201074310,\t0.930173554359415400,\t0.930155197192322760,\t\n0.930136837699842010,\t0.930118475882019120,\t0.930100111738899840,\t0.930081745270530560,\t0.930063376476956920,\t0.930045005358224870,\t0.930026631914380290,\t0.930008256145469110,\t\n0.929989878051537320,\t0.929971497632630760,\t0.929953114888795170,\t0.929934729820077190,\t0.929916342426522320,\t0.929897952708176660,\t0.929879560665086040,\t0.929861166297296540,\t\n0.929842769604854120,\t0.929824370587804430,\t0.929805969246194190,\t0.929787565580069030,\t0.929769159589474930,\t0.929750751274457940,\t0.929732340635064050,\t0.929713927671339310,\t\n0.929695512383329810,\t0.929677094771081070,\t0.929658674834640040,\t0.929640252574052250,\t0.929621827989363880,\t0.929603401080621010,\t0.929584971847869480,\t0.929566540291155600,\t\n0.929548106410525100,\t0.929529670206024620,\t0.929511231677699890,\t0.929492790825597210,\t0.929474347649762440,\t0.929455902150241870,\t0.929437454327081470,\t0.929419004180327520,\t\n0.929400551710025670,\t0.929382096916222870,\t0.929363639798964750,\t0.929345180358297500,\t0.929326718594267300,\t0.929308254506920340,\t0.929289788096302800,\t0.929271319362460660,\t\n0.929252848305439970,\t0.929234374925287490,\t0.929215899222049170,\t0.929197421195770980,\t0.929178940846499210,\t0.929160458174280170,\t0.929141973179159920,\t0.929123485861184430,\t\n0.929104996220400550,\t0.929086504256854240,\t0.929068009970591580,\t0.929049513361658970,\t0.929031014430102610,\t0.929012513175968560,\t0.928994009599303340,\t0.928975503700152800,\t\n0.928956995478563700,\t0.928938484934582200,\t0.928919972068254500,\t0.928901456879626890,\t0.928882939368745550,\t0.928864419535656900,\t0.928845897380407240,\t0.928827372903042510,\t\n0.928808846103609590,\t0.928790316982154640,\t0.928771785538723860,\t0.928753251773363650,\t0.928734715686120320,\t0.928716177277040140,\t0.928697636546169210,\t0.928679093493554490,\t\n0.928660548119242040,\t0.928642000423278270,\t0.928623450405709480,\t0.928604898066582090,\t0.928586343405942480,\t0.928567786423836970,\t0.928549227120311630,\t0.928530665495413520,\t\n0.928512101549188840,\t0.928493535281683880,\t0.928474966692945050,\t0.928456395783018860,\t0.928437822551951620,\t0.928419246999789500,\t0.928400669126579590,\t0.928382088932368070,\t\n0.928363506417201330,\t0.928344921581125800,\t0.928326334424187880,\t0.928307744946434200,\t0.928289153147911160,\t0.928270559028664950,\t0.928251962588742650,\t0.928233363828190440,\t\n0.928214762747054720,\t0.928196159345382240,\t0.928177553623219300,\t0.928158945580612400,\t0.928140335217608300,\t0.928121722534252850,\t0.928103107530593550,\t0.928084490206676490,\t\n0.928065870562548190,\t0.928047248598255160,\t0.928028624313844030,\t0.928009997709361320,\t0.927991368784853330,\t0.927972737540367240,\t0.927954103975949240,\t0.927935468091646070,\t\n0.927916829887504240,\t0.927898189363570270,\t0.927879546519890800,\t0.927860901356512560,\t0.927842253873481740,\t0.927823604070845520,\t0.927804951948650310,\t0.927786297506942750,\t\n0.927767640745769450,\t0.927748981665177050,\t0.927730320265212180,\t0.927711656545921250,\t0.927692990507351430,\t0.927674322149549150,\t0.927655651472561020,\t0.927636978476433890,\t\n0.927618303161214190,\t0.927599625526948750,\t0.927580945573684310,\t0.927562263301467180,\t0.927543578710344650,\t0.927524891800363240,\t0.927506202571569570,\t0.927487511024010390,\t\n0.927468817157732440,\t0.927450120972782450,\t0.927431422469207070,\t0.927412721647052910,\t0.927394018506367270,\t0.927375313047196560,\t0.927356605269587630,\t0.927337895173587110,\t\n0.927319182759241860,\t0.927300468026598600,\t0.927281750975703980,\t0.927263031606605170,\t0.927244309919348920,\t0.927225585913981850,\t0.927206859590550710,\t0.927188130949102570,\t\n0.927169399989684060,\t0.927150666712342030,\t0.927131931117123000,\t0.927113193204074370,\t0.927094452973242890,\t0.927075710424675290,\t0.927056965558418320,\t0.927038218374519050,\t\n0.927019468873024110,\t0.927000717053980570,\t0.926981962917434950,\t0.926963206463434660,\t0.926944447692026440,\t0.926925686603257030,\t0.926906923197173490,\t0.926888157473822580,\t\n0.926869389433251260,\t0.926850619075506140,\t0.926831846400634870,\t0.926813071408683960,\t0.926794294099700270,\t0.926775514473730970,\t0.926756732530822800,\t0.926737948271022850,\t\n0.926719161694378070,\t0.926700372800934980,\t0.926681581590741320,\t0.926662788063843720,\t0.926643992220289150,\t0.926625194060124560,\t0.926606393583397030,\t0.926587590790153400,\t\n0.926568785680440540,\t0.926549978254306070,\t0.926531168511796730,\t0.926512356452959370,\t0.926493542077841070,\t0.926474725386489010,\t0.926455906378950140,\t0.926437085055271450,\t\n0.926418261415499770,\t0.926399435459682730,\t0.926380607187867080,\t0.926361776600100000,\t0.926342943696428330,\t0.926324108476899390,\t0.926305270941560230,\t0.926286431090457830,\t\n0.926267588923639030,\t0.926248744441151570,\t0.926229897643042310,\t0.926211048529358320,\t0.926192197100146660,\t0.926173343355454430,\t0.926154487295328900,\t0.926135628919816930,\t\n0.926116768228966050,\t0.926097905222823310,\t0.926079039901435920,\t0.926060172264850820,\t0.926041302313115320,\t0.926022430046276490,\t0.926003555464381730,\t0.925984678567477680,\t\n0.925965799355612180,\t0.925946917828832320,\t0.925928033987185040,\t0.925909147830717760,\t0.925890259359477550,\t0.925871368573511820,\t0.925852475472867530,\t0.925833580057591750,\t\n0.925814682327732340,\t0.925795782283336250,\t0.925776879924450790,\t0.925757975251123020,\t0.925739068263400360,\t0.925720158961329980,\t0.925701247344958960,\t0.925682333414335030,\t\n0.925663417169505400,\t0.925644498610517120,\t0.925625577737417600,\t0.925606654550254260,\t0.925587729049074160,\t0.925568801233924820,\t0.925549871104853090,\t0.925530938661907050,\t\n0.925512003905133550,\t0.925493066834580210,\t0.925474127450294120,\t0.925455185752322660,\t0.925436241740713370,\t0.925417295415512990,\t0.925398346776769800,\t0.925379395824530770,\t\n0.925360442558843200,\t0.925341486979754490,\t0.925322529087312050,\t0.925303568881563400,\t0.925284606362555720,\t0.925265641530336300,\t0.925246674384953010,\t0.925227704926453120,\t\n0.925208733154883830,\t0.925189759070292880,\t0.925170782672727450,\t0.925151803962235060,\t0.925132822938863120,\t0.925113839602658920,\t0.925094853953670300,\t0.925075865991944580,\t\n0.925056875717529260,\t0.925037883130471750,\t0.925018888230819460,\t0.924999891018620010,\t0.924980891493920490,\t0.924961889656769070,\t0.924942885507212930,\t0.924923879045299600,\t\n0.924904870271076600,\t0.924885859184591320,\t0.924866845785891400,\t0.924847830075024470,\t0.924828812052037600,\t0.924809791716978970,\t0.924790769069895880,\t0.924771744110835850,\t\n0.924752716839846500,\t0.924733687256975360,\t0.924714655362270040,\t0.924695621155777970,\t0.924676584637546650,\t0.924657545807624160,\t0.924638504666057680,\t0.924619461212895070,\t\n0.924600415448183830,\t0.924581367371971500,\t0.924562316984305690,\t0.924543264285233810,\t0.924524209274804170,\t0.924505151953063930,\t0.924486092320060850,\t0.924467030375842440,\t\n0.924447966120456540,\t0.924428899553950690,\t0.924409830676372610,\t0.924390759487769720,\t0.924371685988190080,\t0.924352610177681330,\t0.924333532056291100,\t0.924314451624067000,\t\n0.924295368881056680,\t0.924276283827308090,\t0.924257196462868300,\t0.924238106787785950,\t0.924219014802108330,\t0.924199920505883180,\t0.924180823899158230,\t0.924161724981981240,\t\n0.924142623754399820,\t0.924123520216461940,\t0.924104414368214890,\t0.924085306209707190,\t0.924066195740986140,\t0.924047082962099700,\t0.924027967873095490,\t0.924008850474021370,\t\n0.923989730764925080,\t0.923970608745854570,\t0.923951484416857150,\t0.923932357777981330,\t0.923913228829274620,\t0.923894097570784890,\t0.923874964002559860,\t0.923855828124647390,\t\n0.923836689937095450,\t0.923817549439951420,\t0.923798406633263850,\t0.923779261517080230,\t0.923760114091448430,\t0.923740964356416390,\t0.923721812312031990,\t0.923702657958342940,\t\n0.923683501295397340,\t0.923664342323242680,\t0.923645181041927390,\t0.923626017451499190,\t0.923606851552005950,\t0.923587683343495610,\t0.923568512826016040,\t0.923549339999615190,\t\n0.923530164864341030,\t0.923510987420241070,\t0.923491807667364050,\t0.923472625605757380,\t0.923453441235469240,\t0.923434254556547480,\t0.923415065569040070,\t0.923395874272995080,\t\n0.923376680668460010,\t0.923357484755483520,\t0.923338286534113320,\t0.923319086004397490,\t0.923299883166383890,\t0.923280678020120590,\t0.923261470565655660,\t0.923242260803036950,\t\n0.923223048732312310,\t0.923203834353530370,\t0.923184617666738870,\t0.923165398671985770,\t0.923146177369319140,\t0.923126953758787170,\t0.923107727840437820,\t0.923088499614318710,\t\n0.923069269080478820,\t0.923050036238965640,\t0.923030801089827490,\t0.923011563633112210,\t0.922992323868868090,\t0.922973081797143100,\t0.922953837417985530,\t0.922934590731442910,\t\n0.922915341737564180,\t0.922896090436397200,\t0.922876836827989820,\t0.922857580912390450,\t0.922838322689647160,\t0.922819062159808020,\t0.922799799322921220,\t0.922780534179034610,\t\n0.922761266728196920,\t0.922741996970456110,\t0.922722724905860380,\t0.922703450534457680,\t0.922684173856296530,\t0.922664894871424890,\t0.922645613579890610,\t0.922626329981742650,\t\n0.922607044077028870,\t0.922587755865797550,\t0.922568465348096780,\t0.922549172523974840,\t0.922529877393480020,\t0.922510579956660530,\t0.922491280213564190,\t0.922471978164239980,\t\n0.922452673808735860,\t0.922433367147100000,\t0.922414058179380820,\t0.922394746905626390,\t0.922375433325885120,\t0.922356117440204960,\t0.922336799248634880,\t0.922317478751222720,\t\n0.922298155948016900,\t0.922278830839065700,\t0.922259503424417430,\t0.922240173704120370,\t0.922220841678222940,\t0.922201507346772980,\t0.922182170709819670,\t0.922162831767410870,\t\n0.922143490519594990,\t0.922124146966420420,\t0.922104801107935470,\t0.922085452944188530,\t0.922066102475227910,\t0.922046749701101790,\t0.922027394621859120,\t0.922008037237547870,\t\n0.921988677548216560,\t0.921969315553913590,\t0.921949951254687370,\t0.921930584650586190,\t0.921911215741658240,\t0.921891844527952590,\t0.921872471009517300,\t0.921853095186400910,\t\n0.921833717058651690,\t0.921814336626318290,\t0.921794953889448990,\t0.921775568848092200,\t0.921756181502296320,\t0.921736791852110220,\t0.921717399897582170,\t0.921698005638760700,\t\n0.921678609075694100,\t0.921659210208431000,\t0.921639809037019920,\t0.921620405561509260,\t0.921600999781947320,\t0.921581591698383160,\t0.921562181310865090,\t0.921542768619441510,\t\n0.921523353624160930,\t0.921503936325072100,\t0.921484516722223420,\t0.921465094815663080,\t0.921445670605440250,\t0.921426244091603340,\t0.921406815274200870,\t0.921387384153281250,\t\n0.921367950728893210,\t0.921348515001085390,\t0.921329076969906180,\t0.921309636635403880,\t0.921290193997627900,\t0.921270749056626540,\t0.921251301812448190,\t0.921231852265141590,\t\n0.921212400414755380,\t0.921192946261338190,\t0.921173489804938180,\t0.921154031045604890,\t0.921134569983386500,\t0.921115106618331740,\t0.921095640950489130,\t0.921076172979907510,\t\n0.921056702706635420,\t0.921037230130721470,\t0.921017755252214300,\t0.920998278071162970,\t0.920978798587615890,\t0.920959316801621910,\t0.920939832713229540,\t0.920920346322487650,\t\n0.920900857629444960,\t0.920881366634150100,\t0.920861873336651370,\t0.920842377736998400,\t0.920822879835239470,\t0.920803379631423340,\t0.920783877125598730,\t0.920764372317814490,\t\n0.920744865208119270,\t0.920725355796561560,\t0.920705844083190780,\t0.920686330068055340,\t0.920666813751204180,\t0.920647295132685950,\t0.920627774212549490,\t0.920608250990843540,\t\n0.920588725467617050,\t0.920569197642918340,\t0.920549667516797010,\t0.920530135089301590,\t0.920510600360480710,\t0.920491063330383330,\t0.920471523999058410,\t0.920451982366554570,\t\n0.920432438432920770,\t0.920412892198205550,\t0.920393343662458510,\t0.920373792825728070,\t0.920354239688063070,\t0.920334684249512590,\t0.920315126510125370,\t0.920295566469950250,\t\n0.920276004129035980,\t0.920256439487431970,\t0.920236872545186930,\t0.920217303302349630,\t0.920197731758969130,\t0.920178157915094270,\t0.920158581770774030,\t0.920139003326057360,\t\n0.920119422580992770,\t0.920099839535630020,\t0.920080254190017710,\t0.920060666544204710,\t0.920041076598240080,\t0.920021484352172680,\t0.920001889806051580,\t0.919982292959925510,\t\n0.919962693813843990,\t0.919943092367855760,\t0.919923488622009790,\t0.919903882576355030,\t0.919884274230940660,\t0.919864663585815530,\t0.919845050641028840,\t0.919825435396629090,\t\n0.919805817852666130,\t0.919786198009188590,\t0.919766575866245550,\t0.919746951423886180,\t0.919727324682159340,\t0.919707695641114210,\t0.919688064300799860,\t0.919668430661264910,\t\n0.919648794722559340,\t0.919629156484731760,\t0.919609515947831250,\t0.919589873111906990,\t0.919570227977008050,\t0.919550580543183500,\t0.919530930810482210,\t0.919511278778953890,\t\n0.919491624448647400,\t0.919471967819611820,\t0.919452308891896330,\t0.919432647665550110,\t0.919412984140622220,\t0.919393318317161980,\t0.919373650195218000,\t0.919353979774840240,\t\n0.919334307056077550,\t0.919314632038979010,\t0.919294954723594020,\t0.919275275109971530,\t0.919255593198160970,\t0.919235908988211390,\t0.919216222480171650,\t0.919196533674091710,\t\n0.919176842570020410,\t0.919157149168007060,\t0.919137453468100830,\t0.919117755470350910,\t0.919098055174806690,\t0.919078352581516930,\t0.919058647690531690,\t0.919038940501899710,\t\n0.919019231015670510,\t0.918999519231893160,\t0.918979805150617060,\t0.918960088771891390,\t0.918940370095765570,\t0.918920649122288440,\t0.918900925851510060,\t0.918881200283479300,\t\n0.918861472418245560,\t0.918841742255858240,\t0.918822009796366410,\t0.918802275039819700,\t0.918782537986266860,\t0.918762798635758050,\t0.918743056988342240,\t0.918723313044068730,\t\n0.918703566802987040,\t0.918683818265146450,\t0.918664067430596250,\t0.918644314299385870,\t0.918624558871564360,\t0.918604801147181790,\t0.918585041126287250,\t0.918565278808930130,\t\n0.918545514195159730,\t0.918525747285025670,\t0.918505978078577150,\t0.918486206575863660,\t0.918466432776934400,\t0.918446656681839340,\t0.918426878290627640,\t0.918407097603348820,\t\n0.918387314620052190,\t0.918367529340787250,\t0.918347741765603520,\t0.918327951894550080,\t0.918308159727677100,\t0.918288365265033770,\t0.918268568506669490,\t0.918248769452633780,\t\n0.918228968102976160,\t0.918209164457746140,\t0.918189358516993240,\t0.918169550280766520,\t0.918149739749116290,\t0.918129926922091720,\t0.918110111799742330,\t0.918090294382117640,\t\n0.918070474669267280,\t0.918050652661240750,\t0.918030828358087470,\t0.918011001759856840,\t0.917991172866599040,\t0.917971341678363360,\t0.917951508195199220,\t0.917931672417156450,\t\n0.917911834344284360,\t0.917891993976632790,\t0.917872151314250820,\t0.917852306357188840,\t0.917832459105496160,\t0.917812609559222280,\t0.917792757718416840,\t0.917772903583129570,\t\n0.917753047153410000,\t0.917733188429307840,\t0.917713327410872300,\t0.917693464098153780,\t0.917673598491201670,\t0.917653730590065610,\t0.917633860394795110,\t0.917613987905440020,\t\n0.917594113122049970,\t0.917574236044674250,\t0.917554356673363270,\t0.917534475008166430,\t0.917514591049133470,\t0.917494704796314010,\t0.917474816249757690,\t0.917454925409514340,\t\n0.917435032275633830,\t0.917415136848165220,\t0.917395239127159260,\t0.917375339112665110,\t0.917355436804732640,\t0.917335532203411570,\t0.917315625308751660,\t0.917295716120802630,\t\n0.917275804639614440,\t0.917255890865236290,\t0.917235974797718790,\t0.917216056437111350,\t0.917196135783463820,\t0.917176212836825930,\t0.917156287597247430,\t0.917136360064778280,\t\n0.917116430239467870,\t0.917096498121366730,\t0.917076563710524370,\t0.917056627006990640,\t0.917036688010815280,\t0.917016746722048250,\t0.916996803140739280,\t0.916976857266938340,\t\n0.916956909100694830,\t0.916936958642059490,\t0.916917005891081720,\t0.916897050847811480,\t0.916877093512298620,\t0.916857133884593000,\t0.916837171964744460,\t0.916817207752802730,\t\n0.916797241248818340,\t0.916777272452840800,\t0.916757301364920170,\t0.916737327985106210,\t0.916717352313448970,\t0.916697374349998320,\t0.916677394094804200,\t0.916657411547916250,\t\n0.916637426709385190,\t0.916617439579260450,\t0.916597450157592200,\t0.916577458444430390,\t0.916557464439824780,\t0.916537468143825640,\t0.916517469556482720,\t0.916497468677845870,\t\n0.916477465507965720,\t0.916457460046891770,\t0.916437452294674330,\t0.916417442251363120,\t0.916397429917008340,\t0.916377415291660060,\t0.916357398375367780,\t0.916337379168182480,\t\n0.916317357670153650,\t0.916297333881331390,\t0.916277307801765860,\t0.916257279431507140,\t0.916237248770605080,\t0.916217215819109980,\t0.916197180577071450,\t0.916177143044540340,\t\n0.916157103221566290,\t0.916137061108199590,\t0.916117016704490190,\t0.916096970010488290,\t0.916076921026243940,\t0.916056869751807330,\t0.916036816187228100,\t0.916016760332557300,\t\n0.915996702187844460,\t0.915976641753139980,\t0.915956579028493810,\t0.915936514013956260,\t0.915916446709577390,\t0.915896377115407060,\t0.915876305231496210,\t0.915856231057894490,\t\n0.915836154594652290,\t0.915816075841819570,\t0.915795994799446730,\t0.915775911467583970,\t0.915755825846281350,\t0.915735737935588820,\t0.915715647735557360,\t0.915695555246236690,\t\n0.915675460467677230,\t0.915655363399929030,\t0.915635264043042520,\t0.915615162397067750,\t0.915595058462054800,\t0.915574952238054520,\t0.915554843725116860,\t0.915534732923292020,\t\n0.915514619832630490,\t0.915494504453182260,\t0.915474386784997930,\t0.915454266828127470,\t0.915434144582621070,\t0.915414020048529680,\t0.915393893225903250,\t0.915373764114792100,\t\n0.915353632715246500,\t0.915333499027316750,\t0.915313363051053370,\t0.915293224786506540,\t0.915273084233726330,\t0.915252941392763700,\t0.915232796263668710,\t0.915212648846491780,\t\n0.915192499141283200,\t0.915172347148093370,\t0.915152192866972690,\t0.915132036297971240,\t0.915111877441139980,\t0.915091716296528970,\t0.915071552864188730,\t0.915051387144169670,\t\n0.915031219136522080,\t0.915011048841296470,\t0.914990876258543140,\t0.914970701388312380,\t0.914950524230655150,\t0.914930344785621630,\t0.914910163053262340,\t0.914889979033627570,\t\n0.914869792726767830,\t0.914849604132733530,\t0.914829413251575410,\t0.914809220083343200,\t0.914789024628088420,\t0.914768826885861140,\t0.914748626856711660,\t0.914728424540690700,\t\n0.914708219937848680,\t0.914688013048235990,\t0.914667803871903050,\t0.914647592408900920,\t0.914627378659279790,\t0.914607162623090160,\t0.914586944300382680,\t0.914566723691207840,\t\n0.914546500795616170,\t0.914526275613658290,\t0.914506048145384390,\t0.914485818390845640,\t0.914465586350092450,\t0.914445352023175230,\t0.914425115410144600,\t0.914404876511051180,\t\n0.914384635325945610,\t0.914364391854878170,\t0.914344146097899930,\t0.914323898055061420,\t0.914303647726413260,\t0.914283395112005850,\t0.914263140211890040,\t0.914242883026116230,\t\n0.914222623554735380,\t0.914202361797797570,\t0.914182097755354190,\t0.914161831427455550,\t0.914141562814152380,\t0.914121291915495180,\t0.914101018731534930,\t0.914080743262322030,\t\n0.914060465507907200,\t0.914040185468340980,\t0.914019903143674650,\t0.913999618533958500,\t0.913979331639243390,\t0.913959042459579820,\t0.913938750995018760,\t0.913918457245610720,\t\n0.913898161211406320,\t0.913877862892456760,\t0.913857562288812540,\t0.913837259400524520,\t0.913816954227643200,\t0.913796646770219660,\t0.913776337028304410,\t0.913756025001948300,\t\n0.913735710691201850,\t0.913715394096116350,\t0.913695075216742540,\t0.913674754053130920,\t0.913654430605332470,\t0.913634104873397910,\t0.913613776857378100,\t0.913593446557323770,\t\n0.913573113973285560,\t0.913552779105314960,\t0.913532441953462280,\t0.913512102517778590,\t0.913491760798314620,\t0.913471416795121230,\t0.913451070508249360,\t0.913430721937749430,\t\n0.913410371083673070,\t0.913390017946070780,\t0.913369662524993410,\t0.913349304820491930,\t0.913328944832617060,\t0.913308582561420000,\t0.913288218006951370,\t0.913267851169261900,\t\n0.913247482048403110,\t0.913227110644425630,\t0.913206736957380420,\t0.913186360987318310,\t0.913165982734290280,\t0.913145602198347390,\t0.913125219379540050,\t0.913104834277920110,\t\n0.913084446893537960,\t0.913064057226444790,\t0.913043665276691450,\t0.913023271044328900,\t0.913002874529408310,\t0.912982475731980440,\t0.912962074652096000,\t0.912941671289806740,\t\n0.912921265645163290,\t0.912900857718216720,\t0.912880447509017980,\t0.912860035017618140,\t0.912839620244068170,\t0.912819203188419250,\t0.912798783850721880,\t0.912778362231027930,\t\n0.912757938329388120,\t0.912737512145853410,\t0.912717083680474880,\t0.912696652933303710,\t0.912676219904390850,\t0.912655784593787160,\t0.912635347001544360,\t0.912614907127713090,\t\n0.912594464972344640,\t0.912574020535489970,\t0.912553573817200370,\t0.912533124817526690,\t0.912512673536520320,\t0.912492219974231800,\t0.912471764130713180,\t0.912451306006015090,\t\n0.912430845600188830,\t0.912410382913285360,\t0.912389917945355950,\t0.912369450696451700,\t0.912348981166623880,\t0.912328509355923250,\t0.912308035264401740,\t0.912287558892110110,\t\n0.912267080239099530,\t0.912246599305421290,\t0.912226116091126580,\t0.912205630596266580,\t0.912185142820892140,\t0.912164652765055210,\t0.912144160428806640,\t0.912123665812197610,\t\n0.912103168915279430,\t0.912082669738103370,\t0.912062168280720620,\t0.912041664543182470,\t0.912021158525539780,\t0.912000650227844600,\t0.911980139650147680,\t0.911959626792500530,\t\n0.911939111654954230,\t0.911918594237560280,\t0.911898074540369750,\t0.911877552563433610,\t0.911857028306804040,\t0.911836501770531880,\t0.911815972954668430,\t0.911795441859265090,\t\n0.911774908484373150,\t0.911754372830043900,\t0.911733834896328750,\t0.911713294683278660,\t0.911692752190945700,\t0.911672207419380820,\t0.911651660368635430,\t0.911631111038760930,\t\n0.911610559429808620,\t0.911590005541829900,\t0.911569449374876270,\t0.911548890928998490,\t0.911528330204248950,\t0.911507767200678610,\t0.911487201918338760,\t0.911466634357280920,\t\n0.911446064517556500,\t0.911425492399217000,\t0.911404918002313380,\t0.911384341326897720,\t0.911363762373021300,\t0.911343181140735430,\t0.911322597630091710,\t0.911302011841141350,\t\n0.911281423773936060,\t0.911260833428527260,\t0.911240240804965910,\t0.911219645903304290,\t0.911199048723593700,\t0.911178449265885320,\t0.911157847530230990,\t0.911137243516681910,\t\n0.911116637225289790,\t0.911096028656106060,\t0.911075417809181890,\t0.911054804684569450,\t0.911034189282320160,\t0.911013571602485310,\t0.910992951645116510,\t0.910972329410265400,\t\n0.910951704897983380,\t0.910931078108321860,\t0.910910449041332890,\t0.910889817697067890,\t0.910869184075578260,\t0.910848548176915740,\t0.910827910001131840,\t0.910807269548278060,\t\n0.910786626818406280,\t0.910765981811567430,\t0.910745334527814030,\t0.910724684967197380,\t0.910704033129768890,\t0.910683379015580390,\t0.910662722624683400,\t0.910642063957129650,\t\n0.910621403012970340,\t0.910600739792257970,\t0.910580074295043620,\t0.910559406521379120,\t0.910538736471316220,\t0.910518064144906330,\t0.910497389542201390,\t0.910476712663252920,\t\n0.910456033508112330,\t0.910435352076832020,\t0.910414668369463280,\t0.910393982386057840,\t0.910373294126667560,\t0.910352603591343960,\t0.910331910780138860,\t0.910311215693104030,\t\n0.910290518330290840,\t0.910269818691751610,\t0.910249116777537840,\t0.910228412587701370,\t0.910207706122293850,\t0.910186997381366990,\t0.910166286364972650,\t0.910145573073162240,\t\n0.910124857505988370,\t0.910104139663502230,\t0.910083419545755780,\t0.910062697152800750,\t0.910041972484688990,\t0.910021245541472350,\t0.910000516323202560,\t0.909979784829931140,\t\n0.909959051061710600,\t0.909938315018592460,\t0.909917576700628450,\t0.909896836107870530,\t0.909876093240370660,\t0.909855348098180360,\t0.909834600681351470,\t0.909813850989936390,\t\n0.909793099023986640,\t0.909772344783554180,\t0.909751588268690850,\t0.909730829479448610,\t0.909710068415879200,\t0.909689305078034690,\t0.909668539465966490,\t0.909647771579727320,\t\n0.909627001419368810,\t0.909606228984942700,\t0.909585454276501060,\t0.909564677294095740,\t0.909543898037778800,\t0.909523116507602090,\t0.909502332703617130,\t0.909481546625876880,\t\n0.909460758274432620,\t0.909439967649336540,\t0.909419174750640490,\t0.909398379578396530,\t0.909377582132656630,\t0.909356782413472400,\t0.909335980420896580,\t0.909315176154980810,\t\n0.909294369615777140,\t0.909273560803337430,\t0.909252749717713860,\t0.909231936358958490,\t0.909211120727123290,\t0.909190302822259880,\t0.909169482644420990,\t0.909148660193658480,\t\n0.909127835470024290,\t0.909107008473570620,\t0.909086179204349310,\t0.909065347662412650,\t0.909044513847812490,\t0.909023677760600780,\t0.909002839400830150,\t0.908981998768552570,\t\n0.908961155863819870,\t0.908940310686684350,\t0.908919463237197970,\t0.908898613515413010,\t0.908877761521381110,\t0.908856907255155220,\t0.908836050716786970,\t0.908815191906328760,\t\n0.908794330823832430,\t0.908773467469350280,\t0.908752601842934490,\t0.908731733944637240,\t0.908710863774510160,\t0.908689991332606420,\t0.908669116618977650,\t0.908648239633676140,\t\n0.908627360376753960,\t0.908606478848263400,\t0.908585595048256640,\t0.908564708976785540,\t0.908543820633903040,\t0.908522930019661000,\t0.908502037134111600,\t0.908481141977307120,\t\n0.908460244549299740,\t0.908439344850141770,\t0.908418442879885490,\t0.908397538638582750,\t0.908376632126286500,\t0.908355723343048590,\t0.908334812288921540,\t0.908313898963957310,\t\n0.908292983368208410,\t0.908272065501727010,\t0.908251145364565420,\t0.908230222956775690,\t0.908209298278410680,\t0.908188371329522460,\t0.908167442110163430,\t0.908146510620385650,\t\n0.908125576860241650,\t0.908104640829783700,\t0.908083702529063790,\t0.908062761958134960,\t0.908041819117049180,\t0.908020874005858960,\t0.907999926624616480,\t0.907978976973374150,\t\n0.907958025052184480,\t0.907937070861099760,\t0.907916114400171840,\t0.907895155669454110,\t0.907874194668998550,\t0.907853231398857430,\t0.907832265859083280,\t0.907811298049728380,\t\n0.907790327970845250,\t0.907769355622486400,\t0.907748381004703670,\t0.907727404117550370,\t0.907706424961078670,\t0.907685443535340860,\t0.907664459840389350,\t0.907643473876276750,\t\n0.907622485643055590,\t0.907601495140777700,\t0.907580502369496500,\t0.907559507329263940,\t0.907538510020132750,\t0.907517510442155230,\t0.907496508595383890,\t0.907475504479871350,\t\n0.907454498095670030,\t0.907433489442832090,\t0.907412478521410830,\t0.907391465331458310,\t0.907370449873027170,\t0.907349432146169810,\t0.907328412150938960,\t0.907307389887387130,\t\n0.907286365355566390,\t0.907265338555530150,\t0.907244309487330480,\t0.907223278151020110,\t0.907202244546651440,\t0.907181208674277320,\t0.907160170533950040,\t0.907139130125722450,\t\n0.907118087449646620,\t0.907097042505775830,\t0.907075995294162610,\t0.907054945814859350,\t0.907033894067918680,\t0.907012840053393220,\t0.906991783771335820,\t0.906970725221798890,\t\n0.906949664404834710,\t0.906928601320496800,\t0.906907535968837440,\t0.906886468349909160,\t0.906865398463764680,\t0.906844326310456750,\t0.906823251890038100,\t0.906802175202560790,\t\n0.906781096248078460,\t0.906760015026643500,\t0.906738931538308420,\t0.906717845783125980,\t0.906696757761149000,\t0.906675667472430000,\t0.906654574917021950,\t0.906633480094977020,\t\n0.906612383006348830,\t0.906591283651189680,\t0.906570182029552310,\t0.906549078141489440,\t0.906527971987053930,\t0.906506863566298390,\t0.906485752879275800,\t0.906464639926038430,\t\n0.906443524706639800,\t0.906422407221132430,\t0.906401287469568940,\t0.906380165452002280,\t0.906359041168485200,\t0.906337914619070540,\t0.906316785803810700,\t0.906295654722759300,\t\n0.906274521375968760,\t0.906253385763491900,\t0.906232247885381590,\t0.906211107741690670,\t0.906189965332471870,\t0.906168820657778260,\t0.906147673717662250,\t0.906126524512177340,\t\n0.906105373041376170,\t0.906084219305311580,\t0.906063063304036410,\t0.906041905037603620,\t0.906020744506066070,\t0.905999581709476250,\t0.905978416647887920,\t0.905957249321353460,\t\n0.905936079729925960,\t0.905914907873658140,\t0.905893733752603180,\t0.905872557366813820,\t0.905851378716343030,\t0.905830197801243520,\t0.905809014621568820,\t0.905787829177371550,\t\n0.905766641468704780,\t0.905745451495621360,\t0.905724259258174350,\t0.905703064756416710,\t0.905681867990401400,\t0.905660668960181050,\t0.905639467665809380,\t0.905618264107339030,\t\n0.905597058284822950,\t0.905575850198314320,\t0.905554639847866110,\t0.905533427233531140,\t0.905512212355362390,\t0.905490995213413360,\t0.905469775807736910,\t0.905448554138386100,\t\n0.905427330205413770,\t0.905406104008873220,\t0.905384875548817300,\t0.905363644825299300,\t0.905342411838371720,\t0.905321176588088530,\t0.905299939074502350,\t0.905278699297666360,\t\n0.905257457257633620,\t0.905236212954457330,\t0.905214966388190430,\t0.905193717558886110,\t0.905172466466597100,\t0.905151213111377250,\t0.905129957493279510,\t0.905108699612356740,\t\n0.905087439468662320,\t0.905066177062249230,\t0.905044912393170750,\t0.905023645461479620,\t0.905002376267229680,\t0.904981104810473890,\t0.904959831091265320,\t0.904938555109657150,\t\n0.904917276865702560,\t0.904895996359454840,\t0.904874713590967160,\t0.904853428560292270,\t0.904832141267484120,\t0.904810851712595680,\t0.904789559895680110,\t0.904768265816790600,\t\n0.904746969475980540,\t0.904725670873302910,\t0.904704370008810880,\t0.904683066882558170,\t0.904661761494597870,\t0.904640453844983150,\t0.904619143933767190,\t0.904597831761003500,\t\n0.904576517326745270,\t0.904555200631045660,\t0.904533881673957650,\t0.904512560455535300,\t0.904491236975831670,\t0.904469911234899840,\t0.904448583232793310,\t0.904427252969565280,\t\n0.904405920445269130,\t0.904384585659958160,\t0.904363248613685330,\t0.904341909306504820,\t0.904320567738469470,\t0.904299223909632690,\t0.904277877820047980,\t0.904256529469768420,\t\n0.904235178858847630,\t0.904213825987338460,\t0.904192470855295190,\t0.904171113462770680,\t0.904149753809818320,\t0.904128391896491750,\t0.904107027722844010,\t0.904085661288928870,\t\n0.904064292594799480,\t0.904042921640509030,\t0.904021548426111600,\t0.904000172951660350,\t0.903978795217208590,\t0.903957415222809920,\t0.903936032968517660,\t0.903914648454385410,\t\n0.903893261680466020,\t0.903871872646814010,\t0.903850481353482230,\t0.903829087800524180,\t0.903807691987993490,\t0.903786293915943670,\t0.903764893584427910,\t0.903743490993500040,\t\n0.903722086143213030,\t0.903700679033621280,\t0.903679269664777740,\t0.903657858036736040,\t0.903636444149549690,\t0.903615028003272200,\t0.903593609597957200,\t0.903572188933658090,\t\n0.903550766010428270,\t0.903529340828321810,\t0.903507913387392000,\t0.903486483687692470,\t0.903465051729276710,\t0.903443617512198260,\t0.903422181036510840,\t0.903400742302267520,\t\n0.903379301309522820,\t0.903357858058329800,\t0.903336412548742080,\t0.903314964780813410,\t0.903293514754597290,\t0.903272062470147460,\t0.903250607927517430,\t0.903229151126760500,\t\n0.903207692067931060,\t0.903186230751082400,\t0.903164767176268150,\t0.903143301343541930,\t0.903121833252957580,\t0.903100362904568520,\t0.903078890298428690,\t0.903057415434591170,\t\n0.903035938313110460,\t0.903014458934039980,\t0.902992977297433330,\t0.902971493403344150,\t0.902950007251826390,\t0.902928518842933460,\t0.902907028176718970,\t0.902885535253237230,\t\n0.902864040072541730,\t0.902842542634686000,\t0.902821042939723980,\t0.902799540987709430,\t0.902778036778695950,\t0.902756530312737390,\t0.902735021589887170,\t0.902713510610199670,\t\n0.902691997373728410,\t0.902670481880527230,\t0.902648964130649880,\t0.902627444124149970,\t0.902605921861081570,\t0.902584397341497980,\t0.902562870565453700,\t0.902541341533002360,\t\n0.902519810244197580,\t0.902498276699093220,\t0.902476740897743320,\t0.902455202840201420,\t0.902433662526521680,\t0.902412119956757300,\t0.902390575130962990,\t0.902369028049192280,\t\n0.902347478711498900,\t0.902325927117936910,\t0.902304373268560170,\t0.902282817163422400,\t0.902261258802577570,\t0.902239698186079300,\t0.902218135313982090,\t0.902196570186339590,\t\n0.902175002803205620,\t0.902153433164634260,\t0.902131861270679240,\t0.902110287121394520,\t0.902088710716833720,\t0.902067132057051580,\t0.902045551142101500,\t0.902023967972037650,\t\n0.902002382546913890,\t0.901980794866784060,\t0.901959204931702340,\t0.901937612741722570,\t0.901916018296898380,\t0.901894421597284610,\t0.901872822642934670,\t0.901851221433902730,\t\n0.901829617970242750,\t0.901808012252008680,\t0.901786404279254720,\t0.901764794052034580,\t0.901743181570402120,\t0.901721566834412070,\t0.901699949844118160,\t0.901678330599574360,\t\n0.901656709100834730,\t0.901635085347953340,\t0.901613459340984250,\t0.901591831079981090,\t0.901570200564998700,\t0.901548567796090830,\t0.901526932773311640,\t0.901505295496714990,\t\n0.901483655966355160,\t0.901462014182286220,\t0.901440370144562130,\t0.901418723853236850,\t0.901397075308365100,\t0.901375424510000630,\t0.901353771458197730,\t0.901332116153010230,\t\n0.901310458594492550,\t0.901288798782698740,\t0.901267136717682440,\t0.901245472399498810,\t0.901223805828201390,\t0.901202137003844550,\t0.901180465926482270,\t0.901158792596168820,\t\n0.901137117012958510,\t0.901115439176905290,\t0.901093759088063220,\t0.901072076746487040,\t0.901050392152230710,\t0.901028705305348290,\t0.901007016205894180,\t0.900985324853922580,\t\n0.900963631249487640,\t0.900941935392643670,\t0.900920237283444390,\t0.900898536921944880,\t0.900876834308199090,\t0.900855129442261200,\t0.900833422324185510,\t0.900811712954026290,\t\n0.900790001331837730,\t0.900768287457673790,\t0.900746571331589530,\t0.900724852953638800,\t0.900703132323876000,\t0.900681409442355310,\t0.900659684309131130,\t0.900637956924257740,\t\n0.900616227287789450,\t0.900594495399780200,\t0.900572761260285180,\t0.900551024869358120,\t0.900529286227053640,\t0.900507545333425810,\t0.900485802188529250,\t0.900464056792418140,\t\n0.900442309145146780,\t0.900420559246769340,\t0.900398807097340990,\t0.900377052696915480,\t0.900355296045547430,\t0.900333537143291010,\t0.900311775990200850,\t0.900290012586331230,\t\n0.900268246931736240,\t0.900246479026470920,\t0.900224708870589470,\t0.900202936464146290,\t0.900181161807195650,\t0.900159384899792190,\t0.900137605741990310,\t0.900115824333844290,\t\n0.900094040675408440,\t0.900072254766737800,\t0.900050466607886570,\t0.900028676198909140,\t0.900006883539860030,\t0.899985088630793740,\t0.899963291471764680,\t0.899941492062827030,\t\n0.899919690404036080,\t0.899897886495445780,\t0.899876080337110860,\t0.899854271929085740,\t0.899832461271424910,\t0.899810648364183010,\t0.899788833207414320,\t0.899767015801173350,\t\n0.899745196145515070,\t0.899723374240493870,\t0.899701550086164260,\t0.899679723682580760,\t0.899657895029797980,\t0.899636064127870340,\t0.899614230976852670,\t0.899592395576798930,\t\n0.899570557927764750,\t0.899548718029804070,\t0.899526875882971530,\t0.899505031487321860,\t0.899483184842909680,\t0.899461335949789500,\t0.899439484808015500,\t0.899417631417643300,\t\n0.899395775778726980,\t0.899373917891321150,\t0.899352057755480660,\t0.899330195371259910,\t0.899308330738713750,\t0.899286463857896680,\t0.899264594728863110,\t0.899242723351668440,\t\n0.899220849726366960,\t0.899198973853013390,\t0.899177095731662380,\t0.899155215362368640,\t0.899133332745186810,\t0.899111447880171610,\t0.899089560767377560,\t0.899067671406859840,\t\n0.899045779798673060,\t0.899023885942871750,\t0.899001989839510740,\t0.898980091488644770,\t0.898958190890328580,\t0.898936288044616450,\t0.898914382951564120,\t0.898892475611225760,\t\n0.898870566023656110,\t0.898848654188910250,\t0.898826740107042670,\t0.898804823778108220,\t0.898782905202161640,\t0.898760984379257550,\t0.898739061309451250,\t0.898717135992797460,\t\n0.898695208429350690,\t0.898673278619165910,\t0.898651346562298060,\t0.898629412258801660,\t0.898607475708731450,\t0.898585536912142930,\t0.898563595869090630,\t0.898541652579629260,\t\n0.898519707043813790,\t0.898497759261699060,\t0.898475809233339920,\t0.898453856958791210,\t0.898431902438107550,\t0.898409945671344470,\t0.898387986658556460,\t0.898366025399798600,\t\n0.898344061895125610,\t0.898322096144592570,\t0.898300128148254220,\t0.898278157906165500,\t0.898256185418381040,\t0.898234210684956460,\t0.898212233705946490,\t0.898190254481405770,\t\n0.898168273011389570,\t0.898146289295952530,\t0.898124303335149920,\t0.898102315129036040,\t0.898080324677666850,\t0.898058331981096750,\t0.898036337039380910,\t0.898014339852574170,\t\n0.897992340420731620,\t0.897970338743908190,\t0.897948334822158970,\t0.897926328655538450,\t0.897904320244102610,\t0.897882309587905820,\t0.897860296687003400,\t0.897838281541450180,\t\n0.897816264151301220,\t0.897794244516611610,\t0.897772222637436060,\t0.897750198513830310,\t0.897728172145848990,\t0.897706143533547270,\t0.897684112676980340,\t0.897662079576202920,\t\n0.897640044231270420,\t0.897618006642237790,\t0.897595966809159760,\t0.897573924732092190,\t0.897551880411089800,\t0.897529833846207770,\t0.897507785037501060,\t0.897485733985024960,\t\n0.897463680688834530,\t0.897441625148984850,\t0.897419567365530750,\t0.897397507338528080,\t0.897375445068031690,\t0.897353380554096640,\t0.897331313796778220,\t0.897309244796131390,\t\n0.897287173552211550,\t0.897265100065073320,\t0.897243024334772770,\t0.897220946361364740,\t0.897198866144904180,\t0.897176783685446620,\t0.897154698983047010,\t0.897132612037760620,\t\n0.897110522849642770,\t0.897088431418748170,\t0.897066337745132890,\t0.897044241828851780,\t0.897022143669960140,\t0.897000043268513010,\t0.896977940624565930,\t0.896955835738173830,\t\n0.896933728609392240,\t0.896911619238275890,\t0.896889507624880960,\t0.896867393769262170,\t0.896845277671474930,\t0.896823159331574530,\t0.896801038749616140,\t0.896778915925655280,\t\n0.896756790859746690,\t0.896734663551946420,\t0.896712534002309550,\t0.896690402210891470,\t0.896668268177747250,\t0.896646131902932410,\t0.896623993386502230,\t0.896601852628512000,\t\n0.896579709629016790,\t0.896557564388072770,\t0.896535416905734790,\t0.896513267182058260,\t0.896491115217098570,\t0.896468961010911000,\t0.896446804563551190,\t0.896424645875073870,\t\n0.896402484945535320,\t0.896380321774990610,\t0.896358156363495140,\t0.896335988711104200,\t0.896313818817873310,\t0.896291646683857860,\t0.896269472309113360,\t0.896247295693694660,\t\n0.896225116837658260,\t0.896202935741059030,\t0.896180752403952340,\t0.896158566826393940,\t0.896136379008439010,\t0.896114188950143160,\t0.896091996651561810,\t0.896069802112750110,\t\n0.896047605333764370,\t0.896025406314659540,\t0.896003205055491140,\t0.895981001556314770,\t0.895958795817185960,\t0.895936587838160100,\t0.895914377619292380,\t0.895892165160639190,\t\n0.895869950462255480,\t0.895847733524196890,\t0.895825514346519030,\t0.895803292929277410,\t0.895781069272527430,\t0.895758843376324940,\t0.895736615240724790,\t0.895714384865783590,\t\n0.895692152251556410,\t0.895669917398098870,\t0.895647680305466600,\t0.895625440973714990,\t0.895603199402899900,\t0.895580955593076710,\t0.895558709544300720,\t0.895536461256628450,\t\n0.895514210730114950,\t0.895491957964815950,\t0.895469702960787100,\t0.895447445718083990,\t0.895425186236762260,\t0.895402924516877090,\t0.895380660558485090,\t0.895358394361641330,\t\n0.895336125926401660,\t0.895313855252821700,\t0.895291582340957070,\t0.895269307190863510,\t0.895247029802596740,\t0.895224750176211840,\t0.895202468311765640,\t0.895180184209313110,\t\n0.895157897868910200,\t0.895135609290612530,\t0.895113318474475840,\t0.895091025420555850,\t0.895068730128907860,\t0.895046432599588600,\t0.895024132832653140,\t0.895001830828157320,\t\n0.894979526586156980,\t0.894957220106707750,\t0.894934911389865580,\t0.894912600435685990,\t0.894890287244224590,\t0.894867971815537900,\t0.894845654149681200,\t0.894823334246710460,\t\n0.894801012106681390,\t0.894778687729649750,\t0.894756361115671360,\t0.894734032264802080,\t0.894711701177097310,\t0.894689367852613660,\t0.894667032291406650,\t0.894644694493532010,\t\n0.894622354459045700,\t0.894600012188003450,\t0.894577667680461210,\t0.894555320936474390,\t0.894532971956099710,\t0.894510620739392470,\t0.894488267286408840,\t0.894465911597204450,\t\n0.894443553671835260,\t0.894421193510357200,\t0.894398831112826250,\t0.894376466479297690,\t0.894354099609828480,\t0.894331730504473900,\t0.894309359163290130,\t0.894286985586332910,\t\n0.894264609773658180,\t0.894242231725321910,\t0.894219851441380160,\t0.894197468921888340,\t0.894175084166903170,\t0.894152697176480380,\t0.894130307950675830,\t0.894107916489545460,\t\n0.894085522793145350,\t0.894063126861531440,\t0.894040728694759370,\t0.894018328292885740,\t0.893995925655966420,\t0.893973520784057230,\t0.893951113677214140,\t0.893928704335493430,\t\n0.893906292758950840,\t0.893883878947642540,\t0.893861462901624270,\t0.893839044620952650,\t0.893816624105683410,\t0.893794201355872620,\t0.893771776371576230,\t0.893749349152850540,\t\n0.893726919699751380,\t0.893704488012334600,\t0.893682054090656930,\t0.893659617934774220,\t0.893637179544742420,\t0.893614738920617710,\t0.893592296062456050,\t0.893569850970313720,\t\n0.893547403644246670,\t0.893524954084310870,\t0.893502502290562940,\t0.893480048263058820,\t0.893457592001854590,\t0.893435133507006430,\t0.893412672778570390,\t0.893390209816602670,\t\n0.893367744621159420,\t0.893345277192296390,\t0.893322807530070540,\t0.893300335634537700,\t0.893277861505754060,\t0.893255385143775670,\t0.893232906548658940,\t0.893210425720459830,\t\n0.893187942659234400,\t0.893165457365039380,\t0.893142969837930730,\t0.893120480077964740,\t0.893097988085197470,\t0.893075493859685320,\t0.893052997401484360,\t0.893030498710650880,\t\n0.893007997787240830,\t0.892985494631311160,\t0.892962989242917730,\t0.892940481622116920,\t0.892917971768964810,\t0.892895459683517800,\t0.892872945365832060,\t0.892850428815964100,\t\n0.892827910033969550,\t0.892805389019905690,\t0.892782865773828370,\t0.892760340295793870,\t0.892737812585858490,\t0.892715282644078620,\t0.892692750470510550,\t0.892670216065210130,\t\n0.892647679428234640,\t0.892625140559639930,\t0.892602599459482390,\t0.892580056127818320,\t0.892557510564704120,\t0.892534962770196060,\t0.892512412744350670,\t0.892489860487223900,\t\n0.892467305998872810,\t0.892444749279353470,\t0.892422190328722280,\t0.892399629147035630,\t0.892377065734349940,\t0.892354500090721480,\t0.892331932216206440,\t0.892309362110861870,\t\n0.892286789774744070,\t0.892264215207909110,\t0.892241638410413710,\t0.892219059382314270,\t0.892196478123667090,\t0.892173894634528790,\t0.892151308914955310,\t0.892128720965003950,\t\n0.892106130784730780,\t0.892083538374192300,\t0.892060943733444910,\t0.892038346862545240,\t0.892015747761549680,\t0.891993146430514750,\t0.891970542869496620,\t0.891947937078552470,\t\n0.891925329057738470,\t0.891902718807111140,\t0.891880106326726980,\t0.891857491616642630,\t0.891834874676914580,\t0.891812255507598910,\t0.891789634108752890,\t0.891767010480432940,\t\n0.891744384622695340,\t0.891721756535596930,\t0.891699126219194000,\t0.891676493673543290,\t0.891653858898701300,\t0.891631221894724320,\t0.891608582661669760,\t0.891585941199593670,\t\n0.891563297508552680,\t0.891540651588603520,\t0.891518003439802700,\t0.891495353062206840,\t0.891472700455872240,\t0.891450045620856280,\t0.891427388557215260,\t0.891404729265005690,\t\n0.891382067744284300,\t0.891359403995107710,\t0.891336738017532770,\t0.891314069811615870,\t0.891291399377413310,\t0.891268726714982810,\t0.891246051824380440,\t0.891223374705662930,\t\n0.891200695358887020,\t0.891178013784109320,\t0.891155329981386580,\t0.891132643950775520,\t0.891109955692332530,\t0.891087265206114920,\t0.891064572492179190,\t0.891041877550582060,\t\n0.891019180381380280,\t0.890996480984630470,\t0.890973779360389570,\t0.890951075508713660,\t0.890928369429660580,\t0.890905661123286510,\t0.890882950589648390,\t0.890860237828802860,\t\n0.890837522840806640,\t0.890814805625716690,\t0.890792086183589740,\t0.890769364514482080,\t0.890746640618451550,\t0.890723914495554330,\t0.890701186145847260,\t0.890678455569387300,\t\n0.890655722766231280,\t0.890632987736435840,\t0.890610250480057930,\t0.890587510997154050,\t0.890564769287781830,\t0.890542025351997560,\t0.890519279189858290,\t0.890496530801420880,\t\n0.890473780186742060,\t0.890451027345878890,\t0.890428272278887660,\t0.890405514985826210,\t0.890382755466750940,\t0.890359993721718810,\t0.890337229750786660,\t0.890314463554011450,\t\n0.890291695131450010,\t0.890268924483159420,\t0.890246151609196070,\t0.890223376509617800,\t0.890200599184481020,\t0.890177819633842790,\t0.890155037857760070,\t0.890132253856289690,\t\n0.890109467629488620,\t0.890086679177413580,\t0.890063888500122190,\t0.890041095597671080,\t0.890018300470117210,\t0.889995503117517630,\t0.889972703539929300,\t0.889949901737409180,\t\n0.889927097710014330,\t0.889904291457801370,\t0.889881482980828030,\t0.889858672279150940,\t0.889835859352827270,\t0.889813044201913870,\t0.889790226826467910,\t0.889767407226546350,\t\n0.889744585402206250,\t0.889721761353504340,\t0.889698935080498470,\t0.889676106583245140,\t0.889653275861801650,\t0.889630442916224950,\t0.889607607746572100,\t0.889584770352900290,\t\n0.889561930735266020,\t0.889539088893727460,\t0.889516244828341130,\t0.889493398539164200,\t0.889470550026253750,\t0.889447699289666940,\t0.889424846329460950,\t0.889401991145692740,\t\n0.889379133738419260,\t0.889356274107698240,\t0.889333412253586640,\t0.889310548176141410,\t0.889287681875419840,\t0.889264813351479110,\t0.889241942604376280,\t0.889219069634168640,\t\n0.889196194440912910,\t0.889173317024667060,\t0.889150437385487940,\t0.889127555523432810,\t0.889104671438558650,\t0.889081785130922950,\t0.889058896600582680,\t0.889036005847594790,\t\n0.889013112872017340,\t0.888990217673907070,\t0.888967320253321260,\t0.888944420610317200,\t0.888921518744951960,\t0.888898614657283040,\t0.888875708347367510,\t0.888852799815262440,\t\n0.888829889061025670,\t0.888806976084714150,\t0.888784060886385170,\t0.888761143466096140,\t0.888738223823904220,\t0.888715301959866700,\t0.888692377874040540,\t0.888669451566483910,\t\n0.888646523037253560,\t0.888623592286406970,\t0.888600659314001340,\t0.888577724120094060,\t0.888554786704742530,\t0.888531847068004030,\t0.888508905209935420,\t0.888485961130594970,\t\n0.888463014830039750,\t0.888440066308326840,\t0.888417115565513840,\t0.888394162601658040,\t0.888371207416816850,\t0.888348250011047560,\t0.888325290384407330,\t0.888302328536954230,\t\n0.888279364468745340,\t0.888256398179838040,\t0.888233429670289730,\t0.888210458940157930,\t0.888187485989499810,\t0.888164510818372670,\t0.888141533426834660,\t0.888118553814942870,\t\n0.888095571982754570,\t0.888072587930327510,\t0.888049601657718850,\t0.888026613164986210,\t0.888003622452187000,\t0.887980629519378390,\t0.887957634366618560,\t0.887934636993964690,\t\n0.887911637401474270,\t0.887888635589204720,\t0.887865631557213540,\t0.887842625305558240,\t0.887819616834296440,\t0.887796606143485210,\t0.887773593233182940,\t0.887750578103446600,\t\n0.887727560754333790,\t0.887704541185902140,\t0.887681519398209050,\t0.887658495391312250,\t0.887635469165268810,\t0.887612440720137010,\t0.887589410055974140,\t0.887566377172837820,\t\n0.887543342070785450,\t0.887520304749874870,\t0.887497265210163370,\t0.887474223451708790,\t0.887451179474568310,\t0.887428133278800100,\t0.887405084864461680,\t0.887382034231610550,\t\n0.887358981380304330,\t0.887335926310600650,\t0.887312869022557240,\t0.887289809516231150,\t0.887266747791680910,\t0.887243683848963900,\t0.887220617688137540,\t0.887197549309259760,\t\n0.887174478712388080,\t0.887151405897580240,\t0.887128330864893840,\t0.887105253614386190,\t0.887082174146115790,\t0.887059092460140030,\t0.887036008556516540,\t0.887012922435302940,\t\n0.886989834096557180,\t0.886966743540336670,\t0.886943650766699450,\t0.886920555775702610,\t0.886897458567404760,\t0.886874359141863300,\t0.886851257499135960,\t0.886828153639280470,\t\n0.886805047562354680,\t0.886781939268416090,\t0.886758828757522320,\t0.886735716029732000,\t0.886712601085102300,\t0.886689483923691070,\t0.886666364545556140,\t0.886643242950755360,\t\n0.886620119139346350,\t0.886596993111387180,\t0.886573864866935010,\t0.886550734406048590,\t0.886527601728785420,\t0.886504466835203230,\t0.886481329725359870,\t0.886458190399313170,\t\n0.886435048857120990,\t0.886411905098841160,\t0.886388759124531190,\t0.886365610934249700,\t0.886342460528054210,\t0.886319307906002550,\t0.886296153068152680,\t0.886272996014562440,\t\n0.886249836745289680,\t0.886226675260391890,\t0.886203511559927830,\t0.886180345643954980,\t0.886157177512531200,\t0.886134007165714550,\t0.886110834603562990,\t0.886087659826134240,\t\n0.886064482833486270,\t0.886041303625676790,\t0.886018122202764440,\t0.885994938564806710,\t0.885971752711861790,\t0.885948564643987300,\t0.885925374361241520,\t0.885902181863682300,\t\n0.885878987151367260,\t0.885855790224355010,\t0.885832591082703400,\t0.885809389726470280,\t0.885786186155713700,\t0.885762980370491610,\t0.885739772370862100,\t0.885716562156883210,\t\n0.885693349728612470,\t0.885670135086108700,\t0.885646918229429650,\t0.885623699158633370,\t0.885600477873777710,\t0.885577254374920960,\t0.885554028662121070,\t0.885530800735436000,\t\n0.885507570594923690,\t0.885484338240642770,\t0.885461103672650960,\t0.885437866891006450,\t0.885414627895767190,\t0.885391386686991470,\t0.885368143264737230,\t0.885344897629062210,\t\n0.885321649780025480,\t0.885298399717684430,\t0.885275147442097570,\t0.885251892953322740,\t0.885228636251418120,\t0.885205377336442000,\t0.885182116208452440,\t0.885158852867507170,\t\n0.885135587313665150,\t0.885112319546984220,\t0.885089049567522430,\t0.885065777375337980,\t0.885042502970489140,\t0.885019226353034090,\t0.884995947523030900,\t0.884972666480537410,\t\n0.884949383225612780,\t0.884926097758314660,\t0.884902810078701200,\t0.884879520186830800,\t0.884856228082761540,\t0.884832933766551810,\t0.884809637238259230,\t0.884786338497942970,\t\n0.884763037545660990,\t0.884739734381471240,\t0.884716429005432350,\t0.884693121417602260,\t0.884669811618039370,\t0.884646499606801970,\t0.884623185383947910,\t0.884599868949536350,\t\n0.884576550303625030,\t0.884553229446272350,\t0.884529906377536700,\t0.884506581097476150,\t0.884483253606149210,\t0.884459923903613720,\t0.884436591989928860,\t0.884413257865152460,\t\n0.884389921529342930,\t0.884366582982558660,\t0.884343242224857830,\t0.884319899256298950,\t0.884296554076940410,\t0.884273206686839950,\t0.884249857086056860,\t0.884226505274649190,\t\n0.884203151252675350,\t0.884179795020193500,\t0.884156436577262170,\t0.884133075923939860,\t0.884109713060284740,\t0.884086347986354990,\t0.884062980702209790,\t0.884039611207907080,\t\n0.884016239503505390,\t0.883992865589063090,\t0.883969489464638600,\t0.883946111130290420,\t0.883922730586076510,\t0.883899347832056260,\t0.883875962868287510,\t0.883852575694829000,\t\n0.883829186311739010,\t0.883805794719075940,\t0.883782400916898530,\t0.883759004905265040,\t0.883735606684233680,\t0.883712206253863710,\t0.883688803614213200,\t0.883665398765340670,\t\n0.883641991707304620,\t0.883618582440163670,\t0.883595170963976220,\t0.883571757278800440,\t0.883548341384695620,\t0.883524923281720050,\t0.883501502969932130,\t0.883478080449390470,\t\n0.883454655720153580,\t0.883431228782279980,\t0.883407799635828380,\t0.883384368280856870,\t0.883360934717424940,\t0.883337498945590550,\t0.883314060965412430,\t0.883290620776949200,\t\n0.883267178380259370,\t0.883243733775401660,\t0.883220286962434600,\t0.883196837941416350,\t0.883173386712406530,\t0.883149933275463090,\t0.883126477630644890,\t0.883103019778010530,\t\n0.883079559717618650,\t0.883056097449527840,\t0.883032632973796310,\t0.883009166290483650,\t0.882985697399648050,\t0.882962226301348240,\t0.882938752995642840,\t0.882915277482590580,\t\n0.882891799762250180,\t0.882868319834680170,\t0.882844837699939040,\t0.882821353358086200,\t0.882797866809179930,\t0.882774378053279070,\t0.882750887090442250,\t0.882727393920728190,\t\n0.882703898544195620,\t0.882680400960903280,\t0.882656901170909670,\t0.882633399174274080,\t0.882609894971055020,\t0.882586388561311220,\t0.882562879945101520,\t0.882539369122484540,\t\n0.882515856093519240,\t0.882492340858263780,\t0.882468823416777900,\t0.882445303769120000,\t0.882421781915348810,\t0.882398257855523170,\t0.882374731589701920,\t0.882351203117943790,\t\n0.882327672440307630,\t0.882304139556851940,\t0.882280604467636340,\t0.882257067172719120,\t0.882233527672159350,\t0.882209985966015740,\t0.882186442054347150,\t0.882162895937212420,\t\n0.882139347614670060,\t0.882115797086779670,\t0.882092244353599900,\t0.882068689415189460,\t0.882045132271607300,\t0.882021572922912390,\t0.881998011369163450,\t0.881974447610419540,\t\n0.881950881646739070,\t0.881927313478181870,\t0.881903743104806240,\t0.881880170526671340,\t0.881856595743836010,\t0.881833018756359220,\t0.881809439564299910,\t0.881785858167716930,\t\n0.881762274566668890,\t0.881738688761215640,\t0.881715100751415680,\t0.881691510537327860,\t0.881667918119011350,\t0.881644323496525000,\t0.881620726669927860,\t0.881597127639278550,\t\n0.881573526404636710,\t0.881549922966061160,\t0.881526317323610750,\t0.881502709477344550,\t0.881479099427321610,\t0.881455487173600890,\t0.881431872716241460,\t0.881408256055301930,\t\n0.881384637190842150,\t0.881361016122920840,\t0.881337392851596960,\t0.881313767376929570,\t0.881290139698977850,\t0.881266509817800750,\t0.881242877733457330,\t0.881219243446006330,\t\n0.881195606955507580,\t0.881171968262019820,\t0.881148327365602220,\t0.881124684266313740,\t0.881101038964213660,\t0.881077391459360810,\t0.881053741751814170,\t0.881030089841633560,\t\n0.881006435728877710,\t0.880982779413605810,\t0.880959120895877020,\t0.880935460175750310,\t0.880911797253285060,\t0.880888132128540220,\t0.880864464801574650,\t0.880840795272448410,\t\n0.880817123541220100,\t0.880793449607949030,\t0.880769773472694250,\t0.880746095135515160,\t0.880722414596470720,\t0.880698731855619870,\t0.880675046913022670,\t0.880651359768737760,\t\n0.880627670422824530,\t0.880603978875342030,\t0.880580285126349670,\t0.880556589175906620,\t0.880532891024072060,\t0.880509190670904830,\t0.880485488116464990,\t0.880461783360811490,\t\n0.880438076404003510,\t0.880414367246100450,\t0.880390655887161370,\t0.880366942327245660,\t0.880343226566412620,\t0.880319508604721080,\t0.880295788442231110,\t0.880272066079001770,\t\n0.880248341515092240,\t0.880224614750561910,\t0.880200885785469960,\t0.880177154619875780,\t0.880153421253838330,\t0.880129685687417780,\t0.880105947920672980,\t0.880082207953663430,\t\n0.880058465786448200,\t0.880034721419086900,\t0.880010974851638710,\t0.879987226084163130,\t0.879963475116719020,\t0.879939721949366760,\t0.879915966582165090,\t0.879892209015173510,\t\n0.879868449248451530,\t0.879844687282058340,\t0.879820923116053420,\t0.879797156750496190,\t0.879773388185445590,\t0.879749617420962030,\t0.879725844457104440,\t0.879702069293932130,\t\n0.879678291931504820,\t0.879654512369881680,\t0.879630730609122220,\t0.879606946649285510,\t0.879583160490431950,\t0.879559372132620480,\t0.879535581575910500,\t0.879511788820361630,\t\n0.879487993866033270,\t0.879464196712984920,\t0.879440397361275990,\t0.879416595810965760,\t0.879392792062114400,\t0.879368986114781090,\t0.879345177969025340,\t0.879321367624906650,\t\n0.879297555082484530,\t0.879273740341818490,\t0.879249923402967700,\t0.879226104265992570,\t0.879202282930952150,\t0.879178459397905950,\t0.879154633666913710,\t0.879130805738034820,\t\n0.879106975611328890,\t0.879083143286855550,\t0.879059308764673970,\t0.879035472044844560,\t0.879011633127426360,\t0.878987792012479120,\t0.878963948700062450,\t0.878940103190235860,\t\n0.878916255483059070,\t0.878892405578591610,\t0.878868553476892630,\t0.878844699178022770,\t0.878820842682041190,\t0.878796983989007520,\t0.878773123098981370,\t0.878749260012022360,\t\n0.878725394728190220,\t0.878701527247544130,\t0.878677657570144710,\t0.878653785696051130,\t0.878629911625323110,\t0.878606035358020290,\t0.878582156894202380,\t0.878558276233929010,\t\n0.878534393377260030,\t0.878510508324254700,\t0.878486621074973440,\t0.878462731629475630,\t0.878438839987821020,\t0.878414946150069320,\t0.878391050116280160,\t0.878367151886513490,\t\n0.878343251460828920,\t0.878319348839285750,\t0.878295444021944590,\t0.878271537008864960,\t0.878247627800106350,\t0.878223716395728720,\t0.878199802795791800,\t0.878175887000355430,\t\n0.878151969009478890,\t0.878128048823222820,\t0.878104126441646700,\t0.878080201864810170,\t0.878056275092773180,\t0.878032346125595440,\t0.878008414963336930,\t0.877984481606057350,\t\n0.877960546053816130,\t0.877936608306673970,\t0.877912668364690290,\t0.877888726227925020,\t0.877864781896437800,\t0.877840835370288670,\t0.877816886649537500,\t0.877792935734243660,\t\n0.877768982624467900,\t0.877745027320269710,\t0.877721069821708940,\t0.877697110128845550,\t0.877673148241739250,\t0.877649184160450120,\t0.877625217885038110,\t0.877601249415562610,\t\n0.877577278752084360,\t0.877553305894662960,\t0.877529330843358270,\t0.877505353598230230,\t0.877481374159338800,\t0.877457392526744040,\t0.877433408700505680,\t0.877409422680683450,\t\n0.877385434467338080,\t0.877361444060529070,\t0.877337451460316500,\t0.877313456666760310,\t0.877289459679920450,\t0.877265460499856990,\t0.877241459126629320,\t0.877217455560298510,\t\n0.877193449800924060,\t0.877169441848566040,\t0.877145431703284410,\t0.877121419365139100,\t0.877097404834190300,\t0.877073388110498060,\t0.877049369194121800,\t0.877025348085122670,\t\n0.877001324783560080,\t0.876977299289494190,\t0.876953271602985080,\t0.876929241724092810,\t0.876905209652877330,\t0.876881175389398470,\t0.876857138933717200,\t0.876833100285892900,\t\n0.876809059445985970,\t0.876785016414056370,\t0.876760971190164160,\t0.876736923774369630,\t0.876712874166732710,\t0.876688822367313160,\t0.876664768376172020,\t0.876640712193369030,\t\n0.876616653818964140,\t0.876592593253017750,\t0.876568530495589690,\t0.876544465546740480,\t0.876520398406530070,\t0.876496329075018180,\t0.876472257552265880,\t0.876448183838333010,\t\n0.876424107933279630,\t0.876400029837166030,\t0.876375949550052380,\t0.876351867071998750,\t0.876327782403065080,\t0.876303695543312440,\t0.876279606492800460,\t0.876255515251589510,\t\n0.876231421819739790,\t0.876207326197311450,\t0.876183228384364800,\t0.876159128380960220,\t0.876135026187157220,\t0.876110921803017200,\t0.876086815228599770,\t0.876062706463965330,\t\n0.876038595509174180,\t0.876014482364286580,\t0.875990367029362730,\t0.875966249504462890,\t0.875942129789647030,\t0.875918007884976310,\t0.875893883790510590,\t0.875869757506310130,\t\n0.875845629032435240,\t0.875821498368946290,\t0.875797365515903700,\t0.875773230473367190,\t0.875749093241398050,\t0.875724953820056110,\t0.875700812209401770,\t0.875676668409495540,\t\n0.875652522420397480,\t0.875628374242168220,\t0.875604223874868030,\t0.875580071318556860,\t0.875555916573295900,\t0.875531759639145090,\t0.875507600516164940,\t0.875483439204415850,\t\n0.875459275703958100,\t0.875435110014852190,\t0.875410942137157980,\t0.875386772070936960,\t0.875362599816248980,\t0.875338425373154540,\t0.875314248741713930,\t0.875290069921987770,\t\n0.875265888914036450,\t0.875241705717920370,\t0.875217520333699590,\t0.875193332761435410,\t0.875169143001187980,\t0.875144951053017710,\t0.875120756916984990,\t0.875096560593150330,\t\n0.875072362081574350,\t0.875048161382317450,\t0.875023958495439680,\t0.874999753421002560,\t0.874975546159065920,\t0.874951336709690500,\t0.874927125072936680,\t0.874902911248865100,\t\n0.874878695237536250,\t0.874854477039010200,\t0.874830256653348350,\t0.874806034080610970,\t0.874781809320858360,\t0.874757582374151350,\t0.874733353240550350,\t0.874709121920115960,\t\n0.874684888412908700,\t0.874660652718988850,\t0.874636414838417810,\t0.874612174771255750,\t0.874587932517563280,\t0.874563688077400920,\t0.874539441450829290,\t0.874515192637909110,\t\n0.874490941638701000,\t0.874466688453265030,\t0.874442433081662810,\t0.874418175523954510,\t0.874393915780200760,\t0.874369653850462170,\t0.874345389734799580,\t0.874321123433273390,\t\n0.874296854945944000,\t0.874272584272872910,\t0.874248311414120290,\t0.874224036369746990,\t0.874199759139813630,\t0.874175479724380810,\t0.874151198123509280,\t0.874126914337259750,\t\n0.874102628365692520,\t0.874078340208869100,\t0.874054049866849870,\t0.874029757339695570,\t0.874005462627466810,\t0.873981165730224440,\t0.873956866648029180,\t0.873932565380941220,\t\n0.873908261929022380,\t0.873883956292332840,\t0.873859648470933340,\t0.873835338464884810,\t0.873811026274247890,\t0.873786711899083410,\t0.873762395339452210,\t0.873738076595414580,\t\n0.873713755667032130,\t0.873689432554365260,\t0.873665107257474930,\t0.873640779776421740,\t0.873616450111266650,\t0.873592118262070390,\t0.873567784228893920,\t0.873543448011797510,\t\n0.873519109610842890,\t0.873494769026090470,\t0.873470426257601180,\t0.873446081305435880,\t0.873421734169655290,\t0.873397384850320370,\t0.873373033347491500,\t0.873348679661230640,\t\n0.873324323791597970,\t0.873299965738654540,\t0.873275605502461080,\t0.873251243083078780,\t0.873226878480568240,\t0.873202511694990520,\t0.873178142726406150,\t0.873153771574876840,\t\n0.873129398240463090,\t0.873105022723225880,\t0.873080645023226020,\t0.873056265140524590,\t0.873031883075182540,\t0.873007498827260810,\t0.872983112396819800,\t0.872958723783921480,\t\n0.872934332988626330,\t0.872909940010995420,\t0.872885544851089600,\t0.872861147508969930,\t0.872836747984697460,\t0.872812346278332600,\t0.872787942389937290,\t0.872763536319572150,\t\n0.872739128067298250,\t0.872714717633176430,\t0.872690305017267850,\t0.872665890219633480,\t0.872641473240334480,\t0.872617054079431240,\t0.872592632736985950,\t0.872568209213059000,\t\n0.872543783507711450,\t0.872519355621004580,\t0.872494925552999230,\t0.872470493303756590,\t0.872446058873337260,\t0.872421622261803200,\t0.872397183469215130,\t0.872372742495634120,\t\n0.872348299341121240,\t0.872323854005737530,\t0.872299406489544290,\t0.872274956792602470,\t0.872250504914972910,\t0.872226050856717450,\t0.872201594617896810,\t0.872177136198572290,\t\n0.872152675598804940,\t0.872128212818655820,\t0.872103747858186230,\t0.872079280717457220,\t0.872054811396529630,\t0.872030339895465410,\t0.872005866214325300,\t0.871981390353170570,\t\n0.871956912312062400,\t0.871932432091061860,\t0.871907949690230330,\t0.871883465109628440,\t0.871858978349318360,\t0.871834489409360810,\t0.871809998289816980,\t0.871785504990748250,\t\n0.871761009512215690,\t0.871736511854280690,\t0.871712012017004320,\t0.871687510000447530,\t0.871663005804672380,\t0.871638499429739700,\t0.871613990875710900,\t0.871589480142646920,\t\n0.871564967230609390,\t0.871540452139659360,\t0.871515934869858230,\t0.871491415421266850,\t0.871466893793947370,\t0.871442369987960650,\t0.871417844003367970,\t0.871393315840230720,\t\n0.871368785498610190,\t0.871344252978567660,\t0.871319718280164080,\t0.871295181403461630,\t0.871270642348521250,\t0.871246101115404240,\t0.871221557704171980,\t0.871197012114885870,\t\n0.871172464347607200,\t0.871147914402397360,\t0.871123362279317300,\t0.871098807978429200,\t0.871074251499794230,\t0.871049692843473560,\t0.871025132009528580,\t0.871000568998020810,\t\n0.870976003809011750,\t0.870951436442562120,\t0.870926866898734330,\t0.870902295177589440,\t0.870877721279188720,\t0.870853145203593800,\t0.870828566950865970,\t0.870803986521066720,\t\n0.870779403914257450,\t0.870754819130499350,\t0.870730232169854570,\t0.870705643032384180,\t0.870681051718149690,\t0.870656458227212600,\t0.870631862559634430,\t0.870607264715476560,\t\n0.870582664694800500,\t0.870558062497667320,\t0.870533458124139510,\t0.870508851574277930,\t0.870484242848144300,\t0.870459631945800120,\t0.870435018867306790,\t0.870410403612725920,\t\n0.870385786182118590,\t0.870361166575547300,\t0.870336544793072990,\t0.870311920834757390,\t0.870287294700661910,\t0.870262666390848260,\t0.870238035905377960,\t0.870213403244312510,\t\n0.870188768407713200,\t0.870164131395642300,\t0.870139492208161110,\t0.870114850845331240,\t0.870090207307214200,\t0.870065561593871720,\t0.870040913705365180,\t0.870016263641756100,\t\n0.869991611403106660,\t0.869966956989478240,\t0.869942300400932460,\t0.869917641637530940,\t0.869892980699335180,\t0.869868317586407150,\t0.869843652298808220,\t0.869818984836599700,\t\n0.869794315199844180,\t0.869769643388602850,\t0.869744969402937550,\t0.869720293242909670,\t0.869695614908581160,\t0.869670934400013530,\t0.869646251717268610,\t0.869621566860407590,\t\n0.869596879829493190,\t0.869572190624586460,\t0.869547499245749370,\t0.869522805693043410,\t0.869498109966530540,\t0.869473412066272380,\t0.869448711992330200,\t0.869424009744766750,\t\n0.869399305323643180,\t0.869374598729021450,\t0.869349889960963180,\t0.869325179019530100,\t0.869300465904784160,\t0.869275750616787080,\t0.869251033155600150,\t0.869226313521286100,\t\n0.869201591713906210,\t0.869176867733522430,\t0.869152141580196380,\t0.869127413253990010,\t0.869102682754965160,\t0.869077950083183560,\t0.869053215238706710,\t0.869028478221597120,\t\n0.869003739031916410,\t0.868978997669726420,\t0.868954254135088870,\t0.868929508428065710,\t0.868904760548718790,\t0.868880010497109500,\t0.868855258273300570,\t0.868830503877353610,\t\n0.868805747309330250,\t0.868780988569292640,\t0.868756227657302540,\t0.868731464573421870,\t0.868706699317712490,\t0.868681931890236010,\t0.868657162291055050,\t0.868632390520231220,\t\n0.868607616577826370,\t0.868582840463902550,\t0.868558062178521610,\t0.868533281721745490,\t0.868508499093635700,\t0.868483714294255190,\t0.868458927323665360,\t0.868434138181928270,\t\n0.868409346869105760,\t0.868384553385259880,\t0.868359757730452600,\t0.868334959904745960,\t0.868310159908201480,\t0.868285357740882000,\t0.868260553402849130,\t0.868235746894164940,\t\n0.868210938214891370,\t0.868186127365090490,\t0.868161314344824240,\t0.868136499154154690,\t0.868111681793143460,\t0.868086862261853500,\t0.868062040560346300,\t0.868037216688684050,\t\n0.868012390646928810,\t0.867987562435142520,\t0.867962732053387360,\t0.867937899501724950,\t0.867913064780218240,\t0.867888227888928830,\t0.867863388827918800,\t0.867838547597250320,\t\n0.867813704196985560,\t0.867788858627186470,\t0.867764010887915220,\t0.867739160979233540,\t0.867714308901204380,\t0.867689454653889470,\t0.867664598237350980,\t0.867639739651650870,\t\n0.867614878896851520,\t0.867590015973014880,\t0.867565150880203250,\t0.867540283618478240,\t0.867515414187903120,\t0.867490542588539300,\t0.867465668820449180,\t0.867440792883694910,\t\n0.867415914778338680,\t0.867391034504442550,\t0.867366152062068460,\t0.867341267451279490,\t0.867316380672137340,\t0.867291491724704100,\t0.867266600609042260,\t0.867241707325213880,\t\n0.867216811873281260,\t0.867191914253306660,\t0.867167014465351720,\t0.867142112509479700,\t0.867117208385752460,\t0.867092302094232160,\t0.867067393634981200,\t0.867042483008061640,\t\n0.867017570213535870,\t0.866992655251465740,\t0.866967738121914520,\t0.866942818824943840,\t0.866917897360616200,\t0.866892973728993770,\t0.866868047930138830,\t0.866843119964113900,\t\n0.866818189830981130,\t0.866793257530802390,\t0.866768323063641040,\t0.866743386429558840,\t0.866718447628618160,\t0.866693506660881300,\t0.866668563526410750,\t0.866643618225268810,\t\n0.866618670757517750,\t0.866593721123219640,\t0.866568769322437650,\t0.866543815355233730,\t0.866518859221670270,\t0.866493900921809670,\t0.866468940455714320,\t0.866443977823446620,\t\n0.866419013025068520,\t0.866394046060643410,\t0.866369076930233130,\t0.866344105633900070,\t0.866319132171706860,\t0.866294156543715780,\t0.866269178749989320,\t0.866244198790589890,\t\n0.866219216665579550,\t0.866194232375021580,\t0.866169245918978040,\t0.866144257297511430,\t0.866119266510684160,\t0.866094273558558610,\t0.866069278441197520,\t0.866044281158663170,\t\n0.866019281711017720,\t0.865994280098324460,\t0.865969276320645580,\t0.865944270378043450,\t0.865919262270580580,\t0.865894251998319600,\t0.865869239561323000,\t0.865844224959652850,\t\n0.865819208193372660,\t0.865794189262544370,\t0.865769168167230600,\t0.865744144907493960,\t0.865719119483396970,\t0.865694091895002130,\t0.865669062142372050,\t0.865644030225568910,\t\n0.865618996144656090,\t0.865593959899695900,\t0.865568921490750710,\t0.865543880917883150,\t0.865518838181156050,\t0.865493793280631700,\t0.865468746216372490,\t0.865443696988441920,\t\n0.865418645596902070,\t0.865393592041815540,\t0.865368536323245170,\t0.865343478441253370,\t0.865318418395902840,\t0.865293356187256220,\t0.865268291815375900,\t0.865243225280325270,\t\n0.865218156582166500,\t0.865193085720962430,\t0.865168012696775570,\t0.865142937509668750,\t0.865117860159704600,\t0.865092780646945720,\t0.865067698971454410,\t0.865042615133294390,\t\n0.865017529132527830,\t0.864992440969217460,\t0.864967350643425890,\t0.864942258155215970,\t0.864917163504650530,\t0.864892066691791640,\t0.864866967716703020,\t0.864841866579446950,\t\n0.864816763280086280,\t0.864791657818683720,\t0.864766550195301910,\t0.864741440410003780,\t0.864716328462852070,\t0.864691214353909170,\t0.864666098083238580,\t0.864640979650902700,\t\n0.864615859056964480,\t0.864590736301486530,\t0.864565611384531810,\t0.864540484306163040,\t0.864515355066443060,\t0.864490223665434150,\t0.864465090103200270,\t0.864439954379803590,\t\n0.864414816495307050,\t0.864389676449773490,\t0.864364534243265650,\t0.864339389875846580,\t0.864314243347578560,\t0.864289094658525330,\t0.864263943808749380,\t0.864238790798313560,\t\n0.864213635627280820,\t0.864188478295713990,\t0.864163318803675920,\t0.864138157151229550,\t0.864112993338437390,\t0.864087827365363160,\t0.864062659232069370,\t0.864037488938618870,\t\n0.864012316485074710,\t0.863987141871499830,\t0.863961965097956970,\t0.863936786164508860,\t0.863911605071219110,\t0.863886421818150450,\t0.863861236405365720,\t0.863836048832927860,\t\n0.863810859100899940,\t0.863785667209344800,\t0.863760473158325490,\t0.863735276947904640,\t0.863710078578145970,\t0.863684878049112090,\t0.863659675360866070,\t0.863634470513470860,\t\n0.863609263506989410,\t0.863584054341484890,\t0.863558843017020130,\t0.863533629533657860,\t0.863508413891462050,\t0.863483196090495060,\t0.863457976130820200,\t0.863432754012500300,\t\n0.863407529735598640,\t0.863382303300178070,\t0.863357074706301300,\t0.863331843954032290,\t0.863306611043433650,\t0.863281375974568550,\t0.863256138747499960,\t0.863230899362291030,\t\n0.863205657819004930,\t0.863180414117704630,\t0.863155168258452840,\t0.863129920241313520,\t0.863104670066349500,\t0.863079417733623730,\t0.863054163243199390,\t0.863028906595139760,\t\n0.863003647789507780,\t0.862978386826366290,\t0.862953123705779260,\t0.862927858427809390,\t0.862902590992519870,\t0.862877321399973860,\t0.862852049650234540,\t0.862826775743365190,\t\n0.862801499679428870,\t0.862776221458488310,\t0.862750941080607680,\t0.862725658545849710,\t0.862700373854277560,\t0.862675087005954410,\t0.862649798000943660,\t0.862624506839308360,\t\n0.862599213521111800,\t0.862573918046416810,\t0.862548620415287350,\t0.862523320627786470,\t0.862498018683977240,\t0.862472714583922940,\t0.862447408327686850,\t0.862422099915332250,\t\n0.862396789346921990,\t0.862371476622520230,\t0.862346161742189700,\t0.862320844705993790,\t0.862295525513995800,\t0.862270204166258880,\t0.862244880662846550,\t0.862219555003822080,\t\n0.862194227189248210,\t0.862168897219189210,\t0.862143565093707930,\t0.862118230812867760,\t0.862092894376732090,\t0.862067555785364090,\t0.862042215038827280,\t0.862016872137184920,\t\n0.861991527080499860,\t0.861966179868836500,\t0.861940830502257670,\t0.861915478980826770,\t0.861890125304607070,\t0.861864769473662200,\t0.861839411488055320,\t0.861814051347849500,\t\n0.861788689053109010,\t0.861763324603896820,\t0.861737958000276310,\t0.861712589242310870,\t0.861687218330063900,\t0.861661845263599010,\t0.861636470042979500,\t0.861611092668268300,\t\n0.861585713139529810,\t0.861560331456827090,\t0.861534947620223530,\t0.861509561629782540,\t0.861484173485567720,\t0.861458783187642460,\t0.861433390736069730,\t0.861407996130914010,\t\n0.861382599372238270,\t0.861357200460106110,\t0.861331799394580930,\t0.861306396175726240,\t0.861280990803605540,\t0.861255583278282330,\t0.861230173599819790,\t0.861204761768282200,\t\n0.861179347783732730,\t0.861153931646234880,\t0.861128513355852280,\t0.861103092912648300,\t0.861077670316686690,\t0.861052245568030840,\t0.861026818666743910,\t0.861001389612890410,\t\n0.860975958406533400,\t0.860950525047736500,\t0.860925089536563330,\t0.860899651873077380,\t0.860874212057342380,\t0.860848770089421400,\t0.860823325969378830,\t0.860797879697278060,\t\n0.860772431273182480,\t0.860746980697155940,\t0.860721527969261930,\t0.860696073089563970,\t0.860670616058126000,\t0.860645156875010970,\t0.860619695540283500,\t0.860594232054006760,\t\n0.860568766416244470,\t0.860543298627060250,\t0.860517828686517830,\t0.860492356594680820,\t0.860466882351612840,\t0.860441405957377280,\t0.860415927412038650,\t0.860390446715660230,\t\n0.860364963868305630,\t0.860339478870038700,\t0.860313991720923040,\t0.860288502421022280,\t0.860263010970399920,\t0.860237517369120570,\t0.860212021617247300,\t0.860186523714844050,\t\n0.860161023661974440,\t0.860135521458702310,\t0.860110017105091270,\t0.860084510601205390,\t0.860059001947107600,\t0.860033491142862760,\t0.860007978188534360,\t0.859982463084185910,\t\n0.859956945829881250,\t0.859931426425684320,\t0.859905904871658740,\t0.859880381167868020,\t0.859854855314376780,\t0.859829327311248390,\t0.859803797158546710,\t0.859778264856335460,\t\n0.859752730404678590,\t0.859727193803639930,\t0.859701655053283220,\t0.859676114153671960,\t0.859650571104870860,\t0.859625025906943340,\t0.859599478559953330,\t0.859573929063964460,\t\n0.859548377419040890,\t0.859522823625246350,\t0.859497267682644780,\t0.859471709591299480,\t0.859446149351275500,\t0.859420586962636010,\t0.859395022425445190,\t0.859369455739766750,\t\n0.859343886905664660,\t0.859318315923202850,\t0.859292742792444830,\t0.859267167513455330,\t0.859241590086297970,\t0.859216010511036690,\t0.859190428787735330,\t0.859164844916457840,\t\n0.859139258897268280,\t0.859113670730230710,\t0.859088080415408300,\t0.859062487952866220,\t0.859036893342667970,\t0.859011296584877400,\t0.858985697679558680,\t0.858960096626775640,\t\n0.858934493426592450,\t0.858908888079072950,\t0.858883280584280760,\t0.858857670942280940,\t0.858832059153136760,\t0.858806445216912630,\t0.858780829133672260,\t0.858755210903479840,\t\n0.858729590526399410,\t0.858703968002494490,\t0.858678343331830240,\t0.858652716514469950,\t0.858627087550478010,\t0.858601456439918360,\t0.858575823182854970,\t0.858550187779352100,\t\n0.858524550229473720,\t0.858498910533283530,\t0.858473268690846500,\t0.858447624702226350,\t0.858421978567487030,\t0.858396330286692820,\t0.858370679859907890,\t0.858345027287196080,\t\n0.858319372568621340,\t0.858293715704248620,\t0.858268056694141630,\t0.858242395538364460,\t0.858216732236981360,\t0.858191066790056410,\t0.858165399197653780,\t0.858139729459837630,\t\n0.858114057576671700,\t0.858088383548221150,\t0.858062707374549590,\t0.858037029055721210,\t0.858011348591800390,\t0.857985665982851090,\t0.857959981228937680,\t0.857934294330124250,\t\n0.857908605286474720,\t0.857882914098054060,\t0.857857220764926100,\t0.857831525287155120,\t0.857805827664805400,\t0.857780127897941000,\t0.857754425986626320,\t0.857728721930925090,\t\n0.857703015730902570,\t0.857677307386622510,\t0.857651596898149180,\t0.857625884265546870,\t0.857600169488879850,\t0.857574452568212300,\t0.857548733503608720,\t0.857523012295132840,\t\n0.857497288942849820,\t0.857471563446823630,\t0.857445835807118530,\t0.857420106023798920,\t0.857394374096928980,\t0.857368640026573090,\t0.857342903812795540,\t0.857317165455660390,\t\n0.857291424955232690,\t0.857265682311576520,\t0.857239937524756020,\t0.857214190594835830,\t0.857188441521880010,\t0.857162690305953160,\t0.857136936947119120,\t0.857111181445443290,\t\n0.857085423800989400,\t0.857059664013821940,\t0.857033902084005430,\t0.857008138011604030,\t0.856982371796682350,\t0.856956603439304800,\t0.856930832939535200,\t0.856905060297438960,\t\n0.856879285513080120,\t0.856853508586522980,\t0.856827729517832150,\t0.856801948307072010,\t0.856776164954306970,\t0.856750379459601090,\t0.856724591823019740,\t0.856698802044626780,\t\n0.856673010124486930,\t0.856647216062664580,\t0.856621419859224130,\t0.856595621514230080,\t0.856569821027747040,\t0.856544018399839070,\t0.856518213630571350,\t0.856492406720008260,\t\n0.856466597668213980,\t0.856440786475253350,\t0.856414973141190640,\t0.856389157666090580,\t0.856363340050017570,\t0.856337520293035780,\t0.856311698395210710,\t0.856285874356606300,\t\n0.856260048177287290,\t0.856234219857318070,\t0.856208389396763360,\t0.856182556795687670,\t0.856156722054155160,\t0.856130885172231240,\t0.856105046149980060,\t0.856079204987466370,\t\n0.856053361684754650,\t0.856027516241909540,\t0.856001668658995520,\t0.855975818936077440,\t0.855949967073219350,\t0.855924113070486770,\t0.855898256927943970,\t0.855872398645655450,\t\n0.855846538223685950,\t0.855820675662100180,\t0.855794810960962660,\t0.855768944120338100,\t0.855743075140290690,\t0.855717204020886140,\t0.855691330762188510,\t0.855665455364262640,\t\n0.855639577827173040,\t0.855613698150984540,\t0.855587816335761750,\t0.855561932381568970,\t0.855536046288471910,\t0.855510158056534630,\t0.855484267685821980,\t0.855458375176398670,\t\n0.855432480528329430,\t0.855406583741678990,\t0.855380684816512080,\t0.855354783752893090,\t0.855328880550887400,\t0.855302975210559650,\t0.855277067731974430,\t0.855251158115196590,\t\n0.855225246360290850,\t0.855199332467321940,\t0.855173416436354250,\t0.855147498267453510,\t0.855121577960684000,\t0.855095655516110550,\t0.855069730933797900,\t0.855043804213810990,\t\n0.855017875356214540,\t0.854991944361073510,\t0.854966011228452060,\t0.854940075958416030,\t0.854914138551029820,\t0.854888199006358260,\t0.854862257324466300,\t0.854836313505418550,\t\n0.854810367549280080,\t0.854784419456115720,\t0.854758469225989860,\t0.854732516858968230,\t0.854706562355115330,\t0.854680605714496000,\t0.854654646937175190,\t0.854628686023217840,\t\n0.854602722972688690,\t0.854576757785652230,\t0.854550790462174410,\t0.854524821002319630,\t0.854498849406152730,\t0.854472875673738750,\t0.854446899805142550,\t0.854420921800429060,\t\n0.854394941659663340,\t0.854368959382909800,\t0.854342974970234260,\t0.854316988421701340,\t0.854290999737375990,\t0.854265008917323150,\t0.854239015961607670,\t0.854213020870294710,\t\n0.854187023643448780,\t0.854161024281135720,\t0.854135022783420020,\t0.854109019150366850,\t0.854083013382041180,\t0.854057005478507820,\t0.854030995439832070,\t0.854004983266078880,\t\n0.853978968957312620,\t0.853952952513599480,\t0.853926933935003960,\t0.853900913221591120,\t0.853874890373426010,\t0.853848865390573590,\t0.853822838273099020,\t0.853796809021067470,\t\n0.853770777634543340,\t0.853744744113592690,\t0.853718708458280240,\t0.853692670668671050,\t0.853666630744830180,\t0.853640588686822690,\t0.853614544494713750,\t0.853588498168567970,\t\n0.853562449708451410,\t0.853536399114428690,\t0.853510346386565090,\t0.853484291524925550,\t0.853458234529575250,\t0.853432175400579360,\t0.853406114138003160,\t0.853380050741911030,\t\n0.853353985212369380,\t0.853327917549442700,\t0.853301847753196290,\t0.853275775823695180,\t0.853249701761004680,\t0.853223625565189820,\t0.853197547236316020,\t0.853171466774447880,\t\n0.853145384179651470,\t0.853119299451991610,\t0.853093212591533590,\t0.853067123598342470,\t0.853041032472483530,\t0.853014939214022050,\t0.852988843823022760,\t0.852962746299551820,\t\n0.852936646643673970,\t0.852910544855454590,\t0.852884440934958740,\t0.852858334882251820,\t0.852832226697399110,\t0.852806116380465770,\t0.852780003931516760,\t0.852753889350618130,\t\n0.852727772637834840,\t0.852701653793232040,\t0.852675532816875140,\t0.852649409708829410,\t0.852623284469160250,\t0.852597157097932270,\t0.852571027595211970,\t0.852544895961063980,\t\n0.852518762195553890,\t0.852492626298746780,\t0.852466488270708140,\t0.852440348111503270,\t0.852414205821197650,\t0.852388061399855900,\t0.852361914847544530,\t0.852335766164328380,\t\n0.852309615350272720,\t0.852283462405443170,\t0.852257307329904900,\t0.852231150123723300,\t0.852204990786963880,\t0.852178829319691580,\t0.852152665721972570,\t0.852126499993871910,\t\n0.852100332135455000,\t0.852074162146787330,\t0.852047990027934190,\t0.852021815778961080,\t0.851995639399932950,\t0.851969460890916300,\t0.851943280251975850,\t0.851917097483177340,\t\n0.851890912584585940,\t0.851864725556267350,\t0.851838536398286990,\t0.851812345110710250,\t0.851786151693602060,\t0.851759956147029150,\t0.851733758471056150,\t0.851707558665748880,\t\n0.851681356731172730,\t0.851655152667393220,\t0.851628946474475730,\t0.851602738152485880,\t0.851576527701488730,\t0.851550315121550770,\t0.851524100412736960,\t0.851497883575113020,\t\n0.851471664608744240,\t0.851445443513696330,\t0.851419220290034810,\t0.851392994937824830,\t0.851366767457132800,\t0.851340537848023770,\t0.851314306110563470,\t0.851288072244817400,\t\n0.851261836250851170,\t0.851235598128730400,\t0.851209357878520480,\t0.851183115500286800,\t0.851156870994095870,\t0.851130624360012630,\t0.851104375598102810,\t0.851078124708432140,\t\n0.851051871691066220,\t0.851025616546070450,\t0.850999359273510340,\t0.850973099873452150,\t0.850946838345961300,\t0.850920574691103380,\t0.850894308908944020,\t0.850868040999548820,\t\n0.850841770962983520,\t0.850815498799313840,\t0.850789224508604840,\t0.850762948090923340,\t0.850736669546334530,\t0.850710388874903910,\t0.850684106076697420,\t0.850657821151780680,\t\n0.850631534100219300,\t0.850605244922079120,\t0.850578953617425300,\t0.850552660186324690,\t0.850526364628842350,\t0.850500066945044100,\t0.850473767134995780,\t0.850447465198762910,\t\n0.850421161136411420,\t0.850394854948006600,\t0.850368546633615050,\t0.850342236193302180,\t0.850315923627133710,\t0.850289608935175470,\t0.850263292117493190,\t0.850236973174152590,\t\n0.850210652105219620,\t0.850184328910759570,\t0.850158003590839150,\t0.850131676145523760,\t0.850105346574879130,\t0.850079014878971080,\t0.850052681057865580,\t0.850026345111628330,\t\n0.850000007040325300,\t0.849973666844021760,\t0.849947324522784430,\t0.849920980076678930,\t0.849894633505770880,\t0.849868284810126220,\t0.849841933989810890,\t0.849815581044890740,\t\n0.849789225975431160,\t0.849762868781498980,\t0.849736509463159590,\t0.849710148020479060,\t0.849683784453522990,\t0.849657418762357560,\t0.849631050947048600,\t0.849604681007661950,\t\n0.849578308944263120,\t0.849551934756919040,\t0.849525558445695110,\t0.849499180010657270,\t0.849472799451871490,\t0.849446416769403800,\t0.849420031963319940,\t0.849393645033685530,\t\n0.849367255980567610,\t0.849340864804031370,\t0.849314471504143080,\t0.849288076080968570,\t0.849261678534573900,\t0.849235278865025030,\t0.849208877072388010,\t0.849182473156728230,\t\n0.849156067118112760,\t0.849129658956607190,\t0.849103248672277380,\t0.849076836265189480,\t0.849050421735409570,\t0.849024005083003570,\t0.848997586308037460,\t0.848971165410577040,\t\n0.848944742390689070,\t0.848918317248439360,\t0.848891889983893750,\t0.848865460597118540,\t0.848839029088179540,\t0.848812595457143050,\t0.848786159704074560,\t0.848759721829041140,\t\n0.848733281832108500,\t0.848706839713342600,\t0.848680395472809490,\t0.848653949110575570,\t0.848627500626706670,\t0.848601050021269070,\t0.848574597294328380,\t0.848548142445951560,\t\n0.848521685476204550,\t0.848495226385153180,\t0.848468765172863850,\t0.848442301839402500,\t0.848415836384835530,\t0.848389368809228880,\t0.848362899112648390,\t0.848336427295161010,\t\n0.848309953356832680,\t0.848283477297729460,\t0.848256999117917520,\t0.848230518817463030,\t0.848204036396432380,\t0.848177551854891080,\t0.848151065192906390,\t0.848124576410543950,\t\n0.848098085507870140,\t0.848071592484951120,\t0.848045097341853180,\t0.848018600078642380,\t0.847992100695385110,\t0.847965599192147200,\t0.847939095568995720,\t0.847912589825996490,\t\n0.847886081963215800,\t0.847859571980719820,\t0.847833059878575050,\t0.847806545656847540,\t0.847780029315603150,\t0.847753510854909240,\t0.847726990274831560,\t0.847700467575436380,\t\n0.847673942756790090,\t0.847647415818958860,\t0.847620886762009080,\t0.847594355586007150,\t0.847567822291018790,\t0.847541286877111390,\t0.847514749344350780,\t0.847488209692803360,\t\n0.847461667922535300,\t0.847435124033613100,\t0.847408578026103140,\t0.847382029900071720,\t0.847355479655584660,\t0.847328927292709480,\t0.847302372811511990,\t0.847275816212058500,\t\n0.847249257494415490,\t0.847222696658649350,\t0.847196133704826490,\t0.847169568633012740,\t0.847143001443275590,\t0.847116432135681000,\t0.847089860710295240,\t0.847063287167184930,\t\n0.847036711506416240,\t0.847010133728055890,\t0.846983553832170280,\t0.846956971818825120,\t0.846930387688088150,\t0.846903801440025190,\t0.846877213074702650,\t0.846850622592187130,\t\n0.846824029992545020,\t0.846797435275842950,\t0.846770838442146730,\t0.846744239491523890,\t0.846717638424040460,\t0.846691035239762860,\t0.846664429938757790,\t0.846637822521091540,\t\n0.846611212986830840,\t0.846584601336042080,\t0.846557987568791300,\t0.846531371685146030,\t0.846504753685172420,\t0.846478133568936860,\t0.846451511336505870,\t0.846424886987946270,\t\n0.846398260523324340,\t0.846371631942706810,\t0.846345001246159740,\t0.846318368433750630,\t0.846291733505545540,\t0.846265096461611190,\t0.846238457302014080,\t0.846211816026820830,\t\n0.846185172636097940,\t0.846158527129911800,\t0.846131879508329690,\t0.846105229771418000,\t0.846078577919243120,\t0.846051923951871900,\t0.846025267869370820,\t0.845998609671806510,\t\n0.845971949359245800,\t0.845945286931754640,\t0.845918622389400850,\t0.845891955732250400,\t0.845865286960370110,\t0.845838616073826600,\t0.845811943072686480,\t0.845785267957016580,\t\n0.845758590726883530,\t0.845731911382353490,\t0.845705229923494060,\t0.845678546350371760,\t0.845651860663052870,\t0.845625172861604430,\t0.845598482946093190,\t0.845571790916585520,\t\n0.845545096773148040,\t0.845518400515848260,\t0.845491702144752440,\t0.845465001659927440,\t0.845438299061439860,\t0.845411594349356530,\t0.845384887523744300,\t0.845358178584669770,\t\n0.845331467532199340,\t0.845304754366400730,\t0.845278039087340230,\t0.845251321695084660,\t0.845224602189700750,\t0.845197880571255330,\t0.845171156839815250,\t0.845144430995446780,\t\n0.845117703038217650,\t0.845090972968194350,\t0.845064240785443620,\t0.845037506490032180,\t0.845010770082027070,\t0.844984031561495040,\t0.844957290928502910,\t0.844930548183117080,\t\n0.844903803325405380,\t0.844877056355434090,\t0.844850307273270260,\t0.844823556078980520,\t0.844796802772632030,\t0.844770047354291510,\t0.844743289824025800,\t0.844716530181901510,\t\n0.844689768427986270,\t0.844663004562346660,\t0.844636238585049440,\t0.844609470496161750,\t0.844582700295750330,\t0.844555927983882130,\t0.844529153560623640,\t0.844502377026042810,\t\n0.844475598380206030,\t0.844448817623180140,\t0.844422034755032300,\t0.844395249775829470,\t0.844368462685638370,\t0.844341673484526160,\t0.844314882172559230,\t0.844288088749805650,\t\n0.844261293216331810,\t0.844234495572204760,\t0.844207695817491440,\t0.844180893952258930,\t0.844154089976574150,\t0.844127283890504180,\t0.844100475694115500,\t0.844073665387476080,\t\n0.844046852970652520,\t0.844020038443711870,\t0.843993221806721090,\t0.843966403059747240,\t0.843939582202857360,\t0.843912759236118080,\t0.843885934159597450,\t0.843859106973361860,\t\n0.843832277677478590,\t0.843805446272014590,\t0.843778612757037030,\t0.843751777132612850,\t0.843724939398809210,\t0.843698099555692860,\t0.843671257603331610,\t0.843644413541792320,\t\n0.843617567371142020,\t0.843590719091447780,\t0.843563868702776660,\t0.843537016205195940,\t0.843510161598772120,\t0.843483304883573480,\t0.843456446059666520,\t0.843429585127118410,\t\n0.843402722085996430,\t0.843375856936367630,\t0.843348989678299080,\t0.843322120311858160,\t0.843295248837111490,\t0.843268375254127120,\t0.843241499562971790,\t0.843214621763712760,\t\n0.843187741856417090,\t0.843160859841152190,\t0.843133975717984980,\t0.843107089486982990,\t0.843080201148212800,\t0.843053310701742500,\t0.843026418147638900,\t0.842999523485969290,\t\n0.842972626716800950,\t0.842945727840200940,\t0.842918826856236650,\t0.842891923764974790,\t0.842865018566483660,\t0.842838111260829970,\t0.842811201848081000,\t0.842784290328303930,\t\n0.842757376701566250,\t0.842730460967935020,\t0.842703543127477750,\t0.842676623180261150,\t0.842649701126353400,\t0.842622776965821440,\t0.842595850698732440,\t0.842568922325153900,\t\n0.842541991845153100,\t0.842515059258797220,\t0.842488124566153740,\t0.842461187767289510,\t0.842434248862272690,\t0.842407307851170350,\t0.842380364734049760,\t0.842353419510978090,\t\n0.842326472182023060,\t0.842299522747251730,\t0.842272571206731160,\t0.842245617560529620,\t0.842218661808714080,\t0.842191703951351900,\t0.842164743988510380,\t0.842137781920257010,\t\n0.842110817746659190,\t0.842083851467784420,\t0.842056883083699410,\t0.842029912594472800,\t0.842002940000171280,\t0.841975965300862490,\t0.841948988496613810,\t0.841922009587492640,\t\n0.841895028573566350,\t0.841868045454902130,\t0.841841060231568240,\t0.841814072903631640,\t0.841787083471159940,\t0.841760091934220520,\t0.841733098292880790,\t0.841706102547208460,\t\n0.841679104697270810,\t0.841652104743134900,\t0.841625102684869120,\t0.841598098522540750,\t0.841571092256217070,\t0.841544083885965580,\t0.841517073411854000,\t0.841490060833949620,\t\n0.841463046152320150,\t0.841436029367032660,\t0.841409010478155420,\t0.841381989485755820,\t0.841354966389901150,\t0.841327941190659010,\t0.841300913888097130,\t0.841273884482282910,\t\n0.841246852973283500,\t0.841219819361167520,\t0.841192783646001920,\t0.841165745827854310,\t0.841138705906792410,\t0.841111663882883720,\t0.841084619756195860,\t0.841057573526796440,\t\n0.841030525194752740,\t0.841003474760133040,\t0.840976422223004730,\t0.840949367583435300,\t0.840922310841492490,\t0.840895251997244020,\t0.840868191050757270,\t0.840841128002100090,\t\n0.840814062851339640,\t0.840786995598544420,\t0.840759926243781820,\t0.840732854787119340,\t0.840705781228624720,\t0.840678705568365660,\t0.840651627806409900,\t0.840624547942824480,\t\n0.840597465977678260,\t0.840570381911038390,\t0.840543295742972480,\t0.840516207473548380,\t0.840489117102833690,\t0.840462024630896360,\t0.840434930057803790,\t0.840407833383623570,\t\n0.840380734608424110,\t0.840353633732272900,\t0.840326530755237560,\t0.840299425677386020,\t0.840272318498785810,\t0.840245209219504740,\t0.840218097839610320,\t0.840190984359171060,\t\n0.840163868778254330,\t0.840136751096927870,\t0.840109631315259620,\t0.840082509433317300,\t0.840055385451168650,\t0.840028259368881590,\t0.840001131186523310,\t0.839974000904162740,\t\n0.839946868521867170,\t0.839919734039704440,\t0.839892597457742470,\t0.839865458776048900,\t0.839838317994691660,\t0.839811175113738590,\t0.839784030133257200,\t0.839756883053316190,\t\n0.839729733873982980,\t0.839702582595325380,\t0.839675429217411450,\t0.839648273740308810,\t0.839621116164085520,\t0.839593956488808970,\t0.839566794714548090,\t0.839539630841370070,\t\n0.839512464869343060,\t0.839485296798534900,\t0.839458126629013530,\t0.839430954360846800,\t0.839403779994102650,\t0.839376603528848570,\t0.839349424965153520,\t0.839322244303084890,\t\n0.839295061542710610,\t0.839267876684098750,\t0.839240689727317140,\t0.839213500672433830,\t0.839186309519516340,\t0.839159116268633490,\t0.839131920919852780,\t0.839104723473242390,\t\n0.839077523928870140,\t0.839050322286804100,\t0.839023118547112200,\t0.838995912709862620,\t0.838968704775122640,\t0.838941494742961420,\t0.838914282613446580,\t0.838887068386645950,\t\n0.838859852062627590,\t0.838832633641459660,\t0.838805413123210110,\t0.838778190507947110,\t0.838750965795738050,\t0.838723738986652090,\t0.838696510080756850,\t0.838669279078120280,\t\n0.838642045978810540,\t0.838614810782895680,\t0.838587573490443770,\t0.838560334101522420,\t0.838533092616200680,\t0.838505849034546280,\t0.838478603356627270,\t0.838451355582511830,\t\n0.838424105712267890,\t0.838396853745963620,\t0.838369599683667310,\t0.838342343525446560,\t0.838315085271370330,\t0.838287824921506440,\t0.838260562475923070,\t0.838233297934688150,\t\n0.838206031297870080,\t0.838178762565536920,\t0.838151491737756830,\t0.838124218814597530,\t0.838096943796128090,\t0.838069666682416450,\t0.838042387473530550,\t0.838015106169538670,\t\n0.837987822770509090,\t0.837960537276509880,\t0.837933249687608850,\t0.837905960003875180,\t0.837878668225376710,\t0.837851374352181490,\t0.837824078384357800,\t0.837796780321974020,\t\n0.837769480165098220,\t0.837742177913798680,\t0.837714873568143230,\t0.837687567128201140,\t0.837660258594040140,\t0.837632947965728400,\t0.837605635243334420,\t0.837578320426926260,\t\n0.837551003516572300,\t0.837523684512340380,\t0.837496363414299670,\t0.837469040222518110,\t0.837441714937063990,\t0.837414387558005460,\t0.837387058085411030,\t0.837359726519348980,\t\n0.837332392859887590,\t0.837305057107094800,\t0.837277719261039780,\t0.837250379321790470,\t0.837223037289415160,\t0.837195693163982350,\t0.837168346945560300,\t0.837140998634217310,\t\n0.837113648230021880,\t0.837086295733041830,\t0.837058941143346560,\t0.837031584461003900,\t0.837004225686082240,\t0.836976864818650080,\t0.836949501858775700,\t0.836922136806527610,\t\n0.836894769661973740,\t0.836867400425183370,\t0.836840029096224460,\t0.836812655675165610,\t0.836785280162074980,\t0.836757902557021200,\t0.836730522860072660,\t0.836703141071297840,\t\n0.836675757190764700,\t0.836648371218542630,\t0.836620983154699570,\t0.836593592999304140,\t0.836566200752424720,\t0.836538806414129700,\t0.836511409984487810,\t0.836484011463567320,\t\n0.836456610851436300,\t0.836429208148164240,\t0.836401803353819200,\t0.836374396468469560,\t0.836346987492184060,\t0.836319576425031070,\t0.836292163267079000,\t0.836264748018396230,\t\n0.836237330679051930,\t0.836209911249114370,\t0.836182489728652060,\t0.836155066117733490,\t0.836127640416427180,\t0.836100212624801830,\t0.836072782742925960,\t0.836045350770867610,\t\n0.836017916708696410,\t0.835990480556480400,\t0.835963042314288310,\t0.835935601982188410,\t0.835908159560249660,\t0.835880715048540450,\t0.835853268447128930,\t0.835825819756084830,\t\n0.835798368975476100,\t0.835770916105371460,\t0.835743461145839530,\t0.835716004096948910,\t0.835688544958768320,\t0.835661083731366380,\t0.835633620414811260,\t0.835606155009172570,\t\n0.835578687514518470,\t0.835551217930917690,\t0.835523746258438840,\t0.835496272497150530,\t0.835468796647121700,\t0.835441318708420750,\t0.835413838681116070,\t0.835386356565277270,\t\n0.835358872360972620,\t0.835331386068270730,\t0.835303897687240450,\t0.835276407217950380,\t0.835248914660469240,\t0.835221420014865430,\t0.835193923281208450,\t0.835166424459566790,\t\n0.835138923550008960,\t0.835111420552603900,\t0.835083915467420220,\t0.835056408294526760,\t0.835028899033992360,\t0.835001387685885170,\t0.834973874250275030,\t0.834946358727230110,\t\n0.834918841116819350,\t0.834891321419111490,\t0.834863799634175340,\t0.834836275762079640,\t0.834808749802893320,\t0.834781221756684570,\t0.834753691623523310,\t0.834726159403477830,\t\n0.834698625096616960,\t0.834671088703009430,\t0.834643550222724300,\t0.834616009655830270,\t0.834588467002395640,\t0.834560922262490460,\t0.834533375436182890,\t0.834505826523541880,\t\n0.834478275524636270,\t0.834450722439535000,\t0.834423167268307010,\t0.834395610011021030,\t0.834368050667745550,\t0.834340489238550420,\t0.834312925723504020,\t0.834285360122675400,\t\n0.834257792436133290,\t0.834230222663946750,\t0.834202650806184720,\t0.834175076862915480,\t0.834147500834209080,\t0.834119922720133910,\t0.834092342520758920,\t0.834064760236153060,\t\n0.834037175866385370,\t0.834009589411524700,\t0.833982000871639980,\t0.833954410246799950,\t0.833926817537074210,\t0.833899222742531480,\t0.833871625863240820,\t0.833844026899270950,\t\n0.833816425850691050,\t0.833788822717570040,\t0.833761217499977000,\t0.833733610197980420,\t0.833706000811650360,\t0.833678389341055310,\t0.833650775786264230,\t0.833623160147346280,\t\n0.833595542424370280,\t0.833567922617405640,\t0.833540300726520520,\t0.833512676751785200,\t0.833485050693268170,\t0.833457422551038610,\t0.833429792325165340,\t0.833402160015717760,\t\n0.833374525622764590,\t0.833346889146375220,\t0.833319250586618150,\t0.833291609943563440,\t0.833263967217279690,\t0.833236322407835960,\t0.833208675515301530,\t0.833181026539745350,\t\n0.833153375481236580,\t0.833125722339844500,\t0.833098067115637500,\t0.833070409808685850,\t0.833042750419058180,\t0.833015088946823630,\t0.832987425392051390,\t0.832959759754810510,\t\n0.832932092035170270,\t0.832904422233199380,\t0.832876750348967800,\t0.832849076382544460,\t0.832821400333998430,\t0.832793722203398760,\t0.832766041990814940,\t0.832738359696315930,\t\n0.832710675319971010,\t0.832682988861848990,\t0.832655300322019950,\t0.832627609700552610,\t0.832599916997516340,\t0.832572222212980220,\t0.832544525347013510,\t0.832516826399685490,\t\n0.832489125371065010,\t0.832461422261222110,\t0.832433717070225730,\t0.832406009798145050,\t0.832378300445049350,\t0.832350589011007780,\t0.832322875496089850,\t0.832295159900364730,\t\n0.832267442223901140,\t0.832239722466769580,\t0.832212000629038550,\t0.832184276710777660,\t0.832156550712055960,\t0.832128822632942970,\t0.832101092473507940,\t0.832073360233820060,\t\n0.832045625913948370,\t0.832017889513963160,\t0.831990151033933150,\t0.831962410473927720,\t0.831934667834016370,\t0.831906923114268280,\t0.831879176314752940,\t0.831851427435539080,\t\n0.831823676476697190,\t0.831795923438296110,\t0.831768168320405230,\t0.831740411123093940,\t0.831712651846431620,\t0.831684890490487660,\t0.831657127055331460,\t0.831629361541031950,\t\n0.831601593947659530,\t0.831573824275283150,\t0.831546052523972290,\t0.831518278693796130,\t0.831490502784824390,\t0.831462724797126350,\t0.831434944730770950,\t0.831407162585828810,\t\n0.831379378362368640,\t0.831351592060460170,\t0.831323803680172560,\t0.831296013221575540,\t0.831268220684738490,\t0.831240426069730810,\t0.831212629376621660,\t0.831184830605481430,\t\n0.831157029756379060,\t0.831129226829384060,\t0.831101421824566140,\t0.831073614741994590,\t0.831045805581739020,\t0.831017994343868920,\t0.830990181028453350,\t0.830962365635562810,\t\n0.830934548165266350,\t0.830906728617633590,\t0.830878906992733920,\t0.830851083290637060,\t0.830823257511412390,\t0.830795429655129200,\t0.830767599721857870,\t0.830739767711667580,\t\n0.830711933624627810,\t0.830684097460808180,\t0.830656259220278410,\t0.830628418903107900,\t0.830600576509366470,\t0.830572732039122960,\t0.830544885492448200,\t0.830517036869411250,\t\n0.830489186170081610,\t0.830461333394529100,\t0.830433478542823120,\t0.830405621615033620,\t0.830377762611229970,\t0.830349901531481470,\t0.830322038375858610,\t0.830294173144430770,\t\n0.830266305837267460,\t0.830238436454438290,\t0.830210564996013090,\t0.830182691462061580,\t0.830154815852652720,\t0.830126938167857430,\t0.830099058407744670,\t0.830071176572384380,\t\n0.830043292661846070,\t0.830015406676199550,\t0.829987518615514450,\t0.829959628479860710,\t0.829931736269307270,\t0.829903841983924970,\t0.829875945623783200,\t0.829848047188951440,\t\n0.829820146679499660,\t0.829792244095497460,\t0.829764339437014660,\t0.829736432704120450,\t0.829708523896885760,\t0.829680613015379650,\t0.829652700059672070,\t0.829624785029832830,\t\n0.829596867925931460,\t0.829568948748037990,\t0.829541027496222160,\t0.829513104170553350,\t0.829485178771102170,\t0.829457251297938010,\t0.829429321751130820,\t0.829401390130750320,\t\n0.829373456436866330,\t0.829345520669548590,\t0.829317582828867140,\t0.829289642914891270,\t0.829261700927691800,\t0.829233756867338020,\t0.829205810733899870,\t0.829177862527447180,\t\n0.829149912248049790,\t0.829121959895777750,\t0.829094005470700220,\t0.829066048972888160,\t0.829038090402410940,\t0.829010129759338630,\t0.828982167043740840,\t0.828954202255687720,\t\n0.828926235395249120,\t0.828898266462494980,\t0.828870295457494580,\t0.828842322380318960,\t0.828814347231037530,\t0.828786370009720220,\t0.828758390716436980,\t0.828730409351257750,\t\n0.828702425914252580,\t0.828674440405491320,\t0.828646452825043460,\t0.828618463172979940,\t0.828590471449370260,\t0.828562477654284370,\t0.828534481787792320,\t0.828506483849964060,\t\n0.828478483840869640,\t0.828450481760578450,\t0.828422477609161540,\t0.828394471386688540,\t0.828366463093229250,\t0.828338452728853870,\t0.828310440293632320,\t0.828282425787634780,\t\n0.828254409210931080,\t0.828226390563590820,\t0.828198369845685180,\t0.828170347057283540,\t0.828142322198456070,\t0.828114295269272720,\t0.828086266269803750,\t0.828058235200119010,\t\n0.828030202060288210,\t0.828002166850382420,\t0.827974129570471230,\t0.827946090220624710,\t0.827918048800913020,\t0.827890005311406110,\t0.827861959752174250,\t0.827833912123287500,\t\n0.827805862424815350,\t0.827777810656829200,\t0.827749756819398440,\t0.827721700912593230,\t0.827693642936483950,\t0.827665582891140450,\t0.827637520776632880,\t0.827609456593031640,\t\n0.827581390340406340,\t0.827553322018827920,\t0.827525251628366210,\t0.827497179169091490,\t0.827469104641073700,\t0.827441028044383240,\t0.827412949379090160,\t0.827384868645264170,\t\n0.827356785842976560,\t0.827328700972296940,\t0.827300614033295580,\t0.827272525026042760,\t0.827244433950608540,\t0.827216340807063300,\t0.827188245595477100,\t0.827160148315919890,\t\n0.827132048968462820,\t0.827103947553175510,\t0.827075844070128460,\t0.827047738519391730,\t0.827019630901035700,\t0.826991521215130530,\t0.826963409461746620,\t0.826935295640953690,\t\n0.826907179752823020,\t0.826879061797424320,\t0.826850941774827990,\t0.826822819685104400,\t0.826794695528323630,\t0.826766569304556280,\t0.826738441013871840,\t0.826710310656341930,\t\n0.826682178232036160,\t0.826654043741025020,\t0.826625907183378690,\t0.826597768559167670,\t0.826569627868462110,\t0.826541485111332630,\t0.826513340287848840,\t0.826485193398082240,\t\n0.826457044442102660,\t0.826428893419980380,\t0.826400740331786010,\t0.826372585177589710,\t0.826344427957461880,\t0.826316268671472560,\t0.826288107319693040,\t0.826259943902193370,\t\n0.826231778419043720,\t0.826203610870314690,\t0.826175441256076560,\t0.826147269576399830,\t0.826119095831355010,\t0.826090920021011810,\t0.826062742145441950,\t0.826034562204715160,\t\n0.826006380198902050,\t0.825978196128072880,\t0.825950009992298280,\t0.825921821791648640,\t0.825893631526194440,\t0.825865439196005640,\t0.825837244801153840,\t0.825809048341708870,\t\n0.825780849817741250,\t0.825752649229321570,\t0.825724446576520220,\t0.825696241859407710,\t0.825668035078054200,\t0.825639826232530960,\t0.825611615322908280,\t0.825583402349256530,\t\n0.825555187311646230,\t0.825526970210148090,\t0.825498751044832390,\t0.825470529815769850,\t0.825442306523030520,\t0.825414081166685910,\t0.825385853746806060,\t0.825357624263461600,\t\n0.825329392716723120,\t0.825301159106661130,\t0.825272923433346240,\t0.825244685696848950,\t0.825216445897239640,\t0.825188204034589590,\t0.825159960108968970,\t0.825131714120448610,\t\n0.825103466069098790,\t0.825075215954990450,\t0.825046963778193980,\t0.825018709538779650,\t0.824990453236819080,\t0.824962194872382320,\t0.824933934445540080,\t0.824905671956363000,\t\n0.824877407404921770,\t0.824849140791287020,\t0.824820872115529350,\t0.824792601377719150,\t0.824764328577927810,\t0.824736053716225710,\t0.824707776792683370,\t0.824679497807371710,\t\n0.824651216760361240,\t0.824622933651722790,\t0.824594648481526530,\t0.824566361249844060,\t0.824538071956745780,\t0.824509780602302180,\t0.824481487186584210,\t0.824453191709662580,\t\n0.824424894171607910,\t0.824396594572490930,\t0.824368292912382120,\t0.824339989191352980,\t0.824311683409473920,\t0.824283375566815520,\t0.824255065663448860,\t0.824226753699444430,\t\n0.824198439674873160,\t0.824170123589805790,\t0.824141805444312590,\t0.824113485238465390,\t0.824085162972334470,\t0.824056838645990660,\t0.824028512259504690,\t0.824000183812947480,\t\n0.823971853306389890,\t0.823943520739902070,\t0.823915186113555960,\t0.823886849427421850,\t0.823858510681570680,\t0.823830169876073270,\t0.823801827011000350,\t0.823773482086422870,\t\n0.823745135102411760,\t0.823716786059037310,\t0.823688434956371340,\t0.823660081794484240,\t0.823631726573446970,\t0.823603369293330450,\t0.823575009954205410,\t0.823546648556142900,\t\n0.823518285099213760,\t0.823489919583488490,\t0.823461552009038810,\t0.823433182375935320,\t0.823404810684248870,\t0.823376436934050270,\t0.823348061125410700,\t0.823319683258400990,\t\n0.823291303333091530,\t0.823262921349554260,\t0.823234537307859780,\t0.823206151208078940,\t0.823177763050282670,\t0.823149372834542040,\t0.823120980560927970,\t0.823092586229511420,\t\n0.823064189840363000,\t0.823035791393554430,\t0.823007390889156530,\t0.822978988327240150,\t0.822950583707876220,\t0.822922177031135900,\t0.822893768297090040,\t0.822865357505809360,\t\n0.822836944657365790,\t0.822808529751829720,\t0.822780112789272540,\t0.822751693769764870,\t0.822723272693378080,\t0.822694849560183130,\t0.822666424370250950,\t0.822637997123652260,\t\n0.822609567820459130,\t0.822581136460742050,\t0.822552703044572180,\t0.822524267572020460,\t0.822495830043158070,\t0.822467390458056170,\t0.822438948816785810,\t0.822410505119417490,\t\n0.822382059366023490,\t0.822353611556674300,\t0.822325161691441100,\t0.822296709770394930,\t0.822268255793607070,\t0.822239799761148580,\t0.822211341673090070,\t0.822182881529503580,\t\n0.822154419330460070,\t0.822125955076030370,\t0.822097488766285970,\t0.822069020401297700,\t0.822040549981136850,\t0.822012077505874680,\t0.821983602975581820,\t0.821955126390330530,\t\n0.821926647750191310,\t0.821898167055235440,\t0.821869684305534310,\t0.821841199501158860,\t0.821812712642180370,\t0.821784223728669660,\t0.821755732760698910,\t0.821727239738338830,\t\n0.821698744661660600,\t0.821670247530735590,\t0.821641748345634860,\t0.821613247106429910,\t0.821584743813191690,\t0.821556238465991130,\t0.821527731064900510,\t0.821499221609990560,\t\n0.821470710101332550,\t0.821442196538997860,\t0.821413680923057550,\t0.821385163253583130,\t0.821356643530645750,\t0.821328121754316240,\t0.821299597924666890,\t0.821271072041768630,\t\n0.821242544105692640,\t0.821214014116510400,\t0.821185482074292980,\t0.821156947979111980,\t0.821128411831038020,\t0.821099873630143580,\t0.821071333376499400,\t0.821042791070176970,\t\n0.821014246711247450,\t0.820985700299782460,\t0.820957151835853050,\t0.820928601319530940,\t0.820900048750886620,\t0.820871494129992830,\t0.820842937456920270,\t0.820814378731740350,\t\n0.820785817954524540,\t0.820757255125344140,\t0.820728690244270640,\t0.820700123311375320,\t0.820671554326729340,\t0.820642983290404860,\t0.820614410202472940,\t0.820585835063004980,\t\n0.820557257872072450,\t0.820528678629746770,\t0.820500097336099410,\t0.820471513991201330,\t0.820442928595124910,\t0.820414341147941210,\t0.820385751649721720,\t0.820357160100537720,\t\n0.820328566500460930,\t0.820299970849562630,\t0.820271373147914430,\t0.820242773395587380,\t0.820214171592653860,\t0.820185567739184830,\t0.820156961835252000,\t0.820128353880926640,\t\n0.820099743876280480,\t0.820071131821384910,\t0.820042517716311090,\t0.820013901561131410,\t0.819985283355916920,\t0.819956663100739340,\t0.819928040795670050,\t0.819899416440780680,\t\n0.819870790036142720,\t0.819842161581827880,\t0.819813531077907000,\t0.819784898524452910,\t0.819756263921536550,\t0.819727627269229430,\t0.819698988567603370,\t0.819670347816729760,\t\n0.819641705016680320,\t0.819613060167526660,\t0.819584413269339840,\t0.819555764322192350,\t0.819527113326155580,\t0.819498460281301020,\t0.819469805187700300,\t0.819441148045425010,\t\n0.819412488854546870,\t0.819383827615137060,\t0.819355164327268180,\t0.819326498991011400,\t0.819297831606438320,\t0.819269162173620670,\t0.819240490692630050,\t0.819211817163538300,\t\n0.819183141586417030,\t0.819154463961337290,\t0.819125784288372020,\t0.819097102567592160,\t0.819068418799069660,\t0.819039732982876020,\t0.819011045119083180,\t0.818982355207762640,\t\n0.818953663248986220,\t0.818924969242825100,\t0.818896273189352100,\t0.818867575088638390,\t0.818838874940755800,\t0.818810172745775940,\t0.818781468503770760,\t0.818752762214811860,\t\n0.818724053878970510,\t0.818695343496319560,\t0.818666631066930270,\t0.818637916590874370,\t0.818609200068223690,\t0.818580481499050050,\t0.818551760883425070,\t0.818523038221420810,\t\n0.818494313513108420,\t0.818465586758560740,\t0.818436857957849150,\t0.818408127111045380,\t0.818379394218221260,\t0.818350659279448720,\t0.818321922294799500,\t0.818293183264344970,\t\n0.818264442188157970,\t0.818235699066309890,\t0.818206953898872550,\t0.818178206685917790,\t0.818149457427517550,\t0.818120706123743660,\t0.818091952774668060,\t0.818063197380362040,\t\n0.818034439940898530,\t0.818005680456348920,\t0.817976918926785030,\t0.817948155352278940,\t0.817919389732902460,\t0.817890622068727420,\t0.817861852359825890,\t0.817833080606269250,\t\n0.817804306808130320,\t0.817775530965480720,\t0.817746753078392290,\t0.817717973146936950,\t0.817689191171186660,\t0.817660407151213350,\t0.817631621087088640,\t0.817602832978885250,\t\n0.817574042826674900,\t0.817545250630529410,\t0.817516456390520730,\t0.817487660106720910,\t0.817458861779202020,\t0.817430061408035980,\t0.817401258993294190,\t0.817372454535049810,\t\n0.817343648033374340,\t0.817314839488339720,\t0.817286028900017890,\t0.817257216268481130,\t0.817228401593801280,\t0.817199584876050490,\t0.817170766115300150,\t0.817141945311623430,\t\n0.817113122465091820,\t0.817084297575777390,\t0.817055470643752280,\t0.817026641669088450,\t0.816997810651858060,\t0.816968977592132610,\t0.816940142489985140,\t0.816911305345487390,\t\n0.816882466158711410,\t0.816853624929729240,\t0.816824781658613050,\t0.816795936345434790,\t0.816767088990266840,\t0.816738239593180590,\t0.816709388154249210,\t0.816680534673544400,\t\n0.816651679151138230,\t0.816622821587102870,\t0.816593961981510460,\t0.816565100334433190,\t0.816536236645942550,\t0.816507370916111920,\t0.816478503145012800,\t0.816449633332717470,\t\n0.816420761479298100,\t0.816391887584826730,\t0.816363011649375750,\t0.816334133673017100,\t0.816305253655822740,\t0.816276371597865700,\t0.816247487499217720,\t0.816218601359951060,\t\n0.816189713180137890,\t0.816160822959850370,\t0.816131930699160900,\t0.816103036398141520,\t0.816074140056864070,\t0.816045241675401710,\t0.816016341253826380,\t0.815987438792210140,\t\n0.815958534290625260,\t0.815929627749144130,\t0.815900719167838790,\t0.815871808546781320,\t0.815842895886044750,\t0.815813981185700920,\t0.815785064445822110,\t0.815756145666480690,\t\n0.815727224847748960,\t0.815698301989699060,\t0.815669377092403500,\t0.815640450155933890,\t0.815611521180363730,\t0.815582590165764730,\t0.815553657112209280,\t0.815524722019769670,\t\n0.815495784888518370,\t0.815466845718527460,\t0.815437904509869530,\t0.815408961262616310,\t0.815380015976841070,\t0.815351068652615970,\t0.815322119290013080,\t0.815293167889105000,\t\n0.815264214449963890,\t0.815235258972662360,\t0.815206301457272020,\t0.815177341903866590,\t0.815148380312517680,\t0.815119416683297900,\t0.815090451016279530,\t0.815061483311535050,\t\n0.815032513569136860,\t0.815003541789157460,\t0.814974567971668560,\t0.814945592116743890,\t0.814916614224455160,\t0.814887634294874870,\t0.814858652328075530,\t0.814829668324129620,\t\n0.814800682283109530,\t0.814771694205087100,\t0.814742704090136050,\t0.814713711938328200,\t0.814684717749736160,\t0.814655721524432220,\t0.814626723262488970,\t0.814597722963978920,\t\n0.814568720628974670,\t0.814539716257547950,\t0.814510709849772590,\t0.814481701405720400,\t0.814452690925463910,\t0.814423678409075810,\t0.814394663856628400,\t0.814365647268194380,\t\n0.814336628643846260,\t0.814307607983655980,\t0.814278585287697250,\t0.814249560556042030,\t0.814220533788762910,\t0.814191504985932510,\t0.814162474147623330,\t0.814133441273907970,\t\n0.814104406364858480,\t0.814075369420548480,\t0.814046330441050010,\t0.814017289426435810,\t0.813988246376778360,\t0.813959201292150160,\t0.813930154172624150,\t0.813901105018272620,\t\n0.813872053829167940,\t0.813843000605383500,\t0.813813945346991700,\t0.813784888054064900,\t0.813755828726675960,\t0.813726767364897460,\t0.813697703968802030,\t0.813668638538461720,\t\n0.813639571073950460,\t0.813610501575340320,\t0.813581430042703780,\t0.813552356476113680,\t0.813523280875642740,\t0.813494203241363680,\t0.813465123573348990,\t0.813436041871670960,\t\n0.813406958136403400,\t0.813377872367618490,\t0.813348784565388840,\t0.813319694729787270,\t0.813290602860886390,\t0.813261508958759040,\t0.813232413023477930,\t0.813203315055115230,\t\n0.813174215053744760,\t0.813145113019438810,\t0.813116008952270100,\t0.813086902852311330,\t0.813057794719635240,\t0.813028684554314760,\t0.812999572356421950,\t0.812970458126030860,\t\n0.812941341863213540,\t0.812912223568042820,\t0.812883103240591650,\t0.812853980880932640,\t0.812824856489138710,\t0.812795730065282610,\t0.812766601609436700,\t0.812737471121674830,\t\n0.812708338602069260,\t0.812679204050692830,\t0.812650067467618360,\t0.812620928852918810,\t0.812591788206666890,\t0.812562645528935420,\t0.812533500819796920,\t0.812504354079325200,\t\n0.812475205307592540,\t0.812446054504671890,\t0.812416901670636070,\t0.812387746805558030,\t0.812358589909510600,\t0.812329430982566160,\t0.812300270024798770,\t0.812271107036280580,\t\n0.812241942017084770,\t0.812212774967283950,\t0.812183605886951270,\t0.812154434776159560,\t0.812125261634981780,\t0.812096086463490300,\t0.812066909261759060,\t0.812037730029860680,\t\n0.812008548767867880,\t0.811979365475853810,\t0.811950180153891200,\t0.811920992802053210,\t0.811891803420412230,\t0.811862612009042190,\t0.811833418568015720,\t0.811804223097405630,\t\n0.811775025597284980,\t0.811745826067726830,\t0.811716624508804110,\t0.811687420920589760,\t0.811658215303156410,\t0.811629007656577970,\t0.811599797980927070,\t0.811570586276276650,\t\n0.811541372542699760,\t0.811512156780269440,\t0.811482938989058770,\t0.811453719169140770,\t0.811424497320587860,\t0.811395273443474290,\t0.811366047537872560,\t0.811336819603855620,\t\n0.811307589641496630,\t0.811278357650868750,\t0.811249123632044930,\t0.811219887585097780,\t0.811190649510101450,\t0.811161409407128550,\t0.811132167276252040,\t0.811102923117545170,\t\n0.811073676931080900,\t0.811044428716932500,\t0.811015178475173130,\t0.810985926205875170,\t0.810956671909112910,\t0.810927415584958950,\t0.810898157233486570,\t0.810868896854768710,\t\n0.810839634448878630,\t0.810810370015889510,\t0.810781103555874410,\t0.810751835068906020,\t0.810722564555058530,\t0.810693292014404760,\t0.810664017447017660,\t0.810634740852970490,\t\n0.810605462232336540,\t0.810576181585188960,\t0.810546898911600370,\t0.810517614211644920,\t0.810488327485395570,\t0.810459038732925460,\t0.810429747954307670,\t0.810400455149615560,\t\n0.810371160318922200,\t0.810341863462300970,\t0.810312564579824700,\t0.810283263671567440,\t0.810253960737602030,\t0.810224655778001730,\t0.810195348792839720,\t0.810166039782189370,\t\n0.810136728746123970,\t0.810107415684716230,\t0.810078100598040420,\t0.810048783486169380,\t0.810019464349176380,\t0.809990143187134690,\t0.809960820000117710,\t0.809931494788198700,\t\n0.809902167551450840,\t0.809872838289947160,\t0.809843507003761840,\t0.809814173692967710,\t0.809784838357638260,\t0.809755500997846660,\t0.809726161613666280,\t0.809696820205170530,\t\n0.809667476772432670,\t0.809638131315525640,\t0.809608783834523840,\t0.809579434329499970,\t0.809550082800527650,\t0.809520729247680040,\t0.809491373671030630,\t0.809462016070652820,\t\n0.809432656446619440,\t0.809403294799004860,\t0.809373931127882140,\t0.809344565433324560,\t0.809315197715405500,\t0.809285827974198570,\t0.809256456209776930,\t0.809227082422214310,\t\n0.809197706611583300,\t0.809168328777958630,\t0.809138948921413140,\t0.809109567042020310,\t0.809080183139853530,\t0.809050797214986290,\t0.809021409267492110,\t0.808992019297444240,\t\n0.808962627304915970,\t0.808933233289981570,\t0.808903837252714200,\t0.808874439193187130,\t0.808845039111473980,\t0.808815637007648250,\t0.808786232881783420,\t0.808756826733952440,\t\n0.808727418564229920,\t0.808698008372688900,\t0.808668596159402900,\t0.808639181924445280,\t0.808609765667889780,\t0.808580347389809880,\t0.808550927090279090,\t0.808521504769370570,\t\n0.808492080427158700,\t0.808462654063716650,\t0.808433225679117910,\t0.808403795273436200,\t0.808374362846744910,\t0.808344928399117760,\t0.808315491930627790,\t0.808286053441349630,\t\n0.808256612931356200,\t0.808227170400721340,\t0.808197725849518540,\t0.808168279277821530,\t0.808138830685703690,\t0.808109380073238850,\t0.808079927440499950,\t0.808050472787561810,\t\n0.808021016114497500,\t0.807991557421380620,\t0.807962096708284890,\t0.807932633975283810,\t0.807903169222451310,\t0.807873702449860790,\t0.807844233657585510,\t0.807814762845700200,\t\n0.807785290014277900,\t0.807755815163392340,\t0.807726338293117350,\t0.807696859403526530,\t0.807667378494693500,\t0.807637895566691520,\t0.807608410619595320,\t0.807578923653478050,\t\n0.807549434668413560,\t0.807519943664475440,\t0.807490450641737520,\t0.807460955600273420,\t0.807431458540156850,\t0.807401959461461200,\t0.807372458364261190,\t0.807342955248629980,\t\n0.807313450114641510,\t0.807283942962369270,\t0.807254433791887220,\t0.807224922603269060,\t0.807195409396588630,\t0.807165894171919200,\t0.807136376929335490,\t0.807106857668910880,\t\n0.807077336390719100,\t0.807047813094833980,\t0.807018287781329220,\t0.806988760450278900,\t0.806959231101756050,\t0.806929699735835730,\t0.806900166352591100,\t0.806870630952096100,\t\n0.806841093534424570,\t0.806811554099650220,\t0.806782012647846990,\t0.806752469179088720,\t0.806722923693448780,\t0.806693376191002120,\t0.806663826671821900,\t0.806634275135982180,\t\n0.806604721583556780,\t0.806575166014619540,\t0.806545608429244390,\t0.806516048827504720,\t0.806486487209475470,\t0.806456923575229910,\t0.806427357924842100,\t0.806397790258385980,\t\n0.806368220575935270,\t0.806338648877564010,\t0.806309075163346160,\t0.806279499433355080,\t0.806249921687665850,\t0.806220341926351840,\t0.806190760149486870,\t0.806161176357145020,\t\n0.806131590549400200,\t0.806102002726326480,\t0.806072412887997690,\t0.806042821034487320,\t0.806013227165870540,\t0.805983631282220610,\t0.805954033383611600,\t0.805924433470117550,\t\n0.805894831541812410,\t0.805865227598770110,\t0.805835621641064370,\t0.805806013668769920,\t0.805776403681960570,\t0.805746791680710170,\t0.805717177665092770,\t0.805687561635182400,\t\n0.805657943591053250,\t0.805628323532779130,\t0.805598701460433770,\t0.805569077374092110,\t0.805539451273827760,\t0.805509823159714760,\t0.805480193031827160,\t0.805450560890239250,\t\n0.805420926735024860,\t0.805391290566257580,\t0.805361652384012580,\t0.805332012188363480,\t0.805302369979384420,\t0.805272725757149370,\t0.805243079521732460,\t0.805213431273207990,\t\n0.805183781011649780,\t0.805154128737131770,\t0.805124474449728790,\t0.805094818149514780,\t0.805065159836563570,\t0.805035499510949550,\t0.805005837172746760,\t0.804976172822029380,\t\n0.804946506458871560,\t0.804916838083347020,\t0.804887167695530810,\t0.804857495295496770,\t0.804827820883318950,\t0.804798144459071610,\t0.804768466022828810,\t0.804738785574664940,\t\n0.804709103114653600,\t0.804679418642869960,\t0.804649732159387730,\t0.804620043664281300,\t0.804590353157624620,\t0.804560660639492160,\t0.804530966109958000,\t0.804501269569096510,\t\n0.804471571016981190,\t0.804441870453687540,\t0.804412167879289260,\t0.804382463293860540,\t0.804352756697475630,\t0.804323048090208830,\t0.804293337472134380,\t0.804263624843326590,\t\n0.804233910203859260,\t0.804204193553807680,\t0.804174474893245560,\t0.804144754222247290,\t0.804115031540887150,\t0.804085306849239400,\t0.804055580147378430,\t0.804025851435377970,\t\n0.803996120713313390,\t0.803966387981258520,\t0.803936653239287650,\t0.803906916487475140,\t0.803877177725895400,\t0.803847436954622680,\t0.803817694173731390,\t0.803787949383295340,\t\n0.803758202583389920,\t0.803728453774088970,\t0.803698702955466970,\t0.803668950127598090,\t0.803639195290556940,\t0.803609438444417790,\t0.803579679589254470,\t0.803549918725142480,\t\n0.803520155852155750,\t0.803490390970368560,\t0.803460624079855410,\t0.803430855180690790,\t0.803401084272948870,\t0.803371311356704370,\t0.803341536432031100,\t0.803311759499004350,\t\n0.803281980557698280,\t0.803252199608187280,\t0.803222416650545830,\t0.803192631684848220,\t0.803162844711169170,\t0.803133055729582930,\t0.803103264740163470,\t0.803073471742986490,\t\n0.803043676738125710,\t0.803013879725655850,\t0.802984080705651190,\t0.802954279678186440,\t0.802924476643335880,\t0.802894671601173670,\t0.802864864551775300,\t0.802835055495214830,\t\n0.802805244431566640,\t0.802775431360905340,\t0.802745616283305430,\t0.802715799198841510,\t0.802685980107588180,\t0.802656159009619290,\t0.802626335905010540,\t0.802596510793835980,\t\n0.802566683676170120,\t0.802536854552087450,\t0.802507023421662800,\t0.802477190284970550,\t0.802447355142085320,\t0.802417517993081140,\t0.802387678838033750,\t0.802357837677017070,\t\n0.802327994510105840,\t0.802298149337374640,\t0.802268302158898110,\t0.802238452974750720,\t0.802208601785006750,\t0.802178748589741810,\t0.802148893389029950,\t0.802119036182945890,\t\n0.802089176971564230,\t0.802059315754959590,\t0.802029452533206790,\t0.801999587306380210,\t0.801969720074554250,\t0.801939850837804390,\t0.801909979596205020,\t0.801880106349830650,\t\n0.801850231098755970,\t0.801820353843055830,\t0.801790474582804720,\t0.801760593318076920,\t0.801730710048948140,\t0.801700824775492650,\t0.801670937497785060,\t0.801641048215900100,\t\n0.801611156929912580,\t0.801581263639897120,\t0.801551368345928440,\t0.801521471048080910,\t0.801491571746430150,\t0.801461670441050540,\t0.801431767132016800,\t0.801401861819403540,\t\n0.801371954503285580,\t0.801342045183737860,\t0.801312133860835000,\t0.801282220534651260,\t0.801252305205262470,\t0.801222387872742910,\t0.801192468537167410,\t0.801162547198610800,\t\n0.801132623857147670,\t0.801102698512853100,\t0.801072771165801220,\t0.801042841816068000,\t0.801012910463727580,\t0.800982977108855020,\t0.800953041751524930,\t0.800923104391812140,\t\n0.800893165029791690,\t0.800863223665538300,\t0.800833280299126370,\t0.800803334930631720,\t0.800773387560128840,\t0.800743438187692340,\t0.800713486813397380,\t0.800683533437318570,\t\n0.800653578059530970,\t0.800623620680109500,\t0.800593661299128350,\t0.800563699916663650,\t0.800533736532789700,\t0.800503771147581420,\t0.800473803761113660,\t0.800443834373461340,\t\n0.800413862984699520,\t0.800383889594902480,\t0.800353914204146260,\t0.800323936812505240,\t0.800293957420054380,\t0.800263976026868720,\t0.800233992633022970,\t0.800204007238592310,\t\n0.800174019843651660,\t0.800144030448275420,\t0.800114039052539640,\t0.800084045656518690,\t0.800054050260287640,\t0.800024052863921530,\t0.799994053467495300,\t0.799964052071083900,\t\n0.799934048674761810,\t0.799904043278605200,\t0.799874035882688350,\t0.799844026487086520,\t0.799814015091874660,\t0.799784001697127600,\t0.799753986302920720,\t0.799723968909328730,\t\n0.799693949516426360,\t0.799663928124289660,\t0.799633904732993120,\t0.799603879342611790,\t0.799573851953220840,\t0.799543822564895200,\t0.799513791177710040,\t0.799483757791740410,\t\n0.799453722407060810,\t0.799423685023747390,\t0.799393645641874870,\t0.799363604261518200,\t0.799333560882752430,\t0.799303515505652820,\t0.799273468130294430,\t0.799243418756751870,\t\n0.799213367385101290,\t0.799183314015417200,\t0.799153258647774980,\t0.799123201282249450,\t0.799093141918916010,\t0.799063080557849690,\t0.799033017199125670,\t0.799002951842818670,\t\n0.798972884489004720,\t0.798942815137758560,\t0.798912743789155330,\t0.798882670443270330,\t0.798852595100178590,\t0.798822517759955390,\t0.798792438422675890,\t0.798762357088414810,\t\n0.798732273757248310,\t0.798702188429251110,\t0.798672101104498490,\t0.798642011783065600,\t0.798611920465027710,\t0.798581827150460000,\t0.798551731839437170,\t0.798521634532035510,\t\n0.798491535228329830,\t0.798461433928395300,\t0.798431330632307090,\t0.798401225340140690,\t0.798371118051971140,\t0.798341008767873840,\t0.798310897487923500,\t0.798280784212196390,\t\n0.798250668940767350,\t0.798220551673711640,\t0.798190432411104540,\t0.798160311153021440,\t0.798130187899537490,\t0.798100062650727530,\t0.798069935406667930,\t0.798039806167433530,\t\n0.798009674933099600,\t0.797979541703741520,\t0.797949406479434580,\t0.797919269260254030,\t0.797889130046275490,\t0.797858988837573450,\t0.797828845634224510,\t0.797798700436303410,\t\n0.797768553243885630,\t0.797738404057046440,\t0.797708252875861220,\t0.797678099700405370,\t0.797647944530754270,\t0.797617787366982740,\t0.797587628209167400,\t0.797557467057382840,\t\n0.797527303911704790,\t0.797497138772208290,\t0.797466971638969070,\t0.797436802512062390,\t0.797406631391563200,\t0.797376458277547880,\t0.797346283170091490,\t0.797316106069269390,\t\n0.797285926975156990,\t0.797255745887829770,\t0.797225562807363230,\t0.797195377733832760,\t0.797165190667313280,\t0.797135001607881420,\t0.797104810555612000,\t0.797074617510580510,\t\n0.797044422472862560,\t0.797014225442533530,\t0.796984026419668920,\t0.796953825404343790,\t0.796923622396634500,\t0.796893417396616230,\t0.796863210404364470,\t0.796833001419954610,\t\n0.796802790443462250,\t0.796772577474963000,\t0.796742362514532230,\t0.796712145562245010,\t0.796681926618177940,\t0.796651705682406060,\t0.796621482755004990,\t0.796591257836050120,\t\n0.796561030925617250,\t0.796530802023781680,\t0.796500571130619120,\t0.796470338246204610,\t0.796440103370614770,\t0.796409866503924760,\t0.796379627646209950,\t0.796349386797546190,\t\n0.796319143958008850,\t0.796288899127673750,\t0.796258652306615860,\t0.796228403494911860,\t0.796198152692636830,\t0.796167899899866470,\t0.796137645116676280,\t0.796107388343141990,\t\n0.796077129579339290,\t0.796046868825343700,\t0.796016606081230480,\t0.795986341347076130,\t0.795956074622956140,\t0.795925805908945790,\t0.795895535205121020,\t0.795865262511557310,\t\n0.795834987828330620,\t0.795804711155516320,\t0.795774432493189690,\t0.795744151841427660,\t0.795713869200305180,\t0.795683584569897960,\t0.795653297950281830,\t0.795623009341532410,\t\n0.795592718743725500,\t0.795562426156936290,\t0.795532131581241590,\t0.795501835016716450,\t0.795471536463436820,\t0.795441235921478310,\t0.795410933390916620,\t0.795380628871827700,\t\n0.795350322364287270,\t0.795320013868370370,\t0.795289703384154060,\t0.795259390911713380,\t0.795229076451124280,\t0.795198760002462590,\t0.795168441565803910,\t0.795138121141224060,\t\n0.795107798728798440,\t0.795077474328603870,\t0.795047147940715630,\t0.795016819565209420,\t0.794986489202161310,\t0.794956156851646890,\t0.794925822513742110,\t0.794895486188522790,\t\n0.794865147876064100,\t0.794834807576443200,\t0.794804465289735250,\t0.794774121016016080,\t0.794743774755361730,\t0.794713426507847820,\t0.794683076273550390,\t0.794652724052545280,\t\n0.794622369844907860,\t0.794592013650714970,\t0.794561655470042090,\t0.794531295302965070,\t0.794500933149559830,\t0.794470569009902320,\t0.794440202884068250,\t0.794409834772133230,\t\n0.794379464674174090,\t0.794349092590266310,\t0.794318718520485860,\t0.794288342464908540,\t0.794257964423610410,\t0.794227584396667300,\t0.794197202384155250,\t0.794166818386149780,\t\n0.794136432402727690,\t0.794106044433964490,\t0.794075654479936220,\t0.794045262540718830,\t0.794014868616388260,\t0.793984472707020550,\t0.793954074812691650,\t0.793923674933477040,\t\n0.793893273069453790,\t0.793862869220697260,\t0.793832463387283640,\t0.793802055569288840,\t0.793771645766788940,\t0.793741233979859960,\t0.793710820208577190,\t0.793680404453018020,\t\n0.793649986713257930,\t0.793619566989372750,\t0.793589145281438650,\t0.793558721589531670,\t0.793528295913727980,\t0.793497868254103510,\t0.793467438610733770,\t0.793437006983696010,\t\n0.793406573373065750,\t0.793376137778919130,\t0.793345700201332100,\t0.793315260640380830,\t0.793284819096141350,\t0.793254375568689270,\t0.793223930058101880,\t0.793193482564454650,\t\n0.793163033087823650,\t0.793132581628285150,\t0.793102128185915080,\t0.793071672760789830,\t0.793041215352985330,\t0.793010755962577200,\t0.792980294589642810,\t0.792949831234257660,\t\n0.792919365896497920,\t0.792888898576439740,\t0.792858429274159390,\t0.792827957989732930,\t0.792797484723236520,\t0.792767009474745880,\t0.792736532244338270,\t0.792706053032089410,\t\n0.792675571838075350,\t0.792645088662372380,\t0.792614603505056640,\t0.792584116366204410,\t0.792553627245891400,\t0.792523136144194780,\t0.792492643061190380,\t0.792462147996954360,\t\n0.792431650951562980,\t0.792401151925092420,\t0.792370650917619050,\t0.792340147929219030,\t0.792309642959968090,\t0.792279136009943600,\t0.792248627079221170,\t0.792218116167877300,\t\n0.792187603275988140,\t0.792157088403629860,\t0.792126571550878960,\t0.792096052717811580,\t0.792065531904503570,\t0.792035009111032310,\t0.792004484337473390,\t0.791973957583903320,\t\n0.791943428850398480,\t0.791912898137034920,\t0.791882365443889120,\t0.791851830771036940,\t0.791821294118555730,\t0.791790755486521220,\t0.791760214875009800,\t0.791729672284097850,\t\n0.791699127713861860,\t0.791668581164377880,\t0.791638032635722520,\t0.791607482127971610,\t0.791576929641202410,\t0.791546375175490980,\t0.791515818730913480,\t0.791485260307546510,\t\n0.791454699905466460,\t0.791424137524749600,\t0.791393573165471880,\t0.791363006827710660,\t0.791332438511542110,\t0.791301868217042290,\t0.791271295944287910,\t0.791240721693355240,\t\n0.791210145464320780,\t0.791179567257261020,\t0.791148987072251670,\t0.791118404909370470,\t0.791087820768693330,\t0.791057234650296540,\t0.791026646554256700,\t0.790996056480650190,\t\n0.790965464429553620,\t0.790934870401043270,\t0.790904274395195280,\t0.790873676412087170,\t0.790843076451794860,\t0.790812474514394850,\t0.790781870599963630,\t0.790751264708577710,\t\n0.790720656840313670,\t0.790690046995247480,\t0.790659435173456710,\t0.790628821375017330,\t0.790598205600005820,\t0.790567587848498900,\t0.790536968120572950,\t0.790506346416304680,\t\n0.790475722735770380,\t0.790445097079046420,\t0.790414469446210080,\t0.790383839837337730,\t0.790353208252505660,\t0.790322574691790570,\t0.790291939155269190,\t0.790261301643017780,\t\n0.790230662155113170,\t0.790200020691631420,\t0.790169377252650130,\t0.790138731838245460,\t0.790108084448493790,\t0.790077435083472060,\t0.790046783743256650,\t0.790016130427924400,\t\n0.789985475137551240,\t0.789954817872214890,\t0.789924158631991500,\t0.789893497416957690,\t0.789862834227190170,\t0.789832169062765540,\t0.789801501923760530,\t0.789770832810251730,\t\n0.789740161722315430,\t0.789709488660029100,\t0.789678813623469140,\t0.789648136612712160,\t0.789617457627834750,\t0.789586776668913750,\t0.789556093736025750,\t0.789525408829247040,\t\n0.789494721948655330,\t0.789464033094326890,\t0.789433342266338320,\t0.789402649464766350,\t0.789371954689687790,\t0.789341257941179380,\t0.789310559219317700,\t0.789279858524179150,\t\n0.789249155855841540,\t0.789218451214381060,\t0.789187744599874400,\t0.789157036012398390,\t0.789126325452029760,\t0.789095612918845330,\t0.789064898412921820,\t0.789034181934335610,\t\n0.789003463483164410,\t0.788972743059484620,\t0.788942020663372930,\t0.788911296294906310,\t0.788880569954161340,\t0.788849841641214860,\t0.788819111356143350,\t0.788788379099024660,\t\n0.788757644869934940,\t0.788726908668951120,\t0.788696170496149930,\t0.788665430351608520,\t0.788634688235403390,\t0.788603944147611590,\t0.788573198088309280,\t0.788542450057574620,\t\n0.788511700055483880,\t0.788480948082113780,\t0.788450194137541360,\t0.788419438221843460,\t0.788388680335097010,\t0.788357920477378740,\t0.788327158648765240,\t0.788296394849334340,\t\n0.788265629079162420,\t0.788234861338326540,\t0.788204091626903410,\t0.788173319944970090,\t0.788142546292603500,\t0.788111770669879920,\t0.788080993076877510,\t0.788050213513672550,\t\n0.788019431980342080,\t0.787988648476963040,\t0.787957863003612480,\t0.787927075560367120,\t0.787896286147304230,\t0.787865494764499960,\t0.787834701412032490,\t0.787803906089978300,\t\n0.787773108798414330,\t0.787742309537417640,\t0.787711508307065040,\t0.787680705107433820,\t0.787649899938600240,\t0.787619092800642460,\t0.787588283693636980,\t0.787557472617660740,\t\n0.787526659572790780,\t0.787495844559104260,\t0.787465027576678130,\t0.787434208625589330,\t0.787403387705914560,\t0.787372564817731880,\t0.787341739961117670,\t0.787310913136149200,\t\n0.787280084342903420,\t0.787249253581457480,\t0.787218420851888310,\t0.787187586154273200,\t0.787156749488688520,\t0.787125910855212440,\t0.787095070253921670,\t0.787064227684893260,\t\n0.787033383148204260,\t0.787002536643931830,\t0.786971688172152910,\t0.786940837732944320,\t0.786909985326384230,\t0.786879130952549130,\t0.786848274611516190,\t0.786817416303362550,\t\n0.786786556028165500,\t0.786755693786001850,\t0.786724829576949110,\t0.786693963401083770,\t0.786663095258483990,\t0.786632225149226480,\t0.786601353073388410,\t0.786570479031047040,\t\n0.786539603022279320,\t0.786508725047162740,\t0.786477845105773680,\t0.786446963198190630,\t0.786416079324490200,\t0.786385193484749450,\t0.786354305679045850,\t0.786323415907456360,\t\n0.786292524170058460,\t0.786261630466929210,\t0.786230734798145310,\t0.786199837163785050,\t0.786168937563925360,\t0.786138035998643180,\t0.786107132468016000,\t0.786076226972120980,\t\n0.786045319511035400,\t0.786014410084836410,\t0.785983498693600960,\t0.785952585337407310,\t0.785921670016332170,\t0.785890752730452840,\t0.785859833479846670,\t0.785828912264590950,\t\n0.785797989084762840,\t0.785767063940439270,\t0.785736136831698520,\t0.785705207758617520,\t0.785674276721273430,\t0.785643343719743760,\t0.785612408754105650,\t0.785581471824436490,\t\n0.785550532930813670,\t0.785519592073314010,\t0.785488649252015890,\t0.785457704466996140,\t0.785426757718332260,\t0.785395809006101290,\t0.785364858330380830,\t0.785333905691248390,\t\n0.785302951088781010,\t0.785271994523055740,\t0.785241035994151070,\t0.785210075502143830,\t0.785179113047111300,\t0.785148148629131070,\t0.785117182248280530,\t0.785086213904636950,\t\n0.785055243598277270,\t0.785024271329279990,\t0.784993297097722140,\t0.784962320903681010,\t0.784931342747234080,\t0.784900362628458750,\t0.784869380547432600,\t0.784838396504232930,\t\n0.784807410498936760,\t0.784776422531622610,\t0.784745432602367400,\t0.784714440711248520,\t0.784683446858343680,\t0.784652451043730160,\t0.784621453267485450,\t0.784590453529686700,\t\n0.784559451830412200,\t0.784528448169739210,\t0.784497442547745010,\t0.784466434964507300,\t0.784435425420103360,\t0.784404413914611020,\t0.784373400448107550,\t0.784342385020670000,\t\n0.784311367632377080,\t0.784280348283305730,\t0.784249326973533560,\t0.784218303703138050,\t0.784187278472196710,\t0.784156251280787250,\t0.784125222128987160,\t0.784094191016873500,\t\n0.784063157944524860,\t0.784032122912018290,\t0.784001085919431520,\t0.783970046966841920,\t0.783939006054327200,\t0.783907963181965100,\t0.783876918349832420,\t0.783845871558008000,\t\n0.783814822806569000,\t0.783783772095592800,\t0.783752719425157230,\t0.783721664795339890,\t0.783690608206218390,\t0.783659549657870440,\t0.783628489150372980,\t0.783597426683804830,\t\n0.783566362258243050,\t0.783535295873765470,\t0.783504227530449680,\t0.783473157228373300,\t0.783442084967613920,\t0.783411010748249480,\t0.783379934570356820,\t0.783348856434014970,\t\n0.783317776339301000,\t0.783286694286292500,\t0.783255610275067290,\t0.783224524305703110,\t0.783193436378277540,\t0.783162346492867870,\t0.783131254649552910,\t0.783100160848409830,\t\n0.783069065089516240,\t0.783037967372950060,\t0.783006867698789020,\t0.782975766067110720,\t0.782944662477992990,\t0.782913556931513100,\t0.782882449427749870,\t0.782851339966780580,\t\n0.782820228548682830,\t0.782789115173534560,\t0.782757999841413480,\t0.782726882552397420,\t0.782695763306563650,\t0.782664642103991000,\t0.782633518944756630,\t0.782602393828938590,\t\n0.782571266756614480,\t0.782540137727862350,\t0.782509006742759690,\t0.782477873801384670,\t0.782446738903814330,\t0.782415602050127720,\t0.782384463240402010,\t0.782353322474715230,\t\n0.782322179753145220,\t0.782291035075769690,\t0.782259888442666470,\t0.782228739853913610,\t0.782197589309588380,\t0.782166436809769720,\t0.782135282354535000,\t0.782104125943962060,\t\n0.782072967578128720,\t0.782041807257113030,\t0.782010644980992820,\t0.781979480749845470,\t0.781948314563749910,\t0.781917146422783650,\t0.781885976327024390,\t0.781854804276550300,\t\n0.781823630271439200,\t0.781792454311769030,\t0.781761276397617610,\t0.781730096529062560,\t0.781698914706182800,\t0.781667730929055730,\t0.781636545197759270,\t0.781605357512371590,\t\n0.781574167872970400,\t0.781542976279633870,\t0.781511782732439820,\t0.781480587231465850,\t0.781449389776790900,\t0.781418190368492470,\t0.781386989006648710,\t0.781355785691337350,\t\n0.781324580422636530,\t0.781293373200624200,\t0.781262164025377960,\t0.781230952896976860,\t0.781199739815498400,\t0.781168524781020500,\t0.781137307793621450,\t0.781106088853378950,\t\n0.781074867960371400,\t0.781043645114676500,\t0.781012420316372080,\t0.780981193565537080,\t0.780949964862249100,\t0.780918734206586310,\t0.780887501598626520,\t0.780856267038448130,\t\n0.780825030526128950,\t0.780793792061746710,\t0.780762551645380550,\t0.780731309277107990,\t0.780700064957007170,\t0.780668818685156250,\t0.780637570461633180,\t0.780606320286516220,\t\n0.780575068159883420,\t0.780543814081812390,\t0.780512558052382510,\t0.780481300071671160,\t0.780450040139756500,\t0.780418778256716790,\t0.780387514422630100,\t0.780356248637574690,\t\n0.780324980901628610,\t0.780293711214869570,\t0.780262439577376730,\t0.780231165989227820,\t0.780199890450501090,\t0.780168612961274490,\t0.780137333521626400,\t0.780106052131635090,\t\n0.780074768791377940,\t0.780043483500934550,\t0.780012196260382320,\t0.779980907069799720,\t0.779949615929264820,\t0.779918322838855870,\t0.779887027798651040,\t0.779855730808728720,\t\n0.779824431869166500,\t0.779793130980043770,\t0.779761828141438240,\t0.779730523353428070,\t0.779699216616091650,\t0.779667907929507240,\t0.779636597293752900,\t0.779605284708907220,\t\n0.779573970175047700,\t0.779542653692253840,\t0.779511335260603230,\t0.779480014880174380,\t0.779448692551045540,\t0.779417368273294890,\t0.779386042047000900,\t0.779354713872241200,\t\n0.779323383749095270,\t0.779292051677640820,\t0.779260717657956350,\t0.779229381690120020,\t0.779198043774210310,\t0.779166703910305400,\t0.779135362098483770,\t0.779104018338823150,\t\n0.779072672631403120,\t0.779041324976301300,\t0.779009975373596290,\t0.778978623823366250,\t0.778947270325689670,\t0.778915914880644930,\t0.778884557488309760,\t0.778853198148763860,\t\n0.778821836862084950,\t0.778790473628351410,\t0.778759108447641730,\t0.778727741320034310,\t0.778696372245607390,\t0.778665001224439710,\t0.778633628256608870,\t0.778602253342194570,\t\n0.778570876481274540,\t0.778539497673927490,\t0.778508116920231590,\t0.778476734220265420,\t0.778445349574107380,\t0.778413962981835960,\t0.778382574443529100,\t0.778351183959266390,\t\n0.778319791529125670,\t0.778288397153185430,\t0.778257000831524270,\t0.778225602564220690,\t0.778194202351352950,\t0.778162800192999220,\t0.778131396089239090,\t0.778099990040150400,\t\n0.778068582045811750,\t0.778037172106301630,\t0.778005760221698540,\t0.777974346392081180,\t0.777942930617527840,\t0.777911512898116660,\t0.777880093233927260,\t0.777848671625037680,\t\n0.777817248071526300,\t0.777785822573471840,\t0.777754395130952900,\t0.777722965744047980,\t0.777691534412835010,\t0.777660101137393700,\t0.777628665917802220,\t0.777597228754139060,\t\n0.777565789646482930,\t0.777534348594912220,\t0.777502905599505630,\t0.777471460660341900,\t0.777440013777498830,\t0.777408564951056260,\t0.777377114181092340,\t0.777345661467685690,\t\n0.777314206810914790,\t0.777282750210858460,\t0.777251291667595210,\t0.777219831181203750,\t0.777188368751762120,\t0.777156904379350140,\t0.777125438064045880,\t0.777093969805928040,\t\n0.777062499605075230,\t0.777031027461566270,\t0.776999553375479660,\t0.776968077346893660,\t0.776936599375887990,\t0.776905119462540820,\t0.776873637606930960,\t0.776842153809136900,\t\n0.776810668069237490,\t0.776779180387311310,\t0.776747690763437300,\t0.776716199197693520,\t0.776684705690159680,\t0.776653210240914160,\t0.776621712850035560,\t0.776590213517602820,\t\n0.776558712243694440,\t0.776527209028389230,\t0.776495703871766030,\t0.776464196773903100,\t0.776432687734880170,\t0.776401176754775490,\t0.776369663833667900,\t0.776338148971636110,\t\n0.776306632168759060,\t0.776275113425115350,\t0.776243592740783250,\t0.776212070115842810,\t0.776180545550372190,\t0.776149019044450220,\t0.776117490598155600,\t0.776085960211567390,\t\n0.776054427884764200,\t0.776022893617824950,\t0.775991357410827920,\t0.775959819263853050,\t0.775928279176978600,\t0.775896737150283510,\t0.775865193183846500,\t0.775833647277746620,\t\n0.775802099432062580,\t0.775770549646872640,\t0.775738997922256980,\t0.775707444258293850,\t0.775675888655061980,\t0.775644331112640530,\t0.775612771631108200,\t0.775581210210543940,\t\n0.775549646851026670,\t0.775518081552634690,\t0.775486514315448020,\t0.775454945139545160,\t0.775423374025004940,\t0.775391800971906190,\t0.775360225980328050,\t0.775328649050349260,\t\n0.775297070182048850,\t0.775265489375505210,\t0.775233906630798500,\t0.775202321948006980,\t0.775170735327209590,\t0.775139146768485390,\t0.775107556271913300,\t0.775075963837572380,\t\n0.775044369465541010,\t0.775012773155899230,\t0.774981174908725530,\t0.774949574724098870,\t0.774917972602098270,\t0.774886368542802790,\t0.774854762546291380,\t0.774823154612642950,\t\n0.774791544741936230,\t0.774759932934251160,\t0.774728319189666230,\t0.774696703508260480,\t0.774665085890112960,\t0.774633466335302830,\t0.774601844843908930,\t0.774570221416010510,\t\n0.774538596051685960,\t0.774506968751015430,\t0.774475339514077430,\t0.774443708340951220,\t0.774412075231715620,\t0.774380440186449910,\t0.774348803205233030,\t0.774317164288143680,\t\n0.774285523435261910,\t0.774253880646666340,\t0.774222235922436110,\t0.774190589262650270,\t0.774158940667387880,\t0.774127290136728210,\t0.774095637670750290,\t0.774063983269532740,\t\n0.774032326933155820,\t0.774000668661698030,\t0.773969008455238640,\t0.773937346313856580,\t0.773905682237631340,\t0.773874016226641760,\t0.773842348280966650,\t0.773810678400686180,\t\n0.773779006585879060,\t0.773747332836624450,\t0.773715657153001390,\t0.773683979535089270,\t0.773652299982967250,\t0.773620618496714370,\t0.773588935076409470,\t0.773557249722132690,\t\n0.773525562433962870,\t0.773493873211979150,\t0.773462182056260720,\t0.773430488966886820,\t0.773398793943936740,\t0.773367096987489620,\t0.773335398097624300,\t0.773303697274420940,\t\n0.773271994517958360,\t0.773240289828315830,\t0.773208583205572510,\t0.773176874649807780,\t0.773145164161100910,\t0.773113451739530500,\t0.773081737385177050,\t0.773050021098119270,\t\n0.773018302878436430,\t0.772986582726207790,\t0.772954860641512750,\t0.772923136624430570,\t0.772891410675040410,\t0.772859682793421320,\t0.772827952979653570,\t0.772796221233815860,\t\n0.772764487555987590,\t0.772732751946248130,\t0.772701014404676870,\t0.772669274931352960,\t0.772637533526356000,\t0.772605790189764500,\t0.772574044921659150,\t0.772542297722118690,\t\n0.772510548591222480,\t0.772478797529049910,\t0.772447044535680360,\t0.772415289611193100,\t0.772383532755667180,\t0.772351773969182980,\t0.772320013251819200,\t0.772288250603655580,\t\n0.772256486024771150,\t0.772224719515245630,\t0.772192951075158280,\t0.772161180704588610,\t0.772129408403615320,\t0.772097634172319140,\t0.772065858010778870,\t0.772034079919073910,\t\n0.772002299897283860,\t0.771970517945487880,\t0.771938734063765790,\t0.771906948252196190,\t0.771875160510859800,\t0.771843370839835560,\t0.771811579239202850,\t0.771779785709041160,\t\n0.771747990249430080,\t0.771716192860449010,\t0.771684393542177440,\t0.771652592294694300,\t0.771620789118080300,\t0.771588984012414270,\t0.771557176977775820,\t0.771525368014244430,\t\n0.771493557121899600,\t0.771461744300820820,\t0.771429929551087800,\t0.771398112872779260,\t0.771366294265976140,\t0.771334473730757140,\t0.771302651267202100,\t0.771270826875390390,\t\n0.771239000555401510,\t0.771207172307315280,\t0.771175342131210420,\t0.771143510027167860,\t0.771111675995266530,\t0.771079840035585940,\t0.771048002148205790,\t0.771016162333205690,\t\n0.770984320590665130,\t0.770952476920663710,\t0.770920631323280590,\t0.770888783798596490,\t0.770856934346690450,\t0.770825082967641960,\t0.770793229661530850,\t0.770761374428436620,\t\n0.770729517268438970,\t0.770697658181617510,\t0.770665797168051390,\t0.770633934227821340,\t0.770602069361006390,\t0.770570202567686380,\t0.770538333847940790,\t0.770506463201849350,\t\n0.770474590629491750,\t0.770442716130947170,\t0.770410839706296310,\t0.770378961355618340,\t0.770347081078992970,\t0.770315198876499910,\t0.770283314748218870,\t0.770251428694229580,\t\n0.770219540714611630,\t0.770187650809444290,\t0.770155758978808500,\t0.770123865222783200,\t0.770091969541448210,\t0.770060071934883350,\t0.770028172403168340,\t0.769996270946382790,\t\n0.769964367564606180,\t0.769932462257919110,\t0.769900555026400870,\t0.769868645870131260,\t0.769836734789190010,\t0.769804821783656950,\t0.769772906853611880,\t0.769740989999134430,\t\n0.769709071220303960,\t0.769677150517201540,\t0.769645227889906080,\t0.769613303338497530,\t0.769581376863055830,\t0.769549448463660690,\t0.769517518140391930,\t0.769485585893329270,\t\n0.769453651722552090,\t0.769421715628141430,\t0.769389777610176460,\t0.769357837668737000,\t0.769325895803902980,\t0.769293952015754230,\t0.769262006304370580,\t0.769230058669831410,\t\n0.769198109112217640,\t0.769166157631608560,\t0.769134204228084100,\t0.769102248901724070,\t0.769070291652608540,\t0.769038332480817210,\t0.769006371386430020,\t0.768974408369526460,\t\n0.768942443430187250,\t0.768910476568492100,\t0.768878507784520710,\t0.768846537078353040,\t0.768814564450069020,\t0.768782589899748570,\t0.768750613427471090,\t0.768718635033317720,\t\n0.768686654717367630,\t0.768654672479700980,\t0.768622688320397710,\t0.768590702239537630,\t0.768558714237200790,\t0.768526724313467250,\t0.768494732468416260,\t0.768462738702129000,\t\n0.768430743014684950,\t0.768398745406163930,\t0.768366745876646220,\t0.768334744426211520,\t0.768302741054940010,\t0.768270735762911610,\t0.768238728550205810,\t0.768206719416903770,\t\n0.768174708363084880,\t0.768142695388829290,\t0.768110680494216940,\t0.768078663679327870,\t0.768046644944242240,\t0.768014624289039330,\t0.767982601713800390,\t0.767950577218605050,\t\n0.767918550803533220,\t0.767886522468665070,\t0.767854492214080530,\t0.767822460039859770,\t0.767790425946082930,\t0.767758389932829300,\t0.767726352000180470,\t0.767694312148215600,\t\n0.767662270377015070,\t0.767630226686658810,\t0.767598181077226990,\t0.767566133548799660,\t0.767534084101457070,\t0.767502032735278620,\t0.767469979450345790,\t0.767437924246737960,\t\n0.767405867124535180,\t0.767373808083817940,\t0.767341747124666070,\t0.767309684247159840,\t0.767277619451378850,\t0.767245552737404360,\t0.767213484105315980,\t0.767181413555193980,\t\n0.767149341087118300,\t0.767117266701169420,\t0.767085190397427290,\t0.767053112175972160,\t0.767021032036883770,\t0.766988949980243250,\t0.766956866006130440,\t0.766924780114625390,\t\n0.766892692305808480,\t0.766860602579759850,\t0.766828510936559680,\t0.766796417376287560,\t0.766764321899025100,\t0.766732224504851790,\t0.766700125193847890,\t0.766668023966093680,\t\n0.766635920821669540,\t0.766603815760655500,\t0.766571708783131860,\t0.766539599889178410,\t0.766507489078876560,\t0.766475376352306000,\t0.766443261709547020,\t0.766411145150679870,\t\n0.766379026675784840,\t0.766346906284942180,\t0.766314783978232380,\t0.766282659755734950,\t0.766250533617531480,\t0.766218405563701690,\t0.766186275594325950,\t0.766154143709484430,\t\n0.766122009909257500,\t0.766089874193725650,\t0.766057736562968490,\t0.766025597017067630,\t0.765993455556102650,\t0.765961312180154060,\t0.765929166889302240,\t0.765897019683627560,\t\n0.765864870563210290,\t0.765832719528130810,\t0.765800566578468960,\t0.765768411714306320,\t0.765736254935722620,\t0.765704096242798230,\t0.765671935635613640,\t0.765639773114249240,\t\n0.765607608678785300,\t0.765575442329302520,\t0.765543274065880410,\t0.765511103888600770,\t0.765478931797543340,\t0.765446757792788590,\t0.765414581874416910,\t0.765382404042508790,\t\n0.765350224297144610,\t0.765318042638404420,\t0.765285859066369590,\t0.765253673581120180,\t0.765221486182736670,\t0.765189296871299220,\t0.765157105646888660,\t0.765124912509585360,\t\n0.765092717459469720,\t0.765060520496621770,\t0.765028321621123110,\t0.764996120833053570,\t0.764963918132493760,\t0.764931713519524160,\t0.764899506994225260,\t0.764867298556677570,\t\n0.764835088206961110,\t0.764802875945157500,\t0.764770661771346670,\t0.764738445685609220,\t0.764706227688025650,\t0.764674007778676450,\t0.764641785957642320,\t0.764609562225003650,\t\n0.764577336580840480,\t0.764545109025234650,\t0.764512879558265970,\t0.764480648180015150,\t0.764448414890562700,\t0.764416179689989210,\t0.764383942578375160,\t0.764351703555801400,\t\n0.764319462622347730,\t0.764287219778095990,\t0.764254975023126230,\t0.764222728357519030,\t0.764190479781355010,\t0.764158229294714770,\t0.764125976897678920,\t0.764093722590327600,\t\n0.764061466372742530,\t0.764029208245003870,\t0.763996948207192110,\t0.763964686259387960,\t0.763932422401672140,\t0.763900156634125250,\t0.763867888956828000,\t0.763835619369860440,\t\n0.763803347873304390,\t0.763771074467239910,\t0.763738799151747920,\t0.763706521926908800,\t0.763674242792803380,\t0.763641961749512380,\t0.763609678797116500,\t0.763577393935695790,\t\n0.763545107165332190,\t0.763512818486105860,\t0.763480527898097390,\t0.763448235401387730,\t0.763415940996057360,\t0.763383644682187220,\t0.763351346459857360,\t0.763319046329149710,\t\n0.763286744290144540,\t0.763254440342922340,\t0.763222134487564150,\t0.763189826724150590,\t0.763157517052762470,\t0.763125205473480510,\t0.763092891986385080,\t0.763060576591557900,\t\n0.763028259289079360,\t0.762995940079030040,\t0.762963618961490900,\t0.762931295936542850,\t0.762898971004266400,\t0.762866644164742040,\t0.762834315418051690,\t0.762801984764275410,\t\n0.762769652203494240,\t0.762737317735789010,\t0.762704981361240320,\t0.762672643079929320,\t0.762640302891936630,\t0.762607960797342720,\t0.762575616796229430,\t0.762543270888677020,\t\n0.762510923074766530,\t0.762478573354578690,\t0.762446221728194430,\t0.762413868195694570,\t0.762381512757160040,\t0.762349155412671230,\t0.762316796162310070,\t0.762284435006156950,\t\n0.762252071944292680,\t0.762219706976798190,\t0.762187340103754550,\t0.762154971325242570,\t0.762122600641342520,\t0.762090228052136550,\t0.762057853557704950,\t0.762025477158128850,\t\n0.761993098853488980,\t0.761960718643866390,\t0.761928336529342000,\t0.761895952509996640,\t0.761863566585911030,\t0.761831178757166990,\t0.761798789023845010,\t0.761766397386026030,\t\n0.761734003843791090,\t0.761701608397221120,\t0.761669211046397180,\t0.761636811791400080,\t0.761604410632310550,\t0.761572007569210400,\t0.761539602602180340,\t0.761507195731301320,\t\n0.761474786956654160,\t0.761442376278320120,\t0.761409963696380140,\t0.761377549210914720,\t0.761345132822005890,\t0.761312714529734260,\t0.761280294334180980,\t0.761247872235426780,\t\n0.761215448233553030,\t0.761183022328640550,\t0.761150594520770610,\t0.761118164810023590,\t0.761085733196481650,\t0.761053299680225500,\t0.761020864261336080,\t0.760988426939894440,\t\n0.760955987715981720,\t0.760923546589679090,\t0.760891103561067040,\t0.760858658630227720,\t0.760826211797241750,\t0.760793763062190380,\t0.760761312425154430,\t0.760728859886215300,\t\n0.760696405445454030,\t0.760663949102951760,\t0.760631490858789010,\t0.760599030713048130,\t0.760566568665809630,\t0.760534104717154770,\t0.760501638867164600,\t0.760469171115920270,\t\n0.760436701463503170,\t0.760404229909994230,\t0.760371756455474060,\t0.760339281100025130,\t0.760306803843728060,\t0.760274324686664000,\t0.760241843628914000,\t0.760209360670559550,\t\n0.760176875811681580,\t0.760144389052360920,\t0.760111900392679730,\t0.760079409832718930,\t0.760046917372559580,\t0.760014423012282950,\t0.759981926751970180,\t0.759949428591702670,\t\n0.759916928531561560,\t0.759884426571627470,\t0.759851922711982990,\t0.759819416952708710,\t0.759786909293885810,\t0.759754399735595780,\t0.759721888277919640,\t0.759689374920938800,\t\n0.759656859664733950,\t0.759624342509387480,\t0.759591823454980220,\t0.759559302501593430,\t0.759526779649308370,\t0.759494254898206210,\t0.759461728248368550,\t0.759429199699876540,\t\n0.759396669252811020,\t0.759364136907254350,\t0.759331602663287360,\t0.759299066520991330,\t0.759266528480447620,\t0.759233988541737630,\t0.759201446704942610,\t0.759168902970144050,\t\n0.759136357337422680,\t0.759103809806860870,\t0.759071260378539670,\t0.759038709052540230,\t0.759006155828944040,\t0.758973600707832490,\t0.758941043689286830,\t0.758908484773388130,\t\n0.758875923960218750,\t0.758843361249859520,\t0.758810796642391930,\t0.758778230137897250,\t0.758745661736457080,\t0.758713091438152800,\t0.758680519243065680,\t0.758647945151276760,\t\n0.758615369162868540,\t0.758582791277921940,\t0.758550211496518360,\t0.758517629818739160,\t0.758485046244665950,\t0.758452460774380110,\t0.758419873407963130,\t0.758387284145495830,\t\n0.758354692987060930,\t0.758322099932739360,\t0.758289504982612490,\t0.758256908136761830,\t0.758224309395268970,\t0.758191708758215290,\t0.758159106225681720,\t0.758126501797750980,\t\n0.758093895474504120,\t0.758061287256022400,\t0.758028677142387530,\t0.757996065133680900,\t0.757963451229984100,\t0.757930835431378740,\t0.757898217737945630,\t0.757865598149767620,\t\n0.757832976666925620,\t0.757800353289501130,\t0.757767728017575750,\t0.757735100851231080,\t0.757702471790548620,\t0.757669840835609510,\t0.757637207986496250,\t0.757604573243290110,\t\n0.757571936606072470,\t0.757539298074924930,\t0.757506657649929190,\t0.757474015331166760,\t0.757441371118719340,\t0.757408725012667980,\t0.757376077013095280,\t0.757343427120082400,\t\n0.757310775333711050,\t0.757278121654062720,\t0.757245466081219010,\t0.757212808615261630,\t0.757180149256272310,\t0.757147488004331960,\t0.757114824859523640,\t0.757082159821928060,\t\n0.757049492891627150,\t0.757016824068702520,\t0.756984153353235770,\t0.756951480745308710,\t0.756918806245002410,\t0.756886129852399670,\t0.756853451567581550,\t0.756820771390629750,\t\n0.756788089321626110,\t0.756755405360652110,\t0.756722719507789470,\t0.756690031763120220,\t0.756657342126725970,\t0.756624650598688330,\t0.756591957179088780,\t0.756559261868009590,\t\n0.756526564665532360,\t0.756493865571738590,\t0.756461164586709870,\t0.756428461710528580,\t0.756395756943276100,\t0.756363050285034030,\t0.756330341735884540,\t0.756297631295909210,\t\n0.756264918965189770,\t0.756232204743807810,\t0.756199488631845610,\t0.756166770629384640,\t0.756134050736506860,\t0.756101328953293520,\t0.756068605279827220,\t0.756035879716189460,\t\n0.756003152262461840,\t0.755970422918726180,\t0.755937691685064750,\t0.755904958561559040,\t0.755872223548290980,\t0.755839486645341950,\t0.755806747852794670,\t0.755774007170730400,\t\n0.755741264599231190,\t0.755708520138378530,\t0.755675773788254790,\t0.755643025548941690,\t0.755610275420520620,\t0.755577523403074270,\t0.755544769496684140,\t0.755512013701431950,\t\n0.755479256017399510,\t0.755446496444669210,\t0.755413734983322760,\t0.755380971633441870,\t0.755348206395108250,\t0.755315439268404390,\t0.755282670253412000,\t0.755249899350212920,\t\n0.755217126558888730,\t0.755184351879522150,\t0.755151575312194570,\t0.755118796856988130,\t0.755086016513984330,\t0.755053234283265870,\t0.755020450164914260,\t0.754987664159011200,\t\n0.754954876265639400,\t0.754922086484880350,\t0.754889294816815990,\t0.754856501261528260,\t0.754823705819099410,\t0.754790908489611390,\t0.754758109273146130,\t0.754725308169785230,\t\n0.754692505179611390,\t0.754659700302706240,\t0.754626893539151910,\t0.754594084889030010,\t0.754561274352423260,\t0.754528461929413250,\t0.754495647620082140,\t0.754462831424511540,\t\n0.754430013342784140,\t0.754397193374981790,\t0.754364371521186180,\t0.754331547781479930,\t0.754298722155944730,\t0.754265894644662760,\t0.754233065247715830,\t0.754200233965186430,\t\n0.754167400797156500,\t0.754134565743708070,\t0.754101728804922880,\t0.754068889980883730,\t0.754036049271672340,\t0.754003206677370750,\t0.753970362198060910,\t0.753937515833825510,\t\n0.753904667584746280,\t0.753871817450905370,\t0.753838965432384600,\t0.753806111529266690,\t0.753773255741633560,\t0.753740398069567270,\t0.753707538513149760,\t0.753674677072463610,\t\n0.753641813747590760,\t0.753608948538613150,\t0.753576081445613500,\t0.753543212468673510,\t0.753510341607875560,\t0.753477468863301470,\t0.753444594235033960,\t0.753411717723155070,\t\n0.753378839327746740,\t0.753345959048891120,\t0.753313076886670820,\t0.753280192841167870,\t0.753247306912464440,\t0.753214419100642460,\t0.753181529405784760,\t0.753148637827973140,\t\n0.753115744367290010,\t0.753082849023817280,\t0.753049951797637560,\t0.753017052688833120,\t0.752984151697485670,\t0.752951248823678140,\t0.752918344067492470,\t0.752885437429010930,\t\n0.752852528908315550,\t0.752819618505489060,\t0.752786706220613610,\t0.752753792053771350,\t0.752720876005044340,\t0.752687958074515500,\t0.752655038262266650,\t0.752622116568380290,\t\n0.752589192992938250,\t0.752556267536023670,\t0.752523340197718270,\t0.752490410978104650,\t0.752457479877264630,\t0.752424546895281150,\t0.752391612032236370,\t0.752358675288212320,\t\n0.752325736663291830,\t0.752292796157556950,\t0.752259853771090060,\t0.752226909503973310,\t0.752193963356289630,\t0.752161015328120960,\t0.752128065419549800,\t0.752095113630658170,\t\n0.752062159961529030,\t0.752029204412244520,\t0.751996246982886920,\t0.751963287673538480,\t0.751930326484282150,\t0.751897363415199970,\t0.751864398466374320,\t0.751831431637887460,\t\n0.751798462929822220,\t0.751765492342260980,\t0.751732519875285550,\t0.751699545528979220,\t0.751666569303424010,\t0.751633591198702320,\t0.751600611214896410,\t0.751567629352089320,\t\n0.751534645610363090,\t0.751501659989800120,\t0.751468672490482880,\t0.751435683112494200,\t0.751402691855916350,\t0.751369698720831810,\t0.751336703707322640,\t0.751303706815471980,\t\n0.751270708045362110,\t0.751237707397075520,\t0.751204704870694240,\t0.751171700466301660,\t0.751138694183979600,\t0.751105686023811000,\t0.751072675985877790,\t0.751039664070263240,\t\n0.751006650277049490,\t0.750973634606318940,\t0.750940617058154510,\t0.750907597632638480,\t0.750874576329853440,\t0.750841553149881770,\t0.750808528092806520,\t0.750775501158709830,\t\n0.750742472347674550,\t0.750709441659782590,\t0.750676409095117460,\t0.750643374653761300,\t0.750610338335796710,\t0.750577300141305860,\t0.750544260070372230,\t0.750511218123077860,\t\n0.750478174299505470,\t0.750445128599737330,\t0.750412081023856700,\t0.750379031571945740,\t0.750345980244087050,\t0.750312927040363680,\t0.750279871960857990,\t0.750246815005652600,\t\n0.750213756174829880,\t0.750180695468473100,\t0.750147632886664530,\t0.750114568429486870,\t0.750081502097022510,\t0.750048433889354720,\t0.750015363806565860,\t0.749982291848738440,\t\n0.749949218015955150,\t0.749916142308299060,\t0.749883064725852640,\t0.749849985268698500,\t0.749816903936919240,\t0.749783820730597910,\t0.749750735649816980,\t0.749717648694659070,\t\n0.749684559865207210,\t0.749651469161543900,\t0.749618376583752080,\t0.749585282131914000,\t0.749552185806112830,\t0.749519087606431380,\t0.749485987532952150,\t0.749452885585757620,\t\n0.749419781764931290,\t0.749386676070555310,\t0.749353568502712840,\t0.749320459061486030,\t0.749287347746958490,\t0.749254234559212470,\t0.749221119498330920,\t0.749188002564396220,\t\n0.749154883757491840,\t0.749121763077700180,\t0.749088640525104270,\t0.749055516099786270,\t0.749022389801830000,\t0.748989261631317630,\t0.748956131588331740,\t0.748922999672955950,\t\n0.748889865885272510,\t0.748856730225364590,\t0.748823592693314440,\t0.748790453289205570,\t0.748757312013120680,\t0.748724168865142480,\t0.748691023845353460,\t0.748657876953837230,\t\n0.748624728190676380,\t0.748591577555953620,\t0.748558425049751670,\t0.748525270672153910,\t0.748492114423243040,\t0.748458956303101890,\t0.748425796311813050,\t0.748392634449459910,\t\n0.748359470716125300,\t0.748326305111891690,\t0.748293137636842580,\t0.748259968291060670,\t0.748226797074628800,\t0.748193623987629670,\t0.748160449030146670,\t0.748127272202262720,\t\n0.748094093504060530,\t0.748060912935622710,\t0.748027730497032970,\t0.747994546188373910,\t0.747961360009728570,\t0.747928171961179440,\t0.747894982042810240,\t0.747861790254703450,\t\n0.747828596596942340,\t0.747795401069609290,\t0.747762203672788120,\t0.747729004406561430,\t0.747695803271012040,\t0.747662600266223330,\t0.747629395392278130,\t0.747596188649259360,\t\n0.747562980037249970,\t0.747529769556333320,\t0.747496557206592360,\t0.747463342988109900,\t0.747430126900968880,\t0.747396908945252790,\t0.747363689121044340,\t0.747330467428426680,\t\n0.747297243867482750,\t0.747264018438295820,\t0.747230791140948920,\t0.747197561975525000,\t0.747164330942106880,\t0.747131098040778370,\t0.747097863271621980,\t0.747064626634720620,\t\n0.747031388130158010,\t0.746998147758016980,\t0.746964905518380570,\t0.746931661411331490,\t0.746898415436953680,\t0.746865167595329730,\t0.746831917886543020,\t0.746798666310676150,\t\n0.746765412867812840,\t0.746732157558036120,\t0.746698900381428830,\t0.746665641338074120,\t0.746632380428055580,\t0.746599117651456030,\t0.746565853008358760,\t0.746532586498846570,\t\n0.746499318123003190,\t0.746466047880911530,\t0.746432775772654770,\t0.746399501798315710,\t0.746366225957978190,\t0.746332948251725140,\t0.746299668679639370,\t0.746266387241804830,\t\n0.746233103938304220,\t0.746199818769220920,\t0.746166531734637760,\t0.746133242834638550,\t0.746099952069306240,\t0.746066659438724080,\t0.746033364942974900,\t0.746000068582142630,\t\n0.745966770356310200,\t0.745933470265560890,\t0.745900168309977630,\t0.745866864489644120,\t0.745833558804643530,\t0.745800251255059000,\t0.745766941840973590,\t0.745733630562471110,\t\n0.745700317419634610,\t0.745667002412546910,\t0.745633685541292060,\t0.745600366805952990,\t0.745567046206613070,\t0.745533723743355140,\t0.745500399416263230,\t0.745467073225420270,\t\n0.745433745170909770,\t0.745400415252814420,\t0.745367083471218490,\t0.745333749826204710,\t0.745300414317856760,\t0.745267076946257270,\t0.745233737711490480,\t0.745200396613639350,\t\n0.745167053652787240,\t0.745133708829017190,\t0.745100362142413150,\t0.745067013593058160,\t0.745033663181035370,\t0.745000310906428710,\t0.744966956769321340,\t0.744933600769796530,\t\n0.744900242907937440,\t0.744866883183827990,\t0.744833521597551450,\t0.744800158149190980,\t0.744766792838829850,\t0.744733425666552100,\t0.744700056632440770,\t0.744666685736579240,\t\n0.744633312979050670,\t0.744599938359939210,\t0.744566561879327790,\t0.744533183537300140,\t0.744499803333939060,\t0.744466421269328830,\t0.744433037343552590,\t0.744399651556693740,\t\n0.744366263908835420,\t0.744332874400061790,\t0.744299483030455900,\t0.744266089800101120,\t0.744232694709081380,\t0.744199297757479840,\t0.744165898945380100,\t0.744132498272865320,\t\n0.744099095740019530,\t0.744065691346926020,\t0.744032285093668370,\t0.743998876980329630,\t0.743965467006994060,\t0.743932055173744720,\t0.743898641480665310,\t0.743865225927838990,\t\n0.743831808515349910,\t0.743798389243281340,\t0.743764968111716660,\t0.743731545120739470,\t0.743698120270433580,\t0.743664693560882380,\t0.743631264992169250,\t0.743597834564378110,\t\n0.743564402277592570,\t0.743530968131895900,\t0.743497532127371570,\t0.743464094264103540,\t0.743430654542175500,\t0.743397212961670720,\t0.743363769522672580,\t0.743330324225265350,\t\n0.743296877069532290,\t0.743263428055557120,\t0.743229977183422990,\t0.743196524453214270,\t0.743163069865014240,\t0.743129613418906490,\t0.743096155114974510,\t0.743062694953302350,\t\n0.743029232933973380,\t0.742995769057071210,\t0.742962303322679760,\t0.742928835730882640,\t0.742895366281763340,\t0.742861894975405450,\t0.742828421811893010,\t0.742794946791309640,\t\n0.742761469913738810,\t0.742727991179264020,\t0.742694510587969540,\t0.742661028139938840,\t0.742627543835255530,\t0.742594057674003110,\t0.742560569656265710,\t0.742527079782127060,\t\n0.742493588051670650,\t0.742460094464979850,\t0.742426599022139260,\t0.742393101723232140,\t0.742359602568341990,\t0.742326101557553080,\t0.742292598690948880,\t0.742259093968613340,\t\n0.742225587390629600,\t0.742192078957082280,\t0.742158568668054740,\t0.742125056523630810,\t0.742091542523893870,\t0.742058026668928390,\t0.742024508958817890,\t0.741990989393646050,\t\n0.741957467973496490,\t0.741923944698453570,\t0.741890419568600800,\t0.741856892584021880,\t0.741823363744800510,\t0.741789833051020970,\t0.741756300502766970,\t0.741722766100122110,\t\n0.741689229843170090,\t0.741655691731995300,\t0.741622151766681230,\t0.741588609947311460,\t0.741555066273970610,\t0.741521520746741940,\t0.741487973365709600,\t0.741454424130956860,\t\n0.741420873042568430,\t0.741387320100627910,\t0.741353765305219010,\t0.741320208656425450,\t0.741286650154331590,\t0.741253089799021160,\t0.741219527590577960,\t0.741185963529085720,\t\n0.741152397614628810,\t0.741118829847290940,\t0.741085260227155930,\t0.741051688754307490,\t0.741018115428830230,\t0.740984540250807620,\t0.740950963220323280,\t0.740917384337461900,\t\n0.740883803602307100,\t0.740850221014942690,\t0.740816636575452490,\t0.740783050283921000,\t0.740749462140431910,\t0.740715872145069070,\t0.740682280297916380,\t0.740648686599058250,\t\n0.740615091048578260,\t0.740581493646560670,\t0.740547894393089100,\t0.740514293288248030,\t0.740480690332121270,\t0.740447085524792660,\t0.740413478866346120,\t0.740379870356866250,\t\n0.740346259996436550,\t0.740312647785141050,\t0.740279033723064140,\t0.740245417810289740,\t0.740211800046901680,\t0.740178180432983890,\t0.740144558968620970,\t0.740110935653896520,\t\n0.740077310488894910,\t0.740043683473699640,\t0.740010054608395420,\t0.739976423893066060,\t0.739942791327795720,\t0.739909156912668120,\t0.739875520647767850,\t0.739841882533178730,\t\n0.739808242568985030,\t0.739774600755270350,\t0.739740957092119510,\t0.739707311579616220,\t0.739673664217844750,\t0.739640015006888700,\t0.739606363946832990,\t0.739572711037761340,\t\n0.739539056279757690,\t0.739505399672906630,\t0.739471741217291980,\t0.739438080912998120,\t0.739404418760108760,\t0.739370754758708500,\t0.739337088908881500,\t0.739303421210711800,\t\n0.739269751664283100,\t0.739236080269680460,\t0.739202407026987580,\t0.739168731936288630,\t0.739135054997667630,\t0.739101376211209190,\t0.739067695576997470,\t0.739034013095116290,\t\n0.739000328765649920,\t0.738966642588683050,\t0.738932954564299530,\t0.738899264692583270,\t0.738865572973619210,\t0.738831879407491290,\t0.738798183994283540,\t0.738764486734080130,\t\n0.738730787626965760,\t0.738697086673024470,\t0.738663383872340320,\t0.738629679224997560,\t0.738595972731080800,\t0.738562264390674180,\t0.738528554203861880,\t0.738494842170727810,\t\n0.738461128291357130,\t0.738427412565833440,\t0.738393694994241350,\t0.738359975576664660,\t0.738326254313188320,\t0.738292531203896370,\t0.738258806248872750,\t0.738225079448202480,\t\n0.738191350801969510,\t0.738157620310258110,\t0.738123887973152430,\t0.738090153790737280,\t0.738056417763096720,\t0.738022679890315110,\t0.737988940172476520,\t0.737955198609665960,\t\n0.737921455201967280,\t0.737887709949465060,\t0.737853962852243250,\t0.737820213910386770,\t0.737786463123979770,\t0.737752710493106640,\t0.737718956017851420,\t0.737685199698299150,\t\n0.737651441534533880,\t0.737617681526639650,\t0.737583919674701600,\t0.737550155978803690,\t0.737516390439030390,\t0.737482623055465860,\t0.737448853828195030,\t0.737415082757302050,\t\n0.737381309842871420,\t0.737347535084987180,\t0.737313758483734370,\t0.737279980039197150,\t0.737246199751460110,\t0.737212417620607190,\t0.737178633646723420,\t0.737144847829893310,\t\n0.737111060170200890,\t0.737077270667730540,\t0.737043479322567420,\t0.737009686134795450,\t0.736975891104499350,\t0.736942094231763270,\t0.736908295516672250,\t0.736874494959310460,\t\n0.736840692559762030,\t0.736806888318112250,\t0.736773082234445260,\t0.736739274308845560,\t0.736705464541397400,\t0.736671652932185840,\t0.736637839481295130,\t0.736604024188809880,\t\n0.736570207054814240,\t0.736536388079393370,\t0.736502567262631520,\t0.736468744604613420,\t0.736434920105423000,\t0.736401093765145510,\t0.736367265583865450,\t0.736333435561667080,\t\n0.736299603698634900,\t0.736265769994854050,\t0.736231934450408690,\t0.736198097065383190,\t0.736164257839862830,\t0.736130416773931760,\t0.736096573867674690,\t0.736062729121175870,\t\n0.736028882534520480,\t0.735995034107792990,\t0.735961183841077780,\t0.735927331734459460,\t0.735893477788023050,\t0.735859622001852950,\t0.735825764376033750,\t0.735791904910649830,\t\n0.735758043605786560,\t0.735724180461528100,\t0.735690315477959160,\t0.735656448655164220,\t0.735622579993228440,\t0.735588709492236090,\t0.735554837152271770,\t0.735520962973420730,\t\n0.735487086955767140,\t0.735453209099395930,\t0.735419329404391360,\t0.735385447870838700,\t0.735351564498822440,\t0.735317679288427390,\t0.735283792239737720,\t0.735249903352839020,\t\n0.735216012627815330,\t0.735182120064751810,\t0.735148225663732610,\t0.735114329424843120,\t0.735080431348167920,\t0.735046531433791510,\t0.735012629681798480,\t0.734978726092274210,\t\n0.734944820665303090,\t0.734910913400970030,\t0.734877004299359320,\t0.734843093360556420,\t0.734809180584645730,\t0.734775265971711830,\t0.734741349521840110,\t0.734707431235114950,\t\n0.734673511111621160,\t0.734639589151443450,\t0.734605665354666980,\t0.734571739721376350,\t0.734537812251656370,\t0.734503882945591550,\t0.734469951803267350,\t0.734436018824768280,\t\n0.734402084010179150,\t0.734368147359584440,\t0.734334208873069770,\t0.734300268550719500,\t0.734266326392618570,\t0.734232382398851470,\t0.734198436569503790,\t0.734164488904660130,\t\n0.734130539404404760,\t0.734096588068823390,\t0.734062634898000610,\t0.734028679892021140,\t0.733994723050969800,\t0.733960764374931850,\t0.733926803863992010,\t0.733892841518235190,\t\n0.733858877337746020,\t0.733824911322609850,\t0.733790943472911410,\t0.733756973788735720,\t0.733723002270167180,\t0.733689028917291490,\t0.733655053730193240,\t0.733621076708957260,\t\n0.733587097853668380,\t0.733553117164412070,\t0.733519134641272940,\t0.733485150284335700,\t0.733451164093685830,\t0.733417176069408040,\t0.733383186211587380,\t0.733349194520308330,\t\n0.733315200995656720,\t0.733281205637717040,\t0.733247208446574430,\t0.733213209422313380,\t0.733179208565019720,\t0.733145205874777940,\t0.733111201351673290,\t0.733077194995790160,\t\n0.733043186807214480,\t0.733009176786030730,\t0.732975164932324060,\t0.732941151246179310,\t0.732907135727681850,\t0.732873118376916600,\t0.732839099193968170,\t0.732805078178922380,\t\n0.732771055331863820,\t0.732737030652877760,\t0.732703004142048700,\t0.732668975799462440,\t0.732634945625203820,\t0.732600913619357750,\t0.732566879782009180,\t0.732532844113243600,\t\n0.732498806613146040,\t0.732464767281801320,\t0.732430726119294500,\t0.732396683125711160,\t0.732362638301136020,\t0.732328591645654340,\t0.732294543159350830,\t0.732260492842311430,\t\n0.732226440694620620,\t0.732192386716363770,\t0.732158330907625610,\t0.732124273268492050,\t0.732090213799047710,\t0.732056152499377500,\t0.732022089369567250,\t0.731988024409701900,\t\n0.731953957619866370,\t0.731919889000145600,\t0.731885818550625510,\t0.731851746271390710,\t0.731817672162526690,\t0.731783596224118150,\t0.731749518456251020,\t0.731715438859009910,\t\n0.731681357432480310,\t0.731647274176747020,\t0.731613189091895770,\t0.731579102178011700,\t0.731545013435179750,\t0.731510922863484960,\t0.731476830463013260,\t0.731442736233849370,\t\n0.731408640176078430,\t0.731374542289786160,\t0.731340442575057480,\t0.731306341031977780,\t0.731272237660631870,\t0.731238132461105690,\t0.731204025433484170,\t0.731169916577852570,\t\n0.731135805894295940,\t0.731101693382900100,\t0.731067579043749970,\t0.731033462876930830,\t0.730999344882527820,\t0.730965225060626780,\t0.730931103411312620,\t0.730896979934670730,\t\n0.730862854630786040,\t0.730828727499744590,\t0.730794598541631310,\t0.730760467756531140,\t0.730726335144530230,\t0.730692200705713390,\t0.730658064440166120,\t0.730623926347973350,\t\n0.730589786429221010,\t0.730555644683994250,\t0.730521501112378460,\t0.730487355714458550,\t0.730453208490320470,\t0.730419059440049480,\t0.730384908563730840,\t0.730350755861449600,\t\n0.730316601333291790,\t0.730282444979342360,\t0.730248286799686900,\t0.730214126794410450,\t0.730179964963598940,\t0.730145801307337640,\t0.730111635825711700,\t0.730077468518806390,\t\n0.730043299386707760,\t0.730009128429500830,\t0.729974955647270880,\t0.729940781040103740,\t0.729906604608084650,\t0.729872426351299010,\t0.729838246269832180,\t0.729804064363769880,\t\n0.729769880633197480,\t0.729735695078200350,\t0.729701507698863660,\t0.729667318495273550,\t0.729633127467515070,\t0.729598934615673930,\t0.729564739939835060,\t0.729530543440084610,\t\n0.729496345116507740,\t0.729462144969190150,\t0.729427942998216890,\t0.729393739203674010,\t0.729359533585646760,\t0.729325326144220410,\t0.729291116879481120,\t0.729256905791513920,\t\n0.729222692880404530,\t0.729188478146237990,\t0.729154261589100680,\t0.729120043209077640,\t0.729085823006254570,\t0.729051600980716640,\t0.729017377132549880,\t0.728983151461839900,\t\n0.728948923968671840,\t0.728914694653131300,\t0.728880463515304220,\t0.728846230555276090,\t0.728811995773132270,\t0.728777759168958150,\t0.728743520742840100,\t0.728709280494863050,\t\n0.728675038425112610,\t0.728640794533674920,\t0.728606548820635140,\t0.728572301286078970,\t0.728538051930091910,\t0.728503800752759890,\t0.728469547754168390,\t0.728435292934403010,\t\n0.728401036293549130,\t0.728366777831693010,\t0.728332517548919810,\t0.728298255445315460,\t0.728263991520964990,\t0.728229725775955020,\t0.728195458210370680,\t0.728161188824297700,\t\n0.728126917617821330,\t0.728092644591028180,\t0.728058369744003290,\t0.728024093076832470,\t0.727989814589601100,\t0.727955534282395570,\t0.727921252155301120,\t0.727886968208403370,\t\n0.727852682441788360,\t0.727818394855541670,\t0.727784105449749030,\t0.727749814224495920,\t0.727715521179868490,\t0.727681226315952220,\t0.727646929632832840,\t0.727612631130595930,\t\n0.727578330809327770,\t0.727544028669113720,\t0.727509724710039610,\t0.727475418932190920,\t0.727441111335653920,\t0.727406801920514210,\t0.727372490686857390,\t0.727338177634769160,\t\n0.727303862764335670,\t0.727269546075642650,\t0.727235227568775460,\t0.727200907243820360,\t0.727166585100863070,\t0.727132261139989410,\t0.727097935361284640,\t0.727063607764835470,\t\n0.727029278350727170,\t0.726994947119045780,\t0.726960614069876660,\t0.726926279203306320,\t0.726891942519420240,\t0.726857604018304350,\t0.726823263700044130,\t0.726788921564726080,\t\n0.726754577612435670,\t0.726720231843258850,\t0.726685884257281200,\t0.726651534854589000,\t0.726617183635268060,\t0.726582830599403980,\t0.726548475747082920,\t0.726514119078390700,\t\n0.726479760593413350,\t0.726445400292236140,\t0.726411038174945790,\t0.726376674241627770,\t0.726342308492368140,\t0.726307940927252480,\t0.726273571546367180,\t0.726239200349797940,\t\n0.726204827337630810,\t0.726170452509951270,\t0.726136075866845810,\t0.726101697408400250,\t0.726067317134700410,\t0.726032935045832000,\t0.725998551141881610,\t0.725964165422934740,\t\n0.725929777889077200,\t0.725895388540395480,\t0.725860997376975290,\t0.725826604398902680,\t0.725792209606263120,\t0.725757812999143440,\t0.725723414577629230,\t0.725689014341806440,\t\n0.725654612291760870,\t0.725620208427579020,\t0.725585802749346700,\t0.725551395257149840,\t0.725516985951074170,\t0.725482574831206370,\t0.725448161897632170,\t0.725413747150437490,\t\n0.725379330589708160,\t0.725344912215530880,\t0.725310492027991250,\t0.725276070027175420,\t0.725241646213169110,\t0.725207220586058910,\t0.725172793145930750,\t0.725138363892870230,\t\n0.725103932826964170,\t0.725069499948298280,\t0.725035065256958600,\t0.725000628753030950,\t0.724966190436602040,\t0.724931750307757690,\t0.724897308366583950,\t0.724862864613166620,\t\n0.724828419047592430,\t0.724793971669947190,\t0.724759522480317050,\t0.724725071478787840,\t0.724690618665446150,\t0.724656164040377910,\t0.724621707603669400,\t0.724587249355406190,\t\n0.724552789295675240,\t0.724518327424562240,\t0.724483863742153120,\t0.724449398248534710,\t0.724414930943792830,\t0.724380461828013520,\t0.724345990901282820,\t0.724311518163687440,\t\n0.724277043615313310,\t0.724242567256246470,\t0.724208089086572970,\t0.724173609106379510,\t0.724139127315752030,\t0.724104643714776790,\t0.724070158303539600,\t0.724035671082127300,\t\n0.724001182050625800,\t0.723966691209121490,\t0.723932198557699970,\t0.723897704096448380,\t0.723863207825452550,\t0.723828709744798290,\t0.723794209854572550,\t0.723759708154861350,\t\n0.723725204645750850,\t0.723690699327327100,\t0.723656192199676810,\t0.723621683262886120,\t0.723587172517041190,\t0.723552659962227950,\t0.723518145598533560,\t0.723483629426043610,\t\n0.723449111444844690,\t0.723414591655022640,\t0.723380070056664380,\t0.723345546649856060,\t0.723311021434683840,\t0.723276494411233760,\t0.723241965579592640,\t0.723207434939846740,\t\n0.723172902492082210,\t0.723138368236385110,\t0.723103832172842460,\t0.723069294301540100,\t0.723034754622564280,\t0.723000213136001820,\t0.722965669841938880,\t0.722931124740461840,\t\n0.722896577831656620,\t0.722862029115610150,\t0.722827478592408700,\t0.722792926262138650,\t0.722758372124885810,\t0.722723816180737440,\t0.722689258429779490,\t0.722654698872098430,\t\n0.722620137507780310,\t0.722585574336912170,\t0.722551009359580050,\t0.722516442575870440,\t0.722481873985869380,\t0.722447303589664020,\t0.722412731387340300,\t0.722378157378984480,\t\n0.722343581564683590,\t0.722309003944523800,\t0.722274424518591470,\t0.722239843286972660,\t0.722205260249754620,\t0.722170675407023510,\t0.722136088758865590,\t0.722101500305367240,\t\n0.722066910046615380,\t0.722032317982696290,\t0.721997724113696340,\t0.721963128439701900,\t0.721928530960799790,\t0.721893931677076490,\t0.721859330588618290,\t0.721824727695511430,\t\n0.721790122997843180,\t0.721755516495699470,\t0.721720908189166680,\t0.721686298078332070,\t0.721651686163281570,\t0.721617072444102000,\t0.721582456920879300,\t0.721547839593700830,\t\n0.721513220462652760,\t0.721478599527821560,\t0.721443976789293620,\t0.721409352247156080,\t0.721374725901495100,\t0.721340097752397380,\t0.721305467799948970,\t0.721270836044237360,\t\n0.721236202485348590,\t0.721201567123369250,\t0.721166929958385830,\t0.721132290990485260,\t0.721097650219754030,\t0.721063007646278290,\t0.721028363270145410,\t0.720993717091441550,\t\n0.720959069110253540,\t0.720924419326667510,\t0.720889767740770630,\t0.720855114352649370,\t0.720820459162390460,\t0.720785802170079930,\t0.720751143375805260,\t0.720716482779652720,\t\n0.720681820381709030,\t0.720647156182060430,\t0.720612490180794210,\t0.720577822377996840,\t0.720543152773754910,\t0.720508481368154820,\t0.720473808161283700,\t0.720439133153228160,\t\n0.720404456344074800,\t0.720369777733909870,\t0.720335097322820970,\t0.720300415110894270,\t0.720265731098216120,\t0.720231045284874140,\t0.720196357670954360,\t0.720161668256543820,\t\n0.720126977041728680,\t0.720092284026596530,\t0.720057589211233640,\t0.720022892595726720,\t0.719988194180162240,\t0.719953493964627710,\t0.719918791949209380,\t0.719884088133994070,\t\n0.719849382519068160,\t0.719814675104519130,\t0.719779965890433580,\t0.719745254876897890,\t0.719710542063998870,\t0.719675827451823790,\t0.719641111040459140,\t0.719606392829991390,\t\n0.719571672820508050,\t0.719536951012095470,\t0.719502227404840490,\t0.719467501998829580,\t0.719432774794150240,\t0.719398045790889060,\t0.719363314989132750,\t0.719328582388967800,\t\n0.719293847990481680,\t0.719259111793761010,\t0.719224373798892480,\t0.719189634005962810,\t0.719154892415059250,\t0.719120149026268530,\t0.719085403839677450,\t0.719050656855372510,\t\n0.719015908073441290,\t0.718981157493970180,\t0.718946405117045990,\t0.718911650942756110,\t0.718876894971187010,\t0.718842137202425730,\t0.718807377636558780,\t0.718772616273673610,\t\n0.718737853113857070,\t0.718703088157195750,\t0.718668321403776460,\t0.718633552853686690,\t0.718598782507013030,\t0.718564010363842430,\t0.718529236424261470,\t0.718494460688357760,\t\n0.718459683156217890,\t0.718424903827928780,\t0.718390122703577050,\t0.718355339783250500,\t0.718320555067035400,\t0.718285768555019020,\t0.718250980247287950,\t0.718216190143929680,\t\n0.718181398245030910,\t0.718146604550678360,\t0.718111809060959620,\t0.718077011775961390,\t0.718042212695770620,\t0.718007411820473900,\t0.717972609150159040,\t0.717937804684912750,\t\n0.717902998424821750,\t0.717868190369973070,\t0.717833380520454200,\t0.717798568876351960,\t0.717763755437753170,\t0.717728940204744760,\t0.717694123177414320,\t0.717659304355848460,\t\n0.717624483740134430,\t0.717589661330358840,\t0.717554837126609500,\t0.717520011128973010,\t0.717485183337536190,\t0.717450353752386640,\t0.717415522373611280,\t0.717380689201297050,\t\n0.717345854235530880,\t0.717311017476400360,\t0.717276178923992310,\t0.717241338578393780,\t0.717206496439691590,\t0.717171652507973540,\t0.717136806783326250,\t0.717101959265836970,\t\n0.717067109955592530,\t0.717032258852680630,\t0.716997405957188080,\t0.716962551269201940,\t0.716927694788809130,\t0.716892836516097480,\t0.716857976451153680,\t0.716823114594064670,\t\n0.716788250944918160,\t0.716753385503800970,\t0.716718518270800350,\t0.716683649246003140,\t0.716648778429497150,\t0.716613905821369190,\t0.716579031421706420,\t0.716544155230595780,\t\n0.716509277248125080,\t0.716474397474381130,\t0.716439515909451210,\t0.716404632553422350,\t0.716369747406382040,\t0.716334860468417430,\t0.716299971739615680,\t0.716265081220063600,\t\n0.716230188909849240,\t0.716195294809059300,\t0.716160398917780940,\t0.716125501236101750,\t0.716090601764108880,\t0.716055700501889490,\t0.716020797449530620,\t0.715985892607119980,\t\n0.715950985974744600,\t0.715916077552491760,\t0.715881167340448490,\t0.715846255338702610,\t0.715811341547341050,\t0.715776425966451080,\t0.715741508596119740,\t0.715706589436435060,\t\n0.715671668487483760,\t0.715636745749353430,\t0.715601821222130900,\t0.715566894905903970,\t0.715531966800759920,\t0.715497036906786010,\t0.715462105224069170,\t0.715427171752697320,\t\n0.715392236492757630,\t0.715357299444336900,\t0.715322360607523300,\t0.715287419982403860,\t0.715252477569065850,\t0.715217533367596300,\t0.715182587378083160,\t0.715147639600613670,\t\n0.715112690035275000,\t0.715077738682154410,\t0.715042785541339710,\t0.715007830612917950,\t0.714972873896976720,\t0.714937915393603070,\t0.714902955102884820,\t0.714867993024909220,\t\n0.714833029159763540,\t0.714798063507535050,\t0.714763096068311790,\t0.714728126842180790,\t0.714693155829229100,\t0.714658183029544760,\t0.714623208443215030,\t0.714588232070327400,\t\n0.714553253910968690,\t0.714518273965227270,\t0.714483292233190070,\t0.714448308714944800,\t0.714413323410578280,\t0.714378336320178890,\t0.714343347443833540,\t0.714308356781629960,\t\n0.714273364333655070,\t0.714238370099997130,\t0.714203374080743190,\t0.714168376275980840,\t0.714133376685797350,\t0.714098375310280640,\t0.714063372149517980,\t0.714028367203596640,\t\n0.713993360472604640,\t0.713958351956629160,\t0.713923341655757990,\t0.713888329570077970,\t0.713853315699677580,\t0.713818300044643860,\t0.713783282605064410,\t0.713748263381026370,\t\n0.713713242372618020,\t0.713678219579926610,\t0.713643195003039520,\t0.713608168642044240,\t0.713573140497028800,\t0.713538110568080590,\t0.713503078855287080,\t0.713468045358735540,\t\n0.713433010078514120,\t0.713397973014710310,\t0.713362934167411480,\t0.713327893536705000,\t0.713292851122679150,\t0.713257806925421180,\t0.713222760945018350,\t0.713187713181558940,\t\n0.713152663635130190,\t0.713117612305819830,\t0.713082559193715100,\t0.713047504298904400,\t0.713012447621474750,\t0.712977389161514100,\t0.712942328919109690,\t0.712907266894349690,\t\n0.712872203087321580,\t0.712837137498112950,\t0.712802070126811180,\t0.712767000973504540,\t0.712731930038280390,\t0.712696857321226340,\t0.712661782822429980,\t0.712626706541979350,\t\n0.712591628479962050,\t0.712556548636465340,\t0.712521467011577480,\t0.712486383605386080,\t0.712451298417978610,\t0.712416211449442670,\t0.712381122699866530,\t0.712346032169337450,\t\n0.712310939857943470,\t0.712275845765771630,\t0.712240749892910640,\t0.712205652239447760,\t0.712170552805470700,\t0.712135451591066950,\t0.712100348596324870,\t0.712065243821331960,\t\n0.712030137266175920,\t0.711995028930944240,\t0.711959918815725290,\t0.711924806920606560,\t0.711889693245675530,\t0.711854577791020460,\t0.711819460556729070,\t0.711784341542888940,\t\n0.711749220749587690,\t0.711714098176913670,\t0.711678973824954490,\t0.711643847693797850,\t0.711608719783531240,\t0.711573590094243150,\t0.711538458626021050,\t0.711503325378952890,\t\n0.711468190353126030,\t0.711433053548629070,\t0.711397914965549380,\t0.711362774603975010,\t0.711327632463993330,\t0.711292488545692820,\t0.711257342849161200,\t0.711222195374485830,\t\n0.711187046121755320,\t0.711151895091057250,\t0.711116742282479340,\t0.711081587696109410,\t0.711046431332035710,\t0.711011273190345960,\t0.710976113271127970,\t0.710940951574469460,\t\n0.710905788100458900,\t0.710870622849183790,\t0.710835455820732150,\t0.710800287015191600,\t0.710765116432650500,\t0.710729944073196780,\t0.710694769936918160,\t0.710659594023902330,\t\n0.710624416334237790,\t0.710589236868012120,\t0.710554055625313490,\t0.710518872606229370,\t0.710483687810848360,\t0.710448501239258180,\t0.710413312891546410,\t0.710378122767801660,\t\n0.710342930868111510,\t0.710307737192564130,\t0.710272541741247100,\t0.710237344514249140,\t0.710202145511657610,\t0.710166944733560790,\t0.710131742180046380,\t0.710096537851202750,\t\n0.710061331747117940,\t0.710026123867879780,\t0.709990914213575960,\t0.709955702784295210,\t0.709920489580125100,\t0.709885274601153800,\t0.709850057847469020,\t0.709814839319159450,\t\n0.709779619016312810,\t0.709744396939016700,\t0.709709173087359920,\t0.709673947461430310,\t0.709638720061315790,\t0.709603490887104060,\t0.709568259938884060,\t0.709533027216743380,\t\n0.709497792720770070,\t0.709462556451051940,\t0.709427318407677810,\t0.709392078590735390,\t0.709356837000312710,\t0.709321593636497720,\t0.709286348499378990,\t0.709251101589044360,\t\n0.709215852905581980,\t0.709180602449079770,\t0.709145350219626320,\t0.709110096217309360,\t0.709074840442217020,\t0.709039582894437800,\t0.709004323574059630,\t0.708969062481170640,\t\n0.708933799615858780,\t0.708898534978212650,\t0.708863268568320160,\t0.708828000386269590,\t0.708792730432148630,\t0.708757458706046120,\t0.708722185208050080,\t0.708686909938248450,\t\n0.708651632896729280,\t0.708616354083581370,\t0.708581073498892660,\t0.708545791142751070,\t0.708510507015244870,\t0.708475221116462550,\t0.708439933446492360,\t0.708404644005422250,\t\n0.708369352793340120,\t0.708334059810335040,\t0.708298765056494810,\t0.708263468531907250,\t0.708228170236661400,\t0.708192870170845200,\t0.708157568334546790,\t0.708122264727854110,\t\n0.708086959350856080,\t0.708051652203640640,\t0.708016343286296150,\t0.707981032598910430,\t0.707945720141572420,\t0.707910405914370040,\t0.707875089917391790,\t0.707839772150725470,\t\n0.707804452614460010,\t0.707769131308683350,\t0.707733808233483970,\t0.707698483388949700,\t0.707663156775169560,\t0.707627828392231480,\t0.707592498240223630,\t0.707557166319234820,\t\n0.707521832629352980,\t0.707486497170666690,\t0.707451159943263800,\t0.707415820947233210,\t0.707380480182663200,\t0.707345137649641910,\t0.707309793348257500,\t0.707274447278599010,\t\n0.707239099440754250,\t0.707203749834811820,\t0.707168398460859770,\t0.707133045318986910,\t0.707097690409281500,\t0.707062333731831800,\t0.707026975286726090,\t0.706991615074053170,\t\n0.706956253093901200,\t0.706920889346358330,\t0.706885523831513480,\t0.706850156549454820,\t0.706814787500270820,\t0.706779416684049530,\t0.706744044100880100,\t0.706708669750850450,\t\n0.706673293634049070,\t0.706637915750564230,\t0.706602536100484960,\t0.706567154683899300,\t0.706531771500895630,\t0.706496386551562440,\t0.706460999835988420,\t0.706425611354261960,\t\n0.706390221106471540,\t0.706354829092705190,\t0.706319435313052080,\t0.706284039767600460,\t0.706248642456438260,\t0.706213243379654960,\t0.706177842537338400,\t0.706142439929577260,\t\n0.706107035556459820,\t0.706071629418075000,\t0.706036221514511180,\t0.706000811845856720,\t0.705965400412199910,\t0.705929987213629980,\t0.705894572250235110,\t0.705859155522103770,\t\n0.705823737029324220,\t0.705788316771985610,\t0.705752894750176220,\t0.705717470963984630,\t0.705682045413498990,\t0.705646618098808580,\t0.705611189020001640,\t0.705575758177166780,\t\n0.705540325570392150,\t0.705504891199767000,\t0.705469455065379720,\t0.705434017167318350,\t0.705398577505672360,\t0.705363136080529920,\t0.705327692891979500,\t0.705292247940109700,\t\n0.705256801225009560,\t0.705221352746767340,\t0.705185902505471750,\t0.705150450501211170,\t0.705114996734074740,\t0.705079541204150840,\t0.705044083911528060,\t0.705008624856294790,\t\n0.704973164038540160,\t0.704937701458352770,\t0.704902237115821010,\t0.704866771011033450,\t0.704831303144079160,\t0.704795833515046710,\t0.704760362124024380,\t0.704724888971101300,\t\n0.704689414056366200,\t0.704653937379907450,\t0.704618458941813520,\t0.704582978742173790,\t0.704547496781076640,\t0.704512013058610660,\t0.704476527574864450,\t0.704441040329927160,\t\n0.704405551323887380,\t0.704370060556833600,\t0.704334568028854410,\t0.704299073740039080,\t0.704263577690476090,\t0.704228079880254150,\t0.704192580309461750,\t0.704157078978188130,\t\n0.704121575886521800,\t0.704086071034551340,\t0.704050564422365910,\t0.704015056050054100,\t0.703979545917704620,\t0.703944034025405950,\t0.703908520373247580,\t0.703873004961317880,\t\n0.703837487789705670,\t0.703801968858499440,\t0.703766448167788550,\t0.703730925717661600,\t0.703695401508207310,\t0.703659875539514260,\t0.703624347811671710,\t0.703588818324768380,\t\n0.703553287078892970,\t0.703517754074134080,\t0.703482219310581080,\t0.703446682788322560,\t0.703411144507447240,\t0.703375604468043810,\t0.703340062670201660,\t0.703304519114009490,\t\n0.703268973799555550,\t0.703233426726929570,\t0.703197877896220010,\t0.703162327307515710,\t0.703126774960905250,\t0.703091220856478240,\t0.703055664994323150,\t0.703020107374528910,\t\n0.702984547997184130,\t0.702948986862378280,\t0.702913423970199850,\t0.702877859320737990,\t0.702842292914081180,\t0.702806724750318800,\t0.702771154829539670,\t0.702735583151832710,\t\n0.702700009717286520,\t0.702664434525990590,\t0.702628857578033510,\t0.702593278873503980,\t0.702557698412491600,\t0.702522116195084980,\t0.702486532221373030,\t0.702450946491444460,\t\n0.702415359005388870,\t0.702379769763294860,\t0.702344178765251350,\t0.702308586011347160,\t0.702272991501671770,\t0.702237395236314010,\t0.702201797215362690,\t0.702166197438906510,\t\n0.702130595907035190,\t0.702094992619837430,\t0.702059387577402160,\t0.702023780779818090,\t0.701988172227174910,\t0.701952561919561240,\t0.701916949857065870,\t0.701881336039778540,\t\n0.701845720467787700,\t0.701810103141182750,\t0.701774484060052050,\t0.701738863224485640,\t0.701703240634571900,\t0.701667616290400090,\t0.701631990192059020,\t0.701596362339638180,\t\n0.701560732733226500,\t0.701525101372913020,\t0.701489468258786440,\t0.701453833390936480,\t0.701418196769451940,\t0.701382558394421870,\t0.701346918265935200,\t0.701311276384081420,\t\n0.701275632748949550,\t0.701239987360628200,\t0.701204340219207300,\t0.701168691324775440,\t0.701133040677421990,\t0.701097388277235560,\t0.701061734124305950,\t0.701026078218721980,\t\n0.700990420560572810,\t0.700954761149947370,\t0.700919099986935250,\t0.700883437071625370,\t0.700847772404107010,\t0.700812105984468750,\t0.700776437812800630,\t0.700740767889191480,\t\n0.700705096213730340,\t0.700669422786506120,\t0.700633747607608660,\t0.700598070677126870,\t0.700562391995149910,\t0.700526711561766600,\t0.700491029377066870,\t0.700455345441139520,\t\n0.700419659754073610,\t0.700383972315958720,\t0.700348283126884020,\t0.700312592186938530,\t0.700276899496211300,\t0.700241205054792150,\t0.700205508862769890,\t0.700169810920233890,\t\n0.700134111227273090,\t0.700098409783977300,\t0.700062706590435460,\t0.700027001646736920,\t0.699991294952970520,\t0.699955586509226290,\t0.699919876315592940,\t0.699884164372160060,\t\n0.699848450679016350,\t0.699812735236251760,\t0.699777018043955420,\t0.699741299102216270,\t0.699705578411124130,\t0.699669855970768030,\t0.699634131781237350,\t0.699598405842621010,\t\n0.699562678155008940,\t0.699526948718490190,\t0.699491217533154020,\t0.699455484599089570,\t0.699419749916386670,\t0.699384013485134350,\t0.699348275305422100,\t0.699312535377338840,\t\n0.699276793700974510,\t0.699241050276418140,\t0.699205305103759220,\t0.699169558183086790,\t0.699133809514490670,\t0.699098059098060110,\t0.699062306933884050,\t0.699026553022052520,\t\n0.698990797362654570,\t0.698955039955779680,\t0.698919280801516880,\t0.698883519899956230,\t0.698847757251186640,\t0.698811992855297830,\t0.698776226712378600,\t0.698740458822519230,\t\n0.698704689185808640,\t0.698668917802336310,\t0.698633144672191400,\t0.698597369795463940,\t0.698561593172242980,\t0.698525814802618110,\t0.698490034686678470,\t0.698454252824513900,\t\n0.698418469216213870,\t0.698382683861867530,\t0.698346896761564250,\t0.698311107915393970,\t0.698275317323445940,\t0.698239524985809320,\t0.698203730902574150,\t0.698167935073829680,\t\n0.698132137499665410,\t0.698096338180170470,\t0.698060537115435030,\t0.698024734305548230,\t0.697988929750599560,\t0.697953123450678280,\t0.697917315405874430,\t0.697881505616277380,\t\n0.697845694081976610,\t0.697809880803061170,\t0.697774065779621420,\t0.697738249011746530,\t0.697702430499525960,\t0.697666610243048990,\t0.697630788242405760,\t0.697594964497685650,\t\n0.697559139008977810,\t0.697523311776372390,\t0.697487482799958760,\t0.697451652079826400,\t0.697415819616064580,\t0.697379985408763560,\t0.697344149458012490,\t0.697308311763901180,\t\n0.697272472326518680,\t0.697236631145955240,\t0.697200788222300360,\t0.697164943555643510,\t0.697129097146073850,\t0.697093248993681860,\t0.697057399098556800,\t0.697021547460788150,\t\n0.696985694080465400,\t0.696949838957678590,\t0.696913982092517310,\t0.696878123485070720,\t0.696842263135429190,\t0.696806401043681970,\t0.696770537209918660,\t0.696734671634228750,\t\n0.696698804316702500,\t0.696662935257429280,\t0.696627064456498690,\t0.696591191913999990,\t0.696555317630023760,\t0.696519441604659280,\t0.696483563837996140,\t0.696447684330123720,\t\n0.696411803081132490,\t0.696375920091111710,\t0.696340035360151100,\t0.696304148888340140,\t0.696268260675769080,\t0.696232370722527420,\t0.696196479028704520,\t0.696160585594390650,\t\n0.696124690419675400,\t0.696088793504648470,\t0.696052894849399140,\t0.696016994454017880,\t0.695981092318594170,\t0.695945188443217730,\t0.695909282827978040,\t0.695873375472965460,\t\n0.695837466378269380,\t0.695801555543979710,\t0.695765642970185730,\t0.695729728656978020,\t0.695693812604445960,\t0.695657894812679480,\t0.695621975281767830,\t0.695586054011801620,\t\n0.695550131002870220,\t0.695514206255063550,\t0.695478279768470990,\t0.695442351543183120,\t0.695406421579289220,\t0.695370489876879110,\t0.695334556436043030,\t0.695298621256870590,\t\n0.695262684339451600,\t0.695226745683875550,\t0.695190805290232920,\t0.695154863158613300,\t0.695118919289106520,\t0.695082973681802160,\t0.695047026336790720,\t0.695011077254161670,\t\n0.694975126434004940,\t0.694939173876410020,\t0.694903219581467500,\t0.694867263549266980,\t0.694831305779898270,\t0.694795346273450960,\t0.694759385030015660,\t0.694723422049681850,\t\n0.694687457332539230,\t0.694651490878678170,\t0.694615522688188490,\t0.694579552761159900,\t0.694543581097682220,\t0.694507607697845810,\t0.694471632561740490,\t0.694435655689455980,\t\n0.694399677081082080,\t0.694363696736709280,\t0.694327714656427290,\t0.694291730840325920,\t0.694255745288494990,\t0.694219758001024980,\t0.694183768978005490,\t0.694147778219526670,\t\n0.694111785725678110,\t0.694075791496550410,\t0.694039795532233160,\t0.694003797832816180,\t0.693967798398389960,\t0.693931797229044300,\t0.693895794324869030,\t0.693859789685954080,\t\n0.693823783312389920,\t0.693787775204266380,\t0.693751765361673380,\t0.693715753784700520,\t0.693679740473438720,\t0.693643725427977480,\t0.693607708648407040,\t0.693571690134816900,\t\n0.693535669887297870,\t0.693499647905939760,\t0.693463624190832410,\t0.693427598742065830,\t0.693391571559730410,\t0.693355542643916190,\t0.693319511994712980,\t0.693283479612210820,\t\n0.693247445496500190,\t0.693211409647670920,\t0.693175372065812920,\t0.693139332751016690,\t0.693103291703372150,\t0.693067248922969450,\t0.693031204409898290,\t0.692995158164249390,\t\n0.692959110186112670,\t0.692923060475578060,\t0.692887009032735590,\t0.692850955857675870,\t0.692814900950488810,\t0.692778844311264350,\t0.692742785940092640,\t0.692706725837064160,\t\n0.692670664002268950,\t0.692634600435797050,\t0.692598535137738390,\t0.692562468108183560,\t0.692526399347222710,\t0.692490328854945440,\t0.692454256631442670,\t0.692418182676804330,\t\n0.692382106991120460,\t0.692346029574481100,\t0.692309950426976960,\t0.692273869548697850,\t0.692237786939734150,\t0.692201702600175660,\t0.692165616530113210,\t0.692129528729636730,\t\n0.692093439198836370,\t0.692057347937802160,\t0.692021254946624920,\t0.691985160225394470,\t0.691949063774201180,\t0.691912965593134870,\t0.691876865682286570,\t0.691840764041745990,\t\n0.691804660671603180,\t0.691768555571949050,\t0.691732448742873540,\t0.691696340184467020,\t0.691660229896819190,\t0.691624117880021090,\t0.691588004134162770,\t0.691551888659334480,\t\n0.691515771455626040,\t0.691479652523128600,\t0.691443531861931970,\t0.691407409472126530,\t0.691371285353802210,\t0.691335159507050050,\t0.691299031931959960,\t0.691262902628622220,\t\n0.691226771597126980,\t0.691190638837565150,\t0.691154504350026680,\t0.691118368134601700,\t0.691082230191381040,\t0.691046090520454850,\t0.691009949121913380,\t0.690973805995846790,\t\n0.690937661142345890,\t0.690901514561500950,\t0.690865366253402220,\t0.690829216218139750,\t0.690793064455804460,\t0.690756910966486610,\t0.690720755750276470,\t0.690684598807264070,\t\n0.690648440137540560,\t0.690612279741195990,\t0.690576117618320610,\t0.690539953769004680,\t0.690503788193339130,\t0.690467620891414220,\t0.690431451863320110,\t0.690395281109147160,\t\n0.690359108628986310,\t0.690322934422927580,\t0.690286758491061360,\t0.690250580833478460,\t0.690214401450269130,\t0.690178220341523870,\t0.690142037507332610,\t0.690105852947786590,\t\n0.690069666662976090,\t0.690033478652991250,\t0.689997288917922450,\t0.689961097457860830,\t0.689924904272896430,\t0.689888709363119630,\t0.689852512728620910,\t0.689816314369491200,\t\n0.689780114285820640,\t0.689743912477699840,\t0.689707708945218930,\t0.689671503688469080,\t0.689635296707540420,\t0.689599088002523230,\t0.689562877573508650,\t0.689526665420586830,\t\n0.689490451543848470,\t0.689454235943383510,\t0.689418018619283310,\t0.689381799571638140,\t0.689345578800538480,\t0.689309356306074480,\t0.689273132088337400,\t0.689236906147417510,\t\n0.689200678483405380,\t0.689164449096391300,\t0.689128217986466280,\t0.689091985153720720,\t0.689055750598245310,\t0.689019514320130200,\t0.688983276319466540,\t0.688947036596344710,\t\n0.688910795150854960,\t0.688874551983088560,\t0.688838307093135760,\t0.688802060481087270,\t0.688765812147033250,\t0.688729562091065060,\t0.688693310313272860,\t0.688657056813747560,\t\n0.688620801592579100,\t0.688584544649859080,\t0.688548285985677630,\t0.688512025600125590,\t0.688475763493292980,\t0.688439499665271400,\t0.688403234116151120,\t0.688366966846022610,\t\n0.688330697854976470,\t0.688294427143103850,\t0.688258154710495230,\t0.688221880557241210,\t0.688185604683432150,\t0.688149327089159320,\t0.688113047774513320,\t0.688076766739584290,\t\n0.688040483984463710,\t0.688004199509241850,\t0.687967913314009530,\t0.687931625398857110,\t0.687895335763875960,\t0.687859044409156460,\t0.687822751334789320,\t0.687786456540865010,\t\n0.687750160027474910,\t0.687713861794709390,\t0.687677561842659160,\t0.687641260171414800,\t0.687604956781067480,\t0.687568651671707890,\t0.687532344843426620,\t0.687496036296314170,\t\n0.687459726030461900,\t0.687423414045960410,\t0.687387100342900070,\t0.687350784921372250,\t0.687314467781467430,\t0.687278148923276540,\t0.687241828346889850,\t0.687205506052398940,\t\n0.687169182039894300,\t0.687132856309466740,\t0.687096528861206650,\t0.687060199695205600,\t0.687023868811553970,\t0.686987536210342810,\t0.686951201891662370,\t0.686914865855604240,\t\n0.686878528102259020,\t0.686842188631717420,\t0.686805847444070140,\t0.686769504539408440,\t0.686733159917823020,\t0.686696813579404370,\t0.686660465524244090,\t0.686624115752432540,\t\n0.686587764264060760,\t0.686551411059219240,\t0.686515056137999460,\t0.686478699500492010,\t0.686442341146787930,\t0.686405981076977590,\t0.686369619291152700,\t0.686333255789403740,\t\n0.686296890571821640,\t0.686260523638496880,\t0.686224154989521270,\t0.686187784624985200,\t0.686151412544979690,\t0.686115038749595340,\t0.686078663238923750,\t0.686042286013055390,\t\n0.686005907072081420,\t0.685969526416092320,\t0.685933144045179690,\t0.685896759959434330,\t0.685860374158946630,\t0.685823986643808280,\t0.685787597414110110,\t0.685751206469942810,\t\n0.685714813811397320,\t0.685678419438565000,\t0.685642023351536570,\t0.685605625550403270,\t0.685569226035255500,\t0.685532824806184940,\t0.685496421863282300,\t0.685460017206638740,\t\n0.685423610836344730,\t0.685387202752491990,\t0.685350792955171210,\t0.685314381444473540,\t0.685277968220489590,\t0.685241553283310930,\t0.685205136633028510,\t0.685168718269732910,\t\n0.685132298193515840,\t0.685095876404468010,\t0.685059452902680440,\t0.685023027688243970,\t0.684986600761250290,\t0.684950172121789990,\t0.684913741769954340,\t0.684877309705834050,\t\n0.684840875929520700,\t0.684804440441105220,\t0.684768003240678660,\t0.684731564328331820,\t0.684695123704156310,\t0.684658681368242930,\t0.684622237320682950,\t0.684585791561566960,\t\n0.684549344090986890,\t0.684512894909033550,\t0.684476444015797550,\t0.684439991411370690,\t0.684403537095843890,\t0.684367081069308330,\t0.684330623331854680,\t0.684294163883574890,\t\n0.684257702724559550,\t0.684221239854900020,\t0.684184775274687020,\t0.684148308984012470,\t0.684111840982967180,\t0.684075371271642200,\t0.684038899850128560,\t0.684002426718517850,\t\n0.683965951876901230,\t0.683929475325369630,\t0.683892997064014070,\t0.683856517092926270,\t0.683820035412197270,\t0.683783552021917760,\t0.683747066922179790,\t0.683710580113074170,\t\n0.683674091594691950,\t0.683637601367124370,\t0.683601109430462930,\t0.683564615784798880,\t0.683528120430223150,\t0.683491623366826890,\t0.683455124594701810,\t0.683418624113939050,\t\n0.683382121924629660,\t0.683345618026864550,\t0.683309112420735780,\t0.683272605106334250,\t0.683236096083751240,\t0.683199585353077680,\t0.683163072914405370,\t0.683126558767825460,\t\n0.683090042913429120,\t0.683053525351307370,\t0.683017006081552140,\t0.682980485104254350,\t0.682943962419505060,\t0.682907438027396290,\t0.682870911928018740,\t0.682834384121464020,\t\n0.682797854607822940,\t0.682761323387187650,\t0.682724790459648960,\t0.682688255825298350,\t0.682651719484226760,\t0.682615181436526220,\t0.682578641682287660,\t0.682542100221602550,\t\n0.682505557054561840,\t0.682469012181257550,\t0.682432465601780840,\t0.682395917316222840,\t0.682359367324674730,\t0.682322815627228520,\t0.682286262223975370,\t0.682249707115006210,\t\n0.682213150300412960,\t0.682176591780287000,\t0.682140031554719580,\t0.682103469623801640,\t0.682066905987625430,\t0.682030340646281870,\t0.681993773599862570,\t0.681957204848458450,\t\n0.681920634392161660,\t0.681884062231063240,\t0.681847488365254770,\t0.681810912794827080,\t0.681774335519872540,\t0.681737756540482190,\t0.681701175856747390,\t0.681664593468759410,\t\n0.681628009376610170,\t0.681591423580390930,\t0.681554836080192850,\t0.681518246876107960,\t0.681481655968227520,\t0.681445063356642900,\t0.681408469041445250,\t0.681371873022726840,\t\n0.681335275300578690,\t0.681298675875092410,\t0.681262074746359030,\t0.681225471914470800,\t0.681188867379519000,\t0.681152261141594880,\t0.681115653200789820,\t0.681079043557196060,\t\n0.681042432210904660,\t0.681005819162007090,\t0.680969204410594720,\t0.680932587956759590,\t0.680895969800593080,\t0.680859349942186550,\t0.680822728381631380,\t0.680786105119019710,\t\n0.680749480154442810,\t0.680712853487991820,\t0.680676225119759120,\t0.680639595049835730,\t0.680602963278313490,\t0.680566329805283420,\t0.680529694630837900,\t0.680493057755068080,\t\n0.680456419178065650,\t0.680419778899921890,\t0.680383136920728940,\t0.680346493240578170,\t0.680309847859561170,\t0.680273200777769200,\t0.680236551995294650,\t0.680199901512228640,\t\n0.680163249328662900,\t0.680126595444688680,\t0.680089939860398340,\t0.680053282575883160,\t0.680016623591234380,\t0.679979962906544390,\t0.679943300521904550,\t0.679906636437406340,\t\n0.679869970653141360,\t0.679833303169201650,\t0.679796633985678800,\t0.679759963102664290,\t0.679723290520249600,\t0.679686616238526890,\t0.679649940257587740,\t0.679613262577523750,\t\n0.679576583198426290,\t0.679539902120387620,\t0.679503219343499220,\t0.679466534867852800,\t0.679429848693539730,\t0.679393160820652380,\t0.679356471249282000,\t0.679319779979520200,\t\n0.679283087011459340,\t0.679246392345190690,\t0.679209695980806050,\t0.679172997918396910,\t0.679136298158055540,\t0.679099596699873410,\t0.679062893543942340,\t0.679026188690353690,\t\n0.678989482139199960,\t0.678952773890572400,\t0.678916063944562940,\t0.678879352301263060,\t0.678842638960765130,\t0.678805923923160530,\t0.678769207188541170,\t0.678732488756998430,\t\n0.678695768628624800,\t0.678659046803511750,\t0.678622323281750760,\t0.678585598063434330,\t0.678548871148653810,\t0.678512142537501250,\t0.678475412230067910,\t0.678438680226446380,\t\n0.678401946526728140,\t0.678365211131005120,\t0.678328474039368690,\t0.678291735251911330,\t0.678254994768724640,\t0.678218252589900540,\t0.678181508715530510,\t0.678144763145706930,\t\n0.678108015880521500,\t0.678071266920066030,\t0.678034516264432120,\t0.677997763913712140,\t0.677961009867997790,\t0.677924254127381000,\t0.677887496691953140,\t0.677850737561806920,\t\n0.677813976737033810,\t0.677777214217725410,\t0.677740450003974430,\t0.677703684095872230,\t0.677666916493510850,\t0.677630147196981780,\t0.677593376206377720,\t0.677556603521790260,\t\n0.677519829143311210,\t0.677483053071032290,\t0.677446275305046090,\t0.677409495845444190,\t0.677372714692318630,\t0.677335931845760800,\t0.677299147305863600,\t0.677262361072718530,\t\n0.677225573146417400,\t0.677188783527052250,\t0.677151992214715340,\t0.677115199209498360,\t0.677078404511493150,\t0.677041608120792280,\t0.677004810037487360,\t0.676968010261670420,\t\n0.676931208793433160,\t0.676894405632868070,\t0.676857600780067070,\t0.676820794235122090,\t0.676783985998124840,\t0.676747176069167790,\t0.676710364448342980,\t0.676673551135742120,\t\n0.676636736131457140,\t0.676599919435580620,\t0.676563101048204270,\t0.676526280969420140,\t0.676489459199320020,\t0.676452635737996630,\t0.676415810585541680,\t0.676378983742046750,\t\n0.676342155207604770,\t0.676305324982307330,\t0.676268493066246700,\t0.676231659459514470,\t0.676194824162203330,\t0.676157987174405230,\t0.676121148496212080,\t0.676084308127715810,\t\n0.676047466069009010,\t0.676010622320183610,\t0.675973776881331640,\t0.675936929752544930,\t0.675900080933916180,\t0.675863230425537200,\t0.675826378227500250,\t0.675789524339896920,\t\n0.675752668762820140,\t0.675715811496361730,\t0.675678952540613830,\t0.675642091895668040,\t0.675605229561617500,\t0.675568365538553820,\t0.675531499826569020,\t0.675494632425755690,\t\n0.675457763336205770,\t0.675420892558011410,\t0.675384020091264640,\t0.675347145936058050,\t0.675310270092483570,\t0.675273392560633460,\t0.675236513340599530,\t0.675199632432474610,\t\n0.675162749836350720,\t0.675125865552319790,\t0.675088979580473980,\t0.675052091920905980,\t0.675015202573707840,\t0.674978311538971700,\t0.674941418816789370,\t0.674904524407253790,\t\n0.674867628310456990,\t0.674830730526490790,\t0.674793831055448100,\t0.674756929897420750,\t0.674720027052501110,\t0.674683122520781110,\t0.674646216302353660,\t0.674609308397310590,\t\n0.674572398805744270,\t0.674535487527746720,\t0.674498574563410670,\t0.674461659912828140,\t0.674424743576091500,\t0.674387825553292800,\t0.674350905844524730,\t0.674313984449879440,\t\n0.674277061369449200,\t0.674240136603325930,\t0.674203210151602670,\t0.674166282014371450,\t0.674129352191724100,\t0.674092420683753750,\t0.674055487490552330,\t0.674018552612212220,\t\n0.673981616048825340,\t0.673944677800484840,\t0.673907737867282640,\t0.673870796249311010,\t0.673833852946662090,\t0.673796907959428930,\t0.673759961287703430,\t0.673723012931577990,\t\n0.673686062891144740,\t0.673649111166496730,\t0.673612157757725870,\t0.673575202664924650,\t0.673538245888185010,\t0.673501287427600180,\t0.673464327283262110,\t0.673427365455262830,\t\n0.673390401943695590,\t0.673353436748652220,\t0.673316469870225310,\t0.673279501308506890,\t0.673242531063590110,\t0.673205559135566900,\t0.673168585524529850,\t0.673131610230571000,\t\n0.673094633253783380,\t0.673057654594259260,\t0.673020674252091000,\t0.672983692227370760,\t0.672946708520191560,\t0.672909723130645570,\t0.672872736058825360,\t0.672835747304822870,\t\n0.672798756868731470,\t0.672761764750643090,\t0.672724770950650310,\t0.672687775468845280,\t0.672650778305321160,\t0.672613779460170090,\t0.672576778933484220,\t0.672539776725356700,\t\n0.672502772835879780,\t0.672465767265145950,\t0.672428760013247250,\t0.672391751080277160,\t0.672354740466327590,\t0.672317728171491160,\t0.672280714195860110,\t0.672243698539527590,\t\n0.672206681202585870,\t0.672169662185127410,\t0.672132641487244500,\t0.672095619109030260,\t0.672058595050576970,\t0.672021569311977320,\t0.671984541893323240,\t0.671947512794708210,\t\n0.671910482016224500,\t0.671873449557964130,\t0.671836415420020480,\t0.671799379602485810,\t0.671762342105452710,\t0.671725302929013330,\t0.671688262073261160,\t0.671651219538288210,\t\n0.671614175324187320,\t0.671577129431050630,\t0.671540081858971400,\t0.671503032608042010,\t0.671465981678355030,\t0.671428929070002730,\t0.671391874783078490,\t0.671354818817674560,\t\n0.671317761173883530,\t0.671280701851797890,\t0.671243640851510670,\t0.671206578173114470,\t0.671169513816701420,\t0.671132447782364920,\t0.671095380070197310,\t0.671058310680291310,\t\n0.671021239612739070,\t0.670984166867634180,\t0.670947092445068890,\t0.670910016345135810,\t0.670872938567927400,\t0.670835859113536940,\t0.670798777982056780,\t0.670761695173579750,\t\n0.670724610688198110,\t0.670687524526005330,\t0.670650436687093680,\t0.670613347171555960,\t0.670576255979484560,\t0.670539163110972840,\t0.670502068566113160,\t0.670464972344998470,\t\n0.670427874447720900,\t0.670390774874373930,\t0.670353673625050050,\t0.670316570699841740,\t0.670279466098842260,\t0.670242359822144080,\t0.670205251869840040,\t0.670168142242022590,\t\n0.670131030938785120,\t0.670093917960220000,\t0.670056803306420150,\t0.670019686977477820,\t0.669982568973486740,\t0.669945449294539250,\t0.669908327940728080,\t0.669871204912145800,\t\n0.669834080208885800,\t0.669796953831040650,\t0.669759825778703080,\t0.669722696051965550,\t0.669685564650921660,\t0.669648431575663890,\t0.669611296826284730,\t0.669574160402877540,\t\n0.669537022305535130,\t0.669499882534350000,\t0.669462741089414950,\t0.669425597970823350,\t0.669388453178667690,\t0.669351306713040990,\t0.669314158574035640,\t0.669277008761745230,\t\n0.669239857276262230,\t0.669202704117679680,\t0.669165549286090070,\t0.669128392781586760,\t0.669091234604262670,\t0.669054074754210410,\t0.669016913231522570,\t0.668979750036292840,\t\n0.668942585168613710,\t0.668905418628577770,\t0.668868250416278620,\t0.668831080531808840,\t0.668793908975261480,\t0.668756735746728890,\t0.668719560846304790,\t0.668682384274081890,\t\n0.668645206030152870,\t0.668608026114610680,\t0.668570844527548670,\t0.668533661269059550,\t0.668496476339236260,\t0.668459289738171480,\t0.668422101465958820,\t0.668384911522690860,\t\n0.668347719908460650,\t0.668310526623360770,\t0.668273331667484930,\t0.668236135040925830,\t0.668198936743775950,\t0.668161736776129110,\t0.668124535138077900,\t0.668087331829715360,\t\n0.668050126851134190,\t0.668012920202428080,\t0.667975711883689540,\t0.667938501895011800,\t0.667901290236487480,\t0.667864076908210260,\t0.667826861910272850,\t0.667789645242768290,\t\n0.667752426905789290,\t0.667715206899429540,\t0.667677985223781740,\t0.667640761878939060,\t0.667603536864994070,\t0.667566310182040600,\t0.667529081830171340,\t0.667491851809479340,\t\n0.667454620120057520,\t0.667417386761999350,\t0.667380151735397660,\t0.667342915040345370,\t0.667305676676936080,\t0.667268436645262700,\t0.667231194945418160,\t0.667193951577495280,\t\n0.667156706541587870,\t0.667119459837788640,\t0.667082211466190840,\t0.667044961426887180,\t0.667007709719971360,\t0.666970456345536310,\t0.666933201303675170,\t0.666895944594480650,\t\n0.666858686218046560,\t0.666821426174465830,\t0.666784164463831490,\t0.666746901086236470,\t0.666709636041774470,\t0.666672369330538420,\t0.666635100952621020,\t0.666597830908116310,\t\n0.666560559197116990,\t0.666523285819716320,\t0.666486010776007000,\t0.666448734066083070,\t0.666411455690037240,\t0.666374175647962750,\t0.666336893939952550,\t0.666299610566100430,\t\n0.666262325526499330,\t0.666225038821242400,\t0.666187750450422560,\t0.666150460414133620,\t0.666113168712468510,\t0.666075875345520490,\t0.666038580313382480,\t0.666001283616148300,\t\n0.665963985253910980,\t0.665926685226763350,\t0.665889383534799320,\t0.665852080178111820,\t0.665814775156794210,\t0.665777468470939220,\t0.665740160120640970,\t0.665702850105992280,\t\n0.665665538427086420,\t0.665628225084016420,\t0.665590910076876210,\t0.665553593405758810,\t0.665516275070757280,\t0.665478955071964750,\t0.665441633409475260,\t0.665404310083381630,\t\n0.665366985093777230,\t0.665329658440754980,\t0.665292330124408910,\t0.665255000144832080,\t0.665217668502117830,\t0.665180335196358890,\t0.665143000227649610,\t0.665105663596082700,\t\n0.665068325301751420,\t0.665030985344749580,\t0.664993643725170220,\t0.664956300443106940,\t0.664918955498652430,\t0.664881608891900840,\t0.664844260622945330,\t0.664806910691879140,\t\n0.664769559098795320,\t0.664732205843787890,\t0.664694850926950020,\t0.664657494348374960,\t0.664620136108155850,\t0.664582776206386840,\t0.664545414643160750,\t0.664508051418571170,\t\n0.664470686532711130,\t0.664433319985674790,\t0.664395951777555060,\t0.664358581908445100,\t0.664321210378439050,\t0.664283837187629960,\t0.664246462336111290,\t0.664209085823976090,\t\n0.664171707651318610,\t0.664134327818231780,\t0.664096946324809200,\t0.664059563171143900,\t0.664022178357329910,\t0.663984791883460600,\t0.663947403749629240,\t0.663910013955929080,\t\n0.663872622502454270,\t0.663835229389297840,\t0.663797834616553280,\t0.663760438184313850,\t0.663723040092673690,\t0.663685640341725950,\t0.663648238931563660,\t0.663610835862281200,\t\n0.663573431133971710,\t0.663536024746728570,\t0.663498616700645030,\t0.663461206995815230,\t0.663423795632332450,\t0.663386382610290260,\t0.663348967929781710,\t0.663311551590901050,\t\n0.663274133593741540,\t0.663236713938396670,\t0.663199292624959800,\t0.663161869653524970,\t0.663124445024185330,\t0.663087018737034790,\t0.663049590792166190,\t0.663012161189674100,\t\n0.662974729929651450,\t0.662937297012191730,\t0.662899862437389080,\t0.662862426205336860,\t0.662824988316128460,\t0.662787548769857350,\t0.662750107566617560,\t0.662712664706502700,\t\n0.662675220189606010,\t0.662637774016020980,\t0.662600326185841860,\t0.662562876699162030,\t0.662525425556074850,\t0.662487972756673820,\t0.662450518301053280,\t0.662413062189306290,\t\n0.662375604421526760,\t0.662338144997807850,\t0.662300683918243930,\t0.662263221182928240,\t0.662225756791954610,\t0.662188290745416190,\t0.662150823043407330,\t0.662113353686021420,\t\n0.662075882673351820,\t0.662038410005492910,\t0.662000935682537930,\t0.661963459704580590,\t0.661925982071714270,\t0.661888502784033330,\t0.661851021841631140,\t0.661813539244601400,\t\n0.661776054993037490,\t0.661738569087033770,\t0.661701081526683610,\t0.661663592312080720,\t0.661626101443318570,\t0.661588608920491540,\t0.661551114743692880,\t0.661513618913016520,\t\n0.661476121428555720,\t0.661438622290404950,\t0.661401121498657710,\t0.661363619053407240,\t0.661326114954748020,\t0.661288609202773660,\t0.661251101797577730,\t0.661213592739253620,\t\n0.661176082027895910,\t0.661138569663597960,\t0.661101055646453720,\t0.661063539976556420,\t0.661026022654000570,\t0.660988503678879740,\t0.660950983051287630,\t0.660913460771317630,\t\n0.660875936839064430,\t0.660838411254621390,\t0.660800884018082240,\t0.660763355129540650,\t0.660725824589090900,\t0.660688292396826580,\t0.660650758552841280,\t0.660613223057229360,\t\n0.660575685910084420,\t0.660538147111500270,\t0.660500606661570400,\t0.660463064560389390,\t0.660425520808050610,\t0.660387975404648110,\t0.660350428350275350,\t0.660312879645026830,\t\n0.660275329288996130,\t0.660237777282277060,\t0.660200223624963220,\t0.660162668317149200,\t0.660125111358928480,\t0.660087552750394990,\t0.660049992491642310,\t0.660012430582764930,\t\n0.659974867023856550,\t0.659937301815010980,\t0.659899734956321820,\t0.659862166447883540,\t0.659824596289789960,\t0.659787024482134550,\t0.659749451025011920,\t0.659711875918515540,\t\n0.659674299162739560,\t0.659636720757777570,\t0.659599140703724050,\t0.659561559000672700,\t0.659523975648717450,\t0.659486390647951890,\t0.659448803998470720,\t0.659411215700367540,\t\n0.659373625753736260,\t0.659336034158670590,\t0.659298440915265240,\t0.659260846023613790,\t0.659223249483810170,\t0.659185651295948080,\t0.659148051460122230,\t0.659110449976426320,\t\n0.659072846844953820,\t0.659035242065799660,\t0.658997635639057330,\t0.658960027564820860,\t0.658922417843184060,\t0.658884806474241520,\t0.658847193458086950,\t0.658809578794814500,\t\n0.658771962484517640,\t0.658734344527291290,\t0.658696724923229060,\t0.658659103672424970,\t0.658621480774972850,\t0.658583856230967380,\t0.658546230040502170,\t0.658508602203671470,\t\n0.658470972720568870,\t0.658433341591289190,\t0.658395708815926240,\t0.658358074394573610,\t0.658320438327326120,\t0.658282800614277570,\t0.658245161255522020,\t0.658207520251153140,\t\n0.658169877601265880,\t0.658132233305953940,\t0.658094587365311350,\t0.658056939779432030,\t0.658019290548410680,\t0.657981639672341020,\t0.657943987151317410,\t0.657906332985433330,\t\n0.657868677174783920,\t0.657831019719462670,\t0.657793360619563950,\t0.657755699875181450,\t0.657718037486410110,\t0.657680373453343630,\t0.657642707776075920,\t0.657605040454701690,\t\n0.657567371489314880,\t0.657529700880009730,\t0.657492028626879940,\t0.657454354730020450,\t0.657416679189524960,\t0.657379002005487820,\t0.657341323178002870,\t0.657303642707165010,\t\n0.657265960593067970,\t0.657228276835805980,\t0.657190591435473090,\t0.657152904392163890,\t0.657115215705972530,\t0.657077525376993150,\t0.657039833405319570,\t0.657002139791046820,\t\n0.656964444534268610,\t0.656926747635079410,\t0.656889049093572930,\t0.656851348909844200,\t0.656813647083987040,\t0.656775943616095480,\t0.656738238506264340,\t0.656700531754587650,\t\n0.656662823361159660,\t0.656625113326074210,\t0.656587401649426420,\t0.656549688331310000,\t0.656511973371819440,\t0.656474256771048540,\t0.656436538529092340,\t0.656398818646044880,\t\n0.656361097122000300,\t0.656323373957052650,\t0.656285649151296950,\t0.656247922704827120,\t0.656210194617737440,\t0.656172464890121930,\t0.656134733522075630,\t0.656097000513692460,\t\n0.656059265865066470,\t0.656021529576292670,\t0.655983791647465010,\t0.655946052078677950,\t0.655908310870025320,\t0.655870568021602370,\t0.655832823533502920,\t0.655795077405821440,\t\n0.655757329638651850,\t0.655719580232089320,\t0.655681829186227860,\t0.655644076501161850,\t0.655606322176985330,\t0.655568566213793220,\t0.655530808611679780,\t0.655493049370739380,\t\n0.655455288491065930,\t0.655417525972754600,\t0.655379761815899520,\t0.655341996020594620,\t0.655304228586935040,\t0.655266459515014940,\t0.655228688804928790,\t0.655190916456770410,\t\n0.655153142470635160,\t0.655115366846617090,\t0.655077589584810550,\t0.655039810685309700,\t0.655002030148209680,\t0.654964247973604640,\t0.654926464161588840,\t0.654888678712256640,\t\n0.654850891625703090,\t0.654813102902022210,\t0.654775312541308720,\t0.654737520543656530,\t0.654699726909160900,\t0.654661931637915860,\t0.654624134730016130,\t0.654586336185555620,\t\n0.654548536004629700,\t0.654510734187332410,\t0.654472930733757900,\t0.654435125644001410,\t0.654397318918157110,\t0.654359510556319580,\t0.654321700558582850,\t0.654283888925042300,\t\n0.654246075655791960,\t0.654208260750926420,\t0.654170444210539940,\t0.654132626034727660,\t0.654094806223583850,\t0.654056984777202980,\t0.654019161695679310,\t0.653981336979108100,\t\n0.653943510627583490,\t0.653905682641200190,\t0.653867853020052240,\t0.653830021764235100,\t0.653792188873842830,\t0.653754354348969780,\t0.653716518189711220,\t0.653678680396161280,\t\n0.653640840968414680,\t0.653602999906565670,\t0.653565157210709510,\t0.653527312880940460,\t0.653489466917352990,\t0.653451619320041700,\t0.653413770089101620,\t0.653375919224627120,\t\n0.653338066726712800,\t0.653300212595453010,\t0.653262356830943030,\t0.653224499433277090,\t0.653186640402549920,\t0.653148779738855880,\t0.653110917442290220,\t0.653073053512947200,\t\n0.653035187950921300,\t0.652997320756307680,\t0.652959451929200800,\t0.652921581469695260,\t0.652883709377885420,\t0.652845835653866670,\t0.652807960297733360,\t0.652770083309580080,\t\n0.652732204689501330,\t0.652694324437592450,\t0.652656442553947610,\t0.652618559038661730,\t0.652580673891829170,\t0.652542787113545190,\t0.652504898703904270,\t0.652467008663001110,\t\n0.652429116990930090,\t0.652391223687786680,\t0.652353328753665140,\t0.652315432188659950,\t0.652277533992866480,\t0.652239634166379200,\t0.652201732709292830,\t0.652163829621701830,\t\n0.652125924903701580,\t0.652088018555386450,\t0.652050110576851360,\t0.652012200968190570,\t0.651974289729499670,\t0.651936376860873130,\t0.651898462362405560,\t0.651860546234191430,\t\n0.651822628476326440,\t0.651784709088904730,\t0.651746788072021350,\t0.651708865425770560,\t0.651670941150248040,\t0.651633015245548060,\t0.651595087711765660,\t0.651557158548995100,\t\n0.651519227757332060,\t0.651481295336870940,\t0.651443361287706190,\t0.651405425609933420,\t0.651367488303647100,\t0.651329549368942050,\t0.651291608805912750,\t0.651253666614654780,\t\n0.651215722795262630,\t0.651177777347831220,\t0.651139830272455030,\t0.651101881569229550,\t0.651063931238249460,\t0.651025979279609480,\t0.650988025693404190,\t0.650950070479729190,\t\n0.650912113638679070,\t0.650874155170348630,\t0.650836195074832480,\t0.650798233352226090,\t0.650760270002624150,\t0.650722305026121270,\t0.650684338422812920,\t0.650646370192793700,\t\n0.650608400336158630,\t0.650570428853002090,\t0.650532455743420000,\t0.650494481007506620,\t0.650456504645357090,\t0.650418526657066010,\t0.650380547042728850,\t0.650342565802440430,\t\n0.650304582936295450,\t0.650266598444388830,\t0.650228612326815950,\t0.650190624583671610,\t0.650152635215050620,\t0.650114644221047810,\t0.650076651601758650,\t0.650038657357277950,\t\n0.650000661487700190,\t0.649962663993121080,\t0.649924664873635430,\t0.649886664129338040,\t0.649848661760323630,\t0.649810657766688000,\t0.649772652148525640,\t0.649734644905931690,\t\n0.649696636039000740,\t0.649658625547828610,\t0.649620613432509870,\t0.649582599693139580,\t0.649544584329812550,\t0.649506567342624240,\t0.649468548731669590,\t0.649430528497043640,\t\n0.649392506638840960,\t0.649354483157157380,\t0.649316458052087600,\t0.649278431323726530,\t0.649240402972169230,\t0.649202372997511160,\t0.649164341399847240,\t0.649126308179272080,\t\n0.649088273335881480,\t0.649050236869770150,\t0.649012198781033330,\t0.648974159069765630,\t0.648936117736062860,\t0.648898074780019820,\t0.648860030201731550,\t0.648821984001292870,\t\n0.648783936178799590,\t0.648745886734346520,\t0.648707835668028700,\t0.648669782979940930,\t0.648631728670179040,\t0.648593672738837830,\t0.648555615186012460,\t0.648517556011797720,\t\n0.648479495216289340,\t0.648441432799582330,\t0.648403368761771400,\t0.648365303102952370,\t0.648327235823220050,\t0.648289166922669580,\t0.648251096401396000,\t0.648213024259494900,\t\n0.648174950497061310,\t0.648136875114190270,\t0.648098798110976810,\t0.648060719487516650,\t0.648022639243904690,\t0.647984557380236080,\t0.647946473896605760,\t0.647908388793109640,\t\n0.647870302069842530,\t0.647832213726899590,\t0.647794123764375840,\t0.647756032182367210,\t0.647717938980968410,\t0.647679844160274350,\t0.647641747720381080,\t0.647603649661383510,\t\n0.647565549983376790,\t0.647527448686455840,\t0.647489345770716600,\t0.647451241236253970,\t0.647413135083163230,\t0.647375027311539400,\t0.647336917921478290,\t0.647298806913074840,\t\n0.647260694286424410,\t0.647222580041621920,\t0.647184464178763300,\t0.647146346697943580,\t0.647108227599257900,\t0.647070106882801310,\t0.647031984548669840,\t0.646993860596958400,\t\n0.646955735027762050,\t0.646917607841176580,\t0.646879479037297140,\t0.646841348616219000,\t0.646803216578037190,\t0.646765082922847620,\t0.646726947650745340,\t0.646688810761825720,\t\n0.646650672256183780,\t0.646612532133915340,\t0.646574390395115770,\t0.646536247039880110,\t0.646498102068303490,\t0.646459955480481960,\t0.646421807276510550,\t0.646383657456484630,\t\n0.646345506020499230,\t0.646307352968650490,\t0.646269198301033240,\t0.646231042017743060,\t0.646192884118874880,\t0.646154724604524830,\t0.646116563474788070,\t0.646078400729759420,\t\n0.646040236369535230,\t0.646002070394210430,\t0.645963902803880390,\t0.645925733598640250,\t0.645887562778586170,\t0.645849390343813170,\t0.645811216294416730,\t0.645773040630491790,\t\n0.645734863352134700,\t0.645696684459440400,\t0.645658503952504460,\t0.645620321831421820,\t0.645582138096288840,\t0.645543952747200440,\t0.645505765784252120,\t0.645467577207539110,\t\n0.645429387017157460,\t0.645391195213202320,\t0.645353001795768930,\t0.645314806764953340,\t0.645276610120850690,\t0.645238411863556570,\t0.645200211993166130,\t0.645162010509775400,\t\n0.645123807413479630,\t0.645085602704374430,\t0.645047396382554820,\t0.645009188448117170,\t0.644970978901156400,\t0.644932767741768220,\t0.644894554970047880,\t0.644856340586091430,\t\n0.644818124589994100,\t0.644779906981851390,\t0.644741687761758660,\t0.644703466929812060,\t0.644665244486106850,\t0.644627020430738050,\t0.644588794763802150,\t0.644550567485394190,\t\n0.644512338595609860,\t0.644474108094544420,\t0.644435875982293900,\t0.644397642258953800,\t0.644359406924619460,\t0.644321169979386380,\t0.644282931423350690,\t0.644244691256607660,\t\n0.644206449479252980,\t0.644168206091381700,\t0.644129961093090400,\t0.644091714484474000,\t0.644053466265628430,\t0.644015216436648830,\t0.643976964997631570,\t0.643938711948671920,\t\n0.643900457289865450,\t0.643862201021307420,\t0.643823943143094320,\t0.643785683655321410,\t0.643747422558083810,\t0.643709159851478140,\t0.643670895535599420,\t0.643632629610543570,\t\n0.643594362076405750,\t0.643556092933282420,\t0.643517822181268850,\t0.643479549820460740,\t0.643441275850953340,\t0.643403000272843140,\t0.643364723086225390,\t0.643326444291195900,\t\n0.643288163887849930,\t0.643249881876283850,\t0.643211598256593130,\t0.643173313028873370,\t0.643135026193220050,\t0.643096737749729530,\t0.643058447698497070,\t0.643020156039618150,\t\n0.642981862773189250,\t0.642943567899305620,\t0.642905271418063080,\t0.642866973329557110,\t0.642828673633883960,\t0.642790372331139110,\t0.642752069421418380,\t0.642713764904817130,\t\n0.642675458781431840,\t0.642637151051357880,\t0.642598841714691060,\t0.642560530771526750,\t0.642522218221961430,\t0.642483904066090680,\t0.642445588304010110,\t0.642407270935815180,\t\n0.642368951961602490,\t0.642330631381467290,\t0.642292309195505280,\t0.642253985403812840,\t0.642215660006485440,\t0.642177333003618900,\t0.642139004395308580,\t0.642100674181651180,\t\n0.642062342362742070,\t0.642024008938677060,\t0.641985673909551750,\t0.641947337275462600,\t0.641908999036505110,\t0.641870659192775080,\t0.641832317744368110,\t0.641793974691380660,\t\n0.641755630033908340,\t0.641717283772046840,\t0.641678935905891870,\t0.641640586435539890,\t0.641602235361086400,\t0.641563882682627320,\t0.641525528400258230,\t0.641487172514075610,\t\n0.641448815024175060,\t0.641410455930652160,\t0.641372095233603500,\t0.641333732933124570,\t0.641295369029311280,\t0.641257003522259340,\t0.641218636412065110,\t0.641180267698824300,\t\n0.641141897382632830,\t0.641103525463586290,\t0.641065151941781370,\t0.641026776817313460,\t0.640988400090278580,\t0.640950021760772430,\t0.640911641828891600,\t0.640873260294731570,\t\n0.640834877158388380,\t0.640796492419957730,\t0.640758106079536200,\t0.640719718137219400,\t0.640681328593102890,\t0.640642937447283400,\t0.640604544699856620,\t0.640566150350918460,\t\n0.640527754400564640,\t0.640489356848891740,\t0.640450957695995470,\t0.640412556941971740,\t0.640374154586916270,\t0.640335750630925850,\t0.640297345074095970,\t0.640258937916522770,\t\n0.640220529158301850,\t0.640182118799530020,\t0.640143706840302860,\t0.640105293280716410,\t0.640066878120866380,\t0.640028461360849450,\t0.639990043000761450,\t0.639951623040697970,\t\n0.639913201480755810,\t0.639874778321030570,\t0.639836353561618500,\t0.639797927202615080,\t0.639759499244117350,\t0.639721069686220670,\t0.639682638529021410,\t0.639644205772615270,\t\n0.639605771417098850,\t0.639567335462568050,\t0.639528897909118930,\t0.639490458756847180,\t0.639452018005849720,\t0.639413575656222140,\t0.639375131708060600,\t0.639336686161460890,\t\n0.639298239016519830,\t0.639259790273333240,\t0.639221339931996700,\t0.639182887992607250,\t0.639144434455260590,\t0.639105979320052750,\t0.639067522587079660,\t0.639029064256438240,\t\n0.638990604328223970,\t0.638952142802533320,\t0.638913679679461890,\t0.638875214959106600,\t0.638836748641563370,\t0.638798280726928120,\t0.638759811215296900,\t0.638721340106766510,\t\n0.638682867401432760,\t0.638644393099391920,\t0.638605917200739670,\t0.638567439705572950,\t0.638528960613987670,\t0.638490479926079990,\t0.638451997641945710,\t0.638413513761681870,\t\n0.638375028285384170,\t0.638336541213148530,\t0.638298052545071990,\t0.638259562281250250,\t0.638221070421779670,\t0.638182576966755950,\t0.638144081916276250,\t0.638105585270436260,\t\n0.638067087029332350,\t0.638028587193060440,\t0.637990085761717340,\t0.637951582735398980,\t0.637913078114201730,\t0.637874571898221390,\t0.637836064087555000,\t0.637797554682298480,\t\n0.637759043682547990,\t0.637720531088399660,\t0.637682016899950190,\t0.637643501117295840,\t0.637604983740532320,\t0.637566464769756650,\t0.637527944205064870,\t0.637489422046553230,\t\n0.637450898294317670,\t0.637412372948455210,\t0.637373846009061880,\t0.637335317476233840,\t0.637296787350067230,\t0.637258255630658970,\t0.637219722318105090,\t0.637181187412501850,\t\n0.637142650913945290,\t0.637104112822532540,\t0.637065573138359430,\t0.637027031861522430,\t0.636988488992117460,\t0.636949944530241670,\t0.636911398475990990,\t0.636872850829461430,\t\n0.636834301590750160,\t0.636795750759953090,\t0.636757198337166710,\t0.636718644322486930,\t0.636680088716010890,\t0.636641531517834650,\t0.636602972728054550,\t0.636564412346766640,\t\n0.636525850374068170,\t0.636487286810054950,\t0.636448721654823580,\t0.636410154908470080,\t0.636371586571091500,\t0.636333016642783970,\t0.636294445123643860,\t0.636255872013767320,\t\n0.636217297313251380,\t0.636178721022192310,\t0.636140143140686340,\t0.636101563668829750,\t0.636062982606719560,\t0.636024399954451920,\t0.635985815712122870,\t0.635947229879829660,\t\n0.635908642457668430,\t0.635870053445735550,\t0.635831462844127280,\t0.635792870652940540,\t0.635754276872271710,\t0.635715681502217240,\t0.635677084542873190,\t0.635638485994336700,\t\n0.635599885856704020,\t0.635561284130071740,\t0.635522680814535780,\t0.635484075910193510,\t0.635445469417140970,\t0.635406861335474860,\t0.635368251665291210,\t0.635329640406687270,\t\n0.635291027559759300,\t0.635252413124603340,\t0.635213797101316760,\t0.635175179489995580,\t0.635136560290736510,\t0.635097939503635690,\t0.635059317128790380,\t0.635020693166296830,\t\n0.634982067616251420,\t0.634943440478750620,\t0.634904811753891460,\t0.634866181441770430,\t0.634827549542483770,\t0.634788916056127970,\t0.634750280982800170,\t0.634711644322596750,\t\n0.634673006075614170,\t0.634634366241948800,\t0.634595724821697790,\t0.634557081814957400,\t0.634518437221824110,\t0.634479791042394940,\t0.634441143276766370,\t0.634402493925035000,\t\n0.634363842987296980,\t0.634325190463649660,\t0.634286536354189410,\t0.634247880659012830,\t0.634209223378216170,\t0.634170564511896790,\t0.634131904060150960,\t0.634093242023075490,\t\n0.634054578400766510,\t0.634015913193321400,\t0.633977246400836520,\t0.633938578023408580,\t0.633899908061133830,\t0.633861236514109640,\t0.633822563382432370,\t0.633783888666198280,\t\n0.633745212365504850,\t0.633706534480448450,\t0.633667855011125660,\t0.633629173957632850,\t0.633590491320067510,\t0.633551807098525990,\t0.633513121293104890,\t0.633474433903900680,\t\n0.633435744931010620,\t0.633397054374531310,\t0.633358362234559320,\t0.633319668511191040,\t0.633280973204524030,\t0.633242276314654570,\t0.633203577841679350,\t0.633164877785694860,\t\n0.633126176146798560,\t0.633087472925086820,\t0.633048768120656360,\t0.633010061733603640,\t0.632971353764026130,\t0.632932644212020220,\t0.632893933077682380,\t0.632855220361109970,\t\n0.632816506062399590,\t0.632777790181648040,\t0.632739072718951470,\t0.632700353674407690,\t0.632661633048112960,\t0.632622910840164200,\t0.632584187050657780,\t0.632545461679691280,\t\n0.632506734727361080,\t0.632468006193764090,\t0.632429276078996680,\t0.632390544383156450,\t0.632351811106339870,\t0.632313076248643750,\t0.632274339810164680,\t0.632235601791000020,\t\n0.632196862191246380,\t0.632158121011000220,\t0.632119378250359130,\t0.632080633909419490,\t0.632041887988278430,\t0.632003140487032210,\t0.631964391405778540,\t0.631925640744613770,\t\n0.631886888503635060,\t0.631848134682938660,\t0.631809379282622260,\t0.631770622302782470,\t0.631731863743516200,\t0.631693103604919810,\t0.631654341887091020,\t0.631615578590126400,\t\n0.631576813714122890,\t0.631538047259176950,\t0.631499279225386180,\t0.631460509612847280,\t0.631421738421656720,\t0.631382965651912210,\t0.631344191303710220,\t0.631305415377147790,\t\n0.631266637872321510,\t0.631227858789328970,\t0.631189078128266750,\t0.631150295889231770,\t0.631111512072320860,\t0.631072726677631370,\t0.631033939705260230,\t0.630995151155304130,\t\n0.630956361027859790,\t0.630917569323024900,\t0.630878776040896150,\t0.630839981181570360,\t0.630801184745144350,\t0.630762386731715700,\t0.630723587141381100,\t0.630684785974237490,\t\n0.630645983230381680,\t0.630607178909911140,\t0.630568373012922680,\t0.630529565539513000,\t0.630490756489779700,\t0.630451945863819470,\t0.630413133661729460,\t0.630374319883606260,\t\n0.630335504529547560,\t0.630296687599650070,\t0.630257869094010940,\t0.630219049012726740,\t0.630180227355895290,\t0.630141404123613300,\t0.630102579315977680,\t0.630063752933085360,\t\n0.630024924975034040,\t0.629986095441920410,\t0.629947264333841410,\t0.629908431650894050,\t0.629869597393175830,\t0.629830761560783770,\t0.629791924153814350,\t0.629753085172365500,\t\n0.629714244616533910,\t0.629675402486416740,\t0.629636558782110670,\t0.629597713503713630,\t0.629558866651322210,\t0.629520018225033670,\t0.629481168224944710,\t0.629442316651153240,\t\n0.629403463503755980,\t0.629364608782850050,\t0.629325752488532180,\t0.629286894620900370,\t0.629248035180051240,\t0.629209174166082020,\t0.629170311579089650,\t0.629131447419171710,\t\n0.629092581686425230,\t0.629053714380946930,\t0.629014845502834600,\t0.628975975052185280,\t0.628937103029096000,\t0.628898229433663580,\t0.628859354265985940,\t0.628820477526159880,\t\n0.628781599214282670,\t0.628742719330451120,\t0.628703837874763140,\t0.628664954847315550,\t0.628626070248205600,\t0.628587184077530110,\t0.628548296335387000,\t0.628509407021873080,\t\n0.628470516137085710,\t0.628431623681121710,\t0.628392729654079000,\t0.628353834056054380,\t0.628314936887144900,\t0.628276038147448480,\t0.628237137837061920,\t0.628198235956082480,\t\n0.628159332504607090,\t0.628120427482733780,\t0.628081520890559350,\t0.628042612728181180,\t0.628003702995696080,\t0.627964791693202070,\t0.627925878820796090,\t0.627886964378575390,\t\n0.627848048366636990,\t0.627809130785078830,\t0.627770211633997710,\t0.627731290913491220,\t0.627692368623656070,\t0.627653444764590400,\t0.627614519336391010,\t0.627575592339155390,\t\n0.627536663772980450,\t0.627497733637964240,\t0.627458801934203670,\t0.627419868661795670,\t0.627380933820838370,\t0.627341997411428820,\t0.627303059433664270,\t0.627264119887641640,\t\n0.627225178773459070,\t0.627186236091213600,\t0.627147291841002490,\t0.627108346022922870,\t0.627069398637072670,\t0.627030449683549040,\t0.626991499162449230,\t0.626952547073870380,\t\n0.626913593417910420,\t0.626874638194666600,\t0.626835681404236070,\t0.626796723046716080,\t0.626757763122204550,\t0.626718801630798630,\t0.626679838572595350,\t0.626640873947692860,\t\n0.626601907756188180,\t0.626562939998178690,\t0.626523970673761530,\t0.626484999783034850,\t0.626446027326095670,\t0.626407053303041360,\t0.626368077713969070,\t0.626329100558976950,\t\n0.626290121838162020,\t0.626251141551621870,\t0.626212159699453430,\t0.626173176281755060,\t0.626134191298623690,\t0.626095204750156790,\t0.626056216636451610,\t0.626017226957606200,\t\n0.625978235713717690,\t0.625939242904883340,\t0.625900248531201080,\t0.625861252592768370,\t0.625822255089682480,\t0.625783256022040550,\t0.625744255389940830,\t0.625705253193480470,\t\n0.625666249432757060,\t0.625627244107867630,\t0.625588237218910330,\t0.625549228765982620,\t0.625510218749181670,\t0.625471207168604940,\t0.625432194024350570,\t0.625393179316515610,\t\n0.625354163045197750,\t0.625315145210494140,\t0.625276125812503030,\t0.625237104851321560,\t0.625198082327047320,\t0.625159058239777580,\t0.625120032589610460,\t0.625081005376643350,\t\n0.625041976600973380,\t0.625002946262698810,\t0.624963914361916780,\t0.624924880898725110,\t0.624885845873220820,\t0.624846809285502180,\t0.624807771135666660,\t0.624768731423811620,\t\n0.624729690150034430,\t0.624690647314433360,\t0.624651602917105640,\t0.624612556958148990,\t0.624573509437660550,\t0.624534460355738670,\t0.624495409712480740,\t0.624456357507984120,\t\n0.624417303742346390,\t0.624378248415665690,\t0.624339191528039410,\t0.624300133079564780,\t0.624261073070340180,\t0.624222011500462860,\t0.624182948370030520,\t0.624143883679140530,\t\n0.624104817427891030,\t0.624065749616379620,\t0.624026680244703760,\t0.623987609312960930,\t0.623948536821249400,\t0.623909462769666520,\t0.623870387158310000,\t0.623831309987277090,\t\n0.623792231256666270,\t0.623753150966574910,\t0.623714069117100700,\t0.623674985708340900,\t0.623635900740394100,\t0.623596814213357440,\t0.623557726127328400,\t0.623518636482405460,\t\n0.623479545278685880,\t0.623440452516267450,\t0.623401358195247560,\t0.623362262315724560,\t0.623323164877795930,\t0.623284065881559490,\t0.623244965327112380,\t0.623205863214553290,\t\n0.623166759543979490,\t0.623127654315488890,\t0.623088547529178750,\t0.623049439185147550,\t0.623010329283492760,\t0.622971217824312200,\t0.622932104807703220,\t0.622892990233764320,\t\n0.622853874102592960,\t0.622814756414286630,\t0.622775637168943690,\t0.622736516366661610,\t0.622697394007538320,\t0.622658270091671180,\t0.622619144619158680,\t0.622580017590098290,\t\n0.622540889004587930,\t0.622501758862724960,\t0.622462627164607980,\t0.622423493910334360,\t0.622384359100002120,\t0.622345222733708510,\t0.622306084811552250,\t0.622266945333630810,\t\n0.622227804300041990,\t0.622188661710883270,\t0.622149517566253250,\t0.622110371866249400,\t0.622071224610969750,\t0.622032075800511560,\t0.621992925434973640,\t0.621953773514453360,\t\n0.621914620039048180,\t0.621875465008856930,\t0.621836308423977080,\t0.621797150284506330,\t0.621757990590542380,\t0.621718829342183810,\t0.621679666539528220,\t0.621640502182673420,\t\n0.621601336271716990,\t0.621562168806757630,\t0.621522999787892830,\t0.621483829215220500,\t0.621444657088838230,\t0.621405483408844720,\t0.621366308175337560,\t0.621327131388414560,\t\n0.621287953048173300,\t0.621248773154712610,\t0.621209591708129950,\t0.621170408708523030,\t0.621131224155990310,\t0.621092038050629620,\t0.621052850392538770,\t0.621013661181815560,\t\n0.620974470418558470,\t0.620935278102865200,\t0.620896084234833780,\t0.620856888814561690,\t0.620817691842147860,\t0.620778493317689750,\t0.620739293241285410,\t0.620700091613032410,\t\n0.620660888433029690,\t0.620621683701374600,\t0.620582477418165410,\t0.620543269583499590,\t0.620504060197475950,\t0.620464849260192190,\t0.620425636771746000,\t0.620386422732235990,\t\n0.620347207141759950,\t0.620307990000415920,\t0.620268771308301600,\t0.620229551065515690,\t0.620190329272155780,\t0.620151105928320230,\t0.620111881034106420,\t0.620072654589613360,\t\n0.620033426594938540,\t0.619994197050180220,\t0.619954965955436090,\t0.619915733310804850,\t0.619876499116384320,\t0.619837263372272520,\t0.619798026078567150,\t0.619758787235367150,\t\n0.619719546842770200,\t0.619680304900874330,\t0.619641061409777370,\t0.619601816369578120,\t0.619562569780374270,\t0.619523321642263650,\t0.619484071955345160,\t0.619444820719716400,\t\n0.619405567935475630,\t0.619366313602720540,\t0.619327057721550060,\t0.619287800292061990,\t0.619248541314354360,\t0.619209280788525000,\t0.619170018714672810,\t0.619130755092895610,\t\n0.619091489923291550,\t0.619052223205958320,\t0.619012954940994950,\t0.618973685128499150,\t0.618934413768569170,\t0.618895140861302820,\t0.618855866406798900,\t0.618816590405155350,\t\n0.618777312856469970,\t0.618738033760841690,\t0.618698753118368310,\t0.618659470929148080,\t0.618620187193278710,\t0.618580901910859350,\t0.618541615081987680,\t0.618502326706761970,\t\n0.618463036785280140,\t0.618423745317640990,\t0.618384452303942460,\t0.618345157744282890,\t0.618305861638760000,\t0.618266563987472930,\t0.618227264790519370,\t0.618187964047997580,\t\n0.618148661760005600,\t0.618109357926642340,\t0.618070052548005620,\t0.618030745624193470,\t0.617991437155304800,\t0.617952127141437550,\t0.617912815582689960,\t0.617873502479159950,\t\n0.617834187830946570,\t0.617794871638147720,\t0.617755553900861680,\t0.617716234619186460,\t0.617676913793220870,\t0.617637591423063180,\t0.617598267508811420,\t0.617558942050563610,\t\n0.617519615048418790,\t0.617480286502475000,\t0.617440956412830480,\t0.617401624779583160,\t0.617362291602832180,\t0.617322956882675470,\t0.617283620619210940,\t0.617244282812537850,\t\n0.617204943462753900,\t0.617165602569957670,\t0.617126260134247100,\t0.617086916155721200,\t0.617047570634478020,\t0.617008223570615910,\t0.616968874964232920,\t0.616929524815428070,\t\n0.616890173124299390,\t0.616850819890945370,\t0.616811465115463810,\t0.616772108797954080,\t0.616732750938513980,\t0.616693391537242010,\t0.616654030594236290,\t0.616614668109595750,\t\n0.616575304083418540,\t0.616535938515803130,\t0.616496571406847440,\t0.616457202756650720,\t0.616417832565311020,\t0.616378460832926360,\t0.616339087559595990,\t0.616299712745417730,\t\n0.616260336390490380,\t0.616220958494911650,\t0.616181579058781010,\t0.616142198082196390,\t0.616102815565256260,\t0.616063431508058650,\t0.616024045910702920,\t0.615984658773287120,\t\n0.615945270095909600,\t0.615905879878668520,\t0.615866488121663220,\t0.615827094824991540,\t0.615787699988752270,\t0.615748303613043340,\t0.615708905697963990,\t0.615669506243612390,\t\n0.615630105250086660,\t0.615590702717485950,\t0.615551298645908630,\t0.615511893035452950,\t0.615472485886217170,\t0.615433077198300650,\t0.615393666971801310,\t0.615354255206817860,\t\n0.615314841903448430,\t0.615275427061792280,\t0.615236010681947550,\t0.615196592764012730,\t0.615157173308086060,\t0.615117752314266910,\t0.615078329782653310,\t0.615038905713343960,\t\n0.614999480106436900,\t0.614960052962031490,\t0.614920624280226090,\t0.614881194061118630,\t0.614841762304808580,\t0.614802329011394090,\t0.614762894180973850,\t0.614723457813646010,\t\n0.614684019909509830,\t0.614644580468663660,\t0.614605139491205990,\t0.614565696977235180,\t0.614526252926850370,\t0.614486807340150040,\t0.614447360217232670,\t0.614407911558196520,\t\n0.614368461363140940,\t0.614329009632164190,\t0.614289556365364970,\t0.614250101562841430,\t0.614210645224693040,\t0.614171187351018060,\t0.614131727941915060,\t0.614092266997482430,\t\n0.614052804517819520,\t0.614013340503024470,\t0.613973874953195890,\t0.613934407868432790,\t0.613894939248833760,\t0.613855469094497400,\t0.613815997405522060,\t0.613776524182007010,\t\n0.613737049424050610,\t0.613697573131751660,\t0.613658095305208430,\t0.613618615944520270,\t0.613579135049785560,\t0.613539652621102990,\t0.613500168658571040,\t0.613460683162288970,\t\n0.613421196132355240,\t0.613381707568868450,\t0.613342217471926960,\t0.613302725841630480,\t0.613263232678077030,\t0.613223737981365200,\t0.613184241751594360,\t0.613144743988862980,\t\n0.613105244693269660,\t0.613065743864912970,\t0.613026241503892180,\t0.612986737610305750,\t0.612947232184252620,\t0.612907725225830920,\t0.612868216735140360,\t0.612828706712279180,\t\n0.612789195157346310,\t0.612749682070440000,\t0.612710167451659960,\t0.612670651301104430,\t0.612631133618872340,\t0.612591614405061930,\t0.612552093659772920,\t0.612512571383103670,\t\n0.612473047575152640,\t0.612433522236019320,\t0.612393995365802300,\t0.612354466964600160,\t0.612314937032511610,\t0.612275405569636000,\t0.612235872576071930,\t0.612196338051918090,\t\n0.612156801997273070,\t0.612117264412236460,\t0.612077725296906630,\t0.612038184651382490,\t0.611998642475762630,\t0.611959098770146430,\t0.611919553534632450,\t0.611880006769319640,\t\n0.611840458474306460,\t0.611800908649692500,\t0.611761357295576240,\t0.611721804412056260,\t0.611682249999232150,\t0.611642694057202400,\t0.611603136586065800,\t0.611563577585921170,\t\n0.611524017056867870,\t0.611484454999004500,\t0.611444891412429970,\t0.611405326297242980,\t0.611365759653542900,\t0.611326191481428530,\t0.611286621780998680,\t0.611247050552351840,\t\n0.611207477795587710,\t0.611167903510804970,\t0.611128327698102440,\t0.611088750357578810,\t0.611049171489333580,\t0.611009591093465420,\t0.610970009170073270,\t0.610930425719255710,\t\n0.610890840741112550,\t0.610851254235742270,\t0.610811666203243450,\t0.610772076643715800,\t0.610732485557258010,\t0.610692892943969000,\t0.610653298803947360,\t0.610613703137292910,\t\n0.610574105944104110,\t0.610534507224480110,\t0.610494906978519490,\t0.610455305206321850,\t0.610415701907986110,\t0.610376097083610960,\t0.610336490733295320,\t0.610296882857138790,\t\n0.610257273455240060,\t0.610217662527698050,\t0.610178050074611680,\t0.610138436096080430,\t0.610098820592203110,\t0.610059203563078410,\t0.610019585008806040,\t0.609979964929484700,\t\n0.609940343325213520,\t0.609900720196091100,\t0.609861095542217120,\t0.609821469363690530,\t0.609781841660610220,\t0.609742212433074910,\t0.609702581681184520,\t0.609662949405037620,\t\n0.609623315604733370,\t0.609583680280370470,\t0.609544043432048600,\t0.609504405059866810,\t0.609464765163923890,\t0.609425123744318790,\t0.609385480801151180,\t0.609345836334519890,\t\n0.609306190344523600,\t0.609266542831262250,\t0.609226893794834520,\t0.609187243235339570,\t0.609147591152876090,\t0.609107937547544110,\t0.609068282419442220,\t0.609028625768669560,\t\n0.608988967595325060,\t0.608949307899508520,\t0.608909646681318640,\t0.608869983940854680,\t0.608830319678215440,\t0.608790653893500730,\t0.608750986586809370,\t0.608711317758240500,\t\n0.608671647407893040,\t0.608631975535866790,\t0.608592302142260680,\t0.608552627227173740,\t0.608512950790704890,\t0.608473272832954050,\t0.608433593354019920,\t0.608393912354001530,\t\n0.608354229832998690,\t0.608314545791110330,\t0.608274860228435580,\t0.608235173145073360,\t0.608195484541123490,\t0.608155794416684990,\t0.608116102771856900,\t0.608076409606738260,\t\n0.608036714921428970,\t0.607997018716027850,\t0.607957320990634150,\t0.607917621745346910,\t0.607877920980265940,\t0.607838218695490040,\t0.607798514891118690,\t0.607758809567250700,\t\n0.607719102723986100,\t0.607679394361423600,\t0.607639684479662430,\t0.607599973078802310,\t0.607560260158942270,\t0.607520545720181550,\t0.607480829762619080,\t0.607441112286355000,\t\n0.607401393291488010,\t0.607361672778117590,\t0.607321950746342760,\t0.607282227196263240,\t0.607242502127978260,\t0.607202775541586970,\t0.607163047437188410,\t0.607123317814882490,\t\n0.607083586674768360,\t0.607043854016945270,\t0.607004119841512150,\t0.606964384148569120,\t0.606924646938215130,\t0.606884908210549190,\t0.606845167965671340,\t0.606805426203680500,\t\n0.606765682924676140,\t0.606725938128757190,\t0.606686191816023790,\t0.606646443986574970,\t0.606606694640509870,\t0.606566943777927860,\t0.606527191398928740,\t0.606487437503611670,\t\n0.606447682092076000,\t0.606407925164420770,\t0.606368166720746000,\t0.606328406761150960,\t0.606288645285734780,\t0.606248882294596720,\t0.606209117787836820,\t0.606169351765553980,\t\n0.606129584227847570,\t0.606089815174817530,\t0.606050044606562870,\t0.606010272523183180,\t0.605970498924777390,\t0.605930723811445750,\t0.605890947183287290,\t0.605851169040401480,\t\n0.605811389382887370,\t0.605771608210845080,\t0.605731825524373880,\t0.605692041323573020,\t0.605652255608541750,\t0.605612468379380210,\t0.605572679636187550,\t0.605532889379063130,\t\n0.605493097608106100,\t0.605453304323416710,\t0.605413509525094100,\t0.605373713213237630,\t0.605333915387946560,\t0.605294116049321040,\t0.605254315197460310,\t0.605214512832463410,\t\n0.605174708954430600,\t0.605134903563460890,\t0.605095096659654000,\t0.605055288243109060,\t0.605015478313926210,\t0.604975666872204720,\t0.604935853918043940,\t0.604896039451543240,\t\n0.604856223472802880,\t0.604816405981921880,\t0.604776586978999830,\t0.604736766464135990,\t0.604696944437430610,\t0.604657120898982820,\t0.604617295848892340,\t0.604577469287258200,\t\n0.604537641214180630,\t0.604497811629759130,\t0.604457980534092610,\t0.604418147927281660,\t0.604378313809425190,\t0.604338478180622920,\t0.604298641040974190,\t0.604258802390579160,\t\n0.604218962229537190,\t0.604179120557947760,\t0.604139277375910220,\t0.604099432683524840,\t0.604059586480890860,\t0.604019738768107880,\t0.603979889545275260,\t0.603940038812493140,\t\n0.603900186569861110,\t0.603860332817478530,\t0.603820477555444660,\t0.603780620783860080,\t0.603740762502823940,\t0.603700902712435480,\t0.603661041412795200,\t0.603621178604002220,\t\n0.603581314286156360,\t0.603541448459356870,\t0.603501581123704110,\t0.603461712279297350,\t0.603421841926236270,\t0.603381970064620350,\t0.603342096694549750,\t0.603302221816124030,\t\n0.603262345429442680,\t0.603222467534605070,\t0.603182588131711770,\t0.603142707220861940,\t0.603102824802155270,\t0.603062940875691230,\t0.603023055441570200,\t0.602983168499891530,\t\n0.602943280050754930,\t0.602903390094259860,\t0.602863498630506590,\t0.602823605659594590,\t0.602783711181623220,\t0.602743815196692960,\t0.602703917704903060,\t0.602664018706353440,\t\n0.602624118201143370,\t0.602584216189373410,\t0.602544312671142950,\t0.602504407646551670,\t0.602464501115698940,\t0.602424593078685460,\t0.602384683535610370,\t0.602344772486573590,\t\n0.602304859931674600,\t0.602264945871013760,\t0.602225030304690550,\t0.602185113232804770,\t0.602145194655455910,\t0.602105274572744320,\t0.602065352984769600,\t0.602025429891631100,\t\n0.601985505293429420,\t0.601945579190264040,\t0.601905651582234640,\t0.601865722469440700,\t0.601825791851982930,\t0.601785859729960570,\t0.601745926103473660,\t0.601705990972621560,\t\n0.601666054337504750,\t0.601626116198222820,\t0.601586176554875670,\t0.601546235407562690,\t0.601506292756384560,\t0.601466348601440550,\t0.601426402942830780,\t0.601386455780654640,\t\n0.601346507115012700,\t0.601306556946004430,\t0.601266605273729440,\t0.601226652098288290,\t0.601186697419780590,\t0.601146741238306030,\t0.601106783553964410,\t0.601066824366856100,\t\n0.601026863677080690,\t0.600986901484738210,\t0.600946937789928030,\t0.600906972592750940,\t0.600867005893306330,\t0.600827037691694210,\t0.600787067988014290,\t0.600747096782366930,\t\n0.600707124074851830,\t0.600667149865568910,\t0.600627174154617860,\t0.600587196942099170,\t0.600547218228112410,\t0.600507238012757290,\t0.600467256296134510,\t0.600427273078343540,\t\n0.600387288359484410,\t0.600347302139656700,\t0.600307314418961010,\t0.600267325197497150,\t0.600227334475364920,\t0.600187342252664010,\t0.600147348529495030,\t0.600107353305957770,\t\n0.600067356582152040,\t0.600027358358177660,\t0.599987358634135210,\t0.599947357410124390,\t0.599907354686245120,\t0.599867350462597090,\t0.599827344739281120,\t0.599787337516396680,\t\n0.599747328794044020,\t0.599707318572322620,\t0.599667306851333290,\t0.599627293631175730,\t0.599587278911949520,\t0.599547262693755470,\t0.599507244976693280,\t0.599467225760862980,\t\n0.599427205046364260,\t0.599387182833297840,\t0.599347159121763510,\t0.599307133911861300,\t0.599267107203690920,\t0.599227078997353060,\t0.599187049292947530,\t0.599147018090574360,\t\n0.599106985390333360,\t0.599066951192325230,\t0.599026915496649660,\t0.598986878303406800,\t0.598946839612696460,\t0.598906799424619330,\t0.598866757739275220,\t0.598826714556763840,\t\n0.598786669877185980,\t0.598746623700641580,\t0.598706576027230540,\t0.598666526857052680,\t0.598626476190208920,\t0.598586424026798960,\t0.598546370366922930,\t0.598506315210680540,\t\n0.598466258558172810,\t0.598426200409499450,\t0.598386140764760490,\t0.598346079624055950,\t0.598306016987486420,\t0.598265952855151940,\t0.598225887227152640,\t0.598185820103588120,\t\n0.598145751484559510,\t0.598105681370166510,\t0.598065609760508930,\t0.598025536655687700,\t0.597985462055802610,\t0.597945385960953810,\t0.597905308371241230,\t0.597865229286765780,\t\n0.597825148707627260,\t0.597785066633925830,\t0.597744983065761400,\t0.597704898003234790,\t0.597664811446446010,\t0.597624723395495220,\t0.597584633850482220,\t0.597544542811508040,\t\n0.597504450278672490,\t0.597464356252075720,\t0.597424260731817870,\t0.597384163717999630,\t0.597344065210720920,\t0.597303965210082110,\t0.597263863716183120,\t0.597223760729124640,\t\n0.597183656249006930,\t0.597143550275929580,\t0.597103442809993830,\t0.597063333851299390,\t0.597023223399946730,\t0.596983111456035550,\t0.596942998019666990,\t0.596902883090940860,\t\n0.596862766669957630,\t0.596822648756817120,\t0.596782529351620240,\t0.596742408454467130,\t0.596702286065457940,\t0.596662162184692700,\t0.596622036812272440,\t0.596581909948297070,\t\n0.596541781592866970,\t0.596501651746081940,\t0.596461520408043230,\t0.596421387578850770,\t0.596381253258604360,\t0.596341117447405260,\t0.596300980145353380,\t0.596260841352548980,\t\n0.596220701069092080,\t0.596180559295083960,\t0.596140416030624290,\t0.596100271275813660,\t0.596060125030751900,\t0.596019977295540240,\t0.595979828070278720,\t0.595939677355067480,\t\n0.595899525150006770,\t0.595859371455197630,\t0.595819216270739970,\t0.595779059596734380,\t0.595738901433280680,\t0.595698741780480210,\t0.595658580638432800,\t0.595618418007238580,\t\n0.595578253886998700,\t0.595538088277813180,\t0.595497921179782400,\t0.595457752593006480,\t0.595417582517586590,\t0.595377410953622620,\t0.595337237901215290,\t0.595297063360464400,\t\n0.595256887331471200,\t0.595216709814335830,\t0.595176530809158670,\t0.595136350316039840,\t0.595096168335080500,\t0.595055984866380670,\t0.595015799910040940,\t0.594975613466161350,\t\n0.594935425534843020,\t0.594895236116186220,\t0.594855045210291310,\t0.594814852817258320,\t0.594774658937188730,\t0.594734463570182340,\t0.594694266716339510,\t0.594654068375761400,\t\n0.594613868548548030,\t0.594573667234800100,\t0.594533464434617520,\t0.594493260148101780,\t0.594453054375352790,\t0.594412847116471130,\t0.594372638371557070,\t0.594332428140711740,\t\n0.594292216424035400,\t0.594252003221628520,\t0.594211788533591130,\t0.594171572360024710,\t0.594131354701029400,\t0.594091135556705670,\t0.594050914927153780,\t0.594010692812474980,\t\n0.593970469212769410,\t0.593930244128137220,\t0.593890017558679870,\t0.593849789504497520,\t0.593809559965690630,\t0.593769328942359450,\t0.593729096434605360,\t0.593688862442528500,\t\n0.593648626966229550,\t0.593608390005808560,\t0.593568151561367000,\t0.593527911633005110,\t0.593487670220823380,\t0.593447427324922170,\t0.593407182945402730,\t0.593366937082365320,\t\n0.593326689735910630,\t0.593286440906138800,\t0.593246190593151200,\t0.593205938797048190,\t0.593165685517929920,\t0.593125430755897850,\t0.593085174511052140,\t0.593044916783493580,\t\n0.593004657573322320,\t0.592964396880639730,\t0.592924134705546170,\t0.592883871048142330,\t0.592843605908528360,\t0.592803339286805840,\t0.592763071183074920,\t0.592722801597436290,\t\n0.592682530529990310,\t0.592642257980838360,\t0.592601983950080900,\t0.592561708437818300,\t0.592521431444151150,\t0.592481152969180800,\t0.592440873013007520,\t0.592400591575731660,\t\n0.592360308657454810,\t0.592320024258277120,\t0.592279738378299390,\t0.592239451017621880,\t0.592199162176346160,\t0.592158871854572500,\t0.592118580052401700,\t0.592078286769934130,\t\n0.592037992007271140,\t0.591997695764513110,\t0.591957398041760950,\t0.591917098839114920,\t0.591876798156676490,\t0.591836495994546020,\t0.591796192352824320,\t0.591755887231611880,\t\n0.591715580631009930,\t0.591675272551119180,\t0.591634962992040100,\t0.591594651953873400,\t0.591554339436720310,\t0.591514025440681430,\t0.591473709965857130,\t0.591433393012348870,\t\n0.591393074580257250,\t0.591352754669682850,\t0.591312433280726140,\t0.591272110413488820,\t0.591231786068071140,\t0.591191460244574030,\t0.591151132943097960,\t0.591110804163744400,\t\n0.591070473906613710,\t0.591030142171806940,\t0.590989808959424550,\t0.590949474269567790,\t0.590909138102337470,\t0.590868800457834300,\t0.590828461336158740,\t0.590788120737412380,\t\n0.590747778661695810,\t0.590707435109109280,\t0.590667090079754600,\t0.590626743573732240,\t0.590586395591143010,\t0.590546046132087390,\t0.590505695196666960,\t0.590465342784982420,\t\n0.590424988897134460,\t0.590384633533223680,\t0.590344276693351660,\t0.590303918377618860,\t0.590263558586126450,\t0.590223197318974660,\t0.590182834576265300,\t0.590142470358098750,\t\n0.590102104664576130,\t0.590061737495797820,\t0.590021368851865620,\t0.589980998732879900,\t0.589940627138941350,\t0.589900254070151680,\t0.589859879526611230,\t0.589819503508421160,\t\n0.589779126015681940,\t0.589738747048495380,\t0.589698366606961840,\t0.589657984691182360,\t0.589617601301257620,\t0.589577216437289220,\t0.589536830099377740,\t0.589496442287624320,\t\n0.589456053002129330,\t0.589415662242994580,\t0.589375270010320640,\t0.589334876304208550,\t0.589294481124758910,\t0.589254084472073500,\t0.589213686346252820,\t0.589173286747397880,\t\n0.589132885675609400,\t0.589092483130989050,\t0.589052079113637550,\t0.589011673623655470,\t0.588971266661144520,\t0.588930858226205390,\t0.588890448318939220,\t0.588850036939446490,\t\n0.588809624087829000,\t0.588769209764187560,\t0.588728793968622990,\t0.588688376701236080,\t0.588647957962128650,\t0.588607537751401290,\t0.588567116069155130,\t0.588526692915490760,\t\n0.588486268290510100,\t0.588445842194313730,\t0.588405414627002690,\t0.588364985588677780,\t0.588324555079440810,\t0.588284123099392490,\t0.588243689648633380,\t0.588203254727265530,\t\n0.588162818335389410,\t0.588122380473106390,\t0.588081941140516930,\t0.588041500337723070,\t0.588001058064825390,\t0.587960614321925150,\t0.587920169109122930,\t0.587879722426520650,\t\n0.587839274274219110,\t0.587798824652319360,\t0.587758373560922200,\t0.587717921000129540,\t0.587677466970041970,\t0.587637011470760750,\t0.587596554502386680,\t0.587556096065021570,\t\n0.587515636158766230,\t0.587475174783721350,\t0.587434711939988970,\t0.587394247627669900,\t0.587353781846865040,\t0.587313314597675440,\t0.587272845880202900,\t0.587232375694548340,\t\n0.587191904040812670,\t0.587151430919097050,\t0.587110956329503160,\t0.587070480272131820,\t0.587030002747084280,\t0.586989523754461450,\t0.586949043294365150,\t0.586908561366896180,\t\n0.586868077972155900,\t0.586827593110245020,\t0.586787106781265440,\t0.586746618985318210,\t0.586706129722504020,\t0.586665638992924900,\t0.586625146796681650,\t0.586584653133875530,\t\n0.586544158004607460,\t0.586503661408979250,\t0.586463163347092030,\t0.586422663819046840,\t0.586382162824944600,\t0.586341660364887330,\t0.586301156438975850,\t0.586260651047311620,\t\n0.586220144189995240,\t0.586179635867128960,\t0.586139126078813580,\t0.586098614825150470,\t0.586058102106240320,\t0.586017587922185390,\t0.585977072273086370,\t0.585936555159044750,\t\n0.585896036580161320,\t0.585855516536538220,\t0.585814995028276390,\t0.585774472055476610,\t0.585733947618241050,\t0.585693421716670600,\t0.585652894350866540,\t0.585612365520929990,\t\n0.585571835226962770,\t0.585531303469066120,\t0.585490770247341090,\t0.585450235561888800,\t0.585409699412811290,\t0.585369161800209590,\t0.585328622724184840,\t0.585288082184838300,\t\n0.585247540182271870,\t0.585206996716586600,\t0.585166451787883850,\t0.585125905396264630,\t0.585085357541831000,\t0.585044808224683850,\t0.585004257444924460,\t0.584963705202654730,\t\n0.584923151497975800,\t0.584882596330988940,\t0.584842039701795270,\t0.584801481610496720,\t0.584760922057194650,\t0.584720361041990210,\t0.584679798564984420,\t0.584639234626279650,\t\n0.584598669225976700,\t0.584558102364177050,\t0.584517534040981830,\t0.584476964256493090,\t0.584436393010812070,\t0.584395820304039910,\t0.584355246136277980,\t0.584314670507628200,\t\n0.584274093418191810,\t0.584233514868069740,\t0.584192934857364230,\t0.584152353386176440,\t0.584111770454607830,\t0.584071186062759320,\t0.584030600210733280,\t0.583990012898630730,\t\n0.583949424126553150,\t0.583908833894601580,\t0.583868242202878360,\t0.583827649051484540,\t0.583787054440521590,\t0.583746458370090540,\t0.583705860840293860,\t0.583665261851232460,\t\n0.583624661403007840,\t0.583584059495721340,\t0.583543456129475000,\t0.583502851304369960,\t0.583462245020507810,\t0.583421637277989680,\t0.583381028076917940,\t0.583340417417393510,\t\n0.583299805299517750,\t0.583259191723392690,\t0.583218576689119810,\t0.583177960196800460,\t0.583137342246535790,\t0.583096722838428170,\t0.583056101972578730,\t0.583015479649089060,\t\n0.582974855868060300,\t0.582934230629594710,\t0.582893603933793640,\t0.582852975780758560,\t0.582812346170590630,\t0.582771715103392210,\t0.582731082579264430,\t0.582690448598309100,\t\n0.582649813160627140,\t0.582609176266321030,\t0.582568537915492010,\t0.582527898108241350,\t0.582487256844671290,\t0.582446614124882970,\t0.582405969948978200,\t0.582365324317058120,\t\n0.582324677229225210,\t0.582284028685580490,\t0.582243378686225670,\t0.582202727231262100,\t0.582162074320792030,\t0.582121419954916840,\t0.582080764133738100,\t0.582040106857356960,\t\n0.581999448125876010,\t0.581958787939396480,\t0.581918126298019980,\t0.581877463201847740,\t0.581836798650982260,\t0.581796132645524660,\t0.581755465185576530,\t0.581714796271240010,\t\n0.581674125902616470,\t0.581633454079807710,\t0.581592780802914880,\t0.581552106072040440,\t0.581511429887285880,\t0.581470752248752550,\t0.581430073156542160,\t0.581389392610756840,\t\n0.581348710611498070,\t0.581308027158867540,\t0.581267342252966500,\t0.581226655893897550,\t0.581185968081761930,\t0.581145278816661340,\t0.581104588098697250,\t0.581063895927972030,\t\n0.581023202304587150,\t0.580982507228643860,\t0.580941810700244640,\t0.580901112719490850,\t0.580860413286484300,\t0.580819712401326350,\t0.580779010064119580,\t0.580738306274965250,\t\n0.580697601033965060,\t0.580656894341220590,\t0.580616186196834190,\t0.580575476600907360,\t0.580534765553541890,\t0.580494053054839030,\t0.580453339104901490,\t0.580412623703830620,\t\n0.580371906851728130,\t0.580331188548695480,\t0.580290468794835260,\t0.580249747590248940,\t0.580209024935038120,\t0.580168300829304480,\t0.580127575273150400,\t0.580086848266677450,\t\n0.580046119809986880,\t0.580005389903181510,\t0.579964658546362590,\t0.579923925739632030,\t0.579883191483091310,\t0.579842455776843010,\t0.579801718620988500,\t0.579760980015629700,\t\n0.579720239960868080,\t0.579679498456806330,\t0.579638755503545710,\t0.579598011101188250,\t0.579557265249835420,\t0.579516517949589800,\t0.579475769200552880,\t0.579435019002826460,\t\n0.579394267356512230,\t0.579353514261712670,\t0.579312759718529250,\t0.579272003727063670,\t0.579231246287418400,\t0.579190487399695030,\t0.579149727063995370,\t0.579108965280421110,\t\n0.579068202049074720,\t0.579027437370057910,\t0.578986671243472470,\t0.578945903669420000,\t0.578905134648003080,\t0.578864364179323410,\t0.578823592263482790,\t0.578782818900582810,\t\n0.578742044090726160,\t0.578701267834014430,\t0.578660490130549540,\t0.578619710980432970,\t0.578578930383767620,\t0.578538148340654870,\t0.578497364851196290,\t0.578456579915494820,\t\n0.578415793533651800,\t0.578375005705769380,\t0.578334216431949040,\t0.578293425712293470,\t0.578252633546904370,\t0.578211839935883760,\t0.578171044879333130,\t0.578130248377355160,\t\n0.578089450430051670,\t0.578048651037524560,\t0.578007850199875440,\t0.577967047917207100,\t0.577926244189621130,\t0.577885439017219450,\t0.577844632400103860,\t0.577803824338377070,\t\n0.577763014832140760,\t0.577722203881496870,\t0.577681391486547180,\t0.577640577647394290,\t0.577599762364139900,\t0.577558945636885810,\t0.577518127465734830,\t0.577477307850788320,\t\n0.577436486792148650,\t0.577395664289917400,\t0.577354840344197370,\t0.577314014955090270,\t0.577273188122698010,\t0.577232359847122510,\t0.577191530128466470,\t0.577150698966831580,\t\n0.577109866362319980,\t0.577069032315033260,\t0.577028196825074450,\t0.576987359892545020,\t0.576946521517547330,\t0.576905681700182860,\t0.576864840440554530,\t0.576823997738764250,\t\n0.576783153594913500,\t0.576742308009105200,\t0.576701460981441150,\t0.576660612512023500,\t0.576619762600953930,\t0.576578911248335380,\t0.576538058454269420,\t0.576497204218858420,\t\n0.576456348542203960,\t0.576415491424409070,\t0.576374632865575440,\t0.576333772865805230,\t0.576292911425200230,\t0.576252048543863250,\t0.576211184221896210,\t0.576170318459401140,\t\n0.576129451256479960,\t0.576088582613235590,\t0.576047712529769610,\t0.576006841006184160,\t0.575965968042581820,\t0.575925093639064630,\t0.575884217795734730,\t0.575843340512693810,\t\n0.575802461790045020,\t0.575761581627890040,\t0.575720700026331130,\t0.575679816985469990,\t0.575638932505409760,\t0.575598046586252240,\t0.575557159228099580,\t0.575516270431053580,\t\n0.575475380195217380,\t0.575434488520692680,\t0.575393595407581730,\t0.575352700855986440,\t0.575311804866009860,\t0.575270907437753660,\t0.575230008571319780,\t0.575189108266811360,\t\n0.575148206524330070,\t0.575107303343978420,\t0.575066398725857960,\t0.575025492670071970,\t0.574984585176722240,\t0.574943676245911030,\t0.574902765877740360,\t0.574861854072313050,\t\n0.574820940829731120,\t0.574780026150096820,\t0.574739110033512080,\t0.574698192480079920,\t0.574657273489902360,\t0.574616353063081560,\t0.574575431199719540,\t0.574534507899919220,\t\n0.574493583163782740,\t0.574452656991412240,\t0.574411729382909740,\t0.574370800338378280,\t0.574329869857919890,\t0.574288937941636380,\t0.574248004589630880,\t0.574207069802005420,\t\n0.574166133578862260,\t0.574125195920303420,\t0.574084256826431940,\t0.574043316297349840,\t0.574002374333159480,\t0.573961430933962680,\t0.573920486099862790,\t0.573879539830961630,\t\n0.573838592127361660,\t0.573797642989164910,\t0.573756692416474310,\t0.573715740409391990,\t0.573674786968020320,\t0.573633832092461330,\t0.573592875782818150,\t0.573551918039192810,\t\n0.573510958861687240,\t0.573469998250404680,\t0.573429036205447050,\t0.573388072726916940,\t0.573347107814916160,\t0.573306141469548060,\t0.573265173690914560,\t0.573224204479118150,\t\n0.573183233834260950,\t0.573142261756445890,\t0.573101288245775220,\t0.573060313302351410,\t0.573019336926276380,\t0.572978359117653380,\t0.572937379876584440,\t0.572896399203172150,\t\n0.572855417097518420,\t0.572814433559726500,\t0.572773448589898540,\t0.572732462188136560,\t0.572691474354543820,\t0.572650485089222450,\t0.572609494392274820,\t0.572568502263803070,\t\n0.572527508703910450,\t0.572486513712698990,\t0.572445517290271270,\t0.572404519436729430,\t0.572363520152176730,\t0.572322519436715080,\t0.572281517290447180,\t0.572240513713475170,\t\n0.572199508705902190,\t0.572158502267830490,\t0.572117494399362550,\t0.572076485100600380,\t0.572035474371647480,\t0.571994462212605860,\t0.571953448623578110,\t0.571912433604666370,\t\n0.571871417155973890,\t0.571830399277602820,\t0.571789379969655510,\t0.571748359232234990,\t0.571707337065443630,\t0.571666313469383900,\t0.571625288444158050,\t0.571584261989869340,\t\n0.571543234106620000,\t0.571502204794512520,\t0.571461174053649270,\t0.571420141884133370,\t0.571379108286067080,\t0.571338073259553100,\t0.571297036804693460,\t0.571255998921591730,\t\n0.571214959610349850,\t0.571173918871070720,\t0.571132876703856370,\t0.571091833108810180,\t0.571050788086034380,\t0.571009741635631340,\t0.570968693757704200,\t0.570927644452355440,\t\n0.570886593719687420,\t0.570845541559802720,\t0.570804487972804480,\t0.570763432958794950,\t0.570722376517876830,\t0.570681318650152480,\t0.570640259355725150,\t0.570599198634697210,\t\n0.570558136487171240,\t0.570517072913249600,\t0.570476007913035650,\t0.570434941486631650,\t0.570393873634140290,\t0.570352804355663820,\t0.570311733651305830,\t0.570270661521168450,\t\n0.570229587965354060,\t0.570188512983966110,\t0.570147436577106760,\t0.570106358744878920,\t0.570065279487384720,\t0.570024198804727770,\t0.569983116697010290,\t0.569942033164335120,\t\n0.569900948206804370,\t0.569859861824521640,\t0.569818774017589290,\t0.569777684786110020,\t0.569736594130186180,\t0.569695502049921140,\t0.569654408545417380,\t0.569613313616777580,\t\n0.569572217264104230,\t0.569531119487500570,\t0.569490020287069190,\t0.569448919662912330,\t0.569407817615133590,\t0.569366714143835330,\t0.569325609249120230,\t0.569284502931090790,\t\n0.569243395189850450,\t0.569202286025501600,\t0.569161175438147040,\t0.569120063427889230,\t0.569078949994831550,\t0.569037835139076580,\t0.568996718860726890,\t0.568955601159885080,\t\n0.568914482036654730,\t0.568873361491138100,\t0.568832239523438090,\t0.568791116133657070,\t0.568749991321898630,\t0.568708865088265240,\t0.568667737432859700,\t0.568626608355784490,\t\n0.568585477857143080,\t0.568544345937037950,\t0.568503212595571570,\t0.568462077832847630,\t0.568420941648968390,\t0.568379804044036870,\t0.568338665018155440,\t0.568297524571427680,\t\n0.568256382703956180,\t0.568215239415843620,\t0.568174094707192710,\t0.568132948578106810,\t0.568091801028688610,\t0.568050652059040930,\t0.568009501669266230,\t0.567968349859468200,\t\n0.567927196629749220,\t0.567886041980212310,\t0.567844885910959830,\t0.567803728422095590,\t0.567762569513721950,\t0.567721409185941610,\t0.567680247438858030,\t0.567639084272573920,\t\n0.567597919687192090,\t0.567556753682815000,\t0.567515586259546460,\t0.567474417417488940,\t0.567433247156745370,\t0.567392075477418320,\t0.567350902379611500,\t0.567309727863427370,\t\n0.567268551928968970,\t0.567227374576338760,\t0.567186195805640450,\t0.567145015616976720,\t0.567103834010450500,\t0.567062650986164260,\t0.567021466544221700,\t0.566980280684725610,\t\n0.566939093407778370,\t0.566897904713483780,\t0.566856714601944420,\t0.566815523073263220,\t0.566774330127542970,\t0.566733135764887150,\t0.566691939985398570,\t0.566650742789180040,\t\n0.566609544176334360,\t0.566568344146965220,\t0.566527142701175210,\t0.566485939839067250,\t0.566444735560744150,\t0.566403529866309600,\t0.566362322755866180,\t0.566321114229517030,\t\n0.566279904287364630,\t0.566238692929512900,\t0.566197480156064300,\t0.566156265967122210,\t0.566115050362788970,\t0.566073833343168410,\t0.566032614908363430,\t0.565991395058476400,\t\n0.565950173793611340,\t0.565908951113870850,\t0.565867727019357950,\t0.565826501510175330,\t0.565785274586426800,\t0.565744046248215170,\t0.565702816495643360,\t0.565661585328814280,\t\n0.565620352747831400,\t0.565579118752797760,\t0.565537883343816270,\t0.565496646520989740,\t0.565455408284421980,\t0.565414168634215670,\t0.565372927570473970,\t0.565331685093299560,\t\n0.565290441202796370,\t0.565249195899066970,\t0.565207949182214290,\t0.565166701052342010,\t0.565125451509553070,\t0.565084200553950480,\t0.565042948185636940,\t0.565001694404716480,\t\n0.564960439211291800,\t0.564919182605466030,\t0.564877924587341870,\t0.564836665157023350,\t0.564795404314613060,\t0.564754142060214350,\t0.564712878393929920,\t0.564671613315863570,\t\n0.564630346826118230,\t0.564589078924797040,\t0.564547809612002790,\t0.564506538887839420,\t0.564465266752409600,\t0.564423993205816270,\t0.564382718248163440,\t0.564341441879553710,\t\n0.564300164100090430,\t0.564258884909876300,\t0.564217604309015350,\t0.564176322297610390,\t0.564135038875764660,\t0.564093754043580970,\t0.564052467801163250,\t0.564011180148614290,\t\n0.563969891086037460,\t0.563928600613535560,\t0.563887308731212400,\t0.563846015439171120,\t0.563804720737514750,\t0.563763424626346100,\t0.563722127105769410,\t0.563680828175887380,\t\n0.563639527836802820,\t0.563598226088619870,\t0.563556922931441330,\t0.563515618365370560,\t0.563474312390510270,\t0.563433005006964580,\t0.563391696214836420,\t0.563350386014229040,\t\n0.563309074405245250,\t0.563267761387989290,\t0.563226446962563740,\t0.563185131129072200,\t0.563143813887617360,\t0.563102495238303470,\t0.563061175181233330,\t0.563019853716510200,\t\n0.562978530844237100,\t0.562937206564517960,\t0.562895880877455900,\t0.562854553783154080,\t0.562813225281715510,\t0.562771895373244350,\t0.562730564057843270,\t0.562689231335615550,\t\n0.562647897206665080,\t0.562606561671094910,\t0.562565224729008270,\t0.562523886380508210,\t0.562482546625698850,\t0.562441205464683010,\t0.562399862897564270,\t0.562358518924445440,\t\n0.562317173545430760,\t0.562275826760623150,\t0.562234478570125870,\t0.562193128974042060,\t0.562151777972475840,\t0.562110425565530150,\t0.562069071753308340,\t0.562027716535913550,\t\n0.561986359913449920,\t0.561945001886020260,\t0.561903642453727700,\t0.561862281616676510,\t0.561820919374969590,\t0.561779555728710300,\t0.561738190678001900,\t0.561696824222948200,\t\n0.561655456363652550,\t0.561614087100218320,\t0.561572716432748420,\t0.561531344361347110,\t0.561489970886117410,\t0.561448596007162790,\t0.561407219724586400,\t0.561365842038492270,\t\n0.561324462948983530,\t0.561283082456163650,\t0.561241700560135670,\t0.561200317261003720,\t0.561158932558871170,\t0.561117546453840820,\t0.561076158946016920,\t0.561034770035502730,\t\n0.560993379722401490,\t0.560951988006816560,\t0.560910594888851980,\t0.560869200368610880,\t0.560827804446196840,\t0.560786407121712790,\t0.560745008395263200,\t0.560703608266951090,\t\n0.560662206736879940,\t0.560620803805153000,\t0.560579399471874300,\t0.560537993737147080,\t0.560496586601074930,\t0.560455178063760990,\t0.560413768125309410,\t0.560372356785823420,\t\n0.560330944045406620,\t0.560289529904161920,\t0.560248114362193910,\t0.560206697419605600,\t0.560165279076500160,\t0.560123859332981810,\t0.560082438189153930,\t0.560041015645119880,\t\n0.559999591700982900,\t0.559958166356847360,\t0.559916739612816410,\t0.559875311468993610,\t0.559833881925482220,\t0.559792450982386390,\t0.559751018639809470,\t0.559709584897855050,\t\n0.559668149756626150,\t0.559626713216227370,\t0.559585275276761830,\t0.559543835938333010,\t0.559502395201044280,\t0.559460953064999990,\t0.559419509530303170,\t0.559378064597057410,\t\n0.559336618265366740,\t0.559295170535334510,\t0.559253721407064310,\t0.559212270880659500,\t0.559170818956224450,\t0.559129365633862290,\t0.559087910913676710,\t0.559046454795770980,\t\n0.559004997280249440,\t0.558963538367215460,\t0.558922078056772630,\t0.558880616349024200,\t0.558839153244074630,\t0.558797688742027180,\t0.558756222842985540,\t0.558714755547052970,\t\n0.558673286854333820,\t0.558631816764931450,\t0.558590345278949240,\t0.558548872396491540,\t0.558507398117661590,\t0.558465922442563210,\t0.558424445371299650,\t0.558382966903975260,\t\n0.558341487040693530,\t0.558300005781558030,\t0.558258523126672230,\t0.558217039076140400,\t0.558175553630065990,\t0.558134066788552820,\t0.558092578551703910,\t0.558051088919624070,\t\n0.558009597892416440,\t0.557968105470184830,\t0.557926611653032590,\t0.557885116441064310,\t0.557843619834383020,\t0.557802121833092410,\t0.557760622437296960,\t0.557719121647099800,\t\n0.557677619462604970,\t0.557636115883915600,\t0.557594610911136380,\t0.557553104544370680,\t0.557511596783722090,\t0.557470087629294290,\t0.557428577081191530,\t0.557387065139517300,\t\n0.557345551804375510,\t0.557304037075869400,\t0.557262520954103560,\t0.557221003439181460,\t0.557179484531206910,\t0.557137964230283170,\t0.557096442536514910,\t0.557054919450005630,\t\n0.557013394970858890,\t0.556971869099178510,\t0.556930341835068620,\t0.556888813178633040,\t0.556847283129974890,\t0.556805751689198990,\t0.556764218856408810,\t0.556722684631707930,\t\n0.556681149015200050,\t0.556639612006989640,\t0.556598073607180170,\t0.556556533815875550,\t0.556514992633179270,\t0.556473450059195800,\t0.556431906094028710,\t0.556390360737781920,\t\n0.556348813990558800,\t0.556307265852464040,\t0.556265716323601110,\t0.556224165404073930,\t0.556182613093985870,\t0.556141059393441720,\t0.556099504302544960,\t0.556057947821398950,\t\n0.556016389950108600,\t0.555974830688777180,\t0.555933270037508700,\t0.555891707996406640,\t0.555850144565575690,\t0.555808579745119320,\t0.555767013535141690,\t0.555725445935746020,\t\n0.555683876947037140,\t0.555642306569118500,\t0.555600734802094150,\t0.555559161646067560,\t0.555517587101143520,\t0.555476011167425400,\t0.555434433845017340,\t0.555392855134022810,\t\n0.555351275034546510,\t0.555309693546692020,\t0.555268110670562920,\t0.555226526406263910,\t0.555184940753898570,\t0.555143353713570930,\t0.555101765285384460,\t0.555060175469443970,\t\n0.555018584265853040,\t0.554976991674715700,\t0.554935397696135540,\t0.554893802330217120,\t0.554852205577064270,\t0.554810607436780900,\t0.554769007909470700,\t0.554727406995238260,\t\n0.554685804694187380,\t0.554644201006421980,\t0.554602595932045640,\t0.554560989471163170,\t0.554519381623878370,\t0.554477772390294940,\t0.554436161770516800,\t0.554394549764648640,\t\n0.554352936372794040,\t0.554311321595056810,\t0.554269705431541640,\t0.554228087882352120,\t0.554186468947592490,\t0.554144848627366240,\t0.554103226921778270,\t0.554061603830932280,\t\n0.554019979354932190,\t0.553978353493881800,\t0.553936726247885920,\t0.553895097617048250,\t0.553853467601472800,\t0.553811836201263290,\t0.553770203416524610,\t0.553728569247360360,\t\n0.553686933693874780,\t0.553645296756171360,\t0.553603658434355220,\t0.553562018728529840,\t0.553520377638799020,\t0.553478735165267690,\t0.553437091308039530,\t0.553395446067218580,\t\n0.553353799442908740,\t0.553312151435214730,\t0.553270502044240330,\t0.553228851270089580,\t0.553187199112866510,\t0.553145545572675700,\t0.553103890649621070,\t0.553062234343806640,\t\n0.553020576655336330,\t0.552978917584314940,\t0.552937257130846290,\t0.552895595295034400,\t0.552853932076983190,\t0.552812267476797570,\t0.552770601494581240,\t0.552728934130438110,\t\n0.552687265384472880,\t0.552645595256789580,\t0.552603923747492230,\t0.552562250856684760,\t0.552520576584472070,\t0.552478900930957860,\t0.552437223896246390,\t0.552395545480441560,\t\n0.552353865683648190,\t0.552312184505970080,\t0.552270501947511590,\t0.552228818008376530,\t0.552187132688669700,\t0.552145445988495130,\t0.552103757907956850,\t0.552062068447158880,\t\n0.552020377606206040,\t0.551978685385202340,\t0.551936991784251480,\t0.551895296803458610,\t0.551853600442927420,\t0.551811902702762260,\t0.551770203583066940,\t0.551728503083946500,\t\n0.551686801205504730,\t0.551645097947846110,\t0.551603393311074220,\t0.551561687295294310,\t0.551519979900610190,\t0.551478271127126110,\t0.551436560974945980,\t0.551394849444174720,\t\n0.551353136534916470,\t0.551311422247275250,\t0.551269706581355210,\t0.551227989537261260,\t0.551186271115097330,\t0.551144551314967760,\t0.551102830136976360,\t0.551061107581228280,\t\n0.551019383647827430,\t0.550977658336877730,\t0.550935931648484310,\t0.550894203582751100,\t0.550852474139782330,\t0.550810743319681940,\t0.550769011122555160,\t0.550727277548505810,\t\n0.550685542597638240,\t0.550643806270056490,\t0.550602068565865580,\t0.550560329485169530,\t0.550518589028072600,\t0.550476847194678820,\t0.550435103985093320,\t0.550393359399420020,\t\n0.550351613437763400,\t0.550309866100227360,\t0.550268117386916940,\t0.550226367297936390,\t0.550184615833389400,\t0.550142862993381330,\t0.550101108778015990,\t0.550059353187397960,\t\n0.550017596221631160,\t0.549975837880820830,\t0.549934078165070780,\t0.549892317074485600,\t0.549850554609169210,\t0.549808790769226840,\t0.549767025554762530,\t0.549725258965880650,\t\n0.549683491002685210,\t0.549641721665281360,\t0.549599950953773230,\t0.549558178868265300,\t0.549516405408861490,\t0.549474630575667140,\t0.549432854368786080,\t0.549391076788322550,\t\n0.549349297834381690,\t0.549307517507067630,\t0.549265735806484750,\t0.549223952732737160,\t0.549182168285930140,\t0.549140382466167590,\t0.549098595273554090,\t0.549056806708193790,\t\n0.549015016770191820,\t0.548973225459652330,\t0.548931432776679770,\t0.548889638721378190,\t0.548847843293852940,\t0.548806046494208060,\t0.548764248322548110,\t0.548722448778977130,\t\n0.548680647863600380,\t0.548638845576522090,\t0.548597041917846640,\t0.548555236887678150,\t0.548513430486122000,\t0.548471622713282310,\t0.548429813569263120,\t0.548388003054169790,\t\n0.548346191168106460,\t0.548304377911177700,\t0.548262563283487550,\t0.548220747285141470,\t0.548178929916243400,\t0.548137111176898010,\t0.548095291067209560,\t0.548053469587283180,\t\n0.548011646737223130,\t0.547969822517134000,\t0.547927996927119910,\t0.547886169967286230,\t0.547844341637737100,\t0.547802511938577210,\t0.547760680869910590,\t0.547718848431842600,\t\n0.547677014624477490,\t0.547635179447919510,\t0.547593342902274020,\t0.547551504987645040,\t0.547509665704137390,\t0.547467825051855210,\t0.547425983030903840,\t0.547384139641387430,\t\n0.547342294883410680,\t0.547300448757077950,\t0.547258601262494370,\t0.547216752399764310,\t0.547174902168992340,\t0.547133050570282720,\t0.547091197603740920,\t0.547049343269471080,\t\n0.547007487567577890,\t0.546965630498165600,\t0.546923772061339690,\t0.546881912257204280,\t0.546840051085863640,\t0.546798188547423350,\t0.546756324641987530,\t0.546714459369661010,\t\n0.546672592730547910,\t0.546630724724753600,\t0.546588855352382550,\t0.546546984613539450,\t0.546505112508328450,\t0.546463239036855010,\t0.546421364199223490,\t0.546379487995538590,\t\n0.546337610425904560,\t0.546295731490426870,\t0.546253851189209880,\t0.546211969522358180,\t0.546170086489976340,\t0.546128202092169500,\t0.546086316329042250,\t0.546044429200699180,\t\n0.546002540707244630,\t0.545960650848784200,\t0.545918759625422020,\t0.545876867037262680,\t0.545834973084411530,\t0.545793077766972940,\t0.545751181085051610,\t0.545709283038751990,\t\n0.545667383628179460,\t0.545625482853438590,\t0.545583580714633980,\t0.545541677211869970,\t0.545499772345252150,\t0.545457866114885000,\t0.545415958520873100,\t0.545374049563321030,\t\n0.545332139242334040,\t0.545290227558016820,\t0.545248314510474060,\t0.545206400099810030,\t0.545164484326130520,\t0.545122567189539660,\t0.545080648690142060,\t0.545038728828043270,\t\n0.544996807603347570,\t0.544954885016159850,\t0.544912961066584600,\t0.544871035754727280,\t0.544829109080692490,\t0.544787181044584790,\t0.544745251646508780,\t0.544703320886570030,\t\n0.544661388764873020,\t0.544619455281522450,\t0.544577520436623000,\t0.544535584230280030,\t0.544493646662598030,\t0.544451707733682010,\t0.544409767443636340,\t0.544367825792566710,\t\n0.544325882780577360,\t0.544283938407773000,\t0.544241992674259210,\t0.544200045580140350,\t0.544158097125521430,\t0.544116147310506950,\t0.544074196135202360,\t0.544032243599712360,\t\n0.543990289704141650,\t0.543948334448594920,\t0.543906377833177750,\t0.543864419857994610,\t0.543822460523150420,\t0.543780499828749650,\t0.543738537774898110,\t0.543696574361700160,\t\n0.543654609589260820,\t0.543612643457684560,\t0.543570675967076980,\t0.543528707117542860,\t0.543486736909186470,\t0.543444765342113720,\t0.543402792416428970,\t0.543360818132237240,\t\n0.543318842489643130,\t0.543276865488752310,\t0.543234887129669270,\t0.543192907412499040,\t0.543150926337346180,\t0.543108943904316410,\t0.543066960113514190,\t0.543024974965044650,\t\n0.542982988459012270,\t0.542941000595522750,\t0.542899011374680770,\t0.542857020796591260,\t0.542815028861358790,\t0.542773035569089180,\t0.542731040919887000,\t0.542689044913857170,\t\n0.542647047551104380,\t0.542605048831734330,\t0.542563048755851600,\t0.542521047323560990,\t0.542479044534968090,\t0.542437040390177480,\t0.542395034889294410,\t0.542353028032423250,\t\n0.542311019819670000,\t0.542269010251139160,\t0.542226999326935850,\t0.542184987047164560,\t0.542142973411931290,\t0.542100958421340540,\t0.542058942075497320,\t0.542016924374506440,\t\n0.541974905318473700,\t0.541932884907503580,\t0.541890863141701320,\t0.541848840021171400,\t0.541806815546019840,\t0.541764789716351340,\t0.541722762532270360,\t0.541680733993882950,\t\n0.541638704101293560,\t0.541596672854607550,\t0.541554640253929410,\t0.541512606299365040,\t0.541470570991019140,\t0.541428534328996850,\t0.541386496313402850,\t0.541344456944343080,\t\n0.541302416221921990,\t0.541260374146244950,\t0.541218330717416650,\t0.541176285935542790,\t0.541134239800728280,\t0.541092192313078150,\t0.541050143472697200,\t0.541008093279691240,\t\n0.540966041734165070,\t0.540923988836223390,\t0.540881934585972110,\t0.540839878983515930,\t0.540797822028960210,\t0.540755763722409410,\t0.540713704063969680,\t0.540671643053745600,\t\n0.540629580691842530,\t0.540587516978365050,\t0.540545451913419180,\t0.540503385497109630,\t0.540461317729541650,\t0.540419248610820020,\t0.540377178141050680,\t0.540335106320338320,\t\n0.540293033148788180,\t0.540250958626505180,\t0.540208882753595130,\t0.540166805530162830,\t0.540124726956313530,\t0.540082647032152030,\t0.540040565757784250,\t0.539998483133315110,\t\n0.539956399158849410,\t0.539914313834493060,\t0.539872227160350880,\t0.539830139136528220,\t0.539788049763129770,\t0.539745959040261680,\t0.539703866968028520,\t0.539661773546535770,\t\n0.539619678775888230,\t0.539577582656191930,\t0.539535485187551570,\t0.539493386370072490,\t0.539451286203859630,\t0.539409184689018990,\t0.539367081825655290,\t0.539324977613873880,\t\n0.539282872053779670,\t0.539240765145478700,\t0.539198656889075760,\t0.539156547284675770,\t0.539114436332384870,\t0.539072324032307870,\t0.539030210384550010,\t0.538988095389216330,\t\n0.538945979046412730,\t0.538903861356244130,\t0.538861742318816010,\t0.538819621934233050,\t0.538777500202601400,\t0.538735377124026080,\t0.538693252698612230,\t0.538651126926465000,\t\n0.538608999807690280,\t0.538566871342393010,\t0.538524741530678530,\t0.538482610372651880,\t0.538440477868419090,\t0.538398344018085060,\t0.538356208821754830,\t0.538314072279534540,\t\n0.538271934391528980,\t0.538229795157843530,\t0.538187654578583310,\t0.538145512653854240,\t0.538103369383761470,\t0.538061224768410230,\t0.538019078807905560,\t0.537976931502353590,\t\n0.537934782851859250,\t0.537892632856528000,\t0.537850481516464750,\t0.537808328831775760,\t0.537766174802565830,\t0.537724019428940550,\t0.537681862711004820,\t0.537639704648864790,\t\n0.537597545242625490,\t0.537555384492392040,\t0.537513222398270370,\t0.537471058960365730,\t0.537428894178783480,\t0.537386728053628530,\t0.537344560585007120,\t0.537302391773024410,\t\n0.537260221617785640,\t0.537218050119396050,\t0.537175877277961570,\t0.537133703093587430,\t0.537091527566379120,\t0.537049350696441550,\t0.537007172483880970,\t0.536964992928802510,\t\n0.536922812031311540,\t0.536880629791513190,\t0.536838446209513600,\t0.536796261285417910,\t0.536754075019331480,\t0.536711887411359560,\t0.536669698461608390,\t0.536627508170182900,\t\n0.536585316537188220,\t0.536543123562730600,\t0.536500929246915280,\t0.536458733589847530,\t0.536416536591632690,\t0.536374338252376790,\t0.536332138572185090,\t0.536289937551163050,\t\n0.536247735189415710,\t0.536205531487049520,\t0.536163326444169420,\t0.536121120060881080,\t0.536078912337289550,\t0.536036703273501060,\t0.535994492869620860,\t0.535952281125754330,\t\n0.535910068042006800,\t0.535867853618484550,\t0.535825637855292580,\t0.535783420752536150,\t0.535741202310321520,\t0.535698982528753920,\t0.535656761407938830,\t0.535614538947981500,\t\n0.535572315148988180,\t0.535530090011064000,\t0.535487863534314770,\t0.535445635718845400,\t0.535403406564762260,\t0.535361176072170710,\t0.535318944241176100,\t0.535276711071883900,\t\n0.535234476564400150,\t0.535192240718830310,\t0.535150003535279860,\t0.535107765013854040,\t0.535065525154659110,\t0.535023283957800410,\t0.534981041423383210,\t0.534938797551513630,\t\n0.534896552342297160,\t0.534854305795839260,\t0.534812057912245290,\t0.534769808691621380,\t0.534727558134073130,\t0.534685306239705890,\t0.534643053008625020,\t0.534600798440937000,\t\n0.534558542536746840,\t0.534516285296160350,\t0.534474026719282790,\t0.534431766806220620,\t0.534389505557078980,\t0.534347242971963570,\t0.534304979050979620,\t0.534262713794233620,\t\n0.534220447201830930,\t0.534178179273877010,\t0.534135910010477330,\t0.534093639411738260,\t0.534051367477765050,\t0.534009094208663050,\t0.533966819604538620,\t0.533924543665497240,\t\n0.533882266391644490,\t0.533839987783085720,\t0.533797707839927300,\t0.533755426562274700,\t0.533713143950233390,\t0.533670860003908950,\t0.533628574723407740,\t0.533586288108835020,\t\n0.533544000160296680,\t0.533501710877897880,\t0.533459420261745200,\t0.533417128311943990,\t0.533374835028599950,\t0.533332540411818430,\t0.533290244461705920,\t0.533247947178367880,\t\n0.533205648561909550,\t0.533163348612437420,\t0.533121047330057050,\t0.533078744714873930,\t0.533036440766993640,\t0.532994135486522640,\t0.532951828873566180,\t0.532909520928230300,\t\n0.532867211650620120,\t0.532824901040842350,\t0.532782589099002330,\t0.532740275825205890,\t0.532697961219558260,\t0.532655645282166250,\t0.532613328013134990,\t0.532571009412570520,\t\n0.532528689480578080,\t0.532486368217264250,\t0.532444045622734620,\t0.532401721697094430,\t0.532359396440450270,\t0.532317069852907720,\t0.532274741934572470,\t0.532232412685549880,\t\n0.532190082105946760,\t0.532147750195868460,\t0.532105416955420680,\t0.532063082384709010,\t0.532020746483840010,\t0.531978409252919170,\t0.531936070692052290,\t0.531893730801344830,\t\n0.531851389580903500,\t0.531809047030833650,\t0.531766703151241190,\t0.531724357942231500,\t0.531682011403911470,\t0.531639663536386250,\t0.531597314339761540,\t0.531554963814144020,\t\n0.531512611959638950,\t0.531470258776352460,\t0.531427904264389910,\t0.531385548423857990,\t0.531343191254862180,\t0.531300832757508390,\t0.531258472931902090,\t0.531216111778150090,\t\n0.531173749296357740,\t0.531131385486631080,\t0.531089020349075460,\t0.531046653883797790,\t0.531004286090903440,\t0.530961916970498330,\t0.530919546522688130,\t0.530877174747579340,\t\n0.530834801645277740,\t0.530792427215889040,\t0.530750051459518920,\t0.530707674376274090,\t0.530665295966260000,\t0.530622916229582350,\t0.530580535166347730,\t0.530538152776661830,\t\n0.530495769060630560,\t0.530453384018359510,\t0.530410997649955250,\t0.530368609955523600,\t0.530326220935170460,\t0.530283830589001300,\t0.530241438917122940,\t0.530199045919641070,\t\n0.530156651596661480,\t0.530114255948289980,\t0.530071858974633160,\t0.530029460675796700,\t0.529987061051886530,\t0.529944660103008450,\t0.529902257829269030,\t0.529859854230773970,\t\n0.529817449307628970,\t0.529775043059940610,\t0.529732635487814680,\t0.529690226591357230,\t0.529647816370673710,\t0.529605404825871150,\t0.529562991957055030,\t0.529520577764331370,\t\n0.529478162247805970,\t0.529435745407585530,\t0.529393327243775750,\t0.529350907756482520,\t0.529308486945811780,\t0.529266064811870220,\t0.529223641354763410,\t0.529181216574597490,\t\n0.529138790471478160,\t0.529096363045512330,\t0.529053934296805470,\t0.529011504225463500,\t0.528969072831593000,\t0.528926640115300000,\t0.528884206076690290,\t0.528841770715869690,\t\n0.528799334032945100,\t0.528756896028022120,\t0.528714456701206870,\t0.528672016052605160,\t0.528629574082323810,\t0.528587130790468480,\t0.528544686177145340,\t0.528502240242460060,\t\n0.528459792986519570,\t0.528417344409429670,\t0.528374894511296380,\t0.528332443292225510,\t0.528289990752323750,\t0.528247536891697230,\t0.528205081710451660,\t0.528162625208693170,\t\n0.528120167386528450,\t0.528077708244063300,\t0.528035247781403430,\t0.527992785998655960,\t0.527950322895926470,\t0.527907858473321110,\t0.527865392730945790,\t0.527822925668907320,\t\n0.527780457287311600,\t0.527737987586264670,\t0.527695516565872440,\t0.527653044226241820,\t0.527610570567478510,\t0.527568095589688870,\t0.527525619292978480,\t0.527483141677454470,\t\n0.527440662743222650,\t0.527398182490389170,\t0.527355700919059810,\t0.527313218029341610,\t0.527270733821340380,\t0.527228248295162020,\t0.527185761450913230,\t0.527143273288700140,\t\n0.527100783808628900,\t0.527058293010805310,\t0.527015800895336280,\t0.526973307462327840,\t0.526930812711886020,\t0.526888316644116950,\t0.526845819259127320,\t0.526803320557023170,\t\n0.526760820537910850,\t0.526718319201895930,\t0.526675816549085680,\t0.526633312579585900,\t0.526590807293502830,\t0.526548300690942270,\t0.526505792772011480,\t0.526463283536816040,\t\n0.526420772985462190,\t0.526378261118056630,\t0.526335747934705500,\t0.526293233435515040,\t0.526250717620591060,\t0.526208200490040690,\t0.526165682043969850,\t0.526123162282484680,\t\n0.526080641205691310,\t0.526038118813696780,\t0.525995595106606870,\t0.525953070084527960,\t0.525910543747566070,\t0.525868016095828120,\t0.525825487129420230,\t0.525782956848448560,\t\n0.525740425253019120,\t0.525697892343238940,\t0.525655358119214040,\t0.525612822581050470,\t0.525570285728855110,\t0.525527747562734130,\t0.525485208082793750,\t0.525442667289140020,\t\n0.525400125181879840,\t0.525357581761119460,\t0.525315037026965140,\t0.525272490979522780,\t0.525229943618899630,\t0.525187394945201610,\t0.525144844958535080,\t0.525102293659006180,\t\n0.525059741046721820,\t0.525017187121788020,\t0.524974631884311370,\t0.524932075334397790,\t0.524889517472154290,\t0.524846958297687130,\t0.524804397811102440,\t0.524761836012506480,\t\n0.524719272902006260,\t0.524676708479707820,\t0.524634142745717290,\t0.524591575700141810,\t0.524549007343087290,\t0.524506437674660320,\t0.524463866694966810,\t0.524421294404114110,\t\n0.524378720802208150,\t0.524336145889355400,\t0.524293569665661870,\t0.524250992131234720,\t0.524208413286180170,\t0.524165833130604610,\t0.524123251664614040,\t0.524080668888315840,\t\n0.524038084801815800,\t0.523995499405220610,\t0.523952912698636310,\t0.523910324682170140,\t0.523867735355928120,\t0.523825144720016400,\t0.523782552774542220,\t0.523739959519611610,\t\n0.523697364955331040,\t0.523654769081806750,\t0.523612171899146000,\t0.523569573407454690,\t0.523526973606839530,\t0.523484372497406540,\t0.523441770079262960,\t0.523399166352514930,\t\n0.523356561317269040,\t0.523313954973631310,\t0.523271347321709210,\t0.523228738361608660,\t0.523186128093436230,\t0.523143516517298070,\t0.523100903633301640,\t0.523058289441552860,\t\n0.523015673942157980,\t0.522973057135224240,\t0.522930439020857900,\t0.522887819599165530,\t0.522845198870253160,\t0.522802576834228150,\t0.522759953491196750,\t0.522717328841265540,\t\n0.522674702884540540,\t0.522632075621129120,\t0.522589447051137520,\t0.522546817174672330,\t0.522504185991839790,\t0.522461553502747140,\t0.522418919707500540,\t0.522376284606206660,\t\n0.522333648198971660,\t0.522291010485902980,\t0.522248371467106790,\t0.522205731142689640,\t0.522163089512757810,\t0.522120446577418520,\t0.522077802336778250,\t0.522035156790943030,\t\n0.521992509940020330,\t0.521949861784116290,\t0.521907212323337700,\t0.521864561557790600,\t0.521821909487582560,\t0.521779256112819720,\t0.521736601433608670,\t0.521693945450055870,\t\n0.521651288162268470,\t0.521608629570352920,\t0.521565969674415710,\t0.521523308474563300,\t0.521480645970902930,\t0.521437982163540980,\t0.521395317052584020,\t0.521352650638138400,\t\n0.521309982920311610,\t0.521267313899209770,\t0.521224643574939360,\t0.521181971947607630,\t0.521139299017321030,\t0.521096624784186170,\t0.521053949248309390,\t0.521011272409798050,\t\n0.520968594268758630,\t0.520925914825297600,\t0.520883234079521530,\t0.520840552031537670,\t0.520797868681452500,\t0.520755184029372600,\t0.520712498075404320,\t0.520669810819655240,\t\n0.520627122262231620,\t0.520584432403240150,\t0.520541741242787290,\t0.520499048780980410,\t0.520456355017925980,\t0.520413659953730230,\t0.520370963588500660,\t0.520328265922343820,\t\n0.520285566955366210,\t0.520242866687674280,\t0.520200165119375610,\t0.520157462250576570,\t0.520114758081383740,\t0.520072052611903810,\t0.520029345842244030,\t0.519986637772510860,\t\n0.519943928402811120,\t0.519901217733251260,\t0.519858505763938660,\t0.519815792494979780,\t0.519773077926481420,\t0.519730362058550050,\t0.519687644891293040,\t0.519644926424817080,\t\n0.519602206659228290,\t0.519559485594634380,\t0.519516763231141820,\t0.519474039568857290,\t0.519431314607887380,\t0.519388588348339450,\t0.519345860790320080,\t0.519303131933936070,\t\n0.519260401779293890,\t0.519217670326501010,\t0.519174937575664020,\t0.519132203526889600,\t0.519089468180284340,\t0.519046731535955820,\t0.519003993594010500,\t0.518961254354555090,\t\n0.518918513817696270,\t0.518875771983541510,\t0.518833028852197290,\t0.518790284423770510,\t0.518747538698367650,\t0.518704791676096290,\t0.518662043357063010,\t0.518619293741374170,\t\n0.518576542829137570,\t0.518533790620459570,\t0.518491037115447080,\t0.518448282314206590,\t0.518405526216845770,\t0.518362768823471210,\t0.518320010134189710,\t0.518277250149107750,\t\n0.518234488868333120,\t0.518191726291972190,\t0.518148962420131980,\t0.518106197252918950,\t0.518063430790440930,\t0.518020663032804250,\t0.517977893980115840,\t0.517935123632482400,\t\n0.517892351990011490,\t0.517849579052809820,\t0.517806804820983620,\t0.517764029294640940,\t0.517721252473888120,\t0.517678474358832190,\t0.517635694949579730,\t0.517592914246238430,\t\n0.517550132248914770,\t0.517507348957715770,\t0.517464564372748010,\t0.517421778494119300,\t0.517378991321936100,\t0.517336202856305440,\t0.517293413097333900,\t0.517250622045129170,\t\n0.517207829699797950,\t0.517165036061447040,\t0.517122241130183240,\t0.517079444906114240,\t0.517036647389346630,\t0.516993848579986980,\t0.516951048478143100,\t0.516908247083921580,\t\n0.516865444397429430,\t0.516822640418773350,\t0.516779835148061030,\t0.516737028585399050,\t0.516694220730894550,\t0.516651411584654110,\t0.516608601146785530,\t0.516565789417395500,\t\n0.516522976396590950,\t0.516480162084478560,\t0.516437346481166130,\t0.516394529586760460,\t0.516351711401368370,\t0.516308891925096550,\t0.516266071158053010,\t0.516223249100344230,\t\n0.516180425752077340,\t0.516137601113358930,\t0.516094775184297030,\t0.516051947964998090,\t0.516009119455569040,\t0.515966289656117460,\t0.515923458566750150,\t0.515880626187574240,\t\n0.515837792518696330,\t0.515794957560224310,\t0.515752121312265000,\t0.515709283774925310,\t0.515666444948312040,\t0.515623604832533000,\t0.515580763427694990,\t0.515537920733905140,\t\n0.515495076751270040,\t0.515452231479897600,\t0.515409384919894630,\t0.515366537071368150,\t0.515323687934424960,\t0.515280837509172970,\t0.515237985795718890,\t0.515195132794169400,\t\n0.515152278504632520,\t0.515109422927214840,\t0.515066566062023720,\t0.515023707909165740,\t0.514980848468748920,\t0.514937987740879950,\t0.514895125725665980,\t0.514852262423213910,\t\n0.514809397833631550,\t0.514766531957025600,\t0.514723664793503400,\t0.514680796343171650,\t0.514637926606138270,\t0.514595055582510060,\t0.514552183272394270,\t0.514509309675897590,\t\n0.514466434793128040,\t0.514423558624192310,\t0.514380681169197440,\t0.514337802428251110,\t0.514294922401460350,\t0.514252041088932300,\t0.514209158490773750,\t0.514166274607092740,\t\n0.514123389437995960,\t0.514080502983590760,\t0.514037615243983950,\t0.513994726219283440,\t0.513951835909596030,\t0.513908944315029090,\t0.513866051435689530,\t0.513823157271685040,\t\n0.513780261823122750,\t0.513737365090109810,\t0.513694467072753010,\t0.513651567771160500,\t0.513608667185439070,\t0.513565765315695530,\t0.513522862162038020,\t0.513479957724573330,\t\n0.513437052003408720,\t0.513394144998651210,\t0.513351236710408610,\t0.513308327138787930,\t0.513265416283896440,\t0.513222504145841030,\t0.513179590724729740,\t0.513136676020669480,\t\n0.513093760033767500,\t0.513050842764130820,\t0.513007924211867360,\t0.512965004377084030,\t0.512922083259888310,\t0.512879160860386870,\t0.512836237178687980,\t0.512793312214898540,\t\n0.512750385969125810,\t0.512707458441476690,\t0.512664529632059330,\t0.512621599540980630,\t0.512578668168347520,\t0.512535735514268120,\t0.512492801578849470,\t0.512449866362198800,\t\n0.512406929864423040,\t0.512363992085630330,\t0.512321053025927680,\t0.512278112685422340,\t0.512235171064221340,\t0.512192228162432820,\t0.512149283980163790,\t0.512106338517521410,\t\n0.512063391774612910,\t0.512020443751546320,\t0.511977494448428550,\t0.511934543865367080,\t0.511891592002468920,\t0.511848638859842110,\t0.511805684437593670,\t0.511762728735830730,\t\n0.511719771754661210,\t0.511676813494192360,\t0.511633853954531430,\t0.511590893135785540,\t0.511547931038062840,\t0.511504967661470240,\t0.511462003006115220,\t0.511419037072104790,\t\n0.511376069859547200,\t0.511333101368549370,\t0.511290131599218880,\t0.511247160551662640,\t0.511204188225988790,\t0.511161214622304570,\t0.511118239740717350,\t0.511075263581334040,\t\n0.511032286144262990,\t0.510989307429611240,\t0.510946327437485910,\t0.510903346167995040,\t0.510860363621245870,\t0.510817379797345760,\t0.510774394696401730,\t0.510731408318522260,\t\n0.510688420663814150,\t0.510645431732385080,\t0.510602441524341980,\t0.510559450039793190,\t0.510516457278845760,\t0.510473463241607140,\t0.510430467928184580,\t0.510387471338686230,\t\n0.510344473473219100,\t0.510301474331890880,\t0.510258473914808500,\t0.510215472222080410,\t0.510172469253813540,\t0.510129465010115580,\t0.510086459491093550,\t0.510043452696855800,\t\n0.510000444627509380,\t0.509957435283161510,\t0.509914424663920340,\t0.509871412769893120,\t0.509828399601187420,\t0.509785385157910390,\t0.509742369440170150,\t0.509699352448074070,\t\n0.509656334181729620,\t0.509613314641243930,\t0.509570293826725250,\t0.509527271738280940,\t0.509484248376018470,\t0.509441223740044970,\t0.509398197830468690,\t0.509355170647396990,\t\n0.509312142190937460,\t0.509269112461197100,\t0.509226081458284300,\t0.509183049182306390,\t0.509140015633370410,\t0.509096980811584830,\t0.509053944717056670,\t0.509010907349893740,\t\n0.508967868710203160,\t0.508924828798093310,\t0.508881787613671420,\t0.508838745157044970,\t0.508795701428321310,\t0.508752656427608810,\t0.508709610155014590,\t0.508666562610646470,\t\n0.508623513794611460,\t0.508580463707018040,\t0.508537412347973560,\t0.508494359717585500,\t0.508451305815961100,\t0.508408250643208940,\t0.508365194199436040,\t0.508322136484749780,\t\n0.508279077499258600,\t0.508236017243069770,\t0.508192955716290750,\t0.508149892919029120,\t0.508106828851393020,\t0.508063763513489920,\t0.508020696905427390,\t0.507977629027312800,\t\n0.507934559879254400,\t0.507891489461359650,\t0.507848417773736240,\t0.507805344816491310,\t0.507762270589733440,\t0.507719195093569890,\t0.507676118328108440,\t0.507633040293456240,\t\n0.507589960989721760,\t0.507546880417012460,\t0.507503798575435480,\t0.507460715465099520,\t0.507417631086111710,\t0.507374545438579740,\t0.507331458522611190,\t0.507288370338314200,\t\n0.507245280885796460,\t0.507202190165165430,\t0.507159098176528490,\t0.507116004919994200,\t0.507072910395669930,\t0.507029814603663480,\t0.506986717544081980,\t0.506943619217034120,\t\n0.506900519622627170,\t0.506857418760969010,\t0.506814316632166810,\t0.506771213236329340,\t0.506728108573563760,\t0.506685002643977870,\t0.506641895447679120,\t0.506598786984776010,\t\n0.506555677255375980,\t0.506512566259586290,\t0.506469453997515640,\t0.506426340469271260,\t0.506383225674961190,\t0.506340109614692560,\t0.506296992288574050,\t0.506253873696713040,\t\n0.506210753839217430,\t0.506167632716194470,\t0.506124510327752850,\t0.506081386673999930,\t0.506038261755043520,\t0.505995135570991180,\t0.505952008121951290,\t0.505908879408031420,\t\n0.505865749429339260,\t0.505822618185982510,\t0.505779485678069520,\t0.505736351905707760,\t0.505693216869004810,\t0.505650080568069150,\t0.505606943003008350,\t0.505563804173930100,\t\n0.505520664080941980,\t0.505477522724152690,\t0.505434380103669480,\t0.505391236219600360,\t0.505348091072052810,\t0.505304944661135290,\t0.505261796986955500,\t0.505218648049621240,\t\n0.505175497849239990,\t0.505132346385920310,\t0.505089193659769790,\t0.505046039670896230,\t0.505002884419407220,\t0.504959727905411440,\t0.504916570129016250,\t0.504873411090329350,\t\n0.504830250789459310,\t0.504787089226513610,\t0.504743926401600150,\t0.504700762314826520,\t0.504657596966301300,\t0.504614430356132180,\t0.504571262484426960,\t0.504528093351293230,\t\n0.504484922956839550,\t0.504441751301173640,\t0.504398578384403380,\t0.504355404206636160,\t0.504312228767980990,\t0.504269052068545110,\t0.504225874108436670,\t0.504182694887763130,\t\n0.504139514406633290,\t0.504096332665154630,\t0.504053149663435060,\t0.504009965401582380,\t0.503966779879705060,\t0.503923593097910790,\t0.503880405056307160,\t0.503837215755002950,\t\n0.503794025194105770,\t0.503750833373723390,\t0.503707640293963530,\t0.503664445954935090,\t0.503621250356745430,\t0.503578053499502690,\t0.503534855383314440,\t0.503491656008289380,\t\n0.503448455374535200,\t0.503405253482159920,\t0.503362050331271130,\t0.503318845921977510,\t0.503275640254386870,\t0.503232433328607120,\t0.503189225144745840,\t0.503146015702911840,\t\n0.503102805003212920,\t0.503059593045756540,\t0.503016379830651620,\t0.502973165358005740,\t0.502929949627926920,\t0.502886732640522860,\t0.502843514395902250,\t0.502800294894172990,\t\n0.502757074135442910,\t0.502713852119819780,\t0.502670628847412430,\t0.502627404318328530,\t0.502584178532676010,\t0.502540951490562770,\t0.502497723192097510,\t0.502454493637387920,\t\n0.502411262826542140,\t0.502368030759667740,\t0.502324797436873750,\t0.502281562858267750,\t0.502238327023957320,\t0.502195089934051600,\t0.502151851588658160,\t0.502108611987885030,\t\n0.502065371131839910,\t0.502022129020631920,\t0.501978885654368550,\t0.501935641033157910,\t0.501892395157107820,\t0.501849148026327070,\t0.501805899640923480,\t0.501762650001005170,\t\n0.501719399106679840,\t0.501676146958056400,\t0.501632893555242650,\t0.501589638898346620,\t0.501546382987476110,\t0.501503125822739930,\t0.501459867404246080,\t0.501416607732102060,\t\n0.501373346806416990,\t0.501330084627298560,\t0.501286821194854900,\t0.501243556509193720,\t0.501200290570424150,\t0.501157023378653750,\t0.501113754933990910,\t0.501070485236543180,\t\n0.501027214286419720,\t0.500983942083728210,\t0.500940668628576780,\t0.500897393921073350,\t0.500854117961326840,\t0.500810840749444930,\t0.500767562285535980,\t0.500724282569707800,\t\n0.500681001602069190,\t0.500637719382728160,\t0.500594435911792760,\t0.500551151189370990,\t0.500507865215571670,\t0.500464577990502590,\t0.500421289514271780,\t0.500377999786988160,\t\n0.500334708808759520,\t0.500291416579694110,\t0.500248123099899740,\t0.500204828369485430,\t0.500161532388559090,\t0.500118235157228860,\t0.500074936675602770,\t0.500031636943789600,\t\n0.499988335961897460,\t0.499945033730034400,\t0.499901730248308420,\t0.499858425516828460,\t0.499815119535702460,\t0.499771812305038640,\t0.499728503824944940,\t0.499685194095530310,\t\n0.499641883116902720,\t0.499598570889170030,\t0.499555257412441330,\t0.499511942686824470,\t0.499468626712427750,\t0.499425309489359090,\t0.499381991017727510,\t0.499338671297640980,\t\n0.499295350329207800,\t0.499252028112535770,\t0.499208704647734150,\t0.499165379934910720,\t0.499122053974173860,\t0.499078726765631480,\t0.499035398309392640,\t0.498992068605565330,\t\n0.498948737654257850,\t0.498905405455578100,\t0.498862072009635280,\t0.498818737316537250,\t0.498775401376391980,\t0.498732064189308600,\t0.498688725755395080,\t0.498645386074759720,\t\n0.498602045147510550,\t0.498558702973756600,\t0.498515359553605930,\t0.498472014887166860,\t0.498428668974547350,\t0.498385321815856540,\t0.498341973411202450,\t0.498298623760693450,\t\n0.498255272864437440,\t0.498211920722543720,\t0.498168567335120100,\t0.498125212702275110,\t0.498081856824116710,\t0.498038499700754090,\t0.497995141332295170,\t0.497951781718848410,\t\n0.497908420860521780,\t0.497865058757424540,\t0.497821695409664590,\t0.497778330817350070,\t0.497734964980590110,\t0.497691597899492690,\t0.497648229574166320,\t0.497604860004718990,\t\n0.497561489191259860,\t0.497518117133897040,\t0.497474743832738870,\t0.497431369287893550,\t0.497387993499470100,\t0.497344616467576720,\t0.497301238192321800,\t0.497257858673813390,\t\n0.497214477912160720,\t0.497171095907471830,\t0.497127712659855230,\t0.497084328169418940,\t0.497040942436272230,\t0.496997555460523210,\t0.496954167242279870,\t0.496910777781651490,\t\n0.496867387078746170,\t0.496823995133672370,\t0.496780601946538230,\t0.496737207517452930,\t0.496693811846524670,\t0.496650414933861810,\t0.496607016779572590,\t0.496563617383766200,\t\n0.496520216746550720,\t0.496476814868034740,\t0.496433411748326340,\t0.496390007387534800,\t0.496346601785768230,\t0.496303194943135130,\t0.496259786859743700,\t0.496216377535703130,\t\n0.496172966971121680,\t0.496129555166107410,\t0.496086142120769620,\t0.496042727835216520,\t0.495999312309556570,\t0.495955895543897910,\t0.495912477538349940,\t0.495869058293020800,\t\n0.495825637808018970,\t0.495782216083452690,\t0.495738793119431250,\t0.495695368916062810,\t0.495651943473455980,\t0.495608516791718860,\t0.495565088870960900,\t0.495521659711290140,\t\n0.495478229312815270,\t0.495434797675644470,\t0.495391364799886990,\t0.495347930685651190,\t0.495304495333045490,\t0.495261058742178180,\t0.495217620913158630,\t0.495174181846095020,\t\n0.495130741541095600,\t0.495087299998269670,\t0.495043857217725480,\t0.495000413199571660,\t0.494956967943916410,\t0.494913521450869200,\t0.494870073720538100,\t0.494826624753031850,\t\n0.494783174548458660,\t0.494739723106927930,\t0.494696270428547860,\t0.494652816513427130,\t0.494609361361673940,\t0.494565904973397750,\t0.494522447348706820,\t0.494478988487709770,\t\n0.494435528390514860,\t0.494392067057231540,\t0.494348604487968020,\t0.494305140682832600,\t0.494261675641934680,\t0.494218209365382630,\t0.494174741853285030,\t0.494131273105750220,\t\n0.494087803122887580,\t0.494044331904805460,\t0.494000859451612480,\t0.493957385763416970,\t0.493913910840328430,\t0.493870434682455060,\t0.493826957289905610,\t0.493783478662788380,\t\n0.493739998801212890,\t0.493696517705287330,\t0.493653035375120510,\t0.493609551810820720,\t0.493566067012497440,\t0.493522580980258970,\t0.493479093714213670,\t0.493435605214471050,\t\n0.493392115481139370,\t0.493348624514327430,\t0.493305132314143520,\t0.493261638880697240,\t0.493218144214096770,\t0.493174648314451010,\t0.493131151181868180,\t0.493087652816457890,\t\n0.493044153218328510,\t0.493000652387588670,\t0.492957150324346840,\t0.492913647028712540,\t0.492870142500794140,\t0.492826636740700320,\t0.492783129748539550,\t0.492739621524421360,\t\n0.492696112068454100,\t0.492652601380746180,\t0.492609089461407130,\t0.492565576310545430,\t0.492522061928269690,\t0.492478546314688460,\t0.492435029469911250,\t0.492391511394046470,\t\n0.492347992087202870,\t0.492304471549488920,\t0.492260949781014200,\t0.492217426781887070,\t0.492173902552216440,\t0.492130377092110600,\t0.492086850401679210,\t0.492043322481030720,\t\n0.491999793330273940,\t0.491956262949517280,\t0.491912731338870310,\t0.491869198498441570,\t0.491825664428339800,\t0.491782129128673470,\t0.491738592599552220,\t0.491695054841084500,\t\n0.491651515853378740,\t0.491607975636544570,\t0.491564434190690510,\t0.491520891515925320,\t0.491477347612357510,\t0.491433802480096720,\t0.491390256119251470,\t0.491346708529930510,\t\n0.491303159712242420,\t0.491259609666296840,\t0.491216058392202230,\t0.491172505890067450,\t0.491128952160001080,\t0.491085397202112640,\t0.491041841016510720,\t0.490998283603304220,\t\n0.490954724962601620,\t0.490911165094512600,\t0.490867603999145700,\t0.490824041676609310,\t0.490780478127013310,\t0.490736913350466040,\t0.490693347347076540,\t0.490649780116953260,\t\n0.490606211660205900,\t0.490562641976942990,\t0.490519071067273550,\t0.490475498931305990,\t0.490431925569150050,\t0.490388350980914380,\t0.490344775166707770,\t0.490301198126638860,\t\n0.490257619860817280,\t0.490214040369351730,\t0.490170459652351060,\t0.490126877709923860,\t0.490083294542179800,\t0.490039710149227540,\t0.489996124531175640,\t0.489952537688133790,\t\n0.489908949620210590,\t0.489865360327515040,\t0.489821769810155680,\t0.489778178068242310,\t0.489734585101883500,\t0.489690990911188170,\t0.489647395496265010,\t0.489603798857223770,\t\n0.489560200994173020,\t0.489516601907221740,\t0.489473001596478610,\t0.489429400062053320,\t0.489385797304054570,\t0.489342193322591320,\t0.489298588117772160,\t0.489254981689706940,\t\n0.489211374038504290,\t0.489167765164273180,\t0.489124155067122310,\t0.489080543747161370,\t0.489036931204499150,\t0.488993317439244120,\t0.488949702451506260,\t0.488906086241394140,\t\n0.488862468809016790,\t0.488818850154482840,\t0.488775230277902210,\t0.488731609179383520,\t0.488687986859035750,\t0.488644363316967640,\t0.488600738553289000,\t0.488557112568108520,\t\n0.488513485361535270,\t0.488469856933677950,\t0.488426227284646350,\t0.488382596414549170,\t0.488338964323495490,\t0.488295331011594060,\t0.488251696478954610,\t0.488208060725686010,\t\n0.488164423751896840,\t0.488120785557696950,\t0.488077146143195140,\t0.488033505508500440,\t0.487989863653721660,\t0.487946220578968530,\t0.487902576284349850,\t0.487858930769974770,\t\n0.487815284035951980,\t0.487771636082391320,\t0.487727986909401610,\t0.487684336517091920,\t0.487640684905571000,\t0.487597032074948760,\t0.487553378025333940,\t0.487509722756835680,\t\n0.487466066269562680,\t0.487422408563624950,\t0.487378749639131190,\t0.487335089496190140,\t0.487291428134911830,\t0.487247765555404890,\t0.487204101757778560,\t0.487160436742141540,\t\n0.487116770508603860,\t0.487073103057274250,\t0.487029434388261910,\t0.486985764501675520,\t0.486942093397625180,\t0.486898421076219560,\t0.486854747537567910,\t0.486811072781778990,\t\n0.486767396808962800,\t0.486723719619228110,\t0.486680041212684100,\t0.486636361589439630,\t0.486592680749604660,\t0.486548998693287940,\t0.486505315420598330,\t0.486461630931645850,\t\n0.486417945226539310,\t0.486374258305387890,\t0.486330570168300390,\t0.486286880815386900,\t0.486243190246756220,\t0.486199498462517530,\t0.486155805462779700,\t0.486112111247652800,\t\n0.486068415817245580,\t0.486024719171667340,\t0.485981021311026880,\t0.485937322235434290,\t0.485893621944998360,\t0.485849920439828390,\t0.485806217720033240,\t0.485762513785722940,\t\n0.485718808637006340,\t0.485675102273992740,\t0.485631394696791010,\t0.485587685905511160,\t0.485543975900262050,\t0.485500264681152650,\t0.485456552248292980,\t0.485412838601791960,\t\n0.485369123741758830,\t0.485325407668302460,\t0.485281690381533020,\t0.485237971881559260,\t0.485194252168490660,\t0.485150531242436010,\t0.485106809103505400,\t0.485063085751807790,\t\n0.485019361187452480,\t0.484975635410548390,\t0.484931908421205540,\t0.484888180219532950,\t0.484844450805639930,\t0.484800720179635380,\t0.484756988341629450,\t0.484713255291730980,\t\n0.484669521030049010,\t0.484625785556693670,\t0.484582048871773810,\t0.484538310975398840,\t0.484494571867677750,\t0.484450831548720540,\t0.484407090018636300,\t0.484363347277534330,\t\n0.484319603325523600,\t0.484275858162714290,\t0.484232111789215270,\t0.484188364205136000,\t0.484144615410585450,\t0.484100865405673710,\t0.484057114190509840,\t0.484013361765203150,\t\n0.483969608129862730,\t0.483925853284598640,\t0.483882097229519910,\t0.483838339964735520,\t0.483794581490355700,\t0.483750821806489480,\t0.483707060913246110,\t0.483663298810734780,\t\n0.483619535499065560,\t0.483575770978347470,\t0.483532005248690000,\t0.483488238310202100,\t0.483444470162994020,\t0.483400700807174730,\t0.483356930242853700,\t0.483313158470139950,\t\n0.483269385489143720,\t0.483225611299973990,\t0.483181835902740280,\t0.483138059297551550,\t0.483094281484518110,\t0.483050502463748920,\t0.483006722235353460,\t0.482962940799440850,\t\n0.482919158156121240,\t0.482875374305503760,\t0.482831589247697480,\t0.482787802982812540,\t0.482744015510958190,\t0.482700226832243730,\t0.482656436946778340,\t0.482612645854672230,\t\n0.482568853556034520,\t0.482525060050974670,\t0.482481265339601780,\t0.482437469422026140,\t0.482393672298356780,\t0.482349873968703270,\t0.482306074433174690,\t0.482262273691881290,\t\n0.482218471744932260,\t0.482174668592436960,\t0.482130864234504690,\t0.482087058671245570,\t0.482043251902768870,\t0.481999443929183650,\t0.481955634750600160,\t0.481911824367127590,\t\n0.481868012778875480,\t0.481824199985952940,\t0.481780385988470340,\t0.481736570786536700,\t0.481692754380261660,\t0.481648936769754400,\t0.481605117955125120,\t0.481561297936483060,\t\n0.481517476713937740,\t0.481473654287598360,\t0.481429830657575220,\t0.481386005823977560,\t0.481342179786914850,\t0.481298352546496280,\t0.481254524102832200,\t0.481210694456031870,\t\n0.481166863606204360,\t0.481123031553460090,\t0.481079198297908290,\t0.481035363839658450,\t0.480991528178819850,\t0.480947691315502750,\t0.480903853249816490,\t0.480860013981870560,\t\n0.480816173511774190,\t0.480772331839637860,\t0.480728488965570630,\t0.480684644889682160,\t0.480640799612081730,\t0.480596953132879700,\t0.480553105452185270,\t0.480509256570108070,\t\n0.480465406486757340,\t0.480421555202243500,\t0.480377702716675740,\t0.480333849030163350,\t0.480289994142816760,\t0.480246138054745140,\t0.480202280766058200,\t0.480158422276865170,\t\n0.480114562587276470,\t0.480070701697401350,\t0.480026839607349490,\t0.479982976317230140,\t0.479939111827153710,\t0.479895246137229500,\t0.479851379247567210,\t0.479807511158276080,\t\n0.479763641869466570,\t0.479719771381247940,\t0.479675899693729870,\t0.479632026807021660,\t0.479588152721233780,\t0.479544277436475540,\t0.479500400952856620,\t0.479456523270486270,\t\n0.479412644389475010,\t0.479368764309932140,\t0.479324883031966960,\t0.479281000555689950,\t0.479237116881210510,\t0.479193232008638230,\t0.479149345938082450,\t0.479105458669653710,\t\n0.479061570203461350,\t0.479017680539615080,\t0.478973789678224180,\t0.478929897619399190,\t0.478886004363249460,\t0.478842109909884740,\t0.478798214259414380,\t0.478754317411948850,\t\n0.478710419367597510,\t0.478666520126470150,\t0.478622619688676090,\t0.478578718054325840,\t0.478534815223528810,\t0.478490911196394360,\t0.478447005973033020,\t0.478403099553554200,\t\n0.478359191938067580,\t0.478315283126682590,\t0.478271373119509850,\t0.478227461916658600,\t0.478183549518238720,\t0.478139635924359600,\t0.478095721135131770,\t0.478051805150664590,\t\n0.478007887971067970,\t0.477963969596451210,\t0.477920050026924890,\t0.477876129262598480,\t0.477832207303581720,\t0.477788284149984090,\t0.477744359801916100,\t0.477700434259487270,\t\n0.477656507522806920,\t0.477612579591985660,\t0.477568650467132980,\t0.477524720148358670,\t0.477480788635772200,\t0.477436855929484150,\t0.477392922029603930,\t0.477348986936241390,\t\n0.477305050649506010,\t0.477261113169508420,\t0.477217174496358030,\t0.477173234630164700,\t0.477129293571037890,\t0.477085351319088250,\t0.477041407874425230,\t0.476997463237158690,\t\n0.476953517407398110,\t0.476909570385254110,\t0.476865622170836170,\t0.476821672764254190,\t0.476777722165617650,\t0.476733770375037170,\t0.476689817392622280,\t0.476645863218482460,\t\n0.476601907852728380,\t0.476557951295469520,\t0.476513993546815780,\t0.476470034606876650,\t0.476426074475762850,\t0.476382113153583860,\t0.476338150640449600,\t0.476294186936469580,\t\n0.476250222041754430,\t0.476206255956413750,\t0.476162288680557430,\t0.476118320214295010,\t0.476074350557737170,\t0.476030379710993490,\t0.475986407674173830,\t0.475942434447387760,\t\n0.475898460030745980,\t0.475854484424358070,\t0.475810507628333550,\t0.475766529642783150,\t0.475722550467816420,\t0.475678570103543310,\t0.475634588550073400,\t0.475590605807517440,\t\n0.475546621875984900,\t0.475502636755585850,\t0.475458650446429820,\t0.475414662948627550,\t0.475370674262288630,\t0.475326684387523010,\t0.475282693324440290,\t0.475238701073151190,\t\n0.475194707633765370,\t0.475150713006392780,\t0.475106717191143060,\t0.475062720188126900,\t0.475018721997453930,\t0.474974722619233790,\t0.474930722053577170,\t0.474886720300593810,\t\n0.474842717360393630,\t0.474798713233086260,\t0.474754707918782550,\t0.474710701417591970,\t0.474666693729624720,\t0.474622684854990320,\t0.474578674793799620,\t0.474534663546162190,\t\n0.474490651112188130,\t0.474446637491987070,\t0.474402622685669740,\t0.474358606693345900,\t0.474314589515125560,\t0.474270571151118310,\t0.474226551601435060,\t0.474182530866185450,\t\n0.474138508945479040,\t0.474094485839426820,\t0.474050461548138350,\t0.474006436071723770,\t0.473962409410292660,\t0.473918381563955940,\t0.473874352532823280,\t0.473830322317004730,\t\n0.473786290916609950,\t0.473742258331749880,\t0.473698224562534130,\t0.473654189609072850,\t0.473610153471475670,\t0.473566116149853560,\t0.473522077644316090,\t0.473478037954973450,\t\n0.473433997081935340,\t0.473389955025312610,\t0.473345911785215010,\t0.473301867361752620,\t0.473257821755035170,\t0.473213774965173530,\t0.473169726992277500,\t0.473125677836456760,\t\n0.473081627497822180,\t0.473037575976483550,\t0.472993523272551010,\t0.472949469386134190,\t0.472905414317344170,\t0.472861358066290590,\t0.472817300633083580,\t0.472773242017833000,\t\n0.472729182220649640,\t0.472685121241643360,\t0.472641059080924240,\t0.472596995738602140,\t0.472552931214787860,\t0.472508865509591310,\t0.472464798623122630,\t0.472420730555491500,\t\n0.472376661306808940,\t0.472332590877184770,\t0.472288519266728660,\t0.472244446475551690,\t0.472200372503763620,\t0.472156297351474570,\t0.472112221018794460,\t0.472068143505834150,\t\n0.472024064812703480,\t0.471979984939512600,\t0.471935903886371410,\t0.471891821653390890,\t0.471847738240680770,\t0.471803653648351310,\t0.471759567876512300,\t0.471715480925274820,\t\n0.471671392794748620,\t0.471627303485043890,\t0.471583212996270540,\t0.471539121328539590,\t0.471495028481960790,\t0.471450934456644040,\t0.471406839252700330,\t0.471362742870239550,\t\n0.471318645309371900,\t0.471274546570207230,\t0.471230446652856630,\t0.471186345557429890,\t0.471142243284037250,\t0.471098139832788640,\t0.471054035203795070,\t0.471009929397166460,\t\n0.470965822413012990,\t0.470921714251444520,\t0.470877604912572250,\t0.470833494396505900,\t0.470789382703355800,\t0.470745269833231890,\t0.470701155786245220,\t0.470657040562505620,\t\n0.470612924162123410,\t0.470568806585208550,\t0.470524687831872070,\t0.470480567902223810,\t0.470436446796373750,\t0.470392324514432970,\t0.470348201056511430,\t0.470304076422719320,\t\n0.470259950613166670,\t0.470215823627964550,\t0.470171695467222820,\t0.470127566131051890,\t0.470083435619561620,\t0.470039303932863140,\t0.469995171071066480,\t0.469951037034281820,\t\n0.469906901822619180,\t0.469862765436189710,\t0.469818627875103310,\t0.469774489139470340,\t0.469730349229400770,\t0.469686208145005670,\t0.469642065886395120,\t0.469597922453678980,\t\n0.469553777846968450,\t0.469509632066373420,\t0.469465485112004370,\t0.469421336983971150,\t0.469377187682385010,\t0.469333037207355920,\t0.469288885558994230,\t0.469244732737409960,\t\n0.469200578742714200,\t0.469156423575017020,\t0.469112267234428780,\t0.469068109721059450,\t0.469023951035020260,\t0.468979791176421190,\t0.468935630145372650,\t0.468891467941984660,\t\n0.468847304566368360,\t0.468803140018633820,\t0.468758974298891020,\t0.468714807407251190,\t0.468670639343824360,\t0.468626470108720940,\t0.468582299702050900,\t0.468538128123925530,\t\n0.468493955374454820,\t0.468449781453749270,\t0.468405606361918800,\t0.468361430099074770,\t0.468317252665327140,\t0.468273074060786390,\t0.468228894285562580,\t0.468184713339766860,\t\n0.468140531223509400,\t0.468096347936900640,\t0.468052163480050580,\t0.468007977853070520,\t0.467963791056070500,\t0.467919603089160640,\t0.467875413952452130,\t0.467831223646055120,\t\n0.467787032170080000,\t0.467742839524636970,\t0.467698645709837210,\t0.467654450725790820,\t0.467610254572608300,\t0.467566057250399740,\t0.467521858759276490,\t0.467477659099348520,\t\n0.467433458270726470,\t0.467389256273520350,\t0.467345053107841470,\t0.467300848773799960,\t0.467256643271506340,\t0.467212436601070700,\t0.467168228762604390,\t0.467124019756217530,\t\n0.467079809582020560,\t0.467035598240123690,\t0.466991385730638250,\t0.466947172053674310,\t0.466902957209342110,\t0.466858741197752840,\t0.466814524019016740,\t0.466770305673244350,\t\n0.466726086160545780,\t0.466681865481032350,\t0.466637643634814300,\t0.466593420622002150,\t0.466549196442706040,\t0.466504971097037370,\t0.466460744585106220,\t0.466416516907023240,\t\n0.466372288062898540,\t0.466328058052843550,\t0.466283826876968400,\t0.466239594535383660,\t0.466195361028199580,\t0.466151126355527470,\t0.466106890517477560,\t0.466062653514160040,\t\n0.466018415345686220,\t0.465974176012166450,\t0.465929935513711200,\t0.465885693850430660,\t0.465841451022436350,\t0.465797207029838400,\t0.465752961872747400,\t0.465708715551273630,\t\n0.465664468065528470,\t0.465620219415622150,\t0.465575969601665250,\t0.465531718623768080,\t0.465487466482041980,\t0.465443213176597200,\t0.465398958707544390,\t0.465354703074993770,\t\n0.465310446279056820,\t0.465266188319843730,\t0.465221929197464800,\t0.465177668912031440,\t0.465133407463653890,\t0.465089144852442850,\t0.465044881078508550,\t0.465000616141962420,\t\n0.464956350042914750,\t0.464912082781476220,\t0.464867814357757090,\t0.464823544771868770,\t0.464779274023921660,\t0.464735002114026300,\t0.464690729042293080,\t0.464646454808833430,\t\n0.464602179413757640,\t0.464557902857176410,\t0.464513625139200030,\t0.464469346259939960,\t0.464425066219506520,\t0.464380785018010440,\t0.464336502655562030,\t0.464292219132272700,\t\n0.464247934448252850,\t0.464203648603612740,\t0.464159361598463940,\t0.464115073432916750,\t0.464070784107081860,\t0.464026493621069570,\t0.463982201974991510,\t0.463937909168957880,\t\n0.463893615203079530,\t0.463849320077466710,\t0.463805023792230990,\t0.463760726347482780,\t0.463716427743332660,\t0.463672127979891100,\t0.463627827057269630,\t0.463583524975578590,\t\n0.463539221734928730,\t0.463494917335430470,\t0.463450611777195260,\t0.463406305060333530,\t0.463361997184955630,\t0.463317688151173190,\t0.463273377959096460,\t0.463229066608836340,\t\n0.463184754100503080,\t0.463140440434208430,\t0.463096125610062580,\t0.463051809628176490,\t0.463007492488660470,\t0.462963174191626080,\t0.462918854737183800,\t0.462874534125444330,\t\n0.462830212356518170,\t0.462785889430516850,\t0.462741565347550840,\t0.462697240107730890,\t0.462652913711167460,\t0.462608586157972120,\t0.462564257448255360,\t0.462519927582127510,\t\n0.462475596559700270,\t0.462431264381084010,\t0.462386931046389620,\t0.462342596555727510,\t0.462298260909209280,\t0.462253924106945380,\t0.462209586149046730,\t0.462165247035623670,\t\n0.462120906766787910,\t0.462076565342649850,\t0.462032222763320400,\t0.461987879028910030,\t0.461943534139530320,\t0.461899188095291740,\t0.461854840896305240,\t0.461810492542681250,\t\n0.461766143034531400,\t0.461721792371966200,\t0.461677440555096130,\t0.461633087584032880,\t0.461588733458886850,\t0.461544378179769010,\t0.461500021746789830,\t0.461455664160061010,\t\n0.461411305419693050,\t0.461366945525796770,\t0.461322584478482790,\t0.461278222277862690,\t0.461233858924047060,\t0.461189494417146790,\t0.461145128757272370,\t0.461100761944535530,\t\n0.461056393979046800,\t0.461012024860917020,\t0.460967654590256850,\t0.460923283167177960,\t0.460878910591790810,\t0.460834536864206390,\t0.460790161984535260,\t0.460745785952889060,\t\n0.460701408769378480,\t0.460657030434113930,\t0.460612650947207210,\t0.460568270308768850,\t0.460523888518909850,\t0.460479505577740700,\t0.460435121485373190,\t0.460390736241917900,\t\n0.460346349847485740,\t0.460301962302187340,\t0.460257573606134400,\t0.460213183759437540,\t0.460168792762207680,\t0.460124400614555510,\t0.460080007316592710,\t0.460035612868429870,\t\n0.459991217270178000,\t0.459946820521947740,\t0.459902422623850780,\t0.459858023575997750,\t0.459813623378499290,\t0.459769222031467200,\t0.459724819535011990,\t0.459680415889244800,\t\n0.459636011094276100,\t0.459591605150217800,\t0.459547198057180530,\t0.459502789815275200,\t0.459458380424612510,\t0.459413969885304310,\t0.459369558197461170,\t0.459325145361194120,\t\n0.459280731376613790,\t0.459236316243832100,\t0.459191899962959560,\t0.459147482534107250,\t0.459103063957385870,\t0.459058644232907260,\t0.459014223360782010,\t0.458969801341120750,\t\n0.458925378174035450,\t0.458880953859636730,\t0.458836528398035570,\t0.458792101789342710,\t0.458747674033670010,\t0.458703245131128090,\t0.458658815081828040,\t0.458614383885880610,\t\n0.458569951543397580,\t0.458525518054489710,\t0.458481083419268020,\t0.458436647637843200,\t0.458392210710327210,\t0.458347772636830690,\t0.458303333417464710,\t0.458258893052340020,\t\n0.458214451541568480,\t0.458170008885260770,\t0.458125565083528090,\t0.458081120136481110,\t0.458036674044231710,\t0.457992226806890610,\t0.457947778424568570,\t0.457903328897377450,\t\n0.457858878225428030,\t0.457814426408831410,\t0.457769973447698380,\t0.457725519342140730,\t0.457681064092269330,\t0.457636607698195250,\t0.457592150160029240,\t0.457547691477883320,\t\n0.457503231651868130,\t0.457458770682094840,\t0.457414308568674210,\t0.457369845311718260,\t0.457325380911337680,\t0.457280915367643650,\t0.457236448680746920,\t0.457191980850759460,\t\n0.457147511877792070,\t0.457103041761955490,\t0.457058570503361740,\t0.457014098102121510,\t0.456969624558346050,\t0.456925149872146160,\t0.456880674043633750,\t0.456836197072919670,\t\n0.456791718960115110,\t0.456747239705330820,\t0.456702759308678870,\t0.456658277770270020,\t0.456613795090215490,\t0.456569311268626040,\t0.456524826305613700,\t0.456480340201289300,\t\n0.456435852955764110,\t0.456391364569148810,\t0.456346875041555520,\t0.456302384373095060,\t0.456257892563878280,\t0.456213399614017080,\t0.456168905523622440,\t0.456124410292805480,\t\n0.456079913921677180,\t0.456035416410349450,\t0.455990917758933190,\t0.455946417967539600,\t0.455901917036279580,\t0.455857414965265220,\t0.455812911754607250,\t0.455768407404417040,\t\n0.455723901914805380,\t0.455679395285884410,\t0.455634887517764930,\t0.455590378610558230,\t0.455545868564375180,\t0.455501357379327840,\t0.455456845055527140,\t0.455412331593083920,\t\n0.455367816992110260,\t0.455323301252717080,\t0.455278784375015620,\t0.455234266359116850,\t0.455189747205132780,\t0.455145226913174330,\t0.455100705483352850,\t0.455056182915779150,\t\n0.455011659210565410,\t0.454967134367822550,\t0.454922608387661850,\t0.454878081270194250,\t0.454833553015531800,\t0.454789023623785480,\t0.454744493095066590,\t0.454699961429486100,\t\n0.454655428627156080,\t0.454610894688187490,\t0.454566359612691650,\t0.454521823400779570,\t0.454477286052563270,\t0.454432747568153770,\t0.454388207947662050,\t0.454343667191200170,\t\n0.454299125298879110,\t0.454254582270810230,\t0.454210038107104530,\t0.454165492807874100,\t0.454120946373229970,\t0.454076398803283490,\t0.454031850098145560,\t0.453987300257928440,\t\n0.453942749282743030,\t0.453898197172700800,\t0.453853643927912660,\t0.453809089548490810,\t0.453764534034546250,\t0.453719977386190300,\t0.453675419603534080,\t0.453630860686689670,\t\n0.453586300635768100,\t0.453541739450880390,\t0.453497177132138720,\t0.453452613679654120,\t0.453408049093537990,\t0.453363483373901370,\t0.453318916520856370,\t0.453274348534514090,\t\n0.453229779414985990,\t0.453185209162383030,\t0.453140637776817400,\t0.453096065258400240,\t0.453051491607242900,\t0.453006916823456400,\t0.452962340907153040,\t0.452917763858443790,\t\n0.452873185677440170,\t0.452828606364253150,\t0.452784025918995030,\t0.452739444341776880,\t0.452694861632709670,\t0.452650277791905750,\t0.452605692819476100,\t0.452561106715532240,\t\n0.452516519480185180,\t0.452471931113547220,\t0.452427341615729510,\t0.452382750986843380,\t0.452338159226999990,\t0.452293566336311570,\t0.452248972314889250,\t0.452204377162844510,\t\n0.452159780880288460,\t0.452115183467333310,\t0.452070584924090250,\t0.452025985250670670,\t0.451981384447185770,\t0.451936782513747800,\t0.451892179450467830,\t0.451847575257457450,\t\n0.451802969934827710,\t0.451758363482690990,\t0.451713755901158360,\t0.451669147190340900,\t0.451624537350351020,\t0.451579926381299730,\t0.451535314283298680,\t0.451490701056458940,\t\n0.451446086700892810,\t0.451401471216711480,\t0.451356854604026470,\t0.451312236862948970,\t0.451267617993591220,\t0.451222997996064470,\t0.451178376870480180,\t0.451133754616949540,\t\n0.451089131235584970,\t0.451044506726497540,\t0.450999881089798830,\t0.450955254325600070,\t0.450910626434013530,\t0.450865997415150430,\t0.450821367269121920,\t0.450776735996040460,\t\n0.450732103596017120,\t0.450687470069163490,\t0.450642835415590800,\t0.450598199635411420,\t0.450553562728736590,\t0.450508924695677770,\t0.450464285536346320,\t0.450419645250854540,\t\n0.450375003839313610,\t0.450330361301835180,\t0.450285717638530420,\t0.450241072849511810,\t0.450196426934890540,\t0.450151779894778170,\t0.450107131729285960,\t0.450062482438526310,\t\n0.450017832022610480,\t0.449973180481649640,\t0.449928527815756260,\t0.449883874025041540,\t0.449839219109617160,\t0.449794563069594310,\t0.449749905905085460,\t0.449705247616201900,\t\n0.449660588203055160,\t0.449615927665756530,\t0.449571266004418550,\t0.449526603219152390,\t0.449481939310069690,\t0.449437274277281750,\t0.449392608120901040,\t0.449347940841038800,\t\n0.449303272437806660,\t0.449258602911316030,\t0.449213932261679220,\t0.449169260489007630,\t0.449124587593412450,\t0.449079913575006210,\t0.449035238433900200,\t0.448990562170206110,\t\n0.448945884784035190,\t0.448901206275499950,\t0.448856526644711710,\t0.448811845891782140,\t0.448767164016822600,\t0.448722481019945500,\t0.448677796901262250,\t0.448633111660884430,\t\n0.448588425298923510,\t0.448543737815491890,\t0.448499049210700880,\t0.448454359484662330,\t0.448409668637487440,\t0.448364976669288760,\t0.448320283580177670,\t0.448275589370265900,\t\n0.448230894039664710,\t0.448186197588486710,\t0.448141500016843160,\t0.448096801324845530,\t0.448052101512606270,\t0.448007400580236750,\t0.447962698527848760,\t0.447917995355553540,\t\n0.447873291063463800,\t0.447828585651690810,\t0.447783879120346400,\t0.447739171469541840,\t0.447694462699389780,\t0.447649752810001580,\t0.447605041801488970,\t0.447560329673963360,\t\n0.447515616427537340,\t0.447470902062322260,\t0.447426186578429920,\t0.447381469975971720,\t0.447336752255060250,\t0.447292033415806920,\t0.447247313458323080,\t0.447202592382721360,\t\n0.447157870189113130,\t0.447113146877610280,\t0.447068422448324120,\t0.447023696901367340,\t0.446978970236851290,\t0.446934242454887830,\t0.446889513555588370,\t0.446844783539065540,\t\n0.446800052405430690,\t0.446755320154795740,\t0.446710586787272100,\t0.446665852302972400,\t0.446621116702008050,\t0.446576379984490960,\t0.446531642150532480,\t0.446486903200245260,\t\n0.446442163133740800,\t0.446397421951130580,\t0.446352679652527170,\t0.446307936238042050,\t0.446263191707787110,\t0.446218446061873770,\t0.446173699300414730,\t0.446128951423521490,\t\n0.446084202431305810,\t0.446039452323879200,\t0.445994701101354420,\t0.445949948763842860,\t0.445905195311456450,\t0.445860440744306640,\t0.445815685062506130,\t0.445770928266166380,\t\n0.445726170355399350,\t0.445681411330316470,\t0.445636651191030460,\t0.445591889937652810,\t0.445547127570295460,\t0.445502364089069900,\t0.445457599494088810,\t0.445412833785463700,\t\n0.445368066963306160,\t0.445323299027728830,\t0.445278529978843260,\t0.445233759816761330,\t0.445188988541594610,\t0.445144216153455840,\t0.445099442652456550,\t0.445054668038708630,\t\n0.445009892312323630,\t0.444965115473414330,\t0.444920337522092200,\t0.444875558458469210,\t0.444830778282656990,\t0.444785996994768170,\t0.444741214594914390,\t0.444696431083207560,\t\n0.444651646459759300,\t0.444606860724682250,\t0.444562073878088100,\t0.444517285920088320,\t0.444472496850795760,\t0.444427706670321940,\t0.444382915378778890,\t0.444338122976278120,\t\n0.444293329462932430,\t0.444248534838853460,\t0.444203739104153120,\t0.444158942258943030,\t0.444114144303335960,\t0.444069345237443570,\t0.444024545061377840,\t0.443979743775250290,\t\n0.443934941379173830,\t0.443890137873259980,\t0.443845333257620820,\t0.443800527532367930,\t0.443755720697614040,\t0.443710912753470970,\t0.443666103700050110,\t0.443621293537464430,\t\n0.443576482265825580,\t0.443531669885245450,\t0.443486856395835740,\t0.443442041797709300,\t0.443397226090977810,\t0.443352409275753200,\t0.443307591352147200,\t0.443262772320272560,\t\n0.443217952180241070,\t0.443173130932164650,\t0.443128308576155040,\t0.443083485112324980,\t0.443038660540786280,\t0.442993834861650890,\t0.442949008075030570,\t0.442904180181038050,\t\n0.442859351179785140,\t0.442814521071383860,\t0.442769689855945840,\t0.442724857533583980,\t0.442680024104410040,\t0.442635189568535590,\t0.442590353926073600,\t0.442545517177135690,\t\n0.442500679321834010,\t0.442455840360280240,\t0.442411000292587230,\t0.442366159118866730,\t0.442321316839230870,\t0.442276473453791290,\t0.442231628962660940,\t0.442186783365951520,\t\n0.442141936663775100,\t0.442097088856243490,\t0.442052239943469540,\t0.442007389925564990,\t0.441962538802641970,\t0.441917686574812170,\t0.441872833242188620,\t0.441827978804882950,\t\n0.441783123263006890,\t0.441738266616673480,\t0.441693408865994400,\t0.441648550011081780,\t0.441603690052047360,\t0.441558828989004170,\t0.441513966822063900,\t0.441469103551338670,\t\n0.441424239176940290,\t0.441379373698981730,\t0.441334507117574770,\t0.441289639432831500,\t0.441244770644863730,\t0.441199900753784460,\t0.441155029759705390,\t0.441110157662738810,\t\n0.441065284462996370,\t0.441020410160591180,\t0.440975534755634950,\t0.440930658248239460,\t0.440885780638517740,\t0.440840901926581540,\t0.440796022112543100,\t0.440751141196514260,\t\n0.440706259178607900,\t0.440661376058935910,\t0.440616491837610480,\t0.440571606514743420,\t0.440526720090447740,\t0.440481832564835310,\t0.440436943938018240,\t0.440392054210108410,\t\n0.440347163381218880,\t0.440302271451461450,\t0.440257378420948310,\t0.440212484289791320,\t0.440167589058103490,\t0.440122692725996740,\t0.440077795293582870,\t0.440032896760974900,\t\n0.439987997128284620,\t0.439943096395624460,\t0.439898194563106080,\t0.439853291630842640,\t0.439808387598945970,\t0.439763482467528330,\t0.439718576236701570,\t0.439673668906578770,\t\n0.439628760477271840,\t0.439583850948892960,\t0.439538940321554050,\t0.439494028595368240,\t0.439449115770447320,\t0.439404201846903650,\t0.439359286824849040,\t0.439314370704396610,\t\n0.439269453485658270,\t0.439224535168746270,\t0.439179615753772570,\t0.439134695240850190,\t0.439089773630091110,\t0.439044850921607170,\t0.438999927115511560,\t0.438955002211916080,\t\n0.438910076210933090,\t0.438865149112674490,\t0.438820220917253480,\t0.438775291624781900,\t0.438730361235372070,\t0.438685429749135940,\t0.438640497166186640,\t0.438595563486636090,\t\n0.438550628710596630,\t0.438505692838180190,\t0.438460755869499950,\t0.438415817804667820,\t0.438370878643796150,\t0.438325938386996850,\t0.438280997034383110,\t0.438236054586066900,\t\n0.438191111042160130,\t0.438146166402775980,\t0.438101220668026430,\t0.438056273838023870,\t0.438011325912880170,\t0.437966376892708560,\t0.437921426777621030,\t0.437876475567729910,\t\n0.437831523263147230,\t0.437786569863986120,\t0.437741615370358550,\t0.437696659782376980,\t0.437651703100153390,\t0.437606745323800890,\t0.437561786453431580,\t0.437516826489157740,\t\n0.437471865431091510,\t0.437426903279345970,\t0.437381940034033130,\t0.437336975695265140,\t0.437292010263155060,\t0.437247043737814920,\t0.437202076119357190,\t0.437157107407893930,\t\n0.437112137603538230,\t0.437067166706402220,\t0.437022194716598260,\t0.436977221634238470,\t0.436932247459435990,\t0.436887272192302890,\t0.436842295832951640,\t0.436797318381494220,\t\n0.436752339838043900,\t0.436707360202712720,\t0.436662379475613150,\t0.436617397656857250,\t0.436572414746558280,\t0.436527430744828250,\t0.436482445651779630,\t0.436437459467524490,\t\n0.436392472192176080,\t0.436347483825846540,\t0.436302494368647880,\t0.436257503820693390,\t0.436212512182095110,\t0.436167519452965560,\t0.436122525633416860,\t0.436077530723562200,\t\n0.436032534723513720,\t0.435987537633383880,\t0.435942539453284820,\t0.435897540183329820,\t0.435852539823630980,\t0.435807538374300750,\t0.435762535835451330,\t0.435717532207195890,\t\n0.435672527489646690,\t0.435627521682916130,\t0.435582514787116400,\t0.435537506802360750,\t0.435492497728761360,\t0.435447487566430310,\t0.435402476315480960,\t0.435357463976025370,\t\n0.435312450548176190,\t0.435267436032045430,\t0.435222420427746500,\t0.435177403735391540,\t0.435132385955093070,\t0.435087367086963220,\t0.435042347131115340,\t0.434997326087661560,\t\n0.434952303956714530,\t0.434907280738386300,\t0.434862256432790310,\t0.434817231040038670,\t0.434772204560243900,\t0.434727176993518260,\t0.434682148339975090,\t0.434637118599726540,\t\n0.434592087772884770,\t0.434547055859563210,\t0.434502022859873990,\t0.434456988773929690,\t0.434411953601842590,\t0.434366917343725960,\t0.434321879999692020,\t0.434276841569853410,\t\n0.434231802054322270,\t0.434186761453212060,\t0.434141719766634960,\t0.434096676994703500,\t0.434051633137529980,\t0.434006588195227800,\t0.433961542167909110,\t0.433916495055686580,\t\n0.433871446858672400,\t0.433826397576980050,\t0.433781347210721650,\t0.433736295760009490,\t0.433691243224957000,\t0.433646189605676410,\t0.433601134902280360,\t0.433556079114881090,\t\n0.433511022243591950,\t0.433465964288525300,\t0.433420905249793760,\t0.433375845127509480,\t0.433330783921786090,\t0.433285721632735650,\t0.433240658260470980,\t0.433195593805104200,\t\n0.433150528266748880,\t0.433105461645517220,\t0.433060393941521900,\t0.433015325154875230,\t0.432970255285690610,\t0.432925184334080390,\t0.432880112300157160,\t0.432835039184033270,\t\n0.432789964985822170,\t0.432744889705636180,\t0.432699813343587590,\t0.432654735899789810,\t0.432609657374355250,\t0.432564577767396490,\t0.432519497079025930,\t0.432474415309356990,\t\n0.432429332458502010,\t0.432384248526573760,\t0.432339163513684450,\t0.432294077419947630,\t0.432248990245475580,\t0.432203901990381110,\t0.432158812654776460,\t0.432113722238775200,\t\n0.432068630742489630,\t0.432023538166032450,\t0.431978444509516060,\t0.431933349773053920,\t0.431888253956758450,\t0.431843157060741940,\t0.431798059085117920,\t0.431752960029998740,\t\n0.431707859895497200,\t0.431662758681725540,\t0.431617656388797450,\t0.431572553016825230,\t0.431527448565921570,\t0.431482343036198920,\t0.431437236427770820,\t0.431392128740749610,\t\n0.431347019975248100,\t0.431301910131378640,\t0.431256799209254750,\t0.431211687208988950,\t0.431166574130693870,\t0.431121459974481980,\t0.431076344740466800,\t0.431031228428760790,\t\n0.430986111039476320,\t0.430940992572726940,\t0.430895873028625140,\t0.430850752407283600,\t0.430805630708814780,\t0.430760507933332320,\t0.430715384080948560,\t0.430670259151776370,\t\n0.430625133145928100,\t0.430580006063517430,\t0.430534877904656720,\t0.430489748669458830,\t0.430444618358036160,\t0.430399486970502340,\t0.430354354506969790,\t0.430309220967551360,\t\n0.430264086352359520,\t0.430218950661507840,\t0.430173813895108780,\t0.430128676053275150,\t0.430083537136119460,\t0.430038397143755360,\t0.429993256076295240,\t0.429948113933851570,\t\n0.429902970716538050,\t0.429857826424467070,\t0.429812681057751500,\t0.429767534616503850,\t0.429722387100837770,\t0.429677238510865760,\t0.429632088846700620,\t0.429586938108454830,\t\n0.429541786296242120,\t0.429496633410174970,\t0.429451479450366210,\t0.429406324416928330,\t0.429361168309975060,\t0.429316011129618870,\t0.429270852875972660,\t0.429225693549148910,\t\n0.429180533149261360,\t0.429135371676422460,\t0.429090209130744690,\t0.429045045512341850,\t0.428999880821326340,\t0.428954715057811190,\t0.428909548221908800,\t0.428864380313732970,\t\n0.428819211333396180,\t0.428774041281011380,\t0.428728870156691030,\t0.428683697960548950,\t0.428638524692697590,\t0.428593350353249970,\t0.428548174942318560,\t0.428502998460017050,\t\n0.428457820906458120,\t0.428412642281754570,\t0.428367462586019100,\t0.428322281819365320,\t0.428277099981905830,\t0.428231917073753190,\t0.428186733095021200,\t0.428141548045822330,\t\n0.428096361926269600,\t0.428051174736475580,\t0.428005986476554020,\t0.427960797146617500,\t0.427915606746778980,\t0.427870415277151030,\t0.427825222737847450,\t0.427780029128980830,\t\n0.427734834450664130,\t0.427689638703009910,\t0.427644441886132040,\t0.427599244000143040,\t0.427554045045155930,\t0.427508845021283330,\t0.427463643928639000,\t0.427418441767335570,\t\n0.427373238537485600,\t0.427328034239202960,\t0.427282828872600270,\t0.427237622437790450,\t0.427192414934886190,\t0.427147206364001330,\t0.427101996725248400,\t0.427056786018740530,\t\n0.427011574244590240,\t0.426966361402911500,\t0.426921147493816770,\t0.426875932517419230,\t0.426830716473831420,\t0.426785499363167230,\t0.426740281185539310,\t0.426695061941060660,\t\n0.426649841629843930,\t0.426604620252003080,\t0.426559397807650620,\t0.426514174296899640,\t0.426468949719862880,\t0.426423724076654130,\t0.426378497367386090,\t0.426333269592171380,\t\n0.426288040751123860,\t0.426242810844356280,\t0.426197579871981700,\t0.426152347834112710,\t0.426107114730863320,\t0.426061880562346120,\t0.426016645328674170,\t0.425971409029960280,\t\n0.425926171666318190,\t0.425880933237860750,\t0.425835693744700930,\t0.425790453186951470,\t0.425745211564726280,\t0.425699968878138100,\t0.425654725127299960,\t0.425609480312324600,\t\n0.425564234433325970,\t0.425518987490416720,\t0.425473739483709650,\t0.425428490413318590,\t0.425383240279356310,\t0.425337989081935930,\t0.425292736821170190,\t0.425247483497173010,\t\n0.425202229110057120,\t0.425156973659935660,\t0.425111717146921360,\t0.425066459571128150,\t0.425021200932668820,\t0.424975941231656500,\t0.424930680468203870,\t0.424885418642424960,\t\n0.424840155754432570,\t0.424794891804339710,\t0.424749626792259250,\t0.424704360718305090,\t0.424659093582590070,\t0.424613825385226910,\t0.424568556126329600,\t0.424523285806010840,\t\n0.424478014424383930,\t0.424432741981561560,\t0.424387468477657740,\t0.424342193912785270,\t0.424296918287057290,\t0.424251641600586590,\t0.424206363853487200,\t0.424161085045871910,\t\n0.424115805177853910,\t0.424070524249546000,\t0.424025242261062200,\t0.423979959212515240,\t0.423934675104018440,\t0.423889389935684540,\t0.423844103707627540,\t0.423798816419960310,\t\n0.423753528072795980,\t0.423708238666247520,\t0.423662948200428770,\t0.423617656675452700,\t0.423572364091432120,\t0.423527070448480980,\t0.423481775746712140,\t0.423436479986238900,\t\n0.423391183167174060,\t0.423345885289631680,\t0.423300586353724580,\t0.423255286359566000,\t0.423209985307268780,\t0.423164683196947060,\t0.423119380028713580,\t0.423074075802681690,\t\n0.423028770518964150,\t0.422983464177675130,\t0.422938156778927430,\t0.422892848322834360,\t0.422847538809508760,\t0.422802228239064710,\t0.422756916611615070,\t0.422711603927272810,\t\n0.422666290186151870,\t0.422620975388365240,\t0.422575659534026150,\t0.422530342623247510,\t0.422485024656143400,\t0.422439705632826790,\t0.422394385553410860,\t0.422349064418008570,\t\n0.422303742226734060,\t0.422258418979700120,\t0.422213094677020230,\t0.422167769318807120,\t0.422122442905175030,\t0.422077115436236830,\t0.422031786912105800,\t0.421986457332894970,\t\n0.421941126698718360,\t0.421895795009688930,\t0.421850462265919600,\t0.421805128467524550,\t0.421759793614616680,\t0.421714457707309310,\t0.421669120745715390,\t0.421623782729949050,\t\n0.421578443660123310,\t0.421533103536351430,\t0.421487762358746350,\t0.421442420127422330,\t0.421397076842492220,\t0.421351732504069430,\t0.421306387112266920,\t0.421261040667198830,\t\n0.421215693168978170,\t0.421170344617718240,\t0.421124995013532070,\t0.421079644356533780,\t0.421034292646836390,\t0.420988939884552880,\t0.420943586069797430,\t0.420898231202682990,\t\n0.420852875283322990,\t0.420807518311830390,\t0.420762160288319420,\t0.420716801212903060,\t0.420671441085694650,\t0.420626079906807230,\t0.420580717676355080,\t0.420535354394451060,\t\n0.420489990061208680,\t0.420444624676740930,\t0.420399258241162030,\t0.420353890754585010,\t0.420308522217123230,\t0.420263152628889750,\t0.420217781989998760,\t0.420172410300563350,\t\n0.420127037560696910,\t0.420081663770512430,\t0.420036288930124240,\t0.419990913039645310,\t0.419945536099188720,\t0.419900158108868660,\t0.419854779068798260,\t0.419809398979090860,\t\n0.419764017839859560,\t0.419718635651218640,\t0.419673252413281130,\t0.419627868126160490,\t0.419582482789969740,\t0.419537096404823230,\t0.419491708970833990,\t0.419446320488115420,\t\n0.419400930956780660,\t0.419355540376944000,\t0.419310148748718530,\t0.419264756072217640,\t0.419219362347554410,\t0.419173967574843260,\t0.419128571754197150,\t0.419083174885729210,\t\n0.419037776969553740,\t0.418992378005783820,\t0.418946977994532950,\t0.418901576935914290,\t0.418856174830042010,\t0.418810771677029350,\t0.418765367476989720,\t0.418719962230036320,\t\n0.418674555936283390,\t0.418629148595844050,\t0.418583740208831880,\t0.418538330775359900,\t0.418492920295542530,\t0.418447508769492880,\t0.418402096197324440,\t0.418356682579150370,\t\n0.418311267915084940,\t0.418265852205241370,\t0.418220435449732810,\t0.418175017648673540,\t0.418129598802176710,\t0.418084178910355870,\t0.418038757973324240,\t0.417993335991196040,\t\n0.417947912964084570,\t0.417902488892103300,\t0.417857063775365360,\t0.417811637613985210,\t0.417766210408075930,\t0.417720782157751160,\t0.417675352863124020,\t0.417629922524308920,\t\n0.417584491141418990,\t0.417539058714567810,\t0.417493625243868630,\t0.417448190729435790,\t0.417402755171382420,\t0.417357318569822220,\t0.417311880924868260,\t0.417266442236635060,\t\n0.417221002505235690,\t0.417175561730783460,\t0.417130119913392720,\t0.417084677053176700,\t0.417039233150248990,\t0.416993788204722770,\t0.416948342216712450,\t0.416902895186331330,\t\n0.416857447113692940,\t0.416811997998910560,\t0.416766547842098540,\t0.416721096643370200,\t0.416675644402839110,\t0.416630191120618500,\t0.416584736796822790,\t0.416539281431565270,\t\n0.416493825024959520,\t0.416448367577118840,\t0.416402909088157580,\t0.416357449558189100,\t0.416311988987326580,\t0.416266527375684480,\t0.416221064723376110,\t0.416175601030515040,\t\n0.416130136297214570,\t0.416084670523589160,\t0.416039203709752060,\t0.415993735855817000,\t0.415948266961897130,\t0.415902797028107060,\t0.415857326054559940,\t0.415811854041369560,\t\n0.415766380988649100,\t0.415720906896513090,\t0.415675431765074880,\t0.415629955594448040,\t0.415584478384745880,\t0.415539000136082970,\t0.415493520848572550,\t0.415448040522327920,\t\n0.415402559157463550,\t0.415357076754092840,\t0.415311593312329420,\t0.415266108832286650,\t0.415220623314078940,\t0.415175136757819700,\t0.415129649163622660,\t0.415084160531601080,\t\n0.415038670861869460,\t0.414993180154541170,\t0.414947688409729950,\t0.414902195627549100,\t0.414856701808113180,\t0.414811206951535500,\t0.414765711057929810,\t0.414720214127409390,\t\n0.414674716160088890,\t0.414629217156081590,\t0.414583717115500850,\t0.414538216038461190,\t0.414492713925076030,\t0.414447210775459040,\t0.414401706589723640,\t0.414356201367984400,\t\n0.414310695110354620,\t0.414265187816948100,\t0.414219679487878250,\t0.414174170123259580,\t0.414128659723205510,\t0.414083148287829770,\t0.414037635817245730,\t0.413992122311568010,\t\n0.413946607770910020,\t0.413901092195385510,\t0.413855575585107830,\t0.413810057940191660,\t0.413764539260750300,\t0.413719019546897600,\t0.413673498798746990,\t0.413627977016413020,\t\n0.413582454200009050,\t0.413536930349648610,\t0.413491405465446220,\t0.413445879547515330,\t0.413400352595969740,\t0.413354824610922820,\t0.413309295592489300,\t0.413263765540782540,\t\n0.413218234455916320,\t0.413172702338004130,\t0.413127169187160580,\t0.413081635003499150,\t0.413036099787133570,\t0.412990563538177420,\t0.412945026256745170,\t0.412899487942950450,\t\n0.412853948596906940,\t0.412808408218728160,\t0.412762866808528810,\t0.412717324366422220,\t0.412671780892521990,\t0.412626236386942680,\t0.412580690849797760,\t0.412535144281201140,\t\n0.412489596681266280,\t0.412444048050107760,\t0.412398498387839150,\t0.412352947694574310,\t0.412307395970426700,\t0.412261843215511010,\t0.412216289429940710,\t0.412170734613829690,\t\n0.412125178767291380,\t0.412079621890440560,\t0.412034063983390710,\t0.411988505046255670,\t0.411942945079148970,\t0.411897384082185290,\t0.411851822055478210,\t0.411806258999141140,\t\n0.411760694913288820,\t0.411715129798034760,\t0.411669563653492890,\t0.411623996479776650,\t0.411578428277000920,\t0.411532859045279030,\t0.411487288784725070,\t0.411441717495452440,\t\n0.411396145177575890,\t0.411350571831209040,\t0.411304997456465700,\t0.411259422053459500,\t0.411213845622305170,\t0.411168268163116190,\t0.411122689676006570,\t0.411077110161089780,\t\n0.411031529618480660,\t0.410985948048292690,\t0.410940365450639890,\t0.410894781825635710,\t0.410849197173395020,\t0.410803611494031330,\t0.410758024787658220,\t0.410712437054390420,\t\n0.410666848294341520,\t0.410621258507625540,\t0.410575667694355990,\t0.410530075854647680,\t0.410484482988614170,\t0.410438889096369500,\t0.410393294178027170,\t0.410347698233701990,\t\n0.410302101263507580,\t0.410256503267557910,\t0.410210904245966620,\t0.410165304198848450,\t0.410119703126316960,\t0.410074101028486290,\t0.410028497905469910,\t0.409982893757382730,\t\n0.409937288584338310,\t0.409891682386450240,\t0.409846075163833370,\t0.409800466916601320,\t0.409754857644868130,\t0.409709247348747360,\t0.409663636028353870,\t0.409618023683801350,\t\n0.409572410315203690,\t0.409526795922674660,\t0.409481180506329030,\t0.409435564066280460,\t0.409389946602642940,\t0.409344328115530180,\t0.409298708605056960,\t0.409253088071337030,\t\n0.409207466514484360,\t0.409161843934612630,\t0.409116220331836640,\t0.409070595706270130,\t0.409024970058026740,\t0.408979343387221360,\t0.408933715693967580,\t0.408888086978379530,\t\n0.408842457240570830,\t0.408796826480656410,\t0.408751194698749880,\t0.408705561894965430,\t0.408659928069416640,\t0.408614293222218430,\t0.408568657353484520,\t0.408523020463328950,\t\n0.408477382551865390,\t0.408431743619208810,\t0.408386103665472840,\t0.408340462690771680,\t0.408294820695218890,\t0.408249177678929490,\t0.408203533642017170,\t0.408157888584595560,\t\n0.408112242506779630,\t0.408066595408683120,\t0.408020947290420100,\t0.407975298152104370,\t0.407929647993850730,\t0.407883996815772980,\t0.407838344617985290,\t0.407792691400601260,\t\n0.407747037163735950,\t0.407701381907503050,\t0.407655725632016690,\t0.407610068337390610,\t0.407564410023739780,\t0.407518750691177880,\t0.407473090339819100,\t0.407427428969777240,\t\n0.407381766581167200,\t0.407336103174102740,\t0.407290438748698020,\t0.407244773305066810,\t0.407199106843324050,\t0.407153439363583500,\t0.407107770865959010,\t0.407062101350565420,\t\n0.407016430817516650,\t0.406970759266926770,\t0.406925086698909590,\t0.406879413113580110,\t0.406833738511052090,\t0.406788062891439710,\t0.406742386254856810,\t0.406696708601418320,\t\n0.406651029931238030,\t0.406605350244430230,\t0.406559669541108560,\t0.406513987821388200,\t0.406468305085382840,\t0.406422621333206720,\t0.406376936564973650,\t0.406331250780798630,\t\n0.406285563980795520,\t0.406239876165078060,\t0.406194187333761340,\t0.406148497486959140,\t0.406102806624785650,\t0.406057114747354790,\t0.406011421854781560,\t0.405965727947179720,\t\n0.405920033024663620,\t0.405874337087346990,\t0.405828640135344920,\t0.405782942168771310,\t0.405737243187740290,\t0.405691543192365780,\t0.405645842182762780,\t0.405600140159045220,\t\n0.405554437121327270,\t0.405508733069722850,\t0.405463028004347030,\t0.405417321925313600,\t0.405371614832736480,\t0.405325906726730690,\t0.405280197607410190,\t0.405234487474889160,\t\n0.405188776329281520,\t0.405143064170702340,\t0.405097350999265470,\t0.405051636815085270,\t0.405005921618275530,\t0.404960205408951390,\t0.404914488187226810,\t0.404868769953215910,\t\n0.404823050707032730,\t0.404777330448792330,\t0.404731609178608620,\t0.404685886896595900,\t0.404640163602868030,\t0.404594439297540130,\t0.404548713980726170,\t0.404502987652540390,\t\n0.404457260313096760,\t0.404411531962510400,\t0.404365802600895160,\t0.404320072228365080,\t0.404274340845035160,\t0.404228608451019430,\t0.404182875046432130,\t0.404137140631387280,\t\n0.404091405206000010,\t0.404045668770384170,\t0.403999931324654170,\t0.403954192868923980,\t0.403908453403308660,\t0.403862712927922200,\t0.403816971442878980,\t0.403771228948292980,\t\n0.403725485444279220,\t0.403679740930951820,\t0.403633995408425040,\t0.403588248876812830,\t0.403542501336230490,\t0.403496752786791810,\t0.403451003228610880,\t0.403405252661802830,\t\n0.403359501086481660,\t0.403313748502761750,\t0.403267994910757040,\t0.403222240310582790,\t0.403176484702352900,\t0.403130728086181830,\t0.403084970462183500,\t0.403039211830473200,\t\n0.402993452191164780,\t0.402947691544372820,\t0.402901929890211170,\t0.402856167228795140,\t0.402810403560238670,\t0.402764638884656190,\t0.402718873202161710,\t0.402673106512870470,\t\n0.402627338816896440,\t0.402581570114353690,\t0.402535800405357360,\t0.402490029690021570,\t0.402444257968460730,\t0.402398485240788810,\t0.402352711507121100,\t0.402306936767571570,\t\n0.402261161022254730,\t0.402215384271284560,\t0.402169606514776400,\t0.402123827752844170,\t0.402078047985602370,\t0.402032267213165040,\t0.401986485435647470,\t0.401940702653163670,\t\n0.401894918865828120,\t0.401849134073754890,\t0.401803348277059160,\t0.401757561475855120,\t0.401711773670256790,\t0.401665984860379350,\t0.401620195046337000,\t0.401574404228244200,\t\n0.401528612406214900,\t0.401482819580364520,\t0.401437025750807140,\t0.401391230917657100,\t0.401345435081028660,\t0.401299638241036980,\t0.401253840397796210,\t0.401208041551420870,\t\n0.401162241702025020,\t0.401116440849723980,\t0.401070638994631800,\t0.401024836136863020,\t0.400979032276531750,\t0.400933227413753370,\t0.400887421548641820,\t0.400841614681311800,\t\n0.400795806811877320,\t0.400749997940453680,\t0.400704188067155080,\t0.400658377192095630,\t0.400612565315390580,\t0.400566752437154170,\t0.400520938557500870,\t0.400475123676544810,\t\n0.400429307794401330,\t0.400383490911184580,\t0.400337673027009120,\t0.400291854141989090,\t0.400246034256239840,\t0.400200213369875430,\t0.400154391483010570,\t0.400108568595759270,\t\n0.400062744708236990,\t0.400016919820557810,\t0.399971093932836360,\t0.399925267045186770,\t0.399879439157724390,\t0.399833610270563470,\t0.399787780383818070,\t0.399741949497603610,\t\n0.399696117612034330,\t0.399650284727224750,\t0.399604450843288990,\t0.399558615960342590,\t0.399512780078499610,\t0.399466943197874680,\t0.399421105318581990,\t0.399375266440736900,\t\n0.399329426564453690,\t0.399283585689846950,\t0.399237743817030750,\t0.399191900946120670,\t0.399146057077230830,\t0.399100212210475810,\t0.399054366345969860,\t0.399008519483828430,\t\n0.398962671624165710,\t0.398916822767095840,\t0.398870972912734380,\t0.398825122061195470,\t0.398779270212593740,\t0.398733417367043490,\t0.398687563524660000,\t0.398641708685557710,\t\n0.398595852849851050,\t0.398549996017654400,\t0.398504138189083200,\t0.398458279364251600,\t0.398412419543274330,\t0.398366558726265580,\t0.398320696913340880,\t0.398274834104614390,\t\n0.398228970300200820,\t0.398183105500214460,\t0.398137239704770720,\t0.398091372913983890,\t0.398045505127968600,\t0.397999636346839160,\t0.397953766570711020,\t0.397907895799698490,\t\n0.397862024033915800,\t0.397816151273478470,\t0.397770277518500750,\t0.397724402769097320,\t0.397678527025382480,\t0.397632650287471750,\t0.397586772555479420,\t0.397540893829520130,\t\n0.397495014109708170,\t0.397449133396159120,\t0.397403251688987210,\t0.397357368988307200,\t0.397311485294233320,\t0.397265600606881150,\t0.397219714926364990,\t0.397173828252799570,\t\n0.397127940586299130,\t0.397082051926979260,\t0.397036162274954250,\t0.396990271630338450,\t0.396944379993247390,\t0.396898487363795350,\t0.396852593742097080,\t0.396806699128266940,\t\n0.396760803522420440,\t0.396714906924671980,\t0.396669009335136210,\t0.396623110753927530,\t0.396577211181161460,\t0.396531310616952350,\t0.396485409061415000,\t0.396439506514663700,\t\n0.396393602976814030,\t0.396347698447980400,\t0.396301792928277500,\t0.396255886417819670,\t0.396209978916722600,\t0.396164070425100550,\t0.396118160943067900,\t0.396072250470740290,\t\n0.396026339008232030,\t0.395980426555657910,\t0.395934513113132320,\t0.395888598680770920,\t0.395842683258687930,\t0.395796766846998270,\t0.395750849445816290,\t0.395704931055257610,\t\n0.395659011675436600,\t0.395613091306468050,\t0.395567169948466360,\t0.395521247601547170,\t0.395475324265824820,\t0.395429399941414180,\t0.395383474628429650,\t0.395337548326986870,\t\n0.395291621037200170,\t0.395245692759183980,\t0.395199763493054020,\t0.395153833238924670,\t0.395107901996910650,\t0.395061969767126540,\t0.395016036549687920,\t0.394970102344709200,\t\n0.394924167152305160,\t0.394878230972590340,\t0.394832293805680360,\t0.394786355651689620,\t0.394740416510733050,\t0.394694476382924990,\t0.394648535268381120,\t0.394602593167215960,\t\n0.394556650079544320,\t0.394510706005480600,\t0.394464760945140550,\t0.394418814898638610,\t0.394372867866089600,\t0.394326919847608040,\t0.394280970843309600,\t0.394235020853308690,\t\n0.394189069877719840,\t0.394143117916658740,\t0.394097164970239830,\t0.394051211038577990,\t0.394005256121787770,\t0.393959300219984760,\t0.393913343333283540,\t0.393867385461798950,\t\n0.393821426605645450,\t0.393775466764938850,\t0.393729505939793560,\t0.393683544130324470,\t0.393637581336646170,\t0.393591617558874280,\t0.393545652797123390,\t0.393499687051508340,\t\n0.393453720322143650,\t0.393407752609145070,\t0.393361783912627160,\t0.393315814232704340,\t0.393269843569492410,\t0.393223871923105870,\t0.393177899293659590,\t0.393131925681268260,\t\n0.393085951086047440,\t0.393039975508111760,\t0.392993998947576200,\t0.392948021404555150,\t0.392902042879164530,\t0.392856063371518740,\t0.392810082881732800,\t0.392764101409921300,\t\n0.392718118956199900,\t0.392672135520683200,\t0.392626151103486200,\t0.392580165704723370,\t0.392534179324510570,\t0.392488191962962310,\t0.392442203620193160,\t0.392396214296318930,\t\n0.392350223991454140,\t0.392304232705713800,\t0.392258240439212480,\t0.392212247192065930,\t0.392166252964388780,\t0.392120257756296050,\t0.392074261567902200,\t0.392028264399323150,\t\n0.391982266250673390,\t0.391936267122068030,\t0.391890267013621510,\t0.391844265925449800,\t0.391798263857667420,\t0.391752260810389330,\t0.391706256783730220,\t0.391660251777805890,\t\n0.391614245792730910,\t0.391568238828620300,\t0.391522230885588680,\t0.391476221963751920,\t0.391430212063224590,\t0.391384201184121370,\t0.391338189326558010,\t0.391292176490649180,\t\n0.391246162676509910,\t0.391200147884254830,\t0.391154132113999740,\t0.391108115365859380,\t0.391062097639948700,\t0.391016078936382410,\t0.390970059255276280,\t0.390924038596745070,\t\n0.390878016960903680,\t0.390831994347866920,\t0.390785970757750510,\t0.390739946190669210,\t0.390693920646738020,\t0.390647894126071650,\t0.390601866628785930,\t0.390555838154995620,\t\n0.390509808704815220,\t0.390463778278360710,\t0.390417746875746760,\t0.390371714497088520,\t0.390325681142500490,\t0.390279646812098700,\t0.390233611505997780,\t0.390187575224312850,\t\n0.390141537967158560,\t0.390095499734650850,\t0.390049460526904370,\t0.390003420344034290,\t0.389957379186155200,\t0.389911337053383100,\t0.389865293945832640,\t0.389819249863618930,\t\n0.389773204806856680,\t0.389727158775661890,\t0.389681111770149140,\t0.389635063790433220,\t0.389589014836630050,\t0.389542964908854370,\t0.389496914007221250,\t0.389450862131845430,\t\n0.389404809282842880,\t0.389358755460328330,\t0.389312700664416870,\t0.389266644895223220,\t0.389220588152863370,\t0.389174530437452090,\t0.389128471749104480,\t0.389082412087935260,\t\n0.389036351454060400,\t0.388990289847594710,\t0.388944227268653300,\t0.388898163717350860,\t0.388852099193803420,\t0.388806033698125770,\t0.388759967230433050,\t0.388713899790839980,\t\n0.388667831379462540,\t0.388621761996415570,\t0.388575691641813770,\t0.388529620315773150,\t0.388483548018408450,\t0.388437474749834920,\t0.388391400510167240,\t0.388345325299521540,\t\n0.388299249118012500,\t0.388253171965755320,\t0.388207093842864780,\t0.388161014749456970,\t0.388114934685646620,\t0.388068853651548920,\t0.388022771647278660,\t0.387976688672951870,\t\n0.387930604728683400,\t0.387884519814588380,\t0.387838433930781660,\t0.387792347077379310,\t0.387746259254496020,\t0.387700170462246750,\t0.387654080700747420,\t0.387607989970112870,\t\n0.387561898270458390,\t0.387515805601898690,\t0.387469711964549930,\t0.387423617358526930,\t0.387377521783944800,\t0.387331425240918510,\t0.387285327729564090,\t0.387239229249996320,\t\n0.387193129802330450,\t0.387147029386681380,\t0.387100928003165150,\t0.387054825651896580,\t0.387008722332990940,\t0.386962618046563070,\t0.386916512792729090,\t0.386870406571603880,\t\n0.386824299383302150,\t0.386778191227940160,\t0.386732082105632650,\t0.386685972016494960,\t0.386639860960641900,\t0.386593748938189600,\t0.386547635949252950,\t0.386501521993947220,\t\n0.386455407072387240,\t0.386409291184689140,\t0.386363174330967840,\t0.386317056511338630,\t0.386270937725916360,\t0.386224817974817110,\t0.386178697258155850,\t0.386132575576047850,\t\n0.386086452928607990,\t0.386040329315952390,\t0.385994204738196010,\t0.385948079195453710,\t0.385901952687841550,\t0.385855825215474570,\t0.385809696778468050,\t0.385763567376936840,\t\n0.385717437010997090,\t0.385671305680763800,\t0.385625173386352220,\t0.385579040127877300,\t0.385532905905455190,\t0.385486770719200840,\t0.385440634569229560,\t0.385394497455656240,\t\n0.385348359378597130,\t0.385302220338167080,\t0.385256080334481500,\t0.385209939367655350,\t0.385163797437804710,\t0.385117654545044600,\t0.385071510689490300,\t0.385025365871256910,\t\n0.384979220090460430,\t0.384933073347215940,\t0.384886925641638340,\t0.384840776973843890,\t0.384794627343947430,\t0.384748476752064420,\t0.384702325198309820,\t0.384656172682799840,\t\n0.384610019205649410,\t0.384563864766973910,\t0.384517709366888340,\t0.384471553005508950,\t0.384425395682950640,\t0.384379237399328830,\t0.384333078154758530,\t0.384286917949355930,\t\n0.384240756783236050,\t0.384194594656514290,\t0.384148431569305670,\t0.384102267521726330,\t0.384056102513891330,\t0.384009936545915640,\t0.383963769617915560,\t0.383917601730006000,\t\n0.383871432882302520,\t0.383825263074919990,\t0.383779092307974690,\t0.383732920581581700,\t0.383686747895856440,\t0.383640574250913860,\t0.383594399646870250,\t0.383548224083840650,\t\n0.383502047561940450,\t0.383455870081284790,\t0.383409691641989850,\t0.383363512244170650,\t0.383317331887942700,\t0.383271150573420980,\t0.383224968300721780,\t0.383178785069960230,\t\n0.383132600881251230,\t0.383086415734711190,\t0.383040229630455090,\t0.382994042568598430,\t0.382947854549256230,\t0.382901665572544850,\t0.382855475638579250,\t0.382809284747475000,\t\n0.382763092899347120,\t0.382716900094311920,\t0.382670706332484460,\t0.382624511613980260,\t0.382578315938914340,\t0.382532119307403050,\t0.382485921719561420,\t0.382439723175505060,\t\n0.382393523675348960,\t0.382347323219209450,\t0.382301121807201600,\t0.382254919439441010,\t0.382208716116042620,\t0.382162511837122960,\t0.382116306602796940,\t0.382070100413179790,\t\n0.382023893268387760,\t0.381977685168536030,\t0.381931476113740060,\t0.381885266104115050,\t0.381839055139777230,\t0.381792843220841780,\t0.381746630347424230,\t0.381700416519639710,\t\n0.381654201737604500,\t0.381607986001433860,\t0.381561769311243190,\t0.381515551667147730,\t0.381469333069263780,\t0.381423113517706520,\t0.381376893012591480,\t0.381330671554033770,\t\n0.381284449142149760,\t0.381238225777054680,\t0.381192001458863620,\t0.381145776187692960,\t0.381099549963657860,\t0.381053322786873870,\t0.381007094657456190,\t0.380960865575521170,\t\n0.380914635541183990,\t0.380868404554560220,\t0.380822172615765060,\t0.380775939724914860,\t0.380729705882124790,\t0.380683471087510440,\t0.380637235341187040,\t0.380590998643270950,\t\n0.380544760993877350,\t0.380498522393121870,\t0.380452282841119650,\t0.380406042337987140,\t0.380359800883839530,\t0.380313558478792000,\t0.380267315122961020,\t0.380221070816461730,\t\n0.380174825559409730,\t0.380128579351920290,\t0.380082332194109810,\t0.380036084086093520,\t0.379989835027987000,\t0.379943585019905490,\t0.379897334061965410,\t0.379851082154281980,\t\n0.379804829296970900,\t0.379758575490147300,\t0.379712320733927690,\t0.379666065028427260,\t0.379619808373761640,\t0.379573550770046120,\t0.379527292217397120,\t0.379481032715929920,\t\n0.379434772265759720,\t0.379388510867002980,\t0.379342248519774990,\t0.379295985224191330,\t0.379249720980367360,\t0.379203455788419460,\t0.379157189648462960,\t0.379110922560613410,\t\n0.379064654524986220,\t0.379018385541697760,\t0.378972115610863360,\t0.378925844732598660,\t0.378879572907018960,\t0.378833300134240710,\t0.378787026414379220,\t0.378740751747550120,\t\n0.378694476133868810,\t0.378648199573451640,\t0.378601922066414020,\t0.378555643612871580,\t0.378509364212939680,\t0.378463083866734720,\t0.378416802574372050,\t0.378370520335966960,\t\n0.378324237151635990,\t0.378277953021494420,\t0.378231667945657990,\t0.378185381924241950,\t0.378139094957362920,\t0.378092807045136090,\t0.378046518187677260,\t0.378000228385101720,\t\n0.377953937637526050,\t0.377907645945065540,\t0.377861353307835880,\t0.377815059725952420,\t0.377768765199531790,\t0.377722469728689170,\t0.377676173313540420,\t0.377629875954200780,\t\n0.377583577650786930,\t0.377537278403414060,\t0.377490978212197630,\t0.377444677077254150,\t0.377398374998698990,\t0.377352071976647880,\t0.377305768011216180,\t0.377259463102520510,\t\n0.377213157250676170,\t0.377166850455798900,\t0.377120542718004100,\t0.377074234037408360,\t0.377027924414127020,\t0.376981613848275890,\t0.376935302339970360,\t0.376888989889326900,\t\n0.376842676496461030,\t0.376796362161488430,\t0.376750046884524510,\t0.376703730665685910,\t0.376657413505087970,\t0.376611095402846100,\t0.376564776359076920,\t0.376518456373895750,\t\n0.376472135447418480,\t0.376425813579760400,\t0.376379490771038270,\t0.376333167021367380,\t0.376286842330863570,\t0.376240516699642260,\t0.376194190127820070,\t0.376147862615512360,\t\n0.376101534162835040,\t0.376055204769903450,\t0.376008874436834280,\t0.375962543163742890,\t0.375916210950745180,\t0.375869877797956550,\t0.375823543705493590,\t0.375777208673471750,\t\n0.375730872702006950,\t0.375684535791214520,\t0.375638197941211170,\t0.375591859152112350,\t0.375545519424033410,\t0.375499178757091160,\t0.375452837151400930,\t0.375406494607078590,\t\n0.375360151124239590,\t0.375313806703000690,\t0.375267461343477220,\t0.375221115045785090,\t0.375174767810039780,\t0.375128419636357960,\t0.375082070524855090,\t0.375035720475647090,\t\n0.374989369488849310,\t0.374943017564578540,\t0.374896664702950240,\t0.374850310904080270,\t0.374803956168084100,\t0.374757600495078450,\t0.374711243885178850,\t0.374664886338500650,\t\n0.374618527855160700,\t0.374572168435274410,\t0.374525808078957690,\t0.374479446786326050,\t0.374433084557496240,\t0.374386721392583670,\t0.374340357291704340,\t0.374293992254973670,\t\n0.374247626282508410,\t0.374201259374424110,\t0.374154891530836700,\t0.374108522751861570,\t0.374062153037615640,\t0.374015782388214260,\t0.373969410803773440,\t0.373923038284408700,\t\n0.373876664830236740,\t0.373830290441373110,\t0.373783915117933410,\t0.373737538860034300,\t0.373691161667791320,\t0.373644783541320470,\t0.373598404480737220,\t0.373552024486158370,\t\n0.373505643557699500,\t0.373459261695476500,\t0.373412878899604890,\t0.373366495170201540,\t0.373320110507381950,\t0.373273724911262090,\t0.373227338381957490,\t0.373180950919584980,\t\n0.373134562524260030,\t0.373088173196098720,\t0.373041782935216560,\t0.372995391741730350,\t0.372948999615755670,\t0.372902606557408090,\t0.372856212566804400,\t0.372809817644060180,\t\n0.372763421789291390,\t0.372717025002613670,\t0.372670627284143800,\t0.372624228633997360,\t0.372577829052290310,\t0.372531428539138290,\t0.372485027094658140,\t0.372438624718965380,\t\n0.372392221412176090,\t0.372345817174405850,\t0.372299412005771440,\t0.372253005906388490,\t0.372206598876373080,\t0.372160190915840680,\t0.372113782024908300,\t0.372067372203691400,\t\n0.372020961452306120,\t0.371974549770868020,\t0.371928137159493910,\t0.371881723618299520,\t0.371835309147400370,\t0.371788893746913370,\t0.371742477416954150,\t0.371696060157638730,\t\n0.371649641969082730,\t0.371603222851403010,\t0.371556802804715260,\t0.371510381829135540,\t0.371463959924779430,\t0.371417537091763840,\t0.371371113330204390,\t0.371324688640217170,\t\n0.371278263021917800,\t0.371231836475423180,\t0.371185409000849010,\t0.371138980598311240,\t0.371092551267925670,\t0.371046121009809160,\t0.370999689824077270,\t0.370953257710845810,\t\n0.370906824670231560,\t0.370860390702350270,\t0.370813955807318020,\t0.370767519985250480,\t0.370721083236264510,\t0.370674645560475860,\t0.370628206958000580,\t0.370581767428954430,\t\n0.370535326973454200,\t0.370488885591615690,\t0.370442443283554970,\t0.370396000049387720,\t0.370349555889230850,\t0.370303110803200110,\t0.370256664791411620,\t0.370210217853981010,\t\n0.370163769991025290,\t0.370117321202660170,\t0.370070871489001310,\t0.370024420850165680,\t0.369977969286269030,\t0.369931516797427420,\t0.369885063383756650,\t0.369838609045373580,\t\n0.369792153782394000,\t0.369745697594934030,\t0.369699240483109430,\t0.369652782447037140,\t0.369606323486832920,\t0.369559863602612840,\t0.369513402794492680,\t0.369466941062589480,\t\n0.369420478407018920,\t0.369374014827897110,\t0.369327550325339870,\t0.369281084899464210,\t0.369234618550385810,\t0.369188151278220860,\t0.369141683083085090,\t0.369095213965095590,\t\n0.369048743924368040,\t0.369002272961018170,\t0.368955801075163070,\t0.368909328266918470,\t0.368862854536400550,\t0.368816379883725070,\t0.368769904309009020,\t0.368723427812368220,\t\n0.368676950393918900,\t0.368630472053776750,\t0.368583992792058830,\t0.368537512608880960,\t0.368491031504359300,\t0.368444549478609660,\t0.368398066531749060,\t0.368351582663893230,\t\n0.368305097875158530,\t0.368258612165660580,\t0.368212125535516580,\t0.368165637984842250,\t0.368119149513753410,\t0.368072660122367110,\t0.368026169810799160,\t0.367979678579165800,\t\n0.367933186427582830,\t0.367886693356167300,\t0.367840199365035040,\t0.367793704454302260,\t0.367747208624084830,\t0.367700711874499760,\t0.367654214205662970,\t0.367607715617690570,\t\n0.367561216110698530,\t0.367514715684803820,\t0.367468214340122330,\t0.367421712076770320,\t0.367375208894863640,\t0.367328704794519290,\t0.367282199775853190,\t0.367235693838981250,\t\n0.367189186984020420,\t0.367142679211086620,\t0.367096170520296140,\t0.367049660911764830,\t0.367003150385609770,\t0.366956638941946860,\t0.366910126580892280,\t0.366863613302562060,\t\n0.366817099107073160,\t0.366770583994541540,\t0.366724067965083440,\t0.366677551018814770,\t0.366631033155852660,\t0.366584514376312950,\t0.366537994680311950,\t0.366491474067965510,\t\n0.366444952539390860,\t0.366398430094703800,\t0.366351906734020240,\t0.366305382457457360,\t0.366258857265131020,\t0.366212331157157510,\t0.366165804133652790,\t0.366119276194733940,\t\n0.366072747340516920,\t0.366026217571118030,\t0.365979686886653170,\t0.365933155287239520,\t0.365886622772993000,\t0.365840089344029900,\t0.365793555000466180,\t0.365747019742418970,\t\n0.365700483570004180,\t0.365653946483338210,\t0.365607408482536980,\t0.365560869567717610,\t0.365514329738996110,\t0.365467788996488740,\t0.365421247340311510,\t0.365374704770581590,\t\n0.365328161287414850,\t0.365281616890927360,\t0.365235071581236190,\t0.365188525358457360,\t0.365141978222707220,\t0.365095430174101730,\t0.365048881212758080,\t0.365002331338792230,\t\n0.364955780552320530,\t0.364909228853458940,\t0.364862676242324770,\t0.364816122719033850,\t0.364769568283702610,\t0.364723012936447100,\t0.364676456677384410,\t0.364629899506630610,\t\n0.364583341424302040,\t0.364536782430514740,\t0.364490222525385880,\t0.364443661709031470,\t0.364397099981567440,\t0.364350537343111120,\t0.364303973793778490,\t0.364257409333685890,\t\n0.364210843962949340,\t0.364164277681686080,\t0.364117710490012180,\t0.364071142388043940,\t0.364024573375897500,\t0.363978003453690020,\t0.363931432621537490,\t0.363884860879556400,\t\n0.363838288227862790,\t0.363791714666573780,\t0.363745140195805560,\t0.363698564815674470,\t0.363651988526296540,\t0.363605411327789060,\t0.363558833220268110,\t0.363512254203849580,\t\n0.363465674278650840,\t0.363419093444787960,\t0.363372511702377330,\t0.363325929051534990,\t0.363279345492378230,\t0.363232761025023110,\t0.363186175649586110,\t0.363139589366183290,\t\n0.363093002174931840,\t0.363046414075947900,\t0.362999825069347970,\t0.362953235155248020,\t0.362906644333765400,\t0.362860052605016190,\t0.362813459969116850,\t0.362766866426183440,\t\n0.362720271976333270,\t0.362673676619682420,\t0.362627080356347390,\t0.362580483186444200,\t0.362533885110090270,\t0.362487286127401610,\t0.362440686238494290,\t0.362394085443485730,\t\n0.362347483742491930,\t0.362300881135629420,\t0.362254277623014260,\t0.362207673204763880,\t0.362161067880994280,\t0.362114461651822040,\t0.362067854517363170,\t0.362021246477735150,\t\n0.361974637533053980,\t0.361928027683436180,\t0.361881416928997950,\t0.361834805269856560,\t0.361788192706128220,\t0.361741579237929320,\t0.361694964865376110,\t0.361648349588585880,\t\n0.361601733407674760,\t0.361555116322758940,\t0.361508498333955710,\t0.361461879441381250,\t0.361415259645152090,\t0.361368638945384350,\t0.361322017342195430,\t0.361275394835701480,\t\n0.361228771426019000,\t0.361182147113264240,\t0.361135521897554490,\t0.361088895779005940,\t0.361042268757735150,\t0.360995640833858270,\t0.360949012007492740,\t0.360902382278754650,\t\n0.360855751647760570,\t0.360809120114626740,\t0.360762487679470560,\t0.360715854342408100,\t0.360669220103555620,\t0.360622584963030460,\t0.360575948920948850,\t0.360529311977427440,\t\n0.360482674132582280,\t0.360436035386530850,\t0.360389395739389330,\t0.360342755191274290,\t0.360296113742302030,\t0.360249471392589840,\t0.360202828142253960,\t0.360156183991411030,\t\n0.360109538940177280,\t0.360062892988670000,\t0.360016246137005560,\t0.359969598385300460,\t0.359922949733671000,\t0.359876300182234540,\t0.359829649731107310,\t0.359782998380405620,\t\n0.359736346130246800,\t0.359689692980747100,\t0.359643038932023210,\t0.359596383984191250,\t0.359549728137368800,\t0.359503071391671980,\t0.359456413747217540,\t0.359409755204121610,\t\n0.359363095762501690,\t0.359316435422474050,\t0.359269774184155340,\t0.359223112047661770,\t0.359176449013110850,\t0.359129785080618770,\t0.359083120250302260,\t0.359036454522277500,\t\n0.358989787896662080,\t0.358943120373572120,\t0.358896451953124420,\t0.358849782635435150,\t0.358803112420621790,\t0.358756441308800740,\t0.358709769300088130,\t0.358663096394601480,\t\n0.358616422592457130,\t0.358569747893771720,\t0.358523072298661480,\t0.358476395807244050,\t0.358429718419635560,\t0.358383040135952850,\t0.358336360956312050,\t0.358289680880830800,\t\n0.358242999909625330,\t0.358196318042812380,\t0.358149635280508190,\t0.358102951622830350,\t0.358056267069895130,\t0.358009581621819280,\t0.357962895278719000,\t0.357916208040711950,\t\n0.357869519907914320,\t0.357822830880442530,\t0.357776140958414040,\t0.357729450141945240,\t0.357682758431152770,\t0.357636065826152980,\t0.357589372327063500,\t0.357542677934000520,\t\n0.357495982647080880,\t0.357449286466420880,\t0.357402589392138090,\t0.357355891424348810,\t0.357309192563169790,\t0.357262492808717360,\t0.357215792161109160,\t0.357169090620461430,\t\n0.357122388186891020,\t0.357075684860514220,\t0.357028980641448560,\t0.356982275529810540,\t0.356935569525716370,\t0.356888862629283650,\t0.356842154840628810,\t0.356795446159868630,\t\n0.356748736587119360,\t0.356702026122498680,\t0.356655314766122940,\t0.356608602518108890,\t0.356561889378572970,\t0.356515175347632720,\t0.356468460425404480,\t0.356421744612005150,\t\n0.356375027907551050,\t0.356328310312159720,\t0.356281591825947710,\t0.356234872449031680,\t0.356188152181528050,\t0.356141431023554440,\t0.356094708975227270,\t0.356047986036663320,\t\n0.356001262207979010,\t0.355954537489291960,\t0.355907811880718520,\t0.355861085382375150,\t0.355814357994379490,\t0.355767629716847940,\t0.355720900549897360,\t0.355674170493644080,\t\n0.355627439548205750,\t0.355580707713698870,\t0.355533974990240200,\t0.355487241377946180,\t0.355440506876934460,\t0.355393771487321490,\t0.355347035209224120,\t0.355300298042758700,\t\n0.355253559988042980,\t0.355206821045193350,\t0.355160081214326630,\t0.355113340495559320,\t0.355066598889009100,\t0.355019856394792390,\t0.354973113013025590,\t0.354926368743826440,\t\n0.354879623587311340,\t0.354832877543597160,\t0.354786130612800450,\t0.354739382795038750,\t0.354692634090428670,\t0.354645884499086960,\t0.354599134021130140,\t0.354552382656675880,\t\n0.354505630405840650,\t0.354458877268741370,\t0.354412123245494480,\t0.354365368336217730,\t0.354318612541027530,\t0.354271855860040790,\t0.354225098293374010,\t0.354178339841144880,\t\n0.354131580503469930,\t0.354084820280465560,\t0.354038059172249620,\t0.353991297178938460,\t0.353944534300649150,\t0.353897770537497990,\t0.353851005889602890,\t0.353804240357080250,\t\n0.353757473940047030,\t0.353710706638619700,\t0.353663938452915990,\t0.353617169383052430,\t0.353570399429145980,\t0.353523628591313140,\t0.353476856869671620,\t0.353430084264337920,\t\n0.353383310775429060,\t0.353336536403061510,\t0.353289761147353000,\t0.353242985008420110,\t0.353196207986379300,\t0.353149430081348410,\t0.353102651293443980,\t0.353055871622782900,\t\n0.353009091069481700,\t0.352962309633658210,\t0.352915527315428970,\t0.352868744114910870,\t0.352821960032220490,\t0.352775175067475630,\t0.352728389220792860,\t0.352681602492289140,\t\n0.352634814882080930,\t0.352588026390286140,\t0.352541237017021280,\t0.352494446762403320,\t0.352447655626548840,\t0.352400863609575620,\t0.352354070711600240,\t0.352307276932739720,\t\n0.352260482273110580,\t0.352213686732830600,\t0.352166890312016480,\t0.352120093010784670,\t0.352073294829253040,\t0.352026495767538190,\t0.351979695825757110,\t0.351932895004026360,\t\n0.351886093302463790,\t0.351839290721185970,\t0.351792487260309930,\t0.351745682919952280,\t0.351698877700230840,\t0.351652071601262160,\t0.351605264623163330,\t0.351558456766050910,\t\n0.351511648030042810,\t0.351464838415255550,\t0.351418027921806210,\t0.351371216549811350,\t0.351324404299388880,\t0.351277591170655430,\t0.351230777163727580,\t0.351183962278723170,\t\n0.351137146515758890,\t0.351090329874951760,\t0.351043512356418340,\t0.350996693960276550,\t0.350949874686643070,\t0.350903054535634860,\t0.350856233507368610,\t0.350809411601962220,\t\n0.350762588819532320,\t0.350715765160195870,\t0.350668940624069670,\t0.350622115211271460,\t0.350575288921918030,\t0.350528461756126340,\t0.350481633714013090,\t0.350434804795696160,\t\n0.350387975001292210,\t0.350341144330917950,\t0.350294312784691200,\t0.350247480362728680,\t0.350200647065147470,\t0.350153812892064260,\t0.350106977843596900,\t0.350060141919862070,\t\n0.350013305120976890,\t0.349966467447058060,\t0.349919628898223480,\t0.349872789474589830,\t0.349825949176274190,\t0.349779108003393240,\t0.349732265956064990,\t0.349685423034406030,\t\n0.349638579238533530,\t0.349591734568564180,\t0.349544889024615890,\t0.349498042606805340,\t0.349451195315249760,\t0.349404347150065740,\t0.349357498111371230,\t0.349310648199283040,\t\n0.349263797413917780,\t0.349216945755393470,\t0.349170093223826750,\t0.349123239819334850,\t0.349076385542034410,\t0.349029530392043430,\t0.348982674369478610,\t0.348935817474457070,\t\n0.348888959707095600,\t0.348842101067512180,\t0.348795241555823480,\t0.348748381172146680,\t0.348701519916598530,\t0.348654657789296940,\t0.348607794790358750,\t0.348560930919901090,\t\n0.348514066178040650,\t0.348467200564895500,\t0.348420334080582320,\t0.348373466725217850,\t0.348326598498920170,\t0.348279729401806020,\t0.348232859433992510,\t0.348185988595596460,\t\n0.348139116886735820,\t0.348092244307527440,\t0.348045370858088400,\t0.347998496538535540,\t0.347951621348986880,\t0.347904745289559110,\t0.347857868360369530,\t0.347810990561534810,\t\n0.347764111893173080,\t0.347717232355401030,\t0.347670351948335900,\t0.347623470672094540,\t0.347576588526794850,\t0.347529705512553690,\t0.347482821629487900,\t0.347435936877715460,\t\n0.347389051257353140,\t0.347342164768518200,\t0.347295277411327430,\t0.347248389185898900,\t0.347201500092349400,\t0.347154610130796130,\t0.347107719301355980,\t0.347060827604146860,\t\n0.347013935039285740,\t0.346967041606889740,\t0.346920147307075770,\t0.346873252139961790,\t0.346826356105664700,\t0.346779459204301700,\t0.346732561435989680,\t0.346685662800846670,\t\n0.346638763298989460,\t0.346591862930534960,\t0.346544961695601230,\t0.346498059594305070,\t0.346451156626763730,\t0.346404252793094170,\t0.346357348093414340,\t0.346310442527841100,\t\n0.346263536096491800,\t0.346216628799483280,\t0.346169720636933520,\t0.346122811608959520,\t0.346075901715678480,\t0.346028990957207290,\t0.345982079333663980,\t0.345935166845165510,\t\n0.345888253491829110,\t0.345841339273771700,\t0.345794424191111340,\t0.345747508243964890,\t0.345700591432449690,\t0.345653673756682600,\t0.345606755216781750,\t0.345559835812863980,\t\n0.345512915545046210,\t0.345465994413446550,\t0.345419072418181980,\t0.345372149559369680,\t0.345325225837126550,\t0.345278301251570830,\t0.345231375802819370,\t0.345184449490989420,\t\n0.345137522316197930,\t0.345090594278563090,\t0.345043665378201750,\t0.344996735615231250,\t0.344949804989768460,\t0.344902873501931610,\t0.344855941151837600,\t0.344809007939603670,\t\n0.344762073865346850,\t0.344715138929185260,\t0.344668203131235810,\t0.344621266471615450,\t0.344574328950442320,\t0.344527390567833380,\t0.344480451323905980,\t0.344433511218777020,\t\n0.344386570252564690,\t0.344339628425385960,\t0.344292685737358110,\t0.344245742188598160,\t0.344198797779224300,\t0.344151852509353370,\t0.344104906379102900,\t0.344057959388589680,\t\n0.344011011537932010,\t0.343964062827246790,\t0.343917113256651420,\t0.343870162826262870,\t0.343823211536199320,\t0.343776259386577740,\t0.343729306377515090,\t0.343682352509129600,\t\n0.343635397781538230,\t0.343588442194858350,\t0.343541485749206950,\t0.343494528444702240,\t0.343447570281461220,\t0.343400611259601310,\t0.343353651379239400,\t0.343306690640493850,\t\n0.343259729043481510,\t0.343212766588319840,\t0.343165803275125860,\t0.343118839104017800,\t0.343071874075112640,\t0.343024908188527820,\t0.342977941444380260,\t0.342930973842788310,\t\n0.342884005383868870,\t0.342837036067739460,\t0.342790065894517050,\t0.342743094864319860,\t0.342696122977264930,\t0.342649150233469310,\t0.342602176633051200,\t0.342555202176127670,\t\n0.342508226862816120,\t0.342461250693233630,\t0.342414273667498380,\t0.342367295785727440,\t0.342320317048038280,\t0.342273337454547910,\t0.342226357005374630,\t0.342179375700635450,\t\n0.342132393540447830,\t0.342085410524928800,\t0.342038426654196650,\t0.341991441928368440,\t0.341944456347561650,\t0.341897469911893290,\t0.341850482621481650,\t0.341803494476443810,\t\n0.341756505476896840,\t0.341709515622959040,\t0.341662524914747410,\t0.341615533352379490,\t0.341568540935972280,\t0.341521547665644190,\t0.341474553541512180,\t0.341427558563693830,\t\n0.341380562732306160,\t0.341333566047467450,\t0.341286568509294900,\t0.341239570117905900,\t0.341192570873417530,\t0.341145570775948200,\t0.341098569825614870,\t0.341051568022535170,\t\n0.341004565366826160,\t0.340957561858606100,\t0.340910557497992150,\t0.340863552285101400,\t0.340816546220052140,\t0.340769539302961550,\t0.340722531533947160,\t0.340675522913125970,\t\n0.340628513440616400,\t0.340581503116535570,\t0.340534491941000940,\t0.340487479914129700,\t0.340440467036040140,\t0.340393453306849450,\t0.340346438726675080,\t0.340299423295634230,\t\n0.340252407013845240,\t0.340205389881425240,\t0.340158371898491740,\t0.340111353065161880,\t0.340064333381554120,\t0.340017312847785470,\t0.339970291463973120,\t0.339923269230235470,\t\n0.339876246146689650,\t0.339829222213453240,\t0.339782197430643310,\t0.339735171798378370,\t0.339688145316775440,\t0.339641117985952150,\t0.339594089806025680,\t0.339547060777114380,\t\n0.339500030899335450,\t0.339453000172806440,\t0.339405968597644490,\t0.339358936173968060,\t0.339311902901894280,\t0.339264868781540720,\t0.339217833813024620,\t0.339170797996464320,\t\n0.339123761331977020,\t0.339076723819680290,\t0.339029685459691420,\t0.338982646252128710,\t0.338935606197109330,\t0.338888565294750590,\t0.338841523545170830,\t0.338794480948487240,\t\n0.338747437504817510,\t0.338700393214278690,\t0.338653348076989320,\t0.338606302093066640,\t0.338559255262628140,\t0.338512207585791150,\t0.338465159062673990,\t0.338418109693393980,\t\n0.338371059478068670,\t0.338324008416815310,\t0.338276956509752310,\t0.338229903756996960,\t0.338182850158666840,\t0.338135795714879170,\t0.338088740425752430,\t0.338041684291403850,\t\n0.337994627311950680,\t0.337947569487511310,\t0.337900510818202990,\t0.337853451304143460,\t0.337806390945449840,\t0.337759329742240650,\t0.337712267694633140,\t0.337665204802744980,\t\n0.337618141066693410,\t0.337571076486596900,\t0.337524011062572680,\t0.337476944794738390,\t0.337429877683211370,\t0.337382809728110080,\t0.337335740929551760,\t0.337288671287654050,\t\n0.337241600802534290,\t0.337194529474310940,\t0.337147457303101250,\t0.337100384289022500,\t0.337053310432193220,\t0.337006235732730700,\t0.336959160190752500,\t0.336912083806376050,\t\n0.336865006579719790,\t0.336817928510901030,\t0.336770849600037450,\t0.336723769847246280,\t0.336676689252646160,\t0.336629607816354260,\t0.336582525538488390,\t0.336535442419165780,\t\n0.336488358458504940,\t0.336441273656623240,\t0.336394188013638350,\t0.336347101529667570,\t0.336300014204829470,\t0.336252926039241340,\t0.336205837033020870,\t0.336158747186285410,\t\n0.336111656499153480,\t0.336064564971742420,\t0.336017472604169530,\t0.335970379396553390,\t0.335923285349011280,\t0.335876190461660950,\t0.335829094734619750,\t0.335781998168006190,\t\n0.335734900761937680,\t0.335687802516531910,\t0.335640703431906220,\t0.335593603508179130,\t0.335546502745468100,\t0.335499401143890820,\t0.335452298703564580,\t0.335405195424608000,\t\n0.335358091307138450,\t0.335310986351273710,\t0.335263880557131020,\t0.335216773924829070,\t0.335169666454485200,\t0.335122558146216780,\t0.335075449000142300,\t0.335028339016379240,\t\n0.334981228195045390,\t0.334934116536257990,\t0.334887004040135720,\t0.334839890706795930,\t0.334792776536356420,\t0.334745661528934530,\t0.334698545684648960,\t0.334651429003617000,\t\n0.334604311485956480,\t0.334557193131784720,\t0.334510073941220450,\t0.334462953914380970,\t0.334415833051384110,\t0.334368711352347250,\t0.334321588817388990,\t0.334274465446626810,\t\n0.334227341240178000,\t0.334180216198161300,\t0.334133090320694050,\t0.334085963607894050,\t0.334038836059878770,\t0.333991707676766780,\t0.333944578458675530,\t0.333897448405722830,\t\n0.333850317518026130,\t0.333803185795704000,\t0.333756053238873920,\t0.333708919847653720,\t0.333661785622160810,\t0.333614650562513830,\t0.333567514668830220,\t0.333520377941227850,\t\n0.333473240379824120,\t0.333426101984737710,\t0.333378962756086030,\t0.333331822693986920,\t0.333284681798557860,\t0.333237540069917510,\t0.333190397508183300,\t0.333143254113472680,\t\n0.333096109885904380,\t0.333048964825595760,\t0.333001818932664730,\t0.332954672207228800,\t0.332907524649406540,\t0.332860376259315470,\t0.332813227037073500,\t0.332766076982798030,\t\n0.332718926096607750,\t0.332671774378620170,\t0.332624621828953190,\t0.332577468447724180,\t0.332530314235051970,\t0.332483159191053980,\t0.332436003315848050,\t0.332388846609551700,\t\n0.332341689072283670,\t0.332294530704161430,\t0.332247371505302420,\t0.332200211475825400,\t0.332153050615847820,\t0.332105888925487650,\t0.332058726404862340,\t0.332011563054090630,\t\n0.331964398873290050,\t0.331917233862578430,\t0.331870068022073310,\t0.331822901351893460,\t0.331775733852156310,\t0.331728565522979860,\t0.331681396364481570,\t0.331634226376780250,\t\n0.331587055559993290,\t0.331539883914238720,\t0.331492711439634050,\t0.331445538136298010,\t0.331398364004348080,\t0.331351189043901870,\t0.331304013255078080,\t0.331256836637994270,\t\n0.331209659192768400,\t0.331162480919517890,\t0.331115301818361680,\t0.331068121889417140,\t0.331020941132802340,\t0.330973759548634730,\t0.330926577137033220,\t0.330879393898115160,\t\n0.330832209831998680,\t0.330785024938801240,\t0.330737839218641690,\t0.330690652671637500,\t0.330643465297906720,\t0.330596277097566840,\t0.330549088070736630,\t0.330501898217533780,\t\n0.330454707538075710,\t0.330407516032481310,\t0.330360323700868150,\t0.330313130543354150,\t0.330265936560056930,\t0.330218741751095220,\t0.330171546116586720,\t0.330124349656649330,\t\n0.330077152371400670,\t0.330029954260959550,\t0.329982755325443520,\t0.329935555564970620,\t0.329888354979658400,\t0.329841153569625680,\t0.329793951334990120,\t0.329746748275869690,\t\n0.329699544392381970,\t0.329652339684645750,\t0.329605134152778760,\t0.329557927796898850,\t0.329510720617123780,\t0.329463512613572260,\t0.329416303786362000,\t0.329369094135610550,\t\n0.329321883661436830,\t0.329274672363958350,\t0.329227460243293190,\t0.329180247299558970,\t0.329133033532874540,\t0.329085818943357530,\t0.329038603531126020,\t0.328991387296297510,\t\n0.328944170238991030,\t0.328896952359324040,\t0.328849733657414710,\t0.328802514133380630,\t0.328755293787340700,\t0.328708072619412480,\t0.328660850629714120,\t0.328613627818363230,\t\n0.328566404185478670,\t0.328519179731178060,\t0.328471954455579140,\t0.328424728358800710,\t0.328377501440960510,\t0.328330273702176540,\t0.328283045142566450,\t0.328235815762249140,\t\n0.328188585561342340,\t0.328141354539964070,\t0.328094122698231960,\t0.328046890036264970,\t0.327999656554180790,\t0.327952422252097480,\t0.327905187130132610,\t0.327857951188405270,\t\n0.327810714427033020,\t0.327763476846133990,\t0.327716238445825870,\t0.327668999226227550,\t0.327621759187456730,\t0.327574518329631080,\t0.327527276652869630,\t0.327480034157289880,\t\n0.327432790843010140,\t0.327385546710147970,\t0.327338301758822340,\t0.327291055989150930,\t0.327243809401251920,\t0.327196561995242940,\t0.327149313771243010,\t0.327102064729369760,\t\n0.327054814869741360,\t0.327007564192475510,\t0.326960312697691160,\t0.326913060385506050,\t0.326865807256038250,\t0.326818553309405570,\t0.326771298545726900,\t0.326724042965119980,\t\n0.326676786567702940,\t0.326629529353593520,\t0.326582271322910680,\t0.326535012475772210,\t0.326487752812295750,\t0.326440492332600360,\t0.326393231036803730,\t0.326345968925023990,\t\n0.326298705997378920,\t0.326251442253987500,\t0.326204177694967510,\t0.326156912320437090,\t0.326109646130513910,\t0.326062379125317050,\t0.326015111304964240,\t0.325967842669573680,\t\n0.325920573219263100,\t0.325873302954151460,\t0.325826031874356600,\t0.325778759979996610,\t0.325731487271189390,\t0.325684213748053790,\t0.325636939410707700,\t0.325589664259268830,\t\n0.325542388293856230,\t0.325495111514587600,\t0.325447833921581280,\t0.325400555514954890,\t0.325353276294827580,\t0.325305996261317010,\t0.325258715414541540,\t0.325211433754618810,\t\n0.325164151281667920,\t0.325116867995806640,\t0.325069583897153180,\t0.325022298985825410,\t0.324975013261942220,\t0.324927726725621590,\t0.324880439376981580,\t0.324833151216140040,\t\n0.324785862243216090,\t0.324738572458327490,\t0.324691281861592020,\t0.324643990453128750,\t0.324596698233055480,\t0.324549405201490500,\t0.324502111358551610,\t0.324454816704357830,\t\n0.324407521239027000,\t0.324360224962677410,\t0.324312927875426820,\t0.324265629977394280,\t0.324218331268697700,\t0.324171031749455330,\t0.324123731419784900,\t0.324076430279805590,\t\n0.324029128329635210,\t0.323981825569392030,\t0.323934521999193810,\t0.323887217619159780,\t0.323839912429407630,\t0.323792606430055310,\t0.323745299621221890,\t0.323697992003025240,\t\n0.323650683575583580,\t0.323603374339014820,\t0.323556064293438030,\t0.323508753438971060,\t0.323461441775732270,\t0.323414129303839390,\t0.323366816023411660,\t0.323319501934566820,\t\n0.323272187037423280,\t0.323224871332098870,\t0.323177554818712630,\t0.323130237497382570,\t0.323082919368226860,\t0.323035600431363480,\t0.322988280686911490,\t0.322940960134988850,\t\n0.322893638775713750,\t0.322846316609204150,\t0.322798993635579180,\t0.322751669854956740,\t0.322704345267454670,\t0.322657019873192170,\t0.322609693672287150,\t0.322562366664857880,\t\n0.322515038851022280,\t0.322467710230899480,\t0.322420380804607390,\t0.322373050572264400,\t0.322325719533988360,\t0.322278387689898420,\t0.322231055040112510,\t0.322183721584748950,\t\n0.322136387323925690,\t0.322089052257761850,\t0.322041716386375410,\t0.321994379709884650,\t0.321947042228407590,\t0.321899703942063240,\t0.321852364850969740,\t0.321805024955244820,\t\n0.321757684255007780,\t0.321710342750376580,\t0.321663000441469450,\t0.321615657328404470,\t0.321568313411300710,\t0.321520968690276190,\t0.321473623165449250,\t0.321426276836937810,\t\n0.321378929704861150,\t0.321331581769337130,\t0.321284233030484150,\t0.321236883488420170,\t0.321189533143264430,\t0.321142181995134830,\t0.321094830044149740,\t0.321047477290427210,\t\n0.321000123734086370,\t0.320952769375245250,\t0.320905414214021800,\t0.320858058250535210,\t0.320810701484903480,\t0.320763343917244980,\t0.320715985547677720,\t0.320668626376320930,\t\n0.320621266403292530,\t0.320573905628711020,\t0.320526544052694260,\t0.320479181675361600,\t0.320431818496831000,\t0.320384454517220860,\t0.320337089736649090,\t0.320289724155235100,\t\n0.320242357773096790,\t0.320194990590352560,\t0.320147622607120430,\t0.320100253823519640,\t0.320052884239668270,\t0.320005513855684650,\t0.319958142671686820,\t0.319910770687794110,\t\n0.319863397904124440,\t0.319816024320795810,\t0.319768649937927580,\t0.319721274755637720,\t0.319673898774044730,\t0.319626521993266470,\t0.319579144413422390,\t0.319531766034630460,\t\n0.319484386857009080,\t0.319437006880676330,\t0.319389626105751500,\t0.319342244532352550,\t0.319294862160598050,\t0.319247478990605900,\t0.319200095022495520,\t0.319152710256384920,\t\n0.319105324692392560,\t0.319057938330636390,\t0.319010551171235830,\t0.318963163214308950,\t0.318915774459973660,\t0.318868384908349400,\t0.318820994559554150,\t0.318773603413706470,\t\n0.318726211470924280,\t0.318678818731327030,\t0.318631425195032740,\t0.318584030862159860,\t0.318536635732826480,\t0.318489239807151990,\t0.318441843085254360,\t0.318394445567252100,\t\n0.318347047253263350,\t0.318299648143407330,\t0.318252248237802240,\t0.318204847536566530,\t0.318157446039818330,\t0.318110043747676870,\t0.318062640660260300,\t0.318015236777686730,\t\n0.317967832100075450,\t0.317920426627544660,\t0.317873020360212750,\t0.317825613298197860,\t0.317778205441619390,\t0.317730796790595400,\t0.317683387345244430,\t0.317635977105684530,\t\n0.317588566072035170,\t0.317541154244414370,\t0.317493741622940640,\t0.317446328207732160,\t0.317398913998908290,\t0.317351498996587160,\t0.317304083200887270,\t0.317256666611926750,\t\n0.317209249229824960,\t0.317161831054700080,\t0.317114412086670180,\t0.317066992325854670,\t0.317019571772371670,\t0.316972150426339750,\t0.316924728287877040,\t0.316877305357102900,\t\n0.316829881634135560,\t0.316782457119093470,\t0.316735031812094840,\t0.316687605713259050,\t0.316640178822704230,\t0.316592751140548970,\t0.316545322666911380,\t0.316497893401910920,\t\n0.316450463345665730,\t0.316403032498294430,\t0.316355600859915100,\t0.316308168430647190,\t0.316260735210608820,\t0.316213301199918640,\t0.316165866398694760,\t0.316118430807056710,\t\n0.316070994425122490,\t0.316023557253010400,\t0.315976119290839850,\t0.315928680538729020,\t0.315881240996796490,\t0.315833800665160370,\t0.315786359543940240,\t0.315738917633254180,\t\n0.315691474933220810,\t0.315644031443958360,\t0.315596587165586250,\t0.315549142098222660,\t0.315501696241986210,\t0.315454249596995140,\t0.315406802163368800,\t0.315359353941225500,\t\n0.315311904930683840,\t0.315264455131861960,\t0.315217004544879330,\t0.315169553169854230,\t0.315122101006904850,\t0.315074648056150600,\t0.315027194317709760,\t0.314979739791700910,\t\n0.314932284478242290,\t0.314884828377453410,\t0.314837371489452400,\t0.314789913814358000,\t0.314742455352288400,\t0.314694996103363040,\t0.314647536067700240,\t0.314600075245418610,\t\n0.314552613636636340,\t0.314505151241472940,\t0.314457688060046700,\t0.314410224092476210,\t0.314362759338879750,\t0.314315293799376840,\t0.314267827474085660,\t0.314220360363124510,\t\n0.314172892466612840,\t0.314125423784669010,\t0.314077954317411530,\t0.314030484064958810,\t0.313983013027430310,\t0.313935541204944210,\t0.313888068597619310,\t0.313840595205573840,\t\n0.313793121028927260,\t0.313745646067797870,\t0.313698170322304400,\t0.313650693792565050,\t0.313603216478699430,\t0.313555738380825730,\t0.313508259499062690,\t0.313460779833528600,\t\n0.313413299384342980,\t0.313365818151624060,\t0.313318336135490650,\t0.313270853336060970,\t0.313223369753454550,\t0.313175885387789730,\t0.313128400239184810,\t0.313080914307759250,\t\n0.313033427593631450,\t0.312985940096920050,\t0.312938451817743380,\t0.312890962756221020,\t0.312843472912471220,\t0.312795982286612760,\t0.312748490878763940,\t0.312700998689044330,\t\n0.312653505717572170,\t0.312606011964466250,\t0.312558517429844920,\t0.312511022113827700,\t0.312463526016532930,\t0.312416029138079310,\t0.312368531478585230,\t0.312321033038170210,\t\n0.312273533816952660,\t0.312226033815050820,\t0.312178533032584300,\t0.312131031469671470,\t0.312083529126431060,\t0.312036026002981410,\t0.311988522099442110,\t0.311941017415931550,\t\n0.311893511952568370,\t0.311846005709471020,\t0.311798498686759130,\t0.311750990884550940,\t0.311703482302965240,\t0.311655972942120440,\t0.311608462802136170,\t0.311560951883130710,\t\n0.311513440185222870,\t0.311465927708531040,\t0.311418414453174750,\t0.311370900419272460,\t0.311323385606942500,\t0.311275870016304520,\t0.311228353647476810,\t0.311180836500578260,\t\n0.311133318575727180,\t0.311085799873043240,\t0.311038280392644750,\t0.310990760134650600,\t0.310943239099179150,\t0.310895717286350020,\t0.310848194696281550,\t0.310800671329092610,\t\n0.310753147184901600,\t0.310705622263828140,\t0.310658096565990580,\t0.310610570091507830,\t0.310563042840498180,\t0.310515514813081370,\t0.310467986009375810,\t0.310420456429499840,\t\n0.310372926073573140,\t0.310325394941714130,\t0.310277863034041590,\t0.310230330350674040,\t0.310182796891731060,\t0.310135262657331050,\t0.310087727647592960,\t0.310040191862635090,\t\n0.309992655302577140,\t0.309945117967537600,\t0.309897579857635220,\t0.309850040972988460,\t0.309802501313717060,\t0.309754960879939370,\t0.309707419671774340,\t0.309659877689340280,\t\n0.309612334932756970,\t0.309564791402142820,\t0.309517247097616690,\t0.309469702019297020,\t0.309422156167303510,\t0.309374609541754660,\t0.309327062142768780,\t0.309279513970465710,\t\n0.309231965024963860,\t0.309184415306382130,\t0.309136864814838870,\t0.309089313550453940,\t0.309041761513345670,\t0.308994208703633030,\t0.308946655121434430,\t0.308899100766869610,\t\n0.308851545640057010,\t0.308803989741115610,\t0.308756433070163760,\t0.308708875627321300,\t0.308661317412706640,\t0.308613758426438680,\t0.308566198668635880,\t0.308518638139417990,\t\n0.308471076838903570,\t0.308423514767210970,\t0.308375951924460050,\t0.308328388310769250,\t0.308280823926257440,\t0.308233258771043180,\t0.308185692845246220,\t0.308138126148984950,\t\n0.308090558682378450,\t0.308042990445545060,\t0.307995421438604640,\t0.307947851661675710,\t0.307900281114877110,\t0.307852709798327410,\t0.307805137712146290,\t0.307757564856452390,\t\n0.307709991231364550,\t0.307662416837001350,\t0.307614841673482520,\t0.307567265740926580,\t0.307519689039452040,\t0.307472111569178700,\t0.307424533330225070,\t0.307376954322710120,\t\n0.307329374546752350,\t0.307281794002471580,\t0.307234212689986350,\t0.307186630609415530,\t0.307139047760877750,\t0.307091464144492790,\t0.307043879760379110,\t0.306996294608655800,\t\n0.306948708689441300,\t0.306901122002855460,\t0.306853534549016820,\t0.306805946328044310,\t0.306758357340056520,\t0.306710767585173290,\t0.306663177063513090,\t0.306615585775194990,\t\n0.306567993720337490,\t0.306520400899060460,\t0.306472807311482350,\t0.306425212957721850,\t0.306377617837898740,\t0.306330021952131600,\t0.306282425300539400,\t0.306234827883240690,\t\n0.306187229700355330,\t0.306139630752001960,\t0.306092031038299460,\t0.306044430559366420,\t0.305996829315322790,\t0.305949227306287100,\t0.305901624532378290,\t0.305854020993715000,\t\n0.305806416690417140,\t0.305758811622603150,\t0.305711205790392180,\t0.305663599193902790,\t0.305615991833254770,\t0.305568383708566820,\t0.305520774819957490,\t0.305473165167546630,\t\n0.305425554751452830,\t0.305377943571795210,\t0.305330331628692280,\t0.305282718922263880,\t0.305235105452628770,\t0.305187491219905850,\t0.305139876224213790,\t0.305092260465672450,\t\n0.305044643944400510,\t0.304997026660516920,\t0.304949408614140330,\t0.304901789805390620,\t0.304854170234386490,\t0.304806549901246950,\t0.304758928806090570,\t0.304711306949037250,\t\n0.304663684330205740,\t0.304616060949714550,\t0.304568436807683640,\t0.304520811904231690,\t0.304473186239477670,\t0.304425559813540250,\t0.304377932626539340,\t0.304330304678593620,\t\n0.304282675969822170,\t0.304235046500343550,\t0.304187416270277790,\t0.304139785279743450,\t0.304092153528859650,\t0.304044521017745040,\t0.303996887746519560,\t0.303949253715301900,\t\n0.303901618924211080,\t0.303853983373365780,\t0.303806347062885900,\t0.303758709992890230,\t0.303711072163497300,\t0.303663433574827170,\t0.303615794226998410,\t0.303568154120130160,\t\n0.303520513254341150,\t0.303472871629751280,\t0.303425229246479190,\t0.303377586104644050,\t0.303329942204364490,\t0.303282297545760530,\t0.303234652128950840,\t0.303187005954054460,\t\n0.303139359021190210,\t0.303091711330477960,\t0.303044062882036450,\t0.302996413675984730,\t0.302948763712441560,\t0.302901112991526940,\t0.302853461513359570,\t0.302805809278058450,\t\n0.302758156285742490,\t0.302710502536531480,\t0.302662848030544220,\t0.302615192767899440,\t0.302567536748717110,\t0.302519879973115910,\t0.302472222441215080,\t0.302424564153133180,\t\n0.302376905108990350,\t0.302329245308905260,\t0.302281584752997050,\t0.302233923441384390,\t0.302186261374187410,\t0.302138598551524750,\t0.302090934973515630,\t0.302043270640278750,\t\n0.301995605551934050,\t0.301947939708600400,\t0.301900273110396910,\t0.301852605757442270,\t0.301804937649856550,\t0.301757268787758490,\t0.301709599171266830,\t0.301661928800501580,\t\n0.301614257675581530,\t0.301566585796625870,\t0.301518913163753290,\t0.301471239777083840,\t0.301423565636736280,\t0.301375890742829830,\t0.301328215095483240,\t0.301280538694816520,\t\n0.301232861540948470,\t0.301185183633998210,\t0.301137504974084650,\t0.301089825561327680,\t0.301042145395846170,\t0.300994464477759290,\t0.300946782807185840,\t0.300899100384245890,\t\n0.300851417209058110,\t0.300803733281741430,\t0.300756048602415840,\t0.300708363171200090,\t0.300660676988213470,\t0.300612990053574670,\t0.300565302367403860,\t0.300517613929819790,\t\n0.300469924740941700,\t0.300422234800888370,\t0.300374544109779870,\t0.300326852667735010,\t0.300279160474873020,\t0.300231467531312750,\t0.300183773837174150,\t0.300136079392576140,\t\n0.300088384197637950,\t0.300040688252478370,\t0.299992991557217540,\t0.299945294111974180,\t0.299897595916867600,\t0.299849896972016580,\t0.299802197277541260,\t0.299754496833560480,\t\n0.299706795640192980,\t0.299659093697558940,\t0.299611391005777160,\t0.299563687564966930,\t0.299515983375246990,\t0.299468278436737570,\t0.299420572749557470,\t0.299372866313825870,\t\n0.299325159129661730,\t0.299277451197185130,\t0.299229742516514850,\t0.299182033087770250,\t0.299134322911070170,\t0.299086611986534630,\t0.299038900314282650,\t0.298991187894433350,\t\n0.298943474727105700,\t0.298895760812419750,\t0.298848046150494430,\t0.298800330741448570,\t0.298752614585402250,\t0.298704897682474440,\t0.298657180032784410,\t0.298609461636450970,\t\n0.298561742493594300,\t0.298514022604333300,\t0.298466301968787210,\t0.298418580587074990,\t0.298370858459316710,\t0.298323135585631280,\t0.298275411966137990,\t0.298227687600955800,\t\n0.298179962490204790,\t0.298132236634003840,\t0.298084510032472330,\t0.298036782685729140,\t0.297989054593894410,\t0.297941325757087040,\t0.297893596175425880,\t0.297845865849031220,\t\n0.297798134778021860,\t0.297750402962517200,\t0.297702670402636090,\t0.297654937098498720,\t0.297607203050223980,\t0.297559468257931280,\t0.297511732721739470,\t0.297463996441768740,\t\n0.297416259418138040,\t0.297368521650966670,\t0.297320783140373580,\t0.297273043886478960,\t0.297225303889401770,\t0.297177563149261250,\t0.297129821666176460,\t0.297082079440267490,\t\n0.297034336471653340,\t0.296986592760452920,\t0.296938848306786460,\t0.296891103110772880,\t0.296843357172531520,\t0.296795610492181340,\t0.296747863069842580,\t0.296700114905634140,\t\n0.296652365999675430,\t0.296604616352085400,\t0.296556865962984200,\t0.296509114832490870,\t0.296461362960724780,\t0.296413610347804830,\t0.296365856993851260,\t0.296318102898983080,\t\n0.296270348063319590,\t0.296222592486979850,\t0.296174836170084050,\t0.296127079112751160,\t0.296079321315100560,\t0.296031562777251230,\t0.295983803499323460,\t0.295936043481436150,\t\n0.295888282723708320,\t0.295840521226260200,\t0.295792758989210760,\t0.295744996012679400,\t0.295697232296785180,\t0.295649467841648310,\t0.295601702647387720,\t0.295553936714122890,\t\n0.295506170041972830,\t0.295458402631057710,\t0.295410634481496630,\t0.295362865593408960,\t0.295315095966913690,\t0.295267325602131090,\t0.295219554499180190,\t0.295171782658180390,\t\n0.295124010079250760,\t0.295076236762511490,\t0.295028462708081640,\t0.294980687916080180,\t0.294932912386627440,\t0.294885136119842410,\t0.294837359115844580,\t0.294789581374752920,\t\n0.294741802896687670,\t0.294694023681768000,\t0.294646243730113220,\t0.294598463041842400,\t0.294550681617075870,\t0.294502899455932610,\t0.294455116558532130,\t0.294407332924993440,\t\n0.294359548555436780,\t0.294311763449981330,\t0.294263977608746400,\t0.294216191031851150,\t0.294168403719415830,\t0.294120615671559500,\t0.294072826888401250,\t0.294025037370061300,\t\n0.293977247116658790,\t0.293929456128313120,\t0.293881664405143410,\t0.293833871947270010,\t0.293786078754811890,\t0.293738284827888550,\t0.293690490166619080,\t0.293642694771123810,\t\n0.293594898641521830,\t0.293547101777932580,\t0.293499304180475150,\t0.293451505849269930,\t0.293403706784435890,\t0.293355906986092600,\t0.293308106454359120,\t0.293260305189355810,\t\n0.293212503191201730,\t0.293164700460016410,\t0.293116896995918860,\t0.293069092799029540,\t0.293021287869467460,\t0.292973482207351750,\t0.292925675812802770,\t0.292877868685939620,\t\n0.292830060826881730,\t0.292782252235748330,\t0.292734442912659710,\t0.292686632857734940,\t0.292638822071093650,\t0.292591010552854860,\t0.292543198303138910,\t0.292495385322065040,\t\n0.292447571609752650,\t0.292399757166320940,\t0.292351941991890300,\t0.292304126086579740,\t0.292256309450508900,\t0.292208492083796840,\t0.292160673986563980,\t0.292112855158929430,\t\n0.292065035601012320,\t0.292017215312933060,\t0.291969394294810720,\t0.291921572546764980,\t0.291873750068914810,\t0.291825926861380700,\t0.291778102924281800,\t0.291730278257737620,\t\n0.291682452861867340,\t0.291634626736791300,\t0.291586799882628760,\t0.291538972299499210,\t0.291491143987521790,\t0.291443314946816910,\t0.291395485177503800,\t0.291347654679701920,\t\n0.291299823453530500,\t0.291251991499109960,\t0.291204158816559420,\t0.291156325405998060,\t0.291108491267546340,\t0.291060656401323340,\t0.291012820807448720,\t0.290964984486041690,\t\n0.290917147437222520,\t0.290869309661110520,\t0.290821471157825310,\t0.290773631927485900,\t0.290725791970212870,\t0.290677951286125390,\t0.290630109875342990,\t0.290582267737984960,\t\n0.290534424874171580,\t0.290486581284022220,\t0.290438736967656370,\t0.290390891925193300,\t0.290343046156753380,\t0.290295199662455820,\t0.290247352442419890,\t0.290199504496765960,\t\n0.290151655825613310,\t0.290103806429081510,\t0.290055956307289750,\t0.290008105460358550,\t0.289960253888407070,\t0.289912401591554960,\t0.289864548569921440,\t0.289816694823626930,\t\n0.289768840352790710,\t0.289720985157532360,\t0.289673129237971170,\t0.289625272594227550,\t0.289577415226420780,\t0.289529557134670430,\t0.289481698319095810,\t0.289433838779817320,\t\n0.289385978516954250,\t0.289338117530626270,\t0.289290255820952520,\t0.289242393388053580,\t0.289194530232048660,\t0.289146666353056970,\t0.289098801751199060,\t0.289050936426594130,\t\n0.289003070379361900,\t0.288955203609621510,\t0.288907336117493590,\t0.288859467903097300,\t0.288811598966552340,\t0.288763729307977950,\t0.288715858927494680,\t0.288667987825221740,\t\n0.288620116001278850,\t0.288572243455785250,\t0.288524370188861460,\t0.288476496200626710,\t0.288428621491200800,\t0.288380746060702850,\t0.288332869909253440,\t0.288284993036971910,\t\n0.288237115443977450,\t0.288189237130390630,\t0.288141358096330740,\t0.288093478341917400,\t0.288045597867269960,\t0.287997716672508950,\t0.287949834757753650,\t0.287901952123123810,\t\n0.287854068768738590,\t0.287806184694718690,\t0.287758299901183290,\t0.287710414388252180,\t0.287662528156044540,\t0.287614641204681050,\t0.287566753534280960,\t0.287518865144963940,\t\n0.287470976036849400,\t0.287423086210057800,\t0.287375195664708480,\t0.287327304400920800,\t0.287279412418815220,\t0.287231519718511130,\t0.287183626300128280,\t0.287135732163785910,\t\n0.287087837309604630,\t0.287039941737703750,\t0.286992045448203000,\t0.286944148441221740,\t0.286896250716880570,\t0.286848352275298700,\t0.286800453116596020,\t0.286752553240891720,\t\n0.286704652648306470,\t0.286656751338959630,\t0.286608849312970870,\t0.286560946570459610,\t0.286513043111546350,\t0.286465138936350510,\t0.286417234044991860,\t0.286369328437589670,\t\n0.286321422114264530,\t0.286273515075135880,\t0.286225607320323040,\t0.286177698849946590,\t0.286129789664125890,\t0.286081879762980720,\t0.286033969146630430,\t0.285986057815195590,\t\n0.285938145768795670,\t0.285890233007550400,\t0.285842319531579070,\t0.285794405341002370,\t0.285746490435939690,\t0.285698574816510730,\t0.285650658482834940,\t0.285602741435032950,\t\n0.285554823673224100,\t0.285506905197528190,\t0.285458986008064570,\t0.285411066104953930,\t0.285363145488315590,\t0.285315224158268990,\t0.285267302114934780,\t0.285219379358432280,\t\n0.285171455888881320,\t0.285123531706401310,\t0.285075606811112940,\t0.285027681203135490,\t0.284979754882588860,\t0.284931827849592420,\t0.284883900104266840,\t0.284835971646731520,\t\n0.284788042477106260,\t0.284740112595510460,\t0.284692182002064810,\t0.284644250696888700,\t0.284596318680101930,\t0.284548385951823970,\t0.284500452512175480,\t0.284452518361275890,\t\n0.284404583499244520,\t0.284356647926202130,\t0.284308711642268120,\t0.284260774647562390,\t0.284212836942204230,\t0.284164898526314440,\t0.284116959400012360,\t0.284069019563417900,\t\n0.284021079016650470,\t0.283973137759830800,\t0.283925195793078230,\t0.283877253116512740,\t0.283829309730253610,\t0.283781365634421690,\t0.283733420829136330,\t0.283685475314517430,\t\n0.283637529090684400,\t0.283589582157757980,\t0.283541634515857620,\t0.283493686165102730,\t0.283445737105614050,\t0.283397787337511090,\t0.283349836860913580,\t0.283301885675941060,\t\n0.283253933782714300,\t0.283205981181352650,\t0.283158027871976080,\t0.283110073854704050,\t0.283062119129657170,\t0.283014163696955090,\t0.282966207556717530,\t0.282918250709064070,\t\n0.282870293154115380,\t0.282822334891990930,\t0.282774375922810680,\t0.282726416246694090,\t0.282678455863761830,\t0.282630494774133490,\t0.282582532977928850,\t0.282534570475267530,\t\n0.282486607266270120,\t0.282438643351056230,\t0.282390678729745330,\t0.282342713402458150,\t0.282294747369314150,\t0.282246780630433350,\t0.282198813185935090,\t0.282150845035940290,\t\n0.282102876180568340,\t0.282054906619939210,\t0.282006936354172400,\t0.281958965383388660,\t0.281910993707707500,\t0.281863021327248890,\t0.281815048242132270,\t0.281767074452478450,\t\n0.281719099958406990,\t0.281671124760037750,\t0.281623148857490240,\t0.281575172250885350,\t0.281527194940342450,\t0.281479216925981210,\t0.281431238207922320,\t0.281383258786285340,\t\n0.281335278661190240,\t0.281287297832756470,\t0.281239316301104880,\t0.281191334066355050,\t0.281143351128626820,\t0.281095367488039870,\t0.281047383144714840,\t0.280999398098771390,\t\n0.280951412350329440,\t0.280903425899508560,\t0.280855438746429540,\t0.280807450891211900,\t0.280759462333975640,\t0.280711473074840290,\t0.280663483113926690,\t0.280615492451354360,\t\n0.280567501087242930,\t0.280519509021713130,\t0.280471516254884530,\t0.280423522786877210,\t0.280375528617810620,\t0.280327533747805610,\t0.280279538176981810,\t0.280231541905459130,\t\n0.280183544933357230,\t0.280135547260796810,\t0.280087548887897550,\t0.280039549814779460,\t0.279991550041562070,\t0.279943549568366150,\t0.279895548395311440,\t0.279847546522517810,\t\n0.279799543950104920,\t0.279751540678193580,\t0.279703536706903400,\t0.279655532036354350,\t0.279607526666666050,\t0.279559520597959410,\t0.279511513830353890,\t0.279463506363969220,\t\n0.279415498198926190,\t0.279367489335344390,\t0.279319479773343930,\t0.279271469513044270,\t0.279223458554566430,\t0.279175446898029870,\t0.279127434543554760,\t0.279079421491260640,\t\n0.279031407741268330,\t0.278983393293697530,\t0.278935378148668260,\t0.278887362306300120,\t0.278839345766713990,\t0.278791328530029470,\t0.278743310596366700,\t0.278695291965845190,\t\n0.278647272638585850,\t0.278599252614708360,\t0.278551231894332290,\t0.278503210477578590,\t0.278455188364566840,\t0.278407165555417110,\t0.278359142050249090,\t0.278311117849183610,\t\n0.278263092952340310,\t0.278215067359839310,\t0.278167041071800240,\t0.278119014088343940,\t0.278070986409590160,\t0.278022958035658850,\t0.277974928966669750,\t0.277926899202743770,\t\n0.277878868744000530,\t0.277830837590560100,\t0.277782805742542220,\t0.277734773200067670,\t0.277686739963256210,\t0.277638706032227510,\t0.277590671407102420,\t0.277542636088000670,\t\n0.277494600075042340,\t0.277446563368347050,\t0.277398525968035830,\t0.277350487874228280,\t0.277302449087044490,\t0.277254409606604140,\t0.277206369433028230,\t0.277158328566436410,\t\n0.277110287006948730,\t0.277062244754684880,\t0.277014201809765880,\t0.276966158172311410,\t0.276918113842441470,\t0.276870068820275870,\t0.276822023105935510,\t0.276773976699540130,\t\n0.276725929601209790,\t0.276677881811064170,\t0.276629833329224250,\t0.276581784155809810,\t0.276533734290940470,\t0.276485683734737200,\t0.276437632487319730,\t0.276389580548808190,\t\n0.276341527919322260,\t0.276293474598982900,\t0.276245420587909910,\t0.276197365886223340,\t0.276149310494042950,\t0.276101254411489690,\t0.276053197638683300,\t0.276005140175743900,\t\n0.275957082022791230,\t0.275909023179946310,\t0.275860963647328820,\t0.275812903425058930,\t0.275764842513256340,\t0.275716780912042050,\t0.275668718621535860,\t0.275620655641857390,\t\n0.275572591973127780,\t0.275524527615466640,\t0.275476462568994160,\t0.275428396833830140,\t0.275380330410095520,\t0.275332263297910110,\t0.275284195497394020,\t0.275236127008667010,\t\n0.275188057831850130,\t0.275139987967063070,\t0.275091917414426070,\t0.275043846174058860,\t0.274995774246082400,\t0.274947701630616600,\t0.274899628327781480,\t0.274851554337696870,\t\n0.274803479660483800,\t0.274755404296262050,\t0.274707328245151370,\t0.274659251507272770,\t0.274611174082746050,\t0.274563095971691370,\t0.274515017174228550,\t0.274466937690478640,\t\n0.274418857520561330,\t0.274370776664596920,\t0.274322695122705130,\t0.274274612895007040,\t0.274226529981622390,\t0.274178446382671410,\t0.274130362098273910,\t0.274082277128550930,\t\n0.274034191473622290,\t0.273986105133608100,\t0.273938018108628280,\t0.273889930398803830,\t0.273841842004254540,\t0.273793752925100220,\t0.273745663161461930,\t0.273697572713459510,\t\n0.273649481581213110,\t0.273601389764842660,\t0.273553297264469090,\t0.273505204080212340,\t0.273457110212192540,\t0.273409015660529500,\t0.273360920425344430,\t0.273312824506756980,\t\n0.273264727904887540,\t0.273216630619855790,\t0.273168532651782920,\t0.273120434000788730,\t0.273072334666993490,\t0.273024234650516890,\t0.272976133951480240,\t0.272928032570003140,\t\n0.272879930506206070,\t0.272831827760208650,\t0.272783724332132160,\t0.272735620222096350,\t0.272687515430221020,\t0.272639409956627330,\t0.272591303801435150,\t0.272543196964764700,\t\n0.272495089446735840,\t0.272446981247469690,\t0.272398872367086040,\t0.272350762805705250,\t0.272302652563447100,\t0.272254541640432780,\t0.272206430036782080,\t0.272158317752615340,\t\n0.272110204788052310,\t0.272062091143214280,\t0.272013976818220930,\t0.271965861813192710,\t0.271917746128249370,\t0.271869629763512140,\t0.271821512719100770,\t0.271773394995135250,\t\n0.271725276591736620,\t0.271677157509024820,\t0.271629037747120160,\t0.271580917306142420,\t0.271532796186212840,\t0.271484674387451270,\t0.271436551909978010,\t0.271388428753912950,\t\n0.271340304919377270,\t0.271292180406490780,\t0.271244055215373870,\t0.271195929346146390,\t0.271147802798929530,\t0.271099675573843120,\t0.271051547671007530,\t0.271003419090542650,\t\n0.270955289832569670,\t0.270907159897208480,\t0.270859029284578890,\t0.270810897994802240,\t0.270762766027998310,\t0.270714633384287420,\t0.270666500063789560,\t0.270618366066625870,\t\n0.270570231392916300,\t0.270522096042781100,\t0.270473960016340280,\t0.270425823313714950,\t0.270377685935025090,\t0.270329547880390990,\t0.270281409149932590,\t0.270233269743771150,\t\n0.270185129662026460,\t0.270136988904819020,\t0.270088847472268630,\t0.270040705364496540,\t0.269992562581622740,\t0.269944419123767490,\t0.269896274991050730,\t0.269848130183593770,\t\n0.269799984701516500,\t0.269751838544938780,\t0.269703691713981950,\t0.269655544208765860,\t0.269607396029410920,\t0.269559247176037020,\t0.269511097648765460,\t0.269462947447716210,\t\n0.269414796573009540,\t0.269366645024765430,\t0.269318492803105160,\t0.269270339908148640,\t0.269222186340016320,\t0.269174032098828060,\t0.269125877184705150,\t0.269077721597767550,\t\n0.269029565338135660,\t0.268981408405929430,\t0.268933250801270120,\t0.268885092524277670,\t0.268836933575072050,\t0.268788773953774540,\t0.268740613660505060,\t0.268692452695384050,\t\n0.268644291058531490,\t0.268596128750068660,\t0.268547965770115530,\t0.268499802118792430,\t0.268451637796219390,\t0.268403472802517700,\t0.268355307137807360,\t0.268307140802208690,\t\n0.268258973795841790,\t0.268210806118827860,\t0.268162637771286960,\t0.268114468753339390,\t0.268066299065105260,\t0.268018128706705830,\t0.267969957678261040,\t0.267921785979890970,\t\n0.267873613611716850,\t0.267825440573858650,\t0.267777266866436940,\t0.267729092489571550,\t0.267680917443383900,\t0.267632741727993950,\t0.267584565343522150,\t0.267536388290088470,\t\n0.267488210567814300,\t0.267440032176819550,\t0.267391853117224740,\t0.267343673389149880,\t0.267295492992716270,\t0.267247311928043910,\t0.267199130195253320,\t0.267150947794464410,\t\n0.267102764725798580,\t0.267054580989375840,\t0.267006396585316220,\t0.266958211513741050,\t0.266910025774770350,\t0.266861839368524590,\t0.266813652295123770,\t0.266765464554689300,\t\n0.266717276147341140,\t0.266669087073199750,\t0.266620897332385250,\t0.266572706925018940,\t0.266524515851220890,\t0.266476324111111500,\t0.266428131704810890,\t0.266379938632440420,\t\n0.266331744894120040,\t0.266283550489970320,\t0.266235355420111290,\t0.266187159684664330,\t0.266138963283749420,\t0.266090766217487170,\t0.266042568485997500,\t0.265994370089401910,\t\n0.265946171027820370,\t0.265897971301372940,\t0.265849770910181030,\t0.265801569854364710,\t0.265753368134044430,\t0.265705165749340330,\t0.265656962700373760,\t0.265608758987264770,\t\n0.265560554610133840,\t0.265512349569101140,\t0.265464143864287960,\t0.265415937495814490,\t0.265367730463801130,\t0.265319522768368010,\t0.265271314409636530,\t0.265223105387726700,\t\n0.265174895702759210,\t0.265126685354853950,\t0.265078474344132450,\t0.265030262670714780,\t0.264982050334721050,\t0.264933837336272570,\t0.264885623675489510,\t0.264837409352492390,\t\n0.264789194367401340,\t0.264740978720337690,\t0.264692762411421640,\t0.264644545440773650,\t0.264596327808513890,\t0.264548109514763760,\t0.264499890559643290,\t0.264451670943273150,\t\n0.264403450665773370,\t0.264355229727265440,\t0.264307008127869390,\t0.264258785867705850,\t0.264210562946894880,\t0.264162339365557940,\t0.264114115123815160,\t0.264065890221786670,\t\n0.264017664659593920,\t0.263969438437356930,\t0.263921211555196380,\t0.263872984013232390,\t0.263824755811586380,\t0.263776526950378450,\t0.263728297429729200,\t0.263680067249758790,\t\n0.263631836410588630,\t0.263583604912338900,\t0.263535372755130120,\t0.263487139939082520,\t0.263438906464317450,\t0.263390672330955140,\t0.263342437539116180,\t0.263294202088920680,\t\n0.263245965980490100,\t0.263197729213944580,\t0.263149491789404780,\t0.263101253706990780,\t0.263053014966824090,\t0.263004775569024910,\t0.262956535513713290,\t0.262908294801010800,\t\n0.262860053431037580,\t0.262811811403914190,\t0.262763568719760860,\t0.262715325378699070,\t0.262667081380848930,\t0.262618836726331070,\t0.262570591415265730,\t0.262522345447774310,\t\n0.262474098823977040,\t0.262425851543994500,\t0.262377603607946930,\t0.262329355015955780,\t0.262281105768141230,\t0.262232855864623970,\t0.262184605305524070,\t0.262136354090963140,\t\n0.262088102221061270,\t0.262039849695938740,\t0.261991596515717020,\t0.261943342680516330,\t0.261895088190457260,\t0.261846833045660030,\t0.261798577246246170,\t0.261750320792335840,\t\n0.261702063684049690,\t0.261653805921508000,\t0.261605547504832230,\t0.261557288434142550,\t0.261509028709559670,\t0.261460768331203800,\t0.261412507299196410,\t0.261364245613657790,\t\n0.261315983274708510,\t0.261267720282468860,\t0.261219456637060370,\t0.261171192338603200,\t0.261122927387217650,\t0.261074661783025190,\t0.261026395526146040,\t0.260978128616700940,\t\n0.260929861054810090,\t0.260881592840595030,\t0.260833323974175970,\t0.260785054455673630,\t0.260736784285208190,\t0.260688513462901230,\t0.260640241988872980,\t0.260591969863244120,\t\n0.260543697086134950,\t0.260495423657666920,\t0.260447149577960340,\t0.260398874847135920,\t0.260350599465313800,\t0.260302323432615720,\t0.260254046749161750,\t0.260205769415072290,\t\n0.260157491430468790,\t0.260109212795471560,\t0.260060933510201320,\t0.260012653574778320,\t0.259964372989324120,\t0.259916091753958970,\t0.259867809868803590,\t0.259819527333978280,\t\n0.259771244149604560,\t0.259722960315802720,\t0.259674675832693490,\t0.259626390700397170,\t0.259578104919035270,\t0.259529818488728140,\t0.259481531409596400,\t0.259433243681760460,\t\n0.259384955305341840,\t0.259336666280460810,\t0.259288376607238080,\t0.259240086285794040,\t0.259191795316250200,\t0.259143503698726850,\t0.259095211433344350,\t0.259046918520224210,\t\n0.258998624959486780,\t0.258950330751252790,\t0.258902035895642530,\t0.258853740392777640,\t0.258805444242778400,\t0.258757147445765560,\t0.258708850001859390,\t0.258660551911181540,\t\n0.258612253173852280,\t0.258563953789992420,\t0.258515653759722240,\t0.258467353083163380,\t0.258419051760436110,\t0.258370749791661190,\t0.258322447176959010,\t0.258274143916451150,\t\n0.258225840010257890,\t0.258177535458499590,\t0.258129230261297920,\t0.258080924418773170,\t0.258032617931046090,\t0.257984310798237030,\t0.257936003020467650,\t0.257887694597858210,\t\n0.257839385530529600,\t0.257791075818602060,\t0.257742765462197270,\t0.257694454461435570,\t0.257646142816437720,\t0.257597830527324100,\t0.257549517594216350,\t0.257501204017234750,\t\n0.257452889796500160,\t0.257404574932132920,\t0.257356259424254720,\t0.257307943272985840,\t0.257259626478446630,\t0.257211309040758840,\t0.257162990960042750,\t0.257114672236419210,\t\n0.257066352870008510,\t0.257018032860932390,\t0.256969712209311200,\t0.256921390915265670,\t0.256873068978916320,\t0.256824746400384660,\t0.256776423179791160,\t0.256728099317256600,\t\n0.256679774812901380,\t0.256631449666847140,\t0.256583123879214230,\t0.256534797450123590,\t0.256486470379695460,\t0.256438142668051650,\t0.256389814315312440,\t0.256341485321598670,\t\n0.256293155687030820,\t0.256244825411730440,\t0.256196494495818050,\t0.256148162939414000,\t0.256099830742639920,\t0.256051497905616320,\t0.256003164428463940,\t0.255954830311303230,\t\n0.255906495554255880,\t0.255858160157442280,\t0.255809824120983300,\t0.255761487444999270,\t0.255713150129611990,\t0.255664812174941860,\t0.255616473581109670,\t0.255568134348235890,\t\n0.255519794476442190,\t0.255471453965849030,\t0.255423112816577200,\t0.255374771028747170,\t0.255326428602480620,\t0.255278085537898050,\t0.255229741835119760,\t0.255181397494267600,\t\n0.255133052515461920,\t0.255084706898823680,\t0.255036360644473160,\t0.254988013752532220,\t0.254939666223121200,\t0.254891318056361060,\t0.254842969252372150,\t0.254794619811276270,\t\n0.254746269733193860,\t0.254697919018245730,\t0.254649567666552390,\t0.254601215678235570,\t0.254552863053415730,\t0.254504509792213730,\t0.254456155894750010,\t0.254407801361146320,\t\n0.254359446191523120,\t0.254311090386000920,\t0.254262733944701390,\t0.254214376867745010,\t0.254166019155252720,\t0.254117660807344940,\t0.254069301824143450,\t0.254020942205768650,\t\n0.253972581952341570,\t0.253924221063982550,\t0.253875859540813430,\t0.253827497382954680,\t0.253779134590527140,\t0.253730771163651390,\t0.253682407102449100,\t0.253634042407040850,\t\n0.253585677077547420,\t0.253537311114089390,\t0.253488944516788550,\t0.253440577285765300,\t0.253392209421140210,\t0.253343840923035020,\t0.253295471791570190,\t0.253247102026866730,\t\n0.253198731629045050,\t0.253150360598226990,\t0.253101988934533060,\t0.253053616638084120,\t0.253005243709000680,\t0.252956870147404640,\t0.252908495953416360,\t0.252860121127156830,\t\n0.252811745668746650,\t0.252763369578307470,\t0.252714992855959890,\t0.252666615501824790,\t0.252618237516022750,\t0.252569858898675560,\t0.252521479649903680,\t0.252473099769828120,\t\n0.252424719258569410,\t0.252376338116249320,\t0.252327956342988380,\t0.252279573938907100,\t0.252231190904127320,\t0.252182807238769570,\t0.252134422942954790,\t0.252086038016803570,\t\n0.252037652460437630,\t0.251989266273977610,\t0.251940879457544400,\t0.251892492011258520,\t0.251844103935241930,\t0.251795715229615020,\t0.251747325894498830,\t0.251698935930013860,\t\n0.251650545336282060,\t0.251602154113423850,\t0.251553762261560230,\t0.251505369780811780,\t0.251456976671300400,\t0.251408582933146500,\t0.251360188566470740,\t0.251311793571394990,\t\n0.251263397948039700,\t0.251215001696525940,\t0.251166604816974230,\t0.251118207309506460,\t0.251069809174243150,\t0.251021410411305320,\t0.250973011020813540,\t0.250924611002889650,\t\n0.250876210357654230,\t0.250827809085228280,\t0.250779407185732440,\t0.250731004659288440,\t0.250682601506016960,\t0.250634197726038950,\t0.250585793319475060,\t0.250537388286447060,\t\n0.250488982627075640,\t0.250440576341481310,\t0.250392169429785980,\t0.250343761892110220,\t0.250295353728575090,\t0.250246944939301110,\t0.250198535524410180,\t0.250150125484022930,\t\n0.250101714818260380,\t0.250053303527243090,\t0.250004891611092960,\t0.249956479069930650,\t0.249908065903877120,\t0.249859652113053000,\t0.249811237697580150,\t0.249762822657579240,\t\n0.249714406993171270,\t0.249665990704476840,\t0.249617573791617860,\t0.249569156254714960,\t0.249520738093889170,\t0.249472319309261090,\t0.249423899900952650,\t0.249375479869084450,\t\n0.249327059213777120,\t0.249278637935152590,\t0.249230216033331450,\t0.249181793508434780,\t0.249133370360583200,\t0.249084946589898630,\t0.249036522196501660,\t0.248988097180513430,\t\n0.248939671542054490,\t0.248891245281246810,\t0.248842818398211040,\t0.248794390893068210,\t0.248745962765938940,\t0.248697534016945220,\t0.248649104646207680,\t0.248600674653847360,\t\n0.248552244039984940,\t0.248503812804742320,\t0.248455380948240180,\t0.248406948470599160,\t0.248358515371941200,\t0.248310081652386940,\t0.248261647312057470,\t0.248213212351073460,\t\n0.248164776769556870,\t0.248116340567628320,\t0.248067903745408910,\t0.248019466303019330,\t0.247971028240581510,\t0.247922589558216110,\t0.247874150256044230,\t0.247825710334186540,\t\n0.247777269792765040,\t0.247728828631900350,\t0.247680386851713560,\t0.247631944452325420,\t0.247583501433857820,\t0.247535057796431480,\t0.247486613540167040,\t0.247438168665186530,\t\n0.247389723171610560,\t0.247341277059560330,\t0.247292830329156440,\t0.247244382980520930,\t0.247195935013774430,\t0.247147486429038110,\t0.247099037226432640,\t0.247050587406080020,\t\n0.247002136968100920,\t0.246953685912616490,\t0.246905234239747420,\t0.246856781949615660,\t0.246808329042341980,\t0.246759875518047460,\t0.246711421376852810,\t0.246662966618880070,\t\n0.246614511244249910,\t0.246566055253083010,\t0.246517598645501430,\t0.246469141421625850,\t0.246420683581577400,\t0.246372225125476820,\t0.246323766053446110,\t0.246275306365605990,\t\n0.246226846062077590,\t0.246178385142981650,\t0.246129923608440190,\t0.246081461458573900,\t0.246032998693503980,\t0.245984535313351130,\t0.245936071318237360,\t0.245887606708283410,\t\n0.245839141483610440,\t0.245790675644339210,\t0.245742209190591700,\t0.245693742122488650,\t0.245645274440151270,\t0.245596806143700270,\t0.245548337233257700,\t0.245499867708944270,\t\n0.245451397570880750,\t0.245402926819189150,\t0.245354455453990260,\t0.245305983475405220,\t0.245257510883554770,\t0.245209037678561000,\t0.245160563860544630,\t0.245112089429626840,\t\n0.245063614385928390,\t0.245015138729571340,\t0.244966662460676470,\t0.244918185579364930,\t0.244869708085757480,\t0.244821229979976180,\t0.244772751262141850,\t0.244724271932375610,\t\n0.244675791990798280,\t0.244627311437531890,\t0.244578830272697200,\t0.244530348496415030,\t0.244481866108807400,\t0.244433383109995130,\t0.244384899500099400,\t0.244336415279240960,\t\n0.244287930447541930,\t0.244239445005123100,\t0.244190958952105630,\t0.244142472288610330,\t0.244093985014759290,\t0.244045497130673280,\t0.243997008636473530,\t0.243948519532280830,\t\n0.243900029818217260,\t0.243851539494403640,\t0.243803048560961130,\t0.243754557018010580,\t0.243706064865674090,\t0.243657572104072410,\t0.243609078733326380,\t0.243560584753558100,\t\n0.243512090164888340,\t0.243463594967438360,\t0.243415099161328970,\t0.243366602746682230,\t0.243318105723619030,\t0.243269608092260530,\t0.243221109852727600,\t0.243172611005142310,\t\n0.243124111549625520,\t0.243075611486298420,\t0.243027110815281860,\t0.242978609536697980,\t0.242930107650667550,\t0.242881605157311890,\t0.242833102056751740,\t0.242784598349109290,\t\n0.242736094034505360,\t0.242687589113061150,\t0.242639083584897580,\t0.242590577450136710,\t0.242542070708899380,\t0.242493563361306480,\t0.242445055407480100,\t0.242396546847541060,\t\n0.242348037681610650,\t0.242299527909809710,\t0.242251017532260420,\t0.242202506549083570,\t0.242153994960400440,\t0.242105482766331900,\t0.242056969967000070,\t0.242008456562525840,\t\n0.241959942553030440,\t0.241911427938634790,\t0.241862912719460980,\t0.241814396895629890,\t0.241765880467262800,\t0.241717363434480580,\t0.241668845797405380,\t0.241620327556158090,\t\n0.241571808710859540,\t0.241523289261631880,\t0.241474769208596010,\t0.241426248551873220,\t0.241377727291584350,\t0.241329205427851630,\t0.241280682960795880,\t0.241232159890538420,\t\n0.241183636217200150,\t0.241135111940903200,\t0.241086587061768500,\t0.241038061579917310,\t0.240989535495470530,\t0.240941008808550320,\t0.240892481519277640,\t0.240843953627773720,\t\n0.240795425134159500,\t0.240746896038557150,\t0.240698366341087540,\t0.240649836041871600,\t0.240601305141031510,\t0.240552773638688130,\t0.240504241534962830,\t0.240455708829976520,\t\n0.240407175523851320,\t0.240358641616708220,\t0.240310107108668510,\t0.240261571999853100,\t0.240213036290384180,\t0.240164499980382670,\t0.240115963069969930,\t0.240067425559266830,\t\n0.240018887448395610,\t0.239970348737477160,\t0.239921809426632850,\t0.239873269515983560,\t0.239824729005651550,\t0.239776187895757720,\t0.239727646186423000,\t0.239679103877769580,\t\n0.239630560969918390,\t0.239582017462990820,\t0.239533473357107760,\t0.239484928652391430,\t0.239436383348962810,\t0.239387837446943220,\t0.239339290946453620,\t0.239290743847616200,\t\n0.239242196150551920,\t0.239193647855382160,\t0.239145098962227850,\t0.239096549471211230,\t0.239047999382453250,\t0.238999448696075260,\t0.238950897412198190,\t0.238902345530944330,\t\n0.238853793052434590,\t0.238805239976790400,\t0.238756686304132660,\t0.238708132034583630,\t0.238659577168264280,\t0.238611021705295550,\t0.238562465645799690,\t0.238513908989897690,\t\n0.238465351737710880,\t0.238416793889360300,\t0.238368235444968160,\t0.238319676404655400,\t0.238271116768543480,\t0.238222556536753340,\t0.238173995709407200,\t0.238125434286626110,\t\n0.238076872268531410,\t0.238028309655244130,\t0.237979746446886460,\t0.237931182643579460,\t0.237882618245444520,\t0.237834053252602570,\t0.237785487665175900,\t0.237736921483285540,\t\n0.237688354707052460,\t0.237639787336598910,\t0.237591219372045890,\t0.237542650813514810,\t0.237494081661126680,\t0.237445511915003790,\t0.237396941575267110,\t0.237348370642038060,\t\n0.237299799115437670,\t0.237251226995588200,\t0.237202654282610700,\t0.237154080976626520,\t0.237105507077756740,\t0.237056932586123590,\t0.237008357501848150,\t0.236959781825051790,\t\n0.236911205555855540,\t0.236862628694381710,\t0.236814051240751330,\t0.236765473195085370,\t0.236716894557506160,\t0.236668315328134730,\t0.236619735507092480,\t0.236571155094500500,\t\n0.236522574090481020,\t0.236473992495155130,\t0.236425410308644250,\t0.236376827531069420,\t0.236328244162552960,\t0.236279660203215890,\t0.236231075653179660,\t0.236182490512565320,\t\n0.236133904781495180,\t0.236085318460090260,\t0.236036731548472050,\t0.235988144046761610,\t0.235939555955081200,\t0.235890967273551940,\t0.235842378002295240,\t0.235793788141432150,\t\n0.235745197691085040,\t0.235696606651374930,\t0.235648015022422890,\t0.235599422804351230,\t0.235550829997281000,\t0.235502236601333710,\t0.235453642616630380,\t0.235405048043293400,\t\n0.235356452881443800,\t0.235307857131203060,\t0.235259260792692220,\t0.235210663866033680,\t0.235162066351348480,\t0.235113468248758120,\t0.235064869558383650,\t0.235016270280347470,\t\n0.234967670414770570,\t0.234919069961774530,\t0.234870468921480360,\t0.234821867294010440,\t0.234773265079485870,\t0.234724662278027710,\t0.234676058889758320,\t0.234627454914798780,\t\n0.234578850353270580,\t0.234530245205294860,\t0.234481639470993960,\t0.234433033150488940,\t0.234384426243901350,\t0.234335818751352260,\t0.234287210672964040,\t0.234238602008857790,\t\n0.234189992759155060,\t0.234141382923976900,\t0.234092772503445730,\t0.234044161497682620,\t0.233995549906809100,\t0.233946937730946300,\t0.233898324970216560,\t0.233849711624741020,\t\n0.233801097694640750,\t0.233752483180038190,\t0.233703868081054420,\t0.233655252397810960,\t0.233606636130428950,\t0.233558019279030800,\t0.233509401843737590,\t0.233460783824670860,\t\n0.233412165221951740,\t0.233363546035702670,\t0.233314926266044690,\t0.233266305913099440,\t0.233217684976987970,\t0.233169063457832700,\t0.233120441355754800,\t0.233071818670875790,\t\n0.233023195403316810,\t0.232974571553200250,\t0.232925947120647290,\t0.232877322105779020,\t0.232828696508717880,\t0.232780070329584980,\t0.232731443568501920,\t0.232682816225589810,\t\n0.232634188300971100,\t0.232585559794766920,\t0.232536930707098830,\t0.232488301038087990,\t0.232439670787856820,\t0.232391039956526490,\t0.232342408544218530,\t0.232293776551054150,\t\n0.232245143977155730,\t0.232196510822644480,\t0.232147877087641950,\t0.232099242772269290,\t0.232050607876648940,\t0.232001972400902090,\t0.231953336345150310,\t0.231904699709514740,\t\n0.231856062494117860,\t0.231807424699080830,\t0.231758786324524790,\t0.231710147370572240,\t0.231661507837344290,\t0.231612867724962620,\t0.231564227033548310,\t0.231515585763223870,\t\n0.231466943914110460,\t0.231418301486329720,\t0.231369658480002770,\t0.231321014895252110,\t0.231272370732198920,\t0.231223725990964770,\t0.231175080671670920,\t0.231126434774439780,\t\n0.231077788299392540,\t0.231029141246650860,\t0.230980493616335880,\t0.230931845408570090,\t0.230883196623474670,\t0.230834547261170860,\t0.230785897321781120,\t0.230737246805426620,\t\n0.230688595712228990,\t0.230639944042309450,\t0.230591291795790490,\t0.230542638972793280,\t0.230493985573439500,\t0.230445331597850300,\t0.230396677046148220,\t0.230348021918454440,\t\n0.230299366214890610,\t0.230250709935577920,\t0.230202053080638900,\t0.230153395650194740,\t0.230104737644367120,\t0.230056079063277190,\t0.230007419907047510,\t0.229958760175799280,\t\n0.229910099869653690,\t0.229861438988733320,\t0.229812777533159320,\t0.229764115503053400,\t0.229715452898536760,\t0.229666789719731900,\t0.229618125966760090,\t0.229569461639742960,\t\n0.229520796738801710,\t0.229472131264058940,\t0.229423465215635840,\t0.229374798593654060,\t0.229326131398234850,\t0.229277463629500770,\t0.229228795287573010,\t0.229180126372573260,\t\n0.229131456884622780,\t0.229082786823844060,\t0.229034116190358410,\t0.228985444984287440,\t0.228936773205752430,\t0.228888100854875930,\t0.228839427931779170,\t0.228790754436583420,\t\n0.228742080369411180,\t0.228693405730383770,\t0.228644730519622860,\t0.228596054737249670,\t0.228547378383386760,\t0.228498701458155430,\t0.228450023961677350,\t0.228401345894073770,\t\n0.228352667255467240,\t0.228303988045979070,\t0.228255308265730930,\t0.228206627914844060,\t0.228157946993441080,\t0.228109265501643200,\t0.228060583439572200,\t0.228011900807349260,\t\n0.227963217605097020,\t0.227914533832936750,\t0.227865849490989700,\t0.227817164579378480,\t0.227768479098224340,\t0.227719793047648970,\t0.227671106427773720,\t0.227622419238721120,\t\n0.227573731480612500,\t0.227525043153569530,\t0.227476354257713510,\t0.227427664793167030,\t0.227378974760051420,\t0.227330284158488350,\t0.227281592988599150,\t0.227232901250506410,\t\n0.227184208944331390,\t0.227135516070195860,\t0.227086822628221110,\t0.227038128618529730,\t0.226989434041243030,\t0.226940738896482310,\t0.226892043184370170,\t0.226843346905027940,\t\n0.226794650058577350,\t0.226745952645139690,\t0.226697254664837560,\t0.226648556117792330,\t0.226599857004125690,\t0.226551157323958970,\t0.226502457077414790,\t0.226453756264614480,\t\n0.226405054885679770,\t0.226356352940732000,\t0.226307650429893760,\t0.226258947353286420,\t0.226210243711031680,\t0.226161539503250940,\t0.226112834730066740,\t0.226064129391600480,\t\n0.226015423487973460,\t0.225966717019308320,\t0.225918009985726390,\t0.225869302387349420,\t0.225820594224298760,\t0.225771885496697050,\t0.225723176204665640,\t0.225674466348326270,\t\n0.225625755927800320,\t0.225577044943210400,\t0.225528333394677870,\t0.225479621282324520,\t0.225430908606271680,\t0.225382195366642000,\t0.225333481563556810,\t0.225284767197137940,\t\n0.225236052267506700,\t0.225187336774785780,\t0.225138620719096520,\t0.225089904100560710,\t0.225041186919299700,\t0.224992469175436140,\t0.224943750869091410,\t0.224895032000386880,\t\n0.224846312569445210,\t0.224797592576387760,\t0.224748872021336310,\t0.224700150904412250,\t0.224651429225738270,\t0.224602706985435690,\t0.224553984183626380,\t0.224505260820431650,\t\n0.224456536895974200,\t0.224407812410375410,\t0.224359087363757060,\t0.224310361756240610,\t0.224261635587948650,\t0.224212908859002640,\t0.224164181569524330,\t0.224115453719635120,\t\n0.224066725309457730,\t0.224017996339113540,\t0.223969266808723890,\t0.223920536718411530,\t0.223871806068297850,\t0.223823074858504610,\t0.223774343089153280,\t0.223725610760366510,\t\n0.223676877872265730,\t0.223628144424972720,\t0.223579410418608960,\t0.223530675853297080,\t0.223481940729158500,\t0.223433205046315090,\t0.223384468804888240,\t0.223335732005000650,\t\n0.223286994646773710,\t0.223238256730329290,\t0.223189518255788810,\t0.223140779223274970,\t0.223092039632909160,\t0.223043299484812830,\t0.222994558779108680,\t0.222945817515918130,\t\n0.222897075695363040,\t0.222848333317564820,\t0.222799590382646210,\t0.222750846890728630,\t0.222702102841933920,\t0.222653358236383550,\t0.222604613074200180,\t0.222555867355505280,\t\n0.222507121080420730,\t0.222458374249067950,\t0.222409626861569650,\t0.222360878918047290,\t0.222312130418622720,\t0.222263381363417420,\t0.222214631752554070,\t0.222165881586154160,\t\n0.222117130864339540,\t0.222068379587231630,\t0.222019627754953240,\t0.221970875367625780,\t0.221922122425370680,\t0.221873368928310720,\t0.221824614876567350,\t0.221775860270262410,\t\n0.221727105109517430,\t0.221678349394455080,\t0.221629593125196890,\t0.221580836301864700,\t0.221532078924579990,\t0.221483320993465520,\t0.221434562508642710,\t0.221385803470233540,\t\n0.221337043878359400,\t0.221288283733143100,\t0.221239523034706090,\t0.221190761783170260,\t0.221141999978657110,\t0.221093237621289380,\t0.221044474711188570,\t0.220995711248476140,\t\n0.220946947233274850,\t0.220898182665706180,\t0.220849417545892070,\t0.220800651873954010,\t0.220751885650014720,\t0.220703118874195720,\t0.220654351546618940,\t0.220605583667405820,\t\n0.220556815236679190,\t0.220508046254560520,\t0.220459276721171740,\t0.220410506636634330,\t0.220361736001071090,\t0.220312964814603520,\t0.220264193077353510,\t0.220215420789442620,\t\n0.220166647950993580,\t0.220117874562127950,\t0.220069100622967170,\t0.220020326133634090,\t0.219971551094250180,\t0.219922775504937410,\t0.219873999365817250,\t0.219825222677012540,\t\n0.219776445438644770,\t0.219727667650835870,\t0.219678889313707380,\t0.219630110427382120,\t0.219581330991981540,\t0.219532551007627670,\t0.219483770474441980,\t0.219434989392547300,\t\n0.219386207762065130,\t0.219337425583117470,\t0.219288642855825780,\t0.219239859580312950,\t0.219191075756700440,\t0.219142291385110270,\t0.219093506465663920,\t0.219044720998484240,\t\n0.218995934983692740,\t0.218947148421411000,\t0.218898361311761800,\t0.218849573654866710,\t0.218800785450847690,\t0.218751996699826260,\t0.218703207401925280,\t0.218654417557266280,\t\n0.218605627165971230,\t0.218556836228161690,\t0.218508044743960460,\t0.218459252713489150,\t0.218410460136869710,\t0.218361667014223690,\t0.218312873345673920,\t0.218264079131341960,\t\n0.218215284371349820,\t0.218166489065819040,\t0.218117693214872450,\t0.218068896818631650,\t0.218020099877218150,\t0.217971302390754850,\t0.217922504359363280,\t0.217873705783165480,\t\n0.217824906662282940,\t0.217776106996838610,\t0.217727306786953980,\t0.217678506032751100,\t0.217629704734351500,\t0.217580902891878090,\t0.217532100505452440,\t0.217483297575196490,\t\n0.217434494101231920,\t0.217385690083681500,\t0.217336885522666890,\t0.217288080418310050,\t0.217239274770732570,\t0.217190468580057330,\t0.217141661846405960,\t0.217092854569899960,\t\n0.217044046750662270,\t0.216995238388814460,\t0.216946429484478560,\t0.216897620037776160,\t0.216848810048830140,\t0.216799999517762080,\t0.216751188444694040,\t0.216702376829747580,\t\n0.216653564673045640,\t0.216604751974709740,\t0.216555938734862010,\t0.216507124953623980,\t0.216458310631118560,\t0.216409495767467370,\t0.216360680362792430,\t0.216311864417215390,\t\n0.216263047930859100,\t0.216214230903845170,\t0.216165413336295270,\t0.216116595228332240,\t0.216067776580077730,\t0.216018957391653780,\t0.215970137663182020,\t0.215921317394785320,\t\n0.215872496586585360,\t0.215823675238704130,\t0.215774853351263280,\t0.215726030924385750,\t0.215677207958193120,\t0.215628384452807490,\t0.215579560408350470,\t0.215530735824944950,\t\n0.215481910702712610,\t0.215433085041775500,\t0.215384258842255230,\t0.215335432104274750,\t0.215286604827955700,\t0.215237777013420150,\t0.215188948660789690,\t0.215140119770187320,\t\n0.215091290341734630,\t0.215042460375553270,\t0.214993629871766230,\t0.214944798830495080,\t0.214895967251861970,\t0.214847135135988490,\t0.214798302482997610,\t0.214749469293010950,\t\n0.214700635566150650,\t0.214651801302538300,\t0.214602966502296900,\t0.214554131165548080,\t0.214505295292413940,\t0.214456458883016090,\t0.214407621937477560,\t0.214358784455919970,\t\n0.214309946438465430,\t0.214261107885235590,\t0.214212268796353380,\t0.214163429171940530,\t0.214114589012118660,\t0.214065748317010750,\t0.214016907086738480,\t0.213968065321423960,\t\n0.213919223021188790,\t0.213870380186156030,\t0.213821536816447330,\t0.213772692912184760,\t0.213723848473490050,\t0.213675003500486150,\t0.213626157993294740,\t0.213577311952037910,\t\n0.213528465376837400,\t0.213479618267816140,\t0.213430770625095830,\t0.213381922448798610,\t0.213333073739046140,\t0.213284224495961410,\t0.213235374719666140,\t0.213186524410281990,\t\n0.213137673567931950,\t0.213088822192737750,\t0.213039970284821490,\t0.212991117844304860,\t0.212942264871310880,\t0.212893411365961240,\t0.212844557328378060,\t0.212795702758683060,\t\n0.212746847656999220,\t0.212697992023448270,\t0.212649135858152370,\t0.212600279161233170,\t0.212551421932813710,\t0.212502564173015690,\t0.212453705881961250,\t0.212404847059772140,\t\n0.212355987706571330,\t0.212307127822480540,\t0.212258267407621940,\t0.212209406462117250,\t0.212160544986089470,\t0.212111682979660320,\t0.212062820442951520,\t0.212013957376086140,\t\n0.211965093779185820,\t0.211916229652372810,\t0.211867364995768750,\t0.211818499809496740,\t0.211769634093678470,\t0.211720767848436130,\t0.211671901073891420,\t0.211623033770167390,\t\n0.211574165937385790,\t0.211525297575668760,\t0.211476428685138080,\t0.211427559265916720,\t0.211378689318126480,\t0.211329818841889530,\t0.211280947837327590,\t0.211232076304563730,\t\n0.211183204243719640,\t0.211134331654917130,\t0.211085458538279230,\t0.211036584893927680,\t0.210987710721984660,\t0.210938836022571930,\t0.210889960795812570,\t0.210841085041828270,\t\n0.210792208760741280,\t0.210743331952673340,\t0.210694454617747500,\t0.210645576756085500,\t0.210596698367809590,\t0.210547819453041460,\t0.210498940011904250,\t0.210450060044519690,\t\n0.210401179551009950,\t0.210352298531496870,\t0.210303416986103440,\t0.210254534914951500,\t0.210205652318162770,\t0.210156769195860320,\t0.210107885548165980,\t0.210059001375201920,\t\n0.210010116677089940,\t0.209961231453953070,\t0.209912345705913130,\t0.209863459433092340,\t0.209814572635612460,\t0.209765685313596570,\t0.209716797467166480,\t0.209667909096444390,\t\n0.209619020201552100,\t0.209570130782612690,\t0.209521240839747960,\t0.209472350373080120,\t0.209423459382730990,\t0.209374567868823610,\t0.209325675831479850,\t0.209276783270821440,\t\n0.209227890186971490,\t0.209178996580051850,\t0.209130102450184710,\t0.209081207797491870,\t0.209032312622096460,\t0.208983416924120260,\t0.208934520703685510,\t0.208885623960914010,\t\n0.208836726695928930,\t0.208787828908852000,\t0.208738930599805500,\t0.208690031768911240,\t0.208641132416292340,\t0.208592232542070600,\t0.208543332146368300,\t0.208494431229307220,\t\n0.208445529791010500,\t0.208396627831599960,\t0.208347725351197830,\t0.208298822349925970,\t0.208249918827907500,\t0.208201014785264200,\t0.208152110222117960,\t0.208103205138591870,\t\n0.208054299534807750,\t0.208005393410887920,\t0.207956486766954140,\t0.207907579603129580,\t0.207858671919536080,\t0.207809763716295890,\t0.207760854993530860,\t0.207711945751364150,\t\n0.207663035989917530,\t0.207614125709313370,\t0.207565214909673420,\t0.207516303591120890,\t0.207467391753777600,\t0.207418479397765840,\t0.207369566523207430,\t0.207320653130225550,\t\n0.207271739218942010,\t0.207222824789478700,\t0.207173909841958770,\t0.207124994376504080,\t0.207076078393236880,\t0.207027161892279070,\t0.206978244873753770,\t0.206929327337782850,\t\n0.206880409284488640,\t0.206831490713992950,\t0.206782571626419000,\t0.206733652021888590,\t0.206684731900524050,\t0.206635811262447260,\t0.206586890107781390,\t0.206537968436648260,\t\n0.206489046249170250,\t0.206440123545469150,\t0.206391200325668180,\t0.206342276589889240,\t0.206293352338254160,\t0.206244427570886120,\t0.206195502287907010,\t0.206146576489439150,\t\n0.206097650175604440,\t0.206048723346526020,\t0.205999796002325790,\t0.205950868143126050,\t0.205901939769048750,\t0.205853010880216990,\t0.205804081476752720,\t0.205755151558778240,\t\n0.205706221126415480,\t0.205657290179787570,\t0.205608358719016450,\t0.205559426744224420,\t0.205510494255533390,\t0.205461561253066580,\t0.205412627736945850,\t0.205363693707293540,\t\n0.205314759164231590,\t0.205265824107883130,\t0.205216888538370140,\t0.205167952455814510,\t0.205119015860339430,\t0.205070078752066790,\t0.205021141131118940,\t0.204972202997617840,\t\n0.204923264351686650,\t0.204874325193447280,\t0.204825385523022120,\t0.204776445340533080,\t0.204727504646103340,\t0.204678563439854830,\t0.204629621721909930,\t0.204580679492390530,\t\n0.204531736751419860,\t0.204482793499119850,\t0.204433849735612880,\t0.204384905461020810,\t0.204335960675466940,\t0.204287015379073180,\t0.204238069571961420,\t0.204189123254254920,\t\n0.204140176426075630,\t0.204091229087545900,\t0.204042281238787650,\t0.203993332879924130,\t0.203944384011077280,\t0.203895434632369480,\t0.203846484743922640,\t0.203797534345860040,\t\n0.203748583438303600,\t0.203699632021375700,\t0.203650680095198290,\t0.203601727659894620,\t0.203552774715586610,\t0.203503821262396690,\t0.203454867300446760,\t0.203405912829860090,\t\n0.203356957850758660,\t0.203308002363264410,\t0.203259046367500560,\t0.203210089863589100,\t0.203161132851652440,\t0.203112175331812470,\t0.203063217304192520,\t0.203014258768914550,\t\n0.202965299726100920,\t0.202916340175873590,\t0.202867380118355840,\t0.202818419553669670,\t0.202769458481937420,\t0.202720496903281090,\t0.202671534817823960,\t0.202622572225688020,\t\n0.202573609126995620,\t0.202524645521868770,\t0.202475681410430740,\t0.202426716792803500,\t0.202377751669109040,\t0.202328786039470660,\t0.202279819904010280,\t0.202230853262850370,\t\n0.202181886116112870,\t0.202132918463921120,\t0.202083950306397030,\t0.202034981643663100,\t0.201986012475841280,\t0.201937042803054860,\t0.201888072625425820,\t0.201839101943076610,\t\n0.201790130756129230,\t0.201741159064706910,\t0.201692186868931730,\t0.201643214168926080,\t0.201594240964811930,\t0.201545267256712650,\t0.201496293044750200,\t0.201447318329047000,\t\n0.201398343109725070,\t0.201349367386907700,\t0.201300391160716930,\t0.201251414431274760,\t0.201202437198704480,\t0.201153459463128100,\t0.201104481224668090,\t0.201055502483446420,\t\n0.201006523239586450,\t0.200957543493210160,\t0.200908563244440010,\t0.200859582493398030,\t0.200810601240207500,\t0.200761619484990490,\t0.200712637227869420,\t0.200663654468966330,\t\n0.200614671208404540,\t0.200565687446306070,\t0.200516703182793380,\t0.200467718417988490,\t0.200418733152014750,\t0.200369747384994160,\t0.200320761117048800,\t0.200271774348301960,\t\n0.200222787078875670,\t0.200173799308892430,\t0.200124811038474240,\t0.200075822267744450,\t0.200026832996825110,\t0.199977843225838700,\t0.199928852954907250,\t0.199879862184154100,\t\n0.199830870913701280,\t0.199781879143671290,\t0.199732886874186170,\t0.199683894105369270,\t0.199634900837342640,\t0.199585907070228750,\t0.199536912804149650,\t0.199487918039228720,\t\n0.199438922775588000,\t0.199389927013349510,\t0.199340930752636650,\t0.199291933993571480,\t0.199242936736276440,\t0.199193938980873650,\t0.199144940727486450,\t0.199095941976236900,\t\n0.199046942727247460,\t0.198997942980640270,\t0.198948942736538630,\t0.198899941995064640,\t0.198850940756340800,\t0.198801939020489180,\t0.198752936787633140,\t0.198703934057894770,\t\n0.198654930831396540,\t0.198605927108260550,\t0.198556922888610210,\t0.198507918172567520,\t0.198458912960255060,\t0.198409907251794890,\t0.198360901047310380,\t0.198311894346923620,\t\n0.198262887150756660,\t0.198213879458932960,\t0.198164871271574530,\t0.198115862588803930,\t0.198066853410743230,\t0.198017843737515850,\t0.197968833569243860,\t0.197919822906049790,\t\n0.197870811748055710,\t0.197821800095385050,\t0.197772787948159890,\t0.197723775306502730,\t0.197674762170535730,\t0.197625748540382260,\t0.197576734416164410,\t0.197527719798004710,\t\n0.197478704686025300,\t0.197429689080349550,\t0.197380672981099570,\t0.197331656388397480,\t0.197282639302366700,\t0.197233621723129300,\t0.197184603650807870,\t0.197135585085524480,\t\n0.197086566027402540,\t0.197037546476564210,\t0.196988526433132030,\t0.196939505897228060,\t0.196890484868975780,\t0.196841463348497310,\t0.196792441335915140,\t0.196743418831351460,\t\n0.196694395834929650,\t0.196645372346771870,\t0.196596348367000660,\t0.196547323895738120,\t0.196498298933107720,\t0.196449273479231580,\t0.196400247534231800,\t0.196351221098231860,\t\n0.196302194171353860,\t0.196253166753720370,\t0.196204138845453540,\t0.196155110446676770,\t0.196106081557512250,\t0.196057052178082500,\t0.196008022308509720,\t0.195958991948917300,\t\n0.195909961099427400,\t0.195860929760162620,\t0.195811897931245040,\t0.195762865612798180,\t0.195713832804944140,\t0.195664799507805520,\t0.195615765721504490,\t0.195566731446164460,\t\n0.195517696681907600,\t0.195468661428856050,\t0.195419625687133310,\t0.195370589456861500,\t0.195321552738163210,\t0.195272515531160600,\t0.195223477835977130,\t0.195174439652734980,\t\n0.195125400981556730,\t0.195076361822564550,\t0.195027322175881900,\t0.194978282041630920,\t0.194929241419934260,\t0.194880200310914050,\t0.194831158714693750,\t0.194782116631395580,\t\n0.194733074061142130,\t0.194684031004055540,\t0.194634987460259310,\t0.194585943429875620,\t0.194536898913027080,\t0.194487853909835830,\t0.194438808420425410,\t0.194389762444917960,\t\n0.194340715983435660,\t0.194291669036102010,\t0.194242621603039180,\t0.194193573684369820,\t0.194144525280216060,\t0.194095476390701430,\t0.194046427015948130,\t0.193997377156078730,\t\n0.193948326811215490,\t0.193899275981481850,\t0.193850224667000000,\t0.193801172867892610,\t0.193752120584281850,\t0.193703067816291240,\t0.193654014564042940,\t0.193604960827659600,\t\n0.193555906607263430,\t0.193506851902977920,\t0.193457796714925300,\t0.193408741043227720,\t0.193359684888008750,\t0.193310628249390580,\t0.193261571127495810,\t0.193212513522446700,\t\n0.193163455434366720,\t0.193114396863378110,\t0.193065337809603530,\t0.193016278273165140,\t0.192967218254186500,\t0.192918157752789810,\t0.192869096769097720,\t0.192820035303232470,\t\n0.192770973355317570,\t0.192721910925475220,\t0.192672848013828110,\t0.192623784620498420,\t0.192574720745609720,\t0.192525656389284230,\t0.192476591551644150,\t0.192427526232813030,\t\n0.192378460432913100,\t0.192329394152066980,\t0.192280327390396990,\t0.192231260148026580,\t0.192182192425078060,\t0.192133124221674030,\t0.192084055537936750,\t0.192034986373989770,\t\n0.191985916729955350,\t0.191936846605956110,\t0.191887776002114320,\t0.191838704918553540,\t0.191789633355396010,\t0.191740561312764350,\t0.191691488790780880,\t0.191642415789569140,\t\n0.191593342309251350,\t0.191544268349950170,\t0.191495193911787930,\t0.191446118994888110,\t0.191397043599373010,\t0.191347967725364860,\t0.191298891372987220,\t0.191249814542362370,\t\n0.191200737233612970,\t0.191151659446861300,\t0.191102581182230890,\t0.191053502439844060,\t0.191004423219823440,\t0.190955343522291380,\t0.190906263347371350,\t0.190857182695185670,\t\n0.190808101565857040,\t0.190759019959507730,\t0.190709937876261280,\t0.190660855316240020,\t0.190611772279566600,\t0.190562688766363310,\t0.190513604776753750,\t0.190464520310860170,\t\n0.190415435368804840,\t0.190366349950711390,\t0.190317264056702020,\t0.190268177686899520,\t0.190219090841426130,\t0.190170003520405470,\t0.190120915723959780,\t0.190071827452211820,\t\n0.190022738705283830,\t0.189973649483299450,\t0.189924559786380930,\t0.189875469614651020,\t0.189826378968231980,\t0.189777287847247460,\t0.189728196251819720,\t0.189679104182071460,\t\n0.189630011638125040,\t0.189580918620103980,\t0.189531825128130660,\t0.189482731162327330,\t0.189433636722817630,\t0.189384541809723810,\t0.189335446423168630,\t0.189286350563274420,\t\n0.189237254230164770,\t0.189188157423961970,\t0.189139060144788790,\t0.189089962392767510,\t0.189040864168021770,\t0.188991765470673870,\t0.188942666300846550,\t0.188893566658662140,\t\n0.188844466544244220,\t0.188795365957715180,\t0.188746264899197690,\t0.188697163368814120,\t0.188648061366688050,\t0.188598958892941840,\t0.188549855947697830,\t0.188500752531079590,\t\n0.188451648643209460,\t0.188402544284210220,\t0.188353439454204190,\t0.188304334153314960,\t0.188255228381664920,\t0.188206122139376820,\t0.188157015426572980,\t0.188107908243377030,\t\n0.188058800589911280,\t0.188009692466298560,\t0.187960583872661180,\t0.187911474809122760,\t0.187862365275805660,\t0.187813255272832660,\t0.187764144800326050,\t0.187715033858409540,\t\n0.187665922447205450,\t0.187616810566836540,\t0.187567698217425170,\t0.187518585399094990,\t0.187469472111968350,\t0.187420358356167600,\t0.187371244131816380,\t0.187322129439037060,\t\n0.187273014277952400,\t0.187223898648684770,\t0.187174782551357860,\t0.187125665986093950,\t0.187076548953015900,\t0.187027431452246040,\t0.186978313483908030,\t0.186929195048124250,\t\n0.186880076145017480,\t0.186830956774710070,\t0.186781836937325720,\t0.186732716632986770,\t0.186683595861816020,\t0.186634474623935870,\t0.186585352919469930,\t0.186536230748540640,\t\n0.186487108111270340,\t0.186437985007782690,\t0.186388861438200080,\t0.186339737402645310,\t0.186290612901240770,\t0.186241487934110130,\t0.186192362501375770,\t0.186143236603160510,\t\n0.186094110239586720,\t0.186044983410778080,\t0.185995856116856980,\t0.185946728357946260,\t0.185897600134168280,\t0.185848471445646730,\t0.185799342292504000,\t0.185750212674862910,\t\n0.185701082592845870,\t0.185651952046576530,\t0.185602821036177340,\t0.185553689561770650,\t0.185504557623480170,\t0.185455425221428300,\t0.185406292355737860,\t0.185357159026531240,\t\n0.185308025233932190,\t0.185258890978063060,\t0.185209756259046700,\t0.185160621077005540,\t0.185111485432063240,\t0.185062349324342210,\t0.185013212753965340,\t0.184964075721054970,\t\n0.184914938225734880,\t0.184865800268127430,\t0.184816661848355460,\t0.184767522966541420,\t0.184718383622809010,\t0.184669243817280640,\t0.184620103550079160,\t0.184570962821326980,\t\n0.184521821631147830,\t0.184472679979664130,\t0.184423537866998300,\t0.184374395293274040,\t0.184325252258613820,\t0.184276108763140460,\t0.184226964806976370,\t0.184177820390245330,\t\n0.184128675513069750,\t0.184079530175572440,\t0.184030384377875890,\t0.183981238120103830,\t0.183932091402378650,\t0.183882944224823260,\t0.183833796587560050,\t0.183784648490712800,\t\n0.183735499934403940,\t0.183686350918756320,\t0.183637201443892390,\t0.183588051509935870,\t0.183538901117009270,\t0.183489750265234920,\t0.183440598954736690,\t0.183391447185636940,\t\n0.183342294958058540,\t0.183293142272124010,\t0.183243989127957030,\t0.183194835525680110,\t0.183145681465416070,\t0.183096526947287400,\t0.183047371971417850,\t0.182998216537929890,\t\n0.182949060646946350,\t0.182899904298589740,\t0.182850747492983830,\t0.182801590230251030,\t0.182752432510514230,\t0.182703274333895940,\t0.182654115700519900,\t0.182604956610508570,\t\n0.182555797063984420,\t0.182506637061071200,\t0.182457476601891410,\t0.182408315686567900,\t0.182359154315223180,\t0.182309992487980990,\t0.182260830204963840,\t0.182211667466294610,\t\n0.182162504272095770,\t0.182113340622491100,\t0.182064176517603090,\t0.182015011957554650,\t0.181965846942468230,\t0.181916681472467620,\t0.181867515547675330,\t0.181818349168214240,\t\n0.181769182334206830,\t0.181720015045776890,\t0.181670847303046950,\t0.181621679106139440,\t0.181572510455178170,\t0.181523341350285610,\t0.181474171791584700,\t0.181425001779197930,\t\n0.181375831313249110,\t0.181326660393860690,\t0.181277489021155620,\t0.181228317195256390,\t0.181179144916286810,\t0.181129972184369380,\t0.181080798999627010,\t0.181031625362182170,\t\n0.180982451272158760,\t0.180933276729679180,\t0.180884101734866440,\t0.180834926287842980,\t0.180785750388732650,\t0.180736574037657970,\t0.180687397234741840,\t0.180638219980106760,\t\n0.180589042273876590,\t0.180539864116173790,\t0.180490685507120910,\t0.180441506446841760,\t0.180392326935458840,\t0.180343146973095090,\t0.180293966559873040,\t0.180244785695916540,\t\n0.180195604381348050,\t0.180146422616290550,\t0.180097240400866550,\t0.180048057735199880,\t0.179998874619413080,\t0.179949691053629100,\t0.179900507037970450,\t0.179851322572560950,\t\n0.179802137657523180,\t0.179752952292980050,\t0.179703766479054090,\t0.179654580215869160,\t0.179605393503547790,\t0.179556206342212480,\t0.179507018731987100,\t0.179457830672994170,\t\n0.179408642165356680,\t0.179359453209197130,\t0.179310263804639380,\t0.179261073951805990,\t0.179211883650819890,\t0.179162692901803670,\t0.179113501704881130,\t0.179064310060174870,\t\n0.179015117967807810,\t0.178965925427902520,\t0.178916732440582840,\t0.178867539005971350,\t0.178818345124191010,\t0.178769150795364370,\t0.178719956019615290,\t0.178670760797066310,\t\n0.178621565127840000,\t0.178572369012060220,\t0.178523172449849500,\t0.178473975441330870,\t0.178424777986626840,\t0.178375580085861320,\t0.178326381739156850,\t0.178277182946636410,\t\n0.178227983708422600,\t0.178178784024639270,\t0.178129583895408950,\t0.178080383320854680,\t0.178031182301099020,\t0.177981980836265850,\t0.177932778926477710,\t0.177883576571857630,\t\n0.177834373772528200,\t0.177785170528613230,\t0.177735966840235350,\t0.177686762707517570,\t0.177637558130582430,\t0.177588353109553810,\t0.177539147644554330,\t0.177489941735706560,\t\n0.177440735383134350,\t0.177391528586960310,\t0.177342321347307460,\t0.177293113664298340,\t0.177243905538056880,\t0.177194696968705680,\t0.177145487956367730,\t0.177096278501165600,\t\n0.177047068603223220,\t0.176997858262663180,\t0.176948647479608510,\t0.176899436254181750,\t0.176850224586506840,\t0.176801012476706400,\t0.176751799924903390,\t0.176702586931220460,\t\n0.176653373495781500,\t0.176604159618709120,\t0.176554945300125890,\t0.176505730540155730,\t0.176456515338921260,\t0.176407299696545480,\t0.176358083613151030,\t0.176308867088861810,\t\n0.176259650123800400,\t0.176210432718089890,\t0.176161214871852850,\t0.176111996585213200,\t0.176062777858293580,\t0.176013558691217010,\t0.175964339084106110,\t0.175915119037084790,\t\n0.175865898550275650,\t0.175816677623801790,\t0.175767456257785810,\t0.175718234452351600,\t0.175669012207621820,\t0.175619789523719070,\t0.175570566400767290,\t0.175521342838889090,\t\n0.175472118838207510,\t0.175422894398845230,\t0.175373669520926150,\t0.175324444204572880,\t0.175275218449908480,\t0.175225992257055620,\t0.175176765626138240,\t0.175127538557278920,\t\n0.175078311050600760,\t0.175029083106226360,\t0.174979854724279710,\t0.174930625904883420,\t0.174881396648160580,\t0.174832166954233810,\t0.174782936823227040,\t0.174733706255262940,\t\n0.174684475250464130,\t0.174635243808954590,\t0.174586011930856900,\t0.174536779616294210,\t0.174487546865389140,\t0.174438313678265620,\t0.174389080055046330,\t0.174339845995854340,\t\n0.174290611500812290,\t0.174241376570044150,\t0.174192141203672570,\t0.174142905401820650,\t0.174093669164611030,\t0.174044432492167640,\t0.173995195384613190,\t0.173945957842070760,\t\n0.173896719864662990,\t0.173847481452513860,\t0.173798242605746030,\t0.173749003324482560,\t0.173699763608846200,\t0.173650523458960840,\t0.173601282874949160,\t0.173552041856933850,\t\n0.173502800405038880,\t0.173453558519386900,\t0.173404316200101020,\t0.173355073447303910,\t0.173305830261119560,\t0.173256586641670620,\t0.173207342589080240,\t0.173158098103471050,\t\n0.173108853184967050,\t0.173059607833690930,\t0.173010362049765780,\t0.172961115833314310,\t0.172911869184460470,\t0.172862622103326950,\t0.172813374590036870,\t0.172764126644712940,\t\n0.172714878267479110,\t0.172665629458458090,\t0.172616380217772560,\t0.172567130545546510,\t0.172517880441902670,\t0.172468629906964100,\t0.172419378940853520,\t0.172370127543694910,\t\n0.172320875715611000,\t0.172271623456724890,\t0.172222370767159320,\t0.172173117647038220,\t0.172123864096484340,\t0.172074610115620810,\t0.172025355704570310,\t0.171976100863456850,\t\n0.171926845592403150,\t0.171877589891532350,\t0.171828333760967090,\t0.171779077200831460,\t0.171729820211248160,\t0.171680562792339840,\t0.171631304944230570,\t0.171582046667043020,\t\n0.171532787960900380,\t0.171483528825925300,\t0.171434269262241870,\t0.171385009269972740,\t0.171335748849241100,\t0.171286488000169630,\t0.171237226722882410,\t0.171187965017502110,\t\n0.171138702884151890,\t0.171089440322954480,\t0.171040177334033900,\t0.170990913917512890,\t0.170941650073514580,\t0.170892385802161710,\t0.170843121103578330,\t0.170793855977887130,\t\n0.170744590425211310,\t0.170695324445673560,\t0.170646058039397950,\t0.170596791206507170,\t0.170547523947124000,\t0.170498256261372440,\t0.170448988149375230,\t0.170399719611255580,\t\n0.170350450647136160,\t0.170301181257141080,\t0.170251911441393040,\t0.170202641200015210,\t0.170153370533130370,\t0.170104099440862520,\t0.170054827923334400,\t0.170005555980669240,\t\n0.169956283612989760,\t0.169907010820419980,\t0.169857737603082680,\t0.169808463961101050,\t0.169759189894597820,\t0.169709915403697040,\t0.169660640488521470,\t0.169611365149193870,\t\n0.169562089385838300,\t0.169512813198577500,\t0.169463536587534690,\t0.169414259552832570,\t0.169364982094595250,\t0.169315704212945480,\t0.169266425908006420,\t0.169217147179900880,\t\n0.169167868028752920,\t0.169118588454685280,\t0.169069308457821170,\t0.169020028038283340,\t0.168970747196195900,\t0.168921465931681590,\t0.168872184244863580,\t0.168822902135864710,\t\n0.168773619604809020,\t0.168724336651819270,\t0.168675053277018230,\t0.168625769480530010,\t0.168576485262477370,\t0.168527200622983510,\t0.168477915562171200,\t0.168428630080164570,\t\n0.168379344177086330,\t0.168330057853059740,\t0.168280771108207580,\t0.168231483942653910,\t0.168182196356521540,\t0.168132908349933690,\t0.168083619923013130,\t0.168034331075883950,\t\n0.167985041808668940,\t0.167935752121491310,\t0.167886462014473880,\t0.167837171487740740,\t0.167787880541414660,\t0.167738589175618460,\t0.167689297390476220,\t0.167640005186110720,\t\n0.167590712562645210,\t0.167541419520202490,\t0.167492126058906650,\t0.167442832178880510,\t0.167393537880247270,\t0.167344243163129760,\t0.167294948027652070,\t0.167245652473937020,\t\n0.167196356502107850,\t0.167147060112287330,\t0.167097763304599610,\t0.167048466079167460,\t0.166999168436114150,\t0.166949870375562500,\t0.166900571897636600,\t0.166851273002459280,\t\n0.166801973690153760,\t0.166752673960842900,\t0.166703373814650780,\t0.166654073251700200,\t0.166604772272114010,\t0.166555470876016350,\t0.166506169063530000,\t0.166456866834778230,\t\n0.166407564189883840,\t0.166358261128970980,\t0.166308957652162470,\t0.166259653759581570,\t0.166210349451351100,\t0.166161044727595210,\t0.166111739588436700,\t0.166062434033998810,\t\n0.166013128064404440,\t0.165963821679777660,\t0.165914514880241340,\t0.165865207665918720,\t0.165815900036932640,\t0.165766591993407260,\t0.165717283535465390,\t0.165667974663229880,\t\n0.165618665376824880,\t0.165569355676373210,\t0.165520045561998150,\t0.165470735033822540,\t0.165421424091970530,\t0.165372112736564960,\t0.165322800967729110,\t0.165273488785585810,\t\n0.165224176190259230,\t0.165174863181872220,\t0.165125549760548020,\t0.165076235926409550,\t0.165026921679580910,\t0.164977607020184960,\t0.164928291948344990,\t0.164878976464183870,\t\n0.164829660567825750,\t0.164780344259393450,\t0.164731027539009870,\t0.164681710406799160,\t0.164632392862884170,\t0.164583074907388190,\t0.164533756540434090,\t0.164484437762146050,\t\n0.164435118572646920,\t0.164385798972059960,\t0.164336478960508100,\t0.164287158538115460,\t0.164237837705004910,\t0.164188516461299810,\t0.164139194807122940,\t0.164089872742598540,\t\n0.164040550267849440,\t0.163991227382998980,\t0.163941904088170030,\t0.163892580383486720,\t0.163843256269072010,\t0.163793931745049110,\t0.163744606811540960,\t0.163695281468671740,\t\n0.163645955716564320,\t0.163596629555341540,\t0.163547302985127650,\t0.163497976006045510,\t0.163448648618218420,\t0.163399320821769280,\t0.163349992616822260,\t0.163300664003500270,\t\n0.163251334981926590,\t0.163202005552224170,\t0.163152675714517160,\t0.163103345468928460,\t0.163054014815581410,\t0.163004683754598870,\t0.162955352286105050,\t0.162906020410222870,\t\n0.162856688127075660,\t0.162807355436786260,\t0.162758022339478890,\t0.162708688835276500,\t0.162659354924301950,\t0.162610020606679420,\t0.162560685882531860,\t0.162511350751982590,\t\n0.162462015215154490,\t0.162412679272171790,\t0.162363342923157410,\t0.162314006168234660,\t0.162264669007526450,\t0.162215331441157020,\t0.162165993469249260,\t0.162116655091926520,\t\n0.162067316309311700,\t0.162017977121529020,\t0.161968637528701390,\t0.161919297530952190,\t0.161869957128404300,\t0.161820616321181940,\t0.161771275109408060,\t0.161721933493205540,\t\n0.161672591472698630,\t0.161623249048010230,\t0.161573906219263740,\t0.161524562986582020,\t0.161475219350089320,\t0.161425875309908600,\t0.161376530866163190,\t0.161327186018976000,\t\n0.161277840768471260,\t0.161228495114771970,\t0.161179149058001400,\t0.161129802598282550,\t0.161080455735739620,\t0.161031108470495540,\t0.160981760802673710,\t0.160932412732397030,\t\n0.160883064259789740,\t0.160833715384974820,\t0.160784366108075590,\t0.160735016429215010,\t0.160685666348517330,\t0.160636315866105470,\t0.160586964982102400,\t0.160537613696632360,\t\n0.160488262009818280,\t0.160438909921783530,\t0.160389557432651100,\t0.160340204542545190,\t0.160290851251588760,\t0.160241497559905220,\t0.160192143467617480,\t0.160142788974849850,\t\n0.160093434081725220,\t0.160044078788367020,\t0.159994723094898180,\t0.159945367001442960,\t0.159896010508124350,\t0.159846653615065700,\t0.159797296322389950,\t0.159747938630221440,\t\n0.159698580538683050,\t0.159649222047897800,\t0.159599863157989910,\t0.159550503869082370,\t0.159501144181298570,\t0.159451784094761490,\t0.159402423609595360,\t0.159353062725923200,\t\n0.159303701443868350,\t0.159254339763553830,\t0.159204977685103890,\t0.159155615208641520,\t0.159106252334290100,\t0.159056889062172610,\t0.159007525392413330,\t0.158958161325135240,\t\n0.158908796860461750,\t0.158859431998515820,\t0.158810066739421770,\t0.158760701083302540,\t0.158711335030281120,\t0.158661968580481820,\t0.158612601734027580,\t0.158563234491041820,\t\n0.158513866851647560,\t0.158464498815969050,\t0.158415130384129330,\t0.158365761556251760,\t0.158316392332459340,\t0.158267022712876380,\t0.158217652697625860,\t0.158168282286831220,\t\n0.158118911480615440,\t0.158069540279102800,\t0.158020168682416330,\t0.157970796690679430,\t0.157921424304015120,\t0.157872051522547660,\t0.157822678346400070,\t0.157773304775695370,\t\n0.157723930810557830,\t0.157674556451110480,\t0.157625181697476720,\t0.157575806549779570,\t0.157526431008143340,\t0.157477055072691020,\t0.157427678743546100,\t0.157378302020831500,\t\n0.157328924904671620,\t0.157279547395189400,\t0.157230169492508340,\t0.157180791196751410,\t0.157131412508042940,\t0.157082033426505920,\t0.157032653952263850,\t0.156983274085439660,\t\n0.156933893826157770,\t0.156884513174541110,\t0.156835132130713180,\t0.156785750694797000,\t0.156736368866916860,\t0.156686986647195800,\t0.156637604035756860,\t0.156588221032724320,\t\n0.156538837638221240,\t0.156489453852371040,\t0.156440069675296810,\t0.156390685107122810,\t0.156341300147972100,\t0.156291914797968170,\t0.156242529057233990,\t0.156193142925893920,\t\n0.156143756404070990,\t0.156094369491888710,\t0.156044982189470020,\t0.155995594496939340,\t0.155946206414419670,\t0.155896817942034470,\t0.155847429079906810,\t0.155798039828160980,\t\n0.155748650186920080,\t0.155699260156307110,\t0.155649869736446430,\t0.155600478927461090,\t0.155551087729474540,\t0.155501696142609810,\t0.155452304166991300,\t0.155402911802742040,\t\n0.155353519049985480,\t0.155304125908844680,\t0.155254732379444040,\t0.155205338461906540,\t0.155155944156355700,\t0.155106549462914550,\t0.155057154381707470,\t0.155007758912857510,\t\n0.154958363056488160,\t0.154908966812722450,\t0.154859570181684750,\t0.154810173163498150,\t0.154760775758285670,\t0.154711377966171680,\t0.154661979787279270,\t0.154612581221731880,\t\n0.154563182269652630,\t0.154513782931165830,\t0.154464383206394610,\t0.154414983095462390,\t0.154365582598492310,\t0.154316181715608680,\t0.154266780446934620,\t0.154217378792593620,\t\n0.154167976752708710,\t0.154118574327404310,\t0.154069171516803470,\t0.154019768321029680,\t0.153970364740206060,\t0.153920960774456940,\t0.153871556423905430,\t0.153822151688675050,\t\n0.153772746568888840,\t0.153723341064671200,\t0.153673935176145190,\t0.153624528903433920,\t0.153575122246661780,\t0.153525715205951820,\t0.153476307781427570,\t0.153426899973212100,\t\n0.153377491781429840,\t0.153328083206203840,\t0.153278674247657650,\t0.153229264905914320,\t0.153179855181098250,\t0.153130445073332570,\t0.153081034582740750,\t0.153031623709445920,\t\n0.152982212453572490,\t0.152932800815243490,\t0.152883388794582520,\t0.152833976391712620,\t0.152784563606758240,\t0.152735150439842430,\t0.152685736891088300,\t0.152636322960620300,\t\n0.152586908648561480,\t0.152537493955035350,\t0.152488078880165080,\t0.152438663424075050,\t0.152389247586888380,\t0.152339831368728560,\t0.152290414769718720,\t0.152240997789983320,\t\n0.152191580429645400,\t0.152142162688828520,\t0.152092744567655810,\t0.152043326066251680,\t0.151993907184739210,\t0.151944487923242000,\t0.151895068281883120,\t0.151845648260787000,\t\n0.151796227860076770,\t0.151746807079875530,\t0.151697385920307710,\t0.151647964381496410,\t0.151598542463565220,\t0.151549120166637240,\t0.151499697490836890,\t0.151450274436287280,\t\n0.151400851003112010,\t0.151351427191434160,\t0.151302003001378190,\t0.151252578433067190,\t0.151203153486624780,\t0.151153728162174010,\t0.151104302459839380,\t0.151054876379743990,\t\n0.151005449922011430,\t0.150956023086764780,\t0.150906595874128520,\t0.150857168284225770,\t0.150807740317179640,\t0.150758311973114620,\t0.150708883252153810,\t0.150659454154420810,\t\n0.150610024680038730,\t0.150560594829132010,\t0.150511164601823820,\t0.150461733998237700,\t0.150412303018496840,\t0.150362871662725630,\t0.150313439931047260,\t0.150264007823585260,\t\n0.150214575340462840,\t0.150165142481804400,\t0.150115709247733100,\t0.150066275638372550,\t0.150016841653845850,\t0.149967407294277490,\t0.149917972559790610,\t0.149868537450508820,\t\n0.149819101966555210,\t0.149769666108054310,\t0.149720229875129230,\t0.149670793267903170,\t0.149621356286500530,\t0.149571918931044520,\t0.149522481201658700,\t0.149473043098466240,\t\n0.149423604621591600,\t0.149374165771157970,\t0.149324726547288900,\t0.149275286950107610,\t0.149225846979738510,\t0.149176406636304800,\t0.149126965919930080,\t0.149077524830737520,\t\n0.149028083368851570,\t0.148978641534395410,\t0.148929199327492660,\t0.148879756748266450,\t0.148830313796841310,\t0.148780870473340380,\t0.148731426777886810,\t0.148681982710605150,\t\n0.148632538271618510,\t0.148583093461050530,\t0.148533648279024380,\t0.148484202725664540,\t0.148434756801094190,\t0.148385310505436960,\t0.148335863838816030,\t0.148286416801355850,\t\n0.148236969393179650,\t0.148187521614411010,\t0.148138073465173130,\t0.148088624945590520,\t0.148039176055786340,\t0.147989726795884210,\t0.147940277166007330,\t0.147890827166280190,\t\n0.147841376796825990,\t0.147791926057767920,\t0.147742474949230460,\t0.147693023471336810,\t0.147643571624210600,\t0.147594119407975040,\t0.147544666822754610,\t0.147495213868672510,\t\n0.147445760545852370,\t0.147396306854417400,\t0.147346852794492110,\t0.147297398366199680,\t0.147247943569663750,\t0.147198488405007520,\t0.147149032872355510,\t0.147099576971830900,\t\n0.147050120703557390,\t0.147000664067658100,\t0.146951207064257630,\t0.146901749693479110,\t0.146852291955446220,\t0.146802833850282170,\t0.146753375378111450,\t0.146703916539057320,\t\n0.146654457333242950,\t0.146604997760792890,\t0.146555537821830310,\t0.146506077516478900,\t0.146456616844861860,\t0.146407155807103700,\t0.146357694403327660,\t0.146308232633657390,\t\n0.146258770498216090,\t0.146209307997128310,\t0.146159845130517270,\t0.146110381898506610,\t0.146060918301219530,\t0.146011454338780630,\t0.145961990011313080,\t0.145912525318940560,\t\n0.145863060261786280,\t0.145813594839974770,\t0.145764129053629320,\t0.145714662902873080,\t0.145665196387830630,\t0.145615729508625170,\t0.145566262265380410,\t0.145516794658219540,\t\n0.145467326687267110,\t0.145417858352646400,\t0.145368389654481010,\t0.145318920592894220,\t0.145269451168010570,\t0.145219981379953320,\t0.145170511228846080,\t0.145121040714812130,\t\n0.145071569837976010,\t0.145022098598460990,\t0.144972626996390690,\t0.144923155031888410,\t0.144873682705078670,\t0.144824210016084730,\t0.144774736965029820,\t0.144725263552038520,\t\n0.144675789777234030,\t0.144626315640740110,\t0.144576841142679910,\t0.144527366283178080,\t0.144477891062357840,\t0.144428415480342850,\t0.144378939537256390,\t0.144329463233223040,\t\n0.144279986568365990,\t0.144230509542809030,\t0.144181032156675300,\t0.144131554410089460,\t0.144082076303174740,\t0.144032597836054820,\t0.143983119008852970,\t0.143933639821693740,\t\n0.143884160274700440,\t0.143834680367996260,\t0.143785200101705870,\t0.143735719475952460,\t0.143686238490859740,\t0.143636757146551000,\t0.143587275443150780,\t0.143537793380782400,\t\n0.143488310959569510,\t0.143438828179635440,\t0.143389345041104700,\t0.143339861544100610,\t0.143290377688746890,\t0.143240893475166750,\t0.143191408903484830,\t0.143141923973824410,\t\n0.143092438686309160,\t0.143042953041062380,\t0.142993467038208640,\t0.142943980677871260,\t0.142894493960173900,\t0.142845006885239880,\t0.142795519453193800,\t0.142746031664158890,\t\n0.142696543518258470,\t0.142647055015617140,\t0.142597566156358160,\t0.142548076940605280,\t0.142498587368481760,\t0.142449097440112220,\t0.142399607155619920,\t0.142350116515128610,\t\n0.142300625518761580,\t0.142251134166643390,\t0.142201642458897410,\t0.142152150395647300,\t0.142102657977016380,\t0.142053165203129240,\t0.142003672074109220,\t0.141954178590080000,\t\n0.141904684751164880,\t0.141855190557488520,\t0.141805696009174170,\t0.141756201106345130,\t0.141706705849126040,\t0.141657210237640160,\t0.141607714272011270,\t0.141558217952362670,\t\n0.141508721278818940,\t0.141459224251503420,\t0.141409726870539850,\t0.141360229136051510,\t0.141310731048163050,\t0.141261232606997740,\t0.141211733812679370,\t0.141162234665331200,\t\n0.141112735165077910,\t0.141063235312042760,\t0.141013735106349540,\t0.140964234548121540,\t0.140914733637483390,\t0.140865232374558390,\t0.140815730759469900,\t0.140766228792342520,\t\n0.140716726473299550,\t0.140667223802464770,\t0.140617720779961490,\t0.140568217405914350,\t0.140518713680446660,\t0.140469209603682200,\t0.140419705175744260,\t0.140370200396757490,\t\n0.140320695266845240,\t0.140271189786131230,\t0.140221683954738830,\t0.140172177772792640,\t0.140122671240416020,\t0.140073164357732730,\t0.140023657124866090,\t0.139974149541940730,\t\n0.139924641609080000,\t0.139875133326407660,\t0.139825624694047050,\t0.139776115712122840,\t0.139726606380758320,\t0.139677096700076830,\t0.139627586670203060,\t0.139578076291260320,\t\n0.139528565563372400,\t0.139479054486662590,\t0.139429543061255630,\t0.139380031287274770,\t0.139330519164843870,\t0.139281006694086220,\t0.139231493875126480,\t0.139181980708088020,\t\n0.139132467193094580,\t0.139082953330269570,\t0.139033439119737590,\t0.138983924561622040,\t0.138934409656046640,\t0.138884894403134810,\t0.138835378803011170,\t0.138785862855799080,\t\n0.138736346561621900,\t0.138686829920604300,\t0.138637312932869600,\t0.138587795598541650,\t0.138538277917743760,\t0.138488759890600580,\t0.138439241517235550,\t0.138389722797772400,\t\n0.138340203732334490,\t0.138290684321046520,\t0.138241164564031850,\t0.138191644461414240,\t0.138142124013317100,\t0.138092603219865110,\t0.138043082081181570,\t0.137993560597390350,\t\n0.137944038768614770,\t0.137894516594979560,\t0.137844994076608050,\t0.137795471213623590,\t0.137745948006150920,\t0.137696424454313380,\t0.137646900558234780,\t0.137597376318038480,\t\n0.137547851733849170,\t0.137498326805790240,\t0.137448801533985500,\t0.137399275918558300,\t0.137349749959633370,\t0.137300223657334050,\t0.137250697011784160,\t0.137201170023107110,\t\n0.137151642691427570,\t0.137102115016868920,\t0.137052586999554970,\t0.137003058639609130,\t0.136953529937156090,\t0.136904000892319220,\t0.136854471505221900,\t0.136804941775988840,\t\n0.136755411704743420,\t0.136705881291609490,\t0.136656350536710410,\t0.136606819440170890,\t0.136557288002114310,\t0.136507756222664530,\t0.136458224101944910,\t0.136408691640080180,\t\n0.136359158837193710,\t0.136309625693409350,\t0.136260092208850490,\t0.136210558383641820,\t0.136161024217906770,\t0.136111489711769150,\t0.136061954865352360,\t0.136012419678781140,\t\n0.135962884152178860,\t0.135913348285669390,\t0.135863812079376090,\t0.135814275533423710,\t0.135764738647935620,\t0.135715201423035250,\t0.135665663858847350,\t0.135616125955495240,\t\n0.135566587713102840,\t0.135517049131793550,\t0.135467510211692040,\t0.135417970952921800,\t0.135368431355606580,\t0.135318891419869890,\t0.135269351145836380,\t0.135219810533629500,\t\n0.135170269583373080,\t0.135120728295190560,\t0.135071186669206670,\t0.135021644705544810,\t0.134972102404328830,\t0.134922559765682150,\t0.134873016789729520,\t0.134823473476594350,\t\n0.134773929826400050,\t0.134724385839271350,\t0.134674841515331710,\t0.134625296854704950,\t0.134575751857514530,\t0.134526206523885140,\t0.134476660853940250,\t0.134427114847803730,\t\n0.134377568505598950,\t0.134328021827450710,\t0.134278474813482400,\t0.134228927463817900,\t0.134179379778580660,\t0.134129831757895390,\t0.134080283401885550,\t0.134030734710675000,\t\n0.133981185684387190,\t0.133931636323146840,\t0.133882086627077400,\t0.133832536596302320,\t0.133782986230946310,\t0.133733435531132840,\t0.133683884496985790,\t0.133634333128628600,\t\n0.133584781426185990,\t0.133535229389781460,\t0.133485677019538840,\t0.133436124315581580,\t0.133386571278034440,\t0.133337017907020900,\t0.133287464202664800,\t0.133237910165089600,\t\n0.133188355794420070,\t0.133138801090779630,\t0.133089246054292200,\t0.133039690685081230,\t0.132990134983271470,\t0.132940578948986370,\t0.132891022582349800,\t0.132841465883485250,\t\n0.132791908852517490,\t0.132742351489569950,\t0.132692793794766090,\t0.132643235768230670,\t0.132593677410087180,\t0.132544118720459490,\t0.132494559699471050,\t0.132445000347246660,\t\n0.132395440663909790,\t0.132345880649584300,\t0.132296320304393670,\t0.132246759628462660,\t0.132197198621914790,\t0.132147637284873890,\t0.132098075617463480,\t0.132048513619808290,\t\n0.131998951292031850,\t0.131949388634258010,\t0.131899825646610260,\t0.131850262329213400,\t0.131800698682190880,\t0.131751134705666180,\t0.131701570399764070,\t0.131652005764608030,\t\n0.131602440800321990,\t0.131552875507029400,\t0.131503309884855060,\t0.131453743933922450,\t0.131404177654355470,\t0.131354611046277630,\t0.131305044109813700,\t0.131255476845087120,\t\n0.131205909252221890,\t0.131156341331341440,\t0.131106773082570540,\t0.131057204506032750,\t0.131007635601851940,\t0.130958066370151590,\t0.130908496811056510,\t0.130858926924690200,\t\n0.130809356711176130,\t0.130759786170639130,\t0.130710215303202620,\t0.130660644108990610,\t0.130611072588126540,\t0.130561500740735220,\t0.130511928566940160,\t0.130462356066865260,\t\n0.130412783240634040,\t0.130363210088371290,\t0.130313636610200540,\t0.130264062806245700,\t0.130214488676630240,\t0.130164914221478990,\t0.130115339440915500,\t0.130065764335063620,\t\n0.130016188904046900,\t0.129966613147990160,\t0.129917037067016880,\t0.129867460661250540,\t0.129817883930816030,\t0.129768306875836790,\t0.129718729496436790,\t0.129669151792739520,\t\n0.129619573764869820,\t0.129569995412951170,\t0.129520416737107540,\t0.129470837737462430,\t0.129421258414140680,\t0.129371678767265770,\t0.129322098796961660,\t0.129272518503351860,\t\n0.129222937886561200,\t0.129173356946713200,\t0.129123775683931820,\t0.129074194098340560,\t0.129024612190064230,\t0.128975029959226380,\t0.128925447405950970,\t0.128875864530361510,\t\n0.128826281332582810,\t0.128776697812738400,\t0.128727113970951820,\t0.128677529807347900,\t0.128627945322050130,\t0.128578360515182510,\t0.128528775386868550,\t0.128479189937233090,\t\n0.128429604166399670,\t0.128380018074492230,\t0.128330431661634300,\t0.128280844927950720,\t0.128231257873565040,\t0.128181670498601210,\t0.128132082803182780,\t0.128082494787434580,\t\n0.128032906451480130,\t0.127983317795443420,\t0.127933728819447980,\t0.127884139523618660,\t0.127834549908078960,\t0.127784959972952500,\t0.127735369718364050,\t0.127685779144437160,\t\n0.127636188251295830,\t0.127586597039063610,\t0.127537005507865310,\t0.127487413657824540,\t0.127437821489065180,\t0.127388229001710870,\t0.127338636195886420,\t0.127289043071715370,\t\n0.127239449629321710,\t0.127189855868828970,\t0.127140261790362060,\t0.127090667394044480,\t0.127041072680000260,\t0.126991477648352890,\t0.126941882299227260,\t0.126892286632746930,\t\n0.126842690649035440,\t0.126793094348217700,\t0.126743497730417180,\t0.126693900795757930,\t0.126644303544363510,\t0.126594705976358750,\t0.126545108091867230,\t0.126495509891012940,\t\n0.126445911373919420,\t0.126396312540711570,\t0.126346713391512930,\t0.126297113926447550,\t0.126247514145638890,\t0.126197914049211910,\t0.126148313637290150,\t0.126098712909997610,\t\n0.126049111867457820,\t0.125999510509795710,\t0.125949908837134830,\t0.125900306849599160,\t0.125850704547312290,\t0.125801101930399120,\t0.125751498998983160,\t0.125701895753188050,\t\n0.125652292193138610,\t0.125602688318958460,\t0.125553084130771570,\t0.125503479628701540,\t0.125453874812873230,\t0.125404269683410260,\t0.125354664240436620,\t0.125305058484075860,\t\n0.125255452414452910,\t0.125205846031691330,\t0.125156239335915100,\t0.125106632327247860,\t0.125057025005814480,\t0.125007417371738540,\t0.124957809425144050,\t0.124908201166154600,\t\n0.124858592594895080,\t0.124808983711489090,\t0.124759374516060190,\t0.124709765008733290,\t0.124660155189632000,\t0.124610545058880310,\t0.124560934616601810,\t0.124511323862921410,\t\n0.124461712797962710,\t0.124412101421849730,\t0.124362489734706050,\t0.124312877736656590,\t0.124263265427824940,\t0.124213652808335110,\t0.124164039878310720,\t0.124114426637876680,\t\n0.124064813087156560,\t0.124015199226274410,\t0.123965585055353820,\t0.123915970574519710,\t0.123866355783895680,\t0.123816740683605310,\t0.123767125273773540,\t0.123717509554523940,\t\n0.123667893525980580,\t0.123618277188267040,\t0.123568660541508250,\t0.123519043585827810,\t0.123469426321349760,\t0.123419808748197690,\t0.123370190866496560,\t0.123320572676369940,\t\n0.123270954177941900,\t0.123221335371336020,\t0.123171716256677250,\t0.123122096834089190,\t0.123072477103695880,\t0.123022857065620950,\t0.122973236719989300,\t0.122923616066924580,\t\n0.122873995106550370,\t0.122824373838991610,\t0.122774752264371910,\t0.122725130382815340,\t0.122675508194445500,\t0.122625885699387330,\t0.122576262897764450,\t0.122526639789700910,\t\n0.122477016375320320,\t0.122427392654747640,\t0.122377768628106480,\t0.122328144295520900,\t0.122278519657114500,\t0.122228894713012260,\t0.122179269463337780,\t0.122129643908215120,\t\n0.122080018047767930,\t0.122030391882121110,\t0.121980765411398320,\t0.121931138635723620,\t0.121881511555220630,\t0.121831884170014300,\t0.121782256480228270,\t0.121732628485986150,\t\n0.121683000187412890,\t0.121633371584632140,\t0.121583742677767960,\t0.121534113466943980,\t0.121484483952285160,\t0.121434854133915140,\t0.121385224011957960,\t0.121335593586537300,\t\n0.121285962857778100,\t0.121236331825803980,\t0.121186700490739030,\t0.121137068852706890,\t0.121087436911832520,\t0.121037804668239560,\t0.120988172122052100,\t0.120938539273393750,\t\n0.120888906122389490,\t0.120839272669162970,\t0.120789638913837840,\t0.120740004856539050,\t0.120690370497390230,\t0.120640735836515510,\t0.120591100874038490,\t0.120541465610084160,\t\n0.120491830044776180,\t0.120442194178238610,\t0.120392558010595120,\t0.120342921541970680,\t0.120293284772488930,\t0.120243647702273970,\t0.120194010331449460,\t0.120144372660140340,\t\n0.120094734688470300,\t0.120045096416563440,\t0.119995457844543380,\t0.119945818972535120,\t0.119896179800662320,\t0.119846540329048620,\t0.119796900557819010,\t0.119747260487097150,\t\n0.119697620117007140,\t0.119647979447672640,\t0.119598338479218640,\t0.119548697211768780,\t0.119499055645447190,\t0.119449413780377500,\t0.119399771616684730,\t0.119350129154492540,\t\n0.119300486393925010,\t0.119250843335105840,\t0.119201199978159990,\t0.119151556323211140,\t0.119101912370383410,\t0.119052268119800450,\t0.119002623571587270,\t0.118952978725867520,\t\n0.118903333582765320,\t0.118853688142404350,\t0.118804042404909600,\t0.118754396370404750,\t0.118704750039013470,\t0.118655103410860750,\t0.118605456486070270,\t0.118555809264766150,\t\n0.118506161747072070,\t0.118456513933113020,\t0.118406865823012690,\t0.118357217416895190,\t0.118307568714884210,\t0.118257919717104750,\t0.118208270423680480,\t0.118158620834735550,\t\n0.118108970950393620,\t0.118059320770779710,\t0.118009670296017490,\t0.117960019526231100,\t0.117910368461544220,\t0.117860717102081850,\t0.117811065447967700,\t0.117761413499325440,\t\n0.117711761256280080,\t0.117662108718955330,\t0.117612455887475290,\t0.117562802761963690,\t0.117513149342545520,\t0.117463495629344470,\t0.117413841622484680,\t0.117364187322089850,\t\n0.117314532728284990,\t0.117264877841193800,\t0.117215222660940420,\t0.117165567187648530,\t0.117115911421443180,\t0.117066255362448040,\t0.117016599010787260,\t0.116966942366584540,\t\n0.116917285429964910,\t0.116867628201052070,\t0.116817970679969710,\t0.116768312866842870,\t0.116718654761795260,\t0.116668996364951000,\t0.116619337676433800,\t0.116569678696368710,\t\n0.116520019424879410,\t0.116470359862090080,\t0.116420700008124390,\t0.116371039863107400,\t0.116321379427162820,\t0.116271718700414780,\t0.116222057682987000,\t0.116172396375004520,\t\n0.116122734776591060,\t0.116073072887870750,\t0.116023410708967320,\t0.115973748240005810,\t0.115924085481109930,\t0.115874422432403380,\t0.115824759094011230,\t0.115775095466057170,\t\n0.115725431548665380,\t0.115675767341959570,\t0.115626102846064780,\t0.115576438061104740,\t0.115526772987203600,\t0.115477107624485080,\t0.115427441973074240,\t0.115377776033094790,\t\n0.115328109804670910,\t0.115278443287926300,\t0.115228776482986050,\t0.115179109389973830,\t0.115129442009013840,\t0.115079774340229810,\t0.115030106383746790,\t0.114980438139688500,\t\n0.114930769608179120,\t0.114881100789342370,\t0.114831431683303300,\t0.114781762290185660,\t0.114732092610113180,\t0.114682422643210890,\t0.114632752389602560,\t0.114583081849412350,\t\n0.114533411022763990,\t0.114483739909782540,\t0.114434068510591740,\t0.114384396825315770,\t0.114334724854078380,\t0.114285052597004600,\t0.114235380054218200,\t0.114185707225843340,\t\n0.114136034112003780,\t0.114086360712824570,\t0.114036687028429460,\t0.113987013058942630,\t0.113937338804487840,\t0.113887664265190130,\t0.113837989441173270,\t0.113788314332560980,\t\n0.113738638939478360,\t0.113688963262049140,\t0.113639287300397500,\t0.113589611054647210,\t0.113539934524923340,\t0.113490257711349620,\t0.113440580614050250,\t0.113390903233149020,\t\n0.113341225568770940,\t0.113291547621039810,\t0.113241869390079810,\t0.113192190876014700,\t0.113142512078969550,\t0.113092832999068110,\t0.113043153636434610,\t0.112993473991192760,\t\n0.112943794063467690,\t0.112894113853383120,\t0.112844433361062830,\t0.112794752586631890,\t0.112745071530214070,\t0.112695390191933570,\t0.112645708571914170,\t0.112596026670280930,\t\n0.112546344487157610,\t0.112496662022668450,\t0.112446979276937180,\t0.112397296250088900,\t0.112347612942247390,\t0.112297929353536840,\t0.112248245484081040,\t0.112198561334005050,\t\n0.112148876903432670,\t0.112099192192488100,\t0.112049507201295080,\t0.111999821929978760,\t0.111950136378662880,\t0.111900450547471660,\t0.111850764436528870,\t0.111801078045959610,\t\n0.111751391375887660,\t0.111701704426436790,\t0.111652017197732090,\t0.111602329689897350,\t0.111552641903056790,\t0.111502953837334190,\t0.111453265492854630,\t0.111403576869741920,\t\n0.111353887968120260,\t0.111304198788113440,\t0.111254509329846570,\t0.111204819593443430,\t0.111155129579028230,\t0.111105439286724770,\t0.111055748716658160,\t0.111006057868952170,\t\n0.110956366743731040,\t0.110906675341118550,\t0.110856983661239810,\t0.110807291704218600,\t0.110757599470178740,\t0.110707906959245320,\t0.110658214171542120,\t0.110608521107193390,\t\n0.110558827766322920,\t0.110509134149055820,\t0.110459440255515880,\t0.110409746085827350,\t0.110360051640114000,\t0.110310356918500970,\t0.110260661921112040,\t0.110210966648071480,\t\n0.110161271099503040,\t0.110111575275531860,\t0.110061879176281750,\t0.110012182801876950,\t0.109962486152441240,\t0.109912789228099760,\t0.109863092028976300,\t0.109813394555194690,\t\n0.109763696806880020,\t0.109713998784156110,\t0.109664300487147200,\t0.109614601915977090,\t0.109564903070770940,\t0.109515203951652510,\t0.109465504558746080,\t0.109415804892175450,\t\n0.109366104952065740,\t0.109316404738540780,\t0.109266704251724800,\t0.109217003491741610,\t0.109167302458716360,\t0.109117601152772860,\t0.109067899574035360,\t0.109018197722627650,\t\n0.108968495598674900,\t0.108918793202300910,\t0.108869090533629500,\t0.108819387592785810,\t0.108769684379893640,\t0.108719980895077260,\t0.108670277138460490,\t0.108620573110168470,\t\n0.108570868810325000,\t0.108521164239054380,\t0.108471459396480400,\t0.108421754282728210,\t0.108372048897921640,\t0.108322343242184940,\t0.108272637315641950,\t0.108222931118417810,\t\n0.108173224650636330,\t0.108123517912421790,\t0.108073810903898020,\t0.108024103625190170,\t0.107974396076422050,\t0.107924688257717950,\t0.107874980169201680,\t0.107825271810998390,\t\n0.107775563183231950,\t0.107725854286026130,\t0.107676145119506140,\t0.107626435683795780,\t0.107576725979019320,\t0.107527016005300610,\t0.107477305762764800,\t0.107427595251535740,\t\n0.107377884471737670,\t0.107328173423494460,\t0.107278462106931260,\t0.107228750522171900,\t0.107179038669340660,\t0.107129326548561390,\t0.107079614159959240,\t0.107029901503658060,\t\n0.106980188579782120,\t0.106930475388455270,\t0.106880761929802670,\t0.106831048203948160,\t0.106781334211015600,\t0.106731619951130150,\t0.106681905424415640,\t0.106632190630996370,\t\n0.106582475570996180,\t0.106532760244540240,\t0.106483044651752400,\t0.106433328792756950,\t0.106383612667677730,\t0.106333896276639940,\t0.106284179619767400,\t0.106234462697184410,\t\n0.106184745509014810,\t0.106135028055383800,\t0.106085310336415220,\t0.106035592352233370,\t0.105985874102962080,\t0.105936155588726560,\t0.105886436809650640,\t0.105836717765858190,\t\n0.105786998457474400,\t0.105737278884623100,\t0.105687559047428600,\t0.105637838946014780,\t0.105588118580506790,\t0.105538397951028500,\t0.105488677057704220,\t0.105438955900657810,\t\n0.105389234480014440,\t0.105339512795898000,\t0.105289790848432780,\t0.105240068637742630,\t0.105190346163952740,\t0.105140623427187000,\t0.105090900427569700,\t0.105041177165224710,\t\n0.104991453640277200,\t0.104941729852851080,\t0.104892005803070620,\t0.104842281491059720,\t0.104792556916943540,\t0.104742832080845980,\t0.104693106982890890,\t0.104643381623203480,\t\n0.104593656001907610,\t0.104543930119127600,\t0.104494203974987330,\t0.104444477569611990,\t0.104394750903125460,\t0.104345023975652040,\t0.104295296787315630,\t0.104245569338241420,\t\n0.104195841628553280,\t0.104146113658375530,\t0.104096385427832070,\t0.104046656937048080,\t0.103996928186147450,\t0.103947199175254500,\t0.103897469904493110,\t0.103847740373988490,\t\n0.103798010583864510,\t0.103748280534245060,\t0.103698550225255360,\t0.103648819657019280,\t0.103599088829661150,\t0.103549357743304860,\t0.103499626398075630,\t0.103449894794097300,\t\n0.103400162931494260,\t0.103350430810390370,\t0.103300698430910830,\t0.103250965793179560,\t0.103201232897320860,\t0.103151499743458650,\t0.103101766331718120,\t0.103052032662223190,\t\n0.103002298735098170,\t0.102952564550466960,\t0.102902830108454790,\t0.102853095409185520,\t0.102803360452783100,\t0.102753625239372700,\t0.102703889769078250,\t0.102654154042024060,\t\n0.102604418058334060,\t0.102554681818133440,\t0.102504945321546140,\t0.102455208568696460,\t0.102405471559708310,\t0.102355734294706930,\t0.102305996773816220,\t0.102256258997160510,\t\n0.102206520964863710,\t0.102156782677051060,\t0.102107044133846440,\t0.102057305335374230,\t0.102007566281758290,\t0.101957826973123890,\t0.101908087409594920,\t0.101858347591295740,\t\n0.101808607518350230,\t0.101758867190883660,\t0.101709126609019910,\t0.101659385772882920,\t0.101609644682597890,\t0.101559903338288770,\t0.101510161740079860,\t0.101460419888095120,\t\n0.101410677782459780,\t0.101360935423297730,\t0.101311192810733350,\t0.101261449944890540,\t0.101211706825894560,\t0.101161963453869310,\t0.101112219828939140,\t0.101062475951227980,\t\n0.101012731820861080,\t0.100962987437962350,\t0.100913242802656150,\t0.100863497915066410,\t0.100813752775318340,\t0.100764007383535910,\t0.100714261739843020,\t0.100664515844364910,\t\n0.100614769697225520,\t0.100565023298549190,\t0.100515276648459870,\t0.100465529747082810,\t0.100415782594541910,\t0.100366035190961560,\t0.100316287536465680,\t0.100266539631179510,\t\n0.100216791475227010,\t0.100167043068732530,\t0.100117294411819990,\t0.100067545504614660,\t0.100017796347240460,\t0.099968046939821781,\t0.099918297282482541,\t0.099868547375348005,\t\n0.099818797218542088,\t0.099769046812188733,\t0.099719296156413215,\t0.099669545251339448,\t0.099619794097091832,\t0.099570042693794270,\t0.099520291041572048,\t0.099470539140549111,\t\n0.099420786990849816,\t0.099371034592598120,\t0.099321281945919271,\t0.099271529050937210,\t0.099221775907776338,\t0.099172022516560585,\t0.099122268877415209,\t0.099072514990464169,\t\n0.099022760855831837,\t0.098973006473642169,\t0.098923251844020413,\t0.098873496967090538,\t0.098823741842976473,\t0.098773986471803507,\t0.098724230853695569,\t0.098674474988777044,\t\n0.098624718877171905,\t0.098574962519005396,\t0.098525205914401490,\t0.098475449063484558,\t0.098425691966378570,\t0.098375934623208802,\t0.098326177034099183,\t0.098276419199174125,\t\n0.098226661118557587,\t0.098176902792374829,\t0.098127144220749821,\t0.098077385403806949,\t0.098027626341670171,\t0.097977867034464761,\t0.097928107482314689,\t0.097878347685344355,\t\n0.097828587643677703,\t0.097778827357440035,\t0.097729066826755279,\t0.097679306051747433,\t0.097629545032541759,\t0.097579783769262213,\t0.097530022262033209,\t0.097480260510978717,\t\n0.097430498516224012,\t0.097380736277893065,\t0.097330973796110262,\t0.097281211070999601,\t0.097231448102686344,\t0.097181684891294473,\t0.097131921436948376,\t0.097082157739772051,\t\n0.097032393799890759,\t0.096982629617428498,\t0.096932865192509654,\t0.096883100525258198,\t0.096833335615799446,\t0.096783570464257340,\t0.096733805070755879,\t0.096684039435420352,\t\n0.096634273558374714,\t0.096584507439743394,\t0.096534741079650363,\t0.096484974478220922,\t0.096435207635579057,\t0.096385440551849152,\t0.096335673227155222,\t0.096285905661622539,\t\n0.096236137855375103,\t0.096186369808537314,\t0.096136601521233156,\t0.096086832993587945,\t0.096037064225725638,\t0.095987295217770691,\t0.095937525969847046,\t0.095887756482080033,\t\n0.095837986754593638,\t0.095788216787511829,\t0.095738446580959910,\t0.095688676135061879,\t0.095638905449942163,\t0.095589134525724748,\t0.095539363362534921,\t0.095489591960496695,\t\n0.095439820319734497,\t0.095390048440372299,\t0.095340276322535417,\t0.095290503966347848,\t0.095240731371934020,\t0.095190958539417919,\t0.095141185468924860,\t0.095091412160578856,\t\n0.095041638614504306,\t0.094991864830825223,\t0.094942090809666910,\t0.094892316551153377,\t0.094842542055409054,\t0.094792767322557939,\t0.094742992352725333,\t0.094693217146035263,\t\n0.094643441702611700,\t0.094593666022579972,\t0.094543890106064080,\t0.094494113953188463,\t0.094444337564077122,\t0.094394560938855385,\t0.094344784077647237,\t0.094295006980577134,\t\n0.094245229647769060,\t0.094195452079348360,\t0.094145674275439031,\t0.094095896236165516,\t0.094046117961651826,\t0.093996339452023278,\t0.093946560707403884,\t0.093896781727918086,\t\n0.093847002513689881,\t0.093797223064844629,\t0.093747443381506312,\t0.093697663463798944,\t0.093647883311847854,\t0.093598102925777069,\t0.093548322305711015,\t0.093498541451773720,\t\n0.093448760364090500,\t0.093398979042785393,\t0.093349197487982843,\t0.093299415699806848,\t0.093249633678382751,\t0.093199851423834579,\t0.093150068936286773,\t0.093100286215863359,\t\n0.093050503262689668,\t0.093000720076889712,\t0.092950936658587974,\t0.092901153007908438,\t0.092851369124976463,\t0.092801585009916060,\t0.092751800662851269,\t0.092702016083907407,\t\n0.092652231273208499,\t0.092602446230879029,\t0.092552660957042995,\t0.092502875451825742,\t0.092453089715351308,\t0.092403303747744150,\t0.092353517549128294,\t0.092303731119629071,\t\n0.092253944459370532,\t0.092204157568477135,\t0.092154370447072892,\t0.092104583095283174,\t0.092054795513231993,\t0.092005007701043834,\t0.091955219658842707,\t0.091905431386753972,\t\n0.091855642884901653,\t0.091805854153409791,\t0.091756065192403730,\t0.091706276002007509,\t0.091656486582345598,\t0.091606696933542037,\t0.091556907055722170,\t0.091507116949010023,\t\n0.091457326613530107,\t0.091407536049406421,\t0.091357745256764336,\t0.091307954235727878,\t0.091258162986421545,\t0.091208371508969363,\t0.091158579803496689,\t0.091108787870127578,\t\n0.091058995708986484,\t0.091009203320197463,\t0.090959410703885885,\t0.090909617860175762,\t0.090859824789191607,\t0.090810031491057444,\t0.090760237965898646,\t0.090710444213839253,\t\n0.090660650235003318,\t0.090610856029516185,\t0.090561061597501921,\t0.090511266939084997,\t0.090461472054389466,\t0.090411676943540686,\t0.090361881606662725,\t0.090312086043880066,\t\n0.090262290255316735,\t0.090212494241098132,\t0.090162698001348282,\t0.090112901536191697,\t0.090063104845752417,\t0.090013307930155814,\t0.089963510789525941,\t0.089913713423987282,\t\n0.089863915833663918,\t0.089814118018681194,\t0.089764319979163176,\t0.089714521715233905,\t0.089664723227018781,\t0.089614924514641855,\t0.089565125578227614,\t0.089515326417900110,\t\n0.089465527033784742,\t0.089415727426005551,\t0.089365927594687047,\t0.089316127539953286,\t0.089266327261929637,\t0.089216526760740170,\t0.089166726036509394,\t0.089116925089361351,\t\n0.089067123919421440,\t0.089017322526813727,\t0.088967520911662698,\t0.088917719074092433,\t0.088867917014228304,\t0.088818114732194392,\t0.088768312228114751,\t0.088718509502114767,\t\n0.088668706554318508,\t0.088618903384850484,\t0.088569099993834763,\t0.088519296381396731,\t0.088469492547660455,\t0.088419688492750448,\t0.088369884216790776,\t0.088320079719906838,\t\n0.088270275002222703,\t0.088220470063862882,\t0.088170664904951443,\t0.088120859525613784,\t0.088071053925973974,\t0.088021248106156524,\t0.087971442066285530,\t0.087921635806486362,\t\n0.087871829326883102,\t0.087822022627600263,\t0.087772215708761939,\t0.087722408570493501,\t0.087672601212919060,\t0.087622793636162669,\t0.087572985840349726,\t0.087523177825604329,\t\n0.087473369592050987,\t0.087423561139813769,\t0.087373752469018101,\t0.087323943579788052,\t0.087274134472248133,\t0.087224325146522438,\t0.087174515602736383,\t0.087124705841014033,\t\n0.087074895861479915,\t0.087025085664258123,\t0.086975275249474057,\t0.086925464617251799,\t0.086875653767715888,\t0.086825842700990391,\t0.086776031417200722,\t0.086726219916470990,\t\n0.086676408198925262,\t0.086626596264688951,\t0.086576784113886154,\t0.086526971746641396,\t0.086477159163078771,\t0.086427346363323679,\t0.086377533347500229,\t0.086327720115732948,\t\n0.086277906668145915,\t0.086228093004864573,\t0.086178279126012988,\t0.086128465031715701,\t0.086078650722096819,\t0.086028836197281744,\t0.085979021457394583,\t0.085929206502559863,\t\n0.085879391332901692,\t0.085829575948545483,\t0.085779760349615333,\t0.085729944536235350,\t0.085680128508530934,\t0.085630312266626193,\t0.085580495810645682,\t0.085530679140713495,\t\n0.085480862256955045,\t0.085431045159494429,\t0.085381227848456212,\t0.085331410323964491,\t0.085281592586144664,\t0.085231774635120869,\t0.085181956471017645,\t0.085132138093959073,\t\n0.085082319504070608,\t0.085032500701476346,\t0.084982681686300826,\t0.084932862458668157,\t0.084883043018703780,\t0.084833223366531790,\t0.084783403502276297,\t0.084733583426062742,\t\n0.084683763138015233,\t0.084633942638258311,\t0.084584121926916098,\t0.084534301004114007,\t0.084484479869976176,\t0.084434658524627143,\t0.084384836968191018,\t0.084335015200793256,\t\n0.084285193222557939,\t0.084235371033609646,\t0.084185548634072488,\t0.084135726024071891,\t0.084085903203731979,\t0.084036080173177319,\t0.083986256932532005,\t0.083936433481921507,\t\n0.083886609821469907,\t0.083836785951301798,\t0.083786961871541277,\t0.083737137582313784,\t0.083687313083743456,\t0.083637488375954402,\t0.083587663459072065,\t0.083537838333220579,\t\n0.083488012998524486,\t0.083438187455107921,\t0.083388361703096339,\t0.083338535742613851,\t0.083288709573785008,\t0.083238883196733962,\t0.083189056611586154,\t0.083139229818465693,\t\n0.083089402817497160,\t0.083039575608804692,\t0.082989748192513715,\t0.082939920568748368,\t0.082890092737633217,\t0.082840264699292399,\t0.082790436453851354,\t0.082740608001434221,\t\n0.082690779342165122,\t0.082640950476169525,\t0.082591121403571541,\t0.082541292124495763,\t0.082491462639066315,\t0.082441632947408652,\t0.082391803049646897,\t0.082341972945905645,\t\n0.082292142636309004,\t0.082242312120982458,\t0.082192481400050130,\t0.082142650473636614,\t0.082092819341866005,\t0.082042988004863801,\t0.081993156462754124,\t0.081943324715661570,\t\n0.081893492763710246,\t0.081843660607025637,\t0.081793828245731878,\t0.081743995679953108,\t0.081694162909814780,\t0.081644329935441060,\t0.081594496756956500,\t0.081544663374485266,\t\n0.081494829788152812,\t0.081444995998083289,\t0.081395162004401278,\t0.081345327807230916,\t0.081295493406697672,\t0.081245658802925697,\t0.081195823996039571,\t0.081145988986163445,\t\n0.081096153773422788,\t0.081046318357941752,\t0.080996482739844916,\t0.080946646919256432,\t0.080896810896301782,\t0.080846974671105090,\t0.080797138243790978,\t0.080747301614483569,\t\n0.080697464783308345,\t0.080647627750389458,\t0.080597790515851059,\t0.080547953079818629,\t0.080498115442416321,\t0.080448277603768728,\t0.080398439563999988,\t0.080348601323235597,\t\n0.080298762881599692,\t0.080248924239216896,\t0.080199085396211331,\t0.080149246352708509,\t0.080099407108832565,\t0.080049567664708110,\t0.079999728020459279,\t0.079949888176211584,\t\n0.079900048132089160,\t0.079850207888216618,\t0.079800367444718120,\t0.079750526801719138,\t0.079700685959343848,\t0.079650844917716387,\t0.079601003676962268,\t0.079551162237205639,\t\n0.079501320598571096,\t0.079451478761182817,\t0.079401636725166272,\t0.079351794490645652,\t0.079301952057745539,\t0.079252109426590098,\t0.079202266597304824,\t0.079152423570013897,\t\n0.079102580344841897,\t0.079052736921913017,\t0.079002893301352725,\t0.078953049483285215,\t0.078903205467835066,\t0.078853361255126472,\t0.078803516845284902,\t0.078753672238434561,\t\n0.078703827434699586,\t0.078653982434205474,\t0.078604137237076419,\t0.078554291843437027,\t0.078504446253411450,\t0.078454600467125199,\t0.078404754484702452,\t0.078354908306267831,\t\n0.078305061931945474,\t0.078255215361860919,\t0.078205368596138330,\t0.078155521634902303,\t0.078105674478277043,\t0.078055827126388033,\t0.078005979579359452,\t0.077956131837315937,\t\n0.077906283900381637,\t0.077856435768682078,\t0.077806587442341424,\t0.077756738921483853,\t0.077706890206234891,\t0.077657041296718687,\t0.077607192193059893,\t0.077557342895382672,\t\n0.077507493403812536,\t0.077457643718473662,\t0.077407793839490688,\t0.077357943766987777,\t0.077308093501090455,\t0.077258243041922900,\t0.077208392389609748,\t0.077158541544275150,\t\n0.077108690506044658,\t0.077058839275042437,\t0.077008987851393110,\t0.076959136235220882,\t0.076909284426651237,\t0.076859432425808394,\t0.076809580232816976,\t0.076759727847801162,\t\n0.076709875270886463,\t0.076660022502197084,\t0.076610169541857190,\t0.076560316389992333,\t0.076510463046726679,\t0.076460609512184863,\t0.076410755786491091,\t0.076360901869770861,\t\n0.076311047762148379,\t0.076261193463748281,\t0.076211338974694759,\t0.076161484295113338,\t0.076111629425128197,\t0.076061774364863971,\t0.076011919114444881,\t0.075962063673996438,\t\n0.075912208043642834,\t0.075862352223508706,\t0.075812496213718258,\t0.075762640014397004,\t0.075712783625669161,\t0.075662927047658909,\t0.075613070280491787,\t0.075563213324291986,\t\n0.075513356179184157,\t0.075463498845292479,\t0.075413641322742517,\t0.075363783611658436,\t0.075313925712164900,\t0.075264067624386116,\t0.075214209348447594,\t0.075164350884473555,\t\n0.075114492232588648,\t0.075064633392917052,\t0.075014774365584319,\t0.074964915150714656,\t0.074915055748432699,\t0.074865196158862668,\t0.074815336382130074,\t0.074765476418359150,\t\n0.074715616267674090,\t0.074665755930200445,\t0.074615895406062394,\t0.074566034695384600,\t0.074516173798291299,\t0.074466312714907987,\t0.074416451445358897,\t0.074366589989768681,\t\n0.074316728348261543,\t0.074266866520963037,\t0.074217004507997356,\t0.074167142309489162,\t0.074117279925562676,\t0.074067417356343437,\t0.074017554601955651,\t0.073967691662523968,\t\n0.073917828538172622,\t0.073867965229027152,\t0.073818101735211764,\t0.073768238056851121,\t0.073718374194069430,\t0.073668510146992258,\t0.073618645915743811,\t0.073568781500448308,\t\n0.073518916901231288,\t0.073469052118216985,\t0.073419187151530035,\t0.073369322001294687,\t0.073319456667636479,\t0.073269591150679617,\t0.073219725450548792,\t0.073169859567368198,\t\n0.073119993501263414,\t0.073070127252358633,\t0.073020260820778532,\t0.072970394206647346,\t0.072920527410090613,\t0.072870660431232553,\t0.072820793270197859,\t0.072770925927110722,\t\n0.072721058402096722,\t0.072671190695280080,\t0.072621322806785016,\t0.072571454736737082,\t0.072521586485260511,\t0.072471718052479983,\t0.072421849438519703,\t0.072371980643505252,\t\n0.072322111667560848,\t0.072272242510811172,\t0.072222373173380428,\t0.072172503655394210,\t0.072122633956976726,\t0.072072764078252666,\t0.072022894019346237,\t0.071973023780383033,\t\n0.071923153361487260,\t0.071873282762783611,\t0.071823411984396304,\t0.071773541026450907,\t0.071723669889071667,\t0.071673798572382805,\t0.071623927076509900,\t0.071574055401577158,\t\n0.071524183547709286,\t0.071474311515030517,\t0.071424439303666404,\t0.071374566913741208,\t0.071324694345379580,\t0.071274821598705781,\t0.071224948673845365,\t0.071175075570922577,\t\n0.071125202290062098,\t0.071075328831388188,\t0.071025455195026385,\t0.070975581381100938,\t0.070925707389736553,\t0.070875833221057435,\t0.070825958875189193,\t0.070776084352256061,\t\n0.070726209652382258,\t0.070676334775693378,\t0.070626459722313670,\t0.070576584492367811,\t0.070526709085980036,\t0.070476833503275937,\t0.070426957744379765,\t0.070377081809416195,\t\n0.070327205698509462,\t0.070277329411785175,\t0.070227452949367553,\t0.070177576311381301,\t0.070127699497950668,\t0.070077822509201235,\t0.070027945345257234,\t0.069978068006243385,\t\n0.069928190492283909,\t0.069878312803504400,\t0.069828434940029119,\t0.069778556901982744,\t0.069728678689489537,\t0.069678800302675079,\t0.069628921741663616,\t0.069579043006579397,\t\n0.069529164097548030,\t0.069479285014693734,\t0.069429405758141244,\t0.069379526328014779,\t0.069329646724439961,\t0.069279766947541011,\t0.069229886997442647,\t0.069180006874269132,\t\n0.069130126578146031,\t0.069080246109197621,\t0.069030365467548593,\t0.068980484653323210,\t0.068930603666647050,\t0.068880722507644390,\t0.068830841176439922,\t0.068780959673157907,\t\n0.068731077997923939,\t0.068681196150862267,\t0.068631314132097165,\t0.068581431941754228,\t0.068531549579957704,\t0.068481667046832312,\t0.068431784342502300,\t0.068381901467093276,\t\n0.068332018420729501,\t0.068282135203535682,\t0.068232251815636080,\t0.068182368257156289,\t0.068132484528220572,\t0.068082600628953646,\t0.068032716559479775,\t0.067982832319924566,\t\n0.067932947910412267,\t0.067883063331067597,\t0.067833178582014833,\t0.067783293663379568,\t0.067733408575286064,\t0.067683523317858596,\t0.067633637891222759,\t0.067583752295502827,\t\n0.067533866530823522,\t0.067483980597309090,\t0.067434094495085167,\t0.067384208224276002,\t0.067334321785006326,\t0.067284435177400390,\t0.067234548401583813,\t0.067184661457680858,\t\n0.067134774345816259,\t0.067084887066114277,\t0.067034999618700519,\t0.066985112003699276,\t0.066935224221235240,\t0.066885336271432699,\t0.066835448154417262,\t0.066785559870313205,\t\n0.066735671419245260,\t0.066685782801337676,\t0.066635894016716088,\t0.066586005065504758,\t0.066536115947827976,\t0.066486226663811349,\t0.066436337213579152,\t0.066386447597256121,\t\n0.066336557814966515,\t0.066286667866835972,\t0.066236777752988751,\t0.066186887473549588,\t0.066136997028642758,\t0.066087106418393882,\t0.066037215642927236,\t0.065987324702367553,\t\n0.065937433596839123,\t0.065887542326467541,\t0.065837650891377109,\t0.065787759291692546,\t0.065737867527538144,\t0.065687975599039522,\t0.065638083506320957,\t0.065588191249506739,\t\n0.065538298828722488,\t0.065488406244092481,\t0.065438513495741465,\t0.065388620583793730,\t0.065338727508374883,\t0.065288834269609214,\t0.065238940867621456,\t0.065189047302535899,\t\n0.065139153574478179,\t0.065089259683572570,\t0.065039365629943807,\t0.064989471413716193,\t0.064939577035015350,\t0.064889682493965553,\t0.064839787790691550,\t0.064789892925317644,\t\n0.064739997897969442,\t0.064690102708771235,\t0.064640207357847340,\t0.064590311845323378,\t0.064540416171323625,\t0.064490520335972829,\t0.064440624339395292,\t0.064390728181716650,\t\n0.064340831863061165,\t0.064290935383553613,\t0.064241038743318282,\t0.064191141942480795,\t0.064141244981165454,\t0.064091347859496994,\t0.064041450577599732,\t0.063991553135599274,\t\n0.063941655533619940,\t0.063891757771786475,\t0.063841859850223157,\t0.063791961769055647,\t0.063742063528408222,\t0.063692165128405198,\t0.063642266569172212,\t0.063592367850833553,\t\n0.063542468973513969,\t0.063492569937337776,\t0.063442670742430596,\t0.063392771388916747,\t0.063342871876920961,\t0.063292972206567558,\t0.063243072377982171,\t0.063193172391289090,\t\n0.063143272246613091,\t0.063093371944078463,\t0.063043471483810856,\t0.062993570865934559,\t0.062943670090574347,\t0.062893769157854496,\t0.062843868067900682,\t0.062793966820837196,\t\n0.062744065416788786,\t0.062694163855879781,\t0.062644262138235804,\t0.062594360263981172,\t0.062544458233240188,\t0.062494556046138516,\t0.062444653702800446,\t0.062394751203350737,\t\n0.062344848547913716,\t0.062294945736615009,\t0.062245042769578943,\t0.062195139646930270,\t0.062145236368793301,\t0.062095332935293693,\t0.062045429346555742,\t0.061995525602704223,\t\n0.061945621703863446,\t0.061895717650159061,\t0.061845813441715379,\t0.061795909078657160,\t0.061746004561108729,\t0.061696099889195728,\t0.061646195063042482,\t0.061596290082773300,\t\n0.061546384948513840,\t0.061496479660388410,\t0.061446574218521788,\t0.061396668623038289,\t0.061346762874063557,\t0.061296856971721922,\t0.061246950916138139,\t0.061197044707436539,\t\n0.061147138345742771,\t0.061097231831181154,\t0.061047325163876461,\t0.060997418343953010,\t0.060947511371536457,\t0.060897604246751121,\t0.060847696969721782,\t0.060797789540572751,\t\n0.060747881959429692,\t0.060697974226416929,\t0.060648066341658792,\t0.060598158305280925,\t0.060548250117407665,\t0.060498341778163781,\t0.060448433287673596,\t0.060398524646062775,\t\n0.060348615853455634,\t0.060298706909976962,\t0.060248797815751078,\t0.060198888570903643,\t0.060148979175558982,\t0.060099069629841878,\t0.060049159933876654,\t0.059999250087788975,\t\n0.059949340091703170,\t0.059899429945744015,\t0.059849519650035841,\t0.059799609204704313,\t0.059749698609873760,\t0.059699787865668964,\t0.059649876972214251,\t0.059599965929635290,\t\n0.059550054738056420,\t0.059500143397601964,\t0.059450231908397592,\t0.059400320270567644,\t0.059350408484236894,\t0.059300496549529680,\t0.059250584466571665,\t0.059200672235487188,\t\n0.059150759856401038,\t0.059100847329437538,\t0.059050934654722366,\t0.059001021832379853,\t0.058951108862534789,\t0.058901195745311510,\t0.058851282480835689,\t0.058801369069231654,\t\n0.058751455510624204,\t0.058701541805137661,\t0.058651627952897717,\t0.058601713954028696,\t0.058551799808654957,\t0.058501885516902150,\t0.058451971078894639,\t0.058402056494757194,\t\n0.058352141764614167,\t0.058302226888591227,\t0.058252311866812720,\t0.058202396699403434,\t0.058152481386487716,\t0.058102565928191234,\t0.058052650324638341,\t0.058002734575953820,\t\n0.057952818682262014,\t0.057902902643688615,\t0.057852986460357955,\t0.057803070132394822,\t0.057753153659923583,\t0.057703237043069892,\t0.057653320281958118,\t0.057603403376712589,\t\n0.057553486327459005,\t0.057503569134321697,\t0.057453651797425474,\t0.057403734316894675,\t0.057353816692854984,\t0.057303898925430745,\t0.057253981014746769,\t0.057204062960927393,\t\n0.057154144764098302,\t0.057104226424383848,\t0.057054307941908827,\t0.057004389316797598,\t0.056954470549175837,\t0.056904551639167897,\t0.056854632586898581,\t0.056804713392492240,\t\n0.056754794056074552,\t0.056704874577769890,\t0.056654954957702591,\t0.056605035195998347,\t0.056555115292781524,\t0.056505195248176904,\t0.056455275062308859,\t0.056405354735303059,\t\n0.056355434267283885,\t0.056305513658376119,\t0.056255592908704126,\t0.056205672018393590,\t0.056155750987568885,\t0.056105829816354792,\t0.056055908504875684,\t0.056005987053257253,\t\n0.055956065461623850,\t0.055906143730100284,\t0.055856221858810916,\t0.055806299847881435,\t0.055756377697436202,\t0.055706455407600032,\t0.055656532978497278,\t0.055606610410253630,\t\n0.055556687702993462,\t0.055506764856841126,\t0.055456841871922326,\t0.055406918748361414,\t0.055356995486283214,\t0.055307072085812078,\t0.055257148547073705,\t0.055207224870192459,\t\n0.055157301055293158,\t0.055107377102500153,\t0.055057453011939150,\t0.055007528783734522,\t0.054957604418011063,\t0.054907679914893155,\t0.054857755274506488,\t0.054807830496975435,\t\n0.054757905582424805,\t0.054707980530978965,\t0.054658055342763620,\t0.054608130017903135,\t0.054558204556521883,\t0.054508278958745562,\t0.054458353224698539,\t0.054408427354505642,\t\n0.054358501348291226,\t0.054308575206181008,\t0.054258648928299347,\t0.054208722514771060,\t0.054158795965720527,\t0.054108869281273446,\t0.054058942461554196,\t0.054009015506687588,\t\n0.053959088416797994,\t0.053909161192011126,\t0.053859233832451357,\t0.053809306338243504,\t0.053759378709511939,\t0.053709450946382367,\t0.053659523048979176,\t0.053609595017426730,\t\n0.053559666851850735,\t0.053509738552375577,\t0.053459810119126074,\t0.053409881552226597,\t0.053359952851802867,\t0.053310024017979254,\t0.053260095050880578,\t0.053210165950631216,\t\n0.053160236717356889,\t0.053110307351181975,\t0.053060377852231284,\t0.053010448220629211,\t0.052960518456501453,\t0.052910588559972403,\t0.052860658531166886,\t0.052810728370209274,\t\n0.052760798077225286,\t0.052710867652339302,\t0.052660937095676152,\t0.052611006407360210,\t0.052561075587517200,\t0.052511144636271503,\t0.052461213553747499,\t0.052411282340070905,\t\n0.052361350995366103,\t0.052311419519757922,\t0.052261487913370749,\t0.052211556176330304,\t0.052161624308760965,\t0.052111692310787570,\t0.052061760182534500,\t0.052011827924127466,\t\n0.051961895535690868,\t0.051911963017349530,\t0.051862030369227839,\t0.051812097591451521,\t0.051762164684144955,\t0.051712231647432980,\t0.051662298481439980,\t0.051612365186291677,\t\n0.051562431762112462,\t0.051512498209026723,\t0.051462564527160186,\t0.051412630716637230,\t0.051362696777582706,\t0.051312762710120988,\t0.051262828514377815,\t0.051212894190477566,\t\n0.051162959738545080,\t0.051113025158704757,\t0.051063090451082309,\t0.051013155615802136,\t0.050963220652989076,\t0.050913285562767523,\t0.050863350345263195,\t0.050813415000600493,\t\n0.050763479528904254,\t0.050713543930298872,\t0.050663608204910074,\t0.050613672352862252,\t0.050563736374279813,\t0.050513800269288471,\t0.050463864038012632,\t0.050413927680577127,\t\n0.050363991197106363,\t0.050314054587726066,\t0.050264117852560630,\t0.050214180991734900,\t0.050164244005373275,\t0.050114306893601482,\t0.050064369656543928,\t0.050014432294325444,\t\n0.049964494807070436,\t0.049914557194904632,\t0.049864619457952439,\t0.049814681596338700,\t0.049764743610187810,\t0.049714805499625501,\t0.049664867264776182,\t0.049614928905764251,\t\n0.049564990422715442,\t0.049515051815754156,\t0.049465113085005244,\t0.049415174230593099,\t0.049365235252643469,\t0.049315296151280746,\t0.049265356926629783,\t0.049215417578814986,\t\n0.049165478107962089,\t0.049115538514195499,\t0.049065598797640060,\t0.049015658958420180,\t0.048965718996661592,\t0.048915778912488717,\t0.048865838706026385,\t0.048815898377399018,\t\n0.048765957926732342,\t0.048716017354150778,\t0.048666076659779171,\t0.048616135843741928,\t0.048566194906164782,\t0.048516253847172154,\t0.048466312666888452,\t0.048416371365439408,\t\n0.048366429942949436,\t0.048316488399543389,\t0.048266546735345674,\t0.048216604950482043,\t0.048166663045076892,\t0.048116721019255092,\t0.048066778873141036,\t0.048016836606860486,\t\n0.047966894220537841,\t0.047916951714297953,\t0.047867009088265251,\t0.047817066342565467,\t0.047767123477323016,\t0.047717180492662763,\t0.047667237388709108,\t0.047617294165587805,\t\n0.047567350823423268,\t0.047517407362339906,\t0.047467463782463477,\t0.047417520083918384,\t0.047367576266829491,\t0.047317632331321212,\t0.047267688277519294,\t0.047217744105548159,\t\n0.047167799815532666,\t0.047117855407597227,\t0.047067910881867597,\t0.047017966238468184,\t0.046968021477523859,\t0.046918076599159031,\t0.046868131603499459,\t0.046818186490669565,\t\n0.046768241260794194,\t0.046718295913997780,\t0.046668350450406071,\t0.046618404870143487,\t0.046568459173334444,\t0.046518513360104700,\t0.046468567430578672,\t0.046418621384881224,\t\n0.046368675223136778,\t0.046318728945471087,\t0.046268782552008579,\t0.046218836042874113,\t0.046168889418192111,\t0.046118942678088332,\t0.046068995822687191,\t0.046019048852113560,\t\n0.045969101766491868,\t0.045919154565947869,\t0.045869207250605976,\t0.045819259820591068,\t0.045769312276027561,\t0.045719364617041229,\t0.045669416843756479,\t0.045619468956298183,\t\n0.045569520954790776,\t0.045519572839360006,\t0.045469624610130308,\t0.045419676267226108,\t0.045369727810773156,\t0.045319779240895884,\t0.045269830557719166,\t0.045219881761367424,\t\n0.045169932851966424,\t0.045119983829640595,\t0.045070034694514802,\t0.045020085446713480,\t0.044970136086362390,\t0.044920186613585961,\t0.044870237028509057,\t0.044820287331256127,\t\n0.044770337521952919,\t0.044720387600723860,\t0.044670437567693844,\t0.044620487422987284,\t0.044570537166729950,\t0.044520586799046268,\t0.044470636320060680,\t0.044420685729898948,\t\n0.044370735028685500,\t0.044320784216545214,\t0.044270833293602520,\t0.044220882259983191,\t0.044170931115811655,\t0.044120979861212793,\t0.044071028496311032,\t0.044021077021232147,\t\n0.043971125436100572,\t0.043921173741041181,\t0.043871221936178414,\t0.043821270021638034,\t0.043771317997544475,\t0.043721365864022629,\t0.043671413621196919,\t0.043621461269193119,\t\n0.043571508808135664,\t0.043521556238149003,\t0.043471603559358883,\t0.043421650771889760,\t0.043371697875866512,\t0.043321744871413576,\t0.043271791758656718,\t0.043221838537720381,\t\n0.043171885208729451,\t0.043121931771808356,\t0.043071978227082884,\t0.043022024574677464,\t0.042972070814716982,\t0.042922116947325881,\t0.042872162972629926,\t0.042822208890753569,\t\n0.042772254701821687,\t0.042722300405958723,\t0.042672346003290458,\t0.042622391493941321,\t0.042572436878036211,\t0.042522482155699565,\t0.042472527327057155,\t0.042422572392233425,\t\n0.042372617351352823,\t0.042322662204541117,\t0.042272706951922763,\t0.042222751593622633,\t0.042172796129765183,\t0.042122840560476195,\t0.042072884885880096,\t0.042022929106101788,\t\n0.041972973221265711,\t0.041923017231497647,\t0.041873061136922039,\t0.041823104937663780,\t0.041773148633847318,\t0.041723192225598421,\t0.041673235713041545,\t0.041623279096301584,\t\n0.041573322375502979,\t0.041523365550771511,\t0.041473408622231631,\t0.041423451590007786,\t0.041373494454225751,\t0.041323537215009983,\t0.041273579872485373,\t0.041223622426776373,\t\n0.041173664878008755,\t0.041123707226306976,\t0.041073749471795928,\t0.041023791614600062,\t0.040973833654845165,\t0.040923875592655680,\t0.040873917428156506,\t0.040823959161472100,\t\n0.040774000792728235,\t0.040724042322049368,\t0.040674083749560400,\t0.040624125075385771,\t0.040574166299651278,\t0.040524207422481369,\t0.040474248444000500,\t0.040424289364334454,\t\n0.040374330183607678,\t0.040324370901945079,\t0.040274411519471115,\t0.040224452036311559,\t0.040174492452590874,\t0.040124532768433960,\t0.040074572983965266,\t0.040024613099310588,\t\n0.039974653114594375,\t0.039924693029941533,\t0.039874732845476511,\t0.039824772561325099,\t0.039774812177611758,\t0.039724851694461390,\t0.039674891111998449,\t0.039624930430348718,\t\n0.039574969649636665,\t0.039525008769986741,\t0.039475047791524741,\t0.039425086714375120,\t0.039375125538662785,\t0.039325164264512193,\t0.039275202892049131,\t0.039225241421398063,\t\n0.039175279852683889,\t0.039125318186031072,\t0.039075356421565406,\t0.039025394559411349,\t0.038975432599693806,\t0.038925470542537234,\t0.038875508388067435,\t0.038825546136408859,\t\n0.038775583787686425,\t0.038725621342024584,\t0.038675658799549130,\t0.038625696160384533,\t0.038575733424655693,\t0.038525770592487081,\t0.038475807664004477,\t0.038425844639332365,\t\n0.038375881518595188,\t0.038325918301918754,\t0.038275954989427527,\t0.038225991581246413,\t0.038176028077499875,\t0.038126064478313709,\t0.038076100783812385,\t0.038026136994120802,\t\n0.037976173109363437,\t0.037926209129666086,\t0.037876245055153211,\t0.037826280885949720,\t0.037776316622180083,\t0.037726352263970100,\t0.037676387811444237,\t0.037626423264727406,\t\n0.037576458623944070,\t0.037526493889220032,\t0.037476529060679761,\t0.037426564138447721,\t0.037376599122649720,\t0.037326634013410215,\t0.037276668810854126,\t0.037226703515105923,\t\n0.037176738126291402,\t0.037126772644535039,\t0.037076807069961748,\t0.037026841402695986,\t0.036976875642863574,\t0.036926909790588963,\t0.036876943845997087,\t0.036826977809212402,\t\n0.036777011680360717,\t0.036727045459566503,\t0.036677079146954679,\t0.036627112742649709,\t0.036577146246777402,\t0.036527179659462228,\t0.036477212980828663,\t0.036427246211002511,\t\n0.036377279350108239,\t0.036327312398270771,\t0.036277345355614575,\t0.036227378222265468,\t0.036177410998347904,\t0.036127443683986821,\t0.036077476279306686,\t0.036027508784433296,\t\n0.035977541199491141,\t0.035927573524605134,\t0.035877605759899747,\t0.035827637905500788,\t0.035777669961532733,\t0.035727701928120505,\t0.035677733805388578,\t0.035627765593462764,\t\n0.035577797292467531,\t0.035527828902527807,\t0.035477860423768062,\t0.035427891856314120,\t0.035377923200290443,\t0.035327954455821514,\t0.035277985623033137,\t0.035228016702049801,\t\n0.035178047692996428,\t0.035128078595997488,\t0.035078109411178796,\t0.035028140138664829,\t0.034978170778580508,\t0.034928201331050325,\t0.034878231796200074,\t0.034828262174154252,\t\n0.034778292465037768,\t0.034728322668975110,\t0.034678352786092090,\t0.034628382816513190,\t0.034578412760363331,\t0.034528442617766997,\t0.034478472388850004,\t0.034428502073736822,\t\n0.034378531672551949,\t0.034328561185421186,\t0.034278590612469018,\t0.034228619953820379,\t0.034178649209599739,\t0.034128678379932928,\t0.034078707464944416,\t0.034028736464759138,\t\n0.033978765379501570,\t0.033928794209297543,\t0.033878822954271519,\t0.033828851614548447,\t0.033778880190252797,\t0.033728908681510385,\t0.033678937088445708,\t0.033628965411183688,\t\n0.033578993649848815,\t0.033529021804566891,\t0.033479049875462422,\t0.033429077862659883,\t0.033379105766285090,\t0.033329133586462535,\t0.033279161323317138,\t0.033229188976973405,\t\n0.033179216547557136,\t0.033129244035192830,\t0.033079271440005414,\t0.033029298762119373,\t0.032979326001660529,\t0.032929353158753373,\t0.032879380233522833,\t0.032829407226093399,\t\n0.032779434136590888,\t0.032729460965139796,\t0.032679487711865046,\t0.032629514376891135,\t0.032579540960343885,\t0.032529567462347780,\t0.032479593883027312,\t0.032429620222508303,\t\n0.032379646480915243,\t0.032329672658373068,\t0.032279698755006268,\t0.032229724770940667,\t0.032179750706300754,\t0.032129776561211458,\t0.032079802335797283,\t0.032029828030184046,\t\n0.031979853644496237,\t0.031929879178858790,\t0.031879904633396204,\t0.031829930008234301,\t0.031779955303497580,\t0.031729980519310960,\t0.031680005655798947,\t0.031630030713087370,\t\n0.031580055691300707,\t0.031530080590563912,\t0.031480105411001470,\t0.031430130152739211,\t0.031380154815901617,\t0.031330179400613202,\t0.031280203906999780,\t0.031230228335185847,\t\n0.031180252685296343,\t0.031130276957455762,\t0.031080301151789936,\t0.031030325268423354,\t0.030980349307480962,\t0.030930373269087250,\t0.030880397153368048,\t0.030830420960447857,\t\n0.030780444690451610,\t0.030730468343503809,\t0.030680491919730282,\t0.030630515419255523,\t0.030580538842204477,\t0.030530562188701638,\t0.030480585458872840,\t0.030430608652842576,\t\n0.030380631770735349,\t0.030330654812676987,\t0.030280677778791985,\t0.030230700669205291,\t0.030180723484041400,\t0.030130746223426146,\t0.030080768887484025,\t0.030030791476339982,\t\n0.029980813990118517,\t0.029930836428945458,\t0.029880858792945310,\t0.029830881082243015,\t0.029780903296963073,\t0.029730925437231319,\t0.029680947503172250,\t0.029630969494910810,\t\n0.029580991412571506,\t0.029531013256280166,\t0.029481035026161291,\t0.029431056722339387,\t0.029381078344940286,\t0.029331099894088487,\t0.029281121369908937,\t0.029231142772526142,\t\n0.029181164102065935,\t0.029131185358652816,\t0.029081206542411732,\t0.029031227653467190,\t0.028981248691945023,\t0.028931269657969733,\t0.028881290551666269,\t0.028831311373159137,\t\n0.028781332122574169,\t0.028731352800035869,\t0.028681373405669189,\t0.028631393939598630,\t0.028581414401950032,\t0.028531434792847896,\t0.028481455112417176,\t0.028431475360782370,\t\n0.028381495538069325,\t0.028331515644402536,\t0.028281535679906517,\t0.028231555644707102,\t0.028181575538928798,\t0.028131595362696556,\t0.028081615116134880,\t0.028031634799369608,\t\n0.027981654412525252,\t0.027931673955726762,\t0.027881693429098641,\t0.027831712832766729,\t0.027781732166855536,\t0.027731751431490013,\t0.027681770626794666,\t0.027631789752895340,\t\n0.027581808809916536,\t0.027531827797983213,\t0.027481846717219875,\t0.027431865567752362,\t0.027381884349705187,\t0.027331903063202857,\t0.027281921708371216,\t0.027231940285334769,\t\n0.027181958794218471,\t0.027131977235146831,\t0.027081995608245691,\t0.027032013913639564,\t0.026982032151453401,\t0.026932050321811715,\t0.026882068424840349,\t0.026832086460663811,\t\n0.026782104429407053,\t0.026732122331194593,\t0.026682140166152273,\t0.026632157934404599,\t0.026582175636076531,\t0.026532193271292581,\t0.026482210840178589,\t0.026432228342859073,\t\n0.026382245779458541,\t0.026332263150102841,\t0.026282280454916481,\t0.026232297694024419,\t0.026182314867551168,\t0.026132331975622577,\t0.026082349018363156,\t0.026032365995897859,\t\n0.025982382908351205,\t0.025932399755849038,\t0.025882416538515873,\t0.025832433256476665,\t0.025782449909855929,\t0.025732466498779513,\t0.025682483023371932,\t0.025632499483758141,\t\n0.025582515880062658,\t0.025532532212411332,\t0.025482548480928673,\t0.025432564685739199,\t0.025382580826968759,\t0.025332596904741864,\t0.025282612919183479,\t0.025232628870418116,\t\n0.025182644758571626,\t0.025132660583768524,\t0.025082676346133773,\t0.025032692045791883,\t0.024982707682868709,\t0.024932723257488767,\t0.024882738769777014,\t0.024832754219857971,\t\n0.024782769607857486,\t0.024732784933900080,\t0.024682800198110710,\t0.024632815400613895,\t0.024582830541535483,\t0.024532845620999999,\t0.024482860639132398,\t0.024432875596057203,\t\n0.024382890491900264,\t0.024332905326786097,\t0.024282920100839222,\t0.024232934814185494,\t0.024182949466949426,\t0.024132964059255985,\t0.024082978591229692,\t0.024032993062996392,\t\n0.023983007474680611,\t0.023933021826407313,\t0.023883036118301018,\t0.023833050350487574,\t0.023783064523091504,\t0.023733078636237772,\t0.023683092690050901,\t0.023633106684656742,\t\n0.023583120620179816,\t0.023533134496745090,\t0.023483148314477082,\t0.023433162073501646,\t0.023383175773943308,\t0.023333189415926586,\t0.023283202999577333,\t0.023233216525020074,\t\n0.023183229992379772,\t0.023133243401780954,\t0.023083256753349466,\t0.023033270047209842,\t0.022983283283487040,\t0.022933296462305585,\t0.022883309583791336,\t0.022833322648068810,\t\n0.022783335655262978,\t0.022733348605498364,\t0.022683361498900823,\t0.022633374335594876,\t0.022583387115705494,\t0.022533399839357201,\t0.022483412506675852,\t0.022433425117785972,\t\n0.022383437672812083,\t0.022333450171880046,\t0.022283462615114383,\t0.022233475002640064,\t0.022183487334581614,\t0.022133499611064887,\t0.022083511832214416,\t0.022033523998155162,\t\n0.021983536109011652,\t0.021933548164909750,\t0.021883560165973974,\t0.021833572112329301,\t0.021783584004100253,\t0.021733595841412687,\t0.021683607624391133,\t0.021633619353160560,\t\n0.021583631027845492,\t0.021533642648571792,\t0.021483654215463988,\t0.021433665728647047,\t0.021383677188245496,\t0.021333688594385197,\t0.021283699947190676,\t0.021233711246786462,\t\n0.021183722493298415,\t0.021133733686851060,\t0.021083744827569369,\t0.021033755915577875,\t0.020983766951002434,\t0.020933777933967578,\t0.020883788864598275,\t0.020833799743019056,\t\n0.020783810569355781,\t0.020733821343732979,\t0.020683832066275627,\t0.020633842737108249,\t0.020583853356356707,\t0.020533863924145534,\t0.020483874440599698,\t0.020433884905843733,\t\n0.020383895320003502,\t0.020333905683203531,\t0.020283915995568353,\t0.020233926257223825,\t0.020183936468294486,\t0.020133946628905303,\t0.020083956739180810,\t0.020033966799246870,\t\n0.019983976809228015,\t0.019933986769249214,\t0.019883996679435006,\t0.019834006539911245,\t0.019784016350802472,\t0.019734026112233658,\t0.019684035824329333,\t0.019634045487215365,\t\n0.019584055101016278,\t0.019534064665857057,\t0.019484074181862231,\t0.019434083649157663,\t0.019384093067867886,\t0.019334102438117430,\t0.019284111760032165,\t0.019234121033736621,\t\n0.019184130259355770,\t0.019134139437014152,\t0.019084148566837631,\t0.019034157648950736,\t0.018984166683478448,\t0.018934175670545301,\t0.018884184610277157,\t0.018834193502798552,\t\n0.018784202348234462,\t0.018734211146709423,\t0.018684219898349300,\t0.018634228603278628,\t0.018584237261622383,\t0.018534245873505103,\t0.018484254439052650,\t0.018434262958389562,\t\n0.018384271431640373,\t0.018334279858930949,\t0.018284288240385825,\t0.018234296576129981,\t0.018184304866287953,\t0.018134313110985605,\t0.018084321310347474,\t0.018034329464498539,\t\n0.017984337573563339,\t0.017934345637667739,\t0.017884353656936271,\t0.017834361631493923,\t0.017784369561465226,\t0.017734377446976046,\t0.017684385288150927,\t0.017634393085114840,\t\n0.017584400837992332,\t0.017534408546909262,\t0.017484416211990171,\t0.017434423833360042,\t0.017384431411143406,\t0.017334438945466137,\t0.017284446436452772,\t0.017234453884227844,\t\n0.017184461288917225,\t0.017134468650645454,\t0.017084475969537515,\t0.017034483245717939,\t0.016984490479312598,\t0.016934497670446032,\t0.016884504819243220,\t0.016834511925828705,\t\n0.016784518990328352,\t0.016734526012866704,\t0.016684532993568736,\t0.016634539932558996,\t0.016584546829963350,\t0.016534553685906336,\t0.016484560500512935,\t0.016434567273907692,\t\n0.016384574006216474,\t0.016334580697563824,\t0.016284587348074274,\t0.016234593957873703,\t0.016184600527086642,\t0.016134607055838083,\t0.016084613544252564,\t0.016034619992455954,\t\n0.015984626400572792,\t0.015934632768728065,\t0.015884639097046314,\t0.015834645385653406,\t0.015784651634673887,\t0.015734657844232738,\t0.015684664014454501,\t0.015634670145465050,\t\n0.015584676237388920,\t0.015534682290351100,\t0.015484688304476132,\t0.015434694279889886,\t0.015384700216716904,\t0.015334706115081729,\t0.015284711975110232,\t0.015234717796926953,\t\n0.015184723580656883,\t0.015134729326424557,\t0.015084735034355853,\t0.015034740704575313,\t0.014984746337207918,\t0.014934751932378216,\t0.014884757490212076,\t0.014834763010834045,\t\n0.014784768494369103,\t0.014734773940941798,\t0.014684779350678002,\t0.014634784723702257,\t0.014584790060139552,\t0.014534795360114426,\t0.014484800623752755,\t0.014434805851179084,\t\n0.014384811042518398,\t0.014334816197895240,\t0.014284821317435487,\t0.014234826401263679,\t0.014184831449504361,\t0.014134836462283409,\t0.014084841439725366,\t0.014034846381955219,\t\n0.013984851289097513,\t0.013934856161278122,\t0.013884860998621591,\t0.013834865801252906,\t0.013784870569296614,\t0.013734875302878589,\t0.013684880002123376,\t0.013634884667155962,\t\n0.013584889298100894,\t0.013534893895084046,\t0.013484898458229963,\t0.013434902987663635,\t0.013384907483509605,\t0.013334911945893750,\t0.013284916374940616,\t0.013234920770774745,\t\n0.013184925133522018,\t0.013134929463306978,\t0.013084933760254613,\t0.013034938024489471,\t0.012984942256137427,\t0.012934946455323027,\t0.012884950622171262,\t0.012834954756806675,\t\n0.012784958859355147,\t0.012734962929941222,\t0.012684966968689888,\t0.012634970975725694,\t0.012584974951174515,\t0.012534978895160901,\t0.012484982807809837,\t0.012434986689245874,\t\n0.012384990539594886,\t0.012334994358981425,\t0.012284998147530032,\t0.012235001905366588,\t0.012185005632615639,\t0.012135009329402176,\t0.012085012995850746,\t0.012035016632087227,\t\n0.011985020238236168,\t0.011935023814422557,\t0.011885027360770942,\t0.011835030877407202,\t0.011785034364455887,\t0.011735037822041985,\t0.011685041250290044,\t0.011635044649325946,\t\n0.011585048019274234,\t0.011535051360259903,\t0.011485054672407499,\t0.011435057955842903,\t0.011385061210690661,\t0.011335064437075324,\t0.011285067635122768,\t0.011235070804957545,\t\n0.011185073946704644,\t0.011135077060488613,\t0.011085080146435333,\t0.011035083204669355,\t0.010985086235315668,\t0.010935089238498820,\t0.010885092214344695,\t0.010835095162977839,\t\n0.010785098084523244,\t0.010735100979105461,\t0.010685103846850369,\t0.010635106687882517,\t0.010585109502326899,\t0.010535112290308063,\t0.010485115051951890,\t0.010435117787382930,\t\n0.010385120496726175,\t0.010335123180106175,\t0.010285125837648811,\t0.010235128469478633,\t0.010185131075720189,\t0.010135133656499361,\t0.010085136211940699,\t0.010035138742169197,\t\n0.009985141247309405,\t0.009935143727487203,\t0.009885146182827142,\t0.009835148613454215,\t0.009785151019492972,\t0.009735153401069296,\t0.009685155758307737,\t0.009635158091333288,\t\n0.009585160400270500,\t0.009535162685245254,\t0.009485164946382102,\t0.009435167183806039,\t0.009385169397641613,\t0.009335171588014706,\t0.009285173755049872,\t0.009235175898871659,\t\n0.009185178019605951,\t0.009135180117377297,\t0.009085182192310694,\t0.009035184244530689,\t0.008985186274163171,\t0.008935188281332685,\t0.008885190266164227,\t0.008835192228782351,\t\n0.008785194169312938,\t0.008735196087880540,\t0.008685197984610153,\t0.008635199859626325,\t0.008585201713054942,\t0.008535203545020555,\t0.008485205355648159,\t0.008435207145062306,\t\n0.008385208913388878,\t0.008335210660752429,\t0.008285212387277509,\t0.008235214093090002,\t0.008185215778314459,\t0.008135217443075878,\t0.008085219087498808,\t0.008035220711709135,\t\n0.007985222315831410,\t0.007935223899990629,\t0.007885225464311346,\t0.007835227008919440,\t0.007785228533939469,\t0.007735230039496426,\t0.007685231525714864,\t0.007635232992720667,\t\n0.007585234440638388,\t0.007535235869593022,\t0.007485237279709124,\t0.007435238671112575,\t0.007385240043927930,\t0.007335241398280185,\t0.007285242734293892,\t0.007235244052094937,\t\n0.007185245351807872,\t0.007135246633557249,\t0.007085247897468953,\t0.007035249143667537,\t0.006985250372277999,\t0.006935251583424892,\t0.006885252777234099,\t0.006835253953830174,\t\n0.006785255113338114,\t0.006735256255882473,\t0.006685257381589134,\t0.006635258490582652,\t0.006585259582988025,\t0.006535260658929804,\t0.006485261718533876,\t0.006435262761924793,\t\n0.006385263789227553,\t0.006335264800566710,\t0.006285265796068149,\t0.006235266775856423,\t0.006185267740056086,\t0.006135268688793025,\t0.006085269622191791,\t0.006035270540377383,\t\n0.005985271443474355,\t0.005935272331608592,\t0.005885273204904649,\t0.005835274063487523,\t0.005785274907481767,\t0.005735275737013268,\t0.005685276552206580,\t0.005635277353186701,\t\n0.005585278140078183,\t0.005535278913006915,\t0.005485279672097450,\t0.005435280417474785,\t0.005385281149263474,\t0.005335281867589406,\t0.005285282572577133,\t0.005235283264351209,\t\n0.005185283943037521,\t0.005135284608760623,\t0.005085285261645514,\t0.005035285901816748,\t0.004985286529400210,\t0.004935287144520456,\t0.004885287747302485,\t0.004835288337870850,\t\n0.004785288916351439,\t0.004735289482868805,\t0.004685290037547947,\t0.004635290580513421,\t0.004585291111891111,\t0.004535291631805574,\t0.004485292140381809,\t0.004435292637744368,\t\n0.004385293124019140,\t0.004335293599330679,\t0.004285294063803541,\t0.004235294517563611,\t0.004185294960735444,\t0.004135295393444041,\t0.004085295815813955,\t0.004035296227971073,\t\n0.003985296630039951,\t0.003935297022145587,\t0.003885297404412537,\t0.003835297776966687,\t0.003785298139932593,\t0.003735298493435253,\t0.003685298837599223,\t0.003635299172550391,\t\n0.003585299498413309,\t0.003535299815312980,\t0.003485300123373957,\t0.003435300422722127,\t0.003385300713482047,\t0.003335300995778715,\t0.003285301269736686,\t0.003235301535481848,\t\n0.003185301793138756,\t0.003135302042831966,\t0.003085302284687364,\t0.003035302518829507,\t0.002985302745383394,\t0.002935302964473579,\t0.002885303176225952,\t0.002835303380765067,\t\n0.002785303578215922,\t0.002735303768703075,\t0.002685303952352413,\t0.002635304129288491,\t0.002585304299636308,\t0.002535304463520421,\t0.002485304621066716,\t0.002435304772399750,\t\n0.002385304917644522,\t0.002335305056925588,\t0.002285305190368835,\t0.002235305318098819,\t0.002185305440240096,\t0.002135305556918553,\t0.002085305668258747,\t0.002035305774385676,\t\n0.001985305875423896,\t0.001935305971499296,\t0.001885306062736431,\t0.001835306149260301,\t0.001785306231195462,\t0.001735306308667801,\t0.001685306381801874,\t0.001635306450722681,\t\n0.001585306515554778,\t0.001535306576424053,\t0.001485306633455062,\t0.001435306686772804,\t0.001385306736501835,\t0.001335306782768043,\t0.001285306825695984,\t0.001235306865410214,\t\n0.001185306902036622,\t0.001135306935699761,\t0.001085306966524634,\t0.001035306994635795,\t0.000985307020159133,\t0.000935307043219203,\t0.000885307063941005,\t0.000835307082449096,\t\n0.000785307098869363,\t0.000735307113326362,\t0.000685307125945094,\t0.000635307136850113,\t0.000585307146167309,\t0.000535307154021237,\t0.000485307160536898,\t0.000435307165838846,\t\n0.000385307170052970,\t0.000335307173303827,\t0.000285307175716415,\t0.000235307177415291,\t0.000185307178526344,\t0.000135307179174129,\t0.000085307179483201,\t0.000035307179579450,\t\n-0.000014692820412569,\t-0.000064692820367856,\t-0.000114692820161855,\t-0.000164692819668678,\t-0.000214692818763769,\t-0.000264692817322128,\t-0.000314692815219199,\t-0.000364692812329094,\t\n-0.000414692808527257,\t-0.000464692803688688,\t-0.000514692797688831,\t-0.000564692790401798,\t-0.000614692781703032,\t-0.000664692771467535,\t-0.000714692759570750,\t-0.000764692745886789,\t\n-0.000814692730291096,\t-0.000864692712659116,\t-0.000914692692864960,\t-0.000964692670784071,\t-0.001014692646291452,\t-0.001064692619262544,\t-0.001114692589571461,\t-0.001164692557093647,\t\n-0.001214692521704101,\t-0.001264692483278268,\t-0.001314692441690259,\t-0.001364692396815520,\t-0.001414692348529050,\t-0.001464692296706292,\t-0.001514692241221360,\t-0.001564692181949697,\t\n-0.001614692118766304,\t-0.001664692051546625,\t-0.001714691980164771,\t-0.001764691904496188,\t-0.001814691824416319,\t-0.001864691739799276,\t-0.001914691650520504,\t-0.001964691556455003,\t\n-0.002014691457478216,\t-0.002064691353464257,\t-0.002114691244288570,\t-0.002164691129826155,\t-0.002214691009952456,\t-0.002264690884541585,\t-0.002314690753468987,\t-0.002364690616609663,\t\n-0.002414690473839055,\t-0.002464690325031278,\t-0.002514690170061775,\t-0.002564690008805546,\t-0.002614689841138036,\t-0.002664689666933358,\t-0.002714689486066956,\t-0.002764689298414273,\t\n-0.002814689103849424,\t-0.002864688902247852,\t-0.002914688693484557,\t-0.002964688477434985,\t-0.003014688253973248,\t-0.003064688022974790,\t-0.003114687784314611,\t-0.003164687537868158,\t\n-0.003214687283509542,\t-0.003264687021114207,\t-0.003314686750557155,\t-0.003364686471713830,\t-0.003414686184458345,\t-0.003464685888666144,\t-0.003514685584212229,\t-0.003564685270972043,\t\n-0.003614684948819701,\t-0.003664684617630646,\t-0.003714684277279879,\t-0.003764683927642846,\t-0.003814683568593659,\t-0.003864683200007764,\t-0.003914682821760604,\t-0.003964682433726293,\t\n-0.004014682035780276,\t-0.004064681627797554,\t-0.004114681209653572,\t-0.004164680781222442,\t-0.004214680342379612,\t-0.004264679893000080,\t-0.004314679432959292,\t-0.004364678962131362,\t\n-0.004414678480391734,\t-0.004464677987615410,\t-0.004514677483677836,\t-0.004564676968453123,\t-0.004614676441816718,\t-0.004664675903643622,\t-0.004714675353809280,\t-0.004764674792187806,\t\n-0.004814674218654644,\t-0.004864673633085242,\t-0.004914673035353711,\t-0.004964672425335498,\t-0.005014671802905603,\t-0.005064671167939473,\t-0.005114670520311221,\t-0.005164669859896293,\t\n-0.005214669186569690,\t-0.005264668500206859,\t-0.005314667800681912,\t-0.005364667087870295,\t-0.005414666361647010,\t-0.005464665621887505,\t-0.005514664868465890,\t-0.005564664101257614,\t\n-0.005614663320137677,\t-0.005664662524981526,\t-0.005714661715663275,\t-0.005764660892058370,\t-0.005814660054042256,\t-0.005864659201489048,\t-0.005914658334274192,\t-0.005964657452272691,\t\n-0.006014656555359989,\t-0.006064655643410202,\t-0.006114654716298777,\t-0.006164653773900714,\t-0.006214652816091461,\t-0.006264651842745132,\t-0.006314650853737174,\t-0.006364649848942587,\t\n-0.006414648828236821,\t-0.006464647791493989,\t-0.006514646738589537,\t-0.006564645669398468,\t-0.006614644583796229,\t-0.006664643481656934,\t-0.006714642362856032,\t-0.006764641227268523,\t\n-0.006814640074769854,\t-0.006864638905234142,\t-0.006914637718536832,\t-0.006964636514553373,\t-0.007014635293157877,\t-0.007064634054225794,\t-0.007114632797632125,\t-0.007164631523252319,\t\n-0.007214630230960490,\t-0.007264628920632085,\t-0.007314627592142108,\t-0.007364626245366005,\t-0.007414624880177894,\t-0.007464623496453220,\t-0.007514622094066987,\t-0.007564620672894643,\t\n-0.007614619232810304,\t-0.007664617773689416,\t-0.007714616295406984,\t-0.007764614797838455,\t-0.007814613280857946,\t-0.007864611744340902,\t-0.007914610188162774,\t-0.007964608612197676,\t\n-0.008014607016321057,\t-0.008064605400407919,\t-0.008114603764333714,\t-0.008164602107972555,\t-0.008214600431199889,\t-0.008264598733890722,\t-0.008314597015920503,\t-0.008364595277163349,\t\n-0.008414593517494705,\t-0.008464591736789576,\t-0.008514589934923414,\t-0.008564588111770332,\t-0.008614586267205781,\t-0.008664584401104764,\t-0.008714582513342728,\t-0.008764580603793794,\t\n-0.008814578672333408,\t-0.008864576718837018,\t-0.008914574743178742,\t-0.008964572745234031,\t-0.009014570724877888,\t-0.009064568681985762,\t-0.009114566616431770,\t-0.009164564528091361,\t\n-0.009214562416839541,\t-0.009264560282551760,\t-0.009314558125102132,\t-0.009364555944366110,\t-0.009414553740218698,\t-0.009464551512535346,\t-0.009514549261190171,\t-0.009564546986058624,\t\n-0.009614544687015707,\t-0.009664542363936874,\t-0.009714540016696241,\t-0.009764537645169259,\t-0.009814535249231374,\t-0.009864532828756710,\t-0.009914530383620711,\t-0.009964527913698389,\t\n-0.010014525418865189,\t-0.010064522898995232,\t-0.010114520353963968,\t-0.010164517783646403,\t-0.010214515187917989,\t-0.010264512566652841,\t-0.010314509919726413,\t-0.010364507247013708,\t\n-0.010414504548390180,\t-0.010464501823729948,\t-0.010514499072908461,\t-0.010564496295800726,\t-0.010614493492282193,\t-0.010664490662226984,\t-0.010714487805510547,\t-0.010764484922007891,\t\n-0.010814482011594467,\t-0.010864479074144394,\t-0.010914476109533123,\t-0.010964473117636106,\t-0.011014470098327463,\t-0.011064467051482643,\t-0.011114463976976656,\t-0.011164460874684954,\t\n-0.011214457744481654,\t-0.011264454586242211,\t-0.011314451399841632,\t-0.011364448185155368,\t-0.011414444942057539,\t-0.011464441670423597,\t-0.011514438370128553,\t-0.011564435041047856,\t\n-0.011614431683055627,\t-0.011664428296027318,\t-0.011714424879837940,\t-0.011764421434362944,\t-0.011814417959476449,\t-0.011864414455053910,\t-0.011914410920970779,\t-0.011964407357101177,\t\n-0.012014403763320554,\t-0.012064400139503923,\t-0.012114396485526738,\t-0.012164392801263114,\t-0.012214389086588512,\t-0.012264385341377934,\t-0.012314381565506839,\t-0.012364377758849344,\t\n-0.012414373921280905,\t-0.012464370052676532,\t-0.012514366152911679,\t-0.012564362221860465,\t-0.012614358259398346,\t-0.012664354265400331,\t-0.012714350239741875,\t-0.012764346182297099,\t\n-0.012814342092941456,\t-0.012864337971550404,\t-0.012914333817998062,\t-0.012964329632159885,\t-0.013014325413910885,\t-0.013064321163126516,\t-0.013114316879680898,\t-0.013164312563449489,\t\n-0.013214308214307299,\t-0.013264303832129782,\t-0.013314299416791062,\t-0.013364294968166593,\t-0.013414290486131386,\t-0.013464285970560898,\t-0.013514281421329251,\t-0.013564276838311899,\t\n-0.013614272221383856,\t-0.013664267570420576,\t-0.013714262885296183,\t-0.013764258165886134,\t-0.013814253412065438,\t-0.013864248623709554,\t-0.013914243800692604,\t-0.013964238942890044,\t\n-0.014014234050177330,\t-0.014064229122428587,\t-0.014114224159519273,\t-0.014164219161324397,\t-0.014214214127719418,\t-0.014264209058578460,\t-0.014314203953776979,\t-0.014364198813189987,\t\n-0.014414193636692942,\t-0.014464188424159970,\t-0.014514183175466527,\t-0.014564177890487626,\t-0.014614172569098723,\t-0.014664167211173945,\t-0.014714161816588750,\t-0.014764156385218151,\t\n-0.014814150916937604,\t-0.014864145411621236,\t-0.014914139869144503,\t-0.014964134289382865,\t-0.015014128672210449,\t-0.015064123017502710,\t-0.015114117325134664,\t-0.015164111594981768,\t\n-0.015214105826918149,\t-0.015264100020819266,\t-0.015314094176560133,\t-0.015364088294016209,\t-0.015414082373061619,\t-0.015464076413571823,\t-0.015514070415421837,\t-0.015564064378487119,\t\n-0.015614058302641795,\t-0.015664052187761325,\t-0.015714046033720726,\t-0.015764039840395455,\t-0.015814033607659643,\t-0.015864027335388744,\t-0.015914021023458222,\t-0.015964014671742202,\t\n-0.016014008280116145,\t-0.016064001848455071,\t-0.016113995376634434,\t-0.016163988864528363,\t-0.016213982312012321,\t-0.016263975718961324,\t-0.016313969085250832,\t-0.016363962410754971,\t\n-0.016413955695349206,\t-0.016463948938908551,\t-0.016513942141308469,\t-0.016563935302423088,\t-0.016613928422127867,\t-0.016663921500297826,\t-0.016713914536808424,\t-0.016763907531533791,\t\n-0.016813900484349390,\t-0.016863893395130239,\t-0.016913886263751798,\t-0.016963879090088198,\t-0.017013871874014899,\t-0.017063864615407365,\t-0.017113857314139724,\t-0.017163849970087443,\t\n-0.017213842583125534,\t-0.017263835153129462,\t-0.017313827679973359,\t-0.017363820163532689,\t-0.017413812603682466,\t-0.017463805000298160,\t-0.017513797353253893,\t-0.017563789662425132,\t\n-0.017613781927686898,\t-0.017663774148914655,\t-0.017713766325982531,\t-0.017763758458765991,\t-0.017813750547140055,\t-0.017863742590980190,\t-0.017913734590160522,\t-0.017963726544556517,\t\n-0.018013718454043638,\t-0.018063710318496021,\t-0.018113702137789130,\t-0.018163693911797979,\t-0.018213685640398040,\t-0.018263677323463443,\t-0.018313668960869653,\t-0.018363660552491688,\t\n-0.018413652098205020,\t-0.018463643597883776,\t-0.018513635051403420,\t-0.018563626458638981,\t-0.018613617819465918,\t-0.018663609133758367,\t-0.018713600401391792,\t-0.018763591622241213,\t\n-0.018813582796182105,\t-0.018863573923088593,\t-0.018913565002836145,\t-0.018963556035300231,\t-0.019013547020354980,\t-0.019063537957875864,\t-0.019113528847737902,\t-0.019163519689816565,\t\n-0.019213510483985979,\t-0.019263501230121622,\t-0.019313491928098510,\t-0.019363482577792111,\t-0.019413473179076563,\t-0.019463463731827332,\t-0.019513454235919443,\t-0.019563444691228359,\t\n-0.019613435097628223,\t-0.019663425454994495,\t-0.019713415763202208,\t-0.019763406022126822,\t-0.019813396231642480,\t-0.019863386391624643,\t-0.019913376501948788,\t-0.019963366562489048,\t\n-0.020013356573120887,\t-0.020063346533719339,\t-0.020113336444159868,\t-0.020163326304316612,\t-0.020213316114065037,\t-0.020263305873280176,\t-0.020313295581837493,\t-0.020363285239611124,\t\n-0.020413274846476547,\t-0.020463264402308778,\t-0.020513253906983296,\t-0.020563243360374236,\t-0.020613232762357065,\t-0.020663222112806811,\t-0.020713211411598948,\t-0.020763200658607612,\t\n-0.020813189853708274,\t-0.020863178996775960,\t-0.020913168087686142,\t-0.020963157126312963,\t-0.021013146112531890,\t-0.021063135046218397,\t-0.021113123927246621,\t-0.021163112755492035,\t\n-0.021213101530829667,\t-0.021263090253134991,\t-0.021313078922282142,\t-0.021363067538146596,\t-0.021413056100603383,\t-0.021463044609527974,\t-0.021513033064794511,\t-0.021563021466278462,\t\n-0.021613009813854861,\t-0.021662998107399179,\t-0.021712986346785559,\t-0.021762974531889471,\t-0.021812962662585946,\t-0.021862950738750463,\t-0.021912938760257156,\t-0.021962926726981500,\t\n-0.022012914638798974,\t-0.022062902495583719,\t-0.022112890297211203,\t-0.022162878043556464,\t-0.022212865734494977,\t-0.022262853369900876,\t-0.022312840949649644,\t-0.022362828473616311,\t\n-0.022412815941676351,\t-0.022462803353703903,\t-0.022512790709574453,\t-0.022562778009163020,\t-0.022612765252345089,\t-0.022662752438994800,\t-0.022712739568987630,\t-0.022762726642198614,\t\n-0.022812713658503223,\t-0.022862700617775601,\t-0.022912687519891232,\t-0.022962674364725585,\t-0.023012661152152811,\t-0.023062647882048381,\t-0.023112634554287335,\t-0.023162621168745144,\t\n-0.023212607725295958,\t-0.023262594223815249,\t-0.023312580664178059,\t-0.023362567046259858,\t-0.023412553369934797,\t-0.023462539635078352,\t-0.023512525841565560,\t-0.023562511989271895,\t\n-0.023612498078071507,\t-0.023662484107839873,\t-0.023712470078452029,\t-0.023762455989783451,\t-0.023812441841708294,\t-0.023862427634102030,\t-0.023912413366839698,\t-0.023962399039796776,\t\n-0.024012384652847413,\t-0.024062370205867087,\t-0.024112355698731280,\t-0.024162341131314140,\t-0.024212326503491147,\t-0.024262311815137338,\t-0.024312297066128193,\t-0.024362282256337863,\t\n-0.024412267385641825,\t-0.024462252453915121,\t-0.024512237461033228,\t-0.024562222406870299,\t-0.024612207291301813,\t-0.024662192114202806,\t-0.024712176875448768,\t-0.024762161574913840,\t\n-0.024812146212473508,\t-0.024862130788002812,\t-0.024912115301377234,\t-0.024962099752470924,\t-0.025012084141159362,\t-0.025062068467318035,\t-0.025112052730821094,\t-0.025162036931544018,\t\n-0.025212021069361851,\t-0.025262005144150078,\t-0.025311989155782845,\t-0.025361973104135641,\t-0.025411956989083502,\t-0.025461940810501918,\t-0.025511924568265034,\t-0.025561908262248342,\t\n-0.025611891892326877,\t-0.025661875458376129,\t-0.025711858960270246,\t-0.025761842397884715,\t-0.025811825771094581,\t-0.025861809079775325,\t-0.025911792323801100,\t-0.025961775503047398,\t\n-0.026011758617389698,\t-0.026061741666702158,\t-0.026111724650860268,\t-0.026161707569739061,\t-0.026211690423214033,\t-0.026261673211159332,\t-0.026311655933450449,\t-0.026361638589962429,\t\n-0.026411621180570753,\t-0.026461603705149581,\t-0.026511586163574401,\t-0.026561568555720252,\t-0.026611550881462630,\t-0.026661533140675684,\t-0.026711515333234907,\t-0.026761497459015342,\t\n-0.026811479517892475,\t-0.026861461509740465,\t-0.026911443434434804,\t-0.026961425291850975,\t-0.027011407081863142,\t-0.027061388804346789,\t-0.027111370459176967,\t-0.027161352046229159,\t\n-0.027211333565377530,\t-0.027261315016497565,\t-0.027311296399464315,\t-0.027361277714153264,\t-0.027411258960438580,\t-0.027461240138195744,\t-0.027511221247299811,\t-0.027561202287626266,\t\n-0.027611183259049273,\t-0.027661164161444322,\t-0.027711144994686462,\t-0.027761125758651181,\t-0.027811106453212640,\t-0.027861087078246336,\t-0.027911067633627315,\t-0.027961048119231065,\t\n-0.028011028534931755,\t-0.028061008880604872,\t-0.028110989156125910,\t-0.028160969361369033,\t-0.028210949496209729,\t-0.028260929560523056,\t-0.028310909554184499,\t-0.028360889477068225,\t\n-0.028410869329049730,\t-0.028460849110004058,\t-0.028510828819806711,\t-0.028560808458331845,\t-0.028610788025454959,\t-0.028660767521051102,\t-0.028710746944995771,\t-0.028760726297163131,\t\n-0.028810705577428673,\t-0.028860684785667449,\t-0.028910663921754960,\t-0.028960642985565367,\t-0.029010621976974165,\t-0.029060600895856853,\t-0.029110579742087594,\t-0.029160558515541887,\t\n-0.029210537216094783,\t-0.029260515843621781,\t-0.029310494397997044,\t-0.029360472879096072,\t-0.029410451286793919,\t-0.029460429620966080,\t-0.029510407881486723,\t-0.029560386068231345,\t\n-0.029610364181075002,\t-0.029660342219893197,\t-0.029710320184560088,\t-0.029760298074951178,\t-0.029810275890941526,\t-0.029860253632406627,\t-0.029910231299220651,\t-0.029960208891259096,\t\n-0.030010186408397463,\t-0.030060163850509917,\t-0.030110141217471964,\t-0.030160118509158659,\t-0.030210095725445502,\t-0.030260072866206657,\t-0.030310049931317636,\t-0.030360026920653486,\t\n-0.030410003834089715,\t-0.030459980671500488,\t-0.030509957432761310,\t-0.030559934117747239,\t-0.030609910726333778,\t-0.030659887258395097,\t-0.030709863713806695,\t-0.030759840092443636,\t\n-0.030809816394181417,\t-0.030859792618894218,\t-0.030909768766457534,\t-0.030959744836746430,\t-0.031009720829636406,\t-0.031059696745001638,\t-0.031109672582717626,\t-0.031159648342659878,\t\n-0.031209624024702565,\t-0.031259599628721192,\t-0.031309575154590819,\t-0.031359550602186953,\t-0.031409525971383766,\t-0.031459501262056766,\t-0.031509476474081012,\t-0.031559451607332006,\t\n-0.031609426661683933,\t-0.031659401637012294,\t-0.031709376533192148,\t-0.031759351350099004,\t-0.031809326087607039,\t-0.031859300745591762,\t-0.031909275323928225,\t-0.031959249822491952,\t\n-0.032009224241157104,\t-0.032059198579799199,\t-0.032109172838293738,\t-0.032159147016514907,\t-0.032209121114338206,\t-0.032259095131638701,\t-0.032309069068291903,\t-0.032359042924171987,\t\n-0.032409016699154469,\t-0.032458990393114402,\t-0.032508964005927309,\t-0.032558937537467358,\t-0.032608910987610061,\t-0.032658884356230489,\t-0.032708857643204151,\t-0.032758830848405224,\t\n-0.032808803971709224,\t-0.032858777012991211,\t-0.032908749972126700,\t-0.032958722848989867,\t-0.033008695643456230,\t-0.033058668355401298,\t-0.033108640984699247,\t-0.033158613531225602,\t\n-0.033208585994855419,\t-0.033258558375464209,\t-0.033308530672926169,\t-0.033358502887116795,\t-0.033408475017911166,\t-0.033458447065184797,\t-0.033508419028811860,\t-0.033558390908667877,\t\n-0.033608362704627921,\t-0.033658334416567501,\t-0.033708306044360800,\t-0.033758277587883329,\t-0.033808249047010172,\t-0.033858220421616833,\t-0.033908191711577496,\t-0.033958162916767683,\t\n-0.034008134037062911,\t-0.034058105072337350,\t-0.034108076022466537,\t-0.034158046887325523,\t-0.034208017666789846,\t-0.034257988360733675,\t-0.034307958969032534,\t-0.034357929491561495,\t\n-0.034407899928196074,\t-0.034457870278810462,\t-0.034507840543280176,\t-0.034557810721480287,\t-0.034607780813286318,\t-0.034657750818572454,\t-0.034707720737214204,\t-0.034757690569086661,\t\n-0.034807660314065333,\t-0.034857629972024406,\t-0.034907599542839410,\t-0.034957569026385416,\t-0.035007538422537940,\t-0.035057507731171174,\t-0.035107476952160634,\t-0.035157446085381849,\t\n-0.035207415130709012,\t-0.035257384088017631,\t-0.035307352957182792,\t-0.035357321738080011,\t-0.035407290430583480,\t-0.035457259034568728,\t-0.035507227549910828,\t-0.035557195976485302,\t\n-0.035607164314166342,\t-0.035657132562829472,\t-0.035707100722349769,\t-0.035757068792602757,\t-0.035807036773462635,\t-0.035857004664804917,\t-0.035906972466504691,\t-0.035956940178437473,\t\n-0.036006907800477460,\t-0.036056875332500182,\t-0.036106842774381157,\t-0.036156810125994580,\t-0.036206777387215977,\t-0.036256744557920433,\t-0.036306711637983477,\t-0.036356678627279287,\t\n-0.036406645525683408,\t-0.036456612333070910,\t-0.036506579049317332,\t-0.036556545674296857,\t-0.036606512207885022,\t-0.036656478649956900,\t-0.036706445000388034,\t-0.036756411259052602,\t\n-0.036806377425826146,\t-0.036856343500583748,\t-0.036906309483200936,\t-0.036956275373551908,\t-0.037006241171512189,\t-0.037056206876957307,\t-0.037106172489761467,\t-0.037156138009800194,\t\n-0.037206103436948579,\t-0.037256068771082153,\t-0.037306034012075107,\t-0.037355999159802970,\t-0.037405964214140844,\t-0.037455929174964243,\t-0.037505894042147381,\t-0.037555858815565786,\t\n-0.037605823495094538,\t-0.037655788080609182,\t-0.037705752571983907,\t-0.037755716969094251,\t-0.037805681271815307,\t-0.037855645480022598,\t-0.037905609593590336,\t-0.037955573612394045,\t\n-0.038005537536308823,\t-0.038055501365210201,\t-0.038105465098972384,\t-0.038155428737470895,\t-0.038205392280581285,\t-0.038255355728177752,\t-0.038305319080135826,\t-0.038355282336330607,\t\n-0.038405245496637624,\t-0.038455208560931084,\t-0.038505171529086522,\t-0.038555134400979026,\t-0.038605097176484145,\t-0.038655059855476070,\t-0.038705022437830354,\t-0.038754984923422074,\t\n-0.038804947312126782,\t-0.038854909603818676,\t-0.038904871798373299,\t-0.038954833895665737,\t-0.039004795895571535,\t-0.039054757797964898,\t-0.039104719602721369,\t-0.039154681309716485,\t\n-0.039204642918824452,\t-0.039254604429920813,\t-0.039304565842880668,\t-0.039354527157579547,\t-0.039404488373891662,\t-0.039454449491692564,\t-0.039504410510857332,\t-0.039554371431261524,\t\n-0.039604332252779345,\t-0.039654292975286332,\t-0.039704253598657584,\t-0.039754214122768652,\t-0.039804174547493736,\t-0.039854134872708391,\t-0.039904095098287698,\t-0.039954055224107221,\t\n-0.040004015250041158,\t-0.040053975175965054,\t-0.040103935001754458,\t-0.040153894727283583,\t-0.040203854352427973,\t-0.040253813877062720,\t-0.040303773301063384,\t-0.040353732624304160,\t\n-0.040403691846660615,\t-0.040453650968007834,\t-0.040503609988221376,\t-0.040553568907175444,\t-0.040603527724745590,\t-0.040653486440806921,\t-0.040703445055234974,\t-0.040753403567903974,\t\n-0.040803361978689466,\t-0.040853320287466549,\t-0.040903278494110774,\t-0.040953236598496368,\t-0.041003194600498866,\t-0.041053152499993820,\t-0.041103110296855448,\t-0.041153067990959302,\t\n-0.041203025582180482,\t-0.041252983070394544,\t-0.041302940455475709,\t-0.041352897737299520,\t-0.041402854915741083,\t-0.041452811990675957,\t-0.041502768961978360,\t-0.041552725829523837,\t\n-0.041602682593187494,\t-0.041652639252844896,\t-0.041702595808370255,\t-0.041752552259639121,\t-0.041802508606526609,\t-0.041852464848908269,\t-0.041902420986658327,\t-0.041952377019652327,\t\n-0.042002332947765383,\t-0.042052288770873053,\t-0.042102244488849562,\t-0.042152200101570454,\t-0.042202155608911295,\t-0.042252111010746295,\t-0.042302066306951019,\t-0.042352021497400583,\t\n-0.042401976581970535,\t-0.042451931560535103,\t-0.042501886432969836,\t-0.042551841199149856,\t-0.042601795858950721,\t-0.042651750412246649,\t-0.042701704858913204,\t-0.042751659198825495,\t\n-0.042801613431859079,\t-0.042851567557888187,\t-0.042901521576788379,\t-0.042951475488434761,\t-0.043001429292702904,\t-0.043051382989467028,\t-0.043101336578602698,\t-0.043151290059985463,\t\n-0.043201243433489564,\t-0.043251196698990552,\t-0.043301149856363554,\t-0.043351102905484121,\t-0.043401055846226493,\t-0.043451008678466220,\t-0.043500961402078424,\t-0.043550914016938676,\t\n-0.043600866522921194,\t-0.043650818919901545,\t-0.043700771207754847,\t-0.043750723386356667,\t-0.043800675455581237,\t-0.043850627415304114,\t-0.043900579265400426,\t-0.043950531005745731,\t\n-0.044000482636214269,\t-0.044050434156681598,\t-0.044100385567023288,\t-0.044150336867113567,\t-0.044200288056828005,\t-0.044250239136041723,\t-0.044300190104630280,\t-0.044350140962467928,\t\n-0.044400091709430219,\t-0.044450042345392279,\t-0.044499992870229682,\t-0.044549943283816659,\t-0.044599893586028776,\t-0.044649843776741159,\t-0.044699793855829374,\t-0.044749743823167661,\t\n-0.044799693678631590,\t-0.044849643422096283,\t-0.044899593053437312,\t-0.044949542572528915,\t-0.044999491979246665,\t-0.045049441273465683,\t-0.045099390455061540,\t-0.045149339523908476,\t\n-0.045199288479882069,\t-0.045249237322857877,\t-0.045299186052710154,\t-0.045349134669314464,\t-0.045399083172545936,\t-0.045449031562280147,\t-0.045498979838391330,\t-0.045548928000755072,\t\n-0.045598876049246485,\t-0.045648823983741156,\t-0.045698771804113324,\t-0.045748719510238560,\t-0.045798667101991999,\t-0.045848614579249214,\t-0.045898561941884450,\t-0.045948509189773279,\t\n-0.045998456322790836,\t-0.046048403340812692,\t-0.046098350243713102,\t-0.046148297031367629,\t-0.046198243703651866,\t-0.046248190260440046,\t-0.046298136701607748,\t-0.046348083027030113,\t\n-0.046398029236582712,\t-0.046447975330139793,\t-0.046497921307576934,\t-0.046547867168769276,\t-0.046597812913592392,\t-0.046647758541920534,\t-0.046697704053629274,\t-0.046747649448593762,\t\n-0.046797594726689568,\t-0.046847539887790939,\t-0.046897484931773460,\t-0.046947429858512274,\t-0.046997374667882952,\t-0.047047319359759754,\t-0.047097263934018259,\t-0.047147208390534039,\t\n-0.047197152729181360,\t-0.047247096949835803,\t-0.047297041052372500,\t-0.047346985036667039,\t-0.047396928902593671,\t-0.047446872650027977,\t-0.047496816278845104,\t-0.047546759788920638,\t\n-0.047596703180128826,\t-0.047646646452345252,\t-0.047696589605445067,\t-0.047746532639303854,\t-0.047796475553795861,\t-0.047846418348796681,\t-0.047896361024181454,\t-0.047946303579825766,\t\n-0.047996246015603879,\t-0.048046188331391376,\t-0.048096130527063845,\t-0.048146072602495545,\t-0.048196014557562068,\t-0.048245956392138550,\t-0.048295898106100583,\t-0.048345839699322428,\t\n-0.048395781171679676,\t-0.048445722523047470,\t-0.048495663753301402,\t-0.048545604862315725,\t-0.048595545849966046,\t-0.048645486716127492,\t-0.048695427460675671,\t-0.048745368083484841,\t\n-0.048795308584430583,\t-0.048845248963388058,\t-0.048895189220232858,\t-0.048945129354839231,\t-0.048995069367082790,\t-0.049045009256838669,\t-0.049094949023982475,\t-0.049144888668388460,\t\n-0.049194828189932226,\t-0.049244767588489363,\t-0.049294706863934140,\t-0.049344646016142149,\t-0.049394585044988538,\t-0.049444523950348915,\t-0.049494462732097538,\t-0.049544401390110002,\t\n-0.049594339924261460,\t-0.049644278334427513,\t-0.049694216620482429,\t-0.049744154782301805,\t-0.049794092819760792,\t-0.049844030732734988,\t-0.049893968521098668,\t-0.049943906184727424,\t\n-0.049993843723496419,\t-0.050043781137281237,\t-0.050093718425956169,\t-0.050143655589396804,\t-0.050193592627478738,\t-0.050243529540076250,\t-0.050293466327064940,\t-0.050343402988319963,\t\n-0.050393339523716926,\t-0.050443275933130090,\t-0.050493212216435067,\t-0.050543148373507013,\t-0.050593084404221535,\t-0.050643020308452899,\t-0.050692956086076713,\t-0.050742891736968131,\t\n-0.050792827261002774,\t-0.050842762658054895,\t-0.050892697928000115,\t-0.050942633070713589,\t-0.050992568086070930,\t-0.051042502973946399,\t-0.051092437734215616,\t-0.051142372366754174,\t\n-0.051192306871436367,\t-0.051242241248137789,\t-0.051292175496733608,\t-0.051342109617099431,\t-0.051392043609109539,\t-0.051441977472639532,\t-0.051491911207564592,\t-0.051541844813760306,\t\n-0.051591778291100975,\t-0.051641711639462191,\t-0.051691644858719125,\t-0.051741577948747397,\t-0.051791510909421280,\t-0.051841443740616382,\t-0.051891376442207877,\t-0.051941309014071381,\t\n-0.051991241456081159,\t-0.052041173768112840,\t-0.052091105950041579,\t-0.052141038001743002,\t-0.052190969923091385,\t-0.052240901713962347,\t-0.052290833374231495,\t-0.052340764903773117,\t\n-0.052390696302462826,\t-0.052440627570175792,\t-0.052490558706787635,\t-0.052540489712172643,\t-0.052590420586206416,\t-0.052640351328764143,\t-0.052690281939721438,\t-0.052740212418952583,\t\n-0.052790142766333197,\t-0.052840072981738449,\t-0.052890003065043968,\t-0.052939933016124034,\t-0.052989862834854268,\t-0.053039792521109845,\t-0.053089722074766380,\t-0.053139651495698173,\t\n-0.053189580783780832,\t-0.053239509938889984,\t-0.053289438960899924,\t-0.053339367849686257,\t-0.053389296605124176,\t-0.053439225227089299,\t-0.053489153715455907,\t-0.053539082070099636,\t\n-0.053589010290895661,\t-0.053638938377719603,\t-0.053688866330445756,\t-0.053738794148949741,\t-0.053788721833106741,\t-0.053838649382792383,\t-0.053888576797880956,\t-0.053938504078248087,\t\n-0.053988431223768958,\t-0.054038358234319191,\t-0.054088285109773093,\t-0.054138211850006272,\t-0.054188138454894376,\t-0.054238064924311685,\t-0.054287991258133828,\t-0.054337917456236000,\t\n-0.054387843518493816,\t-0.054437769444781584,\t-0.054487695234974924,\t-0.054537620888949027,\t-0.054587546406579521,\t-0.054637471787740713,\t-0.054687397032308217,\t-0.054737322140157231,\t\n-0.054787247111163381,\t-0.054837171945200977,\t-0.054887096642145639,\t-0.054937021201872556,\t-0.054986945624257363,\t-0.055036869909174370,\t-0.055086794056499196,\t-0.055136718066107482,\t\n-0.055186641937873530,\t-0.055236565671672976,\t-0.055286489267381000,\t-0.055336412724873253,\t-0.055386336044024022,\t-0.055436259224708954,\t-0.055486182266803241,\t-0.055536105170182516,\t\n-0.055586027934721081,\t-0.055635950560294578,\t-0.055685873046778203,\t-0.055735795394047584,\t-0.055785717601977036,\t-0.055835639670442187,\t-0.055885561599318248,\t-0.055935483388480846,\t\n-0.055985405037804289,\t-0.056035326547164220,\t-0.056085247916435835,\t-0.056135169145494775,\t-0.056185090234215349,\t-0.056235011182473198,\t-0.056284931990143956,\t-0.056334852657101947,\t\n-0.056384773183222804,\t-0.056434693568381732,\t-0.056484613812454364,\t-0.056534533915315023,\t-0.056584453876839344,\t-0.056634373696902530,\t-0.056684293375380224,\t-0.056734212912146746,\t\n-0.056784132307077732,\t-0.056834051560048386,\t-0.056883970670934363,\t-0.056933889639609964,\t-0.056983808465950837,\t-0.057033727149832195,\t-0.057083645691129677,\t-0.057133564089717599,\t\n-0.057183482345471610,\t-0.057233400458267365,\t-0.057283318427979173,\t-0.057333236254482681,\t-0.057383153937653100,\t-0.057433071477366079,\t-0.057482988873495934,\t-0.057532906125918319,\t\n-0.057582823234508439,\t-0.057632740199141941,\t-0.057682657019693155,\t-0.057732573696037723,\t-0.057782490228050855,\t-0.057832406615608206,\t-0.057882322858584100,\t-0.057932238956854183,\t\n-0.057982154910293668,\t-0.058032070718778216,\t-0.058081986382182135,\t-0.058131901900381096,\t-0.058181817273250738,\t-0.058231732500665399,\t-0.058281647582500727,\t-0.058331562518631939,\t\n-0.058381477308934684,\t-0.058431391953283292,\t-0.058481306451553423,\t-0.058531220803620290,\t-0.058581135009359540,\t-0.058631049068645517,\t-0.058680962981353869,\t-0.058730876747359814,\t\n-0.058780790366539007,\t-0.058830703838765784,\t-0.058880617163915801,\t-0.058930530341864275,\t-0.058980443372486868,\t-0.059030356255657911,\t-0.059080268991253057,\t-0.059130181579147532,\t\n-0.059180094019216999,\t-0.059230006311335792,\t-0.059279918455379561,\t-0.059329830451223982,\t-0.059379742298743383,\t-0.059429653997813428,\t-0.059479565548309334,\t-0.059529476950106776,\t\n-0.059579388203080078,\t-0.059629299307104908,\t-0.059679210262056491,\t-0.059729121067810496,\t-0.059779031724241254,\t-0.059828942231224432,\t-0.059878852588635248,\t-0.059928762796349386,\t\n-0.059978672854241168,\t-0.060028582762186269,\t-0.060078492520059909,\t-0.060128402127737769,\t-0.060178311585094173,\t-0.060228220892004802,\t-0.060278130048345320,\t-0.060328039053990076,\t\n-0.060377947908814726,\t-0.060427856612694508,\t-0.060477765165505099,\t-0.060527673567120827,\t-0.060577581817417368,\t-0.060627489916269962,\t-0.060677397863554271,\t-0.060727305659144644,\t\n-0.060777213302916751,\t-0.060827120794745823,\t-0.060877028134507544,\t-0.060926935322076242,\t-0.060976842357327608,\t-0.061026749240136867,\t-0.061076655970379694,\t-0.061126562547930439,\t\n-0.061176468972664780,\t-0.061226375244458384,\t-0.061276281363185615,\t-0.061326187328722137,\t-0.061376093140943194,\t-0.061425998799724463,\t-0.061475904304940286,\t-0.061525809656466354,\t\n-0.061575714854177899,\t-0.061625619897950595,\t-0.061675524787658802,\t-0.061725429523178194,\t-0.061775334104384010,\t-0.061825238531151940,\t-0.061875142803356327,\t-0.061925046920872862,\t\n-0.061974950883576775,\t-0.062024854691343750,\t-0.062074758344048152,\t-0.062124661841565655,\t-0.062174565183771950,\t-0.062224468370541387,\t-0.062274371401749649,\t-0.062324274277271989,\t\n-0.062374176996984082,\t-0.062424079560760293,\t-0.062473981968476297,\t-0.062523884220007361,\t-0.062573786315229141,\t-0.062623688254016027,\t-0.062673590036243676,\t-0.062723491661787367,\t\n-0.062773393130522756,\t-0.062823294442324235,\t-0.062873195597067472,\t-0.062923096594627720,\t-0.062972997434880662,\t-0.063022898117700676,\t-0.063072798642963432,\t-0.063122699010544209,\t\n-0.063172599220318676,\t-0.063222499272161198,\t-0.063272399165947471,\t-0.063322298901553192,\t-0.063372198478852726,\t-0.063422097897721755,\t-0.063471997158035545,\t-0.063521896259669794,\t\n-0.063571795202498851,\t-0.063621693986398414,\t-0.063671592611243749,\t-0.063721491076910539,\t-0.063771389383273161,\t-0.063821287530207313,\t-0.063871185517588247,\t-0.063921083345291660,\t\n-0.063970981013191916,\t-0.064020878521164726,\t-0.064070775869085342,\t-0.064120673056829447,\t-0.064170570084271447,\t-0.064220466951287011,\t-0.064270363657751850,\t-0.064320260203540328,\t\n-0.064370156588528168,\t-0.064420052812590611,\t-0.064469948875603367,\t-0.064519844777440813,\t-0.064569740517978647,\t-0.064619636097092120,\t-0.064669531514656958,\t-0.064719426770547511,\t\n-0.064769321864639504,\t-0.064819216796808188,\t-0.064869111566929274,\t-0.064919006174877142,\t-0.064968900620527500,\t-0.065018794903755603,\t-0.065068689024437160,\t-0.065118582982446549,\t\n-0.065168476777659481,\t-0.065218370409951654,\t-0.065268263879197472,\t-0.065318157185272632,\t-0.065368050328052388,\t-0.065417943307412477,\t-0.065467836123227249,\t-0.065517728775372430,\t\n-0.065567621263723300,\t-0.065617513588155554,\t-0.065667405748543586,\t-0.065717297744763106,\t-0.065767189576689367,\t-0.065817081244198106,\t-0.065866972747163702,\t-0.065916864085461865,\t\n-0.065966755258967863,\t-0.066016646267557419,\t-0.066066537111104925,\t-0.066116427789486079,\t-0.066166318302576160,\t-0.066216208650250893,\t-0.066266098832384657,\t-0.066315988848853188,\t\n-0.066365878699532171,\t-0.066415768384296026,\t-0.066465657903020461,\t-0.066515547255580745,\t-0.066565436441852602,\t-0.066615325461710437,\t-0.066665214315029947,\t-0.066715103001686427,\t\n-0.066764991521555586,\t-0.066814879874511832,\t-0.066864768060430874,\t-0.066914656079187992,\t-0.066964543930658912,\t-0.067014431614718040,\t-0.067064319131241085,\t-0.067114206480103328,\t\n-0.067164093661180507,\t-0.067213980674347001,\t-0.067263867519478535,\t-0.067313754196450859,\t-0.067363640705138353,\t-0.067413527045416727,\t-0.067463413217161303,\t-0.067513299220247777,\t\n-0.067563185054550570,\t-0.067613070719945392,\t-0.067662956216307552,\t-0.067712841543512745,\t-0.067762726701435405,\t-0.067812611689951244,\t-0.067862496508935555,\t-0.067912381158264062,\t\n-0.067962265637811173,\t-0.068012149947452624,\t-0.068062034087063711,\t-0.068111918056520143,\t-0.068161801855696341,\t-0.068211685484468029,\t-0.068261568942710946,\t-0.068311452230299496,\t\n-0.068361335347109420,\t-0.068411218293016010,\t-0.068461101067894992,\t-0.068510983671620784,\t-0.068560866104069113,\t-0.068610748365115271,\t-0.068660630454635010,\t-0.068710512372502724,\t\n-0.068760394118594165,\t-0.068810275692784612,\t-0.068860157094949817,\t-0.068910038324964187,\t-0.068959919382703461,\t-0.069009800268042931,\t-0.069059680980858351,\t-0.069109561521024127,\t\n-0.069159441888415996,\t-0.069209322082909697,\t-0.069259202104379650,\t-0.069309081952701607,\t-0.069358961627750862,\t-0.069408841129403140,\t-0.069458720457532888,\t-0.069508599612015817,\t\n-0.069558478592727263,\t-0.069608357399542950,\t-0.069658236032337298,\t-0.069708114490986059,\t-0.069757992775364541,\t-0.069807870885348469,\t-0.069857748820812290,\t-0.069907626581631729,\t\n-0.069957504167682108,\t-0.070007381578839165,\t-0.070057258814977333,\t-0.070107135875972351,\t-0.070157012761699528,\t-0.070206889472034614,\t-0.070256766006852031,\t-0.070306642366027544,\t\n-0.070356518549436878,\t-0.070406394556954480,\t-0.070456270388456102,\t-0.070506146043817039,\t-0.070556021522913057,\t-0.070605896825618589,\t-0.070655771951809360,\t-0.070705646901360719,\t\n-0.070755521674148392,\t-0.070805396270046825,\t-0.070855270688931757,\t-0.070905144930678524,\t-0.070955018995162863,\t-0.071004892882259210,\t-0.071054766591843330,\t-0.071104640123790544,\t\n-0.071154513477976578,\t-0.071204386654275906,\t-0.071254259652564253,\t-0.071304132472717399,\t-0.071354005114609778,\t-0.071403877578117142,\t-0.071453749863114799,\t-0.071503621969478542,\t\n-0.071553493897082779,\t-0.071603365645803274,\t-0.071653237215515364,\t-0.071703108606094801,\t-0.071752979817416018,\t-0.071802850849354796,\t-0.071852721701786443,\t-0.071902592374586724,\t\n-0.071952462867630088,\t-0.072002333180792299,\t-0.072052203313948668,\t-0.072102073266974973,\t-0.072151943039745647,\t-0.072201812632136472,\t-0.072251682044023213,\t-0.072301551275280290,\t\n-0.072351420325783497,\t-0.072401289195408156,\t-0.072451157884030032,\t-0.072501026391523574,\t-0.072550894717764547,\t-0.072600762862628287,\t-0.072650630825990561,\t-0.072700498607725816,\t\n-0.072750366207709818,\t-0.072800233625817903,\t-0.072850100861925851,\t-0.072899967915908109,\t-0.072949834787640444,\t-0.072999701476998191,\t-0.073049567983857130,\t-0.073099434308091710,\t\n-0.073149300449577695,\t-0.073199166408190436,\t-0.073249032183805698,\t-0.073298897776297930,\t-0.073348763185542940,\t-0.073398628411416464,\t-0.073448493453792979,\t-0.073498358312548265,\t\n-0.073548222987557657,\t-0.073598087478696936,\t-0.073647951785840535,\t-0.073697815908864275,\t-0.073747679847643466,\t-0.073797543602053900,\t-0.073847407171970039,\t-0.073897270557267650,\t\n-0.073947133757822095,\t-0.073996996773509141,\t-0.074046859604203263,\t-0.074096722249780228,\t-0.074146584710115385,\t-0.074196446985084527,\t-0.074246309074562103,\t-0.074296170978423906,\t\n-0.074346032696545730,\t-0.074395894228802037,\t-0.074445755575068592,\t-0.074495616735220774,\t-0.074545477709134347,\t-0.074595338496683788,\t-0.074645199097744877,\t-0.074695059512192963,\t\n-0.074744919739903853,\t-0.074794779780751997,\t-0.074844639634613200,\t-0.074894499301362799,\t-0.074944358780876588,\t-0.074994218073029043,\t-0.075044077177695956,\t-0.075093936094752664,\t\n-0.075143794824074975,\t-0.075193653365537363,\t-0.075243511719015624,\t-0.075293369884385536,\t-0.075343227861521589,\t-0.075393085650299577,\t-0.075442943250594835,\t-0.075492800662283185,\t\n-0.075542657885239090,\t-0.075592514919338355,\t-0.075642371764456331,\t-0.075692228420468813,\t-0.075742084887250288,\t-0.075791941164676552,\t-0.075841797252622967,\t-0.075891653150965327,\t\n-0.075941508859578108,\t-0.075991364378337117,\t-0.076041219707117719,\t-0.076091074845795706,\t-0.076140929794245582,\t-0.076190784552343113,\t-0.076240639119963691,\t-0.076290493496983122,\t\n-0.076340347683275869,\t-0.076390201678717740,\t-0.076440055483184555,\t-0.076489909096550790,\t-0.076539762518692253,\t-0.076589615749484308,\t-0.076639468788802775,\t-0.076689321636522118,\t\n-0.076739174292518156,\t-0.076789026756666254,\t-0.076838879028842233,\t-0.076888731108920583,\t-0.076938582996777097,\t-0.076988434692287153,\t-0.077038286195326558,\t-0.077088137505769816,\t\n-0.077137988623492720,\t-0.077187839548370663,\t-0.077237690280279436,\t-0.077287540819093559,\t-0.077337391164688810,\t-0.077387241316941038,\t-0.077437091275724720,\t-0.077486941040915677,\t\n-0.077536790612389273,\t-0.077586639990021342,\t-0.077636489173686360,\t-0.077686338163260163,\t-0.077736186958618114,\t-0.077786035559636049,\t-0.077835883966188443,\t-0.077885732178151132,\t\n-0.077935580195399493,\t-0.077985428017809347,\t-0.078035275645255184,\t-0.078085123077612825,\t-0.078134970314757676,\t-0.078184817356565531,\t-0.078234664202910906,\t-0.078284510853669609,\t\n-0.078334357308717489,\t-0.078384203567929037,\t-0.078434049631180058,\t-0.078483895498345974,\t-0.078533741169302590,\t-0.078583586643924397,\t-0.078633431922087257,\t-0.078683277003666521,\t\n-0.078733121888538038,\t-0.078782966576576310,\t-0.078832811067657174,\t-0.078882655361656007,\t-0.078932499458448629,\t-0.078982343357909574,\t-0.079032187059914660,\t-0.079082030564339281,\t\n-0.079131873871059258,\t-0.079181716979949121,\t-0.079231559890884679,\t-0.079281402603741780,\t-0.079331245118394941,\t-0.079381087434719985,\t-0.079430929552592316,\t-0.079480771471887757,\t\n-0.079530613192480823,\t-0.079580454714247365,\t-0.079630296037062773,\t-0.079680137160802883,\t-0.079729978085342199,\t-0.079779818810556569,\t-0.079829659336321399,\t-0.079879499662512524,\t\n-0.079929339789004461,\t-0.079979179715673032,\t-0.080029019442393670,\t-0.080078858969042196,\t-0.080128698295493128,\t-0.080178537421622315,\t-0.080228376347305161,\t-0.080278215072417516,\t\n-0.080328053596833884,\t-0.080377891920430114,\t-0.080427730043082069,\t-0.080477567964664251,\t-0.080527405685052511,\t-0.080577243204122254,\t-0.080627080521749328,\t-0.080676917637808265,\t\n-0.080726754552174915,\t-0.080776591264724668,\t-0.080826427775333387,\t-0.080876264083875590,\t-0.080926100190227140,\t-0.080975936094263443,\t-0.081025771795860346,\t-0.081075607294892368,\t\n-0.081125442591235386,\t-0.081175277684764791,\t-0.081225112575356431,\t-0.081274947262884867,\t-0.081324781747225919,\t-0.081374616028255478,\t-0.081424450105848034,\t-0.081474283979879478,\t\n-0.081524117650225214,\t-0.081573951116761093,\t-0.081623784379361644,\t-0.081673617437902746,\t-0.081723450292259803,\t-0.081773282942308678,\t-0.081823115387923889,\t-0.081872947628981327,\t\n-0.081922779665356396,\t-0.081972611496924946,\t-0.082022443123561536,\t-0.082072274545142015,\t-0.082122105761541803,\t-0.082171936772636775,\t-0.082221767578301463,\t-0.082271598178411731,\t\n-0.082321428572843441,\t-0.082371258761471139,\t-0.082421088744170687,\t-0.082470918520817518,\t-0.082520748091287496,\t-0.082570577455455166,\t-0.082620406613196390,\t-0.082670235564386588,\t\n-0.082720064308901650,\t-0.082769892846616108,\t-0.082819721177405825,\t-0.082869549301146248,\t-0.082919377217713239,\t-0.082969204926981344,\t-0.083019032428826439,\t-0.083068859723123945,\t\n-0.083118686809749751,\t-0.083168513688578388,\t-0.083218340359485748,\t-0.083268166822347264,\t-0.083317993077038799,\t-0.083367819123434911,\t-0.083417644961411463,\t-0.083467470590844361,\t\n-0.083517296011608136,\t-0.083567121223578664,\t-0.083616946226631392,\t-0.083666771020642211,\t-0.083716595605485639,\t-0.083766419981037593,\t-0.083816244147173494,\t-0.083866068103769217,\t\n-0.083915891850699337,\t-0.083965715387839729,\t-0.084015538715065827,\t-0.084065361832253521,\t-0.084115184739277371,\t-0.084165007436013253,\t-0.084214829922336629,\t-0.084264652198123360,\t\n-0.084314474263248021,\t-0.084364296117586501,\t-0.084414117761014679,\t-0.084463939193407125,\t-0.084513760414639719,\t-0.084563581424587905,\t-0.084613402223127590,\t-0.084663222810133332,\t\n-0.084713043185481007,\t-0.084762863349046078,\t-0.084812683300704433,\t-0.084862503040330634,\t-0.084912322567800583,\t-0.084962141882989714,\t-0.085011960985773946,\t-0.085061779876027824,\t\n-0.085111598553627252,\t-0.085161417018447691,\t-0.085211235270365032,\t-0.085261053309253834,\t-0.085310871134990002,\t-0.085360688747449440,\t-0.085410506146506721,\t-0.085460323332037721,\t\n-0.085510140303917931,\t-0.085559957062023212,\t-0.085609773606228165,\t-0.085659589936408695,\t-0.085709406052440235,\t-0.085759221954198717,\t-0.085809037641558686,\t-0.085858853114396075,\t\n-0.085908668372586330,\t-0.085958483416005343,\t-0.086008298244527714,\t-0.086058112858029348,\t-0.086107927256385691,\t-0.086157741439472649,\t-0.086207555407164821,\t-0.086257369159338113,\t\n-0.086307182695868415,\t-0.086356996016630314,\t-0.086406809121499728,\t-0.086456622010352119,\t-0.086506434683063405,\t-0.086556247139508144,\t-0.086606059379562284,\t-0.086655871403101256,\t\n-0.086705683210001008,\t-0.086755494800136099,\t-0.086805306173382460,\t-0.086855117329615553,\t-0.086904928268711296,\t-0.086954738990544289,\t-0.087004549494990410,\t-0.087054359781925175,\t\n-0.087104169851224475,\t-0.087153979702762910,\t-0.087203789336416399,\t-0.087253598752060416,\t-0.087303407949570866,\t-0.087353216928822364,\t-0.087403025689690814,\t-0.087452834232052148,\t\n-0.087502642555780955,\t-0.087552450660753151,\t-0.087602258546844225,\t-0.087652066213930097,\t-0.087701873661885352,\t-0.087751680890585923,\t-0.087801487899907299,\t-0.087851294689725398,\t\n-0.087901101259914807,\t-0.087950907610351473,\t-0.088000713740910869,\t-0.088050519651468928,\t-0.088100325341900237,\t-0.088150130812080729,\t-0.088199936061885906,\t-0.088249741091191672,\t\n-0.088299545899872656,\t-0.088349350487804762,\t-0.088399154854863951,\t-0.088448959000924796,\t-0.088498762925863242,\t-0.088548566629554792,\t-0.088598370111875366,\t-0.088648173372699562,\t\n-0.088697976411903343,\t-0.088747779229362167,\t-0.088797581824951996,\t-0.088847384198547416,\t-0.088897186350024388,\t-0.088946988279258385,\t-0.088996789986125355,\t-0.089046591470499911,\t\n-0.089096392732257987,\t-0.089146193771275084,\t-0.089195994587427135,\t-0.089245795180588755,\t-0.089295595550635889,\t-0.089345395697444485,\t-0.089395195620889142,\t-0.089444995320845808,\t\n-0.089494794797189997,\t-0.089544594049797629,\t-0.089594393078543333,\t-0.089644191883303068,\t-0.089693990463952308,\t-0.089743788820367015,\t-0.089793586952421817,\t-0.089843384859992645,\t\n-0.089893182542955016,\t-0.089942980001184877,\t-0.089992777234556828,\t-0.090042574242946857,\t-0.090092371026230439,\t-0.090142167584283533,\t-0.090191963916980769,\t-0.090241760024198106,\t\n-0.090291555905811033,\t-0.090341351561695510,\t-0.090391146991726165,\t-0.090440942195778959,\t-0.090490737173729838,\t-0.090540531925453430,\t-0.090590326450825695,\t-0.090640120749722136,\t\n-0.090689914822018727,\t-0.090739708667590083,\t-0.090789502286312176,\t-0.090839295678060511,\t-0.090889088842711033,\t-0.090938881780138411,\t-0.090988674490218580,\t-0.091038466972827053,\t\n-0.091088259227839807,\t-0.091138051255131469,\t-0.091187843054578013,\t-0.091237634626054942,\t-0.091287425969438216,\t-0.091337217084602504,\t-0.091387007971423725,\t-0.091436798629777882,\t\n-0.091486589059539603,\t-0.091536379260584846,\t-0.091586169232789144,\t-0.091635958976028470,\t-0.091685748490177438,\t-0.091735537775112050,\t-0.091785326830707809,\t-0.091835115656840702,\t\n-0.091884904253385344,\t-0.091934692620217751,\t-0.091984480757213410,\t-0.092034268664248312,\t-0.092084056341197096,\t-0.092133843787935751,\t-0.092183631004339794,\t-0.092233417990285199,\t\n-0.092283204745646608,\t-0.092332991270300008,\t-0.092382777564121388,\t-0.092432563626985362,\t-0.092482349458767946,\t-0.092532135059344642,\t-0.092581920428591452,\t-0.092631705566383005,\t\n-0.092681490472595301,\t-0.092731275147103873,\t-0.092781059589784706,\t-0.092830843800512444,\t-0.092880627779163061,\t-0.092930411525612128,\t-0.092980195039735591,\t-0.093029978321408135,\t\n-0.093079761370505720,\t-0.093129544186903918,\t-0.093179326770478688,\t-0.093229109121104700,\t-0.093278891238657943,\t-0.093328673123014391,\t-0.093378454774048728,\t-0.093428236191636926,\t\n-0.093478017375654518,\t-0.093527798325977518,\t-0.093577579042480583,\t-0.093627359525039699,\t-0.093677139773530427,\t-0.093726919787828725,\t-0.093776699567809305,\t-0.093826479113348113,\t\n-0.093876258424320735,\t-0.093926037500603160,\t-0.093975816342070043,\t-0.094025594948597385,\t-0.094075373320060732,\t-0.094125151456336098,\t-0.094174929357298140,\t-0.094224707022822859,\t\n-0.094274484452785814,\t-0.094324261647062993,\t-0.094374038605529079,\t-0.094423815328060073,\t-0.094473591814531965,\t-0.094523368064819438,\t-0.094573144078798480,\t-0.094622919856344676,\t\n-0.094672695397334014,\t-0.094722470701641165,\t-0.094772245769142144,\t-0.094822020599712509,\t-0.094871795193228262,\t-0.094921569549564086,\t-0.094971343668595984,\t-0.095021117550199527,\t\n-0.095070891194250703,\t-0.095120664600624225,\t-0.095170437769196078,\t-0.095220210699841851,\t-0.095269983392437529,\t-0.095319755846857798,\t-0.095369528062978687,\t-0.095419300040676197,\t\n-0.095469071779825013,\t-0.095518843280301149,\t-0.095568614541980179,\t-0.095618385564738118,\t-0.095668156348449648,\t-0.095717926892990787,\t-0.095767697198237120,\t-0.095817467264064635,\t\n-0.095867237090348043,\t-0.095917006676963359,\t-0.095966776023786171,\t-0.096016545130692466,\t-0.096066313997556968,\t-0.096116082624255680,\t-0.096165851010664188,\t-0.096215619156658508,\t\n-0.096265387062113336,\t-0.096315154726904703,\t-0.096364922150908625,\t-0.096414689333999798,\t-0.096464456276054253,\t-0.096514222976947561,\t-0.096563989436555753,\t-0.096613755654753525,\t\n-0.096663521631416921,\t-0.096713287366421499,\t-0.096763052859643303,\t-0.096812818110957044,\t-0.096862583120238738,\t-0.096912347887363956,\t-0.096962112412208770,\t-0.097011876694647850,\t\n-0.097061640734557239,\t-0.097111404531812523,\t-0.097161168086289745,\t-0.097210931397863590,\t-0.097260694466410128,\t-0.097310457291804917,\t-0.097360219873924000,\t-0.097409982212642104,\t\n-0.097459744307835244,\t-0.097509506159379464,\t-0.097559267767149488,\t-0.097609029131021333,\t-0.097658790250870597,\t-0.097708551126573340,\t-0.097758311758004271,\t-0.097808072145039407,\t\n-0.097857832287554375,\t-0.097907592185425191,\t-0.097957351838526593,\t-0.098007111246734613,\t-0.098056870409924848,\t-0.098106629327973358,\t-0.098156388000754852,\t-0.098206146428145374,\t\n-0.098255904610020539,\t-0.098305662546256375,\t-0.098355420236727623,\t-0.098405177681310310,\t-0.098454934879880496,\t-0.098504691832312904,\t-0.098554448538483580,\t-0.098604204998268136,\t\n-0.098653961211542615,\t-0.098703717178181757,\t-0.098753472898061606,\t-0.098803228371057775,\t-0.098852983597046321,\t-0.098902738575901955,\t-0.098952493307500750,\t-0.099002247791718304,\t\n-0.099052002028430675,\t-0.099101756017512616,\t-0.099151509758840156,\t-0.099201263252288924,\t-0.099251016497734976,\t-0.099300769495053037,\t-0.099350522244119194,\t-0.099400274744809475,\t\n-0.099450026996998619,\t-0.099499779000562713,\t-0.099549530755377341,\t-0.099599282261318603,\t-0.099649033518261210,\t-0.099698784526081233,\t-0.099748535284654286,\t-0.099798285793856453,\t\n-0.099848036053562461,\t-0.099897786063648381,\t-0.099947535823989839,\t-0.099997285334462893,\t-0.100047034594942280,\t-0.100096783605304110,\t-0.100146532365423950,\t-0.100196280875177910,\t\n-0.100246029134440740,\t-0.100295777143088490,\t-0.100345524900997240,\t-0.100395272408041730,\t-0.100445019664098050,\t-0.100494766669041810,\t-0.100544513422749100,\t-0.100594259925094660,\t\n-0.100644006175954580,\t-0.100693752175204470,\t-0.100743497922720430,\t-0.100793243418377210,\t-0.100842988662050880,\t-0.100892733653617060,\t-0.100942478392951870,\t-0.100992222879930040,\t\n-0.101041967114427640,\t-0.101091711096320330,\t-0.101141454825484170,\t-0.101191198301793950,\t-0.101240941525125740,\t-0.101290684495355150,\t-0.101340427212358310,\t-0.101390169676009960,\t\n-0.101439911886186170,\t-0.101489653842763050,\t-0.101539395545615360,\t-0.101589136994619190,\t-0.101638878189650160,\t-0.101688619130584380,\t-0.101738359817296620,\t-0.101788100249662950,\t\n-0.101837840427559030,\t-0.101887580350860960,\t-0.101937320019443490,\t-0.101987059433182720,\t-0.102036798591954290,\t-0.102086537495634320,\t-0.102136276144097570,\t-0.102186014537220120,\t\n-0.102235752674877630,\t-0.102285490556946200,\t-0.102335228183300610,\t-0.102384965553816950,\t-0.102434702668371320,\t-0.102484439526838490,\t-0.102534176129094550,\t-0.102583912475015180,\t\n-0.102633648564476460,\t-0.102683384397353190,\t-0.102733119973521460,\t-0.102782855292856910,\t-0.102832590355235690,\t-0.102882325160532530,\t-0.102932059708623570,\t-0.102981793999384450,\t\n-0.103031528032691310,\t-0.103081261808418880,\t-0.103130995326443320,\t-0.103180728586640250,\t-0.103230461588885810,\t-0.103280194333054780,\t-0.103329926819023250,\t-0.103379659046667360,\t\n-0.103429391015861880,\t-0.103479122726482910,\t-0.103528854178406140,\t-0.103578585371507690,\t-0.103628316305662310,\t-0.103678046980746160,\t-0.103727777396634880,\t-0.103777507553204600,\t\n-0.103827237450330110,\t-0.103876967087887530,\t-0.103926696465752530,\t-0.103976425583801230,\t-0.104026154441908420,\t-0.104075883039950230,\t-0.104125611377802340,\t-0.104175339455340850,\t\n-0.104225067272440570,\t-0.104274794828977630,\t-0.104324522124827690,\t-0.104374249159866900,\t-0.104423975933970040,\t-0.104473702447013250,\t-0.104523428698872630,\t-0.104573154689423010,\t\n-0.104622880418540500,\t-0.104672605886100780,\t-0.104722331091979990,\t-0.104772056036052940,\t-0.104821780718195740,\t-0.104871505138284100,\t-0.104921229296194130,\t-0.104970953191800640,\t\n-0.105020676824979770,\t-0.105070400195607220,\t-0.105120123303559090,\t-0.105169846148710220,\t-0.105219568730936740,\t-0.105269291050114340,\t-0.105319013106119140,\t-0.105368734898825980,\t\n-0.105418456428110980,\t-0.105468177693850280,\t-0.105517898695918700,\t-0.105567619434192360,\t-0.105617339908546980,\t-0.105667060118858680,\t-0.105716780065002310,\t-0.105766499746853970,\t\n-0.105816219164289390,\t-0.105865938317184700,\t-0.105915657205414720,\t-0.105965375828855610,\t-0.106015094187383040,\t-0.106064812280873190,\t-0.106114530109200870,\t-0.106164247672242220,\t\n-0.106213964969872950,\t-0.106263682001969210,\t-0.106313398768405830,\t-0.106363115269058950,\t-0.106412831503804720,\t-0.106462547472517960,\t-0.106512263175074850,\t-0.106561978611351070,\t\n-0.106611693781222790,\t-0.106661408684564830,\t-0.106711123321253350,\t-0.106760837691164070,\t-0.106810551794173130,\t-0.106860265630155370,\t-0.106909979198986940,\t-0.106959692500543570,\t\n-0.107009405534701410,\t-0.107059118301335300,\t-0.107108830800321380,\t-0.107158543031535390,\t-0.107208254994853480,\t-0.107257966690150500,\t-0.107307678117302600,\t-0.107357389276185950,\t\n-0.107407100166675370,\t-0.107456810788647050,\t-0.107506521141976700,\t-0.107556231226540500,\t-0.107605941042213270,\t-0.107655650588871180,\t-0.107705359866389970,\t-0.107755068874645810,\t\n-0.107804777613513540,\t-0.107854486082869310,\t-0.107904194282588880,\t-0.107953902212548390,\t-0.108003609872622710,\t-0.108053317262688010,\t-0.108103024382620010,\t-0.108152731232294890,\t\n-0.108202437811587520,\t-0.108252144120374020,\t-0.108301850158530190,\t-0.108351555925932170,\t-0.108401261422454810,\t-0.108450966647974300,\t-0.108500671602366820,\t-0.108550376285507220,\t\n-0.108600080697271670,\t-0.108649784837535910,\t-0.108699488706176160,\t-0.108749192303067220,\t-0.108798895628085310,\t-0.108848598681106160,\t-0.108898301462005950,\t-0.108948003970659550,\t\n-0.108997706206943140,\t-0.109047408170732470,\t-0.109097109861903710,\t-0.109146811280331740,\t-0.109196512425892750,\t-0.109246213298462470,\t-0.109295913897917100,\t-0.109345614224131500,\t\n-0.109395314276981860,\t-0.109445014056344380,\t-0.109494713562093930,\t-0.109544412794106690,\t-0.109594111752258420,\t-0.109643810436425320,\t-0.109693508846482240,\t-0.109743206982305390,\t\n-0.109792904843770520,\t-0.109842602430753850,\t-0.109892299743130210,\t-0.109941996780775830,\t-0.109991693543566460,\t-0.110041390031378290,\t-0.110091086244086200,\t-0.110140782181566410,\t\n-0.110190477843694650,\t-0.110240173230347140,\t-0.110289868341398770,\t-0.110339563176725720,\t-0.110389257736204200,\t-0.110438952019709090,\t-0.110488646027116610,\t-0.110538339758302500,\t\n-0.110588033213143010,\t-0.110637726391512970,\t-0.110687419293288620,\t-0.110737111918345720,\t-0.110786804266560480,\t-0.110836496337807800,\t-0.110886188131963880,\t-0.110935879648904490,\t\n-0.110985570888505830,\t-0.111035261850642800,\t-0.111084952535191630,\t-0.111134642942028070,\t-0.111184333071028350,\t-0.111234022922067340,\t-0.111283712495021280,\t-0.111333401789765950,\t\n-0.111383090806177550,\t-0.111432779544130970,\t-0.111482468003502460,\t-0.111532156184168220,\t-0.111581844086003130,\t-0.111631531708883440,\t-0.111681219052684920,\t-0.111730906117283810,\t\n-0.111780592902554970,\t-0.111830279408374660,\t-0.111879965634618650,\t-0.111929651581163160,\t-0.111979337247883120,\t-0.112029022634654720,\t-0.112078707741353770,\t-0.112128392567856490,\t\n-0.112178077114037780,\t-0.112227761379773890,\t-0.112277445364940580,\t-0.112327129069414110,\t-0.112376812493069370,\t-0.112426495635782610,\t-0.112476178497430040,\t-0.112525861077886590,\t\n-0.112575543377028490,\t-0.112625225394731520,\t-0.112674907130871940,\t-0.112724588585324640,\t-0.112774269757965880,\t-0.112823950648671440,\t-0.112873631257317560,\t-0.112923311583779160,\t\n-0.112972991627932490,\t-0.113022671389653340,\t-0.113072350868817950,\t-0.113122030065301240,\t-0.113171708978979460,\t-0.113221387609728400,\t-0.113271065957424310,\t-0.113320744021942130,\t\n-0.113370421803158080,\t-0.113420099300948420,\t-0.113469776515188070,\t-0.113519453445753270,\t-0.113569130092519840,\t-0.113618806455364030,\t-0.113668482534160760,\t-0.113718158328786290,\t\n-0.113767833839116410,\t-0.113817509065027400,\t-0.113867184006394170,\t-0.113916858663092990,\t-0.113966533034999650,\t-0.114016207121990430,\t-0.114065880923940240,\t-0.114115554440725350,\t\n-0.114165227672221580,\t-0.114214900618305180,\t-0.114264573278851090,\t-0.114314245653735560,\t-0.114363917742834860,\t-0.114413589546023930,\t-0.114463261063179010,\t-0.114512932294175960,\t\n-0.114562603238891000,\t-0.114612273897199110,\t-0.114661944268976520,\t-0.114711614354099070,\t-0.114761284152443040,\t-0.114810953663883340,\t-0.114860622888296270,\t-0.114910291825557630,\t\n-0.114959960475543720,\t-0.115009628838129460,\t-0.115059296913191130,\t-0.115108964700604540,\t-0.115158632200246000,\t-0.115208299411990430,\t-0.115257966335714100,\t-0.115307632971292870,\t\n-0.115357299318603000,\t-0.115406965377519430,\t-0.115456631147918460,\t-0.115506296629676330,\t-0.115555961822668040,\t-0.115605626726769840,\t-0.115655291341857580,\t-0.115704955667807520,\t\n-0.115754619704494630,\t-0.115804283451795190,\t-0.115853946909585050,\t-0.115903610077740480,\t-0.115953272956136440,\t-0.116002935544649230,\t-0.116052597843154660,\t-0.116102259851529050,\t\n-0.116151921569647360,\t-0.116201582997385850,\t-0.116251244134620390,\t-0.116300904981227260,\t-0.116350565537081420,\t-0.116400225802059180,\t-0.116449885776036810,\t-0.116499545458889270,\t\n-0.116549204850492890,\t-0.116598863950723480,\t-0.116648522759457360,\t-0.116698181276569490,\t-0.116747839501936170,\t-0.116797497435433250,\t-0.116847155076937020,\t-0.116896812426322470,\t\n-0.116946469483465880,\t-0.116996126248243130,\t-0.117045782720530480,\t-0.117095438900202960,\t-0.117145094787136830,\t-0.117194750381207970,\t-0.117244405682292660,\t-0.117294060690265920,\t\n-0.117343715405004000,\t-0.117393369826383250,\t-0.117443023954278640,\t-0.117492677788566450,\t-0.117542331329122590,\t-0.117591984575823330,\t-0.117641637528543660,\t-0.117691290187159900,\t\n-0.117740942551547920,\t-0.117790594621584030,\t-0.117840246397143200,\t-0.117889897878101770,\t-0.117939549064335570,\t-0.117989199955720960,\t-0.118038850552132900,\t-0.118088500853447710,\t\n-0.118138150859541280,\t-0.118187800570289910,\t-0.118237449985568590,\t-0.118287099105253660,\t-0.118336747929220970,\t-0.118386396457346850,\t-0.118436044689506300,\t-0.118485692625575650,\t\n-0.118535340265431190,\t-0.118584987608947950,\t-0.118634634656002240,\t-0.118684281406469940,\t-0.118733927860227390,\t-0.118783574017149560,\t-0.118833219877112820,\t-0.118882865439993000,\t\n-0.118932510705666470,\t-0.118982155674008230,\t-0.119031800344894590,\t-0.119081444718201470,\t-0.119131088793805160,\t-0.119180732571580680,\t-0.119230376051404390,\t-0.119280019233152150,\t\n-0.119329662116700310,\t-0.119379304701923860,\t-0.119428946988699160,\t-0.119478588976902530,\t-0.119528230666408980,\t-0.119577872057094860,\t-0.119627513148836060,\t-0.119677153941508910,\t\n-0.119726794434988450,\t-0.119776434629150980,\t-0.119826074523872450,\t-0.119875714119029160,\t-0.119925353414496140,\t-0.119974992410149750,\t-0.120024631105865860,\t-0.120074269501520850,\t\n-0.120123907596989720,\t-0.120173545392148830,\t-0.120223182886874070,\t-0.120272820081041790,\t-0.120322456974527020,\t-0.120372093567206110,\t-0.120421729858955410,\t-0.120471365849649930,\t\n-0.120521001539166050,\t-0.120570636927379670,\t-0.120620272014167130,\t-0.120669906799403470,\t-0.120719541282965040,\t-0.120769175464727760,\t-0.120818809344567980,\t-0.120868442922360740,\t\n-0.120918076197982390,\t-0.120967709171308850,\t-0.121017341842216480,\t-0.121066974210580310,\t-0.121116606276276710,\t-0.121166238039181580,\t-0.121215869499171320,\t-0.121265500656120930,\t\n-0.121315131509906790,\t-0.121364762060405270,\t-0.121414392307491390,\t-0.121464022251041540,\t-0.121513651890931630,\t-0.121563281227038040,\t-0.121612910259235790,\t-0.121662538987401270,\t\n-0.121712167411410420,\t-0.121761795531139570,\t-0.121811423346463800,\t-0.121861050857259470,\t-0.121910678063402510,\t-0.121960304964769300,\t-0.122009931561234890,\t-0.122059557852675640,\t\n-0.122109183838967500,\t-0.122158809519986850,\t-0.122208434895608730,\t-0.122258059965709510,\t-0.122307684730165160,\t-0.122357309188852030,\t-0.122406933341645190,\t-0.122456557188421020,\t\n-0.122506180729055890,\t-0.122555803963424870,\t-0.122605426891404340,\t-0.122655049512870230,\t-0.122704671827698950,\t-0.122754293835765550,\t-0.122803915536946420,\t-0.122853536931117500,\t\n-0.122903158018155170,\t-0.122952778797934510,\t-0.123002399270331910,\t-0.123052019435223300,\t-0.123101639292485080,\t-0.123151258841992340,\t-0.123200878083621430,\t-0.123250497017248330,\t\n-0.123300115642749440,\t-0.123349733959999800,\t-0.123399351968875850,\t-0.123448969669253950,\t-0.123498587061009180,\t-0.123548204144017950,\t-0.123597820918156200,\t-0.123647437383300350,\t\n-0.123697053539325460,\t-0.123746669386107940,\t-0.123796284923523740,\t-0.123845900151449280,\t-0.123895515069759610,\t-0.123945129678331170,\t-0.123994743977039900,\t-0.124044357965762210,\t\n-0.124093971644373190,\t-0.124143585012749230,\t-0.124193198070766310,\t-0.124242810818300840,\t-0.124292423255227910,\t-0.124342035381423910,\t-0.124391647196765260,\t-0.124441258701127060,\t\n-0.124490869894385710,\t-0.124540480776417190,\t-0.124590091347097890,\t-0.124639701606302940,\t-0.124689311553908740,\t-0.124738921189791240,\t-0.124788530513826890,\t-0.124838139525890780,\t\n-0.124887748225859310,\t-0.124937356613608480,\t-0.124986964689014700,\t-0.125036572451953040,\t-0.125086179902299980,\t-0.125135787039931470,\t-0.125185393864723910,\t-0.125235000376552440,\t\n-0.125284606575293470,\t-0.125334212460822990,\t-0.125383818033017400,\t-0.125433423291751830,\t-0.125483028236902720,\t-0.125532632868346460,\t-0.125582237185958180,\t-0.125631841189614320,\t\n-0.125681444879190830,\t-0.125731048254564190,\t-0.125780651315609500,\t-0.125830254062203160,\t-0.125879856494221200,\t-0.125929458611540030,\t-0.125979060414034780,\t-0.126028661901581850,\t\n-0.126078263074057310,\t-0.126127863931337510,\t-0.126177464473297640,\t-0.126227064699814100,\t-0.126276664610762900,\t-0.126326264206020470,\t-0.126375863485461950,\t-0.126425462448963770,\t\n-0.126475061096402390,\t-0.126524659427652900,\t-0.126574257442591740,\t-0.126623855141094980,\t-0.126673452523038990,\t-0.126723049588298940,\t-0.126772646336751250,\t-0.126822242768271980,\t\n-0.126871838882737510,\t-0.126921434680023010,\t-0.126971030160004940,\t-0.127020625322559280,\t-0.127070220167562500,\t-0.127119814694889730,\t-0.127169408904417410,\t-0.127219002796021580,\t\n-0.127268596369578680,\t-0.127318189624963860,\t-0.127367782562053560,\t-0.127417375180724240,\t-0.127466967480851040,\t-0.127516559462310440,\t-0.127566151124978430,\t-0.127615742468731470,\t\n-0.127665333493444720,\t-0.127714924198994630,\t-0.127764514585257260,\t-0.127814104652109020,\t-0.127863694399425080,\t-0.127913283827081890,\t-0.127962872934955510,\t-0.128012461722922380,\t\n-0.128062050190857670,\t-0.128111638338637810,\t-0.128161226166138870,\t-0.128210813673237310,\t-0.128260400859808280,\t-0.128309987725728240,\t-0.128359574270873660,\t-0.128409160495119720,\t\n-0.128458746398342870,\t-0.128508331980419140,\t-0.128557917241225030,\t-0.128607502180635690,\t-0.128657086798527610,\t-0.128706671094776790,\t-0.128756255069259750,\t-0.128805838721851610,\t\n-0.128855422052428890,\t-0.128905005060867610,\t-0.128954587747044270,\t-0.129004170110834010,\t-0.129053752152113320,\t-0.129103333870758260,\t-0.129152915266645300,\t-0.129202496339649610,\t\n-0.129252077089647670,\t-0.129301657516515570,\t-0.129351237620129730,\t-0.129400817400365380,\t-0.129450396857098970,\t-0.129499975990207020,\t-0.129549554799564680,\t-0.129599133285048460,\t\n-0.129648711446534420,\t-0.129698289283899010,\t-0.129747866797017470,\t-0.129797443985766230,\t-0.129847020850021390,\t-0.129896597389659450,\t-0.129946173604555570,\t-0.129995749494586250,\t\n-0.130045325059627570,\t-0.130094900299556030,\t-0.130144475214246770,\t-0.130194049803576320,\t-0.130243624067420770,\t-0.130293198005656590,\t-0.130342771618158960,\t-0.130392344904804420,\t\n-0.130441917865469460,\t-0.130491490500029260,\t-0.130541062808360340,\t-0.130590634790338750,\t-0.130640206445841010,\t-0.130689777774742330,\t-0.130739348776919200,\t-0.130788919452247690,\t\n-0.130838489800604340,\t-0.130888059821864300,\t-0.130937629515904120,\t-0.130987198882599850,\t-0.131036767921828060,\t-0.131086336633463890,\t-0.131135905017383870,\t-0.131185473073464120,\t\n-0.131235040801581100,\t-0.131284608201610030,\t-0.131334175273427470,\t-0.131383742016909890,\t-0.131433308431932520,\t-0.131482874518371870,\t-0.131532440276104060,\t-0.131582005705005560,\t\n-0.131631570804951610,\t-0.131681135575818760,\t-0.131730700017483050,\t-0.131780264129821020,\t-0.131829827912707890,\t-0.131879391366020230,\t-0.131928954489634040,\t-0.131978517283425940,\t\n-0.132028079747271100,\t-0.132077641881046040,\t-0.132127203684626880,\t-0.132176765157890170,\t-0.132226326300711100,\t-0.132275887112966230,\t-0.132325447594531600,\t-0.132375007745283820,\t\n-0.132424567565098100,\t-0.132474127053850920,\t-0.132523686211418880,\t-0.132573245037677200,\t-0.132622803532502390,\t-0.132672361695770570,\t-0.132721919527358290,\t-0.132771477027140760,\t\n-0.132821034194994550,\t-0.132870591030795760,\t-0.132920147534420910,\t-0.132969703705745290,\t-0.133019259544645390,\t-0.133068815050997320,\t-0.133118370224677680,\t-0.133167925065561660,\t\n-0.133217479573525840,\t-0.133267033748446310,\t-0.133316587590199650,\t-0.133366141098661070,\t-0.133415694273707140,\t-0.133465247115214400,\t-0.133514799623058120,\t-0.133564351797114840,\t\n-0.133613903637260670,\t-0.133663455143372190,\t-0.133713006315324620,\t-0.133762557152994540,\t-0.133812107656258090,\t-0.133861657824991790,\t-0.133911207659070910,\t-0.133960757158372000,\t\n-0.134010306322771190,\t-0.134059855152145080,\t-0.134109403646368890,\t-0.134158951805319170,\t-0.134208499628872100,\t-0.134258047116904200,\t-0.134307594269290760,\t-0.134357141085908320,\t\n-0.134406687566633460,\t-0.134456233711341440,\t-0.134505779519908860,\t-0.134555324992211820,\t-0.134604870128126890,\t-0.134654414927529360,\t-0.134703959390295810,\t-0.134753503516302330,\t\n-0.134803047305425560,\t-0.134852590757540690,\t-0.134902133872524390,\t-0.134951676650252730,\t-0.135001219090602310,\t-0.135050761193448420,\t-0.135100302958667620,\t-0.135149844386136090,\t\n-0.135199385475730350,\t-0.135248926227325730,\t-0.135298466640798780,\t-0.135348006716025680,\t-0.135397546452882990,\t-0.135447085851245990,\t-0.135496624910991260,\t-0.135546163631995450,\t\n-0.135595702014133760,\t-0.135645240057282850,\t-0.135694777761318800,\t-0.135744315126118260,\t-0.135793852151556480,\t-0.135843388837510100,\t-0.135892925183855230,\t-0.135942461190468490,\t\n-0.135991996857225160,\t-0.136041532184001830,\t-0.136091067170674680,\t-0.136140601817120290,\t-0.136190136123213960,\t-0.136239670088832280,\t-0.136289203713851450,\t-0.136338736998148020,\t\n-0.136388269941597330,\t-0.136437802544075950,\t-0.136487334805460520,\t-0.136536866725626320,\t-0.136586398304449940,\t-0.136635929541807560,\t-0.136685460437575790,\t-0.136734990991629950,\t\n-0.136784521203846600,\t-0.136834051074101990,\t-0.136883580602272650,\t-0.136933109788233950,\t-0.136982638631862470,\t-0.137032167133034370,\t-0.137081695291626310,\t-0.137131223107513580,\t\n-0.137180750580572770,\t-0.137230277710680110,\t-0.137279804497712180,\t-0.137329330941544310,\t-0.137378857042053100,\t-0.137428382799115210,\t-0.137477908212605890,\t-0.137527433282401830,\t\n-0.137576958008379160,\t-0.137626482390414560,\t-0.137676006428383290,\t-0.137725530122162020,\t-0.137775053471626910,\t-0.137824576476654640,\t-0.137874099137120450,\t-0.137923621452901020,\t\n-0.137973143423872540,\t-0.138022665049911650,\t-0.138072186330893660,\t-0.138121707266695200,\t-0.138171227857192460,\t-0.138220748102262120,\t-0.138270268001779440,\t-0.138319787555621100,\t\n-0.138369306763663710,\t-0.138418825625782640,\t-0.138468344141854520,\t-0.138517862311755500,\t-0.138567380135362290,\t-0.138616897612550190,\t-0.138666414743195830,\t-0.138715931527175460,\t\n-0.138765447964365680,\t-0.138814964054641830,\t-0.138864479797880610,\t-0.138913995193958140,\t-0.138963510242751160,\t-0.139013024944134950,\t-0.139062539297986180,\t-0.139112053304181050,\t\n-0.139161566962596240,\t-0.139211080273107080,\t-0.139260593235590200,\t-0.139310105849921840,\t-0.139359618115978660,\t-0.139409130033636000,\t-0.139458641602770520,\t-0.139508152823258870,\t\n-0.139557663694976410,\t-0.139607174217799780,\t-0.139656684391605200,\t-0.139706194216269370,\t-0.139755703691667590,\t-0.139805212817676580,\t-0.139854721594172500,\t-0.139904230021032080,\t\n-0.139953738098130660,\t-0.140003245825344870,\t-0.140052753202550980,\t-0.140102260229625660,\t-0.140151766906444210,\t-0.140201273232883370,\t-0.140250779208819340,\t-0.140300284834128820,\t\n-0.140349790108687120,\t-0.140399295032370950,\t-0.140448799605056990,\t-0.140498303826620600,\t-0.140547807696938450,\t-0.140597311215886760,\t-0.140646814383342260,\t-0.140696317199180240,\t\n-0.140745819663277450,\t-0.140795321775510130,\t-0.140844823535754920,\t-0.140894324943887230,\t-0.140943825999783720,\t-0.140993326703320650,\t-0.141042827054374710,\t-0.141092327052821240,\t\n-0.141141826698536980,\t-0.141191325991398110,\t-0.141240824931281400,\t-0.141290323518062170,\t-0.141339821751617160,\t-0.141389319631823020,\t-0.141438817158555140,\t-0.141488314331690210,\t\n-0.141537811151104500,\t-0.141587307616674710,\t-0.141636803728276190,\t-0.141686299485785680,\t-0.141735794889079390,\t-0.141785289938034100,\t-0.141834784632525110,\t-0.141884278972429170,\t\n-0.141933772957622550,\t-0.141983266587981910,\t-0.142032759863382680,\t-0.142082252783701540,\t-0.142131745348814790,\t-0.142181237558599070,\t-0.142230729412929860,\t-0.142280220911683820,\t\n-0.142329712054737210,\t-0.142379202841966780,\t-0.142428693273247890,\t-0.142478183348457270,\t-0.142527673067471630,\t-0.142577162430166380,\t-0.142626651436418200,\t-0.142676140086103410,\t\n-0.142725628379098720,\t-0.142775116315279480,\t-0.142824603894522480,\t-0.142874091116703960,\t-0.142923577981700660,\t-0.142973064489387990,\t-0.143022550639642610,\t-0.143072036432340900,\t\n-0.143121521867359520,\t-0.143171006944573910,\t-0.143220491663860750,\t-0.143269976025096390,\t-0.143319460028157510,\t-0.143368943672919550,\t-0.143418426959259240,\t-0.143467909887053300,\t\n-0.143517392456177150,\t-0.143566874666507500,\t-0.143616356517920680,\t-0.143665838010293400,\t-0.143715319143501080,\t-0.143764799917420470,\t-0.143814280331927860,\t-0.143863760386899990,\t\n-0.143913240082212260,\t-0.143962719417741470,\t-0.144012198393363850,\t-0.144061677008956200,\t-0.144111155264393890,\t-0.144160633159553690,\t-0.144210110694311920,\t-0.144259587868545310,\t\n-0.144309064682129310,\t-0.144358541134940620,\t-0.144408017226856030,\t-0.144457492957750950,\t-0.144506968327502150,\t-0.144556443335985910,\t-0.144605917983079040,\t-0.144655392268656900,\t\n-0.144704866192596290,\t-0.144754339754773500,\t-0.144803812955065340,\t-0.144853285793347160,\t-0.144902758269495810,\t-0.144952230383387530,\t-0.145001702134899130,\t-0.145051173523906040,\t\n-0.145100644550284990,\t-0.145150115213912360,\t-0.145199585514664860,\t-0.145249055452417950,\t-0.145298525027048430,\t-0.145347994238433030,\t-0.145397463086447190,\t-0.145446931570967690,\t\n-0.145496399691870890,\t-0.145545867449033500,\t-0.145595334842331000,\t-0.145644801871640190,\t-0.145694268536837370,\t-0.145743734837799320,\t-0.145793200774401470,\t-0.145842666346520630,\t\n-0.145892131554033130,\t-0.145941596396815730,\t-0.145991060874743890,\t-0.146040524987694430,\t-0.146089988735543630,\t-0.146139452118168310,\t-0.146188915135443940,\t-0.146238377787247240,\t\n-0.146287840073454630,\t-0.146337301993942850,\t-0.146386763548587370,\t-0.146436224737264980,\t-0.146485685559852470,\t-0.146535146016225300,\t-0.146584606106260280,\t-0.146634065829833740,\t\n-0.146683525186822480,\t-0.146732984177101950,\t-0.146782442800548970,\t-0.146831901057039890,\t-0.146881358946451490,\t-0.146930816468659270,\t-0.146980273623539990,\t-0.147029730410970030,\t\n-0.147079186830826160,\t-0.147128642882983910,\t-0.147178098567320060,\t-0.147227553883710950,\t-0.147277008832033400,\t-0.147326463412162880,\t-0.147375917623976200,\t-0.147425371467350190,\t\n-0.147474824942160270,\t-0.147524278048283330,\t-0.147573730785595690,\t-0.147623183153974130,\t-0.147672635153294210,\t-0.147722086783432680,\t-0.147771538044265930,\t-0.147820988935670780,\t\n-0.147870439457522730,\t-0.147919889609698570,\t-0.147969339392074680,\t-0.148018788804527900,\t-0.148068237846933680,\t-0.148117686519168900,\t-0.148167134821109880,\t-0.148216582752633470,\t\n-0.148266030313615150,\t-0.148315477503931790,\t-0.148364924323460130,\t-0.148414370772075750,\t-0.148463816849655430,\t-0.148513262556075580,\t-0.148562707891213010,\t-0.148612152854943220,\t\n-0.148661597447143050,\t-0.148711041667688920,\t-0.148760485516457600,\t-0.148809928993324600,\t-0.148859372098166800,\t-0.148908814830860580,\t-0.148958257191282750,\t-0.149007699179308840,\t\n-0.149057140794815690,\t-0.149106582037679680,\t-0.149156022907777660,\t-0.149205463404985140,\t-0.149254903529178970,\t-0.149304343280235540,\t-0.149353782658031680,\t-0.149403221662442910,\t\n-0.149452660293346110,\t-0.149502098550618110,\t-0.149551536434134410,\t-0.149600973943771860,\t-0.149650411079406880,\t-0.149699847840916310,\t-0.149749284228175680,\t-0.149798720241061830,\t\n-0.149848155879451220,\t-0.149897591143220630,\t-0.149947026032245610,\t-0.149996460546403060,\t-0.150045894685569340,\t-0.150095328449621310,\t-0.150144761838434530,\t-0.150194194851885840,\t\n-0.150243627489851680,\t-0.150293059752208890,\t-0.150342491638832980,\t-0.150391923149600870,\t-0.150441354284389400,\t-0.150490785043074090,\t-0.150540215425531810,\t-0.150589645431639000,\t\n-0.150639075061272530,\t-0.150688504314307910,\t-0.150737933190622040,\t-0.150787361690091330,\t-0.150836789812592660,\t-0.150886217558001580,\t-0.150935644926194930,\t-0.150985071917049210,\t\n-0.151034498530441210,\t-0.151083924766246550,\t-0.151133350624342080,\t-0.151182776104604230,\t-0.151232201206909860,\t-0.151281625931134560,\t-0.151331050277155210,\t-0.151380474244848660,\t\n-0.151429897834090470,\t-0.151479321044757560,\t-0.151528743876726350,\t-0.151578166329873700,\t-0.151627588404075200,\t-0.151677010099207730,\t-0.151726431415147740,\t-0.151775852351772130,\t\n-0.151825272908956420,\t-0.151874693086577530,\t-0.151924112884511910,\t-0.151973532302636470,\t-0.152022951340826720,\t-0.152072369998959620,\t-0.152121788276911580,\t-0.152171206174559540,\t\n-0.152220623691778990,\t-0.152270040828446920,\t-0.152319457584440180,\t-0.152368873959634360,\t-0.152418289953906360,\t-0.152467705567132630,\t-0.152517120799190080,\t-0.152566535649954260,\t\n-0.152615950119302120,\t-0.152665364207110130,\t-0.152714777913255130,\t-0.152764191237612760,\t-0.152813604180059930,\t-0.152863016740473060,\t-0.152912428918729110,\t-0.152961840714703650,\t\n-0.153011252128273570,\t-0.153060663159315350,\t-0.153110073807705940,\t-0.153159484073320890,\t-0.153208893956037150,\t-0.153258303455731160,\t-0.153307712572279850,\t-0.153357121305558810,\t\n-0.153406529655444990,\t-0.153455937621815250,\t-0.153505345204545260,\t-0.153554752403511910,\t-0.153604159218591660,\t-0.153653565649661460,\t-0.153702971696596890,\t-0.153752377359274910,\t\n-0.153801782637571990,\t-0.153851187531365040,\t-0.153900592040529690,\t-0.153949996164942840,\t-0.153999399904481030,\t-0.154048803259021150,\t-0.154098206228438810,\t-0.154147608812610970,\t\n-0.154197011011414090,\t-0.154246412824725120,\t-0.154295814252419700,\t-0.154345215294374730,\t-0.154394615950467160,\t-0.154444016220572630,\t-0.154493416104568040,\t-0.154542815602329940,\t\n-0.154592214713735190,\t-0.154641613438659510,\t-0.154691011776979780,\t-0.154740409728572500,\t-0.154789807293314650,\t-0.154839204471081850,\t-0.154888601261751050,\t-0.154937997665198720,\t\n-0.154987393681301850,\t-0.155036789309936060,\t-0.155086184550978280,\t-0.155135579404305060,\t-0.155184973869793300,\t-0.155234367947318710,\t-0.155283761636758170,\t-0.155333154937988660,\t\n-0.155382547850885840,\t-0.155431940375326650,\t-0.155481332511187590,\t-0.155530724258345660,\t-0.155580115616676480,\t-0.155629506586057010,\t-0.155678897166363770,\t-0.155728287357473710,\t\n-0.155777677159262500,\t-0.155827066571607110,\t-0.155876455594384040,\t-0.155925844227470270,\t-0.155975232470741470,\t-0.156024620324074580,\t-0.156074007787346120,\t-0.156123394860433110,\t\n-0.156172781543211150,\t-0.156222167835557260,\t-0.156271553737347940,\t-0.156320939248460160,\t-0.156370324368769600,\t-0.156419709098153230,\t-0.156469093436488040,\t-0.156518477383649660,\t\n-0.156567860939515110,\t-0.156617244103960880,\t-0.156666626876863970,\t-0.156716009258100090,\t-0.156765391247546180,\t-0.156814772845078780,\t-0.156864154050574880,\t-0.156913534863910160,\t\n-0.156962915284961620,\t-0.157012295313605780,\t-0.157061674949719650,\t-0.157111054193178860,\t-0.157160433043860490,\t-0.157209811501640980,\t-0.157259189566397420,\t-0.157308567238005430,\t\n-0.157357944516342020,\t-0.157407321401284220,\t-0.157456697892707640,\t-0.157506073990489330,\t-0.157555449694505830,\t-0.157604825004634130,\t-0.157654199920749970,\t-0.157703574442730280,\t\n-0.157752948570451660,\t-0.157802322303791100,\t-0.157851695642624300,\t-0.157901068586828260,\t-0.157950441136279570,\t-0.157999813290855190,\t-0.158049185050430830,\t-0.158098556414883550,\t\n-0.158147927384089840,\t-0.158197297957926780,\t-0.158246668136270000,\t-0.158296037918996570,\t-0.158345407305983480,\t-0.158394776297106440,\t-0.158444144892242460,\t-0.158493513091268110,\t\n-0.158542880894060430,\t-0.158592248300495090,\t-0.158641615310449150,\t-0.158690981923799160,\t-0.158740348140422150,\t-0.158789713960193840,\t-0.158839079382991240,\t-0.158888444408690930,\t\n-0.158937809037169970,\t-0.158987173268304030,\t-0.159036537101970190,\t-0.159085900538044970,\t-0.159135263576405450,\t-0.159184626216927330,\t-0.159233988459487660,\t-0.159283350303963430,\t\n-0.159332711750230390,\t-0.159382072798165600,\t-0.159431433447645600,\t-0.159480793698547480,\t-0.159530153550746900,\t-0.159579513004120960,\t-0.159628872058546260,\t-0.159678230713899780,\t\n-0.159727588970057290,\t-0.159776946826895830,\t-0.159826304284292040,\t-0.159875661342122890,\t-0.159925018000264150,\t-0.159974374258592870,\t-0.160023730116985650,\t-0.160073085575319550,\t\n-0.160122440633470310,\t-0.160171795291314950,\t-0.160221149548730100,\t-0.160270503405592820,\t-0.160319856861778850,\t-0.160369209917165220,\t-0.160418562571629040,\t-0.160467914825045970,\t\n-0.160517266677293130,\t-0.160566618128247130,\t-0.160615969177785030,\t-0.160665319825782550,\t-0.160714670072116790,\t-0.160764019916664340,\t-0.160813369359302290,\t-0.160862718399906370,\t\n-0.160912067038353650,\t-0.160961415274520760,\t-0.161010763108284800,\t-0.161060110539521460,\t-0.161109457568107850,\t-0.161158804193920620,\t-0.161208150416836780,\t-0.161257496236732160,\t\n-0.161306841653483770,\t-0.161356186666968740,\t-0.161405531277062810,\t-0.161454875483643040,\t-0.161504219286586060,\t-0.161553562685768980,\t-0.161602905681067580,\t-0.161652248272358880,\t\n-0.161701590459519600,\t-0.161750932242426760,\t-0.161800273620956140,\t-0.161849614594984870,\t-0.161898955164389540,\t-0.161948295329047250,\t-0.161997635088833800,\t-0.162046974443626260,\t\n-0.162096313393301270,\t-0.162145651937735950,\t-0.162194990076806070,\t-0.162244327810388690,\t-0.162293665138360940,\t-0.162343002060598600,\t-0.162392338576978740,\t-0.162441674687378050,\t\n-0.162491010391673600,\t-0.162540345689741180,\t-0.162589680581457920,\t-0.162639015066700450,\t-0.162688349145345860,\t-0.162737682817269970,\t-0.162787016082349880,\t-0.162836348940462230,\t\n-0.162885681391484180,\t-0.162935013435291460,\t-0.162984345071761210,\t-0.163033676300770120,\t-0.163083007122195260,\t-0.163132337535912440,\t-0.163181667541798770,\t-0.163230997139730940,\t\n-0.163280326329586060,\t-0.163329655111239920,\t-0.163378983484569670,\t-0.163428311449452360,\t-0.163477639005763840,\t-0.163526966153381250,\t-0.163576292892181230,\t-0.163625619222040890,\t\n-0.163674945142836090,\t-0.163724270654443920,\t-0.163773595756741080,\t-0.163822920449604700,\t-0.163872244732910570,\t-0.163921568606535810,\t-0.163970892070357140,\t-0.164020215124251690,\t\n-0.164069537768095240,\t-0.164118860001764980,\t-0.164168181825137540,\t-0.164217503238090090,\t-0.164266824240498460,\t-0.164316144832239750,\t-0.164365465013191130,\t-0.164414784783228410,\t\n-0.164464104142228700,\t-0.164513423090068780,\t-0.164562741626625710,\t-0.164612059751775340,\t-0.164661377465394830,\t-0.164710694767360890,\t-0.164760011657550610,\t-0.164809328135839900,\t\n-0.164858644202105860,\t-0.164907959856225220,\t-0.164957275098075120,\t-0.165006589927531370,\t-0.165055904344471150,\t-0.165105218348771180,\t-0.165154531940308600,\t-0.165203845118959250,\t\n-0.165253157884600290,\t-0.165302470237108870,\t-0.165351782176360850,\t-0.165401093702233350,\t-0.165450404814603130,\t-0.165499715513347360,\t-0.165549025798341830,\t-0.165598335669463750,\t\n-0.165647645126589800,\t-0.165696954169597200,\t-0.165746262798361800,\t-0.165795571012760710,\t-0.165844878812670710,\t-0.165894186197968950,\t-0.165943493168531270,\t-0.165992799724234860,\t\n-0.166042105864956460,\t-0.166091411590573250,\t-0.166140716900961050,\t-0.166190021795997070,\t-0.166239326275558460,\t-0.166288630339521100,\t-0.166337933987762170,\t-0.166387237220158410,\t\n-0.166436540036586980,\t-0.166485842436923770,\t-0.166535144421045940,\t-0.166584445988830270,\t-0.166633747140153910,\t-0.166683047874892770,\t-0.166732348192923980,\t-0.166781648094124320,\t\n-0.166830947578371000,\t-0.166880246645539850,\t-0.166929545295508100,\t-0.166978843528152480,\t-0.167028141343350200,\t-0.167077438740977110,\t-0.167126735720910440,\t-0.167176032283026910,\t\n-0.167225328427203750,\t-0.167274624153316840,\t-0.167323919461243360,\t-0.167373214350860530,\t-0.167422508822044210,\t-0.167471802874671620,\t-0.167521096508619540,\t-0.167570389723765150,\t\n-0.167619682519984330,\t-0.167668974897154320,\t-0.167718266855151870,\t-0.167767558393854180,\t-0.167816849513137190,\t-0.167866140212878050,\t-0.167915430492953540,\t-0.167964720353240920,\t\n-0.168014009793616050,\t-0.168063298813956180,\t-0.168112587414138040,\t-0.168161875594038860,\t-0.168211163353534590,\t-0.168260450692502370,\t-0.168309737610819490,\t-0.168359024108361820,\t\n-0.168408310185006570,\t-0.168457595840630580,\t-0.168506881075111000,\t-0.168556165888323810,\t-0.168605450280146200,\t-0.168654734250454960,\t-0.168704017799127300,\t-0.168753300926039180,\t\n-0.168802583631067820,\t-0.168851865914089990,\t-0.168901147774982940,\t-0.168950429213622580,\t-0.168999710229886140,\t-0.169048990823650410,\t-0.169098270994792660,\t-0.169147550743188800,\t\n-0.169196830068716050,\t-0.169246108971251670,\t-0.169295387450671580,\t-0.169344665506853010,\t-0.169393943139672790,\t-0.169443220349008130,\t-0.169492497134735020,\t-0.169541773496730640,\t\n-0.169591049434871830,\t-0.169640324949035830,\t-0.169689600039098580,\t-0.169738874704937340,\t-0.169788148946428910,\t-0.169837422763450540,\t-0.169886696155878180,\t-0.169935969123589080,\t\n-0.169985241666460060,\t-0.170034513784368370,\t-0.170083785477189940,\t-0.170133056744802090,\t-0.170182327587081540,\t-0.170231598003905670,\t-0.170280867995150330,\t-0.170330137560692820,\t\n-0.170379406700410410,\t-0.170428675414179050,\t-0.170477943701875990,\t-0.170527211563378110,\t-0.170576478998562600,\t-0.170625746007305460,\t-0.170675012589483950,\t-0.170724278744974920,\t\n-0.170773544473655640,\t-0.170822809775402040,\t-0.170872074650091440,\t-0.170921339097600630,\t-0.170970603117806930,\t-0.171019866710586250,\t-0.171069129875815930,\t-0.171118392613372780,\t\n-0.171167654923134100,\t-0.171216916804975830,\t-0.171266178258775270,\t-0.171315439284409700,\t-0.171364699881755090,\t-0.171413960050688760,\t-0.171463219791087500,\t-0.171512479102828630,\t\n-0.171561737985788140,\t-0.171610996439843290,\t-0.171660254464870960,\t-0.171709512060748410,\t-0.171758769227351670,\t-0.171808025964557990,\t-0.171857282272244260,\t-0.171906538150287750,\t\n-0.171955793598564470,\t-0.172005048616951710,\t-0.172054303205326300,\t-0.172103557363565580,\t-0.172152811091545540,\t-0.172202064389143460,\t-0.172251317256236660,\t-0.172300569692701130,\t\n-0.172349821698414200,\t-0.172399073273252680,\t-0.172448324417093930,\t-0.172497575129813920,\t-0.172546825411289990,\t-0.172596075261399000,\t-0.172645324680018250,\t-0.172694573667023730,\t\n-0.172743822222292810,\t-0.172793070345702320,\t-0.172842318037129600,\t-0.172891565296450640,\t-0.172940812123542760,\t-0.172990058518282840,\t-0.173039304480548240,\t-0.173088550010214920,\t\n-0.173137795107160240,\t-0.173187039771261510,\t-0.173236284002394710,\t-0.173285527800437240,\t-0.173334771165265940,\t-0.173384014096758160,\t-0.173433256594789890,\t-0.173482498659238480,\t\n-0.173531740289980810,\t-0.173580981486894240,\t-0.173630222249854800,\t-0.173679462578739780,\t-0.173728702473426120,\t-0.173777941933791120,\t-0.173827180959710840,\t-0.173876419551062620,\t\n-0.173925657707723340,\t-0.173974895429570340,\t-0.174024132716479680,\t-0.174073369568328670,\t-0.174122605984994270,\t-0.174171841966353770,\t-0.174221077512283220,\t-0.174270312622659990,\t\n-0.174319547297361400,\t-0.174368781536263530,\t-0.174418015339243700,\t-0.174467248706178800,\t-0.174516481636946250,\t-0.174565714131422050,\t-0.174614946189483560,\t-0.174664177811007710,\t\n-0.174713408995871840,\t-0.174762639743952040,\t-0.174811870055125610,\t-0.174861099929269510,\t-0.174910329366261110,\t-0.174959558365976460,\t-0.175008786928292890,\t-0.175058015053087380,\t\n-0.175107242740237230,\t-0.175156469989618560,\t-0.175205696801108730,\t-0.175254923174585080,\t-0.175304149109923670,\t-0.175353374607001900,\t-0.175402599665696680,\t-0.175451824285885430,\t\n-0.175501048467444160,\t-0.175550272210250270,\t-0.175599495514180690,\t-0.175648718379112830,\t-0.175697940804922740,\t-0.175747162791487780,\t-0.175796384338684910,\t-0.175845605446391520,\t\n-0.175894826114483680,\t-0.175944046342838780,\t-0.175993266131333760,\t-0.176042485479846020,\t-0.176091704388251640,\t-0.176140922856427990,\t-0.176190140884252440,\t-0.176239358471601130,\t\n-0.176288575618351430,\t-0.176337792324380270,\t-0.176387008589565080,\t-0.176436224413781930,\t-0.176485439796908200,\t-0.176534654738820910,\t-0.176583869239397400,\t-0.176633083298513770,\t\n-0.176682296916047420,\t-0.176731510091875350,\t-0.176780722825874950,\t-0.176829935117922300,\t-0.176879146967894810,\t-0.176928358375669450,\t-0.176977569341123630,\t-0.177026779864133450,\t\n-0.177075989944576320,\t-0.177125199582329220,\t-0.177174408777269530,\t-0.177223617529273430,\t-0.177272825838218240,\t-0.177322033703981450,\t-0.177371241126439150,\t-0.177420448105468730,\t\n-0.177469654640947190,\t-0.177518860732751940,\t-0.177568066380759120,\t-0.177617271584846110,\t-0.177666476344889940,\t-0.177715680660768010,\t-0.177764884532356450,\t-0.177814087959532690,\t\n-0.177863290942173680,\t-0.177912493480156890,\t-0.177961695573358450,\t-0.178010897221655750,\t-0.178060098424925820,\t-0.178109299183046050,\t-0.178158499495892630,\t-0.178207699363342940,\t\n-0.178256898785274450,\t-0.178306097761563280,\t-0.178355296292086850,\t-0.178404494376722210,\t-0.178453692015346750,\t-0.178502889207836610,\t-0.178552085954069270,\t-0.178601282253921690,\t\n-0.178650478107271360,\t-0.178699673513994410,\t-0.178748868473968260,\t-0.178798062987069930,\t-0.178847257053176890,\t-0.178896450672165250,\t-0.178945643843912510,\t-0.178994836568295650,\t\n-0.179044028845192160,\t-0.179093220674478140,\t-0.179142412056031070,\t-0.179191602989728390,\t-0.179240793475446280,\t-0.179289983513062190,\t-0.179339173102453150,\t-0.179388362243496610,\t\n-0.179437550936068700,\t-0.179486739180046930,\t-0.179535926975308320,\t-0.179585114321730330,\t-0.179634301219189110,\t-0.179683487667562150,\t-0.179732673666726460,\t-0.179781859216559510,\t\n-0.179831044316937500,\t-0.179880228967737870,\t-0.179929413168837650,\t-0.179978596920114360,\t-0.180027780221444140,\t-0.180076963072704460,\t-0.180126145473772810,\t-0.180175327424525360,\t\n-0.180224508924839570,\t-0.180273689974592530,\t-0.180322870573661700,\t-0.180372050721923280,\t-0.180421230419254700,\t-0.180470409665533040,\t-0.180519588460635820,\t-0.180568766804439170,\t\n-0.180617944696820630,\t-0.180667122137657200,\t-0.180716299126826410,\t-0.180765475664204450,\t-0.180814651749668790,\t-0.180863827383096500,\t-0.180913002564365070,\t-0.180962177293350710,\t\n-0.181011351569930900,\t-0.181060525393982710,\t-0.181109698765383630,\t-0.181158871684009900,\t-0.181208044149738980,\t-0.181257216162448360,\t-0.181306387722014290,\t-0.181355558828314250,\t\n-0.181404729481225300,\t-0.181453899680624970,\t-0.181503069426389470,\t-0.181552238718396260,\t-0.181601407556522490,\t-0.181650575940645630,\t-0.181699743870641860,\t-0.181748911346388760,\t\n-0.181798078367763380,\t-0.181847244934643240,\t-0.181896411046904540,\t-0.181945576704424820,\t-0.181994741907081180,\t-0.182043906654751090,\t-0.182093070947310810,\t-0.182142234784637870,\t\n-0.182191398166609760,\t-0.182240561093102720,\t-0.182289723563994250,\t-0.182338885579161500,\t-0.182388047138481970,\t-0.182437208241831910,\t-0.182486368889088780,\t-0.182535529080129770,\t\n-0.182584688814832360,\t-0.182633848093072790,\t-0.182683006914728610,\t-0.182732165279676890,\t-0.182781323187795190,\t-0.182830480638959760,\t-0.182879637633048150,\t-0.182928794169937430,\t\n-0.182977950249505140,\t-0.183027105871627570,\t-0.183076261036182210,\t-0.183125415743046640,\t-0.183174569992097110,\t-0.183223723783211140,\t-0.183272877116265860,\t-0.183322029991138840,\t\n-0.183371182407706280,\t-0.183420334365845790,\t-0.183469485865434460,\t-0.183518636906349840,\t-0.183567787488468190,\t-0.183616937611667090,\t-0.183666087275823620,\t-0.183715236480815390,\t\n-0.183764385226518640,\t-0.183813533512810910,\t-0.183862681339569340,\t-0.183911828706671530,\t-0.183960975613993690,\t-0.184010122061413400,\t-0.184059268048807820,\t-0.184108413576054510,\t\n-0.184157558643029740,\t-0.184206703249611050,\t-0.184255847395676050,\t-0.184304991081100990,\t-0.184354134305763470,\t-0.184403277069540600,\t-0.184452419372309970,\t-0.184501561213947870,\t\n-0.184550702594331840,\t-0.184599843513339080,\t-0.184648983970847140,\t-0.184698123966732300,\t-0.184747263500872140,\t-0.184796402573143840,\t-0.184845541183424970,\t-0.184894679331591790,\t\n-0.184943817017521940,\t-0.184992954241092520,\t-0.185042091002181160,\t-0.185091227300664160,\t-0.185140363136419070,\t-0.185189498509323510,\t-0.185238633419253760,\t-0.185287767866087440,\t\n-0.185336901849701700,\t-0.185386035369974140,\t-0.185435168426781040,\t-0.185484301020000050,\t-0.185533433149508260,\t-0.185582564815183370,\t-0.185631696016901600,\t-0.185680826754540620,\t\n-0.185729957027977570,\t-0.185779086837090050,\t-0.185828216181754350,\t-0.185877345061848160,\t-0.185926473477248580,\t-0.185975601427833260,\t-0.186024728913478490,\t-0.186073855934061920,\t\n-0.186122982489461130,\t-0.186172108579552440,\t-0.186221234204213490,\t-0.186270359363321450,\t-0.186319484056753970,\t-0.186368608284387310,\t-0.186417732046099150,\t-0.186466855341766660,\t\n-0.186515978171267440,\t-0.186565100534477860,\t-0.186614222431275540,\t-0.186663343861537660,\t-0.186712464825141840,\t-0.186761585321964440,\t-0.186810705351883070,\t-0.186859824914774930,\t\n-0.186908944010517660,\t-0.186958062638987620,\t-0.187007180800062400,\t-0.187056298493619680,\t-0.187105415719535760,\t-0.187154532477688320,\t-0.187203648767954530,\t-0.187252764590212060,\t\n-0.187301879944337250,\t-0.187350994830207730,\t-0.187400109247700730,\t-0.187449223196693910,\t-0.187498336677063560,\t-0.187547449688687390,\t-0.187596562231442610,\t-0.187645674305206840,\t\n-0.187694785909856440,\t-0.187743897045269090,\t-0.187793007711321990,\t-0.187842117907892820,\t-0.187891227634857910,\t-0.187940336892094940,\t-0.187989445679481120,\t-0.188038553996894090,\t\n-0.188087661844210270,\t-0.188136769221307320,\t-0.188185876128062840,\t-0.188234982564353250,\t-0.188284088530056210,\t-0.188333194025048940,\t-0.188382299049209140,\t-0.188431403602413140,\t\n-0.188480507684538640,\t-0.188529611295462860,\t-0.188578714435063490,\t-0.188627817103216910,\t-0.188676919299800770,\t-0.188726021024692330,\t-0.188775122277769300,\t-0.188824223058908000,\t\n-0.188873323367986150,\t-0.188922423204881010,\t-0.188971522569470220,\t-0.189020621461630210,\t-0.189069719881238630,\t-0.189118817828173190,\t-0.189167915302310280,\t-0.189217012303527580,\t\n-0.189266108831702330,\t-0.189315204886712270,\t-0.189364300468433750,\t-0.189413395576744470,\t-0.189462490211521730,\t-0.189511584372643180,\t-0.189560678059985220,\t-0.189609771273425570,\t\n-0.189658864012841520,\t-0.189707956278110710,\t-0.189757048069109590,\t-0.189806139385715860,\t-0.189855230227806790,\t-0.189904320595260050,\t-0.189953410487952080,\t-0.190002499905760600,\t\n-0.190051588848563300,\t-0.190100677316236590,\t-0.190149765308658180,\t-0.190198852825705370,\t-0.190247939867255830,\t-0.190297026433186050,\t-0.190346112523373660,\t-0.190395198137696040,\t\n-0.190444283276030830,\t-0.190493367938254470,\t-0.190542452124244700,\t-0.190591535833878810,\t-0.190640619067034500,\t-0.190689701823588210,\t-0.190738784103417660,\t-0.190787865906400150,\t\n-0.190836947232413430,\t-0.190886028081333900,\t-0.190935108453039290,\t-0.190984188347406910,\t-0.191033267764314510,\t-0.191082346703638490,\t-0.191131425165256610,\t-0.191180503149046580,\t\n-0.191229580654884880,\t-0.191278657682649230,\t-0.191327734232216940,\t-0.191376810303465730,\t-0.191425885896272070,\t-0.191474961010513700,\t-0.191524035646067930,\t-0.191573109802812500,\t\n-0.191622183480623850,\t-0.191671256679379760,\t-0.191720329398957500,\t-0.191769401639234890,\t-0.191818473400088310,\t-0.191867544681395550,\t-0.191916615483033960,\t-0.191965685804881240,\t\n-0.192014755646813860,\t-0.192063825008709610,\t-0.192112893890446220,\t-0.192161962291900160,\t-0.192211030212949220,\t-0.192260097653470690,\t-0.192309164613342350,\t-0.192358231092440660,\t\n-0.192407297090643390,\t-0.192456362607827890,\t-0.192505427643871910,\t-0.192554492198651920,\t-0.192603556272045700,\t-0.192652619863930590,\t-0.192701682974184390,\t-0.192750745602683520,\t\n-0.192799807749305770,\t-0.192848869413928540,\t-0.192897930596429570,\t-0.192946991296685300,\t-0.192996051514573580,\t-0.193045111249972170,\t-0.193094170502757540,\t-0.193143229272807470,\t\n-0.193192287559999340,\t-0.193241345364210950,\t-0.193290402685318720,\t-0.193339459523200500,\t-0.193388515877733650,\t-0.193437571748795920,\t-0.193486627136263830,\t-0.193535682040015170,\t\n-0.193584736459927330,\t-0.193633790395878050,\t-0.193682843847743900,\t-0.193731896815402590,\t-0.193780949298731580,\t-0.193830001297608610,\t-0.193879052811910200,\t-0.193928103841514180,\t\n-0.193977154386297870,\t-0.194026204446139130,\t-0.194075254020914440,\t-0.194124303110501610,\t-0.194173351714778450,\t-0.194222399833621500,\t-0.194271447466908530,\t-0.194320494614516950,\t\n-0.194369541276324580,\t-0.194418587452207910,\t-0.194467633142044770,\t-0.194516678345712540,\t-0.194565723063089060,\t-0.194614767294050830,\t-0.194663811038475690,\t-0.194712854296241020,\t\n-0.194761897067224660,\t-0.194810939351303090,\t-0.194859981148354210,\t-0.194909022458255340,\t-0.194958063280884390,\t-0.195007103616117810,\t-0.195056143463833490,\t-0.195105182823909230,\t\n-0.195154221696221600,\t-0.195203260080648420,\t-0.195252297977067060,\t-0.195301335385355410,\t-0.195350372305389990,\t-0.195399408737048640,\t-0.195448444680208750,\t-0.195497480134748190,\t\n-0.195546515100543490,\t-0.195595549577472520,\t-0.195644583565412670,\t-0.195693617064241790,\t-0.195742650073836450,\t-0.195791682594074480,\t-0.195840714624833300,\t-0.195889746165990750,\t\n-0.195938777217423420,\t-0.195987807779009120,\t-0.196036837850625760,\t-0.196085867432149870,\t-0.196134896523459310,\t-0.196183925124431500,\t-0.196232953234944330,\t-0.196281980854874330,\t\n-0.196331007984099390,\t-0.196380034622496900,\t-0.196429060769944790,\t-0.196478086426319590,\t-0.196527111591499160,\t-0.196576136265360940,\t-0.196625160447782830,\t-0.196674184138641380,\t\n-0.196723207337814480,\t-0.196772230045179570,\t-0.196821252260614500,\t-0.196870273983995870,\t-0.196919295215201550,\t-0.196968315954109440,\t-0.197017336200596080,\t-0.197066355954539420,\t\n-0.197115375215816850,\t-0.197164393984306270,\t-0.197213412259884260,\t-0.197262430042428740,\t-0.197311447331817130,\t-0.197360464127927350,\t-0.197409480430635970,\t-0.197458496239820900,\t\n-0.197507511555359590,\t-0.197556526377129920,\t-0.197605540705008490,\t-0.197654554538873230,\t-0.197703567878601580,\t-0.197752580724071450,\t-0.197801593075159430,\t-0.197850604931743420,\t\n-0.197899616293700900,\t-0.197948627160909770,\t-0.197997637533246650,\t-0.198046647410589420,\t-0.198095656792816020,\t-0.198144665679803040,\t-0.198193674071428380,\t-0.198242681967569560,\t\n-0.198291689368104460,\t-0.198340696272909710,\t-0.198389702681863210,\t-0.198438708594842440,\t-0.198487714011725350,\t-0.198536718932388530,\t-0.198585723356709930,\t-0.198634727284567020,\t\n-0.198683730715837700,\t-0.198732733650398650,\t-0.198781736088127740,\t-0.198830738028902500,\t-0.198879739472600870,\t-0.198928740419099440,\t-0.198977740868276160,\t-0.199026740820008960,\t\n-0.199075740274174460,\t-0.199124739230650630,\t-0.199173737689314960,\t-0.199222735650045360,\t-0.199271733112718480,\t-0.199320730077212290,\t-0.199369726543404260,\t-0.199418722511172350,\t\n-0.199467717980393200,\t-0.199516712950944780,\t-0.199565707422704550,\t-0.199614701395550490,\t-0.199663694869359230,\t-0.199712687844008750,\t-0.199761680319376550,\t-0.199810672295340580,\t\n-0.199859663771777500,\t-0.199908654748565260,\t-0.199957645225581820,\t-0.200006635202703810,\t-0.200055624679809220,\t-0.200104613656775590,\t-0.200153602133480850,\t-0.200202590109801680,\t\n-0.200251577585616010,\t-0.200300564560801420,\t-0.200349551035235830,\t-0.200398537008795950,\t-0.200447522481359720,\t-0.200496507452804670,\t-0.200545491923008800,\t-0.200594475891848760,\t\n-0.200643459359202550,\t-0.200692442324947680,\t-0.200741424788962120,\t-0.200790406751122590,\t-0.200839388211307040,\t-0.200888369169392980,\t-0.200937349625258470,\t-0.200986329578780150,\t\n-0.201035309029835990,\t-0.201084287978304020,\t-0.201133266424060870,\t-0.201182244366984560,\t-0.201231221806952630,\t-0.201280198743843090,\t-0.201329175177532630,\t-0.201378151107899220,\t\n-0.201427126534820450,\t-0.201476101458174270,\t-0.201525075877837410,\t-0.201574049793687870,\t-0.201623023205603210,\t-0.201671996113461400,\t-0.201720968517139190,\t-0.201769940416514550,\t\n-0.201818911811465080,\t-0.201867882701868730,\t-0.201916853087602270,\t-0.201965822968543650,\t-0.202014792344570930,\t-0.202063761215560770,\t-0.202112729581391230,\t-0.202161697441939850,\t\n-0.202210664797084660,\t-0.202259631646702380,\t-0.202308597990671020,\t-0.202357563828868190,\t-0.202406529161171860,\t-0.202455493987458770,\t-0.202504458307606940,\t-0.202553422121493990,\t\n-0.202602385428997890,\t-0.202651348229995420,\t-0.202700310524364570,\t-0.202749272311982920,\t-0.202798233592728560,\t-0.202847194366478160,\t-0.202896154633109780,\t-0.202945114392501460,\t\n-0.202994073644529900,\t-0.203043032389073150,\t-0.203091990626008830,\t-0.203140948355214980,\t-0.203189905576568320,\t-0.203238862289946890,\t-0.203287818495228310,\t-0.203336774192290600,\t\n-0.203385729381010540,\t-0.203434684061266140,\t-0.203483638232935050,\t-0.203532591895895290,\t-0.203581545050023600,\t-0.203630497695198090,\t-0.203679449831296290,\t-0.203728401458196320,\t\n-0.203777352575774920,\t-0.203826303183910120,\t-0.203875253282480020,\t-0.203924202871361320,\t-0.203973151950432140,\t-0.204022100519570070,\t-0.204071048578653190,\t-0.204119996127558240,\t\n-0.204168943166163320,\t-0.204217889694346010,\t-0.204266835711984450,\t-0.204315781218955360,\t-0.204364726215136790,\t-0.204413670700406420,\t-0.204462614674642300,\t-0.204511558137721230,\t\n-0.204560501089521230,\t-0.204609443529920000,\t-0.204658385458795610,\t-0.204707326876024800,\t-0.204756267781485670,\t-0.204805208175055880,\t-0.204854148056613510,\t-0.204903087426035330,\t\n-0.204952026283199450,\t-0.205000964627983890,\t-0.205049902460265530,\t-0.205098839779922380,\t-0.205147776586832170,\t-0.205196712880872930,\t-0.205245648661921460,\t-0.205294583929855890,\t\n-0.205343518684553860,\t-0.205392452925893450,\t-0.205441386653751500,\t-0.205490319868006060,\t-0.205539252568534840,\t-0.205588184755215900,\t-0.205637116427926060,\t-0.205686047586543460,\t\n-0.205734978230945720,\t-0.205783908361010990,\t-0.205832837976616030,\t-0.205881767077638970,\t-0.205930695663957970,\t-0.205979623735449760,\t-0.206028551291992490,\t-0.206077478333463850,\t\n-0.206126404859741960,\t-0.206175330870703610,\t-0.206224256366226930,\t-0.206273181346189600,\t-0.206322105810469780,\t-0.206371029758944250,\t-0.206419953191491150,\t-0.206468876107988140,\t\n-0.206517798508313420,\t-0.206566720392343720,\t-0.206615641759957250,\t-0.206664562611031670,\t-0.206713482945445120,\t-0.206762402763074420,\t-0.206811322063797740,\t-0.206860240847493160,\t\n-0.206909159114037540,\t-0.206958076863309030,\t-0.207006994095185330,\t-0.207055910809544580,\t-0.207104827006263620,\t-0.207153742685220600,\t-0.207202657846293210,\t-0.207251572489359630,\t\n-0.207300486614296650,\t-0.207349400220982470,\t-0.207398313309294810,\t-0.207447225879111770,\t-0.207496137930310240,\t-0.207545049462768390,\t-0.207593960476363890,\t-0.207642870970974950,\t\n-0.207691780946478360,\t-0.207740690402752340,\t-0.207789599339674590,\t-0.207838507757123290,\t-0.207887415654975260,\t-0.207936323033108690,\t-0.207985229891401780,\t-0.208034136229731330,\t\n-0.208083042047975560,\t-0.208131947346012170,\t-0.208180852123719340,\t-0.208229756380973960,\t-0.208278660117654200,\t-0.208327563333637780,\t-0.208376466028802890,\t-0.208425368203026370,\t\n-0.208474269856186470,\t-0.208523170988160870,\t-0.208572071598827790,\t-0.208620971688064090,\t-0.208669871255747960,\t-0.208718770301757170,\t-0.208767668825969870,\t-0.208816566828262970,\t\n-0.208865464308514630,\t-0.208914361266603090,\t-0.208963257702405200,\t-0.209012153615799200,\t-0.209061049006662780,\t-0.209109943874874170,\t-0.209158838220310280,\t-0.209207732042849290,\t\n-0.209256625342368970,\t-0.209305518118747540,\t-0.209354410371861840,\t-0.209403302101590140,\t-0.209452193307810200,\t-0.209501083990400180,\t-0.209549974149237040,\t-0.209598863784198950,\t\n-0.209647752895163710,\t-0.209696641482009500,\t-0.209745529544613290,\t-0.209794417082853210,\t-0.209843304096607560,\t-0.209892190585753200,\t-0.209941076550168360,\t-0.209989961989730830,\t\n-0.210038846904318840,\t-0.210087731293809280,\t-0.210136615158080410,\t-0.210185498497010010,\t-0.210234381310476280,\t-0.210283263598356170,\t-0.210332145360527910,\t-0.210381026596869270,\t\n-0.210429907307258500,\t-0.210478787491572530,\t-0.210527667149689600,\t-0.210576546281487480,\t-0.210625424886844440,\t-0.210674302965637410,\t-0.210723180517744630,\t-0.210772057543044320,\t\n-0.210820934041413420,\t-0.210869810012730200,\t-0.210918685456872450,\t-0.210967560373718440,\t-0.211016434763145080,\t-0.211065308625030620,\t-0.211114181959252910,\t-0.211163054765690170,\t\n-0.211211927044219370,\t-0.211260798794718730,\t-0.211309670017066100,\t-0.211358540711139740,\t-0.211407410876816610,\t-0.211456280513974910,\t-0.211505149622492530,\t-0.211554018202247730,\t\n-0.211602886253117430,\t-0.211651753774979910,\t-0.211700620767713010,\t-0.211749487231194990,\t-0.211798353165302820,\t-0.211847218569914790,\t-0.211896083444909120,\t-0.211944947790162820,\t\n-0.211993811605554140,\t-0.212042674890960930,\t-0.212091537646261460,\t-0.212140399871332740,\t-0.212189261566053000,\t-0.212238122730300100,\t-0.212286983363952350,\t-0.212335843466886690,\t\n-0.212384703038981440,\t-0.212433562080114410,\t-0.212482420590163920,\t-0.212531278569006940,\t-0.212580136016521790,\t-0.212628992932586270,\t-0.212677849317078700,\t-0.212726705169876100,\t\n-0.212775560490856720,\t-0.212824415279898870,\t-0.212873269536879540,\t-0.212922123261677060,\t-0.212970976454169240,\t-0.213019829114234450,\t-0.213068681241749630,\t-0.213117532836593100,\t\n-0.213166383898642760,\t-0.213215234427776870,\t-0.213264084423872490,\t-0.213312933886807890,\t-0.213361782816460930,\t-0.213410631212709980,\t-0.213459479075432000,\t-0.213508326404505320,\t\n-0.213557173199807830,\t-0.213606019461217850,\t-0.213654865188612380,\t-0.213703710381869750,\t-0.213752555040868260,\t-0.213801399165484960,\t-0.213850242755598160,\t-0.213899085811085770,\t\n-0.213947928331826100,\t-0.213996770317696150,\t-0.214045611768574280,\t-0.214094452684338410,\t-0.214143293064866820,\t-0.214192132910036550,\t-0.214240972219725960,\t-0.214289810993812950,\t\n-0.214338649232175830,\t-0.214387486934691670,\t-0.214436324101238780,\t-0.214485160731695070,\t-0.214533996825938930,\t-0.214582832383847340,\t-0.214631667405298650,\t-0.214680501890170820,\t\n-0.214729335838342170,\t-0.214778169249689730,\t-0.214827002124091860,\t-0.214875834461426940,\t-0.214924666261572000,\t-0.214973497524405390,\t-0.215022328249805020,\t-0.215071158437649290,\t\n-0.215119988087815210,\t-0.215168817200181160,\t-0.215217645774625070,\t-0.215266473811025320,\t-0.215315301309258940,\t-0.215364128269204290,\t-0.215412954690739340,\t-0.215461780573742430,\t\n-0.215510605918090630,\t-0.215559430723662320,\t-0.215608254990335420,\t-0.215657078717988340,\t-0.215705901906498100,\t-0.215754724555743130,\t-0.215803546665601780,\t-0.215852368235951140,\t\n-0.215901189266669540,\t-0.215950009757635010,\t-0.215998829708725860,\t-0.216047649119819220,\t-0.216096467990793460,\t-0.216145286321526520,\t-0.216194104111896800,\t-0.216242921361781390,\t\n-0.216291738071058670,\t-0.216340554239606600,\t-0.216389369867303590,\t-0.216438184954026700,\t-0.216486999499654360,\t-0.216535813504064530,\t-0.216584626967135600,\t-0.216633439888744670,\t\n-0.216682252268770140,\t-0.216731064107090390,\t-0.216779875403582570,\t-0.216828686158125060,\t-0.216877496370595830,\t-0.216926306040873290,\t-0.216975115168834550,\t-0.217023923754358030,\t\n-0.217072731797321700,\t-0.217121539297603970,\t-0.217170346255081970,\t-0.217219152669634100,\t-0.217267958541138340,\t-0.217316763869473130,\t-0.217365568654515560,\t-0.217414372896144070,\t\n-0.217463176594236670,\t-0.217511979748671730,\t-0.217560782359326440,\t-0.217609584426079170,\t-0.217658385948808370,\t-0.217707186927391190,\t-0.217755987361706040,\t-0.217804787251630910,\t\n-0.217853586597044240,\t-0.217902385397823200,\t-0.217951183653846160,\t-0.217999981364991190,\t-0.218048778531136690,\t-0.218097575152159800,\t-0.218146371227938980,\t-0.218195166758352240,\t\n-0.218243961743278010,\t-0.218292756182593440,\t-0.218341550076177000,\t-0.218390343423906670,\t-0.218439136225660910,\t-0.218487928481316870,\t-0.218536720190753010,\t-0.218585511353847380,\t\n-0.218634301970478370,\t-0.218683092040523190,\t-0.218731881563860280,\t-0.218780670540368090,\t-0.218829458969923780,\t-0.218878246852405840,\t-0.218927034187692300,\t-0.218975820975661570,\t\n-0.219024607216190880,\t-0.219073392909158670,\t-0.219122178054442950,\t-0.219170962651922260,\t-0.219219746701473710,\t-0.219268530202975790,\t-0.219317313156306540,\t-0.219366095561344450,\t\n-0.219414877417966700,\t-0.219463658726051750,\t-0.219512439485477630,\t-0.219561219696122860,\t-0.219609999357864630,\t-0.219658778470581380,\t-0.219707557034151600,\t-0.219756335048452520,\t\n-0.219805112513362600,\t-0.219853889428759890,\t-0.219902665794522890,\t-0.219951441610528790,\t-0.220000216876656110,\t-0.220048991592782850,\t-0.220097765758787590,\t-0.220146539374547450,\t\n-0.220195312439940950,\t-0.220244084954846210,\t-0.220292856919141660,\t-0.220341628332704540,\t-0.220390399195413370,\t-0.220439169507146180,\t-0.220487939267781490,\t-0.220536708477196530,\t\n-0.220585477135269800,\t-0.220634245241879830,\t-0.220683012796903780,\t-0.220731779800220210,\t-0.220780546251707200,\t-0.220829312151243270,\t-0.220878077498705580,\t-0.220926842293972750,\t\n-0.220975606536922780,\t-0.221024370227434240,\t-0.221073133365384340,\t-0.221121895950651600,\t-0.221170657983114140,\t-0.221219419462650450,\t-0.221268180389137760,\t-0.221316940762454640,\t\n-0.221365700582479170,\t-0.221414459849089890,\t-0.221463218562164030,\t-0.221511976721580100,\t-0.221560734327216240,\t-0.221609491378950970,\t-0.221658247876661550,\t-0.221707003820226510,\t\n-0.221755759209524390,\t-0.221804514044432440,\t-0.221853268324829210,\t-0.221902022050592810,\t-0.221950775221601780,\t-0.221999527837733380,\t-0.222048279898866160,\t-0.222097031404878240,\t\n-0.222145782355648160,\t-0.222194532751053220,\t-0.222243282590971920,\t-0.222292031875282460,\t-0.222340780603863310,\t-0.222389528776591790,\t-0.222438276393346460,\t-0.222487023454005420,\t\n-0.222535769958447260,\t-0.222584515906549240,\t-0.222633261298189920,\t-0.222682006133247900,\t-0.222730750411600430,\t-0.222779494133126060,\t-0.222828237297702990,\t-0.222876979905209740,\t\n-0.222925721955523600,\t-0.222974463448523170,\t-0.223023204384086570,\t-0.223071944762092410,\t-0.223120684582417930,\t-0.223169423844941760,\t-0.223218162549542020,\t-0.223266900696097310,\t\n-0.223315638284484920,\t-0.223364375314583450,\t-0.223413111786271020,\t-0.223461847699426230,\t-0.223510583053926400,\t-0.223559317849650140,\t-0.223608052086475970,\t-0.223656785764281270,\t\n-0.223705518882944600,\t-0.223754251442344120,\t-0.223802983442358470,\t-0.223851714882864900,\t-0.223900445763742070,\t-0.223949176084868110,\t-0.223997905846121640,\t-0.224046635047379980,\t\n-0.224095363688521730,\t-0.224144091769425070,\t-0.224192819289968620,\t-0.224241546250029680,\t-0.224290272649486870,\t-0.224338998488218390,\t-0.224387723766102830,\t-0.224436448483017550,\t\n-0.224485172638841130,\t-0.224533896233452240,\t-0.224582619266728150,\t-0.224631341738547510,\t-0.224680063648788540,\t-0.224728784997329820,\t-0.224777505784048700,\t-0.224826226008823850,\t\n-0.224874945671533400,\t-0.224923664772056050,\t-0.224972383310269090,\t-0.225021101286051160,\t-0.225069818699280500,\t-0.225118535549835710,\t-0.225167251837594150,\t-0.225215967562434450,\t\n-0.225264682724234860,\t-0.225313397322873980,\t-0.225362111358229170,\t-0.225410824830179070,\t-0.225459537738601950,\t-0.225508250083376380,\t-0.225556961864379760,\t-0.225605673081490740,\t\n-0.225654383734587990,\t-0.225703093823548810,\t-0.225751803348251930,\t-0.225800512308575510,\t-0.225849220704398250,\t-0.225897928535597540,\t-0.225946635802051960,\t-0.225995342503639810,\t\n-0.226044048640239750,\t-0.226092754211729110,\t-0.226141459217986620,\t-0.226190163658890440,\t-0.226238867534319320,\t-0.226287570844150580,\t-0.226336273588262920,\t-0.226384975766534570,\t\n-0.226433677378844210,\t-0.226482378425069240,\t-0.226531078905088310,\t-0.226579778818780140,\t-0.226628478166022050,\t-0.226677176946692790,\t-0.226725875160670580,\t-0.226774572807834110,\t\n-0.226823269888060790,\t-0.226871966401229280,\t-0.226920662347217890,\t-0.226969357725905240,\t-0.227018052537168780,\t-0.227066746780887170,\t-0.227115440456938710,\t-0.227164133565202070,\t\n-0.227212826105554680,\t-0.227261518077875200,\t-0.227310209482041950,\t-0.227358900317933600,\t-0.227407590585427560,\t-0.227456280284402540,\t-0.227504969414737270,\t-0.227553657976309140,\t\n-0.227602345968996870,\t-0.227651033392678700,\t-0.227699720247233420,\t-0.227748406532538390,\t-0.227797092248472330,\t-0.227845777394913570,\t-0.227894461971740790,\t-0.227943145978831420,\t\n-0.227991829416064160,\t-0.228040512283317370,\t-0.228089194580469700,\t-0.228137876307398620,\t-0.228186557463982860,\t-0.228235238050100680,\t-0.228283918065630860,\t-0.228332597510450820,\t\n-0.228381276384439250,\t-0.228429954687474540,\t-0.228478632419435330,\t-0.228527309580199120,\t-0.228575986169644640,\t-0.228624662187650650,\t-0.228673337634094530,\t-0.228722012508855100,\t\n-0.228770686811810620,\t-0.228819360542839860,\t-0.228868033701820270,\t-0.228916706288630590,\t-0.228965378303149140,\t-0.229014049745254690,\t-0.229062720614824690,\t-0.229111390911737880,\t\n-0.229160060635872580,\t-0.229208729787107570,\t-0.229257398365320300,\t-0.229306066370389560,\t-0.229354733802193620,\t-0.229403400660611300,\t-0.229452066945520030,\t-0.229500732656798600,\t\n-0.229549397794325760,\t-0.229598062357979000,\t-0.229646726347637080,\t-0.229695389763178350,\t-0.229744052604481580,\t-0.229792714871424250,\t-0.229841376563885150,\t-0.229890037681742570,\t\n-0.229938698224875340,\t-0.229987358193160930,\t-0.230036017586478150,\t-0.230084676404705310,\t-0.230133334647721200,\t-0.230181992315403340,\t-0.230230649407630490,\t-0.230279305924281000,\t\n-0.230327961865233720,\t-0.230376617230366070,\t-0.230425272019556870,\t-0.230473926232684950,\t-0.230522579869627760,\t-0.230571232930264130,\t-0.230619885414472430,\t-0.230668537322131440,\t\n-0.230717188653118660,\t-0.230765839407312930,\t-0.230814489584592580,\t-0.230863139184836450,\t-0.230911788207922050,\t-0.230960436653728170,\t-0.231009084522133200,\t-0.231057731813015950,\t\n-0.231106378526253930,\t-0.231155024661725970,\t-0.231203670219310460,\t-0.231252315198886200,\t-0.231300959600330700,\t-0.231349603423522810,\t-0.231398246668341360,\t-0.231446889334663840,\t\n-0.231495531422369120,\t-0.231544172931335560,\t-0.231592813861442010,\t-0.231641454212565990,\t-0.231690093984586310,\t-0.231738733177381420,\t-0.231787371790830120,\t-0.231836009824809950,\t\n-0.231884647279199770,\t-0.231933284153877980,\t-0.231981920448723400,\t-0.232030556163613590,\t-0.232079191298427380,\t-0.232127825853043200,\t-0.232176459827339890,\t-0.232225093221195000,\t\n-0.232273726034487370,\t-0.232322358267095440,\t-0.232370989918898010,\t-0.232419620989772700,\t-0.232468251479598350,\t-0.232516881388253770,\t-0.232565510715616600,\t-0.232614139461565620,\t\n-0.232662767625979290,\t-0.232711395208736490,\t-0.232760022209714760,\t-0.232808648628792970,\t-0.232857274465849560,\t-0.232905899720763390,\t-0.232954524393412050,\t-0.233003148483674400,\t\n-0.233051771991428870,\t-0.233100394916554350,\t-0.233149017258928420,\t-0.233197639018429940,\t-0.233246260194937350,\t-0.233294880788329550,\t-0.233343500798484120,\t-0.233392120225279940,\t\n-0.233440739068595890,\t-0.233489357328309550,\t-0.233537975004299820,\t-0.233586592096445170,\t-0.233635208604624440,\t-0.233683824528715280,\t-0.233732439868596570,\t-0.233781054624146750,\t\n-0.233829668795244690,\t-0.233878282381768080,\t-0.233926895383595730,\t-0.233975507800606160,\t-0.234024119632678250,\t-0.234072730879689610,\t-0.234121341541519120,\t-0.234169951618045300,\t\n-0.234218561109147020,\t-0.234267170014701900,\t-0.234315778334588890,\t-0.234364386068686840,\t-0.234412993216873390,\t-0.234461599779027450,\t-0.234510205755027540,\t-0.234558811144752520,\t\n-0.234607415948080040,\t-0.234656020164889040,\t-0.234704623795057990,\t-0.234753226838465810,\t-0.234801829294990110,\t-0.234850431164509850,\t-0.234899032446903520,\t-0.234947633142050030,\t\n-0.234996233249827050,\t-0.235044832770113450,\t-0.235093431702787790,\t-0.235142030047728990,\t-0.235190627804814640,\t-0.235239224973923770,\t-0.235287821554934830,\t-0.235336417547726750,\t\n-0.235385012952177200,\t-0.235433607768165130,\t-0.235482201995569460,\t-0.235530795634267850,\t-0.235579388684139250,\t-0.235627981145062200,\t-0.235676573016915610,\t-0.235725164299577160,\t\n-0.235773754992925800,\t-0.235822345096840050,\t-0.235870934611198870,\t-0.235919523535879920,\t-0.235968111870762160,\t-0.236016699615724130,\t-0.236065286770644780,\t-0.236113873335401760,\t\n-0.236162459309874090,\t-0.236211044693940250,\t-0.236259629487479250,\t-0.236308213690368720,\t-0.236356797302487680,\t-0.236405380323715050,\t-0.236453962753928580,\t-0.236502544593007180,\t\n-0.236551125840829410,\t-0.236599706497274270,\t-0.236648286562219420,\t-0.236696866035543850,\t-0.236745444917126120,\t-0.236794023206845230,\t-0.236842600904578810,\t-0.236891178010205930,\t\n-0.236939754523605080,\t-0.236988330444655280,\t-0.237036905773234250,\t-0.237085480509220900,\t-0.237134054652493900,\t-0.237182628202932180,\t-0.237231201160413440,\t-0.237279773524816720,\t\n-0.237328345296020980,\t-0.237376916473903960,\t-0.237425487058344630,\t-0.237474057049221620,\t-0.237522626446413860,\t-0.237571195249799110,\t-0.237619763459256390,\t-0.237668331074664230,\t\n-0.237716898095901710,\t-0.237765464522846500,\t-0.237814030355377630,\t-0.237862595593373670,\t-0.237911160236713660,\t-0.237959724285275310,\t-0.238008287738937670,\t-0.238056850597579310,\t\n-0.238105412861079250,\t-0.238153974529315220,\t-0.238202535602166250,\t-0.238251096079511370,\t-0.238299655961228350,\t-0.238348215247196150,\t-0.238396773937293440,\t-0.238445332031399200,\t\n-0.238493889529391210,\t-0.238542446431148520,\t-0.238591002736549710,\t-0.238639558445473800,\t-0.238688113557798560,\t-0.238736668073403050,\t-0.238785221992165870,\t-0.238833775313966070,\t\n-0.238882328038681400,\t-0.238930880166190910,\t-0.238979431696373200,\t-0.239027982629107380,\t-0.239076532964271140,\t-0.239125082701743570,\t-0.239173631841403310,\t-0.239222180383129400,\t\n-0.239270728326799580,\t-0.239319275672292970,\t-0.239367822419488590,\t-0.239416368568264230,\t-0.239464914118498930,\t-0.239513459070071380,\t-0.239562003422860580,\t-0.239610547176744350,\t\n-0.239659090331601770,\t-0.239707632887311450,\t-0.239756174843752470,\t-0.239804716200802630,\t-0.239853256958341000,\t-0.239901797116246230,\t-0.239950336674397390,\t-0.239998875632672280,\t\n-0.240047413990949980,\t-0.240095951749109170,\t-0.240144488907028890,\t-0.240193025464586960,\t-0.240241561421662450,\t-0.240290096778134480,\t-0.240338631533880850,\t-0.240387165688780630,\t\n-0.240435699242712490,\t-0.240484232195555540,\t-0.240532764547187580,\t-0.240581296297487700,\t-0.240629827446334600,\t-0.240678357993607340,\t-0.240726887939183760,\t-0.240775417282942970,\t\n-0.240823946024763620,\t-0.240872474164524840,\t-0.240921001702104450,\t-0.240969528637381580,\t-0.241018054970234850,\t-0.241066580700543430,\t-0.241115105828185130,\t-0.241163630353039060,\t\n-0.241212154274984350,\t-0.241260677593898830,\t-0.241309200309661580,\t-0.241357722422151370,\t-0.241406243931247270,\t-0.241454764836827120,\t-0.241503285138770060,\t-0.241551804836954820,\t\n-0.241600323931260460,\t-0.241648842421564870,\t-0.241697360307747190,\t-0.241745877589686080,\t-0.241794394267260740,\t-0.241842910340348970,\t-0.241891425808829910,\t-0.241939940672582290,\t\n-0.241988454931485270,\t-0.242036968585416650,\t-0.242085481634255640,\t-0.242133994077880920,\t-0.242182505916171630,\t-0.242231017149005660,\t-0.242279527776262130,\t-0.242328037797820220,\t\n-0.242376547213557810,\t-0.242425056023353990,\t-0.242473564227087550,\t-0.242522071824637640,\t-0.242570578815882090,\t-0.242619085200700140,\t-0.242667590978970420,\t-0.242716096150572190,\t\n-0.242764600715383280,\t-0.242813104673282880,\t-0.242861608024149720,\t-0.242910110767862950,\t-0.242958612904300490,\t-0.243007114433341470,\t-0.243055615354864700,\t-0.243104115668749290,\t\n-0.243152615374873180,\t-0.243201114473115540,\t-0.243249612963355540,\t-0.243298110845471070,\t-0.243346608119341310,\t-0.243395104784845050,\t-0.243443600841861450,\t-0.243492096290268410,\t\n-0.243540591129945140,\t-0.243589085360770400,\t-0.243637578982623370,\t-0.243686071995381950,\t-0.243734564398925350,\t-0.243783056193132370,\t-0.243831547377882150,\t-0.243880037953052630,\t\n-0.243928527918523040,\t-0.243977017274172120,\t-0.244025506019879070,\t-0.244073994155521830,\t-0.244122481680979640,\t-0.244170968596131630,\t-0.244219454900855780,\t-0.244267940595031320,\t\n-0.244316425678536980,\t-0.244364910151252030,\t-0.244413394013054340,\t-0.244461877263823210,\t-0.244510359903437340,\t-0.244558841931776020,\t-0.244607323348717180,\t-0.244655804154140010,\t\n-0.244704284347923350,\t-0.244752763929946380,\t-0.244801242900087090,\t-0.244849721258224710,\t-0.244898199004238010,\t-0.244946676138006250,\t-0.244995152659407360,\t-0.245043628568320570,\t\n-0.245092103864625150,\t-0.245140578548199070,\t-0.245189052618921520,\t-0.245237526076671350,\t-0.245285998921327770,\t-0.245334471152768770,\t-0.245382942770873610,\t-0.245431413775521080,\t\n-0.245479884166590450,\t-0.245528353943959690,\t-0.245576823107508030,\t-0.245625291657114300,\t-0.245673759592657800,\t-0.245722226914016460,\t-0.245770693621069540,\t-0.245819159713695920,\t\n-0.245867625191774800,\t-0.245916090055184190,\t-0.245964554303803370,\t-0.246013017937511150,\t-0.246061480956186820,\t-0.246109943359708370,\t-0.246158405147955030,\t-0.246206866320806160,\t\n-0.246255326878139640,\t-0.246303786819834840,\t-0.246352246145770560,\t-0.246400704855826070,\t-0.246449162949879420,\t-0.246497620427809840,\t-0.246546077289496230,\t-0.246594533534817860,\t\n-0.246642989163652710,\t-0.246691444175880100,\t-0.246739898571378870,\t-0.246788352350028330,\t-0.246836805511706480,\t-0.246885258056292610,\t-0.246933709983665590,\t-0.246982161293704730,\t\n-0.247030611986288030,\t-0.247079062061294820,\t-0.247127511518604380,\t-0.247175960358094720,\t-0.247224408579645170,\t-0.247272856183134580,\t-0.247321303168442310,\t-0.247369749535446330,\t\n-0.247418195284025980,\t-0.247466640414060140,\t-0.247515084925428120,\t-0.247563528818007970,\t-0.247611972091679010,\t-0.247660414746320110,\t-0.247708856781810590,\t-0.247757298198028520,\t\n-0.247805738994853200,\t-0.247854179172163510,\t-0.247902618729838820,\t-0.247951057667757160,\t-0.247999495985797850,\t-0.248047933683840230,\t-0.248096370761762360,\t-0.248144807219443540,\t\n-0.248193243056762710,\t-0.248241678273599190,\t-0.248290112869831050,\t-0.248338546845337650,\t-0.248386980199997860,\t-0.248435412933691060,\t-0.248483845046295310,\t-0.248532276537689920,\t\n-0.248580707407753840,\t-0.248629137656366430,\t-0.248677567283405760,\t-0.248725996288751170,\t-0.248774424672281590,\t-0.248822852433876360,\t-0.248871279573413570,\t-0.248919706090772600,\t\n-0.248968131985832340,\t-0.249016557258472190,\t-0.249064981908570240,\t-0.249113405936005810,\t-0.249161829340658310,\t-0.249210252122405800,\t-0.249258674281127630,\t-0.249307095816702820,\t\n-0.249355516729010680,\t-0.249403937017929320,\t-0.249452356683338120,\t-0.249500775725116030,\t-0.249549194143142420,\t-0.249597611937295400,\t-0.249646029107454370,\t-0.249694445653498240,\t\n-0.249742861575306450,\t-0.249791276872757070,\t-0.249839691545729490,\t-0.249888105594102680,\t-0.249936519017756040,\t-0.249984931816567670,\t-0.250033343990416990,\t-0.250081755539183330,\t\n-0.250130166462744890,\t-0.250178576760981040,\t-0.250226986433770730,\t-0.250275395480993370,\t-0.250323803902527120,\t-0.250372211698251360,\t-0.250420618868045060,\t-0.250469025411787620,\t\n-0.250517431329357220,\t-0.250565836620633250,\t-0.250614241285494640,\t-0.250662645323820930,\t-0.250711048735490110,\t-0.250759451520381700,\t-0.250807853678374660,\t-0.250856255209348400,\t\n-0.250904656113181080,\t-0.250953056389752130,\t-0.251001456038940970,\t-0.251049855060625720,\t-0.251098253454685840,\t-0.251146651221000330,\t-0.251195048359448670,\t-0.251243444869908910,\t\n-0.251291840752260520,\t-0.251340236006382560,\t-0.251388630632154440,\t-0.251437024629454280,\t-0.251485417998161600,\t-0.251533810738155340,\t-0.251582202849314980,\t-0.251630594331518740,\t\n-0.251678985184645930,\t-0.251727375408575700,\t-0.251775765003187490,\t-0.251824153968359440,\t-0.251872542303970940,\t-0.251920930009901120,\t-0.251969317086029430,\t-0.252017703532234020,\t\n-0.252066089348394310,\t-0.252114474534389790,\t-0.252162859090098720,\t-0.252211243015400430,\t-0.252259626310174120,\t-0.252308008974299110,\t-0.252356391007653670,\t-0.252404772410117220,\t\n-0.252453153181568910,\t-0.252501533321888070,\t-0.252549912830953020,\t-0.252598291708643170,\t-0.252646669954837590,\t-0.252695047569415740,\t-0.252743424552255900,\t-0.252791800903237440,\t\n-0.252840176622239510,\t-0.252888551709141540,\t-0.252936926163821800,\t-0.252985299986159710,\t-0.253033673176034810,\t-0.253082045733325320,\t-0.253130417657910720,\t-0.253178788949670050,\t\n-0.253227159608482850,\t-0.253275529634227280,\t-0.253323899026782930,\t-0.253372267786028840,\t-0.253420635911844490,\t-0.253469003404108110,\t-0.253517370262699220,\t-0.253565736487496920,\t\n-0.253614102078380750,\t-0.253662467035228820,\t-0.253710831357920770,\t-0.253759195046335650,\t-0.253807558100352940,\t-0.253855920519850900,\t-0.253904282304709070,\t-0.253952643454806950,\t\n-0.254001003970022840,\t-0.254049363850236190,\t-0.254097723095326130,\t-0.254146081705172170,\t-0.254194439679652610,\t-0.254242797018646940,\t-0.254291153722034310,\t-0.254339509789694160,\t\n-0.254387865221504860,\t-0.254436220017345840,\t-0.254484574177096360,\t-0.254532927700635790,\t-0.254581280587842520,\t-0.254629632838596020,\t-0.254677984452775450,\t-0.254726335430260350,\t\n-0.254774685770928990,\t-0.254823035474660900,\t-0.254871384541335620,\t-0.254919732970831480,\t-0.254968080763028020,\t-0.255016427917804380,\t-0.255064774435040050,\t-0.255113120314613360,\t\n-0.255161465556403900,\t-0.255209810160290760,\t-0.255258154126153550,\t-0.255306497453870460,\t-0.255354840143321220,\t-0.255403182194384790,\t-0.255451523606940900,\t-0.255499864380867750,\t\n-0.255548204516044930,\t-0.255596544012351600,\t-0.255644882869667300,\t-0.255693221087870400,\t-0.255741558666840450,\t-0.255789895606456650,\t-0.255838231906598490,\t-0.255886567567144290,\t\n-0.255934902587973740,\t-0.255983236968966300,\t-0.256031570710000380,\t-0.256079903810955520,\t-0.256128236271710890,\t-0.256176568092146120,\t-0.256224899272139480,\t-0.256273229811570640,\t\n-0.256321559710318670,\t-0.256369888968263240,\t-0.256418217585282720,\t-0.256466545561256590,\t-0.256514872896064120,\t-0.256563199589584840,\t-0.256611525641697200,\t-0.256659851052280730,\t\n-0.256708175821214630,\t-0.256756499948378510,\t-0.256804823433650740,\t-0.256853146276910860,\t-0.256901468478038570,\t-0.256949790036912210,\t-0.256998110953411350,\t-0.257046431227415220,\t\n-0.257094750858803400,\t-0.257143069847454330,\t-0.257191388193247550,\t-0.257239705896062320,\t-0.257288022955778240,\t-0.257336339372273680,\t-0.257384655145428300,\t-0.257432970275121240,\t\n-0.257481284761232170,\t-0.257529598603639500,\t-0.257577911802222840,\t-0.257626224356861390,\t-0.257674536267434750,\t-0.257722847533821410,\t-0.257771158155900960,\t-0.257819468133553000,\t\n-0.257867777466655960,\t-0.257916086155089490,\t-0.257964394198732740,\t-0.258012701597465480,\t-0.258061008351166080,\t-0.258109314459714080,\t-0.258157619922988860,\t-0.258205924740869950,\t\n-0.258254228913235850,\t-0.258302532439966200,\t-0.258350835320940160,\t-0.258399137556037490,\t-0.258447439145136570,\t-0.258495740088116990,\t-0.258544040384858120,\t-0.258592340035239570,\t\n-0.258640639039139700,\t-0.258688937396438280,\t-0.258737235107014460,\t-0.258785532170748010,\t-0.258833828587517360,\t-0.258882124357202040,\t-0.258930419479681870,\t-0.258978713954835240,\t\n-0.259027007782541840,\t-0.259075300962680890,\t-0.259123593495132140,\t-0.259171885379773980,\t-0.259220176616486110,\t-0.259268467205147730,\t-0.259316757145638680,\t-0.259365046437837310,\t\n-0.259413335081623290,\t-0.259461623076875980,\t-0.259509910423474990,\t-0.259558197121298790,\t-0.259606483170227160,\t-0.259654768570139250,\t-0.259703053320914920,\t-0.259751337422432450,\t\n-0.259799620874571700,\t-0.259847903677212280,\t-0.259896185830232720,\t-0.259944467333512670,\t-0.259992748186931470,\t-0.260041028390368800,\t-0.260089307943703110,\t-0.260137586846814210,\t\n-0.260185865099581300,\t-0.260234142701884160,\t-0.260282419653601270,\t-0.260330695954612280,\t-0.260378971604796560,\t-0.260427246604033880,\t-0.260475520952202610,\t-0.260523794649182570,\t\n-0.260572067694853030,\t-0.260620340089093790,\t-0.260668611831783190,\t-0.260716882922801150,\t-0.260765153362027270,\t-0.260813423149340080,\t-0.260861692284619360,\t-0.260909960767744360,\t\n-0.260958228598594970,\t-0.261006495777049490,\t-0.261054762302987850,\t-0.261103028176289220,\t-0.261151293396833520,\t-0.261199557964499120,\t-0.261247821879165840,\t-0.261296085140713010,\t\n-0.261344347749020380,\t-0.261392609703966490,\t-0.261440871005431060,\t-0.261489131653293410,\t-0.261537391647433390,\t-0.261585650987729460,\t-0.261633909674061420,\t-0.261682167706309030,\t\n-0.261730425084350790,\t-0.261778681808066460,\t-0.261826937877335460,\t-0.261875193292037510,\t-0.261923448052051140,\t-0.261971702157256180,\t-0.262019955607532000,\t-0.262068208402758300,\t\n-0.262116460542813680,\t-0.262164712027577910,\t-0.262212962856930350,\t-0.262261213030750780,\t-0.262309462548917790,\t-0.262357711411311150,\t-0.262405959617810210,\t-0.262454207168294820,\t\n-0.262502454062643440,\t-0.262550700300735960,\t-0.262598945882451750,\t-0.262647190807670570,\t-0.262695435076271020,\t-0.262743678688132860,\t-0.262791921643135920,\t-0.262840163941158720,\t\n-0.262888405582081150,\t-0.262936646565782580,\t-0.262984886892142780,\t-0.263033126561040390,\t-0.263081365572355120,\t-0.263129603925966520,\t-0.263177841621754280,\t-0.263226078659597020,\t\n-0.263274315039374540,\t-0.263322550760966280,\t-0.263370785824252110,\t-0.263419020229110510,\t-0.263467253975421370,\t-0.263515487063064100,\t-0.263563719491918540,\t-0.263611951261863210,\t\n-0.263660182372778050,\t-0.263708412824542830,\t-0.263756642617036190,\t-0.263804871750137950,\t-0.263853100223727490,\t-0.263901328037684730,\t-0.263949555191888230,\t-0.263997781686217790,\t\n-0.264046007520552960,\t-0.264094232694773500,\t-0.264142457208758060,\t-0.264190681062386470,\t-0.264238904255538140,\t-0.264287126788093020,\t-0.264335348659929640,\t-0.264383569870927870,\t\n-0.264431790420967210,\t-0.264480010309927520,\t-0.264528229537687340,\t-0.264576448104126560,\t-0.264624666009125150,\t-0.264672883252561610,\t-0.264721099834315850,\t-0.264769315754267380,\t\n-0.264817531012295990,\t-0.264865745608280410,\t-0.264913959542100400,\t-0.264962172813635540,\t-0.265010385422765670,\t-0.265058597369369430,\t-0.265106808653326640,\t-0.265155019274516850,\t\n-0.265203229232819970,\t-0.265251438528114560,\t-0.265299647160280590,\t-0.265347855129197450,\t-0.265396062434745120,\t-0.265444269076802240,\t-0.265492475055248640,\t-0.265540680369963870,\t\n-0.265588885020827840,\t-0.265637089007719150,\t-0.265685292330517740,\t-0.265733494989103540,\t-0.265781696983355130,\t-0.265829898313152510,\t-0.265878098978375170,\t-0.265926298978902960,\t\n-0.265974498314614620,\t-0.266022696985390050,\t-0.266070894991108700,\t-0.266119092331650540,\t-0.266167289006894240,\t-0.266215485016719710,\t-0.266263680361006450,\t-0.266311875039634440,\t\n-0.266360069052482270,\t-0.266408262399430000,\t-0.266456455080357040,\t-0.266504647095143320,\t-0.266552838443667620,\t-0.266601029125809800,\t-0.266649219141449840,\t-0.266697408490466410,\t\n-0.266745597172739430,\t-0.266793785188148500,\t-0.266841972536573550,\t-0.266890159217893160,\t-0.266938345231987450,\t-0.266986530578735840,\t-0.267034715258018310,\t-0.267082899269713630,\t\n-0.267131082613701660,\t-0.267179265289861970,\t-0.267227447298074570,\t-0.267275628638218130,\t-0.267323809310172580,\t-0.267371989313817560,\t-0.267420168649032950,\t-0.267468347315697520,\t\n-0.267516525313691190,\t-0.267564702642894000,\t-0.267612879303184610,\t-0.267661055294443060,\t-0.267709230616548830,\t-0.267757405269381970,\t-0.267805579252821170,\t-0.267853752566746370,\t\n-0.267901925211037280,\t-0.267950097185573720,\t-0.267998268490234560,\t-0.268046439124899670,\t-0.268094609089448710,\t-0.268142778383761660,\t-0.268190947007717230,\t-0.268239114961195460,\t\n-0.268287282244075890,\t-0.268335448856238500,\t-0.268383614797562060,\t-0.268431780067926620,\t-0.268479944667212140,\t-0.268528108595297410,\t-0.268576271852062400,\t-0.268624434437386650,\t\n-0.268672596351150320,\t-0.268720757593232000,\t-0.268768918163511840,\t-0.268817078061869390,\t-0.268865237288184620,\t-0.268913395842336370,\t-0.268961553724204610,\t-0.269009710933668990,\t\n-0.269057867470609500,\t-0.269106023334904910,\t-0.269154178526435250,\t-0.269202333045080180,\t-0.269250486890719680,\t-0.269298640063232560,\t-0.269346792562498830,\t-0.269394944388398060,\t\n-0.269443095540810420,\t-0.269491246019614610,\t-0.269539395824690660,\t-0.269587544955918690,\t-0.269635693413177390,\t-0.269683841196346860,\t-0.269731988305306760,\t-0.269780134739937120,\t\n-0.269828280500116650,\t-0.269876425585725550,\t-0.269924569996643330,\t-0.269972713732750170,\t-0.270020856793924740,\t-0.270068999180047230,\t-0.270117140890997140,\t-0.270165281926654680,\t\n-0.270213422286898600,\t-0.270261561971608940,\t-0.270309700980665370,\t-0.270357839313948020,\t-0.270405976971335620,\t-0.270454113952708240,\t-0.270502250257946050,\t-0.270550385886927760,\t\n-0.270598520839533560,\t-0.270646655115643010,\t-0.270694788715136300,\t-0.270742921637892150,\t-0.270791053883790710,\t-0.270839185452711630,\t-0.270887316344535000,\t-0.270935446559139700,\t\n-0.270983576096405720,\t-0.271031704956212870,\t-0.271079833138441140,\t-0.271127960642969400,\t-0.271176087469677750,\t-0.271224213618445900,\t-0.271272339089153940,\t-0.271320463881680740,\t\n-0.271368587995906350,\t-0.271416711431710920,\t-0.271464834188973270,\t-0.271512956267573550,\t-0.271561077667391400,\t-0.271609198388307050,\t-0.271657318430199250,\t-0.271705437792948150,\t\n-0.271753556476433400,\t-0.271801674480535270,\t-0.271849791805132470,\t-0.271897908450105250,\t-0.271946024415333220,\t-0.271994139700696580,\t-0.272042254306074090,\t-0.272090368231346020,\t\n-0.272138481476392080,\t-0.272186594041092300,\t-0.272234705925325620,\t-0.272282817128972180,\t-0.272330927651911690,\t-0.272379037494024310,\t-0.272427146655188910,\t-0.272475255135285640,\t\n-0.272523362934194660,\t-0.272571470051794830,\t-0.272619576487966360,\t-0.272667682242588970,\t-0.272715787315542750,\t-0.272763891706706620,\t-0.272811995415960800,\t-0.272860098443184980,\t\n-0.272908200788259340,\t-0.272956302451062780,\t-0.273004403431475470,\t-0.273052503729377120,\t-0.273100603344647970,\t-0.273148702277166870,\t-0.273196800526814050,\t-0.273244898093469190,\t\n-0.273292994977012480,\t-0.273341091177322910,\t-0.273389186694280580,\t-0.273437281527765750,\t-0.273485375677657240,\t-0.273533469143835360,\t-0.273581561926179770,\t-0.273629654024570680,\t\n-0.273677745438887070,\t-0.273725836169009030,\t-0.273773926214816440,\t-0.273822015576189460,\t-0.273870104253007010,\t-0.273918192245149350,\t-0.273966279552496140,\t-0.274014366174927690,\t\n-0.274062452112322890,\t-0.274110537364561980,\t-0.274158621931524680,\t-0.274206705813091310,\t-0.274254789009140690,\t-0.274302871519553130,\t-0.274350953344208840,\t-0.274399034482986690,\t\n-0.274447114935766960,\t-0.274495194702429500,\t-0.274543273782854420,\t-0.274591352176920770,\t-0.274639429884508680,\t-0.274687506905498090,\t-0.274735583239769100,\t-0.274783658887200740,\t\n-0.274831733847673290,\t-0.274879808121066440,\t-0.274927881707260510,\t-0.274975954606134440,\t-0.275024026817568550,\t-0.275072098341442530,\t-0.275120169177636710,\t-0.275168239326030020,\t\n-0.275216308786502720,\t-0.275264377558935120,\t-0.275312445643206120,\t-0.275360513039196010,\t-0.275408579746784620,\t-0.275456645765852210,\t-0.275504711096277780,\t-0.275552775737941570,\t\n-0.275600839690723350,\t-0.275648902954503560,\t-0.275696965529161010,\t-0.275745027414576070,\t-0.275793088610628570,\t-0.275841149117198760,\t-0.275889208934165690,\t-0.275937268061409560,\t\n-0.275985326498810250,\t-0.276033384246248070,\t-0.276081441303602020,\t-0.276129497670752340,\t-0.276177553347578930,\t-0.276225608333962040,\t-0.276273662629780700,\t-0.276321716234915250,\t\n-0.276369769149245880,\t-0.276417821372651700,\t-0.276465872905012950,\t-0.276513923746209530,\t-0.276561973896121750,\t-0.276610023354628590,\t-0.276658072121610370,\t-0.276706120196946960,\t\n-0.276754167580518680,\t-0.276802214272204530,\t-0.276850260271884860,\t-0.276898305579439560,\t-0.276946350194748890,\t-0.276994394117691940,\t-0.277042437348149040,\t-0.277090479886000000,\t\n-0.277138521731125190,\t-0.277186562883403650,\t-0.277234603342715710,\t-0.277282643108941680,\t-0.277330682181960660,\t-0.277378720561652860,\t-0.277426758247898310,\t-0.277474795240577280,\t\n-0.277522831539568860,\t-0.277570867144753320,\t-0.277618902056010640,\t-0.277666936273221090,\t-0.277714969796263810,\t-0.277763002625019070,\t-0.277811034759366860,\t-0.277859066199187490,\t\n-0.277907096944360050,\t-0.277955126994764820,\t-0.278003156350281780,\t-0.278051185010791290,\t-0.278099212976172410,\t-0.278147240246305490,\t-0.278195266821070930,\t-0.278243292700347700,\t\n-0.278291317884016290,\t-0.278339342371956620,\t-0.278387366164048970,\t-0.278435389260172470,\t-0.278483411660207510,\t-0.278531433364034020,\t-0.278579454371532420,\t-0.278627474682581700,\t\n-0.278675494297062290,\t-0.278723513214854170,\t-0.278771531435837720,\t-0.278819548959891970,\t-0.278867565786897360,\t-0.278915581916733820,\t-0.278963597349281780,\t-0.279011612084420320,\t\n-0.279059626122029840,\t-0.279107639461990240,\t-0.279155652104182030,\t-0.279203664048484230,\t-0.279251675294777290,\t-0.279299685842941570,\t-0.279347695692856220,\t-0.279395704844401630,\t\n-0.279443713297457760,\t-0.279491721051905060,\t-0.279539728107622620,\t-0.279587734464490810,\t-0.279635740122389730,\t-0.279683745081199700,\t-0.279731749340799920,\t-0.279779752901070710,\t\n-0.279827755761892170,\t-0.279875757923144620,\t-0.279923759384707260,\t-0.279971760146460520,\t-0.280019760208284400,\t-0.280067759570059250,\t-0.280115758231664290,\t-0.280163756192979950,\t\n-0.280211753453886660,\t-0.280259750014263510,\t-0.280307745873991040,\t-0.280355741032949190,\t-0.280403735491018380,\t-0.280451729248077870,\t-0.280499722304007990,\t-0.280547714658688830,\t\n-0.280595706312000760,\t-0.280643697263823040,\t-0.280691687514036060,\t-0.280739677062519900,\t-0.280787665909154940,\t-0.280835654053820380,\t-0.280883641496396660,\t-0.280931628236763880,\t\n-0.280979614274802450,\t-0.281027599610391590,\t-0.281075584243411670,\t-0.281123568173743290,\t-0.281171551401265480,\t-0.281219533925858860,\t-0.281267515747403330,\t-0.281315496865779500,\t\n-0.281363477280866470,\t-0.281411456992544770,\t-0.281459436000694450,\t-0.281507414305195940,\t-0.281555391905928430,\t-0.281603368802772480,\t-0.281651344995608120,\t-0.281699320484315780,\t\n-0.281747295268774730,\t-0.281795269348865450,\t-0.281843242724468030,\t-0.281891215395462860,\t-0.281939187361729290,\t-0.281987158623147720,\t-0.282035129179598660,\t-0.282083099030961400,\t\n-0.282131068177116360,\t-0.282179036617943630,\t-0.282227004353323820,\t-0.282274971383136010,\t-0.282322937707260750,\t-0.282370903325578180,\t-0.282418868237968750,\t-0.282466832444311760,\t\n-0.282514795944487700,\t-0.282562758738376610,\t-0.282610720825859030,\t-0.282658682206814280,\t-0.282706642881122790,\t-0.282754602848664720,\t-0.282802562109320530,\t-0.282850520662969510,\t\n-0.282898478509492230,\t-0.282946435648768760,\t-0.282994392080679560,\t-0.283042347805104010,\t-0.283090302821922550,\t-0.283138257131015810,\t-0.283186210732262970,\t-0.283234163625544600,\t\n-0.283282115810740810,\t-0.283330067287732190,\t-0.283378018056397950,\t-0.283425968116618690,\t-0.283473917468274490,\t-0.283521866111245970,\t-0.283569814045412320,\t-0.283617761270654080,\t\n-0.283665707786851520,\t-0.283713653593885060,\t-0.283761598691634090,\t-0.283809543079979080,\t-0.283857486758800240,\t-0.283905429727978110,\t-0.283953371987391960,\t-0.284001313536922370,\t\n-0.284049254376449960,\t-0.284097194505853970,\t-0.284145133925015000,\t-0.284193072633813220,\t-0.284241010632129140,\t-0.284288947919842110,\t-0.284336884496832750,\t-0.284384820362981130,\t\n-0.284432755518167930,\t-0.284480689962272380,\t-0.284528623695175120,\t-0.284576556716756300,\t-0.284624489026896520,\t-0.284672420625475100,\t-0.284720351512372570,\t-0.284768281687469200,\t\n-0.284816211150645590,\t-0.284864139901781000,\t-0.284912067940756020,\t-0.284959995267451360,\t-0.285007921881746230,\t-0.285055847783521330,\t-0.285103772972656820,\t-0.285151697449033290,\t\n-0.285199621212530060,\t-0.285247544263027790,\t-0.285295466600406720,\t-0.285343388224547360,\t-0.285391309135329060,\t-0.285439229332632550,\t-0.285487148816337970,\t-0.285535067586325910,\t\n-0.285582985642475750,\t-0.285630902984668140,\t-0.285678819612783300,\t-0.285726735526701800,\t-0.285774650726303090,\t-0.285822565211467710,\t-0.285870478982075900,\t-0.285918392038008340,\t\n-0.285966304379144390,\t-0.286014216005364640,\t-0.286062126916549810,\t-0.286110037112579210,\t-0.286157946593333550,\t-0.286205855358693030,\t-0.286253763408538250,\t-0.286301670742748650,\t\n-0.286349577361204920,\t-0.286397483263787170,\t-0.286445388450376200,\t-0.286493292920851290,\t-0.286541196675093200,\t-0.286589099712982080,\t-0.286637002034398620,\t-0.286684903639222280,\t\n-0.286732804527333630,\t-0.286780704698613000,\t-0.286828604152941040,\t-0.286876502890197120,\t-0.286924400910261950,\t-0.286972298213016230,\t-0.287020194798339350,\t-0.287068090666111940,\t\n-0.287115985816214280,\t-0.287163880248527130,\t-0.287211773962929850,\t-0.287259666959303110,\t-0.287307559237527210,\t-0.287355450797482870,\t-0.287403341639049460,\t-0.287451231762107680,\t\n-0.287499121166537810,\t-0.287547009852220590,\t-0.287594897819035410,\t-0.287642785066862970,\t-0.287690671595583590,\t-0.287738557405077980,\t-0.287786442495225500,\t-0.287834326865906930,\t\n-0.287882210517002970,\t-0.287930093448393100,\t-0.287977975659957920,\t-0.288025857151577860,\t-0.288073737923133570,\t-0.288121617974504530,\t-0.288169497305571400,\t-0.288217375916214550,\t\n-0.288265253806314680,\t-0.288313130975751230,\t-0.288361007424404960,\t-0.288408883152156240,\t-0.288456758158885660,\t-0.288504632444472770,\t-0.288552506008798340,\t-0.288600378851742610,\t\n-0.288648250973186360,\t-0.288696122373009070,\t-0.288743993051091440,\t-0.288791863007314300,\t-0.288839732241557070,\t-0.288887600753700460,\t-0.288935468543624900,\t-0.288983335611211090,\t\n-0.289031201956338520,\t-0.289079067578887900,\t-0.289126932478739660,\t-0.289174796655774500,\t-0.289222660109871910,\t-0.289270522840912700,\t-0.289318384848777140,\t-0.289366246133346050,\t\n-0.289414106694498960,\t-0.289461966532116590,\t-0.289509825646079240,\t-0.289557684036267860,\t-0.289605541702561750,\t-0.289653398644841850,\t-0.289701254862988420,\t-0.289749110356882280,\t\n-0.289796965126402960,\t-0.289844819171431180,\t-0.289892672491847800,\t-0.289940525087532370,\t-0.289988376958365550,\t-0.290036228104227860,\t-0.290084078524999960,\t-0.290131928220561440,\t\n-0.290179777190793130,\t-0.290227625435575400,\t-0.290275472954789000,\t-0.290323319748313490,\t-0.290371165816029670,\t-0.290419011157817930,\t-0.290466855773559130,\t-0.290514699663132760,\t\n-0.290562542826419580,\t-0.290610385263300130,\t-0.290658226973655060,\t-0.290706067957364030,\t-0.290753908214307850,\t-0.290801747744367340,\t-0.290849586547421990,\t-0.290897424623352660,\t\n-0.290945261972039850,\t-0.290993098593364250,\t-0.291040934487205470,\t-0.291088769653444380,\t-0.291136604091961350,\t-0.291184437802637250,\t-0.291232270785351630,\t-0.291280103039985310,\t\n-0.291327934566418760,\t-0.291375765364532800,\t-0.291423595434206980,\t-0.291471424775322170,\t-0.291519253387758800,\t-0.291567081271397740,\t-0.291614908426118590,\t-0.291662734851802110,\t\n-0.291710560548329220,\t-0.291758385515579530,\t-0.291806209753433850,\t-0.291854033261772670,\t-0.291901856040476800,\t-0.291949678089425900,\t-0.291997499408500780,\t-0.292045319997581930,\t\n-0.292093139856550170,\t-0.292140958985285190,\t-0.292188777383667770,\t-0.292236595051578400,\t-0.292284411988897990,\t-0.292332228195506140,\t-0.292380043671283670,\t-0.292427858416111130,\t\n-0.292475672429869380,\t-0.292523485712438020,\t-0.292571298263697930,\t-0.292619110083529590,\t-0.292666921171813920,\t-0.292714731528430470,\t-0.292762541153260280,\t-0.292810350046184110,\t\n-0.292858158207081610,\t-0.292905965635833760,\t-0.292953772332321010,\t-0.293001578296424200,\t-0.293049383528023070,\t-0.293097188026998470,\t-0.293144991793230840,\t-0.293192794826601210,\t\n-0.293240597126989190,\t-0.293288398694275640,\t-0.293336199528341110,\t-0.293383999629066470,\t-0.293431798996331480,\t-0.293479597630016910,\t-0.293527395530003400,\t-0.293575192696171830,\t\n-0.293622989128401790,\t-0.293670784826574330,\t-0.293718579790570370,\t-0.293766374020269450,\t-0.293814167515552670,\t-0.293861960276300400,\t-0.293909752302393690,\t-0.293957543593712180,\t\n-0.294005334150136800,\t-0.294053123971548090,\t-0.294100913057827040,\t-0.294148701408853240,\t-0.294196489024507680,\t-0.294244275904670890,\t-0.294292062049223870,\t-0.294339847458046260,\t\n-0.294387632131018980,\t-0.294435416068022650,\t-0.294483199268938230,\t-0.294530981733645390,\t-0.294578763462025050,\t-0.294626544453958250,\t-0.294674324709324700,\t-0.294722104228005320,\t\n-0.294769883009880660,\t-0.294817661054831700,\t-0.294865438362738210,\t-0.294913214933481100,\t-0.294960990766940930,\t-0.295008765862998730,\t-0.295056540221534210,\t-0.295104313842428300,\t\n-0.295152086725561650,\t-0.295199858870815180,\t-0.295247630278068660,\t-0.295295400947203020,\t-0.295343170878098920,\t-0.295390940070637320,\t-0.295438708524697890,\t-0.295486476240161780,\t\n-0.295534243216909850,\t-0.295582009454821880,\t-0.295629774953778900,\t-0.295677539713661450,\t-0.295725303734350630,\t-0.295773067015726090,\t-0.295820829557668920,\t-0.295868591360059610,\t\n-0.295916352422779310,\t-0.295964112745707660,\t-0.296011872328725780,\t-0.296059631171714190,\t-0.296107389274553930,\t-0.296155146637124780,\t-0.296202903259307760,\t-0.296250659140983530,\t\n-0.296298414282033020,\t-0.296346168682336040,\t-0.296393922341773700,\t-0.296441675260226520,\t-0.296489427437575560,\t-0.296537178873700620,\t-0.296584929568482760,\t-0.296632679521803000,\t\n-0.296680428733541060,\t-0.296728177203578080,\t-0.296775924931794670,\t-0.296823671918071850,\t-0.296871418162289460,\t-0.296919163664328520,\t-0.296966908424069640,\t-0.297014652441393910,\t\n-0.297062395716181150,\t-0.297110138248312390,\t-0.297157880037668300,\t-0.297205621084129960,\t-0.297253361387577080,\t-0.297301100947890810,\t-0.297348839764951800,\t-0.297396577838641150,\t\n-0.297444315168838570,\t-0.297492051755425260,\t-0.297539787598282200,\t-0.297587522697289280,\t-0.297635257052327520,\t-0.297682990663277640,\t-0.297730723530020670,\t-0.297778455652436550,\t\n-0.297826187030406200,\t-0.297873917663810440,\t-0.297921647552530310,\t-0.297969376696445580,\t-0.298017105095437440,\t-0.298064832749386550,\t-0.298112559658174010,\t-0.298160285821679640,\t\n-0.298208011239784580,\t-0.298255735912369420,\t-0.298303459839315390,\t-0.298351183020502290,\t-0.298398905455811210,\t-0.298446627145123320,\t-0.298494348088318430,\t-0.298542068285277680,\t\n-0.298589787735881740,\t-0.298637506440011750,\t-0.298685224397547580,\t-0.298732941608370330,\t-0.298780658072360760,\t-0.298828373789399910,\t-0.298876088759367780,\t-0.298923802982145380,\t\n-0.298971516457613500,\t-0.299019229185653210,\t-0.299066941166144460,\t-0.299114652398968340,\t-0.299162362884005610,\t-0.299210072621137410,\t-0.299257781610243580,\t-0.299305489851205250,\t\n-0.299353197343903250,\t-0.299400904088218680,\t-0.299448610084031450,\t-0.299496315331222620,\t-0.299544019829673490,\t-0.299591723579263890,\t-0.299639426579874910,\t-0.299687128831387430,\t\n-0.299734830333682530,\t-0.299782531086640160,\t-0.299830231090141400,\t-0.299877930344067120,\t-0.299925628848298430,\t-0.299973326602715200,\t-0.300021023607198680,\t-0.300068719861629580,\t\n-0.300116415365889180,\t-0.300164110119857220,\t-0.300211804123415080,\t-0.300259497376443360,\t-0.300307189878823320,\t-0.300354881630434940,\t-0.300402572631159330,\t-0.300450262880877670,\t\n-0.300497952379469970,\t-0.300545641126817360,\t-0.300593329122800680,\t-0.300641016367301120,\t-0.300688702860198550,\t-0.300736388601374250,\t-0.300784073590708970,\t-0.300831757828083910,\t\n-0.300879441313379010,\t-0.300927124046475590,\t-0.300974806027254290,\t-0.301022487255596440,\t-0.301070167731381900,\t-0.301117847454491990,\t-0.301165526424807430,\t-0.301213204642209520,\t\n-0.301260882106578140,\t-0.301308558817794560,\t-0.301356234775740030,\t-0.301403909980294430,\t-0.301451584431339130,\t-0.301499258128754830,\t-0.301546931072422810,\t-0.301594603262223040,\t\n-0.301642274698036730,\t-0.301689945379744750,\t-0.301737615307228370,\t-0.301785284480367510,\t-0.301832952899043440,\t-0.301880620563136970,\t-0.301928287472529370,\t-0.301975953627100670,\t\n-0.302023619026732030,\t-0.302071283671304370,\t-0.302118947560698900,\t-0.302166610694795670,\t-0.302214273073475930,\t-0.302261934696620880,\t-0.302309595564110630,\t-0.302357255675826330,\t\n-0.302404915031648960,\t-0.302452573631459660,\t-0.302500231475138550,\t-0.302547888562566810,\t-0.302595544893625390,\t-0.302643200468195480,\t-0.302690855286157190,\t-0.302738509347391770,\t\n-0.302786162651780040,\t-0.302833815199203380,\t-0.302881466989541710,\t-0.302929118022676410,\t-0.302976768298488300,\t-0.303024417816858680,\t-0.303072066577667610,\t-0.303119714580796340,\t\n-0.303167361826125860,\t-0.303215008313537320,\t-0.303262654042910860,\t-0.303310299014127760,\t-0.303357943227069380,\t-0.303405586681615660,\t-0.303453229377648010,\t-0.303500871315047270,\t\n-0.303548512493694740,\t-0.303596152913470580,\t-0.303643792574256000,\t-0.303691431475931920,\t-0.303739069618379710,\t-0.303786707001479420,\t-0.303834343625112360,\t-0.303881979489159400,\t\n-0.303929614593501930,\t-0.303977248938020030,\t-0.304024882522594960,\t-0.304072515347107720,\t-0.304120147411439610,\t-0.304167778715470680,\t-0.304215409259082360,\t-0.304263039042155900,\t\n-0.304310668064571410,\t-0.304358296326210250,\t-0.304405923826953360,\t-0.304453550566682110,\t-0.304501176545276530,\t-0.304548801762618000,\t-0.304596426218587510,\t-0.304644049913066370,\t\n-0.304691672845934620,\t-0.304739295017073750,\t-0.304786916426364630,\t-0.304834537073688630,\t-0.304882156958925900,\t-0.304929776081957700,\t-0.304977394442665140,\t-0.305025012040929470,\t\n-0.305072628876630890,\t-0.305120244949650680,\t-0.305167860259870300,\t-0.305215474807169870,\t-0.305263088591430750,\t-0.305310701612533930,\t-0.305358313870360720,\t-0.305405925364791330,\t\n-0.305453536095707130,\t-0.305501146062989120,\t-0.305548755266518590,\t-0.305596363706175820,\t-0.305643971381842130,\t-0.305691578293398490,\t-0.305739184440726340,\t-0.305786789823705770,\t\n-0.305834394442218270,\t-0.305881998296144760,\t-0.305929601385366680,\t-0.305977203709764220,\t-0.306024805269218710,\t-0.306072406063611190,\t-0.306120006092823080,\t-0.306167605356734480,\t\n-0.306215203855226940,\t-0.306262801588181810,\t-0.306310398555479200,\t-0.306357994757000650,\t-0.306405590192627090,\t-0.306453184862239990,\t-0.306500778765719460,\t-0.306548371902947040,\t\n-0.306595964273803650,\t-0.306643555878170770,\t-0.306691146715928620,\t-0.306738736786958570,\t-0.306786326091141700,\t-0.306833914628359410,\t-0.306881502398491930,\t-0.306929089401420720,\t\n-0.306976675637026740,\t-0.307024261105191540,\t-0.307071845805795220,\t-0.307119429738719310,\t-0.307167012903845240,\t-0.307214595301053220,\t-0.307262176930224670,\t-0.307309757791240760,\t\n-0.307357337883982780,\t-0.307404917208331130,\t-0.307452495764167110,\t-0.307500073551371880,\t-0.307547650569826910,\t-0.307595226819412370,\t-0.307642802300009790,\t-0.307690377011500150,\t\n-0.307737950953765050,\t-0.307785524126684580,\t-0.307833096530140350,\t-0.307880668164013380,\t-0.307928239028185170,\t-0.307975809122535920,\t-0.308023378446947160,\t-0.308070947001300330,\t\n-0.308118514785475750,\t-0.308166081799354900,\t-0.308213648042818810,\t-0.308261213515749030,\t-0.308308778218025830,\t-0.308356342149530670,\t-0.308403905310144610,\t-0.308451467699749240,\t\n-0.308499029318224820,\t-0.308546590165452770,\t-0.308594150241314260,\t-0.308641709545690810,\t-0.308689268078462640,\t-0.308736825839511290,\t-0.308784382828717900,\t-0.308831939045964010,\t\n-0.308879494491129780,\t-0.308927049164096860,\t-0.308974603064746280,\t-0.309022156192959640,\t-0.309069708548617210,\t-0.309117260131600460,\t-0.309164810941791050,\t-0.309212360979069120,\t\n-0.309259910243316340,\t-0.309307458734413730,\t-0.309355006452242950,\t-0.309402553396684210,\t-0.309450099567619100,\t-0.309497644964928710,\t-0.309545189588494640,\t-0.309592733438197150,\t\n-0.309640276513917900,\t-0.309687818815537920,\t-0.309735360342938800,\t-0.309782901096000870,\t-0.309830441074605670,\t-0.309877980278634390,\t-0.309925518707968580,\t-0.309973056362488510,\t\n-0.310020593242075870,\t-0.310068129346612100,\t-0.310115664675977620,\t-0.310163199230053980,\t-0.310210733008722370,\t-0.310258266011864290,\t-0.310305798239360160,\t-0.310353329691091530,\t\n-0.310400860366939590,\t-0.310448390266785890,\t-0.310495919390510800,\t-0.310543447737995910,\t-0.310590975309122440,\t-0.310638502103771920,\t-0.310686028121824720,\t-0.310733553363162440,\t\n-0.310781077827666290,\t-0.310828601515217850,\t-0.310876124425697510,\t-0.310923646558986850,\t-0.310971167914967540,\t-0.311018688493519820,\t-0.311066208294525410,\t-0.311113727317865460,\t\n-0.311161245563421670,\t-0.311208763031074250,\t-0.311256279720705020,\t-0.311303795632195010,\t-0.311351310765425990,\t-0.311398825120278280,\t-0.311446338696633460,\t-0.311493851494372810,\t\n-0.311541363513377970,\t-0.311588874753529250,\t-0.311636385214708380,\t-0.311683894896796540,\t-0.311731403799675400,\t-0.311778911923225320,\t-0.311826419267327960,\t-0.311873925831864960,\t\n-0.311921431616716760,\t-0.311968936621764950,\t-0.312016440846890840,\t-0.312063944291975980,\t-0.312111446956900910,\t-0.312158948841547160,\t-0.312206449945796050,\t-0.312253950269529290,\t\n-0.312301449812627200,\t-0.312348948574971470,\t-0.312396446556443390,\t-0.312443943756924580,\t-0.312491440176295490,\t-0.312538935814437870,\t-0.312586430671232820,\t-0.312633924746562150,\t\n-0.312681418040306300,\t-0.312728910552346860,\t-0.312776402282565150,\t-0.312823893230842810,\t-0.312871383397060390,\t-0.312918872781099480,\t-0.312966361382841780,\t-0.313013849202167790,\t\n-0.313061336238959150,\t-0.313108822493097240,\t-0.313156307964463640,\t-0.313203792652938850,\t-0.313251276558404570,\t-0.313298759680742110,\t-0.313346242019833190,\t-0.313393723575558230,\t\n-0.313441204347798930,\t-0.313488684336436670,\t-0.313536163541353050,\t-0.313583641962428660,\t-0.313631119599545150,\t-0.313678596452583890,\t-0.313726072521426480,\t-0.313773547805953510,\t\n-0.313821022306046690,\t-0.313868496021587670,\t-0.313915968952457050,\t-0.313963441098536470,\t-0.314010912459707300,\t-0.314058383035851260,\t-0.314105852826848890,\t-0.314153321832581820,\t\n-0.314200790052931500,\t-0.314248257487779630,\t-0.314295724137006630,\t-0.314343190000494380,\t-0.314390655078124140,\t-0.314438119369777670,\t-0.314485582875335510,\t-0.314533045594679370,\t\n-0.314580507527690620,\t-0.314627968674251020,\t-0.314675429034241060,\t-0.314722888607542550,\t-0.314770347394037200,\t-0.314817805393605600,\t-0.314865262606129510,\t-0.314912719031490210,\t\n-0.314960174669569600,\t-0.315007629520248080,\t-0.315055083583407500,\t-0.315102536858929190,\t-0.315149989346694970,\t-0.315197441046585370,\t-0.315244891958482150,\t-0.315292342082266750,\t\n-0.315339791417820870,\t-0.315387239965025100,\t-0.315434687723761210,\t-0.315482134693910620,\t-0.315529580875355150,\t-0.315577026267975240,\t-0.315624470871652800,\t-0.315671914686269210,\t\n-0.315719357711706230,\t-0.315766799947844400,\t-0.315814241394565600,\t-0.315861682051751640,\t-0.315909121919283000,\t-0.315956560997041610,\t-0.316003999284908800,\t-0.316051436782766370,\t\n-0.316098873490494980,\t-0.316146309407976390,\t-0.316193744535092030,\t-0.316241178871723700,\t-0.316288612417752020,\t-0.316336045173058860,\t-0.316383477137525520,\t-0.316430908311033930,\t\n-0.316478338693464640,\t-0.316525768284699530,\t-0.316573197084620010,\t-0.316620625093107900,\t-0.316668052310043750,\t-0.316715478735309530,\t-0.316762904368787010,\t-0.316810329210356840,\t\n-0.316857753259900840,\t-0.316905176517300440,\t-0.316952598982437550,\t-0.317000020655192670,\t-0.317047441535447780,\t-0.317094861623084310,\t-0.317142280917984080,\t-0.317189699420027730,\t\n-0.317237117129097130,\t-0.317284534045073780,\t-0.317331950167839490,\t-0.317379365497274860,\t-0.317426780033261860,\t-0.317474193775681920,\t-0.317521606724416870,\t-0.317569018879347410,\t\n-0.317616430240355410,\t-0.317663840807322740,\t-0.317711250580130060,\t-0.317758659558659280,\t-0.317806067742791800,\t-0.317853475132409580,\t-0.317900881727393280,\t-0.317948287527624770,\t\n-0.317995692532985540,\t-0.318043096743357460,\t-0.318090500158621280,\t-0.318137902778658780,\t-0.318185304603351590,\t-0.318232705632581550,\t-0.318280105866229290,\t-0.318327505304176750,\t\n-0.318374903946305520,\t-0.318422301792497360,\t-0.318469698842633100,\t-0.318517095096594590,\t-0.318564490554263720,\t-0.318611885215521250,\t-0.318659279080249050,\t-0.318706672148328600,\t\n-0.318754064419641940,\t-0.318801455894069720,\t-0.318848846571493820,\t-0.318896236451795820,\t-0.318943625534857610,\t-0.318991013820560000,\t-0.319038401308784800,\t-0.319085787999413560,\t\n-0.319133173892328310,\t-0.319180558987409770,\t-0.319227943284539740,\t-0.319275326783599880,\t-0.319322709484472110,\t-0.319370091387037200,\t-0.319417472491177020,\t-0.319464852796773170,\t\n-0.319512232303707620,\t-0.319559611011861030,\t-0.319606988921115440,\t-0.319654366031352780,\t-0.319701742342453800,\t-0.319749117854300490,\t-0.319796492566774340,\t-0.319843866479757380,\t\n-0.319891239593130370,\t-0.319938611906775250,\t-0.319985983420573550,\t-0.320033354134407370,\t-0.320080724048157410,\t-0.320128093161705600,\t-0.320175461474933530,\t-0.320222828987723250,\t\n-0.320270195699955460,\t-0.320317561611512200,\t-0.320364926722275070,\t-0.320412291032125980,\t-0.320459654540945770,\t-0.320507017248616470,\t-0.320554379155020000,\t-0.320601740260037130,\t\n-0.320649100563549950,\t-0.320696460065440000,\t-0.320743818765589380,\t-0.320791176663878740,\t-0.320838533760190170,\t-0.320885890054405270,\t-0.320933245546406010,\t-0.320980600236073280,\t\n-0.321027954123289050,\t-0.321075307207934920,\t-0.321122659489892940,\t-0.321170010969043910,\t-0.321217361645269820,\t-0.321264711518452320,\t-0.321312060588473500,\t-0.321359408855214080,\t\n-0.321406756318556140,\t-0.321454102978381730,\t-0.321501448834571660,\t-0.321548793887007970,\t-0.321596138135572310,\t-0.321643481580146660,\t-0.321690824220611960,\t-0.321738166056850130,\t\n-0.321785507088742930,\t-0.321832847316172340,\t-0.321880186739019300,\t-0.321927525357165730,\t-0.321974863170493340,\t-0.322022200178884220,\t-0.322069536382219190,\t-0.322116871780380290,\t\n-0.322164206373249270,\t-0.322211540160708130,\t-0.322258873142637680,\t-0.322306205318920070,\t-0.322353536689436950,\t-0.322400867254070410,\t-0.322448197012701330,\t-0.322495525965211690,\t\n-0.322542854111483700,\t-0.322590181451398120,\t-0.322637507984837090,\t-0.322684833711682330,\t-0.322732158631815870,\t-0.322779482745118580,\t-0.322826806051472630,\t-0.322874128550759590,\t\n-0.322921450242861730,\t-0.322968771127659760,\t-0.323016091205035880,\t-0.323063410474871800,\t-0.323110728937049620,\t-0.323158046591450140,\t-0.323205363437955580,\t-0.323252679476447650,\t\n-0.323299994706808370,\t-0.323347309128918740,\t-0.323394622742660790,\t-0.323441935547916730,\t-0.323489247544567430,\t-0.323536558732494980,\t-0.323583869111581160,\t-0.323631178681708040,\t\n-0.323678487442756620,\t-0.323725795394608940,\t-0.323773102537146750,\t-0.323820408870252260,\t-0.323867714393806350,\t-0.323915019107691100,\t-0.323962323011788340,\t-0.324009626105980160,\t\n-0.324056928390147550,\t-0.324104229864172530,\t-0.324151530527936990,\t-0.324198830381323080,\t-0.324246129424211600,\t-0.324293427656484830,\t-0.324340725078024920,\t-0.324388021688712780,\t\n-0.324435317488430570,\t-0.324482612477060120,\t-0.324529906654483500,\t-0.324577200020581710,\t-0.324624492575236900,\t-0.324671784318330880,\t-0.324719075249745800,\t-0.324766365369362650,\t\n-0.324813654677063520,\t-0.324860943172730340,\t-0.324908230856245150,\t-0.324955517727488990,\t-0.325002803786344050,\t-0.325050089032692110,\t-0.325097373466415320,\t-0.325144657087394710,\t\n-0.325191939895512430,\t-0.325239221890650740,\t-0.325286503072690580,\t-0.325333783441514200,\t-0.325381062997003310,\t-0.325428341739040170,\t-0.325475619667505770,\t-0.325522896782282360,\t\n-0.325570173083251650,\t-0.325617448570295950,\t-0.325664723243296260,\t-0.325711997102134660,\t-0.325759270146693150,\t-0.325806542376853860,\t-0.325853813792497780,\t-0.325901084393507180,\t\n-0.325948354179763870,\t-0.325995623151150100,\t-0.326042891307546820,\t-0.326090158648836340,\t-0.326137425174900460,\t-0.326184690885621460,\t-0.326231955780880270,\t-0.326279219860559240,\t\n-0.326326483124540550,\t-0.326373745572705210,\t-0.326421007204935550,\t-0.326468268021113340,\t-0.326515528021120880,\t-0.326562787204839220,\t-0.326610045572150560,\t-0.326657303122936780,\t\n-0.326704559857080190,\t-0.326751815774461770,\t-0.326799070874963790,\t-0.326846325158468120,\t-0.326893578624857130,\t-0.326940831274011690,\t-0.326988083105814230,\t-0.327035334120146510,\t\n-0.327082584316890910,\t-0.327129833695928460,\t-0.327177082257141370,\t-0.327224330000412010,\t-0.327271576925621420,\t-0.327318823032651920,\t-0.327366068321385320,\t-0.327413312791703940,\t\n-0.327460556443488930,\t-0.327507799276622490,\t-0.327555041290986500,\t-0.327602282486463390,\t-0.327649522862934140,\t-0.327696762420281120,\t-0.327744001158386140,\t-0.327791239077131590,\t\n-0.327838476176398550,\t-0.327885712456069290,\t-0.327932947916025730,\t-0.327980182556150250,\t-0.328027416376323930,\t-0.328074649376429000,\t-0.328121881556347920,\t-0.328169112915961680,\t\n-0.328216343455152660,\t-0.328263573173802840,\t-0.328310802071794420,\t-0.328358030149008610,\t-0.328405257405327780,\t-0.328452483840633750,\t-0.328499709454808940,\t-0.328546934247734400,\t\n-0.328594158219292550,\t-0.328641381369365330,\t-0.328688603697835090,\t-0.328735825204582890,\t-0.328783045889491090,\t-0.328830265752441730,\t-0.328877484793317130,\t-0.328924703011998330,\t\n-0.328971920408367870,\t-0.329019136982307560,\t-0.329066352733699830,\t-0.329113567662425780,\t-0.329160781768367830,\t-0.329207995051408350,\t-0.329255207511428450,\t-0.329302419148310540,\t\n-0.329349629961936560,\t-0.329396839952188940,\t-0.329444049118948810,\t-0.329491257462098560,\t-0.329538464981520170,\t-0.329585671677096010,\t-0.329632877548707240,\t-0.329680082596236320,\t\n-0.329727286819565200,\t-0.329774490218576240,\t-0.329821692793150660,\t-0.329868894543170870,\t-0.329916095468518800,\t-0.329963295569076940,\t-0.330010494844726390,\t-0.330057693295349620,\t\n-0.330104890920829060,\t-0.330152087721045820,\t-0.330199283695882360,\t-0.330246478845220740,\t-0.330293673168943260,\t-0.330340866666931240,\t-0.330388059339067060,\t-0.330435251185232700,\t\n-0.330482442205310640,\t-0.330529632399182040,\t-0.330576821766729370,\t-0.330624010307834670,\t-0.330671198022380320,\t-0.330718384910247630,\t-0.330765570971318920,\t-0.330812756205476290,\t\n-0.330859940612602150,\t-0.330907124192577780,\t-0.330954306945285600,\t-0.331001488870608100,\t-0.331048669968426410,\t-0.331095850238623090,\t-0.331143029681080110,\t-0.331190208295679970,\t\n-0.331237386082303910,\t-0.331284563040834420,\t-0.331331739171153440,\t-0.331378914473143600,\t-0.331426088946686010,\t-0.331473262591663210,\t-0.331520435407957280,\t-0.331567607395450660,\t\n-0.331614778554024600,\t-0.331661948883561600,\t-0.331709118383943740,\t-0.331756287055053500,\t-0.331803454896772100,\t-0.331850621908982070,\t-0.331897788091565890,\t-0.331944953444404890,\t\n-0.331992117967381430,\t-0.332039281660377720,\t-0.332086444523276180,\t-0.332133606555958140,\t-0.332180767758306070,\t-0.332227928130202130,\t-0.332275087671528750,\t-0.332322246382167230,\t\n-0.332369404262000070,\t-0.332416561310909460,\t-0.332463717528777850,\t-0.332510872915486480,\t-0.332558027470917950,\t-0.332605181194954360,\t-0.332652334087478240,\t-0.332699486148370860,\t\n-0.332746637377514750,\t-0.332793787774792070,\t-0.332840937340085350,\t-0.332888086073275860,\t-0.332935233974246130,\t-0.332982381042878750,\t-0.333029527279054990,\t-0.333076672682657450,\t\n-0.333123817253568210,\t-0.333170960991669820,\t-0.333218103896843640,\t-0.333265245968972170,\t-0.333312387207937600,\t-0.333359527613622470,\t-0.333406667185908110,\t-0.333453805924677100,\t\n-0.333500943829811550,\t-0.333548080901194090,\t-0.333595217138705990,\t-0.333642352542229850,\t-0.333689487111647810,\t-0.333736620846842470,\t-0.333783753747695200,\t-0.333830885814088480,\t\n-0.333878017045905030,\t-0.333925147443026090,\t-0.333972277005334270,\t-0.334019405732711830,\t-0.334066533625041180,\t-0.334113660682203880,\t-0.334160786904082350,\t-0.334207912290558910,\t\n-0.334255036841516080,\t-0.334302160556835260,\t-0.334349283436399030,\t-0.334396405480089590,\t-0.334443526687789540,\t-0.334490647059380250,\t-0.334537766594744380,\t-0.334584885293764070,\t\n-0.334632003156321970,\t-0.334679120182299390,\t-0.334726236371579110,\t-0.334773351724043600,\t-0.334820466239574290,\t-0.334867579918053830,\t-0.334914692759364420,\t-0.334961804763388660,\t\n-0.335008915930008030,\t-0.335056026259105080,\t-0.335103135750562050,\t-0.335150244404261610,\t-0.335197352220085180,\t-0.335244459197915350,\t-0.335291565337634320,\t-0.335338670639124870,\t\n-0.335385775102268250,\t-0.335432878726947270,\t-0.335479981513044030,\t-0.335527083460441300,\t-0.335574184569020380,\t-0.335621284838664050,\t-0.335668384269254490,\t-0.335715482860674430,\t\n-0.335762580612805230,\t-0.335809677525529540,\t-0.335856773598730120,\t-0.335903868832288290,\t-0.335950963226086810,\t-0.335998056780007940,\t-0.336045149493934380,\t-0.336092241367747460,\t\n-0.336139332401329980,\t-0.336186422594564160,\t-0.336233511947332700,\t-0.336280600459517020,\t-0.336327688130999840,\t-0.336374774961663460,\t-0.336421860951390590,\t-0.336468946100062620,\t\n-0.336516030407562280,\t-0.336563113873771860,\t-0.336610196498574040,\t-0.336657278281850380,\t-0.336704359223483520,\t-0.336751439323356110,\t-0.336798518581349740,\t-0.336845596997347060,\t\n-0.336892674571230400,\t-0.336939751302882450,\t-0.336986827192184760,\t-0.337033902239019910,\t-0.337080976443270400,\t-0.337128049804818810,\t-0.337175122323546680,\t-0.337222193999336730,\t\n-0.337269264832071310,\t-0.337316334821633200,\t-0.337363403967903760,\t-0.337410472270765820,\t-0.337457539730101730,\t-0.337504606345794210,\t-0.337551672117724740,\t-0.337598737045776090,\t\n-0.337645801129831000,\t-0.337692864369771030,\t-0.337739926765478870,\t-0.337786988316836900,\t-0.337834049023727880,\t-0.337881108886033340,\t-0.337928167903636000,\t-0.337975226076418220,\t\n-0.338022283404262820,\t-0.338069339887051350,\t-0.338116395524666440,\t-0.338163450316990580,\t-0.338210504263906530,\t-0.338257557365295780,\t-0.338304609621041090,\t-0.338351661031024930,\t\n-0.338398711595130020,\t-0.338445761313237950,\t-0.338492810185231420,\t-0.338539858210993310,\t-0.338586905390405150,\t-0.338633951723349700,\t-0.338680997209709400,\t-0.338728041849367000,\t\n-0.338775085642204100,\t-0.338822128588103460,\t-0.338869170686947550,\t-0.338916211938619090,\t-0.338963252342999680,\t-0.339010291899972120,\t-0.339057330609418840,\t-0.339104368471222720,\t\n-0.339151405485265180,\t-0.339198441651429150,\t-0.339245476969597000,\t-0.339292511439651610,\t-0.339339545061474510,\t-0.339386577834948580,\t-0.339433609759956180,\t-0.339480640836380130,\t\n-0.339527671064102090,\t-0.339574700443004920,\t-0.339621728972971330,\t-0.339668756653883070,\t-0.339715783485622870,\t-0.339762809468073250,\t-0.339809834601117020,\t-0.339856858884635790,\t\n-0.339903882318512370,\t-0.339950904902629300,\t-0.339997926636869340,\t-0.340044947521114190,\t-0.340091967555246620,\t-0.340138986739149160,\t-0.340186005072704630,\t-0.340233022555794740,\t\n-0.340280039188302240,\t-0.340327054970109620,\t-0.340374069901099810,\t-0.340421083981154390,\t-0.340468097210156310,\t-0.340515109587988360,\t-0.340562121114532210,\t-0.340609131789670780,\t\n-0.340656141613286500,\t-0.340703150585262290,\t-0.340750158705479810,\t-0.340797165973821930,\t-0.340844172390171120,\t-0.340891177954410320,\t-0.340938182666421120,\t-0.340985186526086450,\t\n-0.341032189533288840,\t-0.341079191687911230,\t-0.341126192989835150,\t-0.341173193438943590,\t-0.341220193035119080,\t-0.341267191778244490,\t-0.341314189668201540,\t-0.341361186704873030,\t\n-0.341408182888142060,\t-0.341455178217890180,\t-0.341502172694000350,\t-0.341549166316355070,\t-0.341596159084837310,\t-0.341643150999328740,\t-0.341690142059712320,\t-0.341737132265870490,\t\n-0.341784121617686290,\t-0.341831110115041360,\t-0.341878097757818630,\t-0.341925084545900650,\t-0.341972070479170390,\t-0.342019055557509550,\t-0.342066039780801080,\t-0.342113023148927500,\t\n-0.342160005661771790,\t-0.342206987319215620,\t-0.342253968121142000,\t-0.342300948067433440,\t-0.342347927157972960,\t-0.342394905392642220,\t-0.342441882771324200,\t-0.342488859293901940,\t\n-0.342535834960257080,\t-0.342582809770272670,\t-0.342629783723831180,\t-0.342676756820815720,\t-0.342723729061107870,\t-0.342770700444590740,\t-0.342817670971146850,\t-0.342864640640659190,\t\n-0.342911609453009580,\t-0.342958577408080890,\t-0.343005544505755710,\t-0.343052510745917140,\t-0.343099476128446880,\t-0.343146440653227910,\t-0.343193404320142890,\t-0.343240367129074740,\t\n-0.343287329079905220,\t-0.343334290172517430,\t-0.343381250406794290,\t-0.343428209782617620,\t-0.343475168299870460,\t-0.343522125958435340,\t-0.343569082758195370,\t-0.343616038699032230,\t\n-0.343662993780828980,\t-0.343709948003468270,\t-0.343756901366833120,\t-0.343803853870805310,\t-0.343850805515267810,\t-0.343897756300103330,\t-0.343944706225194910,\t-0.343991655290424250,\t\n-0.344038603495674500,\t-0.344085550840828200,\t-0.344132497325768450,\t-0.344179442950377060,\t-0.344226387714537060,\t-0.344273331618131450,\t-0.344320274661042150,\t-0.344367216843152190,\t\n-0.344414158164344120,\t-0.344461098624501140,\t-0.344508038223504950,\t-0.344554976961238660,\t-0.344601914837584960,\t-0.344648851852426890,\t-0.344695788005646210,\t-0.344742723297126130,\t\n-0.344789657726749240,\t-0.344836591294398590,\t-0.344883523999956030,\t-0.344930455843304730,\t-0.344977386824327210,\t-0.345024316942906690,\t-0.345071246198924930,\t-0.345118174592265130,\t\n-0.345165102122810210,\t-0.345212028790442160,\t-0.345258954595044080,\t-0.345305879536498550,\t-0.345352803614688790,\t-0.345399726829496550,\t-0.345446649180805030,\t-0.345493570668496900,\t\n-0.345540491292455230,\t-0.345587411052561910,\t-0.345634329948700080,\t-0.345681247980752390,\t-0.345728165148602050,\t-0.345775081452130870,\t-0.345821996891221950,\t-0.345868911465758100,\t\n-0.345915825175622300,\t-0.345962738020696600,\t-0.346009650000864030,\t-0.346056561116007360,\t-0.346103471366009660,\t-0.346150380750752880,\t-0.346197289270120110,\t-0.346244196923994610,\t\n-0.346291103712258130,\t-0.346338009634793940,\t-0.346384914691484750,\t-0.346431818882213640,\t-0.346478722206862540,\t-0.346525624665314670,\t-0.346572526257452770,\t-0.346619426983159950,\t\n-0.346666326842318130,\t-0.346713225834810510,\t-0.346760123960519810,\t-0.346807021219329210,\t-0.346853917611120670,\t-0.346900813135777310,\t-0.346947707793181900,\t-0.346994601583217710,\t\n-0.347041494505766550,\t-0.347088386560711670,\t-0.347135277747936180,\t-0.347182168067322160,\t-0.347229057518752660,\t-0.347275946102110540,\t-0.347322833817279020,\t-0.347369720664139960,\t\n-0.347416606642576560,\t-0.347463491752471710,\t-0.347510375993708490,\t-0.347557259366168940,\t-0.347604141869736260,\t-0.347651023504293170,\t-0.347697904269722970,\t-0.347744784165907590,\t\n-0.347791663192730300,\t-0.347838541350073800,\t-0.347885418637821350,\t-0.347932295055854990,\t-0.347979170604057860,\t-0.348026045282313180,\t-0.348072919090503030,\t-0.348119792028510570,\t\n-0.348166664096218600,\t-0.348213535293510460,\t-0.348260405620268000,\t-0.348307275076374550,\t-0.348354143661712910,\t-0.348401011376166300,\t-0.348447878219616760,\t-0.348494744191947540,\t\n-0.348541609293041450,\t-0.348588473522781770,\t-0.348635336881050470,\t-0.348682199367730820,\t-0.348729060982705670,\t-0.348775921725858310,\t-0.348822781597070750,\t-0.348869640596226220,\t\n-0.348916498723207570,\t-0.348963355977898070,\t-0.349010212360179760,\t-0.349057067869935960,\t-0.349103922507049910,\t-0.349150776271403620,\t-0.349197629162880390,\t-0.349244481181363090,\t\n-0.349291332326734980,\t-0.349338182598878170,\t-0.349385031997675840,\t-0.349431880523011000,\t-0.349478728174766830,\t-0.349525574952825440,\t-0.349572420857070130,\t-0.349619265887383730,\t\n-0.349666110043649610,\t-0.349712953325749810,\t-0.349759795733567580,\t-0.349806637266985910,\t-0.349853477925888000,\t-0.349900317710156060,\t-0.349947156619673240,\t-0.349993994654323020,\t\n-0.350040831813987370,\t-0.350087668098549630,\t-0.350134503507892710,\t-0.350181338041899990,\t-0.350228171700453450,\t-0.350275004483436510,\t-0.350321836390732110,\t-0.350368667422223450,\t\n-0.350415497577792780,\t-0.350462326857323310,\t-0.350509155260698040,\t-0.350555982787800310,\t-0.350602809438512190,\t-0.350649635212717080,\t-0.350696460110297810,\t-0.350743284131137870,\t\n-0.350790107275119280,\t-0.350836929542125420,\t-0.350883750932039720,\t-0.350930571444744150,\t-0.350977391080122160,\t-0.351024209838056710,\t-0.351071027718431130,\t-0.351117844721127560,\t\n-0.351164660846029430,\t-0.351211476093019610,\t-0.351258290461981540,\t-0.351305103952797290,\t-0.351351916565350310,\t-0.351398728299523510,\t-0.351445539155200330,\t-0.351492349132262900,\t\n-0.351539158230594560,\t-0.351585966450078340,\t-0.351632773790597650,\t-0.351679580252034550,\t-0.351726385834272510,\t-0.351773190537194970,\t-0.351819994360684010,\t-0.351866797304623060,\t\n-0.351913599368895100,\t-0.351960400553383620,\t-0.352007200857970660,\t-0.352054000282539750,\t-0.352100798826973820,\t-0.352147596491156290,\t-0.352194393274969320,\t-0.352241189178296440,\t\n-0.352287984201020530,\t-0.352334778343025120,\t-0.352381571604192310,\t-0.352428363984405630,\t-0.352475155483548020,\t-0.352521946101502890,\t-0.352568735838152510,\t-0.352615524693380310,\t\n-0.352662312667069270,\t-0.352709099759102860,\t-0.352755885969363300,\t-0.352802671297734020,\t-0.352849455744098480,\t-0.352896239308338850,\t-0.352943021990338670,\t-0.352989803789980960,\t\n-0.353036584707149100,\t-0.353083364741725360,\t-0.353130143893593260,\t-0.353176922162635740,\t-0.353223699548736390,\t-0.353270476051777360,\t-0.353317251671642070,\t-0.353364026408213740,\t\n-0.353410800261375720,\t-0.353457573231010290,\t-0.353504345317000920,\t-0.353551116519230710,\t-0.353597886837583090,\t-0.353644656271940360,\t-0.353691424822186020,\t-0.353738192488203480,\t\n-0.353784959269875080,\t-0.353831725167084280,\t-0.353878490179714120,\t-0.353925254307648210,\t-0.353972017550768680,\t-0.354018779908959190,\t-0.354065541382102670,\t-0.354112301970082750,\t\n-0.354159061672781660,\t-0.354205820490082920,\t-0.354252578421869630,\t-0.354299335468025330,\t-0.354346091628432220,\t-0.354392846902973900,\t-0.354439601291533510,\t-0.354486354793994480,\t\n-0.354533107410239190,\t-0.354579859140151110,\t-0.354626609983613780,\t-0.354673359940509520,\t-0.354720109010721870,\t-0.354766857194133920,\t-0.354813604490629260,\t-0.354860350900090220,\t\n-0.354907096422400260,\t-0.354953841057442540,\t-0.355000584805100660,\t-0.355047327665256870,\t-0.355094069637794830,\t-0.355140810722597570,\t-0.355187550919548680,\t-0.355234290228530540,\t\n-0.355281028649426620,\t-0.355327766182120200,\t-0.355374502826494740,\t-0.355421238582432570,\t-0.355467973449817400,\t-0.355514707428532200,\t-0.355561440518460730,\t-0.355608172719485190,\t\n-0.355654904031489190,\t-0.355701634454356430,\t-0.355748363987969110,\t-0.355795092632210870,\t-0.355841820386964940,\t-0.355888547252114880,\t-0.355935273227542980,\t-0.355981998313132930,\t\n-0.356028722508767880,\t-0.356075445814331480,\t-0.356122168229705990,\t-0.356168889754775120,\t-0.356215610389422010,\t-0.356262330133530310,\t-0.356309048986982350,\t-0.356355766949661760,\t\n-0.356402484021451750,\t-0.356449200202235970,\t-0.356495915491896740,\t-0.356542629890317760,\t-0.356589343397382570,\t-0.356636056012973660,\t-0.356682767736974600,\t-0.356729478569268620,\t\n-0.356776188509739360,\t-0.356822897558269180,\t-0.356869605714741740,\t-0.356916312979040360,\t-0.356963019351048570,\t-0.357009724830648860,\t-0.357056429417724750,\t-0.357103133112159630,\t\n-0.357149835913837090,\t-0.357196537822639550,\t-0.357243238838450660,\t-0.357289938961153630,\t-0.357336638190632220,\t-0.357383336526768790,\t-0.357430033969447000,\t-0.357476730518550560,\t\n-0.357523426173961880,\t-0.357570120935564620,\t-0.357616814803242030,\t-0.357663507776877890,\t-0.357710199856354490,\t-0.357756891041555670,\t-0.357803581332364560,\t-0.357850270728664930,\t\n-0.357896959230339210,\t-0.357943646837271090,\t-0.357990333549343840,\t-0.358037019366441220,\t-0.358083704288445600,\t-0.358130388315240740,\t-0.358177071446709900,\t-0.358223753682736790,\t\n-0.358270435023203880,\t-0.358317115467994880,\t-0.358363795016993500,\t-0.358410473670082220,\t-0.358457151427144740,\t-0.358503828288064430,\t-0.358550504252724940,\t-0.358597179321008760,\t\n-0.358643853492799650,\t-0.358690526767980910,\t-0.358737199146436260,\t-0.358783870628048170,\t-0.358830541212700470,\t-0.358877210900276360,\t-0.358923879690659640,\t-0.358970547583732870,\t\n-0.359017214579379680,\t-0.359063880677483460,\t-0.359110545877927960,\t-0.359157210180595650,\t-0.359203873585370310,\t-0.359250536092135310,\t-0.359297197700774400,\t-0.359343858411170060,\t\n-0.359390518223206110,\t-0.359437177136766260,\t-0.359483835151733040,\t-0.359530492267990220,\t-0.359577148485421220,\t-0.359623803803909680,\t-0.359670458223338320,\t-0.359717111743590720,\t\n-0.359763764364550380,\t-0.359810416086101040,\t-0.359857066908125240,\t-0.359903716830506810,\t-0.359950365853129060,\t-0.359997013975875800,\t-0.360043661198629630,\t-0.360090307521274240,\t\n-0.360136952943693130,\t-0.360183597465770060,\t-0.360230241087387550,\t-0.360276883808429480,\t-0.360323525628779560,\t-0.360370166548320490,\t-0.360416806566935920,\t-0.360463445684509390,\t\n-0.360510083900924650,\t-0.360556721216064250,\t-0.360603357629812050,\t-0.360649993142051480,\t-0.360696627752666370,\t-0.360743261461539230,\t-0.360789894268553960,\t-0.360836526173593960,\t\n-0.360883157176543010,\t-0.360929787277283810,\t-0.360976416475700110,\t-0.361023044771675410,\t-0.361069672165093450,\t-0.361116298655836940,\t-0.361162924243789650,\t-0.361209548928835500,\t\n-0.361256172710857030,\t-0.361302795589738160,\t-0.361349417565362320,\t-0.361396038637613270,\t-0.361442658806373770,\t-0.361489278071527640,\t-0.361535896432958250,\t-0.361582513890549570,\t\n-0.361629130444184210,\t-0.361675746093746030,\t-0.361722360839118460,\t-0.361768974680185370,\t-0.361815587616829470,\t-0.361862199648934570,\t-0.361908810776384200,\t-0.361955420999062250,\t\n-0.362002030316851300,\t-0.362048638729635220,\t-0.362095246237297610,\t-0.362141852839722280,\t-0.362188458536791940,\t-0.362235063328390390,\t-0.362281667214401640,\t-0.362328270194708260,\t\n-0.362374872269194240,\t-0.362421473437743060,\t-0.362468073700238590,\t-0.362514673056563490,\t-0.362561271506601780,\t-0.362607869050236840,\t-0.362654465687352660,\t-0.362701061417831870,\t\n-0.362747656241558470,\t-0.362794250158415880,\t-0.362840843168288130,\t-0.362887435271057820,\t-0.362934026466608940,\t-0.362980616754824960,\t-0.363027206135589920,\t-0.363073794608786420,\t\n-0.363120382174298430,\t-0.363166968832009880,\t-0.363213554581803490,\t-0.363260139423563280,\t-0.363306723357172680,\t-0.363353306382515670,\t-0.363399888499474970,\t-0.363446469707934590,\t\n-0.363493050007777980,\t-0.363539629398889230,\t-0.363586207881150920,\t-0.363632785454447160,\t-0.363679362118661420,\t-0.363725937873677680,\t-0.363772512719378660,\t-0.363819086655648380,\t\n-0.363865659682370390,\t-0.363912231799428660,\t-0.363958803006705910,\t-0.364005373304086170,\t-0.364051942691453410,\t-0.364098511168690410,\t-0.364145078735681080,\t-0.364191645392309080,\t\n-0.364238211138458390,\t-0.364284775974011770,\t-0.364331339898853130,\t-0.364377902912866200,\t-0.364424465015934950,\t-0.364471026207942080,\t-0.364517586488771690,\t-0.364564145858307320,\t\n-0.364610704316433000,\t-0.364657261863031490,\t-0.364703818497986830,\t-0.364750374221182620,\t-0.364796929032502880,\t-0.364843482931830390,\t-0.364890035919049230,\t-0.364936587994042990,\t\n-0.364983139156695670,\t-0.365029689406890070,\t-0.365076238744510280,\t-0.365122787169440300,\t-0.365169334681562930,\t-0.365215881280762210,\t-0.365262426966921790,\t-0.365308971739925770,\t\n-0.365355515599656840,\t-0.365402058545999160,\t-0.365448600578836320,\t-0.365495141698052360,\t-0.365541681903530200,\t-0.365588221195153770,\t-0.365634759572806830,\t-0.365681297036373420,\t\n-0.365727833585736290,\t-0.365774369220779660,\t-0.365820903941387050,\t-0.365867437747442570,\t-0.365913970638829130,\t-0.365960502615430780,\t-0.366007033677131550,\t-0.366053563823814320,\t\n-0.366100093055363170,\t-0.366146621371661820,\t-0.366193148772594350,\t-0.366239675258043570,\t-0.366286200827893590,\t-0.366332725482028110,\t-0.366379249220331220,\t-0.366425772042685840,\t\n-0.366472293948975960,\t-0.366518814939085390,\t-0.366565335012898170,\t-0.366611854170297240,\t-0.366658372411166670,\t-0.366704889735390120,\t-0.366751406142851790,\t-0.366797921633434550,\t\n-0.366844436207022510,\t-0.366890949863499740,\t-0.366937462602749230,\t-0.366983974424655020,\t-0.367030485329100930,\t-0.367076995315971040,\t-0.367123504385148180,\t-0.367170012536516600,\t\n-0.367216519769960000,\t-0.367263026085362490,\t-0.367309531482607030,\t-0.367356035961577730,\t-0.367402539522158340,\t-0.367449042164233020,\t-0.367495543887684680,\t-0.367542044692397480,\t\n-0.367588544578255130,\t-0.367635043545141870,\t-0.367681541592940590,\t-0.367728038721535420,\t-0.367774534930810640,\t-0.367821030220649050,\t-0.367867524590934910,\t-0.367914018041551940,\t\n-0.367960510572384330,\t-0.368007002183315060,\t-0.368053492874228280,\t-0.368099982645007760,\t-0.368146471495537700,\t-0.368192959425701020,\t-0.368239446435381980,\t-0.368285932524464290,\t\n-0.368332417692832200,\t-0.368378901940368650,\t-0.368425385266957890,\t-0.368471867672483630,\t-0.368518349156830070,\t-0.368564829719880300,\t-0.368611309361518420,\t-0.368657788081628250,\t\n-0.368704265880094030,\t-0.368750742756798760,\t-0.368797218711626630,\t-0.368843693744461850,\t-0.368890167855187410,\t-0.368936641043687560,\t-0.368983113309846120,\t-0.369029584653547290,\t\n-0.369076055074674110,\t-0.369122524573110790,\t-0.369168993148741190,\t-0.369215460801449460,\t-0.369261927531118690,\t-0.369308393337633100,\t-0.369354858220876490,\t-0.369401322180733180,\t\n-0.369447785217086160,\t-0.369494247329819670,\t-0.369540708518817600,\t-0.369587168783964140,\t-0.369633628125142330,\t-0.369680086542236440,\t-0.369726544035130780,\t-0.369773000603708320,\t\n-0.369819456247853400,\t-0.369865910967449810,\t-0.369912364762381870,\t-0.369958817632532580,\t-0.370005269577786230,\t-0.370051720598026770,\t-0.370098170693138380,\t-0.370144619863004180,\t\n-0.370191068107508400,\t-0.370237515426534940,\t-0.370283961819968140,\t-0.370330407287691010,\t-0.370376851829587850,\t-0.370423295445542530,\t-0.370469738135439430,\t-0.370516179899161580,\t\n-0.370562620736593300,\t-0.370609060647618840,\t-0.370655499632121300,\t-0.370701937689985050,\t-0.370748374821093910,\t-0.370794811025332290,\t-0.370841246302583190,\t-0.370887680652731030,\t\n-0.370934114075659630,\t-0.370980546571253400,\t-0.371026978139395340,\t-0.371073408779969860,\t-0.371119838492860840,\t-0.371166267277952660,\t-0.371212695135128390,\t-0.371259122064272360,\t\n-0.371305548065268550,\t-0.371351973138001280,\t-0.371398397282353630,\t-0.371444820498210040,\t-0.371491242785454370,\t-0.371537664143970990,\t-0.371584084573643060,\t-0.371630504074354940,\t\n-0.371676922645990950,\t-0.371723340288434230,\t-0.371769757001569170,\t-0.371816172785279730,\t-0.371862587639450290,\t-0.371909001563963890,\t-0.371955414558705070,\t-0.372001826623557690,\t\n-0.372048237758406120,\t-0.372094647963133570,\t-0.372141057237624420,\t-0.372187465581762580,\t-0.372233872995432540,\t-0.372280279478517380,\t-0.372326685030901490,\t-0.372373089652468960,\t\n-0.372419493343104040,\t-0.372465896102690040,\t-0.372512297931111240,\t-0.372558698828252150,\t-0.372605098793995890,\t-0.372651497828226870,\t-0.372697895930829140,\t-0.372744293101687050,\t\n-0.372790689340683820,\t-0.372837084647703880,\t-0.372883479022631250,\t-0.372929872465350310,\t-0.372976264975744260,\t-0.373022656553697540,\t-0.373069047199094230,\t-0.373115436911818640,\t\n-0.373161825691754100,\t-0.373208213538785030,\t-0.373254600452795350,\t-0.373300986433669600,\t-0.373347371481290990,\t-0.373393755595543940,\t-0.373440138776312940,\t-0.373486521023481180,\t\n-0.373532902336933090,\t-0.373579282716552770,\t-0.373625662162224650,\t-0.373672040673831920,\t-0.373718418251259120,\t-0.373764794894390300,\t-0.373811170603109870,\t-0.373857545377301090,\t\n-0.373903919216848510,\t-0.373950292121636050,\t-0.373996664091548300,\t-0.374043035126468530,\t-0.374089405226281150,\t-0.374135774390870200,\t-0.374182142620120280,\t-0.374228509913914600,\t\n-0.374274876272137620,\t-0.374321241694673850,\t-0.374367606181406580,\t-0.374413969732220300,\t-0.374460332346999100,\t-0.374506694025627470,\t-0.374553054767988670,\t-0.374599414573967280,\t\n-0.374645773443447290,\t-0.374692131376313350,\t-0.374738488372448610,\t-0.374784844431737710,\t-0.374831199554064630,\t-0.374877553739314030,\t-0.374923906987369100,\t-0.374970259298114390,\t\n-0.375016610671434050,\t-0.375062961107212600,\t-0.375109310605333370,\t-0.375155659165680780,\t-0.375202006788139090,\t-0.375248353472592830,\t-0.375294699218925220,\t-0.375341044027020900,\t\n-0.375387387896764350,\t-0.375433730828038940,\t-0.375480072820729150,\t-0.375526413874719240,\t-0.375572753989893700,\t-0.375619093166135840,\t-0.375665431403330250,\t-0.375711768701361080,\t\n-0.375758105060112920,\t-0.375804440479469090,\t-0.375850774959314130,\t-0.375897108499532230,\t-0.375943441100007990,\t-0.375989772760624790,\t-0.376036103481267090,\t-0.376082433261819120,\t\n-0.376128762102165500,\t-0.376175090002189570,\t-0.376221416961775910,\t-0.376267742980809120,\t-0.376314068059172560,\t-0.376360392196750830,\t-0.376406715393428130,\t-0.376453037649089050,\t\n-0.376499358963616970,\t-0.376545679336896480,\t-0.376591998768811780,\t-0.376638317259247510,\t-0.376684634808087060,\t-0.376730951415214950,\t-0.376777267080515510,\t-0.376823581803873320,\t\n-0.376869895585171750,\t-0.376916208424295460,\t-0.376962520321128650,\t-0.377008831275555960,\t-0.377055141287460760,\t-0.377101450356727710,\t-0.377147758483241390,\t-0.377194065666885350,\t\n-0.377240371907544110,\t-0.377286677205101950,\t-0.377332981559443500,\t-0.377379284970452140,\t-0.377425587438012630,\t-0.377471888962009120,\t-0.377518189542326350,\t-0.377564489178847660,\t\n-0.377610787871457740,\t-0.377657085620040860,\t-0.377703382424481650,\t-0.377749678284663600,\t-0.377795973200471370,\t-0.377842267171789150,\t-0.377888560198501760,\t-0.377934852280492510,\t\n-0.377981143417646100,\t-0.378027433609846860,\t-0.378073722856979430,\t-0.378120011158927290,\t-0.378166298515575150,\t-0.378212584926807650,\t-0.378258870392508330,\t-0.378305154912561780,\t\n-0.378351438486852320,\t-0.378397721115264710,\t-0.378444002797682370,\t-0.378490283533990060,\t-0.378536563324072040,\t-0.378582842167812960,\t-0.378629120065096410,\t-0.378675397015807050,\t\n-0.378721673019829230,\t-0.378767948077047610,\t-0.378814222187345670,\t-0.378860495350608230,\t-0.378906767566719540,\t-0.378953038835564360,\t-0.378999309157026120,\t-0.379045578530989640,\t\n-0.379091846957339660,\t-0.379138114435959570,\t-0.379184380966734240,\t-0.379230646549547970,\t-0.379276911184285470,\t-0.379323174870830280,\t-0.379369437609067160,\t-0.379415699398880480,\t\n-0.379461960240154940,\t-0.379508220132774080,\t-0.379554479076622650,\t-0.379600737071585040,\t-0.379646994117546040,\t-0.379693250214389100,\t-0.379739505361999020,\t-0.379785759560260230,\t\n-0.379832012809057430,\t-0.379878265108274160,\t-0.379924516457795240,\t-0.379970766857505470,\t-0.380017016307288350,\t-0.380063264807028680,\t-0.380109512356610830,\t-0.380155758955919630,\t\n-0.380202004604838660,\t-0.380248249303252630,\t-0.380294493051046010,\t-0.380340735848103520,\t-0.380386977694308850,\t-0.380433218589546650,\t-0.380479458533701460,\t-0.380525697526658050,\t\n-0.380571935568299930,\t-0.380618172658512000,\t-0.380664408797178670,\t-0.380710643984184690,\t-0.380756878219413730,\t-0.380803111502750540,\t-0.380849343834079980,\t-0.380895575213285650,\t\n-0.380941805640252370,\t-0.380988035114864620,\t-0.381034263637007150,\t-0.381080491206563620,\t-0.381126717823418890,\t-0.381172943487457340,\t-0.381219168198563830,\t-0.381265391956622010,\t\n-0.381311614761516700,\t-0.381357836613132380,\t-0.381404057511353870,\t-0.381450277456064800,\t-0.381496496447150000,\t-0.381542714484494010,\t-0.381588931567981630,\t-0.381635147697496510,\t\n-0.381681362872923540,\t-0.381727577094147120,\t-0.381773790361052190,\t-0.381820002673522340,\t-0.381866214031442550,\t-0.381912424434697580,\t-0.381958633883171190,\t-0.382004842376748140,\t\n-0.382051049915313080,\t-0.382097256498750760,\t-0.382143462126944830,\t-0.382189666799780340,\t-0.382235870517141640,\t-0.382282073278913670,\t-0.382328275084980130,\t-0.382374475935225890,\t\n-0.382420675829535430,\t-0.382466874767793730,\t-0.382513072749884390,\t-0.382559269775692430,\t-0.382605465845102240,\t-0.382651660957998850,\t-0.382697855114265850,\t-0.382744048313788220,\t\n-0.382790240556450890,\t-0.382836431842137560,\t-0.382882622170733160,\t-0.382928811542122160,\t-0.382974999956189550,\t-0.383021187412819040,\t-0.383067373911895600,\t-0.383113559453303660,\t\n-0.383159744036928260,\t-0.383205927662653100,\t-0.383252110330363160,\t-0.383298292039942870,\t-0.383344472791277310,\t-0.383390652584250150,\t-0.383436831418746290,\t-0.383483009294650460,\t\n-0.383529186211847450,\t-0.383575362170221090,\t-0.383621537169656300,\t-0.383667711210038060,\t-0.383713884291250200,\t-0.383760056413177560,\t-0.383806227575704820,\t-0.383852397778716940,\t\n-0.383898567022097630,\t-0.383944735305731920,\t-0.383990902629504300,\t-0.384037068993299920,\t-0.384083234397002430,\t-0.384129398840496850,\t-0.384175562323667790,\t-0.384221724846400210,\t\n-0.384267886408577900,\t-0.384314047010085870,\t-0.384360206650808780,\t-0.384406365330631550,\t-0.384452523049437940,\t-0.384498679807113110,\t-0.384544835603541520,\t-0.384590990438608280,\t\n-0.384637144312197140,\t-0.384683297224193200,\t-0.384729449174481370,\t-0.384775600162945490,\t-0.384821750189470620,\t-0.384867899253941440,\t-0.384914047356242850,\t-0.384960194496258730,\t\n-0.385006340673874180,\t-0.385052485888973730,\t-0.385098630141442520,\t-0.385144773431164270,\t-0.385190915758024110,\t-0.385237057121906650,\t-0.385283197522697020,\t-0.385329336960278930,\t\n-0.385375475434537480,\t-0.385421612945357370,\t-0.385467749492623630,\t-0.385513885076220140,\t-0.385560019696031870,\t-0.385606153351944040,\t-0.385652286043840330,\t-0.385698417771605960,\t\n-0.385744548535125580,\t-0.385790678334284150,\t-0.385836807168965680,\t-0.385882935039055190,\t-0.385929061944437320,\t-0.385975187884997240,\t-0.386021312860618750,\t-0.386067436871187000,\t\n-0.386113559916586690,\t-0.386159681996702860,\t-0.386205803111419390,\t-0.386251923260621470,\t-0.386298042444193690,\t-0.386344160662021210,\t-0.386390277913987950,\t-0.386436394199978990,\t\n-0.386482509519879450,\t-0.386528623873573230,\t-0.386574737260945430,\t-0.386620849681880820,\t-0.386666961136264480,\t-0.386713071623980330,\t-0.386759181144913480,\t-0.386805289698948730,\t\n-0.386851397285971120,\t-0.386897503905864640,\t-0.386943609558514370,\t-0.386989714243805070,\t-0.387035817961621900,\t-0.387081920711848770,\t-0.387128022494370890,\t-0.387174123309072920,\t\n-0.387220223155840040,\t-0.387266322034556190,\t-0.387312419945106570,\t-0.387358516887376270,\t-0.387404612861249280,\t-0.387450707866610790,\t-0.387496801903345510,\t-0.387542894971338590,\t\n-0.387588987070474070,\t-0.387635078200637080,\t-0.387681168361712400,\t-0.387727257553585170,\t-0.387773345776139420,\t-0.387819433029260310,\t-0.387865519312832640,\t-0.387911604626741510,\t\n-0.387957688970871020,\t-0.388003772345106300,\t-0.388049854749332120,\t-0.388095936183433740,\t-0.388142016647295090,\t-0.388188096140801410,\t-0.388234174663837470,\t-0.388280252216288540,\t\n-0.388326328798038580,\t-0.388372404408972750,\t-0.388418479048976310,\t-0.388464552717933290,\t-0.388510625415728890,\t-0.388556697142247940,\t-0.388602767897375630,\t-0.388648837680996010,\t\n-0.388694906492994320,\t-0.388740974333255330,\t-0.388787041201664300,\t-0.388833107098105260,\t-0.388879172022463470,\t-0.388925235974623750,\t-0.388971298954471360,\t-0.389017360961890320,\t\n-0.389063421996765860,\t-0.389109482058982830,\t-0.389155541148426540,\t-0.389201599264980940,\t-0.389247656408531370,\t-0.389293712578963060,\t-0.389339767776160080,\t-0.389385822000007650,\t\n-0.389431875250390690,\t-0.389477927527194460,\t-0.389523978830302990,\t-0.389570029159601540,\t-0.389616078514975040,\t-0.389662126896308800,\t-0.389708174303486750,\t-0.389754220736394320,\t\n-0.389800266194916370,\t-0.389846310678938100,\t-0.389892354188343670,\t-0.389938396723018330,\t-0.389984438282847010,\t-0.390030478867715020,\t-0.390076518477506410,\t-0.390122557112106530,\t\n-0.390168594771400650,\t-0.390214631455272850,\t-0.390260667163608520,\t-0.390306701896292460,\t-0.390352735653210100,\t-0.390398768434245480,\t-0.390444800239283960,\t-0.390490831068210420,\t\n-0.390536860920910170,\t-0.390582889797267410,\t-0.390628917697167450,\t-0.390674944620495120,\t-0.390720970567135890,\t-0.390766995536973800,\t-0.390813019529894280,\t-0.390859042545782130,\t\n-0.390905064584522840,\t-0.390951085646000450,\t-0.390997105730100380,\t-0.391043124836707500,\t-0.391089142965707240,\t-0.391135160116983680,\t-0.391181176290422260,\t-0.391227191485908340,\t\n-0.391273205703325970,\t-0.391319218942560610,\t-0.391365231203497200,\t-0.391411242486021100,\t-0.391457252790016530,\t-0.391503262115368790,\t-0.391549270461962920,\t-0.391595277829684290,\t\n-0.391641284218417040,\t-0.391687289628046550,\t-0.391733294058457910,\t-0.391779297509536380,\t-0.391825299981166220,\t-0.391871301473232790,\t-0.391917301985621140,\t-0.391963301518216620,\t\n-0.392009300070903450,\t-0.392055297643567060,\t-0.392101294236092750,\t-0.392147289848364890,\t-0.392193284480268740,\t-0.392239278131689410,\t-0.392285270802512300,\t-0.392331262492621570,\t\n-0.392377253201902700,\t-0.392423242930240720,\t-0.392469231677521010,\t-0.392515219443627830,\t-0.392561206228446590,\t-0.392607192031862340,\t-0.392653176853760500,\t-0.392699160694025330,\t\n-0.392745143552542250,\t-0.392791125429196360,\t-0.392837106323873030,\t-0.392883086236456510,\t-0.392929065166832290,\t-0.392975043114885790,\t-0.393021020080501330,\t-0.393066996063564270,\t\n-0.393112971063959700,\t-0.393158945081573170,\t-0.393204918116288830,\t-0.393250890167992200,\t-0.393296861236568370,\t-0.393342831321902790,\t-0.393388800423879690,\t-0.393434768542384630,\t\n-0.393480735677302630,\t-0.393526701828519180,\t-0.393572666995918590,\t-0.393618631179386340,\t-0.393664594378807520,\t-0.393710556594067620,\t-0.393756517825050890,\t-0.393802478071642870,\t\n-0.393848437333729100,\t-0.393894395611193770,\t-0.393940352903922490,\t-0.393986309211800330,\t-0.394032264534712800,\t-0.394078218872544180,\t-0.394124172225180040,\t-0.394170124592505440,\t\n-0.394216075974406000,\t-0.394262026370765910,\t-0.394307975781470750,\t-0.394353924206405690,\t-0.394399871645456200,\t-0.394445818098506600,\t-0.394491763565442520,\t-0.394537708046148960,\t\n-0.394583651540511560,\t-0.394629594048414630,\t-0.394675535569743720,\t-0.394721476104384020,\t-0.394767415652220950,\t-0.394813354213138960,\t-0.394859291787023610,\t-0.394905228373760410,\t\n-0.394951163973233770,\t-0.394997098585329160,\t-0.395043032209931870,\t-0.395088964846927400,\t-0.395134896496200040,\t-0.395180827157635530,\t-0.395226756831118910,\t-0.395272685516535770,\t\n-0.395318613213770540,\t-0.395364539922708810,\t-0.395410465643235680,\t-0.395456390375236830,\t-0.395502314118596600,\t-0.395548236873200560,\t-0.395594158638933930,\t-0.395640079415682300,\t\n-0.395685999203330090,\t-0.395731918001762880,\t-0.395777835810866290,\t-0.395823752630524660,\t-0.395869668460623660,\t-0.395915583301048530,\t-0.395961497151684830,\t-0.396007410012416960,\t\n-0.396053321883130580,\t-0.396099232763710900,\t-0.396145142654043550,\t-0.396191051554012910,\t-0.396236959463504680,\t-0.396282866382404010,\t-0.396328772310596600,\t-0.396374677247966880,\t\n-0.396420581194400430,\t-0.396466484149782530,\t-0.396512386113998860,\t-0.396558287086933750,\t-0.396604187068473000,\t-0.396650086058502160,\t-0.396695984056905650,\t-0.396741881063569220,\t\n-0.396787777078378090,\t-0.396833672101217950,\t-0.396879566131973170,\t-0.396925459170529520,\t-0.396971351216772240,\t-0.397017242270586930,\t-0.397063132331858140,\t-0.397109021400471500,\t\n-0.397154909476312320,\t-0.397200796559266270,\t-0.397246682649217810,\t-0.397292567746052700,\t-0.397338451849656100,\t-0.397384334959913820,\t-0.397430217076710280,\t-0.397476098199931180,\t\n-0.397521978329461840,\t-0.397567857465188020,\t-0.397613735606994090,\t-0.397659612754765800,\t-0.397705488908388970,\t-0.397751364067747910,\t-0.397797238232728500,\t-0.397843111403215990,\t\n-0.397888983579096130,\t-0.397934854760253360,\t-0.397980724946573490,\t-0.398026594137941780,\t-0.398072462334244040,\t-0.398118329535364690,\t-0.398164195741189500,\t-0.398210060951603830,\t\n-0.398255925166493440,\t-0.398301788385742820,\t-0.398347650609237770,\t-0.398393511836863560,\t-0.398439372068505940,\t-0.398485231304049500,\t-0.398531089543380010,\t-0.398576946786383220,\t\n-0.398622803032943620,\t-0.398668658282947010,\t-0.398714512536278760,\t-0.398760365792824640,\t-0.398806218052469190,\t-0.398852069315098200,\t-0.398897919580597060,\t-0.398943768848851520,\t\n-0.398989617119746120,\t-0.399035464393166730,\t-0.399081310668998600,\t-0.399127155947127670,\t-0.399173000227438400,\t-0.399218843509816680,\t-0.399264685794147810,\t-0.399310527080317670,\t\n-0.399356367368210790,\t-0.399402206657712980,\t-0.399448044948710060,\t-0.399493882241086620,\t-0.399539718534728470,\t-0.399585553829520990,\t-0.399631388125350100,\t-0.399677221422100330,\t\n-0.399723053719657440,\t-0.399768885017906970,\t-0.399814715316734680,\t-0.399860544616025220,\t-0.399906372915664390,\t-0.399952200215537620,\t-0.399998026515530740,\t-0.400043851815528370,\t\n-0.400089676115416400,\t-0.400135499415080250,\t-0.400181321714405790,\t-0.400227143013277550,\t-0.400272963311581460,\t-0.400318782609203390,\t-0.400364600906027990,\t-0.400410418201941070,\t\n-0.400456234496828050,\t-0.400502049790574910,\t-0.400547864083066200,\t-0.400593677374187880,\t-0.400639489663825340,\t-0.400685300951864440,\t-0.400731111238189940,\t-0.400776920522687650,\t\n-0.400822728805243060,\t-0.400868536085742020,\t-0.400914342364069250,\t-0.400960147640110620,\t-0.401005951913751660,\t-0.401051755184878180,\t-0.401097557453374940,\t-0.401143358719127820,\t\n-0.401189158982022230,\t-0.401234958241944220,\t-0.401280756498778370,\t-0.401326553752410660,\t-0.401372350002726970,\t-0.401418145249611950,\t-0.401463939492951620,\t-0.401509732732631410,\t\n-0.401555524968537300,\t-0.401601316200553950,\t-0.401647106428567320,\t-0.401692895652462910,\t-0.401738683872126690,\t-0.401784471087443360,\t-0.401830257298298800,\t-0.401876042504578650,\t\n-0.401921826706168770,\t-0.401967609902953940,\t-0.402013392094820070,\t-0.402059173281652750,\t-0.402104953463337860,\t-0.402150732639760200,\t-0.402196510810805710,\t-0.402242287976360360,\t\n-0.402288064136308850,\t-0.402333839290537230,\t-0.402379613438930970,\t-0.402425386581376110,\t-0.402471158717757350,\t-0.402516929847960720,\t-0.402562699971871770,\t-0.402608469089376420,\t\n-0.402654237200359530,\t-0.402700004304707090,\t-0.402745770402304580,\t-0.402791535493038090,\t-0.402837299576792320,\t-0.402883062653453310,\t-0.402928824722906640,\t-0.402974585785038310,\t\n-0.403020345839733120,\t-0.403066104886877110,\t-0.403111862926356200,\t-0.403157619958055210,\t-0.403203375981860180,\t-0.403249130997656750,\t-0.403294885005330840,\t-0.403340638004767330,\t\n-0.403386389995852250,\t-0.403432140978471190,\t-0.403477890952510190,\t-0.403523639917854000,\t-0.403569387874388790,\t-0.403615134822000070,\t-0.403660880760573880,\t-0.403706625689995160,\t\n-0.403752369610149820,\t-0.403798112520923570,\t-0.403843854422202440,\t-0.403889595313871310,\t-0.403935335195816150,\t-0.403981074067922660,\t-0.404026811930076890,\t-0.404072548782163700,\t\n-0.404118284624069120,\t-0.404164019455679260,\t-0.404209753276878910,\t-0.404255486087554180,\t-0.404301217887590770,\t-0.404346948676874710,\t-0.404392678455290870,\t-0.404438407222725280,\t\n-0.404484134979063710,\t-0.404529861724192250,\t-0.404575587457995710,\t-0.404621312180360180,\t-0.404667035891171370,\t-0.404712758590315410,\t-0.404758480277677080,\t-0.404804200953142620,\t\n-0.404849920616597640,\t-0.404895639267928260,\t-0.404941356907019380,\t-0.404987073533757070,\t-0.405032789148027540,\t-0.405078503749715550,\t-0.405124217338707400,\t-0.405169929914888650,\t\n-0.405215641478145480,\t-0.405261352028362830,\t-0.405307061565426780,\t-0.405352770089223050,\t-0.405398477599637820,\t-0.405444184096556030,\t-0.405489889579863760,\t-0.405535594049446720,\t\n-0.405581297505191170,\t-0.405626999946981930,\t-0.405672701374705180,\t-0.405718401788246700,\t-0.405764101187492620,\t-0.405809799572327880,\t-0.405855496942638620,\t-0.405901193298311090,\t\n-0.405946888639230120,\t-0.405992582965281900,\t-0.406038276276352250,\t-0.406083968572327310,\t-0.406129659853092070,\t-0.406175350118532670,\t-0.406221039368534880,\t-0.406266727602984930,\t\n-0.406312414821767720,\t-0.406358101024769490,\t-0.406403786211876010,\t-0.406449470382973470,\t-0.406495153537946850,\t-0.406540835676682310,\t-0.406586516799065710,\t-0.406632196904983260,\t\n-0.406677875994319870,\t-0.406723554066961760,\t-0.406769231122795230,\t-0.406814907161705210,\t-0.406860582183577900,\t-0.406906256188299120,\t-0.406951929175755120,\t-0.406997601145830890,\t\n-0.407043272098412680,\t-0.407088942033386250,\t-0.407134610950637910,\t-0.407180278850052650,\t-0.407225945731516660,\t-0.407271611594915820,\t-0.407317276440136320,\t-0.407362940267063270,\t\n-0.407408603075582850,\t-0.407454264865580900,\t-0.407499925636943710,\t-0.407545585389556320,\t-0.407591244123304940,\t-0.407636901838075490,\t-0.407682558533754180,\t-0.407728214210226040,\t\n-0.407773868867377380,\t-0.407819522505094460,\t-0.407865175123262310,\t-0.407910826721767260,\t-0.407956477300495110,\t-0.408002126859332180,\t-0.408047775398163500,\t-0.408093422916875390,\t\n-0.408139069415353770,\t-0.408184714893484850,\t-0.408230359351153760,\t-0.408276002788246720,\t-0.408321645204649750,\t-0.408367286600249010,\t-0.408412926974929650,\t-0.408458566328578020,\t\n-0.408504204661079950,\t-0.408549841972321750,\t-0.408595478262188560,\t-0.408641113530566650,\t-0.408686747777342370,\t-0.408732381002400840,\t-0.408778013205628340,\t-0.408823644386910820,\t\n-0.408869274546134590,\t-0.408914903683184780,\t-0.408960531797947720,\t-0.409006158890309280,\t-0.409051784960155870,\t-0.409097410007372650,\t-0.409143034031845820,\t-0.409188657033461470,\t\n-0.409234279012105850,\t-0.409279899967664120,\t-0.409325519900022640,\t-0.409371138809067390,\t-0.409416756694684690,\t-0.409462373556759680,\t-0.409507989395178740,\t-0.409553604209828230,\t\n-0.409599218000593290,\t-0.409644830767360300,\t-0.409690442510015300,\t-0.409736053228444530,\t-0.409781662922533260,\t-0.409827271592167810,\t-0.409872879237234200,\t-0.409918485857618750,\t\n-0.409964091453206720,\t-0.410009696023884480,\t-0.410055299569538010,\t-0.410100902090053620,\t-0.410146503585316620,\t-0.410192104055213390,\t-0.410237703499629850,\t-0.410283301918452470,\t\n-0.410328899311566410,\t-0.410374495678858140,\t-0.410420091020213650,\t-0.410465685335519300,\t-0.410511278624660300,\t-0.410556870887523180,\t-0.410602462123994210,\t-0.410648052333958740,\t\n-0.410693641517303090,\t-0.410739229673913410,\t-0.410784816803676010,\t-0.410830402906476160,\t-0.410875987982200320,\t-0.410921572030734480,\t-0.410967155051965130,\t-0.411012737045777510,\t\n-0.411058318012058000,\t-0.411103897950692740,\t-0.411149476861568160,\t-0.411195054744569410,\t-0.411240631599583070,\t-0.411286207426495130,\t-0.411331782225192120,\t-0.411377355995559250,\t\n-0.411422928737482930,\t-0.411468500450849710,\t-0.411514071135544890,\t-0.411559640791454850,\t-0.411605209418465680,\t-0.411650777016463910,\t-0.411696343585334800,\t-0.411741909124964830,\t\n-0.411787473635240100,\t-0.411833037116047070,\t-0.411878599567271080,\t-0.411924160988798580,\t-0.411969721380515690,\t-0.412015280742308860,\t-0.412060839074063430,\t-0.412106396375665930,\t\n-0.412151952647002380,\t-0.412197507887959390,\t-0.412243062098422260,\t-0.412288615278277430,\t-0.412334167427411470,\t-0.412379718545709710,\t-0.412425268633058670,\t-0.412470817689344400,\t\n-0.412516365714453550,\t-0.412561912708271360,\t-0.412607458670684380,\t-0.412653003601578750,\t-0.412698547500841010,\t-0.412744090368356520,\t-0.412789632204011770,\t-0.412835173007693010,\t\n-0.412880712779286670,\t-0.412926251518678120,\t-0.412971789225753950,\t-0.413017325900400360,\t-0.413062861542503820,\t-0.413108396151949720,\t-0.413153929728624640,\t-0.413199462272415160,\t\n-0.413244993783206560,\t-0.413290524260885530,\t-0.413336053705338210,\t-0.413381582116451100,\t-0.413427109494109660,\t-0.413472635838200430,\t-0.413518161148609620,\t-0.413563685425223810,\t\n-0.413609208667928390,\t-0.413654730876609980,\t-0.413700252051154680,\t-0.413745772191449200,\t-0.413791291297378850,\t-0.413836809368830330,\t-0.413882326405689730,\t-0.413927842407843750,\t\n-0.413973357375177710,\t-0.414018871307578310,\t-0.414064384204931750,\t-0.414109896067124620,\t-0.414155406894042340,\t-0.414200916685571520,\t-0.414246425441598840,\t-0.414291933162009740,\t\n-0.414337439846690750,\t-0.414382945495528180,\t-0.414428450108408620,\t-0.414473953685217560,\t-0.414519456225841580,\t-0.414564957730166990,\t-0.414610458198080400,\t-0.414655957629467280,\t\n-0.414701456024214270,\t-0.414746953382207570,\t-0.414792449703333950,\t-0.414837944987478780,\t-0.414883439234528750,\t-0.414928932444370120,\t-0.414974424616889550,\t-0.415019915751972500,\t\n-0.415065405849505690,\t-0.415110894909375750,\t-0.415156382931468230,\t-0.415201869915669710,\t-0.415247355861866510,\t-0.415292840769945330,\t-0.415338324639791590,\t-0.415383807471292110,\t\n-0.415429289264333090,\t-0.415474770018801230,\t-0.415520249734582070,\t-0.415565728411562310,\t-0.415611206049628200,\t-0.415656682648666450,\t-0.415702158208562660,\t-0.415747632729203400,\t\n-0.415793106210475110,\t-0.415838578652264420,\t-0.415884050054456890,\t-0.415929520416939260,\t-0.415974989739598230,\t-0.416020458022319290,\t-0.416065925264989200,\t-0.416111391467494320,\t\n-0.416156856629721410,\t-0.416202320751555890,\t-0.416247783832884580,\t-0.416293245873593840,\t-0.416338706873570330,\t-0.416384166832699740,\t-0.416429625750868670,\t-0.416475083627963540,\t\n-0.416520540463871100,\t-0.416565996258476900,\t-0.416611451011667740,\t-0.416656904723329950,\t-0.416702357393350320,\t-0.416747809021614350,\t-0.416793259608008840,\t-0.416838709152420220,\t\n-0.416884157654735240,\t-0.416929605114839450,\t-0.416975051532619660,\t-0.417020496907962610,\t-0.417065941240753910,\t-0.417111384530880420,\t-0.417156826778228410,\t-0.417202267982684780,\t\n-0.417247708144135030,\t-0.417293147262466020,\t-0.417338585337564180,\t-0.417384022369316270,\t-0.417429458357607860,\t-0.417474893302325840,\t-0.417520327203356580,\t-0.417565760060586880,\t\n-0.417611191873902440,\t-0.417656622643189980,\t-0.417702052368335960,\t-0.417747481049227210,\t-0.417792908685749360,\t-0.417838335277789240,\t-0.417883760825233710,\t-0.417929185327968300,\t\n-0.417974608785880000,\t-0.418020031198855170,\t-0.418065452566780630,\t-0.418110872889542070,\t-0.418156292167026320,\t-0.418201710399119910,\t-0.418247127585709530,\t-0.418292543726680950,\t\n-0.418337958821921040,\t-0.418383372871316220,\t-0.418428785874753410,\t-0.418474197832118200,\t-0.418519608743297470,\t-0.418565018608177740,\t-0.418610427426645890,\t-0.418655835198587510,\t\n-0.418701241923889580,\t-0.418746647602438960,\t-0.418792052234121300,\t-0.418837455818823530,\t-0.418882858356432130,\t-0.418928259846833960,\t-0.418973660289914730,\t-0.419019059685561360,\t\n-0.419064458033660330,\t-0.419109855334098560,\t-0.419155251586761760,\t-0.419200646791536850,\t-0.419246040948310310,\t-0.419291434056969060,\t-0.419336826117398810,\t-0.419382217129486530,\t\n-0.419427607093118660,\t-0.419472996008182220,\t-0.419518383874562860,\t-0.419563770692147560,\t-0.419609156460822810,\t-0.419654541180475570,\t-0.419699924850991610,\t-0.419745307472257800,\t\n-0.419790689044161170,\t-0.419836069566587370,\t-0.419881449039423430,\t-0.419926827462555830,\t-0.419972204835871610,\t-0.420017581159256470,\t-0.420062956432597330,\t-0.420108330655780850,\t\n-0.420153703828693940,\t-0.420199075951222300,\t-0.420244447023253030,\t-0.420289817044672660,\t-0.420335186015368120,\t-0.420380553935225220,\t-0.420425920804130940,\t-0.420471286621971860,\t\n-0.420516651388634920,\t-0.420562015104005980,\t-0.420607377767972020,\t-0.420652739380420030,\t-0.420698099941235750,\t-0.420743459450306220,\t-0.420788817907518100,\t-0.420834175312758300,\t\n-0.420879531665912630,\t-0.420924886966868190,\t-0.420970241215511460,\t-0.421015594411729590,\t-0.421060946555408320,\t-0.421106297646434700,\t-0.421151647684695260,\t-0.421196996670077210,\t\n-0.421242344602466180,\t-0.421287691481749330,\t-0.421333037307813240,\t-0.421378382080544960,\t-0.421423725799830340,\t-0.421469068465556370,\t-0.421514410077610150,\t-0.421559750635877530,\t\n-0.421605090140245500,\t-0.421650428590600760,\t-0.421695765986830340,\t-0.421741102328820060,\t-0.421786437616457070,\t-0.421831771849628000,\t-0.421877105028219900,\t-0.421922437152118630,\t\n-0.421967768221211240,\t-0.422013098235384470,\t-0.422058427194525350,\t-0.422103755098519720,\t-0.422149081947254760,\t-0.422194407740617060,\t-0.422239732478493720,\t-0.422285056160770720,\t\n-0.422330378787335040,\t-0.422375700358073760,\t-0.422421020872872920,\t-0.422466340331619450,\t-0.422511658734200160,\t-0.422556976080502130,\t-0.422602292370411300,\t-0.422647607603814700,\t\n-0.422692921780599080,\t-0.422738234900651540,\t-0.422783546963858000,\t-0.422828857970105660,\t-0.422874167919281120,\t-0.422919476811271570,\t-0.422964784645962930,\t-0.423010091423242360,\t\n-0.423055397142996560,\t-0.423100701805112610,\t-0.423146005409476560,\t-0.423191307955975480,\t-0.423236609444496090,\t-0.423281909874925640,\t-0.423327209247150000,\t-0.423372507561056320,\t\n-0.423417804816531800,\t-0.423463101013462300,\t-0.423508396151735080,\t-0.423553690231236900,\t-0.423598983251854910,\t-0.423644275213475030,\t-0.423689566115984460,\t-0.423734855959269960,\t\n-0.423780144743218730,\t-0.423825432467716760,\t-0.423870719132651170,\t-0.423916004737908800,\t-0.423961289283376840,\t-0.424006572768941270,\t-0.424051855194489240,\t-0.424097136559907550,\t\n-0.424142416865083470,\t-0.424187696109902870,\t-0.424232974294253110,\t-0.424278251418021280,\t-0.424323527481093420,\t-0.424368802483356730,\t-0.424414076424698080,\t-0.424459349305004620,\t\n-0.424504621124162370,\t-0.424549891882058550,\t-0.424595161578580020,\t-0.424640430213614030,\t-0.424685697787046510,\t-0.424730964298764780,\t-0.424776229748655590,\t-0.424821494136606250,\t\n-0.424866757462502800,\t-0.424912019726232440,\t-0.424957280927682040,\t-0.425002541066738790,\t-0.425047800143288860,\t-0.425093058157219370,\t-0.425138315108417650,\t-0.425183570996769790,\t\n-0.425228825822162930,\t-0.425274079584484040,\t-0.425319332283620400,\t-0.425364583919457970,\t-0.425409834491884080,\t-0.425455084000785630,\t-0.425500332446049840,\t-0.425545579827562860,\t\n-0.425590826145211880,\t-0.425636071398883880,\t-0.425681315588466060,\t-0.425726558713844570,\t-0.425771800774906670,\t-0.425817041771539280,\t-0.425862281703629720,\t-0.425907520571064010,\t\n-0.425952758373729530,\t-0.425997995111513150,\t-0.426043230784302170,\t-0.426088465391982700,\t-0.426133698934442080,\t-0.426178931411567650,\t-0.426224162823245430,\t-0.426269393169362850,\t\n-0.426314622449806780,\t-0.426359850664464520,\t-0.426405077813222230,\t-0.426450303895967280,\t-0.426495528912586570,\t-0.426540752862967440,\t-0.426585975746996030,\t-0.426631197564559640,\t\n-0.426676418315545310,\t-0.426721637999840310,\t-0.426766856617330830,\t-0.426812074167904180,\t-0.426857290651447340,\t-0.426902506067847690,\t-0.426947720416991360,\t-0.426992933698765790,\t\n-0.427038145913058220,\t-0.427083357059754920,\t-0.427128567138743200,\t-0.427173776149910090,\t-0.427218984093142910,\t-0.427264190968327910,\t-0.427309396775352400,\t-0.427354601514103370,\t\n-0.427399805184468300,\t-0.427445007786333320,\t-0.427490209319585760,\t-0.427535409784112700,\t-0.427580609179801560,\t-0.427625807506538450,\t-0.427671004764210830,\t-0.427716200952705680,\t\n-0.427761396071910490,\t-0.427806590121711350,\t-0.427851783101995730,\t-0.427896975012651120,\t-0.427942165853563590,\t-0.427987355624620700,\t-0.428032544325709420,\t-0.428077731956717170,\t\n-0.428122918517530150,\t-0.428168104008035900,\t-0.428213288428121340,\t-0.428258471777674010,\t-0.428303654056580050,\t-0.428348835264727000,\t-0.428394015402001840,\t-0.428439194468292040,\t\n-0.428484372463483810,\t-0.428529549387464740,\t-0.428574725240121750,\t-0.428619900021342310,\t-0.428665073731012760,\t-0.428710246369020550,\t-0.428755417935253070,\t-0.428800588429596670,\t\n-0.428845757851938790,\t-0.428890926202166570,\t-0.428936093480167370,\t-0.428981259685827570,\t-0.429026424819034580,\t-0.429071588879675560,\t-0.429116751867637980,\t-0.429161913782808100,\t\n-0.429207074625073460,\t-0.429252234394321090,\t-0.429297393090438570,\t-0.429342550713312180,\t-0.429387707262829380,\t-0.429432862738877320,\t-0.429478017141343480,\t-0.429523170470114240,\t\n-0.429568322725077060,\t-0.429613473906119090,\t-0.429658624013127820,\t-0.429703773045989560,\t-0.429748921004591890,\t-0.429794067888822350,\t-0.429839213698567200,\t-0.429884358433714030,\t\n-0.429929502094149930,\t-0.429974644679762540,\t-0.430019786190438070,\t-0.430064926626064210,\t-0.430110065986527960,\t-0.430155204271717000,\t-0.430200341481517590,\t-0.430245477615817380,\t\n-0.430290612674503410,\t-0.430335746657463380,\t-0.430380879564583540,\t-0.430426011395751480,\t-0.430471142150854410,\t-0.430516271829779920,\t-0.430561400432414310,\t-0.430606527958645240,\t\n-0.430651654408360170,\t-0.430696779781445660,\t-0.430741904077789120,\t-0.430787027297277860,\t-0.430832149439799420,\t-0.430877270505240220,\t-0.430922390493487850,\t-0.430967509404429520,\t\n-0.431012627237952750,\t-0.431057743993944090,\t-0.431102859672291010,\t-0.431147974272880820,\t-0.431193087795601060,\t-0.431238200240338210,\t-0.431283311606979860,\t-0.431328421895413210,\t\n-0.431373531105525900,\t-0.431418639237204420,\t-0.431463746290336290,\t-0.431508852264809170,\t-0.431553957160509590,\t-0.431599060977325030,\t-0.431644163715142910,\t-0.431689265373850720,\t\n-0.431734365953334980,\t-0.431779465453483340,\t-0.431824563874183050,\t-0.431869661215321720,\t-0.431914757476785820,\t-0.431959852658463090,\t-0.432004946760240700,\t-0.432050039782006290,\t\n-0.432095131723646440,\t-0.432140222585048750,\t-0.432185312366100530,\t-0.432230401066689360,\t-0.432275488686701850,\t-0.432320575226025570,\t-0.432365660684547900,\t-0.432410745062156430,\t\n-0.432455828358737750,\t-0.432500910574179440,\t-0.432545991708369330,\t-0.432591071761193770,\t-0.432636150732540580,\t-0.432681228622296970,\t-0.432726305430350730,\t-0.432771381156588310,\t\n-0.432816455800897450,\t-0.432861529363165410,\t-0.432906601843280000,\t-0.432951673241127650,\t-0.432996743556596120,\t-0.433041812789572710,\t-0.433086880939945180,\t-0.433131948007600080,\t\n-0.433177013992425090,\t-0.433222078894307580,\t-0.433267142713135270,\t-0.433312205448794670,\t-0.433357267101173620,\t-0.433402327670159740,\t-0.433447387155639690,\t-0.433492445557501100,\t\n-0.433537502875631480,\t-0.433582559109918440,\t-0.433627614260248650,\t-0.433672668326509800,\t-0.433717721308589270,\t-0.433762773206374850,\t-0.433807824019753100,\t-0.433852873748611810,\t\n-0.433897922392838310,\t-0.433942969952320400,\t-0.433988016426944680,\t-0.434033061816598900,\t-0.434078106121170480,\t-0.434123149340547190,\t-0.434168191474615610,\t-0.434213232523263600,\t\n-0.434258272486378880,\t-0.434303311363848090,\t-0.434348349155558980,\t-0.434393385861399030,\t-0.434438421481256000,\t-0.434483456015016530,\t-0.434528489462568450,\t-0.434573521823799100,\t\n-0.434618553098596370,\t-0.434663583286846840,\t-0.434708612388438390,\t-0.434753640403258370,\t-0.434798667331194650,\t-0.434843693172133890,\t-0.434888717925963840,\t-0.434933741592572090,\t\n-0.434978764171846280,\t-0.435023785663673220,\t-0.435068806067940680,\t-0.435113825384536580,\t-0.435158843613347450,\t-0.435203860754261210,\t-0.435248876807165340,\t-0.435293891771947660,\t\n-0.435338905648494870,\t-0.435383918436694830,\t-0.435428930136434970,\t-0.435473940747603210,\t-0.435518950270086190,\t-0.435563958703771790,\t-0.435608966048547490,\t-0.435653972304301140,\t\n-0.435698977470919510,\t-0.435743981548290420,\t-0.435788984536301380,\t-0.435833986434840280,\t-0.435878987243793810,\t-0.435923986963049850,\t-0.435968985592495970,\t-0.436013983132020000,\t\n-0.436058979581508630,\t-0.436103974940849900,\t-0.436148969209931570,\t-0.436193962388640440,\t-0.436238954476864390,\t-0.436283945474490950,\t-0.436328935381408100,\t-0.436373924197502430,\t\n-0.436418911922662020,\t-0.436463898556774310,\t-0.436508884099727210,\t-0.436553868551407540,\t-0.436598851911703220,\t-0.436643834180501730,\t-0.436688815357691050,\t-0.436733795443157990,\t\n-0.436778774436790360,\t-0.436823752338475870,\t-0.436868729148102370,\t-0.436913704865556640,\t-0.436958679490726640,\t-0.437003653023500360,\t-0.437048625463764550,\t-0.437093596811407140,\t\n-0.437138567066315760,\t-0.437183536228378360,\t-0.437228504297481720,\t-0.437273471273513850,\t-0.437318437156362260,\t-0.437363401945915000,\t-0.437408365642058870,\t-0.437453328244681750,\t\n-0.437498289753671390,\t-0.437543250168915650,\t-0.437588209490301420,\t-0.437633167717716600,\t-0.437678124851048900,\t-0.437723080890186300,\t-0.437768035835015610,\t-0.437812989685424810,\t\n-0.437857942441301940,\t-0.437902894102533800,\t-0.437947844669008430,\t-0.437992794140613480,\t-0.438037742517236930,\t-0.438082689798765580,\t-0.438127635985087580,\t-0.438172581076090420,\t\n-0.438217525071662230,\t-0.438262467971689830,\t-0.438307409776061310,\t-0.438352350484664200,\t-0.438397290097386650,\t-0.438442228614115470,\t-0.438487166034738700,\t-0.438532102359144030,\t\n-0.438577037587219500,\t-0.438621971718851980,\t-0.438666904753929500,\t-0.438711836692339760,\t-0.438756767533970860,\t-0.438801697278709660,\t-0.438846625926444190,\t-0.438891553477062550,\t\n-0.438936479930451650,\t-0.438981405286499540,\t-0.439026329545093910,\t-0.439071252706122850,\t-0.439116174769473230,\t-0.439161095735033260,\t-0.439206015602690460,\t-0.439250934372333090,\t\n-0.439295852043847970,\t-0.439340768617123180,\t-0.439385684092046480,\t-0.439430598468506020,\t-0.439475511746388600,\t-0.439520423925582440,\t-0.439565335005975220,\t-0.439610244987455050,\t\n-0.439655153869908830,\t-0.439700061653224780,\t-0.439744968337290990,\t-0.439789873921994310,\t-0.439834778407223010,\t-0.439879681792864740,\t-0.439924584078807690,\t-0.439969485264938730,\t\n-0.440014385351146060,\t-0.440059284337317500,\t-0.440104182223341080,\t-0.440149079009103770,\t-0.440193974694493840,\t-0.440238869279398930,\t-0.440283762763707230,\t-0.440328655147305740,\t\n-0.440373546430082590,\t-0.440418436611925590,\t-0.440463325692722950,\t-0.440508213672361540,\t-0.440553100550729600,\t-0.440597986327715300,\t-0.440642871003205650,\t-0.440687754577088860,\t\n-0.440732637049252640,\t-0.440777518419585230,\t-0.440822398687973630,\t-0.440867277854306020,\t-0.440912155918470220,\t-0.440957032880354480,\t-0.441001908739845680,\t-0.441046783496832180,\t\n-0.441091657151201690,\t-0.441136529702842450,\t-0.441181401151641450,\t-0.441226271497487000,\t-0.441271140740266850,\t-0.441316008879869270,\t-0.441360875916181280,\t-0.441405741849091090,\t\n-0.441450606678486900,\t-0.441495470404255850,\t-0.441540333026286090,\t-0.441585194544465490,\t-0.441630054958682350,\t-0.441674914268823600,\t-0.441719772474777620,\t-0.441764629576432200,\t\n-0.441809485573675610,\t-0.441854340466394880,\t-0.441899194254478320,\t-0.441944046937813810,\t-0.441988898516289530,\t-0.442033748989792640,\t-0.442078598358211340,\t-0.442123446621433550,\t\n-0.442168293779347580,\t-0.442213139831840460,\t-0.442257984778800460,\t-0.442302828620115550,\t-0.442347671355673930,\t-0.442392512985362750,\t-0.442437353509070260,\t-0.442482192926684780,\t\n-0.442527031238093450,\t-0.442571868443184580,\t-0.442616704541845980,\t-0.442661539533966030,\t-0.442706373419431810,\t-0.442751206198131690,\t-0.442796037869953580,\t-0.442840868434785710,\t\n-0.442885697892515310,\t-0.442930526243030640,\t-0.442975353486219690,\t-0.443020179621970770,\t-0.443065004650170960,\t-0.443109828570708630,\t-0.443154651383471760,\t-0.443199473088348620,\t\n-0.443244293685226440,\t-0.443289113173993500,\t-0.443333931554538210,\t-0.443378748826747660,\t-0.443423564990510280,\t-0.443468380045713930,\t-0.443513193992247030,\t-0.443558006829996800,\t\n-0.443602818558851530,\t-0.443647629178699210,\t-0.443692438689428200,\t-0.443737247090925710,\t-0.443782054383080100,\t-0.443826860565779360,\t-0.443871665638911890,\t-0.443916469602364800,\t\n-0.443961272456026570,\t-0.444006074199785160,\t-0.444050874833528950,\t-0.444095674357145200,\t-0.444140472770522210,\t-0.444185270073548470,\t-0.444230066266111110,\t-0.444274861348098630,\t\n-0.444319655319398990,\t-0.444364448179900620,\t-0.444409239929490720,\t-0.444454030568057710,\t-0.444498820095489630,\t-0.444543608511674900,\t-0.444588395816500730,\t-0.444633182009855580,\t\n-0.444677967091627490,\t-0.444722751061704890,\t-0.444767533919974980,\t-0.444812315666326290,\t-0.444857096300646740,\t-0.444901875822824920,\t-0.444946654232747980,\t-0.444991431530304400,\t\n-0.445036207715382210,\t-0.445080982787869950,\t-0.445125756747654810,\t-0.445170529594625270,\t-0.445215301328669820,\t-0.445260071949675760,\t-0.445304841457531460,\t-0.445349609852125070,\t\n-0.445394377133345070,\t-0.445439143301078700,\t-0.445483908355214510,\t-0.445528672295640530,\t-0.445573435122245230,\t-0.445618196834915990,\t-0.445662957433541280,\t-0.445707716918009140,\t\n-0.445752475288208110,\t-0.445797232544025480,\t-0.445841988685349800,\t-0.445886743712069160,\t-0.445931497624072030,\t-0.445976250421245720,\t-0.446021002103478840,\t-0.446065752670659840,\t\n-0.446110502122676060,\t-0.446155250459416010,\t-0.446199997680767850,\t-0.446244743786620100,\t-0.446289488776860090,\t-0.446334232651376340,\t-0.446378975410057060,\t-0.446423717052790660,\t\n-0.446468457579464630,\t-0.446513196989967440,\t-0.446557935284187250,\t-0.446602672462012630,\t-0.446647408523330900,\t-0.446692143468030710,\t-0.446736877296000090,\t-0.446781610007127740,\t\n-0.446826341601300910,\t-0.446871072078408260,\t-0.446915801438338310,\t-0.446960529680978490,\t-0.447005256806217330,\t-0.447049982813943040,\t-0.447094707704044190,\t-0.447139431476408170,\t\n-0.447184154130923550,\t-0.447228875667478540,\t-0.447273596085961730,\t-0.447318315386260600,\t-0.447363033568263620,\t-0.447407750631859060,\t-0.447452466576935550,\t-0.447497181403380460,\t\n-0.447541895111082440,\t-0.447586607699929640,\t-0.447631319169810750,\t-0.447676029520613140,\t-0.447720738752225510,\t-0.447765446864536340,\t-0.447810153857433220,\t-0.447854859730804740,\t\n-0.447899564484539050,\t-0.447944268118524890,\t-0.447988970632649640,\t-0.448033672026801940,\t-0.448078372300870110,\t-0.448123071454742730,\t-0.448167769488307280,\t-0.448212466401452400,\t\n-0.448257162194066310,\t-0.448301856866037800,\t-0.448346550417254190,\t-0.448391242847604180,\t-0.448435934156976130,\t-0.448480624345258590,\t-0.448525313412339140,\t-0.448570001358106370,\t\n-0.448614688182448600,\t-0.448659373885254510,\t-0.448704058466411590,\t-0.448748741925808550,\t-0.448793424263334020,\t-0.448838105478875540,\t-0.448882785572321810,\t-0.448927464543561080,\t\n-0.448972142392482120,\t-0.449016819118972400,\t-0.449061494722920620,\t-0.449106169204215140,\t-0.449150842562744570,\t-0.449195514798396590,\t-0.449240185911059740,\t-0.449284855900622450,\t\n-0.449329524766973410,\t-0.449374192510000160,\t-0.449418859129591450,\t-0.449463524625635600,\t-0.449508188998021310,\t-0.449552852246636160,\t-0.449597514371368910,\t-0.449642175372108210,\t\n-0.449686835248741700,\t-0.449731494001158140,\t-0.449776151629245780,\t-0.449820808132893490,\t-0.449865463511988750,\t-0.449910117766420370,\t-0.449954770896076720,\t-0.449999422900846490,\t\n-0.450044073780617340,\t-0.450088723535277960,\t-0.450133372164716830,\t-0.450178019668822650,\t-0.450222666047483010,\t-0.450267311300586730,\t-0.450311955428022100,\t-0.450356598429678070,\t\n-0.450401240305442100,\t-0.450445881055203000,\t-0.450490520678849650,\t-0.450535159176269630,\t-0.450579796547351640,\t-0.450624432791984160,\t-0.450669067910056060,\t-0.450713701901454820,\t\n-0.450758334766069360,\t-0.450802966503788090,\t-0.450847597114499730,\t-0.450892226598092080,\t-0.450936854954453790,\t-0.450981482183473390,\t-0.451026108285039640,\t-0.451070733259040290,\t\n-0.451115357105364050,\t-0.451159979823899440,\t-0.451204601414535280,\t-0.451249221877159210,\t-0.451293841211660110,\t-0.451338459417926390,\t-0.451383076495846910,\t-0.451427692445309340,\t\n-0.451472307266202580,\t-0.451516920958415390,\t-0.451561533521835530,\t-0.451606144956351820,\t-0.451650755261852780,\t-0.451695364438227220,\t-0.451739972485362910,\t-0.451784579403148590,\t\n-0.451829185191472860,\t-0.451873789850224580,\t-0.451918393379291410,\t-0.451962995778562250,\t-0.452007597047925590,\t-0.452052197187270350,\t-0.452096796196484240,\t-0.452141394075456120,\t\n-0.452185990824074510,\t-0.452230586442228300,\t-0.452275180929805290,\t-0.452319774286694290,\t-0.452364366512784220,\t-0.452408957607962900,\t-0.452453547572119140,\t-0.452498136405141530,\t\n-0.452542724106918980,\t-0.452587310677339210,\t-0.452631896116291180,\t-0.452676480423663370,\t-0.452721063599344830,\t-0.452765645643223190,\t-0.452810226555187430,\t-0.452854806335126090,\t\n-0.452899384982928140,\t-0.452943962498481350,\t-0.452988538881674670,\t-0.453033114132396610,\t-0.453077688250536180,\t-0.453122261235981090,\t-0.453166833088620380,\t-0.453211403808343020,\t\n-0.453255973395036700,\t-0.453300541848590480,\t-0.453345109168892870,\t-0.453389675355832910,\t-0.453434240409298360,\t-0.453478804329178200,\t-0.453523367115361060,\t-0.453567928767735880,\t\n-0.453612489286190470,\t-0.453657048670613850,\t-0.453701606920894620,\t-0.453746164036921750,\t-0.453790720018583060,\t-0.453835274865767580,\t-0.453879828578363950,\t-0.453924381156261100,\t\n-0.453968932599346900,\t-0.454013482907510420,\t-0.454058032080640610,\t-0.454102580118625310,\t-0.454147127021353510,\t-0.454191672788713970,\t-0.454236217420595610,\t-0.454280760916886350,\t\n-0.454325303277475110,\t-0.454369844502250650,\t-0.454414384591102010,\t-0.454458923543916980,\t-0.454503461360584670,\t-0.454547998040993660,\t-0.454592533585033100,\t-0.454637067992590740,\t\n-0.454681601263555780,\t-0.454726133397816810,\t-0.454770664395262870,\t-0.454815194255781870,\t-0.454859722979262910,\t-0.454904250565594640,\t-0.454948777014666130,\t-0.454993302326365310,\t\n-0.455037826500581220,\t-0.455082349537202950,\t-0.455126871436118410,\t-0.455171392197216700,\t-0.455215911820386450,\t-0.455260430305516880,\t-0.455304947652495850,\t-0.455349463861212440,\t\n-0.455393978931555370,\t-0.455438492863413700,\t-0.455483005656675430,\t-0.455527517311229700,\t-0.455572027826965150,\t-0.455616537203770880,\t-0.455661045441534910,\t-0.455705552540146330,\t\n-0.455750058499493850,\t-0.455794563319466610,\t-0.455839066999952580,\t-0.455883569540840920,\t-0.455928070942020700,\t-0.455972571203379860,\t-0.456017070324807650,\t-0.456061568306192770,\t\n-0.456106065147424360,\t-0.456150560848390340,\t-0.456195055408979980,\t-0.456239548829081960,\t-0.456284041108585450,\t-0.456328532247378460,\t-0.456373022245350150,\t-0.456417511102389260,\t\n-0.456461998818385010,\t-0.456506485393225360,\t-0.456550970826799460,\t-0.456595455118996190,\t-0.456639938269704610,\t-0.456684420278812840,\t-0.456728901146210010,\t-0.456773380871785370,\t\n-0.456817859455426800,\t-0.456862336897023660,\t-0.456906813196464590,\t-0.456951288353638960,\t-0.456995762368434700,\t-0.457040235240741000,\t-0.457084706970446730,\t-0.457129177557441090,\t\n-0.457173647001612120,\t-0.457218115302849000,\t-0.457262582461040620,\t-0.457307048476076170,\t-0.457351513347843690,\t-0.457395977076232470,\t-0.457440439661131240,\t-0.457484901102429340,\t\n-0.457529361400014820,\t-0.457573820553776880,\t-0.457618278563604370,\t-0.457662735429386620,\t-0.457707191151011550,\t-0.457751645728368570,\t-0.457796099161346840,\t-0.457840551449834490,\t\n-0.457885002593720720,\t-0.457929452592894470,\t-0.457973901447244980,\t-0.458018349156660340,\t-0.458062795721029810,\t-0.458107241140242320,\t-0.458151685414187100,\t-0.458196128542752320,\t\n-0.458240570525827170,\t-0.458285011363300580,\t-0.458329451055061900,\t-0.458373889600999170,\t-0.458418327001001770,\t-0.458462763254958490,\t-0.458507198362758720,\t-0.458551632324290530,\t\n-0.458596065139443290,\t-0.458640496808106310,\t-0.458684927330167640,\t-0.458729356705516680,\t-0.458773784934042310,\t-0.458818212015633890,\t-0.458862637950179560,\t-0.458907062737568590,\t\n-0.458951486377690010,\t-0.458995908870433070,\t-0.459040330215686020,\t-0.459084750413338070,\t-0.459129169463278310,\t-0.459173587365395990,\t-0.459218004119579300,\t-0.459262419725717570,\t\n-0.459306834183699890,\t-0.459351247493415440,\t-0.459395659654752490,\t-0.459440070667600400,\t-0.459484480531848540,\t-0.459528889247385050,\t-0.459573296814099360,\t-0.459617703231880390,\t\n-0.459662108500617620,\t-0.459706512620199130,\t-0.459750915590514400,\t-0.459795317411452350,\t-0.459839718082902470,\t-0.459884117604752840,\t-0.459928515976892880,\t-0.459972913199211690,\t\n-0.460017309271598620,\t-0.460061704193941820,\t-0.460106097966130830,\t-0.460150490588054570,\t-0.460194882059602460,\t-0.460239272380662760,\t-0.460283661551124880,\t-0.460328049570878250,\t\n-0.460372436439811070,\t-0.460416822157812820,\t-0.460461206724772530,\t-0.460505590140579620,\t-0.460549972405122300,\t-0.460594353518290090,\t-0.460638733479971970,\t-0.460683112290057430,\t\n-0.460727489948434710,\t-0.460771866454993300,\t-0.460816241809622160,\t-0.460860616012210840,\t-0.460904989062647600,\t-0.460949360960821840,\t-0.460993731706622720,\t-0.461038101299939660,\t\n-0.461082469740660970,\t-0.461126837028676070,\t-0.461171203163874110,\t-0.461215568146144510,\t-0.461259931975375570,\t-0.461304294651456840,\t-0.461348656174277780,\t-0.461393016543726660,\t\n-0.461437375759693010,\t-0.461481733822065920,\t-0.461526090730734860,\t-0.461570446485588200,\t-0.461614801086515480,\t-0.461659154533405670,\t-0.461703506826148410,\t-0.461747857964632020,\t\n-0.461792207948745930,\t-0.461836556778379310,\t-0.461880904453421730,\t-0.461925250973761530,\t-0.461969596339288140,\t-0.462013940549890760,\t-0.462058283605458970,\t-0.462102625505881050,\t\n-0.462146966251046560,\t-0.462191305840845060,\t-0.462235644275164890,\t-0.462279981553895600,\t-0.462324317676926390,\t-0.462368652644146780,\t-0.462412986455445100,\t-0.462457319110710970,\t\n-0.462501650609833560,\t-0.462545980952702440,\t-0.462590310139205930,\t-0.462634638169233670,\t-0.462678965042674810,\t-0.462723290759418930,\t-0.462767615319354400,\t-0.462811938722370860,\t\n-0.462856260968357470,\t-0.462900582057203800,\t-0.462944901988798340,\t-0.462989220763030560,\t-0.463033538379790170,\t-0.463077854838965520,\t-0.463122170140446210,\t-0.463166484284121550,\t\n-0.463210797269881010,\t-0.463255109097613080,\t-0.463299419767207400,\t-0.463343729278553160,\t-0.463388037631540020,\t-0.463432344826056330,\t-0.463476650861991860,\t-0.463520955739235680,\t\n-0.463565259457677570,\t-0.463609562017205880,\t-0.463653863417710310,\t-0.463698163659080060,\t-0.463742462741204790,\t-0.463786760663973010,\t-0.463831057427274320,\t-0.463875353030997920,\t\n-0.463919647475033610,\t-0.463963940759269720,\t-0.464008232883596050,\t-0.464052523847902130,\t-0.464096813652076560,\t-0.464141102296008910,\t-0.464185389779588560,\t-0.464229676102705100,\t\n-0.464273961265247060,\t-0.464318245267104080,\t-0.464362528108165530,\t-0.464406809788321050,\t-0.464451090307459120,\t-0.464495369665469500,\t-0.464539647862241440,\t-0.464583924897664650,\t\n-0.464628200771627640,\t-0.464672475484020130,\t-0.464716749034731480,\t-0.464761021423651330,\t-0.464805292650668220,\t-0.464849562715671900,\t-0.464893831618552020,\t-0.464938099359197220,\t\n-0.464982365937497140,\t-0.465026631353341160,\t-0.465070895606618960,\t-0.465115158697219200,\t-0.465159420625031460,\t-0.465203681389945220,\t-0.465247940991850180,\t-0.465292199430634880,\t\n-0.465336456706189060,\t-0.465380712818402100,\t-0.465424967767163800,\t-0.465469221552362640,\t-0.465513474173888440,\t-0.465557725631630560,\t-0.465601975925478750,\t-0.465646225055321610,\t\n-0.465690473021048930,\t-0.465734719822550440,\t-0.465778965459714760,\t-0.465823209932431650,\t-0.465867453240590530,\t-0.465911695384081170,\t-0.465955936362792200,\t-0.466000176176613320,\t\n-0.466044414825434070,\t-0.466088652309144150,\t-0.466132888627632250,\t-0.466177123780788070,\t-0.466221357768501100,\t-0.466265590590661140,\t-0.466309822247156780,\t-0.466354052737877890,\t\n-0.466398282062713830,\t-0.466442510221554530,\t-0.466486737214288520,\t-0.466530963040805660,\t-0.466575187700995820,\t-0.466619411194747590,\t-0.466663633521950840,\t-0.466707854682494980,\t\n-0.466752074676269890,\t-0.466796293503164210,\t-0.466840511163067850,\t-0.466884727655870190,\t-0.466928942981461090,\t-0.466973157139729200,\t-0.467017370130564490,\t-0.467061581953856330,\t\n-0.467105792609494590,\t-0.467150002097368010,\t-0.467194210417366360,\t-0.467238417569379230,\t-0.467282623553296470,\t-0.467326828369006740,\t-0.467371032016399900,\t-0.467415234495365540,\t\n-0.467459435805793470,\t-0.467503635947572380,\t-0.467547834920592260,\t-0.467592032724742920,\t-0.467636229359913110,\t-0.467680424825992700,\t-0.467724619122871220,\t-0.467768812250438650,\t\n-0.467813004208583630,\t-0.467857194997196080,\t-0.467901384616165540,\t-0.467945573065381930,\t-0.467989760344734000,\t-0.468033946454111670,\t-0.468078131393404480,\t-0.468122315162502360,\t\n-0.468166497761294040,\t-0.468210679189669520,\t-0.468254859447518270,\t-0.468299038534730260,\t-0.468343216451194260,\t-0.468387393196800230,\t-0.468431568771438100,\t-0.468475743174996680,\t\n-0.468519916407365900,\t-0.468564088468435280,\t-0.468608259358094910,\t-0.468652429076233450,\t-0.468696597622740910,\t-0.468740764997506890,\t-0.468784931200421360,\t-0.468829096231373090,\t\n-0.468873260090252100,\t-0.468917422776947920,\t-0.468961584291350600,\t-0.469005744633348930,\t-0.469049903802832900,\t-0.469094061799692150,\t-0.469138218623816610,\t-0.469182374275095070,\t\n-0.469226528753417640,\t-0.469270682058674340,\t-0.469314834190753870,\t-0.469358985149546330,\t-0.469403134934941350,\t-0.469447283546828910,\t-0.469491430985097820,\t-0.469535577249638240,\t\n-0.469579722340339620,\t-0.469623866257092180,\t-0.469668008999784610,\t-0.469712150568307060,\t-0.469756290962549120,\t-0.469800430182400860,\t-0.469844568227751110,\t-0.469888705098489960,\t\n-0.469932840794507030,\t-0.469976975315692440,\t-0.470021108661934970,\t-0.470065240833124730,\t-0.470109371829151410,\t-0.470153501649905050,\t-0.470197630295274500,\t-0.470241757765149930,\t\n-0.470285884059421340,\t-0.470330009177977630,\t-0.470374133120708910,\t-0.470418255887504850,\t-0.470462377478255590,\t-0.470506497892849930,\t-0.470550617131178070,\t-0.470594735193129670,\t\n-0.470638852078594790,\t-0.470682967787462380,\t-0.470727082319622570,\t-0.470771195674965060,\t-0.470815307853379940,\t-0.470859418854756180,\t-0.470903528678983880,\t-0.470947637325952740,\t\n-0.470991744795552890,\t-0.471035851087673320,\t-0.471079956202204050,\t-0.471124060139035350,\t-0.471168162898056080,\t-0.471212264479156430,\t-0.471256364882226110,\t-0.471300464107155260,\t\n-0.471344562153832860,\t-0.471388659022149050,\t-0.471432754711993580,\t-0.471476849223256610,\t-0.471520942555827160,\t-0.471565034709595320,\t-0.471609125684450960,\t-0.471653215480284100,\t\n-0.471697304096983850,\t-0.471741391534440340,\t-0.471785477792543320,\t-0.471829562871183050,\t-0.471873646770248460,\t-0.471917729489629730,\t-0.471961811029217080,\t-0.472005891388899480,\t\n-0.472049970568567230,\t-0.472094048568109990,\t-0.472138125387418010,\t-0.472182201026380370,\t-0.472226275484887210,\t-0.472270348762828360,\t-0.472314420860094060,\t-0.472358491776573300,\t\n-0.472402561512156260,\t-0.472446630066732880,\t-0.472490697440193290,\t-0.472534763632426580,\t-0.472578828643322960,\t-0.472622892472772230,\t-0.472666955120664700,\t-0.472711016586889410,\t\n-0.472755076871336500,\t-0.472799135973895950,\t-0.472843193894457950,\t-0.472887250632911590,\t-0.472931306189147080,\t-0.472975360563054730,\t-0.473019413754523550,\t-0.473063465763443820,\t\n-0.473107516589705460,\t-0.473151566233198710,\t-0.473195614693812660,\t-0.473239661971437520,\t-0.473283708065963260,\t-0.473327752977280140,\t-0.473371796705277180,\t-0.473415839249844760,\t\n-0.473459880610872800,\t-0.473503920788251490,\t-0.473547959781869980,\t-0.473591997591618520,\t-0.473636034217387150,\t-0.473680069659066060,\t-0.473724103916544400,\t-0.473768136989712490,\t\n-0.473812168878460560,\t-0.473856199582677880,\t-0.473900229102254710,\t-0.473944257437080960,\t-0.473988284587046950,\t-0.474032310552041870,\t-0.474076335331955980,\t-0.474120358926679250,\t\n-0.474164381336102000,\t-0.474208402560113430,\t-0.474252422598603840,\t-0.474296441451463210,\t-0.474340459118581860,\t-0.474384475599848980,\t-0.474428490895154880,\t-0.474472505004389590,\t\n-0.474516517927443430,\t-0.474560529664205530,\t-0.474604540214566380,\t-0.474648549578416230,\t-0.474692557755644280,\t-0.474736564746141010,\t-0.474780570549796280,\t-0.474824575166500560,\t\n-0.474868578596142950,\t-0.474912580838613930,\t-0.474956581893803460,\t-0.475000581761601930,\t-0.475044580441898510,\t-0.475088577934583700,\t-0.475132574239547410,\t-0.475176569356680070,\t\n-0.475220563285870920,\t-0.475264556027010400,\t-0.475308547579988470,\t-0.475352537944695560,\t-0.475396527121020870,\t-0.475440515108854930,\t-0.475484501908088050,\t-0.475528487518609540,\t\n-0.475572471940309830,\t-0.475616455173078930,\t-0.475660437216807230,\t-0.475704418071384140,\t-0.475748397736699910,\t-0.475792376212644750,\t-0.475836353499109020,\t-0.475880329595982030,\t\n-0.475924304503154210,\t-0.475968278220515630,\t-0.476012250747956720,\t-0.476056222085366800,\t-0.476100192232636330,\t-0.476144161189655410,\t-0.476188128956314460,\t-0.476232095532502790,\t\n-0.476276060918110870,\t-0.476320025113028790,\t-0.476363988117147090,\t-0.476407949930355010,\t-0.476451910552543050,\t-0.476495869983601660,\t-0.476539828223420280,\t-0.476583785271889270,\t\n-0.476627741128898830,\t-0.476671695794339430,\t-0.476715649268100390,\t-0.476759601550072190,\t-0.476803552640145010,\t-0.476847502538209340,\t-0.476891451244154550,\t-0.476935398757871110,\t\n-0.476979345079249220,\t-0.477023290208179300,\t-0.477067234144550770,\t-0.477111176888254160,\t-0.477155118439179630,\t-0.477199058797217690,\t-0.477242997962257660,\t-0.477286935934190190,\t\n-0.477330872712905750,\t-0.477374808298293760,\t-0.477418742690244760,\t-0.477462675888648880,\t-0.477506607893396660,\t-0.477550538704377580,\t-0.477594468321482170,\t-0.477638396744600570,\t\n-0.477682323973623370,\t-0.477726250008439930,\t-0.477770174848940910,\t-0.477814098495016440,\t-0.477858020946557100,\t-0.477901942203452330,\t-0.477945862265592710,\t-0.477989781132868440,\t\n-0.478033698805170100,\t-0.478077615282387130,\t-0.478121530564410090,\t-0.478165444651129650,\t-0.478209357542435210,\t-0.478253269238217370,\t-0.478297179738366330,\t-0.478341089042772730,\t\n-0.478384997151326040,\t-0.478428904063916860,\t-0.478472809780435440,\t-0.478516714300772360,\t-0.478560617624817110,\t-0.478604519752460320,\t-0.478648420683592200,\t-0.478692320418103450,\t\n-0.478736218955883470,\t-0.478780116296822990,\t-0.478824012440812240,\t-0.478867907387741760,\t-0.478911801137501200,\t-0.478955693689981140,\t-0.478999585045071790,\t-0.479043475202663880,\t\n-0.479087364162646910,\t-0.479131251924911570,\t-0.479175138489348450,\t-0.479219023855847080,\t-0.479262908024298160,\t-0.479306790994591950,\t-0.479350672766619190,\t-0.479394553340269370,\t\n-0.479438432715433130,\t-0.479482310892000830,\t-0.479526187869863120,\t-0.479570063648909530,\t-0.479613938229030810,\t-0.479657811610117280,\t-0.479701683792059570,\t-0.479745554774747280,\t\n-0.479789424558071110,\t-0.479833293141921360,\t-0.479877160526188730,\t-0.479921026710762870,\t-0.479964891695534410,\t-0.480008755480394120,\t-0.480052618065231580,\t-0.480096479449937440,\t\n-0.480140339634402170,\t-0.480184198618516360,\t-0.480228056402169760,\t-0.480271912985252960,\t-0.480315768367656380,\t-0.480359622549270780,\t-0.480403475529985690,\t-0.480447327309691970,\t\n-0.480491177888279890,\t-0.480535027265640290,\t-0.480578875441662720,\t-0.480622722416237940,\t-0.480666568189256400,\t-0.480710412760608770,\t-0.480754256130184800,\t-0.480798098297875120,\t\n-0.480841939263570610,\t-0.480885779027160840,\t-0.480929617588536640,\t-0.480973454947588420,\t-0.481017291104206930,\t-0.481061126058281830,\t-0.481104959809703910,\t-0.481148792358363550,\t\n-0.481192623704151670,\t-0.481236453846957790,\t-0.481280282786672790,\t-0.481324110523187130,\t-0.481367937056391530,\t-0.481411762386175670,\t-0.481455586512430480,\t-0.481499409435046270,\t\n-0.481543231153913950,\t-0.481587051668923130,\t-0.481630870979964710,\t-0.481674689086929510,\t-0.481718505989707220,\t-0.481762321688188610,\t-0.481806136182264200,\t-0.481849949471824910,\t\n-0.481893761556760280,\t-0.481937572436961280,\t-0.481981382112318340,\t-0.482025190582722360,\t-0.482068997848062950,\t-0.482112803908231080,\t-0.482156608763117220,\t-0.482200412412612240,\t\n-0.482244214856605790,\t-0.482288016094988840,\t-0.482331816127651860,\t-0.482375614954485670,\t-0.482419412575380120,\t-0.482463208990225990,\t-0.482507004198913850,\t-0.482550798201334620,\t\n-0.482594590997377950,\t-0.482638382586934870,\t-0.482682172969896180,\t-0.482725962146151650,\t-0.482769750115592260,\t-0.482813536878108460,\t-0.482857322433591250,\t-0.482901106781930320,\t\n-0.482944889923016600,\t-0.482988671856740660,\t-0.483032452582993430,\t-0.483076232101664730,\t-0.483120010412645410,\t-0.483163787515826060,\t-0.483207563411097660,\t-0.483251338098349910,\t\n-0.483295111577473850,\t-0.483338883848360050,\t-0.483382654910899380,\t-0.483426424764981710,\t-0.483470193410497960,\t-0.483513960847339110,\t-0.483557727075394960,\t-0.483601492094556500,\t\n-0.483645255904714300,\t-0.483689018505759400,\t-0.483732779897581510,\t-0.483776540080071700,\t-0.483820299053120520,\t-0.483864056816619040,\t-0.483907813370456960,\t-0.483951568714525380,\t\n-0.483995322848714880,\t-0.484039075772916440,\t-0.484082827487019920,\t-0.484126577990916350,\t-0.484170327284496330,\t-0.484214075367650880,\t-0.484257822240269860,\t-0.484301567902244270,\t\n-0.484345312353465170,\t-0.484389055593822390,\t-0.484432797623206960,\t-0.484476538441509560,\t-0.484520278048621190,\t-0.484564016444431760,\t-0.484607753628832240,\t-0.484651489601713340,\t\n-0.484695224362966140,\t-0.484738957912480510,\t-0.484782690250147420,\t-0.484826421375857630,\t-0.484870151289502230,\t-0.484913879990970960,\t-0.484957607480155100,\t-0.485001333756945150,\t\n-0.485045058821232280,\t-0.485088782672906340,\t-0.485132505311858480,\t-0.485176226737979330,\t-0.485219946951160050,\t-0.485263665951290450,\t-0.485307383738261770,\t-0.485351100311964930,\t\n-0.485394815672289980,\t-0.485438529819128000,\t-0.485482242752369730,\t-0.485525954471906160,\t-0.485569664977627380,\t-0.485613374269424410,\t-0.485657082347188070,\t-0.485700789210809340,\t\n-0.485744494860178290,\t-0.485788199295185960,\t-0.485831902515723170,\t-0.485875604521680990,\t-0.485919305312949410,\t-0.485963004889419570,\t-0.486006703250982220,\t-0.486050400397528500,\t\n-0.486094096328948400,\t-0.486137791045133050,\t-0.486181484545973600,\t-0.486225176831360070,\t-0.486268867901183570,\t-0.486312557755334940,\t-0.486356246393705280,\t-0.486399933816184630,\t\n-0.486443620022664110,\t-0.486487305013034610,\t-0.486530988787187150,\t-0.486574671345011870,\t-0.486618352686399910,\t-0.486662032811242100,\t-0.486705711719429560,\t-0.486749389410852380,\t\n-0.486793065885401720,\t-0.486836741142968380,\t-0.486880415183443550,\t-0.486924088006717330,\t-0.486967759612680910,\t-0.487011430001225430,\t-0.487055099172241050,\t-0.487098767125618890,\t\n-0.487142433861249780,\t-0.487186099379025020,\t-0.487229763678834580,\t-0.487273426760569780,\t-0.487317088624121380,\t-0.487360749269380670,\t-0.487404408696237690,\t-0.487448066904583640,\t\n-0.487491723894309500,\t-0.487535379665306410,\t-0.487579034217464460,\t-0.487622687550674950,\t-0.487666339664828700,\t-0.487709990559817010,\t-0.487753640235529920,\t-0.487797288691858790,\t\n-0.487840935928694760,\t-0.487884581945928040,\t-0.487928226743449880,\t-0.487971870321151140,\t-0.488015512678923120,\t-0.488059153816655930,\t-0.488102793734240810,\t-0.488146432431568740,\t\n-0.488190069908530980,\t-0.488233706165017660,\t-0.488277341200920090,\t-0.488320975016129140,\t-0.488364607610536130,\t-0.488408238984031240,\t-0.488451869136505730,\t-0.488495498067850590,\t\n-0.488539125777957050,\t-0.488582752266715330,\t-0.488626377534016720,\t-0.488670001579752160,\t-0.488713624403813000,\t-0.488757246006089390,\t-0.488800866386472630,\t-0.488844485544854160,\t\n-0.488888103481124050,\t-0.488931720195173670,\t-0.488975335686894000,\t-0.489018949956176400,\t-0.489062563002911010,\t-0.489106174826989200,\t-0.489149785428302010,\t-0.489193394806740680,\t\n-0.489237002962195520,\t-0.489280609894557790,\t-0.489324215603718640,\t-0.489367820089569250,\t-0.489411423351999940,\t-0.489455025390902130,\t-0.489498626206166690,\t-0.489542225797685080,\t\n-0.489585824165347520,\t-0.489629421309045410,\t-0.489673017228670180,\t-0.489716611924111980,\t-0.489760205395262220,\t-0.489803797642011980,\t-0.489847388664252650,\t-0.489890978461874400,\t\n-0.489934567034768730,\t-0.489978154382826660,\t-0.490021740505939610,\t-0.490065325403997780,\t-0.490108909076892640,\t-0.490152491524515290,\t-0.490196072746757030,\t-0.490239652743508230,\t\n-0.490283231514660300,\t-0.490326809060104290,\t-0.490370385379731600,\t-0.490413960473432610,\t-0.490457534341098730,\t-0.490501106982621340,\t-0.490544678397890840,\t-0.490588248586798670,\t\n-0.490631817549235850,\t-0.490675385285093860,\t-0.490718951794263000,\t-0.490762517076634820,\t-0.490806081132100340,\t-0.490849643960550970,\t-0.490893205561877160,\t-0.490936765935970350,\t\n-0.490980325082721600,\t-0.491023883002022430,\t-0.491067439693763150,\t-0.491110995157835300,\t-0.491154549394129950,\t-0.491198102402538640,\t-0.491241654182951630,\t-0.491285204735260550,\t\n-0.491328754059356390,\t-0.491372302155130780,\t-0.491415849022474040,\t-0.491459394661277640,\t-0.491502939071433160,\t-0.491546482252830930,\t-0.491590024205362520,\t-0.491633564928919020,\t\n-0.491677104423392020,\t-0.491720642688671830,\t-0.491764179724650090,\t-0.491807715531217880,\t-0.491851250108266750,\t-0.491894783455687100,\t-0.491938315573370530,\t-0.491981846461208180,\t\n-0.492025376119091580,\t-0.492068904546911160,\t-0.492112431744558430,\t-0.492155957711924660,\t-0.492199482448901380,\t-0.492243005955379010,\t-0.492286528231249130,\t-0.492330049276403340,\t\n-0.492373569090731990,\t-0.492417087674126730,\t-0.492460605026478760,\t-0.492504121147679660,\t-0.492547636037619860,\t-0.492591149696191000,\t-0.492634662123284270,\t-0.492678173318791210,\t\n-0.492721683282602410,\t-0.492765192014609330,\t-0.492808699514703350,\t-0.492852205782775940,\t-0.492895710818717640,\t-0.492939214622420070,\t-0.492982717193774510,\t-0.493026218532672480,\t\n-0.493069718639004560,\t-0.493113217512662290,\t-0.493156715153537430,\t-0.493200211561520330,\t-0.493243706736502750,\t-0.493287200678375890,\t-0.493330693387031390,\t-0.493374184862359840,\t\n-0.493417675104252770,\t-0.493461164112601490,\t-0.493504651887297750,\t-0.493548138428231980,\t-0.493591623735295800,\t-0.493635107808380660,\t-0.493678590647378070,\t-0.493722072252178620,\t\n-0.493765552622674020,\t-0.493809031758755510,\t-0.493852509660314800,\t-0.493895986327242460,\t-0.493939461759430150,\t-0.493982935956769560,\t-0.494026408919151280,\t-0.494069880646466950,\t\n-0.494113351138607880,\t-0.494156820395465880,\t-0.494200288416931420,\t-0.494243755202896210,\t-0.494287220753251650,\t-0.494330685067889410,\t-0.494374148146700050,\t-0.494417609989575350,\t\n-0.494461070596406650,\t-0.494504529967085600,\t-0.494547988101502910,\t-0.494591444999550210,\t-0.494634900661118870,\t-0.494678355086100700,\t-0.494721808274386280,\t-0.494765260225867310,\t\n-0.494808710940435160,\t-0.494852160417981630,\t-0.494895608658397320,\t-0.494939055661574030,\t-0.494982501427403470,\t-0.495025945955776260,\t-0.495069389246584170,\t-0.495112831299718610,\t\n-0.495156272115071350,\t-0.495199711692533070,\t-0.495243150031995480,\t-0.495286587133350000,\t-0.495330022996488480,\t-0.495373457621301470,\t-0.495416891007680830,\t-0.495460323155517970,\t\n-0.495503754064704700,\t-0.495547183735131620,\t-0.495590612166690650,\t-0.495634039359273080,\t-0.495677465312770850,\t-0.495720890027074530,\t-0.495764313502076000,\t-0.495807735737667070,\t\n-0.495851156733738420,\t-0.495894576490181930,\t-0.495937995006888900,\t-0.495981412283751370,\t-0.496024828320659860,\t-0.496068243117506250,\t-0.496111656674182110,\t-0.496155068990579150,\t\n-0.496198480066588180,\t-0.496241889902101000,\t-0.496285298497009090,\t-0.496328705851204310,\t-0.496372111964577370,\t-0.496415516837020180,\t-0.496458920468424160,\t-0.496502322858681230,\t\n-0.496545724007682150,\t-0.496589123915318730,\t-0.496632522581482880,\t-0.496675920006065360,\t-0.496719316188958040,\t-0.496762711130052380,\t-0.496806104829240370,\t-0.496849497286412760,\t\n-0.496892888501461350,\t-0.496936278474277680,\t-0.496979667204753780,\t-0.497023054692780300,\t-0.497066440938249140,\t-0.497109825941051960,\t-0.497153209701080510,\t-0.497196592218225710,\t\n-0.497239973492379420,\t-0.497283353523433220,\t-0.497326732311278940,\t-0.497370109855807540,\t-0.497413486156910830,\t-0.497456861214480350,\t-0.497500235028408180,\t-0.497543607598585010,\t\n-0.497586978924902830,\t-0.497630349007253560,\t-0.497673717845528050,\t-0.497717085439618230,\t-0.497760451789415750,\t-0.497803816894812460,\t-0.497847180755699280,\t-0.497890543371968140,\t\n-0.497933904743510620,\t-0.497977264870218760,\t-0.498020623751983360,\t-0.498063981388696340,\t-0.498107337780249400,\t-0.498150692926534520,\t-0.498194046827442500,\t-0.498237399482865380,\t\n-0.498280750892694750,\t-0.498324101056822680,\t-0.498367449975139880,\t-0.498410797647538540,\t-0.498454144073910530,\t-0.498497489254146780,\t-0.498540833188139350,\t-0.498584175875779800,\t\n-0.498627517316960200,\t-0.498670857511571420,\t-0.498714196459505540,\t-0.498757534160654100,\t-0.498800870614909240,\t-0.498844205822161820,\t-0.498887539782303880,\t-0.498930872495227110,\t\n-0.498974203960823540,\t-0.499017534178984090,\t-0.499060863149600740,\t-0.499104190872565300,\t-0.499147517347769740,\t-0.499190842575104990,\t-0.499234166554463180,\t-0.499277489285736290,\t\n-0.499320810768815290,\t-0.499364131003592340,\t-0.499407449989958950,\t-0.499450767727807390,\t-0.499494084217028510,\t-0.499537399457514460,\t-0.499580713449156830,\t-0.499624026191847870,\t\n-0.499667337685478440,\t-0.499710647929940630,\t-0.499753956925126250,\t-0.499797264670927330,\t-0.499840571167234900,\t-0.499883876413941000,\t-0.499927180410937420,\t-0.499970483158116320,\t\n-0.500013784655368610,\t-0.500057084902586380,\t-0.500100383899661830,\t-0.500143681646486040,\t-0.500186978142950990,\t-0.500230273388948430,\t-0.500273567384370680,\t-0.500316860129108480,\t\n-0.500360151623054250,\t-0.500403441866099640,\t-0.500446730858136730,\t-0.500490018599056730,\t-0.500533305088751600,\t-0.500576590327113210,\t-0.500619874314033760,\t-0.500663157049404230,\t\n-0.500706438533116690,\t-0.500749718765063250,\t-0.500792997745135750,\t-0.500836275473225400,\t-0.500879551949224400,\t-0.500922827173024500,\t-0.500966101144518010,\t-0.501009373863595790,\t\n-0.501052645330150150,\t-0.501095915544073290,\t-0.501139184505256190,\t-0.501182452213591150,\t-0.501225718668970030,\t-0.501268983871285050,\t-0.501312247820427160,\t-0.501355510516288570,\t\n-0.501398771958761370,\t-0.501442032147737530,\t-0.501485291083108240,\t-0.501528548764765710,\t-0.501571805192601810,\t-0.501615060366508710,\t-0.501658314286377640,\t-0.501701566952100890,\t\n-0.501744818363570100,\t-0.501788068520677700,\t-0.501831317423314660,\t-0.501874565071373400,\t-0.501917811464746120,\t-0.501961056603323910,\t-0.502004300486999070,\t-0.502047543115663460,\t\n-0.502090784489209300,\t-0.502134024607527870,\t-0.502177263470511390,\t-0.502220501078051830,\t-0.502263737430041270,\t-0.502306972526371020,\t-0.502350206366933390,\t-0.502393438951620140,\t\n-0.502436670280323790,\t-0.502479900352935330,\t-0.502523129169347160,\t-0.502566356729451050,\t-0.502609583033139520,\t-0.502652808080303660,\t-0.502696031870835780,\t-0.502739254404628190,\t\n-0.502782475681572080,\t-0.502825695701559770,\t-0.502868914464483230,\t-0.502912131970234770,\t-0.502955348218705580,\t-0.502998563209788090,\t-0.503041776943374150,\t-0.503084989419356200,\t\n-0.503128200637625310,\t-0.503171410598073910,\t-0.503214619300594080,\t-0.503257826745078020,\t-0.503301032931417040,\t-0.503344237859503440,\t-0.503387441529229320,\t-0.503430643940486870,\t\n-0.503473845093167500,\t-0.503517044987163540,\t-0.503560243622366840,\t-0.503603440998670050,\t-0.503646637115964250,\t-0.503689831974141860,\t-0.503733025573095180,\t-0.503776217912715650,\t\n-0.503819408992895570,\t-0.503862598813526910,\t-0.503905787374502200,\t-0.503948974675712650,\t-0.503992160717050550,\t-0.504035345498408120,\t-0.504078529019677760,\t-0.504121711280750670,\t\n-0.504164892281519280,\t-0.504208072021875680,\t-0.504251250501712270,\t-0.504294427720920260,\t-0.504337603679392290,\t-0.504380778377020330,\t-0.504423951813696700,\t-0.504467123989312930,\t\n-0.504510294903761310,\t-0.504553464556934280,\t-0.504596632948723260,\t-0.504639800079020650,\t-0.504682965947718550,\t-0.504726130554709380,\t-0.504769293899884450,\t-0.504812455983136400,\t\n-0.504855616804357200,\t-0.504898776363439270,\t-0.504941934660274040,\t-0.504985091694754030,\t-0.505028247466771220,\t-0.505071401976218250,\t-0.505114555222986320,\t-0.505157707206968070,\t\n-0.505200857928055470,\t-0.505244007386141170,\t-0.505287155581116370,\t-0.505330302512873810,\t-0.505373448181305810,\t-0.505416592586303780,\t-0.505459735727760370,\t-0.505502877605567560,\t\n-0.505546018219617980,\t-0.505589157569802940,\t-0.505632295656014970,\t-0.505675432478146280,\t-0.505718568036089390,\t-0.505761702329735720,\t-0.505804835358977800,\t-0.505847967123707720,\t\n-0.505891097623818230,\t-0.505934226859200530,\t-0.505977354829747260,\t-0.506020481535350620,\t-0.506063606975903140,\t-0.506106731151296340,\t-0.506149854061422650,\t-0.506192975706174720,\t\n-0.506236096085443950,\t-0.506279215199122890,\t-0.506322333047103830,\t-0.506365449629279430,\t-0.506408564945540870,\t-0.506451678995781030,\t-0.506494791779891870,\t-0.506537903297766160,\t\n-0.506581013549295300,\t-0.506624122534371950,\t-0.506667230252888290,\t-0.506710336704736970,\t-0.506753441889809310,\t-0.506796545807998160,\t-0.506839648459195600,\t-0.506882749843294290,\t\n-0.506925849960185640,\t-0.506968948809762510,\t-0.507012046391916990,\t-0.507055142706541620,\t-0.507098237753528140,\t-0.507141331532768970,\t-0.507184424044156980,\t-0.507227515287583360,\t\n-0.507270605262941100,\t-0.507313693970122270,\t-0.507356781409019630,\t-0.507399867579524600,\t-0.507442952481529930,\t-0.507486036114927930,\t-0.507529118479611130,\t-0.507572199575471170,\t\n-0.507615279402400810,\t-0.507658357960292130,\t-0.507701435249037990,\t-0.507744511268529930,\t-0.507787586018660480,\t-0.507830659499322160,\t-0.507873731710407510,\t-0.507916802651808160,\t\n-0.507959872323416880,\t-0.508002940725126200,\t-0.508046007856827850,\t-0.508089073718414390,\t-0.508132138309778330,\t-0.508175201630812310,\t-0.508218263681407880,\t-0.508261324461457780,\t\n-0.508304383970854420,\t-0.508347442209490460,\t-0.508390499177257430,\t-0.508433554874048290,\t-0.508476609299755130,\t-0.508519662454270940,\t-0.508562714337487120,\t-0.508605764949296550,\t\n-0.508648814289591630,\t-0.508691862358265020,\t-0.508734909155208360,\t-0.508777954680314390,\t-0.508820998933475880,\t-0.508864041914584560,\t-0.508907083623533210,\t-0.508950124060214000,\t\n-0.508993163224519930,\t-0.509036201116342620,\t-0.509079237735574730,\t-0.509122273082108780,\t-0.509165307155837520,\t-0.509208339956652710,\t-0.509251371484446880,\t-0.509294401739112780,\t\n-0.509337430720542940,\t-0.509380458428629220,\t-0.509423484863264280,\t-0.509466510024340740,\t-0.509509533911751130,\t-0.509552556525387450,\t-0.509595577865142310,\t-0.509638597930908270,\t\n-0.509681616722578060,\t-0.509724634240043550,\t-0.509767650483197280,\t-0.509810665451932430,\t-0.509853679146140440,\t-0.509896691565714270,\t-0.509939702710546340,\t-0.509982712580529630,\t\n-0.510025721175555670,\t-0.510068728495517430,\t-0.510111734540307340,\t-0.510154739309818360,\t-0.510197742803942140,\t-0.510240745022571550,\t-0.510283745965599110,\t-0.510326745632917580,\t\n-0.510369744024418930,\t-0.510412741139995910,\t-0.510455736979540940,\t-0.510498731542947120,\t-0.510541724830106070,\t-0.510584716840910670,\t-0.510627707575253890,\t-0.510670697033027480,\t\n-0.510713685214124190,\t-0.510756672118436780,\t-0.510799657745858120,\t-0.510842642096279940,\t-0.510885625169595130,\t-0.510928606965696200,\t-0.510971587484476130,\t-0.511014566725826790,\t\n-0.511057544689641040,\t-0.511100521375811300,\t-0.511143496784230770,\t-0.511186470914791080,\t-0.511229443767385220,\t-0.511272415341905710,\t-0.511315385638245520,\t-0.511358354656296530,\t\n-0.511401322395951710,\t-0.511444288857103910,\t-0.511487254039645010,\t-0.511530217943467980,\t-0.511573180568465350,\t-0.511616141914530200,\t-0.511659101981554290,\t-0.511702060769430700,\t\n-0.511745018278051860,\t-0.511787974507310950,\t-0.511830929457099630,\t-0.511873883127311080,\t-0.511916835517837730,\t-0.511959786628572780,\t-0.512002736459407860,\t-0.512045685010236170,\t\n-0.512088632280950250,\t-0.512131578271443180,\t-0.512174522981606710,\t-0.512217466411333920,\t-0.512260408560517910,\t-0.512303349429050540,\t-0.512346289016824660,\t-0.512389227323733150,\t\n-0.512432164349668980,\t-0.512475100094523910,\t-0.512518034558191230,\t-0.512560967740563370,\t-0.512603899641533410,\t-0.512646830260993450,\t-0.512689759598836340,\t-0.512732687654954830,\t\n-0.512775614429242020,\t-0.512818539921589770,\t-0.512861464131891260,\t-0.512904387060038940,\t-0.512947308705926090,\t-0.512990229069444690,\t-0.513033148150487620,\t-0.513076065948947610,\t\n-0.513118982464717990,\t-0.513161897697690380,\t-0.513204811647758110,\t-0.513247724314814140,\t-0.513290635698750550,\t-0.513333545799460330,\t-0.513376454616836230,\t-0.513419362150771330,\t\n-0.513462268401157720,\t-0.513505173367888370,\t-0.513548077050856140,\t-0.513590979449954130,\t-0.513633880565074310,\t-0.513676780396109640,\t-0.513719678942953120,\t-0.513762576205497810,\t\n-0.513805472183635700,\t-0.513848366877259770,\t-0.513891260286263090,\t-0.513934152410538530,\t-0.513977043249978170,\t-0.514019932804475330,\t-0.514062821073922980,\t-0.514105708058213210,\t\n-0.514148593757239090,\t-0.514191478170893610,\t-0.514234361299069740,\t-0.514277243141659570,\t-0.514320123698556400,\t-0.514363002969652870,\t-0.514405880954842190,\t-0.514448757654016430,\t\n-0.514491633067068690,\t-0.514534507193891930,\t-0.514577380034379360,\t-0.514620251588422950,\t-0.514663121855915780,\t-0.514705990836750950,\t-0.514748858530821420,\t-0.514791724938019390,\t\n-0.514834590058238060,\t-0.514877453891370740,\t-0.514920316437309290,\t-0.514963177695947020,\t-0.515006037667176900,\t-0.515048896350892020,\t-0.515091753746984460,\t-0.515134609855347540,\t\n-0.515177464675874220,\t-0.515220318208457480,\t-0.515263170452989640,\t-0.515306021409363880,\t-0.515348871077472960,\t-0.515391719457210300,\t-0.515434566548467980,\t-0.515477412351139310,\t\n-0.515520256865117040,\t-0.515563100090294490,\t-0.515605942026563850,\t-0.515648782673818310,\t-0.515691622031950850,\t-0.515734460100854660,\t-0.515777296880421950,\t-0.515820132370546030,\t\n-0.515862966571120190,\t-0.515905799482036520,\t-0.515948631103188340,\t-0.515991461434468610,\t-0.516034290475770650,\t-0.516077118226986540,\t-0.516119944688009590,\t-0.516162769858732770,\t\n-0.516205593739049510,\t-0.516248416328851770,\t-0.516291237628033080,\t-0.516334057636486210,\t-0.516376876354104670,\t-0.516419693780780560,\t-0.516462509916407080,\t-0.516505324760877520,\t\n-0.516548138314084860,\t-0.516590950575921530,\t-0.516633761546280820,\t-0.516676571225056170,\t-0.516719379612139650,\t-0.516762186707424580,\t-0.516804992510804140,\t-0.516847797022171650,\t\n-0.516890600241419200,\t-0.516933402168440300,\t-0.516976202803127840,\t-0.517019002145375330,\t-0.517061800195074860,\t-0.517104596952119970,\t-0.517147392416403510,\t-0.517190186587819010,\t\n-0.517232979466258680,\t-0.517275771051615820,\t-0.517318561343783510,\t-0.517361350342655290,\t-0.517404138048123240,\t-0.517446924460080890,\t-0.517489709578421550,\t-0.517532493403037640,\t\n-0.517575275933822470,\t-0.517618057170669000,\t-0.517660837113470880,\t-0.517703615762120320,\t-0.517746393116510610,\t-0.517789169176534950,\t-0.517831943942086870,\t-0.517874717413058460,\t\n-0.517917489589343140,\t-0.517960260470834210,\t-0.518003030057425100,\t-0.518045798349007880,\t-0.518088565345476200,\t-0.518131331046723150,\t-0.518174095452642150,\t-0.518216858563125490,\t\n-0.518259620378066720,\t-0.518302380897359250,\t-0.518345140120895500,\t-0.518387898048568880,\t-0.518430654680272500,\t-0.518473410015899860,\t-0.518516164055343290,\t-0.518558916798496310,\t\n-0.518601668245252110,\t-0.518644418395504010,\t-0.518687167249144650,\t-0.518729914806067230,\t-0.518772661066165040,\t-0.518815406029331630,\t-0.518858149695459290,\t-0.518900892064441570,\t\n-0.518943633136171640,\t-0.518986372910543060,\t-0.519029111387448120,\t-0.519071848566780350,\t-0.519114584448432950,\t-0.519157319032299560,\t-0.519200052318272490,\t-0.519242784306245260,\t\n-0.519285514996111420,\t-0.519328244387763370,\t-0.519370972481094870,\t-0.519413699275998790,\t-0.519456424772368860,\t-0.519499148970097520,\t-0.519541871869078300,\t-0.519584593469204490,\t\n-0.519627313770369530,\t-0.519670032772465820,\t-0.519712750475387120,\t-0.519755466879026520,\t-0.519798181983277540,\t-0.519840895788032830,\t-0.519883608293185920,\t-0.519926319498629890,\t\n-0.519969029404258490,\t-0.520011738009964030,\t-0.520054445315640380,\t-0.520097151321180950,\t-0.520139856026478280,\t-0.520182559431425880,\t-0.520225261535917190,\t-0.520267962339845620,\t\n-0.520310661843103820,\t-0.520353360045585410,\t-0.520396056947183490,\t-0.520438752547791930,\t-0.520481446847303020,\t-0.520524139845610520,\t-0.520566831542607740,\t-0.520609521938188210,\t\n-0.520652211032244460,\t-0.520694898824670240,\t-0.520737585315358630,\t-0.520780270504203610,\t-0.520822954391097490,\t-0.520865636975933910,\t-0.520908318258606730,\t-0.520950998239008260,\t\n-0.520993676917032360,\t-0.521036354292572330,\t-0.521079030365521720,\t-0.521121705135773160,\t-0.521164378603220290,\t-0.521207050767756530,\t-0.521249721629275520,\t-0.521292391187669790,\t\n-0.521335059442833090,\t-0.521377726394658850,\t-0.521420392043040580,\t-0.521463056387870940,\t-0.521505719429043670,\t-0.521548381166452080,\t-0.521591041599989920,\t-0.521633700729549840,\t\n-0.521676358555025480,\t-0.521719015076310240,\t-0.521761670293297790,\t-0.521804324205880850,\t-0.521846976813952980,\t-0.521889628117408130,\t-0.521932278116138850,\t-0.521974926810038880,\t\n-0.522017574199001630,\t-0.522060220282920760,\t-0.522102865061688900,\t-0.522145508535199920,\t-0.522188150703347230,\t-0.522230791566024480,\t-0.522273431123124410,\t-0.522316069374540780,\t\n-0.522358706320166900,\t-0.522401341959896740,\t-0.522443976293622710,\t-0.522486609321238800,\t-0.522529241042638430,\t-0.522571871457715330,\t-0.522614500566362050,\t-0.522657128368472670,\t\n-0.522699754863940710,\t-0.522742380052659050,\t-0.522785003934521430,\t-0.522827626509421380,\t-0.522870247777252550,\t-0.522912867737907790,\t-0.522955486391280750,\t-0.522998103737265070,\t\n-0.523040719775754500,\t-0.523083334506641790,\t-0.523125947929820700,\t-0.523168560045184750,\t-0.523211170852627800,\t-0.523253780352042510,\t-0.523296388543322720,\t-0.523338995426362090,\t\n-0.523381601001054240,\t-0.523424205267292050,\t-0.523466808224969380,\t-0.523509409873979980,\t-0.523552010214216710,\t-0.523594609245573440,\t-0.523637206967943690,\t-0.523679803381221220,\t\n-0.523722398485298890,\t-0.523764992280070560,\t-0.523807584765429770,\t-0.523850175941270480,\t-0.523892765807485230,\t-0.523935354363968100,\t-0.523977941610612620,\t-0.524020527547312650,\t\n-0.524063112173960950,\t-0.524105695490451500,\t-0.524148277496677810,\t-0.524190858192533860,\t-0.524233437577912300,\t-0.524276015652707210,\t-0.524318592416812000,\t-0.524361167870120770,\t\n-0.524403742012526150,\t-0.524446314843922230,\t-0.524488886364202990,\t-0.524531456573261060,\t-0.524574025470990520,\t-0.524616593057284810,\t-0.524659159332038110,\t-0.524701724295143060,\t\n-0.524744287946493750,\t-0.524786850285983820,\t-0.524829411313507020,\t-0.524871971028956330,\t-0.524914529432225720,\t-0.524957086523208720,\t-0.524999642301799520,\t-0.525042196767890660,\t\n-0.525084749921376440,\t-0.525127301762150280,\t-0.525169852290106380,\t-0.525212401505137370,\t-0.525254949407137350,\t-0.525297495996000290,\t-0.525340041271619150,\t-0.525382585233887920,\t\n-0.525425127882700240,\t-0.525467669217950070,\t-0.525510209239530400,\t-0.525552747947335200,\t-0.525595285341258100,\t-0.525637821421193200,\t-0.525680356187033350,\t-0.525722889638672640,\t\n-0.525765421776004720,\t-0.525807952598923540,\t-0.525850482107322210,\t-0.525893010301094590,\t-0.525935537180134420,\t-0.525978062744335890,\t-0.526020586993591780,\t-0.526063109927796150,\t\n-0.526105631546843200,\t-0.526148151850625690,\t-0.526190670839037920,\t-0.526233188511973430,\t-0.526275704869326290,\t-0.526318219910989590,\t-0.526360733636857310,\t-0.526403246046823200,\t\n-0.526445757140781350,\t-0.526488266918624710,\t-0.526530775380247400,\t-0.526573282525543140,\t-0.526615788354406140,\t-0.526658292866729270,\t-0.526700796062406610,\t-0.526743297941332010,\t\n-0.526785798503399460,\t-0.526828297748502150,\t-0.526870795676534050,\t-0.526913292287389260,\t-0.526955787580960950,\t-0.526998281557143120,\t-0.527040774215829620,\t-0.527083265556914650,\t\n-0.527125755580290960,\t-0.527168244285852960,\t-0.527210731673494410,\t-0.527253217743109290,\t-0.527295702494590900,\t-0.527338185927833100,\t-0.527380668042729980,\t-0.527423148839175520,\t\n-0.527465628317062670,\t-0.527508106476285880,\t-0.527550583316738870,\t-0.527593058838315640,\t-0.527635533040909490,\t-0.527678005924414490,\t-0.527720477488724530,\t-0.527762947733733670,\t\n-0.527805416659335110,\t-0.527847884265422950,\t-0.527890350551891490,\t-0.527932815518633800,\t-0.527975279165543990,\t-0.528017741492516010,\t-0.528060202499444190,\t-0.528102662186221370,\t\n-0.528145120552741880,\t-0.528187577598899560,\t-0.528230033324588730,\t-0.528272487729702480,\t-0.528314940814134990,\t-0.528357392577780140,\t-0.528399843020532110,\t-0.528442292142284220,\t\n-0.528484739942930550,\t-0.528527186422364960,\t-0.528569631580481870,\t-0.528612075417174250,\t-0.528654517932336530,\t-0.528696959125862790,\t-0.528739398997646330,\t-0.528781837547581460,\t\n-0.528824274775561820,\t-0.528866710681482060,\t-0.528909145265235030,\t-0.528951578526715150,\t-0.528994010465816290,\t-0.529036441082432860,\t-0.529078870376457840,\t-0.529121298347785760,\t\n-0.529163724996310370,\t-0.529206150321926080,\t-0.529248574324525990,\t-0.529290997004004500,\t-0.529333418360255600,\t-0.529375838393173370,\t-0.529418257102651340,\t-0.529460674488583470,\t\n-0.529503090550864420,\t-0.529545505289387260,\t-0.529587918704046310,\t-0.529630330794735540,\t-0.529672741561349360,\t-0.529715151003780970,\t-0.529757559121924680,\t-0.529799965915674460,\t\n-0.529842371384924740,\t-0.529884775529568700,\t-0.529927178349500760,\t-0.529969579844614790,\t-0.530011980014805320,\t-0.530054378859965540,\t-0.530096776379989750,\t-0.530139172574772060,\t\n-0.530181567444206750,\t-0.530223960988187250,\t-0.530266353206607750,\t-0.530308744099362350,\t-0.530351133666345560,\t-0.530393521907450480,\t-0.530435908822571740,\t-0.530478294411603430,\t\n-0.530520678674439080,\t-0.530563061610973110,\t-0.530605443221099370,\t-0.530647823504712400,\t-0.530690202461705620,\t-0.530732580091973220,\t-0.530774956395409390,\t-0.530817331371908560,\t\n-0.530859705021364040,\t-0.530902077343670230,\t-0.530944448338721230,\t-0.530986818006411450,\t-0.531029186346634320,\t-0.531071553359284240,\t-0.531113919044255200,\t-0.531156283401441720,\t\n-0.531198646430737220,\t-0.531241008132036120,\t-0.531283368505232830,\t-0.531325727550220780,\t-0.531368085266894390,\t-0.531410441655147730,\t-0.531452796714875440,\t-0.531495150445970730,\t\n-0.531537502848328130,\t-0.531579853921841820,\t-0.531622203666406220,\t-0.531664552081914770,\t-0.531706899168261860,\t-0.531749244925341810,\t-0.531791589353048930,\t-0.531833932451276750,\t\n-0.531876274219919790,\t-0.531918614658872020,\t-0.531960953768028210,\t-0.532003291547281540,\t-0.532045627996526770,\t-0.532087963115658200,\t-0.532130296904569370,\t-0.532172629363154790,\t\n-0.532214960491308680,\t-0.532257290288925430,\t-0.532299618755898710,\t-0.532341945892122910,\t-0.532384271697492250,\t-0.532426596171901250,\t-0.532468919315243320,\t-0.532511241127413220,\t\n-0.532553561608305030,\t-0.532595880757813170,\t-0.532638198575831390,\t-0.532680515062254000,\t-0.532722830216975310,\t-0.532765144039889950,\t-0.532807456530891450,\t-0.532849767689874240,\t\n-0.532892077516732950,\t-0.532934386011361120,\t-0.532976693173653370,\t-0.533018999003503800,\t-0.533061303500807160,\t-0.533103606665456860,\t-0.533145908497347550,\t-0.533188208996373540,\t\n-0.533230508162429340,\t-0.533272805995408380,\t-0.533315102495205530,\t-0.533357397661714970,\t-0.533399691494831130,\t-0.533441983994447870,\t-0.533484275160459490,\t-0.533526564992760520,\t\n-0.533568853491245500,\t-0.533611140655807950,\t-0.533653426486342510,\t-0.533695710982743600,\t-0.533737994144905640,\t-0.533780275972722480,\t-0.533822556466088560,\t-0.533864835624898610,\t\n-0.533907113449046180,\t-0.533949389938426000,\t-0.533991665092932390,\t-0.534033938912459980,\t-0.534076211396902310,\t-0.534118482546154130,\t-0.534160752360109740,\t-0.534203020838663780,\t\n-0.534245287981709890,\t-0.534287553789142940,\t-0.534329818260857010,\t-0.534372081396746860,\t-0.534414343196706220,\t-0.534456603660629640,\t-0.534498862788411630,\t-0.534541120579946740,\t\n-0.534583377035128700,\t-0.534625632153852280,\t-0.534667885936012110,\t-0.534710138381501940,\t-0.534752389490216310,\t-0.534794639262049730,\t-0.534836887696896970,\t-0.534879134794651550,\t\n-0.534921380555208330,\t-0.534963624978461730,\t-0.535005868064306390,\t-0.535048109812635950,\t-0.535090350223345280,\t-0.535132589296328680,\t-0.535174827031481120,\t-0.535217063428696020,\t\n-0.535259298487868240,\t-0.535301532208892210,\t-0.535343764591662770,\t-0.535385995636073590,\t-0.535428225342019280,\t-0.535470453709394940,\t-0.535512680738093990,\t-0.535554906428011400,\t\n-0.535597130779041470,\t-0.535639353791079190,\t-0.535681575464018070,\t-0.535723795797752980,\t-0.535766014792178450,\t-0.535808232447189340,\t-0.535850448762679180,\t-0.535892663738542830,\t\n-0.535934877374674930,\t-0.535977089670970240,\t-0.536019300627322390,\t-0.536061510243626250,\t-0.536103718519776340,\t-0.536145925455667640,\t-0.536188131051193670,\t-0.536230335306249310,\t\n-0.536272538220729180,\t-0.536314739794528040,\t-0.536356940027539750,\t-0.536399138919659070,\t-0.536441336470780850,\t-0.536483532680798960,\t-0.536525727549608260,\t-0.536567921077103270,\t\n-0.536610113263178870,\t-0.536652304107728680,\t-0.536694493610647800,\t-0.536736681771830760,\t-0.536778868591172300,\t-0.536821054068566280,\t-0.536863238203907690,\t-0.536905420997090930,\t\n-0.536947602448011100,\t-0.536989782556561820,\t-0.537031961322638090,\t-0.537074138746134520,\t-0.537116314826945880,\t-0.537158489564966150,\t-0.537200662960090170,\t-0.537242835012212820,\t\n-0.537285005721228170,\t-0.537327175087030870,\t-0.537369343109515670,\t-0.537411509788577550,\t-0.537453675124110240,\t-0.537495839116008730,\t-0.537538001764167660,\t-0.537580163068481890,\t\n-0.537622323028845380,\t-0.537664481645153130,\t-0.537706638917299530,\t-0.537748794845179790,\t-0.537790949428687770,\t-0.537833102667718220,\t-0.537875254562166010,\t-0.537917405111925980,\t\n-0.537959554316892130,\t-0.538001702176959420,\t-0.538043848692022710,\t-0.538085993861976090,\t-0.538128137686714410,\t-0.538170280166132440,\t-0.538212421300125140,\t-0.538254561088586490,\t\n-0.538296699531411350,\t-0.538338836628494470,\t-0.538380972379730820,\t-0.538423106785014480,\t-0.538465239844240330,\t-0.538507371557302990,\t-0.538549501924097670,\t-0.538591630944518230,\t\n-0.538633758618459750,\t-0.538675884945816860,\t-0.538718009926484550,\t-0.538760133560356900,\t-0.538802255847328880,\t-0.538844376787295690,\t-0.538886496380151070,\t-0.538928614625790230,\t\n-0.538970731524107900,\t-0.539012847074999080,\t-0.539054961278357840,\t-0.539097074134079150,\t-0.539139185642057760,\t-0.539181295802188760,\t-0.539223404614366130,\t-0.539265512078485050,\t\n-0.539307618194440170,\t-0.539349722962126690,\t-0.539391826381438460,\t-0.539433928452270670,\t-0.539476029174517980,\t-0.539518128548075680,\t-0.539560226572837640,\t-0.539602323248699060,\t\n-0.539644418575554670,\t-0.539686512553299690,\t-0.539728605181827970,\t-0.539770696461034700,\t-0.539812786390815090,\t-0.539854874971063210,\t-0.539896962201674050,\t-0.539939048082542560,\t\n-0.539981132613563840,\t-0.540023215794631860,\t-0.540065297625641820,\t-0.540107378106488570,\t-0.540149457237067200,\t-0.540191535017271910,\t-0.540233611446997660,\t-0.540275686526139440,\t\n-0.540317760254592440,\t-0.540359832632250630,\t-0.540401903659009200,\t-0.540443973334763020,\t-0.540486041659407280,\t-0.540528108632836070,\t-0.540570174254944690,\t-0.540612238525628120,\t\n-0.540654301444780550,\t-0.540696363012297290,\t-0.540738423228073200,\t-0.540780482092003360,\t-0.540822539603981860,\t-0.540864595763904110,\t-0.540906650571664870,\t-0.540948704027159330,\t\n-0.540990756130281690,\t-0.541032806880927140,\t-0.541074856278990550,\t-0.541116904324367210,\t-0.541158951016951220,\t-0.541200996356637990,\t-0.541243040343322160,\t-0.541285082976899030,\t\n-0.541327124257262930,\t-0.541369164184308920,\t-0.541411202757932530,\t-0.541453239978027630,\t-0.541495275844489640,\t-0.541537310357213530,\t-0.541579343516094490,\t-0.541621375321026610,\t\n-0.541663405771905420,\t-0.541705434868625660,\t-0.541747462611082750,\t-0.541789488999170790,\t-0.541831514032785070,\t-0.541873537711820560,\t-0.541915560036172580,\t-0.541957581005735320,\t\n-0.541999600620404200,\t-0.542041618880073960,\t-0.542083635784640140,\t-0.542125651333996820,\t-0.542167665528039410,\t-0.542209678366662780,\t-0.542251689849762350,\t-0.542293699977232310,\t\n-0.542335708748967970,\t-0.542377716164864850,\t-0.542419722224816940,\t-0.542461726928719860,\t-0.542503730276468370,\t-0.542545732267957880,\t-0.542587732903082820,\t-0.542629732181738380,\t\n-0.542671730103819530,\t-0.542713726669221800,\t-0.542755721877839380,\t-0.542797715729567700,\t-0.542839708224301610,\t-0.542881699361936750,\t-0.542923689142367220,\t-0.542965677565488410,\t\n-0.543007664631195430,\t-0.543049650339383680,\t-0.543091634689947480,\t-0.543133617682782120,\t-0.543175599317783140,\t-0.543217579594844730,\t-0.543259558513862430,\t-0.543301536074731310,\t\n-0.543343512277346560,\t-0.543385487121602730,\t-0.543427460607395220,\t-0.543469432734619010,\t-0.543511403503169510,\t-0.543553372912941260,\t-0.543595340963829550,\t-0.543637307655729480,\t\n-0.543679272988536470,\t-0.543721236962144920,\t-0.543763199576450360,\t-0.543805160831347670,\t-0.543847120726732580,\t-0.543889079262499300,\t-0.543931036438543240,\t-0.543972992254760030,\t\n-0.544014946711043890,\t-0.544056899807290440,\t-0.544098851543394770,\t-0.544140801919252290,\t-0.544182750934757430,\t-0.544224698589805710,\t-0.544266644884292220,\t-0.544308589818112590,\t\n-0.544350533391161020,\t-0.544392475603333150,\t-0.544434416454524060,\t-0.544476355944629290,\t-0.544518294073543240,\t-0.544560230841161560,\t-0.544602166247379230,\t-0.544644100292091870,\t\n-0.544686032975193910,\t-0.544727964296580770,\t-0.544769894256148190,\t-0.544811822853790480,\t-0.544853750089403290,\t-0.544895675962881580,\t-0.544937600474121100,\t-0.544979523623016270,\t\n-0.545021445409462620,\t-0.545063365833355460,\t-0.545105284894590090,\t-0.545147202593061260,\t-0.545189118928664400,\t-0.545231033901294680,\t-0.545272947510847760,\t-0.545314859757218160,\t\n-0.545356770640301410,\t-0.545398680159992600,\t-0.545440588316187580,\t-0.545482495108780770,\t-0.545524400537667600,\t-0.545566304602743470,\t-0.545608207303904020,\t-0.545650108641043570,\t\n-0.545692008614057980,\t-0.545733907222842650,\t-0.545775804467292120,\t-0.545817700347302150,\t-0.545859594862767920,\t-0.545901488013585070,\t-0.545943379799648240,\t-0.545985270220852860,\t\n-0.546027159277094220,\t-0.546069046968268190,\t-0.546110933294269070,\t-0.546152818254992730,\t-0.546194701850334250,\t-0.546236584080189490,\t-0.546278464944452760,\t-0.546320344443019910,\t\n-0.546362222575786260,\t-0.546404099342647440,\t-0.546445974743497880,\t-0.546487848778233530,\t-0.546529721446749830,\t-0.546571592748941510,\t-0.546613462684704120,\t-0.546655331253933170,\t\n-0.546697198456524200,\t-0.546739064292371960,\t-0.546780928761371960,\t-0.546822791863419640,\t-0.546864653598410740,\t-0.546906513966239790,\t-0.546948372966802650,\t-0.546990230599994520,\t\n-0.547032086865711250,\t-0.547073941763847270,\t-0.547115795294298550,\t-0.547157647456960270,\t-0.547199498251728310,\t-0.547241347678497190,\t-0.547283195737162660,\t-0.547325042427620590,\t\n-0.547366887749765500,\t-0.547408731703493130,\t-0.547450574288699030,\t-0.547492415505278830,\t-0.547534255353127270,\t-0.547576093832140010,\t-0.547617930942212450,\t-0.547659766683240570,\t\n-0.547701601055118890,\t-0.547743434057743170,\t-0.547785265691008830,\t-0.547827095954811720,\t-0.547868924849046480,\t-0.547910752373608980,\t-0.547952578528394520,\t-0.547994403313299070,\t\n-0.548036226728217170,\t-0.548078048773044780,\t-0.548119869447677210,\t-0.548161688752010430,\t-0.548203506685938980,\t-0.548245323249358710,\t-0.548287138442165590,\t-0.548328952264254270,\t\n-0.548370764715520490,\t-0.548412575795859890,\t-0.548454385505168120,\t-0.548496193843340030,\t-0.548538000810271490,\t-0.548579806405858020,\t-0.548621610629995260,\t-0.548663413482578190,\t\n-0.548705214963502550,\t-0.548747015072663880,\t-0.548788813809958140,\t-0.548830611175279870,\t-0.548872407168525140,\t-0.548914201789589380,\t-0.548955995038368450,\t-0.548997786914757200,\t\n-0.549039577418651390,\t-0.549081366549947100,\t-0.549123154308539090,\t-0.549164940694323090,\t-0.549206725707194750,\t-0.549248509347049940,\t-0.549290291613783620,\t-0.549332072507291440,\t\n-0.549373852027469130,\t-0.549415630174212470,\t-0.549457406947416520,\t-0.549499182346976920,\t-0.549540956372789440,\t-0.549582729024749920,\t-0.549624500302753230,\t-0.549666270206695230,\t\n-0.549708038736471560,\t-0.549749805891978190,\t-0.549791571673109990,\t-0.549833336079762810,\t-0.549875099111832630,\t-0.549916860769214420,\t-0.549958621051803930,\t-0.550000379959497020,\t\n-0.550042137492189440,\t-0.550083893649776170,\t-0.550125648432153170,\t-0.550167401839216090,\t-0.550209153870860780,\t-0.550250904526982330,\t-0.550292653807476500,\t-0.550334401712239130,\t\n-0.550376148241166100,\t-0.550417893394152260,\t-0.550459637171093810,\t-0.550501379571886160,\t-0.550543120596425520,\t-0.550584860244606620,\t-0.550626598516325670,\t-0.550668335411478530,\t\n-0.550710070929960160,\t-0.550751805071666660,\t-0.550793537836493650,\t-0.550835269224337120,\t-0.550876999235092150,\t-0.550918727868654590,\t-0.550960455124920200,\t-0.551002181003785060,\t\n-0.551043905505144150,\t-0.551085628628893430,\t-0.551127350374928550,\t-0.551169070743145810,\t-0.551210789733439950,\t-0.551252507345707190,\t-0.551294223579843030,\t-0.551335938435743800,\t\n-0.551377651913304350,\t-0.551419364012420750,\t-0.551461074732988670,\t-0.551502784074904380,\t-0.551544492038062660,\t-0.551586198622359800,\t-0.551627903827691780,\t-0.551669607653953560,\t\n-0.551711310101041460,\t-0.551753011168851000,\t-0.551794710857278380,\t-0.551836409166218570,\t-0.551878106095567870,\t-0.551919801645221810,\t-0.551961495815076590,\t-0.552003188605027280,\t\n-0.552044880014970100,\t-0.552086570044800660,\t-0.552128258694415060,\t-0.552169945963708610,\t-0.552211631852577160,\t-0.552253316360916680,\t-0.552294999488623370,\t-0.552336681235592100,\t\n-0.552378361601719160,\t-0.552420040586900640,\t-0.552461718191031630,\t-0.552503394414008420,\t-0.552545069255726660,\t-0.552586742716082550,\t-0.552628414794971270,\t-0.552670085492289020,\t\n-0.552711754807931440,\t-0.552753422741794950,\t-0.552795089293774410,\t-0.552836754463766230,\t-0.552878418251666170,\t-0.552920080657370420,\t-0.552961741680774050,\t-0.553003401321773390,\t\n-0.553045059580264180,\t-0.553086716456142710,\t-0.553128371949304090,\t-0.553170026059644600,\t-0.553211678787060350,\t-0.553253330131446510,\t-0.553294980092699400,\t-0.553336628670714760,\t\n-0.553378275865389010,\t-0.553419921676617130,\t-0.553461566104295530,\t-0.553503209148319960,\t-0.553544850808586730,\t-0.553586491084991030,\t-0.553628129977429050,\t-0.553669767485796770,\t\n-0.553711403609990490,\t-0.553753038349905190,\t-0.553794671705437500,\t-0.553836303676482960,\t-0.553877934262938080,\t-0.553919563464698060,\t-0.553961191281659100,\t-0.554002817713717070,\t\n-0.554044442760768470,\t-0.554086066422708410,\t-0.554127688699433070,\t-0.554169309590838990,\t-0.554210929096821240,\t-0.554252547217276130,\t-0.554294163952099740,\t-0.554335779301188160,\t\n-0.554377393264436910,\t-0.554419005841742090,\t-0.554460617032999760,\t-0.554502226838106350,\t-0.554543835256956940,\t-0.554585442289447840,\t-0.554627047935475240,\t-0.554668652194935440,\t\n-0.554710255067723530,\t-0.554751856553736040,\t-0.554793456652868940,\t-0.554835055365018540,\t-0.554876652690080130,\t-0.554918248627950030,\t-0.554959843178524760,\t-0.555001436341699410,\t\n-0.555043028117370610,\t-0.555084618505434110,\t-0.555126207505786560,\t-0.555167795118323040,\t-0.555209381342940070,\t-0.555250966179533620,\t-0.555292549628000120,\t-0.555334131688234870,\t\n-0.555375712360134280,\t-0.555417291643594440,\t-0.555458869538511760,\t-0.555500446044781440,\t-0.555542021162300110,\t-0.555583594890963760,\t-0.555625167230668680,\t-0.555666738181310400,\t\n-0.555708307742785230,\t-0.555749875914989700,\t-0.555791442697818990,\t-0.555833008091169760,\t-0.555874572094938070,\t-0.555916134709020240,\t-0.555957695933311680,\t-0.555999255767708920,\t\n-0.556040814212108050,\t-0.556082371266405470,\t-0.556123926930496610,\t-0.556165481204278000,\t-0.556207034087645600,\t-0.556248585580496060,\t-0.556290135682724560,\t-0.556331684394227870,\t\n-0.556373231714901830,\t-0.556414777644643200,\t-0.556456322183347170,\t-0.556497865330910390,\t-0.556539407087229270,\t-0.556580947452199330,\t-0.556622486425716990,\t-0.556664024007678340,\t\n-0.556705560197980120,\t-0.556747094996517530,\t-0.556788628403187320,\t-0.556830160417885470,\t-0.556871691040508600,\t-0.556913220270952140,\t-0.556954748109112610,\t-0.556996274554886210,\t\n-0.557037799608169570,\t-0.557079323268858010,\t-0.557120845536848150,\t-0.557162366412036090,\t-0.557203885894318570,\t-0.557245403983591010,\t-0.557286920679749830,\t-0.557328435982691440,\t\n-0.557369949892312260,\t-0.557411462408507810,\t-0.557452973531174840,\t-0.557494483260209670,\t-0.557535991595508040,\t-0.557577498536966360,\t-0.557619004084480950,\t-0.557660508237948330,\t\n-0.557702010997264130,\t-0.557743512362324890,\t-0.557785012333026910,\t-0.557826510909266830,\t-0.557868008090939950,\t-0.557909503877943140,\t-0.557950998270172470,\t-0.557992491267524810,\t\n-0.558033982869895470,\t-0.558075473077181190,\t-0.558116961889278280,\t-0.558158449306083270,\t-0.558199935327491790,\t-0.558241419953400490,\t-0.558282903183705990,\t-0.558324385018303840,\t\n-0.558365865457090770,\t-0.558407344499962990,\t-0.558448822146817240,\t-0.558490298397549050,\t-0.558531773252055160,\t-0.558573246710231790,\t-0.558614718771975770,\t-0.558656189437182430,\t\n-0.558697658705748720,\t-0.558739126577570850,\t-0.558780593052545570,\t-0.558822058130568400,\t-0.558863521811536090,\t-0.558904984095344950,\t-0.558946444981891720,\t-0.558987904471071940,\t\n-0.559029362562782570,\t-0.559070819256920040,\t-0.559112274553380080,\t-0.559153728452059460,\t-0.559195180952854590,\t-0.559236632055662100,\t-0.559278081760377630,\t-0.559319530066897940,\t\n-0.559360976975119550,\t-0.559402422484938990,\t-0.559443866596252000,\t-0.559485309308955350,\t-0.559526750622945430,\t-0.559568190538118900,\t-0.559609629054371730,\t-0.559651066171600320,\t\n-0.559692501889701320,\t-0.559733936208571480,\t-0.559775369128106330,\t-0.559816800648202830,\t-0.559858230768757290,\t-0.559899659489666580,\t-0.559941086810826330,\t-0.559982512732133290,\t\n-0.560023937253484430,\t-0.560065360374775390,\t-0.560106782095902810,\t-0.560148202416763440,\t-0.560189621337253810,\t-0.560231038857269770,\t-0.560272454976708190,\t-0.560313869695465480,\t\n-0.560355283013438400,\t-0.560396694930522800,\t-0.560438105446615430,\t-0.560479514561612820,\t-0.560520922275411730,\t-0.560562328587908000,\t-0.560603733498998500,\t-0.560645137008579650,\t\n-0.560686539116548310,\t-0.560727939822800230,\t-0.560769339127232260,\t-0.560810737029741380,\t-0.560852133530223340,\t-0.560893528628574890,\t-0.560934922324692660,\t-0.560976314618473420,\t\n-0.561017705509813110,\t-0.561059094998608510,\t-0.561100483084756130,\t-0.561141869768152950,\t-0.561183255048694710,\t-0.561224638926278390,\t-0.561266021400800400,\t-0.561307402472157820,\t\n-0.561348782140246190,\t-0.561390160404962810,\t-0.561431537266203870,\t-0.561472912723866570,\t-0.561514286777846540,\t-0.561555659428040870,\t-0.561597030674346300,\t-0.561638400516658920,\t\n-0.561679768954875370,\t-0.561721135988892510,\t-0.561762501618607190,\t-0.561803865843915280,\t-0.561845228664713650,\t-0.561886590080898920,\t-0.561927950092368180,\t-0.561969308699017070,\t\n-0.562010665900742780,\t-0.562052021697441840,\t-0.562093376089011110,\t-0.562134729075346670,\t-0.562176080656345390,\t-0.562217430831903900,\t-0.562258779601919170,\t-0.562300126966287170,\t\n-0.562341472924904770,\t-0.562382817477669160,\t-0.562424160624476090,\t-0.562465502365222640,\t-0.562506842699805330,\t-0.562548181628121370,\t-0.562589519150066610,\t-0.562630855265538020,\t\n-0.562672189974432360,\t-0.562713523276646480,\t-0.562754855172076460,\t-0.562796185660619400,\t-0.562837514742171810,\t-0.562878842416630780,\t-0.562920168683892270,\t-0.562961493543853390,\t\n-0.563002816996410640,\t-0.563044139041461330,\t-0.563085459678901330,\t-0.563126778908627610,\t-0.563168096730537030,\t-0.563209413144526440,\t-0.563250728150492040,\t-0.563292041748330810,\t\n-0.563333353937939930,\t-0.563374664719215160,\t-0.563415974092053800,\t-0.563457282056352480,\t-0.563498588612008300,\t-0.563539893758917330,\t-0.563581197496976550,\t-0.563622499826082920,\t\n-0.563663800746133310,\t-0.563705100257023810,\t-0.563746398358651590,\t-0.563787695050913420,\t-0.563828990333706260,\t-0.563870284206926310,\t-0.563911576670470760,\t-0.563952867724236140,\t\n-0.563994157368119750,\t-0.564035445602017570,\t-0.564076732425826900,\t-0.564118017839444600,\t-0.564159301842766970,\t-0.564200584435691100,\t-0.564241865618113740,\t-0.564283145389932180,\t\n-0.564324423751042300,\t-0.564365700701341290,\t-0.564406976240726110,\t-0.564448250369093850,\t-0.564489523086340590,\t-0.564530794392363640,\t-0.564572064287059530,\t-0.564613332770325660,\t\n-0.564654599842058120,\t-0.564695865502154120,\t-0.564737129750510490,\t-0.564778392587024340,\t-0.564819654011591730,\t-0.564860914024110090,\t-0.564902172624476620,\t-0.564943429812587270,\t\n-0.564984685588339360,\t-0.565025939951629640,\t-0.565067192902355520,\t-0.565108444440413080,\t-0.565149694565699520,\t-0.565190943278111700,\t-0.565232190577546810,\t-0.565273436463901160,\t\n-0.565314680937071930,\t-0.565355923996956000,\t-0.565397165643450660,\t-0.565438405876452000,\t-0.565479644695857320,\t-0.565520882101563480,\t-0.565562118093467790,\t-0.565603352671466550,\t\n-0.565644585835456850,\t-0.565685817585335760,\t-0.565727047921000370,\t-0.565768276842347100,\t-0.565809504349273130,\t-0.565850730441675780,\t-0.565891955119451120,\t-0.565933178382496680,\t\n-0.565974400230709220,\t-0.566015620663986250,\t-0.566056839682223760,\t-0.566098057285319150,\t-0.566139273473169500,\t-0.566180488245671910,\t-0.566221701602722780,\t-0.566262913544219430,\t\n-0.566304124070058810,\t-0.566345333180138240,\t-0.566386540874353920,\t-0.566427747152603240,\t-0.566468952014783200,\t-0.566510155460791200,\t-0.566551357490523430,\t-0.566592558103877320,\t\n-0.566633757300750050,\t-0.566674955081038160,\t-0.566716151444638830,\t-0.566757346391449040,\t-0.566798539921366310,\t-0.566839732034286840,\t-0.566880922730108150,\t-0.566922112008727000,\t\n-0.566963299870041020,\t-0.567004486313946400,\t-0.567045671340340560,\t-0.567086854949120590,\t-0.567128037140183780,\t-0.567169217913426560,\t-0.567210397268746340,\t-0.567251575206040080,\t\n-0.567292751725205210,\t-0.567333926826138150,\t-0.567375100508736190,\t-0.567416272772896970,\t-0.567457443618516580,\t-0.567498613045492650,\t-0.567539781053722160,\t-0.567580947643102630,\t\n-0.567622112813530370,\t-0.567663276564902790,\t-0.567704438897116970,\t-0.567745599810070440,\t-0.567786759303659630,\t-0.567827917377781820,\t-0.567869074032334330,\t-0.567910229267214460,\t\n-0.567951383082318630,\t-0.567992535477544360,\t-0.568033686452788730,\t-0.568074836007949280,\t-0.568115984142922300,\t-0.568157130857605440,\t-0.568198276151896110,\t-0.568239420025690720,\t\n-0.568280562478886810,\t-0.568321703511381450,\t-0.568362843123072170,\t-0.568403981313855500,\t-0.568445118083628850,\t-0.568486253432289310,\t-0.568527387359734630,\t-0.568568519865861100,\t\n-0.568609650950566260,\t-0.568650780613747190,\t-0.568691908855301630,\t-0.568733035675125900,\t-0.568774161073117620,\t-0.568815285049173890,\t-0.568856407603192340,\t-0.568897528735069380,\t\n-0.568938648444702650,\t-0.568979766731989240,\t-0.569020883596826900,\t-0.569061999039111810,\t-0.569103113058741840,\t-0.569144225655614400,\t-0.569185336829626130,\t-0.569226446580674450,\t\n-0.569267554908656550,\t-0.569308661813470280,\t-0.569349767295011970,\t-0.569390871353179120,\t-0.569431973987869270,\t-0.569473075198979720,\t-0.569514174986407110,\t-0.569555273350049180,\t\n-0.569596370289802920,\t-0.569637465805566180,\t-0.569678559897235480,\t-0.569719652564708250,\t-0.569760743807882000,\t-0.569801833626654150,\t-0.569842922020921460,\t-0.569884008990581340,\t\n-0.569925094535531640,\t-0.569966178655668900,\t-0.570007261350890640,\t-0.570048342621094160,\t-0.570089422466177220,\t-0.570130500886036450,\t-0.570171577880569380,\t-0.570212653449673310,\t\n-0.570253727593246110,\t-0.570294800311184070,\t-0.570335871603385170,\t-0.570376941469746490,\t-0.570418009910165890,\t-0.570459076924539790,\t-0.570500142512766150,\t-0.570541206674742060,\t\n-0.570582269410365270,\t-0.570623330719532530,\t-0.570664390602141470,\t-0.570705449058089730,\t-0.570746506087274060,\t-0.570787561689592100,\t-0.570828615864941270,\t-0.570869668613219190,\t\n-0.570910719934322630,\t-0.570951769828149210,\t-0.570992818294596470,\t-0.571033865333562040,\t-0.571074910944942450,\t-0.571115955128635670,\t-0.571156997884539000,\t-0.571198039212550190,\t\n-0.571239079112566000,\t-0.571280117584484050,\t-0.571321154628201770,\t-0.571362190243617010,\t-0.571403224430626410,\t-0.571444257189127720,\t-0.571485288519018360,\t-0.571526318420196300,\t\n-0.571567346892557950,\t-0.571608373936001170,\t-0.571649399550423930,\t-0.571690423735722760,\t-0.571731446491795640,\t-0.571772467818539850,\t-0.571813487715853160,\t-0.571854506183632540,\t\n-0.571895523221775500,\t-0.571936538830179810,\t-0.571977553008742980,\t-0.572018565757361990,\t-0.572059577075934580,\t-0.572100586964358280,\t-0.572141595422530850,\t-0.572182602450349020,\t\n-0.572223608047710660,\t-0.572264612214513410,\t-0.572305614950654910,\t-0.572346616256032000,\t-0.572387616130542560,\t-0.572428614574084450,\t-0.572469611586554410,\t-0.572510607167850290,\t\n-0.572551601317869750,\t-0.572592594036510530,\t-0.572633585323669480,\t-0.572674575179244470,\t-0.572715563603133030,\t-0.572756550595233000,\t-0.572797536155441380,\t-0.572838520283655780,\t\n-0.572879502979773860,\t-0.572920484243693570,\t-0.572961464075311790,\t-0.573002442474526250,\t-0.573043419441234600,\t-0.573084394975334810,\t-0.573125369076723730,\t-0.573166341745299120,\t\n-0.573207312980959060,\t-0.573248282783600400,\t-0.573289251153120900,\t-0.573330218089418420,\t-0.573371183592390700,\t-0.573412147661934600,\t-0.573453110297948210,\t-0.573494071500329050,\t\n-0.573535031268975090,\t-0.573575989603783090,\t-0.573616946504651230,\t-0.573657901971476920,\t-0.573698856004158260,\t-0.573739808602591990,\t-0.573780759766676310,\t-0.573821709496308730,\t\n-0.573862657791387230,\t-0.573903604651808670,\t-0.573944550077471140,\t-0.573985494068272260,\t-0.574026436624110010,\t-0.574067377744881260,\t-0.574108317430484070,\t-0.574149255680816540,\t\n-0.574190192495775410,\t-0.574231127875258870,\t-0.574272061819164460,\t-0.574312994327390250,\t-0.574353925399833210,\t-0.574394855036391320,\t-0.574435783236962320,\t-0.574476710001444290,\t\n-0.574517635329733990,\t-0.574558559221729710,\t-0.574599481677328990,\t-0.574640402696429910,\t-0.574681322278929540,\t-0.574722240424725750,\t-0.574763157133716400,\t-0.574804072405799560,\t\n-0.574844986240872210,\t-0.574885898638832330,\t-0.574926809599578090,\t-0.574967719123006480,\t-0.575008627209015470,\t-0.575049533857503010,\t-0.575090439068366990,\t-0.575131342841504580,\t\n-0.575172245176813760,\t-0.575213146074192380,\t-0.575254045533538430,\t-0.575294943554749080,\t-0.575335840137722320,\t-0.575376735282356000,\t-0.575417628988548200,\t-0.575458521256195900,\t\n-0.575499412085197390,\t-0.575540301475450320,\t-0.575581189426852880,\t-0.575622075939302040,\t-0.575662961012695980,\t-0.575703844646933030,\t-0.575744726841910030,\t-0.575785607597525170,\t\n-0.575826486913676330,\t-0.575867364790261570,\t-0.575908241227178100,\t-0.575949116224323990,\t-0.575989989781597100,\t-0.576030861898895630,\t-0.576071732576116660,\t-0.576112601813158380,\t\n-0.576153469609918530,\t-0.576194335966295320,\t-0.576235200882186050,\t-0.576276064357488680,\t-0.576316926392101190,\t-0.576357786985921660,\t-0.576398646138847390,\t-0.576439503850776470,\t\n-0.576480360121607190,\t-0.576521214951236650,\t-0.576562068339563030,\t-0.576602920286484190,\t-0.576643770791898550,\t-0.576684619855702960,\t-0.576725467477795960,\t-0.576766313658075180,\t\n-0.576807158396439150,\t-0.576848001692784720,\t-0.576888843547010310,\t-0.576929683959013780,\t-0.576970522928693440,\t-0.577011360455946360,\t-0.577052196540670970,\t-0.577093031182765000,\t\n-0.577133864382126880,\t-0.577174696138653800,\t-0.577215526452243830,\t-0.577256355322795180,\t-0.577297182750205920,\t-0.577338008734373350,\t-0.577378833275195790,\t-0.577419656372571420,\t\n-0.577460478026397660,\t-0.577501298236572590,\t-0.577542117002994400,\t-0.577582934325561180,\t-0.577623750204170340,\t-0.577664564638720070,\t-0.577705377629108450,\t-0.577746189175233680,\t\n-0.577786999276993170,\t-0.577827807934285010,\t-0.577868615147007490,\t-0.577909420915058700,\t-0.577950225238336060,\t-0.577991028116737750,\t-0.578031829550161970,\t-0.578072629538506910,\t\n-0.578113428081669990,\t-0.578154225179549400,\t-0.578195020832043660,\t-0.578235815039050080,\t-0.578276607800466860,\t-0.578317399116192180,\t-0.578358188986124340,\t-0.578398977410160660,\t\n-0.578439764388199550,\t-0.578480549920138980,\t-0.578521334005877460,\t-0.578562116645312210,\t-0.578602897838341730,\t-0.578643677584863900,\t-0.578684455884777350,\t-0.578725232737979270,\t\n-0.578766008144368070,\t-0.578806782103841840,\t-0.578847554616299000,\t-0.578888325681636950,\t-0.578929095299754120,\t-0.578969863470548910,\t-0.579010630193918630,\t-0.579051395469761810,\t\n-0.579092159297976530,\t-0.579132921678461090,\t-0.579173682611113130,\t-0.579214442095830840,\t-0.579255200132512530,\t-0.579295956721056600,\t-0.579336711861360380,\t-0.579377465553322370,\t\n-0.579418217796840660,\t-0.579458968591813780,\t-0.579499717938139150,\t-0.579540465835715280,\t-0.579581212284440150,\t-0.579621957284212400,\t-0.579662700834929320,\t-0.579703442936489570,\t\n-0.579744183588791210,\t-0.579784922791732770,\t-0.579825660545211670,\t-0.579866396849126330,\t-0.579907131703375380,\t-0.579947865107856340,\t-0.579988597062467530,\t-0.580029327567107230,\t\n-0.580070056621673990,\t-0.580110784226065320,\t-0.580151510380179650,\t-0.580192235083915150,\t-0.580232958337170480,\t-0.580273680139843040,\t-0.580314400491831360,\t-0.580355119393033750,\t\n-0.580395836843348610,\t-0.580436552842673590,\t-0.580477267390907210,\t-0.580517980487947560,\t-0.580558692133693380,\t-0.580599402328042190,\t-0.580640111070892420,\t-0.580680818362142690,\t\n-0.580721524201690650,\t-0.580762228589434710,\t-0.580802931525273180,\t-0.580843633009104800,\t-0.580884333040826870,\t-0.580925031620338150,\t-0.580965728747536820,\t-0.581006424422321640,\t\n-0.581047118644589910,\t-0.581087811414240480,\t-0.581128502731171450,\t-0.581169192595281550,\t-0.581209881006468310,\t-0.581250567964630370,\t-0.581291253469665930,\t-0.581331937521473830,\t\n-0.581372620119951500,\t-0.581413301264997570,\t-0.581453980956510800,\t-0.581494659194388700,\t-0.581535335978530020,\t-0.581576011308832850,\t-0.581616685185196160,\t-0.581657357607517360,\t\n-0.581698028575695080,\t-0.581738698089627860,\t-0.581779366149214110,\t-0.581820032754351680,\t-0.581860697904939220,\t-0.581901361600874910,\t-0.581942023842057620,\t-0.581982684628384870,\t\n-0.582023343959755410,\t-0.582064001836067550,\t-0.582104658257220130,\t-0.582145313223110690,\t-0.582185966733637870,\t-0.582226618788700630,\t-0.582267269388196400,\t-0.582307918532024020,\t\n-0.582348566220081910,\t-0.582389212452268600,\t-0.582429857228482060,\t-0.582470500548620710,\t-0.582511142412583280,\t-0.582551782820268200,\t-0.582592421771573440,\t-0.582633059266397520,\t\n-0.582673695304638970,\t-0.582714329886196540,\t-0.582754963010967960,\t-0.582795594678852000,\t-0.582836224889746960,\t-0.582876853643551800,\t-0.582917480940164160,\t-0.582958106779482790,\t\n-0.582998731161406100,\t-0.583039354085832960,\t-0.583079975552661110,\t-0.583120595561789300,\t-0.583161214113116390,\t-0.583201831206540120,\t-0.583242446841959140,\t-0.583283061019272190,\t\n-0.583323673738377790,\t-0.583364284999174030,\t-0.583404894801559440,\t-0.583445503145432640,\t-0.583486110030692400,\t-0.583526715457236560,\t-0.583567319424963980,\t-0.583607921933773090,\t\n-0.583648522983562620,\t-0.583689122574230670,\t-0.583729720705675750,\t-0.583770317377796610,\t-0.583810912590492110,\t-0.583851506343659900,\t-0.583892098637198930,\t-0.583932689471007960,\t\n-0.583973278844985070,\t-0.584013866759028890,\t-0.584054453213038060,\t-0.584095038206911440,\t-0.584135621740547010,\t-0.584176203813843390,\t-0.584216784426699220,\t-0.584257363579013590,\t\n-0.584297941270684130,\t-0.584338517501609700,\t-0.584379092271689160,\t-0.584419665580821150,\t-0.584460237428903630,\t-0.584500807815835470,\t-0.584541376741515410,\t-0.584581944205842200,\t\n-0.584622510208713700,\t-0.584663074750028990,\t-0.584703637829687040,\t-0.584744199447585490,\t-0.584784759603623530,\t-0.584825318297699680,\t-0.584865875529712810,\t-0.584906431299560990,\t\n-0.584946985607142980,\t-0.584987538452357620,\t-0.585028089835103680,\t-0.585068639755279230,\t-0.585109188212783130,\t-0.585149735207514120,\t-0.585190280739371070,\t-0.585230824808252060,\t\n-0.585271367414055830,\t-0.585311908556681250,\t-0.585352448236027280,\t-0.585392986451991890,\t-0.585433523204473950,\t-0.585474058493372200,\t-0.585514592318585710,\t-0.585555124680012360,\t\n-0.585595655577551110,\t-0.585636185011101150,\t-0.585676712980560450,\t-0.585717239485827880,\t-0.585757764526802170,\t-0.585798288103382530,\t-0.585838810215466690,\t-0.585879330862953960,\t\n-0.585919850045742760,\t-0.585960367763732390,\t-0.586000884016820710,\t-0.586041398804906800,\t-0.586081912127889400,\t-0.586122423985667610,\t-0.586162934378139380,\t-0.586203443305203910,\t\n-0.586243950766759720,\t-0.586284456762706020,\t-0.586324961292940870,\t-0.586365464357363250,\t-0.586405965955872350,\t-0.586446466088366150,\t-0.586486964754743820,\t-0.586527461954904130,\t\n-0.586567957688746030,\t-0.586608451956167730,\t-0.586648944757068300,\t-0.586689436091346610,\t-0.586729925958901610,\t-0.586770414359631400,\t-0.586810901293435160,\t-0.586851386760211650,\t\n-0.586891870759860160,\t-0.586932353292278440,\t-0.586972834357366020,\t-0.587013313955021430,\t-0.587053792085143860,\t-0.587094268747631600,\t-0.587134743942383520,\t-0.587175217669299030,\t\n-0.587215689928276110,\t-0.587256160719213940,\t-0.587296630042011380,\t-0.587337097896567630,\t-0.587377564282780760,\t-0.587418029200549970,\t-0.587458492649774120,\t-0.587498954630352400,\t\n-0.587539415142182890,\t-0.587579874185164890,\t-0.587620331759197260,\t-0.587660787864179080,\t-0.587701242500008550,\t-0.587741695666584960,\t-0.587782147363807070,\t-0.587822597591574290,\t\n-0.587863046349784590,\t-0.587903493638337270,\t-0.587943939457131530,\t-0.587984383806065660,\t-0.588024826685038860,\t-0.588065268093949880,\t-0.588105708032698130,\t-0.588146146501181800,\t\n-0.588186583499300090,\t-0.588227019026951850,\t-0.588267453084036500,\t-0.588307885670452110,\t-0.588348316786098110,\t-0.588388746430873240,\t-0.588429174604676810,\t-0.588469601307407110,\t\n-0.588510026538963450,\t-0.588550450299244690,\t-0.588590872588150240,\t-0.588631293405578180,\t-0.588671712751427930,\t-0.588712130625598350,\t-0.588752547027988850,\t-0.588792961958497510,\t\n-0.588833375417023850,\t-0.588873787403467190,\t-0.588914197917725590,\t-0.588954606959698480,\t-0.588995014529284930,\t-0.589035420626384140,\t-0.589075825250894520,\t-0.589116228402715270,\t\n-0.589156630081745460,\t-0.589197030287884500,\t-0.589237429021030490,\t-0.589277826281083050,\t-0.589318222067940930,\t-0.589358616381503660,\t-0.589399009221669430,\t-0.589439400588337770,\t\n-0.589479790481407530,\t-0.589520178900778240,\t-0.589560565846348080,\t-0.589600951318016490,\t-0.589641335315682970,\t-0.589681717839245720,\t-0.589722098888604160,\t-0.589762478463657370,\t\n-0.589802856564304760,\t-0.589843233190444630,\t-0.589883608341976400,\t-0.589923982018799140,\t-0.589964354220812280,\t-0.590004724947914230,\t-0.590045094200004280,\t-0.590085461976981640,\t\n-0.590125828278745710,\t-0.590166193105194910,\t-0.590206556456228550,\t-0.590246918331745810,\t-0.590287278731646210,\t-0.590327637655827960,\t-0.590367995104190690,\t-0.590408351076633700,\t\n-0.590448705573055510,\t-0.590489058593355540,\t-0.590529410137432990,\t-0.590569760205187260,\t-0.590610108796516650,\t-0.590650455911320930,\t-0.590690801549499040,\t-0.590731145710950420,\t\n-0.590771488395573700,\t-0.590811829603268170,\t-0.590852169333933030,\t-0.590892507587467920,\t-0.590932844363771140,\t-0.590973179662742210,\t-0.591013513484280440,\t-0.591053845828285130,\t\n-0.591094176694654920,\t-0.591134506083289210,\t-0.591174833994087320,\t-0.591215160426948550,\t-0.591255485381771640,\t-0.591295808858456010,\t-0.591336130856901180,\t-0.591376451377005790,\t\n-0.591416770418669140,\t-0.591457087981790530,\t-0.591497404066269720,\t-0.591537718672004890,\t-0.591578031798895900,\t-0.591618343446841720,\t-0.591658653615741990,\t-0.591698962305495460,\t\n-0.591739269516001310,\t-0.591779575247159180,\t-0.591819879498868380,\t-0.591860182271027440,\t-0.591900483563536190,\t-0.591940783376293630,\t-0.591981081709199500,\t-0.592021378562152420,\t\n-0.592061673935051710,\t-0.592101967827797340,\t-0.592142260240287600,\t-0.592182551172422130,\t-0.592222840624100360,\t-0.592263128595221900,\t-0.592303415085685180,\t-0.592343700095390060,\t\n-0.592383983624235500,\t-0.592424265672121480,\t-0.592464546238946400,\t-0.592504825324609910,\t-0.592545102929011410,\t-0.592585379052050440,\t-0.592625653693625740,\t-0.592665926853636950,\t\n-0.592706198531983250,\t-0.592746468728564400,\t-0.592786737443279140,\t-0.592827004676026890,\t-0.592867270426707500,\t-0.592907534695219730,\t-0.592947797481462980,\t-0.592988058785336780,\t\n-0.593028318606740770,\t-0.593068576945573690,\t-0.593108833801735070,\t-0.593149089175124430,\t-0.593189343065641310,\t-0.593229595473184550,\t-0.593269846397653900,\t-0.593310095838948450,\t\n-0.593350343796968270,\t-0.593390590271611780,\t-0.593430835262778840,\t-0.593471078770368870,\t-0.593511320794281480,\t-0.593551561334415450,\t-0.593591800390670610,\t-0.593632037962946500,\t\n-0.593672274051141980,\t-0.593712508655156790,\t-0.593752741774890350,\t-0.593792973410242400,\t-0.593833203561111580,\t-0.593873432227397860,\t-0.593913659409000540,\t-0.593953885105819370,\t\n-0.593994109317753200,\t-0.594034332044701690,\t-0.594074553286564330,\t-0.594114773043241010,\t-0.594154991314630450,\t-0.594195208100632310,\t-0.594235423401146210,\t-0.594275637216071910,\t\n-0.594315849545308140,\t-0.594356060388754660,\t-0.594396269746311100,\t-0.594436477617877320,\t-0.594476684003351850,\t-0.594516888902634770,\t-0.594557092315625700,\t-0.594597294242223630,\t\n-0.594637494682328400,\t-0.594677693635839330,\t-0.594717891102656380,\t-0.594758087082678410,\t-0.594798281575805170,\t-0.594838474581936170,\t-0.594878666100971510,\t-0.594918856132809700,\t\n-0.594959044677350720,\t-0.594999231734494200,\t-0.595039417304140010,\t-0.595079601386186760,\t-0.595119783980534670,\t-0.595159965087083020,\t-0.595200144705731900,\t-0.595240322836379950,\t\n-0.595280499478927250,\t-0.595320674633273650,\t-0.595360848299318010,\t-0.595401020476960310,\t-0.595441191166099950,\t-0.595481360366637010,\t-0.595521528078470360,\t-0.595561694301499860,\t\n-0.595601859035625130,\t-0.595642022280746140,\t-0.595682184036761650,\t-0.595722344303571740,\t-0.595762503081076030,\t-0.595802660369174290,\t-0.595842816167765690,\t-0.595882970476749980,\t\n-0.595923123296026810,\t-0.595963274625496250,\t-0.596003424465057160,\t-0.596043572814609400,\t-0.596083719674053160,\t-0.596123865043287180,\t-0.596164008922211660,\t-0.596204151310726020,\t\n-0.596244292208730430,\t-0.596284431616123660,\t-0.596324569532805880,\t-0.596364705958676740,\t-0.596404840893636100,\t-0.596444974337583030,\t-0.596485106290417510,\t-0.596525236752039170,\t\n-0.596565365722348200,\t-0.596605493201243340,\t-0.596645619188624910,\t-0.596685743684392310,\t-0.596725866688445740,\t-0.596765988200684160,\t-0.596806108221007550,\t-0.596846226749315760,\t\n-0.596886343785508640,\t-0.596926459329485400,\t-0.596966573381146000,\t-0.597006685940390520,\t-0.597046797007117940,\t-0.597086906581228430,\t-0.597127014662621640,\t-0.597167121251197640,\t\n-0.597207226346855410,\t-0.597247329949495250,\t-0.597287432059016690,\t-0.597327532675319910,\t-0.597367631798303990,\t-0.597407729427868910,\t-0.597447825563914630,\t-0.597487920206341010,\t\n-0.597528013355047350,\t-0.597568105009933510,\t-0.597608195170899580,\t-0.597648283837845410,\t-0.597688371010670180,\t-0.597728456689273990,\t-0.597768540873557130,\t-0.597808623563418460,\t\n-0.597848704758758290,\t-0.597888784459476350,\t-0.597928862665472740,\t-0.597968939376646750,\t-0.598009014592898240,\t-0.598049088314127290,\t-0.598089160540233980,\t-0.598129231271117390,\t\n-0.598169300506677710,\t-0.598209368246814810,\t-0.598249434491428870,\t-0.598289499240418960,\t-0.598329562493685300,\t-0.598369624251127720,\t-0.598409684512646530,\t-0.598449743278140600,\t\n-0.598489800547510440,\t-0.598529856320656140,\t-0.598569910597476770,\t-0.598609963377872640,\t-0.598650014661743610,\t-0.598690064448989980,\t-0.598730112739510710,\t-0.598770159533206230,\t\n-0.598810204829976270,\t-0.598850248629721250,\t-0.598890290932340250,\t-0.598930331737733470,\t-0.598970371045800860,\t-0.599010408856442740,\t-0.599050445169558190,\t-0.599090479985047500,\t\n-0.599130513302810640,\t-0.599170545122747920,\t-0.599210575444758420,\t-0.599250604268742440,\t-0.599290631594600390,\t-0.599330657422231350,\t-0.599370681751535740,\t-0.599410704582413300,\t\n-0.599450725914764560,\t-0.599490745748488600,\t-0.599530764083485820,\t-0.599570780919656100,\t-0.599610796256899840,\t-0.599650810095116120,\t-0.599690822434205460,\t-0.599730833274067730,\t\n-0.599770842614603230,\t-0.599810850455711250,\t-0.599850856797292220,\t-0.599890861639246100,\t-0.599930864981473080,\t-0.599970866823872570,\t-0.600010867166344890,\t-0.600050866008789980,\t\n-0.600090863351108390,\t-0.600130859193199200,\t-0.600170853534962910,\t-0.600210846376299730,\t-0.600250837717109190,\t-0.600290827557291570,\t-0.600330815896746860,\t-0.600370802735375350,\t\n-0.600410788073076570,\t-0.600450771909750820,\t-0.600490754245298190,\t-0.600530735079618960,\t-0.600570714412612560,\t-0.600610692244179400,\t-0.600650668574219450,\t-0.600690643402633230,\t\n-0.600730616729320040,\t-0.600770588554180310,\t-0.600810558877114100,\t-0.600850527698021940,\t-0.600890495016802920,\t-0.600930460833357770,\t-0.600970425147586810,\t-0.601010387959389440,\t\n-0.601050349268666180,\t-0.601090309075316910,\t-0.601130267379242240,\t-0.601170224180341610,\t-0.601210179478515410,\t-0.601250133273663720,\t-0.601290085565687080,\t-0.601330036354484900,\t\n-0.601369985639957580,\t-0.601409933422005330,\t-0.601449879700528540,\t-0.601489824475426760,\t-0.601529767746600390,\t-0.601569709513949610,\t-0.601609649777374970,\t-0.601649588536775750,\t\n-0.601689525792052590,\t-0.601729461543106030,\t-0.601769395789835460,\t-0.601809328532141310,\t-0.601849259769923870,\t-0.601889189503083680,\t-0.601929117731520140,\t-0.601969044455133770,\t\n-0.602008969673824890,\t-0.602048893387493790,\t-0.602088815596040220,\t-0.602128736299364590,\t-0.602168655497367090,\t-0.602208573189948250,\t-0.602248489377007700,\t-0.602288404058445970,\t\n-0.602328317234163140,\t-0.602368228904059940,\t-0.602408139068035810,\t-0.602448047725991250,\t-0.602487954877826690,\t-0.602527860523442540,\t-0.602567764662738310,\t-0.602607667295614770,\t\n-0.602647568421972420,\t-0.602687468041710690,\t-0.602727366154730440,\t-0.602767262760931620,\t-0.602807157860215100,\t-0.602847051452480300,\t-0.602886943537627840,\t-0.602926834115558140,\t\n-0.602966723186171620,\t-0.603006610749367900,\t-0.603046496805047740,\t-0.603086381353111210,\t-0.603126264393459180,\t-0.603166145925991160,\t-0.603206025950607790,\t-0.603245904467209270,\t\n-0.603285781475696340,\t-0.603325656975968630,\t-0.603365530967926780,\t-0.603405403451471530,\t-0.603445274426502310,\t-0.603485143892919960,\t-0.603525011850624680,\t-0.603564878299517330,\t\n-0.603604743239497420,\t-0.603644606670465600,\t-0.603684468592322280,\t-0.603724329004968090,\t-0.603764187908302770,\t-0.603804045302226980,\t-0.603843901186641110,\t-0.603883755561445800,\t\n-0.603923608426540800,\t-0.603963459781826750,\t-0.604003309627203940,\t-0.604043157962573350,\t-0.604083004787834500,\t-0.604122850102888130,\t-0.604162693907635000,\t-0.604202536201974730,\t\n-0.604242376985808070,\t-0.604282216259035550,\t-0.604322054021557810,\t-0.604361890273274690,\t-0.604401725014086730,\t-0.604441558243894450,\t-0.604481389962598700,\t-0.604521220170099130,\t\n-0.604561048866296470,\t-0.604600876051091140,\t-0.604640701724384000,\t-0.604680525886074790,\t-0.604720348536064270,\t-0.604760169674252830,\t-0.604799989300541350,\t-0.604839807414829570,\t\n-0.604879624017018220,\t-0.604919439107008180,\t-0.604959252684699190,\t-0.604999064749992100,\t-0.605038875302787220,\t-0.605078684342985620,\t-0.605118491870486940,\t-0.605158297885192040,\t\n-0.605198102387001450,\t-0.605237905375815900,\t-0.605277706851535150,\t-0.605317506814060270,\t-0.605357305263291570,\t-0.605397102199129900,\t-0.605436897621475230,\t-0.605476691530228210,\t\n-0.605516483925289560,\t-0.605556274806560050,\t-0.605596064173939410,\t-0.605635852027328610,\t-0.605675638366628300,\t-0.605715423191739100,\t-0.605755206502561090,\t-0.605794988298995030,\t\n-0.605834768580941870,\t-0.605874547348301480,\t-0.605914324600974610,\t-0.605954100338861990,\t-0.605993874561864490,\t-0.606033647269881960,\t-0.606073418462815260,\t-0.606113188140565030,\t\n-0.606152956303032230,\t-0.606192722950116610,\t-0.606232488081719260,\t-0.606272251697740680,\t-0.606312013798081750,\t-0.606351774382642540,\t-0.606391533451323790,\t-0.606431291004026260,\t\n-0.606471047040650800,\t-0.606510801561097380,\t-0.606550554565267070,\t-0.606590306053060630,\t-0.606630056024378140,\t-0.606669804479120440,\t-0.606709551417188190,\t-0.606749296838482550,\t\n-0.606789040742903190,\t-0.606828783130351270,\t-0.606868524000727440,\t-0.606908263353932550,\t-0.606948001189866690,\t-0.606987737508430940,\t-0.607027472309525700,\t-0.607067205593052270,\t\n-0.607106937358910300,\t-0.607146667607001090,\t-0.607186396337225260,\t-0.607226123549483690,\t-0.607265849243676550,\t-0.607305573419704700,\t-0.607345296077469340,\t-0.607385017216870330,\t\n-0.607424736837808840,\t-0.607464454940185420,\t-0.607504171523901240,\t-0.607543886588856390,\t-0.607583600134951720,\t-0.607623312162088090,\t-0.607663022670166470,\t-0.607702731659086950,\t\n-0.607742439128750700,\t-0.607782145079058260,\t-0.607821849509910810,\t-0.607861552421208430,\t-0.607901253812852090,\t-0.607940953684742770,\t-0.607980652036781310,\t-0.608020348868867910,\t\n-0.608060044180903540,\t-0.608099737972789160,\t-0.608139430244425740,\t-0.608179120995713470,\t-0.608218810226553330,\t-0.608258497936846500,\t-0.608298184126493060,\t-0.608337868795394200,\t\n-0.608377551943450670,\t-0.608417233570563650,\t-0.608456913676633130,\t-0.608496592261560390,\t-0.608536269325246070,\t-0.608575944867591480,\t-0.608615618888496690,\t-0.608655291387862900,\t\n-0.608694962365590840,\t-0.608734631821581720,\t-0.608774299755735600,\t-0.608813966167953800,\t-0.608853631058137170,\t-0.608893294426186670,\t-0.608932956272002610,\t-0.608972616595486180,\t\n-0.609012275396538570,\t-0.609051932675059970,\t-0.609091588430951460,\t-0.609131242664114000,\t-0.609170895374448800,\t-0.609210546561856030,\t-0.609250196226236880,\t-0.609289844367492230,\t\n-0.609329490985523250,\t-0.609369136080230240,\t-0.609408779651514410,\t-0.609448421699276710,\t-0.609488062223418230,\t-0.609527701223839150,\t-0.609567338700441000,\t-0.609606974653124410,\t\n-0.609646609081790690,\t-0.609686241986340140,\t-0.609725873366673940,\t-0.609765503222693520,\t-0.609805131554298940,\t-0.609844758361391510,\t-0.609884383643872210,\t-0.609924007401642210,\t\n-0.609963629634601930,\t-0.610003250342652570,\t-0.610042869525695090,\t-0.610082487183630780,\t-0.610122103316359850,\t-0.610161717923783710,\t-0.610201331005803320,\t-0.610240942562319870,\t\n-0.610280552593233770,\t-0.610320161098446220,\t-0.610359768077858410,\t-0.610399373531371410,\t-0.610438977458885650,\t-0.610478579860302410,\t-0.610518180735523110,\t-0.610557780084448050,\t\n-0.610597377906978430,\t-0.610636974203015440,\t-0.610676568972460370,\t-0.610716162215213520,\t-0.610755753931176320,\t-0.610795344120249610,\t-0.610834932782335030,\t-0.610874519917332660,\t\n-0.610914105525144020,\t-0.610953689605670090,\t-0.610993272158812380,\t-0.611032853184471090,\t-0.611072432682547630,\t-0.611112010652943070,\t-0.611151587095558950,\t-0.611191162010295440,\t\n-0.611230735397053970,\t-0.611270307255735720,\t-0.611309877586242110,\t-0.611349446388473330,\t-0.611389013662331000,\t-0.611428579407716550,\t-0.611468143624530170,\t-0.611507706312673480,\t\n-0.611547267472047570,\t-0.611586827102553850,\t-0.611626385204092630,\t-0.611665941776565520,\t-0.611705496819873520,\t-0.611745050333918130,\t-0.611784602318599770,\t-0.611824152773819960,\t\n-0.611863701699479680,\t-0.611903249095480550,\t-0.611942794961722990,\t-0.611982339298108300,\t-0.612021882104537900,\t-0.612061423380913070,\t-0.612100963127134360,\t-0.612140501343103270,\t\n-0.612180038028721230,\t-0.612219573183888750,\t-0.612259106808507370,\t-0.612298638902478150,\t-0.612338169465702740,\t-0.612377698498081550,\t-0.612417225999516090,\t-0.612456751969907560,\t\n-0.612496276409157600,\t-0.612535799317166510,\t-0.612575320693835910,\t-0.612614840539067010,\t-0.612654358852761430,\t-0.612693875634819580,\t-0.612733390885143000,\t-0.612772904603632980,\t\n-0.612812416790191050,\t-0.612851927444717730,\t-0.612891436567114530,\t-0.612930944157283110,\t-0.612970450215124090,\t-0.613009954740538760,\t-0.613049457733428670,\t-0.613088959193695220,\t\n-0.613128459121239140,\t-0.613167957515961760,\t-0.613207454377764580,\t-0.613246949706549140,\t-0.613286443502215840,\t-0.613325935764666540,\t-0.613365426493802430,\t-0.613404915689525040,\t\n-0.613444403351735000,\t-0.613483889480333940,\t-0.613523374075223280,\t-0.613562857136304430,\t-0.613602338663478130,\t-0.613641818656645910,\t-0.613681297115709180,\t-0.613720774040569570,\t\n-0.613760249431127720,\t-0.613799723287285160,\t-0.613839195608943730,\t-0.613878666396003860,\t-0.613918135648367390,\t-0.613957603365935630,\t-0.613997069548610110,\t-0.614036534196291670,\t\n-0.614075997308881850,\t-0.614115458886281940,\t-0.614154918928393910,\t-0.614194377435118070,\t-0.614233834406356370,\t-0.614273289842010020,\t-0.614312743741980860,\t-0.614352196106169530,\t\n-0.614391646934477680,\t-0.614431096226806690,\t-0.614470543983058230,\t-0.614509990203133130,\t-0.614549434886933140,\t-0.614588878034359800,\t-0.614628319645313950,\t-0.614667759719697340,\t\n-0.614707198257411270,\t-0.614746635258357600,\t-0.614786070722436960,\t-0.614825504649551100,\t-0.614864937039601540,\t-0.614904367892490030,\t-0.614943797208117200,\t-0.614983224986384910,\t\n-0.615022651227194460,\t-0.615062075930447820,\t-0.615101499096045610,\t-0.615140920723889710,\t-0.615180340813881400,\t-0.615219759365922660,\t-0.615259176379914230,\t-0.615298591855757750,\t\n-0.615338005793355180,\t-0.615377418192607270,\t-0.615416829053415770,\t-0.615456238375682200,\t-0.615495646159308410,\t-0.615535052404195150,\t-0.615574457110244280,\t-0.615613860277357210,\t\n-0.615653261905435900,\t-0.615692661994381110,\t-0.615732060544094570,\t-0.615771457554477930,\t-0.615810853025433040,\t-0.615850246956860640,\t-0.615889639348662590,\t-0.615929030200740410,\t\n-0.615968419512996080,\t-0.616007807285330330,\t-0.616047193517645030,\t-0.616086578209842140,\t-0.616125961361822410,\t-0.616165342973487800,\t-0.616204723044739830,\t-0.616244101575480370,\t\n-0.616283478565610390,\t-0.616322854015031620,\t-0.616362227923645810,\t-0.616401600291354710,\t-0.616440971118059290,\t-0.616480340403661400,\t-0.616519708148062670,\t-0.616559074351165080,\t\n-0.616598439012869480,\t-0.616637802133077730,\t-0.616677163711691460,\t-0.616716523748612630,\t-0.616755882243742120,\t-0.616795239196981980,\t-0.616834594608233640,\t-0.616873948477399180,\t\n-0.616913300804379560,\t-0.616952651589076750,\t-0.616992000831392500,\t-0.617031348531227990,\t-0.617070694688485080,\t-0.617110039303065520,\t-0.617149382374871050,\t-0.617188723903802970,\t\n-0.617228063889762920,\t-0.617267402332652760,\t-0.617306739232374450,\t-0.617346074588828950,\t-0.617385408401918250,\t-0.617424740671544070,\t-0.617464071397608280,\t-0.617503400580012070,\t\n-0.617542728218657300,\t-0.617582054313445820,\t-0.617621378864279480,\t-0.617660701871059260,\t-0.617700023333687340,\t-0.617739343252065810,\t-0.617778661626095520,\t-0.617817978455678540,\t\n-0.617857293740716630,\t-0.617896607481111750,\t-0.617935919676765090,\t-0.617975230327578620,\t-0.618014539433454080,\t-0.618053846994293550,\t-0.618093153009998010,\t-0.618132457480469630,\t\n-0.618171760405610170,\t-0.618211061785321590,\t-0.618250361619504970,\t-0.618289659908062510,\t-0.618328956650895820,\t-0.618368251847907110,\t-0.618407545498997460,\t-0.618446837604068930,\t\n-0.618486128163023620,\t-0.618525417175762700,\t-0.618564704642188270,\t-0.618603990562202060,\t-0.618643274935706140,\t-0.618682557762601730,\t-0.618721839042790990,\t-0.618761118776175570,\t\n-0.618800396962657650,\t-0.618839673602138540,\t-0.618878948694520090,\t-0.618918222239704390,\t-0.618957494237593500,\t-0.618996764688088400,\t-0.619036033591091490,\t-0.619075300946504430,\t\n-0.619114566754229490,\t-0.619153831014167770,\t-0.619193093726221560,\t-0.619232354890292490,\t-0.619271614506282990,\t-0.619310872574094120,\t-0.619350129093627970,\t-0.619389384064786830,\t\n-0.619428637487472010,\t-0.619467889361585480,\t-0.619507139687029310,\t-0.619546388463705580,\t-0.619585635691515590,\t-0.619624881370361420,\t-0.619664125500145160,\t-0.619703368080768870,\t\n-0.619742609112133750,\t-0.619781848594142200,\t-0.619821086526695990,\t-0.619860322909697390,\t-0.619899557743047720,\t-0.619938791026649060,\t-0.619978022760403480,\t-0.620017252944213170,\t\n-0.620056481577979430,\t-0.620095708661604460,\t-0.620134934194990550,\t-0.620174158178038890,\t-0.620213380610651900,\t-0.620252601492731540,\t-0.620291820824179880,\t-0.620331038604898470,\t\n-0.620370254834789360,\t-0.620409469513754640,\t-0.620448682641696610,\t-0.620487894218516470,\t-0.620527104244116610,\t-0.620566312718399020,\t-0.620605519641265980,\t-0.620644725012618800,\t\n-0.620683928832359790,\t-0.620723131100391010,\t-0.620762331816614670,\t-0.620801530980932270,\t-0.620840728593245910,\t-0.620879924653458200,\t-0.620919119161470250,\t-0.620958312117184440,\t\n-0.620997503520502980,\t-0.621036693371328050,\t-0.621075881669561070,\t-0.621115068415104330,\t-0.621154253607860030,\t-0.621193437247730350,\t-0.621232619334616710,\t-0.621271799868421630,\t\n-0.621310978849046960,\t-0.621350156276395230,\t-0.621389332150367730,\t-0.621428506470866890,\t-0.621467679237794780,\t-0.621506850451053920,\t-0.621546020110545490,\t-0.621585188216172040,\t\n-0.621624354767835620,\t-0.621663519765438650,\t-0.621702683208882560,\t-0.621741845098069730,\t-0.621781005432902600,\t-0.621820164213282680,\t-0.621859321439112270,\t-0.621898477110293670,\t\n-0.621937631226729180,\t-0.621976783788320220,\t-0.622015934794969310,\t-0.622055084246578630,\t-0.622094232143050490,\t-0.622133378484286510,\t-0.622172523270189020,\t-0.622211666500660290,\t\n-0.622250808175602630,\t-0.622289948294917680,\t-0.622329086858507850,\t-0.622368223866275330,\t-0.622407359318122630,\t-0.622446493213951070,\t-0.622485625553663380,\t-0.622524756337161980,\t\n-0.622563885564348270,\t-0.622603013235124900,\t-0.622642139349393940,\t-0.622681263907058020,\t-0.622720386908018560,\t-0.622759508352178190,\t-0.622798628239438990,\t-0.622837746569703590,\t\n-0.622876863342873400,\t-0.622915978558851170,\t-0.622955092217538970,\t-0.622994204318839340,\t-0.623033314862653900,\t-0.623072423848885170,\t-0.623111531277435350,\t-0.623150637148207060,\t\n-0.623189741461101840,\t-0.623228844216022320,\t-0.623267945412870890,\t-0.623307045051549440,\t-0.623346143131960240,\t-0.623385239654005720,\t-0.623424334617588390,\t-0.623463428022610010,\t\n-0.623502519868972980,\t-0.623541610156579610,\t-0.623580698885332630,\t-0.623619786055133570,\t-0.623658871665884960,\t-0.623697955717489210,\t-0.623737038209848940,\t-0.623776119142865680,\t\n-0.623815198516442180,\t-0.623854276330480630,\t-0.623893352584883760,\t-0.623932427279553230,\t-0.623971500414391530,\t-0.624010571989301540,\t-0.624049642004184670,\t-0.624088710458943760,\t\n-0.624127777353481020,\t-0.624166842687699170,\t-0.624205906461499980,\t-0.624244968674785850,\t-0.624284029327459410,\t-0.624323088419423300,\t-0.624362145950579040,\t-0.624401201920829370,\t\n-0.624440256330076720,\t-0.624479309178223810,\t-0.624518360465172280,\t-0.624557410190824890,\t-0.624596458355083930,\t-0.624635504957852140,\t-0.624674549999031270,\t-0.624713593478524070,\t\n-0.624752635396232820,\t-0.624791675752060400,\t-0.624830714545908440,\t-0.624869751777679560,\t-0.624908787447276740,\t-0.624947821554601600,\t-0.624986854099557010,\t-0.625025885082045150,\t\n-0.625064914501968990,\t-0.625103942359230170,\t-0.625142968653731420,\t-0.625181993385375390,\t-0.625221016554064590,\t-0.625260038159700990,\t-0.625299058202187340,\t-0.625338076681425940,\t\n-0.625377093597319740,\t-0.625416108949770400,\t-0.625455122738680870,\t-0.625494134963953560,\t-0.625533145625491120,\t-0.625572154723195610,\t-0.625611162256969670,\t-0.625650168226716150,\t\n-0.625689172632336810,\t-0.625728175473734600,\t-0.625767176750811950,\t-0.625806176463471700,\t-0.625845174611615710,\t-0.625884171195146720,\t-0.625923166213967370,\t-0.625962159667980410,\t\n-0.626001151557087690,\t-0.626040141881192060,\t-0.626079130640196160,\t-0.626118117834002730,\t-0.626157103462513740,\t-0.626196087525631830,\t-0.626235070023259840,\t-0.626274050955300420,\t\n-0.626313030321655640,\t-0.626352008122228240,\t-0.626390984356921090,\t-0.626429959025636250,\t-0.626468932128276480,\t-0.626507903664744290,\t-0.626546873634942770,\t-0.626585842038773650,\t\n-0.626624808876140030,\t-0.626663774146944300,\t-0.626702737851089540,\t-0.626741699988477620,\t-0.626780660559011380,\t-0.626819619562593470,\t-0.626858576999126950,\t-0.626897532868513570,\t\n-0.626936487170656310,\t-0.626975439905457900,\t-0.627014391072821310,\t-0.627053340672648290,\t-0.627092288704841900,\t-0.627131235169304910,\t-0.627170180065940050,\t-0.627209123394649510,\t\n-0.627248065155336040,\t-0.627287005347902830,\t-0.627325943972251830,\t-0.627364881028285800,\t-0.627403816515907710,\t-0.627442750435020400,\t-0.627481682785525740,\t-0.627520613567327020,\t\n-0.627559542780326660,\t-0.627598470424427850,\t-0.627637396499532540,\t-0.627676321005543710,\t-0.627715243942364110,\t-0.627754165309896690,\t-0.627793085108043550,\t-0.627832003336707740,\t\n-0.627870919995791810,\t-0.627909835085199040,\t-0.627948748604831300,\t-0.627987660554591650,\t-0.628026570934383190,\t-0.628065479744107980,\t-0.628104386983669110,\t-0.628143292652969200,\t\n-0.628182196751911450,\t-0.628221099280397820,\t-0.628260000238331510,\t-0.628298899625615140,\t-0.628337797442151900,\t-0.628376693687843880,\t-0.628415588362594040,\t-0.628454481466305230,\t\n-0.628493372998880530,\t-0.628532262960222130,\t-0.628571151350233110,\t-0.628610038168816110,\t-0.628648923415874420,\t-0.628687807091310000,\t-0.628726689195026170,\t-0.628765569726925880,\t\n-0.628804448686911320,\t-0.628843326074885690,\t-0.628882201890751720,\t-0.628921076134412620,\t-0.628959948805770440,\t-0.628998819904728390,\t-0.629037689431189320,\t-0.629076557385056410,\t\n-0.629115423766231750,\t-0.629154288574618410,\t-0.629193151810119480,\t-0.629232013472637910,\t-0.629270873562076120,\t-0.629309732078336960,\t-0.629348589021323620,\t-0.629387444390939080,\t\n-0.629426298187085620,\t-0.629465150409666330,\t-0.629504001058584620,\t-0.629542850133742450,\t-0.629581697635043240,\t-0.629620543562389720,\t-0.629659387915685320,\t-0.629698230694832000,\t\n-0.629737071899733050,\t-0.629775911530291550,\t-0.629814749586410480,\t-0.629853586067992350,\t-0.629892420974940140,\t-0.629931254307156910,\t-0.629970086064545850,\t-0.630008916247009280,\t\n-0.630047744854450480,\t-0.630086571886772200,\t-0.630125397343877850,\t-0.630164221225669730,\t-0.630203043532051030,\t-0.630241864262924720,\t-0.630280683418194100,\t-0.630319500997761350,\t\n-0.630358317001530000,\t-0.630397131429403120,\t-0.630435944281283020,\t-0.630474755557073110,\t-0.630513565256676230,\t-0.630552373379995920,\t-0.630591179926934250,\t-0.630629984897394640,\t\n-0.630668788291280150,\t-0.630707590108493870,\t-0.630746390348938420,\t-0.630785189012516900,\t-0.630823986099132480,\t-0.630862781608688360,\t-0.630901575541087060,\t-0.630940367896231650,\t\n-0.630979158674025430,\t-0.631017947874371710,\t-0.631056735497172670,\t-0.631095521542331840,\t-0.631134306009752510,\t-0.631173088899337100,\t-0.631211870210989010,\t-0.631250649944611220,\t\n-0.631289428100107130,\t-0.631328204677379160,\t-0.631366979676330600,\t-0.631405753096864640,\t-0.631444524938884700,\t-0.631483295202293070,\t-0.631522063886993170,\t-0.631560830992888070,\t\n-0.631599596519881290,\t-0.631638360467875140,\t-0.631677122836773130,\t-0.631715883626478350,\t-0.631754642836894090,\t-0.631793400467922980,\t-0.631832156519468340,\t-0.631870910991433670,\t\n-0.631909663883721380,\t-0.631948415196234900,\t-0.631987164928877410,\t-0.632025913081552320,\t-0.632064659654162140,\t-0.632103404646610300,\t-0.632142148058799870,\t-0.632180889890634480,\t\n-0.632219630142016540,\t-0.632258368812849580,\t-0.632297105903036560,\t-0.632335841412481230,\t-0.632374575341085880,\t-0.632413307688754140,\t-0.632452038455389110,\t-0.632490767640894290,\t\n-0.632529495245172320,\t-0.632568221268126510,\t-0.632606945709660140,\t-0.632645668569676860,\t-0.632684389848078950,\t-0.632723109544770180,\t-0.632761827659653830,\t-0.632800544192632650,\t\n-0.632839259143610170,\t-0.632877972512489450,\t-0.632916684299174140,\t-0.632955394503566860,\t-0.632994103125571030,\t-0.633032810165089940,\t-0.633071515622027240,\t-0.633110219496285320,\t\n-0.633148921787767830,\t-0.633187622496378170,\t-0.633226321622019640,\t-0.633265019164595100,\t-0.633303715124007960,\t-0.633342409500161520,\t-0.633381102292959410,\t-0.633419793502304150,\t\n-0.633458483128099490,\t-0.633497171170248840,\t-0.633535857628655050,\t-0.633574542503221540,\t-0.633613225793851710,\t-0.633651907500449200,\t-0.633690587622916520,\t-0.633729266161157430,\t\n-0.633767943115075120,\t-0.633806618484573310,\t-0.633845292269554550,\t-0.633883964469922680,\t-0.633922635085580780,\t-0.633961304116432700,\t-0.633999971562380970,\t-0.634038637423329440,\t\n-0.634077301699181200,\t-0.634115964389840080,\t-0.634154625495208730,\t-0.634193285015190790,\t-0.634231942949689990,\t-0.634270599298608960,\t-0.634309254061851460,\t-0.634347907239320770,\t\n-0.634386558830920650,\t-0.634425208836553840,\t-0.634463857256124090,\t-0.634502504089534570,\t-0.634541149336689150,\t-0.634579792997490570,\t-0.634618435071842460,\t-0.634657075559648340,\t\n-0.634695714460811860,\t-0.634734351775235630,\t-0.634772987502823630,\t-0.634811621643479150,\t-0.634850254197105950,\t-0.634888885163606750,\t-0.634927514542885320,\t-0.634966142334845500,\t\n-0.635004768539390030,\t-0.635043393156422550,\t-0.635082016185846590,\t-0.635120637627565990,\t-0.635159257481483390,\t-0.635197875747502640,\t-0.635236492425527270,\t-0.635275107515460900,\t\n-0.635313721017206510,\t-0.635352332930667840,\t-0.635390943255748300,\t-0.635429551992351740,\t-0.635468159140380910,\t-0.635506764699739770,\t-0.635545368670331620,\t-0.635583971052060440,\t\n-0.635622571844829070,\t-0.635661171048541140,\t-0.635699768663100410,\t-0.635738364688410500,\t-0.635776959124374370,\t-0.635815551970895900,\t-0.635854143227878810,\t-0.635892732895226080,\t\n-0.635931320972841440,\t-0.635969907460628540,\t-0.636008492358491220,\t-0.636047075666332340,\t-0.636085657384055760,\t-0.636124237511564990,\t-0.636162816048764010,\t-0.636201392995555670,\t\n-0.636239968351843820,\t-0.636278542117532100,\t-0.636317114292524360,\t-0.636355684876723450,\t-0.636394253870033340,\t-0.636432821272357560,\t-0.636471387083600070,\t-0.636509951303663830,\t\n-0.636548513932452710,\t-0.636587074969870550,\t-0.636625634415820430,\t-0.636664192270206210,\t-0.636702748532931520,\t-0.636741303203900320,\t-0.636779856283015590,\t-0.636818407770181060,\t\n-0.636856957665300590,\t-0.636895505968278040,\t-0.636934052679016480,\t-0.636972597797419660,\t-0.637011141323391430,\t-0.637049683256835640,\t-0.637088223597655380,\t-0.637126762345754490,\t\n-0.637165299501036730,\t-0.637203835063406050,\t-0.637242369032765430,\t-0.637280901409018830,\t-0.637319432192070430,\t-0.637357961381822990,\t-0.637396488978180800,\t-0.637435014981047270,\t\n-0.637473539390326580,\t-0.637512062205921710,\t-0.637550583427736630,\t-0.637589103055675180,\t-0.637627621089641220,\t-0.637666137529537940,\t-0.637704652375269300,\t-0.637743165626738940,\t\n-0.637781677283851160,\t-0.637820187346508800,\t-0.637858695814615850,\t-0.637897202688076260,\t-0.637935707966794000,\t-0.637974211650672140,\t-0.638012713739614770,\t-0.638051214233525620,\t\n-0.638089713132308670,\t-0.638128210435867200,\t-0.638166706144105200,\t-0.638205200256926730,\t-0.638243692774234980,\t-0.638282183695933920,\t-0.638320673021927410,\t-0.638359160752119630,\t\n-0.638397646886413540,\t-0.638436131424713340,\t-0.638474614366922880,\t-0.638513095712946120,\t-0.638551575462686370,\t-0.638590053616047590,\t-0.638628530172933750,\t-0.638667005133248920,\t\n-0.638705478496896180,\t-0.638743950263779840,\t-0.638782420433803510,\t-0.638820889006871620,\t-0.638859355982887010,\t-0.638897821361754100,\t-0.638936285143376970,\t-0.638974747327658800,\t\n-0.639013207914503670,\t-0.639051666903815650,\t-0.639090124295498720,\t-0.639128580089456170,\t-0.639167034285592180,\t-0.639205486883810510,\t-0.639243937884015570,\t-0.639282387286110420,\t\n-0.639320835089999260,\t-0.639359281295586060,\t-0.639397725902774990,\t-0.639436168911469260,\t-0.639474610321573160,\t-0.639513050132990420,\t-0.639551488345625470,\t-0.639589924959381500,\t\n-0.639628359974162670,\t-0.639666793389873310,\t-0.639705225206416590,\t-0.639743655423696820,\t-0.639782084041617850,\t-0.639820511060084090,\t-0.639858936478998610,\t-0.639897360298265940,\t\n-0.639935782517789820,\t-0.639974203137474550,\t-0.640012622157223430,\t-0.640051039576940760,\t-0.640089455396530500,\t-0.640127869615896960,\t-0.640166282234943320,\t-0.640204693253574100,\t\n-0.640243102671693040,\t-0.640281510489204560,\t-0.640319916706012070,\t-0.640358321322019750,\t-0.640396724337131910,\t-0.640435125751251940,\t-0.640473525564284160,\t-0.640511923776132640,\t\n-0.640550320386701570,\t-0.640588715395894460,\t-0.640627108803615400,\t-0.640665500609768680,\t-0.640703890814258490,\t-0.640742279416988250,\t-0.640780666417862350,\t-0.640819051816784780,\t\n-0.640857435613659930,\t-0.640895817808391110,\t-0.640934198400882730,\t-0.640972577391038860,\t-0.641010954778763910,\t-0.641049330563961290,\t-0.641087704746535310,\t-0.641126077326390040,\t\n-0.641164448303429890,\t-0.641202817677558270,\t-0.641241185448679700,\t-0.641279551616698470,\t-0.641317916181518010,\t-0.641356279143042720,\t-0.641394640501176780,\t-0.641433000255824610,\t\n-0.641471358406889510,\t-0.641509714954276110,\t-0.641548069897888370,\t-0.641586423237630710,\t-0.641624774973406750,\t-0.641663125105120910,\t-0.641701473632677160,\t-0.641739820555980110,\t\n-0.641778165874933190,\t-0.641816509589440810,\t-0.641854851699407150,\t-0.641893192204736730,\t-0.641931531105332960,\t-0.641969868401100370,\t-0.642008204091943480,\t-0.642046538177765690,\t\n-0.642084870658471640,\t-0.642123201533965400,\t-0.642161530804151390,\t-0.642199858468933350,\t-0.642238184528215570,\t-0.642276508981902360,\t-0.642314831829898240,\t-0.642353153072106610,\t\n-0.642391472708432220,\t-0.642429790738779040,\t-0.642468107163051800,\t-0.642506421981153930,\t-0.642544735192989940,\t-0.642583046798464230,\t-0.642621356797481220,\t-0.642659665189944440,\t\n-0.642697971975758400,\t-0.642736277154827950,\t-0.642774580727056400,\t-0.642812882692348380,\t-0.642851183050608180,\t-0.642889481801740330,\t-0.642927778945648450,\t-0.642966074482237080,\t\n-0.643004368411410620,\t-0.643042660733073480,\t-0.643080951447129400,\t-0.643119240553482910,\t-0.643157528052038410,\t-0.643195813942700310,\t-0.643234098225372470,\t-0.643272380899959310,\t\n-0.643310661966365100,\t-0.643348941424494720,\t-0.643387219274251580,\t-0.643425495515540400,\t-0.643463770148265500,\t-0.643502043172331510,\t-0.643540314587642050,\t-0.643578584394101870,\t\n-0.643616852591615500,\t-0.643655119180086670,\t-0.643693384159420120,\t-0.643731647529519950,\t-0.643769909290291100,\t-0.643808169441637210,\t-0.643846427983462810,\t-0.643884684915672300,\t\n-0.643922940238170540,\t-0.643961193950860930,\t-0.643999446053648450,\t-0.644037696546437390,\t-0.644075945429132270,\t-0.644114192701637060,\t-0.644152438363856380,\t-0.644190682415694550,\t\n-0.644228924857056410,\t-0.644267165687845590,\t-0.644305404907966840,\t-0.644343642517324900,\t-0.644381878515823630,\t-0.644420112903367540,\t-0.644458345679861160,\t-0.644496576845209330,\t\n-0.644534806399315710,\t-0.644573034342085020,\t-0.644611260673421780,\t-0.644649485393230750,\t-0.644687708501415660,\t-0.644725929997881250,\t-0.644764149882532060,\t-0.644802368155272810,\t\n-0.644840584816007370,\t-0.644878799864640360,\t-0.644917013301076420,\t-0.644955225125220300,\t-0.644993435336975730,\t-0.645031643936247570,\t-0.645069850922940670,\t-0.645108056296958890,\t\n-0.645146260058206860,\t-0.645184462206589200,\t-0.645222662742010680,\t-0.645260861664375240,\t-0.645299058973587520,\t-0.645337254669552270,\t-0.645375448752174230,\t-0.645413641221357140,\t\n-0.645451832077006070,\t-0.645490021319025330,\t-0.645528208947319880,\t-0.645566394961793580,\t-0.645604579362351380,\t-0.645642762148897600,\t-0.645680943321337300,\t-0.645719122879574340,\t\n-0.645757300823513570,\t-0.645795477153059850,\t-0.645833651868117030,\t-0.645871824968590190,\t-0.645909996454383740,\t-0.645948166325402640,\t-0.645986334581550860,\t-0.646024501222733140,\t\n-0.646062666248854220,\t-0.646100829659818960,\t-0.646138991455531330,\t-0.646177151635896170,\t-0.646215310200818130,\t-0.646253467150202150,\t-0.646291622483952220,\t-0.646329776201973180,\t\n-0.646367928304169780,\t-0.646406078790446760,\t-0.646444227660708300,\t-0.646482374914859270,\t-0.646520520552804290,\t-0.646558664574448330,\t-0.646596806979695350,\t-0.646634947768450430,\t\n-0.646673086940618420,\t-0.646711224496103410,\t-0.646749360434810240,\t-0.646787494756643770,\t-0.646825627461508850,\t-0.646863758549309550,\t-0.646901888019950850,\t-0.646940015873337380,\t\n-0.646978142109374320,\t-0.647016266727965420,\t-0.647054389729015970,\t-0.647092511112430490,\t-0.647130630878114070,\t-0.647168749025970770,\t-0.647206865555905560,\t-0.647244980467823190,\t\n-0.647283093761628740,\t-0.647321205437226150,\t-0.647359315494520640,\t-0.647397423933417150,\t-0.647435530753819770,\t-0.647473635955633450,\t-0.647511739538763180,\t-0.647549841503113790,\t\n-0.647587941848589590,\t-0.647626040575095430,\t-0.647664137682536280,\t-0.647702233170816990,\t-0.647740327039841860,\t-0.647778419289515850,\t-0.647816509919743820,\t-0.647854598930430850,\t\n-0.647892686321481110,\t-0.647930772092799590,\t-0.647968856244291120,\t-0.648006938775860910,\t-0.648045019687413020,\t-0.648083098978852520,\t-0.648121176650084620,\t-0.648159252701013490,\t\n-0.648197327131544210,\t-0.648235399941581640,\t-0.648273471131030840,\t-0.648311540699796020,\t-0.648349608647782350,\t-0.648387674974894690,\t-0.648425739681038230,\t-0.648463802766117040,\t\n-0.648501864230036310,\t-0.648539924072701000,\t-0.648577982294016090,\t-0.648616038893885970,\t-0.648654093872215840,\t-0.648692147228910330,\t-0.648730198963874850,\t-0.648768249077013470,\t\n-0.648806297568231600,\t-0.648844344437433880,\t-0.648882389684525720,\t-0.648920433309411180,\t-0.648958475311995580,\t-0.648996515692184080,\t-0.649034554449881010,\t-0.649072591584991530,\t\n-0.649110627097420620,\t-0.649148660987073470,\t-0.649186693253854250,\t-0.649224723897668390,\t-0.649262752918420620,\t-0.649300780316016350,\t-0.649338806090359880,\t-0.649376830241356280,\t\n-0.649414852768910640,\t-0.649452873672928250,\t-0.649490892953313300,\t-0.649528910609971090,\t-0.649566926642806690,\t-0.649604941051725170,\t-0.649642953836631070,\t-0.649680964997429560,\t\n-0.649718974534026050,\t-0.649756982446324630,\t-0.649794988734230810,\t-0.649832993397649550,\t-0.649870996436486160,\t-0.649908997850644820,\t-0.649946997640031170,\t-0.649984995804549830,\t\n-0.650022992344106540,\t-0.650060987258605280,\t-0.650098980547951570,\t-0.650136972212050470,\t-0.650174962250807290,\t-0.650212950664126210,\t-0.650250937451912980,\t-0.650288922614072230,\t\n-0.650326906150509590,\t-0.650364888061129350,\t-0.650402868345836830,\t-0.650440847004537530,\t-0.650478824037135750,\t-0.650516799443536910,\t-0.650554773223646080,\t-0.650592745377368660,\t\n-0.650630715904609080,\t-0.650668684805272620,\t-0.650706652079264480,\t-0.650744617726490060,\t-0.650782581746853770,\t-0.650820544140261030,\t-0.650858504906616900,\t-0.650896464045826910,\t\n-0.650934421557795350,\t-0.650972377442427750,\t-0.651010331699629300,\t-0.651048284329305280,\t-0.651086235331360230,\t-0.651124184705699550,\t-0.651162132452228760,\t-0.651200078570852270,\t\n-0.651238023061475600,\t-0.651275965924003940,\t-0.651313907158342700,\t-0.651351846764396280,\t-0.651389784742070320,\t-0.651427721091269780,\t-0.651465655811900410,\t-0.651503588903866500,\t\n-0.651541520367073580,\t-0.651579450201426940,\t-0.651617378406831980,\t-0.651655304983193240,\t-0.651693229930416230,\t-0.651731153248406140,\t-0.651769074937068480,\t-0.651806994996307900,\t\n-0.651844913426029680,\t-0.651882830226139350,\t-0.651920745396542100,\t-0.651958658937142780,\t-0.651996570847846790,\t-0.652034481128559660,\t-0.652072389779186020,\t-0.652110296799631390,\t\n-0.652148202189801070,\t-0.652186105949600580,\t-0.652224008078934440,\t-0.652261908577708270,\t-0.652299807445827380,\t-0.652337704683197290,\t-0.652375600289722520,\t-0.652413494265308920,\t\n-0.652451386609861460,\t-0.652489277323285880,\t-0.652527166405486800,\t-0.652565053856369760,\t-0.652602939675840150,\t-0.652640823863803510,\t-0.652678706420164460,\t-0.652716587344828620,\t\n-0.652754466637701650,\t-0.652792344298688270,\t-0.652830220327694000,\t-0.652868094724624040,\t-0.652905967489384340,\t-0.652943838621879320,\t-0.652981708122014730,\t-0.653019575989695840,\t\n-0.653057442224828310,\t-0.653095306827316870,\t-0.653133169797067260,\t-0.653171031133984670,\t-0.653208890837974730,\t-0.653246748908942300,\t-0.653284605346793110,\t-0.653322460151432250,\t\n-0.653360313322765670,\t-0.653398164860697910,\t-0.653436014765134800,\t-0.653473863035981870,\t-0.653511709673144090,\t-0.653549554676526980,\t-0.653587398046035940,\t-0.653625239781576830,\t\n-0.653663079883054170,\t-0.653700918350373920,\t-0.653738755183441270,\t-0.653776590382162180,\t-0.653814423946441180,\t-0.653852255876184230,\t-0.653890086171296510,\t-0.653927914831684000,\t\n-0.653965741857251310,\t-0.654003567247904320,\t-0.654041391003548410,\t-0.654079213124089340,\t-0.654117033609431850,\t-0.654154852459481910,\t-0.654192669674144690,\t-0.654230485253326280,\t\n-0.654268299196931190,\t-0.654306111504865400,\t-0.654343922177034740,\t-0.654381731213343860,\t-0.654419538613698610,\t-0.654457344378004620,\t-0.654495148506167520,\t-0.654532950998092280,\t\n-0.654570751853684630,\t-0.654608551072850100,\t-0.654646348655494540,\t-0.654684144601522690,\t-0.654721938910840520,\t-0.654759731583353540,\t-0.654797522618967620,\t-0.654835312017587490,\t\n-0.654873099779119120,\t-0.654910885903467910,\t-0.654948670390539830,\t-0.654986453240239850,\t-0.655024234452473710,\t-0.655062014027147250,\t-0.655099791964165460,\t-0.655137568263434170,\t\n-0.655175342924859020,\t-0.655213115948345750,\t-0.655250887333799440,\t-0.655288657081125820,\t-0.655326425190230650,\t-0.655364191661019780,\t-0.655401956493397940,\t-0.655439719687271330,\t\n-0.655477481242545460,\t-0.655515241159126180,\t-0.655552999436918360,\t-0.655590756075828170,\t-0.655628511075761030,\t-0.655666264436623010,\t-0.655704016158318860,\t-0.655741766240754750,\t\n-0.655779514683836550,\t-0.655817261487469330,\t-0.655855006651558830,\t-0.655892750176010900,\t-0.655930492060731400,\t-0.655968232305625290,\t-0.656005970910598650,\t-0.656043707875556990,\t\n-0.656081443200406510,\t-0.656119176885052060,\t-0.656156908929399600,\t-0.656194639333354980,\t-0.656232368096824060,\t-0.656270095219711800,\t-0.656307820701924390,\t-0.656345544543367350,\t\n-0.656383266743946870,\t-0.656420987303567900,\t-0.656458706222136420,\t-0.656496423499558500,\t-0.656534139135739210,\t-0.656571853130584530,\t-0.656609565484000290,\t-0.656647276195892360,\t\n-0.656684985266166030,\t-0.656722692694727160,\t-0.656760398481481600,\t-0.656798102626335310,\t-0.656835805129193480,\t-0.656873505989962080,\t-0.656911205208547070,\t-0.656948902784854180,\t\n-0.656986598718788840,\t-0.657024293010257000,\t-0.657061985659164400,\t-0.657099676665417130,\t-0.657137366028920370,\t-0.657175053749580180,\t-0.657212739827302330,\t-0.657250424261993090,\t\n-0.657288107053557340,\t-0.657325788201901350,\t-0.657363467706931210,\t-0.657401145568552110,\t-0.657438821786670120,\t-0.657476496361190990,\t-0.657514169292021110,\t-0.657551840579065350,\t\n-0.657589510222230000,\t-0.657627178221420920,\t-0.657664844576544280,\t-0.657702509287505180,\t-0.657740172354209670,\t-0.657777833776563850,\t-0.657815493554473770,\t-0.657853151687844640,\t\n-0.657890808176582630,\t-0.657928463020593490,\t-0.657966116219783630,\t-0.658003767774058110,\t-0.658041417683323140,\t-0.658079065947485000,\t-0.658116712566448880,\t-0.658154357540120970,\t\n-0.658192000868407120,\t-0.658229642551213740,\t-0.658267282588445800,\t-0.658304920980009700,\t-0.658342557725811180,\t-0.658380192825756770,\t-0.658417826279751430,\t-0.658455458087701560,\t\n-0.658493088249513030,\t-0.658530716765092120,\t-0.658568343634344130,\t-0.658605968857175260,\t-0.658643592433491460,\t-0.658681214363198930,\t-0.658718834646203180,\t-0.658756453282410280,\t\n-0.658794070271726540,\t-0.658831685614057360,\t-0.658869299309308930,\t-0.658906911357387210,\t-0.658944521758198620,\t-0.658982130511648330,\t-0.659019737617642760,\t-0.659057343076087760,\t\n-0.659094946886889850,\t-0.659132549049954220,\t-0.659170149565187160,\t-0.659207748432494740,\t-0.659245345651783390,\t-0.659282941222958160,\t-0.659320535145925700,\t-0.659358127420591860,\t\n-0.659395718046863030,\t-0.659433307024644640,\t-0.659470894353842870,\t-0.659508480034364020,\t-0.659546064066114160,\t-0.659583646448998810,\t-0.659621227182924490,\t-0.659658806267797270,\t\n-0.659696383703522790,\t-0.659733959490007350,\t-0.659771533627157010,\t-0.659809106114878090,\t-0.659846676953076190,\t-0.659884246141657530,\t-0.659921813680528270,\t-0.659959379569594830,\t\n-0.659996943808762620,\t-0.660034506397937930,\t-0.660072067337027060,\t-0.660109626625936420,\t-0.660147184264571310,\t-0.660184740252838240,\t-0.660222294590643300,\t-0.660259847277893000,\t\n-0.660297398314492750,\t-0.660334947700348950,\t-0.660372495435368130,\t-0.660410041519455810,\t-0.660447585952518290,\t-0.660485128734461860,\t-0.660522669865192920,\t-0.660560209344617010,\t\n-0.660597747172640530,\t-0.660635283349169770,\t-0.660672817874111030,\t-0.660710350747369950,\t-0.660747881968853030,\t-0.660785411538466370,\t-0.660822939456116480,\t-0.660860465721708980,\t\n-0.660897990335150290,\t-0.660935513296346590,\t-0.660973034605204400,\t-0.661010554261629360,\t-0.661048072265527980,\t-0.661085588616806660,\t-0.661123103315371050,\t-0.661160616361127770,\t\n-0.661198127753982900,\t-0.661235637493843060,\t-0.661273145580613790,\t-0.661310652014201580,\t-0.661348156794512750,\t-0.661385659921453930,\t-0.661423161394930630,\t-0.661460661214849370,\t\n-0.661498159381116560,\t-0.661535655893638500,\t-0.661573150752321150,\t-0.661610643957070810,\t-0.661648135507793890,\t-0.661685625404397020,\t-0.661723113646785710,\t-0.661760600234866600,\t\n-0.661798085168546320,\t-0.661835568447730620,\t-0.661873050072325890,\t-0.661910530042238540,\t-0.661948008357375110,\t-0.661985485017641430,\t-0.662022960022944030,\t-0.662060433373189210,\t\n-0.662097905068283700,\t-0.662135375108133030,\t-0.662172843492643940,\t-0.662210310221722720,\t-0.662247775295276120,\t-0.662285238713209660,\t-0.662322700475430180,\t-0.662360160581843880,\t\n-0.662397619032357610,\t-0.662435075826876880,\t-0.662472530965308450,\t-0.662509984447558820,\t-0.662547436273534410,\t-0.662584886443141170,\t-0.662622334956285640,\t-0.662659781812874660,\t\n-0.662697227012813860,\t-0.662734670556009990,\t-0.662772112442369550,\t-0.662809552671799080,\t-0.662846991244204320,\t-0.662884428159492220,\t-0.662921863417568980,\t-0.662959297018341440,\t\n-0.662996728961715240,\t-0.663034159247597340,\t-0.663071587875893930,\t-0.663109014846511970,\t-0.663146440159357090,\t-0.663183863814336140,\t-0.663221285811355530,\t-0.663258706150322010,\t\n-0.663296124831141420,\t-0.663333541853720510,\t-0.663370957217966020,\t-0.663408370923783910,\t-0.663445782971080810,\t-0.663483193359763250,\t-0.663520602089738070,\t-0.663558009160911120,\t\n-0.663595414573189050,\t-0.663632818326478470,\t-0.663670220420686130,\t-0.663707620855717990,\t-0.663745019631480690,\t-0.663782416747880970,\t-0.663819812204825440,\t-0.663857206002220090,\t\n-0.663894598139971650,\t-0.663931988617986860,\t-0.663969377436172350,\t-0.664006764594434080,\t-0.664044150092678810,\t-0.664081533930813590,\t-0.664118916108744180,\t-0.664156296626377540,\t\n-0.664193675483620070,\t-0.664231052680378850,\t-0.664268428216559510,\t-0.664305802092069240,\t-0.664343174306814440,\t-0.664380544860701970,\t-0.664417913753637790,\t-0.664455280985528970,\t\n-0.664492646556281820,\t-0.664530010465803400,\t-0.664567372713999680,\t-0.664604733300777520,\t-0.664642092226043420,\t-0.664679449489704590,\t-0.664716805091666750,\t-0.664754159031836770,\t\n-0.664791511310121490,\t-0.664828861926427760,\t-0.664866210880661560,\t-0.664903558172729840,\t-0.664940903802539560,\t-0.664978247769996700,\t-0.665015590075008100,\t-0.665052930717480620,\t\n-0.665090269697321210,\t-0.665127607014435630,\t-0.665164942668731160,\t-0.665202276660114330,\t-0.665239608988492100,\t-0.665276939653770550,\t-0.665314268655856630,\t-0.665351595994656990,\t\n-0.665388921670078790,\t-0.665426245682027910,\t-0.665463568030411400,\t-0.665500888715135910,\t-0.665538207736108610,\t-0.665575525093235480,\t-0.665612840786423470,\t-0.665650154815579760,\t\n-0.665687467180610340,\t-0.665724777881422150,\t-0.665762086917922160,\t-0.665799394290017110,\t-0.665836699997613300,\t-0.665874004040617810,\t-0.665911306418937250,\t-0.665948607132478830,\t\n-0.665985906181148500,\t-0.666023203564853450,\t-0.666060499283500310,\t-0.666097793336996260,\t-0.666135085725247490,\t-0.666172376448160960,\t-0.666209665505643420,\t-0.666246952897602160,\t\n-0.666284238623943150,\t-0.666321522684573560,\t-0.666358805079400370,\t-0.666396085808329990,\t-0.666433364871269360,\t-0.666470642268125250,\t-0.666507917998804930,\t-0.666545192063214500,\t\n-0.666582464461261020,\t-0.666619735192851450,\t-0.666657004257892760,\t-0.666694271656291360,\t-0.666731537387954210,\t-0.666768801452788270,\t-0.666806063850700510,\t-0.666843324581597450,\t\n-0.666880583645385940,\t-0.666917841041973050,\t-0.666955096771265850,\t-0.666992350833170660,\t-0.667029603227594530,\t-0.667066853954444430,\t-0.667104103013627440,\t-0.667141350405049960,\t\n-0.667178596128618960,\t-0.667215840184241960,\t-0.667253082571824920,\t-0.667290323291275240,\t-0.667327562342499790,\t-0.667364799725405630,\t-0.667402035439899290,\t-0.667439269485887720,\t\n-0.667476501863278120,\t-0.667513732571977550,\t-0.667550961611892200,\t-0.667588188982929600,\t-0.667625414684996480,\t-0.667662638718000130,\t-0.667699861081846870,\t-0.667737081776443860,\t\n-0.667774300801698310,\t-0.667811518157517270,\t-0.667848733843807050,\t-0.667885947860475060,\t-0.667923160207428480,\t-0.667960370884573720,\t-0.667997579891818070,\t-0.668034787229068390,\t\n-0.668071992896232090,\t-0.668109196893215460,\t-0.668146399219925910,\t-0.668183599876270300,\t-0.668220798862156020,\t-0.668257996177489490,\t-0.668295191822177890,\t-0.668332385796128300,\t\n-0.668369578099248130,\t-0.668406768731443670,\t-0.668443957692622330,\t-0.668481144982691070,\t-0.668518330601557190,\t-0.668555514549127210,\t-0.668592696825308530,\t-0.668629877430008350,\t\n-0.668667056363133170,\t-0.668704233624590310,\t-0.668741409214286930,\t-0.668778583132130230,\t-0.668815755378026840,\t-0.668852925951884060,\t-0.668890094853608950,\t-0.668927262083109040,\t\n-0.668964427640290520,\t-0.669001591525061000,\t-0.669038753737327460,\t-0.669075914276997310,\t-0.669113073143977170,\t-0.669150230338174220,\t-0.669187385859495780,\t-0.669224539707849230,\t\n-0.669261691883140890,\t-0.669298842385278370,\t-0.669335991214169090,\t-0.669373138369719570,\t-0.669410283851837100,\t-0.669447427660428970,\t-0.669484569795402610,\t-0.669521710256664400,\t\n-0.669558849044122000,\t-0.669595986157682450,\t-0.669633121597253300,\t-0.669670255362741050,\t-0.669707387454053120,\t-0.669744517871096680,\t-0.669781646613779370,\t-0.669818773682007480,\t\n-0.669855899075688770,\t-0.669893022794730290,\t-0.669930144839039570,\t-0.669967265208523120,\t-0.670004383903088470,\t-0.670041500922643030,\t-0.670078616267093970,\t-0.670115729936348160,\t\n-0.670152841930312990,\t-0.670189952248896100,\t-0.670227060892003900,\t-0.670264167859544120,\t-0.670301273151423960,\t-0.670338376767550810,\t-0.670375478707831540,\t-0.670412578972173550,\t\n-0.670449677560484010,\t-0.670486774472670690,\t-0.670523869708640090,\t-0.670560963268299730,\t-0.670598055151557130,\t-0.670635145358319580,\t-0.670672233888493840,\t-0.670709320741987640,\t\n-0.670746405918708040,\t-0.670783489418562810,\t-0.670820571241458440,\t-0.670857651387302690,\t-0.670894729856003180,\t-0.670931806647466430,\t-0.670968881761600300,\t-0.671005955198311850,\t\n-0.671043026957508840,\t-0.671080097039097990,\t-0.671117165442986830,\t-0.671154232169082880,\t-0.671191297217293540,\t-0.671228360587525770,\t-0.671265422279687000,\t-0.671302482293684720,\t\n-0.671339540629426470,\t-0.671376597286819090,\t-0.671413652265770320,\t-0.671450705566187360,\t-0.671487757187977820,\t-0.671524807131048780,\t-0.671561855395307550,\t-0.671598901980662080,\t\n-0.671635946887019000,\t-0.671672990114286160,\t-0.671710031662370750,\t-0.671747071531180630,\t-0.671784109720622410,\t-0.671821146230604070,\t-0.671858181061032680,\t-0.671895214211816310,\t\n-0.671932245682861580,\t-0.671969275474076140,\t-0.672006303585367610,\t-0.672043330016643510,\t-0.672080354767810920,\t-0.672117377838777340,\t-0.672154399229450310,\t-0.672191418939737660,\t\n-0.672228436969546150,\t-0.672265453318783510,\t-0.672302467987357270,\t-0.672339480975175150,\t-0.672376492282144020,\t-0.672413501908171620,\t-0.672450509853165900,\t-0.672487516117033500,\t\n-0.672524520699682270,\t-0.672561523601019840,\t-0.672598524820953840,\t-0.672635524359391220,\t-0.672672522216239740,\t-0.672709518391407140,\t-0.672746512884800920,\t-0.672783505696328050,\t\n-0.672820496825896510,\t-0.672857486273413690,\t-0.672894474038787550,\t-0.672931460121924840,\t-0.672968444522733520,\t-0.673005427241121000,\t-0.673042408276995350,\t-0.673079387630263200,\t\n-0.673116365300832740,\t-0.673153341288611600,\t-0.673190315593506840,\t-0.673227288215426210,\t-0.673264259154277460,\t-0.673301228409968310,\t-0.673338195982405850,\t-0.673375161871497820,\t\n-0.673412126077151950,\t-0.673449088599275990,\t-0.673486049437777010,\t-0.673523008592562980,\t-0.673559966063541400,\t-0.673596921850620260,\t-0.673633875953706380,\t-0.673670828372707970,\t\n-0.673707779107532320,\t-0.673744728158087720,\t-0.673781675524280810,\t-0.673818621206019760,\t-0.673855565203212550,\t-0.673892507515766010,\t-0.673929448143588350,\t-0.673966387086586960,\t\n-0.674003324344669920,\t-0.674040259917744300,\t-0.674077193805717960,\t-0.674114126008498630,\t-0.674151056525994390,\t-0.674187985358112090,\t-0.674224912504759910,\t-0.674261837965845380,\t\n-0.674298761741276680,\t-0.674335683830960650,\t-0.674372604234805490,\t-0.674409522952718720,\t-0.674446439984608630,\t-0.674483355330381950,\t-0.674520268989946990,\t-0.674557180963211600,\t\n-0.674594091250082960,\t-0.674630999850469150,\t-0.674667906764277790,\t-0.674704811991416960,\t-0.674741715531793850,\t-0.674778617385316410,\t-0.674815517551892400,\t-0.674852416031429980,\t\n-0.674889312823836130,\t-0.674926207929019030,\t-0.674963101346886420,\t-0.674999993077346480,\t-0.675036883120306070,\t-0.675073771475673490,\t-0.675110658143356580,\t-0.675147543123263190,\t\n-0.675184426415300740,\t-0.675221308019377190,\t-0.675258187935400380,\t-0.675295066163278390,\t-0.675331942702918410,\t-0.675368817554228620,\t-0.675405690717117090,\t-0.675442562191491010,\t\n-0.675479431977258460,\t-0.675516300074327390,\t-0.675553166482605880,\t-0.675590031202001230,\t-0.675626894232421390,\t-0.675663755573774340,\t-0.675700615225968250,\t-0.675737473188910310,\t\n-0.675774329462508590,\t-0.675811184046671180,\t-0.675848036941306020,\t-0.675884888146320420,\t-0.675921737661622670,\t-0.675958585487120620,\t-0.675995431622722350,\t-0.676032276068335270,\t\n-0.676069118823867440,\t-0.676105959889227170,\t-0.676142799264321640,\t-0.676179636949059030,\t-0.676216472943347520,\t-0.676253307247094980,\t-0.676290139860208920,\t-0.676326970782597510,\t\n-0.676363800014168740,\t-0.676400627554830660,\t-0.676437453404490800,\t-0.676474277563057220,\t-0.676511100030438020,\t-0.676547920806541360,\t-0.676584739891274540,\t-0.676621557284545870,\t\n-0.676658372986263410,\t-0.676695186996335240,\t-0.676731999314668760,\t-0.676768809941172390,\t-0.676805618875754300,\t-0.676842426118321790,\t-0.676879231668783170,\t-0.676916035527046600,\t\n-0.676952837693020170,\t-0.676989638166611290,\t-0.677026436947728350,\t-0.677063234036279440,\t-0.677100029432172620,\t-0.677136823135315420,\t-0.677173615145616250,\t-0.677210405462982950,\t\n-0.677247194087324030,\t-0.677283981018546700,\t-0.677320766256559570,\t-0.677357549801270390,\t-0.677394331652587780,\t-0.677431111810418930,\t-0.677467890274672250,\t-0.677504667045256030,\t\n-0.677541442122078340,\t-0.677578215505046710,\t-0.677614987194069540,\t-0.677651757189055240,\t-0.677688525489911210,\t-0.677725292096545970,\t-0.677762057008867380,\t-0.677798820226783950,\t\n-0.677835581750203310,\t-0.677872341579033530,\t-0.677909099713183030,\t-0.677945856152559980,\t-0.677982610897072120,\t-0.678019363946627650,\t-0.678056115301134740,\t-0.678092864960501920,\t\n-0.678129612924636580,\t-0.678166359193447250,\t-0.678203103766842010,\t-0.678239846644729250,\t-0.678276587827016720,\t-0.678313327313612600,\t-0.678350065104425410,\t-0.678386801199362900,\t\n-0.678423535598333350,\t-0.678460268301244840,\t-0.678496999308006110,\t-0.678533728618524570,\t-0.678570456232708620,\t-0.678607182150466560,\t-0.678643906371706910,\t-0.678680628896337180,\t\n-0.678717349724265780,\t-0.678754068855401020,\t-0.678790786289651500,\t-0.678827502026924660,\t-0.678864216067128990,\t-0.678900928410172910,\t-0.678937639055964710,\t-0.678974348004412140,\t\n-0.679011055255423710,\t-0.679047760808907940,\t-0.679084464664772460,\t-0.679121166822925890,\t-0.679157867283276320,\t-0.679194566045732360,\t-0.679231263110201770,\t-0.679267958476593050,\t\n-0.679304652144814280,\t-0.679341344114774310,\t-0.679378034386380670,\t-0.679414722959541860,\t-0.679451409834166300,\t-0.679488095010162500,\t-0.679524778487438200,\t-0.679561460265901920,\t\n-0.679598140345461950,\t-0.679634818726027050,\t-0.679671495407504710,\t-0.679708170389803580,\t-0.679744843672832500,\t-0.679781515256498880,\t-0.679818185140711460,\t-0.679854853325378650,\t\n-0.679891519810408960,\t-0.679928184595710140,\t-0.679964847681190920,\t-0.680001509066759600,\t-0.680038168752324810,\t-0.680074826737794180,\t-0.680111483023076560,\t-0.680148137608080240,\t\n-0.680184790492713850,\t-0.680221441676885250,\t-0.680258091160502950,\t-0.680294738943475470,\t-0.680331385025711550,\t-0.680368029407118710,\t-0.680404672087605910,\t-0.680441313067081330,\t\n-0.680477952345453830,\t-0.680514589922631140,\t-0.680551225798522010,\t-0.680587859973035060,\t-0.680624492446078140,\t-0.680661123217560000,\t-0.680697752287389050,\t-0.680734379655474120,\t\n-0.680771005321722860,\t-0.680807629286044100,\t-0.680844251548346160,\t-0.680880872108538090,\t-0.680917490966527430,\t-0.680954108122223010,\t-0.680990723575533360,\t-0.681027337326367220,\t\n-0.681063949374632440,\t-0.681100559720237750,\t-0.681137168363091680,\t-0.681173775303102970,\t-0.681210380540179570,\t-0.681246984074230230,\t-0.681283585905163690,\t-0.681320186032887800,\t\n-0.681356784457311630,\t-0.681393381178343360,\t-0.681429976195891960,\t-0.681466569509865390,\t-0.681503161120172280,\t-0.681539751026721370,\t-0.681576339229421290,\t-0.681612925728180220,\t\n-0.681649510522906680,\t-0.681686093613509400,\t-0.681722674999897250,\t-0.681759254681978070,\t-0.681795832659660710,\t-0.681832408932853800,\t-0.681868983501466190,\t-0.681905556365405840,\t\n-0.681942127524581500,\t-0.681978696978902230,\t-0.682015264728275890,\t-0.682051830772611440,\t-0.682088395111817290,\t-0.682124957745802620,\t-0.682161518674475160,\t-0.682198077897743890,\t\n-0.682234635415517430,\t-0.682271191227704740,\t-0.682307745334213680,\t-0.682344297734953310,\t-0.682380848429832270,\t-0.682417397418759290,\t-0.682453944701642560,\t-0.682490490278390930,\t\n-0.682527034148913140,\t-0.682563576313118040,\t-0.682600116770913700,\t-0.682636655522209090,\t-0.682673192566912720,\t-0.682709727904933890,\t-0.682746261536180340,\t-0.682782793460561030,\t\n-0.682819323677985150,\t-0.682855852188360650,\t-0.682892378991596490,\t-0.682928904087601430,\t-0.682965427476284300,\t-0.683001949157553410,\t-0.683038469131317600,\t-0.683074987397485620,\t\n-0.683111503955966540,\t-0.683148018806668310,\t-0.683184531949500020,\t-0.683221043384370510,\t-0.683257553111188630,\t-0.683294061129862570,\t-0.683330567440301300,\t-0.683367072042413650,\t\n-0.683403574936108700,\t-0.683440076121294430,\t-0.683476575597880000,\t-0.683513073365774490,\t-0.683549569424885870,\t-0.683586063775123430,\t-0.683622556416395800,\t-0.683659047348612050,\t\n-0.683695536571680360,\t-0.683732024085509820,\t-0.683768509890009260,\t-0.683804993985087760,\t-0.683841476370653510,\t-0.683877957046615470,\t-0.683914436012882600,\t-0.683950913269363860,\t\n-0.683987388815967660,\t-0.684023862652602840,\t-0.684060334779178490,\t-0.684096805195603560,\t-0.684133273901786240,\t-0.684169740897635830,\t-0.684206206183061380,\t-0.684242669757971100,\t\n-0.684279131622274160,\t-0.684315591775879310,\t-0.684352050218695830,\t-0.684388506950631910,\t-0.684424961971596750,\t-0.684461415281499170,\t-0.684497866880248380,\t-0.684534316767752670,\t\n-0.684570764943921000,\t-0.684607211408662540,\t-0.684643656161886380,\t-0.684680099203500700,\t-0.684716540533414800,\t-0.684752980151537520,\t-0.684789418057778150,\t-0.684825854252044900,\t\n-0.684862288734247040,\t-0.684898721504293760,\t-0.684935152562093250,\t-0.684971581907555030,\t-0.685008009540587710,\t-0.685044435461100830,\t-0.685080859669002450,\t-0.685117282164201980,\t\n-0.685153702946608270,\t-0.685190122016130610,\t-0.685226539372677300,\t-0.685262955016157750,\t-0.685299368946480690,\t-0.685335781163555650,\t-0.685372191667290690,\t-0.685408600457595330,\t\n-0.685445007534378540,\t-0.685481412897549380,\t-0.685517816547016490,\t-0.685554218482689050,\t-0.685590618704476020,\t-0.685627017212286800,\t-0.685663414006029700,\t-0.685699809085614120,\t\n-0.685736202450949350,\t-0.685772594101943690,\t-0.685808984038506540,\t-0.685845372260546870,\t-0.685881758767974190,\t-0.685918143560696800,\t-0.685954526638624000,\t-0.685990908001664960,\t\n-0.686027287649728870,\t-0.686063665582724250,\t-0.686100041800560500,\t-0.686136416303146700,\t-0.686172789090392140,\t-0.686209160162205230,\t-0.686245529518495490,\t-0.686281897159171870,\t\n-0.686318263084143900,\t-0.686354627293319860,\t-0.686390989786609280,\t-0.686427350563921570,\t-0.686463709625165230,\t-0.686500066970249570,\t-0.686536422599083650,\t-0.686572776511577110,\t\n-0.686609128707638240,\t-0.686645479187176560,\t-0.686681827950101240,\t-0.686718174996321600,\t-0.686754520325746240,\t-0.686790863938284480,\t-0.686827205833845710,\t-0.686863546012339230,\t\n-0.686899884473673450,\t-0.686936221217758100,\t-0.686972556244502040,\t-0.687008889553815010,\t-0.687045221145605400,\t-0.687081551019782850,\t-0.687117879176256660,\t-0.687154205614935340,\t\n-0.687190530335728630,\t-0.687226853338545610,\t-0.687263174623295780,\t-0.687299494189887670,\t-0.687335812038230800,\t-0.687372128168234340,\t-0.687408442579807930,\t-0.687444755272860200,\t\n-0.687481066247300430,\t-0.687517375503038150,\t-0.687553683039982650,\t-0.687589988858042570,\t-0.687626292957127630,\t-0.687662595337146910,\t-0.687698895998010040,\t-0.687735194939625540,\t\n-0.687771492161903140,\t-0.687807787664752040,\t-0.687844081448081730,\t-0.687880373511800870,\t-0.687916663855819070,\t-0.687952952480045950,\t-0.687989239384390160,\t-0.688025524568761200,\t\n-0.688061808033068490,\t-0.688098089777221640,\t-0.688134369801129190,\t-0.688170648104700740,\t-0.688206924687845720,\t-0.688243199550473750,\t-0.688279472692493450,\t-0.688315744113814460,\t\n-0.688352013814346080,\t-0.688388281793998020,\t-0.688424548052678940,\t-0.688460812590298450,\t-0.688497075406765970,\t-0.688533336501991110,\t-0.688569595875882620,\t-0.688605853528350130,\t\n-0.688642109459303260,\t-0.688678363668650870,\t-0.688714616156302470,\t-0.688750866922167690,\t-0.688787115966155940,\t-0.688823363288176060,\t-0.688859608888137910,\t-0.688895852765950670,\t\n-0.688932094921524070,\t-0.688968335354766980,\t-0.689004574065589010,\t-0.689040811053899580,\t-0.689077046319608420,\t-0.689113279862624490,\t-0.689149511682857210,\t-0.689185741780216190,\t\n-0.689221970154611170,\t-0.689258196805950800,\t-0.689294421734145010,\t-0.689330644939103570,\t-0.689366866420735080,\t-0.689403086178949410,\t-0.689439304213656180,\t-0.689475520524764800,\t\n-0.689511735112184440,\t-0.689547947975824750,\t-0.689584159115595120,\t-0.689620368531405400,\t-0.689656576223164560,\t-0.689692782190782120,\t-0.689728986434167800,\t-0.689765188953231360,\t\n-0.689801389747881630,\t-0.689837588818028370,\t-0.689873786163581190,\t-0.689909981784449840,\t-0.689946175680543170,\t-0.689982367851771140,\t-0.690018558298043480,\t-0.690054747019269170,\t\n-0.690090934015357930,\t-0.690127119286219280,\t-0.690163302831763300,\t-0.690199484651898620,\t-0.690235664746535300,\t-0.690271843115582760,\t-0.690308019758951060,\t-0.690344194676548840,\t\n-0.690380367868286270,\t-0.690416539334072650,\t-0.690452709073818060,\t-0.690488877087431340,\t-0.690525043374822460,\t-0.690561207935901030,\t-0.690597370770576810,\t-0.690633531878758870,\t\n-0.690669691260357150,\t-0.690705848915281080,\t-0.690742004843440840,\t-0.690778159044745270,\t-0.690814311519104220,\t-0.690850462266427770,\t-0.690886611286624760,\t-0.690922758579605280,\t\n-0.690958904145278940,\t-0.690995047983555600,\t-0.691031190094344330,\t-0.691067330477555200,\t-0.691103469133097610,\t-0.691139606060881650,\t-0.691175741260816380,\t-0.691211874732811760,\t\n-0.691248006476777530,\t-0.691284136492623550,\t-0.691320264780258990,\t-0.691356391339593590,\t-0.691392516170537320,\t-0.691428639273000130,\t-0.691464760646890890,\t-0.691500880292119870,\t\n-0.691536998208596930,\t-0.691573114396231150,\t-0.691609228854932590,\t-0.691645341584611000,\t-0.691681452585176330,\t-0.691717561856537650,\t-0.691753669398605160,\t-0.691789775211288480,\t\n-0.691825879294497680,\t-0.691861981648141940,\t-0.691898082272131120,\t-0.691934181166375170,\t-0.691970278330784060,\t-0.692006373765266860,\t-0.692042467469733860,\t-0.692078559444094580,\t\n-0.692114649688259310,\t-0.692150738202137020,\t-0.692186824985637990,\t-0.692222910038672090,\t-0.692258993361148710,\t-0.692295074952977710,\t-0.692331154814069150,\t-0.692367232944333000,\t\n-0.692403309343678440,\t-0.692439384012015550,\t-0.692475456949254280,\t-0.692511528155304700,\t-0.692547597630075900,\t-0.692583665373478150,\t-0.692619731385421210,\t-0.692655795665815250,\t\n-0.692691858214569580,\t-0.692727919031594140,\t-0.692763978116798910,\t-0.692800035470094170,\t-0.692836091091388880,\t-0.692872144980593460,\t-0.692908197137617750,\t-0.692944247562371720,\t\n-0.692980296254764870,\t-0.693016343214707180,\t-0.693052388442108920,\t-0.693088431936879410,\t-0.693124473698928930,\t-0.693160513728167120,\t-0.693196552024504480,\t-0.693232588587850080,\t\n-0.693268623418114130,\t-0.693304656515206670,\t-0.693340687879037910,\t-0.693376717509517130,\t-0.693412745406554620,\t-0.693448771570060130,\t-0.693484795999944060,\t-0.693520818696115700,\t\n-0.693556839658485250,\t-0.693592858886962650,\t-0.693628876381458430,\t-0.693664892141881540,\t-0.693700906168142390,\t-0.693736918460151400,\t-0.693772929017817730,\t-0.693808937841051800,\t\n-0.693844944929763450,\t-0.693880950283863100,\t-0.693916953903260030,\t-0.693952955787864530,\t-0.693988955937586800,\t-0.694024954352336910,\t-0.694060951032024250,\t-0.694096945976559350,\t\n-0.694132939185851950,\t-0.694168930659812560,\t-0.694204920398350580,\t-0.694240908401376200,\t-0.694276894668799600,\t-0.694312879200531090,\t-0.694348861996480160,\t-0.694384843056556900,\t\n-0.694420822380672040,\t-0.694456799968734660,\t-0.694492775820655270,\t-0.694528749936344060,\t-0.694564722315711200,\t-0.694600692958666220,\t-0.694636661865119520,\t-0.694672629034981170,\t\n-0.694708594468161580,\t-0.694744558164570150,\t-0.694780520124117400,\t-0.694816480346713280,\t-0.694852438832268330,\t-0.694888395580691930,\t-0.694924350591894500,\t-0.694960303865786330,\t\n-0.694996255402277610,\t-0.695032205201277950,\t-0.695068153262697770,\t-0.695104099586447480,\t-0.695140044172436690,\t-0.695175987020575810,\t-0.695211928130774930,\t-0.695247867502944540,\t\n-0.695283805136994170,\t-0.695319741032834340,\t-0.695355675190375110,\t-0.695391607609527010,\t-0.695427538290199540,\t-0.695463467232303230,\t-0.695499394435748260,\t-0.695535319900445150,\t\n-0.695571243626303510,\t-0.695607165613233660,\t-0.695643085861145870,\t-0.695679004369950670,\t-0.695714921139557680,\t-0.695750836169877430,\t-0.695786749460820090,\t-0.695822661012296170,\t\n-0.695858570824215210,\t-0.695894478896487920,\t-0.695930385229024730,\t-0.695966289821735140,\t-0.696002192674530010,\t-0.696038093787319290,\t-0.696073993160013730,\t-0.696109890792522720,\t\n-0.696145786684757130,\t-0.696181680836627010,\t-0.696217573248043010,\t-0.696253463918914850,\t-0.696289352849152940,\t-0.696325240038667690,\t-0.696361125487369610,\t-0.696397009195168340,\t\n-0.696432891161974710,\t-0.696468771387698690,\t-0.696504649872251140,\t-0.696540526615541670,\t-0.696576401617480910,\t-0.696612274877979390,\t-0.696648146396946940,\t-0.696684016174293990,\t\n-0.696719884209931140,\t-0.696755750503768810,\t-0.696791615055716850,\t-0.696827477865685770,\t-0.696863338933586100,\t-0.696899198259328330,\t-0.696935055842822230,\t-0.696970911683978510,\t\n-0.697006765782707590,\t-0.697042618138919990,\t-0.697078468752525550,\t-0.697114317623434900,\t-0.697150164751558550,\t-0.697186010136807030,\t-0.697221853779090180,\t-0.697257695678318630,\t\n-0.697293535834403230,\t-0.697329374247253720,\t-0.697365210916780720,\t-0.697401045842894750,\t-0.697436879025506440,\t-0.697472710464525520,\t-0.697508540159862970,\t-0.697544368111429060,\t\n-0.697580194319134430,\t-0.697616018782889040,\t-0.697651841502603730,\t-0.697687662478188700,\t-0.697723481709554780,\t-0.697759299196611950,\t-0.697795114939270820,\t-0.697830928937441920,\t\n-0.697866741191035980,\t-0.697902551699962960,\t-0.697938360464133490,\t-0.697974167483458090,\t-0.698009972757847600,\t-0.698045776287211980,\t-0.698081578071461760,\t-0.698117378110508000,\t\n-0.698153176404260440,\t-0.698188972952630050,\t-0.698224767755527110,\t-0.698260560812862590,\t-0.698296352124546330,\t-0.698332141690489180,\t-0.698367929510601780,\t-0.698403715584794750,\t\n-0.698439499912978160,\t-0.698475282495062850,\t-0.698511063330959360,\t-0.698546842420578410,\t-0.698582619763830180,\t-0.698618395360625310,\t-0.698654169210874420,\t-0.698689941314488470,\t\n-0.698725711671377430,\t-0.698761480281452020,\t-0.698797247144623210,\t-0.698833012260801080,\t-0.698868775629896350,\t-0.698904537251819670,\t-0.698940297126481980,\t-0.698976055253793140,\t\n-0.699011811633664220,\t-0.699047566266005840,\t-0.699083319150728850,\t-0.699119070287743230,\t-0.699154819676959920,\t-0.699190567318289440,\t-0.699226313211642970,\t-0.699262057356930480,\t\n-0.699297799754062810,\t-0.699333540402950590,\t-0.699369279303504790,\t-0.699405016455635580,\t-0.699440751859253810,\t-0.699476485514270330,\t-0.699512217420595440,\t-0.699547947578140090,\t\n-0.699583675986814700,\t-0.699619402646530550,\t-0.699655127557197610,\t-0.699690850718726720,\t-0.699726572131028850,\t-0.699762291794014720,\t-0.699798009707594650,\t-0.699833725871679580,\t\n-0.699869440286180140,\t-0.699905152951007410,\t-0.699940863866071460,\t-0.699976573031283360,\t-0.700012280446553840,\t-0.700047986111793970,\t-0.700083690026913840,\t-0.700119392191824400,\t\n-0.700155092606436820,\t-0.700190791270661190,\t-0.700226488184408580,\t-0.700262183347589830,\t-0.700297876760115790,\t-0.700333568421896870,\t-0.700369258332844020,\t-0.700404946492868000,\t\n-0.700440632901879860,\t-0.700476317559789900,\t-0.700512000466509080,\t-0.700547681621948360,\t-0.700583361026018700,\t-0.700619038678630290,\t-0.700654714579694420,\t-0.700690388729121590,\t\n-0.700726061126823120,\t-0.700761731772709280,\t-0.700797400666691050,\t-0.700833067808679380,\t-0.700868733198585340,\t-0.700904396836319110,\t-0.700940058721791880,\t-0.700975718854914830,\t\n-0.701011377235598250,\t-0.701047033863753110,\t-0.701082688739290470,\t-0.701118341862121410,\t-0.701153993232156100,\t-0.701189642849305850,\t-0.701225290713481500,\t-0.701260936824594230,\t\n-0.701296581182554330,\t-0.701332223787273000,\t-0.701367864638661080,\t-0.701403503736629740,\t-0.701439141081089400,\t-0.701474776671951240,\t-0.701510410509126100,\t-0.701546042592525290,\t\n-0.701581672922058970,\t-0.701617301497638570,\t-0.701652928319175140,\t-0.701688553386579090,\t-0.701724176699761730,\t-0.701759798258633880,\t-0.701795418063106860,\t-0.701831036113090940,\t\n-0.701866652408497550,\t-0.701902266949237410,\t-0.701937879735221930,\t-0.701973490766361510,\t-0.702009100042567220,\t-0.702044707563750260,\t-0.702080313329821900,\t-0.702115917340692340,\t\n-0.702151519596273090,\t-0.702187120096474990,\t-0.702222718841209460,\t-0.702258315830386780,\t-0.702293911063918250,\t-0.702329504541715280,\t-0.702365096263688260,\t-0.702400686229748490,\t\n-0.702436274439807050,\t-0.702471860893775220,\t-0.702507445591563420,\t-0.702543028533083040,\t-0.702578609718244930,\t-0.702614189146960830,\t-0.702649766819140820,\t-0.702685342734696410,\t\n-0.702720916893538660,\t-0.702756489295578880,\t-0.702792059940727580,\t-0.702827628828896160,\t-0.702863195959995690,\t-0.702898761333937470,\t-0.702934324950632130,\t-0.702969886809990840,\t\n-0.703005446911924900,\t-0.703041005256345720,\t-0.703076561843163690,\t-0.703112116672290230,\t-0.703147669743636740,\t-0.703183221057113840,\t-0.703218770612632940,\t-0.703254318410104990,\t\n-0.703289864449441640,\t-0.703325408730553270,\t-0.703360951253351410,\t-0.703396492017747120,\t-0.703432031023651930,\t-0.703467568270976340,\t-0.703503103759631880,\t-0.703538637489529610,\t\n-0.703574169460581160,\t-0.703609699672696930,\t-0.703645228125788340,\t-0.703680754819766770,\t-0.703716279754543650,\t-0.703751802930029480,\t-0.703787324346135890,\t-0.703822844002774170,\t\n-0.703858361899855070,\t-0.703893878037290090,\t-0.703929392414990420,\t-0.703964905032867570,\t-0.704000415890832070,\t-0.704035924988795640,\t-0.704071432326669360,\t-0.704106937904364740,\t\n-0.704142441721792520,\t-0.704177943778864220,\t-0.704213444075491140,\t-0.704248942611584660,\t-0.704284439387055540,\t-0.704319934401815280,\t-0.704355427655775190,\t-0.704390919148846880,\t\n-0.704426408880940880,\t-0.704461896851968920,\t-0.704497383061842620,\t-0.704532867510472390,\t-0.704568350197770090,\t-0.704603831123646880,\t-0.704639310288014410,\t-0.704674787690783400,\t\n-0.704710263331865370,\t-0.704745737211171620,\t-0.704781209328613990,\t-0.704816679684102890,\t-0.704852148277550160,\t-0.704887615108866990,\t-0.704923080177965230,\t-0.704958543484755400,\t\n-0.704994005029149110,\t-0.705029464811057880,\t-0.705064922830393350,\t-0.705100379087066130,\t-0.705135833580987970,\t-0.705171286312070600,\t-0.705206737280224650,\t-0.705242186485361850,\t\n-0.705277633927393620,\t-0.705313079606231570,\t-0.705348523521786560,\t-0.705383965673970210,\t-0.705419406062694040,\t-0.705454844687869560,\t-0.705490281549407630,\t-0.705525716647220080,\t\n-0.705561149981218220,\t-0.705596581551313770,\t-0.705632011357417600,\t-0.705667439399441320,\t-0.705702865677296560,\t-0.705738290190894850,\t-0.705773712940147120,\t-0.705809133924965140,\t\n-0.705844553145260290,\t-0.705879970600944430,\t-0.705915386291928290,\t-0.705950800218123620,\t-0.705986212379442370,\t-0.706021622775795170,\t-0.706057031407093970,\t-0.706092438273250190,\t\n-0.706127843374175670,\t-0.706163246709781140,\t-0.706198648279978580,\t-0.706234048084679380,\t-0.706269446123795390,\t-0.706304842397237450,\t-0.706340236904917430,\t-0.706375629646746720,\t\n-0.706411020622637280,\t-0.706446409832500070,\t-0.706481797276246710,\t-0.706517182953788960,\t-0.706552566865038530,\t-0.706587949009906400,\t-0.706623329388304300,\t-0.706658708000144300,\t\n-0.706694084845337130,\t-0.706729459923794880,\t-0.706764833235428820,\t-0.706800204780151150,\t-0.706835574557872490,\t-0.706870942568505020,\t-0.706906308811960150,\t-0.706941673288149830,\t\n-0.706977035996984910,\t-0.707012396938377590,\t-0.707047756112239130,\t-0.707083113518481630,\t-0.707118469157016040,\t-0.707153823027754310,\t-0.707189175130607970,\t-0.707224525465489080,\t\n-0.707259874032308500,\t-0.707295220830978180,\t-0.707330565861410300,\t-0.707365909123515490,\t-0.707401250617206050,\t-0.707436590342393480,\t-0.707471928298989640,\t-0.707507264486905710,\t\n-0.707542598906053750,\t-0.707577931556345190,\t-0.707613262437692070,\t-0.707648591550005480,\t-0.707683918893197480,\t-0.707719244467179600,\t-0.707754568271864000,\t-0.707789890307161660,\t\n-0.707825210572984640,\t-0.707860529069244460,\t-0.707895845795853410,\t-0.707931160752722330,\t-0.707966473939763310,\t-0.708001785356888180,\t-0.708037095004008910,\t-0.708072402881036570,\t\n-0.708107708987883220,\t-0.708143013324460950,\t-0.708178315890680810,\t-0.708213616686454880,\t-0.708248915711694900,\t-0.708284212966312940,\t-0.708319508450220180,\t-0.708354802163328690,\t\n-0.708390094105549980,\t-0.708425384276796580,\t-0.708460672676979320,\t-0.708495959306010390,\t-0.708531244163801530,\t-0.708566527250264810,\t-0.708601808565311520,\t-0.708637088108853730,\t\n-0.708672365880803290,\t-0.708707641881072160,\t-0.708742916109571630,\t-0.708778188566213770,\t-0.708813459250910880,\t-0.708848728163573920,\t-0.708883995304115170,\t-0.708919260672446370,\t\n-0.708954524268479820,\t-0.708989786092126590,\t-0.709025046143298980,\t-0.709060304421908590,\t-0.709095560927867850,\t-0.709130815661087930,\t-0.709166068621480910,\t-0.709201319808958730,\t\n-0.709236569223433590,\t-0.709271816864816770,\t-0.709307062733020350,\t-0.709342306827956180,\t-0.709377549149536660,\t-0.709412789697672960,\t-0.709448028472277280,\t-0.709483265473261790,\t\n-0.709518500700537900,\t-0.709553734154017680,\t-0.709588965833613190,\t-0.709624195739236630,\t-0.709659423870799170,\t-0.709694650228213210,\t-0.709729874811390600,\t-0.709765097620243650,\t\n-0.709800318654683520,\t-0.709835537914622730,\t-0.709870755399973020,\t-0.709905971110646790,\t-0.709941185046555350,\t-0.709976397207610850,\t-0.710011607593725390,\t-0.710046816204811250,\t\n-0.710082023040779720,\t-0.710117228101543210,\t-0.710152431387013560,\t-0.710187632897103180,\t-0.710222832631723370,\t-0.710258030590786520,\t-0.710293226774204920,\t-0.710328421181889880,\t\n-0.710363613813753790,\t-0.710398804669708730,\t-0.710433993749666870,\t-0.710469181053539730,\t-0.710504366581239720,\t-0.710539550332678790,\t-0.710574732307769240,\t-0.710609912506422580,\t\n-0.710645090928551100,\t-0.710680267574066880,\t-0.710715442442882430,\t-0.710750615534908920,\t-0.710785786850059000,\t-0.710820956388244500,\t-0.710856124149377930,\t-0.710891290133370820,\t\n-0.710926454340135350,\t-0.710961616769584140,\t-0.710996777421628590,\t-0.711031936296181110,\t-0.711067093393153770,\t-0.711102248712458970,\t-0.711137402254008340,\t-0.711172554017714060,\t\n-0.711207704003488540,\t-0.711242852211243950,\t-0.711277998640892030,\t-0.711313143292345070,\t-0.711348286165515260,\t-0.711383427260315000,\t-0.711418566576655920,\t-0.711453704114450300,\t\n-0.711488839873610560,\t-0.711523973854048860,\t-0.711559106055677180,\t-0.711594236478407580,\t-0.711629365122152690,\t-0.711664491986824020,\t-0.711699617072334200,\t-0.711734740378595410,\t\n-0.711769861905519940,\t-0.711804981653019640,\t-0.711840099621006810,\t-0.711875215809393720,\t-0.711910330218092910,\t-0.711945442847016000,\t-0.711980553696075490,\t-0.712015662765183470,\t\n-0.712050770054252660,\t-0.712085875563194690,\t-0.712120979291921970,\t-0.712156081240346910,\t-0.712191181408381780,\t-0.712226279795938550,\t-0.712261376402929520,\t-0.712296471229267420,\t\n-0.712331564274863770,\t-0.712366655539631300,\t-0.712401745023482080,\t-0.712436832726328850,\t-0.712471918648083240,\t-0.712507002788657860,\t-0.712542085147964910,\t-0.712577165725917120,\t\n-0.712612244522426110,\t-0.712647321537404400,\t-0.712682396770764500,\t-0.712717470222418830,\t-0.712752541892279210,\t-0.712787611780258290,\t-0.712822679886268240,\t-0.712857746210221800,\t\n-0.712892810752030700,\t-0.712927873511607690,\t-0.712962934488864830,\t-0.712997993683715080,\t-0.713033051096069960,\t-0.713068106725842200,\t-0.713103160572944540,\t-0.713138212637288720,\t\n-0.713173262918787240,\t-0.713208311417352640,\t-0.713243358132897630,\t-0.713278403065333850,\t-0.713313446214574150,\t-0.713348487580530710,\t-0.713383527163116480,\t-0.713418564962243100,\t\n-0.713453600977823180,\t-0.713488635209769350,\t-0.713523667657994240,\t-0.713558698322409700,\t-0.713593727202928350,\t-0.713628754299462710,\t-0.713663779611925510,\t-0.713698803140228490,\t\n-0.713733824884284500,\t-0.713768844844006270,\t-0.713803863019305540,\t-0.713838879410095270,\t-0.713873894016287760,\t-0.713908906837795840,\t-0.713943917874531260,\t-0.713978927126406980,\t\n-0.714013934593335400,\t-0.714048940275229250,\t-0.714083944172000380,\t-0.714118946283561760,\t-0.714153946609825670,\t-0.714188945150705080,\t-0.714223941906111830,\t-0.714258936875958650,\t\n-0.714293930060158290,\t-0.714328921458623260,\t-0.714363911071265620,\t-0.714398898897998240,\t-0.714433884938733940,\t-0.714468869193384590,\t-0.714503851661863140,\t-0.714538832344082000,\t\n-0.714573811239954000,\t-0.714608788349391340,\t-0.714643763672306640,\t-0.714678737208612520,\t-0.714713708958221840,\t-0.714748678921046650,\t-0.714783647096999710,\t-0.714818613485993630,\t\n-0.714853578087941370,\t-0.714888540902754780,\t-0.714923501930346930,\t-0.714958461170630330,\t-0.714993418623517840,\t-0.715028374288921520,\t-0.715063328166754220,\t-0.715098280256928680,\t\n-0.715133230559357620,\t-0.715168179073953250,\t-0.715203125800628500,\t-0.715238070739296240,\t-0.715273013889868410,\t-0.715307955252257990,\t-0.715342894826377810,\t-0.715377832612140610,\t\n-0.715412768609458680,\t-0.715447702818244660,\t-0.715482635238411380,\t-0.715517565869871920,\t-0.715552494712538230,\t-0.715587421766323280,\t-0.715622347031139800,\t-0.715657270506900640,\t\n-0.715692192193518100,\t-0.715727112090905120,\t-0.715762030198974220,\t-0.715796946517638700,\t-0.715831861046810400,\t-0.715866773786402510,\t-0.715901684736327980,\t-0.715936593896499000,\t\n-0.715971501266828400,\t-0.716006406847229160,\t-0.716041310637614110,\t-0.716076212637895450,\t-0.716111112847986450,\t-0.716146011267799530,\t-0.716180907897247860,\t-0.716215802736243630,\t\n-0.716250695784700020,\t-0.716285587042529540,\t-0.716320476509645370,\t-0.716355364185959800,\t-0.716390250071385900,\t-0.716425134165836200,\t-0.716460016469224080,\t-0.716494896981461520,\t\n-0.716529775702461790,\t-0.716564652632137870,\t-0.716599527770402030,\t-0.716634401117167470,\t-0.716669272672346810,\t-0.716704142435853230,\t-0.716739010407599130,\t-0.716773876587497360,\t\n-0.716808740975460990,\t-0.716843603571403090,\t-0.716878464375235720,\t-0.716913323386872410,\t-0.716948180606225670,\t-0.716983036033208790,\t-0.717017889667734050,\t-0.717052741509714540,\t\n-0.717087591559063210,\t-0.717122439815693240,\t-0.717157286279516800,\t-0.717192130950447090,\t-0.717226973828397400,\t-0.717261814913280120,\t-0.717296654205008100,\t-0.717331491703494530,\t\n-0.717366327408652580,\t-0.717401161320394440,\t-0.717435993438633400,\t-0.717470823763282420,\t-0.717505652294254670,\t-0.717540479031462560,\t-0.717575303974819170,\t-0.717610127124237440,\t\n-0.717644948479630780,\t-0.717679768040911490,\t-0.717714585807992740,\t-0.717749401780787500,\t-0.717784215959209050,\t-0.717819028343169800,\t-0.717853838932582920,\t-0.717888647727361500,\t\n-0.717923454727418810,\t-0.717958259932667040,\t-0.717993063343019710,\t-0.718027864958390110,\t-0.718062664778690410,\t-0.718097462803834130,\t-0.718132259033734120,\t-0.718167053468303780,\t\n-0.718201846107455520,\t-0.718236636951102620,\t-0.718271425999158280,\t-0.718306213251535430,\t-0.718340998708146940,\t-0.718375782368905870,\t-0.718410564233725400,\t-0.718445344302518720,\t\n-0.718480122575198440,\t-0.718514899051677870,\t-0.718549673731870060,\t-0.718584446615688320,\t-0.718619217703045150,\t-0.718653986993853970,\t-0.718688754488028160,\t-0.718723520185480140,\t\n-0.718758284086123300,\t-0.718793046189870720,\t-0.718827806496635910,\t-0.718862565006331280,\t-0.718897321718870110,\t-0.718932076634165810,\t-0.718966829752131440,\t-0.719001581072679860,\t\n-0.719036330595724250,\t-0.719071078321177780,\t-0.719105824248953970,\t-0.719140568378965230,\t-0.719175310711125170,\t-0.719210051245346760,\t-0.719244789981543620,\t-0.719279526919628040,\t\n-0.719314262059513760,\t-0.719348995401114080,\t-0.719383726944341720,\t-0.719418456689109980,\t-0.719453184635332030,\t-0.719487910782921510,\t-0.719522635131790820,\t-0.719557357681853580,\t\n-0.719592078433022970,\t-0.719626797385212400,\t-0.719661514538334600,\t-0.719696229892303090,\t-0.719730943447030810,\t-0.719765655202431630,\t-0.719800365158417940,\t-0.719835073314903370,\t\n-0.719869779671801100,\t-0.719904484229024640,\t-0.719939186986486730,\t-0.719973887944100890,\t-0.720008587101780280,\t-0.720043284459438440,\t-0.720077980016988200,\t-0.720112673774342960,\t\n-0.720147365731416360,\t-0.720182055888121010,\t-0.720216744244370540,\t-0.720251430800078250,\t-0.720286115555157650,\t-0.720320798509521350,\t-0.720355479663083220,\t-0.720390159015756320,\t\n-0.720424836567454370,\t-0.720459512318089910,\t-0.720494186267576770,\t-0.720528858415828140,\t-0.720563528762757640,\t-0.720598197308278010,\t-0.720632864052302980,\t-0.720667528994745730,\t\n-0.720702192135519890,\t-0.720736853474538420,\t-0.720771513011714720,\t-0.720806170746962520,\t-0.720840826680194670,\t-0.720875480811324690,\t-0.720910133140266090,\t-0.720944783666932270,\t\n-0.720979432391236410,\t-0.721014079313091800,\t-0.721048724432412080,\t-0.721083367749110860,\t-0.721118009263100880,\t-0.721152648974295980,\t-0.721187286882609250,\t-0.721221922987954840,\t\n-0.721256557290245180,\t-0.721291189789394100,\t-0.721325820485315130,\t-0.721360449377921880,\t-0.721395076467127190,\t-0.721429701752844820,\t-0.721464325234988600,\t-0.721498946913471160,\t\n-0.721533566788206350,\t-0.721568184859107680,\t-0.721602801126088770,\t-0.721637415589062580,\t-0.721672028247942850,\t-0.721706639102643100,\t-0.721741248153076940,\t-0.721775855399157450,\t\n-0.721810460840798360,\t-0.721845064477913080,\t-0.721879666310415450,\t-0.721914266338218310,\t-0.721948864561235530,\t-0.721983460979380600,\t-0.722018055592567260,\t-0.722052648400708490,\t\n-0.722087239403718220,\t-0.722121828601509970,\t-0.722156415993997050,\t-0.722191001581092950,\t-0.722225585362711420,\t-0.722260167338766190,\t-0.722294747509170220,\t-0.722329325873837360,\t\n-0.722363902432681230,\t-0.722398477185615670,\t-0.722433050132553540,\t-0.722467621273408910,\t-0.722502190608095060,\t-0.722536758136526180,\t-0.722571323858615000,\t-0.722605887774275590,\t\n-0.722640449883421470,\t-0.722675010185966470,\t-0.722709568681823680,\t-0.722744125370906930,\t-0.722778680253129860,\t-0.722813233328406410,\t-0.722847784596649670,\t-0.722882334057773360,\t\n-0.722916881711691550,\t-0.722951427558317210,\t-0.722985971597564390,\t-0.723020513829346510,\t-0.723055054253577740,\t-0.723089592870170940,\t-0.723124129679040270,\t-0.723158664680099150,\t\n-0.723193197873261750,\t-0.723227729258441140,\t-0.723262258835551060,\t-0.723296786604505360,\t-0.723331312565218100,\t-0.723365836717602130,\t-0.723400359061571630,\t-0.723434879597040230,\t\n-0.723469398323921880,\t-0.723503915242129870,\t-0.723538430351577940,\t-0.723572943652180280,\t-0.723607455143849940,\t-0.723641964826500890,\t-0.723676472700047090,\t-0.723710978764402270,\t\n-0.723745483019479830,\t-0.723779985465193620,\t-0.723814486101457490,\t-0.723848984928185390,\t-0.723883481945290510,\t-0.723917977152686910,\t-0.723952470550288440,\t-0.723986962138009170,\t\n-0.724021451915762060,\t-0.724055939883461290,\t-0.724090426041020810,\t-0.724124910388354470,\t-0.724159392925375570,\t-0.724193873651998170,\t-0.724228352568136450,\t-0.724262829673703480,\t\n-0.724297304968613440,\t-0.724331778452780180,\t-0.724366250126117770,\t-0.724400719988539390,\t-0.724435188039959320,\t-0.724469654280291200,\t-0.724504118709449200,\t-0.724538581327346610,\t\n-0.724573042133897620,\t-0.724607501129016060,\t-0.724641958312616020,\t-0.724676413684610780,\t-0.724710867244914510,\t-0.724745318993440970,\t-0.724779768930104540,\t-0.724814217054818410,\t\n-0.724848663367496650,\t-0.724883107868053320,\t-0.724917550556402390,\t-0.724951991432457370,\t-0.724986430496132430,\t-0.725020867747341650,\t-0.725055303185998420,\t-0.725089736812016940,\t\n-0.725124168625311040,\t-0.725158598625795130,\t-0.725193026813382380,\t-0.725227453187986980,\t-0.725261877749523000,\t-0.725296300497904720,\t-0.725330721433045330,\t-0.725365140554859120,\t\n-0.725399557863260050,\t-0.725433973358162400,\t-0.725468387039479470,\t-0.725502798907125660,\t-0.725537208961014810,\t-0.725571617201061230,\t-0.725606023627178300,\t-0.725640428239280320,\t\n-0.725674831037281590,\t-0.725709232021095390,\t-0.725743631190636230,\t-0.725778028545817970,\t-0.725812424086554890,\t-0.725846817812760500,\t-0.725881209724349000,\t-0.725915599821234550,\t\n-0.725949988103331450,\t-0.725984374570552980,\t-0.726018759222813560,\t-0.726053142060027360,\t-0.726087523082108440,\t-0.726121902288970440,\t-0.726156279680527870,\t-0.726190655256694460,\t\n-0.726225029017384730,\t-0.726259400962512070,\t-0.726293771091991000,\t-0.726328139405735710,\t-0.726362505903659810,\t-0.726396870585677700,\t-0.726431233451703350,\t-0.726465594501651270,\t\n-0.726499953735434860,\t-0.726534311152968630,\t-0.726568666754166540,\t-0.726603020538943100,\t-0.726637372507211830,\t-0.726671722658887130,\t-0.726706070993883180,\t-0.726740417512114270,\t\n-0.726774762213494020,\t-0.726809105097936840,\t-0.726843446165357010,\t-0.726877785415668830,\t-0.726912122848785810,\t-0.726946458464622580,\t-0.726980792263093420,\t-0.727015124244111970,\t\n-0.727049454407592830,\t-0.727083782753449980,\t-0.727118109281597920,\t-0.727152433991950400,\t-0.727186756884421690,\t-0.727221077958926100,\t-0.727255397215378130,\t-0.727289714653691410,\t\n-0.727324030273780340,\t-0.727358344075559220,\t-0.727392656058942540,\t-0.727426966223843950,\t-0.727461274570177950,\t-0.727495581097858720,\t-0.727529885806800890,\t-0.727564188696917970,\t\n-0.727598489768124690,\t-0.727632789020335120,\t-0.727667086453463900,\t-0.727701382067424630,\t-0.727735675862131840,\t-0.727769967837500250,\t-0.727804257993443390,\t-0.727838546329875990,\t\n-0.727872832846712110,\t-0.727907117543866500,\t-0.727941400421252770,\t-0.727975681478785660,\t-0.728009960716379250,\t-0.728044238133948250,\t-0.728078513731406310,\t-0.728112787508668150,\t\n-0.728147059465647950,\t-0.728181329602260450,\t-0.728215597918419280,\t-0.728249864414039160,\t-0.728284129089034390,\t-0.728318391943319600,\t-0.728352652976808510,\t-0.728386912189415760,\t\n-0.728421169581056070,\t-0.728455425151643080,\t-0.728489678901091620,\t-0.728523930829315880,\t-0.728558180936230810,\t-0.728592429221749830,\t-0.728626675685787760,\t-0.728660920328259020,\t\n-0.728695163149078340,\t-0.728729404148159340,\t-0.728763643325416990,\t-0.728797880680765340,\t-0.728832116214119360,\t-0.728866349925392900,\t-0.728900581814500460,\t-0.728934811881356560,\t\n-0.728969040125875930,\t-0.729003266547972430,\t-0.729037491147560780,\t-0.729071713924555720,\t-0.729105934878871100,\t-0.729140154010421540,\t-0.729174371319121660,\t-0.729208586804886090,\t\n-0.729242800467628790,\t-0.729277012307264490,\t-0.729311222323707710,\t-0.729345430516873170,\t-0.729379636886674730,\t-0.729413841433027120,\t-0.729448044155844970,\t-0.729482245055043000,\t\n-0.729516444130535180,\t-0.729550641382236130,\t-0.729584836810060590,\t-0.729619030413923180,\t-0.729653222193737960,\t-0.729687412149419680,\t-0.729721600280882840,\t-0.729755786588042300,\t\n-0.729789971070812000,\t-0.729824153729106690,\t-0.729858334562841440,\t-0.729892513571929970,\t-0.729926690756287240,\t-0.729960866115827670,\t-0.729995039650466420,\t-0.730029211360117230,\t\n-0.730063381244694940,\t-0.730097549304114190,\t-0.730131715538289930,\t-0.730165879947136110,\t-0.730200042530567470,\t-0.730234203288498860,\t-0.730268362220845010,\t-0.730302519327519880,\t\n-0.730336674608438540,\t-0.730370828063515390,\t-0.730404979692665600,\t-0.730439129495803030,\t-0.730473277472842520,\t-0.730507423623699250,\t-0.730541567948287060,\t-0.730575710446521030,\t\n-0.730609851118315670,\t-0.730643989963585930,\t-0.730678126982245990,\t-0.730712262174210700,\t-0.730746395539394800,\t-0.730780527077713130,\t-0.730814656789079970,\t-0.730848784673409970,\t\n-0.730882910730618170,\t-0.730917034960619330,\t-0.730951157363327610,\t-0.730985277938658080,\t-0.731019396686525270,\t-0.731053513606844340,\t-0.731087628699529260,\t-0.731121741964495090,\t\n-0.731155853401656900,\t-0.731189963010928760,\t-0.731224070792225730,\t-0.731258176745462450,\t-0.731292280870554200,\t-0.731326383167414830,\t-0.731360483635959510,\t-0.731394582276102990,\t\n-0.731428679087760330,\t-0.731462774070845700,\t-0.731496867225273960,\t-0.731530958550960290,\t-0.731565048047819410,\t-0.731599135715765620,\t-0.731633221554713890,\t-0.731667305564579260,\t\n-0.731701387745276600,\t-0.731735468096720190,\t-0.731769546618825100,\t-0.731803623311506500,\t-0.731837698174678470,\t-0.731871771208256190,\t-0.731905842412154510,\t-0.731939911786288590,\t\n-0.731973979330572510,\t-0.732008045044921450,\t-0.732042108929250370,\t-0.732076170983474220,\t-0.732110231207507400,\t-0.732144289601264990,\t-0.732178346164661820,\t-0.732212400897613190,\t\n-0.732246453800033170,\t-0.732280504871837050,\t-0.732314554112939660,\t-0.732348601523256200,\t-0.732382647102700850,\t-0.732416690851188990,\t-0.732450732768635370,\t-0.732484772854955170,\t\n-0.732518811110062900,\t-0.732552847533873400,\t-0.732586882126302190,\t-0.732620914887263440,\t-0.732654945816672450,\t-0.732688974914444070,\t-0.732723002180493470,\t-0.732757027614735160,\t\n-0.732791051217084210,\t-0.732825072987455690,\t-0.732859092925764790,\t-0.732893111031925890,\t-0.732927127305854190,\t-0.732961141747464630,\t-0.732995154356672510,\t-0.733029165133392220,\t\n-0.733063174077539070,\t-0.733097181189027890,\t-0.733131186467774200,\t-0.733165189913692170,\t-0.733199191526697100,\t-0.733233191306704390,\t-0.733267189253628440,\t-0.733301185367384530,\t\n-0.733335179647887640,\t-0.733369172095053030,\t-0.733403162708795240,\t-0.733437151489029550,\t-0.733471138435671020,\t-0.733505123548634840,\t-0.733539106827835630,\t-0.733573088273188680,\t\n-0.733607067884608940,\t-0.733641045662011830,\t-0.733675021605311840,\t-0.733708995714424270,\t-0.733742967989264310,\t-0.733776938429747120,\t-0.733810907035787330,\t-0.733844873807300240,\t\n-0.733878838744201230,\t-0.733912801846404950,\t-0.733946763113826560,\t-0.733980722546381250,\t-0.734014680143984520,\t-0.734048635906550780,\t-0.734082589833995440,\t-0.734116541926233550,\t\n-0.734150492183180740,\t-0.734184440604751300,\t-0.734218387190860740,\t-0.734252331941424250,\t-0.734286274856357220,\t-0.734320215935574280,\t-0.734354155178990720,\t-0.734388092586521820,\t\n-0.734422028158082880,\t-0.734455961893588750,\t-0.734489893792954600,\t-0.734523823856095710,\t-0.734557752082927620,\t-0.734591678473364710,\t-0.734625603027322830,\t-0.734659525744717050,\t\n-0.734693446625462210,\t-0.734727365669473830,\t-0.734761282876666980,\t-0.734795198246957160,\t-0.734829111780259110,\t-0.734863023476488240,\t-0.734896933335559940,\t-0.734930841357389510,\t\n-0.734964747541891560,\t-0.734998651888981950,\t-0.735032554398575620,\t-0.735066455070588210,\t-0.735100353904934330,\t-0.735134250901529620,\t-0.735168146060289240,\t-0.735202039381128820,\t\n-0.735235930863962990,\t-0.735269820508707370,\t-0.735303708315277470,\t-0.735337594283587910,\t-0.735371478413554550,\t-0.735405360705092330,\t-0.735439241158117100,\t-0.735473119772543370,\t\n-0.735506996548287000,\t-0.735540871485263040,\t-0.735574744583387230,\t-0.735608615842574200,\t-0.735642485262739680,\t-0.735676352843798950,\t-0.735710218585667650,\t-0.735744082488260510,\t\n-0.735777944551493150,\t-0.735811804775280850,\t-0.735845663159539360,\t-0.735879519704183530,\t-0.735913374409128850,\t-0.735947227274290960,\t-0.735981078299584810,\t-0.736014927484925810,\t\n-0.736048774830229680,\t-0.736082620335411830,\t-0.736116464000387110,\t-0.736150305825071240,\t-0.736184145809379630,\t-0.736217983953227910,\t-0.736251820256530910,\t-0.736285654719204370,\t\n-0.736319487341163810,\t-0.736353318122324740,\t-0.736387147062602110,\t-0.736420974161911550,\t-0.736454799420168560,\t-0.736488622837289000,\t-0.736522444413187480,\t-0.736556264147779860,\t\n-0.736590082040981860,\t-0.736623898092708340,\t-0.736657712302875130,\t-0.736691524671397650,\t-0.736725335198191610,\t-0.736759143883171990,\t-0.736792950726254390,\t-0.736826755727354570,\t\n-0.736860558886388020,\t-0.736894360203269820,\t-0.736928159677915810,\t-0.736961957310241280,\t-0.736995753100162190,\t-0.737029547047593490,\t-0.737063339152450810,\t-0.737097129414649890,\t\n-0.737130917834106340,\t-0.737164704410735340,\t-0.737198489144452410,\t-0.737232272035173390,\t-0.737266053082813900,\t-0.737299832287289010,\t-0.737333609648514580,\t-0.737367385166406430,\t\n-0.737401158840879420,\t-0.737434930671849620,\t-0.737468700659232420,\t-0.737502468802943790,\t-0.737536235102898670,\t-0.737569999559013030,\t-0.737603762171202380,\t-0.737637522939382560,\t\n-0.737671281863468640,\t-0.737705038943376580,\t-0.737738794179021880,\t-0.737772547570320510,\t-0.737806299117187430,\t-0.737840048819538690,\t-0.737873796677289700,\t-0.737907542690356630,\t\n-0.737941286858654340,\t-0.737975029182098900,\t-0.738008769660606130,\t-0.738042508294091130,\t-0.738076245082469830,\t-0.738109980025658090,\t-0.738143713123571520,\t-0.738177444376125420,\t\n-0.738211173783235750,\t-0.738244901344818130,\t-0.738278627060788510,\t-0.738312350931062070,\t-0.738346072955554660,\t-0.738379793134182230,\t-0.738413511466860520,\t-0.738447227953504700,\t\n-0.738480942594030850,\t-0.738514655388354700,\t-0.738548366336392090,\t-0.738582075438058430,\t-0.738615782693269440,\t-0.738649488101941310,\t-0.738683191663989210,\t-0.738716893379329110,\t\n-0.738750593247876840,\t-0.738784291269548250,\t-0.738817987444258750,\t-0.738851681771924170,\t-0.738885374252460480,\t-0.738919064885783630,\t-0.738952753671808790,\t-0.738986440610452160,\t\n-0.739020125701629340,\t-0.739053808945256520,\t-0.739087490341248880,\t-0.739121169889522590,\t-0.739154847589993280,\t-0.739188523442577130,\t-0.739222197447189420,\t-0.739255869603746230,\t\n-0.739289539912163400,\t-0.739323208372356880,\t-0.739356874984242190,\t-0.739390539747735280,\t-0.739424202662752330,\t-0.739457863729208520,\t-0.739491522947020030,\t-0.739525180316102810,\t\n-0.739558835836372830,\t-0.739592489507745590,\t-0.739626141330137040,\t-0.739659791303463150,\t-0.739693439427640210,\t-0.739727085702583160,\t-0.739760730128208530,\t-0.739794372704432050,\t\n-0.739828013431170000,\t-0.739861652308337450,\t-0.739895289335850910,\t-0.739928924513626130,\t-0.739962557841579270,\t-0.739996189319625740,\t-0.740029818947681830,\t-0.740063446725663600,\t\n-0.740097072653486450,\t-0.740130696731066570,\t-0.740164318958320020,\t-0.740197939335162980,\t-0.740231557861510740,\t-0.740265174537279690,\t-0.740298789362385580,\t-0.740332402336744910,\t\n-0.740366013460272860,\t-0.740399622732885840,\t-0.740433230154499690,\t-0.740466835725030800,\t-0.740500439444394480,\t-0.740534041312507220,\t-0.740567641329284650,\t-0.740601239494643400,\t\n-0.740634835808498760,\t-0.740668430270766900,\t-0.740702022881364440,\t-0.740735613640206570,\t-0.740769202547209570,\t-0.740802789602289740,\t-0.740836374805363020,\t-0.740869958156345270,\t\n-0.740903539655152430,\t-0.740937119301700810,\t-0.740970697095906790,\t-0.741004273037685680,\t-0.741037847126953860,\t-0.741071419363627410,\t-0.741104989747622730,\t-0.741138558278855220,\t\n-0.741172124957241380,\t-0.741205689782697300,\t-0.741239252755139240,\t-0.741272813874482630,\t-0.741306373140644070,\t-0.741339930553539860,\t-0.741373486113085620,\t-0.741407039819197640,\t\n-0.741440591671791990,\t-0.741474141670785180,\t-0.741507689816092720,\t-0.741541236107631010,\t-0.741574780545316230,\t-0.741608323129064770,\t-0.741641863858792270,\t-0.741675402734415120,\t\n-0.741708939755849390,\t-0.741742474923011710,\t-0.741776008235817350,\t-0.741809539694183170,\t-0.741843069298025130,\t-0.741876597047259610,\t-0.741910122941802360,\t-0.741943646981569780,\t\n-0.741977169166478050,\t-0.742010689496443780,\t-0.742044207971382490,\t-0.742077724591210570,\t-0.742111239355844780,\t-0.742144752265200490,\t-0.742178263319194340,\t-0.742211772517742510,\t\n-0.742245279860761610,\t-0.742278785348167160,\t-0.742312288979875780,\t-0.742345790755803650,\t-0.742379290675867280,\t-0.742412788739982510,\t-0.742446284948065750,\t-0.742479779300033170,\t\n-0.742513271795801620,\t-0.742546762435286390,\t-0.742580251218404430,\t-0.742613738145071810,\t-0.742647223215205040,\t-0.742680706428719970,\t-0.742714187785533220,\t-0.742747667285561190,\t\n-0.742781144928719610,\t-0.742814620714925320,\t-0.742848094644094510,\t-0.742881566716143580,\t-0.742915036930988590,\t-0.742948505288545950,\t-0.742981971788732040,\t-0.743015436431463620,\t\n-0.743048899216656180,\t-0.743082360144226460,\t-0.743115819214090980,\t-0.743149276426166130,\t-0.743182731780367870,\t-0.743216185276612710,\t-0.743249636914817160,\t-0.743283086694897730,\t\n-0.743316534616770390,\t-0.743349980680351630,\t-0.743383424885558310,\t-0.743416867232306040,\t-0.743450307720511570,\t-0.743483746350091400,\t-0.743517183120962160,\t-0.743550618033039680,\t\n-0.743584051086240590,\t-0.743617482280481410,\t-0.743650911615678870,\t-0.743684339091748690,\t-0.743717764708607730,\t-0.743751188466172270,\t-0.743784610364359170,\t-0.743818030403084250,\t\n-0.743851448582264260,\t-0.743884864901815710,\t-0.743918279361655220,\t-0.743951691961698750,\t-0.743985102701863020,\t-0.744018511582064560,\t-0.744051918602220090,\t-0.744085323762245570,\t\n-0.744118727062057730,\t-0.744152128501573420,\t-0.744185528080708480,\t-0.744218925799379650,\t-0.744252321657503440,\t-0.744285715654996900,\t-0.744319107791775680,\t-0.744352498067756720,\t\n-0.744385886482856530,\t-0.744419273036991850,\t-0.744452657730078740,\t-0.744486040562033930,\t-0.744519421532774170,\t-0.744552800642215960,\t-0.744586177890275590,\t-0.744619553276869680,\t\n-0.744652926801914970,\t-0.744686298465328190,\t-0.744719668267025400,\t-0.744753036206923460,\t-0.744786402284939200,\t-0.744819766500988580,\t-0.744853128854988670,\t-0.744886489346855860,\t\n-0.744919847976507010,\t-0.744953204743858400,\t-0.744986559648826760,\t-0.745019912691328720,\t-0.745053263871281120,\t-0.745086613188600140,\t-0.745119960643202630,\t-0.745153306235005200,\t\n-0.745186649963924810,\t-0.745219991829877420,\t-0.745253331832780200,\t-0.745286669972549440,\t-0.745320006249102550,\t-0.745353340662355150,\t-0.745386673212224520,\t-0.745420003898627390,\t\n-0.745453332721480070,\t-0.745486659680699380,\t-0.745519984776202070,\t-0.745553308007904980,\t-0.745586629375724400,\t-0.745619948879577280,\t-0.745653266519380240,\t-0.745686582295050360,\t\n-0.745719896206503700,\t-0.745753208253657320,\t-0.745786518436427960,\t-0.745819826754732460,\t-0.745853133208487230,\t-0.745886437797609100,\t-0.745919740522014930,\t-0.745953041381621770,\t\n-0.745986340376345590,\t-0.746019637506103560,\t-0.746052932770812750,\t-0.746086226170389330,\t-0.746119517704750380,\t-0.746152807373812510,\t-0.746186095177493120,\t-0.746219381115708070,\t\n-0.746252665188374520,\t-0.746285947395409320,\t-0.746319227736729650,\t-0.746352506212251580,\t-0.746385782821892270,\t-0.746419057565568370,\t-0.746452330443197250,\t-0.746485601454695000,\t\n-0.746518870599978680,\t-0.746552137878965240,\t-0.746585403291571750,\t-0.746618666837714380,\t-0.746651928517310440,\t-0.746685188330276640,\t-0.746718446276530170,\t-0.746751702355987200,\t\n-0.746784956568565140,\t-0.746818208914180940,\t-0.746851459392750770,\t-0.746884708004192150,\t-0.746917954748421600,\t-0.746951199625356610,\t-0.746984442634913260,\t-0.747017683777008830,\t\n-0.747050923051560070,\t-0.747084160458484470,\t-0.747117395997698000,\t-0.747150629669118160,\t-0.747183861472661690,\t-0.747217091408245880,\t-0.747250319475787130,\t-0.747283545675202500,\t\n-0.747316770006408950,\t-0.747349992469323880,\t-0.747383213063863460,\t-0.747416431789944990,\t-0.747449648647485860,\t-0.747482863636402150,\t-0.747516076756611470,\t-0.747549288008030440,\t\n-0.747582497390576470,\t-0.747615704904166070,\t-0.747648910548716410,\t-0.747682114324144440,\t-0.747715316230367470,\t-0.747748516267301880,\t-0.747781714434865070,\t-0.747814910732973900,\t\n-0.747848105161545870,\t-0.747881297720497160,\t-0.747914488409745280,\t-0.747947677229207190,\t-0.747980864178800160,\t-0.748014049258440620,\t-0.748047232468046050,\t-0.748080413807533650,\t\n-0.748113593276819920,\t-0.748146770875822260,\t-0.748179946604457520,\t-0.748213120462643320,\t-0.748246292450296060,\t-0.748279462567333020,\t-0.748312630813671390,\t-0.748345797189228450,\t\n-0.748378961693920600,\t-0.748412124327665460,\t-0.748445285090380000,\t-0.748478443981981600,\t-0.748511601002386780,\t-0.748544756151513060,\t-0.748577909429277380,\t-0.748611060835597140,\t\n-0.748644210370389080,\t-0.748677358033570490,\t-0.748710503825058440,\t-0.748743647744770420,\t-0.748776789792623080,\t-0.748809929968533570,\t-0.748843068272419750,\t-0.748876204704197910,\t\n-0.748909339263785560,\t-0.748942471951099750,\t-0.748975602766058120,\t-0.749008731708577180,\t-0.749041858778574430,\t-0.749074983975967060,\t-0.749108107300672450,\t-0.749141228752607360,\t\n-0.749174348331689170,\t-0.749207466037835170,\t-0.749240581870962650,\t-0.749273695830988460,\t-0.749306807917830110,\t-0.749339918131404660,\t-0.749373026471629730,\t-0.749406132938421950,\t\n-0.749439237531698720,\t-0.749472340251377770,\t-0.749505441097375710,\t-0.749538540069610070,\t-0.749571637167998130,\t-0.749604732392457280,\t-0.749637825742904270,\t-0.749670917219256720,\t\n-0.749704006821431900,\t-0.749737094549347340,\t-0.749770180402919870,\t-0.749803264382066900,\t-0.749836346486705720,\t-0.749869426716753940,\t-0.749902505072128300,\t-0.749935581552746420,\t\n-0.749968656158525590,\t-0.750001728889383430,\t-0.750034799745236680,\t-0.750067868726002950,\t-0.750100935831599760,\t-0.750134001061943940,\t-0.750167064416953130,\t-0.750200125896544720,\t\n-0.750233185500636220,\t-0.750266243229144480,\t-0.750299299081987110,\t-0.750332353059081520,\t-0.750365405160345330,\t-0.750398455385695380,\t-0.750431503735049300,\t-0.750464550208324370,\t\n-0.750497594805438430,\t-0.750530637526308220,\t-0.750563678370851360,\t-0.750596717338985360,\t-0.750629754430627740,\t-0.750662789645695550,\t-0.750695822984106420,\t-0.750728854445777640,\t\n-0.750761884030627050,\t-0.750794911738571490,\t-0.750827937569528590,\t-0.750860961523416190,\t-0.750893983600151140,\t-0.750927003799651050,\t-0.750960022121833440,\t-0.750993038566616030,\t\n-0.751026053133915910,\t-0.751059065823650450,\t-0.751092076635737520,\t-0.751125085570094500,\t-0.751158092626638570,\t-0.751191097805287370,\t-0.751224101105958500,\t-0.751257102528569700,\t\n-0.751290102073037810,\t-0.751323099739280580,\t-0.751356095527215610,\t-0.751389089436760750,\t-0.751422081467832960,\t-0.751455071620349860,\t-0.751488059894229400,\t-0.751521046289388430,\t\n-0.751554030805744900,\t-0.751587013443216320,\t-0.751619994201720430,\t-0.751652973081174290,\t-0.751685950081495750,\t-0.751718925202602420,\t-0.751751898444411930,\t-0.751784869806841450,\t\n-0.751817839289808720,\t-0.751850806893231470,\t-0.751883772617027550,\t-0.751916736461113900,\t-0.751949698425408260,\t-0.751982658509828480,\t-0.752015616714292400,\t-0.752048573038716860,\t\n-0.752081527483019930,\t-0.752114480047119560,\t-0.752147430730932600,\t-0.752180379534377110,\t-0.752213326457370600,\t-0.752246271499831140,\t-0.752279214661675690,\t-0.752312155942822190,\t\n-0.752345095343188270,\t-0.752378032862692000,\t-0.752410968501250330,\t-0.752443902258781220,\t-0.752476834135202280,\t-0.752509764130431690,\t-0.752542692244386300,\t-0.752575618476984180,\t\n-0.752608542828143050,\t-0.752641465297780870,\t-0.752674385885814700,\t-0.752707304592162620,\t-0.752740221416742460,\t-0.752773136359471520,\t-0.752806049420267740,\t-0.752838960599048760,\t\n-0.752871869895732740,\t-0.752904777310236860,\t-0.752937682842478970,\t-0.752970586492376800,\t-0.753003488259848420,\t-0.753036388144811110,\t-0.753069286147182830,\t-0.753102182266881300,\t\n-0.753135076503824720,\t-0.753167968857930030,\t-0.753200859329115510,\t-0.753233747917298800,\t-0.753266634622397960,\t-0.753299519444330270,\t-0.753332402383013800,\t-0.753365283438366400,\t\n-0.753398162610305900,\t-0.753431039898749820,\t-0.753463915303616230,\t-0.753496788824822960,\t-0.753529660462287530,\t-0.753562530215928010,\t-0.753595398085662000,\t-0.753628264071407930,\t\n-0.753661128173082840,\t-0.753693990390604920,\t-0.753726850723892010,\t-0.753759709172862280,\t-0.753792565737433030,\t-0.753825420417522320,\t-0.753858273213048100,\t-0.753891124123928450,\t\n-0.753923973150080750,\t-0.753956820291423080,\t-0.753989665547873390,\t-0.754022508919349850,\t-0.754055350405769650,\t-0.754088190007051180,\t-0.754121027723112400,\t-0.754153863553870930,\t\n-0.754186697499244610,\t-0.754219529559151610,\t-0.754252359733510120,\t-0.754285188022237430,\t-0.754318014425251810,\t-0.754350838942471120,\t-0.754383661573813540,\t-0.754416482319196670,\t\n-0.754449301178538480,\t-0.754482118151757030,\t-0.754514933238770610,\t-0.754547746439496620,\t-0.754580557753853240,\t-0.754613367181758420,\t-0.754646174723130560,\t-0.754678980377886830,\t\n-0.754711784145945750,\t-0.754744586027225490,\t-0.754777386021643460,\t-0.754810184129117930,\t-0.754842980349567090,\t-0.754875774682908900,\t-0.754908567129061070,\t-0.754941357687941910,\t\n-0.754974146359469240,\t-0.755006933143561490,\t-0.755039718040136140,\t-0.755072501049111500,\t-0.755105282170405620,\t-0.755138061403936800,\t-0.755170838749622540,\t-0.755203614207381250,\t\n-0.755236387777130870,\t-0.755269159458789810,\t-0.755301929252275570,\t-0.755334697157506450,\t-0.755367463174400620,\t-0.755400227302876480,\t-0.755432989542851430,\t-0.755465749894243870,\t\n-0.755498508356972300,\t-0.755531264930954130,\t-0.755564019616107860,\t-0.755596772412351460,\t-0.755629523319603540,\t-0.755662272337781380,\t-0.755695019466803620,\t-0.755727764706588310,\t\n-0.755760508057053750,\t-0.755793249518117770,\t-0.755825989089698670,\t-0.755858726771714510,\t-0.755891462564083900,\t-0.755924196466724260,\t-0.755956928479554200,\t-0.755989658602491790,\t\n-0.756022386835455640,\t-0.756055113178363050,\t-0.756087837631132850,\t-0.756120560193683120,\t-0.756153280865931920,\t-0.756185999647797420,\t-0.756218716539197920,\t-0.756251431540051920,\t\n-0.756284144650277050,\t-0.756316855869791920,\t-0.756349565198514600,\t-0.756382272636363600,\t-0.756414978183256650,\t-0.756447681839112260,\t-0.756480383603848620,\t-0.756513083477384330,\t\n-0.756545781459637130,\t-0.756578477550525320,\t-0.756611171749967500,\t-0.756643864057881870,\t-0.756676554474186360,\t-0.756709242998799600,\t-0.756741929631639780,\t-0.756774614372625050,\t\n-0.756807297221673610,\t-0.756839978178704080,\t-0.756872657243635060,\t-0.756905334416383860,\t-0.756938009696869420,\t-0.756970683085009810,\t-0.757003354580723540,\t-0.757036024183928900,\t\n-0.757068691894544290,\t-0.757101357712487880,\t-0.757134021637678070,\t-0.757166683670033150,\t-0.757199343809471510,\t-0.757232002055911680,\t-0.757264658409272260,\t-0.757297312869470660,\t\n-0.757329965436425830,\t-0.757362616110056620,\t-0.757395264890280310,\t-0.757427911777015740,\t-0.757460556770181540,\t-0.757493199869695880,\t-0.757525841075477160,\t-0.757558480387443890,\t\n-0.757591117805514470,\t-0.757623753329607190,\t-0.757656386959640660,\t-0.757689018695532960,\t-0.757721648537202810,\t-0.757754276484569170,\t-0.757786902537549210,\t-0.757819526696062010,\t\n-0.757852148960025950,\t-0.757884769329360110,\t-0.757917387803981770,\t-0.757950004383809990,\t-0.757982619068763190,\t-0.758015231858759850,\t-0.758047842753718390,\t-0.758080451753557320,\t\n-0.758113058858195130,\t-0.758145664067550350,\t-0.758178267381541370,\t-0.758210868800086700,\t-0.758243468323105410,\t-0.758276065950515000,\t-0.758308661682234320,\t-0.758341255518181990,\t\n-0.758373847458277180,\t-0.758406437502437080,\t-0.758439025650580970,\t-0.758471611902627240,\t-0.758504196258494520,\t-0.758536778718101210,\t-0.758569359281366040,\t-0.758601937948207410,\t\n-0.758634514718544040,\t-0.758667089592294340,\t-0.758699662569376930,\t-0.758732233649710870,\t-0.758764802833213680,\t-0.758797370119804530,\t-0.758829935509401920,\t-0.758862499001925040,\t\n-0.758895060597291280,\t-0.758927620295420050,\t-0.758960178096229620,\t-0.758992733999638740,\t-0.759025288005566120,\t-0.759057840113930180,\t-0.759090390324649640,\t-0.759122938637643240,\t\n-0.759155485052829370,\t-0.759188029570126880,\t-0.759220572189454270,\t-0.759253112910730830,\t-0.759285651733873970,\t-0.759318188658803070,\t-0.759350723685437210,\t-0.759383256813694010,\t\n-0.759415788043492630,\t-0.759448317374751820,\t-0.759480844807390200,\t-0.759513370341326380,\t-0.759545893976479310,\t-0.759578415712767410,\t-0.759610935550109390,\t-0.759643453488424210,\t\n-0.759675969527630280,\t-0.759708483667646430,\t-0.759740995908391950,\t-0.759773506249784350,\t-0.759806014691743140,\t-0.759838521234186710,\t-0.759871025877034700,\t-0.759903528620204490,\t\n-0.759936029463615490,\t-0.759968528407186430,\t-0.760001025450835920,\t-0.760033520594483040,\t-0.760066013838046170,\t-0.760098505181444390,\t-0.760130994624596320,\t-0.760163482167420800,\t\n-0.760195967809836450,\t-0.760228451551762880,\t-0.760260933393117620,\t-0.760293413333819950,\t-0.760325891373788700,\t-0.760358367512943390,\t-0.760390841751201530,\t-0.760423314088482630,\t\n-0.760455784524705410,\t-0.760488253059788730,\t-0.760520719693651430,\t-0.760553184426212340,\t-0.760585647257390310,\t-0.760618108187104070,\t-0.760650567215272580,\t-0.760683024341814780,\t\n-0.760715479566649870,\t-0.760747932889695780,\t-0.760780384310871800,\t-0.760812833830096900,\t-0.760845281447290470,\t-0.760877727162370230,\t-0.760910170975255710,\t-0.760942612885865730,\t\n-0.760975052894119260,\t-0.761007490999935140,\t-0.761039927203232210,\t-0.761072361503929650,\t-0.761104793901946080,\t-0.761137224397200440,\t-0.761169652989611810,\t-0.761202079679099140,\t\n-0.761234504465581720,\t-0.761266927348977500,\t-0.761299348329205980,\t-0.761331767406186690,\t-0.761364184579837340,\t-0.761396599850077680,\t-0.761429013216826320,\t-0.761461424680002550,\t\n-0.761493834239525210,\t-0.761526241895313260,\t-0.761558647647285650,\t-0.761591051495361440,\t-0.761623453439459700,\t-0.761655853479499270,\t-0.761688251615399210,\t-0.761720647847079050,\t\n-0.761753042174456720,\t-0.761785434597451850,\t-0.761817825115983280,\t-0.761850213729970860,\t-0.761882600439332200,\t-0.761914985243987150,\t-0.761947368143854550,\t-0.761979749138853580,\t\n-0.762012128228903180,\t-0.762044505413922550,\t-0.762076880693830620,\t-0.762109254068546460,\t-0.762141625537989140,\t-0.762173995102077840,\t-0.762206362760732060,\t-0.762238728513869760,\t\n-0.762271092361410770,\t-0.762303454303273950,\t-0.762335814339379140,\t-0.762368172469644170,\t-0.762400528693988780,\t-0.762432883012332030,\t-0.762465235424593100,\t-0.762497585930691060,\t\n-0.762529934530545180,\t-0.762562281224074320,\t-0.762594626011197760,\t-0.762626968891834790,\t-0.762659309865904240,\t-0.762691648933326080,\t-0.762723986094018150,\t-0.762756321347900280,\t\n-0.762788654694891650,\t-0.762820986134911890,\t-0.762853315667879170,\t-0.762885643293713110,\t-0.762917969012332890,\t-0.762950292823657890,\t-0.762982614727607090,\t-0.763014934724099760,\t\n-0.763047252813054970,\t-0.763079568994392220,\t-0.763111883268030480,\t-0.763144195633889020,\t-0.763176506091887140,\t-0.763208814641944460,\t-0.763241121283979250,\t-0.763273426017911150,\t\n-0.763305728843660100,\t-0.763338029761144290,\t-0.763370328770283210,\t-0.763402625870996390,\t-0.763434921063202990,\t-0.763467214346822300,\t-0.763499505721773610,\t-0.763531795187976090,\t\n-0.763564082745349150,\t-0.763596368393811950,\t-0.763628652133283900,\t-0.763660933963684170,\t-0.763693213884932610,\t-0.763725491896947610,\t-0.763757767999648670,\t-0.763790042192955430,\t\n-0.763822314476787720,\t-0.763854584851063500,\t-0.763886853315702940,\t-0.763919119870625220,\t-0.763951384515749620,\t-0.763983647250995660,\t-0.764015908076282610,\t-0.764048166991529660,\t\n-0.764080423996656320,\t-0.764112679091581980,\t-0.764144932276225930,\t-0.764177183550508120,\t-0.764209432914346840,\t-0.764241680367661820,\t-0.764273925910372800,\t-0.764306169542399380,\t\n-0.764338411263659980,\t-0.764370651074074650,\t-0.764402888973562570,\t-0.764435124962043360,\t-0.764467359039436300,\t-0.764499591205660910,\t-0.764531821460636470,\t-0.764564049804282500,\t\n-0.764596276236518380,\t-0.764628500757263520,\t-0.764660723366438090,\t-0.764692944063960270,\t-0.764725162849750010,\t-0.764757379723726820,\t-0.764789594685810870,\t-0.764821807735920340,\t\n-0.764854018873975190,\t-0.764886228099895150,\t-0.764918435413599380,\t-0.764950640815007630,\t-0.764982844304039290,\t-0.765015045880613750,\t-0.765047245544650640,\t-0.765079443296069470,\t\n-0.765111639134789630,\t-0.765143833060730640,\t-0.765176025073812770,\t-0.765208215173954210,\t-0.765240403361075020,\t-0.765272589635095480,\t-0.765304773995933880,\t-0.765336956443510410,\t\n-0.765369136977744450,\t-0.765401315598555730,\t-0.765433492305863660,\t-0.765465667099587850,\t-0.765497839979647930,\t-0.765530010945963400,\t-0.765562179998453880,\t-0.765594347137038780,\t\n-0.765626512361637920,\t-0.765658675672171380,\t-0.765690837068557450,\t-0.765722996550716520,\t-0.765755154118568090,\t-0.765787309772032350,\t-0.765819463511027700,\t-0.765851615335474520,\t\n-0.765883765245292230,\t-0.765915913240400540,\t-0.765948059320718970,\t-0.765980203486167350,\t-0.766012345736665210,\t-0.766044486072132160,\t-0.766076624492487920,\t-0.766108760997652240,\t\n-0.766140895587545060,\t-0.766173028262085110,\t-0.766205159021192680,\t-0.766237287864787180,\t-0.766269414792789210,\t-0.766301539805117060,\t-0.766333662901691030,\t-0.766365784082430830,\t\n-0.766397903347256330,\t-0.766430020696086900,\t-0.766462136128842510,\t-0.766494249645442660,\t-0.766526361245807310,\t-0.766558470929856070,\t-0.766590578697508570,\t-0.766622684548685210,\t\n-0.766654788483304590,\t-0.766686890501287020,\t-0.766718990602552110,\t-0.766751088787020470,\t-0.766783185054610410,\t-0.766815279405242410,\t-0.766847371838836220,\t-0.766879462355311680,\t\n-0.766911550954588410,\t-0.766943637636586240,\t-0.766975722401225020,\t-0.767007805248424490,\t-0.767039886178104370,\t-0.767071965190184610,\t-0.767104042284584950,\t-0.767136117461225790,\t\n-0.767168190720025620,\t-0.767200262060905080,\t-0.767232331483784450,\t-0.767264398988582450,\t-0.767296464575219380,\t-0.767328528243615190,\t-0.767360589993689720,\t-0.767392649825362700,\t\n-0.767424707738554090,\t-0.767456763733183720,\t-0.767488817809171330,\t-0.767520869966437090,\t-0.767552920204900510,\t-0.767584968524481660,\t-0.767617014925101040,\t-0.767649059406677270,\t\n-0.767681101969130860,\t-0.767713142612381660,\t-0.767745181336350170,\t-0.767777218140955230,\t-0.767809253026117130,\t-0.767841285991756050,\t-0.767873317037791710,\t-0.767905346164143960,\t\n-0.767937373370732980,\t-0.767969398657478490,\t-0.768001422024300550,\t-0.768033443471119020,\t-0.768065462997853940,\t-0.768097480604425730,\t-0.768129496290753220,\t-0.768161510056757040,\t\n-0.768193521902357010,\t-0.768225531827473770,\t-0.768257539832026160,\t-0.768289545915934680,\t-0.768321550079119290,\t-0.768353552321500040,\t-0.768385552642997020,\t-0.768417551043530040,\t\n-0.768449547523019080,\t-0.768481542081384420,\t-0.768513534718545890,\t-0.768545525434423450,\t-0.768577514228937720,\t-0.768609501102007760,\t-0.768641486053553980,\t-0.768673469083496430,\t\n-0.768705450191755850,\t-0.768737429378251180,\t-0.768769406642902720,\t-0.768801381985630860,\t-0.768833355406355560,\t-0.768865326904996870,\t-0.768897296481474870,\t-0.768929264135709610,\t\n-0.768961229867621170,\t-0.768993193677129590,\t-0.769025155564155070,\t-0.769057115528617770,\t-0.769089073570438100,\t-0.769121029689535330,\t-0.769152983885829870,\t-0.769184936159242550,\t\n-0.769216886509692330,\t-0.769248834937099950,\t-0.769280781441385340,\t-0.769312726022468920,\t-0.769344668680270630,\t-0.769376609414710640,\t-0.769408548225709140,\t-0.769440485113186300,\t\n-0.769472420077062290,\t-0.769504353117257180,\t-0.769536284233691140,\t-0.769568213426285010,\t-0.769600140694957750,\t-0.769632066039630190,\t-0.769663989460222410,\t-0.769695910956655240,\t\n-0.769727830528847750,\t-0.769759748176720660,\t-0.769791663900194160,\t-0.769823577699188520,\t-0.769855489573623930,\t-0.769887399523420670,\t-0.769919307548498910,\t-0.769951213648778830,\t\n-0.769983117824180830,\t-0.770015020074624860,\t-0.770046920400032090,\t-0.770078818800321250,\t-0.770110715275413530,\t-0.770142609825228970,\t-0.770174502449688440,\t-0.770206393148711090,\t\n-0.770238281922217770,\t-0.770270168770128770,\t-0.770302053692364260,\t-0.770333936688844760,\t-0.770365817759490310,\t-0.770397696904221330,\t-0.770429574122958090,\t-0.770461449415621000,\t\n-0.770493322782130230,\t-0.770525194222406730,\t-0.770557063736369560,\t-0.770588931323939910,\t-0.770620796985037830,\t-0.770652660719584380,\t-0.770684522527498640,\t-0.770716382408701660,\t\n-0.770748240363113730,\t-0.770780096390655150,\t-0.770811950491246400,\t-0.770843802664807680,\t-0.770875652911259480,\t-0.770907501230522210,\t-0.770939347622516150,\t-0.770971192087161690,\t\n-0.771003034624379910,\t-0.771034875234089870,\t-0.771066713916212730,\t-0.771098550670668680,\t-0.771130385497379000,\t-0.771162218396262640,\t-0.771194049367240790,\t-0.771225878410233820,\t\n-0.771257705525162150,\t-0.771289530711946170,\t-0.771321353970506380,\t-0.771353175300763310,\t-0.771384994702637220,\t-0.771416812176048630,\t-0.771448627720918050,\t-0.771480441337165870,\t\n-0.771512253024713160,\t-0.771544062783479310,\t-0.771575870613385170,\t-0.771607676514351470,\t-0.771639480486299160,\t-0.771671282529147520,\t-0.771703082642817620,\t-0.771734880827230070,\t\n-0.771766677082305290,\t-0.771798471407963870,\t-0.771830263804126340,\t-0.771862054270713080,\t-0.771893842807644610,\t-0.771925629414841550,\t-0.771957414092224510,\t-0.771989196839714450,\t\n-0.772020977657230880,\t-0.772052756544694740,\t-0.772084533502026770,\t-0.772116308529148140,\t-0.772148081625978030,\t-0.772179852792437840,\t-0.772211622028447950,\t-0.772243389333929000,\t\n-0.772275154708801590,\t-0.772306918152986240,\t-0.772338679666403680,\t-0.772370439248974420,\t-0.772402196900618950,\t-0.772433952621258140,\t-0.772465706410812910,\t-0.772497458269202800,\t\n-0.772529208196349180,\t-0.772560956192172470,\t-0.772592702256593930,\t-0.772624446389533090,\t-0.772656188590911120,\t-0.772687928860648740,\t-0.772719667198666470,\t-0.772751403604885030,\t\n-0.772783138079225160,\t-0.772814870621607360,\t-0.772846601231952370,\t-0.772878329910180910,\t-0.772910056656213710,\t-0.772941781469971830,\t-0.772973504351374910,\t-0.773005225300344320,\t\n-0.773036944316800590,\t-0.773068661400665100,\t-0.773100376551857480,\t-0.773132089770298790,\t-0.773163801055909870,\t-0.773195510408611560,\t-0.773227217828324380,\t-0.773258923314969150,\t\n-0.773290626868466720,\t-0.773322328488737610,\t-0.773354028175702760,\t-0.773385725929282790,\t-0.773417421749398540,\t-0.773449115635971300,\t-0.773480807588920680,\t-0.773512497608167980,\t\n-0.773544185693634150,\t-0.773575871845240350,\t-0.773607556062906320,\t-0.773639238346553460,\t-0.773670918696102380,\t-0.773702597111474160,\t-0.773734273592589280,\t-0.773765948139368830,\t\n-0.773797620751733420,\t-0.773829291429604100,\t-0.773860960172901400,\t-0.773892626981546370,\t-0.773924291855460410,\t-0.773955954794563030,\t-0.773987615798775840,\t-0.774019274868019580,\t\n-0.774050932002215750,\t-0.774082587201283980,\t-0.774114240465145760,\t-0.774145891793721840,\t-0.774177541186933380,\t-0.774209188644700900,\t-0.774240834166945560,\t-0.774272477753587980,\t\n-0.774304119404549350,\t-0.774335759119750390,\t-0.774367396899112050,\t-0.774399032742555730,\t-0.774430666650001380,\t-0.774462298621370170,\t-0.774493928656583400,\t-0.774525556755562230,\t\n-0.774557182918226730,\t-0.774588807144498180,\t-0.774620429434297650,\t-0.774652049787545980,\t-0.774683668204164340,\t-0.774715284684073360,\t-0.774746899227194310,\t-0.774778511833447920,\t\n-0.774810122502755270,\t-0.774841731235037300,\t-0.774873338030215630,\t-0.774904942888209990,\t-0.774936545808942000,\t-0.774968146792332720,\t-0.774999745838303560,\t-0.775031342946774450,\t\n-0.775062938117667020,\t-0.775094531350902340,\t-0.775126122646401130,\t-0.775157712004084790,\t-0.775189299423874050,\t-0.775220884905690190,\t-0.775252468449453950,\t-0.775284050055086720,\t\n-0.775315629722509230,\t-0.775347207451642760,\t-0.775378783242408720,\t-0.775410357094727280,\t-0.775441929008519830,\t-0.775473498983708210,\t-0.775505067020212270,\t-0.775536633117953620,\t\n-0.775568197276853440,\t-0.775599759496832800,\t-0.775631319777812630,\t-0.775662878119714240,\t-0.775694434522458680,\t-0.775725988985967010,\t-0.775757541510160410,\t-0.775789092094959830,\t\n-0.775820640740286670,\t-0.775852187446062440,\t-0.775883732212207080,\t-0.775915275038642440,\t-0.775946815925289690,\t-0.775978354872070340,\t-0.776009891878904570,\t-0.776041426945714100,\t\n-0.776072960072420100,\t-0.776104491258943650,\t-0.776136020505206030,\t-0.776167547811128290,\t-0.776199073176631730,\t-0.776230596601637400,\t-0.776262118086066710,\t-0.776293637629840600,\t\n-0.776325155232881040,\t-0.776356670895107960,\t-0.776388184616443320,\t-0.776419696396808080,\t-0.776451206236124290,\t-0.776482714134311800,\t-0.776514220091292560,\t-0.776545724106987860,\t\n-0.776577226181318750,\t-0.776608726314206630,\t-0.776640224505572680,\t-0.776671720755338190,\t-0.776703215063424320,\t-0.776734707429752480,\t-0.776766197854243830,\t-0.776797686336820340,\t\n-0.776829172877401940,\t-0.776860657475910710,\t-0.776892140132267820,\t-0.776923620846395100,\t-0.776955099618212850,\t-0.776986576447642690,\t-0.777018051334606220,\t-0.777049524279024630,\t\n-0.777080995280819200,\t-0.777112464339911210,\t-0.777143931456222180,\t-0.777175396629673280,\t-0.777206859860185890,\t-0.777238321147681320,\t-0.777269780492080950,\t-0.777301237893306740,\t\n-0.777332693351278750,\t-0.777364146865919150,\t-0.777395598437149670,\t-0.777427048064890710,\t-0.777458495749064120,\t-0.777489941489591270,\t-0.777521385286393580,\t-0.777552827139392330,\t\n-0.777584267048509140,\t-0.777615705013665280,\t-0.777647141034782050,\t-0.777678575111781070,\t-0.777710007244583610,\t-0.777741437433111080,\t-0.777772865677285650,\t-0.777804291977027380,\t\n-0.777835716332258450,\t-0.777867138742900140,\t-0.777898559208874630,\t-0.777929977730102200,\t-0.777961394306504680,\t-0.777992808938003820,\t-0.778024221624520780,\t-0.778055632365977300,\t\n-0.778087041162294770,\t-0.778118448013394580,\t-0.778149852919198250,\t-0.778181255879627280,\t-0.778212656894603280,\t-0.778244055964048110,\t-0.778275453087882260,\t-0.778306848266027700,\t\n-0.778338241498406140,\t-0.778369632784939420,\t-0.778401022125548180,\t-0.778432409520154360,\t-0.778463794968679460,\t-0.778495178471045100,\t-0.778526560027172800,\t-0.778557939636984050,\t\n-0.778589317300400600,\t-0.778620693017343710,\t-0.778652066787735130,\t-0.778683438611496360,\t-0.778714808488549570,\t-0.778746176418815270,\t-0.778777542402215420,\t-0.778808906438671840,\t\n-0.778840268528106390,\t-0.778871628670439800,\t-0.778902986865594120,\t-0.778934343113490970,\t-0.778965697414052080,\t-0.778997049767198860,\t-0.779028400172852910,\t-0.779059748630936080,\t\n-0.779091095141369870,\t-0.779122439704075910,\t-0.779153782318975810,\t-0.779185122985991300,\t-0.779216461705044550,\t-0.779247798476056070,\t-0.779279133298948050,\t-0.779310466173642860,\t\n-0.779341797100060910,\t-0.779373126078124370,\t-0.779404453107755080,\t-0.779435778188874770,\t-0.779467101321404840,\t-0.779498422505267240,\t-0.779529741740383590,\t-0.779561059026675610,\t\n-0.779592374364064920,\t-0.779623687752473260,\t-0.779654999191822460,\t-0.779686308682034700,\t-0.779717616223030600,\t-0.779748921814732430,\t-0.779780225457062050,\t-0.779811527149941620,\t\n-0.779842826893291760,\t-0.779874124687034880,\t-0.779905420531092690,\t-0.779936714425386920,\t-0.779968006369839430,\t-0.779999296364371930,\t-0.780030584408906050,\t-0.780061870503363840,\t\n-0.780093154647666930,\t-0.780124436841737160,\t-0.780155717085496800,\t-0.780186995378866600,\t-0.780218271721768940,\t-0.780249546114125560,\t-0.780280818555858850,\t-0.780312089046889530,\t\n-0.780343357587140130,\t-0.780374624176532250,\t-0.780405888814987740,\t-0.780437151502428650,\t-0.780468412238776500,\t-0.780499671023953460,\t-0.780530927857881250,\t-0.780562182740481610,\t\n-0.780593435671676610,\t-0.780624686651388510,\t-0.780655935679538170,\t-0.780687182756048090,\t-0.780718427880839890,\t-0.780749671053836300,\t-0.780780912274957830,\t-0.780812151544127200,\t\n-0.780843388861266250,\t-0.780874624226296720,\t-0.780905857639140550,\t-0.780937089099719930,\t-0.780968318607956460,\t-0.780999546163772210,\t-0.781030771767089130,\t-0.781061995417829170,\t\n-0.781093217115914060,\t-0.781124436861266650,\t-0.781155654653807430,\t-0.781186870493459140,\t-0.781218084380144280,\t-0.781249296313783590,\t-0.781280506294299680,\t-0.781311714321614500,\t\n-0.781342920395650120,\t-0.781374124516328370,\t-0.781405326683571210,\t-0.781436526897300810,\t-0.781467725157439120,\t-0.781498921463908090,\t-0.781530115816629790,\t-0.781561308215526160,\t\n-0.781592498660519830,\t-0.781623687151531740,\t-0.781654873688484410,\t-0.781686058271299890,\t-0.781717240899900800,\t-0.781748421574207990,\t-0.781779600294144170,\t-0.781810777059631310,\t\n-0.781841951870591580,\t-0.781873124726946920,\t-0.781904295628619410,\t-0.781935464575531200,\t-0.781966631567604380,\t-0.781997796604760990,\t-0.782028959686922990,\t-0.782060120814013220,\t\n-0.782091279985952630,\t-0.782122437202663830,\t-0.782153592464068900,\t-0.782184745770090560,\t-0.782215897120649760,\t-0.782247046515669230,\t-0.782278193955071140,\t-0.782309339438777560,\t\n-0.782340482966710550,\t-0.782371624538792390,\t-0.782402764154945140,\t-0.782433901815090980,\t-0.782465037519152080,\t-0.782496171267050620,\t-0.782527303058709320,\t-0.782558432894049140,\t\n-0.782589560772992910,\t-0.782620686695462700,\t-0.782651810661381450,\t-0.782682932670670020,\t-0.782714052723251230,\t-0.782745170819047380,\t-0.782776286957980630,\t-0.782807401139973160,\t\n-0.782838513364947140,\t-0.782869623632824860,\t-0.782900731943528490,\t-0.782931838296980320,\t-0.782962942693102630,\t-0.782994045131817470,\t-0.783025145613047700,\t-0.783056244136714600,\t\n-0.783087340702741000,\t-0.783118435311049410,\t-0.783149527961561230,\t-0.783180618654199300,\t-0.783211707388885790,\t-0.783242794165542990,\t-0.783273878984093170,\t-0.783304961844458750,\t\n-0.783336042746561880,\t-0.783367121690324960,\t-0.783398198675670180,\t-0.783429273702519910,\t-0.783460346770796350,\t-0.783491417880422650,\t-0.783522487031319770,\t-0.783553554223410660,\t\n-0.783584619456617730,\t-0.783615682730863680,\t-0.783646744046070040,\t-0.783677803402159420,\t-0.783708860799054330,\t-0.783739916236677050,\t-0.783770969714949970,\t-0.783802021233795500,\t\n-0.783833070793136020,\t-0.783864118392893830,\t-0.783895164032991310,\t-0.783926207713350980,\t-0.783957249433895550,\t-0.783988289194546550,\t-0.784019326995226810,\t-0.784050362835858720,\t\n-0.784081396716365230,\t-0.784112428636667750,\t-0.784143458596689210,\t-0.784174486596352030,\t-0.784205512635578690,\t-0.784236536714291500,\t-0.784267558832412950,\t-0.784298578989865440,\t\n-0.784329597186571580,\t-0.784360613422453780,\t-0.784391627697434310,\t-0.784422640011436470,\t-0.784453650364381310,\t-0.784484658756192220,\t-0.784515665186791280,\t-0.784546669656101870,\t\n-0.784577672164045170,\t-0.784608672710544350,\t-0.784639671295521810,\t-0.784670667918900060,\t-0.784701662580601700,\t-0.784732655280549140,\t-0.784763646018665000,\t-0.784794634794871660,\t\n-0.784825621609091750,\t-0.784856606461247890,\t-0.784887589351262350,\t-0.784918570279058540,\t-0.784949549244557620,\t-0.784980526247682890,\t-0.785011501288357390,\t-0.785042474366502650,\t\n-0.785073445482041720,\t-0.785104414634897110,\t-0.785135381824991430,\t-0.785166347052247420,\t-0.785197310316587460,\t-0.785228271617934180,\t-0.785259230956210310,\t-0.785290188331338350,\t\n-0.785321143743240910,\t-0.785352097191840630,\t-0.785383048677060550,\t-0.785413998198822410,\t-0.785444945757049260,\t-0.785475891351663740,\t-0.785506834982589000,\t-0.785537776649746670,\t\n-0.785568716353059910,\t-0.785599654092451250,\t-0.785630589867843620,\t-0.785661523679159420,\t-0.785692455526321390,\t-0.785723385409252240,\t-0.785754313327874710,\t-0.785785239282111300,\t\n-0.785816163271884860,\t-0.785847085297118440,\t-0.785878005357733890,\t-0.785908923453654260,\t-0.785939839584802400,\t-0.785970753751101370,\t-0.786001665952473010,\t-0.786032576188840370,\t\n-0.786063484460126420,\t-0.786094390766253650,\t-0.786125295107145020,\t-0.786156197482723030,\t-0.786187097892910640,\t-0.786217996337630450,\t-0.786248892816805320,\t-0.786279787330357970,\t\n-0.786310679878211570,\t-0.786341570460288080,\t-0.786372459076510540,\t-0.786403345726801930,\t-0.786434230411085510,\t-0.786465113129282910,\t-0.786495993881317630,\t-0.786526872667112300,\t\n-0.786557749486589740,\t-0.786588624339672800,\t-0.786619497226284330,\t-0.786650368146347150,\t-0.786681237099784100,\t-0.786712104086517930,\t-0.786742969106471460,\t-0.786773832159567530,\t\n-0.786804693245729550,\t-0.786835552364879340,\t-0.786866409516940310,\t-0.786897264701835740,\t-0.786928117919487470,\t-0.786958969169818890,\t-0.786989818452752950,\t-0.787020665768212390,\t\n-0.787051511116120260,\t-0.787082354496399290,\t-0.787113195908972330,\t-0.787144035353762540,\t-0.787174872830692650,\t-0.787205708339685510,\t-0.787236541880664050,\t-0.787267373453551910,\t\n-0.787298203058270700,\t-0.787329030694744030,\t-0.787359856362894740,\t-0.787390680062646450,\t-0.787421501793920900,\t-0.787452321556641470,\t-0.787483139350731330,\t-0.787513955176113330,\t\n-0.787544769032710420,\t-0.787575580920445660,\t-0.787606390839241890,\t-0.787637198789022160,\t-0.787668004769709440,\t-0.787698808781226670,\t-0.787729610823497460,\t-0.787760410896443660,\t\n-0.787791208999988780,\t-0.787822005134055980,\t-0.787852799298568660,\t-0.787883591493448780,\t-0.787914381718619940,\t-0.787945169974005210,\t-0.787975956259527430,\t-0.788006740575109890,\t\n-0.788037522920675420,\t-0.788068303296147190,\t-0.788099081701448160,\t-0.788129858136501380,\t-0.788160632601230040,\t-0.788191405095557630,\t-0.788222175619406110,\t-0.788252944172699310,\t\n-0.788283710755359970,\t-0.788314475367312030,\t-0.788345238008477330,\t-0.788375998678779500,\t-0.788406757378141700,\t-0.788437514106486990,\t-0.788468268863738440,\t-0.788499021649819330,\t\n-0.788529772464652610,\t-0.788560521308161460,\t-0.788591268180268920,\t-0.788622013080898300,\t-0.788652756009972760,\t-0.788683496967415690,\t-0.788714235953149380,\t-0.788744972967097560,\t\n-0.788775708009183730,\t-0.788806441079330180,\t-0.788837172177460520,\t-0.788867901303497930,\t-0.788898628457365580,\t-0.788929353638986640,\t-0.788960076848284290,\t-0.788990798085181800,\t\n-0.789021517349602240,\t-0.789052234641469010,\t-0.789082949960705050,\t-0.789113663307233870,\t-0.789144374680978980,\t-0.789175084081862650,\t-0.789205791509808520,\t-0.789236496964740080,\t\n-0.789267200446580830,\t-0.789297901955253070,\t-0.789328601490680510,\t-0.789359299052786460,\t-0.789389994641494170,\t-0.789420688256726840,\t-0.789451379898407860,\t-0.789482069566460390,\t\n-0.789512757260807830,\t-0.789543442981373360,\t-0.789574126728080250,\t-0.789604808500852350,\t-0.789635488299611830,\t-0.789666166124282640,\t-0.789696841974788070,\t-0.789727515851051940,\t\n-0.789758187752996440,\t-0.789788857680545520,\t-0.789819525633622450,\t-0.789850191612150530,\t-0.789880855616053150,\t-0.789911517645253580,\t-0.789942177699675230,\t-0.789972835779241490,\t\n-0.790003491883875640,\t-0.790034146013501080,\t-0.790064798168041650,\t-0.790095448347419740,\t-0.790126096551559190,\t-0.790156742780383390,\t-0.790187387033816190,\t-0.790218029311780090,\t\n-0.790248669614198930,\t-0.790279307940995990,\t-0.790309944292094890,\t-0.790340578667418910,\t-0.790371211066891450,\t-0.790401841490436020,\t-0.790432469937975890,\t-0.790463096409434680,\t\n-0.790493720904735690,\t-0.790524343423802960,\t-0.790554963966558780,\t-0.790585582532927210,\t-0.790616199122831650,\t-0.790646813736196160,\t-0.790677426372943140,\t-0.790708037032996520,\t\n-0.790738645716279830,\t-0.790769252422716450,\t-0.790799857152230000,\t-0.790830459904743990,\t-0.790861060680181690,\t-0.790891659478466850,\t-0.790922256299522730,\t-0.790952851143273070,\t\n-0.790983444009641270,\t-0.791014034898551380,\t-0.791044623809925910,\t-0.791075210743688810,\t-0.791105795699763690,\t-0.791136378678074630,\t-0.791166959678544110,\t-0.791197538701096210,\t\n-0.791228115745654440,\t-0.791258690812142400,\t-0.791289263900483600,\t-0.791319835010601660,\t-0.791350404142420080,\t-0.791380971295862600,\t-0.791411536470852610,\t-0.791442099667313710,\t\n-0.791472660885170210,\t-0.791503220124344490,\t-0.791533777384760720,\t-0.791564332666342520,\t-0.791594885969014060,\t-0.791625437292697740,\t-0.791655986637317950,\t-0.791686534002798090,\t\n-0.791717079389062000,\t-0.791747622796033170,\t-0.791778164223635230,\t-0.791808703671791900,\t-0.791839241140426810,\t-0.791869776629463670,\t-0.791900310138826000,\t-0.791930841668438190,\t\n-0.791961371218222740,\t-0.791991898788103830,\t-0.792022424378005190,\t-0.792052947987850970,\t-0.792083469617563820,\t-0.792113989267068110,\t-0.792144506936287350,\t-0.792175022625145390,\t\n-0.792205536333565720,\t-0.792236048061472300,\t-0.792266557808788850,\t-0.792297065575438890,\t-0.792327571361346350,\t-0.792358075166434750,\t-0.792388576990628700,\t-0.792419076833850490,\t\n-0.792449574696024620,\t-0.792480070577074920,\t-0.792510564476925470,\t-0.792541056395499100,\t-0.792571546332720090,\t-0.792602034288512280,\t-0.792632520262799290,\t-0.792663004255505070,\t\n-0.792693486266553340,\t-0.792723966295867830,\t-0.792754444343372390,\t-0.792784920408990960,\t-0.792815394492647150,\t-0.792845866594264810,\t-0.792876336713768450,\t-0.792906804851080670,\t\n-0.792937271006125880,\t-0.792967735178827900,\t-0.792998197369111040,\t-0.793028657576898220,\t-0.793059115802113860,\t-0.793089572044681560,\t-0.793120026304525380,\t-0.793150478581569170,\t\n-0.793180928875736660,\t-0.793211377186952000,\t-0.793241823515138720,\t-0.793272267860220980,\t-0.793302710222122510,\t-0.793333150600767920,\t-0.793363588996079840,\t-0.793394025407982760,\t\n-0.793424459836400640,\t-0.793454892281257870,\t-0.793485322742477410,\t-0.793515751219983630,\t-0.793546177713700400,\t-0.793576602223551860,\t-0.793607024749461650,\t-0.793637445291353940,\t\n-0.793667863849152670,\t-0.793698280422781680,\t-0.793728695012165030,\t-0.793759107617226680,\t-0.793789518237891010,\t-0.793819926874081090,\t-0.793850333525721320,\t-0.793880738192735750,\t\n-0.793911140875048770,\t-0.793941541572583450,\t-0.793971940285264300,\t-0.794002337013015260,\t-0.794032731755760390,\t-0.794063124513423760,\t-0.794093515285929200,\t-0.794123904073200990,\t\n-0.794154290875162870,\t-0.794184675691739120,\t-0.794215058522853680,\t-0.794245439368431170,\t-0.794275818228394440,\t-0.794306195102668200,\t-0.794336569991176410,\t-0.794366942893843800,\t\n-0.794397313810593310,\t-0.794427682741349450,\t-0.794458049686036500,\t-0.794488414644578310,\t-0.794518777616899150,\t-0.794549138602923090,\t-0.794579497602574070,\t-0.794609854615776490,\t\n-0.794640209642454080,\t-0.794670562682531220,\t-0.794700913735931990,\t-0.794731262802581000,\t-0.794761609882401190,\t-0.794791954975317520,\t-0.794822298081254490,\t-0.794852639200135050,\t\n-0.794882978331884040,\t-0.794913315476425630,\t-0.794943650633684000,\t-0.794973983803583200,\t-0.795004314986047400,\t-0.795034644181000780,\t-0.795064971388367630,\t-0.795095296608072100,\t\n-0.795125619840038270,\t-0.795155941084190300,\t-0.795186260340453140,\t-0.795216577608749750,\t-0.795246892889004850,\t-0.795277206181142840,\t-0.795307517485088210,\t-0.795337826800764370,\t\n-0.795368134128095930,\t-0.795398439467007170,\t-0.795428742817422260,\t-0.795459044179265500,\t-0.795489343552461150,\t-0.795519640936933390,\t-0.795549936332606620,\t-0.795580229739405010,\t\n-0.795610521157252730,\t-0.795640810586074720,\t-0.795671098025794280,\t-0.795701383476335900,\t-0.795731666937624200,\t-0.795761948409583810,\t-0.795792227892137990,\t-0.795822505385211710,\t\n-0.795852780888729020,\t-0.795883054402614420,\t-0.795913325926792200,\t-0.795943595461186650,\t-0.795973863005722150,\t-0.796004128560322990,\t-0.796034392124913560,\t-0.796064653699418030,\t\n-0.796094913283761470,\t-0.796125170877867160,\t-0.796155426481659820,\t-0.796185680095063850,\t-0.796215931718004310,\t-0.796246181350404480,\t-0.796276428992189090,\t-0.796306674643282640,\t\n-0.796336918303609530,\t-0.796367159973094150,\t-0.796397399651660790,\t-0.796427637339233940,\t-0.796457873035738120,\t-0.796488106741097490,\t-0.796518338455236560,\t-0.796548568178079950,\t\n-0.796578795909552270,\t-0.796609021649577250,\t-0.796639245398079510,\t-0.796669467154984320,\t-0.796699686920214870,\t-0.796729904693696200,\t-0.796760120475352830,\t-0.796790334265109030,\t\n-0.796820546062889430,\t-0.796850755868618530,\t-0.796880963682220720,\t-0.796911169503620510,\t-0.796941373332742400,\t-0.796971575169510780,\t-0.797001775013850280,\t-0.797031972865685830,\t\n-0.797062168724940960,\t-0.797092362591540700,\t-0.797122554465409470,\t-0.797152744346472430,\t-0.797182932234652970,\t-0.797213118129876160,\t-0.797243302032066610,\t-0.797273483941148720,\t\n-0.797303663857047210,\t-0.797333841779686470,\t-0.797364017708991120,\t-0.797394191644885790,\t-0.797424363587294960,\t-0.797454533536143260,\t-0.797484701491355640,\t-0.797514867452855820,\t\n-0.797545031420568870,\t-0.797575193394419290,\t-0.797605353374332250,\t-0.797635511360231360,\t-0.797665667352041590,\t-0.797695821349687750,\t-0.797725973353094250,\t-0.797756123362185930,\t\n-0.797786271376887180,\t-0.797816417397122830,\t-0.797846561422817510,\t-0.797876703453895610,\t-0.797906843490282070,\t-0.797936981531901960,\t-0.797967117578678890,\t-0.797997251630537920,\t\n-0.798027383687403890,\t-0.798057513749201860,\t-0.798087641815855560,\t-0.798117767887290160,\t-0.798147891963430390,\t-0.798178014044200860,\t-0.798208134129526290,\t-0.798238252219331420,\t\n-0.798268368313540870,\t-0.798298482412079350,\t-0.798328594514871700,\t-0.798358704621842550,\t-0.798388812732916620,\t-0.798418918848019190,\t-0.798449022967073980,\t-0.798479125090006180,\t\n-0.798509225216741060,\t-0.798539323347202350,\t-0.798569419481315430,\t-0.798599513619004830,\t-0.798629605760195590,\t-0.798659695904812230,\t-0.798689784052779680,\t-0.798719870204022690,\t\n-0.798749954358465960,\t-0.798780036516034350,\t-0.798810116676652690,\t-0.798840194840245710,\t-0.798870271006738800,\t-0.798900345176055680,\t-0.798930417348121650,\t-0.798960487522861530,\t\n-0.798990555700200830,\t-0.799020621880063290,\t-0.799050686062374060,\t-0.799080748247058100,\t-0.799110808434040370,\t-0.799140866623245460,\t-0.799170922814598560,\t-0.799200977008024280,\t\n-0.799231029203447570,\t-0.799261079400793270,\t-0.799291127599986220,\t-0.799321173800952020,\t-0.799351218003614190,\t-0.799381260207898460,\t-0.799411300413729430,\t-0.799441338621032840,\t\n-0.799471374829732300,\t-0.799501409039753310,\t-0.799531441251020820,\t-0.799561471463459680,\t-0.799591499676994940,\t-0.799621525891551440,\t-0.799651550107054020,\t-0.799681572323427850,\t\n-0.799711592540597760,\t-0.799741610758488600,\t-0.799771626977025970,\t-0.799801641196133730,\t-0.799831653415737480,\t-0.799861663635761940,\t-0.799891671856132860,\t-0.799921678076774060,\t\n-0.799951682297611040,\t-0.799981684518568880,\t-0.800011684739572520,\t-0.800041682960546900,\t-0.800071679181417080,\t-0.800101673402108030,\t-0.800131665622544790,\t-0.800161655842652530,\t\n-0.800191644062355990,\t-0.800221630281580330,\t-0.800251614500251170,\t-0.800281596718292470,\t-0.800311576935629710,\t-0.800341555152188630,\t-0.800371531367893070,\t-0.800401505582668650,\t\n-0.800431477796440530,\t-0.800461448009133660,\t-0.800491416220673210,\t-0.800521382430984250,\t-0.800551346639991830,\t-0.800581308847621020,\t-0.800611269053796870,\t-0.800641227258444670,\t\n-0.800671183461489360,\t-0.800701137662856550,\t-0.800731089862470440,\t-0.800761040060256610,\t-0.800790988256140150,\t-0.800820934450046760,\t-0.800850878641900520,\t-0.800880820831627040,\t\n-0.800910761019151480,\t-0.800940699204399140,\t-0.800970635387294960,\t-0.801000569567764220,\t-0.801030501745731980,\t-0.801060431921123640,\t-0.801090360093864140,\t-0.801120286263878660,\t\n-0.801150210431093130,\t-0.801180132595431530,\t-0.801210052756819560,\t-0.801239970915182400,\t-0.801269887070445890,\t-0.801299801222534190,\t-0.801329713371372930,\t-0.801359623516887390,\t\n-0.801389531659002840,\t-0.801419437797644350,\t-0.801449341932737310,\t-0.801479244064207010,\t-0.801509144191978500,\t-0.801539042315977170,\t-0.801568938436128200,\t-0.801598832552357420,\t\n-0.801628724664589120,\t-0.801658614772748910,\t-0.801688502876762190,\t-0.801718388976554670,\t-0.801748273072050770,\t-0.801778155163176190,\t-0.801808035249856110,\t-0.801837913332016040,\t\n-0.801867789409581140,\t-0.801897663482476820,\t-0.801927535550628230,\t-0.801957405613960890,\t-0.801987273672400080,\t-0.802017139725870960,\t-0.802047003774299050,\t-0.802076865817610170,\t\n-0.802106725855728620,\t-0.802136583888580220,\t-0.802166439916090930,\t-0.802196293938184920,\t-0.802226145954788250,\t-0.802255995965826200,\t-0.802285843971224160,\t-0.802315689970907520,\t\n-0.802345533964801680,\t-0.802375375952831930,\t-0.802405215934923750,\t-0.802435053911002670,\t-0.802464889880993740,\t-0.802494723844822790,\t-0.802524555802415440,\t-0.802554385753696200,\t\n-0.802584213698591010,\t-0.802614039637025160,\t-0.802643863568924920,\t-0.802673685494214470,\t-0.802703505412819650,\t-0.802733323324666290,\t-0.802763139229679460,\t-0.802792953127784870,\t\n-0.802822765018907810,\t-0.802852574902973900,\t-0.802882382779908530,\t-0.802912188649637200,\t-0.802941992512085420,\t-0.802971794367179140,\t-0.803001594214842960,\t-0.803031392055002740,\t\n-0.803061187887583960,\t-0.803090981712512810,\t-0.803120773529713670,\t-0.803150563339112610,\t-0.803180351140635130,\t-0.803210136934206730,\t-0.803239920719753030,\t-0.803269702497199530,\t\n-0.803299482266471740,\t-0.803329260027495270,\t-0.803359035780195630,\t-0.803388809524498430,\t-0.803418581260329720,\t-0.803448350987614020,\t-0.803478118706277500,\t-0.803507884416245650,\t\n-0.803537648117444660,\t-0.803567409809798900,\t-0.803597169493234680,\t-0.803626927167677580,\t-0.803656682833053140,\t-0.803686436489286950,\t-0.803716188136304740,\t-0.803745937774032030,\t\n-0.803775685402394410,\t-0.803805431021317630,\t-0.803835174630727290,\t-0.803864916230549010,\t-0.803894655820708960,\t-0.803924393401131750,\t-0.803954128971743560,\t-0.803983862532470560,\t\n-0.804013594083237470,\t-0.804043323623970240,\t-0.804073051154594820,\t-0.804102776675036710,\t-0.804132500185221640,\t-0.804162221685075340,\t-0.804191941174523530,\t-0.804221658653491820,\t\n-0.804251374121905950,\t-0.804281087579691630,\t-0.804310799026774710,\t-0.804340508463081250,\t-0.804370215888535970,\t-0.804399921303065150,\t-0.804429624706594510,\t-0.804459326099050460,\t\n-0.804489025480357390,\t-0.804518722850441900,\t-0.804548418209229510,\t-0.804578111556646160,\t-0.804607802892617460,\t-0.804637492217069260,\t-0.804667179529927390,\t-0.804696864831117460,\t\n-0.804726548120565430,\t-0.804756229398197020,\t-0.804785908663938620,\t-0.804815585917714850,\t-0.804845261159452210,\t-0.804874934389076310,\t-0.804904605606513670,\t-0.804934274811689000,\t\n-0.804963942004528590,\t-0.804993607184958380,\t-0.805023270352904110,\t-0.805052931508291600,\t-0.805082590651046930,\t-0.805112247781095690,\t-0.805141902898363740,\t-0.805171556002777120,\t\n-0.805201207094261680,\t-0.805230856172743700,\t-0.805260503238148020,\t-0.805290148290401020,\t-0.805319791329428770,\t-0.805349432355157550,\t-0.805379071367512190,\t-0.805408708366419090,\t\n-0.805438343351804310,\t-0.805467976323593680,\t-0.805497607281713050,\t-0.805527236226088460,\t-0.805556863156645760,\t-0.805586488073310900,\t-0.805616110976009820,\t-0.805645731864668480,\t\n-0.805675350739212700,\t-0.805704967599569220,\t-0.805734582445662760,\t-0.805764195277419830,\t-0.805793806094766920,\t-0.805823414897628990,\t-0.805853021685932420,\t-0.805882626459603400,\t\n-0.805912229218567870,\t-0.805941829962751650,\t-0.805971428692080940,\t-0.806001025406481550,\t-0.806030620105879780,\t-0.806060212790201350,\t-0.806089803459372310,\t-0.806119392113318840,\t\n-0.806148978751967450,\t-0.806178563375243070,\t-0.806208145983072220,\t-0.806237726575381060,\t-0.806267305152096100,\t-0.806296881713142400,\t-0.806326456258446460,\t-0.806356028787934330,\t\n-0.806385599301532200,\t-0.806415167799166000,\t-0.806444734280761910,\t-0.806474298746245990,\t-0.806503861195544290,\t-0.806533421628582990,\t-0.806562980045288150,\t-0.806592536445586370,\t\n-0.806622090829402730,\t-0.806651643196663830,\t-0.806681193547295840,\t-0.806710741881225380,\t-0.806740288198377510,\t-0.806769832498678950,\t-0.806799374782055880,\t-0.806828915048434350,\t\n-0.806858453297740420,\t-0.806887989529900480,\t-0.806917523744840490,\t-0.806947055942486720,\t-0.806976586122765350,\t-0.807006114285602430,\t-0.807035640430924790,\t-0.807065164558657510,\t\n-0.807094686668727410,\t-0.807124206761060450,\t-0.807153724835583560,\t-0.807183240892221930,\t-0.807212754930902050,\t-0.807242266951550320,\t-0.807271776954093020,\t-0.807301284938456210,\t\n-0.807330790904566160,\t-0.807360294852349170,\t-0.807389796781731390,\t-0.807419296692639230,\t-0.807448794584998740,\t-0.807478290458736760,\t-0.807507784313778560,\t-0.807537276150051000,\t\n-0.807566765967480120,\t-0.807596253765992870,\t-0.807625739545514530,\t-0.807655223305971840,\t-0.807684705047290950,\t-0.807714184769398490,\t-0.807743662472220400,\t-0.807773138155683300,\t\n-0.807802611819713250,\t-0.807832083464236740,\t-0.807861553089179950,\t-0.807891020694469390,\t-0.807920486280031100,\t-0.807949949845792270,\t-0.807979411391677950,\t-0.808008870917615200,\t\n-0.808038328423530180,\t-0.808067783909349970,\t-0.808097237374999720,\t-0.808126688820406280,\t-0.808156138245496260,\t-0.808185585650195830,\t-0.808215031034431490,\t-0.808244474398129520,\t\n-0.808273915741216320,\t-0.808303355063618390,\t-0.808332792365262120,\t-0.808362227646073790,\t-0.808391660905980470,\t-0.808421092144907430,\t-0.808450521362781730,\t-0.808479948559529650,\t\n-0.808509373735078250,\t-0.808538796889352820,\t-0.808568218022280520,\t-0.808597637133787630,\t-0.808627054223800660,\t-0.808656469292245990,\t-0.808685882339050250,\t-0.808715293364139720,\t\n-0.808744702367441000,\t-0.808774109348880500,\t-0.808803514308384710,\t-0.808832917245880690,\t-0.808862318161293840,\t-0.808891717054551210,\t-0.808921113925579300,\t-0.808950508774305080,\t\n-0.808979901600654140,\t-0.809009292404553330,\t-0.809038681185929360,\t-0.809068067944708760,\t-0.809097452680817900,\t-0.809126835394183400,\t-0.809156216084731870,\t-0.809185594752389710,\t\n-0.809214971397083650,\t-0.809244346018740180,\t-0.809273718617286250,\t-0.809303089192647600,\t-0.809332457744751270,\t-0.809361824273523660,\t-0.809391188778892160,\t-0.809420551260782050,\t\n-0.809449911719120620,\t-0.809479270153834360,\t-0.809508626564849900,\t-0.809537980952093950,\t-0.809567333315493020,\t-0.809596683654973840,\t-0.809626031970462790,\t-0.809655378261886830,\t\n-0.809684722529172340,\t-0.809714064772246060,\t-0.809743404991035030,\t-0.809772743185465100,\t-0.809802079355463220,\t-0.809831413500956220,\t-0.809860745621871160,\t-0.809890075718133760,\t\n-0.809919403789671200,\t-0.809948729836410090,\t-0.809978053858277150,\t-0.810007375855199110,\t-0.810036695827102580,\t-0.810066013773914300,\t-0.810095329695560970,\t-0.810124643591969340,\t\n-0.810153955463066120,\t-0.810183265308778600,\t-0.810212573129032280,\t-0.810241878923754540,\t-0.810271182692872240,\t-0.810300484436312420,\t-0.810329784154000810,\t-0.810359081845864800,\t\n-0.810388377511831020,\t-0.810417671151826280,\t-0.810446962765777430,\t-0.810476252353611200,\t-0.810505539915254310,\t-0.810534825450633600,\t-0.810564108959675790,\t-0.810593390442307720,\t\n-0.810622669898456660,\t-0.810651947328048460,\t-0.810681222731010400,\t-0.810710496107269200,\t-0.810739767456752360,\t-0.810769036779385500,\t-0.810798304075096120,\t-0.810827569343810950,\t\n-0.810856832585456930,\t-0.810886093799960680,\t-0.810915352987249370,\t-0.810944610147249500,\t-0.810973865279888240,\t-0.811003118385092310,\t-0.811032369462788560,\t-0.811061618512904370,\t\n-0.811090865535365690,\t-0.811120110530099690,\t-0.811149353497033540,\t-0.811178594436094520,\t-0.811207833347208470,\t-0.811237070230302890,\t-0.811266305085304620,\t-0.811295537912140490,\t\n-0.811324768710737660,\t-0.811353997481022770,\t-0.811383224222922970,\t-0.811412448936365100,\t-0.811441671621276120,\t-0.811470892277582840,\t-0.811500110905212460,\t-0.811529327504092350,\t\n-0.811558542074148350,\t-0.811587754615307970,\t-0.811616965127498700,\t-0.811646173610646620,\t-0.811675380064678990,\t-0.811704584489522870,\t-0.811733786885105450,\t-0.811762987251353430,\t\n-0.811792185588193990,\t-0.811821381895554080,\t-0.811850576173360760,\t-0.811879768421540970,\t-0.811908958640021770,\t-0.811938146828730110,\t-0.811967332987593720,\t-0.811996517116538420,\t\n-0.812025699215491730,\t-0.812054879284380910,\t-0.812084057323133380,\t-0.812113233331675180,\t-0.812142407309933920,\t-0.812171579257836670,\t-0.812200749175310380,\t-0.812229917062282310,\t\n-0.812259082918679320,\t-0.812288246744428790,\t-0.812317408539457550,\t-0.812346568303692780,\t-0.812375726037061650,\t-0.812404881739491660,\t-0.812434035410908970,\t-0.812463187051241210,\t\n-0.812492336660415430,\t-0.812521484238359350,\t-0.812550629784999030,\t-0.812579773300262210,\t-0.812608914784075930,\t-0.812638054236367370,\t-0.812667191657063580,\t-0.812696327046091960,\t\n-0.812725460403379340,\t-0.812754591728853230,\t-0.812783721022440560,\t-0.812812848284068630,\t-0.812841973513665050,\t-0.812871096711156090,\t-0.812900217876469270,\t-0.812929337009532070,\t\n-0.812958454110271900,\t-0.812987569178615140,\t-0.813016682214489420,\t-0.813045793217822110,\t-0.813074902188540170,\t-0.813104009126571100,\t-0.813133114031841850,\t-0.813162216904279920,\t\n-0.813191317743812480,\t-0.813220416550366700,\t-0.813249513323869850,\t-0.813278608064249340,\t-0.813307700771432660,\t-0.813336791445346320,\t-0.813365880085918040,\t-0.813394966693075430,\t\n-0.813424051266745000,\t-0.813453133806854360,\t-0.813482214313331010,\t-0.813511292786102010,\t-0.813540369225094870,\t-0.813569443630236640,\t-0.813598516001454940,\t-0.813627586338676930,\t\n-0.813656654641830010,\t-0.813685720910841350,\t-0.813714785145638440,\t-0.813743847346149130,\t-0.813772907512299580,\t-0.813801965644017860,\t-0.813831021741231120,\t-0.813860075803867430,\t\n-0.813889127831852970,\t-0.813918177825115770,\t-0.813947225783583030,\t-0.813976271707182340,\t-0.814005315595840880,\t-0.814034357449486160,\t-0.814063397268045550,\t-0.814092435051446460,\t\n-0.814121470799616280,\t-0.814150504512482390,\t-0.814179536189972850,\t-0.814208565832013840,\t-0.814237593438533410,\t-0.814266619009459070,\t-0.814295642544718650,\t-0.814324664044238640,\t\n-0.814353683507947010,\t-0.814382700935771140,\t-0.814411716327638420,\t-0.814440729683476580,\t-0.814469741003212790,\t-0.814498750286774650,\t-0.814527757534089680,\t-0.814556762745085370,\t\n-0.814585765919689010,\t-0.814614767057828870,\t-0.814643766159431240,\t-0.814672763224424280,\t-0.814701758252735280,\t-0.814730751244292510,\t-0.814759742199022250,\t-0.814788731116852680,\t\n-0.814817717997711300,\t-0.814846702841525610,\t-0.814875685648223210,\t-0.814904666417731520,\t-0.814933645149978240,\t-0.814962621844890770,\t-0.814991596502396830,\t-0.815020569122423820,\t\n-0.815049539704899460,\t-0.815078508249751700,\t-0.815107474756907150,\t-0.815136439226293970,\t-0.815165401657840240,\t-0.815194362051472330,\t-0.815223320407118650,\t-0.815252276724706680,\t\n-0.815281231004163940,\t-0.815310183245418150,\t-0.815339133448396920,\t-0.815368081613027870,\t-0.815397027739238610,\t-0.815425971826956750,\t-0.815454913876110020,\t-0.815483853886625920,\t\n-0.815512791858432730,\t-0.815541727791457060,\t-0.815570661685627090,\t-0.815599593540870420,\t-0.815628523357115330,\t-0.815657451134288450,\t-0.815686376872317820,\t-0.815715300571131290,\t\n-0.815744222230656570,\t-0.815773141850821280,\t-0.815802059431553150,\t-0.815830974972779790,\t-0.815859888474429030,\t-0.815888799936428600,\t-0.815917709358706110,\t-0.815946616741189960,\t\n-0.815975522083806640,\t-0.816004425386484540,\t-0.816033326649151400,\t-0.816062225871735380,\t-0.816091123054163430,\t-0.816120018196363590,\t-0.816148911298263610,\t-0.816177802359791540,\t\n-0.816206691380874870,\t-0.816235578361441450,\t-0.816264463301419110,\t-0.816293346200735570,\t-0.816322227059318670,\t-0.816351105877096250,\t-0.816379982653996580,\t-0.816408857389946510,\t\n-0.816437730084874190,\t-0.816466600738707580,\t-0.816495469351374960,\t-0.816524335922803160,\t-0.816553200452920570,\t-0.816582062941654920,\t-0.816610923388934150,\t-0.816639781794685990,\t\n-0.816668638158838500,\t-0.816697492481319290,\t-0.816726344762056410,\t-0.816755195000977710,\t-0.816784043198010900,\t-0.816812889353084160,\t-0.816841733466125540,\t-0.816870575537062220,\t\n-0.816899415565822350,\t-0.816928253552334450,\t-0.816957089496525460,\t-0.816985923398323770,\t-0.817014755257657210,\t-0.817043585074453850,\t-0.817072412848641410,\t-0.817101238580148050,\t\n-0.817130062268901500,\t-0.817158883914829830,\t-0.817187703517860960,\t-0.817216521077922860,\t-0.817245336594943360,\t-0.817274150068851180,\t-0.817302961499573040,\t-0.817331770887037460,\t\n-0.817360578231172470,\t-0.817389383531906490,\t-0.817418186789166670,\t-0.817446988002881290,\t-0.817475787172978420,\t-0.817504584299386220,\t-0.817533379382032410,\t-0.817562172420845280,\t\n-0.817590963415752660,\t-0.817619752366682610,\t-0.817648539273563180,\t-0.817677324136322440,\t-0.817706106954888880,\t-0.817734887729189450,\t-0.817763666459152990,\t-0.817792443144707230,\t\n-0.817821217785780870,\t-0.817849990382301000,\t-0.817878760934196200,\t-0.817907529441394440,\t-0.817936295903823880,\t-0.817965060321412470,\t-0.817993822694088600,\t-0.818022583021779990,\t\n-0.818051341304415040,\t-0.818080097541921680,\t-0.818108851734228090,\t-0.818137603881262890,\t-0.818166353982953230,\t-0.818195102039227630,\t-0.818223848050014250,\t-0.818252592015241810,\t\n-0.818281333934837370,\t-0.818310073808729550,\t-0.818338811636846630,\t-0.818367547419116550,\t-0.818396281155467700,\t-0.818425012845828140,\t-0.818453742490126030,\t-0.818482470088289560,\t\n-0.818511195640246990,\t-0.818539919145926390,\t-0.818568640605255910,\t-0.818597360018164410,\t-0.818626077384579040,\t-0.818654792704428420,\t-0.818683505977641280,\t-0.818712217204144890,\t\n-0.818740926383868080,\t-0.818769633516738820,\t-0.818798338602685470,\t-0.818827041641636330,\t-0.818855742633519570,\t-0.818884441578263570,\t-0.818913138475796280,\t-0.818941833326046200,\t\n-0.818970526128941610,\t-0.818999216884410690,\t-0.819027905592382140,\t-0.819056592252783380,\t-0.819085276865543220,\t-0.819113959430589730,\t-0.819142639947851970,\t-0.819171318417256990,\t\n-0.819199994838733740,\t-0.819228669212210600,\t-0.819257341537615650,\t-0.819286011814877480,\t-0.819314680043924160,\t-0.819343346224684190,\t-0.819372010357085840,\t-0.819400672441057520,\t\n-0.819429332476527490,\t-0.819457990463424600,\t-0.819486646401676230,\t-0.819515300291211330,\t-0.819543952131958080,\t-0.819572601923845510,\t-0.819601249666800920,\t-0.819629895360753260,\t\n-0.819658539005630790,\t-0.819687180601361920,\t-0.819715820147875250,\t-0.819744457645098960,\t-0.819773093092961420,\t-0.819801726491391270,\t-0.819830357840316770,\t-0.819858987139666430,\t\n-0.819887614389369080,\t-0.819916239589352110,\t-0.819944862739544700,\t-0.819973483839875010,\t-0.820002102890272200,\t-0.820030719890663560,\t-0.820059334840978150,\t-0.820087947741144460,\t\n-0.820116558591090780,\t-0.820145167390745830,\t-0.820173774140037890,\t-0.820202378838895460,\t-0.820230981487247160,\t-0.820259582085021370,\t-0.820288180632146700,\t-0.820316777128551440,\t\n-0.820345371574164870,\t-0.820373963968914380,\t-0.820402554312728900,\t-0.820431142605537620,\t-0.820459728847267920,\t-0.820488313037848860,\t-0.820516895177209050,\t-0.820545475265276990,\t\n-0.820574053301981300,\t-0.820602629287250470,\t-0.820631203221013020,\t-0.820659775103197540,\t-0.820688344933732660,\t-0.820716912712546990,\t-0.820745478439568910,\t-0.820774042114727710,\t\n-0.820802603737950890,\t-0.820831163309167610,\t-0.820859720828306380,\t-0.820888276295296370,\t-0.820916829710065080,\t-0.820945381072541780,\t-0.820973930382655090,\t-0.821002477640333520,\t\n-0.821031022845505660,\t-0.821059565998100370,\t-0.821088107098046140,\t-0.821116646145271580,\t-0.821145183139705530,\t-0.821173718081276370,\t-0.821202250969913510,\t-0.821230781805544540,\t\n-0.821259310588098530,\t-0.821287837317504320,\t-0.821316361993691070,\t-0.821344884616586280,\t-0.821373405186119340,\t-0.821401923702218870,\t-0.821430440164813590,\t-0.821458954573832220,\t\n-0.821487466929203490,\t-0.821515977230856120,\t-0.821544485478718720,\t-0.821572991672720130,\t-0.821601495812789070,\t-0.821629997898854820,\t-0.821658497930845000,\t-0.821686995908688990,\t\n-0.821715491832315510,\t-0.821743985701653750,\t-0.821772477516631520,\t-0.821800967277178110,\t-0.821829454983222350,\t-0.821857940634692860,\t-0.821886424231518590,\t-0.821914905773628130,\t\n-0.821943385260950570,\t-0.821971862693414490,\t-0.822000338070948740,\t-0.822028811393482050,\t-0.822057282660943470,\t-0.822085751873262160,\t-0.822114219030365860,\t-0.822142684132184160,\t\n-0.822171147178646140,\t-0.822199608169679850,\t-0.822228067105214460,\t-0.822256523985179010,\t-0.822284978809502130,\t-0.822313431578112870,\t-0.822341882290939960,\t-0.822370330947912450,\t\n-0.822398777548959070,\t-0.822427222094008650,\t-0.822455664582990350,\t-0.822484105015832800,\t-0.822512543392465490,\t-0.822540979712816260,\t-0.822569413976814710,\t-0.822597846184389470,\t\n-0.822626276335470250,\t-0.822654704429984780,\t-0.822683130467862570,\t-0.822711554449032540,\t-0.822739976373423550,\t-0.822768396240964760,\t-0.822796814051584890,\t-0.822825229805213000,\t\n-0.822853643501778030,\t-0.822882055141208930,\t-0.822910464723434650,\t-0.822938872248384800,\t-0.822967277715987210,\t-0.822995681126171500,\t-0.823024082478866600,\t-0.823052481774001920,\t\n-0.823080879011505510,\t-0.823109274191306970,\t-0.823137667313335260,\t-0.823166058377519330,\t-0.823194447383788220,\t-0.823222834332071110,\t-0.823251219222296830,\t-0.823279602054394430,\t\n-0.823307982828293210,\t-0.823336361543921870,\t-0.823364738201210260,\t-0.823393112800086200,\t-0.823421485340479430,\t-0.823449855822318890,\t-0.823478224245534300,\t-0.823506590610053490,\t\n-0.823534954915806310,\t-0.823563317162721800,\t-0.823591677350728910,\t-0.823620035479756820,\t-0.823648391549734680,\t-0.823676745560591560,\t-0.823705097512256510,\t-0.823733447404658810,\t\n-0.823761795237727410,\t-0.823790141011391590,\t-0.823818484725580950,\t-0.823846826380223550,\t-0.823875165975249010,\t-0.823903503510587170,\t-0.823931838986166070,\t-0.823960172401915330,\t\n-0.823988503757764110,\t-0.824016833053641710,\t-0.824045160289477160,\t-0.824073485465199760,\t-0.824101808580738670,\t-0.824130129636022950,\t-0.824158448630981980,\t-0.824186765565544930,\t\n-0.824215080439640870,\t-0.824243393253199730,\t-0.824271704006149460,\t-0.824300012698420130,\t-0.824328319329940550,\t-0.824356623900640790,\t-0.824384926410449030,\t-0.824413226859294860,\t\n-0.824441525247107570,\t-0.824469821573816540,\t-0.824498115839350950,\t-0.824526408043640080,\t-0.824554698186613200,\t-0.824582986268199590,\t-0.824611272288328420,\t-0.824639556246929200,\t\n-0.824667838143931520,\t-0.824696117979263790,\t-0.824724395752855610,\t-0.824752671464636600,\t-0.824780945114536370,\t-0.824809216702483310,\t-0.824837486228407140,\t-0.824865753692237360,\t\n-0.824894019093903030,\t-0.824922282433333760,\t-0.824950543710458840,\t-0.824978802925207420,\t-0.825007060077509120,\t-0.825035315167293120,\t-0.825063568194488780,\t-0.825091819159026070,\t\n-0.825120068060833380,\t-0.825148314899840420,\t-0.825176559675976700,\t-0.825204802389172040,\t-0.825233043039354960,\t-0.825261281626455290,\t-0.825289518150402300,\t-0.825317752611125610,\t\n-0.825345985008554490,\t-0.825374215342618460,\t-0.825402443613246770,\t-0.825430669820369060,\t-0.825458893963914700,\t-0.825487116043813090,\t-0.825515336059994160,\t-0.825543554012386440,\t\n-0.825571769900919740,\t-0.825599983725523790,\t-0.825628195486128200,\t-0.825656405182661700,\t-0.825684612815054230,\t-0.825712818383235180,\t-0.825741021887134050,\t-0.825769223326680350,\t\n-0.825797422701803670,\t-0.825825620012433430,\t-0.825853815258499100,\t-0.825882008439930200,\t-0.825910199556656340,\t-0.825938388608607020,\t-0.825966575595712180,\t-0.825994760517900330,\t\n-0.826022943375101630,\t-0.826051124167245580,\t-0.826079302894262350,\t-0.826107479556080220,\t-0.826135654152629350,\t-0.826163826683839480,\t-0.826191997149639870,\t-0.826220165549960360,\t\n-0.826248331884730460,\t-0.826276496153879770,\t-0.826304658357337800,\t-0.826332818495034150,\t-0.826360976566898440,\t-0.826389132572860840,\t-0.826417286512849960,\t-0.826445438386795740,\t\n-0.826473588194628020,\t-0.826501735936276740,\t-0.826529881611670740,\t-0.826558025220739960,\t-0.826586166763414120,\t-0.826614306239622840,\t-0.826642443649295840,\t-0.826670578992362740,\t\n-0.826698712268753130,\t-0.826726843478396760,\t-0.826754972621223330,\t-0.826783099697162460,\t-0.826811224706144320,\t-0.826839347648097630,\t-0.826867468522952560,\t-0.826895587330638840,\t\n-0.826923704071086620,\t-0.826951818744224630,\t-0.826979931349983160,\t-0.827008041888291800,\t-0.827036150359080290,\t-0.827064256762278460,\t-0.827092361097816030,\t-0.827120463365622620,\t\n-0.827148563565628160,\t-0.827176661697762160,\t-0.827204757761954570,\t-0.827232851758135660,\t-0.827260943686234040,\t-0.827289033546180110,\t-0.827317121337903470,\t-0.827345207061334630,\t\n-0.827373290716402310,\t-0.827401372303036680,\t-0.827429451821167670,\t-0.827457529270725020,\t-0.827485604651638560,\t-0.827513677963838010,\t-0.827541749207253320,\t-0.827569818381814310,\t\n-0.827597885487450720,\t-0.827625950524092380,\t-0.827654013491669230,\t-0.827682074390111430,\t-0.827710133219348050,\t-0.827738189979309260,\t-0.827766244669925100,\t-0.827794297291125750,\t\n-0.827822347842840140,\t-0.827850396324998680,\t-0.827878442737531310,\t-0.827906487080367740,\t-0.827934529353438030,\t-0.827962569556671910,\t-0.827990607689999440,\t-0.828018643753350440,\t\n-0.828046677746654750,\t-0.828074709669842420,\t-0.828102739522843860,\t-0.828130767305587880,\t-0.828158793018004990,\t-0.828186816660025250,\t-0.828214838231578820,\t-0.828242857732594870,\t\n-0.828270875163003680,\t-0.828298890522735420,\t-0.828326903811719810,\t-0.828354915029887010,\t-0.828382924177166970,\t-0.828410931253489520,\t-0.828438936258784840,\t-0.828466939192982750,\t\n-0.828494940056013430,\t-0.828522938847807140,\t-0.828550935568292960,\t-0.828578930217401590,\t-0.828606922795062760,\t-0.828634913301207200,\t-0.828662901735763850,\t-0.828690888098663200,\t\n-0.828718872389835440,\t-0.828746854609210380,\t-0.828774834756718200,\t-0.828802812832288960,\t-0.828830788835852710,\t-0.828858762767339500,\t-0.828886734626679390,\t-0.828914704413802330,\t\n-0.828942672128639150,\t-0.828970637771118680,\t-0.828998601341171650,\t-0.829026562838728110,\t-0.829054522263718670,\t-0.829082479616072510,\t-0.829110434895720010,\t-0.829138388102591550,\t\n-0.829166339236617090,\t-0.829194288297726680,\t-0.829222235285850710,\t-0.829250180200919010,\t-0.829278123042861970,\t-0.829306063811609540,\t-0.829334002507091990,\t-0.829361939129239390,\t\n-0.829389873677982450,\t-0.829417806153250340,\t-0.829445736554973780,\t-0.829473664883083270,\t-0.829501591137508210,\t-0.829529515318179090,\t-0.829557437425026190,\t-0.829585357457979790,\t\n-0.829613275416969940,\t-0.829641191301926820,\t-0.829669105112780800,\t-0.829697016849461950,\t-0.829724926511900660,\t-0.829752834100026980,\t-0.829780739613771300,\t-0.829808643053064230,\t\n-0.829836544417835050,\t-0.829864443708014490,\t-0.829892340923532810,\t-0.829920236064320750,\t-0.829948129130307690,\t-0.829976020121424240,\t-0.830003909037600800,\t-0.830031795878767520,\t\n-0.830059680644854800,\t-0.830087563335792810,\t-0.830115443951511930,\t-0.830143322491942560,\t-0.830171198957014740,\t-0.830199073346658990,\t-0.830226945660806010,\t-0.830254815899385320,\t\n-0.830282684062327410,\t-0.830310550149562900,\t-0.830338414161022390,\t-0.830366276096635490,\t-0.830394135956332820,\t-0.830421993740044770,\t-0.830449849447701840,\t-0.830477703079234300,\t\n-0.830505554634572430,\t-0.830533404113646620,\t-0.830561251516387380,\t-0.830589096842724970,\t-0.830616940092589910,\t-0.830644781265912900,\t-0.830672620362623460,\t-0.830700457382652520,\t\n-0.830728292325930370,\t-0.830756125192388060,\t-0.830783955981954870,\t-0.830811784694561850,\t-0.830839611330139280,\t-0.830867435888617780,\t-0.830895258369927610,\t-0.830923078773999400,\t\n-0.830950897100763420,\t-0.830978713350150170,\t-0.831006527522090140,\t-0.831034339616513850,\t-0.831062149633351680,\t-0.831089957572534680,\t-0.831117763433992240,\t-0.831145567217655420,\t\n-0.831173368923455060,\t-0.831201168551320870,\t-0.831228966101183800,\t-0.831256761572974350,\t-0.831284554966622900,\t-0.831312346282060080,\t-0.831340135519216370,\t-0.831367922678022400,\t\n-0.831395707758408540,\t-0.831423490760305530,\t-0.831451271683643740,\t-0.831479050528353690,\t-0.831506827294366650,\t-0.831534601981611890,\t-0.831562374590020690,\t-0.831590145119523560,\t\n-0.831617913570051550,\t-0.831645679941534380,\t-0.831673444233902880,\t-0.831701206447087780,\t-0.831728966581019690,\t-0.831756724635629220,\t-0.831784480610846870,\t-0.831812234506603350,\t\n-0.831839986322829180,\t-0.831867736059455190,\t-0.831895483716411750,\t-0.831923229293630050,\t-0.831950972791039910,\t-0.831978714208572280,\t-0.832006453546157880,\t-0.832034190803727870,\t\n-0.832061925981211760,\t-0.832089659078540930,\t-0.832117390095646000,\t-0.832145119032457470,\t-0.832172845888906280,\t-0.832200570664922920,\t-0.832228293360438130,\t-0.832256013975382510,\t\n-0.832283732509687010,\t-0.832311448963282130,\t-0.832339163336099030,\t-0.832366875628067660,\t-0.832394585839119070,\t-0.832422293969183990,\t-0.832450000018193690,\t-0.832477703986077790,\t\n-0.832505405872767780,\t-0.832533105678194160,\t-0.832560803402287770,\t-0.832588499044979450,\t-0.832616192606199900,\t-0.832643884085879750,\t-0.832671573483949930,\t-0.832699260800341290,\t\n-0.832726946034984430,\t-0.832754629187810070,\t-0.832782310258749820,\t-0.832809989247733200,\t-0.832837666154691680,\t-0.832865340979556450,\t-0.832893013722257320,\t-0.832920684382725710,\t\n-0.832948352960892310,\t-0.832976019456688200,\t-0.833003683870043870,\t-0.833031346200890480,\t-0.833059006449158650,\t-0.833086664614779320,\t-0.833114320697683210,\t-0.833141974697801490,\t\n-0.833169626615064660,\t-0.833197276449404440,\t-0.833224924200750340,\t-0.833252569869034070,\t-0.833280213454186350,\t-0.833307854956138570,\t-0.833335494374820680,\t-0.833363131710163960,\t\n-0.833390766962099570,\t-0.833418400130558120,\t-0.833446031215470780,\t-0.833473660216768280,\t-0.833501287134381650,\t-0.833528911968241860,\t-0.833556534718279730,\t-0.833584155384426320,\t\n-0.833611773966612900,\t-0.833639390464769650,\t-0.833667004878827940,\t-0.833694617208718620,\t-0.833722227454373300,\t-0.833749835615722020,\t-0.833777441692696080,\t-0.833805045685226400,\t\n-0.833832647593244270,\t-0.833860247416680520,\t-0.833887845155466100,\t-0.833915440809532060,\t-0.833943034378809460,\t-0.833970625863229230,\t-0.833998215262722440,\t-0.834025802577220590,\t\n-0.834053387806653830,\t-0.834080970950953460,\t-0.834108552010050850,\t-0.834136130983877180,\t-0.834163707872362710,\t-0.834191282675439070,\t-0.834218855393037200,\t-0.834246426025088140,\t\n-0.834273994571523070,\t-0.834301561032272930,\t-0.834329125407269000,\t-0.834356687696442110,\t-0.834384247899723650,\t-0.834411806017044460,\t-0.834439362048335910,\t-0.834466915993529290,\t\n-0.834494467852554990,\t-0.834522017625344390,\t-0.834549565311829330,\t-0.834577110911939870,\t-0.834604654425607610,\t-0.834632195852763710,\t-0.834659735193339360,\t-0.834687272447265590,\t\n-0.834714807614473700,\t-0.834742340694894840,\t-0.834769871688460060,\t-0.834797400595100660,\t-0.834824927414747680,\t-0.834852452147332390,\t-0.834879974792786530,\t-0.834907495351040140,\t\n-0.834935013822025060,\t-0.834962530205672460,\t-0.834990044501914050,\t-0.835017556710680010,\t-0.835045066831902050,\t-0.835072574865511560,\t-0.835100080811439490,\t-0.835127584669617230,\t\n-0.835155086439976050,\t-0.835182586122447110,\t-0.835210083716961820,\t-0.835237579223451210,\t-0.835265072641846680,\t-0.835292563972079960,\t-0.835320053214081320,\t-0.835347540367782580,\t\n-0.835375025433114930,\t-0.835402508410010290,\t-0.835429989298398850,\t-0.835457468098212420,\t-0.835484944809382400,\t-0.835512419431839850,\t-0.835539891965516370,\t-0.835567362410343240,\t\n-0.835594830766251520,\t-0.835622297033172920,\t-0.835649761211038400,\t-0.835677223299779560,\t-0.835704683299328120,\t-0.835732141209614590,\t-0.835759597030570570,\t-0.835787050762127670,\t\n-0.835814502404217510,\t-0.835841951956770690,\t-0.835869399419718940,\t-0.835896844792993750,\t-0.835924288076526410,\t-0.835951729270248410,\t-0.835979168374091030,\t-0.836006605387985660,\t\n-0.836034040311863900,\t-0.836061473145657040,\t-0.836088903889296350,\t-0.836116332542713560,\t-0.836143759105840380,\t-0.836171183578607310,\t-0.836198605960946310,\t-0.836226026252789190,\t\n-0.836253444454066570,\t-0.836280860564710400,\t-0.836308274584651960,\t-0.836335686513822950,\t-0.836363096352154670,\t-0.836390504099578600,\t-0.836417909756026370,\t-0.836445313321429350,\t\n-0.836472714795718940,\t-0.836500114178826860,\t-0.836527511470684490,\t-0.836554906671223790,\t-0.836582299780375350,\t-0.836609690798071130,\t-0.836637079724242730,\t-0.836664466558821980,\t\n-0.836691851301739730,\t-0.836719233952927800,\t-0.836746614512317800,\t-0.836773992979841230,\t-0.836801369355429810,\t-0.836828743639014830,\t-0.836856115830527990,\t-0.836883485929900920,\t\n-0.836910853937065100,\t-0.836938219851952160,\t-0.836965583674494140,\t-0.836992945404621770,\t-0.837020305042266880,\t-0.837047662587361410,\t-0.837075018039837080,\t-0.837102371399624840,\t\n-0.837129722666656640,\t-0.837157071840864080,\t-0.837184418922178990,\t-0.837211763910532760,\t-0.837239106805857110,\t-0.837266447608083660,\t-0.837293786317144130,\t-0.837321122932970120,\t\n-0.837348457455493360,\t-0.837375789884645890,\t-0.837403120220358450,\t-0.837430448462563200,\t-0.837457774611191860,\t-0.837485098666176600,\t-0.837512420627448130,\t-0.837539740494938510,\t\n-0.837567058268579580,\t-0.837594373948303050,\t-0.837621687534040540,\t-0.837648999025723760,\t-0.837676308423284550,\t-0.837703615726654640,\t-0.837730920935765510,\t-0.837758224050549230,\t\n-0.837785525070937400,\t-0.837812823996862190,\t-0.837840120828254320,\t-0.837867415565046290,\t-0.837894708207170160,\t-0.837921998754556860,\t-0.837949287207138460,\t-0.837976573564846890,\t\n-0.838003857827613880,\t-0.838031139995371150,\t-0.838058420068050650,\t-0.838085698045584080,\t-0.838112973927903290,\t-0.838140247714940110,\t-0.838167519406626260,\t-0.838194789002893570,\t\n-0.838222056503674430,\t-0.838249321908899670,\t-0.838276585218501570,\t-0.838303846432411960,\t-0.838331105550563340,\t-0.838358362572886430,\t-0.838385617499313620,\t-0.838412870329776740,\t\n-0.838440121064207730,\t-0.838467369702538320,\t-0.838494616244700560,\t-0.838521860690626290,\t-0.838549103040247320,\t-0.838576343293495620,\t-0.838603581450303000,\t-0.838630817510601980,\t\n-0.838658051474323370,\t-0.838685283341399690,\t-0.838712513111762760,\t-0.838739740785345080,\t-0.838766966362077590,\t-0.838794189841892580,\t-0.838821411224722200,\t-0.838848630510498180,\t\n-0.838875847699152690,\t-0.838903062790617550,\t-0.838930275784824710,\t-0.838957486681706220,\t-0.838984695481194030,\t-0.839011902183220080,\t-0.839039106787716870,\t-0.839066309294615340,\t\n-0.839093509703848110,\t-0.839120708015347110,\t-0.839147904229044730,\t-0.839175098344872250,\t-0.839202290362761950,\t-0.839229480282645880,\t-0.839256668104456200,\t-0.839283853828124760,\t\n-0.839311037453583710,\t-0.839338218980765110,\t-0.839365398409601000,\t-0.839392575740023350,\t-0.839419750971964200,\t-0.839446924105355710,\t-0.839474095140130490,\t-0.839501264076219390,\t\n-0.839528430913555220,\t-0.839555595652070500,\t-0.839582758291696150,\t-0.839609918832365020,\t-0.839637077274009160,\t-0.839664233616560510,\t-0.839691387859951230,\t-0.839718540004113610,\t\n-0.839745690048979480,\t-0.839772837994481320,\t-0.839799983840550990,\t-0.839827127587120640,\t-0.839854269234122430,\t-0.839881408781489200,\t-0.839908546229151790,\t-0.839935681577043130,\t\n-0.839962814825095270,\t-0.839989945973240730,\t-0.840017075021410990,\t-0.840044201969538550,\t-0.840071326817555470,\t-0.840098449565394260,\t-0.840125570212986730,\t-0.840152688760265390,\t\n-0.840179805207162400,\t-0.840206919553609710,\t-0.840234031799539820,\t-0.840261141944884880,\t-0.840288249989577520,\t-0.840315355933549110,\t-0.840342459776732280,\t-0.840369561519059280,\t\n-0.840396661160462850,\t-0.840423758700874380,\t-0.840450854140226470,\t-0.840477947478451390,\t-0.840505038715481430,\t-0.840532127851248870,\t-0.840559214885685970,\t-0.840586299818725120,\t\n-0.840613382650298500,\t-0.840640463380338380,\t-0.840667542008777140,\t-0.840694618535547500,\t-0.840721692960580860,\t-0.840748765283809930,\t-0.840775835505167100,\t-0.840802903624585210,\t\n-0.840829969641995630,\t-0.840857033557331100,\t-0.840884095370523890,\t-0.840911155081506490,\t-0.840938212690211180,\t-0.840965268196570470,\t-0.840992321600516400,\t-0.841019372901981700,\t\n-0.841046422100898420,\t-0.841073469197199160,\t-0.841100514190816660,\t-0.841127557081682520,\t-0.841154597869729350,\t-0.841181636554889760,\t-0.841208673137096460,\t-0.841235707616281080,\t\n-0.841262739992376440,\t-0.841289770265314930,\t-0.841316798435029050,\t-0.841343824501451070,\t-0.841370848464513600,\t-0.841397870324149030,\t-0.841424890080289760,\t-0.841451907732868270,\t\n-0.841478923281816950,\t-0.841505936727068300,\t-0.841532948068555390,\t-0.841559957306209580,\t-0.841586964439963950,\t-0.841613969469750870,\t-0.841640972395503280,\t-0.841667973217152810,\t\n-0.841694971934632390,\t-0.841721968547874620,\t-0.841748963056811910,\t-0.841775955461376730,\t-0.841802945761501720,\t-0.841829933957119360,\t-0.841856920048162150,\t-0.841883904034562590,\t\n-0.841910885916253290,\t-0.841937865693167200,\t-0.841964843365236030,\t-0.841991818932392830,\t-0.842018792394570000,\t-0.842045763751700700,\t-0.842072733003716430,\t-0.842099700150550360,\t\n-0.842126665192135080,\t-0.842153628128403110,\t-0.842180588959287160,\t-0.842207547684719620,\t-0.842234504304633200,\t-0.842261458818960640,\t-0.842288411227634310,\t-0.842315361530587060,\t\n-0.842342309727751810,\t-0.842369255819060300,\t-0.842396199804445690,\t-0.842423141683840580,\t-0.842450081457178150,\t-0.842477019124389990,\t-0.842503954685409280,\t-0.842530888140168630,\t\n-0.842557819488600760,\t-0.842584748730638380,\t-0.842611675866214100,\t-0.842638600895260770,\t-0.842665523817710760,\t-0.842692444633497020,\t-0.842719363342552150,\t-0.842746279944809440,\t\n-0.842773194440200380,\t-0.842800106828658470,\t-0.842827017110116320,\t-0.842853925284506980,\t-0.842880831351762390,\t-0.842907735311815730,\t-0.842934637164599710,\t-0.842961536910047160,\t\n-0.842988434548090800,\t-0.843015330078663250,\t-0.843042223501697440,\t-0.843069114817125990,\t-0.843096004024881830,\t-0.843122891124897690,\t-0.843149776117106290,\t-0.843176659001440900,\t\n-0.843203539777833360,\t-0.843230418446217040,\t-0.843257295006524580,\t-0.843284169458689450,\t-0.843311041802643380,\t-0.843337912038319760,\t-0.843364780165651310,\t-0.843391646184570850,\t\n-0.843418510095011340,\t-0.843445371896905600,\t-0.843472231590186470,\t-0.843499089174786660,\t-0.843525944650639130,\t-0.843552798017676690,\t-0.843579649275832840,\t-0.843606498425039320,\t\n-0.843633345465229610,\t-0.843660190396336550,\t-0.843687033218293410,\t-0.843713873931032250,\t-0.843740712534486460,\t-0.843767549028588860,\t-0.843794383413272290,\t-0.843821215688469910,\t\n-0.843848045854114330,\t-0.843874873910138820,\t-0.843901699856476010,\t-0.843928523693058930,\t-0.843955345419820650,\t-0.843982165036694320,\t-0.844008982543612230,\t-0.844035797940507650,\t\n-0.844062611227313520,\t-0.844089422403963450,\t-0.844116231470389280,\t-0.844143038426524610,\t-0.844169843272302270,\t-0.844196646007655320,\t-0.844223446632516690,\t-0.844250245146819570,\t\n-0.844277041550496770,\t-0.844303835843481450,\t-0.844330628025706460,\t-0.844357418097104850,\t-0.844384206057610330,\t-0.844410991907154630,\t-0.844437775645671570,\t-0.844464557273094110,\t\n-0.844491336789355620,\t-0.844518114194388380,\t-0.844544889488125890,\t-0.844571662670501100,\t-0.844598433741447160,\t-0.844625202700897140,\t-0.844651969548784190,\t-0.844678734285041250,\t\n-0.844705496909601390,\t-0.844732257422397880,\t-0.844759015823363770,\t-0.844785772112432110,\t-0.844812526289536400,\t-0.844839278354609040,\t-0.844866028307583390,\t-0.844892776148393090,\t\n-0.844919521876970500,\t-0.844946265493249030,\t-0.844973006997161940,\t-0.844999746388642280,\t-0.845026483667623340,\t-0.845053218834038060,\t-0.845079951887819810,\t-0.845106682828901780,\t\n-0.845133411657216890,\t-0.845160138372698540,\t-0.845186862975279780,\t-0.845213585464894450,\t-0.845240305841474580,\t-0.845267024104954020,\t-0.845293740255265820,\t-0.845320454292343810,\t\n-0.845347166216120160,\t-0.845373876026528690,\t-0.845400583723502350,\t-0.845427289306974640,\t-0.845453992776878720,\t-0.845480694133147860,\t-0.845507393375715230,\t-0.845534090504514110,\t\n-0.845560785519477780,\t-0.845587478420539380,\t-0.845614169207632880,\t-0.845640857880690430,\t-0.845667544439645870,\t-0.845694228884432460,\t-0.845720911214983940,\t-0.845747591431232570,\t\n-0.845774269533112300,\t-0.845800945520556400,\t-0.845827619393498150,\t-0.845854291151870720,\t-0.845880960795607710,\t-0.845907628324642280,\t-0.845934293738907720,\t-0.845960957038337400,\t\n-0.845987618222864720,\t-0.846014277292423510,\t-0.846040934246946040,\t-0.846067589086366260,\t-0.846094241810617540,\t-0.846120892419633730,\t-0.846147540913347210,\t-0.846174187291691800,\t\n-0.846200831554600910,\t-0.846227473702007900,\t-0.846254113733846290,\t-0.846280751650049350,\t-0.846307387450550560,\t-0.846334021135283330,\t-0.846360652704181040,\t-0.846387282157177070,\t\n-0.846413909494204920,\t-0.846440534715198420,\t-0.846467157820090190,\t-0.846493778808814050,\t-0.846520397681303830,\t-0.846547014437492250,\t-0.846573629077313150,\t-0.846600241600699910,\t\n-0.846626852007586140,\t-0.846653460297905220,\t-0.846680066471590660,\t-0.846706670528575840,\t-0.846733272468794370,\t-0.846759872292179750,\t-0.846786469998665470,\t-0.846813065588185030,\t\n-0.846839659060672380,\t-0.846866250416060120,\t-0.846892839654282190,\t-0.846919426775272210,\t-0.846946011778964110,\t-0.846972594665290510,\t-0.846999175434185460,\t-0.847025754085582340,\t\n-0.847052330619414980,\t-0.847078905035616780,\t-0.847105477334121230,\t-0.847132047514862040,\t-0.847158615577772720,\t-0.847185181522786880,\t-0.847211745349838120,\t-0.847238307058860380,\t\n-0.847264866649786510,\t-0.847291424122550430,\t-0.847317979477085760,\t-0.847344532713326550,\t-0.847371083831205630,\t-0.847397632830657050,\t-0.847424179711614320,\t-0.847450724474011150,\t\n-0.847477267117781150,\t-0.847503807642857930,\t-0.847530346049175320,\t-0.847556882336666820,\t-0.847583416505266030,\t-0.847609948554906790,\t-0.847636478485523040,\t-0.847663006297047720,\t\n-0.847689531989414880,\t-0.847716055562558140,\t-0.847742577016411760,\t-0.847769096350908580,\t-0.847795613565982540,\t-0.847822128661567480,\t-0.847848641637597100,\t-0.847875152494005140,\t\n-0.847901661230725300,\t-0.847928167847691320,\t-0.847954672344836790,\t-0.847981174722095780,\t-0.848007674979401660,\t-0.848034173116688490,\t-0.848060669133890220,\t-0.848087163030939890,\t\n-0.848113654807771680,\t-0.848140144464319730,\t-0.848166632000517010,\t-0.848193117416297770,\t-0.848219600711595630,\t-0.848246081886344540,\t-0.848272560940478200,\t-0.848299037873930460,\t\n-0.848325512686635140,\t-0.848351985378526070,\t-0.848378455949536980,\t-0.848404924399601800,\t-0.848431390728654260,\t-0.848457854936628840,\t-0.848484317023458170,\t-0.848510776989076730,\t\n-0.848537234833418360,\t-0.848563690556417450,\t-0.848590144158006820,\t-0.848616595638120750,\t-0.848643044996693190,\t-0.848669492233658060,\t-0.848695937348949210,\t-0.848722380342500580,\t\n-0.848748821214245890,\t-0.848775259964119180,\t-0.848801696592054290,\t-0.848828131097985270,\t-0.848854563481846290,\t-0.848880993743570400,\t-0.848907421883092090,\t-0.848933847900345210,\t\n-0.848960271795264230,\t-0.848986693567782110,\t-0.849013113217833130,\t-0.849039530745351430,\t-0.849065946150270980,\t-0.849092359432525590,\t-0.849118770592049320,\t-0.849145179628776110,\t\n-0.849171586542640020,\t-0.849197991333574880,\t-0.849224394001514840,\t-0.849250794546394180,\t-0.849277192968146080,\t-0.849303589266705130,\t-0.849329983442005050,\t-0.849356375493980580,\t\n-0.849382765422564630,\t-0.849409153227691840,\t-0.849435538909296130,\t-0.849461922467311560,\t-0.849488303901672180,\t-0.849514683212312050,\t-0.849541060399165220,\t-0.849567435462165730,\t\n-0.849593808401247650,\t-0.849620179216345140,\t-0.849646547907392140,\t-0.849672914474323140,\t-0.849699278917071420,\t-0.849725641235571590,\t-0.849752001429758040,\t-0.849778359499564040,\t\n-0.849804715444924200,\t-0.849831069265772450,\t-0.849857420962043200,\t-0.849883770533670260,\t-0.849910117980587910,\t-0.849936463302730320,\t-0.849962806500031530,\t-0.849989147572425720,\t\n-0.850015486519847040,\t-0.850041823342229660,\t-0.850068158039508190,\t-0.850094490611615900,\t-0.850120821058487300,\t-0.850147149380056640,\t-0.850173475576258660,\t-0.850199799647026520,\t\n-0.850226121592294830,\t-0.850252441411997850,\t-0.850278759106069760,\t-0.850305074674444830,\t-0.850331388117057110,\t-0.850357699433840990,\t-0.850384008624730630,\t-0.850410315689660190,\t\n-0.850436620628564070,\t-0.850462923441376750,\t-0.850489224128031740,\t-0.850515522688463530,\t-0.850541819122606620,\t-0.850568113430395620,\t-0.850594405611763920,\t-0.850620695666646220,\t\n-0.850646983594976700,\t-0.850673269396689750,\t-0.850699553071719630,\t-0.850725834620000620,\t-0.850752114041467000,\t-0.850778391336053040,\t-0.850804666503693240,\t-0.850830939544321760,\t\n-0.850857210457873330,\t-0.850883479244281430,\t-0.850909745903480790,\t-0.850936010435405790,\t-0.850962272839991370,\t-0.850988533117170600,\t-0.851014791266878620,\t-0.851041047289049610,\t\n-0.851067301183618060,\t-0.851093552950518250,\t-0.851119802589684450,\t-0.851146050101051270,\t-0.851172295484552870,\t-0.851198538740123740,\t-0.851224779867698290,\t-0.851251018867210880,\t\n-0.851277255738596470,\t-0.851303490481788330,\t-0.851329723096721500,\t-0.851355953583330940,\t-0.851382181941549910,\t-0.851408408171313470,\t-0.851434632272556000,\t-0.851460854245211900,\t\n-0.851487074089215760,\t-0.851513291804501860,\t-0.851539507391004700,\t-0.851565720848658890,\t-0.851591932177398700,\t-0.851618141377158740,\t-0.851644348447873400,\t-0.851670553389477610,\t\n-0.851696756201904990,\t-0.851722956885090480,\t-0.851749155438968560,\t-0.851775351863474310,\t-0.851801546158541090,\t-0.851827738324104080,\t-0.851853928360097770,\t-0.851880116266456540,\t\n-0.851906302043115020,\t-0.851932485690007790,\t-0.851958667207069360,\t-0.851984846594234240,\t-0.852011023851437010,\t-0.852037198978612300,\t-0.852063371975694930,\t-0.852089542842618730,\t\n-0.852115711579318650,\t-0.852141878185729280,\t-0.852168042661785700,\t-0.852194205007421490,\t-0.852220365222571830,\t-0.852246523307171320,\t-0.852272679261154460,\t-0.852298833084455860,\t\n-0.852324984777010130,\t-0.852351134338751980,\t-0.852377281769616020,\t-0.852403427069536870,\t-0.852429570238449120,\t-0.852455711276287940,\t-0.852481850182987060,\t-0.852507986958481510,\t\n-0.852534121602705920,\t-0.852560254115595550,\t-0.852586384497084130,\t-0.852612512747106700,\t-0.852638638865597990,\t-0.852664762852492600,\t-0.852690884707725470,\t-0.852717004431231000,\t\n-0.852743122022944110,\t-0.852769237482799310,\t-0.852795350810731550,\t-0.852821462006675300,\t-0.852847571070565410,\t-0.852873678002337150,\t-0.852899782801924130,\t-0.852925885469261620,\t\n-0.852951986004285010,\t-0.852978084406927910,\t-0.853004180677125580,\t-0.853030274814812750,\t-0.853056366819924250,\t-0.853082456692394910,\t-0.853108544432159440,\t-0.853134630039152460,\t\n-0.853160713513309020,\t-0.853186794854563830,\t-0.853212874062851510,\t-0.853238951138107100,\t-0.853265026080265780,\t-0.853291098889261470,\t-0.853317169565029340,\t-0.853343238107504340,\t\n-0.853369304516621630,\t-0.853395368792315260,\t-0.853421430934520500,\t-0.853447490943172070,\t-0.853473548818205030,\t-0.853499604559553980,\t-0.853525658167153980,\t-0.853551709640939850,\t\n-0.853577758980846420,\t-0.853603806186808640,\t-0.853629851258761340,\t-0.853655894196639790,\t-0.853681935000378140,\t-0.853707973669911580,\t-0.853734010205175140,\t-0.853760044606104110,\t\n-0.853786076872632530,\t-0.853812107004695790,\t-0.853838135002228720,\t-0.853864160865166370,\t-0.853890184593443570,\t-0.853916206186995260,\t-0.853942225645756500,\t-0.853968242969662230,\t\n-0.853994258158647270,\t-0.854020271212646680,\t-0.854046282131595840,\t-0.854072290915428910,\t-0.854098297564081180,\t-0.854124302077487800,\t-0.854150304455584040,\t-0.854176304698304080,\t\n-0.854202302805583400,\t-0.854228298777356950,\t-0.854254292613559670,\t-0.854280284314126730,\t-0.854306273878993160,\t-0.854332261308093810,\t-0.854358246601363720,\t-0.854384229758738180,\t\n-0.854410210780152000,\t-0.854436189665540250,\t-0.854462166414838520,\t-0.854488141027980990,\t-0.854514113504903030,\t-0.854540083845540250,\t-0.854566052049826830,\t-0.854592018117698250,\t\n-0.854617982049089560,\t-0.854643943843936050,\t-0.854669903502172530,\t-0.854695861023734400,\t-0.854721816408556600,\t-0.854747769656574170,\t-0.854773720767722400,\t-0.854799669741936220,\t\n-0.854825616579151020,\t-0.854851561279302170,\t-0.854877503842323860,\t-0.854903444268151900,\t-0.854929382556721350,\t-0.854955318707967700,\t-0.854981252721825350,\t-0.855007184598229890,\t\n-0.855033114337116480,\t-0.855059041938420190,\t-0.855084967402076400,\t-0.855110890728020160,\t-0.855136811916186730,\t-0.855162730966511190,\t-0.855188647878928900,\t-0.855214562653374920,\t\n-0.855240475289784970,\t-0.855266385788093440,\t-0.855292294148235930,\t-0.855318200370147720,\t-0.855344104453764410,\t-0.855370006399020390,\t-0.855395906205851380,\t-0.855421803874192640,\t\n-0.855447699403979360,\t-0.855473592795146790,\t-0.855499484047630320,\t-0.855525373161365010,\t-0.855551260136286350,\t-0.855577144972329510,\t-0.855603027669429860,\t-0.855628908227523130,\t\n-0.855654786646543600,\t-0.855680662926427080,\t-0.855706537067108970,\t-0.855732409068524990,\t-0.855758278930609410,\t-0.855784146653298270,\t-0.855810012236526640,\t-0.855835875680230120,\t\n-0.855861736984343760,\t-0.855887596148803160,\t-0.855913453173543500,\t-0.855939308058500270,\t-0.855965160803608740,\t-0.855991011408804290,\t-0.856016859874022430,\t-0.856042706199198760,\t\n-0.856068550384267880,\t-0.856094392429165630,\t-0.856120232333827950,\t-0.856146070098189100,\t-0.856171905722185160,\t-0.856197739205751370,\t-0.856223570548823250,\t-0.856249399751336290,\t\n-0.856275226813225760,\t-0.856301051734427170,\t-0.856326874514875990,\t-0.856352695154507630,\t-0.856378513653257460,\t-0.856404330011061090,\t-0.856430144227854240,\t-0.856455956303571740,\t\n-0.856481766238149200,\t-0.856507574031522330,\t-0.856533379683626970,\t-0.856559183194397610,\t-0.856584984563770410,\t-0.856610783791680650,\t-0.856636580878064050,\t-0.856662375822855870,\t\n-0.856688168625991840,\t-0.856713959287407350,\t-0.856739747807037990,\t-0.856765534184819270,\t-0.856791318420686680,\t-0.856817100514576270,\t-0.856842880466422650,\t-0.856868658276161770,\t\n-0.856894433943729330,\t-0.856920207469061280,\t-0.856945978852092230,\t-0.856971748092758110,\t-0.856997515190994760,\t-0.857023280146737560,\t-0.857049042959922240,\t-0.857074803630484270,\t\n-0.857100562158359280,\t-0.857126318543482870,\t-0.857152072785790640,\t-0.857177824885218320,\t-0.857203574841701840,\t-0.857229322655175930,\t-0.857255068325576740,\t-0.857280811852839890,\t\n-0.857306553236901410,\t-0.857332292477696160,\t-0.857358029575160160,\t-0.857383764529229150,\t-0.857409497339838620,\t-0.857435228006924510,\t-0.857460956530422200,\t-0.857486682910267530,\t\n-0.857512407146396090,\t-0.857538129238743730,\t-0.857563849187245930,\t-0.857589566991839080,\t-0.857615282652457790,\t-0.857640996169038330,\t-0.857666707541516420,\t-0.857692416769828100,\t\n-0.857718123853908330,\t-0.857743828793693260,\t-0.857769531589118620,\t-0.857795232240120110,\t-0.857820930746633570,\t-0.857846627108594720,\t-0.857872321325939160,\t-0.857898013398602940,\t\n-0.857923703326521680,\t-0.857949391109631090,\t-0.857975076747867100,\t-0.858000760241165780,\t-0.858026441589462170,\t-0.858052120792692440,\t-0.858077797850792410,\t-0.858103472763698360,\t\n-0.858129145531345230,\t-0.858154816153669180,\t-0.858180484630606030,\t-0.858206150962091740,\t-0.858231815148062020,\t-0.858257477188452800,\t-0.858283137083199920,\t-0.858308794832239100,\t\n-0.858334450435506380,\t-0.858360103892937490,\t-0.858385755204468800,\t-0.858411404370035270,\t-0.858437051389573270,\t-0.858462696263018630,\t-0.858488338990307630,\t-0.858513979571375430,\t\n-0.858539618006158190,\t-0.858565254294591960,\t-0.858590888436612580,\t-0.858616520432155970,\t-0.858642150281158090,\t-0.858667777983554870,\t-0.858693403539282140,\t-0.858719026948275840,\t\n-0.858744648210472140,\t-0.858770267325807080,\t-0.858795884294216050,\t-0.858821499115635210,\t-0.858847111790000730,\t-0.858872722317248870,\t-0.858898330697314690,\t-0.858923936930134800,\t\n-0.858949541015645020,\t-0.858975142953781300,\t-0.859000742744479910,\t-0.859026340387676560,\t-0.859051935883307300,\t-0.859077529231308310,\t-0.859103120431615410,\t-0.859128709484164750,\t\n-0.859154296388892740,\t-0.859179881145734510,\t-0.859205463754626700,\t-0.859231044215505110,\t-0.859256622528306370,\t-0.859282198692965740,\t-0.859307772709419490,\t-0.859333344577603910,\t\n-0.859358914297454810,\t-0.859384481868908590,\t-0.859410047291901070,\t-0.859435610566368520,\t-0.859461171692246890,\t-0.859486730669472340,\t-0.859512287497980920,\t-0.859537842177708790,\t\n-0.859563394708592550,\t-0.859588945090567380,\t-0.859614493323569760,\t-0.859640039407535970,\t-0.859665583342402620,\t-0.859691125128104750,\t-0.859716664764579090,\t-0.859742202251761790,\t\n-0.859767737589588910,\t-0.859793270777996720,\t-0.859818801816921390,\t-0.859844330706299060,\t-0.859869857446065920,\t-0.859895382036158120,\t-0.859920904476511820,\t-0.859946424767063730,\t\n-0.859971942907749140,\t-0.859997458898504650,\t-0.860022972739266530,\t-0.860048484429971500,\t-0.860073993970554730,\t-0.860099501360953030,\t-0.860125006601102580,\t-0.860150509690939540,\t\n-0.860176010630400280,\t-0.860201509419420970,\t-0.860227006057937890,\t-0.860252500545887310,\t-0.860277992883205500,\t-0.860303483069828620,\t-0.860328971105693620,\t-0.860354456990735650,\t\n-0.860379940724891550,\t-0.860405422308097580,\t-0.860430901740290580,\t-0.860456379021405810,\t-0.860481854151380120,\t-0.860507327130149770,\t-0.860532797957651140,\t-0.860558266633820510,\t\n-0.860583733158594160,\t-0.860609197531908450,\t-0.860634659753699900,\t-0.860660119823904560,\t-0.860685577742459020,\t-0.860711033509299890,\t-0.860736487124362790,\t-0.860761938587584540,\t\n-0.860787387898901300,\t-0.860812835058250130,\t-0.860838280065566400,\t-0.860863722920786940,\t-0.860889163623848150,\t-0.860914602174686520,\t-0.860940038573238420,\t-0.860965472819440140,\t\n-0.860990904913228160,\t-0.861016334854538990,\t-0.861041762643309010,\t-0.861067188279474590,\t-0.861092611762972140,\t-0.861118033093738690,\t-0.861143452271709630,\t-0.861168869296822010,\t\n-0.861194284169012670,\t-0.861219696888217090,\t-0.861245107454372330,\t-0.861270515867414770,\t-0.861295922127280900,\t-0.861321326233907340,\t-0.861346728187230350,\t-0.861372127987186540,\t\n-0.861397525633712520,\t-0.861422921126744570,\t-0.861448314466219390,\t-0.861473705652073370,\t-0.861499094684243570,\t-0.861524481562665590,\t-0.861549866287276480,\t-0.861575248858012510,\t\n-0.861600629274811070,\t-0.861626007537607430,\t-0.861651383646338860,\t-0.861676757600941870,\t-0.861702129401352930,\t-0.861727499047508670,\t-0.861752866539345690,\t-0.861778231876800580,\t\n-0.861803595059809750,\t-0.861828956088310120,\t-0.861854314962237970,\t-0.861879671681530460,\t-0.861905026246123420,\t-0.861930378655953790,\t-0.861955728910958170,\t-0.861981077011073740,\t\n-0.862006422956236080,\t-0.862031766746382490,\t-0.862057108381449330,\t-0.862082447861373560,\t-0.862107785186091550,\t-0.862133120355540130,\t-0.862158453369655910,\t-0.862183784228375490,\t\n-0.862209112931635600,\t-0.862234439479373060,\t-0.862259763871524810,\t-0.862285086108026680,\t-0.862310406188815830,\t-0.862335724113828970,\t-0.862361039883003280,\t-0.862386353496274570,\t\n-0.862411664953579900,\t-0.862436974254856100,\t-0.862462281400039890,\t-0.862487586389067970,\t-0.862512889221876970,\t-0.862538189898403920,\t-0.862563488418585320,\t-0.862588784782358010,\t\n-0.862614078989658690,\t-0.862639371040424210,\t-0.862664660934591710,\t-0.862689948672097140,\t-0.862715234252877770,\t-0.862740517676870660,\t-0.862765798944011840,\t-0.862791078054238600,\t\n-0.862816355007487550,\t-0.862841629803695720,\t-0.862866902442799730,\t-0.862892172924736520,\t-0.862917441249442810,\t-0.862942707416855640,\t-0.862967971426911620,\t-0.862993233279547580,\t\n-0.863018492974700570,\t-0.863043750512307750,\t-0.863069005892305170,\t-0.863094259114630000,\t-0.863119510179219170,\t-0.863144759086010070,\t-0.863170005834938640,\t-0.863195250425942140,\t\n-0.863220492858957520,\t-0.863245733133921610,\t-0.863270971250771460,\t-0.863296207209443890,\t-0.863321441009875730,\t-0.863346672652004040,\t-0.863371902135765650,\t-0.863397129461097480,\t\n-0.863422354627936930,\t-0.863447577636220040,\t-0.863472798485884210,\t-0.863498017176866470,\t-0.863523233709104000,\t-0.863548448082533060,\t-0.863573660297091040,\t-0.863598870352714760,\t\n-0.863624078249341400,\t-0.863649283986907880,\t-0.863674487565351030,\t-0.863699688984608030,\t-0.863724888244615910,\t-0.863750085345311390,\t-0.863775280286631750,\t-0.863800473068514370,\t\n-0.863825663690895310,\t-0.863850852153712050,\t-0.863876038456901750,\t-0.863901222600401810,\t-0.863926404584148270,\t-0.863951584408078840,\t-0.863976762072130370,\t-0.864001937576240000,\t\n-0.864027110920344790,\t-0.864052282104381790,\t-0.864077451128288150,\t-0.864102617992000830,\t-0.864127782695456980,\t-0.864152945238593650,\t-0.864178105621348000,\t-0.864203263843657530,\t\n-0.864228419905458400,\t-0.864253573806688210,\t-0.864278725547284580,\t-0.864303875127183760,\t-0.864329022546323160,\t-0.864354167804640030,\t-0.864379310902071430,\t-0.864404451838554630,\t\n-0.864429590614026690,\t-0.864454727228424760,\t-0.864479861681686000,\t-0.864504993973747580,\t-0.864530124104546660,\t-0.864555252074020400,\t-0.864580377882106510,\t-0.864605501528741270,\t\n-0.864630623013862290,\t-0.864655742337406720,\t-0.864680859499312170,\t-0.864705974499515030,\t-0.864731087337953010,\t-0.864756198014563270,\t-0.864781306529283090,\t-0.864806412882049620,\t\n-0.864831517072800040,\t-0.864856619101471710,\t-0.864881718968001810,\t-0.864906816672327610,\t-0.864931912214386480,\t-0.864957005594115810,\t-0.864982096811452330,\t-0.865007185866333630,\t\n-0.865032272758696870,\t-0.865057357488479890,\t-0.865082440055619180,\t-0.865107520460052240,\t-0.865132598701716550,\t-0.865157674780549390,\t-0.865182748696488040,\t-0.865207820449469760,\t\n-0.865232890039431930,\t-0.865257957466311960,\t-0.865283022730047090,\t-0.865308085830574610,\t-0.865333146767832350,\t-0.865358205541756800,\t-0.865383262152285780,\t-0.865408316599356460,\t\n-0.865433368882906890,\t-0.865458419002873570,\t-0.865483466959194090,\t-0.865508512751805850,\t-0.865533556380646440,\t-0.865558597845653140,\t-0.865583637146763340,\t-0.865608674283914410,\t\n-0.865633709257043860,\t-0.865658742066088950,\t-0.865683772710987290,\t-0.865708801191676150,\t-0.865733827508093470,\t-0.865758851660175740,\t-0.865783873647860800,\t-0.865808893471086800,\t\n-0.865833911129790020,\t-0.865858926623908510,\t-0.865883939953379640,\t-0.865908951118140920,\t-0.865933960118129840,\t-0.865958966953283780,\t-0.865983971623540460,\t-0.866008974128837150,\t\n-0.866033974469111350,\t-0.866058972644300650,\t-0.866083968654342560,\t-0.866108962499174910,\t-0.866133954178734400,\t-0.866158943692959090,\t-0.866183931041786370,\t-0.866208916225154280,\t\n-0.866233899242999540,\t-0.866258880095259980,\t-0.866283858781873200,\t-0.866308835302776800,\t-0.866333809657908290,\t-0.866358781847205270,\t-0.866383751870605230,\t-0.866408719728045900,\t\n-0.866433685419464750,\t-0.866458648944799400,\t-0.866483610303987790,\t-0.866508569496966750,\t-0.866533526523674320,\t-0.866558481384048120,\t-0.866583434078026070,\t-0.866608384605545010,\t\n-0.866633332966542990,\t-0.866658279160957720,\t-0.866683223188726700,\t-0.866708165049787540,\t-0.866733104744078050,\t-0.866758042271535860,\t-0.866782977632098440,\t-0.866807910825703630,\t\n-0.866832841852289040,\t-0.866857770711792820,\t-0.866882697404151690,\t-0.866907621929303820,\t-0.866932544287186910,\t-0.866957464477739030,\t-0.866982382500897100,\t-0.867007298356599180,\t\n-0.867032212044783090,\t-0.867057123565386330,\t-0.867082032918346960,\t-0.867106940103602340,\t-0.867131845121090430,\t-0.867156747970748930,\t-0.867181648652515570,\t-0.867206547166328060,\t\n-0.867231443512124110,\t-0.867256337689842120,\t-0.867281229699418790,\t-0.867306119540792400,\t-0.867331007213901110,\t-0.867355892718681850,\t-0.867380776055072910,\t-0.867405657223011990,\t\n-0.867430536222436930,\t-0.867455413053285550,\t-0.867480287715495680,\t-0.867505160209005030,\t-0.867530030533751550,\t-0.867554898689672950,\t-0.867579764676707050,\t-0.867604628494791810,\t\n-0.867629490143865480,\t-0.867654349623864900,\t-0.867679206934728440,\t-0.867704062076393940,\t-0.867728915048799790,\t-0.867753765851882910,\t-0.867778614485581690,\t-0.867803460949833850,\t\n-0.867828305244577320,\t-0.867853147369750060,\t-0.867877987325289980,\t-0.867902825111134810,\t-0.867927660727222720,\t-0.867952494173491410,\t-0.867977325449878820,\t-0.868002154556323460,\t\n-0.868026981492762250,\t-0.868051806259133470,\t-0.868076628855375290,\t-0.868101449281425960,\t-0.868126267537222550,\t-0.868151083622703550,\t-0.868175897537806770,\t-0.868200709282470170,\t\n-0.868225518856631910,\t-0.868250326260229800,\t-0.868275131493201900,\t-0.868299934555486150,\t-0.868324735447020600,\t-0.868349534167743190,\t-0.868374330717592400,\t-0.868399125096505300,\t\n-0.868423917304420480,\t-0.868448707341275770,\t-0.868473495207009780,\t-0.868498280901559670,\t-0.868523064424863710,\t-0.868547845776860170,\t-0.868572624957486990,\t-0.868597401966682340,\t\n-0.868622176804384140,\t-0.868646949470530450,\t-0.868671719965059430,\t-0.868696488287909020,\t-0.868721254439017490,\t-0.868746018418322770,\t-0.868770780225763480,\t-0.868795539861276780,\t\n-0.868820297324801260,\t-0.868845052616275430,\t-0.868869805735636550,\t-0.868894556682823120,\t-0.868919305457773290,\t-0.868944052060425240,\t-0.868968796490717010,\t-0.868993538748586760,\t\n-0.869018278833972760,\t-0.869043016746813060,\t-0.869067752487045710,\t-0.869092486054609090,\t-0.869117217449441150,\t-0.869141946671480700,\t-0.869166673720664920,\t-0.869191398596932400,\t\n-0.869216121300221410,\t-0.869240841830470680,\t-0.869265560187617250,\t-0.869290276371599950,\t-0.869314990382357040,\t-0.869339702219826590,\t-0.869364411883946860,\t-0.869389119374656130,\t\n-0.869413824691892660,\t-0.869438527835594500,\t-0.869463228805700150,\t-0.869487927602147660,\t-0.869512624224875850,\t-0.869537318673822000,\t-0.869562010948924820,\t-0.869586701050122590,\t\n-0.869611388977354130,\t-0.869636074730556710,\t-0.869660758309669160,\t-0.869685439714629640,\t-0.869710118945376530,\t-0.869734796001848220,\t-0.869759470883982870,\t-0.869784143591718740,\t\n-0.869808814124994330,\t-0.869833482483747920,\t-0.869858148667917770,\t-0.869882812677442720,\t-0.869907474512260140,\t-0.869932134172308970,\t-0.869956791657527370,\t-0.869981446967854290,\t\n-0.870006100103227100,\t-0.870030751063584630,\t-0.870055399848865370,\t-0.870080046459007610,\t-0.870104690893949710,\t-0.870129333153630060,\t-0.870153973237987040,\t-0.870178611146959160,\t\n-0.870203246880484780,\t-0.870227880438502190,\t-0.870252511820949980,\t-0.870277141027766880,\t-0.870301768058890480,\t-0.870326392914259730,\t-0.870351015593813450,\t-0.870375636097489020,\t\n-0.870400254425225730,\t-0.870424870576961610,\t-0.870449484552635380,\t-0.870474096352185530,\t-0.870498705975550350,\t-0.870523313422668420,\t-0.870547918693478140,\t-0.870572521787918220,\t\n-0.870597122705926820,\t-0.870621721447442760,\t-0.870646318012404770,\t-0.870670912400750560,\t-0.870695504612419070,\t-0.870720094647348790,\t-0.870744682505478760,\t-0.870769268186746490,\t\n-0.870793851691091140,\t-0.870818433018451190,\t-0.870843012168765030,\t-0.870867589141971490,\t-0.870892163938008830,\t-0.870916736556815900,\t-0.870941306998331060,\t-0.870965875262492920,\t\n-0.870990441349240090,\t-0.871015005258511720,\t-0.871039566990245320,\t-0.871064126544379920,\t-0.871088683920854370,\t-0.871113239119607360,\t-0.871137792140576960,\t-0.871162342983702100,\t\n-0.871186891648921270,\t-0.871211438136173190,\t-0.871235982445396570,\t-0.871260524576530030,\t-0.871285064529512270,\t-0.871309602304281670,\t-0.871334137900777070,\t-0.871358671318937290,\t\n-0.871383202558701160,\t-0.871407731620006510,\t-0.871432258502792710,\t-0.871456783206998150,\t-0.871481305732562110,\t-0.871505826079422290,\t-0.871530344247517960,\t-0.871554860236787740,\t\n-0.871579374047170450,\t-0.871603885678604700,\t-0.871628395131029190,\t-0.871652902404382760,\t-0.871677407498604010,\t-0.871701910413631760,\t-0.871726411149404750,\t-0.871750909705862110,\t\n-0.871775406082941800,\t-0.871799900280582960,\t-0.871824392298724330,\t-0.871848882137305160,\t-0.871873369796263400,\t-0.871897855275538200,\t-0.871922338575068400,\t-0.871946819694792710,\t\n-0.871971298634649950,\t-0.871995775394579060,\t-0.872020249974518660,\t-0.872044722374407550,\t-0.872069192594184690,\t-0.872093660633788900,\t-0.872118126493158900,\t-0.872142590172234060,\t\n-0.872167051670952320,\t-0.872191510989252850,\t-0.872215968127074690,\t-0.872240423084357120,\t-0.872264875861037960,\t-0.872289326457056590,\t-0.872313774872351950,\t-0.872338221106862880,\t\n-0.872362665160528180,\t-0.872387107033286920,\t-0.872411546725077810,\t-0.872435984235839900,\t-0.872460419565512010,\t-0.872484852714032980,\t-0.872509283681342400,\t-0.872533712467378100,\t\n-0.872558139072079460,\t-0.872582563495385540,\t-0.872606985737235720,\t-0.872631405797567930,\t-0.872655823676321660,\t-0.872680239373435750,\t-0.872704652888849240,\t-0.872729064222501180,\t\n-0.872753473374330400,\t-0.872777880344276060,\t-0.872802285132276870,\t-0.872826687738271990,\t-0.872851088162200470,\t-0.872875486404001590,\t-0.872899882463613610,\t-0.872924276340975910,\t\n-0.872948668036027550,\t-0.872973057548707910,\t-0.872997444878955140,\t-0.873021830026708860,\t-0.873046212991907990,\t-0.873070593774491480,\t-0.873094972374398590,\t-0.873119348791568270,\t\n-0.873143723025939570,\t-0.873168095077451520,\t-0.873192464946043300,\t-0.873216832631653840,\t-0.873241198134222740,\t-0.873265561453688280,\t-0.873289922589989830,\t-0.873314281543066670,\t\n-0.873338638312858180,\t-0.873362992899302640,\t-0.873387345302339630,\t-0.873411695521908340,\t-0.873436043557947790,\t-0.873460389410397050,\t-0.873484733079195390,\t-0.873509074564281840,\t\n-0.873533413865595690,\t-0.873557750983075980,\t-0.873582085916661870,\t-0.873606418666292520,\t-0.873630749231907640,\t-0.873655077613445410,\t-0.873679403810845520,\t-0.873703727824047040,\t\n-0.873728049652989670,\t-0.873752369297611910,\t-0.873776686757853030,\t-0.873801002033652520,\t-0.873825315124949540,\t-0.873849626031683150,\t-0.873873934753792820,\t-0.873898241291217630,\t\n-0.873922545643896820,\t-0.873946847811769680,\t-0.873971147794775360,\t-0.873995445592853580,\t-0.874019741205942840,\t-0.874044034633982720,\t-0.874068325876912410,\t-0.874092614934671830,\t\n-0.874116901807199250,\t-0.874141186494434510,\t-0.874165468996316640,\t-0.874189749312785260,\t-0.874214027443779410,\t-0.874238303389238470,\t-0.874262577149101830,\t-0.874286848723308750,\t\n-0.874311118111798510,\t-0.874335385314510490,\t-0.874359650331384410,\t-0.874383913162358860,\t-0.874408173807373460,\t-0.874432432266367580,\t-0.874456688539281160,\t-0.874480942626052580,\t\n-0.874505194526621570,\t-0.874529444240927600,\t-0.874553691768910070,\t-0.874577937110508240,\t-0.874602180265661610,\t-0.874626421234309450,\t-0.874650660016391360,\t-0.874674896611846500,\t\n-0.874699131020614470,\t-0.874723363242635000,\t-0.874747593277846790,\t-0.874771821126189560,\t-0.874796046787602700,\t-0.874820270262026240,\t-0.874844491549398580,\t-0.874868710649659760,\t\n-0.874892927562749170,\t-0.874917142288606290,\t-0.874941354827170500,\t-0.874965565178381310,\t-0.874989773342178200,\t-0.875013979318500670,\t-0.875038183107288200,\t-0.875062384708480300,\t\n-0.875086584122016450,\t-0.875110781347836600,\t-0.875134976385879230,\t-0.875159169236084500,\t-0.875183359898392350,\t-0.875207548372741280,\t-0.875231734659071340,\t-0.875255918757322120,\t\n-0.875280100667433000,\t-0.875304280389343710,\t-0.875328457922993740,\t-0.875352633268322580,\t-0.875376806425269830,\t-0.875400977393775090,\t-0.875425146173777870,\t-0.875449312765217760,\t\n-0.875473477168034920,\t-0.875497639382167850,\t-0.875521799407556700,\t-0.875545957244141080,\t-0.875570112891861040,\t-0.875594266350655180,\t-0.875618417620463770,\t-0.875642566701226200,\t\n-0.875666713592882280,\t-0.875690858295371630,\t-0.875715000808633740,\t-0.875739141132608420,\t-0.875763279267235180,\t-0.875787415212453730,\t-0.875811548968203790,\t-0.875835680534425400,\t\n-0.875859809911057390,\t-0.875883937098039800,\t-0.875908062095312470,\t-0.875932184902815330,\t-0.875956305520487310,\t-0.875980423948268580,\t-0.876004540186098750,\t-0.876028654233917630,\t\n-0.876052766091664830,\t-0.876076875759280060,\t-0.876100983236703160,\t-0.876125088523873720,\t-0.876149191620731680,\t-0.876173292527216650,\t-0.876197391243268680,\t-0.876221487768826910,\t\n-0.876245582103831410,\t-0.876269674248222000,\t-0.876293764201938830,\t-0.876317851964920740,\t-0.876341937537108100,\t-0.876366020918440510,\t-0.876390102108857930,\t-0.876414181108300160,\t\n-0.876438257916706820,\t-0.876462332534017950,\t-0.876486404960173160,\t-0.876510475195112380,\t-0.876534543238775440,\t-0.876558609091102170,\t-0.876582672752032720,\t-0.876606734221506260,\t\n-0.876630793499462820,\t-0.876654850585842920,\t-0.876678905480585470,\t-0.876702958183630750,\t-0.876727008694918710,\t-0.876751057014389050,\t-0.876775103141981700,\t-0.876799147077636730,\t\n-0.876823188821293730,\t-0.876847228372892860,\t-0.876871265732373950,\t-0.876895300899676820,\t-0.876919333874741520,\t-0.876943364657508220,\t-0.876967393247916060,\t-0.876991419645905550,\t\n-0.877015443851416390,\t-0.877039465864389080,\t-0.877063485684762670,\t-0.877087503312477530,\t-0.877111518747473620,\t-0.877135531989690960,\t-0.877159543039069400,\t-0.877183551895549090,\t\n-0.877207558559069840,\t-0.877231563029571610,\t-0.877255565306994560,\t-0.877279565391278600,\t-0.877303563282364140,\t-0.877327558980190440,\t-0.877351552484697760,\t-0.877375543795826160,\t\n-0.877399532913516130,\t-0.877423519837706940,\t-0.877447504568338870,\t-0.877471487105352050,\t-0.877495467448686560,\t-0.877519445598282320,\t-0.877543421554079490,\t-0.877567395316018130,\t\n-0.877591366884038270,\t-0.877615336258079970,\t-0.877639303438083380,\t-0.877663268423989010,\t-0.877687231215735890,\t-0.877711191813264850,\t-0.877735150216515710,\t-0.877759106425429200,\t\n-0.877783060439944360,\t-0.877807012260002020,\t-0.877830961885542100,\t-0.877854909316504780,\t-0.877878854552830210,\t-0.877902797594458440,\t-0.877926738441329730,\t-0.877950677093384150,\t\n-0.877974613550561940,\t-0.877998547812803070,\t-0.878022479880047890,\t-0.878046409752237020,\t-0.878070337429309620,\t-0.878094262911206400,\t-0.878118186197867970,\t-0.878142107289233590,\t\n-0.878166026185243980,\t-0.878189942885839290,\t-0.878213857390959700,\t-0.878237769700545570,\t-0.878261679814536960,\t-0.878285587732874130,\t-0.878309493455497360,\t-0.878333396982346800,\t\n-0.878357298313362840,\t-0.878381197448485530,\t-0.878405094387655790,\t-0.878428989130812800,\t-0.878452881677897370,\t-0.878476772028849660,\t-0.878500660183610500,\t-0.878524546142119280,\t\n-0.878548429904316700,\t-0.878572311470143030,\t-0.878596190839538550,\t-0.878620068012443630,\t-0.878643942988798550,\t-0.878667815768543580,\t-0.878691686351619090,\t-0.878715554737965370,\t\n-0.878739420927522770,\t-0.878763284920232150,\t-0.878787146716032750,\t-0.878811006314865530,\t-0.878834863716670740,\t-0.878858718921389340,\t-0.878882571928960580,\t-0.878906422739325510,\t\n-0.878930271352424300,\t-0.878954117768197430,\t-0.878977961986585290,\t-0.879001804007528250,\t-0.879025643830966710,\t-0.879049481456841030,\t-0.879073316885091600,\t-0.879097150115658920,\t\n-0.879120981148483800,\t-0.879144809983505860,\t-0.879168636620665800,\t-0.879192461059904230,\t-0.879216283301161860,\t-0.879240103344378410,\t-0.879263921189494590,\t-0.879287736836451120,\t\n-0.879311550285188260,\t-0.879335361535646510,\t-0.879359170587766360,\t-0.879382977441488300,\t-0.879406782096752710,\t-0.879430584553500210,\t-0.879454384811671260,\t-0.879478182871206380,\t\n-0.879501978732046500,\t-0.879525772394131210,\t-0.879549563857401460,\t-0.879573353121798180,\t-0.879597140187261210,\t-0.879620925053731350,\t-0.879644707721149110,\t-0.879668488189455200,\t\n-0.879692266458590000,\t-0.879716042528494110,\t-0.879739816399108250,\t-0.879763588070372690,\t-0.879787357542228250,\t-0.879811124814615430,\t-0.879834889887474710,\t-0.879858652760747260,\t\n-0.879882413434372790,\t-0.879906171908292230,\t-0.879929928182446200,\t-0.879953682256775840,\t-0.879977434131220870,\t-0.880001183805722230,\t-0.880024931280220750,\t-0.880048676554656790,\t\n-0.880072419628971310,\t-0.880096160503104690,\t-0.880119899176997620,\t-0.880143635650590840,\t-0.880167369923825050,\t-0.880191101996640750,\t-0.880214831868979090,\t-0.880238559540780010,\t\n-0.880262285011984450,\t-0.880286008282533230,\t-0.880309729352367400,\t-0.880333448221426900,\t-0.880357164889652650,\t-0.880380879356985610,\t-0.880404591623366260,\t-0.880428301688735540,\t\n-0.880452009553034040,\t-0.880475715216202490,\t-0.880499418678181600,\t-0.880523119938912190,\t-0.880546818998335090,\t-0.880570515856391230,\t-0.880594210513020670,\t-0.880617902968164670,\t\n-0.880641593221763830,\t-0.880665281273759540,\t-0.880688967124091500,\t-0.880712650772701110,\t-0.880736332219529070,\t-0.880760011464516210,\t-0.880783688507603360,\t-0.880807363348731220,\t\n-0.880831035987840630,\t-0.880854706424872510,\t-0.880878374659767700,\t-0.880902040692466910,\t-0.880925704522910970,\t-0.880949366151041250,\t-0.880973025576797570,\t-0.880996682800121440,\t\n-0.881020337820954010,\t-0.881043990639235330,\t-0.881067641254906660,\t-0.881091289667908840,\t-0.881114935878182900,\t-0.881138579885669570,\t-0.881162221690309780,\t-0.881185861292044350,\t\n-0.881209498690814330,\t-0.881233133886560660,\t-0.881256766879224050,\t-0.881280397668745550,\t-0.881304026255066430,\t-0.881327652638126960,\t-0.881351276817868290,\t-0.881374898794231370,\t\n-0.881398518567157670,\t-0.881422136136587260,\t-0.881445751502461520,\t-0.881469364664721370,\t-0.881492975623307750,\t-0.881516584378161830,\t-0.881540190929224310,\t-0.881563795276436470,\t\n-0.881587397419739020,\t-0.881610997359073110,\t-0.881634595094379690,\t-0.881658190625600250,\t-0.881681783952674820,\t-0.881705375075545030,\t-0.881728963994151790,\t-0.881752550708436500,\t\n-0.881776135218339530,\t-0.881799717523802150,\t-0.881823297624765410,\t-0.881846875521170470,\t-0.881870451212958370,\t-0.881894024700070170,\t-0.881917595982446900,\t-0.881941165060029620,\t\n-0.881964731932759370,\t-0.881988296600577320,\t-0.882011859063425050,\t-0.882035419321242630,\t-0.882058977373971650,\t-0.882082533221553170,\t-0.882106086863928880,\t-0.882129638301038970,\t\n-0.882153187532824900,\t-0.882176734559227850,\t-0.882200279380188970,\t-0.882223821995649420,\t-0.882247362405550350,\t-0.882270900609832820,\t-0.882294436608438090,\t-0.882317970401307220,\t\n-0.882341501988381460,\t-0.882365031369601870,\t-0.882388558544910160,\t-0.882412083514246710,\t-0.882435606277552910,\t-0.882459126834770680,\t-0.882482645185840080,\t-0.882506161330702920,\t\n-0.882529675269300370,\t-0.882553187001573590,\t-0.882576696527463840,\t-0.882600203846912400,\t-0.882623708959860420,\t-0.882647211866249170,\t-0.882670712566019920,\t-0.882694211059113830,\t\n-0.882717707345472280,\t-0.882741201425036870,\t-0.882764693297747980,\t-0.882788182963547440,\t-0.882811670422376400,\t-0.882835155674176590,\t-0.882858638718888480,\t-0.882882119556453790,\t\n-0.882905598186813800,\t-0.882929074609909770,\t-0.882952548825683080,\t-0.882976020834075000,\t-0.882999490635026920,\t-0.883022958228480090,\t-0.883046423614375910,\t-0.883069886792655630,\t\n-0.883093347763260980,\t-0.883116806526132670,\t-0.883140263081212300,\t-0.883163717428441240,\t-0.883187169567761330,\t-0.883210619499113060,\t-0.883234067222438250,\t-0.883257512737678270,\t\n-0.883280956044774520,\t-0.883304397143668370,\t-0.883327836034301210,\t-0.883351272716614510,\t-0.883374707190549560,\t-0.883398139456047950,\t-0.883421569513050840,\t-0.883444997361500390,\t\n-0.883468423001336880,\t-0.883491846432502450,\t-0.883515267654938260,\t-0.883538686668586480,\t-0.883562103473387370,\t-0.883585518069283200,\t-0.883608930456215140,\t-0.883632340634124770,\t\n-0.883655748602953480,\t-0.883679154362642880,\t-0.883702557913134460,\t-0.883725959254369590,\t-0.883749358386289760,\t-0.883772755308836590,\t-0.883796150021951550,\t-0.883819542525576480,\t\n-0.883842932819652210,\t-0.883866320904120650,\t-0.883889706778923650,\t-0.883913090444001900,\t-0.883936471899297470,\t-0.883959851144751840,\t-0.883983228180306720,\t-0.884006603005903390,\t\n-0.884029975621483550,\t-0.884053346026988820,\t-0.884076714222360780,\t-0.884100080207540830,\t-0.884123443982470780,\t-0.884146805547092020,\t-0.884170164901346810,\t-0.884193522045175650,\t\n-0.884216876978520690,\t-0.884240229701323540,\t-0.884263580213526360,\t-0.884286928515069630,\t-0.884310274605895730,\t-0.884333618485946050,\t-0.884356960155162410,\t-0.884380299613486300,\t\n-0.884403636860859430,\t-0.884426971897223520,\t-0.884450304722520060,\t-0.884473635336690990,\t-0.884496963739677790,\t-0.884520289931422620,\t-0.884543613911866200,\t-0.884566935680950790,\t\n-0.884590255238618120,\t-0.884613572584810210,\t-0.884636887719467910,\t-0.884660200642533370,\t-0.884683511353948400,\t-0.884706819853654510,\t-0.884730126141593740,\t-0.884753430217707580,\t\n-0.884776732081937860,\t-0.884800031734226280,\t-0.884823329174514670,\t-0.884846624402744750,\t-0.884869917418858560,\t-0.884893208222797270,\t-0.884916496814502910,\t-0.884939783193917420,\t\n-0.884963067360982740,\t-0.884986349315640020,\t-0.885009629057831540,\t-0.885032906587498890,\t-0.885056181904583910,\t-0.885079455009028630,\t-0.885102725900774550,\t-0.885125994579763820,\t\n-0.885149261045937940,\t-0.885172525299238950,\t-0.885195787339608800,\t-0.885219047166988960,\t-0.885242304781322040,\t-0.885265560182548980,\t-0.885288813370611940,\t-0.885312064345453290,\t\n-0.885335313107014080,\t-0.885358559655236580,\t-0.885381803990062720,\t-0.885405046111434340,\t-0.885428286019293350,\t-0.885451523713581600,\t-0.885474759194241010,\t-0.885497992461213630,\t\n-0.885521223514441180,\t-0.885544452353865700,\t-0.885567678979429120,\t-0.885590903391073710,\t-0.885614125588740640,\t-0.885637345572372280,\t-0.885660563341910570,\t-0.885683778897297880,\t\n-0.885706992238475270,\t-0.885730203365385220,\t-0.885753412277969670,\t-0.885776618976170550,\t-0.885799823459929910,\t-0.885823025729189690,\t-0.885846225783891830,\t-0.885869423623978580,\t\n-0.885892619249391670,\t-0.885915812660073240,\t-0.885939003855965580,\t-0.885962192837010170,\t-0.885985379603149160,\t-0.886008564154324720,\t-0.886031746490479330,\t-0.886054926611554160,\t\n-0.886078104517491690,\t-0.886101280208233870,\t-0.886124453683722950,\t-0.886147624943900760,\t-0.886170793988709680,\t-0.886193960818091430,\t-0.886217125431988380,\t-0.886240287830342590,\t\n-0.886263448013095980,\t-0.886286605980191160,\t-0.886309761731569500,\t-0.886332915267173390,\t-0.886356066586944990,\t-0.886379215690826780,\t-0.886402362578760150,\t-0.886425507250687580,\t\n-0.886448649706551350,\t-0.886471789946293390,\t-0.886494927969856070,\t-0.886518063777181340,\t-0.886541197368211460,\t-0.886564328742888600,\t-0.886587457901155010,\t-0.886610584842952630,\t\n-0.886633709568224290,\t-0.886656832076911150,\t-0.886679952368956030,\t-0.886703070444301080,\t-0.886726186302888800,\t-0.886749299944660560,\t-0.886772411369559200,\t-0.886795520577526750,\t\n-0.886818627568505490,\t-0.886841732342437680,\t-0.886864834899265600,\t-0.886887935238931390,\t-0.886911033361377330,\t-0.886934129266545690,\t-0.886957222954378730,\t-0.886980314424818620,\t\n-0.887003403677808280,\t-0.887026490713288980,\t-0.887049575531203450,\t-0.887072658131493940,\t-0.887095738514103170,\t-0.887118816678972740,\t-0.887141892626045260,\t-0.887164966355262980,\t\n-0.887188037866568300,\t-0.887211107159903590,\t-0.887234174235211000,\t-0.887257239092433040,\t-0.887280301731512070,\t-0.887303362152390250,\t-0.887326420355009970,\t-0.887349476339314160,\t\n-0.887372530105244190,\t-0.887395581652742900,\t-0.887418630981752670,\t-0.887441678092216300,\t-0.887464722984075300,\t-0.887487765657272500,\t-0.887510806111750260,\t-0.887533844347450970,\t\n-0.887556880364317120,\t-0.887579914162291090,\t-0.887602945741315260,\t-0.887625975101332010,\t-0.887649002242283940,\t-0.887672027164113310,\t-0.887695049866762950,\t-0.887718070350174690,\t\n-0.887741088614291130,\t-0.887764104659054860,\t-0.887787118484408830,\t-0.887810130090294520,\t-0.887833139476654990,\t-0.887856146643432490,\t-0.887879151590569630,\t-0.887902154318008900,\t\n-0.887925154825692900,\t-0.887948153113563900,\t-0.887971149181564500,\t-0.887994143029637310,\t-0.888017134657724690,\t-0.888040124065769710,\t-0.888063111253713950,\t-0.888086096221500480,\t\n-0.888109078969071650,\t-0.888132059496370640,\t-0.888155037803339040,\t-0.888178013889919900,\t-0.888200987756055600,\t-0.888223959401688970,\t-0.888246928826762370,\t-0.888269896031218420,\t\n-0.888292861014999820,\t-0.888315823778048960,\t-0.888338784320308660,\t-0.888361742641721300,\t-0.888384698742229580,\t-0.888407652621776570,\t-0.888430604280304070,\t-0.888453553717754920,\t\n-0.888476500934072040,\t-0.888499445929198160,\t-0.888522388703075430,\t-0.888545329255646550,\t-0.888568267586854480,\t-0.888591203696641680,\t-0.888614137584950890,\t-0.888637069251724810,\t\n-0.888659998696905930,\t-0.888682925920437180,\t-0.888705850922261060,\t-0.888728773702320280,\t-0.888751694260558000,\t-0.888774612596916150,\t-0.888797528711337660,\t-0.888820442603765470,\t\n-0.888843354274142410,\t-0.888866263722410730,\t-0.888889170948513270,\t-0.888912075952392970,\t-0.888934978733992410,\t-0.888957879293254430,\t-0.888980777630121730,\t-0.889003673744537150,\t\n-0.889026567636443280,\t-0.889049459305783160,\t-0.889072348752499190,\t-0.889095235976534950,\t-0.889118120977832050,\t-0.889141003756333980,\t-0.889163884311983340,\t-0.889186762644723410,\t\n-0.889209638754496100,\t-0.889232512641244700,\t-0.889255384304912130,\t-0.889278253745441010,\t-0.889301120962774250,\t-0.889323985956854690,\t-0.889346848727625260,\t-0.889369709275028670,\t\n-0.889392567599007760,\t-0.889415423699505440,\t-0.889438277576464990,\t-0.889461129229828450,\t-0.889483978659538990,\t-0.889506825865539750,\t-0.889529670847773680,\t-0.889552513606183150,\t\n-0.889575354140711320,\t-0.889598192451301010,\t-0.889621028537895380,\t-0.889643862400437020,\t-0.889666694038869110,\t-0.889689523453134460,\t-0.889712350643175890,\t-0.889735175608936560,\t\n-0.889757998350359290,\t-0.889780818867386910,\t-0.889803637159963020,\t-0.889826453228029560,\t-0.889849267071530000,\t-0.889872078690407630,\t-0.889894888084604710,\t-0.889917695254064610,\t\n-0.889940500198730170,\t-0.889963302918544530,\t-0.889986103413450640,\t-0.890008901683391530,\t-0.890031697728310140,\t-0.890054491548149420,\t-0.890077283142852500,\t-0.890100072512362450,\t\n-0.890122859656622190,\t-0.890145644575575210,\t-0.890168427269163680,\t-0.890191207737331070,\t-0.890213985980020440,\t-0.890236761997175270,\t-0.890259535788737730,\t-0.890282307354651410,\t\n-0.890305076694859370,\t-0.890327843809304520,\t-0.890350608697930150,\t-0.890373371360679290,\t-0.890396131797494880,\t-0.890418890008320310,\t-0.890441645993098390,\t-0.890464399751772380,\t\n-0.890487151284285790,\t-0.890509900590580880,\t-0.890532647670601250,\t-0.890555392524289950,\t-0.890578135151590680,\t-0.890600875552445600,\t-0.890623613726798320,\t-0.890646349674592000,\t\n-0.890669083395769780,\t-0.890691814890274940,\t-0.890714544158050510,\t-0.890737271199039780,\t-0.890759996013185780,\t-0.890782718600431900,\t-0.890805438960721170,\t-0.890828157093997210,\t\n-0.890850873000202490,\t-0.890873586679280520,\t-0.890896298131174660,\t-0.890919007355828410,\t-0.890941714353184370,\t-0.890964419123185910,\t-0.890987121665776430,\t-0.891009821980899170,\t\n-0.891032520068497310,\t-0.891055215928514220,\t-0.891077909560893060,\t-0.891100600965577080,\t-0.891123290142509570,\t-0.891145977091633900,\t-0.891168661812893340,\t-0.891191344306231480,\t\n-0.891214024571590820,\t-0.891236702608915190,\t-0.891259378418148170,\t-0.891282051999232270,\t-0.891304723352111190,\t-0.891327392476728430,\t-0.891350059373027140,\t-0.891372724040950580,\t\n-0.891395386480442360,\t-0.891418046691445640,\t-0.891440704673903790,\t-0.891463360427760200,\t-0.891486013952958230,\t-0.891508665249441170,\t-0.891531314317152820,\t-0.891553961156035800,\t\n-0.891576605766033920,\t-0.891599248147090570,\t-0.891621888299149460,\t-0.891644526222153180,\t-0.891667161916045670,\t-0.891689795380770090,\t-0.891712426616270150,\t-0.891735055622489230,\t\n-0.891757682399370480,\t-0.891780306946857610,\t-0.891802929264894020,\t-0.891825549353423060,\t-0.891848167212388240,\t-0.891870782841733380,\t-0.891893396241401180,\t-0.891916007411335480,\t\n-0.891938616351479750,\t-0.891961223061777940,\t-0.891983827542172650,\t-0.892006429792607800,\t-0.892029029813026790,\t-0.892051627603373310,\t-0.892074223163590750,\t-0.892096816493622600,\t\n-0.892119407593412350,\t-0.892141996462903710,\t-0.892164583102039940,\t-0.892187167510764770,\t-0.892209749689022110,\t-0.892232329636754700,\t-0.892254907353906450,\t-0.892277482840420850,\t\n-0.892300056096241970,\t-0.892322627121312610,\t-0.892345195915576710,\t-0.892367762478977760,\t-0.892390326811459360,\t-0.892412888912965220,\t-0.892435448783438830,\t-0.892458006422823800,\t\n-0.892480561831063830,\t-0.892503115008102420,\t-0.892525665953883160,\t-0.892548214668349770,\t-0.892570761151446290,\t-0.892593305403115430,\t-0.892615847423301360,\t-0.892638387211948100,\t\n-0.892660924768998390,\t-0.892683460094396360,\t-0.892705993188085740,\t-0.892728524050010130,\t-0.892751052680113230,\t-0.892773579078338650,\t-0.892796103244630210,\t-0.892818625178931400,\t\n-0.892841144881186160,\t-0.892863662351337960,\t-0.892886177589330640,\t-0.892908690595108250,\t-0.892931201368613700,\t-0.892953709909791170,\t-0.892976216218584470,\t-0.892998720294937540,\t\n-0.893021222138793420,\t-0.893043721750096160,\t-0.893066219128789700,\t-0.893088714274817730,\t-0.893111207188123870,\t-0.893133697868652040,\t-0.893156186316345970,\t-0.893178672531149460,\t\n-0.893201156513006240,\t-0.893223638261860130,\t-0.893246117777655280,\t-0.893268595060334740,\t-0.893291070109842770,\t-0.893313542926123080,\t-0.893336013509119950,\t-0.893358481858776420,\t\n-0.893380947975036640,\t-0.893403411857844550,\t-0.893425873507143860,\t-0.893448332922878510,\t-0.893470790104992420,\t-0.893493245053429200,\t-0.893515697768133000,\t-0.893538148249047430,\t\n-0.893560596496116630,\t-0.893583042509284660,\t-0.893605486288494680,\t-0.893627927833690940,\t-0.893650367144817490,\t-0.893672804221818500,\t-0.893695239064636990,\t-0.893717671673217470,\t\n-0.893740102047503760,\t-0.893762530187439790,\t-0.893784956092969480,\t-0.893807379764036900,\t-0.893829801200585750,\t-0.893852220402560070,\t-0.893874637369903910,\t-0.893897052102561100,\t\n-0.893919464600475780,\t-0.893941874863592110,\t-0.893964282891853370,\t-0.893986688685203920,\t-0.894009092243588040,\t-0.894031493566949220,\t-0.894053892655231500,\t-0.894076289508379140,\t\n-0.894098684126336090,\t-0.894121076509046260,\t-0.894143466656453720,\t-0.894165854568502620,\t-0.894188240245136770,\t-0.894210623686300440,\t-0.894233004891937470,\t-0.894255383861991990,\t\n-0.894277760596408400,\t-0.894300135095130070,\t-0.894322507358101480,\t-0.894344877385266470,\t-0.894367245176569740,\t-0.894389610731954550,\t-0.894411974051365300,\t-0.894434335134746130,\t\n-0.894456693982041080,\t-0.894479050593194210,\t-0.894501404968149890,\t-0.894523757106851950,\t-0.894546107009244640,\t-0.894568454675272130,\t-0.894590800104878350,\t-0.894613143298008120,\t\n-0.894635484254604480,\t-0.894657822974612270,\t-0.894680159457975410,\t-0.894702493704638610,\t-0.894724825714545150,\t-0.894747155487639610,\t-0.894769483023866160,\t-0.894791808323169070,\t\n-0.894814131385492370,\t-0.894836452210780450,\t-0.894858770798977350,\t-0.894881087150027340,\t-0.894903401263874580,\t-0.894925713140463320,\t-0.894948022779738170,\t-0.894970330181642630,\t\n-0.894992635346121170,\t-0.895014938273118180,\t-0.895037238962578250,\t-0.895059537414444770,\t-0.895081833628662450,\t-0.895104127605175660,\t-0.895126419343928450,\t-0.895148708844865190,\t\n-0.895170996107930160,\t-0.895193281133067730,\t-0.895215563920222060,\t-0.895237844469337410,\t-0.895260122780358160,\t-0.895282398853228690,\t-0.895304672687893490,\t-0.895326944284296270,\t\n-0.895349213642381740,\t-0.895371480762094610,\t-0.895393745643378260,\t-0.895416008286177620,\t-0.895438268690436970,\t-0.895460526856100560,\t-0.895482782783112890,\t-0.895505036471418210,\t\n-0.895527287920961030,\t-0.895549537131685610,\t-0.895571784103536330,\t-0.895594028836457560,\t-0.895616271330393790,\t-0.895638511585289730,\t-0.895660749601088880,\t-0.895682985377736270,\t\n-0.895705218915176180,\t-0.895727450213353430,\t-0.895749679272211610,\t-0.895771906091695660,\t-0.895794130671749960,\t-0.895816353012318880,\t-0.895838573113346910,\t-0.895860790974778550,\t\n-0.895883006596558170,\t-0.895905219978630370,\t-0.895927431120939420,\t-0.895949640023429920,\t-0.895971846686046680,\t-0.895994051108733540,\t-0.896016253291435190,\t-0.896038453234096140,\t\n-0.896060650936661430,\t-0.896082846399074760,\t-0.896105039621280850,\t-0.896127230603224410,\t-0.896149419344849930,\t-0.896171605846101890,\t-0.896193790106924790,\t-0.896215972127263230,\t\n-0.896238151907061690,\t-0.896260329446264880,\t-0.896282504744817190,\t-0.896304677802663540,\t-0.896326848619747980,\t-0.896349017196015230,\t-0.896371183531409880,\t-0.896393347625876970,\t\n-0.896415509479360330,\t-0.896437669091804890,\t-0.896459826463155360,\t-0.896481981593356240,\t-0.896504134482352110,\t-0.896526285130087700,\t-0.896548433536507480,\t-0.896570579701556290,\t\n-0.896592723625178610,\t-0.896614865307319150,\t-0.896637004747922410,\t-0.896659141946933640,\t-0.896681276904296660,\t-0.896703409619956430,\t-0.896725540093858080,\t-0.896747668325945550,\t\n-0.896769794316163770,\t-0.896791918064457460,\t-0.896814039570771440,\t-0.896836158835050300,\t-0.896858275857238760,\t-0.896880390637281640,\t-0.896902503175123430,\t-0.896924613470708950,\t\n-0.896946721523982910,\t-0.896968827334890140,\t-0.896990930903375670,\t-0.897013032229383560,\t-0.897035131312858720,\t-0.897057228153746110,\t-0.897079322751990870,\t-0.897101415107536940,\t\n-0.897123505220329460,\t-0.897145593090313160,\t-0.897167678717432860,\t-0.897189762101633480,\t-0.897211843242859630,\t-0.897233922141056130,\t-0.897255998796167910,\t-0.897278073208139570,\t\n-0.897300145376916160,\t-0.897322215302442720,\t-0.897344282984663400,\t-0.897366348423523360,\t-0.897388411618967430,\t-0.897410472570940860,\t-0.897432531279387710,\t-0.897454587744253240,\t\n-0.897476641965482380,\t-0.897498693943019840,\t-0.897520743676810560,\t-0.897542791166799470,\t-0.897564836412931280,\t-0.897586879415151140,\t-0.897608920173403770,\t-0.897630958687634100,\t\n-0.897652994957787390,\t-0.897675028983807800,\t-0.897697060765640600,\t-0.897719090303230830,\t-0.897741117596523750,\t-0.897763142645463420,\t-0.897785165449995200,\t-0.897807186010064150,\t\n-0.897829204325615080,\t-0.897851220396593040,\t-0.897873234222942850,\t-0.897895245804609670,\t-0.897917255141538420,\t-0.897939262233673930,\t-0.897961267080961360,\t-0.897983269683345520,\t\n-0.898005270040772020,\t-0.898027268153184900,\t-0.898049264020529540,\t-0.898071257642751530,\t-0.898093249019794930,\t-0.898115238151605210,\t-0.898137225038127430,\t-0.898159209679306510,\t\n-0.898181192075087620,\t-0.898203172225415790,\t-0.898225150130235960,\t-0.898247125789493280,\t-0.898269099203132800,\t-0.898291070371099560,\t-0.898313039293338610,\t-0.898335005969795540,\t\n-0.898356970400414510,\t-0.898378932585141010,\t-0.898400892523920300,\t-0.898422850216697650,\t-0.898444805663417450,\t-0.898466758864025380,\t-0.898488709818466290,\t-0.898510658526685440,\t\n-0.898532604988627970,\t-0.898554549204238940,\t-0.898576491173463610,\t-0.898598430896247020,\t-0.898620368372534340,\t-0.898642303602270820,\t-0.898664236585401840,\t-0.898686167321871900,\t\n-0.898708095811626580,\t-0.898730022054610940,\t-0.898751946050770690,\t-0.898773867800050200,\t-0.898795787302395070,\t-0.898817704557750450,\t-0.898839619566061510,\t-0.898861532327273500,\t\n-0.898883442841331810,\t-0.898905351108181370,\t-0.898927257127767660,\t-0.898949160900035740,\t-0.898971062424930860,\t-0.898992961702398840,\t-0.899014858732383960,\t-0.899036753514831920,\t\n-0.899058646049687990,\t-0.899080536336897880,\t-0.899102424376406080,\t-0.899124310168158080,\t-0.899146193712099470,\t-0.899168075008175300,\t-0.899189954056330840,\t-0.899211830856511680,\t\n-0.899233705408662880,\t-0.899255577712729790,\t-0.899277447768657700,\t-0.899299315576392090,\t-0.899321181135878560,\t-0.899343044447061590,\t-0.899364905509887120,\t-0.899386764324300310,\t\n-0.899408620890247090,\t-0.899430475207671830,\t-0.899452327276520470,\t-0.899474177096738160,\t-0.899496024668270500,\t-0.899517869991062760,\t-0.899539713065060420,\t-0.899561553890208640,\t\n-0.899583392466453140,\t-0.899605228793739050,\t-0.899627062872012000,\t-0.899648894701217120,\t-0.899670724281300570,\t-0.899692551612206740,\t-0.899714376693881430,\t-0.899736199526270370,\t\n-0.899758020109319050,\t-0.899779838442972380,\t-0.899801654527176090,\t-0.899823468361875660,\t-0.899845279947016570,\t-0.899867089282544220,\t-0.899888896368404190,\t-0.899910701204541970,\t\n-0.899932503790902950,\t-0.899954304127432710,\t-0.899976102214076650,\t-0.899997898050780790,\t-0.900019691637489740,\t-0.900041482974149430,\t-0.900063272060705470,\t-0.900085058897103660,\t\n-0.900106843483288950,\t-0.900128625819207050,\t-0.900150405904803550,\t-0.900172183740024060,\t-0.900193959324814160,\t-0.900215732659119250,\t-0.900237503742885140,\t-0.900259272576057200,\t\n-0.900281039158581040,\t-0.900302803490402370,\t-0.900324565571467010,\t-0.900346325401719880,\t-0.900368082981106930,\t-0.900389838309573750,\t-0.900411591387066500,\t-0.900433342213529660,\t\n-0.900455090788909620,\t-0.900476837113151850,\t-0.900498581186201960,\t-0.900520323008005550,\t-0.900542062578508440,\t-0.900563799897656110,\t-0.900585534965394290,\t-0.900607267781668660,\t\n-0.900628998346424850,\t-0.900650726659608880,\t-0.900672452721165810,\t-0.900694176531041560,\t-0.900715898089181840,\t-0.900737617395532820,\t-0.900759334450039310,\t-0.900781049252647460,\t\n-0.900802761803302990,\t-0.900824472101951600,\t-0.900846180148539120,\t-0.900867885943011150,\t-0.900889589485313500,\t-0.900911290775391780,\t-0.900932989813191920,\t-0.900954686598659520,\t\n-0.900976381131740390,\t-0.900998073412380810,\t-0.901019763440525590,\t-0.901041451216120890,\t-0.901063136739112650,\t-0.901084820009446900,\t-0.901106501027068800,\t-0.901128179791924390,\t\n-0.901149856303959500,\t-0.901171530563120050,\t-0.901193202569351760,\t-0.901214872322600450,\t-0.901236539822811930,\t-0.901258205069932040,\t-0.901279868063906700,\t-0.901301528804681730,\t\n-0.901323187292203180,\t-0.901344843526416420,\t-0.901366497507267490,\t-0.901388149234702340,\t-0.901409798708667110,\t-0.901431445929107070,\t-0.901453090895968480,\t-0.901474733609197050,\t\n-0.901496374068738840,\t-0.901518012274539650,\t-0.901539648226545530,\t-0.901561281924702200,\t-0.901582913368955690,\t-0.901604542559251930,\t-0.901626169495536760,\t-0.901647794177756530,\t\n-0.901669416605856530,\t-0.901691036779782910,\t-0.901712654699481810,\t-0.901734270364899280,\t-0.901755883775980820,\t-0.901777494932672560,\t-0.901799103834920680,\t-0.901820710482670980,\t\n-0.901842314875869520,\t-0.901863917014462220,\t-0.901885516898395130,\t-0.901907114527614300,\t-0.901928709902065640,\t-0.901950303021695320,\t-0.901971893886449490,\t-0.901993482496273650,\t\n-0.902015068851113930,\t-0.902036652950916730,\t-0.902058234795628190,\t-0.902079814385193690,\t-0.902101391719559610,\t-0.902122966798672100,\t-0.902144539622477200,\t-0.902166110190920970,\t\n-0.902187678503949430,\t-0.902209244561508640,\t-0.902230808363544750,\t-0.902252369910003900,\t-0.902273929200832160,\t-0.902295486235975440,\t-0.902317041015380570,\t-0.902338593538992590,\t\n-0.902360143806758220,\t-0.902381691818623820,\t-0.902403237574534780,\t-0.902424781074437690,\t-0.902446322318278590,\t-0.902467861306003760,\t-0.902489398037559230,\t-0.902510932512891160,\t\n-0.902532464731945820,\t-0.902553994694669350,\t-0.902575522401007910,\t-0.902597047850907550,\t-0.902618571044314640,\t-0.902640091981175670,\t-0.902661610661436130,\t-0.902683127085042500,\t\n-0.902704641251941160,\t-0.902726153162078490,\t-0.902747662815400090,\t-0.902769170211852550,\t-0.902790675351382020,\t-0.902812178233934890,\t-0.902833678859457310,\t-0.902855177227895430,\t\n-0.902876673339195630,\t-0.902898167193304290,\t-0.902919658790167450,\t-0.902941148129731360,\t-0.902962635211942870,\t-0.902984120036747440,\t-0.903005602604091680,\t-0.903027082913921970,\t\n-0.903048560966184800,\t-0.903070036760825980,\t-0.903091510297792000,\t-0.903112981577029240,\t-0.903134450598484070,\t-0.903155917362102770,\t-0.903177381867831700,\t-0.903198844115617130,\t\n-0.903220304105405440,\t-0.903241761837143000,\t-0.903263217310776190,\t-0.903284670526251610,\t-0.903306121483515080,\t-0.903327570182513200,\t-0.903349016623192450,\t-0.903370460805499540,\t\n-0.903391902729379970,\t-0.903413342394780770,\t-0.903434779801648210,\t-0.903456214949928670,\t-0.903477647839568520,\t-0.903499078470514360,\t-0.903520506842712460,\t-0.903541932956109290,\t\n-0.903563356810651360,\t-0.903584778406284930,\t-0.903606197742956590,\t-0.903627614820613160,\t-0.903649029639200350,\t-0.903670442198664880,\t-0.903691852498953780,\t-0.903713260540012550,\t\n-0.903734666321788230,\t-0.903756069844227290,\t-0.903777471107276130,\t-0.903798870110881340,\t-0.903820266854989280,\t-0.903841661339546580,\t-0.903863053564499810,\t-0.903884443529795360,\t\n-0.903905831235379710,\t-0.903927216681199570,\t-0.903948599867201770,\t-0.903969980793332130,\t-0.903991359459537460,\t-0.904012735865764470,\t-0.904034110011959880,\t-0.904055481898069720,\t\n-0.904076851524040940,\t-0.904098218889819890,\t-0.904119583995353420,\t-0.904140946840587880,\t-0.904162307425470100,\t-0.904183665749946460,\t-0.904205021813963670,\t-0.904226375617468330,\t\n-0.904247727160407020,\t-0.904269076442726800,\t-0.904290423464373490,\t-0.904311768225294130,\t-0.904333110725435430,\t-0.904354450964744210,\t-0.904375788943166500,\t-0.904397124660649370,\t\n-0.904418458117139500,\t-0.904439789312583400,\t-0.904461118246927760,\t-0.904482444920119420,\t-0.904503769332104970,\t-0.904525091482831000,\t-0.904546411372244450,\t-0.904567729000291700,\t\n-0.904589044366920110,\t-0.904610357472075520,\t-0.904631668315705070,\t-0.904652976897755370,\t-0.904674283218173670,\t-0.904695587276905910,\t-0.904716889073899130,\t-0.904738188609100160,\t\n-0.904759485882455690,\t-0.904780780893912450,\t-0.904802073643417360,\t-0.904823364130917020,\t-0.904844652356358360,\t-0.904865938319687980,\t-0.904887222020852810,\t-0.904908503459799560,\t\n-0.904929782636475390,\t-0.904951059550826440,\t-0.904972334202799770,\t-0.904993606592342740,\t-0.905014876719401280,\t-0.905036144583922560,\t-0.905057410185853620,\t-0.905078673525141040,\t\n-0.905099934601731770,\t-0.905121193415572730,\t-0.905142449966610640,\t-0.905163704254792530,\t-0.905184956280065120,\t-0.905206206042375230,\t-0.905227453541669890,\t-0.905248698777896380,\t\n-0.905269941751000620,\t-0.905291182460929990,\t-0.905312420907631530,\t-0.905333657091052290,\t-0.905354891011138640,\t-0.905376122667837620,\t-0.905397352061096390,\t-0.905418579190861770,\t\n-0.905439804057080690,\t-0.905461026659700070,\t-0.905482246998666970,\t-0.905503465073928200,\t-0.905524680885430700,\t-0.905545894433121610,\t-0.905567105716948100,\t-0.905588314736856410,\t\n-0.905609521492794060,\t-0.905630725984707840,\t-0.905651928212545140,\t-0.905673128176252230,\t-0.905694325875776580,\t-0.905715521311065140,\t-0.905736714482064830,\t-0.905757905388722690,\t\n-0.905779094030985890,\t-0.905800280408801230,\t-0.905821464522115980,\t-0.905842646370877080,\t-0.905863825955031450,\t-0.905885003274526810,\t-0.905906178329309090,\t-0.905927351119326100,\t\n-0.905948521644524550,\t-0.905969689904852160,\t-0.905990855900255190,\t-0.906012019630681120,\t-0.906033181096076890,\t-0.906054340296389870,\t-0.906075497231566880,\t-0.906096651901555190,\t\n-0.906117804306301840,\t-0.906138954445753990,\t-0.906160102319858660,\t-0.906181247928563250,\t-0.906202391271814570,\t-0.906223532349560320,\t-0.906244671161746900,\t-0.906265807708321880,\t\n-0.906286941989232650,\t-0.906308074004425590,\t-0.906329203753848510,\t-0.906350331237448350,\t-0.906371456455172360,\t-0.906392579406967710,\t-0.906413700092781550,\t-0.906434818512561250,\t\n-0.906455934666253850,\t-0.906477048553806620,\t-0.906498160175166820,\t-0.906519269530281610,\t-0.906540376619098590,\t-0.906561481441564230,\t-0.906582583997626150,\t-0.906603684287231700,\t\n-0.906624782310328280,\t-0.906645878066862590,\t-0.906666971556782220,\t-0.906688062780034440,\t-0.906709151736566520,\t-0.906730238426325720,\t-0.906751322849259190,\t-0.906772405005314530,\t\n-0.906793484894438780,\t-0.906814562516579330,\t-0.906835637871683420,\t-0.906856710959698780,\t-0.906877781780572100,\t-0.906898850334250880,\t-0.906919916620682610,\t-0.906940980639814880,\t\n-0.906962042391594280,\t-0.906983101875968640,\t-0.907004159092885230,\t-0.907025214042291420,\t-0.907046266724134460,\t-0.907067317138361970,\t-0.907088365284921210,\t-0.907109411163759430,\t\n-0.907130454774824240,\t-0.907151496118062780,\t-0.907172535193423110,\t-0.907193572000851600,\t-0.907214606540296180,\t-0.907235638811704330,\t-0.907256668815023650,\t-0.907277696550200960,\t\n-0.907298722017184090,\t-0.907319745215920290,\t-0.907340766146357280,\t-0.907361784808442320,\t-0.907382801202122780,\t-0.907403815327346370,\t-0.907424827184060370,\t-0.907445836772212240,\t\n-0.907466844091749600,\t-0.907487849142619820,\t-0.907508851924770820,\t-0.907529852438149320,\t-0.907550850682703140,\t-0.907571846658380200,\t-0.907592840365127330,\t-0.907613831802892350,\t\n-0.907634820971622740,\t-0.907655807871266100,\t-0.907676792501770020,\t-0.907697774863081900,\t-0.907718754955149310,\t-0.907739732777919860,\t-0.907760708331341040,\t-0.907781681615360550,\t\n-0.907802652629925770,\t-0.907823621374984730,\t-0.907844587850484270,\t-0.907865552056372320,\t-0.907886513992596570,\t-0.907907473659104850,\t-0.907928431055844090,\t-0.907949386182762330,\t\n-0.907970339039806950,\t-0.907991289626925880,\t-0.908012237944066490,\t-0.908033183991176500,\t-0.908054127768203600,\t-0.908075069275095290,\t-0.908096008511799390,\t-0.908116945478263490,\t\n-0.908137880174435530,\t-0.908158812600262540,\t-0.908179742755692470,\t-0.908200670640673110,\t-0.908221596255152420,\t-0.908242519599077420,\t-0.908263440672396060,\t-0.908284359475056040,\t\n-0.908305276007005170,\t-0.908326190268191170,\t-0.908347102258561630,\t-0.908368011978064380,\t-0.908388919426647120,\t-0.908409824604257450,\t-0.908430727510843310,\t-0.908451628146352720,\t\n-0.908472526510732630,\t-0.908493422603931290,\t-0.908514316425896420,\t-0.908535207976576050,\t-0.908556097255917350,\t-0.908576984263868350,\t-0.908597869000376870,\t-0.908618751465390840,\t\n-0.908639631658857860,\t-0.908660509580725750,\t-0.908681385230942440,\t-0.908702258609455640,\t-0.908723129716213160,\t-0.908743998551162950,\t-0.908764865114252700,\t-0.908785729405430560,\t\n-0.908806591424643820,\t-0.908827451171840610,\t-0.908848308646969080,\t-0.908869163849976510,\t-0.908890016780810940,\t-0.908910867439420400,\t-0.908931715825752610,\t-0.908952561939755600,\t\n-0.908973405781377200,\t-0.908994247350565220,\t-0.909015086647267600,\t-0.909035923671432380,\t-0.909056758423007260,\t-0.909077590901940290,\t-0.909098421108179620,\t-0.909119249041672630,\t\n-0.909140074702367570,\t-0.909160898090212170,\t-0.909181719205155000,\t-0.909202538047143130,\t-0.909223354616124910,\t-0.909244168912048290,\t-0.909264980934861300,\t-0.909285790684511760,\t\n-0.909306598160947830,\t-0.909327403364117440,\t-0.909348206293968400,\t-0.909369006950448980,\t-0.909389805333507330,\t-0.909410601443090830,\t-0.909431395279147850,\t-0.909452186841626430,\t\n-0.909472976130474400,\t-0.909493763145640010,\t-0.909514547887071530,\t-0.909535330354716450,\t-0.909556110548522920,\t-0.909576888468439090,\t-0.909597664114413120,\t-0.909618437486393040,\t\n-0.909639208584326790,\t-0.909659977408162510,\t-0.909680743957848260,\t-0.909701508233332510,\t-0.909722270234562760,\t-0.909743029961487260,\t-0.909763787414054060,\t-0.909784542592211530,\t\n-0.909805295495907610,\t-0.909826046125090880,\t-0.909846794479708620,\t-0.909867540559709310,\t-0.909888284365041210,\t-0.909909025895652370,\t-0.909929765151491040,\t-0.909950502132505280,\t\n-0.909971236838643230,\t-0.909991969269853040,\t-0.910012699426082980,\t-0.910033427307281540,\t-0.910054152913396200,\t-0.910074876244375440,\t-0.910095597300167420,\t-0.910116316080720520,\t\n-0.910137032585983220,\t-0.910157746815902890,\t-0.910178458770428130,\t-0.910199168449507320,\t-0.910219875853088610,\t-0.910240580981120150,\t-0.910261283833550320,\t-0.910281984410327150,\t\n-0.910302682711399140,\t-0.910323378736714320,\t-0.910344072486221510,\t-0.910364763959868100,\t-0.910385453157602890,\t-0.910406140079373930,\t-0.910426824725129590,\t-0.910447507094818250,\t\n-0.910468187188388510,\t-0.910488865005787960,\t-0.910509540546965200,\t-0.910530213811868610,\t-0.910550884800446550,\t-0.910571553512647180,\t-0.910592219948418990,\t-0.910612884107710130,\t\n-0.910633545990469200,\t-0.910654205596644670,\t-0.910674862926184380,\t-0.910695517979036810,\t-0.910716170755150540,\t-0.910736821254473750,\t-0.910757469476955020,\t-0.910778115422542940,\t\n-0.910798759091185130,\t-0.910819400482830500,\t-0.910840039597427430,\t-0.910860676434924190,\t-0.910881310995269140,\t-0.910901943278411010,\t-0.910922573284297930,\t-0.910943201012878400,\t\n-0.910963826464101230,\t-0.910984449637914250,\t-0.911005070534266050,\t-0.911025689153105110,\t-0.911046305494380040,\t-0.911066919558039200,\t-0.911087531344031420,\t-0.911108140852304400,\t\n-0.911128748082807080,\t-0.911149353035487830,\t-0.911169955710295240,\t-0.911190556107177810,\t-0.911211154226084010,\t-0.911231750066962220,\t-0.911252343629761040,\t-0.911272934914429070,\t\n-0.911293523920915120,\t-0.911314110649167010,\t-0.911334695099133670,\t-0.911355277270763490,\t-0.911375857164005150,\t-0.911396434778807500,\t-0.911417010115118440,\t-0.911437583172886920,\t\n-0.911458153952061310,\t-0.911478722452590430,\t-0.911499288674422650,\t-0.911519852617506680,\t-0.911540414281791110,\t-0.911560973667224550,\t-0.911581530773755480,\t-0.911602085601332930,\t\n-0.911622638149904850,\t-0.911643188419420160,\t-0.911663736409827450,\t-0.911684282121075440,\t-0.911704825553112720,\t-0.911725366705888330,\t-0.911745905579350200,\t-0.911766442173447270,\t\n-0.911786976488128120,\t-0.911807508523341690,\t-0.911828038279036360,\t-0.911848565755161040,\t-0.911869090951664240,\t-0.911889613868494760,\t-0.911910134505601540,\t-0.911930652862932730,\t\n-0.911951168940437150,\t-0.911971682738063730,\t-0.911992194255761170,\t-0.912012703493477960,\t-0.912033210451163480,\t-0.912053715128765650,\t-0.912074217526233410,\t-0.912094717643515680,\t\n-0.912115215480561180,\t-0.912135711037318610,\t-0.912156204313736780,\t-0.912176695309764420,\t-0.912197184025350330,\t-0.912217670460443660,\t-0.912238154614992360,\t-0.912258636488945780,\t\n-0.912279116082252540,\t-0.912299593394861550,\t-0.912320068426721640,\t-0.912340541177781850,\t-0.912361011647990330,\t-0.912381479837296340,\t-0.912401945745648590,\t-0.912422409372996010,\t\n-0.912442870719287420,\t-0.912463329784471530,\t-0.912483786568497490,\t-0.912504241071313890,\t-0.912524693292869670,\t-0.912545143233114200,\t-0.912565590891995400,\t-0.912586036269462660,\t\n-0.912606479365464800,\t-0.912626920179950730,\t-0.912647358712869840,\t-0.912667794964170050,\t-0.912688228933800860,\t-0.912708660621711080,\t-0.912729090027849630,\t-0.912749517152165460,\t\n-0.912769941994607480,\t-0.912790364555124630,\t-0.912810784833665960,\t-0.912831202830180270,\t-0.912851618544616940,\t-0.912872031976924240,\t-0.912892443127051310,\t-0.912912851994947430,\t\n-0.912933258580561400,\t-0.912953662883842500,\t-0.912974064904739200,\t-0.912994464643200660,\t-0.913014862099176040,\t-0.913035257272614140,\t-0.913055650163464130,\t-0.913076040771675030,\t\n-0.913096429097195910,\t-0.913116815139975560,\t-0.913137198899963250,\t-0.913157580377108370,\t-0.913177959571359050,\t-0.913198336482664910,\t-0.913218711110974860,\t-0.913239083456238170,\t\n-0.913259453518403650,\t-0.913279821297420910,\t-0.913300186793238210,\t-0.913320550005805030,\t-0.913340910935070530,\t-0.913361269580983740,\t-0.913381625943493810,\t-0.913401980022549800,\t\n-0.913422331818100840,\t-0.913442681330095980,\t-0.913463028558484820,\t-0.913483373503215730,\t-0.913503716164238200,\t-0.913524056541501480,\t-0.913544394634954520,\t-0.913564730444546560,\t\n-0.913585063970227210,\t-0.913605395211944730,\t-0.913625724169648820,\t-0.913646050843288650,\t-0.913666375232813240,\t-0.913686697338171980,\t-0.913707017159314020,\t-0.913727334696188390,\t\n-0.913747649948744580,\t-0.913767962916931850,\t-0.913788273600698920,\t-0.913808581999995370,\t-0.913828888114770250,\t-0.913849191944972940,\t-0.913869493490552690,\t-0.913889792751459100,\t\n-0.913910089727640540,\t-0.913930384419046840,\t-0.913950676825627250,\t-0.913970966947330820,\t-0.913991254784107030,\t-0.914011540335905150,\t-0.914031823602674430,\t-0.914052104584364030,\t\n-0.914072383280923550,\t-0.914092659692302360,\t-0.914112933818449160,\t-0.914133205659313660,\t-0.914153475214845020,\t-0.914173742484992840,\t-0.914194007469706580,\t-0.914214270168935080,\t\n-0.914234530582627710,\t-0.914254788710734180,\t-0.914275044553203630,\t-0.914295298109985440,\t-0.914315549381028990,\t-0.914335798366283650,\t-0.914356045065698900,\t-0.914376289479224000,\t\n-0.914396531606808670,\t-0.914416771448401720,\t-0.914437009003952860,\t-0.914457244273411460,\t-0.914477477256727010,\t-0.914497707953848770,\t-0.914517936364726670,\t-0.914538162489309300,\t\n-0.914558386327546600,\t-0.914578607879387940,\t-0.914598827144782690,\t-0.914619044123680450,\t-0.914639258816030480,\t-0.914659471221782480,\t-0.914679681340885730,\t-0.914699889173290260,\t\n-0.914720094718944550,\t-0.914740297977798660,\t-0.914760498949802050,\t-0.914780697634904220,\t-0.914800894033054650,\t-0.914821088144203150,\t-0.914841279968298560,\t-0.914861469505290790,\t\n-0.914881656755129340,\t-0.914901841717763790,\t-0.914922024393143630,\t-0.914942204781218350,\t-0.914962382881937650,\t-0.914982558695250910,\t-0.915002732221108170,\t-0.915022903459458250,\t\n-0.915043072410251070,\t-0.915063239073436120,\t-0.915083403448963220,\t-0.915103565536781740,\t-0.915123725336841720,\t-0.915143882849091980,\t-0.915164038073482570,\t-0.915184191009963070,\t\n-0.915204341658483080,\t-0.915224490018992200,\t-0.915244636091440130,\t-0.915264779875776480,\t-0.915284921371950940,\t-0.915305060579913010,\t-0.915325197499612830,\t-0.915345332130999220,\t\n-0.915365464474022340,\t-0.915385594528631770,\t-0.915405722294777350,\t-0.915425847772408870,\t-0.915445970961475400,\t-0.915466091861926960,\t-0.915486210473713370,\t-0.915506326796784230,\t\n-0.915526440831089360,\t-0.915546552576578240,\t-0.915566662033200810,\t-0.915586769200906760,\t-0.915606874079645690,\t-0.915626976669367880,\t-0.915647076970022230,\t-0.915667174981558920,\t\n-0.915687270703927750,\t-0.915707364137078210,\t-0.915727455280960450,\t-0.915747544135524280,\t-0.915767630700718980,\t-0.915787714976494470,\t-0.915807796962800790,\t-0.915827876659587650,\t\n-0.915847954066804750,\t-0.915868029184401910,\t-0.915888102012329060,\t-0.915908172550535920,\t-0.915928240798972840,\t-0.915948306757588650,\t-0.915968370426333720,\t-0.915988431805157880,\t\n-0.916008490894011040,\t-0.916028547692842920,\t-0.916048602201603780,\t-0.916068654420242770,\t-0.916088704348710040,\t-0.916108751986955740,\t-0.916128797334929360,\t-0.916148840392581150,\t\n-0.916168881159860730,\t-0.916188919636718110,\t-0.916208955823103240,\t-0.916228989718966380,\t-0.916249021324256670,\t-0.916269050638924390,\t-0.916289077662919450,\t-0.916309102396191790,\t\n-0.916329124838691440,\t-0.916349144990368570,\t-0.916369162851172540,\t-0.916389178421053610,\t-0.916409191699961710,\t-0.916429202687846890,\t-0.916449211384658960,\t-0.916469217790348070,\t\n-0.916489221904864150,\t-0.916509223728157130,\t-0.916529223260177050,\t-0.916549220500874280,\t-0.916569215450198090,\t-0.916589208108098850,\t-0.916609198474526710,\t-0.916629186549431480,\t\n-0.916649172332763660,\t-0.916669155824472500,\t-0.916689137024508490,\t-0.916709115932821560,\t-0.916729092549361970,\t-0.916749066874079640,\t-0.916769038906924520,\t-0.916789008647846960,\t\n-0.916808976096796790,\t-0.916828941253724160,\t-0.916848904118579560,\t-0.916868864691312350,\t-0.916888822971873020,\t-0.916908778960211500,\t-0.916928732656278170,\t-0.916948684060022940,\t\n-0.916968633171396430,\t-0.916988579990347890,\t-0.917008524516827910,\t-0.917028466750786640,\t-0.917048406692174240,\t-0.917068344340940870,\t-0.917088279697036550,\t-0.917108212760411550,\t\n-0.917128143531016020,\t-0.917148072008800440,\t-0.917167998193714420,\t-0.917187922085708320,\t-0.917207843684732400,\t-0.917227762990736940,\t-0.917247680003672070,\t-0.917267594723488290,\t\n-0.917287507150135300,\t-0.917307417283563460,\t-0.917327325123723060,\t-0.917347230670564340,\t-0.917367133924037570,\t-0.917387034884093010,\t-0.917406933550680810,\t-0.917426829923751240,\t\n-0.917446724003255000,\t-0.917466615789141570,\t-0.917486505281361660,\t-0.917506392479865430,\t-0.917526277384603240,\t-0.917546159995525360,\t-0.917566040312582490,\t-0.917585918335724000,\t\n-0.917605794064900840,\t-0.917625667500063250,\t-0.917645538641161380,\t-0.917665407488145730,\t-0.917685274040966450,\t-0.917705138299574120,\t-0.917725000263918900,\t-0.917744859933951160,\t\n-0.917764717309621610,\t-0.917784572390879960,\t-0.917804425177676910,\t-0.917824275669962720,\t-0.917844123867687880,\t-0.917863969770803090,\t-0.917883813379257950,\t-0.917903654693003390,\t\n-0.917923493711989560,\t-0.917943330436167160,\t-0.917963164865486240,\t-0.917982996999897600,\t-0.918002826839351300,\t-0.918022654383798040,\t-0.918042479633188190,\t-0.918062302587472350,\t\n-0.918082123246600550,\t-0.918101941610523280,\t-0.918121757679191350,\t-0.918141571452554820,\t-0.918161382930564480,\t-0.918181192113171060,\t-0.918200999000324260,\t-0.918220803591975000,\t\n-0.918240605888073660,\t-0.918260405888570830,\t-0.918280203593417000,\t-0.918299999002562650,\t-0.918319792115958380,\t-0.918339582933554550,\t-0.918359371455302110,\t-0.918379157681150970,\t\n-0.918398941611051840,\t-0.918418723244955440,\t-0.918438502582812120,\t-0.918458279624572600,\t-0.918478054370187810,\t-0.918497826819607450,\t-0.918517596972782570,\t-0.918537364829663640,\t\n-0.918557130390201370,\t-0.918576893654346140,\t-0.918596654622048760,\t-0.918616413293259830,\t-0.918636169667929710,\t-0.918655923746009680,\t-0.918675675527449330,\t-0.918695425012199920,\t\n-0.918715172200211930,\t-0.918734917091435950,\t-0.918754659685822710,\t-0.918774399983323110,\t-0.918794137983887320,\t-0.918813873687466030,\t-0.918833607094010070,\t-0.918853338203470150,\t\n-0.918873067015796850,\t-0.918892793530940890,\t-0.918912517748852960,\t-0.918932239669483790,\t-0.918951959292783950,\t-0.918971676618704600,\t-0.918991391647195680,\t-0.919011104378208210,\t\n-0.919030814811693130,\t-0.919050522947600920,\t-0.919070228785882740,\t-0.919089932326488720,\t-0.919109633569369810,\t-0.919129332514476820,\t-0.919149029161760440,\t-0.919168723511171630,\t\n-0.919188415562660950,\t-0.919208105316179140,\t-0.919227792771677210,\t-0.919247477929105660,\t-0.919267160788415860,\t-0.919286841349557850,\t-0.919306519612482660,\t-0.919326195577141130,\t\n-0.919345869243484160,\t-0.919365540611462580,\t-0.919385209681027440,\t-0.919404876452128870,\t-0.919424540924718260,\t-0.919444203098746190,\t-0.919463862974163600,\t-0.919483520550921420,\t\n-0.919503175828970340,\t-0.919522828808261420,\t-0.919542479488745350,\t-0.919562127870373500,\t-0.919581773953095930,\t-0.919601417736863990,\t-0.919621059221628400,\t-0.919640698407340310,\t\n-0.919660335293950300,\t-0.919679969881409990,\t-0.919699602169669280,\t-0.919719232158679570,\t-0.919738859848391770,\t-0.919758485238756920,\t-0.919778108329725730,\t-0.919797729121249350,\t\n-0.919817347613278710,\t-0.919836963805764520,\t-0.919856577698658470,\t-0.919876189291910510,\t-0.919895798585472100,\t-0.919915405579294190,\t-0.919935010273327690,\t-0.919954612667523760,\t\n-0.919974212761833670,\t-0.919993810556207660,\t-0.920013406050597120,\t-0.920032999244953080,\t-0.920052590139226470,\t-0.920072178733368440,\t-0.920091765027330030,\t-0.920111349021062170,\t\n-0.920130930714515900,\t-0.920150510107642260,\t-0.920170087200392840,\t-0.920189661992717680,\t-0.920209234484568480,\t-0.920228804675896180,\t-0.920248372566651820,\t-0.920267938156786980,\t\n-0.920287501446251820,\t-0.920307062434998050,\t-0.920326621122976470,\t-0.920346177510138470,\t-0.920365731596434870,\t-0.920385283381817130,\t-0.920404832866236090,\t-0.920424380049642890,\t\n-0.920443924931988900,\t-0.920463467513225280,\t-0.920483007793302720,\t-0.920502545772172720,\t-0.920522081449786310,\t-0.920541614826094650,\t-0.920561145901048980,\t-0.920580674674600810,\t\n-0.920600201146700490,\t-0.920619725317299850,\t-0.920639247186349710,\t-0.920658766753801650,\t-0.920678284019606500,\t-0.920697798983715730,\t-0.920717311646080510,\t-0.920736822006651860,\t\n-0.920756330065381600,\t-0.920775835822220220,\t-0.920795339277119210,\t-0.920814840430029810,\t-0.920834339280903300,\t-0.920853835829691050,\t-0.920873330076344420,\t-0.920892822020814240,\t\n-0.920912311663051870,\t-0.920931799003008810,\t-0.920951284040636310,\t-0.920970766775885520,\t-0.920990247208707810,\t-0.921009725339054450,\t-0.921029201166876810,\t-0.921048674692126590,\t\n-0.921068145914754280,\t-0.921087614834711580,\t-0.921107081451949860,\t-0.921126545766420500,\t-0.921146007778074650,\t-0.921165467486864230,\t-0.921184924892739730,\t-0.921204379995652970,\t\n-0.921223832795555200,\t-0.921243283292397910,\t-0.921262731486132360,\t-0.921282177376710030,\t-0.921301620964082300,\t-0.921321062248200430,\t-0.921340501229015900,\t-0.921359937906480520,\t\n-0.921379372280544890,\t-0.921398804351160950,\t-0.921418234118279940,\t-0.921437661581853250,\t-0.921457086741832800,\t-0.921476509598169400,\t-0.921495930150814550,\t-0.921515348399720050,\t\n-0.921534764344837050,\t-0.921554177986117160,\t-0.921573589323511850,\t-0.921592998356972610,\t-0.921612405086450810,\t-0.921631809511898050,\t-0.921651211633266020,\t-0.921670611450505660,\t\n-0.921690008963568790,\t-0.921709404172406880,\t-0.921728797076971530,\t-0.921748187677214110,\t-0.921767575973086560,\t-0.921786961964539800,\t-0.921806345651525530,\t-0.921825727033995460,\t\n-0.921845106111901070,\t-0.921864482885193960,\t-0.921883857353825610,\t-0.921903229517747610,\t-0.921922599376911460,\t-0.921941966931269290,\t-0.921961332180771810,\t-0.921980695125370950,\t\n-0.922000055765018420,\t-0.922019414099665700,\t-0.922038770129264500,\t-0.922058123853766620,\t-0.922077475273123230,\t-0.922096824387286020,\t-0.922116171196206810,\t-0.922135515699837200,\t\n-0.922154857898128680,\t-0.922174197791033160,\t-0.922193535378502130,\t-0.922212870660487180,\t-0.922232203636940470,\t-0.922251534307812810,\t-0.922270862673056360,\t-0.922290188732622810,\t\n-0.922309512486463760,\t-0.922328833934530910,\t-0.922348153076776310,\t-0.922367469913150990,\t-0.922386784443607110,\t-0.922406096668096140,\t-0.922425406586569910,\t-0.922444714198980220,\t\n-0.922464019505278790,\t-0.922483322505417200,\t-0.922502623199347390,\t-0.922521921587021070,\t-0.922541217668390150,\t-0.922560511443405900,\t-0.922579802912020460,\t-0.922599092074185330,\t\n-0.922618378929852660,\t-0.922637663478974250,\t-0.922656945721501360,\t-0.922676225657386160,\t-0.922695503286580450,\t-0.922714778609035840,\t-0.922734051624704340,\t-0.922753322333537800,\t\n-0.922772590735487790,\t-0.922791856830506460,\t-0.922811120618545420,\t-0.922830382099556920,\t-0.922849641273492120,\t-0.922868898140303150,\t-0.922888152699942070,\t-0.922907404952360570,\t\n-0.922926654897510470,\t-0.922945902535344140,\t-0.922965147865812740,\t-0.922984390888868410,\t-0.923003631604463080,\t-0.923022870012548790,\t-0.923042106113077240,\t-0.923061339906000480,\t\n-0.923080571391270310,\t-0.923099800568838780,\t-0.923119027438658040,\t-0.923138252000679340,\t-0.923157474254855060,\t-0.923176694201137130,\t-0.923195911839477470,\t-0.923215127169828010,\t\n-0.923234340192141010,\t-0.923253550906367850,\t-0.923272759312460890,\t-0.923291965410371950,\t-0.923311169200053180,\t-0.923330370681456400,\t-0.923349569854533760,\t-0.923368766719237070,\t\n-0.923387961275518590,\t-0.923407153523330470,\t-0.923426343462624200,\t-0.923445531093352030,\t-0.923464716415466010,\t-0.923483899428918290,\t-0.923503080133660780,\t-0.923522258529645870,\t\n-0.923541434616825030,\t-0.923560608395150530,\t-0.923579779864574620,\t-0.923598949025049130,\t-0.923618115876526310,\t-0.923637280418958320,\t-0.923656442652296960,\t-0.923675602576494610,\t\n-0.923694760191503210,\t-0.923713915497275220,\t-0.923733068493762130,\t-0.923752219180916430,\t-0.923771367558690050,\t-0.923790513627035350,\t-0.923809657385904700,\t-0.923828798835249490,\t\n-0.923847937975022400,\t-0.923867074805175380,\t-0.923886209325660680,\t-0.923905341536430560,\t-0.923924471437436940,\t-0.923943599028632210,\t-0.923962724309968510,\t-0.923981847281397980,\t\n-0.924000967942873120,\t-0.924020086294345510,\t-0.924039202335767750,\t-0.924058316067091990,\t-0.924077427488270380,\t-0.924096536599255500,\t-0.924115643399999080,\t-0.924134747890453470,\t\n-0.924153850070570940,\t-0.924172949940303860,\t-0.924192047499604370,\t-0.924211142748424860,\t-0.924230235686717360,\t-0.924249326314434350,\t-0.924268414631527980,\t-0.924287500637950950,\t\n-0.924306584333654760,\t-0.924325665718592200,\t-0.924344744792715440,\t-0.924363821555976850,\t-0.924382896008328570,\t-0.924401968149723530,\t-0.924421037980113210,\t-0.924440105499450330,\t\n-0.924459170707687020,\t-0.924478233604775990,\t-0.924497294190669280,\t-0.924516352465319270,\t-0.924535408428678540,\t-0.924554462080699140,\t-0.924573513421333980,\t-0.924592562450534670,\t\n-0.924611609168254020,\t-0.924630653574444290,\t-0.924649695669057970,\t-0.924668735452047420,\t-0.924687772923365350,\t-0.924706808082963460,\t-0.924725840930794570,\t-0.924744871466811170,\t\n-0.924763899690965510,\t-0.924782925603210070,\t-0.924801949203497340,\t-0.924820970491779800,\t-0.924839989468009720,\t-0.924859006132139780,\t-0.924878020484122600,\t-0.924897032523910090,\t\n-0.924916042251454960,\t-0.924935049666709700,\t-0.924954054769626890,\t-0.924973057560159240,\t-0.924992058038258570,\t-0.925011056203877800,\t-0.925030052056969310,\t-0.925049045597485800,\t\n-0.925068036825379640,\t-0.925087025740603420,\t-0.925106012343109520,\t-0.925124996632850750,\t-0.925143978609779370,\t-0.925162958273848420,\t-0.925181935625009720,\t-0.925200910663216190,\t\n-0.925219883388420430,\t-0.925238853800574910,\t-0.925257821899632570,\t-0.925276787685545440,\t-0.925295751158266230,\t-0.925314712317747650,\t-0.925333671163942380,\t-0.925352627696802930,\t\n-0.925371581916281770,\t-0.925390533822331830,\t-0.925409483414905480,\t-0.925428430693955310,\t-0.925447375659434580,\t-0.925466318311295000,\t-0.925485258649489610,\t-0.925504196673971100,\t\n-0.925523132384692080,\t-0.925542065781605250,\t-0.925560996864663530,\t-0.925579925633819080,\t-0.925598852089024700,\t-0.925617776230233340,\t-0.925636698057397460,\t-0.925655617570469770,\t\n-0.925674534769403090,\t-0.925693449654150120,\t-0.925712362224663470,\t-0.925731272480896260,\t-0.925750180422800550,\t-0.925769086050329370,\t-0.925787989363435540,\t-0.925806890362071640,\t\n-0.925825789046190620,\t-0.925844685415745380,\t-0.925863579470688090,\t-0.925882471210971890,\t-0.925901360636549490,\t-0.925920247747373690,\t-0.925939132543397330,\t-0.925958015024573090,\t\n-0.925976895190853800,\t-0.925995773042192270,\t-0.926014648578541650,\t-0.926033521799854100,\t-0.926052392706082750,\t-0.926071261297180430,\t-0.926090127573099830,\t-0.926108991533794110,\t\n-0.926127853179216090,\t-0.926146712509318130,\t-0.926165569524053380,\t-0.926184424223374770,\t-0.926203276607235120,\t-0.926222126675587230,\t-0.926240974428383930,\t-0.926259819865578370,\t\n-0.926278662987123140,\t-0.926297503792971270,\t-0.926316342283076020,\t-0.926335178457389550,\t-0.926354012315865120,\t-0.926372843858455750,\t-0.926391673085114160,\t-0.926410499995793830,\t\n-0.926429324590446800,\t-0.926448146869026550,\t-0.926466966831485880,\t-0.926485784477777740,\t-0.926504599807855270,\t-0.926523412821671170,\t-0.926542223519178700,\t-0.926561031900330570,\t\n-0.926579837965079810,\t-0.926598641713379800,\t-0.926617443145182910,\t-0.926636242260442500,\t-0.926655039059111290,\t-0.926673833541142630,\t-0.926692625706489360,\t-0.926711415555104830,\t\n-0.926730203086941430,\t-0.926748988301952510,\t-0.926767771200091130,\t-0.926786551781310310,\t-0.926805330045563200,\t-0.926824105992802630,\t-0.926842879622981840,\t-0.926861650936053880,\t\n-0.926880419931972120,\t-0.926899186610689040,\t-0.926917950972157900,\t-0.926936713016331960,\t-0.926955472743164140,\t-0.926974230152607710,\t-0.926992985244616040,\t-0.927011738019141500,\t\n-0.927030488476137670,\t-0.927049236615557600,\t-0.927067982437354440,\t-0.927086725941481340,\t-0.927105467127891440,\t-0.927124205996537890,\t-0.927142942547373840,\t-0.927161676780352660,\t\n-0.927180408695427060,\t-0.927199138292550410,\t-0.927217865571675850,\t-0.927236590532756640,\t-0.927255313175746050,\t-0.927274033500597450,\t-0.927292751507263420,\t-0.927311467195697570,\t\n-0.927330180565852920,\t-0.927348891617682970,\t-0.927367600351140740,\t-0.927386306766179500,\t-0.927405010862752510,\t-0.927423712640812910,\t-0.927442412100314080,\t-0.927461109241209610,\t\n-0.927479804063451980,\t-0.927498496566994790,\t-0.927517186751791510,\t-0.927535874617795190,\t-0.927554560164959520,\t-0.927573243393236990,\t-0.927591924302581530,\t-0.927610602892946170,\t\n-0.927629279164284280,\t-0.927647953116549240,\t-0.927666624749694300,\t-0.927685294063672840,\t-0.927703961058438110,\t-0.927722625733943480,\t-0.927741288090142670,\t-0.927759948126988250,\t\n-0.927778605844433950,\t-0.927797261242433220,\t-0.927815914320939240,\t-0.927834565079905470,\t-0.927853213519285740,\t-0.927871859639032510,\t-0.927890503439099730,\t-0.927909144919440650,\t\n-0.927927784080008640,\t-0.927946420920757300,\t-0.927965055441639870,\t-0.927983687642609740,\t-0.928002317523620390,\t-0.928020945084625630,\t-0.928039570325578160,\t-0.928058193246431800,\t\n-0.928076813847139910,\t-0.928095432127655990,\t-0.928114048087933520,\t-0.928132661727926300,\t-0.928151273047587040,\t-0.928169882046869570,\t-0.928188488725727460,\t-0.928207093084113980,\t\n-0.928225695121982940,\t-0.928244294839287610,\t-0.928262892235981460,\t-0.928281487312018210,\t-0.928300080067351540,\t-0.928318670501934280,\t-0.928337258615720360,\t-0.928355844408663370,\t\n-0.928374427880716670,\t-0.928393009031833970,\t-0.928411587861969090,\t-0.928430164371074840,\t-0.928448738559105150,\t-0.928467310426013710,\t-0.928485879971754020,\t-0.928504447196279560,\t\n-0.928523012099544020,\t-0.928541574681500890,\t-0.928560134942103880,\t-0.928578692881306460,\t-0.928597248499062670,\t-0.928615801795325440,\t-0.928634352770048800,\t-0.928652901423186130,\t\n-0.928671447754691240,\t-0.928689991764518160,\t-0.928708533452619720,\t-0.928727072818949950,\t-0.928745609863462440,\t-0.928764144586110900,\t-0.928782676986849020,\t-0.928801207065630520,\t\n-0.928819734822408980,\t-0.928838260257138000,\t-0.928856783369771510,\t-0.928875304160263320,\t-0.928893822628566570,\t-0.928912338774635190,\t-0.928930852598423010,\t-0.928949364099883710,\t\n-0.928967873278971010,\t-0.928986380135638940,\t-0.929004884669840660,\t-0.929023386881530080,\t-0.929041886770661020,\t-0.929060384337187290,\t-0.929078879581062610,\t-0.929097372502240670,\t\n-0.929115863100675400,\t-0.929134351376320390,\t-0.929152837329129790,\t-0.929171320959056860,\t-0.929189802266055630,\t-0.929208281250079820,\t-0.929226757911083330,\t-0.929245232249020000,\t\n-0.929263704263843860,\t-0.929282173955508160,\t-0.929300641323967060,\t-0.929319106369174360,\t-0.929337569091083780,\t-0.929356029489649350,\t-0.929374487564824880,\t-0.929392943316564190,\t\n-0.929411396744821090,\t-0.929429847849549850,\t-0.929448296630703720,\t-0.929466743088236740,\t-0.929485187222102940,\t-0.929503629032256140,\t-0.929522068518650380,\t-0.929540505681239690,\t\n-0.929558940519977450,\t-0.929577373034817800,\t-0.929595803225714780,\t-0.929614231092622200,\t-0.929632656635494100,\t-0.929651079854284300,\t-0.929669500748946830,\t-0.929687919319435620,\t\n-0.929706335565704590,\t-0.929724749487708110,\t-0.929743161085399340,\t-0.929761570358732750,\t-0.929779977307662150,\t-0.929798381932141700,\t-0.929816784232125550,\t-0.929835184207567170,\t\n-0.929853581858420820,\t-0.929871977184640430,\t-0.929890370186180150,\t-0.929908760862994010,\t-0.929927149215035830,\t-0.929945535242259870,\t-0.929963918944620050,\t-0.929982300322070520,\t\n-0.930000679374565430,\t-0.930019056102058370,\t-0.930037430504503710,\t-0.930055802581855500,\t-0.930074172334067640,\t-0.930092539761094520,\t-0.930110904862890280,\t-0.930129267639408400,\t\n-0.930147628090603470,\t-0.930165986216429430,\t-0.930184342016840420,\t-0.930202695491790470,\t-0.930221046641233950,\t-0.930239395465124690,\t-0.930257741963416930,\t-0.930276086136065160,\t\n-0.930294427983022980,\t-0.930312767504244520,\t-0.930331104699684270,\t-0.930349439569296280,\t-0.930367772113034670,\t-0.930386102330853950,\t-0.930404430222707580,\t-0.930422755788550160,\t\n-0.930441079028335950,\t-0.930459399942018980,\t-0.930477718529553410,\t-0.930496034790893710,\t-0.930514348725993810,\t-0.930532660334808080,\t-0.930550969617291000,\t-0.930569276573396280,\t\n-0.930587581203078270,\t-0.930605883506291250,\t-0.930624183482989590,\t-0.930642481133127530,\t-0.930660776456659570,\t-0.930679069453539290,\t-0.930697360123721280,\t-0.930715648467160040,\t\n-0.930733934483809590,\t-0.930752218173624300,\t-0.930770499536558440,\t-0.930788778572566370,\t-0.930807055281602350,\t-0.930825329663620640,\t-0.930843601718575940,\t-0.930861871446421960,\t\n-0.930880138847113290,\t-0.930898403920604300,\t-0.930916666666849250,\t-0.930934927085802940,\t-0.930953185177418870,\t-0.930971440941651960,\t-0.930989694378456360,\t-0.931007945487786540,\t\n-0.931026194269596870,\t-0.931044440723841740,\t-0.931062684850475500,\t-0.931080926649452520,\t-0.931099166120727180,\t-0.931117403264254300,\t-0.931135638079987670,\t-0.931153870567881790,\t\n-0.931172100727891360,\t-0.931190328559970640,\t-0.931208554064074100,\t-0.931226777240156460,\t-0.931244998088171520,\t-0.931263216608074210,\t-0.931281432799818790,\t-0.931299646663359740,\t\n-0.931317858198651650,\t-0.931336067405648890,\t-0.931354274284305950,\t-0.931372478834577410,\t-0.931390681056417870,\t-0.931408880949781360,\t-0.931427078514622700,\t-0.931445273750896250,\t\n-0.931463466658556620,\t-0.931481657237558380,\t-0.931499845487856360,\t-0.931518031409404370,\t-0.931536215002157220,\t-0.931554396266069620,\t-0.931572575201095930,\t-0.931590751807190980,\t\n-0.931608926084309010,\t-0.931627098032404730,\t-0.931645267651432740,\t-0.931663434941347960,\t-0.931681599902104200,\t-0.931699762533656380,\t-0.931717922835959220,\t-0.931736080808967300,\t\n-0.931754236452635110,\t-0.931772389766917670,\t-0.931790540751768930,\t-0.931808689407143900,\t-0.931826835732997070,\t-0.931844979729283150,\t-0.931863121395956840,\t-0.931881260732972730,\t\n-0.931899397740285410,\t-0.931917532417849580,\t-0.931935664765620060,\t-0.931953794783551560,\t-0.931971922471598320,\t-0.931990047829715170,\t-0.932008170857857030,\t-0.932026291555978380,\t\n-0.932044409924034370,\t-0.932062525961979030,\t-0.932080639669767290,\t-0.932098751047354070,\t-0.932116860094693860,\t-0.932134966811741570,\t-0.932153071198451810,\t-0.932171173254779490,\t\n-0.932189272980679110,\t-0.932207370376105570,\t-0.932225465441013920,\t-0.932243558175358310,\t-0.932261648579093880,\t-0.932279736652175230,\t-0.932297822394557270,\t-0.932315905806194720,\t\n-0.932333986887042830,\t-0.932352065637055530,\t-0.932370142056188070,\t-0.932388216144395380,\t-0.932406287901632050,\t-0.932424357327853000,\t-0.932442424423013060,\t-0.932460489187067140,\t\n-0.932478551619969950,\t-0.932496611721676640,\t-0.932514669492141570,\t-0.932532724931319780,\t-0.932550778039166190,\t-0.932568828815635630,\t-0.932586877260683010,\t-0.932604923374263480,\t\n-0.932622967156331420,\t-0.932641008606841850,\t-0.932659047725749810,\t-0.932677084513010120,\t-0.932695118968577710,\t-0.932713151092407600,\t-0.932731180884454500,\t-0.932749208344673560,\t\n-0.932767233473019820,\t-0.932785256269447640,\t-0.932803276733912390,\t-0.932821294866369000,\t-0.932839310666772280,\t-0.932857324135077380,\t-0.932875335271239450,\t-0.932893344075212850,\t\n-0.932911350546952840,\t-0.932929354686414470,\t-0.932947356493552760,\t-0.932965355968322640,\t-0.932983353110679150,\t-0.933001347920577320,\t-0.933019340397972070,\t-0.933037330542818450,\t\n-0.933055318355071830,\t-0.933073303834686560,\t-0.933091286981618140,\t-0.933109267795821370,\t-0.933127246277251520,\t-0.933145222425863840,\t-0.933163196241612810,\t-0.933181167724453810,\t\n-0.933199136874341860,\t-0.933217103691232010,\t-0.933235068175079510,\t-0.933253030325839280,\t-0.933270990143466480,\t-0.933288947627916140,\t-0.933306902779143520,\t-0.933324855597103990,\t\n-0.933342806081751910,\t-0.933360754233042880,\t-0.933378700050931930,\t-0.933396643535374220,\t-0.933414584686324990,\t-0.933432523503739510,\t-0.933450459987572480,\t-0.933468394137779270,\t\n-0.933486325954315020,\t-0.933504255437135000,\t-0.933522182586194350,\t-0.933540107401448220,\t-0.933558029882851860,\t-0.933575950030360420,\t-0.933593867843929390,\t-0.933611783323513470,\t\n-0.933629696469068020,\t-0.933647607280548300,\t-0.933665515757909570,\t-0.933683421901107090,\t-0.933701325710096340,\t-0.933719227184832020,\t-0.933737126325269510,\t-0.933755023131364270,\t\n-0.933772917603071460,\t-0.933790809740346450,\t-0.933808699543144270,\t-0.933826587011420410,\t-0.933844472145130110,\t-0.933862354944228870,\t-0.933880235408671490,\t-0.933898113538413450,\t\n-0.933915989333410130,\t-0.933933862793616900,\t-0.933951733918989000,\t-0.933969602709482150,\t-0.933987469165050820,\t-0.934005333285650940,\t-0.934023195071237660,\t-0.934041054521766450,\t\n-0.934058911637192570,\t-0.934076766417471390,\t-0.934094618862558290,\t-0.934112468972408740,\t-0.934130316746977880,\t-0.934148162186221650,\t-0.934166005290094640,\t-0.934183846058552650,\t\n-0.934201684491551050,\t-0.934219520589045230,\t-0.934237354350990980,\t-0.934255185777342900,\t-0.934273014868056920,\t-0.934290841623088510,\t-0.934308666042392820,\t-0.934326488125925560,\t\n-0.934344307873642090,\t-0.934362125285497780,\t-0.934379940361448220,\t-0.934397753101448790,\t-0.934415563505455290,\t-0.934433371573422540,\t-0.934451177305306470,\t-0.934468980701062320,\t\n-0.934486781760645810,\t-0.934504580484012300,\t-0.934522376871117610,\t-0.934540170921916770,\t-0.934557962636365480,\t-0.934575752014419230,\t-0.934593539056033600,\t-0.934611323761164180,\t\n-0.934629106129766460,\t-0.934646886161795920,\t-0.934664663857208140,\t-0.934682439215959060,\t-0.934700212238003590,\t-0.934717982923297550,\t-0.934735751271796640,\t-0.934753517283456240,\t\n-0.934771280958232030,\t-0.934789042296080060,\t-0.934806801296955040,\t-0.934824557960813100,\t-0.934842312287609720,\t-0.934860064277300620,\t-0.934877813929841370,\t-0.934895561245187470,\t\n-0.934913306223294830,\t-0.934931048864118820,\t-0.934948789167615480,\t-0.934966527133739840,\t-0.934984262762447950,\t-0.935001996053695380,\t-0.935019727007437850,\t-0.935037455623630940,\t\n-0.935055181902230800,\t-0.935072905843192360,\t-0.935090627446471530,\t-0.935108346712024250,\t-0.935126063639806100,\t-0.935143778229772790,\t-0.935161490481880020,\t-0.935179200396083490,\t\n-0.935196907972339010,\t-0.935214613210602290,\t-0.935232316110829240,\t-0.935250016672975250,\t-0.935267714896996120,\t-0.935285410782847660,\t-0.935303104330485690,\t-0.935320795539866360,\t\n-0.935338484410944690,\t-0.935356170943676730,\t-0.935373855138018410,\t-0.935391536993925520,\t-0.935409216511353670,\t-0.935426893690258780,\t-0.935444568530596770,\t-0.935462241032323230,\t\n-0.935479911195394090,\t-0.935497579019765600,\t-0.935515244505392700,\t-0.935532907652231850,\t-0.935550568460238540,\t-0.935568226929368920,\t-0.935585883059579130,\t-0.935603536850824200,\t\n-0.935621188303060400,\t-0.935638837416243760,\t-0.935656484190329870,\t-0.935674128625274880,\t-0.935691770721034600,\t-0.935709410477564840,\t-0.935727047894821530,\t-0.935744682972760590,\t\n-0.935762315711338280,\t-0.935779946110509850,\t-0.935797574170231570,\t-0.935815199890459470,\t-0.935832823271149250,\t-0.935850444312256950,\t-0.935868063013738930,\t-0.935885679375550340,\t\n-0.935903293397647660,\t-0.935920905079986710,\t-0.935938514422523400,\t-0.935956121425214000,\t-0.935973726088014100,\t-0.935991328410880060,\t-0.936008928393767590,\t-0.936026526036633170,\t\n-0.936044121339432040,\t-0.936061714302120600,\t-0.936079304924654960,\t-0.936096893206991080,\t-0.936114479149084850,\t-0.936132062750892890,\t-0.936149644012370330,\t-0.936167222933473650,\t\n-0.936184799514159010,\t-0.936202373754382310,\t-0.936219945654099720,\t-0.936237515213267260,\t-0.936255082431840970,\t-0.936272647309777000,\t-0.936290209847031710,\t-0.936307770043560580,\t\n-0.936325327899320100,\t-0.936342883414266190,\t-0.936360436588355110,\t-0.936377987421542990,\t-0.936395535913786210,\t-0.936413082065040260,\t-0.936430625875261490,\t-0.936448167344406280,\t\n-0.936465706472430660,\t-0.936483243259290780,\t-0.936500777704942670,\t-0.936518309809342700,\t-0.936535839572447020,\t-0.936553366994211660,\t-0.936570892074593210,\t-0.936588414813547270,\t\n-0.936605935211030190,\t-0.936623453266998360,\t-0.936640968981407810,\t-0.936658482354215230,\t-0.936675993385376100,\t-0.936693502074847030,\t-0.936711008422584150,\t-0.936728512428543820,\t\n-0.936746014092682100,\t-0.936763513414955450,\t-0.936781010395319910,\t-0.936798505033731970,\t-0.936815997330147640,\t-0.936833487284523760,\t-0.936850974896815790,\t-0.936868460166980330,\t\n-0.936885943094973750,\t-0.936903423680752300,\t-0.936920901924272350,\t-0.936938377825490500,\t-0.936955851384362330,\t-0.936973322600844430,\t-0.936990791474893390,\t-0.937008258006465260,\t\n-0.937025722195516500,\t-0.937043184042003490,\t-0.937060643545882480,\t-0.937078100707109840,\t-0.937095555525642390,\t-0.937113008001435600,\t-0.937130458134446290,\t-0.937147905924630930,\t\n-0.937165351371945790,\t-0.937182794476347230,\t-0.937200235237791950,\t-0.937217673656235870,\t-0.937235109731635490,\t-0.937252543463947490,\t-0.937269974853128020,\t-0.937287403899133560,\t\n-0.937304830601920710,\t-0.937322254961445720,\t-0.937339676977665180,\t-0.937357096650535680,\t-0.937374513980013150,\t-0.937391928966054390,\t-0.937409341608615660,\t-0.937426751907653680,\t\n-0.937444159863124790,\t-0.937461565474985830,\t-0.937478968743192700,\t-0.937496369667702110,\t-0.937513768248470550,\t-0.937531164485454590,\t-0.937548558378610730,\t-0.937565949927895440,\t\n-0.937583339133265300,\t-0.937600725994676810,\t-0.937618110512086540,\t-0.937635492685451320,\t-0.937652872514727060,\t-0.937670249999870480,\t-0.937687625140838370,\t-0.937704997937587210,\t\n-0.937722368390073950,\t-0.937739736498254260,\t-0.937757102262085420,\t-0.937774465681523670,\t-0.937791826756525840,\t-0.937809185487048500,\t-0.937826541873048150,\t-0.937843895914481360,\t\n-0.937861247611304850,\t-0.937878596963475310,\t-0.937895943970949550,\t-0.937913288633683620,\t-0.937930630951634430,\t-0.937947970924758680,\t-0.937965308553013080,\t-0.937982643836354100,\t\n-0.937999976774738900,\t-0.938017307368123390,\t-0.938034635616464720,\t-0.938051961519719370,\t-0.938069285077844040,\t-0.938086606290795650,\t-0.938103925158530690,\t-0.938121241681005860,\t\n-0.938138555858177960,\t-0.938155867690004030,\t-0.938173177176440110,\t-0.938190484317443230,\t-0.938207789112970090,\t-0.938225091562977510,\t-0.938242391667422290,\t-0.938259689426261260,\t\n-0.938276984839450770,\t-0.938294277906947860,\t-0.938311568628709130,\t-0.938328857004691600,\t-0.938346143034851870,\t-0.938363426719146850,\t-0.938380708057533150,\t-0.938397987049967800,\t\n-0.938415263696407710,\t-0.938432537996809150,\t-0.938449809951129250,\t-0.938467079559324850,\t-0.938484346821352730,\t-0.938501611737169840,\t-0.938518874306733090,\t-0.938536134529998960,\t\n-0.938553392406924370,\t-0.938570647937466360,\t-0.938587901121581750,\t-0.938605151959227450,\t-0.938622400450360160,\t-0.938639646594936930,\t-0.938656890392914560,\t-0.938674131844249970,\t\n-0.938691370948900320,\t-0.938708607706821960,\t-0.938725842117972160,\t-0.938743074182307620,\t-0.938760303899785490,\t-0.938777531270362900,\t-0.938794756293996110,\t-0.938811978970642500,\t\n-0.938829199300258880,\t-0.938846417282802380,\t-0.938863632918229720,\t-0.938880846206498030,\t-0.938898057147564140,\t-0.938915265741385170,\t-0.938932471987918070,\t-0.938949675887120080,\t\n-0.938966877438947580,\t-0.938984076643357920,\t-0.939001273500308040,\t-0.939018468009754970,\t-0.939035660171655740,\t-0.939052849985967720,\t-0.939070037452647170,\t-0.939087222571651560,\t\n-0.939104405342937930,\t-0.939121585766463210,\t-0.939138763842184640,\t-0.939155939570059050,\t-0.939173112950043690,\t-0.939190283982095480,\t-0.939207452666171890,\t-0.939224619002229420,\t\n-0.939241782990225320,\t-0.939258944630116830,\t-0.939276103921861010,\t-0.939293260865414870,\t-0.939310415460735900,\t-0.939327567707780590,\t-0.939344717606506290,\t-0.939361865156870260,\t\n-0.939379010358829540,\t-0.939396153212341380,\t-0.939413293717362710,\t-0.939430431873850890,\t-0.939447567681762960,\t-0.939464701141056400,\t-0.939481832251687800,\t-0.939498961013614630,\t\n-0.939516087426794040,\t-0.939533211491183300,\t-0.939550333206739420,\t-0.939567452573420110,\t-0.939584569591181860,\t-0.939601684259982140,\t-0.939618796579778200,\t-0.939635906550527310,\t\n-0.939653014172186610,\t-0.939670119444713460,\t-0.939687222368064900,\t-0.939704322942198300,\t-0.939721421167071020,\t-0.939738517042640330,\t-0.939755610568863140,\t-0.939772701745696940,\t\n-0.939789790573098860,\t-0.939806877051026390,\t-0.939823961179437120,\t-0.939841042958287520,\t-0.939858122387535300,\t-0.939875199467137820,\t-0.939892274197052350,\t-0.939909346577236240,\t\n-0.939926416607646640,\t-0.939943484288241150,\t-0.939960549618976900,\t-0.939977612599811160,\t-0.939994673230701850,\t-0.940011731511605440,\t-0.940028787442479750,\t-0.940045841023282150,\t\n-0.940062892253969880,\t-0.940079941134500330,\t-0.940096987664831300,\t-0.940114031844919480,\t-0.940131073674722590,\t-0.940148113154198000,\t-0.940165150283303160,\t-0.940182185061995470,\t\n-0.940199217490232280,\t-0.940216247567970950,\t-0.940233275295169090,\t-0.940250300671784390,\t-0.940267323697773550,\t-0.940284344373094490,\t-0.940301362697704480,\t-0.940318378671561090,\t\n-0.940335392294621820,\t-0.940352403566844350,\t-0.940369412488185510,\t-0.940386419058603210,\t-0.940403423278054820,\t-0.940420425146497820,\t-0.940437424663889800,\t-0.940454421830188240,\t\n-0.940471416645350610,\t-0.940488409109334510,\t-0.940505399222097640,\t-0.940522386983596910,\t-0.940539372393790260,\t-0.940556355452635160,\t-0.940573336160089200,\t-0.940590314516109970,\t\n-0.940607290520655170,\t-0.940624264173681830,\t-0.940641235475147890,\t-0.940658204425010800,\t-0.940675171023228170,\t-0.940692135269757700,\t-0.940709097164556860,\t-0.940726056707583250,\t\n-0.940743013898794560,\t-0.940759968738148270,\t-0.940776921225602410,\t-0.940793871361113920,\t-0.940810819144640710,\t-0.940827764576140590,\t-0.940844707655570930,\t-0.940861648382889770,\t\n-0.940878586758054360,\t-0.940895522781022290,\t-0.940912456451751590,\t-0.940929387770199630,\t-0.940946316736324230,\t-0.940963243350083080,\t-0.940980167611433770,\t-0.940997089520334010,\t\n-0.941014009076741600,\t-0.941030926280614470,\t-0.941047841131909650,\t-0.941064753630585280,\t-0.941081663776599080,\t-0.941098571569908620,\t-0.941115477010471820,\t-0.941132380098246620,\t\n-0.941149280833190050,\t-0.941166179215260360,\t-0.941183075244415250,\t-0.941199968920612420,\t-0.941216860243809680,\t-0.941233749213964850,\t-0.941250635831035520,\t-0.941267520094979710,\t\n-0.941284402005755360,\t-0.941301281563319710,\t-0.941318158767630810,\t-0.941335033618646570,\t-0.941351906116324690,\t-0.941368776260623100,\t-0.941385644051499830,\t-0.941402509488912240,\t\n-0.941419372572818270,\t-0.941436233303175940,\t-0.941453091679942950,\t-0.941469947703077240,\t-0.941486801372536710,\t-0.941503652688279180,\t-0.941520501650262460,\t-0.941537348258444930,\t\n-0.941554192512783610,\t-0.941571034413236750,\t-0.941587873959762400,\t-0.941604711152318360,\t-0.941621545990862560,\t-0.941638378475353140,\t-0.941655208605747470,\t-0.941672036382003810,\t\n-0.941688861804080070,\t-0.941705684871934180,\t-0.941722505585524060,\t-0.941739323944807750,\t-0.941756139949743050,\t-0.941772953600288010,\t-0.941789764896400540,\t-0.941806573838039010,\t\n-0.941823380425160780,\t-0.941840184657724010,\t-0.941856986535686840,\t-0.941873786059007180,\t-0.941890583227643410,\t-0.941907378041552890,\t-0.941924170500693880,\t-0.941940960605024410,\t\n-0.941957748354502520,\t-0.941974533749086350,\t-0.941991316788733820,\t-0.942008097473402970,\t-0.942024875803051940,\t-0.942041651777638660,\t-0.942058425397121480,\t-0.942075196661458110,\t\n-0.942091965570606590,\t-0.942108732124525280,\t-0.942125496323172110,\t-0.942142258166505100,\t-0.942159017654482840,\t-0.942175774787062710,\t-0.942192529564203190,\t-0.942209281985862290,\t\n-0.942226032051998170,\t-0.942242779762568980,\t-0.942259525117532970,\t-0.942276268116847950,\t-0.942293008760472390,\t-0.942309747048364570,\t-0.942326482980482050,\t-0.942343216556783440,\t\n-0.942359947777226650,\t-0.942376676641770050,\t-0.942393403150371790,\t-0.942410127302990230,\t-0.942426849099583190,\t-0.942443568540108910,\t-0.942460285624525770,\t-0.942477000352791920,\t\n-0.942493712724865480,\t-0.942510422740704850,\t-0.942527130400268140,\t-0.942543835703513630,\t-0.942560538650399790,\t-0.942577239240884320,\t-0.942593937474925700,\t-0.942610633352482300,\t\n-0.942627326873512250,\t-0.942644018037974040,\t-0.942660706845825920,\t-0.942677393297025820,\t-0.942694077391532210,\t-0.942710759129303360,\t-0.942727438510297720,\t-0.942744115534473350,\t\n-0.942760790201788820,\t-0.942777462512202290,\t-0.942794132465672010,\t-0.942810800062156450,\t-0.942827465301614210,\t-0.942844128184003090,\t-0.942860788709281470,\t-0.942877446877408040,\t\n-0.942894102688340950,\t-0.942910756142038790,\t-0.942927407238459580,\t-0.942944055977561810,\t-0.942960702359303850,\t-0.942977346383644170,\t-0.942993988050541130,\t-0.943010627359953110,\t\n-0.943027264311838590,\t-0.943043898906155810,\t-0.943060531142863370,\t-0.943077161021919850,\t-0.943093788543283180,\t-0.943110413706911950,\t-0.943127036512764750,\t-0.943143656960799940,\t\n-0.943160275050975990,\t-0.943176890783251620,\t-0.943193504157584740,\t-0.943210115173934160,\t-0.943226723832258250,\t-0.943243330132515490,\t-0.943259934074664460,\t-0.943276535658663650,\t\n-0.943293134884471420,\t-0.943309731752046350,\t-0.943326326261347270,\t-0.943342918412332090,\t-0.943359508204959510,\t-0.943376095639188340,\t-0.943392680714976840,\t-0.943409263432283600,\t\n-0.943425843791067530,\t-0.943442421791286570,\t-0.943458997432899520,\t-0.943475570715864960,\t-0.943492141640141500,\t-0.943508710205687720,\t-0.943525276412462200,\t-0.943541840260423430,\t\n-0.943558401749530100,\t-0.943574960879741020,\t-0.943591517651014230,\t-0.943608072063308660,\t-0.943624624116582880,\t-0.943641173810795600,\t-0.943657721145905400,\t-0.943674266121871110,\t\n-0.943690808738650970,\t-0.943707348996203680,\t-0.943723886894488160,\t-0.943740422433462790,\t-0.943756955613086370,\t-0.943773486433317710,\t-0.943790014894115180,\t-0.943806540995437700,\t\n-0.943823064737243870,\t-0.943839586119492590,\t-0.943856105142142130,\t-0.943872621805151300,\t-0.943889136108479020,\t-0.943905648052083880,\t-0.943922157635924910,\t-0.943938664859960250,\t\n-0.943955169724148950,\t-0.943971672228449690,\t-0.943988172372821290,\t-0.944004670157222450,\t-0.944021165581611870,\t-0.944037658645948460,\t-0.944054149350190830,\t-0.944070637694297890,\t\n-0.944087123678228670,\t-0.944103607301941320,\t-0.944120088565394870,\t-0.944136567468548350,\t-0.944153044011360240,\t-0.944169518193789690,\t-0.944185990015795510,\t-0.944202459477336160,\t\n-0.944218926578370590,\t-0.944235391318857700,\t-0.944251853698756420,\t-0.944268313718025440,\t-0.944284771376623590,\t-0.944301226674510000,\t-0.944317679611643260,\t-0.944334130187982510,\t\n-0.944350578403486240,\t-0.944367024258113590,\t-0.944383467751823250,\t-0.944399908884574370,\t-0.944416347656325540,\t-0.944432784067036350,\t-0.944449218116664710,\t-0.944465649805170120,\t\n-0.944482079132511480,\t-0.944498506098647490,\t-0.944514930703537310,\t-0.944531352947139860,\t-0.944547772829413930,\t-0.944564190350318580,\t-0.944580605509813150,\t-0.944597018307855810,\t\n-0.944613428744405900,\t-0.944629836819422470,\t-0.944646242532864440,\t-0.944662645884690840,\t-0.944679046874860930,\t-0.944695445503333060,\t-0.944711841770066620,\t-0.944728235675020510,\t\n-0.944744627218153890,\t-0.944761016399425670,\t-0.944777403218794890,\t-0.944793787676220580,\t-0.944810169771661880,\t-0.944826549505077720,\t-0.944842926876427460,\t-0.944859301885669580,\t\n-0.944875674532763440,\t-0.944892044817668200,\t-0.944908412740342760,\t-0.944924778300746620,\t-0.944941141498838230,\t-0.944957502334576980,\t-0.944973860807922010,\t-0.944990216918832340,\t\n-0.945006570667267120,\t-0.945022922053185500,\t-0.945039271076546620,\t-0.945055617737309510,\t-0.945071962035433310,\t-0.945088303970877620,\t-0.945104643543600800,\t-0.945120980753562430,\t\n-0.945137315600721560,\t-0.945153648085037320,\t-0.945169978206469420,\t-0.945186305964976210,\t-0.945202631360517190,\t-0.945218954393051590,\t-0.945235275062538680,\t-0.945251593368937600,\t\n-0.945267909312207390,\t-0.945284222892307510,\t-0.945300534109197120,\t-0.945316842962835360,\t-0.945333149453181700,\t-0.945349453580194950,\t-0.945365755343834600,\t-0.945382054744059790,\t\n-0.945398351780829870,\t-0.945414646454104110,\t-0.945430938763841990,\t-0.945447228710002200,\t-0.945463516292544330,\t-0.945479801511427740,\t-0.945496084366611590,\t-0.945512364858055230,\t\n-0.945528642985718040,\t-0.945544918749559150,\t-0.945561192149538040,\t-0.945577463185614200,\t-0.945593731857746420,\t-0.945609998165894310,\t-0.945626262110017210,\t-0.945642523690074400,\t\n-0.945658782906025340,\t-0.945675039757829630,\t-0.945691294245445960,\t-0.945707546368834140,\t-0.945723796127953430,\t-0.945740043522763200,\t-0.945756288553222800,\t-0.945772531219291720,\t\n-0.945788771520929440,\t-0.945805009458095090,\t-0.945821245030748270,\t-0.945837478238848560,\t-0.945853709082355000,\t-0.945869937561227060,\t-0.945886163675424330,\t-0.945902387424906180,\t\n-0.945918608809632300,\t-0.945934827829561620,\t-0.945951044484653950,\t-0.945967258774868650,\t-0.945983470700165200,\t-0.945999680260502960,\t-0.946015887455841640,\t-0.946032092286140600,\t\n-0.946048294751359320,\t-0.946064494851457270,\t-0.946080692586394270,\t-0.946096887956129230,\t-0.946113080960622080,\t-0.946129271599832070,\t-0.946145459873719010,\t-0.946161645782242490,\t\n-0.946177829325361650,\t-0.946194010503036200,\t-0.946210189315225710,\t-0.946226365761889790,\t-0.946242539842988010,\t-0.946258711558479740,\t-0.946274880908324790,\t-0.946291047892482640,\t\n-0.946307212510912770,\t-0.946323374763575310,\t-0.946339534650428970,\t-0.946355692171433890,\t-0.946371847326549550,\t-0.946388000115735650,\t-0.946404150538951660,\t-0.946420298596157620,\t\n-0.946436444287312550,\t-0.946452587612376380,\t-0.946468728571308700,\t-0.946484867164069210,\t-0.946501003390617600,\t-0.946517137250913470,\t-0.946533268744916390,\t-0.946549397872586300,\t\n-0.946565524633882880,\t-0.946581649028765400,\t-0.946597771057193890,\t-0.946613890719127830,\t-0.946630008014527120,\t-0.946646122943351380,\t-0.946662235505560500,\t-0.946678345701113870,\t\n-0.946694453529971390,\t-0.946710558992092670,\t-0.946726662087437610,\t-0.946742762815965920,\t-0.946758861177637300,\t-0.946774957172411560,\t-0.946791050800248390,\t-0.946807142061107940,\t\n-0.946823230954949250,\t-0.946839317481732560,\t-0.946855401641417570,\t-0.946871483433963990,\t-0.946887562859331840,\t-0.946903639917480940,\t-0.946919714608370770,\t-0.946935786931961230,\t\n-0.946951856888212260,\t-0.946967924477083670,\t-0.946983989698535140,\t-0.947000052552526840,\t-0.947016113039018230,\t-0.947032171157969450,\t-0.947048226909340210,\t-0.947064280293090640,\t\n-0.947080331309180120,\t-0.947096379957568790,\t-0.947112426238216560,\t-0.947128470151083150,\t-0.947144511696128900,\t-0.947160550873313080,\t-0.947176587682595940,\t-0.947192622123937290,\t\n-0.947208654197297050,\t-0.947224683902635260,\t-0.947240711239911600,\t-0.947256736209086350,\t-0.947272758810119190,\t-0.947288779042970040,\t-0.947304796907599390,\t-0.947320812403966370,\t\n-0.947336825532031360,\t-0.947352836291754150,\t-0.947368844683095010,\t-0.947384850706013750,\t-0.947400854360470610,\t-0.947416855646424970,\t-0.947432854563837300,\t-0.947448851112667410,\t\n-0.947464845292875450,\t-0.947480837104421440,\t-0.947496826547265190,\t-0.947512813621366970,\t-0.947528798326686680,\t-0.947544780663184700,\t-0.947560760630820510,\t-0.947576738229554460,\t\n-0.947592713459346480,\t-0.947608686320156710,\t-0.947624656811945300,\t-0.947640624934672380,\t-0.947656590688297770,\t-0.947672554072781610,\t-0.947688515088084050,\t-0.947704473734165330,\t\n-0.947720430010985270,\t-0.947736383918504230,\t-0.947752335456682140,\t-0.947768284625479350,\t-0.947784231424856020,\t-0.947800175854771830,\t-0.947816117915187270,\t-0.947832057606062370,\t\n-0.947847994927357380,\t-0.947863929879032340,\t-0.947879862461047720,\t-0.947895792673363210,\t-0.947911720515939300,\t-0.947927645988736020,\t-0.947943569091713620,\t-0.947959489824832250,\t\n-0.947975408188052260,\t-0.947991324181333690,\t-0.948007237804636800,\t-0.948023149057921840,\t-0.948039057941149290,\t-0.948054964454278840,\t-0.948070868597270850,\t-0.948086770370085820,\t\n-0.948102669772683870,\t-0.948118566805025490,\t-0.948134461467070370,\t-0.948150353758779100,\t-0.948166243680112040,\t-0.948182131231029230,\t-0.948198016411491260,\t-0.948213899221458160,\t\n-0.948229779660890280,\t-0.948245657729748000,\t-0.948261533427991580,\t-0.948277406755581590,\t-0.948293277712477730,\t-0.948309146298640830,\t-0.948325012514031010,\t-0.948340876358608640,\t\n-0.948356737832333980,\t-0.948372596935167960,\t-0.948388453667070030,\t-0.948404308028000910,\t-0.948420160017921180,\t-0.948436009636790980,\t-0.948451856884570680,\t-0.948467701761220860,\t\n-0.948483544266701670,\t-0.948499384400973700,\t-0.948515222163997640,\t-0.948531057555733080,\t-0.948546890576140940,\t-0.948562721225181590,\t-0.948578549502815390,\t-0.948594375409002820,\t\n-0.948610198943704690,\t-0.948626020106880690,\t-0.948641838898491630,\t-0.948657655318497990,\t-0.948673469366860260,\t-0.948689281043538780,\t-0.948705090348494150,\t-0.948720897281686850,\t\n-0.948736701843077230,\t-0.948752504032626120,\t-0.948768303850293540,\t-0.948784101296040180,\t-0.948799896369826530,\t-0.948815689071613180,\t-0.948831479401360590,\t-0.948847267359029580,\t\n-0.948863052944580070,\t-0.948878836157972970,\t-0.948894616999168770,\t-0.948910395468128050,\t-0.948926171564811400,\t-0.948941945289179190,\t-0.948957716641192220,\t-0.948973485620810960,\t\n-0.948989252227995910,\t-0.949005016462708070,\t-0.949020778324907390,\t-0.949036537814554770,\t-0.949052294931610810,\t-0.949068049676036090,\t-0.949083802047791520,\t-0.949099552046837160,\t\n-0.949115299673134020,\t-0.949131044926642460,\t-0.949146787807323420,\t-0.949162528315137370,\t-0.949178266450044990,\t-0.949194002212007000,\t-0.949209735600983980,\t-0.949225466616936630,\t\n-0.949241195259825870,\t-0.949256921529611830,\t-0.949272645426255450,\t-0.949288366949717520,\t-0.949304086099958640,\t-0.949319802876939620,\t-0.949335517280621270,\t-0.949351229310963940,\t\n-0.949366938967928450,\t-0.949382646251475730,\t-0.949398351161566230,\t-0.949414053698161010,\t-0.949429753861220640,\t-0.949445451650705820,\t-0.949461147066577360,\t-0.949476840108796290,\t\n-0.949492530777322870,\t-0.949508219072118240,\t-0.949523904993142990,\t-0.949539588540357920,\t-0.949555269713723840,\t-0.949570948513202010,\t-0.949586624938752450,\t-0.949602298990336320,\t\n-0.949617970667914420,\t-0.949633639971447670,\t-0.949649306900896770,\t-0.949664971456222640,\t-0.949680633637386080,\t-0.949696293444347920,\t-0.949711950877069280,\t-0.949727605935510530,\t\n-0.949743258619632710,\t-0.949758908929396740,\t-0.949774556864763640,\t-0.949790202425694010,\t-0.949805845612149200,\t-0.949821486424089480,\t-0.949837124861475980,\t-0.949852760924269730,\t\n-0.949868394612431670,\t-0.949884025925922470,\t-0.949899654864703290,\t-0.949915281428734940,\t-0.949930905617978440,\t-0.949946527432394610,\t-0.949962146871944800,\t-0.949977763936589280,\t\n-0.949993378626289410,\t-0.950008990941006100,\t-0.950024600880700290,\t-0.950040208445333210,\t-0.950055813634865350,\t-0.950071416449258080,\t-0.950087016888472080,\t-0.950102614952468620,\t\n-0.950118210641208720,\t-0.950133803954653190,\t-0.950149394892763180,\t-0.950164983455499600,\t-0.950180569642823600,\t-0.950196153454696550,\t-0.950211734891078800,\t-0.950227313951931610,\t\n-0.950242890637216230,\t-0.950258464946893590,\t-0.950274036880924820,\t-0.950289606439271180,\t-0.950305173621893370,\t-0.950320738428752530,\t-0.950336300859809800,\t-0.950351860915026440,\t\n-0.950367418594363360,\t-0.950382973897781700,\t-0.950398526825242620,\t-0.950414077376707240,\t-0.950429625552136950,\t-0.950445171351492310,\t-0.950460714774734820,\t-0.950476255821825490,\t\n-0.950491794492725470,\t-0.950507330787396020,\t-0.950522864705798500,\t-0.950538396247893490,\t-0.950553925413642590,\t-0.950569452203006810,\t-0.950584976615947430,\t-0.950600498652425570,\t\n-0.950616018312402500,\t-0.950631535595839460,\t-0.950647050502697490,\t-0.950662563032938170,\t-0.950678073186522090,\t-0.950693580963410940,\t-0.950709086363565880,\t-0.950724589386948040,\t\n-0.950740090033518670,\t-0.950755588303239360,\t-0.950771084196070930,\t-0.950786577711974720,\t-0.950802068850912010,\t-0.950817557612844140,\t-0.950833043997732500,\t-0.950848528005538100,\t\n-0.950864009636222420,\t-0.950879488889746720,\t-0.950894965766072350,\t-0.950910440265160810,\t-0.950925912386972880,\t-0.950941382131470170,\t-0.950956849498614030,\t-0.950972314488365720,\t\n-0.950987777100686940,\t-0.951003237335538490,\t-0.951018695192881850,\t-0.951034150672678600,\t-0.951049603774889900,\t-0.951065054499477090,\t-0.951080502846401780,\t-0.951095948815625200,\t\n-0.951111392407108620,\t-0.951126833620813740,\t-0.951142272456701910,\t-0.951157708914734170,\t-0.951173142994872210,\t-0.951188574697077290,\t-0.951204004021311000,\t-0.951219430967534700,\t\n-0.951234855535710190,\t-0.951250277725798070,\t-0.951265697537760360,\t-0.951281114971558430,\t-0.951296530027153750,\t-0.951311942704507580,\t-0.951327353003581730,\t-0.951342760924337450,\t\n-0.951358166466736210,\t-0.951373569630739820,\t-0.951388970416309320,\t-0.951404368823406290,\t-0.951419764851992420,\t-0.951435158502029090,\t-0.951450549773477980,\t-0.951465938666300690,\t\n-0.951481325180458250,\t-0.951496709315912460,\t-0.951512091072625020,\t-0.951527470450557190,\t-0.951542847449670880,\t-0.951558222069927350,\t-0.951573594311288180,\t-0.951588964173715190,\t\n-0.951604331657169960,\t-0.951619696761613620,\t-0.951635059487008110,\t-0.951650419833314890,\t-0.951665777800495660,\t-0.951681133388512010,\t-0.951696486597325750,\t-0.951711837426898020,\t\n-0.951727185877190630,\t-0.951742531948165380,\t-0.951757875639783760,\t-0.951773216952007450,\t-0.951788555884798050,\t-0.951803892438117360,\t-0.951819226611926860,\t-0.951834558406188360,\t\n-0.951849887820863660,\t-0.951865214855914020,\t-0.951880539511301250,\t-0.951895861786987260,\t-0.951911181682933540,\t-0.951926499199102220,\t-0.951941814335454330,\t-0.951957127091951900,\t\n-0.951972437468556640,\t-0.951987745465230240,\t-0.952003051081934610,\t-0.952018354318631240,\t-0.952033655175282050,\t-0.952048953651848720,\t-0.952064249748292960,\t-0.952079543464576790,\t\n-0.952094834800661590,\t-0.952110123756509270,\t-0.952125410332081650,\t-0.952140694527340510,\t-0.952155976342247690,\t-0.952171255776765090,\t-0.952186532830854190,\t-0.952201807504476920,\t\n-0.952217079797595070,\t-0.952232349710170570,\t-0.952247617242165220,\t-0.952262882393540840,\t-0.952278145164259130,\t-0.952293405554282210,\t-0.952308663563571910,\t-0.952323919192089810,\t\n-0.952339172439797820,\t-0.952354423306657980,\t-0.952369671792631990,\t-0.952384917897681870,\t-0.952400161621769660,\t-0.952415402964856940,\t-0.952430641926905520,\t-0.952445878507877650,\t\n-0.952461112707735040,\t-0.952476344526439590,\t-0.952491573963953340,\t-0.952506801020238100,\t-0.952522025695255900,\t-0.952537247988968880,\t-0.952552467901338520,\t-0.952567685432326950,\t\n-0.952582900581896210,\t-0.952598113350008100,\t-0.952613323736624880,\t-0.952628531741708470,\t-0.952643737365220570,\t-0.952658940607123310,\t-0.952674141467378610,\t-0.952689339945948620,\t\n-0.952704536042795260,\t-0.952719729757880550,\t-0.952734921091166640,\t-0.952750110042615340,\t-0.952765296612188670,\t-0.952780480799849120,\t-0.952795662605558150,\t-0.952810842029277900,\t\n-0.952826019070970640,\t-0.952841193730598280,\t-0.952856366008123290,\t-0.952871535903507040,\t-0.952886703416712000,\t-0.952901868547700200,\t-0.952917031296433680,\t-0.952932191662874570,\t\n-0.952947349646985020,\t-0.952962505248727050,\t-0.952977658468062930,\t-0.952992809304954560,\t-0.953007957759364420,\t-0.953023103831254210,\t-0.953038247520586190,\t-0.953053388827322600,\t\n-0.953068527751425480,\t-0.953083664292857070,\t-0.953098798451579740,\t-0.953113930227555190,\t-0.953129059620745790,\t-0.953144186631113670,\t-0.953159311258621190,\t-0.953174433503230390,\t\n-0.953189553364903520,\t-0.953204670843602720,\t-0.953219785939290350,\t-0.953234898651928670,\t-0.953250008981479490,\t-0.953265116927905390,\t-0.953280222491168390,\t-0.953295325671230880,\t\n-0.953310426468055080,\t-0.953325524881603380,\t-0.953340620911837690,\t-0.953355714558720480,\t-0.953370805822213900,\t-0.953385894702280300,\t-0.953400981198882060,\t-0.953416065311981310,\t\n-0.953431147041540420,\t-0.953446226387521630,\t-0.953461303349887550,\t-0.953476377928599960,\t-0.953491450123621350,\t-0.953506519934914200,\t-0.953521587362440750,\t-0.953536652406163250,\t\n-0.953551715066044530,\t-0.953566775342046150,\t-0.953581833234130820,\t-0.953596888742261010,\t-0.953611941866398860,\t-0.953626992606506960,\t-0.953642040962547450,\t-0.953657086934482920,\t\n-0.953672130522275730,\t-0.953687171725888130,\t-0.953702210545282920,\t-0.953717246980421820,\t-0.953732281031267730,\t-0.953747312697782900,\t-0.953762341979929710,\t-0.953777368877670950,\t\n-0.953792393390968550,\t-0.953807415519785210,\t-0.953822435264083280,\t-0.953837452623825240,\t-0.953852467598973570,\t-0.953867480189490750,\t-0.953882490395339230,\t-0.953897498216481510,\t\n-0.953912503652880050,\t-0.953927506704497550,\t-0.953942507371296040,\t-0.953957505653238220,\t-0.953972501550286680,\t-0.953987495062403880,\t-0.954002486189552410,\t-0.954017474931694860,\t\n-0.954032461288793490,\t-0.954047445260810870,\t-0.954062426847709700,\t-0.954077406049452350,\t-0.954092382866001620,\t-0.954107357297319880,\t-0.954122329343369710,\t-0.954137299004113810,\t\n-0.954152266279514880,\t-0.954167231169534950,\t-0.954182193674137040,\t-0.954197153793283630,\t-0.954212111526937300,\t-0.954227066875060650,\t-0.954242019837616700,\t-0.954256970414567360,\t\n-0.954271918605875680,\t-0.954286864411504120,\t-0.954301807831415490,\t-0.954316748865572270,\t-0.954331687513937150,\t-0.954346623776472840,\t-0.954361557653142010,\t-0.954376489143907490,\t\n-0.954391418248731530,\t-0.954406344967577040,\t-0.954421269300406610,\t-0.954436191247183040,\t-0.954451110807869040,\t-0.954466027982427520,\t-0.954480942770820630,\t-0.954495855173011390,\t\n-0.954510765188962500,\t-0.954525672818636760,\t-0.954540578061996770,\t-0.954555480919005330,\t-0.954570381389625240,\t-0.954585279473819210,\t-0.954600175171549940,\t-0.954615068482780550,\t\n-0.954629959407473190,\t-0.954644847945590900,\t-0.954659734097096480,\t-0.954674617861952730,\t-0.954689499240122810,\t-0.954704378231568730,\t-0.954719254836253750,\t-0.954734129054140680,\t\n-0.954749000885192320,\t-0.954763870329371380,\t-0.954778737386640760,\t-0.954793602056963290,\t-0.954808464340301870,\t-0.954823324236619310,\t-0.954838181745878640,\t-0.954853036868042240,\t\n-0.954867889603073340,\t-0.954882739950934640,\t-0.954897587911589070,\t-0.954912433484999880,\t-0.954927276671129310,\t-0.954942117469940510,\t-0.954956955881396400,\t-0.954971791905460000,\t\n-0.954986625542094010,\t-0.955001456791261580,\t-0.955016285652925400,\t-0.955031112127048500,\t-0.955045936213593900,\t-0.955060757912524650,\t-0.955075577223803320,\t-0.955090394147393050,\t\n-0.955105208683256770,\t-0.955120020831357390,\t-0.955134830591658050,\t-0.955149637964121890,\t-0.955164442948711280,\t-0.955179245545389690,\t-0.955194045754119920,\t-0.955208843574865020,\t\n-0.955223639007588000,\t-0.955238432052252010,\t-0.955253222708819850,\t-0.955268010977254560,\t-0.955282796857519600,\t-0.955297580349577350,\t-0.955312361453391160,\t-0.955327140168924060,\t\n-0.955341916496139200,\t-0.955356690434999490,\t-0.955371461985468300,\t-0.955386231147508090,\t-0.955400997921082460,\t-0.955415762306154330,\t-0.955430524302686710,\t-0.955445283910642760,\t\n-0.955460041129985730,\t-0.955474795960678520,\t-0.955489548402684300,\t-0.955504298455966520,\t-0.955519046120487660,\t-0.955533791396211200,\t-0.955548534283100380,\t-0.955563274781118130,\t\n-0.955578012890227700,\t-0.955592748610392450,\t-0.955607481941575190,\t-0.955622212883739160,\t-0.955636941436847520,\t-0.955651667600863620,\t-0.955666391375750490,\t-0.955681112761471500,\t\n-0.955695831757989670,\t-0.955710548365268250,\t-0.955725262583270400,\t-0.955739974411959680,\t-0.955754683851298800,\t-0.955769390901251240,\t-0.955784095561780120,\t-0.955798797832848820,\t\n-0.955813497714420810,\t-0.955828195206458790,\t-0.955842890308926220,\t-0.955857583021786470,\t-0.955872273345002690,\t-0.955886961278538340,\t-0.955901646822356570,\t-0.955916329976420620,\t\n-0.955931010740693870,\t-0.955945689115139550,\t-0.955960365099721380,\t-0.955975038694401920,\t-0.955989709899145000,\t-0.956004378713913640,\t-0.956019045138671420,\t-0.956033709173381600,\t\n-0.956048370818007750,\t-0.956063030072512700,\t-0.956077686936860130,\t-0.956092341411013290,\t-0.956106993494935660,\t-0.956121643188590500,\t-0.956136290491941150,\t-0.956150935404951220,\t\n-0.956165577927583830,\t-0.956180218059802800,\t-0.956194855801571040,\t-0.956209491152852030,\t-0.956224124113609350,\t-0.956238754683806370,\t-0.956253382863406440,\t-0.956268008652373380,\t\n-0.956282632050669990,\t-0.956297253058260080,\t-0.956311871675107010,\t-0.956326487901174250,\t-0.956341101736425280,\t-0.956355713180823570,\t-0.956370322234332600,\t-0.956384928896915730,\t\n-0.956399533168536880,\t-0.956414135049158840,\t-0.956428734538745550,\t-0.956443331637260470,\t-0.956457926344666980,\t-0.956472518660928750,\t-0.956487108586009380,\t-0.956501696119872010,\t\n-0.956516281262480450,\t-0.956530864013798170,\t-0.956545444373788630,\t-0.956560022342415660,\t-0.956574597919642500,\t-0.956589171105432850,\t-0.956603741899750390,\t-0.956618310302558510,\t\n-0.956632876313820990,\t-0.956647439933501210,\t-0.956662001161562750,\t-0.956676559997969300,\t-0.956691116442684340,\t-0.956705670495672010,\t-0.956720222156895120,\t-0.956734771426317800,\t\n-0.956749318303903530,\t-0.956763862789615890,\t-0.956778404883418590,\t-0.956792944585275310,\t-0.956807481895149750,\t-0.956822016813005380,\t-0.956836549338806020,\t-0.956851079472515460,\t\n-0.956865607214096970,\t-0.956880132563514560,\t-0.956894655520731720,\t-0.956909176085712350,\t-0.956923694258419940,\t-0.956938210038818630,\t-0.956952723426871430,\t-0.956967234422542500,\t\n-0.956981743025795420,\t-0.956996249236594100,\t-0.957010753054902020,\t-0.957025254480683210,\t-0.957039753513901140,\t-0.957054250154519730,\t-0.957068744402502890,\t-0.957083236257814000,\t\n-0.957097725720417070,\t-0.957112212790275700,\t-0.957126697467353900,\t-0.957141179751615280,\t-0.957155659643024070,\t-0.957170137141543420,\t-0.957184612247137360,\t-0.957199084959769800,\t\n-0.957213555279404550,\t-0.957228023206005420,\t-0.957242488739536210,\t-0.957256951879960740,\t-0.957271412627243020,\t-0.957285870981346880,\t-0.957300326942235880,\t-0.957314780509874060,\t\n-0.957329231684225230,\t-0.957343680465253420,\t-0.957358126852922320,\t-0.957372570847196290,\t-0.957387012448038480,\t-0.957401451655413130,\t-0.957415888469284160,\t-0.957430322889615490,\t\n-0.957444754916370930,\t-0.957459184549514620,\t-0.957473611789010250,\t-0.957488036634821850,\t-0.957502459086913450,\t-0.957516879145249080,\t-0.957531296809792320,\t-0.957545712080507210,\t\n-0.957560124957357870,\t-0.957574535440308240,\t-0.957588943529322560,\t-0.957603349224364190,\t-0.957617752525397490,\t-0.957632153432386390,\t-0.957646551945295020,\t-0.957660948064087080,\t\n-0.957675341788726930,\t-0.957689733119178380,\t-0.957704122055405450,\t-0.957718508597372180,\t-0.957732892745043030,\t-0.957747274498381260,\t-0.957761653857351350,\t-0.957776030821917310,\t\n-0.957790405392043300,\t-0.957804777567693110,\t-0.957819147348831330,\t-0.957833514735421440,\t-0.957847879727427690,\t-0.957862242324814210,\t-0.957876602527545250,\t-0.957890960335584740,\t\n-0.957905315748896810,\t-0.957919668767445610,\t-0.957934019391195160,\t-0.957948367620110040,\t-0.957962713454153620,\t-0.957977056893290490,\t-0.957991397937484780,\t-0.958005736586700410,\t\n-0.958020072840901850,\t-0.958034406700053240,\t-0.958048738164118510,\t-0.958063067233061780,\t-0.958077393906847540,\t-0.958091718185439700,\t-0.958106040068802620,\t-0.958120359556900340,\t\n-0.958134676649697310,\t-0.958148991347157470,\t-0.958163303649245510,\t-0.958177613555924900,\t-0.958191921067160330,\t-0.958206226182916070,\t-0.958220528903156120,\t-0.958234829227844860,\t\n-0.958249127156946770,\t-0.958263422690425640,\t-0.958277715828245950,\t-0.958292006570371950,\t-0.958306294916767890,\t-0.958320580867398240,\t-0.958334864422227040,\t-0.958349145581218640,\t\n-0.958363424344337410,\t-0.958377700711547710,\t-0.958391974682813900,\t-0.958406246258099890,\t-0.958420515437370390,\t-0.958434782220589530,\t-0.958449046607721680,\t-0.958463308598731520,\t\n-0.958477568193582760,\t-0.958491825392240090,\t-0.958506080194667990,\t-0.958520332600830580,\t-0.958534582610692350,\t-0.958548830224217660,\t-0.958563075441370870,\t-0.958577318262116450,\t\n-0.958591558686418770,\t-0.958605796714242290,\t-0.958620032345551150,\t-0.958634265580309950,\t-0.958648496418483150,\t-0.958662724860035010,\t-0.958676950904930100,\t-0.958691174553133020,\t\n-0.958705395804607790,\t-0.958719614659319100,\t-0.958733831117231320,\t-0.958748045178309030,\t-0.958762256842516590,\t-0.958776466109818480,\t-0.958790672980179170,\t-0.958804877453563240,\t\n-0.958819079529935390,\t-0.958833279209259540,\t-0.958847476491500590,\t-0.958861671376622820,\t-0.958875863864590890,\t-0.958890053955369410,\t-0.958904241648922960,\t-0.958918426945215670,\t\n-0.958932609844212360,\t-0.958946790345877380,\t-0.958960968450175530,\t-0.958975144157071300,\t-0.958989317466529160,\t-0.959003488378513680,\t-0.959017656892989570,\t-0.959031823009921510,\t\n-0.959045986729273660,\t-0.959060148051010810,\t-0.959074306975097660,\t-0.959088463501498680,\t-0.959102617630178570,\t-0.959116769361102240,\t-0.959130918694233610,\t-0.959145065629537720,\t\n-0.959159210166979250,\t-0.959173352306522680,\t-0.959187492048132690,\t-0.959201629391774000,\t-0.959215764337411290,\t-0.959229896885009150,\t-0.959244027034532270,\t-0.959258154785945560,\t\n-0.959272280139213170,\t-0.959286403094300130,\t-0.959300523651171020,\t-0.959314641809790650,\t-0.959328757570123920,\t-0.959342870932135110,\t-0.959356981895789110,\t-0.959371090461050620,\t\n-0.959385196627884350,\t-0.959399300396255090,\t-0.959413401766127660,\t-0.959427500737466740,\t-0.959441597310237040,\t-0.959455691484403240,\t-0.959469783259930600,\t-0.959483872636783250,\t\n-0.959497959614926120,\t-0.959512044194324120,\t-0.959526126374942060,\t-0.959540206156744620,\t-0.959554283539696960,\t-0.959568358523763320,\t-0.959582431108908840,\t-0.959596501295098210,\t\n-0.959610569082296360,\t-0.959624634470468090,\t-0.959638697459578300,\t-0.959652758049591710,\t-0.959666816240473230,\t-0.959680872032187880,\t-0.959694925424700140,\t-0.959708976417975150,\t\n-0.959723025011977700,\t-0.959737071206672620,\t-0.959751115002024920,\t-0.959765156397999640,\t-0.959779195394561360,\t-0.959793231991674880,\t-0.959807266189305450,\t-0.959821297987417890,\t\n-0.959835327385976990,\t-0.959849354384947780,\t-0.959863378984295300,\t-0.959877401183984240,\t-0.959891420983979950,\t-0.959905438384246910,\t-0.959919453384750270,\t-0.959933465985454930,\t\n-0.959947476186326030,\t-0.959961483987328280,\t-0.959975489388427250,\t-0.959989492389587080,\t-0.960003492990773370,\t-0.960017491191950790,\t-0.960031486993084490,\t-0.960045480394139510,\t\n-0.960059471395080850,\t-0.960073459995873460,\t-0.960087446196482450,\t-0.960101429996872760,\t-0.960115411397009840,\t-0.960129390396858070,\t-0.960143366996382920,\t-0.960157341195549300,\t\n-0.960171312994322350,\t-0.960185282392667320,\t-0.960199249390548790,\t-0.960213213987932250,\t-0.960227176184782590,\t-0.960241135981064970,\t-0.960255093376744640,\t-0.960269048371786500,\t\n-0.960283000966155710,\t-0.960296951159817500,\t-0.960310898952736800,\t-0.960324844344879190,\t-0.960338787336209250,\t-0.960352727926692240,\t-0.960366666116293400,\t-0.960380601904977980,\t\n-0.960394535292711020,\t-0.960408466279457970,\t-0.960422394865183550,\t-0.960436321049853100,\t-0.960450244833431890,\t-0.960464166215885040,\t-0.960478085197177700,\t-0.960492001777275230,\t\n-0.960505915956142760,\t-0.960519827733745560,\t-0.960533737110048860,\t-0.960547644085017690,\t-0.960561548658617430,\t-0.960575450830813300,\t-0.960589350601570470,\t-0.960603247970854280,\t\n-0.960617142938630320,\t-0.960631035504863060,\t-0.960644925669518420,\t-0.960658813432561320,\t-0.960672698793957220,\t-0.960686581753671390,\t-0.960700462311669170,\t-0.960714340467915710,\t\n-0.960728216222376470,\t-0.960742089575016830,\t-0.960755960525801810,\t-0.960769829074696880,\t-0.960783695221667290,\t-0.960797558966678510,\t-0.960811420309695910,\t-0.960825279250684950,\t\n-0.960839135789610550,\t-0.960852989926438310,\t-0.960866841661133560,\t-0.960880690993661690,\t-0.960894537923988160,\t-0.960908382452078320,\t-0.960922224577897440,\t-0.960936064301410990,\t\n-0.960949901622584420,\t-0.960963736541383340,\t-0.960977569057772760,\t-0.960991399171718160,\t-0.961005226883185020,\t-0.961019052192138900,\t-0.961032875098545400,\t-0.961046695602369440,\t\n-0.961060513703576700,\t-0.961074329402132670,\t-0.961088142698002910,\t-0.961101953591152690,\t-0.961115762081547700,\t-0.961129568169153180,\t-0.961143371853934840,\t-0.961157173135858020,\t\n-0.961170972014888550,\t-0.961184768490991330,\t-0.961198562564132280,\t-0.961212354234276760,\t-0.961226143501390350,\t-0.961239930365438640,\t-0.961253714826387330,\t-0.961267496884201430,\t\n-0.961281276538846870,\t-0.961295053790289120,\t-0.961308828638493650,\t-0.961322601083426150,\t-0.961336371125052210,\t-0.961350138763337300,\t-0.961363903998247000,\t-0.961377666829747230,\t\n-0.961391427257803020,\t-0.961405185282380280,\t-0.961418940903444600,\t-0.961432694120961440,\t-0.961446444934896730,\t-0.961460193345216040,\t-0.961473939351884630,\t-0.961487682954868310,\t\n-0.961501424154132870,\t-0.961515162949643900,\t-0.961528899341366980,\t-0.961542633329267820,\t-0.961556364913312090,\t-0.961570094093465390,\t-0.961583820869693740,\t-0.961597545241962280,\t\n-0.961611267210236930,\t-0.961624986774483490,\t-0.961638703934667550,\t-0.961652418690754800,\t-0.961666131042711260,\t-0.961679840990502190,\t-0.961693548534093500,\t-0.961707253673451000,\t\n-0.961720956408540270,\t-0.961734656739327230,\t-0.961748354665777460,\t-0.961762050187856880,\t-0.961775743305531170,\t-0.961789434018766040,\t-0.961803122327527630,\t-0.961816808231781170,\t\n-0.961830491731492600,\t-0.961844172826627930,\t-0.961857851517152750,\t-0.961871527803033200,\t-0.961885201684234640,\t-0.961898873160722980,\t-0.961912542232464250,\t-0.961926208899424040,\t\n-0.961939873161568370,\t-0.961953535018863050,\t-0.961967194471273880,\t-0.961980851518766670,\t-0.961994506161307330,\t-0.962008158398862000,\t-0.962021808231396050,\t-0.962035455658875600,\t\n-0.962049100681266480,\t-0.962062743298534580,\t-0.962076383510645840,\t-0.962090021317566380,\t-0.962103656719261680,\t-0.962117289715697770,\t-0.962130920306840660,\t-0.962144548492656290,\t\n-0.962158174273110460,\t-0.962171797648169290,\t-0.962185418617798600,\t-0.962199037181964310,\t-0.962212653340632770,\t-0.962226267093769240,\t-0.962239878441340070,\t-0.962253487383311290,\t\n-0.962267093919648710,\t-0.962280698050318460,\t-0.962294299775286580,\t-0.962307899094518860,\t-0.962321496007981340,\t-0.962335090515640030,\t-0.962348682617460980,\t-0.962362272313410320,\t\n-0.962375859603453950,\t-0.962389444487557920,\t-0.962403026965688250,\t-0.962416607037811290,\t-0.962430184703892520,\t-0.962443759963898420,\t-0.962457332817794780,\t-0.962470903265547850,\t\n-0.962484471307123670,\t-0.962498036942488590,\t-0.962511600171608080,\t-0.962525160994448630,\t-0.962538719410976350,\t-0.962552275421157180,\t-0.962565829024957350,\t-0.962579380222342910,\t\n-0.962592929013280090,\t-0.962606475397734920,\t-0.962620019375673540,\t-0.962633560947062320,\t-0.962647100111867050,\t-0.962660636870053990,\t-0.962674171221589270,\t-0.962687703166439150,\t\n-0.962701232704570090,\t-0.962714759835947680,\t-0.962728284560538380,\t-0.962741806878308350,\t-0.962755326789223710,\t-0.962768844293250940,\t-0.962782359390355950,\t-0.962795872080504990,\t\n-0.962809382363664420,\t-0.962822890239800500,\t-0.962836395708879470,\t-0.962849898770867240,\t-0.962863399425730290,\t-0.962876897673434760,\t-0.962890393513947120,\t-0.962903886947233610,\t\n-0.962917377973260160,\t-0.962930866591993340,\t-0.962944352803399290,\t-0.962957836607444380,\t-0.962971318004094970,\t-0.962984796993317070,\t-0.962998273575077390,\t-0.963011747749341840,\t\n-0.963025219516077000,\t-0.963038688875249350,\t-0.963052155826824800,\t-0.963065620370769810,\t-0.963079082507050770,\t-0.963092542235634010,\t-0.963105999556485900,\t-0.963119454469573030,\t\n-0.963132906974861310,\t-0.963146357072317330,\t-0.963159804761907430,\t-0.963173250043597990,\t-0.963186692917355480,\t-0.963200133383146140,\t-0.963213571440936560,\t-0.963227007090692980,\t\n-0.963240440332382210,\t-0.963253871165970050,\t-0.963267299591423210,\t-0.963280725608708140,\t-0.963294149217791330,\t-0.963307570418639010,\t-0.963320989211218110,\t-0.963334405595494440,\t\n-0.963347819571434780,\t-0.963361231139005510,\t-0.963374640298173210,\t-0.963388047048904350,\t-0.963401451391165400,\t-0.963414853324922720,\t-0.963428252850142890,\t-0.963441649966792490,\t\n-0.963455044674838220,\t-0.963468436974246110,\t-0.963481826864982850,\t-0.963495214347015020,\t-0.963508599420309200,\t-0.963521982084832200,\t-0.963535362340549820,\t-0.963548740187429200,\t\n-0.963562115625436590,\t-0.963575488654538790,\t-0.963588859274702280,\t-0.963602227485893530,\t-0.963615593288079220,\t-0.963628956681226060,\t-0.963642317665300400,\t-0.963655676240269150,\t\n-0.963669032406098580,\t-0.963682386162755370,\t-0.963695737510206210,\t-0.963709086448417680,\t-0.963722432977356600,\t-0.963735777096989320,\t-0.963749118807282650,\t-0.963762458108203050,\t\n-0.963775794999717330,\t-0.963789129481792180,\t-0.963802461554394200,\t-0.963815791217490060,\t-0.963829118471046350,\t-0.963842443315029880,\t-0.963855765749407680,\t-0.963869085774145650,\t\n-0.963882403389211050,\t-0.963895718594570350,\t-0.963909031390190350,\t-0.963922341776037860,\t-0.963935649752079680,\t-0.963948955318282060,\t-0.963962258474612140,\t-0.963975559221036620,\t\n-0.963988857557522170,\t-0.964002153484035620,\t-0.964015447000543650,\t-0.964028738107012950,\t-0.964042026803410560,\t-0.964055313089703270,\t-0.964068596965857450,\t-0.964081878431840230,\t\n-0.964095157487618200,\t-0.964108434133158280,\t-0.964121708368427370,\t-0.964134980193392390,\t-0.964148249608019700,\t-0.964161516612276340,\t-0.964174781206129320,\t-0.964188043389545220,\t\n-0.964201303162491090,\t-0.964214560524933710,\t-0.964227815476839890,\t-0.964241068018176550,\t-0.964254318148910720,\t-0.964267565869008860,\t-0.964280811178438110,\t-0.964294054077165400,\t\n-0.964307294565157510,\t-0.964320532642381380,\t-0.964333768308804130,\t-0.964347001564392240,\t-0.964360232409112840,\t-0.964373460842932960,\t-0.964386686865819300,\t-0.964399910477738990,\t\n-0.964413131678658830,\t-0.964426350468545970,\t-0.964439566847367090,\t-0.964452780815089340,\t-0.964465992371679960,\t-0.964479201517105310,\t-0.964492408251332640,\t-0.964505612574328870,\t\n-0.964518814486061250,\t-0.964532013986496680,\t-0.964545211075601870,\t-0.964558405753344060,\t-0.964571598019690280,\t-0.964584787874607440,\t-0.964597975318062680,\t-0.964611160350022920,\t\n-0.964624342970455300,\t-0.964637523179326830,\t-0.964650700976604550,\t-0.964663876362255700,\t-0.964677049336246980,\t-0.964690219898545640,\t-0.964703388049118700,\t-0.964716553787933310,\t\n-0.964729717114956590,\t-0.964742878030155790,\t-0.964756036533497510,\t-0.964769192624949200,\t-0.964782346304477790,\t-0.964795497572050630,\t-0.964808646427634750,\t-0.964821792871197180,\t\n-0.964834936902705160,\t-0.964848078522125840,\t-0.964861217729426460,\t-0.964874354524573820,\t-0.964887488907535400,\t-0.964900620878278100,\t-0.964913750436769410,\t-0.964926877582976240,\t\n-0.964940002316866160,\t-0.964953124638405770,\t-0.964966244547562630,\t-0.964979362044303900,\t-0.964992477128596700,\t-0.965005589800408290,\t-0.965018700059706020,\t-0.965031807906456930,\t\n-0.965044913340628360,\t-0.965058016362187690,\t-0.965071116971101710,\t-0.965084215167338000,\t-0.965097310950863820,\t-0.965110404321646190,\t-0.965123495279652690,\t-0.965136583824850680,\t\n-0.965149669957206860,\t-0.965162753676689020,\t-0.965175834983264200,\t-0.965188913876899870,\t-0.965201990357563160,\t-0.965215064425221540,\t-0.965228136079842150,\t-0.965241205321392570,\t\n-0.965254272149839940,\t-0.965267336565151850,\t-0.965280398567295080,\t-0.965293458156237460,\t-0.965306515331946110,\t-0.965319570094388510,\t-0.965332622443532240,\t-0.965345672379344100,\t\n-0.965358719901791900,\t-0.965371765010842760,\t-0.965384807706464290,\t-0.965397847988623830,\t-0.965410885857288740,\t-0.965423921312426380,\t-0.965436954354004230,\t-0.965449984981989750,\t\n-0.965463013196350420,\t-0.965476038997053480,\t-0.965489062384066400,\t-0.965502083357356540,\t-0.965515101916891600,\t-0.965528118062638830,\t-0.965541131794566130,\t-0.965554143112640210,\t\n-0.965567152016829080,\t-0.965580158507099990,\t-0.965593162583420430,\t-0.965606164245758070,\t-0.965619163494080280,\t-0.965632160328354530,\t-0.965645154748548510,\t-0.965658146754629690,\t\n-0.965671136346565320,\t-0.965684123524323090,\t-0.965697108287870590,\t-0.965710090637175280,\t-0.965723070572204860,\t-0.965736048092926900,\t-0.965749023199308550,\t-0.965761995891317730,\t\n-0.965774966168921890,\t-0.965787934032088620,\t-0.965800899480785510,\t-0.965813862514980140,\t-0.965826823134640190,\t-0.965839781339733140,\t-0.965852737130226790,\t-0.965865690506088500,\t\n-0.965878641467285860,\t-0.965891590013786660,\t-0.965904536145558490,\t-0.965917479862569040,\t-0.965930421164786110,\t-0.965943360052176850,\t-0.965956296524709160,\t-0.965969230582350740,\t\n-0.965982162225069270,\t-0.965995091452832470,\t-0.966008018265607890,\t-0.966020942663363250,\t-0.966033864646066220,\t-0.966046784213684510,\t-0.966059701366186130,\t-0.966072616103538230,\t\n-0.966085528425708830,\t-0.966098438332665620,\t-0.966111345824376300,\t-0.966124250900808780,\t-0.966137153561930530,\t-0.966150053807709350,\t-0.966162951638112940,\t-0.966175847053109220,\t\n-0.966188740052665860,\t-0.966201630636750690,\t-0.966214518805331490,\t-0.966227404558375860,\t-0.966240287895851810,\t-0.966253168817727270,\t-0.966266047323969590,\t-0.966278923414546800,\t\n-0.966291797089426590,\t-0.966304668348576980,\t-0.966317537191965670,\t-0.966330403619560800,\t-0.966343267631329610,\t-0.966356129227240350,\t-0.966368988407260710,\t-0.966381845171358610,\t\n-0.966394699519501850,\t-0.966407551451658350,\t-0.966420400967796020,\t-0.966433248067882670,\t-0.966446092751886420,\t-0.966458935019774760,\t-0.966471774871515700,\t-0.966484612307077270,\t\n-0.966497447326427280,\t-0.966510279929533640,\t-0.966523110116364490,\t-0.966535937886887410,\t-0.966548763241070530,\t-0.966561586178881660,\t-0.966574406700288820,\t-0.966587224805259940,\t\n-0.966600040493763140,\t-0.966612853765766110,\t-0.966625664621237000,\t-0.966638473060143940,\t-0.966651279082454410,\t-0.966664082688136750,\t-0.966676883877158890,\t-0.966689682649488850,\t\n-0.966702479005094540,\t-0.966715272943944330,\t-0.966728064466005680,\t-0.966740853571246840,\t-0.966753640259635840,\t-0.966766424531140810,\t-0.966779206385729670,\t-0.966791985823370560,\t\n-0.966804762844031380,\t-0.966817537447680400,\t-0.966830309634285510,\t-0.966843079403815200,\t-0.966855846756236810,\t-0.966868611691518940,\t-0.966881374209629390,\t-0.966894134310536500,\t\n-0.966906891994208540,\t-0.966919647260613080,\t-0.966932400109718480,\t-0.966945150541492880,\t-0.966957898555904420,\t-0.966970644152921220,\t-0.966983387332511430,\t-0.966996128094643080,\t\n-0.967008866439284520,\t-0.967021602366403780,\t-0.967034335875969210,\t-0.967047066967948620,\t-0.967059795642310260,\t-0.967072521899022490,\t-0.967085245738053430,\t-0.967097967159371240,\t\n-0.967110686162944380,\t-0.967123402748740530,\t-0.967136116916728290,\t-0.967148828666875680,\t-0.967161537999150940,\t-0.967174244913522440,\t-0.967186949409958310,\t-0.967199651488426790,\t\n-0.967212351148896140,\t-0.967225048391334830,\t-0.967237743215710650,\t-0.967250435621992200,\t-0.967263125610147600,\t-0.967275813180145110,\t-0.967288498331953180,\t-0.967301181065540310,\t\n-0.967313861380874160,\t-0.967326539277923340,\t-0.967339214756656180,\t-0.967351887817041070,\t-0.967364558459046120,\t-0.967377226682639810,\t-0.967389892487790500,\t-0.967402555874466440,\t\n-0.967415216842636210,\t-0.967427875392267710,\t-0.967440531523329430,\t-0.967453185235789940,\t-0.967465836529617480,\t-0.967478485404780320,\t-0.967491131861247240,\t-0.967503775898986170,\t\n-0.967516417517965580,\t-0.967529056718154030,\t-0.967541693499519790,\t-0.967554327862031220,\t-0.967566959805656990,\t-0.967579589330365250,\t-0.967592216436124590,\t-0.967604841122903350,\t\n-0.967617463390670230,\t-0.967630083239393370,\t-0.967642700669041120,\t-0.967655315679582180,\t-0.967667928270985020,\t-0.967680538443218110,\t-0.967693146196249800,\t-0.967705751530048560,\t\n-0.967718354444582870,\t-0.967730954939821420,\t-0.967743553015732450,\t-0.967756148672284660,\t-0.967768741909446510,\t-0.967781332727186470,\t-0.967793921125473130,\t-0.967806507104275290,\t\n-0.967819090663560870,\t-0.967831671803298770,\t-0.967844250523457350,\t-0.967856826824005420,\t-0.967869400704911450,\t-0.967881972166144130,\t-0.967894541207671710,\t-0.967907107829462990,\t\n-0.967919672031486320,\t-0.967932233813710630,\t-0.967944793176104270,\t-0.967957350118636040,\t-0.967969904641274300,\t-0.967982456743987860,\t-0.967995006426745520,\t-0.968007553689515410,\t\n-0.968020098532266450,\t-0.968032640954967220,\t-0.968045180957586400,\t-0.968057718540092590,\t-0.968070253702454700,\t-0.968082786444640960,\t-0.968095316766620310,\t-0.968107844668361310,\t\n-0.968120370149832770,\t-0.968132893211003260,\t-0.968145413851841500,\t-0.968157932072316260,\t-0.968170447872396140,\t-0.968182961252050170,\t-0.968195472211246580,\t-0.968207980749954180,\t\n-0.968220486868141990,\t-0.968232990565778500,\t-0.968245491842832600,\t-0.968257990699273100,\t-0.968270487135068470,\t-0.968282981150187630,\t-0.968295472744599260,\t-0.968307961918272290,\t\n-0.968320448671175390,\t-0.968332933003277270,\t-0.968345414914546950,\t-0.968357894404953010,\t-0.968370371474464360,\t-0.968382846123050030,\t-0.968395318350678380,\t-0.968407788157318430,\t\n-0.968420255542938980,\t-0.968432720507508950,\t-0.968445183050997250,\t-0.968457643173372460,\t-0.968470100874603500,\t-0.968482556154659280,\t-0.968495009013508710,\t-0.968507459451120600,\t\n-0.968519907467463750,\t-0.968532353062507290,\t-0.968544796236219920,\t-0.968557236988570440,\t-0.968569675319528200,\t-0.968582111229061570,\t-0.968594544717139570,\t-0.968606975783731230,\t\n-0.968619404428805450,\t-0.968631830652331270,\t-0.968644254454277600,\t-0.968656675834613120,\t-0.968669094793306980,\t-0.968681511330328090,\t-0.968693925445645370,\t-0.968706337139227940,\t\n-0.968718746411044500,\t-0.968731153261064290,\t-0.968743557689256240,\t-0.968755959695589470,\t-0.968768359280032580,\t-0.968780756442554900,\t-0.968793151183125150,\t-0.968805543501712660,\t\n-0.968817933398286260,\t-0.968830320872815180,\t-0.968842705925268220,\t-0.968855088555614420,\t-0.968867468763822900,\t-0.968879846549862700,\t-0.968892221913702830,\t-0.968904594855312550,\t\n-0.968916965374660650,\t-0.968929333471716390,\t-0.968941699146449010,\t-0.968954062398827200,\t-0.968966423228820210,\t-0.968978781636397170,\t-0.968991137621527110,\t-0.969003491184179280,\t\n-0.969015842324322920,\t-0.969028191041926720,\t-0.969040537336960050,\t-0.969052881209392040,\t-0.969065222659191820,\t-0.969077561686328530,\t-0.969089898290771410,\t-0.969102232472489500,\t\n-0.969114564231452040,\t-0.969126893567628040,\t-0.969139220480987220,\t-0.969151544971498020,\t-0.969163867039129930,\t-0.969176186683852190,\t-0.969188503905634050,\t-0.969200818704444860,\t\n-0.969213131080253310,\t-0.969225441033028990,\t-0.969237748562741140,\t-0.969250053669358790,\t-0.969262356352851410,\t-0.969274656613188010,\t-0.969286954450338080,\t-0.969299249864270740,\t\n-0.969311542854955350,\t-0.969323833422361170,\t-0.969336121566457320,\t-0.969348407287213050,\t-0.969360690584597840,\t-0.969372971458580920,\t-0.969385249909131550,\t-0.969397525936219310,\t\n-0.969409799539812990,\t-0.969422070719882180,\t-0.969434339476396120,\t-0.969446605809324290,\t-0.969458869718635930,\t-0.969471131204300400,\t-0.969483390266287050,\t-0.969495646904565240,\t\n-0.969507901119104450,\t-0.969520152909873810,\t-0.969532402276842680,\t-0.969544649219980630,\t-0.969556893739256910,\t-0.969569135834640990,\t-0.969581375506102460,\t-0.969593612753610220,\t\n-0.969605847577133970,\t-0.969618079976643070,\t-0.969630309952106970,\t-0.969642537503495160,\t-0.969654762630776990,\t-0.969666985333921930,\t-0.969679205612899330,\t-0.969691423467679000,\t\n-0.969703638898229860,\t-0.969715851904521590,\t-0.969728062486523770,\t-0.969740270644205760,\t-0.969752476377537030,\t-0.969764679686487390,\t-0.969776880571025850,\t-0.969789079031122100,\t\n-0.969801275066745630,\t-0.969813468677865890,\t-0.969825659864452570,\t-0.969837848626475150,\t-0.969850034963902980,\t-0.969862218876705870,\t-0.969874400364853060,\t-0.969886579428314580,\t\n-0.969898756067059330,\t-0.969910930281057350,\t-0.969923102070277880,\t-0.969935271434690720,\t-0.969947438374265670,\t-0.969959602888971760,\t-0.969971764978778790,\t-0.969983924643656460,\t\n-0.969996081883574330,\t-0.970008236698501890,\t-0.970020389088408930,\t-0.970032539053265030,\t-0.970044686593039770,\t-0.970056831707702850,\t-0.970068974397223950,\t-0.970081114661572430,\t\n-0.970093252500718210,\t-0.970105387914630750,\t-0.970117520903279850,\t-0.970129651466635210,\t-0.970141779604666520,\t-0.970153905317343360,\t-0.970166028604635300,\t-0.970178149466512150,\t\n-0.970190267902943710,\t-0.970202383913899570,\t-0.970214497499349400,\t-0.970226608659263130,\t-0.970238717393610230,\t-0.970250823702360820,\t-0.970262927585484050,\t-0.970275029042950040,\t\n-0.970287128074728500,\t-0.970299224680789000,\t-0.970311318861101560,\t-0.970323410615635980,\t-0.970335499944361630,\t-0.970347586847248640,\t-0.970359671324266590,\t-0.970371753375385390,\t\n-0.970383833000574740,\t-0.970395910199804650,\t-0.970407984973044700,\t-0.970420057320264710,\t-0.970432127241434910,\t-0.970444194736524550,\t-0.970456259805503650,\t-0.970468322448342140,\t\n-0.970480382665009910,\t-0.970492440455476670,\t-0.970504495819712430,\t-0.970516548757686890,\t-0.970528599269369850,\t-0.970540647354731440,\t-0.970552693013741360,\t-0.970564736246369520,\t\n-0.970576777052585830,\t-0.970588815432360200,\t-0.970600851385662540,\t-0.970612884912462780,\t-0.970624916012731040,\t-0.970636944686436800,\t-0.970648970933550180,\t-0.970660994754041110,\t\n-0.970673016147879490,\t-0.970685035115035680,\t-0.970697051655479040,\t-0.970709065769179700,\t-0.970721077456107690,\t-0.970733086716233040,\t-0.970745093549525650,\t-0.970757097955955550,\t\n-0.970769099935492760,\t-0.970781099488107090,\t-0.970793096613768780,\t-0.970805091312447850,\t-0.970817083584114120,\t-0.970829073428737590,\t-0.970841060846288300,\t-0.970853045836736480,\t\n-0.970865028400052180,\t-0.970877008536205180,\t-0.970888986245165620,\t-0.970900961526903530,\t-0.970912934381389150,\t-0.970924904808592390,\t-0.970936872808483290,\t-0.970948838381032080,\t\n-0.970960801526208780,\t-0.970972762243983430,\t-0.970984720534326500,\t-0.970996676397207440,\t-0.971008629832596730,\t-0.971020580840464500,\t-0.971032529420780670,\t-0.971044475573515700,\t\n-0.971056419298639620,\t-0.971068360596122340,\t-0.971080299465934100,\t-0.971092235908045160,\t-0.971104169922425650,\t-0.971116101509045700,\t-0.971128030667875450,\t-0.971139957398885150,\t\n-0.971151881702045030,\t-0.971163803577325350,\t-0.971175723024695900,\t-0.971187640044127280,\t-0.971199554635589490,\t-0.971211466799052790,\t-0.971223376534487430,\t-0.971235283841863860,\t\n-0.971247188721151790,\t-0.971259091172321900,\t-0.971270991195344210,\t-0.971282888790188980,\t-0.971294783956826560,\t-0.971306676695227190,\t-0.971318567005361120,\t-0.971330454887198710,\t\n-0.971342340340710320,\t-0.971354223365865850,\t-0.971366103962635900,\t-0.971377982130990580,\t-0.971389857870900380,\t-0.971401731182335530,\t-0.971413602065266500,\t-0.971425470519663330,\t\n-0.971437336545496470,\t-0.971449200142736170,\t-0.971461061311353010,\t-0.971472920051317130,\t-0.971484776362598890,\t-0.971496630245168860,\t-0.971508481698997170,\t-0.971520330724054190,\t\n-0.971532177320310720,\t-0.971544021487736550,\t-0.971555863226302390,\t-0.971567702535978460,\t-0.971579539416735360,\t-0.971591373868543660,\t-0.971603205891373170,\t-0.971615035485194790,\t\n-0.971626862649978770,\t-0.971638687385695590,\t-0.971650509692315700,\t-0.971662329569809580,\t-0.971674147018147580,\t-0.971685962037300180,\t-0.971697774627237940,\t-0.971709584787931460,\t\n-0.971721392519350860,\t-0.971733197821466720,\t-0.971745000694249630,\t-0.971756801137669930,\t-0.971768599151698330,\t-0.971780394736305400,\t-0.971792187891461270,\t-0.971803978617136740,\t\n-0.971815766913302180,\t-0.971827552779928270,\t-0.971839336216985370,\t-0.971851117224444280,\t-0.971862895802275250,\t-0.971874671950449080,\t-0.971886445668936450,\t-0.971898216957707390,\t\n-0.971909985816732940,\t-0.971921752245983430,\t-0.971933516245429560,\t-0.971945277815041810,\t-0.971957036954791190,\t-0.971968793664647720,\t-0.971980547944582330,\t-0.971992299794565470,\t\n-0.972004049214567960,\t-0.972015796204560250,\t-0.972027540764513140,\t-0.972039282894397120,\t-0.972051022594182860,\t-0.972062759863841270,\t-0.972074494703342620,\t-0.972086227112657690,\t\n-0.972097957091757170,\t-0.972109684640611870,\t-0.972121409759192260,\t-0.972133132447469350,\t-0.972144852705413400,\t-0.972156570532995310,\t-0.972168285930185780,\t-0.972179998896955610,\t\n-0.972191709433275380,\t-0.972203417539115880,\t-0.972215123214447920,\t-0.972226826459242080,\t-0.972238527273469160,\t-0.972250225657100180,\t-0.972261921610105380,\t-0.972273615132455800,\t\n-0.972285306224122130,\t-0.972296994885075260,\t-0.972308681115286120,\t-0.972320364914725070,\t-0.972332046283363010,\t-0.972343725221170960,\t-0.972355401728119520,\t-0.972367075804179580,\t\n-0.972378747449321960,\t-0.972390416663517550,\t-0.972402083446736950,\t-0.972413747798951290,\t-0.972425409720131360,\t-0.972437069210247750,\t-0.972448726269271480,\t-0.972460380897173350,\t\n-0.972472033093924270,\t-0.972483682859495160,\t-0.972495330193857030,\t-0.972506975096980360,\t-0.972518617568836290,\t-0.972530257609395600,\t-0.972541895218629330,\t-0.972553530396508270,\t\n-0.972565163143003450,\t-0.972576793458085680,\t-0.972588421341725850,\t-0.972600046793895330,\t-0.972611669814564370,\t-0.972623290403704320,\t-0.972634908561285980,\t-0.972646524287280380,\t\n-0.972658137581658530,\t-0.972669748444391470,\t-0.972681356875449880,\t-0.972692962874804780,\t-0.972704566442427420,\t-0.972716167578288600,\t-0.972727766282359350,\t-0.972739362554610690,\t\n-0.972750956395013630,\t-0.972762547803539210,\t-0.972774136780158560,\t-0.972785723324842370,\t-0.972797307437561880,\t-0.972808889118288110,\t-0.972820468366992210,\t-0.972832045183645080,\t\n-0.972843619568217970,\t-0.972855191520681670,\t-0.972866761041007440,\t-0.972878328129166300,\t-0.972889892785129270,\t-0.972901455008867490,\t-0.972913014800352190,\t-0.972924572159554300,\t\n-0.972936127086444950,\t-0.972947679580995260,\t-0.972959229643176600,\t-0.972970777272959660,\t-0.972982322470315800,\t-0.972993865235216140,\t-0.973005405567631820,\t-0.973016943467534200,\t\n-0.973028478934893970,\t-0.973040011969682590,\t-0.973051542571871210,\t-0.973063070741430950,\t-0.973074596478332940,\t-0.973086119782548440,\t-0.973097640654048690,\t-0.973109159092804820,\t\n-0.973120675098788080,\t-0.973132188671969930,\t-0.973143699812320960,\t-0.973155208519812850,\t-0.973166714794416630,\t-0.973178218636103650,\t-0.973189720044845160,\t-0.973201219020612520,\t\n-0.973212715563376740,\t-0.973224209673109080,\t-0.973235701349780880,\t-0.973247190593363510,\t-0.973258677403828100,\t-0.973270161781146000,\t-0.973281643725288470,\t-0.973293123236226850,\t\n-0.973304600313932620,\t-0.973316074958376800,\t-0.973327547169530630,\t-0.973339016947365690,\t-0.973350484291853220,\t-0.973361949202964480,\t-0.973373411680671040,\t-0.973384871724943920,\t\n-0.973396329335754600,\t-0.973407784513074530,\t-0.973419237256874960,\t-0.973430687567127250,\t-0.973442135443802870,\t-0.973453580886873170,\t-0.973465023896309510,\t-0.973476464472083470,\t\n-0.973487902614166070,\t-0.973499338322528880,\t-0.973510771597143390,\t-0.973522202437980930,\t-0.973533630845012990,\t-0.973545056818211130,\t-0.973556480357546490,\t-0.973567901462990660,\t\n-0.973579320134515090,\t-0.973590736372091150,\t-0.973602150175690410,\t-0.973613561545284220,\t-0.973624970480844290,\t-0.973636376982341730,\t-0.973647781049748360,\t-0.973659182683035750,\t\n-0.973670581882174920,\t-0.973681978647137680,\t-0.973693372977895490,\t-0.973704764874419810,\t-0.973716154336682460,\t-0.973727541364654560,\t-0.973738925958307800,\t-0.973750308117613650,\t\n-0.973761687842543800,\t-0.973773065133069720,\t-0.973784439989162980,\t-0.973795812410795160,\t-0.973807182397937730,\t-0.973818549950562380,\t-0.973829915068640920,\t-0.973841277752144350,\t\n-0.973852638001044710,\t-0.973863995815313350,\t-0.973875351194922080,\t-0.973886704139842460,\t-0.973898054650046310,\t-0.973909402725504750,\t-0.973920748366189690,\t-0.973932091572072720,\t\n-0.973943432343125530,\t-0.973954770679319790,\t-0.973966106580627210,\t-0.973977440047019250,\t-0.973988771078467710,\t-0.974000099674944500,\t-0.974011425836420750,\t-0.974022749562868500,\t\n-0.974034070854259300,\t-0.974045389710565090,\t-0.974056706131757210,\t-0.974068020117807910,\t-0.974079331668688320,\t-0.974090640784370350,\t-0.974101947464825810,\t-0.974113251710026380,\t\n-0.974124553519943870,\t-0.974135852894549960,\t-0.974147149833816450,\t-0.974158444337715030,\t-0.974169736406217620,\t-0.974181026039295790,\t-0.974192313236921350,\t-0.974203597999066080,\t\n-0.974214880325701920,\t-0.974226160216800530,\t-0.974237437672333950,\t-0.974248712692273530,\t-0.974259985276591300,\t-0.974271255425259160,\t-0.974282523138248810,\t-0.974293788415532270,\t\n-0.974305051257081220,\t-0.974316311662867470,\t-0.974327569632863040,\t-0.974338825167039620,\t-0.974350078265369350,\t-0.974361328927823680,\t-0.974372577154374750,\t-0.974383822944994260,\t\n-0.974395066299654330,\t-0.974406307218326880,\t-0.974417545700983490,\t-0.974428781747596170,\t-0.974440015358136960,\t-0.974451246532577750,\t-0.974462475270890360,\t-0.974473701573046800,\t\n-0.974484925439018990,\t-0.974496146868778830,\t-0.974507365862298360,\t-0.974518582419549580,\t-0.974529796540504200,\t-0.974541008225134340,\t-0.974552217473412030,\t-0.974563424285309070,\t\n-0.974574628660797580,\t-0.974585830599849710,\t-0.974597030102437030,\t-0.974608227168531900,\t-0.974619421798106120,\t-0.974630613991131820,\t-0.974641803747580910,\t-0.974652991067425530,\t\n-0.974664175950637700,\t-0.974675358397189440,\t-0.974686538407052880,\t-0.974697715980199940,\t-0.974708891116602530,\t-0.974720063816233000,\t-0.974731234079063370,\t-0.974742401905065560,\t\n-0.974753567294211920,\t-0.974764730246474250,\t-0.974775890761824690,\t-0.974787048840235480,\t-0.974798204481678530,\t-0.974809357686126200,\t-0.974820508453550390,\t-0.974831656783923250,\t\n-0.974842802677217120,\t-0.974853946133404040,\t-0.974865087152456010,\t-0.974876225734345180,\t-0.974887361879043900,\t-0.974898495586524080,\t-0.974909626856758080,\t-0.974920755689718250,\t\n-0.974931882085376290,\t-0.974943006043704650,\t-0.974954127564675480,\t-0.974965246648261010,\t-0.974976363294433380,\t-0.974987477503164830,\t-0.974998589274427620,\t-0.975009698608193980,\t\n-0.975020805504436040,\t-0.975031909963126280,\t-0.975043011984236600,\t-0.975054111567739360,\t-0.975065208713606800,\t-0.975076303421811290,\t-0.975087395692325170,\t-0.975098485525120460,\t\n-0.975109572920169420,\t-0.975120657877444510,\t-0.975131740396917860,\t-0.975142820478561930,\t-0.975153898122348980,\t-0.975164973328251250,\t-0.975176046096241090,\t-0.975187116426290860,\t\n-0.975198184318373020,\t-0.975209249772459490,\t-0.975220312788522840,\t-0.975231373366535430,\t-0.975242431506469500,\t-0.975253487208297630,\t-0.975264540471992180,\t-0.975275591297525170,\t\n-0.975286639684869170,\t-0.975297685633996550,\t-0.975308729144879760,\t-0.975319770217491170,\t-0.975330808851803120,\t-0.975341845047787980,\t-0.975352878805418320,\t-0.975363910124666720,\t\n-0.975374939005504980,\t-0.975385965447906010,\t-0.975396989451842170,\t-0.975408011017285690,\t-0.975419030144209280,\t-0.975430046832585500,\t-0.975441061082386480,\t-0.975452072893584710,\t\n-0.975463082266152750,\t-0.975474089200063070,\t-0.975485093695288240,\t-0.975496095751800630,\t-0.975507095369572810,\t-0.975518092548577240,\t-0.975529087288786620,\t-0.975540079590173080,\t\n-0.975551069452709420,\t-0.975562056876367990,\t-0.975573041861121480,\t-0.975584024406942360,\t-0.975595004513803320,\t-0.975605982181676600,\t-0.975616957410535000,\t-0.975627930200350880,\t\n-0.975638900551097030,\t-0.975649868462745930,\t-0.975660833935270030,\t-0.975671796968642150,\t-0.975682757562834850,\t-0.975693715717820490,\t-0.975704671433572200,\t-0.975715624710061900,\t\n-0.975726575547262610,\t-0.975737523945146900,\t-0.975748469903687350,\t-0.975759413422856770,\t-0.975770354502627500,\t-0.975781293142972350,\t-0.975792229343864000,\t-0.975803163105275040,\t\n-0.975814094427178260,\t-0.975825023309546120,\t-0.975835949752351440,\t-0.975846873755567000,\t-0.975857795319165280,\t-0.975868714443119290,\t-0.975879631127401280,\t-0.975890545371984160,\t\n-0.975901457176840850,\t-0.975912366541943690,\t-0.975923273467265710,\t-0.975934177952779810,\t-0.975945079998458140,\t-0.975955979604273830,\t-0.975966876770199670,\t-0.975977771496208120,\t\n-0.975988663782272340,\t-0.975999553628364770,\t-0.976010441034458330,\t-0.976021326000525820,\t-0.976032208526540160,\t-0.976043088612473800,\t-0.976053966258299770,\t-0.976064841463990750,\t\n-0.976075714229519660,\t-0.976086584554859300,\t-0.976097452439982690,\t-0.976108317884862190,\t-0.976119180889470920,\t-0.976130041453781680,\t-0.976140899577767400,\t-0.976151755261400860,\t\n-0.976162608504654860,\t-0.976173459307502430,\t-0.976184307669916260,\t-0.976195153591869590,\t-0.976205997073334770,\t-0.976216838114285060,\t-0.976227676714693240,\t-0.976238512874532120,\t\n-0.976249346593774820,\t-0.976260177872394270,\t-0.976271006710363150,\t-0.976281833107654480,\t-0.976292657064241290,\t-0.976303478580096360,\t-0.976314297655192730,\t-0.976325114289503420,\t\n-0.976335928483001330,\t-0.976346740235659370,\t-0.976357549547450580,\t-0.976368356418348180,\t-0.976379160848324660,\t-0.976389962837353130,\t-0.976400762385406850,\t-0.976411559492458610,\t\n-0.976422354158481550,\t-0.976433146383448580,\t-0.976443936167332600,\t-0.976454723510106870,\t-0.976465508411744400,\t-0.976476290872217990,\t-0.976487070891501000,\t-0.976497848469566220,\t\n-0.976508623606386910,\t-0.976519396301935960,\t-0.976530166556186740,\t-0.976540934369111930,\t-0.976551699740684790,\t-0.976562462670878430,\t-0.976573223159665880,\t-0.976583981207020280,\t\n-0.976594736812914870,\t-0.976605489977322440,\t-0.976616240700216350,\t-0.976626988981569630,\t-0.976637734821355410,\t-0.976648478219546810,\t-0.976659219176117090,\t-0.976669957691039370,\t\n-0.976680693764286680,\t-0.976691427395832480,\t-0.976702158585649460,\t-0.976712887333711090,\t-0.976723613639990500,\t-0.976734337504460930,\t-0.976745058927095400,\t-0.976755777907867500,\t\n-0.976766494446749900,\t-0.976777208543716080,\t-0.976787920198739280,\t-0.976798629411792740,\t-0.976809336182849490,\t-0.976820040511882980,\t-0.976830742398866360,\t-0.976841441843772860,\t\n-0.976852138846575960,\t-0.976862833407248550,\t-0.976873525525764010,\t-0.976884215202095670,\t-0.976894902436216790,\t-0.976905587228100720,\t-0.976916269577720820,\t-0.976926949485049990,\t\n-0.976937626950061920,\t-0.976948301972729640,\t-0.976958974553026720,\t-0.976969644690926290,\t-0.976980312386401820,\t-0.976990977639426550,\t-0.977001640449973730,\t-0.977012300818016930,\t\n-0.977022958743529510,\t-0.977033614226484600,\t-0.977044267266855560,\t-0.977054917864615850,\t-0.977065566019738930,\t-0.977076211732198160,\t-0.977086855001966790,\t-0.977097495829018170,\t\n-0.977108134213325870,\t-0.977118770154863260,\t-0.977129403653603680,\t-0.977140034709520710,\t-0.977150663322587490,\t-0.977161289492777700,\t-0.977171913220064690,\t-0.977182534504422050,\t\n-0.977193153345822910,\t-0.977203769744240840,\t-0.977214383699649410,\t-0.977224995212022000,\t-0.977235604281332270,\t-0.977246210907553370,\t-0.977256815090658870,\t-0.977267416830622460,\t\n-0.977278016127417380,\t-0.977288612981017320,\t-0.977299207391395750,\t-0.977309799358526130,\t-0.977320388882382040,\t-0.977330975962936940,\t-0.977341560600164640,\t-0.977352142794038260,\t\n-0.977362722544531380,\t-0.977373299851617800,\t-0.977383874715270990,\t-0.977394447135464530,\t-0.977405017112172090,\t-0.977415584645366930,\t-0.977426149735022730,\t-0.977436712381113180,\t\n-0.977447272583611970,\t-0.977457830342492450,\t-0.977468385657728420,\t-0.977478938529293460,\t-0.977489488957161030,\t-0.977500036941305160,\t-0.977510582481698980,\t-0.977521125578316390,\t\n-0.977531666231130970,\t-0.977542204440116300,\t-0.977552740205246180,\t-0.977563273526494410,\t-0.977573804403834230,\t-0.977584332837239560,\t-0.977594858826684070,\t-0.977605382372141450,\t\n-0.977615903473585400,\t-0.977626422130989490,\t-0.977636938344327630,\t-0.977647452113573400,\t-0.977657963438700480,\t-0.977668472319682900,\t-0.977678978756493900,\t-0.977689482749107500,\t\n-0.977699984297497380,\t-0.977710483401637240,\t-0.977720980061501210,\t-0.977731474277062420,\t-0.977741966048295000,\t-0.977752455375172640,\t-0.977762942257669240,\t-0.977773426695758400,\t\n-0.977783908689414010,\t-0.977794388238609760,\t-0.977804865343319670,\t-0.977815340003517330,\t-0.977825812219176860,\t-0.977836281990271730,\t-0.977846749316775840,\t-0.977857214198663010,\t\n-0.977867676635907230,\t-0.977878136628482440,\t-0.977888594176362090,\t-0.977899049279520320,\t-0.977909501937930910,\t-0.977919952151567680,\t-0.977930399920404650,\t-0.977940845244415600,\t\n-0.977951288123574350,\t-0.977961728557855010,\t-0.977972166547231290,\t-0.977982602091677310,\t-0.977993035191166650,\t-0.978003465845673440,\t-0.978013894055171580,\t-0.978024319819634890,\t\n-0.978034743139037490,\t-0.978045164013353400,\t-0.978055582442556190,\t-0.978065998426620010,\t-0.978076411965518870,\t-0.978086823059226670,\t-0.978097231707717450,\t-0.978107637910965220,\t\n-0.978118041668943780,\t-0.978128442981627270,\t-0.978138841848989800,\t-0.978149238271005080,\t-0.978159632247647350,\t-0.978170023778890400,\t-0.978180412864708470,\t-0.978190799505075480,\t\n-0.978201183699965670,\t-0.978211565449352730,\t-0.978221944753210890,\t-0.978232321611514190,\t-0.978242696024236640,\t-0.978253067991352370,\t-0.978263437512835400,\t-0.978273804588659870,\t\n-0.978284169218799900,\t-0.978294531403229640,\t-0.978304891141922760,\t-0.978315248434853850,\t-0.978325603281996690,\t-0.978335955683325540,\t-0.978346305638814530,\t-0.978356653148437890,\t\n-0.978366998212169440,\t-0.978377340829983510,\t-0.978387681001854250,\t-0.978398018727755780,\t-0.978408354007662240,\t-0.978418686841547870,\t-0.978429017229386800,\t-0.978439345171153050,\t\n-0.978449670666821090,\t-0.978459993716365050,\t-0.978470314319758840,\t-0.978480632476976920,\t-0.978490948187993310,\t-0.978501261452782380,\t-0.978511572271318570,\t-0.978521880643575480,\t\n-0.978532186569527780,\t-0.978542490049149620,\t-0.978552791082415220,\t-0.978563089669298840,\t-0.978573385809774820,\t-0.978583679503817190,\t-0.978593970751400420,\t-0.978604259552498750,\t\n-0.978614545907086630,\t-0.978624829815137880,\t-0.978635111276627170,\t-0.978645390291528640,\t-0.978655666859816530,\t-0.978665940981465420,\t-0.978676212656449550,\t-0.978686481884742940,\t\n-0.978696748666320170,\t-0.978707013001155480,\t-0.978717274889223330,\t-0.978727534330497970,\t-0.978737791324953750,\t-0.978748045872565030,\t-0.978758297973306270,\t-0.978768547627151930,\t\n-0.978778794834076040,\t-0.978789039594053060,\t-0.978799281907057670,\t-0.978809521773063910,\t-0.978819759192046450,\t-0.978829994163979640,\t-0.978840226688837860,\t-0.978850456766595320,\t\n-0.978860684397226730,\t-0.978870909580706440,\t-0.978881132317008910,\t-0.978891352606108490,\t-0.978901570447979650,\t-0.978911785842596970,\t-0.978921998789935020,\t-0.978932209289967830,\t\n-0.978942417342670070,\t-0.978952622948016330,\t-0.978962826105981070,\t-0.978973026816538750,\t-0.978983225079663950,\t-0.978993420895331030,\t-0.979003614263514450,\t-0.979013805184188900,\t\n-0.979023993657328730,\t-0.979034179682908730,\t-0.979044363260903160,\t-0.979054544391286700,\t-0.979064723074033920,\t-0.979074899309119400,\t-0.979085073096517710,\t-0.979095244436203220,\t\n-0.979105413328150490,\t-0.979115579772334320,\t-0.979125743768729300,\t-0.979135905317309980,\t-0.979146064418050740,\t-0.979156221070926260,\t-0.979166375275911330,\t-0.979176527032980410,\t\n-0.979186676342108210,\t-0.979196823203269400,\t-0.979206967616438440,\t-0.979217109581590030,\t-0.979227249098698850,\t-0.979237386167739810,\t-0.979247520788687040,\t-0.979257652961515570,\t\n-0.979267782686199850,\t-0.979277909962714690,\t-0.979288034791034880,\t-0.979298157171135000,\t-0.979308277102989620,\t-0.979318394586573550,\t-0.979328509621861460,\t-0.979338622208828170,\t\n-0.979348732347448350,\t-0.979358840037696580,\t-0.979368945279547760,\t-0.979379048072976600,\t-0.979389148417957990,\t-0.979399246314466290,\t-0.979409341762476520,\t-0.979419434761963360,\t\n-0.979429525312901620,\t-0.979439613415266090,\t-0.979449699069031790,\t-0.979459782274172960,\t-0.979469863030664630,\t-0.979479941338481710,\t-0.979490017197598980,\t-0.979500090607991150,\t\n-0.979510161569633110,\t-0.979520230082499670,\t-0.979530296146565620,\t-0.979540359761805980,\t-0.979550420928195330,\t-0.979560479645708580,\t-0.979570535914320750,\t-0.979580589734006410,\t\n-0.979590641104740700,\t-0.979600690026498520,\t-0.979610736499254450,\t-0.979620780522983630,\t-0.979630822097660730,\t-0.979640861223260880,\t-0.979650897899758790,\t-0.979660932127129460,\t\n-0.979670963905347910,\t-0.979680993234388840,\t-0.979691020114227260,\t-0.979701044544838420,\t-0.979711066526196770,\t-0.979721086058277350,\t-0.979731103141055270,\t-0.979741117774505450,\t\n-0.979751129958603030,\t-0.979761139693322680,\t-0.979771146978639320,\t-0.979781151814528180,\t-0.979791154200964190,\t-0.979801154137922240,\t-0.979811151625377460,\t-0.979821146663304780,\t\n-0.979831139251679200,\t-0.979841129390475850,\t-0.979851117079669760,\t-0.979861102319235730,\t-0.979871085109149000,\t-0.979881065449384470,\t-0.979891043339917390,\t-0.979901018780722670,\t\n-0.979910991771775540,\t-0.979920962313050700,\t-0.979930930404523610,\t-0.979940896046169070,\t-0.979950859237962320,\t-0.979960819979878380,\t-0.979970778271892500,\t-0.979980734113979570,\t\n-0.979990687506114840,\t-0.980000638448273560,\t-0.980010586940430530,\t-0.980020532982561090,\t-0.980030476574640260,\t-0.980040417716643190,\t-0.980050356408545100,\t-0.980060292650321350,\t\n-0.980070226441946630,\t-0.980080157783396410,\t-0.980090086674645810,\t-0.980100013115669850,\t-0.980109937106444010,\t-0.980119858646943290,\t-0.980129777737142830,\t-0.980139694377018090,\t\n-0.980149608566544210,\t-0.980159520305696090,\t-0.980169429594449190,\t-0.980179336432778770,\t-0.980189240820659950,\t-0.980199142758068080,\t-0.980209042244978400,\t-0.980218939281366050,\t\n-0.980228833867206380,\t-0.980238726002474530,\t-0.980248615687145940,\t-0.980258502921195760,\t-0.980268387704599450,\t-0.980278270037332030,\t-0.980288149919368970,\t-0.980298027350685610,\t\n-0.980307902331257200,\t-0.980317774861058980,\t-0.980327644940066300,\t-0.980337512568254520,\t-0.980347377745598990,\t-0.980357240472075060,\t-0.980367100747657980,\t-0.980376958572323100,\t\n-0.980386813946045880,\t-0.980396666868801560,\t-0.980406517340565610,\t-0.980416365361313270,\t-0.980426210931020110,\t-0.980436054049661390,\t-0.980445894717212550,\t-0.980455732933649180,\t\n-0.980465568698946300,\t-0.980475402013079480,\t-0.980485232876024180,\t-0.980495061287755760,\t-0.980504887248249690,\t-0.980514710757481530,\t-0.980524531815426540,\t-0.980534350422060160,\t\n-0.980544166577357880,\t-0.980553980281295150,\t-0.980563791533847540,\t-0.980573600334990410,\t-0.980583406684699340,\t-0.980593210582949680,\t-0.980603012029717220,\t-0.980612811024977100,\t\n-0.980622607568704900,\t-0.980632401660876170,\t-0.980642193301466400,\t-0.980651982490451160,\t-0.980661769227806230,\t-0.980671553513506660,\t-0.980681335347528100,\t-0.980691114729846270,\t\n-0.980700891660436720,\t-0.980710666139274930,\t-0.980720438166336360,\t-0.980730207741596800,\t-0.980739974865031730,\t-0.980749739536616820,\t-0.980759501756327420,\t-0.980769261524139350,\t\n-0.980779018840028050,\t-0.980788773703969220,\t-0.980798526115938430,\t-0.980808276075911480,\t-0.980818023583863720,\t-0.980827768639770840,\t-0.980837511243608630,\t-0.980847251395352560,\t\n-0.980856989094978430,\t-0.980866724342461800,\t-0.980876457137778380,\t-0.980886187480903730,\t-0.980895915371813640,\t-0.980905640810484040,\t-0.980915363796890040,\t-0.980925084331007670,\t\n-0.980934802412812610,\t-0.980944518042280560,\t-0.980954231219387410,\t-0.980963941944108410,\t-0.980973650216419580,\t-0.980983356036296720,\t-0.980993059403715400,\t-0.981002760318651410,\t\n-0.981012458781080570,\t-0.981022154790978540,\t-0.981031848348321130,\t-0.981041539453084140,\t-0.981051228105243480,\t-0.981060914304774490,\t-0.981070598051653310,\t-0.981080279345855620,\t\n-0.981089958187357110,\t-0.981099634576133920,\t-0.981109308512161600,\t-0.981118979995415970,\t-0.981128649025872820,\t-0.981138315603508170,\t-0.981147979728297590,\t-0.981157641400217110,\t\n-0.981167300619242510,\t-0.981176957385349710,\t-0.981186611698514510,\t-0.981196263558712920,\t-0.981205912965920520,\t-0.981215559920113330,\t-0.981225204421267260,\t-0.981234846469358210,\t\n-0.981244486064361990,\t-0.981254123206254710,\t-0.981263757895011970,\t-0.981273390130609880,\t-0.981283019913024250,\t-0.981292647242231090,\t-0.981302272118206310,\t-0.981311894540925820,\t\n-0.981321514510365640,\t-0.981331132026501680,\t-0.981340747089310070,\t-0.981350359698766380,\t-0.981359969854846860,\t-0.981369577557527300,\t-0.981379182806783930,\t-0.981388785602592460,\t\n-0.981398385944929340,\t-0.981407983833770040,\t-0.981417579269090680,\t-0.981427172250867510,\t-0.981436762779076320,\t-0.981446350853693250,\t-0.981455936474694310,\t-0.981465519642055530,\t\n-0.981475100355753030,\t-0.981484678615762610,\t-0.981494254422060840,\t-0.981503827774623080,\t-0.981513398673425910,\t-0.981522967118445220,\t-0.981532533109657050,\t-0.981542096647037730,\t\n-0.981551657730562970,\t-0.981561216360209210,\t-0.981570772535952260,\t-0.981580326257768480,\t-0.981589877525633760,\t-0.981599426339524460,\t-0.981608972699416490,\t-0.981618516605286210,\t\n-0.981628058057109620,\t-0.981637597054862980,\t-0.981647133598522180,\t-0.981656667688063590,\t-0.981666199323463330,\t-0.981675728504697530,\t-0.981685255231742440,\t-0.981694779504574400,\t\n-0.981704301323169220,\t-0.981713820687503350,\t-0.981723337597552810,\t-0.981732852053294080,\t-0.981742364054703050,\t-0.981751873601756200,\t-0.981761380694429750,\t-0.981770885332699740,\t\n-0.981780387516542730,\t-0.981789887245934520,\t-0.981799384520851580,\t-0.981808879341270260,\t-0.981818371707166680,\t-0.981827861618517210,\t-0.981837349075298290,\t-0.981846834077485740,\t\n-0.981856316625056120,\t-0.981865796717985790,\t-0.981875274356250880,\t-0.981884749539827850,\t-0.981894222268692940,\t-0.981903692542822500,\t-0.981913160362192780,\t-0.981922625726780240,\t\n-0.981932088636561120,\t-0.981941549091511660,\t-0.981951007091608430,\t-0.981960462636827680,\t-0.981969915727145760,\t-0.981979366362539130,\t-0.981988814542984030,\t-0.981998260268456820,\t\n-0.982007703538933960,\t-0.982017144354391910,\t-0.982026582714806920,\t-0.982036018620155550,\t-0.982045452070414050,\t-0.982054883065558990,\t-0.982064311605566620,\t-0.982073737690413730,\t\n-0.982083161320076340,\t-0.982092582494531020,\t-0.982102001213754240,\t-0.982111417477722460,\t-0.982120831286412370,\t-0.982130242639799870,\t-0.982139651537861870,\t-0.982149057980574720,\t\n-0.982158461967915010,\t-0.982167863499859070,\t-0.982177262576383490,\t-0.982186659197464730,\t-0.982196053363079360,\t-0.982205445073203840,\t-0.982214834327814870,\t-0.982224221126888560,\t\n-0.982233605470401840,\t-0.982242987358331040,\t-0.982252366790652750,\t-0.982261743767343650,\t-0.982271118288380210,\t-0.982280490353738880,\t-0.982289859963396350,\t-0.982299227117329200,\t\n-0.982308591815513890,\t-0.982317954057927100,\t-0.982327313844545520,\t-0.982336671175345620,\t-0.982346026050303970,\t-0.982355378469397470,\t-0.982364728432602360,\t-0.982374075939895450,\t\n-0.982383420991253420,\t-0.982392763586652730,\t-0.982402103726070170,\t-0.982411441409482440,\t-0.982420776636866000,\t-0.982430109408197640,\t-0.982439439723454040,\t-0.982448767582611790,\t\n-0.982458092985647570,\t-0.982467415932538170,\t-0.982476736423260280,\t-0.982486054457790470,\t-0.982495370036105650,\t-0.982504683158182400,\t-0.982513993823997290,\t-0.982523302033527330,\t\n-0.982532607786749000,\t-0.982541911083639200,\t-0.982551211924174830,\t-0.982560510308332140,\t-0.982569806236088250,\t-0.982579099707419860,\t-0.982588390722303750,\t-0.982597679280716620,\t\n-0.982606965382635260,\t-0.982616249028036570,\t-0.982625530216897140,\t-0.982634808949193970,\t-0.982644085224903980,\t-0.982653359044003530,\t-0.982662630406469730,\t-0.982671899312279270,\t\n-0.982681165761409180,\t-0.982690429753836250,\t-0.982699691289537160,\t-0.982708950368488820,\t-0.982718206990668030,\t-0.982727461156051810,\t-0.982736712864616950,\t-0.982745962116340240,\t\n-0.982755208911198610,\t-0.982764453249169060,\t-0.982773695130228280,\t-0.982782934554353500,\t-0.982792171521521210,\t-0.982801406031708400,\t-0.982810638084892220,\t-0.982819867681049340,\t\n-0.982829094820156790,\t-0.982838319502191690,\t-0.982847541727130620,\t-0.982856761494950710,\t-0.982865978805628980,\t-0.982875193659142220,\t-0.982884406055467450,\t-0.982893615994581690,\t\n-0.982902823476461850,\t-0.982912028501085060,\t-0.982921231068428320,\t-0.982930431178468230,\t-0.982939628831182240,\t-0.982948824026547040,\t-0.982958016764539870,\t-0.982967207045137630,\t\n-0.982976394868317450,\t-0.982985580234056240,\t-0.982994763142331030,\t-0.983003943593118930,\t-0.983013121586396980,\t-0.983022297122142170,\t-0.983031470200331660,\t-0.983040640820942450,\t\n-0.983049808983951670,\t-0.983058974689336450,\t-0.983068137937073700,\t-0.983077298727140670,\t-0.983086457059514360,\t-0.983095612934171800,\t-0.983104766351090340,\t-0.983113917310247000,\t\n-0.983123065811618790,\t-0.983132211855182960,\t-0.983141355440916520,\t-0.983150496568796720,\t-0.983159635238800680,\t-0.983168771450905530,\t-0.983177905205088410,\t-0.983187036501326660,\t\n-0.983196165339597190,\t-0.983205291719877580,\t-0.983214415642144510,\t-0.983223537106375440,\t-0.983232656112547510,\t-0.983241772660637840,\t-0.983250886750624000,\t-0.983259998382482790,\t\n-0.983269107556191570,\t-0.983278214271727570,\t-0.983287318529068030,\t-0.983296420328190200,\t-0.983305519669071430,\t-0.983314616551688720,\t-0.983323710976019450,\t-0.983332802942041060,\t\n-0.983341892449730690,\t-0.983350979499065470,\t-0.983360064090022750,\t-0.983369146222579980,\t-0.983378225896714310,\t-0.983387303112403190,\t-0.983396377869623640,\t-0.983405450168353120,\t\n-0.983414520008569100,\t-0.983423587390248710,\t-0.983432652313369290,\t-0.983441714777908320,\t-0.983450774783843130,\t-0.983459832331150860,\t-0.983468887419809090,\t-0.983477940049795270,\t\n-0.983486990221086430,\t-0.983496037933660030,\t-0.983505083187493630,\t-0.983514125982564490,\t-0.983523166318850060,\t-0.983532204196327810,\t-0.983541239614974970,\t-0.983550272574769010,\t\n-0.983559303075687290,\t-0.983568331117707470,\t-0.983577356700806700,\t-0.983586379824962550,\t-0.983595400490152480,\t-0.983604418696353950,\t-0.983613434443544430,\t-0.983622447731701270,\t\n-0.983631458560801920,\t-0.983640466930823960,\t-0.983649472841744750,\t-0.983658476293541970,\t-0.983667477286193080,\t-0.983676475819675430,\t-0.983685471893966490,\t-0.983694465509043940,\t\n-0.983703456664885230,\t-0.983712445361467850,\t-0.983721431598769350,\t-0.983730415376767310,\t-0.983739396695439190,\t-0.983748375554762690,\t-0.983757351954715140,\t-0.983766325895274240,\t\n-0.983775297376417560,\t-0.983784266398122550,\t-0.983793232960366910,\t-0.983802197063128330,\t-0.983811158706384140,\t-0.983820117890112030,\t-0.983829074614289590,\t-0.983838028878894600,\t\n-0.983846980683904420,\t-0.983855930029296720,\t-0.983864876915049310,\t-0.983873821341139650,\t-0.983882763307545540,\t-0.983891702814244540,\t-0.983900639861214230,\t-0.983909574448432300,\t\n-0.983918506575876430,\t-0.983927436243524300,\t-0.983936363451353710,\t-0.983945288199342020,\t-0.983954210487467230,\t-0.983963130315706810,\t-0.983972047684038560,\t-0.983980962592440280,\t\n-0.983989875040889530,\t-0.983998785029364110,\t-0.984007692557841710,\t-0.984016597626300120,\t-0.984025500234717130,\t-0.984034400383070220,\t-0.984043298071337390,\t-0.984052193299496230,\t\n-0.984061086067524630,\t-0.984069976375400390,\t-0.984078864223101310,\t-0.984087749610604860,\t-0.984096632537889040,\t-0.984105513004931760,\t-0.984114391011710610,\t-0.984123266558203480,\t\n-0.984132139644388170,\t-0.984141010270242590,\t-0.984149878435744420,\t-0.984158744140871680,\t-0.984167607385601940,\t-0.984176468169913220,\t-0.984185326493783320,\t-0.984194182357190140,\t\n-0.984203035760111480,\t-0.984211886702525350,\t-0.984220735184409330,\t-0.984229581205741550,\t-0.984238424766499810,\t-0.984247265866661890,\t-0.984256104506205930,\t-0.984264940685109720,\t\n-0.984273774403351060,\t-0.984282605660908080,\t-0.984291434457758680,\t-0.984300260793880550,\t-0.984309084669251710,\t-0.984317906083850170,\t-0.984326725037653950,\t-0.984335541530640850,\t\n-0.984344355562789100,\t-0.984353167134076280,\t-0.984361976244480520,\t-0.984370782893979830,\t-0.984379587082552240,\t-0.984388388810175540,\t-0.984397188076827970,\t-0.984405984882487430,\t\n-0.984414779227131940,\t-0.984423571110739530,\t-0.984432360533288310,\t-0.984441147494755970,\t-0.984449931995120870,\t-0.984458714034360920,\t-0.984467493612454110,\t-0.984476270729378710,\t\n-0.984485045385112610,\t-0.984493817579633830,\t-0.984502587312920510,\t-0.984511354584950650,\t-0.984520119395702500,\t-0.984528881745153960,\t-0.984537641633283280,\t-0.984546399060068580,\t\n-0.984555154025487770,\t-0.984563906529519190,\t-0.984572656572140770,\t-0.984581404153330730,\t-0.984590149273067090,\t-0.984598891931328210,\t-0.984607632128091990,\t-0.984616369863336890,\t\n-0.984625105137040710,\t-0.984633837949181690,\t-0.984642568299738170,\t-0.984651296188688190,\t-0.984660021616009960,\t-0.984668744581681740,\t-0.984677465085681550,\t-0.984686183127987840,\t\n-0.984694898708578740,\t-0.984703611827432160,\t-0.984712322484526670,\t-0.984721030679840400,\t-0.984729736413351490,\t-0.984738439685038270,\t-0.984747140494878990,\t-0.984755838842851780,\t\n-0.984764534728935100,\t-0.984773228153106970,\t-0.984781919115345740,\t-0.984790607615629750,\t-0.984799293653937260,\t-0.984807977230246490,\t-0.984816658344535800,\t-0.984825336996783650,\t\n-0.984834013186967950,\t-0.984842686915067270,\t-0.984851358181059840,\t-0.984860026984924030,\t-0.984868693326638070,\t-0.984877357206180640,\t-0.984886018623529650,\t-0.984894677578663560,\t\n-0.984903334071560830,\t-0.984911988102199710,\t-0.984920639670558650,\t-0.984929288776616010,\t-0.984937935420350130,\t-0.984946579601739480,\t-0.984955221320762300,\t-0.984963860577397270,\t\n-0.984972497371622400,\t-0.984981131703416280,\t-0.984989763572757360,\t-0.984998392979623990,\t-0.985007019923994750,\t-0.985015644405847880,\t-0.985024266425161940,\t-0.985032885981915300,\t\n-0.985041503076086400,\t-0.985050117707653830,\t-0.985058729876595930,\t-0.985067339582891170,\t-0.985075946826518000,\t-0.985084551607455120,\t-0.985093153925680860,\t-0.985101753781173710,\t\n-0.985110351173912100,\t-0.985118946103874630,\t-0.985127538571039740,\t-0.985136128575386020,\t-0.985144716116892250,\t-0.985153301195536350,\t-0.985161883811297320,\t-0.985170463964153530,\t\n-0.985179041654083650,\t-0.985187616881066150,\t-0.985196189645079600,\t-0.985204759946102570,\t-0.985213327784113630,\t-0.985221893159091480,\t-0.985230456071014450,\t-0.985239016519861340,\t\n-0.985247574505610620,\t-0.985256130028241080,\t-0.985264683087731190,\t-0.985273233684059610,\t-0.985281781817204940,\t-0.985290327487145730,\t-0.985298870693860800,\t-0.985307411437328580,\t\n-0.985315949717527890,\t-0.985324485534437300,\t-0.985333018888035480,\t-0.985341549778301130,\t-0.985350078205213140,\t-0.985358604168749760,\t-0.985367127668889790,\t-0.985375648705612120,\t\n-0.985384167278895220,\t-0.985392683388717990,\t-0.985401197035059130,\t-0.985409708217897200,\t-0.985418216937210880,\t-0.985426723192979080,\t-0.985435226985180490,\t-0.985443728313793900,\t\n-0.985452227178797880,\t-0.985460723580171340,\t-0.985469217517892960,\t-0.985477708991941650,\t-0.985486198002296090,\t-0.985494684548934960,\t-0.985503168631837070,\t-0.985511650250981310,\t\n-0.985520129406346370,\t-0.985528606097911260,\t-0.985537080325654460,\t-0.985545552089555080,\t-0.985554021389591690,\t-0.985562488225743330,\t-0.985570952597988660,\t-0.985579414506306710,\t\n-0.985587873950676150,\t-0.985596330931075900,\t-0.985604785447484870,\t-0.985613237499882060,\t-0.985621687088245930,\t-0.985630134212555630,\t-0.985638578872790050,\t-0.985647021068927880,\t\n-0.985655460800948240,\t-0.985663898068830150,\t-0.985672332872552070,\t-0.985680765212093250,\t-0.985689195087432470,\t-0.985697622498548640,\t-0.985706047445420790,\t-0.985714469928027910,\t\n-0.985722889946348710,\t-0.985731307500362420,\t-0.985739722590047940,\t-0.985748135215384070,\t-0.985756545376349710,\t-0.985764953072924110,\t-0.985773358305086170,\t-0.985781761072814790,\t\n-0.985790161376089100,\t-0.985798559214887900,\t-0.985806954589190320,\t-0.985815347498975260,\t-0.985823737944221960,\t-0.985832125924909210,\t-0.985840511441016250,\t-0.985848894492521890,\t\n-0.985857275079405460,\t-0.985865653201645880,\t-0.985874028859222040,\t-0.985882402052113080,\t-0.985890772780298130,\t-0.985899141043756310,\t-0.985907506842466640,\t-0.985915870176408250,\t\n-0.985924231045560150,\t-0.985932589449901360,\t-0.985940945389411240,\t-0.985949298864068680,\t-0.985957649873852810,\t-0.985965998418742880,\t-0.985974344498718010,\t-0.985982688113757220,\t\n-0.985991029263839640,\t-0.985999367948944720,\t-0.986007704169051260,\t-0.986016037924138500,\t-0.986024369214185680,\t-0.986032698039171820,\t-0.986041024399076480,\t-0.986049348293878360,\t\n-0.986057669723556910,\t-0.986065988688091370,\t-0.986074305187460750,\t-0.986082619221644310,\t-0.986090930790621490,\t-0.986099239894371200,\t-0.986107546532872910,\t-0.986115850706105630,\t\n-0.986124152414049050,\t-0.986132451656681840,\t-0.986140748433983470,\t-0.986149042745933290,\t-0.986157334592510430,\t-0.986165623973694340,\t-0.986173910889464270,\t-0.986182195339799230,\t\n-0.986190477324678790,\t-0.986198756844082090,\t-0.986207033897988580,\t-0.986215308486377400,\t-0.986223580609227990,\t-0.986231850266519720,\t-0.986240117458231700,\t-0.986248382184343520,\t\n-0.986256644444834300,\t-0.986264904239683490,\t-0.986273161568870350,\t-0.986281416432374320,\t-0.986289668830174770,\t-0.986297918762251260,\t-0.986306166228582690,\t-0.986314411229148760,\t\n-0.986322653763928800,\t-0.986330893832902180,\t-0.986339131436048460,\t-0.986347366573346760,\t-0.986355599244776670,\t-0.986363829450317640,\t-0.986372057189949140,\t-0.986380282463650280,\t\n-0.986388505271400870,\t-0.986396725613180040,\t-0.986404943488967570,\t-0.986413158898742590,\t-0.986421371842484910,\t-0.986429582320173640,\t-0.986437790331788470,\t-0.986445995877308750,\t\n-0.986454198956714160,\t-0.986462399569983940,\t-0.986470597717097770,\t-0.986478793398035130,\t-0.986486986612775450,\t-0.986495177361298330,\t-0.986503365643583430,\t-0.986511551459610000,\t\n-0.986519734809357620,\t-0.986527915692805960,\t-0.986536094109934480,\t-0.986544270060722980,\t-0.986552443545150590,\t-0.986560614563197100,\t-0.986568783114842080,\t-0.986576949200065110,\t\n-0.986585112818845760,\t-0.986593273971163590,\t-0.986601432656998290,\t-0.986609588876329440,\t-0.986617742629136480,\t-0.986625893915399450,\t-0.986634042735097470,\t-0.986642189088210440,\t\n-0.986650332974717830,\t-0.986658474394599530,\t-0.986666613347834900,\t-0.986674749834403950,\t-0.986682883854286040,\t-0.986691015407460850,\t-0.986699144493908160,\t-0.986707271113607560,\t\n-0.986715395266538840,\t-0.986723516952681570,\t-0.986731636172015540,\t-0.986739752924520430,\t-0.986747867210176040,\t-0.986755979028961950,\t-0.986764088380857830,\t-0.986772195265843480,\t\n-0.986780299683898690,\t-0.986788401635003030,\t-0.986796501119136640,\t-0.986804598136278850,\t-0.986812692686409480,\t-0.986820784769508410,\t-0.986828874385555440,\t-0.986836961534530270,\t\n-0.986845046216412670,\t-0.986853128431182450,\t-0.986861208178819390,\t-0.986869285459303410,\t-0.986877360272614190,\t-0.986885432618731520,\t-0.986893502497635300,\t-0.986901569909305220,\t\n-0.986909634853721300,\t-0.986917697330863430,\t-0.986925757340711200,\t-0.986933814883244500,\t-0.986941869958443350,\t-0.986949922566287440,\t-0.986957972706756780,\t-0.986966020379831170,\t\n-0.986974065585490500,\t-0.986982108323714690,\t-0.986990148594483640,\t-0.986998186397777370,\t-0.987006221733575440,\t-0.987014254601857880,\t-0.987022285002604800,\t-0.987030312935796020,\t\n-0.987038338401411530,\t-0.987046361399431030,\t-0.987054381929834750,\t-0.987062399992602370,\t-0.987070415587714130,\t-0.987078428715149720,\t-0.987086439374889270,\t-0.987094447566912780,\t\n-0.987102453291200170,\t-0.987110456547731440,\t-0.987118457336486620,\t-0.987126455657445610,\t-0.987134451510588430,\t-0.987142444895895090,\t-0.987150435813345610,\t-0.987158424262920110,\t\n-0.987166410244598720,\t-0.987174393758361020,\t-0.987182374804187470,\t-0.987190353382057960,\t-0.987198329491952520,\t-0.987206303133851270,\t-0.987214274307734340,\t-0.987222243013581640,\t\n-0.987230209251373390,\t-0.987238173021089740,\t-0.987246134322710470,\t-0.987254093156215930,\t-0.987262049521586140,\t-0.987270003418801220,\t-0.987277954847841200,\t-0.987285903808686530,\t\n-0.987293850301317000,\t-0.987301794325712740,\t-0.987309735881854110,\t-0.987317674969721120,\t-0.987325611589293880,\t-0.987333545740552540,\t-0.987341477423477440,\t-0.987349406638048710,\t\n-0.987357333384246470,\t-0.987365257662050850,\t-0.987373179471442100,\t-0.987381098812400330,\t-0.987389015684905780,\t-0.987396930088938810,\t-0.987404842024479650,\t-0.987412751491508090,\t\n-0.987420658490004820,\t-0.987428563019949860,\t-0.987436465081323430,\t-0.987444364674105900,\t-0.987452261798277390,\t-0.987460156453818350,\t-0.987468048640708810,\t-0.987475938358929220,\t\n-0.987483825608459820,\t-0.987491710389280850,\t-0.987499592701372440,\t-0.987507472544715160,\t-0.987515349919289240,\t-0.987523224825075040,\t-0.987531097262052570,\t-0.987538967230202400,\t\n-0.987546834729504890,\t-0.987554699759940260,\t-0.987562562321488870,\t-0.987570422414130960,\t-0.987578280037847090,\t-0.987586135192617620,\t-0.987593987878422670,\t-0.987601838095242930,\t\n-0.987609685843058530,\t-0.987617531121849800,\t-0.987625373931597330,\t-0.987633214272281350,\t-0.987641052143882310,\t-0.987648887546380920,\t-0.987656720479757060,\t-0.987664550943991420,\t\n-0.987672378939064450,\t-0.987680204464956520,\t-0.987688027521648080,\t-0.987695848109119480,\t-0.987703666227351400,\t-0.987711481876324070,\t-0.987719295056018190,\t-0.987727105766413870,\t\n-0.987734914007491920,\t-0.987742719779232560,\t-0.987750523081616480,\t-0.987758323914624040,\t-0.987766122278236010,\t-0.987773918172432430,\t-0.987781711597194190,\t-0.987789502552501530,\t\n-0.987797291038335250,\t-0.987805077054675570,\t-0.987812860601503310,\t-0.987820641678798910,\t-0.987828420286542940,\t-0.987836196424715980,\t-0.987843970093298380,\t-0.987851741292270940,\t\n-0.987859510021614100,\t-0.987867276281308440,\t-0.987875040071334640,\t-0.987882801391673390,\t-0.987890560242304930,\t-0.987898316623210150,\t-0.987906070534369520,\t-0.987913821975763720,\t\n-0.987921570947373430,\t-0.987929317449179110,\t-0.987937061481161560,\t-0.987944803043301350,\t-0.987952542135579150,\t-0.987960278757975760,\t-0.987968012910471430,\t-0.987975744593047160,\t\n-0.987983473805683520,\t-0.987991200548361200,\t-0.987998924821061000,\t-0.988006646623763360,\t-0.988014365956449090,\t-0.988022082819098870,\t-0.988029797211693480,\t-0.988037509134213620,\t\n-0.988045218586639960,\t-0.988052925568953190,\t-0.988060630081134210,\t-0.988068332123163580,\t-0.988076031695022340,\t-0.988083728796690820,\t-0.988091423428150040,\t-0.988099115589380680,\t\n-0.988106805280363430,\t-0.988114492501079410,\t-0.988122177251508970,\t-0.988129859531633130,\t-0.988137539341432670,\t-0.988145216680888280,\t-0.988152891549980870,\t-0.988160563948691340,\t\n-0.988168233877000260,\t-0.988175901334888640,\t-0.988183566322337280,\t-0.988191228839327200,\t-0.988198888885838840,\t-0.988206546461853240,\t-0.988214201567351290,\t-0.988221854202313900,\t\n-0.988229504366721740,\t-0.988237152060556070,\t-0.988244797283797330,\t-0.988252440036426650,\t-0.988260080318424830,\t-0.988267718129772880,\t-0.988275353470451480,\t-0.988282986340441870,\t\n-0.988290616739724630,\t-0.988298244668280980,\t-0.988305870126091830,\t-0.988313493113137880,\t-0.988321113629400120,\t-0.988328731674859570,\t-0.988336347249497260,\t-0.988343960353294080,\t\n-0.988351570986231160,\t-0.988359179148289080,\t-0.988366784839449180,\t-0.988374388059692240,\t-0.988381988808999300,\t-0.988389587087351470,\t-0.988397182894729660,\t-0.988404776231114780,\t\n-0.988412367096488050,\t-0.988419955490830390,\t-0.988427541414123030,\t-0.988435124866346660,\t-0.988442705847482390,\t-0.988450284357511480,\t-0.988457860396414810,\t-0.988465433964173630,\t\n-0.988473005060768740,\t-0.988480573686181250,\t-0.988488139840392410,\t-0.988495703523383230,\t-0.988503264735134720,\t-0.988510823475628130,\t-0.988518379744844470,\t-0.988525933542764750,\t\n-0.988533484869370320,\t-0.988541033724642300,\t-0.988548580108561500,\t-0.988556124021109260,\t-0.988563665462266820,\t-0.988571204432015070,\t-0.988578740930335490,\t-0.988586274957208970,\t\n-0.988593806512616750,\t-0.988601335596539950,\t-0.988608862208959940,\t-0.988616386349857600,\t-0.988623908019214400,\t-0.988631427217011470,\t-0.988638943943229930,\t-0.988646458197851020,\t\n-0.988653969980856080,\t-0.988661479292226140,\t-0.988668986131942430,\t-0.988676490499986290,\t-0.988683992396338970,\t-0.988691491820981590,\t-0.988698988773895620,\t-0.988706483255062160,\t\n-0.988713975264462360,\t-0.988721464802077680,\t-0.988728951867889340,\t-0.988736436461878590,\t-0.988743918584026770,\t-0.988751398234315130,\t-0.988758875412725000,\t-0.988766350119237860,\t\n-0.988773822353834710,\t-0.988781292116497010,\t-0.988788759407206010,\t-0.988796224225943150,\t-0.988803686572689690,\t-0.988811146447427180,\t-0.988818603850136760,\t-0.988826058780799770,\t\n-0.988833511239397560,\t-0.988840961225911590,\t-0.988848408740323310,\t-0.988855853782613980,\t-0.988863296352764930,\t-0.988870736450757740,\t-0.988878174076573750,\t-0.988885609230194310,\t\n-0.988893041911600770,\t-0.988900472120774590,\t-0.988907899857697340,\t-0.988915325122350250,\t-0.988922747914715020,\t-0.988930168234772760,\t-0.988937586082505040,\t-0.988945001457893440,\t\n-0.988952414360919300,\t-0.988959824791564190,\t-0.988967232749809470,\t-0.988974638235636580,\t-0.988982041249027220,\t-0.988989441789962730,\t-0.988996839858424680,\t-0.989004235454394530,\t\n-0.989011628577853740,\t-0.989019019228783880,\t-0.989026407407166410,\t-0.989033793112983120,\t-0.989041176346215250,\t-0.989048557106844360,\t-0.989055935394852150,\t-0.989063311210219950,\t\n-0.989070684552929680,\t-0.989078055422962570,\t-0.989085423820300400,\t-0.989092789744924540,\t-0.989100153196816880,\t-0.989107514175958880,\t-0.989114872682331890,\t-0.989122228715917820,\t\n-0.989129582276698120,\t-0.989136933364654580,\t-0.989144281979768560,\t-0.989151628122022060,\t-0.989158971791396340,\t-0.989166312987873160,\t-0.989173651711434230,\t-0.989180987962061110,\t\n-0.989188321739735590,\t-0.989195653044439240,\t-0.989202981876153850,\t-0.989210308234860890,\t-0.989217632120542260,\t-0.989224953533179520,\t-0.989232272472754360,\t-0.989239588939248570,\t\n-0.989246902932643720,\t-0.989254214452921610,\t-0.989261523500064130,\t-0.989268830074052750,\t-0.989276134174869260,\t-0.989283435802495450,\t-0.989290734956913000,\t-0.989298031638103810,\t\n-0.989305325846049470,\t-0.989312617580731750,\t-0.989319906842132560,\t-0.989327193630233800,\t-0.989334477945016830,\t-0.989341759786463770,\t-0.989349039154556190,\t-0.989356316049276100,\t\n-0.989363590470605180,\t-0.989370862418525340,\t-0.989378131893018380,\t-0.989385398894065960,\t-0.989392663421650110,\t-0.989399925475752510,\t-0.989407185056355170,\t-0.989414442163439880,\t\n-0.989421696796988440,\t-0.989428948956982860,\t-0.989436198643404820,\t-0.989443445856236450,\t-0.989450690595459310,\t-0.989457932861055430,\t-0.989465172653006710,\t-0.989472409971295150,\t\n-0.989479644815902560,\t-0.989486877186810830,\t-0.989494107084001870,\t-0.989501334507457700,\t-0.989508559457160100,\t-0.989515781933091090,\t-0.989523001935232680,\t-0.989530219463566780,\t\n-0.989537434518075410,\t-0.989544647098740350,\t-0.989551857205543730,\t-0.989559064838467450,\t-0.989566269997493530,\t-0.989573472682603870,\t-0.989580672893780490,\t-0.989587870631005510,\t\n-0.989595065894260940,\t-0.989602258683528580,\t-0.989609448998790660,\t-0.989616636840028980,\t-0.989623822207225780,\t-0.989631005100363060,\t-0.989638185519422840,\t-0.989645363464387030,\t\n-0.989652538935237860,\t-0.989659711931957560,\t-0.989666882454527830,\t-0.989674050502930780,\t-0.989681216077148650,\t-0.989688379177163570,\t-0.989695539802957440,\t-0.989702697954512710,\t\n-0.989709853631810970,\t-0.989717006834834660,\t-0.989724157563565800,\t-0.989731305817986630,\t-0.989738451598079160,\t-0.989745594903825520,\t-0.989752735735207940,\t-0.989759874092208450,\t\n-0.989767009974809490,\t-0.989774143382992850,\t-0.989781274316740790,\t-0.989788402776035640,\t-0.989795528760859410,\t-0.989802652271194350,\t-0.989809773307022800,\t-0.989816891868326780,\t\n-0.989824007955088400,\t-0.989831121567290140,\t-0.989838232704914000,\t-0.989845341367942220,\t-0.989852447556357150,\t-0.989859551270141020,\t-0.989866652509275970,\t-0.989873751273744220,\t\n-0.989880847563528230,\t-0.989887941378610030,\t-0.989895032718972060,\t-0.989902121584596450,\t-0.989909207975465440,\t-0.989916291891561610,\t-0.989923373332866950,\t-0.989930452299363830,\t\n-0.989937528791034580,\t-0.989944602807861560,\t-0.989951674349827000,\t-0.989958743416913260,\t-0.989965810009102550,\t-0.989972874126377470,\t-0.989979935768720120,\t-0.989986994936113080,\t\n-0.989994051628538490,\t-0.990001105845978670,\t-0.990008157588416090,\t-0.990015206855833220,\t-0.990022253648212280,\t-0.990029297965535740,\t-0.990036339807785940,\t-0.990043379174945230,\t\n-0.990050416066996180,\t-0.990057450483920910,\t-0.990064482425702220,\t-0.990071511892322120,\t-0.990078538883763400,\t-0.990085563400008310,\t-0.990092585441039400,\t-0.990099605006838910,\t\n-0.990106622097389310,\t-0.990113636712673270,\t-0.990120648852673150,\t-0.990127658517371390,\t-0.990134665706750570,\t-0.990141670420792930,\t-0.990148672659481250,\t-0.990155672422797780,\t\n-0.990162669710725200,\t-0.990169664523245840,\t-0.990176656860342400,\t-0.990183646721997320,\t-0.990190634108193080,\t-0.990197619018912460,\t-0.990204601454137580,\t-0.990211581413851240,\t\n-0.990218558898035890,\t-0.990225533906674230,\t-0.990232506439748690,\t-0.990239476497241980,\t-0.990246444079136530,\t-0.990253409185414930,\t-0.990260371816059860,\t-0.990267331971053770,\t\n-0.990274289650379340,\t-0.990281244854019250,\t-0.990288197581956080,\t-0.990295147834172380,\t-0.990302095610650750,\t-0.990309040911374060,\t-0.990315983736324680,\t-0.990322924085485280,\t\n-0.990329861958838540,\t-0.990336797356367260,\t-0.990343730278054000,\t-0.990350660723881340,\t-0.990357588693832060,\t-0.990364514187888840,\t-0.990371437206034270,\t-0.990378357748251110,\t\n-0.990385275814521960,\t-0.990392191404829810,\t-0.990399104519157030,\t-0.990406015157486610,\t-0.990412923319801130,\t-0.990419829006083390,\t-0.990426732216315940,\t-0.990433632950481700,\t\n-0.990440531208563460,\t-0.990447426990543780,\t-0.990454320296405680,\t-0.990461211126131720,\t-0.990468099479704710,\t-0.990474985357107430,\t-0.990481868758322670,\t-0.990488749683333220,\t\n-0.990495628132121890,\t-0.990502504104671560,\t-0.990509377600964910,\t-0.990516248620984970,\t-0.990523117164714310,\t-0.990529983232135920,\t-0.990536846823232400,\t-0.990543707937986850,\t\n-0.990550566576382070,\t-0.990557422738400970,\t-0.990564276424026220,\t-0.990571127633240730,\t-0.990577976366027400,\t-0.990584822622369130,\t-0.990591666402248830,\t-0.990598507705649390,\t\n-0.990605346532553720,\t-0.990612182882944610,\t-0.990619016756805190,\t-0.990625848154118030,\t-0.990632677074866350,\t-0.990639503519032960,\t-0.990646327486600750,\t-0.990653148977552740,\t\n-0.990659967991872060,\t-0.990666784529541270,\t-0.990673598590543490,\t-0.990680410174861860,\t-0.990687219282479050,\t-0.990694025913378300,\t-0.990700830067542390,\t-0.990707631744954460,\t\n-0.990714430945597410,\t-0.990721227669454360,\t-0.990728021916508330,\t-0.990734813686742100,\t-0.990741602980138800,\t-0.990748389796681560,\t-0.990755174136353280,\t-0.990761955999137300,\t\n-0.990768735385016200,\t-0.990775512293973320,\t-0.990782286725991670,\t-0.990789058681054270,\t-0.990795828159144240,\t-0.990802595160244600,\t-0.990809359684338480,\t-0.990816121731408980,\t\n-0.990822881301439250,\t-0.990829638394412290,\t-0.990836393010311230,\t-0.990843145149119200,\t-0.990849894810819200,\t-0.990856641995394470,\t-0.990863386702828250,\t-0.990870128933103670,\t\n-0.990876868686203500,\t-0.990883605962111340,\t-0.990890340760810060,\t-0.990897073082282920,\t-0.990903802926513140,\t-0.990910530293483860,\t-0.990917255183178190,\t-0.990923977595579490,\t\n-0.990930697530670870,\t-0.990937414988435460,\t-0.990944129968856500,\t-0.990950842471917110,\t-0.990957552497600760,\t-0.990964260045890440,\t-0.990970965116769630,\t-0.990977667710221220,\t\n-0.990984367826228780,\t-0.990991065464775330,\t-0.990997760625844220,\t-0.991004453309418660,\t-0.991011143515482030,\t-0.991017831244017540,\t-0.991024516495008450,\t-0.991031199268438190,\t\n-0.991037879564289790,\t-0.991044557382546820,\t-0.991051232723192290,\t-0.991057905586209760,\t-0.991064575971582480,\t-0.991071243879293910,\t-0.991077909309327040,\t-0.991084572261665350,\t\n-0.991091232736292290,\t-0.991097890733191210,\t-0.991104546252345340,\t-0.991111199293738140,\t-0.991117849857352850,\t-0.991124497943173030,\t-0.991131143551181930,\t-0.991137786681363100,\t\n-0.991144427333699670,\t-0.991151065508175220,\t-0.991157701204773090,\t-0.991164334423476730,\t-0.991170965164269610,\t-0.991177593427134960,\t-0.991184219212056240,\t-0.991190842519017120,\t\n-0.991197463348000850,\t-0.991204081698990880,\t-0.991210697571970780,\t-0.991217310966923890,\t-0.991223921883833680,\t-0.991230530322683710,\t-0.991237136283457550,\t-0.991243739766138440,\t\n-0.991250340770709950,\t-0.991256939297155640,\t-0.991263535345458860,\t-0.991270128915603400,\t-0.991276720007572610,\t-0.991283308621350060,\t-0.991289894756919090,\t-0.991296478414263490,\t\n-0.991303059593366620,\t-0.991309638294212150,\t-0.991316214516783530,\t-0.991322788261064350,\t-0.991329359527038270,\t-0.991335928314688970,\t-0.991342494623999590,\t-0.991349058454954020,\t\n-0.991355619807535840,\t-0.991362178681728600,\t-0.991368735077515880,\t-0.991375288994881480,\t-0.991381840433808730,\t-0.991388389394281420,\t-0.991394935876283130,\t-0.991401479879797430,\t\n-0.991408021404808100,\t-0.991414560451298720,\t-0.991421097019252850,\t-0.991427631108654280,\t-0.991434162719486810,\t-0.991440691851733780,\t-0.991447218505378980,\t-0.991453742680406200,\t\n-0.991460264376799020,\t-0.991466783594541100,\t-0.991473300333616470,\t-0.991479814594008470,\t-0.991486326375700890,\t-0.991492835678677520,\t-0.991499342502921930,\t-0.991505846848418140,\t\n-0.991512348715149710,\t-0.991518848103100430,\t-0.991525345012253980,\t-0.991531839442594150,\t-0.991538331394104850,\t-0.991544820866769650,\t-0.991551307860572330,\t-0.991557792375496790,\t\n-0.991564274411526720,\t-0.991570753968646130,\t-0.991577231046838480,\t-0.991583705646087890,\t-0.991590177766377920,\t-0.991596647407692490,\t-0.991603114570015490,\t-0.991609579253330710,\t\n-0.991616041457621940,\t-0.991622501182873100,\t-0.991628958429068060,\t-0.991635413196190640,\t-0.991641865484224620,\t-0.991648315293154000,\t-0.991654762622962480,\t-0.991661207473634070,\t\n-0.991667649845152650,\t-0.991674089737502260,\t-0.991680527150666570,\t-0.991686962084629480,\t-0.991693394539374990,\t-0.991699824514887030,\t-0.991706252011149590,\t-0.991712677028146360,\t\n-0.991719099565861570,\t-0.991725519624279020,\t-0.991731937203382710,\t-0.991738352303156550,\t-0.991744764923584430,\t-0.991751175064650380,\t-0.991757582726338400,\t-0.991763987908632520,\t\n-0.991770390611516730,\t-0.991776790834974830,\t-0.991783188578991060,\t-0.991789583843549210,\t-0.991795976628633500,\t-0.991802366934227740,\t-0.991808754760316160,\t-0.991815140106882650,\t\n-0.991821522973911350,\t-0.991827903361386260,\t-0.991834281269291300,\t-0.991840656697610680,\t-0.991847029646328430,\t-0.991853400115428550,\t-0.991859768104895290,\t-0.991866133614712650,\t\n-0.991872496644864540,\t-0.991878857195335200,\t-0.991885215266108730,\t-0.991891570857169170,\t-0.991897923968500740,\t-0.991904274600087570,\t-0.991910622751913550,\t-0.991916968423963040,\t\n-0.991923311616220160,\t-0.991929652328669140,\t-0.991935990561293780,\t-0.991942326314078530,\t-0.991948659587007400,\t-0.991954990380064630,\t-0.991961318693234450,\t-0.991967644526500990,\t\n-0.991973967879848260,\t-0.991980288753260720,\t-0.991986607146722490,\t-0.991992923060217690,\t-0.991999236493730560,\t-0.992005547447245340,\t-0.992011855920746250,\t-0.992018161914217540,\t\n-0.992024465427643550,\t-0.992030766461008300,\t-0.992037065014296120,\t-0.992043361087491250,\t-0.992049654680578040,\t-0.992055945793540620,\t-0.992062234426363540,\t-0.992068520579030610,\t\n-0.992074804251526500,\t-0.992081085443835330,\t-0.992087364155941450,\t-0.992093640387829210,\t-0.992099914139482840,\t-0.992106185410886690,\t-0.992112454202025100,\t-0.992118720512882410,\t\n-0.992124984343442870,\t-0.992131245693690820,\t-0.992137504563610720,\t-0.992143760953186790,\t-0.992150014862403510,\t-0.992156266291245310,\t-0.992162515239696340,\t-0.992168761707741040,\t\n-0.992175005695363880,\t-0.992181247202549190,\t-0.992187486229281320,\t-0.992193722775544850,\t-0.992199956841324000,\t-0.992206188426603240,\t-0.992212417531367130,\t-0.992218644155599900,\t\n-0.992224868299286020,\t-0.992231089962410050,\t-0.992237309144956230,\t-0.992243525846909220,\t-0.992249740068253510,\t-0.992255951808973300,\t-0.992262161069053290,\t-0.992268367848477830,\t\n-0.992274572147231470,\t-0.992280773965298570,\t-0.992286973302663910,\t-0.992293170159311620,\t-0.992299364535226600,\t-0.992305556430393090,\t-0.992311745844795760,\t-0.992317932778418950,\t\n-0.992324117231247360,\t-0.992330299203265430,\t-0.992336478694457850,\t-0.992342655704809060,\t-0.992348830234303650,\t-0.992355002282926060,\t-0.992361171850660970,\t-0.992367338937493070,\t\n-0.992373503543406700,\t-0.992379665668386530,\t-0.992385825312417370,\t-0.992391982475483550,\t-0.992398137157569750,\t-0.992404289358660760,\t-0.992410439078740940,\t-0.992416586317794950,\t\n-0.992422731075807580,\t-0.992428873352763310,\t-0.992435013148647020,\t-0.992441150463443060,\t-0.992447285297136220,\t-0.992453417649711180,\t-0.992459547521152620,\t-0.992465674911445220,\t\n-0.992471799820573540,\t-0.992477922248522380,\t-0.992484042195276530,\t-0.992490159660820440,\t-0.992496274645139120,\t-0.992502387148216920,\t-0.992508497170038860,\t-0.992514604710589500,\t\n-0.992520709769853740,\t-0.992526812347816030,\t-0.992532912444461510,\t-0.992539010059774630,\t-0.992545105193740170,\t-0.992551197846342940,\t-0.992557288017567710,\t-0.992563375707399280,\t\n-0.992569460915822430,\t-0.992575543642821860,\t-0.992581623888382450,\t-0.992587701652489220,\t-0.992593776935126510,\t-0.992599849736279350,\t-0.992605920055932620,\t-0.992611987894071010,\t\n-0.992618053250679530,\t-0.992624116125742970,\t-0.992630176519246010,\t-0.992636234431173550,\t-0.992642289861510600,\t-0.992648342810241950,\t-0.992654393277352390,\t-0.992660441262826820,\t\n-0.992666486766650150,\t-0.992672529788807270,\t-0.992678570329283190,\t-0.992684608388062610,\t-0.992690643965130510,\t-0.992696677060471710,\t-0.992702707674071320,\t-0.992708735805914120,\t\n-0.992714761455985140,\t-0.992720784624269270,\t-0.992726805310751300,\t-0.992732823515416360,\t-0.992738839238249460,\t-0.992744852479235380,\t-0.992750863238359150,\t-0.992756871515605770,\t\n-0.992762877310960250,\t-0.992768880624407490,\t-0.992774881455932730,\t-0.992780879805520540,\t-0.992786875673156270,\t-0.992792869058824690,\t-0.992798859962511050,\t-0.992804848384200240,\t\n-0.992810834323877290,\t-0.992816817781527310,\t-0.992822798757135190,\t-0.992828777250686080,\t-0.992834753262165080,\t-0.992840726791557100,\t-0.992846697838847380,\t-0.992852666404020920,\t\n-0.992858632487062740,\t-0.992864596087958180,\t-0.992870557206691930,\t-0.992876515843249320,\t-0.992882471997615480,\t-0.992888425669775420,\t-0.992894376859714270,\t-0.992900325567417250,\t\n-0.992906271792869390,\t-0.992912215536055800,\t-0.992918156796961720,\t-0.992924095575572150,\t-0.992930031871872450,\t-0.992935965685847630,\t-0.992941897017482920,\t-0.992947825866763440,\t\n-0.992953752233674440,\t-0.992959676118201020,\t-0.992965597520328420,\t-0.992971516440041890,\t-0.992977432877326430,\t-0.992983346832167490,\t-0.992989258304550200,\t-0.992995167294459800,\t\n-0.993001073801881410,\t-0.993006977826800250,\t-0.993012879369201800,\t-0.993018778429071050,\t-0.993024675006393350,\t-0.993030569101153950,\t-0.993036460713338180,\t-0.993042349842931380,\t\n-0.993048236489918580,\t-0.993054120654285110,\t-0.993060002336016430,\t-0.993065881535097780,\t-0.993071758251514390,\t-0.993077632485251600,\t-0.993083504236294770,\t-0.993089373504629110,\t\n-0.993095240290239990,\t-0.993101104593112850,\t-0.993106966413232930,\t-0.993112825750585570,\t-0.993118682605156120,\t-0.993124536976930040,\t-0.993130388865892550,\t-0.993136238272029240,\t\n-0.993142085195325210,\t-0.993147929635765920,\t-0.993153771593336840,\t-0.993159611068023310,\t-0.993165448059810880,\t-0.993171282568684810,\t-0.993177114594630430,\t-0.993182944137633310,\t\n-0.993188771197678790,\t-0.993194595774752330,\t-0.993200417868839500,\t-0.993206237479925540,\t-0.993212054607996000,\t-0.993217869253036230,\t-0.993223681415032030,\t-0.993229491093968410,\t\n-0.993235298289831150,\t-0.993241103002605600,\t-0.993246905232277320,\t-0.993252704978831780,\t-0.993258502242254540,\t-0.993264297022531050,\t-0.993270089319646670,\t-0.993275879133587170,\t\n-0.993281666464337910,\t-0.993287451311884560,\t-0.993293233676212470,\t-0.993299013557307430,\t-0.993304790955154780,\t-0.993310565869740200,\t-0.993316338301049150,\t-0.993322108249067300,\t\n-0.993327875713780120,\t-0.993333640695173270,\t-0.993339403193232330,\t-0.993345163207942970,\t-0.993350920739290650,\t-0.993356675787261060,\t-0.993362428351839630,\t-0.993368178433012280,\t\n-0.993373926030764350,\t-0.993379671145081740,\t-0.993385413775949910,\t-0.993391153923354420,\t-0.993396891587281280,\t-0.993402626767715850,\t-0.993408359464643790,\t-0.993414089678050780,\t\n-0.993419817407922620,\t-0.993425542654244880,\t-0.993431265417003330,\t-0.993436985696183660,\t-0.993442703491771440,\t-0.993448418803752450,\t-0.993454131632112380,\t-0.993459841976837010,\t\n-0.993465549837912130,\t-0.993471255215323310,\t-0.993476958109056340,\t-0.993482658519097010,\t-0.993488356445431100,\t-0.993494051888044180,\t-0.993499744846922160,\t-0.993505435322050710,\t\n-0.993511123313415730,\t-0.993516808821003130,\t-0.993522491844798350,\t-0.993528172384787300,\t-0.993533850440955770,\t-0.993539526013289760,\t-0.993545199101774860,\t-0.993550869706396940,\t\n-0.993556537827141820,\t-0.993562203463995490,\t-0.993567866616943520,\t-0.993573527285972040,\t-0.993579185471066610,\t-0.993584841172213240,\t-0.993590494389397730,\t-0.993596145122606080,\t\n-0.993601793371823970,\t-0.993607439137037530,\t-0.993613082418232430,\t-0.993618723215394570,\t-0.993624361528509860,\t-0.993629997357564300,\t-0.993635630702543680,\t-0.993641261563434130,\t\n-0.993646889940221320,\t-0.993652515832891270,\t-0.993658139241430090,\t-0.993663760165823470,\t-0.993669378606057420,\t-0.993674994562117830,\t-0.993680608033990830,\t-0.993686219021662430,\t\n-0.993691827525118420,\t-0.993697433544344810,\t-0.993703037079327610,\t-0.993708638130052830,\t-0.993714236696506380,\t-0.993719832778674480,\t-0.993725426376542930,\t-0.993731017490097730,\t\n-0.993736606119325130,\t-0.993742192264211010,\t-0.993747775924741280,\t-0.993753357100902180,\t-0.993758935792679710,\t-0.993764512000059890,\t-0.993770085723028830,\t-0.993775656961572550,\t\n-0.993781225715677060,\t-0.993786791985328600,\t-0.993792355770513060,\t-0.993797917071216670,\t-0.993803475887425460,\t-0.993809032219125530,\t-0.993814586066303130,\t-0.993820137428944150,\t\n-0.993825686307034940,\t-0.993831232700561510,\t-0.993836776609509980,\t-0.993842318033866470,\t-0.993847856973617110,\t-0.993853393428748120,\t-0.993858927399245860,\t-0.993864458885096110,\t\n-0.993869987886285220,\t-0.993875514402799310,\t-0.993881038434624720,\t-0.993886559981747460,\t-0.993892079044153780,\t-0.993897595621830000,\t-0.993903109714762150,\t-0.993908621322936560,\t\n-0.993914130446339470,\t-0.993919637084957010,\t-0.993925141238775400,\t-0.993930642907780990,\t-0.993936142091959910,\t-0.993941638791298600,\t-0.993947133005783190,\t-0.993952624735399910,\t\n-0.993958113980135010,\t-0.993963600739974810,\t-0.993969085014905660,\t-0.993974566804913810,\t-0.993980046109985470,\t-0.993985522930107110,\t-0.993990997265264850,\t-0.993996469115445260,\t\n-0.994001938480634450,\t-0.994007405360818660,\t-0.994012869755984460,\t-0.994018331666118080,\t-0.994023791091205760,\t-0.994029248031234160,\t-0.994034702486189300,\t-0.994040154456057760,\t\n-0.994045603940825750,\t-0.994051050940479740,\t-0.994056495455006180,\t-0.994061937484391310,\t-0.994067377028621580,\t-0.994072814087683440,\t-0.994078248661563360,\t-0.994083680750247670,\t\n-0.994089110353722600,\t-0.994094537471974850,\t-0.994099962104990740,\t-0.994105384252756740,\t-0.994110803915259300,\t-0.994116221092484880,\t-0.994121635784419810,\t-0.994127047991050670,\t\n-0.994132457712363920,\t-0.994137864948346110,\t-0.994143269698983480,\t-0.994148671964262820,\t-0.994154071744170360,\t-0.994159469038692790,\t-0.994164863847816660,\t-0.994170256171528210,\t\n-0.994175646009814120,\t-0.994181033362660950,\t-0.994186418230055270,\t-0.994191800611983530,\t-0.994197180508432200,\t-0.994202557919387940,\t-0.994207932844837330,\t-0.994213305284766810,\t\n-0.994218675239163070,\t-0.994224042708012680,\t-0.994229407691302190,\t-0.994234770189018070,\t-0.994240130201147100,\t-0.994245487727675960,\t-0.994250842768590880,\t-0.994256195323878770,\t\n-0.994261545393526180,\t-0.994266892977519690,\t-0.994272238075845970,\t-0.994277580688491810,\t-0.994282920815443560,\t-0.994288258456688000,\t-0.994293593612211810,\t-0.994298926282001560,\t\n-0.994304256466044030,\t-0.994309584164325910,\t-0.994314909376833870,\t-0.994320232103554470,\t-0.994325552344474620,\t-0.994330870099580770,\t-0.994336185368859820,\t-0.994341498152298330,\t\n-0.994346808449883100,\t-0.994352116261600800,\t-0.994357421587438450,\t-0.994362724427382380,\t-0.994368024781419390,\t-0.994373322649536480,\t-0.994378618031720230,\t-0.994383910927957420,\t\n-0.994389201338234830,\t-0.994394489262539260,\t-0.994399774700857500,\t-0.994405057653176330,\t-0.994410338119482430,\t-0.994415616099762700,\t-0.994420891594003930,\t-0.994426164602192910,\t\n-0.994431435124316530,\t-0.994436703160361590,\t-0.994441968710314870,\t-0.994447231774163170,\t-0.994452492351893480,\t-0.994457750443492490,\t-0.994463006048947110,\t-0.994468259168244220,\t\n-0.994473509801370730,\t-0.994478757948313420,\t-0.994484003609059200,\t-0.994489246783595070,\t-0.994494487471907830,\t-0.994499725673984260,\t-0.994504961389811370,\t-0.994510194619376180,\t\n-0.994515425362665570,\t-0.994520653619666240,\t-0.994525879390365300,\t-0.994531102674749650,\t-0.994536323472806290,\t-0.994541541784522030,\t-0.994546757609883980,\t-0.994551970948879040,\t\n-0.994557181801494220,\t-0.994562390167716410,\t-0.994567596047532640,\t-0.994572799440929910,\t-0.994578000347895120,\t-0.994583198768415280,\t-0.994588394702477510,\t-0.994593588150068820,\t\n-0.994598779111176110,\t-0.994603967585786400,\t-0.994609153573886800,\t-0.994614337075464320,\t-0.994619518090505970,\t-0.994624696618998880,\t-0.994629872660930060,\t-0.994635046216286510,\t\n-0.994640217285055360,\t-0.994645385867223730,\t-0.994650551962778520,\t-0.994655715571706960,\t-0.994660876693996170,\t-0.994666035329633160,\t-0.994671191478605050,\t-0.994676345140898980,\t\n-0.994681496316502050,\t-0.994686645005401380,\t-0.994691791207584110,\t-0.994696934923037230,\t-0.994702076151748100,\t-0.994707214893703840,\t-0.994712351148891450,\t-0.994717484917298280,\t\n-0.994722616198911450,\t-0.994727744993717970,\t-0.994732871301705070,\t-0.994737995122860100,\t-0.994743116457170060,\t-0.994748235304622310,\t-0.994753351665203960,\t-0.994758465538902240,\t\n-0.994763576925704270,\t-0.994768685825597410,\t-0.994773792238568880,\t-0.994778896164605800,\t-0.994783997603695510,\t-0.994789096555825260,\t-0.994794193020982150,\t-0.994799286999153650,\t\n-0.994804378490326990,\t-0.994809467494489290,\t-0.994814554011627990,\t-0.994819638041730240,\t-0.994824719584783470,\t-0.994829798640774920,\t-0.994834875209691720,\t-0.994839949291521420,\t\n-0.994845020886251260,\t-0.994850089993868590,\t-0.994855156614360640,\t-0.994860220747714740,\t-0.994865282393918360,\t-0.994870341552958730,\t-0.994875398224823290,\t-0.994880452409499410,\t\n-0.994885504106974290,\t-0.994890553317235530,\t-0.994895600040270220,\t-0.994900644276066060,\t-0.994905686024610160,\t-0.994910725285890200,\t-0.994915762059893400,\t-0.994920796346607130,\t\n-0.994925828146018820,\t-0.994930857458116050,\t-0.994935884282886040,\t-0.994940908620316370,\t-0.994945930470394370,\t-0.994950949833107610,\t-0.994955966708443550,\t-0.994960981096389530,\t\n-0.994965992996933000,\t-0.994971002410061420,\t-0.994976009335762470,\t-0.994981013774023370,\t-0.994986015724831920,\t-0.994991015188175340,\t-0.994996012164041210,\t-0.995001006652416970,\t\n-0.995005998653290310,\t-0.995010988166648680,\t-0.995015975192479530,\t-0.995020959730770430,\t-0.995025941781508940,\t-0.995030921344682630,\t-0.995035898420279060,\t-0.995040873008285590,\t\n-0.995045845108690100,\t-0.995050814721479830,\t-0.995055781846642670,\t-0.995060746484166090,\t-0.995065708634037540,\t-0.995070668296244690,\t-0.995075625470775220,\t-0.995080580157616690,\t\n-0.995085532356756670,\t-0.995090482068182850,\t-0.995095429291882770,\t-0.995100374027844240,\t-0.995105316276054700,\t-0.995110256036501940,\t-0.995115193309173420,\t-0.995120128094057030,\t\n-0.995125060391140240,\t-0.995129990200410820,\t-0.995134917521856450,\t-0.995139842355464820,\t-0.995144764701223480,\t-0.995149684559120340,\t-0.995154601929142850,\t-0.995159516811279010,\t\n-0.995164429205516290,\t-0.995169339111842470,\t-0.995174246530245330,\t-0.995179151460712560,\t-0.995184053903232060,\t-0.995188953857791270,\t-0.995193851324378100,\t-0.995198746302980330,\t\n-0.995203638793585750,\t-0.995208528796181930,\t-0.995213416310756990,\t-0.995218301337298380,\t-0.995223183875794120,\t-0.995228063926231750,\t-0.995232941488599310,\t-0.995237816562884460,\t\n-0.995242689149075100,\t-0.995247559247159020,\t-0.995252426857124010,\t-0.995257291978958070,\t-0.995262154612648780,\t-0.995267014758184130,\t-0.995271872415551930,\t-0.995276727584740060,\t\n-0.995281580265736320,\t-0.995286430458528830,\t-0.995291278163105030,\t-0.995296123379453170,\t-0.995300966107560910,\t-0.995305806347416280,\t-0.995310644099007160,\t-0.995315479362321340,\t\n-0.995320312137346840,\t-0.995325142424071660,\t-0.995329970222483600,\t-0.995334795532570650,\t-0.995339618354320610,\t-0.995344438687721490,\t-0.995349256532761410,\t-0.995354071889428040,\t\n-0.995358884757709730,\t-0.995363695137594040,\t-0.995368503029069100,\t-0.995373308432122910,\t-0.995378111346743480,\t-0.995382911772918710,\t-0.995387709710636730,\t-0.995392505159885420,\t\n-0.995397298120652920,\t-0.995402088592927110,\t-0.995406876576696130,\t-0.995411662071947980,\t-0.995416445078670550,\t-0.995421225596852090,\t-0.995426003626480590,\t-0.995430779167544190,\t\n-0.995435552220030660,\t-0.995440322783928240,\t-0.995445090859225060,\t-0.995449856445909220,\t-0.995454619543968630,\t-0.995459380153391530,\t-0.995464138274166020,\t-0.995468893906280130,\t\n-0.995473647049722080,\t-0.995478397704479880,\t-0.995483145870541650,\t-0.995487891547895520,\t-0.995492634736529710,\t-0.995497375436432350,\t-0.995502113647591560,\t-0.995506849369995450,\t\n-0.995511582603632150,\t-0.995516313348490000,\t-0.995521041604557010,\t-0.995525767371821410,\t-0.995530490650271330,\t-0.995535211439895100,\t-0.995539929740680840,\t-0.995544645552616790,\t\n-0.995549358875691180,\t-0.995554069709892020,\t-0.995558778055207760,\t-0.995563483911626520,\t-0.995568187279136650,\t-0.995572888157726270,\t-0.995577586547383710,\t-0.995582282448097100,\t\n-0.995586975859854780,\t-0.995591666782645100,\t-0.995596355216456170,\t-0.995601041161276460,\t-0.995605724617094070,\t-0.995610405583897350,\t-0.995615084061674650,\t-0.995619760050414300,\t\n-0.995624433550104440,\t-0.995629104560733610,\t-0.995633773082289950,\t-0.995638439114761800,\t-0.995643102658137600,\t-0.995647763712405710,\t-0.995652422277554460,\t-0.995657078353571980,\t\n-0.995661731940446940,\t-0.995666383038167460,\t-0.995671031646722100,\t-0.995675677766099110,\t-0.995680321396286930,\t-0.995684962537274010,\t-0.995689601189048590,\t-0.995694237351599340,\t\n-0.995698871024914280,\t-0.995703502208982180,\t-0.995708130903791290,\t-0.995712757109330050,\t-0.995717380825587030,\t-0.995722002052550460,\t-0.995726620790208910,\t-0.995731237038550710,\t\n-0.995735850797564550,\t-0.995740462067238650,\t-0.995745070847561700,\t-0.995749677138522030,\t-0.995754280940108090,\t-0.995758882252308570,\t-0.995763481075111810,\t-0.995768077408506370,\t\n-0.995772671252480700,\t-0.995777262607023370,\t-0.995781851472122840,\t-0.995786437847767770,\t-0.995791021733946510,\t-0.995795603130647740,\t-0.995800182037860030,\t-0.995804758455571700,\t\n-0.995809332383771560,\t-0.995813903822448170,\t-0.995818472771589860,\t-0.995823039231185540,\t-0.995827603201223430,\t-0.995832164681692560,\t-0.995836723672581140,\t-0.995841280173877850,\t\n-0.995845834185571490,\t-0.995850385707650390,\t-0.995854934740103450,\t-0.995859481282919230,\t-0.995864025336086200,\t-0.995868566899593130,\t-0.995873105973428600,\t-0.995877642557581380,\t\n-0.995882176652039930,\t-0.995886708256793150,\t-0.995891237371829610,\t-0.995895763997137860,\t-0.995900288132706920,\t-0.995904809778525020,\t-0.995909328934581280,\t-0.995913845600864040,\t\n-0.995918359777362320,\t-0.995922871464064660,\t-0.995927380660959870,\t-0.995931887368036620,\t-0.995936391585283580,\t-0.995940893312689650,\t-0.995945392550243390,\t-0.995949889297933710,\t\n-0.995954383555749280,\t-0.995958875323678880,\t-0.995963364601711310,\t-0.995967851389835350,\t-0.995972335688039780,\t-0.995976817496313280,\t-0.995981296814644870,\t-0.995985773643023100,\t\n-0.995990247981436980,\t-0.995994719829875200,\t-0.995999189188326640,\t-0.996003656056780100,\t-0.996008120435224350,\t-0.996012582323648420,\t-0.996017041722040970,\t-0.996021498630390910,\t\n-0.996025953048687020,\t-0.996030404976918420,\t-0.996034854415073670,\t-0.996039301363141890,\t-0.996043745821111880,\t-0.996048187788972420,\t-0.996052627266712510,\t-0.996057064254320950,\t\n-0.996061498751786960,\t-0.996065930759098990,\t-0.996070360276246290,\t-0.996074787303217630,\t-0.996079211840002140,\t-0.996083633886588490,\t-0.996088053442965800,\t-0.996092470509122970,\t\n-0.996096885085048900,\t-0.996101297170732700,\t-0.996105706766163280,\t-0.996110113871329640,\t-0.996114518486220570,\t-0.996118920610825300,\t-0.996123320245132620,\t-0.996127717389131750,\t\n-0.996132112042811600,\t-0.996136504206161180,\t-0.996140893879169380,\t-0.996145281061825430,\t-0.996149665754118230,\t-0.996154047956036900,\t-0.996158427667570460,\t-0.996162804888707900,\t\n-0.996167179619438350,\t-0.996171551859750930,\t-0.996175921609634530,\t-0.996180288869078390,\t-0.996184653638071520,\t-0.996189015916602920,\t-0.996193375704661820,\t-0.996197733002237460,\t\n-0.996202087809318630,\t-0.996206440125894540,\t-0.996210789951954330,\t-0.996215137287487230,\t-0.996219482132482240,\t-0.996223824486928590,\t-0.996228164350815290,\t-0.996232501724131690,\t\n-0.996236836606866900,\t-0.996241168999009830,\t-0.996245498900549920,\t-0.996249826311476290,\t-0.996254151231778070,\t-0.996258473661444490,\t-0.996262793600464770,\t-0.996267111048827920,\t\n-0.996271426006523410,\t-0.996275738473540230,\t-0.996280048449867840,\t-0.996284355935495250,\t-0.996288660930411800,\t-0.996292963434606600,\t-0.996297263448069130,\t-0.996301560970788370,\t\n-0.996305856002753900,\t-0.996310148543954610,\t-0.996314438594380070,\t-0.996318726154019400,\t-0.996323011222861820,\t-0.996327293800896910,\t-0.996331573888113550,\t-0.996335851484501430,\t\n-0.996340126590049560,\t-0.996344399204747380,\t-0.996348669328584240,\t-0.996352936961549470,\t-0.996357202103632210,\t-0.996361464754822120,\t-0.996365724915108220,\t-0.996369982584480170,\t\n-0.996374237762927110,\t-0.996378490450438360,\t-0.996382740647003500,\t-0.996386988352611750,\t-0.996391233567252450,\t-0.996395476290915180,\t-0.996399716523589160,\t-0.996403954265263850,\t\n-0.996408189515928690,\t-0.996412422275573030,\t-0.996416652544186320,\t-0.996420880321758020,\t-0.996425105608277460,\t-0.996429328403734100,\t-0.996433548708117510,\t-0.996437766521417020,\t\n-0.996441981843622090,\t-0.996446194674722290,\t-0.996450405014706830,\t-0.996454612863565510,\t-0.996458818221287680,\t-0.996463021087862780,\t-0.996467221463280260,\t-0.996471419347529700,\t\n-0.996475614740600530,\t-0.996479807642482450,\t-0.996483998053164790,\t-0.996488185972637110,\t-0.996492371400888980,\t-0.996496554337910070,\t-0.996500734783689610,\t-0.996504912738217290,\t\n-0.996509088201482760,\t-0.996513261173475500,\t-0.996517431654185050,\t-0.996521599643601210,\t-0.996525765141713200,\t-0.996529928148510710,\t-0.996534088663983520,\t-0.996538246688121080,\t\n-0.996542402220913060,\t-0.996546555262348920,\t-0.996550705812418450,\t-0.996554853871111310,\t-0.996558999438416860,\t-0.996563142514325100,\t-0.996567283098825360,\t-0.996571421191907450,\t\n-0.996575556793561020,\t-0.996579689903775660,\t-0.996583820522541130,\t-0.996587948649847010,\t-0.996592074285682970,\t-0.996596197430038800,\t-0.996600318082904170,\t-0.996604436244268640,\t\n-0.996608551914122010,\t-0.996612665092454160,\t-0.996616775779254450,\t-0.996620883974512980,\t-0.996624989678219220,\t-0.996629092890363060,\t-0.996633193610934050,\t-0.996637291839922110,\t\n-0.996641387577316910,\t-0.996645480823108220,\t-0.996649571577285950,\t-0.996653659839839670,\t-0.996657745610759260,\t-0.996661828890034520,\t-0.996665909677655120,\t-0.996669987973610950,\t\n-0.996674063777891920,\t-0.996678137090487580,\t-0.996682207911388060,\t-0.996686276240582920,\t-0.996690342078062170,\t-0.996694405423815490,\t-0.996698466277832760,\t-0.996702524640104000,\t\n-0.996706580510618780,\t-0.996710633889367200,\t-0.996714684776339070,\t-0.996718733171524150,\t-0.996722779074912470,\t-0.996726822486493690,\t-0.996730863406257940,\t-0.996734901834195110,\t\n-0.996738937770294990,\t-0.996742971214547470,\t-0.996747002166942560,\t-0.996751030627470170,\t-0.996755056596120180,\t-0.996759080072882500,\t-0.996763101057747130,\t-0.996767119550704070,\t\n-0.996771135551743240,\t-0.996775149060854520,\t-0.996779160078027910,\t-0.996783168603253330,\t-0.996787174636521000,\t-0.996791178177820590,\t-0.996795179227142230,\t-0.996799177784476020,\t\n-0.996803173849811870,\t-0.996807167423139680,\t-0.996811158504449680,\t-0.996815147093731760,\t-0.996819133190975930,\t-0.996823116796172300,\t-0.996827097909310900,\t-0.996831076530381720,\t\n-0.996835052659374890,\t-0.996839026296280410,\t-0.996842997441088290,\t-0.996846966093788760,\t-0.996850932254371710,\t-0.996854895922827390,\t-0.996858857099145900,\t-0.996862815783317150,\t\n-0.996866771975331470,\t-0.996870725675178870,\t-0.996874676882849360,\t-0.996878625598333290,\t-0.996882571821620540,\t-0.996886515552701360,\t-0.996890456791565960,\t-0.996894395538204360,\t\n-0.996898331792606780,\t-0.996902265554763470,\t-0.996906196824664300,\t-0.996910125602299750,\t-0.996914051887659910,\t-0.996917975680734920,\t-0.996921896981515010,\t-0.996925815789990290,\t\n-0.996929732106151100,\t-0.996933645929987570,\t-0.996937557261489920,\t-0.996941466100648380,\t-0.996945372447453180,\t-0.996949276301894450,\t-0.996953177663962740,\t-0.996957076533647960,\t\n-0.996960972910940440,\t-0.996964866795830520,\t-0.996968758188308430,\t-0.996972647088364530,\t-0.996976533495988910,\t-0.996980417411172050,\t-0.996984298833904050,\t-0.996988177764175370,\t\n-0.996992054201976230,\t-0.996995928147296980,\t-0.996999799600127860,\t-0.997003668560459190,\t-0.997007535028281430,\t-0.997011399003584930,\t-0.997015260486359800,\t-0.997019119476596490,\t\n-0.997022975974285460,\t-0.997026829979416940,\t-0.997030681491981370,\t-0.997034530511969110,\t-0.997038377039370480,\t-0.997042221074175950,\t-0.997046062616375850,\t-0.997049901665960640,\t\n-0.997053738222920650,\t-0.997057572287246340,\t-0.997061403858928050,\t-0.997065232937956240,\t-0.997069059524321450,\t-0.997072883618013940,\t-0.997076705219024140,\t-0.997080524327342730,\t\n-0.997084340942959830,\t-0.997088155065866230,\t-0.997091966696052160,\t-0.997095775833508170,\t-0.997099582478224830,\t-0.997103386630192490,\t-0.997107188289401700,\t-0.997110987455842920,\t\n-0.997114784129506710,\t-0.997118578310383420,\t-0.997122369998463820,\t-0.997126159193738150,\t-0.997129945896197300,\t-0.997133730105831400,\t-0.997137511822631220,\t-0.997141291046587330,\t\n-0.997145067777690080,\t-0.997148842015930240,\t-0.997152613761298270,\t-0.997156383013784840,\t-0.997160149773380410,\t-0.997163914040075650,\t-0.997167675813861010,\t-0.997171435094727280,\t\n-0.997175191882664900,\t-0.997178946177664450,\t-0.997182697979716810,\t-0.997186447288812340,\t-0.997190194104941810,\t-0.997193938428095670,\t-0.997197680258264830,\t-0.997201419595439730,\t\n-0.997205156439611050,\t-0.997208890790769460,\t-0.997212622648905640,\t-0.997216352014010380,\t-0.997220078886074220,\t-0.997223803265087750,\t-0.997227525151041850,\t-0.997231244543927090,\t\n-0.997234961443734250,\t-0.997238675850454000,\t-0.997242387764077140,\t-0.997246097184594230,\t-0.997249804111996150,\t-0.997253508546273480,\t-0.997257210487417000,\t-0.997260909935417610,\t\n-0.997264606890265860,\t-0.997268301351952550,\t-0.997271993320468560,\t-0.997275682795804590,\t-0.997279369777951510,\t-0.997283054266899890,\t-0.997286736262640640,\t-0.997290415765164530,\t\n-0.997294092774462460,\t-0.997297767290525110,\t-0.997301439313343360,\t-0.997305108842908020,\t-0.997308775879209850,\t-0.997312440422239770,\t-0.997316102471988540,\t-0.997319762028447190,\t\n-0.997323419091606270,\t-0.997327073661456900,\t-0.997330725737989860,\t-0.997334375321195950,\t-0.997338022411066170,\t-0.997341667007591300,\t-0.997345309110762250,\t-0.997348948720569890,\t\n-0.997352585837005260,\t-0.997356220460059120,\t-0.997359852589722480,\t-0.997363482225986140,\t-0.997367109368841100,\t-0.997370734018278250,\t-0.997374356174288600,\t-0.997377975836863050,\t\n-0.997381593005992610,\t-0.997385207681668050,\t-0.997388819863880730,\t-0.997392429552621200,\t-0.997396036747880580,\t-0.997399641449649880,\t-0.997403243657920100,\t-0.997406843372682150,\t\n-0.997410440593927250,\t-0.997414035321646080,\t-0.997417627555829860,\t-0.997421217296469600,\t-0.997424804543556310,\t-0.997428389297081000,\t-0.997431971557034670,\t-0.997435551323408440,\t\n-0.997439128596193330,\t-0.997442703375380550,\t-0.997446275660960780,\t-0.997449845452925480,\t-0.997453412751265420,\t-0.997456977555971960,\t-0.997460539867035980,\t-0.997464099684448710,\t\n-0.997467657008201170,\t-0.997471211838284470,\t-0.997474764174689720,\t-0.997478314017408160,\t-0.997481861366430690,\t-0.997485406221748640,\t-0.997488948583353020,\t-0.997492488451235060,\t\n-0.997496025825385880,\t-0.997499560705796710,\t-0.997503093092458550,\t-0.997506622985362630,\t-0.997510150384500300,\t-0.997513675289862460,\t-0.997517197701440540,\t-0.997520717619225560,\t\n-0.997524235043208750,\t-0.997527749973381340,\t-0.997531262409734550,\t-0.997534772352259740,\t-0.997538279800947890,\t-0.997541784755790360,\t-0.997545287216778380,\t-0.997548787183903160,\t\n-0.997552284657156060,\t-0.997555779636528080,\t-0.997559272122010790,\t-0.997562762113595290,\t-0.997566249611272830,\t-0.997569734615034840,\t-0.997573217124872460,\t-0.997576697140777010,\t\n-0.997580174662739850,\t-0.997583649690752310,\t-0.997587122224805610,\t-0.997590592264891000,\t-0.997594059811000020,\t-0.997597524863123810,\t-0.997600987421253920,\t-0.997604447485381460,\t\n-0.997607905055497900,\t-0.997611360131594570,\t-0.997614812713662920,\t-0.997618262801694190,\t-0.997621710395679710,\t-0.997625155495611150,\t-0.997628598101479520,\t-0.997632038213276510,\t\n-0.997635475830993320,\t-0.997638910954621430,\t-0.997642343584152380,\t-0.997645773719577300,\t-0.997649201360887970,\t-0.997652626508075510,\t-0.997656049161131600,\t-0.997659469320047450,\t\n-0.997662886984814650,\t-0.997666302155424730,\t-0.997669714831868950,\t-0.997673125014138850,\t-0.997676532702226120,\t-0.997679937896121860,\t-0.997683340595817870,\t-0.997686740801305480,\t\n-0.997690138512576260,\t-0.997693533729621660,\t-0.997696926452433240,\t-0.997700316681002560,\t-0.997703704415321080,\t-0.997707089655380240,\t-0.997710472401171830,\t-0.997713852652687080,\t\n-0.997717230409917780,\t-0.997720605672855370,\t-0.997723978441491520,\t-0.997727348715817700,\t-0.997730716495825450,\t-0.997734081781506470,\t-0.997737444572852290,\t-0.997740804869854500,\t\n-0.997744162672504650,\t-0.997747517980794420,\t-0.997750870794715360,\t-0.997754221114259150,\t-0.997757568939417360,\t-0.997760914270181760,\t-0.997764257106543710,\t-0.997767597448495080,\t\n-0.997770935296027560,\t-0.997774270649132600,\t-0.997777603507801980,\t-0.997780933872027380,\t-0.997784261741800460,\t-0.997787587117112800,\t-0.997790909997956170,\t-0.997794230384322360,\t\n-0.997797548276202930,\t-0.997800863673589560,\t-0.997804176576474130,\t-0.997807486984848220,\t-0.997810794898703720,\t-0.997814100318032080,\t-0.997817403242825200,\t-0.997820703673074850,\t\n-0.997824001608772710,\t-0.997827297049910580,\t-0.997830589996480220,\t-0.997833880448473430,\t-0.997837168405881880,\t-0.997840453868697460,\t-0.997843736836911850,\t-0.997847017310516840,\t\n-0.997850295289504420,\t-0.997853570773866160,\t-0.997856843763593960,\t-0.997860114258679820,\t-0.997863382259115310,\t-0.997866647764892310,\t-0.997869910776002620,\t-0.997873171292438240,\t\n-0.997876429314190960,\t-0.997879684841252560,\t-0.997882937873615040,\t-0.997886188411270080,\t-0.997889436454209580,\t-0.997892682002425650,\t-0.997895925055909850,\t-0.997899165614654300,\t\n-0.997902403678650910,\t-0.997905639247891440,\t-0.997908872322367910,\t-0.997912102902072220,\t-0.997915330986996250,\t-0.997918556577131910,\t-0.997921779672471200,\t-0.997925000273006120,\t\n-0.997928218378728470,\t-0.997931433989630360,\t-0.997934647105703570,\t-0.997937857726940100,\t-0.997941065853332090,\t-0.997944271484871410,\t-0.997947474621549980,\t-0.997950675263359900,\t\n-0.997953873410293180,\t-0.997957069062341720,\t-0.997960262219497630,\t-0.997963452881752920,\t-0.997966641049099490,\t-0.997969826721529450,\t-0.997973009899034920,\t-0.997976190581607910,\t\n-0.997979368769240320,\t-0.997982544461924360,\t-0.997985717659651940,\t-0.997988888362415280,\t-0.997992056570206510,\t-0.997995222283017510,\t-0.997998385500840410,\t-0.998001546223667320,\t\n-0.998004704451490480,\t-0.998007860184301880,\t-0.998011013422093640,\t-0.998014164164857780,\t-0.998017312412586510,\t-0.998020458165271960,\t-0.998023601422906360,\t-0.998026742185481710,\t\n-0.998029880452990240,\t-0.998033016225423950,\t-0.998036149502775190,\t-0.998039280285036080,\t-0.998042408572198720,\t-0.998045534364255360,\t-0.998048657661198100,\t-0.998051778463019290,\t\n-0.998054896769711040,\t-0.998058012581265590,\t-0.998061125897675040,\t-0.998064236718931630,\t-0.998067345045027700,\t-0.998070450875955360,\t-0.998073554211706960,\t-0.998076655052274610,\t\n-0.998079753397650650,\t-0.998082849247827310,\t-0.998085942602796820,\t-0.998089033462551510,\t-0.998092121827083510,\t-0.998095207696385270,\t-0.998098291070449120,\t-0.998101371949267180,\t\n-0.998104450332831790,\t-0.998107526221135190,\t-0.998110599614169920,\t-0.998113670511928010,\t-0.998116738914402000,\t-0.998119804821584240,\t-0.998122868233466850,\t-0.998125929150042280,\t\n-0.998128987571302970,\t-0.998132043497241160,\t-0.998135096927849190,\t-0.998138147863119500,\t-0.998141196303044430,\t-0.998144242247616440,\t-0.998147285696827760,\t-0.998150326650670940,\t\n-0.998153365109138320,\t-0.998156401072222250,\t-0.998159434539915070,\t-0.998162465512209440,\t-0.998165493989097710,\t-0.998168519970572100,\t-0.998171543456625180,\t-0.998174564447249500,\t\n-0.998177582942437300,\t-0.998180598942181250,\t-0.998183612446473690,\t-0.998186623455306950,\t-0.998189631968673830,\t-0.998192637986566540,\t-0.998195641508977770,\t-0.998198642535899740,\t\n-0.998201641067325230,\t-0.998204637103246580,\t-0.998207630643656250,\t-0.998210621688546910,\t-0.998213610237911110,\t-0.998216596291741200,\t-0.998219579850029850,\t-0.998222560912769400,\t\n-0.998225539479952630,\t-0.998228515551572100,\t-0.998231489127620160,\t-0.998234460208089590,\t-0.998237428792972840,\t-0.998240394882262460,\t-0.998243358475951140,\t-0.998246319574031430,\t\n-0.998249278176496000,\t-0.998252234283337200,\t-0.998255187894547920,\t-0.998258139010120730,\t-0.998261087630048060,\t-0.998264033754322820,\t-0.998266977382937350,\t-0.998269918515884540,\t\n-0.998272857153156830,\t-0.998275793294747030,\t-0.998278726940647790,\t-0.998281658090851680,\t-0.998284586745351480,\t-0.998287512904139750,\t-0.998290436567209280,\t-0.998293357734552630,\t\n-0.998296276406162700,\t-0.998299192582032040,\t-0.998302106262153430,\t-0.998305017446519560,\t-0.998307926135123090,\t-0.998310832327956810,\t-0.998313736025013500,\t-0.998316637226285720,\t\n-0.998319535931766480,\t-0.998322432141448330,\t-0.998325325855324190,\t-0.998328217073386700,\t-0.998331105795628670,\t-0.998333992022042870,\t-0.998336875752621980,\t-0.998339756987358990,\t\n-0.998342635726246600,\t-0.998345511969277680,\t-0.998348385716445020,\t-0.998351256967741300,\t-0.998354125723159400,\t-0.998356991982692230,\t-0.998359855746332570,\t-0.998362717014073310,\t\n-0.998365575785907230,\t-0.998368432061827240,\t-0.998371285841826110,\t-0.998374137125896840,\t-0.998376985914032230,\t-0.998379832206225060,\t-0.998382676002468330,\t-0.998385517302754930,\t\n-0.998388356107077770,\t-0.998391192415429730,\t-0.998394026227803710,\t-0.998396857544192610,\t-0.998399686364589310,\t-0.998402512688986830,\t-0.998405336517378060,\t-0.998408157849756010,\t\n-0.998410976686113560,\t-0.998413793026443620,\t-0.998416606870739190,\t-0.998419418218993270,\t-0.998422227071198880,\t-0.998425033427348780,\t-0.998427837287436120,\t-0.998430638651453980,\t\n-0.998433437519395170,\t-0.998436233891252800,\t-0.998439027767019760,\t-0.998441819146689170,\t-0.998444608030254140,\t-0.998447394417707470,\t-0.998450178309042370,\t-0.998452959704251740,\t\n-0.998455738603328810,\t-0.998458515006266590,\t-0.998461288913057960,\t-0.998464060323696170,\t-0.998466829238174200,\t-0.998469595656485190,\t-0.998472359578622130,\t-0.998475121004578250,\t\n-0.998477879934346560,\t-0.998480636367920170,\t-0.998483390305292100,\t-0.998486141746455670,\t-0.998488890691403790,\t-0.998491637140129670,\t-0.998494381092626560,\t-0.998497122548887450,\t\n-0.998499861508905460,\t-0.998502597972674040,\t-0.998505331940185870,\t-0.998508063411434500,\t-0.998510792386412940,\t-0.998513518865114410,\t-0.998516242847532150,\t-0.998518964333659160,\t\n-0.998521683323488900,\t-0.998524399817014350,\t-0.998527113814228760,\t-0.998529825315125460,\t-0.998532534319697460,\t-0.998535240827938320,\t-0.998537944839840930,\t-0.998540646355398740,\t\n-0.998543345374604980,\t-0.998546041897452770,\t-0.998548735923935450,\t-0.998551427454046350,\t-0.998554116487778700,\t-0.998556803025125730,\t-0.998559487066080780,\t-0.998562168610637070,\t\n-0.998564847658787950,\t-0.998567524210526640,\t-0.998570198265846590,\t-0.998572869824741030,\t-0.998575538887203410,\t-0.998578205453226730,\t-0.998580869522804670,\t-0.998583531095930450,\t\n-0.998586190172597420,\t-0.998588846752798800,\t-0.998591500836528150,\t-0.998594152423778690,\t-0.998596801514543890,\t-0.998599448108817180,\t-0.998602092206591680,\t-0.998604733807861080,\t\n-0.998607372912618580,\t-0.998610009520857660,\t-0.998612643632571740,\t-0.998615275247754170,\t-0.998617904366398410,\t-0.998620530988497900,\t-0.998623155114046090,\t-0.998625776743036430,\t\n-0.998628395875462260,\t-0.998631012511317030,\t-0.998633626650594410,\t-0.998636238293287630,\t-0.998638847439390350,\t-0.998641454088895930,\t-0.998644058241797810,\t-0.998646659898089540,\t\n-0.998649259057764690,\t-0.998651855720816610,\t-0.998654449887238950,\t-0.998657041557025170,\t-0.998659630730168720,\t-0.998662217406663280,\t-0.998664801586502280,\t-0.998667383269679300,\t\n-0.998669962456187780,\t-0.998672539146021390,\t-0.998675113339173580,\t-0.998677685035638140,\t-0.998680254235408400,\t-0.998682820938478040,\t-0.998685385144840620,\t-0.998687946854489810,\t\n-0.998690506067419050,\t-0.998693062783622020,\t-0.998695617003092280,\t-0.998698168725823620,\t-0.998700717951809480,\t-0.998703264681043650,\t-0.998705808913519570,\t-0.998708350649230910,\t\n-0.998710889888171470,\t-0.998713426630334690,\t-0.998715960875714460,\t-0.998718492624304340,\t-0.998721021876097900,\t-0.998723548631088920,\t-0.998726072889271070,\t-0.998728594650638120,\t\n-0.998731113915183540,\t-0.998733630682901330,\t-0.998736144953784930,\t-0.998738656727828240,\t-0.998741166005024830,\t-0.998743672785368570,\t-0.998746177068853160,\t-0.998748678855472250,\t\n-0.998751178145219630,\t-0.998753674938089090,\t-0.998756169234074400,\t-0.998758661033169240,\t-0.998761150335367500,\t-0.998763637140662740,\t-0.998766121449048970,\t-0.998768603260519860,\t\n-0.998771082575069300,\t-0.998773559392691080,\t-0.998776033713378860,\t-0.998778505537126660,\t-0.998780974863928140,\t-0.998783441693777090,\t-0.998785906026667500,\t-0.998788367862593170,\t\n-0.998790827201547880,\t-0.998793284043525630,\t-0.998795738388520090,\t-0.998798190236525270,\t-0.998800639587534840,\t-0.998803086441542920,\t-0.998805530798543280,\t-0.998807972658529720,\t\n-0.998810412021496340,\t-0.998812848887436820,\t-0.998815283256345280,\t-0.998817715128215490,\t-0.998820144503041460,\t-0.998822571380816980,\t-0.998824995761536160,\t-0.998827417645192780,\t\n-0.998829837031780960,\t-0.998832253921294490,\t-0.998834668313727360,\t-0.998837080209073580,\t-0.998839489607327050,\t-0.998841896508481870,\t-0.998844300912531850,\t-0.998846702819471190,\t\n-0.998849102229293680,\t-0.998851499141993450,\t-0.998853893557564600,\t-0.998856285476000920,\t-0.998858674897296410,\t-0.998861061821445410,\t-0.998863446248441590,\t-0.998865828178279180,\t\n-0.998868207610952300,\t-0.998870584546454830,\t-0.998872958984780900,\t-0.998875330925924620,\t-0.998877700369880000,\t-0.998880067316641140,\t-0.998882431766202060,\t-0.998884793718556870,\t\n-0.998887153173699800,\t-0.998889510131624860,\t-0.998891864592326040,\t-0.998894216555797580,\t-0.998896566022033580,\t-0.998898912991028180,\t-0.998901257462775580,\t-0.998903599437269700,\t\n-0.998905938914504960,\t-0.998908275894475280,\t-0.998910610377174880,\t-0.998912942362597980,\t-0.998915271850738810,\t-0.998917598841591370,\t-0.998919923335150010,\t-0.998922245331408720,\t\n-0.998924564830361960,\t-0.998926881832003730,\t-0.998929196336328260,\t-0.998931508343329780,\t-0.998933817853002610,\t-0.998936124865340890,\t-0.998938429380338830,\t-0.998940731397990670,\t\n-0.998943030918290730,\t-0.998945327941233140,\t-0.998947622466812350,\t-0.998949914495022350,\t-0.998952204025857720,\t-0.998954491059312440,\t-0.998956775595380990,\t-0.998959057634057680,\t\n-0.998961337175336640,\t-0.998963614219212310,\t-0.998965888765678930,\t-0.998968160814730830,\t-0.998970430366362240,\t-0.998972697420567710,\t-0.998974961977341370,\t-0.998977224036677660,\t\n-0.998979483598570810,\t-0.998981740663015260,\t-0.998983995230005470,\t-0.998986247299535560,\t-0.998988496871600070,\t-0.998990743946193360,\t-0.998992988523309870,\t-0.998995230602943820,\t\n-0.998997470185089660,\t-0.998999707269741970,\t-0.999001941856894840,\t-0.999004173946542950,\t-0.999006403538680640,\t-0.999008630633302250,\t-0.999010855230402340,\t-0.999013077329975240,\t\n-0.999015296932015520,\t-0.999017514036517510,\t-0.999019728643475660,\t-0.999021940752884640,\t-0.999024150364738680,\t-0.999026357479032350,\t-0.999028562095760080,\t-0.999030764214916430,\t\n-0.999032963836495980,\t-0.999035160960492940,\t-0.999037355586902100,\t-0.999039547715717900,\t-0.999041737346934800,\t-0.999043924480547350,\t-0.999046109116550120,\t-0.999048291254937550,\t\n-0.999050470895704310,\t-0.999052648038844860,\t-0.999054822684353750,\t-0.999056994832225650,\t-0.999059164482455020,\t-0.999061331635036520,\t-0.999063496289964710,\t-0.999065658447234160,\t\n-0.999067818106839420,\t-0.999069975268775060,\t-0.999072129933035850,\t-0.999074282099616350,\t-0.999076431768511130,\t-0.999078578939714860,\t-0.999080723613222090,\t-0.999082865789027500,\t\n-0.999085005467125750,\t-0.999087142647511530,\t-0.999089277330179380,\t-0.999091409515124100,\t-0.999093539202340230,\t-0.999095666391822570,\t-0.999097791083565780,\t-0.999099913277564420,\t\n-0.999102032973813390,\t-0.999104150172307140,\t-0.999106264873040660,\t-0.999108377076008410,\t-0.999110486781205290,\t-0.999112593988625950,\t-0.999114698698265080,\t-0.999116800910117450,\t\n-0.999118900624177850,\t-0.999120997840440950,\t-0.999123092558901640,\t-0.999125184779554590,\t-0.999127274502394580,\t-0.999129361727416290,\t-0.999131446454614710,\t-0.999133528683984420,\t\n-0.999135608415520290,\t-0.999137685649217230,\t-0.999139760385070020,\t-0.999141832623073320,\t-0.999143902363222040,\t-0.999145969605510940,\t-0.999148034349934930,\t-0.999150096596488900,\t\n-0.999152156345167630,\t-0.999154213595965900,\t-0.999156268348878720,\t-0.999158320603900860,\t-0.999160370361027230,\t-0.999162417620252600,\t-0.999164462381571970,\t-0.999166504644980140,\t\n-0.999168544410471980,\t-0.999170581678042620,\t-0.999172616447686730,\t-0.999174648719399320,\t-0.999176678493175260,\t-0.999178705769009470,\t-0.999180730546897040,\t-0.999182752826832670,\t\n-0.999184772608811440,\t-0.999186789892828280,\t-0.999188804678878270,\t-0.999190816966956110,\t-0.999192826757056900,\t-0.999194834049175640,\t-0.999196838843307340,\t-0.999198841139446900,\t\n-0.999200840937589430,\t-0.999202838237729820,\t-0.999204833039863070,\t-0.999206825343984310,\t-0.999208815150088410,\t-0.999210802458170510,\t-0.999212787268225600,\t-0.999214769580248690,\t\n-0.999216749394234880,\t-0.999218726710179310,\t-0.999220701528076850,\t-0.999222673847922520,\t-0.999224643669711640,\t-0.999226610993439120,\t-0.999228575819100070,\t-0.999230538146689610,\t\n-0.999232497976202730,\t-0.999234455307634660,\t-0.999236410140980410,\t-0.999238362476235100,\t-0.999240312313393940,\t-0.999242259652452060,\t-0.999244204493404450,\t-0.999246146836246350,\t\n-0.999248086680972870,\t-0.999250024027579230,\t-0.999251958876060550,\t-0.999253891226411840,\t-0.999255821078628540,\t-0.999257748432705540,\t-0.999259673288638290,\t-0.999261595646421920,\t\n-0.999263515506051410,\t-0.999265432867522120,\t-0.999267347730829370,\t-0.999269260095968170,\t-0.999271169962933750,\t-0.999273077331721550,\t-0.999274982202326580,\t-0.999276884574744170,\t\n-0.999278784448969560,\t-0.999280681824997960,\t-0.999282576702824610,\t-0.999284469082444950,\t-0.999286358963853980,\t-0.999288246347047160,\t-0.999290131232019820,\t-0.999292013618767070,\t\n-0.999293893507284260,\t-0.999295770897566720,\t-0.999297645789609780,\t-0.999299518183408790,\t-0.999301388078958960,\t-0.999303255476255540,\t-0.999305120375294180,\t-0.999306982776069890,\t\n-0.999308842678578220,\t-0.999310700082814420,\t-0.999312554988773800,\t-0.999314407396451830,\t-0.999316257305843840,\t-0.999318104716945270,\t-0.999319949629751350,\t-0.999321792044257640,\t\n-0.999323631960459370,\t-0.999325469378352090,\t-0.999327304297931150,\t-0.999329136719191880,\t-0.999330966642129730,\t-0.999332794066740250,\t-0.999334618993018790,\t-0.999336441420960790,\t\n-0.999338261350561700,\t-0.999340078781816850,\t-0.999341893714721820,\t-0.999343706149272150,\t-0.999345516085463180,\t-0.999347323523290370,\t-0.999349128462749370,\t-0.999350930903835420,\t\n-0.999352730846544190,\t-0.999354528290871120,\t-0.999356323236811780,\t-0.999358115684361610,\t-0.999359905633516070,\t-0.999361693084270810,\t-0.999363478036621400,\t-0.999365260490563290,\t\n-0.999367040446091930,\t-0.999368817903202980,\t-0.999370592861892120,\t-0.999372365322154680,\t-0.999374135283986330,\t-0.999375902747382640,\t-0.999377667712339160,\t-0.999379430178851560,\t\n-0.999381190146915400,\t-0.999382947616526130,\t-0.999384702587679640,\t-0.999386455060371380,\t-0.999388205034596910,\t-0.999389952510352010,\t-0.999391697487632240,\t-0.999393439966433150,\t\n-0.999395179946750420,\t-0.999396917428579830,\t-0.999398652411916940,\t-0.999400384896757420,\t-0.999402114883096940,\t-0.999403842370931160,\t-0.999405567360255760,\t-0.999407289851066420,\t\n-0.999409009843358900,\t-0.999410727337128880,\t-0.999412442332372030,\t-0.999414154829084020,\t-0.999415864827260640,\t-0.999417572326897650,\t-0.999419277327990740,\t-0.999420979830535570,\t\n-0.999422679834527930,\t-0.999424377339963590,\t-0.999426072346838450,\t-0.999427764855148060,\t-0.999429454864888210,\t-0.999431142376054680,\t-0.999432827388643360,\t-0.999434509902650040,\t\n-0.999436189918070260,\t-0.999437867434900150,\t-0.999439542453135380,\t-0.999441214972771720,\t-0.999442884993805070,\t-0.999444552516231100,\t-0.999446217540045810,\t-0.999447880065244990,\t\n-0.999449540091824410,\t-0.999451197619780070,\t-0.999452852649107660,\t-0.999454505179803170,\t-0.999456155211862370,\t-0.999457802745281290,\t-0.999459447780055580,\t-0.999461090316181240,\t\n-0.999462730353654290,\t-0.999464367892470400,\t-0.999466002932625660,\t-0.999467635474115990,\t-0.999469265516937040,\t-0.999470893061085050,\t-0.999472518106555800,\t-0.999474140653345280,\t\n-0.999475760701449390,\t-0.999477378250864130,\t-0.999478993301585410,\t-0.999480605853609210,\t-0.999482215906931430,\t-0.999483823461548180,\t-0.999485428517455250,\t-0.999487031074648870,\t\n-0.999488631133124920,\t-0.999490228692879400,\t-0.999491823753908220,\t-0.999493416316207580,\t-0.999495006379773290,\t-0.999496593944601550,\t-0.999498179010688380,\t-0.999499761578029670,\t\n-0.999501341646621630,\t-0.999502919216460170,\t-0.999504494287541510,\t-0.999506066859861540,\t-0.999507636933416380,\t-0.999509204508202130,\t-0.999510769584214920,\t-0.999512332161450750,\t\n-0.999513892239905720,\t-0.999515449819576070,\t-0.999517004900457700,\t-0.999518557482546810,\t-0.999520107565839640,\t-0.999521655150332090,\t-0.999523200236020480,\t-0.999524742822900820,\t\n-0.999526282910969340,\t-0.999527820500222040,\t-0.999529355590655370,\t-0.999530888182265210,\t-0.999532418275047800,\t-0.999533945868999350,\t-0.999535470964116100,\t-0.999536993560394160,\t\n-0.999538513657829750,\t-0.999540031256418990,\t-0.999541546356158220,\t-0.999543058957043540,\t-0.999544569059071190,\t-0.999546076662237380,\t-0.999547581766538570,\t-0.999549084371970650,\t\n-0.999550584478530070,\t-0.999552082086212930,\t-0.999553577195015700,\t-0.999555069804934470,\t-0.999556559915965590,\t-0.999558047528105400,\t-0.999559532641350000,\t-0.999561015255695740,\t\n-0.999562495371138950,\t-0.999563972987675960,\t-0.999565448105303010,\t-0.999566920724016540,\t-0.999568390843812660,\t-0.999569858464687820,\t-0.999571323586638360,\t-0.999572786209660610,\t\n-0.999574246333750800,\t-0.999575703958905490,\t-0.999577159085120790,\t-0.999578611712393260,\t-0.999580061840719240,\t-0.999581509470095050,\t-0.999582954600517050,\t-0.999584397231981780,\t\n-0.999585837364485360,\t-0.999587274998024470,\t-0.999588710132595320,\t-0.999590142768194360,\t-0.999591572904818150,\t-0.999593000542462920,\t-0.999594425681125220,\t-0.999595848320801510,\t\n-0.999597268461488110,\t-0.999598686103181480,\t-0.999600101245878280,\t-0.999601513889574740,\t-0.999602924034267430,\t-0.999604331679952770,\t-0.999605736826627340,\t-0.999607139474287590,\t\n-0.999608539622929950,\t-0.999609937272550990,\t-0.999611332423147150,\t-0.999612725074714990,\t-0.999614115227251080,\t-0.999615502880751740,\t-0.999616888035213760,\t-0.999618270690633580,\t\n-0.999619650847007660,\t-0.999621028504332540,\t-0.999622403662605020,\t-0.999623776321821420,\t-0.999625146481978310,\t-0.999626514143072460,\t-0.999627879305100220,\t-0.999629241968058360,\t\n-0.999630602131943320,\t-0.999631959796751790,\t-0.999633314962480420,\t-0.999634667629125670,\t-0.999636017796684320,\t-0.999637365465152920,\t-0.999638710634528140,\t-0.999640053304806540,\t\n-0.999641393475984800,\t-0.999642731148059570,\t-0.999644066321027540,\t-0.999645398994885250,\t-0.999646729169629600,\t-0.999648056845257040,\t-0.999649382021764450,\t-0.999650704699148300,\t\n-0.999652024877405340,\t-0.999653342556532490,\t-0.999654657736526180,\t-0.999655970417383190,\t-0.999657280599100310,\t-0.999658588281674310,\t-0.999659893465101760,\t-0.999661196149379430,\t\n-0.999662496334504210,\t-0.999663794020472670,\t-0.999665089207281700,\t-0.999666381894927960,\t-0.999667672083408340,\t-0.999668959772719520,\t-0.999670244962858280,\t-0.999671527653821390,\t\n-0.999672807845605750,\t-0.999674085538208020,\t-0.999675360731625110,\t-0.999676633425853780,\t-0.999677903620890930,\t-0.999679171316733230,\t-0.999680436513377680,\t-0.999681699210820950,\t\n-0.999682959409060050,\t-0.999684217108091740,\t-0.999685472307912940,\t-0.999686725008520400,\t-0.999687975209911040,\t-0.999689222912081730,\t-0.999690468115029370,\t-0.999691710818750860,\t\n-0.999692951023243070,\t-0.999694188728502910,\t-0.999695423934527260,\t-0.999696656641313130,\t-0.999697886848857300,\t-0.999699114557156760,\t-0.999700339766208420,\t-0.999701562476009160,\t\n-0.999702782686556100,\t-0.999704000397846020,\t-0.999705215609876020,\t-0.999706428322642890,\t-0.999707638536143750,\t-0.999708846250375480,\t-0.999710051465335090,\t-0.999711254181019580,\t\n-0.999712454397425950,\t-0.999713652114551210,\t-0.999714847332392350,\t-0.999716040050946280,\t-0.999717230270210200,\t-0.999718417990181020,\t-0.999719603210855730,\t-0.999720785932231460,\t\n-0.999721966154305310,\t-0.999723143877074170,\t-0.999724319100535160,\t-0.999725491824685400,\t-0.999726662049521870,\t-0.999727829775041710,\t-0.999728995001242020,\t-0.999730157728119790,\t\n-0.999731317955672160,\t-0.999732475683896230,\t-0.999733630912789110,\t-0.999734783642347910,\t-0.999735933872569870,\t-0.999737081603451870,\t-0.999738226834991140,\t-0.999739369567184900,\t\n-0.999740509800030260,\t-0.999741647533524350,\t-0.999742782767664260,\t-0.999743915502447230,\t-0.999745045737870490,\t-0.999746173473931020,\t-0.999747298710626180,\t-0.999748421447953170,\t\n-0.999749541685909020,\t-0.999750659424490930,\t-0.999751774663696360,\t-0.999752887403522190,\t-0.999753997643965890,\t-0.999755105385024660,\t-0.999756210626695620,\t-0.999757313368976000,\t\n-0.999758413611863130,\t-0.999759511355354240,\t-0.999760606599446540,\t-0.999761699344137390,\t-0.999762789589423880,\t-0.999763877335303470,\t-0.999764962581773390,\t-0.999766045328830840,\t\n-0.999767125576473180,\t-0.999768203324697740,\t-0.999769278573501840,\t-0.999770351322882720,\t-0.999771421572837720,\t-0.999772489323364040,\t-0.999773554574459270,\t-0.999774617326120610,\t\n-0.999775677578345400,\t-0.999776735331130980,\t-0.999777790584474690,\t-0.999778843338373970,\t-0.999779893592826150,\t-0.999780941347828580,\t-0.999781986603378580,\t-0.999783029359473720,\t\n-0.999784069616111220,\t-0.999785107373288630,\t-0.999786142631003180,\t-0.999787175389252440,\t-0.999788205648033720,\t-0.999789233407344490,\t-0.999790258667182190,\t-0.999791281427544250,\t\n-0.999792301688428140,\t-0.999793319449831190,\t-0.999794334711750940,\t-0.999795347474184970,\t-0.999796357737130600,\t-0.999797365500585290,\t-0.999798370764546580,\t-0.999799373529011940,\t\n-0.999800373793978790,\t-0.999801371559444820,\t-0.999802366825407350,\t-0.999803359591864060,\t-0.999804349858812280,\t-0.999805337626249680,\t-0.999806322894173700,\t-0.999807305662581910,\t\n-0.999808285931471860,\t-0.999809263700841110,\t-0.999810238970687220,\t-0.999811211741007730,\t-0.999812182011800220,\t-0.999813149783062240,\t-0.999814115054791340,\t-0.999815077826985200,\t\n-0.999816038099641370,\t-0.999816995872757410,\t-0.999817951146330990,\t-0.999818903920359660,\t-0.999819854194841100,\t-0.999820801969772850,\t-0.999821747245152710,\t-0.999822690020978120,\t\n-0.999823630297246750,\t-0.999824568073956370,\t-0.999825503351104650,\t-0.999826436128689040,\t-0.999827366406707440,\t-0.999828294185157400,\t-0.999829219464036580,\t-0.999830142243342770,\t\n-0.999831062523073520,\t-0.999831980303226730,\t-0.999832895583799840,\t-0.999833808364790850,\t-0.999834718646197330,\t-0.999835626428016930,\t-0.999836531710247560,\t-0.999837434492886760,\t\n-0.999838334775932420,\t-0.999839232559382230,\t-0.999840127843234060,\t-0.999841020627485480,\t-0.999841910912134260,\t-0.999842798697178400,\t-0.999843683982615470,\t-0.999844566768443350,\t\n-0.999845447054659830,\t-0.999846324841262790,\t-0.999847200128249790,\t-0.999848072915618840,\t-0.999848943203367700,\t-0.999849810991494170,\t-0.999850676279996240,\t-0.999851539068871480,\t\n-0.999852399358117980,\t-0.999853257147733430,\t-0.999854112437715710,\t-0.999854965228062720,\t-0.999855815518772340,\t-0.999856663309842460,\t-0.999857508601270870,\t-0.999858351393055460,\t\n-0.999859191685194220,\t-0.999860029477685040,\t-0.999860864770525710,\t-0.999861697563714350,\t-0.999862527857248610,\t-0.999863355651126610,\t-0.999864180945346240,\t-0.999865003739905390,\t\n-0.999865824034801950,\t-0.999866641830034040,\t-0.999867457125599550,\t-0.999868269921496360,\t-0.999869080217722580,\t-0.999869888014276010,\t-0.999870693311154750,\t-0.999871496108356790,\t\n-0.999872296405880050,\t-0.999873094203722610,\t-0.999873889501882380,\t-0.999874682300357480,\t-0.999875472599145780,\t-0.999876260398245510,\t-0.999877045697654570,\t-0.999877828497370950,\t\n-0.999878608797392760,\t-0.999879386597718130,\t-0.999880161898344940,\t-0.999880934699271420,\t-0.999881705000495560,\t-0.999882472802015480,\t-0.999883238103829060,\t-0.999884000905934660,\t\n-0.999884761208330250,\t-0.999885519011013970,\t-0.999886274313983800,\t-0.999887027117238090,\t-0.999887777420774610,\t-0.999888525224591820,\t-0.999889270528687700,\t-0.999890013333060490,\t\n-0.999890753637708070,\t-0.999891491442628900,\t-0.999892226747820970,\t-0.999892959553282390,\t-0.999893689859011500,\t-0.999894417665006420,\t-0.999895142971265140,\t-0.999895865777786110,\t\n-0.999896586084567440,\t-0.999897303891607360,\t-0.999898019198903860,\t-0.999898732006455400,\t-0.999899442314260090,\t-0.999900150122316260,\t-0.999900855430621900,\t-0.999901558239175480,\t\n-0.999902258547975210,\t-0.999902956357019200,\t-0.999903651666305900,\t-0.999904344475833430,\t-0.999905034785600110,\t-0.999905722595604170,\t-0.999906407905843950,\t-0.999907090716317670,\t\n-0.999907771027023660,\t-0.999908448837960260,\t-0.999909124149125810,\t-0.999909796960518400,\t-0.999910467272136620,\t-0.999911135083978550,\t-0.999911800396042770,\t-0.999912463208327500,\t\n-0.999913123520830950,\t-0.999913781333551690,\t-0.999914436646487940,\t-0.999915089459638030,\t-0.999915739773000520,\t-0.999916387586573530,\t-0.999917032900355720,\t-0.999917675714345200,\t\n-0.999918316028540640,\t-0.999918953842940160,\t-0.999919589157542310,\t-0.999920221972345540,\t-0.999920852287348170,\t-0.999921480102548670,\t-0.999922105417945460,\t-0.999922728233537010,\t\n-0.999923348549321740,\t-0.999923966365298120,\t-0.999924581681464590,\t-0.999925194497819580,\t-0.999925804814361550,\t-0.999926412631089060,\t-0.999927017948000540,\t-0.999927620765094450,\t\n-0.999928221082369340,\t-0.999928818899823660,\t-0.999929414217455960,\t-0.999930007035264690,\t-0.999930597353248410,\t-0.999931185171405670,\t-0.999931770489734920,\t-0.999932353308234710,\t\n-0.999932933626903720,\t-0.999933511445740280,\t-0.999934086764743160,\t-0.999934659583910810,\t-0.999935229903241800,\t-0.999935797722734660,\t-0.999936363042388090,\t-0.999936925862200620,\t\n-0.999937486182170820,\t-0.999938044002297240,\t-0.999938599322578560,\t-0.999939152143013430,\t-0.999939702463600420,\t-0.999940250284338190,\t-0.999940795605225310,\t-0.999941338426260430,\t\n-0.999941878747442230,\t-0.999942416568769250,\t-0.999942951890240290,\t-0.999943484711853900,\t-0.999944015033608860,\t-0.999944542855503830,\t-0.999945068177537370,\t-0.999945590999708260,\t\n-0.999946111322015160,\t-0.999946629144456760,\t-0.999947144467031810,\t-0.999947657289739000,\t-0.999948167612577100,\t-0.999948675435544660,\t-0.999949180758640700,\t-0.999949683581863650,\t\n-0.999950183905212400,\t-0.999950681728685730,\t-0.999951177052282420,\t-0.999951669876001040,\t-0.999952160199840570,\t-0.999952648023799680,\t-0.999953133347877170,\t-0.999953616172071790,\t\n-0.999954096496382450,\t-0.999954574320807810,\t-0.999955049645346760,\t-0.999955522469998080,\t-0.999955992794760550,\t-0.999956460619633060,\t-0.999956925944614490,\t-0.999957388769703530,\t\n-0.999957849094899150,\t-0.999958306920200050,\t-0.999958762245605310,\t-0.999959215071113520,\t-0.999959665396723870,\t-0.999960113222434940,\t-0.999960558548245730,\t-0.999961001374155110,\t\n-0.999961441700162100,\t-0.999961879526265360,\t-0.999962314852464010,\t-0.999962747678756810,\t-0.999963178005142780,\t-0.999963605831620810,\t-0.999964031158189770,\t-0.999964453984848680,\t\n-0.999964874311596530,\t-0.999965292138432100,\t-0.999965707465354400,\t-0.999966120292362540,\t-0.999966530619455400,\t-0.999966938446631870,\t-0.999967343773890960,\t-0.999967746601231780,\t\n-0.999968146928653100,\t-0.999968544756154150,\t-0.999968940083733830,\t-0.999969332911391230,\t-0.999969723239125140,\t-0.999970111066934900,\t-0.999970496394819270,\t-0.999970879222777500,\t\n-0.999971259550808460,\t-0.999971637378911260,\t-0.999972012707085020,\t-0.999972385535328740,\t-0.999972755863641430,\t-0.999973123692022290,\t-0.999973489020470340,\t-0.999973851848984690,\t\n-0.999974212177564330,\t-0.999974570006208490,\t-0.999974925334916280,\t-0.999975278163686700,\t-0.999975628492518860,\t-0.999975976321412000,\t-0.999976321650365210,\t-0.999976664479377610,\t\n-0.999977004808448420,\t-0.999977342637576650,\t-0.999977677966761510,\t-0.999978010796002240,\t-0.999978341125297930,\t-0.999978668954647710,\t-0.999978994284050790,\t-0.999979317113506520,\t\n-0.999979637443013880,\t-0.999979955272572110,\t-0.999980270602180530,\t-0.999980583431838270,\t-0.999980893761544420,\t-0.999981201591298440,\t-0.999981506921099440,\t-0.999981809750946750,\t\n-0.999982110080839480,\t-0.999982407910776860,\t-0.999982703240758330,\t-0.999982996070783000,\t-0.999983286400850100,\t-0.999983574230959070,\t-0.999983859561109130,\t-0.999984142391299510,\t\n-0.999984422721529540,\t-0.999984700551798560,\t-0.999984975882105780,\t-0.999985248712450540,\t-0.999985519042832170,\t-0.999985786873250020,\t-0.999986052203703400,\t-0.999986315034191660,\t\n-0.999986575364714140,\t-0.999986833195270150,\t-0.999987088525859160,\t-0.999987341356480370,\t-0.999987591687133250,\t-0.999987839517817110,\t-0.999988084848531520,\t-0.999988327679275590,\t\n-0.999988568010048870,\t-0.999988805840850700,\t-0.999989041171680530,\t-0.999989274002537790,\t-0.999989504333421820,\t-0.999989732164332070,\t-0.999989957495268090,\t-0.999990180326229110,\t\n-0.999990400657214780,\t-0.999990618488224350,\t-0.999990833819257460,\t-0.999991046650313460,\t-0.999991256981391800,\t-0.999991464812492010,\t-0.999991670143613560,\t-0.999991872974756000,\t\n-0.999992073305918770,\t-0.999992271137101210,\t-0.999992466468303090,\t-0.999992659299523750,\t-0.999992849630762850,\t-0.999993037462019730,\t-0.999993222793294060,\t-0.999993405624585390,\t\n-0.999993585955893050,\t-0.999993763787216830,\t-0.999993939118556270,\t-0.999994111949910840,\t-0.999994282281280070,\t-0.999994450112663640,\t-0.999994615444060990,\t-0.999994778275471900,\t\n-0.999994938606895810,\t-0.999995096438332400,\t-0.999995251769781320,\t-0.999995404601242030,\t-0.999995554932714190,\t-0.999995702764197580,\t-0.999995848095691640,\t-0.999995990927196040,\t\n-0.999996131258710560,\t-0.999996269090234650,\t-0.999996404421768180,\t-0.999996537253310610,\t-0.999996667584861720,\t-0.999996795416421170,\t-0.999996920747988630,\t-0.999997043579563760,\t\n-0.999997163911146350,\t-0.999997281742736050,\t-0.999997397074332440,\t-0.999997509905935390,\t-0.999997620237544570,\t-0.999997728069159650,\t-0.999997833400780520,\t-0.999997936232406740,\t\n-0.999998036564038070,\t-0.999998134395674420,\t-0.999998229727315340,\t-0.999998322558960710,\t-0.999998412890610310,\t-0.999998500722263820,\t-0.999998586053921110,\t-0.999998668885581980,\t\n-0.999998749217246070,\t-0.999998827048913410,\t-0.999998902380583640,\t-0.999998975212256560,\t-0.999999045543932150,\t-0.999999113375609980,\t-0.999999178707290160,\t-0.999999241538972350,\t\n-0.999999301870656440,\t-0.999999359702342220,\t-0.999999415034029670,\t-0.999999467865718580,\t-0.999999518197408730,\t-0.999999566029100230,\t-0.999999611360792740,\t-0.999999654192486150,\t\n-0.999999694524180470,\t-0.999999732355875580,\t-0.999999767687571370,\t-0.999999800519267730,\t-0.999999830850964670,\t-0.999999858682661950,\t-0.999999884014359570,\t-0.999999906846057440,\t\n-0.999999927177755650,\t-0.999999945009453990,\t-0.999999960341152460,\t-0.999999973172851050,\t-0.999999983504549660,\t-0.999999991336248390,\t-0.999999996667947140,\t-0.999999999499645800,\t\n-0.999999999831344580,\t-0.999999997663043260,\t-0.999999992994741960,\t-0.999999985826440780,\t-0.999999976158139510,\t-0.999999963989838370,\t-0.999999949321537350,\t-0.999999932153236350,\t\n-0.999999912484935580,\t-0.999999890316635050,\t-0.999999865648334760,\t-0.999999838480034820,\t-0.999999808811735340,\t-0.999999776643436310,\t-0.999999741975137750,\t-0.999999704806839970,\t\n-0.999999665138542880,\t-0.999999622970246580,\t-0.999999578301951190,\t-0.999999531133656920,\t-0.999999481465363880,\t-0.999999429297072080,\t-0.999999374628781630,\t-0.999999317460492860,\t\n-0.999999257792205780,\t-0.999999195623920480,\t-0.999999130955637310,\t-0.999999063787356150,\t-0.999998994119077440,\t-0.999998921950801200,\t-0.999998847282527750,\t-0.999998770114257090,\t\n-0.999998690445989550,\t-0.999998608277725240,\t-0.999998523609464510,\t-0.999998436441207340,\t-0.999998346772954180,\t-0.999998254604705040,\t-0.999998159936460350,\t-0.999998062768220230,\t\n-0.999997963099985010,\t-0.999997860931754800,\t-0.999997756263530050,\t-0.999997649095310860,\t-0.999997539427097460,\t-0.999997427258890290,\t-0.999997312590689580,\t-0.999997195422495540,\t\n-0.999997075754308520,\t-0.999996953586128830,\t-0.999996828917956710,\t-0.999996701749792600,\t-0.999996572081636610,\t-0.999996439913489300,\t-0.999996305245350880,\t-0.999996168077221690,\t\n-0.999996028409102070,\t-0.999995886240992340,\t-0.999995741572892950,\t-0.999995594404804120,\t-0.999995444736726410,\t-0.999995292568660040,\t-0.999995137900605460,\t-0.999994980732562990,\t\n-0.999994821064533080,\t-0.999994658896516180,\t-0.999994494228512610,\t-0.999994327060522830,\t-0.999994157392547160,\t-0.999993985224586160,\t-0.999993810556640160,\t-0.999993633388709610,\t\n-0.999993453720794960,\t-0.999993271552896750,\t-0.999993086885015310,\t-0.999992899717151220,\t-0.999992710049304790,\t-0.999992517881476690,\t-0.999992323213667270,\t-0.999992126045876950,\t\n-0.999991926378106410,\t-0.999991724210355980,\t-0.999991519542626330,\t-0.999991312374917780,\t-0.999991102707231020,\t-0.999990890539566470,\t-0.999990675871924810,\t-0.999990458704306360,\t\n-0.999990239036711690,\t-0.999990016869141570,\t-0.999989792201596340,\t-0.999989565034076540,\t-0.999989335366582970,\t-0.999989103199116050,\t-0.999988868531676230,\t-0.999988631364264410,\t\n-0.999988391696880920,\t-0.999988149529526530,\t-0.999987904862201680,\t-0.999987657694907050,\t-0.999987408027643300,\t-0.999987155860411090,\t-0.999986901193210990,\t-0.999986644026043540,\t\n-0.999986384358909630,\t-0.999986122191809600,\t-0.999985857524744340,\t-0.999985590357714500,\t-0.999985320690720550,\t-0.999985048523763350,\t-0.999984773856843590,\t-0.999984496689961920,\t\n-0.999984217023118900,\t-0.999983934856315430,\t-0.999983650189552040,\t-0.999983363022829530,\t-0.999983073356148670,\t-0.999982781189510120,\t-0.999982486522914550,\t-0.999982189356362850,\t\n-0.999981889689855570,\t-0.999981587523393720,\t-0.999981282856977740,\t-0.999980975690608620,\t-0.999980666024287150,\t-0.999980353858013870,\t-0.999980039191789790,\t-0.999979722025615580,\t\n-0.999979402359492120,\t-0.999979080193420080,\t-0.999978755527400340,\t-0.999978428361433800,\t-0.999978098695521120,\t-0.999977766529663190,\t-0.999977431863860900,\t-0.999977094698115020,\t\n-0.999976755032426330,\t-0.999976412866795840,\t-0.999976068201224310,\t-0.999975721035712530,\t-0.999975371370261490,\t-0.999975019204872080,\t-0.999974664539545090,\t-0.999974307374281390,\t\n-0.999973947709081880,\t-0.999973585543947660,\t-0.999973220878879410,\t-0.999972853713878010,\t-0.999972484048944570,\t-0.999972111884079970,\t-0.999971737219285010,\t-0.999971360054560670,\t\n-0.999970980389908060,\t-0.999970598225327860,\t-0.999970213560821270,\t-0.999969826396389090,\t-0.999969436732032310,\t-0.999969044567752040,\t-0.999968649903549060,\t-0.999968252739424580,\t\n-0.999967853075379390,\t-0.999967450911414590,\t-0.999967046247531080,\t-0.999966639083730070,\t-0.999966229420012340,\t-0.999965817256379120,\t-0.999965402592831400,\t-0.999964985429370070,\t\n-0.999964565765996350,\t-0.999964143602711240,\t-0.999963718939515630,\t-0.999963291776410860,\t-0.999962862113397800,\t-0.999962429950477680,\t-0.999961995287651400,\t-0.999961558124920160,\t\n-0.999961118462284970,\t-0.999960676299747050,\t-0.999960231637307410,\t-0.999959784474967140,\t-0.999959334812727470,\t-0.999958882650589410,\t-0.999958427988554280,\t-0.999957970826622970,\t\n-0.999957511164796700,\t-0.999957049003076690,\t-0.999956584341464170,\t-0.999956117179960020,\t-0.999955647518565690,\t-0.999955175357282180,\t-0.999954700696110810,\t-0.999954223535052590,\t\n-0.999953743874108850,\t-0.999953261713280810,\t-0.999952777052569460,\t-0.999952289891976380,\t-0.999951800231502430,\t-0.999951308071148960,\t-0.999950813410917290,\t-0.999950316250808660,\t\n-0.999949816590824050,\t-0.999949314430965020,\t-0.999948809771232680,\t-0.999948302611628370,\t-0.999947792952153300,\t-0.999947280792808700,\t-0.999946766133595900,\t-0.999946248974516120,\t\n-0.999945729315570800,\t-0.999945207156761160,\t-0.999944682498088430,\t-0.999944155339554160,\t-0.999943625681159350,\t-0.999943093522905560,\t-0.999942558864794000,\t-0.999942021706826000,\t\n-0.999941482049003020,\t-0.999940939891326260,\t-0.999940395233797190,\t-0.999939848076417110,\t-0.999939298419187490,\t-0.999938746262109550,\t-0.999938191605184710,\t-0.999937634448414550,\t\n-0.999937074791800160,\t-0.999936512635343110,\t-0.999935947979044840,\t-0.999935380822906560,\t-0.999934811166929950,\t-0.999934239011116330,\t-0.999933664355467040,\t-0.999933087199983640,\t\n-0.999932507544667450,\t-0.999931925389520030,\t-0.999931340734542820,\t-0.999930753579737260,\t-0.999930163925104810,\t-0.999929571770646900,\t-0.999928977116365190,\t-0.999928379962260920,\t\n-0.999927780308335730,\t-0.999927178154591090,\t-0.999926573501028540,\t-0.999925966347649520,\t-0.999925356694455590,\t-0.999924744541448310,\t-0.999924129888629110,\t-0.999923512735999550,\t\n-0.999922893083561300,\t-0.999922270931315800,\t-0.999921646279264610,\t-0.999921019127409270,\t-0.999920389475751350,\t-0.999919757324292610,\t-0.999919122673034290,\t-0.999918485521978260,\t\n-0.999917845871126090,\t-0.999917203720479210,\t-0.999916559070039290,\t-0.999915911919808110,\t-0.999915262269787000,\t-0.999914610119977840,\t-0.999913955470382090,\t-0.999913298321001510,\t\n-0.999912638671837660,\t-0.999911976522892210,\t-0.999911311874166820,\t-0.999910644725663160,\t-0.999909975077382880,\t-0.999909302929327670,\t-0.999908628281499180,\t-0.999907951133899080,\t\n-0.999907271486529140,\t-0.999906589339391030,\t-0.999905904692486520,\t-0.999905217545817180,\t-0.999904527899384780,\t-0.999903835753191080,\t-0.999903141107237770,\t-0.999902443961526610,\t\n-0.999901744316059380,\t-0.999901042170837750,\t-0.999900337525863600,\t-0.999899630381138490,\t-0.999898920736664310,\t-0.999898208592442940,\t-0.999897493948475930,\t-0.999896776804765300,\t\n-0.999896057161312690,\t-0.999895335018119890,\t-0.999894610375188790,\t-0.999893883232521150,\t-0.999893153590118770,\t-0.999892421447983510,\t-0.999891686806117290,\t-0.999890949664521740,\t\n-0.999890210023198890,\t-0.999889467882150500,\t-0.999888723241378450,\t-0.999887976100884530,\t-0.999887226460670740,\t-0.999886474320738850,\t-0.999885719681090860,\t-0.999884962541728430,\t\n-0.999884202902653670,\t-0.999883440763868370,\t-0.999882676125374510,\t-0.999881908987174000,\t-0.999881139349268590,\t-0.999880367211660400,\t-0.999879592574351330,\t-0.999878815437343250,\t\n-0.999878035800638170,\t-0.999877253664237850,\t-0.999876469028144530,\t-0.999875681892360090,\t-0.999874892256886310,\t-0.999874100121725400,\t-0.999873305486879140,\t-0.999872508352349750,\t\n-0.999871708718139020,\t-0.999870906584248930,\t-0.999870101950681710,\t-0.999869294817439140,\t-0.999868485184523430,\t-0.999867673051936470,\t-0.999866858419680260,\t-0.999866041287757020,\t\n-0.999865221656168530,\t-0.999864399524917120,\t-0.999863574894004680,\t-0.999862747763433200,\t-0.999861918133205020,\t-0.999861086003321910,\t-0.999860251373786200,\t-0.999859414244599790,\t\n-0.999858574615764770,\t-0.999857732487283490,\t-0.999856887859157720,\t-0.999856040731389780,\t-0.999855191103981800,\t-0.999854338976935760,\t-0.999853484350254010,\t-0.999852627223938420,\t\n-0.999851767597991210,\t-0.999850905472414730,\t-0.999850040847210960,\t-0.999849173722382020,\t-0.999848304097930130,\t-0.999847431973857610,\t-0.999846557350166370,\t-0.999845680226858820,\t\n-0.999844800603937100,\t-0.999843918481403300,\t-0.999843033859259660,\t-0.999842146737508490,\t-0.999841257116152020,\t-0.999840364995192350,\t-0.999839470374631830,\t-0.999838573254472560,\t\n-0.999837673634716870,\t-0.999836771515366980,\t-0.999835866896425230,\t-0.999834959777893720,\t-0.999834050159774890,\t-0.999833138042070860,\t-0.999832223424784060,\t-0.999831306307916610,\t\n-0.999830386691470950,\t-0.999829464575449410,\t-0.999828539959854100,\t-0.999827612844687460,\t-0.999826683229951830,\t-0.999825751115649420,\t-0.999824816501782680,\t-0.999823879388353930,\t\n-0.999822939775365400,\t-0.999821997662819540,\t-0.999821053050718780,\t-0.999820105939065340,\t-0.999819156327861560,\t-0.999818204217109980,\t-0.999817249606812840,\t-0.999816292496972570,\t\n-0.999815332887591610,\t-0.999814370778672300,\t-0.999813406170217080,\t-0.999812439062228280,\t-0.999811469454708450,\t-0.999810497347659920,\t-0.999809522741085140,\t-0.999808545634986560,\t\n-0.999807566029366710,\t-0.999806583924227830,\t-0.999805599319572470,\t-0.999804612215403180,\t-0.999803622611722400,\t-0.999802630508532460,\t-0.999801635905836040,\t-0.999800638803635460,\t\n-0.999799639201933270,\t-0.999798637100732020,\t-0.999797632500034170,\t-0.999796625399842260,\t-0.999795615800158740,\t-0.999794603700986270,\t-0.999793589102327180,\t-0.999792572004184250,\t\n-0.999791552406559810,\t-0.999790530309456420,\t-0.999789505712876840,\t-0.999788478616823410,\t-0.999787449021298790,\t-0.999786416926305650,\t-0.999785382331846330,\t-0.999784345237923590,\t\n-0.999783305644539990,\t-0.999782263551698190,\t-0.999781218959400640,\t-0.999780171867650110,\t-0.999779122276449160,\t-0.999778070185800340,\t-0.999777015595706420,\t-0.999775958506169850,\t\n-0.999774898917193510,\t-0.999773836828779850,\t-0.999772772240931640,\t-0.999771705153651440,\t-0.999770635566942010,\t-0.999769563480806030,\t-0.999768488895246050,\t-0.999767411810264960,\t\n-0.999766332225865310,\t-0.999765250142049760,\t-0.999764165558821080,\t-0.999763078476182070,\t-0.999761988894135370,\t-0.999760896812683650,\t-0.999759802231829700,\t-0.999758705151576280,\t\n-0.999757605571926060,\t-0.999756503492881810,\t-0.999755398914446310,\t-0.999754291836622340,\t-0.999753182259412570,\t-0.999752070182819860,\t-0.999750955606847010,\t-0.999749838531496790,\t\n-0.999748718956771980,\t-0.999747596882675340,\t-0.999746472309209770,\t-0.999745345236377920,\t-0.999744215664182810,\t-0.999743083592627090,\t-0.999741949021713650,\t-0.999740811951445370,\t\n-0.999739672381825040,\t-0.999738530312855640,\t-0.999737385744539740,\t-0.999736238676880550,\t-0.999735089109880630,\t-0.999733937043542960,\t-0.999732782477870560,\t-0.999731625412866200,\t\n-0.999730465848532760,\t-0.999729303784873120,\t-0.999728139221890190,\t-0.999726972159586950,\t-0.999725802597966280,\t-0.999724630537031200,\t-0.999723455976784470,\t-0.999722278917229090,\t\n-0.999721099358367950,\t-0.999719917300204150,\t-0.999718732742740480,\t-0.999717545685980040,\t-0.999716356129925710,\t-0.999715164074580500,\t-0.999713969519947400,\t-0.999712772466029410,\t\n-0.999711572912829420,\t-0.999710370860350530,\t-0.999709166308595740,\t-0.999707959257567950,\t-0.999706749707270360,\t-0.999705537657705870,\t-0.999704323108877470,\t-0.999703106060788270,\t\n-0.999701886513441380,\t-0.999700664466839690,\t-0.999699439920986420,\t-0.999698212875884560,\t-0.999696983331537110,\t-0.999695751287947190,\t-0.999694516745117890,\t-0.999693279703052330,\t\n-0.999692040161753610,\t-0.999690798121224740,\t-0.999689553581468940,\t-0.999688306542489190,\t-0.999687057004288620,\t-0.999685804966870540,\t-0.999684550430237850,\t-0.999683293394393770,\t\n-0.999682033859341510,\t-0.999680771825084190,\t-0.999679507291624910,\t-0.999678240258966900,\t-0.999676970727113260,\t-0.999675698696067090,\t-0.999674424165831850,\t-0.999673147136410420,\t\n-0.999671867607806240,\t-0.999670585580022310,\t-0.999669301053061950,\t-0.999668014026928290,\t-0.999666724501624640,\t-0.999665432477154110,\t-0.999664137953520050,\t-0.999662840930725660,\t\n-0.999661541408774170,\t-0.999660239387668790,\t-0.999658934867412860,\t-0.999657627848009600,\t-0.999656318329462220,\t-0.999655006311774060,\t-0.999653691794948340,\t-0.999652374778988500,\t\n-0.999651055263897640,\t-0.999649733249679210,\t-0.999648408736336310,\t-0.999647081723872510,\t-0.999645752212291020,\t-0.999644420201595050,\t-0.999643085691788170,\t-0.999641748682873480,\t\n-0.999640409174854420,\t-0.999639067167734320,\t-0.999637722661516630,\t-0.999636375656204560,\t-0.999635026151801550,\t-0.999633674148311060,\t-0.999632319645736290,\t-0.999630962644080800,\t\n-0.999629603143347810,\t-0.999628241143540870,\t-0.999626876644663320,\t-0.999625509646718590,\t-0.999624140149710130,\t-0.999622768153641260,\t-0.999621393658515430,\t-0.999620016664336200,\t\n-0.999618637171106880,\t-0.999617255178831040,\t-0.999615870687512010,\t-0.999614483697153220,\t-0.999613094207758350,\t-0.999611702219330710,\t-0.999610307731873760,\t-0.999608910745391040,\t\n-0.999607511259886120,\t-0.999606109275362420,\t-0.999604704791823400,\t-0.999603297809272600,\t-0.999601888327713680,\t-0.999600476347149880,\t-0.999599061867584960,\t-0.999597644889022360,\t\n-0.999596225411465760,\t-0.999594803434918470,\t-0.999593378959384160,\t-0.999591951984866500,\t-0.999590522511368930,\t-0.999589090538895000,\t-0.999587656067448370,\t-0.999586219097032710,\t\n-0.999584779627651350,\t-0.999583337659308070,\t-0.999581893192006520,\t-0.999580446225750150,\t-0.999578996760542740,\t-0.999577544796387830,\t-0.999576090333288980,\t-0.999574633371249970,\t\n-0.999573173910274450,\t-0.999571711950365870,\t-0.999570247491528010,\t-0.999568780533764630,\t-0.999567311077079190,\t-0.999565839121475560,\t-0.999564364666957310,\t-0.999562887713528080,\t\n-0.999561408261191780,\t-0.999559926309951830,\t-0.999558441859812130,\t-0.999556954910776230,\t-0.999555465462848130,\t-0.999553973516031150,\t-0.999552479070329400,\t-0.999550982125746330,\t\n-0.999549482682285940,\t-0.999547980739951770,\t-0.999546476298747600,\t-0.999544969358677320,\t-0.999543459919744580,\t-0.999541947981953170,\t-0.999540433545306860,\t-0.999538916609809540,\t\n-0.999537397175464970,\t-0.999535875242276830,\t-0.999534350810248990,\t-0.999532823879385360,\t-0.999531294449689580,\t-0.999529762521165650,\t-0.999528228093817250,\t-0.999526691167648250,\t\n-0.999525151742662540,\t-0.999523609818864010,\t-0.999522065396256430,\t-0.999520518474843690,\t-0.999518969054629670,\t-0.999517417135618150,\t-0.999515862717813120,\t-0.999514305801218470,\t\n-0.999512746385838090,\t-0.999511184471675750,\t-0.999509620058735560,\t-0.999508053147021180,\t-0.999506483736536830,\t-0.999504911827286180,\t-0.999503337419273220,\t-0.999501760512501950,\t\n-0.999500181106976250,\t-0.999498599202700120,\t-0.999497014799677560,\t-0.999495427897912350,\t-0.999493838497408690,\t-0.999492246598170380,\t-0.999490652200201390,\t-0.999489055303505850,\t\n-0.999487455908087630,\t-0.999485854013950850,\t-0.999484249621099270,\t-0.999482642729537240,\t-0.999481033339268520,\t-0.999479421450297220,\t-0.999477807062627340,\t-0.999476190176262990,\t\n-0.999474570791208160,\t-0.999472948907466960,\t-0.999471324525043280,\t-0.999469697643941330,\t-0.999468068264165120,\t-0.999466436385718750,\t-0.999464802008606320,\t-0.999463165132831950,\t\n-0.999461525758399530,\t-0.999459883885313370,\t-0.999458239513577480,\t-0.999456592643195970,\t-0.999454943274173060,\t-0.999453291406512730,\t-0.999451637040219110,\t-0.999449980175296520,\t\n-0.999448320811748840,\t-0.999446658949580510,\t-0.999444994588795430,\t-0.999443327729397920,\t-0.999441658371392090,\t-0.999439986514782050,\t-0.999438312159572130,\t-0.999436635305766430,\t\n-0.999434955953369060,\t-0.999433274102384360,\t-0.999431589752816430,\t-0.999429902904669600,\t-0.999428213557947980,\t-0.999426521712655780,\t-0.999424827368797340,\t-0.999423130526376770,\t\n-0.999421431185398390,\t-0.999419729345866430,\t-0.999418025007785200,\t-0.999416318171158840,\t-0.999414608835991760,\t-0.999412897002288080,\t-0.999411182670052240,\t-0.999409465839288360,\t\n-0.999407746510000860,\t-0.999406024682193970,\t-0.999404300355872130,\t-0.999402573531039450,\t-0.999400844207700260,\t-0.999399112385859100,\t-0.999397378065520090,\t-0.999395641246687560,\t\n-0.999393901929366060,\t-0.999392160113559800,\t-0.999390415799273010,\t-0.999388668986510350,\t-0.999386919675275930,\t-0.999385167865574190,\t-0.999383413557409560,\t-0.999381656750786380,\t\n-0.999379897445709100,\t-0.999378135642182030,\t-0.999376371340209620,\t-0.999374604539796320,\t-0.999372835240946440,\t-0.999371063443664550,\t-0.999369289147954980,\t-0.999367512353822150,\t\n-0.999365733061270630,\t-0.999363951270304750,\t-0.999362166980928950,\t-0.999360380193147770,\t-0.999358590906965550,\t-0.999356799122386950,\t-0.999355004839416310,\t-0.999353208058058160,\t\n-0.999351408778316960,\t-0.999349607000197260,\t-0.999347802723703600,\t-0.999345995948840440,\t-0.999344186675612200,\t-0.999342374904023560,\t-0.999340560634078940,\t-0.999338743865782920,\t\n-0.999336924599140140,\t-0.999335102834154940,\t-0.999333278570831980,\t-0.999331451809175930,\t-0.999329622549191110,\t-0.999327790790882410,\t-0.999325956534254050,\t-0.999324119779310900,\t\n-0.999322280526057430,\t-0.999320438774498280,\t-0.999318594524638000,\t-0.999316747776481270,\t-0.999314898530032520,\t-0.999313046785296750,\t-0.999311192542278180,\t-0.999309335800981800,\t\n-0.999307476561411940,\t-0.999305614823573500,\t-0.999303750587470900,\t-0.999301883853109030,\t-0.999300014620492450,\t-0.999298142889625710,\t-0.999296268660513690,\t-0.999294391933161050,\t\n-0.999292512707572360,\t-0.999290630983752480,\t-0.999288746761705980,\t-0.999286860041437520,\t-0.999284970822951980,\t-0.999283079106254020,\t-0.999281184891348430,\t-0.999279288178239740,\t\n-0.999277388966932970,\t-0.999275487257432650,\t-0.999273583049743560,\t-0.999271676343870600,\t-0.999269767139818410,\t-0.999267855437591780,\t-0.999265941237195590,\t-0.999264024538634500,\t\n-0.999262105341913400,\t-0.999260183647036950,\t-0.999258259454010030,\t-0.999256332762837540,\t-0.999254403573524240,\t-0.999252471886074910,\t-0.999250537700494320,\t-0.999248601016787470,\t\n-0.999246661834959140,\t-0.999244720155014090,\t-0.999242775976957210,\t-0.999240829300793500,\t-0.999238880126527620,\t-0.999236928454164560,\t-0.999234974283709220,\t-0.999233017615166360,\t\n-0.999231058448540990,\t-0.999229096783837980,\t-0.999227132621062330,\t-0.999225165960218710,\t-0.999223196801312220,\t-0.999221225144347750,\t-0.999219250989330290,\t-0.999217274336264620,\t\n-0.999215295185155730,\t-0.999213313536008730,\t-0.999211329388828280,\t-0.999209342743619610,\t-0.999207353600387590,\t-0.999205361959137120,\t-0.999203367819873290,\t-0.999201371182601110,\t\n-0.999199372047325340,\t-0.999197370414051210,\t-0.999195366282783710,\t-0.999193359653527740,\t-0.999191350526288380,\t-0.999189338901070760,\t-0.999187324777879640,\t-0.999185308156720240,\t\n-0.999183289037597680,\t-0.999181267420516720,\t-0.999179243305482690,\t-0.999177216692500590,\t-0.999175187581575310,\t-0.999173155972712170,\t-0.999171121865916170,\t-0.999169085261192300,\t\n-0.999167046158545680,\t-0.999165004557981520,\t-0.999162960459504810,\t-0.999160913863120780,\t-0.999158864768834420,\t-0.999156813176650840,\t-0.999154759086575250,\t-0.999152702498612880,\t\n-0.999150643412768600,\t-0.999148581829047750,\t-0.999146517747455440,\t-0.999144451167996880,\t-0.999142382090677180,\t-0.999140310515501560,\t-0.999138236442475130,\t-0.999136159871603090,\t\n-0.999134080802890680,\t-0.999131999236342990,\t-0.999129915171965370,\t-0.999127828609763010,\t-0.999125739549741040,\t-0.999123647991904670,\t-0.999121553936259230,\t-0.999119457382809940,\t\n-0.999117358331561900,\t-0.999115256782520560,\t-0.999113152735691010,\t-0.999111046191078600,\t-0.999108937148688650,\t-0.999106825608526260,\t-0.999104711570596770,\t-0.999102595034905620,\t\n-0.999100476001457900,\t-0.999098354470259080,\t-0.999096230441314350,\t-0.999094103914628940,\t-0.999091974890208400,\t-0.999089843368057840,\t-0.999087709348182700,\t-0.999085572830588300,\t\n-0.999083433815279980,\t-0.999081292302263060,\t-0.999079148291542870,\t-0.999077001783124860,\t-0.999074852777014350,\t-0.999072701273216680,\t-0.999070547271737270,\t-0.999068390772581470,\t\n-0.999066231775754710,\t-0.999064070281262430,\t-0.999061906289109850,\t-0.999059739799302630,\t-0.999057570811845990,\t-0.999055399326745470,\t-0.999053225344006420,\t-0.999051048863634270,\t\n-0.999048869885634460,\t-0.999046688410012650,\t-0.999044504436773950,\t-0.999042317965924130,\t-0.999040128997468410,\t-0.999037937531412350,\t-0.999035743567761480,\t-0.999033547106521370,\t\n-0.999031348147697230,\t-0.999029146691294830,\t-0.999026942737319510,\t-0.999024736285776820,\t-0.999022527336672290,\t-0.999020315890011500,\t-0.999018101945799870,\t-0.999015885504042970,\t\n-0.999013666564746440,\t-0.999011445127915620,\t-0.999009221193556280,\t-0.999006994761673870,\t-0.999004765832273930,\t-0.999002534405362130,\t-0.999000300480944010,\t-0.998998064059025140,\t\n-0.998995825139611050,\t-0.998993583722707410,\t-0.998991339808319890,\t-0.998989093396453920,\t-0.998986844487115280,\t-0.998984593080309510,\t-0.998982339176042180,\t-0.998980082774319160,\t\n-0.998977823875145780,\t-0.998975562478527920,\t-0.998973298584471150,\t-0.998971032192981110,\t-0.998968763304063590,\t-0.998966491917724020,\t-0.998964218033968290,\t-0.998961941652802050,\t\n-0.998959662774230870,\t-0.998957381398260620,\t-0.998955097524896860,\t-0.998952811154145360,\t-0.998950522286011890,\t-0.998948230920502000,\t-0.998945937057621580,\t-0.998943640697376400,\t\n-0.998941341839772010,\t-0.998939040484814410,\t-0.998936736632509040,\t-0.998934430282861880,\t-0.998932121435878730,\t-0.998929810091565230,\t-0.998927496249927160,\t-0.998925179910970410,\t\n-0.998922861074700630,\t-0.998920539741123830,\t-0.998918215910245540,\t-0.998915889582071780,\t-0.998913560756608310,\t-0.998911229433860900,\t-0.998908895613835450,\t-0.998906559296537710,\t\n-0.998904220481973580,\t-0.998901879170148940,\t-0.998899535361069570,\t-0.998897189054741340,\t-0.998894840251170260,\t-0.998892488950361980,\t-0.998890135152322500,\t-0.998887778857057710,\t\n-0.998885420064573370,\t-0.998883058774875600,\t-0.998880694987970160,\t-0.998878328703862950,\t-0.998875959922559840,\t-0.998873588644066950,\t-0.998871214868390030,\t-0.998868838595535210,\t\n-0.998866459825508150,\t-0.998864078558314940,\t-0.998861694793961590,\t-0.998859308532453970,\t-0.998856919773798090,\t-0.998854528517999940,\t-0.998852134765065400,\t-0.998849738515000580,\t\n-0.998847339767811480,\t-0.998844938523503870,\t-0.998842534782084070,\t-0.998840128543557750,\t-0.998837719807931230,\t-0.998835308575210410,\t-0.998832894845401390,\t-0.998830478618510040,\t\n-0.998828059894542490,\t-0.998825638673504710,\t-0.998823214955402940,\t-0.998820788740243160,\t-0.998818360028031370,\t-0.998815928818773680,\t-0.998813495112476190,\t-0.998811058909145010,\t\n-0.998808620208786140,\t-0.998806179011405670,\t-0.998803735317009720,\t-0.998801289125604510,\t-0.998798840437196020,\t-0.998796389251790480,\t-0.998793935569394000,\t-0.998791479390012670,\t\n-0.998789020713652500,\t-0.998786559540319920,\t-0.998784095870020930,\t-0.998781629702761740,\t-0.998779161038548360,\t-0.998776689877387210,\t-0.998774216219284190,\t-0.998771740064245740,\t\n-0.998769261412277950,\t-0.998766780263386830,\t-0.998764296617578930,\t-0.998761810474860230,\t-0.998759321835237080,\t-0.998756830698715570,\t-0.998754337065302030,\t-0.998751840935002470,\t\n-0.998749342307823530,\t-0.998746841183771110,\t-0.998744337562851640,\t-0.998741831445071340,\t-0.998739322830436430,\t-0.998736811718953230,\t-0.998734298110627970,\t-0.998731782005466970,\t\n-0.998729263403476450,\t-0.998726742304662850,\t-0.998724218709032390,\t-0.998721692616591380,\t-0.998719164027346170,\t-0.998716632941303080,\t-0.998714099358468330,\t-0.998711563278848360,\t\n-0.998709024702449490,\t-0.998706483629278050,\t-0.998703940059340380,\t-0.998701393992642910,\t-0.998698845429191850,\t-0.998696294368993760,\t-0.998693740812054980,\t-0.998691184758381810,\t\n-0.998688626207980600,\t-0.998686065160857890,\t-0.998683501617020020,\t-0.998680935576473420,\t-0.998678367039224410,\t-0.998675796005279450,\t-0.998673222474645180,\t-0.998670646447327730,\t\n-0.998668067923333620,\t-0.998665486902669430,\t-0.998662903385341580,\t-0.998660317371356410,\t-0.998657728860720350,\t-0.998655137853440070,\t-0.998652544349521890,\t-0.998649948348972360,\t\n-0.998647349851798040,\t-0.998644748858005250,\t-0.998642145367600650,\t-0.998639539380590690,\t-0.998636930896981800,\t-0.998634319916780640,\t-0.998631706439993660,\t-0.998629090466627510,\t\n-0.998626471996688530,\t-0.998623851030183360,\t-0.998621227567118690,\t-0.998618601607500820,\t-0.998615973151336540,\t-0.998613342198632290,\t-0.998610708749394620,\t-0.998608072803630180,\t\n-0.998605434361345630,\t-0.998602793422547430,\t-0.998600149987242340,\t-0.998597504055436790,\t-0.998594855627137570,\t-0.998592204702351110,\t-0.998589551281084180,\t-0.998586895363343440,\t\n-0.998584236949135340,\t-0.998581576038466760,\t-0.998578912631344240,\t-0.998576246727774340,\t-0.998573578327763830,\t-0.998570907431319490,\t-0.998568234038447740,\t-0.998565558149155490,\t\n-0.998562879763449370,\t-0.998560198881335960,\t-0.998557515502822120,\t-0.998554829627914420,\t-0.998552141256619730,\t-0.998549450388944710,\t-0.998546757024896040,\t-0.998544061164480360,\t\n-0.998541362807704670,\t-0.998538661954575520,\t-0.998535958605099690,\t-0.998533252759284060,\t-0.998530544417135180,\t-0.998527833578660040,\t-0.998525120243865190,\t-0.998522404412757640,\t\n-0.998519686085344140,\t-0.998516965261631250,\t-0.998514241941626080,\t-0.998511516125335290,\t-0.998508787812765640,\t-0.998506057003924030,\t-0.998503323698817340,\t-0.998500587897452330,\t\n-0.998497849599835900,\t-0.998495108805974700,\t-0.998492365515875830,\t-0.998489619729546090,\t-0.998486871446992220,\t-0.998484120668221120,\t-0.998481367393239780,\t-0.998478611622055090,\t\n-0.998475853354673810,\t-0.998473092591102840,\t-0.998470329331349270,\t-0.998467563575419770,\t-0.998464795323321440,\t-0.998462024575061060,\t-0.998459251330645610,\t-0.998456475590082100,\t\n-0.998453697353377410,\t-0.998450916620538420,\t-0.998448133391572120,\t-0.998445347666485520,\t-0.998442559445285480,\t-0.998439768727979130,\t-0.998436975514573330,\t-0.998434179805075210,\t\n-0.998431381599491520,\t-0.998428580897829270,\t-0.998425777700095770,\t-0.998422972006297700,\t-0.998420163816442270,\t-0.998417353130536370,\t-0.998414539948587200,\t-0.998411724270601540,\t\n-0.998408906096586720,\t-0.998406085426549520,\t-0.998403262260497140,\t-0.998400436598436580,\t-0.998397608440374950,\t-0.998394777786319240,\t-0.998391944636276670,\t-0.998389108990254240,\t\n-0.998386270848258930,\t-0.998383430210298070,\t-0.998380587076378560,\t-0.998377741446507700,\t-0.998374893320692400,\t-0.998372042698939870,\t-0.998369189581257200,\t-0.998366333967651620,\t\n-0.998363475858130120,\t-0.998360615252699920,\t-0.998357752151368350,\t-0.998354886554142280,\t-0.998352018461028940,\t-0.998349147872035660,\t-0.998346274787169530,\t-0.998343399206437550,\t\n-0.998340521129847280,\t-0.998337640557405590,\t-0.998334757489119820,\t-0.998331871924997170,\t-0.998328983865044760,\t-0.998326093309270020,\t-0.998323200257679950,\t-0.998320304710281990,\t\n-0.998317406667083130,\t-0.998314506128090810,\t-0.998311603093312240,\t-0.998308697562754640,\t-0.998305789536425350,\t-0.998302879014331570,\t-0.998299965996480520,\t-0.998297050482879530,\t\n-0.998294132473536040,\t-0.998291211968457160,\t-0.998288288967650320,\t-0.998285363471122620,\t-0.998282435478881620,\t-0.998279504990934540,\t-0.998276572007288700,\t-0.998273636527951310,\t\n-0.998270698552929940,\t-0.998267758082231780,\t-0.998264815115864290,\t-0.998261869653834680,\t-0.998258921696150380,\t-0.998255971242818840,\t-0.998253018293847380,\t-0.998250062849243340,\t\n-0.998247104909014140,\t-0.998244144473167230,\t-0.998241181541709930,\t-0.998238216114649690,\t-0.998235248191993830,\t-0.998232277773749900,\t-0.998229304859925340,\t-0.998226329450527360,\t\n-0.998223351545563740,\t-0.998220371145041700,\t-0.998217388248968660,\t-0.998214402857352190,\t-0.998211414970199720,\t-0.998208424587518680,\t-0.998205431709316530,\t-0.998202436335600910,\t\n-0.998199438466379150,\t-0.998196438101658810,\t-0.998193435241447440,\t-0.998190429885752350,\t-0.998187422034581330,\t-0.998184411687941700,\t-0.998181398845840890,\t-0.998178383508286800,\t\n-0.998175365675286640,\t-0.998172345346848070,\t-0.998169322522978630,\t-0.998166297203685990,\t-0.998163269388977480,\t-0.998160239078860760,\t-0.998157206273343590,\t-0.998154170972433310,\t\n-0.998151133176137680,\t-0.998148092884464160,\t-0.998145050097420490,\t-0.998142004815014030,\t-0.998138957037252750,\t-0.998135906764143990,\t-0.998132853995695400,\t-0.998129798731914760,\t\n-0.998126740972809510,\t-0.998123680718387530,\t-0.998120617968656370,\t-0.998117552723623570,\t-0.998114484983296910,\t-0.998111414747684060,\t-0.998108342016792660,\t-0.998105266790630390,\t\n-0.998102189069205000,\t-0.998099108852524180,\t-0.998096026140595450,\t-0.998092940933426710,\t-0.998089853231025730,\t-0.998086763033399940,\t-0.998083670340557340,\t-0.998080575152505590,\t\n-0.998077477469252350,\t-0.998074377290805390,\t-0.998071274617172600,\t-0.998068169448361520,\t-0.998065061784380040,\t-0.998061951625235920,\t-0.998058838970936950,\t-0.998055723821490770,\t\n-0.998052606176905390,\t-0.998049486037188460,\t-0.998046363402347870,\t-0.998043238272391280,\t-0.998040110647326560,\t-0.998036980527161720,\t-0.998033847911904300,\t-0.998030712801562410,\t\n-0.998027575196143600,\t-0.998024435095655860,\t-0.998021292500107070,\t-0.998018147409505010,\t-0.998014999823857660,\t-0.998011849743172810,\t-0.998008697167458210,\t-0.998005542096721990,\t\n-0.998002384530971900,\t-0.997999224470215830,\t-0.997996061914461660,\t-0.997992896863717390,\t-0.997989729317990790,\t-0.997986559277289960,\t-0.997983386741622790,\t-0.997980211710997040,\t\n-0.997977034185420830,\t-0.997973854164901920,\t-0.997970671649448420,\t-0.997967486639068310,\t-0.997964299133769490,\t-0.997961109133559840,\t-0.997957916638447460,\t-0.997954721648440350,\t\n-0.997951524163546380,\t-0.997948324183773550,\t-0.997945121709129970,\t-0.997941916739623510,\t-0.997938709275262400,\t-0.997935499316054410,\t-0.997932286862007740,\t-0.997929071913130290,\t\n-0.997925854469430160,\t-0.997922634530915450,\t-0.997919412097594050,\t-0.997916187169474280,\t-0.997912959746563910,\t-0.997909729828871160,\t-0.997906497416404140,\t-0.997903262509170830,\t\n-0.997900025107179460,\t-0.997896785210437900,\t-0.997893542818954370,\t-0.997890297932737090,\t-0.997887050551794050,\t-0.997883800676133360,\t-0.997880548305763120,\t-0.997877293440691650,\t\n-0.997874036080926730,\t-0.997870776226476910,\t-0.997867513877350070,\t-0.997864249033554420,\t-0.997860981695098180,\t-0.997857711861989460,\t-0.997854439534236580,\t-0.997851164711847430,\t\n-0.997847887394830550,\t-0.997844607583193710,\t-0.997841325276945580,\t-0.997838040476094030,\t-0.997834753180647400,\t-0.997831463390613900,\t-0.997828171106001750,\t-0.997824876326819040,\t\n-0.997821579053074340,\t-0.997818279284775620,\t-0.997814977021931120,\t-0.997811672264549250,\t-0.997808365012638250,\t-0.997805055266206330,\t-0.997801743025261700,\t-0.997798428289812690,\t\n-0.997795111059867620,\t-0.997791791335434830,\t-0.997788469116522530,\t-0.997785144403139150,\t-0.997781817195292800,\t-0.997778487492991920,\t-0.997775155296244830,\t-0.997771820605059870,\t\n-0.997768483419445350,\t-0.997765143739409610,\t-0.997761801564961080,\t-0.997758456896107980,\t-0.997755109732858750,\t-0.997751760075221710,\t-0.997748407923205290,\t-0.997745053276817950,\t\n-0.997741696136067780,\t-0.997738336500963550,\t-0.997734974371513370,\t-0.997731609747725790,\t-0.997728242629609240,\t-0.997724873017171940,\t-0.997721500910422550,\t-0.997718126309369510,\t\n-0.997714749214021030,\t-0.997711369624385670,\t-0.997707987540471960,\t-0.997704602962288250,\t-0.997701215889843060,\t-0.997697826323144850,\t-0.997694434262201950,\t-0.997691039707023000,\t\n-0.997687642657616560,\t-0.997684243113990950,\t-0.997680841076154730,\t-0.997677436544116340,\t-0.997674029517884420,\t-0.997670619997467420,\t-0.997667207982873890,\t-0.997663793474112380,\t\n-0.997660376471191320,\t-0.997656956974119270,\t-0.997653534982904990,\t-0.997650110497556700,\t-0.997646683518083280,\t-0.997643254044493060,\t-0.997639822076794690,\t-0.997636387614996840,\t\n-0.997632950659107950,\t-0.997629511209136790,\t-0.997626069265091790,\t-0.997622624826981610,\t-0.997619177894814800,\t-0.997615728468600140,\t-0.997612276548346060,\t-0.997608822134061430,\t\n-0.997605365225754710,\t-0.997601905823434550,\t-0.997598443927109610,\t-0.997594979536788550,\t-0.997591512652480030,\t-0.997588043274192700,\t-0.997584571401935350,\t-0.997581097035716620,\t\n-0.997577620175545080,\t-0.997574140821429480,\t-0.997570658973378490,\t-0.997567174631400880,\t-0.997563687795505310,\t-0.997560198465700650,\t-0.997556706641995360,\t-0.997553212324398420,\t\n-0.997549715512918380,\t-0.997546216207564010,\t-0.997542714408344190,\t-0.997539210115267470,\t-0.997535703328342850,\t-0.997532194047578870,\t-0.997528682272984410,\t-0.997525168004568360,\t\n-0.997521651242339270,\t-0.997518131986306120,\t-0.997514610236477580,\t-0.997511085992862530,\t-0.997507559255469740,\t-0.997504030024308210,\t-0.997500498299386470,\t-0.997496964080713530,\t\n-0.997493427368298160,\t-0.997489888162149230,\t-0.997486346462275520,\t-0.997482802268686020,\t-0.997479255581389500,\t-0.997475706400394850,\t-0.997472154725710820,\t-0.997468600557346540,\t\n-0.997465043895310770,\t-0.997461484739612380,\t-0.997457923090260160,\t-0.997454358947263200,\t-0.997450792310630390,\t-0.997447223180370490,\t-0.997443651556492620,\t-0.997440077439005650,\t\n-0.997436500827918460,\t-0.997432921723240050,\t-0.997429340124979300,\t-0.997425756033145090,\t-0.997422169447746640,\t-0.997418580368792720,\t-0.997414988796292310,\t-0.997411394730254530,\t\n-0.997407798170688140,\t-0.997404199117602250,\t-0.997400597571005960,\t-0.997396993530908160,\t-0.997393386997317940,\t-0.997389777970244080,\t-0.997386166449695910,\t-0.997382552435682300,\t\n-0.997378935928212360,\t-0.997375316927294970,\t-0.997371695432939240,\t-0.997368071445154380,\t-0.997364444963949380,\t-0.997360815989333240,\t-0.997357184521315050,\t-0.997353550559903820,\t\n-0.997349914105108760,\t-0.997346275156938970,\t-0.997342633715403440,\t-0.997338989780511390,\t-0.997335343352271810,\t-0.997331694430693920,\t-0.997328043015786700,\t-0.997324389107559490,\t\n-0.997320732706021170,\t-0.997317073811181180,\t-0.997313412423048270,\t-0.997309748541632010,\t-0.997306082166941390,\t-0.997302413298985500,\t-0.997298741937773680,\t-0.997295068083314810,\t\n-0.997291391735618430,\t-0.997287712894693530,\t-0.997284031560549340,\t-0.997280347733195070,\t-0.997276661412639930,\t-0.997272972598893250,\t-0.997269281291964020,\t-0.997265587491861560,\t\n-0.997261891198595210,\t-0.997258192412174060,\t-0.997254491132607450,\t-0.997250787359904690,\t-0.997247081094074890,\t-0.997243372335127390,\t-0.997239661083071490,\t-0.997235947337916320,\t\n-0.997232231099671410,\t-0.997228512368345870,\t-0.997224791143949130,\t-0.997221067426490300,\t-0.997217341215978940,\t-0.997213612512424130,\t-0.997209881315835320,\t-0.997206147626221840,\t\n-0.997202411443592780,\t-0.997198672767957930,\t-0.997194931599326260,\t-0.997191187937707340,\t-0.997187441783110470,\t-0.997183693135545000,\t-0.997179941995020140,\t-0.997176188361545650,\t\n-0.997172432235130520,\t-0.997168673615784430,\t-0.997164912503516580,\t-0.997161148898336510,\t-0.997157382800253460,\t-0.997153614209277060,\t-0.997149843125416660,\t-0.997146069548681460,\t\n-0.997142293479081230,\t-0.997138514916625200,\t-0.997134733861323010,\t-0.997130950313183880,\t-0.997127164272217370,\t-0.997123375738432900,\t-0.997119584711840150,\t-0.997115791192448310,\t\n-0.997111995180267050,\t-0.997108196675305810,\t-0.997104395677574030,\t-0.997100592187081360,\t-0.997096786203837130,\t-0.997092977727850990,\t-0.997089166759132390,\t-0.997085353297690770,\t\n-0.997081537343535770,\t-0.997077718896677070,\t-0.997073897957123980,\t-0.997070074524886160,\t-0.997066248599973170,\t-0.997062420182394550,\t-0.997058589272159850,\t-0.997054755869278720,\t\n-0.997050919973760720,\t-0.997047081585615390,\t-0.997043240704852400,\t-0.997039397331481280,\t-0.997035551465511590,\t-0.997031703106953100,\t-0.997027852255815360,\t-0.997023998912107910,\t\n-0.997020143075840530,\t-0.997016284747022860,\t-0.997012423925664360,\t-0.997008560611774900,\t-0.997004694805363910,\t-0.997000826506441280,\t-0.996996955715016560,\t-0.996993082431099410,\t\n-0.996989206654699590,\t-0.996985328385826760,\t-0.996981447624490700,\t-0.996977564370700950,\t-0.996973678624467290,\t-0.996969790385799250,\t-0.996965899654706940,\t-0.996962006431199920,\t\n-0.996958110715287730,\t-0.996954212506980350,\t-0.996950311806287460,\t-0.996946408613218700,\t-0.996942502927783970,\t-0.996938594749993020,\t-0.996934684079855530,\t-0.996930770917381360,\t\n-0.996926855262580290,\t-0.996922937115462090,\t-0.996919016476036530,\t-0.996915093344313390,\t-0.996911167720302530,\t-0.996907239604013730,\t-0.996903308995456870,\t-0.996899375894641730,\t\n-0.996895440301578170,\t-0.996891502216275980,\t-0.996887561638744920,\t-0.996883618568995100,\t-0.996879673007036280,\t-0.996875724952878130,\t-0.996871774406530850,\t-0.996867821368004000,\t\n-0.996863865837307680,\t-0.996859907814451660,\t-0.996855947299445820,\t-0.996851984292300150,\t-0.996848018793024430,\t-0.996844050801628740,\t-0.996840080318122990,\t-0.996836107342517040,\t\n-0.996832131874820780,\t-0.996828153915044090,\t-0.996824173463197070,\t-0.996820190519289720,\t-0.996816205083331800,\t-0.996812217155333410,\t-0.996808226735304450,\t-0.996804233823255000,\t\n-0.996800238419194850,\t-0.996796240523134200,\t-0.996792240135082940,\t-0.996788237255050950,\t-0.996784231883048430,\t-0.996780224019085390,\t-0.996776213663171820,\t-0.996772200815317590,\t\n-0.996768185475532920,\t-0.996764167643827800,\t-0.996760147320212230,\t-0.996756124504696310,\t-0.996752099197290130,\t-0.996748071398003700,\t-0.996744041106847000,\t-0.996740008323830250,\t\n-0.996735973048963550,\t-0.996731935282256790,\t-0.996727895023720280,\t-0.996723852273363910,\t-0.996719807031198110,\t-0.996715759297232660,\t-0.996711709071477880,\t-0.996707656353943760,\t\n-0.996703601144640410,\t-0.996699543443578250,\t-0.996695483250767180,\t-0.996691420566217290,\t-0.996687355389939020,\t-0.996683287721942260,\t-0.996679217562237320,\t-0.996675144910834310,\t\n-0.996671069767743440,\t-0.996666992132974830,\t-0.996662912006538890,\t-0.996658829388445520,\t-0.996654744278705150,\t-0.996650656677328000,\t-0.996646566584324160,\t-0.996642473999703740,\t\n-0.996638378923477290,\t-0.996634281355654910,\t-0.996630181296246810,\t-0.996626078745263210,\t-0.996621973702714440,\t-0.996617866168610700,\t-0.996613756142962330,\t-0.996609643625779640,\t\n-0.996605528617072740,\t-0.996601411116851970,\t-0.996597291125127850,\t-0.996593168641910390,\t-0.996589043667210020,\t-0.996584916201037060,\t-0.996580786243401740,\t-0.996576653794314480,\t\n-0.996572518853785620,\t-0.996568381421825470,\t-0.996564241498444360,\t-0.996560099083652620,\t-0.996555954177460680,\t-0.996551806779878870,\t-0.996547656890917510,\t-0.996543504510587040,\t\n-0.996539349638897680,\t-0.996535192275860070,\t-0.996531032421484440,\t-0.996526870075781220,\t-0.996522705238760850,\t-0.996518537910433650,\t-0.996514368090810180,\t-0.996510195779900850,\t\n-0.996506020977715900,\t-0.996501843684265980,\t-0.996497663899561400,\t-0.996493481623612730,\t-0.996489296856430400,\t-0.996485109598024720,\t-0.996480919848406250,\t-0.996476727607585430,\t\n-0.996472532875572910,\t-0.996468335652379020,\t-0.996464135938014310,\t-0.996459933732489310,\t-0.996455729035814470,\t-0.996451521848000120,\t-0.996447312169057130,\t-0.996443099998995830,\t\n-0.996438885337826760,\t-0.996434668185560590,\t-0.996430448542207640,\t-0.996426226407778560,\t-0.996422001782284020,\t-0.996417774665734330,\t-0.996413545058140280,\t-0.996409312959512410,\t\n-0.996405078369861140,\t-0.996400841289197260,\t-0.996396601717531310,\t-0.996392359654873830,\t-0.996388115101235370,\t-0.996383868056626600,\t-0.996379618521058270,\t-0.996375366494540950,\t\n-0.996371111977085060,\t-0.996366854968701480,\t-0.996362595469400760,\t-0.996358333479193560,\t-0.996354068998090540,\t-0.996349802026102350,\t-0.996345532563239540,\t-0.996341260609512890,\t\n-0.996336986164933270,\t-0.996332709229511120,\t-0.996328429803257090,\t-0.996324147886182070,\t-0.996319863478296600,\t-0.996315576579611560,\t-0.996311287190137620,\t-0.996306995309885420,\t\n-0.996302700938865750,\t-0.996298404077089250,\t-0.996294104724566810,\t-0.996289802881309080,\t-0.996285498547326840,\t-0.996281191722630850,\t-0.996276882407231890,\t-0.996272570601140720,\t\n-0.996268256304368220,\t-0.996263939516924930,\t-0.996259620238821860,\t-0.996255298470069660,\t-0.996250974210679320,\t-0.996246647460661490,\t-0.996242318220027180,\t-0.996237986488786920,\t\n-0.996233652266951710,\t-0.996229315554532420,\t-0.996224976351539840,\t-0.996220634657984830,\t-0.996216290473878160,\t-0.996211943799230730,\t-0.996207594634053620,\t-0.996203242978357380,\t\n-0.996198888832153130,\t-0.996194532195451510,\t-0.996190173068263630,\t-0.996185811450600370,\t-0.996181447342472600,\t-0.996177080743891110,\t-0.996172711654866980,\t-0.996168340075411110,\t\n-0.996163966005534360,\t-0.996159589445247630,\t-0.996155210394562010,\t-0.996150828853488270,\t-0.996146444822037510,\t-0.996142058300220620,\t-0.996137669288048700,\t-0.996133277785532510,\t\n-0.996128883792683160,\t-0.996124487309511530,\t-0.996120088336028720,\t-0.996115686872245720,\t-0.996111282918173410,\t-0.996106876473823010,\t-0.996102467539205390,\t-0.996098056114331550,\t\n-0.996093642199212700,\t-0.996089225793859610,\t-0.996084806898283490,\t-0.996080385512495340,\t-0.996075961636506250,\t-0.996071535270327210,\t-0.996067106413969450,\t-0.996062675067443840,\t\n-0.996058241230761480,\t-0.996053804903933580,\t-0.996049366086971260,\t-0.996044924779885380,\t-0.996040480982687270,\t-0.996036034695388040,\t-0.996031585917998560,\t-0.996027134650530170,\t\n-0.996022680892994060,\t-0.996018224645401130,\t-0.996013765907762580,\t-0.996009304680089640,\t-0.996004840962393500,\t-0.996000374754685280,\t-0.995995906056976080,\t-0.995991434869277100,\t\n-0.995986961191599570,\t-0.995982485023954590,\t-0.995978006366353470,\t-0.995973525218807330,\t-0.995969041581327370,\t-0.995964555453924700,\t-0.995960066836610760,\t-0.995955575729396640,\t\n-0.995951082132293550,\t-0.995946586045312720,\t-0.995942087468465460,\t-0.995937586401763000,\t-0.995933082845216640,\t-0.995928576798837510,\t-0.995924068262636910,\t-0.995919557236626060,\t\n-0.995915043720816410,\t-0.995910527715219150,\t-0.995906009219845620,\t-0.995901488234707030,\t-0.995896964759814710,\t-0.995892438795179970,\t-0.995887910340814140,\t-0.995883379396728550,\t\n-0.995878845962934520,\t-0.995874310039443380,\t-0.995869771626266440,\t-0.995865230723415040,\t-0.995860687330900610,\t-0.995856141448734470,\t-0.995851593076927940,\t-0.995847042215492360,\t\n-0.995842488864439270,\t-0.995837933023779990,\t-0.995833374693525840,\t-0.995828813873688270,\t-0.995824250564278700,\t-0.995819684765308470,\t-0.995815116476789000,\t-0.995810545698731620,\t\n-0.995805972431148100,\t-0.995801396674049540,\t-0.995796818427447490,\t-0.995792237691353390,\t-0.995787654465778770,\t-0.995783068750734860,\t-0.995778480546233410,\t-0.995773889852285770,\t\n-0.995769296668903350,\t-0.995764700996097710,\t-0.995760102833880280,\t-0.995755502182262610,\t-0.995750899041256240,\t-0.995746293410872620,\t-0.995741685291123170,\t-0.995737074682019550,\t\n-0.995732461583573200,\t-0.995727845995795780,\t-0.995723227918698830,\t-0.995718607352293670,\t-0.995713984296591970,\t-0.995709358751605380,\t-0.995704730717345330,\t-0.995700100193823490,\t\n-0.995695467181051510,\t-0.995690831679040710,\t-0.995686193687802870,\t-0.995681553207349630,\t-0.995676910237692450,\t-0.995672264778842960,\t-0.995667616830812730,\t-0.995662966393613620,\t\n-0.995658313467257080,\t-0.995653658051754650,\t-0.995649000147118210,\t-0.995644339753359200,\t-0.995639676870489270,\t-0.995635011498520180,\t-0.995630343637463610,\t-0.995625673287331200,\t\n-0.995621000448134620,\t-0.995616325119885510,\t-0.995611647302595550,\t-0.995606966996276490,\t-0.995602284200939990,\t-0.995597598916597830,\t-0.995592911143261650,\t-0.995588220880943230,\t\n-0.995583528129654230,\t-0.995578832889406410,\t-0.995574135160211430,\t-0.995569434942081170,\t-0.995564732235027280,\t-0.995560027039061660,\t-0.995555319354195940,\t-0.995550609180441910,\t\n-0.995545896517811450,\t-0.995541181366316090,\t-0.995536463725967940,\t-0.995531743596778540,\t-0.995527020978759670,\t-0.995522295871923310,\t-0.995517568276281350,\t-0.995512838191845330,\t\n-0.995508105618627350,\t-0.995503370556638960,\t-0.995498633005892140,\t-0.995493892966398790,\t-0.995489150438170770,\t-0.995484405421219850,\t-0.995479657915557930,\t-0.995474907921196750,\t\n-0.995470155438148430,\t-0.995465400466424730,\t-0.995460643006037430,\t-0.995455883056998610,\t-0.995451120619319950,\t-0.995446355693013540,\t-0.995441588278091260,\t-0.995436818374565100,\t\n-0.995432045982446830,\t-0.995427271101748330,\t-0.995422493732481820,\t-0.995417713874658940,\t-0.995412931528291910,\t-0.995408146693392500,\t-0.995403359369972710,\t-0.995398569558044510,\t\n-0.995393777257619910,\t-0.995388982468710880,\t-0.995384185191329430,\t-0.995379385425487430,\t-0.995374583171196980,\t-0.995369778428470080,\t-0.995364971197318820,\t-0.995360161477754970,\t\n-0.995355349269790860,\t-0.995350534573438250,\t-0.995345717388709360,\t-0.995340897715616290,\t-0.995336075554170810,\t-0.995331250904385230,\t-0.995326423766271560,\t-0.995321594139841780,\t\n-0.995316762025107990,\t-0.995311927422082410,\t-0.995307090330776800,\t-0.995302250751203600,\t-0.995297408683374800,\t-0.995292564127302380,\t-0.995287717082998680,\t-0.995282867550475570,\t\n-0.995278015529745260,\t-0.995273161020819970,\t-0.995268304023711800,\t-0.995263444538432960,\t-0.995258582564995440,\t-0.995253718103411460,\t-0.995248851153693100,\t-0.995243981715852710,\t\n-0.995239109789902380,\t-0.995234235375854090,\t-0.995229358473720400,\t-0.995224479083513300,\t-0.995219597205245000,\t-0.995214712838927600,\t-0.995209825984573530,\t-0.995204936642194780,\t\n-0.995200044811803800,\t-0.995195150493412670,\t-0.995190253687033730,\t-0.995185354392679080,\t-0.995180452610361140,\t-0.995175548340091920,\t-0.995170641581883950,\t-0.995165732335749340,\t\n-0.995160820601700410,\t-0.995155906379749270,\t-0.995150989669908560,\t-0.995146070472190280,\t-0.995141148786606980,\t-0.995136224613170640,\t-0.995131297951893700,\t-0.995126368802788600,\t\n-0.995121437165867650,\t-0.995116503041143070,\t-0.995111566428627190,\t-0.995106627328332440,\t-0.995101685740271020,\t-0.995096741664455500,\t-0.995091795100898070,\t-0.995086846049611170,\t\n-0.995081894510607130,\t-0.995076940483898390,\t-0.995071983969497250,\t-0.995067024967416280,\t-0.995062063477667680,\t-0.995057099500263890,\t-0.995052133035217220,\t-0.995047164082540350,\t\n-0.995042192642245580,\t-0.995037218714345360,\t-0.995032242298852120,\t-0.995027263395778180,\t-0.995022282005136200,\t-0.995017298126938400,\t-0.995012311761197420,\t-0.995007322907925480,\t\n-0.995002331567135470,\t-0.994997337738839470,\t-0.994992341423050260,\t-0.994987342619780170,\t-0.994982341329041730,\t-0.994977337550847270,\t-0.994972331285209570,\t-0.994967322532141150,\t\n-0.994962311291654360,\t-0.994957297563761720,\t-0.994952281348475910,\t-0.994947262645809350,\t-0.994942241455774700,\t-0.994937217778384400,\t-0.994932191613650980,\t-0.994927162961587230,\t\n-0.994922131822205460,\t-0.994917098195518430,\t-0.994912062081538710,\t-0.994907023480278710,\t-0.994901982391751090,\t-0.994896938815968750,\t-0.994891892752943870,\t-0.994886844202689360,\t\n-0.994881793165217740,\t-0.994876739640541570,\t-0.994871683628673620,\t-0.994866625129626430,\t-0.994861564143412650,\t-0.994856500670045050,\t-0.994851434709536080,\t-0.994846366261898600,\t\n-0.994841295327145160,\t-0.994836221905288530,\t-0.994831145996341370,\t-0.994826067600316110,\t-0.994820986717225960,\t-0.994815903347083250,\t-0.994810817489900740,\t-0.994805729145691320,\t\n-0.994800638314467410,\t-0.994795544996242010,\t-0.994790449191027770,\t-0.994785350898837350,\t-0.994780250119683630,\t-0.994775146853579150,\t-0.994770041100536790,\t-0.994764932860569440,\t\n-0.994759822133689740,\t-0.994754708919910470,\t-0.994749593219244500,\t-0.994744475031704380,\t-0.994739354357303210,\t-0.994734231196053640,\t-0.994729105547968450,\t-0.994723977413060510,\t\n-0.994718846791342590,\t-0.994713713682827680,\t-0.994708578087528440,\t-0.994703440005457630,\t-0.994698299436628240,\t-0.994693156381053270,\t-0.994688010838745250,\t-0.994682862809717290,\t\n-0.994677712293982160,\t-0.994672559291552740,\t-0.994667403802441790,\t-0.994662245826662520,\t-0.994657085364227590,\t-0.994651922415149990,\t-0.994646756979442490,\t-0.994641589057118190,\t\n-0.994636418648189860,\t-0.994631245752670480,\t-0.994626070370572930,\t-0.994620892501910210,\t-0.994615712146695310,\t-0.994610529304941200,\t-0.994605343976660670,\t-0.994600156161866920,\t\n-0.994594965860572610,\t-0.994589773072790840,\t-0.994584577798534820,\t-0.994579380037817320,\t-0.994574179790651320,\t-0.994568977057049940,\t-0.994563771837026040,\t-0.994558564130592740,\t\n-0.994553353937763010,\t-0.994548141258549960,\t-0.994542926092966460,\t-0.994537708441025630,\t-0.994532488302740660,\t-0.994527265678124330,\t-0.994522040567189960,\t-0.994516812969950430,\t\n-0.994511582886418830,\t-0.994506350316608280,\t-0.994501115260531980,\t-0.994495877718202800,\t-0.994490637689633970,\t-0.994485395174838470,\t-0.994480150173829510,\t-0.994474902686620200,\t\n-0.994469652713223630,\t-0.994464400253652900,\t-0.994459145307921120,\t-0.994453887876041610,\t-0.994448627958027350,\t-0.994443365553891460,\t-0.994438100663647240,\t-0.994432833287307690,\t\n-0.994427563424886030,\t-0.994422291076395460,\t-0.994417016241849310,\t-0.994411738921260450,\t-0.994406459114642320,\t-0.994401176822008130,\t-0.994395892043370870,\t-0.994390604778743970,\t\n-0.994385315028140540,\t-0.994380022791573670,\t-0.994374728069056910,\t-0.994369430860603250,\t-0.994364131166226020,\t-0.994358828985938530,\t-0.994353524319753990,\t-0.994348217167685510,\t\n-0.994342907529746520,\t-0.994337595405950350,\t-0.994332280796310090,\t-0.994326963700839170,\t-0.994321644119550930,\t-0.994316322052458460,\t-0.994310997499575300,\t-0.994305670460914560,\t\n-0.994300340936489560,\t-0.994295008926313840,\t-0.994289674430400510,\t-0.994284337448763100,\t-0.994278997981414840,\t-0.994273656028369040,\t-0.994268311589639020,\t-0.994262964665238340,\t\n-0.994257615255180190,\t-0.994252263359478030,\t-0.994246908978145160,\t-0.994241552111195140,\t-0.994236192758641170,\t-0.994230830920496690,\t-0.994225466596775130,\t-0.994220099787490040,\t\n-0.994214730492654410,\t-0.994209358712282220,\t-0.994203984446386580,\t-0.994198607694980920,\t-0.994193228458078780,\t-0.994187846735693490,\t-0.994182462527838600,\t-0.994177075834527630,\t\n-0.994171686655773930,\t-0.994166294991591150,\t-0.994160900841992490,\t-0.994155504206991610,\t-0.994150105086601950,\t-0.994144703480837060,\t-0.994139299389710460,\t-0.994133892813235390,\t\n-0.994128483751425820,\t-0.994123072204294970,\t-0.994117658171856380,\t-0.994112241654123710,\t-0.994106822651110500,\t-0.994101401162830080,\t-0.994095977189296210,\t-0.994090550730522440,\t\n-0.994085121786522310,\t-0.994079690357309360,\t-0.994074256442897150,\t-0.994068820043299330,\t-0.994063381158529440,\t-0.994057939788601130,\t-0.994052495933527850,\t-0.994047049593323460,\t\n-0.994041600768001410,\t-0.994036149457575350,\t-0.994030695662058930,\t-0.994025239381465810,\t-0.994019780615809530,\t-0.994014319365103760,\t-0.994008855629362250,\t-0.994003389408598670,\t\n-0.993997920702826550,\t-0.993992449512059670,\t-0.993986975836311680,\t-0.993981499675596130,\t-0.993976021029926990,\t-0.993970539899317610,\t-0.993965056283781960,\t-0.993959570183333700,\t\n-0.993954081597986480,\t-0.993948590527754080,\t-0.993943096972650260,\t-0.993937600932688570,\t-0.993932102407882990,\t-0.993926601398247070,\t-0.993921097903794680,\t-0.993915591924539600,\t\n-0.993910083460495470,\t-0.993904572511676190,\t-0.993899059078095500,\t-0.993893543159767080,\t-0.993888024756704900,\t-0.993882503868922520,\t-0.993876980496433910,\t-0.993871454639252970,\t\n-0.993865926297393340,\t-0.993860395470868910,\t-0.993854862159693320,\t-0.993849326363880680,\t-0.993843788083444760,\t-0.993838247318399430,\t-0.993832704068758450,\t-0.993827158334535610,\t\n-0.993821610115744990,\t-0.993816059412400370,\t-0.993810506224515500,\t-0.993804950552104380,\t-0.993799392395180780,\t-0.993793831753758910,\t-0.993788268627852300,\t-0.993782703017475180,\t\n-0.993777134922641190,\t-0.993771564343364440,\t-0.993765991279658590,\t-0.993760415731537950,\t-0.993754837699016180,\t-0.993749257182107380,\t-0.993743674180825430,\t-0.993738088695184320,\t\n-0.993732500725197920,\t-0.993726910270880340,\t-0.993721317332245450,\t-0.993715721909307130,\t-0.993710124002079700,\t-0.993704523610576820,\t-0.993698920734812810,\t-0.993693315374801320,\t\n-0.993687707530556690,\t-0.993682097202092550,\t-0.993676484389423350,\t-0.993670869092562970,\t-0.993665251311525390,\t-0.993659631046324710,\t-0.993654008296974920,\t-0.993648383063490130,\t\n-0.993642755345884310,\t-0.993637125144171680,\t-0.993631492458366130,\t-0.993625857288481850,\t-0.993620219634533060,\t-0.993614579496533650,\t-0.993608936874497810,\t-0.993603291768439640,\t\n-0.993597644178373150,\t-0.993591994104312650,\t-0.993586341546272120,\t-0.993580686504265790,\t-0.993575028978307630,\t-0.993569368968411970,\t-0.993563706474592910,\t-0.993558041496864660,\t\n-0.993552374035241210,\t-0.993546704089736780,\t-0.993541031660365560,\t-0.993535356747141880,\t-0.993529679350079740,\t-0.993523999469193450,\t-0.993518317104497120,\t-0.993512632256004950,\t\n-0.993506944923731260,\t-0.993501255107690270,\t-0.993495562807896080,\t-0.993489868024363010,\t-0.993484170757105270,\t-0.993478471006137180,\t-0.993472768771472730,\t-0.993467064053126460,\t\n-0.993461356851112590,\t-0.993455647165445210,\t-0.993449934996138760,\t-0.993444220343207450,\t-0.993438503206665600,\t-0.993432783586527530,\t-0.993427061482807350,\t-0.993421336895519700,\t\n-0.993415609824678690,\t-0.993409880270298640,\t-0.993404148232393870,\t-0.993398413710978700,\t-0.993392676706067570,\t-0.993386937217674680,\t-0.993381195245814470,\t-0.993375450790501270,\t\n-0.993369703851749390,\t-0.993363954429573370,\t-0.993358202523987430,\t-0.993352448135005890,\t-0.993346691262643300,\t-0.993340931906914080,\t-0.993335170067832340,\t-0.993329405745412730,\t\n-0.993323638939669680,\t-0.993317869650617520,\t-0.993312097878270570,\t-0.993306323622643480,\t-0.993300546883750690,\t-0.993294767661606400,\t-0.993288985956225170,\t-0.993283201767621420,\t\n-0.993277415095809800,\t-0.993271625940804540,\t-0.993265834302620390,\t-0.993260040181271450,\t-0.993254243576772500,\t-0.993248444489137850,\t-0.993242642918382270,\t-0.993236838864519970,\t\n-0.993231032327565600,\t-0.993225223307533710,\t-0.993219411804438620,\t-0.993213597818295100,\t-0.993207781349117580,\t-0.993201962396920600,\t-0.993196140961718600,\t-0.993190317043526450,\t\n-0.993184490642358360,\t-0.993178661758229110,\t-0.993172830391153230,\t-0.993166996541145260,\t-0.993161160208219650,\t-0.993155321392391270,\t-0.993149480093674650,\t-0.993143636312084240,\t\n-0.993137790047634810,\t-0.993131941300340880,\t-0.993126090070217020,\t-0.993120236357278090,\t-0.993114380161538410,\t-0.993108521483012870,\t-0.993102660321715900,\t-0.993096796677662370,\t\n-0.993090930550866950,\t-0.993085061941344050,\t-0.993079190849108560,\t-0.993073317274175030,\t-0.993067441216558320,\t-0.993061562676272880,\t-0.993055681653333690,\t-0.993049798147755180,\t\n-0.993043912159552230,\t-0.993038023688739500,\t-0.993032132735331640,\t-0.993026239299343530,\t-0.993020343380789820,\t-0.993014444979685160,\t-0.993008544096044440,\t-0.993002640729882420,\t\n-0.992996734881213760,\t-0.992990826550053220,\t-0.992984915736415670,\t-0.992979002440315780,\t-0.992973086661768420,\t-0.992967168400788360,\t-0.992961247657390360,\t-0.992955324431589180,\t\n-0.992949398723399820,\t-0.992943470532836820,\t-0.992937539859915290,\t-0.992931606704649860,\t-0.992925671067055320,\t-0.992919732947146640,\t-0.992913792344938710,\t-0.992907849260446280,\t\n-0.992901903693684140,\t-0.992895955644667370,\t-0.992890005113410520,\t-0.992884052099928800,\t-0.992878096604236870,\t-0.992872138626349820,\t-0.992866178166282420,\t-0.992860215224049440,\t\n-0.992854249799666080,\t-0.992848281893147000,\t-0.992842311504507300,\t-0.992836338633761640,\t-0.992830363280925220,\t-0.992824385446012920,\t-0.992818405129039740,\t-0.992812422330020430,\t\n-0.992806437048970090,\t-0.992800449285903610,\t-0.992794459040836070,\t-0.992788466313782370,\t-0.992782471104757480,\t-0.992776473413776510,\t-0.992770473240854320,\t-0.992764470586005920,\t\n-0.992758465449246400,\t-0.992752457830590630,\t-0.992746447730053720,\t-0.992740435147650650,\t-0.992734420083396520,\t-0.992728402537306430,\t-0.992722382509395260,\t-0.992716359999678220,\t\n-0.992710335008170070,\t-0.992704307534886250,\t-0.992698277579841750,\t-0.992692245143051430,\t-0.992686210224530520,\t-0.992680172824294100,\t-0.992674132942357180,\t-0.992668090578735060,\t\n-0.992662045733442630,\t-0.992655998406495100,\t-0.992649948597907450,\t-0.992643896307695120,\t-0.992637841535872980,\t-0.992631784282456240,\t-0.992625724547460010,\t-0.992619662330899490,\t\n-0.992613597632789670,\t-0.992607530453146090,\t-0.992601460791983640,\t-0.992595388649317400,\t-0.992589314025162820,\t-0.992583236919534980,\t-0.992577157332449000,\t-0.992571075263920080,\t\n-0.992564990713963540,\t-0.992558903682594360,\t-0.992552814169828100,\t-0.992546722175679740,\t-0.992540627700164600,\t-0.992534530743297890,\t-0.992528431305094830,\t-0.992522329385570610,\t\n-0.992516224984740680,\t-0.992510118102620240,\t-0.992504008739224400,\t-0.992497896894568580,\t-0.992491782568668100,\t-0.992485665761538070,\t-0.992479546473193920,\t-0.992473424703650850,\t\n-0.992467300452924190,\t-0.992461173721029270,\t-0.992455044507981500,\t-0.992448912813796100,\t-0.992442778638488400,\t-0.992436641982073820,\t-0.992430502844567460,\t-0.992424361225984990,\t\n-0.992418217126341600,\t-0.992412070545652720,\t-0.992405921483933580,\t-0.992399769941199720,\t-0.992393615917466330,\t-0.992387459412748970,\t-0.992381300427062960,\t-0.992375138960423620,\t\n-0.992368975012846490,\t-0.992362808584346890,\t-0.992356639674940370,\t-0.992350468284642130,\t-0.992344294413467830,\t-0.992338118061432570,\t-0.992331939228552230,\t-0.992325757914842010,\t\n-0.992319574120317460,\t-0.992313387844993900,\t-0.992307199088886870,\t-0.992301007852011810,\t-0.992294814134384250,\t-0.992288617936019750,\t-0.992282419256933610,\t-0.992276218097141280,\t\n-0.992270014456658630,\t-0.992263808335500870,\t-0.992257599733683660,\t-0.992251388651222310,\t-0.992245175088132590,\t-0.992238959044429820,\t-0.992232740520129770,\t-0.992226519515247870,\t\n-0.992220296029799660,\t-0.992214070063800690,\t-0.992207841617266610,\t-0.992201610690212840,\t-0.992195377282655060,\t-0.992189141394608900,\t-0.992182903026089690,\t-0.992176662177113420,\t\n-0.992170418847695410,\t-0.992164173037851430,\t-0.992157924747596900,\t-0.992151673976947700,\t-0.992145420725919160,\t-0.992139164994527150,\t-0.992132906782787210,\t-0.992126646090715100,\t\n-0.992120382918326270,\t-0.992114117265636590,\t-0.992107849132661480,\t-0.992101578519416830,\t-0.992095305425918280,\t-0.992089029852181280,\t-0.992082751798221810,\t-0.992076471264055510,\t\n-0.992070188249697950,\t-0.992063902755164980,\t-0.992057614780472270,\t-0.992051324325635480,\t-0.992045031390670350,\t-0.992038735975592670,\t-0.992032438080418190,\t-0.992026137705162680,\t\n-0.992019834849841690,\t-0.992013529514471190,\t-0.992007221699066850,\t-0.992000911403644440,\t-0.991994598628219810,\t-0.991988283372808530,\t-0.991981965637426690,\t-0.991975645422089820,\t\n-0.991969322726813930,\t-0.991962997551614770,\t-0.991956669896507990,\t-0.991950339761509590,\t-0.991944007146635330,\t-0.991937672051901090,\t-0.991931334477322730,\t-0.991924994422915930,\t\n-0.991918651888696770,\t-0.991912306874680790,\t-0.991905959380884220,\t-0.991899609407322690,\t-0.991893256954011980,\t-0.991886902020968300,\t-0.991880544608207400,\t-0.991874184715745070,\t\n-0.991867822343597270,\t-0.991861457491779900,\t-0.991855090160308820,\t-0.991848720349200130,\t-0.991842348058469600,\t-0.991835973288133330,\t-0.991829596038206970,\t-0.991823216308706730,\t\n-0.991816834099648380,\t-0.991810449411047900,\t-0.991804062242921390,\t-0.991797672595284620,\t-0.991791280468153680,\t-0.991784885861544670,\t-0.991778488775473370,\t-0.991772089209955850,\t\n-0.991765687165008130,\t-0.991759282640646060,\t-0.991752875636885860,\t-0.991746466153743510,\t-0.991740054191235010,\t-0.991733639749376340,\t-0.991727222828183600,\t-0.991720803427672880,\t\n-0.991714381547860070,\t-0.991707957188761260,\t-0.991701530350392550,\t-0.991695101032770030,\t-0.991688669235909810,\t-0.991682234959827880,\t-0.991675798204540440,\t-0.991669358970063360,\t\n-0.991662917256412870,\t-0.991656473063605270,\t-0.991650026391656340,\t-0.991643577240582500,\t-0.991637125610399630,\t-0.991630671501123940,\t-0.991624214912771530,\t-0.991617755845358610,\t\n-0.991611294298901380,\t-0.991604830273415840,\t-0.991598363768918190,\t-0.991591894785424640,\t-0.991585423322951410,\t-0.991578949381514580,\t-0.991572472961130380,\t-0.991565994061815000,\t\n-0.991559512683584670,\t-0.991553028826455460,\t-0.991546542490443830,\t-0.991540053675565750,\t-0.991533562381837650,\t-0.991527068609275530,\t-0.991520572357895810,\t-0.991514073627714600,\t\n-0.991507572418748210,\t-0.991501068731012740,\t-0.991494562564524840,\t-0.991488053919300390,\t-0.991481542795355940,\t-0.991475029192707580,\t-0.991468513111371630,\t-0.991461994551364300,\t\n-0.991455473512702020,\t-0.991448949995401230,\t-0.991442423999477910,\t-0.991435895524948600,\t-0.991429364571829510,\t-0.991422831140137070,\t-0.991416295229887500,\t-0.991409756841097220,\t\n-0.991403215973782450,\t-0.991396672627959720,\t-0.991390126803645240,\t-0.991383578500855570,\t-0.991377027719606900,\t-0.991370474459915660,\t-0.991363918721798190,\t-0.991357360505270900,\t\n-0.991350799810350350,\t-0.991344236637052730,\t-0.991337670985394490,\t-0.991331102855392170,\t-0.991324532247061960,\t-0.991317959160420540,\t-0.991311383595484100,\t-0.991304805552269190,\t\n-0.991298225030792350,\t-0.991291642031070010,\t-0.991285056553118490,\t-0.991278468596954340,\t-0.991271878162593990,\t-0.991265285250053860,\t-0.991258689859350620,\t-0.991252091990500680,\t\n-0.991245491643520490,\t-0.991238888818426590,\t-0.991232283515235510,\t-0.991225675733963700,\t-0.991219065474627570,\t-0.991212452737243900,\t-0.991205837521829110,\t-0.991199219828399540,\t\n-0.991192599656972150,\t-0.991185977007563170,\t-0.991179351880189240,\t-0.991172724274867020,\t-0.991166094191612720,\t-0.991159461630443440,\t-0.991152826591375490,\t-0.991146189074425420,\t\n-0.991139549079609880,\t-0.991132906606945530,\t-0.991126261656448790,\t-0.991119614228136550,\t-0.991112964322025220,\t-0.991106311938131480,\t-0.991099657076471740,\t-0.991092999737063110,\t\n-0.991086339919921900,\t-0.991079677625064880,\t-0.991073012852508710,\t-0.991066345602269920,\t-0.991059675874365160,\t-0.991053003668811440,\t-0.991046328985625060,\t-0.991039651824823010,\t\n-0.991032972186421720,\t-0.991026290070437970,\t-0.991019605476888610,\t-0.991012918405790200,\t-0.991006228857159390,\t-0.990999536831013050,\t-0.990992842327367840,\t-0.990986145346240630,\t\n-0.990979445887647970,\t-0.990972743951606840,\t-0.990966039538133670,\t-0.990959332647245450,\t-0.990952623278958940,\t-0.990945911433290800,\t-0.990939197110258020,\t-0.990932480309877130,\t\n-0.990925761032165120,\t-0.990919039277138650,\t-0.990912315044814700,\t-0.990905588335209810,\t-0.990898859148340860,\t-0.990892127484224950,\t-0.990885393342878730,\t-0.990878656724318960,\t\n-0.990871917628562530,\t-0.990865176055626410,\t-0.990858432005527150,\t-0.990851685478281950,\t-0.990844936473907590,\t-0.990838184992420820,\t-0.990831431033838640,\t-0.990824674598177800,\t\n-0.990817915685455300,\t-0.990811154295688000,\t-0.990804390428892900,\t-0.990797624085086760,\t-0.990790855264286450,\t-0.990784083966509190,\t-0.990777310191771620,\t-0.990770533940090850,\t\n-0.990763755211483630,\t-0.990756974005966960,\t-0.990750190323558040,\t-0.990743404164273640,\t-0.990736615528130640,\t-0.990729824415146120,\t-0.990723030825337080,\t-0.990716234758720500,\t\n-0.990709436215313270,\t-0.990702635195132460,\t-0.990695831698195080,\t-0.990689025724518000,\t-0.990682217274118430,\t-0.990675406347013450,\t-0.990668592943219850,\t-0.990661777062754710,\t\n-0.990654958705635250,\t-0.990648137871878220,\t-0.990641314561500950,\t-0.990634488774520430,\t-0.990627660510953630,\t-0.990620829770817780,\t-0.990613996554129740,\t-0.990607160860906830,\t\n-0.990600322691165940,\t-0.990593482044924260,\t-0.990586638922198670,\t-0.990579793323006720,\t-0.990572945247365280,\t-0.990566094695291440,\t-0.990559241666802310,\t-0.990552386161915210,\t\n-0.990545528180646890,\t-0.990538667723015020,\t-0.990531804789036350,\t-0.990524939378728210,\t-0.990518071492107690,\t-0.990511201129192110,\t-0.990504328289998460,\t-0.990497452974543950,\t\n-0.990490575182845780,\t-0.990483694914921160,\t-0.990476812170787310,\t-0.990469926950461540,\t-0.990463039253960840,\t-0.990456149081302640,\t-0.990449256432504030,\t-0.990442361307582120,\t\n-0.990435463706554550,\t-0.990428563629438210,\t-0.990421661076250510,\t-0.990414756047008570,\t-0.990407848541729810,\t-0.990400938560431430,\t-0.990394026103130760,\t-0.990387111169845010,\t\n-0.990380193760591390,\t-0.990373273875387210,\t-0.990366351514250010,\t-0.990359426677196900,\t-0.990352499364245190,\t-0.990345569575412310,\t-0.990338637310715250,\t-0.990331702570171890,\t\n-0.990324765353799100,\t-0.990317825661614530,\t-0.990310883493635390,\t-0.990303938849879000,\t-0.990296991730362790,\t-0.990290042135104080,\t-0.990283090064120190,\t-0.990276135517428660,\t\n-0.990269178495046700,\t-0.990262218996991850,\t-0.990255257023281430,\t-0.990248292573932990,\t-0.990241325648963720,\t-0.990234356248391180,\t-0.990227384372232570,\t-0.990220410020505650,\t\n-0.990213433193227740,\t-0.990206453890416280,\t-0.990199472112088590,\t-0.990192487858262300,\t-0.990185501128954650,\t-0.990178511924183380,\t-0.990171520243965820,\t-0.990164526088319290,\t\n-0.990157529457261650,\t-0.990150530350810130,\t-0.990143528768982260,\t-0.990136524711795580,\t-0.990129518179267640,\t-0.990122509171415750,\t-0.990115497688257680,\t-0.990108483729810860,\t\n-0.990101467296092940,\t-0.990094448387121240,\t-0.990087427002913410,\t-0.990080403143487110,\t-0.990073376808859760,\t-0.990066347999048910,\t-0.990059316714072100,\t-0.990052282953947200,\t\n-0.990045246718691540,\t-0.990038208008322760,\t-0.990031166822858410,\t-0.990024123162316250,\t-0.990017077026713600,\t-0.990010028416068330,\t-0.990002977330398100,\t-0.989995923769720340,\t\n-0.989988867734052810,\t-0.989981809223413060,\t-0.989974748237818840,\t-0.989967684777287690,\t-0.989960618841837390,\t-0.989953550431485580,\t-0.989946479546249700,\t-0.989939406186147730,\t\n-0.989932330351197320,\t-0.989925252041416020,\t-0.989918171256821690,\t-0.989911087997431660,\t-0.989904002263264140,\t-0.989896914054336550,\t-0.989889823370666780,\t-0.989882730212272350,\t\n-0.989875634579171160,\t-0.989868536471380840,\t-0.989861435888919170,\t-0.989854332831803910,\t-0.989847227300052810,\t-0.989840119293683540,\t-0.989833008812714190,\t-0.989825895857162190,\t\n-0.989818780427045520,\t-0.989811662522381840,\t-0.989804542143188910,\t-0.989797419289484730,\t-0.989790293961287040,\t-0.989783166158613610,\t-0.989776035881482220,\t-0.989768903129910840,\t\n-0.989761767903917120,\t-0.989754630203518950,\t-0.989747490028734300,\t-0.989740347379580830,\t-0.989733202256076420,\t-0.989726054658239150,\t-0.989718904586086690,\t-0.989711752039637020,\t\n-0.989704597018908010,\t-0.989697439523917420,\t-0.989690279554683140,\t-0.989683117111223250,\t-0.989675952193555640,\t-0.989668784801698060,\t-0.989661614935668620,\t-0.989654442595485070,\t\n-0.989647267781165410,\t-0.989640090492727610,\t-0.989632910730189550,\t-0.989625728493569110,\t-0.989618543782884500,\t-0.989611356598153470,\t-0.989604166939394130,\t-0.989596974806624340,\t\n-0.989589780199862100,\t-0.989582583119125280,\t-0.989575383564432200,\t-0.989568181535800620,\t-0.989560977033248520,\t-0.989553770056794010,\t-0.989546560606455070,\t-0.989539348682249800,\t\n-0.989532134284196060,\t-0.989524917412312080,\t-0.989517698066615830,\t-0.989510476247125070,\t-0.989503251953858350,\t-0.989496025186833440,\t-0.989488795946068530,\t-0.989481564231581620,\t\n-0.989474330043390580,\t-0.989467093381513950,\t-0.989459854245969490,\t-0.989452612636775530,\t-0.989445368553949930,\t-0.989438121997510910,\t-0.989430872967476670,\t-0.989423621463865200,\t\n-0.989416367486694700,\t-0.989409111035983170,\t-0.989401852111748800,\t-0.989394590714010040,\t-0.989387326842784630,\t-0.989380060498091020,\t-0.989372791679947180,\t-0.989365520388371330,\t\n-0.989358246623381790,\t-0.989350970384996530,\t-0.989343691673233990,\t-0.989336410488112160,\t-0.989329126829649240,\t-0.989321840697863550,\t-0.989314552092773300,\t-0.989307261014396590,\t\n-0.989299967462751730,\t-0.989292671437856930,\t-0.989285372939730510,\t-0.989278071968390680,\t-0.989270768523855650,\t-0.989263462606143620,\t-0.989256154215273020,\t-0.989248843351261950,\t\n-0.989241530014128840,\t-0.989234214203891900,\t-0.989226895920569450,\t-0.989219575164179800,\t-0.989212251934741160,\t-0.989204926232271850,\t-0.989197598056790310,\t-0.989190267408314730,\t\n-0.989182934286863320,\t-0.989175598692454750,\t-0.989168260625107210,\t-0.989160920084839020,\t-0.989153577071668510,\t-0.989146231585613990,\t-0.989138883626693890,\t-0.989131533194926640,\t\n-0.989124180290330450,\t-0.989116824912923960,\t-0.989109467062725400,\t-0.989102106739753070,\t-0.989094743944025520,\t-0.989087378675561180,\t-0.989080010934378360,\t-0.989072640720495390,\t\n-0.989065268033930910,\t-0.989057892874703250,\t-0.989050515242830940,\t-0.989043135138332200,\t-0.989035752561225780,\t-0.989028367511529780,\t-0.989020979989262970,\t-0.989013589994443780,\t\n-0.989006197527090510,\t-0.988998802587221840,\t-0.988991405174856060,\t-0.988984005290011850,\t-0.988976602932707620,\t-0.988969198102961910,\t-0.988961790800793160,\t-0.988954381026219800,\t\n-0.988946968779260690,\t-0.988939554059934060,\t-0.988932136868258540,\t-0.988924717204252790,\t-0.988917295067935020,\t-0.988909870459324210,\t-0.988902443378438690,\t-0.988895013825297100,\t\n-0.988887581799917870,\t-0.988880147302319770,\t-0.988872710332521330,\t-0.988865270890540990,\t-0.988857828976397620,\t-0.988850384590109540,\t-0.988842937731695510,\t-0.988835488401174190,\t\n-0.988828036598564110,\t-0.988820582323884030,\t-0.988813125577152400,\t-0.988805666358388070,\t-0.988798204667609370,\t-0.988790740504835290,\t-0.988783273870084360,\t-0.988775804763375230,\t\n-0.988768333184726680,\t-0.988760859134157230,\t-0.988753382611685660,\t-0.988745903617330610,\t-0.988738422151110740,\t-0.988730938213044810,\t-0.988723451803151580,\t-0.988715962921449700,\t\n-0.988708471567957940,\t-0.988700977742695050,\t-0.988693481445679700,\t-0.988685982676930420,\t-0.988678481436466420,\t-0.988670977724306230,\t-0.988663471540468520,\t-0.988655962884972150,\t\n-0.988648451757835890,\t-0.988640938159078500,\t-0.988633422088718850,\t-0.988625903546775490,\t-0.988618382533267390,\t-0.988610859048213330,\t-0.988603333091632170,\t-0.988595804663542690,\t\n-0.988588273763963740,\t-0.988580740392914100,\t-0.988573204550412420,\t-0.988565666236477900,\t-0.988558125451129200,\t-0.988550582194385190,\t-0.988543036466264620,\t-0.988535488266786610,\t\n-0.988527937595969800,\t-0.988520384453833170,\t-0.988512828840395600,\t-0.988505270755675960,\t-0.988497710199693010,\t-0.988490147172465860,\t-0.988482581674013370,\t-0.988475013704354530,\t\n-0.988467443263507990,\t-0.988459870351492850,\t-0.988452294968328090,\t-0.988444717114032590,\t-0.988437136788625330,\t-0.988429553992125180,\t-0.988421968724551240,\t-0.988414380985922270,\t\n-0.988406790776257370,\t-0.988399198095575530,\t-0.988391602943895720,\t-0.988384005321236710,\t-0.988376405227617830,\t-0.988368802663058040,\t-0.988361197627576130,\t-0.988353590121191280,\t\n-0.988345980143922390,\t-0.988338367695788420,\t-0.988330752776808710,\t-0.988323135387002120,\t-0.988315515526387630,\t-0.988307893194984470,\t-0.988300268392811490,\t-0.988292641119887900,\t\n-0.988285011376232590,\t-0.988277379161864870,\t-0.988269744476803490,\t-0.988262107321068010,\t-0.988254467694677170,\t-0.988246825597650090,\t-0.988239181030006080,\t-0.988231533991764000,\t\n-0.988223884482943070,\t-0.988216232503562500,\t-0.988208578053641370,\t-0.988200921133198680,\t-0.988193261742253860,\t-0.988185599880825770,\t-0.988177935548933740,\t-0.988170268746596860,\t\n-0.988162599473834340,\t-0.988154927730665160,\t-0.988147253517108750,\t-0.988139576833184210,\t-0.988131897678910740,\t-0.988124216054307560,\t-0.988116531959393860,\t-0.988108845394188640,\t\n-0.988101156358711540,\t-0.988093464852981440,\t-0.988085770877017660,\t-0.988078074430839500,\t-0.988070375514466190,\t-0.988062674127916930,\t-0.988054970271211030,\t-0.988047263944367590,\t\n-0.988039555147406050,\t-0.988031843880345480,\t-0.988024130143205450,\t-0.988016413936005030,\t-0.988008695258763670,\t-0.988000974111500560,\t-0.987993250494234810,\t-0.987985524406986170,\t\n-0.987977795849773630,\t-0.987970064822616620,\t-0.987962331325534460,\t-0.987954595358546460,\t-0.987946856921671950,\t-0.987939116014930340,\t-0.987931372638340970,\t-0.987923626791923140,\t\n-0.987915878475696060,\t-0.987908127689679500,\t-0.987900374433892560,\t-0.987892618708354650,\t-0.987884860513085330,\t-0.987877099848103790,\t-0.987869336713429360,\t-0.987861571109081680,\t\n-0.987853803035080080,\t-0.987846032491443980,\t-0.987838259478192810,\t-0.987830483995346010,\t-0.987822706042922990,\t-0.987814925620943310,\t-0.987807142729426160,\t-0.987799357368391080,\t\n-0.987791569537857740,\t-0.987783779237845440,\t-0.987775986468373720,\t-0.987768191229462130,\t-0.987760393521129880,\t-0.987752593343396600,\t-0.987744790696282070,\t-0.987736985579805380,\t\n-0.987729177993986410,\t-0.987721367938844350,\t-0.987713555414398980,\t-0.987705740420669610,\t-0.987697922957676000,\t-0.987690103025437470,\t-0.987682280623973670,\t-0.987674455753304150,\t\n-0.987666628413448660,\t-0.987658798604426510,\t-0.987650966326257370,\t-0.987643131578960780,\t-0.987635294362556260,\t-0.987627454677063700,\t-0.987619612522502410,\t-0.987611767898892160,\t\n-0.987603920806252480,\t-0.987596071244602910,\t-0.987588219213963230,\t-0.987580364714353070,\t-0.987572507745791860,\t-0.987564648308299490,\t-0.987556786401895370,\t-0.987548922026599390,\t\n-0.987541055182431070,\t-0.987533185869410080,\t-0.987525314087556170,\t-0.987517439836888890,\t-0.987509563117428100,\t-0.987501683929193350,\t-0.987493802272204510,\t-0.987485918146481120,\t\n-0.987478031552042950,\t-0.987470142488909630,\t-0.987462250957100940,\t-0.987454356956636750,\t-0.987446460487536590,\t-0.987438561549820130,\t-0.987430660143507440,\t-0.987422756268618080,\t\n-0.987414849925171810,\t-0.987406941113188500,\t-0.987399029832687790,\t-0.987391116083689350,\t-0.987383199866213260,\t-0.987375281180279170,\t-0.987367360025906860,\t-0.987359436403116190,\t\n-0.987351510311926920,\t-0.987343581752358810,\t-0.987335650724431860,\t-0.987327717228165700,\t-0.987319781263580110,\t-0.987311842830695290,\t-0.987303901929530770,\t-0.987295958560106550,\t\n-0.987288012722442380,\t-0.987280064416558250,\t-0.987272113642473690,\t-0.987264160400209150,\t-0.987256204689784140,\t-0.987248246511218560,\t-0.987240285864532500,\t-0.987232322749745590,\t\n-0.987224357166877950,\t-0.987216389115949440,\t-0.987208418596979830,\t-0.987200445609989210,\t-0.987192470154997450,\t-0.987184492232024650,\t-0.987176511841090560,\t-0.987168528982215190,\t\n-0.987160543655418500,\t-0.987152555860720260,\t-0.987144565598140900,\t-0.987136572867700070,\t-0.987128577669417750,\t-0.987120580003314040,\t-0.987112579869408810,\t-0.987104577267722160,\t\n-0.987096572198274180,\t-0.987088564661084630,\t-0.987080554656173730,\t-0.987072542183561330,\t-0.987064527243267650,\t-0.987056509835312680,\t-0.987048489959716500,\t-0.987040467616499000,\t\n-0.987032442805680250,\t-0.987024415527280490,\t-0.987016385781319670,\t-0.987008353567817910,\t-0.987000318886795290,\t-0.986992281738271910,\t-0.986984242122267760,\t-0.986976200038803040,\t\n-0.986968155487897850,\t-0.986960108469572160,\t-0.986952058983846190,\t-0.986944007030740140,\t-0.986935952610274110,\t-0.986927895722468200,\t-0.986919836367342480,\t-0.986911774544917190,\t\n-0.986903710255212400,\t-0.986895643498248430,\t-0.986887574274045280,\t-0.986879502582623250,\t-0.986871428424002550,\t-0.986863351798203170,\t-0.986855272705245420,\t-0.986847191145149520,\t\n-0.986839107117935650,\t-0.986831020623623820,\t-0.986822931662234670,\t-0.986814840233788180,\t-0.986806746338304560,\t-0.986798649975804020,\t-0.986790551146306870,\t-0.986782449849833320,\t\n-0.986774346086403690,\t-0.986766239856038170,\t-0.986758131158757100,\t-0.986750019994580670,\t-0.986741906363529210,\t-0.986733790265623020,\t-0.986725671700882320,\t-0.986717550669327430,\t\n-0.986709427170978540,\t-0.986701301205856200,\t-0.986693172773980610,\t-0.986685041875372090,\t-0.986676908510050970,\t-0.986668772678037650,\t-0.986660634379352140,\t-0.986652493614015300,\t\n-0.986644350382047120,\t-0.986636204683468130,\t-0.986628056518298550,\t-0.986619905886558900,\t-0.986611752788269510,\t-0.986603597223450700,\t-0.986595439192122890,\t-0.986587278694306510,\t\n-0.986579115730021770,\t-0.986570950299289430,\t-0.986562782402129690,\t-0.986554612038562870,\t-0.986546439208609740,\t-0.986538263912290160,\t-0.986530086149625230,\t-0.986521905920635040,\t\n-0.986513723225340030,\t-0.986505538063760730,\t-0.986497350435917570,\t-0.986489160341831100,\t-0.986480967781521720,\t-0.986472772755009890,\t-0.986464575262316120,\t-0.986456375303460750,\t\n-0.986448172878464650,\t-0.986439967987348120,\t-0.986431760630131600,\t-0.986423550806835750,\t-0.986415338517480980,\t-0.986407123762087720,\t-0.986398906540676860,\t-0.986390686853268580,\t\n-0.986382464699883780,\t-0.986374240080542640,\t-0.986366012995266050,\t-0.986357783444074320,\t-0.986349551426988210,\t-0.986341316944028160,\t-0.986333079995214690,\t-0.986324840580568680,\t\n-0.986316598700110570,\t-0.986308354353860990,\t-0.986300107541840500,\t-0.986291858264069620,\t-0.986283606520569120,\t-0.986275352311359650,\t-0.986267095636461870,\t-0.986258836495896300,\t\n-0.986250574889683710,\t-0.986242310817844640,\t-0.986234044280399740,\t-0.986225775277369760,\t-0.986217503808775380,\t-0.986209229874637110,\t-0.986200953474975830,\t-0.986192674609812300,\t\n-0.986184393279166960,\t-0.986176109483060670,\t-0.986167823221514080,\t-0.986159534494547850,\t-0.986151243302182960,\t-0.986142949644439830,\t-0.986134653521339440,\t-0.986126354932902350,\t\n-0.986118053879149410,\t-0.986109750360101290,\t-0.986101444375778850,\t-0.986093135926202740,\t-0.986084825011393830,\t-0.986076511631372780,\t-0.986068195786160450,\t-0.986059877475777720,\t\n-0.986051556700245360,\t-0.986043233459584000,\t-0.986034907753814420,\t-0.986026579582957810,\t-0.986018248947034600,\t-0.986009915846065900,\t-0.986001580280072340,\t-0.985993242249074920,\t\n-0.985984901753094280,\t-0.985976558792151400,\t-0.985968213366267170,\t-0.985959865475462440,\t-0.985951515119757870,\t-0.985943162299174560,\t-0.985934807013733480,\t-0.985926449263455300,\t\n-0.985918089048361090,\t-0.985909726368471520,\t-0.985901361223807670,\t-0.985892993614390420,\t-0.985884623540240760,\t-0.985876251001379430,\t-0.985867875997827550,\t-0.985859498529605970,\t\n-0.985851118596735690,\t-0.985842736199237570,\t-0.985834351337132600,\t-0.985825964010441650,\t-0.985817574219185920,\t-0.985809181963386290,\t-0.985800787243063640,\t-0.985792390058239040,\t\n-0.985783990408933500,\t-0.985775588295167760,\t-0.985767183716963260,\t-0.985758776674340750,\t-0.985750367167321340,\t-0.985741955195926000,\t-0.985733540760175830,\t-0.985725123860091700,\t\n-0.985716704495694820,\t-0.985708282667006270,\t-0.985699858374046720,\t-0.985691431616837700,\t-0.985683002395400190,\t-0.985674570709755060,\t-0.985666136559923630,\t-0.985657699945926780,\t\n-0.985649260867785480,\t-0.985640819325521280,\t-0.985632375319154930,\t-0.985623928848707750,\t-0.985615479914200730,\t-0.985607028515654960,\t-0.985598574653091640,\t-0.985590118326531870,\t\n-0.985581659535996750,\t-0.985573198281507580,\t-0.985564734563085240,\t-0.985556268380751170,\t-0.985547799734526550,\t-0.985539328624432280,\t-0.985530855050489760,\t-0.985522379012720000,\t\n-0.985513900511144400,\t-0.985505419545783970,\t-0.985496936116660120,\t-0.985488450223793830,\t-0.985479961867206540,\t-0.985471471046919230,\t-0.985462977762953220,\t-0.985454482015329810,\t\n-0.985445983804070220,\t-0.985437483129195550,\t-0.985428979990727320,\t-0.985420474388686520,\t-0.985411966323094690,\t-0.985403455793972820,\t-0.985394942801342430,\t-0.985386427345224410,\t\n-0.985377909425640520,\t-0.985369389042611950,\t-0.985360866196159810,\t-0.985352340886305520,\t-0.985343813113070290,\t-0.985335282876475650,\t-0.985326750176542810,\t-0.985318215013293090,\t\n-0.985309677386747570,\t-0.985301137296928140,\t-0.985292594743855780,\t-0.985284049727552010,\t-0.985275502248038060,\t-0.985266952305335340,\t-0.985258399899465060,\t-0.985249845030448990,\t\n-0.985241287698308320,\t-0.985232727903064490,\t-0.985224165644738690,\t-0.985215600923352590,\t-0.985207033738927480,\t-0.985198464091484700,\t-0.985189891981045780,\t-0.985181317407632040,\t\n-0.985172740371265120,\t-0.985164160871966450,\t-0.985155578909757250,\t-0.985146994484659140,\t-0.985138407596693580,\t-0.985129818245881750,\t-0.985121226432245640,\t-0.985112632155806470,\t\n-0.985104035416585640,\t-0.985095436214604710,\t-0.985086834549885220,\t-0.985078230422448690,\t-0.985069623832316550,\t-0.985061014779510360,\t-0.985052403264051630,\t-0.985043789285961700,\t\n-0.985035172845262540,\t-0.985026553941975360,\t-0.985017932576121910,\t-0.985009308747723520,\t-0.985000682456801720,\t-0.984992053703378390,\t-0.984983422487474950,\t-0.984974788809112930,\t\n-0.984966152668313890,\t-0.984957514065099460,\t-0.984948872999491300,\t-0.984940229471510940,\t-0.984931583481180040,\t-0.984922935028520240,\t-0.984914284113552860,\t-0.984905630736299890,\t\n-0.984896974896782850,\t-0.984888316595023520,\t-0.984879655831043200,\t-0.984870992604863660,\t-0.984862326916506880,\t-0.984853658765994180,\t-0.984844988153347420,\t-0.984836315078588150,\t\n-0.984827639541738020,\t-0.984818961542818890,\t-0.984810281081852310,\t-0.984801598158860040,\t-0.984792912773863720,\t-0.984784224926885110,\t-0.984775534617945980,\t-0.984766841847067980,\t\n-0.984758146614272970,\t-0.984749448919582490,\t-0.984740748763018540,\t-0.984732046144602410,\t-0.984723341064356440,\t-0.984714633522302040,\t-0.984705923518461090,\t-0.984697211052855350,\t\n-0.984688496125506460,\t-0.984679778736436530,\t-0.984671058885666970,\t-0.984662336573219890,\t-0.984653611799116700,\t-0.984644884563379730,\t-0.984636154866030510,\t-0.984627422707090920,\t\n-0.984618688086582820,\t-0.984609951004527860,\t-0.984601211460948030,\t-0.984592469455865200,\t-0.984583724989301250,\t-0.984574978061278030,\t-0.984566228671817310,\t-0.984557476820941080,\t\n-0.984548722508671090,\t-0.984539965735029330,\t-0.984531206500037560,\t-0.984522444803717760,\t-0.984513680646091900,\t-0.984504914027181880,\t-0.984496144947009650,\t-0.984487373405597000,\t\n-0.984478599402965890,\t-0.984469822939138100,\t-0.984461044014135920,\t-0.984452262627981130,\t-0.984443478780695820,\t-0.984434692472301640,\t-0.984425903702820790,\t-0.984417112472275260,\t\n-0.984408318780686800,\t-0.984399522628077620,\t-0.984390724014469700,\t-0.984381922939884690,\t-0.984373119404345130,\t-0.984364313407872670,\t-0.984355504950489510,\t-0.984346694032217530,\t\n-0.984337880653078700,\t-0.984329064813095340,\t-0.984320246512289330,\t-0.984311425750682640,\t-0.984302602528297490,\t-0.984293776845155730,\t-0.984284948701279580,\t-0.984276118096691020,\t\n-0.984267285031412140,\t-0.984258449505465150,\t-0.984249611518871800,\t-0.984240771071654640,\t-0.984231928163835420,\t-0.984223082795436580,\t-0.984214234966479860,\t-0.984205384676987590,\t\n-0.984196531926981750,\t-0.984187676716484770,\t-0.984178819045518520,\t-0.984169958914105300,\t-0.984161096322267110,\t-0.984152231270026160,\t-0.984143363757404740,\t-0.984134493784424860,\t\n-0.984125621351108700,\t-0.984116746457478380,\t-0.984107869103556300,\t-0.984098989289364570,\t-0.984090107014925390,\t-0.984081222280260960,\t-0.984072335085393490,\t-0.984063445430344960,\t\n-0.984054553315137910,\t-0.984045658739794660,\t-0.984036761704337180,\t-0.984027862208787680,\t-0.984018960253168710,\t-0.984010055837502230,\t-0.984001148961810680,\t-0.983992239626116150,\t\n-0.983983327830440960,\t-0.983974413574807640,\t-0.983965496859238180,\t-0.983956577683755000,\t-0.983947656048380410,\t-0.983938731953136750,\t-0.983929805398045980,\t-0.983920876383130860,\t\n-0.983911944908413600,\t-0.983903010973916530,\t-0.983894074579661830,\t-0.983885135725672040,\t-0.983876194411969270,\t-0.983867250638576160,\t-0.983858304405514810,\t-0.983849355712807850,\t\n-0.983840404560477170,\t-0.983831450948545740,\t-0.983822494877035660,\t-0.983813536345969350,\t-0.983804575355369140,\t-0.983795611905257440,\t-0.983786645995656790,\t-0.983777677626589520,\t\n-0.983768706798078150,\t-0.983759733510144900,\t-0.983750757762812400,\t-0.983741779556102980,\t-0.983732798890039060,\t-0.983723815764643180,\t-0.983714830179937770,\t-0.983705842135945140,\t\n-0.983696851632688050,\t-0.983687858670188820,\t-0.983678863248469980,\t-0.983669865367553960,\t-0.983660865027463300,\t-0.983651862228220320,\t-0.983642856969847770,\t-0.983633849252368190,\t\n-0.983624839075803890,\t-0.983615826440177530,\t-0.983606811345511530,\t-0.983597793791828660,\t-0.983588773779151220,\t-0.983579751307501750,\t-0.983570726376902900,\t-0.983561698987377330,\t\n-0.983552669138947460,\t-0.983543636831636040,\t-0.983534602065465390,\t-0.983525564840458390,\t-0.983516525156637230,\t-0.983507483014024910,\t-0.983498438412643840,\t-0.983489391352516780,\t\n-0.983480341833666170,\t-0.983471289856114760,\t-0.983462235419885090,\t-0.983453178524999800,\t-0.983444119171481560,\t-0.983435057359352880,\t-0.983425993088636760,\t-0.983416926359355630,\t\n-0.983407857171532230,\t-0.983398785525189110,\t-0.983389711420349140,\t-0.983380634857034640,\t-0.983371555835268700,\t-0.983362474355073960,\t-0.983353390416472960,\t-0.983344304019488470,\t\n-0.983335215164143240,\t-0.983326123850460030,\t-0.983317030078461380,\t-0.983307933848170280,\t-0.983298835159609360,\t-0.983289734012801060,\t-0.983280630407768700,\t-0.983271524344534690,\t\n-0.983262415823121900,\t-0.983253304843553110,\t-0.983244191405850840,\t-0.983235075510038300,\t-0.983225957156138030,\t-0.983216836344172900,\t-0.983207713074165660,\t-0.983198587346139190,\t\n-0.983189459160116240,\t-0.983180328516119580,\t-0.983171195414172080,\t-0.983162059854296720,\t-0.983152921836515930,\t-0.983143781360853010,\t-0.983134638427330730,\t-0.983125493035971740,\t\n-0.983116345186799130,\t-0.983107194879835560,\t-0.983098042115103880,\t-0.983088886892627300,\t-0.983079729212428370,\t-0.983070569074530280,\t-0.983061406478955680,\t-0.983052241425727560,\t\n-0.983043073914868890,\t-0.983033903946402440,\t-0.983024731520351300,\t-0.983015556636738230,\t-0.983006379295586320,\t-0.982997199496918440,\t-0.982988017240757680,\t-0.982978832527126810,\t\n-0.982969645356048920,\t-0.982960455727546640,\t-0.982951263641643540,\t-0.982942069098362130,\t-0.982932872097725620,\t-0.982923672639756880,\t-0.982914470724479020,\t-0.982905266351915000,\t\n-0.982896059522087810,\t-0.982886850235020430,\t-0.982877638490735730,\t-0.982868424289257140,\t-0.982859207630607520,\t-0.982849988514809760,\t-0.982840766941887160,\t-0.982831542911862590,\t\n-0.982822316424759030,\t-0.982813087480599810,\t-0.982803856079407900,\t-0.982794622221206390,\t-0.982785385906018270,\t-0.982776147133866630,\t-0.982766905904774670,\t-0.982757662218765480,\t\n-0.982748416075862160,\t-0.982739167476087690,\t-0.982729916419465170,\t-0.982720662906018120,\t-0.982711406935769300,\t-0.982702148508742050,\t-0.982692887624959320,\t-0.982683624284444330,\t\n-0.982674358487220400,\t-0.982665090233310500,\t-0.982655819522737950,\t-0.982646546355525840,\t-0.982637270731697380,\t-0.982627992651275760,\t-0.982618712114284090,\t-0.982609429120745670,\t\n-0.982600143670683710,\t-0.982590855764121200,\t-0.982581565401081770,\t-0.982572272581588300,\t-0.982562977305664220,\t-0.982553679573332730,\t-0.982544379384617030,\t-0.982535076739540210,\t\n-0.982525771638125820,\t-0.982516464080397060,\t-0.982507154066377120,\t-0.982497841596089330,\t-0.982488526669556880,\t-0.982479209286803100,\t-0.982469889447851300,\t-0.982460567152724780,\t\n-0.982451242401446770,\t-0.982441915194040780,\t-0.982432585530529920,\t-0.982423253410937610,\t-0.982413918835287280,\t-0.982404581803602020,\t-0.982395242315905250,\t-0.982385900372220510,\t\n-0.982376555972571010,\t-0.982367209116980060,\t-0.982357859805471190,\t-0.982348508038067610,\t-0.982339153814792750,\t-0.982329797135670040,\t-0.982320438000722880,\t-0.982311076409974390,\t\n-0.982301712363448320,\t-0.982292345861168090,\t-0.982282976903156910,\t-0.982273605489438320,\t-0.982264231620035730,\t-0.982254855294972360,\t-0.982245476514272080,\t-0.982236095277958080,\t\n-0.982226711586053790,\t-0.982217325438582870,\t-0.982207936835568510,\t-0.982198545777034360,\t-0.982189152263003740,\t-0.982179756293500410,\t-0.982170357868547560,\t-0.982160956988168630,\t\n-0.982151553652387600,\t-0.982142147861227550,\t-0.982132739614712260,\t-0.982123328912865020,\t-0.982113915755709390,\t-0.982104500143269000,\t-0.982095082075567500,\t-0.982085661552628220,\t\n-0.982076238574474790,\t-0.982066813141130760,\t-0.982057385252619760,\t-0.982047954908965240,\t-0.982038522110190830,\t-0.982029086856320180,\t-0.982019649147376610,\t-0.982010208983383980,\t\n-0.982000766364365950,\t-0.981991321290345940,\t-0.981981873761347710,\t-0.981972423777394800,\t-0.981962971338510520,\t-0.981953516444719070,\t-0.981944059096043880,\t-0.981934599292508480,\t\n-0.981925137034136640,\t-0.981915672320951890,\t-0.981906205152978000,\t-0.981896735530238600,\t-0.981887263452757340,\t-0.981877788920557770,\t-0.981868311933663860,\t-0.981858832492099150,\t\n-0.981849350595887400,\t-0.981839866245052260,\t-0.981830379439617480,\t-0.981820890179606610,\t-0.981811398465043620,\t-0.981801904295952150,\t-0.981792407672355980,\t-0.981782908594278750,\t\n-0.981773407061744210,\t-0.981763903074776230,\t-0.981754396633398470,\t-0.981744887737634690,\t-0.981735376387508520,\t-0.981725862583044060,\t-0.981716346324264970,\t-0.981706827611194990,\t\n-0.981697306443858000,\t-0.981687782822277750,\t-0.981678256746477800,\t-0.981668728216482430,\t-0.981659197232315210,\t-0.981649663793999980,\t-0.981640127901560630,\t-0.981630589555021030,\t\n-0.981621048754404810,\t-0.981611505499736080,\t-0.981601959791038480,\t-0.981592411628336100,\t-0.981582861011652490,\t-0.981573307941011830,\t-0.981563752416438010,\t-0.981554194437954660,\t\n-0.981544634005586000,\t-0.981535071119355450,\t-0.981525505779287430,\t-0.981515937985405710,\t-0.981506367737734030,\t-0.981496795036296500,\t-0.981487219881116980,\t-0.981477642272219450,\t\n-0.981468062209627790,\t-0.981458479693365860,\t-0.981448894723457870,\t-0.981439307299927450,\t-0.981429717422798940,\t-0.981420125092096090,\t-0.981410530307842980,\t-0.981400933070063490,\t\n-0.981391333378781710,\t-0.981381731234021390,\t-0.981372126635806860,\t-0.981362519584162100,\t-0.981352910079111070,\t-0.981343298120677670,\t-0.981333683708886070,\t-0.981324066843760280,\t\n-0.981314447525324370,\t-0.981304825753602230,\t-0.981295201528617930,\t-0.981285574850395800,\t-0.981275945718959710,\t-0.981266314134333740,\t-0.981256680096541990,\t-0.981247043605608550,\t\n-0.981237404661557290,\t-0.981227763264412740,\t-0.981218119414198790,\t-0.981208473110939510,\t-0.981198824354659100,\t-0.981189173145381570,\t-0.981179519483131200,\t-0.981169863367931880,\t\n-0.981160204799808030,\t-0.981150543778783410,\t-0.981140880304882670,\t-0.981131214378129670,\t-0.981121545998548730,\t-0.981111875166163830,\t-0.981102201880999280,\t-0.981092526143079070,\t\n-0.981082847952427730,\t-0.981073167309069240,\t-0.981063484213027800,\t-0.981053798664327630,\t-0.981044110662993020,\t-0.981034420209048190,\t-0.981024727302517220,\t-0.981015031943424430,\t\n-0.981005334131794140,\t-0.980995633867650320,\t-0.980985931151017510,\t-0.980976225981919910,\t-0.980966518360381730,\t-0.980956808286427280,\t-0.980947095760080660,\t-0.980937380781366500,\t\n-0.980927663350308790,\t-0.980917943466932060,\t-0.980908221131260310,\t-0.980898496343318160,\t-0.980888769103129610,\t-0.980879039410719300,\t-0.980869307266111320,\t-0.980859572669329990,\t\n-0.980849835620399620,\t-0.980840096119344860,\t-0.980830354166189910,\t-0.980820609760958970,\t-0.980810862903676580,\t-0.980801113594367060,\t-0.980791361833054490,\t-0.980781607619763740,\t\n-0.980771850954518910,\t-0.980762091837344530,\t-0.980752330268264920,\t-0.980742566247304380,\t-0.980732799774487570,\t-0.980723030849838700,\t-0.980713259473382170,\t-0.980703485645142430,\t\n-0.980693709365144110,\t-0.980683930633411530,\t-0.980674149449969110,\t-0.980664365814841290,\t-0.980654579728052590,\t-0.980644791189627330,\t-0.980635000199590160,\t-0.980625206757965500,\t\n-0.980615410864777880,\t-0.980605612520051740,\t-0.980595811723811490,\t-0.980586008476081790,\t-0.980576202776887060,\t-0.980566394626251720,\t-0.980556584024200320,\t-0.980546770970757600,\t\n-0.980536955465947990,\t-0.980527137509796030,\t-0.980517317102326150,\t-0.980507494243562980,\t-0.980497668933530850,\t-0.980487841172254850,\t-0.980478010959759170,\t-0.980468178296068470,\t\n-0.980458343181207390,\t-0.980448505615200360,\t-0.980438665598072130,\t-0.980428823129847140,\t-0.980418978210550240,\t-0.980409130840205760,\t-0.980399281018838330,\t-0.980389428746472950,\t\n-0.980379574023133920,\t-0.980369716848845880,\t-0.980359857223633610,\t-0.980349995147521640,\t-0.980340130620534710,\t-0.980330263642697490,\t-0.980320394214034610,\t-0.980310522334570830,\t\n-0.980300648004330590,\t-0.980290771223338850,\t-0.980280891991620160,\t-0.980271010309199280,\t-0.980261126176100730,\t-0.980251239592349390,\t-0.980241350557970010,\t-0.980231459072987250,\t\n-0.980221565137425870,\t-0.980211668751310490,\t-0.980201769914666010,\t-0.980191868627516950,\t-0.980181964889888400,\t-0.980172058701804900,\t-0.980162150063291330,\t-0.980152238974372310,\t\n-0.980142325435072740,\t-0.980132409445417240,\t-0.980122491005430810,\t-0.980112570115138190,\t-0.980102646774563930,\t-0.980092720983733230,\t-0.980082792742670740,\t-0.980072862051401210,\t\n-0.980062928909949620,\t-0.980052993318340620,\t-0.980043055276598960,\t-0.980033114784749860,\t-0.980023171842818060,\t-0.980013226450828220,\t-0.980003278608805320,\t-0.979993328316774330,\t\n-0.979983375574759900,\t-0.979973420382787120,\t-0.979963462740880750,\t-0.979953502649065560,\t-0.979943540107366730,\t-0.979933575115809140,\t-0.979923607674417550,\t-0.979913637783216940,\t\n-0.979903665442232290,\t-0.979893690651488240,\t-0.979883713411010100,\t-0.979873733720822760,\t-0.979863751580951070,\t-0.979853766991420020,\t-0.979843779952254580,\t-0.979833790463479630,\t\n-0.979823798525120250,\t-0.979813804137201320,\t-0.979803807299747920,\t-0.979793808012784820,\t-0.979783806276337320,\t-0.979773802090430300,\t-0.979763795455088850,\t-0.979753786370337940,\t\n-0.979743774836202340,\t-0.979733760852707470,\t-0.979723744419878200,\t-0.979713725537739500,\t-0.979703704206316580,\t-0.979693680425634430,\t-0.979683654195718010,\t-0.979673625516592540,\t\n-0.979663594388282880,\t-0.979653560810814340,\t-0.979643524784211680,\t-0.979633486308500330,\t-0.979623445383705380,\t-0.979613402009851700,\t-0.979603356186964590,\t-0.979593307915068930,\t\n-0.979583257194190150,\t-0.979573204024353220,\t-0.979563148405583230,\t-0.979553090337905390,\t-0.979543029821344890,\t-0.979532966855926720,\t-0.979522901441676200,\t-0.979512833578618510,\t\n-0.979502763266778650,\t-0.979492690506181710,\t-0.979482615296853210,\t-0.979472537638818140,\t-0.979462457532101700,\t-0.979452374976729210,\t-0.979442289972725750,\t-0.979432202520116420,\t\n-0.979422112618926750,\t-0.979412020269181730,\t-0.979401925470906760,\t-0.979391828224126960,\t-0.979381728528867510,\t-0.979371626385153740,\t-0.979361521793010950,\t-0.979351414752464340,\t\n-0.979341305263539130,\t-0.979331193326260730,\t-0.979321078940654340,\t-0.979310962106745290,\t-0.979300842824558760,\t-0.979290721094120190,\t-0.979280596915454660,\t-0.979270470288587710,\t\n-0.979260341213544660,\t-0.979250209690350810,\t-0.979240075719031380,\t-0.979229939299611770,\t-0.979219800432117320,\t-0.979209659116573320,\t-0.979199515353005200,\t-0.979189369141438280,\t\n-0.979179220481897760,\t-0.979169069374409400,\t-0.979158915818998390,\t-0.979148759815690050,\t-0.979138601364509810,\t-0.979128440465482860,\t-0.979118277118635080,\t-0.979108111323991560,\t\n-0.979097943081577720,\t-0.979087772391419090,\t-0.979077599253540990,\t-0.979067423667968840,\t-0.979057245634728180,\t-0.979047065153844430,\t-0.979036882225343020,\t-0.979026696849249260,\t\n-0.979016509025588900,\t-0.979006318754387150,\t-0.978996126035669770,\t-0.978985930869461950,\t-0.978975733255789240,\t-0.978965533194677270,\t-0.978955330686151590,\t-0.978945125730237510,\t\n-0.978934918326960560,\t-0.978924708476346380,\t-0.978914496178420410,\t-0.978904281433208290,\t-0.978894064240735330,\t-0.978883844601027290,\t-0.978873622514109480,\t-0.978863397980007770,\t\n-0.978853170998747470,\t-0.978842941570354340,\t-0.978832709694853920,\t-0.978822475372271630,\t-0.978812238602633000,\t-0.978801999385963910,\t-0.978791757722289880,\t-0.978781513611636340,\t\n-0.978771267054029170,\t-0.978761018049493780,\t-0.978750766598055820,\t-0.978740512699740940,\t-0.978730256354574780,\t-0.978719997562582880,\t-0.978709736323791100,\t-0.978699472638224990,\t\n-0.978689206505910180,\t-0.978678937926872330,\t-0.978668666901137190,\t-0.978658393428730180,\t-0.978648117509677400,\t-0.978637839144004260,\t-0.978627558331736540,\t-0.978617275072899970,\t\n-0.978606989367520220,\t-0.978596701215622920,\t-0.978586410617233950,\t-0.978576117572378950,\t-0.978565822081083450,\t-0.978555524143373550,\t-0.978545223759274880,\t-0.978534920928813110,\t\n-0.978524615652014100,\t-0.978514307928903480,\t-0.978503997759506920,\t-0.978493685143850600,\t-0.978483370081959960,\t-0.978473052573861080,\t-0.978462732619579390,\t-0.978452410219140980,\t\n-0.978442085372571490,\t-0.978431758079896800,\t-0.978421428341142760,\t-0.978411096156335040,\t-0.978400761525499480,\t-0.978390424448662200,\t-0.978380084925848830,\t-0.978369742957085230,\t\n-0.978359398542397280,\t-0.978349051681810740,\t-0.978338702375351700,\t-0.978328350623045910,\t-0.978317996424919230,\t-0.978307639780997550,\t-0.978297280691306730,\t-0.978286919155872740,\t\n-0.978276555174721450,\t-0.978266188747878850,\t-0.978255819875370690,\t-0.978245448557222840,\t-0.978235074793461610,\t-0.978224698584112540,\t-0.978214319929201830,\t-0.978203938828755340,\t\n-0.978193555282798940,\t-0.978183169291358510,\t-0.978172780854460240,\t-0.978162389972130120,\t-0.978151996644394010,\t-0.978141600871277990,\t-0.978131202652807840,\t-0.978120801989009750,\t\n-0.978110398879909580,\t-0.978099993325533430,\t-0.978089585325907170,\t-0.978079174881057110,\t-0.978068761991009120,\t-0.978058346655789280,\t-0.978047928875423470,\t-0.978037508649937880,\t\n-0.978027085979358390,\t-0.978016660863711310,\t-0.978006233303022610,\t-0.977995803297318280,\t-0.977985370846624400,\t-0.977974935950967180,\t-0.977964498610372600,\t-0.977954058824866750,\t\n-0.977943616594475820,\t-0.977933171919225570,\t-0.977922724799142660,\t-0.977912275234252950,\t-0.977901823224582410,\t-0.977891368770157480,\t-0.977880911871004010,\t-0.977870452527148100,\t\n-0.977859990738616290,\t-0.977849526505434550,\t-0.977839059827628860,\t-0.977828590705225650,\t-0.977818119138250900,\t-0.977807645126730800,\t-0.977797168670691660,\t-0.977786689770159590,\t\n-0.977776208425160780,\t-0.977765724635721310,\t-0.977755238401867620,\t-0.977744749723625910,\t-0.977734258601022250,\t-0.977723765034083090,\t-0.977713269022834170,\t-0.977702770567302370,\t\n-0.977692269667513550,\t-0.977681766323494130,\t-0.977671260535270310,\t-0.977660752302868310,\t-0.977650241626314420,\t-0.977639728505634960,\t-0.977629212940856140,\t-0.977618694932004260,\t\n-0.977608174479105530,\t-0.977597651582186480,\t-0.977587126241273420,\t-0.977576598456392440,\t-0.977566068227569970,\t-0.977555535554832320,\t-0.977545000438205690,\t-0.977534462877716730,\t\n-0.977523922873391630,\t-0.977513380425256710,\t-0.977502835533338390,\t-0.977492288197662870,\t-0.977481738418256700,\t-0.977471186195146170,\t-0.977460631528357720,\t-0.977450074417917420,\t\n-0.977439514863852170,\t-0.977428952866188140,\t-0.977418388424951770,\t-0.977407821540169360,\t-0.977397252211867350,\t-0.977386680440072150,\t-0.977376106224810300,\t-0.977365529566108340,\t\n-0.977354950463992460,\t-0.977344368918489190,\t-0.977333784929625080,\t-0.977323198497426440,\t-0.977312609621919790,\t-0.977302018303131680,\t-0.977291424541088300,\t-0.977280828335816530,\t\n-0.977270229687342670,\t-0.977259628595693260,\t-0.977249025060894840,\t-0.977238419082973820,\t-0.977227810661956520,\t-0.977217199797869920,\t-0.977206586490740330,\t-0.977195970740594280,\t\n-0.977185352547458310,\t-0.977174731911358950,\t-0.977164108832322740,\t-0.977153483310376210,\t-0.977142855345546010,\t-0.977132224937858670,\t-0.977121592087340620,\t-0.977110956794018830,\t\n-0.977100319057919500,\t-0.977089678879069500,\t-0.977079036257495260,\t-0.977068391193223200,\t-0.977057743686280400,\t-0.977047093736693180,\t-0.977036441344488300,\t-0.977025786509692300,\t\n-0.977015129232331800,\t-0.977004469512433580,\t-0.976993807350024060,\t-0.976983142745130100,\t-0.976972475697778230,\t-0.976961806207995000,\t-0.976951134275807490,\t-0.976940459901242120,\t\n-0.976929783084325540,\t-0.976919103825084620,\t-0.976908422123545780,\t-0.976897737979735780,\t-0.976887051393681700,\t-0.976876362365409870,\t-0.976865670894947250,\t-0.976854976982320380,\t\n-0.976844280627556020,\t-0.976833581830681030,\t-0.976822880591722060,\t-0.976812176910705990,\t-0.976801470787659110,\t-0.976790762222608850,\t-0.976780051215581760,\t-0.976769337766604350,\t\n-0.976758621875703730,\t-0.976747903542906530,\t-0.976737182768239400,\t-0.976726459551729430,\t-0.976715733893403380,\t-0.976705005793288010,\t-0.976694275251410060,\t-0.976683542267796520,\t\n-0.976672806842474040,\t-0.976662068975469590,\t-0.976651328666809930,\t-0.976640585916521700,\t-0.976629840724632330,\t-0.976619093091168230,\t-0.976608343016156510,\t-0.976597590499623910,\t\n-0.976586835541597310,\t-0.976576078142103340,\t-0.976565318301169550,\t-0.976554556018822350,\t-0.976543791295088730,\t-0.976533024129995760,\t-0.976522254523570110,\t-0.976511482475838850,\t\n-0.976500707986828980,\t-0.976489931056567230,\t-0.976479151685080700,\t-0.976468369872396050,\t-0.976457585618540680,\t-0.976446798923541360,\t-0.976436009787425060,\t-0.976425218210218770,\t\n-0.976414424191949240,\t-0.976403627732643780,\t-0.976392828832329250,\t-0.976382027491032640,\t-0.976371223708781040,\t-0.976360417485601320,\t-0.976349608821520550,\t-0.976338797716565840,\t\n-0.976327984170764050,\t-0.976317168184142380,\t-0.976306349756727480,\t-0.976295528888546980,\t-0.976284705579627650,\t-0.976273879829996580,\t-0.976263051639680750,\t-0.976252221008707340,\t\n-0.976241387937103130,\t-0.976230552424895650,\t-0.976219714472111870,\t-0.976208874078778770,\t-0.976198031244923440,\t-0.976187185970573080,\t-0.976176338255754780,\t-0.976165488100495530,\t\n-0.976154635504822620,\t-0.976143780468762930,\t-0.976132922992344000,\t-0.976122063075592790,\t-0.976111200718536300,\t-0.976100335921201930,\t-0.976089468683616680,\t-0.976078599005807510,\t\n-0.976067726887802190,\t-0.976056852329627360,\t-0.976045975331310540,\t-0.976035095892878730,\t-0.976024214014359240,\t-0.976013329695779140,\t-0.976002442937165760,\t-0.975991553738546180,\t\n-0.975980662099947600,\t-0.975969768021397570,\t-0.975958871502923150,\t-0.975947972544551460,\t-0.975937071146309900,\t-0.975926167308225680,\t-0.975915261030325780,\t-0.975904352312637950,\t\n-0.975893441155189280,\t-0.975882527558006970,\t-0.975871611521118340,\t-0.975860693044550700,\t-0.975849772128331240,\t-0.975838848772487500,\t-0.975827922977046570,\t-0.975816994742035760,\t\n-0.975806064067482380,\t-0.975795130953413970,\t-0.975784195399857720,\t-0.975773257406841070,\t-0.975762316974391200,\t-0.975751374102535430,\t-0.975740428791301300,\t-0.975729481040716220,\t\n-0.975718530850807290,\t-0.975707578221602150,\t-0.975696623153128000,\t-0.975685665645412370,\t-0.975674705698482580,\t-0.975663743312365940,\t-0.975652778487089980,\t-0.975641811222681900,\t\n-0.975630841519169460,\t-0.975619869376579850,\t-0.975608894794940730,\t-0.975597917774279290,\t-0.975586938314622950,\t-0.975575956415999260,\t-0.975564972078435730,\t-0.975553985301959800,\t\n-0.975542996086599000,\t-0.975532004432380640,\t-0.975521010339332250,\t-0.975510013807481370,\t-0.975499014836855420,\t-0.975488013427481930,\t-0.975477009579388320,\t-0.975466003292602250,\t\n-0.975454994567151230,\t-0.975443983403062710,\t-0.975432969800364200,\t-0.975421953759083360,\t-0.975410935279247380,\t-0.975399914360884250,\t-0.975388891004021370,\t-0.975377865208686190,\t\n-0.975366836974906450,\t-0.975355806302709570,\t-0.975344773192123090,\t-0.975333737643174770,\t-0.975322699655892130,\t-0.975311659230302500,\t-0.975300616366433950,\t-0.975289571064313800,\t\n-0.975278523323969800,\t-0.975267473145429390,\t-0.975256420528720410,\t-0.975245365473870090,\t-0.975234307980906600,\t-0.975223248049857380,\t-0.975212185680749970,\t-0.975201120873612100,\t\n-0.975190053628471440,\t-0.975178983945355740,\t-0.975167911824292410,\t-0.975156837265309440,\t-0.975145760268434360,\t-0.975134680833694590,\t-0.975123598961118440,\t-0.975112514650733230,\t\n-0.975101427902566710,\t-0.975090338716646630,\t-0.975079247093000530,\t-0.975068153031656500,\t-0.975057056532642070,\t-0.975045957595985000,\t-0.975034856221713040,\t-0.975023752409853950,\t\n-0.975012646160435480,\t-0.975001537473485390,\t-0.974990426349031550,\t-0.974979312787101480,\t-0.974968196787723060,\t-0.974957078350924270,\t-0.974945957476732850,\t-0.974934834165176460,\t\n-0.974923708416283060,\t-0.974912580230080320,\t-0.974901449606595970,\t-0.974890316545858230,\t-0.974879181047894620,\t-0.974868043112733120,\t-0.974856902740401490,\t-0.974845759930927590,\t\n-0.974834614684339300,\t-0.974823467000664470,\t-0.974812316879930970,\t-0.974801164322166460,\t-0.974790009327399340,\t-0.974778851895657050,\t-0.974767692026967780,\t-0.974756529721359180,\t\n-0.974745364978859330,\t-0.974734197799495770,\t-0.974723028183296920,\t-0.974711856130290540,\t-0.974700681640504610,\t-0.974689504713966870,\t-0.974678325350705420,\t-0.974667143550748130,\t\n-0.974655959314122970,\t-0.974644772640857910,\t-0.974633583530980730,\t-0.974622391984519830,\t-0.974611198001502870,\t-0.974600001581957920,\t-0.974588802725913080,\t-0.974577601433396110,\t\n-0.974566397704434980,\t-0.974555191539058120,\t-0.974543982937293160,\t-0.974532771899168320,\t-0.974521558424711550,\t-0.974510342513950860,\t-0.974499124166914310,\t-0.974487903383630010,\t\n-0.974476680164125920,\t-0.974465454508430140,\t-0.974454226416570420,\t-0.974442995888575410,\t-0.974431762924472980,\t-0.974420527524291090,\t-0.974409289688057840,\t-0.974398049415801220,\t\n-0.974386806707549620,\t-0.974375561563331050,\t-0.974364313983173580,\t-0.974353063967105300,\t-0.974341811515154420,\t-0.974330556627348910,\t-0.974319299303717080,\t-0.974308039544287020,\t\n-0.974296777349086820,\t-0.974285512718144450,\t-0.974274245651488570,\t-0.974262976149147030,\t-0.974251704211148040,\t-0.974240429837519790,\t-0.974229153028290500,\t-0.974217873783488120,\t\n-0.974206592103141310,\t-0.974195307987277940,\t-0.974184021435926310,\t-0.974172732449114620,\t-0.974161441026871190,\t-0.974150147169223990,\t-0.974138850876201560,\t-0.974127552147831980,\t\n-0.974116250984143340,\t-0.974104947385164180,\t-0.974093641350922690,\t-0.974082332881447190,\t-0.974071021976765760,\t-0.974059708636906720,\t-0.974048392861898370,\t-0.974037074651769140,\t\n-0.974025754006547230,\t-0.974014430926260940,\t-0.974003105410938600,\t-0.973991777460608390,\t-0.973980447075298850,\t-0.973969114255038180,\t-0.973957778999854700,\t-0.973946441309776590,\t\n-0.973935101184832620,\t-0.973923758625050760,\t-0.973912413630459660,\t-0.973901066201087410,\t-0.973889716336962530,\t-0.973878364038113230,\t-0.973867009304568150,\t-0.973855652136355500,\t\n-0.973844292533503800,\t-0.973832930496041360,\t-0.973821566023996610,\t-0.973810199117397860,\t-0.973798829776273740,\t-0.973787458000652470,\t-0.973776083790562570,\t-0.973764707146032250,\t\n-0.973753328067090360,\t-0.973741946553765110,\t-0.973730562606085040,\t-0.973719176224078550,\t-0.973707787407773970,\t-0.973696396157200050,\t-0.973685002472385210,\t-0.973673606353357870,\t\n-0.973662207800146450,\t-0.973650806812779600,\t-0.973639403391285630,\t-0.973627997535693180,\t-0.973616589246030780,\t-0.973605178522326860,\t-0.973593765364609840,\t-0.973582349772908580,\t\n-0.973570931747251400,\t-0.973559511287666930,\t-0.973548088394183720,\t-0.973536663066830180,\t-0.973525235305634950,\t-0.973513805110626680,\t-0.973502372481834020,\t-0.973490937419285270,\t\n-0.973479499923009310,\t-0.973468059993034540,\t-0.973456617629389730,\t-0.973445172832103300,\t-0.973433725601203890,\t-0.973422275936720040,\t-0.973410823838680610,\t-0.973399369307114240,\t\n-0.973387912342049360,\t-0.973376452943514710,\t-0.973364991111538960,\t-0.973353526846150510,\t-0.973342060147378450,\t-0.973330591015251210,\t-0.973319119449797540,\t-0.973307645451046090,\t\n-0.973296169019025490,\t-0.973284690153764510,\t-0.973273208855291670,\t-0.973261725123635960,\t-0.973250238958825680,\t-0.973238750360890030,\t-0.973227259329857430,\t-0.973215765865756750,\t\n-0.973204269968616640,\t-0.973192771638465850,\t-0.973181270875332900,\t-0.973169767679247010,\t-0.973158262050236700,\t-0.973146753988330730,\t-0.973135243493557960,\t-0.973123730565946920,\t\n-0.973112215205526710,\t-0.973100697412325850,\t-0.973089177186373330,\t-0.973077654527697790,\t-0.973066129436327980,\t-0.973054601912292980,\t-0.973043071955621560,\t-0.973031539566342360,\t\n-0.973020004744484360,\t-0.973008467490076190,\t-0.972996927803146950,\t-0.972985385683725500,\t-0.972973841131840490,\t-0.972962294147521000,\t-0.972950744730795680,\t-0.972939192881693500,\t\n-0.972927638600243340,\t-0.972916081886474160,\t-0.972904522740414720,\t-0.972892961162093780,\t-0.972881397151540650,\t-0.972869830708783970,\t-0.972858261833852710,\t-0.972846690526775860,\t\n-0.972835116787582050,\t-0.972823540616300720,\t-0.972811962012960500,\t-0.972800380977590250,\t-0.972788797510219180,\t-0.972777211610876160,\t-0.972765623279590040,\t-0.972754032516389810,\t\n-0.972742439321304550,\t-0.972730843694363250,\t-0.972719245635594530,\t-0.972707645145027940,\t-0.972696042222692240,\t-0.972684436868616500,\t-0.972672829082829590,\t-0.972661218865360610,\t\n-0.972649606216238420,\t-0.972637991135492430,\t-0.972626373623151410,\t-0.972614753679244440,\t-0.972603131303800720,\t-0.972591506496849000,\t-0.972579879258418600,\t-0.972568249588538490,\t\n-0.972556617487237760,\t-0.972544982954545280,\t-0.972533345990490570,\t-0.972521706595102510,\t-0.972510064768410180,\t-0.972498420510442660,\t-0.972486773821229060,\t-0.972475124700798330,\t\n-0.972463473149180020,\t-0.972451819166403000,\t-0.972440162752496450,\t-0.972428503907489470,\t-0.972416842631411260,\t-0.972405178924291010,\t-0.972393512786157710,\t-0.972381844217040660,\t\n-0.972370173216968840,\t-0.972358499785971770,\t-0.972346823924078340,\t-0.972335145631317950,\t-0.972323464907719700,\t-0.972311781753312790,\t-0.972300096168126180,\t-0.972288408152189640,\t\n-0.972276717705532030,\t-0.972265024828182560,\t-0.972253329520170520,\t-0.972241631781525230,\t-0.972229931612275890,\t-0.972218229012451580,\t-0.972206523982081850,\t-0.972194816521195770,\t\n-0.972183106629822320,\t-0.972171394307991490,\t-0.972159679555732130,\t-0.972147962373073440,\t-0.972136242760044960,\t-0.972124520716675660,\t-0.972112796242995290,\t-0.972101069339032840,\t\n-0.972089340004817840,\t-0.972077608240379360,\t-0.972065874045746960,\t-0.972054137420949820,\t-0.972042398366017360,\t-0.972030656880978890,\t-0.972018912965863740,\t-0.972007166620701190,\t\n-0.971995417845520900,\t-0.971983666640352070,\t-0.971971913005224010,\t-0.971960156940166240,\t-0.971948398445208080,\t-0.971936637520378620,\t-0.971924874165707830,\t-0.971913108381224910,\t\n-0.971901340166959170,\t-0.971889569522940140,\t-0.971877796449197140,\t-0.971866020945759580,\t-0.971854243012657100,\t-0.971842462649918910,\t-0.971830679857574430,\t-0.971818894635653410,\t\n-0.971807106984185150,\t-0.971795316903199090,\t-0.971783524392724860,\t-0.971771729452791670,\t-0.971759932083429030,\t-0.971748132284666830,\t-0.971736330056534260,\t-0.971724525399060850,\t\n-0.971712718312276010,\t-0.971700908796209520,\t-0.971689096850890780,\t-0.971677282476349210,\t-0.971665465672614470,\t-0.971653646439715860,\t-0.971641824777683240,\t-0.971630000686546150,\t\n-0.971618174166334110,\t-0.971606345217076560,\t-0.971594513838803240,\t-0.971582680031543360,\t-0.971570843795326990,\t-0.971559005130183450,\t-0.971547164036142500,\t-0.971535320513233550,\t\n-0.971523474561486360,\t-0.971511626180930450,\t-0.971499775371595490,\t-0.971487922133511090,\t-0.971476066466706920,\t-0.971464208371212390,\t-0.971452347847057470,\t-0.971440484894271710,\t\n-0.971428619512884730,\t-0.971416751702926300,\t-0.971404881464425610,\t-0.971393008797413080,\t-0.971381133701917920,\t-0.971369256177969990,\t-0.971357376225598920,\t-0.971345493844834370,\t\n-0.971333609035706090,\t-0.971321721798243830,\t-0.971309832132477240,\t-0.971297940038436060,\t-0.971286045516149830,\t-0.971274148565648750,\t-0.971262249186962250,\t-0.971250347380120060,\t\n-0.971238443145152060,\t-0.971226536482088010,\t-0.971214627390957320,\t-0.971202715871790300,\t-0.971190801924616600,\t-0.971178885549465740,\t-0.971166966746367710,\t-0.971155045515352260,\t\n-0.971143121856449240,\t-0.971131195769688430,\t-0.971119267255099560,\t-0.971107336312712400,\t-0.971095402942557030,\t-0.971083467144663090,\t-0.971071528919060680,\t-0.971059588265779320,\t\n-0.971047645184848980,\t-0.971035699676299320,\t-0.971023751740160650,\t-0.971011801376462590,\t-0.970999848585235030,\t-0.970987893366507930,\t-0.970975935720310930,\t-0.970963975646674250,\t\n-0.970952013145627510,\t-0.970940048217200810,\t-0.970928080861423790,\t-0.970916111078326760,\t-0.970904138867939360,\t-0.970892164230291790,\t-0.970880187165413690,\t-0.970868207673335150,\t\n-0.970856225754085810,\t-0.970844241407696210,\t-0.970832254634195980,\t-0.970820265433615100,\t-0.970808273805983670,\t-0.970796279751331430,\t-0.970784283269688460,\t-0.970772284361084870,\t\n-0.970760283025550510,\t-0.970748279263115470,\t-0.970736273073809610,\t-0.970724264457663130,\t-0.970712253414706130,\t-0.970700239944968350,\t-0.970688224048480100,\t-0.970676205725271020,\t\n-0.970664184975371660,\t-0.970652161798811750,\t-0.970640136195621510,\t-0.970628108165830890,\t-0.970616077709470120,\t-0.970604044826569030,\t-0.970592009517157850,\t-0.970579971781266650,\t\n-0.970567931618925520,\t-0.970555889030164430,\t-0.970543844015013700,\t-0.970531796573503520,\t-0.970519746705663660,\t-0.970507694411524620,\t-0.970495639691116190,\t-0.970483582544468540,\t\n-0.970471522971612100,\t-0.970459460972576850,\t-0.970447396547392980,\t-0.970435329696090590,\t-0.970423260418699970,\t-0.970411188715251120,\t-0.970399114585774330,\t-0.970387038030299690,\t\n-0.970374959048857290,\t-0.970362877641477660,\t-0.970350793808190890,\t-0.970338707549027070,\t-0.970326618864016610,\t-0.970314527753189490,\t-0.970302434216575800,\t-0.970290338254206410,\t\n-0.970278239866111060,\t-0.970266139052320060,\t-0.970254035812863850,\t-0.970241930147772490,\t-0.970229822057076200,\t-0.970217711540805490,\t-0.970205598598990470,\t-0.970193483231661210,\t\n-0.970181365438848480,\t-0.970169245220582340,\t-0.970157122576893130,\t-0.970144997507811020,\t-0.970132870013366460,\t-0.970120740093589510,\t-0.970108607748510930,\t-0.970096472978160820,\t\n-0.970084335782569580,\t-0.970072196161767430,\t-0.970060054115784780,\t-0.970047909644652040,\t-0.970035762748399530,\t-0.970023613427057670,\t-0.970011461680656660,\t-0.969999307509226800,\t\n-0.969987150912798970,\t-0.969974991891403240,\t-0.969962830445069920,\t-0.969950666573829670,\t-0.969938500277712450,\t-0.969926331556749230,\t-0.969914160410970230,\t-0.969901986840405740,\t\n-0.969889810845086300,\t-0.969877632425042320,\t-0.969865451580304350,\t-0.969853268310902680,\t-0.969841082616867860,\t-0.969828894498230290,\t-0.969816703955020290,\t-0.969804510987268830,\t\n-0.969792315595006000,\t-0.969780117778262340,\t-0.969767917537068480,\t-0.969755714871454840,\t-0.969743509781451630,\t-0.969731302267089810,\t-0.969719092328399810,\t-0.969706879965412160,\t\n-0.969694665178157170,\t-0.969682447966665580,\t-0.969670228330967940,\t-0.969658006271094660,\t-0.969645781787076280,\t-0.969633554878943320,\t-0.969621325546726750,\t-0.969609093790456790,\t\n-0.969596859610164060,\t-0.969584623005879220,\t-0.969572383977632900,\t-0.969560142525455300,\t-0.969547898649377630,\t-0.969535652349430180,\t-0.969523403625643600,\t-0.969511152478048420,\t\n-0.969498898906675510,\t-0.969486642911555290,\t-0.969474384492718500,\t-0.969462123650195680,\t-0.969449860384017370,\t-0.969437594694214640,\t-0.969425326580817930,\t-0.969413056043857860,\t\n-0.969400783083365190,\t-0.969388507699370460,\t-0.969376229891904420,\t-0.969363949660997930,\t-0.969351667006681520,\t-0.969339381928985940,\t-0.969327094427942070,\t-0.969314804503580320,\t\n-0.969302512155931550,\t-0.969290217385026520,\t-0.969277920190895980,\t-0.969265620573570690,\t-0.969253318533081050,\t-0.969241014069458400,\t-0.969228707182733130,\t-0.969216397872936120,\t\n-0.969204086140098120,\t-0.969191771984249660,\t-0.969179455405422050,\t-0.969167136403645820,\t-0.969154814978951620,\t-0.969142491131370520,\t-0.969130164860933170,\t-0.969117836167670330,\t\n-0.969105505051612970,\t-0.969093171512791840,\t-0.969080835551237700,\t-0.969068497166981400,\t-0.969056156360053930,\t-0.969043813130486150,\t-0.969031467478308820,\t-0.969019119403552900,\t\n-0.969006768906249040,\t-0.968994415986428100,\t-0.968982060644121400,\t-0.968969702879359460,\t-0.968957342692173260,\t-0.968944980082593780,\t-0.968932615050651870,\t-0.968920247596378290,\t\n-0.968907877719804240,\t-0.968895505420960370,\t-0.968883130699877530,\t-0.968870753556587140,\t-0.968858373991119850,\t-0.968845992003506630,\t-0.968833607593778460,\t-0.968821220761966200,\t\n-0.968808831508100710,\t-0.968796439832213420,\t-0.968784045734334960,\t-0.968771649214496430,\t-0.968759250272728690,\t-0.968746848909062930,\t-0.968734445123529910,\t-0.968722038916160930,\t\n-0.968709630286986760,\t-0.968697219236038350,\t-0.968684805763347030,\t-0.968672389868943770,\t-0.968659971552859540,\t-0.968647550815125320,\t-0.968635127655772310,\t-0.968622702074831140,\t\n-0.968610274072333580,\t-0.968597843648310250,\t-0.968585410802792260,\t-0.968572975535810900,\t-0.968560537847396930,\t-0.968548097737581770,\t-0.968535655206396280,\t-0.968523210253871670,\t\n-0.968510762880039010,\t-0.968498313084929290,\t-0.968485860868573910,\t-0.968473406231003970,\t-0.968460949172250450,\t-0.968448489692344540,\t-0.968436027791317210,\t-0.968423563469200110,\t\n-0.968411096726023990,\t-0.968398627561820160,\t-0.968386155976619810,\t-0.968373681970454040,\t-0.968361205543354140,\t-0.968348726695351100,\t-0.968336245426476340,\t-0.968323761736760940,\t\n-0.968311275626235870,\t-0.968298787094932890,\t-0.968286296142882860,\t-0.968273802770117210,\t-0.968261306976666900,\t-0.968248808762563470,\t-0.968236308127837670,\t-0.968223805072521370,\t\n-0.968211299596645650,\t-0.968198791700241590,\t-0.968186281383340620,\t-0.968173768645973820,\t-0.968161253488172720,\t-0.968148735909968420,\t-0.968136215911392320,\t-0.968123693492475400,\t\n-0.968111168653249530,\t-0.968098641393745800,\t-0.968086111713995390,\t-0.968073579614029620,\t-0.968061045093880020,\t-0.968048508153577570,\t-0.968035968793154010,\t-0.968023427012640550,\t\n-0.968010882812068600,\t-0.967998336191469360,\t-0.967985787150874240,\t-0.967973235690314790,\t-0.967960681809822200,\t-0.967948125509427880,\t-0.967935566789163040,\t-0.967923005649059420,\t\n-0.967910442089148340,\t-0.967897876109461210,\t-0.967885307710029340,\t-0.967872736890884270,\t-0.967860163652057070,\t-0.967847587993579730,\t-0.967835009915483320,\t-0.967822429417799500,\t\n-0.967809846500559570,\t-0.967797261163794940,\t-0.967784673407537270,\t-0.967772083231817850,\t-0.967759490636668220,\t-0.967746895622119910,\t-0.967734298188204110,\t-0.967721698334952810,\t\n-0.967709096062397300,\t-0.967696491370569010,\t-0.967683884259499470,\t-0.967671274729219990,\t-0.967658662779762650,\t-0.967646048411158530,\t-0.967633431623439400,\t-0.967620812416636560,\t\n-0.967608190790781750,\t-0.967595566745906520,\t-0.967582940282042280,\t-0.967570311399220780,\t-0.967557680097473450,\t-0.967545046376831700,\t-0.967532410237327500,\t-0.967519771678992390,\t\n-0.967507130701857790,\t-0.967494487305955330,\t-0.967481841491316660,\t-0.967469193257973200,\t-0.967456542605957040,\t-0.967443889535299470,\t-0.967431234046032150,\t-0.967418576138186710,\t\n-0.967405915811794910,\t-0.967393253066888280,\t-0.967380587903498570,\t-0.967367920321657300,\t-0.967355250321396130,\t-0.967342577902746910,\t-0.967329903065741400,\t-0.967317225810411020,\t\n-0.967304546136787620,\t-0.967291864044902860,\t-0.967279179534788150,\t-0.967266492606475790,\t-0.967253803259997210,\t-0.967241111495384050,\t-0.967228417312668180,\t-0.967215720711881220,\t\n-0.967203021693054940,\t-0.967190320256221200,\t-0.967177616401411640,\t-0.967164910128657680,\t-0.967152201437991850,\t-0.967139490329445460,\t-0.967126776803050260,\t-0.967114060858838220,\t\n-0.967101342496840990,\t-0.967088621717090090,\t-0.967075898519617950,\t-0.967063172904456090,\t-0.967050444871636270,\t-0.967037714421190350,\t-0.967024981553150200,\t-0.967012246267547450,\t\n-0.966999508564414190,\t-0.966986768443782170,\t-0.966974025905683150,\t-0.966961280950148880,\t-0.966948533577211670,\t-0.966935783786903040,\t-0.966923031579255080,\t-0.966910276954299430,\t\n-0.966897519912067850,\t-0.966884760452592750,\t-0.966871998575905780,\t-0.966859234282038790,\t-0.966846467571023660,\t-0.966833698442892460,\t-0.966820926897676960,\t-0.966808152935409120,\t\n-0.966795376556120910,\t-0.966782597759844320,\t-0.966769816546610870,\t-0.966757032916453210,\t-0.966744246869402970,\t-0.966731458405492130,\t-0.966718667524752550,\t-0.966705874227216430,\t\n-0.966693078512915300,\t-0.966680280381881700,\t-0.966667479834147470,\t-0.966654676869744490,\t-0.966641871488704840,\t-0.966629063691060500,\t-0.966616253476843430,\t-0.966603440846085850,\t\n-0.966590625798819600,\t-0.966577808335076560,\t-0.966564988454889250,\t-0.966552166158289540,\t-0.966539341445309290,\t-0.966526514315980690,\t-0.966513684770335950,\t-0.966500852808406590,\t\n-0.966488018430225470,\t-0.966475181635824240,\t-0.966462342425234990,\t-0.966449500798490010,\t-0.966436656755621180,\t-0.966423810296660800,\t-0.966410961421640850,\t-0.966398110130593510,\t\n-0.966385256423550660,\t-0.966372400300544830,\t-0.966359541761608100,\t-0.966346680806772440,\t-0.966333817436070050,\t-0.966320951649533240,\t-0.966308083447193770,\t-0.966295212829084260,\t\n-0.966282339795236810,\t-0.966269464345683500,\t-0.966256586480456430,\t-0.966243706199587990,\t-0.966230823503110290,\t-0.966217938391055520,\t-0.966205050863455870,\t-0.966192160920343550,\t\n-0.966179268561750740,\t-0.966166373787709860,\t-0.966153476598253120,\t-0.966140576993412600,\t-0.966127674973220720,\t-0.966114770537709440,\t-0.966101863686911420,\t-0.966088954420858740,\t\n-0.966076042739583700,\t-0.966063128643118500,\t-0.966050212131495560,\t-0.966037293204746960,\t-0.966024371862905240,\t-0.966011448106002590,\t-0.965998521934071320,\t-0.965985593347143400,\t\n-0.965972662345251810,\t-0.965959728928428630,\t-0.965946793096706060,\t-0.965933854850116510,\t-0.965920914188692080,\t-0.965907971112465620,\t-0.965895025621469230,\t-0.965882077715735310,\t\n-0.965869127395296180,\t-0.965856174660184140,\t-0.965843219510431730,\t-0.965830261946071360,\t-0.965817301967135220,\t-0.965804339573655860,\t-0.965791374765665460,\t-0.965778407543196770,\t\n-0.965765437906282110,\t-0.965752465854953890,\t-0.965739491389244420,\t-0.965726514509186230,\t-0.965713535214811620,\t-0.965700553506153360,\t-0.965687569383243740,\t-0.965674582846115070,\t\n-0.965661593894800110,\t-0.965648602529331050,\t-0.965635608749740530,\t-0.965622612556060970,\t-0.965609613948324900,\t-0.965596612926564510,\t-0.965583609490812900,\t-0.965570603641102250,\t\n-0.965557595377465110,\t-0.965544584699933870,\t-0.965531571608541310,\t-0.965518556103319490,\t-0.965505538184301510,\t-0.965492517851519790,\t-0.965479495105006640,\t-0.965466469944794900,\t\n-0.965453442370916900,\t-0.965440412383405280,\t-0.965427379982292670,\t-0.965414345167611600,\t-0.965401307939394600,\t-0.965388268297674210,\t-0.965375226242483290,\t-0.965362181773854360,\t\n-0.965349134891819950,\t-0.965336085596412710,\t-0.965323033887665050,\t-0.965309979765609950,\t-0.965296923230280050,\t-0.965283864281707760,\t-0.965270802919925730,\t-0.965257739144966820,\t\n-0.965244672956863450,\t-0.965231604355648480,\t-0.965218533341354550,\t-0.965205459914014190,\t-0.965192384073659930,\t-0.965179305820325070,\t-0.965166225154041820,\t-0.965153142074843040,\t\n-0.965140056582761470,\t-0.965126968677829430,\t-0.965113878360080220,\t-0.965100785629546380,\t-0.965087690486260530,\t-0.965074592930255440,\t-0.965061492961563960,\t-0.965048390580218630,\t\n-0.965035285786252420,\t-0.965022178579697850,\t-0.965009068960588020,\t-0.964995956928955120,\t-0.964982842484832680,\t-0.964969725628253120,\t-0.964956606359249180,\t-0.964943484677853740,\t\n-0.964930360584099640,\t-0.964917234078019440,\t-0.964904105159646310,\t-0.964890973829012900,\t-0.964877840086152070,\t-0.964864703931096690,\t-0.964851565363879500,\t-0.964838424384533490,\t\n-0.964825280993091280,\t-0.964812135189585970,\t-0.964798986974050090,\t-0.964785836346516930,\t-0.964772683307019150,\t-0.964759527855589720,\t-0.964746369992261490,\t-0.964733209717067220,\t\n-0.964720047030039770,\t-0.964706881931212460,\t-0.964693714420617910,\t-0.964680544498289110,\t-0.964667372164258910,\t-0.964654197418560290,\t-0.964641020261226220,\t-0.964627840692289570,\t\n-0.964614658711783310,\t-0.964601474319740190,\t-0.964588287516193630,\t-0.964575098301176270,\t-0.964561906674721190,\t-0.964548712636861370,\t-0.964535516187629780,\t-0.964522317327059180,\t\n-0.964509116055182970,\t-0.964495912372034030,\t-0.964482706277645320,\t-0.964469497772049820,\t-0.964456286855280510,\t-0.964443073527370580,\t-0.964429857788352880,\t-0.964416639638260630,\t\n-0.964403419077126680,\t-0.964390196104984000,\t-0.964376970721866010,\t-0.964363742927805690,\t-0.964350512722836010,\t-0.964337280106989940,\t-0.964324045080300560,\t-0.964310807642801190,\t\n-0.964297567794524910,\t-0.964284325535504580,\t-0.964271080865773510,\t-0.964257833785364780,\t-0.964244584294311480,\t-0.964231332392646580,\t-0.964218078080403500,\t-0.964204821357615090,\t\n-0.964191562224314570,\t-0.964178300680535230,\t-0.964165036726310150,\t-0.964151770361672540,\t-0.964138501586655480,\t-0.964125230401292170,\t-0.964111956805615570,\t-0.964098680799659210,\t\n-0.964085402383456300,\t-0.964072121557039810,\t-0.964058838320442920,\t-0.964045552673699070,\t-0.964032264616841330,\t-0.964018974149902900,\t-0.964005681272916970,\t-0.963992385985916740,\t\n-0.963979088288935640,\t-0.963965788182006960,\t-0.963952485665163670,\t-0.963939180738439320,\t-0.963925873401866860,\t-0.963912563655479620,\t-0.963899251499311100,\t-0.963885936933394530,\t\n-0.963872619957763080,\t-0.963859300572450060,\t-0.963845978777488790,\t-0.963832654572912560,\t-0.963819327958754800,\t-0.963805998935048590,\t-0.963792667501827240,\t-0.963779333659124380,\t\n-0.963765997406973220,\t-0.963752658745407050,\t-0.963739317674459310,\t-0.963725974194163280,\t-0.963712628304551950,\t-0.963699280005659410,\t-0.963685929297518620,\t-0.963672576180163000,\t\n-0.963659220653625970,\t-0.963645862717940840,\t-0.963632502373141020,\t-0.963619139619260050,\t-0.963605774456331220,\t-0.963592406884387850,\t-0.963579036903463360,\t-0.963565664513591490,\t\n-0.963552289714805330,\t-0.963538912507138520,\t-0.963525532890624480,\t-0.963512150865296400,\t-0.963498766431188040,\t-0.963485379588332910,\t-0.963471990336764230,\t-0.963458598676515620,\t\n-0.963445204607620510,\t-0.963431808130112420,\t-0.963418409244024780,\t-0.963405007949391100,\t-0.963391604246244930,\t-0.963378198134619450,\t-0.963364789614548740,\t-0.963351378686066130,\t\n-0.963337965349204910,\t-0.963324549603998940,\t-0.963311131450481530,\t-0.963297710888686100,\t-0.963284287918646510,\t-0.963270862540396290,\t-0.963257434753968970,\t-0.963244004559397960,\t\n-0.963230571956717020,\t-0.963217136945959560,\t-0.963203699527159340,\t-0.963190259700349880,\t-0.963176817465564490,\t-0.963163372822837260,\t-0.963149925772201710,\t-0.963136476313691260,\t\n-0.963123024447339660,\t-0.963109570173180440,\t-0.963096113491247020,\t-0.963082654401573700,\t-0.963069192904193680,\t-0.963055728999140600,\t-0.963042262686448320,\t-0.963028793966150260,\t\n-0.963015322838280290,\t-0.963001849302872030,\t-0.962988373359959130,\t-0.962974895009575120,\t-0.962961414251753970,\t-0.962947931086529430,\t-0.962934445513934920,\t-0.962920957534004420,\t\n-0.962907467146771450,\t-0.962893974352269640,\t-0.962880479150533100,\t-0.962866981541595330,\t-0.962853481525490110,\t-0.962839979102251280,\t-0.962826474271912370,\t-0.962812967034507360,\t\n-0.962799457390069890,\t-0.962785945338633820,\t-0.962772430880232900,\t-0.962758914014900660,\t-0.962745394742671290,\t-0.962731873063578550,\t-0.962718348977656070,\t-0.962704822484937720,\t\n-0.962691293585457020,\t-0.962677762279248390,\t-0.962664228566345370,\t-0.962650692446781700,\t-0.962637153920591350,\t-0.962623612987808070,\t-0.962610069648465850,\t-0.962596523902598420,\t\n-0.962582975750239660,\t-0.962569425191423410,\t-0.962555872226183440,\t-0.962542316854554050,\t-0.962528759076568760,\t-0.962515198892261670,\t-0.962501636301666630,\t-0.962488071304817390,\t\n-0.962474503901747710,\t-0.962460934092492120,\t-0.962447361877084130,\t-0.962433787255557730,\t-0.962420210227946880,\t-0.962406630794285570,\t-0.962393048954607530,\t-0.962379464708946970,\t\n-0.962365878057337750,\t-0.962352288999813620,\t-0.962338697536408880,\t-0.962325103667157510,\t-0.962311507392093370,\t-0.962297908711250430,\t-0.962284307624662770,\t-0.962270704132364040,\t\n-0.962257098234388870,\t-0.962243489930770910,\t-0.962229879221544240,\t-0.962216266106742820,\t-0.962202650586400750,\t-0.962189032660552000,\t-0.962175412329230760,\t-0.962161789592471010,\t\n-0.962148164450306490,\t-0.962134536902771840,\t-0.962120906949900820,\t-0.962107274591727510,\t-0.962093639828286110,\t-0.962080002659610470,\t-0.962066363085734680,\t-0.962052721106693150,\t\n-0.962039076722519870,\t-0.962025429933248910,\t-0.962011780738914360,\t-0.961998129139550410,\t-0.961984475135191030,\t-0.961970818725870540,\t-0.961957159911623010,\t-0.961943498692482520,\t\n-0.961929835068483060,\t-0.961916169039659260,\t-0.961902500606045100,\t-0.961888829767674650,\t-0.961875156524582110,\t-0.961861480876801460,\t-0.961847802824367330,\t-0.961834122367313690,\t\n-0.961820439505674750,\t-0.961806754239484700,\t-0.961793066568777720,\t-0.961779376493588130,\t-0.961765684013950130,\t-0.961751989129897900,\t-0.961738291841465640,\t-0.961724592148687440,\t\n-0.961710890051598040,\t-0.961697185550231430,\t-0.961683478644621780,\t-0.961669769334803530,\t-0.961656057620810740,\t-0.961642343502677630,\t-0.961628626980438940,\t-0.961614908054128640,\t\n-0.961601186723781030,\t-0.961587462989430540,\t-0.961573736851111360,\t-0.961560008308857790,\t-0.961546277362704260,\t-0.961532544012684950,\t-0.961518808258834180,\t-0.961505070101186580,\t\n-0.961491329539776230,\t-0.961477586574637550,\t-0.961463841205804970,\t-0.961450093433312780,\t-0.961436343257195180,\t-0.961422590677486920,\t-0.961408835694222090,\t-0.961395078307435310,\t\n-0.961381318517160690,\t-0.961367556323432850,\t-0.961353791726286210,\t-0.961340024725754970,\t-0.961326255321873660,\t-0.961312483514676570,\t-0.961298709304198360,\t-0.961284932690473550,\t\n-0.961271153673536330,\t-0.961257372253421230,\t-0.961243588430162670,\t-0.961229802203794950,\t-0.961216013574352930,\t-0.961202222541870820,\t-0.961188429106383250,\t-0.961174633267924630,\t\n-0.961160835026529380,\t-0.961147034382232040,\t-0.961133231335067120,\t-0.961119425885069050,\t-0.961105618032272570,\t-0.961091807776711660,\t-0.961077995118421510,\t-0.961064180057436430,\t\n-0.961050362593790840,\t-0.961036542727519370,\t-0.961022720458656330,\t-0.961008895787236690,\t-0.960995068713294760,\t-0.960981239236865290,\t-0.960967407357982580,\t-0.960953573076681500,\t\n-0.960939736392996350,\t-0.960925897306961980,\t-0.960912055818612830,\t-0.960898211927983410,\t-0.960884365635108370,\t-0.960870516940022680,\t-0.960856665842760640,\t-0.960842812343356890,\t\n-0.960828956441846180,\t-0.960815098138263050,\t-0.960801237432641900,\t-0.960787374325017930,\t-0.960773508815425560,\t-0.960759640903899310,\t-0.960745770590474060,\t-0.960731897875184320,\t\n-0.960718022758064950,\t-0.960704145239150380,\t-0.960690265318475570,\t-0.960676382996074720,\t-0.960662498271983250,\t-0.960648611146235560,\t-0.960634721618866320,\t-0.960620829689910250,\t\n-0.960606935359402110,\t-0.960593038627376330,\t-0.960579139493868310,\t-0.960565237958912350,\t-0.960551334022543330,\t-0.960537427684796000,\t-0.960523518945705090,\t-0.960509607805305370,\t\n-0.960495694263631680,\t-0.960481778320718680,\t-0.960467859976601000,\t-0.960453939231313950,\t-0.960440016084892050,\t-0.960426090537370160,\t-0.960412162588782920,\t-0.960398232239165320,\t\n-0.960384299488551970,\t-0.960370364336978090,\t-0.960356426784478190,\t-0.960342486831087360,\t-0.960328544476840240,\t-0.960314599721771800,\t-0.960300652565916790,\t-0.960286703009310180,\t\n-0.960272751051986840,\t-0.960258796693981620,\t-0.960244839935329160,\t-0.960230880776064890,\t-0.960216919216223320,\t-0.960202955255839540,\t-0.960188988894948300,\t-0.960175020133584360,\t\n-0.960161048971783230,\t-0.960147075409579330,\t-0.960133099447007870,\t-0.960119121084103580,\t-0.960105140320901440,\t-0.960091157157436540,\t-0.960077171593743730,\t-0.960063183629857870,\t\n-0.960049193265814170,\t-0.960035200501647260,\t-0.960021205337392550,\t-0.960007207773084790,\t-0.959993207808759070,\t-0.959979205444450370,\t-0.959965200680193640,\t-0.959951193516023650,\t\n-0.959937183951975800,\t-0.959923171988085190,\t-0.959909157624386560,\t-0.959895140860914990,\t-0.959881121697705560,\t-0.959867100134793370,\t-0.959853076172213490,\t-0.959839049810000900,\t\n-0.959825021048190340,\t-0.959810989886817570,\t-0.959796956325917330,\t-0.959782920365524590,\t-0.959768882005674670,\t-0.959754841246402530,\t-0.959740798087742930,\t-0.959726752529731720,\t\n-0.959712704572403540,\t-0.959698654215793590,\t-0.959684601459937060,\t-0.959670546304869030,\t-0.959656488750624590,\t-0.959642428797238930,\t-0.959628366444747250,\t-0.959614301693184400,\t\n-0.959600234542586030,\t-0.959586164992987100,\t-0.959572093044422700,\t-0.959558018696928140,\t-0.959543941950538490,\t-0.959529862805288740,\t-0.959515781261214510,\t-0.959501697318350890,\t\n-0.959487610976733070,\t-0.959473522236396150,\t-0.959459431097375530,\t-0.959445337559706180,\t-0.959431241623423640,\t-0.959417143288562870,\t-0.959403042555159290,\t-0.959388939423247880,\t\n-0.959374833892864380,\t-0.959360725964043760,\t-0.959346615636821330,\t-0.959332502911232400,\t-0.959318387787311930,\t-0.959304270265095680,\t-0.959290150344618840,\t-0.959276028025916610,\t\n-0.959261903309024280,\t-0.959247776193977280,\t-0.959233646680810790,\t-0.959219514769560130,\t-0.959205380460260710,\t-0.959191243752947840,\t-0.959177104647656600,\t-0.959162963144422950,\t\n-0.959148819243281770,\t-0.959134672944268570,\t-0.959120524247418670,\t-0.959106373152767590,\t-0.959092219660350190,\t-0.959078063770202550,\t-0.959063905482359760,\t-0.959049744796857120,\t\n-0.959035581713730160,\t-0.959021416233014290,\t-0.959007248354744820,\t-0.958993078078957280,\t-0.958978905405687090,\t-0.958964730334969320,\t-0.958950552866839940,\t-0.958936373001334270,\t\n-0.958922190738487610,\t-0.958908006078335480,\t-0.958893819020913310,\t-0.958879629566256390,\t-0.958865437714400580,\t-0.958851243465381310,\t-0.958837046819233760,\t-0.958822847775993690,\t\n-0.958808646335696510,\t-0.958794442498377640,\t-0.958780236264072720,\t-0.958766027632817260,\t-0.958751816604646480,\t-0.958737603179596330,\t-0.958723387357702130,\t-0.958709169138999620,\t\n-0.958694948523524100,\t-0.958680725511311230,\t-0.958666500102396180,\t-0.958652272296815270,\t-0.958638042094603680,\t-0.958623809495796840,\t-0.958609574500430610,\t-0.958595337108540390,\t\n-0.958581097320161950,\t-0.958566855135330580,\t-0.958552610554082140,\t-0.958538363576452280,\t-0.958524114202476190,\t-0.958509862432190050,\t-0.958495608265629180,\t-0.958481351702829440,\t\n-0.958467092743826240,\t-0.958452831388655000,\t-0.958438567637352020,\t-0.958424301489952610,\t-0.958410032946492410,\t-0.958395762007007160,\t-0.958381488671532500,\t-0.958367212940104190,\t\n-0.958352934812757740,\t-0.958338654289528910,\t-0.958324371370453560,\t-0.958310086055567000,\t-0.958295798344905530,\t-0.958281508238504440,\t-0.958267215736399610,\t-0.958252920838626790,\t\n-0.958238623545221710,\t-0.958224323856219810,\t-0.958210021771657260,\t-0.958195717291569720,\t-0.958181410415992810,\t-0.958167101144962510,\t-0.958152789478514340,\t-0.958138475416684290,\t\n-0.958124158959507980,\t-0.958109840107021270,\t-0.958095518859259700,\t-0.958081195216259670,\t-0.958066869178056610,\t-0.958052540744686380,\t-0.958038209916184820,\t-0.958023876692587710,\t\n-0.958009541073930550,\t-0.957995203060249880,\t-0.957980862651581220,\t-0.957966519847960440,\t-0.957952174649423280,\t-0.957937827056005720,\t-0.957923477067743610,\t-0.957909124684672820,\t\n-0.957894769906829200,\t-0.957880412734248400,\t-0.957866053166966820,\t-0.957851691205020120,\t-0.957837326848444140,\t-0.957822960097274860,\t-0.957808590951548240,\t-0.957794219411299830,\t\n-0.957779845476566140,\t-0.957765469147382810,\t-0.957751090423785920,\t-0.957736709305811230,\t-0.957722325793494700,\t-0.957707939886872420,\t-0.957693551585980350,\t-0.957679160890854250,\t\n-0.957664767801530430,\t-0.957650372318044290,\t-0.957635974440432580,\t-0.957621574168730840,\t-0.957607171502975250,\t-0.957592766443201680,\t-0.957578358989445880,\t-0.957563949141744590,\t\n-0.957549536900133340,\t-0.957535122264648210,\t-0.957520705235325290,\t-0.957506285812200650,\t-0.957491863995310280,\t-0.957477439784690240,\t-0.957463013180376630,\t-0.957448584182405420,\t\n-0.957434152790812560,\t-0.957419719005634610,\t-0.957405282826907290,\t-0.957390844254666810,\t-0.957376403288949130,\t-0.957361959929790340,\t-0.957347514177226740,\t-0.957333066031294420,\t\n-0.957318615492029460,\t-0.957304162559468040,\t-0.957289707233646040,\t-0.957275249514599860,\t-0.957260789402365590,\t-0.957246326896979300,\t-0.957231861998477210,\t-0.957217394706895150,\t\n-0.957202925022270000,\t-0.957188452944637390,\t-0.957173978474033740,\t-0.957159501610495120,\t-0.957145022354057740,\t-0.957130540704757560,\t-0.957116056662631220,\t-0.957101570227714800,\t\n-0.957087081400044500,\t-0.957072590179656400,\t-0.957058096566586910,\t-0.957043600560872120,\t-0.957029102162548330,\t-0.957014601371651840,\t-0.957000098188218520,\t-0.956985592612285220,\t\n-0.956971084643888030,\t-0.956956574283063020,\t-0.956942061529846620,\t-0.956927546384275020,\t-0.956913028846384410,\t-0.956898508916211420,\t-0.956883986593792150,\t-0.956869461879162890,\t\n-0.956854934772360060,\t-0.956840405273419850,\t-0.956825873382378570,\t-0.956811339099272630,\t-0.956796802424138340,\t-0.956782263357011890,\t-0.956767721897929910,\t-0.956753178046928720,\t\n-0.956738631804044500,\t-0.956724083169313790,\t-0.956709532142772770,\t-0.956694978724457750,\t-0.956680422914405470,\t-0.956665864712652250,\t-0.956651304119234270,\t-0.956636741134188060,\t\n-0.956622175757549930,\t-0.956607607989356400,\t-0.956593037829643890,\t-0.956578465278448810,\t-0.956563890335807580,\t-0.956549313001756270,\t-0.956534733276331980,\t-0.956520151159570790,\t\n-0.956505566651509320,\t-0.956490979752183890,\t-0.956476390461630800,\t-0.956461798779886910,\t-0.956447204706988630,\t-0.956432608242972270,\t-0.956418009387874360,\t-0.956403408141731530,\t\n-0.956388804504580080,\t-0.956374198476456660,\t-0.956359590057397790,\t-0.956344979247439890,\t-0.956330366046619250,\t-0.956315750454972970,\t-0.956301132472537340,\t-0.956286512099348900,\t\n-0.956271889335444160,\t-0.956257264180859660,\t-0.956242636635631800,\t-0.956228006699797570,\t-0.956213374373393380,\t-0.956198739656455740,\t-0.956184102549021200,\t-0.956169463051126380,\t\n-0.956154821162807920,\t-0.956140176884102470,\t-0.956125530215046540,\t-0.956110881155676550,\t-0.956096229706029590,\t-0.956081575866142060,\t-0.956066919636050620,\t-0.956052261015791880,\t\n-0.956037600005402390,\t-0.956022936604918770,\t-0.956008270814378000,\t-0.955993602633816610,\t-0.955978932063271110,\t-0.955964259102778380,\t-0.955949583752374930,\t-0.955934906012097630,\t\n-0.955920225881982890,\t-0.955905543362067790,\t-0.955890858452388410,\t-0.955876171152982180,\t-0.955861481463885610,\t-0.955846789385135230,\t-0.955832094916767900,\t-0.955817398058820380,\t\n-0.955802698811329070,\t-0.955787997174331270,\t-0.955773293147863520,\t-0.955758586731962460,\t-0.955743877926665040,\t-0.955729166732007810,\t-0.955714453148027720,\t-0.955699737174761530,\t\n-0.955685018812245990,\t-0.955670298060517840,\t-0.955655574919613730,\t-0.955640849389570950,\t-0.955626121470426030,\t-0.955611391162215830,\t-0.955596658464977100,\t-0.955581923378746480,\t\n-0.955567185903561380,\t-0.955552446039458210,\t-0.955537703786474070,\t-0.955522959144645580,\t-0.955508212114009710,\t-0.955493462694603220,\t-0.955478710886463190,\t-0.955463956689626360,\t\n-0.955449200104129590,\t-0.955434441130009640,\t-0.955419679767303800,\t-0.955404916016048710,\t-0.955390149876281350,\t-0.955375381348038680,\t-0.955360610431357560,\t-0.955345837126274630,\t\n-0.955331061432827310,\t-0.955316283351052340,\t-0.955301502880986700,\t-0.955286720022667350,\t-0.955271934776131150,\t-0.955257147141415190,\t-0.955242357118556210,\t-0.955227564707591400,\t\n-0.955212769908557520,\t-0.955197972721491870,\t-0.955183173146431310,\t-0.955168371183412800,\t-0.955153566832473430,\t-0.955138760093650060,\t-0.955123950966979550,\t-0.955109139452499530,\t\n-0.955094325550246540,\t-0.955079509260257750,\t-0.955064690582570260,\t-0.955049869517220930,\t-0.955035046064247050,\t-0.955020220223685490,\t-0.955005391995573330,\t-0.954990561379947530,\t\n-0.954975728376845520,\t-0.954960892986304270,\t-0.954946055208360620,\t-0.954931215043052010,\t-0.954916372490415280,\t-0.954901527550487410,\t-0.954886680223305920,\t-0.954871830508907780,\t\n-0.954856978407329970,\t-0.954842123918609790,\t-0.954827267042784310,\t-0.954812407779890630,\t-0.954797546129966030,\t-0.954782682093047400,\t-0.954767815669172240,\t-0.954752946858377080,\t\n-0.954738075660700010,\t-0.954723202076177670,\t-0.954708326104847350,\t-0.954693447746746140,\t-0.954678567001911120,\t-0.954663683870379920,\t-0.954648798352189520,\t-0.954633910447377110,\t\n-0.954619020155979880,\t-0.954604127478035140,\t-0.954589232413580070,\t-0.954574334962651980,\t-0.954559435125288070,\t-0.954544532901525520,\t-0.954529628291401310,\t-0.954514721294953410,\t\n-0.954499811912218550,\t-0.954484900143234280,\t-0.954469985988037780,\t-0.954455069446666250,\t-0.954440150519156870,\t-0.954425229205547290,\t-0.954410305505874690,\t-0.954395379420176270,\t\n-0.954380450948489440,\t-0.954365520090851520,\t-0.954350586847299790,\t-0.954335651217871560,\t-0.954320713202604140,\t-0.954305772801534720,\t-0.954290830014701160,\t-0.954275884842140540,\t\n-0.954260937283890160,\t-0.954245987339987560,\t-0.954231035010469800,\t-0.954216080295374300,\t-0.954201123194738820,\t-0.954186163708600650,\t-0.954171201836997000,\t-0.954156237579965260,\t\n-0.954141270937542970,\t-0.954126301909767550,\t-0.954111330496676400,\t-0.954096356698306840,\t-0.954081380514696150,\t-0.954066401945882330,\t-0.954051420991902430,\t-0.954036437652794000,\t\n-0.954021451928594440,\t-0.954006463819341400,\t-0.953991473325071840,\t-0.953976480445823840,\t-0.953961485181634590,\t-0.953946487532541740,\t-0.953931487498582590,\t-0.953916485079794760,\t\n-0.953901480276215690,\t-0.953886473087882990,\t-0.953871463514833980,\t-0.953856451557106410,\t-0.953841437214737460,\t-0.953826420487765110,\t-0.953811401376226780,\t-0.953796379880159970,\t\n-0.953781355999602120,\t-0.953766329734590630,\t-0.953751301085163590,\t-0.953736270051358300,\t-0.953721236633212400,\t-0.953706200830763410,\t-0.953691162644048850,\t-0.953676122073106370,\t\n-0.953661079117973600,\t-0.953646033778688170,\t-0.953630986055287620,\t-0.953615935947809360,\t-0.953600883456291460,\t-0.953585828580771460,\t-0.953570771321286870,\t-0.953555711677875340,\t\n-0.953540649650574500,\t-0.953525585239421770,\t-0.953510518444455340,\t-0.953495449265712610,\t-0.953480377703231240,\t-0.953465303757048970,\t-0.953450227427203530,\t-0.953435148713732360,\t\n-0.953420067616673420,\t-0.953404984136064230,\t-0.953389898271942430,\t-0.953374810024346100,\t-0.953359719393312650,\t-0.953344626378880070,\t-0.953329530981085750,\t-0.953314433199967670,\t\n-0.953299333035563360,\t-0.953284230487910780,\t-0.953269125557047790,\t-0.953254018243011920,\t-0.953238908545841030,\t-0.953223796465572870,\t-0.953208682002245180,\t-0.953193565155895820,\t\n-0.953178445926562530,\t-0.953163324314282860,\t-0.953148200319095080,\t-0.953133073941036860,\t-0.953117945180146030,\t-0.953102814036460240,\t-0.953087680510017470,\t-0.953072544600855220,\t\n-0.953057406309011810,\t-0.953042265634524990,\t-0.953027122577432380,\t-0.953011977137772080,\t-0.952996829315581830,\t-0.952981679110899370,\t-0.952966526523762900,\t-0.952951371554210060,\t\n-0.952936214202278700,\t-0.952921054468006570,\t-0.952905892351432190,\t-0.952890727852592880,\t-0.952875560971526920,\t-0.952860391708271970,\t-0.952845220062865870,\t-0.952830046035346930,\t\n-0.952814869625752790,\t-0.952799690834121530,\t-0.952784509660491110,\t-0.952769326104899390,\t-0.952754140167384360,\t-0.952738951847983960,\t-0.952723761146736180,\t-0.952708568063678980,\t\n-0.952693372598850120,\t-0.952678174752288110,\t-0.952662974524030590,\t-0.952647771914115650,\t-0.952632566922581360,\t-0.952617359549465580,\t-0.952602149794806170,\t-0.952586937658641660,\t\n-0.952571723141009800,\t-0.952556506241948650,\t-0.952541286961496200,\t-0.952526065299690530,\t-0.952510841256569710,\t-0.952495614832171710,\t-0.952480386026534840,\t-0.952465154839696630,\t\n-0.952449921271695810,\t-0.952434685322570140,\t-0.952419446992357810,\t-0.952404206281096900,\t-0.952388963188825490,\t-0.952373717715581320,\t-0.952358469861403160,\t-0.952343219626328840,\t\n-0.952327967010396460,\t-0.952312712013644200,\t-0.952297454636110040,\t-0.952282194877832390,\t-0.952266932738849100,\t-0.952251668219198600,\t-0.952236401318918620,\t-0.952221132038047920,\t\n-0.952205860376624360,\t-0.952190586334686230,\t-0.952175309912271620,\t-0.952160031109418600,\t-0.952144749926165380,\t-0.952129466362550470,\t-0.952114180418611960,\t-0.952098892094387920,\t\n-0.952083601389916770,\t-0.952068308305236480,\t-0.952053012840385460,\t-0.952037714995402020,\t-0.952022414770324230,\t-0.952007112165190290,\t-0.951991807180038400,\t-0.951976499814907280,\t\n-0.951961190069834930,\t-0.951945877944859520,\t-0.951930563440019470,\t-0.951915246555352650,\t-0.951899927290898120,\t-0.951884605646693750,\t-0.951869281622777730,\t-0.951853955219188700,\t\n-0.951838626435964620,\t-0.951823295273144020,\t-0.951807961730765210,\t-0.951792625808866480,\t-0.951777287507486250,\t-0.951761946826662490,\t-0.951746603766434050,\t-0.951731258326839250,\t\n-0.951715910507916150,\t-0.951700560309703400,\t-0.951685207732239190,\t-0.951669852775561710,\t-0.951654495439709810,\t-0.951639135724721810,\t-0.951623773630635880,\t-0.951608409157490450,\t\n-0.951593042305324150,\t-0.951577673074175070,\t-0.951562301464081940,\t-0.951546927475083070,\t-0.951531551107216540,\t-0.951516172360521440,\t-0.951500791235035840,\t-0.951485407730798370,\t\n-0.951470021847847240,\t-0.951454633586221180,\t-0.951439242945958160,\t-0.951423849927097390,\t-0.951408454529677040,\t-0.951393056753735420,\t-0.951377656599311280,\t-0.951362254066442930,\t\n-0.951346849155168980,\t-0.951331441865527870,\t-0.951316032197558230,\t-0.951300620151298130,\t-0.951285205726786880,\t-0.951269788924062440,\t-0.951254369743163690,\t-0.951238948184128910,\t\n-0.951223524246996850,\t-0.951208097931805610,\t-0.951192669238594470,\t-0.951177238167401630,\t-0.951161804718265720,\t-0.951146368891225280,\t-0.951130930686318930,\t-0.951115490103585310,\t\n-0.951100047143062840,\t-0.951084601804790370,\t-0.951069154088806320,\t-0.951053703995149100,\t-0.951038251523857900,\t-0.951022796674971140,\t-0.951007339448527330,\t-0.950991879844565240,\t\n-0.950976417863123040,\t-0.950960953504240260,\t-0.950945486767954980,\t-0.950930017654305960,\t-0.950914546163331930,\t-0.950899072295071530,\t-0.950883596049563410,\t-0.950868117426846400,\t\n-0.950852636426959050,\t-0.950837153049940100,\t-0.950821667295827950,\t-0.950806179164662040,\t-0.950790688656480530,\t-0.950775195771322410,\t-0.950759700509226200,\t-0.950744202870230870,\t\n-0.950728702854374610,\t-0.950713200461696940,\t-0.950697695692236280,\t-0.950682188546031370,\t-0.950666679023121080,\t-0.950651167123543920,\t-0.950635652847338970,\t-0.950620136194544880,\t\n-0.950604617165200390,\t-0.950589095759344140,\t-0.950573571977015310,\t-0.950558045818252650,\t-0.950542517283094910,\t-0.950526986371580840,\t-0.950511453083749290,\t-0.950495917419638790,\t\n-0.950480379379288860,\t-0.950464838962737920,\t-0.950449296170024830,\t-0.950433751001188650,\t-0.950418203456268040,\t-0.950402653535301840,\t-0.950387101238329040,\t-0.950371546565388580,\t\n-0.950355989516518900,\t-0.950340430091759500,\t-0.950324868291149040,\t-0.950309304114726470,\t-0.950293737562530550,\t-0.950278168634600350,\t-0.950262597330974400,\t-0.950247023651692340,\t\n-0.950231447596792680,\t-0.950215869166314290,\t-0.950200288360296350,\t-0.950184705178777620,\t-0.950169119621797180,\t-0.950153531689393870,\t-0.950137941381606790,\t-0.950122348698474890,\t\n-0.950106753640036830,\t-0.950091156206332110,\t-0.950075556397399490,\t-0.950059954213278050,\t-0.950044349654006640,\t-0.950028742719624120,\t-0.950013133410170020,\t-0.949997521725683190,\t\n-0.949981907666202390,\t-0.949966291231766900,\t-0.949950672422415710,\t-0.949935051238187780,\t-0.949919427679122300,\t-0.949903801745258130,\t-0.949888173436634560,\t-0.949872542753290250,\t\n-0.949856909695264820,\t-0.949841274262597120,\t-0.949825636455326360,\t-0.949809996273491390,\t-0.949794353717131390,\t-0.949778708786285340,\t-0.949763061480992770,\t-0.949747411801292520,\t\n-0.949731759747223680,\t-0.949716105318825550,\t-0.949700448516137110,\t-0.949684789339197530,\t-0.949669127788046020,\t-0.949653463862721650,\t-0.949637797563263390,\t-0.949622128889710870,\t\n-0.949606457842103070,\t-0.949590784420479170,\t-0.949575108624878150,\t-0.949559430455339530,\t-0.949543749911901940,\t-0.949528066994605350,\t-0.949512381703488510,\t-0.949496694038590720,\t\n-0.949481003999951170,\t-0.949465311587609160,\t-0.949449616801603890,\t-0.949433919641974540,\t-0.949418220108760420,\t-0.949402518202000500,\t-0.949386813921734520,\t-0.949371107268001560,\t\n-0.949355398240840700,\t-0.949339686840291460,\t-0.949323973066392930,\t-0.949308256919184300,\t-0.949292538398705200,\t-0.949276817504994820,\t-0.949261094238092350,\t-0.949245368598037210,\t\n-0.949229640584868580,\t-0.949213910198625890,\t-0.949198177439348310,\t-0.949182442307075380,\t-0.949166704801846390,\t-0.949150964923700320,\t-0.949135222672677140,\t-0.949119478048815910,\t\n-0.949103731052155950,\t-0.949087981682736670,\t-0.949072229940597150,\t-0.949056475825777350,\t-0.949040719338316240,\t-0.949024960478253470,\t-0.949009199245628320,\t-0.948993435640480110,\t\n-0.948977669662848360,\t-0.948961901312772360,\t-0.948946130590291650,\t-0.948930357495445630,\t-0.948914582028273390,\t-0.948898804188815000,\t-0.948883023977109660,\t-0.948867241393196670,\t\n-0.948851456437115550,\t-0.948835669108905600,\t-0.948819879408606790,\t-0.948804087336258210,\t-0.948788292891899370,\t-0.948772496075569900,\t-0.948756696887309130,\t-0.948740895327156660,\t\n-0.948725091395151930,\t-0.948709285091334450,\t-0.948693476415743750,\t-0.948677665368419130,\t-0.948661851949400560,\t-0.948646036158727450,\t-0.948630217996439100,\t-0.948614397462575360,\t\n-0.948598574557175560,\t-0.948582749280279080,\t-0.948566921631925910,\t-0.948551091612155560,\t-0.948535259221007450,\t-0.948519424458521110,\t-0.948503587324736270,\t-0.948487747819692470,\t\n-0.948471905943429340,\t-0.948456061695986400,\t-0.948440215077403060,\t-0.948424366087719410,\t-0.948408514726974850,\t-0.948392660995209020,\t-0.948376804892461570,\t-0.948360946418772110,\t\n-0.948345085574179960,\t-0.948329222358725300,\t-0.948313356772447660,\t-0.948297488815386670,\t-0.948281618487581970,\t-0.948265745789073190,\t-0.948249870719899970,\t-0.948233993280102160,\t\n-0.948218113469719400,\t-0.948202231288791330,\t-0.948186346737357360,\t-0.948170459815457780,\t-0.948154570523132120,\t-0.948138678860420030,\t-0.948122784827361230,\t-0.948106888423995150,\t\n-0.948090989650362090,\t-0.948075088506501680,\t-0.948059184992453450,\t-0.948043279108257360,\t-0.948027370853953060,\t-0.948011460229580270,\t-0.947995547235178760,\t-0.947979631870788490,\t\n-0.947963714136449200,\t-0.947947794032200200,\t-0.947931871558082120,\t-0.947915946714134260,\t-0.947900019500396600,\t-0.947884089916908870,\t-0.947868157963710600,\t-0.947852223640842210,\t\n-0.947836286948343320,\t-0.947820347886253690,\t-0.947804406454613280,\t-0.947788462653461730,\t-0.947772516482839110,\t-0.947756567942785070,\t-0.947740617033339780,\t-0.947724663754542780,\t\n-0.947708708106433930,\t-0.947692750089053630,\t-0.947676789702441400,\t-0.947660826946637220,\t-0.947644861821680950,\t-0.947628894327612550,\t-0.947612924464471540,\t-0.947596952232298670,\t\n-0.947580977631133250,\t-0.947565000661015460,\t-0.947549021321985150,\t-0.947533039614082420,\t-0.947517055537346890,\t-0.947501069091818860,\t-0.947485080277538080,\t-0.947469089094544410,\t\n-0.947453095542878150,\t-0.947437099622579270,\t-0.947421101333687620,\t-0.947405100676243170,\t-0.947389097650286120,\t-0.947373092255855860,\t-0.947357084492993270,\t-0.947341074361737870,\t\n-0.947325061862129840,\t-0.947309046994209150,\t-0.947293029758015880,\t-0.947277010153590000,\t-0.947260988180971600,\t-0.947244963840200740,\t-0.947228937131317170,\t-0.947212908054361540,\t\n-0.947196876609373680,\t-0.947180842796393590,\t-0.947164806615461320,\t-0.947148768066617190,\t-0.947132727149900710,\t-0.947116683865352860,\t-0.947100638213013160,\t-0.947084590192921900,\t\n-0.947068539805119180,\t-0.947052487049645060,\t-0.947036431926539860,\t-0.947020374435843420,\t-0.947004314577596150,\t-0.946988252351838030,\t-0.946972187758609030,\t-0.946956120797949890,\t\n-0.946940051469900350,\t-0.946923979774500710,\t-0.946907905711791180,\t-0.946891829281811590,\t-0.946875750484602710,\t-0.946859669320204380,\t-0.946843585788656910,\t-0.946827499890000480,\t\n-0.946811411624275400,\t-0.946795320991521640,\t-0.946779227991779710,\t-0.946763132625089600,\t-0.946747034891491700,\t-0.946730934791025990,\t-0.946714832323733100,\t-0.946698727489653220,\t\n-0.946682620288826550,\t-0.946666510721293260,\t-0.946650398787093670,\t-0.946634284486267850,\t-0.946618167818856660,\t-0.946602048784899950,\t-0.946585927384438140,\t-0.946569803617511530,\t\n-0.946553677484160420,\t-0.946537548984425100,\t-0.946521418118345890,\t-0.946505284885963190,\t-0.946489149287316980,\t-0.946473011322448100,\t-0.946456870991396860,\t-0.946440728294203340,\t\n-0.946424583230907950,\t-0.946408435801551210,\t-0.946392286006172980,\t-0.946376133844814340,\t-0.946359979317515480,\t-0.946343822424316580,\t-0.946327663165258180,\t-0.946311501540380570,\t\n-0.946295337549724170,\t-0.946279171193329490,\t-0.946263002471236850,\t-0.946246831383486420,\t-0.946230657930119290,\t-0.946214482111175430,\t-0.946198303926695350,\t-0.946182123376719590,\t\n-0.946165940461288430,\t-0.946149755180442200,\t-0.946133567534221840,\t-0.946117377522667560,\t-0.946101185145819870,\t-0.946084990403719180,\t-0.946068793296406030,\t-0.946052593823920820,\t\n-0.946036391986304180,\t-0.946020187783596640,\t-0.946003981215838510,\t-0.945987772283070290,\t-0.945971560985332750,\t-0.945955347322666400,\t-0.945939131295111760,\t-0.945922912902709130,\t\n-0.945906692145499050,\t-0.945890469023522470,\t-0.945874243536819700,\t-0.945858015685431370,\t-0.945841785469398010,\t-0.945825552888760130,\t-0.945809317943558490,\t-0.945793080633833380,\t\n-0.945776840959625660,\t-0.945760598920975860,\t-0.945744354517924270,\t-0.945728107750512080,\t-0.945711858618779600,\t-0.945695607122767460,\t-0.945679353262516290,\t-0.945663097038066840,\t\n-0.945646838449459180,\t-0.945630577496734850,\t-0.945614314179934020,\t-0.945598048499097450,\t-0.945581780454265770,\t-0.945565510045479620,\t-0.945549237272779730,\t-0.945532962136206630,\t\n-0.945516684635801190,\t-0.945500404771603800,\t-0.945484122543655660,\t-0.945467837951997180,\t-0.945451550996669110,\t-0.945435261677712190,\t-0.945418969995167170,\t-0.945402675949074340,\t\n-0.945386379539475130,\t-0.945370080766409940,\t-0.945353779629919620,\t-0.945337476130044820,\t-0.945321170266826380,\t-0.945304862040304950,\t-0.945288551450521370,\t-0.945272238497516400,\t\n-0.945255923181330560,\t-0.945239605502005250,\t-0.945223285459580900,\t-0.945206963054098240,\t-0.945190638285598350,\t-0.945174311154121760,\t-0.945157981659709100,\t-0.945141649802401780,\t\n-0.945125315582240330,\t-0.945108978999265600,\t-0.945092640053518450,\t-0.945076298745039730,\t-0.945059955073870190,\t-0.945043609040050800,\t-0.945027260643622300,\t-0.945010909884625770,\t\n-0.944994556763101620,\t-0.944978201279091380,\t-0.944961843432635670,\t-0.944945483223775360,\t-0.944929120652551300,\t-0.944912755719004130,\t-0.944896388423175360,\t-0.944880018765105630,\t\n-0.944863646744835920,\t-0.944847272362406950,\t-0.944830895617859930,\t-0.944814516511235600,\t-0.944798135042575040,\t-0.944781751211919100,\t-0.944765365019308860,\t-0.944748976464784840,\t\n-0.944732585548388680,\t-0.944716192270161010,\t-0.944699796630142920,\t-0.944683398628375360,\t-0.944666998264899190,\t-0.944650595539755390,\t-0.944634190452985250,\t-0.944617783004629730,\t\n-0.944601373194729700,\t-0.944584961023326340,\t-0.944568546490460400,\t-0.944552129596173300,\t-0.944535710340505760,\t-0.944519288723498880,\t-0.944502864745193630,\t-0.944486438405631400,\t\n-0.944470009704853180,\t-0.944453578642899800,\t-0.944437145219812590,\t-0.944420709435632500,\t-0.944404271290400280,\t-0.944387830784157670,\t-0.944371387916945530,\t-0.944354942688804930,\t\n-0.944338495099776960,\t-0.944322045149902810,\t-0.944305592839223440,\t-0.944289138167780150,\t-0.944272681135614020,\t-0.944256221742765910,\t-0.944239759989277450,\t-0.944223295875189720,\t\n-0.944206829400543680,\t-0.944190360565380530,\t-0.944173889369741560,\t-0.944157415813667520,\t-0.944140939897200270,\t-0.944124461620380550,\t-0.944107980983249770,\t-0.944091497985849130,\t\n-0.944075012628219580,\t-0.944058524910402650,\t-0.944042034832439310,\t-0.944025542394370860,\t-0.944009047596238600,\t-0.943992550438083500,\t-0.943976050919947180,\t-0.943959549041870850,\t\n-0.943943044803895570,\t-0.943926538206062760,\t-0.943910029248413160,\t-0.943893517930988970,\t-0.943877004253830810,\t-0.943860488216980320,\t-0.943843969820478470,\t-0.943827449064366770,\t\n-0.943810925948686430,\t-0.943794400473478730,\t-0.943777872638785100,\t-0.943761342444646710,\t-0.943744809891104650,\t-0.943728274978201000,\t-0.943711737705976610,\t-0.943695198074472770,\t\n-0.943678656083731030,\t-0.943662111733792660,\t-0.943645565024698650,\t-0.943629015956491070,\t-0.943612464529210990,\t-0.943595910742899720,\t-0.943579354597598670,\t-0.943562796093349140,\t\n-0.943546235230192760,\t-0.943529672008170730,\t-0.943513106427324550,\t-0.943496538487695210,\t-0.943479968189325000,\t-0.943463395532254670,\t-0.943446820516525950,\t-0.943430243142180270,\t\n-0.943413663409258810,\t-0.943397081317802980,\t-0.943380496867854750,\t-0.943363910059455300,\t-0.943347320892646060,\t-0.943330729367468420,\t-0.943314135483964030,\t-0.943297539242174410,\t\n-0.943280940642140740,\t-0.943264339683904880,\t-0.943247736367507810,\t-0.943231130692991690,\t-0.943214522660397740,\t-0.943197912269767570,\t-0.943181299521142490,\t-0.943164684414564250,\t\n-0.943148066950073920,\t-0.943131447127713800,\t-0.943114824947525080,\t-0.943098200409549170,\t-0.943081573513827930,\t-0.943064944260402660,\t-0.943048312649314990,\t-0.943031678680606560,\t\n-0.943015042354318990,\t-0.942998403670493810,\t-0.942981762629172330,\t-0.942965119230396720,\t-0.942948473474208290,\t-0.942931825360648680,\t-0.942915174889759510,\t-0.942898522061582090,\t\n-0.942881866876158710,\t-0.942865209333530680,\t-0.942848549433739520,\t-0.942831887176827090,\t-0.942815222562834900,\t-0.942798555591804700,\t-0.942781886263778010,\t-0.942765214578796700,\t\n-0.942748540536902270,\t-0.942731864138136260,\t-0.942715185382540950,\t-0.942698504270157560,\t-0.942681820801027910,\t-0.942665134975193770,\t-0.942648446792696770,\t-0.942631756253578310,\t\n-0.942615063357880810,\t-0.942598368105645680,\t-0.942581670496914550,\t-0.942564970531729380,\t-0.942548268210131600,\t-0.942531563532163270,\t-0.942514856497866040,\t-0.942498147107281640,\t\n-0.942481435360451590,\t-0.942464721257418200,\t-0.942448004798222990,\t-0.942431285982907820,\t-0.942414564811514420,\t-0.942397841284084660,\t-0.942381115400659940,\t-0.942364387161282790,\t\n-0.942347656565994620,\t-0.942330923614837280,\t-0.942314188307852740,\t-0.942297450645082630,\t-0.942280710626568930,\t-0.942263968252353480,\t-0.942247223522478030,\t-0.942230476436984320,\t\n-0.942213726995914660,\t-0.942196975199310670,\t-0.942180221047214330,\t-0.942163464539667260,\t-0.942146705676711660,\t-0.942129944458389050,\t-0.942113180884741830,\t-0.942096414955811530,\t\n-0.942079646671640350,\t-0.942062876032270010,\t-0.942046103037742500,\t-0.942029327688099660,\t-0.942012549983383570,\t-0.941995769923636090,\t-0.941978987508899190,\t-0.941962202739214490,\t\n-0.941945415614624640,\t-0.941928626135171140,\t-0.941911834300896200,\t-0.941895040111841660,\t-0.941878243568049170,\t-0.941861444669561340,\t-0.941844643416419940,\t-0.941827839808666910,\t\n-0.941811033846344350,\t-0.941794225529494210,\t-0.941777414858158470,\t-0.941760601832379200,\t-0.941743786452198360,\t-0.941726968717658150,\t-0.941710148628800090,\t-0.941693326185667030,\t\n-0.941676501388300720,\t-0.941659674236743130,\t-0.941642844731036320,\t-0.941626012871222380,\t-0.941609178657343170,\t-0.941592342089441310,\t-0.941575503167558560,\t-0.941558661891736980,\t\n-0.941541818262018880,\t-0.941524972278446230,\t-0.941508123941060980,\t-0.941491273249905560,\t-0.941474420205022030,\t-0.941457564806452040,\t-0.941440707054238430,\t-0.941423846948423070,\t\n-0.941406984489048140,\t-0.941390119676155710,\t-0.941373252509787980,\t-0.941356382989986810,\t-0.941339511116794920,\t-0.941322636890254420,\t-0.941305760310407250,\t-0.941288881377295610,\t\n-0.941272000090961790,\t-0.941255116451447990,\t-0.941238230458796400,\t-0.941221342113049310,\t-0.941204451414248470,\t-0.941187558362436840,\t-0.941170662957656280,\t-0.941153765199949090,\t\n-0.941136865089357570,\t-0.941119962625923790,\t-0.941103057809689840,\t-0.941086150640698450,\t-0.941069241118991820,\t-0.941052329244612020,\t-0.941035415017601350,\t-0.941018498438002230,\t\n-0.941001579505856830,\t-0.940984658221207470,\t-0.940967734584096550,\t-0.940950808594566150,\t-0.940933880252658560,\t-0.940916949558416540,\t-0.940900016511882040,\t-0.940883081113097600,\t\n-0.940866143362105390,\t-0.940849203258947610,\t-0.940832260803667110,\t-0.940815315996305860,\t-0.940798368836906370,\t-0.940781419325511070,\t-0.940764467462162140,\t-0.940747513246901980,\t\n-0.940730556679773120,\t-0.940713597760817870,\t-0.940696636490078510,\t-0.940679672867597350,\t-0.940662706893417360,\t-0.940645738567580490,\t-0.940628767890129390,\t-0.940611794861106240,\t\n-0.940594819480553680,\t-0.940577841748513780,\t-0.940560861665029610,\t-0.940543879230143150,\t-0.940526894443897140,\t-0.940509907306333770,\t-0.940492917817495780,\t-0.940475925977425350,\t\n-0.940458931786165240,\t-0.940441935243757630,\t-0.940424936350245040,\t-0.940407935105670330,\t-0.940390931510075800,\t-0.940373925563503970,\t-0.940356917265997350,\t-0.940339906617598360,\t\n-0.940322893618349310,\t-0.940305878268293370,\t-0.940288860567472740,\t-0.940271840515929940,\t-0.940254818113707480,\t-0.940237793360848010,\t-0.940220766257394040,\t-0.940203736803388200,\t\n-0.940186704998873020,\t-0.940169670843890800,\t-0.940152634338484620,\t-0.940135595482696980,\t-0.940118554276570210,\t-0.940101510720147140,\t-0.940084464813470300,\t-0.940067416556581990,\t\n-0.940050365949525400,\t-0.940033312992342940,\t-0.940016257685077130,\t-0.939999200027770710,\t-0.939982140020466320,\t-0.939965077663206580,\t-0.939948012956034140,\t-0.939930945898991620,\t\n-0.939913876492121770,\t-0.939896804735467000,\t-0.939879730629070380,\t-0.939862654172974540,\t-0.939845575367222020,\t-0.939828494211855550,\t-0.939811410706917540,\t-0.939794324852451400,\t\n-0.939777236648499330,\t-0.939760146095104280,\t-0.939743053192308770,\t-0.939725957940155680,\t-0.939708860338687610,\t-0.939691760387947550,\t-0.939674658087977900,\t-0.939657553438821740,\t\n-0.939640446440521360,\t-0.939623337093120180,\t-0.939606225396660610,\t-0.939589111351185500,\t-0.939571994956737600,\t-0.939554876213359760,\t-0.939537755121094390,\t-0.939520631679985010,\t\n-0.939503505890073920,\t-0.939486377751404200,\t-0.939469247264018370,\t-0.939452114427959620,\t-0.939434979243270460,\t-0.939417841709993870,\t-0.939400701828172700,\t-0.939383559597849470,\t\n-0.939366415019067590,\t-0.939349268091869690,\t-0.939332118816298630,\t-0.939314967192397270,\t-0.939297813220208560,\t-0.939280656899774910,\t-0.939263498231139970,\t-0.939246337214346360,\t\n-0.939229173849436830,\t-0.939212008136454330,\t-0.939194840075441850,\t-0.939177669666442340,\t-0.939160496909498540,\t-0.939143321804653540,\t-0.939126144351949970,\t-0.939108964551431340,\t\n-0.939091782403140280,\t-0.939074597907119780,\t-0.939057411063412670,\t-0.939040221872062150,\t-0.939023030333110740,\t-0.939005836446602070,\t-0.938988640212578880,\t-0.938971441631083930,\t\n-0.938954240702160490,\t-0.938937037425851440,\t-0.938919831802199730,\t-0.938902623831248560,\t-0.938885413513040780,\t-0.938868200847619460,\t-0.938850985835027240,\t-0.938833768475307970,\t\n-0.938816548768504290,\t-0.938799326714659150,\t-0.938782102313815760,\t-0.938764875566016730,\t-0.938747646471305930,\t-0.938730415029725980,\t-0.938713181241319970,\t-0.938695945106130970,\t\n-0.938678706624202160,\t-0.938661465795576630,\t-0.938644222620297340,\t-0.938626977098407590,\t-0.938609729229950340,\t-0.938592479014968450,\t-0.938575226453505660,\t-0.938557971545604830,\t\n-0.938540714291309030,\t-0.938523454690661560,\t-0.938506192743705060,\t-0.938488928450483370,\t-0.938471661811039360,\t-0.938454392825416210,\t-0.938437121493657100,\t-0.938419847815805230,\t\n-0.938402571791903670,\t-0.938385293421995730,\t-0.938368012706124470,\t-0.938350729644333300,\t-0.938333444236664870,\t-0.938316156483163240,\t-0.938298866383871170,\t-0.938281573938831940,\t\n-0.938264279148088740,\t-0.938246982011684880,\t-0.938229682529663320,\t-0.938212380702067810,\t-0.938195076528941300,\t-0.938177770010327210,\t-0.938160461146268610,\t-0.938143149936808810,\t\n-0.938125836381991210,\t-0.938108520481859000,\t-0.938091202236455590,\t-0.938073881645823730,\t-0.938056558710007480,\t-0.938039233429049930,\t-0.938021905802994160,\t-0.938004575831883790,\t\n-0.937987243515761900,\t-0.937969908854671570,\t-0.937952571848656770,\t-0.937935232497760560,\t-0.937917890802026260,\t-0.937900546761497260,\t-0.937883200376216970,\t-0.937865851646228600,\t\n-0.937848500571575540,\t-0.937831147152301310,\t-0.937813791388448890,\t-0.937796433280062240,\t-0.937779072827184530,\t-0.937761710029859200,\t-0.937744344888129520,\t-0.937726977402039030,\t\n-0.937709607571630800,\t-0.937692235396948790,\t-0.937674860878036310,\t-0.937657484014936650,\t-0.937640104807693220,\t-0.937622723256349540,\t-0.937605339360949030,\t-0.937587953121535200,\t\n-0.937570564538151460,\t-0.937553173610841340,\t-0.937535780339648020,\t-0.937518384724615460,\t-0.937500986765787080,\t-0.937483586463206060,\t-0.937466183816916150,\t-0.937448778826960540,\t\n-0.937431371493383180,\t-0.937413961816227490,\t-0.937396549795536880,\t-0.937379135431354870,\t-0.937361718723724980,\t-0.937344299672690840,\t-0.937326878278295970,\t-0.937309454540583900,\t\n-0.937292028459598140,\t-0.937274600035381990,\t-0.937257169267979750,\t-0.937239736157434500,\t-0.937222300703789980,\t-0.937204862907089600,\t-0.937187422767377210,\t-0.937169980284695890,\t\n-0.937152535459089830,\t-0.937135088290602550,\t-0.937117638779277560,\t-0.937100186925158400,\t-0.937082732728288790,\t-0.937065276188712380,\t-0.937047817306472800,\t-0.937030356081613560,\t\n-0.937012892514178300,\t-0.936995426604210980,\t-0.936977958351755120,\t-0.936960487756854370,\t-0.936943014819552440,\t-0.936925539539892880,\t-0.936908061917919310,\t-0.936890581953675810,\t\n-0.936873099647205780,\t-0.936855614998553080,\t-0.936838128007761340,\t-0.936820638674874310,\t-0.936803146999935720,\t-0.936785652982989100,\t-0.936768156624078530,\t-0.936750657923247190,\t\n-0.936733156880539490,\t-0.936715653495998830,\t-0.936698147769669200,\t-0.936680639701594100,\t-0.936663129291817390,\t-0.936645616540382590,\t-0.936628101447333990,\t-0.936610584012715240,\t\n-0.936593064236569960,\t-0.936575542118942010,\t-0.936558017659875230,\t-0.936540490859413490,\t-0.936522961717600410,\t-0.936505430234479960,\t-0.936487896410096000,\t-0.936470360244491930,\t\n-0.936452821737712270,\t-0.936435280889800550,\t-0.936417737700800610,\t-0.936400192170756320,\t-0.936382644299711300,\t-0.936365094087709960,\t-0.936347541534795820,\t-0.936329986641012860,\t\n-0.936312429406405020,\t-0.936294869831016060,\t-0.936277307914889830,\t-0.936259743658070410,\t-0.936242177060601640,\t-0.936224608122527390,\t-0.936207036843891390,\t-0.936189463224738060,\t\n-0.936171887265111020,\t-0.936154308965054360,\t-0.936136728324611810,\t-0.936119145343827560,\t-0.936101560022745030,\t-0.936083972361409060,\t-0.936066382359863060,\t-0.936048790018151110,\t\n-0.936031195336317180,\t-0.936013598314405230,\t-0.935995998952459330,\t-0.935978397250523450,\t-0.935960793208641560,\t-0.935943186826857290,\t-0.935925578105215480,\t-0.935907967043759670,\t\n-0.935890353642533920,\t-0.935872737901582430,\t-0.935855119820948930,\t-0.935837499400677400,\t-0.935819876640812450,\t-0.935802251541397730,\t-0.935784624102477420,\t-0.935766994324095600,\t\n-0.935749362206296230,\t-0.935731727749123500,\t-0.935714090952621370,\t-0.935696451816834140,\t-0.935678810341805330,\t-0.935661166527579910,\t-0.935643520374201510,\t-0.935625871881714310,\t\n-0.935608221050162500,\t-0.935590567879590160,\t-0.935572912370041030,\t-0.935555254521559850,\t-0.935537594334190590,\t-0.935519931807977430,\t-0.935502266942964340,\t-0.935484599739195620,\t\n-0.935466930196715450,\t-0.935449258315567910,\t-0.935431584095797190,\t-0.935413907537447580,\t-0.935396228640562820,\t-0.935378547405187890,\t-0.935360863831366520,\t-0.935343177919143010,\t\n-0.935325489668561550,\t-0.935307799079665990,\t-0.935290106152501300,\t-0.935272410887111440,\t-0.935254713283540480,\t-0.935237013341832730,\t-0.935219311062032380,\t-0.935201606444183820,\t\n-0.935183899488331250,\t-0.935166190194518960,\t-0.935148478562791150,\t-0.935130764593191780,\t-0.935113048285765910,\t-0.935095329640557420,\t-0.935077608657610470,\t-0.935059885336969600,\t\n-0.935042159678679100,\t-0.935024431682782710,\t-0.935006701349325730,\t-0.934988968678351910,\t-0.934971233669905640,\t-0.934953496324031350,\t-0.934935756640773220,\t-0.934918014620175760,\t\n-0.934900270262283280,\t-0.934882523567140190,\t-0.934864774534790330,\t-0.934847023165279010,\t-0.934829269458649970,\t-0.934811513414947840,\t-0.934793755034216910,\t-0.934775994316501600,\t\n-0.934758231261845980,\t-0.934740465870295130,\t-0.934722698141893130,\t-0.934704928076684370,\t-0.934687155674713280,\t-0.934669380936024250,\t-0.934651603860661820,\t-0.934633824448670380,\t\n-0.934616042700094350,\t-0.934598258614977920,\t-0.934580472193366150,\t-0.934562683435303130,\t-0.934544892340833490,\t-0.934527098910001630,\t-0.934509303142852080,\t-0.934491505039428790,\t\n-0.934473704599777190,\t-0.934455901823941230,\t-0.934438096711965650,\t-0.934420289263894750,\t-0.934402479479773060,\t-0.934384667359645200,\t-0.934366852903555810,\t-0.934349036111549180,\t\n-0.934331216983669940,\t-0.934313395519962290,\t-0.934295571720471620,\t-0.934277745585241900,\t-0.934259917114317880,\t-0.934242086307744080,\t-0.934224253165564680,\t-0.934206417687824970,\t\n-0.934188579874569270,\t-0.934170739725842080,\t-0.934152897241688150,\t-0.934135052422151890,\t-0.934117205267277930,\t-0.934099355777111010,\t-0.934081503951695760,\t-0.934063649791076700,\t\n-0.934045793295298240,\t-0.934027934464405570,\t-0.934010073298443100,\t-0.933992209797455340,\t-0.933974343961487150,\t-0.933956475790583050,\t-0.933938605284787560,\t-0.933920732444145750,\t\n-0.933902857268702150,\t-0.933884979758501490,\t-0.933867099913588290,\t-0.933849217734007310,\t-0.933831333219803380,\t-0.933813446371021040,\t-0.933795557187705130,\t-0.933777665669899950,\t\n-0.933759771817651020,\t-0.933741875631002530,\t-0.933723977109999440,\t-0.933706076254686380,\t-0.933688173065108210,\t-0.933670267541309220,\t-0.933652359683334820,\t-0.933634449491229650,\t\n-0.933616536965038320,\t-0.933598622104805600,\t-0.933580704910576320,\t-0.933562785382395340,\t-0.933544863520307300,\t-0.933526939324357260,\t-0.933509012794589420,\t-0.933491083931049400,\t\n-0.933473152733781620,\t-0.933455219202831030,\t-0.933437283338242390,\t-0.933419345140060530,\t-0.933401404608329990,\t-0.933383461743096280,\t-0.933365516544403920,\t-0.933347569012297650,\t\n-0.933329619146822550,\t-0.933311666948023480,\t-0.933293712415945160,\t-0.933275755550632580,\t-0.933257796352130580,\t-0.933239834820484120,\t-0.933221870955737720,\t-0.933203904757937020,\t\n-0.933185936227126420,\t-0.933167965363351120,\t-0.933149992166655840,\t-0.933132016637085340,\t-0.933114038774685020,\t-0.933096058579499730,\t-0.933078076051574110,\t-0.933060091190953460,\t\n-0.933042103997682500,\t-0.933024114471806330,\t-0.933006122613369900,\t-0.932988128422418070,\t-0.932970131898996020,\t-0.932952133043148170,\t-0.932934131854920470,\t-0.932916128334357330,\t\n-0.932898122481503940,\t-0.932880114296405160,\t-0.932862103779106170,\t-0.932844090929651590,\t-0.932826075748087180,\t-0.932808058234457450,\t-0.932790038388807590,\t-0.932772016211182660,\t\n-0.932753991701627760,\t-0.932735964860187840,\t-0.932717935686907970,\t-0.932699904181833240,\t-0.932681870345008490,\t-0.932663834176479360,\t-0.932645795676290690,\t-0.932627754844487460,\t\n-0.932609711681114840,\t-0.932591666186218030,\t-0.932573618359841650,\t-0.932555568202031560,\t-0.932537515712832610,\t-0.932519460892289760,\t-0.932501403740448320,\t-0.932483344257353460,\t\n-0.932465282443050160,\t-0.932447218297583590,\t-0.932429151820999060,\t-0.932411083013341300,\t-0.932393011874656170,\t-0.932374938404988420,\t-0.932356862604383440,\t-0.932338784472886320,\t\n-0.932320704010542120,\t-0.932302621217395930,\t-0.932284536093493490,\t-0.932266448638879750,\t-0.932248358853599800,\t-0.932230266737699040,\t-0.932212172291222550,\t-0.932194075514215630,\t\n-0.932175976406723560,\t-0.932157874968791540,\t-0.932139771200464760,\t-0.932121665101788290,\t-0.932103556672807980,\t-0.932085445913568790,\t-0.932067332824116020,\t-0.932049217404494870,\t\n-0.932031099654750390,\t-0.932012979574928460,\t-0.931994857165074020,\t-0.931976732425232490,\t-0.931958605355449170,\t-0.931940475955769340,\t-0.931922344226238210,\t-0.931904210166901280,\t\n-0.931886073777803860,\t-0.931867935058991240,\t-0.931849794010508490,\t-0.931831650632401480,\t-0.931813504924715490,\t-0.931795356887495600,\t-0.931777206520787330,\t-0.931759053824636090,\t\n-0.931740898799086950,\t-0.931722741444185760,\t-0.931704581759977830,\t-0.931686419746508340,\t-0.931668255403822920,\t-0.931650088731966750,\t-0.931631919730985470,\t-0.931613748400924370,\t\n-0.931595574741828860,\t-0.931577398753744010,\t-0.931559220436716130,\t-0.931541039790790060,\t-0.931522856816011550,\t-0.931504671512425770,\t-0.931486483880078380,\t-0.931468293919014420,\t\n-0.931450101629280100,\t-0.931431907010920490,\t-0.931413710063981100,\t-0.931395510788507460,\t-0.931377309184544980,\t-0.931359105252139270,\t-0.931340898991335870,\t-0.931322690402180190,\t\n-0.931304479484717400,\t-0.931286266238993800,\t-0.931268050665054470,\t-0.931249832762945040,\t-0.931231612532711030,\t-0.931213389974397950,\t-0.931195165088051110,\t-0.931176937873716690,\t\n-0.931158708331439990,\t-0.931140476461266410,\t-0.931122242263241700,\t-0.931104005737411370,\t-0.931085766883821050,\t-0.931067525702516270,\t-0.931049282193542660,\t-0.931031036356945950,\t\n-0.931012788192771220,\t-0.930994537701064880,\t-0.930976284881872120,\t-0.930958029735238780,\t-0.930939772261210270,\t-0.930921512459832120,\t-0.930903250331150400,\t-0.930884985875210620,\t\n-0.930866719092058310,\t-0.930848449981739210,\t-0.930830178544299060,\t-0.930811904779783370,\t-0.930793628688238010,\t-0.930775350269708590,\t-0.930757069524240640,\t-0.930738786451879800,\t\n-0.930720501052672340,\t-0.930702213326663590,\t-0.930683923273899370,\t-0.930665630894425220,\t-0.930647336188287100,\t-0.930629039155530300,\t-0.930610739796201240,\t-0.930592438110345200,\t\n-0.930574134098008270,\t-0.930555827759235840,\t-0.930537519094073890,\t-0.930519208102568160,\t-0.930500894784764390,\t-0.930482579140708420,\t-0.930464261170445670,\t-0.930445940874022550,\t\n-0.930427618251484570,\t-0.930409293302877580,\t-0.930390966028247330,\t-0.930372636427639790,\t-0.930354304501100240,\t-0.930335970248675200,\t-0.930317633670410320,\t-0.930299294766351310,\t\n-0.930280953536544050,\t-0.930262609981034380,\t-0.930244264099868270,\t-0.930225915893091450,\t-0.930207565360749890,\t-0.930189212502889110,\t-0.930170857319555510,\t-0.930152499810794840,\t\n-0.930134139976652950,\t-0.930115777817175690,\t-0.930097413332408920,\t-0.930079046522398370,\t-0.930060677387190450,\t-0.930042305926830900,\t-0.930023932141365580,\t-0.930005556030840450,\t\n-0.929987177595301360,\t-0.929968796834794390,\t-0.929950413749365380,\t-0.929932028339060410,\t-0.929913640603925340,\t-0.929895250544005790,\t-0.929876858159348510,\t-0.929858463449999010,\t\n-0.929840066416003360,\t-0.929821667057407650,\t-0.929803265374257390,\t-0.929784861366599210,\t-0.929766455034478970,\t-0.929748046377942620,\t-0.929729635397036120,\t-0.929711222091805460,\t\n-0.929692806462296790,\t-0.929674388508556100,\t-0.929655968230629460,\t-0.929637545628562930,\t-0.929619120702402160,\t-0.929600693452193870,\t-0.929582263877983930,\t-0.929563831979818290,\t\n-0.929545397757743140,\t-0.929526961211804450,\t-0.929508522342048060,\t-0.929490081148520610,\t-0.929471637631267940,\t-0.929453191790336250,\t-0.929434743625771610,\t-0.929416293137620090,\t\n-0.929397840325927760,\t-0.929379385190740930,\t-0.929360927732105660,\t-0.929342467950067590,\t-0.929324005844673780,\t-0.929305541415969990,\t-0.929287074664002290,\t-0.929268605588816850,\t\n-0.929250134190459990,\t-0.929231660468977430,\t-0.929213184424416140,\t-0.929194706056821750,\t-0.929176225366240670,\t-0.929157742352718970,\t-0.929139257016302960,\t-0.929120769357038800,\t\n-0.929102279374972690,\t-0.929083787070150930,\t-0.929065292442619370,\t-0.929046795492424860,\t-0.929028296219613470,\t-0.929009794624231280,\t-0.928991290706324580,\t-0.928972784465939670,\t\n-0.928954275903122410,\t-0.928935765017919860,\t-0.928917251810377880,\t-0.928898736280542760,\t-0.928880218428460800,\t-0.928861698254178300,\t-0.928843175757741560,\t-0.928824650939196860,\t\n-0.928806123798590620,\t-0.928787594335968910,\t-0.928769062551378030,\t-0.928750528444864720,\t-0.928731992016475160,\t-0.928713453266255650,\t-0.928694912194252490,\t-0.928676368800511630,\t\n-0.928657823085080270,\t-0.928639275048004360,\t-0.928620724689330210,\t-0.928602172009104220,\t-0.928583617007372910,\t-0.928565059684182460,\t-0.928546500039579390,\t-0.928527938073610000,\t\n-0.928509373786320920,\t-0.928490807177758000,\t-0.928472238247968320,\t-0.928453666996998160,\t-0.928435093424893720,\t-0.928416517531701620,\t-0.928397939317467950,\t-0.928379358782239650,\t\n-0.928360775926063030,\t-0.928342190748984500,\t-0.928323603251050340,\t-0.928305013432307310,\t-0.928286421292801700,\t-0.928267826832580020,\t-0.928249230051688800,\t-0.928230630950174550,\t\n-0.928212029528083350,\t-0.928193425785462380,\t-0.928174819722357940,\t-0.928156211338816320,\t-0.928137600634884260,\t-0.928118987610608180,\t-0.928100372266034260,\t-0.928081754601209790,\t\n-0.928063134616180950,\t-0.928044512310994160,\t-0.928025887685696160,\t-0.928007260740333460,\t-0.927988631474952700,\t-0.927969999889600160,\t-0.927951365984322820,\t-0.927932729759166630,\t\n-0.927914091214178890,\t-0.927895450349406010,\t-0.927876807164894510,\t-0.927858161660690910,\t-0.927839513836841930,\t-0.927820863693393890,\t-0.927802211230394080,\t-0.927783556447888570,\t\n-0.927764899345924320,\t-0.927746239924547740,\t-0.927727578183805580,\t-0.927708914123744450,\t-0.927690247744411110,\t-0.927671579045852070,\t-0.927652908028114180,\t-0.927634234691243620,\t\n-0.927615559035287810,\t-0.927596881060293030,\t-0.927578200766306150,\t-0.927559518153373790,\t-0.927540833221542240,\t-0.927522145970858910,\t-0.927503456401370220,\t-0.927484764513123010,\t\n-0.927466070306163790,\t-0.927447373780539430,\t-0.927428674936296550,\t-0.927409973773482110,\t-0.927391270292142630,\t-0.927372564492325080,\t-0.927353856374075750,\t-0.927335145937442040,\t\n-0.927316433182470480,\t-0.927297718109207910,\t-0.927279000717700970,\t-0.927260281007996290,\t-0.927241558980141160,\t-0.927222834634182200,\t-0.927204107970166060,\t-0.927185378988139690,\t\n-0.927166647688149940,\t-0.927147914070243550,\t-0.927129178134467270,\t-0.927110439880868160,\t-0.927091699309492870,\t-0.927072956420388120,\t-0.927054211213601210,\t-0.927035463689178770,\t\n-0.927016713847167660,\t-0.926997961687614840,\t-0.926979207210567040,\t-0.926960450416070890,\t-0.926941691304174030,\t-0.926922929874922860,\t-0.926904166128364460,\t-0.926885400064545560,\t\n-0.926866631683513240,\t-0.926847860985314240,\t-0.926829087969995640,\t-0.926810312637604270,\t-0.926791534988186890,\t-0.926772755021790910,\t-0.926753972738463050,\t-0.926735188138250400,\t\n-0.926716401221199580,\t-0.926697611987357890,\t-0.926678820436771740,\t-0.926660026569488980,\t-0.926641230385556120,\t-0.926622431885020140,\t-0.926603631067928090,\t-0.926584827934326950,\t\n-0.926566022484263780,\t-0.926547214717785560,\t-0.926528404634939350,\t-0.926509592235771670,\t-0.926490777520330380,\t-0.926471960488662210,\t-0.926453141140814120,\t-0.926434319476833190,\t\n-0.926415495496766380,\t-0.926396669200660550,\t-0.926377840588563430,\t-0.926359009660521650,\t-0.926340176416582390,\t-0.926321340856792630,\t-0.926302502981199540,\t-0.926283662789850190,\t\n-0.926264820282791670,\t-0.926245975460071150,\t-0.926227128321735590,\t-0.926208278867831970,\t-0.926189427098408010,\t-0.926170573013510470,\t-0.926151716613186400,\t-0.926132857897483120,\t\n-0.926113996866447350,\t-0.926095133520126960,\t-0.926076267858568670,\t-0.926057399881819790,\t-0.926038529589927270,\t-0.926019656982938530,\t-0.926000782060900640,\t-0.925981904823860780,\t\n-0.925963025271866140,\t-0.925944143404964000,\t-0.925925259223201120,\t-0.925906372726625460,\t-0.925887483915283860,\t-0.925868592789223510,\t-0.925849699348491710,\t-0.925830803593135630,\t\n-0.925811905523202250,\t-0.925793005138739410,\t-0.925774102439794080,\t-0.925755197426413550,\t-0.925736290098645000,\t-0.925717380456535620,\t-0.925698468500132820,\t-0.925679554229483890,\t\n-0.925660637644636130,\t-0.925641718745636390,\t-0.925622797532532630,\t-0.925603874005371920,\t-0.925584948164201560,\t-0.925566020009068850,\t-0.925547089540021070,\t-0.925528156757105200,\t\n-0.925509221660369310,\t-0.925490284249860240,\t-0.925471344525625630,\t-0.925452402487712540,\t-0.925433458136168510,\t-0.925414511471040810,\t-0.925395562492376870,\t-0.925376611200223960,\t\n-0.925357657594629180,\t-0.925338701675640700,\t-0.925319743443305360,\t-0.925300782897670700,\t-0.925281820038784120,\t-0.925262854866692910,\t-0.925243887381444250,\t-0.925224917583086230,\t\n-0.925205945471666010,\t-0.925186971047230800,\t-0.925167994309828210,\t-0.925149015259505550,\t-0.925130033896310430,\t-0.925111050220290280,\t-0.925092064231492370,\t-0.925073075929964350,\t\n-0.925054085315753390,\t-0.925035092388907470,\t-0.925016097149473860,\t-0.924997099597499980,\t-0.924978099733033350,\t-0.924959097556121160,\t-0.924940093066811580,\t-0.924921086265151680,\t\n-0.924902077151189110,\t-0.924883065724971360,\t-0.924864051986545980,\t-0.924845035935960460,\t-0.924826017573262330,\t-0.924806996898499100,\t-0.924787973911718410,\t-0.924768948612967550,\t\n-0.924749921002294470,\t-0.924730891079746710,\t-0.924711858845371770,\t-0.924692824299217060,\t-0.924673787441330330,\t-0.924654748271758860,\t-0.924635706790550850,\t-0.924616662997753470,\t\n-0.924597616893414460,\t-0.924578568477581460,\t-0.924559517750302100,\t-0.924540464711623880,\t-0.924521409361594440,\t-0.924502351700261520,\t-0.924483291727672410,\t-0.924464229443875410,\t\n-0.924445164848917810,\t-0.924426097942847250,\t-0.924407028725711570,\t-0.924387957197558170,\t-0.924368883358434700,\t-0.924349807208389220,\t-0.924330728747469240,\t-0.924311647975722520,\t\n-0.924292564893196670,\t-0.924273479499939320,\t-0.924254391795998330,\t-0.924235301781421440,\t-0.924216209456256150,\t-0.924197114820550110,\t-0.924178017874351500,\t-0.924158918617707940,\t\n-0.924139817050667060,\t-0.924120713173276710,\t-0.924101606985584520,\t-0.924082498487637900,\t-0.924063387679485480,\t-0.924044274561174550,\t-0.924025159132752960,\t-0.924006041394268450,\t\n-0.923986921345768760,\t-0.923967798987301860,\t-0.923948674318915470,\t-0.923929547340657350,\t-0.923910418052575340,\t-0.923891286454717080,\t-0.923872152547130840,\t-0.923853016329864160,\t\n-0.923833877802965000,\t-0.923814736966481200,\t-0.923795593820460170,\t-0.923776448364950430,\t-0.923757300599999720,\t-0.923738150525655670,\t-0.923718998141966230,\t-0.923699843448979370,\t\n-0.923680686446742840,\t-0.923661527135304580,\t-0.923642365514712460,\t-0.923623201585014540,\t-0.923604035346258230,\t-0.923584866798492170,\t-0.923565695941763960,\t-0.923546522776121480,\t\n-0.923527347301612680,\t-0.923508169518285630,\t-0.923488989426187620,\t-0.923469807025367630,\t-0.923450622315873050,\t-0.923431435297751960,\t-0.923412245971052310,\t-0.923393054335821970,\t\n-0.923373860392109000,\t-0.923354664139961480,\t-0.923335465579427140,\t-0.923316264710553950,\t-0.923297061533390310,\t-0.923277856047984070,\t-0.923258648254383200,\t-0.923239438152635760,\t\n-0.923220225742789610,\t-0.923201011024892600,\t-0.923181793998993470,\t-0.923162574665139850,\t-0.923143353023379690,\t-0.923124129073761180,\t-0.923104902816332400,\t-0.923085674251141410,\t\n-0.923066443378236070,\t-0.923047210197664780,\t-0.923027974709475060,\t-0.923008736913715770,\t-0.922989496810434520,\t-0.922970254399679720,\t-0.922951009681499120,\t-0.922931762655941120,\t\n-0.922912513323053240,\t-0.922893261682884550,\t-0.922874007735482670,\t-0.922854751480895690,\t-0.922835492919171880,\t-0.922816232050359340,\t-0.922796968874506240,\t-0.922777703391660760,\t\n-0.922758435601870990,\t-0.922739165505185090,\t-0.922719893101650920,\t-0.922700618391317450,\t-0.922681341374232300,\t-0.922662062050443880,\t-0.922642780420000360,\t-0.922623496482949500,\t\n-0.922604210239340250,\t-0.922584921689220460,\t-0.922565630832638320,\t-0.922546337669642110,\t-0.922527042200280150,\t-0.922507744424600480,\t-0.922488444342651540,\t-0.922469141954481490,\t\n-0.922449837260138520,\t-0.922430530259670590,\t-0.922411220953126780,\t-0.922391909340554820,\t-0.922372595422003120,\t-0.922353279197519970,\t-0.922333960667153560,\t-0.922314639830951970,\t\n-0.922295316688964140,\t-0.922275991241237940,\t-0.922256663487821760,\t-0.922237333428764020,\t-0.922218001064112890,\t-0.922198666393916680,\t-0.922179329418223890,\t-0.922159990137082830,\t\n-0.922140648550541340,\t-0.922121304658648610,\t-0.922101958461452600,\t-0.922082609959001710,\t-0.922063259151344350,\t-0.922043906038528820,\t-0.922024550620603180,\t-0.922005192897616510,\t\n-0.921985832869616770,\t-0.921966470536652480,\t-0.921947105898772050,\t-0.921927738956023870,\t-0.921908369708456350,\t-0.921888998156117910,\t-0.921869624299056940,\t-0.921850248137321530,\t\n-0.921830869670960950,\t-0.921811488900023070,\t-0.921792105824556620,\t-0.921772720444609780,\t-0.921753332760231190,\t-0.921733942771468920,\t-0.921714550478372140,\t-0.921695155880988940,\t\n-0.921675758979367930,\t-0.921656359773557420,\t-0.921636958263606140,\t-0.921617554449562390,\t-0.921598148331474690,\t-0.921578739909391760,\t-0.921559329183361920,\t-0.921539916153433340,\t\n-0.921520500819655420,\t-0.921501083182076130,\t-0.921481663240744210,\t-0.921462240995708170,\t-0.921442816447016200,\t-0.921423389594717480,\t-0.921403960438860190,\t-0.921384528979493190,\t\n-0.921365095216664760,\t-0.921345659150423550,\t-0.921326220780818270,\t-0.921306780107897460,\t-0.921287337131709630,\t-0.921267891852303510,\t-0.921248444269727180,\t-0.921228994384030280,\t\n-0.921209542195260740,\t-0.921190087703467440,\t-0.921170630908698880,\t-0.921151171811003810,\t-0.921131710410430400,\t-0.921112246707028070,\t-0.921092780700845100,\t-0.921073312391930240,\t\n-0.921053841780332010,\t-0.921034368866099240,\t-0.921014893649280570,\t-0.920995416129924640,\t-0.920975936308080170,\t-0.920956454183795570,\t-0.920936969757120030,\t-0.920917483028102170,\t\n-0.920897993996790620,\t-0.920878502663234010,\t-0.920859009027481190,\t-0.920839513089580560,\t-0.920820014849581430,\t-0.920800514307532290,\t-0.920781011463481790,\t-0.920761506317478880,\t\n-0.920741998869572090,\t-0.920722489119810360,\t-0.920702977068242450,\t-0.920683462714916970,\t-0.920663946059882670,\t-0.920644427103188720,\t-0.920624905844883660,\t-0.920605382285016430,\t\n-0.920585856423635770,\t-0.920566328260790430,\t-0.920546797796528820,\t-0.920527265030900650,\t-0.920507729963954360,\t-0.920488192595738770,\t-0.920468652926302640,\t-0.920449110955694820,\t\n-0.920429566683964250,\t-0.920410020111159800,\t-0.920390471237330310,\t-0.920370920062524630,\t-0.920351366586791290,\t-0.920331810810179900,\t-0.920312252732738980,\t-0.920292692354517490,\t\n-0.920273129675564180,\t-0.920253564695927670,\t-0.920233997415657700,\t-0.920214427834802670,\t-0.920194855953411550,\t-0.920175281771533400,\t-0.920155705289216860,\t-0.920136126506511220,\t\n-0.920116545423465220,\t-0.920096962040127810,\t-0.920077376356548070,\t-0.920057788372774520,\t-0.920038198088856780,\t-0.920018605504843600,\t-0.919999010620783930,\t-0.919979413436726730,\t\n-0.919959813952720970,\t-0.919940212168815390,\t-0.919920608085059490,\t-0.919901001701502240,\t-0.919881393018192380,\t-0.919861782035178990,\t-0.919842168752511240,\t-0.919822553170238090,\t\n-0.919802935288408510,\t-0.919783315107071560,\t-0.919763692626276000,\t-0.919744067846071540,\t-0.919724440766506950,\t-0.919704811387631270,\t-0.919685179709493590,\t-0.919665545732142880,\t\n-0.919645909455627960,\t-0.919626270879998600,\t-0.919606630005303630,\t-0.919586986831592120,\t-0.919567341358913050,\t-0.919547693587315700,\t-0.919528043516849030,\t-0.919508391147562330,\t\n-0.919488736479504580,\t-0.919469079512724720,\t-0.919449420247272390,\t-0.919429758683196650,\t-0.919410094820546480,\t-0.919390428659371040,\t-0.919370760199719530,\t-0.919351089441640790,\t\n-0.919331416385184560,\t-0.919311741030399920,\t-0.919292063377335930,\t-0.919272383426041780,\t-0.919252701176566660,\t-0.919233016628959730,\t-0.919213329783270310,\t-0.919193640639547560,\t\n-0.919173949197840680,\t-0.919154255458198620,\t-0.919134559420671240,\t-0.919114861085307490,\t-0.919095160452156560,\t-0.919075457521267740,\t-0.919055752292689990,\t-0.919036044766473160,\t\n-0.919016334942666100,\t-0.918996622821318330,\t-0.918976908402479030,\t-0.918957191686197380,\t-0.918937472672522790,\t-0.918917751361504550,\t-0.918898027753191850,\t-0.918878301847634190,\t\n-0.918858573644880330,\t-0.918838843144980430,\t-0.918819110347983470,\t-0.918799375253938620,\t-0.918779637862895400,\t-0.918759898174903110,\t-0.918740156190010590,\t-0.918720411908268140,\t\n-0.918700665329724720,\t-0.918680916454429510,\t-0.918661165282432140,\t-0.918641411813781780,\t-0.918621656048527860,\t-0.918601897986719870,\t-0.918582137628407120,\t-0.918562374973638570,\t\n-0.918542610022464620,\t-0.918522842774934010,\t-0.918503073231096370,\t-0.918483301391000980,\t-0.918463527254697380,\t-0.918443750822234620,\t-0.918423972093662780,\t-0.918404191069031040,\t\n-0.918384407748388810,\t-0.918364622131785600,\t-0.918344834219270820,\t-0.918325044010893880,\t-0.918305251506704390,\t-0.918285456706751770,\t-0.918265659611085190,\t-0.918245860219754850,\t\n-0.918226058532809700,\t-0.918206254550299580,\t-0.918186448272273690,\t-0.918166639698781760,\t-0.918146828829872860,\t-0.918127015665597180,\t-0.918107200206004110,\t-0.918087382451142850,\t\n-0.918067562401063240,\t-0.918047740055814800,\t-0.918027915415446930,\t-0.918008088480009250,\t-0.917988259249551300,\t-0.917968427724122790,\t-0.917948593903772810,\t-0.917928757788551760,\t\n-0.917908919378508830,\t-0.917889078673693510,\t-0.917869235674155570,\t-0.917849390379944170,\t-0.917829542791109620,\t-0.917809692907701200,\t-0.917789840729768550,\t-0.917769986257361390,\t\n-0.917750129490529140,\t-0.917730270429321650,\t-0.917710409073788420,\t-0.917690545423979210,\t-0.917670679479943740,\t-0.917650811241731090,\t-0.917630940709391770,\t-0.917611067882975080,\t\n-0.917591192762530760,\t-0.917571315348108430,\t-0.917551435639757940,\t-0.917531553637528360,\t-0.917511669341470330,\t-0.917491782751633010,\t-0.917471893868066380,\t-0.917452002690819950,\t\n-0.917432109219943560,\t-0.917412213455486850,\t-0.917392315397499550,\t-0.917372415046031510,\t-0.917352512401132140,\t-0.917332607462851830,\t-0.917312700231239900,\t-0.917292790706346280,\t\n-0.917272878888220730,\t-0.917252964776912980,\t-0.917233048372472440,\t-0.917213129674949610,\t-0.917193208684393910,\t-0.917173285400855300,\t-0.917153359824383400,\t-0.917133431955028170,\t\n-0.917113501792839240,\t-0.917093569337866680,\t-0.917073634590160110,\t-0.917053697549769180,\t-0.917033758216744270,\t-0.917013816591135010,\t-0.916993872672991260,\t-0.916973926462362750,\t\n-0.916953977959299450,\t-0.916934027163850860,\t-0.916914074076067620,\t-0.916894118695999130,\t-0.916874161023695340,\t-0.916854201059206120,\t-0.916834238802581410,\t-0.916814274253871190,\t\n-0.916794307413125180,\t-0.916774338280393450,\t-0.916754366855725870,\t-0.916734393139172040,\t-0.916714417130782500,\t-0.916694438830606970,\t-0.916674458238695310,\t-0.916654475355097590,\t\n-0.916634490179863310,\t-0.916614502713043120,\t-0.916594512954686640,\t-0.916574520904843930,\t-0.916554526563564950,\t-0.916534529930899570,\t-0.916514531006897950,\t-0.916494529791609950,\t\n-0.916474526285085630,\t-0.916454520487374970,\t-0.916434512398527690,\t-0.916414502018594530,\t-0.916394489347625020,\t-0.916374474385669320,\t-0.916354457132777520,\t-0.916334437588999130,\t\n-0.916314415754384990,\t-0.916294391628984850,\t-0.916274365212848770,\t-0.916254336506026720,\t-0.916234305508568880,\t-0.916214272220525210,\t-0.916194236641945880,\t-0.916174198772880980,\t\n-0.916154158613380560,\t-0.916134116163494380,\t-0.916114071423273280,\t-0.916094024392766990,\t-0.916073975072025700,\t-0.916053923461099480,\t-0.916033869560038290,\t-0.916013813368892200,\t\n-0.915993754887711950,\t-0.915973694116547280,\t-0.915953631055448360,\t-0.915933565704465380,\t-0.915913498063648520,\t-0.915893428133047860,\t-0.915873355912713680,\t-0.915853281402696060,\t\n-0.915833204603044850,\t-0.915813125513811110,\t-0.915793044135044480,\t-0.915772960466795240,\t-0.915752874509113580,\t-0.915732786262049680,\t-0.915712695725653610,\t-0.915692602899976120,\t\n-0.915672507785067040,\t-0.915652410380976670,\t-0.915632310687755410,\t-0.915612208705453230,\t-0.915592104434120650,\t-0.915571997873807720,\t-0.915551889024564860,\t-0.915531777886441910,\t\n-0.915511664459489840,\t-0.915491548743758710,\t-0.915471430739298600,\t-0.915451310446159900,\t-0.915431187864393040,\t-0.915411062994047730,\t-0.915390935835175170,\t-0.915370806387825310,\t\n-0.915350674652048340,\t-0.915330540627894760,\t-0.915310404315414770,\t-0.915290265714658880,\t-0.915270124825677270,\t-0.915249981648520340,\t-0.915229836183238390,\t-0.915209688429881600,\t\n-0.915189538388500810,\t-0.915169386059146330,\t-0.915149231441868330,\t-0.915129074536717210,\t-0.915108915343743060,\t-0.915088753862997040,\t-0.915068590094529120,\t-0.915048424038389600,\t\n-0.915028255694629200,\t-0.915008085063298000,\t-0.914987912144446750,\t-0.914967736938125610,\t-0.914947559444385110,\t-0.914927379663275750,\t-0.914907197594847620,\t-0.914887013239151890,\t\n-0.914866826596238520,\t-0.914846637666158150,\t-0.914826446448961160,\t-0.914806252944698080,\t-0.914786057153418990,\t-0.914765859075175050,\t-0.914745658710016560,\t-0.914725456057993820,\t\n-0.914705251119157570,\t-0.914685043893558090,\t-0.914664834381246130,\t-0.914644622582271970,\t-0.914624408496686250,\t-0.914604192124539140,\t-0.914583973465882050,\t-0.914563752520764830,\t\n-0.914543529289238430,\t-0.914523303771353050,\t-0.914503075967159520,\t-0.914482845876707810,\t-0.914462613500049430,\t-0.914442378837234560,\t-0.914422141888313610,\t-0.914401902653337430,\t\n-0.914381661132356420,\t-0.914361417325421310,\t-0.914341171232582630,\t-0.914320922853891100,\t-0.914300672189396810,\t-0.914280419239151150,\t-0.914260164003204530,\t-0.914239906481607580,\t\n-0.914219646674410690,\t-0.914199384581664830,\t-0.914179120203420070,\t-0.914158853539727810,\t-0.914138584590638570,\t-0.914118313356202750,\t-0.914098039836471200,\t-0.914077764031494540,\t\n-0.914057485941323410,\t-0.914037205566008650,\t-0.914016922905600880,\t-0.913996637960150740,\t-0.913976350729708730,\t-0.913956061214326150,\t-0.913935769414053410,\t-0.913915475328941240,\t\n-0.913895178959040380,\t-0.913874880304401230,\t-0.913854579365075190,\t-0.913834276141112790,\t-0.913813970632564640,\t-0.913793662839481600,\t-0.913773352761914400,\t-0.913753040399913790,\t\n-0.913732725753530590,\t-0.913712408822815680,\t-0.913692089607819560,\t-0.913671768108592960,\t-0.913651444325187300,\t-0.913631118257653090,\t-0.913610789906040940,\t-0.913590459270401940,\t\n-0.913570126350786720,\t-0.913549791147245880,\t-0.913529453659830850,\t-0.913509113888592240,\t-0.913488771833580790,\t-0.913468427494847470,\t-0.913448080872443110,\t-0.913427731966418470,\t\n-0.913407380776824480,\t-0.913387027303712130,\t-0.913366671547131800,\t-0.913346313507135240,\t-0.913325953183772740,\t-0.913305590577095480,\t-0.913285225687154200,\t-0.913264858513999860,\t\n-0.913244489057682960,\t-0.913224117318255260,\t-0.913203743295767260,\t-0.913183366990269920,\t-0.913162988401814200,\t-0.913142607530450960,\t-0.913122224376231140,\t-0.913101838939205820,\t\n-0.913081451219425850,\t-0.913061061216941970,\t-0.913040668931805800,\t-0.913020274364067850,\t-0.912999877513779310,\t-0.912979478380991140,\t-0.912959076965754180,\t-0.912938673268119170,\t\n-0.912918267288137850,\t-0.912897859025860850,\t-0.912877448481339230,\t-0.912857035654623950,\t-0.912836620545766090,\t-0.912816203154816710,\t-0.912795783481826770,\t-0.912775361526847460,\t\n-0.912754937289929620,\t-0.912734510771124220,\t-0.912714081970482760,\t-0.912693650888056210,\t-0.912673217523895520,\t-0.912652781878051770,\t-0.912632343950575690,\t-0.912611903741519130,\t\n-0.912591461250932710,\t-0.912571016478867740,\t-0.912550569425375270,\t-0.912530120090506270,\t-0.912509668474312030,\t-0.912489214576843620,\t-0.912468758398152110,\t-0.912448299938288800,\t\n-0.912427839197304300,\t-0.912407376175250700,\t-0.912386910872178490,\t-0.912366443288139100,\t-0.912345973423183580,\t-0.912325501277363120,\t-0.912305026850728560,\t-0.912284550143331760,\t\n-0.912264071155223570,\t-0.912243589886455260,\t-0.912223106337078040,\t-0.912202620507142960,\t-0.912182132396701320,\t-0.912161642005804410,\t-0.912141149334503300,\t-0.912120654382849060,\t\n-0.912100157150893430,\t-0.912079657638687480,\t-0.912059155846282390,\t-0.912038651773729450,\t-0.912018145421079840,\t-0.911997636788384410,\t-0.911977125875695350,\t-0.911956612683063490,\t\n-0.911936097210540030,\t-0.911915579458176470,\t-0.911895059426023780,\t-0.911874537114133580,\t-0.911854012522556930,\t-0.911833485651345370,\t-0.911812956500549610,\t-0.911792425070221960,\t\n-0.911771891360413140,\t-0.911751355371174580,\t-0.911730817102557660,\t-0.911710276554613670,\t-0.911689733727393700,\t-0.911669188620949700,\t-0.911648641235332850,\t-0.911628091570594210,\t\n-0.911607539626785420,\t-0.911586985403957770,\t-0.911566428902162770,\t-0.911545870121451610,\t-0.911525309061875790,\t-0.911504745723486610,\t-0.911484180106335250,\t-0.911463612210473890,\t\n-0.911443042035953390,\t-0.911422469582825360,\t-0.911401894851141090,\t-0.911381317840951780,\t-0.911360738552309590,\t-0.911340156985265380,\t-0.911319573139870890,\t-0.911298987016177510,\t\n-0.911278398614236540,\t-0.911257807934099720,\t-0.911237214975818330,\t-0.911216619739443790,\t-0.911196022225027820,\t-0.911175422432621400,\t-0.911154820362276800,\t-0.911134216014045210,\t\n-0.911113609387977920,\t-0.911093000484126670,\t-0.911072389302542970,\t-0.911051775843277900,\t-0.911031160106383740,\t-0.911010542091911790,\t-0.910989921799913340,\t-0.910969299230440120,\t\n-0.910948674383543770,\t-0.910928047259275560,\t-0.910907417857687360,\t-0.910886786178830570,\t-0.910866152222756460,\t-0.910845515989517350,\t-0.910824877479164410,\t-0.910804236691749260,\t\n-0.910783593627323530,\t-0.910762948285938840,\t-0.910742300667646390,\t-0.910721650772498670,\t-0.910700998600546650,\t-0.910680344151842290,\t-0.910659687426436990,\t-0.910639028424382380,\t\n-0.910618367145730300,\t-0.910597703590532380,\t-0.910577037758840020,\t-0.910556369650704860,\t-0.910535699266179050,\t-0.910515026605314030,\t-0.910494351668161510,\t-0.910473674454773010,\t\n-0.910452994965200380,\t-0.910432313199494800,\t-0.910411629157708900,\t-0.910390942839893860,\t-0.910370254246101520,\t-0.910349563376383510,\t-0.910328870230791680,\t-0.910308174809377530,\t\n-0.910287477112193040,\t-0.910266777139289830,\t-0.910246074890719740,\t-0.910225370366534060,\t-0.910204663566785310,\t-0.910183954491524890,\t-0.910163243140804550,\t-0.910142529514676110,\t\n-0.910121813613191000,\t-0.910101095436401720,\t-0.910080374984359790,\t-0.910059652257116820,\t-0.910038927254724790,\t-0.910018199977235430,\t-0.909997470424700470,\t-0.909976738597171870,\t\n-0.909956004494701490,\t-0.909935268117341050,\t-0.909914529465142170,\t-0.909893788538157170,\t-0.909873045336437870,\t-0.909852299860035800,\t-0.909831552109003130,\t-0.909810802083391490,\t\n-0.909790049783252510,\t-0.909769295208638700,\t-0.909748538359601680,\t-0.909727779236193410,\t-0.909707017838465640,\t-0.909686254166470310,\t-0.909665488220259280,\t-0.909644719999884610,\t\n-0.909623949505398150,\t-0.909603176736851430,\t-0.909582401694297160,\t-0.909561624377786760,\t-0.909540844787372400,\t-0.909520062923105940,\t-0.909499278785039330,\t-0.909478492373224200,\t\n-0.909457703687713060,\t-0.909436912728557760,\t-0.909416119495810140,\t-0.909395323989522280,\t-0.909374526209746130,\t-0.909353726156533540,\t-0.909332923829936690,\t-0.909312119230007540,\t\n-0.909291312356797720,\t-0.909270503210360070,\t-0.909249691790746110,\t-0.909228878098007900,\t-0.909208062132197400,\t-0.909187243893366910,\t-0.909166423381567830,\t-0.909145600596853120,\t\n-0.909124775539274400,\t-0.909103948208883740,\t-0.909083118605733210,\t-0.909062286729874880,\t-0.909041452581360820,\t-0.909020616160243100,\t-0.908999777466573900,\t-0.908978936500405290,\t\n-0.908958093261788890,\t-0.908937247750777670,\t-0.908916399967423350,\t-0.908895549911777900,\t-0.908874697583893720,\t-0.908853842983822440,\t-0.908832986111616780,\t-0.908812126967328720,\t\n-0.908791265551010420,\t-0.908770401862713850,\t-0.908749535902491300,\t-0.908728667670394950,\t-0.908707797166476980,\t-0.908686924390789460,\t-0.908666049343384570,\t-0.908645172024314270,\t\n-0.908624292433631300,\t-0.908603410571387720,\t-0.908582526437635600,\t-0.908561640032427120,\t-0.908540751355814580,\t-0.908519860407849710,\t-0.908498967188585690,\t-0.908478071698074150,\t\n-0.908457173936367490,\t-0.908436273903517890,\t-0.908415371599577530,\t-0.908394467024598810,\t-0.908373560178633910,\t-0.908352651061735130,\t-0.908331739673954310,\t-0.908310826015344520,\t\n-0.908289910085957720,\t-0.908268991885846090,\t-0.908248071415061920,\t-0.908227148673657720,\t-0.908206223661685130,\t-0.908185296379197430,\t-0.908164366826246460,\t-0.908143435002884640,\t\n-0.908122500909164240,\t-0.908101564545137460,\t-0.908080625910856920,\t-0.908059685006374680,\t-0.908038741831743380,\t-0.908017796387014740,\t-0.907996848672241950,\t-0.907975898687477190,\t\n-0.907954946432772530,\t-0.907933991908180580,\t-0.907913035113753650,\t-0.907892076049543690,\t-0.907871114715604000,\t-0.907850151111986530,\t-0.907829185238743560,\t-0.907808217095927740,\t\n-0.907787246683591340,\t-0.907766274001786890,\t-0.907745299050566670,\t-0.907724321829983190,\t-0.907703342340088980,\t-0.907682360580935990,\t-0.907661376552577500,\t-0.907640390255065600,\t\n-0.907619401688452680,\t-0.907598410852791250,\t-0.907577417748133390,\t-0.907556422374532490,\t-0.907535424732040410,\t-0.907514424820709760,\t-0.907493422640593180,\t-0.907472418191742960,\t\n-0.907451411474211600,\t-0.907430402488051850,\t-0.907409391233316100,\t-0.907388377710056760,\t-0.907367361918326120,\t-0.907346343858177580,\t-0.907325323529663110,\t-0.907304300932835210,\t\n-0.907283276067746720,\t-0.907262248934449960,\t-0.907241219532997300,\t-0.907220187863441830,\t-0.907199153925835940,\t-0.907178117720232160,\t-0.907157079246683210,\t-0.907136038505241380,\t\n-0.907114995495959530,\t-0.907093950218890170,\t-0.907072902674086020,\t-0.907051852861599170,\t-0.907030800781483020,\t-0.907009746433789950,\t-0.906988689818572500,\t-0.906967630935883280,\t\n-0.906946569785775040,\t-0.906925506368299940,\t-0.906904440683511500,\t-0.906883372731461910,\t-0.906862302512204010,\t-0.906841230025790200,\t-0.906820155272273440,\t-0.906799078251706250,\t\n-0.906777998964141350,\t-0.906756917409631380,\t-0.906735833588228850,\t-0.906714747499987040,\t-0.906693659144958470,\t-0.906672568523195670,\t-0.906651475634751460,\t-0.906630380479678480,\t\n-0.906609283058029240,\t-0.906588183369857250,\t-0.906567081415214690,\t-0.906545977194154530,\t-0.906524870706729380,\t-0.906503761952991980,\t-0.906482650932995290,\t-0.906461537646791830,\t\n-0.906440422094434650,\t-0.906419304275976390,\t-0.906398184191469450,\t-0.906377061840967560,\t-0.906355937224522900,\t-0.906334810342188430,\t-0.906313681194016900,\t-0.906292549780060800,\t\n-0.906271416100373650,\t-0.906250280155008080,\t-0.906229141944016710,\t-0.906208001467452510,\t-0.906186858725368420,\t-0.906165713717817070,\t-0.906144566444851420,\t-0.906123416906524430,\t\n-0.906102265102888830,\t-0.906081111033997240,\t-0.906059954699903190,\t-0.906038796100659290,\t-0.906017635236318400,\t-0.905996472106933460,\t-0.905975306712557330,\t-0.905954139053242510,\t\n-0.905932969129042750,\t-0.905911796940010560,\t-0.905890622486198890,\t-0.905869445767660600,\t-0.905848266784448740,\t-0.905827085536616280,\t-0.905805902024216070,\t-0.905784716247301060,\t\n-0.905763528205923870,\t-0.905742337900138250,\t-0.905721145329996810,\t-0.905699950495552520,\t-0.905678753396858330,\t-0.905657554033967300,\t-0.905636352406931970,\t-0.905615148515806160,\t\n-0.905593942360642390,\t-0.905572733941493850,\t-0.905551523258413480,\t-0.905530310311454260,\t-0.905509095100669350,\t-0.905487877626111600,\t-0.905466657887834200,\t-0.905445435885889770,\t\n-0.905424211620332150,\t-0.905402985091213970,\t-0.905381756298588410,\t-0.905360525242508320,\t-0.905339291923027090,\t-0.905318056340197130,\t-0.905296818494072400,\t-0.905275578384705630,\t\n-0.905254336012150000,\t-0.905233091376458470,\t-0.905211844477684210,\t-0.905190595315880310,\t-0.905169343891099930,\t-0.905148090203396260,\t-0.905126834252822250,\t-0.905105576039430870,\t\n-0.905084315563275950,\t-0.905063052824410130,\t-0.905041787822886800,\t-0.905020520558758920,\t-0.904999251032079450,\t-0.904977979242902130,\t-0.904956705191279910,\t-0.904935428877265860,\t\n-0.904914150300913380,\t-0.904892869462275430,\t-0.904871586361405300,\t-0.904850300998356170,\t-0.904829013373181330,\t-0.904807723485933970,\t-0.904786431336666920,\t-0.904765136925434250,\t\n-0.904743840252288600,\t-0.904722541317283470,\t-0.904701240120471930,\t-0.904679936661906830,\t-0.904658630941642340,\t-0.904637322959731320,\t-0.904616012716226940,\t-0.904594700211182600,\t\n-0.904573385444651380,\t-0.904552068416686780,\t-0.904530749127341990,\t-0.904509427576670300,\t-0.904488103764725100,\t-0.904466777691559250,\t-0.904445449357226820,\t-0.904424118761780750,\t\n-0.904402785905274450,\t-0.904381450787761110,\t-0.904360113409294230,\t-0.904338773769926550,\t-0.904317431869712470,\t-0.904296087708704730,\t-0.904274741286956730,\t-0.904253392604521980,\t\n-0.904232041661453660,\t-0.904210688457805280,\t-0.904189332993630130,\t-0.904167975268981740,\t-0.904146615283912940,\t-0.904125253038478020,\t-0.904103888532729940,\t-0.904082521766722210,\t\n-0.904061152740508130,\t-0.904039781454141210,\t-0.904018407907674400,\t-0.903997032101162000,\t-0.903975654034656960,\t-0.903954273708212800,\t-0.903932891121883020,\t-0.903911506275720920,\t\n-0.903890119169780130,\t-0.903868729804114030,\t-0.903847338178776050,\t-0.903825944293819790,\t-0.903804548149298230,\t-0.903783149745265750,\t-0.903761749081775310,\t-0.903740346158880550,\t\n-0.903718940976634970,\t-0.903697533535091630,\t-0.903676123834304730,\t-0.903654711874327670,\t-0.903633297655213720,\t-0.903611881177016630,\t-0.903590462439789800,\t-0.903569041443586740,\t\n-0.903547618188461190,\t-0.903526192674466540,\t-0.903504764901656430,\t-0.903483334870083920,\t-0.903461902579803520,\t-0.903440468030868420,\t-0.903419031223332110,\t-0.903397592157248240,\t\n-0.903376150832669980,\t-0.903354707249651720,\t-0.903333261408246770,\t-0.903311813308508630,\t-0.903290362950490920,\t-0.903268910334247280,\t-0.903247455459831430,\t-0.903225998327296890,\t\n-0.903204538936697390,\t-0.903183077288086560,\t-0.903161613381517570,\t-0.903140147217045050,\t-0.903118678794722070,\t-0.903097208114602480,\t-0.903075735176739780,\t-0.903054259981187820,\t\n-0.903032782527999680,\t-0.903011302817230080,\t-0.902989820848932200,\t-0.902968336623159900,\t-0.902946850139966560,\t-0.902925361399406160,\t-0.902903870401532420,\t-0.902882377146398960,\t\n-0.902860881634059530,\t-0.902839383864567520,\t-0.902817883837977450,\t-0.902796381554342720,\t-0.902774877013716950,\t-0.902753370216154090,\t-0.902731861161707670,\t-0.902710349850431300,\t\n-0.902688836282379500,\t-0.902667320457605560,\t-0.902645802376163210,\t-0.902624282038106520,\t-0.902602759443489000,\t-0.902581234592364610,\t-0.902559707484787200,\t-0.902538178120810500,\t\n-0.902516646500487910,\t-0.902495112623874050,\t-0.902473576491022560,\t-0.902452038101987040,\t-0.902430497456821470,\t-0.902408954555579570,\t-0.902387409398314970,\t-0.902365861985082170,\t\n-0.902344312315934820,\t-0.902322760390926630,\t-0.902301206210111560,\t-0.902279649773543470,\t-0.902258091081276190,\t-0.902236530133363690,\t-0.902214966929859920,\t-0.902193401470818720,\t\n-0.902171833756293620,\t-0.902150263786339330,\t-0.902128691561009390,\t-0.902107117080357730,\t-0.902085540344438330,\t-0.902063961353304580,\t-0.902042380107011430,\t-0.902020796605612190,\t\n-0.901999210849161010,\t-0.901977622837711880,\t-0.901956032571318620,\t-0.901934440050035310,\t-0.901912845273915910,\t-0.901891248243014370,\t-0.901869648957384640,\t-0.901848047417080580,\t\n-0.901826443622156580,\t-0.901804837572666610,\t-0.901783229268664500,\t-0.901761618710204330,\t-0.901740005897340160,\t-0.901718390830125500,\t-0.901696773508615320,\t-0.901675153932863130,\t\n-0.901653532102923090,\t-0.901631908018849290,\t-0.901610281680695680,\t-0.901588653088516320,\t-0.901567022242365400,\t-0.901545389142296870,\t-0.901523753788364470,\t-0.901502116180623150,\t\n-0.901480476319126420,\t-0.901458834203928580,\t-0.901437189835083700,\t-0.901415543212645720,\t-0.901393894336668610,\t-0.901372243207207100,\t-0.901350589824314930,\t-0.901328934188046380,\t\n-0.901307276298455420,\t-0.901285616155596330,\t-0.901263953759523170,\t-0.901242289110290140,\t-0.901220622207951410,\t-0.901198953052560700,\t-0.901177281644172990,\t-0.901155607982842110,\t\n-0.901133932068622250,\t-0.901112253901567460,\t-0.901090573481732050,\t-0.901068890809169850,\t-0.901047205883935830,\t-0.901025518706083720,\t-0.901003829275667910,\t-0.900982137592742480,\t\n-0.900960443657361720,\t-0.900938747469579800,\t-0.900917049029451130,\t-0.900895348337029780,\t-0.900873645392370030,\t-0.900851940195525720,\t-0.900830232746552050,\t-0.900808523045502740,\t\n-0.900786811092432190,\t-0.900765096887394590,\t-0.900743380430443770,\t-0.900721661721635040,\t-0.900699940761022110,\t-0.900678217548659290,\t-0.900656492084600860,\t-0.900634764368901330,\t\n-0.900613034401614780,\t-0.900591302182795710,\t-0.900569567712498410,\t-0.900547830990777070,\t-0.900526092017685850,\t-0.900504350793279840,\t-0.900482607317612870,\t-0.900460861590739460,\t\n-0.900439113612713780,\t-0.900417363383590460,\t-0.900395610903423240,\t-0.900373856172267390,\t-0.900352099190176890,\t-0.900330339957206240,\t-0.900308578473409620,\t-0.900286814738841650,\t\n-0.900265048753556620,\t-0.900243280517608930,\t-0.900221510031053000,\t-0.900199737293942980,\t-0.900177962306334070,\t-0.900156185068280100,\t-0.900134405579835820,\t-0.900112623841055390,\t\n-0.900090839851993450,\t-0.900069053612704060,\t-0.900047265123242400,\t-0.900025474383662540,\t-0.900003681394019090,\t-0.899981886154366360,\t-0.899960088664758960,\t-0.899938288925251300,\t\n-0.899916486935897870,\t-0.899894682696753320,\t-0.899872876207871600,\t-0.899851067469308210,\t-0.899829256481117000,\t-0.899807443243352710,\t-0.899785627756069850,\t-0.899763810019322820,\t\n-0.899741990033166020,\t-0.899720167797654510,\t-0.899698343312842600,\t-0.899676516578784890,\t-0.899654687595535800,\t-0.899632856363150050,\t-0.899611022881682150,\t-0.899589187151186740,\t\n-0.899567349171718320,\t-0.899545508943331520,\t-0.899523666466080620,\t-0.899501821740020800,\t-0.899479974765206580,\t-0.899458125541692350,\t-0.899436274069532750,\t-0.899414420348782160,\t\n-0.899392564379495880,\t-0.899370706161728210,\t-0.899348845695533860,\t-0.899326982980967250,\t-0.899305118018083220,\t-0.899283250806936390,\t-0.899261381347581490,\t-0.899239509640073150,\t\n-0.899217635684465890,\t-0.899195759480814320,\t-0.899173881029173620,\t-0.899152000329598300,\t-0.899130117382142990,\t-0.899108232186862310,\t-0.899086344743811110,\t-0.899064455053043550,\t\n-0.899042563114615390,\t-0.899020668928580790,\t-0.898998772494994490,\t-0.898976873813911230,\t-0.898954972885385840,\t-0.898933069709472950,\t-0.898911164286227420,\t-0.898889256615703960,\t\n-0.898867346697957090,\t-0.898845434533042110,\t-0.898823520121013520,\t-0.898801603461926280,\t-0.898779684555834900,\t-0.898757763402794340,\t-0.898735840002859000,\t-0.898713914356084500,\t\n-0.898691986462525130,\t-0.898670056322235840,\t-0.898648123935271380,\t-0.898626189301686700,\t-0.898604252421536410,\t-0.898582313294875590,\t-0.898560371921758970,\t-0.898538428302240950,\t\n-0.898516482436377270,\t-0.898494534324222440,\t-0.898472583965831300,\t-0.898450631361258690,\t-0.898428676510559470,\t-0.898406719413788140,\t-0.898384760071000430,\t-0.898362798482250870,\t\n-0.898340834647594180,\t-0.898318868567085540,\t-0.898296900240779680,\t-0.898274929668731570,\t-0.898252956850996150,\t-0.898230981787628280,\t-0.898209004478683020,\t-0.898187024924214870,\t\n-0.898165043124279470,\t-0.898143059078931550,\t-0.898121072788225950,\t-0.898099084252217630,\t-0.898077093470961320,\t-0.898055100444512530,\t-0.898033105172926120,\t-0.898011107656256800,\t\n-0.897989107894559770,\t-0.897967105887890080,\t-0.897945101636302480,\t-0.897923095139852250,\t-0.897901086398594120,\t-0.897879075412583380,\t-0.897857062181874550,\t-0.897835046706523480,\t\n-0.897813028986584770,\t-0.897791009022113510,\t-0.897768986813164640,\t-0.897746962359793450,\t-0.897724935662054360,\t-0.897702906720003300,\t-0.897680875533695020,\t-0.897658842103184580,\t\n-0.897636806428526950,\t-0.897614768509777390,\t-0.897592728346990890,\t-0.897570685940222600,\t-0.897548641289527490,\t-0.897526594394960520,\t-0.897504545256577300,\t-0.897482493874432800,\t\n-0.897460440248582070,\t-0.897438384379080300,\t-0.897416326265982440,\t-0.897394265909343460,\t-0.897372203309219190,\t-0.897350138465664470,\t-0.897328071378734270,\t-0.897306002048483990,\t\n-0.897283930474968680,\t-0.897261856658243540,\t-0.897239780598363850,\t-0.897217702295384560,\t-0.897195621749360740,\t-0.897173538960348130,\t-0.897151453928401790,\t-0.897129366653576790,\t\n-0.897107277135928300,\t-0.897085185375511740,\t-0.897063091372381720,\t-0.897040995126594410,\t-0.897018896638204670,\t-0.896996795907267550,\t-0.896974692933838580,\t-0.896952587717972820,\t\n-0.896930480259725550,\t-0.896908370559152070,\t-0.896886258616307770,\t-0.896864144431247730,\t-0.896842028004027010,\t-0.896819909334701570,\t-0.896797788423326360,\t-0.896775665269956670,\t\n-0.896753539874647790,\t-0.896731412237454670,\t-0.896709282358433500,\t-0.896687150237639120,\t-0.896665015875126810,\t-0.896642879270951880,\t-0.896620740425169930,\t-0.896598599337836030,\t\n-0.896576456009005600,\t-0.896554310438734130,\t-0.896532162627076800,\t-0.896510012574088690,\t-0.896487860279825970,\t-0.896465705744343590,\t-0.896443548967696850,\t-0.896421389949941360,\t\n-0.896399228691132420,\t-0.896377065191324870,\t-0.896354899450575230,\t-0.896332731468938220,\t-0.896310561246469350,\t-0.896288388783224140,\t-0.896266214079257990,\t-0.896244037134626300,\t\n-0.896221857949384470,\t-0.896199676523588010,\t-0.896177492857291980,\t-0.896155306950552570,\t-0.896133118803424940,\t-0.896110928415964510,\t-0.896088735788226680,\t-0.896066540920267160,\t\n-0.896044343812140820,\t-0.896022144463903940,\t-0.895999942875611800,\t-0.895977739047319810,\t-0.895955532979083370,\t-0.895933324670958210,\t-0.895911114122999620,\t-0.895888901335263330,\t\n-0.895866686307804750,\t-0.895844469040679160,\t-0.895822249533942740,\t-0.895800027787650550,\t-0.895777803801858450,\t-0.895755577576621830,\t-0.895733349111996200,\t-0.895711118408036850,\t\n-0.895688885464800080,\t-0.895666650282341160,\t-0.895644412860715500,\t-0.895622173199978940,\t-0.895599931300186890,\t-0.895577687161394960,\t-0.895555440783658900,\t-0.895533192167034200,\t\n-0.895510941311576490,\t-0.895488688217341070,\t-0.895466432884384320,\t-0.895444175312761440,\t-0.895421915502528140,\t-0.895399653453740060,\t-0.895377389166452490,\t-0.895355122640721810,\t\n-0.895332853876603330,\t-0.895310582874152770,\t-0.895288309633425650,\t-0.895266034154477810,\t-0.895243756437364870,\t-0.895221476482142560,\t-0.895199194288866520,\t-0.895176909857592570,\t\n-0.895154623188375910,\t-0.895132334281273030,\t-0.895110043136339350,\t-0.895087749753630590,\t-0.895065454133202490,\t-0.895043156275110660,\t-0.895020856179410630,\t-0.894998553846158780,\t\n-0.894976249275410640,\t-0.894953942467221820,\t-0.894931633421648160,\t-0.894909322138745410,\t-0.894887008618569290,\t-0.894864692861175760,\t-0.894842374866620440,\t-0.894820054634958840,\t\n-0.894797732166247360,\t-0.894775407460541740,\t-0.894753080517897480,\t-0.894730751338370540,\t-0.894708419922016770,\t-0.894686086268891460,\t-0.894663750379051440,\t-0.894641412252551890,\t\n-0.894619071889449000,\t-0.894596729289798280,\t-0.894574384453655780,\t-0.894552037381077360,\t-0.894529688072118860,\t-0.894507336526836120,\t-0.894484982745284540,\t-0.894462626727520970,\t\n-0.894440268473600920,\t-0.894417907983580120,\t-0.894395545257514520,\t-0.894373180295460090,\t-0.894350813097472330,\t-0.894328443663607970,\t-0.894306071993922420,\t-0.894283698088471750,\t\n-0.894261321947311780,\t-0.894238943570498600,\t-0.894216562958087930,\t-0.894194180110135960,\t-0.894171795026698520,\t-0.894149407707831580,\t-0.894127018153590640,\t-0.894104626364032650,\t\n-0.894082232339213020,\t-0.894059836079187930,\t-0.894037437584013220,\t-0.894015036853744390,\t-0.893992633888438530,\t-0.893970228688151010,\t-0.893947821252937920,\t-0.893925411582855320,\t\n-0.893902999677959050,\t-0.893880585538305410,\t-0.893858169163950330,\t-0.893835750554949790,\t-0.893813329711359850,\t-0.893790906633236130,\t-0.893768481320635690,\t-0.893746053773613940,\t\n-0.893723623992227050,\t-0.893701191976531200,\t-0.893678757726582340,\t-0.893656321242436100,\t-0.893633882524149550,\t-0.893611441571778190,\t-0.893588998385378310,\t-0.893566552965005870,\t\n-0.893544105310717150,\t-0.893521655422568120,\t-0.893499203300614940,\t-0.893476748944913690,\t-0.893454292355520320,\t-0.893431833532491450,\t-0.893409372475883150,\t-0.893386909185751370,\t\n-0.893364443662152290,\t-0.893341975905142080,\t-0.893319505914776490,\t-0.893297033691112690,\t-0.893274559234206180,\t-0.893252082544113370,\t-0.893229603620890210,\t-0.893207122464593220,\t\n-0.893184639075278230,\t-0.893162153453001760,\t-0.893139665597819880,\t-0.893117175509788530,\t-0.893094683188964570,\t-0.893072188635403830,\t-0.893049691849162720,\t-0.893027192830297300,\t\n-0.893004691578863970,\t-0.892982188094918470,\t-0.892959682378517860,\t-0.892937174429718090,\t-0.892914664248575460,\t-0.892892151835146030,\t-0.892869637189486310,\t-0.892847120311652480,\t\n-0.892824601201700930,\t-0.892802079859687740,\t-0.892779556285669410,\t-0.892757030479701790,\t-0.892734502441842050,\t-0.892711972172145930,\t-0.892689439670669940,\t-0.892666904937470360,\t\n-0.892644367972603160,\t-0.892621828776125390,\t-0.892599287348093020,\t-0.892576743688562440,\t-0.892554197797590040,\t-0.892531649675232130,\t-0.892509099321545100,\t-0.892486546736585340,\t\n-0.892463991920409260,\t-0.892441434873073040,\t-0.892418875594632950,\t-0.892396314085146080,\t-0.892373750344668370,\t-0.892351184373256330,\t-0.892328616170966260,\t-0.892306045737854770,\t\n-0.892283473073977710,\t-0.892260898179392360,\t-0.892238321054154680,\t-0.892215741698321300,\t-0.892193160111948600,\t-0.892170576295092890,\t-0.892147990247810770,\t-0.892125401970158770,\t\n-0.892102811462193170,\t-0.892080218723970140,\t-0.892057623755546980,\t-0.892035026556979750,\t-0.892012427128325070,\t-0.891989825469639230,\t-0.891967221580978740,\t-0.891944615462399890,\t\n-0.891922007113959970,\t-0.891899396535714930,\t-0.891876783727721390,\t-0.891854168690035980,\t-0.891831551422715090,\t-0.891808931925815230,\t-0.891786310199393140,\t-0.891763686243505330,\t\n-0.891741060058207860,\t-0.891718431643558130,\t-0.891695800999612320,\t-0.891673168126426940,\t-0.891650533024058720,\t-0.891627895692564180,\t-0.891605256131999480,\t-0.891582614342422030,\t\n-0.891559970323888010,\t-0.891537324076454140,\t-0.891514675600176940,\t-0.891492024895113030,\t-0.891469371961319030,\t-0.891446716798851680,\t-0.891424059407767480,\t-0.891401399788123160,\t\n-0.891378737939974910,\t-0.891356073863380230,\t-0.891333407558395410,\t-0.891310739025076960,\t-0.891288068263481730,\t-0.891265395273665990,\t-0.891242720055687050,\t-0.891220042609601410,\t\n-0.891197362935465590,\t-0.891174681033336410,\t-0.891151996903270520,\t-0.891129310545324630,\t-0.891106621959555480,\t-0.891083931146019690,\t-0.891061238104774110,\t-0.891038542835875140,\t\n-0.891015845339380160,\t-0.890993145615345480,\t-0.890970443663828050,\t-0.890947739484884480,\t-0.890925033078571070,\t-0.890902324444945550,\t-0.890879613584064200,\t-0.890856900495983870,\t\n-0.890834185180761300,\t-0.890811467638453200,\t-0.890788747869116440,\t-0.890766025872807840,\t-0.890743301649584150,\t-0.890720575199502210,\t-0.890697846522618520,\t-0.890675115618990490,\t\n-0.890652382488674730,\t-0.890629647131727990,\t-0.890606909548207200,\t-0.890584169738169010,\t-0.890561427701670130,\t-0.890538683438767960,\t-0.890515936949519140,\t-0.890493188233980490,\t\n-0.890470437292208870,\t-0.890447684124261120,\t-0.890424928730194190,\t-0.890402171110064920,\t-0.890379411263930280,\t-0.890356649191846650,\t-0.890333884893871890,\t-0.890311118370062270,\t\n-0.890288349620474980,\t-0.890265578645166760,\t-0.890242805444194540,\t-0.890220030017614960,\t-0.890197252365485750,\t-0.890174472487863410,\t-0.890151690384804790,\t-0.890128906056367080,\t\n-0.890106119502606980,\t-0.890083330723581590,\t-0.890060539719347950,\t-0.890037746489962920,\t-0.890014951035483120,\t-0.889992153355966380,\t-0.889969353451469210,\t-0.889946551322048700,\t\n-0.889923746967761780,\t-0.889900940388665520,\t-0.889878131584816430,\t-0.889855320556272590,\t-0.889832507303090270,\t-0.889809691825326770,\t-0.889786874123039030,\t-0.889764054196284020,\t\n-0.889741232045119010,\t-0.889718407669600860,\t-0.889695581069786630,\t-0.889672752245733500,\t-0.889649921197498080,\t-0.889627087925138340,\t-0.889604252428710770,\t-0.889581414708272680,\t\n-0.889558574763881000,\t-0.889535732595592380,\t-0.889512888203464970,\t-0.889490041587555290,\t-0.889467192747920520,\t-0.889444341684617720,\t-0.889421488397704070,\t-0.889398632887236750,\t\n-0.889375775153272820,\t-0.889352915195869560,\t-0.889330053015083830,\t-0.889307188610972690,\t-0.889284321983593970,\t-0.889261453133004420,\t-0.889238582059261210,\t-0.889215708762421510,\t\n-0.889192833242542610,\t-0.889169955499681250,\t-0.889147075533895380,\t-0.889124193345241840,\t-0.889101308933777700,\t-0.889078422299560360,\t-0.889055533442647090,\t-0.889032642363094870,\t\n-0.889009749060960970,\t-0.888986853536302800,\t-0.888963955789177080,\t-0.888941055819641890,\t-0.888918153627754060,\t-0.888895249213570770,\t-0.888872342577149420,\t-0.888849433718547190,\t\n-0.888826522637821030,\t-0.888803609335028890,\t-0.888780693810227730,\t-0.888757776063474950,\t-0.888734856094827610,\t-0.888711933904343110,\t-0.888689009492078850,\t-0.888666082858092120,\t\n-0.888643154002440090,\t-0.888620222925179730,\t-0.888597289626369300,\t-0.888574354106065670,\t-0.888551416364326110,\t-0.888528476401208020,\t-0.888505534216768700,\t-0.888482589811065200,\t\n-0.888459643184155600,\t-0.888436694336096840,\t-0.888413743266946440,\t-0.888390789976761690,\t-0.888367834465599860,\t-0.888344876733518580,\t-0.888321916780575040,\t-0.888298954606826620,\t\n-0.888275990212330950,\t-0.888253023597144860,\t-0.888230054761326550,\t-0.888207083704933180,\t-0.888184110428022030,\t-0.888161134930650630,\t-0.888138157212876030,\t-0.888115177274756420,\t\n-0.888092195116348960,\t-0.888069210737710830,\t-0.888046224138899780,\t-0.888023235319973180,\t-0.888000244280988450,\t-0.887977251022003090,\t-0.887954255543074720,\t-0.887931257844260640,\t\n-0.887908257925618010,\t-0.887885255787205120,\t-0.887862251429079040,\t-0.887839244851297390,\t-0.887816236053917680,\t-0.887793225036997310,\t-0.887770211800593460,\t-0.887747196344764620,\t\n-0.887724178669567650,\t-0.887701158775060280,\t-0.887678136661300020,\t-0.887655112328344380,\t-0.887632085776250970,\t-0.887609057005077420,\t-0.887586026014881120,\t-0.887562992805719380,\t\n-0.887539957377650680,\t-0.887516919730731990,\t-0.887493879865020930,\t-0.887470837780575230,\t-0.887447793477452510,\t-0.887424746955709830,\t-0.887401698215405710,\t-0.887378647256597320,\t\n-0.887355594079342280,\t-0.887332538683698320,\t-0.887309481069723070,\t-0.887286421237474030,\t-0.887263359187008940,\t-0.887240294918385410,\t-0.887217228431660840,\t-0.887194159726893530,\t\n-0.887171088804140860,\t-0.887148015663460470,\t-0.887124940304910070,\t-0.887101862728547190,\t-0.887078782934429320,\t-0.887055700922614990,\t-0.887032616693161360,\t-0.887009530246126050,\t\n-0.886986441581567140,\t-0.886963350699542020,\t-0.886940257600108420,\t-0.886917162283324290,\t-0.886894064749247260,\t-0.886870964997935050,\t-0.886847863029444960,\t-0.886824758843835710,\t\n-0.886801652441164600,\t-0.886778543821489240,\t-0.886755432984867590,\t-0.886732319931356930,\t-0.886709204661015880,\t-0.886686087173901850,\t-0.886662967470072560,\t-0.886639845549585860,\t\n-0.886616721412499480,\t-0.886593595058871360,\t-0.886570466488759260,\t-0.886547335702221000,\t-0.886524202699314420,\t-0.886501067480096940,\t-0.886477930044627160,\t-0.886454790392962490,\t\n-0.886431648525160990,\t-0.886408504441280280,\t-0.886385358141378310,\t-0.886362209625512490,\t-0.886339058893741650,\t-0.886315905946123080,\t-0.886292750782714860,\t-0.886269593403574700,\t\n-0.886246433808760560,\t-0.886223271998330290,\t-0.886200107972341830,\t-0.886176941730853150,\t-0.886153773273921750,\t-0.886130602601606250,\t-0.886107429713964280,\t-0.886084254611053780,\t\n-0.886061077292932600,\t-0.886037897759658690,\t-0.886014716011289670,\t-0.885991532047884170,\t-0.885968345869500020,\t-0.885945157476194840,\t-0.885921966868026930,\t-0.885898774045054020,\t\n-0.885875579007334160,\t-0.885852381754925310,\t-0.885829182287885540,\t-0.885805980606272470,\t-0.885782776710144830,\t-0.885759570599560230,\t-0.885736362274576640,\t-0.885713151735252220,\t\n-0.885689938981644940,\t-0.885666724013812300,\t-0.885643506831813370,\t-0.885620287435705640,\t-0.885597065825547200,\t-0.885573842001396110,\t-0.885550615963310420,\t-0.885527387711348090,\t\n-0.885504157245567410,\t-0.885480924566026230,\t-0.885457689672782820,\t-0.885434452565894810,\t-0.885411213245420940,\t-0.885387971711419140,\t-0.885364727963947380,\t-0.885341482003063840,\t\n-0.885318233828826130,\t-0.885294983441293310,\t-0.885271730840523020,\t-0.885248476026573310,\t-0.885225218999502570,\t-0.885201959759368660,\t-0.885178698306229860,\t-0.885155434640144350,\t\n-0.885132168761170290,\t-0.885108900669365760,\t-0.885085630364788490,\t-0.885062357847497650,\t-0.885039083117550970,\t-0.885015806175006410,\t-0.884992527019922480,\t-0.884969245652357240,\t\n-0.884945962072368420,\t-0.884922676280015090,\t-0.884899388275355080,\t-0.884876098058446580,\t-0.884852805629347870,\t-0.884829510988117240,\t-0.884806214134812640,\t-0.884782915069492690,\t\n-0.884759613792215350,\t-0.884736310303038560,\t-0.884713004602021400,\t-0.884689696689221820,\t-0.884666386564697870,\t-0.884643074228508080,\t-0.884619759680710490,\t-0.884596442921363190,\t\n-0.884573123950525120,\t-0.884549802768254230,\t-0.884526479374608930,\t-0.884503153769647280,\t-0.884479825953427890,\t-0.884456495926008830,\t-0.884433163687448620,\t-0.884409829237805530,\t\n-0.884386492577137310,\t-0.884363153705503340,\t-0.884339812622961570,\t-0.884316469329570200,\t-0.884293123825387610,\t-0.884269776110472310,\t-0.884246426184882030,\t-0.884223074048676170,\t\n-0.884199719701912690,\t-0.884176363144649870,\t-0.884153004376946110,\t-0.884129643398859800,\t-0.884106280210449460,\t-0.884082914811773370,\t-0.884059547202890040,\t-0.884036177383857760,\t\n-0.884012805354734700,\t-0.883989431115580040,\t-0.883966054666451840,\t-0.883942676007408390,\t-0.883919295138508310,\t-0.883895912059809550,\t-0.883872526771371510,\t-0.883849139273252040,\t\n-0.883825749565509860,\t-0.883802357648203140,\t-0.883778963521390630,\t-0.883755567185130710,\t-0.883732168639481900,\t-0.883708767884502590,\t-0.883685364920251400,\t-0.883661959746786410,\t\n-0.883638552364166880,\t-0.883615142772451010,\t-0.883591730971697190,\t-0.883568316961964140,\t-0.883544900743310270,\t-0.883521482315793750,\t-0.883498061679473980,\t-0.883474638834409020,\t\n-0.883451213780657390,\t-0.883427786518277800,\t-0.883404357047328780,\t-0.883380925367868720,\t-0.883357491479956460,\t-0.883334055383650510,\t-0.883310617079008930,\t-0.883287176566091240,\t\n-0.883263733844955600,\t-0.883240288915660640,\t-0.883216841778264980,\t-0.883193392432827240,\t-0.883169940879405480,\t-0.883146487118059430,\t-0.883123031148847050,\t-0.883099572971827170,\t\n-0.883076112587058320,\t-0.883052649994599200,\t-0.883029185194508460,\t-0.883005718186844700,\t-0.882982248971666770,\t-0.882958777549032740,\t-0.882935303919002100,\t-0.882911828081633270,\t\n-0.882888350036984850,\t-0.882864869785115580,\t-0.882841387326084190,\t-0.882817902659948860,\t-0.882794415786769200,\t-0.882770926706603400,\t-0.882747435419510400,\t-0.882723941925548820,\t\n-0.882700446224777390,\t-0.882676948317254740,\t-0.882653448203039810,\t-0.882629945882191240,\t-0.882606441354767730,\t-0.882582934620827820,\t-0.882559425680430890,\t-0.882535914533635450,\t\n-0.882512401180500230,\t-0.882488885621084070,\t-0.882465367855445160,\t-0.882441847883643330,\t-0.882418325705736860,\t-0.882394801321784490,\t-0.882371274731845180,\t-0.882347745935977760,\t\n-0.882324214934240850,\t-0.882300681726693510,\t-0.882277146313394380,\t-0.882253608694402500,\t-0.882230068869776060,\t-0.882206526839574900,\t-0.882182982603857410,\t-0.882159436162682550,\t\n-0.882135887516109050,\t-0.882112336664195750,\t-0.882088783607001270,\t-0.882065228344585230,\t-0.882041670877006130,\t-0.882018111204322830,\t-0.881994549326594270,\t-0.881970985243879400,\t\n-0.881947418956236960,\t-0.881923850463726010,\t-0.881900279766405500,\t-0.881876706864333840,\t-0.881853131757570740,\t-0.881829554446174950,\t-0.881805974930205180,\t-0.881782393209720520,\t\n-0.881758809284779900,\t-0.881735223155441730,\t-0.881711634821765950,\t-0.881688044283811200,\t-0.881664451541636200,\t-0.881640856595300230,\t-0.881617259444861910,\t-0.881593660090380650,\t\n-0.881570058531915060,\t-0.881546454769524420,\t-0.881522848803267260,\t-0.881499240633203280,\t-0.881475630259391350,\t-0.881452017681890190,\t-0.881428402900759080,\t-0.881404785916056980,\t\n-0.881381166727842390,\t-0.881357545336175390,\t-0.881333921741114580,\t-0.881310295942718810,\t-0.881286667941047370,\t-0.881263037736159330,\t-0.881239405328113620,\t-0.881215770716969440,\t\n-0.881192133902785830,\t-0.881168494885621880,\t-0.881144853665536190,\t-0.881121210242588940,\t-0.881097564616838520,\t-0.881073916788344240,\t-0.881050266757165250,\t-0.881026614523360060,\t\n-0.881002960086988860,\t-0.880979303448110150,\t-0.880955644606783220,\t-0.880931983563067230,\t-0.880908320317021150,\t-0.880884654868704380,\t-0.880860987218175960,\t-0.880837317365495090,\t\n-0.880813645310720930,\t-0.880789971053912210,\t-0.880766294595129010,\t-0.880742615934430040,\t-0.880718935071874490,\t-0.880695252007521630,\t-0.880671566741430660,\t-0.880647879273660390,\t\n-0.880624189604270800,\t-0.880600497733320720,\t-0.880576803660869430,\t-0.880553107386976120,\t-0.880529408911700060,\t-0.880505708235100440,\t-0.880482005357236530,\t-0.880458300278167740,\t\n-0.880434592997952680,\t-0.880410883516651530,\t-0.880387171834323250,\t-0.880363457951027000,\t-0.880339741866822070,\t-0.880316023581767860,\t-0.880292303095923100,\t-0.880268580409347970,\t\n-0.880244855522101520,\t-0.880221128434242830,\t-0.880197399145831390,\t-0.880173667656926400,\t-0.880149933967587230,\t-0.880126198077873290,\t-0.880102459987843750,\t-0.880078719697557800,\t\n-0.880054977207075370,\t-0.880031232516455430,\t-0.880007485625757590,\t-0.879983736535040920,\t-0.879959985244364920,\t-0.879936231753788540,\t-0.879912476063371970,\t-0.879888718173174270,\t\n-0.879864958083254710,\t-0.879841195793672810,\t-0.879817431304487860,\t-0.879793664615759360,\t-0.879769895727546710,\t-0.879746124639909420,\t-0.879722351352906660,\t-0.879698575866597720,\t\n-0.879674798181042660,\t-0.879651018296300660,\t-0.879627236212431110,\t-0.879603451929493520,\t-0.879579665447546730,\t-0.879555876766651370,\t-0.879532085886866270,\t-0.879508292808250820,\t\n-0.879484497530864770,\t-0.879460700054767510,\t-0.879436900380018430,\t-0.879413098506677150,\t-0.879389294434803070,\t-0.879365488164455700,\t-0.879341679695694320,\t-0.879317869028579110,\t\n-0.879294056163169140,\t-0.879270241099524120,\t-0.879246423837703570,\t-0.879222604377766780,\t-0.879198782719773250,\t-0.879174958863783050,\t-0.879151132809855460,\t-0.879127304558050100,\t\n-0.879103474108426490,\t-0.879079641461044110,\t-0.879055806615962720,\t-0.879031969573241700,\t-0.879008130332940900,\t-0.878984288895119260,\t-0.878960445259837300,\t-0.878936599427154300,\t\n-0.878912751397129770,\t-0.878888901169823320,\t-0.878865048745294700,\t-0.878841194123602950,\t-0.878817337304808710,\t-0.878793478288971140,\t-0.878769617076149760,\t-0.878745753666404510,\t\n-0.878721888059794680,\t-0.878698020256380220,\t-0.878674150256220750,\t-0.878650278059375900,\t-0.878626403665904940,\t-0.878602527075868280,\t-0.878578648289325410,\t-0.878554767306335860,\t\n-0.878530884126959450,\t-0.878506998751255820,\t-0.878483111179284240,\t-0.878459221411105330,\t-0.878435329446778380,\t-0.878411435286363120,\t-0.878387538929919160,\t-0.878363640377506470,\t\n-0.878339739629184660,\t-0.878315836685013450,\t-0.878291931545052700,\t-0.878268024209362010,\t-0.878244114678001010,\t-0.878220202951029980,\t-0.878196289028508550,\t-0.878172372910496430,\t\n-0.878148454597053260,\t-0.878124534088238650,\t-0.878100611384112990,\t-0.878076686484735910,\t-0.878052759390167140,\t-0.878028830100466400,\t-0.878004898615693640,\t-0.877980964935908600,\t\n-0.877957029061171120,\t-0.877933090991541040,\t-0.877909150727078310,\t-0.877885208267842330,\t-0.877861263613893610,\t-0.877837316765291860,\t-0.877813367722096730,\t-0.877789416484368260,\t\n-0.877765463052165740,\t-0.877741507425550020,\t-0.877717549604580590,\t-0.877693589589317200,\t-0.877669627379819910,\t-0.877645662976148430,\t-0.877621696378362850,\t-0.877597727586523100,\t\n-0.877573756600689040,\t-0.877549783420920490,\t-0.877525808047277090,\t-0.877501830479819670,\t-0.877477850718607620,\t-0.877453868763700910,\t-0.877429884615159580,\t-0.877405898273043490,\t\n-0.877381909737412150,\t-0.877357919008326600,\t-0.877333926085846260,\t-0.877309930970031070,\t-0.877285933660940990,\t-0.877261934158636180,\t-0.877237932463176500,\t-0.877213928574621990,\t\n-0.877189922493032630,\t-0.877165914218468010,\t-0.877141903750989100,\t-0.877117891090655410,\t-0.877093876237526990,\t-0.877069859191663910,\t-0.877045839953126130,\t-0.877021818521973360,\t\n-0.876997794898266460,\t-0.876973769082065040,\t-0.876949741073429160,\t-0.876925710872419000,\t-0.876901678479094620,\t-0.876877643893515970,\t-0.876853607115743230,\t-0.876829568145836460,\t\n-0.876805526983855720,\t-0.876781483629860860,\t-0.876757438083912600,\t-0.876733390346070780,\t-0.876709340416395480,\t-0.876685288294946850,\t-0.876661233981784640,\t-0.876637177476969680,\t\n-0.876613118780561810,\t-0.876589057892621090,\t-0.876564994813207820,\t-0.876540929542382050,\t-0.876516862080203850,\t-0.876492792426733610,\t-0.876468720582031290,\t-0.876444646546157280,\t\n-0.876420570319171200,\t-0.876396491901134000,\t-0.876372411292105640,\t-0.876348328492146390,\t-0.876324243501316100,\t-0.876300156319674950,\t-0.876276066947283770,\t-0.876251975384202410,\t\n-0.876227881630491150,\t-0.876203785686210160,\t-0.876179687551419620,\t-0.876155587226180030,\t-0.876131484710551360,\t-0.876107380004593980,\t-0.876083273108368200,\t-0.876059164021933730,\t\n-0.876035052745351870,\t-0.876010939278682340,\t-0.875986823621985430,\t-0.875962705775321540,\t-0.875938585738750830,\t-0.875914463512333260,\t-0.875890339096129900,\t-0.875866212490200690,\t\n-0.875842083694606030,\t-0.875817952709406100,\t-0.875793819534661290,\t-0.875769684170431990,\t-0.875745546616778500,\t-0.875721406873761100,\t-0.875697264941439730,\t-0.875673120819875580,\t\n-0.875648974509128710,\t-0.875624826009259390,\t-0.875600675320328040,\t-0.875576522442394920,\t-0.875552367375520110,\t-0.875528210119764780,\t-0.875504050675188990,\t-0.875479889041853030,\t\n-0.875455725219817290,\t-0.875431559209142400,\t-0.875407391009888510,\t-0.875383220622116040,\t-0.875359048045885710,\t-0.875334873281257250,\t-0.875310696328291950,\t-0.875286517187050080,\t\n-0.875262335857591830,\t-0.875238152339977700,\t-0.875213966634268200,\t-0.875189778740523390,\t-0.875165588658804560,\t-0.875141396389171770,\t-0.875117201931685520,\t-0.875093005286406210,\t\n-0.875068806453394350,\t-0.875044605432710560,\t-0.875020402224415240,\t-0.874996196828568880,\t-0.874971989245232010,\t-0.874947779474464780,\t-0.874923567516328490,\t-0.874899353370883310,\t\n-0.874875137038189750,\t-0.874850918518308430,\t-0.874826697811299290,\t-0.874802474917223850,\t-0.874778249836142160,\t-0.874754022568114960,\t-0.874729793113202650,\t-0.874705561471465830,\t\n-0.874681327642965130,\t-0.874657091627761170,\t-0.874632853425914350,\t-0.874608613037485490,\t-0.874584370462534680,\t-0.874560125701123400,\t-0.874535878753311740,\t-0.874511629619160290,\t\n-0.874487378298729910,\t-0.874463124792081100,\t-0.874438869099273930,\t-0.874414611220370120,\t-0.874390351155429730,\t-0.874366088904513510,\t-0.874341824467682050,\t-0.874317557844995990,\t\n-0.874293289036516040,\t-0.874269018042302950,\t-0.874244744862417210,\t-0.874220469496919230,\t-0.874196191945870500,\t-0.874171912209331330,\t-0.874147630287362310,\t-0.874123346180024300,\t\n-0.874099059887377790,\t-0.874074771409483310,\t-0.874050480746402350,\t-0.874026187898195080,\t-0.874001892864922470,\t-0.873977595646645010,\t-0.873953296243423660,\t-0.873928994655319040,\t\n-0.873904690882391870,\t-0.873880384924702990,\t-0.873856076782312810,\t-0.873831766455282820,\t-0.873807453943673320,\t-0.873783139247545250,\t-0.873758822366959450,\t-0.873734503301976440,\t\n-0.873710182052656830,\t-0.873685858619062120,\t-0.873661533001252820,\t-0.873637205199289670,\t-0.873612875213233500,\t-0.873588543043145150,\t-0.873564208689085460,\t-0.873539872151115280,\t\n-0.873515533429295330,\t-0.873491192523686570,\t-0.873466849434349380,\t-0.873442504161345610,\t-0.873418156704735550,\t-0.873393807064580030,\t-0.873369455240940010,\t-0.873345101233875880,\t\n-0.873320745043449480,\t-0.873296386669721310,\t-0.873272026112752010,\t-0.873247663372602730,\t-0.873223298449334330,\t-0.873198931343007630,\t-0.873174562053683600,\t-0.873150190581423070,\t\n-0.873125816926287210,\t-0.873101441088336320,\t-0.873077063067632330,\t-0.873052682864235540,\t-0.873028300478207120,\t-0.873003915909608020,\t-0.872979529158499080,\t-0.872955140224940810,\t\n-0.872930749108995260,\t-0.872906355810722730,\t-0.872881960330184280,\t-0.872857562667441080,\t-0.872833162822553850,\t-0.872808760795583780,\t-0.872784356586591700,\t-0.872759950195638790,\t\n-0.872735541622785660,\t-0.872711130868094040,\t-0.872686717931624560,\t-0.872662302813438260,\t-0.872637885513596330,\t-0.872613466032159610,\t-0.872589044369188830,\t-0.872564620524745820,\t\n-0.872540194498891310,\t-0.872515766291686260,\t-0.872491335903191830,\t-0.872466903333468990,\t-0.872442468582579010,\t-0.872418031650582740,\t-0.872393592537541450,\t-0.872369151243515770,\t\n-0.872344707768567650,\t-0.872320262112757700,\t-0.872295814276147110,\t-0.872271364258797030,\t-0.872246912060768540,\t-0.872222457682122250,\t-0.872198001122920340,\t-0.872173542383223420,\t\n-0.872149081463092560,\t-0.872124618362589140,\t-0.872100153081774130,\t-0.872075685620708580,\t-0.872051215979454010,\t-0.872026744158071350,\t-0.872002270156621790,\t-0.871977793975166170,\t\n-0.871953315613766430,\t-0.871928835072483420,\t-0.871904352351378310,\t-0.871879867450512380,\t-0.871855380369946360,\t-0.871830891109742210,\t-0.871806399669960990,\t-0.871781906050663640,\t\n-0.871757410251911560,\t-0.871732912273766040,\t-0.871708412116288130,\t-0.871683909779539250,\t-0.871659405263580540,\t-0.871634898568473430,\t-0.871610389694278510,\t-0.871585878641058080,\t\n-0.871561365408872970,\t-0.871536849997784470,\t-0.871512332407853860,\t-0.871487812639142320,\t-0.871463290691710910,\t-0.871438766565621690,\t-0.871414240260935610,\t-0.871389711777713850,\t\n-0.871365181116017800,\t-0.871340648275908850,\t-0.871316113257448180,\t-0.871291576060697290,\t-0.871267036685717480,\t-0.871242495132569680,\t-0.871217951401315970,\t-0.871193405492017510,\t\n-0.871168857404735490,\t-0.871144307139531280,\t-0.871119754696466300,\t-0.871095200075601590,\t-0.871070643276999230,\t-0.871046084300720280,\t-0.871021523146826130,\t-0.870996959815378170,\t\n-0.870972394306437800,\t-0.870947826620066420,\t-0.870923256756325540,\t-0.870898684715276540,\t-0.870874110496980270,\t-0.870849534101499230,\t-0.870824955528894380,\t-0.870800374779227120,\t\n-0.870775791852558930,\t-0.870751206748951230,\t-0.870726619468465080,\t-0.870702030011162860,\t-0.870677438377105540,\t-0.870652844566354610,\t-0.870628248578971590,\t-0.870603650415017970,\t\n-0.870579050074555270,\t-0.870554447557644770,\t-0.870529842864348310,\t-0.870505235994727180,\t-0.870480626948842540,\t-0.870456015726756790,\t-0.870431402328530890,\t-0.870406786754226670,\t\n-0.870382169003905300,\t-0.870357549077628190,\t-0.870332926975457610,\t-0.870308302697454740,\t-0.870283676243681080,\t-0.870259047614198140,\t-0.870234416809067770,\t-0.870209783828351240,\t\n-0.870185148672110280,\t-0.870160511340406400,\t-0.870135871833301320,\t-0.870111230150856120,\t-0.870086586293133180,\t-0.870061940260193900,\t-0.870037292052099680,\t-0.870012641668912350,\t\n-0.869987989110693300,\t-0.869963334377503840,\t-0.869938677469406560,\t-0.869914018386462540,\t-0.869889357128733390,\t-0.869864693696280940,\t-0.869840028089166830,\t-0.869815360307452550,\t\n-0.869790690351199820,\t-0.869766018220470500,\t-0.869741343915325650,\t-0.869716667435827870,\t-0.869691988782038350,\t-0.869667307954018920,\t-0.869642624951831200,\t-0.869617939775537030,\t\n-0.869593252425197470,\t-0.869568562900875140,\t-0.869543871202631550,\t-0.869519177330528190,\t-0.869494481284626920,\t-0.869469783064989450,\t-0.869445082671677530,\t-0.869420380104752980,\t\n-0.869395675364277310,\t-0.869370968450312140,\t-0.869346259362919980,\t-0.869321548102162110,\t-0.869296834668100370,\t-0.869272119060796600,\t-0.869247401280312530,\t-0.869222681326709430,\t\n-0.869197959200050160,\t-0.869173234900396000,\t-0.869148508427808660,\t-0.869123779782350110,\t-0.869099048964082190,\t-0.869074315973066500,\t-0.869049580809365120,\t-0.869024843473039770,\t\n-0.869000103964152280,\t-0.868975362282764060,\t-0.868950618428937950,\t-0.868925872402735220,\t-0.868901124204217950,\t-0.868876373833447730,\t-0.868851621290486210,\t-0.868826866575395980,\t\n-0.868802109688238680,\t-0.868777350629076130,\t-0.868752589397970070,\t-0.868727825994982660,\t-0.868703060420175640,\t-0.868678292673610960,\t-0.868653522755350570,\t-0.868628750665456420,\t\n-0.868603976403989900,\t-0.868579199971013850,\t-0.868554421366589780,\t-0.868529640590779750,\t-0.868504857643645600,\t-0.868480072525249280,\t-0.868455285235652300,\t-0.868430495774917600,\t\n-0.868405704143106690,\t-0.868380910340281420,\t-0.868356114366503950,\t-0.868331316221836240,\t-0.868306515906340120,\t-0.868281713420077760,\t-0.868256908763111120,\t-0.868232101935501820,\t\n-0.868207292937312690,\t-0.868182481768605240,\t-0.868157668429441640,\t-0.868132852919883960,\t-0.868108035239994020,\t-0.868083215389833570,\t-0.868058393369465550,\t-0.868033569178951580,\t\n-0.868008742818353610,\t-0.867983914287733800,\t-0.867959083587154230,\t-0.867934250716676960,\t-0.867909415676364150,\t-0.867884578466277650,\t-0.867859739086479290,\t-0.867834897537032130,\t\n-0.867810053817997580,\t-0.867785207929438030,\t-0.867760359871415310,\t-0.867735509643991820,\t-0.867710657247229070,\t-0.867685802681190110,\t-0.867660945945936680,\t-0.867636087041530830,\t\n-0.867611225968034860,\t-0.867586362725510710,\t-0.867561497314020660,\t-0.867536629733627000,\t-0.867511759984391670,\t-0.867486888066376970,\t-0.867462013979644510,\t-0.867437137724257570,\t\n-0.867412259300277770,\t-0.867387378707767280,\t-0.867362495946788380,\t-0.867337611017402700,\t-0.867312723919673510,\t-0.867287834653662550,\t-0.867262943219431980,\t-0.867238049617044090,\t\n-0.867213153846561060,\t-0.867188255908045050,\t-0.867163355801558460,\t-0.867138453527163460,\t-0.867113549084922440,\t-0.867088642474897030,\t-0.867063733697150400,\t-0.867038822751744490,\t\n-0.867013909638741480,\t-0.866988994358203760,\t-0.866964076910193500,\t-0.866939157294772670,\t-0.866914235512004310,\t-0.866889311561950480,\t-0.866864385444673260,\t-0.866839457160235140,\t\n-0.866814526708698300,\t-0.866789594090125240,\t-0.866764659304578130,\t-0.866739722352119380,\t-0.866714783232810930,\t-0.866689841946715940,\t-0.866664898493896270,\t-0.866639952874414420,\t\n-0.866615005088332670,\t-0.866590055135713410,\t-0.866565103016618600,\t-0.866540148731111510,\t-0.866515192279254000,\t-0.866490233661108440,\t-0.866465272876737470,\t-0.866440309926203130,\t\n-0.866415344809568170,\t-0.866390377526894740,\t-0.866365408078245470,\t-0.866340436463682080,\t-0.866315462683268200,\t-0.866290486737065550,\t-0.866265508625136740,\t-0.866240528347544170,\t\n-0.866215545904350240,\t-0.866190561295617000,\t-0.866165574521407860,\t-0.866140585581784750,\t-0.866115594476810190,\t-0.866090601206546570,\t-0.866065605771056510,\t-0.866040608170402510,\t\n-0.866015608404646860,\t-0.865990606473852290,\t-0.865965602378081070,\t-0.865940596117395490,\t-0.865915587691858830,\t-0.865890577101533280,\t-0.865865564346481210,\t-0.865840549426765250,\t\n-0.865815532342447570,\t-0.865790513093591340,\t-0.865765491680258960,\t-0.865740468102512820,\t-0.865715442360415420,\t-0.865690414454029500,\t-0.865665384383417560,\t-0.865640352148642100,\t\n-0.865615317749765740,\t-0.865590281186851110,\t-0.865565242459960360,\t-0.865540201569157010,\t-0.865515158514503000,\t-0.865490113296061180,\t-0.865465065913894160,\t-0.865440016368064340,\t\n-0.865414964658634100,\t-0.865389910785666850,\t-0.865364854749224870,\t-0.865339796549370770,\t-0.865314736186167170,\t-0.865289673659676680,\t-0.865264608969962050,\t-0.865239542117085870,\t\n-0.865214473101110880,\t-0.865189401922099140,\t-0.865164328580114490,\t-0.865139253075218880,\t-0.865114175407475260,\t-0.865089095576946130,\t-0.865064013583694340,\t-0.865038929427782040,\t\n-0.865013843109272870,\t-0.864988754628229000,\t-0.864963663984713360,\t-0.864938571178788470,\t-0.864913476210517170,\t-0.864888379079962190,\t-0.864863279787186360,\t-0.864838178332252180,\t\n-0.864813074715222170,\t-0.864787968936159950,\t-0.864762860995127780,\t-0.864737750892188520,\t-0.864712638627404770,\t-0.864687524200839500,\t-0.864662407612554970,\t-0.864637288862614820,\t\n-0.864612167951081420,\t-0.864587044878017740,\t-0.864561919643486390,\t-0.864536792247550200,\t-0.864511662690272020,\t-0.864486530971714680,\t-0.864461397091941030,\t-0.864436261051014010,\t\n-0.864411122848995680,\t-0.864385982485950110,\t-0.864360839961939580,\t-0.864335695277026920,\t-0.864310548431275080,\t-0.864285399424746360,\t-0.864260248257504580,\t-0.864235094929612260,\t\n-0.864209939441132110,\t-0.864184781792127210,\t-0.864159621982660280,\t-0.864134460012794370,\t-0.864109295882592220,\t-0.864084129592116890,\t-0.864058961141431210,\t-0.864033790530597700,\t\n-0.864008617759680080,\t-0.863983442828741070,\t-0.863958265737843400,\t-0.863933086487050030,\t-0.863907905076423900,\t-0.863882721506027630,\t-0.863857535775924950,\t-0.863832347886178460,\t\n-0.863807157836851140,\t-0.863781965628005910,\t-0.863756771259705740,\t-0.863731574732013560,\t-0.863706376044992560,\t-0.863681175198705580,\t-0.863655972193215330,\t-0.863630767028585430,\t\n-0.863605559704878620,\t-0.863580350222158070,\t-0.863555138580486490,\t-0.863529924779927180,\t-0.863504708820542530,\t-0.863479490702396490,\t-0.863454270425551900,\t-0.863429047990071470,\t\n-0.863403823396018510,\t-0.863378596643455950,\t-0.863353367732446970,\t-0.863328136663054520,\t-0.863302903435341770,\t-0.863277668049371230,\t-0.863252430505207060,\t-0.863227190802911770,\t\n-0.863201948942548420,\t-0.863176704924180300,\t-0.863151458747870470,\t-0.863126210413681430,\t-0.863100959921677350,\t-0.863075707271920840,\t-0.863050452464475200,\t-0.863025195499403260,\t\n-0.862999936376768420,\t-0.862974675096633730,\t-0.862949411659062360,\t-0.862924146064117490,\t-0.862898878311862180,\t-0.862873608402359270,\t-0.862848336335672710,\t-0.862823062111865440,\t\n-0.862797785731000410,\t-0.862772507193140910,\t-0.862747226498349780,\t-0.862721943646690970,\t-0.862696658638227310,\t-0.862671371473022090,\t-0.862646082151138360,\t-0.862620790672639410,\t\n-0.862595497037588530,\t-0.862570201246048880,\t-0.862544903298083750,\t-0.862519603193756310,\t-0.862494300933129510,\t-0.862468996516267290,\t-0.862443689943232620,\t-0.862418381214088760,\t\n-0.862393070328899000,\t-0.862367757287725970,\t-0.862342442090634040,\t-0.862317124737686070,\t-0.862291805228945330,\t-0.862266483564474990,\t-0.862241159744338460,\t-0.862215833768599000,\t\n-0.862190505637319910,\t-0.862165175350564690,\t-0.862139842908396400,\t-0.862114508310878210,\t-0.862089171558074070,\t-0.862063832650047050,\t-0.862038491586860410,\t-0.862013148368577560,\t\n-0.861987802995261900,\t-0.861962455466976250,\t-0.861937105783784910,\t-0.861911753945750810,\t-0.861886399952937250,\t-0.861861043805407730,\t-0.861835685503225650,\t-0.861810325046454380,\t\n-0.861784962435157230,\t-0.861759597669397690,\t-0.861734230749238720,\t-0.861708861674744590,\t-0.861683490445978250,\t-0.861658117063003330,\t-0.861632741525882980,\t-0.861607363834680950,\t\n-0.861581983989459840,\t-0.861556601990284390,\t-0.861531217837217420,\t-0.861505831530322340,\t-0.861480443069662760,\t-0.861455052455301960,\t-0.861429659687303560,\t-0.861404264765731060,\t\n-0.861378867690647860,\t-0.861353468462117130,\t-0.861328067080203040,\t-0.861302663544968870,\t-0.861277257856478020,\t-0.861251850014794100,\t-0.861226440019980500,\t-0.861201027872100290,\t\n-0.861175613571218080,\t-0.861150197117396710,\t-0.861124778510699910,\t-0.861099357751191170,\t-0.861073934838934020,\t-0.861048509773992050,\t-0.861023082556428790,\t-0.860997653186307830,\t\n-0.860972221663692690,\t-0.860946787988646540,\t-0.860921352161234000,\t-0.860895914181518010,\t-0.860870474049562180,\t-0.860845031765430260,\t-0.860819587329185180,\t-0.860794140740891670,\t\n-0.860768692000612900,\t-0.860743241108412270,\t-0.860717788064353510,\t-0.860692332868500330,\t-0.860666875520916360,\t-0.860641416021665220,\t-0.860615954370810510,\t-0.860590490568415860,\t\n-0.860565024614544540,\t-0.860539556509261170,\t-0.860514086252628820,\t-0.860488613844711310,\t-0.860463139285572280,\t-0.860437662575275430,\t-0.860412183713883950,\t-0.860386702701462450,\t\n-0.860361219538074210,\t-0.860335734223782840,\t-0.860310246758652200,\t-0.860284757142745990,\t-0.860259265376127850,\t-0.860233771458861480,\t-0.860208275391010750,\t-0.860182777172638800,\t\n-0.860157276803810490,\t-0.860131774284588870,\t-0.860106269615037890,\t-0.860080762795221280,\t-0.860055253825202650,\t-0.860029742705045510,\t-0.860004229434814470,\t-0.859978714014572820,\t\n-0.859953196444384280,\t-0.859927676724312920,\t-0.859902154854422340,\t-0.859876630834776280,\t-0.859851104665438680,\t-0.859825576346473390,\t-0.859800045877943670,\t-0.859774513259914270,\t\n-0.859748978492448580,\t-0.859723441575610540,\t-0.859697902509463760,\t-0.859672361294072320,\t-0.859646817929499480,\t-0.859621272415809990,\t-0.859595724753067450,\t-0.859570174941335470,\t\n-0.859544622980678130,\t-0.859519068871159250,\t-0.859493512612842680,\t-0.859467954205792360,\t-0.859442393650072020,\t-0.859416830945745840,\t-0.859391266092877080,\t-0.859365699091530600,\t\n-0.859340129941769890,\t-0.859314558643658800,\t-0.859288985197261380,\t-0.859263409602641030,\t-0.859237831859862580,\t-0.859212251968989540,\t-0.859186669930085970,\t-0.859161085743215590,\t\n-0.859135499408442580,\t-0.859109910925830890,\t-0.859084320295444240,\t-0.859058727517346910,\t-0.859033132591602740,\t-0.859007535518275240,\t-0.858981936297429470,\t-0.858956334929128820,\t\n-0.858930731413437230,\t-0.858905125750419000,\t-0.858879517940137730,\t-0.858853907982657370,\t-0.858828295878042660,\t-0.858802681626357200,\t-0.858777065227665060,\t-0.858751446682030180,\t\n-0.858725825989516740,\t-0.858700203150188690,\t-0.858674578164110190,\t-0.858648951031345310,\t-0.858623321751957440,\t-0.858597690326011850,\t-0.858572056753571950,\t-0.858546421034701910,\t\n-0.858520783169465900,\t-0.858495143157927850,\t-0.858469501000151510,\t-0.858443856696201930,\t-0.858418210246142620,\t-0.858392561650037860,\t-0.858366910907951700,\t-0.858341258019948210,\t\n-0.858315602986091550,\t-0.858289945806445910,\t-0.858264286481075440,\t-0.858238625010043780,\t-0.858212961393416070,\t-0.858187295631255840,\t-0.858161627723627470,\t-0.858135957670595030,\t\n-0.858110285472222570,\t-0.858084611128574040,\t-0.858058934639714500,\t-0.858033256005707570,\t-0.858007575226617410,\t-0.857981892302508430,\t-0.857956207233444680,\t-0.857930520019490330,\t\n-0.857904830660709770,\t-0.857879139157167180,\t-0.857853445508926620,\t-0.857827749716052130,\t-0.857802051778608580,\t-0.857776351696660000,\t-0.857750649470270470,\t-0.857724945099504370,\t\n-0.857699238584425430,\t-0.857673529925098930,\t-0.857647819121588490,\t-0.857622106173958510,\t-0.857596391082273260,\t-0.857570673846597130,\t-0.857544954466994300,\t-0.857519232943528940,\t\n-0.857493509276265660,\t-0.857467783465268530,\t-0.857442055510601490,\t-0.857416325412329820,\t-0.857390593170517250,\t-0.857364858785228280,\t-0.857339122256527200,\t-0.857313383584478170,\t\n-0.857287642769145370,\t-0.857261899810593750,\t-0.857236154708887480,\t-0.857210407464090830,\t-0.857184658076268200,\t-0.857158906545483880,\t-0.857133152871802250,\t-0.857107397055287820,\t\n-0.857081639096004880,\t-0.857055878994017360,\t-0.857030116749390560,\t-0.857004352362188530,\t-0.856978585832475660,\t-0.856952817160316240,\t-0.856927046345774770,\t-0.856901273388915310,\t\n-0.856875498289803140,\t-0.856849721048502100,\t-0.856823941665076800,\t-0.856798160139591650,\t-0.856772376472111130,\t-0.856746590662699650,\t-0.856720802711421700,\t-0.856695012618341800,\t\n-0.856669220383523890,\t-0.856643426007033360,\t-0.856617629488934160,\t-0.856591830829291020,\t-0.856566030028168330,\t-0.856540227085630490,\t-0.856514422001741660,\t-0.856488614776567130,\t\n-0.856462805410171170,\t-0.856436993902618180,\t-0.856411180253972670,\t-0.856385364464299250,\t-0.856359546533662420,\t-0.856333726462126690,\t-0.856307904249756670,\t-0.856282079896616980,\t\n-0.856256253402771450,\t-0.856230424768285920,\t-0.856204593993224240,\t-0.856178761077651010,\t-0.856152926021630960,\t-0.856127088825228140,\t-0.856101249488508080,\t-0.856075408011534810,\t\n-0.856049564394373070,\t-0.856023718637087370,\t-0.855997870739742430,\t-0.855972020702402860,\t-0.855946168525133170,\t-0.855920314207998080,\t-0.855894457751062210,\t-0.855868599154389730,\t\n-0.855842738418046150,\t-0.855816875542095850,\t-0.855791010526603220,\t-0.855765143371633120,\t-0.855739274077250260,\t-0.855713402643518580,\t-0.855687529070504050,\t-0.855661653358270600,\t\n-0.855635775506882970,\t-0.855609895516405980,\t-0.855584013386904150,\t-0.855558129118442310,\t-0.855532242711085190,\t-0.855506354164897510,\t-0.855480463479943440,\t-0.855454570656288720,\t\n-0.855428675693997500,\t-0.855402778593134630,\t-0.855376879353764720,\t-0.855350977975952720,\t-0.855325074459762800,\t-0.855299168805260690,\t-0.855273261012510560,\t-0.855247351081577340,\t\n-0.855221439012525670,\t-0.855195524805420490,\t-0.855169608460326520,\t-0.855143689977308500,\t-0.855117769356431250,\t-0.855091846597759050,\t-0.855065921701357760,\t-0.855039994667291640,\t\n-0.855014065495625530,\t-0.854988134186424280,\t-0.854962200739752710,\t-0.854936265155675110,\t-0.854910327434257430,\t-0.854884387575563840,\t-0.854858445579659290,\t-0.854832501446608610,\t\n-0.854806555176476750,\t-0.854780606769328430,\t-0.854754656225228620,\t-0.854728703544242130,\t-0.854702748726433930,\t-0.854676791771868390,\t-0.854650832680611370,\t-0.854624871452727140,\t\n-0.854598908088280870,\t-0.854572942587337290,\t-0.854546974949960900,\t-0.854521005176217540,\t-0.854495033266171600,\t-0.854469059219888140,\t-0.854443083037431990,\t-0.854417104718868110,\t\n-0.854391124264261560,\t-0.854365141673677160,\t-0.854339156947179880,\t-0.854313170084834760,\t-0.854287181086706200,\t-0.854261189952860160,\t-0.854235196683361230,\t-0.854209201278274160,\t\n-0.854183203737664210,\t-0.854157204061596230,\t-0.854131202250134720,\t-0.854105198303345750,\t-0.854079192221293690,\t-0.854053184004043730,\t-0.854027173651660700,\t-0.854001161164209880,\t\n-0.853975146541756100,\t-0.853949129784364440,\t-0.853923110892099930,\t-0.853897089865027210,\t-0.853871066703212220,\t-0.853845041406719570,\t-0.853819013975614330,\t-0.853792984409961540,\t\n-0.853766952709826280,\t-0.853740918875273260,\t-0.853714882906368320,\t-0.853688844803176190,\t-0.853662804565761930,\t-0.853636762194190600,\t-0.853610717688527480,\t-0.853584671048837510,\t\n-0.853558622275185860,\t-0.853532571367637720,\t-0.853506518326257680,\t-0.853480463151111700,\t-0.853454405842264730,\t-0.853428346399781600,\t-0.853402284823727600,\t-0.853376221114168000,\t\n-0.853350155271167310,\t-0.853324087294791700,\t-0.853298017185105890,\t-0.853271944942175060,\t-0.853245870566064380,\t-0.853219794056838900,\t-0.853193715414564010,\t-0.853167634639304890,\t\n-0.853141551731126600,\t-0.853115466690094530,\t-0.853089379516273280,\t-0.853063290209729040,\t-0.853037198770526530,\t-0.853011105198731020,\t-0.852985009494407810,\t-0.852958911657621610,\t\n-0.852932811688438600,\t-0.852906709586923490,\t-0.852880605353141700,\t-0.852854498987158370,\t-0.852828390489038690,\t-0.852802279858848160,\t-0.852776167096651940,\t-0.852750052202515210,\t\n-0.852723935176503360,\t-0.852697816018681220,\t-0.852671694729115080,\t-0.852645571307869670,\t-0.852619445755010250,\t-0.852593318070602350,\t-0.852567188254711010,\t-0.852541056307401290,\t\n-0.852514922228739480,\t-0.852488786018790300,\t-0.852462647677619150,\t-0.852436507205291400,\t-0.852410364601872360,\t-0.852384219867427410,\t-0.852358073002021930,\t-0.852331924005721220,\t\n-0.852305772878590220,\t-0.852279619620695320,\t-0.852253464232101350,\t-0.852227306712873720,\t-0.852201147063077810,\t-0.852174985282779130,\t-0.852148821372042400,\t-0.852122655330934120,\t\n-0.852096487159519240,\t-0.852070316857863050,\t-0.852044144426031160,\t-0.852017969864088840,\t-0.851991793172101610,\t-0.851965614350134960,\t-0.851939433398254290,\t-0.851913250316524430,\t\n-0.851887065105012000,\t-0.851860877763781940,\t-0.851834688292899660,\t-0.851808496692430640,\t-0.851782302962440400,\t-0.851756107102993880,\t-0.851729909114157690,\t-0.851703708995996570,\t\n-0.851677506748576230,\t-0.851651302371962180,\t-0.851625095866219820,\t-0.851598887231414750,\t-0.851572676467612480,\t-0.851546463574878510,\t-0.851520248553278350,\t-0.851494031402877050,\t\n-0.851467812123741230,\t-0.851441590715935840,\t-0.851415367179526480,\t-0.851389141514578780,\t-0.851362913721157690,\t-0.851336683799329700,\t-0.851310451749160090,\t-0.851284217570714370,\t\n-0.851257981264058050,\t-0.851231742829256840,\t-0.851205502266376260,\t-0.851179259575481910,\t-0.851153014756639400,\t-0.851126767809914360,\t-0.851100518735371960,\t-0.851074267533078690,\t\n-0.851048014203099720,\t-0.851021758745500790,\t-0.850995501160347390,\t-0.850969241447705360,\t-0.850942979607639650,\t-0.850916715640216980,\t-0.850890449545502530,\t-0.850864181323562010,\t\n-0.850837910974460930,\t-0.850811638498265130,\t-0.850785363895040230,\t-0.850759087164851930,\t-0.850732808307765880,\t-0.850706527323847440,\t-0.850680244213163020,\t-0.850653958975778110,\t\n-0.850627671611758230,\t-0.850601382121169090,\t-0.850575090504076650,\t-0.850548796760545960,\t-0.850522500890643740,\t-0.850496202894435280,\t-0.850469902771986310,\t-0.850443600523362540,\t\n-0.850417296148629820,\t-0.850390989647853870,\t-0.850364681021100410,\t-0.850338370268435280,\t-0.850312057389923660,\t-0.850285742385632480,\t-0.850259425255626920,\t-0.850233105999972700,\t\n-0.850206784618735890,\t-0.850180461111981980,\t-0.850154135479776470,\t-0.850127807722186210,\t-0.850101477839276250,\t-0.850075145831112770,\t-0.850048811697761250,\t-0.850022475439287880,\t\n-0.849996137055758160,\t-0.849969796547238250,\t-0.849943453913793780,\t-0.849917109155490570,\t-0.849890762272394240,\t-0.849864413264571410,\t-0.849838062132087570,\t-0.849811708875008680,\t\n-0.849785353493400450,\t-0.849758995987328290,\t-0.849732636356859140,\t-0.849706274602058500,\t-0.849679910722992090,\t-0.849653544719725870,\t-0.849627176592325890,\t-0.849600806340857880,\t\n-0.849574433965387900,\t-0.849548059465981780,\t-0.849521682842705570,\t-0.849495304095624680,\t-0.849468923224805940,\t-0.849442540230314960,\t-0.849416155112217570,\t-0.849389767870579850,\t\n-0.849363378505467730,\t-0.849336987016946600,\t-0.849310593405083520,\t-0.849284197669944010,\t-0.849257799811593990,\t-0.849231399830099430,\t-0.849204997725526380,\t-0.849178593497940780,\t\n-0.849152187147408810,\t-0.849125778673996300,\t-0.849099368077768870,\t-0.849072955358793570,\t-0.849046540517135790,\t-0.849020123552861720,\t-0.848993704466037280,\t-0.848967283256728660,\t\n-0.848940859925001230,\t-0.848914434470922300,\t-0.848888006894557120,\t-0.848861577195971990,\t-0.848835145375232970,\t-0.848808711432405990,\t-0.848782275367557350,\t-0.848755837180752870,\t\n-0.848729396872058950,\t-0.848702954441540980,\t-0.848676509889266130,\t-0.848650063215300010,\t-0.848623614419708680,\t-0.848597163502558320,\t-0.848570710463915080,\t-0.848544255303844590,\t\n-0.848517798022413890,\t-0.848491338619688840,\t-0.848464877095735260,\t-0.848438413450619660,\t-0.848411947684407860,\t-0.848385479797166280,\t-0.848359009788961060,\t-0.848332537659858170,\t\n-0.848306063409923980,\t-0.848279587039224240,\t-0.848253108547825980,\t-0.848226627935794950,\t-0.848200145203197310,\t-0.848173660350099330,\t-0.848147173376566640,\t-0.848120684282666630,\t\n-0.848094193068464790,\t-0.848067699734027620,\t-0.848041204279421090,\t-0.848014706704711570,\t-0.847988207009965240,\t-0.847961705195248490,\t-0.847935201260627380,\t-0.847908695206168290,\t\n-0.847882187031937070,\t-0.847855676738000770,\t-0.847829164324425340,\t-0.847802649791276950,\t-0.847776133138621880,\t-0.847749614366526070,\t-0.847723093475056700,\t-0.847696570464279710,\t\n-0.847670045334261160,\t-0.847643518085067550,\t-0.847616988716765050,\t-0.847590457229420170,\t-0.847563923623099070,\t-0.847537387897868260,\t-0.847510850053793900,\t-0.847484310090942050,\t\n-0.847457768009379770,\t-0.847431223809173130,\t-0.847404677490388390,\t-0.847378129053091960,\t-0.847351578497350320,\t-0.847325025823229220,\t-0.847298471030795920,\t-0.847271914120116490,\t\n-0.847245355091257310,\t-0.847218793944284790,\t-0.847192230679265190,\t-0.847165665296265020,\t-0.847139097795350790,\t-0.847112528176588660,\t-0.847085956440044920,\t-0.847059382585786610,\t\n-0.847032806613879920,\t-0.847006228524391220,\t-0.846979648317386810,\t-0.846953065992933410,\t-0.846926481551096840,\t-0.846899894991944620,\t-0.846873306315542580,\t-0.846846715521957340,\t\n-0.846820122611255170,\t-0.846793527583502790,\t-0.846766930438766610,\t-0.846740331177113110,\t-0.846713729798608710,\t-0.846687126303319990,\t-0.846660520691313030,\t-0.846633912962655220,\t\n-0.846607303117412720,\t-0.846580691155651820,\t-0.846554077077439240,\t-0.846527460882841030,\t-0.846500842571924710,\t-0.846474222144756210,\t-0.846447599601402030,\t-0.846420974941929030,\t\n-0.846394348166403470,\t-0.846367719274892070,\t-0.846341088267461460,\t-0.846314455144178020,\t-0.846287819905108480,\t-0.846261182550319010,\t-0.846234543079876890,\t-0.846207901493848500,\t\n-0.846181257792300360,\t-0.846154611975299060,\t-0.846127964042910800,\t-0.846101313995203050,\t-0.846074661832242110,\t-0.846048007554094370,\t-0.846021351160826660,\t-0.845994692652505710,\t\n-0.845968032029197900,\t-0.845941369290969970,\t-0.845914704437888740,\t-0.845888037470020620,\t-0.845861368387431980,\t-0.845834697190190440,\t-0.845808023878362070,\t-0.845781348452013690,\t\n-0.845754670911212040,\t-0.845727991256023600,\t-0.845701309486514670,\t-0.845674625602753080,\t-0.845647939604804780,\t-0.845621251492736700,\t-0.845594561266615470,\t-0.845567868926507930,\t\n-0.845541174472480560,\t-0.845514477904600440,\t-0.845487779222933940,\t-0.845461078427547590,\t-0.845434375518509080,\t-0.845407670495884610,\t-0.845380963359740890,\t-0.845354254110144750,\t\n-0.845327542747163040,\t-0.845300829270862030,\t-0.845274113681309450,\t-0.845247395978571460,\t-0.845220676162715010,\t-0.845193954233806940,\t-0.845167230191913980,\t-0.845140504037102840,\t\n-0.845113775769440580,\t-0.845087045388993820,\t-0.845060312895828950,\t-0.845033578290013800,\t-0.845006841571614650,\t-0.844980102740698460,\t-0.844953361797331940,\t-0.844926618741582150,\t\n-0.844899873573515150,\t-0.844873126293199110,\t-0.844846376900700190,\t-0.844819625396085350,\t-0.844792871779421420,\t-0.844766116050775340,\t-0.844739358210213950,\t-0.844712598257804090,\t\n-0.844685836193612820,\t-0.844659072017706960,\t-0.844632305730152910,\t-0.844605537331018620,\t-0.844578766820370470,\t-0.844551994198275420,\t-0.844525219464800300,\t-0.844498442620011720,\t\n-0.844471663663977520,\t-0.844444882596764200,\t-0.844418099418438590,\t-0.844391314129067760,\t-0.844364526728718650,\t-0.844337737217458200,\t-0.844310945595353470,\t-0.844284151862471300,\t\n-0.844257356018878860,\t-0.844230558064642420,\t-0.844203757999830160,\t-0.844176955824508470,\t-0.844150151538744400,\t-0.844123345142604900,\t-0.844096536636157020,\t-0.844069726019467390,\t\n-0.844042913292603950,\t-0.844016098455633190,\t-0.843989281508622180,\t-0.843962462451637970,\t-0.843935641284747630,\t-0.843908818008018090,\t-0.843881992621516640,\t-0.843855165125310110,\t\n-0.843828335519465230,\t-0.843801503804050060,\t-0.843774669979130980,\t-0.843747834044775270,\t-0.843720996001050110,\t-0.843694155848022320,\t-0.843667313585758750,\t-0.843640469214327230,\t\n-0.843613622733794700,\t-0.843586774144228000,\t-0.843559923445694420,\t-0.843533070638261000,\t-0.843506215721994910,\t-0.843479358696963330,\t-0.843452499563233320,\t-0.843425638320871580,\t\n-0.843398774969946310,\t-0.843371909510523990,\t-0.843345041942671900,\t-0.843318172266457220,\t-0.843291300481947110,\t-0.843264426589208300,\t-0.843237550588308960,\t-0.843210672479315580,\t\n-0.843183792262295670,\t-0.843156909937316180,\t-0.843130025504444490,\t-0.843103138963747670,\t-0.843076250315292990,\t-0.843049359559147730,\t-0.843022466695379060,\t-0.842995571724053820,\t\n-0.842968674645240060,\t-0.842941775459004620,\t-0.842914874165414770,\t-0.842887970764537700,\t-0.842861065256440220,\t-0.842834157641190520,\t-0.842807247918855530,\t-0.842780336089502310,\t\n-0.842753422153198370,\t-0.842726506110010760,\t-0.842699587960006990,\t-0.842672667703254110,\t-0.842645745339819730,\t-0.842618820869770910,\t-0.842591894293174490,\t-0.842564965610098860,\t\n-0.842538034820610850,\t-0.842511101924777740,\t-0.842484166922666920,\t-0.842457229814345570,\t-0.842430290599880730,\t-0.842403349279340690,\t-0.842376405852792160,\t-0.842349460320302780,\t\n-0.842322512681939580,\t-0.842295562937770190,\t-0.842268611087861880,\t-0.842241657132282050,\t-0.842214701071098080,\t-0.842187742904376920,\t-0.842160782632186740,\t-0.842133820254594710,\t\n-0.842106855771668110,\t-0.842079889183474430,\t-0.842052920490080960,\t-0.842025949691554750,\t-0.841998976787964090,\t-0.841972001779376030,\t-0.841945024665857970,\t-0.841918045447477280,\t\n-0.841891064124301590,\t-0.841864080696398060,\t-0.841837095163834540,\t-0.841810107526678180,\t-0.841783117784996040,\t-0.841756125938856630,\t-0.841729131988326880,\t-0.841702135933474320,\t\n-0.841675137774366420,\t-0.841648137511070700,\t-0.841621135143654220,\t-0.841594130672185250,\t-0.841567124096730960,\t-0.841540115417358960,\t-0.841513104634136640,\t-0.841486091747131510,\t\n-0.841459076756411180,\t-0.841432059662043150,\t-0.841405040464094920,\t-0.841378019162633660,\t-0.841350995757727870,\t-0.841323970249444610,\t-0.841296942637851260,\t-0.841269912923015670,\t\n-0.841242881105005340,\t-0.841215847183887750,\t-0.841188811159730100,\t-0.841161773032600870,\t-0.841134732802567230,\t-0.841107690469696690,\t-0.841080646034056970,\t-0.841053599495715680,\t\n-0.841026550854740430,\t-0.840999500111198620,\t-0.840972447265157740,\t-0.840945392316686190,\t-0.840918335265851140,\t-0.840891276112720190,\t-0.840864214857361180,\t-0.840837151499841510,\t\n-0.840810086040229000,\t-0.840783018478590830,\t-0.840755948814995600,\t-0.840728877049510490,\t-0.840701803182203110,\t-0.840674727213141290,\t-0.840647649142392650,\t-0.840620568970024910,\t\n-0.840593486696105780,\t-0.840566402320702790,\t-0.840539315843883420,\t-0.840512227265716280,\t-0.840485136586268440,\t-0.840458043805607850,\t-0.840430948923802210,\t-0.840403851940919040,\t\n-0.840376752857025840,\t-0.840349651672191330,\t-0.840322548386482570,\t-0.840295442999967500,\t-0.840268335512713740,\t-0.840241225924789230,\t-0.840214114236261580,\t-0.840187000447198740,\t\n-0.840159884557668320,\t-0.840132766567737720,\t-0.840105646477475650,\t-0.840078524286949620,\t-0.840051399996227130,\t-0.840024273605376240,\t-0.839997145114464550,\t-0.839970014523560020,\t\n-0.839942881832730030,\t-0.839915747042043300,\t-0.839888610151567240,\t-0.839861471161369670,\t-0.839834330071518310,\t-0.839807186882081220,\t-0.839780041593126140,\t-0.839752894204720880,\t\n-0.839725744716932950,\t-0.839698593129831190,\t-0.839671439443482880,\t-0.839644283657956070,\t-0.839617125773318480,\t-0.839589965789638070,\t-0.839562803706982770,\t-0.839535639525419990,\t\n-0.839508473245018540,\t-0.839481304865845930,\t-0.839454134387970120,\t-0.839426961811458930,\t-0.839399787136380300,\t-0.839372610362802200,\t-0.839345431490792660,\t-0.839318250520418970,\t\n-0.839291067451750190,\t-0.839263882284853710,\t-0.839236695019797590,\t-0.839209505656649650,\t-0.839182314195477950,\t-0.839155120636350560,\t-0.839127924979334750,\t-0.839100727224499690,\t\n-0.839073527371912760,\t-0.839046325421642040,\t-0.839019121373755560,\t-0.838991915228321280,\t-0.838964706985407150,\t-0.838937496645081220,\t-0.838910284207411650,\t-0.838883069672465840,\t\n-0.838855853040312850,\t-0.838828634311020170,\t-0.838801413484655980,\t-0.838774190561288210,\t-0.838746965540985050,\t-0.838719738423813870,\t-0.838692509209843840,\t-0.838665277899142580,\t\n-0.838638044491778150,\t-0.838610808987818590,\t-0.838583571387331970,\t-0.838556331690386460,\t-0.838529089897050110,\t-0.838501846007391080,\t-0.838474600021476890,\t-0.838447351939376690,\t\n-0.838420101761158220,\t-0.838392849486889410,\t-0.838365595116638440,\t-0.838338338650473470,\t-0.838311080088462780,\t-0.838283819430673760,\t-0.838256556677175800,\t-0.838229291828036290,\t\n-0.838202024883323740,\t-0.838174755843105970,\t-0.838147484707451370,\t-0.838120211476428120,\t-0.838092936150104270,\t-0.838065658728547660,\t-0.838038379211827330,\t-0.838011097600011020,\t\n-0.837983813893167010,\t-0.837956528091363450,\t-0.837929240194668630,\t-0.837901950203150610,\t-0.837874658116877340,\t-0.837847363935917850,\t-0.837820067660339900,\t-0.837792769290211960,\t\n-0.837765468825601880,\t-0.837738166266578270,\t-0.837710861613209180,\t-0.837683554865563010,\t-0.837656246023707360,\t-0.837628935087711630,\t-0.837601622057643550,\t-0.837574306933571490,\t\n-0.837546989715563630,\t-0.837519670403688240,\t-0.837492348998013720,\t-0.837465025498607800,\t-0.837437699905539850,\t-0.837410372218877600,\t-0.837383042438689440,\t-0.837355710565043650,\t\n-0.837328376598008630,\t-0.837301040537652640,\t-0.837273702384044080,\t-0.837246362137251340,\t-0.837219019797342030,\t-0.837191675364385770,\t-0.837164328838450380,\t-0.837136980219604030,\t\n-0.837109629507915340,\t-0.837082276703452480,\t-0.837054921806283490,\t-0.837027564816477660,\t-0.837000205734102940,\t-0.836972844559227710,\t-0.836945481291920370,\t-0.836918115932249300,\t\n-0.836890748480283000,\t-0.836863378936089750,\t-0.836836007299738170,\t-0.836808633571295980,\t-0.836781257750832670,\t-0.836753879838416310,\t-0.836726499834115180,\t-0.836699117737997880,\t\n-0.836671733550132690,\t-0.836644347270588230,\t-0.836616958899432440,\t-0.836589568436734710,\t-0.836562175882562990,\t-0.836534781236985880,\t-0.836507384500071890,\t-0.836479985671889300,\t\n-0.836452584752506830,\t-0.836425181741992870,\t-0.836397776640415590,\t-0.836370369447844150,\t-0.836342960164346950,\t-0.836315548789992260,\t-0.836288135324848800,\t-0.836260719768984860,\t\n-0.836233302122469160,\t-0.836205882385369750,\t-0.836178460557756130,\t-0.836151036639696370,\t-0.836123610631259060,\t-0.836096182532512610,\t-0.836068752343525730,\t-0.836041320064367040,\t\n-0.836013885695105040,\t-0.835986449235807780,\t-0.835959010686544880,\t-0.835931570047384500,\t-0.835904127318395250,\t-0.835876682499645530,\t-0.835849235591204160,\t-0.835821786593139770,\t\n-0.835794335505520400,\t-0.835766882328415670,\t-0.835739427061893750,\t-0.835711969706023240,\t-0.835684510260872760,\t-0.835657048726511140,\t-0.835629585103006780,\t-0.835602119390428500,\t\n-0.835574651588844920,\t-0.835547181698324200,\t-0.835519709718935970,\t-0.835492235650748590,\t-0.835464759493830480,\t-0.835437281248250560,\t-0.835409800914077460,\t-0.835382318491379340,\t\n-0.835354833980225920,\t-0.835327347380685370,\t-0.835299858692826520,\t-0.835272367916717990,\t-0.835244875052428500,\t-0.835217380100026880,\t-0.835189883059581750,\t-0.835162383931162040,\t\n-0.835134882714835710,\t-0.835107379410672810,\t-0.835079874018741400,\t-0.835052366539110300,\t-0.835024856971848250,\t-0.834997345317024080,\t-0.834969831574706610,\t-0.834942315744964030,\t\n-0.834914797827866150,\t-0.834887277823481270,\t-0.834859755731878210,\t-0.834832231553125800,\t-0.834804705287292670,\t-0.834777176934447970,\t-0.834749646494660210,\t-0.834722113967997890,\t\n-0.834694579354530730,\t-0.834667042654327120,\t-0.834639503867455890,\t-0.834611962993985990,\t-0.834584420033986140,\t-0.834556874987525180,\t-0.834529327854671600,\t-0.834501778635495130,\t\n-0.834474227330064270,\t-0.834446673938447850,\t-0.834419118460714700,\t-0.834391560896933780,\t-0.834364001247174030,\t-0.834336439511504270,\t-0.834308875689992790,\t-0.834281309782709650,\t\n-0.834253741789723340,\t-0.834226171711102580,\t-0.834198599546916440,\t-0.834171025297233750,\t-0.834143448962123560,\t-0.834115870541654260,\t-0.834088290035895690,\t-0.834060707444916450,\t\n-0.834033122768785380,\t-0.834005536007571660,\t-0.833977947161343990,\t-0.833950356230171440,\t-0.833922763214123060,\t-0.833895168113267690,\t-0.833867570927673940,\t-0.833839971657411750,\t\n-0.833812370302549730,\t-0.833784766863156720,\t-0.833757161339301780,\t-0.833729553731053840,\t-0.833701944038481630,\t-0.833674332261655100,\t-0.833646718400642640,\t-0.833619102455513410,\t\n-0.833591484426336460,\t-0.833563864313180860,\t-0.833536242116115430,\t-0.833508617835209460,\t-0.833480991470532010,\t-0.833453363022151560,\t-0.833425732490138180,\t-0.833398099874560480,\t\n-0.833370465175487520,\t-0.833342828392988340,\t-0.833315189527132240,\t-0.833287548577987590,\t-0.833259905545624570,\t-0.833232260430111780,\t-0.833204613231518290,\t-0.833176963949913360,\t\n-0.833149312585365950,\t-0.833121659137945230,\t-0.833094003607720460,\t-0.833066345994760590,\t-0.833038686299134470,\t-0.833011024520912020,\t-0.832983360660162100,\t-0.832955694716953630,\t\n-0.832928026691356130,\t-0.832900356583438420,\t-0.832872684393269890,\t-0.832845010120919050,\t-0.832817333766456280,\t-0.832789655329950200,\t-0.832761974811469850,\t-0.832734292211084750,\t\n-0.832706607528863720,\t-0.832678920764876370,\t-0.832651231919191550,\t-0.832623540991878190,\t-0.832595847983006570,\t-0.832568152892645190,\t-0.832540455720863550,\t-0.832512756467730710,\t\n-0.832485055133316050,\t-0.832457351717688640,\t-0.832429646220917420,\t-0.832401938643072550,\t-0.832374228984222860,\t-0.832346517244437640,\t-0.832318803423786060,\t-0.832291087522337490,\t\n-0.832263369540161220,\t-0.832235649477326530,\t-0.832207927333902700,\t-0.832180203109958550,\t-0.832152476805564370,\t-0.832124748420788980,\t-0.832097017955701790,\t-0.832069285410372060,\t\n-0.832041550784869080,\t-0.832013814079261670,\t-0.831986075293620340,\t-0.831958334428013700,\t-0.831930591482511360,\t-0.831902846457182490,\t-0.831875099352096470,\t-0.831847350167322700,\t\n-0.831819598902930560,\t-0.831791845558989440,\t-0.831764090135568180,\t-0.831736332632737270,\t-0.831708573050565450,\t-0.831680811389122200,\t-0.831653047648476920,\t-0.831625281828699100,\t\n-0.831597513929857480,\t-0.831569743952022660,\t-0.831541971895263470,\t-0.831514197759649300,\t-0.831486421545249650,\t-0.831458643252133920,\t-0.831430862880371600,\t-0.831403080430032190,\t\n-0.831375295901184970,\t-0.831347509293899110,\t-0.831319720608244880,\t-0.831291929844291460,\t-0.831264137002108110,\t-0.831236342081764450,\t-0.831208545083329970,\t-0.831180746006874080,\t\n-0.831152944852465940,\t-0.831125141620175810,\t-0.831097336310072880,\t-0.831069528922226630,\t-0.831041719456706460,\t-0.831013907913582090,\t-0.830986094292922920,\t-0.830958278594798540,\t\n-0.830930460819277910,\t-0.830902640966431630,\t-0.830874819036328870,\t-0.830846995029038910,\t-0.830819168944631480,\t-0.830791340783176180,\t-0.830763510544742510,\t-0.830735678229399640,\t\n-0.830707843837217960,\t-0.830680007368266750,\t-0.830652168822615500,\t-0.830624328200333830,\t-0.830596485501491340,\t-0.830568640726157550,\t-0.830540793874402270,\t-0.830512944946295020,\t\n-0.830485093941904840,\t-0.830457240861302460,\t-0.830429385704556930,\t-0.830401528471737980,\t-0.830373669162915220,\t-0.830345807778158250,\t-0.830317944317536250,\t-0.830290078781119930,\t\n-0.830262211168978360,\t-0.830234341481181250,\t-0.830206469717798430,\t-0.830178595878899310,\t-0.830150719964553700,\t-0.830122841974831330,\t-0.830094961909801920,\t-0.830067079769534530,\t\n-0.830039195554099880,\t-0.830011309263567370,\t-0.829983420898006470,\t-0.829955530457487160,\t-0.829927637942078910,\t-0.829899743351851020,\t-0.829871846686874410,\t-0.829843947947218050,\t\n-0.829816047132951980,\t-0.829788144244145710,\t-0.829760239280869060,\t-0.829732332243191760,\t-0.829704423131183750,\t-0.829676511944914650,\t-0.829648598684453730,\t-0.829620683349871820,\t\n-0.829592765941238210,\t-0.829564846458622720,\t-0.829536924902095070,\t-0.829509001271725110,\t-0.829481075567582660,\t-0.829453147789737000,\t-0.829425217938258960,\t-0.829397286013217940,\t\n-0.829369352014683650,\t-0.829341415942726030,\t-0.829313477797414820,\t-0.829285537578819950,\t-0.829257595287011260,\t-0.829229650922058030,\t-0.829201704484031190,\t-0.829173755973000140,\t\n-0.829145805389034600,\t-0.829117852732204620,\t-0.829089898002579930,\t-0.829061941200230580,\t-0.829033982325225850,\t-0.829006021377636680,\t-0.828978058357532350,\t-0.828950093264983030,\t\n-0.828922126100058440,\t-0.828894156862828520,\t-0.828866185553363110,\t-0.828838212171732370,\t-0.828810236718006020,\t-0.828782259192253680,\t-0.828754279594546060,\t-0.828726297924952780,\t\n-0.828698314183543780,\t-0.828670328370389010,\t-0.828642340485558400,\t-0.828614350529121470,\t-0.828586358501149150,\t-0.828558364401710930,\t-0.828530368230876780,\t-0.828502369988716740,\t\n-0.828474369675300750,\t-0.828446367290698870,\t-0.828418362834981050,\t-0.828390356308217330,\t-0.828362347710477120,\t-0.828334337041831680,\t-0.828306324302350290,\t-0.828278309492103240,\t\n-0.828250292611160340,\t-0.828222273659591670,\t-0.828194252637466820,\t-0.828166229544856860,\t-0.828138204381831280,\t-0.828110177148460250,\t-0.828082147844813820,\t-0.828054116470961940,\t\n-0.828026083026974780,\t-0.827998047512922390,\t-0.827970009928874930,\t-0.827941970274901910,\t-0.827913928551074490,\t-0.827885884757462280,\t-0.827857838894135330,\t-0.827829790961163710,\t\n-0.827801740958617690,\t-0.827773688886567330,\t-0.827745634745082230,\t-0.827717578534233560,\t-0.827689520254090930,\t-0.827661459904724510,\t-0.827633397486204460,\t-0.827605332998600840,\t\n-0.827577266441983930,\t-0.827549197816423890,\t-0.827521127121990330,\t-0.827493054358754420,\t-0.827464979526785880,\t-0.827436902626154880,\t-0.827408823656931690,\t-0.827380742619186370,\t\n-0.827352659512989200,\t-0.827324574338409890,\t-0.827296487095519730,\t-0.827268397784388210,\t-0.827240306405085830,\t-0.827212212957682660,\t-0.827184117442248850,\t-0.827156019858854900,\t\n-0.827127920207570750,\t-0.827099818488466370,\t-0.827071714701613000,\t-0.827043608847080280,\t-0.827015500924938580,\t-0.826987390935258080,\t-0.826959278878109050,\t-0.826931164753561990,\t\n-0.826903048561686390,\t-0.826874930302553660,\t-0.826846809976233720,\t-0.826818687582796640,\t-0.826790563122312920,\t-0.826762436594852710,\t-0.826734308000486420,\t-0.826706177339284420,\t\n-0.826678044611317000,\t-0.826649909816653870,\t-0.826621772955366540,\t-0.826593634027524730,\t-0.826565493033198930,\t-0.826537349972459310,\t-0.826509204845376270,\t-0.826481057652019850,\t\n-0.826452908392461220,\t-0.826424757066770320,\t-0.826396603675017440,\t-0.826368448217273180,\t-0.826340290693607700,\t-0.826312131104091630,\t-0.826283969448795120,\t-0.826255805727788780,\t\n-0.826227639941142340,\t-0.826199472088927300,\t-0.826171302171213600,\t-0.826143130188071620,\t-0.826114956139571870,\t-0.826086780025784730,\t-0.826058601846780590,\t-0.826030421602629520,\t\n-0.826002239293402770,\t-0.825974054919170530,\t-0.825945868480003180,\t-0.825917679975971100,\t-0.825889489407144790,\t-0.825861296773594770,\t-0.825833102075391510,\t-0.825804905312605090,\t\n-0.825776706485306770,\t-0.825748505593566720,\t-0.825720302637455440,\t-0.825692097617043430,\t-0.825663890532401190,\t-0.825635681383599110,\t-0.825607470170707460,\t-0.825579256893797520,\t\n-0.825551041552939460,\t-0.825522824148203880,\t-0.825494604679661180,\t-0.825466383147381970,\t-0.825438159551436850,\t-0.825409933891896210,\t-0.825381706168830330,\t-0.825353476382310710,\t\n-0.825325244532407300,\t-0.825297010619190810,\t-0.825268774642731850,\t-0.825240536603100930,\t-0.825212296500368650,\t-0.825184054334605180,\t-0.825155810105882010,\t-0.825127563814269330,\t\n-0.825099315459837720,\t-0.825071065042657930,\t-0.825042812562800320,\t-0.825014558020335850,\t-0.824986301415334910,\t-0.824958042747868100,\t-0.824929782018005820,\t-0.824901519225819560,\t\n-0.824873254371379480,\t-0.824844987454756320,\t-0.824816718476020670,\t-0.824788447435243150,\t-0.824760174332494040,\t-0.824731899167845060,\t-0.824703621941366260,\t-0.824675342653128470,\t\n-0.824647061303202310,\t-0.824618777891658490,\t-0.824590492418567740,\t-0.824562204884000670,\t-0.824533915288028220,\t-0.824505623630720330,\t-0.824477329912148950,\t-0.824449034132384350,\t\n-0.824420736291497040,\t-0.824392436389557950,\t-0.824364134426637700,\t-0.824335830402807220,\t-0.824307524318136590,\t-0.824279216172697620,\t-0.824250905966560700,\t-0.824222593699796450,\t\n-0.824194279372475690,\t-0.824165962984669380,\t-0.824137644536448000,\t-0.824109324027882620,\t-0.824081001459043390,\t-0.824052676830002050,\t-0.824024350140829200,\t-0.823996021391595330,\t\n-0.823967690582371510,\t-0.823939357713228350,\t-0.823911022784236890,\t-0.823882685795467420,\t-0.823854346746991650,\t-0.823826005638879980,\t-0.823797662471203340,\t-0.823769317244032570,\t\n-0.823740969957438510,\t-0.823712620611491970,\t-0.823684269206264030,\t-0.823655915741824730,\t-0.823627560218246240,\t-0.823599202635598830,\t-0.823570842993953330,\t-0.823542481293380810,\t\n-0.823514117533952090,\t-0.823485751715738120,\t-0.823457383838809180,\t-0.823429013903237310,\t-0.823400641909092900,\t-0.823372267856446900,\t-0.823343891745370260,\t-0.823315513575933800,\t\n-0.823287133348208690,\t-0.823258751062265650,\t-0.823230366718175730,\t-0.823201980316009440,\t-0.823173591855838720,\t-0.823145201337733940,\t-0.823116808761766180,\t-0.823088414128006370,\t\n-0.823060017436525570,\t-0.823031618687394270,\t-0.823003217880684420,\t-0.822974815016466410,\t-0.822946410094811510,\t-0.822918003115790440,\t-0.822889594079474480,\t-0.822861182985934470,\t\n-0.822832769835241560,\t-0.822804354627466710,\t-0.822775937362680400,\t-0.822747518040954810,\t-0.822719096662360430,\t-0.822690673226968320,\t-0.822662247734849420,\t-0.822633820186075000,\t\n-0.822605390580716020,\t-0.822576958918843080,\t-0.822548525200528240,\t-0.822520089425842090,\t-0.822491651594855710,\t-0.822463211707640140,\t-0.822434769764266550,\t-0.822406325764806100,\t\n-0.822377879709329850,\t-0.822349431597908300,\t-0.822320981430613720,\t-0.822292529207516720,\t-0.822264074928688360,\t-0.822235618594199910,\t-0.822207160204122320,\t-0.822178699758526750,\t\n-0.822150237257484040,\t-0.822121772701066230,\t-0.822093306089344060,\t-0.822064837422388450,\t-0.822036366700270920,\t-0.822007893923062390,\t-0.821979419090834160,\t-0.821950942203657280,\t\n-0.821922463261602680,\t-0.821893982264742310,\t-0.821865499213147110,\t-0.821837014106888030,\t-0.821808526946036460,\t-0.821780037730663550,\t-0.821751546460840700,\t-0.821723053136638290,\t\n-0.821694557758128830,\t-0.821666060325383030,\t-0.821637560838471950,\t-0.821609059297467080,\t-0.821580555702439490,\t-0.821552050053460550,\t-0.821523542350601430,\t-0.821495032593933530,\t\n-0.821466520783527550,\t-0.821438006919455790,\t-0.821409491001788950,\t-0.821380973030598320,\t-0.821352453005955390,\t-0.821323930927931210,\t-0.821295406796596850,\t-0.821266880612024350,\t\n-0.821238352374284660,\t-0.821209822083449170,\t-0.821181289739589040,\t-0.821152755342775760,\t-0.821124218893080520,\t-0.821095680390574790,\t-0.821067139835329750,\t-0.821038597227416460,\t\n-0.821010052566907180,\t-0.820981505853872750,\t-0.820952957088384560,\t-0.820924406270514000,\t-0.820895853400332330,\t-0.820867298477911180,\t-0.820838741503321150,\t-0.820810182476634840,\t\n-0.820781621397922990,\t-0.820753058267257200,\t-0.820724493084708740,\t-0.820695925850349010,\t-0.820667356564249490,\t-0.820638785226481480,\t-0.820610211837116130,\t-0.820581636396225720,\t\n-0.820553058903881190,\t-0.820524479360154050,\t-0.820495897765115670,\t-0.820467314118837550,\t-0.820438728421391210,\t-0.820410140672847450,\t-0.820381550873279020,\t-0.820352959022756510,\t\n-0.820324365121351650,\t-0.820295769169135940,\t-0.820267171166180750,\t-0.820238571112557710,\t-0.820209969008338200,\t-0.820181364853593280,\t-0.820152758648395430,\t-0.820124150392815610,\t\n-0.820095540086925530,\t-0.820066927730796590,\t-0.820038313324500280,\t-0.820009696868108210,\t-0.819981078361691430,\t-0.819952457805322330,\t-0.819923835199072190,\t-0.819895210543012510,\t\n-0.819866583837214670,\t-0.819837955081750500,\t-0.819809324276691400,\t-0.819780691422108960,\t-0.819752056518074810,\t-0.819723419564659990,\t-0.819694780561937120,\t-0.819666139509977350,\t\n-0.819637496408852200,\t-0.819608851258633360,\t-0.819580204059392250,\t-0.819551554811200230,\t-0.819522903514129820,\t-0.819494250168252170,\t-0.819465594773638890,\t-0.819436937330361600,\t\n-0.819408277838492020,\t-0.819379616298101740,\t-0.819350952709262390,\t-0.819322287072045690,\t-0.819293619386522680,\t-0.819264949652766190,\t-0.819236277870847300,\t-0.819207604040837700,\t\n-0.819178928162809130,\t-0.819150250236833190,\t-0.819121570262981710,\t-0.819092888241325760,\t-0.819064204171938040,\t-0.819035518054889940,\t-0.819006829890252970,\t-0.818978139678098960,\t\n-0.818949447418499510,\t-0.818920753111526460,\t-0.818892056757251630,\t-0.818863358355746080,\t-0.818834657907082650,\t-0.818805955411332500,\t-0.818777250868567560,\t-0.818748544278859460,\t\n-0.818719835642280010,\t-0.818691124958900950,\t-0.818662412228793660,\t-0.818633697452030740,\t-0.818604980628683590,\t-0.818576261758824030,\t-0.818547540842523790,\t-0.818518817879854700,\t\n-0.818490092870888590,\t-0.818461365815697170,\t-0.818432636714351960,\t-0.818403905566925550,\t-0.818375172373489450,\t-0.818346437134115370,\t-0.818317699848875260,\t-0.818288960517840840,\t\n-0.818260219141084040,\t-0.818231475718676160,\t-0.818202730250690120,\t-0.818173982737197210,\t-0.818145233178269480,\t-0.818116481573978540,\t-0.818087727924396440,\t-0.818058972229595010,\t\n-0.818030214489646190,\t-0.818001454704621820,\t-0.817972692874593290,\t-0.817943928999633530,\t-0.817915163079813930,\t-0.817886395115206440,\t-0.817857625105882890,\t-0.817828853051915440,\t\n-0.817800078953375250,\t-0.817771302810335390,\t-0.817742524622867230,\t-0.817713744391042830,\t-0.817684962114934020,\t-0.817656177794612750,\t-0.817627391430151170,\t-0.817598603021621020,\t\n-0.817569812569094450,\t-0.817541020072642730,\t-0.817512225532339040,\t-0.817483428948254760,\t-0.817454630320461950,\t-0.817425829649032430,\t-0.817397026934038480,\t-0.817368222175551940,\t\n-0.817339415373644300,\t-0.817310606528388610,\t-0.817281795639856480,\t-0.817252982708119860,\t-0.817224167733250680,\t-0.817195350715321120,\t-0.817166531654403230,\t-0.817137710550569050,\t\n-0.817108887403889980,\t-0.817080062214439180,\t-0.817051234982288380,\t-0.817022405707509390,\t-0.816993574390174390,\t-0.816964741030355430,\t-0.816935905628124680,\t-0.816907068183553630,\t\n-0.816878228696715450,\t-0.816849387167681630,\t-0.816820543596524340,\t-0.816791697983315750,\t-0.816762850328127900,\t-0.816734000631032960,\t-0.816705148892102990,\t-0.816676295111409600,\t\n-0.816647439289026060,\t-0.816618581425023860,\t-0.816589721519475180,\t-0.816560859572452280,\t-0.816531995584027230,\t-0.816503129554272070,\t-0.816474261483258630,\t-0.816445391371060090,\t\n-0.816416519217748050,\t-0.816387645023394780,\t-0.816358768788072340,\t-0.816329890511852900,\t-0.816301010194808830,\t-0.816272127837012200,\t-0.816243243438535270,\t-0.816214356999449770,\t\n-0.816185468519828870,\t-0.816156577999744170,\t-0.816127685439268170,\t-0.816098790838472920,\t-0.816069894197430590,\t-0.816040995516213120,\t-0.816012094794893670,\t-0.815983192033543970,\t\n-0.815954287232236290,\t-0.815925380391042900,\t-0.815896471510036080,\t-0.815867560589288000,\t-0.815838647628871150,\t-0.815809732628857590,\t-0.815780815589319140,\t-0.815751896510329200,\t\n-0.815722975391959590,\t-0.815694052234282490,\t-0.815665127037370260,\t-0.815636199801295200,\t-0.815607270526129140,\t-0.815578339211945450,\t-0.815549405858815860,\t-0.815520470466812860,\t\n-0.815491533036008520,\t-0.815462593566475440,\t-0.815433652058285880,\t-0.815404708511512140,\t-0.815375762926226710,\t-0.815346815302501300,\t-0.815317865640409420,\t-0.815288913940022790,\t\n-0.815259960201414000,\t-0.815231004424655240,\t-0.815202046609818880,\t-0.815173086756977530,\t-0.815144124866202910,\t-0.815115160937568530,\t-0.815086194971146210,\t-0.815057226967008330,\t\n-0.815028256925227510,\t-0.814999284845875920,\t-0.814970310729026260,\t-0.814941334574750710,\t-0.814912356383121320,\t-0.814883376154211690,\t-0.814854393888093440,\t-0.814825409584839290,\t\n-0.814796423244521620,\t-0.814767434867212930,\t-0.814738444452985600,\t-0.814709452001911580,\t-0.814680457514064590,\t-0.814651460989516350,\t-0.814622462428339470,\t-0.814593461830606440,\t\n-0.814564459196389870,\t-0.814535454525762040,\t-0.814506447818795550,\t-0.814477439075562910,\t-0.814448428296136280,\t-0.814419415480589050,\t-0.814390400628993260,\t-0.814361383741421530,\t\n-0.814332364817946240,\t-0.814303343858640120,\t-0.814274320863575100,\t-0.814245295832824790,\t-0.814216268766461250,\t-0.814187239664556970,\t-0.814158208527184680,\t-0.814129175354416870,\t\n-0.814100140146326030,\t-0.814071102902984900,\t-0.814042063624466070,\t-0.814013022310841490,\t-0.813983978962184880,\t-0.813954933578568300,\t-0.813925886160064450,\t-0.813896836706745840,\t\n-0.813867785218685190,\t-0.813838731695954550,\t-0.813809676138627540,\t-0.813780618546776410,\t-0.813751558920473680,\t-0.813722497259792070,\t-0.813693433564804170,\t-0.813664367835582710,\t\n-0.813635300072200420,\t-0.813606230274729780,\t-0.813577158443243080,\t-0.813548084577814020,\t-0.813519008678514680,\t-0.813489930745417980,\t-0.813460850778596310,\t-0.813431768778122510,\t\n-0.813402684744069290,\t-0.813373598676508940,\t-0.813344510575515050,\t-0.813315420441159900,\t-0.813286328273516100,\t-0.813257234072656600,\t-0.813228137838654000,\t-0.813199039571581020,\t\n-0.813169939271510490,\t-0.813140836938514580,\t-0.813111732572667000,\t-0.813082626174040150,\t-0.813053517742706840,\t-0.813024407278739590,\t-0.812995294782211440,\t-0.812966180253194890,\t\n-0.812937063691762550,\t-0.812907945097987920,\t-0.812878824471943600,\t-0.812849701813702090,\t-0.812820577123336330,\t-0.812791450400919160,\t-0.812762321646523400,\t-0.812733190860221780,\t\n-0.812704058042087120,\t-0.812674923192191920,\t-0.812645786310609910,\t-0.812616647397413350,\t-0.812587506452675300,\t-0.812558363476468370,\t-0.812529218468865610,\t-0.812500071429939190,\t\n-0.812470922359763150,\t-0.812441771258409880,\t-0.812412618125952110,\t-0.812383462962462780,\t-0.812354305768014820,\t-0.812325146542681180,\t-0.812295985286534570,\t-0.812266821999648060,\t\n-0.812237656682093910,\t-0.812208489333946180,\t-0.812179319955277260,\t-0.812150148546159970,\t-0.812120975106667250,\t-0.812091799636872170,\t-0.812062622136847100,\t-0.812033442606665990,\t\n-0.812004261046401330,\t-0.811975077456125850,\t-0.811945891835912810,\t-0.811916704185835060,\t-0.811887514505965410,\t-0.811858322796377040,\t-0.811829129057143000,\t-0.811799933288335440,\t\n-0.811770735490028650,\t-0.811741535662295010,\t-0.811712333805207460,\t-0.811683129918839170,\t-0.811653924003262970,\t-0.811624716058552020,\t-0.811595506084778820,\t-0.811566294082017300,\t\n-0.811537080050340090,\t-0.811507863989820110,\t-0.811478645900530430,\t-0.811449425782544310,\t-0.811420203635934480,\t-0.811390979460774210,\t-0.811361753257135890,\t-0.811332525025093790,\t\n-0.811303294764720410,\t-0.811274062476088690,\t-0.811244828159271790,\t-0.811215591814342880,\t-0.811186353441375130,\t-0.811157113040440800,\t-0.811127870611614290,\t-0.811098626154968080,\t\n-0.811069379670575240,\t-0.811040131158509040,\t-0.811010880618842410,\t-0.810981628051648640,\t-0.810952373457000890,\t-0.810923116834971540,\t-0.810893858185635090,\t-0.810864597509063810,\t\n-0.810835334805331100,\t-0.810806070074510110,\t-0.810776803316673900,\t-0.810747534531895630,\t-0.810718263720248130,\t-0.810688990881805350,\t-0.810659716016640220,\t-0.810630439124825690,\t\n-0.810601160206435130,\t-0.810571879261541730,\t-0.810542596290218520,\t-0.810513311292538900,\t-0.810484024268575910,\t-0.810454735218402390,\t-0.810425444142092610,\t-0.810396151039719070,\t\n-0.810366855911355270,\t-0.810337558757074360,\t-0.810308259576949520,\t-0.810278958371053460,\t-0.810249655139460570,\t-0.810220349882243450,\t-0.810191042599475610,\t-0.810161733291230090,\t\n-0.810132421957580170,\t-0.810103108598599240,\t-0.810073793214360570,\t-0.810044475804937440,\t-0.810015156370402560,\t-0.809985834910830320,\t-0.809956511426293550,\t-0.809927185916865410,\t\n-0.809897858382619300,\t-0.809868528823628590,\t-0.809839197239966560,\t-0.809809863631706040,\t-0.809780527998921310,\t-0.809751190341685300,\t-0.809721850660071300,\t-0.809692508954152790,\t\n-0.809663165224002830,\t-0.809633819469695040,\t-0.809604471691302670,\t-0.809575121888898690,\t-0.809545770062557350,\t-0.809516416212351600,\t-0.809487060338354820,\t-0.809457702440640410,\t\n-0.809428342519281640,\t-0.809398980574352110,\t-0.809369616605924550,\t-0.809340250614073550,\t-0.809310882598871850,\t-0.809281512560392930,\t-0.809252140498710300,\t-0.809222766413897340,\t\n-0.809193390306027440,\t-0.809164012175173970,\t-0.809134632021410010,\t-0.809105249844810030,\t-0.809075865645446870,\t-0.809046479423394030,\t-0.809017091178725110,\t-0.808987700911513400,\t\n-0.808958308621832380,\t-0.808928914309755110,\t-0.808899517975356090,\t-0.808870119618708250,\t-0.808840719239885100,\t-0.808811316838960240,\t-0.808781912416006940,\t-0.808752505971099040,\t\n-0.808723097504309710,\t-0.808693687015712760,\t-0.808664274505381030,\t-0.808634859973389130,\t-0.808605443419810000,\t-0.808576024844717360,\t-0.808546604248184700,\t-0.808517181630285410,\t\n-0.808487756991092650,\t-0.808458330330681150,\t-0.808428901649123730,\t-0.808399470946494000,\t-0.808370038222865680,\t-0.808340603478312270,\t-0.808311166712907370,\t-0.808281727926724480,\t\n-0.808252287119837320,\t-0.808222844292318940,\t-0.808193399444243840,\t-0.808163952575685410,\t-0.808134503686717020,\t-0.808105052777412400,\t-0.808075599847845050,\t-0.808046144898088790,\t\n-0.808016687928216680,\t-0.807987228938303330,\t-0.807957767928421890,\t-0.807928304898646090,\t-0.807898839849049420,\t-0.807869372779705720,\t-0.807839903690688590,\t-0.807810432582071640,\t\n-0.807780959453928250,\t-0.807751484306332810,\t-0.807722007139358710,\t-0.807692527953079660,\t-0.807663046747569170,\t-0.807633563522901170,\t-0.807604078279149150,\t-0.807574591016386510,\t\n-0.807545101734687960,\t-0.807515610434126560,\t-0.807486117114776140,\t-0.807456621776710400,\t-0.807427124420003190,\t-0.807397625044728120,\t-0.807368123650959000,\t-0.807338620238769120,\t\n-0.807309114808233090,\t-0.807279607359424390,\t-0.807250097892416530,\t-0.807220586407283560,\t-0.807191072904098970,\t-0.807161557382936820,\t-0.807132039843870270,\t-0.807102520286974160,\t\n-0.807072998712321630,\t-0.807043475119986640,\t-0.807013949510043020,\t-0.806984421882564470,\t-0.806954892237624950,\t-0.806925360575298070,\t-0.806895826895657860,\t-0.806866291198777620,\t\n-0.806836753484732050,\t-0.806807213753594770,\t-0.806777672005439260,\t-0.806748128240339700,\t-0.806718582458369800,\t-0.806689034659602840,\t-0.806659484844113870,\t-0.806629933011976270,\t\n-0.806600379163263770,\t-0.806570823298050300,\t-0.806541265416409690,\t-0.806511705518416110,\t-0.806482143604143160,\t-0.806452579673664790,\t-0.806423013727054610,\t-0.806393445764387320,\t\n-0.806363875785736430,\t-0.806334303791175770,\t-0.806304729780779490,\t-0.806275153754621330,\t-0.806245575712775220,\t-0.806215995655314770,\t-0.806186413582314800,\t-0.806156829493848810,\t\n-0.806127243389990640,\t-0.806097655270814450,\t-0.806068065136394170,\t-0.806038472986803640,\t-0.806008878822117030,\t-0.805979282642407590,\t-0.805949684447750500,\t-0.805920084238219260,\t\n-0.805890482013887690,\t-0.805860877774830060,\t-0.805831271521120110,\t-0.805801663252832090,\t-0.805772052970039290,\t-0.805742440672816970,\t-0.805712826361238420,\t-0.805683210035377910,\t\n-0.805653591695309370,\t-0.805623971341106860,\t-0.805594348972844430,\t-0.805564724590596030,\t-0.805535098194435360,\t-0.805505469784437490,\t-0.805475839360675900,\t-0.805446206923224770,\t\n-0.805416572472158030,\t-0.805386936007549960,\t-0.805357297529474490,\t-0.805327657038005350,\t-0.805298014533217480,\t-0.805268370015184590,\t-0.805238723483980840,\t-0.805209074939680190,\t\n-0.805179424382356900,\t-0.805149771812085020,\t-0.805120117228938730,\t-0.805090460632992170,\t-0.805060802024318960,\t-0.805031141402994250,\t-0.805001478769091670,\t-0.804971814122685370,\t\n-0.804942147463849510,\t-0.804912478792658370,\t-0.804882808109185440,\t-0.804853135413506000,\t-0.804823460705693880,\t-0.804793783985822910,\t-0.804764105253967580,\t-0.804734424510201940,\t\n-0.804704741754600270,\t-0.804675056987236740,\t-0.804645370208185610,\t-0.804615681417520490,\t-0.804585990615316660,\t-0.804556297801647950,\t-0.804526602976588400,\t-0.804496906140212410,\t\n-0.804467207292594130,\t-0.804437506433807850,\t-0.804407803563927160,\t-0.804378098683027560,\t-0.804348391791182780,\t-0.804318682888466970,\t-0.804288971974954530,\t-0.804259259050719490,\t\n-0.804229544115836470,\t-0.804199827170379520,\t-0.804170108214422470,\t-0.804140387248040710,\t-0.804110664271307950,\t-0.804080939284298470,\t-0.804051212287086760,\t-0.804021483279746980,\t\n-0.803991752262353420,\t-0.803962019234980010,\t-0.803932284197702130,\t-0.803902547150593500,\t-0.803872808093728410,\t-0.803843067027181450,\t-0.803813323951026780,\t-0.803783578865338690,\t\n-0.803753831770191770,\t-0.803724082665659760,\t-0.803694331551818020,\t-0.803664578428740390,\t-0.803634823296501380,\t-0.803605066155175350,\t-0.803575307004836590,\t-0.803545545845559590,\t\n-0.803515782677418300,\t-0.803486017500487870,\t-0.803456250314842580,\t-0.803426481120556590,\t-0.803396709917704400,\t-0.803366936706360390,\t-0.803337161486599170,\t-0.803307384258494910,\t\n-0.803277605022122200,\t-0.803247823777555100,\t-0.803218040524868780,\t-0.803188255264137400,\t-0.803158467995435440,\t-0.803128678718837310,\t-0.803098887434417490,\t-0.803069094142249920,\t\n-0.803039298842410100,\t-0.803009501534972080,\t-0.802979702220010250,\t-0.802949900897599210,\t-0.802920097567813460,\t-0.802890292230727390,\t-0.802860484886415590,\t-0.802830675534952580,\t\n-0.802800864176412390,\t-0.802771050810870520,\t-0.802741235438401040,\t-0.802711418059078530,\t-0.802681598672977390,\t-0.802651777280172340,\t-0.802621953880737760,\t-0.802592128474747810,\t\n-0.802562301062278110,\t-0.802532471643402580,\t-0.802502640218195950,\t-0.802472806786732720,\t-0.802442971349087380,\t-0.802413133905334640,\t-0.802383294455549120,\t-0.802353452999804760,\t\n-0.802323609538177380,\t-0.802293764070740930,\t-0.802263916597570130,\t-0.802234067118739460,\t-0.802204215634323650,\t-0.802174362144397300,\t-0.802144506649034470,\t-0.802114649148310990,\t\n-0.802084789642300790,\t-0.802054928131078700,\t-0.802025064614719340,\t-0.801995199093297200,\t-0.801965331566887100,\t-0.801935462035563650,\t-0.801905590499401020,\t-0.801875716958475040,\t\n-0.801845841412859640,\t-0.801815963862629650,\t-0.801786084307859800,\t-0.801756202748624800,\t-0.801726319184999260,\t-0.801696433617057340,\t-0.801666546044874860,\t-0.801636656468526000,\t\n-0.801606764888085580,\t-0.801576871303628200,\t-0.801546975715228700,\t-0.801517078122961690,\t-0.801487178526901990,\t-0.801457276927124320,\t-0.801427373323702950,\t-0.801397467716713720,\t\n-0.801367560106230780,\t-0.801337650492328970,\t-0.801307738875083000,\t-0.801277825254567700,\t-0.801247909630857350,\t-0.801217992004027660,\t-0.801188072374153130,\t-0.801158150741308250,\t\n-0.801128227105568080,\t-0.801098301467007450,\t-0.801068373825700950,\t-0.801038444181723430,\t-0.801008512535149930,\t-0.800978578886054620,\t-0.800948643234513310,\t-0.800918705580600410,\t\n-0.800888765924390840,\t-0.800858824265959330,\t-0.800828880605380710,\t-0.800798934942729800,\t-0.800768987278081210,\t-0.800739037611510550,\t-0.800709085943092310,\t-0.800679132272901440,\t\n-0.800649176601012650,\t-0.800619218927500990,\t-0.800589259252441290,\t-0.800559297575908380,\t-0.800529333897976650,\t-0.800499368218722250,\t-0.800469400538219360,\t-0.800439430856543010,\t\n-0.800409459173768050,\t-0.800379485489969400,\t-0.800349509805222010,\t-0.800319532119600390,\t-0.800289552433180450,\t-0.800259570746036710,\t-0.800229587058243990,\t-0.800199601369877220,\t\n-0.800169613681011470,\t-0.800139623991721780,\t-0.800109632302082980,\t-0.800079638612169570,\t-0.800049642922057600,\t-0.800019645231821560,\t-0.799989645541536290,\t-0.799959643851277050,\t\n-0.799929640161118670,\t-0.799899634471136100,\t-0.799869626781403940,\t-0.799839617091998250,\t-0.799809605402993620,\t-0.799779591714464890,\t-0.799749576026487110,\t-0.799719558339135550,\t\n-0.799689538652484930,\t-0.799659516966610530,\t-0.799629493281587390,\t-0.799599467597489900,\t-0.799569439914394330,\t-0.799539410232375180,\t-0.799509378551507500,\t-0.799479344871866340,\t\n-0.799449309193526860,\t-0.799419271516563560,\t-0.799389231841052590,\t-0.799359190167068470,\t-0.799329146494686450,\t-0.799299100823981590,\t-0.799269053155028940,\t-0.799239003487903670,\t\n-0.799208951822680920,\t-0.799178898159435770,\t-0.799148842498242810,\t-0.799118784839178310,\t-0.799088725182316880,\t-0.799058663527733580,\t-0.799028599875503680,\t-0.798998534225702220,\t\n-0.798968466578403920,\t-0.798938396933684960,\t-0.798908325291620040,\t-0.798878251652284320,\t-0.798848176015752980,\t-0.798818098382101160,\t-0.798788018751404040,\t-0.798757937123736990,\t\n-0.798727853499175080,\t-0.798697767877792900,\t-0.798667680259666950,\t-0.798637590644871720,\t-0.798607499033482600,\t-0.798577405425574650,\t-0.798547309821223240,\t-0.798517212220503540,\t\n-0.798487112623490260,\t-0.798457011030259680,\t-0.798426907440886620,\t-0.798396801855446370,\t-0.798366694274013970,\t-0.798336584696664910,\t-0.798306473123474470,\t-0.798276359554517700,\t\n-0.798246243989869650,\t-0.798216126429606380,\t-0.798186006873802920,\t-0.798155885322534340,\t-0.798125761775876130,\t-0.798095636233903450,\t-0.798065508696691680,\t-0.798035379164315660,\t\n-0.798005247636851660,\t-0.797975114114374610,\t-0.797944978596959680,\t-0.797914841084682360,\t-0.797884701577618040,\t-0.797854560075841770,\t-0.797824416579429260,\t-0.797794271088455690,\t\n-0.797764123602995760,\t-0.797733974123126190,\t-0.797703822648921700,\t-0.797673669180457570,\t-0.797643513717809280,\t-0.797613356261052340,\t-0.797583196810261350,\t-0.797553035365512920,\t\n-0.797522871926881870,\t-0.797492706494443700,\t-0.797462539068273690,\t-0.797432369648447440,\t-0.797402198235040220,\t-0.797372024828127410,\t-0.797341849427784630,\t-0.797311672034086700,\t\n-0.797281492647110120,\t-0.797251311266929830,\t-0.797221127893621210,\t-0.797190942527259860,\t-0.797160755167921060,\t-0.797130565815679870,\t-0.797100374470612770,\t-0.797070181132794710,\t\n-0.797039985802301290,\t-0.797009788479207890,\t-0.796979589163589910,\t-0.796949387855523160,\t-0.796919184555082700,\t-0.796888979262344480,\t-0.796858771977383200,\t-0.796828562700275470,\t\n-0.796798351431096450,\t-0.796768138169921420,\t-0.796737922916826100,\t-0.796707705671885980,\t-0.796677486435176660,\t-0.796647265206772980,\t-0.796617041986751760,\t-0.796586816775187940,\t\n-0.796556589572157030,\t-0.796526360377734610,\t-0.796496129191996300,\t-0.796465896015017720,\t-0.796435660846874340,\t-0.796405423687641330,\t-0.796375184537395310,\t-0.796344943396211310,\t\n-0.796314700264164950,\t-0.796284455141331840,\t-0.796254208027787570,\t-0.796223958923607760,\t-0.796193707828867560,\t-0.796163454743643690,\t-0.796133199668011100,\t-0.796102942602045500,\t\n-0.796072683545822500,\t-0.796042422499417920,\t-0.796012159462907260,\t-0.795981894436366130,\t-0.795951627419870240,\t-0.795921358413494870,\t-0.795891087417316510,\t-0.795860814431410550,\t\n-0.795830539455852470,\t-0.795800262490718110,\t-0.795769983536083080,\t-0.795739702592022540,\t-0.795709419658613190,\t-0.795679134735930440,\t-0.795648847824049770,\t-0.795618558923047000,\t\n-0.795588268032997760,\t-0.795557975153977970,\t-0.795527680286063130,\t-0.795497383429329190,\t-0.795467084583851290,\t-0.795436783749706060,\t-0.795406480926968970,\t-0.795376176115715650,\t\n-0.795345869316021910,\t-0.795315560527963480,\t-0.795285249751615630,\t-0.795254936987055180,\t-0.795224622234357410,\t-0.795194305493598150,\t-0.795163986764853000,\t-0.795133666048197910,\t\n-0.795103343343708690,\t-0.795073018651461070,\t-0.795042691971530990,\t-0.795012363303993610,\t-0.794982032648925750,\t-0.794951700006402920,\t-0.794921365376500820,\t-0.794891028759295290,\t\n-0.794860690154862160,\t-0.794830349563277360,\t-0.794800006984616170,\t-0.794769662418955410,\t-0.794739315866370590,\t-0.794708967326937410,\t-0.794678616800731820,\t-0.794648264287829750,\t\n-0.794617909788306930,\t-0.794587553302239400,\t-0.794557194829702440,\t-0.794526834370772980,\t-0.794496471925526530,\t-0.794466107494038900,\t-0.794435741076385930,\t-0.794405372672643550,\t\n-0.794375002282887820,\t-0.794344629907194120,\t-0.794314255545639280,\t-0.794283879198298790,\t-0.794253500865248710,\t-0.794223120546564740,\t-0.794192738242323060,\t-0.794162353952599490,\t\n-0.794131967677470070,\t-0.794101579417010760,\t-0.794071189171296930,\t-0.794040796940405640,\t-0.794010402724412370,\t-0.793980006523393070,\t-0.793949608337423780,\t-0.793919208166580570,\t\n-0.793888806010938700,\t-0.793858401870575330,\t-0.793827995745565950,\t-0.793797587635986620,\t-0.793767177541913280,\t-0.793736765463422090,\t-0.793706351400588870,\t-0.793675935353489900,\t\n-0.793645517322201010,\t-0.793615097306797800,\t-0.793584675307357430,\t-0.793554251323955300,\t-0.793523825356667540,\t-0.793493397405570230,\t-0.793462967470739520,\t-0.793432535552250790,\t\n-0.793402101650181210,\t-0.793371665764606380,\t-0.793341227895602460,\t-0.793310788043245510,\t-0.793280346207611450,\t-0.793249902388776570,\t-0.793219456586817030,\t-0.793189008801808760,\t\n-0.793158559033827370,\t-0.793128107282950250,\t-0.793097653549252770,\t-0.793067197832811210,\t-0.793036740133701620,\t-0.793006280452000170,\t-0.792975818787783120,\t-0.792945355141125850,\t\n-0.792914889512105870,\t-0.792884421900798550,\t-0.792853952307280290,\t-0.792823480731627010,\t-0.792793007173915100,\t-0.792762531634220720,\t-0.792732054112619930,\t-0.792701574609188440,\t\n-0.792671093124003630,\t-0.792640609657141120,\t-0.792610124208676940,\t-0.792579636778687590,\t-0.792549147367249130,\t-0.792518655974437710,\t-0.792488162600329170,\t-0.792457667245000770,\t\n-0.792427169908528240,\t-0.792396670590987730,\t-0.792366169292455510,\t-0.792335666013007980,\t-0.792305160752721170,\t-0.792274653511671590,\t-0.792244144289934730,\t-0.792213633087588080,\t\n-0.792183119904707360,\t-0.792152604741368730,\t-0.792122087597648680,\t-0.792091568473623500,\t-0.792061047369369220,\t-0.792030524284961900,\t-0.791999999220478810,\t-0.791969472175995670,\t\n-0.791938943151588860,\t-0.791908412147334760,\t-0.791877879163309650,\t-0.791847344199589690,\t-0.791816807256251480,\t-0.791786268333371180,\t-0.791755727431024740,\t-0.791725184549289530,\t\n-0.791694639688241280,\t-0.791664092847956470,\t-0.791633544028511490,\t-0.791602993229982620,\t-0.791572440452445680,\t-0.791541885695978160,\t-0.791511328960656010,\t-0.791480770246555500,\t\n-0.791450209553753000,\t-0.791419646882325020,\t-0.791389082232347940,\t-0.791358515603898250,\t-0.791327946997052110,\t-0.791297376411885580,\t-0.791266803848476250,\t-0.791236229306899850,\t\n-0.791205652787232870,\t-0.791175074289551810,\t-0.791144493813933040,\t-0.791113911360453060,\t-0.791083326929187700,\t-0.791052740520214570,\t-0.791022152133609600,\t-0.790991561769449290,\t\n-0.790960969427810020,\t-0.790930375108768400,\t-0.790899778812400810,\t-0.790869180538783740,\t-0.790838580287993140,\t-0.790807978060106720,\t-0.790777373855200310,\t-0.790746767673350500,\t\n-0.790716159514633700,\t-0.790685549379126610,\t-0.790654937266905500,\t-0.790624323178046650,\t-0.790593707112627440,\t-0.790563089070724030,\t-0.790532469052412920,\t-0.790501847057770490,\t\n-0.790471223086873560,\t-0.790440597139798640,\t-0.790409969216622100,\t-0.790379339317420100,\t-0.790348707442270370,\t-0.790318073591248840,\t-0.790287437764432110,\t-0.790256799961896790,\t\n-0.790226160183719490,\t-0.790195518429976710,\t-0.790164874700744700,\t-0.790134228996100970,\t-0.790103581316121680,\t-0.790072931660883440,\t-0.790042280030462950,\t-0.790011626424936720,\t\n-0.789980970844381350,\t-0.789950313288873660,\t-0.789919653758490050,\t-0.789888992253306890,\t-0.789858328773401790,\t-0.789827663318850790,\t-0.789796995889730620,\t-0.789766326486118110,\t\n-0.789735655108089630,\t-0.789704981755721570,\t-0.789674306429091530,\t-0.789643629128275680,\t-0.789612949853350840,\t-0.789582268604393620,\t-0.789551585381480740,\t-0.789520900184688900,\t\n-0.789490213014094720,\t-0.789459523869775140,\t-0.789428832751806090,\t-0.789398139660265620,\t-0.789367444595229670,\t-0.789336747556775190,\t-0.789306048544978880,\t-0.789275347559917350,\t\n-0.789244644601667540,\t-0.789213939670305510,\t-0.789183232765909180,\t-0.789152523888554840,\t-0.789121813038319080,\t-0.789091100215278840,\t-0.789060385419510850,\t-0.789029668651091920,\t\n-0.788998949910098780,\t-0.788968229196607810,\t-0.788937506510696720,\t-0.788906781852441900,\t-0.788876055221920060,\t-0.788845326619208140,\t-0.788814596044382870,\t-0.788783863497521160,\t\n-0.788753128978699200,\t-0.788722392487995030,\t-0.788691654025484800,\t-0.788660913591245460,\t-0.788630171185353830,\t-0.788599426807886860,\t-0.788568680458921260,\t-0.788537932138533960,\t\n-0.788507181846801240,\t-0.788476429583801150,\t-0.788445675349609960,\t-0.788414919144304620,\t-0.788384160967962040,\t-0.788353400820658970,\t-0.788322638702472430,\t-0.788291874613478720,\t\n-0.788261108553755860,\t-0.788230340523380260,\t-0.788199570522428840,\t-0.788168798550978430,\t-0.788138024609106090,\t-0.788107248696888640,\t-0.788076470814403020,\t-0.788045690961726280,\t\n-0.788014909138934790,\t-0.787984125346106510,\t-0.787953339583318040,\t-0.787922551850646080,\t-0.787891762148167810,\t-0.787860970475960150,\t-0.787830176834099500,\t-0.787799381222663910,\t\n-0.787768583641729970,\t-0.787737784091374520,\t-0.787706982571674600,\t-0.787676179082707150,\t-0.787645373624549340,\t-0.787614566197278100,\t-0.787583756800970370,\t-0.787552945435702870,\t\n-0.787522132101553420,\t-0.787491316798598630,\t-0.787460499526915550,\t-0.787429680286581220,\t-0.787398859077672820,\t-0.787368035900267160,\t-0.787337210754440850,\t-0.787306383640272060,\t\n-0.787275554557837380,\t-0.787244723507213750,\t-0.787213890488478340,\t-0.787183055501708200,\t-0.787152218546980360,\t-0.787121379624372120,\t-0.787090538733959840,\t-0.787059695875821700,\t\n-0.787028851050034280,\t-0.786998004256674880,\t-0.786967155495820300,\t-0.786936304767547950,\t-0.786905452071934740,\t-0.786874597409057520,\t-0.786843740778994220,\t-0.786812882181821550,\t\n-0.786782021617616790,\t-0.786751159086456870,\t-0.786720294588419080,\t-0.786689428123580560,\t-0.786658559692018480,\t-0.786627689293809440,\t-0.786596816929031830,\t-0.786565942597762020,\t\n-0.786535066300077410,\t-0.786504188036055150,\t-0.786473307805772400,\t-0.786442425609306440,\t-0.786411541446733750,\t-0.786380655318132840,\t-0.786349767223580300,\t-0.786318877163153300,\t\n-0.786287985136929100,\t-0.786257091144984990,\t-0.786226195187398110,\t-0.786195297264245860,\t-0.786164397375605170,\t-0.786133495521553090,\t-0.786102591702167790,\t-0.786071685917525960,\t\n-0.786040778167705010,\t-0.786009868452781980,\t-0.785978956772834360,\t-0.785948043127938760,\t-0.785917127518173660,\t-0.785886209943615690,\t-0.785855290404342210,\t-0.785824368900430500,\t\n-0.785793445431957950,\t-0.785762519999001710,\t-0.785731592601639160,\t-0.785700663239947580,\t-0.785669731914003910,\t-0.785638798623886410,\t-0.785607863369671920,\t-0.785576926151437700,\t\n-0.785545986969261260,\t-0.785515045823219850,\t-0.785484102713390750,\t-0.785453157639850910,\t-0.785422210602678690,\t-0.785391261601951050,\t-0.785360310637745140,\t-0.785329357710138450,\t\n-0.785298402819208490,\t-0.785267445965032400,\t-0.785236487147687680,\t-0.785205526367251270,\t-0.785174563623801560,\t-0.785143598917415480,\t-0.785112632248170290,\t-0.785081663616143620,\t\n-0.785050693021412730,\t-0.785019720464055220,\t-0.784988745944147800,\t-0.784957769461768980,\t-0.784926791016995810,\t-0.784895810609905650,\t-0.784864828240576020,\t-0.784833843909084280,\t\n-0.784802857615507940,\t-0.784771869359924380,\t-0.784740879142410640,\t-0.784709886963045330,\t-0.784678892821905280,\t-0.784647896719067980,\t-0.784616898654610820,\t-0.784585898628611610,\t\n-0.784554896641147530,\t-0.784523892692295720,\t-0.784492886782134690,\t-0.784461878910741480,\t-0.784430869078193480,\t-0.784399857284568400,\t-0.784368843529943630,\t-0.784337827814396760,\t\n-0.784306810138005290,\t-0.784275790500846840,\t-0.784244768902998430,\t-0.784213745344538580,\t-0.784182719825544330,\t-0.784151692346093280,\t-0.784120662906263030,\t-0.784089631506131200,\t\n-0.784058598145774610,\t-0.784027562825272200,\t-0.783996525544700780,\t-0.783965486304138090,\t-0.783934445103661730,\t-0.783903401943349180,\t-0.783872356823278160,\t-0.783841309743526170,\t\n-0.783810260704171040,\t-0.783779209705289580,\t-0.783748156746960740,\t-0.783717101829261580,\t-0.783686044952269570,\t-0.783654986116062440,\t-0.783623925320717780,\t-0.783592862566313440,\t\n-0.783561797852926230,\t-0.783530731180635210,\t-0.783499662549517310,\t-0.783468591959650350,\t-0.783437519411111840,\t-0.783406444903979480,\t-0.783375368438331110,\t-0.783344290014244220,\t\n-0.783313209631796070,\t-0.783282127291065500,\t-0.783251042992129550,\t-0.783219956735066060,\t-0.783188868519952620,\t-0.783157778346867060,\t-0.783126686215886990,\t-0.783095592127089790,\t\n-0.783064496080554060,\t-0.783033398076357080,\t-0.783002298114576560,\t-0.782971196195290430,\t-0.782940092318576200,\t-0.782908986484511790,\t-0.782877878693174930,\t-0.782846768944642780,\t\n-0.782815657238994270,\t-0.782784543576306670,\t-0.782753427956657590,\t-0.782722310380125070,\t-0.782691190846786730,\t-0.782660069356720390,\t-0.782628945910003320,\t-0.782597820506714450,\t\n-0.782566693146931060,\t-0.782535563830730860,\t-0.782504432558191800,\t-0.782473299329391690,\t-0.782442164144408260,\t-0.782411027003319440,\t-0.782379887906203160,\t-0.782348746853136490,\t\n-0.782317603844198570,\t-0.782286458879466570,\t-0.782255311959018430,\t-0.782224163082932080,\t-0.782193012251285350,\t-0.782161859464155400,\t-0.782130704721621490,\t-0.782099548023760690,\t\n-0.782068389370651150,\t-0.782037228762370470,\t-0.782006066198996930,\t-0.781974901680608010,\t-0.781943735207282000,\t-0.781912566779096600,\t-0.781881396396129190,\t-0.781850224058458940,\t\n-0.781819049766163010,\t-0.781787873519319550,\t-0.781756695318006400,\t-0.781725515162301490,\t-0.781694333052282750,\t-0.781663148988027690,\t-0.781631962969615230,\t-0.781600774997122880,\t\n-0.781569585070628680,\t-0.781538393190210460,\t-0.781507199355946260,\t-0.781476003567914130,\t-0.781444805826191800,\t-0.781413606130857090,\t-0.781382404481988810,\t-0.781351200879664590,\t\n-0.781319995323962350,\t-0.781288787814960140,\t-0.781257578352735900,\t-0.781226366937367800,\t-0.781195153568933210,\t-0.781163938247511180,\t-0.781132720973179430,\t-0.781101501746015890,\t\n-0.781070280566098510,\t-0.781039057433505430,\t-0.781007832348314720,\t-0.780976605310604530,\t-0.780945376320452130,\t-0.780914145377936910,\t-0.780882912483136350,\t-0.780851677636128510,\t\n-0.780820440836991430,\t-0.780789202085803270,\t-0.780757961382642090,\t-0.780726718727585480,\t-0.780695474120712610,\t-0.780664227562100970,\t-0.780632979051828820,\t-0.780601728589974340,\t\n-0.780570476176615460,\t-0.780539221811830330,\t-0.780507965495697230,\t-0.780476707228294100,\t-0.780445447009698760,\t-0.780414184839990370,\t-0.780382920719246420,\t-0.780351654647545300,\t\n-0.780320386624964950,\t-0.780289116651583630,\t-0.780257844727478940,\t-0.780226570852730280,\t-0.780195295027415140,\t-0.780164017251611770,\t-0.780132737525398360,\t-0.780101455848853150,\t\n-0.780070172222054210,\t-0.780038886645079920,\t-0.780007599118008320,\t-0.779976309640917240,\t-0.779945018213885950,\t-0.779913724836992060,\t-0.779882429510313950,\t-0.779851132233929660,\t\n-0.779819833007917570,\t-0.779788531832355410,\t-0.779757228707322450,\t-0.779725923632896390,\t-0.779694616609155510,\t-0.779663307636178080,\t-0.779631996714042490,\t-0.779600683842826770,\t\n-0.779569369022609430,\t-0.779538052253468620,\t-0.779506733535482170,\t-0.779475412868729340,\t-0.779444090253288090,\t-0.779412765689236560,\t-0.779381439176653150,\t-0.779350110715616110,\t\n-0.779318780306203830,\t-0.779287447948494030,\t-0.779256113642566190,\t-0.779224777388497940,\t-0.779193439186367850,\t-0.779162099036254220,\t-0.779130756938235300,\t-0.779099412892389380,\t\n-0.779068066898795040,\t-0.779036718957530020,\t-0.779005369068673680,\t-0.778974017232303860,\t-0.778942663448499050,\t-0.778911307717337630,\t-0.778879950038897870,\t-0.778848590413258270,\t\n-0.778817228840496640,\t-0.778785865320692490,\t-0.778754499853923750,\t-0.778723132440268690,\t-0.778691763079805810,\t-0.778660391772613480,\t-0.778629018518770200,\t-0.778597643318354460,\t\n-0.778566266171444420,\t-0.778534887078118350,\t-0.778503506038455530,\t-0.778472123052533990,\t-0.778440738120432020,\t-0.778409351242228320,\t-0.778377962418001280,\t-0.778346571647828610,\t\n-0.778315178931790250,\t-0.778283784269963810,\t-0.778252387662427990,\t-0.778220989109261190,\t-0.778189588610541880,\t-0.778158186166348690,\t-0.778126781776759870,\t-0.778095375441854250,\t\n-0.778063967161709560,\t-0.778032556936405490,\t-0.778001144766020110,\t-0.777969730650631800,\t-0.777938314590319150,\t-0.777906896585160770,\t-0.777875476635234600,\t-0.777844054740620240,\t\n-0.777812630901395850,\t-0.777781205117639820,\t-0.777749777389430740,\t-0.777718347716847220,\t-0.777686916099967870,\t-0.777655482538871180,\t-0.777624047033635860,\t-0.777592609584339840,\t\n-0.777561170191062740,\t-0.777529728853882830,\t-0.777498285572878590,\t-0.777466840348128630,\t-0.777435393179711550,\t-0.777403944067706080,\t-0.777372493012190020,\t-0.777341040013243450,\t\n-0.777309585070944160,\t-0.777278128185371010,\t-0.777246669356602470,\t-0.777215208584717270,\t-0.777183745869794000,\t-0.777152281211911490,\t-0.777120814611147680,\t-0.777089346067582290,\t\n-0.777057875581293580,\t-0.777026403152360270,\t-0.776994928780860850,\t-0.776963452466874150,\t-0.776931974210478880,\t-0.776900494011752980,\t-0.776869011870776500,\t-0.776837527787627490,\t\n-0.776806041762384660,\t-0.776774553795126720,\t-0.776743063885932280,\t-0.776711572034880280,\t-0.776680078242049430,\t-0.776648582507518340,\t-0.776617084831365160,\t-0.776585585213669830,\t\n-0.776554083654510620,\t-0.776522580153966140,\t-0.776491074712115200,\t-0.776459567329036650,\t-0.776428058004808520,\t-0.776396546739510860,\t-0.776365033533221840,\t-0.776333518386020270,\t\n-0.776302001297984880,\t-0.776270482269194480,\t-0.776238961299727800,\t-0.776207438389663770,\t-0.776175913539081220,\t-0.776144386748058190,\t-0.776112858016674840,\t-0.776081327345009340,\t\n-0.776049794733140510,\t-0.776018260181147280,\t-0.775986723689108260,\t-0.775955185257101940,\t-0.775923644885208260,\t-0.775892102573505380,\t-0.775860558322072240,\t-0.775829012130987760,\t\n-0.775797464000330780,\t-0.775765913930180020,\t-0.775734361920614620,\t-0.775702807971713200,\t-0.775671252083554250,\t-0.775639694256217820,\t-0.775608134489782050,\t-0.775576572784325900,\t\n-0.775545009139928410,\t-0.775513443556668290,\t-0.775481876034624710,\t-0.775450306573875700,\t-0.775418735174501660,\t-0.775387161836580740,\t-0.775355586560191880,\t-0.775324009345414010,\t\n-0.775292430192326190,\t-0.775260849101007230,\t-0.775229266071536190,\t-0.775197681103991450,\t-0.775166094198453060,\t-0.775134505354999390,\t-0.775102914573709500,\t-0.775071321854662320,\t\n-0.775039727197936790,\t-0.775008130603611960,\t-0.774976532071766310,\t-0.774944931602479790,\t-0.774913329195831000,\t-0.774881724851898880,\t-0.774850118570762470,\t-0.774818510352500710,\t\n-0.774786900197192760,\t-0.774755288104917560,\t-0.774723674075753490,\t-0.774692058109780810,\t-0.774660440207078030,\t-0.774628820367724070,\t-0.774597198591798100,\t-0.774565574879379160,\t\n-0.774533949230546300,\t-0.774502321645378020,\t-0.774470692123954470,\t-0.774439060666354150,\t-0.774407427272656210,\t-0.774375791942939710,\t-0.774344154677283680,\t-0.774312515475767290,\t\n-0.774280874338469590,\t-0.774249231265469740,\t-0.774217586256846340,\t-0.774185939312679430,\t-0.774154290433047620,\t-0.774122639618030180,\t-0.774090986867706050,\t-0.774059332182154610,\t\n-0.774027675561454130,\t-0.773996017005685100,\t-0.773964356514926010,\t-0.773932694089256020,\t-0.773901029728754300,\t-0.773869363433499990,\t-0.773837695203572260,\t-0.773806025039050380,\t\n-0.773774352940013400,\t-0.773742678906539920,\t-0.773711002938710310,\t-0.773679325036603190,\t-0.773647645200297830,\t-0.773615963429873380,\t-0.773584279725408890,\t-0.773552594086983850,\t\n-0.773520906514676640,\t-0.773489217008567760,\t-0.773457525568735820,\t-0.773425832195260180,\t-0.773394136888219790,\t-0.773362439647694130,\t-0.773330740473762380,\t-0.773299039366503790,\t\n-0.773267336325997090,\t-0.773235631352322540,\t-0.773203924445558850,\t-0.773172215605785530,\t-0.773140504833081500,\t-0.773108792127526370,\t-0.773077077489199070,\t-0.773045360918178660,\t\n-0.773013642414545290,\t-0.772981921978377890,\t-0.772950199609755750,\t-0.772918475308758010,\t-0.772886749075464060,\t-0.772855020909953390,\t-0.772823290812305050,\t-0.772791558782597980,\t\n-0.772759824820912430,\t-0.772728088927327470,\t-0.772696351101922250,\t-0.772664611344776150,\t-0.772632869655968560,\t-0.772601126035578730,\t-0.772569380483685510,\t-0.772537633000369480,\t\n-0.772505883585709260,\t-0.772474132239784450,\t-0.772442378962674200,\t-0.772410623754458130,\t-0.772378866615215380,\t-0.772347107545025560,\t-0.772315346543967940,\t-0.772283583612121350,\t\n-0.772251818749566390,\t-0.772220051956381880,\t-0.772188283232647210,\t-0.772156512578441870,\t-0.772124739993845230,\t-0.772092965478936240,\t-0.772061189033795390,\t-0.772029410658501500,\t\n-0.771997630353134180,\t-0.771965848117772690,\t-0.771934063952496640,\t-0.771902277857385410,\t-0.771870489832518380,\t-0.771838699877975270,\t-0.771806907993834780,\t-0.771775114180177630,\t\n-0.771743318437082660,\t-0.771711520764629340,\t-0.771679721162897290,\t-0.771647919631966000,\t-0.771616116171914830,\t-0.771584310782822860,\t-0.771552503464770560,\t-0.771520694217837090,\t\n-0.771488883042101840,\t-0.771457069937644400,\t-0.771425254904544390,\t-0.771393437942881070,\t-0.771361619052734260,\t-0.771329798234182800,\t-0.771297975487307500,\t-0.771266150812187190,\t\n-0.771234324208901480,\t-0.771202495677529960,\t-0.771170665218152250,\t-0.771138832830847830,\t-0.771106998515695750,\t-0.771075162272776840,\t-0.771043324102169910,\t-0.771011484003954690,\t\n-0.770979641978210780,\t-0.770947798025017780,\t-0.770915952144455300,\t-0.770884104336602930,\t-0.770852254601539720,\t-0.770820402939346390,\t-0.770788549350102100,\t-0.770756693833886450,\t\n-0.770724836390779040,\t-0.770692977020859590,\t-0.770661115724207700,\t-0.770629252500902420,\t-0.770597387351024570,\t-0.770565520274653190,\t-0.770533651271868130,\t-0.770501780342748850,\t\n-0.770469907487375210,\t-0.770438032705826780,\t-0.770406155998183180,\t-0.770374277364524240,\t-0.770342396804929000,\t-0.770310514319478390,\t-0.770278629908251580,\t-0.770246743571328050,\t\n-0.770214855308787750,\t-0.770182965120710270,\t-0.770151073007174780,\t-0.770119178968262210,\t-0.770087283004051710,\t-0.770055385114623010,\t-0.770023485300055820,\t-0.769991583560429960,\t\n-0.769959679895825030,\t-0.769927774306321090,\t-0.769895866791997510,\t-0.769863957352933780,\t-0.769832045989210730,\t-0.769800132700907640,\t-0.769768217488104090,\t-0.769736300350880030,\t\n-0.769704381289315290,\t-0.769672460303489570,\t-0.769640537393482040,\t-0.769608612559373850,\t-0.769576685801244050,\t-0.769544757119172580,\t-0.769512826513239270,\t-0.769480893983523820,\t\n-0.769448959530106170,\t-0.769417023153066040,\t-0.769385084852482800,\t-0.769353144628437510,\t-0.769321202481009330,\t-0.769289258410278070,\t-0.769257312416323780,\t-0.769225364499226070,\t\n-0.769193414659065100,\t-0.769161462895919910,\t-0.769129509209871660,\t-0.769097553600999630,\t-0.769065596069383740,\t-0.769033636615103930,\t-0.769001675238239920,\t-0.768969711938871760,\t\n-0.768937746717079370,\t-0.768905779572941930,\t-0.768873810506540690,\t-0.768841839517954930,\t-0.768809866607264470,\t-0.768777891774549470,\t-0.768745915019889760,\t-0.768713936343365160,\t\n-0.768681955745055160,\t-0.768649973225040920,\t-0.768617988783401710,\t-0.768586002420217460,\t-0.768554014135568230,\t-0.768522023929534060,\t-0.768490031802194770,\t-0.768458037753630310,\t\n-0.768426041783920820,\t-0.768394043893145700,\t-0.768362044081386090,\t-0.768330042348721260,\t-0.768298038695231390,\t-0.768266033120996390,\t-0.768234025626096330,\t-0.768202016210610570,\t\n-0.768170004874620390,\t-0.768137991618205170,\t-0.768105976441445070,\t-0.768073959344419910,\t-0.768041940327209960,\t-0.768009919389895050,\t-0.767977896532555440,\t-0.767945871755270960,\t\n-0.767913845058121320,\t-0.767881816441187690,\t-0.767849785904549440,\t-0.767817753448286730,\t-0.767785719072479610,\t-0.767753682777208240,\t-0.767721644562552760,\t-0.767689604428592460,\t\n-0.767657562375408720,\t-0.767625518403081130,\t-0.767593472511689750,\t-0.767561424701314610,\t-0.767529374972035990,\t-0.767497323323933940,\t-0.767465269757088510,\t-0.767433214271579400,\t\n-0.767401156867487780,\t-0.767369097544893240,\t-0.767337036303876060,\t-0.767304973144516180,\t-0.767272908066893970,\t-0.767240841071089360,\t-0.767208772157182190,\t-0.767176701325253620,\t\n-0.767144628575383350,\t-0.767112553907651430,\t-0.767080477322138130,\t-0.767048398818923730,\t-0.767016318398088260,\t-0.766984236059712000,\t-0.766952151803874550,\t-0.766920065630657400,\t\n-0.766887977540139930,\t-0.766855887532402640,\t-0.766823795607525560,\t-0.766791701765589080,\t-0.766759606006673260,\t-0.766727508330857900,\t-0.766695408738224280,\t-0.766663307228852230,\t\n-0.766631203802821790,\t-0.766599098460213460,\t-0.766566991201107380,\t-0.766534882025583730,\t-0.766502770933722990,\t-0.766470657925605200,\t-0.766438543001310310,\t-0.766406426160919580,\t\n-0.766374307404512730,\t-0.766342186732170140,\t-0.766310064143972180,\t-0.766277939639998910,\t-0.766245813220330360,\t-0.766213684885047820,\t-0.766181554634230990,\t-0.766149422467960360,\t\n-0.766117288386316100,\t-0.766085152389378690,\t-0.766053014477228290,\t-0.766020874649945500,\t-0.765988732907610380,\t-0.765956589250302970,\t-0.765924443678104530,\t-0.765892296191095110,\t\n-0.765860146789354880,\t-0.765827995472964320,\t-0.765795842242003810,\t-0.765763687096553620,\t-0.765731530036693700,\t-0.765699371062505520,\t-0.765667210174068800,\t-0.765635047371464150,\t\n-0.765602882654771940,\t-0.765570716024072450,\t-0.765538547479446160,\t-0.765506377020973570,\t-0.765474204648734390,\t-0.765442030362810220,\t-0.765409854163281110,\t-0.765377676050227330,\t\n-0.765345496023729370,\t-0.765313314083867600,\t-0.765281130230722530,\t-0.765248944464374190,\t-0.765216756784903970,\t-0.765184567192391810,\t-0.765152375686918300,\t-0.765120182268563930,\t\n-0.765087986937408980,\t-0.765055789693534050,\t-0.765023590537019740,\t-0.764991389467945870,\t-0.764959186486394050,\t-0.764926981592444320,\t-0.764894774786177070,\t-0.764862566067672890,\t\n-0.764830355437012390,\t-0.764798142894275950,\t-0.764765928439543500,\t-0.764733712072896870,\t-0.764701493794415990,\t-0.764669273604181350,\t-0.764637051502273460,\t-0.764604827488773010,\t\n-0.764572601563760500,\t-0.764540373727316420,\t-0.764508143979521490,\t-0.764475912320455640,\t-0.764443678750200470,\t-0.764411443268836250,\t-0.764379205876443260,\t-0.764346966573102420,\t\n-0.764314725358894000,\t-0.764282482233898270,\t-0.764250237198196960,\t-0.764217990251869980,\t-0.764185741394998060,\t-0.764153490627661800,\t-0.764121237949941800,\t-0.764088983361918660,\t\n-0.764056726863673100,\t-0.764024468455285710,\t-0.763992208136836660,\t-0.763959945908407550,\t-0.763927681770078640,\t-0.763895415721930540,\t-0.763863147764043850,\t-0.763830877896499280,\t\n-0.763798606119377550,\t-0.763766332432758710,\t-0.763734056836724680,\t-0.763701779331355410,\t-0.763669499916731830,\t-0.763637218592934320,\t-0.763604935360043920,\t-0.763572650218141140,\t\n-0.763540363167306670,\t-0.763508074207620790,\t-0.763475783339165210,\t-0.763443490562020210,\t-0.763411195876266600,\t-0.763378899281984880,\t-0.763346600779255870,\t-0.763314300368160500,\t\n-0.763281998048778720,\t-0.763249693821192570,\t-0.763217387685482080,\t-0.763185079641728210,\t-0.763152769690011560,\t-0.763120457830413050,\t-0.763088144063013400,\t-0.763055828387893430,\t\n-0.763023510805133200,\t-0.762991191314814850,\t-0.762958869917018560,\t-0.762926546611825020,\t-0.762894221399315060,\t-0.762861894279569630,\t-0.762829565252669540,\t-0.762797234318694840,\t\n-0.762764901477727690,\t-0.762732566729848240,\t-0.762700230075137430,\t-0.762667891513675980,\t-0.762635551045544810,\t-0.762603208670824760,\t-0.762570864389596760,\t-0.762538518201941630,\t\n-0.762506170107939530,\t-0.762473820107672620,\t-0.762441468201221160,\t-0.762409114388665990,\t-0.762376758670088030,\t-0.762344401045568220,\t-0.762312041515186830,\t-0.762279680079025910,\t\n-0.762247316737165730,\t-0.762214951489687320,\t-0.762182584336671520,\t-0.762150215278199260,\t-0.762117844314351480,\t-0.762085471445209110,\t-0.762053096670852970,\t-0.762020719991363560,\t\n-0.761988341406822920,\t-0.761955960917311440,\t-0.761923578522910150,\t-0.761891194223699770,\t-0.761858808019761470,\t-0.761826419911175500,\t-0.761794029898024140,\t-0.761761637980387650,\t\n-0.761729244158347200,\t-0.761696848431983490,\t-0.761664450801377680,\t-0.761632051266610820,\t-0.761599649827763740,\t-0.761567246484917580,\t-0.761534841238152740,\t-0.761502434087551360,\t\n-0.761470025033193940,\t-0.761437614075161310,\t-0.761405201213534830,\t-0.761372786448395230,\t-0.761340369779823670,\t-0.761307951207900620,\t-0.761275530732708370,\t-0.761243108354327180,\t\n-0.761210684072838320,\t-0.761178257888322610,\t-0.761145829800861320,\t-0.761113399810535500,\t-0.761080967917426190,\t-0.761048534121613770,\t-0.761016098423180630,\t-0.760983660822207360,\t\n-0.760951221318774800,\t-0.760918779912964300,\t-0.760886336604856720,\t-0.760853891394533410,\t-0.760821444282074770,\t-0.760788995267563050,\t-0.760756544351078870,\t-0.760724091532703370,\t\n-0.760691636812517610,\t-0.760659180190602750,\t-0.760626721667039930,\t-0.760594261241910320,\t-0.760561798915295070,\t-0.760529334687274680,\t-0.760496868557931640,\t-0.760464400527346320,\t\n-0.760431930595600100,\t-0.760399458762773930,\t-0.760366985028949280,\t-0.760334509394206440,\t-0.760302031858627990,\t-0.760269552422294440,\t-0.760237071085286930,\t-0.760204587847686850,\t\n-0.760172102709575250,\t-0.760139615671033500,\t-0.760107126732142650,\t-0.760074635892983850,\t-0.760042143153638050,\t-0.760009648514187400,\t-0.759977151974712610,\t-0.759944653535294950,\t\n-0.759912153196015680,\t-0.759879650956956090,\t-0.759847146818196650,\t-0.759814640779819970,\t-0.759782132841906770,\t-0.759749623004538190,\t-0.759717111267795510,\t-0.759684597631760110,\t\n-0.759652082096513140,\t-0.759619564662136090,\t-0.759587045328710020,\t-0.759554524096315850,\t-0.759522000965035860,\t-0.759489475934950970,\t-0.759456949006142250,\t-0.759424420178691270,\t\n-0.759391889452679210,\t-0.759359356828187450,\t-0.759326822305296690,\t-0.759294285884089430,\t-0.759261747564646480,\t-0.759229207347049240,\t-0.759196665231378850,\t-0.759164121217716810,\t\n-0.759131575306144500,\t-0.759099027496743290,\t-0.759066477789593910,\t-0.759033926184778940,\t-0.759001372682378990,\t-0.758968817282475780,\t-0.758936259985150570,\t-0.758903700790484640,\t\n-0.758871139698559350,\t-0.758838576709455760,\t-0.758806011823256240,\t-0.758773445040041740,\t-0.758740876359893620,\t-0.758708305782893390,\t-0.758675733309122300,\t-0.758643158938661850,\t\n-0.758610582671593540,\t-0.758578004507998840,\t-0.758545424447958470,\t-0.758512842491555040,\t-0.758480258638869590,\t-0.758447672889983600,\t-0.758415085244978250,\t-0.758382495703935230,\t\n-0.758349904266935490,\t-0.758317310934061520,\t-0.758284715705394240,\t-0.758252118581015160,\t-0.758219519561005860,\t-0.758186918645447740,\t-0.758154315834422280,\t-0.758121711128011080,\t\n-0.758089104526295520,\t-0.758056496029356650,\t-0.758023885637277180,\t-0.757991273350137940,\t-0.757958659168020520,\t-0.757926043091006530,\t-0.757893425119177340,\t-0.757860805252614120,\t\n-0.757828183491399350,\t-0.757795559835614090,\t-0.757762934285340030,\t-0.757730306840658670,\t-0.757697677501651400,\t-0.757665046268400030,\t-0.757632413140986060,\t-0.757599778119490970,\t\n-0.757567141203995930,\t-0.757534502394583640,\t-0.757501861691335040,\t-0.757469219094331740,\t-0.757436574603655540,\t-0.757403928219387730,\t-0.757371279941610240,\t-0.757338629770403890,\t\n-0.757305977705851620,\t-0.757273323748034350,\t-0.757240667897033810,\t-0.757208010152931490,\t-0.757175350515809310,\t-0.757142688985748660,\t-0.757110025562831250,\t-0.757077360247138230,\t\n-0.757044693038752440,\t-0.757012023937754910,\t-0.756979352944227250,\t-0.756946680058251280,\t-0.756914005279908600,\t-0.756881328609280810,\t-0.756848650046449190,\t-0.756815969591496550,\t\n-0.756783287244503940,\t-0.756750603005553190,\t-0.756717916874725890,\t-0.756685228852103760,\t-0.756652538937768630,\t-0.756619847131802080,\t-0.756587153434285950,\t-0.756554457845301400,\t\n-0.756521760364931240,\t-0.756489060993256630,\t-0.756456359730359410,\t-0.756423656576321270,\t-0.756390951531224040,\t-0.756358244595148890,\t-0.756325535768178630,\t-0.756292825050394520,\t\n-0.756260112441878410,\t-0.756227397942711880,\t-0.756194681552976980,\t-0.756161963272755420,\t-0.756129243102128920,\t-0.756096521041179190,\t-0.756063797089987720,\t-0.756031071248637330,\t\n-0.755998343517209180,\t-0.755965613895785200,\t-0.755932882384447110,\t-0.755900148983276950,\t-0.755867413692355880,\t-0.755834676511766720,\t-0.755801937441590970,\t-0.755769196481910210,\t\n-0.755736453632806620,\t-0.755703708894361890,\t-0.755670962266657750,\t-0.755638213749776360,\t-0.755605463343799300,\t-0.755572711048808190,\t-0.755539956864885730,\t-0.755507200792113420,\t\n-0.755474442830573080,\t-0.755441682980346640,\t-0.755408921241516040,\t-0.755376157614163100,\t-0.755343392098369200,\t-0.755310624694217390,\t-0.755277855401789040,\t-0.755245084221165990,\t\n-0.755212311152430260,\t-0.755179536195663800,\t-0.755146759350948440,\t-0.755113980618366210,\t-0.755081199997998500,\t-0.755048417489928350,\t-0.755015633094237030,\t-0.754982846811006800,\t\n-0.754950058640319390,\t-0.754917268582256830,\t-0.754884476636901060,\t-0.754851682804333570,\t-0.754818887084637400,\t-0.754786089477894050,\t-0.754753289984185450,\t-0.754720488603593750,\t\n-0.754687685336200680,\t-0.754654880182088480,\t-0.754622073141339000,\t-0.754589264214033720,\t-0.754556453400256010,\t-0.754523640700087040,\t-0.754490826113609070,\t-0.754458009640903930,\t\n-0.754425191282053880,\t-0.754392371037140850,\t-0.754359548906246240,\t-0.754326724889453290,\t-0.754293898986843630,\t-0.754261071198499170,\t-0.754228241524502070,\t-0.754195409964934390,\t\n-0.754162576519878170,\t-0.754129741189415450,\t-0.754096903973628390,\t-0.754064064872598580,\t-0.754031223886409090,\t-0.753998381015141610,\t-0.753965536258878080,\t-0.753932689617700770,\t\n-0.753899841091691720,\t-0.753866990680932550,\t-0.753834138385506390,\t-0.753801284205494970,\t-0.753768428140980330,\t-0.753735570192044510,\t-0.753702710358769900,\t-0.753669848641238540,\t\n-0.753636985039532360,\t-0.753604119553733850,\t-0.753571252183924510,\t-0.753538382930187490,\t-0.753505511792604610,\t-0.753472638771257920,\t-0.753439763866229680,\t-0.753406887077601950,\t\n-0.753374008405457100,\t-0.753341127849876500,\t-0.753308245410943770,\t-0.753275361088740380,\t-0.753242474883348720,\t-0.753209586794850730,\t-0.753176696823328770,\t-0.753143804968865130,\t\n-0.753110911231541950,\t-0.753078015611440940,\t-0.753045118108645490,\t-0.753012218723237200,\t-0.752979317455298340,\t-0.752946414304911270,\t-0.752913509272158050,\t-0.752880602357121060,\t\n-0.752847693559882130,\t-0.752814782880524390,\t-0.752781870319129800,\t-0.752748955875780500,\t-0.752716039550558770,\t-0.752683121343546980,\t-0.752650201254827400,\t-0.752617279284482300,\t\n-0.752584355432593500,\t-0.752551429699244270,\t-0.752518502084516540,\t-0.752485572588492470,\t-0.752452641211254550,\t-0.752419707952885040,\t-0.752386772813466220,\t-0.752353835793079910,\t\n-0.752320896891809590,\t-0.752287956109736980,\t-0.752255013446944450,\t-0.752222068903514510,\t-0.752189122479529400,\t-0.752156174175071410,\t-0.752123223990222910,\t-0.752090271925066500,\t\n-0.752057317979683780,\t-0.752024362154158240,\t-0.751991404448571930,\t-0.751958444863007110,\t-0.751925483397546170,\t-0.751892520052271470,\t-0.751859554827264850,\t-0.751826587722610020,\t\n-0.751793618738388680,\t-0.751760647874683220,\t-0.751727675131576230,\t-0.751694700509150100,\t-0.751661724007487100,\t-0.751628745626669930,\t-0.751595765366780850,\t-0.751562783227901710,\t\n-0.751529799210116200,\t-0.751496813313506260,\t-0.751463825538154270,\t-0.751430835884142610,\t-0.751397844351553990,\t-0.751364850940470670,\t-0.751331855650974710,\t-0.751298858483149590,\t\n-0.751265859437077470,\t-0.751232858512840610,\t-0.751199855710521610,\t-0.751166851030202980,\t-0.751133844471967290,\t-0.751100836035896950,\t-0.751067825722073870,\t-0.751034813530581880,\t\n-0.751001799461502810,\t-0.750968783514919250,\t-0.750935765690913690,\t-0.750902745989568850,\t-0.750869724410967000,\t-0.750836700955190390,\t-0.750803675622322530,\t-0.750770648412445450,\t\n-0.750737619325641870,\t-0.750704588361994160,\t-0.750671555521584930,\t-0.750638520804496890,\t-0.750605484210812520,\t-0.750572445740613880,\t-0.750539405393984670,\t-0.750506363171007050,\t\n-0.750473319071763400,\t-0.750440273096336430,\t-0.750407225244808960,\t-0.750374175517263260,\t-0.750341123913781600,\t-0.750308070434447690,\t-0.750275015079343580,\t-0.750241957848551970,\t\n-0.750208898742155460,\t-0.750175837760236770,\t-0.750142774902878400,\t-0.750109710170163150,\t-0.750076643562173520,\t-0.750043575078991780,\t-0.750010504720701740,\t-0.749977432487385350,\t\n-0.749944358379125430,\t-0.749911282396004570,\t-0.749878204538105500,\t-0.749845124805510350,\t-0.749812043198302970,\t-0.749778959716565500,\t-0.749745874360380650,\t-0.749712787129831030,\t\n-0.749679698024999560,\t-0.749646607045968750,\t-0.749613514192821520,\t-0.749580419465640360,\t-0.749547322864507760,\t-0.749514224389507210,\t-0.749481124040721310,\t-0.749448021818232450,\t\n-0.749414917722123650,\t-0.749381811752477420,\t-0.749348703909376800,\t-0.749315594192903720,\t-0.749282482603142340,\t-0.749249369140174700,\t-0.749216253804083630,\t-0.749183136594951950,\t\n-0.749150017512862480,\t-0.749116896557897930,\t-0.749083773730141010,\t-0.749050649029674220,\t-0.749017522456581370,\t-0.748984394010944740,\t-0.748951263692847040,\t-0.748918131502371190,\t\n-0.748884997439600130,\t-0.748851861504616470,\t-0.748818723697502580,\t-0.748785584018342500,\t-0.748752442467218390,\t-0.748719299044213300,\t-0.748686153749409830,\t-0.748653006582891020,\t\n-0.748619857544739810,\t-0.748586706635038790,\t-0.748553553853870460,\t-0.748520399201318850,\t-0.748487242677466250,\t-0.748454084282395570,\t-0.748420924016189650,\t-0.748387761878931410,\t\n-0.748354597870703800,\t-0.748321431991589070,\t-0.748288264241671270,\t-0.748255094621032900,\t-0.748221923129756880,\t-0.748188749767925930,\t-0.748155574535623200,\t-0.748122397432931410,\t\n-0.748089218459933700,\t-0.748056037616713020,\t-0.748022854903351520,\t-0.747989670319933580,\t-0.747956483866541340,\t-0.747923295543257980,\t-0.747890105350166310,\t-0.747856913287349490,\t\n-0.747823719354889780,\t-0.747790523552871340,\t-0.747757325881376560,\t-0.747724126340488460,\t-0.747690924930290100,\t-0.747657721650864300,\t-0.747624516502294330,\t-0.747591309484663010,\t\n-0.747558100598053390,\t-0.747524889842548060,\t-0.747491677218230950,\t-0.747458462725184790,\t-0.747425246363492390,\t-0.747392028133236800,\t-0.747358808034501280,\t-0.747325586067368650,\t\n-0.747292362231921410,\t-0.747259136528243940,\t-0.747225908956418610,\t-0.747192679516528570,\t-0.747159448208656760,\t-0.747126215032886340,\t-0.747092979989300470,\t-0.747059743077982060,\t\n-0.747026504299013740,\t-0.746993263652479640,\t-0.746960021138462490,\t-0.746926776757045330,\t-0.746893530508311200,\t-0.746860282392343140,\t-0.746827032409224430,\t-0.746793780559037670,\t\n-0.746760526841866890,\t-0.746727271257794810,\t-0.746694013806904590,\t-0.746660754489279380,\t-0.746627493305002220,\t-0.746594230254156390,\t-0.746560965336824920,\t-0.746527698553090420,\t\n-0.746494429903037270,\t-0.746461159386748060,\t-0.746427887004306070,\t-0.746394612755794330,\t-0.746361336641295890,\t-0.746328058660894240,\t-0.746294778814671880,\t-0.746261497102713060,\t\n-0.746228213525100600,\t-0.746194928081917560,\t-0.746161640773247200,\t-0.746128351599172680,\t-0.746095060559777370,\t-0.746061767655144430,\t-0.746028472885357010,\t-0.745995176250497830,\t\n-0.745961877750651260,\t-0.745928577385900020,\t-0.745895275156327360,\t-0.745861971062016460,\t-0.745828665103050680,\t-0.745795357279512630,\t-0.745762047591486900,\t-0.745728736039055870,\t\n-0.745695422622303040,\t-0.745662107341311780,\t-0.745628790196165130,\t-0.745595471186946470,\t-0.745562150313739290,\t-0.745528827576626530,\t-0.745495502975691340,\t-0.745462176511017870,\t\n-0.745428848182688840,\t-0.745395517990787850,\t-0.745362185935398050,\t-0.745328852016602820,\t-0.745295516234485310,\t-0.745262178589128470,\t-0.745228839080616880,\t-0.745195497709033150,\t\n-0.745162154474460550,\t-0.745128809376982670,\t-0.745095462416682790,\t-0.745062113593644270,\t-0.745028762907950390,\t-0.744995410359683970,\t-0.744962055948929720,\t-0.744928699675770360,\t\n-0.744895341540289140,\t-0.744861981542569660,\t-0.744828619682695200,\t-0.744795255960749140,\t-0.744761890376814390,\t-0.744728522930975470,\t-0.744695153623315290,\t-0.744661782453917230,\t\n-0.744628409422864680,\t-0.744595034530241120,\t-0.744561657776129930,\t-0.744528279160614700,\t-0.744494898683778050,\t-0.744461516345704900,\t-0.744428132146477850,\t-0.744394746086180500,\t\n-0.744361358164896240,\t-0.744327968382708650,\t-0.744294576739701120,\t-0.744261183235956580,\t-0.744227787871559630,\t-0.744194390646593210,\t-0.744160991561140790,\t-0.744127590615285990,\t\n-0.744094187809112070,\t-0.744060783142702850,\t-0.744027376616141490,\t-0.743993968229511800,\t-0.743960557982896620,\t-0.743927145876380650,\t-0.743893731910046710,\t-0.743860316083978510,\t\n-0.743826898398259550,\t-0.743793478852973310,\t-0.743760057448202730,\t-0.743726634184032620,\t-0.743693209060545920,\t-0.743659782077826350,\t-0.743626353235957160,\t-0.743592922535022070,\t\n-0.743559489975104790,\t-0.743526055556288700,\t-0.743492619278657510,\t-0.743459181142294150,\t-0.743425741147283440,\t-0.743392299293708430,\t-0.743358855581652600,\t-0.743325410011199670,\t\n-0.743291962582433240,\t-0.743258513295436800,\t-0.743225062150293600,\t-0.743191609147088260,\t-0.743158154285903930,\t-0.743124697566824200,\t-0.743091238989932790,\t-0.743057778555313190,\t\n-0.743024316263049210,\t-0.742990852113224460,\t-0.742957386105921880,\t-0.742923918241226500,\t-0.742890448519221370,\t-0.742856976939989980,\t-0.742823503503616370,\t-0.742790028210183810,\t\n-0.742756551059776230,\t-0.742723072052476670,\t-0.742689591188369970,\t-0.742656108467539380,\t-0.742622623890068610,\t-0.742589137456041160,\t-0.742555649165540840,\t-0.742522159018651370,\t\n-0.742488667015456680,\t-0.742455173156039590,\t-0.742421677440485150,\t-0.742388179868876510,\t-0.742354680441297490,\t-0.742321179157831800,\t-0.742287676018563050,\t-0.742254171023575160,\t\n-0.742220664172951290,\t-0.742187155466776270,\t-0.742153644905133470,\t-0.742120132488106490,\t-0.742086618215779260,\t-0.742053102088235380,\t-0.742019584105558790,\t-0.741986064267833200,\t\n-0.741952542575142540,\t-0.741919019027569850,\t-0.741885493625200180,\t-0.741851966368116790,\t-0.741818437256403510,\t-0.741784906290144150,\t-0.741751373469422550,\t-0.741717838794321960,\t\n-0.741684302264927210,\t-0.741650763881321890,\t-0.741617223643589510,\t-0.741583681551814090,\t-0.741550137606079570,\t-0.741516591806469670,\t-0.741483044153068200,\t-0.741449494645959110,\t\n-0.741415943285225860,\t-0.741382390070953190,\t-0.741348835003224680,\t-0.741315278082123940,\t-0.741281719307735120,\t-0.741248158680141930,\t-0.741214596199427760,\t-0.741181031865677630,\t\n-0.741147465678975050,\t-0.741113897639403720,\t-0.741080327747047680,\t-0.741046756001990880,\t-0.741013182404317130,\t-0.740979606954110360,\t-0.740946029651454730,\t-0.740912450496433280,\t\n-0.740878869489131290,\t-0.740845286629632230,\t-0.740811701918019930,\t-0.740778115354378430,\t-0.740744526938791560,\t-0.740710936671343360,\t-0.740677344552117200,\t-0.740643750581198360,\t\n-0.740610154758670090,\t-0.740576557084616560,\t-0.740542957559121470,\t-0.740509356182269100,\t-0.740475752954143250,\t-0.740442147874827980,\t-0.740408540944406890,\t-0.740374932162964900,\t\n-0.740341321530585740,\t-0.740307709047353210,\t-0.740274094713351370,\t-0.740240478528664260,\t-0.740206860493376030,\t-0.740173240607570060,\t-0.740139618871331510,\t-0.740105995284743970,\t\n-0.740072369847891490,\t-0.740038742560858000,\t-0.740005113423727660,\t-0.739971482436584620,\t-0.739937849599512810,\t-0.739904214912596280,\t-0.739870578375918740,\t-0.739836939989565350,\t\n-0.739803299753619580,\t-0.739769657668165600,\t-0.739736013733287460,\t-0.739702367949069180,\t-0.739668720315594500,\t-0.739635070832948660,\t-0.739601419501215050,\t-0.739567766320477830,\t\n-0.739534111290821360,\t-0.739500454412329480,\t-0.739466795685086550,\t-0.739433135109176520,\t-0.739399472684683760,\t-0.739365808411691640,\t-0.739332142290285650,\t-0.739298474320549400,\t\n-0.739264804502566820,\t-0.739231132836422280,\t-0.739197459322199930,\t-0.739163783959983280,\t-0.739130106749857800,\t-0.739096427691907090,\t-0.739062746786215200,\t-0.739029064032866610,\t\n-0.738995379431945270,\t-0.738961692983535420,\t-0.738928004687721350,\t-0.738894314544587320,\t-0.738860622554216920,\t-0.738826928716695530,\t-0.738793233032106870,\t-0.738759535500535080,\t\n-0.738725836122064440,\t-0.738692134896779210,\t-0.738658431824763650,\t-0.738624726906101480,\t-0.738591020140878070,\t-0.738557311529177030,\t-0.738523601071082720,\t-0.738489888766679540,\t\n-0.738456174616051400,\t-0.738422458619283020,\t-0.738388740776458440,\t-0.738355021087661490,\t-0.738321299552977430,\t-0.738287576172490190,\t-0.738253850946284040,\t-0.738220123874443250,\t\n-0.738186394957052070,\t-0.738152664194195120,\t-0.738118931585955760,\t-0.738085197132419600,\t-0.738051460833670570,\t-0.738017722689792820,\t-0.737983982700870730,\t-0.737950240866988790,\t\n-0.737916497188231160,\t-0.737882751664682310,\t-0.737849004296426640,\t-0.737815255083547840,\t-0.737781504026131520,\t-0.737747751124261390,\t-0.737713996378021820,\t-0.737680239787497300,\t\n-0.737646481352772220,\t-0.737612721073930390,\t-0.737578958951057300,\t-0.737545194984236760,\t-0.737511429173553280,\t-0.737477661519091220,\t-0.737443892020935080,\t-0.737410120679169110,\t\n-0.737376347493877930,\t-0.737342572465145780,\t-0.737308795593056620,\t-0.737275016877696140,\t-0.737241236319148060,\t-0.737207453917496870,\t-0.737173669672827160,\t-0.737139883585223200,\t\n-0.737106095654768920,\t-0.737072305881550040,\t-0.737038514265650260,\t-0.737004720807154400,\t-0.736970925506146620,\t-0.736937128362711520,\t-0.736903329376933700,\t-0.736869528548897420,\t\n-0.736835725878687400,\t-0.736801921366387450,\t-0.736768115012083280,\t-0.736734306815858830,\t-0.736700496777798590,\t-0.736666684897987150,\t-0.736632871176509000,\t-0.736599055613448740,\t\n-0.736565238208890080,\t-0.736531418962918960,\t-0.736497597875619410,\t-0.736463774947075820,\t-0.736429950177372780,\t-0.736396123566594780,\t-0.736362295114826540,\t-0.736328464822152640,\t\n-0.736294632688656910,\t-0.736260798714425180,\t-0.736226962899541370,\t-0.736193125244090310,\t-0.736159285748156370,\t-0.736125444411824260,\t-0.736091601235178470,\t-0.736057756218303160,\t\n-0.736023909361283920,\t-0.735990060664205030,\t-0.735956210127150960,\t-0.735922357750206310,\t-0.735888503533455920,\t-0.735854647476984150,\t-0.735820789580875710,\t-0.735786929845214770,\t\n-0.735753068270087130,\t-0.735719204855576850,\t-0.735685339601768410,\t-0.735651472508746740,\t-0.735617603576596450,\t-0.735583732805402010,\t-0.735549860195247710,\t-0.735515985746219240,\t\n-0.735482109458400980,\t-0.735448231331877310,\t-0.735414351366733170,\t-0.735380469563053140,\t-0.735346585920921840,\t-0.735312700440424180,\t-0.735278813121644780,\t-0.735244923964667670,\t\n-0.735211032969578790,\t-0.735177140136462510,\t-0.735143245465403220,\t-0.735109348956485940,\t-0.735075450609795180,\t-0.735041550425415300,\t-0.735007648403432020,\t-0.734973744543929720,\t\n-0.734939838846992990,\t-0.734905931312706760,\t-0.734872021941155640,\t-0.734838110732424440,\t-0.734804197686597990,\t-0.734770282803761110,\t-0.734736366083997840,\t-0.734702447527394220,\t\n-0.734668527134034520,\t-0.734634604904003560,\t-0.734600680837386060,\t-0.734566754934266820,\t-0.734532827194730680,\t-0.734498897618862000,\t-0.734464966206746510,\t-0.734431032958468680,\t\n-0.734397097874113220,\t-0.734363160953765080,\t-0.734329222197509070,\t-0.734295281605430010,\t-0.734261339177612600,\t-0.734227394914141350,\t-0.734193448815102290,\t-0.734159500880579460,\t\n-0.734125551110657910,\t-0.734091599505422580,\t-0.734057646064958160,\t-0.734023690789349590,\t-0.733989733678681370,\t-0.733955774733039190,\t-0.733921813952507660,\t-0.733887851337171710,\t\n-0.733853886887116060,\t-0.733819920602425620,\t-0.733785952483185460,\t-0.733751982529480370,\t-0.733718010741394750,\t-0.733684037119014640,\t-0.733650061662424520,\t-0.733616084371709220,\t\n-0.733582105246953780,\t-0.733548124288242900,\t-0.733514141495661850,\t-0.733480156869294800,\t-0.733446170409227990,\t-0.733412182115545710,\t-0.733378191988332980,\t-0.733344200027674860,\t\n-0.733310206233656170,\t-0.733276210606361940,\t-0.733242213145877230,\t-0.733208213852286960,\t-0.733174212725675620,\t-0.733140209766129260,\t-0.733106204973732360,\t-0.733072198348569960,\t\n-0.733038189890727110,\t-0.733004179600288850,\t-0.732970167477339450,\t-0.732936153521965170,\t-0.732902137734250610,\t-0.732868120114280710,\t-0.732834100662140500,\t-0.732800079377915030,\t\n-0.732766056261689340,\t-0.732732031313548470,\t-0.732698004533577580,\t-0.732663975921861050,\t-0.732629945478485260,\t-0.732595913203534570,\t-0.732561879097094140,\t-0.732527843159248900,\t\n-0.732493805390084130,\t-0.732459765789684750,\t-0.732425724358135470,\t-0.732391681095522440,\t-0.732357636001930160,\t-0.732323589077443880,\t-0.732289540322148550,\t-0.732255489736129420,\t\n-0.732221437319471540,\t-0.732187383072260060,\t-0.732153326994579580,\t-0.732119269086516260,\t-0.732085209348154910,\t-0.732051147779580470,\t-0.732017084380878090,\t-0.731983019152133150,\t\n-0.731948952093430580,\t-0.731914883204854980,\t-0.731880812486492840,\t-0.731846739938428750,\t-0.731812665560747640,\t-0.731778589353535010,\t-0.731744511316875790,\t-0.731710431450855350,\t\n-0.731676349755558840,\t-0.731642266231070870,\t-0.731608180877477810,\t-0.731574093694864260,\t-0.731540004683315480,\t-0.731505913842916740,\t-0.731471821173753200,\t-0.731437726675910120,\t\n-0.731403630349472090,\t-0.731369532194525610,\t-0.731335432211155270,\t-0.731301330399446450,\t-0.731267226759484190,\t-0.731233121291353870,\t-0.731199013995140760,\t-0.731164904870930110,\t\n-0.731130793918807200,\t-0.731096681138856840,\t-0.731062566531165190,\t-0.731028450095817290,\t-0.730994331832898080,\t-0.730960211742493150,\t-0.730926089824687650,\t-0.730891966079566410,\t\n-0.730857840507215810,\t-0.730823713107720540,\t-0.730789583881166100,\t-0.730755452827637540,\t-0.730721319947220560,\t-0.730687185240000090,\t-0.730653048706061740,\t-0.730618910345490760,\t\n-0.730584770158371980,\t-0.730550628144791770,\t-0.730516484304835070,\t-0.730482338638587030,\t-0.730448191146133240,\t-0.730414041827558980,\t-0.730379890682949620,\t-0.730345737712389860,\t\n-0.730311582915966430,\t-0.730277426293764020,\t-0.730243267845868130,\t-0.730209107572363900,\t-0.730174945473337060,\t-0.730140781548872740,\t-0.730106615799056560,\t-0.730072448223973100,\t\n-0.730038278823709310,\t-0.730004107598349660,\t-0.729969934547979870,\t-0.729935759672685200,\t-0.729901582972551030,\t-0.729867404447662960,\t-0.729833224098105800,\t-0.729799041923966160,\t\n-0.729764857925328970,\t-0.729730672102279600,\t-0.729696484454903540,\t-0.729662294983286270,\t-0.729628103687513410,\t-0.729593910567670090,\t-0.729559715623841480,\t-0.729525518856114160,\t\n-0.729491320264572970,\t-0.729457119849303610,\t-0.729422917610391460,\t-0.729388713547921900,\t-0.729354507661980620,\t-0.729320299952652460,\t-0.729286090420024240,\t-0.729251879064180650,\t\n-0.729217665885207420,\t-0.729183450883190030,\t-0.729149234058213970,\t-0.729115015410364940,\t-0.729080794939728220,\t-0.729046572646389610,\t-0.729012348530433950,\t-0.728978122591948050,\t\n-0.728943894831016740,\t-0.728909665247725820,\t-0.728875433842160580,\t-0.728841200614406940,\t-0.728806965564549600,\t-0.728772728692675400,\t-0.728738489998869480,\t-0.728704249483217330,\t\n-0.728670007145804540,\t-0.728635762986716730,\t-0.728601517006039480,\t-0.728567269203858390,\t-0.728533019580259290,\t-0.728498768135326880,\t-0.728464514869148210,\t-0.728430259781808310,\t\n-0.728396002873392680,\t-0.728361744143987020,\t-0.728327483593677050,\t-0.728293221222548360,\t-0.728258957030686100,\t-0.728224691018176990,\t-0.728190423185106070,\t-0.728156153531559270,\t\n-0.728121882057621850,\t-0.728087608763379970,\t-0.728053333648918890,\t-0.728019056714324540,\t-0.727984777959681970,\t-0.727950497385078000,\t-0.727916214990597890,\t-0.727881930776327120,\t\n-0.727847644742351640,\t-0.727813356888756920,\t-0.727779067215628910,\t-0.727744775723052630,\t-0.727710482411114910,\t-0.727676187279901020,\t-0.727641890329496780,\t-0.727607591559987780,\t\n-0.727573290971459730,\t-0.727538988563998460,\t-0.727504684337689670,\t-0.727470378292618620,\t-0.727436070428872260,\t-0.727401760746535730,\t-0.727367449245694740,\t-0.727333135926435110,\t\n-0.727298820788842670,\t-0.727264503833003230,\t-0.727230185059001940,\t-0.727195864466925750,\t-0.727161542056859900,\t-0.727127217828890120,\t-0.727092891783102440,\t-0.727058563919582460,\t\n-0.727024234238416000,\t-0.726989902739689110,\t-0.726955569423487270,\t-0.726921234289896080,\t-0.726886897339002250,\t-0.726852558570891370,\t-0.726818217985648940,\t-0.726783875583360990,\t\n-0.726749531364113350,\t-0.726715185327991400,\t-0.726680837475081940,\t-0.726646487805470480,\t-0.726612136319242710,\t-0.726577783016484680,\t-0.726543427897282100,\t-0.726509070961721020,\t\n-0.726474712209887240,\t-0.726440351641866710,\t-0.726405989257744690,\t-0.726371625057608330,\t-0.726337259041542890,\t-0.726302891209634320,\t-0.726268521561968420,\t-0.726234150098631240,\t\n-0.726199776819708820,\t-0.726165401725286320,\t-0.726131024815450780,\t-0.726096646090287790,\t-0.726062265549883180,\t-0.726027883194322880,\t-0.725993499023692810,\t-0.725959113038079030,\t\n-0.725924725237567570,\t-0.725890335622243590,\t-0.725855944192194460,\t-0.725821550947505330,\t-0.725787155888262480,\t-0.725752759014551610,\t-0.725718360326458980,\t-0.725683959824070300,\t\n-0.725649557507471180,\t-0.725615153376748760,\t-0.725580747431988530,\t-0.725546339673276420,\t-0.725511930100698370,\t-0.725477518714340520,\t-0.725443105514288920,\t-0.725408690500629500,\t\n-0.725374273673447760,\t-0.725339855032831050,\t-0.725305434578864540,\t-0.725271012311634600,\t-0.725236588231227050,\t-0.725202162337728050,\t-0.725167734631223640,\t-0.725133305111799190,\t\n-0.725098873779542190,\t-0.725064440634538010,\t-0.725030005676872700,\t-0.724995568906632410,\t-0.724961130323903080,\t-0.724926689928771070,\t-0.724892247721322210,\t-0.724857803701642770,\t\n-0.724823357869818330,\t-0.724788910225935950,\t-0.724754460770081320,\t-0.724720009502340720,\t-0.724685556422799860,\t-0.724651101531545220,\t-0.724616644828662170,\t-0.724582186314238210,\t\n-0.724547725988358700,\t-0.724513263851109920,\t-0.724478799902577910,\t-0.724444334142848920,\t-0.724409866572009120,\t-0.724375397190144770,\t-0.724340925997341790,\t-0.724306452993685900,\t\n-0.724271978179264480,\t-0.724237501554163110,\t-0.724203023118467960,\t-0.724168542872265400,\t-0.724134060815641360,\t-0.724099576948682210,\t-0.724065091271473450,\t-0.724030603784102670,\t\n-0.723996114486655350,\t-0.723961623379217660,\t-0.723927130461875960,\t-0.723892635734716410,\t-0.723858139197825380,\t-0.723823640851288920,\t-0.723789140695192730,\t-0.723754638729624310,\t\n-0.723720134954669360,\t-0.723685629370414030,\t-0.723651121976944590,\t-0.723616612774347410,\t-0.723582101762708650,\t-0.723547588942114020,\t-0.723513074312651110,\t-0.723478557874405400,\t\n-0.723444039627463400,\t-0.723409519571911240,\t-0.723374997707835200,\t-0.723340474035321760,\t-0.723305948554457180,\t-0.723271421265327060,\t-0.723236892168019010,\t-0.723202361262618720,\t\n-0.723167828549212580,\t-0.723133294027886840,\t-0.723098757698727780,\t-0.723064219561821990,\t-0.723029679617254840,\t-0.722995137865114270,\t-0.722960594305485760,\t-0.722926048938455800,\t\n-0.722891501764110770,\t-0.722856952782536920,\t-0.722822401993820640,\t-0.722787849398048520,\t-0.722753294995306610,\t-0.722718738785680940,\t-0.722684180769259000,\t-0.722649620946126610,\t\n-0.722615059316370160,\t-0.722580495880076110,\t-0.722545930637330750,\t-0.722511363588219990,\t-0.722476794732831440,\t-0.722442224071250920,\t-0.722407651603564900,\t-0.722373077329859560,\t\n-0.722338501250221700,\t-0.722303923364737480,\t-0.722269343673493490,\t-0.722234762176576120,\t-0.722200178874071290,\t-0.722165593766066590,\t-0.722131006852647970,\t-0.722096418133901690,\t\n-0.722061827609914550,\t-0.722027235280772730,\t-0.721992641146562140,\t-0.721958045207370720,\t-0.721923447463284070,\t-0.721888847914388790,\t-0.721854246560771460,\t-0.721819643402518580,\t\n-0.721785038439716420,\t-0.721750431672451790,\t-0.721715823100811060,\t-0.721681212724880170,\t-0.721646600544746830,\t-0.721611986560496970,\t-0.721577370772217170,\t-0.721542753179993950,\t\n-0.721508133783913760,\t-0.721473512584063340,\t-0.721438889580528490,\t-0.721404264773397140,\t-0.721369638162754900,\t-0.721335009748688690,\t-0.721300379531285010,\t-0.721265747510630330,\t\n-0.721231113686811250,\t-0.721196478059914490,\t-0.721161840630025750,\t-0.721127201397233190,\t-0.721092560361622500,\t-0.721057917523280520,\t-0.721023272882293620,\t-0.720988626438748610,\t\n-0.720953978192732100,\t-0.720919328144330020,\t-0.720884676293630070,\t-0.720850022640718620,\t-0.720815367185681950,\t-0.720780709928606990,\t-0.720746050869580210,\t-0.720711390008688340,\t\n-0.720676727346017950,\t-0.720642062881655780,\t-0.720607396615687850,\t-0.720572728548201980,\t-0.720538058679284330,\t-0.720503387009021500,\t-0.720468713537500190,\t-0.720434038264807120,\t\n-0.720399361191028320,\t-0.720364682316251840,\t-0.720330001640563600,\t-0.720295319164050210,\t-0.720260634886798700,\t-0.720225948808895570,\t-0.720191260930427510,\t-0.720156571251481360,\t\n-0.720121879772143700,\t-0.720087186492500810,\t-0.720052491412640490,\t-0.720017794532649020,\t-0.719983095852613110,\t-0.719948395372619340,\t-0.719913693092754660,\t-0.719878989013105100,\t\n-0.719844283133758700,\t-0.719809575454801510,\t-0.719774865976320450,\t-0.719740154698402250,\t-0.719705441621133590,\t-0.719670726744601420,\t-0.719636010068892330,\t-0.719601291594093360,\t\n-0.719566571320290450,\t-0.719531849247571740,\t-0.719497125376023390,\t-0.719462399705732230,\t-0.719427672236785050,\t-0.719392942969268700,\t-0.719358211903270100,\t-0.719323479038875170,\t\n-0.719288744376172300,\t-0.719254007915247520,\t-0.719219269656187770,\t-0.719184529599079750,\t-0.719149787744010500,\t-0.719115044091066750,\t-0.719080298640335400,\t-0.719045551391902630,\t\n-0.719010802345856680,\t-0.718976051502283610,\t-0.718941298861270560,\t-0.718906544422904140,\t-0.718871788187271380,\t-0.718837030154459210,\t-0.718802270324553790,\t-0.718767508697643390,\t\n-0.718732745273814140,\t-0.718697980053153000,\t-0.718663213035746980,\t-0.718628444221682930,\t-0.718593673611047760,\t-0.718558901203928400,\t-0.718524127000411790,\t-0.718489351000584200,\t\n-0.718454573204533880,\t-0.718419793612347200,\t-0.718385012224110890,\t-0.718350229039912190,\t-0.718315444059837830,\t-0.718280657283974280,\t-0.718245868712409700,\t-0.718211078345230460,\t\n-0.718176286182523490,\t-0.718141492224375840,\t-0.718106696470874440,\t-0.718071898922106320,\t-0.718037099578158420,\t-0.718002298439117780,\t-0.717967495505070770,\t-0.717932690776105660,\t\n-0.717897884252308830,\t-0.717863075933767300,\t-0.717828265820568020,\t-0.717793453912798140,\t-0.717758640210544030,\t-0.717723824713893840,\t-0.717689007422934180,\t-0.717654188337751850,\t\n-0.717619367458434240,\t-0.717584544785068170,\t-0.717549720317740670,\t-0.717514894056538900,\t-0.717480066001549900,\t-0.717445236152860040,\t-0.717410404510557820,\t-0.717375571074729490,\t\n-0.717340735845462320,\t-0.717305898822843350,\t-0.717271060006959500,\t-0.717236219397898060,\t-0.717201376995745490,\t-0.717166532800590060,\t-0.717131686812518270,\t-0.717096839031617360,\t\n-0.717061989457974280,\t-0.717027138091676170,\t-0.716992284932810310,\t-0.716957429981463720,\t-0.716922573237723020,\t-0.716887714701676340,\t-0.716852854373410510,\t-0.716817992253012460,\t\n-0.716783128340569450,\t-0.716748262636168530,\t-0.716713395139897070,\t-0.716678525851841550,\t-0.716643654772090240,\t-0.716608781900729740,\t-0.716573907237847420,\t-0.716539030783530210,\t\n-0.716504152537865590,\t-0.716469272500940390,\t-0.716434390672842090,\t-0.716399507053657960,\t-0.716364621643474250,\t-0.716329734442379680,\t-0.716294845450460740,\t-0.716259954667804680,\t\n-0.716225062094498770,\t-0.716190167730630270,\t-0.716155271576285560,\t-0.716120373631553450,\t-0.716085473896520330,\t-0.716050572371273560,\t-0.716015669055900310,\t-0.715980763950487930,\t\n-0.715945857055123700,\t-0.715910948369894660,\t-0.715876037894888410,\t-0.715841125630191310,\t-0.715806211575892190,\t-0.715771295732077430,\t-0.715736378098834390,\t-0.715701458676250460,\t\n-0.715666537464412890,\t-0.715631614463408390,\t-0.715596689673325350,\t-0.715561763094250790,\t-0.715526834726271650,\t-0.715491904569475420,\t-0.715456972623949470,\t-0.715422038889781180,\t\n-0.715387103367057690,\t-0.715352166055866380,\t-0.715317226956294180,\t-0.715282286068429470,\t-0.715247343392359070,\t-0.715212398928170230,\t-0.715177452675950560,\t-0.715142504635787100,\t\n-0.715107554807767440,\t-0.715072603191978300,\t-0.715037649788508150,\t-0.715002694597444030,\t-0.714967737618873110,\t-0.714932778852882870,\t-0.714897818299560560,\t-0.714862855958993900,\t\n-0.714827891831269930,\t-0.714792925916475700,\t-0.714757958214699780,\t-0.714722988726028910,\t-0.714688017450550660,\t-0.714653044388352310,\t-0.714618069539521340,\t-0.714583092904145230,\t\n-0.714548114482310700,\t-0.714513134274106560,\t-0.714478152279619530,\t-0.714443168498937190,\t-0.714408182932146920,\t-0.714373195579336210,\t-0.714338206440592430,\t-0.714303215516003180,\t\n-0.714268222805655270,\t-0.714233228309637420,\t-0.714198232028036450,\t-0.714163233960940060,\t-0.714128234108435400,\t-0.714093232470610180,\t-0.714058229047552010,\t-0.714023223839347580,\t\n-0.713988216846085710,\t-0.713953208067853230,\t-0.713918197504737840,\t-0.713883185156826920,\t-0.713848171024207940,\t-0.713813155106968630,\t-0.713778137405196470,\t-0.713743117918978930,\t\n-0.713708096648402960,\t-0.713673073593557360,\t-0.713638048754529080,\t-0.713603022131405700,\t-0.713567993724274820,\t-0.713532963533223820,\t-0.713497931558339850,\t-0.713462897799711730,\t\n-0.713427862257426270,\t-0.713392824931571190,\t-0.713357785822234080,\t-0.713322744929502540,\t-0.713287702253464050,\t-0.713252657794206320,\t-0.713217611551816950,\t-0.713182563526382980,\t\n-0.713147513717993120,\t-0.713112462126734630,\t-0.713077408752694870,\t-0.713042353595961580,\t-0.713007296656622440,\t-0.712972237934765160,\t-0.712937177430476470,\t-0.712902115143845600,\t\n-0.712867051074959400,\t-0.712831985223905560,\t-0.712796917590771790,\t-0.712761848175645700,\t-0.712726776978614970,\t-0.712691703999767330,\t-0.712656629239189820,\t-0.712621552696971360,\t\n-0.712586474373199000,\t-0.712551394267960330,\t-0.712516312381343390,\t-0.712481228713435550,\t-0.712446143264324650,\t-0.712411056034097820,\t-0.712375967022843890,\t-0.712340876230650120,\t\n-0.712305783657604110,\t-0.712270689303793670,\t-0.712235593169306510,\t-0.712200495254230350,\t-0.712165395558652990,\t-0.712130294082661490,\t-0.712095190826344870,\t-0.712060085789790300,\t\n-0.712024978973085480,\t-0.711989870376318220,\t-0.711954759999576250,\t-0.711919647842947370,\t-0.711884533906518850,\t-0.711849418190379610,\t-0.711814300694616710,\t-0.711779181419318170,\t\n-0.711744060364571610,\t-0.711708937530464940,\t-0.711673812917085980,\t-0.711638686524522330,\t-0.711603558352862150,\t-0.711568428402192250,\t-0.711533296672602010,\t-0.711498163164178580,\t\n-0.711463027877009770,\t-0.711427890811183290,\t-0.711392751966787080,\t-0.711357611343908400,\t-0.711322468942636290,\t-0.711287324763058000,\t-0.711252178805261480,\t-0.711217031069334430,\t\n-0.711181881555364770,\t-0.711146730263440550,\t-0.711111577193649370,\t-0.711076422346079370,\t-0.711041265720817610,\t-0.711006107317953220,\t-0.710970947137573690,\t-0.710935785179766740,\t\n-0.710900621444620410,\t-0.710865455932222500,\t-0.710830288642660850,\t-0.710795119576022930,\t-0.710759948732397890,\t-0.710724776111872900,\t-0.710689601714535990,\t-0.710654425540475090,\t\n-0.710619247589778010,\t-0.710584067862533030,\t-0.710548886358827740,\t-0.710513703078749610,\t-0.710478518022387820,\t-0.710443331189829830,\t-0.710408142581163470,\t-0.710372952196476780,\t\n-0.710337760035857580,\t-0.710302566099394130,\t-0.710267370387173580,\t-0.710232172899285310,\t-0.710196973635816460,\t-0.710161772596855310,\t-0.710126569782489670,\t-0.710091365192807580,\t\n-0.710056158827897080,\t-0.710020950687846210,\t-0.709985740772742350,\t-0.709950529082674750,\t-0.709915315617730910,\t-0.709880100377998650,\t-0.709844883363566210,\t-0.709809664574521550,\t\n-0.709774444010952690,\t-0.709739221672947120,\t-0.709703997560594100,\t-0.709668771673981120,\t-0.709633544013196230,\t-0.709598314578327450,\t-0.709563083369462940,\t-0.709527850386690640,\t\n-0.709492615630098800,\t-0.709457379099775350,\t-0.709422140795807790,\t-0.709386900718285580,\t-0.709351658867296120,\t-0.709316415242927430,\t-0.709281169845267790,\t-0.709245922674405230,\t\n-0.709210673730427230,\t-0.709175423013423180,\t-0.709140170523480440,\t-0.709104916260687390,\t-0.709069660225132070,\t-0.709034402416902520,\t-0.708999142836087000,\t-0.708963881482773670,\t\n-0.708928618357050570,\t-0.708893353459005390,\t-0.708858086788727420,\t-0.708822818346304120,\t-0.708787548131823870,\t-0.708752276145374730,\t-0.708717002387044940,\t-0.708681726856922540,\t\n-0.708646449555095370,\t-0.708611170481652560,\t-0.708575889636681830,\t-0.708540607020271440,\t-0.708505322632509540,\t-0.708470036473484280,\t-0.708434748543284030,\t-0.708399458841996730,\t\n-0.708364167369710310,\t-0.708328874126514020,\t-0.708293579112495570,\t-0.708258282327743130,\t-0.708222983772345050,\t-0.708187683446389490,\t-0.708152381349964720,\t-0.708117077483158330,\t\n-0.708081771846059920,\t-0.708046464438757070,\t-0.708011155261338070,\t-0.707975844313891270,\t-0.707940531596504720,\t-0.707905217109266900,\t-0.707869900852265980,\t-0.707834582825589750,\t\n-0.707799263029327720,\t-0.707763941463567360,\t-0.707728618128397270,\t-0.707693293023905600,\t-0.707657966150180840,\t-0.707622637507311030,\t-0.707587307095383980,\t-0.707551974914489400,\t\n-0.707516640964714780,\t-0.707481305246148610,\t-0.707445967758879140,\t-0.707410628502994740,\t-0.707375287478583800,\t-0.707339944685734690,\t-0.707304600124535670,\t-0.707269253795074440,\t\n-0.707233905697440820,\t-0.707198555831722420,\t-0.707163204198007600,\t-0.707127850796384740,\t-0.707092495626942320,\t-0.707057138689768050,\t-0.707021779984951530,\t-0.706986419512580570,\t\n-0.706951057272743540,\t-0.706915693265528830,\t-0.706880327491024920,\t-0.706844959949320170,\t-0.706809590640503080,\t-0.706774219564662020,\t-0.706738846721884690,\t-0.706703472112260920,\t\n-0.706668095735878520,\t-0.706632717592825870,\t-0.706597337683191330,\t-0.706561956007063510,\t-0.706526572564530890,\t-0.706491187355681060,\t-0.706455800380603960,\t-0.706420411639387400,\t\n-0.706385021132119760,\t-0.706349628858889520,\t-0.706314234819785280,\t-0.706278839014895410,\t-0.706243441444308510,\t-0.706208042108112280,\t-0.706172641006396650,\t-0.706137238139249450,\t\n-0.706101833506759040,\t-0.706066427109014130,\t-0.706031018946103090,\t-0.705995609018114530,\t-0.705960197325136370,\t-0.705924783867258320,\t-0.705889368644568300,\t-0.705853951657154810,\t\n-0.705818532905106540,\t-0.705783112388511880,\t-0.705747690107459410,\t-0.705712266062037740,\t-0.705676840252334790,\t-0.705641412678440380,\t-0.705605983340442440,\t-0.705570552238429460,\t\n-0.705535119372490250,\t-0.705499684742713180,\t-0.705464248349186860,\t-0.705428810191999320,\t-0.705393370271240380,\t-0.705357928586997970,\t-0.705322485139360800,\t-0.705287039928417350,\t\n-0.705251592954256320,\t-0.705216144216966320,\t-0.705180693716636050,\t-0.705145241453353890,\t-0.705109787427208090,\t-0.705074331638288480,\t-0.705038874086682980,\t-0.705003414772480300,\t\n-0.704967953695769150,\t-0.704932490856638010,\t-0.704897026255175030,\t-0.704861559891470150,\t-0.704826091765611400,\t-0.704790621877687370,\t-0.704755150227786790,\t-0.704719676815998340,\t\n-0.704684201642410750,\t-0.704648724707112590,\t-0.704613246010192710,\t-0.704577765551739010,\t-0.704542283331841550,\t-0.704506799350588350,\t-0.704471313608068140,\t-0.704435826104369720,\t\n-0.704400336839581700,\t-0.704364845813792770,\t-0.704329353027091210,\t-0.704293858479566830,\t-0.704258362171307770,\t-0.704222864102402870,\t-0.704187364272940820,\t-0.704151862683010330,\t\n-0.704116359332700230,\t-0.704080854222099100,\t-0.704045347351295310,\t-0.704009838720378810,\t-0.703974328329437630,\t-0.703938816178560690,\t-0.703903302267836710,\t-0.703867786597354380,\t\n-0.703832269167202760,\t-0.703796749977469660,\t-0.703761229028245340,\t-0.703725706319618060,\t-0.703690181851676420,\t-0.703654655624509350,\t-0.703619127638205670,\t-0.703583597892854180,\t\n-0.703548066388543610,\t-0.703512533125362330,\t-0.703476998103400360,\t-0.703441461322745760,\t-0.703405922783487680,\t-0.703370382485714710,\t-0.703334840429515770,\t-0.703299296614979810,\t\n-0.703263751042194850,\t-0.703228203711251170,\t-0.703192654622237120,\t-0.703157103775241320,\t-0.703121551170352800,\t-0.703085996807660370,\t-0.703050440687252860,\t-0.703014882809219420,\t\n-0.702979323173648640,\t-0.702943761780629010,\t-0.702908198630250560,\t-0.702872633722601670,\t-0.702837067057771160,\t-0.702801498635847950,\t-0.702765928456920990,\t-0.702730356521078630,\t\n-0.702694782828411020,\t-0.702659207379006330,\t-0.702623630172953820,\t-0.702588051210342070,\t-0.702552470491260240,\t-0.702516888015797260,\t-0.702481303784042050,\t-0.702445717796083560,\t\n-0.702410130052010250,\t-0.702374540551912060,\t-0.702338949295877700,\t-0.702303356283995870,\t-0.702267761516355620,\t-0.702232164993046080,\t-0.702196566714155980,\t-0.702160966679773900,\t\n-0.702125364889990110,\t-0.702089761344892870,\t-0.702054156044571220,\t-0.702018548989114090,\t-0.701982940178610630,\t-0.701947329613149870,\t-0.701911717292820760,\t-0.701876103217711770,\t\n-0.701840487387913160,\t-0.701804869803513200,\t-0.701769250464601150,\t-0.701733629371266040,\t-0.701698006523596820,\t-0.701662381921682510,\t-0.701626755565611600,\t-0.701591127455474580,\t\n-0.701555497591359600,\t-0.701519865973355920,\t-0.701484232601552680,\t-0.701448597476038720,\t-0.701412960596903280,\t-0.701377321964235520,\t-0.701341681578123710,\t-0.701306039438658440,\t\n-0.701270395545928070,\t-0.701234749900021660,\t-0.701199102501028350,\t-0.701163453349037290,\t-0.701127802444137640,\t-0.701092149786417870,\t-0.701056495375968370,\t-0.701020839212877610,\t\n-0.700985181297234640,\t-0.700949521629128820,\t-0.700913860208649210,\t-0.700878197035884940,\t-0.700842532110925060,\t-0.700806865433859060,\t-0.700771197004775080,\t-0.700735526823763830,\t\n-0.700699854890913800,\t-0.700664181206314020,\t-0.700628505770053870,\t-0.700592828582222490,\t-0.700557149642908270,\t-0.700521468952201910,\t-0.700485786510191890,\t-0.700450102316967360,\t\n-0.700414416372617590,\t-0.700378728677231830,\t-0.700343039230899130,\t-0.700307348033708870,\t-0.700271655085750290,\t-0.700235960387112000,\t-0.700200263937884260,\t-0.700164565738156000,\t\n-0.700128865788016250,\t-0.700093164087554400,\t-0.700057460636859590,\t-0.700021755436020520,\t-0.699986048485127690,\t-0.699950339784269790,\t-0.699914629333535990,\t-0.699878917133015640,\t\n-0.699843203182797910,\t-0.699807487482972280,\t-0.699771770033627890,\t-0.699736050834854020,\t-0.699700329886739470,\t-0.699664607189374730,\t-0.699628882742848400,\t-0.699593156547249960,\t\n-0.699557428602668560,\t-0.699521698909193690,\t-0.699485967466914490,\t-0.699450234275919680,\t-0.699414499336299960,\t-0.699378762648144030,\t-0.699343024211541150,\t-0.699307284026580820,\t\n-0.699271542093352180,\t-0.699235798411944610,\t-0.699200052982447700,\t-0.699164305804949930,\t-0.699128556879542120,\t-0.699092806206312870,\t-0.699057053785351550,\t-0.699021299616747640,\t\n-0.698985543700590520,\t-0.698949786036969440,\t-0.698914026625973350,\t-0.698878265467692830,\t-0.698842502562216580,\t-0.698806737909634100,\t-0.698770971510034760,\t-0.698735203363508030,\t\n-0.698699433470143290,\t-0.698663661830029930,\t-0.698627888443257520,\t-0.698592113309914660,\t-0.698556336430092180,\t-0.698520557803878780,\t-0.698484777431364060,\t-0.698448995312637380,\t\n-0.698413211447788230,\t-0.698377425836905430,\t-0.698341638480079690,\t-0.698305849377399810,\t-0.698270058528955300,\t-0.698234265934835730,\t-0.698198471595130490,\t-0.698162675509928940,\t\n-0.698126877679320800,\t-0.698091078103395550,\t-0.698055276782241880,\t-0.698019473715950630,\t-0.697983668904610720,\t-0.697947862348311630,\t-0.697912054047142850,\t-0.697876244001193970,\t\n-0.697840432210553920,\t-0.697804618675313290,\t-0.697768803395561240,\t-0.697732986371387030,\t-0.697697167602880470,\t-0.697661347090130950,\t-0.697625524833228150,\t-0.697589700832261460,\t\n-0.697553875087320470,\t-0.697518047598494230,\t-0.697482218365873540,\t-0.697446387389547230,\t-0.697410554669605000,\t-0.697374720206136330,\t-0.697338883999230940,\t-0.697303046048978300,\t\n-0.697267206355467350,\t-0.697231364918789120,\t-0.697195521739032430,\t-0.697159676816286880,\t-0.697123830150642170,\t-0.697087981742188000,\t-0.697052131591013760,\t-0.697016279697209250,\t\n-0.696980426060863300,\t-0.696944570682067050,\t-0.696908713560909330,\t-0.696872854697479730,\t-0.696836994091868060,\t-0.696801131744164030,\t-0.696765267654457010,\t-0.696729401822836270,\t\n-0.696693534249392620,\t-0.696657664934215100,\t-0.696621793877393540,\t-0.696585921079017400,\t-0.696550046539176400,\t-0.696514170257960360,\t-0.696478292235458870,\t-0.696442412471761750,\t\n-0.696406530966957820,\t-0.696370647721138330,\t-0.696334762734392100,\t-0.696298876006809060,\t-0.696262987538478820,\t-0.696227097329491060,\t-0.696191205379934950,\t-0.696155311689901410,\t\n-0.696119416259479710,\t-0.696083519088759320,\t-0.696047620177830280,\t-0.696011719526782090,\t-0.695975817135704670,\t-0.695939913004687600,\t-0.695904007133820830,\t-0.695868099523193400,\t\n-0.695832190172896330,\t-0.695796279083018780,\t-0.695760366253650560,\t-0.695724451684881510,\t-0.695688535376801200,\t-0.695652617329499010,\t-0.695616697543065770,\t-0.695580776017590940,\t\n-0.695544852753164130,\t-0.695508927749875160,\t-0.695473001007813840,\t-0.695437072527070100,\t-0.695401142307733640,\t-0.695365210349894290,\t-0.695329276653641300,\t-0.695293341219065830,\t\n-0.695257404046256910,\t-0.695221465135304470,\t-0.695185524486298450,\t-0.695149582099328530,\t-0.695113637974484780,\t-0.695077692111856220,\t-0.695041744511534000,\t-0.695005795173607500,\t\n-0.694969844098166530,\t-0.694933891285300920,\t-0.694897936735100590,\t-0.694861980447655350,\t-0.694826022423055250,\t-0.694790062661389430,\t-0.694754101162749160,\t-0.694718137927223480,\t\n-0.694682172954902530,\t-0.694646206245876140,\t-0.694610237800234340,\t-0.694574267618066840,\t-0.694538295699463020,\t-0.694502322044514120,\t-0.694466346653309420,\t-0.694430369525938950,\t\n-0.694394390662492420,\t-0.694358410063059980,\t-0.694322427727731450,\t-0.694286443656596970,\t-0.694250457849745590,\t-0.694214470307268790,\t-0.694178481029255830,\t-0.694142490015796640,\t\n-0.694106497266981260,\t-0.694070502782899610,\t-0.694034506563641740,\t-0.693998508609296900,\t-0.693962508919956480,\t-0.693926507495709720,\t-0.693890504336646790,\t-0.693854499442857490,\t\n-0.693818492814431980,\t-0.693782484451460290,\t-0.693746474354032360,\t-0.693710462522238220,\t-0.693674448956167370,\t-0.693638433655910940,\t-0.693602416621558420,\t-0.693566397853199960,\t\n-0.693530377350925380,\t-0.693494355114824930,\t-0.693458331144988000,\t-0.693422305441505740,\t-0.693386278004467840,\t-0.693350248833964230,\t-0.693314217930084960,\t-0.693278185292920180,\t\n-0.693242150922559920,\t-0.693206114819094220,\t-0.693170076982613350,\t-0.693134037413206560,\t-0.693097996110965340,\t-0.693061953075979180,\t-0.693025908308338100,\t-0.692989861808132270,\t\n-0.692953813575451720,\t-0.692917763610386710,\t-0.692881711913026610,\t-0.692845658483462800,\t-0.692809603321784980,\t-0.692773546428083090,\t-0.692737487802447370,\t-0.692701427444967880,\t\n-0.692665365355734860,\t-0.692629301534838370,\t-0.692593235982367990,\t-0.692557168698415220,\t-0.692521099683069520,\t-0.692485028936421050,\t-0.692448956458560080,\t-0.692412882249576640,\t\n-0.692376806309561000,\t-0.692340728638602740,\t-0.692304649236793250,\t-0.692268568104222100,\t-0.692232485240979580,\t-0.692196400647155930,\t-0.692160314322841200,\t-0.692124226268125640,\t\n-0.692088136483099640,\t-0.692052044967852550,\t-0.692015951722475990,\t-0.691979856747059640,\t-0.691943760041693560,\t-0.691907661606468110,\t-0.691871561441473440,\t-0.691835459546800040,\t\n-0.691799355922537160,\t-0.691763250568776630,\t-0.691727143485608040,\t-0.691691034673121430,\t-0.691654924131407390,\t-0.691618811860555960,\t-0.691582697860657510,\t-0.691546582131802310,\t\n-0.691510464674080620,\t-0.691474345487582130,\t-0.691438224572398450,\t-0.691402101928619280,\t-0.691365977556334780,\t-0.691329851455635300,\t-0.691293723626611230,\t-0.691257594069352280,\t\n-0.691221462783949910,\t-0.691185329770493850,\t-0.691149195029074570,\t-0.691113058559782220,\t-0.691076920362707290,\t-0.691040780437939930,\t-0.691004638785570720,\t-0.690968495405689940,\t\n-0.690932350298387290,\t-0.690896203463754240,\t-0.690860054901880850,\t-0.690823904612857250,\t-0.690787752596773940,\t-0.690751598853721170,\t-0.690715443383789540,\t-0.690679286187068530,\t\n-0.690643127263649960,\t-0.690606966613623640,\t-0.690570804237079840,\t-0.690534640134109030,\t-0.690498474304801710,\t-0.690462306749248130,\t-0.690426137467538780,\t-0.690389966459763470,\t\n-0.690353793726013910,\t-0.690317619266379800,\t-0.690281443080951630,\t-0.690245265169819880,\t-0.690209085533075030,\t-0.690172904170807460,\t-0.690136721083106860,\t-0.690100536270065180,\t\n-0.690064349731772220,\t-0.690028161468318360,\t-0.689991971479794080,\t-0.689955779766289860,\t-0.689919586327896180,\t-0.689883391164703540,\t-0.689847194276801750,\t-0.689810995664282610,\t\n-0.689774795327236070,\t-0.689738593265752490,\t-0.689702389479922460,\t-0.689666183969836480,\t-0.689629976735584900,\t-0.689593767777257890,\t-0.689557557094947040,\t-0.689521344688742270,\t\n-0.689485130558734170,\t-0.689448914705013240,\t-0.689412697127670060,\t-0.689376477826795010,\t-0.689340256802478900,\t-0.689304034054812110,\t-0.689267809583884670,\t-0.689231583389788180,\t\n-0.689195355472612900,\t-0.689159125832449090,\t-0.689122894469387570,\t-0.689086661383518710,\t-0.689050426574932650,\t-0.689014190043721110,\t-0.688977951789974120,\t-0.688941711813782280,\t\n-0.688905470115236060,\t-0.688869226694426300,\t-0.688832981551443350,\t-0.688796734686378030,\t-0.688760486099320830,\t-0.688724235790361790,\t-0.688687983759592840,\t-0.688651730007103890,\t\n-0.688615474532985660,\t-0.688579217337328630,\t-0.688542958420223620,\t-0.688506697781761320,\t-0.688470435422031460,\t-0.688434171341126280,\t-0.688397905539135600,\t-0.688361638016150130,\t\n-0.688325368772260690,\t-0.688289097807557760,\t-0.688252825122132040,\t-0.688216550716074350,\t-0.688180274589474510,\t-0.688143996742424770,\t-0.688107717175014950,\t-0.688071435887335880,\t\n-0.688035152879478140,\t-0.687998868151532660,\t-0.687962581703589930,\t-0.687926293535740090,\t-0.687890003648075180,\t-0.687853712040685240,\t-0.687817418713660980,\t-0.687781123667093320,\t\n-0.687744826901072750,\t-0.687708528415690080,\t-0.687672228211036130,\t-0.687635926287200940,\t-0.687599622644276650,\t-0.687563317282353200,\t-0.687527010201521630,\t-0.687490701401872410,\t\n-0.687454390883496470,\t-0.687418078646484520,\t-0.687381764690926710,\t-0.687345449016915190,\t-0.687309131624539990,\t-0.687272812513892050,\t-0.687236491685061960,\t-0.687200169138140750,\t\n-0.687163844873219020,\t-0.687127518890387810,\t-0.687091191189737720,\t-0.687054861771358990,\t-0.687018530635343680,\t-0.686982197781782160,\t-0.686945863210765120,\t-0.686909526922383500,\t\n-0.686873188916727880,\t-0.686836849193888770,\t-0.686800507753958180,\t-0.686764164597026380,\t-0.686727819723184090,\t-0.686691473132522210,\t-0.686655124825131690,\t-0.686618774801103340,\t\n-0.686582423060528080,\t-0.686546069603496730,\t-0.686509714430099560,\t-0.686473357540428820,\t-0.686436998934574660,\t-0.686400638612628010,\t-0.686364276574679690,\t-0.686327912820820730,\t\n-0.686291547351141950,\t-0.686255180165733720,\t-0.686218811264688200,\t-0.686182440648095640,\t-0.686146068316046960,\t-0.686109694268633000,\t-0.686073318505944880,\t-0.686036941028073550,\t\n-0.686000561835109820,\t-0.685964180927144060,\t-0.685927798304268420,\t-0.685891413966573270,\t-0.685855027914149650,\t-0.685818640147088490,\t-0.685782250665480710,\t-0.685745859469417240,\t\n-0.685709466558988570,\t-0.685673071934286840,\t-0.685636675595402420,\t-0.685600277542426250,\t-0.685563877775449470,\t-0.685527476294562900,\t-0.685491073099857800,\t-0.685454668191424870,\t\n-0.685418261569354700,\t-0.685381853233739570,\t-0.685345443184669720,\t-0.685309031422236310,\t-0.685272617946530270,\t-0.685236202757642740,\t-0.685199785855664660,\t-0.685163367240686490,\t\n-0.685126946912800520,\t-0.685090524872097210,\t-0.685054101118667600,\t-0.685017675652602740,\t-0.684981248473993660,\t-0.684944819582931410,\t-0.684908388979507230,\t-0.684871956663812060,\t\n-0.684835522635936280,\t-0.684799086895972350,\t-0.684762649444010770,\t-0.684726210280142470,\t-0.684689769404458690,\t-0.684653326817050490,\t-0.684616882518008340,\t-0.684580436507424730,\t\n-0.684543988785389910,\t-0.684507539351995040,\t-0.684471088207331490,\t-0.684434635351490070,\t-0.684398180784562160,\t-0.684361724506638790,\t-0.684325266517811110,\t-0.684288806818169610,\t\n-0.684252345407806770,\t-0.684215882286812960,\t-0.684179417455279550,\t-0.684142950913297580,\t-0.684106482660958190,\t-0.684070012698352550,\t-0.684033541025571350,\t-0.683997067642706850,\t\n-0.683960592549849760,\t-0.683924115747091220,\t-0.683887637234522280,\t-0.683851157012234310,\t-0.683814675080318460,\t-0.683778191438865870,\t-0.683741706087967140,\t-0.683705219027714860,\t\n-0.683668730258199410,\t-0.683632239779512260,\t-0.683595747591744460,\t-0.683559253694987380,\t-0.683522758089332050,\t-0.683486260774869180,\t-0.683449761751691360,\t-0.683413261019889200,\t\n-0.683376758579553820,\t-0.683340254430776510,\t-0.683303748573648620,\t-0.683267241008261310,\t-0.683230731734705830,\t-0.683194220753073010,\t-0.683157708063455220,\t-0.683121193665943150,\t\n-0.683084677560628180,\t-0.683048159747601470,\t-0.683011640226954380,\t-0.682975118998778160,\t-0.682938596063163430,\t-0.682902071420202980,\t-0.682865545069987200,\t-0.682829017012607680,\t\n-0.682792487248155670,\t-0.682755955776722320,\t-0.682719422598399130,\t-0.682682887713277340,\t-0.682646351121448450,\t-0.682609812823002930,\t-0.682573272818033480,\t-0.682536731106630930,\t\n-0.682500187688886540,\t-0.682463642564891670,\t-0.682427095734737700,\t-0.682390547198515440,\t-0.682353996956317270,\t-0.682317445008234210,\t-0.682280891354357540,\t-0.682244335994778630,\t\n-0.682207778929588950,\t-0.682171220158879770,\t-0.682134659682742450,\t-0.682098097501268600,\t-0.682061533614548800,\t-0.682024968022675870,\t-0.681988400725740520,\t-0.681951831723834110,\t\n-0.681915261017048140,\t-0.681878688605473960,\t-0.681842114489203180,\t-0.681805538668326380,\t-0.681768961142936390,\t-0.681732381913124020,\t-0.681695800978980750,\t-0.681659218340597840,\t\n-0.681622633998067000,\t-0.681586047951479590,\t-0.681549460200926990,\t-0.681512870746500130,\t-0.681476279588291710,\t-0.681439686726392550,\t-0.681403092160894230,\t-0.681366495891888140,\t\n-0.681329897919465970,\t-0.681293298243718870,\t-0.681256696864738000,\t-0.681220093782615940,\t-0.681183488997443630,\t-0.681146882509312660,\t-0.681110274318314500,\t-0.681073664424540650,\t\n-0.681037052828082580,\t-0.681000439529031890,\t-0.680963824527479500,\t-0.680927207823518230,\t-0.680890589417238790,\t-0.680853969308732990,\t-0.680817347498092310,\t-0.680780723985408230,\t\n-0.680744098770772240,\t-0.680707471854275490,\t-0.680670843236010570,\t-0.680634212916068740,\t-0.680597580894541140,\t-0.680560947171519710,\t-0.680524311747095930,\t-0.680487674621361390,\t\n-0.680451035794407580,\t-0.680414395266326300,\t-0.680377753037208270,\t-0.680341109107146510,\t-0.680304463476232080,\t-0.680267816144556340,\t-0.680231167112211210,\t-0.680194516379288070,\t\n-0.680157863945878070,\t-0.680121209812073910,\t-0.680084553977966850,\t-0.680047896443648380,\t-0.680011237209210200,\t-0.679974576274743890,\t-0.679937913640341170,\t-0.679901249306093640,\t\n-0.679864583272092980,\t-0.679827915538430140,\t-0.679791246105198250,\t-0.679754574972488260,\t-0.679717902140391850,\t-0.679681227609000630,\t-0.679644551378406400,\t-0.679607873448700110,\t\n-0.679571193819974660,\t-0.679534512492321440,\t-0.679497829465831820,\t-0.679461144740597600,\t-0.679424458316710610,\t-0.679387770194262440,\t-0.679351080373344800,\t-0.679314388854049490,\t\n-0.679277695636467560,\t-0.679241000720692050,\t-0.679204304106813980,\t-0.679167605794925300,\t-0.679130905785117480,\t-0.679094204077482440,\t-0.679057500672111790,\t-0.679020795569096890,\t\n-0.678984088768530560,\t-0.678947380270504050,\t-0.678910670075109080,\t-0.678873958182437450,\t-0.678837244592580880,\t-0.678800529305631170,\t-0.678763812321680260,\t-0.678727093640819070,\t\n-0.678690373263140740,\t-0.678653651188736660,\t-0.678616927417698300,\t-0.678580201950117700,\t-0.678543474786086560,\t-0.678506745925696710,\t-0.678470015369039390,\t-0.678433283116207650,\t\n-0.678396549167292750,\t-0.678359813522386500,\t-0.678323076181580610,\t-0.678286337144967110,\t-0.678249596412637710,\t-0.678212853984684340,\t-0.678176109861198920,\t-0.678139364042272490,\t\n-0.678102616527998300,\t-0.678065867318467630,\t-0.678029116413772170,\t-0.677992363814004070,\t-0.677955609519254930,\t-0.677918853529616230,\t-0.677882095845181000,\t-0.677845336466040500,\t\n-0.677808575392286670,\t-0.677771812624011430,\t-0.677735048161306590,\t-0.677698282004264190,\t-0.677661514152976040,\t-0.677624744607534190,\t-0.677587973368029780,\t-0.677551200434556080,\t\n-0.677514425807204330,\t-0.677477649486066590,\t-0.677440871471234770,\t-0.677404091762800700,\t-0.677367310360855730,\t-0.677330527265493140,\t-0.677293742476804290,\t-0.677256955994881120,\t\n-0.677220167819815420,\t-0.677183377951699360,\t-0.677146586390624860,\t-0.677109793136683960,\t-0.677072998189968470,\t-0.677036201550569870,\t-0.676999403218581430,\t-0.676962603194094510,\t\n-0.676925801477201050,\t-0.676888998067993080,\t-0.676852192966562630,\t-0.676815386173001740,\t-0.676778577687401680,\t-0.676741767509855820,\t-0.676704955640455630,\t-0.676668142079292930,\t\n-0.676631326826459880,\t-0.676594509882048610,\t-0.676557691246150950,\t-0.676520870918859150,\t-0.676484048900264480,\t-0.676447225190460410,\t-0.676410399789538210,\t-0.676373572697590020,\t\n-0.676336743914707880,\t-0.676299913440983950,\t-0.676263081276510250,\t-0.676226247421378050,\t-0.676189411875681050,\t-0.676152574639510400,\t-0.676115735712958350,\t-0.676078895096116960,\t\n-0.676042052789078360,\t-0.676005208791934600,\t-0.675968363104777810,\t-0.675931515727700160,\t-0.675894666660793010,\t-0.675857815904149840,\t-0.675820963457862130,\t-0.675784109322022040,\t\n-0.675747253496721710,\t-0.675710395982053290,\t-0.675673536778108150,\t-0.675636675884979780,\t-0.675599813302759760,\t-0.675562949031540240,\t-0.675526083071413370,\t-0.675489215422471200,\t\n-0.675452346084806090,\t-0.675415475058509960,\t-0.675378602343675300,\t-0.675341727940393380,\t-0.675304851848757880,\t-0.675267974068860190,\t-0.675231094600792560,\t-0.675194213444647250,\t\n-0.675157330600516410,\t-0.675120446068491530,\t-0.675083559848666190,\t-0.675046671941131990,\t-0.675009782345981080,\t-0.674972891063305820,\t-0.674935998093198150,\t-0.674899103435750660,\t\n-0.674862207091055270,\t-0.674825309059204460,\t-0.674788409340289720,\t-0.674751507934404530,\t-0.674714604841640590,\t-0.674677700062090270,\t-0.674640793595845500,\t-0.674603885442998870,\t\n-0.674566975603642540,\t-0.674530064077868090,\t-0.674493150865769110,\t-0.674456235967437310,\t-0.674419319382964840,\t-0.674382401112444070,\t-0.674345481155967370,\t-0.674308559513626890,\t\n-0.674271636185515110,\t-0.674234711171723510,\t-0.674197784472345800,\t-0.674160856087473670,\t-0.674123926017199280,\t-0.674086994261615220,\t-0.674050060820813530,\t-0.674013125694886810,\t\n-0.673976188883926630,\t-0.673939250388026600,\t-0.673902310207278420,\t-0.673865368341774460,\t-0.673828424791607090,\t-0.673791479556868690,\t-0.673754532637651500,\t-0.673717584034048130,\t\n-0.673680633746150730,\t-0.673643681774050980,\t-0.673606728117842830,\t-0.673569772777617870,\t-0.673532815753468350,\t-0.673495857045486870,\t-0.673458896653765680,\t-0.673421934578396720,\t\n-0.673384970819473460,\t-0.673348005377087830,\t-0.673311038251332210,\t-0.673274069442298950,\t-0.673237098950080550,\t-0.673200126774769370,\t-0.673163152916457900,\t-0.673126177375238500,\t\n-0.673089200151202990,\t-0.673052221244445190,\t-0.673015240655056910,\t-0.672978258383130410,\t-0.672941274428758280,\t-0.672904288792033010,\t-0.672867301473046410,\t-0.672830312471892070,\t\n-0.672793321788662020,\t-0.672756329423448650,\t-0.672719335376344540,\t-0.672682339647441950,\t-0.672645342236833590,\t-0.672608343144611930,\t-0.672571342370869350,\t-0.672534339915697780,\t\n-0.672497335779191020,\t-0.672460329961440890,\t-0.672423322462539890,\t-0.672386313282580690,\t-0.672349302421655580,\t-0.672312289879857250,\t-0.672275275657277630,\t-0.672238259754010410,\t\n-0.672201242170147540,\t-0.672164222905781590,\t-0.672127201961005170,\t-0.672090179335910640,\t-0.672053155030590600,\t-0.672016129045137740,\t-0.671979101379643890,\t-0.671942072034202980,\t\n-0.671905041008906910,\t-0.671868008303848190,\t-0.671830973919119500,\t-0.671793937854813340,\t-0.671756900111022290,\t-0.671719860687838400,\t-0.671682819585355470,\t-0.671645776803665550,\t\n-0.671608732342861110,\t-0.671571686203034870,\t-0.671534638384279400,\t-0.671497588886687420,\t-0.671460537710351410,\t-0.671423484855363300,\t-0.671386430321817330,\t-0.671349374109805110,\t\n-0.671312316219419560,\t-0.671275256650753160,\t-0.671238195403898620,\t-0.671201132478948640,\t-0.671164067875995140,\t-0.671127001595132170,\t-0.671089933636451640,\t-0.671052864000046380,\t\n-0.671015792686008860,\t-0.670978719694431900,\t-0.670941645025408100,\t-0.670904568679030140,\t-0.670867490655390860,\t-0.670830410954582180,\t-0.670793329576698130,\t-0.670756246521830750,\t\n-0.670719161790072740,\t-0.670682075381516810,\t-0.670644987296255660,\t-0.670607897534381440,\t-0.670570806095988180,\t-0.670533712981167820,\t-0.670496618190013270,\t-0.670459521722617140,\t\n-0.670422423579072110,\t-0.670385323759471130,\t-0.670348222263906780,\t-0.670311119092471990,\t-0.670274014245258560,\t-0.670236907722360890,\t-0.670199799523870880,\t-0.670162689649881460,\t\n-0.670125578100485230,\t-0.670088464875775110,\t-0.670051349975843810,\t-0.670014233400783480,\t-0.669977115150688140,\t-0.669939995225650180,\t-0.669902873625762060,\t-0.669865750351116840,\t\n-0.669828625401807320,\t-0.669791498777926100,\t-0.669754370479566210,\t-0.669717240506819690,\t-0.669680108859780800,\t-0.669642975538541570,\t-0.669605840543194940,\t-0.669568703873833710,\t\n-0.669531565530550710,\t-0.669494425513438740,\t-0.669457283822590070,\t-0.669420140458098940,\t-0.669382995420057410,\t-0.669345848708558290,\t-0.669308700323694720,\t-0.669271550265559290,\t\n-0.669234398534245050,\t-0.669197245129844690,\t-0.669160090052450700,\t-0.669122933302157110,\t-0.669085774879056070,\t-0.669048614783240740,\t-0.669011453014803800,\t-0.668974289573838200,\t\n-0.668937124460436960,\t-0.668899957674692240,\t-0.668862789216698280,\t-0.668825619086547360,\t-0.668788447284332290,\t-0.668751273810146210,\t-0.668714098664081820,\t-0.668676921846232290,\t\n-0.668639743356690520,\t-0.668602563195549230,\t-0.668565381362901000,\t-0.668528197858839990,\t-0.668491012683458340,\t-0.668453825836849310,\t-0.668416637319105610,\t-0.668379447130320380,\t\n-0.668342255270585770,\t-0.668305061739996380,\t-0.668267866538644120,\t-0.668230669666622370,\t-0.668193471124023830,\t-0.668156270910941650,\t-0.668119069027468760,\t-0.668081865473698300,\t\n-0.668044660249723090,\t-0.668007453355635490,\t-0.667970244791530110,\t-0.667933034557498970,\t-0.667895822653635340,\t-0.667858609080032140,\t-0.667821393836782300,\t-0.667784176923979070,\t\n-0.667746958341714820,\t-0.667709738090083720,\t-0.667672516169178330,\t-0.667635292579091600,\t-0.667598067319916670,\t-0.667560840391746570,\t-0.667523611794674340,\t-0.667486381528793030,\t\n-0.667449149594195210,\t-0.667411915990975160,\t-0.667374680719225340,\t-0.667337443779038700,\t-0.667300205170508590,\t-0.667262964893727940,\t-0.667225722948789790,\t-0.667188479335786730,\t\n-0.667151234054813140,\t-0.667113987105961480,\t-0.667076738489324810,\t-0.667039488204996370,\t-0.667002236253069090,\t-0.666964982633636350,\t-0.666927727346791070,\t-0.666890470392625830,\t\n-0.666853211771235130,\t-0.666815951482711330,\t-0.666778689527147690,\t-0.666741425904637250,\t-0.666704160615273270,\t-0.666666893659149000,\t-0.666629625036356700,\t-0.666592354746991080,\t\n-0.666555082791144500,\t-0.666517809168910350,\t-0.666480533880381530,\t-0.666443256925651430,\t-0.666405978304813180,\t-0.666368698017960060,\t-0.666331416065185090,\t-0.666294132446580980,\t\n-0.666256847162242210,\t-0.666219560212261250,\t-0.666182271596731490,\t-0.666144981315745950,\t-0.666107689369398010,\t-0.666070395757780150,\t-0.666033100480986960,\t-0.665995803539111140,\t\n-0.665958504932245620,\t-0.665921204660483990,\t-0.665883902723919290,\t-0.665846599122644880,\t-0.665809293856753910,\t-0.665771986926339760,\t-0.665734678331494910,\t-0.665697368072314060,\t\n-0.665660056148889790,\t-0.665622742561315480,\t-0.665585427309684170,\t-0.665548110394089340,\t-0.665510791814624250,\t-0.665473471571381480,\t-0.665436149664455740,\t-0.665398826093939630,\t\n-0.665361500859926400,\t-0.665324173962509420,\t-0.665286845401782070,\t-0.665249515177837590,\t-0.665212183290769250,\t-0.665174849740669870,\t-0.665137514527634030,\t-0.665100177651754330,\t\n-0.665062839113124250,\t-0.665025498911837040,\t-0.664988157047986080,\t-0.664950813521664740,\t-0.664913468332965720,\t-0.664876121481983720,\t-0.664838772968811330,\t-0.664801422793542150,\t\n-0.664764070956269220,\t-0.664726717457086220,\t-0.664689362296086440,\t-0.664652005473363230,\t-0.664614646989009410,\t-0.664577286843119560,\t-0.664539925035786520,\t-0.664502561567103630,\t\n-0.664465196437164400,\t-0.664427829646062060,\t-0.664390461193890220,\t-0.664353091080741590,\t-0.664315719306710850,\t-0.664278345871890830,\t-0.664240970776375010,\t-0.664203594020256750,\t\n-0.664166215603629430,\t-0.664128835526586640,\t-0.664091453789221630,\t-0.664054070391628120,\t-0.664016685333898790,\t-0.663979298616128370,\t-0.663941910238409650,\t-0.663904520200836230,\t\n-0.663867128503501380,\t-0.663829735146498790,\t-0.663792340129921280,\t-0.663754943453863430,\t-0.663717545118418410,\t-0.663680145123679340,\t-0.663642743469740060,\t-0.663605340156693810,\t\n-0.663567935184634310,\t-0.663530528553654910,\t-0.663493120263849210,\t-0.663455710315309920,\t-0.663418298708132180,\t-0.663380885442408590,\t-0.663343470518232840,\t-0.663306053935698410,\t\n-0.663268635694898910,\t-0.663231215795927700,\t-0.663193794238877920,\t-0.663156371023844170,\t-0.663118946150919600,\t-0.663081519620197680,\t-0.663044091431771900,\t-0.663006661585735850,\t\n-0.662969230082183230,\t-0.662931796921207520,\t-0.662894362102901650,\t-0.662856925627360540,\t-0.662819487494677120,\t-0.662782047704944980,\t-0.662744606258257600,\t-0.662707163154708900,\t\n-0.662669718394392150,\t-0.662632271977400490,\t-0.662594823903828840,\t-0.662557374173770140,\t-0.662519922787317970,\t-0.662482469744565930,\t-0.662445015045607820,\t-0.662407558690537130,\t\n-0.662370100679447570,\t-0.662332641012432060,\t-0.662295179689585620,\t-0.662257716711001310,\t-0.662220252076772600,\t-0.662182785786993300,\t-0.662145317841757010,\t-0.662107848241157430,\t\n-0.662070376985287590,\t-0.662032904074242530,\t-0.661995429508115070,\t-0.661957953286999130,\t-0.661920475410988310,\t-0.661882995880176290,\t-0.661845514694656800,\t-0.661808031854523530,\t\n-0.661770547359870060,\t-0.661733061210789670,\t-0.661695573407377280,\t-0.661658083949725920,\t-0.661620592837929400,\t-0.661583100072081320,\t-0.661545605652275600,\t-0.661508109578605170,\t\n-0.661470611851165070,\t-0.661433112470048550,\t-0.661395611435349080,\t-0.661358108747160720,\t-0.661320604405577050,\t-0.661283098410691880,\t-0.661245590762598920,\t-0.661208081461391980,\t\n-0.661170570507164210,\t-0.661133057900010760,\t-0.661095543640024540,\t-0.661058027727299490,\t-0.661020510161929420,\t-0.660982990944008030,\t-0.660945470073629140,\t-0.660907947550885890,\t\n-0.660870423375873540,\t-0.660832897548685020,\t-0.660795370069414360,\t-0.660757840938155260,\t-0.660720310155001430,\t-0.660682777720047020,\t-0.660645243633385500,\t-0.660607707895110360,\t\n-0.660570170505316520,\t-0.660532631464097240,\t-0.660495090771546330,\t-0.660457548427757830,\t-0.660420004432825450,\t-0.660382458786842990,\t-0.660344911489903710,\t-0.660307362542102870,\t\n-0.660269811943533510,\t-0.660232259694289780,\t-0.660194705794465260,\t-0.660157150244154110,\t-0.660119593043450030,\t-0.660082034192446930,\t-0.660044473691238090,\t-0.660006911539918750,\t\n-0.659969347738582180,\t-0.659931782287322190,\t-0.659894215186232700,\t-0.659856646435407760,\t-0.659819076034941170,\t-0.659781503984926190,\t-0.659743930285458080,\t-0.659706354936630210,\t\n-0.659668777938536510,\t-0.659631199291270790,\t-0.659593618994927080,\t-0.659556037049599310,\t-0.659518453455381510,\t-0.659480868212367510,\t-0.659443281320650660,\t-0.659405692780326350,\t\n-0.659368102591487810,\t-0.659330510754228990,\t-0.659292917268643810,\t-0.659255322134826400,\t-0.659217725352870040,\t-0.659180126922870090,\t-0.659142526844919700,\t-0.659104925119113010,\t\n-0.659067321745544050,\t-0.659029716724306770,\t-0.658992110055495180,\t-0.658954501739203340,\t-0.658916891775525260,\t-0.658879280164554330,\t-0.658841666906385790,\t-0.658804052001113140,\t\n-0.658766435448830290,\t-0.658728817249631390,\t-0.658691197403610370,\t-0.658653575910861490,\t-0.658615952771477890,\t-0.658578327985555160,\t-0.658540701553186560,\t-0.658503073474466240,\t\n-0.658465443749488230,\t-0.658427812378346580,\t-0.658390179361135420,\t-0.658352544697948790,\t-0.658314908388880180,\t-0.658277270434024950,\t-0.658239630833476470,\t-0.658201989587329010,\t\n-0.658164346695676580,\t-0.658126702158613240,\t-0.658089055976233130,\t-0.658051408148629720,\t-0.658013758675898510,\t-0.657976107558132850,\t-0.657938454795426900,\t-0.657900800387874910,\t\n-0.657863144335570800,\t-0.657825486638608960,\t-0.657787827297083290,\t-0.657750166311087400,\t-0.657712503680716880,\t-0.657674839406064970,\t-0.657637173487225950,\t-0.657599505924294060,\t\n-0.657561836717363460,\t-0.657524165866528180,\t-0.657486493371881810,\t-0.657448819233519940,\t-0.657411143451535950,\t-0.657373466026024200,\t-0.657335786957078730,\t-0.657298106244793790,\t\n-0.657260423889263530,\t-0.657222739890582330,\t-0.657185054248844210,\t-0.657147366964142780,\t-0.657109678036573610,\t-0.657071987466230190,\t-0.657034295253206890,\t-0.656996601397597860,\t\n-0.656958905899497240,\t-0.656921208758998730,\t-0.656883509976197820,\t-0.656845809551188210,\t-0.656808107484064040,\t-0.656770403774919690,\t-0.656732698423849180,\t-0.656694991430947010,\t\n-0.656657282796307420,\t-0.656619572520024560,\t-0.656581860602192040,\t-0.656544147042905650,\t-0.656506431842258760,\t-0.656468715000345870,\t-0.656430996517261220,\t-0.656393276393099080,\t\n-0.656355554627953030,\t-0.656317831221918780,\t-0.656280106175089920,\t-0.656242379487560920,\t-0.656204651159425830,\t-0.656166921190779130,\t-0.656129189581715180,\t-0.656091456332328240,\t\n-0.656053721442712680,\t-0.656015984912962090,\t-0.655978246743172290,\t-0.655940506933436750,\t-0.655902765483850070,\t-0.655865022394506390,\t-0.655827277665500200,\t-0.655789531296925850,\t\n-0.655751783288876950,\t-0.655714033641449310,\t-0.655676282354736520,\t-0.655638529428833050,\t-0.655600774863833280,\t-0.655563018659831460,\t-0.655525260816922200,\t-0.655487501335199840,\t\n-0.655449740214757990,\t-0.655411977455692460,\t-0.655374213058096950,\t-0.655336447022065950,\t-0.655298679347693810,\t-0.655260910035075030,\t-0.655223139084303850,\t-0.655185366495474320,\t\n-0.655147592268681910,\t-0.655109816404020550,\t-0.655072038901584720,\t-0.655034259761468670,\t-0.654996478983767120,\t-0.654958696568574310,\t-0.654920912515984720,\t-0.654883126826092840,\t\n-0.654845339498992480,\t-0.654807550534779460,\t-0.654769759933547580,\t-0.654731967695391330,\t-0.654694173820405180,\t-0.654656378308683510,\t-0.654618581160320230,\t-0.654580782375411170,\t\n-0.654542981954050250,\t-0.654505179896331720,\t-0.654467376202350400,\t-0.654429570872200550,\t-0.654391763905976750,\t-0.654353955303773600,\t-0.654316145065685580,\t-0.654278333191806390,\t\n-0.654240519682232180,\t-0.654202704537056650,\t-0.654164887756374270,\t-0.654127069340279750,\t-0.654089249288867580,\t-0.654051427602231560,\t-0.654013604280467620,\t-0.653975779323669790,\t\n-0.653937952731932450,\t-0.653900124505350180,\t-0.653862294644017570,\t-0.653824463148029330,\t-0.653786630017479830,\t-0.653748795252463880,\t-0.653710958853075170,\t-0.653673120819409760,\t\n-0.653635281151561550,\t-0.653597439849625150,\t-0.653559596913695140,\t-0.653521752343866110,\t-0.653483906140232770,\t-0.653446058302888930,\t-0.653408208831930630,\t-0.653370357727451890,\t\n-0.653332504989547090,\t-0.653294650618311160,\t-0.653256794613838570,\t-0.653218936976224020,\t-0.653181077705562110,\t-0.653143216801946870,\t-0.653105354265474110,\t-0.653067490096238100,\t\n-0.653029624294333310,\t-0.652991756859854560,\t-0.652953887792896310,\t-0.652916017093553290,\t-0.652878144761919630,\t-0.652840270798091370,\t-0.652802395202162320,\t-0.652764517974227300,\t\n-0.652726639114381000,\t-0.652688758622718130,\t-0.652650876499333290,\t-0.652612992744321390,\t-0.652575107357776910,\t-0.652537220339794000,\t-0.652499331690468700,\t-0.652461441409895040,\t\n-0.652423549498167830,\t-0.652385655955381780,\t-0.652347760781631480,\t-0.652309863977011180,\t-0.652271965541616930,\t-0.652234065475542750,\t-0.652196163778883340,\t-0.652158260451733530,\t\n-0.652120355494188120,\t-0.652082448906341820,\t-0.652044540688289320,\t-0.652006630840125560,\t-0.651968719361944560,\t-0.651930806253842370,\t-0.651892891515913230,\t-0.651854975148251750,\t\n-0.651817057150952950,\t-0.651779137524111430,\t-0.651741216267821440,\t-0.651703293382179030,\t-0.651665368867278440,\t-0.651627442723214380,\t-0.651589514950081770,\t-0.651551585547975320,\t\n-0.651513654516989950,\t-0.651475721857220470,\t-0.651437787568761580,\t-0.651399851651707660,\t-0.651361914106154740,\t-0.651323974932197070,\t-0.651286034129929360,\t-0.651248091699446640,\t\n-0.651210147640843730,\t-0.651172201954215320,\t-0.651134254639655910,\t-0.651096305697261400,\t-0.651058355127126180,\t-0.651020402929345040,\t-0.650982449104012930,\t-0.650944493651224640,\t\n-0.650906536571075220,\t-0.650868577863659370,\t-0.650830617529071450,\t-0.650792655567407620,\t-0.650754691978762120,\t-0.650716726763230000,\t-0.650678759920905960,\t-0.650640791451885030,\t\n-0.650602821356262240,\t-0.650564849634131640,\t-0.650526876285589580,\t-0.650488901310730340,\t-0.650450924709648830,\t-0.650412946482439970,\t-0.650374966629198800,\t-0.650336985150020250,\t\n-0.650299002044999240,\t-0.650261017314230030,\t-0.650223030957808870,\t-0.650185042975830240,\t-0.650147053368388850,\t-0.650109062135579950,\t-0.650071069277498470,\t-0.650033074794239220,\t\n-0.649995078685896570,\t-0.649957080952566990,\t-0.649919081594344640,\t-0.649881080611324550,\t-0.649843078003601860,\t-0.649805073771271390,\t-0.649767067914428290,\t-0.649729060433167470,\t\n-0.649691051327584090,\t-0.649653040597772400,\t-0.649615028243828660,\t-0.649577014265847460,\t-0.649538998663923730,\t-0.649500981438152380,\t-0.649462962588628680,\t-0.649424942115446880,\t\n-0.649386920018703460,\t-0.649348896298492680,\t-0.649310870954909580,\t-0.649272843988049410,\t-0.649234815398007200,\t-0.649196785184877780,\t-0.649158753348756500,\t-0.649120719889738300,\t\n-0.649082684807917640,\t-0.649044648103390910,\t-0.649006609776252570,\t-0.648968569826597790,\t-0.648930528254521470,\t-0.648892485060118980,\t-0.648854440243485150,\t-0.648816393804714560,\t\n-0.648778345743903690,\t-0.648740296061146910,\t-0.648702244756539370,\t-0.648664191830176320,\t-0.648626137282152790,\t-0.648588081112563830,\t-0.648550023321504690,\t-0.648511963909069840,\t\n-0.648473902875355780,\t-0.648435840220456860,\t-0.648397775944468460,\t-0.648359710047485600,\t-0.648321642529603450,\t-0.648283573390917130,\t-0.648245502631521250,\t-0.648207430251512280,\t\n-0.648169356250984710,\t-0.648131280630033780,\t-0.648093203388754760,\t-0.648055124527242570,\t-0.648017044045592570,\t-0.647978961943900030,\t-0.647940878222259430,\t-0.647902792880767240,\t\n-0.647864705919518170,\t-0.647826617338607250,\t-0.647788527138129840,\t-0.647750435318180990,\t-0.647712341878856180,\t-0.647674246820249770,\t-0.647636150142458460,\t-0.647598051845576840,\t\n-0.647559951929699950,\t-0.647521850394923270,\t-0.647483747241341940,\t-0.647445642469051230,\t-0.647407536078146490,\t-0.647369428068722770,\t-0.647331318440874880,\t-0.647293207194699400,\t\n-0.647255094330290830,\t-0.647216979847744620,\t-0.647178863747155940,\t-0.647140746028620040,\t-0.647102626692231620,\t-0.647064505738087270,\t-0.647026383166281800,\t-0.646988258976910260,\t\n-0.646950133170068110,\t-0.646912005745850620,\t-0.646873876704353030,\t-0.646835746045670850,\t-0.646797613769899300,\t-0.646759479877133000,\t-0.646721344367468640,\t-0.646683207241001030,\t\n-0.646645068497825330,\t-0.646606928138037000,\t-0.646568786161731300,\t-0.646530642569003610,\t-0.646492497359948740,\t-0.646454350534663270,\t-0.646416202093241910,\t-0.646378052035780030,\t\n-0.646339900362372990,\t-0.646301747073116270,\t-0.646263592168105140,\t-0.646225435647435060,\t-0.646187277511200640,\t-0.646149117759498790,\t-0.646110956392424110,\t-0.646072793410072070,\t\n-0.646034628812538040,\t-0.645996462599917390,\t-0.645958294772305600,\t-0.645920125329797370,\t-0.645881954272489620,\t-0.645843781600476840,\t-0.645805607313854720,\t-0.645767431412718530,\t\n-0.645729253897163740,\t-0.645691074767285930,\t-0.645652894023180270,\t-0.645614711664941780,\t-0.645576527692667160,\t-0.645538342106451330,\t-0.645500154906389570,\t-0.645461966092577330,\t\n-0.645423775665110330,\t-0.645385583624083830,\t-0.645347389969592620,\t-0.645309194701733650,\t-0.645270997820601710,\t-0.645232799326292290,\t-0.645194599218900880,\t-0.645156397498523050,\t\n-0.645118194165254070,\t-0.645079989219189630,\t-0.645041782660425330,\t-0.645003574489055760,\t-0.644965364705178070,\t-0.644927153308886840,\t-0.644888940300277770,\t-0.644850725679446460,\t\n-0.644812509446488160,\t-0.644774291601498020,\t-0.644736072144572740,\t-0.644697851075807350,\t-0.644659628395297330,\t-0.644621404103138280,\t-0.644583178199425680,\t-0.644544950684255100,\t\n-0.644506721557722150,\t-0.644468490819922410,\t-0.644430258470950810,\t-0.644392024510904160,\t-0.644353788939877490,\t-0.644315551757966400,\t-0.644277312965266360,\t-0.644239072561873070,\t\n-0.644200830547882020,\t-0.644162586923388350,\t-0.644124341688488760,\t-0.644086094843278390,\t-0.644047846387852730,\t-0.644009596322307590,\t-0.643971344646738330,\t-0.643933091361240770,\t\n-0.643894836465910390,\t-0.643856579960842330,\t-0.643818321846133520,\t-0.643780062121878880,\t-0.643741800788174000,\t-0.643703537845114690,\t-0.643665273292796550,\t-0.643627007131315270,\t\n-0.643588739360765660,\t-0.643550469981244990,\t-0.643512198992848060,\t-0.643473926395670690,\t-0.643435652189808470,\t-0.643397376375357210,\t-0.643359098952412390,\t-0.643320819921069930,\t\n-0.643282539281424650,\t-0.643244257033573800,\t-0.643205973177612190,\t-0.643167687713635750,\t-0.643129400641740070,\t-0.643091111962020840,\t-0.643052821674573780,\t-0.643014529779494140,\t\n-0.642976236276878720,\t-0.642937941166822790,\t-0.642899644449421940,\t-0.642861346124772080,\t-0.642823046192968820,\t-0.642784744654107840,\t-0.642746441508285080,\t-0.642708136755596240,\t\n-0.642669830396136450,\t-0.642631522430002660,\t-0.642593212857289990,\t-0.642554901678094370,\t-0.642516588892511510,\t-0.642478274500637210,\t-0.642439958502566520,\t-0.642401640898396580,\t\n-0.642363321688222520,\t-0.642325000872140170,\t-0.642286678450245450,\t-0.642248354422633840,\t-0.642210028789401480,\t-0.642171701550643960,\t-0.642133372706457210,\t-0.642095042256936370,\t\n-0.642056710202178580,\t-0.642018376542279110,\t-0.641980041277333550,\t-0.641941704407437920,\t-0.641903365932688150,\t-0.641865025853179840,\t-0.641826684169008340,\t-0.641788340880270810,\t\n-0.641749995987062390,\t-0.641711649489479010,\t-0.641673301387616470,\t-0.641634951681570700,\t-0.641596600371437620,\t-0.641558247457312940,\t-0.641519892939292010,\t-0.641481536817472000,\t\n-0.641443179091948150,\t-0.641404819762816380,\t-0.641366458830172630,\t-0.641328096294112580,\t-0.641289732154732390,\t-0.641251366412127210,\t-0.641212999066394170,\t-0.641174630117628760,\t\n-0.641136259565926680,\t-0.641097887411384070,\t-0.641059513654096640,\t-0.641021138294160410,\t-0.640982761331671420,\t-0.640944382766724830,\t-0.640906002599417880,\t-0.640867620829846050,\t\n-0.640829237458105050,\t-0.640790852484291020,\t-0.640752465908499880,\t-0.640714077730827560,\t-0.640675687951369310,\t-0.640637296570222610,\t-0.640598903587482620,\t-0.640560509003245350,\t\n-0.640522112817606850,\t-0.640483715030663040,\t-0.640445315642509950,\t-0.640406914653243510,\t-0.640368512062959860,\t-0.640330107871754260,\t-0.640291702079724080,\t-0.640253294686964570,\t\n-0.640214885693571880,\t-0.640176475099641930,\t-0.640138062905270870,\t-0.640099649110553950,\t-0.640061233715588540,\t-0.640022816720470010,\t-0.639984398125294510,\t-0.639945977930157950,\t\n-0.639907556135156600,\t-0.639869132740386260,\t-0.639830707745943080,\t-0.639792281151923100,\t-0.639753852958421800,\t-0.639715423165536530,\t-0.639676991773362680,\t-0.639638558781996380,\t\n-0.639600124191533670,\t-0.639561688002070580,\t-0.639523250213703380,\t-0.639484810826527310,\t-0.639446369840639960,\t-0.639407927256136600,\t-0.639369483073113480,\t-0.639331037291666630,\t\n-0.639292589911892200,\t-0.639254140933886330,\t-0.639215690357745060,\t-0.639177238183563870,\t-0.639138784411440340,\t-0.639100329041469740,\t-0.639061872073748430,\t-0.639023413508372330,\t\n-0.638984953345437810,\t-0.638946491585040800,\t-0.638908028227276990,\t-0.638869563272243650,\t-0.638831096720036570,\t-0.638792628570751590,\t-0.638754158824485160,\t-0.638715687481333230,\t\n-0.638677214541392150,\t-0.638638740004758070,\t-0.638600263871526350,\t-0.638561786141794710,\t-0.638523306815658610,\t-0.638484825893214200,\t-0.638446343374557860,\t-0.638407859259785490,\t\n-0.638369373548993590,\t-0.638330886242277520,\t-0.638292397339734970,\t-0.638253906841461330,\t-0.638215414747552940,\t-0.638176921058106080,\t-0.638138425773216890,\t-0.638099928892981620,\t\n-0.638061430417496630,\t-0.638022930346857970,\t-0.637984428681161340,\t-0.637945925420504210,\t-0.637907420564982400,\t-0.637868914114691930,\t-0.637830406069729290,\t-0.637791896430190520,\t\n-0.637753385196171420,\t-0.637714872367769470,\t-0.637676357945080370,\t-0.637637841928200390,\t-0.637599324317225770,\t-0.637560805112252880,\t-0.637522284313377980,\t-0.637483761920697330,\t\n-0.637445237934307300,\t-0.637406712354303570,\t-0.637368185180783640,\t-0.637329656413843200,\t-0.637291126053578740,\t-0.637252594100086390,\t-0.637214060553462640,\t-0.637175525413803620,\t\n-0.637136988681205160,\t-0.637098450355764960,\t-0.637059910437578590,\t-0.637021368926742440,\t-0.636982825823352860,\t-0.636944281127506230,\t-0.636905734839298910,\t-0.636867186958827160,\t\n-0.636828637486186900,\t-0.636790086421475610,\t-0.636751533764789210,\t-0.636712979516223960,\t-0.636674423675876230,\t-0.636635866243842390,\t-0.636597307220218900,\t-0.636558746605101480,\t\n-0.636520184398587930,\t-0.636481620600773850,\t-0.636443055211755810,\t-0.636404488231630090,\t-0.636365919660493050,\t-0.636327349498441390,\t-0.636288777745571240,\t-0.636250204401978440,\t\n-0.636211629467760890,\t-0.636173052943014180,\t-0.636134474827834920,\t-0.636095895122319450,\t-0.636057313826564160,\t-0.636018730940665740,\t-0.635980146464719680,\t-0.635941560398823990,\t\n-0.635902972743074390,\t-0.635864383497567350,\t-0.635825792662399360,\t-0.635787200237666880,\t-0.635748606223466520,\t-0.635710010619894520,\t-0.635671413427047470,\t-0.635632814645021300,\t\n-0.635594214273913720,\t-0.635555612313820630,\t-0.635517008764838410,\t-0.635478403627063760,\t-0.635439796900593050,\t-0.635401188585522190,\t-0.635362578681949120,\t-0.635323967189969530,\t\n-0.635285354109680010,\t-0.635246739441177160,\t-0.635208123184557440,\t-0.635169505339917340,\t-0.635130885907353560,\t-0.635092264886962580,\t-0.635053642278840200,\t-0.635015018083084360,\t\n-0.634976392299791080,\t-0.634937764929056740,\t-0.634899135970978020,\t-0.634860505425651530,\t-0.634821873293172970,\t-0.634783239573640470,\t-0.634744604267149850,\t-0.634705967373797700,\t\n-0.634667328893680720,\t-0.634628688826895380,\t-0.634590047173538290,\t-0.634551403933706020,\t-0.634512759107495380,\t-0.634474112695002090,\t-0.634435464696324170,\t-0.634396815111557650,\t\n-0.634358163940799020,\t-0.634319511184145090,\t-0.634280856841692330,\t-0.634242200913537340,\t-0.634203543399776250,\t-0.634164884300506990,\t-0.634126223615825490,\t-0.634087561345828440,\t\n-0.634048897490612550,\t-0.634010232050274290,\t-0.633971565024910590,\t-0.633932896414617920,\t-0.633894226219492320,\t-0.633855554439631820,\t-0.633816881075132450,\t-0.633778206126090820,\t\n-0.633739529592603820,\t-0.633700851474767850,\t-0.633662171772679810,\t-0.633623490486435630,\t-0.633584807616133450,\t-0.633546123161869310,\t-0.633507437123739690,\t-0.633468749501841620,\t\n-0.633430060296271690,\t-0.633391369507126490,\t-0.633352677134502940,\t-0.633313983178497630,\t-0.633275287639206820,\t-0.633236590516728310,\t-0.633197891811158490,\t-0.633159191522593810,\t\n-0.633120489651131210,\t-0.633081786196867390,\t-0.633043081159898380,\t-0.633004374540322320,\t-0.632965666338235370,\t-0.632926956553734320,\t-0.632888245186915780,\t-0.632849532237876660,\t\n-0.632810817706713770,\t-0.632772101593523820,\t-0.632733383898403500,\t-0.632694664621449190,\t-0.632655943762758800,\t-0.632617221322428590,\t-0.632578497300555260,\t-0.632539771697235740,\t\n-0.632501044512566830,\t-0.632462315746644580,\t-0.632423585399567220,\t-0.632384853471430920,\t-0.632346119962332480,\t-0.632307384872368820,\t-0.632268648201636530,\t-0.632229909950232760,\t\n-0.632191170118254100,\t-0.632152428705797580,\t-0.632113685712959340,\t-0.632074941139837530,\t-0.632036194986528410,\t-0.631997447253128670,\t-0.631958697939735470,\t-0.631919947046445500,\t\n-0.631881194573355560,\t-0.631842440520562040,\t-0.631803684888163080,\t-0.631764927676254920,\t-0.631726168884934380,\t-0.631687408514298500,\t-0.631648646564444080,\t-0.631609883035467940,\t\n-0.631571117927467230,\t-0.631532351240537970,\t-0.631493582974778530,\t-0.631454813130285180,\t-0.631416041707154710,\t-0.631377268705484270,\t-0.631338494125370580,\t-0.631299717966910650,\t\n-0.631260940230200740,\t-0.631222160915339110,\t-0.631183380022422140,\t-0.631144597551546730,\t-0.631105813502809810,\t-0.631067027876308310,\t-0.631028240672139250,\t-0.630989451890399680,\t\n-0.630950661531186400,\t-0.630911869594595780,\t-0.630873076080726180,\t-0.630834280989673980,\t-0.630795484321535980,\t-0.630756686076409330,\t-0.630717886254390960,\t-0.630679084855577110,\t\n-0.630640281880066270,\t-0.630601477327954680,\t-0.630562671199339510,\t-0.630523863494317660,\t-0.630485054212986060,\t-0.630446243355441860,\t-0.630407430921782090,\t-0.630368616912103660,\t\n-0.630329801326503070,\t-0.630290984165078670,\t-0.630252165427926720,\t-0.630213345115144490,\t-0.630174523226828760,\t-0.630135699763076820,\t-0.630096874723984900,\t-0.630058048109651490,\t\n-0.630019219920172960,\t-0.629980390155646440,\t-0.629941558816168870,\t-0.629902725901837380,\t-0.629863891412749120,\t-0.629825055349001130,\t-0.629786217710690540,\t-0.629747378497913730,\t\n-0.629708537710769070,\t-0.629669695349353130,\t-0.629630851413762960,\t-0.629592005904095590,\t-0.629553158820448270,\t-0.629514310162918030,\t-0.629475459931601260,\t-0.629436608126596630,\t\n-0.629397754748000420,\t-0.629358899795909870,\t-0.629320043270422010,\t-0.629281185171634120,\t-0.629242325499643210,\t-0.629203464254546540,\t-0.629164601436440480,\t-0.629125737045423630,\t\n-0.629086871081592450,\t-0.629048003545044090,\t-0.629009134435875690,\t-0.628970263754184410,\t-0.628931391500067490,\t-0.628892517673621420,\t-0.628853642274944780,\t-0.628814765304134050,\t\n-0.628775886761286370,\t-0.628737006646499010,\t-0.628698124959869100,\t-0.628659241701493790,\t-0.628620356871470550,\t-0.628581470469896320,\t-0.628542582496867670,\t-0.628503692952483320,\t\n-0.628464801836839730,\t-0.628425909150034160,\t-0.628387014892163860,\t-0.628348119063325880,\t-0.628309221663617020,\t-0.628270322693135760,\t-0.628231422151978690,\t-0.628192520040243170,\t\n-0.628153616358026250,\t-0.628114711105425270,\t-0.628075804282537510,\t-0.628036895889460320,\t-0.627997985926290860,\t-0.627959074393125700,\t-0.627920161290063560,\t-0.627881246617201020,\t\n-0.627842330374635330,\t-0.627803412562463970,\t-0.627764493180783870,\t-0.627725572229691940,\t-0.627686649709286780,\t-0.627647725619664980,\t-0.627608799960923890,\t-0.627569872733160780,\t\n-0.627530943936473020,\t-0.627492013570957850,\t-0.627453081636712760,\t-0.627414148133834780,\t-0.627375213062420830,\t-0.627336276422569620,\t-0.627297338214377610,\t-0.627258398437942290,\t\n-0.627219457093361020,\t-0.627180514180731060,\t-0.627141569700149780,\t-0.627102623651713880,\t-0.627063676035522160,\t-0.627024726851671320,\t-0.626985776100258520,\t-0.626946823781381330,\t\n-0.626907869895137140,\t-0.626868914441623290,\t-0.626829957420937060,\t-0.626790998833175240,\t-0.626752038678436650,\t-0.626713076956817990,\t-0.626674113668416630,\t-0.626635148813330050,\t\n-0.626596182391655490,\t-0.626557214403490550,\t-0.626518244848931820,\t-0.626479273728078100,\t-0.626440301041026330,\t-0.626401326787873750,\t-0.626362350968717950,\t-0.626323373583656200,\t\n-0.626284394632785960,\t-0.626245414116204820,\t-0.626206432034009390,\t-0.626167448386298560,\t-0.626128463173169170,\t-0.626089476394718570,\t-0.626050488051044350,\t-0.626011498142243770,\t\n-0.625972506668414640,\t-0.625933513629653440,\t-0.625894519026059190,\t-0.625855522857728610,\t-0.625816525124759160,\t-0.625777525827248440,\t-0.625738524965294030,\t-0.625699522538993190,\t\n-0.625660518548443510,\t-0.625621512993742580,\t-0.625582505874987200,\t-0.625543497192276200,\t-0.625504486945706590,\t-0.625465475135375650,\t-0.625426461761380950,\t-0.625387446823820190,\t\n-0.625348430322790190,\t-0.625309412258389650,\t-0.625270392630715710,\t-0.625231371439865740,\t-0.625192348685937320,\t-0.625153324369028040,\t-0.625114298489235500,\t-0.625075271046657170,\t\n-0.625036242041390630,\t-0.624997211473532820,\t-0.624958179343182650,\t-0.624919145650437050,\t-0.624880110395393600,\t-0.624841073578149890,\t-0.624802035198803510,\t-0.624762995257452050,\t\n-0.624723953754192320,\t-0.624684910689123460,\t-0.624645866062342290,\t-0.624606819873946510,\t-0.624567772124033580,\t-0.624528722812701330,\t-0.624489671940047230,\t-0.624450619506168980,\t\n-0.624411565511163390,\t-0.624372509955129720,\t-0.624333452838164660,\t-0.624294394160366030,\t-0.624255333921831410,\t-0.624216272122658400,\t-0.624177208762944800,\t-0.624138143842787430,\t\n-0.624099077362285430,\t-0.624060009321535710,\t-0.624020939720635990,\t-0.623981868559683850,\t-0.623942795838777100,\t-0.623903721558013320,\t-0.623864645717490340,\t-0.623825568317304960,\t\n-0.623786489357556320,\t-0.623747408838341570,\t-0.623708326759758180,\t-0.623669243121904080,\t-0.623630157924876750,\t-0.623591071168774100,\t-0.623551982853693070,\t-0.623512892979732780,\t\n-0.623473801546990280,\t-0.623434708555563270,\t-0.623395614005549440,\t-0.623356517897046600,\t-0.623317420230152570,\t-0.623278321004964830,\t-0.623239220221581400,\t-0.623200117880099100,\t\n-0.623161013980617300,\t-0.623121908523233010,\t-0.623082801508043850,\t-0.623043692935147720,\t-0.623004582804642330,\t-0.622965471116624810,\t-0.622926357871194320,\t-0.622887243068448000,\t\n-0.622848126708483440,\t-0.622809008791398670,\t-0.622769889317291270,\t-0.622730768286259280,\t-0.622691645698400300,\t-0.622652521553812230,\t-0.622613395852592120,\t-0.622574268594839220,\t\n-0.622535139780650670,\t-0.622496009410124280,\t-0.622456877483357870,\t-0.622417744000449250,\t-0.622378608961496220,\t-0.622339472366596040,\t-0.622300334215847850,\t-0.622261194509348800,\t\n-0.622222053247196820,\t-0.622182910429489700,\t-0.622143766056325260,\t-0.622104620127801430,\t-0.622065472644016020,\t-0.622026323605066270,\t-0.621987173011051440,\t-0.621948020862068570,\t\n-0.621908867158215810,\t-0.621869711899590730,\t-0.621830555086291480,\t-0.621791396718415770,\t-0.621752236796060840,\t-0.621713075319326070,\t-0.621673912288308710,\t-0.621634747703106450,\t\n-0.621595581563817330,\t-0.621556413870539280,\t-0.621517244623370100,\t-0.621478073822407940,\t-0.621438901467749830,\t-0.621399727559495240,\t-0.621360552097741210,\t-0.621321375082585890,\t\n-0.621282196514127080,\t-0.621243016392462820,\t-0.621203834717691030,\t-0.621164651489908960,\t-0.621125466709215980,\t-0.621086280375709230,\t-0.621047092489486860,\t-0.621007903050646680,\t\n-0.620968712059286830,\t-0.620929519515505120,\t-0.620890325419399700,\t-0.620851129771068490,\t-0.620811932570608630,\t-0.620772733818119700,\t-0.620733533513698980,\t-0.620694331657444360,\t\n-0.620655128249453900,\t-0.620615923289825620,\t-0.620576716778656890,\t-0.620537508716047070,\t-0.620498299102093420,\t-0.620459087936894080,\t-0.620419875220546980,\t-0.620380660953150250,\t\n-0.620341445134801830,\t-0.620302227765599850,\t-0.620263008845642230,\t-0.620223788375026340,\t-0.620184566353851770,\t-0.620145342782215780,\t-0.620106117660216390,\t-0.620066890987951760,\t\n-0.620027662765519790,\t-0.619988432993018760,\t-0.619949201670545900,\t-0.619909968798200820,\t-0.619870734376080760,\t-0.619831498404283860,\t-0.619792260882908290,\t-0.619753021812051940,\t\n-0.619713781191813080,\t-0.619674539022289860,\t-0.619635295303579530,\t-0.619596050035781550,\t-0.619556803218993650,\t-0.619517554853313610,\t-0.619478304938839710,\t-0.619439053475670080,\t\n-0.619399800463902750,\t-0.619360545903635210,\t-0.619321289794967030,\t-0.619282032137995710,\t-0.619242772932819260,\t-0.619203512179535840,\t-0.619164249878243700,\t-0.619124986029040870,\t\n-0.619085720632025600,\t-0.619046453687295270,\t-0.619007185194949570,\t-0.618967915155085980,\t-0.618928643567802530,\t-0.618889370433197470,\t-0.618850095751368960,\t-0.618810819522415230,\t\n-0.618771541746433780,\t-0.618732262423524080,\t-0.618692981553783830,\t-0.618653699137311160,\t-0.618614415174204120,\t-0.618575129664561070,\t-0.618535842608480270,\t-0.618496554006059850,\t\n-0.618457263857397970,\t-0.618417972162592310,\t-0.618378678921742360,\t-0.618339384134945710,\t-0.618300087802300610,\t-0.618260789923905320,\t-0.618221490499858080,\t-0.618182189530256390,\t\n-0.618142887015199930,\t-0.618103582954786180,\t-0.618064277349113620,\t-0.618024970198280290,\t-0.617985661502384430,\t-0.617946351261524530,\t-0.617907039475798730,\t-0.617867726145305380,\t\n-0.617828411270141990,\t-0.617789094850408230,\t-0.617749776886201700,\t-0.617710457377620760,\t-0.617671136324763780,\t-0.617631813727728800,\t-0.617592489586614390,\t-0.617553163901518040,\t\n-0.617513836672539450,\t-0.617474507899776310,\t-0.617435177583326890,\t-0.617395845723289540,\t-0.617356512319762520,\t-0.617317177372844190,\t-0.617277840882633040,\t-0.617238502849226540,\t\n-0.617199163272724500,\t-0.617159822153224510,\t-0.617120479490824940,\t-0.617081135285624250,\t-0.617041789537720600,\t-0.617002442247212570,\t-0.616963093414197750,\t-0.616923743038775840,\t\n-0.616884391121044650,\t-0.616845037661102440,\t-0.616805682659047560,\t-0.616766326114978610,\t-0.616726968028993740,\t-0.616687608401191520,\t-0.616648247231669560,\t-0.616608884520527640,\t\n-0.616569520267863490,\t-0.616530154473775680,\t-0.616490787138362360,\t-0.616451418261722120,\t-0.616412047843953310,\t-0.616372675885153650,\t-0.616333302385423050,\t-0.616293927344859220,\t\n-0.616254550763560500,\t-0.616215172641625510,\t-0.616175792979152480,\t-0.616136411776240010,\t-0.616097029032986470,\t-0.616057644749490430,\t-0.616018258925849490,\t-0.615978871562163690,\t\n-0.615939482658530710,\t-0.615900092215049040,\t-0.615860700231817050,\t-0.615821306708933310,\t-0.615781911646495650,\t-0.615742515044603980,\t-0.615703116903355880,\t-0.615663717222850070,\t\n-0.615624316003185010,\t-0.615584913244459080,\t-0.615545508946770850,\t-0.615506103110218920,\t-0.615466695734901760,\t-0.615427286820917070,\t-0.615387876368364890,\t-0.615348464377343030,\t\n-0.615309050847949960,\t-0.615269635780284370,\t-0.615230219174444650,\t-0.615190801030529370,\t-0.615151381348636340,\t-0.615111960128865600,\t-0.615072537371314950,\t-0.615033113076082990,\t\n-0.614993687243268190,\t-0.614954259872969260,\t-0.614914830965284540,\t-0.614875400520312860,\t-0.614835968538151920,\t-0.614796535018901860,\t-0.614757099962660370,\t-0.614717663369526160,\t\n-0.614678225239597700,\t-0.614638785572973800,\t-0.614599344369752940,\t-0.614559901630032930,\t-0.614520457353913920,\t-0.614481011541493700,\t-0.614441564192871100,\t-0.614402115308144480,\t\n-0.614362664887412540,\t-0.614323212930773970,\t-0.614283759438327470,\t-0.614244304410170750,\t-0.614204847846404060,\t-0.614165389747125090,\t-0.614125930112432770,\t-0.614086468942425690,\t\n-0.614047006237202320,\t-0.614007541996861470,\t-0.613968076221501070,\t-0.613928608911221140,\t-0.613889140066119720,\t-0.613849669686295510,\t-0.613810197771847090,\t-0.613770724322873160,\t\n-0.613731249339472430,\t-0.613691772821743480,\t-0.613652294769785220,\t-0.613612815183695480,\t-0.613573334063574390,\t-0.613533851409519990,\t-0.613494367221630980,\t-0.613454881500006040,\t\n-0.613415394244743890,\t-0.613375905455942560,\t-0.613336415133702070,\t-0.613296923278120690,\t-0.613257429889296880,\t-0.613217934967329570,\t-0.613178438512317460,\t-0.613138940524359130,\t\n-0.613099441003553510,\t-0.613059939949999410,\t-0.613020437363794630,\t-0.612980933245039440,\t-0.612941427593831970,\t-0.612901920410270920,\t-0.612862411694455100,\t-0.612822901446483210,\t\n-0.612783389666454070,\t-0.612743876354465700,\t-0.612704361510618360,\t-0.612664845135010180,\t-0.612625327227739880,\t-0.612585807788906260,\t-0.612546286818608120,\t-0.612506764316944170,\t\n-0.612467240284013450,\t-0.612427714719913860,\t-0.612388187624745670,\t-0.612348658998607020,\t-0.612309128841596720,\t-0.612269597153813680,\t-0.612230063935356620,\t-0.612190529186324330,\t\n-0.612150992906814960,\t-0.612111455096928990,\t-0.612071915756764230,\t-0.612032374886419820,\t-0.611992832485994340,\t-0.611953288555586840,\t-0.611913743095296110,\t-0.611874196105220980,\t\n-0.611834647585459690,\t-0.611795097536112500,\t-0.611755545957277660,\t-0.611715992849053760,\t-0.611676438211540050,\t-0.611636882044835130,\t-0.611597324349038020,\t-0.611557765124246980,\t\n-0.611518204370562150,\t-0.611478642088081780,\t-0.611439078276904910,\t-0.611399512937130240,\t-0.611359946068856910,\t-0.611320377672183610,\t-0.611280807747209390,\t-0.611241236294033150,\t\n-0.611201663312753160,\t-0.611162088803469670,\t-0.611122512766280930,\t-0.611082935201285980,\t-0.611043356108583740,\t-0.611003775488273000,\t-0.610964193340452160,\t-0.610924609665221550,\t\n-0.610885024462679340,\t-0.610845437732924660,\t-0.610805849476056320,\t-0.610766259692173350,\t-0.610726668381374790,\t-0.610687075543759560,\t-0.610647481179426690,\t-0.610607885288474320,\t\n-0.610568287871002920,\t-0.610528688927110870,\t-0.610489088456897090,\t-0.610449486460460490,\t-0.610409882937900330,\t-0.610370277889314640,\t-0.610330671314804010,\t-0.610291063214466690,\t\n-0.610251453588401720,\t-0.610211842436708120,\t-0.610172229759484930,\t-0.610132615556831180,\t-0.610092999828845790,\t-0.610053382575628020,\t-0.610013763797276010,\t-0.609974143493890340,\t\n-0.609934521665569270,\t-0.609894898312411950,\t-0.609855273434517400,\t-0.609815647031984540,\t-0.609776019104912640,\t-0.609736389653400050,\t-0.609696758677547130,\t-0.609657126177452270,\t\n-0.609617492153214700,\t-0.609577856604933350,\t-0.609538219532707370,\t-0.609498580936635780,\t-0.609458940816817840,\t-0.609419299173351690,\t-0.609379656006338140,\t-0.609340011315875340,\t\n-0.609300365102062650,\t-0.609260717364998980,\t-0.609221068104783490,\t-0.609181417321515320,\t-0.609141765015292940,\t-0.609102111186216820,\t-0.609062455834385450,\t-0.609022798959897970,\t\n-0.608983140562853410,\t-0.608943480643351130,\t-0.608903819201490060,\t-0.608864156237369450,\t-0.608824491751088440,\t-0.608784825742745510,\t-0.608745158212441240,\t-0.608705489160274000,\t\n-0.608665818586343050,\t-0.608626146490747640,\t-0.608586472873586800,\t-0.608546797734959120,\t-0.608507121074965070,\t-0.608467442893703250,\t-0.608427763191272900,\t-0.608388081967773050,\t\n-0.608348399223303080,\t-0.608308714957962020,\t-0.608269029171849220,\t-0.608229341865063830,\t-0.608189653037704450,\t-0.608149962689871540,\t-0.608110270821663800,\t-0.608070577433180270,\t\n-0.608030882524520420,\t-0.607991186095783290,\t-0.607951488147067560,\t-0.607911788678473730,\t-0.607872087690100480,\t-0.607832385182047070,\t-0.607792681154412650,\t-0.607752975607296460,\t\n-0.607713268540797880,\t-0.607673559955016150,\t-0.607633849850050530,\t-0.607594138225999500,\t-0.607554425082963870,\t-0.607514710421042210,\t-0.607474994240333800,\t-0.607435276540937870,\t\n-0.607395557322953690,\t-0.607355836586480620,\t-0.607316114331617360,\t-0.607276390558464390,\t-0.607236665267120610,\t-0.607196938457685080,\t-0.607157210130257140,\t-0.607117480284936170,\t\n-0.607077748921821650,\t-0.607038016041012600,\t-0.606998281642607940,\t-0.606958545726708150,\t-0.606918808293412050,\t-0.606879069342818990,\t-0.606839328875028230,\t-0.606799586890139130,\t\n-0.606759843388251060,\t-0.606720098369462610,\t-0.606680351833874700,\t-0.606640603781585910,\t-0.606600854212695610,\t-0.606561103127303160,\t-0.606521350525507930,\t-0.606481596407409280,\t\n-0.606441840773106810,\t-0.606402083622699540,\t-0.606362324956286500,\t-0.606322564773968290,\t-0.606282803075843700,\t-0.606243039862012110,\t-0.606203275132572880,\t-0.606163508887625490,\t\n-0.606123741127268520,\t-0.606083971851603010,\t-0.606044201060727540,\t-0.606004428754741590,\t-0.605964654933744630,\t-0.605924879597835920,\t-0.605885102747115050,\t-0.605845324381681480,\t\n-0.605805544501634490,\t-0.605765763107072970,\t-0.605725980198097760,\t-0.605686195774807650,\t-0.605646409837302000,\t-0.605606622385680300,\t-0.605566833420042140,\t-0.605527042940486090,\t\n-0.605487250947113200,\t-0.605447457440022150,\t-0.605407662419312540,\t-0.605367865885083620,\t-0.605328067837435090,\t-0.605288268276466420,\t-0.605248467202277100,\t-0.605208664614966580,\t\n-0.605168860514633700,\t-0.605129054901379470,\t-0.605089247775302490,\t-0.605049439136502440,\t-0.605009628985078710,\t-0.604969817321130980,\t-0.604930004144758730,\t-0.604890189456060660,\t\n-0.604850373255137910,\t-0.604810555542089180,\t-0.604770736317014060,\t-0.604730915580012130,\t-0.604691093331182870,\t-0.604651269570625980,\t-0.604611444298440830,\t-0.604571617514726430,\t\n-0.604531789219583620,\t-0.604491959413111400,\t-0.604452128095409160,\t-0.604412295266576690,\t-0.604372460926713480,\t-0.604332625075919120,\t-0.604292787714292510,\t-0.604252948841934590,\t\n-0.604213108458944380,\t-0.604173266565421360,\t-0.604133423161465120,\t-0.604093578247175360,\t-0.604053731822651650,\t-0.604013883887993600,\t-0.603974034443300110,\t-0.603934183488672340,\t\n-0.603894331024208970,\t-0.603854477050009940,\t-0.603814621566174600,\t-0.603774764572802770,\t-0.603734906069993920,\t-0.603695046057847180,\t-0.603655184536463500,\t-0.603615321505941880,\t\n-0.603575456966382040,\t-0.603535590917883450,\t-0.603495723360545910,\t-0.603455854294469020,\t-0.603415983719752580,\t-0.603376111636496180,\t-0.603336238044798740,\t-0.603296362944761410,\t\n-0.603256486336483210,\t-0.603216608220063730,\t-0.603176728595602780,\t-0.603136847463200070,\t-0.603096964822954380,\t-0.603057080674967110,\t-0.603017195019337040,\t-0.602977307856164100,\t\n-0.602937419185547770,\t-0.602897529007587970,\t-0.602857637322384400,\t-0.602817744130036640,\t-0.602777849430644610,\t-0.602737953224307120,\t-0.602698055511125540,\t-0.602658156291198790,\t\n-0.602618255564626670,\t-0.602578353331508890,\t-0.602538449591945250,\t-0.602498544346035560,\t-0.602458637593878630,\t-0.602418729335575940,\t-0.602378819571226410,\t-0.602338908300929840,\t\n-0.602298995524785940,\t-0.602259081242894620,\t-0.602219165455355480,\t-0.602179248162268530,\t-0.602139329363732710,\t-0.602099409059849380,\t-0.602059487250717450,\t-0.602019563936436740,\t\n-0.601979639117107170,\t-0.601939712792828540,\t-0.601899784963700560,\t-0.601859855629822470,\t-0.601819924791295420,\t-0.601779992448218560,\t-0.601740058600691800,\t-0.601700123248814720,\t\n-0.601660186392687480,\t-0.601620248032409770,\t-0.601580308168081280,\t-0.601540366799801500,\t-0.601500423927671450,\t-0.601460479551790270,\t-0.601420533672258010,\t-0.601380586289174350,\t\n-0.601340637402639210,\t-0.601300687012752520,\t-0.601260735119613310,\t-0.601220781723323050,\t-0.601180826823980890,\t-0.601140870421686620,\t-0.601100912516540080,\t-0.601060953108641380,\t\n-0.601020992198090240,\t-0.600981029784986690,\t-0.600941065869430410,\t-0.600901100451520900,\t-0.600861133531359280,\t-0.600821165109044930,\t-0.600781195184677540,\t-0.600741223758357150,\t\n-0.600701250830183770,\t-0.600661276400256570,\t-0.600621300468676900,\t-0.600581323035543900,\t-0.600541344100957610,\t-0.600501363665018050,\t-0.600461381727825040,\t-0.600421398289478490,\t\n-0.600381413350078550,\t-0.600341426909725030,\t-0.600301438968517180,\t-0.600261449526556580,\t-0.600221458583942270,\t-0.600181466140774280,\t-0.600141472197152640,\t-0.600101476753177380,\t\n-0.600061479808948420,\t-0.600021481364565010,\t-0.599981481420128640,\t-0.599941479975738550,\t-0.599901477031494770,\t-0.599861472587497220,\t-0.599821466643846060,\t-0.599781459200641190,\t\n-0.599741450257982760,\t-0.599701439815969910,\t-0.599661427874704220,\t-0.599621414434284960,\t-0.599581399494812150,\t-0.599541383056385820,\t-0.599501365119106120,\t-0.599461345683072970,\t\n-0.599421324748385720,\t-0.599381302315145860,\t-0.599341278383452750,\t-0.599301252953406420,\t-0.599261226025107010,\t-0.599221197598654440,\t-0.599181167674148970,\t-0.599141136251690520,\t\n-0.599101103331378560,\t-0.599061068913314560,\t-0.599021032997597900,\t-0.598980995584328600,\t-0.598940956673606920,\t-0.598900916265532770,\t-0.598860874360206300,\t-0.598820830957726980,\t\n-0.598780786058196290,\t-0.598740739661713590,\t-0.598700691768379150,\t-0.598660642378292860,\t-0.598620591491555000,\t-0.598580539108265700,\t-0.598540485228524990,\t-0.598500429852433120,\t\n-0.598460372980089470,\t-0.598420314611595620,\t-0.598380254747050920,\t-0.598340193386555530,\t-0.598300130530209810,\t-0.598260066178113670,\t-0.598220000330366600,\t-0.598179932987070400,\t\n-0.598139864148324210,\t-0.598099793814228510,\t-0.598059721984883220,\t-0.598019648660388590,\t-0.597979573840844880,\t-0.597939497526352340,\t-0.597899419717010880,\t-0.597859340412920330,\t\n-0.597819259614182030,\t-0.597779177320895580,\t-0.597739093533161240,\t-0.597699008251079130,\t-0.597658921474749530,\t-0.597618833204272670,\t-0.597578743439747930,\t-0.597538652181277110,\t\n-0.597498559428959570,\t-0.597458465182895690,\t-0.597418369443185600,\t-0.597378272209929670,\t-0.597338173483228040,\t-0.597298073263180960,\t-0.597257971549887910,\t-0.597217868343450700,\t\n-0.597177763643968910,\t-0.597137657451542570,\t-0.597097549766272160,\t-0.597057440588257830,\t-0.597017329917600040,\t-0.596977217754398050,\t-0.596937104098753780,\t-0.596896988950766700,\t\n-0.596856872310537300,\t-0.596816754178165600,\t-0.596776634553751960,\t-0.596736513437396860,\t-0.596696390829200450,\t-0.596656266729262310,\t-0.596616141137684240,\t-0.596576014054565840,\t\n-0.596535885480007360,\t-0.596495755414109150,\t-0.596455623856971600,\t-0.596415490808694940,\t-0.596375356269378880,\t-0.596335220239125220,\t-0.596295082718033440,\t-0.596254943706203910,\t\n-0.596214803203736990,\t-0.596174661210733150,\t-0.596134517727292650,\t-0.596094372753515840,\t-0.596054226289503110,\t-0.596014078335354030,\t-0.595973928891170620,\t-0.595933777957052270,\t\n-0.595893625533099440,\t-0.595853471619412600,\t-0.595813316216092130,\t-0.595773159323237600,\t-0.595733000940950940,\t-0.595692841069331740,\t-0.595652679708480460,\t-0.595612516858497370,\t\n-0.595572352519483150,\t-0.595532186691537960,\t-0.595492019374762260,\t-0.595451850569256650,\t-0.595411680275120590,\t-0.595371508492456010,\t-0.595331335221362720,\t-0.595291160461941190,\t\n-0.595250984214291570,\t-0.595210806478514650,\t-0.595170627254710590,\t-0.595130446542979310,\t-0.595090264343422600,\t-0.595050080656140290,\t-0.595009895481232730,\t-0.594969708818800510,\t\n-0.594929520668943890,\t-0.594889331031763560,\t-0.594849139907359880,\t-0.594808947295832670,\t-0.594768753197283730,\t-0.594728557611812870,\t-0.594688360539520790,\t-0.594648161980507630,\t\n-0.594607961934874200,\t-0.594567760402720750,\t-0.594527557384147310,\t-0.594487352879255580,\t-0.594447146888145480,\t-0.594406939410917600,\t-0.594366730447672300,\t-0.594326519998510160,\t\n-0.594286308063531780,\t-0.594246094642837620,\t-0.594205879736527500,\t-0.594165663344703330,\t-0.594125445467465150,\t-0.594085226104913210,\t-0.594045005257148320,\t-0.594004782924270840,\t\n-0.593964559106381350,\t-0.593924333803579900,\t-0.593884107015968170,\t-0.593843878743646300,\t-0.593803648986714670,\t-0.593763417745273970,\t-0.593723185019424670,\t-0.593682950809267470,\t\n-0.593642715114902850,\t-0.593602477936431390,\t-0.593562239273953020,\t-0.593521999127569870,\t-0.593481757497381630,\t-0.593441514383489130,\t-0.593401269785992720,\t-0.593361023704993110,\t\n-0.593320776140590310,\t-0.593280527092886260,\t-0.593240276561980970,\t-0.593200024547974820,\t-0.593159771050968730,\t-0.593119516071063170,\t-0.593079259608358830,\t-0.593039001662956420,\t\n-0.592998742234956410,\t-0.592958481324458830,\t-0.592918218931565820,\t-0.592877955056377190,\t-0.592837689698993750,\t-0.592797422859515980,\t-0.592757154538044780,\t-0.592716884734680650,\t\n-0.592676613449523490,\t-0.592636340682675680,\t-0.592596066434236900,\t-0.592555790704307970,\t-0.592515513492989590,\t-0.592475234800382440,\t-0.592434954626587130,\t-0.592394672971704560,\t\n-0.592354389835834440,\t-0.592314105219079230,\t-0.592273819121538650,\t-0.592233531543313490,\t-0.592193242484504560,\t-0.592152951945212560,\t-0.592112659925538080,\t-0.592072366425581360,\t\n-0.592032071445444340,\t-0.591991774985227150,\t-0.591951477045030590,\t-0.591911177624955260,\t-0.591870876725101970,\t-0.591830574345571630,\t-0.591790270486464710,\t-0.591749965147881470,\t\n-0.591709658329923950,\t-0.591669350032692390,\t-0.591629040256287380,\t-0.591588729000809830,\t-0.591548416266360460,\t-0.591508102053040050,\t-0.591467786360948540,\t-0.591427469190188400,\t\n-0.591387150540859660,\t-0.591346830413062910,\t-0.591306508806899170,\t-0.591266185722469030,\t-0.591225861159873520,\t-0.591185535119213350,\t-0.591145207600589420,\t-0.591104878604101660,\t\n-0.591064548129852430,\t-0.591024216177941760,\t-0.590983882748470690,\t-0.590943547841539800,\t-0.590903211457250110,\t-0.590862873595701670,\t-0.590822534256996710,\t-0.590782193441235500,\t\n-0.590741851148518740,\t-0.590701507378947330,\t-0.590661162132622210,\t-0.590620815409644170,\t-0.590580467210114150,\t-0.590540117534132820,\t-0.590499766381800570,\t-0.590459413753219640,\t\n-0.590419059648490170,\t-0.590378704067712980,\t-0.590338347010989080,\t-0.590297988478419410,\t-0.590257628470104660,\t-0.590217266986145070,\t-0.590176904026643130,\t-0.590136539591698870,\t\n-0.590096173681413320,\t-0.590055806295887280,\t-0.590015437435221780,\t-0.589975067099517640,\t-0.589934695288875880,\t-0.589894322003396530,\t-0.589853947243182300,\t-0.589813571008332980,\t\n-0.589773193298949950,\t-0.589732814115133790,\t-0.589692433456985630,\t-0.589652051324606410,\t-0.589611667718096370,\t-0.589571282637557760,\t-0.589530896083091060,\t-0.589490508054797080,\t\n-0.589450118552776850,\t-0.589409727577131280,\t-0.589369335127961410,\t-0.589328941205368270,\t-0.589288545809452000,\t-0.589248148940315080,\t-0.589207750598057740,\t-0.589167350782781150,\t\n-0.589126949494586110,\t-0.589086546733573630,\t-0.589046142499844880,\t-0.589005736793499990,\t-0.588965329614641540,\t-0.588924920963369790,\t-0.588884510839785660,\t-0.588844099243990280,\t\n-0.588803686176084580,\t-0.588763271636169820,\t-0.588722855624346790,\t-0.588682438140716640,\t-0.588642019185379620,\t-0.588601598758438320,\t-0.588561176859992980,\t-0.588520753490144770,\t\n-0.588480328648994690,\t-0.588439902336643670,\t-0.588399474553192300,\t-0.588359045298742940,\t-0.588318614573395960,\t-0.588278182377252380,\t-0.588237748710413340,\t-0.588197313572980000,\t\n-0.588156876965053370,\t-0.588116438886734480,\t-0.588075999338124600,\t-0.588035558319323970,\t-0.587995115830435070,\t-0.587954671871558480,\t-0.587914226442795230,\t-0.587873779544246360,\t\n-0.587833331176013000,\t-0.587792881338195630,\t-0.587752430030896830,\t-0.587711977254216870,\t-0.587671523008256980,\t-0.587631067293118310,\t-0.587590610108902010,\t-0.587550151455709100,\t\n-0.587509691333640950,\t-0.587469229742798470,\t-0.587428766683282140,\t-0.587388302155194770,\t-0.587347836158636500,\t-0.587307368693708700,\t-0.587266899760512500,\t-0.587226429359149040,\t\n-0.587185957489719470,\t-0.587145484152324260,\t-0.587105009347066110,\t-0.587064533074045490,\t-0.587024055333363440,\t-0.586983576125121310,\t-0.586943095449420250,\t-0.586902613306361400,\t\n-0.586862129696046120,\t-0.586821644618574670,\t-0.586781158074049850,\t-0.586740670062572240,\t-0.586700180584242890,\t-0.586659689639163040,\t-0.586619197227433940,\t-0.586578703349156960,\t\n-0.586538208004432460,\t-0.586497711193363140,\t-0.586457212916049580,\t-0.586416713172592920,\t-0.586376211963094530,\t-0.586335709287655660,\t-0.586295205146377450,\t-0.586254699539361160,\t\n-0.586214192466708250,\t-0.586173683928519100,\t-0.586133173924896390,\t-0.586092662455940830,\t-0.586052149521753550,\t-0.586011635122436040,\t-0.585971119258089310,\t-0.585930601928814080,\t\n-0.585890083134713020,\t-0.585849562875886850,\t-0.585809041152436700,\t-0.585768517964464050,\t-0.585727993312070040,\t-0.585687467195356030,\t-0.585646939614423270,\t-0.585606410569373350,\t\n-0.585565880060306520,\t-0.585525348087325810,\t-0.585484814650531700,\t-0.585444279750025550,\t-0.585403743385908730,\t-0.585363205558282470,\t-0.585322666267247490,\t-0.585282125512906700,\t\n-0.585241583295360470,\t-0.585201039614710260,\t-0.585160494471057560,\t-0.585119947864503500,\t-0.585079399795149670,\t-0.585038850263097320,\t-0.584998299268447820,\t-0.584957746811301860,\t\n-0.584917192891762250,\t-0.584876637509929690,\t-0.584836080665905530,\t-0.584795522359791150,\t-0.584754962591688020,\t-0.584714401361697390,\t-0.584673838669920070,\t-0.584633274516458860,\t\n-0.584592708901414570,\t-0.584552141824888350,\t-0.584511573286981890,\t-0.584471003287796440,\t-0.584430431827433480,\t-0.584389858905994490,\t-0.584349284523580040,\t-0.584308708680293170,\t\n-0.584268131376234570,\t-0.584227552611505610,\t-0.584186972386207760,\t-0.584146390700442500,\t-0.584105807554311180,\t-0.584065222947914630,\t-0.584024636881355860,\t-0.583984049354735360,\t\n-0.583943460368154810,\t-0.583902869921715690,\t-0.583862278015519260,\t-0.583821684649667220,\t-0.583781089824260910,\t-0.583740493539401830,\t-0.583699895795190880,\t-0.583659296591730880,\t\n-0.583618695929122740,\t-0.583578093807467720,\t-0.583537490226867520,\t-0.583496885187423600,\t-0.583456278689236770,\t-0.583415670732409960,\t-0.583375061317043860,\t-0.583334450443240280,\t\n-0.583293838111100470,\t-0.583253224320726130,\t-0.583212609072218610,\t-0.583171992365679630,\t-0.583131374201210750,\t-0.583090754578912570,\t-0.583050133498888350,\t-0.583009510961238760,\t\n-0.582968886966065410,\t-0.582928261513469770,\t-0.582887634603553530,\t-0.582847006236417500,\t-0.582806376412164600,\t-0.582765745130895850,\t-0.582725112392712630,\t-0.582684478197716740,\t\n-0.582643842546009650,\t-0.582603205437692840,\t-0.582562566872868120,\t-0.582521926851636950,\t-0.582481285374100270,\t-0.582440642440361090,\t-0.582399998050520230,\t-0.582359352204679490,\t\n-0.582318704902940240,\t-0.582278056145404290,\t-0.582237405932173210,\t-0.582196754263347940,\t-0.582156101139031490,\t-0.582115446559324680,\t-0.582074790524329310,\t-0.582034133034147080,\t\n-0.581993474088879360,\t-0.581952813688628060,\t-0.581912151833494650,\t-0.581871488523580170,\t-0.581830823758987760,\t-0.581790157539818220,\t-0.581749489866173250,\t-0.581708820738154660,\t\n-0.581668150155863930,\t-0.581627478119402850,\t-0.581586804628872360,\t-0.581546129684375580,\t-0.581505453286013440,\t-0.581464775433887750,\t-0.581424096128099980,\t-0.581383415368752040,\t\n-0.581342733155945650,\t-0.581302049489782370,\t-0.581261364370363910,\t-0.581220677797791410,\t-0.581179989772167890,\t-0.581139300293594400,\t-0.581098609362172610,\t-0.581057916978004350,\t\n-0.581017223141191310,\t-0.580976527851834510,\t-0.580935831110036990,\t-0.580895132915900000,\t-0.580854433269525130,\t-0.580813732171014290,\t-0.580773029620468950,\t-0.580732325617991150,\t\n-0.580691620163682480,\t-0.580650913257644840,\t-0.580610204899979050,\t-0.580569495090788590,\t-0.580528783830174370,\t-0.580488071118238190,\t-0.580447356955081870,\t-0.580406641340807110,\t\n-0.580365924275515030,\t-0.580325205759308790,\t-0.580284485792289640,\t-0.580243764374559270,\t-0.580203041506219370,\t-0.580162317187371990,\t-0.580121591418118810,\t-0.580080864198561640,\t\n-0.580040135528802290,\t-0.579999405408941900,\t-0.579958673839083730,\t-0.579917940819328790,\t-0.579877206349779020,\t-0.579836470430536320,\t-0.579795733061702400,\t-0.579754994243379170,\t\n-0.579714253975667670,\t-0.579673512258671360,\t-0.579632769092491170,\t-0.579592024477229020,\t-0.579551278412986930,\t-0.579510530899866590,\t-0.579469781937969940,\t-0.579429031527398770,\t\n-0.579388279668254460,\t-0.579347526360640020,\t-0.579306771604656820,\t-0.579266015400406680,\t-0.579225257747991500,\t-0.579184498647513200,\t-0.579143738099073600,\t-0.579102976102773950,\t\n-0.579062212658717600,\t-0.579021447767005700,\t-0.578980681427740280,\t-0.578939913641023040,\t-0.578899144406956000,\t-0.578858373725641200,\t-0.578817601597180430,\t-0.578776828021674850,\t\n-0.578736052999228030,\t-0.578695276529941020,\t-0.578654498613915820,\t-0.578613719251254490,\t-0.578572938442058700,\t-0.578532156186430610,\t-0.578491372484471470,\t-0.578450587336284630,\t\n-0.578409800741971240,\t-0.578369012701633320,\t-0.578328223215372920,\t-0.578287432283292050,\t-0.578246639905492520,\t-0.578205846082076370,\t-0.578165050813145620,\t-0.578124254098801530,\t\n-0.578083455939147450,\t-0.578042656334284870,\t-0.578001855284315580,\t-0.577961052789341620,\t-0.577920248849465130,\t-0.577879443464787150,\t-0.577838636635411350,\t-0.577797828361439000,\t\n-0.577757018642972130,\t-0.577716207480112540,\t-0.577675394872962600,\t-0.577634580821624110,\t-0.577593765326199100,\t-0.577552948386789720,\t-0.577512130003497330,\t-0.577471310176425280,\t\n-0.577430488905674940,\t-0.577389666191348350,\t-0.577348842033547640,\t-0.577308016432374840,\t-0.577267189387931980,\t-0.577226360900320310,\t-0.577185530969643650,\t-0.577144699596003010,\t\n-0.577103866779500760,\t-0.577063032520238720,\t-0.577022196818319230,\t-0.576981359673844120,\t-0.576940521086915630,\t-0.576899681057635230,\t-0.576858839586106180,\t-0.576817996672430170,\t\n-0.576777152316709120,\t-0.576736306519045170,\t-0.576695459279540470,\t-0.576654610598297150,\t-0.576613760475416570,\t-0.576572908911002320,\t-0.576532055905155770,\t-0.576491201457979050,\t\n-0.576450345569574310,\t-0.576409488240043790,\t-0.576368629469489520,\t-0.576327769258013660,\t-0.576286907605717660,\t-0.576246044512705110,\t-0.576205179979077500,\t-0.576164314004936950,\t\n-0.576123446590385500,\t-0.576082577735525510,\t-0.576041707440459130,\t-0.576000835705287710,\t-0.575959962530114830,\t-0.575919087915042090,\t-0.575878211860171740,\t-0.575837334365605800,\t\n-0.575796455431446530,\t-0.575755575057796070,\t-0.575714693244756660,\t-0.575673809992430560,\t-0.575632925300919250,\t-0.575592039170326310,\t-0.575551151600753210,\t-0.575510262592302310,\t\n-0.575469372145075760,\t-0.575428480259175810,\t-0.575387586934703820,\t-0.575346692171763710,\t-0.575305795970456830,\t-0.575264898330885450,\t-0.575223999253151820,\t-0.575183098737358180,\t\n-0.575142196783606790,\t-0.575101293391999890,\t-0.575060388562639860,\t-0.575019482295628050,\t-0.574978574591068270,\t-0.574937665449062000,\t-0.574896754869711700,\t-0.574855842853119410,\t\n-0.574814929399387500,\t-0.574774014508618310,\t-0.574733098180913340,\t-0.574692180416376370,\t-0.574651261215109010,\t-0.574610340577213390,\t-0.574569418502791970,\t-0.574528494991947030,\t\n-0.574487570044780790,\t-0.574446643661395640,\t-0.574405715841893150,\t-0.574364786586377130,\t-0.574323855894949160,\t-0.574282923767711510,\t-0.574241990204766520,\t-0.574201055206216670,\t\n-0.574160118772164110,\t-0.574119180902710410,\t-0.574078241597959620,\t-0.574037300858013190,\t-0.573996358682973610,\t-0.573955415072943010,\t-0.573914470028023870,\t-0.573873523548318660,\t\n-0.573832575633929530,\t-0.573791626284958280,\t-0.573750675501508710,\t-0.573709723283682420,\t-0.573668769631581870,\t-0.573627814545309310,\t-0.573586858024967340,\t-0.573545900070658090,\t\n-0.573504940682483480,\t-0.573463979860547200,\t-0.573423017604950850,\t-0.573382053915797110,\t-0.573341088793188240,\t-0.573300122237226590,\t-0.573259154248014660,\t-0.573218184825654790,\t\n-0.573177213970249460,\t-0.573136241681900470,\t-0.573095267960711530,\t-0.573054292806784440,\t-0.573013316220221560,\t-0.572972338201125480,\t-0.572931358749598550,\t-0.572890377865742370,\t\n-0.572849395549661080,\t-0.572808411801456250,\t-0.572767426621230480,\t-0.572726440009086120,\t-0.572685451965125550,\t-0.572644462489451440,\t-0.572603471582166180,\t-0.572562479243372220,\t\n-0.572521485473171390,\t-0.572480490271667470,\t-0.572439493638962400,\t-0.572398495575158540,\t-0.572357496080358460,\t-0.572316495154664650,\t-0.572275492798179690,\t-0.572234489011005150,\t\n-0.572193483793245190,\t-0.572152477145001500,\t-0.572111469066376550,\t-0.572070459557472930,\t-0.572029448618393220,\t-0.571988436249239900,\t-0.571947422450115540,\t-0.571906407221121740,\t\n-0.571865390562362740,\t-0.571824372473940250,\t-0.571783352955956840,\t-0.571742332008515100,\t-0.571701309631717500,\t-0.571660285825666530,\t-0.571619260590464200,\t-0.571578233926214430,\t\n-0.571537205833019150,\t-0.571496176310980710,\t-0.571455145360201920,\t-0.571414112980785260,\t-0.571373079172833310,\t-0.571332043936448650,\t-0.571291007271733210,\t-0.571249969178790900,\t\n-0.571208929657723740,\t-0.571167888708634220,\t-0.571126846331625030,\t-0.571085802526798640,\t-0.571044757294257740,\t-0.571003710634104270,\t-0.570962662546442230,\t-0.570921613031373560,\t\n-0.570880562089000840,\t-0.570839509719426760,\t-0.570798455922753800,\t-0.570757400699084760,\t-0.570716344048522230,\t-0.570675285971168900,\t-0.570634226467126470,\t-0.570593165536499300,\t\n-0.570552103179389200,\t-0.570511039395898870,\t-0.570469974186130990,\t-0.570428907550188050,\t-0.570387839488172180,\t-0.570346770000187410,\t-0.570305699086335770,\t-0.570264626746719850,\t\n-0.570223552981442340,\t-0.570182477790605930,\t-0.570141401174313440,\t-0.570100323132667340,\t-0.570059243665770430,\t-0.570018162773724750,\t-0.569977080456634310,\t-0.569935996714601270,\t\n-0.569894911547728200,\t-0.569853824956117800,\t-0.569812736939872890,\t-0.569771647499096150,\t-0.569730556633889500,\t-0.569689464344357190,\t-0.569648370630601250,\t-0.569607275492724390,\t\n-0.569566178930829390,\t-0.569525080945018860,\t-0.569483981535395700,\t-0.569442880702062500,\t-0.569401778445121410,\t-0.569360674764676670,\t-0.569319569660830190,\t-0.569278463133684800,\t\n-0.569237355183343170,\t-0.569196245809908240,\t-0.569155135013482690,\t-0.569114022794168450,\t-0.569072909152070090,\t-0.569031794087289320,\t-0.568990677599929050,\t-0.568949559690092200,\t\n-0.568908440357881350,\t-0.568867319603399420,\t-0.568826197426749220,\t-0.568785073828032780,\t-0.568743948807354350,\t-0.568702822364816170,\t-0.568661694500520840,\t-0.568620565214571270,\t\n-0.568579434507070270,\t-0.568538302378120750,\t-0.568497168827824640,\t-0.568456033856286510,\t-0.568414897463608180,\t-0.568373759649892560,\t-0.568332620415242570,\t-0.568291479759761130,\t\n-0.568250337683550930,\t-0.568209194186714890,\t-0.568168049269355820,\t-0.568126902931575970,\t-0.568085755173479480,\t-0.568044605995168710,\t-0.568003455396746350,\t-0.567962303378315440,\t\n-0.567921149939978780,\t-0.567879995081838400,\t-0.567838838803998770,\t-0.567797681106562150,\t-0.567756521989631220,\t-0.567715361453309030,\t-0.567674199497698480,\t-0.567633036122902390,\t\n-0.567591871329023780,\t-0.567550705116165450,\t-0.567509537484429560,\t-0.567468368433920570,\t-0.567427197964740730,\t-0.567386026076992840,\t-0.567344852770779950,\t-0.567303678046204850,\t\n-0.567262501903370580,\t-0.567221324342379370,\t-0.567180145363335500,\t-0.567138964966341310,\t-0.567097783151499720,\t-0.567056599918913660,\t-0.567015415268686040,\t-0.566974229200920000,\t\n-0.566933041715718340,\t-0.566891852813183330,\t-0.566850662493419420,\t-0.566809470756528770,\t-0.566768277602614610,\t-0.566727083031779650,\t-0.566685887044127030,\t-0.566644689639759670,\t\n-0.566603490818779810,\t-0.566562290581292040,\t-0.566521088927398500,\t-0.566479885857202210,\t-0.566438681370806220,\t-0.566397475468313650,\t-0.566356268149827200,\t-0.566315059415450240,\t\n-0.566273849265284790,\t-0.566232637699435440,\t-0.566191424718004540,\t-0.566150210321095140,\t-0.566108994508810140,\t-0.566067777281252680,\t-0.566026558638525800,\t-0.565985338580731740,\t\n-0.565944117107975100,\t-0.565902894220358110,\t-0.565861669917983920,\t-0.565820444200955560,\t-0.565779217069376060,\t-0.565737988523348560,\t-0.565696758562976080,\t-0.565655527188361760,\t\n-0.565614294399607750,\t-0.565573060196818860,\t-0.565531824580097320,\t-0.565490587549546180,\t-0.565449349105268560,\t-0.565408109247367510,\t-0.565366867975945600,\t-0.565325625291107080,\t\n-0.565284381192954650,\t-0.565243135681591240,\t-0.565201888757119960,\t-0.565160640419643870,\t-0.565119390669266310,\t-0.565078139506090200,\t-0.565036886930218810,\t-0.564995632941754480,\t\n-0.564954377540801690,\t-0.564913120727463030,\t-0.564871862501841520,\t-0.564830602864040410,\t-0.564789341814162740,\t-0.564748079352311860,\t-0.564706815478589920,\t-0.564665550193101720,\t\n-0.564624283495949510,\t-0.564583015387236760,\t-0.564541745867066400,\t-0.564500474935541670,\t-0.564459202592765830,\t-0.564417928838841900,\t-0.564376653673872460,\t-0.564335377097962110,\t\n-0.564294099111213310,\t-0.564252819713729200,\t-0.564211538905613150,\t-0.564170256686968190,\t-0.564128973057897550,\t-0.564087688018503840,\t-0.564046401568891630,\t-0.564005113709163290,\t\n-0.563963824439422280,\t-0.563922533759771750,\t-0.563881241670314840,\t-0.563839948171154790,\t-0.563798653262394870,\t-0.563757356944137640,\t-0.563716059216487710,\t-0.563674760079547640,\t\n-0.563633459533420700,\t-0.563592157578210020,\t-0.563550854214019070,\t-0.563509549440950890,\t-0.563468243259108160,\t-0.563426935668595470,\t-0.563385626669515530,\t-0.563344316261971460,\t\n-0.563303004446066620,\t-0.563261691221904390,\t-0.563220376589587790,\t-0.563179060549220290,\t-0.563137743100905140,\t-0.563096424244744820,\t-0.563055103980844350,\t-0.563013782309305990,\t\n-0.562972459230233200,\t-0.562931134743729240,\t-0.562889808849897480,\t-0.562848481548840480,\t-0.562807152840662960,\t-0.562765822725467600,\t-0.562724491203357660,\t-0.562683158274436490,\t\n-0.562641823938807460,\t-0.562600488196573820,\t-0.562559151047838930,\t-0.562517812492706270,\t-0.562476472531278300,\t-0.562435131163659840,\t-0.562393788389953580,\t-0.562352444210262870,\t\n-0.562311098624690970,\t-0.562269751633341470,\t-0.562228403236316730,\t-0.562187053433721770,\t-0.562145702225659180,\t-0.562104349612232320,\t-0.562062995593544560,\t-0.562021640169699350,\t\n-0.561980283340800080,\t-0.561938925106949980,\t-0.561897565468252650,\t-0.561856204424810660,\t-0.561814841976728930,\t-0.561773478124110050,\t-0.561732112867057490,\t-0.561690746205674610,\t\n-0.561649378140064880,\t-0.561608008670331780,\t-0.561566637796577890,\t-0.561525265518908130,\t-0.561483891837425200,\t-0.561442516752232450,\t-0.561401140263433570,\t-0.561359762371131720,\t\n-0.561318383075430470,\t-0.561277002376433300,\t-0.561235620274242900,\t-0.561194236768964180,\t-0.561152851860699850,\t-0.561111465549553490,\t-0.561070077835628340,\t-0.561028688719028000,\t\n-0.560987298199856040,\t-0.560945906278214950,\t-0.560904512954209960,\t-0.560863118227943660,\t-0.560821722099519530,\t-0.560780324569041140,\t-0.560738925636611870,\t-0.560697525302335300,\t\n-0.560656123566315000,\t-0.560614720428654350,\t-0.560573315889456140,\t-0.560531909948825290,\t-0.560490502606864840,\t-0.560449093863678030,\t-0.560407683719368550,\t-0.560366272174039780,\t\n-0.560324859227794620,\t-0.560283444880738110,\t-0.560242029132972940,\t-0.560200611984602690,\t-0.560159193435730840,\t-0.560117773486461080,\t-0.560076352136896990,\t-0.560034929387141830,\t\n-0.559993505237299520,\t-0.559952079687472630,\t-0.559910652737766190,\t-0.559869224388283240,\t-0.559827794639127240,\t-0.559786363490401670,\t-0.559744930942210230,\t-0.559703496994655710,\t\n-0.559662061647843270,\t-0.559620624901875590,\t-0.559579186756856360,\t-0.559537747212889180,\t-0.559496306270077630,\t-0.559454863928525280,\t-0.559413420188335730,\t-0.559371975049612780,\t\n-0.559330528512459010,\t-0.559289080576979680,\t-0.559247631243277700,\t-0.559206180511456650,\t-0.559164728381620120,\t-0.559123274853871810,\t-0.559081819928315290,\t-0.559040363605053490,\t\n-0.558998905884191430,\t-0.558957446765832260,\t-0.558915986250079320,\t-0.558874524337036550,\t-0.558833061026807410,\t-0.558791596319495600,\t-0.558750130215204810,\t-0.558708662714037960,\t\n-0.558667193816100190,\t-0.558625723521494420,\t-0.558584251830324340,\t-0.558542778742693650,\t-0.558501304258706030,\t-0.558459828378465080,\t-0.558418351102073940,\t-0.558376872429637520,\t\n-0.558335392361259060,\t-0.558293910897042060,\t-0.558252428037090190,\t-0.558210943781507370,\t-0.558169458130397200,\t-0.558127971083863360,\t-0.558086482642009550,\t-0.558044992804938800,\t\n-0.558003501572756360,\t-0.557962008945565020,\t-0.557920514923468840,\t-0.557879019506571260,\t-0.557837522694976220,\t-0.557796024488786510,\t-0.557754524888107620,\t-0.557713023893042340,\t\n-0.557671521503694480,\t-0.557630017720167850,\t-0.557588512542566250,\t-0.557547005970993270,\t-0.557505498005552820,\t-0.557463988646348610,\t-0.557422477893483650,\t-0.557380965747063310,\t\n-0.557339452207190500,\t-0.557297937273969040,\t-0.557256420947502830,\t-0.557214903227895460,\t-0.557173384115250190,\t-0.557131863609672150,\t-0.557090341711264480,\t-0.557048818420130880,\t\n-0.557007293736375250,\t-0.556965767660101420,\t-0.556924240191413180,\t-0.556882711330414340,\t-0.556841181077208700,\t-0.556799649431899410,\t-0.556758116394591720,\t-0.556716581965388760,\t\n-0.556675046144394340,\t-0.556633508931712260,\t-0.556591970327446450,\t-0.556550430331700600,\t-0.556508888944578060,\t-0.556467346166183980,\t-0.556425801996621620,\t-0.556384256435994650,\t\n-0.556342709484407120,\t-0.556301161141962710,\t-0.556259611408765450,\t-0.556218060284919270,\t-0.556176507770527070,\t-0.556134953865694340,\t-0.556093398570524310,\t-0.556051841885120690,\t\n-0.556010283809587610,\t-0.555968724344028660,\t-0.555927163488547980,\t-0.555885601243248590,\t-0.555844037608235970,\t-0.555802472583613370,\t-0.555760906169484480,\t-0.555719338365953330,\t\n-0.555677769173123840,\t-0.555636198591099920,\t-0.555594626619985490,\t-0.555553053259883800,\t-0.555511478510900100,\t-0.555469902373137870,\t-0.555428324846700790,\t-0.555386745931692900,\t\n-0.555345165628218230,\t-0.555303583936380570,\t-0.555262000856283190,\t-0.555220416388031550,\t-0.555178830531728900,\t-0.555137243287479150,\t-0.555095654655386350,\t-0.555054064635554400,\t\n-0.555012473228087220,\t-0.554970880433088950,\t-0.554929286250663400,\t-0.554887690680913930,\t-0.554846093723946000,\t-0.554804495379862760,\t-0.554762895648768350,\t-0.554721294530766680,\t\n-0.554679692025961790,\t-0.554638088134456810,\t-0.554596482856357540,\t-0.554554876191766910,\t-0.554513268140789160,\t-0.554471658703528210,\t-0.554430047880088210,\t-0.554388435670572940,\t\n-0.554346822075086680,\t-0.554305207093733320,\t-0.554263590726616240,\t-0.554221972973840900,\t-0.554180353835510680,\t-0.554138733311729580,\t-0.554097111402601540,\t-0.554055488108230800,\t\n-0.554013863428721390,\t-0.553972237364176450,\t-0.553930609914701780,\t-0.553888981080400520,\t-0.553847350861376820,\t-0.553805719257734700,\t-0.553764086269578290,\t-0.553722451897011750,\t\n-0.553680816140138980,\t-0.553639178999063450,\t-0.553597540473890760,\t-0.553555900564724260,\t-0.553514259271667860,\t-0.553472616594825940,\t-0.553430972534302400,\t-0.553389327090201500,\t\n-0.553347680262626480,\t-0.553306032051683050,\t-0.553264382457474560,\t-0.553222731480105030,\t-0.553181079119678730,\t-0.553139425376299680,\t-0.553097770250072120,\t-0.553056113741100090,\t\n-0.553014455849487160,\t-0.552972796575338710,\t-0.552931135918758310,\t-0.552889473879849990,\t-0.552847810458718110,\t-0.552806145655466600,\t-0.552764479470199800,\t-0.552722811903020970,\t\n-0.552681142954035920,\t-0.552639472623348000,\t-0.552597800911061480,\t-0.552556127817280360,\t-0.552514453342108910,\t-0.552472777485651380,\t-0.552431100248011900,\t-0.552389421629294610,\t\n-0.552347741629603100,\t-0.552306060249042940,\t-0.552264377487717620,\t-0.552222693345731370,\t-0.552181007823188460,\t-0.552139320920192910,\t-0.552097632636848410,\t-0.552055942973260550,\t\n-0.552014251929532800,\t-0.551972559505769400,\t-0.551930865702074610,\t-0.551889170518552690,\t-0.551847473955307870,\t-0.551805776012444290,\t-0.551764076690066330,\t-0.551722375988277450,\t\n-0.551680673907183340,\t-0.551638970446887480,\t-0.551597265607494340,\t-0.551555559389107940,\t-0.551513851791832650,\t-0.551472142815772730,\t-0.551430432461031740,\t-0.551388720727715280,\t\n-0.551347007615927140,\t-0.551305293125771480,\t-0.551263577257352640,\t-0.551221860010774780,\t-0.551180141386142240,\t-0.551138421383559400,\t-0.551096700003129710,\t-0.551054977244959110,\t\n-0.551013253109151060,\t-0.550971527595809810,\t-0.550929800705039720,\t-0.550888072436945150,\t-0.550846342791630470,\t-0.550804611769199150,\t-0.550762879369756990,\t-0.550721145593407680,\t\n-0.550679410440255590,\t-0.550637673910404860,\t-0.550595936003959950,\t-0.550554196721025240,\t-0.550512456061704960,\t-0.550470714026102930,\t-0.550428970614324720,\t-0.550387225826474150,\t\n-0.550345479662655570,\t-0.550303732122973230,\t-0.550261983207531610,\t-0.550220232916434960,\t-0.550178481249786970,\t-0.550136728207693660,\t-0.550094973790258400,\t-0.550053217997585660,\t\n-0.550011460829780030,\t-0.549969702286945640,\t-0.549927942369187070,\t-0.549886181076608580,\t-0.549844418409314640,\t-0.549802654367408940,\t-0.549760888950997400,\t-0.549719122160183590,\t\n-0.549677353995071890,\t-0.549635584455766880,\t-0.549593813542372910,\t-0.549552041254993680,\t-0.549510267593735110,\t-0.549468492558700780,\t-0.549426716149995280,\t-0.549384938367722950,\t\n-0.549343159211988400,\t-0.549301378682895750,\t-0.549259596780549810,\t-0.549217813505054830,\t-0.549176028856514620,\t-0.549134242835034980,\t-0.549092455440719830,\t-0.549050666673673420,\t\n-0.549008876534000430,\t-0.548967085021805250,\t-0.548925292137192320,\t-0.548883497880265470,\t-0.548841702251130600,\t-0.548799905249891530,\t-0.548758106876652610,\t-0.548716307131518420,\t\n-0.548674506014593550,\t-0.548632703525982370,\t-0.548590899665789330,\t-0.548549094434118480,\t-0.548507287831075500,\t-0.548465479856764300,\t-0.548423670511289480,\t-0.548381859794755400,\t\n-0.548340047707266740,\t-0.548298234248927980,\t-0.548256419419842820,\t-0.548214603220117390,\t-0.548172785649855500,\t-0.548130966709161620,\t-0.548089146398140210,\t-0.548047324716896100,\t\n-0.548005501665533520,\t-0.547963677244157290,\t-0.547921851452871090,\t-0.547880024291781060,\t-0.547838195760990910,\t-0.547796365860605320,\t-0.547754534590728760,\t-0.547712701951465930,\t\n-0.547670867942921300,\t-0.547629032565198680,\t-0.547587195818404320,\t-0.547545357702642010,\t-0.547503518218016240,\t-0.547461677364631690,\t-0.547419835142592960,\t-0.547377991552004620,\t\n-0.547336146592971250,\t-0.547294300265597560,\t-0.547252452569987450,\t-0.547210603506246840,\t-0.547168753074479760,\t-0.547126901274790800,\t-0.547085048107284640,\t-0.547043193572065770,\t\n-0.547001337669238200,\t-0.546959480398908070,\t-0.546917621761179200,\t-0.546875761756156260,\t-0.546833900383943970,\t-0.546792037644646900,\t-0.546750173538369740,\t-0.546708308065217200,\t\n-0.546666441225293840,\t-0.546624573018703600,\t-0.546582703445552710,\t-0.546540832505945100,\t-0.546498960199985340,\t-0.546457086527778250,\t-0.546415211489428290,\t-0.546373335085040490,\t\n-0.546331457314718550,\t-0.546289578178568600,\t-0.546247697676694790,\t-0.546205815809201800,\t-0.546163932576194220,\t-0.546122047977776750,\t-0.546080162014054180,\t-0.546038274685131330,\t\n-0.545996385991111890,\t-0.545954495932102320,\t-0.545912604508206440,\t-0.545870711719529170,\t-0.545828817566174960,\t-0.545786922048248860,\t-0.545745025165855320,\t-0.545703126919098610,\t\n-0.545661227308084750,\t-0.545619326332917760,\t-0.545577423993702570,\t-0.545535520290543750,\t-0.545493615223546220,\t-0.545451708792814570,\t-0.545409800998453600,\t-0.545367891840567440,\t\n-0.545325981319262350,\t-0.545284069434642250,\t-0.545242156186811930,\t-0.545200241575876320,\t-0.545158325601940110,\t-0.545116408265107990,\t-0.545074489565484210,\t-0.545032569503174800,\t\n-0.544990648078284120,\t-0.544948725290916760,\t-0.544906801141177620,\t-0.544864875629171410,\t-0.544822948755003030,\t-0.544781020518777300,\t-0.544739090920599020,\t-0.544697159960572220,\t\n-0.544655227638803360,\t-0.544613293955396370,\t-0.544571358910456160,\t-0.544529422504087530,\t-0.544487484736395410,\t-0.544445545607483710,\t-0.544403605117459000,\t-0.544361663266425210,\t\n-0.544319720054487370,\t-0.544277775481750160,\t-0.544235829548318510,\t-0.544193882254297210,\t-0.544151933599791300,\t-0.544109983584905480,\t-0.544068032209744090,\t-0.544026079474413280,\t\n-0.543984125379017300,\t-0.543942169923660960,\t-0.543900213108449160,\t-0.543858254933486940,\t-0.543816295398878990,\t-0.543774334504729670,\t-0.543732372251145120,\t-0.543690408638229710,\t\n-0.543648443666088330,\t-0.543606477334825700,\t-0.543564509644546940,\t-0.543522540595356980,\t-0.543480570187360620,\t-0.543438598420662110,\t-0.543396625295367810,\t-0.543354650811581960,\t\n-0.543312674969409490,\t-0.543270697768955310,\t-0.543228719210324450,\t-0.543186739293621710,\t-0.543144758018951460,\t-0.543102775386419930,\t-0.543060791396131610,\t-0.543018806048191190,\t\n-0.542976819342703810,\t-0.542934831279774380,\t-0.542892841859507920,\t-0.542850851082009370,\t-0.542808858947382840,\t-0.542766865455734940,\t-0.542724870607169900,\t-0.542682874401792640,\t\n-0.542640876839708300,\t-0.542598877921021680,\t-0.542556877645837930,\t-0.542514876014261180,\t-0.542472873026398020,\t-0.542430868682352570,\t-0.542388862982230100,\t-0.542346855926135410,\t\n-0.542304847514173630,\t-0.542262837746449570,\t-0.542220826623068590,\t-0.542178814144135490,\t-0.542136800309754640,\t-0.542094785120032400,\t-0.542052768575073340,\t-0.542010750674982280,\t\n-0.541968731419864460,\t-0.541926710809824690,\t-0.541884688844967430,\t-0.541842665525399170,\t-0.541800640851224370,\t-0.541758614822547830,\t-0.541716587439474820,\t-0.541674558702110340,\t\n-0.541632528610559440,\t-0.541590497164927130,\t-0.541548464365318670,\t-0.541506430211838310,\t-0.541464394704592620,\t-0.541422357843685980,\t-0.541380319629223390,\t-0.541338280061310020,\t\n-0.541296239140050980,\t-0.541254196865551320,\t-0.541212153237915380,\t-0.541170108257249870,\t-0.541128061923659030,\t-0.541086014237248000,\t-0.541043965198122030,\t-0.541001914806386150,\t\n-0.540959863062145390,\t-0.540917809965504980,\t-0.540875755516569410,\t-0.540833699715445150,\t-0.540791642562236550,\t-0.540749584057048980,\t-0.540707524199987350,\t-0.540665462991156920,\t\n-0.540623400430662930,\t-0.540581336518609620,\t-0.540539271255103700,\t-0.540497204640249640,\t-0.540455136674152570,\t-0.540413067356917630,\t-0.540370996688649960,\t-0.540328924669454920,\t\n-0.540286851299437540,\t-0.540244776578702180,\t-0.540202700507355750,\t-0.540160623085502500,\t-0.540118544313247790,\t-0.540076464190696660,\t-0.540034382717954340,\t-0.539992299895126090,\t\n-0.539950215722316270,\t-0.539908130199631800,\t-0.539866043327176910,\t-0.539823955105056870,\t-0.539781865533377040,\t-0.539739774612242540,\t-0.539697682341758520,\t-0.539655588722030340,\t\n-0.539613493753163250,\t-0.539571397435261610,\t-0.539529299768432220,\t-0.539487200752779560,\t-0.539445100388408980,\t-0.539402998675425630,\t-0.539360895613934740,\t-0.539318791204040910,\t\n-0.539276685445850830,\t-0.539234578339468970,\t-0.539192469885000800,\t-0.539150360082551350,\t-0.539108248932226090,\t-0.539066136434130040,\t-0.539024022588368790,\t-0.538981907395047480,\t\n-0.538939790854270570,\t-0.538897672966144990,\t-0.538855553730775320,\t-0.538813433148266570,\t-0.538771311218724350,\t-0.538729187942253880,\t-0.538687063318959660,\t-0.538644937348948470,\t\n-0.538602810032325020,\t-0.538560681369194550,\t-0.538518551359662310,\t-0.538476420003833780,\t-0.538434287301814090,\t-0.538392153253708710,\t-0.538350017859623000,\t-0.538307881119661440,\t\n-0.538265743033931040,\t-0.538223603602536180,\t-0.538181462825582320,\t-0.538139320703174830,\t-0.538097177235418940,\t-0.538055032422420250,\t-0.538012886264283120,\t-0.537970738761114560,\t\n-0.537928589913019170,\t-0.537886439720102310,\t-0.537844288182469430,\t-0.537802135300225690,\t-0.537759981073476670,\t-0.537717825502327720,\t-0.537675668586883430,\t-0.537633510327250710,\t\n-0.537591350723534260,\t-0.537549189775839320,\t-0.537507027484271480,\t-0.537464863848936100,\t-0.537422698869938540,\t-0.537380532547383490,\t-0.537338364881377870,\t-0.537296195872026260,\t\n-0.537254025519434240,\t-0.537211853823707170,\t-0.537169680784950420,\t-0.537127506403269450,\t-0.537085330678769730,\t-0.537043153611556630,\t-0.537000975201735060,\t-0.536958795449411610,\t\n-0.536916614354691290,\t-0.536874431917679470,\t-0.536832248138481520,\t-0.536790063017202890,\t-0.536747876553948400,\t-0.536705688748824960,\t-0.536663499601937270,\t-0.536621309113390900,\t\n-0.536579117283291220,\t-0.536536924111743810,\t-0.536494729598854030,\t-0.536452533744727460,\t-0.536410336549469460,\t-0.536368138013184950,\t-0.536325938135980840,\t-0.536283736917961830,\t\n-0.536241534359233610,\t-0.536199330459901420,\t-0.536157125220070970,\t-0.536114918639846950,\t-0.536072710719336380,\t-0.536030501458643950,\t-0.535988290857875360,\t-0.535946078917136080,\t\n-0.535903865636531470,\t-0.535861651016167340,\t-0.535819435056149040,\t-0.535777217756582050,\t-0.535734999117571390,\t-0.535692779139223970,\t-0.535650557821644500,\t-0.535608335164938780,\t\n-0.535566111169212160,\t-0.535523885834570220,\t-0.535481659161118560,\t-0.535439431148962090,\t-0.535397201798207710,\t-0.535354971108960350,\t-0.535312739081325590,\t-0.535270505715408910,\t\n-0.535228271011316090,\t-0.535186034969152510,\t-0.535143797589023860,\t-0.535101558871034940,\t-0.535059318815292890,\t-0.535017077421902520,\t-0.534974834690969510,\t-0.534932590622599350,\t\n-0.534890345216897820,\t-0.534848098473970300,\t-0.534805850393921920,\t-0.534763600976859490,\t-0.534721350222888250,\t-0.534679098132113450,\t-0.534636844704641010,\t-0.534594589940576510,\t\n-0.534552333840025430,\t-0.534510076403093560,\t-0.534467817629886490,\t-0.534425557520509130,\t-0.534383296075068630,\t-0.534341033293669890,\t-0.534298769176418500,\t-0.534256503723420260,\t\n-0.534214236934780760,\t-0.534171968810604910,\t-0.534129699350999960,\t-0.534087428556070610,\t-0.534045156425922760,\t-0.534002882960662120,\t-0.533960608160394150,\t-0.533918332025224650,\t\n-0.533876054555259440,\t-0.533833775750603980,\t-0.533791495611363410,\t-0.533749214137644760,\t-0.533706931329553160,\t-0.533664647187194200,\t-0.533622361710673570,\t-0.533580074900097070,\t\n-0.533537786755569620,\t-0.533495497277198470,\t-0.533453206465088650,\t-0.533410914319345730,\t-0.533368620840075520,\t-0.533326326027383830,\t-0.533284029881376240,\t-0.533241732402158660,\t\n-0.533199433589836680,\t-0.533157133444515320,\t-0.533114831966301940,\t-0.533072529155301570,\t-0.533030225011619780,\t-0.532987919535362400,\t-0.532945612726635320,\t-0.532903304585544140,\t\n-0.532860995112193980,\t-0.532818684306691990,\t-0.532776372169143420,\t-0.532734058699653850,\t-0.532691743898329070,\t-0.532649427765275020,\t-0.532607110300597380,\t-0.532564791504402060,\t\n-0.532522471376793870,\t-0.532480149917880290,\t-0.532437827127766330,\t-0.532395503006557910,\t-0.532353177554360620,\t-0.532310850771280370,\t-0.532268522657423080,\t-0.532226193212893660,\t\n-0.532183862437799580,\t-0.532141530332245760,\t-0.532099196896338110,\t-0.532056862130182550,\t-0.532014526033884770,\t-0.531972188607550690,\t-0.531929849851286220,\t-0.531887509765197050,\t\n-0.531845168349388330,\t-0.531802825603967520,\t-0.531760481529039540,\t-0.531718136124710420,\t-0.531675789391085950,\t-0.531633441328272060,\t-0.531591091936373770,\t-0.531548741215498440,\t\n-0.531506389165751330,\t-0.531464035787238220,\t-0.531421681080065040,\t-0.531379325044337710,\t-0.531336967680162030,\t-0.531294608987643910,\t-0.531252248966889270,\t-0.531209887618003250,\t\n-0.531167524941093210,\t-0.531125160936264380,\t-0.531082795603622700,\t-0.531040428943274080,\t-0.530998060955324310,\t-0.530955691639878660,\t-0.530913320997044470,\t-0.530870949026927110,\t\n-0.530828575729632270,\t-0.530786201105265980,\t-0.530743825153934260,\t-0.530701447875742920,\t-0.530659069270797980,\t-0.530616689339205360,\t-0.530574308081070310,\t-0.530531925496500190,\t\n-0.530489541585600240,\t-0.530447156348476500,\t-0.530404769785234880,\t-0.530362381895981280,\t-0.530319992680821750,\t-0.530277602139861410,\t-0.530235210273207970,\t-0.530192817080966330,\t\n-0.530150422563242740,\t-0.530108026720143120,\t-0.530065629551773390,\t-0.530023231058239670,\t-0.529980831239647790,\t-0.529938430096103090,\t-0.529896027627713040,\t-0.529853623834583010,\t\n-0.529811218716818800,\t-0.529768812274526660,\t-0.529726404507812390,\t-0.529683995416782130,\t-0.529641585001541130,\t-0.529599173262196960,\t-0.529556760198854890,\t-0.529514345811620820,\t\n-0.529471930100601010,\t-0.529429513065901250,\t-0.529387094707627790,\t-0.529344675025886560,\t-0.529302254020782900,\t-0.529259831692424300,\t-0.529217408040916220,\t-0.529174983066364570,\t\n-0.529132556768875490,\t-0.529090129148554910,\t-0.529047700205509170,\t-0.529005269939843310,\t-0.528962838351665020,\t-0.528920405441079770,\t-0.528877971208193350,\t-0.528835535653112140,\t\n-0.528793098775941940,\t-0.528750660576789100,\t-0.528708221055759650,\t-0.528665780212959510,\t-0.528623338048494260,\t-0.528580894562471370,\t-0.528538449754996310,\t-0.528496003626175100,\t\n-0.528453556176113780,\t-0.528411107404918700,\t-0.528368657312695110,\t-0.528326205899550480,\t-0.528283753165590510,\t-0.528241299110920990,\t-0.528198843735648400,\t-0.528156387039878550,\t\n-0.528113929023717790,\t-0.528071469687272250,\t-0.528029009030647980,\t-0.527986547053950430,\t-0.527944083757287300,\t-0.527901619140763940,\t-0.527859153204486510,\t-0.527816685948561240,\t\n-0.527774217373094270,\t-0.527731747478191740,\t-0.527689276263959120,\t-0.527646803730503990,\t-0.527604329877931930,\t-0.527561854706348980,\t-0.527519378215861370,\t-0.527476900406575360,\t\n-0.527434421278597080,\t-0.527391940832032780,\t-0.527349459066987820,\t-0.527306975983570010,\t-0.527264491581884820,\t-0.527222005862038270,\t-0.527179518824136830,\t-0.527137030468286530,\t\n-0.527094540794593610,\t-0.527052049803163670,\t-0.527009557494104270,\t-0.526967063867521120,\t-0.526924568923520130,\t-0.526882072662207880,\t-0.526839575083690390,\t-0.526797076188073920,\t\n-0.526754575975464820,\t-0.526712074445968460,\t-0.526669571599692740,\t-0.526627067436743030,\t-0.526584561957225690,\t-0.526542055161246860,\t-0.526499547048913000,\t-0.526457037620330250,\t\n-0.526414526875604080,\t-0.526372014814842410,\t-0.526329501438150720,\t-0.526286986745635230,\t-0.526244470737402330,\t-0.526201953413558240,\t-0.526159434774209230,\t-0.526116914819461660,\t\n-0.526074393549421760,\t-0.526031870964195240,\t-0.525989347063889670,\t-0.525946821848610750,\t-0.525904295318464830,\t-0.525861767473558170,\t-0.525819238313997020,\t-0.525776707839887060,\t\n-0.525734176051336100,\t-0.525691642948449720,\t-0.525649108531334170,\t-0.525606572800095930,\t-0.525564035754841230,\t-0.525521497395676440,\t-0.525478957722707810,\t-0.525436416736041910,\t\n-0.525393874435784110,\t-0.525351330822042440,\t-0.525308785894922470,\t-0.525266239654530560,\t-0.525223692100972970,\t-0.525181143234356160,\t-0.525138593054786500,\t-0.525096041562369660,\t\n-0.525053488757213360,\t-0.525010934639423500,\t-0.524968379209106110,\t-0.524925822466367880,\t-0.524883264411315160,\t-0.524840705044054110,\t-0.524798144364691410,\t-0.524755582373332640,\t\n-0.524713019070085610,\t-0.524670454455056000,\t-0.524627888528350290,\t-0.524585321290074850,\t-0.524542752740336130,\t-0.524500182879240500,\t-0.524457611706893640,\t-0.524415039223403490,\t\n-0.524372465428875830,\t-0.524329890323416930,\t-0.524287313907133350,\t-0.524244736180131450,\t-0.524202157142517720,\t-0.524159576794398620,\t-0.524116995135879840,\t-0.524074412167069290,\t\n-0.524031827888072680,\t-0.523989242298996570,\t-0.523946655399947340,\t-0.523904067191031440,\t-0.523861477672355360,\t-0.523818886844024890,\t-0.523776294706147840,\t-0.523733701258830120,\t\n-0.523691106502178210,\t-0.523648510436298450,\t-0.523605913061297560,\t-0.523563314377281760,\t-0.523520714384357650,\t-0.523478113082631810,\t-0.523435510472209930,\t-0.523392906553200030,\t\n-0.523350301325707810,\t-0.523307694789839850,\t-0.523265086945702730,\t-0.523222477793402810,\t-0.523179867333046000,\t-0.523137255564740220,\t-0.523094642488591390,\t-0.523052028104705860,\t\n-0.523009412413190320,\t-0.522966795414151250,\t-0.522924177107695230,\t-0.522881557493928620,\t-0.522838936572958210,\t-0.522796314344889710,\t-0.522753690809831140,\t-0.522711065967888410,\t\n-0.522668439819168000,\t-0.522625812363776480,\t-0.522583183601820430,\t-0.522540553533406340,\t-0.522497922158640220,\t-0.522455289477629980,\t-0.522412655490481550,\t-0.522370020197301500,\t\n-0.522327383598196420,\t-0.522284745693272770,\t-0.522242106482637360,\t-0.522199465966396660,\t-0.522156824144656470,\t-0.522114181017525050,\t-0.522071536585108190,\t-0.522028890847512470,\t\n-0.521986243804844490,\t-0.521943595457210920,\t-0.521900945804718350,\t-0.521858294847472700,\t-0.521815642585582110,\t-0.521772989019152370,\t-0.521730334148290060,\t-0.521687677973102000,\t\n-0.521645020493694770,\t-0.521602361710174930,\t-0.521559701622649200,\t-0.521517040231223470,\t-0.521474377536005900,\t-0.521431713537102380,\t-0.521389048234619620,\t-0.521346381628664200,\t\n-0.521303713719342810,\t-0.521261044506762140,\t-0.521218373991028110,\t-0.521175702172248960,\t-0.521133029050530490,\t-0.521090354625979410,\t-0.521047678898702520,\t-0.521005001868806380,\t\n-0.520962323536397820,\t-0.520919643901583410,\t-0.520876962964469840,\t-0.520834280725163130,\t-0.520791597183771550,\t-0.520748912340400880,\t-0.520706226195157940,\t-0.520663538748149520,\t\n-0.520620849999482100,\t-0.520578159949261930,\t-0.520535468597597030,\t-0.520492775944593530,\t-0.520450081990358140,\t-0.520407386734997420,\t-0.520364690178618310,\t-0.520321992321327480,\t\n-0.520279293163231630,\t-0.520236592704437560,\t-0.520193890945051200,\t-0.520151187885180890,\t-0.520108483524932660,\t-0.520065777864413210,\t-0.520023070903729350,\t-0.519980362642987750,\t\n-0.519937653082295230,\t-0.519894942221757810,\t-0.519852230061483840,\t-0.519809516601579370,\t-0.519766801842150960,\t-0.519724085783305640,\t-0.519681368425150110,\t-0.519638649767791060,\t\n-0.519595929811335510,\t-0.519553208555889270,\t-0.519510486001560910,\t-0.519467762148456250,\t-0.519425036996682080,\t-0.519382310546345430,\t-0.519339582797552990,\t-0.519296853750411680,\t\n-0.519254123405027300,\t-0.519211391761508540,\t-0.519168658819961220,\t-0.519125924580492230,\t-0.519083189043208490,\t-0.519040452208216710,\t-0.518997714075623780,\t-0.518954974645536640,\t\n-0.518912233918061290,\t-0.518869491893306110,\t-0.518826748571377230,\t-0.518784003952381450,\t-0.518741258036425680,\t-0.518698510823616730,\t-0.518655762314061520,\t-0.518613012507866070,\t\n-0.518570261405138950,\t-0.518527509005986100,\t-0.518484755310514520,\t-0.518442000318831140,\t-0.518399244031042650,\t-0.518356486447256070,\t-0.518313727567578320,\t-0.518270967392116200,\t\n-0.518228205920975850,\t-0.518185443154265850,\t-0.518142679092092220,\t-0.518099913734561880,\t-0.518057147081781740,\t-0.518014379133858730,\t-0.517971609890898970,\t-0.517928839353011040,\t\n-0.517886067520300970,\t-0.517843294392875690,\t-0.517800519970842200,\t-0.517757744254307430,\t-0.517714967243378290,\t-0.517672188938161800,\t-0.517629409338764780,\t-0.517586628445293460,\t\n-0.517543846257856320,\t-0.517501062776559610,\t-0.517458278001510230,\t-0.517415491932815110,\t-0.517372704570581380,\t-0.517329915914915730,\t-0.517287125965924630,\t-0.517244334723716450,\t\n-0.517201542188397420,\t-0.517158748360074580,\t-0.517115953238854840,\t-0.517073156824845230,\t-0.517030359118152650,\t-0.516987560118884250,\t-0.516944759827146160,\t-0.516901958243046970,\t\n-0.516859155366692910,\t-0.516816351198190920,\t-0.516773545737648000,\t-0.516730738985171300,\t-0.516687930940867620,\t-0.516645121604843550,\t-0.516602310977207320,\t-0.516559499058065310,\t\n-0.516516685847524530,\t-0.516473871345692110,\t-0.516431055552674990,\t-0.516388238468580170,\t-0.516345420093514810,\t-0.516302600427585130,\t-0.516259779470899740,\t-0.516216957223564870,\t\n-0.516174133685687650,\t-0.516131308857375020,\t-0.516088482738734200,\t-0.516045655329872120,\t-0.516002826630895140,\t-0.515959996641911830,\t-0.515917165363028560,\t-0.515874332794352350,\t\n-0.515831498935990340,\t-0.515788663788049660,\t-0.515745827350637230,\t-0.515702989623860190,\t-0.515660150607825770,\t-0.515617310302640130,\t-0.515574468708412060,\t-0.515531625825247810,\t\n-0.515488781653254400,\t-0.515445936192539090,\t-0.515403089443209010,\t-0.515360241405370290,\t-0.515317392079131850,\t-0.515274541464599940,\t-0.515231689561881590,\t-0.515188836371084040,\t\n-0.515145981892314530,\t-0.515103126125679880,\t-0.515060269071287550,\t-0.515017410729244450,\t-0.514974551099657060,\t-0.514931690182634180,\t-0.514888827978281950,\t-0.514845964486707720,\t\n-0.514803099708018520,\t-0.514760233642321600,\t-0.514717366289724090,\t-0.514674497650332460,\t-0.514631627724255300,\t-0.514588756511599080,\t-0.514545884012470920,\t-0.514503010226978090,\t\n-0.514460135155227700,\t-0.514417258797327030,\t-0.514374381153383190,\t-0.514331502223502660,\t-0.514288622007794130,\t-0.514245740506364070,\t-0.514202857719319620,\t-0.514159973646767910,\t\n-0.514117088288816420,\t-0.514074201645572160,\t-0.514031313717141720,\t-0.513988424503633580,\t-0.513945534005154530,\t-0.513902642221811590,\t-0.513859749153712020,\t-0.513816854800963170,\t\n-0.513773959163672080,\t-0.513731062241946090,\t-0.513688164035891790,\t-0.513645264545617760,\t-0.513602363771230590,\t-0.513559461712837510,\t-0.513516558370545770,\t-0.513473653744462630,\t\n-0.513430747834695330,\t-0.513387840641350460,\t-0.513344932164536690,\t-0.513302022404360620,\t-0.513259111360929500,\t-0.513216199034350670,\t-0.513173285424731280,\t-0.513130370532178580,\t\n-0.513087454356800140,\t-0.513044536898702890,\t-0.513001618157993610,\t-0.512958698134781120,\t-0.512915776829171780,\t-0.512872854241273050,\t-0.512829930371192180,\t-0.512787005219036420,\t\n-0.512744078784912460,\t-0.512701151068929000,\t-0.512658222071192720,\t-0.512615291791810870,\t-0.512572360230890810,\t-0.512529427388539790,\t-0.512486493264865280,\t-0.512443557859974530,\t\n-0.512400621173974890,\t-0.512357683206972840,\t-0.512314743959077390,\t-0.512271803430395130,\t-0.512228861621033320,\t-0.512185918531099290,\t-0.512142974160700650,\t-0.512100028509943630,\t\n-0.512057081578937370,\t-0.512014133367788450,\t-0.511971183876604120,\t-0.511928233105491850,\t-0.511885281054558990,\t-0.511842327723913030,\t-0.511799373113661080,\t-0.511756417223910850,\t\n-0.511713460054768700,\t-0.511670501606343750,\t-0.511627541878742490,\t-0.511584580872072480,\t-0.511541618586440870,\t-0.511498655021955240,\t-0.511455690178723050,\t-0.511412724056850900,\t\n-0.511369756656447570,\t-0.511326787977619880,\t-0.511283818020475290,\t-0.511240846785121160,\t-0.511197874271664850,\t-0.511154900480213840,\t-0.511111925410875690,\t-0.511068949063756880,\t\n-0.511025971438966440,\t-0.510982992536611170,\t-0.510940012356798310,\t-0.510897030899635450,\t-0.510854048165230060,\t-0.510811064153689490,\t-0.510768078865120550,\t-0.510725092299632140,\t\n-0.510682104457330980,\t-0.510639115338324620,\t-0.510596124942720440,\t-0.510553133270625900,\t-0.510510140322148590,\t-0.510467146097395850,\t-0.510424150596475390,\t-0.510381153819493670,\t\n-0.510338155766559830,\t-0.510295156437780670,\t-0.510252155833263550,\t-0.510209153953116170,\t-0.510166150797445760,\t-0.510123146366359250,\t-0.510080140659965650,\t-0.510037133678371780,\t\n-0.509994125421684990,\t-0.509951115890012850,\t-0.509908105083462960,\t-0.509865093002142780,\t-0.509822079646159890,\t-0.509779065015621870,\t-0.509736049110635300,\t-0.509693031931309440,\t\n-0.509650013477751070,\t-0.509606993750067570,\t-0.509563972748366620,\t-0.509520950472755700,\t-0.509477926923341710,\t-0.509434902100233570,\t-0.509391876003538190,\t-0.509348848633363160,\t\n-0.509305819989816060,\t-0.509262790073004350,\t-0.509219758883035610,\t-0.509176726420017540,\t-0.509133692684057730,\t-0.509090657675262850,\t-0.509047621393742040,\t-0.509004583839602230,\t\n-0.508961545012950990,\t-0.508918504913895790,\t-0.508875463542544430,\t-0.508832420899004380,\t-0.508789376983382450,\t-0.508746331795787880,\t-0.508703285336327580,\t-0.508660237605108920,\t\n-0.508617188602239700,\t-0.508574138327827610,\t-0.508531086781980110,\t-0.508488033964804800,\t-0.508444979876408800,\t-0.508401924516901030,\t-0.508358867886388400,\t-0.508315809984978720,\t\n-0.508272750812779450,\t-0.508229690369898290,\t-0.508186628656442930,\t-0.508143565672520280,\t-0.508100501418239370,\t-0.508057435893707330,\t-0.508014369099031530,\t-0.507971301034319980,\t\n-0.507928231699680040,\t-0.507885161095219640,\t-0.507842089221046340,\t-0.507799016077267740,\t-0.507755941663990850,\t-0.507712865981324920,\t-0.507669789029376760,\t-0.507626710808254170,\t\n-0.507583631318064720,\t-0.507540550558916340,\t-0.507497468530915710,\t-0.507454385234172190,\t-0.507411300668792700,\t-0.507368214834885030,\t-0.507325127732556780,\t-0.507282039361915630,\t\n-0.507238949723069490,\t-0.507195858816125940,\t-0.507152766641192800,\t-0.507109673198376850,\t-0.507066578487787580,\t-0.507023482509531890,\t-0.506980385263717360,\t-0.506937286750452020,\t\n-0.506894186969843340,\t-0.506851085921998460,\t-0.506807983607026720,\t-0.506764880025034950,\t-0.506721775176130930,\t-0.506678669060422580,\t-0.506635561678017490,\t-0.506592453029023560,\t\n-0.506549343113548380,\t-0.506506231931699970,\t-0.506463119483585130,\t-0.506420005769313230,\t-0.506376890788991400,\t-0.506333774542727320,\t-0.506290657030628810,\t-0.506247538252803660,\t\n-0.506204418209359570,\t-0.506161296900403790,\t-0.506118174326045440,\t-0.506075050486391790,\t-0.506031925381550400,\t-0.505988799011629190,\t-0.505945671376736070,\t-0.505902542476978630,\t\n-0.505859412312465010,\t-0.505816280883301990,\t-0.505773148189599060,\t-0.505730014231463240,\t-0.505686879009002330,\t-0.505643742522324360,\t-0.505600604771536900,\t-0.505557465756748090,\t\n-0.505514325478064740,\t-0.505471183935596310,\t-0.505428041129449950,\t-0.505384897059733550,\t-0.505341751726554820,\t-0.505298605130021780,\t-0.505255457270242130,\t-0.505212308147323990,\t\n-0.505169157761374170,\t-0.505126006112502360,\t-0.505082853200815360,\t-0.505039699026421320,\t-0.504996543589428140,\t-0.504953386889943400,\t-0.504910228928075360,\t-0.504867069703930920,\t\n-0.504823909217619550,\t-0.504780747469248390,\t-0.504737584458925360,\t-0.504694420186758470,\t-0.504651254652855430,\t-0.504608087857324250,\t-0.504564919800272960,\t-0.504521750481809250,\t\n-0.504478579902040480,\t-0.504435408061076010,\t-0.504392234959022970,\t-0.504349060595989380,\t-0.504305884972083060,\t-0.504262708087412140,\t-0.504219529942083630,\t-0.504176350536207130,\t\n-0.504133169869889650,\t-0.504089987943239340,\t-0.504046804756363990,\t-0.504003620309371620,\t-0.503960434602370280,\t-0.503917247635467750,\t-0.503874059408772170,\t-0.503830869922390680,\t\n-0.503787679176432750,\t-0.503744487171005730,\t-0.503701293906217320,\t-0.503658099382175760,\t-0.503614903598988970,\t-0.503571706556764860,\t-0.503528508255610800,\t-0.503485308695636240,\t\n-0.503442107876948320,\t-0.503398905799655180,\t-0.503355702463864740,\t-0.503312497869685130,\t-0.503269292017224150,\t-0.503226084906590040,\t-0.503182876537889840,\t-0.503139666911233350,\t\n-0.503096456026727700,\t-0.503053243884480810,\t-0.503010030484600800,\t-0.502966815827195820,\t-0.502923599912373680,\t-0.502880382740241830,\t-0.502837164310909860,\t-0.502793944624484900,\t\n-0.502750723681075100,\t-0.502707501480788470,\t-0.502664278023733150,\t-0.502621053310017050,\t-0.502577827339748320,\t-0.502534600113034300,\t-0.502491371629984580,\t-0.502448141890706410,\t\n-0.502404910895307810,\t-0.502361678643897020,\t-0.502318445136581970,\t-0.502275210373470890,\t-0.502231974354670930,\t-0.502188737080291770,\t-0.502145498550440880,\t-0.502102258765226180,\t\n-0.502059017724755920,\t-0.502015775429138000,\t-0.501972531878480680,\t-0.501929287072892080,\t-0.501886041012480240,\t-0.501842793697352410,\t-0.501799545127618480,\t-0.501756295303385720,\t\n-0.501713044224762150,\t-0.501669791891856010,\t-0.501626538304775330,\t-0.501583283463627570,\t-0.501540027368522430,\t-0.501496770019567160,\t-0.501453511416870000,\t-0.501410251560539090,\t\n-0.501366990450682450,\t-0.501323728087408440,\t-0.501280464470824970,\t-0.501237199601040410,\t-0.501193933478162100,\t-0.501150666102299750,\t-0.501107397473560700,\t-0.501064127592053210,\t\n-0.501020856457885300,\t-0.500977584071165330,\t-0.500934310432001430,\t-0.500891035540500850,\t-0.500847759396773620,\t-0.500804482000926860,\t-0.500761203353068950,\t-0.500717923453308010,\t\n-0.500674642301752290,\t-0.500631359898509930,\t-0.500588076243689170,\t-0.500544791337397490,\t-0.500501505179744570,\t-0.500458217770837880,\t-0.500414929110785670,\t-0.500371639199696070,\t\n-0.500328348037677450,\t-0.500285055624837940,\t-0.500241761961285000,\t-0.500198467047128450,\t-0.500155170882475740,\t-0.500111873467435130,\t-0.500068574802114750,\t-0.500025274886623070,\t\n-0.499981973721068060,\t-0.499938671305558190,\t-0.499895367640200870,\t-0.499852062725105850,\t-0.499808756560380710,\t-0.499765449146133690,\t-0.499722140482473040,\t-0.499678830569507020,\t\n-0.499635519407343960,\t-0.499592206996091300,\t-0.499548893335858890,\t-0.499505578426754250,\t-0.499462262268885680,\t-0.499418944862361490,\t-0.499375626207289870,\t-0.499332306303779230,\t\n-0.499288985151937760,\t-0.499245662751873880,\t-0.499202339103695100,\t-0.499159014207511190,\t-0.499115688063429760,\t-0.499072360671559130,\t-0.499029032032007550,\t-0.498985702144883470,\t\n-0.498942371010294260,\t-0.498899038628350000,\t-0.498855704999158100,\t-0.498812370122826920,\t-0.498769033999464820,\t-0.498725696629180150,\t-0.498682358012081220,\t-0.498639018148276380,\t\n-0.498595677037874050,\t-0.498552334680981700,\t-0.498508991077709300,\t-0.498465646228164470,\t-0.498422300132455480,\t-0.498378952790690780,\t-0.498335604202978620,\t-0.498292254369427530,\t\n-0.498248903290144980,\t-0.498205550965240940,\t-0.498162197394823090,\t-0.498118842578999690,\t-0.498075486517879200,\t-0.498032129211569970,\t-0.497988770660180440,\t-0.497945410863818990,\t\n-0.497902049822593230,\t-0.497858687536613110,\t-0.497815324005986270,\t-0.497771959230821180,\t-0.497728593211226090,\t-0.497685225947309570,\t-0.497641857439179990,\t-0.497598487686945030,\t\n-0.497555116690714560,\t-0.497511744450596320,\t-0.497468370966698710,\t-0.497424996239130220,\t-0.497381620267999200,\t-0.497338243053414120,\t-0.497294864595483440,\t-0.497251484894314870,\t\n-0.497208103950018300,\t-0.497164721762701490,\t-0.497121338332472910,\t-0.497077953659440910,\t-0.497034567743714070,\t-0.496991180585400820,\t-0.496947792184608830,\t-0.496904402541448190,\t\n-0.496861011656026470,\t-0.496817619528452270,\t-0.496774226158833990,\t-0.496730831547280150,\t-0.496687435693899230,\t-0.496644038598799690,\t-0.496600640262090110,\t-0.496557240683878130,\t\n-0.496513839864273830,\t-0.496470437803384900,\t-0.496427034501319920,\t-0.496383629958187360,\t-0.496340224174095680,\t-0.496296817149152690,\t-0.496253408883468420,\t-0.496209999377150660,\t\n-0.496166588630307880,\t-0.496123176643048610,\t-0.496079763415481430,\t-0.496036348947714810,\t-0.495992933239857330,\t-0.495949516292017560,\t-0.495906098104303140,\t-0.495862678676824320,\t\n-0.495819258009688790,\t-0.495775836103005070,\t-0.495732412956881810,\t-0.495688988571427510,\t-0.495645562946750720,\t-0.495602136082959280,\t-0.495558707980163270,\t-0.495515278638470450,\t\n-0.495471848057989490,\t-0.495428416238828830,\t-0.495384983181097190,\t-0.495341548884903120,\t-0.495298113350355120,\t-0.495254676577561060,\t-0.495211238566631130,\t-0.495167799317673070,\t\n-0.495124358830795530,\t-0.495080917106107080,\t-0.495037474143716350,\t-0.494994029943731930,\t-0.494950584506261670,\t-0.494907137831415710,\t-0.494863689919301910,\t-0.494820240770028840,\t\n-0.494776790383705200,\t-0.494733338760439620,\t-0.494689885900340690,\t-0.494646431803517030,\t-0.494602976470076510,\t-0.494559519900129310,\t-0.494516062093783290,\t-0.494472603051147150,\t\n-0.494429142772329520,\t-0.494385681257439040,\t-0.494342218506584330,\t-0.494298754519873260,\t-0.494255289297416130,\t-0.494211822839320800,\t-0.494168355145695850,\t-0.494124886216650070,\t\n-0.494081416052292060,\t-0.494037944652730490,\t-0.493994472018074060,\t-0.493950998148431460,\t-0.493907523043910560,\t-0.493864046704621640,\t-0.493820569130672630,\t-0.493777090322172210,\t\n-0.493733610279229020,\t-0.493690129001951810,\t-0.493646646490448540,\t-0.493603162744829400,\t-0.493559677765202380,\t-0.493516191551676140,\t-0.493472704104359390,\t-0.493429215423360930,\t\n-0.493385725508789450,\t-0.493342234360753580,\t-0.493298741979362190,\t-0.493255248364723120,\t-0.493211753516946740,\t-0.493168257436141010,\t-0.493124760122414570,\t-0.493081261575876280,\t\n-0.493037761796634780,\t-0.492994260784798910,\t-0.492950758540476650,\t-0.492907255063778190,\t-0.492863750354811670,\t-0.492820244413685720,\t-0.492776737240509190,\t-0.492733228835390780,\t\n-0.492689719198439350,\t-0.492646208329763580,\t-0.492602696229471500,\t-0.492559182897673530,\t-0.492515668334477520,\t-0.492472152539992380,\t-0.492428635514326860,\t-0.492385117257589770,\t\n-0.492341597769889840,\t-0.492298077051335160,\t-0.492254555102036080,\t-0.492211031922100580,\t-0.492167507511637570,\t-0.492123981870755730,\t-0.492080454999563930,\t-0.492036926898171020,\t\n-0.491993397566685750,\t-0.491949867005216260,\t-0.491906335213872890,\t-0.491862802192763630,\t-0.491819267941997370,\t-0.491775732461682990,\t-0.491732195751929220,\t-0.491688657812844990,\t\n-0.491645118644538360,\t-0.491601578247119700,\t-0.491558036620697080,\t-0.491514493765379370,\t-0.491470949681275420,\t-0.491427404368494140,\t-0.491383857827144280,\t-0.491340310057334810,\t\n-0.491296761059174580,\t-0.491253210832771630,\t-0.491209659378236460,\t-0.491166106695677170,\t-0.491122552785202560,\t-0.491078997646921590,\t-0.491035441280943120,\t-0.490991883687375290,\t\n-0.490948324866328500,\t-0.490904764817910900,\t-0.490861203542231390,\t-0.490817641039398900,\t-0.490774077309522270,\t-0.490730512352710480,\t-0.490686946169072380,\t-0.490643378758716940,\t\n-0.490599810121752240,\t-0.490556240258288870,\t-0.490512669168434830,\t-0.490469096852299110,\t-0.490425523309990670,\t-0.490381948541618430,\t-0.490338372547291350,\t-0.490294795327117510,\t\n-0.490251216881207490,\t-0.490207637209669420,\t-0.490164056312612230,\t-0.490120474190144930,\t-0.490076890842376430,\t-0.490033306269415710,\t-0.489989720471371740,\t-0.489946133448352640,\t\n-0.489902545200469050,\t-0.489858955727829060,\t-0.489815365030541680,\t-0.489771773108715890,\t-0.489728179962460650,\t-0.489684585591884990,\t-0.489640989997097100,\t-0.489597393178207500,\t\n-0.489553795135324380,\t-0.489510195868556820,\t-0.489466595378013740,\t-0.489422993663804210,\t-0.489379390726037140,\t-0.489335786564821630,\t-0.489292181180265850,\t-0.489248574572480440,\t\n-0.489204966741573540,\t-0.489161357687654290,\t-0.489117747410831580,\t-0.489074135911214570,\t-0.489030523188912160,\t-0.488986909244032710,\t-0.488943294076686740,\t-0.488899677686982500,\t\n-0.488856060075029130,\t-0.488812441240935590,\t-0.488768821184810910,\t-0.488725199906764220,\t-0.488681577406904490,\t-0.488637953685340850,\t-0.488594328742181560,\t-0.488550702577537190,\t\n-0.488507075191516090,\t-0.488463446584227300,\t-0.488419816755779890,\t-0.488376185706282940,\t-0.488332553435844750,\t-0.488288919944575960,\t-0.488245285232584810,\t-0.488201649299980560,\t\n-0.488158012146872100,\t-0.488114373773368640,\t-0.488070734179579250,\t-0.488027093365613010,\t-0.487983451331579000,\t-0.487939808077585640,\t-0.487896163603743550,\t-0.487852517910160990,\t\n-0.487808870996947200,\t-0.487765222864211200,\t-0.487721573512062130,\t-0.487677922940608350,\t-0.487634271149960550,\t-0.487590618140227080,\t-0.487546963911517080,\t-0.487503308463939630,\t\n-0.487459651797603980,\t-0.487415993912619140,\t-0.487372334809094310,\t-0.487328674487138680,\t-0.487285012946860550,\t-0.487241350188370670,\t-0.487197686211777450,\t-0.487154021017189960,\t\n-0.487110354604717470,\t-0.487066686974469090,\t-0.487023018126553960,\t-0.486979348061080510,\t-0.486935676778159520,\t-0.486892004277899300,\t-0.486848330560409050,\t-0.486804655625798000,\t\n-0.486760979474175290,\t-0.486717302105650120,\t-0.486673623520331780,\t-0.486629943718328520,\t-0.486586262699751190,\t-0.486542580464708220,\t-0.486498897013308780,\t-0.486455212345662140,\t\n-0.486411526461877460,\t-0.486367839362063960,\t-0.486324151046330030,\t-0.486280461514786540,\t-0.486236770767541900,\t-0.486193078804705360,\t-0.486149385626386100,\t-0.486105691232693370,\t\n-0.486061995623736420,\t-0.486018298799624440,\t-0.485974600760466780,\t-0.485930901506371800,\t-0.485887201037450370,\t-0.485843499353810880,\t-0.485799796455562700,\t-0.485756092342815030,\t\n-0.485712387015677090,\t-0.485668680474257430,\t-0.485624972718666840,\t-0.485581263749013840,\t-0.485537553565407620,\t-0.485493842167957550,\t-0.485450129556772910,\t-0.485406415731962910,\t\n-0.485362700693636910,\t-0.485318984441904130,\t-0.485275266976873070,\t-0.485231548298654670,\t-0.485187828407357410,\t-0.485144107303090540,\t-0.485100384985963420,\t-0.485056661456085340,\t\n-0.485012936713564820,\t-0.484969210758512740,\t-0.484925483591037650,\t-0.484881755211248820,\t-0.484838025619255650,\t-0.484794294815167390,\t-0.484750562799093400,\t-0.484706829571142970,\t\n-0.484663095131425470,\t-0.484619359480049530,\t-0.484575622617125890,\t-0.484531884542763190,\t-0.484488145257070850,\t-0.484444404760158100,\t-0.484400663052134310,\t-0.484356920133108940,\t\n-0.484313176003190400,\t-0.484269430662489790,\t-0.484225684111115550,\t-0.484181936349177110,\t-0.484138187376783820,\t-0.484094437194045050,\t-0.484050685801070250,\t-0.484006933197968670,\t\n-0.483963179384849010,\t-0.483919424361822170,\t-0.483875668128996740,\t-0.483831910686482180,\t-0.483788152034387850,\t-0.483744392172823110,\t-0.483700631101897430,\t-0.483656868821719380,\t\n-0.483613105332399870,\t-0.483569340634047660,\t-0.483525574726772100,\t-0.483481807610682600,\t-0.483438039285888580,\t-0.483394269752499440,\t-0.483350499010624660,\t-0.483306727060373640,\t\n-0.483262953901854970,\t-0.483219179535179730,\t-0.483175403960456550,\t-0.483131627177794840,\t-0.483087849187304070,\t-0.483044069989093660,\t-0.483000289583272350,\t-0.482956507969951040,\t\n-0.482912725149238440,\t-0.482868941121244120,\t-0.482825155886077380,\t-0.482781369443847750,\t-0.482737581794664690,\t-0.482693792938637730,\t-0.482650002875876230,\t-0.482606211606488980,\t\n-0.482562419130586950,\t-0.482518625448278890,\t-0.482474830559674270,\t-0.482431034464882560,\t-0.482387237164013270,\t-0.482343438657175160,\t-0.482299638944479140,\t-0.482255838026034110,\t\n-0.482212035901949440,\t-0.482168232572334650,\t-0.482124428037299320,\t-0.482080622296952920,\t-0.482036815351404970,\t-0.481993007200764990,\t-0.481949197845141670,\t-0.481905387284646160,\t\n-0.481861575519387190,\t-0.481817762549474280,\t-0.481773948375016910,\t-0.481730132996124720,\t-0.481686316412907210,\t-0.481642498625473090,\t-0.481598679633933550,\t-0.481554859438397260,\t\n-0.481511038038973880,\t-0.481467215435772870,\t-0.481423391628903800,\t-0.481379566618476310,\t-0.481335740404599870,\t-0.481291912987383270,\t-0.481248084366937720,\t-0.481204254543371900,\t\n-0.481160423516795500,\t-0.481116591287318040,\t-0.481072757855049050,\t-0.481028923220098210,\t-0.480985087382574280,\t-0.480941250342588390,\t-0.480897412100249390,\t-0.480853572655666860,\t\n-0.480809732008950390,\t-0.480765890160209600,\t-0.480722047109554070,\t-0.480678202857093450,\t-0.480634357402937310,\t-0.480590510747194500,\t-0.480546662889976160,\t-0.480502813831391210,\t\n-0.480458963571549210,\t-0.480415112110559760,\t-0.480371259448532590,\t-0.480327405585576460,\t-0.480283550521802600,\t-0.480239694257319880,\t-0.480195836792237930,\t-0.480151978126666380,\t\n-0.480108118260714870,\t-0.480064257194493080,\t-0.480020394928110610,\t-0.479976531461677180,\t-0.479932666795301670,\t-0.479888800929095250,\t-0.479844933863166790,\t-0.479801065597626030,\t\n-0.479757196132582610,\t-0.479713325468146210,\t-0.479669453604425700,\t-0.479625580541532310,\t-0.479581706279575030,\t-0.479537830818663410,\t-0.479493954158907280,\t-0.479450076300416250,\t\n-0.479406197243300030,\t-0.479362316987668290,\t-0.479318435533630790,\t-0.479274552881296390,\t-0.479230669030776380,\t-0.479186783982179730,\t-0.479142897735616140,\t-0.479099010291195280,\t\n-0.479055121649026860,\t-0.479011231809220670,\t-0.478967340771885630,\t-0.478923448537133030,\t-0.478879555105071740,\t-0.478835660475811660,\t-0.478791764649462380,\t-0.478747867626133640,\t\n-0.478703969405935290,\t-0.478660069988977030,\t-0.478616169375367770,\t-0.478572267565218870,\t-0.478528364558639340,\t-0.478484460355738880,\t-0.478440554956627240,\t-0.478396648361414270,\t\n-0.478352740570209660,\t-0.478308831583122370,\t-0.478264921400263830,\t-0.478221010021743000,\t-0.478177097447669620,\t-0.478133183678153490,\t-0.478089268713304370,\t-0.478045352553232160,\t\n-0.478001435198046500,\t-0.477957516647856520,\t-0.477913596902773520,\t-0.477869675962906470,\t-0.477825753828365280,\t-0.477781830499259710,\t-0.477737905975699540,\t-0.477693980257794640,\t\n-0.477650053345653970,\t-0.477606125239389000,\t-0.477562195939108650,\t-0.477518265444922870,\t-0.477474333756941370,\t-0.477430400875274110,\t-0.477386466800030770,\t-0.477342531531321280,\t\n-0.477298595069254710,\t-0.477254657413942460,\t-0.477210718565493520,\t-0.477166778524017790,\t-0.477122837289625120,\t-0.477078894862425330,\t-0.477034951242528320,\t-0.476991006430043940,\t\n-0.476947060425081280,\t-0.476903113227751700,\t-0.476859164838164370,\t-0.476815215256429170,\t-0.476771264482655890,\t-0.476727312516954440,\t-0.476683359359434680,\t-0.476639405010206570,\t\n-0.476595449469379150,\t-0.476551492737063930,\t-0.476507534813369940,\t-0.476463575698407080,\t-0.476419615392285330,\t-0.476375653895114550,\t-0.476331691207004580,\t-0.476287727328064630,\t\n-0.476243762258406140,\t-0.476199795998138280,\t-0.476155828547370870,\t-0.476111859906213960,\t-0.476067890074777340,\t-0.476023919053171040,\t-0.475979946841504910,\t-0.475935973439888140,\t\n-0.475891998848432200,\t-0.475848023067246270,\t-0.475804046096440340,\t-0.475760067936124240,\t-0.475716088586407960,\t-0.475672108047401510,\t-0.475628126319213970,\t-0.475584143401956870,\t\n-0.475540159295739450,\t-0.475496174000671620,\t-0.475452187516863410,\t-0.475408199844424670,\t-0.475364210983465430,\t-0.475320220934095710,\t-0.475276229696424580,\t-0.475232237270563740,\t\n-0.475188243656622270,\t-0.475144248854710180,\t-0.475100252864937460,\t-0.475056255687414110,\t-0.475012257322250160,\t-0.474968257769554760,\t-0.474924257029439520,\t-0.474880255102013590,\t\n-0.474836251987387050,\t-0.474792247685669910,\t-0.474748242196972090,\t-0.474704235521403730,\t-0.474660227659074730,\t-0.474616218610094400,\t-0.474572208374574310,\t-0.474528196952623660,\t\n-0.474484184344352580,\t-0.474440170549870980,\t-0.474396155569288990,\t-0.474352139402716590,\t-0.474308122050263850,\t-0.474264103512040070,\t-0.474220083788156780,\t-0.474176062878723270,\t\n-0.474132040783849570,\t-0.474088017503645820,\t-0.474043993038221980,\t-0.473999967387688240,\t-0.473955940552154510,\t-0.473911912531730150,\t-0.473867883326526800,\t-0.473823852936653740,\t\n-0.473779821362221080,\t-0.473735788603338870,\t-0.473691754660117150,\t-0.473647719532666040,\t-0.473603683221094860,\t-0.473559645725515290,\t-0.473515607046036570,\t-0.473471567182768840,\t\n-0.473427526135822170,\t-0.473383483905306710,\t-0.473339440491332530,\t-0.473295395894009760,\t-0.473251350113447710,\t-0.473207303149758060,\t-0.473163255003050180,\t-0.473119205673434130,\t\n-0.473075155161020110,\t-0.473031103465918200,\t-0.472987050588238480,\t-0.472942996528090350,\t-0.472898941285585570,\t-0.472854884860833380,\t-0.472810827253944020,\t-0.472766768465027580,\t\n-0.472722708494194230,\t-0.472678647341554070,\t-0.472634585007217330,\t-0.472590521491293320,\t-0.472546456793893840,\t-0.472502390915128130,\t-0.472458323855106500,\t-0.472414255613939070,\t\n-0.472370186191735990,\t-0.472326115588607430,\t-0.472282043804662820,\t-0.472237970840013840,\t-0.472193896694769970,\t-0.472149821369041380,\t-0.472105744862938210,\t-0.472061667176570670,\t\n-0.472017588310048970,\t-0.471973508263483280,\t-0.471929427036983040,\t-0.471885344630660060,\t-0.471841261044623710,\t-0.471797176278984150,\t-0.471753090333851710,\t-0.471709003209336510,\t\n-0.471664914905548790,\t-0.471620825422598810,\t-0.471576734760596030,\t-0.471532642919652130,\t-0.471488549899876650,\t-0.471444455701379770,\t-0.471400360324271740,\t-0.471356263768662850,\t\n-0.471312166034663300,\t-0.471268067122383340,\t-0.471223967031932370,\t-0.471179865763422300,\t-0.471135763316962610,\t-0.471091659692663480,\t-0.471047554890635160,\t-0.471003448910988000,\t\n-0.470959341753832190,\t-0.470915233419277270,\t-0.470871123907435020,\t-0.470827013218415020,\t-0.470782901352327420,\t-0.470738788309282620,\t-0.470694674089390810,\t-0.470650558692762340,\t\n-0.470606442119507420,\t-0.470562324369735660,\t-0.470518205443558880,\t-0.470474085341086590,\t-0.470429964062429040,\t-0.470385841607696640,\t-0.470341717976999580,\t-0.470297593170448280,\t\n-0.470253467188152140,\t-0.470209340030223190,\t-0.470165211696770840,\t-0.470121082187905490,\t-0.470076951503737460,\t-0.470032819644376990,\t-0.469988686609934480,\t-0.469944552400520300,\t\n-0.469900417016243910,\t-0.469856280457217280,\t-0.469812142723549990,\t-0.469768003815352280,\t-0.469723863732734560,\t-0.469679722475807250,\t-0.469635580044680530,\t-0.469591436439464160,\t\n-0.469547291660269980,\t-0.469503145707207530,\t-0.469458998580387250,\t-0.469414850279919470,\t-0.469370700805914530,\t-0.469326550158482850,\t-0.469282398337734830,\t-0.469238245343780000,\t\n-0.469194091176730330,\t-0.469149935836695450,\t-0.469105779323785720,\t-0.469061621638111550,\t-0.469017462779783350,\t-0.468973302748911470,\t-0.468929141545606330,\t-0.468884979169977570,\t\n-0.468840815622137140,\t-0.468796650902194630,\t-0.468752485010260570,\t-0.468708317946445240,\t-0.468664149710859120,\t-0.468619980303612630,\t-0.468575809724816220,\t-0.468531637974579470,\t\n-0.468487465053014420,\t-0.468443290960230680,\t-0.468399115696338740,\t-0.468354939261449000,\t-0.468310761655671930,\t-0.468266582879117930,\t-0.468222402931896760,\t-0.468178221814120280,\t\n-0.468134039525898270,\t-0.468089856067341210,\t-0.468045671438559460,\t-0.468001485639663540,\t-0.467957298670763910,\t-0.467913110531971040,\t-0.467868921223394570,\t-0.467824730745146630,\t\n-0.467780539097336860,\t-0.467736346280075710,\t-0.467692152293473720,\t-0.467647957137641350,\t-0.467603760812689060,\t-0.467559563318726610,\t-0.467515364655866020,\t-0.467471164824217020,\t\n-0.467426963823890150,\t-0.467382761654995820,\t-0.467338558317644590,\t-0.467294353811947010,\t-0.467250148138013520,\t-0.467205941295953830,\t-0.467161733285880120,\t-0.467117524107902080,\t\n-0.467073313762130240,\t-0.467029102248675050,\t-0.466984889567647170,\t-0.466940675719157040,\t-0.466896460703314420,\t-0.466852244520231500,\t-0.466808027170017900,\t-0.466763808652784270,\t\n-0.466719588968641070,\t-0.466675368117698940,\t-0.466631146100068390,\t-0.466586922915859960,\t-0.466542698565183430,\t-0.466498473048150950,\t-0.466454246364872320,\t-0.466410018515458050,\t\n-0.466365789500018720,\t-0.466321559318664920,\t-0.466277327971507230,\t-0.466233095458656210,\t-0.466188861780221670,\t-0.466144626936315810,\t-0.466100390927048300,\t-0.466056153752529840,\t\n-0.466011915412871010,\t-0.465967675908182390,\t-0.465923435238574600,\t-0.465879193404158180,\t-0.465834950405043020,\t-0.465790706241341280,\t-0.465746460913162740,\t-0.465702214420618100,\t\n-0.465657966763817880,\t-0.465613717942872760,\t-0.465569467957893330,\t-0.465525216808989450,\t-0.465480964496273300,\t-0.465436711019854790,\t-0.465392456379844440,\t-0.465348200576353010,\t\n-0.465303943609491010,\t-0.465259685479369190,\t-0.465215426186098180,\t-0.465171165729787780,\t-0.465126904110550240,\t-0.465082641328495470,\t-0.465038377383734100,\t-0.464994112276376770,\t\n-0.464949846006534220,\t-0.464905578574316970,\t-0.464861309979835050,\t-0.464817040223200580,\t-0.464772769304523550,\t-0.464728497223914570,\t-0.464684223981484400,\t-0.464639949577343610,\t\n-0.464595674011603010,\t-0.464551397284373170,\t-0.464507119395764060,\t-0.464462840345887920,\t-0.464418560134854720,\t-0.464374278762775150,\t-0.464329996229759790,\t-0.464285712535919490,\t\n-0.464241427681364950,\t-0.464197141666206010,\t-0.464152854490554990,\t-0.464108566154521840,\t-0.464064276658217310,\t-0.464019986001752040,\t-0.463975694185236820,\t-0.463931401208782400,\t\n-0.463887107072499420,\t-0.463842811776497940,\t-0.463798515320890170,\t-0.463754217705786180,\t-0.463709918931296590,\t-0.463665618997532230,\t-0.463621317904603760,\t-0.463577015652622050,\t\n-0.463532712241697790,\t-0.463488407671940990,\t-0.463444101943463920,\t-0.463399795056376630,\t-0.463355487010789820,\t-0.463311177806814300,\t-0.463266867444560860,\t-0.463222555924140190,\t\n-0.463178243245663200,\t-0.463133929409239810,\t-0.463089614414982310,\t-0.463045298263000840,\t-0.463000980953406140,\t-0.462956662486308960,\t-0.462912342861820090,\t-0.462868022080050400,\t\n-0.462823700141109850,\t-0.462779377045110850,\t-0.462735052792163430,\t-0.462690727382378380,\t-0.462646400815866440,\t-0.462602073092738600,\t-0.462557744213105470,\t-0.462513414177078030,\t\n-0.462469082984766300,\t-0.462424750636282630,\t-0.462380417131737050,\t-0.462336082471240470,\t-0.462291746654903690,\t-0.462247409682837510,\t-0.462203071555152780,\t-0.462158732271959640,\t\n-0.462114391833370440,\t-0.462070050239495270,\t-0.462025707490444970,\t-0.461981363586330350,\t-0.461937018527262380,\t-0.461892672313351850,\t-0.461848324944709620,\t-0.461803976421445830,\t\n-0.461759626743672880,\t-0.461715275911500860,\t-0.461670923925040610,\t-0.461626570784403110,\t-0.461582216489699100,\t-0.461537861041039610,\t-0.461493504438534710,\t-0.461449146682296810,\t\n-0.461404787772435990,\t-0.461360427709063270,\t-0.461316066492289460,\t-0.461271704122225460,\t-0.461227340598982240,\t-0.461182975922670600,\t-0.461138610093400790,\t-0.461094243111285220,\t\n-0.461049874976434070,\t-0.461005505688958210,\t-0.460961135248968590,\t-0.460916763656576130,\t-0.460872390911891800,\t-0.460828017015025680,\t-0.460783641966090280,\t-0.460739265765195800,\t\n-0.460694888412453150,\t-0.460650509907973290,\t-0.460606130251867140,\t-0.460561749444245660,\t-0.460517367485219820,\t-0.460472984374900530,\t-0.460428600113398030,\t-0.460384214700824800,\t\n-0.460339828137291020,\t-0.460295440422907710,\t-0.460251051557785780,\t-0.460206661542036210,\t-0.460162270375770010,\t-0.460117878059097320,\t-0.460073484592130770,\t-0.460029089974980430,\t\n-0.459984694207757450,\t-0.459940297290572670,\t-0.459895899223537190,\t-0.459851500006761950,\t-0.459807099640357930,\t-0.459762698124435380,\t-0.459718295459106920,\t-0.459673891644482690,\t\n-0.459629486680673720,\t-0.459585080567791020,\t-0.459540673305945670,\t-0.459496264895248590,\t-0.459451855335810120,\t-0.459407444627742740,\t-0.459363032771156750,\t-0.459318619766163230,\t\n-0.459274205612873130,\t-0.459229790311397490,\t-0.459185373861847430,\t-0.459140956264333880,\t-0.459096537518967170,\t-0.459052117625859900,\t-0.459007696585122360,\t-0.458963274396865570,\t\n-0.458918851061200620,\t-0.458874426578238510,\t-0.458830000948090340,\t-0.458785574170866350,\t-0.458741146246679220,\t-0.458696717175639260,\t-0.458652286957857480,\t-0.458607855593445020,\t\n-0.458563423082512910,\t-0.458518989425172220,\t-0.458474554621534080,\t-0.458430118671708740,\t-0.458385681575808890,\t-0.458341243333944830,\t-0.458296803946227680,\t-0.458252363412768540,\t\n-0.458207921733678470,\t-0.458163478909068610,\t-0.458119034939049260,\t-0.458074589823733060,\t-0.458030143563230460,\t-0.457985696157652440,\t-0.457941247607110250,\t-0.457896797911714890,\t\n-0.457852347071577510,\t-0.457807895086809360,\t-0.457763441957521390,\t-0.457718987683824020,\t-0.457674532265830050,\t-0.457630075703649660,\t-0.457585617997394110,\t-0.457541159147174530,\t\n-0.457496699153102090,\t-0.457452238015287840,\t-0.457407775733842230,\t-0.457363312308877950,\t-0.457318847740505410,\t-0.457274382028835750,\t-0.457229915173980150,\t-0.457185447176049700,\t\n-0.457140978035155690,\t-0.457096507751409250,\t-0.457052036324920700,\t-0.457007563755802870,\t-0.456963090044166130,\t-0.456918615190121670,\t-0.456874139193780670,\t-0.456829662055254330,\t\n-0.456785183774653820,\t-0.456740704352089580,\t-0.456696223787674330,\t-0.456651742081518540,\t-0.456607259233733410,\t-0.456562775244430120,\t-0.456518290113719920,\t-0.456473803841713990,\t\n-0.456429316428523520,\t-0.456384827874258990,\t-0.456340338179033130,\t-0.456295847342956470,\t-0.456251355366140200,\t-0.456206862248695550,\t-0.456162367990733730,\t-0.456117872592365970,\t\n-0.456073376053702790,\t-0.456028878374856890,\t-0.455984379555938850,\t-0.455939879597059840,\t-0.455895378498331120,\t-0.455850876259863980,\t-0.455806372881769620,\t-0.455761868364159330,\t\n-0.455717362707143580,\t-0.455672855910835280,\t-0.455628347975344740,\t-0.455583838900783410,\t-0.455539328687262430,\t-0.455494817334893170,\t-0.455450304843786850,\t-0.455405791214053950,\t\n-0.455361276445807370,\t-0.455316760539157650,\t-0.455272243494215970,\t-0.455227725311093730,\t-0.455183205989902140,\t-0.455138685530752540,\t-0.455094163933756230,\t-0.455049641199024520,\t\n-0.455005117326667930,\t-0.454960592316799310,\t-0.454916066169529230,\t-0.454871538884968950,\t-0.454827010463229870,\t-0.454782480904423190,\t-0.454737950208660370,\t-0.454693418376051870,\t\n-0.454648885406710610,\t-0.454604351300747170,\t-0.454559816058272840,\t-0.454515279679398920,\t-0.454470742164236830,\t-0.454426203512897920,\t-0.454381663725493490,\t-0.454337122802134060,\t\n-0.454292580742932660,\t-0.454248037547999810,\t-0.454203493217446850,\t-0.454158947751385160,\t-0.454114401149926070,\t-0.454069853413181010,\t-0.454025304541260550,\t-0.453980754534277550,\t\n-0.453936203392342750,\t-0.453891651115567400,\t-0.453847097704062900,\t-0.453802543157940660,\t-0.453757987477312110,\t-0.453713430662288530,\t-0.453668872712980620,\t-0.453624313629501340,\t\n-0.453579753411961220,\t-0.453535192060471770,\t-0.453490629575144300,\t-0.453446065956090270,\t-0.453401501203421100,\t-0.453356935317247360,\t-0.453312368297682070,\t-0.453267800144835860,\t\n-0.453223230858820160,\t-0.453178660439746360,\t-0.453134088887725940,\t-0.453089516202870300,\t-0.453044942385290860,\t-0.453000367435098250,\t-0.452955791352405550,\t-0.452911214137323330,\t\n-0.452866635789963110,\t-0.452822056310436320,\t-0.452777475698854350,\t-0.452732893955328670,\t-0.452688311079969980,\t-0.452643727072891360,\t-0.452599141934203360,\t-0.452554555664017530,\t\n-0.452509968262445330,\t-0.452465379729598160,\t-0.452420790065587550,\t-0.452376199270525030,\t-0.452331607344521160,\t-0.452287014287689080,\t-0.452242420100139430,\t-0.452197824781983780,\t\n-0.452153228333333550,\t-0.452108630754300240,\t-0.452064032044995350,\t-0.452019432205530420,\t-0.451974831236016060,\t-0.451930229136565440,\t-0.451885625907289260,\t-0.451841021548299030,\t\n-0.451796416059706220,\t-0.451751809441622350,\t-0.451707201694159010,\t-0.451662592817427600,\t-0.451617982811538980,\t-0.451573371676606160,\t-0.451528759412739900,\t-0.451484146020051770,\t\n-0.451439531498653290,\t-0.451394915848655930,\t-0.451350299070171320,\t-0.451305681163310160,\t-0.451261062128185560,\t-0.451216441964908340,\t-0.451171820673590020,\t-0.451127198254342110,\t\n-0.451082574707276250,\t-0.451037950032503960,\t-0.450993324230136770,\t-0.450948697300285470,\t-0.450904069243063200,\t-0.450859440058580810,\t-0.450814809746949760,\t-0.450770178308281750,\t\n-0.450725545742688250,\t-0.450680912050280880,\t-0.450636277231170500,\t-0.450591641285470130,\t-0.450547004213290750,\t-0.450502366014743800,\t-0.450457726689940940,\t-0.450413086238993790,\t\n-0.450368444662013870,\t-0.450323801959112870,\t-0.450279158130401590,\t-0.450234513175993220,\t-0.450189867095998510,\t-0.450145219890529190,\t-0.450100571559696790,\t-0.450055922103612950,\t\n-0.450011271522389340,\t-0.449966619816136730,\t-0.449921966984968390,\t-0.449877313028995090,\t-0.449832657948328550,\t-0.449788001743080370,\t-0.449743344413362170,\t-0.449698685959285580,\t\n-0.449654026380962300,\t-0.449609365678503180,\t-0.449564703852021410,\t-0.449520040901627890,\t-0.449475376827434270,\t-0.449430711629552230,\t-0.449386045308093340,\t-0.449341377863169410,\t\n-0.449296709294892020,\t-0.449252039603372070,\t-0.449207368788722810,\t-0.449162696851055090,\t-0.449118023790480660,\t-0.449073349607111150,\t-0.449028674301058310,\t-0.448983997872433760,\t\n-0.448939320321349200,\t-0.448894641647915540,\t-0.448849961852246130,\t-0.448805280934451770,\t-0.448760598894644200,\t-0.448715915732935120,\t-0.448671231449436270,\t-0.448626546044259390,\t\n-0.448581859517515280,\t-0.448537171869317350,\t-0.448492483099776460,\t-0.448447793209004410,\t-0.448403102197112880,\t-0.448358410064213560,\t-0.448313716810418210,\t-0.448269022435838600,\t\n-0.448224326940585620,\t-0.448179630324772590,\t-0.448134932588510500,\t-0.448090233731911090,\t-0.448045533755086100,\t-0.448000832658147270,\t-0.447956130441206410,\t-0.447911427104374370,\t\n-0.447866722647764560,\t-0.447822017071487940,\t-0.447777310375656320,\t-0.447732602560381390,\t-0.447687893625774940,\t-0.447643183571948770,\t-0.447598472399014680,\t-0.447553760107083590,\t\n-0.447509046696268840,\t-0.447464332166681520,\t-0.447419616518433370,\t-0.447374899751636190,\t-0.447330181866401780,\t-0.447285462862841880,\t-0.447240742741067510,\t-0.447196021501192090,\t\n-0.447151299143326630,\t-0.447106575667582940,\t-0.447061851074072760,\t-0.447017125362908000,\t-0.446972398534200400,\t-0.446927670588061820,\t-0.446882941524603280,\t-0.446838211343938140,\t\n-0.446793480046177530,\t-0.446748747631433190,\t-0.446704014099816970,\t-0.446659279451440680,\t-0.446614543686416230,\t-0.446569806804855470,\t-0.446525068806869320,\t-0.446480329692571340,\t\n-0.446435589462072510,\t-0.446390848115484740,\t-0.446346105652919820,\t-0.446301362074489670,\t-0.446256617380306090,\t-0.446211871570480920,\t-0.446167124645125370,\t-0.446122376604352720,\t\n-0.446077627448274170,\t-0.446032877177001570,\t-0.445988125790646730,\t-0.445943373289321600,\t-0.445898619673138040,\t-0.445853864942207130,\t-0.445809109096642340,\t-0.445764352136554800,\t\n-0.445719594062056410,\t-0.445674834873258980,\t-0.445630074570274480,\t-0.445585313153214810,\t-0.445540550622191830,\t-0.445495786977316680,\t-0.445451022218702860,\t-0.445406256346461530,\t\n-0.445361489360704520,\t-0.445316721261543760,\t-0.445271952049091260,\t-0.445227181723458820,\t-0.445182410284757690,\t-0.445137637733101280,\t-0.445092864068600770,\t-0.445048089291368130,\t\n-0.445003313401515280,\t-0.444958536399154110,\t-0.444913758284396610,\t-0.444868979057354730,\t-0.444824198718139610,\t-0.444779417266864760,\t-0.444734634703641380,\t-0.444689851028581440,\t\n-0.444645066241796840,\t-0.444600280343399600,\t-0.444555493333501640,\t-0.444510705212214140,\t-0.444465915979650680,\t-0.444421125635922450,\t-0.444376334181141420,\t-0.444331541615419550,\t\n-0.444286747938868800,\t-0.444241953151601140,\t-0.444197157253728660,\t-0.444152360245362480,\t-0.444107562126616170,\t-0.444062762897600990,\t-0.444017962558428900,\t-0.443973161109211870,\t\n-0.443928358550061960,\t-0.443883554881091160,\t-0.443838750102411470,\t-0.443793944214134100,\t-0.443749137216372660,\t-0.443704329109238400,\t-0.443659519892843300,\t-0.443614709567299430,\t\n-0.443569898132718740,\t-0.443525085589213330,\t-0.443480271936895210,\t-0.443435457175875620,\t-0.443390641306268150,\t-0.443345824328184090,\t-0.443301006241735520,\t-0.443256187047034340,\t\n-0.443211366744192760,\t-0.443166545333322780,\t-0.443121722814535600,\t-0.443076899187944910,\t-0.443032074453661990,\t-0.442987248611798890,\t-0.442942421662467610,\t-0.442897593605780350,\t\n-0.442852764441849070,\t-0.442807934170785900,\t-0.442763102792702030,\t-0.442718270307711270,\t-0.442673436715924850,\t-0.442628602017454800,\t-0.442583766212413240,\t-0.442538929300912260,\t\n-0.442494091283063990,\t-0.442449252158979680,\t-0.442404411928773060,\t-0.442359570592555370,\t-0.442314728150438760,\t-0.442269884602535360,\t-0.442225039948957180,\t-0.442180194189816470,\t\n-0.442135347325225250,\t-0.442090499355294870,\t-0.442045650280139040,\t-0.442000800099869080,\t-0.441955948814597100,\t-0.441911096424435270,\t-0.441866242929495720,\t-0.441821388329890540,\t\n-0.441776532625731080,\t-0.441731675817131130,\t-0.441686817904201940,\t-0.441641958887055710,\t-0.441597098765804610,\t-0.441552237540560780,\t-0.441507375211436290,\t-0.441462511778543400,\t\n-0.441417647241993450,\t-0.441372781601900190,\t-0.441327914858374910,\t-0.441283047011529870,\t-0.441238178061477250,\t-0.441193308008329180,\t-0.441148436852197790,\t-0.441103564593195330,\t\n-0.441058691231433210,\t-0.441013816767025110,\t-0.440968941200082450,\t-0.440924064530717470,\t-0.440879186759042360,\t-0.440834307885169200,\t-0.440789427909210330,\t-0.440744546831277890,\t\n-0.440699664651483250,\t-0.440654781369940300,\t-0.440609896986760340,\t-0.440565011502055680,\t-0.440520124915938500,\t-0.440475237228520940,\t-0.440430348439915350,\t-0.440385458550233090,\t\n-0.440340567559587950,\t-0.440295675468091400,\t-0.440250782275855680,\t-0.440205887982992980,\t-0.440160992589615610,\t-0.440116096095835680,\t-0.440071198501765570,\t-0.440026299807516620,\t\n-0.439981400013202740,\t-0.439936499118935400,\t-0.439891597124826780,\t-0.439846694030989140,\t-0.439801789837534820,\t-0.439756884544575950,\t-0.439711978152224130,\t-0.439667070660593180,\t\n-0.439622162069794490,\t-0.439577252379940440,\t-0.439532341591143240,\t-0.439487429703515230,\t-0.439442516717168610,\t-0.439397602632215670,\t-0.439352687448767990,\t-0.439307771166939310,\t\n-0.439262853786841270,\t-0.439217935308586050,\t-0.439173015732286010,\t-0.439128095058053450,\t-0.439083173286000660,\t-0.439038250416239120,\t-0.438993326448882730,\t-0.438948401384043010,\t\n-0.438903475221832320,\t-0.438858547962362950,\t-0.438813619605747220,\t-0.438768690152097410,\t-0.438723759601525880,\t-0.438678827954144200,\t-0.438633895210066180,\t-0.438588961369403450,\t\n-0.438544026432268310,\t-0.438499090398773110,\t-0.438454153269030200,\t-0.438409215043151890,\t-0.438364275721250580,\t-0.438319335303437750,\t-0.438274393789827350,\t-0.438229451180531030,\t\n-0.438184507475661010,\t-0.438139562675329770,\t-0.438094616779649610,\t-0.438049669788732890,\t-0.438004721702692060,\t-0.437959772521638540,\t-0.437914822245686450,\t-0.437869870874947280,\t\n-0.437824918409533470,\t-0.437779964849557330,\t-0.437735010195131280,\t-0.437690054446367720,\t-0.437645097603378160,\t-0.437600139666276760,\t-0.437555180635174960,\t-0.437510220510185180,\t\n-0.437465259291419880,\t-0.437420296978991430,\t-0.437375333573012230,\t-0.437330369073594680,\t-0.437285403480850430,\t-0.437240436794893490,\t-0.437195469015835450,\t-0.437150500143788700,\t\n-0.437105530178865720,\t-0.437060559121178920,\t-0.437015586970840750,\t-0.436970613727962750,\t-0.436925639392659100,\t-0.436880663965041270,\t-0.436835687445221830,\t-0.436790709833313140,\t\n-0.436745731129427720,\t-0.436700751333677920,\t-0.436655770446176260,\t-0.436610788467034380,\t-0.436565805396366360,\t-0.436520821234283760,\t-0.436475835980899170,\t-0.436430849636324950,\t\n-0.436385862200673600,\t-0.436340873674057660,\t-0.436295884056588650,\t-0.436250893348380800,\t-0.436205901549545690,\t-0.436160908660195800,\t-0.436115914680443690,\t-0.436070919610401730,\t\n-0.436025923450182540,\t-0.435980926199898480,\t-0.435935927859661340,\t-0.435890928429585160,\t-0.435845927909781720,\t-0.435800926300363380,\t-0.435755923601442770,\t-0.435710919813132310,\t\n-0.435665914935544630,\t-0.435620908968791300,\t-0.435575901912986510,\t-0.435530893768241940,\t-0.435485884534670190,\t-0.435440874212383700,\t-0.435395862801495000,\t-0.435350850302116680,\t\n-0.435305836714361240,\t-0.435260822038341160,\t-0.435215806274168280,\t-0.435170789421956640,\t-0.435125771481818080,\t-0.435080752453865020,\t-0.435035732338210130,\t-0.434990711134965900,\t\n-0.434945688844244890,\t-0.434900665466158850,\t-0.434855641000821970,\t-0.434810615448345980,\t-0.434765588808843420,\t-0.434720561082426900,\t-0.434675532269209020,\t-0.434630502369302290,\t\n-0.434585471382819280,\t-0.434540439309871800,\t-0.434495406150574030,\t-0.434450371905037710,\t-0.434405336573375540,\t-0.434360300155699990,\t-0.434315262652123670,\t-0.434270224062759170,\t\n-0.434225184387718340,\t-0.434180143627115380,\t-0.434135101781062020,\t-0.434090058849670950,\t-0.434045014833054690,\t-0.433999969731325930,\t-0.433954923544597190,\t-0.433909876272981170,\t\n-0.433864827916589700,\t-0.433819778475536880,\t-0.433774727949934660,\t-0.433729676339895620,\t-0.433684623645532400,\t-0.433639569866957620,\t-0.433594515004283920,\t-0.433549459057623100,\t\n-0.433504402027089450,\t-0.433459343912794780,\t-0.433414284714851770,\t-0.433369224433373060,\t-0.433324163068471270,\t-0.433279100620259090,\t-0.433234037088849110,\t-0.433188972474353280,\t\n-0.433143906776885800,\t-0.433098839996558570,\t-0.433053772133484280,\t-0.433008703187775510,\t-0.432963633159544950,\t-0.432918562048905330,\t-0.432873489855968570,\t-0.432828416580848810,\t\n-0.432783342223658050,\t-0.432738266784508880,\t-0.432693190263514100,\t-0.432648112660786340,\t-0.432603033976438290,\t-0.432557954210582630,\t-0.432512873363332110,\t-0.432467791434798630,\t\n-0.432422708425096390,\t-0.432377624334337460,\t-0.432332539162634420,\t-0.432287452910100070,\t-0.432242365576847090,\t-0.432197277162988170,\t-0.432152187668635280,\t-0.432107097093902710,\t\n-0.432062005438902390,\t-0.432016912703747040,\t-0.431971818888549410,\t-0.431926723993422300,\t-0.431881628018478290,\t-0.431836530963830290,\t-0.431791432829590090,\t-0.431746333615872170,\t\n-0.431701233322788370,\t-0.431656131950451490,\t-0.431611029498974340,\t-0.431565925968469540,\t-0.431520821359049960,\t-0.431475715670827540,\t-0.431430608903916600,\t-0.431385501058429150,\t\n-0.431340392134478000,\t-0.431295282132175770,\t-0.431250171051635430,\t-0.431205058892969620,\t-0.431159945656291120,\t-0.431114831341712020,\t-0.431069715949346620,\t-0.431024599479306940,\t\n-0.430979481931705770,\t-0.430934363306655850,\t-0.430889243604270060,\t-0.430844122824661170,\t-0.430799000967941160,\t-0.430753878034224440,\t-0.430708754023623020,\t-0.430663628936249710,\t\n-0.430618502772217360,\t-0.430573375531638710,\t-0.430528247214626620,\t-0.430483117821293950,\t-0.430437987351752700,\t-0.430392855806117250,\t-0.430347723184499650,\t-0.430302589487012780,\t\n-0.430257454713769420,\t-0.430212318864882370,\t-0.430167181940464600,\t-0.430122043940628030,\t-0.430076904865487160,\t-0.430031764715154030,\t-0.429986623489741540,\t-0.429941481189362430,\t\n-0.429896337814129610,\t-0.429851193364156000,\t-0.429806047839554340,\t-0.429760901240437590,\t-0.429715753566917820,\t-0.429670604819109400,\t-0.429625454997124510,\t-0.429580304101076000,\t\n-0.429535152131076740,\t-0.429489999087239560,\t-0.429444844969677390,\t-0.429399689778502290,\t-0.429354533513828800,\t-0.429309376175768980,\t-0.429264217764435680,\t-0.429219058279941830,\t\n-0.429173897722400390,\t-0.429128736091924150,\t-0.429083573388626130,\t-0.429038409612618300,\t-0.428993244764015290,\t-0.428948078842929180,\t-0.428902911849472880,\t-0.428857743783759290,\t\n-0.428812574645901330,\t-0.428767404436011910,\t-0.428722233154203210,\t-0.428677060800589760,\t-0.428631887375283630,\t-0.428586712878397720,\t-0.428541537310045130,\t-0.428496360670338640,\t\n-0.428451182959391220,\t-0.428406004177315890,\t-0.428360824324224730,\t-0.428315643400232320,\t-0.428270461405450830,\t-0.428225278339993130,\t-0.428180094203972290,\t-0.428134908997501170,\t\n-0.428089722720692790,\t-0.428044535373659330,\t-0.427999346956515310,\t-0.427954157469372930,\t-0.427908966912345150,\t-0.427863775285544920,\t-0.427818582589085280,\t-0.427773388823079190,\t\n-0.427728193987639620,\t-0.427682998082878800,\t-0.427637801108911250,\t-0.427592603065849170,\t-0.427547403953805640,\t-0.427502203772893610,\t-0.427457002523225990,\t-0.427411800204915930,\t\n-0.427366596818075540,\t-0.427321392362819460,\t-0.427276186839259940,\t-0.427230980247509880,\t-0.427185772587682420,\t-0.427140563859890520,\t-0.427095354064247200,\t-0.427050143200865540,\t\n-0.427004931269858500,\t-0.426959718271338270,\t-0.426914504205419600,\t-0.426869289072214660,\t-0.426824072871836550,\t-0.426778855604398210,\t-0.426733637270012680,\t-0.426688417868793140,\t\n-0.426643197400851710,\t-0.426597975866303100,\t-0.426552753265259540,\t-0.426507529597834110,\t-0.426462304864139890,\t-0.426417079064289830,\t-0.426371852198397130,\t-0.426326624266574810,\t\n-0.426281395268935100,\t-0.426236165205592710,\t-0.426190934076659870,\t-0.426145701882249760,\t-0.426100468622475360,\t-0.426055234297449790,\t-0.426009998907286140,\t-0.425964762452096690,\t\n-0.425919524931996140,\t-0.425874286347096730,\t-0.425829046697511650,\t-0.425783805983353970,\t-0.425738564204736770,\t-0.425693321361773120,\t-0.425648077454576170,\t-0.425602832483258250,\t\n-0.425557586447934070,\t-0.425512339348715910,\t-0.425467091185716910,\t-0.425421841959050140,\t-0.425376591668828800,\t-0.425331340315165950,\t-0.425286087898173960,\t-0.425240834417967560,\t\n-0.425195579874659110,\t-0.425150324268361630,\t-0.425105067599188420,\t-0.425059809867252500,\t-0.425014551072667060,\t-0.424969291215545280,\t-0.424924030295999400,\t-0.424878768314144280,\t\n-0.424833505270092230,\t-0.424788241163956470,\t-0.424742975995850040,\t-0.424697709765886220,\t-0.424652442474178100,\t-0.424607174120838040,\t-0.424561904705980870,\t-0.424516634229718970,\t\n-0.424471362692165450,\t-0.424426090093433570,\t-0.424380816433636400,\t-0.424335541712887230,\t-0.424290265931299200,\t-0.424244989088984730,\t-0.424199711186058540,\t-0.424154432222633100,\t\n-0.424109152198821560,\t-0.424063871114737150,\t-0.424018588970493050,\t-0.423973305766202510,\t-0.423928021501978670,\t-0.423882736177933980,\t-0.423837449794183310,\t-0.423792162350838940,\t\n-0.423746873848014180,\t-0.423701584285822270,\t-0.423656293664376400,\t-0.423611001983789760,\t-0.423565709244175640,\t-0.423520415445646450,\t-0.423475120588316990,\t-0.423429824672299730,\t\n-0.423384527697707960,\t-0.423339229664654810,\t-0.423293930573253600,\t-0.423248630423617600,\t-0.423203329215859180,\t-0.423158026950093250,\t-0.423112723626432260,\t-0.423067419244989470,\t\n-0.423022113805878120,\t-0.422976807309211500,\t-0.422931499755102860,\t-0.422886191143665490,\t-0.422840881475011810,\t-0.422795570749256720,\t-0.422750258966512690,\t-0.422704946126893080,\t\n-0.422659632230511060,\t-0.422614317277479950,\t-0.422569001267913080,\t-0.422523684201922880,\t-0.422478366079624250,\t-0.422433046901129760,\t-0.422387726666552610,\t-0.422342405376006150,\t\n-0.422297083029603670,\t-0.422251759627458530,\t-0.422206435169683920,\t-0.422161109656392470,\t-0.422115783087699040,\t-0.422070455463716130,\t-0.422025126784557110,\t-0.421979797050335280,\t\n-0.421934466261163930,\t-0.421889134417156420,\t-0.421843801518425320,\t-0.421798467565085430,\t-0.421753132557249440,\t-0.421707796495030600,\t-0.421662459378542300,\t-0.421617121207897790,\t\n-0.421571781983210490,\t-0.421526441704593750,\t-0.421481100372160130,\t-0.421435757986024510,\t-0.421390414546299550,\t-0.421345070053098510,\t-0.421299724506534800,\t-0.421254377906721820,\t\n-0.421209030253772820,\t-0.421163681547801320,\t-0.421118331788919780,\t-0.421072980977243220,\t-0.421027629112884220,\t-0.420982276195956130,\t-0.420936922226572310,\t-0.420891567204846220,\t\n-0.420846211130891270,\t-0.420800854004820700,\t-0.420755495826747260,\t-0.420710136596785860,\t-0.420664776315049120,\t-0.420619414981650400,\t-0.420574052596703160,\t-0.420528689160320820,\t\n-0.420483324672616730,\t-0.420437959133703580,\t-0.420392592543696260,\t-0.420347224902707480,\t-0.420301856210850700,\t-0.420256486468239210,\t-0.420211115674986540,\t-0.420165743831206030,\t\n-0.420120370937011210,\t-0.420074996992514660,\t-0.420029621997831390,\t-0.419984245953074100,\t-0.419938868858356180,\t-0.419893490713791060,\t-0.419848111519492250,\t-0.419802731275573160,\t\n-0.419757349982146420,\t-0.419711967639327110,\t-0.419666584247227910,\t-0.419621199805962240,\t-0.419575814315643560,\t-0.419530427776385330,\t-0.419485040188301020,\t-0.419439651551504140,\t\n-0.419394261866107340,\t-0.419348871132225690,\t-0.419303479349971810,\t-0.419258086519459280,\t-0.419212692640801520,\t-0.419167297714112040,\t-0.419121901739504310,\t-0.419076504717091010,\t\n-0.419031106646987230,\t-0.418985707529305750,\t-0.418940307364159940,\t-0.418894906151663360,\t-0.418849503891929540,\t-0.418804100585072000,\t-0.418758696231204150,\t-0.418713290830438790,\t\n-0.418667884382890990,\t-0.418622476888673490,\t-0.418577068347899760,\t-0.418531658760683380,\t-0.418486248127137860,\t-0.418440836447376730,\t-0.418395423721513500,\t-0.418350009949660930,\t\n-0.418304595131934080,\t-0.418259179268445800,\t-0.418213762359309570,\t-0.418168344404638900,\t-0.418122925404547370,\t-0.418077505359148560,\t-0.418032084268555980,\t-0.417986662132882380,\t\n-0.417941238952242890,\t-0.417895814726750360,\t-0.417850389456518260,\t-0.417804963141660210,\t-0.417759535782289750,\t-0.417714107378520440,\t-0.417668677930465030,\t-0.417623247438238750,\t\n-0.417577815901954360,\t-0.417532383321725430,\t-0.417486949697665530,\t-0.417441515029888300,\t-0.417396079318507250,\t-0.417350642563635970,\t-0.417305204765387290,\t-0.417259765923876420,\t\n-0.417214326039216150,\t-0.417168885111520060,\t-0.417123443140901770,\t-0.417078000127474870,\t-0.417032556071352920,\t-0.416987110972648790,\t-0.416941664831477710,\t-0.416896217647952480,\t\n-0.416850769422186680,\t-0.416805320154294000,\t-0.416759869844387950,\t-0.416714418492582280,\t-0.416668966098990570,\t-0.416623512663725600,\t-0.416578058186902630,\t-0.416532602668634570,\t\n-0.416487146109034980,\t-0.416441688508217560,\t-0.416396229866295870,\t-0.416350770183383620,\t-0.416305309459593650,\t-0.416259847695041210,\t-0.416214384889839200,\t-0.416168921044101140,\t\n-0.416123456157940830,\t-0.416077990231471850,\t-0.416032523264807940,\t-0.415987055258062680,\t-0.415941586211348970,\t-0.415896116124782110,\t-0.415850644998474960,\t-0.415805172832541260,\t\n-0.415759699627094530,\t-0.415714225382248610,\t-0.415668750098117100,\t-0.415623273774813730,\t-0.415577796412451410,\t-0.415532318011145320,\t-0.415486838571008490,\t-0.415441358092154540,\t\n-0.415395876574697230,\t-0.415350394018750180,\t-0.415304910424427190,\t-0.415259425791841890,\t-0.415213940121107240,\t-0.415168453412338550,\t-0.415122965665648710,\t-0.415077476881151490,\t\n-0.415031987058960550,\t-0.414986496199189590,\t-0.414941004301952470,\t-0.414895511367362020,\t-0.414850017395533570,\t-0.414804522386580110,\t-0.414759026340615290,\t-0.414713529257752960,\t\n-0.414668031138106800,\t-0.414622531981790550,\t-0.414577031788917970,\t-0.414531530559602010,\t-0.414486028293957980,\t-0.414440524992098940,\t-0.414395020654138580,\t-0.414349515280190650,\t\n-0.414304008870368940,\t-0.414258501424787210,\t-0.414212992943558400,\t-0.414167483426797990,\t-0.414121972874618770,\t-0.414076461287134660,\t-0.414030948664459440,\t-0.413985435006706810,\t\n-0.413939920313990570,\t-0.413894404586424570,\t-0.413848887824121710,\t-0.413803370027197470,\t-0.413757851195764800,\t-0.413712331329937510,\t-0.413666810429829390,\t-0.413621288495554240,\t\n-0.413575765527225860,\t-0.413530241524957260,\t-0.413484716488863870,\t-0.413439190419058630,\t-0.413393663315655520,\t-0.413348135178768170,\t-0.413302606008510540,\t-0.413257075804996380,\t\n-0.413211544568339470,\t-0.413166012298652960,\t-0.413120478996052200,\t-0.413074944660650260,\t-0.413029409292560930,\t-0.412983872891898140,\t-0.412938335458775620,\t-0.412892796993307280,\t\n-0.412847257495606910,\t-0.412801716965787600,\t-0.412756175403964810,\t-0.412710632810251610,\t-0.412665089184761800,\t-0.412619544527609290,\t-0.412573998838907880,\t-0.412528452118771480,\t\n-0.412482904367314000,\t-0.412437355584648390,\t-0.412391805770890240,\t-0.412346254926152570,\t-0.412300703050549280,\t-0.412255150144194170,\t-0.412209596207201270,\t-0.412164041239684310,\t\n-0.412118485241756480,\t-0.412072928213533200,\t-0.412027370155127640,\t-0.411981811066653660,\t-0.411936250948225110,\t-0.411890689799955970,\t-0.411845127621960070,\t-0.411799564414351390,\t\n-0.411754000177242950,\t-0.411708434910750380,\t-0.411662868614986690,\t-0.411617301290065800,\t-0.411571732936101660,\t-0.411526163553208260,\t-0.411480593141499370,\t-0.411435021701088250,\t\n-0.411389449232090310,\t-0.411343875734618840,\t-0.411298301208787630,\t-0.411252725654710660,\t-0.411207149072501890,\t-0.411161571462275220,\t-0.411115992824144630,\t-0.411070413158223290,\t\n-0.411024832464626680,\t-0.410979250743468030,\t-0.410933667994861250,\t-0.410888084218920260,\t-0.410842499415759070,\t-0.410796913585491640,\t-0.410751326728231110,\t-0.410705738844093120,\t\n-0.410660149933190720,\t-0.410614559995638010,\t-0.410568969031548820,\t-0.410523377041037250,\t-0.410477784024217250,\t-0.410432189981202790,\t-0.410386594912107050,\t-0.410340998817045610,\t\n-0.410295401696131660,\t-0.410249803549479260,\t-0.410204204377202290,\t-0.410158604179414850,\t-0.410113002956230880,\t-0.410067400707764430,\t-0.410021797434128640,\t-0.409976193135439150,\t\n-0.409930587811809190,\t-0.409884981463352780,\t-0.409839374090183890,\t-0.409793765692416600,\t-0.409748156270164920,\t-0.409702545823542760,\t-0.409656934352663480,\t-0.409611321857642710,\t\n-0.409565708338593570,\t-0.409520093795630200,\t-0.409474478228866570,\t-0.409428861638416740,\t-0.409383244024394800,\t-0.409337625386913870,\t-0.409292005726089760,\t-0.409246385042035590,\t\n-0.409200763334865490,\t-0.409155140604693430,\t-0.409109516851633550,\t-0.409063892075799910,\t-0.409018266277306470,\t-0.408972639456266610,\t-0.408927011612795930,\t-0.408881382747007750,\t\n-0.408835752859016130,\t-0.408790121948935100,\t-0.408744490016878740,\t-0.408698857062961160,\t-0.408653223087295680,\t-0.408607588089997920,\t-0.408561952071181180,\t-0.408516315030959590,\t\n-0.408470676969447170,\t-0.408425037886758100,\t-0.408379397783006410,\t-0.408333756658306240,\t-0.408288114512770810,\t-0.408242471346515980,\t-0.408196827159654940,\t-0.408151181952301820,\t\n-0.408105535724570760,\t-0.408059888476575870,\t-0.408014240208431240,\t-0.407968590920250230,\t-0.407922940612148510,\t-0.407877289284239500,\t-0.407831636936637210,\t-0.407785983569455830,\t\n-0.407740329182809560,\t-0.407694673776812400,\t-0.407649017351578550,\t-0.407603359907221410,\t-0.407557701443856610,\t-0.407512041961597570,\t-0.407466381460558470,\t-0.407420719940853380,\t\n-0.407375057402596500,\t-0.407329393845902000,\t-0.407283729270883190,\t-0.407238063677655860,\t-0.407192397066333370,\t-0.407146729437029840,\t-0.407101060789859530,\t-0.407055391124936610,\t\n-0.407009720442375160,\t-0.406964048742289420,\t-0.406918376024793580,\t-0.406872702290000940,\t-0.406827027538027410,\t-0.406781351768986280,\t-0.406735674982991790,\t-0.406689997180158080,\t\n-0.406644318360599390,\t-0.406598638524429900,\t-0.406552957671763030,\t-0.406507275802714560,\t-0.406461592917397920,\t-0.406415909015927280,\t-0.406370224098416890,\t-0.406324538164980880,\t\n-0.406278851215733590,\t-0.406233163250789120,\t-0.406187474270260970,\t-0.406141784274264950,\t-0.406096093262914460,\t-0.406050401236323690,\t-0.406004708194606990,\t-0.405959014137878490,\t\n-0.405913319066252440,\t-0.405867622979842300,\t-0.405821925878763870,\t-0.405776227763130660,\t-0.405730528633056920,\t-0.405684828488656830,\t-0.405639127330044650,\t-0.405593425157334650,\t\n-0.405547721970641100,\t-0.405502017770077440,\t-0.405456312555759530,\t-0.405410606327800850,\t-0.405364899086315680,\t-0.405319190831418210,\t-0.405273481563222790,\t-0.405227771281843670,\t\n-0.405182059987394320,\t-0.405136347679990630,\t-0.405090634359746020,\t-0.405044920026774890,\t-0.404999204681191440,\t-0.404953488323109960,\t-0.404907770952644740,\t-0.404862052569910150,\t\n-0.404816333175019580,\t-0.404770612768089010,\t-0.404724891349231900,\t-0.404679168918562540,\t-0.404633445476195290,\t-0.404587721022244440,\t-0.404541995556824240,\t-0.404496269080048270,\t\n-0.404450541592032420,\t-0.404404813092890230,\t-0.404359083582735980,\t-0.404313353061684090,\t-0.404267621529848740,\t-0.404221888987344400,\t-0.404176155434285310,\t-0.404130420870785820,\t\n-0.404084685296959460,\t-0.404038948712922230,\t-0.403993211118787610,\t-0.403947472514669950,\t-0.403901732900683650,\t-0.403855992276942970,\t-0.403810250643562350,\t-0.403764508000655280,\t\n-0.403718764348337760,\t-0.403673019686723310,\t-0.403627274015926300,\t-0.403581527336061120,\t-0.403535779647242130,\t-0.403490030949583690,\t-0.403444281243200140,\t-0.403398530528205120,\t\n-0.403352778804714540,\t-0.403307026072842080,\t-0.403261272332701980,\t-0.403215517584408770,\t-0.403169761828076730,\t-0.403124005063820290,\t-0.403078247291753010,\t-0.403032488511990920,\t\n-0.402986728724647640,\t-0.402940967929837520,\t-0.402895206127674990,\t-0.402849443318274440,\t-0.402803679501750280,\t-0.402757914678216920,\t-0.402712148847787940,\t-0.402666382010579470,\t\n-0.402620614166704970,\t-0.402574845316278960,\t-0.402529075459415850,\t-0.402483304596230050,\t-0.402437532726835970,\t-0.402391759851347290,\t-0.402345985969879970,\t-0.402300211082547710,\t\n-0.402254435189464910,\t-0.402208658290746040,\t-0.402162880386505490,\t-0.402117101476857750,\t-0.402071321561917270,\t-0.402025540641797690,\t-0.401979758716615070,\t-0.401933975786483040,\t\n-0.401888191851516090,\t-0.401842406911828600,\t-0.401796620967535160,\t-0.401750834018750110,\t-0.401705046065587210,\t-0.401659257108162530,\t-0.401613467146589630,\t-0.401567676180983100,\t\n-0.401521884211457400,\t-0.401476091238126940,\t-0.401430297261106290,\t-0.401384502280509920,\t-0.401338706296452240,\t-0.401292909309047040,\t-0.401247111318410340,\t-0.401201312324655830,\t\n-0.401155512327898090,\t-0.401109711328251570,\t-0.401063909325830750,\t-0.401018106320750190,\t-0.400972302313123530,\t-0.400926497303066900,\t-0.400880691290694040,\t-0.400834884276119460,\t\n-0.400789076259457700,\t-0.400743267240823210,\t-0.400697457220330570,\t-0.400651646198094290,\t-0.400605834174228070,\t-0.400560021148848090,\t-0.400514207122068030,\t-0.400468392094002480,\t\n-0.400422576064765940,\t-0.400376759034472950,\t-0.400330941003238070,\t-0.400285121971175050,\t-0.400239301938400020,\t-0.400193480905026710,\t-0.400147658871169710,\t-0.400101835836943590,\t\n-0.400056011802462860,\t-0.400010186767842110,\t-0.399964360733195860,\t-0.399918533698637950,\t-0.399872705664284460,\t-0.399826876630249240,\t-0.399781046596646820,\t-0.399735215563591820,\t\n-0.399689383531198760,\t-0.399643550499582220,\t-0.399597716468856000,\t-0.399551881439136280,\t-0.399506045410536910,\t-0.399460208383172420,\t-0.399414370357157380,\t-0.399368531332606410,\t\n-0.399322691309634100,\t-0.399276850288355130,\t-0.399231008268883140,\t-0.399185165251334520,\t-0.399139321235822910,\t-0.399093476222463050,\t-0.399047630211369460,\t-0.399001783202656830,\t\n-0.398955935196439740,\t-0.398910086192831970,\t-0.398864236191949830,\t-0.398818385193907110,\t-0.398772533198818390,\t-0.398726680206798360,\t-0.398680826217961640,\t-0.398634971232422810,\t\n-0.398589115250296610,\t-0.398543258271696730,\t-0.398497400296739580,\t-0.398451541325538890,\t-0.398405681358209420,\t-0.398359820394865670,\t-0.398313958435622400,\t-0.398268095480594220,\t\n-0.398222231529895830,\t-0.398176366583641030,\t-0.398130500641946110,\t-0.398084633704924970,\t-0.398038765772692260,\t-0.397992896845362600,\t-0.397947026923050730,\t-0.397901156005871230,\t\n-0.397855284093938890,\t-0.397809411187367510,\t-0.397763537286273450,\t-0.397717662390770500,\t-0.397671786500973400,\t-0.397625909616996840,\t-0.397580031738955510,\t-0.397534152866964140,\t\n-0.397488273001136540,\t-0.397442392141589050,\t-0.397396510288435590,\t-0.397350627441790890,\t-0.397304743601769590,\t-0.397258858768486430,\t-0.397212972942056150,\t-0.397167086122593380,\t\n-0.397121198310212140,\t-0.397075309505028730,\t-0.397029419707156990,\t-0.396983528916711740,\t-0.396937637133807640,\t-0.396891744358559450,\t-0.396845850591081910,\t-0.396799955831488920,\t\n-0.396754060079896890,\t-0.396708163336419670,\t-0.396662265601172070,\t-0.396616366874268770,\t-0.396570467155824560,\t-0.396524566445954240,\t-0.396478664744772450,\t-0.396432762052393190,\t\n-0.396386858368932840,\t-0.396340953694505340,\t-0.396295048029225490,\t-0.396249141373207990,\t-0.396203233726567630,\t-0.396157325089419200,\t-0.396111415461876670,\t-0.396065504844056340,\t\n-0.396019593236072330,\t-0.395973680638039280,\t-0.395927767050072040,\t-0.395881852472285410,\t-0.395835936904794130,\t-0.395790020347713050,\t-0.395744102801156020,\t-0.395698184265239620,\t\n-0.395652264740077700,\t-0.395606344225785170,\t-0.395560422722476770,\t-0.395514500230267300,\t-0.395468576749271610,\t-0.395422652279604440,\t-0.395376726821379810,\t-0.395330800374714240,\t\n-0.395284872939721590,\t-0.395238944516516810,\t-0.395193015105214650,\t-0.395147084705929960,\t-0.395101153318777600,\t-0.395055220943872300,\t-0.395009287581328140,\t-0.394963353231261580,\t\n-0.394917417893786650,\t-0.394871481569018190,\t-0.394825544257071000,\t-0.394779605958059940,\t-0.394733666672099910,\t-0.394687726399304880,\t-0.394641785139791310,\t-0.394595842893673330,\t\n-0.394549899661065680,\t-0.394503955442083330,\t-0.394458010236841130,\t-0.394412064045453810,\t-0.394366116868036410,\t-0.394320168704702880,\t-0.394274219555569740,\t-0.394228269420751010,\t\n-0.394182318300361660,\t-0.394136366194516470,\t-0.394090413103330430,\t-0.394044459026918310,\t-0.393998503965394210,\t-0.393952547918874680,\t-0.393906590887473820,\t-0.393860632871306460,\t\n-0.393814673870487520,\t-0.393768713885131850,\t-0.393722752915354470,\t-0.393676790961270170,\t-0.393630828022993040,\t-0.393584864100639700,\t-0.393538899194324220,\t-0.393492933304161460,\t\n-0.393446966430266390,\t-0.393400998572753850,\t-0.393355029731738860,\t-0.393309059907335500,\t-0.393263089099660230,\t-0.393217117308827300,\t-0.393171144534951560,\t-0.393125170778147960,\t\n-0.393079196038531480,\t-0.393033220316216960,\t-0.392987243611319370,\t-0.392941265923952900,\t-0.392895287254234060,\t-0.392849307602276990,\t-0.392803326968196640,\t-0.392757345352107990,\t\n-0.392711362754125990,\t-0.392665379174365610,\t-0.392619394612941710,\t-0.392573409069968570,\t-0.392527422545562670,\t-0.392481435039838290,\t-0.392435446552910240,\t-0.392389457084893640,\t\n-0.392343466635903360,\t-0.392297475206054400,\t-0.392251482795461790,\t-0.392205489404239660,\t-0.392159495032504580,\t-0.392113499680370790,\t-0.392067503347953260,\t-0.392021506035366950,\t\n-0.391975507742726880,\t-0.391929508470148070,\t-0.391883508217744590,\t-0.391837506985633240,\t-0.391791504773928100,\t-0.391745501582744180,\t-0.391699497412196560,\t-0.391653492262400150,\t\n-0.391607486133470020,\t-0.391561479025521130,\t-0.391515470938667790,\t-0.391469461873026560,\t-0.391423451828711690,\t-0.391377440805838190,\t-0.391331428804521100,\t-0.391285415824875420,\t\n-0.391239401867016170,\t-0.391193386931057650,\t-0.391147371017116440,\t-0.391101354125306830,\t-0.391055336255743850,\t-0.391009317408542500,\t-0.390963297583817810,\t-0.390917276781684970,\t\n-0.390871255002258890,\t-0.390825232245653850,\t-0.390779208511986550,\t-0.390733183801371290,\t-0.390687158113922960,\t-0.390641131449756820,\t-0.390595103808987820,\t-0.390549075191731100,\t\n-0.390503045598100840,\t-0.390457015028213780,\t-0.390410983482184170,\t-0.390364950960127130,\t-0.390318917462157690,\t-0.390272882988390970,\t-0.390226847538942050,\t-0.390180811113926000,\t\n-0.390134773713457120,\t-0.390088735337652090,\t-0.390042695986625220,\t-0.389996655660491690,\t-0.389950614359366450,\t-0.389904572083364650,\t-0.389858528832601470,\t-0.389812484607191980,\t\n-0.389766439407250420,\t-0.389720393232893590,\t-0.389674346084235790,\t-0.389628297961392140,\t-0.389582248864477730,\t-0.389536198793607680,\t-0.389490147748897120,\t-0.389444095730461240,\t\n-0.389398042738414270,\t-0.389351988772873030,\t-0.389305933833951790,\t-0.389259877921765750,\t-0.389213821036429990,\t-0.389167763178059680,\t-0.389121704346769960,\t-0.389075644542675180,\t\n-0.389029583765892140,\t-0.388983522016535080,\t-0.388937459294719230,\t-0.388891395600559740,\t-0.388845330934171730,\t-0.388799265295670440,\t-0.388753198685170940,\t-0.388707131102787650,\t\n-0.388661062548637360,\t-0.388614993022834420,\t-0.388568922525493960,\t-0.388522851056731230,\t-0.388476778616661360,\t-0.388430705205399570,\t-0.388384630823060180,\t-0.388338555469760040,\t\n-0.388292479145613490,\t-0.388246401850735720,\t-0.388200323585241980,\t-0.388154244349247450,\t-0.388108164142867250,\t-0.388062082966216690,\t-0.388016000819410070,\t-0.387969917702564280,\t\n-0.387923833615793750,\t-0.387877748559213590,\t-0.387831662532939050,\t-0.387785575537085310,\t-0.387739487571767680,\t-0.387693398637100560,\t-0.387647308733200690,\t-0.387601217860182590,\t\n-0.387555126018161440,\t-0.387509033207252440,\t-0.387462939427570870,\t-0.387416844679231990,\t-0.387370748962350960,\t-0.387324652277042270,\t-0.387278554623422750,\t-0.387232456001606830,\t\n-0.387186356411709790,\t-0.387140255853846870,\t-0.387094154328133270,\t-0.387048051834684330,\t-0.387001948373615230,\t-0.386955843945040460,\t-0.386909738549076900,\t-0.386863632185838970,\t\n-0.386817524855441960,\t-0.386771416558001120,\t-0.386725307293631800,\t-0.386679197062449190,\t-0.386633085864568570,\t-0.386586973700104420,\t-0.386540860569173640,\t-0.386494746471890750,\t\n-0.386448631408370990,\t-0.386402515378729610,\t-0.386356398383082000,\t-0.386310280421543360,\t-0.386264161494228150,\t-0.386218041601253450,\t-0.386171920742733600,\t-0.386125798918783960,\t\n-0.386079676129519770,\t-0.386033552375056430,\t-0.385987427655509250,\t-0.385941301970993470,\t-0.385895175321623600,\t-0.385849047707516600,\t-0.385802919128787000,\t-0.385756789585550100,\t\n-0.385710659077921240,\t-0.385664527606015720,\t-0.385618395169948890,\t-0.385572261769835280,\t-0.385526127405791790,\t-0.385479992077932990,\t-0.385433855786374180,\t-0.385387718531230770,\t\n-0.385341580312618060,\t-0.385295441130651390,\t-0.385249300985446130,\t-0.385203159877116840,\t-0.385157017805780380,\t-0.385110874771551430,\t-0.385064730774545280,\t-0.385018585814877300,\t\n-0.384972439892662890,\t-0.384926293008017340,\t-0.384880145161055230,\t-0.384833996351893640,\t-0.384787846580647020,\t-0.384741695847430730,\t-0.384695544152360290,\t-0.384649391495550940,\t\n-0.384603237877118140,\t-0.384557083297177190,\t-0.384510927755842780,\t-0.384464771253231810,\t-0.384418613789458960,\t-0.384372455364639540,\t-0.384326295978889010,\t-0.384280135632322720,\t\n-0.384233974325056130,\t-0.384187812057204540,\t-0.384141648828882630,\t-0.384095484640207430,\t-0.384049319491293510,\t-0.384003153382256320,\t-0.383956986313211230,\t-0.383910818284273650,\t\n-0.383864649295559020,\t-0.383818479347182830,\t-0.383772308439259580,\t-0.383726136571906350,\t-0.383679963745237830,\t-0.383633789959369360,\t-0.383587615214416420,\t-0.383541439510494460,\t\n-0.383495262847718900,\t-0.383449085226204360,\t-0.383402906646067910,\t-0.383356727107424240,\t-0.383310546610388710,\t-0.383264365155076840,\t-0.383218182741604020,\t-0.383171999370085780,\t\n-0.383125815040637530,\t-0.383079629753373900,\t-0.383033443508412060,\t-0.382987256305866550,\t-0.382941068145852940,\t-0.382894879028486680,\t-0.382848688953883190,\t-0.382802497922157980,\t\n-0.382756305933425740,\t-0.382710112987803500,\t-0.382663919085406030,\t-0.382617724226348770,\t-0.382571528410747150,\t-0.382525331638716710,\t-0.382479133910372970,\t-0.382432935225831380,\t\n-0.382386735585206640,\t-0.382340534988615870,\t-0.382294333436173750,\t-0.382248130927995810,\t-0.382201927464197570,\t-0.382155723044894480,\t-0.382109517670202130,\t-0.382063311340235130,\t\n-0.382017104055110630,\t-0.381970895814943420,\t-0.381924686619848960,\t-0.381878476469942830,\t-0.381832265365340430,\t-0.381786053306157390,\t-0.381739840292509240,\t-0.381693626324510650,\t\n-0.381647411402278810,\t-0.381601195525928470,\t-0.381554978695575140,\t-0.381508760911334340,\t-0.381462542173321650,\t-0.381416322481652580,\t-0.381370101836441930,\t-0.381323880237806830,\t\n-0.381277657685862030,\t-0.381231434180723080,\t-0.381185209722505520,\t-0.381138984311324980,\t-0.381092757947296970,\t-0.381046530630537010,\t-0.381000302361160780,\t-0.380954073139282980,\t\n-0.380907842965020780,\t-0.380861611838488990,\t-0.380815379759803170,\t-0.380769146729078910,\t-0.380722912746431770,\t-0.380676677811977340,\t-0.380630441925830400,\t-0.380584205088108200,\t\n-0.380537967298925470,\t-0.380491728558397860,\t-0.380445488866640870,\t-0.380399248223770190,\t-0.380353006629901350,\t-0.380306764085150020,\t-0.380260520589631000,\t-0.380214276143461430,\t\n-0.380168030746756200,\t-0.380121784399630900,\t-0.380075537102201160,\t-0.380029288854582540,\t-0.379983039656890730,\t-0.379936789509240480,\t-0.379890538411749080,\t-0.379844286364531320,\t\n-0.379798033367702850,\t-0.379751779421379330,\t-0.379705524525676300,\t-0.379659268680709480,\t-0.379613011886594520,\t-0.379566754143446210,\t-0.379520495451381780,\t-0.379474235810516200,\t\n-0.379427975220964940,\t-0.379381713682843790,\t-0.379335451196268380,\t-0.379289187761354290,\t-0.379242923378216410,\t-0.379196658046972060,\t-0.379150391767736070,\t-0.379104124540624140,\t\n-0.379057856365751840,\t-0.379011587243234920,\t-0.378965317173189040,\t-0.378919046155729860,\t-0.378872774190972210,\t-0.378826501279033500,\t-0.378780227420028480,\t-0.378733952614072940,\t\n-0.378687676861282520,\t-0.378641400161772890,\t-0.378595122515659740,\t-0.378548843923057990,\t-0.378502564384084970,\t-0.378456283898855490,\t-0.378410002467485350,\t-0.378363720090090170,\t\n-0.378317436766785700,\t-0.378271152497687610,\t-0.378224867282911660,\t-0.378178581122573580,\t-0.378132294016788160,\t-0.378086005965672880,\t-0.378039716969342580,\t-0.377993427027912940,\t\n-0.377947136141499770,\t-0.377900844310218750,\t-0.377854551534185680,\t-0.377808257813515350,\t-0.377761963148325160,\t-0.377715667538730150,\t-0.377669370984845930,\t-0.377623073486788250,\t\n-0.377576775044672910,\t-0.377530475658615640,\t-0.377484175328732190,\t-0.377437874055137460,\t-0.377391571837948860,\t-0.377345268677281350,\t-0.377298964573250680,\t-0.377252659525972590,\t\n-0.377206353535562870,\t-0.377160046602137200,\t-0.377113738725810670,\t-0.377067429906700560,\t-0.377021120144921900,\t-0.376974809440590420,\t-0.376928497793821930,\t-0.376882185204732210,\t\n-0.376835871673437020,\t-0.376789557200052140,\t-0.376743241784692540,\t-0.376696925427475680,\t-0.376650608128516470,\t-0.376604289887930770,\t-0.376557970705834360,\t-0.376511650582342980,\t\n-0.376465329517572500,\t-0.376419007511637870,\t-0.376372684564656560,\t-0.376326360676743520,\t-0.376280035848014560,\t-0.376233710078585580,\t-0.376187383368572270,\t-0.376141055718090480,\t\n-0.376094727127256110,\t-0.376048397596184080,\t-0.376002067124991850,\t-0.375955735713794480,\t-0.375909403362707730,\t-0.375863070071847550,\t-0.375816735841329630,\t-0.375770400671269880,\t\n-0.375724064561783310,\t-0.375677727512987390,\t-0.375631389524997190,\t-0.375585050597928520,\t-0.375538710731897150,\t-0.375492369927019070,\t-0.375446028183410050,\t-0.375399685501185960,\t\n-0.375353341880462650,\t-0.375306997321355200,\t-0.375260651823981000,\t-0.375214305388455240,\t-0.375167958014893670,\t-0.375121609703412240,\t-0.375075260454126760,\t-0.375028910267153180,\t\n-0.374982559142606480,\t-0.374936207080604160,\t-0.374889854081261350,\t-0.374843500144693920,\t-0.374797145271017710,\t-0.374750789460348680,\t-0.374704432712802630,\t-0.374658075028495520,\t\n-0.374611716407542430,\t-0.374565356850060820,\t-0.374518996356165810,\t-0.374472634925973380,\t-0.374426272559599320,\t-0.374379909257159580,\t-0.374333545018770030,\t-0.374287179844545850,\t\n-0.374240813734604550,\t-0.374194446689061160,\t-0.374148078708031680,\t-0.374101709791632040,\t-0.374055339939978080,\t-0.374008969153185770,\t-0.373962597431371060,\t-0.373916224774649030,\t\n-0.373869851183137260,\t-0.373823476656950870,\t-0.373777101196205770,\t-0.373730724801017930,\t-0.373684347471503250,\t-0.373637969207777750,\t-0.373591590009956450,\t-0.373545209878157040,\t\n-0.373498828812494580,\t-0.373452446813085090,\t-0.373406063880044440,\t-0.373359680013488630,\t-0.373313295213533620,\t-0.373266909480295390,\t-0.373220522813889070,\t-0.373174135214432270,\t\n-0.373127746682040130,\t-0.373081357216828610,\t-0.373034966818913680,\t-0.372988575488411360,\t-0.372942183225437600,\t-0.372895790030107530,\t-0.372849395902538850,\t-0.372803000842846680,\t\n-0.372756604851146980,\t-0.372710207927555770,\t-0.372663810072189020,\t-0.372617411285162790,\t-0.372571011566593000,\t-0.372524610916595720,\t-0.372478209335286080,\t-0.372431806822781710,\t\n-0.372385403379197840,\t-0.372338999004650450,\t-0.372292593699255600,\t-0.372246187463129210,\t-0.372199780296387390,\t-0.372153372199145290,\t-0.372106963171520590,\t-0.372060553213628460,\t\n-0.372014142325584940,\t-0.371967730507506090,\t-0.371921317759507930,\t-0.371874904081706430,\t-0.371828489474217700,\t-0.371782073937156900,\t-0.371735657470641740,\t-0.371689240074787490,\t\n-0.371642821749710080,\t-0.371596402495525670,\t-0.371549982312350200,\t-0.371503561200299810,\t-0.371457139159489690,\t-0.371410716190037520,\t-0.371364292292058580,\t-0.371317867465668920,\t\n-0.371271441710984530,\t-0.371225015028121610,\t-0.371178587417196120,\t-0.371132158878324180,\t-0.371085729411620990,\t-0.371039299017204340,\t-0.370992867695189410,\t-0.370946435445692280,\t\n-0.370900002268829130,\t-0.370853568164715930,\t-0.370807133133468860,\t-0.370760697175203100,\t-0.370714260290036400,\t-0.370667822478084050,\t-0.370621383739462180,\t-0.370574944074286820,\t\n-0.370528503482674130,\t-0.370482061964740150,\t-0.370435619520601060,\t-0.370389176150372030,\t-0.370342731854170940,\t-0.370296286632113000,\t-0.370249840484314360,\t-0.370203393410891090,\t\n-0.370156945411959370,\t-0.370110496487635280,\t-0.370064046638034110,\t-0.370017595863273650,\t-0.369971144163469210,\t-0.369924691538736860,\t-0.369878237989192840,\t-0.369831783514953220,\t\n-0.369785328116134130,\t-0.369738871792851700,\t-0.369692414545221280,\t-0.369645956373360670,\t-0.369599497277385170,\t-0.369553037257410900,\t-0.369506576313554050,\t-0.369460114445930740,\t\n-0.369413651654657170,\t-0.369367187939849460,\t-0.369320723301622970,\t-0.369274257740095480,\t-0.369227791255382350,\t-0.369181323847599720,\t-0.369134855516863810,\t-0.369088386263290770,\t\n-0.369041916086996770,\t-0.368995444988097940,\t-0.368948972966709700,\t-0.368902500022949830,\t-0.368856026156933750,\t-0.368809551368777580,\t-0.368763075658597510,\t-0.368716599026509770,\t\n-0.368670121472630560,\t-0.368623642997075170,\t-0.368577163599961510,\t-0.368530683281404980,\t-0.368484202041521710,\t-0.368437719880427950,\t-0.368391236798239870,\t-0.368344752795073730,\t\n-0.368298267871045690,\t-0.368251782026271120,\t-0.368205295260867980,\t-0.368158807574951560,\t-0.368112318968638160,\t-0.368065829442043910,\t-0.368019338995285160,\t-0.367972847628477980,\t\n-0.367926355341737900,\t-0.367879862135182760,\t-0.367833368008927960,\t-0.367786872963089760,\t-0.367740376997784340,\t-0.367693880113127980,\t-0.367647382309236940,\t-0.367600883586227440,\t\n-0.367554383944214910,\t-0.367507883383317250,\t-0.367461381903649850,\t-0.367414879505329030,\t-0.367368376188471010,\t-0.367321871953192050,\t-0.367275366799608370,\t-0.367228860727835500,\t\n-0.367182353737991240,\t-0.367135845830191150,\t-0.367089337004551430,\t-0.367042827261188360,\t-0.366996316600218250,\t-0.366949805021757340,\t-0.366903292525921910,\t-0.366856779112827380,\t\n-0.366810264782591770,\t-0.366763749535330530,\t-0.366717233371159860,\t-0.366670716290196150,\t-0.366624198292555600,\t-0.366577679378354620,\t-0.366531159547709370,\t-0.366484638800735450,\t\n-0.366438117137550760,\t-0.366391594558270750,\t-0.366345071063011730,\t-0.366298546651890100,\t-0.366252021325022050,\t-0.366205495082523980,\t-0.366158967924512140,\t-0.366112439851102090,\t\n-0.366065910862411750,\t-0.366019380958556630,\t-0.365972850139653030,\t-0.365926318405817350,\t-0.365879785757165840,\t-0.365833252193814910,\t-0.365786717715880010,\t-0.365740182323479100,\t\n-0.365693646016727770,\t-0.365647108795742300,\t-0.365600570660639110,\t-0.365554031611534440,\t-0.365507491648544740,\t-0.365460950771786250,\t-0.365414408981374620,\t-0.365367866277427730,\t\n-0.365321322660061230,\t-0.365274778129391410,\t-0.365228232685534620,\t-0.365181686328607260,\t-0.365135139058725690,\t-0.365088590876005430,\t-0.365042041780564540,\t-0.364995491772518550,\t\n-0.364948940851983820,\t-0.364902389019076730,\t-0.364855836273913710,\t-0.364809282616611050,\t-0.364762728047285210,\t-0.364716172566051710,\t-0.364669616173028620,\t-0.364623058868331460,\t\n-0.364576500652076640,\t-0.364529941524380620,\t-0.364483381485359750,\t-0.364436820535130380,\t-0.364390258673808140,\t-0.364343695901511110,\t-0.364297132218354860,\t-0.364250567624455730,\t\n-0.364204002119930200,\t-0.364157435704894670,\t-0.364110868379465550,\t-0.364064300143759230,\t-0.364017730997891360,\t-0.363971160941979950,\t-0.363924589976140690,\t-0.363878018100489920,\t\n-0.363831445315144160,\t-0.363784871620219720,\t-0.363738297015833160,\t-0.363691721502100830,\t-0.363645145079138370,\t-0.363598567747063840,\t-0.363551989505992930,\t-0.363505410356042060,\t\n-0.363458830297327620,\t-0.363412249329966130,\t-0.363365667454074000,\t-0.363319084669767760,\t-0.363272500977162900,\t-0.363225916376377690,\t-0.363179330867527630,\t-0.363132744450729240,\t\n-0.363086157126099040,\t-0.363039568893753440,\t-0.362992979753808900,\t-0.362946389706381050,\t-0.362899798751588120,\t-0.362853206889545640,\t-0.362806614120370190,\t-0.362760020444178160,\t\n-0.362713425861086070,\t-0.362666830371210450,\t-0.362620233974667750,\t-0.362573636671573660,\t-0.362527038462046260,\t-0.362480439346201280,\t-0.362433839324155180,\t-0.362387238396024550,\t\n-0.362340636561925780,\t-0.362294033821975390,\t-0.362247430176289130,\t-0.362200825624985120,\t-0.362154220168179050,\t-0.362107613805987380,\t-0.362061006538526740,\t-0.362014398365913540,\t\n-0.361967789288264400,\t-0.361921179305695730,\t-0.361874568418323270,\t-0.361827956626265270,\t-0.361781343929637340,\t-0.361734730328556080,\t-0.361688115823137980,\t-0.361641500413499630,\t\n-0.361594884099757490,\t-0.361548266882027290,\t-0.361501648760427290,\t-0.361455029735073150,\t-0.361408409806081410,\t-0.361361788973568690,\t-0.361315167237651500,\t-0.361268544598446370,\t\n-0.361221921056069870,\t-0.361175296610637740,\t-0.361128671262268220,\t-0.361082045011076990,\t-0.361035417857180680,\t-0.360988789800695820,\t-0.360942160841738970,\t-0.360895530980426760,\t\n-0.360848900216875660,\t-0.360802268551201510,\t-0.360755635983522560,\t-0.360709002513954440,\t-0.360662368142613880,\t-0.360615732869617340,\t-0.360569096695081530,\t-0.360522459619122940,\t\n-0.360475821641858210,\t-0.360429182763403130,\t-0.360382542983875900,\t-0.360335902303392300,\t-0.360289260722068900,\t-0.360242618240022410,\t-0.360195974857369370,\t-0.360149330574226380,\t\n-0.360102685390709220,\t-0.360056039306936190,\t-0.360009392323023090,\t-0.359962744439086490,\t-0.359916095655243020,\t-0.359869445971609300,\t-0.359822795388301970,\t-0.359776143905437720,\t\n-0.359729491523132220,\t-0.359682838241503820,\t-0.359636184060668330,\t-0.359589528980742370,\t-0.359542873001842570,\t-0.359496216124085610,\t-0.359449558347588130,\t-0.359402899672465910,\t\n-0.359356240098837270,\t-0.359309579626818030,\t-0.359262918256524840,\t-0.359216255988074380,\t-0.359169592821583230,\t-0.359122928757168110,\t-0.359076263794945730,\t-0.359029597935031810,\t\n-0.358982931177544710,\t-0.358936263522600270,\t-0.358889594970315250,\t-0.358842925520806160,\t-0.358796255174189780,\t-0.358749583930582820,\t-0.358702911790101000,\t-0.358656238752862730,\t\n-0.358609564818983930,\t-0.358562889988581160,\t-0.358516214261771160,\t-0.358469537638670680,\t-0.358422860119396280,\t-0.358376181704064820,\t-0.358329502392791990,\t-0.358282822185696290,\t\n-0.358236141082893530,\t-0.358189459084500390,\t-0.358142776190633620,\t-0.358096092401409880,\t-0.358049407716945930,\t-0.358002722137358510,\t-0.357956035662763410,\t-0.357909348293279030,\t\n-0.357862660029021280,\t-0.357815970870106910,\t-0.357769280816652600,\t-0.357722589868775090,\t-0.357675898026591110,\t-0.357629205290217410,\t-0.357582511659769840,\t-0.357535817135366810,\t\n-0.357489121717124270,\t-0.357442425405158910,\t-0.357395728199587480,\t-0.357349030100526710,\t-0.357302331108093400,\t-0.357255631222403390,\t-0.357208930443575160,\t-0.357162228771724600,\t\n-0.357115526206968510,\t-0.357068822749423530,\t-0.357022118399206560,\t-0.356975413156434270,\t-0.356928707021223420,\t-0.356881999993690020,\t-0.356835292073952430,\t-0.356788583262126590,\t\n-0.356741873558329310,\t-0.356695162962677340,\t-0.356648451475287450,\t-0.356601739096276460,\t-0.356555025825760260,\t-0.356508311663857380,\t-0.356461596610683660,\t-0.356414880666355960,\t\n-0.356368163830991120,\t-0.356321446104705790,\t-0.356274727487616900,\t-0.356228007979841170,\t-0.356181287581494590,\t-0.356134566292695630,\t-0.356087844113560260,\t-0.356041121044205270,\t\n-0.355994397084747450,\t-0.355947672235303660,\t-0.355900946495990690,\t-0.355854219866924500,\t-0.355807492348223620,\t-0.355760763940004000,\t-0.355714034642382490,\t-0.355667304455475900,\t\n-0.355620573379401010,\t-0.355573841414274730,\t-0.355527108560213800,\t-0.355480374817334300,\t-0.355433640185754680,\t-0.355386904665590970,\t-0.355340168256959970,\t-0.355293430959978560,\t\n-0.355246692774763620,\t-0.355199953701431930,\t-0.355153213740100340,\t-0.355106472890884870,\t-0.355059731153904050,\t-0.355012988529273930,\t-0.354966245017111330,\t-0.354919500617533080,\t\n-0.354872755330656100,\t-0.354826009156597230,\t-0.354779262095473390,\t-0.354732514147400480,\t-0.354685765312497180,\t-0.354639015590879460,\t-0.354592264982664160,\t-0.354545513487968260,\t\n-0.354498761106908530,\t-0.354452007839601900,\t-0.354405253686164430,\t-0.354358498646714650,\t-0.354311742721368620,\t-0.354264985910243250,\t-0.354218228213455390,\t-0.354171469631122000,\t\n-0.354124710163359890,\t-0.354077949810286060,\t-0.354031188572016490,\t-0.353984426448669790,\t-0.353937663440361980,\t-0.353890899547210090,\t-0.353844134769330910,\t-0.353797369106841340,\t\n-0.353750602559858410,\t-0.353703835128498120,\t-0.353657066812879120,\t-0.353610297613117410,\t-0.353563527529329960,\t-0.353516756561633730,\t-0.353469984710145570,\t-0.353423211974982440,\t\n-0.353376438356261310,\t-0.353329663854098200,\t-0.353282888468611830,\t-0.353236112199918180,\t-0.353189335048134270,\t-0.353142557013377050,\t-0.353095778095763420,\t-0.353048998295410370,\t\n-0.353002217612433940,\t-0.352955436046952840,\t-0.352908653599083130,\t-0.352861870268941780,\t-0.352815086056645740,\t-0.352768300962312040,\t-0.352721514986057530,\t-0.352674728127999270,\t\n-0.352627940388253350,\t-0.352581151766938440,\t-0.352534362264170560,\t-0.352487571880066850,\t-0.352440780614744210,\t-0.352393988468319600,\t-0.352347195440910030,\t-0.352300401532631650,\t\n-0.352253606743603060,\t-0.352206811073940470,\t-0.352160014523760830,\t-0.352113217093181220,\t-0.352066418782318540,\t-0.352019619591289750,\t-0.351972819520211980,\t-0.351926018569202140,\t\n-0.351879216738376410,\t-0.351832414027853540,\t-0.351785610437749530,\t-0.351738805968181580,\t-0.351692000619266590,\t-0.351645194391121570,\t-0.351598387283863560,\t-0.351551579297608770,\t\n-0.351504770432475850,\t-0.351457960688581040,\t-0.351411150066041340,\t-0.351364338564973730,\t-0.351317526185495280,\t-0.351270712927722990,\t-0.351223898791773960,\t-0.351177083777764300,\t\n-0.351130267885812810,\t-0.351083451116035620,\t-0.351036633468549850,\t-0.350989814943472420,\t-0.350942995540920510,\t-0.350896175261011130,\t-0.350849354103860420,\t-0.350802532069587170,\t\n-0.350755709158307620,\t-0.350708885370138780,\t-0.350662060705197730,\t-0.350615235163601550,\t-0.350568408745467240,\t-0.350521581450911950,\t-0.350474753280051840,\t-0.350427924233005670,\t\n-0.350381094309889730,\t-0.350334263510821030,\t-0.350287431835916710,\t-0.350240599285293770,\t-0.350193765859069310,\t-0.350146931557359650,\t-0.350100096380283440,\t-0.350053260327957030,\t\n-0.350006423400497480,\t-0.349959585598021870,\t-0.349912746920647280,\t-0.349865907368490820,\t-0.349819066941669590,\t-0.349772225640299860,\t-0.349725383464500440,\t-0.349678540414387510,\t\n-0.349631696490078250,\t-0.349584851691689740,\t-0.349538006019339100,\t-0.349491159473143460,\t-0.349444312053219070,\t-0.349397463759684780,\t-0.349350614592656760,\t-0.349303764552252260,\t\n-0.349256913638588300,\t-0.349210061851782110,\t-0.349163209191950710,\t-0.349116355659211340,\t-0.349069501253681020,\t-0.349022645975476160,\t-0.348975789824715550,\t-0.348928932801515380,\t\n-0.348882074905992930,\t-0.348835216138265290,\t-0.348788356498449640,\t-0.348741495986663040,\t-0.348694634603021910,\t-0.348647772347644990,\t-0.348600909220648680,\t-0.348554045222150060,\t\n-0.348507180352266350,\t-0.348460314611114650,\t-0.348413447998812190,\t-0.348366580515476140,\t-0.348319712161222760,\t-0.348272842936171000,\t-0.348225972840437050,\t-0.348179101874138200,\t\n-0.348132230037391630,\t-0.348085357330314430,\t-0.348038483753023880,\t-0.347991609305636270,\t-0.347944733988270470,\t-0.347897857801042820,\t-0.347850980744070560,\t-0.347804102817470820,\t\n-0.347757224021360830,\t-0.347710344355857790,\t-0.347663463821078880,\t-0.347616582417140500,\t-0.347569700144161440,\t-0.347522817002258180,\t-0.347475932991547890,\t-0.347429048112147700,\t\n-0.347382162364174960,\t-0.347335275747746750,\t-0.347288388262979590,\t-0.347241499909992260,\t-0.347194610688901170,\t-0.347147720599823570,\t-0.347100829642876640,\t-0.347053937818177670,\t\n-0.347007045125843790,\t-0.346960151565992360,\t-0.346913257138739720,\t-0.346866361844204770,\t-0.346819465682503880,\t-0.346772568653754390,\t-0.346725670758073420,\t-0.346678771995578280,\t\n-0.346631872366386210,\t-0.346584971870613660,\t-0.346538070508379480,\t-0.346491168279800140,\t-0.346444265184992830,\t-0.346397361224074940,\t-0.346350456397163610,\t-0.346303550704376130,\t\n-0.346256644145829800,\t-0.346209736721641790,\t-0.346162828431928690,\t-0.346115919276809290,\t-0.346069009256400110,\t-0.346022098370818430,\t-0.345975186620181510,\t-0.345928274004606570,\t\n-0.345881360524210980,\t-0.345834446179111190,\t-0.345787530969426050,\t-0.345740614895272140,\t-0.345693697956766690,\t-0.345646780154026940,\t-0.345599861487170260,\t-0.345552941956313970,\t\n-0.345506021561575280,\t-0.345459100303070750,\t-0.345412178180919240,\t-0.345365255195237310,\t-0.345318331346142260,\t-0.345271406633751390,\t-0.345224481058181990,\t-0.345177554619551350,\t\n-0.345130627317976000,\t-0.345083699153574950,\t-0.345036770126464660,\t-0.344989840236762440,\t-0.344942909484585560,\t-0.344895977870051500,\t-0.344849045393277430,\t-0.344802112054380770,\t\n-0.344755177853477980,\t-0.344708242790688070,\t-0.344661306866127560,\t-0.344614370079913800,\t-0.344567432432164140,\t-0.344520493922995830,\t-0.344473554552526320,\t-0.344426614320872130,\t\n-0.344379673228152160,\t-0.344332731274483050,\t-0.344285788459982140,\t-0.344238844784766740,\t-0.344191900248954190,\t-0.344144954852661940,\t-0.344098008596007250,\t-0.344051061479106750,\t\n-0.344004113502079430,\t-0.343957164665041780,\t-0.343910214968111250,\t-0.343863264411405190,\t-0.343816312995041010,\t-0.343769360719136000,\t-0.343722407583806730,\t-0.343675453589172290,\t\n-0.343628498735349230,\t-0.343581543022454920,\t-0.343534586450606750,\t-0.343487629019922140,\t-0.343440670730518430,\t-0.343393711582513030,\t-0.343346751576022510,\t-0.343299790711166010,\t\n-0.343252828988059980,\t-0.343205866406821880,\t-0.343158902967569120,\t-0.343111938670419110,\t-0.343064973515489260,\t-0.343018007502896960,\t-0.342971040632758790,\t-0.342924072905193890,\t\n-0.342877104320318820,\t-0.342830134878250980,\t-0.342783164579107790,\t-0.342736193423006650,\t-0.342689221410065080,\t-0.342642248540400430,\t-0.342595274814129320,\t-0.342548300231370890,\t\n-0.342501324792241710,\t-0.342454348496859180,\t-0.342407371345340830,\t-0.342360393337803990,\t-0.342313414474366200,\t-0.342266434755144010,\t-0.342219454180256620,\t-0.342172472749820540,\t\n-0.342125490463953350,\t-0.342078507322772400,\t-0.342031523326395140,\t-0.341984538474939090,\t-0.341937552768521720,\t-0.341890566207259660,\t-0.341843578791271970,\t-0.341796590520675350,\t\n-0.341749601395587240,\t-0.341702611416125120,\t-0.341655620582406510,\t-0.341608628894548790,\t-0.341561636352668730,\t-0.341514642956885380,\t-0.341467648707315440,\t-0.341420653604076360,\t\n-0.341373657647285670,\t-0.341326660837060760,\t-0.341279663173519270,\t-0.341232664656778590,\t-0.341185665286955490,\t-0.341138665064168960,\t-0.341091663988535800,\t-0.341044662060173530,\t\n-0.340997659279199560,\t-0.340950655645731460,\t-0.340903651159886690,\t-0.340856645821781990,\t-0.340809639631536490,\t-0.340762632589266870,\t-0.340715624695090700,\t-0.340668615949125450,\t\n-0.340621606351488690,\t-0.340574595902297880,\t-0.340527584601670650,\t-0.340480572449723570,\t-0.340433559446575880,\t-0.340386545592344330,\t-0.340339530887146360,\t-0.340292515331099610,\t\n-0.340245498924321540,\t-0.340198481666929790,\t-0.340151463559041740,\t-0.340104444600774270,\t-0.340057424792246490,\t-0.340010404133575140,\t-0.339963382624877800,\t-0.339916360266272030,\t\n-0.339869337057875310,\t-0.339822312999805250,\t-0.339775288092179440,\t-0.339728262335114550,\t-0.339681235728729880,\t-0.339634208273142060,\t-0.339587179968468770,\t-0.339540150814827520,\t\n-0.339493120812335900,\t-0.339446089961111420,\t-0.339399058261270930,\t-0.339352025712933660,\t-0.339304992316216250,\t-0.339257958071236430,\t-0.339210922978111670,\t-0.339163887036959600,\t\n-0.339116850247897840,\t-0.339069812611043910,\t-0.339022774126514660,\t-0.338975734794429330,\t-0.338928694614904600,\t-0.338881653588058160,\t-0.338834611714007580,\t-0.338787568992870490,\t\n-0.338740525424764460,\t-0.338693481009806290,\t-0.338646435748115260,\t-0.338599389639808120,\t-0.338552342685002510,\t-0.338505294883816090,\t-0.338458246236366390,\t-0.338411196742771040,\t\n-0.338364146403147770,\t-0.338317095217613270,\t-0.338270043186286840,\t-0.338222990309285320,\t-0.338175936586726340,\t-0.338128882018727480,\t-0.338081826605406480,\t-0.338034770346880840,\t\n-0.337987713243267480,\t-0.337940655294685700,\t-0.337893596501252220,\t-0.337846536863084800,\t-0.337799476380301000,\t-0.337752415053018560,\t-0.337705352881355060,\t-0.337658289865428120,\t\n-0.337611226005354700,\t-0.337564161301254000,\t-0.337517095753242900,\t-0.337470029361439110,\t-0.337422962125960180,\t-0.337375894046923920,\t-0.337328825124447840,\t-0.337281755358649740,\t\n-0.337234684749646460,\t-0.337187613297557250,\t-0.337140541002499020,\t-0.337093467864589440,\t-0.337046393883946190,\t-0.336999319060686920,\t-0.336952243394929410,\t-0.336905166886791230,\t\n-0.336858089536389350,\t-0.336811011343843060,\t-0.336763932309269260,\t-0.336716852432785600,\t-0.336669771714509850,\t-0.336622690154559650,\t-0.336575607753052670,\t-0.336528524510105900,\t\n-0.336481440425838660,\t-0.336434355500367770,\t-0.336387269733811060,\t-0.336340183126286110,\t-0.336293095677910710,\t-0.336246007388802610,\t-0.336198918259079490,\t-0.336151828288858200,\t\n-0.336104737478258200,\t-0.336057645827396330,\t-0.336010553336390410,\t-0.335963460005358040,\t-0.335916365834417030,\t-0.335869270823685120,\t-0.335822174973279210,\t-0.335775078283318710,\t\n-0.335727980753920460,\t-0.335680882385202270,\t-0.335633783177281930,\t-0.335586683130277060,\t-0.335539582244305520,\t-0.335492480519485050,\t-0.335445377955932490,\t-0.335398274553767360,\t\n-0.335351170313106520,\t-0.335304065234067750,\t-0.335256959316768850,\t-0.335209852561327510,\t-0.335162744967861580,\t-0.335115636536487960,\t-0.335068527267326060,\t-0.335021417160492830,\t\n-0.334974306216106080,\t-0.334927194434283540,\t-0.334880081815143000,\t-0.334832968358802330,\t-0.334785854065379140,\t-0.334738738934990570,\t-0.334691622967755950,\t-0.334644506163792270,\t\n-0.334597388523217300,\t-0.334550270046148900,\t-0.334503150732704810,\t-0.334456030583002830,\t-0.334408909597160800,\t-0.334361787775295630,\t-0.334314665117526890,\t-0.334267541623971430,\t\n-0.334220417294747110,\t-0.334173292129971770,\t-0.334126166129763200,\t-0.334079039294239210,\t-0.334031911623517640,\t-0.333984783117715400,\t-0.333937653776952110,\t-0.333890523601344640,\t\n-0.333843392591010870,\t-0.333796260746068610,\t-0.333749128066635700,\t-0.333701994552830010,\t-0.333654860204768420,\t-0.333607725022570580,\t-0.333560589006353440,\t-0.333513452156234790,\t\n-0.333466314472332490,\t-0.333419175954764450,\t-0.333372036603648450,\t-0.333324896419102350,\t-0.333277755401243210,\t-0.333230613550190460,\t-0.333183470866061200,\t-0.333136327348973300,\t\n-0.333089182999044550,\t-0.333042037816392860,\t-0.332994891801136060,\t-0.332947744953391190,\t-0.332900597273277810,\t-0.332853448760912880,\t-0.332806299416414380,\t-0.332759149239900130,\t\n-0.332711998231488000,\t-0.332664846391295900,\t-0.332617693719441660,\t-0.332570540216042380,\t-0.332523385881217550,\t-0.332476230715084250,\t-0.332429074717760400,\t-0.332381917889363830,\t\n-0.332334760230012460,\t-0.332287601739824250,\t-0.332240442418916150,\t-0.332193282267407800,\t-0.332146121285416260,\t-0.332098959473059400,\t-0.332051796830455100,\t-0.332004633357721350,\t\n-0.331957469054976030,\t-0.331910303922337000,\t-0.331863137959921390,\t-0.331815971167848780,\t-0.331768803546236220,\t-0.331721635095201690,\t-0.331674465814863040,\t-0.331627295705338280,\t\n-0.331580124766745200,\t-0.331532952999201880,\t-0.331485780402825280,\t-0.331438606977735080,\t-0.331391432724048420,\t-0.331344257641883130,\t-0.331297081731357190,\t-0.331249904992588550,\t\n-0.331202727425695180,\t-0.331155549030794920,\t-0.331108369808005010,\t-0.331061189757445030,\t-0.331014008879232050,\t-0.330966827173484020,\t-0.330919644640318920,\t-0.330872461279854760,\t\n-0.330825277092209440,\t-0.330778092077500030,\t-0.330730906235846280,\t-0.330683719567365250,\t-0.330636532072174920,\t-0.330589343750393280,\t-0.330542154602138260,\t-0.330494964627527870,\t\n-0.330447773826680060,\t-0.330400582199711970,\t-0.330353389746743280,\t-0.330306196467891060,\t-0.330259002363273440,\t-0.330211807433008260,\t-0.330164611677213560,\t-0.330117415096007340,\t\n-0.330070217689506730,\t-0.330023019457831410,\t-0.329975820401098570,\t-0.329928620519426170,\t-0.329881419812932230,\t-0.329834218281734700,\t-0.329787015925951670,\t-0.329739812745701080,\t\n-0.329692608741100120,\t-0.329645403912268490,\t-0.329598198259323350,\t-0.329550991782382670,\t-0.329503784481564590,\t-0.329456576356987000,\t-0.329409367408767970,\t-0.329362157637024640,\t\n-0.329314947041876800,\t-0.329267735623441640,\t-0.329220523381837050,\t-0.329173310317181220,\t-0.329126096429592120,\t-0.329078881719187700,\t-0.329031666186086150,\t-0.328984449830404590,\t\n-0.328937232652262710,\t-0.328890014651777750,\t-0.328842795829067780,\t-0.328795576184250820,\t-0.328748355717444870,\t-0.328701134428768080,\t-0.328653912318338460,\t-0.328606689386273190,\t\n-0.328559465632692060,\t-0.328512241057712260,\t-0.328465015661451860,\t-0.328417789444028880,\t-0.328370562405561510,\t-0.328323334546167630,\t-0.328276105865965510,\t-0.328228876365072250,\t\n-0.328181646043607610,\t-0.328134414901688880,\t-0.328087182939434120,\t-0.328039950156961410,\t-0.327992716554388770,\t-0.327945482131834390,\t-0.327898246889415430,\t-0.327851010827251770,\t\n-0.327803773945460510,\t-0.327756536244159850,\t-0.327709297723467800,\t-0.327662058383502540,\t-0.327614818224382150,\t-0.327567577246224710,\t-0.327520335449147440,\t-0.327473092833270200,\t\n-0.327425849398710280,\t-0.327378605145585640,\t-0.327331360074014590,\t-0.327284114184115070,\t-0.327236867476005280,\t-0.327189619949802500,\t-0.327142371605626480,\t-0.327095122443594570,\t\n-0.327047872463824830,\t-0.327000621666435400,\t-0.326953370051544400,\t-0.326906117619270020,\t-0.326858864369730330,\t-0.326811610303042620,\t-0.326764355419326750,\t-0.326717099718700000,\t\n-0.326669843201280450,\t-0.326622585867186340,\t-0.326575327716535750,\t-0.326528068749446840,\t-0.326480808966036930,\t-0.326433548366425800,\t-0.326386286950730850,\t-0.326339024719070170,\t\n-0.326291761671561880,\t-0.326244497808324260,\t-0.326197233129475350,\t-0.326149967635133380,\t-0.326102701325415630,\t-0.326055434200441970,\t-0.326008166260329750,\t-0.325960897505197080,\t\n-0.325913627935162150,\t-0.325866357550343210,\t-0.325819086350858320,\t-0.325771814336824890,\t-0.325724541508362770,\t-0.325677267865589310,\t-0.325629993408622700,\t-0.325582718137581050,\t\n-0.325535442052582670,\t-0.325488165153745620,\t-0.325440887441188210,\t-0.325393608915028550,\t-0.325346329575384060,\t-0.325299049422374530,\t-0.325251768456117420,\t-0.325204486676730850,\t\n-0.325157204084333130,\t-0.325109920679042370,\t-0.325062636460976770,\t-0.325015351430253780,\t-0.324968065586993260,\t-0.324920778931312550,\t-0.324873491463329890,\t-0.324826203183163520,\t\n-0.324778914090931630,\t-0.324731624186752440,\t-0.324684333470744210,\t-0.324637041943024280,\t-0.324589749603712620,\t-0.324542456452926560,\t-0.324495162490784420,\t-0.324447867717404300,\t\n-0.324400572132904570,\t-0.324353275737403360,\t-0.324305978531018170,\t-0.324258680513868800,\t-0.324211381686072770,\t-0.324164082047748330,\t-0.324116781599013640,\t-0.324069480339987000,\t\n-0.324022178270786660,\t-0.323974875391530860,\t-0.323927571702337050,\t-0.323880267203325130,\t-0.323832961894612580,\t-0.323785655776317570,\t-0.323738348848558450,\t-0.323691041111453470,\t\n-0.323643732565120910,\t-0.323596423209678130,\t-0.323549113045245140,\t-0.323501802071939400,\t-0.323454490289879100,\t-0.323407177699182650,\t-0.323359864299968210,\t-0.323312550092354100,\t\n-0.323265235076458660,\t-0.323217919252399230,\t-0.323170602620295900,\t-0.323123285180266010,\t-0.323075966932427960,\t-0.323028647876899940,\t-0.322981328013800310,\t-0.322934007343247400,\t\n-0.322886685865358620,\t-0.322839363580253950,\t-0.322792040488050880,\t-0.322744716588867660,\t-0.322697391882822700,\t-0.322650066370034290,\t-0.322602740050620670,\t-0.322555412924700190,\t\n-0.322508084992391200,\t-0.322460756253811150,\t-0.322413426709080080,\t-0.322366096358315420,\t-0.322318765201635490,\t-0.322271433239158690,\t-0.322224100471003310,\t-0.322176766897287640,\t\n-0.322129432518129200,\t-0.322082097333648070,\t-0.322034761343961700,\t-0.321987424549188380,\t-0.321940086949446540,\t-0.321892748544854450,\t-0.321845409335530520,\t-0.321798069321593050,\t\n-0.321750728503159560,\t-0.321703386880350110,\t-0.321656044453282160,\t-0.321608701222074130,\t-0.321561357186844310,\t-0.321514012347711150,\t-0.321466666704792960,\t-0.321419320258207190,\t\n-0.321371973008074020,\t-0.321324624954510920,\t-0.321277276097636230,\t-0.321229926437568370,\t-0.321182575974425680,\t-0.321135224708326560,\t-0.321087872639389370,\t-0.321040519767731680,\t\n-0.320993166093473500,\t-0.320945811616732410,\t-0.320898456337626810,\t-0.320851100256275060,\t-0.320803743372795550,\t-0.320756385687306690,\t-0.320709027199926000,\t-0.320661667910773610,\t\n-0.320614307819967080,\t-0.320566946927624720,\t-0.320519585233865030,\t-0.320472222738806380,\t-0.320424859442567160,\t-0.320377495345265770,\t-0.320330130447019860,\t-0.320282764747949420,\t\n-0.320235398248172100,\t-0.320188030947806230,\t-0.320140662846970350,\t-0.320093293945782730,\t-0.320045924244361960,\t-0.319998553742825490,\t-0.319951182441293500,\t-0.319903810339883520,\t\n-0.319856437438714060,\t-0.319809063737903470,\t-0.319761689237570260,\t-0.319714313937832780,\t-0.319666937838809560,\t-0.319619560940618940,\t-0.319572183243378600,\t-0.319524804747208680,\t\n-0.319477425452226740,\t-0.319430045358551180,\t-0.319382664466300540,\t-0.319335282775593250,\t-0.319287900286547740,\t-0.319240516999281690,\t-0.319193132913915100,\t-0.319145748030565720,\t\n-0.319098362349352020,\t-0.319050975870392330,\t-0.319003588593805230,\t-0.318956200519709190,\t-0.318908811648222600,\t-0.318861421979463160,\t-0.318814031513551030,\t-0.318766640250603810,\t\n-0.318719248190739990,\t-0.318671855334078050,\t-0.318624461680736440,\t-0.318577067230833680,\t-0.318529671984487450,\t-0.318482275941817830,\t-0.318434879102942550,\t-0.318387481467980070,\t\n-0.318340083037048920,\t-0.318292683810267540,\t-0.318245283787754460,\t-0.318197882969628140,\t-0.318150481356006260,\t-0.318103078947009070,\t-0.318055675742754170,\t-0.318008271743360050,\t\n-0.317960866948945260,\t-0.317913461359628340,\t-0.317866054975527720,\t-0.317818647796761110,\t-0.317771239823448790,\t-0.317723831055708340,\t-0.317676421493658270,\t-0.317629011137417210,\t\n-0.317581599987103560,\t-0.317534188042835950,\t-0.317486775304732850,\t-0.317439361772911990,\t-0.317391947447493550,\t-0.317344532328595270,\t-0.317297116416335620,\t-0.317249699710833220,\t\n-0.317202282212206590,\t-0.317154863920574180,\t-0.317107444836053800,\t-0.317060024958765670,\t-0.317012604288827440,\t-0.316965182826357720,\t-0.316917760571475080,\t-0.316870337524298000,\t\n-0.316822913684945080,\t-0.316775489053534860,\t-0.316728063630185960,\t-0.316680637415016010,\t-0.316633210408145350,\t-0.316585782609691610,\t-0.316538354019773480,\t-0.316490924638509420,\t\n-0.316443494466018050,\t-0.316396063502418000,\t-0.316348631747826900,\t-0.316301199202365050,\t-0.316253765866150230,\t-0.316206331739300960,\t-0.316158896821935930,\t-0.316111461114173600,\t\n-0.316064024616132640,\t-0.316016587327931590,\t-0.315969149249688270,\t-0.315921710381522890,\t-0.315874270723553230,\t-0.315826830275897920,\t-0.315779389038675530,\t-0.315731947012004630,\t\n-0.315684504196003910,\t-0.315637060590791050,\t-0.315589616196486460,\t-0.315542171013207750,\t-0.315494725041073620,\t-0.315447278280202690,\t-0.315399830730713590,\t-0.315352382392724890,\t\n-0.315304933266355230,\t-0.315257483351722380,\t-0.315210032648946700,\t-0.315162581158145880,\t-0.315115128879438660,\t-0.315067675812943590,\t-0.315020221958779380,\t-0.314972767317064580,\t\n-0.314925311887917000,\t-0.314877855671457040,\t-0.314830398667802380,\t-0.314782940877071760,\t-0.314735482299383750,\t-0.314688022934857090,\t-0.314640562783610360,\t-0.314593101845762170,\t\n-0.314545640121430440,\t-0.314498177610735450,\t-0.314450714313794950,\t-0.314403250230727740,\t-0.314355785361652370,\t-0.314308319706687540,\t-0.314260853265951930,\t-0.314213386039563340,\t\n-0.314165918027642100,\t-0.314118449230306070,\t-0.314070979647673940,\t-0.314023509279864330,\t-0.313976038126995980,\t-0.313928566189187520,\t-0.313881093466557680,\t-0.313833619959224210,\t\n-0.313786145667307560,\t-0.313738670590925530,\t-0.313691194730196850,\t-0.313643718085240160,\t-0.313596240656174200,\t-0.313548762443117580,\t-0.313501283446189110,\t-0.313453803665506570,\t\n-0.313406323101190380,\t-0.313358841753358370,\t-0.313311359622129250,\t-0.313263876707621740,\t-0.313216393009954520,\t-0.313168908529246340,\t-0.313121423265615870,\t-0.313073937219181030,\t\n-0.313026450390062160,\t-0.312978962778377170,\t-0.312931474384244790,\t-0.312883985207783710,\t-0.312836495249112670,\t-0.312789004508350400,\t-0.312741512985614760,\t-0.312694020681026200,\t\n-0.312646527594702570,\t-0.312599033726762620,\t-0.312551539077325080,\t-0.312504043646508690,\t-0.312456547434432240,\t-0.312409050441214360,\t-0.312361552666973070,\t-0.312314054111828670,\t\n-0.312266554775899210,\t-0.312219054659303330,\t-0.312171553762159770,\t-0.312124052084587380,\t-0.312076549626704840,\t-0.312029046388630100,\t-0.311981542370483590,\t-0.311934037572383190,\t\n-0.311886531994447770,\t-0.311839025636795940,\t-0.311791518499546560,\t-0.311744010582818420,\t-0.311696501886730200,\t-0.311648992411399930,\t-0.311601482156948000,\t-0.311553971123492370,\t\n-0.311506459311151840,\t-0.311458946720045150,\t-0.311411433350291090,\t-0.311363919202008400,\t-0.311316404275315100,\t-0.311268888570331640,\t-0.311221372087175980,\t-0.311173854825966880,\t\n-0.311126336786823110,\t-0.311078817969863530,\t-0.311031298375206880,\t-0.310983778002972000,\t-0.310936256853276800,\t-0.310888734926241860,\t-0.310841212221985020,\t-0.310793688740625180,\t\n-0.310746164482281150,\t-0.310698639447071660,\t-0.310651113635115610,\t-0.310603587046531740,\t-0.310556059681438120,\t-0.310508531539955110,\t-0.310461002622200830,\t-0.310413472928294020,\t\n-0.310365942458353530,\t-0.310318411212498200,\t-0.310270879190846840,\t-0.310223346393518280,\t-0.310175812820630500,\t-0.310128278472304010,\t-0.310080743348656870,\t-0.310033207449807830,\t\n-0.309985670775875800,\t-0.309938133326979610,\t-0.309890595103238020,\t-0.309843056104769140,\t-0.309795516331693500,\t-0.309747975784129050,\t-0.309700434462194640,\t-0.309652892366009120,\t\n-0.309605349495691410,\t-0.309557805851360280,\t-0.309510261433134700,\t-0.309462716241132580,\t-0.309415170275474550,\t-0.309367623536278560,\t-0.309320076023663510,\t-0.309272527737748270,\t\n-0.309224978678651730,\t-0.309177428846492740,\t-0.309129878241389320,\t-0.309082326863462100,\t-0.309034774712828970,\t-0.308987221789608970,\t-0.308939668093920930,\t-0.308892113625883650,\t\n-0.308844558385616140,\t-0.308797002373237210,\t-0.308749445588864970,\t-0.308701888032619940,\t-0.308654329704620150,\t-0.308606770604984590,\t-0.308559210733832080,\t-0.308511650091281560,\t\n-0.308464088677451900,\t-0.308416526492461150,\t-0.308368963536429950,\t-0.308321399809476370,\t-0.308273835311719260,\t-0.308226270043277570,\t-0.308178704004270170,\t-0.308131137194816050,\t\n-0.308083569615034080,\t-0.308036001265042330,\t-0.307988432144961410,\t-0.307940862254909460,\t-0.307893291595005340,\t-0.307845720165367990,\t-0.307798147966116320,\t-0.307750574997369240,\t\n-0.307703001259245770,\t-0.307655426751863970,\t-0.307607851475344420,\t-0.307560275429805240,\t-0.307512698615365400,\t-0.307465121032143800,\t-0.307417542680259390,\t-0.307369963559831150,\t\n-0.307322383670977970,\t-0.307274803013817990,\t-0.307227221588471880,\t-0.307179639395057660,\t-0.307132056433694340,\t-0.307084472704500950,\t-0.307036888207596340,\t-0.306989302943099510,\t\n-0.306941716911128540,\t-0.306894130111804160,\t-0.306846542545244460,\t-0.306798954211568390,\t-0.306751365110894960,\t-0.306703775243343080,\t-0.306656184609031820,\t-0.306608593208080040,\t\n-0.306561001040605960,\t-0.306513408106730220,\t-0.306465814406570950,\t-0.306418219940247150,\t-0.306370624707877790,\t-0.306323028709581890,\t-0.306275431945478400,\t-0.306227834415685460,\t\n-0.306180236120323800,\t-0.306132637059511600,\t-0.306085037233367770,\t-0.306037436642011330,\t-0.305989835285561280,\t-0.305942233164136710,\t-0.305894630277856520,\t-0.305847026626838880,\t\n-0.305799422211204600,\t-0.305751817031071680,\t-0.305704211086559260,\t-0.305656604377786300,\t-0.305608996904871810,\t-0.305561388667934860,\t-0.305513779667093590,\t-0.305466169902468720,\t\n-0.305418559374178440,\t-0.305370948082341720,\t-0.305323336027077620,\t-0.305275723208505210,\t-0.305228109626743520,\t-0.305180495281911550,\t-0.305132880174127430,\t-0.305085264303512020,\t\n-0.305037647670183430,\t-0.304990030274260690,\t-0.304942412115862930,\t-0.304894793195109090,\t-0.304847173512118320,\t-0.304799553067009570,\t-0.304751931859901130,\t-0.304704309890913680,\t\n-0.304656687160165420,\t-0.304609063667775510,\t-0.304561439413862930,\t-0.304513814398546690,\t-0.304466188621945970,\t-0.304418562084179780,\t-0.304370934785366310,\t-0.304323306725626410,\t\n-0.304275677905078150,\t-0.304228048323840760,\t-0.304180417982033210,\t-0.304132786879774690,\t-0.304085155017184140,\t-0.304037522394379870,\t-0.303989889011482610,\t-0.303942254868610650,\t\n-0.303894619965883070,\t-0.303846984303418940,\t-0.303799347881337330,\t-0.303751710699757370,\t-0.303704072758798130,\t-0.303656434058577840,\t-0.303608794599217360,\t-0.303561154380834810,\t\n-0.303513513403549430,\t-0.303465871667480290,\t-0.303418229172746410,\t-0.303370585919467030,\t-0.303322941907760270,\t-0.303275297137747040,\t-0.303227651609545570,\t-0.303180005323274940,\t\n-0.303132358279054330,\t-0.303084710477002810,\t-0.303037061917239500,\t-0.302989412599883550,\t-0.302941762525053230,\t-0.302894111692869340,\t-0.302846460103450180,\t-0.302798807756914870,\t\n-0.302751154653382480,\t-0.302703500792972260,\t-0.302655846175803320,\t-0.302608190801993860,\t-0.302560534671664830,\t-0.302512877784934410,\t-0.302465220141921790,\t-0.302417561742746140,\t\n-0.302369902587526610,\t-0.302322242676382300,\t-0.302274582009432360,\t-0.302226920586795180,\t-0.302179258408591500,\t-0.302131595474939670,\t-0.302083931785958880,\t-0.302036267341768250,\t\n-0.301988602142486910,\t-0.301940936188234090,\t-0.301893269479128980,\t-0.301845602015289820,\t-0.301797933796837450,\t-0.301750264823890280,\t-0.301702595096567490,\t-0.301654924614988160,\t\n-0.301607253379271520,\t-0.301559581389536810,\t-0.301511908645903100,\t-0.301464235148488750,\t-0.301416560897414700,\t-0.301368885892799200,\t-0.301321210134761540,\t-0.301273533623420800,\t\n-0.301225856358896260,\t-0.301178178341307110,\t-0.301130499570771590,\t-0.301082820047410720,\t-0.301035139771342830,\t-0.300987458742687010,\t-0.300939776961562600,\t-0.300892094428088730,\t\n-0.300844411142384640,\t-0.300796727104569510,\t-0.300749042314761680,\t-0.300701356773082130,\t-0.300653670479649190,\t-0.300605983434582060,\t-0.300558295638000020,\t-0.300510607090022200,\t\n-0.300462917790767840,\t-0.300415227740355340,\t-0.300367536938905670,\t-0.300319845386537110,\t-0.300272153083368960,\t-0.300224460029520410,\t-0.300176766225110750,\t-0.300129071670259150,\t\n-0.300081376365084860,\t-0.300033680309706290,\t-0.299985983504244320,\t-0.299938285948817440,\t-0.299890587643544870,\t-0.299842888588545800,\t-0.299795188783939510,\t-0.299747488229845260,\t\n-0.299699786926381440,\t-0.299652084873668960,\t-0.299604382071826330,\t-0.299556678520972730,\t-0.299508974221227410,\t-0.299461269172709650,\t-0.299413563375538700,\t-0.299365856829833910,\t\n-0.299318149535713560,\t-0.299270441493298730,\t-0.299222732702707770,\t-0.299175023164060030,\t-0.299127312877474680,\t-0.299079601843071090,\t-0.299031890060968420,\t-0.298984177531286090,\t\n-0.298936464254142440,\t-0.298888750229658500,\t-0.298841035457952650,\t-0.298793319939144260,\t-0.298745603673352570,\t-0.298697886660696800,\t-0.298650168901296360,\t-0.298602450395270500,\t\n-0.298554731142737670,\t-0.298507011143818890,\t-0.298459290398632500,\t-0.298411568907297970,\t-0.298363846669934480,\t-0.298316123686661380,\t-0.298268399957597960,\t-0.298220675482862680,\t\n-0.298172950262576560,\t-0.298125224296858060,\t-0.298077497585826520,\t-0.298029770129601250,\t-0.297982041928301580,\t-0.297934312982046760,\t-0.297886583290956130,\t-0.297838852855148220,\t\n-0.297791121674744030,\t-0.297743389749862030,\t-0.297695657080621570,\t-0.297647923667141990,\t-0.297600189509542590,\t-0.297552454607942660,\t-0.297504718962460780,\t-0.297456982573217950,\t\n-0.297409245440332700,\t-0.297361507563924320,\t-0.297313768944112160,\t-0.297266029581015560,\t-0.297218289474753870,\t-0.297170548625446510,\t-0.297122807033211920,\t-0.297075064698171130,\t\n-0.297027321620442710,\t-0.296979577800145940,\t-0.296931833237400300,\t-0.296884087932325010,\t-0.296836341885039550,\t-0.296788595095662360,\t-0.296740847564314510,\t-0.296693099291114590,\t\n-0.296645350276181890,\t-0.296597600519635800,\t-0.296549850021595730,\t-0.296502098782181030,\t-0.296454346801511110,\t-0.296406594079704430,\t-0.296358840616882170,\t-0.296311086413162780,\t\n-0.296263331468665680,\t-0.296215575783510210,\t-0.296167819357815830,\t-0.296120062191701890,\t-0.296072304285286970,\t-0.296024545638692130,\t-0.295976786252035940,\t-0.295929026125437760,\t\n-0.295881265259017030,\t-0.295833503652893130,\t-0.295785741307185490,\t-0.295737978222013480,\t-0.295690214397496490,\t-0.295642449833753150,\t-0.295594684530904540,\t-0.295546918489069220,\t\n-0.295499151708366600,\t-0.295451384188916090,\t-0.295403615930837140,\t-0.295355846934249100,\t-0.295308077199270660,\t-0.295260306726022830,\t-0.295212535514624230,\t-0.295164763565194330,\t\n-0.295116990877852480,\t-0.295069217452718190,\t-0.295021443289910870,\t-0.294973668389549860,\t-0.294925892751753900,\t-0.294878116376644070,\t-0.294830339264338880,\t-0.294782561414957900,\t\n-0.294734782828620480,\t-0.294687003505446130,\t-0.294639223445554270,\t-0.294591442649063510,\t-0.294543661116094980,\t-0.294495878846767310,\t-0.294448095841199910,\t-0.294400312099512280,\t\n-0.294352527621823900,\t-0.294304742408254160,\t-0.294256956458922580,\t-0.294209169773947790,\t-0.294161382353450910,\t-0.294113594197550510,\t-0.294065805306366220,\t-0.294018015680017340,\t\n-0.293970225318623490,\t-0.293922434222304020,\t-0.293874642391177670,\t-0.293826849825365500,\t-0.293779056524986260,\t-0.293731262490159350,\t-0.293683467721004290,\t-0.293635672217640530,\t\n-0.293587875980187650,\t-0.293540079008765050,\t-0.293492281303491360,\t-0.293444482864487880,\t-0.293396683691873160,\t-0.293348883785766790,\t-0.293301083146288170,\t-0.293253281773556810,\t\n-0.293205479667692280,\t-0.293157676828813160,\t-0.293109873257040740,\t-0.293062068952493650,\t-0.293014263915291340,\t-0.292966458145553440,\t-0.292918651643399310,\t-0.292870844408948620,\t\n-0.292823036442320770,\t-0.292775227743635350,\t-0.292727418313011020,\t-0.292679608150568980,\t-0.292631797256427960,\t-0.292583985630707370,\t-0.292536173273526880,\t-0.292488360185005960,\t\n-0.292440546365264060,\t-0.292392731814420050,\t-0.292344916532594980,\t-0.292297100519907650,\t-0.292249283776477580,\t-0.292201466302424270,\t-0.292153648097867310,\t-0.292105829162926270,\t\n-0.292058009497720590,\t-0.292010189102369090,\t-0.291962367976992930,\t-0.291914546121710860,\t-0.291866723536642450,\t-0.291818900221907210,\t-0.291771076177624710,\t-0.291723251403914530,\t\n-0.291675425900895350,\t-0.291627599668688510,\t-0.291579772707412640,\t-0.291531945017187320,\t-0.291484116598132170,\t-0.291436287450366700,\t-0.291388457574010500,\t-0.291340626969183230,\t\n-0.291292795636003470,\t-0.291244963574592560,\t-0.291197130785069310,\t-0.291149297267553180,\t-0.291101463022163830,\t-0.291053628049020850,\t-0.291005792348243750,\t-0.290957955919951330,\t\n-0.290910118764264870,\t-0.290862280881303110,\t-0.290814442271185690,\t-0.290766602934032110,\t-0.290718762869962070,\t-0.290670922079095060,\t-0.290623080561550780,\t-0.290575238317447970,\t\n-0.290527395346907910,\t-0.290479551650049350,\t-0.290431707226991910,\t-0.290383862077855210,\t-0.290336016202758840,\t-0.290288169601822410,\t-0.290240322275164770,\t-0.290192474222907120,\t\n-0.290144625445168280,\t-0.290096775942067950,\t-0.290048925713725590,\t-0.290001074760260990,\t-0.289953223081793670,\t-0.289905370678443240,\t-0.289857517550329460,\t-0.289809663697571000,\t\n-0.289761809120289260,\t-0.289713953818602990,\t-0.289666097792631800,\t-0.289618241042495390,\t-0.289570383568313380,\t-0.289522525370205400,\t-0.289474666448290290,\t-0.289426806802689340,\t\n-0.289378946433521360,\t-0.289331085340906010,\t-0.289283223524963000,\t-0.289235360985811870,\t-0.289187497723572380,\t-0.289139633738364100,\t-0.289091769030305920,\t-0.289043903599519150,\t\n-0.288996037446122620,\t-0.288948170570236030,\t-0.288900302971979000,\t-0.288852434651471200,\t-0.288804565608832330,\t-0.288756695844181180,\t-0.288708825357639140,\t-0.288660954149325020,\t\n-0.288613082219358550,\t-0.288565209567859360,\t-0.288517336194947180,\t-0.288469462100741590,\t-0.288421587285362380,\t-0.288373711748928400,\t-0.288325835491560930,\t-0.288277958513378900,\t\n-0.288230080814501970,\t-0.288182202395049820,\t-0.288134323255142160,\t-0.288086443394898690,\t-0.288038562814438290,\t-0.287990681513882300,\t-0.287942799493349670,\t-0.287894916752959970,\t\n-0.287847033292833010,\t-0.287799149113088460,\t-0.287751264213846060,\t-0.287703378595225430,\t-0.287655492257345600,\t-0.287607605200327800,\t-0.287559717424291040,\t-0.287511828929355010,\t\n-0.287463939715639330,\t-0.287416049783263850,\t-0.287368159132348260,\t-0.287320267763011390,\t-0.287272375675374720,\t-0.287224482869557100,\t-0.287176589345678300,\t-0.287128695103857970,\t\n-0.287080800144215940,\t-0.287032904466871910,\t-0.286985008071945660,\t-0.286937110959555990,\t-0.286889213129824350,\t-0.286841314582869770,\t-0.286793415318811860,\t-0.286745515337770370,\t\n-0.286697614639865150,\t-0.286649713225215870,\t-0.286601811093942340,\t-0.286553908246163390,\t-0.286506004682000550,\t-0.286458100401572660,\t-0.286410195404999570,\t-0.286362289692400960,\t\n-0.286314383263896630,\t-0.286266476119606320,\t-0.286218568259649860,\t-0.286170659684146120,\t-0.286122750393216550,\t-0.286074840386980170,\t-0.286026929665556600,\t-0.285979018229065800,\t\n-0.285931106077627390,\t-0.285883193211361240,\t-0.285835279630386240,\t-0.285787365334823910,\t-0.285739450324793140,\t-0.285691534600413740,\t-0.285643618161805560,\t-0.285595701009088270,\t\n-0.285547783142381770,\t-0.285499864561805820,\t-0.285451945267479300,\t-0.285404025259523800,\t-0.285356104538058260,\t-0.285308183103202440,\t-0.285260260955076170,\t-0.285212338093799260,\t\n-0.285164414519491480,\t-0.285116490232271810,\t-0.285068565232261760,\t-0.285020639519580340,\t-0.284972713094347300,\t-0.284924785956682470,\t-0.284876858106705650,\t-0.284828929544536700,\t\n-0.284781000270295460,\t-0.284733070284100830,\t-0.284685139586074390,\t-0.284637208176335090,\t-0.284589276055002780,\t-0.284541343222197320,\t-0.284493409678038430,\t-0.284445475422646090,\t\n-0.284397540456139130,\t-0.284349604778639240,\t-0.284301668390265270,\t-0.284253731291137180,\t-0.284205793481374760,\t-0.284157854961097860,\t-0.284109915730426320,\t-0.284061975789479950,\t\n-0.284014035138377810,\t-0.283966093777241470,\t-0.283918151706189840,\t-0.283870208925342870,\t-0.283822265434820360,\t-0.283774321234742220,\t-0.283726376325228240,\t-0.283678430706398310,\t\n-0.283630484378371520,\t-0.283582537341269310,\t-0.283534589595210770,\t-0.283486641140315740,\t-0.283438691976704130,\t-0.283390742104495770,\t-0.283342791523810590,\t-0.283294840234768420,\t\n-0.283246888237488280,\t-0.283198935532091740,\t-0.283150982118697940,\t-0.283103027997426650,\t-0.283055073168397790,\t-0.283007117631731200,\t-0.282959161387546900,\t-0.282911204435963790,\t\n-0.282863246777103510,\t-0.282815288411085160,\t-0.282767329338028560,\t-0.282719369558053660,\t-0.282671409071280300,\t-0.282623447877828450,\t-0.282575485977817950,\t-0.282527523371367880,\t\n-0.282479560058599920,\t-0.282431596039632970,\t-0.282383631314587100,\t-0.282335665883582110,\t-0.282287699746738010,\t-0.282239732904174590,\t-0.282191765356011040,\t-0.282143797102368920,\t\n-0.282095828143367260,\t-0.282047858479126060,\t-0.281999888109765230,\t-0.281951917035404680,\t-0.281903945256164300,\t-0.281855972772164120,\t-0.281807999583523090,\t-0.281760025690362960,\t\n-0.281712051092802730,\t-0.281664075790962420,\t-0.281616099784961880,\t-0.281568123074921070,\t-0.281520145660960010,\t-0.281472167543197700,\t-0.281424188721755840,\t-0.281376209196753490,\t\n-0.281328228968310610,\t-0.281280248036547220,\t-0.281232266401583160,\t-0.281184284063538400,\t-0.281136301022533010,\t-0.281088317278685940,\t-0.281040332832118990,\t-0.280992347682951170,\t\n-0.280944361831302500,\t-0.280896375277292890,\t-0.280848388021042390,\t-0.280800400062670870,\t-0.280752411402298400,\t-0.280704422040044030,\t-0.280656431976029460,\t-0.280608441210373820,\t\n-0.280560449743197050,\t-0.280512457574619180,\t-0.280464464704760160,\t-0.280416471133739960,\t-0.280368476861678590,\t-0.280320481888695180,\t-0.280272486214911410,\t-0.280224489840446460,\t\n-0.280176492765420280,\t-0.280128494989952850,\t-0.280080496514164170,\t-0.280032497338174260,\t-0.279984497462102240,\t-0.279936496886069860,\t-0.279888495610196190,\t-0.279840493634601340,\t\n-0.279792490959405230,\t-0.279744487584727860,\t-0.279696483510689320,\t-0.279648478737409560,\t-0.279600473265007750,\t-0.279552467093605590,\t-0.279504460223322260,\t-0.279456452654277820,\t\n-0.279408444386592240,\t-0.279360435420385520,\t-0.279312425755777750,\t-0.279264415392887990,\t-0.279216404331838140,\t-0.279168392572747230,\t-0.279120380115735310,\t-0.279072366960922470,\t\n-0.279024353108428710,\t-0.278976338558374060,\t-0.278928323310878580,\t-0.278880307366061450,\t-0.278832290724044420,\t-0.278784273384946600,\t-0.278736255348888130,\t-0.278688236615989020,\t\n-0.278640217186369330,\t-0.278592197060149090,\t-0.278544176237447480,\t-0.278496154718386290,\t-0.278448132503084760,\t-0.278400109591662840,\t-0.278352085984240660,\t-0.278304061680938300,\t\n-0.278256036681875760,\t-0.278208010987173130,\t-0.278159984596949630,\t-0.278111957511327000,\t-0.278063929730424490,\t-0.278015901254362150,\t-0.277967872083260070,\t-0.277919842217238310,\t\n-0.277871811656416940,\t-0.277823780400916040,\t-0.277775748450854840,\t-0.277727715806355080,\t-0.277679682467536050,\t-0.277631648434517870,\t-0.277583613707420520,\t-0.277535578286364160,\t\n-0.277487542171468820,\t-0.277439505362854670,\t-0.277391467860640840,\t-0.277343429664949240,\t-0.277295390775899040,\t-0.277247351193610380,\t-0.277199310918203380,\t-0.277151269949798050,\t\n-0.277103228288514580,\t-0.277055185934472150,\t-0.277007142887792600,\t-0.276959099148595230,\t-0.276911054717000120,\t-0.276863009593127320,\t-0.276814963777097020,\t-0.276766917269029360,\t\n-0.276718870069044330,\t-0.276670822177261360,\t-0.276622773593802110,\t-0.276574724318785940,\t-0.276526674352332970,\t-0.276478623694563330,\t-0.276430572345597150,\t-0.276382520305554490,\t\n-0.276334467574554710,\t-0.276286414152719590,\t-0.276238360040168440,\t-0.276190305237021370,\t-0.276142249743398570,\t-0.276094193559420110,\t-0.276046136685206220,\t-0.275998079120876980,\t\n-0.275950020866551630,\t-0.275901961922352110,\t-0.275853902288397730,\t-0.275805841964808560,\t-0.275757780951704780,\t-0.275709719249206560,\t-0.275661656857434050,\t-0.275613593776506520,\t\n-0.275565530006545880,\t-0.275517465547671370,\t-0.275469400400003230,\t-0.275421334563661580,\t-0.275373268038766610,\t-0.275325200825438490,\t-0.275277132923797350,\t-0.275229064333962490,\t\n-0.275180995056055870,\t-0.275132925090196710,\t-0.275084854436505270,\t-0.275036783095101710,\t-0.274988711066106170,\t-0.274940638349638830,\t-0.274892564945819930,\t-0.274844490854768750,\t\n-0.274796416076607210,\t-0.274748340611454640,\t-0.274700264459431190,\t-0.274652187620657070,\t-0.274604110095252540,\t-0.274556031883337660,\t-0.274507952985032780,\t-0.274459873400457080,\t\n-0.274411793129732630,\t-0.274363712172978670,\t-0.274315630530315380,\t-0.274267548201863050,\t-0.274219465187741870,\t-0.274171381488072020,\t-0.274123297102972840,\t-0.274075212032566300,\t\n-0.274027126276971680,\t-0.273979039836309280,\t-0.273930952710699280,\t-0.273882864900261920,\t-0.273834776405117330,\t-0.273786687225385850,\t-0.273738597361186830,\t-0.273690506812642120,\t\n-0.273642415579871120,\t-0.273594323662994130,\t-0.273546231062131330,\t-0.273498137777402950,\t-0.273450043808929180,\t-0.273401949156829530,\t-0.273353853821225790,\t-0.273305757802237430,\t\n-0.273257661099984670,\t-0.273209563714587770,\t-0.273161465646167000,\t-0.273113366894842500,\t-0.273065267460734620,\t-0.273017167343962700,\t-0.272969066544648750,\t-0.272920965062912080,\t\n-0.272872862898873030,\t-0.272824760052651830,\t-0.272776656524368720,\t-0.272728552314143950,\t-0.272680447422096960,\t-0.272632341848349720,\t-0.272584235593021640,\t-0.272536128656232950,\t\n-0.272488021038103880,\t-0.272439912738754840,\t-0.272391803758305960,\t-0.272343694096877640,\t-0.272295583754589180,\t-0.272247472731562630,\t-0.272199361027917360,\t-0.272151248643773770,\t\n-0.272103135579251980,\t-0.272055021834472390,\t-0.272006907409555240,\t-0.271958792304620830,\t-0.271910676519788560,\t-0.271862560055180450,\t-0.271814442910916000,\t-0.271766325087115400,\t\n-0.271718206583898950,\t-0.271670087401387040,\t-0.271621967539699860,\t-0.271573846998957810,\t-0.271525725779280300,\t-0.271477603880789290,\t-0.271429481303604280,\t-0.271381358047845580,\t\n-0.271333234113633470,\t-0.271285109501088250,\t-0.271236984210330320,\t-0.271188858241479040,\t-0.271140731594656460,\t-0.271092604269982050,\t-0.271044476267576160,\t-0.270996347587559030,\t\n-0.270948218230051110,\t-0.270900088195172580,\t-0.270851957483043860,\t-0.270803826093784340,\t-0.270755694027516150,\t-0.270707561284358740,\t-0.270659427864432420,\t-0.270611293767857470,\t\n-0.270563158994754360,\t-0.270515023545243320,\t-0.270466887419443860,\t-0.270418750617478050,\t-0.270370613139465370,\t-0.270322474985526200,\t-0.270274336155780780,\t-0.270226196650349530,\t\n-0.270178056469352780,\t-0.270129915612910890,\t-0.270081774081143370,\t-0.270033631874172290,\t-0.269985488992117110,\t-0.269937345435098170,\t-0.269889201203235900,\t-0.269841056296650670,\t\n-0.269792910715462740,\t-0.269744764459791670,\t-0.269696617529759600,\t-0.269648469925485970,\t-0.269600321647091130,\t-0.269552172694695500,\t-0.269504023068419470,\t-0.269455872768383340,\t\n-0.269407721794707570,\t-0.269359570147511610,\t-0.269311417826917590,\t-0.269263264833045020,\t-0.269215111166014320,\t-0.269166956825945770,\t-0.269118801812959880,\t-0.269070646127176960,\t\n-0.269022489768716620,\t-0.268974332737700880,\t-0.268926175034249320,\t-0.268878016658482270,\t-0.268829857610520250,\t-0.268781697890483560,\t-0.268733537498492600,\t-0.268685376434667830,\t\n-0.268637214699129600,\t-0.268589052291997480,\t-0.268540889213393590,\t-0.268492725463437440,\t-0.268444561042249560,\t-0.268396395949950180,\t-0.268348230186659880,\t-0.268300063752498990,\t\n-0.268251896647587080,\t-0.268203728872046300,\t-0.268155560425996140,\t-0.268107391309557130,\t-0.268059221522849670,\t-0.268011051065994100,\t-0.267962879939110890,\t-0.267914708142320550,\t\n-0.267866535675742530,\t-0.267818362539499030,\t-0.267770188733709670,\t-0.267722014258494790,\t-0.267673839113974850,\t-0.267625663300270380,\t-0.267577486817501710,\t-0.267529309665788470,\t\n-0.267481131845252850,\t-0.267432953356014360,\t-0.267384774198193510,\t-0.267336594371910710,\t-0.267288413877286410,\t-0.267240232714441080,\t-0.267192050883495180,\t-0.267143868384568330,\t\n-0.267095685217782650,\t-0.267047501383257720,\t-0.266999316881114060,\t-0.266951131711472110,\t-0.266902945874452290,\t-0.266854759370175170,\t-0.266806572198760250,\t-0.266758384360329780,\t\n-0.266710195855003330,\t-0.266662006682901410,\t-0.266613816844144480,\t-0.266565626338853000,\t-0.266517435167147430,\t-0.266469243329148290,\t-0.266421050824975190,\t-0.266372857654750330,\t\n-0.266324663818593320,\t-0.266276469316624630,\t-0.266228274148964770,\t-0.266180078315734260,\t-0.266131881817053490,\t-0.266083684653042220,\t-0.266035486823822550,\t-0.265987288329514180,\t\n-0.265939089170237620,\t-0.265890889346113320,\t-0.265842688857261760,\t-0.265794487703803540,\t-0.265746285885859020,\t-0.265698083403548890,\t-0.265649880256992600,\t-0.265601676446312500,\t\n-0.265553471971628210,\t-0.265505266833060250,\t-0.265457061030729140,\t-0.265408854564755330,\t-0.265360647435259440,\t-0.265312439642361010,\t-0.265264231186182360,\t-0.265216022066843190,\t\n-0.265167812284463900,\t-0.265119601839165110,\t-0.265071390731067280,\t-0.265023178960290980,\t-0.264974966526956790,\t-0.264926753431184270,\t-0.264878539673095710,\t-0.264830325252810860,\t\n-0.264782110170450170,\t-0.264733894426134210,\t-0.264685678019983490,\t-0.264637460952118600,\t-0.264589243222659200,\t-0.264541024831727530,\t-0.264492805779443290,\t-0.264444586065927080,\t\n-0.264396365691299370,\t-0.264348144655680740,\t-0.264299922959191750,\t-0.264251700601952970,\t-0.264203477584084080,\t-0.264155253905707380,\t-0.264107029566942490,\t-0.264058804567910090,\t\n-0.264010578908730590,\t-0.263962352589524720,\t-0.263914125610412940,\t-0.263865897971515000,\t-0.263817669672953170,\t-0.263769440714847150,\t-0.263721211097317550,\t-0.263672980820484900,\t\n-0.263624749884469820,\t-0.263576518289392820,\t-0.263528286035374590,\t-0.263480053122534750,\t-0.263431819550995650,\t-0.263383585320876970,\t-0.263335350432299390,\t-0.263287114885383370,\t\n-0.263238878680249590,\t-0.263190641817018620,\t-0.263142404295810150,\t-0.263094166116746580,\t-0.263045927279947580,\t-0.262997687785533730,\t-0.262949447633625650,\t-0.262901206824344040,\t\n-0.262852965357809330,\t-0.262804723234142220,\t-0.262756480453463340,\t-0.262708237015892350,\t-0.262659992921551680,\t-0.262611748170560990,\t-0.262563502763040910,\t-0.262515256699112130,\t\n-0.262467009978895160,\t-0.262418762602510680,\t-0.262370514570078480,\t-0.262322265881720810,\t-0.262274016537557440,\t-0.262225766537709070,\t-0.262177515882296320,\t-0.262129264571439700,\t\n-0.262081012605260010,\t-0.262032759983877710,\t-0.261984506707412690,\t-0.261936252775987250,\t-0.261887998189721190,\t-0.261839742948735130,\t-0.261791487053149700,\t-0.261743230503085570,\t\n-0.261694973298663370,\t-0.261646715440002840,\t-0.261598456927226390,\t-0.261550197760453850,\t-0.261501937939805750,\t-0.261453677465402820,\t-0.261405416337365750,\t-0.261357154555815100,\t\n-0.261308892120871550,\t-0.261260629032654900,\t-0.261212365291287550,\t-0.261164100896889300,\t-0.261115835849580810,\t-0.261067570149482730,\t-0.261019303796715670,\t-0.260971036791400430,\t\n-0.260922769133656700,\t-0.260874500823606860,\t-0.260826231861370830,\t-0.260777962247069230,\t-0.260729691980822690,\t-0.260681421062751940,\t-0.260633149492977610,\t-0.260584877271620440,\t\n-0.260536604398800160,\t-0.260488330874639300,\t-0.260440056699257570,\t-0.260391781872775730,\t-0.260343506395314390,\t-0.260295230266994300,\t-0.260246953487936140,\t-0.260198676058259750,\t\n-0.260150397978087530,\t-0.260102119247539290,\t-0.260053839866735800,\t-0.260005559835797650,\t-0.259957279154845620,\t-0.259908997824000400,\t-0.259860715843382720,\t-0.259812433213113200,\t\n-0.259764149933311760,\t-0.259715866004100790,\t-0.259667581425600150,\t-0.259619296197930620,\t-0.259571010321212770,\t-0.259522723795567460,\t-0.259474436621115300,\t-0.259426148797976150,\t\n-0.259377860326272580,\t-0.259329571206124270,\t-0.259281281437652110,\t-0.259232991020976690,\t-0.259184699956218790,\t-0.259136408243499210,\t-0.259088115882938560,\t-0.259039822874656770,\t\n-0.258991529218776270,\t-0.258943234915416930,\t-0.258894939964699530,\t-0.258846644366744760,\t-0.258798348121673400,\t-0.258750051229606150,\t-0.258701753690662950,\t-0.258653455504966210,\t\n-0.258605156672635840,\t-0.258556857193792570,\t-0.258508557068557130,\t-0.258460256297050330,\t-0.258411954879392840,\t-0.258363652815705500,\t-0.258315350106108180,\t-0.258267046750723320,\t\n-0.258218742749670880,\t-0.258170438103071550,\t-0.258122132811046120,\t-0.258073826873715380,\t-0.258025520291200070,\t-0.257977213063620090,\t-0.257928905191097960,\t-0.257880596673753570,\t\n-0.257832287511707670,\t-0.257783977705081050,\t-0.257735667253994440,\t-0.257687356158568750,\t-0.257639044418924600,\t-0.257590732035182010,\t-0.257542419007463440,\t-0.257494105335888850,\t\n-0.257445791020578960,\t-0.257397476061654640,\t-0.257349160459236560,\t-0.257300844213445620,\t-0.257252527324401740,\t-0.257204209792227360,\t-0.257155891617042440,\t-0.257107572798967840,\t\n-0.257059253338124290,\t-0.257010933234632590,\t-0.256962612488613570,\t-0.256914291100187990,\t-0.256865969069475840,\t-0.256817646396599650,\t-0.256769323081679320,\t-0.256720999124835700,\t\n-0.256672674526189580,\t-0.256624349285861750,\t-0.256576023403973060,\t-0.256527696880644360,\t-0.256479369715995500,\t-0.256431041910149090,\t-0.256382713463225050,\t-0.256334384375344280,\t\n-0.256286054646627510,\t-0.256237724277195660,\t-0.256189393267169440,\t-0.256141061616669720,\t-0.256092729325816560,\t-0.256044396394732370,\t-0.255996062823537210,\t-0.255947728612351880,\t\n-0.255899393761297280,\t-0.255851058270494150,\t-0.255802722140063390,\t-0.255754385370124960,\t-0.255706047960801430,\t-0.255657709912212760,\t-0.255609371224479850,\t-0.255561031897723500,\t\n-0.255512691932064550,\t-0.255464351327623910,\t-0.255416010084522360,\t-0.255367668202879930,\t-0.255319325682819180,\t-0.255270982524460120,\t-0.255222638727923610,\t-0.255174294293330490,\t\n-0.255125949220801670,\t-0.255077603510457940,\t-0.255029257162419360,\t-0.254980910176808520,\t-0.254932562553745360,\t-0.254884214293350840,\t-0.254835865395745760,\t-0.254787515861051030,\t\n-0.254739165689387480,\t-0.254690814880876030,\t-0.254642463435636680,\t-0.254594111353792010,\t-0.254545758635462140,\t-0.254497405280767810,\t-0.254449051289829970,\t-0.254400696662769490,\t\n-0.254352341399707300,\t-0.254303985500763390,\t-0.254255628966060350,\t-0.254207271795718280,\t-0.254158913989858020,\t-0.254110555548600460,\t-0.254062196472066510,\t-0.254013836760377090,\t\n-0.253965476413653020,\t-0.253917115432014450,\t-0.253868753815583940,\t-0.253820391564481550,\t-0.253772028678828200,\t-0.253723665158744780,\t-0.253675301004352150,\t-0.253626936215771310,\t\n-0.253578570793123130,\t-0.253530204736527600,\t-0.253481838046107470,\t-0.253433470721982750,\t-0.253385102764274340,\t-0.253336734173103210,\t-0.253288364948590190,\t-0.253239995090856260,\t\n-0.253191624600022370,\t-0.253143253476208530,\t-0.253094881719537480,\t-0.253046509330129180,\t-0.252998136308104580,\t-0.252949762653584710,\t-0.252901388366690350,\t-0.252853013447542570,\t\n-0.252804637896261400,\t-0.252756261712969500,\t-0.252707884897786890,\t-0.252659507450834600,\t-0.252611129372233570,\t-0.252562750662104710,\t-0.252514371320568920,\t-0.252465991347747280,\t\n-0.252417610743759730,\t-0.252369229508729090,\t-0.252320847642775290,\t-0.252272465146019420,\t-0.252224082018582370,\t-0.252175698260585170,\t-0.252127313872148650,\t-0.252078928853393000,\t\n-0.252030543204440900,\t-0.251982156925412480,\t-0.251933770016428640,\t-0.251885382477610330,\t-0.251836994309078630,\t-0.251788605510954390,\t-0.251740216083358670,\t-0.251691826026411550,\t\n-0.251643435340235700,\t-0.251595044024951310,\t-0.251546652080679280,\t-0.251498259507540620,\t-0.251449866305656300,\t-0.251401472475147330,\t-0.251353078016133820,\t-0.251304682928738480,\t\n-0.251256287213081410,\t-0.251207890869283630,\t-0.251159493897466110,\t-0.251111096297749860,\t-0.251062698070255890,\t-0.251014299215105210,\t-0.250965899732417840,\t-0.250917499622316630,\t\n-0.250869098884921650,\t-0.250820697520353960,\t-0.250772295528734480,\t-0.250723892910184270,\t-0.250675489664824340,\t-0.250627085792775710,\t-0.250578681294158500,\t-0.250530276169095400,\t\n-0.250481870417706640,\t-0.250433464040113190,\t-0.250385057036436100,\t-0.250336649406796340,\t-0.250288241151314980,\t-0.250239832270113040,\t-0.250191422763310630,\t-0.250143012631030500,\t\n-0.250094601873392890,\t-0.250046190490518740,\t-0.249997778482529130,\t-0.249949365849545050,\t-0.249900952591687600,\t-0.249852538709076870,\t-0.249804124201835680,\t-0.249755709070084150,\t\n-0.249707293313943370,\t-0.249658876933534330,\t-0.249610459928978120,\t-0.249562042300395780,\t-0.249513624047908310,\t-0.249465205171635900,\t-0.249416785671701360,\t-0.249368365548224860,\t\n-0.249319944801327440,\t-0.249271523431130150,\t-0.249223101437754090,\t-0.249174678821320220,\t-0.249126255581948840,\t-0.249077831719762640,\t-0.249029407234881900,\t-0.248980982127427610,\t\n-0.248932556397520880,\t-0.248884130045282760,\t-0.248835703070834330,\t-0.248787275474296600,\t-0.248738847255789850,\t-0.248690418415436850,\t-0.248641988953357790,\t-0.248593558869673770,\t\n-0.248545128164505830,\t-0.248496696837975100,\t-0.248448264890202610,\t-0.248399832321308610,\t-0.248351399131415850,\t-0.248302965320644640,\t-0.248254530889115980,\t-0.248206095836951020,\t\n-0.248157660164270820,\t-0.248109223871196470,\t-0.248060786957849030,\t-0.248012349424348800,\t-0.247963911270818540,\t-0.247915472497378500,\t-0.247867033104149790,\t-0.247818593091253480,\t\n-0.247770152458810680,\t-0.247721711206942530,\t-0.247673269335770080,\t-0.247624826845413620,\t-0.247576383735995910,\t-0.247527940007637280,\t-0.247479495660458790,\t-0.247431050694581570,\t\n-0.247382605110126720,\t-0.247334158907215330,\t-0.247285712085968560,\t-0.247237264646506670,\t-0.247188816588952450,\t-0.247140367913426200,\t-0.247091918620049030,\t-0.247043468708942060,\t\n-0.246995018180226430,\t-0.246946567034023230,\t-0.246898115270452770,\t-0.246849662889637890,\t-0.246801209891698850,\t-0.246752756276756770,\t-0.246704302044932820,\t-0.246655847196348120,\t\n-0.246607391731123780,\t-0.246558935649380940,\t-0.246510478951239950,\t-0.246462021636823600,\t-0.246413563706252200,\t-0.246365105159646880,\t-0.246316645997128800,\t-0.246268186218819130,\t\n-0.246219725824838980,\t-0.246171264815308630,\t-0.246122803190350990,\t-0.246074340950086370,\t-0.246025878094635860,\t-0.245977414624120680,\t-0.245928950538661960,\t-0.245880485838380850,\t\n-0.245832020523398560,\t-0.245783554593835330,\t-0.245735088049814060,\t-0.245686620891455100,\t-0.245638153118879570,\t-0.245589684732208660,\t-0.245541215731563540,\t-0.245492746117065400,\t\n-0.245444275888834520,\t-0.245395805046993790,\t-0.245347333591663580,\t-0.245298861522965010,\t-0.245250388841019300,\t-0.245201915545947610,\t-0.245153441637871140,\t-0.245104967116911070,\t\n-0.245056491983187710,\t-0.245008016236824000,\t-0.244959539877940220,\t-0.244911062906657620,\t-0.244862585323097350,\t-0.244814107127380610,\t-0.244765628319628610,\t-0.244717148899962540,\t\n-0.244668668868502720,\t-0.244620188225372100,\t-0.244571706970691030,\t-0.244523225104580660,\t-0.244474742627162260,\t-0.244426259538556980,\t-0.244377775838886060,\t-0.244329291528270680,\t\n-0.244280806606831240,\t-0.244232321074690640,\t-0.244183834931969210,\t-0.244135348178788240,\t-0.244086860815268870,\t-0.244038372841532350,\t-0.243989884257699880,\t-0.243941395063891870,\t\n-0.243892905260231220,\t-0.243844414846838300,\t-0.243795923823834360,\t-0.243747432191340600,\t-0.243698939949478280,\t-0.243650447098368580,\t-0.243601953638132780,\t-0.243553459568891210,\t\n-0.243504964890766870,\t-0.243456469603880120,\t-0.243407973708352210,\t-0.243359477204304340,\t-0.243310980091857780,\t-0.243262482371133790,\t-0.243213984042252720,\t-0.243165485105337560,\t\n-0.243116985560508670,\t-0.243068485407887340,\t-0.243019984647594780,\t-0.242971483279752270,\t-0.242922981304481030,\t-0.242874478721902350,\t-0.242825975532136610,\t-0.242777471735306780,\t\n-0.242728967331533290,\t-0.242680462320937370,\t-0.242631956703640320,\t-0.242583450479763350,\t-0.242534943649427760,\t-0.242486436212753950,\t-0.242437928169864920,\t-0.242389419520881080,\t\n-0.242340910265923660,\t-0.242292400405113990,\t-0.242243889938573290,\t-0.242195378866422890,\t-0.242146867188784030,\t-0.242098354905777160,\t-0.242049842017525250,\t-0.242001328524148740,\t\n-0.241952814425768910,\t-0.241904299722507040,\t-0.241855784414484410,\t-0.241807268501822330,\t-0.241758751984642080,\t-0.241710234863064090,\t-0.241661717137211380,\t-0.241613198807204360,\t\n-0.241564679873164350,\t-0.241516160335212640,\t-0.241467640193470560,\t-0.241419119448059330,\t-0.241370598099099470,\t-0.241322076146713970,\t-0.241273553591023260,\t-0.241225030432148680,\t\n-0.241176506670211540,\t-0.241127982305333140,\t-0.241079457337634750,\t-0.241030931767237720,\t-0.240982405594262540,\t-0.240933878818832160,\t-0.240885351441067100,\t-0.240836823461088670,\t\n-0.240788294879018180,\t-0.240739765694976960,\t-0.240691235909086310,\t-0.240642705521467580,\t-0.240594174532241220,\t-0.240545642941530270,\t-0.240497110749455230,\t-0.240448577956137420,\t\n-0.240400044561698140,\t-0.240351510566258780,\t-0.240302975969940630,\t-0.240254440772864180,\t-0.240205904975152480,\t-0.240157368576926020,\t-0.240108831578306150,\t-0.240060293979414200,\t\n-0.240011755780371480,\t-0.239963216981299410,\t-0.239914677582319300,\t-0.239866137583551600,\t-0.239817596985119450,\t-0.239769055787143300,\t-0.239720513989744500,\t-0.239671971593044430,\t\n-0.239623428597164430,\t-0.239574885002225850,\t-0.239526340808349200,\t-0.239477796015657550,\t-0.239429250624271420,\t-0.239380704634312190,\t-0.239332158045901160,\t-0.239283610859159750,\t\n-0.239235063074209300,\t-0.239186514691171190,\t-0.239137965710165960,\t-0.239089416131316650,\t-0.239040865954743830,\t-0.238992315180568820,\t-0.238943763808913020,\t-0.238895211839897810,\t\n-0.238846659273644600,\t-0.238798106110274720,\t-0.238749552349908720,\t-0.238700997992669690,\t-0.238652443038678160,\t-0.238603887488055530,\t-0.238555331340923190,\t-0.238506774597402520,\t\n-0.238458217257614900,\t-0.238409659321680900,\t-0.238361100789723580,\t-0.238312541661863550,\t-0.238263981938222120,\t-0.238215421618920790,\t-0.238166860704080860,\t-0.238118299193823800,\t\n-0.238069737088270980,\t-0.238021174387542940,\t-0.237972611091762880,\t-0.237924047201051230,\t-0.237875482715529500,\t-0.237826917635319050,\t-0.237778351960541310,\t-0.237729785691317700,\t\n-0.237681218827769600,\t-0.237632651370017630,\t-0.237584083318184870,\t-0.237535514672391900,\t-0.237486945432760140,\t-0.237438375599411030,\t-0.237389805172465970,\t-0.237341234152046390,\t\n-0.237292662538272890,\t-0.237244090331268590,\t-0.237195517531154030,\t-0.237146944138050710,\t-0.237098370152080020,\t-0.237049795573363390,\t-0.237001220402022290,\t-0.236952644638178140,\t\n-0.236904068281951510,\t-0.236855491333465590,\t-0.236806913792840910,\t-0.236758335660198970,\t-0.236709756935661180,\t-0.236661177619348990,\t-0.236612597711383880,\t-0.236564017211886380,\t\n-0.236515436120979720,\t-0.236466854438784490,\t-0.236418272165422080,\t-0.236369689301014010,\t-0.236321105845681720,\t-0.236272521799546660,\t-0.236223937162730320,\t-0.236175351935353240,\t\n-0.236126766117538660,\t-0.236078179709407170,\t-0.236029592711080230,\t-0.235981005122679300,\t-0.235932416944325850,\t-0.235883828176141370,\t-0.235835238818247310,\t-0.235786648870764310,\t\n-0.235738058333815530,\t-0.235689467207521620,\t-0.235640875492004020,\t-0.235592283187384260,\t-0.235543690293783780,\t-0.235495096811324050,\t-0.235446502740125740,\t-0.235397908080312050,\t\n-0.235349312832003550,\t-0.235300716995321820,\t-0.235252120570388250,\t-0.235203523557324410,\t-0.235154925956251730,\t-0.235106327767291760,\t-0.235057728990565100,\t-0.235009129626195000,\t\n-0.234960529674302030,\t-0.234911929135007770,\t-0.234863328008433680,\t-0.234814726294701290,\t-0.234766123993932070,\t-0.234717521106247520,\t-0.234668917631768340,\t-0.234620313570617690,\t\n-0.234571708922916290,\t-0.234523103688785590,\t-0.234474497868347150,\t-0.234425891461722460,\t-0.234377284469033050,\t-0.234328676890399550,\t-0.234280068725945230,\t-0.234231459975790730,\t\n-0.234182850640057590,\t-0.234134240718867320,\t-0.234085630212341440,\t-0.234037019120601510,\t-0.233988407443769000,\t-0.233939795181964620,\t-0.233891182335311640,\t-0.233842568903930680,\t\n-0.233793954887943300,\t-0.233745340287471020,\t-0.233696725102635420,\t-0.233648109333557980,\t-0.233599492980359420,\t-0.233550876043162990,\t-0.233502258522089360,\t-0.233453640417260080,\t\n-0.233405021728796710,\t-0.233356402456820790,\t-0.233307782601453850,\t-0.233259162162817470,\t-0.233210541141032320,\t-0.233161919536221670,\t-0.233113297348506220,\t-0.233064674578007530,\t\n-0.233016051224847170,\t-0.232967427289146660,\t-0.232918802771027580,\t-0.232870177670611490,\t-0.232821551988019130,\t-0.232772925723373710,\t-0.232724298876795990,\t-0.232675671448407530,\t\n-0.232627043438329910,\t-0.232578414846684650,\t-0.232529785673593360,\t-0.232481155919176760,\t-0.232432525583558120,\t-0.232383894666858160,\t-0.232335263169198470,\t-0.232286631090700610,\t\n-0.232237998431486180,\t-0.232189365191676770,\t-0.232140731371393930,\t-0.232092096970758420,\t-0.232043461989893510,\t-0.231994826428919940,\t-0.231946190287959320,\t-0.231897553567133210,\t\n-0.231848916266563230,\t-0.231800278386370960,\t-0.231751639926677990,\t-0.231703000887605040,\t-0.231654361269275470,\t-0.231605721071809990,\t-0.231557080295330200,\t-0.231508438939957730,\t\n-0.231459797005814150,\t-0.231411154493021080,\t-0.231362511401699280,\t-0.231313867731972040,\t-0.231265223483960140,\t-0.231216578657785170,\t-0.231167933253568770,\t-0.231119287271432520,\t\n-0.231070640711498050,\t-0.231021993573887000,\t-0.230973345858720090,\t-0.230924697566120690,\t-0.230876048696209530,\t-0.230827399249108250,\t-0.230778749224938490,\t-0.230730098623821820,\t\n-0.230681447445879930,\t-0.230632795691233570,\t-0.230584143360006070,\t-0.230535490452318220,\t-0.230486836968291610,\t-0.230438182908047930,\t-0.230389528271708800,\t-0.230340873059395850,\t\n-0.230292217271230730,\t-0.230243560907334170,\t-0.230194903967829600,\t-0.230146246452837770,\t-0.230097588362480290,\t-0.230048929696878870,\t-0.230000270456155120,\t-0.229951610640430680,\t\n-0.229902950249827240,\t-0.229854289284465520,\t-0.229805627744468970,\t-0.229756965629958370,\t-0.229708302941055320,\t-0.229659639677881530,\t-0.229610975840558650,\t-0.229562311429208300,\t\n-0.229513646443951340,\t-0.229464980884911100,\t-0.229416314752208420,\t-0.229367648045964960,\t-0.229318980766302360,\t-0.229270312913342320,\t-0.229221644487206500,\t-0.229172975488016570,\t\n-0.229124305915893330,\t-0.229075635770960210,\t-0.229026965053338000,\t-0.228978293763148350,\t-0.228929621900512970,\t-0.228880949465553570,\t-0.228832276458391770,\t-0.228783602879149260,\t\n-0.228734928727946900,\t-0.228686254004908080,\t-0.228637578710153640,\t-0.228588902843805230,\t-0.228540226405984560,\t-0.228491549396813350,\t-0.228442871816413260,\t-0.228394193664905130,\t\n-0.228345514942412370,\t-0.228296835649055810,\t-0.228248155784957160,\t-0.228199475350238160,\t-0.228150794345020450,\t-0.228102112769425740,\t-0.228053430623575750,\t-0.228004747907591340,\t\n-0.227956064621595900,\t-0.227907380765710320,\t-0.227858696340056290,\t-0.227810011344755510,\t-0.227761325779929690,\t-0.227712639645700570,\t-0.227663952942188970,\t-0.227615265669518370,\t\n-0.227566577827809590,\t-0.227517889417184400,\t-0.227469200437764450,\t-0.227420510889671520,\t-0.227371820773027310,\t-0.227323130087953520,\t-0.227274438834571070,\t-0.227225747013003380,\t\n-0.227177054623371320,\t-0.227128361665796640,\t-0.227079668140401040,\t-0.227030974047306270,\t-0.226982279386634070,\t-0.226933584158505310,\t-0.226884888363043440,\t-0.226836192000369360,\t\n-0.226787495070604810,\t-0.226738797573871500,\t-0.226690099510291200,\t-0.226641400879985660,\t-0.226592701683076630,\t-0.226544001919684960,\t-0.226495301589934170,\t-0.226446600693945090,\t\n-0.226397899231839560,\t-0.226349197203739250,\t-0.226300494609765950,\t-0.226251791450041400,\t-0.226203087724687390,\t-0.226154383433824800,\t-0.226105678577577100,\t-0.226056973156065210,\t\n-0.226008267169410890,\t-0.225959560617735920,\t-0.225910853501162020,\t-0.225862145819811010,\t-0.225813437573804620,\t-0.225764728763263760,\t-0.225716019388311960,\t-0.225667309449070120,\t\n-0.225618598945660000,\t-0.225569887878203370,\t-0.225521176246822020,\t-0.225472464051637730,\t-0.225423751292771420,\t-0.225375037970346610,\t-0.225326324084484190,\t-0.225277609635305960,\t\n-0.225228894622933720,\t-0.225180179047489240,\t-0.225131462909094300,\t-0.225082746207870720,\t-0.225034028943939400,\t-0.224985311117423870,\t-0.224936592728445070,\t-0.224887873777124770,\t\n-0.224839154263584810,\t-0.224790434187946950,\t-0.224741713550333010,\t-0.224692992350863900,\t-0.224644270589663210,\t-0.224595548266851820,\t-0.224546825382551550,\t-0.224498101936884240,\t\n-0.224449377929971690,\t-0.224400653361935650,\t-0.224351928232898010,\t-0.224303202542979670,\t-0.224254476292304190,\t-0.224205749480992530,\t-0.224157022109166490,\t-0.224108294176947890,\t\n-0.224059565684458560,\t-0.224010836631820310,\t-0.223962107019154120,\t-0.223913376846583520,\t-0.223864646114229460,\t-0.223815914822213800,\t-0.223767182970658340,\t-0.223718450559684950,\t\n-0.223669717589415420,\t-0.223620984059971580,\t-0.223572249971474430,\t-0.223523515324047520,\t-0.223474780117811830,\t-0.223426044352889180,\t-0.223377308029401420,\t-0.223328571147470400,\t\n-0.223279833707217930,\t-0.223231095708765900,\t-0.223182357152235250,\t-0.223133618037749560,\t-0.223084878365429840,\t-0.223036138135397940,\t-0.222987397347775670,\t-0.222938656002684920,\t\n-0.222889914100247530,\t-0.222841171640585340,\t-0.222792428623819370,\t-0.222743685050073190,\t-0.222694940919467820,\t-0.222646196232125060,\t-0.222597450988166830,\t-0.222548705187714970,\t\n-0.222499958830891350,\t-0.222451211917816970,\t-0.222402464448615420,\t-0.222353716423407700,\t-0.222304967842315710,\t-0.222256218705461280,\t-0.222207469012966310,\t-0.222158718764952660,\t\n-0.222109967961542230,\t-0.222061216602856020,\t-0.222012464689017610,\t-0.221963712220148050,\t-0.221914959196369220,\t-0.221866205617802960,\t-0.221817451484571220,\t-0.221768696796795840,\t\n-0.221719941554597840,\t-0.221671185758100880,\t-0.221622429407425940,\t-0.221573672502694910,\t-0.221524915044029710,\t-0.221476157031552240,\t-0.221427398465384370,\t-0.221378639345648000,\t\n-0.221329879672464150,\t-0.221281119445956490,\t-0.221232358666246020,\t-0.221183597333454660,\t-0.221134835447704290,\t-0.221086073009116840,\t-0.221037310017814210,\t-0.220988546473917440,\t\n-0.220939782377550190,\t-0.220891017728833460,\t-0.220842252527889190,\t-0.220793486774839290,\t-0.220744720469805670,\t-0.220695953612910250,\t-0.220647186204274950,\t-0.220598418244020820,\t\n-0.220549649732271510,\t-0.220500880669148050,\t-0.220452111054772410,\t-0.220403340889266500,\t-0.220354570172752230,\t-0.220305798905351540,\t-0.220257027087186360,\t-0.220208254718377740,\t\n-0.220159481799049340,\t-0.220110708329322220,\t-0.220061934309318360,\t-0.220013159739159660,\t-0.219964384618968060,\t-0.219915608948865500,\t-0.219866832728973890,\t-0.219818055959414370,\t\n-0.219769278640310540,\t-0.219720500771783540,\t-0.219671722353955300,\t-0.219622943386947710,\t-0.219574163870882800,\t-0.219525383805882460,\t-0.219476603192067800,\t-0.219427822029562510,\t\n-0.219379040318487650,\t-0.219330258058965190,\t-0.219281475251117100,\t-0.219232691895065310,\t-0.219183907990931790,\t-0.219135123538838520,\t-0.219086338538906550,\t-0.219037552991259600,\t\n-0.218988766896018760,\t-0.218939980253306020,\t-0.218891193063243340,\t-0.218842405325952670,\t-0.218793617041555980,\t-0.218744828210174380,\t-0.218696038831931560,\t-0.218647248906948670,\t\n-0.218598458435347640,\t-0.218549667417250490,\t-0.218500875852779160,\t-0.218452083742055630,\t-0.218403291085201900,\t-0.218354497882339070,\t-0.218305704133590850,\t-0.218256909839078390,\t\n-0.218208114998923650,\t-0.218159319613248640,\t-0.218110523682175290,\t-0.218061727205825670,\t-0.218012930184320830,\t-0.217964132617784550,\t-0.217915334506337960,\t-0.217866535850103020,\t\n-0.217817736649201730,\t-0.217768936903756090,\t-0.217720136613888120,\t-0.217671335779719810,\t-0.217622534401372300,\t-0.217573732478969300,\t-0.217524930012631980,\t-0.217476127002482340,\t\n-0.217427323448642380,\t-0.217378519351234120,\t-0.217329714710379540,\t-0.217280909526200690,\t-0.217232103798818720,\t-0.217183297528357330,\t-0.217134490714937680,\t-0.217085683358681840,\t\n-0.217036875459711760,\t-0.216988067018149520,\t-0.216939258034117090,\t-0.216890448507736530,\t-0.216841638439128960,\t-0.216792827828418190,\t-0.216744016675725320,\t-0.216695204981172450,\t\n-0.216646392744881540,\t-0.216597579966974650,\t-0.216548766647573800,\t-0.216499952786800180,\t-0.216451138384777560,\t-0.216402323441627080,\t-0.216353507957470770,\t-0.216304691932430710,\t\n-0.216255875366628940,\t-0.216207058260187430,\t-0.216158240613228330,\t-0.216109422425872720,\t-0.216060603698244450,\t-0.216011784430464650,\t-0.215962964622655410,\t-0.215914144274938740,\t\n-0.215865323387436720,\t-0.215816501960271380,\t-0.215767679993563940,\t-0.215718857487438130,\t-0.215670034442015210,\t-0.215621210857417200,\t-0.215572386733766160,\t-0.215523562071184140,\t\n-0.215474736869793240,\t-0.215425911129715460,\t-0.215377084851072070,\t-0.215328258033986840,\t-0.215279430678580940,\t-0.215230602784976470,\t-0.215181774353295500,\t-0.215132945383660070,\t\n-0.215084115876192310,\t-0.215035285831013360,\t-0.214986455248247080,\t-0.214937624128014680,\t-0.214888792470438210,\t-0.214839960275639730,\t-0.214791127543741380,\t-0.214742294274865210,\t\n-0.214693460469133290,\t-0.214644626126666850,\t-0.214595791247589730,\t-0.214546955832023130,\t-0.214498119880089130,\t-0.214449283391909830,\t-0.214400446367607330,\t-0.214351608807303700,\t\n-0.214302770711121050,\t-0.214253932079180640,\t-0.214205092911606220,\t-0.214156253208519110,\t-0.214107412970041350,\t-0.214058572196295040,\t-0.214009730887402330,\t-0.213960889043485260,\t\n-0.213912046664665120,\t-0.213863203751065710,\t-0.213814360302808320,\t-0.213765516320015030,\t-0.213716671802807930,\t-0.213667826751309160,\t-0.213618981165640820,\t-0.213570135045925010,\t\n-0.213521288392283020,\t-0.213472441204838690,\t-0.213423593483713230,\t-0.213374745229028770,\t-0.213325896440907490,\t-0.213277047119471430,\t-0.213228197264842790,\t-0.213179346877143630,\t\n-0.213130495956495250,\t-0.213081644503021470,\t-0.213032792516843620,\t-0.212983939998083770,\t-0.212935086946864060,\t-0.212886233363306640,\t-0.212837379247533650,\t-0.212788524599666320,\t\n-0.212739669419828550,\t-0.212690813708141640,\t-0.212641957464727670,\t-0.212593100689708800,\t-0.212544243383207180,\t-0.212495385545344970,\t-0.212446527176244290,\t-0.212397668276026410,\t\n-0.212348808844815250,\t-0.212299948882732040,\t-0.212251088389898980,\t-0.212202227366438180,\t-0.212153365812471820,\t-0.212104503728122060,\t-0.212055641113510160,\t-0.212006777968760020,\t\n-0.211957914293992940,\t-0.211909050089331090,\t-0.211860185354896590,\t-0.211811320090811630,\t-0.211762454297198390,\t-0.211713587974179000,\t-0.211664721121874760,\t-0.211615853740409620,\t\n-0.211566985829904820,\t-0.211518117390482540,\t-0.211469248422265000,\t-0.211420378925374320,\t-0.211371508899932700,\t-0.211322638346062320,\t-0.211273767263884440,\t-0.211224895653523040,\t\n-0.211176023515099400,\t-0.211127150848735710,\t-0.211078277654554110,\t-0.211029403932676830,\t-0.210980529683226060,\t-0.210931654906323070,\t-0.210882779602091840,\t-0.210833903770653640,\t\n-0.210785027412130680,\t-0.210736150526645160,\t-0.210687273114319260,\t-0.210638395175275190,\t-0.210589516709635110,\t-0.210540637717520380,\t-0.210491758199054910,\t-0.210442878154360080,\t\n-0.210393997583558030,\t-0.210345116486770980,\t-0.210296234864121160,\t-0.210247352715730720,\t-0.210198470041721930,\t-0.210149586842216100,\t-0.210100703117337140,\t-0.210051818867206450,\t\n-0.210002934091946200,\t-0.209954048791678620,\t-0.209905162966525920,\t-0.209856276616610300,\t-0.209807389742053120,\t-0.209758502342978350,\t-0.209709614419507330,\t-0.209660725971762250,\t\n-0.209611836999865380,\t-0.209562947503938890,\t-0.209514057484105040,\t-0.209465166940486060,\t-0.209416275873203300,\t-0.209367384282380690,\t-0.209318492168139640,\t-0.209269599530602340,\t\n-0.209220706369891070,\t-0.209171812686128030,\t-0.209122918479435430,\t-0.209074023749934700,\t-0.209025128497749760,\t-0.208976232723002000,\t-0.208927336425813650,\t-0.208878439606306980,\t\n-0.208829542264604210,\t-0.208780644400827550,\t-0.208731746015099310,\t-0.208682847107540840,\t-0.208633947678276120,\t-0.208585047727426500,\t-0.208536147255114300,\t-0.208487246261461700,\t\n-0.208438344746591010,\t-0.208389442710624430,\t-0.208340540153684280,\t-0.208291637075891880,\t-0.208242733477371270,\t-0.208193829358243820,\t-0.208144924718631800,\t-0.208096019558657470,\t\n-0.208047113878443100,\t-0.207998207678110920,\t-0.207949300957782380,\t-0.207900393717581460,\t-0.207851485957629530,\t-0.207802577678048880,\t-0.207753668878961820,\t-0.207704759560490560,\t\n-0.207655849722757410,\t-0.207606939365884650,\t-0.207558028489993660,\t-0.207509117095208450,\t-0.207460205181650480,\t-0.207411292749441980,\t-0.207362379798705250,\t-0.207313466329562570,\t\n-0.207264552342136230,\t-0.207215637836548480,\t-0.207166722812920810,\t-0.207117807271377190,\t-0.207068891212039030,\t-0.207019974635028660,\t-0.206971057540468350,\t-0.206922139928480380,\t\n-0.206873221799187100,\t-0.206824303152709860,\t-0.206775383989172750,\t-0.206726464308697180,\t-0.206677544111405430,\t-0.206628623397419830,\t-0.206579702166862690,\t-0.206530780419856290,\t\n-0.206481858156522920,\t-0.206432935376984040,\t-0.206384012081363700,\t-0.206335088269783310,\t-0.206286163942365240,\t-0.206237239099231720,\t-0.206188313740505110,\t-0.206139387866307730,\t\n-0.206090461476760990,\t-0.206041534571988980,\t-0.205992607152113150,\t-0.205943679217255790,\t-0.205894750767539210,\t-0.205845821803085780,\t-0.205796892324017790,\t-0.205747962330457560,\t\n-0.205699031822526580,\t-0.205650100800348870,\t-0.205601169264045900,\t-0.205552237213740020,\t-0.205503304649553550,\t-0.205454371571608810,\t-0.205405437980028140,\t-0.205356503874933870,\t\n-0.205307569256447470,\t-0.205258634124693030,\t-0.205209698479792010,\t-0.205160762321866720,\t-0.205111825651039550,\t-0.205062888467432810,\t-0.205013950771168820,\t-0.204965012562369130,\t\n-0.204916073841157760,\t-0.204867134607656180,\t-0.204818194861986800,\t-0.204769254604271920,\t-0.204720313834633900,\t-0.204671372553195090,\t-0.204622430760077860,\t-0.204573488455403660,\t\n-0.204524545639296650,\t-0.204475602311878250,\t-0.204426658473270850,\t-0.204377714123596790,\t-0.204328769262978470,\t-0.204279823891538200,\t-0.204230878009398380,\t-0.204181931616680500,\t\n-0.204132984713508660,\t-0.204084037300004350,\t-0.204035089376289970,\t-0.203986140942487850,\t-0.203937191998720370,\t-0.203888242545109930,\t-0.203839292581777990,\t-0.203790342108848720,\t\n-0.203741391126443570,\t-0.203692439634684950,\t-0.203643487633695220,\t-0.203594535123596790,\t-0.203545582104512010,\t-0.203496628576563280,\t-0.203447674539872110,\t-0.203398719994562600,\t\n-0.203349764940756320,\t-0.203300809378575610,\t-0.203251853308142910,\t-0.203202896729580560,\t-0.203153939643010960,\t-0.203104982048555620,\t-0.203056023946338730,\t-0.203007065336481750,\t\n-0.202958106219107120,\t-0.202909146594337230,\t-0.202860186462294480,\t-0.202811225823101270,\t-0.202762264676879970,\t-0.202713303023752150,\t-0.202664340863841940,\t-0.202615378197270880,\t\n-0.202566415024161370,\t-0.202517451344635830,\t-0.202468487158816660,\t-0.202419522466826260,\t-0.202370557268787080,\t-0.202321591564820630,\t-0.202272625355051060,\t-0.202223658639599930,\t\n-0.202174691418589650,\t-0.202125723692142630,\t-0.202076755460381310,\t-0.202027786723428110,\t-0.201978817481404590,\t-0.201929847734434870,\t-0.201880877482640530,\t-0.201831906726144010,\t\n-0.201782935465067730,\t-0.201733963699534090,\t-0.201684991429665530,\t-0.201636018655584530,\t-0.201587045377412590,\t-0.201538071595273930,\t-0.201489097309290040,\t-0.201440122519583460,\t\n-0.201391147226276550,\t-0.201342171429491760,\t-0.201293195129351570,\t-0.201244218325978390,\t-0.201195241019493760,\t-0.201146263210021940,\t-0.201097284897684440,\t-0.201048306082603740,\t\n-0.200999326764902260,\t-0.200950346944702460,\t-0.200901366622126790,\t-0.200852385797296860,\t-0.200803404470336820,\t-0.200754422641368280,\t-0.200705440310513660,\t-0.200656457477895460,\t\n-0.200607474143636110,\t-0.200558490307858080,\t-0.200509505970683820,\t-0.200460521132234920,\t-0.200411535792635570,\t-0.200362549952007420,\t-0.200313563610472870,\t-0.200264576768154400,\t\n-0.200215589425174510,\t-0.200166601581655640,\t-0.200117613237719400,\t-0.200068624393489990,\t-0.200019635049089040,\t-0.199970645204638970,\t-0.199921654860262310,\t-0.199872664016081500,\t\n-0.199823672672219040,\t-0.199774680828797400,\t-0.199725688485938190,\t-0.199676695643765610,\t-0.199627702302401320,\t-0.199578708461967760,\t-0.199529714122587410,\t-0.199480719284382800,\t\n-0.199431723947476380,\t-0.199382728111990650,\t-0.199333731778047250,\t-0.199284734945770370,\t-0.199235737615281660,\t-0.199186739786703590,\t-0.199137741460158700,\t-0.199088742635769420,\t\n-0.199039743313658310,\t-0.198990743493946960,\t-0.198941743176759640,\t-0.198892742362217930,\t-0.198843741050444390,\t-0.198794739241561490,\t-0.198745736935691750,\t-0.198696734132957660,\t\n-0.198647730833481720,\t-0.198598727037385600,\t-0.198549722744793540,\t-0.198500717955827160,\t-0.198451712670608990,\t-0.198402706889261540,\t-0.198353700611907320,\t-0.198304693838668860,\t\n-0.198255686569668630,\t-0.198206678805028350,\t-0.198157670544872240,\t-0.198108661789321930,\t-0.198059652538500000,\t-0.198010642792528920,\t-0.197961632551531210,\t-0.197912621815629460,\t\n-0.197863610584945250,\t-0.197814598859602900,\t-0.197765586639724070,\t-0.197716573925431240,\t-0.197667560716846990,\t-0.197618547014093840,\t-0.197569532817294340,\t-0.197520518126570980,\t\n-0.197471502942045460,\t-0.197422487263842070,\t-0.197373471092082450,\t-0.197324454426889150,\t-0.197275437268384730,\t-0.197226419616691680,\t-0.197177401471932610,\t-0.197128382834229180,\t\n-0.197079363703705630,\t-0.197030344080483700,\t-0.196981323964685870,\t-0.196932303356434770,\t-0.196883282255852890,\t-0.196834260663062810,\t-0.196785238578187080,\t-0.196736216001347390,\t\n-0.196687192932668010,\t-0.196638169372270660,\t-0.196589145320277910,\t-0.196540120776812270,\t-0.196491095741996330,\t-0.196442070215952640,\t-0.196393044198802940,\t-0.196344017690671470,\t\n-0.196294990691679970,\t-0.196245963201950980,\t-0.196196935221607080,\t-0.196147906750770870,\t-0.196098877789564860,\t-0.196049848338111680,\t-0.196000818396532990,\t-0.195951787964953130,\t\n-0.195902757043493800,\t-0.195853725632277600,\t-0.195804693731427060,\t-0.195755661341064780,\t-0.195706628461313370,\t-0.195657595092295380,\t-0.195608561234132530,\t-0.195559526886949160,\t\n-0.195510492050866960,\t-0.195461456726008510,\t-0.195412420912496440,\t-0.195363384610453330,\t-0.195314347820001730,\t-0.195265310541264280,\t-0.195216272774362680,\t-0.195167234519421280,\t\n-0.195118195776561780,\t-0.195069156545906790,\t-0.195020116827578920,\t-0.194971076621700740,\t-0.194922035928394880,\t-0.194872994747783050,\t-0.194823953079989620,\t-0.194774910925136300,\t\n-0.194725868283345700,\t-0.194676825154740440,\t-0.194627781539443100,\t-0.194578737437576310,\t-0.194529692849262690,\t-0.194480647774623950,\t-0.194431602213784470,\t-0.194382556166865980,\t\n-0.194333509633991120,\t-0.194284462615282450,\t-0.194235415110862650,\t-0.194186367120854330,\t-0.194137318645379170,\t-0.194088269684561610,\t-0.194039220238523380,\t-0.193990170307387110,\t\n-0.193941119891275410,\t-0.193892068990310890,\t-0.193843017604616200,\t-0.193793965734313980,\t-0.193744913379525980,\t-0.193695860540376550,\t-0.193646807216987490,\t-0.193597753409481380,\t\n-0.193548699117980920,\t-0.193499644342608690,\t-0.193450589083487360,\t-0.193401533340738670,\t-0.193352477114487050,\t-0.193303420404854210,\t-0.193254363211962820,\t-0.193205305535935540,\t\n-0.193156247376894990,\t-0.193107188734963800,\t-0.193058129610264670,\t-0.193009070002919340,\t-0.192960009913052180,\t-0.192910949340785010,\t-0.192861888286240480,\t-0.192812826749541200,\t\n-0.192763764730809890,\t-0.192714702230169150,\t-0.192665639247741630,\t-0.192616575783649190,\t-0.192567511838016150,\t-0.192518447410964330,\t-0.192469382502616420,\t-0.192420317113095010,\t\n-0.192371251242522830,\t-0.192322184891022540,\t-0.192273118058716750,\t-0.192224050745727320,\t-0.192174982952178640,\t-0.192125914678192480,\t-0.192076845923891540,\t-0.192027776689398490,\t\n-0.191978706974836020,\t-0.191929636780326730,\t-0.191880566105992520,\t-0.191831494951957750,\t-0.191782423318344250,\t-0.191733351205274680,\t-0.191684278612871740,\t-0.191635205541258120,\t\n-0.191586131990556460,\t-0.191537057960889490,\t-0.191487983452379000,\t-0.191438908465149410,\t-0.191389832999322550,\t-0.191340757055021130,\t-0.191291680632367790,\t-0.191242603731485240,\t\n-0.191193526352496200,\t-0.191144448495522480,\t-0.191095370160688500,\t-0.191046291348116100,\t-0.190997212057927970,\t-0.190948132290246820,\t-0.190899052045195330,\t-0.190849971322896220,\t\n-0.190800890123472150,\t-0.190751808447045010,\t-0.190702726293739220,\t-0.190653643663676600,\t-0.190604560556979890,\t-0.190555476973771760,\t-0.190506392914174950,\t-0.190457308378312150,\t\n-0.190408223366305220,\t-0.190359137878278600,\t-0.190310051914354130,\t-0.190260965474654510,\t-0.190211878559302490,\t-0.190162791168420800,\t-0.190113703302132120,\t-0.190064614960559150,\t\n-0.190015526143823800,\t-0.189966436852050500,\t-0.189917347085361120,\t-0.189868256843878370,\t-0.189819166127724980,\t-0.189770074937023660,\t-0.189720983271897150,\t-0.189671891132468180,\t\n-0.189622798518858630,\t-0.189573705431192950,\t-0.189524611869592990,\t-0.189475517834181510,\t-0.189426423325081250,\t-0.189377328342414910,\t-0.189328232886305260,\t-0.189279136956875040,\t\n-0.189230040554246080,\t-0.189180943678542910,\t-0.189131846329887390,\t-0.189082748508402230,\t-0.189033650214210200,\t-0.188984551447434060,\t-0.188935452208196550,\t-0.188886352496619500,\t\n-0.188837252312827470,\t-0.188788151656942290,\t-0.188739050529086770,\t-0.188689948929383570,\t-0.188640846857955540,\t-0.188591744314925370,\t-0.188542641300415840,\t-0.188493537814548860,\t\n-0.188444433857448880,\t-0.188395329429237810,\t-0.188346224530038440,\t-0.188297119159973490,\t-0.188248013319165770,\t-0.188198907007738000,\t-0.188149800225812070,\t-0.188100692973512530,\t\n-0.188051585250961270,\t-0.188002477058281050,\t-0.187953368395594620,\t-0.187904259263024760,\t-0.187855149660694280,\t-0.187806039588725880,\t-0.187756929047241560,\t-0.187707818036365770,\t\n-0.187658706556220410,\t-0.187609594606928330,\t-0.187560482188612240,\t-0.187511369301394950,\t-0.187462255945399230,\t-0.187413142120747000,\t-0.187364027827562780,\t-0.187314913065968510,\t\n-0.187265797836086930,\t-0.187216682138040880,\t-0.187167565971953110,\t-0.187118449337946440,\t-0.187069332236143640,\t-0.187020214666666630,\t-0.186971096629639950,\t-0.186921978125185550,\t\n-0.186872859153426190,\t-0.186823739714484680,\t-0.186774619808483840,\t-0.186725499435546420,\t-0.186676378595795280,\t-0.186627257289352310,\t-0.186578135516342060,\t-0.186529013276886480,\t\n-0.186479890571108360,\t-0.186430767399130530,\t-0.186381643761075770,\t-0.186332519657066900,\t-0.186283395087226740,\t-0.186234270051677230,\t-0.186185144550542890,\t-0.186136018583945680,\t\n-0.186086892152008470,\t-0.186037765254853990,\t-0.185988637892605110,\t-0.185939510065384640,\t-0.185890381773314520,\t-0.185841253016519330,\t-0.185792123795120970,\t-0.185742994109242330,\t\n-0.185693863959006190,\t-0.185644733344535410,\t-0.185595602265952790,\t-0.185546470723381150,\t-0.185497338716942490,\t-0.185448206246761340,\t-0.185399073312959660,\t-0.185349939915660320,\t\n-0.185300806054986110,\t-0.185251671731059890,\t-0.185202536944004510,\t-0.185153401693941900,\t-0.185104265980996660,\t-0.185055129805290740,\t-0.185005993166947020,\t-0.184956856066088300,\t\n-0.184907718502837440,\t-0.184858580477317290,\t-0.184809441989650690,\t-0.184760303039959610,\t-0.184711163628368650,\t-0.184662023754999790,\t-0.184612883419975870,\t-0.184563742623419710,\t\n-0.184514601365454220,\t-0.184465459646202230,\t-0.184416317465785680,\t-0.184367174824329240,\t-0.184318031721954880,\t-0.184268888158785420,\t-0.184219744134943740,\t-0.184170599650552690,\t\n-0.184121454705735150,\t-0.184072309300614000,\t-0.184023163435311170,\t-0.183974017109951320,\t-0.183924870324656400,\t-0.183875723079549330,\t-0.183826575374752940,\t-0.183777427210390140,\t\n-0.183728278586583750,\t-0.183679129503456660,\t-0.183629979961130870,\t-0.183580829959731020,\t-0.183531679499379100,\t-0.183482528580197950,\t-0.183433377202310510,\t-0.183384225365839590,\t\n-0.183335073070908160,\t-0.183285920317638130,\t-0.183236767106154190,\t-0.183187613436578330,\t-0.183138459309033440,\t-0.183089304723642380,\t-0.183040149680528090,\t-0.182990994179813400,\t\n-0.182941838221621240,\t-0.182892681806073630,\t-0.182843524933295140,\t-0.182794367603407860,\t-0.182745209816534690,\t-0.182696051572798470,\t-0.182646892872322110,\t-0.182597733715228530,\t\n-0.182548574101640630,\t-0.182499414031680410,\t-0.182450253505472500,\t-0.182401092523138990,\t-0.182351931084802740,\t-0.182302769190586660,\t-0.182253606840613670,\t-0.182204444035006660,\t\n-0.182155280773887650,\t-0.182106117057381330,\t-0.182056952885609720,\t-0.182007788258695710,\t-0.181958623176762230,\t-0.181909457639932190,\t-0.181860291648328540,\t-0.181811125202074130,\t\n-0.181761958301291020,\t-0.181712790946103930,\t-0.181663623136634840,\t-0.181614454873006680,\t-0.181565286155342400,\t-0.181516116983764880,\t-0.181466947358397110,\t-0.181417777279361060,\t\n-0.181368606746781460,\t-0.181319435760780330,\t-0.181270264321480630,\t-0.181221092429005250,\t-0.181171920083477160,\t-0.181122747285019260,\t-0.181073574033754490,\t-0.181024400329804910,\t\n-0.180975226173295200,\t-0.180926051564347430,\t-0.180876876503084540,\t-0.180827700989629440,\t-0.180778525024105100,\t-0.180729348606634450,\t-0.180680171737340410,\t-0.180630994416345090,\t\n-0.180581816643773150,\t-0.180532638419746650,\t-0.180483459744388590,\t-0.180434280617821850,\t-0.180385101040169420,\t-0.180335921011554240,\t-0.180286740532098370,\t-0.180237559601926530,\t\n-0.180188378221160790,\t-0.180139196389924120,\t-0.180090014108339440,\t-0.180040831376529740,\t-0.179991648194617960,\t-0.179942464562727060,\t-0.179893280480979110,\t-0.179844095949498850,\t\n-0.179794910968408330,\t-0.179745725537830550,\t-0.179696539657888450,\t-0.179647353328704990,\t-0.179598166550403170,\t-0.179548979323105930,\t-0.179499791646935360,\t-0.179450603522016170,\t\n-0.179401414948470510,\t-0.179352225926421280,\t-0.179303036455991490,\t-0.179253846537304110,\t-0.179204656170482120,\t-0.179155465355647610,\t-0.179106274092925320,\t-0.179057082382437340,\t\n-0.179007890224306630,\t-0.178958697618656240,\t-0.178909504565609080,\t-0.178860311065288160,\t-0.178811117117816470,\t-0.178761922723316090,\t-0.178712727881911810,\t-0.178663532593725690,\t\n-0.178614336858880730,\t-0.178565140677499960,\t-0.178515944049706300,\t-0.178466746975622810,\t-0.178417549455371580,\t-0.178368351489077340,\t-0.178319153076862220,\t-0.178269954218849200,\t\n-0.178220754915161320,\t-0.178171555165921540,\t-0.178122354971252890,\t-0.178073154331278320,\t-0.178023953246120030,\t-0.177974751715902710,\t-0.177925549740748510,\t-0.177876347320780420,\t\n-0.177827144456121490,\t-0.177777941146894690,\t-0.177728737393223040,\t-0.177679533195229530,\t-0.177630328553036340,\t-0.177581123466768190,\t-0.177531917936547210,\t-0.177482711962496460,\t\n-0.177433505544738940,\t-0.177384298683397640,\t-0.177335091378595600,\t-0.177285883630454940,\t-0.177236675439100460,\t-0.177187466804654280,\t-0.177138257727239460,\t-0.177089048206978960,\t\n-0.177039838243995860,\t-0.176990627838413160,\t-0.176941416990353900,\t-0.176892205699940210,\t-0.176842993967296890,\t-0.176793781792546070,\t-0.176744569175810830,\t-0.176695356117214130,\t\n-0.176646142616879050,\t-0.176596928674928630,\t-0.176547714291485860,\t-0.176498499466672950,\t-0.176449284200614680,\t-0.176400068493433180,\t-0.176350852345251500,\t-0.176301635756192700,\t\n-0.176252418726379810,\t-0.176203201255935860,\t-0.176153983344983060,\t-0.176104764993646160,\t-0.176055546202047330,\t-0.176006326970309660,\t-0.175957107298556180,\t-0.175907887186909920,\t\n-0.175858666635493930,\t-0.175809445644431290,\t-0.175760224213844160,\t-0.175711002343857340,\t-0.175661780034593010,\t-0.175612557286174230,\t-0.175563334098724040,\t-0.175514110472365560,\t\n-0.175464886407221770,\t-0.175415661903414900,\t-0.175366436961069740,\t-0.175317211580308500,\t-0.175267985761254240,\t-0.175218759504029990,\t-0.175169532808758850,\t-0.175120305675563890,\t\n-0.175071078104568150,\t-0.175021850095893860,\t-0.174972621649665820,\t-0.174923392766006210,\t-0.174874163445038120,\t-0.174824933686884620,\t-0.174775703491668790,\t-0.174726472859513700,\t\n-0.174677241790542420,\t-0.174628010284877180,\t-0.174578778342642770,\t-0.174529545963961420,\t-0.174480313148956210,\t-0.174431079897750220,\t-0.174381846210466540,\t-0.174332612087228220,\t\n-0.174283377528157510,\t-0.174234142533379240,\t-0.174184907103015600,\t-0.174135671237189680,\t-0.174086434936024600,\t-0.174037198199643420,\t-0.173987961028169240,\t-0.173938723421725170,\t\n-0.173889485380433420,\t-0.173840246904418850,\t-0.173791007993803620,\t-0.173741768648710910,\t-0.173692528869263760,\t-0.173643288655585290,\t-0.173594048007798570,\t-0.173544806926026780,\t\n-0.173495565410392070,\t-0.173446323461019320,\t-0.173397081078030760,\t-0.173347838261549510,\t-0.173298595011698640,\t-0.173249351328601310,\t-0.173200107212380610,\t-0.173150862663158740,\t\n-0.173101617681060580,\t-0.173052372266208400,\t-0.173003126418725280,\t-0.172953880138734360,\t-0.172904633426358730,\t-0.172855386281721510,\t-0.172806138704945820,\t-0.172756890696153940,\t\n-0.172707642255470670,\t-0.172658393383018300,\t-0.172609144078919970,\t-0.172559894343298770,\t-0.172510644176277820,\t-0.172461393577980270,\t-0.172412142548528350,\t-0.172362891088046980,\t\n-0.172313639196658350,\t-0.172264386874485640,\t-0.172215134121651960,\t-0.172165880938280450,\t-0.172116627324494200,\t-0.172067373280416440,\t-0.172018118806169320,\t-0.171968863901877820,\t\n-0.171919608567664140,\t-0.171870352803651430,\t-0.171821096609962860,\t-0.171771839986721520,\t-0.171722582934050600,\t-0.171673325452073230,\t-0.171624067540911670,\t-0.171574809200690790,\t\n-0.171525550431532920,\t-0.171476291233561150,\t-0.171427031606898650,\t-0.171377771551668580,\t-0.171328511067994100,\t-0.171279250155997430,\t-0.171229988815803540,\t-0.171180727047534680,\t\n-0.171131464851313970,\t-0.171082202227264640,\t-0.171032939175509770,\t-0.170983675696172570,\t-0.170934411789376180,\t-0.170885147455242890,\t-0.170835882693897570,\t-0.170786617505462590,\t\n-0.170737351890061030,\t-0.170688085847816110,\t-0.170638819378850980,\t-0.170589552483288800,\t-0.170540285161252720,\t-0.170491017412865070,\t-0.170441749238250760,\t-0.170392480637532070,\t\n-0.170343211610832160,\t-0.170293942158274230,\t-0.170244672279981470,\t-0.170195401976076990,\t-0.170146131246683150,\t-0.170096860091924850,\t-0.170047588511924420,\t-0.169998316506805000,\t\n-0.169949044076689790,\t-0.169899771221701970,\t-0.169850497941964720,\t-0.169801224237601240,\t-0.169751950108733810,\t-0.169702675555487380,\t-0.169653400577984280,\t-0.169604125176347650,\t\n-0.169554849350700730,\t-0.169505573101166680,\t-0.169456296427868690,\t-0.169407019330929080,\t-0.169357741810472810,\t-0.169308463866622180,\t-0.169259185499500390,\t-0.169209906709230640,\t\n-0.169160627495936130,\t-0.169111347859740050,\t-0.169062067800765600,\t-0.169012787319135080,\t-0.168963506414973490,\t-0.168914225088403150,\t-0.168864943339547210,\t-0.168815661168528950,\t\n-0.168766378575471500,\t-0.168717095560498130,\t-0.168667812123731140,\t-0.168618528265295470,\t-0.168569243985313500,\t-0.168519959283908420,\t-0.168470674161203450,\t-0.168421388617321780,\t\n-0.168372102652386670,\t-0.168322816266521260,\t-0.168273529459847970,\t-0.168224242232491690,\t-0.168174954584574850,\t-0.168125666516220600,\t-0.168076378027552180,\t-0.168027089118692820,\t\n-0.167977799789765740,\t-0.167928510040894150,\t-0.167879219872200420,\t-0.167829929283809520,\t-0.167780638275843800,\t-0.167731346848426470,\t-0.167682055001680790,\t-0.167632762735729970,\t\n-0.167583470050697240,\t-0.167534176946705800,\t-0.167484883423878100,\t-0.167435589482339030,\t-0.167386295122210980,\t-0.167337000343617230,\t-0.167287705146680950,\t-0.167238409531525410,\t\n-0.167189113498273870,\t-0.167139817047048640,\t-0.167090520177974740,\t-0.167041222891174570,\t-0.166991925186771330,\t-0.166942627064888270,\t-0.166893328525648640,\t-0.166844029569175710,\t\n-0.166794730195592680,\t-0.166745430405021960,\t-0.166696130197588550,\t-0.166646829573414780,\t-0.166597528532623970,\t-0.166548227075339340,\t-0.166498925201684130,\t-0.166449622911781610,\t\n-0.166400320205754150,\t-0.166351017083726770,\t-0.166301713545821850,\t-0.166252409592162640,\t-0.166203105222872430,\t-0.166153800438074430,\t-0.166104495237891950,\t-0.166055189622448220,\t\n-0.166005883591865630,\t-0.165956577146269210,\t-0.165907270285781370,\t-0.165857963010525330,\t-0.165808655320624390,\t-0.165759347216201810,\t-0.165710038697380880,\t-0.165660729764283950,\t\n-0.165611420417036080,\t-0.165562110655759650,\t-0.165512800480577980,\t-0.165463489891614270,\t-0.165414178888991850,\t-0.165364867472833990,\t-0.165315555643263950,\t-0.165266243400404160,\t\n-0.165216930744379630,\t-0.165167617675312770,\t-0.165118304193326850,\t-0.165068990298545190,\t-0.165019675991091050,\t-0.164970361271087720,\t-0.164921046138658490,\t-0.164871730593925760,\t\n-0.164822414637014610,\t-0.164773098268047400,\t-0.164723781487147420,\t-0.164674464294438020,\t-0.164625146690042440,\t-0.164575828674084020,\t-0.164526510246685990,\t-0.164477191407970850,\t\n-0.164427872158063560,\t-0.164378552497086630,\t-0.164329232425163310,\t-0.164279911942416900,\t-0.164230591048970730,\t-0.164181269744948070,\t-0.164131948030471350,\t-0.164082625905665640,\t\n-0.164033303370653360,\t-0.163983980425557840,\t-0.163934657070502370,\t-0.163885333305610230,\t-0.163836009131004770,\t-0.163786684546809310,\t-0.163737359553146220,\t-0.163688034150140630,\t\n-0.163638708337914970,\t-0.163589382116592520,\t-0.163540055486296630,\t-0.163490728447150570,\t-0.163441400999277730,\t-0.163392073142800490,\t-0.163342744877843950,\t-0.163293416204530530,\t\n-0.163244087122983580,\t-0.163194757633326410,\t-0.163145427735682360,\t-0.163096097430174720,\t-0.163046766716926860,\t-0.162997435596061200,\t-0.162948104067702800,\t-0.162898772131974180,\t\n-0.162849439788998600,\t-0.162800107038899440,\t-0.162750773881800010,\t-0.162701440317823630,\t-0.162652106347092790,\t-0.162602771969732550,\t-0.162553437185865370,\t-0.162504101995614630,\t\n-0.162454766399103610,\t-0.162405430396455660,\t-0.162356093987794160,\t-0.162306757173242420,\t-0.162257419952922920,\t-0.162208082326960740,\t-0.162158744295478360,\t-0.162109405858599090,\t\n-0.162060067016446320,\t-0.162010727769143410,\t-0.161961388116813650,\t-0.161912048059580430,\t-0.161862707597566210,\t-0.161813366730896110,\t-0.161764025459692570,\t-0.161714683784078990,\t\n-0.161665341704178680,\t-0.161615999220115020,\t-0.161566656332011370,\t-0.161517313039991090,\t-0.161467969344176620,\t-0.161418625244693140,\t-0.161369280741663070,\t-0.161319935835209820,\t\n-0.161270590525456700,\t-0.161221244812527110,\t-0.161171898696544440,\t-0.161122552177631110,\t-0.161073205255912290,\t-0.161023857931510470,\t-0.160974510204549000,\t-0.160925162075151230,\t\n-0.160875813543440580,\t-0.160826464609540390,\t-0.160777115273574050,\t-0.160727765535664040,\t-0.160678415395935470,\t-0.160629064854510870,\t-0.160579713911513630,\t-0.160530362567067100,\t\n-0.160481010821294650,\t-0.160431658674319660,\t-0.160382306126264670,\t-0.160332953177254790,\t-0.160283599827412530,\t-0.160234246076861260,\t-0.160184891925724380,\t-0.160135537374125250,\t\n-0.160086182422187310,\t-0.160036827070033890,\t-0.159987471317787540,\t-0.159938115165573380,\t-0.159888758613513950,\t-0.159839401661732610,\t-0.159790044310352760,\t-0.159740686559497800,\t\n-0.159691328409291120,\t-0.159641969859855270,\t-0.159592610911315350,\t-0.159543251563793900,\t-0.159493891817414330,\t-0.159444531672300020,\t-0.159395171128574400,\t-0.159345810186360850,\t\n-0.159296448845782760,\t-0.159247087106962670,\t-0.159197724970025740,\t-0.159148362435094500,\t-0.159098999502292370,\t-0.159049636171742730,\t-0.159000272443568990,\t-0.158950908317894570,\t\n-0.158901543794842890,\t-0.158852178874536480,\t-0.158802813557100490,\t-0.158753447842657460,\t-0.158704081731330830,\t-0.158654715223243980,\t-0.158605348318520330,\t-0.158555981017283330,\t\n-0.158506613319656380,\t-0.158457245225761990,\t-0.158407876735725400,\t-0.158358507849669090,\t-0.158309138567716530,\t-0.158259768889991130,\t-0.158210398816616280,\t-0.158161028347715450,\t\n-0.158111657483411160,\t-0.158062286223828620,\t-0.158012914569090360,\t-0.157963542519319820,\t-0.157914170074640430,\t-0.157864797235175570,\t-0.157815424001048750,\t-0.157766050372383390,\t\n-0.157716676349302000,\t-0.157667301931929790,\t-0.157617927120389360,\t-0.157568551914804070,\t-0.157519176315297410,\t-0.157469800321992810,\t-0.157420423935013740,\t-0.157371047154482720,\t\n-0.157321669980524940,\t-0.157272292413262990,\t-0.157222914452820330,\t-0.157173536099320360,\t-0.157124157352886540,\t-0.157074778213642350,\t-0.157025398681711230,\t-0.156976018757215700,\t\n-0.156926638440281010,\t-0.156877257731029730,\t-0.156827876629585310,\t-0.156778495136071200,\t-0.156729113250610840,\t-0.156679730973327710,\t-0.156630348304344360,\t-0.156580965243786040,\t\n-0.156531581791775290,\t-0.156482197948435570,\t-0.156432813713890400,\t-0.156383429088263170,\t-0.156334044071677340,\t-0.156284658664256420,\t-0.156235272866122990,\t-0.156185886677402240,\t\n-0.156136500098216810,\t-0.156087113128690090,\t-0.156037725768945590,\t-0.155988338019106780,\t-0.155938949879297130,\t-0.155889561349640100,\t-0.155840172430258300,\t-0.155790783121276950,\t\n-0.155741393422818620,\t-0.155692003335006820,\t-0.155642612857965020,\t-0.155593221991816660,\t-0.155543830736685260,\t-0.155494439092693420,\t-0.155445047059966340,\t-0.155395654638626670,\t\n-0.155346261828797850,\t-0.155296868630603350,\t-0.155247475044166690,\t-0.155198081069611360,\t-0.155148686707060830,\t-0.155099291956637690,\t-0.155049896818467200,\t-0.155000501292671980,\t\n-0.154951105379375480,\t-0.154901709078701240,\t-0.154852312390772740,\t-0.154802915315713410,\t-0.154753517853646830,\t-0.154704120004695580,\t-0.154654721768984900,\t-0.154605323146637410,\t\n-0.154555924137776610,\t-0.154506524742526020,\t-0.154457124961009080,\t-0.154407724793349350,\t-0.154358324239669440,\t-0.154308923300094600,\t-0.154259521974747430,\t-0.154210120263751470,\t\n-0.154160718167230200,\t-0.154111315685307140,\t-0.154061912818105800,\t-0.154012509565749660,\t-0.153963105928361380,\t-0.153913701906066210,\t-0.153864297498986780,\t-0.153814892707246630,\t\n-0.153765487530969220,\t-0.153716081970278080,\t-0.153666676025296770,\t-0.153617269696147890,\t-0.153567862982956690,\t-0.153518455885845840,\t-0.153469048404938860,\t-0.153419640540359250,\t\n-0.153370232292230540,\t-0.153320823660676260,\t-0.153271414645819920,\t-0.153222005247784150,\t-0.153172595466694260,\t-0.153123185302672880,\t-0.153073774755843520,\t-0.153024363826329750,\t\n-0.152974952514255050,\t-0.152925540819742970,\t-0.152876128742917030,\t-0.152826716283899900,\t-0.152777303442816870,\t-0.152727890219790580,\t-0.152678476614944550,\t-0.152629062628402340,\t\n-0.152579648260287470,\t-0.152530233510723480,\t-0.152480818379833020,\t-0.152431402867741400,\t-0.152381986974571280,\t-0.152332570700446170,\t-0.152283154045489640,\t-0.152233737009825230,\t\n-0.152184319593576510,\t-0.152134901796866950,\t-0.152085483619819270,\t-0.152036065062558760,\t-0.151986646125208070,\t-0.151937226807890790,\t-0.151887807110730440,\t-0.151838387033850550,\t\n-0.151788966577374700,\t-0.151739545741426450,\t-0.151690124526128460,\t-0.151640702931606000,\t-0.151591280957981830,\t-0.151541858605379410,\t-0.151492435873922390,\t-0.151443012763734260,\t\n-0.151393589274938590,\t-0.151344165407658080,\t-0.151294741162018020,\t-0.151245316538141130,\t-0.151195891536150930,\t-0.151146466156171030,\t-0.151097040398324920,\t-0.151047614262736250,\t\n-0.150998187749528530,\t-0.150948760858824440,\t-0.150899333590749360,\t-0.150849905945425910,\t-0.150800477922977740,\t-0.150751049523528330,\t-0.150701620747201340,\t-0.150652191594120270,\t\n-0.150602762064407840,\t-0.150553332158189390,\t-0.150503901875587630,\t-0.150454471216726090,\t-0.150405040181728370,\t-0.150355608770718070,\t-0.150306176983818730,\t-0.150256744821153950,\t\n-0.150207312282846450,\t-0.150157879369021530,\t-0.150108446079801920,\t-0.150059012415311170,\t-0.150009578375672910,\t-0.149960143961010710,\t-0.149910709171448140,\t-0.149861274007108800,\t\n-0.149811838468115380,\t-0.149762402554593280,\t-0.149712966266665140,\t-0.149663529604454610,\t-0.149614092568085220,\t-0.149564655157680640,\t-0.149515217373364400,\t-0.149465779215259250,\t\n-0.149416340683490520,\t-0.149366901778180930,\t-0.149317462499454100,\t-0.149268022847433600,\t-0.149218582822243070,\t-0.149169142424006060,\t-0.149119701652846190,\t-0.149070260508886190,\t\n-0.149020818992251450,\t-0.148971377103064630,\t-0.148921934841449360,\t-0.148872492207529270,\t-0.148823049201427940,\t-0.148773605823269010,\t-0.148724162073176040,\t-0.148674717951271800,\t\n-0.148625273457681640,\t-0.148575828592528300,\t-0.148526383355935380,\t-0.148476937748026510,\t-0.148427491768925310,\t-0.148378045418755350,\t-0.148328598697639400,\t-0.148279151605702850,\t\n-0.148229704143068410,\t-0.148180256309859730,\t-0.148130808106200380,\t-0.148081359532214020,\t-0.148031910588024260,\t-0.147982461273754720,\t-0.147933011589528180,\t-0.147883561535469940,\t\n-0.147834111111702830,\t-0.147784660318350440,\t-0.147735209155536400,\t-0.147685757623384320,\t-0.147636305722017860,\t-0.147586853451559750,\t-0.147537400812135400,\t-0.147487947803867540,\t\n-0.147438494426879780,\t-0.147389040681295820,\t-0.147339586567239250,\t-0.147290132084833710,\t-0.147240677234202870,\t-0.147191222015469410,\t-0.147141766428758810,\t-0.147092310474193770,\t\n-0.147042854151897970,\t-0.146993397461995020,\t-0.146943940404608590,\t-0.146894482979862300,\t-0.146845025187879810,\t-0.146795567028783880,\t-0.146746108502699900,\t-0.146696649609750650,\t\n-0.146647190350059770,\t-0.146597730723750930,\t-0.146548270730947760,\t-0.146498810371773920,\t-0.146449349646352170,\t-0.146399888554807900,\t-0.146350427097263950,\t-0.146300965273843900,\t\n-0.146251503084671440,\t-0.146202040529870240,\t-0.146152577609563930,\t-0.146103114323876180,\t-0.146053650672929770,\t-0.146004186656850110,\t-0.145954722275759950,\t-0.145905257529783030,\t\n-0.145855792419042950,\t-0.145806326943663380,\t-0.145756861103768010,\t-0.145707394899480480,\t-0.145657928330923560,\t-0.145608461398222730,\t-0.145558994101500750,\t-0.145509526440881250,\t\n-0.145460058416487960,\t-0.145410590028444530,\t-0.145361121276874620,\t-0.145311652161901010,\t-0.145262182683649150,\t-0.145212712842241850,\t-0.145163242637802750,\t-0.145113772070455560,\t\n-0.145064301140323950,\t-0.145014829847531560,\t-0.144965358192202100,\t-0.144915886174458390,\t-0.144866413794425830,\t-0.144816941052227230,\t-0.144767467947986280,\t-0.144717994481826650,\t\n-0.144668520653872030,\t-0.144619046464246140,\t-0.144569571913071740,\t-0.144520097000474270,\t-0.144470621726576600,\t-0.144421146091502330,\t-0.144371670095375220,\t-0.144322193738318920,\t\n-0.144272717020457160,\t-0.144223239941913580,\t-0.144173762502811050,\t-0.144124284703274960,\t-0.144074806543428190,\t-0.144025328023394380,\t-0.143975849143297250,\t-0.143926369903260520,\t\n-0.143876890303407860,\t-0.143827410343862950,\t-0.143777930024748650,\t-0.143728449346190420,\t-0.143678968308311030,\t-0.143629486911234260,\t-0.143580005155083760,\t-0.143530523039983230,\t\n-0.143481040566056400,\t-0.143431557733426080,\t-0.143382074542217770,\t-0.143332590992554270,\t-0.143283107084559270,\t-0.143233622818356530,\t-0.143184138194069720,\t-0.143134653211822560,\t\n-0.143085167871738780,\t-0.143035682173941190,\t-0.142986196118555260,\t-0.142936709705703880,\t-0.142887222935510680,\t-0.142837735808099440,\t-0.142788248323593880,\t-0.142738760482117670,\t\n-0.142689272283794580,\t-0.142639783728747440,\t-0.142590294817101700,\t-0.142540805548980220,\t-0.142491315924506730,\t-0.142441825943804940,\t-0.142392335606998630,\t-0.142342844914211420,\t\n-0.142293353865566270,\t-0.142243862461188590,\t-0.142194370701201250,\t-0.142144878585728000,\t-0.142095386114892530,\t-0.142045893288818610,\t-0.141996400107629960,\t-0.141946906571450320,\t\n-0.141897412680402510,\t-0.141847918434612060,\t-0.141798423834201800,\t-0.141748928879295490,\t-0.141699433570016850,\t-0.141649937906489640,\t-0.141600441888837580,\t-0.141550945517183530,\t\n-0.141501448791653020,\t-0.141451951712368850,\t-0.141402454279454830,\t-0.141352956493034670,\t-0.141303458353232100,\t-0.141253959860170920,\t-0.141204461013974820,\t-0.141154961814766670,\t\n-0.141105462262672010,\t-0.141055962357813700,\t-0.141006462100315480,\t-0.140956961490301120,\t-0.140907460527894320,\t-0.140857959213218890,\t-0.140808457546398590,\t-0.140758955527556240,\t\n-0.140709453156817380,\t-0.140659950434304880,\t-0.140610447360142500,\t-0.140560943934454010,\t-0.140511440157363170,\t-0.140461936028993730,\t-0.140412431549468560,\t-0.140362926718913180,\t\n-0.140313421537450520,\t-0.140263916005204270,\t-0.140214410122298240,\t-0.140164903888856190,\t-0.140115397305001890,\t-0.140065890370859090,\t-0.140016383086550680,\t-0.139966875452202180,\t\n-0.139917367467936510,\t-0.139867859133877420,\t-0.139818350450148680,\t-0.139768841416874040,\t-0.139719332034177330,\t-0.139669822302182280,\t-0.139620312221011790,\t-0.139570801790791400,\t\n-0.139521291011644010,\t-0.139471779883693390,\t-0.139422268407063320,\t-0.139372756581877560,\t-0.139323244408259940,\t-0.139273731886333320,\t-0.139224219016223260,\t-0.139174705798052630,\t\n-0.139125192231945250,\t-0.139075678318024860,\t-0.139026164056415300,\t-0.138976649447240340,\t-0.138927134490623740,\t-0.138877619186688420,\t-0.138828103535559970,\t-0.138778587537361220,\t\n-0.138729071192216000,\t-0.138679554500248130,\t-0.138630037461581370,\t-0.138580520076339500,\t-0.138531002344645440,\t-0.138481484266624770,\t-0.138431965842400390,\t-0.138382447072096100,\t\n-0.138332927955835680,\t-0.138283408493742960,\t-0.138233888685941690,\t-0.138184368532555720,\t-0.138134848033707960,\t-0.138085327189523930,\t-0.138035806000126600,\t-0.137986284465639760,\t\n-0.137936762586187200,\t-0.137887240361892730,\t-0.137837717792880150,\t-0.137788194879272410,\t-0.137738671621195070,\t-0.137689148018771050,\t-0.137639624072124130,\t-0.137590099781378180,\t\n-0.137540575146656960,\t-0.137491050168084330,\t-0.137441524845784060,\t-0.137391999179879100,\t-0.137342473170495030,\t-0.137292946817754750,\t-0.137243420121782120,\t-0.137193893082700940,\t\n-0.137144365700635010,\t-0.137094837975708210,\t-0.137045309908044280,\t-0.136995781497766200,\t-0.136946252744999550,\t-0.136896723649867270,\t-0.136847194212493170,\t-0.136797664433001090,\t\n-0.136748134311514860,\t-0.136698603848158300,\t-0.136649073043055210,\t-0.136599541896328560,\t-0.136550010408103940,\t-0.136500478578504280,\t-0.136450946407653460,\t-0.136401413895675230,\t\n-0.136351881042693500,\t-0.136302347848832050,\t-0.136252814314213850,\t-0.136203280438964510,\t-0.136153746223206950,\t-0.136104211667065020,\t-0.136054676770662570,\t-0.136005141534123440,\t\n-0.135955605957571450,\t-0.135906070041130450,\t-0.135856533784923380,\t-0.135806997189075850,\t-0.135757460253710850,\t-0.135707922978952210,\t-0.135658385364923720,\t-0.135608847411749310,\t\n-0.135559309119552750,\t-0.135509770488457050,\t-0.135460231518587800,\t-0.135410692210067960,\t-0.135361152563021420,\t-0.135311612577571960,\t-0.135262072253843510,\t-0.135212531591959840,\t\n-0.135162990592044870,\t-0.135113449254221530,\t-0.135063907578615440,\t-0.135014365565349600,\t-0.134964823214547840,\t-0.134915280526334030,\t-0.134865737500832000,\t-0.134816194138165650,\t\n-0.134766650438457920,\t-0.134717106401834430,\t-0.134667562028418200,\t-0.134618017318333030,\t-0.134568472271702850,\t-0.134518926888651500,\t-0.134469381169302790,\t-0.134419835113780670,\t\n-0.134370288722208050,\t-0.134320741994710590,\t-0.134271194931411290,\t-0.134221647532433990,\t-0.134172099797902590,\t-0.134122551727940940,\t-0.134073003322672880,\t-0.134023454582222340,\t\n-0.133973905506712290,\t-0.133924356096268320,\t-0.133874806351013480,\t-0.133825256271071640,\t-0.133775705856566650,\t-0.133726155107622370,\t-0.133676604024362740,\t-0.133627052606911570,\t\n-0.133577500855391910,\t-0.133527948769929380,\t-0.133478396350646960,\t-0.133428843597668540,\t-0.133379290511118050,\t-0.133329737091119310,\t-0.133280183337796230,\t-0.133230629251271800,\t\n-0.133181074831671690,\t-0.133131520079118880,\t-0.133081964993737280,\t-0.133032409575650770,\t-0.132982853824983230,\t-0.132933297741858580,\t-0.132883741326400660,\t-0.132834184578732500,\t\n-0.132784627498979790,\t-0.132735070087265480,\t-0.132685512343713510,\t-0.132635954268447760,\t-0.132586395861592130,\t-0.132536837123270500,\t-0.132487278053605880,\t-0.132437718652723970,\t\n-0.132388158920747760,\t-0.132338598857801140,\t-0.132289038464008020,\t-0.132239477739492320,\t-0.132189916684377930,\t-0.132140355298788730,\t-0.132090793582847780,\t-0.132041231536680710,\t\n-0.131991669160410580,\t-0.131942106454161270,\t-0.131892543418056700,\t-0.131842980052220750,\t-0.131793416356777350,\t-0.131743852331849540,\t-0.131694287977563000,\t-0.131644723294040730,\t\n-0.131595158281406640,\t-0.131545592939784660,\t-0.131496027269298680,\t-0.131446461270072650,\t-0.131396894942230450,\t-0.131347328285895150,\t-0.131297761301192420,\t-0.131248193988245250,\t\n-0.131198626347177630,\t-0.131149058378113440,\t-0.131099490081176580,\t-0.131049921456491030,\t-0.131000352504180660,\t-0.130950783224368510,\t-0.130901213617180300,\t-0.130851643682739050,\t\n-0.130802073421168700,\t-0.130752502832593150,\t-0.130702931917136360,\t-0.130653360674922230,\t-0.130603789106074700,\t-0.130554217210716830,\t-0.130504644988974290,\t-0.130455072440970130,\t\n-0.130405499566828290,\t-0.130355926366672700,\t-0.130306352840627300,\t-0.130256778988816020,\t-0.130207204811361920,\t-0.130157630308390670,\t-0.130108055480025350,\t-0.130058480326389890,\t\n-0.130008904847608240,\t-0.129959329043804310,\t-0.129909752915102070,\t-0.129860176461625450,\t-0.129810599683497510,\t-0.129761022580843930,\t-0.129711445153787820,\t-0.129661867402453080,\t\n-0.129612289326963700,\t-0.129562710927443560,\t-0.129513132204016670,\t-0.129463553156806050,\t-0.129413973785937410,\t-0.129364394091533890,\t-0.129314814073719340,\t-0.129265233732617780,\t\n-0.129215653068353110,\t-0.129166072081049330,\t-0.129116490770830370,\t-0.129066909137819290,\t-0.129017327182141820,\t-0.128967744903921040,\t-0.128918162303280880,\t-0.128868579380345320,\t\n-0.128818996135238340,\t-0.128769412568083830,\t-0.128719828679004940,\t-0.128670244468127330,\t-0.128620659935574140,\t-0.128571075081469280,\t-0.128521489905936730,\t-0.128471904409100470,\t\n-0.128422318591084440,\t-0.128372732452012610,\t-0.128323145992008090,\t-0.128273559211196570,\t-0.128223972109701130,\t-0.128174384687645780,\t-0.128124796945154470,\t-0.128075208882351160,\t\n-0.128025620499359840,\t-0.127976031796304480,\t-0.127926442773308140,\t-0.127876853430496570,\t-0.127827263767992890,\t-0.127777673785921030,\t-0.127728083484404980,\t-0.127678492863568720,\t\n-0.127628901923536240,\t-0.127579310664431510,\t-0.127529719086377610,\t-0.127480127189500300,\t-0.127430534973922680,\t-0.127380942439768720,\t-0.127331349587162380,\t-0.127281756416227710,\t\n-0.127232162927088610,\t-0.127182569119868250,\t-0.127132974994692340,\t-0.127083380551683970,\t-0.127033785790967160,\t-0.126984190712665900,\t-0.126934595316904150,\t-0.126884999603805920,\t\n-0.126835403573495180,\t-0.126785807226095060,\t-0.126736210561731290,\t-0.126686613580527020,\t-0.126637016282606210,\t-0.126587418668092840,\t-0.126537820737110920,\t-0.126488222489784470,\t\n-0.126438623926236560,\t-0.126389025046593000,\t-0.126339425850976850,\t-0.126289826339512160,\t-0.126240226512322890,\t-0.126190626369533040,\t-0.126141025911266660,\t-0.126091425137647680,\t\n-0.126041824048799270,\t-0.125992222644847190,\t-0.125942620925914540,\t-0.125893018892125340,\t-0.125843416543603620,\t-0.125793813880473340,\t-0.125744210902858510,\t-0.125694607610882280,\t\n-0.125645004004670410,\t-0.125595400084346030,\t-0.125545795850033170,\t-0.125496191301855800,\t-0.125446586439937950,\t-0.125396981264403630,\t-0.125347375775376880,\t-0.125297769972980780,\t\n-0.125248163857341170,\t-0.125198557428581130,\t-0.125148950686824690,\t-0.125099343632195910,\t-0.125049736264818720,\t-0.125000128584817210,\t-0.124950520592315400,\t-0.124900912287436380,\t\n-0.124851303670305970,\t-0.124801694741047310,\t-0.124752085499784410,\t-0.124702475946641290,\t-0.124652866081741980,\t-0.124603255905210500,\t-0.124553645417170000,\t-0.124504034617746270,\t\n-0.124454423507062470,\t-0.124404812085242590,\t-0.124355200352410680,\t-0.124305588308690790,\t-0.124255975954206910,\t-0.124206363289083090,\t-0.124156750313442490,\t-0.124107137027410900,\t\n-0.124057523431111450,\t-0.124007909524668210,\t-0.123958295308205180,\t-0.123908680781846430,\t-0.123859065945715950,\t-0.123809450799937830,\t-0.123759835344635190,\t-0.123710219579933850,\t\n-0.123660603505956960,\t-0.123610987122828560,\t-0.123561370430672700,\t-0.123511753429613400,\t-0.123462136119774720,\t-0.123412518501279820,\t-0.123362900574254500,\t-0.123313282338821940,\t\n-0.123263663795106170,\t-0.123214044943231240,\t-0.123164425783321190,\t-0.123114806315500090,\t-0.123065186539891970,\t-0.123015566456620000,\t-0.122965946065809990,\t-0.122916325367585120,\t\n-0.122866704362069440,\t-0.122817083049386990,\t-0.122767461429661840,\t-0.122717839503018040,\t-0.122668217269578740,\t-0.122618594729469800,\t-0.122568971882814360,\t-0.122519348729736510,\t\n-0.122469725270360260,\t-0.122420101504809710,\t-0.122370477433208920,\t-0.122320853055681920,\t-0.122271228372351910,\t-0.122221603383344720,\t-0.122171978088783490,\t-0.122122352488792340,\t\n-0.122072726583495310,\t-0.122023100373016460,\t-0.121973473857479860,\t-0.121923847037009580,\t-0.121874219911728800,\t-0.121824592481763330,\t-0.121774964747236400,\t-0.121725336708272060,\t\n-0.121675708364994380,\t-0.121626079717527410,\t-0.121576450765995260,\t-0.121526821510521090,\t-0.121477191951230750,\t-0.121427562088247430,\t-0.121377931921695200,\t-0.121328301451698150,\t\n-0.121278670678380340,\t-0.121229039601865860,\t-0.121179408222278780,\t-0.121129776539742300,\t-0.121080144554382250,\t-0.121030512266321850,\t-0.120980879675685160,\t-0.120931246782596270,\t\n-0.120881613587179280,\t-0.120831980089558240,\t-0.120782346289857250,\t-0.120732712188199520,\t-0.120683077784710880,\t-0.120633443079514550,\t-0.120583808072734620,\t-0.120534172764495170,\t\n-0.120484537154920290,\t-0.120434901244134060,\t-0.120385265032259690,\t-0.120335628519423050,\t-0.120285991705747330,\t-0.120236354591356630,\t-0.120186717176375050,\t-0.120137079460926680,\t\n-0.120087441445135600,\t-0.120037803129125930,\t-0.119988164513020860,\t-0.119938525596946260,\t-0.119888886381025350,\t-0.119839246865382230,\t-0.119789607050140990,\t-0.119739966935425730,\t\n-0.119690326521360550,\t-0.119640685808068680,\t-0.119591044795675960,\t-0.119541403484305640,\t-0.119491761874081820,\t-0.119442119965128590,\t-0.119392477757570060,\t-0.119342835251530330,\t\n-0.119293192447133520,\t-0.119243549344502830,\t-0.119193905943764170,\t-0.119144262245040720,\t-0.119094618248456640,\t-0.119044973954136000,\t-0.118995329362202930,\t-0.118945684472781530,\t\n-0.118896039285995930,\t-0.118846393801969350,\t-0.118796748020827670,\t-0.118747101942694100,\t-0.118697455567692790,\t-0.118647808895947840,\t-0.118598161927583360,\t-0.118548514662723480,\t\n-0.118498867101491430,\t-0.118449219244013110,\t-0.118399571090411730,\t-0.118349922640811410,\t-0.118300273895336300,\t-0.118250624854110500,\t-0.118200975517258140,\t-0.118151325884903350,\t\n-0.118101675957169350,\t-0.118052025734182040,\t-0.118002375216064670,\t-0.117952724402941370,\t-0.117903073294936250,\t-0.117853421892173450,\t-0.117803770194777100,\t-0.117754118202871310,\t\n-0.117704465916579350,\t-0.117654813336027110,\t-0.117605160461337840,\t-0.117555507292635660,\t-0.117505853830044720,\t-0.117456200073689130,\t-0.117406546023693060,\t-0.117356891680179740,\t\n-0.117307237043275060,\t-0.117257582113102300,\t-0.117207926889785580,\t-0.117158271373449040,\t-0.117108615564216830,\t-0.117058959462213060,\t-0.117009303067561910,\t-0.116959646380386630,\t\n-0.116909989400813100,\t-0.116860332128964600,\t-0.116810674564965260,\t-0.116761016708939250,\t-0.116711358561010680,\t-0.116661700121303740,\t-0.116612041389941650,\t-0.116562382367050340,\t\n-0.116512723052753080,\t-0.116463063447174000,\t-0.116413403550437280,\t-0.116363743362667030,\t-0.116314082883987440,\t-0.116264422114522630,\t-0.116214761054395890,\t-0.116165099703733120,\t\n-0.116115438062657620,\t-0.116065776131293500,\t-0.116016113909764960,\t-0.115966451398196130,\t-0.115916788596711170,\t-0.115867125505434240,\t-0.115817462124488610,\t-0.115767798454000200,\t\n-0.115718134494092310,\t-0.115668470244889080,\t-0.115618805706514670,\t-0.115569140879093240,\t-0.115519475762748970,\t-0.115469810357605120,\t-0.115420144663787640,\t-0.115370478681419780,\t\n-0.115320812410625740,\t-0.115271145851529660,\t-0.115221479004255710,\t-0.115171811868928070,\t-0.115122144445670900,\t-0.115072476734607480,\t-0.115022808735863760,\t-0.114973140449563010,\t\n-0.114923471875829420,\t-0.114873803014787140,\t-0.114824133866560360,\t-0.114774464431273250,\t-0.114724794709049960,\t-0.114675124700013810,\t-0.114625454404290730,\t-0.114575783822004020,\t\n-0.114526112953277840,\t-0.114476441798236390,\t-0.114426770357003830,\t-0.114377098629704340,\t-0.114327426616461230,\t-0.114277754317400430,\t-0.114228081732645250,\t-0.114178408862319860,\t\n-0.114128735706548450,\t-0.114079062265455190,\t-0.114029388539164290,\t-0.113979714527799910,\t-0.113930040231485370,\t-0.113880365650346610,\t-0.113830690784506930,\t-0.113781015634090530,\t\n-0.113731340199221580,\t-0.113681664480024290,\t-0.113631988476622830,\t-0.113582312189140530,\t-0.113532635617703310,\t-0.113482958762434510,\t-0.113433281623458320,\t-0.113383604200898940,\t\n-0.113333926494880530,\t-0.113284248505527300,\t-0.113234570232963460,\t-0.113184891677312300,\t-0.113135212838699800,\t-0.113085533717249280,\t-0.113035854313084910,\t-0.112986174626330910,\t\n-0.112936494657111470,\t-0.112886814405550790,\t-0.112837133871773090,\t-0.112787453055901650,\t-0.112737771958062480,\t-0.112688090578378880,\t-0.112638408916975030,\t-0.112588726973975180,\t\n-0.112539044749503510,\t-0.112489362243684220,\t-0.112439679456640660,\t-0.112389996388498770,\t-0.112340313039381880,\t-0.112290629409414210,\t-0.112240945498719980,\t-0.112191261307423380,\t\n-0.112141576835648630,\t-0.112091892083519940,\t-0.112042207051160620,\t-0.111992521738696680,\t-0.111942836146251430,\t-0.111893150273949100,\t-0.111843464121913890,\t-0.111793777690270020,\t\n-0.111744090979141700,\t-0.111694403988653160,\t-0.111644716718927710,\t-0.111595029170091370,\t-0.111545341342267440,\t-0.111495653235580180,\t-0.111445964850153780,\t-0.111396276186112450,\t\n-0.111346587243580440,\t-0.111296898022681080,\t-0.111247208523540360,\t-0.111197518746281630,\t-0.111147828691029090,\t-0.111098138357906970,\t-0.111048447747039520,\t-0.110998756858550940,\t\n-0.110949065692565480,\t-0.110899374249206460,\t-0.110849682528599890,\t-0.110799990530869110,\t-0.110750298256138370,\t-0.110700605704531870,\t-0.110650912876173860,\t-0.110601219771188570,\t\n-0.110551526389699340,\t-0.110501832731832190,\t-0.110452138797710440,\t-0.110402444587458360,\t-0.110352750101200160,\t-0.110303055339060080,\t-0.110253360301162380,\t-0.110203664987631260,\t\n-0.110153969398590110,\t-0.110104273534164910,\t-0.110054577394479030,\t-0.110004880979656700,\t-0.109955184289822180,\t-0.109905487325099690,\t-0.109855790085613480,\t-0.109806092571487800,\t\n-0.109756394782846000,\t-0.109706696719814100,\t-0.109656998382515470,\t-0.109607299771074320,\t-0.109557600885614950,\t-0.109507901726261560,\t-0.109458202293138410,\t-0.109408502586368870,\t\n-0.109358802606078970,\t-0.109309102352392070,\t-0.109259401825432400,\t-0.109209701025324220,\t-0.109159999952191790,\t-0.109110298606159370,\t-0.109060596987351200,\t-0.109010895095890650,\t\n-0.108961192931903760,\t-0.108911490495513870,\t-0.108861787786845260,\t-0.108812084806022180,\t-0.108762381553168890,\t-0.108712678028409640,\t-0.108662974231868710,\t-0.108613270163669450,\t\n-0.108563565823937900,\t-0.108513861212797440,\t-0.108464156330372320,\t-0.108414451176786820,\t-0.108364745752165180,\t-0.108315040056631670,\t-0.108265334090309700,\t-0.108215627853325250,\t\n-0.108165921345801750,\t-0.108116214567863440,\t-0.108066507519634590,\t-0.108016800201239480,\t-0.107967092612802370,\t-0.107917384754447520,\t-0.107867676626298330,\t-0.107817968228480830,\t\n-0.107768259561118410,\t-0.107718550624335340,\t-0.107668841418255890,\t-0.107619131943004350,\t-0.107569422198704970,\t-0.107519712185481150,\t-0.107470001903458940,\t-0.107420291352761710,\t\n-0.107370580533513770,\t-0.107320869445839360,\t-0.107271158089862800,\t-0.107221446465708330,\t-0.107171734573500250,\t-0.107122022413361940,\t-0.107072309985419470,\t-0.107022597289796210,\t\n-0.106972884326616470,\t-0.106923171096004520,\t-0.106873457598084640,\t-0.106823743832981110,\t-0.106774029800818220,\t-0.106724315501719390,\t-0.106674600935810630,\t-0.106624886103215380,\t\n-0.106575171004057920,\t-0.106525455638462520,\t-0.106475740006553490,\t-0.106426024108455100,\t-0.106376307944290770,\t-0.106326591514186570,\t-0.106276874818265880,\t-0.106227157856653000,\t\n-0.106177440629472220,\t-0.106127723136847850,\t-0.106078005378904160,\t-0.106028287355765470,\t-0.105978569067555180,\t-0.105928850514399330,\t-0.105879131696421370,\t-0.105829412613745580,\t\n-0.105779693266496260,\t-0.105729973654797690,\t-0.105680253778774210,\t-0.105630533638550090,\t-0.105580813234248740,\t-0.105531092565996240,\t-0.105481371633916020,\t-0.105431650438132370,\t\n-0.105381928978769590,\t-0.105332207255951990,\t-0.105282485269803870,\t-0.105232763020448660,\t-0.105183040508012420,\t-0.105133317732618580,\t-0.105083594694391440,\t-0.105033871393455320,\t\n-0.104984147829934520,\t-0.104934424003953350,\t-0.104884699915636120,\t-0.104834975565106250,\t-0.104785250952489830,\t-0.104735526077910280,\t-0.104685800941491940,\t-0.104636075543359060,\t\n-0.104586349883636020,\t-0.104536623962447090,\t-0.104486897779915710,\t-0.104437171336167990,\t-0.104387444631327330,\t-0.104337717665518050,\t-0.104287990438864500,\t-0.104238262951490950,\t\n-0.104188535203521750,\t-0.104138807195081210,\t-0.104089078926292780,\t-0.104039350397282530,\t-0.103989621608173900,\t-0.103939892559091220,\t-0.103890163250158800,\t-0.103840433681500990,\t\n-0.103790703853242090,\t-0.103740973765506410,\t-0.103691243418417430,\t-0.103641512812101220,\t-0.103591781946681240,\t-0.103542050822281790,\t-0.103492319439027220,\t-0.103442587797041850,\t\n-0.103392855896450020,\t-0.103343123737375160,\t-0.103293391319943360,\t-0.103243658644278090,\t-0.103193925710503680,\t-0.103144192518744460,\t-0.103094459069124750,\t-0.103044725361768900,\t\n-0.102994991396801220,\t-0.102945257174345190,\t-0.102895522694526900,\t-0.102845787957469810,\t-0.102796052963298230,\t-0.102746317712136530,\t-0.102696582204109040,\t-0.102646846439340090,\t\n-0.102597110417953150,\t-0.102547374140074300,\t-0.102497637605827030,\t-0.102447900815335650,\t-0.102398163768724530,\t-0.102348426466118000,\t-0.102298688907640410,\t-0.102248951093416090,\t\n-0.102199213023568510,\t-0.102149474698223770,\t-0.102099736117505350,\t-0.102049997281537600,\t-0.102000258190444850,\t-0.101950518844351450,\t-0.101900779243381760,\t-0.101851039387660120,\t\n-0.101801299277309990,\t-0.101751558912457500,\t-0.101701818293226120,\t-0.101652077419740190,\t-0.101602336292124060,\t-0.101552594910502100,\t-0.101502853274998650,\t-0.101453111385737180,\t\n-0.101403369242843820,\t-0.101353626846442030,\t-0.101303884196656170,\t-0.101254141293610610,\t-0.101204398137429690,\t-0.101154654728237790,\t-0.101104911066159240,\t-0.101055167151317530,\t\n-0.101005422983838790,\t-0.100955678563846480,\t-0.100905933891464970,\t-0.100856188966818650,\t-0.100806443790031840,\t-0.100756698361228930,\t-0.100706952680533380,\t-0.100657206748071340,\t\n-0.100607460563966290,\t-0.100557714128342570,\t-0.100507967441324580,\t-0.100458220503036650,\t-0.100408473313603200,\t-0.100358725873148550,\t-0.100308978181796200,\t-0.100259230239672290,\t\n-0.100209482046900310,\t-0.100159733603604610,\t-0.100109984909909590,\t-0.100060235965939600,\t-0.100010486771819030,\t-0.099960737327672244,\t-0.099910987633622717,\t-0.099861237689796614,\t\n-0.099811487496317422,\t-0.099761737053309499,\t-0.099711986360897231,\t-0.099662235419205006,\t-0.099612484228357195,\t-0.099562732788477284,\t-0.099512981099691436,\t-0.099463229162123121,\t\n-0.099413476975896739,\t-0.099363724541136664,\t-0.099313971857967281,\t-0.099264218926512965,\t-0.099214465746898101,\t-0.099164712319246187,\t-0.099114958643683387,\t-0.099065204720333172,\t\n-0.099015450549319955,\t-0.098965696130768124,\t-0.098915941464802037,\t-0.098866186551546095,\t-0.098816431391124698,\t-0.098766675983661331,\t-0.098716920329282157,\t-0.098667164428110687,\t\n-0.098617408280271310,\t-0.098567651885888397,\t-0.098517895245086362,\t-0.098468138357989593,\t-0.098418381224721602,\t-0.098368623845408523,\t-0.098318866220173898,\t-0.098269108349142098,\t\n-0.098219350232437538,\t-0.098169591870184592,\t-0.098119833262507672,\t-0.098070074409531166,\t-0.098020315311378586,\t-0.097970555968176110,\t-0.097920796380047248,\t-0.097871036547116388,\t\n-0.097821276469507931,\t-0.097771516147346291,\t-0.097721755580755867,\t-0.097671994769860160,\t-0.097622233714785345,\t-0.097572472415654962,\t-0.097522710872593385,\t-0.097472949085725027,\t\n-0.097423187055174304,\t-0.097373424781065615,\t-0.097323662263523361,\t-0.097273899502671082,\t-0.097224136498634914,\t-0.097174373251538423,\t-0.097124609761505984,\t-0.097074846028662037,\t\n-0.097025082053130970,\t-0.096975317835037184,\t-0.096925553374505119,\t-0.096875788671658289,\t-0.096826023726622856,\t-0.096776258539522375,\t-0.096726493110481246,\t-0.096676727439623883,\t\n-0.096626961527074701,\t-0.096577195372958113,\t-0.096527428977397647,\t-0.096477662340519507,\t-0.096427895462447205,\t-0.096378128343305169,\t-0.096328360983217801,\t-0.096278593382309541,\t\n-0.096228825540704790,\t-0.096179057458527978,\t-0.096129289135902643,\t-0.096079520572954963,\t-0.096029751769808491,\t-0.095979982726587629,\t-0.095930213443416817,\t-0.095880443920420458,\t\n-0.095830674157723006,\t-0.095780904155448862,\t-0.095731133913721581,\t-0.095681363432667338,\t-0.095631592712409688,\t-0.095581821753073060,\t-0.095532050554781880,\t-0.095482279117660565,\t\n-0.095432507441833556,\t-0.095382735527424392,\t-0.095332963374559279,\t-0.095283190983361757,\t-0.095233418353956253,\t-0.095183645486467211,\t-0.095133872381019058,\t-0.095084099037736208,\t\n-0.095034325456743118,\t-0.094984551638163342,\t-0.094934777582123056,\t-0.094885003288745828,\t-0.094835228758156101,\t-0.094785453990478288,\t-0.094735678985836846,\t-0.094685903744356217,\t\n-0.094636128266159941,\t-0.094586352551374223,\t-0.094536576600122615,\t-0.094486800412529576,\t-0.094437023988719532,\t-0.094387247328816939,\t-0.094337470432946213,\t-0.094287693301231823,\t\n-0.094237915933797309,\t-0.094188138330768889,\t-0.094138360492270132,\t-0.094088582418425465,\t-0.094038804109359345,\t-0.093989025565196213,\t-0.093939246786060512,\t-0.093889467772076698,\t\n-0.093839688523368339,\t-0.093789909040061625,\t-0.093740129322280152,\t-0.093690349370148363,\t-0.093640569183790684,\t-0.093590788763331587,\t-0.093541008108895526,\t-0.093491227220606057,\t\n-0.093441446098589398,\t-0.093391664742969130,\t-0.093341883153869695,\t-0.093292101331415550,\t-0.093242319275731164,\t-0.093192536986940966,\t-0.093142754465169439,\t-0.093092971710540137,\t\n-0.093043188723179279,\t-0.092993405503210461,\t-0.092943622050758123,\t-0.092893838365946738,\t-0.092844054448900759,\t-0.092794270299744630,\t-0.092744485918602834,\t-0.092694701305598939,\t\n-0.092644916460859178,\t-0.092595131384507118,\t-0.092545346076667229,\t-0.092495560537463981,\t-0.092445774767021829,\t-0.092395988765465245,\t-0.092346202532917795,\t-0.092296416069505727,\t\n-0.092246629375352621,\t-0.092196842450582947,\t-0.092147055295321162,\t-0.092097267909691735,\t-0.092047480293819137,\t-0.091997692447827850,\t-0.091947904371841443,\t-0.091898116065986149,\t\n-0.091848327530385576,\t-0.091798538765164181,\t-0.091748749770446433,\t-0.091698960546356817,\t-0.091649171093019802,\t-0.091599381410558969,\t-0.091549591499100580,\t-0.091499801358768201,\t\n-0.091450010989686317,\t-0.091400220391979412,\t-0.091350429565771940,\t-0.091300638511188414,\t-0.091250847228353291,\t-0.091201055717390150,\t-0.091151263978425268,\t-0.091101472011582224,\t\n-0.091051679816985490,\t-0.091001887394759562,\t-0.090952094745028925,\t-0.090902301867918034,\t-0.090852508763551401,\t-0.090802715432052608,\t-0.090752921873547915,\t-0.090703128088160917,\t\n-0.090653334076016098,\t-0.090603539837237942,\t-0.090553745371950933,\t-0.090503950680279555,\t-0.090454155762347430,\t-0.090404360618280791,\t-0.090354565248203261,\t-0.090304769652239311,\t\n-0.090254973830513438,\t-0.090205177783150126,\t-0.090155381510273871,\t-0.090105585012009173,\t-0.090055788288479613,\t-0.090005991339811478,\t-0.089956194166128350,\t-0.089906396767554755,\t\n-0.089856599144215163,\t-0.089806801296234057,\t-0.089757003223735962,\t-0.089707204926845363,\t-0.089657406405685855,\t-0.089607607660383726,\t-0.089557808691062571,\t-0.089508009497846902,\t\n-0.089458210080861203,\t-0.089408410440229985,\t-0.089358610576077732,\t-0.089308810488528081,\t-0.089259010177707279,\t-0.089209209643738949,\t-0.089159408886747601,\t-0.089109607906857721,\t\n-0.089059806704193833,\t-0.089010005278880422,\t-0.088960203631041998,\t-0.088910401760802185,\t-0.088860599668287257,\t-0.088810797353620824,\t-0.088760994816927397,\t-0.088711192058331473,\t\n-0.088661389077957578,\t-0.088611585875930210,\t-0.088561782452372992,\t-0.088511978807412212,\t-0.088462174941171479,\t-0.088412370853775304,\t-0.088362566545348201,\t-0.088312762016014679,\t\n-0.088262957265899264,\t-0.088213152295126454,\t-0.088163347103819872,\t-0.088113541692105807,\t-0.088063736060107894,\t-0.088013930207950633,\t-0.087964124135758548,\t-0.087914317843656165,\t\n-0.087864511331767967,\t-0.087814704600218507,\t-0.087764897649131396,\t-0.087715090478632921,\t-0.087665283088846732,\t-0.087615475479897315,\t-0.087565667651909221,\t-0.087515859605006963,\t\n-0.087466051339315051,\t-0.087416242854957124,\t-0.087366434152059483,\t-0.087316625230745751,\t-0.087266816091140453,\t-0.087217006733368116,\t-0.087167197157553264,\t-0.087117387363820423,\t\n-0.087067577352294104,\t-0.087017767123097972,\t-0.086967956676358288,\t-0.086918146012198730,\t-0.086868335130743796,\t-0.086818524032118025,\t-0.086768712716445942,\t-0.086718901183852087,\t\n-0.086669089434460972,\t-0.086619277468396247,\t-0.086569465285784214,\t-0.086519652886748524,\t-0.086469840271413703,\t-0.086420027439904276,\t-0.086370214392344782,\t-0.086320401128859747,\t\n-0.086270587649572822,\t-0.086220773954610322,\t-0.086170960044095885,\t-0.086121145918154049,\t-0.086071331576909341,\t-0.086021517020486313,\t-0.085971702249009491,\t-0.085921887262603414,\t\n-0.085872072061391733,\t-0.085822256645500750,\t-0.085772441015054129,\t-0.085722625170176411,\t-0.085672809110992121,\t-0.085622992837625811,\t-0.085573176350202021,\t-0.085523359648844402,\t\n-0.085473542733679284,\t-0.085423725604830289,\t-0.085373908262421999,\t-0.085324090706578926,\t-0.085274272937425621,\t-0.085224454955086640,\t-0.085174636759686520,\t-0.085124818351348927,\t\n-0.085074999730200176,\t-0.085025180896363919,\t-0.084975361849964723,\t-0.084925542591127098,\t-0.084875723119975641,\t-0.084825903436634861,\t-0.084776083541229327,\t-0.084726263433882704,\t\n-0.084676443114721306,\t-0.084626622583868785,\t-0.084576801841449722,\t-0.084526980887588657,\t-0.084477159722410128,\t-0.084427338346038716,\t-0.084377516758598059,\t-0.084327694960214500,\t\n-0.084277872951011704,\t-0.084228050731114223,\t-0.084178228300646626,\t-0.084128405659733438,\t-0.084078582808499253,\t-0.084028759747068610,\t-0.083978936475565175,\t-0.083929112994115290,\t\n-0.083879289302842622,\t-0.083829465401871722,\t-0.083779641291327173,\t-0.083729816971333512,\t-0.083679992442015308,\t-0.083630167703497127,\t-0.083580342755902634,\t-0.083530517599358173,\t\n-0.083480692233987422,\t-0.083430866659914935,\t-0.083381040877265292,\t-0.083331214886163033,\t-0.083281388686732738,\t-0.083231562279098101,\t-0.083181735663385423,\t-0.083131908839718424,\t\n-0.083082081808221644,\t-0.083032254569019665,\t-0.082982427122237037,\t-0.082932599467998358,\t-0.082882771606428166,\t-0.082832943537650167,\t-0.082783115261790691,\t-0.082733286778973431,\t\n-0.082683458089322953,\t-0.082633629192963826,\t-0.082583800090020629,\t-0.082533970780617943,\t-0.082484141264879435,\t-0.082434311542931446,\t-0.082384481614897698,\t-0.082334651480902743,\t\n-0.082284821141071149,\t-0.082234990595527510,\t-0.082185159844396394,\t-0.082135328887802367,\t-0.082085497725869150,\t-0.082035666358723058,\t-0.081985834786487813,\t-0.081936003009287980,\t\n-0.081886171027248142,\t-0.081836338840492864,\t-0.081786506449146743,\t-0.081736673853334357,\t-0.081686841053179401,\t-0.081637008048808232,\t-0.081587174840344542,\t-0.081537341427912913,\t\n-0.081487507811637938,\t-0.081437673991644186,\t-0.081387839968056250,\t-0.081338005740997824,\t-0.081288171310595264,\t-0.081238336676972292,\t-0.081188501840253474,\t-0.081138666800563392,\t\n-0.081088831558026653,\t-0.081038996112767839,\t-0.080989160464911517,\t-0.080939324614581420,\t-0.080889488561903894,\t-0.080839652307002657,\t-0.080789815850002278,\t-0.080739979191027364,\t\n-0.080690142330202497,\t-0.080640305267652285,\t-0.080590468003501295,\t-0.080540630537873262,\t-0.080490792870894529,\t-0.080440955002688816,\t-0.080391116933380719,\t-0.080341278663094831,\t\n-0.080291440191955749,\t-0.080241601520088052,\t-0.080191762647615475,\t-0.080141923574664375,\t-0.080092084301358474,\t-0.080042244827822351,\t-0.079992405154180629,\t-0.079942565280557876,\t\n-0.079892725207078727,\t-0.079842884933867764,\t-0.079793044461048693,\t-0.079743203788747899,\t-0.079693362917089103,\t-0.079643521846196885,\t-0.079593680576195869,\t-0.079543839107210662,\t\n-0.079493997439365846,\t-0.079444155572785155,\t-0.079394313507594960,\t-0.079344471243918982,\t-0.079294628781881829,\t-0.079244786121608096,\t-0.079194943263222406,\t-0.079145100206849353,\t\n-0.079095256952613546,\t-0.079045413500638720,\t-0.078995569851051245,\t-0.078945726003974842,\t-0.078895881959534120,\t-0.078846037717853701,\t-0.078796193279058180,\t-0.078746348643272179,\t\n-0.078696503810620308,\t-0.078646658781226286,\t-0.078596813555216513,\t-0.078546968132714695,\t-0.078497122513845469,\t-0.078447276698733429,\t-0.078397430687503197,\t-0.078347584480279384,\t\n-0.078297738077185736,\t-0.078247891478348625,\t-0.078198044683891785,\t-0.078148197693939825,\t-0.078098350508617381,\t-0.078048503128049049,\t-0.077998655552359478,\t-0.077948807781673249,\t\n-0.077898959816114124,\t-0.077849111655808489,\t-0.077799263300880064,\t-0.077749414751453486,\t-0.077699566007653376,\t-0.077649717069604343,\t-0.077599867937431025,\t-0.077550018611258043,\t\n-0.077500169091209117,\t-0.077450319377410648,\t-0.077400469469986397,\t-0.077350619369060958,\t-0.077300769074758982,\t-0.077250918587205078,\t-0.077201067906523882,\t-0.077151217032839128,\t\n-0.077101365966277216,\t-0.077051514706961879,\t-0.077001663255017769,\t-0.076951811610569493,\t-0.076901959773741702,\t-0.076852107744658990,\t-0.076802255523446022,\t-0.076752403110226533,\t\n-0.076702550505126921,\t-0.076652697708270920,\t-0.076602844719783181,\t-0.076552991539788340,\t-0.076503138168411006,\t-0.076453284605775843,\t-0.076403430852006571,\t-0.076353576907229603,\t\n-0.076303722771568702,\t-0.076253868445148490,\t-0.076204013928093617,\t-0.076154159220528692,\t-0.076104304322578378,\t-0.076054449234367313,\t-0.076004593956019231,\t-0.075954738487660545,\t\n-0.075904882829415016,\t-0.075855026981407281,\t-0.075805170943761976,\t-0.075755314716603739,\t-0.075705458300057232,\t-0.075655601694247065,\t-0.075605744899297014,\t-0.075555887915333478,\t\n-0.075506030742480232,\t-0.075456173380861899,\t-0.075406315830603143,\t-0.075356458091828601,\t-0.075306600164662910,\t-0.075256742049229816,\t-0.075206883745655775,\t-0.075157025254064508,\t\n-0.075107166574580692,\t-0.075057307707328949,\t-0.075007448652433945,\t-0.074957589410020314,\t-0.074907729980212709,\t-0.074857870363134904,\t-0.074808010558913299,\t-0.074758150567671669,\t\n-0.074708290389534665,\t-0.074658430024626923,\t-0.074608569473073122,\t-0.074558708734997883,\t-0.074508847810524997,\t-0.074458986699780877,\t-0.074409125402889284,\t-0.074359263919974883,\t\n-0.074309402251162324,\t-0.074259540396576257,\t-0.074209678356341346,\t-0.074159816130582229,\t-0.074109953719422680,\t-0.074060091122989141,\t-0.074010228341405374,\t-0.073960365374796042,\t\n-0.073910502223285796,\t-0.073860638886999286,\t-0.073810775366061177,\t-0.073760911660596132,\t-0.073711047770727928,\t-0.073661183696582991,\t-0.073611319438285083,\t-0.073561454995958897,\t\n-0.073511590369729055,\t-0.073461725559720248,\t-0.073411860566057113,\t-0.073361995388863455,\t-0.073312130028265685,\t-0.073262264484387593,\t-0.073212398757353844,\t-0.073162532847289102,\t\n-0.073112666754318018,\t-0.073062800478565268,\t-0.073012934020155518,\t-0.072963067379212557,\t-0.072913200555862798,\t-0.072863333550230044,\t-0.072813466362438961,\t-0.072763598992614212,\t\n-0.072713731440880461,\t-0.072663863707362372,\t-0.072613995792183750,\t-0.072564127695471034,\t-0.072514259417347987,\t-0.072464390957939287,\t-0.072414522317369612,\t-0.072364653495763639,\t\n-0.072314784493246020,\t-0.072264915309941447,\t-0.072215045945973694,\t-0.072165176401469230,\t-0.072115306676551805,\t-0.072065436771346122,\t-0.072015566685976848,\t-0.071965696420568659,\t\n-0.071915825975246220,\t-0.071865955350134222,\t-0.071816084545356443,\t-0.071766213561039349,\t-0.071716342397306718,\t-0.071666471054283226,\t-0.071616599532093567,\t-0.071566727830862403,\t\n-0.071516855950714414,\t-0.071466983891773403,\t-0.071417111654165824,\t-0.071367239238015454,\t-0.071317366643446997,\t-0.071267493870585119,\t-0.071217620919554511,\t-0.071167747790479852,\t\n-0.071117874483485818,\t-0.071068000998696201,\t-0.071018127336237483,\t-0.070968253496233438,\t-0.070918379478808774,\t-0.070868505284088154,\t-0.070818630912196256,\t-0.070768756363257801,\t\n-0.070718881637397438,\t-0.070669006734738998,\t-0.070619131655408923,\t-0.070569256399531016,\t-0.070519380967229969,\t-0.070469505358630474,\t-0.070419629573857223,\t-0.070369753613034880,\t\n-0.070319877476287276,\t-0.070270001163740867,\t-0.070220124675519455,\t-0.070170248011747718,\t-0.070120371172550378,\t-0.070070494158052096,\t-0.070020616968377594,\t-0.069970739603651536,\t\n-0.069920862063997752,\t-0.069870984349542697,\t-0.069821106460410176,\t-0.069771228396724894,\t-0.069721350158611542,\t-0.069671471746194813,\t-0.069621593159599399,\t-0.069571714398949117,\t\n-0.069521835464370449,\t-0.069471956355987172,\t-0.069422077073924018,\t-0.069372197618305667,\t-0.069322317989256824,\t-0.069272438186902180,\t-0.069222558211366456,\t-0.069172678062773441,\t\n-0.069122797741249617,\t-0.069072917246918789,\t-0.069023036579905675,\t-0.068973155740334968,\t-0.068923274728331374,\t-0.068873393544019598,\t-0.068823512187524333,\t-0.068773630658969409,\t\n-0.068723748958481282,\t-0.068673867086183796,\t-0.068623985042201630,\t-0.068574102826659503,\t-0.068524220439682121,\t-0.068474337881394190,\t-0.068424455151919528,\t-0.068374572251384616,\t\n-0.068324689179913273,\t-0.068274805937630204,\t-0.068224922524660128,\t-0.068175038941127739,\t-0.068125155187157754,\t-0.068075271262874881,\t-0.068025387168402937,\t-0.067975502903868418,\t\n-0.067925618469395141,\t-0.067875733865107812,\t-0.067825849091131152,\t-0.067775964147589879,\t-0.067726079034608686,\t-0.067676193752312291,\t-0.067626308300824542,\t-0.067576422680271891,\t\n-0.067526536890778199,\t-0.067476650932468157,\t-0.067426764805466485,\t-0.067376878509897903,\t-0.067326992045887130,\t-0.067277105413557983,\t-0.067227218613036960,\t-0.067177331644447891,\t\n-0.067127444507915496,\t-0.067077557203564481,\t-0.067027669731519579,\t-0.066977782091905511,\t-0.066927894284846981,\t-0.066878006310467822,\t-0.066828118168894543,\t-0.066778229860250962,\t\n-0.066728341384661813,\t-0.066678452742251801,\t-0.066628563933145674,\t-0.066578674957468123,\t-0.066528785815342995,\t-0.066478896506896798,\t-0.066429007032253365,\t-0.066379117391537401,\t\n-0.066329227584873654,\t-0.066279337612386829,\t-0.066229447474201661,\t-0.066179557170442882,\t-0.066129666701234324,\t-0.066079776066702484,\t-0.066029885266971192,\t-0.065979994302165196,\t\n-0.065930103172409216,\t-0.065880211877827985,\t-0.065830320418546209,\t-0.065780428794688636,\t-0.065730537006379111,\t-0.065680645053744130,\t-0.065630752936907524,\t-0.065580860655994055,\t\n-0.065530968211128415,\t-0.065481075602435365,\t-0.065431182830039625,\t-0.065381289894065039,\t-0.065331396794638119,\t-0.065281503531882709,\t-0.065231610105923529,\t-0.065181716516885341,\t\n-0.065131822764892849,\t-0.065081928850070803,\t-0.065032034772543934,\t-0.064982140532436089,\t-0.064932246129873777,\t-0.064882351564980859,\t-0.064832456837882066,\t-0.064782561948702119,\t\n-0.064732666897565766,\t-0.064682771684597754,\t-0.064632876309922815,\t-0.064582980773664783,\t-0.064533085075950208,\t-0.064483189216902909,\t-0.064433293196647631,\t-0.064383397015309124,\t\n-0.064333500673012134,\t-0.064283604169881381,\t-0.064233707506040738,\t-0.064183810681616701,\t-0.064133913696733144,\t-0.064084016551514814,\t-0.064034119246086429,\t-0.063984221780572753,\t\n-0.063934324155098518,\t-0.063884426369788472,\t-0.063834528424766473,\t-0.063784630320159047,\t-0.063734732056090038,\t-0.063684833632684207,\t-0.063634935050066274,\t-0.063585036308361029,\t\n-0.063535137407693176,\t-0.063485238348186590,\t-0.063435339129967808,\t-0.063385439753160674,\t-0.063335540217889938,\t-0.063285640524280345,\t-0.063235740672456658,\t-0.063185840662543624,\t\n-0.063135940494665976,\t-0.063086040168947602,\t-0.063036139685515011,\t-0.062986239044492076,\t-0.062936338246003531,\t-0.062886437290174152,\t-0.062836536177128671,\t-0.062786634906991851,\t\n-0.062736733479888451,\t-0.062686831895942319,\t-0.062636930155280005,\t-0.062587028258025354,\t-0.062537126204303142,\t-0.062487223994238117,\t-0.062437321627955025,\t-0.062387419105578629,\t\n-0.062337516427232800,\t-0.062287613593044071,\t-0.062237710603136306,\t-0.062187807457634262,\t-0.062137904156662697,\t-0.062088000700346375,\t-0.062038097088810050,\t-0.061988193322178489,\t\n-0.061938289400575552,\t-0.061888385324127777,\t-0.061838481092959037,\t-0.061788576707194100,\t-0.061738672166957720,\t-0.061688767472374659,\t-0.061638862623569678,\t-0.061588957620667538,\t\n-0.061539052463792127,\t-0.061489147153069960,\t-0.061439241688624933,\t-0.061389336070581800,\t-0.061339430299065328,\t-0.061289524374200273,\t-0.061239618296111416,\t-0.061189712064922623,\t\n-0.061139805680760433,\t-0.061089899143748738,\t-0.061039992454012287,\t-0.060990085611675855,\t-0.060940178616864217,\t-0.060890271469702120,\t-0.060840364170314354,\t-0.060790456718824791,\t\n-0.060740549115359969,\t-0.060690641360043776,\t-0.060640733453000979,\t-0.060590825394356347,\t-0.060540917184234655,\t-0.060491008822760664,\t-0.060441100310058268,\t-0.060391191646254012,\t\n-0.060341282831471776,\t-0.060291373865836329,\t-0.060241464749472444,\t-0.060191555482504905,\t-0.060141646065058472,\t-0.060091736497257929,\t-0.060041826779227155,\t-0.059991916911092701,\t\n-0.059942006892978454,\t-0.059892096725009190,\t-0.059842186407309685,\t-0.059792275940004712,\t-0.059742365323219054,\t-0.059692454557077473,\t-0.059642543641703877,\t-0.059592632577224809,\t\n-0.059542721363764158,\t-0.059492810001446704,\t-0.059442898490397224,\t-0.059392986830740499,\t-0.059343075022601305,\t-0.059293163066103535,\t-0.059243250961373749,\t-0.059193338708535832,\t\n-0.059143426307714575,\t-0.059093513759034745,\t-0.059043601062621132,\t-0.058993688218598517,\t-0.058943775227091683,\t-0.058893862088224523,\t-0.058843948802123590,\t-0.058794035368912791,\t\n-0.058744121788716901,\t-0.058694208061660709,\t-0.058644294187868998,\t-0.058594380167466549,\t-0.058544466000578145,\t-0.058494551687327694,\t-0.058444637227841753,\t-0.058394722622244218,\t\n-0.058344807870659869,\t-0.058294892973213511,\t-0.058244977930029911,\t-0.058195062741233872,\t-0.058145147406949288,\t-0.058095231927302725,\t-0.058045316302418083,\t-0.057995400532420145,\t\n-0.057945484617433707,\t-0.057895568557583557,\t-0.057845652352994485,\t-0.057795736003791287,\t-0.057745819510097857,\t-0.057695902872040773,\t-0.057645986089743924,\t-0.057596069163332111,\t\n-0.057546152092930125,\t-0.057496234878662761,\t-0.057446317520654808,\t-0.057396400019030180,\t-0.057346482373915431,\t-0.057296564585434480,\t-0.057246646653712117,\t-0.057196728578873139,\t\n-0.057146810361042334,\t-0.057096892000344505,\t-0.057046973496904449,\t-0.056997054850846073,\t-0.056947136062295942,\t-0.056897217131377978,\t-0.056847298058216963,\t-0.056797378842937708,\t\n-0.056747459485665008,\t-0.056697539986523653,\t-0.056647620345638451,\t-0.056597700563133312,\t-0.056547780639134806,\t-0.056497860573766857,\t-0.056447940367154247,\t-0.056398020019421791,\t\n-0.056348099530694279,\t-0.056298178901096528,\t-0.056248258130752432,\t-0.056198337219788584,\t-0.056148416168328892,\t-0.056098494976498159,\t-0.056048573644421187,\t-0.055998652172222788,\t\n-0.055948730560027755,\t-0.055898808807960894,\t-0.055848886916146125,\t-0.055798964884710020,\t-0.055749042713776509,\t-0.055699120403470394,\t-0.055649197953916471,\t-0.055599275365239557,\t\n-0.055549352637564456,\t-0.055499429771015969,\t-0.055449506765718019,\t-0.055399583621797192,\t-0.055349660339377410,\t-0.055299736918583475,\t-0.055249813359540198,\t-0.055199889662372388,\t\n-0.055149965827204848,\t-0.055100041854161515,\t-0.055050117743368959,\t-0.055000193494951111,\t-0.054950269109032779,\t-0.054900344585738767,\t-0.054850419925193905,\t-0.054800495127522983,\t\n-0.054750570192850831,\t-0.054700645121301364,\t-0.054650719913001168,\t-0.054600794568074179,\t-0.054550869086645200,\t-0.054500943468839047,\t-0.054451017714780538,\t-0.054401091824594482,\t\n-0.054351165798404814,\t-0.054301239636338115,\t-0.054251313338518313,\t-0.054201386905070238,\t-0.054151460336118687,\t-0.054101533631788490,\t-0.054051606792204457,\t-0.054001679817491405,\t\n-0.053951752707773269,\t-0.053901825463176636,\t-0.053851898083825442,\t-0.053801970569844502,\t-0.053752042921358635,\t-0.053702115138492663,\t-0.053652187221371397,\t-0.053602259170119668,\t\n-0.053552330984861410,\t-0.053502402665723203,\t-0.053452474212828990,\t-0.053402545626303595,\t-0.053352616906271834,\t-0.053302688052858531,\t-0.053252759066188503,\t-0.053202829946385699,\t\n-0.053152900693576699,\t-0.053102971307885452,\t-0.053053041789436775,\t-0.053003112138355499,\t-0.052953182354766440,\t-0.052903252438794422,\t-0.052853322390564270,\t-0.052803392210199931,\t\n-0.052753461897828001,\t-0.052703531453572407,\t-0.052653600877557993,\t-0.052603670169909571,\t-0.052553739330751977,\t-0.052503808360210034,\t-0.052453877258408568,\t-0.052403946025471528,\t\n-0.052354014661525505,\t-0.052304083166694444,\t-0.052254151541103182,\t-0.052204219784876535,\t-0.052154287898139341,\t-0.052104355881016425,\t-0.052054423733631734,\t-0.052004491456111870,\t\n-0.051954559048580776,\t-0.051904626511163288,\t-0.051854693843984230,\t-0.051804761047168441,\t-0.051754828120840750,\t-0.051704895065125982,\t-0.051654961880148093,\t-0.051605028566033689,\t\n-0.051555095122906715,\t-0.051505161550891999,\t-0.051455227850114381,\t-0.051405294020698690,\t-0.051355360062769764,\t-0.051305425976451553,\t-0.051255491761870664,\t-0.051205557419151046,\t\n-0.051155622948417537,\t-0.051105688349794967,\t-0.051055753623408182,\t-0.051005818769382004,\t-0.050955883787841286,\t-0.050905948678909969,\t-0.050856013442714662,\t-0.050806078079379327,\t\n-0.050756142589028802,\t-0.050706206971787911,\t-0.050656271227781512,\t-0.050606335357134428,\t-0.050556399359971506,\t-0.050506463236416700,\t-0.050456526986596618,\t-0.050406590610635224,\t\n-0.050356654108657355,\t-0.050306717480787848,\t-0.050256780727151548,\t-0.050206843847873300,\t-0.050156906843077047,\t-0.050106969712889422,\t-0.050057032457434369,\t-0.050007095076836733,\t\n-0.049957157571221364,\t-0.049907219940713100,\t-0.049857282185436780,\t-0.049807344305517261,\t-0.049757406301078493,\t-0.049707468172247096,\t-0.049657529919147028,\t-0.049607591541903133,\t\n-0.049557653040640262,\t-0.049507714415483260,\t-0.049457775666556972,\t-0.049407836793986241,\t-0.049357897797895033,\t-0.049307958678409966,\t-0.049258019435655005,\t-0.049208080069754995,\t\n-0.049158140580834786,\t-0.049108200969019224,\t-0.049058261234433159,\t-0.049008321377200556,\t-0.048958381397448035,\t-0.048908441295299560,\t-0.048858501070879981,\t-0.048808560724314151,\t\n-0.048758620255726921,\t-0.048708679665243136,\t-0.048658738952987654,\t-0.048608798119084438,\t-0.048558857163660110,\t-0.048508916086838647,\t-0.048458974888744892,\t-0.048409033569503691,\t\n-0.048359092129239917,\t-0.048309150568078406,\t-0.048259208886143136,\t-0.048209267083560728,\t-0.048159325160455152,\t-0.048109383116951260,\t-0.048059440953173917,\t-0.048009498669247967,\t\n-0.047959556265298277,\t-0.047909613741449690,\t-0.047859671097826184,\t-0.047809728334554387,\t-0.047759785451758269,\t-0.047709842449562681,\t-0.047659899328092496,\t-0.047609956087472559,\t\n-0.047560012727827734,\t-0.047510069249282874,\t-0.047460125651961955,\t-0.047410181935991613,\t-0.047360238101495811,\t-0.047310294148599413,\t-0.047260350077427286,\t-0.047210405888104275,\t\n-0.047160461580755257,\t-0.047110517155504197,\t-0.047060572612477723,\t-0.047010627951799826,\t-0.046960683173595356,\t-0.046910738277989181,\t-0.046860793265106157,\t-0.046810848135071151,\t\n-0.046760902888009027,\t-0.046710957524043757,\t-0.046661012043301982,\t-0.046611066445907672,\t-0.046561120731985699,\t-0.046511174901660922,\t-0.046461228955058213,\t-0.046411282892302425,\t\n-0.046361336713517547,\t-0.046311390418830214,\t-0.046261444008364405,\t-0.046211497482244984,\t-0.046161550840596824,\t-0.046111604083544783,\t-0.046061657211213733,\t-0.046011710223728540,\t\n-0.045961763121213181,\t-0.045911815903794305,\t-0.045861868571595889,\t-0.045811921124742798,\t-0.045761973563359912,\t-0.045712025887572089,\t-0.045662078097504194,\t-0.045612130193281114,\t\n-0.045562182175026812,\t-0.045512234042867951,\t-0.045462285796928500,\t-0.045412337437333333,\t-0.045362388964207329,\t-0.045312440377675345,\t-0.045262491677862261,\t-0.045212542864892062,\t\n-0.045162593938891396,\t-0.045112644899984240,\t-0.045062695748295481,\t-0.045012746483949977,\t-0.044962797107072607,\t-0.044912847617788243,\t-0.044862898016221758,\t-0.044812948302497144,\t\n-0.044762998476741041,\t-0.044713048539077448,\t-0.044663098489631237,\t-0.044613148328527273,\t-0.044563198055890436,\t-0.044513247671845613,\t-0.044463297176517667,\t-0.044413346570030585,\t\n-0.044363395852511034,\t-0.044313445024082986,\t-0.044263494084871326,\t-0.044213543035000934,\t-0.044163591874596682,\t-0.044113640603783449,\t-0.044063689222685234,\t-0.044013737731428679,\t\n-0.043963786130137773,\t-0.043913834418937411,\t-0.043863882597952458,\t-0.043813930667307800,\t-0.043763978627128317,\t-0.043714026477538886,\t-0.043664074218663501,\t-0.043614121850628823,\t\n-0.043564169373558836,\t-0.043514216787578421,\t-0.043464264092812468,\t-0.043414311289385860,\t-0.043364358377423466,\t-0.043314405357049293,\t-0.043264452228389996,\t-0.043214498991569567,\t\n-0.043164545646712883,\t-0.043114592193944846,\t-0.043064638633390322,\t-0.043014684965174202,\t-0.042964731189421367,\t-0.042914777306255820,\t-0.042864823315804219,\t-0.042814869218190561,\t\n-0.042764915013539725,\t-0.042714960701976605,\t-0.042665006283626079,\t-0.042615051758613041,\t-0.042565097127062371,\t-0.042515142389098072,\t-0.042465187544846808,\t-0.042415232594432570,\t\n-0.042365277537980257,\t-0.042315322375614743,\t-0.042265367107460927,\t-0.042215411733643689,\t-0.042165456254287040,\t-0.042115500669517636,\t-0.042065544979459475,\t-0.042015589184237458,\t\n-0.041965633283976470,\t-0.041915677278801390,\t-0.041865721168837126,\t-0.041815764954208551,\t-0.041765808635039682,\t-0.041715852211457176,\t-0.041665895683585044,\t-0.041615939051548166,\t\n-0.041565982315471442,\t-0.041516025475479765,\t-0.041466068531698028,\t-0.041416111484251110,\t-0.041366154333263030,\t-0.041316197078860452,\t-0.041266239721167386,\t-0.041216282260308712,\t\n-0.041166324696409337,\t-0.041116367029594154,\t-0.041066409259988050,\t-0.041016451387715036,\t-0.040966493412901775,\t-0.040916535335672286,\t-0.040866577156151461,\t-0.040816618874464188,\t\n-0.040766660490735372,\t-0.040716702005089901,\t-0.040666743417652682,\t-0.040616784728547711,\t-0.040566825937901667,\t-0.040516867045838553,\t-0.040466908052483277,\t-0.040416948957960733,\t\n-0.040366989762395812,\t-0.040317030465913416,\t-0.040267071068637562,\t-0.040217111570694915,\t-0.040167151972209485,\t-0.040117192273306179,\t-0.040067232474109891,\t-0.040017272574745529,\t\n-0.039967312575337977,\t-0.039917352476012143,\t-0.039867392276892046,\t-0.039817431978104355,\t-0.039767471579773082,\t-0.039717511082023128,\t-0.039667550484979400,\t-0.039617589788766797,\t\n-0.039567628993510212,\t-0.039517668099334560,\t-0.039467707106363853,\t-0.039417746014724760,\t-0.039367784824541306,\t-0.039317823535938386,\t-0.039267862149040912,\t-0.039217900663973779,\t\n-0.039167939080861899,\t-0.039117977399829279,\t-0.039068015621002608,\t-0.039018053744505891,\t-0.038968091770464043,\t-0.038918129699001963,\t-0.038868167530244566,\t-0.038818205264316744,\t\n-0.038768242901343411,\t-0.038718280441448587,\t-0.038668317884758940,\t-0.038618355231398505,\t-0.038568392481492179,\t-0.038518429635164872,\t-0.038468466692541496,\t-0.038418503653746952,\t\n-0.038368540518905259,\t-0.038318577288143099,\t-0.038268613961584499,\t-0.038218650539354367,\t-0.038168687021577601,\t-0.038118723408379122,\t-0.038068759699883839,\t-0.038018795896216651,\t\n-0.037968831997501590,\t-0.037918868003865333,\t-0.037868903915431906,\t-0.037818939732326216,\t-0.037768975454673184,\t-0.037719011082597710,\t-0.037669046616224708,\t-0.037619082055679091,\t\n-0.037569117401084880,\t-0.037519152652568763,\t-0.037469187810254767,\t-0.037419222874267799,\t-0.037369257844732773,\t-0.037319292721774602,\t-0.037269327505518202,\t-0.037219362196087596,\t\n-0.037169396793609470,\t-0.037119431298207849,\t-0.037069465710007653,\t-0.037019500029133796,\t-0.036969534255711187,\t-0.036919568389864738,\t-0.036869602431719370,\t-0.036819636381399110,\t\n-0.036769670239030647,\t-0.036719704004738007,\t-0.036669737678646112,\t-0.036619771260879869,\t-0.036569804751564197,\t-0.036519838150824012,\t-0.036469871458784234,\t-0.036419904675568888,\t\n-0.036369937801304673,\t-0.036319970836115607,\t-0.036270003780126618,\t-0.036220036633462613,\t-0.036170069396248526,\t-0.036120102068609258,\t-0.036070134650668849,\t-0.036020167142553995,\t\n-0.035970199544388723,\t-0.035920231856297946,\t-0.035870264078406593,\t-0.035820296210839583,\t-0.035770328253721825,\t-0.035720360207178253,\t-0.035670392071332893,\t-0.035620423846312435,\t\n-0.035570455532240919,\t-0.035520487129243265,\t-0.035470518637444395,\t-0.035420550056969230,\t-0.035370581387942683,\t-0.035320612630488801,\t-0.035270643784734275,\t-0.035220674850803137,\t\n-0.035170705828820314,\t-0.035120736718910722,\t-0.035070767521199288,\t-0.035020798235810939,\t-0.034970828862870597,\t-0.034920859402502294,\t-0.034870889854832728,\t-0.034820920219985937,\t\n-0.034770950498086844,\t-0.034720980689260376,\t-0.034671010793631461,\t-0.034621040811325013,\t-0.034571070742465966,\t-0.034521100587178354,\t-0.034471130345588873,\t-0.034421160017821577,\t\n-0.034371189604001373,\t-0.034321219104253196,\t-0.034271248518701974,\t-0.034221277847472628,\t-0.034171307090689197,\t-0.034121336248478393,\t-0.034071365320964248,\t-0.034021394308271682,\t\n-0.033971423210525639,\t-0.033921452027851032,\t-0.033871480760372795,\t-0.033821509408215857,\t-0.033771537971504263,\t-0.033721566450364705,\t-0.033671594844921236,\t-0.033621623155298777,\t\n-0.033571651381622263,\t-0.033521679524016613,\t-0.033471707582606772,\t-0.033421735557517658,\t-0.033371763448873319,\t-0.033321791256800459,\t-0.033271818981423118,\t-0.033221846622866237,\t\n-0.033171874181254730,\t-0.033121901656713547,\t-0.033071929049367600,\t-0.033021956359340951,\t-0.032971983586760296,\t-0.032922010731749683,\t-0.032872037794434039,\t-0.032822064774938306,\t\n-0.032772091673387412,\t-0.032722118489906284,\t-0.032672145224619857,\t-0.032622171877652185,\t-0.032572198449129973,\t-0.032522224939177259,\t-0.032472251347918986,\t-0.032422277675480081,\t\n-0.032372303921985486,\t-0.032322330087560129,\t-0.032272356172328064,\t-0.032222382176415987,\t-0.032172408099947959,\t-0.032122433943048916,\t-0.032072459705843784,\t-0.032022485388457499,\t\n-0.031972510991015002,\t-0.031922536513641235,\t-0.031872561956460231,\t-0.031822587319598715,\t-0.031772612603180726,\t-0.031722637807331207,\t-0.031672662932175091,\t-0.031622687977837322,\t\n-0.031572712944442832,\t-0.031522737832116558,\t-0.031472762640982560,\t-0.031422787371167535,\t-0.031372812022795543,\t-0.031322836595991520,\t-0.031272861090880406,\t-0.031222885507587138,\t\n-0.031172909846236659,\t-0.031122934106953017,\t-0.031072958289862927,\t-0.031022982395090441,\t-0.030973006422760501,\t-0.030923030372998043,\t-0.030873054245928008,\t-0.030823078041675341,\t\n-0.030773101760364976,\t-0.030723125402120969,\t-0.030673148967070036,\t-0.030623172455336231,\t-0.030573195867044496,\t-0.030523219202319773,\t-0.030473242461286999,\t-0.030423265644071117,\t\n-0.030373288750797076,\t-0.030323311781588921,\t-0.030273334736573378,\t-0.030223357615874497,\t-0.030173380419617219,\t-0.030123403147926494,\t-0.030073425800927259,\t-0.030023448378744461,\t\n-0.029973470881502151,\t-0.029923493309327056,\t-0.029873515662343225,\t-0.029823537940675604,\t-0.029773560144449141,\t-0.029723582273788775,\t-0.029673604328819457,\t-0.029623626309666126,\t\n-0.029573648216452839,\t-0.029523670049306321,\t-0.029473691808350629,\t-0.029423713493710708,\t-0.029373735105511504,\t-0.029323756643877957,\t-0.029273778108935024,\t-0.029223799500806755,\t\n-0.029173820819619875,\t-0.029123842065498444,\t-0.029073863238567407,\t-0.029023884338951714,\t-0.028973905366776308,\t-0.028923926322166140,\t-0.028873947205246157,\t-0.028823968016140417,\t\n-0.028773988754975645,\t-0.028724009421875901,\t-0.028674030016966130,\t-0.028624050540371287,\t-0.028574070992216320,\t-0.028524091372626171,\t-0.028474111681725797,\t-0.028424131919639255,\t\n-0.028374152086493271,\t-0.028324172182411907,\t-0.028274192207520112,\t-0.028224212161942836,\t-0.028174232045805030,\t-0.028124251859231647,\t-0.028074271602346743,\t-0.028024291275277047,\t\n-0.027974310878146627,\t-0.027924330411080427,\t-0.027874349874203400,\t-0.027824369267640502,\t-0.027774388591516676,\t-0.027724407845956880,\t-0.027674427031085178,\t-0.027624446147028296,\t\n-0.027574465193910300,\t-0.027524484171856139,\t-0.027474503080990767,\t-0.027424521921439141,\t-0.027374540693326205,\t-0.027324559396776922,\t-0.027274578031915350,\t-0.027224596598868223,\t\n-0.027174615097759602,\t-0.027124633528714442,\t-0.027074651891857700,\t-0.027024670187314331,\t-0.026974688415209284,\t-0.026924706575666629,\t-0.026874724668813094,\t-0.026824742694772748,\t\n-0.026774760653670546,\t-0.026724778545631440,\t-0.026674796370780390,\t-0.026624814129242350,\t-0.026574831821142272,\t-0.026524849446604229,\t-0.026474867005754948,\t-0.026424884498718500,\t\n-0.026374901925619840,\t-0.026324919286583929,\t-0.026274936581735717,\t-0.026224953811200161,\t-0.026174970975101339,\t-0.026124988073565971,\t-0.026075005106718136,\t-0.026025022074682790,\t\n-0.025975038977584887,\t-0.025925055815549384,\t-0.025875072588701246,\t-0.025825089297165423,\t-0.025775105941065992,\t-0.025725122520529681,\t-0.025675139035680566,\t-0.025625155486643601,\t\n-0.025575171873543748,\t-0.025525188196505968,\t-0.025475204455655216,\t-0.025425220651116451,\t-0.025375236783013750,\t-0.025325252851473842,\t-0.025275268856620802,\t-0.025225284798579592,\t\n-0.025175300677475167,\t-0.025125316493432494,\t-0.025075332246576525,\t-0.025025347937031341,\t-0.024975363564923674,\t-0.024925379130377599,\t-0.024875394633518077,\t-0.024825410074470068,\t\n-0.024775425453358531,\t-0.024725440770308433,\t-0.024675456025444732,\t-0.024625471218891505,\t-0.024575486350775486,\t-0.024525501421220751,\t-0.024475516430352263,\t-0.024425531378294982,\t\n-0.024375546265173874,\t-0.024325561091113904,\t-0.024275575856240027,\t-0.024225590560676323,\t-0.024175605204549529,\t-0.024125619787983724,\t-0.024075634311103870,\t-0.024025648774034930,\t\n-0.023975663176901869,\t-0.023925677519829647,\t-0.023875691802942346,\t-0.023825706026366703,\t-0.023775720190226796,\t-0.023725734294647586,\t-0.023675748339754041,\t-0.023625762325671127,\t\n-0.023575776252523804,\t-0.023525790120437044,\t-0.023475803929534918,\t-0.023425817679944172,\t-0.023375831371788881,\t-0.023325845005194010,\t-0.023275858580284529,\t-0.023225872097185400,\t\n-0.023175885556021590,\t-0.023125898956917180,\t-0.023075912299998912,\t-0.023025925585390860,\t-0.022975938813217994,\t-0.022925951983605284,\t-0.022875965096677692,\t-0.022825978152560187,\t\n-0.022775991151377739,\t-0.022726004093254423,\t-0.022676016978316987,\t-0.022626029806689506,\t-0.022576042578496949,\t-0.022526055293864290,\t-0.022476067952916491,\t-0.022426080555778521,\t\n-0.022376093102575351,\t-0.022326105593431057,\t-0.022276118028472392,\t-0.022226130407823428,\t-0.022176142731609141,\t-0.022126154999954496,\t-0.022076167212984461,\t-0.022026179370824010,\t\n-0.021976191473597223,\t-0.021926203521430845,\t-0.021876215514448960,\t-0.021826227452776535,\t-0.021776239336538539,\t-0.021726251165859949,\t-0.021676262940865727,\t-0.021626274661680850,\t\n-0.021576286328429398,\t-0.021526297941238118,\t-0.021476309500231092,\t-0.021426321005533294,\t-0.021376332457269692,\t-0.021326343855565262,\t-0.021276355200544970,\t-0.021226366492333788,\t\n-0.021176377731055806,\t-0.021126388916837765,\t-0.021076400049803750,\t-0.021026411130078738,\t-0.020976422157787698,\t-0.020926433133055602,\t-0.020876444056007422,\t-0.020826454926767247,\t\n-0.020776465745461818,\t-0.020726476512215229,\t-0.020676487227152446,\t-0.020626497890398447,\t-0.020576508502078202,\t-0.020526519062316687,\t-0.020476529571238872,\t-0.020426540028968848,\t\n-0.020376550435633359,\t-0.020326560791356498,\t-0.020276571096263230,\t-0.020226581350478539,\t-0.020176591554127390,\t-0.020126601707334765,\t-0.020076611810224746,\t-0.020026621862924088,\t\n-0.019976631865556874,\t-0.019926641818248082,\t-0.019876651721122681,\t-0.019826661574305654,\t-0.019776671377921974,\t-0.019726681132096614,\t-0.019676690836953663,\t-0.019626700492619872,\t\n-0.019576710099219331,\t-0.019526719656877016,\t-0.019476729165717899,\t-0.019426738625866961,\t-0.019376748037449178,\t-0.019326757400589523,\t-0.019276766715412088,\t-0.019226775982043622,\t\n-0.019176785200608216,\t-0.019126794371230847,\t-0.019076803494036496,\t-0.019026812569150130,\t-0.018976821596696739,\t-0.018926830576800401,\t-0.018876839509587878,\t-0.018826848395183254,\t\n-0.018776857233711509,\t-0.018726866025297623,\t-0.018676874770066569,\t-0.018626883468143330,\t-0.018576892119652882,\t-0.018526900724719315,\t-0.018476909283469387,\t-0.018426917796027183,\t\n-0.018376926262517686,\t-0.018326934683065871,\t-0.018276943057796723,\t-0.018226951386835215,\t-0.018176959670305439,\t-0.018126967908334155,\t-0.018076976101045448,\t-0.018026984248564304,\t\n-0.017976992351015696,\t-0.017927000408524612,\t-0.017877008421216024,\t-0.017827016389214915,\t-0.017777024312645377,\t-0.017727032191634167,\t-0.017677040026305376,\t-0.017627047816783984,\t\n-0.017577055563194971,\t-0.017527063265663324,\t-0.017477070924314015,\t-0.017427078539272032,\t-0.017377086110661463,\t-0.017327093638609063,\t-0.017277101123238933,\t-0.017227108564676050,\t\n-0.017177115963045397,\t-0.017127123318471951,\t-0.017077130631080698,\t-0.017027137900995731,\t-0.016977145128343803,\t-0.016927152313249018,\t-0.016877159455836351,\t-0.016827166556230785,\t\n-0.016777173614557300,\t-0.016727180630940884,\t-0.016677187605506513,\t-0.016627194538378288,\t-0.016577201429682966,\t-0.016527208279544636,\t-0.016477215088088290,\t-0.016427221855438903,\t\n-0.016377228581721463,\t-0.016327235267060949,\t-0.016277241911582349,\t-0.016227248515409756,\t-0.016177255078669930,\t-0.016127261601486968,\t-0.016077268083985848,\t-0.016027274526291560,\t\n-0.015977280928529087,\t-0.015927287290823409,\t-0.015877293613298628,\t-0.015827299896081497,\t-0.015777306139296118,\t-0.015727312343067474,\t-0.015677318507520549,\t-0.015627324632780330,\t\n-0.015577330718971796,\t-0.015527336766219937,\t-0.015477342774648847,\t-0.015427348744385288,\t-0.015377354675553359,\t-0.015327360568278043,\t-0.015277366422684324,\t-0.015227372238897190,\t\n-0.015177378017041625,\t-0.015127383757241725,\t-0.015077389459624257,\t-0.015027395124313314,\t-0.014977400751433882,\t-0.014927406341110951,\t-0.014877411893469502,\t-0.014827417408634523,\t\n-0.014777422886731001,\t-0.014727428327883034,\t-0.014677433732217386,\t-0.014627439099858150,\t-0.014577444430930319,\t-0.014527449725558876,\t-0.014477454983868808,\t-0.014427460205985104,\t\n-0.014377465392032749,\t-0.014327470542135842,\t-0.014277475656421148,\t-0.014227480735012763,\t-0.014177485778035678,\t-0.014127490785614876,\t-0.014077495757875350,\t-0.014027500694942083,\t\n-0.013977505596939176,\t-0.013927510463993393,\t-0.013877515296228835,\t-0.013827520093770489,\t-0.013777524856743341,\t-0.013727529585272381,\t-0.013677534279482598,\t-0.013627538939498980,\t\n-0.013577543565445625,\t-0.013527548157449300,\t-0.013477552715634104,\t-0.013427557240125027,\t-0.013377561731047058,\t-0.013327566188525182,\t-0.013277570612684392,\t-0.013227575003649676,\t\n-0.013177579361545134,\t-0.013127583686497531,\t-0.013077587978630970,\t-0.013027592238070438,\t-0.012977596464940925,\t-0.012927600659367423,\t-0.012877604821474917,\t-0.012827608951387511,\t\n-0.012777613049231971,\t-0.012727617115132400,\t-0.012677621149213785,\t-0.012627625151601117,\t-0.012577629122419387,\t-0.012527633061793582,\t-0.012477636969848696,\t-0.012427640846708830,\t\n-0.012377644692500750,\t-0.012327648507348557,\t-0.012277652291377244,\t-0.012227656044711798,\t-0.012177659767477214,\t-0.012127663459798481,\t-0.012077667121799701,\t-0.012027670753607641,\t\n-0.011977674355346402,\t-0.011927677927140980,\t-0.011877681469116361,\t-0.011827684981397541,\t-0.011777688464109506,\t-0.011727691917377251,\t-0.011677695341324878,\t-0.011627698736079155,\t\n-0.011577702101764184,\t-0.011527705438504959,\t-0.011477708746426471,\t-0.011427712025653710,\t-0.011377715276311668,\t-0.011327718498525340,\t-0.011277721692418826,\t-0.011227724858118897,\t\n-0.011177727995749655,\t-0.011127731105436094,\t-0.011077734187303205,\t-0.011027737241475979,\t-0.010977740268079411,\t-0.010927743267237604,\t-0.010877746239077328,\t-0.010827749183722686,\t\n-0.010777752101298671,\t-0.010727754991930275,\t-0.010677757855742492,\t-0.010627760692860314,\t-0.010577763503408734,\t-0.010527766287511857,\t-0.010477769045296454,\t-0.010427771776886627,\t\n-0.010377774482407372,\t-0.010327777161983680,\t-0.010277779815740545,\t-0.010227782443802959,\t-0.010177785046295918,\t-0.010127787623343527,\t-0.010077790175072555,\t-0.010027792701607108,\t\n-0.009977795203072178,\t-0.009927797679592761,\t-0.009877800131293850,\t-0.009827802558300437,\t-0.009777804960736630,\t-0.009727807338729199,\t-0.009677809692402251,\t-0.009627812021880778,\t\n-0.009577814327289774,\t-0.009527816608754234,\t-0.009477818866399155,\t-0.009427821100349525,\t-0.009377823310729457,\t-0.009327825497665717,\t-0.009277827661282415,\t-0.009227829801704543,\t\n-0.009177831919057097,\t-0.009127834013465071,\t-0.009077836085053460,\t-0.009027838133946371,\t-0.008977840160270574,\t-0.008927842164150176,\t-0.008877844145710174,\t-0.008827846105075561,\t\n-0.008777848042371333,\t-0.008727849957722486,\t-0.008677851851254012,\t-0.008627853723090022,\t-0.008577855573357284,\t-0.008527857402179907,\t-0.008477859209682888,\t-0.008427860995991221,\t\n-0.008377862761229902,\t-0.008327864505523924,\t-0.008277866228998286,\t-0.008227867931777095,\t-0.008177869613987121,\t-0.008127871275752473,\t-0.008077872917198147,\t-0.008027874538449140,\t\n-0.007977876139630444,\t-0.007927877720867060,\t-0.007877879282283094,\t-0.007827880824005316,\t-0.007777882346157837,\t-0.007727883848865652,\t-0.007677885332253757,\t-0.007627886796447149,\t\n-0.007577888241570824,\t-0.007527889667749779,\t-0.007477891075108121,\t-0.007427892463772623,\t-0.007377893833867394,\t-0.007327895185517431,\t-0.007277896518847729,\t-0.007227897833983287,\t\n-0.007177899131049100,\t-0.007127900410169277,\t-0.007077901671470591,\t-0.007027902915077151,\t-0.006977904141113954,\t-0.006927905349705996,\t-0.006877906540978275,\t-0.006827907715055787,\t\n-0.006777908872063531,\t-0.006727910012125614,\t-0.006677911135368810,\t-0.006627912241917228,\t-0.006577913331895865,\t-0.006527914405429720,\t-0.006477915462643789,\t-0.006427916503663068,\t\n-0.006377917528612556,\t-0.006327918537616363,\t-0.006277919530801261,\t-0.006227920508291360,\t-0.006177921470211658,\t-0.006127922416687153,\t-0.006077923347842841,\t-0.006027924263803722,\t\n-0.005977925164693903,\t-0.005927926050640159,\t-0.005877926921766601,\t-0.005827927778198225,\t-0.005777928620060029,\t-0.005727929447477013,\t-0.005677930260574172,\t-0.005627931059476505,\t\n-0.005577931844308124,\t-0.005527932615195800,\t-0.005477933372263645,\t-0.005427934115636657,\t-0.005377934845439833,\t-0.005327935561798172,\t-0.005277936264836673,\t-0.005227936954680332,\t\n-0.005177937631453262,\t-0.005127938295282235,\t-0.005077938946291362,\t-0.005027939584605642,\t-0.004977940210350073,\t-0.004927940823649654,\t-0.004877941424629382,\t-0.004827942013413369,\t\n-0.004777942590128389,\t-0.004727943154898552,\t-0.004677943707848858,\t-0.004627944249104304,\t-0.004577944778789890,\t-0.004527945297030614,\t-0.004477945803951475,\t-0.004427946299676583,\t\n-0.004377946784332712,\t-0.004327947258043976,\t-0.004277947720935371,\t-0.004227948173131897,\t-0.004177948614758552,\t-0.004127949045940336,\t-0.004077949466801360,\t-0.004027949877468397,\t\n-0.003977950278065560,\t-0.003927950668717847,\t-0.003877951049550258,\t-0.003827951420687791,\t-0.003777951782255445,\t-0.003727952134378220,\t-0.003677952477180227,\t-0.003627952810788240,\t\n-0.003577953135326371,\t-0.003527953450919620,\t-0.003477953757692985,\t-0.003427954055771466,\t-0.003377954345280061,\t-0.003327954626343770,\t-0.003277954899086705,\t-0.003227955163635641,\t\n-0.003177955420114689,\t-0.003127955668648848,\t-0.003077955909363118,\t-0.003027956142382499,\t-0.002977956367831988,\t-0.002927956585835699,\t-0.002877956796520407,\t-0.002827957000010223,\t\n-0.002777957196430146,\t-0.002727957385905176,\t-0.002677957568560313,\t-0.002627957744520555,\t-0.002577957913910904,\t-0.002527958076855469,\t-0.002477958233481027,\t-0.002427958383911690,\t\n-0.002377958528272457,\t-0.002327958666688328,\t-0.002277958799284302,\t-0.002227958926185378,\t-0.002177959047516558,\t-0.002127959163401952,\t-0.002077959273968336,\t-0.002027959379339822,\t\n-0.001977959479641409,\t-0.001927959574998098,\t-0.001877959665534888,\t-0.001827959751376778,\t-0.001777959832647881,\t-0.001727959909474973,\t-0.001677959981982165,\t-0.001627960050294457,\t\n-0.001577960114536849,\t-0.001527960174834340,\t-0.001477960231311931,\t-0.001427960284094622,\t-0.001377960333306523,\t-0.001327960379074412,\t-0.001277960421522400,\t-0.001227960460775487,\t\n-0.001177960496958673,\t-0.001127960530196958,\t-0.001077960560615341,\t-0.001027960588337934,\t-0.000977960613491515,\t-0.000927960636200194,\t-0.000877960656588971,\t-0.000827960674782847,\t\n-0.000777960690906820,\t-0.000727960705085893,\t-0.000677960717445063,\t-0.000627960728108444,\t-0.000577960737202810,\t-0.000527960744852275,\t-0.000477960751181838,\t-0.000427960756316500,\t\n-0.000377960760381259,\t-0.000327960763501117,\t-0.000277960765801072,\t-0.000227960767405237,\t-0.000177960768440389,\t-0.000127960769030639,\t-0.000077960769300987\n};\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_linear_interp_example_f32.c\n*\n* Description:   Example code demonstrating usage of sin function\n*                and uses linear interpolation to get higher precision\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n * -------------------------------------------------------------------- */\n\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup LinearInterpExample Linear Interpolate Example\n *\n * <b> CMSIS DSP Software Library -- Linear Interpolate Example  </b>\n *\n * <b> Description </b>\n * This example demonstrates usage of linear interpolate modules and fast math modules.\n * Method 1 uses fast math sine function to calculate sine values using cubic interpolation and method 2 uses\n * linear interpolation function and results are compared to reference output.\n * Example shows linear interpolation function can be used to get higher precision compared to fast math sin calculation.\n *\n * \\par Block Diagram:\n * \\par\n * \\image html linearInterpExampleMethod1.gif \"Method 1: Sine caluclation using fast math\"\n * \\par\n * \\image html linearInterpExampleMethod2.gif \"Method 2: Sine caluclation using interpolation function\"\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInputSin_f32         points to the input values for sine calculation\n * \\li \\c testRefSinOutput32_f32   points to the reference values caculated from sin() matlab function\n * \\li \\c testOutput               points to output buffer calculation from cubic interpolation\n * \\li \\c testLinIntOutput         points to output buffer calculation from linear interpolation\n * \\li \\c snr1                     Signal to noise ratio for reference and cubic interpolation output\n * \\li \\c snr2                     Signal to noise ratio for reference and linear interpolation output\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_sin_f32()\n * - arm_linear_interp_f32()\n *\n * <b> Refer  </b>\n * \\link arm_linear_interp_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_linear_interp_example_f32.c\n  */\n\n#include \"arm_math.h\"\n#include \"math_helper.h\"\n\n#define SNR_THRESHOLD           90\n#define TEST_LENGTH_SAMPLES     10\n#define XSPACING               (0.00005f)\n\n/* ----------------------------------------------------------------------\n* Test input data for F32 SIN function\n* Generated by the MATLAB rand() function\n* randn('state', 0)\n* xi = (((1/4.18318581819710)* randn(blockSize, 1) * 2* pi));\n* --------------------------------------------------------------------*/\nfloat32_t testInputSin_f32[TEST_LENGTH_SAMPLES] =\n{\n   -0.649716504673081170, -2.501723745497831200,\n    0.188250329003310100,  0.432092748487532540,\n   -1.722010988459680800,  1.788766476323060600,\n    1.786136060975809500, -0.056525543169408797,\n    0.491596272728153760,  0.262309671126153390\n};\n\n/*------------------------------------------------------------------------------\n*  Reference out of SIN F32 function for Block Size = 10\n*  Calculated from sin(testInputSin_f32)\n*------------------------------------------------------------------------------*/\nfloat32_t testRefSinOutput32_f32[TEST_LENGTH_SAMPLES] =\n{\n   -0.604960695383043530, -0.597090287967934840,\n    0.187140422442966500,  0.418772124875992690,\n   -0.988588831792106880,  0.976338412038794010,\n    0.976903856413481100, -0.056495446835214236,\n    0.472033731854734240,  0.259311907228582830\n};\n\n/*------------------------------------------------------------------------------\n*  Method 1: Test out Buffer Calculated from Cubic Interpolation\n*------------------------------------------------------------------------------*/\nfloat32_t testOutput[TEST_LENGTH_SAMPLES];\n\n/*------------------------------------------------------------------------------\n*  Method 2: Test out buffer Calculated from Linear Interpolation\n*------------------------------------------------------------------------------*/\nfloat32_t testLinIntOutput[TEST_LENGTH_SAMPLES];\n\n/*------------------------------------------------------------------------------\n*  External table used for linear interpolation\n*------------------------------------------------------------------------------*/\nextern float arm_linear_interep_table[188495];\n\n/* ----------------------------------------------------------------------\n* Global Variables for caluclating SNR's for Method1 & Method 2\n* ------------------------------------------------------------------- */\nfloat32_t snr1;\nfloat32_t snr2;\n\n/* ----------------------------------------------------------------------------\n* Calculation of Sine values from Cubic Interpolation and Linear interpolation\n* ---------------------------------------------------------------------------- */\nint32_t main(void)\n{\n  uint32_t i;\n  arm_status status;\n\n  arm_linear_interp_instance_f32 S = {188495, -3.141592653589793238, XSPACING, &arm_linear_interep_table[0]};\n\n  /*------------------------------------------------------------------------------\n  *  Method 1: Test out Calculated from Cubic Interpolation\n  *------------------------------------------------------------------------------*/\n  for(i=0; i< TEST_LENGTH_SAMPLES; i++)\n  {\n    testOutput[i] = arm_sin_f32(testInputSin_f32[i]);\n  }\n\n  /*------------------------------------------------------------------------------\n  *  Method 2: Test out Calculated from Cubic Interpolation and Linear interpolation\n  *------------------------------------------------------------------------------*/\n\n  for(i=0; i< TEST_LENGTH_SAMPLES; i++)\n  {\n      testLinIntOutput[i] = arm_linear_interp_f32(&S, testInputSin_f32[i]);\n  }\n\n  /*------------------------------------------------------------------------------\n  *            SNR calculation for method 1\n  *------------------------------------------------------------------------------*/\n  snr1 = arm_snr_f32(testRefSinOutput32_f32, testOutput, 2);\n\n  /*------------------------------------------------------------------------------\n  *            SNR calculation for method 2\n  *------------------------------------------------------------------------------*/\n  snr2 = arm_snr_f32(testRefSinOutput32_f32, testLinIntOutput, 2);\n\n  /*------------------------------------------------------------------------------\n  *            Initialise status depending on SNR calculations\n  *------------------------------------------------------------------------------*/\n  if ( snr2 > snr1)\n  {\n    status = ARM_MATH_SUCCESS;\n  }\n  else\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n\n  /* ----------------------------------------------------------------------\n  ** Loop here if the signals fail the PASS check.\n  ** This denotes a test failure\n  ** ------------------------------------------------------------------- */\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n /** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:        17. January 2013\n* $Revision: \tV1.4.0  b\n*\n* Project: \t    CMSIS DSP Library\n*\n* Title:\t    math_helper.c\n*\n* Description:\tDefinition of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------\n*\t\tInclude standard header files\n* -------------------------------------------------------------------- */\n#include<math.h>\n\n/* ----------------------------------------------------------------------\n*\t\tInclude project header files\n* -------------------------------------------------------------------- */\n#include \"math_helper.h\"\n\n/**\n * @brief  Caluclation of SNR\n * @param[in]  pRef \tPointer to the reference buffer\n * @param[in]  pTest\tPointer to the test buffer\n * @param[in]  buffSize\ttotal number of samples\n * @return     SNR\n * The function Caluclates signal to noise ratio for the reference output\n * and test output\n */\n\nfloat arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)\n{\n  float EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  float SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n \t  /* Checking for a NAN value in pRef array */\n\t  test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n\n\t  /* Checking for a NAN value in pTest array */\n\t  test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n\t/* Checking for a NAN value in EnergyError */\n\ttest =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n  \t\treturn(0);\n    }\n\n\n  SNR = 10 * log10 (EnergySignal / EnergyError);\n\n  return (SNR);\n\n}\n\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,\n                            uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Converts float to fixed in q12.20 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to outputbuffer\n * @param[in]  numSamples  number of samples in the input buffer\n * @return none\n * The function converts floating point values to fixed point(q12.20) values\n */\n\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1048576.0f corresponds to pow(2, 20) */\n      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 1.0)\n        {\n          pOut[i] = 0x000FFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q31 (q31_t * input_buf,\n\t\t\t\t\t\t\t\t uint32_t blockSize,\n                                 uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q7 (q7_t * input_buf,\n\t\t\t\t\t\t\t\tuint32_t blockSize,\n                                uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n\n\n/**\n * @brief  Caluclates number of guard bits\n * @param[in]  num_adds \tnumber of additions\n * @return guard bits\n * The function Caluclates the number of guard bits\n * depending on the numtaps\n */\n\nuint32_t arm_calc_guard_bits (uint32_t num_adds)\n{\n  uint32_t i = 1, j = 0;\n\n  if (num_adds == 1)\n    {\n      return (0);\n    }\n\n  while (i < num_adds)\n    {\n      i = i * 2;\n      j++;\n    }\n\n  return (j);\n}\n\n/**\n * @brief  Apply guard bits to buffer\n * @param[in,out]  pIn         pointer to input buffer\n * @param[in]      numSamples  number of samples in the input buffer\n * @param[in]      guard_bits  guard bits\n * @return none\n */\n\nvoid arm_apply_guard_bits (float32_t *pIn,\n\t\t\t\t\t\t   uint32_t numSamples,\n\t\t\t\t\t\t   uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);\n    }\n}\n\n/**\n * @brief  Calculates pow(2, numShifts)\n * @param[in]  numShifts \tnumber of shifts\n * @return pow(2, numShifts)\n */\nuint32_t arm_calc_2pow(uint32_t numShifts)\n{\n\n  uint32_t i, val = 1;\n\n  for (i = 0; i < numShifts; i++)\n    {\n      val = val * 2;\n    }\n\n  return(val);\n}\n\n\n\n/**\n * @brief  Converts float to fixed q14\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 16384.0f corresponds to pow(2, 14) */\n      pOut[i] = (q15_t) (pIn[i] * 16384.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFF;\n        }\n\n    }\n\n}\n\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 4.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n\n/**\n * @brief  Converts float to fixed q28 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t/* 268435456.0f corresponds to pow(2, 28) */\n      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 8.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Clip the float values to +/- 1\n * @param[in,out]  pIn           input buffer\n * @param[in]      numSamples    number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_clip_f32 (float *pIn, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      if (pIn[i] > 1.0f)\n\t  {\n\t    pIn[i] = 1.0;\n\t  }\n\t  else if ( pIn[i] < -1.0f)\n\t  {\n\t    pIn[i] = -1.0;\n\t  }\n\n    }\n}\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.h",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*  \n* Project: \t    CMSIS DSP Library \n*\n* Title:\t    math_helper.h\n* \n* Description:\tPrototypes of all helper functions required.  \n*\n* Target Processor: Cortex-M4/Cortex-M3\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n* -------------------------------------------------------------------- */\n\n\n#include \"arm_math.h\"\n\n#ifndef MATH_HELPER_H\n#define MATH_HELPER_H\n\nfloat arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  \nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);\nvoid arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_clip_f32(float *pIn, uint32_t numSamples);\nuint32_t arm_calc_guard_bits(uint32_t num_adds);\nvoid arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);\nuint32_t arm_calc_2pow(uint32_t guard_bits);\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_matrix_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/arm_matrix_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_matrix_example_f32.c\n*\n* Description:   Example code demonstrating least square fit to data\n*                using matrix functions\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n * -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup MatrixExample Matrix Example\n *\n * \\par Description:\n * \\par\n * Demonstrates the use of Matrix Transpose, Matrix Muliplication, and Matrix Inverse\n * functions to apply least squares fitting to input data. Least squares fitting is\n * the procedure for finding the best-fitting curve that minimizes the sum of the\n * squares of the offsets (least square error) from a given set of data.\n *\n * \\par Algorithm:\n * \\par\n * The linear combination of parameters considered is as follows:\n * \\par\n * <code>A * X = B</code>, where \\c X is the unknown value and can be estimated\n * from \\c A & \\c B.\n * \\par\n * The least squares estimate \\c X is given by the following equation:\n * \\par\n * <code>X = Inverse(A<sup>T</sup> * A) *  A<sup>T</sup> * B</code>\n *\n * \\par Block Diagram:\n * \\par\n * \\image html matrixExample.gif\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c A_f32 input matrix in the linear combination equation\n * \\li \\c B_f32 output matrix in the linear combination equation\n * \\li \\c X_f32 unknown matrix estimated using \\c A_f32 & \\c B_f32 matrices\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_mat_init_f32()\n * - arm_mat_trans_f32()\n * - arm_mat_mult_f32()\n * - arm_mat_inverse_f32()\n *\n * <b> Refer  </b>\n * \\link arm_matrix_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_matrix_example_f32.c\n  */\n\n#include \"arm_math.h\"\n#include \"math_helper.h\"\n\n#define SNR_THRESHOLD   90\n\n/* --------------------------------------------------------------------------------\n* Test input data(Cycles) taken from FIR Q15 module for differant cases of blockSize\n* and tapSize\n* --------------------------------------------------------------------------------- */\n\nconst float32_t B_f32[4] =\n{\n  782.0, 7577.0, 470.0, 4505.0\n};\n\n/* --------------------------------------------------------------------------------\n* Formula to fit is  C1 + C2 * numTaps + C3 * blockSize + C4 * numTaps * blockSize\n* -------------------------------------------------------------------------------- */\n\nconst float32_t A_f32[16] =\n{\n  /* Const,   numTaps,   blockSize,   numTaps*blockSize */\n  1.0,     32.0,      4.0,     128.0,\n  1.0,     32.0,     64.0,    2048.0,\n  1.0,     16.0,      4.0,      64.0,\n  1.0,     16.0,     64.0,    1024.0,\n};\n\n\n/* ----------------------------------------------------------------------\n* Temporary buffers  for storing intermediate values\n* ------------------------------------------------------------------- */\n/* Transpose of A Buffer */\nfloat32_t AT_f32[16];\n/* (Transpose of A * A) Buffer */\nfloat32_t ATMA_f32[16];\n/* Inverse(Transpose of A * A)  Buffer */\nfloat32_t ATMAI_f32[16];\n/* Test Output Buffer */\nfloat32_t X_f32[4];\n\n/* ----------------------------------------------------------------------\n* Reference ouput buffer C1, C2, C3 and C4 taken from MATLAB\n* ------------------------------------------------------------------- */\nconst float32_t xRef_f32[4] = {73.0, 8.0, 21.25, 2.875};\n\nfloat32_t snr;\n\n\n/* ----------------------------------------------------------------------\n* Max magnitude FFT Bin test\n* ------------------------------------------------------------------- */\n\nint32_t main(void)\n{\n\n  arm_matrix_instance_f32 A;      /* Matrix A Instance */\n  arm_matrix_instance_f32 AT;     /* Matrix AT(A transpose) instance */\n  arm_matrix_instance_f32 ATMA;   /* Matrix ATMA( AT multiply with A) instance */\n  arm_matrix_instance_f32 ATMAI;  /* Matrix ATMAI(Inverse of ATMA) instance */\n  arm_matrix_instance_f32 B;      /* Matrix B instance */\n  arm_matrix_instance_f32 X;      /* Matrix X(Unknown Matrix) instance */\n\n  uint32_t srcRows, srcColumns;  /* Temporary variables */\n  arm_status status;\n\n  /* Initialise A Matrix Instance with numRows, numCols and data array(A_f32) */\n  srcRows = 4;\n  srcColumns = 4;\n  arm_mat_init_f32(&A, srcRows, srcColumns, (float32_t *)A_f32);\n\n  /* Initialise Matrix Instance AT with numRows, numCols and data array(AT_f32) */\n  srcRows = 4;\n  srcColumns = 4;\n  arm_mat_init_f32(&AT, srcRows, srcColumns, AT_f32);\n\n  /* calculation of A transpose */\n  status = arm_mat_trans_f32(&A, &AT);\n\n\n  /* Initialise ATMA Matrix Instance with numRows, numCols and data array(ATMA_f32) */\n  srcRows = 4;\n  srcColumns = 4;\n  arm_mat_init_f32(&ATMA, srcRows, srcColumns, ATMA_f32);\n\n  /* calculation of AT Multiply with A */\n  status = arm_mat_mult_f32(&AT, &A, &ATMA);\n\n  /* Initialise ATMAI Matrix Instance with numRows, numCols and data array(ATMAI_f32) */\n  srcRows = 4;\n  srcColumns = 4;\n  arm_mat_init_f32(&ATMAI, srcRows, srcColumns, ATMAI_f32);\n\n  /* calculation of Inverse((Transpose(A) * A) */\n  status = arm_mat_inverse_f32(&ATMA, &ATMAI);\n\n  /* calculation of (Inverse((Transpose(A) * A)) *  Transpose(A)) */\n  status = arm_mat_mult_f32(&ATMAI, &AT, &ATMA);\n\n  /* Initialise B Matrix Instance with numRows, numCols and data array(B_f32) */\n  srcRows = 4;\n  srcColumns = 1;\n  arm_mat_init_f32(&B, srcRows, srcColumns, (float32_t *)B_f32);\n\n  /* Initialise X Matrix Instance with numRows, numCols and data array(X_f32) */\n  srcRows = 4;\n  srcColumns = 1;\n  arm_mat_init_f32(&X, srcRows, srcColumns, X_f32);\n\n  /* calculation ((Inverse((Transpose(A) * A)) *  Transpose(A)) * B) */\n  status = arm_mat_mult_f32(&ATMA, &B, &X);\n\n  /* Comparison of reference with test output */\n  snr = arm_snr_f32((float32_t *)xRef_f32, X_f32, 4);\n\n  /*------------------------------------------------------------------------------\n  *            Initialise status depending on SNR calculations\n  *------------------------------------------------------------------------------*/\n  if ( snr > SNR_THRESHOLD)\n  {\n    status = ARM_MATH_SUCCESS;\n  }\n  else\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n\n\n  /* ----------------------------------------------------------------------\n  ** Loop here if the signals fail the PASS check.\n  ** This denotes a test failure\n  ** ------------------------------------------------------------------- */\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n /** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:        17. January 2013\n* $Revision: \tV1.4.0  b\n*\n* Project: \t    CMSIS DSP Library\n*\n* Title:\t    math_helper.c\n*\n* Description:\tDefinition of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------\n*\t\tInclude standard header files\n* -------------------------------------------------------------------- */\n#include<math.h>\n\n/* ----------------------------------------------------------------------\n*\t\tInclude project header files\n* -------------------------------------------------------------------- */\n#include \"math_helper.h\"\n\n/**\n * @brief  Caluclation of SNR\n * @param[in]  pRef \tPointer to the reference buffer\n * @param[in]  pTest\tPointer to the test buffer\n * @param[in]  buffSize\ttotal number of samples\n * @return     SNR\n * The function Caluclates signal to noise ratio for the reference output\n * and test output\n */\n\nfloat arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)\n{\n  float EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  float SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n \t  /* Checking for a NAN value in pRef array */\n\t  test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n\n\t  /* Checking for a NAN value in pTest array */\n\t  test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n\t/* Checking for a NAN value in EnergyError */\n\ttest =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n  \t\treturn(0);\n    }\n\n\n  SNR = 10 * log10 (EnergySignal / EnergyError);\n\n  return (SNR);\n\n}\n\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,\n                            uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Converts float to fixed in q12.20 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to outputbuffer\n * @param[in]  numSamples  number of samples in the input buffer\n * @return none\n * The function converts floating point values to fixed point(q12.20) values\n */\n\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1048576.0f corresponds to pow(2, 20) */\n      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 1.0)\n        {\n          pOut[i] = 0x000FFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q31 (q31_t * input_buf,\n\t\t\t\t\t\t\t\t uint32_t blockSize,\n                                 uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q7 (q7_t * input_buf,\n\t\t\t\t\t\t\t\tuint32_t blockSize,\n                                uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n\n\n/**\n * @brief  Caluclates number of guard bits\n * @param[in]  num_adds \tnumber of additions\n * @return guard bits\n * The function Caluclates the number of guard bits\n * depending on the numtaps\n */\n\nuint32_t arm_calc_guard_bits (uint32_t num_adds)\n{\n  uint32_t i = 1, j = 0;\n\n  if (num_adds == 1)\n    {\n      return (0);\n    }\n\n  while (i < num_adds)\n    {\n      i = i * 2;\n      j++;\n    }\n\n  return (j);\n}\n\n/**\n * @brief  Apply guard bits to buffer\n * @param[in,out]  pIn         pointer to input buffer\n * @param[in]      numSamples  number of samples in the input buffer\n * @param[in]      guard_bits  guard bits\n * @return none\n */\n\nvoid arm_apply_guard_bits (float32_t *pIn,\n\t\t\t\t\t\t   uint32_t numSamples,\n\t\t\t\t\t\t   uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);\n    }\n}\n\n/**\n * @brief  Calculates pow(2, numShifts)\n * @param[in]  numShifts \tnumber of shifts\n * @return pow(2, numShifts)\n */\nuint32_t arm_calc_2pow(uint32_t numShifts)\n{\n\n  uint32_t i, val = 1;\n\n  for (i = 0; i < numShifts; i++)\n    {\n      val = val * 2;\n    }\n\n  return(val);\n}\n\n\n\n/**\n * @brief  Converts float to fixed q14\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 16384.0f corresponds to pow(2, 14) */\n      pOut[i] = (q15_t) (pIn[i] * 16384.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFF;\n        }\n\n    }\n\n}\n\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 4.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n\n/**\n * @brief  Converts float to fixed q28 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t/* 268435456.0f corresponds to pow(2, 28) */\n      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 8.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Clip the float values to +/- 1\n * @param[in,out]  pIn           input buffer\n * @param[in]      numSamples    number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_clip_f32 (float *pIn, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      if (pIn[i] > 1.0f)\n\t  {\n\t    pIn[i] = 1.0;\n\t  }\n\t  else if ( pIn[i] < -1.0f)\n\t  {\n\t    pIn[i] = -1.0;\n\t  }\n\n    }\n}\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.h",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*  \n* Project: \t    CMSIS DSP Library \n*\n* Title:\t    math_helper.h\n* \n* Description:\tPrototypes of all helper functions required.  \n*\n* Target Processor: Cortex-M4/Cortex-M3\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n* -------------------------------------------------------------------- */\n\n\n#include \"arm_math.h\"\n\n#ifndef MATH_HELPER_H\n#define MATH_HELPER_H\n\nfloat arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  \nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);\nvoid arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_clip_f32(float *pIn, uint32_t numSamples);\nuint32_t arm_calc_guard_bits(uint32_t num_adds);\nvoid arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);\nuint32_t arm_calc_2pow(uint32_t guard_bits);\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_signal_converge_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_data.c",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*   \n* Project: \t    CMSIS DSP Library   \n* Title:\t     \tarm_signal_converge_data.c\n*   \n* Description:\t Test input data for Floating point LMS Norm FIR filter\n*   \n* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n* -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n** Test input data for Floating point LMS Norm FIR filter\n** Generated by the MATLAB randn() function\n** ------------------------------------------------------------------- */\n\nfloat32_t testInput_f32[1536] = \n{   \n-0.432565,\t-1.665584,\t0.125332,\t0.287676,\t-1.146471,\t1.190915,\t1.189164,\t-0.037633,\t\n0.327292,\t0.174639,\t-0.186709,\t0.725791,\t-0.588317,\t2.183186,\t-0.136396,\t0.113931,\t\n1.066768,\t0.059281,\t-0.095648,\t-0.832349,\t0.294411,\t-1.336182,\t0.714325,\t1.623562,\t\n-0.691776,\t0.857997,\t1.254001,\t-1.593730,\t-1.440964,\t0.571148,\t-0.399886,\t0.689997,\t\n0.815622,\t0.711908,\t1.290250,\t0.668601,\t1.190838,\t-1.202457,\t-0.019790,\t-0.156717,\t\n-1.604086,\t0.257304,\t-1.056473,\t1.415141,\t-0.805090,\t0.528743,\t0.219321,\t-0.921902,\t\n-2.170674,\t-0.059188,\t-1.010634,\t0.614463,\t0.507741,\t1.692430,\t0.591283,\t-0.643595,\t\n0.380337,\t-1.009116,\t-0.019511,\t-0.048221,\t0.000043,\t-0.317859,\t1.095004,\t-1.873990,\t\n0.428183,\t0.895638,\t0.730957,\t0.577857,\t0.040314,\t0.677089,\t0.568900,\t-0.255645,\t\n-0.377469,\t-0.295887,\t-1.475135,\t-0.234004,\t0.118445,\t0.314809,\t1.443508,\t-0.350975,\t\n0.623234,\t0.799049,\t0.940890,\t-0.992092,\t0.212035,\t0.237882,\t-1.007763,\t-0.742045,\t\n1.082295,\t-0.131500,\t0.389880,\t0.087987,\t-0.635465,\t-0.559573,\t0.443653,\t-0.949904,\t\n0.781182,\t0.568961,\t-0.821714,\t-0.265607,\t-1.187777,\t-2.202321,\t0.986337,\t-0.518635,\t\n0.327368,\t0.234057,\t0.021466,\t-1.003944,\t-0.947146,\t-0.374429,\t-1.185886,\t-1.055903,\t\n1.472480,\t0.055744,\t-1.217317,\t-0.041227,\t-1.128344,\t-1.349278,\t-0.261102,\t0.953465,\t\n0.128644,\t0.656468,\t-1.167819,\t-0.460605,\t-0.262440,\t-1.213152,\t-1.319437,\t0.931218,\t\n0.011245,\t-0.645146,\t0.805729,\t0.231626,\t-0.989760,\t1.339586,\t0.289502,\t1.478917,\t\n1.138028,\t-0.684139,\t-1.291936,\t-0.072926,\t-0.330599,\t-0.843628,\t0.497770,\t1.488490,\t\n-0.546476,\t-0.846758,\t-0.246337,\t0.663024,\t-0.854197,\t-1.201315,\t-0.119869,\t-0.065294,\t\n0.485296,\t-0.595491,\t-0.149668,\t-0.434752,\t-0.079330,\t1.535152,\t-0.606483,\t-1.347363,\t\n0.469383,\t-0.903567,\t0.035880,\t-0.627531,\t0.535398,\t0.552884,\t-0.203690,\t-2.054325,\t\n0.132561,\t1.592941,\t1.018412,\t-1.580402,\t-0.078662,\t-0.681657,\t-1.024553,\t-1.234353,\t\n0.288807,\t-0.429303,\t0.055801,\t-0.367874,\t-0.464973,\t0.370961,\t0.728283,\t2.112160,\t\n-1.357298,\t-1.022610,\t1.037834,\t-0.389800,\t-1.381266,\t0.315543,\t1.553243,\t0.707894,\t\n1.957385,\t0.504542,\t1.864529,\t-0.339812,\t-1.139779,\t-0.211123,\t1.190245,\t-1.116209,\t\n0.635274,\t-0.601412,\t0.551185,\t-1.099840,\t0.085991,\t-2.004563,\t-0.493088,\t0.462048,\t\n-0.321005,\t1.236556,\t-0.631280,\t-2.325211,\t-1.231637,\t1.055648,\t-0.113224,\t0.379224,\t\n0.944200,\t-2.120427,\t-0.644679,\t-0.704302,\t-1.018137,\t-0.182082,\t1.521013,\t-0.038439,\t\n1.227448,\t-0.696205,\t0.007524,\t-0.782893,\t0.586939,\t-0.251207,\t0.480136,\t0.668155,\t\n-0.078321,\t0.889173,\t2.309287,\t0.524639,\t-0.011787,\t0.913141,\t0.055941,\t-1.107070,\t\n0.485498,\t-0.005005,\t-0.276218,\t1.276452,\t1.863401,\t-0.522559,\t0.103424,\t-0.807649,\t\n0.680439,\t-2.364590,\t0.990115,\t0.218899,\t0.261662,\t1.213444,\t-0.274667,\t-0.133134,\t\n-1.270500,\t-1.663606,\t-0.703554,\t0.280880,\t-0.541209,\t-1.333531,\t1.072686,\t-0.712085,\t\n-0.011286,\t-0.000817,\t-0.249436,\t0.396575,\t-0.264013,\t-1.664011,\t-1.028975,\t0.243095,\t\n-1.256590,\t-0.347183,\t-0.941372,\t-1.174560,\t-1.021142,\t-0.401667,\t0.173666,\t-0.116118,\t\n1.064119,\t-0.245386,\t-1.517539,\t0.009734,\t0.071373,\t0.316536,\t0.499826,\t1.278084,\t\n-0.547816,\t0.260808,\t-0.013177,\t-0.580264,\t2.136308,\t-0.257617,\t-1.409528,\t1.770101,\t\n0.325546,\t-1.119040,\t0.620350,\t1.269782,\t-0.896043,\t0.135175,\t-0.139040,\t-1.163395,\t\n1.183720,\t-0.015430,\t0.536219,\t-0.716429,\t-0.655559,\t0.314363,\t0.106814,\t1.848216,\t\n-0.275106,\t2.212554,\t1.508526,\t-1.945079,\t-1.680543,\t-0.573534,\t-0.185817,\t0.008934,\t\n0.836950,\t-0.722271,\t-0.721490,\t-0.201181,\t-0.020464,\t0.278890,\t1.058295,\t0.621673,\t\n-1.750615,\t0.697348,\t0.811486,\t0.636345,\t1.310080,\t0.327098,\t-0.672993,\t-0.149327,\t\n-2.449018,\t0.473286,\t0.116946,\t-0.591104,\t-0.654708,\t-1.080662,\t-0.047731,\t0.379345,\t\n-0.330361,\t-0.499898,\t-0.035979,\t-0.174760,\t-0.957265,\t1.292548,\t0.440910,\t1.280941,\t\n-0.497730,\t-1.118717,\t0.807650,\t0.041200,\t-0.756209,\t-0.089129,\t-2.008850,\t1.083918,\t\n-0.981191,\t-0.688489,\t1.339479,\t-0.909243,\t-0.412858,\t-0.506163,\t1.619748,\t0.080901,\t\n-1.081056,\t-1.124518,\t1.735676,\t1.937459,\t1.635068,\t-1.255940,\t-0.213538,\t-0.198932,\t\n0.307499,\t-0.572325,\t-0.977648,\t-0.446809,\t1.082092,\t2.372648,\t0.229288,\t-0.266623,\t\n0.701672,\t-0.487590,\t1.862480,\t1.106851,\t-1.227566,\t-0.669885,\t1.340929,\t0.388083,\t\n0.393059,\t-1.707334,\t0.227859,\t0.685633,\t-0.636790,\t-1.002606,\t-0.185621,\t-1.054033,\t\n-0.071539,\t0.279198,\t1.373275,\t0.179841,\t-0.542017,\t1.634191,\t0.825215,\t0.230761,\t\n0.671634,\t-0.508078,\t0.856352,\t0.268503,\t0.624975,\t-1.047338,\t1.535670,\t0.434426,\t\n-1.917136,\t0.469940,\t1.274351,\t0.638542,\t1.380782,\t1.319843,\t-0.909429,\t-2.305605,\t\n1.788730,\t0.390798,\t0.020324,\t-0.405977,\t-1.534895,\t0.221373,\t-1.374479,\t-0.839286,\t\n-0.208643,\t0.755913,\t0.375734,\t-1.345413,\t1.481876,\t0.032736,\t1.870453,\t-1.208991,\t\n-0.782632,\t-0.767299,\t-0.107200,\t-0.977057,\t-0.963988,\t-2.379172,\t-0.838188,\t0.257346,\t\n-0.183834,\t-0.167615,\t-0.116989,\t0.168488,\t-0.501206,\t-0.705076,\t0.508165,\t-0.420922,\t\n0.229133,\t-0.959497,\t-0.146043,\t0.744538,\t-0.890496,\t0.139062,\t-0.236144,\t-0.075459,\t\n-0.358572,\t-2.077635,\t-0.143546,\t1.393341,\t0.651804,\t-0.377134,\t-0.661443,\t0.248958,\t\n-0.383516,\t-0.528480,\t0.055388,\t1.253769,\t-2.520004,\t0.584856,\t-1.008064,\t0.944285,\t\n-2.423957,\t-0.223831,\t0.058070,\t-0.424614,\t-0.202918,\t-1.513077,\t-1.126352,\t-0.815002,\t\n0.366614,\t-0.586107,\t1.537409,\t0.140072,\t-1.862767,\t-0.454193,\t-0.652074,\t0.103318,\t\n-0.220632,\t-0.279043,\t-0.733662,\t-0.064534,\t-1.444004,\t0.612340,\t-1.323503,\t-0.661577,\t\n-0.146115,\t0.248085,\t-0.076633,\t1.738170,\t1.621972,\t0.626436,\t0.091814,\t-0.807607,\t\n-0.461337,\t-1.405969,\t-0.374530,\t-0.470911,\t1.751296,\t0.753225,\t0.064989,\t-0.292764,\t\n0.082823,\t0.766191,\t2.236850,\t0.326887,\t0.863304,\t0.679387,\t0.554758,\t1.001630,\t\n1.259365,\t0.044151,\t-0.314138,\t0.226708,\t0.996692,\t1.215912,\t-0.542702,\t0.912228,\t\n-0.172141,\t-0.335955,\t0.541487,\t0.932111,\t-0.570253,\t-1.498605,\t-0.050346,\t0.553025,\t\n0.083498,\t1.577524,\t-0.330774,\t0.795155,\t-0.784800,\t-1.263121,\t0.666655,\t-1.392632,\t\n-1.300562,\t-0.605022,\t-1.488565,\t0.558543,\t-0.277354,\t-1.293685,\t-0.888435,\t-0.986520,\t\n-0.071618,\t-2.414591,\t-0.694349,\t-1.391389,\t0.329648,\t0.598544,\t0.147175,\t-0.101439,\t\n-2.634981,\t0.028053,\t-0.876310,\t-0.265477,\t-0.327578,\t-1.158247,\t0.580053,\t0.239756,\t\n-0.350885,\t0.892098,\t1.578299,\t-1.108174,\t-0.025931,\t-1.110628,\t0.750834,\t0.500167,\t\n-0.517261,\t-0.559209,\t-0.753371,\t0.925813,\t-0.248520,\t-0.149835,\t-1.258415,\t0.312620,\t\n2.690277,\t0.289696,\t-1.422803,\t0.246786,\t-1.435773,\t0.148573,\t-1.693073,\t0.719188,\t\n1.141773,\t1.551936,\t1.383630,\t-0.758092,\t0.442663,\t0.911098,\t-1.074086,\t0.201762,\t\n0.762863,\t-1.288187,\t-0.952962,\t0.778175,\t-0.006331,\t0.524487,\t1.364272,\t0.482039,\t\n-0.787066,\t0.751999,\t-0.166888,\t-0.816228,\t2.094065,\t0.080153,\t-0.937295,\t0.635739,\t\n1.682028,\t0.593634,\t0.790153,\t0.105254,\t-0.158579,\t0.870907,\t-0.194759,\t0.075474,\t\n-0.526635,\t-0.685484,\t-0.268388,\t-1.188346,\t0.248579,\t0.102452,\t-0.041007,\t-2.247582,\t\n-0.510776,\t0.249243,\t0.369197,\t0.179197,\t-0.037283,\t-1.603310,\t0.339372,\t-0.131135,\t\n0.485190,\t0.598751,\t-0.086031,\t0.325292,\t-0.335143,\t-0.322449,\t-0.382374,\t-0.953371,\t\n0.233576,\t1.235245,\t-0.578532,\t-0.501537,\t0.722864,\t0.039498,\t1.541279,\t-1.701053,\t\n-1.033741,\t-0.763708,\t2.176426,\t0.431612,\t-0.443765,\t0.029996,\t-0.315671,\t0.977846,\t\n0.018295,\t0.817963,\t0.702341,\t-0.231271,\t-0.113690,\t0.127941,\t-0.799410,\t-0.238612,\t\n-0.089463,\t-1.023264,\t0.937538,\t-1.131719,\t-0.710702,\t-1.169501,\t1.065437,\t-0.680394,\t\n-1.725773,\t0.813200,\t1.441867,\t0.672272,\t0.138665,\t-0.859534,\t-0.752251,\t1.229615,\t\n1.150754,\t-0.608025,\t0.806158,\t0.217133,\t-0.373461,\t-0.832030,\t0.286866,\t-1.818892,\t\n-1.573051,\t2.015666,\t-0.071982,\t2.628909,\t-0.243317,\t0.173276,\t0.923207,\t-0.178553,\t\n-0.521705,\t1.431962,\t-0.870117,\t0.807542,\t-0.510635,\t0.743514,\t0.847898,\t-0.829901,\t\n0.532994,\t1.032848,\t-1.052024,\t0.362114,\t-0.036787,\t-1.227636,\t-0.275099,\t-0.160435,\t\n-1.083575,\t-1.954213,\t-0.909487,\t-0.005579,\t-1.723490,\t1.263077,\t-0.600433,\t-2.063925,\t\n0.110911,\t1.487614,\t0.053002,\t0.161981,\t-0.026878,\t0.173576,\t0.882168,\t0.182294,\t\n0.755295,\t0.508035,\t0.131880,\t0.280104,\t-0.982848,\t-0.944087,\t-0.013058,\t0.354345,\t\n-0.894709,\t0.812111,\t0.109537,\t2.731644,\t0.411079,\t-1.306862,\t0.383806,\t0.499504,\t\n-0.510786,\t0.234922,\t-0.597825,\t0.020771,\t0.419443,\t1.191104,\t0.771214,\t-2.644222,\t\n0.285430,\t0.826093,\t-0.008122,\t0.858438,\t0.774788,\t1.305945,\t1.231503,\t0.958564,\t\n-1.654548,\t-0.990396,\t0.685236,\t-0.974870,\t-0.606726,\t0.686794,\t0.020049,\t1.063801,\t\n-1.341050,\t0.479510,\t-1.633974,\t-1.442665,\t0.293781,\t-0.140364,\t-1.130341,\t-0.292538,\t\n-0.582536,\t-0.896348,\t0.248601,\t-1.489663,\t0.313509,\t-2.025084,\t0.528990,\t0.343471,\t\n0.758193,\t-0.691940,\t0.680179,\t-1.072541,\t0.899772,\t-2.123092,\t0.284712,\t-0.733323,\t\n-0.773376,\t0.151842,\t-0.336843,\t0.970761,\t-0.107236,\t1.013492,\t-0.475347,\t0.068948,\t\n0.398592,\t1.116326,\t0.620451,\t-0.287674,\t-1.371773,\t-0.685868,\t0.331685,\t-0.997722,\t\n0.291418,\t1.107078,\t0.244959,\t0.164976,\t0.406231,\t1.215981,\t1.448424,\t-1.025137,\t\n0.205418,\t0.588882,\t-0.264024,\t2.495318,\t0.855948,\t-0.850954,\t0.811879,\t0.700242,\t\n0.759938,\t-1.712909,\t1.537021,\t-1.609847,\t1.109526,\t-1.109704,\t0.385469,\t0.965231,\t\n0.818297,\t0.037049,\t-0.926012,\t-0.111919,\t-0.803030,\t-1.665006,\t-0.901401,\t0.588350,\t\n0.554159,\t-0.415173,\t0.061795,\t0.457432,\t0.199014,\t0.257558,\t2.080730,\t-2.277237,\t\n0.339022,\t0.289894,\t0.662261,\t-0.580860,\t0.887752,\t0.171871,\t0.848821,\t0.963769,\t\n1.321918,\t-0.064345,\t1.317053,\t0.228017,\t-1.429637,\t-0.149701,\t-0.504968,\t-1.729141,\t\n-0.417472,\t-0.614969,\t0.720777,\t0.339364,\t0.882845,\t0.284245,\t-0.145541,\t-0.089646,\t\n0.289161,\t1.164831,\t0.805729,\t-1.355643,\t0.120893,\t-0.222178,\t0.571732,\t-0.300140,\t\n1.134277,\t-0.179356,\t-1.467067,\t1.395346,\t0.440836,\t0.565384,\t-0.693623,\t0.833869,\t\n-2.237378,\t1.097644,\t-0.001617,\t-1.614573,\t-1.228727,\t0.207405,\t0.220942,\t-1.006073,\t\n-0.453067,\t1.399453,\t-0.461964,\t0.032716,\t0.798783,\t0.896816,\t0.137892,\t-1.619146,\t\n-1.646606,\t0.428707,\t-0.737231,\t0.564926,\t-1.384167,\t0.460268,\t0.629384,\t0.379847,\t\n-1.013330,\t-0.347243,\t0.441912,\t-1.590240,\t-0.701417,\t-1.077601,\t1.002220,\t1.729481,\t\n0.709032,\t-0.747897,\t0.228862,\t-0.223497,\t-0.853275,\t0.345627,\t0.109764,\t-1.133039,\t\n-0.683124,\t-0.277856,\t0.654790,\t-1.248394,\t-0.597539,\t-0.481813,\t0.983372,\t1.762121,\t\n1.427402,\t0.911763,\t0.326823,\t0.069619,\t-1.499763,\t-0.418223,\t-0.021037,\t0.228425,\t\n-1.008196,\t-0.664622,\t0.558177,\t-1.188542,\t-0.775481,\t0.271042,\t1.534976,\t-1.052283,\t\n0.625559,\t-0.797626,\t-0.313522,\t-0.602210,\t1.259060,\t0.858484,\t-2.105292,\t-0.360937,\t\n0.553557,\t-1.556384,\t-0.206666,\t-0.425568,\t0.493778,\t-0.870908,\t0.079828,\t-0.521619,\t\n-1.413861,\t-0.384293,\t-0.457922,\t-0.291471,\t-0.301224,\t-1.588594,\t1.094287,\t1.324167,\t\n-0.126480,\t-0.737164,\t0.213719,\t-0.400529,\t0.064938,\t-1.757996,\t1.686748,\t0.327400,\t\n0.715967,\t1.598648,\t-2.064741,\t-0.743632,\t0.176185,\t0.527839,\t-0.553153,\t0.298280,\t\n-1.226607,\t-0.189676,\t-0.301713,\t0.956956,\t-0.533366,\t-0.901082,\t-0.892552,\t0.278717,\t\n-0.745807,\t1.603464,\t0.574270,\t0.320655,\t-0.151383,\t0.315762,\t1.343703,\t-2.237832,\t\n1.292906,\t-0.378459,\t0.002521,\t0.884641,\t0.582450,\t-1.614244,\t-1.503666,\t0.573586,\t\n-0.910537,\t-1.631277,\t-0.359138,\t-0.397616,\t-1.161307,\t-1.109838,\t0.290672,\t-1.910239,\t\n1.314768,\t0.665319,\t-0.275115,\t-0.023022,\t-0.907976,\t-1.043657,\t0.373516,\t0.901532,\t\n1.278539,\t-0.128456,\t0.612821,\t1.956518,\t2.266326,\t-0.373959,\t2.238039,\t-0.159580,\t\n-0.703281,\t0.563477,\t-0.050296,\t1.163593,\t0.658808,\t-1.550089,\t-3.029118,\t0.540578,\t\n-1.008998,\t0.908047,\t1.582303,\t-0.979088,\t1.007902,\t0.158491,\t-0.586927,\t1.574082,\t\n-0.516649,\t1.227800,\t1.583876,\t-2.088950,\t2.949545,\t1.356125,\t1.050068,\t-0.767170,\t\n-0.257653,\t-1.371845,\t-1.267656,\t-0.894948,\t0.589089,\t1.842629,\t1.347967,\t-0.491253,\t\n-2.177568,\t0.237000,\t-0.735411,\t-1.779419,\t0.448030,\t0.581214,\t0.856607,\t-0.266263,\t\n-0.417470,\t-0.205806,\t-0.174323,\t0.217577,\t1.684295,\t0.119528,\t0.650667,\t2.080061,\t\n-0.339225,\t0.730113,\t0.293969,\t-0.849109,\t-2.533858,\t-2.378941,\t-0.346276,\t-0.610937,\t\n-0.408192,\t-1.415611,\t0.227122,\t0.207974,\t-0.719718,\t0.757762,\t-1.643135,\t-1.056813,\t\n-0.251662,\t-1.298441,\t1.233255,\t1.494625,\t0.235938,\t-1.404359,\t0.658791,\t-2.556613,\t\n-0.534945,\t3.202525,\t0.439198,\t-1.149901,\t0.886765,\t-0.283386,\t1.035336,\t-0.364878,\t\n1.341987,\t1.008872,\t0.213874,\t-0.299264,\t0.255849,\t-0.190826,\t-0.079060,\t0.699851,\t\n-0.796540,\t-0.801284,\t-0.007599,\t-0.726810,\t-1.490902,\t0.870335,\t-0.265675,\t-1.566695,\t\n-0.394636,\t-0.143855,\t-2.334247,\t-1.357539,\t-1.815689,\t1.108422,\t-0.142115,\t1.112757,\t\n0.559264,\t0.478370,\t-0.679385,\t0.284967,\t-1.332935,\t-0.723980,\t-0.663600,\t0.198443,\t\n-1.794868,\t-1.387673,\t0.197768,\t1.469328,\t0.366493,\t-0.442775,\t-0.048563,\t0.077709,\t\n1.957910,\t-0.072848,\t0.938810,\t-0.079608,\t-0.800959,\t0.309424,\t1.051826,\t-1.664211,\t\n-1.090792,\t-0.191731,\t0.463401,\t-0.924147,\t-0.649657,\t0.622893,\t-1.335107,\t1.047689,\t\n0.863327,\t-0.642411,\t0.660010,\t1.294116,\t0.314579,\t0.859573,\t0.128670,\t0.016568,\t\n-0.072801,\t-0.994310,\t-0.747358,\t-0.030814,\t0.988355,\t-0.599017,\t1.476644,\t-0.813801,\t\n0.645040,\t-1.309919,\t-0.867425,\t-0.474233,\t0.222417,\t1.871323,\t0.110001,\t-0.411341,\t\n0.511242,\t-1.199117,\t-0.096361,\t0.445817,\t-0.295825,\t-0.167996,\t0.179543,\t0.421118,\t\n1.677678,\t1.996949,\t0.696964,\t-1.366382,\t0.363045,\t-0.567044,\t-1.044154,\t0.697139,\t\n0.484026,\t-0.193751,\t-0.378095,\t-0.886374,\t-1.840197,\t-1.628195,\t-1.173789,\t-0.415411,\t\n0.175088,\t0.229433,\t-1.240889,\t0.700004,\t0.426877,\t1.454803,\t-0.510186,\t-0.006657,\t\n-0.525496,\t0.717698,\t1.088374,\t0.500552,\t2.771790,\t-0.160309,\t0.429489,\t-1.966817,\t\n-0.546019,\t-1.888395,\t-0.107952,\t-1.316144,\t-0.672632,\t-0.902365,\t-0.154798,\t0.947242,\t\n1.550375,\t0.429040,\t-0.560795,\t0.179304,\t-0.771509,\t-0.943390,\t-1.407569,\t-1.906131,\t\n-0.065293,\t0.672149,\t0.206147,\t-0.008124,\t0.020042,\t-0.558447,\t1.886079,\t-0.219975,\t\n-1.414395,\t-0.302811,\t-0.569574,\t-0.121495,\t-0.390171,\t-0.844287,\t-1.737757,\t-0.449520,\t\n-1.547933,\t-0.095776,\t0.907714,\t2.369602,\t0.519768,\t0.410525,\t1.052585,\t0.428784,\t\n1.295088,\t-0.186053,\t0.130733,\t-0.657627,\t-0.759267,\t-0.595170,\t0.812400,\t0.069541,\t\n-1.833687,\t1.827363,\t0.654075,\t-1.544769,\t-0.375109,\t0.207688,\t-0.765615,\t-0.106355,\t\n0.338769,\t1.033461,\t-1.404822,\t-1.030570,\t-0.643372,\t0.170787,\t1.344839,\t1.936273,\t\n0.741336,\t0.811980,\t-0.142808,\t-0.099858,\t-0.800131,\t0.493249,\t1.237574,\t1.295951,\t\n-0.278196,\t0.217127,\t0.630728,\t-0.548549,\t0.229632,\t0.355311,\t0.521284,\t-0.615971,\t\n1.345803,\t0.974922,\t-2.377934,\t-1.092319,\t-0.325710,\t-2.012228,\t1.567660,\t0.233337,\t\n0.646420,\t-1.129412,\t0.197038,\t1.696870,\t0.726034,\t0.792526,\t0.603357,\t-0.058405,\t\n-1.108666,\t2.144229,\t-1.352821,\t0.457021,\t0.391175,\t2.073013,\t-0.323318,\t1.468132,\t\n-0.502399,\t0.209593,\t0.754800,\t-0.948189,\t0.613157,\t1.760503,\t0.088762,\t2.595570,\t\n-0.675470,\t2.786804,\t-0.016827,\t0.271651,\t-0.914102,\t-1.951371,\t-0.317418,\t0.588333,\t\n0.828996,\t-1.674851,\t-1.922293,\t-0.436662,\t0.044974,\t2.416609,\t-0.309892,\t0.187583,\t\n0.947699,\t-0.525703,\t-1.115605,\t-1.592320,\t1.174844,\t0.485144,\t1.645480,\t-0.454233,\t\n1.008768,\t2.049403,\t0.602020,\t0.017860,\t-1.610426,\t1.238752,\t0.683587,\t-0.780716,\t\n0.530979,\t2.134498,\t0.354361,\t0.231700,\t1.287980,\t-0.013488,\t-1.333345,\t-0.556343,\t\n0.755597,\t-0.911854,\t1.371684,\t0.245580,\t0.118845,\t0.384690,\t-0.070152,\t-0.578309,\t\n0.469308,\t1.299687,\t1.634798,\t-0.702809,\t0.807253,\t-1.027451,\t1.294496,\t0.014930,\t\n0.218705,\t1.713188,\t-2.078805,\t0.112917,\t-1.086491,\t-1.558311,\t0.637406,\t-0.404576,\t\n-0.403325,\t0.084076,\t-0.435349,\t-0.562623,\t0.878062,\t-0.814650,\t-0.258363,\t0.493299,\t\n-0.802694,\t-0.008329,\t0.627571,\t0.154382,\t2.580735,\t-1.306246,\t1.023526,\t0.777795,\t\n-0.833884,\t-0.586663,\t0.065664,\t-0.012342,\t-0.076987,\t-1.558587,\t1.702607,\t-0.468984,\t\n0.094619,\t0.287071,\t0.919354,\t0.510136,\t0.245440,\t-1.400519,\t0.969571,\t1.593698,\t\n-1.437917,\t-1.534230,\t-0.074710,\t0.081459,\t-0.843240,\t-0.564640,\t-0.028207,\t-1.243702,\t\n0.733039,\t0.059580,\t0.149144,\t1.595857,\t-0.777250,\t1.550277,\t1.055002,\t-0.166654,\t\n0.314484,\t1.419571,\t0.327348,\t0.475653,\t0.398754,\t-0.072770,\t1.314784,\t0.978279,\t\n1.722114,\t-0.412302,\t0.565133,\t0.739851,\t0.220138,\t1.312807,\t0.629152,\t-1.107987,\t\n-0.447001,\t-0.725993,\t0.354045,\t-0.506772,\t-2.103747,\t-0.664684,\t1.450110,\t-0.329805,\t\n2.701872,\t-1.634939,\t-0.536325,\t0.547223,\t1.492603,\t-0.455243,\t-0.496416,\t1.235260,\t\n0.040926,\t0.748467,\t1.230764,\t0.304903,\t1.077771,\t0.765151,\t-1.319580,\t-0.509191,\t\n0.555116,\t-1.957625,\t-0.760453,\t-2.443886,\t-0.659366,\t-0.114779,\t0.300079,\t-0.583996,\t\n-3.073745,\t1.551042,\t-0.407369,\t1.428095,\t-1.353242,\t0.903970,\t0.541671,\t-0.465020\n};\n\n\n\n/* ----------------------------------------------------------------------\n** Coefficients for 32-tap filter for Floating point LMS FIR filter\n*  FIR high pass filter with cutoff freq 9.6kHz (transition 9.6KHz to 11.52KHz) \n** ------------------------------------------------------------------- */  \nfloat32_t lmsNormCoeff_f32[32] = {\n-0.004240,\t0.002301,\t0.008860,\t-0.000000,\t-0.019782,\t-0.010543,\t0.032881,\t0.034736,\t\n-0.037374,\t-0.069586,\t0.022397,\t0.102169,\t0.014185,\t-0.115908,\t-0.061648,\t0.101018,\t\n0.101018,\t-0.061648,\t-0.115908,\t0.014185,\t0.102169,\t0.022397,\t-0.069586,\t-0.037374,\t\n0.034736,\t0.032881,\t-0.010543,\t-0.019782,\t-0.000000,\t0.008860,\t0.002301,\t-0.004240\t\n\n};\n\n/* ----------------------------------------------------------------------\n** Coefficients for 32-tap filter for Floating point FIR filter\n*  FIR low pass filter with cutoff freq 24Hz (transition 24Hz to 240Hz) \n** ------------------------------------------------------------------- */  \nconst float32_t FIRCoeff_f32[32] = {\n0.004502,\t0.005074,\t0.006707,\t0.009356,\t0.012933,\t0.017303,\t0.022298,\t0.027717,\t\n0.033338,\t0.038930,\t0.044258,\t0.049098,\t0.053243,\t0.056519,\t0.058784,\t0.059941,\t\n0.059941,\t0.058784,\t0.056519,\t0.053243,\t0.049098,\t0.044258,\t0.038930,\t0.033338,\t\n0.027717,\t0.022298,\t0.017303,\t0.012933,\t0.009356,\t0.006707,\t0.005074,\t0.004502\n\n};\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_signal_converge_example_f32.c\n*\n* Description:   Example code demonstrating convergence of an adaptive\n*                filter.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n * -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup SignalConvergence Signal Convergence Example\n *\n * \\par Description:\n * \\par\n * Demonstrates the ability of an adaptive filter to \"learn\" the transfer function of\n * a FIR lowpass filter using the Normalized LMS Filter, Finite Impulse\n * Response (FIR) Filter, and Basic Math Functions.\n *\n * \\par Algorithm:\n * \\par\n * The figure below illustrates the signal flow in this example. Uniformly distributed white\n * noise is passed through an FIR lowpass filter. The output of the FIR filter serves as the\n * reference input of the adaptive filter (normalized LMS filter). The white noise is input\n * to the adaptive filter. The adaptive filter learns the transfer function of the FIR filter.\n * The filter outputs two signals: (1) the output of the internal adaptive FIR filter, and\n * (2) the error signal which is the difference between the adaptive filter and the reference\n * output of the FIR filter. Over time as the adaptive filter learns the transfer function\n * of the FIR filter, the first output approaches the reference output of the FIR filter,\n * and the error signal approaches zero.\n * \\par\n * The adaptive filter converges properly even if the input signal has a large dynamic\n * range (i.e., varies from small to large values). The coefficients of the adaptive filter\n * are initially zero, and then converge over 1536 samples. The internal function test_signal_converge()\n * implements the stopping condition. The function checks if all of the values of the error signal have a\n * magnitude below a threshold DELTA.\n *\n * \\par Block Diagram:\n * \\par\n * \\image html SignalFlow.gif\n *\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInput_f32 points to the input data\n * \\li \\c firStateF32 points to FIR state buffer\n * \\li \\c lmsStateF32 points to Normalised Least mean square FIR filter state buffer\n * \\li \\c FIRCoeff_f32 points to coefficient buffer\n * \\li \\c lmsNormCoeff_f32 points to Normalised Least mean square FIR filter coefficient buffer\n * \\li \\c wire1, wir2, wire3 temporary buffers\n * \\li \\c errOutput, err_signal temporary error buffers\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_lms_norm_init_f32()\n * - arm_fir_init_f32()\n * - arm_fir_f32()\n * - arm_lms_norm_f32()\n * - arm_scale_f32()\n * - arm_abs_f32()\n * - arm_sub_f32()\n * - arm_min_f32()\n * - arm_copy_f32()\n *\n * <b> Refer  </b>\n * \\link arm_signal_converge_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_signal_converge_example_f32.c\n  */\n\n#include \"arm_math.h\"\n#include \"math_helper.h\"\n\n/* ----------------------------------------------------------------------\n** Global defines for the simulation\n* ------------------------------------------------------------------- */\n\n#define TEST_LENGTH_SAMPLES 1536\n#define NUMTAPS               32\n#define BLOCKSIZE             32\n#define DELTA_ERROR         0.000001f\n#define DELTA_COEFF         0.0001f\n#define MU                  0.5f\n\n#define NUMFRAMES (TEST_LENGTH_SAMPLES / BLOCKSIZE)\n\n/* ----------------------------------------------------------------------\n* Declare FIR state buffers and structure\n* ------------------------------------------------------------------- */\n\nfloat32_t firStateF32[NUMTAPS + BLOCKSIZE];\narm_fir_instance_f32 LPF_instance;\n\n/* ----------------------------------------------------------------------\n* Declare LMSNorm state buffers and structure\n* ------------------------------------------------------------------- */\n\nfloat32_t lmsStateF32[NUMTAPS + BLOCKSIZE];\nfloat32_t errOutput[TEST_LENGTH_SAMPLES];\narm_lms_norm_instance_f32 lmsNorm_instance;\n\n\n/* ----------------------------------------------------------------------\n* Function Declarations for Signal Convergence Example\n* ------------------------------------------------------------------- */\n\narm_status test_signal_converge_example( void );\n\n\n/* ----------------------------------------------------------------------\n* Internal functions\n* ------------------------------------------------------------------- */\narm_status test_signal_converge(float32_t* err_signal,\n                        uint32_t blockSize);\n\nvoid getinput(float32_t* input,\n     uint32_t fr_cnt,\n          uint32_t blockSize);\n\n/* ----------------------------------------------------------------------\n* External Declarations for FIR F32 module Test\n* ------------------------------------------------------------------- */\nextern float32_t testInput_f32[TEST_LENGTH_SAMPLES];\nextern float32_t lmsNormCoeff_f32[32];\nextern const float32_t FIRCoeff_f32[32];\nextern arm_lms_norm_instance_f32 lmsNorm_instance;\n\n/* ----------------------------------------------------------------------\n* Declare I/O buffers\n* ------------------------------------------------------------------- */\n\nfloat32_t wire1[BLOCKSIZE];\nfloat32_t wire2[BLOCKSIZE];\nfloat32_t wire3[BLOCKSIZE];\nfloat32_t err_signal[BLOCKSIZE];\n\n/* ----------------------------------------------------------------------\n* Signal converge test\n* ------------------------------------------------------------------- */\n\nint32_t main(void)\n{\n  uint32_t i;\n  arm_status status;\n  uint32_t index;\n  float32_t minValue;\n\n  /* Initialize the LMSNorm data structure */\n  arm_lms_norm_init_f32(&lmsNorm_instance, NUMTAPS, lmsNormCoeff_f32, lmsStateF32, MU, BLOCKSIZE);\n\n  /* Initialize the FIR data structure */\n  arm_fir_init_f32(&LPF_instance, NUMTAPS, (float32_t *)FIRCoeff_f32, firStateF32, BLOCKSIZE);\n\n  /* ----------------------------------------------------------------------\n  * Loop over the frames of data and execute each of the processing\n  * functions in the system.\n  * ------------------------------------------------------------------- */\n\n  for(i=0; i < NUMFRAMES; i++)\n  {\n    /* Read the input data - uniformly distributed random noise - into wire1 */\n    arm_copy_f32(testInput_f32 + (i * BLOCKSIZE), wire1, BLOCKSIZE);\n\n    /* Execute the FIR processing function.  Input wire1 and output wire2 */\n    arm_fir_f32(&LPF_instance, wire1, wire2, BLOCKSIZE);\n\n    /* Execute the LMS Norm processing function*/\n\n    arm_lms_norm_f32(&lmsNorm_instance, /* LMSNorm instance */\n         wire1,                         /* Input signal */\n         wire2,                         /* Reference Signal */\n         wire3,                         /* Converged Signal */\n         err_signal,                    /* Error Signal, this will become small as the signal converges */\n         BLOCKSIZE);                    /* BlockSize */\n\n    /* apply overall gain */\n    arm_scale_f32(wire3, 5, wire3, BLOCKSIZE);   /* in-place buffer */\n  }\n\n  status = ARM_MATH_SUCCESS;\n\n  /* -------------------------------------------------------------------------------\n  * Test whether the error signal has reached towards 0.\n  * ----------------------------------------------------------------------------- */\n\n  arm_abs_f32(err_signal, err_signal, BLOCKSIZE);\n  arm_min_f32(err_signal, BLOCKSIZE, &minValue, &index);\n\n  if (minValue > DELTA_ERROR)\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n\n  /* ----------------------------------------------------------------------\n  * Test whether the filter coefficients have converged.\n  * ------------------------------------------------------------------- */\n\n  arm_sub_f32((float32_t *)FIRCoeff_f32, lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS);\n\n  arm_abs_f32(lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS);\n  arm_min_f32(lmsNormCoeff_f32, NUMTAPS, &minValue, &index);\n\n  if (minValue > DELTA_COEFF)\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n\n  /* ----------------------------------------------------------------------\n  * Loop here if the signals did not pass the convergence check.\n  * This denotes a test failure\n  * ------------------------------------------------------------------- */\n\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n /** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:        17. January 2013\n* $Revision: \tV1.4.0  b\n*\n* Project: \t    CMSIS DSP Library\n*\n* Title:\t    math_helper.c\n*\n* Description:\tDefinition of all helper functions required.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------\n*\t\tInclude standard header files\n* -------------------------------------------------------------------- */\n#include<math.h>\n\n/* ----------------------------------------------------------------------\n*\t\tInclude project header files\n* -------------------------------------------------------------------- */\n#include \"math_helper.h\"\n\n/**\n * @brief  Caluclation of SNR\n * @param[in]  pRef \tPointer to the reference buffer\n * @param[in]  pTest\tPointer to the test buffer\n * @param[in]  buffSize\ttotal number of samples\n * @return     SNR\n * The function Caluclates signal to noise ratio for the reference output\n * and test output\n */\n\nfloat arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)\n{\n  float EnergySignal = 0.0, EnergyError = 0.0;\n  uint32_t i;\n  float SNR;\n  int temp;\n  int *test;\n\n  for (i = 0; i < buffSize; i++)\n    {\n \t  /* Checking for a NAN value in pRef array */\n\t  test =   (int *)(&pRef[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n\n\t  /* Checking for a NAN value in pTest array */\n\t  test =   (int *)(&pTest[i]);\n      temp =  *test;\n\n\t  if (temp == 0x7FC00000)\n\t  {\n\t  \t\treturn(0);\n\t  }\n      EnergySignal += pRef[i] * pRef[i];\n      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);\n    }\n\n\t/* Checking for a NAN value in EnergyError */\n\ttest =   (int *)(&EnergyError);\n    temp =  *test;\n\n    if (temp == 0x7FC00000)\n    {\n  \t\treturn(0);\n    }\n\n\n  SNR = 10 * log10 (EnergySignal / EnergyError);\n\n  return (SNR);\n\n}\n\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,\n                            uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Converts float to fixed in q12.20 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to outputbuffer\n * @param[in]  numSamples  number of samples in the input buffer\n * @return none\n * The function converts floating point values to fixed point(q12.20) values\n */\n\nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1048576.0f corresponds to pow(2, 20) */\n      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 1.0)\n        {\n          pOut[i] = 0x000FFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Compare MATLAB Reference Output and ARM Test output\n * @param[in]  pIn         Pointer to Ref buffer\n * @param[in]  pOut        Pointer to Test buffer\n * @param[in]  numSamples number of samples in the buffer\n * @return maximum difference\n */\n\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n  int32_t diff, diffCrnt = 0;\n  uint32_t maxDiff = 0;\n\n  for (i = 0; i < numSamples; i++)\n  {\n  \tdiff = pIn[i] - pOut[i];\n  \tdiffCrnt = (diff > 0) ? diff : -diff;\n\n\tif (diffCrnt > maxDiff)\n\t{\n\t\tmaxDiff = diffCrnt;\n\t}\n  }\n\n  return(maxDiff);\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q31 (q31_t * input_buf,\n\t\t\t\t\t\t\t\t uint32_t blockSize,\n                                 uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n/**\n * @brief  Provide guard bits for Input buffer\n * @param[in,out]  input_buf   Pointer to input buffer\n * @param[in]       blockSize  block Size\n * @param[in]       guard_bits guard bits\n * @return none\n * The function Provides the guard bits for the buffer\n * to avoid overflow\n */\n\nvoid arm_provide_guard_bits_q7 (q7_t * input_buf,\n\t\t\t\t\t\t\t\tuint32_t blockSize,\n                                uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < blockSize; i++)\n    {\n      input_buf[i] = input_buf[i] >> guard_bits;\n    }\n}\n\n\n\n/**\n * @brief  Caluclates number of guard bits\n * @param[in]  num_adds \tnumber of additions\n * @return guard bits\n * The function Caluclates the number of guard bits\n * depending on the numtaps\n */\n\nuint32_t arm_calc_guard_bits (uint32_t num_adds)\n{\n  uint32_t i = 1, j = 0;\n\n  if (num_adds == 1)\n    {\n      return (0);\n    }\n\n  while (i < num_adds)\n    {\n      i = i * 2;\n      j++;\n    }\n\n  return (j);\n}\n\n/**\n * @brief  Apply guard bits to buffer\n * @param[in,out]  pIn         pointer to input buffer\n * @param[in]      numSamples  number of samples in the input buffer\n * @param[in]      guard_bits  guard bits\n * @return none\n */\n\nvoid arm_apply_guard_bits (float32_t *pIn,\n\t\t\t\t\t\t   uint32_t numSamples,\n\t\t\t\t\t\t   uint32_t guard_bits)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);\n    }\n}\n\n/**\n * @brief  Calculates pow(2, numShifts)\n * @param[in]  numShifts \tnumber of shifts\n * @return pow(2, numShifts)\n */\nuint32_t arm_calc_2pow(uint32_t numShifts)\n{\n\n  uint32_t i, val = 1;\n\n  for (i = 0; i < numShifts; i++)\n    {\n      val = val * 2;\n    }\n\n  return(val);\n}\n\n\n\n/**\n * @brief  Converts float to fixed q14\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 16384.0f corresponds to pow(2, 14) */\n      pOut[i] = (q15_t) (pIn[i] * 16384.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFF;\n        }\n\n    }\n\n}\n\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 2.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Converts float to fixed q30 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t  /* 1073741824.0f corresponds to pow(2, 30) */\n      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 4.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n\n/**\n * @brief  Converts float to fixed q28 format\n * @param[in]  pIn         pointer to input buffer\n * @param[out] pOut        pointer to output buffer\n * @param[in]  numSamples  number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n\t/* 268435456.0f corresponds to pow(2, 28) */\n      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);\n\n      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;\n\n      if (pIn[i] == (float) 8.0)\n        {\n          pOut[i] = 0x7FFFFFFF;\n        }\n    }\n}\n\n/**\n * @brief  Clip the float values to +/- 1\n * @param[in,out]  pIn           input buffer\n * @param[in]      numSamples    number of samples in the buffer\n * @return none\n * The function converts floating point values to fixed point values\n */\n\nvoid arm_clip_f32 (float *pIn, uint32_t numSamples)\n{\n  uint32_t i;\n\n  for (i = 0; i < numSamples; i++)\n    {\n      if (pIn[i] > 1.0f)\n\t  {\n\t    pIn[i] = 1.0;\n\t  }\n\t  else if ( pIn[i] < -1.0f)\n\t  {\n\t    pIn[i] = -1.0;\n\t  }\n\n    }\n}\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.h",
    "content": "/* ----------------------------------------------------------------------   \n* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   \n*   \n* $Date:        17. January 2013  \n* $Revision: \tV1.4.0   \n*  \n* Project: \t    CMSIS DSP Library \n*\n* Title:\t    math_helper.h\n* \n* Description:\tPrototypes of all helper functions required.  \n*\n* Target Processor: Cortex-M4/Cortex-M3\n*  \n* Redistribution and use in source and binary forms, with or without \n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the \n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.  \n* -------------------------------------------------------------------- */\n\n\n#include \"arm_math.h\"\n\n#ifndef MATH_HELPER_H\n#define MATH_HELPER_H\n\nfloat arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  \nvoid arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);\nvoid arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);\nvoid arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);\nvoid arm_clip_f32(float *pIn, uint32_t numSamples);\nuint32_t arm_calc_guard_bits(uint32_t num_adds);\nvoid arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);\nuint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);\nuint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);\nuint32_t arm_calc_2pow(uint32_t guard_bits);\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_sin_cos_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/arm_sin_cos_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         12. March 2014\n* $Revision:     V1.4.3\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_sin_cos_example_f32.c\n*\n* Description:   Example code demonstrating sin and cos calculation of input signal.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup SinCosExample SineCosine Example\n *\n * \\par Description:\n * \\par\n * Demonstrates the Pythagorean trignometric identity with the use of Cosine, Sine, Vector\n * Multiplication, and Vector Addition functions.\n *\n * \\par Algorithm:\n * \\par\n * Mathematically, the Pythagorean trignometric identity is defined by the following equation:\n *  <pre>sin(x) * sin(x) + cos(x) * cos(x) = 1</pre>\n * where \\c x is the angle in radians.\n *\n * \\par Block Diagram:\n * \\par\n * \\image html sinCos.gif\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInput_f32 array of input angle in radians\n * \\li \\c testOutput stores sum of the squares of sine and cosine values of input angle\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_cos_f32()\n * - arm_sin_f32()\n * - arm_mult_f32()\n * - arm_add_f32()\n *\n * <b> Refer  </b>\n * \\link arm_sin_cos_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_sin_cos_example_f32.c\n  */\n\n#include <math.h>\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n* Defines each of the tests performed\n* ------------------------------------------------------------------- */\n#define MAX_BLOCKSIZE   32\n#define DELTA           (0.0001f)\n\n\n/* ----------------------------------------------------------------------\n* Test input data for Floating point sin_cos example for 32-blockSize\n* Generated by the MATLAB randn() function\n* ------------------------------------------------------------------- */\n\nconst float32_t testInput_f32[MAX_BLOCKSIZE] =\n{\n  -1.244916875853235400,  -4.793533929171324800,   0.360705030233248850,   0.827929644170887320,  -3.299532218312426900,   3.427441903227623800,   3.422401784294607700,  -0.108308165334010680,\n   0.941943896490312180,   0.502609575000365850,  -0.537345278736373500,   2.088817392965764500,  -1.693168684143455700,   6.283185307179590700,  -0.392545884746175080,   0.327893095115825040,\n   3.070147440456292300,   0.170611405884662230,  -0.275275082396073010,  -2.395492805446796300,   0.847311163536506600,  -3.845517018083148800,   2.055818378415868300,   4.672594161978930800,\n  -1.990923030266425800,   2.469305197656249500,   3.609002606064021000,  -4.586736582331667500,  -4.147080139136136300,   1.643756718868359500,  -1.150866392366494800,   1.985805026477433800\n\n\n};\n\nconst float32_t testRefOutput_f32 = 1.000000000;\n\n/* ----------------------------------------------------------------------\n* Declare Global variables\n* ------------------------------------------------------------------- */\nuint32_t blockSize = 32;\nfloat32_t  testOutput;\nfloat32_t  cosOutput;\nfloat32_t  sinOutput;\nfloat32_t  cosSquareOutput;\nfloat32_t  sinSquareOutput;\n\n/* ----------------------------------------------------------------------\n* Max magnitude FFT Bin test\n* ------------------------------------------------------------------- */\n\narm_status status;\n\nint32_t main(void)\n{\n  float32_t diff;\n  uint32_t i;\n\n  for(i=0; i< blockSize; i++)\n  {\n    cosOutput = arm_cos_f32(testInput_f32[i]);\n    sinOutput = arm_sin_f32(testInput_f32[i]);\n\n    arm_mult_f32(&cosOutput, &cosOutput, &cosSquareOutput, 1);\n    arm_mult_f32(&sinOutput, &sinOutput, &sinSquareOutput, 1);\n\n    arm_add_f32(&cosSquareOutput, &sinSquareOutput, &testOutput, 1);\n\n    /* absolute value of difference between ref and test */\n    diff = fabsf(testRefOutput_f32 - testOutput);\n\n    /* Comparison of sin_cos value with reference */\n    if (diff > DELTA)\n    {\n       status = ARM_MATH_TEST_FAILURE;\n    }\n\n    if ( status == ARM_MATH_TEST_FAILURE)\n    {\n       while (1);\n    }\n\n  }\n\n  while (1);                             /* main function does not return */\n}\n\n /** \\endlink */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/Abstract.txt",
    "content": "CMSIS DSP_Lib example arm_variance_example for\n  Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\nproject (arm_variance_example VERSION 0.1)\n\n# Needed to include the configBoot module\nlist(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../..)\n\n################################### \n#\n# LIBRARIES\n#\n###################################\n\n########### \n#\n# CMSIS DSP\n#\n\nadd_subdirectory(../../../Source bin_dsp)\n\n\n################################### \n#\n# TEST APPLICATION\n#\n###################################\n\n\nadd_executable(arm_variance_example)\n\nset(ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../..)\n\ninclude(configBoot)\n\ntarget_sources(arm_variance_example PRIVATE arm_variance_example_f32.c)\n\n### Sources and libs\n\ntarget_link_libraries(arm_variance_example PRIVATE CMSISDSP)\n\n################################### \n#\n# INSTALLATION\n#\n###################################\n\ninstall (TARGETS arm_variance_example DESTINATION \"${PROJECT_SOURCE_DIR}/varianceExampleBuild.axf\")"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    ( 22 * 4)                           ; Interrupts 10 .. 31 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device\n; * @version  V5.3.1\n; * @date     09. July 2018\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n\n\n;<h> Stack Configuration\n;  <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nStack_Size      EQU      0x00000400\n\n                AREA     STACK, NOINIT, READWRITE, ALIGN=3\n__stack_limit\nStack_Mem       SPACE    Stack_Size\n__initial_sp\n\n\n;<h> Heap Configuration\n;  <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n;</h>\n\nHeap_Size       EQU      0x00000C00\n\n                IF       Heap_Size != 0                      ; Heap is provided\n                AREA     HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE    Heap_Size\n__heap_limit\n                ENDIF\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA     RESET, DATA, READONLY\n                EXPORT   __Vectors\n                EXPORT   __Vectors_End\n                EXPORT   __Vectors_Size\n\n__Vectors       DCD      __initial_sp                        ;     Top of Stack\n                DCD      Reset_Handler                       ;     Reset Handler\n                DCD      NMI_Handler                         ; -14 NMI Handler\n                DCD      HardFault_Handler                   ; -13 Hard Fault Handler\n                DCD      MemManage_Handler                   ; -12 MPU Fault Handler\n                DCD      BusFault_Handler                    ; -11 Bus Fault Handler\n                DCD      UsageFault_Handler                  ; -10 Usage Fault Handler\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      0                                   ;     Reserved\n                DCD      SVC_Handler                         ;  -5 SVCall Handler\n                DCD      DebugMon_Handler                    ;  -4 Debug Monitor Handler\n                DCD      0                                   ;     Reserved\n                DCD      PendSV_Handler                      ;  -2 PendSV Handler\n                DCD      SysTick_Handler                     ;  -1 SysTick Handler\n\n                ; Interrupts\n                DCD      Interrupt0_Handler                  ;   0 Interrupt 0\n                DCD      Interrupt1_Handler                  ;   1 Interrupt 1\n                DCD      Interrupt2_Handler                  ;   2 Interrupt 2\n                DCD      Interrupt3_Handler                  ;   3 Interrupt 3\n                DCD      Interrupt4_Handler                  ;   4 Interrupt 4\n                DCD      Interrupt5_Handler                  ;   5 Interrupt 5\n                DCD      Interrupt6_Handler                  ;   6 Interrupt 6\n                DCD      Interrupt7_Handler                  ;   7 Interrupt 7\n                DCD      Interrupt8_Handler                  ;   8 Interrupt 8\n                DCD      Interrupt9_Handler                  ;   9 Interrupt 9\n\n                SPACE    (214 * 4)                           ; Interrupts 10 .. 224 are left out\n__Vectors_End\n__Vectors_Size  EQU      __Vectors_End - __Vectors\n\n\n                AREA     |.text|, CODE, READONLY\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT   Reset_Handler             [WEAK]\n                IMPORT   SystemInit\n                IMPORT   __main\n\n                LDR      R0, =SystemInit\n                BLX      R0\n                LDR      R0, =__main\n                BX       R0\n                ENDP\n\n\n; Macro to define default exception/interrupt handlers.\n; Default handler are weak symbols with an endless loop.\n; They can be overwritten by real handlers.\n                MACRO\n                Set_Default_Handler  $Handler_Name\n$Handler_Name   PROC\n                EXPORT   $Handler_Name             [WEAK]\n                B        .\n                ENDP\n                MEND\n\n\n; Default exception/interrupt handler\n\n                Set_Default_Handler  NMI_Handler\n                Set_Default_Handler  HardFault_Handler\n                Set_Default_Handler  MemManage_Handler\n                Set_Default_Handler  BusFault_Handler\n                Set_Default_Handler  UsageFault_Handler\n                Set_Default_Handler  SVC_Handler\n                Set_Default_Handler  DebugMon_Handler\n                Set_Default_Handler  PendSV_Handler\n                Set_Default_Handler  SysTick_Handler\n\n                Set_Default_Handler  Interrupt0_Handler\n                Set_Default_Handler  Interrupt1_Handler\n                Set_Default_Handler  Interrupt2_Handler\n                Set_Default_Handler  Interrupt3_Handler\n                Set_Default_Handler  Interrupt4_Handler\n                Set_Default_Handler  Interrupt5_Handler\n                Set_Default_Handler  Interrupt6_Handler\n                Set_Default_Handler  Interrupt7_Handler\n                Set_Default_Handler  Interrupt8_Handler\n                Set_Default_Handler  Interrupt9_Handler\n\n                ALIGN\n\n\n; User setup Stack & Heap\n\n                EXPORT   __stack_limit\n                EXPORT   __initial_sp\n                IF       Heap_Size != 0                      ; Heap is provided\n                EXPORT   __heap_base\n                EXPORT   __heap_limit\n                ENDIF\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device\n * @version  V5.3.1\n * @date     09. July 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            (50000000UL)     /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (XTAL / 2U)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */\n                 (3U << 11U*2U)  );         /* enable CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/arm_variance_example_f32.c",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2012 ARM Limited. All rights reserved.\n*\n* $Date:         17. January 2013\n* $Revision:     V1.4.0\n*\n* Project:       CMSIS DSP Library\n* Title:         arm_variance_example_f32.c\n*\n* Description:   Example code demonstrating variance calculation of input sequence.\n*\n* Target Processor: Cortex-M4/Cortex-M3\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup VarianceExample Variance Example\n *\n * \\par Description:\n * \\par\n * Demonstrates the use of Basic Math and Support Functions to calculate the variance of an\n * input sequence with N samples. Uniformly distributed white noise is taken as input.\n *\n * \\par Algorithm:\n * \\par\n * The variance of a sequence is the mean of the squared deviation of the sequence from its mean.\n * \\par\n * This is denoted by the following equation:\n * <pre> variance = ((x[0] - x') * (x[0] - x') + (x[1] - x') * (x[1] - x') + ... + * (x[n-1] - x') * (x[n-1] - x')) / (N-1)</pre>\n * where, <code>x[n]</code> is the input sequence, <code>N</code> is the number of input samples, and\n * <code>x'</code> is the mean value of the input sequence, <code>x[n]</code>.\n * \\par\n * The mean value <code>x'</code> is defined as:\n * <pre> x' = (x[0] + x[1] + ... + x[n-1]) / N</pre>\n *\n * \\par Block Diagram:\n * \\par\n * \\image html Variance.gif\n *\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c testInput_f32 points to the input data\n * \\li \\c wire1, \\c wir2, \\c wire3 temporary buffers\n * \\li \\c blockSize number of samples processed at a time\n * \\li \\c refVarianceOut reference variance value\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_dot_prod_f32()\n * - arm_mult_f32()\n * - arm_sub_f32()\n * - arm_fill_f32()\n * - arm_copy_f32()\n *\n * <b> Refer  </b>\n * \\link arm_variance_example_f32.c \\endlink\n *\n */\n\n\n/** \\example arm_variance_example_f32.c\n  */\n\n#include <math.h>\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n* Defines each of the tests performed\n* ------------------------------------------------------------------- */\n#define MAX_BLOCKSIZE   32\n#define DELTA           (0.000001f)\n\n\n/* ----------------------------------------------------------------------\n* Declare I/O buffers\n* ------------------------------------------------------------------- */\nfloat32_t wire1[MAX_BLOCKSIZE];\nfloat32_t wire2[MAX_BLOCKSIZE];\nfloat32_t wire3[MAX_BLOCKSIZE];\n\n/* ----------------------------------------------------------------------\n* Test input data for Floating point Variance example for 32-blockSize\n* Generated by the MATLAB randn() function\n* ------------------------------------------------------------------- */\n\nfloat32_t testInput_f32[32] =\n{\n  -0.432564811528221,  -1.665584378238097,   0.125332306474831,   0.287676420358549,\n  -1.146471350681464,   1.190915465642999,   1.189164201652103,  -0.037633276593318,\n   0.327292361408654,   0.174639142820925,  -0.186708577681439,   0.725790548293303,\n  -0.588316543014189,   2.183185818197101,  -0.136395883086596,   0.113931313520810,\n   1.066768211359189,   0.059281460523605,  -0.095648405483669,  -0.832349463650022,\n   0.294410816392640,  -1.336181857937804,   0.714324551818952,   1.623562064446271,\n  -0.691775701702287,   0.857996672828263,   1.254001421602532,  -1.593729576447477,\n  -1.440964431901020,   0.571147623658178,  -0.399885577715363,   0.689997375464345\n\n};\n\n/* ----------------------------------------------------------------------\n* Declare Global variables\n* ------------------------------------------------------------------- */\nuint32_t blockSize = 32;\nfloat32_t  refVarianceOut = 0.903941793931839;\n\n/* ----------------------------------------------------------------------\n* Variance calculation test\n* ------------------------------------------------------------------- */\n\nint32_t main(void)\n{\n  arm_status status;\n  float32_t mean, oneByBlockSize;\n  float32_t variance;\n  float32_t diff;\n\n  status = ARM_MATH_SUCCESS;\n\n#if defined(FILEIO)\n  printf(\"START\\n\");\n#endif\n\n \n  /* Calculation of mean value of input */\n\n  /* x' = 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1) */\n\n  /* Fill wire1 buffer with 1.0 value */\n  arm_fill_f32(1.0,  wire1, blockSize);\n\n  /* Calculate the dot product of wire1 and wire2 */\n  /* (x(0)* 1 + x(1) * 1 + ...+ x(n-1) * 1) */\n  arm_dot_prod_f32(testInput_f32, wire1, blockSize, &mean);\n\n  /* Calculation of 1/blockSize */\n  oneByBlockSize = 1.0 / (blockSize);\n\n  /* 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1)  */\n  arm_mult_f32(&mean, &oneByBlockSize, &mean, 1);\n\n\n  /* Calculation of variance value of input */\n\n  /* (1/blockSize) * (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */\n\n  /* Fill wire2 with mean value x' */\n  arm_fill_f32(mean,  wire2, blockSize);\n\n  /* wire3 contains (x-x') */\n  arm_sub_f32(testInput_f32, wire2, wire3, blockSize);\n\n  /* wire2 contains (x-x') */\n  arm_copy_f32(wire3, wire2, blockSize);\n\n  /* (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */\n  arm_dot_prod_f32(wire2, wire3, blockSize, &variance);\n\n    /* Calculation of 1/blockSize */\n  oneByBlockSize = 1.0 / (blockSize - 1);\n\n  /* Calculation of variance */\n  arm_mult_f32(&variance, &oneByBlockSize, &variance, 1);\n\n  /* absolute value of difference between ref and test */\n  diff = fabsf(refVarianceOut - variance);\n\n  /* Comparison of variance value with reference */\n  \n  if (diff > DELTA)\n  {\n    status = ARM_MATH_TEST_FAILURE;\n  }\n\n\n#if !defined(FILEIO)\n  if ( status != ARM_MATH_SUCCESS)\n  {\n    while (1);\n  }\n\n  while (1);                            /* main function does not return */\n#else\n  if (status == ARM_MATH_SUCCESS)\n  {\n     printf(\"SUCCESS\\n\");\n  }\n  else\n  {\n     printf(\"FAILURE\\n\");\n  }\n#endif\n}\n\n /** \\endlink */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Examples/ARM/boot/RTE_Components.h",
    "content": "#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n#endif /* RTE_COMPONENTS_H */"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Include/arm_common_tables.h",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_common_tables.h\n * Description:  Extern declaration for common tables\n *\n * $Date:        27. January 2017\n * $Revision:    V.1.5.1\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef _ARM_COMMON_TABLES_H\n#define _ARM_COMMON_TABLES_H\n\n#include \"arm_math.h\"\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES) \n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREV_1024)\n    extern const uint16_t armBitRevTable[1024];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_16)\n    extern const float32_t twiddleCoef_16[32];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_32)\n    extern const float32_t twiddleCoef_32[64];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_64)\n    extern const float32_t twiddleCoef_64[128];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_128)\n    extern const float32_t twiddleCoef_128[256];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_256)\n    extern const float32_t twiddleCoef_256[512];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_512)\n    extern const float32_t twiddleCoef_512[1024];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_1024)\n    extern const float32_t twiddleCoef_1024[2048];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_2048)\n    extern const float32_t twiddleCoef_2048[4096];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_4096)\n    extern const float32_t twiddleCoef_4096[8192];\n    #define twiddleCoef twiddleCoef_4096\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_16)\n    extern const q31_t twiddleCoef_16_q31[24];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_32)\n    extern const q31_t twiddleCoef_32_q31[48];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_64)\n    extern const q31_t twiddleCoef_64_q31[96];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_128)\n    extern const q31_t twiddleCoef_128_q31[192];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_256)\n    extern const q31_t twiddleCoef_256_q31[384];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_512)\n    extern const q31_t twiddleCoef_512_q31[768];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_1024)\n    extern const q31_t twiddleCoef_1024_q31[1536];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_2048)\n    extern const q31_t twiddleCoef_2048_q31[3072];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_4096)\n    extern const q31_t twiddleCoef_4096_q31[6144];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_16)\n    extern const q15_t twiddleCoef_16_q15[24];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_32)\n    extern const q15_t twiddleCoef_32_q15[48];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_64)\n    extern const q15_t twiddleCoef_64_q15[96];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_128)\n    extern const q15_t twiddleCoef_128_q15[192];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_256)\n    extern const q15_t twiddleCoef_256_q15[384];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_512)\n    extern const q15_t twiddleCoef_512_q15[768];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_1024)\n    extern const q15_t twiddleCoef_1024_q15[1536];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_2048)\n    extern const q15_t twiddleCoef_2048_q15[3072];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_4096)\n    extern const q15_t twiddleCoef_4096_q15[6144];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_32)\n    extern const float32_t twiddleCoef_rfft_32[32];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_64)\n    extern const float32_t twiddleCoef_rfft_64[64];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_128)\n    extern const float32_t twiddleCoef_rfft_128[128];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_256)\n    extern const float32_t twiddleCoef_rfft_256[256];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_512)\n    extern const float32_t twiddleCoef_rfft_512[512];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_1024)\n    extern const float32_t twiddleCoef_rfft_1024[1024];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_2048)\n    extern const float32_t twiddleCoef_rfft_2048[2048];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_4096)\n    extern const float32_t twiddleCoef_rfft_4096[4096];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  /* floating-point bit reversal tables */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_16)\n    #define ARMBITREVINDEXTABLE_16_TABLE_LENGTH ((uint16_t)20)\n    extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE_16_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_32)\n    #define ARMBITREVINDEXTABLE_32_TABLE_LENGTH ((uint16_t)48)\n    extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE_32_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_64)\n    #define ARMBITREVINDEXTABLE_64_TABLE_LENGTH ((uint16_t)56)\n    extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE_64_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_128)\n    #define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208)\n    extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_256)\n    #define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440)\n    extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_512)\n    #define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448)\n    extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_1024)\n    #define ARMBITREVINDEXTABLE_1024_TABLE_LENGTH ((uint16_t)1800)\n    extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE_1024_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_2048)\n    #define ARMBITREVINDEXTABLE_2048_TABLE_LENGTH ((uint16_t)3808)\n    extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE_2048_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_4096)\n    #define ARMBITREVINDEXTABLE_4096_TABLE_LENGTH ((uint16_t)4032)\n    extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE_4096_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  \n  /* fixed-point bit reversal tables */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_16)\n    #define ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH ((uint16_t)12)\n    extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_32)\n    #define ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH ((uint16_t)24)\n    extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_64)\n    #define ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH ((uint16_t)56)\n    extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_128)\n    #define ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH ((uint16_t)112)\n    extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_256)\n    #define ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH ((uint16_t)240)\n    extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_512)\n    #define ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH ((uint16_t)480)\n    extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_1024)\n    #define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992)\n    extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_2048)\n    #define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984)\n    extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_4096)\n    #define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032)\n    extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_REALCOEF_F32)\n    extern const float32_t realCoefA[8192];\n    extern const float32_t realCoefB[8192];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_REALCOEF_Q31)\n    extern const q31_t realCoefAQ31[8192];\n    extern const q31_t realCoefBQ31[8192];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_REALCOEF_Q15)\n    extern const q15_t realCoefAQ15[8192];\n    extern const q15_t realCoefBQ15[8192];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_128)\n    extern const float32_t Weights_128[256];\n    extern const float32_t cos_factors_128[128];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_512)\n    extern const float32_t Weights_512[1024];\n    extern const float32_t cos_factors_512[512];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_2048)\n    extern const float32_t Weights_2048[4096];\n    extern const float32_t cos_factors_2048[2048];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_8192)\n    extern const float32_t Weights_8192[16384];\n    extern const float32_t cos_factors_8192[8192];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_128)\n    extern const q15_t WeightsQ15_128[256];\n    extern const q15_t cos_factorsQ15_128[128];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_512)\n    extern const q15_t WeightsQ15_512[1024];\n    extern const q15_t cos_factorsQ15_512[512];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_2048)\n    extern const q15_t WeightsQ15_2048[4096];\n    extern const q15_t cos_factorsQ15_2048[2048];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_8192)\n    extern const q15_t WeightsQ15_8192[16384];\n    extern const q15_t cos_factorsQ15_8192[8192];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_128)  \n    extern const q31_t WeightsQ31_128[256];\n    extern const q31_t cos_factorsQ31_128[128];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_512) \n    extern const q31_t WeightsQ31_512[1024];\n    extern const q31_t cos_factorsQ31_512[512];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_2048) \n    extern const q31_t WeightsQ31_2048[4096];\n    extern const q31_t cos_factorsQ31_2048[2048];\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_8192) \n    extern const q31_t WeightsQ31_8192[16384];\n    extern const q31_t cos_factorsQ31_8192[8192];\n  #endif\n    \n#endif /* if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FAST_ALLOW_TABLES)\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_RECIP_Q15)\n    extern const q15_t armRecipTableQ15[64];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) defined(ARM_ALL_FAST_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_RECIP_Q31)\n    extern const q31_t armRecipTableQ31[64];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) defined(ARM_ALL_FAST_TABLES) */\n  \n  /* Tables for Fast Math Sine and Cosine */\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_SIN_F32)\n    extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) defined(ARM_ALL_FAST_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_SIN_Q31)\n    extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) defined(ARM_ALL_FAST_TABLES) */\n  \n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_SIN_Q15)\n    extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1];\n  #endif /* !defined(ARM_DSP_CONFIG_TABLES) defined(ARM_ALL_FAST_TABLES) */\n\n#endif /* if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FAST_TABLES) */\n\n#endif /*  ARM_COMMON_TABLES_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Include/arm_const_structs.h",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_const_structs.h\n * Description:  Constant structs that are initialized for user convenience.\n *               For example, some can be given as arguments to the arm_cfft_f32() function.\n *\n * $Date:        27. January 2017\n * $Revision:    V.1.5.1\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef _ARM_CONST_STRUCTS_H\n#define _ARM_CONST_STRUCTS_H\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048;\n   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096;\n\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048;\n   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096;\n\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048;\n   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096;\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Include/arm_math.h",
    "content": "/******************************************************************************\n * @file     arm_math.h\n * @brief    Public header file for CMSIS DSP Library\n * @version  V1.6.0\n * @date     18. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2010-2019 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n   \\mainpage CMSIS DSP Software Library\n   *\n   * Introduction\n   * ------------\n   *\n   * This user manual describes the CMSIS DSP software library,\n   * a suite of common signal processing functions for use on Cortex-M processor based devices.\n   *\n   * The library is divided into a number of functions each covering a specific category:\n   * - Basic math functions\n   * - Fast math functions\n   * - Complex math functions\n   * - Filters\n   * - Matrix functions\n   * - Transform functions\n   * - Motor control functions\n   * - Statistical functions\n   * - Support functions\n   * - Interpolation functions\n   *\n   * The library has separate functions for operating on 8-bit integers, 16-bit integers,\n   * 32-bit integer and 32-bit floating-point values.\n   *\n   * Using the Library\n   * ------------\n   *\n   * The library installer contains prebuilt versions of the libraries in the <code>Lib</code> folder.\n   * - arm_cortexM7lfdp_math.lib (Cortex-M7, Little endian, Double Precision Floating Point Unit)\n   * - arm_cortexM7bfdp_math.lib (Cortex-M7, Big endian, Double Precision Floating Point Unit)\n   * - arm_cortexM7lfsp_math.lib (Cortex-M7, Little endian, Single Precision Floating Point Unit)\n   * - arm_cortexM7bfsp_math.lib (Cortex-M7, Big endian and Single Precision Floating Point Unit on)\n   * - arm_cortexM7l_math.lib (Cortex-M7, Little endian)\n   * - arm_cortexM7b_math.lib (Cortex-M7, Big endian)\n   * - arm_cortexM4lf_math.lib (Cortex-M4, Little endian, Floating Point Unit)\n   * - arm_cortexM4bf_math.lib (Cortex-M4, Big endian, Floating Point Unit)\n   * - arm_cortexM4l_math.lib (Cortex-M4, Little endian)\n   * - arm_cortexM4b_math.lib (Cortex-M4, Big endian)\n   * - arm_cortexM3l_math.lib (Cortex-M3, Little endian)\n   * - arm_cortexM3b_math.lib (Cortex-M3, Big endian)\n   * - arm_cortexM0l_math.lib (Cortex-M0 / Cortex-M0+, Little endian)\n   * - arm_cortexM0b_math.lib (Cortex-M0 / Cortex-M0+, Big endian)\n   * - arm_ARMv8MBLl_math.lib (Armv8-M Baseline, Little endian)\n   * - arm_ARMv8MMLl_math.lib (Armv8-M Mainline, Little endian)\n   * - arm_ARMv8MMLlfsp_math.lib (Armv8-M Mainline, Little endian, Single Precision Floating Point Unit)\n   * - arm_ARMv8MMLld_math.lib (Armv8-M Mainline, Little endian, DSP instructions)\n   * - arm_ARMv8MMLldfsp_math.lib (Armv8-M Mainline, Little endian, DSP instructions, Single Precision Floating Point Unit)\n   *\n   * The library functions are declared in the public file <code>arm_math.h</code> which is placed in the <code>Include</code> folder.\n   * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single\n   * public header file <code> arm_math.h</code> for Cortex-M cores with little endian and big endian. Same header file will be used for floating point unit(FPU) variants.\n   *\n   *\n   * Examples\n   * --------\n   *\n   * The library ships with a number of examples which demonstrate how to use the library functions.\n   *\n   * Toolchain Support\n   * ------------\n   *\n   * The library has been developed and tested with MDK version 5.14.0.0\n   * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly.\n   *\n   * Building the Library\n   * ------------\n   *\n   * The library installer contains a project file to rebuild libraries on MDK toolchain in the <code>CMSIS\\\\DSP\\\\Projects\\\\ARM</code> folder.\n   * - arm_cortexM_math.uvprojx\n   *\n   *\n   * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional preprocessor macros detailed above.\n   *\n   * Preprocessor Macros\n   * ------------\n   *\n   * Each library project have different preprocessor macros.\n   *\n   * - ARM_MATH_BIG_ENDIAN:\n   *\n   * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.\n   *\n   * - ARM_MATH_MATRIX_CHECK:\n   *\n   * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices\n   *\n   * - ARM_MATH_ROUNDING:\n   *\n   * Define macro ARM_MATH_ROUNDING for rounding on support functions\n   *\n   * - ARM_MATH_LOOPUNROLL:\n   *\n   * Define macro ARM_MATH_LOOPUNROLL to enable manual loop unrolling in DSP functions\n   *\n   * - ARM_MATH_NEON:\n   *\n   * Define macro ARM_MATH_NEON to enable Neon versions of the DSP functions.\n   * It is not enabled by default when Neon is available because performances are \n   * dependent on the compiler and target architecture.\n   *\n   * - ARM_MATH_NEON_EXPERIMENTAL:\n   *\n   * Define macro ARM_MATH_NEON_EXPERIMENTAL to enable experimental Neon versions of \n   * of some DSP functions. Experimental Neon versions currently do not have better\n   * performances than the scalar versions.\n   *\n   * <hr>\n   * CMSIS-DSP in ARM::CMSIS Pack\n   * -----------------------------\n   *\n   * The following files relevant to CMSIS-DSP are present in the <b>ARM::CMSIS</b> Pack directories:\n   * |File/Folder                      |Content                                                                 |\n   * |---------------------------------|------------------------------------------------------------------------|\n   * |\\b CMSIS\\\\Documentation\\\\DSP     | This documentation                                                     |\n   * |\\b CMSIS\\\\DSP\\\\DSP_Lib_TestSuite | DSP_Lib test suite                                                     |\n   * |\\b CMSIS\\\\DSP\\\\Examples          | Example projects demonstrating the usage of the library functions      |\n   * |\\b CMSIS\\\\DSP\\\\Include           | DSP_Lib include files                                                  |\n   * |\\b CMSIS\\\\DSP\\\\Lib               | DSP_Lib binaries                                                       |\n   * |\\b CMSIS\\\\DSP\\\\Projects          | Projects to rebuild DSP_Lib binaries                                   |\n   * |\\b CMSIS\\\\DSP\\\\Source            | DSP_Lib source files                                                   |\n   *\n   * <hr>\n   * Revision History of CMSIS-DSP\n   * ------------\n   * Please refer to \\ref ChangeLog_pg.\n   */\n\n\n/**\n * @defgroup groupMath Basic Math Functions\n */\n\n/**\n * @defgroup groupFastMath Fast Math Functions\n * This set of functions provides a fast approximation to sine, cosine, and square root.\n * As compared to most of the other functions in the CMSIS math library, the fast math functions\n * operate on individual values and not arrays.\n * There are separate functions for Q15, Q31, and floating-point data.\n *\n */\n\n/**\n * @defgroup groupCmplxMath Complex Math Functions\n * This set of functions operates on complex data vectors.\n * The data in the complex arrays is stored in an interleaved fashion\n * (real, imag, real, imag, ...).\n * In the API functions, the number of samples in a complex array refers\n * to the number of complex values; the array contains twice this number of\n * real values.\n */\n\n/**\n * @defgroup groupFilters Filtering Functions\n */\n\n/**\n * @defgroup groupMatrix Matrix Functions\n *\n * This set of functions provides basic matrix math operations.\n * The functions operate on matrix data structures.  For example,\n * the type\n * definition for the floating-point matrix structure is shown\n * below:\n * <pre>\n *     typedef struct\n *     {\n *       uint16_t numRows;     // number of rows of the matrix.\n *       uint16_t numCols;     // number of columns of the matrix.\n *       float32_t *pData;     // points to the data of the matrix.\n *     } arm_matrix_instance_f32;\n * </pre>\n * There are similar definitions for Q15 and Q31 data types.\n *\n * The structure specifies the size of the matrix and then points to\n * an array of data.  The array is of size <code>numRows X numCols</code>\n * and the values are arranged in row order.  That is, the\n * matrix element (i, j) is stored at:\n * <pre>\n *     pData[i*numCols + j]\n * </pre>\n *\n * \\par Init Functions\n * There is an associated initialization function for each type of matrix\n * data structure.\n * The initialization function sets the values of the internal structure fields.\n * Refer to \\ref arm_mat_init_f32(), \\ref arm_mat_init_q31() and \\ref arm_mat_init_q15()\n * for floating-point, Q31 and Q15 types,  respectively.\n *\n * \\par\n * Use of the initialization function is optional. However, if initialization function is used\n * then the instance structure cannot be placed into a const data section.\n * To place the instance structure in a const data\n * section, manually initialize the data structure.  For example:\n * <pre>\n * <code>arm_matrix_instance_f32 S = {nRows, nColumns, pData};</code>\n * <code>arm_matrix_instance_q31 S = {nRows, nColumns, pData};</code>\n * <code>arm_matrix_instance_q15 S = {nRows, nColumns, pData};</code>\n * </pre>\n * where <code>nRows</code> specifies the number of rows, <code>nColumns</code>\n * specifies the number of columns, and <code>pData</code> points to the\n * data array.\n *\n * \\par Size Checking\n * By default all of the matrix functions perform size checking on the input and\n * output matrices. For example, the matrix addition function verifies that the\n * two input matrices and the output matrix all have the same number of rows and\n * columns. If the size check fails the functions return:\n * <pre>\n *     ARM_MATH_SIZE_MISMATCH\n * </pre>\n * Otherwise the functions return\n * <pre>\n *     ARM_MATH_SUCCESS\n * </pre>\n * There is some overhead associated with this matrix size checking.\n * The matrix size checking is enabled via the \\#define\n * <pre>\n *     ARM_MATH_MATRIX_CHECK\n * </pre>\n * within the library project settings.  By default this macro is defined\n * and size checking is enabled. By changing the project settings and\n * undefining this macro size checking is eliminated and the functions\n * run a bit faster. With size checking disabled the functions always\n * return <code>ARM_MATH_SUCCESS</code>.\n */\n\n/**\n * @defgroup groupTransforms Transform Functions\n */\n\n/**\n * @defgroup groupController Controller Functions\n */\n\n/**\n * @defgroup groupStats Statistics Functions\n */\n\n/**\n * @defgroup groupSupport Support Functions\n */\n\n/**\n * @defgroup groupInterpolation Interpolation Functions\n * These functions perform 1- and 2-dimensional interpolation of data.\n * Linear interpolation is used for 1-dimensional data and\n * bilinear interpolation is used for 2-dimensional data.\n */\n\n/**\n * @defgroup groupExamples Examples\n */\n\n\n#ifndef _ARM_MATH_H\n#define _ARM_MATH_H\n\n/* Compiler specific diagnostic adjustment */\n#if   defined ( __CC_ARM )\n\n#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n\n#elif defined ( __GNUC__ )\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wsign-conversion\"\n  #pragma GCC diagnostic ignored \"-Wconversion\"\n  #pragma GCC diagnostic ignored \"-Wunused-parameter\"\n\n#elif defined ( __ICCARM__ )\n\n#elif defined ( __TI_ARM__ )\n\n#elif defined ( __CSMC__ )\n\n#elif defined ( __TASKING__ )\n\n#elif defined ( _MSC_VER )\n\n#else\n  #error Unknown compiler\n#endif\n\n\n/* Included for instrinsics definitions */\n#if !defined ( _MSC_VER )\n#include \"cmsis_compiler.h\"\n#else\n#include <stdint.h>\n#define __STATIC_FORCEINLINE static __forceinline\n#define __ALIGNED(x) __declspec(align(x))\n#define LOW_OPTIMIZATION_ENTER\n#define LOW_OPTIMIZATION_EXIT\n#define IAR_ONLY_LOW_OPTIMIZATION_ENTER \n#define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n#endif\n\n#include \"string.h\"\n#include \"math.h\"\n#include \"float.h\"\n\n/* evaluate ARM DSP feature */\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n  #define ARM_MATH_DSP                   1\n#endif\n\n#if defined(__ARM_NEON)\n#include <arm_neon.h>\n#endif\n\n\n#ifdef   __cplusplus\nextern \"C\"\n{\n#endif\n\n\n  /**\n   * @brief Macros required for reciprocal calculation in Normalized LMS\n   */\n\n#define DELTA_Q31          (0x100)\n#define DELTA_Q15          0x5\n#define INDEX_MASK         0x0000003F\n#ifndef PI\n  #define PI               3.14159265358979f\n#endif\n\n  /**\n   * @brief Macros required for SINE and COSINE Fast math approximations\n   */\n\n#define FAST_MATH_TABLE_SIZE  512\n#define FAST_MATH_Q31_SHIFT   (32 - 10)\n#define FAST_MATH_Q15_SHIFT   (16 - 10)\n#define CONTROLLER_Q31_SHIFT  (32 - 9)\n#define TABLE_SPACING_Q31     0x400000\n#define TABLE_SPACING_Q15     0x80\n\n  /**\n   * @brief Macros required for SINE and COSINE Controller functions\n   */\n  /* 1.31(q31) Fixed value of 2/360 */\n  /* -1 to +1 is divided into 360 values so total spacing is (2/360) */\n#define INPUT_SPACING         0xB60B61\n\n\n  /**\n   * @brief Error status returned by some functions in the library.\n   */\n\n  typedef enum\n  {\n    ARM_MATH_SUCCESS        =  0,        /**< No error */\n    ARM_MATH_ARGUMENT_ERROR = -1,        /**< One or more arguments are incorrect */\n    ARM_MATH_LENGTH_ERROR   = -2,        /**< Length of data buffer is incorrect */\n    ARM_MATH_SIZE_MISMATCH  = -3,        /**< Size of matrices is not compatible with the operation */\n    ARM_MATH_NANINF         = -4,        /**< Not-a-number (NaN) or infinity is generated */\n    ARM_MATH_SINGULAR       = -5,        /**< Input matrix is singular and cannot be inverted */\n    ARM_MATH_TEST_FAILURE   = -6         /**< Test Failed */\n  } arm_status;\n\n  /**\n   * @brief 8-bit fractional data type in 1.7 format.\n   */\n  typedef int8_t q7_t;\n\n  /**\n   * @brief 16-bit fractional data type in 1.15 format.\n   */\n  typedef int16_t q15_t;\n\n  /**\n   * @brief 32-bit fractional data type in 1.31 format.\n   */\n  typedef int32_t q31_t;\n\n  /**\n   * @brief 64-bit fractional data type in 1.63 format.\n   */\n  typedef int64_t q63_t;\n\n  /**\n   * @brief 32-bit floating-point type definition.\n   */\n  typedef float float32_t;\n\n  /**\n   * @brief 64-bit floating-point type definition.\n   */\n  typedef double float64_t;\n\n\n/**\n  @brief definition to read/write two 16 bit values.\n  @deprecated\n */\n#if   defined ( __CC_ARM )\n  #define __SIMD32_TYPE int32_t __packed\n#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n  #define __SIMD32_TYPE int32_t\n#elif defined ( __GNUC__ )\n  #define __SIMD32_TYPE int32_t\n#elif defined ( __ICCARM__ )\n  #define __SIMD32_TYPE int32_t __packed\n#elif defined ( __TI_ARM__ )\n  #define __SIMD32_TYPE int32_t\n#elif defined ( __CSMC__ )\n  #define __SIMD32_TYPE int32_t\n#elif defined ( __TASKING__ )\n  #define __SIMD32_TYPE __un(aligned) int32_t\n#elif defined(_MSC_VER )\n  #define __SIMD32_TYPE int32_t\n#else\n  #error Unknown compiler\n#endif\n\n#define __SIMD32(addr)        (*(__SIMD32_TYPE **) & (addr))\n#define __SIMD32_CONST(addr)  ( (__SIMD32_TYPE * )   (addr))\n#define _SIMD32_OFFSET(addr)  (*(__SIMD32_TYPE * )   (addr))\n#define __SIMD64(addr)        (*(      int64_t **) & (addr))\n\n/* SIMD replacement */\n\n\n/**\n  @brief         Read 2 Q15 from Q15 pointer.\n  @param[in]     pQ15      points to input value\n  @return        Q31 value\n */\n__STATIC_FORCEINLINE q31_t read_q15x2 (\n  q15_t * pQ15)\n{\n  q31_t val;\n\n  memcpy (&val, pQ15, 4);\n\n  return (val);\n}\n\n/**\n  @brief         Read 2 Q15 from Q15 pointer and increment pointer afterwards.\n  @param[in]     pQ15      points to input value\n  @return        Q31 value\n */\n__STATIC_FORCEINLINE q31_t read_q15x2_ia (\n  q15_t ** pQ15)\n{\n  q31_t val;\n\n  memcpy (&val, *pQ15, 4);\n  *pQ15 += 2;\n\n  return (val);\n}\n\n/**\n  @brief         Read 2 Q15 from Q15 pointer and decrement pointer afterwards.\n  @param[in]     pQ15      points to input value\n  @return        Q31 value\n */\n__STATIC_FORCEINLINE q31_t read_q15x2_da (\n  q15_t ** pQ15)\n{\n  q31_t val;\n\n  memcpy (&val, *pQ15, 4);\n  *pQ15 -= 2;\n\n  return (val);\n}\n\n/**\n  @brief         Write 2 Q15 to Q15 pointer and increment pointer afterwards.\n  @param[in]     pQ15      points to input value\n  @param[in]     value     Q31 value\n  @return        none\n */\n__STATIC_FORCEINLINE void write_q15x2_ia (\n  q15_t ** pQ15,\n  q31_t    value)\n{\n  q31_t val = value;\n\n  memcpy (*pQ15, &val, 4);\n  *pQ15 += 2;\n}\n\n/**\n  @brief         Write 2 Q15 to Q15 pointer.\n  @param[in]     pQ15      points to input value\n  @param[in]     value     Q31 value\n  @return        none\n */\n__STATIC_FORCEINLINE void write_q15x2 (\n  q15_t * pQ15,\n  q31_t   value)\n{\n  q31_t val = value;\n\n  memcpy (pQ15, &val, 4);\n}\n\n\n/**\n  @brief         Read 4 Q7 from Q7 pointer and increment pointer afterwards.\n  @param[in]     pQ7       points to input value\n  @return        Q31 value\n */\n__STATIC_FORCEINLINE q31_t read_q7x4_ia (\n  q7_t ** pQ7)\n{\n  q31_t val;\n\n  memcpy (&val, *pQ7, 4);\n  *pQ7 += 4;\n\n  return (val);\n}\n\n/**\n  @brief         Read 4 Q7 from Q7 pointer and decrement pointer afterwards.\n  @param[in]     pQ7       points to input value\n  @return        Q31 value\n */\n__STATIC_FORCEINLINE q31_t read_q7x4_da (\n  q7_t ** pQ7)\n{\n  q31_t val;\n\n  memcpy (&val, *pQ7, 4);\n  *pQ7 -= 4;\n\n  return (val);\n}\n\n/**\n  @brief         Write 4 Q7 to Q7 pointer and increment pointer afterwards.\n  @param[in]     pQ7       points to input value\n  @param[in]     value     Q31 value\n  @return        none\n */\n__STATIC_FORCEINLINE void write_q7x4_ia (\n  q7_t ** pQ7,\n  q31_t   value)\n{\n  q31_t val = value;\n\n  memcpy (*pQ7, &val, 4);\n  *pQ7 += 4;\n}\n\n/*\n\nNormally those kind of definitions are in a compiler file\nin Core or Core_A.\n\nBut for MSVC compiler it is a bit special. The goal is very specific\nto CMSIS-DSP and only to allow the use of this library from other\nsystems like Python or Matlab.\n\nMSVC is not going to be used to cross-compile to ARM. So, having a MSVC\ncompiler file in Core or Core_A would not make sense.\n\n*/\n#if defined ( _MSC_VER )\n    __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t data)\n    {\n      if (data == 0U) { return 32U; }\n\n      uint32_t count = 0U;\n      uint32_t mask = 0x80000000U;\n\n      while ((data & mask) == 0U)\n      {\n        count += 1U;\n        mask = mask >> 1U;\n      }\n      return count;\n    }\n\n  __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\n  {\n    if ((sat >= 1U) && (sat <= 32U))\n    {\n      const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n      const int32_t min = -1 - max ;\n      if (val > max)\n      {\n        return max;\n      }\n      else if (val < min)\n      {\n        return min;\n      }\n    }\n    return val;\n  }\n\n  __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\n  {\n    if (sat <= 31U)\n    {\n      const uint32_t max = ((1U << sat) - 1U);\n      if (val > (int32_t)max)\n      {\n        return max;\n      }\n      else if (val < 0)\n      {\n        return 0U;\n      }\n    }\n    return (uint32_t)val;\n  }\n#endif\n\n#ifndef ARM_MATH_DSP\n  /**\n   * @brief definition to pack two 16 bit values.\n   */\n  #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0x0000FFFF) | \\\n                                      (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000)  )\n  #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0xFFFF0000) | \\\n                                      (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF)  )\n#endif\n\n   /**\n   * @brief definition to pack four 8 bit values.\n   */\n#ifndef ARM_MATH_BIG_ENDIAN\n  #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) | \\\n                                  (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) | \\\n                                  (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \\\n                                  (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )\n#else\n  #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) | \\\n                                  (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) | \\\n                                  (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \\\n                                  (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )\n#endif\n\n\n  /**\n   * @brief Clips Q63 to Q31 values.\n   */\n  __STATIC_FORCEINLINE q31_t clip_q63_to_q31(\n  q63_t x)\n  {\n    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?\n      ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x;\n  }\n\n  /**\n   * @brief Clips Q63 to Q15 values.\n   */\n  __STATIC_FORCEINLINE q15_t clip_q63_to_q15(\n  q63_t x)\n  {\n    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?\n      ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15);\n  }\n\n  /**\n   * @brief Clips Q31 to Q7 values.\n   */\n  __STATIC_FORCEINLINE q7_t clip_q31_to_q7(\n  q31_t x)\n  {\n    return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?\n      ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x;\n  }\n\n  /**\n   * @brief Clips Q31 to Q15 values.\n   */\n  __STATIC_FORCEINLINE q15_t clip_q31_to_q15(\n  q31_t x)\n  {\n    return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?\n      ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x;\n  }\n\n  /**\n   * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format.\n   */\n  __STATIC_FORCEINLINE q63_t mult32x64(\n  q63_t x,\n  q31_t y)\n  {\n    return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +\n            (((q63_t) (x >> 32)                * y)      )  );\n  }\n\n  /**\n   * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type.\n   */\n  __STATIC_FORCEINLINE uint32_t arm_recip_q31(\n        q31_t in,\n        q31_t * dst,\n  const q31_t * pRecipTable)\n  {\n    q31_t out;\n    uint32_t tempVal;\n    uint32_t index, i;\n    uint32_t signBits;\n\n    if (in > 0)\n    {\n      signBits = ((uint32_t) (__CLZ( in) - 1));\n    }\n    else\n    {\n      signBits = ((uint32_t) (__CLZ(-in) - 1));\n    }\n\n    /* Convert input sample to 1.31 format */\n    in = (in << signBits);\n\n    /* calculation of index for initial approximated Val */\n    index = (uint32_t)(in >> 24);\n    index = (index & INDEX_MASK);\n\n    /* 1.31 with exp 1 */\n    out = pRecipTable[index];\n\n    /* calculation of reciprocal value */\n    /* running approximation for two iterations */\n    for (i = 0U; i < 2U; i++)\n    {\n      tempVal = (uint32_t) (((q63_t) in * out) >> 31);\n      tempVal = 0x7FFFFFFFu - tempVal;\n      /*      1.31 with exp 1 */\n      /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */\n      out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30);\n    }\n\n    /* write output */\n    *dst = out;\n\n    /* return num of signbits of out = 1/in value */\n    return (signBits + 1U);\n  }\n\n\n  /**\n   * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type.\n   */\n  __STATIC_FORCEINLINE uint32_t arm_recip_q15(\n        q15_t in,\n        q15_t * dst,\n  const q15_t * pRecipTable)\n  {\n    q15_t out = 0;\n    uint32_t tempVal = 0;\n    uint32_t index = 0, i = 0;\n    uint32_t signBits = 0;\n\n    if (in > 0)\n    {\n      signBits = ((uint32_t)(__CLZ( in) - 17));\n    }\n    else\n    {\n      signBits = ((uint32_t)(__CLZ(-in) - 17));\n    }\n\n    /* Convert input sample to 1.15 format */\n    in = (in << signBits);\n\n    /* calculation of index for initial approximated Val */\n    index = (uint32_t)(in >>  8);\n    index = (index & INDEX_MASK);\n\n    /*      1.15 with exp 1  */\n    out = pRecipTable[index];\n\n    /* calculation of reciprocal value */\n    /* running approximation for two iterations */\n    for (i = 0U; i < 2U; i++)\n    {\n      tempVal = (uint32_t) (((q31_t) in * out) >> 15);\n      tempVal = 0x7FFFu - tempVal;\n      /*      1.15 with exp 1 */\n      out = (q15_t) (((q31_t) out * tempVal) >> 14);\n      /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */\n    }\n\n    /* write output */\n    *dst = out;\n\n    /* return num of signbits of out = 1/in value */\n    return (signBits + 1);\n  }\n\n#if defined(ARM_MATH_NEON)\n\nstatic inline float32x4_t __arm_vec_sqrt_f32_neon(float32x4_t  x)\n{\n    float32x4_t x1 = vmaxq_f32(x, vdupq_n_f32(FLT_MIN));\n    float32x4_t e = vrsqrteq_f32(x1);\n    e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x1, e), e), e);\n    e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x1, e), e), e);\n    return vmulq_f32(x, e);\n}\n\nstatic inline int16x8_t __arm_vec_sqrt_q15_neon(int16x8_t vec)\n{\n    float32x4_t tempF;\n    int32x4_t tempHI,tempLO;\n\n    tempLO = vmovl_s16(vget_low_s16(vec));\n    tempF = vcvtq_n_f32_s32(tempLO,15);\n    tempF = __arm_vec_sqrt_f32_neon(tempF);\n    tempLO = vcvtq_n_s32_f32(tempF,15);\n\n    tempHI = vmovl_s16(vget_high_s16(vec));\n    tempF = vcvtq_n_f32_s32(tempHI,15);\n    tempF = __arm_vec_sqrt_f32_neon(tempF);\n    tempHI = vcvtq_n_s32_f32(tempF,15);\n\n    return(vcombine_s16(vqmovn_s32(tempLO),vqmovn_s32(tempHI)));\n}\n\nstatic inline int32x4_t __arm_vec_sqrt_q31_neon(int32x4_t vec)\n{\n  float32x4_t temp;\n\n  temp = vcvtq_n_f32_s32(vec,31);\n  temp = __arm_vec_sqrt_f32_neon(temp);\n  return(vcvtq_n_s32_f32(temp,31));\n}\n\n#endif\n\n/*\n * @brief C custom defined intrinsic functions\n */\n#if !defined (ARM_MATH_DSP)\n\n  /*\n   * @brief C custom defined QADD8\n   */\n  __STATIC_FORCEINLINE uint32_t __QADD8(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s, t, u;\n\n    r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;\n    s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;\n    t = __SSAT(((((q31_t)x <<  8) >> 24) + (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;\n    u = __SSAT(((((q31_t)x      ) >> 24) + (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;\n\n    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QSUB8\n   */\n  __STATIC_FORCEINLINE uint32_t __QSUB8(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s, t, u;\n\n    r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;\n    s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;\n    t = __SSAT(((((q31_t)x <<  8) >> 24) - (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;\n    u = __SSAT(((((q31_t)x      ) >> 24) - (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;\n\n    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QADD16\n   */\n  __STATIC_FORCEINLINE uint32_t __QADD16(\n  uint32_t x,\n  uint32_t y)\n  {\n/*  q31_t r,     s;  without initialisation 'arm_offset_q15 test' fails  but 'intrinsic' tests pass! for armCC */\n    q31_t r = 0, s = 0;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHADD16\n   */\n  __STATIC_FORCEINLINE uint32_t __SHADD16(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QSUB16\n   */\n  __STATIC_FORCEINLINE uint32_t __QSUB16(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHSUB16\n   */\n  __STATIC_FORCEINLINE uint32_t __SHSUB16(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QASX\n   */\n  __STATIC_FORCEINLINE uint32_t __QASX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHASX\n   */\n  __STATIC_FORCEINLINE uint32_t __SHASX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QSAX\n   */\n  __STATIC_FORCEINLINE uint32_t __QSAX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHSAX\n   */\n  __STATIC_FORCEINLINE uint32_t __SHSAX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SMUSDX\n   */\n  __STATIC_FORCEINLINE uint32_t __SMUSDX(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));\n  }\n\n  /*\n   * @brief C custom defined SMUADX\n   */\n  __STATIC_FORCEINLINE uint32_t __SMUADX(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));\n  }\n\n\n  /*\n   * @brief C custom defined QADD\n   */\n  __STATIC_FORCEINLINE int32_t __QADD(\n  int32_t x,\n  int32_t y)\n  {\n    return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y)));\n  }\n\n\n  /*\n   * @brief C custom defined QSUB\n   */\n  __STATIC_FORCEINLINE int32_t __QSUB(\n  int32_t x,\n  int32_t y)\n  {\n    return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y)));\n  }\n\n\n  /*\n   * @brief C custom defined SMLAD\n   */\n  __STATIC_FORCEINLINE uint32_t __SMLAD(\n  uint32_t x,\n  uint32_t y,\n  uint32_t sum)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ( ((q31_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLADX\n   */\n  __STATIC_FORCEINLINE uint32_t __SMLADX(\n  uint32_t x,\n  uint32_t y,\n  uint32_t sum)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ( ((q31_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLSDX\n   */\n  __STATIC_FORCEINLINE uint32_t __SMLSDX(\n  uint32_t x,\n  uint32_t y,\n  uint32_t sum)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ( ((q31_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLALD\n   */\n  __STATIC_FORCEINLINE uint64_t __SMLALD(\n  uint32_t x,\n  uint32_t y,\n  uint64_t sum)\n  {\n/*  return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */\n    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ( ((q63_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLALDX\n   */\n  __STATIC_FORCEINLINE uint64_t __SMLALDX(\n  uint32_t x,\n  uint32_t y,\n  uint64_t sum)\n  {\n/*  return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */\n    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ( ((q63_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMUAD\n   */\n  __STATIC_FORCEINLINE uint32_t __SMUAD(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMUSD\n   */\n  __STATIC_FORCEINLINE uint32_t __SMUSD(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) -\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));\n  }\n\n\n  /*\n   * @brief C custom defined SXTB16\n   */\n  __STATIC_FORCEINLINE uint32_t __SXTB16(\n  uint32_t x)\n  {\n    return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) |\n                       ((((q31_t)x <<  8) >>  8) & (q31_t)0xFFFF0000)  ));\n  }\n\n  /*\n   * @brief C custom defined SMMLA\n   */\n  __STATIC_FORCEINLINE int32_t __SMMLA(\n  int32_t x,\n  int32_t y,\n  int32_t sum)\n  {\n    return (sum + (int32_t) (((int64_t) x * y) >> 32));\n  }\n\n#endif /* !defined (ARM_MATH_DSP) */\n\n\n  /**\n   * @brief Instance structure for the Q7 FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;        /**< number of filter coefficients in the filter. */\n          q7_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    const q7_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\n  } arm_fir_instance_q7;\n\n  /**\n   * @brief Instance structure for the Q15 FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;         /**< number of filter coefficients in the filter. */\n          q15_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    const q15_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\n  } arm_fir_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;         /**< number of filter coefficients in the filter. */\n          q31_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    const q31_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps. */\n  } arm_fir_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;     /**< number of filter coefficients in the filter. */\n          float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    const float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */\n  } arm_fir_instance_f32;\n\n  /**\n   * @brief Processing function for the Q7 FIR filter.\n   * @param[in]  S          points to an instance of the Q7 FIR filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_q7(\n  const arm_fir_instance_q7 * S,\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief  Initialization function for the Q7 FIR filter.\n   * @param[in,out] S          points to an instance of the Q7 FIR structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed.\n   */\n  void arm_fir_init_q7(\n        arm_fir_instance_q7 * S,\n        uint16_t numTaps,\n  const q7_t * pCoeffs,\n        q7_t * pState,\n        uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the Q15 FIR filter.\n   * @param[in]  S          points to an instance of the Q15 FIR structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_q15(\n  const arm_fir_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the fast Q15 FIR filter (fast version).\n   * @param[in]  S          points to an instance of the Q15 FIR filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_fast_q15(\n  const arm_fir_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief  Initialization function for the Q15 FIR filter.\n   * @param[in,out] S          points to an instance of the Q15 FIR filter structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter. Must be even and greater than or equal to 4.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed at a time.\n   * @return     The function returns either\n   * <code>ARM_MATH_SUCCESS</code> if initialization was successful or\n   * <code>ARM_MATH_ARGUMENT_ERROR</code> if <code>numTaps</code> is not a supported value.\n   */\n  arm_status arm_fir_init_q15(\n        arm_fir_instance_q15 * S,\n        uint16_t numTaps,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the Q31 FIR filter.\n   * @param[in]  S          points to an instance of the Q31 FIR filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_q31(\n  const arm_fir_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the fast Q31 FIR filter (fast version).\n   * @param[in]  S          points to an instance of the Q31 FIR filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_fast_q31(\n  const arm_fir_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief  Initialization function for the Q31 FIR filter.\n   * @param[in,out] S          points to an instance of the Q31 FIR structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed at a time.\n   */\n  void arm_fir_init_q31(\n        arm_fir_instance_q31 * S,\n        uint16_t numTaps,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the floating-point FIR filter.\n   * @param[in]  S          points to an instance of the floating-point FIR structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_f32(\n  const arm_fir_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief  Initialization function for the floating-point FIR filter.\n   * @param[in,out] S          points to an instance of the floating-point FIR filter structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed at a time.\n   */\n  void arm_fir_init_f32(\n        arm_fir_instance_f32 * S,\n        uint16_t numTaps,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        uint32_t blockSize);\n\n  /**\n   * @brief Instance structure for the Q15 Biquad cascade filter.\n   */\n  typedef struct\n  {\n          int8_t numStages;        /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n          q15_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\n    const q15_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */\n          int8_t postShift;        /**< Additional shift, in bits, applied to each output sample. */\n  } arm_biquad_casd_df1_inst_q15;\n\n  /**\n   * @brief Instance structure for the Q31 Biquad cascade filter.\n   */\n  typedef struct\n  {\n          uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n          q31_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\n    const q31_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */\n          uint8_t postShift;       /**< Additional shift, in bits, applied to each output sample. */\n  } arm_biquad_casd_df1_inst_q31;\n\n  /**\n   * @brief Instance structure for the floating-point Biquad cascade filter.\n   */\n  typedef struct\n  {\n          uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n          float32_t *pState;       /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\n    const float32_t *pCoeffs;      /**< Points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_casd_df1_inst_f32;\n\n  /**\n   * @brief Processing function for the Q15 Biquad cascade filter.\n   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief  Initialization function for the Q15 Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the Q15 Biquad cascade structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format\n   */\n  void arm_biquad_cascade_df1_init_q15(\n        arm_biquad_casd_df1_inst_q15 * S,\n        uint8_t numStages,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        int8_t postShift);\n\n  /**\n   * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_fast_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the Q31 Biquad cascade filter\n   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_fast_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief  Initialization function for the Q31 Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the Q31 Biquad cascade structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format\n   */\n  void arm_biquad_cascade_df1_init_q31(\n        arm_biquad_casd_df1_inst_q31 * S,\n        uint8_t numStages,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        int8_t postShift);\n\n  /**\n   * @brief Processing function for the floating-point Biquad cascade filter.\n   * @param[in]  S          points to an instance of the floating-point Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_f32(\n  const arm_biquad_casd_df1_inst_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief  Initialization function for the floating-point Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the floating-point Biquad cascade structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_df1_init_f32(\n        arm_biquad_casd_df1_inst_f32 * S,\n        uint8_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState);\n\n  /**\n   * @brief Instance structure for the floating-point matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    float32_t *pData;     /**< points to the data of the matrix. */\n  } arm_matrix_instance_f32;\n\n\n  /**\n   * @brief Instance structure for the floating-point matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    float64_t *pData;     /**< points to the data of the matrix. */\n  } arm_matrix_instance_f64;\n\n  /**\n   * @brief Instance structure for the Q15 matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    q15_t *pData;         /**< points to the data of the matrix. */\n  } arm_matrix_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    q31_t *pData;         /**< points to the data of the matrix. */\n  } arm_matrix_instance_q31;\n\n  /**\n   * @brief Floating-point matrix addition.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_add_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst);\n\n  /**\n   * @brief Q15 matrix addition.\n   * @param[in]   pSrcA  points to the first input matrix structure\n   * @param[in]   pSrcB  points to the second input matrix structure\n   * @param[out]  pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_add_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst);\n\n  /**\n   * @brief Q31 matrix addition.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_add_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst);\n\n  /**\n   * @brief Floating-point, complex, matrix multiplication.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_cmplx_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst);\n\n  /**\n   * @brief Q15, complex,  matrix multiplication.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_cmplx_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst,\n        q15_t * pScratch);\n\n  /**\n   * @brief Q31, complex, matrix multiplication.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_cmplx_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst);\n\n  /**\n   * @brief Floating-point matrix transpose.\n   * @param[in]  pSrc  points to the input matrix\n   * @param[out] pDst  points to the output matrix\n   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\n   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_trans_f32(\n  const arm_matrix_instance_f32 * pSrc,\n        arm_matrix_instance_f32 * pDst);\n\n  /**\n   * @brief Q15 matrix transpose.\n   * @param[in]  pSrc  points to the input matrix\n   * @param[out] pDst  points to the output matrix\n   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\n   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_trans_q15(\n  const arm_matrix_instance_q15 * pSrc,\n        arm_matrix_instance_q15 * pDst);\n\n  /**\n   * @brief Q31 matrix transpose.\n   * @param[in]  pSrc  points to the input matrix\n   * @param[out] pDst  points to the output matrix\n   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\n   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_trans_q31(\n  const arm_matrix_instance_q31 * pSrc,\n        arm_matrix_instance_q31 * pDst);\n\n  /**\n   * @brief Floating-point matrix multiplication\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst);\n\n  /**\n   * @brief Q15 matrix multiplication\n   * @param[in]  pSrcA   points to the first input matrix structure\n   * @param[in]  pSrcB   points to the second input matrix structure\n   * @param[out] pDst    points to output matrix structure\n   * @param[in]  pState  points to the array for storing intermediate results\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst,\n        q15_t * pState);\n\n  /**\n   * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA   points to the first input matrix structure\n   * @param[in]  pSrcB   points to the second input matrix structure\n   * @param[out] pDst    points to output matrix structure\n   * @param[in]  pState  points to the array for storing intermediate results\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_mult_fast_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst,\n        q15_t * pState);\n\n  /**\n   * @brief Q31 matrix multiplication\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst);\n\n  /**\n   * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_mult_fast_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst);\n\n  /**\n   * @brief Floating-point matrix subtraction\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_sub_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst);\n\n  /**\n   * @brief Q15 matrix subtraction\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_sub_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst);\n\n  /**\n   * @brief Q31 matrix subtraction\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_sub_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst);\n\n  /**\n   * @brief Floating-point matrix scaling.\n   * @param[in]  pSrc   points to the input matrix\n   * @param[in]  scale  scale factor\n   * @param[out] pDst   points to the output matrix\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_scale_f32(\n  const arm_matrix_instance_f32 * pSrc,\n        float32_t scale,\n        arm_matrix_instance_f32 * pDst);\n\n  /**\n   * @brief Q15 matrix scaling.\n   * @param[in]  pSrc        points to input matrix\n   * @param[in]  scaleFract  fractional portion of the scale factor\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to output matrix\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_scale_q15(\n  const arm_matrix_instance_q15 * pSrc,\n        q15_t scaleFract,\n        int32_t shift,\n        arm_matrix_instance_q15 * pDst);\n\n  /**\n   * @brief Q31 matrix scaling.\n   * @param[in]  pSrc        points to input matrix\n   * @param[in]  scaleFract  fractional portion of the scale factor\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\narm_status arm_mat_scale_q31(\n  const arm_matrix_instance_q31 * pSrc,\n        q31_t scaleFract,\n        int32_t shift,\n        arm_matrix_instance_q31 * pDst);\n\n  /**\n   * @brief  Q31 matrix initialization.\n   * @param[in,out] S         points to an instance of the floating-point matrix structure.\n   * @param[in]     nRows     number of rows in the matrix.\n   * @param[in]     nColumns  number of columns in the matrix.\n   * @param[in]     pData     points to the matrix data array.\n   */\nvoid arm_mat_init_q31(\n        arm_matrix_instance_q31 * S,\n        uint16_t nRows,\n        uint16_t nColumns,\n        q31_t * pData);\n\n  /**\n   * @brief  Q15 matrix initialization.\n   * @param[in,out] S         points to an instance of the floating-point matrix structure.\n   * @param[in]     nRows     number of rows in the matrix.\n   * @param[in]     nColumns  number of columns in the matrix.\n   * @param[in]     pData     points to the matrix data array.\n   */\nvoid arm_mat_init_q15(\n        arm_matrix_instance_q15 * S,\n        uint16_t nRows,\n        uint16_t nColumns,\n        q15_t * pData);\n\n  /**\n   * @brief  Floating-point matrix initialization.\n   * @param[in,out] S         points to an instance of the floating-point matrix structure.\n   * @param[in]     nRows     number of rows in the matrix.\n   * @param[in]     nColumns  number of columns in the matrix.\n   * @param[in]     pData     points to the matrix data array.\n   */\nvoid arm_mat_init_f32(\n        arm_matrix_instance_f32 * S,\n        uint16_t nRows,\n        uint16_t nColumns,\n        float32_t * pData);\n\n\n  /**\n   * @brief Instance structure for the Q15 PID Control.\n   */\n  typedef struct\n  {\n          q15_t A0;           /**< The derived gain, A0 = Kp + Ki + Kd . */\n#if !defined (ARM_MATH_DSP)\n          q15_t A1;\n          q15_t A2;\n#else\n          q31_t A1;           /**< The derived gain A1 = -Kp - 2Kd | Kd.*/\n#endif\n          q15_t state[3];     /**< The state array of length 3. */\n          q15_t Kp;           /**< The proportional gain. */\n          q15_t Ki;           /**< The integral gain. */\n          q15_t Kd;           /**< The derivative gain. */\n  } arm_pid_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 PID Control.\n   */\n  typedef struct\n  {\n          q31_t A0;            /**< The derived gain, A0 = Kp + Ki + Kd . */\n          q31_t A1;            /**< The derived gain, A1 = -Kp - 2Kd. */\n          q31_t A2;            /**< The derived gain, A2 = Kd . */\n          q31_t state[3];      /**< The state array of length 3. */\n          q31_t Kp;            /**< The proportional gain. */\n          q31_t Ki;            /**< The integral gain. */\n          q31_t Kd;            /**< The derivative gain. */\n  } arm_pid_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point PID Control.\n   */\n  typedef struct\n  {\n          float32_t A0;          /**< The derived gain, A0 = Kp + Ki + Kd . */\n          float32_t A1;          /**< The derived gain, A1 = -Kp - 2Kd. */\n          float32_t A2;          /**< The derived gain, A2 = Kd . */\n          float32_t state[3];    /**< The state array of length 3. */\n          float32_t Kp;          /**< The proportional gain. */\n          float32_t Ki;          /**< The integral gain. */\n          float32_t Kd;          /**< The derivative gain. */\n  } arm_pid_instance_f32;\n\n\n\n  /**\n   * @brief  Initialization function for the floating-point PID Control.\n   * @param[in,out] S               points to an instance of the PID structure.\n   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\n   */\n  void arm_pid_init_f32(\n        arm_pid_instance_f32 * S,\n        int32_t resetStateFlag);\n\n\n  /**\n   * @brief  Reset function for the floating-point PID Control.\n   * @param[in,out] S  is an instance of the floating-point PID Control structure\n   */\n  void arm_pid_reset_f32(\n        arm_pid_instance_f32 * S);\n\n\n  /**\n   * @brief  Initialization function for the Q31 PID Control.\n   * @param[in,out] S               points to an instance of the Q15 PID structure.\n   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\n   */\n  void arm_pid_init_q31(\n        arm_pid_instance_q31 * S,\n        int32_t resetStateFlag);\n\n\n  /**\n   * @brief  Reset function for the Q31 PID Control.\n   * @param[in,out] S   points to an instance of the Q31 PID Control structure\n   */\n\n  void arm_pid_reset_q31(\n        arm_pid_instance_q31 * S);\n\n\n  /**\n   * @brief  Initialization function for the Q15 PID Control.\n   * @param[in,out] S               points to an instance of the Q15 PID structure.\n   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\n   */\n  void arm_pid_init_q15(\n        arm_pid_instance_q15 * S,\n        int32_t resetStateFlag);\n\n\n  /**\n   * @brief  Reset function for the Q15 PID Control.\n   * @param[in,out] S  points to an instance of the q15 PID Control structure\n   */\n  void arm_pid_reset_q15(\n        arm_pid_instance_q15 * S);\n\n\n  /**\n   * @brief Instance structure for the floating-point Linear Interpolate function.\n   */\n  typedef struct\n  {\n          uint32_t nValues;           /**< nValues */\n          float32_t x1;               /**< x1 */\n          float32_t xSpacing;         /**< xSpacing */\n          float32_t *pYData;          /**< pointer to the table of Y values */\n  } arm_linear_interp_instance_f32;\n\n  /**\n   * @brief Instance structure for the floating-point bilinear interpolation function.\n   */\n  typedef struct\n  {\n          uint16_t numRows;   /**< number of rows in the data table. */\n          uint16_t numCols;   /**< number of columns in the data table. */\n          float32_t *pData;   /**< points to the data table. */\n  } arm_bilinear_interp_instance_f32;\n\n   /**\n   * @brief Instance structure for the Q31 bilinear interpolation function.\n   */\n  typedef struct\n  {\n          uint16_t numRows;   /**< number of rows in the data table. */\n          uint16_t numCols;   /**< number of columns in the data table. */\n          q31_t *pData;       /**< points to the data table. */\n  } arm_bilinear_interp_instance_q31;\n\n   /**\n   * @brief Instance structure for the Q15 bilinear interpolation function.\n   */\n  typedef struct\n  {\n          uint16_t numRows;   /**< number of rows in the data table. */\n          uint16_t numCols;   /**< number of columns in the data table. */\n          q15_t *pData;       /**< points to the data table. */\n  } arm_bilinear_interp_instance_q15;\n\n   /**\n   * @brief Instance structure for the Q15 bilinear interpolation function.\n   */\n  typedef struct\n  {\n          uint16_t numRows;   /**< number of rows in the data table. */\n          uint16_t numCols;   /**< number of columns in the data table. */\n          q7_t *pData;        /**< points to the data table. */\n  } arm_bilinear_interp_instance_q7;\n\n\n  /**\n   * @brief Q7 vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Floating-point vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                 /**< length of the FFT. */\n          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    const q15_t *pTwiddle;                 /**< points to the Sin twiddle factor table. */\n    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix2_instance_q15;\n\n/* Deprecated */\n  arm_status arm_cfft_radix2_init_q15(\n        arm_cfft_radix2_instance_q15 * S,\n        uint16_t fftLen,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix2_q15(\n  const arm_cfft_radix2_instance_q15 * S,\n        q15_t * pSrc);\n\n\n  /**\n   * @brief Instance structure for the Q15 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                 /**< length of the FFT. */\n          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    const q15_t *pTwiddle;                 /**< points to the twiddle factor table. */\n    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix4_instance_q15;\n\n/* Deprecated */\n  arm_status arm_cfft_radix4_init_q15(\n        arm_cfft_radix4_instance_q15 * S,\n        uint16_t fftLen,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix4_q15(\n  const arm_cfft_radix4_instance_q15 * S,\n        q15_t * pSrc);\n\n  /**\n   * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                 /**< length of the FFT. */\n          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    const q31_t *pTwiddle;                 /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix2_instance_q31;\n\n/* Deprecated */\n  arm_status arm_cfft_radix2_init_q31(\n        arm_cfft_radix2_instance_q31 * S,\n        uint16_t fftLen,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix2_q31(\n  const arm_cfft_radix2_instance_q31 * S,\n        q31_t * pSrc);\n\n  /**\n   * @brief Instance structure for the Q31 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                 /**< length of the FFT. */\n          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    const q31_t *pTwiddle;                 /**< points to the twiddle factor table. */\n    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix4_instance_q31;\n\n/* Deprecated */\n  void arm_cfft_radix4_q31(\n  const arm_cfft_radix4_instance_q31 * S,\n        q31_t * pSrc);\n\n/* Deprecated */\n  arm_status arm_cfft_radix4_init_q31(\n        arm_cfft_radix4_instance_q31 * S,\n        uint16_t fftLen,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the floating-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                   /**< length of the FFT. */\n          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    const float32_t *pTwiddle;               /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */\n          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n          float32_t onebyfftLen;             /**< value of 1/fftLen. */\n  } arm_cfft_radix2_instance_f32;\n\n/* Deprecated */\n  arm_status arm_cfft_radix2_init_f32(\n        arm_cfft_radix2_instance_f32 * S,\n        uint16_t fftLen,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix2_f32(\n  const arm_cfft_radix2_instance_f32 * S,\n        float32_t * pSrc);\n\n  /**\n   * @brief Instance structure for the floating-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                   /**< length of the FFT. */\n          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    const float32_t *pTwiddle;               /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */\n          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n          float32_t onebyfftLen;             /**< value of 1/fftLen. */\n  } arm_cfft_radix4_instance_f32;\n\n/* Deprecated */\n  arm_status arm_cfft_radix4_init_f32(\n        arm_cfft_radix4_instance_f32 * S,\n        uint16_t fftLen,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix4_f32(\n  const arm_cfft_radix4_instance_f32 * S,\n        float32_t * pSrc);\n\n  /**\n   * @brief Instance structure for the fixed-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                   /**< length of the FFT. */\n    const q15_t *pTwiddle;             /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */\n          uint16_t bitRevLength;             /**< bit reversal table length. */\n  } arm_cfft_instance_q15;\n\nvoid arm_cfft_q15(\n    const arm_cfft_instance_q15 * S,\n          q15_t * p1,\n          uint8_t ifftFlag,\n          uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the fixed-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                   /**< length of the FFT. */\n    const q31_t *pTwiddle;             /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */\n          uint16_t bitRevLength;             /**< bit reversal table length. */\n  } arm_cfft_instance_q31;\n\nvoid arm_cfft_q31(\n    const arm_cfft_instance_q31 * S,\n          q31_t * p1,\n          uint8_t ifftFlag,\n          uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the floating-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n          uint16_t fftLen;                   /**< length of the FFT. */\n    const float32_t *pTwiddle;         /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */\n          uint16_t bitRevLength;             /**< bit reversal table length. */\n  } arm_cfft_instance_f32;\n\n  void arm_cfft_f32(\n  const arm_cfft_instance_f32 * S,\n        float32_t * p1,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the Q15 RFFT/RIFFT function.\n   */\n  typedef struct\n  {\n          uint32_t fftLenReal;                      /**< length of the real FFT. */\n          uint8_t ifftFlagR;                        /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\n          uint8_t bitReverseFlagR;                  /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\n          uint32_t twidCoefRModifier;               /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    const q15_t *pTwiddleAReal;                     /**< points to the real twiddle factor table. */\n    const q15_t *pTwiddleBReal;                     /**< points to the imag twiddle factor table. */\n    const arm_cfft_instance_q15 *pCfft;       /**< points to the complex FFT instance. */\n  } arm_rfft_instance_q15;\n\n  arm_status arm_rfft_init_q15(\n        arm_rfft_instance_q15 * S,\n        uint32_t fftLenReal,\n        uint32_t ifftFlagR,\n        uint32_t bitReverseFlag);\n\n  void arm_rfft_q15(\n  const arm_rfft_instance_q15 * S,\n        q15_t * pSrc,\n        q15_t * pDst);\n\n  /**\n   * @brief Instance structure for the Q31 RFFT/RIFFT function.\n   */\n  typedef struct\n  {\n          uint32_t fftLenReal;                        /**< length of the real FFT. */\n          uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\n          uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\n          uint32_t twidCoefRModifier;                 /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    const q31_t *pTwiddleAReal;                       /**< points to the real twiddle factor table. */\n    const q31_t *pTwiddleBReal;                       /**< points to the imag twiddle factor table. */\n    const arm_cfft_instance_q31 *pCfft;         /**< points to the complex FFT instance. */\n  } arm_rfft_instance_q31;\n\n  arm_status arm_rfft_init_q31(\n        arm_rfft_instance_q31 * S,\n        uint32_t fftLenReal,\n        uint32_t ifftFlagR,\n        uint32_t bitReverseFlag);\n\n  void arm_rfft_q31(\n  const arm_rfft_instance_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst);\n\n  /**\n   * @brief Instance structure for the floating-point RFFT/RIFFT function.\n   */\n  typedef struct\n  {\n          uint32_t fftLenReal;                        /**< length of the real FFT. */\n          uint16_t fftLenBy2;                         /**< length of the complex FFT. */\n          uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\n          uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\n          uint32_t twidCoefRModifier;                     /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    const float32_t *pTwiddleAReal;                   /**< points to the real twiddle factor table. */\n    const float32_t *pTwiddleBReal;                   /**< points to the imag twiddle factor table. */\n          arm_cfft_radix4_instance_f32 *pCfft;        /**< points to the complex FFT instance. */\n  } arm_rfft_instance_f32;\n\n  arm_status arm_rfft_init_f32(\n        arm_rfft_instance_f32 * S,\n        arm_cfft_radix4_instance_f32 * S_CFFT,\n        uint32_t fftLenReal,\n        uint32_t ifftFlagR,\n        uint32_t bitReverseFlag);\n\n  void arm_rfft_f32(\n  const arm_rfft_instance_f32 * S,\n        float32_t * pSrc,\n        float32_t * pDst);\n\n  /**\n   * @brief Instance structure for the floating-point RFFT/RIFFT function.\n   */\ntypedef struct\n  {\n          arm_cfft_instance_f32 Sint;      /**< Internal CFFT structure. */\n          uint16_t fftLenRFFT;             /**< length of the real sequence */\n    const float32_t * pTwiddleRFFT;        /**< Twiddle factors real stage  */\n  } arm_rfft_fast_instance_f32 ;\n\narm_status arm_rfft_fast_init_f32 (\n         arm_rfft_fast_instance_f32 * S,\n         uint16_t fftLen);\n\narm_status arm_rfft_32_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\narm_status arm_rfft_64_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\narm_status arm_rfft_128_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\narm_status arm_rfft_256_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\narm_status arm_rfft_512_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\narm_status arm_rfft_1024_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\narm_status arm_rfft_2048_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\narm_status arm_rfft_4096_fast_init_f32 ( arm_rfft_fast_instance_f32 * S );\n\n\n  void arm_rfft_fast_f32(\n        arm_rfft_fast_instance_f32 * S,\n        float32_t * p, float32_t * pOut,\n        uint8_t ifftFlag);\n\n  /**\n   * @brief Instance structure for the floating-point DCT4/IDCT4 function.\n   */\n  typedef struct\n  {\n          uint16_t N;                          /**< length of the DCT4. */\n          uint16_t Nby2;                       /**< half of the length of the DCT4. */\n          float32_t normalize;                 /**< normalizing factor. */\n    const float32_t *pTwiddle;                 /**< points to the twiddle factor table. */\n    const float32_t *pCosFactor;               /**< points to the cosFactor table. */\n          arm_rfft_instance_f32 *pRfft;        /**< points to the real FFT instance. */\n          arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */\n  } arm_dct4_instance_f32;\n\n\n  /**\n   * @brief  Initialization function for the floating-point DCT4/IDCT4.\n   * @param[in,out] S          points to an instance of floating-point DCT4/IDCT4 structure.\n   * @param[in]     S_RFFT     points to an instance of floating-point RFFT/RIFFT structure.\n   * @param[in]     S_CFFT     points to an instance of floating-point CFFT/CIFFT structure.\n   * @param[in]     N          length of the DCT4.\n   * @param[in]     Nby2       half of the length of the DCT4.\n   * @param[in]     normalize  normalizing factor.\n   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.\n   */\n  arm_status arm_dct4_init_f32(\n        arm_dct4_instance_f32 * S,\n        arm_rfft_instance_f32 * S_RFFT,\n        arm_cfft_radix4_instance_f32 * S_CFFT,\n        uint16_t N,\n        uint16_t Nby2,\n        float32_t normalize);\n\n\n  /**\n   * @brief Processing function for the floating-point DCT4/IDCT4.\n   * @param[in]     S              points to an instance of the floating-point DCT4/IDCT4 structure.\n   * @param[in]     pState         points to state buffer.\n   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.\n   */\n  void arm_dct4_f32(\n  const arm_dct4_instance_f32 * S,\n        float32_t * pState,\n        float32_t * pInlineBuffer);\n\n\n  /**\n   * @brief Instance structure for the Q31 DCT4/IDCT4 function.\n   */\n  typedef struct\n  {\n          uint16_t N;                          /**< length of the DCT4. */\n          uint16_t Nby2;                       /**< half of the length of the DCT4. */\n          q31_t normalize;                     /**< normalizing factor. */\n    const q31_t *pTwiddle;                     /**< points to the twiddle factor table. */\n    const q31_t *pCosFactor;                   /**< points to the cosFactor table. */\n          arm_rfft_instance_q31 *pRfft;        /**< points to the real FFT instance. */\n          arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */\n  } arm_dct4_instance_q31;\n\n\n  /**\n   * @brief  Initialization function for the Q31 DCT4/IDCT4.\n   * @param[in,out] S          points to an instance of Q31 DCT4/IDCT4 structure.\n   * @param[in]     S_RFFT     points to an instance of Q31 RFFT/RIFFT structure\n   * @param[in]     S_CFFT     points to an instance of Q31 CFFT/CIFFT structure\n   * @param[in]     N          length of the DCT4.\n   * @param[in]     Nby2       half of the length of the DCT4.\n   * @param[in]     normalize  normalizing factor.\n   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.\n   */\n  arm_status arm_dct4_init_q31(\n        arm_dct4_instance_q31 * S,\n        arm_rfft_instance_q31 * S_RFFT,\n        arm_cfft_radix4_instance_q31 * S_CFFT,\n        uint16_t N,\n        uint16_t Nby2,\n        q31_t normalize);\n\n\n  /**\n   * @brief Processing function for the Q31 DCT4/IDCT4.\n   * @param[in]     S              points to an instance of the Q31 DCT4 structure.\n   * @param[in]     pState         points to state buffer.\n   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.\n   */\n  void arm_dct4_q31(\n  const arm_dct4_instance_q31 * S,\n        q31_t * pState,\n        q31_t * pInlineBuffer);\n\n\n  /**\n   * @brief Instance structure for the Q15 DCT4/IDCT4 function.\n   */\n  typedef struct\n  {\n          uint16_t N;                          /**< length of the DCT4. */\n          uint16_t Nby2;                       /**< half of the length of the DCT4. */\n          q15_t normalize;                     /**< normalizing factor. */\n    const q15_t *pTwiddle;                     /**< points to the twiddle factor table. */\n    const q15_t *pCosFactor;                   /**< points to the cosFactor table. */\n          arm_rfft_instance_q15 *pRfft;        /**< points to the real FFT instance. */\n          arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */\n  } arm_dct4_instance_q15;\n\n\n  /**\n   * @brief  Initialization function for the Q15 DCT4/IDCT4.\n   * @param[in,out] S          points to an instance of Q15 DCT4/IDCT4 structure.\n   * @param[in]     S_RFFT     points to an instance of Q15 RFFT/RIFFT structure.\n   * @param[in]     S_CFFT     points to an instance of Q15 CFFT/CIFFT structure.\n   * @param[in]     N          length of the DCT4.\n   * @param[in]     Nby2       half of the length of the DCT4.\n   * @param[in]     normalize  normalizing factor.\n   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.\n   */\n  arm_status arm_dct4_init_q15(\n        arm_dct4_instance_q15 * S,\n        arm_rfft_instance_q15 * S_RFFT,\n        arm_cfft_radix4_instance_q15 * S_CFFT,\n        uint16_t N,\n        uint16_t Nby2,\n        q15_t normalize);\n\n\n  /**\n   * @brief Processing function for the Q15 DCT4/IDCT4.\n   * @param[in]     S              points to an instance of the Q15 DCT4 structure.\n   * @param[in]     pState         points to state buffer.\n   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.\n   */\n  void arm_dct4_q15(\n  const arm_dct4_instance_q15 * S,\n        q15_t * pState,\n        q15_t * pInlineBuffer);\n\n\n  /**\n   * @brief Floating-point vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q7 vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Floating-point vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q7 vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a floating-point vector by a scalar.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  scale      scale factor to be applied\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_scale_f32(\n  const float32_t * pSrc,\n        float32_t scale,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a Q7 vector by a scalar.\n   * @param[in]  pSrc        points to the input vector\n   * @param[in]  scaleFract  fractional portion of the scale value\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to the output vector\n   * @param[in]  blockSize   number of samples in the vector\n   */\n  void arm_scale_q7(\n  const q7_t * pSrc,\n        q7_t scaleFract,\n        int8_t shift,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a Q15 vector by a scalar.\n   * @param[in]  pSrc        points to the input vector\n   * @param[in]  scaleFract  fractional portion of the scale value\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to the output vector\n   * @param[in]  blockSize   number of samples in the vector\n   */\n  void arm_scale_q15(\n  const q15_t * pSrc,\n        q15_t scaleFract,\n        int8_t shift,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a Q31 vector by a scalar.\n   * @param[in]  pSrc        points to the input vector\n   * @param[in]  scaleFract  fractional portion of the scale value\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to the output vector\n   * @param[in]  blockSize   number of samples in the vector\n   */\n  void arm_scale_q31(\n  const q31_t * pSrc,\n        q31_t scaleFract,\n        int8_t shift,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q7 vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_q7(\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Floating-point vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Dot product of floating-point vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        uint32_t blockSize,\n        float32_t * result);\n\n\n  /**\n   * @brief Dot product of Q7 vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        uint32_t blockSize,\n        q31_t * result);\n\n\n  /**\n   * @brief Dot product of Q15 vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        uint32_t blockSize,\n        q63_t * result);\n\n\n  /**\n   * @brief Dot product of Q31 vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        uint32_t blockSize,\n        q63_t * result);\n\n\n  /**\n   * @brief  Shifts the elements of a Q7 vector a specified number of bits.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_shift_q7(\n  const q7_t * pSrc,\n        int8_t shiftBits,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Shifts the elements of a Q15 vector a specified number of bits.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_shift_q15(\n  const q15_t * pSrc,\n        int8_t shiftBits,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Shifts the elements of a Q31 vector a specified number of bits.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_shift_q31(\n  const q31_t * pSrc,\n        int8_t shiftBits,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a floating-point vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_f32(\n  const float32_t * pSrc,\n        float32_t offset,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a Q7 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_q7(\n  const q7_t * pSrc,\n        q7_t offset,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a Q15 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_q15(\n  const q15_t * pSrc,\n        q15_t offset,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a Q31 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_q31(\n  const q31_t * pSrc,\n        q31_t offset,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a floating-point vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a Q7 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_q7(\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a Q15 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a Q31 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a floating-point vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a Q7 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_q7(\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a Q15 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a Q31 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a floating-point vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_f32(\n        float32_t value,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a Q7 vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_q7(\n        q7_t value,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a Q15 vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_q15(\n        q15_t value,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a Q31 vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_q31(\n        q31_t value,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n/**\n * @brief Convolution of floating-point sequences.\n * @param[in]  pSrcA    points to the first input sequence.\n * @param[in]  srcALen  length of the first input sequence.\n * @param[in]  pSrcB    points to the second input sequence.\n * @param[in]  srcBLen  length of the second input sequence.\n * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.\n */\n  void arm_conv_f32(\n  const float32_t * pSrcA,\n        uint32_t srcALen,\n  const float32_t * pSrcB,\n        uint32_t srcBLen,\n        float32_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q15 sequences.\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.\n   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).\n   */\n  void arm_conv_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2);\n\n\n/**\n * @brief Convolution of Q15 sequences.\n * @param[in]  pSrcA    points to the first input sequence.\n * @param[in]  srcALen  length of the first input sequence.\n * @param[in]  pSrcB    points to the second input sequence.\n * @param[in]  srcBLen  length of the second input sequence.\n * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.\n */\n  void arm_conv_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_fast_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.\n   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).\n   */\n  void arm_conv_fast_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2);\n\n\n  /**\n   * @brief Convolution of Q31 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_fast_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst);\n\n\n    /**\n   * @brief Convolution of Q7 sequences.\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.\n   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n   */\n  void arm_conv_opt_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2);\n\n\n  /**\n   * @brief Convolution of Q7 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst);\n\n\n  /**\n   * @brief Partial convolution of floating-point sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_f32(\n  const float32_t * pSrcA,\n        uint32_t srcALen,\n  const float32_t * pSrcB,\n        uint32_t srcBLen,\n        float32_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints,\n        q15_t * pScratch1,\n        q15_t * pScratch2);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_fast_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_fast_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints,\n        q15_t * pScratch1,\n        q15_t * pScratch2);\n\n\n  /**\n   * @brief Partial convolution of Q31 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_fast_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q7 sequences\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @param[in]  pScratch1   points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2   points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_opt_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints,\n        q15_t * pScratch1,\n        q15_t * pScratch2);\n\n\n/**\n   * @brief Partial convolution of Q7 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints);\n\n\n  /**\n   * @brief Instance structure for the Q15 FIR decimator.\n   */\n  typedef struct\n  {\n          uint8_t M;                  /**< decimation factor. */\n          uint16_t numTaps;           /**< number of coefficients in the filter. */\n    const q15_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/\n          q15_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n  } arm_fir_decimate_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR decimator.\n   */\n  typedef struct\n  {\n          uint8_t M;                  /**< decimation factor. */\n          uint16_t numTaps;           /**< number of coefficients in the filter. */\n    const q31_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/\n          q31_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n  } arm_fir_decimate_instance_q31;\n\n/**\n  @brief Instance structure for floating-point FIR decimator.\n */\ntypedef struct\n  {\n          uint8_t M;                  /**< decimation factor. */\n          uint16_t numTaps;           /**< number of coefficients in the filter. */\n    const float32_t *pCoeffs;         /**< points to the coefficient array. The array is of length numTaps.*/\n          float32_t *pState;          /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n  } arm_fir_decimate_instance_f32;\n\n\n/**\n  @brief         Processing function for floating-point FIR decimator.\n  @param[in]     S         points to an instance of the floating-point FIR decimator structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process\n */\nvoid arm_fir_decimate_f32(\n  const arm_fir_decimate_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n/**\n  @brief         Initialization function for the floating-point FIR decimator.\n  @param[in,out] S          points to an instance of the floating-point FIR decimator structure\n  @param[in]     numTaps    number of coefficients in the filter\n  @param[in]     M          decimation factor\n  @param[in]     pCoeffs    points to the filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     blockSize  number of input samples to process per call\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS      : Operation successful\n                   - \\ref ARM_MATH_LENGTH_ERROR : <code>blockSize</code> is not a multiple of <code>M</code>\n */\narm_status arm_fir_decimate_init_f32(\n        arm_fir_decimate_instance_f32 * S,\n        uint16_t numTaps,\n        uint8_t M,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 FIR decimator.\n   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_decimate_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_decimate_fast_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 FIR decimator.\n   * @param[in,out] S          points to an instance of the Q15 FIR decimator structure.\n   * @param[in]     numTaps    number of coefficients in the filter.\n   * @param[in]     M          decimation factor.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * <code>blockSize</code> is not a multiple of <code>M</code>.\n   */\n  arm_status arm_fir_decimate_init_q15(\n        arm_fir_decimate_instance_q15 * S,\n        uint16_t numTaps,\n        uint8_t M,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 FIR decimator.\n   * @param[in]  S     points to an instance of the Q31 FIR decimator structure.\n   * @param[in]  pSrc  points to the block of input data.\n   * @param[out] pDst  points to the block of output data\n   * @param[in] blockSize number of input samples to process per call.\n   */\n  void arm_fir_decimate_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q31 FIR decimator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_decimate_fast_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 FIR decimator.\n   * @param[in,out] S          points to an instance of the Q31 FIR decimator structure.\n   * @param[in]     numTaps    number of coefficients in the filter.\n   * @param[in]     M          decimation factor.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * <code>blockSize</code> is not a multiple of <code>M</code>.\n   */\n  arm_status arm_fir_decimate_init_q31(\n        arm_fir_decimate_instance_q31 * S,\n        uint16_t numTaps,\n        uint8_t M,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 FIR interpolator.\n   */\n  typedef struct\n  {\n        uint8_t L;                      /**< upsample factor. */\n        uint16_t phaseLength;           /**< length of each polyphase filter component. */\n  const q15_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */\n        q15_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */\n  } arm_fir_interpolate_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR interpolator.\n   */\n  typedef struct\n  {\n        uint8_t L;                      /**< upsample factor. */\n        uint16_t phaseLength;           /**< length of each polyphase filter component. */\n  const q31_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */\n        q31_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */\n  } arm_fir_interpolate_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point FIR interpolator.\n   */\n  typedef struct\n  {\n        uint8_t L;                     /**< upsample factor. */\n        uint16_t phaseLength;          /**< length of each polyphase filter component. */\n  const float32_t *pCoeffs;            /**< points to the coefficient array. The array is of length L*phaseLength. */\n        float32_t *pState;             /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */\n  } arm_fir_interpolate_instance_f32;\n\n\n  /**\n   * @brief Processing function for the Q15 FIR interpolator.\n   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_interpolate_q15(\n  const arm_fir_interpolate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 FIR interpolator.\n   * @param[in,out] S          points to an instance of the Q15 FIR interpolator structure.\n   * @param[in]     L          upsample factor.\n   * @param[in]     numTaps    number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficient buffer.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\n   */\n  arm_status arm_fir_interpolate_init_q15(\n        arm_fir_interpolate_instance_q15 * S,\n        uint8_t L,\n        uint16_t numTaps,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 FIR interpolator.\n   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_interpolate_q31(\n  const arm_fir_interpolate_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 FIR interpolator.\n   * @param[in,out] S          points to an instance of the Q31 FIR interpolator structure.\n   * @param[in]     L          upsample factor.\n   * @param[in]     numTaps    number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficient buffer.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\n   */\n  arm_status arm_fir_interpolate_init_q31(\n        arm_fir_interpolate_instance_q31 * S,\n        uint8_t L,\n        uint16_t numTaps,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the floating-point FIR interpolator.\n   * @param[in]  S          points to an instance of the floating-point FIR interpolator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_interpolate_f32(\n  const arm_fir_interpolate_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point FIR interpolator.\n   * @param[in,out] S          points to an instance of the floating-point FIR interpolator structure.\n   * @param[in]     L          upsample factor.\n   * @param[in]     numTaps    number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficient buffer.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\n   */\n  arm_status arm_fir_interpolate_init_f32(\n        arm_fir_interpolate_instance_f32 * S,\n        uint8_t L,\n        uint16_t numTaps,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the high precision Q31 Biquad cascade filter.\n   */\n  typedef struct\n  {\n          uint8_t numStages;       /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n          q63_t *pState;           /**< points to the array of state coefficients.  The array is of length 4*numStages. */\n    const q31_t *pCoeffs;          /**< points to the array of coefficients.  The array is of length 5*numStages. */\n          uint8_t postShift;       /**< additional shift, in bits, applied to each output sample. */\n  } arm_biquad_cas_df1_32x64_ins_q31;\n\n\n  /**\n   * @param[in]  S          points to an instance of the high precision Q31 Biquad cascade filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cas_df1_32x64_q31(\n  const arm_biquad_cas_df1_32x64_ins_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @param[in,out] S          points to an instance of the high precision Q31 Biquad cascade filter structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     postShift  shift to be applied to the output. Varies according to the coefficients format\n   */\n  void arm_biquad_cas_df1_32x64_init_q31(\n        arm_biquad_cas_df1_32x64_ins_q31 * S,\n        uint8_t numStages,\n  const q31_t * pCoeffs,\n        q63_t * pState,\n        uint8_t postShift);\n\n\n  /**\n   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.\n   */\n  typedef struct\n  {\n          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n          float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */\n    const float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_cascade_df2T_instance_f32;\n\n  /**\n   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.\n   */\n  typedef struct\n  {\n          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n          float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 4*numStages. */\n    const float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_cascade_stereo_df2T_instance_f32;\n\n  /**\n   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.\n   */\n  typedef struct\n  {\n          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n          float64_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */\n          float64_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_cascade_df2T_instance_f64;\n\n\n  /**\n   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in]  S          points to an instance of the filter data structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df2T_f32(\n  const arm_biquad_cascade_df2T_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels\n   * @param[in]  S          points to an instance of the filter data structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_stereo_df2T_f32(\n  const arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in]  S          points to an instance of the filter data structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df2T_f64(\n  const arm_biquad_cascade_df2T_instance_f64 * S,\n        float64_t * pSrc,\n        float64_t * pDst,\n        uint32_t blockSize);\n\n\n#if defined(ARM_MATH_NEON) \nvoid arm_biquad_cascade_df2T_compute_coefs_f32(\n  arm_biquad_cascade_df2T_instance_f32 * S,\n  uint8_t numStages,\n  float32_t * pCoeffs);\n#endif\n  /**\n   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the filter data structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_df2T_init_f32(\n        arm_biquad_cascade_df2T_instance_f32 * S,\n        uint8_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState);\n\n\n  /**\n   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the filter data structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_stereo_df2T_init_f32(\n        arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n        uint8_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState);\n\n\n  /**\n   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the filter data structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_df2T_init_f64(\n        arm_biquad_cascade_df2T_instance_f64 * S,\n        uint8_t numStages,\n        float64_t * pCoeffs,\n        float64_t * pState);\n\n\n  /**\n   * @brief Instance structure for the Q15 FIR lattice filter.\n   */\n  typedef struct\n  {\n          uint16_t numStages;                  /**< number of filter stages. */\n          q15_t *pState;                       /**< points to the state variable array. The array is of length numStages. */\n    const q15_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */\n  } arm_fir_lattice_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR lattice filter.\n   */\n  typedef struct\n  {\n          uint16_t numStages;                  /**< number of filter stages. */\n          q31_t *pState;                       /**< points to the state variable array. The array is of length numStages. */\n    const q31_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */\n  } arm_fir_lattice_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point FIR lattice filter.\n   */\n  typedef struct\n  {\n          uint16_t numStages;                  /**< number of filter stages. */\n          float32_t *pState;                   /**< points to the state variable array. The array is of length numStages. */\n    const float32_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numStages. */\n  } arm_fir_lattice_instance_f32;\n\n\n  /**\n   * @brief Initialization function for the Q15 FIR lattice filter.\n   * @param[in] S          points to an instance of the Q15 FIR lattice structure.\n   * @param[in] numStages  number of filter stages.\n   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.\n   * @param[in] pState     points to the state buffer.  The array is of length numStages.\n   */\n  void arm_fir_lattice_init_q15(\n        arm_fir_lattice_instance_q15 * S,\n        uint16_t numStages,\n  const q15_t * pCoeffs,\n        q15_t * pState);\n\n\n  /**\n   * @brief Processing function for the Q15 FIR lattice filter.\n   * @param[in]  S          points to an instance of the Q15 FIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_lattice_q15(\n  const arm_fir_lattice_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for the Q31 FIR lattice filter.\n   * @param[in] S          points to an instance of the Q31 FIR lattice structure.\n   * @param[in] numStages  number of filter stages.\n   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.\n   * @param[in] pState     points to the state buffer.   The array is of length numStages.\n   */\n  void arm_fir_lattice_init_q31(\n        arm_fir_lattice_instance_q31 * S,\n        uint16_t numStages,\n  const q31_t * pCoeffs,\n        q31_t * pState);\n\n\n  /**\n   * @brief Processing function for the Q31 FIR lattice filter.\n   * @param[in]  S          points to an instance of the Q31 FIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_lattice_q31(\n  const arm_fir_lattice_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n/**\n * @brief Initialization function for the floating-point FIR lattice filter.\n * @param[in] S          points to an instance of the floating-point FIR lattice structure.\n * @param[in] numStages  number of filter stages.\n * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.\n * @param[in] pState     points to the state buffer.  The array is of length numStages.\n */\n  void arm_fir_lattice_init_f32(\n        arm_fir_lattice_instance_f32 * S,\n        uint16_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState);\n\n\n  /**\n   * @brief Processing function for the floating-point FIR lattice filter.\n   * @param[in]  S          points to an instance of the floating-point FIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_lattice_f32(\n  const arm_fir_lattice_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 IIR lattice filter.\n   */\n  typedef struct\n  {\n          uint16_t numStages;                  /**< number of stages in the filter. */\n          q15_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */\n          q15_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */\n          q15_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */\n  } arm_iir_lattice_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 IIR lattice filter.\n   */\n  typedef struct\n  {\n          uint16_t numStages;                  /**< number of stages in the filter. */\n          q31_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */\n          q31_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */\n          q31_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */\n  } arm_iir_lattice_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point IIR lattice filter.\n   */\n  typedef struct\n  {\n          uint16_t numStages;                  /**< number of stages in the filter. */\n          float32_t *pState;                   /**< points to the state variable array. The array is of length numStages+blockSize. */\n          float32_t *pkCoeffs;                 /**< points to the reflection coefficient array. The array is of length numStages. */\n          float32_t *pvCoeffs;                 /**< points to the ladder coefficient array. The array is of length numStages+1. */\n  } arm_iir_lattice_instance_f32;\n\n\n  /**\n   * @brief Processing function for the floating-point IIR lattice filter.\n   * @param[in]  S          points to an instance of the floating-point IIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_f32(\n  const arm_iir_lattice_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for the floating-point IIR lattice filter.\n   * @param[in] S          points to an instance of the floating-point IIR lattice structure.\n   * @param[in] numStages  number of stages in the filter.\n   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.\n   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.\n   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize-1.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_init_f32(\n        arm_iir_lattice_instance_f32 * S,\n        uint16_t numStages,\n        float32_t * pkCoeffs,\n        float32_t * pvCoeffs,\n        float32_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 IIR lattice filter.\n   * @param[in]  S          points to an instance of the Q31 IIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_q31(\n  const arm_iir_lattice_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for the Q31 IIR lattice filter.\n   * @param[in] S          points to an instance of the Q31 IIR lattice structure.\n   * @param[in] numStages  number of stages in the filter.\n   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.\n   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.\n   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_init_q31(\n        arm_iir_lattice_instance_q31 * S,\n        uint16_t numStages,\n        q31_t * pkCoeffs,\n        q31_t * pvCoeffs,\n        q31_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 IIR lattice filter.\n   * @param[in]  S          points to an instance of the Q15 IIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_q15(\n  const arm_iir_lattice_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n/**\n * @brief Initialization function for the Q15 IIR lattice filter.\n * @param[in] S          points to an instance of the fixed-point Q15 IIR lattice structure.\n * @param[in] numStages  number of stages in the filter.\n * @param[in] pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages.\n * @param[in] pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1.\n * @param[in] pState     points to state buffer.  The array is of length numStages+blockSize.\n * @param[in] blockSize  number of samples to process per call.\n */\n  void arm_iir_lattice_init_q15(\n        arm_iir_lattice_instance_q15 * S,\n        uint16_t numStages,\n        q15_t * pkCoeffs,\n        q15_t * pvCoeffs,\n        q15_t * pState,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the floating-point LMS filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;    /**< number of coefficients in the filter. */\n          float32_t *pState;   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n          float32_t *pCoeffs;  /**< points to the coefficient array. The array is of length numTaps. */\n          float32_t mu;        /**< step size that controls filter coefficient updates. */\n  } arm_lms_instance_f32;\n\n\n  /**\n   * @brief Processing function for floating-point LMS filter.\n   * @param[in]  S          points to an instance of the floating-point LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_f32(\n  const arm_lms_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pRef,\n        float32_t * pOut,\n        float32_t * pErr,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for floating-point LMS filter.\n   * @param[in] S          points to an instance of the floating-point LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to the coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_lms_init_f32(\n        arm_lms_instance_f32 * S,\n        uint16_t numTaps,\n        float32_t * pCoeffs,\n        float32_t * pState,\n        float32_t mu,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 LMS filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;    /**< number of coefficients in the filter. */\n          q15_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n          q15_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */\n          q15_t mu;            /**< step size that controls filter coefficient updates. */\n          uint32_t postShift;  /**< bit shift applied to coefficients. */\n  } arm_lms_instance_q15;\n\n\n  /**\n   * @brief Initialization function for the Q15 LMS filter.\n   * @param[in] S          points to an instance of the Q15 LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to the coefficient buffer.\n   * @param[in] pState     points to the state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_init_q15(\n        arm_lms_instance_q15 * S,\n        uint16_t numTaps,\n        q15_t * pCoeffs,\n        q15_t * pState,\n        q15_t mu,\n        uint32_t blockSize,\n        uint32_t postShift);\n\n\n  /**\n   * @brief Processing function for Q15 LMS filter.\n   * @param[in]  S          points to an instance of the Q15 LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_q15(\n  const arm_lms_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pRef,\n        q15_t * pOut,\n        q15_t * pErr,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q31 LMS filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;    /**< number of coefficients in the filter. */\n          q31_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n          q31_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */\n          q31_t mu;            /**< step size that controls filter coefficient updates. */\n          uint32_t postShift;  /**< bit shift applied to coefficients. */\n  } arm_lms_instance_q31;\n\n\n  /**\n   * @brief Processing function for Q31 LMS filter.\n   * @param[in]  S          points to an instance of the Q15 LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_q31(\n  const arm_lms_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pRef,\n        q31_t * pOut,\n        q31_t * pErr,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for Q31 LMS filter.\n   * @param[in] S          points to an instance of the Q31 LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_init_q31(\n        arm_lms_instance_q31 * S,\n        uint16_t numTaps,\n        q31_t * pCoeffs,\n        q31_t * pState,\n        q31_t mu,\n        uint32_t blockSize,\n        uint32_t postShift);\n\n\n  /**\n   * @brief Instance structure for the floating-point normalized LMS filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;     /**< number of coefficients in the filter. */\n          float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n          float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */\n          float32_t mu;         /**< step size that control filter coefficient updates. */\n          float32_t energy;     /**< saves previous frame energy. */\n          float32_t x0;         /**< saves previous input sample. */\n  } arm_lms_norm_instance_f32;\n\n\n  /**\n   * @brief Processing function for floating-point normalized LMS filter.\n   * @param[in]  S          points to an instance of the floating-point normalized LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_norm_f32(\n        arm_lms_norm_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pRef,\n        float32_t * pOut,\n        float32_t * pErr,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for floating-point normalized LMS filter.\n   * @param[in] S          points to an instance of the floating-point LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_lms_norm_init_f32(\n        arm_lms_norm_instance_f32 * S,\n        uint16_t numTaps,\n        float32_t * pCoeffs,\n        float32_t * pState,\n        float32_t mu,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q31 normalized LMS filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;     /**< number of coefficients in the filter. */\n          q31_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n          q31_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */\n          q31_t mu;             /**< step size that controls filter coefficient updates. */\n          uint8_t postShift;    /**< bit shift applied to coefficients. */\n    const q31_t *recipTable;    /**< points to the reciprocal initial value table. */\n          q31_t energy;         /**< saves previous frame energy. */\n          q31_t x0;             /**< saves previous input sample. */\n  } arm_lms_norm_instance_q31;\n\n\n  /**\n   * @brief Processing function for Q31 normalized LMS filter.\n   * @param[in]  S          points to an instance of the Q31 normalized LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_norm_q31(\n        arm_lms_norm_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pRef,\n        q31_t * pOut,\n        q31_t * pErr,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for Q31 normalized LMS filter.\n   * @param[in] S          points to an instance of the Q31 normalized LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_norm_init_q31(\n        arm_lms_norm_instance_q31 * S,\n        uint16_t numTaps,\n        q31_t * pCoeffs,\n        q31_t * pState,\n        q31_t mu,\n        uint32_t blockSize,\n        uint8_t postShift);\n\n\n  /**\n   * @brief Instance structure for the Q15 normalized LMS filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;     /**< Number of coefficients in the filter. */\n          q15_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n          q15_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */\n          q15_t mu;             /**< step size that controls filter coefficient updates. */\n          uint8_t postShift;    /**< bit shift applied to coefficients. */\n    const q15_t *recipTable;    /**< Points to the reciprocal initial value table. */\n          q15_t energy;         /**< saves previous frame energy. */\n          q15_t x0;             /**< saves previous input sample. */\n  } arm_lms_norm_instance_q15;\n\n\n  /**\n   * @brief Processing function for Q15 normalized LMS filter.\n   * @param[in]  S          points to an instance of the Q15 normalized LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_norm_q15(\n        arm_lms_norm_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pRef,\n        q15_t * pOut,\n        q15_t * pErr,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for Q15 normalized LMS filter.\n   * @param[in] S          points to an instance of the Q15 normalized LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_norm_init_q15(\n        arm_lms_norm_instance_q15 * S,\n        uint16_t numTaps,\n        q15_t * pCoeffs,\n        q15_t * pState,\n        q15_t mu,\n        uint32_t blockSize,\n        uint8_t postShift);\n\n\n  /**\n   * @brief Correlation of floating-point sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n  void arm_correlate_f32(\n  const float32_t * pSrcA,\n        uint32_t srcALen,\n  const float32_t * pSrcB,\n        uint32_t srcBLen,\n        float32_t * pDst);\n\n\n/**\n @brief Correlation of Q15 sequences\n @param[in]  pSrcA     points to the first input sequence\n @param[in]  srcALen   length of the first input sequence\n @param[in]  pSrcB     points to the second input sequence\n @param[in]  srcBLen   length of the second input sequence\n @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n*/\nvoid arm_correlate_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch);\n\n\n/**\n  @brief Correlation of Q15 sequences.\n  @param[in]  pSrcA    points to the first input sequence\n  @param[in]  srcALen  length of the first input sequence\n  @param[in]  pSrcB    points to the second input sequence\n  @param[in]  srcBLen  length of the second input sequence\n  @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n */\n  void arm_correlate_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst);\n\n\n/**\n  @brief         Correlation of Q15 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @return        none\n */\nvoid arm_correlate_fast_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst);\n\n\n/**\n  @brief Correlation of Q15 sequences (fast version).\n  @param[in]  pSrcA     points to the first input sequence.\n  @param[in]  srcALen   length of the first input sequence.\n  @param[in]  pSrcB     points to the second input sequence.\n  @param[in]  srcBLen   length of the second input sequence.\n  @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n  @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n */\nvoid arm_correlate_fast_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch);\n\n\n  /**\n   * @brief Correlation of Q31 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n  void arm_correlate_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst);\n\n\n/**\n  @brief Correlation of Q31 sequences (fast version).\n  @param[in]  pSrcA    points to the first input sequence\n  @param[in]  srcALen  length of the first input sequence\n  @param[in]  pSrcB    points to the second input sequence\n  @param[in]  srcBLen  length of the second input sequence\n  @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n */\nvoid arm_correlate_fast_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst);\n\n\n /**\n   * @brief Correlation of Q7 sequences.\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n   */\n  void arm_correlate_opt_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2);\n\n\n  /**\n   * @brief Correlation of Q7 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n  void arm_correlate_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst);\n\n\n  /**\n   * @brief Instance structure for the floating-point sparse FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;             /**< number of coefficients in the filter. */\n          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n          float32_t *pState;            /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    const float32_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\n          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_f32;\n\n  /**\n   * @brief Instance structure for the Q31 sparse FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;             /**< number of coefficients in the filter. */\n          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n          q31_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    const q31_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/\n          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_q31;\n\n  /**\n   * @brief Instance structure for the Q15 sparse FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;             /**< number of coefficients in the filter. */\n          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n          q15_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    const q15_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/\n          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q7 sparse FIR filter.\n   */\n  typedef struct\n  {\n          uint16_t numTaps;             /**< number of coefficients in the filter. */\n          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n          q7_t *pState;                 /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    const q7_t *pCoeffs;                /**< points to the coefficient array. The array is of length numTaps.*/\n          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_q7;\n\n\n  /**\n   * @brief Processing function for the floating-point sparse FIR filter.\n   * @param[in]  S           points to an instance of the floating-point sparse FIR structure.\n   * @param[in]  pSrc        points to the block of input data.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize   number of input samples to process per call.\n   */\n  void arm_fir_sparse_f32(\n        arm_fir_sparse_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        float32_t * pScratchIn,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point sparse FIR filter.\n   * @param[in,out] S          points to an instance of the floating-point sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_f32(\n        arm_fir_sparse_instance_f32 * S,\n        uint16_t numTaps,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 sparse FIR filter.\n   * @param[in]  S           points to an instance of the Q31 sparse FIR structure.\n   * @param[in]  pSrc        points to the block of input data.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize   number of input samples to process per call.\n   */\n  void arm_fir_sparse_q31(\n        arm_fir_sparse_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        q31_t * pScratchIn,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 sparse FIR filter.\n   * @param[in,out] S          points to an instance of the Q31 sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_q31(\n        arm_fir_sparse_instance_q31 * S,\n        uint16_t numTaps,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 sparse FIR filter.\n   * @param[in]  S            points to an instance of the Q15 sparse FIR structure.\n   * @param[in]  pSrc         points to the block of input data.\n   * @param[out] pDst         points to the block of output data\n   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.\n   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize    number of input samples to process per call.\n   */\n  void arm_fir_sparse_q15(\n        arm_fir_sparse_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        q15_t * pScratchIn,\n        q31_t * pScratchOut,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 sparse FIR filter.\n   * @param[in,out] S          points to an instance of the Q15 sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_q15(\n        arm_fir_sparse_instance_q15 * S,\n        uint16_t numTaps,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q7 sparse FIR filter.\n   * @param[in]  S            points to an instance of the Q7 sparse FIR structure.\n   * @param[in]  pSrc         points to the block of input data.\n   * @param[out] pDst         points to the block of output data\n   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.\n   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize    number of input samples to process per call.\n   */\n  void arm_fir_sparse_q7(\n        arm_fir_sparse_instance_q7 * S,\n  const q7_t * pSrc,\n        q7_t * pDst,\n        q7_t * pScratchIn,\n        q31_t * pScratchOut,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q7 sparse FIR filter.\n   * @param[in,out] S          points to an instance of the Q7 sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_q7(\n        arm_fir_sparse_instance_q7 * S,\n        uint16_t numTaps,\n  const q7_t * pCoeffs,\n        q7_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Floating-point sin_cos function.\n   * @param[in]  theta   input value in degrees\n   * @param[out] pSinVal  points to the processed sine output.\n   * @param[out] pCosVal  points to the processed cos output.\n   */\n  void arm_sin_cos_f32(\n        float32_t theta,\n        float32_t * pSinVal,\n        float32_t * pCosVal);\n\n\n  /**\n   * @brief  Q31 sin_cos function.\n   * @param[in]  theta    scaled input value in degrees\n   * @param[out] pSinVal  points to the processed sine output.\n   * @param[out] pCosVal  points to the processed cosine output.\n   */\n  void arm_sin_cos_q31(\n        q31_t theta,\n        q31_t * pSinVal,\n        q31_t * pCosVal);\n\n\n  /**\n   * @brief  Floating-point complex conjugate.\n   * @param[in]  pSrc        points to the input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_conj_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t numSamples);\n\n  /**\n   * @brief  Q31 complex conjugate.\n   * @param[in]  pSrc        points to the input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_conj_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex conjugate.\n   * @param[in]  pSrc        points to the input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_conj_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Floating-point complex magnitude squared\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_squared_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex magnitude squared\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_squared_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex magnitude squared\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_squared_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t numSamples);\n\n\n /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup PID PID Motor Control\n   *\n   * A Proportional Integral Derivative (PID) controller is a generic feedback control\n   * loop mechanism widely used in industrial control systems.\n   * A PID controller is the most commonly used type of feedback controller.\n   *\n   * This set of functions implements (PID) controllers\n   * for Q15, Q31, and floating-point data types.  The functions operate on a single sample\n   * of data and each call to the function returns a single processed value.\n   * <code>S</code> points to an instance of the PID control data structure.  <code>in</code>\n   * is the input sample value. The functions return the output value.\n   *\n   * \\par Algorithm:\n   * <pre>\n   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]\n   *    A0 = Kp + Ki + Kd\n   *    A1 = (-Kp ) - (2 * Kd )\n   *    A2 = Kd\n   * </pre>\n   *\n   * \\par\n   * where \\c Kp is proportional constant, \\c Ki is Integral constant and \\c Kd is Derivative constant\n   *\n   * \\par\n   * \\image html PID.gif \"Proportional Integral Derivative Controller\"\n   *\n   * \\par\n   * The PID controller calculates an \"error\" value as the difference between\n   * the measured output and the reference input.\n   * The controller attempts to minimize the error by adjusting the process control inputs.\n   * The proportional value determines the reaction to the current error,\n   * the integral value determines the reaction based on the sum of recent errors,\n   * and the derivative value determines the reaction based on the rate at which the error has been changing.\n   *\n   * \\par Instance Structure\n   * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure.\n   * A separate instance structure must be defined for each PID Controller.\n   * There are separate instance structure declarations for each of the 3 supported data types.\n   *\n   * \\par Reset Functions\n   * There is also an associated reset function for each data type which clears the state array.\n   *\n   * \\par Initialization Functions\n   * There is also an associated initialization function for each data type.\n   * The initialization function performs the following operations:\n   * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains.\n   * - Zeros out the values in the state buffer.\n   *\n   * \\par\n   * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.\n   *\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the fixed-point versions of the PID Controller functions.\n   * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup PID\n   * @{\n   */\n\n  /**\n   * @brief         Process function for the floating-point PID Control.\n   * @param[in,out] S   is an instance of the floating-point PID Control structure\n   * @param[in]     in  input sample to process\n   * @return        processed output sample.\n   */\n  __STATIC_FORCEINLINE float32_t arm_pid_f32(\n  arm_pid_instance_f32 * S,\n  float32_t in)\n  {\n    float32_t out;\n\n    /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]  */\n    out = (S->A0 * in) +\n      (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]);\n\n    /* Update state */\n    S->state[1] = S->state[0];\n    S->state[0] = in;\n    S->state[2] = out;\n\n    /* return to application */\n    return (out);\n\n  }\n\n/**\n  @brief         Process function for the Q31 PID Control.\n  @param[in,out] S  points to an instance of the Q31 PID Control structure\n  @param[in]     in  input sample to process\n  @return        processed output sample.\n\n  \\par Scaling and Overflow Behavior\n         The function is implemented using an internal 64-bit accumulator.\n         The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n         Thus, if the accumulator result overflows it wraps around rather than clip.\n         In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions.\n         After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.\n */\n__STATIC_FORCEINLINE q31_t arm_pid_q31(\n  arm_pid_instance_q31 * S,\n  q31_t in)\n  {\n    q63_t acc;\n    q31_t out;\n\n    /* acc = A0 * x[n]  */\n    acc = (q63_t) S->A0 * in;\n\n    /* acc += A1 * x[n-1] */\n    acc += (q63_t) S->A1 * S->state[0];\n\n    /* acc += A2 * x[n-2]  */\n    acc += (q63_t) S->A2 * S->state[1];\n\n    /* convert output to 1.31 format to add y[n-1] */\n    out = (q31_t) (acc >> 31U);\n\n    /* out += y[n-1] */\n    out += S->state[2];\n\n    /* Update state */\n    S->state[1] = S->state[0];\n    S->state[0] = in;\n    S->state[2] = out;\n\n    /* return to application */\n    return (out);\n  }\n\n\n/**\n  @brief         Process function for the Q15 PID Control.\n  @param[in,out] S   points to an instance of the Q15 PID Control structure\n  @param[in]     in  input sample to process\n  @return        processed output sample.\n\n  \\par Scaling and Overflow Behavior\n         The function is implemented using a 64-bit internal accumulator.\n         Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n         The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n         There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n         After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\n         Lastly, the accumulator is saturated to yield a result in 1.15 format.\n */\n__STATIC_FORCEINLINE q15_t arm_pid_q15(\n  arm_pid_instance_q15 * S,\n  q15_t in)\n  {\n    q63_t acc;\n    q15_t out;\n\n#if defined (ARM_MATH_DSP)\n    /* Implementation of PID controller */\n\n    /* acc = A0 * x[n]  */\n    acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in);\n\n    /* acc += A1 * x[n-1] + A2 * x[n-2]  */\n    acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)read_q15x2 (S->state), (uint64_t)acc);\n#else\n    /* acc = A0 * x[n]  */\n    acc = ((q31_t) S->A0) * in;\n\n    /* acc += A1 * x[n-1] + A2 * x[n-2]  */\n    acc += (q31_t) S->A1 * S->state[0];\n    acc += (q31_t) S->A2 * S->state[1];\n#endif\n\n    /* acc += y[n-1] */\n    acc += (q31_t) S->state[2] << 15;\n\n    /* saturate the output */\n    out = (q15_t) (__SSAT((acc >> 15), 16));\n\n    /* Update state */\n    S->state[1] = S->state[0];\n    S->state[0] = in;\n    S->state[2] = out;\n\n    /* return to application */\n    return (out);\n  }\n\n  /**\n   * @} end of PID group\n   */\n\n\n  /**\n   * @brief Floating-point matrix inverse.\n   * @param[in]  src   points to the instance of the input floating-point matrix structure.\n   * @param[out] dst   points to the instance of the output floating-point matrix structure.\n   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.\n   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.\n   */\n  arm_status arm_mat_inverse_f32(\n  const arm_matrix_instance_f32 * src,\n  arm_matrix_instance_f32 * dst);\n\n\n  /**\n   * @brief Floating-point matrix inverse.\n   * @param[in]  src   points to the instance of the input floating-point matrix structure.\n   * @param[out] dst   points to the instance of the output floating-point matrix structure.\n   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.\n   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.\n   */\n  arm_status arm_mat_inverse_f64(\n  const arm_matrix_instance_f64 * src,\n  arm_matrix_instance_f64 * dst);\n\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup clarke Vector Clarke Transform\n   * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.\n   * Generally the Clarke transform uses three-phase currents <code>Ia, Ib and Ic</code> to calculate currents\n   * in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>.\n   * When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below\n   * \\image html clarke.gif Stator current space vector and its components in (a,b).\n   * and <code>Ia + Ib + Ic = 0</code>, in this condition <code>Ialpha</code> and <code>Ibeta</code>\n   * can be calculated using only <code>Ia</code> and <code>Ib</code>.\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html clarkeFormula.gif\n   * where <code>Ia</code> and <code>Ib</code> are the instantaneous stator phases and\n   * <code>pIalpha</code> and <code>pIbeta</code> are the two coordinates of time invariant vector.\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Clarke transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup clarke\n   * @{\n   */\n\n  /**\n   *\n   * @brief  Floating-point Clarke transform\n   * @param[in]  Ia       input three-phase coordinate <code>a</code>\n   * @param[in]  Ib       input three-phase coordinate <code>b</code>\n   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n   * @return        none\n   */\n  __STATIC_FORCEINLINE void arm_clarke_f32(\n  float32_t Ia,\n  float32_t Ib,\n  float32_t * pIalpha,\n  float32_t * pIbeta)\n  {\n    /* Calculate pIalpha using the equation, pIalpha = Ia */\n    *pIalpha = Ia;\n\n    /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */\n    *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);\n  }\n\n\n/**\n  @brief  Clarke transform for Q31 version\n  @param[in]  Ia       input three-phase coordinate <code>a</code>\n  @param[in]  Ib       input three-phase coordinate <code>b</code>\n  @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n  @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n  @return     none\n\n  \\par Scaling and Overflow Behavior\n         The function is implemented using an internal 32-bit accumulator.\n         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n         There is saturation on the addition, hence there is no risk of overflow.\n */\n__STATIC_FORCEINLINE void arm_clarke_q31(\n  q31_t Ia,\n  q31_t Ib,\n  q31_t * pIalpha,\n  q31_t * pIbeta)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n\n    /* Calculating pIalpha from Ia by equation pIalpha = Ia */\n    *pIalpha = Ia;\n\n    /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */\n    product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);\n\n    /* Intermediate product is calculated by (2/sqrt(3) * Ib) */\n    product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);\n\n    /* pIbeta is calculated by adding the intermediate products */\n    *pIbeta = __QADD(product1, product2);\n  }\n\n  /**\n   * @} end of clarke group\n   */\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup inv_clarke Vector Inverse Clarke Transform\n   * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html clarkeInvFormula.gif\n   * where <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and\n   * <code>Ialpha</code> and <code>Ibeta</code> are the two coordinates of time invariant vector.\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Clarke transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup inv_clarke\n   * @{\n   */\n\n   /**\n   * @brief  Floating-point Inverse Clarke transform\n   * @param[in]  Ialpha  input two-phase orthogonal vector axis alpha\n   * @param[in]  Ibeta   input two-phase orthogonal vector axis beta\n   * @param[out] pIa     points to output three-phase coordinate <code>a</code>\n   * @param[out] pIb     points to output three-phase coordinate <code>b</code>\n   * @return     none\n   */\n  __STATIC_FORCEINLINE void arm_inv_clarke_f32(\n  float32_t Ialpha,\n  float32_t Ibeta,\n  float32_t * pIa,\n  float32_t * pIb)\n  {\n    /* Calculating pIa from Ialpha by equation pIa = Ialpha */\n    *pIa = Ialpha;\n\n    /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */\n    *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;\n  }\n\n\n/**\n  @brief  Inverse Clarke transform for Q31 version\n  @param[in]  Ialpha  input two-phase orthogonal vector axis alpha\n  @param[in]  Ibeta   input two-phase orthogonal vector axis beta\n  @param[out] pIa     points to output three-phase coordinate <code>a</code>\n  @param[out] pIb     points to output three-phase coordinate <code>b</code>\n  @return     none\n\n  \\par Scaling and Overflow Behavior\n         The function is implemented using an internal 32-bit accumulator.\n         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n         There is saturation on the subtraction, hence there is no risk of overflow.\n */\n__STATIC_FORCEINLINE void arm_inv_clarke_q31(\n  q31_t Ialpha,\n  q31_t Ibeta,\n  q31_t * pIa,\n  q31_t * pIb)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n\n    /* Calculating pIa from Ialpha by equation pIa = Ialpha */\n    *pIa = Ialpha;\n\n    /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */\n    product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);\n\n    /* Intermediate product is calculated by (1/sqrt(3) * pIb) */\n    product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);\n\n    /* pIb is calculated by subtracting the products */\n    *pIb = __QSUB(product2, product1);\n  }\n\n  /**\n   * @} end of inv_clarke group\n   */\n\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup park Vector Park Transform\n   *\n   * Forward Park transform converts the input two-coordinate vector to flux and torque components.\n   * The Park transform can be used to realize the transformation of the <code>Ialpha</code> and the <code>Ibeta</code> currents\n   * from the stationary to the moving reference frame and control the spatial relationship between\n   * the stator vector current and rotor flux vector.\n   * If we consider the d axis aligned with the rotor flux, the diagram below shows the\n   * current vector and the relationship from the two reference frames:\n   * \\image html park.gif \"Stator current space vector and its component in (a,b) and in the d,q rotating reference frame\"\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html parkFormula.gif\n   * where <code>Ialpha</code> and <code>Ibeta</code> are the stator vector components,\n   * <code>pId</code> and <code>pIq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the\n   * cosine and sine values of theta (rotor flux position).\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Park transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup park\n   * @{\n   */\n\n  /**\n   * @brief Floating-point Park transform\n   * @param[in]  Ialpha  input two-phase vector coordinate alpha\n   * @param[in]  Ibeta   input two-phase vector coordinate beta\n   * @param[out] pId     points to output   rotor reference frame d\n   * @param[out] pIq     points to output   rotor reference frame q\n   * @param[in]  sinVal  sine value of rotation angle theta\n   * @param[in]  cosVal  cosine value of rotation angle theta\n   * @return     none\n   *\n   * The function implements the forward Park transform.\n   *\n   */\n  __STATIC_FORCEINLINE void arm_park_f32(\n  float32_t Ialpha,\n  float32_t Ibeta,\n  float32_t * pId,\n  float32_t * pIq,\n  float32_t sinVal,\n  float32_t cosVal)\n  {\n    /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */\n    *pId = Ialpha * cosVal + Ibeta * sinVal;\n\n    /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */\n    *pIq = -Ialpha * sinVal + Ibeta * cosVal;\n  }\n\n\n/**\n  @brief  Park transform for Q31 version\n  @param[in]  Ialpha  input two-phase vector coordinate alpha\n  @param[in]  Ibeta   input two-phase vector coordinate beta\n  @param[out] pId     points to output rotor reference frame d\n  @param[out] pIq     points to output rotor reference frame q\n  @param[in]  sinVal  sine value of rotation angle theta\n  @param[in]  cosVal  cosine value of rotation angle theta\n  @return     none\n\n  \\par Scaling and Overflow Behavior\n         The function is implemented using an internal 32-bit accumulator.\n         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n         There is saturation on the addition and subtraction, hence there is no risk of overflow.\n */\n__STATIC_FORCEINLINE void arm_park_q31(\n  q31_t Ialpha,\n  q31_t Ibeta,\n  q31_t * pId,\n  q31_t * pIq,\n  q31_t sinVal,\n  q31_t cosVal)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */\n\n    /* Intermediate product is calculated by (Ialpha * cosVal) */\n    product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);\n\n    /* Intermediate product is calculated by (Ibeta * sinVal) */\n    product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);\n\n\n    /* Intermediate product is calculated by (Ialpha * sinVal) */\n    product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);\n\n    /* Intermediate product is calculated by (Ibeta * cosVal) */\n    product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);\n\n    /* Calculate pId by adding the two intermediate products 1 and 2 */\n    *pId = __QADD(product1, product2);\n\n    /* Calculate pIq by subtracting the two intermediate products 3 from 4 */\n    *pIq = __QSUB(product4, product3);\n  }\n\n  /**\n   * @} end of park group\n   */\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup inv_park Vector Inverse Park transform\n   * Inverse Park transform converts the input flux and torque components to two-coordinate vector.\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html parkInvFormula.gif\n   * where <code>pIalpha</code> and <code>pIbeta</code> are the stator vector components,\n   * <code>Id</code> and <code>Iq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the\n   * cosine and sine values of theta (rotor flux position).\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Park transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup inv_park\n   * @{\n   */\n\n   /**\n   * @brief  Floating-point Inverse Park transform\n   * @param[in]  Id       input coordinate of rotor reference frame d\n   * @param[in]  Iq       input coordinate of rotor reference frame q\n   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n   * @param[in]  sinVal   sine value of rotation angle theta\n   * @param[in]  cosVal   cosine value of rotation angle theta\n   * @return     none\n   */\n  __STATIC_FORCEINLINE void arm_inv_park_f32(\n  float32_t Id,\n  float32_t Iq,\n  float32_t * pIalpha,\n  float32_t * pIbeta,\n  float32_t sinVal,\n  float32_t cosVal)\n  {\n    /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */\n    *pIalpha = Id * cosVal - Iq * sinVal;\n\n    /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */\n    *pIbeta = Id * sinVal + Iq * cosVal;\n  }\n\n\n/**\n  @brief  Inverse Park transform for   Q31 version\n  @param[in]  Id       input coordinate of rotor reference frame d\n  @param[in]  Iq       input coordinate of rotor reference frame q\n  @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n  @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n  @param[in]  sinVal   sine value of rotation angle theta\n  @param[in]  cosVal   cosine value of rotation angle theta\n  @return     none\n\n  @par Scaling and Overflow Behavior\n         The function is implemented using an internal 32-bit accumulator.\n         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n         There is saturation on the addition, hence there is no risk of overflow.\n */\n__STATIC_FORCEINLINE void arm_inv_park_q31(\n  q31_t Id,\n  q31_t Iq,\n  q31_t * pIalpha,\n  q31_t * pIbeta,\n  q31_t sinVal,\n  q31_t cosVal)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */\n\n    /* Intermediate product is calculated by (Id * cosVal) */\n    product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31);\n\n    /* Intermediate product is calculated by (Iq * sinVal) */\n    product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);\n\n\n    /* Intermediate product is calculated by (Id * sinVal) */\n    product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31);\n\n    /* Intermediate product is calculated by (Iq * cosVal) */\n    product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);\n\n    /* Calculate pIalpha by using the two intermediate products 1 and 2 */\n    *pIalpha = __QSUB(product1, product2);\n\n    /* Calculate pIbeta by using the two intermediate products 3 and 4 */\n    *pIbeta = __QADD(product4, product3);\n  }\n\n  /**\n   * @} end of Inverse park group\n   */\n\n\n  /**\n   * @ingroup groupInterpolation\n   */\n\n  /**\n   * @defgroup LinearInterpolate Linear Interpolation\n   *\n   * Linear interpolation is a method of curve fitting using linear polynomials.\n   * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line\n   *\n   * \\par\n   * \\image html LinearInterp.gif \"Linear interpolation\"\n   *\n   * \\par\n   * A  Linear Interpolate function calculates an output value(y), for the input(x)\n   * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)\n   *\n   * \\par Algorithm:\n   * <pre>\n   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))\n   *       where x0, x1 are nearest values of input x\n   *             y0, y1 are nearest values to output y\n   * </pre>\n   *\n   * \\par\n   * This set of functions implements Linear interpolation process\n   * for Q7, Q15, Q31, and floating-point data types.  The functions operate on a single\n   * sample of data and each call to the function returns a single processed value.\n   * <code>S</code> points to an instance of the Linear Interpolate function data structure.\n   * <code>x</code> is the input sample value. The functions returns the output value.\n   *\n   * \\par\n   * if x is outside of the table boundary, Linear interpolation returns first value of the table\n   * if x is below input range and returns last value of table if x is above range.\n   */\n\n  /**\n   * @addtogroup LinearInterpolate\n   * @{\n   */\n\n  /**\n   * @brief  Process function for the floating-point Linear Interpolation Function.\n   * @param[in,out] S  is an instance of the floating-point Linear Interpolation structure\n   * @param[in]     x  input sample to process\n   * @return y processed output sample.\n   *\n   */\n  __STATIC_FORCEINLINE float32_t arm_linear_interp_f32(\n  arm_linear_interp_instance_f32 * S,\n  float32_t x)\n  {\n    float32_t y;\n    float32_t x0, x1;                            /* Nearest input values */\n    float32_t y0, y1;                            /* Nearest output values */\n    float32_t xSpacing = S->xSpacing;            /* spacing between input values */\n    int32_t i;                                   /* Index variable */\n    float32_t *pYData = S->pYData;               /* pointer to output table */\n\n    /* Calculation of index */\n    i = (int32_t) ((x - S->x1) / xSpacing);\n\n    if (i < 0)\n    {\n      /* Iniatilize output for below specified range as least output value of table */\n      y = pYData[0];\n    }\n    else if ((uint32_t)i >= S->nValues)\n    {\n      /* Iniatilize output for above specified range as last output value of table */\n      y = pYData[S->nValues - 1];\n    }\n    else\n    {\n      /* Calculation of nearest input values */\n      x0 = S->x1 +  i      * xSpacing;\n      x1 = S->x1 + (i + 1) * xSpacing;\n\n      /* Read of nearest output values */\n      y0 = pYData[i];\n      y1 = pYData[i + 1];\n\n      /* Calculation of output */\n      y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));\n\n    }\n\n    /* returns output value */\n    return (y);\n  }\n\n\n   /**\n   *\n   * @brief  Process function for the Q31 Linear Interpolation Function.\n   * @param[in] pYData   pointer to Q31 Linear Interpolation table\n   * @param[in] x        input sample to process\n   * @param[in] nValues  number of table values\n   * @return y processed output sample.\n   *\n   * \\par\n   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\n   * This function can support maximum of table size 2^12.\n   *\n   */\n  __STATIC_FORCEINLINE q31_t arm_linear_interp_q31(\n  q31_t * pYData,\n  q31_t x,\n  uint32_t nValues)\n  {\n    q31_t y;                                     /* output */\n    q31_t y0, y1;                                /* Nearest output values */\n    q31_t fract;                                 /* fractional part */\n    int32_t index;                               /* Index to read nearest output values */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    index = ((x & (q31_t)0xFFF00000) >> 20);\n\n    if (index >= (int32_t)(nValues - 1))\n    {\n      return (pYData[nValues - 1]);\n    }\n    else if (index < 0)\n    {\n      return (pYData[0]);\n    }\n    else\n    {\n      /* 20 bits for the fractional part */\n      /* shift left by 11 to keep fract in 1.31 format */\n      fract = (x & 0x000FFFFF) << 11;\n\n      /* Read two nearest output values from the index in 1.31(q31) format */\n      y0 = pYData[index];\n      y1 = pYData[index + 1];\n\n      /* Calculation of y0 * (1-fract) and y is in 2.30 format */\n      y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));\n\n      /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */\n      y += ((q31_t) (((q63_t) y1 * fract) >> 32));\n\n      /* Convert y to 1.31 format */\n      return (y << 1U);\n    }\n  }\n\n\n  /**\n   *\n   * @brief  Process function for the Q15 Linear Interpolation Function.\n   * @param[in] pYData   pointer to Q15 Linear Interpolation table\n   * @param[in] x        input sample to process\n   * @param[in] nValues  number of table values\n   * @return y processed output sample.\n   *\n   * \\par\n   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\n   * This function can support maximum of table size 2^12.\n   *\n   */\n  __STATIC_FORCEINLINE q15_t arm_linear_interp_q15(\n  q15_t * pYData,\n  q31_t x,\n  uint32_t nValues)\n  {\n    q63_t y;                                     /* output */\n    q15_t y0, y1;                                /* Nearest output values */\n    q31_t fract;                                 /* fractional part */\n    int32_t index;                               /* Index to read nearest output values */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    index = ((x & (int32_t)0xFFF00000) >> 20);\n\n    if (index >= (int32_t)(nValues - 1))\n    {\n      return (pYData[nValues - 1]);\n    }\n    else if (index < 0)\n    {\n      return (pYData[0]);\n    }\n    else\n    {\n      /* 20 bits for the fractional part */\n      /* fract is in 12.20 format */\n      fract = (x & 0x000FFFFF);\n\n      /* Read two nearest output values from the index */\n      y0 = pYData[index];\n      y1 = pYData[index + 1];\n\n      /* Calculation of y0 * (1-fract) and y is in 13.35 format */\n      y = ((q63_t) y0 * (0xFFFFF - fract));\n\n      /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */\n      y += ((q63_t) y1 * (fract));\n\n      /* convert y to 1.15 format */\n      return (q15_t) (y >> 20);\n    }\n  }\n\n\n  /**\n   *\n   * @brief  Process function for the Q7 Linear Interpolation Function.\n   * @param[in] pYData   pointer to Q7 Linear Interpolation table\n   * @param[in] x        input sample to process\n   * @param[in] nValues  number of table values\n   * @return y processed output sample.\n   *\n   * \\par\n   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\n   * This function can support maximum of table size 2^12.\n   */\n  __STATIC_FORCEINLINE q7_t arm_linear_interp_q7(\n  q7_t * pYData,\n  q31_t x,\n  uint32_t nValues)\n  {\n    q31_t y;                                     /* output */\n    q7_t y0, y1;                                 /* Nearest output values */\n    q31_t fract;                                 /* fractional part */\n    uint32_t index;                              /* Index to read nearest output values */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    if (x < 0)\n    {\n      return (pYData[0]);\n    }\n    index = (x >> 20) & 0xfff;\n\n    if (index >= (nValues - 1))\n    {\n      return (pYData[nValues - 1]);\n    }\n    else\n    {\n      /* 20 bits for the fractional part */\n      /* fract is in 12.20 format */\n      fract = (x & 0x000FFFFF);\n\n      /* Read two nearest output values from the index and are in 1.7(q7) format */\n      y0 = pYData[index];\n      y1 = pYData[index + 1];\n\n      /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */\n      y = ((y0 * (0xFFFFF - fract)));\n\n      /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */\n      y += (y1 * fract);\n\n      /* convert y to 1.7(q7) format */\n      return (q7_t) (y >> 20);\n     }\n  }\n\n  /**\n   * @} end of LinearInterpolate group\n   */\n\n  /**\n   * @brief  Fast approximation to the trigonometric sine function for floating-point data.\n   * @param[in] x  input value in radians.\n   * @return  sin(x).\n   */\n  float32_t arm_sin_f32(\n  float32_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric sine function for Q31 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  sin(x).\n   */\n  q31_t arm_sin_q31(\n  q31_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric sine function for Q15 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  sin(x).\n   */\n  q15_t arm_sin_q15(\n  q15_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric cosine function for floating-point data.\n   * @param[in] x  input value in radians.\n   * @return  cos(x).\n   */\n  float32_t arm_cos_f32(\n  float32_t x);\n\n\n  /**\n   * @brief Fast approximation to the trigonometric cosine function for Q31 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  cos(x).\n   */\n  q31_t arm_cos_q31(\n  q31_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric cosine function for Q15 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  cos(x).\n   */\n  q15_t arm_cos_q15(\n  q15_t x);\n\n\n  /**\n   * @ingroup groupFastMath\n   */\n\n\n  /**\n   * @defgroup SQRT Square Root\n   *\n   * Computes the square root of a number.\n   * There are separate functions for Q15, Q31, and floating-point data types.\n   * The square root function is computed using the Newton-Raphson algorithm.\n   * This is an iterative algorithm of the form:\n   * <pre>\n   *      x1 = x0 - f(x0)/f'(x0)\n   * </pre>\n   * where <code>x1</code> is the current estimate,\n   * <code>x0</code> is the previous estimate, and\n   * <code>f'(x0)</code> is the derivative of <code>f()</code> evaluated at <code>x0</code>.\n   * For the square root function, the algorithm reduces to:\n   * <pre>\n   *     x0 = in/2                         [initial guess]\n   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]\n   * </pre>\n   */\n\n\n  /**\n   * @addtogroup SQRT\n   * @{\n   */\n\n/**\n  @brief         Floating-point square root function.\n  @param[in]     in    input value\n  @param[out]    pOut  square root of input value\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : input value is positive\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0\n */\n__STATIC_FORCEINLINE arm_status arm_sqrt_f32(\n  float32_t in,\n  float32_t * pOut)\n  {\n    if (in >= 0.0f)\n    {\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n      *pOut = __sqrtf(in);\n  #else\n      *pOut = sqrtf(in);\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n      __ASM(\"VSQRT.F32 %0,%1\" : \"=t\"(*pOut) : \"t\"(in));\n  #else\n      *pOut = sqrtf(in);\n  #endif\n\n#else\n      *pOut = sqrtf(in);\n#endif\n\n      return (ARM_MATH_SUCCESS);\n    }\n    else\n    {\n      *pOut = 0.0f;\n      return (ARM_MATH_ARGUMENT_ERROR);\n    }\n  }\n\n\n/**\n  @brief         Q31 square root function.\n  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF\n  @param[out]    pOut  points to square root of input value\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : input value is positive\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0\n */\narm_status arm_sqrt_q31(\n  q31_t in,\n  q31_t * pOut);\n\n\n/**\n  @brief         Q15 square root function.\n  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF\n  @param[out]    pOut  points to square root of input value\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : input value is positive\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0\n */\narm_status arm_sqrt_q15(\n  q15_t in,\n  q15_t * pOut);\n\n  /**\n   * @brief  Vector Floating-point square root function.\n   * @param[in]  pIn   input vector.\n   * @param[out] pOut  vector of square roots of input elements.\n   * @param[in]  len   length of input vector.\n   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if\n   * <code>in</code> is negative value and returns zero output for negative values.\n   */\n  void arm_vsqrt_f32(\n  float32_t * pIn,\n  float32_t * pOut,\n  uint16_t len);\n\n  void arm_vsqrt_q31(\n  q31_t * pIn,\n  q31_t * pOut,\n  uint16_t len);\n\n  void arm_vsqrt_q15(\n  q15_t * pIn,\n  q15_t * pOut,\n  uint16_t len);\n\n  /**\n   * @} end of SQRT group\n   */\n\n\n  /**\n   * @brief floating-point Circular write function.\n   */\n  __STATIC_FORCEINLINE void arm_circularWrite_f32(\n  int32_t * circBuffer,\n  int32_t L,\n  uint16_t * writeOffset,\n  int32_t bufferInc,\n  const int32_t * src,\n  int32_t srcInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t wOffset;\n\n    /* Copy the value of Index pointer that points\n     * to the current location where the input samples to be copied */\n    wOffset = *writeOffset;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the input sample to the circular buffer */\n      circBuffer[wOffset] = *src;\n\n      /* Update the input pointer */\n      src += srcInc;\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      wOffset += bufferInc;\n      if (wOffset >= L)\n        wOffset -= L;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *writeOffset = (uint16_t)wOffset;\n  }\n\n\n\n  /**\n   * @brief floating-point Circular Read function.\n   */\n  __STATIC_FORCEINLINE void arm_circularRead_f32(\n  int32_t * circBuffer,\n  int32_t L,\n  int32_t * readOffset,\n  int32_t bufferInc,\n  int32_t * dst,\n  int32_t * dst_base,\n  int32_t dst_length,\n  int32_t dstInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t rOffset;\n    int32_t* dst_end;\n\n    /* Copy the value of Index pointer that points\n     * to the current location from where the input samples to be read */\n    rOffset = *readOffset;\n    dst_end = dst_base + dst_length;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the sample from the circular buffer to the destination buffer */\n      *dst = circBuffer[rOffset];\n\n      /* Update the input pointer */\n      dst += dstInc;\n\n      if (dst == dst_end)\n      {\n        dst = dst_base;\n      }\n\n      /* Circularly update rOffset.  Watch out for positive and negative value  */\n      rOffset += bufferInc;\n\n      if (rOffset >= L)\n      {\n        rOffset -= L;\n      }\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *readOffset = rOffset;\n  }\n\n\n  /**\n   * @brief Q15 Circular write function.\n   */\n  __STATIC_FORCEINLINE void arm_circularWrite_q15(\n  q15_t * circBuffer,\n  int32_t L,\n  uint16_t * writeOffset,\n  int32_t bufferInc,\n  const q15_t * src,\n  int32_t srcInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t wOffset;\n\n    /* Copy the value of Index pointer that points\n     * to the current location where the input samples to be copied */\n    wOffset = *writeOffset;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the input sample to the circular buffer */\n      circBuffer[wOffset] = *src;\n\n      /* Update the input pointer */\n      src += srcInc;\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      wOffset += bufferInc;\n      if (wOffset >= L)\n        wOffset -= L;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *writeOffset = (uint16_t)wOffset;\n  }\n\n\n  /**\n   * @brief Q15 Circular Read function.\n   */\n  __STATIC_FORCEINLINE void arm_circularRead_q15(\n  q15_t * circBuffer,\n  int32_t L,\n  int32_t * readOffset,\n  int32_t bufferInc,\n  q15_t * dst,\n  q15_t * dst_base,\n  int32_t dst_length,\n  int32_t dstInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0;\n    int32_t rOffset;\n    q15_t* dst_end;\n\n    /* Copy the value of Index pointer that points\n     * to the current location from where the input samples to be read */\n    rOffset = *readOffset;\n\n    dst_end = dst_base + dst_length;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the sample from the circular buffer to the destination buffer */\n      *dst = circBuffer[rOffset];\n\n      /* Update the input pointer */\n      dst += dstInc;\n\n      if (dst == dst_end)\n      {\n        dst = dst_base;\n      }\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      rOffset += bufferInc;\n\n      if (rOffset >= L)\n      {\n        rOffset -= L;\n      }\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *readOffset = rOffset;\n  }\n\n\n  /**\n   * @brief Q7 Circular write function.\n   */\n  __STATIC_FORCEINLINE void arm_circularWrite_q7(\n  q7_t * circBuffer,\n  int32_t L,\n  uint16_t * writeOffset,\n  int32_t bufferInc,\n  const q7_t * src,\n  int32_t srcInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t wOffset;\n\n    /* Copy the value of Index pointer that points\n     * to the current location where the input samples to be copied */\n    wOffset = *writeOffset;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the input sample to the circular buffer */\n      circBuffer[wOffset] = *src;\n\n      /* Update the input pointer */\n      src += srcInc;\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      wOffset += bufferInc;\n      if (wOffset >= L)\n        wOffset -= L;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *writeOffset = (uint16_t)wOffset;\n  }\n\n\n  /**\n   * @brief Q7 Circular Read function.\n   */\n  __STATIC_FORCEINLINE void arm_circularRead_q7(\n  q7_t * circBuffer,\n  int32_t L,\n  int32_t * readOffset,\n  int32_t bufferInc,\n  q7_t * dst,\n  q7_t * dst_base,\n  int32_t dst_length,\n  int32_t dstInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0;\n    int32_t rOffset;\n    q7_t* dst_end;\n\n    /* Copy the value of Index pointer that points\n     * to the current location from where the input samples to be read */\n    rOffset = *readOffset;\n\n    dst_end = dst_base + dst_length;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the sample from the circular buffer to the destination buffer */\n      *dst = circBuffer[rOffset];\n\n      /* Update the input pointer */\n      dst += dstInc;\n\n      if (dst == dst_end)\n      {\n        dst = dst_base;\n      }\n\n      /* Circularly update rOffset.  Watch out for positive and negative value */\n      rOffset += bufferInc;\n\n      if (rOffset >= L)\n      {\n        rOffset -= L;\n      }\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *readOffset = rOffset;\n  }\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q63_t * pResult);\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult);\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q63_t * pResult);\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q7_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult);\n\n\n  /**\n   * @brief  Variance of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_var_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult);\n\n\n  /**\n   * @brief  Variance of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_var_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult);\n\n\n  /**\n   * @brief  Variance of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_var_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult);\n\n\n  /**\n   * @brief  Root Mean Square of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_rms_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult);\n\n\n  /**\n   * @brief  Root Mean Square of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_rms_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult);\n\n\n  /**\n   * @brief  Root Mean Square of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_rms_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult);\n\n\n  /**\n   * @brief  Standard deviation of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_std_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult);\n\n\n  /**\n   * @brief  Standard deviation of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_std_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult);\n\n\n  /**\n   * @brief  Standard deviation of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_std_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult);\n\n\n  /**\n   * @brief  Floating-point complex magnitude\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex magnitude\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex magnitude\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex dot product\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   * @param[out] realResult  real part of the result returned here\n   * @param[out] imagResult  imaginary part of the result returned here\n   */\n  void arm_cmplx_dot_prod_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        uint32_t numSamples,\n        q31_t * realResult,\n        q31_t * imagResult);\n\n\n  /**\n   * @brief  Q31 complex dot product\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   * @param[out] realResult  real part of the result returned here\n   * @param[out] imagResult  imaginary part of the result returned here\n   */\n  void arm_cmplx_dot_prod_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        uint32_t numSamples,\n        q63_t * realResult,\n        q63_t * imagResult);\n\n\n  /**\n   * @brief  Floating-point complex dot product\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   * @param[out] realResult  real part of the result returned here\n   * @param[out] imagResult  imaginary part of the result returned here\n   */\n  void arm_cmplx_dot_prod_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        uint32_t numSamples,\n        float32_t * realResult,\n        float32_t * imagResult);\n\n\n  /**\n   * @brief  Q15 complex-by-real multiplication\n   * @param[in]  pSrcCmplx   points to the complex input vector\n   * @param[in]  pSrcReal    points to the real input vector\n   * @param[out] pCmplxDst   points to the complex output vector\n   * @param[in]  numSamples  number of samples in each vector\n   */\n  void arm_cmplx_mult_real_q15(\n  const q15_t * pSrcCmplx,\n  const q15_t * pSrcReal,\n        q15_t * pCmplxDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex-by-real multiplication\n   * @param[in]  pSrcCmplx   points to the complex input vector\n   * @param[in]  pSrcReal    points to the real input vector\n   * @param[out] pCmplxDst   points to the complex output vector\n   * @param[in]  numSamples  number of samples in each vector\n   */\n  void arm_cmplx_mult_real_q31(\n  const q31_t * pSrcCmplx,\n  const q31_t * pSrcReal,\n        q31_t * pCmplxDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Floating-point complex-by-real multiplication\n   * @param[in]  pSrcCmplx   points to the complex input vector\n   * @param[in]  pSrcReal    points to the real input vector\n   * @param[out] pCmplxDst   points to the complex output vector\n   * @param[in]  numSamples  number of samples in each vector\n   */\n  void arm_cmplx_mult_real_f32(\n  const float32_t * pSrcCmplx,\n  const float32_t * pSrcReal,\n        float32_t * pCmplxDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Minimum value of a Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] result     is output pointer\n   * @param[in]  index      is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q7_t * result,\n        uint32_t * index);\n\n\n  /**\n   * @brief  Minimum value of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output pointer\n   * @param[in]  pIndex     is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult,\n        uint32_t * pIndex);\n\n\n  /**\n   * @brief  Minimum value of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output pointer\n   * @param[out] pIndex     is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult,\n        uint32_t * pIndex);\n\n\n  /**\n   * @brief  Minimum value of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output pointer\n   * @param[out] pIndex     is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult,\n        uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a Q7 vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q7_t * pResult,\n        uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a Q15 vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult,\n        uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a Q31 vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult,\n        uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a floating-point vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult,\n        uint32_t * pIndex);\n\n\n  /**\n   * @brief  Q15 complex-by-complex multiplication\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_mult_cmplx_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex-by-complex multiplication\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_mult_cmplx_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief  Floating-point complex-by-complex multiplication\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_mult_cmplx_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t numSamples);\n\n\n  /**\n   * @brief Converts the elements of the floating-point vector to Q31 vector.\n   * @param[in]  pSrc       points to the floating-point input vector\n   * @param[out] pDst       points to the Q31 output vector\n   * @param[in]  blockSize  length of the input vector\n   */\n  void arm_float_to_q31(\n  const float32_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Converts the elements of the floating-point vector to Q15 vector.\n   * @param[in]  pSrc       points to the floating-point input vector\n   * @param[out] pDst       points to the Q15 output vector\n   * @param[in]  blockSize  length of the input vector\n   */\n  void arm_float_to_q15(\n  const float32_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief Converts the elements of the floating-point vector to Q7 vector.\n   * @param[in]  pSrc       points to the floating-point input vector\n   * @param[out] pDst       points to the Q7 output vector\n   * @param[in]  blockSize  length of the input vector\n   */\n  void arm_float_to_q7(\n  const float32_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q31 vector to floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q31_to_float(\n  const q31_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q31 vector to Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q31_to_q15(\n  const q31_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q31 vector to Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q31_to_q7(\n  const q31_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q15 vector to floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q15_to_float(\n  const q15_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q15 vector to Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q15_to_q31(\n  const q15_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q15 vector to Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q15_to_q7(\n  const q15_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q7 vector to floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q7_to_float(\n  const q7_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q7 vector to Q31 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_q7_to_q31(\n  const q7_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q7 vector to Q15 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_q7_to_q15(\n  const q7_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize);\n\n\n  /**\n   * @ingroup groupInterpolation\n   */\n\n  /**\n   * @defgroup BilinearInterpolate Bilinear Interpolation\n   *\n   * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid.\n   * The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process\n   * determines values between the grid points.\n   * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension.\n   * Bilinear interpolation is often used in image processing to rescale images.\n   * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.\n   *\n   * <b>Algorithm</b>\n   * \\par\n   * The instance structure used by the bilinear interpolation functions describes a two dimensional data table.\n   * For floating-point, the instance structure is defined as:\n   * <pre>\n   *   typedef struct\n   *   {\n   *     uint16_t numRows;\n   *     uint16_t numCols;\n   *     float32_t *pData;\n   * } arm_bilinear_interp_instance_f32;\n   * </pre>\n   *\n   * \\par\n   * where <code>numRows</code> specifies the number of rows in the table;\n   * <code>numCols</code> specifies the number of columns in the table;\n   * and <code>pData</code> points to an array of size <code>numRows*numCols</code> values.\n   * The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes.\n   * That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.\n   *\n   * \\par\n   * Let <code>(x, y)</code> specify the desired interpolation point.  Then define:\n   * <pre>\n   *     XF = floor(x)\n   *     YF = floor(y)\n   * </pre>\n   * \\par\n   * The interpolated output point is computed as:\n   * <pre>\n   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))\n   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))\n   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)\n   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)\n   * </pre>\n   * Note that the coordinates (x, y) contain integer and fractional components.\n   * The integer components specify which portion of the table to use while the\n   * fractional components control the interpolation processor.\n   *\n   * \\par\n   * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output.\n   */\n\n\n  /**\n   * @addtogroup BilinearInterpolate\n   * @{\n   */\n\n  /**\n  * @brief  Floating-point bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate.\n  * @param[in]     Y  interpolation coordinate.\n  * @return out interpolated value.\n  */\n  __STATIC_FORCEINLINE float32_t arm_bilinear_interp_f32(\n  const arm_bilinear_interp_instance_f32 * S,\n  float32_t X,\n  float32_t Y)\n  {\n    float32_t out;\n    float32_t f00, f01, f10, f11;\n    float32_t *pData = S->pData;\n    int32_t xIndex, yIndex, index;\n    float32_t xdiff, ydiff;\n    float32_t b1, b2, b3, b4;\n\n    xIndex = (int32_t) X;\n    yIndex = (int32_t) Y;\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* Calculation of index for two nearest points in X-direction */\n    index = (xIndex - 1) + (yIndex - 1) * S->numCols;\n\n\n    /* Read two nearest points in X-direction */\n    f00 = pData[index];\n    f01 = pData[index + 1];\n\n    /* Calculation of index for two nearest points in Y-direction */\n    index = (xIndex - 1) + (yIndex) * S->numCols;\n\n\n    /* Read two nearest points in Y-direction */\n    f10 = pData[index];\n    f11 = pData[index + 1];\n\n    /* Calculation of intermediate values */\n    b1 = f00;\n    b2 = f01 - f00;\n    b3 = f10 - f00;\n    b4 = f00 - f01 - f10 + f11;\n\n    /* Calculation of fractional part in X */\n    xdiff = X - xIndex;\n\n    /* Calculation of fractional part in Y */\n    ydiff = Y - yIndex;\n\n    /* Calculation of bi-linear interpolated output */\n    out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;\n\n    /* return to application */\n    return (out);\n  }\n\n\n  /**\n  * @brief  Q31 bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate in 12.20 format.\n  * @param[in]     Y  interpolation coordinate in 12.20 format.\n  * @return out interpolated value.\n  */\n  __STATIC_FORCEINLINE q31_t arm_bilinear_interp_q31(\n  arm_bilinear_interp_instance_q31 * S,\n  q31_t X,\n  q31_t Y)\n  {\n    q31_t out;                                   /* Temporary output */\n    q31_t acc = 0;                               /* output */\n    q31_t xfract, yfract;                        /* X, Y fractional parts */\n    q31_t x1, x2, y1, y2;                        /* Nearest output values */\n    int32_t rI, cI;                              /* Row and column indices */\n    q31_t *pYData = S->pData;                    /* pointer to output table values */\n    uint32_t nCols = S->numCols;                 /* num of rows */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    rI = ((X & (q31_t)0xFFF00000) >> 20);\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    cI = ((Y & (q31_t)0xFFF00000) >> 20);\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* 20 bits for the fractional part */\n    /* shift left xfract by 11 to keep 1.31 format */\n    xfract = (X & 0x000FFFFF) << 11U;\n\n    /* Read two nearest output values from the index */\n    x1 = pYData[(rI) + (int32_t)nCols * (cI)    ];\n    x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];\n\n    /* 20 bits for the fractional part */\n    /* shift left yfract by 11 to keep 1.31 format */\n    yfract = (Y & 0x000FFFFF) << 11U;\n\n    /* Read two nearest output values from the index */\n    y1 = pYData[(rI) + (int32_t)nCols * (cI + 1)    ];\n    y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];\n\n    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */\n    out = ((q31_t) (((q63_t) x1  * (0x7FFFFFFF - xfract)) >> 32));\n    acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));\n\n    /* x2 * (xfract) * (1-yfract)  in 3.29(q29) and adding to acc */\n    out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));\n    acc += ((q31_t) ((q63_t) out * (xfract) >> 32));\n\n    /* y1 * (1 - xfract) * (yfract)  in 3.29(q29) and adding to acc */\n    out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));\n    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));\n\n    /* y2 * (xfract) * (yfract)  in 3.29(q29) and adding to acc */\n    out = ((q31_t) ((q63_t) y2 * (xfract) >> 32));\n    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));\n\n    /* Convert acc to 1.31(q31) format */\n    return ((q31_t)(acc << 2));\n  }\n\n\n  /**\n  * @brief  Q15 bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate in 12.20 format.\n  * @param[in]     Y  interpolation coordinate in 12.20 format.\n  * @return out interpolated value.\n  */\n  __STATIC_FORCEINLINE q15_t arm_bilinear_interp_q15(\n  arm_bilinear_interp_instance_q15 * S,\n  q31_t X,\n  q31_t Y)\n  {\n    q63_t acc = 0;                               /* output */\n    q31_t out;                                   /* Temporary output */\n    q15_t x1, x2, y1, y2;                        /* Nearest output values */\n    q31_t xfract, yfract;                        /* X, Y fractional parts */\n    int32_t rI, cI;                              /* Row and column indices */\n    q15_t *pYData = S->pData;                    /* pointer to output table values */\n    uint32_t nCols = S->numCols;                 /* num of rows */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    rI = ((X & (q31_t)0xFFF00000) >> 20);\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    cI = ((Y & (q31_t)0xFFF00000) >> 20);\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* 20 bits for the fractional part */\n    /* xfract should be in 12.20 format */\n    xfract = (X & 0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];\n    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];\n\n    /* 20 bits for the fractional part */\n    /* yfract should be in 12.20 format */\n    yfract = (Y & 0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];\n    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];\n\n    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */\n\n    /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */\n    /* convert 13.35 to 13.31 by right shifting  and out is in 1.31 */\n    out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4U);\n    acc = ((q63_t) out * (0xFFFFF - yfract));\n\n    /* x2 * (xfract) * (1-yfract)  in 1.51 and adding to acc */\n    out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4U);\n    acc += ((q63_t) out * (xfract));\n\n    /* y1 * (1 - xfract) * (yfract)  in 1.51 and adding to acc */\n    out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4U);\n    acc += ((q63_t) out * (yfract));\n\n    /* y2 * (xfract) * (yfract)  in 1.51 and adding to acc */\n    out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U);\n    acc += ((q63_t) out * (yfract));\n\n    /* acc is in 13.51 format and down shift acc by 36 times */\n    /* Convert out to 1.15 format */\n    return ((q15_t)(acc >> 36));\n  }\n\n\n  /**\n  * @brief  Q7 bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate in 12.20 format.\n  * @param[in]     Y  interpolation coordinate in 12.20 format.\n  * @return out interpolated value.\n  */\n  __STATIC_FORCEINLINE q7_t arm_bilinear_interp_q7(\n  arm_bilinear_interp_instance_q7 * S,\n  q31_t X,\n  q31_t Y)\n  {\n    q63_t acc = 0;                               /* output */\n    q31_t out;                                   /* Temporary output */\n    q31_t xfract, yfract;                        /* X, Y fractional parts */\n    q7_t x1, x2, y1, y2;                         /* Nearest output values */\n    int32_t rI, cI;                              /* Row and column indices */\n    q7_t *pYData = S->pData;                     /* pointer to output table values */\n    uint32_t nCols = S->numCols;                 /* num of rows */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    rI = ((X & (q31_t)0xFFF00000) >> 20);\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    cI = ((Y & (q31_t)0xFFF00000) >> 20);\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* 20 bits for the fractional part */\n    /* xfract should be in 12.20 format */\n    xfract = (X & (q31_t)0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];\n    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];\n\n    /* 20 bits for the fractional part */\n    /* yfract should be in 12.20 format */\n    yfract = (Y & (q31_t)0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];\n    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];\n\n    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */\n    out = ((x1 * (0xFFFFF - xfract)));\n    acc = (((q63_t) out * (0xFFFFF - yfract)));\n\n    /* x2 * (xfract) * (1-yfract)  in 2.22 and adding to acc */\n    out = ((x2 * (0xFFFFF - yfract)));\n    acc += (((q63_t) out * (xfract)));\n\n    /* y1 * (1 - xfract) * (yfract)  in 2.22 and adding to acc */\n    out = ((y1 * (0xFFFFF - xfract)));\n    acc += (((q63_t) out * (yfract)));\n\n    /* y2 * (xfract) * (yfract)  in 2.22 and adding to acc */\n    out = ((y2 * (yfract)));\n    acc += (((q63_t) out * (xfract)));\n\n    /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */\n    return ((q7_t)(acc >> 40));\n  }\n\n  /**\n   * @} end of BilinearInterpolate group\n   */\n\n\n/* SMMLAR */\n#define multAcc_32x32_keep32_R(a, x, y) \\\n    a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)\n\n/* SMMLSR */\n#define multSub_32x32_keep32_R(a, x, y) \\\n    a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)\n\n/* SMMULR */\n#define mult_32x32_keep32_R(a, x, y) \\\n    a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)\n\n/* SMMLA */\n#define multAcc_32x32_keep32(a, x, y) \\\n    a += (q31_t) (((q63_t) x * y) >> 32)\n\n/* SMMLS */\n#define multSub_32x32_keep32(a, x, y) \\\n    a -= (q31_t) (((q63_t) x * y) >> 32)\n\n/* SMMUL */\n#define mult_32x32_keep32(a, x, y) \\\n    a = (q31_t) (((q63_t) x * y ) >> 32)\n\n\n#if   defined ( __CC_ARM )\n  /* Enter low optimization region - place directly above function definition */\n  #if defined( __ARM_ARCH_7EM__ )\n    #define LOW_OPTIMIZATION_ENTER \\\n       _Pragma (\"push\")         \\\n       _Pragma (\"O1\")\n  #else\n    #define LOW_OPTIMIZATION_ENTER\n  #endif\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #if defined ( __ARM_ARCH_7EM__ )\n    #define LOW_OPTIMIZATION_EXIT \\\n       _Pragma (\"pop\")\n  #else\n    #define LOW_OPTIMIZATION_EXIT\n  #endif\n\n  /* Enter low optimization region - place directly above function definition */\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __GNUC__ )\n  #define LOW_OPTIMIZATION_ENTER \\\n       __attribute__(( optimize(\"-O1\") ))\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __ICCARM__ )\n  /* Enter low optimization region - place directly above function definition */\n  #if defined ( __ARM_ARCH_7EM__ )\n    #define LOW_OPTIMIZATION_ENTER \\\n       _Pragma (\"optimize=low\")\n  #else\n    #define LOW_OPTIMIZATION_ENTER\n  #endif\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #define LOW_OPTIMIZATION_EXIT\n\n  /* Enter low optimization region - place directly above function definition */\n  #if defined ( __ARM_ARCH_7EM__ )\n    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \\\n       _Pragma (\"optimize=low\")\n  #else\n    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #endif\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __TI_ARM__ )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __CSMC__ )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __TASKING__ )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#endif\n\n\n#ifdef   __cplusplus\n}\n#endif\n\n/* Compiler specific diagnostic adjustment */\n#if   defined ( __CC_ARM )\n\n#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n\n#elif defined ( __GNUC__ )\n#pragma GCC diagnostic pop\n\n#elif defined ( __ICCARM__ )\n\n#elif defined ( __TI_ARM__ )\n\n#elif defined ( __CSMC__ )\n\n#elif defined ( __TASKING__ )\n\n#elif defined ( _MSC_VER )\n\n#else\n  #error Unknown compiler\n#endif\n\n#endif /* _ARM_MATH_H */\n\n/**\n *\n * End of file.\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Python Wrapper\n * Title:        cmsismodule.c\n * Description:  C code for the CMSIS-DSP Python wrapper\n *\n * $Date:        25. March 2019\n * $Revision:    V0.0.1\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n#define NPY_NO_DEPRECATED_API NPY_1_15_API_VERSION\n\n#ifdef WIN\n#pragma warning( disable : 4013 ) \n#pragma warning( disable : 4244 ) \n#endif\n\n#include <Python.h>\n#define MAX(A,B) (A) < (B) ? (B) : (A)\n\n#define CAT1(A,B) A##B\n#define CAT(A,B) CAT1(A,B)\n\n\n#ifdef CMSISDSP\n#include \"arm_math.h\"\n#define MODNAME \"cmsisdsp\"\n#define MODINITNAME cmsisdsp\n#endif \n\n#include <numpy/arrayobject.h>\n#include <numpy/ndarraytypes.h>\n\n#if PY_MAJOR_VERSION >= 3\n#define IS_PY3K\n#endif\n\nstruct module_state {\n    PyObject *error;\n};\n\n#if PY_MAJOR_VERSION >= 3\n#define GETSTATE(m) ((struct module_state*)PyModule_GetState(m))\n#else\n#define GETSTATE(m) (&_state)\nstatic struct module_state _state;\n#endif\n\nstatic PyObject *\nerror_out(PyObject *m) {\n    struct module_state *st = GETSTATE(m);\n    PyErr_SetString(st->error, \"something bad happened\");\n    return NULL;\n}\n\n#define MLTYPE(name,thenewfunc,deallocfunc,initfunc,methods)\\\nstatic PyTypeObject ml_##name##Type = {          \\\n    PyVarObject_HEAD_INIT(NULL, 0)               \\\n    .tp_name=MODNAME\".##name\",                   \\\n    .tp_basicsize = sizeof(ml_##name##Object),   \\\n    .tp_itemsize = 0,                            \\\n    .tp_dealloc = (destructor)deallocfunc,       \\\n    .tp_flags =  Py_TPFLAGS_DEFAULT,           \\\n    .tp_doc = #name,                             \\\n    .tp_init = (initproc)initfunc,               \\\n    .tp_new = (newfunc)thenewfunc,                \\\n    .tp_methods = methods  \\\n   };\n\n\n#define MEMCPY(DST,SRC,NB,FORMAT) \\\nfor(memCpyIndex = 0; memCpyIndex < (NB) ; memCpyIndex++)\\\n{                                \\\n  (DST)[memCpyIndex] = (FORMAT)(SRC)[memCpyIndex];       \\\n}\n\n#define GETFIELD(NAME,FIELD,FORMAT)                                           \\\nstatic PyObject *                                                             \\\nMethod_##NAME##_##FIELD(ml_##NAME##Object *self, PyObject *ignored)\\\n{                                                                             \\\n    return(Py_BuildValue(FORMAT,self->instance->FIELD));                      \\\n}                                                                             \n    \n#define GETFIELDARRAY(NAME,FIELD,FORMAT)                                           \\\nstatic PyObject *                                                             \\\nMethod_##NAME##_##FIELD(ml_##NAME##Object *self, PyObject *ignored)\\\n{                                                                             \\\n    return(specific_##NAME##_##FIELD(self->instance));                      \\\n}  \n\n#define INITARRAYFIELD(FIELD,FORMAT,SRCFORMAT,DSTFORMAT)                         \\\n    if (FIELD)                                                                \\\n    {                                                                         \\\n       PyArray_Descr *desct=PyArray_DescrFromType(FORMAT);                    \\\n       PyArrayObject *FIELD##c = (PyArrayObject *)PyArray_FromAny(FIELD,desct,\\\n        1,0,NPY_ARRAY_C_CONTIGUOUS | NPY_ARRAY_ALIGNED | NPY_ARRAY_FORCECAST, \\\n        NULL);                                                                \\\n       if (FIELD##c)                                                          \\\n       {                                                                      \\\n           uint32_t memCpyIndex; \\\n           SRCFORMAT *f=(SRCFORMAT*)PyArray_DATA(FIELD##c);                   \\\n           uint32_t n = PyArray_SIZE(FIELD##c);                               \\\n           self->instance->FIELD =PyMem_Malloc(sizeof(DSTFORMAT)*n);                \\\n           MEMCPY(self->instance->FIELD ,f,n,DSTFORMAT);                      \\\n           Py_DECREF(FIELD##c);                                               \\\n       }                                                                      \\\n    }\n#define GETCARRAY(PYVAR,CVAR,FORMAT,SRCFORMAT,DSTFORMAT)                                \\\n    if (PYVAR)                                                                \\\n    {                                                                         \\\n       PyArray_Descr *desct=PyArray_DescrFromType(FORMAT);                    \\\n       PyArrayObject *PYVAR##c = (PyArrayObject *)PyArray_FromAny(PYVAR,desct,\\\n        1,0,NPY_ARRAY_C_CONTIGUOUS | NPY_ARRAY_ALIGNED | NPY_ARRAY_FORCECAST, \\\n        NULL);                                                                \\\n       if (PYVAR##c)                                                          \\\n       {                                                                      \\\n           uint32_t memCpyIndex; \\\n           SRCFORMAT *f=(SRCFORMAT*)PyArray_DATA(PYVAR##c);                         \\\n           uint32_t n = PyArray_SIZE(PYVAR##c);                               \\\n           CVAR =PyMem_Malloc(sizeof(DSTFORMAT)*n);                                 \\\n           MEMCPY(CVAR ,f,n,DSTFORMAT);                               \\\n           Py_DECREF(PYVAR##c);                                               \\\n       }                                                                      \\\n    }\n\n#define GETARGUMENT(FIELD,FORMAT,SRCFORMAT,DSTFORMAT)                          \\\n    uint32_t arraySize##FIELD=0;                                               \\\n    if (FIELD)                                                                 \\\n    {                                                                          \\\n       PyArray_Descr *desct=PyArray_DescrFromType(FORMAT);                     \\\n       PyArrayObject *FIELD##c = (PyArrayObject *)PyArray_FromAny(FIELD,desct, \\\n        1,0,NPY_ARRAY_C_CONTIGUOUS | NPY_ARRAY_ALIGNED | NPY_ARRAY_FORCECAST,  \\\n        NULL);                                                                 \\\n       if (FIELD##c)                                                           \\\n       {                                                                       \\\n           uint32_t memCpyIndex; \\\n           SRCFORMAT *f=(SRCFORMAT*)PyArray_DATA(FIELD##c);                    \\\n           arraySize##FIELD = PyArray_SIZE(FIELD##c);                          \\\n           FIELD##_converted =PyMem_Malloc(sizeof(DSTFORMAT)*arraySize##FIELD);\\\n           MEMCPY(FIELD##_converted ,f,arraySize##FIELD,DSTFORMAT);            \\\n           Py_DECREF(FIELD##c);                                                \\\n       }                                                                       \\\n    }\n\n#define FREEARGUMENT(FIELD) \\\n    PyMem_Free(FIELD)\n\n#ifdef IS_PY3K\n#define ADDTYPE(name)                                               \\\n    if (PyType_Ready(&ml_##name##Type) < 0)                         \\\n        return;                                              \\\n                                                                    \\\n    Py_INCREF(&ml_##name##Type);                                    \\\n    PyModule_AddObject(module, #name, (PyObject *)&ml_##name##Type);\n#else\n#define ADDTYPE(name)                                               \\\n    if (PyType_Ready(&ml_##name##Type) < 0)                         \\\n        return;                                                     \\\n                                                                    \\\n    Py_INCREF(&ml_##name##Type);                                    \\\n    PyModule_AddObject(module, #name, (PyObject *)&ml_##name##Type);\n#endif\n\n#define FLOATARRAY2(OBJ,NB1,NB2,DATA)                                      \\\n    npy_intp dims[2];                                                  \\\n    dims[0]=NB1;                                                       \\\n    dims[1]=NB2;                                                       \\\n    const int ND=2;                                                    \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NPY_FLOAT, DATA);\n\n#define FLOATARRAY1(OBJ,NB1,DATA)                                          \\\n    npy_intp dims[1];                                                  \\\n    dims[0]=NB1;                                                       \\\n    const int ND=1;                                                    \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NPY_FLOAT, DATA);\n\n#define FLOAT64ARRAY1(OBJ,NB1,DATA)                                          \\\n    npy_intp dims[1];                                                  \\\n    dims[0]=NB1;                                                       \\\n    const int ND=1;                                                    \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NPY_DOUBLE, DATA);\n\n#define UINT32ARRAY1(OBJ,NB1,DATA)                                          \\\n    npy_intp dims[1];                                                   \\\n    dims[0]=NB1;                                                        \\\n    const int ND=1;                                                     \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NPY_UINT32, DATA);\n\n#define INT32ARRAY1(OBJ,NB1,DATA)                                          \\\n    npy_intp dims[1];                                                   \\\n    dims[0]=NB1;                                                        \\\n    const int ND=1;                                                     \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NPY_INT32, DATA);\n\n#define INT16ARRAY1(OBJ,NB1,DATA)                                          \\\n    npy_intp dims[1];                                                   \\\n    dims[0]=NB1;                                                        \\\n    const int ND=1;                                                     \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NPY_INT16, DATA);\n\n#define INT8ARRAY1(OBJ,NB1,DATA)                                          \\\n    npy_intp dims[1];                                                   \\\n    dims[0]=NB1;                                                        \\\n    const int ND=1;                                                     \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NPY_BYTE, DATA);\n\n\n#define MATRIXFROMNUMPY(EXT,TYP,SRCTYPE,NUMPYTYPE)                                   \\\narm_matrix_instance_##EXT *EXT##MatrixFromNumpy(PyObject *o)                   \\\n{                                                                            \\\n    arm_matrix_instance_##EXT *s;                                              \\\n                                                                             \\\n    s=PyMem_Malloc(sizeof(arm_matrix_instance_##EXT));                               \\\n    s->pData=NULL;                                                           \\\n    s->numRows=0;                                                            \\\n    s->numCols=0;                                                            \\\n                                                                             \\\n    PyArray_Descr *desct=PyArray_DescrFromType(NUMPYTYPE);                    \\\n    PyArrayObject *cdata = (PyArrayObject *)PyArray_FromAny(o,desct,         \\\n        1,0,NPY_ARRAY_C_CONTIGUOUS | NPY_ARRAY_ALIGNED | NPY_ARRAY_FORCECAST, \\\n        NULL);                                                                \\\n    if (cdata)                                                               \\\n    {                                                                        \\\n           uint32_t memCpyIndex;                                             \\\n           SRCTYPE *f=(SRCTYPE*)PyArray_DATA(cdata);                           \\\n           s->numRows=PyArray_DIM(cdata,0);                                  \\\n           s->numCols=PyArray_DIM(cdata,1);                                  \\\n           uint32_t nb = PyArray_SIZE(cdata);                                \\\n           s->pData = PyMem_Malloc(sizeof(TYP)*nb);                                \\\n           MEMCPY(s->pData ,f,nb,TYP);                                       \\\n           Py_DECREF(cdata);                                                 \\\n    }                                                                        \\\n                                                                             \\\n                                                                             \\\n    return(s);                                                               \\\n                                                                             \\\n}\n\nMATRIXFROMNUMPY(f32,float32_t,double,NPY_DOUBLE);\nMATRIXFROMNUMPY(f64,float64_t,double,NPY_DOUBLE);\nMATRIXFROMNUMPY(q31,q31_t,int32_t,NPY_INT32);\nMATRIXFROMNUMPY(q15,q15_t,int16_t,NPY_INT16);\n\n#define CREATEMATRIX(EXT,TYP)                                        \\\narm_matrix_instance_##EXT *create##EXT##Matrix(uint32_t r,uint32_t c)\\\n{                                                                    \\\n    arm_matrix_instance_##EXT *s;                                      \\\n                                                                     \\\n    s=PyMem_Malloc(sizeof(arm_matrix_instance_##EXT));                     \\\n    s->pData=PyMem_Malloc(sizeof(TYP)*r*c);                                \\\n    s->numRows=r;                                                    \\\n    s->numCols=c;                                                    \\\n    return(s);                                                       \\\n}\n\nCREATEMATRIX(f32,float32_t);\nCREATEMATRIX(f64,float64_t);\nCREATEMATRIX(q31,q31_t);\nCREATEMATRIX(q15,q15_t);\n\n#define NUMPYARRAYFROMMATRIX(EXT,NUMPYTYPE_FROMC)                                  \\\nPyObject *NumpyArrayFrom##EXT##Matrix(arm_matrix_instance_##EXT *mat)              \\\n{                                                                                  \\\n    npy_intp dims[2];                                                              \\\n    dims[0]=mat->numRows;                                                          \\\n    dims[1]=mat->numCols;                                                          \\\n    const int ND=2;                                                                \\\n    PyObject *OBJ=PyArray_SimpleNewFromData(ND, dims, NUMPYTYPE_FROMC, mat->pData);\\\n    return(OBJ);                                                                   \\\n}\n\nNUMPYARRAYFROMMATRIX(f32,NPY_FLOAT);\nNUMPYARRAYFROMMATRIX(f64,NPY_DOUBLE);\nNUMPYARRAYFROMMATRIX(q31,NPY_INT32);\nNUMPYARRAYFROMMATRIX(q15,NPY_INT16);\n\n//#include \"specific.h\"\n#include \"cmsismodule.h\"\n\n#if 0\nstatic PyObject *cmsisml_test(PyObject *obj, PyObject *args)\n{\n    ml_arm_svm_linear_instance_f32Object *self=NULL;\n    PyObject *svm, *vector=NULL;\n\n    if (!PyArg_ParseTuple(args, \"OO\", &svm,&vector))\n        return NULL;\n\n    self=(ml_arm_svm_linear_instance_f32Object*)svm;\n    if (self)\n    {\n        if (self->instance)\n        {\n            int result;\n            float32_t *input=NULL;\n            GETCARRAY(vector,input,NPY_DOUBLE,double,float32_t);\n            \n            arm_svm_linear_predict_f32(self->instance,input,&result);\n            /*\n            printf(\"Dual\\n\");\n            for(int i = 0 ; i < self->instance->nbOfSupportVectors ; i++)\n            {\n                printf(\"%f\\n\",self->instance->dualCoefficients[i]);\n            }\n            printf(\"Vectors\\n\");\n            int k=0;\n            for(int i = 0 ; i < self->instance->nbOfSupportVectors ; i++)\n            {\n                printf(\"Vector %d\\n\",i);\n                for(int j = 0 ; j < self->instance->vectorDimension ; j++)\n                {\n                    printf(\"%f\\n\",self->instance->supportVectors[k]);\n                    k++;\n                }\n            }\n            printf(\"Classes\\n\");\n            for(int i = 0 ; i < 2 ; i++)\n            {\n                printf(\"%d\\n\",self->instance->classes[i]);\n            }\n            printf(\"Intercept %f\\n\",self->instance->intercept);\n*/\n            PyMem_Free(input);\n            return(Py_BuildValue(\"i\",result));\n        }\n    }\n    return(Py_BuildValue(\"i\",-1));\n}\n#endif\n\n#ifdef IS_PY3K\nstatic int cmsisml_traverse(PyObject *m, visitproc visit, void *arg) {\n    Py_VISIT(GETSTATE(m)->error);\n    return 0;\n}\n\nstatic int cmsisml_clear(PyObject *m) {\n    Py_CLEAR(GETSTATE(m)->error);\n    return 0;\n}\n\n\nstatic struct PyModuleDef moduledef = {\n        PyModuleDef_HEAD_INIT,\n        MODNAME,\n        NULL,\n        sizeof(struct module_state),\n        CMSISMLMethods,\n        NULL,\n        cmsisml_traverse,\n        cmsisml_clear,\n        NULL\n};\n\n#define INITERROR return NULL\n\nPyMODINIT_FUNC\nCAT(PyInit_,MODINITNAME)(void)\n\n\n#else\n#define INITERROR return\n\nvoid CAT(init,MODINITNAME)(void)\n#endif\n{\n    import_array();\n\n  #ifdef IS_PY3K\n    PyObject *module = PyModule_Create(&moduledef);\n  #else\n    PyObject *module = Py_InitModule(MODNAME, CMSISMLMethods);\n  #endif\n\n  if (module == NULL)\n      INITERROR;\n  struct module_state *st = GETSTATE(module);\n  \n  st->error = PyErr_NewException(MODNAME\".Error\", NULL, NULL);\n  if (st->error == NULL) {\n      Py_DECREF(module);\n      INITERROR;\n  }\n\n\n  typeRegistration(module);\n\n  #ifdef IS_PY3K\n    return module;\n  #endif\n}"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Python Wrapper\n * Title:        cmsismodule.h\n * Description:  Automatically generated C code for the CMSIS-DSP Python wrapper\n *\n * $Date:        25. March 2019\n * $Revision:    V0.0.1\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_instance_q7 *instance;\n} ml_arm_fir_instance_q7Object;\n\n\nstatic void\narm_fir_instance_q7_dealloc(ml_arm_fir_instance_q7Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_instance_q7_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_instance_q7Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_instance_q7Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_instance_q7));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_instance_q7_init(ml_arm_fir_instance_q7Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|h\", kwlist,&self->instance->numTaps\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_instance_q7,numTaps,\"h\");\n\n\nstatic PyMethodDef arm_fir_instance_q7_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_instance_q7_numTaps,METH_NOARGS,\"numTaps\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_instance_q7,arm_fir_instance_q7_new,arm_fir_instance_q7_dealloc,arm_fir_instance_q7_init,arm_fir_instance_q7_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_instance_q15 *instance;\n} ml_arm_fir_instance_q15Object;\n\n\nstatic void\narm_fir_instance_q15_dealloc(ml_arm_fir_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_instance_q15));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_instance_q15_init(ml_arm_fir_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|h\", kwlist,&self->instance->numTaps\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_instance_q15,numTaps,\"h\");\n\n\nstatic PyMethodDef arm_fir_instance_q15_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_instance_q15_numTaps,METH_NOARGS,\"numTaps\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_instance_q15,arm_fir_instance_q15_new,arm_fir_instance_q15_dealloc,arm_fir_instance_q15_init,arm_fir_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_instance_q31 *instance;\n} ml_arm_fir_instance_q31Object;\n\n\nstatic void\narm_fir_instance_q31_dealloc(ml_arm_fir_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_instance_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_instance_q31_init(ml_arm_fir_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|h\", kwlist,&self->instance->numTaps\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_instance_q31,numTaps,\"h\");\n\n\nstatic PyMethodDef arm_fir_instance_q31_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_instance_q31_numTaps,METH_NOARGS,\"numTaps\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_instance_q31,arm_fir_instance_q31_new,arm_fir_instance_q31_dealloc,arm_fir_instance_q31_init,arm_fir_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_instance_f32 *instance;\n} ml_arm_fir_instance_f32Object;\n\n\nstatic void\narm_fir_instance_f32_dealloc(ml_arm_fir_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_instance_f32_init(ml_arm_fir_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|h\", kwlist,&self->instance->numTaps\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_instance_f32,numTaps,\"h\");\n\n\nstatic PyMethodDef arm_fir_instance_f32_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_instance_f32_numTaps,METH_NOARGS,\"numTaps\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_instance_f32,arm_fir_instance_f32_new,arm_fir_instance_f32_dealloc,arm_fir_instance_f32_init,arm_fir_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_biquad_casd_df1_inst_q15 *instance;\n} ml_arm_biquad_casd_df1_inst_q15Object;\n\n\nstatic void\narm_biquad_casd_df1_inst_q15_dealloc(ml_arm_biquad_casd_df1_inst_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_biquad_casd_df1_inst_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_biquad_casd_df1_inst_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_biquad_casd_df1_inst_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_biquad_casd_df1_inst_q15));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_biquad_casd_df1_inst_q15_init(ml_arm_biquad_casd_df1_inst_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",\"postShift\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ii\", kwlist,&self->instance->numStages\n,&self->instance->postShift\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_biquad_casd_df1_inst_q15,numStages,\"i\");\nGETFIELD(arm_biquad_casd_df1_inst_q15,postShift,\"i\");\n\n\nstatic PyMethodDef arm_biquad_casd_df1_inst_q15_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_biquad_casd_df1_inst_q15_numStages,METH_NOARGS,\"numStages\"},\n    {\"postShift\", (PyCFunction) Method_arm_biquad_casd_df1_inst_q15_postShift,METH_NOARGS,\"postShift\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_biquad_casd_df1_inst_q15,arm_biquad_casd_df1_inst_q15_new,arm_biquad_casd_df1_inst_q15_dealloc,arm_biquad_casd_df1_inst_q15_init,arm_biquad_casd_df1_inst_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_biquad_casd_df1_inst_q31 *instance;\n} ml_arm_biquad_casd_df1_inst_q31Object;\n\n\nstatic void\narm_biquad_casd_df1_inst_q31_dealloc(ml_arm_biquad_casd_df1_inst_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_biquad_casd_df1_inst_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_biquad_casd_df1_inst_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_biquad_casd_df1_inst_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_biquad_casd_df1_inst_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_biquad_casd_df1_inst_q31_init(ml_arm_biquad_casd_df1_inst_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",\"postShift\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ii\", kwlist,&self->instance->numStages\n,&self->instance->postShift\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_biquad_casd_df1_inst_q31,numStages,\"i\");\nGETFIELD(arm_biquad_casd_df1_inst_q31,postShift,\"i\");\n\n\nstatic PyMethodDef arm_biquad_casd_df1_inst_q31_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_biquad_casd_df1_inst_q31_numStages,METH_NOARGS,\"numStages\"},\n    {\"postShift\", (PyCFunction) Method_arm_biquad_casd_df1_inst_q31_postShift,METH_NOARGS,\"postShift\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_biquad_casd_df1_inst_q31,arm_biquad_casd_df1_inst_q31_new,arm_biquad_casd_df1_inst_q31_dealloc,arm_biquad_casd_df1_inst_q31_init,arm_biquad_casd_df1_inst_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_biquad_casd_df1_inst_f32 *instance;\n} ml_arm_biquad_casd_df1_inst_f32Object;\n\n\nstatic void\narm_biquad_casd_df1_inst_f32_dealloc(ml_arm_biquad_casd_df1_inst_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_biquad_casd_df1_inst_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_biquad_casd_df1_inst_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_biquad_casd_df1_inst_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_biquad_casd_df1_inst_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_biquad_casd_df1_inst_f32_init(ml_arm_biquad_casd_df1_inst_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|i\", kwlist,&self->instance->numStages\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_biquad_casd_df1_inst_f32,numStages,\"i\");\n\n\nstatic PyMethodDef arm_biquad_casd_df1_inst_f32_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_biquad_casd_df1_inst_f32_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_biquad_casd_df1_inst_f32,arm_biquad_casd_df1_inst_f32_new,arm_biquad_casd_df1_inst_f32_dealloc,arm_biquad_casd_df1_inst_f32_init,arm_biquad_casd_df1_inst_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_matrix_instance_f32 *instance;\n} ml_arm_matrix_instance_f32Object;\n\n\nstatic void\narm_matrix_instance_f32_dealloc(ml_arm_matrix_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_matrix_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_matrix_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_matrix_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_matrix_instance_f32));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_matrix_instance_f32_init(ml_arm_matrix_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_DOUBLE,double,float32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_matrix_instance_f32,numRows,\"h\");\nGETFIELD(arm_matrix_instance_f32,numCols,\"h\");\n\n\nstatic PyMethodDef arm_matrix_instance_f32_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_matrix_instance_f32_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_matrix_instance_f32_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_matrix_instance_f32,arm_matrix_instance_f32_new,arm_matrix_instance_f32_dealloc,arm_matrix_instance_f32_init,arm_matrix_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_matrix_instance_f64 *instance;\n} ml_arm_matrix_instance_f64Object;\n\n\nstatic void\narm_matrix_instance_f64_dealloc(ml_arm_matrix_instance_f64Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_matrix_instance_f64_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_matrix_instance_f64Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_matrix_instance_f64Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_matrix_instance_f64));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_matrix_instance_f64_init(ml_arm_matrix_instance_f64Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_FLOAT64,float64_t,float64_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_matrix_instance_f64,numRows,\"h\");\nGETFIELD(arm_matrix_instance_f64,numCols,\"h\");\n\n\nstatic PyMethodDef arm_matrix_instance_f64_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_matrix_instance_f64_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_matrix_instance_f64_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_matrix_instance_f64,arm_matrix_instance_f64_new,arm_matrix_instance_f64_dealloc,arm_matrix_instance_f64_init,arm_matrix_instance_f64_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_matrix_instance_q15 *instance;\n} ml_arm_matrix_instance_q15Object;\n\n\nstatic void\narm_matrix_instance_q15_dealloc(ml_arm_matrix_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_matrix_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_matrix_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_matrix_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_matrix_instance_q15));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_matrix_instance_q15_init(ml_arm_matrix_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_INT16,int16_t,int16_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_matrix_instance_q15,numRows,\"h\");\nGETFIELD(arm_matrix_instance_q15,numCols,\"h\");\n\n\nstatic PyMethodDef arm_matrix_instance_q15_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_matrix_instance_q15_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_matrix_instance_q15_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_matrix_instance_q15,arm_matrix_instance_q15_new,arm_matrix_instance_q15_dealloc,arm_matrix_instance_q15_init,arm_matrix_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_matrix_instance_q31 *instance;\n} ml_arm_matrix_instance_q31Object;\n\n\nstatic void\narm_matrix_instance_q31_dealloc(ml_arm_matrix_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_matrix_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_matrix_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_matrix_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_matrix_instance_q31));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_matrix_instance_q31_init(ml_arm_matrix_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_INT32,int32_t,int32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_matrix_instance_q31,numRows,\"h\");\nGETFIELD(arm_matrix_instance_q31,numCols,\"h\");\n\n\nstatic PyMethodDef arm_matrix_instance_q31_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_matrix_instance_q31_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_matrix_instance_q31_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_matrix_instance_q31,arm_matrix_instance_q31_new,arm_matrix_instance_q31_dealloc,arm_matrix_instance_q31_init,arm_matrix_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_pid_instance_q15 *instance;\n} ml_arm_pid_instance_q15Object;\n\n\nstatic void\narm_pid_instance_q15_dealloc(ml_arm_pid_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_pid_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_pid_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_pid_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_pid_instance_q15));\n\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_pid_instance_q15_init(ml_arm_pid_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\nchar *kwlist[] = {\n\"A0\",\"A1\",\"A2\",\"state\",\"Kp\",\"Ki\",\"Kd\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhhhhhh\", kwlist,&self->instance->A0\n,&self->instance->A1\n,&self->instance->A2\n,&self->instance->state\n,&self->instance->Kp\n,&self->instance->Ki\n,&self->instance->Kd\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_pid_instance_q15,A0,\"h\");\nGETFIELD(arm_pid_instance_q15,A1,\"h\");\nGETFIELD(arm_pid_instance_q15,A2,\"h\");\nGETFIELD(arm_pid_instance_q15,state,\"h\");\nGETFIELD(arm_pid_instance_q15,Kp,\"h\");\nGETFIELD(arm_pid_instance_q15,Ki,\"h\");\nGETFIELD(arm_pid_instance_q15,Kd,\"h\");\n\n\nstatic PyMethodDef arm_pid_instance_q15_methods[] = {\n\n    {\"A0\", (PyCFunction) Method_arm_pid_instance_q15_A0,METH_NOARGS,\"A0\"},\n    {\"A1\", (PyCFunction) Method_arm_pid_instance_q15_A1,METH_NOARGS,\"A1\"},\n    {\"A2\", (PyCFunction) Method_arm_pid_instance_q15_A2,METH_NOARGS,\"A2\"},\n    {\"state\", (PyCFunction) Method_arm_pid_instance_q15_state,METH_NOARGS,\"state\"},\n    {\"Kp\", (PyCFunction) Method_arm_pid_instance_q15_Kp,METH_NOARGS,\"Kp\"},\n    {\"Ki\", (PyCFunction) Method_arm_pid_instance_q15_Ki,METH_NOARGS,\"Ki\"},\n    {\"Kd\", (PyCFunction) Method_arm_pid_instance_q15_Kd,METH_NOARGS,\"Kd\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_pid_instance_q15,arm_pid_instance_q15_new,arm_pid_instance_q15_dealloc,arm_pid_instance_q15_init,arm_pid_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_pid_instance_q31 *instance;\n} ml_arm_pid_instance_q31Object;\n\n\nstatic void\narm_pid_instance_q31_dealloc(ml_arm_pid_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_pid_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_pid_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_pid_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_pid_instance_q31));\n\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_pid_instance_q31_init(ml_arm_pid_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\nchar *kwlist[] = {\n\"A0\",\"A1\",\"A2\",\"state\",\"Kp\",\"Ki\",\"Kd\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|iiiiiii\", kwlist,&self->instance->A0\n,&self->instance->A1\n,&self->instance->A2\n,&self->instance->state\n,&self->instance->Kp\n,&self->instance->Ki\n,&self->instance->Kd\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_pid_instance_q31,A0,\"i\");\nGETFIELD(arm_pid_instance_q31,A1,\"i\");\nGETFIELD(arm_pid_instance_q31,A2,\"i\");\nGETFIELD(arm_pid_instance_q31,state,\"i\");\nGETFIELD(arm_pid_instance_q31,Kp,\"i\");\nGETFIELD(arm_pid_instance_q31,Ki,\"i\");\nGETFIELD(arm_pid_instance_q31,Kd,\"i\");\n\n\nstatic PyMethodDef arm_pid_instance_q31_methods[] = {\n\n    {\"A0\", (PyCFunction) Method_arm_pid_instance_q31_A0,METH_NOARGS,\"A0\"},\n    {\"A1\", (PyCFunction) Method_arm_pid_instance_q31_A1,METH_NOARGS,\"A1\"},\n    {\"A2\", (PyCFunction) Method_arm_pid_instance_q31_A2,METH_NOARGS,\"A2\"},\n    {\"state\", (PyCFunction) Method_arm_pid_instance_q31_state,METH_NOARGS,\"state\"},\n    {\"Kp\", (PyCFunction) Method_arm_pid_instance_q31_Kp,METH_NOARGS,\"Kp\"},\n    {\"Ki\", (PyCFunction) Method_arm_pid_instance_q31_Ki,METH_NOARGS,\"Ki\"},\n    {\"Kd\", (PyCFunction) Method_arm_pid_instance_q31_Kd,METH_NOARGS,\"Kd\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_pid_instance_q31,arm_pid_instance_q31_new,arm_pid_instance_q31_dealloc,arm_pid_instance_q31_init,arm_pid_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_pid_instance_f32 *instance;\n} ml_arm_pid_instance_f32Object;\n\n\nstatic void\narm_pid_instance_f32_dealloc(ml_arm_pid_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_pid_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_pid_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_pid_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_pid_instance_f32));\n\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_pid_instance_f32_init(ml_arm_pid_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\nchar *kwlist[] = {\n\"A0\",\"A1\",\"A2\",\"state\",\"Kp\",\"Ki\",\"Kd\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|fffffff\", kwlist,&self->instance->A0\n,&self->instance->A1\n,&self->instance->A2\n,&self->instance->state\n,&self->instance->Kp\n,&self->instance->Ki\n,&self->instance->Kd\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_pid_instance_f32,A0,\"f\");\nGETFIELD(arm_pid_instance_f32,A1,\"f\");\nGETFIELD(arm_pid_instance_f32,A2,\"f\");\nGETFIELD(arm_pid_instance_f32,state,\"f\");\nGETFIELD(arm_pid_instance_f32,Kp,\"f\");\nGETFIELD(arm_pid_instance_f32,Ki,\"f\");\nGETFIELD(arm_pid_instance_f32,Kd,\"f\");\n\n\nstatic PyMethodDef arm_pid_instance_f32_methods[] = {\n\n    {\"A0\", (PyCFunction) Method_arm_pid_instance_f32_A0,METH_NOARGS,\"A0\"},\n    {\"A1\", (PyCFunction) Method_arm_pid_instance_f32_A1,METH_NOARGS,\"A1\"},\n    {\"A2\", (PyCFunction) Method_arm_pid_instance_f32_A2,METH_NOARGS,\"A2\"},\n    {\"state\", (PyCFunction) Method_arm_pid_instance_f32_state,METH_NOARGS,\"state\"},\n    {\"Kp\", (PyCFunction) Method_arm_pid_instance_f32_Kp,METH_NOARGS,\"Kp\"},\n    {\"Ki\", (PyCFunction) Method_arm_pid_instance_f32_Ki,METH_NOARGS,\"Ki\"},\n    {\"Kd\", (PyCFunction) Method_arm_pid_instance_f32_Kd,METH_NOARGS,\"Kd\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_pid_instance_f32,arm_pid_instance_f32_new,arm_pid_instance_f32_dealloc,arm_pid_instance_f32_init,arm_pid_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_linear_interp_instance_f32 *instance;\n} ml_arm_linear_interp_instance_f32Object;\n\n\nstatic void\narm_linear_interp_instance_f32_dealloc(ml_arm_linear_interp_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pYData)\n       {\n          PyMem_Free(self->instance->pYData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_linear_interp_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_linear_interp_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_linear_interp_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_linear_interp_instance_f32));\n\n        self->instance->pYData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_linear_interp_instance_f32_init(ml_arm_linear_interp_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pYData=NULL;\nchar *kwlist[] = {\n\"nValues\",\"x1\",\"xSpacing\",\"pYData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|iffO\", kwlist,&self->instance->nValues\n,&self->instance->x1\n,&self->instance->xSpacing\n,&pYData\n))\n    {\n\n    INITARRAYFIELD(pYData,NPY_DOUBLE,double,float32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_linear_interp_instance_f32,nValues,\"i\");\nGETFIELD(arm_linear_interp_instance_f32,x1,\"f\");\nGETFIELD(arm_linear_interp_instance_f32,xSpacing,\"f\");\n\n\nstatic PyMethodDef arm_linear_interp_instance_f32_methods[] = {\n\n    {\"nValues\", (PyCFunction) Method_arm_linear_interp_instance_f32_nValues,METH_NOARGS,\"nValues\"},\n    {\"x1\", (PyCFunction) Method_arm_linear_interp_instance_f32_x1,METH_NOARGS,\"x1\"},\n    {\"xSpacing\", (PyCFunction) Method_arm_linear_interp_instance_f32_xSpacing,METH_NOARGS,\"xSpacing\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_linear_interp_instance_f32,arm_linear_interp_instance_f32_new,arm_linear_interp_instance_f32_dealloc,arm_linear_interp_instance_f32_init,arm_linear_interp_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_bilinear_interp_instance_f32 *instance;\n} ml_arm_bilinear_interp_instance_f32Object;\n\n\nstatic void\narm_bilinear_interp_instance_f32_dealloc(ml_arm_bilinear_interp_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_bilinear_interp_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_bilinear_interp_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_bilinear_interp_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_bilinear_interp_instance_f32));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_bilinear_interp_instance_f32_init(ml_arm_bilinear_interp_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_DOUBLE,double,float32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_bilinear_interp_instance_f32,numRows,\"h\");\nGETFIELD(arm_bilinear_interp_instance_f32,numCols,\"h\");\n\n\nstatic PyMethodDef arm_bilinear_interp_instance_f32_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_bilinear_interp_instance_f32_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_bilinear_interp_instance_f32_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_bilinear_interp_instance_f32,arm_bilinear_interp_instance_f32_new,arm_bilinear_interp_instance_f32_dealloc,arm_bilinear_interp_instance_f32_init,arm_bilinear_interp_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_bilinear_interp_instance_q31 *instance;\n} ml_arm_bilinear_interp_instance_q31Object;\n\n\nstatic void\narm_bilinear_interp_instance_q31_dealloc(ml_arm_bilinear_interp_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_bilinear_interp_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_bilinear_interp_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_bilinear_interp_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_bilinear_interp_instance_q31));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_bilinear_interp_instance_q31_init(ml_arm_bilinear_interp_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_INT32,int32_t,int32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_bilinear_interp_instance_q31,numRows,\"h\");\nGETFIELD(arm_bilinear_interp_instance_q31,numCols,\"h\");\n\n\nstatic PyMethodDef arm_bilinear_interp_instance_q31_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_bilinear_interp_instance_q31_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_bilinear_interp_instance_q31_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_bilinear_interp_instance_q31,arm_bilinear_interp_instance_q31_new,arm_bilinear_interp_instance_q31_dealloc,arm_bilinear_interp_instance_q31_init,arm_bilinear_interp_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_bilinear_interp_instance_q15 *instance;\n} ml_arm_bilinear_interp_instance_q15Object;\n\n\nstatic void\narm_bilinear_interp_instance_q15_dealloc(ml_arm_bilinear_interp_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_bilinear_interp_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_bilinear_interp_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_bilinear_interp_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_bilinear_interp_instance_q15));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_bilinear_interp_instance_q15_init(ml_arm_bilinear_interp_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_INT16,int16_t,int16_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_bilinear_interp_instance_q15,numRows,\"h\");\nGETFIELD(arm_bilinear_interp_instance_q15,numCols,\"h\");\n\n\nstatic PyMethodDef arm_bilinear_interp_instance_q15_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_bilinear_interp_instance_q15_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_bilinear_interp_instance_q15_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_bilinear_interp_instance_q15,arm_bilinear_interp_instance_q15_new,arm_bilinear_interp_instance_q15_dealloc,arm_bilinear_interp_instance_q15_init,arm_bilinear_interp_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_bilinear_interp_instance_q7 *instance;\n} ml_arm_bilinear_interp_instance_q7Object;\n\n\nstatic void\narm_bilinear_interp_instance_q7_dealloc(ml_arm_bilinear_interp_instance_q7Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pData)\n       {\n          PyMem_Free(self->instance->pData);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_bilinear_interp_instance_q7_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_bilinear_interp_instance_q7Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_bilinear_interp_instance_q7Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_bilinear_interp_instance_q7));\n\n        self->instance->pData = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_bilinear_interp_instance_q7_init(ml_arm_bilinear_interp_instance_q7Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pData=NULL;\nchar *kwlist[] = {\n\"numRows\",\"numCols\",\"pData\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhO\", kwlist,&self->instance->numRows\n,&self->instance->numCols\n,&pData\n))\n    {\n\n    INITARRAYFIELD(pData,NPY_BYTE,int8_t,q7_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_bilinear_interp_instance_q7,numRows,\"h\");\nGETFIELD(arm_bilinear_interp_instance_q7,numCols,\"h\");\n\n\nstatic PyMethodDef arm_bilinear_interp_instance_q7_methods[] = {\n\n    {\"numRows\", (PyCFunction) Method_arm_bilinear_interp_instance_q7_numRows,METH_NOARGS,\"numRows\"},\n    {\"numCols\", (PyCFunction) Method_arm_bilinear_interp_instance_q7_numCols,METH_NOARGS,\"numCols\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_bilinear_interp_instance_q7,arm_bilinear_interp_instance_q7_new,arm_bilinear_interp_instance_q7_dealloc,arm_bilinear_interp_instance_q7_init,arm_bilinear_interp_instance_q7_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_radix2_instance_q15 *instance;\n} ml_arm_cfft_radix2_instance_q15Object;\n\n\nstatic void\narm_cfft_radix2_instance_q15_dealloc(ml_arm_cfft_radix2_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_radix2_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_radix2_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_radix2_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_radix2_instance_q15));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_radix2_instance_q15_init(ml_arm_cfft_radix2_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"ifftFlag\",\"bitReverseFlag\",\"twidCoefModifier\",\"bitRevFactor\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hiihh\", kwlist,&self->instance->fftLen\n,&self->instance->ifftFlag\n,&self->instance->bitReverseFlag\n,&self->instance->twidCoefModifier\n,&self->instance->bitRevFactor\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_radix2_instance_q15,fftLen,\"h\");\nGETFIELD(arm_cfft_radix2_instance_q15,ifftFlag,\"i\");\nGETFIELD(arm_cfft_radix2_instance_q15,bitReverseFlag,\"i\");\nGETFIELD(arm_cfft_radix2_instance_q15,twidCoefModifier,\"h\");\nGETFIELD(arm_cfft_radix2_instance_q15,bitRevFactor,\"h\");\n\n\nstatic PyMethodDef arm_cfft_radix2_instance_q15_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_radix2_instance_q15_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"ifftFlag\", (PyCFunction) Method_arm_cfft_radix2_instance_q15_ifftFlag,METH_NOARGS,\"ifftFlag\"},\n    {\"bitReverseFlag\", (PyCFunction) Method_arm_cfft_radix2_instance_q15_bitReverseFlag,METH_NOARGS,\"bitReverseFlag\"},\n    {\"twidCoefModifier\", (PyCFunction) Method_arm_cfft_radix2_instance_q15_twidCoefModifier,METH_NOARGS,\"twidCoefModifier\"},\n    {\"bitRevFactor\", (PyCFunction) Method_arm_cfft_radix2_instance_q15_bitRevFactor,METH_NOARGS,\"bitRevFactor\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_radix2_instance_q15,arm_cfft_radix2_instance_q15_new,arm_cfft_radix2_instance_q15_dealloc,arm_cfft_radix2_instance_q15_init,arm_cfft_radix2_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_radix4_instance_q15 *instance;\n} ml_arm_cfft_radix4_instance_q15Object;\n\n\nstatic void\narm_cfft_radix4_instance_q15_dealloc(ml_arm_cfft_radix4_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_radix4_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_radix4_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_radix4_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_radix4_instance_q15));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_radix4_instance_q15_init(ml_arm_cfft_radix4_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"ifftFlag\",\"bitReverseFlag\",\"twidCoefModifier\",\"bitRevFactor\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hiihh\", kwlist,&self->instance->fftLen\n,&self->instance->ifftFlag\n,&self->instance->bitReverseFlag\n,&self->instance->twidCoefModifier\n,&self->instance->bitRevFactor\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_radix4_instance_q15,fftLen,\"h\");\nGETFIELD(arm_cfft_radix4_instance_q15,ifftFlag,\"i\");\nGETFIELD(arm_cfft_radix4_instance_q15,bitReverseFlag,\"i\");\nGETFIELD(arm_cfft_radix4_instance_q15,twidCoefModifier,\"h\");\nGETFIELD(arm_cfft_radix4_instance_q15,bitRevFactor,\"h\");\n\n\nstatic PyMethodDef arm_cfft_radix4_instance_q15_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_radix4_instance_q15_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"ifftFlag\", (PyCFunction) Method_arm_cfft_radix4_instance_q15_ifftFlag,METH_NOARGS,\"ifftFlag\"},\n    {\"bitReverseFlag\", (PyCFunction) Method_arm_cfft_radix4_instance_q15_bitReverseFlag,METH_NOARGS,\"bitReverseFlag\"},\n    {\"twidCoefModifier\", (PyCFunction) Method_arm_cfft_radix4_instance_q15_twidCoefModifier,METH_NOARGS,\"twidCoefModifier\"},\n    {\"bitRevFactor\", (PyCFunction) Method_arm_cfft_radix4_instance_q15_bitRevFactor,METH_NOARGS,\"bitRevFactor\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_radix4_instance_q15,arm_cfft_radix4_instance_q15_new,arm_cfft_radix4_instance_q15_dealloc,arm_cfft_radix4_instance_q15_init,arm_cfft_radix4_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_radix2_instance_q31 *instance;\n} ml_arm_cfft_radix2_instance_q31Object;\n\n\nstatic void\narm_cfft_radix2_instance_q31_dealloc(ml_arm_cfft_radix2_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_radix2_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_radix2_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_radix2_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_radix2_instance_q31));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_radix2_instance_q31_init(ml_arm_cfft_radix2_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"ifftFlag\",\"bitReverseFlag\",\"twidCoefModifier\",\"bitRevFactor\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hiihh\", kwlist,&self->instance->fftLen\n,&self->instance->ifftFlag\n,&self->instance->bitReverseFlag\n,&self->instance->twidCoefModifier\n,&self->instance->bitRevFactor\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_radix2_instance_q31,fftLen,\"h\");\nGETFIELD(arm_cfft_radix2_instance_q31,ifftFlag,\"i\");\nGETFIELD(arm_cfft_radix2_instance_q31,bitReverseFlag,\"i\");\nGETFIELD(arm_cfft_radix2_instance_q31,twidCoefModifier,\"h\");\nGETFIELD(arm_cfft_radix2_instance_q31,bitRevFactor,\"h\");\n\n\nstatic PyMethodDef arm_cfft_radix2_instance_q31_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_radix2_instance_q31_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"ifftFlag\", (PyCFunction) Method_arm_cfft_radix2_instance_q31_ifftFlag,METH_NOARGS,\"ifftFlag\"},\n    {\"bitReverseFlag\", (PyCFunction) Method_arm_cfft_radix2_instance_q31_bitReverseFlag,METH_NOARGS,\"bitReverseFlag\"},\n    {\"twidCoefModifier\", (PyCFunction) Method_arm_cfft_radix2_instance_q31_twidCoefModifier,METH_NOARGS,\"twidCoefModifier\"},\n    {\"bitRevFactor\", (PyCFunction) Method_arm_cfft_radix2_instance_q31_bitRevFactor,METH_NOARGS,\"bitRevFactor\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_radix2_instance_q31,arm_cfft_radix2_instance_q31_new,arm_cfft_radix2_instance_q31_dealloc,arm_cfft_radix2_instance_q31_init,arm_cfft_radix2_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_radix4_instance_q31 *instance;\n} ml_arm_cfft_radix4_instance_q31Object;\n\n\nstatic void\narm_cfft_radix4_instance_q31_dealloc(ml_arm_cfft_radix4_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_radix4_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_radix4_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_radix4_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_radix4_instance_q31));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_radix4_instance_q31_init(ml_arm_cfft_radix4_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"ifftFlag\",\"bitReverseFlag\",\"twidCoefModifier\",\"bitRevFactor\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hiihh\", kwlist,&self->instance->fftLen\n,&self->instance->ifftFlag\n,&self->instance->bitReverseFlag\n,&self->instance->twidCoefModifier\n,&self->instance->bitRevFactor\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_radix4_instance_q31,fftLen,\"h\");\nGETFIELD(arm_cfft_radix4_instance_q31,ifftFlag,\"i\");\nGETFIELD(arm_cfft_radix4_instance_q31,bitReverseFlag,\"i\");\nGETFIELD(arm_cfft_radix4_instance_q31,twidCoefModifier,\"h\");\nGETFIELD(arm_cfft_radix4_instance_q31,bitRevFactor,\"h\");\n\n\nstatic PyMethodDef arm_cfft_radix4_instance_q31_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_radix4_instance_q31_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"ifftFlag\", (PyCFunction) Method_arm_cfft_radix4_instance_q31_ifftFlag,METH_NOARGS,\"ifftFlag\"},\n    {\"bitReverseFlag\", (PyCFunction) Method_arm_cfft_radix4_instance_q31_bitReverseFlag,METH_NOARGS,\"bitReverseFlag\"},\n    {\"twidCoefModifier\", (PyCFunction) Method_arm_cfft_radix4_instance_q31_twidCoefModifier,METH_NOARGS,\"twidCoefModifier\"},\n    {\"bitRevFactor\", (PyCFunction) Method_arm_cfft_radix4_instance_q31_bitRevFactor,METH_NOARGS,\"bitRevFactor\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_radix4_instance_q31,arm_cfft_radix4_instance_q31_new,arm_cfft_radix4_instance_q31_dealloc,arm_cfft_radix4_instance_q31_init,arm_cfft_radix4_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_radix2_instance_f32 *instance;\n} ml_arm_cfft_radix2_instance_f32Object;\n\n\nstatic void\narm_cfft_radix2_instance_f32_dealloc(ml_arm_cfft_radix2_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_radix2_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_radix2_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_radix2_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_radix2_instance_f32));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_radix2_instance_f32_init(ml_arm_cfft_radix2_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"ifftFlag\",\"bitReverseFlag\",\"twidCoefModifier\",\"bitRevFactor\",\"onebyfftLen\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hiihhf\", kwlist,&self->instance->fftLen\n,&self->instance->ifftFlag\n,&self->instance->bitReverseFlag\n,&self->instance->twidCoefModifier\n,&self->instance->bitRevFactor\n,&self->instance->onebyfftLen\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_radix2_instance_f32,fftLen,\"h\");\nGETFIELD(arm_cfft_radix2_instance_f32,ifftFlag,\"i\");\nGETFIELD(arm_cfft_radix2_instance_f32,bitReverseFlag,\"i\");\nGETFIELD(arm_cfft_radix2_instance_f32,twidCoefModifier,\"h\");\nGETFIELD(arm_cfft_radix2_instance_f32,bitRevFactor,\"h\");\nGETFIELD(arm_cfft_radix2_instance_f32,onebyfftLen,\"f\");\n\n\nstatic PyMethodDef arm_cfft_radix2_instance_f32_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_radix2_instance_f32_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"ifftFlag\", (PyCFunction) Method_arm_cfft_radix2_instance_f32_ifftFlag,METH_NOARGS,\"ifftFlag\"},\n    {\"bitReverseFlag\", (PyCFunction) Method_arm_cfft_radix2_instance_f32_bitReverseFlag,METH_NOARGS,\"bitReverseFlag\"},\n    {\"twidCoefModifier\", (PyCFunction) Method_arm_cfft_radix2_instance_f32_twidCoefModifier,METH_NOARGS,\"twidCoefModifier\"},\n    {\"bitRevFactor\", (PyCFunction) Method_arm_cfft_radix2_instance_f32_bitRevFactor,METH_NOARGS,\"bitRevFactor\"},\n    {\"onebyfftLen\", (PyCFunction) Method_arm_cfft_radix2_instance_f32_onebyfftLen,METH_NOARGS,\"onebyfftLen\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_radix2_instance_f32,arm_cfft_radix2_instance_f32_new,arm_cfft_radix2_instance_f32_dealloc,arm_cfft_radix2_instance_f32_init,arm_cfft_radix2_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_radix4_instance_f32 *instance;\n} ml_arm_cfft_radix4_instance_f32Object;\n\n\nstatic void\narm_cfft_radix4_instance_f32_dealloc(ml_arm_cfft_radix4_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_radix4_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_radix4_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_radix4_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_radix4_instance_f32));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_radix4_instance_f32_init(ml_arm_cfft_radix4_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"ifftFlag\",\"bitReverseFlag\",\"twidCoefModifier\",\"bitRevFactor\",\"onebyfftLen\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hiihhf\", kwlist,&self->instance->fftLen\n,&self->instance->ifftFlag\n,&self->instance->bitReverseFlag\n,&self->instance->twidCoefModifier\n,&self->instance->bitRevFactor\n,&self->instance->onebyfftLen\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_radix4_instance_f32,fftLen,\"h\");\nGETFIELD(arm_cfft_radix4_instance_f32,ifftFlag,\"i\");\nGETFIELD(arm_cfft_radix4_instance_f32,bitReverseFlag,\"i\");\nGETFIELD(arm_cfft_radix4_instance_f32,twidCoefModifier,\"h\");\nGETFIELD(arm_cfft_radix4_instance_f32,bitRevFactor,\"h\");\nGETFIELD(arm_cfft_radix4_instance_f32,onebyfftLen,\"f\");\n\n\nstatic PyMethodDef arm_cfft_radix4_instance_f32_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_radix4_instance_f32_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"ifftFlag\", (PyCFunction) Method_arm_cfft_radix4_instance_f32_ifftFlag,METH_NOARGS,\"ifftFlag\"},\n    {\"bitReverseFlag\", (PyCFunction) Method_arm_cfft_radix4_instance_f32_bitReverseFlag,METH_NOARGS,\"bitReverseFlag\"},\n    {\"twidCoefModifier\", (PyCFunction) Method_arm_cfft_radix4_instance_f32_twidCoefModifier,METH_NOARGS,\"twidCoefModifier\"},\n    {\"bitRevFactor\", (PyCFunction) Method_arm_cfft_radix4_instance_f32_bitRevFactor,METH_NOARGS,\"bitRevFactor\"},\n    {\"onebyfftLen\", (PyCFunction) Method_arm_cfft_radix4_instance_f32_onebyfftLen,METH_NOARGS,\"onebyfftLen\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_radix4_instance_f32,arm_cfft_radix4_instance_f32_new,arm_cfft_radix4_instance_f32_dealloc,arm_cfft_radix4_instance_f32_init,arm_cfft_radix4_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_instance_q15 *instance;\n} ml_arm_cfft_instance_q15Object;\n\n\nstatic void\narm_cfft_instance_q15_dealloc(ml_arm_cfft_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_instance_q15));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_instance_q15_init(ml_arm_cfft_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"bitRevLength\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hh\", kwlist,&self->instance->fftLen\n,&self->instance->bitRevLength\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_instance_q15,fftLen,\"h\");\nGETFIELD(arm_cfft_instance_q15,bitRevLength,\"h\");\n\n\nstatic PyMethodDef arm_cfft_instance_q15_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_instance_q15_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"bitRevLength\", (PyCFunction) Method_arm_cfft_instance_q15_bitRevLength,METH_NOARGS,\"bitRevLength\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_instance_q15,arm_cfft_instance_q15_new,arm_cfft_instance_q15_dealloc,arm_cfft_instance_q15_init,arm_cfft_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_instance_q31 *instance;\n} ml_arm_cfft_instance_q31Object;\n\n\nstatic void\narm_cfft_instance_q31_dealloc(ml_arm_cfft_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_instance_q31));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_instance_q31_init(ml_arm_cfft_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"bitRevLength\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hh\", kwlist,&self->instance->fftLen\n,&self->instance->bitRevLength\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_instance_q31,fftLen,\"h\");\nGETFIELD(arm_cfft_instance_q31,bitRevLength,\"h\");\n\n\nstatic PyMethodDef arm_cfft_instance_q31_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_instance_q31_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"bitRevLength\", (PyCFunction) Method_arm_cfft_instance_q31_bitRevLength,METH_NOARGS,\"bitRevLength\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_instance_q31,arm_cfft_instance_q31_new,arm_cfft_instance_q31_dealloc,arm_cfft_instance_q31_init,arm_cfft_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_cfft_instance_f32 *instance;\n} ml_arm_cfft_instance_f32Object;\n\n\nstatic void\narm_cfft_instance_f32_dealloc(ml_arm_cfft_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_cfft_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_cfft_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_cfft_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_cfft_instance_f32));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pBitRevTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_cfft_instance_f32_init(ml_arm_cfft_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pBitRevTable=NULL;\nchar *kwlist[] = {\n\"fftLen\",\"bitRevLength\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hh\", kwlist,&self->instance->fftLen\n,&self->instance->bitRevLength\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_cfft_instance_f32,fftLen,\"h\");\nGETFIELD(arm_cfft_instance_f32,bitRevLength,\"h\");\n\n\nstatic PyMethodDef arm_cfft_instance_f32_methods[] = {\n\n    {\"fftLen\", (PyCFunction) Method_arm_cfft_instance_f32_fftLen,METH_NOARGS,\"fftLen\"},\n    {\"bitRevLength\", (PyCFunction) Method_arm_cfft_instance_f32_bitRevLength,METH_NOARGS,\"bitRevLength\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_cfft_instance_f32,arm_cfft_instance_f32_new,arm_cfft_instance_f32_dealloc,arm_cfft_instance_f32_init,arm_cfft_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_rfft_instance_q15 *instance;\n} ml_arm_rfft_instance_q15Object;\n\n\nstatic void\narm_rfft_instance_q15_dealloc(ml_arm_rfft_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_rfft_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_rfft_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_rfft_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_rfft_instance_q15));\n\n        self->instance->pTwiddleAReal = NULL;\n        self->instance->pTwiddleBReal = NULL;\n        self->instance->pCfft = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_rfft_instance_q15_init(ml_arm_rfft_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddleAReal=NULL;\n    PyObject *pTwiddleBReal=NULL;\n    PyObject *pCfft=NULL;\nchar *kwlist[] = {\n\"fftLenReal\",\"ifftFlagR\",\"bitReverseFlagR\",\"twidCoefRModifier\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|iiii\", kwlist,&self->instance->fftLenReal\n,&self->instance->ifftFlagR\n,&self->instance->bitReverseFlagR\n,&self->instance->twidCoefRModifier\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_rfft_instance_q15,fftLenReal,\"i\");\nGETFIELD(arm_rfft_instance_q15,ifftFlagR,\"i\");\nGETFIELD(arm_rfft_instance_q15,bitReverseFlagR,\"i\");\nGETFIELD(arm_rfft_instance_q15,twidCoefRModifier,\"i\");\n\n\nstatic PyMethodDef arm_rfft_instance_q15_methods[] = {\n\n    {\"fftLenReal\", (PyCFunction) Method_arm_rfft_instance_q15_fftLenReal,METH_NOARGS,\"fftLenReal\"},\n    {\"ifftFlagR\", (PyCFunction) Method_arm_rfft_instance_q15_ifftFlagR,METH_NOARGS,\"ifftFlagR\"},\n    {\"bitReverseFlagR\", (PyCFunction) Method_arm_rfft_instance_q15_bitReverseFlagR,METH_NOARGS,\"bitReverseFlagR\"},\n    {\"twidCoefRModifier\", (PyCFunction) Method_arm_rfft_instance_q15_twidCoefRModifier,METH_NOARGS,\"twidCoefRModifier\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_rfft_instance_q15,arm_rfft_instance_q15_new,arm_rfft_instance_q15_dealloc,arm_rfft_instance_q15_init,arm_rfft_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_rfft_instance_q31 *instance;\n} ml_arm_rfft_instance_q31Object;\n\n\nstatic void\narm_rfft_instance_q31_dealloc(ml_arm_rfft_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_rfft_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_rfft_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_rfft_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_rfft_instance_q31));\n\n        self->instance->pTwiddleAReal = NULL;\n        self->instance->pTwiddleBReal = NULL;\n        self->instance->pCfft = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_rfft_instance_q31_init(ml_arm_rfft_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddleAReal=NULL;\n    PyObject *pTwiddleBReal=NULL;\n    PyObject *pCfft=NULL;\nchar *kwlist[] = {\n\"fftLenReal\",\"ifftFlagR\",\"bitReverseFlagR\",\"twidCoefRModifier\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|iiii\", kwlist,&self->instance->fftLenReal\n,&self->instance->ifftFlagR\n,&self->instance->bitReverseFlagR\n,&self->instance->twidCoefRModifier\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_rfft_instance_q31,fftLenReal,\"i\");\nGETFIELD(arm_rfft_instance_q31,ifftFlagR,\"i\");\nGETFIELD(arm_rfft_instance_q31,bitReverseFlagR,\"i\");\nGETFIELD(arm_rfft_instance_q31,twidCoefRModifier,\"i\");\n\n\nstatic PyMethodDef arm_rfft_instance_q31_methods[] = {\n\n    {\"fftLenReal\", (PyCFunction) Method_arm_rfft_instance_q31_fftLenReal,METH_NOARGS,\"fftLenReal\"},\n    {\"ifftFlagR\", (PyCFunction) Method_arm_rfft_instance_q31_ifftFlagR,METH_NOARGS,\"ifftFlagR\"},\n    {\"bitReverseFlagR\", (PyCFunction) Method_arm_rfft_instance_q31_bitReverseFlagR,METH_NOARGS,\"bitReverseFlagR\"},\n    {\"twidCoefRModifier\", (PyCFunction) Method_arm_rfft_instance_q31_twidCoefRModifier,METH_NOARGS,\"twidCoefRModifier\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_rfft_instance_q31,arm_rfft_instance_q31_new,arm_rfft_instance_q31_dealloc,arm_rfft_instance_q31_init,arm_rfft_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_rfft_instance_f32 *instance;\n} ml_arm_rfft_instance_f32Object;\n\n\nstatic void\narm_rfft_instance_f32_dealloc(ml_arm_rfft_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_rfft_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_rfft_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_rfft_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_rfft_instance_f32));\n\n        self->instance->pTwiddleAReal = NULL;\n        self->instance->pTwiddleBReal = NULL;\n        self->instance->pCfft = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_rfft_instance_f32_init(ml_arm_rfft_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddleAReal=NULL;\n    PyObject *pTwiddleBReal=NULL;\n    PyObject *pCfft=NULL;\nchar *kwlist[] = {\n\"fftLenReal\",\"fftLenBy2\",\"ifftFlagR\",\"bitReverseFlagR\",\"twidCoefRModifier\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ihiii\", kwlist,&self->instance->fftLenReal\n,&self->instance->fftLenBy2\n,&self->instance->ifftFlagR\n,&self->instance->bitReverseFlagR\n,&self->instance->twidCoefRModifier\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_rfft_instance_f32,fftLenReal,\"i\");\nGETFIELD(arm_rfft_instance_f32,fftLenBy2,\"h\");\nGETFIELD(arm_rfft_instance_f32,ifftFlagR,\"i\");\nGETFIELD(arm_rfft_instance_f32,bitReverseFlagR,\"i\");\nGETFIELD(arm_rfft_instance_f32,twidCoefRModifier,\"i\");\n\n\nstatic PyMethodDef arm_rfft_instance_f32_methods[] = {\n\n    {\"fftLenReal\", (PyCFunction) Method_arm_rfft_instance_f32_fftLenReal,METH_NOARGS,\"fftLenReal\"},\n    {\"fftLenBy2\", (PyCFunction) Method_arm_rfft_instance_f32_fftLenBy2,METH_NOARGS,\"fftLenBy2\"},\n    {\"ifftFlagR\", (PyCFunction) Method_arm_rfft_instance_f32_ifftFlagR,METH_NOARGS,\"ifftFlagR\"},\n    {\"bitReverseFlagR\", (PyCFunction) Method_arm_rfft_instance_f32_bitReverseFlagR,METH_NOARGS,\"bitReverseFlagR\"},\n    {\"twidCoefRModifier\", (PyCFunction) Method_arm_rfft_instance_f32_twidCoefRModifier,METH_NOARGS,\"twidCoefRModifier\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_rfft_instance_f32,arm_rfft_instance_f32_new,arm_rfft_instance_f32_dealloc,arm_rfft_instance_f32_init,arm_rfft_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_rfft_fast_instance_f32 *instance;\n} ml_arm_rfft_fast_instance_f32Object;\n\n\nstatic void\narm_rfft_fast_instance_f32_dealloc(ml_arm_rfft_fast_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_rfft_fast_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_rfft_fast_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_rfft_fast_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_rfft_fast_instance_f32));\n\n        self->instance->pTwiddleRFFT = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_rfft_fast_instance_f32_init(ml_arm_rfft_fast_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddleRFFT=NULL;\nchar *kwlist[] = {\n\"Sint\",\"fftLenRFFT\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|?h\", kwlist,&self->instance->Sint\n,&self->instance->fftLenRFFT\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_rfft_fast_instance_f32,Sint,\"?\");\nGETFIELD(arm_rfft_fast_instance_f32,fftLenRFFT,\"h\");\n\n\nstatic PyMethodDef arm_rfft_fast_instance_f32_methods[] = {\n\n    {\"Sint\", (PyCFunction) Method_arm_rfft_fast_instance_f32_Sint,METH_NOARGS,\"Sint\"},\n    {\"fftLenRFFT\", (PyCFunction) Method_arm_rfft_fast_instance_f32_fftLenRFFT,METH_NOARGS,\"fftLenRFFT\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_rfft_fast_instance_f32,arm_rfft_fast_instance_f32_new,arm_rfft_fast_instance_f32_dealloc,arm_rfft_fast_instance_f32_init,arm_rfft_fast_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_dct4_instance_f32 *instance;\n} ml_arm_dct4_instance_f32Object;\n\n\nstatic void\narm_dct4_instance_f32_dealloc(ml_arm_dct4_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_dct4_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_dct4_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_dct4_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_dct4_instance_f32));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pCosFactor = NULL;\n        self->instance->pRfft = NULL;\n        self->instance->pCfft = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_dct4_instance_f32_init(ml_arm_dct4_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pCosFactor=NULL;\n    PyObject *pRfft=NULL;\n    PyObject *pCfft=NULL;\nchar *kwlist[] = {\n\"N\",\"Nby2\",\"normalize\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhf\", kwlist,&self->instance->N\n,&self->instance->Nby2\n,&self->instance->normalize\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_dct4_instance_f32,N,\"h\");\nGETFIELD(arm_dct4_instance_f32,Nby2,\"h\");\nGETFIELD(arm_dct4_instance_f32,normalize,\"f\");\n\n\nstatic PyMethodDef arm_dct4_instance_f32_methods[] = {\n\n    {\"N\", (PyCFunction) Method_arm_dct4_instance_f32_N,METH_NOARGS,\"N\"},\n    {\"Nby2\", (PyCFunction) Method_arm_dct4_instance_f32_Nby2,METH_NOARGS,\"Nby2\"},\n    {\"normalize\", (PyCFunction) Method_arm_dct4_instance_f32_normalize,METH_NOARGS,\"normalize\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_dct4_instance_f32,arm_dct4_instance_f32_new,arm_dct4_instance_f32_dealloc,arm_dct4_instance_f32_init,arm_dct4_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_dct4_instance_q31 *instance;\n} ml_arm_dct4_instance_q31Object;\n\n\nstatic void\narm_dct4_instance_q31_dealloc(ml_arm_dct4_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_dct4_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_dct4_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_dct4_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_dct4_instance_q31));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pCosFactor = NULL;\n        self->instance->pRfft = NULL;\n        self->instance->pCfft = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_dct4_instance_q31_init(ml_arm_dct4_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pCosFactor=NULL;\n    PyObject *pRfft=NULL;\n    PyObject *pCfft=NULL;\nchar *kwlist[] = {\n\"N\",\"Nby2\",\"normalize\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhi\", kwlist,&self->instance->N\n,&self->instance->Nby2\n,&self->instance->normalize\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_dct4_instance_q31,N,\"h\");\nGETFIELD(arm_dct4_instance_q31,Nby2,\"h\");\nGETFIELD(arm_dct4_instance_q31,normalize,\"i\");\n\n\nstatic PyMethodDef arm_dct4_instance_q31_methods[] = {\n\n    {\"N\", (PyCFunction) Method_arm_dct4_instance_q31_N,METH_NOARGS,\"N\"},\n    {\"Nby2\", (PyCFunction) Method_arm_dct4_instance_q31_Nby2,METH_NOARGS,\"Nby2\"},\n    {\"normalize\", (PyCFunction) Method_arm_dct4_instance_q31_normalize,METH_NOARGS,\"normalize\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_dct4_instance_q31,arm_dct4_instance_q31_new,arm_dct4_instance_q31_dealloc,arm_dct4_instance_q31_init,arm_dct4_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_dct4_instance_q15 *instance;\n} ml_arm_dct4_instance_q15Object;\n\n\nstatic void\narm_dct4_instance_q15_dealloc(ml_arm_dct4_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_dct4_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_dct4_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_dct4_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_dct4_instance_q15));\n\n        self->instance->pTwiddle = NULL;\n        self->instance->pCosFactor = NULL;\n        self->instance->pRfft = NULL;\n        self->instance->pCfft = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_dct4_instance_q15_init(ml_arm_dct4_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pTwiddle=NULL;\n    PyObject *pCosFactor=NULL;\n    PyObject *pRfft=NULL;\n    PyObject *pCfft=NULL;\nchar *kwlist[] = {\n\"N\",\"Nby2\",\"normalize\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhh\", kwlist,&self->instance->N\n,&self->instance->Nby2\n,&self->instance->normalize\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_dct4_instance_q15,N,\"h\");\nGETFIELD(arm_dct4_instance_q15,Nby2,\"h\");\nGETFIELD(arm_dct4_instance_q15,normalize,\"h\");\n\n\nstatic PyMethodDef arm_dct4_instance_q15_methods[] = {\n\n    {\"N\", (PyCFunction) Method_arm_dct4_instance_q15_N,METH_NOARGS,\"N\"},\n    {\"Nby2\", (PyCFunction) Method_arm_dct4_instance_q15_Nby2,METH_NOARGS,\"Nby2\"},\n    {\"normalize\", (PyCFunction) Method_arm_dct4_instance_q15_normalize,METH_NOARGS,\"normalize\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_dct4_instance_q15,arm_dct4_instance_q15_new,arm_dct4_instance_q15_dealloc,arm_dct4_instance_q15_init,arm_dct4_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_decimate_instance_q15 *instance;\n} ml_arm_fir_decimate_instance_q15Object;\n\n\nstatic void\narm_fir_decimate_instance_q15_dealloc(ml_arm_fir_decimate_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_decimate_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_decimate_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_decimate_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_decimate_instance_q15));\n\n        self->instance->pCoeffs = NULL;\n        self->instance->pState = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_decimate_instance_q15_init(ml_arm_fir_decimate_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pCoeffs=NULL;\n    PyObject *pState=NULL;\nchar *kwlist[] = {\n\"M\",\"numTaps\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ih\", kwlist,&self->instance->M\n,&self->instance->numTaps\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_decimate_instance_q15,M,\"i\");\nGETFIELD(arm_fir_decimate_instance_q15,numTaps,\"h\");\n\n\nstatic PyMethodDef arm_fir_decimate_instance_q15_methods[] = {\n\n    {\"M\", (PyCFunction) Method_arm_fir_decimate_instance_q15_M,METH_NOARGS,\"M\"},\n    {\"numTaps\", (PyCFunction) Method_arm_fir_decimate_instance_q15_numTaps,METH_NOARGS,\"numTaps\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_decimate_instance_q15,arm_fir_decimate_instance_q15_new,arm_fir_decimate_instance_q15_dealloc,arm_fir_decimate_instance_q15_init,arm_fir_decimate_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_decimate_instance_q31 *instance;\n} ml_arm_fir_decimate_instance_q31Object;\n\n\nstatic void\narm_fir_decimate_instance_q31_dealloc(ml_arm_fir_decimate_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_decimate_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_decimate_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_decimate_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_decimate_instance_q31));\n\n        self->instance->pCoeffs = NULL;\n        self->instance->pState = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_decimate_instance_q31_init(ml_arm_fir_decimate_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pCoeffs=NULL;\n    PyObject *pState=NULL;\nchar *kwlist[] = {\n\"M\",\"numTaps\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ih\", kwlist,&self->instance->M\n,&self->instance->numTaps\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_decimate_instance_q31,M,\"i\");\nGETFIELD(arm_fir_decimate_instance_q31,numTaps,\"h\");\n\n\nstatic PyMethodDef arm_fir_decimate_instance_q31_methods[] = {\n\n    {\"M\", (PyCFunction) Method_arm_fir_decimate_instance_q31_M,METH_NOARGS,\"M\"},\n    {\"numTaps\", (PyCFunction) Method_arm_fir_decimate_instance_q31_numTaps,METH_NOARGS,\"numTaps\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_decimate_instance_q31,arm_fir_decimate_instance_q31_new,arm_fir_decimate_instance_q31_dealloc,arm_fir_decimate_instance_q31_init,arm_fir_decimate_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_decimate_instance_f32 *instance;\n} ml_arm_fir_decimate_instance_f32Object;\n\n\nstatic void\narm_fir_decimate_instance_f32_dealloc(ml_arm_fir_decimate_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_decimate_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_decimate_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_decimate_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_decimate_instance_f32));\n\n        self->instance->pCoeffs = NULL;\n        self->instance->pState = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_decimate_instance_f32_init(ml_arm_fir_decimate_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pCoeffs=NULL;\n    PyObject *pState=NULL;\nchar *kwlist[] = {\n\"M\",\"numTaps\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ih\", kwlist,&self->instance->M\n,&self->instance->numTaps\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_decimate_instance_f32,M,\"i\");\nGETFIELD(arm_fir_decimate_instance_f32,numTaps,\"h\");\n\n\nstatic PyMethodDef arm_fir_decimate_instance_f32_methods[] = {\n\n    {\"M\", (PyCFunction) Method_arm_fir_decimate_instance_f32_M,METH_NOARGS,\"M\"},\n    {\"numTaps\", (PyCFunction) Method_arm_fir_decimate_instance_f32_numTaps,METH_NOARGS,\"numTaps\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_decimate_instance_f32,arm_fir_decimate_instance_f32_new,arm_fir_decimate_instance_f32_dealloc,arm_fir_decimate_instance_f32_init,arm_fir_decimate_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_interpolate_instance_q15 *instance;\n} ml_arm_fir_interpolate_instance_q15Object;\n\n\nstatic void\narm_fir_interpolate_instance_q15_dealloc(ml_arm_fir_interpolate_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_interpolate_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_interpolate_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_interpolate_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_interpolate_instance_q15));\n\n        self->instance->pCoeffs = NULL;\n        self->instance->pState = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_interpolate_instance_q15_init(ml_arm_fir_interpolate_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pCoeffs=NULL;\n    PyObject *pState=NULL;\nchar *kwlist[] = {\n\"L\",\"phaseLength\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ih\", kwlist,&self->instance->L\n,&self->instance->phaseLength\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_interpolate_instance_q15,L,\"i\");\nGETFIELD(arm_fir_interpolate_instance_q15,phaseLength,\"h\");\n\n\nstatic PyMethodDef arm_fir_interpolate_instance_q15_methods[] = {\n\n    {\"L\", (PyCFunction) Method_arm_fir_interpolate_instance_q15_L,METH_NOARGS,\"L\"},\n    {\"phaseLength\", (PyCFunction) Method_arm_fir_interpolate_instance_q15_phaseLength,METH_NOARGS,\"phaseLength\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_interpolate_instance_q15,arm_fir_interpolate_instance_q15_new,arm_fir_interpolate_instance_q15_dealloc,arm_fir_interpolate_instance_q15_init,arm_fir_interpolate_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_interpolate_instance_q31 *instance;\n} ml_arm_fir_interpolate_instance_q31Object;\n\n\nstatic void\narm_fir_interpolate_instance_q31_dealloc(ml_arm_fir_interpolate_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_interpolate_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_interpolate_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_interpolate_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_interpolate_instance_q31));\n\n        self->instance->pCoeffs = NULL;\n        self->instance->pState = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_interpolate_instance_q31_init(ml_arm_fir_interpolate_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pCoeffs=NULL;\n    PyObject *pState=NULL;\nchar *kwlist[] = {\n\"L\",\"phaseLength\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ih\", kwlist,&self->instance->L\n,&self->instance->phaseLength\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_interpolate_instance_q31,L,\"i\");\nGETFIELD(arm_fir_interpolate_instance_q31,phaseLength,\"h\");\n\n\nstatic PyMethodDef arm_fir_interpolate_instance_q31_methods[] = {\n\n    {\"L\", (PyCFunction) Method_arm_fir_interpolate_instance_q31_L,METH_NOARGS,\"L\"},\n    {\"phaseLength\", (PyCFunction) Method_arm_fir_interpolate_instance_q31_phaseLength,METH_NOARGS,\"phaseLength\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_interpolate_instance_q31,arm_fir_interpolate_instance_q31_new,arm_fir_interpolate_instance_q31_dealloc,arm_fir_interpolate_instance_q31_init,arm_fir_interpolate_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_interpolate_instance_f32 *instance;\n} ml_arm_fir_interpolate_instance_f32Object;\n\n\nstatic void\narm_fir_interpolate_instance_f32_dealloc(ml_arm_fir_interpolate_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_interpolate_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_interpolate_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_interpolate_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_interpolate_instance_f32));\n\n        self->instance->pCoeffs = NULL;\n        self->instance->pState = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_interpolate_instance_f32_init(ml_arm_fir_interpolate_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pCoeffs=NULL;\n    PyObject *pState=NULL;\nchar *kwlist[] = {\n\"L\",\"phaseLength\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ih\", kwlist,&self->instance->L\n,&self->instance->phaseLength\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_interpolate_instance_f32,L,\"i\");\nGETFIELD(arm_fir_interpolate_instance_f32,phaseLength,\"h\");\n\n\nstatic PyMethodDef arm_fir_interpolate_instance_f32_methods[] = {\n\n    {\"L\", (PyCFunction) Method_arm_fir_interpolate_instance_f32_L,METH_NOARGS,\"L\"},\n    {\"phaseLength\", (PyCFunction) Method_arm_fir_interpolate_instance_f32_phaseLength,METH_NOARGS,\"phaseLength\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_interpolate_instance_f32,arm_fir_interpolate_instance_f32_new,arm_fir_interpolate_instance_f32_dealloc,arm_fir_interpolate_instance_f32_init,arm_fir_interpolate_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_biquad_cas_df1_32x64_ins_q31 *instance;\n} ml_arm_biquad_cas_df1_32x64_ins_q31Object;\n\n\nstatic void\narm_biquad_cas_df1_32x64_ins_q31_dealloc(ml_arm_biquad_cas_df1_32x64_ins_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_biquad_cas_df1_32x64_ins_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_biquad_cas_df1_32x64_ins_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_biquad_cas_df1_32x64_ins_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_biquad_cas_df1_32x64_ins_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_biquad_cas_df1_32x64_ins_q31_init(ml_arm_biquad_cas_df1_32x64_ins_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",\"postShift\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|ii\", kwlist,&self->instance->numStages\n,&self->instance->postShift\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_biquad_cas_df1_32x64_ins_q31,numStages,\"i\");\nGETFIELD(arm_biquad_cas_df1_32x64_ins_q31,postShift,\"i\");\n\n\nstatic PyMethodDef arm_biquad_cas_df1_32x64_ins_q31_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_biquad_cas_df1_32x64_ins_q31_numStages,METH_NOARGS,\"numStages\"},\n    {\"postShift\", (PyCFunction) Method_arm_biquad_cas_df1_32x64_ins_q31_postShift,METH_NOARGS,\"postShift\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_biquad_cas_df1_32x64_ins_q31,arm_biquad_cas_df1_32x64_ins_q31_new,arm_biquad_cas_df1_32x64_ins_q31_dealloc,arm_biquad_cas_df1_32x64_ins_q31_init,arm_biquad_cas_df1_32x64_ins_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_biquad_cascade_df2T_instance_f32 *instance;\n} ml_arm_biquad_cascade_df2T_instance_f32Object;\n\n\nstatic void\narm_biquad_cascade_df2T_instance_f32_dealloc(ml_arm_biquad_cascade_df2T_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_biquad_cascade_df2T_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_biquad_cascade_df2T_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_biquad_cascade_df2T_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_biquad_cascade_df2T_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_biquad_cascade_df2T_instance_f32_init(ml_arm_biquad_cascade_df2T_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|i\", kwlist,&self->instance->numStages\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_biquad_cascade_df2T_instance_f32,numStages,\"i\");\n\n\nstatic PyMethodDef arm_biquad_cascade_df2T_instance_f32_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_biquad_cascade_df2T_instance_f32_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_biquad_cascade_df2T_instance_f32,arm_biquad_cascade_df2T_instance_f32_new,arm_biquad_cascade_df2T_instance_f32_dealloc,arm_biquad_cascade_df2T_instance_f32_init,arm_biquad_cascade_df2T_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_biquad_cascade_stereo_df2T_instance_f32 *instance;\n} ml_arm_biquad_cascade_stereo_df2T_instance_f32Object;\n\n\nstatic void\narm_biquad_cascade_stereo_df2T_instance_f32_dealloc(ml_arm_biquad_cascade_stereo_df2T_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_biquad_cascade_stereo_df2T_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_biquad_cascade_stereo_df2T_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_biquad_cascade_stereo_df2T_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_biquad_cascade_stereo_df2T_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_biquad_cascade_stereo_df2T_instance_f32_init(ml_arm_biquad_cascade_stereo_df2T_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|i\", kwlist,&self->instance->numStages\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_biquad_cascade_stereo_df2T_instance_f32,numStages,\"i\");\n\n\nstatic PyMethodDef arm_biquad_cascade_stereo_df2T_instance_f32_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_biquad_cascade_stereo_df2T_instance_f32_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_biquad_cascade_stereo_df2T_instance_f32,arm_biquad_cascade_stereo_df2T_instance_f32_new,arm_biquad_cascade_stereo_df2T_instance_f32_dealloc,arm_biquad_cascade_stereo_df2T_instance_f32_init,arm_biquad_cascade_stereo_df2T_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_biquad_cascade_df2T_instance_f64 *instance;\n} ml_arm_biquad_cascade_df2T_instance_f64Object;\n\n\nstatic void\narm_biquad_cascade_df2T_instance_f64_dealloc(ml_arm_biquad_cascade_df2T_instance_f64Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_biquad_cascade_df2T_instance_f64_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_biquad_cascade_df2T_instance_f64Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_biquad_cascade_df2T_instance_f64Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_biquad_cascade_df2T_instance_f64));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_biquad_cascade_df2T_instance_f64_init(ml_arm_biquad_cascade_df2T_instance_f64Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|i\", kwlist,&self->instance->numStages\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_biquad_cascade_df2T_instance_f64,numStages,\"i\");\n\n\nstatic PyMethodDef arm_biquad_cascade_df2T_instance_f64_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_biquad_cascade_df2T_instance_f64_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_biquad_cascade_df2T_instance_f64,arm_biquad_cascade_df2T_instance_f64_new,arm_biquad_cascade_df2T_instance_f64_dealloc,arm_biquad_cascade_df2T_instance_f64_init,arm_biquad_cascade_df2T_instance_f64_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_lattice_instance_q15 *instance;\n} ml_arm_fir_lattice_instance_q15Object;\n\n\nstatic void\narm_fir_lattice_instance_q15_dealloc(ml_arm_fir_lattice_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_lattice_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_lattice_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_lattice_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_lattice_instance_q15));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_lattice_instance_q15_init(ml_arm_fir_lattice_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|h\", kwlist,&self->instance->numStages\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_lattice_instance_q15,numStages,\"h\");\n\n\nstatic PyMethodDef arm_fir_lattice_instance_q15_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_fir_lattice_instance_q15_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_lattice_instance_q15,arm_fir_lattice_instance_q15_new,arm_fir_lattice_instance_q15_dealloc,arm_fir_lattice_instance_q15_init,arm_fir_lattice_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_lattice_instance_q31 *instance;\n} ml_arm_fir_lattice_instance_q31Object;\n\n\nstatic void\narm_fir_lattice_instance_q31_dealloc(ml_arm_fir_lattice_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_lattice_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_lattice_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_lattice_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_lattice_instance_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_lattice_instance_q31_init(ml_arm_fir_lattice_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|h\", kwlist,&self->instance->numStages\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_lattice_instance_q31,numStages,\"h\");\n\n\nstatic PyMethodDef arm_fir_lattice_instance_q31_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_fir_lattice_instance_q31_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_lattice_instance_q31,arm_fir_lattice_instance_q31_new,arm_fir_lattice_instance_q31_dealloc,arm_fir_lattice_instance_q31_init,arm_fir_lattice_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_lattice_instance_f32 *instance;\n} ml_arm_fir_lattice_instance_f32Object;\n\n\nstatic void\narm_fir_lattice_instance_f32_dealloc(ml_arm_fir_lattice_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_lattice_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_lattice_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_lattice_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_lattice_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_lattice_instance_f32_init(ml_arm_fir_lattice_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|h\", kwlist,&self->instance->numStages\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_lattice_instance_f32,numStages,\"h\");\n\n\nstatic PyMethodDef arm_fir_lattice_instance_f32_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_fir_lattice_instance_f32_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_lattice_instance_f32,arm_fir_lattice_instance_f32_new,arm_fir_lattice_instance_f32_dealloc,arm_fir_lattice_instance_f32_init,arm_fir_lattice_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_iir_lattice_instance_q15 *instance;\n} ml_arm_iir_lattice_instance_q15Object;\n\n\nstatic void\narm_iir_lattice_instance_q15_dealloc(ml_arm_iir_lattice_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pkCoeffs)\n       {\n          PyMem_Free(self->instance->pkCoeffs);\n       }\n\n\n       if (self->instance->pvCoeffs)\n       {\n          PyMem_Free(self->instance->pvCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_iir_lattice_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_iir_lattice_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_iir_lattice_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_iir_lattice_instance_q15));\n\n        self->instance->pState = NULL;\n        self->instance->pkCoeffs = NULL;\n        self->instance->pvCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_iir_lattice_instance_q15_init(ml_arm_iir_lattice_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pkCoeffs=NULL;\n    PyObject *pvCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",\"pkCoeffs\",\"pvCoeffs\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hOO\", kwlist,&self->instance->numStages\n,&pkCoeffs\n,&pvCoeffs\n))\n    {\n\n    INITARRAYFIELD(pkCoeffs,NPY_INT16,int16_t,int16_t);\n    INITARRAYFIELD(pvCoeffs,NPY_INT16,int16_t,int16_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_iir_lattice_instance_q15,numStages,\"h\");\n\n\nstatic PyMethodDef arm_iir_lattice_instance_q15_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_iir_lattice_instance_q15_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_iir_lattice_instance_q15,arm_iir_lattice_instance_q15_new,arm_iir_lattice_instance_q15_dealloc,arm_iir_lattice_instance_q15_init,arm_iir_lattice_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_iir_lattice_instance_q31 *instance;\n} ml_arm_iir_lattice_instance_q31Object;\n\n\nstatic void\narm_iir_lattice_instance_q31_dealloc(ml_arm_iir_lattice_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pkCoeffs)\n       {\n          PyMem_Free(self->instance->pkCoeffs);\n       }\n\n\n       if (self->instance->pvCoeffs)\n       {\n          PyMem_Free(self->instance->pvCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_iir_lattice_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_iir_lattice_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_iir_lattice_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_iir_lattice_instance_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pkCoeffs = NULL;\n        self->instance->pvCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_iir_lattice_instance_q31_init(ml_arm_iir_lattice_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pkCoeffs=NULL;\n    PyObject *pvCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",\"pkCoeffs\",\"pvCoeffs\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hOO\", kwlist,&self->instance->numStages\n,&pkCoeffs\n,&pvCoeffs\n))\n    {\n\n    INITARRAYFIELD(pkCoeffs,NPY_INT32,int32_t,int32_t);\n    INITARRAYFIELD(pvCoeffs,NPY_INT32,int32_t,int32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_iir_lattice_instance_q31,numStages,\"h\");\n\n\nstatic PyMethodDef arm_iir_lattice_instance_q31_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_iir_lattice_instance_q31_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_iir_lattice_instance_q31,arm_iir_lattice_instance_q31_new,arm_iir_lattice_instance_q31_dealloc,arm_iir_lattice_instance_q31_init,arm_iir_lattice_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_iir_lattice_instance_f32 *instance;\n} ml_arm_iir_lattice_instance_f32Object;\n\n\nstatic void\narm_iir_lattice_instance_f32_dealloc(ml_arm_iir_lattice_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pkCoeffs)\n       {\n          PyMem_Free(self->instance->pkCoeffs);\n       }\n\n\n       if (self->instance->pvCoeffs)\n       {\n          PyMem_Free(self->instance->pvCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_iir_lattice_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_iir_lattice_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_iir_lattice_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_iir_lattice_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pkCoeffs = NULL;\n        self->instance->pvCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_iir_lattice_instance_f32_init(ml_arm_iir_lattice_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pkCoeffs=NULL;\n    PyObject *pvCoeffs=NULL;\nchar *kwlist[] = {\n\"numStages\",\"pkCoeffs\",\"pvCoeffs\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hOO\", kwlist,&self->instance->numStages\n,&pkCoeffs\n,&pvCoeffs\n))\n    {\n\n    INITARRAYFIELD(pkCoeffs,NPY_DOUBLE,double,float32_t);\n    INITARRAYFIELD(pvCoeffs,NPY_DOUBLE,double,float32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_iir_lattice_instance_f32,numStages,\"h\");\n\n\nstatic PyMethodDef arm_iir_lattice_instance_f32_methods[] = {\n\n    {\"numStages\", (PyCFunction) Method_arm_iir_lattice_instance_f32_numStages,METH_NOARGS,\"numStages\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_iir_lattice_instance_f32,arm_iir_lattice_instance_f32_new,arm_iir_lattice_instance_f32_dealloc,arm_iir_lattice_instance_f32_init,arm_iir_lattice_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_lms_instance_f32 *instance;\n} ml_arm_lms_instance_f32Object;\n\n\nstatic void\narm_lms_instance_f32_dealloc(ml_arm_lms_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_lms_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_lms_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_lms_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_lms_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_lms_instance_f32_init(ml_arm_lms_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"mu\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hf\", kwlist,&self->instance->numTaps\n,&self->instance->mu\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_lms_instance_f32,numTaps,\"h\");\nGETFIELD(arm_lms_instance_f32,mu,\"f\");\n\n\nstatic PyMethodDef arm_lms_instance_f32_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_lms_instance_f32_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"mu\", (PyCFunction) Method_arm_lms_instance_f32_mu,METH_NOARGS,\"mu\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_lms_instance_f32,arm_lms_instance_f32_new,arm_lms_instance_f32_dealloc,arm_lms_instance_f32_init,arm_lms_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_lms_instance_q15 *instance;\n} ml_arm_lms_instance_q15Object;\n\n\nstatic void\narm_lms_instance_q15_dealloc(ml_arm_lms_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_lms_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_lms_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_lms_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_lms_instance_q15));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_lms_instance_q15_init(ml_arm_lms_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"mu\",\"postShift\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhi\", kwlist,&self->instance->numTaps\n,&self->instance->mu\n,&self->instance->postShift\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_lms_instance_q15,numTaps,\"h\");\nGETFIELD(arm_lms_instance_q15,mu,\"h\");\nGETFIELD(arm_lms_instance_q15,postShift,\"i\");\n\n\nstatic PyMethodDef arm_lms_instance_q15_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_lms_instance_q15_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"mu\", (PyCFunction) Method_arm_lms_instance_q15_mu,METH_NOARGS,\"mu\"},\n    {\"postShift\", (PyCFunction) Method_arm_lms_instance_q15_postShift,METH_NOARGS,\"postShift\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_lms_instance_q15,arm_lms_instance_q15_new,arm_lms_instance_q15_dealloc,arm_lms_instance_q15_init,arm_lms_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_lms_instance_q31 *instance;\n} ml_arm_lms_instance_q31Object;\n\n\nstatic void\narm_lms_instance_q31_dealloc(ml_arm_lms_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_lms_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_lms_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_lms_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_lms_instance_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_lms_instance_q31_init(ml_arm_lms_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"mu\",\"postShift\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hii\", kwlist,&self->instance->numTaps\n,&self->instance->mu\n,&self->instance->postShift\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_lms_instance_q31,numTaps,\"h\");\nGETFIELD(arm_lms_instance_q31,mu,\"i\");\nGETFIELD(arm_lms_instance_q31,postShift,\"i\");\n\n\nstatic PyMethodDef arm_lms_instance_q31_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_lms_instance_q31_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"mu\", (PyCFunction) Method_arm_lms_instance_q31_mu,METH_NOARGS,\"mu\"},\n    {\"postShift\", (PyCFunction) Method_arm_lms_instance_q31_postShift,METH_NOARGS,\"postShift\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_lms_instance_q31,arm_lms_instance_q31_new,arm_lms_instance_q31_dealloc,arm_lms_instance_q31_init,arm_lms_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_lms_norm_instance_f32 *instance;\n} ml_arm_lms_norm_instance_f32Object;\n\n\nstatic void\narm_lms_norm_instance_f32_dealloc(ml_arm_lms_norm_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_lms_norm_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_lms_norm_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_lms_norm_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_lms_norm_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_lms_norm_instance_f32_init(ml_arm_lms_norm_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"mu\",\"energy\",\"x0\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hfff\", kwlist,&self->instance->numTaps\n,&self->instance->mu\n,&self->instance->energy\n,&self->instance->x0\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_lms_norm_instance_f32,numTaps,\"h\");\nGETFIELD(arm_lms_norm_instance_f32,mu,\"f\");\nGETFIELD(arm_lms_norm_instance_f32,energy,\"f\");\nGETFIELD(arm_lms_norm_instance_f32,x0,\"f\");\n\n\nstatic PyMethodDef arm_lms_norm_instance_f32_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_lms_norm_instance_f32_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"mu\", (PyCFunction) Method_arm_lms_norm_instance_f32_mu,METH_NOARGS,\"mu\"},\n    {\"energy\", (PyCFunction) Method_arm_lms_norm_instance_f32_energy,METH_NOARGS,\"energy\"},\n    {\"x0\", (PyCFunction) Method_arm_lms_norm_instance_f32_x0,METH_NOARGS,\"x0\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_lms_norm_instance_f32,arm_lms_norm_instance_f32_new,arm_lms_norm_instance_f32_dealloc,arm_lms_norm_instance_f32_init,arm_lms_norm_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_lms_norm_instance_q31 *instance;\n} ml_arm_lms_norm_instance_q31Object;\n\n\nstatic void\narm_lms_norm_instance_q31_dealloc(ml_arm_lms_norm_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_lms_norm_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_lms_norm_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_lms_norm_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_lms_norm_instance_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n        self->instance->recipTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_lms_norm_instance_q31_init(ml_arm_lms_norm_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\n    PyObject *recipTable=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"mu\",\"postShift\",\"energy\",\"x0\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hiiii\", kwlist,&self->instance->numTaps\n,&self->instance->mu\n,&self->instance->postShift\n,&self->instance->energy\n,&self->instance->x0\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_lms_norm_instance_q31,numTaps,\"h\");\nGETFIELD(arm_lms_norm_instance_q31,mu,\"i\");\nGETFIELD(arm_lms_norm_instance_q31,postShift,\"i\");\nGETFIELD(arm_lms_norm_instance_q31,energy,\"i\");\nGETFIELD(arm_lms_norm_instance_q31,x0,\"i\");\n\n\nstatic PyMethodDef arm_lms_norm_instance_q31_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_lms_norm_instance_q31_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"mu\", (PyCFunction) Method_arm_lms_norm_instance_q31_mu,METH_NOARGS,\"mu\"},\n    {\"postShift\", (PyCFunction) Method_arm_lms_norm_instance_q31_postShift,METH_NOARGS,\"postShift\"},\n    {\"energy\", (PyCFunction) Method_arm_lms_norm_instance_q31_energy,METH_NOARGS,\"energy\"},\n    {\"x0\", (PyCFunction) Method_arm_lms_norm_instance_q31_x0,METH_NOARGS,\"x0\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_lms_norm_instance_q31,arm_lms_norm_instance_q31_new,arm_lms_norm_instance_q31_dealloc,arm_lms_norm_instance_q31_init,arm_lms_norm_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_lms_norm_instance_q15 *instance;\n} ml_arm_lms_norm_instance_q15Object;\n\n\nstatic void\narm_lms_norm_instance_q15_dealloc(ml_arm_lms_norm_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_lms_norm_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_lms_norm_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_lms_norm_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_lms_norm_instance_q15));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n        self->instance->recipTable = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_lms_norm_instance_q15_init(ml_arm_lms_norm_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\n    PyObject *recipTable=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"mu\",\"postShift\",\"energy\",\"x0\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhihh\", kwlist,&self->instance->numTaps\n,&self->instance->mu\n,&self->instance->postShift\n,&self->instance->energy\n,&self->instance->x0\n))\n    {\n\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_lms_norm_instance_q15,numTaps,\"h\");\nGETFIELD(arm_lms_norm_instance_q15,mu,\"h\");\nGETFIELD(arm_lms_norm_instance_q15,postShift,\"i\");\nGETFIELD(arm_lms_norm_instance_q15,energy,\"h\");\nGETFIELD(arm_lms_norm_instance_q15,x0,\"h\");\n\n\nstatic PyMethodDef arm_lms_norm_instance_q15_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_lms_norm_instance_q15_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"mu\", (PyCFunction) Method_arm_lms_norm_instance_q15_mu,METH_NOARGS,\"mu\"},\n    {\"postShift\", (PyCFunction) Method_arm_lms_norm_instance_q15_postShift,METH_NOARGS,\"postShift\"},\n    {\"energy\", (PyCFunction) Method_arm_lms_norm_instance_q15_energy,METH_NOARGS,\"energy\"},\n    {\"x0\", (PyCFunction) Method_arm_lms_norm_instance_q15_x0,METH_NOARGS,\"x0\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_lms_norm_instance_q15,arm_lms_norm_instance_q15_new,arm_lms_norm_instance_q15_dealloc,arm_lms_norm_instance_q15_init,arm_lms_norm_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_sparse_instance_f32 *instance;\n} ml_arm_fir_sparse_instance_f32Object;\n\n\nstatic void\narm_fir_sparse_instance_f32_dealloc(ml_arm_fir_sparse_instance_f32Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pTapDelay)\n       {\n          PyMem_Free(self->instance->pTapDelay);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_sparse_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_sparse_instance_f32Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_sparse_instance_f32Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_sparse_instance_f32));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n        self->instance->pTapDelay = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_sparse_instance_f32_init(ml_arm_fir_sparse_instance_f32Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\n    PyObject *pTapDelay=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"stateIndex\",\"maxDelay\",\"pTapDelay\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhhO\", kwlist,&self->instance->numTaps\n,&self->instance->stateIndex\n,&self->instance->maxDelay\n,&pTapDelay\n))\n    {\n\n    INITARRAYFIELD(pTapDelay,NPY_INT32,int32_t,int32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_sparse_instance_f32,numTaps,\"h\");\nGETFIELD(arm_fir_sparse_instance_f32,stateIndex,\"h\");\nGETFIELD(arm_fir_sparse_instance_f32,maxDelay,\"h\");\n\n\nstatic PyMethodDef arm_fir_sparse_instance_f32_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_sparse_instance_f32_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"stateIndex\", (PyCFunction) Method_arm_fir_sparse_instance_f32_stateIndex,METH_NOARGS,\"stateIndex\"},\n    {\"maxDelay\", (PyCFunction) Method_arm_fir_sparse_instance_f32_maxDelay,METH_NOARGS,\"maxDelay\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_sparse_instance_f32,arm_fir_sparse_instance_f32_new,arm_fir_sparse_instance_f32_dealloc,arm_fir_sparse_instance_f32_init,arm_fir_sparse_instance_f32_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_sparse_instance_q31 *instance;\n} ml_arm_fir_sparse_instance_q31Object;\n\n\nstatic void\narm_fir_sparse_instance_q31_dealloc(ml_arm_fir_sparse_instance_q31Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pTapDelay)\n       {\n          PyMem_Free(self->instance->pTapDelay);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_sparse_instance_q31_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_sparse_instance_q31Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_sparse_instance_q31Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_sparse_instance_q31));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n        self->instance->pTapDelay = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_sparse_instance_q31_init(ml_arm_fir_sparse_instance_q31Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\n    PyObject *pTapDelay=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"stateIndex\",\"maxDelay\",\"pTapDelay\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhhO\", kwlist,&self->instance->numTaps\n,&self->instance->stateIndex\n,&self->instance->maxDelay\n,&pTapDelay\n))\n    {\n\n    INITARRAYFIELD(pTapDelay,NPY_INT32,int32_t,int32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_sparse_instance_q31,numTaps,\"h\");\nGETFIELD(arm_fir_sparse_instance_q31,stateIndex,\"h\");\nGETFIELD(arm_fir_sparse_instance_q31,maxDelay,\"h\");\n\n\nstatic PyMethodDef arm_fir_sparse_instance_q31_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_sparse_instance_q31_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"stateIndex\", (PyCFunction) Method_arm_fir_sparse_instance_q31_stateIndex,METH_NOARGS,\"stateIndex\"},\n    {\"maxDelay\", (PyCFunction) Method_arm_fir_sparse_instance_q31_maxDelay,METH_NOARGS,\"maxDelay\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_sparse_instance_q31,arm_fir_sparse_instance_q31_new,arm_fir_sparse_instance_q31_dealloc,arm_fir_sparse_instance_q31_init,arm_fir_sparse_instance_q31_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_sparse_instance_q15 *instance;\n} ml_arm_fir_sparse_instance_q15Object;\n\n\nstatic void\narm_fir_sparse_instance_q15_dealloc(ml_arm_fir_sparse_instance_q15Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pTapDelay)\n       {\n          PyMem_Free(self->instance->pTapDelay);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_sparse_instance_q15_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_sparse_instance_q15Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_sparse_instance_q15Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_sparse_instance_q15));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n        self->instance->pTapDelay = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_sparse_instance_q15_init(ml_arm_fir_sparse_instance_q15Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\n    PyObject *pTapDelay=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"stateIndex\",\"maxDelay\",\"pTapDelay\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhhO\", kwlist,&self->instance->numTaps\n,&self->instance->stateIndex\n,&self->instance->maxDelay\n,&pTapDelay\n))\n    {\n\n    INITARRAYFIELD(pTapDelay,NPY_INT32,int32_t,int32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_sparse_instance_q15,numTaps,\"h\");\nGETFIELD(arm_fir_sparse_instance_q15,stateIndex,\"h\");\nGETFIELD(arm_fir_sparse_instance_q15,maxDelay,\"h\");\n\n\nstatic PyMethodDef arm_fir_sparse_instance_q15_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_sparse_instance_q15_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"stateIndex\", (PyCFunction) Method_arm_fir_sparse_instance_q15_stateIndex,METH_NOARGS,\"stateIndex\"},\n    {\"maxDelay\", (PyCFunction) Method_arm_fir_sparse_instance_q15_maxDelay,METH_NOARGS,\"maxDelay\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_sparse_instance_q15,arm_fir_sparse_instance_q15_new,arm_fir_sparse_instance_q15_dealloc,arm_fir_sparse_instance_q15_init,arm_fir_sparse_instance_q15_methods);\n\n\ntypedef struct {\n    PyObject_HEAD\n    arm_fir_sparse_instance_q7 *instance;\n} ml_arm_fir_sparse_instance_q7Object;\n\n\nstatic void\narm_fir_sparse_instance_q7_dealloc(ml_arm_fir_sparse_instance_q7Object* self)\n{\n    //printf(\"Dealloc called\\n\");\n    if (self->instance)\n    {\n\n\n       if (self->instance->pState)\n       {\n          PyMem_Free(self->instance->pState);\n       }\n\n\n       if (self->instance->pCoeffs)\n       {\n          PyMem_Free(self->instance->pCoeffs);\n       }\n\n\n       if (self->instance->pTapDelay)\n       {\n          PyMem_Free(self->instance->pTapDelay);\n       }\n\n\n       PyMem_Free(self->instance);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*)self);\n}\n\n\nstatic PyObject *\narm_fir_sparse_instance_q7_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n{\n    ml_arm_fir_sparse_instance_q7Object *self;\n    //printf(\"New called\\n\");\n\n    self = (ml_arm_fir_sparse_instance_q7Object *)type->tp_alloc(type, 0);\n    //printf(\"alloc called\\n\");\n\n    if (self != NULL) {\n\n        self->instance = PyMem_Malloc(sizeof(arm_fir_sparse_instance_q7));\n\n        self->instance->pState = NULL;\n        self->instance->pCoeffs = NULL;\n        self->instance->pTapDelay = NULL;\n\n    }\n \n   \n    return (PyObject *)self;\n}\n\nstatic int\narm_fir_sparse_instance_q7_init(ml_arm_fir_sparse_instance_q7Object *self, PyObject *args, PyObject *kwds)\n{\n\n    PyObject *pState=NULL;\n    PyObject *pCoeffs=NULL;\n    PyObject *pTapDelay=NULL;\nchar *kwlist[] = {\n\"numTaps\",\"stateIndex\",\"maxDelay\",\"pTapDelay\",NULL\n};\n\nif (PyArg_ParseTupleAndKeywords(args, kwds, \"|hhhO\", kwlist,&self->instance->numTaps\n,&self->instance->stateIndex\n,&self->instance->maxDelay\n,&pTapDelay\n))\n    {\n\n    INITARRAYFIELD(pTapDelay,NPY_INT32,int32_t,int32_t);\n\n    }\n    return 0;\n}\n\nGETFIELD(arm_fir_sparse_instance_q7,numTaps,\"h\");\nGETFIELD(arm_fir_sparse_instance_q7,stateIndex,\"h\");\nGETFIELD(arm_fir_sparse_instance_q7,maxDelay,\"h\");\n\n\nstatic PyMethodDef arm_fir_sparse_instance_q7_methods[] = {\n\n    {\"numTaps\", (PyCFunction) Method_arm_fir_sparse_instance_q7_numTaps,METH_NOARGS,\"numTaps\"},\n    {\"stateIndex\", (PyCFunction) Method_arm_fir_sparse_instance_q7_stateIndex,METH_NOARGS,\"stateIndex\"},\n    {\"maxDelay\", (PyCFunction) Method_arm_fir_sparse_instance_q7_maxDelay,METH_NOARGS,\"maxDelay\"},\n\n    {NULL}  /* Sentinel */\n};\n\n\nMLTYPE(arm_fir_sparse_instance_q7,arm_fir_sparse_instance_q7_new,arm_fir_sparse_instance_q7_dealloc,arm_fir_sparse_instance_q7_init,arm_fir_sparse_instance_q7_methods);\n\n\nvoid typeRegistration(PyObject *module) {\n\n  ADDTYPE(arm_fir_instance_q7);\n  ADDTYPE(arm_fir_instance_q15);\n  ADDTYPE(arm_fir_instance_q31);\n  ADDTYPE(arm_fir_instance_f32);\n  ADDTYPE(arm_biquad_casd_df1_inst_q15);\n  ADDTYPE(arm_biquad_casd_df1_inst_q31);\n  ADDTYPE(arm_biquad_casd_df1_inst_f32);\n  ADDTYPE(arm_matrix_instance_f32);\n  ADDTYPE(arm_matrix_instance_f64);\n  ADDTYPE(arm_matrix_instance_q15);\n  ADDTYPE(arm_matrix_instance_q31);\n  ADDTYPE(arm_pid_instance_q15);\n  ADDTYPE(arm_pid_instance_q31);\n  ADDTYPE(arm_pid_instance_f32);\n  ADDTYPE(arm_linear_interp_instance_f32);\n  ADDTYPE(arm_bilinear_interp_instance_f32);\n  ADDTYPE(arm_bilinear_interp_instance_q31);\n  ADDTYPE(arm_bilinear_interp_instance_q15);\n  ADDTYPE(arm_bilinear_interp_instance_q7);\n  ADDTYPE(arm_cfft_radix2_instance_q15);\n  ADDTYPE(arm_cfft_radix4_instance_q15);\n  ADDTYPE(arm_cfft_radix2_instance_q31);\n  ADDTYPE(arm_cfft_radix4_instance_q31);\n  ADDTYPE(arm_cfft_radix2_instance_f32);\n  ADDTYPE(arm_cfft_radix4_instance_f32);\n  ADDTYPE(arm_cfft_instance_q15);\n  ADDTYPE(arm_cfft_instance_q31);\n  ADDTYPE(arm_cfft_instance_f32);\n  ADDTYPE(arm_rfft_instance_q15);\n  ADDTYPE(arm_rfft_instance_q31);\n  ADDTYPE(arm_rfft_instance_f32);\n  ADDTYPE(arm_rfft_fast_instance_f32);\n  ADDTYPE(arm_dct4_instance_f32);\n  ADDTYPE(arm_dct4_instance_q31);\n  ADDTYPE(arm_dct4_instance_q15);\n  ADDTYPE(arm_fir_decimate_instance_q15);\n  ADDTYPE(arm_fir_decimate_instance_q31);\n  ADDTYPE(arm_fir_decimate_instance_f32);\n  ADDTYPE(arm_fir_interpolate_instance_q15);\n  ADDTYPE(arm_fir_interpolate_instance_q31);\n  ADDTYPE(arm_fir_interpolate_instance_f32);\n  ADDTYPE(arm_biquad_cas_df1_32x64_ins_q31);\n  ADDTYPE(arm_biquad_cascade_df2T_instance_f32);\n  ADDTYPE(arm_biquad_cascade_stereo_df2T_instance_f32);\n  ADDTYPE(arm_biquad_cascade_df2T_instance_f64);\n  ADDTYPE(arm_fir_lattice_instance_q15);\n  ADDTYPE(arm_fir_lattice_instance_q31);\n  ADDTYPE(arm_fir_lattice_instance_f32);\n  ADDTYPE(arm_iir_lattice_instance_q15);\n  ADDTYPE(arm_iir_lattice_instance_q31);\n  ADDTYPE(arm_iir_lattice_instance_f32);\n  ADDTYPE(arm_lms_instance_f32);\n  ADDTYPE(arm_lms_instance_q15);\n  ADDTYPE(arm_lms_instance_q31);\n  ADDTYPE(arm_lms_norm_instance_f32);\n  ADDTYPE(arm_lms_norm_instance_q31);\n  ADDTYPE(arm_lms_norm_instance_q15);\n  ADDTYPE(arm_fir_sparse_instance_f32);\n  ADDTYPE(arm_fir_sparse_instance_q31);\n  ADDTYPE(arm_fir_sparse_instance_q15);\n  ADDTYPE(arm_fir_sparse_instance_q7);\n\n}\n\n\nstatic PyObject *\ncmsis_arm_recip_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t in; // input\n  q31_t *dst=NULL; // output\n  PyObject *pRecipTable=NULL; // input\n  q31_t *pRecipTable_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"iO\",&in,&pRecipTable))\n  {\n\n    GETARGUMENT(pRecipTable,NPY_INT32,int32_t,int32_t);\n    \n    dst=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    uint32_t returnValue = arm_recip_q31(in,dst,pRecipTable_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* dstOBJ=Py_BuildValue(\"i\",*dst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,dstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    Py_DECREF(dstOBJ);\n    FREEARGUMENT(pRecipTable_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_recip_q15(PyObject *obj, PyObject *args)\n{\n\n  q15_t in; // input\n  q15_t *dst=NULL; // output\n  PyObject *pRecipTable=NULL; // input\n  q15_t *pRecipTable_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"hO\",&in,&pRecipTable))\n  {\n\n    GETARGUMENT(pRecipTable,NPY_INT16,int16_t,int16_t);\n    \n    dst=PyMem_Malloc(sizeof(q15_t)*1);\n\n\n    uint32_t returnValue = arm_recip_q15(in,dst,pRecipTable_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* dstOBJ=Py_BuildValue(\"h\",*dst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,dstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    Py_DECREF(dstOBJ);\n    FREEARGUMENT(pRecipTable_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_instance_q7Object *selfS = (ml_arm_fir_instance_q7Object *)S;\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_fir_q7(selfS->instance,pSrc_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_init_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q7_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q7_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOO\",&S,&numTaps,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_instance_q7Object *selfS = (ml_arm_fir_instance_q7Object *)S;\n    GETARGUMENT(pCoeffs,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pState,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_fir_init_q7(selfS->instance,numTaps,pCoeffs_converted,pState_converted,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_instance_q15Object *selfS = (ml_arm_fir_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_fir_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_fast_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_instance_q15Object *selfS = (ml_arm_fir_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_fir_fast_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOO\",&S,&numTaps,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_instance_q15Object *selfS = (ml_arm_fir_instance_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_status returnValue = arm_fir_init_q15(selfS->instance,numTaps,pCoeffs_converted,pState_converted,blockSize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_instance_q31Object *selfS = (ml_arm_fir_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_fir_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_fast_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_instance_q31Object *selfS = (ml_arm_fir_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_fir_fast_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOO\",&S,&numTaps,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_instance_q31Object *selfS = (ml_arm_fir_instance_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_fir_init_q31(selfS->instance,numTaps,pCoeffs_converted,pState_converted,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_instance_f32Object *selfS = (ml_arm_fir_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_fir_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOO\",&S,&numTaps,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_instance_f32Object *selfS = (ml_arm_fir_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_fir_init_f32(selfS->instance,numTaps,pCoeffs_converted,pState_converted,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_casd_df1_inst_q15Object *selfS = (ml_arm_biquad_casd_df1_inst_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_biquad_cascade_df1_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  int32_t postShift; // input\n\n  if (PyArg_ParseTuple(args,\"OiOOi\",&S,&numStages,&pCoeffs,&pState,&postShift))\n  {\n\n    ml_arm_biquad_casd_df1_inst_q15Object *selfS = (ml_arm_biquad_casd_df1_inst_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n\n    arm_biquad_cascade_df1_init_q15(selfS->instance,(uint8_t)numStages,pCoeffs_converted,pState_converted,(int8_t)postShift);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_fast_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_casd_df1_inst_q15Object *selfS = (ml_arm_biquad_casd_df1_inst_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_biquad_cascade_df1_fast_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_casd_df1_inst_q31Object *selfS = (ml_arm_biquad_casd_df1_inst_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_biquad_cascade_df1_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_fast_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_casd_df1_inst_q31Object *selfS = (ml_arm_biquad_casd_df1_inst_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_biquad_cascade_df1_fast_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  int32_t postShift; // input\n\n  if (PyArg_ParseTuple(args,\"OiOOi\",&S,&numStages,&pCoeffs,&pState,&postShift))\n  {\n\n    ml_arm_biquad_casd_df1_inst_q31Object *selfS = (ml_arm_biquad_casd_df1_inst_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n\n    arm_biquad_cascade_df1_init_q31(selfS->instance,(uint8_t)numStages,pCoeffs_converted,pState_converted,(int8_t)postShift);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_casd_df1_inst_f32Object *selfS = (ml_arm_biquad_casd_df1_inst_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_biquad_cascade_df1_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df1_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOO\",&S,&numStages,&pCoeffs,&pState))\n  {\n\n    ml_arm_biquad_casd_df1_inst_f32Object *selfS = (ml_arm_biquad_casd_df1_inst_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n\n    arm_biquad_cascade_df1_init_f32(selfS->instance,(uint8_t)numStages,pCoeffs_converted,pState_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_add_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_f32 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_f32 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_f32 *pSrcA_converted = f32MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_f32 *pSrcB_converted = f32MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_f32 *pDst_converted = createf32Matrix(row,column);\n\n    arm_status returnValue = arm_mat_add_f32(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromf32Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_add_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q15 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q15 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_q15 *pSrcA_converted = q15MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q15 *pSrcB_converted = q15MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q15 *pDst_converted = createq15Matrix(row,column);\n\n    arm_status returnValue = arm_mat_add_q15(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq15Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_add_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q31 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q31 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_q31 *pSrcA_converted = q31MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q31 *pSrcB_converted = q31MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q31 *pDst_converted = createq31Matrix(row,column);\n\n    arm_status returnValue = arm_mat_add_q31(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq31Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_cmplx_mult_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_f32 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_f32 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_f32 *pSrcA_converted = f32MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_f32 *pSrcB_converted = f32MatrixFromNumpy(pSrcB);\n    pSrcA_converted->numCols = pSrcA_converted->numCols / 2;\n    pSrcB_converted->numCols = pSrcB_converted->numCols / 2;\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols * 2;\n    arm_matrix_instance_f32 *pDst_converted = createf32Matrix(row,column);\n\n    arm_status returnValue = arm_mat_cmplx_mult_f32(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromf32Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_cmplx_mult_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q15 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q15 *pSrcB_converted=NULL; // input\n  PyObject *pScratch=NULL; // input\n  q15_t *pScratch_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OOO\",&pSrcA,&pSrcB,&pScratch))\n  {\n\n    arm_matrix_instance_q15 *pSrcA_converted = q15MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q15 *pSrcB_converted = q15MatrixFromNumpy(pSrcB);\n    GETARGUMENT(pScratch,NPY_INT16,int16_t,int16_t);\n    pSrcA_converted->numCols = pSrcA_converted->numCols / 2;\n    pSrcB_converted->numCols = pSrcB_converted->numCols / 2;\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols * 2;\n    arm_matrix_instance_q15 *pDst_converted = createq15Matrix(row,column);\n\n    arm_status returnValue = arm_mat_cmplx_mult_q15(pSrcA_converted,pSrcB_converted,pDst_converted,pScratch_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq15Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_cmplx_mult_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q31 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q31 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_q31 *pSrcA_converted = q31MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q31 *pSrcB_converted = q31MatrixFromNumpy(pSrcB);\n    pSrcA_converted->numCols = pSrcA_converted->numCols / 2;\n    pSrcB_converted->numCols = pSrcB_converted->numCols / 2;\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols * 2;\n    arm_matrix_instance_q31 *pDst_converted = createq31Matrix(row,column);\n\n    arm_status returnValue = arm_mat_cmplx_mult_q31(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq31Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_trans_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  arm_matrix_instance_f32 *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    arm_matrix_instance_f32 *pSrc_converted = f32MatrixFromNumpy(pSrc);\n    uint32_t row = pSrc_converted->numCols ;\n    uint32_t column = pSrc_converted->numRows ;\n    arm_matrix_instance_f32 *pDst_converted = createf32Matrix(row,column);\n\n    arm_status returnValue = arm_mat_trans_f32(pSrc_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromf32Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_trans_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  arm_matrix_instance_q15 *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    arm_matrix_instance_q15 *pSrc_converted = q15MatrixFromNumpy(pSrc);\n    uint32_t row = pSrc_converted->numCols ;\n    uint32_t column = pSrc_converted->numRows ;\n    arm_matrix_instance_q15 *pDst_converted = createq15Matrix(row,column);\n\n    arm_status returnValue = arm_mat_trans_q15(pSrc_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq15Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_trans_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  arm_matrix_instance_q31 *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    arm_matrix_instance_q31 *pSrc_converted = q31MatrixFromNumpy(pSrc);\n    uint32_t row = pSrc_converted->numCols ;\n    uint32_t column = pSrc_converted->numRows ;\n    arm_matrix_instance_q31 *pDst_converted = createq31Matrix(row,column);\n\n    arm_status returnValue = arm_mat_trans_q31(pSrc_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq31Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_mult_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_f32 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_f32 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_f32 *pSrcA_converted = f32MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_f32 *pSrcB_converted = f32MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_f32 *pDst_converted = createf32Matrix(row,column);\n\n    arm_status returnValue = arm_mat_mult_f32(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromf32Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_mult_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q15 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q15 *pSrcB_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OOO\",&pSrcA,&pSrcB,&pState))\n  {\n\n    arm_matrix_instance_q15 *pSrcA_converted = q15MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q15 *pSrcB_converted = q15MatrixFromNumpy(pSrcB);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q15 *pDst_converted = createq15Matrix(row,column);\n\n    arm_status returnValue = arm_mat_mult_q15(pSrcA_converted,pSrcB_converted,pDst_converted,pState_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq15Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pState_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_mult_fast_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q15 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q15 *pSrcB_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OOO\",&pSrcA,&pSrcB,&pState))\n  {\n\n    arm_matrix_instance_q15 *pSrcA_converted = q15MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q15 *pSrcB_converted = q15MatrixFromNumpy(pSrcB);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q15 *pDst_converted = createq15Matrix(row,column);\n\n    arm_status returnValue = arm_mat_mult_fast_q15(pSrcA_converted,pSrcB_converted,pDst_converted,pState_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq15Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pState_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_mult_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q31 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q31 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_q31 *pSrcA_converted = q31MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q31 *pSrcB_converted = q31MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q31 *pDst_converted = createq31Matrix(row,column);\n\n    arm_status returnValue = arm_mat_mult_q31(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq31Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_mult_fast_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q31 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q31 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_q31 *pSrcA_converted = q31MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q31 *pSrcB_converted = q31MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q31 *pDst_converted = createq31Matrix(row,column);\n\n    arm_status returnValue = arm_mat_mult_fast_q31(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq31Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_sub_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_f32 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_f32 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_f32 *pSrcA_converted = f32MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_f32 *pSrcB_converted = f32MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_f32 *pDst_converted = createf32Matrix(row,column);\n\n    arm_status returnValue = arm_mat_sub_f32(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromf32Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_sub_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q15 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q15 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_q15 *pSrcA_converted = q15MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q15 *pSrcB_converted = q15MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q15 *pDst_converted = createq15Matrix(row,column);\n\n    arm_status returnValue = arm_mat_sub_q15(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq15Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_sub_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  arm_matrix_instance_q31 *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  arm_matrix_instance_q31 *pSrcB_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    arm_matrix_instance_q31 *pSrcA_converted = q31MatrixFromNumpy(pSrcA);\n    arm_matrix_instance_q31 *pSrcB_converted = q31MatrixFromNumpy(pSrcB);\n    uint32_t row = pSrcA_converted->numRows ;\n    uint32_t column = pSrcB_converted->numCols ;\n    arm_matrix_instance_q31 *pDst_converted = createq31Matrix(row,column);\n\n    arm_status returnValue = arm_mat_sub_q31(pSrcA_converted,pSrcB_converted,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq31Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_scale_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  arm_matrix_instance_f32 *pSrc_converted=NULL; // input\n  float32_t scale; // input\n\n  if (PyArg_ParseTuple(args,\"Of\",&pSrc,&scale))\n  {\n\n    arm_matrix_instance_f32 *pSrc_converted = f32MatrixFromNumpy(pSrc);\n    uint32_t row = pSrc_converted->numRows ;\n    uint32_t column = pSrc_converted->numCols ;\n    arm_matrix_instance_f32 *pDst_converted = createf32Matrix(row,column);\n\n    arm_status returnValue = arm_mat_scale_f32(pSrc_converted,scale,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromf32Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_scale_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  arm_matrix_instance_q15 *pSrc_converted=NULL; // input\n  q15_t scaleFract; // input\n  int32_t shift; // input\n\n  if (PyArg_ParseTuple(args,\"Ohi\",&pSrc,&scaleFract,&shift))\n  {\n\n    arm_matrix_instance_q15 *pSrc_converted = q15MatrixFromNumpy(pSrc);\n    uint32_t row = pSrc_converted->numRows ;\n    uint32_t column = pSrc_converted->numCols ;\n    arm_matrix_instance_q15 *pDst_converted = createq15Matrix(row,column);\n\n    arm_status returnValue = arm_mat_scale_q15(pSrc_converted,scaleFract,shift,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq15Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_scale_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  arm_matrix_instance_q31 *pSrc_converted=NULL; // input\n  q31_t scaleFract; // input\n  int32_t shift; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&pSrc,&scaleFract,&shift))\n  {\n\n    arm_matrix_instance_q31 *pSrc_converted = q31MatrixFromNumpy(pSrc);\n    uint32_t row = pSrc_converted->numRows ;\n    uint32_t column = pSrc_converted->numCols ;\n    arm_matrix_instance_q31 *pDst_converted = createq31Matrix(row,column);\n\n    arm_status returnValue = arm_mat_scale_q31(pSrc_converted,scaleFract,shift,pDst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pDstOBJ=NumpyArrayFromq31Matrix(pDst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  int32_t resetStateFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&S,&resetStateFlag))\n  {\n\n    ml_arm_pid_instance_f32Object *selfS = (ml_arm_pid_instance_f32Object *)S;\n\n    arm_pid_init_f32(selfS->instance,resetStateFlag);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_reset_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_pid_instance_f32Object *selfS = (ml_arm_pid_instance_f32Object *)S;\n\n    arm_pid_reset_f32(selfS->instance);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  int32_t resetStateFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&S,&resetStateFlag))\n  {\n\n    ml_arm_pid_instance_q31Object *selfS = (ml_arm_pid_instance_q31Object *)S;\n\n    arm_pid_init_q31(selfS->instance,resetStateFlag);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_reset_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_pid_instance_q31Object *selfS = (ml_arm_pid_instance_q31Object *)S;\n\n    arm_pid_reset_q31(selfS->instance);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  int32_t resetStateFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&S,&resetStateFlag))\n  {\n\n    ml_arm_pid_instance_q15Object *selfS = (ml_arm_pid_instance_q15Object *)S;\n\n    arm_pid_init_q15(selfS->instance,resetStateFlag);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_reset_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_pid_instance_q15Object *selfS = (ml_arm_pid_instance_q15Object *)S;\n\n    arm_pid_reset_q15(selfS->instance);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mult_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_mult_q7(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mult_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_mult_q15(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mult_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_mult_q31(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mult_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_mult_f32(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix2_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Ohii\",&S,&fftLen,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_radix2_instance_q15Object *selfS = (ml_arm_cfft_radix2_instance_q15Object *)S;\n\n    arm_status returnValue = arm_cfft_radix2_init_q15(selfS->instance,fftLen,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix2_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_cfft_radix2_instance_q15Object *selfS = (ml_arm_cfft_radix2_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n\n    arm_cfft_radix2_q15(selfS->instance,pSrc_converted);\n    FREEARGUMENT(pSrc_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix4_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Ohii\",&S,&fftLen,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_radix4_instance_q15Object *selfS = (ml_arm_cfft_radix4_instance_q15Object *)S;\n\n    arm_status returnValue = arm_cfft_radix4_init_q15(selfS->instance,fftLen,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix4_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_cfft_radix4_instance_q15Object *selfS = (ml_arm_cfft_radix4_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n\n    arm_cfft_radix4_q15(selfS->instance,pSrc_converted);\n    FREEARGUMENT(pSrc_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix2_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Ohii\",&S,&fftLen,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_radix2_instance_q31Object *selfS = (ml_arm_cfft_radix2_instance_q31Object *)S;\n\n    arm_status returnValue = arm_cfft_radix2_init_q31(selfS->instance,fftLen,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix2_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_cfft_radix2_instance_q31Object *selfS = (ml_arm_cfft_radix2_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n\n    arm_cfft_radix2_q31(selfS->instance,pSrc_converted);\n    FREEARGUMENT(pSrc_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix4_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_cfft_radix4_instance_q31Object *selfS = (ml_arm_cfft_radix4_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n\n    arm_cfft_radix4_q31(selfS->instance,pSrc_converted);\n    FREEARGUMENT(pSrc_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix4_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Ohii\",&S,&fftLen,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_radix4_instance_q31Object *selfS = (ml_arm_cfft_radix4_instance_q31Object *)S;\n\n    arm_status returnValue = arm_cfft_radix4_init_q31(selfS->instance,fftLen,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix2_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Ohii\",&S,&fftLen,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_radix2_instance_f32Object *selfS = (ml_arm_cfft_radix2_instance_f32Object *)S;\n\n    arm_status returnValue = arm_cfft_radix2_init_f32(selfS->instance,fftLen,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix2_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_cfft_radix2_instance_f32Object *selfS = (ml_arm_cfft_radix2_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n\n    arm_cfft_radix2_f32(selfS->instance,pSrc_converted);\n    FREEARGUMENT(pSrc_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix4_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Ohii\",&S,&fftLen,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_radix4_instance_f32Object *selfS = (ml_arm_cfft_radix4_instance_f32Object *)S;\n\n    arm_status returnValue = arm_cfft_radix4_init_f32(selfS->instance,fftLen,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_radix4_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_cfft_radix4_instance_f32Object *selfS = (ml_arm_cfft_radix4_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n\n    arm_cfft_radix4_f32(selfS->instance,pSrc_converted);\n    FREEARGUMENT(pSrc_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *p1=NULL; // input\n  q15_t *p1_converted=NULL; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"OOii\",&S,&p1,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_instance_q15Object *selfS = (ml_arm_cfft_instance_q15Object *)S;\n    GETARGUMENT(p1,NPY_INT16,int16_t,int16_t);\n\n    arm_cfft_q15(selfS->instance,p1_converted,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n INT16ARRAY1(p1OBJ,2*selfS->instance->fftLen,p1_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",p1OBJ);\n\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *p1=NULL; // input\n  q31_t *p1_converted=NULL; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"OOii\",&S,&p1,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_instance_q31Object *selfS = (ml_arm_cfft_instance_q31Object *)S;\n    GETARGUMENT(p1,NPY_INT32,int32_t,int32_t);\n\n    arm_cfft_q31(selfS->instance,p1_converted,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n INT32ARRAY1(p1OBJ,2*selfS->instance->fftLen,p1_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",p1OBJ);\n\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *p1=NULL; // input\n  float32_t *p1_converted=NULL; // input\n  uint32_t ifftFlag; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"OOii\",&S,&p1,&ifftFlag,&bitReverseFlag))\n  {\n\n    ml_arm_cfft_instance_f32Object *selfS = (ml_arm_cfft_instance_f32Object *)S;\n    GETARGUMENT(p1,NPY_DOUBLE,double,float32_t);\n\n    arm_cfft_f32(selfS->instance,p1_converted,(uint8_t)ifftFlag,(uint8_t)bitReverseFlag);\n FLOATARRAY1(p1OBJ,2*selfS->instance->fftLen,p1_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",p1OBJ);\n\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t fftLenReal; // input\n  uint32_t ifftFlagR; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Oiii\",&S,&fftLenReal,&ifftFlagR,&bitReverseFlag))\n  {\n\n    ml_arm_rfft_instance_q15Object *selfS = (ml_arm_rfft_instance_q15Object *)S;\n\n    arm_status returnValue = arm_rfft_init_q15(selfS->instance,fftLenReal,ifftFlagR,bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_rfft_instance_q15Object *selfS = (ml_arm_rfft_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*2*selfS->instance->fftLenReal);\n\n\n    arm_rfft_q15(selfS->instance,pSrc_converted,pDst);\n INT16ARRAY1(pDstOBJ,2*selfS->instance->fftLenReal,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t fftLenReal; // input\n  uint32_t ifftFlagR; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"Oiii\",&S,&fftLenReal,&ifftFlagR,&bitReverseFlag))\n  {\n\n    ml_arm_rfft_instance_q31Object *selfS = (ml_arm_rfft_instance_q31Object *)S;\n\n    arm_status returnValue = arm_rfft_init_q31(selfS->instance,fftLenReal,ifftFlagR,bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_rfft_instance_q31Object *selfS = (ml_arm_rfft_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*2*selfS->instance->fftLenReal);\n\n\n    arm_rfft_q31(selfS->instance,pSrc_converted,pDst);\n INT32ARRAY1(pDstOBJ,2*selfS->instance->fftLenReal,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *S_CFFT=NULL; // input\n  uint32_t fftLenReal; // input\n  uint32_t ifftFlagR; // input\n  uint32_t bitReverseFlag; // input\n\n  if (PyArg_ParseTuple(args,\"OOiii\",&S,&S_CFFT,&fftLenReal,&ifftFlagR,&bitReverseFlag))\n  {\n\n    ml_arm_rfft_instance_f32Object *selfS = (ml_arm_rfft_instance_f32Object *)S;\n    ml_arm_cfft_radix4_instance_f32Object *selfS_CFFT = (ml_arm_cfft_radix4_instance_f32Object *)S_CFFT;\n\n    arm_status returnValue = arm_rfft_init_f32(selfS->instance,selfS_CFFT->instance,fftLenReal,ifftFlagR,bitReverseFlag);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_rfft_instance_f32Object *selfS = (ml_arm_rfft_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*2*selfS->instance->fftLenReal);\n\n\n    arm_rfft_f32(selfS->instance,pSrc_converted,pDst);\n FLOATARRAY1(pDstOBJ,2*selfS->instance->fftLenReal,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n\n  if (PyArg_ParseTuple(args,\"Oh\",&S,&fftLen))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_fast_init_f32(selfS->instance,fftLen);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_32_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_32_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_64_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_64_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_128_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_128_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_256_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_256_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_512_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_512_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_1024_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_1024_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_2048_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_2048_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_4096_fast_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&S))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n\n    arm_status returnValue = arm_rfft_4096_fast_init_f32(selfS->instance);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rfft_fast_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *p=NULL; // input\n  float32_t *p_converted=NULL; // input\n  float32_t *pOut=NULL; // output\n  uint32_t ifftFlag; // input\n\n  if (PyArg_ParseTuple(args,\"OOi\",&S,&p,&ifftFlag))\n  {\n\n    ml_arm_rfft_fast_instance_f32Object *selfS = (ml_arm_rfft_fast_instance_f32Object *)S;\n    GETARGUMENT(p,NPY_DOUBLE,double,float32_t);\n    \n    pOut=PyMem_Malloc(sizeof(float32_t)*2*selfS->instance->fftLenRFFT);\n\n\n    arm_rfft_fast_f32(selfS->instance,p_converted,pOut,(uint8_t)ifftFlag);\n FLOATARRAY1(pOutOBJ,2*selfS->instance->fftLenRFFT,pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pOutOBJ);\n\n    FREEARGUMENT(p_converted);\n    Py_DECREF(pOutOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dct4_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *S_RFFT=NULL; // input\n  PyObject *S_CFFT=NULL; // input\n  uint16_t N; // input\n  uint16_t Nby2; // input\n  float32_t normalize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOhhf\",&S,&S_RFFT,&S_CFFT,&N,&Nby2,&normalize))\n  {\n\n    ml_arm_dct4_instance_f32Object *selfS = (ml_arm_dct4_instance_f32Object *)S;\n    ml_arm_rfft_instance_f32Object *selfS_RFFT = (ml_arm_rfft_instance_f32Object *)S_RFFT;\n    ml_arm_cfft_radix4_instance_f32Object *selfS_CFFT = (ml_arm_cfft_radix4_instance_f32Object *)S_CFFT;\n    uint32_t outputLength = selfS->instance->N ;\n\n    arm_status returnValue = arm_dct4_init_f32(selfS->instance,selfS_RFFT->instance,selfS_CFFT->instance,N,Nby2,normalize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dct4_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  PyObject *pInlineBuffer=NULL; // input\n  float32_t *pInlineBuffer_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OOO\",&S,&pState,&pInlineBuffer))\n  {\n\n    ml_arm_dct4_instance_f32Object *selfS = (ml_arm_dct4_instance_f32Object *)S;\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pInlineBuffer,NPY_DOUBLE,double,float32_t);\n    uint32_t outputLength = selfS->instance->N ;\n\n    arm_dct4_f32(selfS->instance,pState_converted,pInlineBuffer_converted);\n FLOATARRAY1(pInlineBufferOBJ,outputLength,pInlineBuffer_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pInlineBufferOBJ);\n\n    FREEARGUMENT(pState_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dct4_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *S_RFFT=NULL; // input\n  PyObject *S_CFFT=NULL; // input\n  uint16_t N; // input\n  uint16_t Nby2; // input\n  q31_t normalize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOhhi\",&S,&S_RFFT,&S_CFFT,&N,&Nby2,&normalize))\n  {\n\n    ml_arm_dct4_instance_q31Object *selfS = (ml_arm_dct4_instance_q31Object *)S;\n    ml_arm_rfft_instance_q31Object *selfS_RFFT = (ml_arm_rfft_instance_q31Object *)S_RFFT;\n    ml_arm_cfft_radix4_instance_q31Object *selfS_CFFT = (ml_arm_cfft_radix4_instance_q31Object *)S_CFFT;\n    uint32_t outputLength = selfS->instance->N ;\n\n    arm_status returnValue = arm_dct4_init_q31(selfS->instance,selfS_RFFT->instance,selfS_CFFT->instance,N,Nby2,normalize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dct4_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  PyObject *pInlineBuffer=NULL; // input\n  q31_t *pInlineBuffer_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OOO\",&S,&pState,&pInlineBuffer))\n  {\n\n    ml_arm_dct4_instance_q31Object *selfS = (ml_arm_dct4_instance_q31Object *)S;\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pInlineBuffer,NPY_INT32,int32_t,int32_t);\n    uint32_t outputLength = selfS->instance->N ;\n\n    arm_dct4_q31(selfS->instance,pState_converted,pInlineBuffer_converted);\n INT32ARRAY1(pInlineBufferOBJ,outputLength,pInlineBuffer_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pInlineBufferOBJ);\n\n    FREEARGUMENT(pState_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dct4_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *S_RFFT=NULL; // input\n  PyObject *S_CFFT=NULL; // input\n  uint16_t N; // input\n  uint16_t Nby2; // input\n  q15_t normalize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOhhh\",&S,&S_RFFT,&S_CFFT,&N,&Nby2,&normalize))\n  {\n\n    ml_arm_dct4_instance_q15Object *selfS = (ml_arm_dct4_instance_q15Object *)S;\n    ml_arm_rfft_instance_q15Object *selfS_RFFT = (ml_arm_rfft_instance_q15Object *)S_RFFT;\n    ml_arm_cfft_radix4_instance_q15Object *selfS_CFFT = (ml_arm_cfft_radix4_instance_q15Object *)S_CFFT;\n    uint32_t outputLength = selfS->instance->N ;\n\n    arm_status returnValue = arm_dct4_init_q15(selfS->instance,selfS_RFFT->instance,selfS_CFFT->instance,N,Nby2,normalize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dct4_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  PyObject *pInlineBuffer=NULL; // input\n  q15_t *pInlineBuffer_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OOO\",&S,&pState,&pInlineBuffer))\n  {\n\n    ml_arm_dct4_instance_q15Object *selfS = (ml_arm_dct4_instance_q15Object *)S;\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pInlineBuffer,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = selfS->instance->N ;\n\n    arm_dct4_q15(selfS->instance,pState_converted,pInlineBuffer_converted);\n INT16ARRAY1(pInlineBufferOBJ,outputLength,pInlineBuffer_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pInlineBufferOBJ);\n\n    FREEARGUMENT(pState_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_add_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_add_f32(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_add_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_add_q7(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_add_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_add_q15(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_add_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_add_q31(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sub_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_sub_f32(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sub_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_sub_q7(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sub_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_sub_q15(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sub_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrcA ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_sub_q31(pSrcA_converted,pSrcB_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_scale_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t scale; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Of\",&pSrc,&scale))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_scale_f32(pSrc_converted,scale,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_scale_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  int32_t scaleFract; // input\n  int32_t shift; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&pSrc,&scaleFract,&shift))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_scale_q7(pSrc_converted,(q7_t)scaleFract,(int8_t)shift,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_scale_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t scaleFract; // input\n  int32_t shift; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Ohi\",&pSrc,&scaleFract,&shift))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_scale_q15(pSrc_converted,scaleFract,(int8_t)shift,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_scale_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t scaleFract; // input\n  int32_t shift; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&pSrc,&scaleFract,&shift))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_scale_q31(pSrc_converted,scaleFract,(int8_t)shift,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_abs_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_abs_q7(pSrc_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_abs_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_abs_f32(pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_abs_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_abs_q15(pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_abs_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_abs_q31(pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dot_prod_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *result=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrcA ;\n    \n    result=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_dot_prod_f32(pSrcA_converted,pSrcB_converted,blockSize,result);\n    PyObject* resultOBJ=Py_BuildValue(\"f\",*result);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",resultOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(resultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dot_prod_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *result=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrcA ;\n    \n    result=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_dot_prod_q7(pSrcA_converted,pSrcB_converted,blockSize,result);\n    PyObject* resultOBJ=Py_BuildValue(\"i\",*result);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",resultOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(resultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dot_prod_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t blockSize; // input\n  q63_t *result=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrcA ;\n    \n    result=PyMem_Malloc(sizeof(q63_t)*1);\n\n\n    arm_dot_prod_q15(pSrcA_converted,pSrcB_converted,blockSize,result);\n    PyObject* resultOBJ=Py_BuildValue(\"L\",*result);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",resultOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(resultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_dot_prod_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t blockSize; // input\n  q63_t *result=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrcA ;\n    \n    result=PyMem_Malloc(sizeof(q63_t)*1);\n\n\n    arm_dot_prod_q31(pSrcA_converted,pSrcB_converted,blockSize,result);\n    PyObject* resultOBJ=Py_BuildValue(\"L\",*result);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",resultOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(resultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_shift_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  int32_t shiftBits; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&pSrc,&shiftBits))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_shift_q7(pSrc_converted,(int8_t)shiftBits,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_shift_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  int32_t shiftBits; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&pSrc,&shiftBits))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_shift_q15(pSrc_converted,(int8_t)shiftBits,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_shift_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  int32_t shiftBits; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&pSrc,&shiftBits))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_shift_q31(pSrc_converted,(int8_t)shiftBits,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_offset_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t offset; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Of\",&pSrc,&offset))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_offset_f32(pSrc_converted,offset,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_offset_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  int32_t offset; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&pSrc,&offset))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_offset_q7(pSrc_converted,(q7_t)offset,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_offset_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t offset; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oh\",&pSrc,&offset))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_offset_q15(pSrc_converted,offset,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_offset_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t offset; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&pSrc,&offset))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_offset_q31(pSrc_converted,offset,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_negate_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_negate_f32(pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_negate_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_negate_q7(pSrc_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_negate_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_negate_q15(pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_negate_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_negate_q31(pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_copy_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_copy_f32(pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_copy_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_copy_q7(pSrc_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_copy_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_copy_q15(pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_copy_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_copy_q31(pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  float32_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*outputLength);\n\n\n    arm_conv_f32(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n FLOATARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_opt_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  PyObject *pScratch1=NULL; // input\n  q15_t *pScratch1_converted=NULL; // input\n  PyObject *pScratch2=NULL; // input\n  q15_t *pScratch2_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiOO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&pScratch1,&pScratch2))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch1,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch2,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_conv_opt_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,pScratch1_converted,pScratch2_converted);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch1_converted);\n    FREEARGUMENT(pScratch2_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_conv_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_fast_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_conv_fast_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_fast_opt_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  PyObject *pScratch1=NULL; // input\n  q15_t *pScratch1_converted=NULL; // input\n  PyObject *pScratch2=NULL; // input\n  q15_t *pScratch2_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiOO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&pScratch1,&pScratch2))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch1,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch2,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_conv_fast_opt_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,pScratch1_converted,pScratch2_converted);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch1_converted);\n    FREEARGUMENT(pScratch2_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q31_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*outputLength);\n\n\n    arm_conv_q31(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT32ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_fast_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q31_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*outputLength);\n\n\n    arm_conv_fast_q31(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT32ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_opt_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q7_t *pDst=NULL; // output\n  PyObject *pScratch1=NULL; // input\n  q15_t *pScratch1_converted=NULL; // input\n  PyObject *pScratch2=NULL; // input\n  q15_t *pScratch2_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiOO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&pScratch1,&pScratch2))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pScratch1,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch2,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*outputLength);\n\n\n    arm_conv_opt_q7(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,pScratch1_converted,pScratch2_converted);\n INT8ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch1_converted);\n    FREEARGUMENT(pScratch2_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q7_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*outputLength);\n\n\n    arm_conv_q7(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT8ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  float32_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiii\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_f32(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n FLOATARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_opt_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n  PyObject *pScratch1=NULL; // input\n  q15_t *pScratch1_converted=NULL; // input\n  PyObject *pScratch2=NULL; // input\n  q15_t *pScratch2_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiiiOO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints,&pScratch1,&pScratch2))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch1,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch2,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_opt_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints,pScratch1_converted,pScratch2_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch1_converted);\n    FREEARGUMENT(pScratch2_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiii\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_fast_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiii\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_fast_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_fast_opt_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n  PyObject *pScratch1=NULL; // input\n  q15_t *pScratch1_converted=NULL; // input\n  PyObject *pScratch2=NULL; // input\n  q15_t *pScratch2_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiiiOO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints,&pScratch1,&pScratch2))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch1,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch2,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_fast_opt_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints,pScratch1_converted,pScratch2_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch1_converted);\n    FREEARGUMENT(pScratch2_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q31_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiii\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_q31(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT32ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_fast_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q31_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiii\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_fast_q31(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT32ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_opt_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q7_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n  PyObject *pScratch1=NULL; // input\n  q15_t *pScratch1_converted=NULL; // input\n  PyObject *pScratch2=NULL; // input\n  q15_t *pScratch2_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiiiOO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints,&pScratch1,&pScratch2))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pScratch1,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch2,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_opt_q7(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints,pScratch1_converted,pScratch2_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT8ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch1_converted);\n    FREEARGUMENT(pScratch2_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_conv_partial_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q7_t *pDst=NULL; // output\n  uint32_t firstIndex; // input\n  uint32_t numPoints; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiii\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&firstIndex,&numPoints))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    uint32_t outputLength = srcALen + srcBLen - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*outputLength);\n\n\n    arm_status returnValue = arm_conv_partial_q7(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,firstIndex,numPoints);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n INT8ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pDstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_decimate_instance_f32Object *selfS = (ml_arm_fir_decimate_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_fir_decimate_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  uint32_t M; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhiOO\",&S,&numTaps,&M,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_decimate_instance_f32Object *selfS = (ml_arm_fir_decimate_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_status returnValue = arm_fir_decimate_init_f32(selfS->instance,numTaps,(uint8_t)M,pCoeffs_converted,pState_converted,blockSize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_decimate_instance_q15Object *selfS = (ml_arm_fir_decimate_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_fir_decimate_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_fast_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_decimate_instance_q15Object *selfS = (ml_arm_fir_decimate_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_fir_decimate_fast_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  uint32_t M; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhiOO\",&S,&numTaps,&M,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_decimate_instance_q15Object *selfS = (ml_arm_fir_decimate_instance_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_status returnValue = arm_fir_decimate_init_q15(selfS->instance,numTaps,(uint8_t)M,pCoeffs_converted,pState_converted,blockSize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_decimate_instance_q31Object *selfS = (ml_arm_fir_decimate_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_fir_decimate_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_fast_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_decimate_instance_q31Object *selfS = (ml_arm_fir_decimate_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_fir_decimate_fast_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_decimate_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  uint32_t M; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhiOO\",&S,&numTaps,&M,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_decimate_instance_q31Object *selfS = (ml_arm_fir_decimate_instance_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_status returnValue = arm_fir_decimate_init_q31(selfS->instance,numTaps,(uint8_t)M,pCoeffs_converted,pState_converted,blockSize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_interpolate_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_interpolate_instance_q15Object *selfS = (ml_arm_fir_interpolate_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_fir_interpolate_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_interpolate_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t L; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OihOO\",&S,&L,&numTaps,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_interpolate_instance_q15Object *selfS = (ml_arm_fir_interpolate_instance_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_status returnValue = arm_fir_interpolate_init_q15(selfS->instance,(uint8_t)L,numTaps,pCoeffs_converted,pState_converted,blockSize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_interpolate_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_interpolate_instance_q31Object *selfS = (ml_arm_fir_interpolate_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_fir_interpolate_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_interpolate_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t L; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OihOO\",&S,&L,&numTaps,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_interpolate_instance_q31Object *selfS = (ml_arm_fir_interpolate_instance_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_status returnValue = arm_fir_interpolate_init_q31(selfS->instance,(uint8_t)L,numTaps,pCoeffs_converted,pState_converted,blockSize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_interpolate_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_interpolate_instance_f32Object *selfS = (ml_arm_fir_interpolate_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_fir_interpolate_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_interpolate_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t L; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OihOO\",&S,&L,&numTaps,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_interpolate_instance_f32Object *selfS = (ml_arm_fir_interpolate_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_status returnValue = arm_fir_interpolate_init_f32(selfS->instance,(uint8_t)L,numTaps,pCoeffs_converted,pState_converted,blockSize);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cas_df1_32x64_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  arm_biquad_cas_df1_32x64_ins_q31 *S_converted=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_biquad_cas_df1_32x64_q31(S_converted,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cas_df1_32x64_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  arm_biquad_cas_df1_32x64_ins_q31 *S_converted=NULL; // input\n  uint32_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q63_t *pState_converted=NULL; // input\n  uint32_t postShift; // input\n\n  if (PyArg_ParseTuple(args,\"OiOOi\",&S,&numStages,&pCoeffs,&pState,&postShift))\n  {\n\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT64,q63_t,q63_t);\n\n    arm_biquad_cas_df1_32x64_init_q31(S_converted,(uint8_t)numStages,pCoeffs_converted,pState_converted,(uint8_t)postShift);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df2T_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_cascade_df2T_instance_f32Object *selfS = (ml_arm_biquad_cascade_df2T_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_biquad_cascade_df2T_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_stereo_df2T_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_cascade_stereo_df2T_instance_f32Object *selfS = (ml_arm_biquad_cascade_stereo_df2T_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_biquad_cascade_stereo_df2T_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df2T_f64(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float64_t *pSrc_converted=NULL; // input\n  float64_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_biquad_cascade_df2T_instance_f64Object *selfS = (ml_arm_biquad_cascade_df2T_instance_f64Object *)S;\n    GETARGUMENT(pSrc,NPY_FLOAT64,float64_t,float64_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float64_t)*blockSize);\n\n\n    arm_biquad_cascade_df2T_f64(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOAT64ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df2T_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOO\",&S,&numStages,&pCoeffs,&pState))\n  {\n\n    ml_arm_biquad_cascade_df2T_instance_f32Object *selfS = (ml_arm_biquad_cascade_df2T_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n\n    arm_biquad_cascade_df2T_init_f32(selfS->instance,(uint8_t)numStages,pCoeffs_converted,pState_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_stereo_df2T_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOO\",&S,&numStages,&pCoeffs,&pState))\n  {\n\n    ml_arm_biquad_cascade_stereo_df2T_instance_f32Object *selfS = (ml_arm_biquad_cascade_stereo_df2T_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n\n    arm_biquad_cascade_stereo_df2T_init_f32(selfS->instance,(uint8_t)numStages,pCoeffs_converted,pState_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_biquad_cascade_df2T_init_f64(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint32_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  float64_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float64_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOO\",&S,&numStages,&pCoeffs,&pState))\n  {\n\n    ml_arm_biquad_cascade_df2T_instance_f64Object *selfS = (ml_arm_biquad_cascade_df2T_instance_f64Object *)S;\n    GETARGUMENT(pCoeffs,NPY_FLOAT64,float64_t,float64_t);\n    GETARGUMENT(pState,NPY_FLOAT64,float64_t,float64_t);\n\n    arm_biquad_cascade_df2T_init_f64(selfS->instance,(uint8_t)numStages,pCoeffs_converted,pState_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_lattice_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OhOO\",&S,&numStages,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_lattice_instance_q15Object *selfS = (ml_arm_fir_lattice_instance_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n\n    arm_fir_lattice_init_q15(selfS->instance,numStages,pCoeffs_converted,pState_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_lattice_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_lattice_instance_q15Object *selfS = (ml_arm_fir_lattice_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_fir_lattice_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_lattice_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OhOO\",&S,&numStages,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_lattice_instance_q31Object *selfS = (ml_arm_fir_lattice_instance_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n\n    arm_fir_lattice_init_q31(selfS->instance,numStages,pCoeffs_converted,pState_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_lattice_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_lattice_instance_q31Object *selfS = (ml_arm_fir_lattice_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_fir_lattice_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_lattice_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numStages; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OhOO\",&S,&numStages,&pCoeffs,&pState))\n  {\n\n    ml_arm_fir_lattice_instance_f32Object *selfS = (ml_arm_fir_lattice_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n\n    arm_fir_lattice_init_f32(selfS->instance,numStages,pCoeffs_converted,pState_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_lattice_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_fir_lattice_instance_f32Object *selfS = (ml_arm_fir_lattice_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_fir_lattice_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_iir_lattice_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_iir_lattice_instance_f32Object *selfS = (ml_arm_iir_lattice_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_iir_lattice_f32(selfS->instance,pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_iir_lattice_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numStages; // input\n  PyObject *pkCoeffs=NULL; // input\n  float32_t *pkCoeffs_converted=NULL; // input\n  PyObject *pvCoeffs=NULL; // input\n  float32_t *pvCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOO\",&S,&numStages,&pkCoeffs,&pvCoeffs,&pState))\n  {\n\n    ml_arm_iir_lattice_instance_f32Object *selfS = (ml_arm_iir_lattice_instance_f32Object *)S;\n    GETARGUMENT(pkCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pvCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepkCoeffs ;\n\n    arm_iir_lattice_init_f32(selfS->instance,numStages,pkCoeffs_converted,pvCoeffs_converted,pState_converted,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_iir_lattice_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_iir_lattice_instance_q31Object *selfS = (ml_arm_iir_lattice_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_iir_lattice_q31(selfS->instance,pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_iir_lattice_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numStages; // input\n  PyObject *pkCoeffs=NULL; // input\n  q31_t *pkCoeffs_converted=NULL; // input\n  PyObject *pvCoeffs=NULL; // input\n  q31_t *pvCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOO\",&S,&numStages,&pkCoeffs,&pvCoeffs,&pState))\n  {\n\n    ml_arm_iir_lattice_instance_q31Object *selfS = (ml_arm_iir_lattice_instance_q31Object *)S;\n    GETARGUMENT(pkCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pvCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepkCoeffs ;\n\n    arm_iir_lattice_init_q31(selfS->instance,numStages,pkCoeffs_converted,pvCoeffs_converted,pState_converted,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_iir_lattice_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&S,&pSrc))\n  {\n\n    ml_arm_iir_lattice_instance_q15Object *selfS = (ml_arm_iir_lattice_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_iir_lattice_q15(selfS->instance,pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_iir_lattice_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numStages; // input\n  PyObject *pkCoeffs=NULL; // input\n  q15_t *pkCoeffs_converted=NULL; // input\n  PyObject *pvCoeffs=NULL; // input\n  q15_t *pvCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOO\",&S,&numStages,&pkCoeffs,&pvCoeffs,&pState))\n  {\n\n    ml_arm_iir_lattice_instance_q15Object *selfS = (ml_arm_iir_lattice_instance_q15Object *)S;\n    GETARGUMENT(pkCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pvCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepkCoeffs ;\n\n    arm_iir_lattice_init_q15(selfS->instance,numStages,pkCoeffs_converted,pvCoeffs_converted,pState_converted,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n\n  if (PyArg_ParseTuple(args,\"Oh\",&S,&fftLen))\n  {\n\n    ml_arm_cfft_instance_f32Object *selfS = (ml_arm_cfft_instance_f32Object *)S;\n\n    arm_status returnValue = arm_cfft_init_f32(selfS->instance,fftLen);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n\n  if (PyArg_ParseTuple(args,\"Oh\",&S,&fftLen))\n  {\n\n    ml_arm_cfft_instance_q31Object *selfS = (ml_arm_cfft_instance_q31Object *)S;\n\n    arm_status returnValue = arm_cfft_init_q31(selfS->instance,fftLen);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cfft_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t fftLen; // input\n\n  if (PyArg_ParseTuple(args,\"Oh\",&S,&fftLen))\n  {\n\n    ml_arm_cfft_instance_q15Object *selfS = (ml_arm_cfft_instance_q15Object *)S;\n\n    arm_status returnValue = arm_cfft_init_q15(selfS->instance,fftLen);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  PyObject *pRef=NULL; // input\n  float32_t *pRef_converted=NULL; // input\n  float32_t *pOut=NULL; // output\n  PyObject *pErr=NULL; // input\n  float32_t *pErr_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOO\",&S,&pSrc,&pRef,&pErr))\n  {\n\n    ml_arm_lms_instance_f32Object *selfS = (ml_arm_lms_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pRef,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pErr,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pOut=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_lms_f32(selfS->instance,pSrc_converted,pRef_converted,pOut,pErr_converted,blockSize);\n FLOATARRAY1(pOutOBJ,blockSize,pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pOutOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    FREEARGUMENT(pRef_converted);\n    Py_DECREF(pOutOBJ);\n    FREEARGUMENT(pErr_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  float32_t mu; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOf\",&S,&numTaps,&pCoeffs,&pState,&mu))\n  {\n\n    ml_arm_lms_instance_f32Object *selfS = (ml_arm_lms_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1 ;\n\n    arm_lms_init_f32(selfS->instance,numTaps,pCoeffs_converted,pState_converted,mu,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  q15_t mu; // input\n  uint32_t blockSize; // input\n  uint32_t postShift; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOhi\",&S,&numTaps,&pCoeffs,&pState,&mu,&postShift))\n  {\n\n    ml_arm_lms_instance_q15Object *selfS = (ml_arm_lms_instance_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1 ;\n\n    arm_lms_init_q15(selfS->instance,numTaps,pCoeffs_converted,pState_converted,mu,blockSize,postShift);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  PyObject *pRef=NULL; // input\n  q15_t *pRef_converted=NULL; // input\n  q15_t *pOut=NULL; // output\n  PyObject *pErr=NULL; // input\n  q15_t *pErr_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOO\",&S,&pSrc,&pRef,&pErr))\n  {\n\n    ml_arm_lms_instance_q15Object *selfS = (ml_arm_lms_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pRef,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pErr,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pOut=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_lms_q15(selfS->instance,pSrc_converted,pRef_converted,pOut,pErr_converted,blockSize);\n INT16ARRAY1(pOutOBJ,blockSize,pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pOutOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    FREEARGUMENT(pRef_converted);\n    Py_DECREF(pOutOBJ);\n    FREEARGUMENT(pErr_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  PyObject *pRef=NULL; // input\n  q31_t *pRef_converted=NULL; // input\n  q31_t *pOut=NULL; // output\n  PyObject *pErr=NULL; // input\n  q31_t *pErr_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOO\",&S,&pSrc,&pRef,&pErr))\n  {\n\n    ml_arm_lms_instance_q31Object *selfS = (ml_arm_lms_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pRef,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pErr,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pOut=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_lms_q31(selfS->instance,pSrc_converted,pRef_converted,pOut,pErr_converted,blockSize);\n INT32ARRAY1(pOutOBJ,blockSize,pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pOutOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    FREEARGUMENT(pRef_converted);\n    Py_DECREF(pOutOBJ);\n    FREEARGUMENT(pErr_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  q31_t mu; // input\n  uint32_t blockSize; // input\n  uint32_t postShift; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOii\",&S,&numTaps,&pCoeffs,&pState,&mu,&postShift))\n  {\n\n    ml_arm_lms_instance_q31Object *selfS = (ml_arm_lms_instance_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1 ;\n\n    arm_lms_init_q31(selfS->instance,numTaps,pCoeffs_converted,pState_converted,mu,blockSize,postShift);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_norm_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  PyObject *pRef=NULL; // input\n  float32_t *pRef_converted=NULL; // input\n  float32_t *pOut=NULL; // output\n  PyObject *pErr=NULL; // input\n  float32_t *pErr_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOO\",&S,&pSrc,&pRef,&pErr))\n  {\n\n    ml_arm_lms_norm_instance_f32Object *selfS = (ml_arm_lms_norm_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pRef,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pErr,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pOut=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_lms_norm_f32(selfS->instance,pSrc_converted,pRef_converted,pOut,pErr_converted,blockSize);\n FLOATARRAY1(pOutOBJ,blockSize,pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pOutOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    FREEARGUMENT(pRef_converted);\n    Py_DECREF(pOutOBJ);\n    FREEARGUMENT(pErr_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_norm_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  float32_t mu; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOf\",&S,&numTaps,&pCoeffs,&pState,&mu))\n  {\n\n    ml_arm_lms_norm_instance_f32Object *selfS = (ml_arm_lms_norm_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1 ;\n\n    arm_lms_norm_init_f32(selfS->instance,numTaps,pCoeffs_converted,pState_converted,mu,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_norm_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  PyObject *pRef=NULL; // input\n  q31_t *pRef_converted=NULL; // input\n  q31_t *pOut=NULL; // output\n  PyObject *pErr=NULL; // input\n  q31_t *pErr_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOO\",&S,&pSrc,&pRef,&pErr))\n  {\n\n    ml_arm_lms_norm_instance_q31Object *selfS = (ml_arm_lms_norm_instance_q31Object *)S;\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pRef,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pErr,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pOut=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_lms_norm_q31(selfS->instance,pSrc_converted,pRef_converted,pOut,pErr_converted,blockSize);\n INT32ARRAY1(pOutOBJ,blockSize,pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pOutOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    FREEARGUMENT(pRef_converted);\n    Py_DECREF(pOutOBJ);\n    FREEARGUMENT(pErr_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_norm_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  q31_t mu; // input\n  uint32_t blockSize; // input\n  uint32_t postShift; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOii\",&S,&numTaps,&pCoeffs,&pState,&mu,&postShift))\n  {\n\n    ml_arm_lms_norm_instance_q31Object *selfS = (ml_arm_lms_norm_instance_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1 ;\n\n    arm_lms_norm_init_q31(selfS->instance,numTaps,pCoeffs_converted,pState_converted,mu,blockSize,(uint8_t)postShift);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_norm_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  PyObject *pRef=NULL; // input\n  q15_t *pRef_converted=NULL; // input\n  q15_t *pOut=NULL; // output\n  PyObject *pErr=NULL; // input\n  q15_t *pErr_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OOOO\",&S,&pSrc,&pRef,&pErr))\n  {\n\n    ml_arm_lms_norm_instance_q15Object *selfS = (ml_arm_lms_norm_instance_q15Object *)S;\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pRef,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pErr,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pOut=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_lms_norm_q15(selfS->instance,pSrc_converted,pRef_converted,pOut,pErr_converted,blockSize);\n INT16ARRAY1(pOutOBJ,blockSize,pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pOutOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    FREEARGUMENT(pRef_converted);\n    Py_DECREF(pOutOBJ);\n    FREEARGUMENT(pErr_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_lms_norm_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  q15_t mu; // input\n  uint32_t blockSize; // input\n  uint32_t postShift; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOhi\",&S,&numTaps,&pCoeffs,&pState,&mu,&postShift))\n  {\n\n    ml_arm_lms_norm_instance_q15Object *selfS = (ml_arm_lms_norm_instance_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1 ;\n\n    arm_lms_norm_init_q15(selfS->instance,numTaps,pCoeffs_converted,pState_converted,mu,blockSize,(uint8_t)postShift);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  float32_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*outputLength);\n\n\n    arm_correlate_f32(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n FLOATARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_opt_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  PyObject *pScratch=NULL; // input\n  q15_t *pScratch_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&pScratch))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_correlate_opt_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,pScratch_converted);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_correlate_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_fast_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_correlate_fast_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_fast_opt_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q15_t *pDst=NULL; // output\n  PyObject *pScratch=NULL; // input\n  q15_t *pScratch_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&pScratch))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*outputLength);\n\n\n    arm_correlate_fast_opt_q15(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,pScratch_converted);\n INT16ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q31_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*outputLength);\n\n\n    arm_correlate_q31(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT32ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_fast_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q31_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*outputLength);\n\n\n    arm_correlate_fast_q31(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT32ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_opt_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q7_t *pDst=NULL; // output\n  PyObject *pScratch1=NULL; // input\n  q15_t *pScratch1_converted=NULL; // input\n  PyObject *pScratch2=NULL; // input\n  q15_t *pScratch2_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiOO\",&pSrcA,&srcALen,&pSrcB,&srcBLen,&pScratch1,&pScratch2))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pScratch1,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pScratch2,NPY_INT16,int16_t,int16_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*outputLength);\n\n\n    arm_correlate_opt_q7(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst,pScratch1_converted,pScratch2_converted);\n INT8ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratch1_converted);\n    FREEARGUMENT(pScratch2_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_correlate_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q7_t *pSrcA_converted=NULL; // input\n  uint32_t srcALen; // input\n  PyObject *pSrcB=NULL; // input\n  q7_t *pSrcB_converted=NULL; // input\n  uint32_t srcBLen; // input\n  q7_t *pDst=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OiOi\",&pSrcA,&srcALen,&pSrcB,&srcBLen))\n  {\n\n    GETARGUMENT(pSrcA,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pSrcB,NPY_BYTE,int8_t,q7_t);\n    uint32_t outputLength = 2*MAX(srcALen,srcBLen) - 1 ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*outputLength);\n\n\n    arm_correlate_q7(pSrcA_converted,srcALen,pSrcB_converted,srcBLen,pDst);\n INT8ARRAY1(pDstOBJ,outputLength,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_sparse_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  PyObject *pScratchIn=NULL; // input\n  float32_t *pScratchIn_converted=NULL; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OOO\",&S,&pSrc,&pScratchIn))\n  {\n\n    ml_arm_fir_sparse_instance_f32Object *selfS = (ml_arm_fir_sparse_instance_f32Object *)S;\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pScratchIn,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_fir_sparse_f32(selfS->instance,pSrc_converted,pDst,pScratchIn_converted,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    FREEARGUMENT(pScratchIn_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_sparse_init_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  float32_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  float32_t *pState_converted=NULL; // input\n  PyObject *pTapDelay=NULL; // input\n  int32_t *pTapDelay_converted=NULL; // input\n  uint16_t maxDelay; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOOh\",&S,&numTaps,&pCoeffs,&pState,&pTapDelay,&maxDelay))\n  {\n\n    ml_arm_fir_sparse_instance_f32Object *selfS = (ml_arm_fir_sparse_instance_f32Object *)S;\n    GETARGUMENT(pCoeffs,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pState,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pTapDelay,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_fir_sparse_init_f32(selfS->instance,numTaps,pCoeffs_converted,pState_converted,pTapDelay_converted,maxDelay,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_sparse_init_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q31_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q31_t *pState_converted=NULL; // input\n  PyObject *pTapDelay=NULL; // input\n  int32_t *pTapDelay_converted=NULL; // input\n  uint16_t maxDelay; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOOh\",&S,&numTaps,&pCoeffs,&pState,&pTapDelay,&maxDelay))\n  {\n\n    ml_arm_fir_sparse_instance_q31Object *selfS = (ml_arm_fir_sparse_instance_q31Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pState,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pTapDelay,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_fir_sparse_init_q31(selfS->instance,numTaps,pCoeffs_converted,pState_converted,pTapDelay_converted,maxDelay,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_sparse_init_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q15_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q15_t *pState_converted=NULL; // input\n  PyObject *pTapDelay=NULL; // input\n  int32_t *pTapDelay_converted=NULL; // input\n  uint16_t maxDelay; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOOh\",&S,&numTaps,&pCoeffs,&pState,&pTapDelay,&maxDelay))\n  {\n\n    ml_arm_fir_sparse_instance_q15Object *selfS = (ml_arm_fir_sparse_instance_q15Object *)S;\n    GETARGUMENT(pCoeffs,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pState,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pTapDelay,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_fir_sparse_init_q15(selfS->instance,numTaps,pCoeffs_converted,pState_converted,pTapDelay_converted,maxDelay,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_fir_sparse_init_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  uint16_t numTaps; // input\n  PyObject *pCoeffs=NULL; // input\n  q7_t *pCoeffs_converted=NULL; // input\n  PyObject *pState=NULL; // input\n  q7_t *pState_converted=NULL; // input\n  PyObject *pTapDelay=NULL; // input\n  int32_t *pTapDelay_converted=NULL; // input\n  uint16_t maxDelay; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OhOOOh\",&S,&numTaps,&pCoeffs,&pState,&pTapDelay,&maxDelay))\n  {\n\n    ml_arm_fir_sparse_instance_q7Object *selfS = (ml_arm_fir_sparse_instance_q7Object *)S;\n    GETARGUMENT(pCoeffs,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pState,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(pTapDelay,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepState - arraySizepCoeffs + 1;\n\n    arm_fir_sparse_init_q7(selfS->instance,numTaps,pCoeffs_converted,pState_converted,pTapDelay_converted,maxDelay,blockSize);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sin_cos_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t theta; // input\n  PyObject *pSinVal=NULL; // input\n  float32_t *pSinVal_converted=NULL; // input\n  PyObject *pCosVal=NULL; // input\n  float32_t *pCosVal_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"fOO\",&theta,&pSinVal,&pCosVal))\n  {\n\n    GETARGUMENT(pSinVal,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pCosVal,NPY_DOUBLE,double,float32_t);\n\n    arm_sin_cos_f32(theta,pSinVal_converted,pCosVal_converted);\n    FREEARGUMENT(pSinVal_converted);\n    FREEARGUMENT(pCosVal_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sin_cos_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t theta; // input\n  PyObject *pSinVal=NULL; // input\n  q31_t *pSinVal_converted=NULL; // input\n  PyObject *pCosVal=NULL; // input\n  q31_t *pCosVal_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"iOO\",&theta,&pSinVal,&pCosVal))\n  {\n\n    GETARGUMENT(pSinVal,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pCosVal,NPY_INT32,int32_t,int32_t);\n\n    arm_sin_cos_q31(theta,pSinVal_converted,pCosVal_converted);\n    FREEARGUMENT(pSinVal_converted);\n    FREEARGUMENT(pCosVal_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_conj_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*2*numSamples);\n\n\n    arm_cmplx_conj_f32(pSrc_converted,pDst,numSamples);\n FLOATARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_conj_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*2*numSamples);\n\n\n    arm_cmplx_conj_q31(pSrc_converted,pDst,numSamples);\n INT32ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_conj_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*2*numSamples);\n\n\n    arm_cmplx_conj_q15(pSrc_converted,pDst,numSamples);\n INT16ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mag_squared_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*2*numSamples);\n\n\n    arm_cmplx_mag_squared_f32(pSrc_converted,pDst,numSamples);\n FLOATARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mag_squared_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*2*numSamples);\n\n\n    arm_cmplx_mag_squared_q31(pSrc_converted,pDst,numSamples);\n INT32ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mag_squared_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*2*numSamples);\n\n\n    arm_cmplx_mag_squared_q15(pSrc_converted,pDst,numSamples);\n INT16ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  float32_t in; // input\n\n  if (PyArg_ParseTuple(args,\"Of\",&S,&in))\n  {\n\n    ml_arm_pid_instance_f32Object *selfS = (ml_arm_pid_instance_f32Object *)S;\n\n    float32_t returnValue = arm_pid_f32(selfS->instance,in);\n    PyObject* theReturnOBJ=Py_BuildValue(\"f\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  q31_t in; // input\n\n  if (PyArg_ParseTuple(args,\"Oi\",&S,&in))\n  {\n\n    ml_arm_pid_instance_q31Object *selfS = (ml_arm_pid_instance_q31Object *)S;\n\n    q31_t returnValue = arm_pid_q31(selfS->instance,in);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_pid_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  q15_t in; // input\n\n  if (PyArg_ParseTuple(args,\"Oh\",&S,&in))\n  {\n\n    ml_arm_pid_instance_q15Object *selfS = (ml_arm_pid_instance_q15Object *)S;\n\n    q15_t returnValue = arm_pid_q15(selfS->instance,in);\n    PyObject* theReturnOBJ=Py_BuildValue(\"h\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_inverse_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *src=NULL; // input\n  arm_matrix_instance_f32 *src_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&src))\n  {\n\n    arm_matrix_instance_f32 *src_converted = f32MatrixFromNumpy(src);\n    uint32_t row = src_converted->numCols ;\n    uint32_t column = src_converted->numRows ;\n    arm_matrix_instance_f32 *dst_converted = createf32Matrix(row,column);\n\n    arm_status returnValue = arm_mat_inverse_f32(src_converted,dst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* dstOBJ=NumpyArrayFromf32Matrix(dst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,dstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(src_converted);\n    Py_DECREF(dstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mat_inverse_f64(PyObject *obj, PyObject *args)\n{\n\n  PyObject *src=NULL; // input\n  arm_matrix_instance_f64 *src_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&src))\n  {\n\n    arm_matrix_instance_f64 *src_converted = f64MatrixFromNumpy(src);\n    uint32_t row = src_converted->numCols ;\n    uint32_t column = src_converted->numRows ;\n    arm_matrix_instance_f64 *dst_converted = createf64Matrix(row,column);\n\n    arm_status returnValue = arm_mat_inverse_f64(src_converted,dst_converted);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* dstOBJ=NumpyArrayFromf64Matrix(dst_converted);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,dstOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(src_converted);\n    Py_DECREF(dstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_clarke_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t Ia; // input\n  float32_t Ib; // input\n  PyObject *pIalpha=NULL; // input\n  float32_t *pIalpha_converted=NULL; // input\n  PyObject *pIbeta=NULL; // input\n  float32_t *pIbeta_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"ffOO\",&Ia,&Ib,&pIalpha,&pIbeta))\n  {\n\n    GETARGUMENT(pIalpha,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pIbeta,NPY_DOUBLE,double,float32_t);\n\n    arm_clarke_f32(Ia,Ib,pIalpha_converted,pIbeta_converted);\n    FREEARGUMENT(pIalpha_converted);\n    FREEARGUMENT(pIbeta_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_clarke_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t Ia; // input\n  q31_t Ib; // input\n  PyObject *pIalpha=NULL; // input\n  q31_t *pIalpha_converted=NULL; // input\n  PyObject *pIbeta=NULL; // input\n  q31_t *pIbeta_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"iiOO\",&Ia,&Ib,&pIalpha,&pIbeta))\n  {\n\n    GETARGUMENT(pIalpha,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pIbeta,NPY_INT32,int32_t,int32_t);\n\n    arm_clarke_q31(Ia,Ib,pIalpha_converted,pIbeta_converted);\n    FREEARGUMENT(pIalpha_converted);\n    FREEARGUMENT(pIbeta_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q7_to_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_q7_to_q31(pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_inv_clarke_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t Ialpha; // input\n  float32_t Ibeta; // input\n  PyObject *pIa=NULL; // input\n  float32_t *pIa_converted=NULL; // input\n  PyObject *pIb=NULL; // input\n  float32_t *pIb_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"ffOO\",&Ialpha,&Ibeta,&pIa,&pIb))\n  {\n\n    GETARGUMENT(pIa,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pIb,NPY_DOUBLE,double,float32_t);\n\n    arm_inv_clarke_f32(Ialpha,Ibeta,pIa_converted,pIb_converted);\n    FREEARGUMENT(pIa_converted);\n    FREEARGUMENT(pIb_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_inv_clarke_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t Ialpha; // input\n  q31_t Ibeta; // input\n  PyObject *pIa=NULL; // input\n  q31_t *pIa_converted=NULL; // input\n  PyObject *pIb=NULL; // input\n  q31_t *pIb_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"iiOO\",&Ialpha,&Ibeta,&pIa,&pIb))\n  {\n\n    GETARGUMENT(pIa,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pIb,NPY_INT32,int32_t,int32_t);\n\n    arm_inv_clarke_q31(Ialpha,Ibeta,pIa_converted,pIb_converted);\n    FREEARGUMENT(pIa_converted);\n    FREEARGUMENT(pIb_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q7_to_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_q7_to_q15(pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_park_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t Ialpha; // input\n  float32_t Ibeta; // input\n  PyObject *pId=NULL; // input\n  float32_t *pId_converted=NULL; // input\n  PyObject *pIq=NULL; // input\n  float32_t *pIq_converted=NULL; // input\n  float32_t sinVal; // input\n  float32_t cosVal; // input\n\n  if (PyArg_ParseTuple(args,\"ffOOff\",&Ialpha,&Ibeta,&pId,&pIq,&sinVal,&cosVal))\n  {\n\n    GETARGUMENT(pId,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pIq,NPY_DOUBLE,double,float32_t);\n\n    arm_park_f32(Ialpha,Ibeta,pId_converted,pIq_converted,sinVal,cosVal);\n    FREEARGUMENT(pId_converted);\n    FREEARGUMENT(pIq_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_park_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t Ialpha; // input\n  q31_t Ibeta; // input\n  PyObject *pId=NULL; // input\n  q31_t *pId_converted=NULL; // input\n  PyObject *pIq=NULL; // input\n  q31_t *pIq_converted=NULL; // input\n  q31_t sinVal; // input\n  q31_t cosVal; // input\n\n  if (PyArg_ParseTuple(args,\"iiOOii\",&Ialpha,&Ibeta,&pId,&pIq,&sinVal,&cosVal))\n  {\n\n    GETARGUMENT(pId,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pIq,NPY_INT32,int32_t,int32_t);\n\n    arm_park_q31(Ialpha,Ibeta,pId_converted,pIq_converted,sinVal,cosVal);\n    FREEARGUMENT(pId_converted);\n    FREEARGUMENT(pIq_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q7_to_float(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_q7_to_float(pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_inv_park_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t Id; // input\n  float32_t Iq; // input\n  PyObject *pIalpha=NULL; // input\n  float32_t *pIalpha_converted=NULL; // input\n  PyObject *pIbeta=NULL; // input\n  float32_t *pIbeta_converted=NULL; // input\n  float32_t sinVal; // input\n  float32_t cosVal; // input\n\n  if (PyArg_ParseTuple(args,\"ffOOff\",&Id,&Iq,&pIalpha,&pIbeta,&sinVal,&cosVal))\n  {\n\n    GETARGUMENT(pIalpha,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pIbeta,NPY_DOUBLE,double,float32_t);\n\n    arm_inv_park_f32(Id,Iq,pIalpha_converted,pIbeta_converted,sinVal,cosVal);\n    FREEARGUMENT(pIalpha_converted);\n    FREEARGUMENT(pIbeta_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_inv_park_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t Id; // input\n  q31_t Iq; // input\n  PyObject *pIalpha=NULL; // input\n  q31_t *pIalpha_converted=NULL; // input\n  PyObject *pIbeta=NULL; // input\n  q31_t *pIbeta_converted=NULL; // input\n  q31_t sinVal; // input\n  q31_t cosVal; // input\n\n  if (PyArg_ParseTuple(args,\"iiOOii\",&Id,&Iq,&pIalpha,&pIbeta,&sinVal,&cosVal))\n  {\n\n    GETARGUMENT(pIalpha,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pIbeta,NPY_INT32,int32_t,int32_t);\n\n    arm_inv_park_q31(Id,Iq,pIalpha_converted,pIbeta_converted,sinVal,cosVal);\n    FREEARGUMENT(pIalpha_converted);\n    FREEARGUMENT(pIbeta_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q31_to_float(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_q31_to_float(pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_linear_interp_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  float32_t x; // input\n\n  if (PyArg_ParseTuple(args,\"Of\",&S,&x))\n  {\n\n    ml_arm_linear_interp_instance_f32Object *selfS = (ml_arm_linear_interp_instance_f32Object *)S;\n\n    float32_t returnValue = arm_linear_interp_f32(selfS->instance,x);\n    PyObject* theReturnOBJ=Py_BuildValue(\"f\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_linear_interp_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pYData=NULL; // input\n  q31_t *pYData_converted=NULL; // input\n  q31_t x; // input\n  uint32_t nValues; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&pYData,&x,&nValues))\n  {\n\n    GETARGUMENT(pYData,NPY_INT32,int32_t,int32_t);\n\n    q31_t returnValue = arm_linear_interp_q31(pYData_converted,x,nValues);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pYData_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_linear_interp_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pYData=NULL; // input\n  q15_t *pYData_converted=NULL; // input\n  q31_t x; // input\n  uint32_t nValues; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&pYData,&x,&nValues))\n  {\n\n    GETARGUMENT(pYData,NPY_INT16,int16_t,int16_t);\n\n    q15_t returnValue = arm_linear_interp_q15(pYData_converted,x,nValues);\n    PyObject* theReturnOBJ=Py_BuildValue(\"h\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pYData_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_linear_interp_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pYData=NULL; // input\n  q7_t *pYData_converted=NULL; // input\n  q31_t x; // input\n  uint32_t nValues; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&pYData,&x,&nValues))\n  {\n\n    GETARGUMENT(pYData,NPY_BYTE,int8_t,q7_t);\n\n    q7_t returnValue = arm_linear_interp_q7(pYData_converted,x,nValues);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    FREEARGUMENT(pYData_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sin_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t x; // input\n\n  if (PyArg_ParseTuple(args,\"f\",&x))\n  {\n\n\n    float32_t returnValue = arm_sin_f32(x);\n    PyObject* theReturnOBJ=Py_BuildValue(\"f\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sin_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t x; // input\n\n  if (PyArg_ParseTuple(args,\"i\",&x))\n  {\n\n\n    q31_t returnValue = arm_sin_q31(x);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sin_q15(PyObject *obj, PyObject *args)\n{\n\n  q15_t x; // input\n\n  if (PyArg_ParseTuple(args,\"h\",&x))\n  {\n\n\n    q15_t returnValue = arm_sin_q15(x);\n    PyObject* theReturnOBJ=Py_BuildValue(\"h\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cos_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t x; // input\n\n  if (PyArg_ParseTuple(args,\"f\",&x))\n  {\n\n\n    float32_t returnValue = arm_cos_f32(x);\n    PyObject* theReturnOBJ=Py_BuildValue(\"f\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cos_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t x; // input\n\n  if (PyArg_ParseTuple(args,\"i\",&x))\n  {\n\n\n    q31_t returnValue = arm_cos_q31(x);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cos_q15(PyObject *obj, PyObject *args)\n{\n\n  q15_t x; // input\n\n  if (PyArg_ParseTuple(args,\"h\",&x))\n  {\n\n\n    q15_t returnValue = arm_cos_q15(x);\n    PyObject* theReturnOBJ=Py_BuildValue(\"h\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sqrt_f32(PyObject *obj, PyObject *args)\n{\n\n  float32_t in; // input\n  float32_t *pOut=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"f\",&in))\n  {\n\n    \n    pOut=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_status returnValue = arm_sqrt_f32(in,pOut);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pOutOBJ=Py_BuildValue(\"f\",*pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pOutOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    Py_DECREF(pOutOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sqrt_q31(PyObject *obj, PyObject *args)\n{\n\n  q31_t in; // input\n  q31_t *pOut=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"i\",&in))\n  {\n\n    \n    pOut=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_status returnValue = arm_sqrt_q31(in,pOut);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pOutOBJ=Py_BuildValue(\"i\",*pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pOutOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    Py_DECREF(pOutOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_sqrt_q15(PyObject *obj, PyObject *args)\n{\n\n  q15_t in; // input\n  q15_t *pOut=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"h\",&in))\n  {\n\n    \n    pOut=PyMem_Malloc(sizeof(q15_t)*1);\n\n\n    arm_status returnValue = arm_sqrt_q15(in,pOut);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n    PyObject* pOutOBJ=Py_BuildValue(\"h\",*pOut);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",theReturnOBJ,pOutOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    Py_DECREF(pOutOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_circularWrite_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *circBuffer=NULL; // input\n  int32_t *circBuffer_converted=NULL; // input\n  int32_t L; // input\n  PyObject *writeOffset=NULL; // input\n  uint16_t *writeOffset_converted=NULL; // input\n  int32_t bufferInc; // input\n  PyObject *src=NULL; // input\n  int32_t *src_converted=NULL; // input\n  int32_t srcInc; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiOi\",&circBuffer,&L,&writeOffset,&bufferInc,&src,&srcInc))\n  {\n\n    GETARGUMENT(circBuffer,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(writeOffset,NPY_UINT16,uint16_t,uint16_t);\n    GETARGUMENT(src,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizecircBuffer ;\n\n    arm_circularWrite_f32(circBuffer_converted,L,writeOffset_converted,bufferInc,src_converted,srcInc,blockSize);\n    FREEARGUMENT(circBuffer_converted);\n    FREEARGUMENT(writeOffset_converted);\n    FREEARGUMENT(src_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_circularWrite_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *circBuffer=NULL; // input\n  q15_t *circBuffer_converted=NULL; // input\n  int32_t L; // input\n  PyObject *writeOffset=NULL; // input\n  uint16_t *writeOffset_converted=NULL; // input\n  int32_t bufferInc; // input\n  PyObject *src=NULL; // input\n  q15_t *src_converted=NULL; // input\n  int32_t srcInc; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiOi\",&circBuffer,&L,&writeOffset,&bufferInc,&src,&srcInc))\n  {\n\n    GETARGUMENT(circBuffer,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(writeOffset,NPY_UINT16,uint16_t,uint16_t);\n    GETARGUMENT(src,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizecircBuffer ;\n\n    arm_circularWrite_q15(circBuffer_converted,L,writeOffset_converted,bufferInc,src_converted,srcInc,blockSize);\n    FREEARGUMENT(circBuffer_converted);\n    FREEARGUMENT(writeOffset_converted);\n    FREEARGUMENT(src_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_circularWrite_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *circBuffer=NULL; // input\n  q7_t *circBuffer_converted=NULL; // input\n  int32_t L; // input\n  PyObject *writeOffset=NULL; // input\n  uint16_t *writeOffset_converted=NULL; // input\n  int32_t bufferInc; // input\n  PyObject *src=NULL; // input\n  q7_t *src_converted=NULL; // input\n  int32_t srcInc; // input\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"OiOiOi\",&circBuffer,&L,&writeOffset,&bufferInc,&src,&srcInc))\n  {\n\n    GETARGUMENT(circBuffer,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(writeOffset,NPY_UINT16,uint16_t,uint16_t);\n    GETARGUMENT(src,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizecircBuffer ;\n\n    arm_circularWrite_q7(circBuffer_converted,L,writeOffset_converted,bufferInc,src_converted,srcInc,blockSize);\n    FREEARGUMENT(circBuffer_converted);\n    FREEARGUMENT(writeOffset_converted);\n    FREEARGUMENT(src_converted);\n    Py_RETURN_NONE;\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_power_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q63_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q63_t)*1);\n\n\n    arm_power_q31(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"L\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_power_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_power_f32(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"f\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_power_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q63_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q63_t)*1);\n\n\n    arm_power_q15(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"L\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_power_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_power_q7(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mean_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q7_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q7_t)*1);\n\n\n    arm_mean_q7(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mean_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q15_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q15_t)*1);\n\n\n    arm_mean_q15(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"h\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mean_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_mean_q31(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_mean_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_mean_f32(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"f\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_var_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_var_f32(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"f\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_var_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_var_q31(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_var_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q15_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q15_t)*1);\n\n\n    arm_var_q15(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"h\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rms_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_rms_f32(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"f\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rms_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_rms_q31(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_rms_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q15_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q15_t)*1);\n\n\n    arm_rms_q15(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"h\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_std_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_std_f32(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"f\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_std_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_std_q31(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_std_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q15_t *pResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q15_t)*1);\n\n\n    arm_std_q15(pSrc_converted,blockSize,pResult);\n    PyObject* pResultOBJ=Py_BuildValue(\"h\",*pResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pResultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mag_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*2*numSamples);\n\n\n    arm_cmplx_mag_f32(pSrc_converted,pDst,numSamples);\n FLOATARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mag_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*2*numSamples);\n\n\n    arm_cmplx_mag_q31(pSrc_converted,pDst,numSamples);\n INT32ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mag_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    numSamples = arraySizepSrc ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*2*numSamples);\n\n\n    arm_cmplx_mag_q15(pSrc_converted,pDst,numSamples);\n INT16ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_dot_prod_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  uint32_t numSamples; // input\n  q31_t *realResult=NULL; // output\n  q31_t *imagResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    numSamples = arraySizepSrcA ;\n    numSamples = numSamples / 2;\n    \n    realResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n    \n    imagResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n\n    arm_cmplx_dot_prod_q15(pSrcA_converted,pSrcB_converted,numSamples,realResult,imagResult);\n    PyObject* realResultOBJ=Py_BuildValue(\"i\",*realResult);\n    PyObject* imagResultOBJ=Py_BuildValue(\"i\",*imagResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",realResultOBJ,imagResultOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(realResultOBJ);\n    Py_DECREF(imagResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_dot_prod_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  uint32_t numSamples; // input\n  q63_t *realResult=NULL; // output\n  q63_t *imagResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    numSamples = arraySizepSrcA ;\n    numSamples = numSamples / 2;\n    \n    realResult=PyMem_Malloc(sizeof(q63_t)*1);\n\n    \n    imagResult=PyMem_Malloc(sizeof(q63_t)*1);\n\n\n    arm_cmplx_dot_prod_q31(pSrcA_converted,pSrcB_converted,numSamples,realResult,imagResult);\n    PyObject* realResultOBJ=Py_BuildValue(\"L\",*realResult);\n    PyObject* imagResultOBJ=Py_BuildValue(\"L\",*imagResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",realResultOBJ,imagResultOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(realResultOBJ);\n    Py_DECREF(imagResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_dot_prod_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  uint32_t numSamples; // input\n  float32_t *realResult=NULL; // output\n  float32_t *imagResult=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    numSamples = arraySizepSrcA ;\n    numSamples = numSamples / 2;\n    \n    realResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n    \n    imagResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n\n    arm_cmplx_dot_prod_f32(pSrcA_converted,pSrcB_converted,numSamples,realResult,imagResult);\n    PyObject* realResultOBJ=Py_BuildValue(\"f\",*realResult);\n    PyObject* imagResultOBJ=Py_BuildValue(\"f\",*imagResult);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",realResultOBJ,imagResultOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(realResultOBJ);\n    Py_DECREF(imagResultOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mult_real_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcCmplx=NULL; // input\n  q15_t *pSrcCmplx_converted=NULL; // input\n  PyObject *pSrcReal=NULL; // input\n  q15_t *pSrcReal_converted=NULL; // input\n  q15_t *pCmplxDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcCmplx,&pSrcReal))\n  {\n\n    GETARGUMENT(pSrcCmplx,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcReal,NPY_INT16,int16_t,int16_t);\n    numSamples = arraySizepSrcCmplx ;\n    numSamples = numSamples / 2;\n    \n    pCmplxDst=PyMem_Malloc(sizeof(q15_t)*2*numSamples);\n\n\n    arm_cmplx_mult_real_q15(pSrcCmplx_converted,pSrcReal_converted,pCmplxDst,numSamples);\n INT16ARRAY1(pCmplxDstOBJ,2*numSamples,pCmplxDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pCmplxDstOBJ);\n\n    FREEARGUMENT(pSrcCmplx_converted);\n    FREEARGUMENT(pSrcReal_converted);\n    Py_DECREF(pCmplxDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mult_real_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcCmplx=NULL; // input\n  q31_t *pSrcCmplx_converted=NULL; // input\n  PyObject *pSrcReal=NULL; // input\n  q31_t *pSrcReal_converted=NULL; // input\n  q31_t *pCmplxDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcCmplx,&pSrcReal))\n  {\n\n    GETARGUMENT(pSrcCmplx,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcReal,NPY_INT32,int32_t,int32_t);\n    numSamples = arraySizepSrcCmplx ;\n    numSamples = numSamples / 2;\n    \n    pCmplxDst=PyMem_Malloc(sizeof(q31_t)*2*numSamples);\n\n\n    arm_cmplx_mult_real_q31(pSrcCmplx_converted,pSrcReal_converted,pCmplxDst,numSamples);\n INT32ARRAY1(pCmplxDstOBJ,2*numSamples,pCmplxDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pCmplxDstOBJ);\n\n    FREEARGUMENT(pSrcCmplx_converted);\n    FREEARGUMENT(pSrcReal_converted);\n    Py_DECREF(pCmplxDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mult_real_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcCmplx=NULL; // input\n  float32_t *pSrcCmplx_converted=NULL; // input\n  PyObject *pSrcReal=NULL; // input\n  float32_t *pSrcReal_converted=NULL; // input\n  float32_t *pCmplxDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcCmplx,&pSrcReal))\n  {\n\n    GETARGUMENT(pSrcCmplx,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcReal,NPY_DOUBLE,double,float32_t);\n    numSamples = arraySizepSrcCmplx ;\n    numSamples = numSamples / 2;\n    \n    pCmplxDst=PyMem_Malloc(sizeof(float32_t)*2*numSamples);\n\n\n    arm_cmplx_mult_real_f32(pSrcCmplx_converted,pSrcReal_converted,pCmplxDst,numSamples);\n FLOATARRAY1(pCmplxDstOBJ,2*numSamples,pCmplxDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pCmplxDstOBJ);\n\n    FREEARGUMENT(pSrcCmplx_converted);\n    FREEARGUMENT(pSrcReal_converted);\n    Py_DECREF(pCmplxDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_min_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q7_t *result=NULL; // output\n  PyObject *index=NULL; // input\n  uint32_t *index_converted=NULL; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrc,&index))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    GETARGUMENT(index,NPY_UINT32,uint32_t,uint32_t);\n    blockSize = arraySizepSrc ;\n    \n    result=PyMem_Malloc(sizeof(q7_t)*1);\n\n\n    arm_min_q7(pSrc_converted,blockSize,result,index_converted);\n    PyObject* resultOBJ=Py_BuildValue(\"i\",*result);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",resultOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(resultOBJ);\n    FREEARGUMENT(index_converted);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_min_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q15_t *pResult=NULL; // output\n  uint32_t *pIndex=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q15_t)*1);\n\n    \n    pIndex=PyMem_Malloc(sizeof(uint32_t)*1);\n\n\n    arm_min_q15(pSrc_converted,blockSize,pResult,pIndex);\n    PyObject* pResultOBJ=Py_BuildValue(\"h\",*pResult);\n    PyObject* pIndexOBJ=Py_BuildValue(\"i\",*pIndex);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",pResultOBJ,pIndexOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    Py_DECREF(pIndexOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_min_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *pResult=NULL; // output\n  uint32_t *pIndex=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n    \n    pIndex=PyMem_Malloc(sizeof(uint32_t)*1);\n\n\n    arm_min_q31(pSrc_converted,blockSize,pResult,pIndex);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n    PyObject* pIndexOBJ=Py_BuildValue(\"i\",*pIndex);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",pResultOBJ,pIndexOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    Py_DECREF(pIndexOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_min_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *pResult=NULL; // output\n  uint32_t *pIndex=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n    \n    pIndex=PyMem_Malloc(sizeof(uint32_t)*1);\n\n\n    arm_min_f32(pSrc_converted,blockSize,pResult,pIndex);\n    PyObject* pResultOBJ=Py_BuildValue(\"f\",*pResult);\n    PyObject* pIndexOBJ=Py_BuildValue(\"i\",*pIndex);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",pResultOBJ,pIndexOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    Py_DECREF(pIndexOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_max_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q7_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q7_t *pResult=NULL; // output\n  uint32_t *pIndex=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q7_t)*1);\n\n    \n    pIndex=PyMem_Malloc(sizeof(uint32_t)*1);\n\n\n    arm_max_q7(pSrc_converted,blockSize,pResult,pIndex);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n    PyObject* pIndexOBJ=Py_BuildValue(\"i\",*pIndex);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",pResultOBJ,pIndexOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    Py_DECREF(pIndexOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_max_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q15_t *pResult=NULL; // output\n  uint32_t *pIndex=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q15_t)*1);\n\n    \n    pIndex=PyMem_Malloc(sizeof(uint32_t)*1);\n\n\n    arm_max_q15(pSrc_converted,blockSize,pResult,pIndex);\n    PyObject* pResultOBJ=Py_BuildValue(\"h\",*pResult);\n    PyObject* pIndexOBJ=Py_BuildValue(\"i\",*pIndex);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",pResultOBJ,pIndexOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    Py_DECREF(pIndexOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_max_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  q31_t *pResult=NULL; // output\n  uint32_t *pIndex=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(q31_t)*1);\n\n    \n    pIndex=PyMem_Malloc(sizeof(uint32_t)*1);\n\n\n    arm_max_q31(pSrc_converted,blockSize,pResult,pIndex);\n    PyObject* pResultOBJ=Py_BuildValue(\"i\",*pResult);\n    PyObject* pIndexOBJ=Py_BuildValue(\"i\",*pIndex);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",pResultOBJ,pIndexOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    Py_DECREF(pIndexOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_max_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  uint32_t blockSize; // input\n  float32_t *pResult=NULL; // output\n  uint32_t *pIndex=NULL; // output\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pResult=PyMem_Malloc(sizeof(float32_t)*1);\n\n    \n    pIndex=PyMem_Malloc(sizeof(uint32_t)*1);\n\n\n    arm_max_f32(pSrc_converted,blockSize,pResult,pIndex);\n    PyObject* pResultOBJ=Py_BuildValue(\"f\",*pResult);\n    PyObject* pIndexOBJ=Py_BuildValue(\"i\",*pIndex);\n\n    PyObject *pythonResult = Py_BuildValue(\"OO\",pResultOBJ,pIndexOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pResultOBJ);\n    Py_DECREF(pIndexOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mult_cmplx_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q15_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q15_t *pSrcB_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT16,int16_t,int16_t);\n    GETARGUMENT(pSrcB,NPY_INT16,int16_t,int16_t);\n    numSamples = arraySizepSrcA ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*2*numSamples);\n\n\n    arm_cmplx_mult_cmplx_q15(pSrcA_converted,pSrcB_converted,pDst,numSamples);\n INT16ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mult_cmplx_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  q31_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  q31_t *pSrcB_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_INT32,int32_t,int32_t);\n    GETARGUMENT(pSrcB,NPY_INT32,int32_t,int32_t);\n    numSamples = arraySizepSrcA ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*2*numSamples);\n\n\n    arm_cmplx_mult_cmplx_q31(pSrcA_converted,pSrcB_converted,pDst,numSamples);\n INT32ARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_cmplx_mult_cmplx_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrcA=NULL; // input\n  float32_t *pSrcA_converted=NULL; // input\n  PyObject *pSrcB=NULL; // input\n  float32_t *pSrcB_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t numSamples; // input\n\n  if (PyArg_ParseTuple(args,\"OO\",&pSrcA,&pSrcB))\n  {\n\n    GETARGUMENT(pSrcA,NPY_DOUBLE,double,float32_t);\n    GETARGUMENT(pSrcB,NPY_DOUBLE,double,float32_t);\n    numSamples = arraySizepSrcA ;\n    numSamples = numSamples / 2;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*2*numSamples);\n\n\n    arm_cmplx_mult_cmplx_f32(pSrcA_converted,pSrcB_converted,pDst,numSamples);\n FLOATARRAY1(pDstOBJ,2*numSamples,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrcA_converted);\n    FREEARGUMENT(pSrcB_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_float_to_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_float_to_q31(pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_float_to_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_float_to_q15(pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_float_to_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  float32_t *pSrc_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_DOUBLE,double,float32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_float_to_q7(pSrc_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q31_to_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q15_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q15_t)*blockSize);\n\n\n    arm_q31_to_q15(pSrc_converted,pDst,blockSize);\n INT16ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q31_to_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q31_t *pSrc_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_q31_to_q7(pSrc_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q15_to_float(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  float32_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(float32_t)*blockSize);\n\n\n    arm_q15_to_float(pSrc_converted,pDst,blockSize);\n FLOATARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q15_to_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q31_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q31_t)*blockSize);\n\n\n    arm_q15_to_q31(pSrc_converted,pDst,blockSize);\n INT32ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_q15_to_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *pSrc=NULL; // input\n  q15_t *pSrc_converted=NULL; // input\n  q7_t *pDst=NULL; // output\n  uint32_t blockSize; // input\n\n  if (PyArg_ParseTuple(args,\"O\",&pSrc))\n  {\n\n    GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);\n    blockSize = arraySizepSrc ;\n    \n    pDst=PyMem_Malloc(sizeof(q7_t)*blockSize);\n\n\n    arm_q15_to_q7(pSrc_converted,pDst,blockSize);\n INT8ARRAY1(pDstOBJ,blockSize,pDst);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",pDstOBJ);\n\n    FREEARGUMENT(pSrc_converted);\n    Py_DECREF(pDstOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_bilinear_interp_f32(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  float32_t X; // input\n  float32_t Y; // input\n\n  if (PyArg_ParseTuple(args,\"Off\",&S,&X,&Y))\n  {\n\n    ml_arm_bilinear_interp_instance_f32Object *selfS = (ml_arm_bilinear_interp_instance_f32Object *)S;\n\n    float32_t returnValue = arm_bilinear_interp_f32(selfS->instance,X,Y);\n    PyObject* theReturnOBJ=Py_BuildValue(\"f\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_bilinear_interp_q31(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  q31_t X; // input\n  q31_t Y; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&S,&X,&Y))\n  {\n\n    ml_arm_bilinear_interp_instance_q31Object *selfS = (ml_arm_bilinear_interp_instance_q31Object *)S;\n\n    q31_t returnValue = arm_bilinear_interp_q31(selfS->instance,X,Y);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_bilinear_interp_q15(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  q31_t X; // input\n  q31_t Y; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&S,&X,&Y))\n  {\n\n    ml_arm_bilinear_interp_instance_q15Object *selfS = (ml_arm_bilinear_interp_instance_q15Object *)S;\n\n    q15_t returnValue = arm_bilinear_interp_q15(selfS->instance,X,Y);\n    PyObject* theReturnOBJ=Py_BuildValue(\"h\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyObject *\ncmsis_arm_bilinear_interp_q7(PyObject *obj, PyObject *args)\n{\n\n  PyObject *S=NULL; // input\n  q31_t X; // input\n  q31_t Y; // input\n\n  if (PyArg_ParseTuple(args,\"Oii\",&S,&X,&Y))\n  {\n\n    ml_arm_bilinear_interp_instance_q7Object *selfS = (ml_arm_bilinear_interp_instance_q7Object *)S;\n\n    q7_t returnValue = arm_bilinear_interp_q7(selfS->instance,X,Y);\n    PyObject* theReturnOBJ=Py_BuildValue(\"i\",returnValue);\n\n    PyObject *pythonResult = Py_BuildValue(\"O\",theReturnOBJ);\n\n    Py_DECREF(theReturnOBJ);\n    return(pythonResult);\n\n  }\n  return(NULL);\n}\n\n\nstatic PyMethodDef CMSISMLMethods[] = {\n\n{\"arm_recip_q31\",  cmsis_arm_recip_q31, METH_VARARGS,\"\"},\n{\"arm_recip_q15\",  cmsis_arm_recip_q15, METH_VARARGS,\"\"},\n{\"arm_fir_q7\",  cmsis_arm_fir_q7, METH_VARARGS,\"\"},\n{\"arm_fir_init_q7\",  cmsis_arm_fir_init_q7, METH_VARARGS,\"\"},\n{\"arm_fir_q15\",  cmsis_arm_fir_q15, METH_VARARGS,\"\"},\n{\"arm_fir_fast_q15\",  cmsis_arm_fir_fast_q15, METH_VARARGS,\"\"},\n{\"arm_fir_init_q15\",  cmsis_arm_fir_init_q15, METH_VARARGS,\"\"},\n{\"arm_fir_q31\",  cmsis_arm_fir_q31, METH_VARARGS,\"\"},\n{\"arm_fir_fast_q31\",  cmsis_arm_fir_fast_q31, METH_VARARGS,\"\"},\n{\"arm_fir_init_q31\",  cmsis_arm_fir_init_q31, METH_VARARGS,\"\"},\n{\"arm_fir_f32\",  cmsis_arm_fir_f32, METH_VARARGS,\"\"},\n{\"arm_fir_init_f32\",  cmsis_arm_fir_init_f32, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_q15\",  cmsis_arm_biquad_cascade_df1_q15, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_init_q15\",  cmsis_arm_biquad_cascade_df1_init_q15, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_fast_q15\",  cmsis_arm_biquad_cascade_df1_fast_q15, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_q31\",  cmsis_arm_biquad_cascade_df1_q31, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_fast_q31\",  cmsis_arm_biquad_cascade_df1_fast_q31, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_init_q31\",  cmsis_arm_biquad_cascade_df1_init_q31, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_f32\",  cmsis_arm_biquad_cascade_df1_f32, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df1_init_f32\",  cmsis_arm_biquad_cascade_df1_init_f32, METH_VARARGS,\"\"},\n{\"arm_mat_add_f32\",  cmsis_arm_mat_add_f32, METH_VARARGS,\"\"},\n{\"arm_mat_add_q15\",  cmsis_arm_mat_add_q15, METH_VARARGS,\"\"},\n{\"arm_mat_add_q31\",  cmsis_arm_mat_add_q31, METH_VARARGS,\"\"},\n{\"arm_mat_cmplx_mult_f32\",  cmsis_arm_mat_cmplx_mult_f32, METH_VARARGS,\"\"},\n{\"arm_mat_cmplx_mult_q15\",  cmsis_arm_mat_cmplx_mult_q15, METH_VARARGS,\"\"},\n{\"arm_mat_cmplx_mult_q31\",  cmsis_arm_mat_cmplx_mult_q31, METH_VARARGS,\"\"},\n{\"arm_mat_trans_f32\",  cmsis_arm_mat_trans_f32, METH_VARARGS,\"\"},\n{\"arm_mat_trans_q15\",  cmsis_arm_mat_trans_q15, METH_VARARGS,\"\"},\n{\"arm_mat_trans_q31\",  cmsis_arm_mat_trans_q31, METH_VARARGS,\"\"},\n{\"arm_mat_mult_f32\",  cmsis_arm_mat_mult_f32, METH_VARARGS,\"\"},\n{\"arm_mat_mult_q15\",  cmsis_arm_mat_mult_q15, METH_VARARGS,\"\"},\n{\"arm_mat_mult_fast_q15\",  cmsis_arm_mat_mult_fast_q15, METH_VARARGS,\"\"},\n{\"arm_mat_mult_q31\",  cmsis_arm_mat_mult_q31, METH_VARARGS,\"\"},\n{\"arm_mat_mult_fast_q31\",  cmsis_arm_mat_mult_fast_q31, METH_VARARGS,\"\"},\n{\"arm_mat_sub_f32\",  cmsis_arm_mat_sub_f32, METH_VARARGS,\"\"},\n{\"arm_mat_sub_q15\",  cmsis_arm_mat_sub_q15, METH_VARARGS,\"\"},\n{\"arm_mat_sub_q31\",  cmsis_arm_mat_sub_q31, METH_VARARGS,\"\"},\n{\"arm_mat_scale_f32\",  cmsis_arm_mat_scale_f32, METH_VARARGS,\"\"},\n{\"arm_mat_scale_q15\",  cmsis_arm_mat_scale_q15, METH_VARARGS,\"\"},\n{\"arm_mat_scale_q31\",  cmsis_arm_mat_scale_q31, METH_VARARGS,\"\"},\n{\"arm_pid_init_f32\",  cmsis_arm_pid_init_f32, METH_VARARGS,\"\"},\n{\"arm_pid_reset_f32\",  cmsis_arm_pid_reset_f32, METH_VARARGS,\"\"},\n{\"arm_pid_init_q31\",  cmsis_arm_pid_init_q31, METH_VARARGS,\"\"},\n{\"arm_pid_reset_q31\",  cmsis_arm_pid_reset_q31, METH_VARARGS,\"\"},\n{\"arm_pid_init_q15\",  cmsis_arm_pid_init_q15, METH_VARARGS,\"\"},\n{\"arm_pid_reset_q15\",  cmsis_arm_pid_reset_q15, METH_VARARGS,\"\"},\n{\"arm_mult_q7\",  cmsis_arm_mult_q7, METH_VARARGS,\"\"},\n{\"arm_mult_q15\",  cmsis_arm_mult_q15, METH_VARARGS,\"\"},\n{\"arm_mult_q31\",  cmsis_arm_mult_q31, METH_VARARGS,\"\"},\n{\"arm_mult_f32\",  cmsis_arm_mult_f32, METH_VARARGS,\"\"},\n{\"arm_cfft_radix2_init_q15\",  cmsis_arm_cfft_radix2_init_q15, METH_VARARGS,\"\"},\n{\"arm_cfft_radix2_q15\",  cmsis_arm_cfft_radix2_q15, METH_VARARGS,\"\"},\n{\"arm_cfft_radix4_init_q15\",  cmsis_arm_cfft_radix4_init_q15, METH_VARARGS,\"\"},\n{\"arm_cfft_radix4_q15\",  cmsis_arm_cfft_radix4_q15, METH_VARARGS,\"\"},\n{\"arm_cfft_radix2_init_q31\",  cmsis_arm_cfft_radix2_init_q31, METH_VARARGS,\"\"},\n{\"arm_cfft_radix2_q31\",  cmsis_arm_cfft_radix2_q31, METH_VARARGS,\"\"},\n{\"arm_cfft_radix4_q31\",  cmsis_arm_cfft_radix4_q31, METH_VARARGS,\"\"},\n{\"arm_cfft_radix4_init_q31\",  cmsis_arm_cfft_radix4_init_q31, METH_VARARGS,\"\"},\n{\"arm_cfft_radix2_init_f32\",  cmsis_arm_cfft_radix2_init_f32, METH_VARARGS,\"\"},\n{\"arm_cfft_radix2_f32\",  cmsis_arm_cfft_radix2_f32, METH_VARARGS,\"\"},\n{\"arm_cfft_radix4_init_f32\",  cmsis_arm_cfft_radix4_init_f32, METH_VARARGS,\"\"},\n{\"arm_cfft_radix4_f32\",  cmsis_arm_cfft_radix4_f32, METH_VARARGS,\"\"},\n{\"arm_cfft_q15\",  cmsis_arm_cfft_q15, METH_VARARGS,\"\"},\n{\"arm_cfft_q31\",  cmsis_arm_cfft_q31, METH_VARARGS,\"\"},\n{\"arm_cfft_f32\",  cmsis_arm_cfft_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_init_q15\",  cmsis_arm_rfft_init_q15, METH_VARARGS,\"\"},\n{\"arm_rfft_q15\",  cmsis_arm_rfft_q15, METH_VARARGS,\"\"},\n{\"arm_rfft_init_q31\",  cmsis_arm_rfft_init_q31, METH_VARARGS,\"\"},\n{\"arm_rfft_q31\",  cmsis_arm_rfft_q31, METH_VARARGS,\"\"},\n{\"arm_rfft_init_f32\",  cmsis_arm_rfft_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_f32\",  cmsis_arm_rfft_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_fast_init_f32\",  cmsis_arm_rfft_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_32_fast_init_f32\",  cmsis_arm_rfft_32_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_64_fast_init_f32\",  cmsis_arm_rfft_64_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_128_fast_init_f32\",  cmsis_arm_rfft_128_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_256_fast_init_f32\",  cmsis_arm_rfft_256_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_512_fast_init_f32\",  cmsis_arm_rfft_512_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_1024_fast_init_f32\",  cmsis_arm_rfft_1024_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_2048_fast_init_f32\",  cmsis_arm_rfft_2048_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_4096_fast_init_f32\",  cmsis_arm_rfft_4096_fast_init_f32, METH_VARARGS,\"\"},\n{\"arm_rfft_fast_f32\",  cmsis_arm_rfft_fast_f32, METH_VARARGS,\"\"},\n{\"arm_dct4_init_f32\",  cmsis_arm_dct4_init_f32, METH_VARARGS,\"\"},\n{\"arm_dct4_f32\",  cmsis_arm_dct4_f32, METH_VARARGS,\"\"},\n{\"arm_dct4_init_q31\",  cmsis_arm_dct4_init_q31, METH_VARARGS,\"\"},\n{\"arm_dct4_q31\",  cmsis_arm_dct4_q31, METH_VARARGS,\"\"},\n{\"arm_dct4_init_q15\",  cmsis_arm_dct4_init_q15, METH_VARARGS,\"\"},\n{\"arm_dct4_q15\",  cmsis_arm_dct4_q15, METH_VARARGS,\"\"},\n{\"arm_add_f32\",  cmsis_arm_add_f32, METH_VARARGS,\"\"},\n{\"arm_add_q7\",  cmsis_arm_add_q7, METH_VARARGS,\"\"},\n{\"arm_add_q15\",  cmsis_arm_add_q15, METH_VARARGS,\"\"},\n{\"arm_add_q31\",  cmsis_arm_add_q31, METH_VARARGS,\"\"},\n{\"arm_sub_f32\",  cmsis_arm_sub_f32, METH_VARARGS,\"\"},\n{\"arm_sub_q7\",  cmsis_arm_sub_q7, METH_VARARGS,\"\"},\n{\"arm_sub_q15\",  cmsis_arm_sub_q15, METH_VARARGS,\"\"},\n{\"arm_sub_q31\",  cmsis_arm_sub_q31, METH_VARARGS,\"\"},\n{\"arm_scale_f32\",  cmsis_arm_scale_f32, METH_VARARGS,\"\"},\n{\"arm_scale_q7\",  cmsis_arm_scale_q7, METH_VARARGS,\"\"},\n{\"arm_scale_q15\",  cmsis_arm_scale_q15, METH_VARARGS,\"\"},\n{\"arm_scale_q31\",  cmsis_arm_scale_q31, METH_VARARGS,\"\"},\n{\"arm_abs_q7\",  cmsis_arm_abs_q7, METH_VARARGS,\"\"},\n{\"arm_abs_f32\",  cmsis_arm_abs_f32, METH_VARARGS,\"\"},\n{\"arm_abs_q15\",  cmsis_arm_abs_q15, METH_VARARGS,\"\"},\n{\"arm_abs_q31\",  cmsis_arm_abs_q31, METH_VARARGS,\"\"},\n{\"arm_dot_prod_f32\",  cmsis_arm_dot_prod_f32, METH_VARARGS,\"\"},\n{\"arm_dot_prod_q7\",  cmsis_arm_dot_prod_q7, METH_VARARGS,\"\"},\n{\"arm_dot_prod_q15\",  cmsis_arm_dot_prod_q15, METH_VARARGS,\"\"},\n{\"arm_dot_prod_q31\",  cmsis_arm_dot_prod_q31, METH_VARARGS,\"\"},\n{\"arm_shift_q7\",  cmsis_arm_shift_q7, METH_VARARGS,\"\"},\n{\"arm_shift_q15\",  cmsis_arm_shift_q15, METH_VARARGS,\"\"},\n{\"arm_shift_q31\",  cmsis_arm_shift_q31, METH_VARARGS,\"\"},\n{\"arm_offset_f32\",  cmsis_arm_offset_f32, METH_VARARGS,\"\"},\n{\"arm_offset_q7\",  cmsis_arm_offset_q7, METH_VARARGS,\"\"},\n{\"arm_offset_q15\",  cmsis_arm_offset_q15, METH_VARARGS,\"\"},\n{\"arm_offset_q31\",  cmsis_arm_offset_q31, METH_VARARGS,\"\"},\n{\"arm_negate_f32\",  cmsis_arm_negate_f32, METH_VARARGS,\"\"},\n{\"arm_negate_q7\",  cmsis_arm_negate_q7, METH_VARARGS,\"\"},\n{\"arm_negate_q15\",  cmsis_arm_negate_q15, METH_VARARGS,\"\"},\n{\"arm_negate_q31\",  cmsis_arm_negate_q31, METH_VARARGS,\"\"},\n{\"arm_copy_f32\",  cmsis_arm_copy_f32, METH_VARARGS,\"\"},\n{\"arm_copy_q7\",  cmsis_arm_copy_q7, METH_VARARGS,\"\"},\n{\"arm_copy_q15\",  cmsis_arm_copy_q15, METH_VARARGS,\"\"},\n{\"arm_copy_q31\",  cmsis_arm_copy_q31, METH_VARARGS,\"\"},\n{\"arm_conv_f32\",  cmsis_arm_conv_f32, METH_VARARGS,\"\"},\n{\"arm_conv_opt_q15\",  cmsis_arm_conv_opt_q15, METH_VARARGS,\"\"},\n{\"arm_conv_q15\",  cmsis_arm_conv_q15, METH_VARARGS,\"\"},\n{\"arm_conv_fast_q15\",  cmsis_arm_conv_fast_q15, METH_VARARGS,\"\"},\n{\"arm_conv_fast_opt_q15\",  cmsis_arm_conv_fast_opt_q15, METH_VARARGS,\"\"},\n{\"arm_conv_q31\",  cmsis_arm_conv_q31, METH_VARARGS,\"\"},\n{\"arm_conv_fast_q31\",  cmsis_arm_conv_fast_q31, METH_VARARGS,\"\"},\n{\"arm_conv_opt_q7\",  cmsis_arm_conv_opt_q7, METH_VARARGS,\"\"},\n{\"arm_conv_q7\",  cmsis_arm_conv_q7, METH_VARARGS,\"\"},\n{\"arm_conv_partial_f32\",  cmsis_arm_conv_partial_f32, METH_VARARGS,\"\"},\n{\"arm_conv_partial_opt_q15\",  cmsis_arm_conv_partial_opt_q15, METH_VARARGS,\"\"},\n{\"arm_conv_partial_q15\",  cmsis_arm_conv_partial_q15, METH_VARARGS,\"\"},\n{\"arm_conv_partial_fast_q15\",  cmsis_arm_conv_partial_fast_q15, METH_VARARGS,\"\"},\n{\"arm_conv_partial_fast_opt_q15\",  cmsis_arm_conv_partial_fast_opt_q15, METH_VARARGS,\"\"},\n{\"arm_conv_partial_q31\",  cmsis_arm_conv_partial_q31, METH_VARARGS,\"\"},\n{\"arm_conv_partial_fast_q31\",  cmsis_arm_conv_partial_fast_q31, METH_VARARGS,\"\"},\n{\"arm_conv_partial_opt_q7\",  cmsis_arm_conv_partial_opt_q7, METH_VARARGS,\"\"},\n{\"arm_conv_partial_q7\",  cmsis_arm_conv_partial_q7, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_f32\",  cmsis_arm_fir_decimate_f32, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_init_f32\",  cmsis_arm_fir_decimate_init_f32, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_q15\",  cmsis_arm_fir_decimate_q15, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_fast_q15\",  cmsis_arm_fir_decimate_fast_q15, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_init_q15\",  cmsis_arm_fir_decimate_init_q15, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_q31\",  cmsis_arm_fir_decimate_q31, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_fast_q31\",  cmsis_arm_fir_decimate_fast_q31, METH_VARARGS,\"\"},\n{\"arm_fir_decimate_init_q31\",  cmsis_arm_fir_decimate_init_q31, METH_VARARGS,\"\"},\n{\"arm_fir_interpolate_q15\",  cmsis_arm_fir_interpolate_q15, METH_VARARGS,\"\"},\n{\"arm_fir_interpolate_init_q15\",  cmsis_arm_fir_interpolate_init_q15, METH_VARARGS,\"\"},\n{\"arm_fir_interpolate_q31\",  cmsis_arm_fir_interpolate_q31, METH_VARARGS,\"\"},\n{\"arm_fir_interpolate_init_q31\",  cmsis_arm_fir_interpolate_init_q31, METH_VARARGS,\"\"},\n{\"arm_fir_interpolate_f32\",  cmsis_arm_fir_interpolate_f32, METH_VARARGS,\"\"},\n{\"arm_fir_interpolate_init_f32\",  cmsis_arm_fir_interpolate_init_f32, METH_VARARGS,\"\"},\n{\"arm_biquad_cas_df1_32x64_q31\",  cmsis_arm_biquad_cas_df1_32x64_q31, METH_VARARGS,\"\"},\n{\"arm_biquad_cas_df1_32x64_init_q31\",  cmsis_arm_biquad_cas_df1_32x64_init_q31, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df2T_f32\",  cmsis_arm_biquad_cascade_df2T_f32, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_stereo_df2T_f32\",  cmsis_arm_biquad_cascade_stereo_df2T_f32, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df2T_f64\",  cmsis_arm_biquad_cascade_df2T_f64, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df2T_init_f32\",  cmsis_arm_biquad_cascade_df2T_init_f32, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_stereo_df2T_init_f32\",  cmsis_arm_biquad_cascade_stereo_df2T_init_f32, METH_VARARGS,\"\"},\n{\"arm_biquad_cascade_df2T_init_f64\",  cmsis_arm_biquad_cascade_df2T_init_f64, METH_VARARGS,\"\"},\n{\"arm_fir_lattice_init_q15\",  cmsis_arm_fir_lattice_init_q15, METH_VARARGS,\"\"},\n{\"arm_fir_lattice_q15\",  cmsis_arm_fir_lattice_q15, METH_VARARGS,\"\"},\n{\"arm_fir_lattice_init_q31\",  cmsis_arm_fir_lattice_init_q31, METH_VARARGS,\"\"},\n{\"arm_fir_lattice_q31\",  cmsis_arm_fir_lattice_q31, METH_VARARGS,\"\"},\n{\"arm_fir_lattice_init_f32\",  cmsis_arm_fir_lattice_init_f32, METH_VARARGS,\"\"},\n{\"arm_fir_lattice_f32\",  cmsis_arm_fir_lattice_f32, METH_VARARGS,\"\"},\n{\"arm_iir_lattice_f32\",  cmsis_arm_iir_lattice_f32, METH_VARARGS,\"\"},\n{\"arm_iir_lattice_init_f32\",  cmsis_arm_iir_lattice_init_f32, METH_VARARGS,\"\"},\n{\"arm_iir_lattice_q31\",  cmsis_arm_iir_lattice_q31, METH_VARARGS,\"\"},\n{\"arm_iir_lattice_init_q31\",  cmsis_arm_iir_lattice_init_q31, METH_VARARGS,\"\"},\n{\"arm_iir_lattice_q15\",  cmsis_arm_iir_lattice_q15, METH_VARARGS,\"\"},\n{\"arm_iir_lattice_init_q15\",  cmsis_arm_iir_lattice_init_q15, METH_VARARGS,\"\"},\n{\"arm_cfft_init_f32\",  cmsis_arm_cfft_init_f32, METH_VARARGS,\"\"},\n{\"arm_cfft_init_q31\",  cmsis_arm_cfft_init_q31, METH_VARARGS,\"\"},\n{\"arm_cfft_init_q15\",  cmsis_arm_cfft_init_q15, METH_VARARGS,\"\"},\n{\"arm_lms_f32\",  cmsis_arm_lms_f32, METH_VARARGS,\"\"},\n{\"arm_lms_init_f32\",  cmsis_arm_lms_init_f32, METH_VARARGS,\"\"},\n{\"arm_lms_init_q15\",  cmsis_arm_lms_init_q15, METH_VARARGS,\"\"},\n{\"arm_lms_q15\",  cmsis_arm_lms_q15, METH_VARARGS,\"\"},\n{\"arm_lms_q31\",  cmsis_arm_lms_q31, METH_VARARGS,\"\"},\n{\"arm_lms_init_q31\",  cmsis_arm_lms_init_q31, METH_VARARGS,\"\"},\n{\"arm_lms_norm_f32\",  cmsis_arm_lms_norm_f32, METH_VARARGS,\"\"},\n{\"arm_lms_norm_init_f32\",  cmsis_arm_lms_norm_init_f32, METH_VARARGS,\"\"},\n{\"arm_lms_norm_q31\",  cmsis_arm_lms_norm_q31, METH_VARARGS,\"\"},\n{\"arm_lms_norm_init_q31\",  cmsis_arm_lms_norm_init_q31, METH_VARARGS,\"\"},\n{\"arm_lms_norm_q15\",  cmsis_arm_lms_norm_q15, METH_VARARGS,\"\"},\n{\"arm_lms_norm_init_q15\",  cmsis_arm_lms_norm_init_q15, METH_VARARGS,\"\"},\n{\"arm_correlate_f32\",  cmsis_arm_correlate_f32, METH_VARARGS,\"\"},\n{\"arm_correlate_opt_q15\",  cmsis_arm_correlate_opt_q15, METH_VARARGS,\"\"},\n{\"arm_correlate_q15\",  cmsis_arm_correlate_q15, METH_VARARGS,\"\"},\n{\"arm_correlate_fast_q15\",  cmsis_arm_correlate_fast_q15, METH_VARARGS,\"\"},\n{\"arm_correlate_fast_opt_q15\",  cmsis_arm_correlate_fast_opt_q15, METH_VARARGS,\"\"},\n{\"arm_correlate_q31\",  cmsis_arm_correlate_q31, METH_VARARGS,\"\"},\n{\"arm_correlate_fast_q31\",  cmsis_arm_correlate_fast_q31, METH_VARARGS,\"\"},\n{\"arm_correlate_opt_q7\",  cmsis_arm_correlate_opt_q7, METH_VARARGS,\"\"},\n{\"arm_correlate_q7\",  cmsis_arm_correlate_q7, METH_VARARGS,\"\"},\n{\"arm_fir_sparse_f32\",  cmsis_arm_fir_sparse_f32, METH_VARARGS,\"\"},\n{\"arm_fir_sparse_init_f32\",  cmsis_arm_fir_sparse_init_f32, METH_VARARGS,\"\"},\n{\"arm_fir_sparse_init_q31\",  cmsis_arm_fir_sparse_init_q31, METH_VARARGS,\"\"},\n{\"arm_fir_sparse_init_q15\",  cmsis_arm_fir_sparse_init_q15, METH_VARARGS,\"\"},\n{\"arm_fir_sparse_init_q7\",  cmsis_arm_fir_sparse_init_q7, METH_VARARGS,\"\"},\n{\"arm_sin_cos_f32\",  cmsis_arm_sin_cos_f32, METH_VARARGS,\"\"},\n{\"arm_sin_cos_q31\",  cmsis_arm_sin_cos_q31, METH_VARARGS,\"\"},\n{\"arm_cmplx_conj_f32\",  cmsis_arm_cmplx_conj_f32, METH_VARARGS,\"\"},\n{\"arm_cmplx_conj_q31\",  cmsis_arm_cmplx_conj_q31, METH_VARARGS,\"\"},\n{\"arm_cmplx_conj_q15\",  cmsis_arm_cmplx_conj_q15, METH_VARARGS,\"\"},\n{\"arm_cmplx_mag_squared_f32\",  cmsis_arm_cmplx_mag_squared_f32, METH_VARARGS,\"\"},\n{\"arm_cmplx_mag_squared_q31\",  cmsis_arm_cmplx_mag_squared_q31, METH_VARARGS,\"\"},\n{\"arm_cmplx_mag_squared_q15\",  cmsis_arm_cmplx_mag_squared_q15, METH_VARARGS,\"\"},\n{\"arm_pid_f32\",  cmsis_arm_pid_f32, METH_VARARGS,\"\"},\n{\"arm_pid_q31\",  cmsis_arm_pid_q31, METH_VARARGS,\"\"},\n{\"arm_pid_q15\",  cmsis_arm_pid_q15, METH_VARARGS,\"\"},\n{\"arm_mat_inverse_f32\",  cmsis_arm_mat_inverse_f32, METH_VARARGS,\"\"},\n{\"arm_mat_inverse_f64\",  cmsis_arm_mat_inverse_f64, METH_VARARGS,\"\"},\n{\"arm_clarke_f32\",  cmsis_arm_clarke_f32, METH_VARARGS,\"\"},\n{\"arm_clarke_q31\",  cmsis_arm_clarke_q31, METH_VARARGS,\"\"},\n{\"arm_q7_to_q31\",  cmsis_arm_q7_to_q31, METH_VARARGS,\"\"},\n{\"arm_inv_clarke_f32\",  cmsis_arm_inv_clarke_f32, METH_VARARGS,\"\"},\n{\"arm_inv_clarke_q31\",  cmsis_arm_inv_clarke_q31, METH_VARARGS,\"\"},\n{\"arm_q7_to_q15\",  cmsis_arm_q7_to_q15, METH_VARARGS,\"\"},\n{\"arm_park_f32\",  cmsis_arm_park_f32, METH_VARARGS,\"\"},\n{\"arm_park_q31\",  cmsis_arm_park_q31, METH_VARARGS,\"\"},\n{\"arm_q7_to_float\",  cmsis_arm_q7_to_float, METH_VARARGS,\"\"},\n{\"arm_inv_park_f32\",  cmsis_arm_inv_park_f32, METH_VARARGS,\"\"},\n{\"arm_inv_park_q31\",  cmsis_arm_inv_park_q31, METH_VARARGS,\"\"},\n{\"arm_q31_to_float\",  cmsis_arm_q31_to_float, METH_VARARGS,\"\"},\n{\"arm_linear_interp_f32\",  cmsis_arm_linear_interp_f32, METH_VARARGS,\"\"},\n{\"arm_linear_interp_q31\",  cmsis_arm_linear_interp_q31, METH_VARARGS,\"\"},\n{\"arm_linear_interp_q15\",  cmsis_arm_linear_interp_q15, METH_VARARGS,\"\"},\n{\"arm_linear_interp_q7\",  cmsis_arm_linear_interp_q7, METH_VARARGS,\"\"},\n{\"arm_sin_f32\",  cmsis_arm_sin_f32, METH_VARARGS,\"\"},\n{\"arm_sin_q31\",  cmsis_arm_sin_q31, METH_VARARGS,\"\"},\n{\"arm_sin_q15\",  cmsis_arm_sin_q15, METH_VARARGS,\"\"},\n{\"arm_cos_f32\",  cmsis_arm_cos_f32, METH_VARARGS,\"\"},\n{\"arm_cos_q31\",  cmsis_arm_cos_q31, METH_VARARGS,\"\"},\n{\"arm_cos_q15\",  cmsis_arm_cos_q15, METH_VARARGS,\"\"},\n{\"arm_sqrt_f32\",  cmsis_arm_sqrt_f32, METH_VARARGS,\"\"},\n{\"arm_sqrt_q31\",  cmsis_arm_sqrt_q31, METH_VARARGS,\"\"},\n{\"arm_sqrt_q15\",  cmsis_arm_sqrt_q15, METH_VARARGS,\"\"},\n{\"arm_circularWrite_f32\",  cmsis_arm_circularWrite_f32, METH_VARARGS,\"\"},\n{\"arm_circularWrite_q15\",  cmsis_arm_circularWrite_q15, METH_VARARGS,\"\"},\n{\"arm_circularWrite_q7\",  cmsis_arm_circularWrite_q7, METH_VARARGS,\"\"},\n{\"arm_power_q31\",  cmsis_arm_power_q31, METH_VARARGS,\"\"},\n{\"arm_power_f32\",  cmsis_arm_power_f32, METH_VARARGS,\"\"},\n{\"arm_power_q15\",  cmsis_arm_power_q15, METH_VARARGS,\"\"},\n{\"arm_power_q7\",  cmsis_arm_power_q7, METH_VARARGS,\"\"},\n{\"arm_mean_q7\",  cmsis_arm_mean_q7, METH_VARARGS,\"\"},\n{\"arm_mean_q15\",  cmsis_arm_mean_q15, METH_VARARGS,\"\"},\n{\"arm_mean_q31\",  cmsis_arm_mean_q31, METH_VARARGS,\"\"},\n{\"arm_mean_f32\",  cmsis_arm_mean_f32, METH_VARARGS,\"\"},\n{\"arm_var_f32\",  cmsis_arm_var_f32, METH_VARARGS,\"\"},\n{\"arm_var_q31\",  cmsis_arm_var_q31, METH_VARARGS,\"\"},\n{\"arm_var_q15\",  cmsis_arm_var_q15, METH_VARARGS,\"\"},\n{\"arm_rms_f32\",  cmsis_arm_rms_f32, METH_VARARGS,\"\"},\n{\"arm_rms_q31\",  cmsis_arm_rms_q31, METH_VARARGS,\"\"},\n{\"arm_rms_q15\",  cmsis_arm_rms_q15, METH_VARARGS,\"\"},\n{\"arm_std_f32\",  cmsis_arm_std_f32, METH_VARARGS,\"\"},\n{\"arm_std_q31\",  cmsis_arm_std_q31, METH_VARARGS,\"\"},\n{\"arm_std_q15\",  cmsis_arm_std_q15, METH_VARARGS,\"\"},\n{\"arm_cmplx_mag_f32\",  cmsis_arm_cmplx_mag_f32, METH_VARARGS,\"\"},\n{\"arm_cmplx_mag_q31\",  cmsis_arm_cmplx_mag_q31, METH_VARARGS,\"\"},\n{\"arm_cmplx_mag_q15\",  cmsis_arm_cmplx_mag_q15, METH_VARARGS,\"\"},\n{\"arm_cmplx_dot_prod_q15\",  cmsis_arm_cmplx_dot_prod_q15, METH_VARARGS,\"\"},\n{\"arm_cmplx_dot_prod_q31\",  cmsis_arm_cmplx_dot_prod_q31, METH_VARARGS,\"\"},\n{\"arm_cmplx_dot_prod_f32\",  cmsis_arm_cmplx_dot_prod_f32, METH_VARARGS,\"\"},\n{\"arm_cmplx_mult_real_q15\",  cmsis_arm_cmplx_mult_real_q15, METH_VARARGS,\"\"},\n{\"arm_cmplx_mult_real_q31\",  cmsis_arm_cmplx_mult_real_q31, METH_VARARGS,\"\"},\n{\"arm_cmplx_mult_real_f32\",  cmsis_arm_cmplx_mult_real_f32, METH_VARARGS,\"\"},\n{\"arm_min_q7\",  cmsis_arm_min_q7, METH_VARARGS,\"\"},\n{\"arm_min_q15\",  cmsis_arm_min_q15, METH_VARARGS,\"\"},\n{\"arm_min_q31\",  cmsis_arm_min_q31, METH_VARARGS,\"\"},\n{\"arm_min_f32\",  cmsis_arm_min_f32, METH_VARARGS,\"\"},\n{\"arm_max_q7\",  cmsis_arm_max_q7, METH_VARARGS,\"\"},\n{\"arm_max_q15\",  cmsis_arm_max_q15, METH_VARARGS,\"\"},\n{\"arm_max_q31\",  cmsis_arm_max_q31, METH_VARARGS,\"\"},\n{\"arm_max_f32\",  cmsis_arm_max_f32, METH_VARARGS,\"\"},\n{\"arm_cmplx_mult_cmplx_q15\",  cmsis_arm_cmplx_mult_cmplx_q15, METH_VARARGS,\"\"},\n{\"arm_cmplx_mult_cmplx_q31\",  cmsis_arm_cmplx_mult_cmplx_q31, METH_VARARGS,\"\"},\n{\"arm_cmplx_mult_cmplx_f32\",  cmsis_arm_cmplx_mult_cmplx_f32, METH_VARARGS,\"\"},\n{\"arm_float_to_q31\",  cmsis_arm_float_to_q31, METH_VARARGS,\"\"},\n{\"arm_float_to_q15\",  cmsis_arm_float_to_q15, METH_VARARGS,\"\"},\n{\"arm_float_to_q7\",  cmsis_arm_float_to_q7, METH_VARARGS,\"\"},\n{\"arm_q31_to_q15\",  cmsis_arm_q31_to_q15, METH_VARARGS,\"\"},\n{\"arm_q31_to_q7\",  cmsis_arm_q31_to_q7, METH_VARARGS,\"\"},\n{\"arm_q15_to_float\",  cmsis_arm_q15_to_float, METH_VARARGS,\"\"},\n{\"arm_q15_to_q31\",  cmsis_arm_q15_to_q31, METH_VARARGS,\"\"},\n{\"arm_q15_to_q7\",  cmsis_arm_q15_to_q7, METH_VARARGS,\"\"},\n{\"arm_bilinear_interp_f32\",  cmsis_arm_bilinear_interp_f32, METH_VARARGS,\"\"},\n{\"arm_bilinear_interp_q31\",  cmsis_arm_bilinear_interp_q31, METH_VARARGS,\"\"},\n{\"arm_bilinear_interp_q15\",  cmsis_arm_bilinear_interp_q15, METH_VARARGS,\"\"},\n{\"arm_bilinear_interp_q7\",  cmsis_arm_bilinear_interp_q7, METH_VARARGS,\"\"},\n\n    {\"error_out\", (PyCFunction)error_out, METH_NOARGS, NULL},\n    {NULL, NULL, 0, NULL}        /* Sentinel */\n};\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/fftinit.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Python Wrapper\n * Title:        fftinit.c\n * Description:  FFT init functions for the Python wrapper\n *\n * $Date:        25. March 2019\n * $Revision:    V0.0.1\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n#include \"arm_const_structs.h\"\n\n#define FFTINIT(SIZE)                                           \\\n  S->bitRevLength = arm_cfft_sR_f32_len##SIZE.bitRevLength;        \\\n  S->pBitRevTable = arm_cfft_sR_f32_len##SIZE.pBitRevTable;         \\\n  S->pTwiddle = arm_cfft_sR_f32_len##SIZE.pTwiddle;\n\n#define FFTFXTINIT(EXT,SIZE)                                           \\\n  S->bitRevLength = arm_cfft_sR_##EXT##_len##SIZE.bitRevLength;        \\\n  S->pBitRevTable = arm_cfft_sR_##EXT##_len##SIZE.pBitRevTable;         \\\n  S->pTwiddle = arm_cfft_sR_##EXT##_len##SIZE.pTwiddle;\n\narm_status arm_cfft_init_f32(\n  arm_cfft_instance_f32 * S,\n  uint16_t fftLen)\n{\n        /*  Initialise the default arm status */                                \n        arm_status status = ARM_MATH_SUCCESS;                                   \n                                                                                \n        /*  Initialise the FFT length */                                        \n        S->fftLen = fftLen;          \n                                                                                \n        /*  Initialise the Twiddle coefficient pointer */                       \n        S->pTwiddle = (float32_t *)twiddleCoef_4096;                         \n                                                                                \n                                                                                \n        /*  Initializations of Instance structure depending on the FFT length */\n        switch (S->fftLen) {                                                    \n            /*  Initializations of structure parameters for 4096 point FFT */   \n        case 4096U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n            FFTINIT(4096);      \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 2048 point FFT */   \n        case 2048U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n            FFTINIT(2048);                 \n                                                                            \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 1024 point FFT */   \n        case 1024U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n            FFTINIT(1024);                 \n                                                                         \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 512 point FFT */    \n        case 512U:                                                              \n            /*  Initialise the bit reversal table modifier */                   \n            FFTINIT(512);                                                                                   \n            break;                                                              \n                                                                                \n        case 256U:                                                              \n            FFTINIT(256);                                                                                  \n            break;                                                              \n                                                                                \n        case 128U:                                                              \n            FFTINIT(128);                                                                                  \n            break;                                                              \n                                                                                \n        case 64U:                                                               \n            FFTINIT(64);                                                                               \n            break;                                                              \n                                                                                \n        case 32U:                                                               \n            FFTINIT(32);                                                                                \n            break;                                                              \n                                                                                \n        case 16U:                                                               \n            /*  Initializations of structure parameters for 16 point FFT */     \n            FFTINIT(16);   \n            break;                                                              \n                                                                                \n                                                                                \n        default:                                                                \n            /*  Reporting argument error if fftSize is not valid value */       \n            status = ARM_MATH_ARGUMENT_ERROR;                                   \n            break;                                                              \n        }                                                                       \n                                                                                \n                                                                                \n        return (status);    \n}\n\narm_status arm_cfft_init_q31(\n  arm_cfft_instance_q31 * S,\n  uint16_t fftLen)\n{\n        /*  Initialise the default arm status */                                \n        arm_status status = ARM_MATH_SUCCESS;                                   \n                                                                                \n        /*  Initialise the FFT length */                                        \n        S->fftLen = fftLen;          \n                                                                                \n        /*  Initialise the Twiddle coefficient pointer */                       \n        S->pTwiddle = (float32_t *)twiddleCoef_4096;                         \n                                                                                \n                                                                                \n        /*  Initializations of Instance structure depending on the FFT length */\n        switch (S->fftLen) {                                                    \n            /*  Initializations of structure parameters for 4096 point FFT */   \n        case 4096U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n            FFTFXTINIT(q31,4096);      \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 2048 point FFT */   \n        case 2048U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n             FFTFXTINIT(q31,2048);                 \n                                                                            \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 1024 point FFT */   \n        case 1024U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n             FFTFXTINIT(q31,1024);                 \n                                                                         \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 512 point FFT */    \n        case 512U:                                                              \n            /*  Initialise the bit reversal table modifier */                   \n             FFTFXTINIT(q31,512);                                                                                   \n            break;                                                              \n                                                                                \n        case 256U:                                                              \n             FFTFXTINIT(q31,256);                                                                                  \n            break;                                                              \n                                                                                \n        case 128U:                                                              \n             FFTFXTINIT(q31,128);                                                                                  \n            break;                                                              \n                                                                                \n        case 64U:                                                               \n             FFTFXTINIT(q31,64);                                                                               \n            break;                                                              \n                                                                                \n        case 32U:                                                               \n             FFTFXTINIT(q31,32);                                                                                \n            break;                                                              \n                                                                                \n        case 16U:                                                               \n            /*  Initializations of structure parameters for 16 point FFT */     \n             FFTFXTINIT(q31,16);   \n            break;                                                              \n                                                                                \n                                                                                \n        default:                                                                \n            /*  Reporting argument error if fftSize is not valid value */       \n            status = ARM_MATH_ARGUMENT_ERROR;                                   \n            break;                                                              \n        }                                                                       \n                                                                                \n                                                                                \n        return (status);    \n}\n\narm_status arm_cfft_init_q15(\n  arm_cfft_instance_q15 * S,\n  uint16_t fftLen)\n{\n        /*  Initialise the default arm status */                                \n        arm_status status = ARM_MATH_SUCCESS;                                   \n                                                                                \n        /*  Initialise the FFT length */                                        \n        S->fftLen = fftLen;          \n                                                                                \n        /*  Initialise the Twiddle coefficient pointer */                       \n        S->pTwiddle = (float32_t *)twiddleCoef_4096;                         \n                                                                                \n                                                                                \n        /*  Initializations of Instance structure depending on the FFT length */\n        switch (S->fftLen) {                                                    \n            /*  Initializations of structure parameters for 4096 point FFT */   \n        case 4096U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n            FFTFXTINIT(q15,4096);      \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 2048 point FFT */   \n        case 2048U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n             FFTFXTINIT(q15,2048);                 \n                                                                            \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 1024 point FFT */   \n        case 1024U:                                                             \n            /*  Initialise the bit reversal table modifier */                   \n             FFTFXTINIT(q15,1024);                 \n                                                                         \n            break;                                                              \n                                                                                \n            /*  Initializations of structure parameters for 512 point FFT */    \n        case 512U:                                                              \n            /*  Initialise the bit reversal table modifier */                   \n            FFTFXTINIT(q15,512);                                                                                   \n            break;                                                              \n                                                                                \n        case 256U:                                                              \n            FFTFXTINIT(q15,256);                                                                                  \n            break;                                                              \n                                                                                \n        case 128U:                                                              \n            FFTFXTINIT(q15,128);                                                                                  \n            break;                                                              \n                                                                                \n        case 64U:                                                               \n            FFTFXTINIT(q15,64);                                                                               \n            break;                                                              \n                                                                                \n        case 32U:                                                               \n            FFTFXTINIT(q15,32);                                                                                \n            break;                                                              \n                                                                                \n        case 16U:                                                               \n            /*  Initializations of structure parameters for 16 point FFT */     \n            FFTFXTINIT(q15,16);   \n            break;                                                              \n                                                                                \n                                                                                \n        default:                                                                \n            /*  Reporting argument error if fftSize is not valid value */       \n            status = ARM_MATH_ARGUMENT_ERROR;                                   \n            break;                                                              \n        }                                                                       \n                                                                                \n                                                                                \n        return (status);    \n}"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/BasicMathFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        BasicMathFunctions.c\n * Description:  Combination of all basic math function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_abs_f32.c\"\n#include \"arm_abs_q15.c\"\n#include \"arm_abs_q31.c\"\n#include \"arm_abs_q7.c\"\n#include \"arm_add_f32.c\"\n#include \"arm_add_q15.c\"\n#include \"arm_add_q31.c\"\n#include \"arm_add_q7.c\"\n#include \"arm_dot_prod_f32.c\"\n#include \"arm_dot_prod_q15.c\"\n#include \"arm_dot_prod_q31.c\"\n#include \"arm_dot_prod_q7.c\"\n#include \"arm_mult_f32.c\"\n#include \"arm_mult_q15.c\"\n#include \"arm_mult_q31.c\"\n#include \"arm_mult_q7.c\"\n#include \"arm_negate_f32.c\"\n#include \"arm_negate_q15.c\"\n#include \"arm_negate_q31.c\"\n#include \"arm_negate_q7.c\"\n#include \"arm_offset_f32.c\"\n#include \"arm_offset_q15.c\"\n#include \"arm_offset_q31.c\"\n#include \"arm_offset_q7.c\"\n#include \"arm_scale_f32.c\"\n#include \"arm_scale_q15.c\"\n#include \"arm_scale_q31.c\"\n#include \"arm_scale_q7.c\"\n#include \"arm_shift_q15.c\"\n#include \"arm_shift_q31.c\"\n#include \"arm_shift_q7.c\"\n#include \"arm_sub_f32.c\"\n#include \"arm_sub_q15.c\"\n#include \"arm_sub_q31.c\"\n#include \"arm_sub_q7.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPBasicMath)\n\n\nfile(GLOB SRC \"./*_*.c\")\n\nadd_library(CMSISDSPBasicMath STATIC ${SRC})\n\nconfigdsp(CMSISDSPBasicMath ..)\n\n### Includes\ntarget_include_directories(CMSISDSPBasicMath PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_abs_f32.c\n * Description:  Floating-point vector absolute value\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include <math.h>\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicAbs Vector Absolute Value\n\n  Computes the absolute value of a vector on an element-by-element basis.\n\n  <pre>\n      pDst[n] = abs(pSrc[n]),   0 <= n < blockSize.\n  </pre>\n\n  The functions support in-place computation allowing the source and\n  destination pointers to reference the same memory buffer.\n  There are separate functions for floating-point, Q7, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup BasicAbs\n  @{\n */\n\n/**\n  @brief         Floating-point vector absolute value.\n  @param[in]     pSrc       points to the input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_abs_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t vec1;\n    float32x4_t res;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        /* C = |A| */\n\n    \t/* Calculate absolute values and then store the results in the destination buffer. */\n        vec1 = vld1q_f32(pSrc);\n        res = vabsq_f32(vec1);\n        vst1q_f32(pDst, res);\n\n        /* Increment pointers */\n        pSrc += 4;\n        pDst += 4;\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute and store result in destination buffer. */\n    *pDst++ = fabsf(*pSrc++);\n\n    *pDst++ = fabsf(*pSrc++);\n\n    *pDst++ = fabsf(*pSrc++);\n\n    *pDst++ = fabsf(*pSrc++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute and store result in destination buffer. */\n    *pDst++ = fabsf(*pSrc++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAbs group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_abs_q15.c\n * Description:  Q15 vector absolute value\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicAbs\n  @{\n */\n\n/**\n  @brief         Q15 vector absolute value.\n  @param[in]     pSrc       points to the input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.\n */\n\nvoid arm_abs_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q15_t in;                                      /* Temporary input variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute of input (if -1 then saturated to 0x7fff) and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q15_t)__QSUB16(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q15_t)__QSUB16(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q15_t)__QSUB16(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q15_t)__QSUB16(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute of input (if -1 then saturated to 0x7fff) and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q15_t)__QSUB16(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAbs group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_abs_q31.c\n * Description:  Q31 vector absolute value\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicAbs\n  @{\n */\n\n/**\n  @brief         Q31 vector absolute value.\n  @param[in]     pSrc       points to the input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.\n */\n\nvoid arm_abs_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t in;                                      /* Temporary variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute of input (if -1 then saturated to 0x7fffffff) and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q31_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q31_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q31_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q31_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute of input (if -1 then saturated to 0x7fffffff) and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q31_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAbs group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_abs_q7.c\n * Description:  Q7 vector absolute value\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicAbs\n  @{\n */\n\n/**\n  @brief         Q7 vector absolute value.\n  @param[in]     pSrc       points to the input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Conditions for optimum performance\n                   Input and output buffers should be aligned by 32-bit\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F.\n */\n\nvoid arm_abs_q7(\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q7_t in;                                       /* Temporary input variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute of input (if -1 then saturated to 0x7f) and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q7_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? (q7_t) 0x7f : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q7_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? (q7_t) 0x7f : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q7_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? (q7_t) 0x7f : -in);\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q7_t)__QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? (q7_t) 0x7f : -in);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = |A| */\n\n    /* Calculate absolute of input (if -1 then saturated to 0x7f) and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (in > 0) ? in : (q7_t) __QSUB(0, in);\n#else\n    *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? (q7_t) 0x7f : -in);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAbs group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_add_f32.c\n * Description:  Floating-point vector addition\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicAdd Vector Addition\n\n  Element-by-element addition of two vectors.\n\n  <pre>\n      pDst[n] = pSrcA[n] + pSrcB[n],   0 <= n < blockSize.\n  </pre>\n\n  There are separate functions for floating-point, Q7, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup BasicAdd\n  @{\n */\n\n/**\n  @brief         Floating-point vector addition.\n  @param[in]     pSrcA      points to first input vector\n  @param[in]     pSrcB      points to second input vector\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_add_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t vec1;\n    float32x4_t vec2;\n    float32x4_t res;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        /* C = A + B */\n\n    \t/* Add and then store the results in the destination buffer. */\n        vec1 = vld1q_f32(pSrcA);\n        vec2 = vld1q_f32(pSrcB);\n        res = vaddq_f32(vec1, vec2);\n        vst1q_f32(pDst, res);\n\n        /* Increment pointers */\n        pSrcA += 4;\n        pSrcB += 4; \n        pDst += 4;\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n    /* Add and store result in destination buffer. */\n    *pDst++ = (*pSrcA++) + (*pSrcB++);\n    *pDst++ = (*pSrcA++) + (*pSrcB++);\n    *pDst++ = (*pSrcA++) + (*pSrcB++);\n    *pDst++ = (*pSrcA++) + (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n    /* Add and store result in destination buffer. */\n    *pDst++ = (*pSrcA++) + (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAdd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_add_q15.c\n * Description:  Q15 vector addition\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicAdd\n  @{\n */\n\n/**\n  @brief         Q15 vector addition.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\nvoid arm_add_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t inA1, inA2;\n  q31_t inB1, inB2;\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n#if defined (ARM_MATH_DSP)\n    /* read 2 times 2 samples at a time from sourceA */\n    inA1 = read_q15x2_ia ((q15_t **) &pSrcA);\n    inA2 = read_q15x2_ia ((q15_t **) &pSrcA);\n    /* read 2 times 2 samples at a time from sourceB */\n    inB1 = read_q15x2_ia ((q15_t **) &pSrcB);\n    inB2 = read_q15x2_ia ((q15_t **) &pSrcB);\n\n    /* Add and store 2 times 2 samples at a time */\n    write_q15x2_ia (&pDst, __QADD16(inA1, inB1));\n    write_q15x2_ia (&pDst, __QADD16(inA2, inB2));\n#else\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ + *pSrcB++), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ + *pSrcB++), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ + *pSrcB++), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ + *pSrcB++), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n    /* Add and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (q15_t) __QADD16(*pSrcA++, *pSrcB++);\n#else\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ + *pSrcB++), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAdd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_add_q31.c\n * Description:  Q31 vector addition\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicAdd\n  @{\n */\n\n/**\n  @brief         Q31 vector addition.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.\n */\n\nvoid arm_add_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n    /* Add and store result in destination buffer. */\n    *pDst++ = __QADD(*pSrcA++, *pSrcB++);\n\n    *pDst++ = __QADD(*pSrcA++, *pSrcB++);\n\n    *pDst++ = __QADD(*pSrcA++, *pSrcB++);\n\n    *pDst++ = __QADD(*pSrcA++, *pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n    /* Add and store result in destination buffer. */\n    *pDst++ = __QADD(*pSrcA++, *pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAdd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_add_q7.c\n * Description:  Q7 vector addition\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicAdd\n  @{\n */\n\n/**\n  @brief         Q7 vector addition.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q7 range [0x80 0x7F] are saturated.\n */\n\nvoid arm_add_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n#if defined (ARM_MATH_DSP)\n    /* Add and store result in destination buffer (4 samples at a time). */\n    write_q7x4_ia (&pDst, __QADD8 (read_q7x4_ia ((q7_t **) &pSrcA), read_q7x4_ia ((q7_t **) &pSrcB)));\n#else\n    *pDst++ = (q7_t) __SSAT ((q15_t) *pSrcA++ + *pSrcB++, 8);\n    *pDst++ = (q7_t) __SSAT ((q15_t) *pSrcA++ + *pSrcB++, 8);\n    *pDst++ = (q7_t) __SSAT ((q15_t) *pSrcA++ + *pSrcB++, 8);\n    *pDst++ = (q7_t) __SSAT ((q15_t) *pSrcA++ + *pSrcB++, 8);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + B */\n\n    /* Add and store result in destination buffer. */\n    *pDst++ = (q7_t) __SSAT((q15_t) *pSrcA++ + *pSrcB++, 8);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicAdd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dot_prod_f32.c\n * Description:  Floating-point dot product\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicDotProd Vector Dot Product\n\n  Computes the dot product of two vectors.\n  The vectors are multiplied element-by-element and then summed.\n\n  <pre>\n      sum = pSrcA[0]*pSrcB[0] + pSrcA[1]*pSrcB[1] + ... + pSrcA[blockSize-1]*pSrcB[blockSize-1]\n  </pre>\n\n  There are separate functions for floating-point, Q7, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup BasicDotProd\n  @{\n */\n\n/**\n  @brief         Dot product of floating-point vectors.\n  @param[in]     pSrcA      points to the first input vector.\n  @param[in]     pSrcB      points to the second input vector.\n  @param[in]     blockSize  number of samples in each vector.\n  @param[out]    result     output result returned here.\n  @return        none\n */\n\nvoid arm_dot_prod_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        uint32_t blockSize,\n        float32_t * result)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t sum = 0.0f;                          /* Temporary return variable */\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t vec1;\n    float32x4_t vec2;\n    float32x4_t res;\n    float32x4_t accum = vdupq_n_f32(0);    \n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    vec1 = vld1q_f32(pSrcA);\n    vec2 = vld1q_f32(pSrcB);\n\n    while (blkCnt > 0U)\n    {\n        /* C = A[0]*B[0] + A[1]*B[1] + A[2]*B[2] + ... + A[blockSize-1]*B[blockSize-1] */\n        /* Calculate dot product and then store the result in a temporary buffer. */\n        \n\taccum = vmlaq_f32(accum, vec1, vec2);\n\t\n        /* Increment pointers */\n        pSrcA += 4;\n        pSrcB += 4; \n\n        vec1 = vld1q_f32(pSrcA);\n        vec2 = vld1q_f32(pSrcB);\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n    \n#if __aarch64__\n    sum = vpadds_f32(vpadd_f32(vget_low_f32(accum), vget_high_f32(accum)));\n#else\n    sum = (vpadd_f32(vget_low_f32(accum), vget_high_f32(accum)))[0] + (vpadd_f32(vget_low_f32(accum), vget_high_f32(accum)))[1];\n#endif    \n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  /* First part of the processing with loop unrolling. Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n    /* Calculate dot product and store result in a temporary buffer. */\n    sum += (*pSrcA++) * (*pSrcB++);\n\n    sum += (*pSrcA++) * (*pSrcB++);\n\n    sum += (*pSrcA++) * (*pSrcB++);\n\n    sum += (*pSrcA++) * (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n    /* Calculate dot product and store result in a temporary buffer. */\n    sum += (*pSrcA++) * (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store result in destination buffer */\n  *result = sum;\n}\n\n/**\n  @} end of BasicDotProd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dot_prod_q15.c\n * Description:  Q15 dot product\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicDotProd\n  @{\n */\n\n/**\n  @brief         Dot product of Q15 vectors.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[in]     blockSize  number of samples in each vector\n  @param[out]    result     output result returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The intermediate multiplications are in 1.15 x 1.15 = 2.30 format and these\n                   results are added to a 64-bit accumulator in 34.30 format.\n                   Nonsaturating additions are used and given that there are 33 guard bits in the accumulator\n                   there is no risk of overflow.\n                   The return result is in 34.30 format.\n */\n\nvoid arm_dot_prod_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        uint32_t blockSize,\n        q63_t * result)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Temporary return variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n#if defined (ARM_MATH_DSP)\n    /* Calculate dot product and store result in a temporary buffer. */\n    sum = __SMLALD(read_q15x2_ia ((q15_t **) &pSrcA), read_q15x2_ia ((q15_t **) &pSrcB), sum);\n    sum = __SMLALD(read_q15x2_ia ((q15_t **) &pSrcA), read_q15x2_ia ((q15_t **) &pSrcB), sum);\n#else\n    sum += (q63_t)((q31_t) *pSrcA++ * *pSrcB++);\n    sum += (q63_t)((q31_t) *pSrcA++ * *pSrcB++);\n    sum += (q63_t)((q31_t) *pSrcA++ * *pSrcB++);\n    sum += (q63_t)((q31_t) *pSrcA++ * *pSrcB++);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n    /* Calculate dot product and store result in a temporary buffer. */\n//#if defined (ARM_MATH_DSP)\n//    sum  = __SMLALD(*pSrcA++, *pSrcB++, sum);\n//#else\n    sum += (q63_t)((q31_t) *pSrcA++ * *pSrcB++);\n//#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store result in destination buffer in 34.30 format */\n  *result = sum;\n}\n\n/**\n  @} end of BasicDotProd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dot_prod_q31.c\n * Description:  Q31 dot product\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicDotProd\n  @{\n */\n\n/**\n  @brief         Dot product of Q31 vectors.\n  @param[in]     pSrcA      points to the first input vector.\n  @param[in]     pSrcB      points to the second input vector.\n  @param[in]     blockSize  number of samples in each vector.\n  @param[out]    result     output result returned here.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The intermediate multiplications are in 1.31 x 1.31 = 2.62 format and these\n                   are truncated to 2.48 format by discarding the lower 14 bits.\n                   The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format.\n                   There are 15 guard bits in the accumulator and there is no risk of overflow as long as\n                   the length of the vectors is less than 2^16 elements.\n                   The return result is in 16.48 format.\n */\n\nvoid arm_dot_prod_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        uint32_t blockSize,\n        q63_t * result)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Temporary return variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n    /* Calculate dot product and store result in a temporary buffer. */\n    sum += ((q63_t) *pSrcA++ * *pSrcB++) >> 14U;\n\n    sum += ((q63_t) *pSrcA++ * *pSrcB++) >> 14U;\n\n    sum += ((q63_t) *pSrcA++ * *pSrcB++) >> 14U;\n\n    sum += ((q63_t) *pSrcA++ * *pSrcB++) >> 14U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n    /* Calculate dot product and store result in a temporary buffer. */\n    sum += ((q63_t) *pSrcA++ * *pSrcB++) >> 14U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store result in destination buffer in 16.48 format */\n  *result = sum;\n}\n\n/**\n  @} end of BasicDotProd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dot_prod_q7.c\n * Description:  Q7 dot product\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicDotProd\n  @{\n */\n\n/**\n  @brief         Dot product of Q7 vectors.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[in]     blockSize  number of samples in each vector\n  @param[out]    result     output result returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The intermediate multiplications are in 1.7 x 1.7 = 2.14 format and these\n                   results are added to an accumulator in 18.14 format.\n                   Nonsaturating additions are used and there is no danger of wrap around as long as\n                   the vectors are less than 2^18 elements long.\n                   The return result is in 18.14 format.\n */\n\nvoid arm_dot_prod_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        uint32_t blockSize,\n        q31_t * result)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t sum = 0;                                 /* Temporary return variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t input1, input2;                          /* Temporary variables */\n  q31_t inA1, inA2, inB1, inB2;                  /* Temporary variables */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n#if defined (ARM_MATH_DSP)\n    /* read 4 samples at a time from sourceA */\n    input1 = read_q7x4_ia ((q7_t **) &pSrcA);\n    /* read 4 samples at a time from sourceB */\n    input2 = read_q7x4_ia ((q7_t **) &pSrcB);\n\n    /* extract two q7_t samples to q15_t samples */\n    inA1 = __SXTB16(__ROR(input1, 8));\n    /* extract reminaing two samples */\n    inA2 = __SXTB16(input1);\n    /* extract two q7_t samples to q15_t samples */\n    inB1 = __SXTB16(__ROR(input2, 8));\n    /* extract reminaing two samples */\n    inB2 = __SXTB16(input2);\n\n    /* multiply and accumulate two samples at a time */\n    sum = __SMLAD(inA1, inB1, sum);\n    sum = __SMLAD(inA2, inB2, sum);\n#else\n    sum += (q31_t) ((q15_t) *pSrcA++ * *pSrcB++);\n    sum += (q31_t) ((q15_t) *pSrcA++ * *pSrcB++);\n    sum += (q31_t) ((q15_t) *pSrcA++ * *pSrcB++);\n    sum += (q31_t) ((q15_t) *pSrcA++ * *pSrcB++);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */\n\n    /* Calculate dot product and store result in a temporary buffer. */\n//#if defined (ARM_MATH_DSP)\n//    sum  = __SMLAD(*pSrcA++, *pSrcB++, sum);\n//#else\n    sum += (q31_t) ((q15_t) *pSrcA++ * *pSrcB++);\n//#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store result in destination buffer in 18.14 format */\n  *result = sum;\n}\n\n/**\n  @} end of BasicDotProd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mult_f32.c\n * Description:  Floating-point vector multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicMult Vector Multiplication\n\n  Element-by-element multiplication of two vectors.\n\n  <pre>\n      pDst[n] = pSrcA[n] * pSrcB[n],   0 <= n < blockSize.\n  </pre>\n\n  There are separate functions for floating-point, Q7, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup BasicMult\n  @{\n */\n\n/**\n  @brief         Floating-point vector multiplication.\n  @param[in]     pSrcA      points to the first input vector.\n  @param[in]     pSrcB      points to the second input vector.\n  @param[out]    pDst       points to the output vector.\n  @param[in]     blockSize  number of samples in each vector.\n  @return        none\n */\n\nvoid arm_mult_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n    uint32_t blkCnt;                               /* Loop counter */\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t vec1;\n    float32x4_t vec2;\n    float32x4_t res;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        /* C = A * B */\n\n    \t/* Multiply the inputs and then store the results in the destination buffer. */\n        vec1 = vld1q_f32(pSrcA);\n        vec2 = vld1q_f32(pSrcB);\n        res = vmulq_f32(vec1, vec2);\n        vst1q_f32(pDst, res);\n\n        /* Increment pointers */\n        pSrcA += 4;\n        pSrcB += 4; \n        pDst += 4;\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n    /* Multiply inputs and store result in destination buffer. */\n    *pDst++ = (*pSrcA++) * (*pSrcB++);\n\n    *pDst++ = (*pSrcA++) * (*pSrcB++);\n\n    *pDst++ = (*pSrcA++) * (*pSrcB++);\n\n    *pDst++ = (*pSrcA++) * (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n    /* Multiply input and store result in destination buffer. */\n    *pDst++ = (*pSrcA++) * (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mult_q15.c\n * Description:  Q15 vector multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicMult\n  @{\n */\n\n/**\n  @brief         Q15 vector multiplication\n  @param[in]     pSrcA      points to first input vector\n  @param[in]     pSrcB      points to second input vector\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\nvoid arm_mult_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t inA1, inA2, inB1, inB2;                  /* Temporary input variables */\n  q15_t out1, out2, out3, out4;                  /* Temporary output variables */\n  q31_t mul1, mul2, mul3, mul4;                  /* Temporary variables */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n#if defined (ARM_MATH_DSP)\n    /* read 2 samples at a time from sourceA */\n    inA1 = read_q15x2_ia ((q15_t **) &pSrcA);\n    /* read 2 samples at a time from sourceB */\n    inB1 = read_q15x2_ia ((q15_t **) &pSrcB);\n    /* read 2 samples at a time from sourceA */\n    inA2 = read_q15x2_ia ((q15_t **) &pSrcA);\n    /* read 2 samples at a time from sourceB */\n    inB2 = read_q15x2_ia ((q15_t **) &pSrcB);\n\n    /* multiply mul = sourceA * sourceB */\n    mul1 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));\n    mul2 = (q31_t) ((q15_t) (inA1      ) * (q15_t) (inB1      ));\n    mul3 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB2 >> 16));\n    mul4 = (q31_t) ((q15_t) (inA2      ) * (q15_t) (inB2      ));\n\n    /* saturate result to 16 bit */\n    out1 = (q15_t) __SSAT(mul1 >> 15, 16);\n    out2 = (q15_t) __SSAT(mul2 >> 15, 16);\n    out3 = (q15_t) __SSAT(mul3 >> 15, 16);\n    out4 = (q15_t) __SSAT(mul4 >> 15, 16);\n\n    /* store result to destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pDst, __PKHBT(out2, out1, 16));\n    write_q15x2_ia (&pDst, __PKHBT(out4, out3, 16));\n#else\n    write_q15x2_ia (&pDst, __PKHBT(out1, out2, 16));\n    write_q15x2_ia (&pDst, __PKHBT(out3, out4, 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n#else\n    *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16);\n    *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16);\n    *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16);\n    *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n    /* Multiply inputs and store result in destination buffer. */\n    *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mult_q31.c\n * Description:  Q31 vector multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicMult\n  @{\n */\n\n/**\n  @brief         Q31 vector multiplication.\n  @param[in]     pSrcA      points to the first input vector.\n  @param[in]     pSrcB      points to the second input vector.\n  @param[out]    pDst       points to the output vector.\n  @param[in]     blockSize  number of samples in each vector.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] are saturated.\n */\n\nvoid arm_mult_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t out;                                     /* Temporary output variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n    /* Multiply inputs and store result in destination buffer. */\n    out = ((q63_t) *pSrcA++ * *pSrcB++) >> 32;\n    out = __SSAT(out, 31);\n    *pDst++ = out << 1U;\n\n    out = ((q63_t) *pSrcA++ * *pSrcB++) >> 32;\n    out = __SSAT(out, 31);\n    *pDst++ = out << 1U;\n\n    out = ((q63_t) *pSrcA++ * *pSrcB++) >> 32;\n    out = __SSAT(out, 31);\n    *pDst++ = out << 1U;\n\n    out = ((q63_t) *pSrcA++ * *pSrcB++) >> 32;\n    out = __SSAT(out, 31);\n    *pDst++ = out << 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n    /* Multiply inputs and store result in destination buffer. */\n    out = ((q63_t) *pSrcA++ * *pSrcB++) >> 32;\n    out = __SSAT(out, 31);\n    *pDst++ = out << 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mult_q7.c\n * Description:  Q7 vector multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicMult\n  @{\n */\n\n/**\n  @brief         Q7 vector multiplication\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q7 range [0x80 0x7F] are saturated.\n */\n\nvoid arm_mult_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q7_t out1, out2, out3, out4;                   /* Temporary output variables */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n#if defined (ARM_MATH_DSP)\n    /* Multiply inputs and store results in temporary variables */\n    out1 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n    out2 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n    out3 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n    out4 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n\n    /* Pack and store result in destination buffer (in single write) */\n    write_q7x4_ia (&pDst, __PACKq7(out1, out2, out3, out4));\n#else\n    *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n    *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n    *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n    *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n\n    /* Multiply input and store result in destination buffer. */\n    *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_negate_f32.c\n * Description:  Negates floating-point vectors\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicNegate Vector Negate\n\n  Negates the elements of a vector.\n\n  <pre>\n      pDst[n] = -pSrc[n],   0 <= n < blockSize.\n  </pre>\n\n  The functions support in-place computation allowing the source and\n  destination pointers to reference the same memory buffer.\n  There are separate functions for floating-point, Q7, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup BasicNegate\n  @{\n */\n\n/**\n  @brief         Negates the elements of a floating-point vector.\n  @param[in]     pSrc       points to input vector.\n  @param[out]    pDst       points to output vector.\n  @param[in]     blockSize  number of samples in each vector.\n  @return        none\n */\n\nvoid arm_negate_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\n    float32x4_t vec1;\n    float32x4_t res;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        /* C = -A */\n\n    \t/* Negate and then store the results in the destination buffer. */\n        vec1 = vld1q_f32(pSrc);\n        res = vnegq_f32(vec1);\n        vst1q_f32(pDst, res);\n\n        /* Increment pointers */\n        pSrc += 4;\n        pDst += 4;\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n    /* Negate and store result in destination buffer. */\n    *pDst++ = -*pSrc++;\n\n    *pDst++ = -*pSrc++;\n\n    *pDst++ = -*pSrc++;\n\n    *pDst++ = -*pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON_EXPERIMENTAL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n    /* Negate and store result in destination buffer. */\n    *pDst++ = -*pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicNegate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_negate_q15.c\n * Description:  Negates Q15 vectors\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicNegate\n  @{\n */\n\n/**\n  @brief         Negates the elements of a Q15 vector.\n  @param[in]     pSrc       points to the input vector.\n  @param[out]    pDst       points to the output vector.\n  @param[in]     blockSize  number of samples in each vector.\n  @return        none\n\n  @par           Conditions for optimum performance\n                   Input and output buffers should be aligned by 32-bit\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q15 value -1 (0x8000) is saturated to the maximum allowable positive value 0x7FFF.\n */\n\nvoid arm_negate_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q15_t in;                                      /* Temporary input variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t in1;                                    /* Temporary input variables */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n#if defined (ARM_MATH_DSP)\n    /* Negate and store result in destination buffer (2 samples at a time). */\n    in1 = read_q15x2_ia ((q15_t **) &pSrc);\n    write_q15x2_ia (&pDst, __QSUB16(0, in1));\n\n    in1 = read_q15x2_ia ((q15_t **) &pSrc);\n    write_q15x2_ia (&pDst, __QSUB16(0, in1));\n#else\n    in = *pSrc++;\n    *pDst++ = (in == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in;\n\n    in = *pSrc++;\n    *pDst++ = (in == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in;\n\n    in = *pSrc++;\n    *pDst++ = (in == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in;\n\n    in = *pSrc++;\n    *pDst++ = (in == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n    /* Negate and store result in destination buffer. */\n    in = *pSrc++;\n    *pDst++ = (in == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicNegate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_negate_q31.c\n * Description:  Negates Q31 vectors\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicNegate\n  @{\n */\n\n/**\n  @brief         Negates the elements of a Q31 vector.\n  @param[in]     pSrc       points to the input vector.\n  @param[out]    pDst       points to the output vector.\n  @param[in]     blockSize   number of samples in each vector.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q31 value -1 (0x80000000) is saturated to the maximum allowable positive value 0x7FFFFFFF.\n */\n\nvoid arm_negate_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t in;                                      /* Temporary input variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n    /* Negate and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n    /* Negate and store result in destination buffer. */\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicNegate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_negate_q7.c\n * Description:  Negates Q7 vectors\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicNegate\n  @{\n */\n\n/**\n  @brief         Negates the elements of a Q7 vector.\n  @param[in]     pSrc       points to the input vector.\n  @param[out]    pDst       points to the output vector.\n  @param[in]     blockSize   number of samples in each vector.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q7 value -1 (0x80) is saturated to the maximum allowable positive value 0x7F.\n */\n\nvoid arm_negate_q7(\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q7_t in;                                       /* Temporary input variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t in1;                                    /* Temporary input variable */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n#if defined (ARM_MATH_DSP)\n    /* Negate and store result in destination buffer (4 samples at a time). */\n    in1 = read_q7x4_ia ((q7_t **) &pSrc);\n    write_q7x4_ia (&pDst, __QSUB8(0, in1));\n#else\n    in = *pSrc++;\n    *pDst++ = (in == (q7_t) 0x80) ? (q7_t) 0x7f : -in;\n\n    in = *pSrc++;\n    *pDst++ = (in == (q7_t) 0x80) ? (q7_t) 0x7f : -in;\n\n    in = *pSrc++;\n    *pDst++ = (in == (q7_t) 0x80) ? (q7_t) 0x7f : -in;\n\n    in = *pSrc++;\n    *pDst++ = (in == (q7_t) 0x80) ? (q7_t) 0x7f : -in;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = -A */\n\n    /* Negate and store result in destination buffer. */\n    in = *pSrc++;\n\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (q7_t) __QSUB(0, in);\n#else\n    *pDst++ = (in == (q7_t) 0x80) ? (q7_t) 0x7f : -in;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicNegate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_offset_f32.c\n * Description:  Floating-point vector offset\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicOffset Vector Offset\n\n  Adds a constant offset to each element of a vector.\n\n  <pre>\n      pDst[n] = pSrc[n] + offset,   0 <= n < blockSize.\n  </pre>\n\n  The functions support in-place computation allowing the source and\n  destination pointers to reference the same memory buffer.\n  There are separate functions for floating-point, Q7, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup BasicOffset\n  @{\n */\n\n/**\n  @brief         Adds a constant offset to a floating-point vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     offset     is the offset to be added\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_offset_f32(\n  const float32_t * pSrc,\n        float32_t offset,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\n    float32x4_t vec1;\n    float32x4_t res;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        /* C = A + offset */\n \n        /* Add offset and then store the results in the destination buffer. */\n        vec1 = vld1q_f32(pSrc);\n        res = vaddq_f32(vec1,vdupq_n_f32(offset));\n        vst1q_f32(pDst, res);\n\n        /* Increment pointers */\n        pSrc += 4;\n        pDst += 4;\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n    /* Add offset and store result in destination buffer. */\n    *pDst++ = (*pSrc++) + offset;\n\n    *pDst++ = (*pSrc++) + offset;\n\n    *pDst++ = (*pSrc++) + offset;\n\n    *pDst++ = (*pSrc++) + offset;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON_EXPERIMENTAL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n    /* Add offset and store result in destination buffer. */\n    *pDst++ = (*pSrc++) + offset;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicOffset group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_offset_q15.c\n * Description:  Q15 vector offset\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicOffset\n  @{\n */\n\n/**\n  @brief         Adds a constant offset to a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     offset     is the offset to be added\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\nvoid arm_offset_q15(\n  const q15_t * pSrc,\n        q15_t offset,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t offset_packed;                           /* Offset packed to 32 bit */\n\n  /* Offset is packed to 32 bit in order to use SIMD32 for addition */\n  offset_packed = __PKHBT(offset, offset, 16);\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n#if defined (ARM_MATH_DSP)\n    /* Add offset and store result in destination buffer (2 samples at a time). */\n    write_q15x2_ia (&pDst, __QADD16(read_q15x2_ia ((q15_t **) &pSrc), offset_packed));\n    write_q15x2_ia (&pDst, __QADD16(read_q15x2_ia ((q15_t **) &pSrc), offset_packed));\n#else\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrc++ + offset), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrc++ + offset), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrc++ + offset), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrc++ + offset), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n    /* Add offset and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (q15_t) __QADD16(*pSrc++, offset);\n#else\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrc++ + offset), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicOffset group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_offset_q31.c\n * Description:  Q31 vector offset\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicOffset\n  @{\n */\n\n/**\n  @brief         Adds a constant offset to a Q31 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     offset     is the offset to be added\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.\n */\n\nvoid arm_offset_q31(\n  const q31_t * pSrc,\n        q31_t offset,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n    /* Add offset and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QADD(*pSrc++, offset);\n#else\n    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset);\n#endif\n\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QADD(*pSrc++, offset);\n#else\n    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset);\n#endif\n\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QADD(*pSrc++, offset);\n#else\n    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset);\n#endif\n\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QADD(*pSrc++, offset);\n#else\n    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n    /* Add offset and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QADD(*pSrc++, offset);\n#else\n    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicOffset group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_offset_q7.c\n * Description:  Q7 vector offset\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicOffset\n  @{\n */\n\n/**\n  @brief         Adds a constant offset to a Q7 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     offset     is the offset to be added\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q7 range [0x80 0x7F] are saturated.\n */\n\nvoid arm_offset_q7(\n  const q7_t * pSrc,\n        q7_t offset,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t offset_packed;                           /* Offset packed to 32 bit */\n\n  /* Offset is packed to 32 bit in order to use SIMD32 for addition */\n  offset_packed = __PACKq7(offset, offset, offset, offset);\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n#if defined (ARM_MATH_DSP)\n    /* Add offset and store result in destination buffer (4 samples at a time). */\n    write_q7x4_ia (&pDst, __QADD8(read_q7x4_ia ((q7_t **) &pSrc), offset_packed));\n#else\n    *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8);\n    *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8);\n    *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8);\n    *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A + offset */\n\n    /* Add offset and store result in destination buffer. */\n    *pDst++ = (q7_t) __SSAT((q15_t) *pSrc++ + offset, 8);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicOffset group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_scale_f32.c\n * Description:  Multiplies a floating-point vector by a scalar\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicScale Vector Scale\n\n  Multiply a vector by a scalar value.  For floating-point data, the algorithm used is:\n\n  <pre>\n      pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.\n  </pre>\n\n  In the fixed-point Q7, Q15, and Q31 functions, <code>scale</code> is represented by\n  a fractional multiplication <code>scaleFract</code> and an arithmetic shift <code>shift</code>.\n  The shift allows the gain of the scaling operation to exceed 1.0.\n  The algorithm used with fixed-point data is:\n\n  <pre>\n      pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.\n  </pre>\n\n  The overall scale factor applied to the fixed-point data is\n  <pre>\n      scale = scaleFract * 2^shift.\n  </pre>\n\n  The functions support in-place computation allowing the source and destination\n  pointers to reference the same memory buffer.\n */\n\n/**\n  @addtogroup BasicScale\n  @{\n */\n\n/**\n  @brief         Multiplies a floating-point vector by a scalar.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     scale      scale factor to be applied\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_scale_f32(\n  const float32_t *pSrc,\n        float32_t scale,\n        float32_t *pDst,\n        uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\n    float32x4_t vec1;\n    float32x4_t res;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        /* C = A * scale */\n\n    \t/* Scale the input and then store the results in the destination buffer. */\n        vec1 = vld1q_f32(pSrc);\n        res = vmulq_f32(vec1, vdupq_n_f32(scale));\n        vst1q_f32(pDst, res);\n\n        /* Increment pointers */\n        pSrc += 4; \n        pDst += 4;\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * scale */\n\n    /* Scale input and store result in destination buffer. */\n    *pDst++ = (*pSrc++) * scale;\n\n    *pDst++ = (*pSrc++) * scale;\n\n    *pDst++ = (*pSrc++) * scale;\n\n    *pDst++ = (*pSrc++) * scale;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON_EXPERIMENTAL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * scale */\n\n    /* Scale input and store result in destination buffer. */\n    *pDst++ = (*pSrc++) * scale;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicScale group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_scale_q15.c\n * Description:  Multiplies a Q15 vector by a scalar\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicScale\n  @{\n */\n\n/**\n  @brief         Multiplies a Q15 vector by a scalar.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     scaleFract fractional portion of the scale value\n  @param[in]     shift      number of bits to shift the result by\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.15 format.\n                   These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format.\n */\n\nvoid arm_scale_q15(\n  const q15_t *pSrc,\n        q15_t scaleFract,\n        int8_t shift,\n        q15_t *pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        int8_t kShift = 15 - shift;                    /* Shift to apply after scaling */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n#if defined (ARM_MATH_DSP)\n  q31_t inA1, inA2;\n  q31_t out1, out2, out3, out4;                  /* Temporary output variables */\n  q15_t in1, in2, in3, in4;                      /* Temporary input variables */\n#endif\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * scale */\n\n#if defined (ARM_MATH_DSP)\n    /* read 2 times 2 samples at a time from source */\n    inA1 = read_q15x2_ia ((q15_t **) &pSrc);\n    inA2 = read_q15x2_ia ((q15_t **) &pSrc);\n\n    /* Scale inputs and store result in temporary variables\n     * in single cycle by packing the outputs */\n    out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract);\n    out2 = (q31_t) ((q15_t) (inA1      ) * scaleFract);\n    out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract);\n    out4 = (q31_t) ((q15_t) (inA2      ) * scaleFract);\n\n    /* apply shifting */\n    out1 = out1 >> kShift;\n    out2 = out2 >> kShift;\n    out3 = out3 >> kShift;\n    out4 = out4 >> kShift;\n\n    /* saturate the output */\n    in1 = (q15_t) (__SSAT(out1, 16));\n    in2 = (q15_t) (__SSAT(out2, 16));\n    in3 = (q15_t) (__SSAT(out3, 16));\n    in4 = (q15_t) (__SSAT(out4, 16));\n\n    /* store result to destination */\n    write_q15x2_ia (&pDst, __PKHBT(in2, in1, 16));\n    write_q15x2_ia (&pDst, __PKHBT(in4, in3, 16));\n#else\n    *pDst++ = (q15_t) (__SSAT(((q31_t) *pSrc++ * scaleFract) >> kShift, 16));\n    *pDst++ = (q15_t) (__SSAT(((q31_t) *pSrc++ * scaleFract) >> kShift, 16));\n    *pDst++ = (q15_t) (__SSAT(((q31_t) *pSrc++ * scaleFract) >> kShift, 16));\n    *pDst++ = (q15_t) (__SSAT(((q31_t) *pSrc++ * scaleFract) >> kShift, 16));\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * scale */\n\n    /* Scale input and store result in destination buffer. */\n    *pDst++ = (q15_t) (__SSAT(((q31_t) *pSrc++ * scaleFract) >> kShift, 16));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicScale group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_scale_q31.c\n * Description:  Multiplies a Q31 vector by a scalar\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicScale\n  @{\n */\n\n/**\n  @brief         Multiplies a Q31 vector by a scalar.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     scaleFract fractional portion of the scale value\n  @param[in]     shift      number of bits to shift the result by\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.31 format.\n                   These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format.\n */\n\nvoid arm_scale_q31(\n  const q31_t *pSrc,\n        q31_t scaleFract,\n        int8_t shift,\n        q31_t *pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t in, out;                                 /* Temporary variables */\n        int8_t kShift = shift + 1;                     /* Shift to apply after scaling */\n        int8_t sign = (kShift & 0x80);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A * scale */\n\n      /* Scale input and store result in destination buffer. */\n      in = *pSrc++;                                /* read input from source */\n      in = ((q63_t) in * scaleFract) >> 32;        /* multiply input with scaler value */\n      out = in << kShift;                          /* apply shifting */\n      if (in != (out >> kShift))                   /* saturate the result */\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;                               /* Store result destination */\n\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A * scale */\n\n      /* Scale input and store result in destination buffer. */\n      in = *pSrc++;                                /* read four inputs from source */\n      in = ((q63_t) in * scaleFract) >> 32;        /* multiply input with scaler value */\n      out = in >> -kShift;                         /* apply shifting */\n      *pDst++ = out;                               /* Store result destination */\n\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in >> -kShift;\n      *pDst++ = out;\n\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in >> -kShift;\n      *pDst++ = out;\n\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in >> -kShift;\n      *pDst++ = out;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A * scale */\n\n      /* Scale input and store result in destination buffer. */\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n          out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A * scale */\n\n      /* Scale input and store result in destination buffer. */\n      in = *pSrc++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in >> -kShift;\n      *pDst++ = out;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n}\n\n/**\n  @} end of BasicScale group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_scale_q7.c\n * Description:  Multiplies a Q7 vector by a scalar\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicScale\n  @{\n */\n\n/**\n  @brief         Multiplies a Q7 vector by a scalar.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     scaleFract fractional portion of the scale value\n  @param[in]     shift      number of bits to shift the result by\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.7 format.\n                   These are multiplied to yield a 2.14 intermediate result and this is shifted with saturation to 1.7 format.\n */\n\nvoid arm_scale_q7(\n  const q7_t * pSrc,\n        q7_t scaleFract,\n        int8_t shift,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        int8_t kShift = 7 - shift;                     /* Shift to apply after scaling */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q7_t in1,  in2,  in3,  in4;                    /* Temporary input variables */\n  q7_t out1, out2, out3, out4;                   /* Temporary output variables */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * scale */\n\n#if defined (ARM_MATH_DSP)\n    /* Reading 4 inputs from memory */\n    in1 = *pSrc++;\n    in2 = *pSrc++;\n    in3 = *pSrc++;\n    in4 = *pSrc++;\n\n    /* Scale inputs and store result in the temporary variable. */\n    out1 = (q7_t) (__SSAT(((in1) * scaleFract) >> kShift, 8));\n    out2 = (q7_t) (__SSAT(((in2) * scaleFract) >> kShift, 8));\n    out3 = (q7_t) (__SSAT(((in3) * scaleFract) >> kShift, 8));\n    out4 = (q7_t) (__SSAT(((in4) * scaleFract) >> kShift, 8));\n\n    /* Pack and store result in destination buffer (in single write) */\n    write_q7x4_ia (&pDst, __PACKq7(out1, out2, out3, out4));\n#else\n    *pDst++ = (q7_t) (__SSAT((((q15_t) *pSrc++ * scaleFract) >> kShift), 8));\n    *pDst++ = (q7_t) (__SSAT((((q15_t) *pSrc++ * scaleFract) >> kShift), 8));\n    *pDst++ = (q7_t) (__SSAT((((q15_t) *pSrc++ * scaleFract) >> kShift), 8));\n    *pDst++ = (q7_t) (__SSAT((((q15_t) *pSrc++ * scaleFract) >> kShift), 8));\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * scale */\n\n    /* Scale input and store result in destination buffer. */\n    *pDst++ = (q7_t) (__SSAT((((q15_t) *pSrc++ * scaleFract) >> kShift), 8));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicScale group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_shift_q15.c\n * Description:  Shifts the elements of a Q15 vector by a specified number of bits\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicShift\n  @{\n */\n\n/**\n  @brief         Shifts the elements of a Q15 vector a specified number of bits\n  @param[in]     pSrc       points to the input vector\n  @param[in]     shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\nvoid arm_shift_q15(\n  const q15_t * pSrc,\n        int8_t shiftBits,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        uint8_t sign = (shiftBits & 0x80);             /* Sign of shiftBits */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q15_t in1, in2;                                /* Temporary input variables */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  /* If the shift value is positive then do right shift else left shift */\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A << shiftBits */\n\n#if defined (ARM_MATH_DSP)\n      /* read 2 samples from source */\n      in1 = *pSrc++;\n      in2 = *pSrc++;\n\n      /* Shift the inputs and then store the results in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pDst, __PKHBT(__SSAT((in1 << shiftBits), 16),\n                                     __SSAT((in2 << shiftBits), 16), 16));\n#else\n      write_q15x2_ia (&pDst, __PKHBT(__SSAT((in2 << shiftBits), 16),\n                                      __SSAT((in1 << shiftBits), 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n      /* read 2 samples from source */\n      in1 = *pSrc++;\n      in2 = *pSrc++;\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pDst, __PKHBT(__SSAT((in1 << shiftBits), 16),\n                                     __SSAT((in2 << shiftBits), 16), 16));\n#else\n      write_q15x2_ia (&pDst, __PKHBT(__SSAT((in2 << shiftBits), 16),\n                                     __SSAT((in1 << shiftBits), 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n#else\n      *pDst++ = __SSAT(((q31_t) *pSrc++ << shiftBits), 16);\n      *pDst++ = __SSAT(((q31_t) *pSrc++ << shiftBits), 16);\n      *pDst++ = __SSAT(((q31_t) *pSrc++ << shiftBits), 16);\n      *pDst++ = __SSAT(((q31_t) *pSrc++ << shiftBits), 16);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A >> shiftBits */\n\n#if defined (ARM_MATH_DSP)\n      /* read 2 samples from source */\n      in1 = *pSrc++;\n      in2 = *pSrc++;\n\n      /* Shift the inputs and then store the results in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pDst, __PKHBT((in1 >> -shiftBits),\n                                     (in2 >> -shiftBits), 16));\n#else\n      write_q15x2_ia (&pDst, __PKHBT((in2 >> -shiftBits),\n                                     (in1 >> -shiftBits), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n      /* read 2 samples from source */\n      in1 = *pSrc++;\n      in2 = *pSrc++;\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pDst, __PKHBT((in1 >> -shiftBits),\n                                     (in2 >> -shiftBits), 16));\n#else\n      write_q15x2_ia (&pDst, __PKHBT((in2 >> -shiftBits),\n                                     (in1 >> -shiftBits), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n#else\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* If the shift value is positive then do right shift else left shift */\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A << shiftBits */\n\n      /* Shift input and store result in destination buffer. */\n      *pDst++ = __SSAT(((q31_t) *pSrc++ << shiftBits), 16);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A >> shiftBits */\n\n      /* Shift input and store result in destination buffer. */\n      *pDst++ = (*pSrc++ >> -shiftBits);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n}\n\n/**\n  @} end of BasicShift group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_shift_q31.c\n * Description:  Shifts the elements of a Q31 vector by a specified number of bits\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n/**\n  @defgroup BasicShift Vector Shift\n\n  Shifts the elements of a fixed-point vector by a specified number of bits.\n  There are separate functions for Q7, Q15, and Q31 data types.\n  The underlying algorithm used is:\n\n  <pre>\n      pDst[n] = pSrc[n] << shift,   0 <= n < blockSize.\n  </pre>\n\n  If <code>shift</code> is positive then the elements of the vector are shifted to the left.\n  If <code>shift</code> is negative then the elements of the vector are shifted to the right.\n\n  The functions support in-place computation allowing the source and destination\n  pointers to reference the same memory buffer.\n */\n\n/**\n  @addtogroup BasicShift\n  @{\n */\n\n/**\n  @brief         Shifts the elements of a Q31 vector a specified number of bits.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in the vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.\n */\n\nvoid arm_shift_q31(\n  const q31_t * pSrc,\n        int8_t shiftBits,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        uint8_t sign = (shiftBits & 0x80);             /* Sign of shiftBits */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  q31_t in, out;                                 /* Temporary variables */\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  /* If the shift value is positive then do right shift else left shift */\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A << shiftBits */\n\n      /* Shift input and store result in destination buffer. */\n      in = *pSrc++;\n      out = in << shiftBits;\n      if (in != (out >> shiftBits))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      in = *pSrc++;\n      out = in << shiftBits;\n      if (in != (out >> shiftBits))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      in = *pSrc++;\n      out = in << shiftBits;\n      if (in != (out >> shiftBits))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      in = *pSrc++;\n      out = in << shiftBits;\n      if (in != (out >> shiftBits))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pDst++ = out;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A >> shiftBits */\n\n      /* Shift input and store results in destination buffer. */\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* If the shift value is positive then do right shift else left shift */\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A << shiftBits */\n\n      /* Shift input and store result in destination buffer. */\n      *pDst++ = clip_q63_to_q31((q63_t) *pSrc++ << shiftBits);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A >> shiftBits */\n\n      /* Shift input and store result in destination buffer. */\n      *pDst++ = (*pSrc++ >> -shiftBits);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n}\n\n/**\n  @} end of BasicShift group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_shift_q7.c\n * Description:  Processing function for the Q7 Shifting\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicShift\n  @{\n */\n\n/**\n  @brief         Shifts the elements of a Q7 vector a specified number of bits\n  @param[in]     pSrc       points to the input vector\n  @param[in]     shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           onditions for optimum performance\n                   Input and output buffers should be aligned by 32-bit\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q7 range [0x80 0x7F] are saturated.\n */\n\nvoid arm_shift_q7(\n  const q7_t * pSrc,\n        int8_t shiftBits,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        uint8_t sign = (shiftBits & 0x80);             /* Sign of shiftBits */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q7_t in1,  in2,  in3,  in4;                    /* Temporary input variables */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  /* If the shift value is positive then do right shift else left shift */\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A << shiftBits */\n\n#if defined (ARM_MATH_DSP)\n      /* Read 4 inputs */\n      in1 = *pSrc++;\n      in2 = *pSrc++;\n      in3 = *pSrc++;\n      in4 = *pSrc++;\n\n    /* Pack and store result in destination buffer (in single write) */\n      write_q7x4_ia (&pDst, __PACKq7(__SSAT((in1 << shiftBits), 8),\n                                     __SSAT((in2 << shiftBits), 8),\n                                     __SSAT((in3 << shiftBits), 8),\n                                     __SSAT((in4 << shiftBits), 8) ));\n#else\n      *pDst++ = (q7_t) __SSAT(((q15_t) *pSrc++ << shiftBits), 8);\n      *pDst++ = (q7_t) __SSAT(((q15_t) *pSrc++ << shiftBits), 8);\n      *pDst++ = (q7_t) __SSAT(((q15_t) *pSrc++ << shiftBits), 8);\n      *pDst++ = (q7_t) __SSAT(((q15_t) *pSrc++ << shiftBits), 8);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A >> shiftBits */\n\n#if defined (ARM_MATH_DSP)\n      /* Read 4 inputs */\n      in1 = *pSrc++;\n      in2 = *pSrc++;\n      in3 = *pSrc++;\n      in4 = *pSrc++;\n\n    /* Pack and store result in destination buffer (in single write) */\n      write_q7x4_ia (&pDst, __PACKq7((in1 >> -shiftBits),\n                                     (in2 >> -shiftBits),\n                                     (in3 >> -shiftBits),\n                                     (in4 >> -shiftBits) ));\n#else\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n      *pDst++ = (*pSrc++ >> -shiftBits);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* If the shift value is positive then do right shift else left shift */\n  if (sign == 0U)\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A << shiftBits */\n\n      /* Shift input and store result in destination buffer. */\n      *pDst++ = (q7_t) __SSAT(((q15_t) *pSrc++ << shiftBits), 8);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    while (blkCnt > 0U)\n    {\n      /* C = A >> shiftBits */\n\n      /* Shift input and store result in destination buffer. */\n      *pDst++ = (*pSrc++ >> -shiftBits);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n}\n\n/**\n  @} end of BasicShift group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sub_f32.c\n * Description:  Floating-point vector subtraction\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @defgroup BasicSub Vector Subtraction\n\n  Element-by-element subtraction of two vectors.\n\n  <pre>\n      pDst[n] = pSrcA[n] - pSrcB[n],   0 <= n < blockSize.\n  </pre>\n\n  There are separate functions for floating-point, Q7, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup BasicSub\n  @{\n */\n\n/**\n  @brief         Floating-point vector subtraction.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_sub_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t vec1;\n    float32x4_t vec2;\n    float32x4_t res;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        /* C = A - B */\n\n        /* Subtract and then store the results in the destination buffer. */\n        vec1 = vld1q_f32(pSrcA);\n        vec2 = vld1q_f32(pSrcB);\n        res = vsubq_f32(vec1, vec2);\n        vst1q_f32(pDst, res);\n\n        /* Increment pointers */\n        pSrcA += 4;\n        pSrcB += 4; \n        pDst += 4;\n        \n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = blockSize & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n    /* Subtract and store result in destination buffer. */\n    *pDst++ = (*pSrcA++) - (*pSrcB++);\n\n    *pDst++ = (*pSrcA++) - (*pSrcB++);\n\n    *pDst++ = (*pSrcA++) - (*pSrcB++);\n\n    *pDst++ = (*pSrcA++) - (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n    /* Subtract and store result in destination buffer. */\n    *pDst++ = (*pSrcA++) - (*pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicSub group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sub_q15.c\n * Description:  Q15 vector subtraction\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicSub\n  @{\n */\n\n/**\n  @brief         Q15 vector subtraction.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\nvoid arm_sub_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n  q31_t inA1, inA2;\n  q31_t inB1, inB2;\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n#if defined (ARM_MATH_DSP)\n    /* read 2 times 2 samples at a time from sourceA */\n    inA1 = read_q15x2_ia ((q15_t **) &pSrcA);\n    inA2 = read_q15x2_ia ((q15_t **) &pSrcA);\n    /* read 2 times 2 samples at a time from sourceB */\n    inB1 = read_q15x2_ia ((q15_t **) &pSrcB);\n    inB2 = read_q15x2_ia ((q15_t **) &pSrcB);\n\n    /* Subtract and store 2 times 2 samples at a time */\n    write_q15x2_ia (&pDst, __QSUB16(inA1, inB1));\n    write_q15x2_ia (&pDst, __QSUB16(inA2, inB2));\n#else\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ - *pSrcB++), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ - *pSrcB++), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ - *pSrcB++), 16);\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ - *pSrcB++), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n    /* Subtract and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n    *pDst++ = (q15_t) __QSUB16(*pSrcA++, *pSrcB++);\n#else\n    *pDst++ = (q15_t) __SSAT(((q31_t) *pSrcA++ - *pSrcB++), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicSub group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sub_q31.c\n * Description:  Q31 vector subtraction\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicSub\n  @{\n */\n\n/**\n  @brief         Q31 vector subtraction.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.\n */\n\nvoid arm_sub_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n    /* Subtract and store result in destination buffer. */\n    *pDst++ = __QSUB(*pSrcA++, *pSrcB++);\n\n    *pDst++ = __QSUB(*pSrcA++, *pSrcB++);\n\n    *pDst++ = __QSUB(*pSrcA++, *pSrcB++);\n\n    *pDst++ = __QSUB(*pSrcA++, *pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n    /* Subtract and store result in destination buffer. */\n    *pDst++ = __QSUB(*pSrcA++, *pSrcB++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicSub group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sub_q7.c\n * Description:  Q7 vector subtraction\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMath\n */\n\n/**\n  @addtogroup BasicSub\n  @{\n */\n\n/**\n  @brief         Q7 vector subtraction.\n  @param[in]     pSrcA      points to the first input vector\n  @param[in]     pSrcB      points to the second input vector\n  @param[out]    pDst       points to the output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.\n */\n\nvoid arm_sub_q7(\n  const q7_t * pSrcA,\n  const q7_t * pSrcB,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n#if defined (ARM_MATH_DSP)\n    /* Subtract and store result in destination buffer (4 samples at a time). */\n    write_q7x4_ia (&pDst, __QSUB8(read_q7x4_ia ((q7_t **) &pSrcA), read_q7x4_ia ((q7_t **) &pSrcB)));\n#else\n    *pDst++ = (q7_t) __SSAT((q15_t) *pSrcA++ - *pSrcB++, 8);\n    *pDst++ = (q7_t) __SSAT((q15_t) *pSrcA++ - *pSrcB++, 8);\n    *pDst++ = (q7_t) __SSAT((q15_t) *pSrcA++ - *pSrcB++, 8);\n    *pDst++ = (q7_t) __SSAT((q15_t) *pSrcA++ - *pSrcB++, 8);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A - B */\n\n    /* Subtract and store result in destination buffer. */\n    *pDst++ = (q7_t) __SSAT((q15_t) *pSrcA++ - *pSrcB++, 8);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of BasicSub group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSP)\n\n# Needed to find the config modules\nlist(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/..)\n\n# Select which parts of the CMSIS-DSP must be compiled.\n# There are some dependencies between the parts but they are not tracked\n# by this cmake. So, enabling some functions may require to enable some\n# other ones.\noption(BASICMATH            \"Basic Math Functions\"              ON)\noption(COMPLEXMATH          \"Complex Math Functions\"            ON)\noption(CONTROLLER           \"Controller Functions\"              ON)\noption(FASTMATH             \"Fast Math Functions\"               ON)\noption(FILTERING            \"Filtering Functions\"               ON)\noption(MATRIX               \"Matrix Functions\"                  ON)\noption(STATISTICS           \"Statistics Functions\"              ON)\noption(SUPPORT              \"Support Functions\"                 ON)\noption(TRANSFORM            \"Transform Functions\"               ON)\n\n# When OFF it is the default behavior : all tables are included.\noption(CONFIGTABLE          \"Configuration of table allowed\"    OFF)\n\n# When CONFIGTABLE is ON, select if all interpolation tables must be included\noption(ALLFAST              \"All interpolation tables included\" OFF)\n# When CONFIGTABLE is ON, select if all FFT tables must be included\noption(ALLFFT               \"All fft tables included\"           OFF)\n\n# Features which require inclusion of a data table.\n# Since some tables may be big, the corresponding feature can be\n# disabled.\n# Those options are taken into account only when CONFIGTABLE is ON\noption(ARM_COS_F32          \"cos f32\"                           OFF)\noption(ARM_COS_Q31          \"cos q31\"                           OFF)\noption(ARM_COS_Q15          \"cos q15\"                           OFF)\noption(ARM_SIN_F32          \"sin f32\"                           OFF)\noption(ARM_SIN_Q31          \"sin q31\"                           OFF)\noption(ARM_SIN_Q15          \"sin q15\"                           OFF)\noption(ARM_SIN_COS_F32      \"sin cos f32\"                       OFF)\noption(ARM_SIN_COS_Q31      \"sin cos q31\"                       OFF)\n             \noption(ARM_LMS_NORM_Q31     \"lms norm q31\"                      OFF)\noption(ARM_LMS_NORM_Q15     \"lms norm q15\"                      OFF)\n             \noption(CFFT_F32_16          \"cfft f32 16\"                       OFF)\noption(CFFT_F32_32          \"cfft f32 32\"                       OFF)\noption(CFFT_F32_64          \"cfft f32 64\"                       OFF)\noption(CFFT_F32_128         \"cfft f32 128\"                      OFF)\noption(CFFT_F32_256         \"cfft f32 256\"                      OFF)\noption(CFFT_F32_512         \"cfft f32 512\"                      OFF)\noption(CFFT_F32_1024        \"cfft f32 1024\"                     OFF)\noption(CFFT_F32_2048        \"cfft f32 2048\"                     OFF)\noption(CFFT_F32_4096        \"cfft f32 4096\"                     OFF)\n                  \noption(CFFT_Q31_16          \"cfft q31 16\"                       OFF)\noption(CFFT_Q31_32          \"cfft q31 32\"                       OFF)\noption(CFFT_Q31_64          \"cfft q31 64\"                       OFF)\noption(CFFT_Q31_128         \"cfft q31 128\"                      OFF)\noption(CFFT_Q31_256         \"cfft q31 256\"                      OFF)\noption(CFFT_Q31_512         \"cfft q31 512\"                      OFF)\noption(CFFT_Q31_1024        \"cfft q31 1024\"                     OFF)\noption(CFFT_Q31_2048        \"cfft q31 2048\"                     OFF)\noption(CFFT_Q31_4096        \"cfft q31 4096\"                     OFF)\n                  \noption(CFFT_Q15_16          \"cfft q15 16\"                       OFF)\noption(CFFT_Q15_32          \"cfft q15 32\"                       OFF)\noption(CFFT_Q15_64          \"cfft q15 64\"                       OFF)\noption(CFFT_Q15_128         \"cfft q15 128\"                      OFF)\noption(CFFT_Q15_256         \"cfft q15 256\"                      OFF)\noption(CFFT_Q15_512         \"cfft q15 512\"                      OFF)\noption(CFFT_Q15_1024        \"cfft q15 1024\"                     OFF)\noption(CFFT_Q15_2048        \"cfft q15 2048\"                     OFF)\noption(CFFT_Q15_4096        \"cfft q15 4096\"                     OFF)\n             \noption(RFFT_FAST_F32_32     \"rfft fast f32 32\"                  OFF)\noption(RFFT_FAST_F32_64     \"rfft fast f32 64\"                  OFF)\noption(RFFT_FAST_F32_128    \"rfft fast f32 128\"                 OFF)\noption(RFFT_FAST_F32_256    \"rfft fast f32 256\"                 OFF)\noption(RFFT_FAST_F32_512    \"rfft fast f32 512\"                 OFF)\noption(RFFT_FAST_F32_1024   \"rfft fast f32 1024\"                OFF)\noption(RFFT_FAST_F32_2048   \"rfft fast f32 2048\"                OFF)\noption(RFFT_FAST_F32_4096   \"rfft fast f32 4096\"                OFF)\n             \n             \noption(RFFT_F32_128         \"rfft f32 128\"                      OFF)\noption(RFFT_F32_512         \"rfft f32 512\"                      OFF)\noption(RFFT_F32_2048        \"rfft f32 2048\"                     OFF)\noption(RFFT_F32_8192        \"rfft f32 8192\"                     OFF)\n             \noption(RFFT_Q31_32          \"rfft q31 32\"                       OFF)\noption(RFFT_Q31_64          \"rfft q31 64\"                       OFF)\noption(RFFT_Q31_128         \"rfft q31 128\"                      OFF)\noption(RFFT_Q31_256         \"rfft q31 256\"                      OFF)\noption(RFFT_Q31_512         \"rfft q31 512\"                      OFF)\noption(RFFT_Q31_1024        \"rfft q31 1024\"                     OFF)\noption(RFFT_Q31_2048        \"rfft q31 2048\"                     OFF)\noption(RFFT_Q31_4096        \"rfft q31 4096\"                     OFF)\noption(RFFT_Q31_8192        \"rfft q31 8192\"                     OFF)\n             \noption(RFFT_Q15_32          \"rfft q15 32\"                       OFF)\noption(RFFT_Q15_64          \"rfft q15 64\"                       OFF)\noption(RFFT_Q15_128         \"rfft q15 128\"                      OFF)\noption(RFFT_Q15_256         \"rfft q15 256\"                      OFF)\noption(RFFT_Q15_512         \"rfft q15 512\"                      OFF)\noption(RFFT_Q15_1024        \"rfft q15 1024\"                     OFF)\noption(RFFT_Q15_2048        \"rfft q15 2048\"                     OFF)\noption(RFFT_Q15_4096        \"rfft q15 4096\"                     OFF)\noption(RFFT_Q15_8192        \"rfft q15 8192\"                     OFF)\n             \noption(DCT4_F32_128          \"dct4 f32 128\"                     OFF)\noption(DCT4_F32_512          \"dct4 f32 512\"                     OFF)\noption(DCT4_F32_2048         \"dct4 f32 2048\"                    OFF)\noption(DCT4_F32_8192         \"dct4 f32 8192\"                    OFF)\n             \noption(DCT4_Q31_128          \"dct4 q31 128\"                     OFF)\noption(DCT4_Q31_512          \"dct4 q31 512\"                     OFF)\noption(DCT4_Q31_2048         \"dct4 q31 2048\"                    OFF)\noption(DCT4_Q31_8192         \"dct4 q31 8192\"                    OFF)\n             \noption(DCT4_Q15_128          \"dct4 q15 128\"                     OFF)\noption(DCT4_Q15_512          \"dct4 q15 512\"                     OFF)\noption(DCT4_Q15_2048         \"dct4 q15 2048\"                    OFF)\noption(DCT4_Q15_8192         \"dct4 q15 8192\"                    OFF)\n\n\n###########################\n#\n# CMSIS DSP\n#\n###########################\n\n# DSP Sources\nSET(DSP \".\")\n\nadd_library(CMSISDSP INTERFACE)\n\ninclude(config)\n\n\nif (BASICMATH)\n  add_subdirectory(BasicMathFunctions)\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPBasicMath)\nendif()\n\nif (COMPLEXMATH)\n  add_subdirectory(ComplexMathFunctions)\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPComplexMath)\nendif()\n\nif (CONTROLLER)\n  add_subdirectory(ControllerFunctions)\n  # Fast tables inclusion is allowed\n  if (CONFIGTABLE)\n    target_compile_definitions(CMSISDSPController PUBLIC ARM_FAST_ALLOW_TABLES) \n  endif()\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPController)\nendif()\n\nif (FASTMATH)\n  add_subdirectory(FastMathFunctions)\n  # Fast tables inclusion is allowed\n  if (CONFIGTABLE)\n    target_compile_definitions(CMSISDSPFastMath PUBLIC ARM_FAST_ALLOW_TABLES) \n  endif()\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPFastMath)\nendif()\n\nif (FILTERING)\n  add_subdirectory(FilteringFunctions)\n  # Fast tables inclusion is allowed\n  if (CONFIGTABLE)\n    target_compile_definitions(CMSISDSPFiltering PUBLIC ARM_FAST_ALLOW_TABLES)\n  endif() \n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPFiltering)\nendif()\n\nif (MATRIX)\n  add_subdirectory(MatrixFunctions)\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPMatrix)\nendif()\n\nif (STATISTICS)\n  add_subdirectory(StatisticsFunctions)\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPStatistics)\nendif()\n\nif (SUPPORT)\n  add_subdirectory(SupportFunctions)\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPSupport)\nendif()\n\nif (TRANSFORM)\n  add_subdirectory(TransformFunctions)\n  # FFT tables inclusion is allowed\n  if (CONFIGTABLE)\n    target_compile_definitions(CMSISDSPTransform PUBLIC ARM_FFT_ALLOW_TABLES)\n  endif()\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPTransform)\nendif()\n\nif (FILTERING OR CONTROLLER OR FASTMATH OR TRANSFORM)\n  add_subdirectory(CommonTables)\n  if (TRANSFORM)\n    # FFT tables inclusion is allowed\n    if (CONFIGTABLE)\n      target_compile_definitions(CMSISDSPCommon PUBLIC ARM_FFT_ALLOW_TABLES) \n    endif()\n  endif()\n  if (FILTERING OR CONTROLLER OR FASTMATH)\n    # Select which tables to include\n    if (CONFIGTABLE)\n      target_compile_definitions(CMSISDSPCommon PUBLIC ARM_FAST_ALLOW_TABLES) \n    endif()\n  endif()\n  target_link_libraries(CMSISDSP INTERFACE CMSISDSPCommon)\nendif()\n\n### Includes\ntarget_include_directories(CMSISDSP INTERFACE \"${DSP}/../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/CommonTables/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPCommon)\n\n\n\nadd_library(CMSISDSPCommon STATIC arm_common_tables.c)\n\nif (CONFIGTABLE AND ALLFFT)\n    target_compile_definitions(CMSISDSPCommon PUBLIC ARM_ALL_FFT_TABLES) \nendif()\n\nif (CONFIGTABLE AND ALLFAST)\n    target_compile_definitions(CMSISDSPCommon PUBLIC ARM_ALL_FAST_TABLES) \nendif()\n\ninclude(fft)\nfft(CMSISDSPCommon)\n\ninclude(interpol)\ninterpol(CMSISDSPCommon)\n\ntarget_sources(CMSISDSPCommon PRIVATE arm_const_structs.c)\n\nconfigdsp(CMSISDSPCommon ..)\n\n### Includes\ntarget_include_directories(CMSISDSPCommon PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/CommonTables/CommonTables.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        CommonTables.c\n * Description:  Combination of all common table source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_common_tables.c\"\n#include \"arm_const_structs.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_common_tables.c\n * Description:  common tables like fft twiddle factors, Bitreverse, reciprocal etc\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup ComplexFFT\n */\n\n/**\n  @addtogroup CFFT_CIFFT Complex FFT Tables\n  @{\n */\n\n/**\n  @par\n  Pseudo code for Generation of Bit reversal Table is\n  @par\n  <pre>for (l = 1; l <= N/4; l++)\n  {\n    for (i = 0; i< logN2; i++)\n    {\n      a[i] = l & (1 << i);\n    }\n    for (j = 0; j < logN2; j++)\n    {\n      if (a[j] != 0)\n      y[l] += (1 << ((logN2 - 1) - j));\n    }\n    y[l] = y[l] >> 1;\n   } </pre>\n  @par\n  where N = 4096, logN2 = 12\n  @par\n  N is the maximum FFT Size supported\n*/\n\n/**\n  @brief  Table for bit reversal process\n*/\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES)\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREV_1024)\nconst uint16_t armBitRevTable[1024] = {\n   0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700, 0x080, 0x480, 0x280,\n   0x680, 0x180, 0x580, 0x380, 0x780, 0x040, 0x440, 0x240, 0x640, 0x140,\n   0x540, 0x340, 0x740, 0x0c0, 0x4c0, 0x2c0, 0x6c0, 0x1c0, 0x5c0, 0x3c0,\n   0x7c0, 0x020, 0x420, 0x220, 0x620, 0x120, 0x520, 0x320, 0x720, 0x0a0,\n   0x4a0, 0x2a0, 0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x060, 0x460, 0x260,\n   0x660, 0x160, 0x560, 0x360, 0x760, 0x0e0, 0x4e0, 0x2e0, 0x6e0, 0x1e0,\n   0x5e0, 0x3e0, 0x7e0, 0x010, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310,\n   0x710, 0x090, 0x490, 0x290, 0x690, 0x190, 0x590, 0x390, 0x790, 0x050,\n   0x450, 0x250, 0x650, 0x150, 0x550, 0x350, 0x750, 0x0d0, 0x4d0, 0x2d0,\n   0x6d0, 0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x030, 0x430, 0x230, 0x630, 0x130,\n   0x530, 0x330, 0x730, 0x0b0, 0x4b0, 0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0,\n   0x7b0, 0x070, 0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770, 0x0f0,\n   0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0, 0x7f0, 0x008, 0x408, 0x208,\n   0x608, 0x108, 0x508, 0x308, 0x708, 0x088, 0x488, 0x288, 0x688, 0x188,\n   0x588, 0x388, 0x788, 0x048, 0x448, 0x248, 0x648, 0x148, 0x548, 0x348,\n   0x748, 0x0c8, 0x4c8, 0x2c8, 0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x028,\n   0x428, 0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0x0a8, 0x4a8, 0x2a8,\n   0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8, 0x068, 0x468, 0x268, 0x668, 0x168,\n   0x568, 0x368, 0x768, 0x0e8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8, 0x3e8,\n   0x7e8, 0x018, 0x418, 0x218, 0x618, 0x118, 0x518, 0x318, 0x718, 0x098,\n   0x498, 0x298, 0x698, 0x198, 0x598, 0x398, 0x798, 0x058, 0x458, 0x258,\n   0x658, 0x158, 0x558, 0x358, 0x758, 0x0d8, 0x4d8, 0x2d8, 0x6d8, 0x1d8,\n   0x5d8, 0x3d8, 0x7d8, 0x038, 0x438, 0x238, 0x638, 0x138, 0x538, 0x338,\n   0x738, 0x0b8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8, 0x7b8, 0x078,\n   0x478, 0x278, 0x678, 0x178, 0x578, 0x378, 0x778, 0x0f8, 0x4f8, 0x2f8,\n   0x6f8, 0x1f8, 0x5f8, 0x3f8, 0x7f8, 0x004, 0x404, 0x204, 0x604, 0x104,\n   0x504, 0x304, 0x704, 0x084, 0x484, 0x284, 0x684, 0x184, 0x584, 0x384,\n   0x784, 0x044, 0x444, 0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0x0c4,\n   0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4, 0x024, 0x424, 0x224,\n   0x624, 0x124, 0x524, 0x324, 0x724, 0x0a4, 0x4a4, 0x2a4, 0x6a4, 0x1a4,\n   0x5a4, 0x3a4, 0x7a4, 0x064, 0x464, 0x264, 0x664, 0x164, 0x564, 0x364,\n   0x764, 0x0e4, 0x4e4, 0x2e4, 0x6e4, 0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x014,\n   0x414, 0x214, 0x614, 0x114, 0x514, 0x314, 0x714, 0x094, 0x494, 0x294,\n   0x694, 0x194, 0x594, 0x394, 0x794, 0x054, 0x454, 0x254, 0x654, 0x154,\n   0x554, 0x354, 0x754, 0x0d4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4,\n   0x7d4, 0x034, 0x434, 0x234, 0x634, 0x134, 0x534, 0x334, 0x734, 0x0b4,\n   0x4b4, 0x2b4, 0x6b4, 0x1b4, 0x5b4, 0x3b4, 0x7b4, 0x074, 0x474, 0x274,\n   0x674, 0x174, 0x574, 0x374, 0x774, 0x0f4, 0x4f4, 0x2f4, 0x6f4, 0x1f4,\n   0x5f4, 0x3f4, 0x7f4, 0x00c, 0x40c, 0x20c, 0x60c, 0x10c, 0x50c, 0x30c,\n   0x70c, 0x08c, 0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c, 0x04c,\n   0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c, 0x74c, 0x0cc, 0x4cc, 0x2cc,\n   0x6cc, 0x1cc, 0x5cc, 0x3cc, 0x7cc, 0x02c, 0x42c, 0x22c, 0x62c, 0x12c,\n   0x52c, 0x32c, 0x72c, 0x0ac, 0x4ac, 0x2ac, 0x6ac, 0x1ac, 0x5ac, 0x3ac,\n   0x7ac, 0x06c, 0x46c, 0x26c, 0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0x0ec,\n   0x4ec, 0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x01c, 0x41c, 0x21c,\n   0x61c, 0x11c, 0x51c, 0x31c, 0x71c, 0x09c, 0x49c, 0x29c, 0x69c, 0x19c,\n   0x59c, 0x39c, 0x79c, 0x05c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c, 0x35c,\n   0x75c, 0x0dc, 0x4dc, 0x2dc, 0x6dc, 0x1dc, 0x5dc, 0x3dc, 0x7dc, 0x03c,\n   0x43c, 0x23c, 0x63c, 0x13c, 0x53c, 0x33c, 0x73c, 0x0bc, 0x4bc, 0x2bc,\n   0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x07c, 0x47c, 0x27c, 0x67c, 0x17c,\n   0x57c, 0x37c, 0x77c, 0x0fc, 0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc,\n   0x7fc, 0x002, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302, 0x702, 0x082,\n   0x482, 0x282, 0x682, 0x182, 0x582, 0x382, 0x782, 0x042, 0x442, 0x242,\n   0x642, 0x142, 0x542, 0x342, 0x742, 0x0c2, 0x4c2, 0x2c2, 0x6c2, 0x1c2,\n   0x5c2, 0x3c2, 0x7c2, 0x022, 0x422, 0x222, 0x622, 0x122, 0x522, 0x322,\n   0x722, 0x0a2, 0x4a2, 0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x062,\n   0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762, 0x0e2, 0x4e2, 0x2e2,\n   0x6e2, 0x1e2, 0x5e2, 0x3e2, 0x7e2, 0x012, 0x412, 0x212, 0x612, 0x112,\n   0x512, 0x312, 0x712, 0x092, 0x492, 0x292, 0x692, 0x192, 0x592, 0x392,\n   0x792, 0x052, 0x452, 0x252, 0x652, 0x152, 0x552, 0x352, 0x752, 0x0d2,\n   0x4d2, 0x2d2, 0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x032, 0x432, 0x232,\n   0x632, 0x132, 0x532, 0x332, 0x732, 0x0b2, 0x4b2, 0x2b2, 0x6b2, 0x1b2,\n   0x5b2, 0x3b2, 0x7b2, 0x072, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372,\n   0x772, 0x0f2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2, 0x3f2, 0x7f2, 0x00a,\n   0x40a, 0x20a, 0x60a, 0x10a, 0x50a, 0x30a, 0x70a, 0x08a, 0x48a, 0x28a,\n   0x68a, 0x18a, 0x58a, 0x38a, 0x78a, 0x04a, 0x44a, 0x24a, 0x64a, 0x14a,\n   0x54a, 0x34a, 0x74a, 0x0ca, 0x4ca, 0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca,\n   0x7ca, 0x02a, 0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a, 0x0aa,\n   0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa, 0x7aa, 0x06a, 0x46a, 0x26a,\n   0x66a, 0x16a, 0x56a, 0x36a, 0x76a, 0x0ea, 0x4ea, 0x2ea, 0x6ea, 0x1ea,\n   0x5ea, 0x3ea, 0x7ea, 0x01a, 0x41a, 0x21a, 0x61a, 0x11a, 0x51a, 0x31a,\n   0x71a, 0x09a, 0x49a, 0x29a, 0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a,\n   0x45a, 0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0x0da, 0x4da, 0x2da,\n   0x6da, 0x1da, 0x5da, 0x3da, 0x7da, 0x03a, 0x43a, 0x23a, 0x63a, 0x13a,\n   0x53a, 0x33a, 0x73a, 0x0ba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba, 0x3ba,\n   0x7ba, 0x07a, 0x47a, 0x27a, 0x67a, 0x17a, 0x57a, 0x37a, 0x77a, 0x0fa,\n   0x4fa, 0x2fa, 0x6fa, 0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x006, 0x406, 0x206,\n   0x606, 0x106, 0x506, 0x306, 0x706, 0x086, 0x486, 0x286, 0x686, 0x186,\n   0x586, 0x386, 0x786, 0x046, 0x446, 0x246, 0x646, 0x146, 0x546, 0x346,\n   0x746, 0x0c6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6, 0x7c6, 0x026,\n   0x426, 0x226, 0x626, 0x126, 0x526, 0x326, 0x726, 0x0a6, 0x4a6, 0x2a6,\n   0x6a6, 0x1a6, 0x5a6, 0x3a6, 0x7a6, 0x066, 0x466, 0x266, 0x666, 0x166,\n   0x566, 0x366, 0x766, 0x0e6, 0x4e6, 0x2e6, 0x6e6, 0x1e6, 0x5e6, 0x3e6,\n   0x7e6, 0x016, 0x416, 0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x096,\n   0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796, 0x056, 0x456, 0x256,\n   0x656, 0x156, 0x556, 0x356, 0x756, 0x0d6, 0x4d6, 0x2d6, 0x6d6, 0x1d6,\n   0x5d6, 0x3d6, 0x7d6, 0x036, 0x436, 0x236, 0x636, 0x136, 0x536, 0x336,\n   0x736, 0x0b6, 0x4b6, 0x2b6, 0x6b6, 0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x076,\n   0x476, 0x276, 0x676, 0x176, 0x576, 0x376, 0x776, 0x0f6, 0x4f6, 0x2f6,\n   0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0x00e, 0x40e, 0x20e, 0x60e, 0x10e,\n   0x50e, 0x30e, 0x70e, 0x08e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e,\n   0x78e, 0x04e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e, 0x34e, 0x74e, 0x0ce,\n   0x4ce, 0x2ce, 0x6ce, 0x1ce, 0x5ce, 0x3ce, 0x7ce, 0x02e, 0x42e, 0x22e,\n   0x62e, 0x12e, 0x52e, 0x32e, 0x72e, 0x0ae, 0x4ae, 0x2ae, 0x6ae, 0x1ae,\n   0x5ae, 0x3ae, 0x7ae, 0x06e, 0x46e, 0x26e, 0x66e, 0x16e, 0x56e, 0x36e,\n   0x76e, 0x0ee, 0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee, 0x01e,\n   0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e, 0x71e, 0x09e, 0x49e, 0x29e,\n   0x69e, 0x19e, 0x59e, 0x39e, 0x79e, 0x05e, 0x45e, 0x25e, 0x65e, 0x15e,\n   0x55e, 0x35e, 0x75e, 0x0de, 0x4de, 0x2de, 0x6de, 0x1de, 0x5de, 0x3de,\n   0x7de, 0x03e, 0x43e, 0x23e, 0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0x0be,\n   0x4be, 0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x07e, 0x47e, 0x27e,\n   0x67e, 0x17e, 0x57e, 0x37e, 0x77e, 0x0fe, 0x4fe, 0x2fe, 0x6fe, 0x1fe,\n   0x5fe, 0x3fe, 0x7fe, 0x001\n};\n#endif\n/**\n  @brief  Floating-point Twiddle factors Table Generation\n*/\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_16)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for (i = 0; i < N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 16, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_16[32] = {\n    1.000000000f,  0.000000000f,\n    0.923879533f,  0.382683432f,\n    0.707106781f,  0.707106781f,\n    0.382683432f,  0.923879533f,\n    0.000000000f,  1.000000000f,\n   -0.382683432f,  0.923879533f,\n   -0.707106781f,  0.707106781f,\n   -0.923879533f,  0.382683432f,\n   -1.000000000f,  0.000000000f,\n   -0.923879533f, -0.382683432f,\n   -0.707106781f, -0.707106781f,\n   -0.382683432f, -0.923879533f,\n   -0.000000000f, -1.000000000f,\n    0.382683432f, -0.923879533f,\n    0.707106781f, -0.707106781f,\n    0.923879533f, -0.382683432f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_32)\n\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for (i = 0; i< N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 32, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_32[64] = {\n    1.000000000f,  0.000000000f,\n    0.980785280f,  0.195090322f,\n    0.923879533f,  0.382683432f,\n    0.831469612f,  0.555570233f,\n    0.707106781f,  0.707106781f,\n    0.555570233f,  0.831469612f,\n    0.382683432f,  0.923879533f,\n    0.195090322f,  0.980785280f,\n    0.000000000f,  1.000000000f,\n   -0.195090322f,  0.980785280f,\n   -0.382683432f,  0.923879533f,\n   -0.555570233f,  0.831469612f,\n   -0.707106781f,  0.707106781f,\n   -0.831469612f,  0.555570233f,\n   -0.923879533f,  0.382683432f,\n   -0.980785280f,  0.195090322f,\n   -1.000000000f,  0.000000000f,\n   -0.980785280f, -0.195090322f,\n   -0.923879533f, -0.382683432f,\n   -0.831469612f, -0.555570233f,\n   -0.707106781f, -0.707106781f,\n   -0.555570233f, -0.831469612f,\n   -0.382683432f, -0.923879533f,\n   -0.195090322f, -0.980785280f,\n   -0.000000000f, -1.000000000f,\n    0.195090322f, -0.980785280f,\n    0.382683432f, -0.923879533f,\n    0.555570233f, -0.831469612f,\n    0.707106781f, -0.707106781f,\n    0.831469612f, -0.555570233f,\n    0.923879533f, -0.382683432f,\n    0.980785280f, -0.195090322f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_64)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for(i = 0; i < N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 64, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_64[128] = {\n    1.000000000f,  0.000000000f,\n    0.995184727f,  0.098017140f,\n    0.980785280f,  0.195090322f,\n    0.956940336f,  0.290284677f,\n    0.923879533f,  0.382683432f,\n    0.881921264f,  0.471396737f,\n    0.831469612f,  0.555570233f,\n    0.773010453f,  0.634393284f,\n    0.707106781f,  0.707106781f,\n    0.634393284f,  0.773010453f,\n    0.555570233f,  0.831469612f,\n    0.471396737f,  0.881921264f,\n    0.382683432f,  0.923879533f,\n    0.290284677f,  0.956940336f,\n    0.195090322f,  0.980785280f,\n    0.098017140f,  0.995184727f,\n    0.000000000f,  1.000000000f,\n   -0.098017140f,  0.995184727f,\n   -0.195090322f,  0.980785280f,\n   -0.290284677f,  0.956940336f,\n   -0.382683432f,  0.923879533f,\n   -0.471396737f,  0.881921264f,\n   -0.555570233f,  0.831469612f,\n   -0.634393284f,  0.773010453f,\n   -0.707106781f,  0.707106781f,\n   -0.773010453f,  0.634393284f,\n   -0.831469612f,  0.555570233f,\n   -0.881921264f,  0.471396737f,\n   -0.923879533f,  0.382683432f,\n   -0.956940336f,  0.290284677f,\n   -0.980785280f,  0.195090322f,\n   -0.995184727f,  0.098017140f,\n   -1.000000000f,  0.000000000f,\n   -0.995184727f, -0.098017140f,\n   -0.980785280f, -0.195090322f,\n   -0.956940336f, -0.290284677f,\n   -0.923879533f, -0.382683432f,\n   -0.881921264f, -0.471396737f,\n   -0.831469612f, -0.555570233f,\n   -0.773010453f, -0.634393284f,\n   -0.707106781f, -0.707106781f,\n   -0.634393284f, -0.773010453f,\n   -0.555570233f, -0.831469612f,\n   -0.471396737f, -0.881921264f,\n   -0.382683432f, -0.923879533f,\n   -0.290284677f, -0.956940336f,\n   -0.195090322f, -0.980785280f,\n   -0.098017140f, -0.995184727f,\n   -0.000000000f, -1.000000000f,\n    0.098017140f, -0.995184727f,\n    0.195090322f, -0.980785280f,\n    0.290284677f, -0.956940336f,\n    0.382683432f, -0.923879533f,\n    0.471396737f, -0.881921264f,\n    0.555570233f, -0.831469612f,\n    0.634393284f, -0.773010453f,\n    0.707106781f, -0.707106781f,\n    0.773010453f, -0.634393284f,\n    0.831469612f, -0.555570233f,\n    0.881921264f, -0.471396737f,\n    0.923879533f, -0.382683432f,\n    0.956940336f, -0.290284677f,\n    0.980785280f, -0.195090322f,\n    0.995184727f, -0.098017140f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_128)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for (i = 0; i< N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 128, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_128[256] = {\n    1.000000000f,  0.000000000f,\n    0.998795456f,  0.049067674f,\n    0.995184727f,  0.098017140f,\n    0.989176510f,  0.146730474f,\n    0.980785280f,  0.195090322f,\n    0.970031253f,  0.242980180f,\n    0.956940336f,  0.290284677f,\n    0.941544065f,  0.336889853f,\n    0.923879533f,  0.382683432f,\n    0.903989293f,  0.427555093f,\n    0.881921264f,  0.471396737f,\n    0.857728610f,  0.514102744f,\n    0.831469612f,  0.555570233f,\n    0.803207531f,  0.595699304f,\n    0.773010453f,  0.634393284f,\n    0.740951125f,  0.671558955f,\n    0.707106781f,  0.707106781f,\n    0.671558955f,  0.740951125f,\n    0.634393284f,  0.773010453f,\n    0.595699304f,  0.803207531f,\n    0.555570233f,  0.831469612f,\n    0.514102744f,  0.857728610f,\n    0.471396737f,  0.881921264f,\n    0.427555093f,  0.903989293f,\n    0.382683432f,  0.923879533f,\n    0.336889853f,  0.941544065f,\n    0.290284677f,  0.956940336f,\n    0.242980180f,  0.970031253f,\n    0.195090322f,  0.980785280f,\n    0.146730474f,  0.989176510f,\n    0.098017140f,  0.995184727f,\n    0.049067674f,  0.998795456f,\n    0.000000000f,  1.000000000f,\n   -0.049067674f,  0.998795456f,\n   -0.098017140f,  0.995184727f,\n   -0.146730474f,  0.989176510f,\n   -0.195090322f,  0.980785280f,\n   -0.242980180f,  0.970031253f,\n   -0.290284677f,  0.956940336f,\n   -0.336889853f,  0.941544065f,\n   -0.382683432f,  0.923879533f,\n   -0.427555093f,  0.903989293f,\n   -0.471396737f,  0.881921264f,\n   -0.514102744f,  0.857728610f,\n   -0.555570233f,  0.831469612f,\n   -0.595699304f,  0.803207531f,\n   -0.634393284f,  0.773010453f,\n   -0.671558955f,  0.740951125f,\n   -0.707106781f,  0.707106781f,\n   -0.740951125f,  0.671558955f,\n   -0.773010453f,  0.634393284f,\n   -0.803207531f,  0.595699304f,\n   -0.831469612f,  0.555570233f,\n   -0.857728610f,  0.514102744f,\n   -0.881921264f,  0.471396737f,\n   -0.903989293f,  0.427555093f,\n   -0.923879533f,  0.382683432f,\n   -0.941544065f,  0.336889853f,\n   -0.956940336f,  0.290284677f,\n   -0.970031253f,  0.242980180f,\n   -0.980785280f,  0.195090322f,\n   -0.989176510f,  0.146730474f,\n   -0.995184727f,  0.098017140f,\n   -0.998795456f,  0.049067674f,\n   -1.000000000f,  0.000000000f,\n   -0.998795456f, -0.049067674f,\n   -0.995184727f, -0.098017140f,\n   -0.989176510f, -0.146730474f,\n   -0.980785280f, -0.195090322f,\n   -0.970031253f, -0.242980180f,\n   -0.956940336f, -0.290284677f,\n   -0.941544065f, -0.336889853f,\n   -0.923879533f, -0.382683432f,\n   -0.903989293f, -0.427555093f,\n   -0.881921264f, -0.471396737f,\n   -0.857728610f, -0.514102744f,\n   -0.831469612f, -0.555570233f,\n   -0.803207531f, -0.595699304f,\n   -0.773010453f, -0.634393284f,\n   -0.740951125f, -0.671558955f,\n   -0.707106781f, -0.707106781f,\n   -0.671558955f, -0.740951125f,\n   -0.634393284f, -0.773010453f,\n   -0.595699304f, -0.803207531f,\n   -0.555570233f, -0.831469612f,\n   -0.514102744f, -0.857728610f,\n   -0.471396737f, -0.881921264f,\n   -0.427555093f, -0.903989293f,\n   -0.382683432f, -0.923879533f,\n   -0.336889853f, -0.941544065f,\n   -0.290284677f, -0.956940336f,\n   -0.242980180f, -0.970031253f,\n   -0.195090322f, -0.980785280f,\n   -0.146730474f, -0.989176510f,\n   -0.098017140f, -0.995184727f,\n   -0.049067674f, -0.998795456f,\n   -0.000000000f, -1.000000000f,\n    0.049067674f, -0.998795456f,\n    0.098017140f, -0.995184727f,\n    0.146730474f, -0.989176510f,\n    0.195090322f, -0.980785280f,\n    0.242980180f, -0.970031253f,\n    0.290284677f, -0.956940336f,\n    0.336889853f, -0.941544065f,\n    0.382683432f, -0.923879533f,\n    0.427555093f, -0.903989293f,\n    0.471396737f, -0.881921264f,\n    0.514102744f, -0.857728610f,\n    0.555570233f, -0.831469612f,\n    0.595699304f, -0.803207531f,\n    0.634393284f, -0.773010453f,\n    0.671558955f, -0.740951125f,\n    0.707106781f, -0.707106781f,\n    0.740951125f, -0.671558955f,\n    0.773010453f, -0.634393284f,\n    0.803207531f, -0.595699304f,\n    0.831469612f, -0.555570233f,\n    0.857728610f, -0.514102744f,\n    0.881921264f, -0.471396737f,\n    0.903989293f, -0.427555093f,\n    0.923879533f, -0.382683432f,\n    0.941544065f, -0.336889853f,\n    0.956940336f, -0.290284677f,\n    0.970031253f, -0.242980180f,\n    0.980785280f, -0.195090322f,\n    0.989176510f, -0.146730474f,\n    0.995184727f, -0.098017140f,\n    0.998795456f, -0.049067674f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_256)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for(i = 0; i< N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 256, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_256[512] = {\n    1.000000000f,  0.000000000f,\n    0.999698819f,  0.024541229f,\n    0.998795456f,  0.049067674f,\n    0.997290457f,  0.073564564f,\n    0.995184727f,  0.098017140f,\n    0.992479535f,  0.122410675f,\n    0.989176510f,  0.146730474f,\n    0.985277642f,  0.170961889f,\n    0.980785280f,  0.195090322f,\n    0.975702130f,  0.219101240f,\n    0.970031253f,  0.242980180f,\n    0.963776066f,  0.266712757f,\n    0.956940336f,  0.290284677f,\n    0.949528181f,  0.313681740f,\n    0.941544065f,  0.336889853f,\n    0.932992799f,  0.359895037f,\n    0.923879533f,  0.382683432f,\n    0.914209756f,  0.405241314f,\n    0.903989293f,  0.427555093f,\n    0.893224301f,  0.449611330f,\n    0.881921264f,  0.471396737f,\n    0.870086991f,  0.492898192f,\n    0.857728610f,  0.514102744f,\n    0.844853565f,  0.534997620f,\n    0.831469612f,  0.555570233f,\n    0.817584813f,  0.575808191f,\n    0.803207531f,  0.595699304f,\n    0.788346428f,  0.615231591f,\n    0.773010453f,  0.634393284f,\n    0.757208847f,  0.653172843f,\n    0.740951125f,  0.671558955f,\n    0.724247083f,  0.689540545f,\n    0.707106781f,  0.707106781f,\n    0.689540545f,  0.724247083f,\n    0.671558955f,  0.740951125f,\n    0.653172843f,  0.757208847f,\n    0.634393284f,  0.773010453f,\n    0.615231591f,  0.788346428f,\n    0.595699304f,  0.803207531f,\n    0.575808191f,  0.817584813f,\n    0.555570233f,  0.831469612f,\n    0.534997620f,  0.844853565f,\n    0.514102744f,  0.857728610f,\n    0.492898192f,  0.870086991f,\n    0.471396737f,  0.881921264f,\n    0.449611330f,  0.893224301f,\n    0.427555093f,  0.903989293f,\n    0.405241314f,  0.914209756f,\n    0.382683432f,  0.923879533f,\n    0.359895037f,  0.932992799f,\n    0.336889853f,  0.941544065f,\n    0.313681740f,  0.949528181f,\n    0.290284677f,  0.956940336f,\n    0.266712757f,  0.963776066f,\n    0.242980180f,  0.970031253f,\n    0.219101240f,  0.975702130f,\n    0.195090322f,  0.980785280f,\n    0.170961889f,  0.985277642f,\n    0.146730474f,  0.989176510f,\n    0.122410675f,  0.992479535f,\n    0.098017140f,  0.995184727f,\n    0.073564564f,  0.997290457f,\n    0.049067674f,  0.998795456f,\n    0.024541229f,  0.999698819f,\n    0.000000000f,  1.000000000f,\n   -0.024541229f,  0.999698819f,\n   -0.049067674f,  0.998795456f,\n   -0.073564564f,  0.997290457f,\n   -0.098017140f,  0.995184727f,\n   -0.122410675f,  0.992479535f,\n   -0.146730474f,  0.989176510f,\n   -0.170961889f,  0.985277642f,\n   -0.195090322f,  0.980785280f,\n   -0.219101240f,  0.975702130f,\n   -0.242980180f,  0.970031253f,\n   -0.266712757f,  0.963776066f,\n   -0.290284677f,  0.956940336f,\n   -0.313681740f,  0.949528181f,\n   -0.336889853f,  0.941544065f,\n   -0.359895037f,  0.932992799f,\n   -0.382683432f,  0.923879533f,\n   -0.405241314f,  0.914209756f,\n   -0.427555093f,  0.903989293f,\n   -0.449611330f,  0.893224301f,\n   -0.471396737f,  0.881921264f,\n   -0.492898192f,  0.870086991f,\n   -0.514102744f,  0.857728610f,\n   -0.534997620f,  0.844853565f,\n   -0.555570233f,  0.831469612f,\n   -0.575808191f,  0.817584813f,\n   -0.595699304f,  0.803207531f,\n   -0.615231591f,  0.788346428f,\n   -0.634393284f,  0.773010453f,\n   -0.653172843f,  0.757208847f,\n   -0.671558955f,  0.740951125f,\n   -0.689540545f,  0.724247083f,\n   -0.707106781f,  0.707106781f,\n   -0.724247083f,  0.689540545f,\n   -0.740951125f,  0.671558955f,\n   -0.757208847f,  0.653172843f,\n   -0.773010453f,  0.634393284f,\n   -0.788346428f,  0.615231591f,\n   -0.803207531f,  0.595699304f,\n   -0.817584813f,  0.575808191f,\n   -0.831469612f,  0.555570233f,\n   -0.844853565f,  0.534997620f,\n   -0.857728610f,  0.514102744f,\n   -0.870086991f,  0.492898192f,\n   -0.881921264f,  0.471396737f,\n   -0.893224301f,  0.449611330f,\n   -0.903989293f,  0.427555093f,\n   -0.914209756f,  0.405241314f,\n   -0.923879533f,  0.382683432f,\n   -0.932992799f,  0.359895037f,\n   -0.941544065f,  0.336889853f,\n   -0.949528181f,  0.313681740f,\n   -0.956940336f,  0.290284677f,\n   -0.963776066f,  0.266712757f,\n   -0.970031253f,  0.242980180f,\n   -0.975702130f,  0.219101240f,\n   -0.980785280f,  0.195090322f,\n   -0.985277642f,  0.170961889f,\n   -0.989176510f,  0.146730474f,\n   -0.992479535f,  0.122410675f,\n   -0.995184727f,  0.098017140f,\n   -0.997290457f,  0.073564564f,\n   -0.998795456f,  0.049067674f,\n   -0.999698819f,  0.024541229f,\n   -1.000000000f,  0.000000000f,\n   -0.999698819f, -0.024541229f,\n   -0.998795456f, -0.049067674f,\n   -0.997290457f, -0.073564564f,\n   -0.995184727f, -0.098017140f,\n   -0.992479535f, -0.122410675f,\n   -0.989176510f, -0.146730474f,\n   -0.985277642f, -0.170961889f,\n   -0.980785280f, -0.195090322f,\n   -0.975702130f, -0.219101240f,\n   -0.970031253f, -0.242980180f,\n   -0.963776066f, -0.266712757f,\n   -0.956940336f, -0.290284677f,\n   -0.949528181f, -0.313681740f,\n   -0.941544065f, -0.336889853f,\n   -0.932992799f, -0.359895037f,\n   -0.923879533f, -0.382683432f,\n   -0.914209756f, -0.405241314f,\n   -0.903989293f, -0.427555093f,\n   -0.893224301f, -0.449611330f,\n   -0.881921264f, -0.471396737f,\n   -0.870086991f, -0.492898192f,\n   -0.857728610f, -0.514102744f,\n   -0.844853565f, -0.534997620f,\n   -0.831469612f, -0.555570233f,\n   -0.817584813f, -0.575808191f,\n   -0.803207531f, -0.595699304f,\n   -0.788346428f, -0.615231591f,\n   -0.773010453f, -0.634393284f,\n   -0.757208847f, -0.653172843f,\n   -0.740951125f, -0.671558955f,\n   -0.724247083f, -0.689540545f,\n   -0.707106781f, -0.707106781f,\n   -0.689540545f, -0.724247083f,\n   -0.671558955f, -0.740951125f,\n   -0.653172843f, -0.757208847f,\n   -0.634393284f, -0.773010453f,\n   -0.615231591f, -0.788346428f,\n   -0.595699304f, -0.803207531f,\n   -0.575808191f, -0.817584813f,\n   -0.555570233f, -0.831469612f,\n   -0.534997620f, -0.844853565f,\n   -0.514102744f, -0.857728610f,\n   -0.492898192f, -0.870086991f,\n   -0.471396737f, -0.881921264f,\n   -0.449611330f, -0.893224301f,\n   -0.427555093f, -0.903989293f,\n   -0.405241314f, -0.914209756f,\n   -0.382683432f, -0.923879533f,\n   -0.359895037f, -0.932992799f,\n   -0.336889853f, -0.941544065f,\n   -0.313681740f, -0.949528181f,\n   -0.290284677f, -0.956940336f,\n   -0.266712757f, -0.963776066f,\n   -0.242980180f, -0.970031253f,\n   -0.219101240f, -0.975702130f,\n   -0.195090322f, -0.980785280f,\n   -0.170961889f, -0.985277642f,\n   -0.146730474f, -0.989176510f,\n   -0.122410675f, -0.992479535f,\n   -0.098017140f, -0.995184727f,\n   -0.073564564f, -0.997290457f,\n   -0.049067674f, -0.998795456f,\n   -0.024541229f, -0.999698819f,\n   -0.000000000f, -1.000000000f,\n    0.024541229f, -0.999698819f,\n    0.049067674f, -0.998795456f,\n    0.073564564f, -0.997290457f,\n    0.098017140f, -0.995184727f,\n    0.122410675f, -0.992479535f,\n    0.146730474f, -0.989176510f,\n    0.170961889f, -0.985277642f,\n    0.195090322f, -0.980785280f,\n    0.219101240f, -0.975702130f,\n    0.242980180f, -0.970031253f,\n    0.266712757f, -0.963776066f,\n    0.290284677f, -0.956940336f,\n    0.313681740f, -0.949528181f,\n    0.336889853f, -0.941544065f,\n    0.359895037f, -0.932992799f,\n    0.382683432f, -0.923879533f,\n    0.405241314f, -0.914209756f,\n    0.427555093f, -0.903989293f,\n    0.449611330f, -0.893224301f,\n    0.471396737f, -0.881921264f,\n    0.492898192f, -0.870086991f,\n    0.514102744f, -0.857728610f,\n    0.534997620f, -0.844853565f,\n    0.555570233f, -0.831469612f,\n    0.575808191f, -0.817584813f,\n    0.595699304f, -0.803207531f,\n    0.615231591f, -0.788346428f,\n    0.634393284f, -0.773010453f,\n    0.653172843f, -0.757208847f,\n    0.671558955f, -0.740951125f,\n    0.689540545f, -0.724247083f,\n    0.707106781f, -0.707106781f,\n    0.724247083f, -0.689540545f,\n    0.740951125f, -0.671558955f,\n    0.757208847f, -0.653172843f,\n    0.773010453f, -0.634393284f,\n    0.788346428f, -0.615231591f,\n    0.803207531f, -0.595699304f,\n    0.817584813f, -0.575808191f,\n    0.831469612f, -0.555570233f,\n    0.844853565f, -0.534997620f,\n    0.857728610f, -0.514102744f,\n    0.870086991f, -0.492898192f,\n    0.881921264f, -0.471396737f,\n    0.893224301f, -0.449611330f,\n    0.903989293f, -0.427555093f,\n    0.914209756f, -0.405241314f,\n    0.923879533f, -0.382683432f,\n    0.932992799f, -0.359895037f,\n    0.941544065f, -0.336889853f,\n    0.949528181f, -0.313681740f,\n    0.956940336f, -0.290284677f,\n    0.963776066f, -0.266712757f,\n    0.970031253f, -0.242980180f,\n    0.975702130f, -0.219101240f,\n    0.980785280f, -0.195090322f,\n    0.985277642f, -0.170961889f,\n    0.989176510f, -0.146730474f,\n    0.992479535f, -0.122410675f,\n    0.995184727f, -0.098017140f,\n    0.997290457f, -0.073564564f,\n    0.998795456f, -0.049067674f,\n    0.999698819f, -0.024541229f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_512)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for (i = 0; i< N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 512, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_512[1024] = {\n    1.000000000f,  0.000000000f,\n    0.999924702f,  0.012271538f,\n    0.999698819f,  0.024541229f,\n    0.999322385f,  0.036807223f,\n    0.998795456f,  0.049067674f,\n    0.998118113f,  0.061320736f,\n    0.997290457f,  0.073564564f,\n    0.996312612f,  0.085797312f,\n    0.995184727f,  0.098017140f,\n    0.993906970f,  0.110222207f,\n    0.992479535f,  0.122410675f,\n    0.990902635f,  0.134580709f,\n    0.989176510f,  0.146730474f,\n    0.987301418f,  0.158858143f,\n    0.985277642f,  0.170961889f,\n    0.983105487f,  0.183039888f,\n    0.980785280f,  0.195090322f,\n    0.978317371f,  0.207111376f,\n    0.975702130f,  0.219101240f,\n    0.972939952f,  0.231058108f,\n    0.970031253f,  0.242980180f,\n    0.966976471f,  0.254865660f,\n    0.963776066f,  0.266712757f,\n    0.960430519f,  0.278519689f,\n    0.956940336f,  0.290284677f,\n    0.953306040f,  0.302005949f,\n    0.949528181f,  0.313681740f,\n    0.945607325f,  0.325310292f,\n    0.941544065f,  0.336889853f,\n    0.937339012f,  0.348418680f,\n    0.932992799f,  0.359895037f,\n    0.928506080f,  0.371317194f,\n    0.923879533f,  0.382683432f,\n    0.919113852f,  0.393992040f,\n    0.914209756f,  0.405241314f,\n    0.909167983f,  0.416429560f,\n    0.903989293f,  0.427555093f,\n    0.898674466f,  0.438616239f,\n    0.893224301f,  0.449611330f,\n    0.887639620f,  0.460538711f,\n    0.881921264f,  0.471396737f,\n    0.876070094f,  0.482183772f,\n    0.870086991f,  0.492898192f,\n    0.863972856f,  0.503538384f,\n    0.857728610f,  0.514102744f,\n    0.851355193f,  0.524589683f,\n    0.844853565f,  0.534997620f,\n    0.838224706f,  0.545324988f,\n    0.831469612f,  0.555570233f,\n    0.824589303f,  0.565731811f,\n    0.817584813f,  0.575808191f,\n    0.810457198f,  0.585797857f,\n    0.803207531f,  0.595699304f,\n    0.795836905f,  0.605511041f,\n    0.788346428f,  0.615231591f,\n    0.780737229f,  0.624859488f,\n    0.773010453f,  0.634393284f,\n    0.765167266f,  0.643831543f,\n    0.757208847f,  0.653172843f,\n    0.749136395f,  0.662415778f,\n    0.740951125f,  0.671558955f,\n    0.732654272f,  0.680600998f,\n    0.724247083f,  0.689540545f,\n    0.715730825f,  0.698376249f,\n    0.707106781f,  0.707106781f,\n    0.698376249f,  0.715730825f,\n    0.689540545f,  0.724247083f,\n    0.680600998f,  0.732654272f,\n    0.671558955f,  0.740951125f,\n    0.662415778f,  0.749136395f,\n    0.653172843f,  0.757208847f,\n    0.643831543f,  0.765167266f,\n    0.634393284f,  0.773010453f,\n    0.624859488f,  0.780737229f,\n    0.615231591f,  0.788346428f,\n    0.605511041f,  0.795836905f,\n    0.595699304f,  0.803207531f,\n    0.585797857f,  0.810457198f,\n    0.575808191f,  0.817584813f,\n    0.565731811f,  0.824589303f,\n    0.555570233f,  0.831469612f,\n    0.545324988f,  0.838224706f,\n    0.534997620f,  0.844853565f,\n    0.524589683f,  0.851355193f,\n    0.514102744f,  0.857728610f,\n    0.503538384f,  0.863972856f,\n    0.492898192f,  0.870086991f,\n    0.482183772f,  0.876070094f,\n    0.471396737f,  0.881921264f,\n    0.460538711f,  0.887639620f,\n    0.449611330f,  0.893224301f,\n    0.438616239f,  0.898674466f,\n    0.427555093f,  0.903989293f,\n    0.416429560f,  0.909167983f,\n    0.405241314f,  0.914209756f,\n    0.393992040f,  0.919113852f,\n    0.382683432f,  0.923879533f,\n    0.371317194f,  0.928506080f,\n    0.359895037f,  0.932992799f,\n    0.348418680f,  0.937339012f,\n    0.336889853f,  0.941544065f,\n    0.325310292f,  0.945607325f,\n    0.313681740f,  0.949528181f,\n    0.302005949f,  0.953306040f,\n    0.290284677f,  0.956940336f,\n    0.278519689f,  0.960430519f,\n    0.266712757f,  0.963776066f,\n    0.254865660f,  0.966976471f,\n    0.242980180f,  0.970031253f,\n    0.231058108f,  0.972939952f,\n    0.219101240f,  0.975702130f,\n    0.207111376f,  0.978317371f,\n    0.195090322f,  0.980785280f,\n    0.183039888f,  0.983105487f,\n    0.170961889f,  0.985277642f,\n    0.158858143f,  0.987301418f,\n    0.146730474f,  0.989176510f,\n    0.134580709f,  0.990902635f,\n    0.122410675f,  0.992479535f,\n    0.110222207f,  0.993906970f,\n    0.098017140f,  0.995184727f,\n    0.085797312f,  0.996312612f,\n    0.073564564f,  0.997290457f,\n    0.061320736f,  0.998118113f,\n    0.049067674f,  0.998795456f,\n    0.036807223f,  0.999322385f,\n    0.024541229f,  0.999698819f,\n    0.012271538f,  0.999924702f,\n    0.000000000f,  1.000000000f,\n   -0.012271538f,  0.999924702f,\n   -0.024541229f,  0.999698819f,\n   -0.036807223f,  0.999322385f,\n   -0.049067674f,  0.998795456f,\n   -0.061320736f,  0.998118113f,\n   -0.073564564f,  0.997290457f,\n   -0.085797312f,  0.996312612f,\n   -0.098017140f,  0.995184727f,\n   -0.110222207f,  0.993906970f,\n   -0.122410675f,  0.992479535f,\n   -0.134580709f,  0.990902635f,\n   -0.146730474f,  0.989176510f,\n   -0.158858143f,  0.987301418f,\n   -0.170961889f,  0.985277642f,\n   -0.183039888f,  0.983105487f,\n   -0.195090322f,  0.980785280f,\n   -0.207111376f,  0.978317371f,\n   -0.219101240f,  0.975702130f,\n   -0.231058108f,  0.972939952f,\n   -0.242980180f,  0.970031253f,\n   -0.254865660f,  0.966976471f,\n   -0.266712757f,  0.963776066f,\n   -0.278519689f,  0.960430519f,\n   -0.290284677f,  0.956940336f,\n   -0.302005949f,  0.953306040f,\n   -0.313681740f,  0.949528181f,\n   -0.325310292f,  0.945607325f,\n   -0.336889853f,  0.941544065f,\n   -0.348418680f,  0.937339012f,\n   -0.359895037f,  0.932992799f,\n   -0.371317194f,  0.928506080f,\n   -0.382683432f,  0.923879533f,\n   -0.393992040f,  0.919113852f,\n   -0.405241314f,  0.914209756f,\n   -0.416429560f,  0.909167983f,\n   -0.427555093f,  0.903989293f,\n   -0.438616239f,  0.898674466f,\n   -0.449611330f,  0.893224301f,\n   -0.460538711f,  0.887639620f,\n   -0.471396737f,  0.881921264f,\n   -0.482183772f,  0.876070094f,\n   -0.492898192f,  0.870086991f,\n   -0.503538384f,  0.863972856f,\n   -0.514102744f,  0.857728610f,\n   -0.524589683f,  0.851355193f,\n   -0.534997620f,  0.844853565f,\n   -0.545324988f,  0.838224706f,\n   -0.555570233f,  0.831469612f,\n   -0.565731811f,  0.824589303f,\n   -0.575808191f,  0.817584813f,\n   -0.585797857f,  0.810457198f,\n   -0.595699304f,  0.803207531f,\n   -0.605511041f,  0.795836905f,\n   -0.615231591f,  0.788346428f,\n   -0.624859488f,  0.780737229f,\n   -0.634393284f,  0.773010453f,\n   -0.643831543f,  0.765167266f,\n   -0.653172843f,  0.757208847f,\n   -0.662415778f,  0.749136395f,\n   -0.671558955f,  0.740951125f,\n   -0.680600998f,  0.732654272f,\n   -0.689540545f,  0.724247083f,\n   -0.698376249f,  0.715730825f,\n   -0.707106781f,  0.707106781f,\n   -0.715730825f,  0.698376249f,\n   -0.724247083f,  0.689540545f,\n   -0.732654272f,  0.680600998f,\n   -0.740951125f,  0.671558955f,\n   -0.749136395f,  0.662415778f,\n   -0.757208847f,  0.653172843f,\n   -0.765167266f,  0.643831543f,\n   -0.773010453f,  0.634393284f,\n   -0.780737229f,  0.624859488f,\n   -0.788346428f,  0.615231591f,\n   -0.795836905f,  0.605511041f,\n   -0.803207531f,  0.595699304f,\n   -0.810457198f,  0.585797857f,\n   -0.817584813f,  0.575808191f,\n   -0.824589303f,  0.565731811f,\n   -0.831469612f,  0.555570233f,\n   -0.838224706f,  0.545324988f,\n   -0.844853565f,  0.534997620f,\n   -0.851355193f,  0.524589683f,\n   -0.857728610f,  0.514102744f,\n   -0.863972856f,  0.503538384f,\n   -0.870086991f,  0.492898192f,\n   -0.876070094f,  0.482183772f,\n   -0.881921264f,  0.471396737f,\n   -0.887639620f,  0.460538711f,\n   -0.893224301f,  0.449611330f,\n   -0.898674466f,  0.438616239f,\n   -0.903989293f,  0.427555093f,\n   -0.909167983f,  0.416429560f,\n   -0.914209756f,  0.405241314f,\n   -0.919113852f,  0.393992040f,\n   -0.923879533f,  0.382683432f,\n   -0.928506080f,  0.371317194f,\n   -0.932992799f,  0.359895037f,\n   -0.937339012f,  0.348418680f,\n   -0.941544065f,  0.336889853f,\n   -0.945607325f,  0.325310292f,\n   -0.949528181f,  0.313681740f,\n   -0.953306040f,  0.302005949f,\n   -0.956940336f,  0.290284677f,\n   -0.960430519f,  0.278519689f,\n   -0.963776066f,  0.266712757f,\n   -0.966976471f,  0.254865660f,\n   -0.970031253f,  0.242980180f,\n   -0.972939952f,  0.231058108f,\n   -0.975702130f,  0.219101240f,\n   -0.978317371f,  0.207111376f,\n   -0.980785280f,  0.195090322f,\n   -0.983105487f,  0.183039888f,\n   -0.985277642f,  0.170961889f,\n   -0.987301418f,  0.158858143f,\n   -0.989176510f,  0.146730474f,\n   -0.990902635f,  0.134580709f,\n   -0.992479535f,  0.122410675f,\n   -0.993906970f,  0.110222207f,\n   -0.995184727f,  0.098017140f,\n   -0.996312612f,  0.085797312f,\n   -0.997290457f,  0.073564564f,\n   -0.998118113f,  0.061320736f,\n   -0.998795456f,  0.049067674f,\n   -0.999322385f,  0.036807223f,\n   -0.999698819f,  0.024541229f,\n   -0.999924702f,  0.012271538f,\n   -1.000000000f,  0.000000000f,\n   -0.999924702f, -0.012271538f,\n   -0.999698819f, -0.024541229f,\n   -0.999322385f, -0.036807223f,\n   -0.998795456f, -0.049067674f,\n   -0.998118113f, -0.061320736f,\n   -0.997290457f, -0.073564564f,\n   -0.996312612f, -0.085797312f,\n   -0.995184727f, -0.098017140f,\n   -0.993906970f, -0.110222207f,\n   -0.992479535f, -0.122410675f,\n   -0.990902635f, -0.134580709f,\n   -0.989176510f, -0.146730474f,\n   -0.987301418f, -0.158858143f,\n   -0.985277642f, -0.170961889f,\n   -0.983105487f, -0.183039888f,\n   -0.980785280f, -0.195090322f,\n   -0.978317371f, -0.207111376f,\n   -0.975702130f, -0.219101240f,\n   -0.972939952f, -0.231058108f,\n   -0.970031253f, -0.242980180f,\n   -0.966976471f, -0.254865660f,\n   -0.963776066f, -0.266712757f,\n   -0.960430519f, -0.278519689f,\n   -0.956940336f, -0.290284677f,\n   -0.953306040f, -0.302005949f,\n   -0.949528181f, -0.313681740f,\n   -0.945607325f, -0.325310292f,\n   -0.941544065f, -0.336889853f,\n   -0.937339012f, -0.348418680f,\n   -0.932992799f, -0.359895037f,\n   -0.928506080f, -0.371317194f,\n   -0.923879533f, -0.382683432f,\n   -0.919113852f, -0.393992040f,\n   -0.914209756f, -0.405241314f,\n   -0.909167983f, -0.416429560f,\n   -0.903989293f, -0.427555093f,\n   -0.898674466f, -0.438616239f,\n   -0.893224301f, -0.449611330f,\n   -0.887639620f, -0.460538711f,\n   -0.881921264f, -0.471396737f,\n   -0.876070094f, -0.482183772f,\n   -0.870086991f, -0.492898192f,\n   -0.863972856f, -0.503538384f,\n   -0.857728610f, -0.514102744f,\n   -0.851355193f, -0.524589683f,\n   -0.844853565f, -0.534997620f,\n   -0.838224706f, -0.545324988f,\n   -0.831469612f, -0.555570233f,\n   -0.824589303f, -0.565731811f,\n   -0.817584813f, -0.575808191f,\n   -0.810457198f, -0.585797857f,\n   -0.803207531f, -0.595699304f,\n   -0.795836905f, -0.605511041f,\n   -0.788346428f, -0.615231591f,\n   -0.780737229f, -0.624859488f,\n   -0.773010453f, -0.634393284f,\n   -0.765167266f, -0.643831543f,\n   -0.757208847f, -0.653172843f,\n   -0.749136395f, -0.662415778f,\n   -0.740951125f, -0.671558955f,\n   -0.732654272f, -0.680600998f,\n   -0.724247083f, -0.689540545f,\n   -0.715730825f, -0.698376249f,\n   -0.707106781f, -0.707106781f,\n   -0.698376249f, -0.715730825f,\n   -0.689540545f, -0.724247083f,\n   -0.680600998f, -0.732654272f,\n   -0.671558955f, -0.740951125f,\n   -0.662415778f, -0.749136395f,\n   -0.653172843f, -0.757208847f,\n   -0.643831543f, -0.765167266f,\n   -0.634393284f, -0.773010453f,\n   -0.624859488f, -0.780737229f,\n   -0.615231591f, -0.788346428f,\n   -0.605511041f, -0.795836905f,\n   -0.595699304f, -0.803207531f,\n   -0.585797857f, -0.810457198f,\n   -0.575808191f, -0.817584813f,\n   -0.565731811f, -0.824589303f,\n   -0.555570233f, -0.831469612f,\n   -0.545324988f, -0.838224706f,\n   -0.534997620f, -0.844853565f,\n   -0.524589683f, -0.851355193f,\n   -0.514102744f, -0.857728610f,\n   -0.503538384f, -0.863972856f,\n   -0.492898192f, -0.870086991f,\n   -0.482183772f, -0.876070094f,\n   -0.471396737f, -0.881921264f,\n   -0.460538711f, -0.887639620f,\n   -0.449611330f, -0.893224301f,\n   -0.438616239f, -0.898674466f,\n   -0.427555093f, -0.903989293f,\n   -0.416429560f, -0.909167983f,\n   -0.405241314f, -0.914209756f,\n   -0.393992040f, -0.919113852f,\n   -0.382683432f, -0.923879533f,\n   -0.371317194f, -0.928506080f,\n   -0.359895037f, -0.932992799f,\n   -0.348418680f, -0.937339012f,\n   -0.336889853f, -0.941544065f,\n   -0.325310292f, -0.945607325f,\n   -0.313681740f, -0.949528181f,\n   -0.302005949f, -0.953306040f,\n   -0.290284677f, -0.956940336f,\n   -0.278519689f, -0.960430519f,\n   -0.266712757f, -0.963776066f,\n   -0.254865660f, -0.966976471f,\n   -0.242980180f, -0.970031253f,\n   -0.231058108f, -0.972939952f,\n   -0.219101240f, -0.975702130f,\n   -0.207111376f, -0.978317371f,\n   -0.195090322f, -0.980785280f,\n   -0.183039888f, -0.983105487f,\n   -0.170961889f, -0.985277642f,\n   -0.158858143f, -0.987301418f,\n   -0.146730474f, -0.989176510f,\n   -0.134580709f, -0.990902635f,\n   -0.122410675f, -0.992479535f,\n   -0.110222207f, -0.993906970f,\n   -0.098017140f, -0.995184727f,\n   -0.085797312f, -0.996312612f,\n   -0.073564564f, -0.997290457f,\n   -0.061320736f, -0.998118113f,\n   -0.049067674f, -0.998795456f,\n   -0.036807223f, -0.999322385f,\n   -0.024541229f, -0.999698819f,\n   -0.012271538f, -0.999924702f,\n   -0.000000000f, -1.000000000f,\n    0.012271538f, -0.999924702f,\n    0.024541229f, -0.999698819f,\n    0.036807223f, -0.999322385f,\n    0.049067674f, -0.998795456f,\n    0.061320736f, -0.998118113f,\n    0.073564564f, -0.997290457f,\n    0.085797312f, -0.996312612f,\n    0.098017140f, -0.995184727f,\n    0.110222207f, -0.993906970f,\n    0.122410675f, -0.992479535f,\n    0.134580709f, -0.990902635f,\n    0.146730474f, -0.989176510f,\n    0.158858143f, -0.987301418f,\n    0.170961889f, -0.985277642f,\n    0.183039888f, -0.983105487f,\n    0.195090322f, -0.980785280f,\n    0.207111376f, -0.978317371f,\n    0.219101240f, -0.975702130f,\n    0.231058108f, -0.972939952f,\n    0.242980180f, -0.970031253f,\n    0.254865660f, -0.966976471f,\n    0.266712757f, -0.963776066f,\n    0.278519689f, -0.960430519f,\n    0.290284677f, -0.956940336f,\n    0.302005949f, -0.953306040f,\n    0.313681740f, -0.949528181f,\n    0.325310292f, -0.945607325f,\n    0.336889853f, -0.941544065f,\n    0.348418680f, -0.937339012f,\n    0.359895037f, -0.932992799f,\n    0.371317194f, -0.928506080f,\n    0.382683432f, -0.923879533f,\n    0.393992040f, -0.919113852f,\n    0.405241314f, -0.914209756f,\n    0.416429560f, -0.909167983f,\n    0.427555093f, -0.903989293f,\n    0.438616239f, -0.898674466f,\n    0.449611330f, -0.893224301f,\n    0.460538711f, -0.887639620f,\n    0.471396737f, -0.881921264f,\n    0.482183772f, -0.876070094f,\n    0.492898192f, -0.870086991f,\n    0.503538384f, -0.863972856f,\n    0.514102744f, -0.857728610f,\n    0.524589683f, -0.851355193f,\n    0.534997620f, -0.844853565f,\n    0.545324988f, -0.838224706f,\n    0.555570233f, -0.831469612f,\n    0.565731811f, -0.824589303f,\n    0.575808191f, -0.817584813f,\n    0.585797857f, -0.810457198f,\n    0.595699304f, -0.803207531f,\n    0.605511041f, -0.795836905f,\n    0.615231591f, -0.788346428f,\n    0.624859488f, -0.780737229f,\n    0.634393284f, -0.773010453f,\n    0.643831543f, -0.765167266f,\n    0.653172843f, -0.757208847f,\n    0.662415778f, -0.749136395f,\n    0.671558955f, -0.740951125f,\n    0.680600998f, -0.732654272f,\n    0.689540545f, -0.724247083f,\n    0.698376249f, -0.715730825f,\n    0.707106781f, -0.707106781f,\n    0.715730825f, -0.698376249f,\n    0.724247083f, -0.689540545f,\n    0.732654272f, -0.680600998f,\n    0.740951125f, -0.671558955f,\n    0.749136395f, -0.662415778f,\n    0.757208847f, -0.653172843f,\n    0.765167266f, -0.643831543f,\n    0.773010453f, -0.634393284f,\n    0.780737229f, -0.624859488f,\n    0.788346428f, -0.615231591f,\n    0.795836905f, -0.605511041f,\n    0.803207531f, -0.595699304f,\n    0.810457198f, -0.585797857f,\n    0.817584813f, -0.575808191f,\n    0.824589303f, -0.565731811f,\n    0.831469612f, -0.555570233f,\n    0.838224706f, -0.545324988f,\n    0.844853565f, -0.534997620f,\n    0.851355193f, -0.524589683f,\n    0.857728610f, -0.514102744f,\n    0.863972856f, -0.503538384f,\n    0.870086991f, -0.492898192f,\n    0.876070094f, -0.482183772f,\n    0.881921264f, -0.471396737f,\n    0.887639620f, -0.460538711f,\n    0.893224301f, -0.449611330f,\n    0.898674466f, -0.438616239f,\n    0.903989293f, -0.427555093f,\n    0.909167983f, -0.416429560f,\n    0.914209756f, -0.405241314f,\n    0.919113852f, -0.393992040f,\n    0.923879533f, -0.382683432f,\n    0.928506080f, -0.371317194f,\n    0.932992799f, -0.359895037f,\n    0.937339012f, -0.348418680f,\n    0.941544065f, -0.336889853f,\n    0.945607325f, -0.325310292f,\n    0.949528181f, -0.313681740f,\n    0.953306040f, -0.302005949f,\n    0.956940336f, -0.290284677f,\n    0.960430519f, -0.278519689f,\n    0.963776066f, -0.266712757f,\n    0.966976471f, -0.254865660f,\n    0.970031253f, -0.242980180f,\n    0.972939952f, -0.231058108f,\n    0.975702130f, -0.219101240f,\n    0.978317371f, -0.207111376f,\n    0.980785280f, -0.195090322f,\n    0.983105487f, -0.183039888f,\n    0.985277642f, -0.170961889f,\n    0.987301418f, -0.158858143f,\n    0.989176510f, -0.146730474f,\n    0.990902635f, -0.134580709f,\n    0.992479535f, -0.122410675f,\n    0.993906970f, -0.110222207f,\n    0.995184727f, -0.098017140f,\n    0.996312612f, -0.085797312f,\n    0.997290457f, -0.073564564f,\n    0.998118113f, -0.061320736f,\n    0.998795456f, -0.049067674f,\n    0.999322385f, -0.036807223f,\n    0.999698819f, -0.024541229f,\n    0.999924702f, -0.012271538f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_1024)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for (i = 0; i< N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 1024, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_1024[2048] = {\n    1.000000000f,  0.000000000f,\n    0.999981175f,  0.006135885f,\n    0.999924702f,  0.012271538f,\n    0.999830582f,  0.018406730f,\n    0.999698819f,  0.024541229f,\n    0.999529418f,  0.030674803f,\n    0.999322385f,  0.036807223f,\n    0.999077728f,  0.042938257f,\n    0.998795456f,  0.049067674f,\n    0.998475581f,  0.055195244f,\n    0.998118113f,  0.061320736f,\n    0.997723067f,  0.067443920f,\n    0.997290457f,  0.073564564f,\n    0.996820299f,  0.079682438f,\n    0.996312612f,  0.085797312f,\n    0.995767414f,  0.091908956f,\n    0.995184727f,  0.098017140f,\n    0.994564571f,  0.104121634f,\n    0.993906970f,  0.110222207f,\n    0.993211949f,  0.116318631f,\n    0.992479535f,  0.122410675f,\n    0.991709754f,  0.128498111f,\n    0.990902635f,  0.134580709f,\n    0.990058210f,  0.140658239f,\n    0.989176510f,  0.146730474f,\n    0.988257568f,  0.152797185f,\n    0.987301418f,  0.158858143f,\n    0.986308097f,  0.164913120f,\n    0.985277642f,  0.170961889f,\n    0.984210092f,  0.177004220f,\n    0.983105487f,  0.183039888f,\n    0.981963869f,  0.189068664f,\n    0.980785280f,  0.195090322f,\n    0.979569766f,  0.201104635f,\n    0.978317371f,  0.207111376f,\n    0.977028143f,  0.213110320f,\n    0.975702130f,  0.219101240f,\n    0.974339383f,  0.225083911f,\n    0.972939952f,  0.231058108f,\n    0.971503891f,  0.237023606f,\n    0.970031253f,  0.242980180f,\n    0.968522094f,  0.248927606f,\n    0.966976471f,  0.254865660f,\n    0.965394442f,  0.260794118f,\n    0.963776066f,  0.266712757f,\n    0.962121404f,  0.272621355f,\n    0.960430519f,  0.278519689f,\n    0.958703475f,  0.284407537f,\n    0.956940336f,  0.290284677f,\n    0.955141168f,  0.296150888f,\n    0.953306040f,  0.302005949f,\n    0.951435021f,  0.307849640f,\n    0.949528181f,  0.313681740f,\n    0.947585591f,  0.319502031f,\n    0.945607325f,  0.325310292f,\n    0.943593458f,  0.331106306f,\n    0.941544065f,  0.336889853f,\n    0.939459224f,  0.342660717f,\n    0.937339012f,  0.348418680f,\n    0.935183510f,  0.354163525f,\n    0.932992799f,  0.359895037f,\n    0.930766961f,  0.365612998f,\n    0.928506080f,  0.371317194f,\n    0.926210242f,  0.377007410f,\n    0.923879533f,  0.382683432f,\n    0.921514039f,  0.388345047f,\n    0.919113852f,  0.393992040f,\n    0.916679060f,  0.399624200f,\n    0.914209756f,  0.405241314f,\n    0.911706032f,  0.410843171f,\n    0.909167983f,  0.416429560f,\n    0.906595705f,  0.422000271f,\n    0.903989293f,  0.427555093f,\n    0.901348847f,  0.433093819f,\n    0.898674466f,  0.438616239f,\n    0.895966250f,  0.444122145f,\n    0.893224301f,  0.449611330f,\n    0.890448723f,  0.455083587f,\n    0.887639620f,  0.460538711f,\n    0.884797098f,  0.465976496f,\n    0.881921264f,  0.471396737f,\n    0.879012226f,  0.476799230f,\n    0.876070094f,  0.482183772f,\n    0.873094978f,  0.487550160f,\n    0.870086991f,  0.492898192f,\n    0.867046246f,  0.498227667f,\n    0.863972856f,  0.503538384f,\n    0.860866939f,  0.508830143f,\n    0.857728610f,  0.514102744f,\n    0.854557988f,  0.519355990f,\n    0.851355193f,  0.524589683f,\n    0.848120345f,  0.529803625f,\n    0.844853565f,  0.534997620f,\n    0.841554977f,  0.540171473f,\n    0.838224706f,  0.545324988f,\n    0.834862875f,  0.550457973f,\n    0.831469612f,  0.555570233f,\n    0.828045045f,  0.560661576f,\n    0.824589303f,  0.565731811f,\n    0.821102515f,  0.570780746f,\n    0.817584813f,  0.575808191f,\n    0.814036330f,  0.580813958f,\n    0.810457198f,  0.585797857f,\n    0.806847554f,  0.590759702f,\n    0.803207531f,  0.595699304f,\n    0.799537269f,  0.600616479f,\n    0.795836905f,  0.605511041f,\n    0.792106577f,  0.610382806f,\n    0.788346428f,  0.615231591f,\n    0.784556597f,  0.620057212f,\n    0.780737229f,  0.624859488f,\n    0.776888466f,  0.629638239f,\n    0.773010453f,  0.634393284f,\n    0.769103338f,  0.639124445f,\n    0.765167266f,  0.643831543f,\n    0.761202385f,  0.648514401f,\n    0.757208847f,  0.653172843f,\n    0.753186799f,  0.657806693f,\n    0.749136395f,  0.662415778f,\n    0.745057785f,  0.666999922f,\n    0.740951125f,  0.671558955f,\n    0.736816569f,  0.676092704f,\n    0.732654272f,  0.680600998f,\n    0.728464390f,  0.685083668f,\n    0.724247083f,  0.689540545f,\n    0.720002508f,  0.693971461f,\n    0.715730825f,  0.698376249f,\n    0.711432196f,  0.702754744f,\n    0.707106781f,  0.707106781f,\n    0.702754744f,  0.711432196f,\n    0.698376249f,  0.715730825f,\n    0.693971461f,  0.720002508f,\n    0.689540545f,  0.724247083f,\n    0.685083668f,  0.728464390f,\n    0.680600998f,  0.732654272f,\n    0.676092704f,  0.736816569f,\n    0.671558955f,  0.740951125f,\n    0.666999922f,  0.745057785f,\n    0.662415778f,  0.749136395f,\n    0.657806693f,  0.753186799f,\n    0.653172843f,  0.757208847f,\n    0.648514401f,  0.761202385f,\n    0.643831543f,  0.765167266f,\n    0.639124445f,  0.769103338f,\n    0.634393284f,  0.773010453f,\n    0.629638239f,  0.776888466f,\n    0.624859488f,  0.780737229f,\n    0.620057212f,  0.784556597f,\n    0.615231591f,  0.788346428f,\n    0.610382806f,  0.792106577f,\n    0.605511041f,  0.795836905f,\n    0.600616479f,  0.799537269f,\n    0.595699304f,  0.803207531f,\n    0.590759702f,  0.806847554f,\n    0.585797857f,  0.810457198f,\n    0.580813958f,  0.814036330f,\n    0.575808191f,  0.817584813f,\n    0.570780746f,  0.821102515f,\n    0.565731811f,  0.824589303f,\n    0.560661576f,  0.828045045f,\n    0.555570233f,  0.831469612f,\n    0.550457973f,  0.834862875f,\n    0.545324988f,  0.838224706f,\n    0.540171473f,  0.841554977f,\n    0.534997620f,  0.844853565f,\n    0.529803625f,  0.848120345f,\n    0.524589683f,  0.851355193f,\n    0.519355990f,  0.854557988f,\n    0.514102744f,  0.857728610f,\n    0.508830143f,  0.860866939f,\n    0.503538384f,  0.863972856f,\n    0.498227667f,  0.867046246f,\n    0.492898192f,  0.870086991f,\n    0.487550160f,  0.873094978f,\n    0.482183772f,  0.876070094f,\n    0.476799230f,  0.879012226f,\n    0.471396737f,  0.881921264f,\n    0.465976496f,  0.884797098f,\n    0.460538711f,  0.887639620f,\n    0.455083587f,  0.890448723f,\n    0.449611330f,  0.893224301f,\n    0.444122145f,  0.895966250f,\n    0.438616239f,  0.898674466f,\n    0.433093819f,  0.901348847f,\n    0.427555093f,  0.903989293f,\n    0.422000271f,  0.906595705f,\n    0.416429560f,  0.909167983f,\n    0.410843171f,  0.911706032f,\n    0.405241314f,  0.914209756f,\n    0.399624200f,  0.916679060f,\n    0.393992040f,  0.919113852f,\n    0.388345047f,  0.921514039f,\n    0.382683432f,  0.923879533f,\n    0.377007410f,  0.926210242f,\n    0.371317194f,  0.928506080f,\n    0.365612998f,  0.930766961f,\n    0.359895037f,  0.932992799f,\n    0.354163525f,  0.935183510f,\n    0.348418680f,  0.937339012f,\n    0.342660717f,  0.939459224f,\n    0.336889853f,  0.941544065f,\n    0.331106306f,  0.943593458f,\n    0.325310292f,  0.945607325f,\n    0.319502031f,  0.947585591f,\n    0.313681740f,  0.949528181f,\n    0.307849640f,  0.951435021f,\n    0.302005949f,  0.953306040f,\n    0.296150888f,  0.955141168f,\n    0.290284677f,  0.956940336f,\n    0.284407537f,  0.958703475f,\n    0.278519689f,  0.960430519f,\n    0.272621355f,  0.962121404f,\n    0.266712757f,  0.963776066f,\n    0.260794118f,  0.965394442f,\n    0.254865660f,  0.966976471f,\n    0.248927606f,  0.968522094f,\n    0.242980180f,  0.970031253f,\n    0.237023606f,  0.971503891f,\n    0.231058108f,  0.972939952f,\n    0.225083911f,  0.974339383f,\n    0.219101240f,  0.975702130f,\n    0.213110320f,  0.977028143f,\n    0.207111376f,  0.978317371f,\n    0.201104635f,  0.979569766f,\n    0.195090322f,  0.980785280f,\n    0.189068664f,  0.981963869f,\n    0.183039888f,  0.983105487f,\n    0.177004220f,  0.984210092f,\n    0.170961889f,  0.985277642f,\n    0.164913120f,  0.986308097f,\n    0.158858143f,  0.987301418f,\n    0.152797185f,  0.988257568f,\n    0.146730474f,  0.989176510f,\n    0.140658239f,  0.990058210f,\n    0.134580709f,  0.990902635f,\n    0.128498111f,  0.991709754f,\n    0.122410675f,  0.992479535f,\n    0.116318631f,  0.993211949f,\n    0.110222207f,  0.993906970f,\n    0.104121634f,  0.994564571f,\n    0.098017140f,  0.995184727f,\n    0.091908956f,  0.995767414f,\n    0.085797312f,  0.996312612f,\n    0.079682438f,  0.996820299f,\n    0.073564564f,  0.997290457f,\n    0.067443920f,  0.997723067f,\n    0.061320736f,  0.998118113f,\n    0.055195244f,  0.998475581f,\n    0.049067674f,  0.998795456f,\n    0.042938257f,  0.999077728f,\n    0.036807223f,  0.999322385f,\n    0.030674803f,  0.999529418f,\n    0.024541229f,  0.999698819f,\n    0.018406730f,  0.999830582f,\n    0.012271538f,  0.999924702f,\n    0.006135885f,  0.999981175f,\n    0.000000000f,  1.000000000f,\n   -0.006135885f,  0.999981175f,\n   -0.012271538f,  0.999924702f,\n   -0.018406730f,  0.999830582f,\n   -0.024541229f,  0.999698819f,\n   -0.030674803f,  0.999529418f,\n   -0.036807223f,  0.999322385f,\n   -0.042938257f,  0.999077728f,\n   -0.049067674f,  0.998795456f,\n   -0.055195244f,  0.998475581f,\n   -0.061320736f,  0.998118113f,\n   -0.067443920f,  0.997723067f,\n   -0.073564564f,  0.997290457f,\n   -0.079682438f,  0.996820299f,\n   -0.085797312f,  0.996312612f,\n   -0.091908956f,  0.995767414f,\n   -0.098017140f,  0.995184727f,\n   -0.104121634f,  0.994564571f,\n   -0.110222207f,  0.993906970f,\n   -0.116318631f,  0.993211949f,\n   -0.122410675f,  0.992479535f,\n   -0.128498111f,  0.991709754f,\n   -0.134580709f,  0.990902635f,\n   -0.140658239f,  0.990058210f,\n   -0.146730474f,  0.989176510f,\n   -0.152797185f,  0.988257568f,\n   -0.158858143f,  0.987301418f,\n   -0.164913120f,  0.986308097f,\n   -0.170961889f,  0.985277642f,\n   -0.177004220f,  0.984210092f,\n   -0.183039888f,  0.983105487f,\n   -0.189068664f,  0.981963869f,\n   -0.195090322f,  0.980785280f,\n   -0.201104635f,  0.979569766f,\n   -0.207111376f,  0.978317371f,\n   -0.213110320f,  0.977028143f,\n   -0.219101240f,  0.975702130f,\n   -0.225083911f,  0.974339383f,\n   -0.231058108f,  0.972939952f,\n   -0.237023606f,  0.971503891f,\n   -0.242980180f,  0.970031253f,\n   -0.248927606f,  0.968522094f,\n   -0.254865660f,  0.966976471f,\n   -0.260794118f,  0.965394442f,\n   -0.266712757f,  0.963776066f,\n   -0.272621355f,  0.962121404f,\n   -0.278519689f,  0.960430519f,\n   -0.284407537f,  0.958703475f,\n   -0.290284677f,  0.956940336f,\n   -0.296150888f,  0.955141168f,\n   -0.302005949f,  0.953306040f,\n   -0.307849640f,  0.951435021f,\n   -0.313681740f,  0.949528181f,\n   -0.319502031f,  0.947585591f,\n   -0.325310292f,  0.945607325f,\n   -0.331106306f,  0.943593458f,\n   -0.336889853f,  0.941544065f,\n   -0.342660717f,  0.939459224f,\n   -0.348418680f,  0.937339012f,\n   -0.354163525f,  0.935183510f,\n   -0.359895037f,  0.932992799f,\n   -0.365612998f,  0.930766961f,\n   -0.371317194f,  0.928506080f,\n   -0.377007410f,  0.926210242f,\n   -0.382683432f,  0.923879533f,\n   -0.388345047f,  0.921514039f,\n   -0.393992040f,  0.919113852f,\n   -0.399624200f,  0.916679060f,\n   -0.405241314f,  0.914209756f,\n   -0.410843171f,  0.911706032f,\n   -0.416429560f,  0.909167983f,\n   -0.422000271f,  0.906595705f,\n   -0.427555093f,  0.903989293f,\n   -0.433093819f,  0.901348847f,\n   -0.438616239f,  0.898674466f,\n   -0.444122145f,  0.895966250f,\n   -0.449611330f,  0.893224301f,\n   -0.455083587f,  0.890448723f,\n   -0.460538711f,  0.887639620f,\n   -0.465976496f,  0.884797098f,\n   -0.471396737f,  0.881921264f,\n   -0.476799230f,  0.879012226f,\n   -0.482183772f,  0.876070094f,\n   -0.487550160f,  0.873094978f,\n   -0.492898192f,  0.870086991f,\n   -0.498227667f,  0.867046246f,\n   -0.503538384f,  0.863972856f,\n   -0.508830143f,  0.860866939f,\n   -0.514102744f,  0.857728610f,\n   -0.519355990f,  0.854557988f,\n   -0.524589683f,  0.851355193f,\n   -0.529803625f,  0.848120345f,\n   -0.534997620f,  0.844853565f,\n   -0.540171473f,  0.841554977f,\n   -0.545324988f,  0.838224706f,\n   -0.550457973f,  0.834862875f,\n   -0.555570233f,  0.831469612f,\n   -0.560661576f,  0.828045045f,\n   -0.565731811f,  0.824589303f,\n   -0.570780746f,  0.821102515f,\n   -0.575808191f,  0.817584813f,\n   -0.580813958f,  0.814036330f,\n   -0.585797857f,  0.810457198f,\n   -0.590759702f,  0.806847554f,\n   -0.595699304f,  0.803207531f,\n   -0.600616479f,  0.799537269f,\n   -0.605511041f,  0.795836905f,\n   -0.610382806f,  0.792106577f,\n   -0.615231591f,  0.788346428f,\n   -0.620057212f,  0.784556597f,\n   -0.624859488f,  0.780737229f,\n   -0.629638239f,  0.776888466f,\n   -0.634393284f,  0.773010453f,\n   -0.639124445f,  0.769103338f,\n   -0.643831543f,  0.765167266f,\n   -0.648514401f,  0.761202385f,\n   -0.653172843f,  0.757208847f,\n   -0.657806693f,  0.753186799f,\n   -0.662415778f,  0.749136395f,\n   -0.666999922f,  0.745057785f,\n   -0.671558955f,  0.740951125f,\n   -0.676092704f,  0.736816569f,\n   -0.680600998f,  0.732654272f,\n   -0.685083668f,  0.728464390f,\n   -0.689540545f,  0.724247083f,\n   -0.693971461f,  0.720002508f,\n   -0.698376249f,  0.715730825f,\n   -0.702754744f,  0.711432196f,\n   -0.707106781f,  0.707106781f,\n   -0.711432196f,  0.702754744f,\n   -0.715730825f,  0.698376249f,\n   -0.720002508f,  0.693971461f,\n   -0.724247083f,  0.689540545f,\n   -0.728464390f,  0.685083668f,\n   -0.732654272f,  0.680600998f,\n   -0.736816569f,  0.676092704f,\n   -0.740951125f,  0.671558955f,\n   -0.745057785f,  0.666999922f,\n   -0.749136395f,  0.662415778f,\n   -0.753186799f,  0.657806693f,\n   -0.757208847f,  0.653172843f,\n   -0.761202385f,  0.648514401f,\n   -0.765167266f,  0.643831543f,\n   -0.769103338f,  0.639124445f,\n   -0.773010453f,  0.634393284f,\n   -0.776888466f,  0.629638239f,\n   -0.780737229f,  0.624859488f,\n   -0.784556597f,  0.620057212f,\n   -0.788346428f,  0.615231591f,\n   -0.792106577f,  0.610382806f,\n   -0.795836905f,  0.605511041f,\n   -0.799537269f,  0.600616479f,\n   -0.803207531f,  0.595699304f,\n   -0.806847554f,  0.590759702f,\n   -0.810457198f,  0.585797857f,\n   -0.814036330f,  0.580813958f,\n   -0.817584813f,  0.575808191f,\n   -0.821102515f,  0.570780746f,\n   -0.824589303f,  0.565731811f,\n   -0.828045045f,  0.560661576f,\n   -0.831469612f,  0.555570233f,\n   -0.834862875f,  0.550457973f,\n   -0.838224706f,  0.545324988f,\n   -0.841554977f,  0.540171473f,\n   -0.844853565f,  0.534997620f,\n   -0.848120345f,  0.529803625f,\n   -0.851355193f,  0.524589683f,\n   -0.854557988f,  0.519355990f,\n   -0.857728610f,  0.514102744f,\n   -0.860866939f,  0.508830143f,\n   -0.863972856f,  0.503538384f,\n   -0.867046246f,  0.498227667f,\n   -0.870086991f,  0.492898192f,\n   -0.873094978f,  0.487550160f,\n   -0.876070094f,  0.482183772f,\n   -0.879012226f,  0.476799230f,\n   -0.881921264f,  0.471396737f,\n   -0.884797098f,  0.465976496f,\n   -0.887639620f,  0.460538711f,\n   -0.890448723f,  0.455083587f,\n   -0.893224301f,  0.449611330f,\n   -0.895966250f,  0.444122145f,\n   -0.898674466f,  0.438616239f,\n   -0.901348847f,  0.433093819f,\n   -0.903989293f,  0.427555093f,\n   -0.906595705f,  0.422000271f,\n   -0.909167983f,  0.416429560f,\n   -0.911706032f,  0.410843171f,\n   -0.914209756f,  0.405241314f,\n   -0.916679060f,  0.399624200f,\n   -0.919113852f,  0.393992040f,\n   -0.921514039f,  0.388345047f,\n   -0.923879533f,  0.382683432f,\n   -0.926210242f,  0.377007410f,\n   -0.928506080f,  0.371317194f,\n   -0.930766961f,  0.365612998f,\n   -0.932992799f,  0.359895037f,\n   -0.935183510f,  0.354163525f,\n   -0.937339012f,  0.348418680f,\n   -0.939459224f,  0.342660717f,\n   -0.941544065f,  0.336889853f,\n   -0.943593458f,  0.331106306f,\n   -0.945607325f,  0.325310292f,\n   -0.947585591f,  0.319502031f,\n   -0.949528181f,  0.313681740f,\n   -0.951435021f,  0.307849640f,\n   -0.953306040f,  0.302005949f,\n   -0.955141168f,  0.296150888f,\n   -0.956940336f,  0.290284677f,\n   -0.958703475f,  0.284407537f,\n   -0.960430519f,  0.278519689f,\n   -0.962121404f,  0.272621355f,\n   -0.963776066f,  0.266712757f,\n   -0.965394442f,  0.260794118f,\n   -0.966976471f,  0.254865660f,\n   -0.968522094f,  0.248927606f,\n   -0.970031253f,  0.242980180f,\n   -0.971503891f,  0.237023606f,\n   -0.972939952f,  0.231058108f,\n   -0.974339383f,  0.225083911f,\n   -0.975702130f,  0.219101240f,\n   -0.977028143f,  0.213110320f,\n   -0.978317371f,  0.207111376f,\n   -0.979569766f,  0.201104635f,\n   -0.980785280f,  0.195090322f,\n   -0.981963869f,  0.189068664f,\n   -0.983105487f,  0.183039888f,\n   -0.984210092f,  0.177004220f,\n   -0.985277642f,  0.170961889f,\n   -0.986308097f,  0.164913120f,\n   -0.987301418f,  0.158858143f,\n   -0.988257568f,  0.152797185f,\n   -0.989176510f,  0.146730474f,\n   -0.990058210f,  0.140658239f,\n   -0.990902635f,  0.134580709f,\n   -0.991709754f,  0.128498111f,\n   -0.992479535f,  0.122410675f,\n   -0.993211949f,  0.116318631f,\n   -0.993906970f,  0.110222207f,\n   -0.994564571f,  0.104121634f,\n   -0.995184727f,  0.098017140f,\n   -0.995767414f,  0.091908956f,\n   -0.996312612f,  0.085797312f,\n   -0.996820299f,  0.079682438f,\n   -0.997290457f,  0.073564564f,\n   -0.997723067f,  0.067443920f,\n   -0.998118113f,  0.061320736f,\n   -0.998475581f,  0.055195244f,\n   -0.998795456f,  0.049067674f,\n   -0.999077728f,  0.042938257f,\n   -0.999322385f,  0.036807223f,\n   -0.999529418f,  0.030674803f,\n   -0.999698819f,  0.024541229f,\n   -0.999830582f,  0.018406730f,\n   -0.999924702f,  0.012271538f,\n   -0.999981175f,  0.006135885f,\n   -1.000000000f,  0.000000000f,\n   -0.999981175f, -0.006135885f,\n   -0.999924702f, -0.012271538f,\n   -0.999830582f, -0.018406730f,\n   -0.999698819f, -0.024541229f,\n   -0.999529418f, -0.030674803f,\n   -0.999322385f, -0.036807223f,\n   -0.999077728f, -0.042938257f,\n   -0.998795456f, -0.049067674f,\n   -0.998475581f, -0.055195244f,\n   -0.998118113f, -0.061320736f,\n   -0.997723067f, -0.067443920f,\n   -0.997290457f, -0.073564564f,\n   -0.996820299f, -0.079682438f,\n   -0.996312612f, -0.085797312f,\n   -0.995767414f, -0.091908956f,\n   -0.995184727f, -0.098017140f,\n   -0.994564571f, -0.104121634f,\n   -0.993906970f, -0.110222207f,\n   -0.993211949f, -0.116318631f,\n   -0.992479535f, -0.122410675f,\n   -0.991709754f, -0.128498111f,\n   -0.990902635f, -0.134580709f,\n   -0.990058210f, -0.140658239f,\n   -0.989176510f, -0.146730474f,\n   -0.988257568f, -0.152797185f,\n   -0.987301418f, -0.158858143f,\n   -0.986308097f, -0.164913120f,\n   -0.985277642f, -0.170961889f,\n   -0.984210092f, -0.177004220f,\n   -0.983105487f, -0.183039888f,\n   -0.981963869f, -0.189068664f,\n   -0.980785280f, -0.195090322f,\n   -0.979569766f, -0.201104635f,\n   -0.978317371f, -0.207111376f,\n   -0.977028143f, -0.213110320f,\n   -0.975702130f, -0.219101240f,\n   -0.974339383f, -0.225083911f,\n   -0.972939952f, -0.231058108f,\n   -0.971503891f, -0.237023606f,\n   -0.970031253f, -0.242980180f,\n   -0.968522094f, -0.248927606f,\n   -0.966976471f, -0.254865660f,\n   -0.965394442f, -0.260794118f,\n   -0.963776066f, -0.266712757f,\n   -0.962121404f, -0.272621355f,\n   -0.960430519f, -0.278519689f,\n   -0.958703475f, -0.284407537f,\n   -0.956940336f, -0.290284677f,\n   -0.955141168f, -0.296150888f,\n   -0.953306040f, -0.302005949f,\n   -0.951435021f, -0.307849640f,\n   -0.949528181f, -0.313681740f,\n   -0.947585591f, -0.319502031f,\n   -0.945607325f, -0.325310292f,\n   -0.943593458f, -0.331106306f,\n   -0.941544065f, -0.336889853f,\n   -0.939459224f, -0.342660717f,\n   -0.937339012f, -0.348418680f,\n   -0.935183510f, -0.354163525f,\n   -0.932992799f, -0.359895037f,\n   -0.930766961f, -0.365612998f,\n   -0.928506080f, -0.371317194f,\n   -0.926210242f, -0.377007410f,\n   -0.923879533f, -0.382683432f,\n   -0.921514039f, -0.388345047f,\n   -0.919113852f, -0.393992040f,\n   -0.916679060f, -0.399624200f,\n   -0.914209756f, -0.405241314f,\n   -0.911706032f, -0.410843171f,\n   -0.909167983f, -0.416429560f,\n   -0.906595705f, -0.422000271f,\n   -0.903989293f, -0.427555093f,\n   -0.901348847f, -0.433093819f,\n   -0.898674466f, -0.438616239f,\n   -0.895966250f, -0.444122145f,\n   -0.893224301f, -0.449611330f,\n   -0.890448723f, -0.455083587f,\n   -0.887639620f, -0.460538711f,\n   -0.884797098f, -0.465976496f,\n   -0.881921264f, -0.471396737f,\n   -0.879012226f, -0.476799230f,\n   -0.876070094f, -0.482183772f,\n   -0.873094978f, -0.487550160f,\n   -0.870086991f, -0.492898192f,\n   -0.867046246f, -0.498227667f,\n   -0.863972856f, -0.503538384f,\n   -0.860866939f, -0.508830143f,\n   -0.857728610f, -0.514102744f,\n   -0.854557988f, -0.519355990f,\n   -0.851355193f, -0.524589683f,\n   -0.848120345f, -0.529803625f,\n   -0.844853565f, -0.534997620f,\n   -0.841554977f, -0.540171473f,\n   -0.838224706f, -0.545324988f,\n   -0.834862875f, -0.550457973f,\n   -0.831469612f, -0.555570233f,\n   -0.828045045f, -0.560661576f,\n   -0.824589303f, -0.565731811f,\n   -0.821102515f, -0.570780746f,\n   -0.817584813f, -0.575808191f,\n   -0.814036330f, -0.580813958f,\n   -0.810457198f, -0.585797857f,\n   -0.806847554f, -0.590759702f,\n   -0.803207531f, -0.595699304f,\n   -0.799537269f, -0.600616479f,\n   -0.795836905f, -0.605511041f,\n   -0.792106577f, -0.610382806f,\n   -0.788346428f, -0.615231591f,\n   -0.784556597f, -0.620057212f,\n   -0.780737229f, -0.624859488f,\n   -0.776888466f, -0.629638239f,\n   -0.773010453f, -0.634393284f,\n   -0.769103338f, -0.639124445f,\n   -0.765167266f, -0.643831543f,\n   -0.761202385f, -0.648514401f,\n   -0.757208847f, -0.653172843f,\n   -0.753186799f, -0.657806693f,\n   -0.749136395f, -0.662415778f,\n   -0.745057785f, -0.666999922f,\n   -0.740951125f, -0.671558955f,\n   -0.736816569f, -0.676092704f,\n   -0.732654272f, -0.680600998f,\n   -0.728464390f, -0.685083668f,\n   -0.724247083f, -0.689540545f,\n   -0.720002508f, -0.693971461f,\n   -0.715730825f, -0.698376249f,\n   -0.711432196f, -0.702754744f,\n   -0.707106781f, -0.707106781f,\n   -0.702754744f, -0.711432196f,\n   -0.698376249f, -0.715730825f,\n   -0.693971461f, -0.720002508f,\n   -0.689540545f, -0.724247083f,\n   -0.685083668f, -0.728464390f,\n   -0.680600998f, -0.732654272f,\n   -0.676092704f, -0.736816569f,\n   -0.671558955f, -0.740951125f,\n   -0.666999922f, -0.745057785f,\n   -0.662415778f, -0.749136395f,\n   -0.657806693f, -0.753186799f,\n   -0.653172843f, -0.757208847f,\n   -0.648514401f, -0.761202385f,\n   -0.643831543f, -0.765167266f,\n   -0.639124445f, -0.769103338f,\n   -0.634393284f, -0.773010453f,\n   -0.629638239f, -0.776888466f,\n   -0.624859488f, -0.780737229f,\n   -0.620057212f, -0.784556597f,\n   -0.615231591f, -0.788346428f,\n   -0.610382806f, -0.792106577f,\n   -0.605511041f, -0.795836905f,\n   -0.600616479f, -0.799537269f,\n   -0.595699304f, -0.803207531f,\n   -0.590759702f, -0.806847554f,\n   -0.585797857f, -0.810457198f,\n   -0.580813958f, -0.814036330f,\n   -0.575808191f, -0.817584813f,\n   -0.570780746f, -0.821102515f,\n   -0.565731811f, -0.824589303f,\n   -0.560661576f, -0.828045045f,\n   -0.555570233f, -0.831469612f,\n   -0.550457973f, -0.834862875f,\n   -0.545324988f, -0.838224706f,\n   -0.540171473f, -0.841554977f,\n   -0.534997620f, -0.844853565f,\n   -0.529803625f, -0.848120345f,\n   -0.524589683f, -0.851355193f,\n   -0.519355990f, -0.854557988f,\n   -0.514102744f, -0.857728610f,\n   -0.508830143f, -0.860866939f,\n   -0.503538384f, -0.863972856f,\n   -0.498227667f, -0.867046246f,\n   -0.492898192f, -0.870086991f,\n   -0.487550160f, -0.873094978f,\n   -0.482183772f, -0.876070094f,\n   -0.476799230f, -0.879012226f,\n   -0.471396737f, -0.881921264f,\n   -0.465976496f, -0.884797098f,\n   -0.460538711f, -0.887639620f,\n   -0.455083587f, -0.890448723f,\n   -0.449611330f, -0.893224301f,\n   -0.444122145f, -0.895966250f,\n   -0.438616239f, -0.898674466f,\n   -0.433093819f, -0.901348847f,\n   -0.427555093f, -0.903989293f,\n   -0.422000271f, -0.906595705f,\n   -0.416429560f, -0.909167983f,\n   -0.410843171f, -0.911706032f,\n   -0.405241314f, -0.914209756f,\n   -0.399624200f, -0.916679060f,\n   -0.393992040f, -0.919113852f,\n   -0.388345047f, -0.921514039f,\n   -0.382683432f, -0.923879533f,\n   -0.377007410f, -0.926210242f,\n   -0.371317194f, -0.928506080f,\n   -0.365612998f, -0.930766961f,\n   -0.359895037f, -0.932992799f,\n   -0.354163525f, -0.935183510f,\n   -0.348418680f, -0.937339012f,\n   -0.342660717f, -0.939459224f,\n   -0.336889853f, -0.941544065f,\n   -0.331106306f, -0.943593458f,\n   -0.325310292f, -0.945607325f,\n   -0.319502031f, -0.947585591f,\n   -0.313681740f, -0.949528181f,\n   -0.307849640f, -0.951435021f,\n   -0.302005949f, -0.953306040f,\n   -0.296150888f, -0.955141168f,\n   -0.290284677f, -0.956940336f,\n   -0.284407537f, -0.958703475f,\n   -0.278519689f, -0.960430519f,\n   -0.272621355f, -0.962121404f,\n   -0.266712757f, -0.963776066f,\n   -0.260794118f, -0.965394442f,\n   -0.254865660f, -0.966976471f,\n   -0.248927606f, -0.968522094f,\n   -0.242980180f, -0.970031253f,\n   -0.237023606f, -0.971503891f,\n   -0.231058108f, -0.972939952f,\n   -0.225083911f, -0.974339383f,\n   -0.219101240f, -0.975702130f,\n   -0.213110320f, -0.977028143f,\n   -0.207111376f, -0.978317371f,\n   -0.201104635f, -0.979569766f,\n   -0.195090322f, -0.980785280f,\n   -0.189068664f, -0.981963869f,\n   -0.183039888f, -0.983105487f,\n   -0.177004220f, -0.984210092f,\n   -0.170961889f, -0.985277642f,\n   -0.164913120f, -0.986308097f,\n   -0.158858143f, -0.987301418f,\n   -0.152797185f, -0.988257568f,\n   -0.146730474f, -0.989176510f,\n   -0.140658239f, -0.990058210f,\n   -0.134580709f, -0.990902635f,\n   -0.128498111f, -0.991709754f,\n   -0.122410675f, -0.992479535f,\n   -0.116318631f, -0.993211949f,\n   -0.110222207f, -0.993906970f,\n   -0.104121634f, -0.994564571f,\n   -0.098017140f, -0.995184727f,\n   -0.091908956f, -0.995767414f,\n   -0.085797312f, -0.996312612f,\n   -0.079682438f, -0.996820299f,\n   -0.073564564f, -0.997290457f,\n   -0.067443920f, -0.997723067f,\n   -0.061320736f, -0.998118113f,\n   -0.055195244f, -0.998475581f,\n   -0.049067674f, -0.998795456f,\n   -0.042938257f, -0.999077728f,\n   -0.036807223f, -0.999322385f,\n   -0.030674803f, -0.999529418f,\n   -0.024541229f, -0.999698819f,\n   -0.018406730f, -0.999830582f,\n   -0.012271538f, -0.999924702f,\n   -0.006135885f, -0.999981175f,\n   -0.000000000f, -1.000000000f,\n    0.006135885f, -0.999981175f,\n    0.012271538f, -0.999924702f,\n    0.018406730f, -0.999830582f,\n    0.024541229f, -0.999698819f,\n    0.030674803f, -0.999529418f,\n    0.036807223f, -0.999322385f,\n    0.042938257f, -0.999077728f,\n    0.049067674f, -0.998795456f,\n    0.055195244f, -0.998475581f,\n    0.061320736f, -0.998118113f,\n    0.067443920f, -0.997723067f,\n    0.073564564f, -0.997290457f,\n    0.079682438f, -0.996820299f,\n    0.085797312f, -0.996312612f,\n    0.091908956f, -0.995767414f,\n    0.098017140f, -0.995184727f,\n    0.104121634f, -0.994564571f,\n    0.110222207f, -0.993906970f,\n    0.116318631f, -0.993211949f,\n    0.122410675f, -0.992479535f,\n    0.128498111f, -0.991709754f,\n    0.134580709f, -0.990902635f,\n    0.140658239f, -0.990058210f,\n    0.146730474f, -0.989176510f,\n    0.152797185f, -0.988257568f,\n    0.158858143f, -0.987301418f,\n    0.164913120f, -0.986308097f,\n    0.170961889f, -0.985277642f,\n    0.177004220f, -0.984210092f,\n    0.183039888f, -0.983105487f,\n    0.189068664f, -0.981963869f,\n    0.195090322f, -0.980785280f,\n    0.201104635f, -0.979569766f,\n    0.207111376f, -0.978317371f,\n    0.213110320f, -0.977028143f,\n    0.219101240f, -0.975702130f,\n    0.225083911f, -0.974339383f,\n    0.231058108f, -0.972939952f,\n    0.237023606f, -0.971503891f,\n    0.242980180f, -0.970031253f,\n    0.248927606f, -0.968522094f,\n    0.254865660f, -0.966976471f,\n    0.260794118f, -0.965394442f,\n    0.266712757f, -0.963776066f,\n    0.272621355f, -0.962121404f,\n    0.278519689f, -0.960430519f,\n    0.284407537f, -0.958703475f,\n    0.290284677f, -0.956940336f,\n    0.296150888f, -0.955141168f,\n    0.302005949f, -0.953306040f,\n    0.307849640f, -0.951435021f,\n    0.313681740f, -0.949528181f,\n    0.319502031f, -0.947585591f,\n    0.325310292f, -0.945607325f,\n    0.331106306f, -0.943593458f,\n    0.336889853f, -0.941544065f,\n    0.342660717f, -0.939459224f,\n    0.348418680f, -0.937339012f,\n    0.354163525f, -0.935183510f,\n    0.359895037f, -0.932992799f,\n    0.365612998f, -0.930766961f,\n    0.371317194f, -0.928506080f,\n    0.377007410f, -0.926210242f,\n    0.382683432f, -0.923879533f,\n    0.388345047f, -0.921514039f,\n    0.393992040f, -0.919113852f,\n    0.399624200f, -0.916679060f,\n    0.405241314f, -0.914209756f,\n    0.410843171f, -0.911706032f,\n    0.416429560f, -0.909167983f,\n    0.422000271f, -0.906595705f,\n    0.427555093f, -0.903989293f,\n    0.433093819f, -0.901348847f,\n    0.438616239f, -0.898674466f,\n    0.444122145f, -0.895966250f,\n    0.449611330f, -0.893224301f,\n    0.455083587f, -0.890448723f,\n    0.460538711f, -0.887639620f,\n    0.465976496f, -0.884797098f,\n    0.471396737f, -0.881921264f,\n    0.476799230f, -0.879012226f,\n    0.482183772f, -0.876070094f,\n    0.487550160f, -0.873094978f,\n    0.492898192f, -0.870086991f,\n    0.498227667f, -0.867046246f,\n    0.503538384f, -0.863972856f,\n    0.508830143f, -0.860866939f,\n    0.514102744f, -0.857728610f,\n    0.519355990f, -0.854557988f,\n    0.524589683f, -0.851355193f,\n    0.529803625f, -0.848120345f,\n    0.534997620f, -0.844853565f,\n    0.540171473f, -0.841554977f,\n    0.545324988f, -0.838224706f,\n    0.550457973f, -0.834862875f,\n    0.555570233f, -0.831469612f,\n    0.560661576f, -0.828045045f,\n    0.565731811f, -0.824589303f,\n    0.570780746f, -0.821102515f,\n    0.575808191f, -0.817584813f,\n    0.580813958f, -0.814036330f,\n    0.585797857f, -0.810457198f,\n    0.590759702f, -0.806847554f,\n    0.595699304f, -0.803207531f,\n    0.600616479f, -0.799537269f,\n    0.605511041f, -0.795836905f,\n    0.610382806f, -0.792106577f,\n    0.615231591f, -0.788346428f,\n    0.620057212f, -0.784556597f,\n    0.624859488f, -0.780737229f,\n    0.629638239f, -0.776888466f,\n    0.634393284f, -0.773010453f,\n    0.639124445f, -0.769103338f,\n    0.643831543f, -0.765167266f,\n    0.648514401f, -0.761202385f,\n    0.653172843f, -0.757208847f,\n    0.657806693f, -0.753186799f,\n    0.662415778f, -0.749136395f,\n    0.666999922f, -0.745057785f,\n    0.671558955f, -0.740951125f,\n    0.676092704f, -0.736816569f,\n    0.680600998f, -0.732654272f,\n    0.685083668f, -0.728464390f,\n    0.689540545f, -0.724247083f,\n    0.693971461f, -0.720002508f,\n    0.698376249f, -0.715730825f,\n    0.702754744f, -0.711432196f,\n    0.707106781f, -0.707106781f,\n    0.711432196f, -0.702754744f,\n    0.715730825f, -0.698376249f,\n    0.720002508f, -0.693971461f,\n    0.724247083f, -0.689540545f,\n    0.728464390f, -0.685083668f,\n    0.732654272f, -0.680600998f,\n    0.736816569f, -0.676092704f,\n    0.740951125f, -0.671558955f,\n    0.745057785f, -0.666999922f,\n    0.749136395f, -0.662415778f,\n    0.753186799f, -0.657806693f,\n    0.757208847f, -0.653172843f,\n    0.761202385f, -0.648514401f,\n    0.765167266f, -0.643831543f,\n    0.769103338f, -0.639124445f,\n    0.773010453f, -0.634393284f,\n    0.776888466f, -0.629638239f,\n    0.780737229f, -0.624859488f,\n    0.784556597f, -0.620057212f,\n    0.788346428f, -0.615231591f,\n    0.792106577f, -0.610382806f,\n    0.795836905f, -0.605511041f,\n    0.799537269f, -0.600616479f,\n    0.803207531f, -0.595699304f,\n    0.806847554f, -0.590759702f,\n    0.810457198f, -0.585797857f,\n    0.814036330f, -0.580813958f,\n    0.817584813f, -0.575808191f,\n    0.821102515f, -0.570780746f,\n    0.824589303f, -0.565731811f,\n    0.828045045f, -0.560661576f,\n    0.831469612f, -0.555570233f,\n    0.834862875f, -0.550457973f,\n    0.838224706f, -0.545324988f,\n    0.841554977f, -0.540171473f,\n    0.844853565f, -0.534997620f,\n    0.848120345f, -0.529803625f,\n    0.851355193f, -0.524589683f,\n    0.854557988f, -0.519355990f,\n    0.857728610f, -0.514102744f,\n    0.860866939f, -0.508830143f,\n    0.863972856f, -0.503538384f,\n    0.867046246f, -0.498227667f,\n    0.870086991f, -0.492898192f,\n    0.873094978f, -0.487550160f,\n    0.876070094f, -0.482183772f,\n    0.879012226f, -0.476799230f,\n    0.881921264f, -0.471396737f,\n    0.884797098f, -0.465976496f,\n    0.887639620f, -0.460538711f,\n    0.890448723f, -0.455083587f,\n    0.893224301f, -0.449611330f,\n    0.895966250f, -0.444122145f,\n    0.898674466f, -0.438616239f,\n    0.901348847f, -0.433093819f,\n    0.903989293f, -0.427555093f,\n    0.906595705f, -0.422000271f,\n    0.909167983f, -0.416429560f,\n    0.911706032f, -0.410843171f,\n    0.914209756f, -0.405241314f,\n    0.916679060f, -0.399624200f,\n    0.919113852f, -0.393992040f,\n    0.921514039f, -0.388345047f,\n    0.923879533f, -0.382683432f,\n    0.926210242f, -0.377007410f,\n    0.928506080f, -0.371317194f,\n    0.930766961f, -0.365612998f,\n    0.932992799f, -0.359895037f,\n    0.935183510f, -0.354163525f,\n    0.937339012f, -0.348418680f,\n    0.939459224f, -0.342660717f,\n    0.941544065f, -0.336889853f,\n    0.943593458f, -0.331106306f,\n    0.945607325f, -0.325310292f,\n    0.947585591f, -0.319502031f,\n    0.949528181f, -0.313681740f,\n    0.951435021f, -0.307849640f,\n    0.953306040f, -0.302005949f,\n    0.955141168f, -0.296150888f,\n    0.956940336f, -0.290284677f,\n    0.958703475f, -0.284407537f,\n    0.960430519f, -0.278519689f,\n    0.962121404f, -0.272621355f,\n    0.963776066f, -0.266712757f,\n    0.965394442f, -0.260794118f,\n    0.966976471f, -0.254865660f,\n    0.968522094f, -0.248927606f,\n    0.970031253f, -0.242980180f,\n    0.971503891f, -0.237023606f,\n    0.972939952f, -0.231058108f,\n    0.974339383f, -0.225083911f,\n    0.975702130f, -0.219101240f,\n    0.977028143f, -0.213110320f,\n    0.978317371f, -0.207111376f,\n    0.979569766f, -0.201104635f,\n    0.980785280f, -0.195090322f,\n    0.981963869f, -0.189068664f,\n    0.983105487f, -0.183039888f,\n    0.984210092f, -0.177004220f,\n    0.985277642f, -0.170961889f,\n    0.986308097f, -0.164913120f,\n    0.987301418f, -0.158858143f,\n    0.988257568f, -0.152797185f,\n    0.989176510f, -0.146730474f,\n    0.990058210f, -0.140658239f,\n    0.990902635f, -0.134580709f,\n    0.991709754f, -0.128498111f,\n    0.992479535f, -0.122410675f,\n    0.993211949f, -0.116318631f,\n    0.993906970f, -0.110222207f,\n    0.994564571f, -0.104121634f,\n    0.995184727f, -0.098017140f,\n    0.995767414f, -0.091908956f,\n    0.996312612f, -0.085797312f,\n    0.996820299f, -0.079682438f,\n    0.997290457f, -0.073564564f,\n    0.997723067f, -0.067443920f,\n    0.998118113f, -0.061320736f,\n    0.998475581f, -0.055195244f,\n    0.998795456f, -0.049067674f,\n    0.999077728f, -0.042938257f,\n    0.999322385f, -0.036807223f,\n    0.999529418f, -0.030674803f,\n    0.999698819f, -0.024541229f,\n    0.999830582f, -0.018406730f,\n    0.999924702f, -0.012271538f,\n    0.999981175f, -0.006135885f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_2048)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for (i = 0; i< N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 2048, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_2048[4096] = {\n    1.000000000f,  0.000000000f,\n    0.999995294f,  0.003067957f,\n    0.999981175f,  0.006135885f,\n    0.999957645f,  0.009203755f,\n    0.999924702f,  0.012271538f,\n    0.999882347f,  0.015339206f,\n    0.999830582f,  0.018406730f,\n    0.999769405f,  0.021474080f,\n    0.999698819f,  0.024541229f,\n    0.999618822f,  0.027608146f,\n    0.999529418f,  0.030674803f,\n    0.999430605f,  0.033741172f,\n    0.999322385f,  0.036807223f,\n    0.999204759f,  0.039872928f,\n    0.999077728f,  0.042938257f,\n    0.998941293f,  0.046003182f,\n    0.998795456f,  0.049067674f,\n    0.998640218f,  0.052131705f,\n    0.998475581f,  0.055195244f,\n    0.998301545f,  0.058258265f,\n    0.998118113f,  0.061320736f,\n    0.997925286f,  0.064382631f,\n    0.997723067f,  0.067443920f,\n    0.997511456f,  0.070504573f,\n    0.997290457f,  0.073564564f,\n    0.997060070f,  0.076623861f,\n    0.996820299f,  0.079682438f,\n    0.996571146f,  0.082740265f,\n    0.996312612f,  0.085797312f,\n    0.996044701f,  0.088853553f,\n    0.995767414f,  0.091908956f,\n    0.995480755f,  0.094963495f,\n    0.995184727f,  0.098017140f,\n    0.994879331f,  0.101069863f,\n    0.994564571f,  0.104121634f,\n    0.994240449f,  0.107172425f,\n    0.993906970f,  0.110222207f,\n    0.993564136f,  0.113270952f,\n    0.993211949f,  0.116318631f,\n    0.992850414f,  0.119365215f,\n    0.992479535f,  0.122410675f,\n    0.992099313f,  0.125454983f,\n    0.991709754f,  0.128498111f,\n    0.991310860f,  0.131540029f,\n    0.990902635f,  0.134580709f,\n    0.990485084f,  0.137620122f,\n    0.990058210f,  0.140658239f,\n    0.989622017f,  0.143695033f,\n    0.989176510f,  0.146730474f,\n    0.988721692f,  0.149764535f,\n    0.988257568f,  0.152797185f,\n    0.987784142f,  0.155828398f,\n    0.987301418f,  0.158858143f,\n    0.986809402f,  0.161886394f,\n    0.986308097f,  0.164913120f,\n    0.985797509f,  0.167938295f,\n    0.985277642f,  0.170961889f,\n    0.984748502f,  0.173983873f,\n    0.984210092f,  0.177004220f,\n    0.983662419f,  0.180022901f,\n    0.983105487f,  0.183039888f,\n    0.982539302f,  0.186055152f,\n    0.981963869f,  0.189068664f,\n    0.981379193f,  0.192080397f,\n    0.980785280f,  0.195090322f,\n    0.980182136f,  0.198098411f,\n    0.979569766f,  0.201104635f,\n    0.978948175f,  0.204108966f,\n    0.978317371f,  0.207111376f,\n    0.977677358f,  0.210111837f,\n    0.977028143f,  0.213110320f,\n    0.976369731f,  0.216106797f,\n    0.975702130f,  0.219101240f,\n    0.975025345f,  0.222093621f,\n    0.974339383f,  0.225083911f,\n    0.973644250f,  0.228072083f,\n    0.972939952f,  0.231058108f,\n    0.972226497f,  0.234041959f,\n    0.971503891f,  0.237023606f,\n    0.970772141f,  0.240003022f,\n    0.970031253f,  0.242980180f,\n    0.969281235f,  0.245955050f,\n    0.968522094f,  0.248927606f,\n    0.967753837f,  0.251897818f,\n    0.966976471f,  0.254865660f,\n    0.966190003f,  0.257831102f,\n    0.965394442f,  0.260794118f,\n    0.964589793f,  0.263754679f,\n    0.963776066f,  0.266712757f,\n    0.962953267f,  0.269668326f,\n    0.962121404f,  0.272621355f,\n    0.961280486f,  0.275571819f,\n    0.960430519f,  0.278519689f,\n    0.959571513f,  0.281464938f,\n    0.958703475f,  0.284407537f,\n    0.957826413f,  0.287347460f,\n    0.956940336f,  0.290284677f,\n    0.956045251f,  0.293219163f,\n    0.955141168f,  0.296150888f,\n    0.954228095f,  0.299079826f,\n    0.953306040f,  0.302005949f,\n    0.952375013f,  0.304929230f,\n    0.951435021f,  0.307849640f,\n    0.950486074f,  0.310767153f,\n    0.949528181f,  0.313681740f,\n    0.948561350f,  0.316593376f,\n    0.947585591f,  0.319502031f,\n    0.946600913f,  0.322407679f,\n    0.945607325f,  0.325310292f,\n    0.944604837f,  0.328209844f,\n    0.943593458f,  0.331106306f,\n    0.942573198f,  0.333999651f,\n    0.941544065f,  0.336889853f,\n    0.940506071f,  0.339776884f,\n    0.939459224f,  0.342660717f,\n    0.938403534f,  0.345541325f,\n    0.937339012f,  0.348418680f,\n    0.936265667f,  0.351292756f,\n    0.935183510f,  0.354163525f,\n    0.934092550f,  0.357030961f,\n    0.932992799f,  0.359895037f,\n    0.931884266f,  0.362755724f,\n    0.930766961f,  0.365612998f,\n    0.929640896f,  0.368466830f,\n    0.928506080f,  0.371317194f,\n    0.927362526f,  0.374164063f,\n    0.926210242f,  0.377007410f,\n    0.925049241f,  0.379847209f,\n    0.923879533f,  0.382683432f,\n    0.922701128f,  0.385516054f,\n    0.921514039f,  0.388345047f,\n    0.920318277f,  0.391170384f,\n    0.919113852f,  0.393992040f,\n    0.917900776f,  0.396809987f,\n    0.916679060f,  0.399624200f,\n    0.915448716f,  0.402434651f,\n    0.914209756f,  0.405241314f,\n    0.912962190f,  0.408044163f,\n    0.911706032f,  0.410843171f,\n    0.910441292f,  0.413638312f,\n    0.909167983f,  0.416429560f,\n    0.907886116f,  0.419216888f,\n    0.906595705f,  0.422000271f,\n    0.905296759f,  0.424779681f,\n    0.903989293f,  0.427555093f,\n    0.902673318f,  0.430326481f,\n    0.901348847f,  0.433093819f,\n    0.900015892f,  0.435857080f,\n    0.898674466f,  0.438616239f,\n    0.897324581f,  0.441371269f,\n    0.895966250f,  0.444122145f,\n    0.894599486f,  0.446868840f,\n    0.893224301f,  0.449611330f,\n    0.891840709f,  0.452349587f,\n    0.890448723f,  0.455083587f,\n    0.889048356f,  0.457813304f,\n    0.887639620f,  0.460538711f,\n    0.886222530f,  0.463259784f,\n    0.884797098f,  0.465976496f,\n    0.883363339f,  0.468688822f,\n    0.881921264f,  0.471396737f,\n    0.880470889f,  0.474100215f,\n    0.879012226f,  0.476799230f,\n    0.877545290f,  0.479493758f,\n    0.876070094f,  0.482183772f,\n    0.874586652f,  0.484869248f,\n    0.873094978f,  0.487550160f,\n    0.871595087f,  0.490226483f,\n    0.870086991f,  0.492898192f,\n    0.868570706f,  0.495565262f,\n    0.867046246f,  0.498227667f,\n    0.865513624f,  0.500885383f,\n    0.863972856f,  0.503538384f,\n    0.862423956f,  0.506186645f,\n    0.860866939f,  0.508830143f,\n    0.859301818f,  0.511468850f,\n    0.857728610f,  0.514102744f,\n    0.856147328f,  0.516731799f,\n    0.854557988f,  0.519355990f,\n    0.852960605f,  0.521975293f,\n    0.851355193f,  0.524589683f,\n    0.849741768f,  0.527199135f,\n    0.848120345f,  0.529803625f,\n    0.846490939f,  0.532403128f,\n    0.844853565f,  0.534997620f,\n    0.843208240f,  0.537587076f,\n    0.841554977f,  0.540171473f,\n    0.839893794f,  0.542750785f,\n    0.838224706f,  0.545324988f,\n    0.836547727f,  0.547894059f,\n    0.834862875f,  0.550457973f,\n    0.833170165f,  0.553016706f,\n    0.831469612f,  0.555570233f,\n    0.829761234f,  0.558118531f,\n    0.828045045f,  0.560661576f,\n    0.826321063f,  0.563199344f,\n    0.824589303f,  0.565731811f,\n    0.822849781f,  0.568258953f,\n    0.821102515f,  0.570780746f,\n    0.819347520f,  0.573297167f,\n    0.817584813f,  0.575808191f,\n    0.815814411f,  0.578313796f,\n    0.814036330f,  0.580813958f,\n    0.812250587f,  0.583308653f,\n    0.810457198f,  0.585797857f,\n    0.808656182f,  0.588281548f,\n    0.806847554f,  0.590759702f,\n    0.805031331f,  0.593232295f,\n    0.803207531f,  0.595699304f,\n    0.801376172f,  0.598160707f,\n    0.799537269f,  0.600616479f,\n    0.797690841f,  0.603066599f,\n    0.795836905f,  0.605511041f,\n    0.793975478f,  0.607949785f,\n    0.792106577f,  0.610382806f,\n    0.790230221f,  0.612810082f,\n    0.788346428f,  0.615231591f,\n    0.786455214f,  0.617647308f,\n    0.784556597f,  0.620057212f,\n    0.782650596f,  0.622461279f,\n    0.780737229f,  0.624859488f,\n    0.778816512f,  0.627251815f,\n    0.776888466f,  0.629638239f,\n    0.774953107f,  0.632018736f,\n    0.773010453f,  0.634393284f,\n    0.771060524f,  0.636761861f,\n    0.769103338f,  0.639124445f,\n    0.767138912f,  0.641481013f,\n    0.765167266f,  0.643831543f,\n    0.763188417f,  0.646176013f,\n    0.761202385f,  0.648514401f,\n    0.759209189f,  0.650846685f,\n    0.757208847f,  0.653172843f,\n    0.755201377f,  0.655492853f,\n    0.753186799f,  0.657806693f,\n    0.751165132f,  0.660114342f,\n    0.749136395f,  0.662415778f,\n    0.747100606f,  0.664710978f,\n    0.745057785f,  0.666999922f,\n    0.743007952f,  0.669282588f,\n    0.740951125f,  0.671558955f,\n    0.738887324f,  0.673829000f,\n    0.736816569f,  0.676092704f,\n    0.734738878f,  0.678350043f,\n    0.732654272f,  0.680600998f,\n    0.730562769f,  0.682845546f,\n    0.728464390f,  0.685083668f,\n    0.726359155f,  0.687315341f,\n    0.724247083f,  0.689540545f,\n    0.722128194f,  0.691759258f,\n    0.720002508f,  0.693971461f,\n    0.717870045f,  0.696177131f,\n    0.715730825f,  0.698376249f,\n    0.713584869f,  0.700568794f,\n    0.711432196f,  0.702754744f,\n    0.709272826f,  0.704934080f,\n    0.707106781f,  0.707106781f,\n    0.704934080f,  0.709272826f,\n    0.702754744f,  0.711432196f,\n    0.700568794f,  0.713584869f,\n    0.698376249f,  0.715730825f,\n    0.696177131f,  0.717870045f,\n    0.693971461f,  0.720002508f,\n    0.691759258f,  0.722128194f,\n    0.689540545f,  0.724247083f,\n    0.687315341f,  0.726359155f,\n    0.685083668f,  0.728464390f,\n    0.682845546f,  0.730562769f,\n    0.680600998f,  0.732654272f,\n    0.678350043f,  0.734738878f,\n    0.676092704f,  0.736816569f,\n    0.673829000f,  0.738887324f,\n    0.671558955f,  0.740951125f,\n    0.669282588f,  0.743007952f,\n    0.666999922f,  0.745057785f,\n    0.664710978f,  0.747100606f,\n    0.662415778f,  0.749136395f,\n    0.660114342f,  0.751165132f,\n    0.657806693f,  0.753186799f,\n    0.655492853f,  0.755201377f,\n    0.653172843f,  0.757208847f,\n    0.650846685f,  0.759209189f,\n    0.648514401f,  0.761202385f,\n    0.646176013f,  0.763188417f,\n    0.643831543f,  0.765167266f,\n    0.641481013f,  0.767138912f,\n    0.639124445f,  0.769103338f,\n    0.636761861f,  0.771060524f,\n    0.634393284f,  0.773010453f,\n    0.632018736f,  0.774953107f,\n    0.629638239f,  0.776888466f,\n    0.627251815f,  0.778816512f,\n    0.624859488f,  0.780737229f,\n    0.622461279f,  0.782650596f,\n    0.620057212f,  0.784556597f,\n    0.617647308f,  0.786455214f,\n    0.615231591f,  0.788346428f,\n    0.612810082f,  0.790230221f,\n    0.610382806f,  0.792106577f,\n    0.607949785f,  0.793975478f,\n    0.605511041f,  0.795836905f,\n    0.603066599f,  0.797690841f,\n    0.600616479f,  0.799537269f,\n    0.598160707f,  0.801376172f,\n    0.595699304f,  0.803207531f,\n    0.593232295f,  0.805031331f,\n    0.590759702f,  0.806847554f,\n    0.588281548f,  0.808656182f,\n    0.585797857f,  0.810457198f,\n    0.583308653f,  0.812250587f,\n    0.580813958f,  0.814036330f,\n    0.578313796f,  0.815814411f,\n    0.575808191f,  0.817584813f,\n    0.573297167f,  0.819347520f,\n    0.570780746f,  0.821102515f,\n    0.568258953f,  0.822849781f,\n    0.565731811f,  0.824589303f,\n    0.563199344f,  0.826321063f,\n    0.560661576f,  0.828045045f,\n    0.558118531f,  0.829761234f,\n    0.555570233f,  0.831469612f,\n    0.553016706f,  0.833170165f,\n    0.550457973f,  0.834862875f,\n    0.547894059f,  0.836547727f,\n    0.545324988f,  0.838224706f,\n    0.542750785f,  0.839893794f,\n    0.540171473f,  0.841554977f,\n    0.537587076f,  0.843208240f,\n    0.534997620f,  0.844853565f,\n    0.532403128f,  0.846490939f,\n    0.529803625f,  0.848120345f,\n    0.527199135f,  0.849741768f,\n    0.524589683f,  0.851355193f,\n    0.521975293f,  0.852960605f,\n    0.519355990f,  0.854557988f,\n    0.516731799f,  0.856147328f,\n    0.514102744f,  0.857728610f,\n    0.511468850f,  0.859301818f,\n    0.508830143f,  0.860866939f,\n    0.506186645f,  0.862423956f,\n    0.503538384f,  0.863972856f,\n    0.500885383f,  0.865513624f,\n    0.498227667f,  0.867046246f,\n    0.495565262f,  0.868570706f,\n    0.492898192f,  0.870086991f,\n    0.490226483f,  0.871595087f,\n    0.487550160f,  0.873094978f,\n    0.484869248f,  0.874586652f,\n    0.482183772f,  0.876070094f,\n    0.479493758f,  0.877545290f,\n    0.476799230f,  0.879012226f,\n    0.474100215f,  0.880470889f,\n    0.471396737f,  0.881921264f,\n    0.468688822f,  0.883363339f,\n    0.465976496f,  0.884797098f,\n    0.463259784f,  0.886222530f,\n    0.460538711f,  0.887639620f,\n    0.457813304f,  0.889048356f,\n    0.455083587f,  0.890448723f,\n    0.452349587f,  0.891840709f,\n    0.449611330f,  0.893224301f,\n    0.446868840f,  0.894599486f,\n    0.444122145f,  0.895966250f,\n    0.441371269f,  0.897324581f,\n    0.438616239f,  0.898674466f,\n    0.435857080f,  0.900015892f,\n    0.433093819f,  0.901348847f,\n    0.430326481f,  0.902673318f,\n    0.427555093f,  0.903989293f,\n    0.424779681f,  0.905296759f,\n    0.422000271f,  0.906595705f,\n    0.419216888f,  0.907886116f,\n    0.416429560f,  0.909167983f,\n    0.413638312f,  0.910441292f,\n    0.410843171f,  0.911706032f,\n    0.408044163f,  0.912962190f,\n    0.405241314f,  0.914209756f,\n    0.402434651f,  0.915448716f,\n    0.399624200f,  0.916679060f,\n    0.396809987f,  0.917900776f,\n    0.393992040f,  0.919113852f,\n    0.391170384f,  0.920318277f,\n    0.388345047f,  0.921514039f,\n    0.385516054f,  0.922701128f,\n    0.382683432f,  0.923879533f,\n    0.379847209f,  0.925049241f,\n    0.377007410f,  0.926210242f,\n    0.374164063f,  0.927362526f,\n    0.371317194f,  0.928506080f,\n    0.368466830f,  0.929640896f,\n    0.365612998f,  0.930766961f,\n    0.362755724f,  0.931884266f,\n    0.359895037f,  0.932992799f,\n    0.357030961f,  0.934092550f,\n    0.354163525f,  0.935183510f,\n    0.351292756f,  0.936265667f,\n    0.348418680f,  0.937339012f,\n    0.345541325f,  0.938403534f,\n    0.342660717f,  0.939459224f,\n    0.339776884f,  0.940506071f,\n    0.336889853f,  0.941544065f,\n    0.333999651f,  0.942573198f,\n    0.331106306f,  0.943593458f,\n    0.328209844f,  0.944604837f,\n    0.325310292f,  0.945607325f,\n    0.322407679f,  0.946600913f,\n    0.319502031f,  0.947585591f,\n    0.316593376f,  0.948561350f,\n    0.313681740f,  0.949528181f,\n    0.310767153f,  0.950486074f,\n    0.307849640f,  0.951435021f,\n    0.304929230f,  0.952375013f,\n    0.302005949f,  0.953306040f,\n    0.299079826f,  0.954228095f,\n    0.296150888f,  0.955141168f,\n    0.293219163f,  0.956045251f,\n    0.290284677f,  0.956940336f,\n    0.287347460f,  0.957826413f,\n    0.284407537f,  0.958703475f,\n    0.281464938f,  0.959571513f,\n    0.278519689f,  0.960430519f,\n    0.275571819f,  0.961280486f,\n    0.272621355f,  0.962121404f,\n    0.269668326f,  0.962953267f,\n    0.266712757f,  0.963776066f,\n    0.263754679f,  0.964589793f,\n    0.260794118f,  0.965394442f,\n    0.257831102f,  0.966190003f,\n    0.254865660f,  0.966976471f,\n    0.251897818f,  0.967753837f,\n    0.248927606f,  0.968522094f,\n    0.245955050f,  0.969281235f,\n    0.242980180f,  0.970031253f,\n    0.240003022f,  0.970772141f,\n    0.237023606f,  0.971503891f,\n    0.234041959f,  0.972226497f,\n    0.231058108f,  0.972939952f,\n    0.228072083f,  0.973644250f,\n    0.225083911f,  0.974339383f,\n    0.222093621f,  0.975025345f,\n    0.219101240f,  0.975702130f,\n    0.216106797f,  0.976369731f,\n    0.213110320f,  0.977028143f,\n    0.210111837f,  0.977677358f,\n    0.207111376f,  0.978317371f,\n    0.204108966f,  0.978948175f,\n    0.201104635f,  0.979569766f,\n    0.198098411f,  0.980182136f,\n    0.195090322f,  0.980785280f,\n    0.192080397f,  0.981379193f,\n    0.189068664f,  0.981963869f,\n    0.186055152f,  0.982539302f,\n    0.183039888f,  0.983105487f,\n    0.180022901f,  0.983662419f,\n    0.177004220f,  0.984210092f,\n    0.173983873f,  0.984748502f,\n    0.170961889f,  0.985277642f,\n    0.167938295f,  0.985797509f,\n    0.164913120f,  0.986308097f,\n    0.161886394f,  0.986809402f,\n    0.158858143f,  0.987301418f,\n    0.155828398f,  0.987784142f,\n    0.152797185f,  0.988257568f,\n    0.149764535f,  0.988721692f,\n    0.146730474f,  0.989176510f,\n    0.143695033f,  0.989622017f,\n    0.140658239f,  0.990058210f,\n    0.137620122f,  0.990485084f,\n    0.134580709f,  0.990902635f,\n    0.131540029f,  0.991310860f,\n    0.128498111f,  0.991709754f,\n    0.125454983f,  0.992099313f,\n    0.122410675f,  0.992479535f,\n    0.119365215f,  0.992850414f,\n    0.116318631f,  0.993211949f,\n    0.113270952f,  0.993564136f,\n    0.110222207f,  0.993906970f,\n    0.107172425f,  0.994240449f,\n    0.104121634f,  0.994564571f,\n    0.101069863f,  0.994879331f,\n    0.098017140f,  0.995184727f,\n    0.094963495f,  0.995480755f,\n    0.091908956f,  0.995767414f,\n    0.088853553f,  0.996044701f,\n    0.085797312f,  0.996312612f,\n    0.082740265f,  0.996571146f,\n    0.079682438f,  0.996820299f,\n    0.076623861f,  0.997060070f,\n    0.073564564f,  0.997290457f,\n    0.070504573f,  0.997511456f,\n    0.067443920f,  0.997723067f,\n    0.064382631f,  0.997925286f,\n    0.061320736f,  0.998118113f,\n    0.058258265f,  0.998301545f,\n    0.055195244f,  0.998475581f,\n    0.052131705f,  0.998640218f,\n    0.049067674f,  0.998795456f,\n    0.046003182f,  0.998941293f,\n    0.042938257f,  0.999077728f,\n    0.039872928f,  0.999204759f,\n    0.036807223f,  0.999322385f,\n    0.033741172f,  0.999430605f,\n    0.030674803f,  0.999529418f,\n    0.027608146f,  0.999618822f,\n    0.024541229f,  0.999698819f,\n    0.021474080f,  0.999769405f,\n    0.018406730f,  0.999830582f,\n    0.015339206f,  0.999882347f,\n    0.012271538f,  0.999924702f,\n    0.009203755f,  0.999957645f,\n    0.006135885f,  0.999981175f,\n    0.003067957f,  0.999995294f,\n    0.000000000f,  1.000000000f,\n   -0.003067957f,  0.999995294f,\n   -0.006135885f,  0.999981175f,\n   -0.009203755f,  0.999957645f,\n   -0.012271538f,  0.999924702f,\n   -0.015339206f,  0.999882347f,\n   -0.018406730f,  0.999830582f,\n   -0.021474080f,  0.999769405f,\n   -0.024541229f,  0.999698819f,\n   -0.027608146f,  0.999618822f,\n   -0.030674803f,  0.999529418f,\n   -0.033741172f,  0.999430605f,\n   -0.036807223f,  0.999322385f,\n   -0.039872928f,  0.999204759f,\n   -0.042938257f,  0.999077728f,\n   -0.046003182f,  0.998941293f,\n   -0.049067674f,  0.998795456f,\n   -0.052131705f,  0.998640218f,\n   -0.055195244f,  0.998475581f,\n   -0.058258265f,  0.998301545f,\n   -0.061320736f,  0.998118113f,\n   -0.064382631f,  0.997925286f,\n   -0.067443920f,  0.997723067f,\n   -0.070504573f,  0.997511456f,\n   -0.073564564f,  0.997290457f,\n   -0.076623861f,  0.997060070f,\n   -0.079682438f,  0.996820299f,\n   -0.082740265f,  0.996571146f,\n   -0.085797312f,  0.996312612f,\n   -0.088853553f,  0.996044701f,\n   -0.091908956f,  0.995767414f,\n   -0.094963495f,  0.995480755f,\n   -0.098017140f,  0.995184727f,\n   -0.101069863f,  0.994879331f,\n   -0.104121634f,  0.994564571f,\n   -0.107172425f,  0.994240449f,\n   -0.110222207f,  0.993906970f,\n   -0.113270952f,  0.993564136f,\n   -0.116318631f,  0.993211949f,\n   -0.119365215f,  0.992850414f,\n   -0.122410675f,  0.992479535f,\n   -0.125454983f,  0.992099313f,\n   -0.128498111f,  0.991709754f,\n   -0.131540029f,  0.991310860f,\n   -0.134580709f,  0.990902635f,\n   -0.137620122f,  0.990485084f,\n   -0.140658239f,  0.990058210f,\n   -0.143695033f,  0.989622017f,\n   -0.146730474f,  0.989176510f,\n   -0.149764535f,  0.988721692f,\n   -0.152797185f,  0.988257568f,\n   -0.155828398f,  0.987784142f,\n   -0.158858143f,  0.987301418f,\n   -0.161886394f,  0.986809402f,\n   -0.164913120f,  0.986308097f,\n   -0.167938295f,  0.985797509f,\n   -0.170961889f,  0.985277642f,\n   -0.173983873f,  0.984748502f,\n   -0.177004220f,  0.984210092f,\n   -0.180022901f,  0.983662419f,\n   -0.183039888f,  0.983105487f,\n   -0.186055152f,  0.982539302f,\n   -0.189068664f,  0.981963869f,\n   -0.192080397f,  0.981379193f,\n   -0.195090322f,  0.980785280f,\n   -0.198098411f,  0.980182136f,\n   -0.201104635f,  0.979569766f,\n   -0.204108966f,  0.978948175f,\n   -0.207111376f,  0.978317371f,\n   -0.210111837f,  0.977677358f,\n   -0.213110320f,  0.977028143f,\n   -0.216106797f,  0.976369731f,\n   -0.219101240f,  0.975702130f,\n   -0.222093621f,  0.975025345f,\n   -0.225083911f,  0.974339383f,\n   -0.228072083f,  0.973644250f,\n   -0.231058108f,  0.972939952f,\n   -0.234041959f,  0.972226497f,\n   -0.237023606f,  0.971503891f,\n   -0.240003022f,  0.970772141f,\n   -0.242980180f,  0.970031253f,\n   -0.245955050f,  0.969281235f,\n   -0.248927606f,  0.968522094f,\n   -0.251897818f,  0.967753837f,\n   -0.254865660f,  0.966976471f,\n   -0.257831102f,  0.966190003f,\n   -0.260794118f,  0.965394442f,\n   -0.263754679f,  0.964589793f,\n   -0.266712757f,  0.963776066f,\n   -0.269668326f,  0.962953267f,\n   -0.272621355f,  0.962121404f,\n   -0.275571819f,  0.961280486f,\n   -0.278519689f,  0.960430519f,\n   -0.281464938f,  0.959571513f,\n   -0.284407537f,  0.958703475f,\n   -0.287347460f,  0.957826413f,\n   -0.290284677f,  0.956940336f,\n   -0.293219163f,  0.956045251f,\n   -0.296150888f,  0.955141168f,\n   -0.299079826f,  0.954228095f,\n   -0.302005949f,  0.953306040f,\n   -0.304929230f,  0.952375013f,\n   -0.307849640f,  0.951435021f,\n   -0.310767153f,  0.950486074f,\n   -0.313681740f,  0.949528181f,\n   -0.316593376f,  0.948561350f,\n   -0.319502031f,  0.947585591f,\n   -0.322407679f,  0.946600913f,\n   -0.325310292f,  0.945607325f,\n   -0.328209844f,  0.944604837f,\n   -0.331106306f,  0.943593458f,\n   -0.333999651f,  0.942573198f,\n   -0.336889853f,  0.941544065f,\n   -0.339776884f,  0.940506071f,\n   -0.342660717f,  0.939459224f,\n   -0.345541325f,  0.938403534f,\n   -0.348418680f,  0.937339012f,\n   -0.351292756f,  0.936265667f,\n   -0.354163525f,  0.935183510f,\n   -0.357030961f,  0.934092550f,\n   -0.359895037f,  0.932992799f,\n   -0.362755724f,  0.931884266f,\n   -0.365612998f,  0.930766961f,\n   -0.368466830f,  0.929640896f,\n   -0.371317194f,  0.928506080f,\n   -0.374164063f,  0.927362526f,\n   -0.377007410f,  0.926210242f,\n   -0.379847209f,  0.925049241f,\n   -0.382683432f,  0.923879533f,\n   -0.385516054f,  0.922701128f,\n   -0.388345047f,  0.921514039f,\n   -0.391170384f,  0.920318277f,\n   -0.393992040f,  0.919113852f,\n   -0.396809987f,  0.917900776f,\n   -0.399624200f,  0.916679060f,\n   -0.402434651f,  0.915448716f,\n   -0.405241314f,  0.914209756f,\n   -0.408044163f,  0.912962190f,\n   -0.410843171f,  0.911706032f,\n   -0.413638312f,  0.910441292f,\n   -0.416429560f,  0.909167983f,\n   -0.419216888f,  0.907886116f,\n   -0.422000271f,  0.906595705f,\n   -0.424779681f,  0.905296759f,\n   -0.427555093f,  0.903989293f,\n   -0.430326481f,  0.902673318f,\n   -0.433093819f,  0.901348847f,\n   -0.435857080f,  0.900015892f,\n   -0.438616239f,  0.898674466f,\n   -0.441371269f,  0.897324581f,\n   -0.444122145f,  0.895966250f,\n   -0.446868840f,  0.894599486f,\n   -0.449611330f,  0.893224301f,\n   -0.452349587f,  0.891840709f,\n   -0.455083587f,  0.890448723f,\n   -0.457813304f,  0.889048356f,\n   -0.460538711f,  0.887639620f,\n   -0.463259784f,  0.886222530f,\n   -0.465976496f,  0.884797098f,\n   -0.468688822f,  0.883363339f,\n   -0.471396737f,  0.881921264f,\n   -0.474100215f,  0.880470889f,\n   -0.476799230f,  0.879012226f,\n   -0.479493758f,  0.877545290f,\n   -0.482183772f,  0.876070094f,\n   -0.484869248f,  0.874586652f,\n   -0.487550160f,  0.873094978f,\n   -0.490226483f,  0.871595087f,\n   -0.492898192f,  0.870086991f,\n   -0.495565262f,  0.868570706f,\n   -0.498227667f,  0.867046246f,\n   -0.500885383f,  0.865513624f,\n   -0.503538384f,  0.863972856f,\n   -0.506186645f,  0.862423956f,\n   -0.508830143f,  0.860866939f,\n   -0.511468850f,  0.859301818f,\n   -0.514102744f,  0.857728610f,\n   -0.516731799f,  0.856147328f,\n   -0.519355990f,  0.854557988f,\n   -0.521975293f,  0.852960605f,\n   -0.524589683f,  0.851355193f,\n   -0.527199135f,  0.849741768f,\n   -0.529803625f,  0.848120345f,\n   -0.532403128f,  0.846490939f,\n   -0.534997620f,  0.844853565f,\n   -0.537587076f,  0.843208240f,\n   -0.540171473f,  0.841554977f,\n   -0.542750785f,  0.839893794f,\n   -0.545324988f,  0.838224706f,\n   -0.547894059f,  0.836547727f,\n   -0.550457973f,  0.834862875f,\n   -0.553016706f,  0.833170165f,\n   -0.555570233f,  0.831469612f,\n   -0.558118531f,  0.829761234f,\n   -0.560661576f,  0.828045045f,\n   -0.563199344f,  0.826321063f,\n   -0.565731811f,  0.824589303f,\n   -0.568258953f,  0.822849781f,\n   -0.570780746f,  0.821102515f,\n   -0.573297167f,  0.819347520f,\n   -0.575808191f,  0.817584813f,\n   -0.578313796f,  0.815814411f,\n   -0.580813958f,  0.814036330f,\n   -0.583308653f,  0.812250587f,\n   -0.585797857f,  0.810457198f,\n   -0.588281548f,  0.808656182f,\n   -0.590759702f,  0.806847554f,\n   -0.593232295f,  0.805031331f,\n   -0.595699304f,  0.803207531f,\n   -0.598160707f,  0.801376172f,\n   -0.600616479f,  0.799537269f,\n   -0.603066599f,  0.797690841f,\n   -0.605511041f,  0.795836905f,\n   -0.607949785f,  0.793975478f,\n   -0.610382806f,  0.792106577f,\n   -0.612810082f,  0.790230221f,\n   -0.615231591f,  0.788346428f,\n   -0.617647308f,  0.786455214f,\n   -0.620057212f,  0.784556597f,\n   -0.622461279f,  0.782650596f,\n   -0.624859488f,  0.780737229f,\n   -0.627251815f,  0.778816512f,\n   -0.629638239f,  0.776888466f,\n   -0.632018736f,  0.774953107f,\n   -0.634393284f,  0.773010453f,\n   -0.636761861f,  0.771060524f,\n   -0.639124445f,  0.769103338f,\n   -0.641481013f,  0.767138912f,\n   -0.643831543f,  0.765167266f,\n   -0.646176013f,  0.763188417f,\n   -0.648514401f,  0.761202385f,\n   -0.650846685f,  0.759209189f,\n   -0.653172843f,  0.757208847f,\n   -0.655492853f,  0.755201377f,\n   -0.657806693f,  0.753186799f,\n   -0.660114342f,  0.751165132f,\n   -0.662415778f,  0.749136395f,\n   -0.664710978f,  0.747100606f,\n   -0.666999922f,  0.745057785f,\n   -0.669282588f,  0.743007952f,\n   -0.671558955f,  0.740951125f,\n   -0.673829000f,  0.738887324f,\n   -0.676092704f,  0.736816569f,\n   -0.678350043f,  0.734738878f,\n   -0.680600998f,  0.732654272f,\n   -0.682845546f,  0.730562769f,\n   -0.685083668f,  0.728464390f,\n   -0.687315341f,  0.726359155f,\n   -0.689540545f,  0.724247083f,\n   -0.691759258f,  0.722128194f,\n   -0.693971461f,  0.720002508f,\n   -0.696177131f,  0.717870045f,\n   -0.698376249f,  0.715730825f,\n   -0.700568794f,  0.713584869f,\n   -0.702754744f,  0.711432196f,\n   -0.704934080f,  0.709272826f,\n   -0.707106781f,  0.707106781f,\n   -0.709272826f,  0.704934080f,\n   -0.711432196f,  0.702754744f,\n   -0.713584869f,  0.700568794f,\n   -0.715730825f,  0.698376249f,\n   -0.717870045f,  0.696177131f,\n   -0.720002508f,  0.693971461f,\n   -0.722128194f,  0.691759258f,\n   -0.724247083f,  0.689540545f,\n   -0.726359155f,  0.687315341f,\n   -0.728464390f,  0.685083668f,\n   -0.730562769f,  0.682845546f,\n   -0.732654272f,  0.680600998f,\n   -0.734738878f,  0.678350043f,\n   -0.736816569f,  0.676092704f,\n   -0.738887324f,  0.673829000f,\n   -0.740951125f,  0.671558955f,\n   -0.743007952f,  0.669282588f,\n   -0.745057785f,  0.666999922f,\n   -0.747100606f,  0.664710978f,\n   -0.749136395f,  0.662415778f,\n   -0.751165132f,  0.660114342f,\n   -0.753186799f,  0.657806693f,\n   -0.755201377f,  0.655492853f,\n   -0.757208847f,  0.653172843f,\n   -0.759209189f,  0.650846685f,\n   -0.761202385f,  0.648514401f,\n   -0.763188417f,  0.646176013f,\n   -0.765167266f,  0.643831543f,\n   -0.767138912f,  0.641481013f,\n   -0.769103338f,  0.639124445f,\n   -0.771060524f,  0.636761861f,\n   -0.773010453f,  0.634393284f,\n   -0.774953107f,  0.632018736f,\n   -0.776888466f,  0.629638239f,\n   -0.778816512f,  0.627251815f,\n   -0.780737229f,  0.624859488f,\n   -0.782650596f,  0.622461279f,\n   -0.784556597f,  0.620057212f,\n   -0.786455214f,  0.617647308f,\n   -0.788346428f,  0.615231591f,\n   -0.790230221f,  0.612810082f,\n   -0.792106577f,  0.610382806f,\n   -0.793975478f,  0.607949785f,\n   -0.795836905f,  0.605511041f,\n   -0.797690841f,  0.603066599f,\n   -0.799537269f,  0.600616479f,\n   -0.801376172f,  0.598160707f,\n   -0.803207531f,  0.595699304f,\n   -0.805031331f,  0.593232295f,\n   -0.806847554f,  0.590759702f,\n   -0.808656182f,  0.588281548f,\n   -0.810457198f,  0.585797857f,\n   -0.812250587f,  0.583308653f,\n   -0.814036330f,  0.580813958f,\n   -0.815814411f,  0.578313796f,\n   -0.817584813f,  0.575808191f,\n   -0.819347520f,  0.573297167f,\n   -0.821102515f,  0.570780746f,\n   -0.822849781f,  0.568258953f,\n   -0.824589303f,  0.565731811f,\n   -0.826321063f,  0.563199344f,\n   -0.828045045f,  0.560661576f,\n   -0.829761234f,  0.558118531f,\n   -0.831469612f,  0.555570233f,\n   -0.833170165f,  0.553016706f,\n   -0.834862875f,  0.550457973f,\n   -0.836547727f,  0.547894059f,\n   -0.838224706f,  0.545324988f,\n   -0.839893794f,  0.542750785f,\n   -0.841554977f,  0.540171473f,\n   -0.843208240f,  0.537587076f,\n   -0.844853565f,  0.534997620f,\n   -0.846490939f,  0.532403128f,\n   -0.848120345f,  0.529803625f,\n   -0.849741768f,  0.527199135f,\n   -0.851355193f,  0.524589683f,\n   -0.852960605f,  0.521975293f,\n   -0.854557988f,  0.519355990f,\n   -0.856147328f,  0.516731799f,\n   -0.857728610f,  0.514102744f,\n   -0.859301818f,  0.511468850f,\n   -0.860866939f,  0.508830143f,\n   -0.862423956f,  0.506186645f,\n   -0.863972856f,  0.503538384f,\n   -0.865513624f,  0.500885383f,\n   -0.867046246f,  0.498227667f,\n   -0.868570706f,  0.495565262f,\n   -0.870086991f,  0.492898192f,\n   -0.871595087f,  0.490226483f,\n   -0.873094978f,  0.487550160f,\n   -0.874586652f,  0.484869248f,\n   -0.876070094f,  0.482183772f,\n   -0.877545290f,  0.479493758f,\n   -0.879012226f,  0.476799230f,\n   -0.880470889f,  0.474100215f,\n   -0.881921264f,  0.471396737f,\n   -0.883363339f,  0.468688822f,\n   -0.884797098f,  0.465976496f,\n   -0.886222530f,  0.463259784f,\n   -0.887639620f,  0.460538711f,\n   -0.889048356f,  0.457813304f,\n   -0.890448723f,  0.455083587f,\n   -0.891840709f,  0.452349587f,\n   -0.893224301f,  0.449611330f,\n   -0.894599486f,  0.446868840f,\n   -0.895966250f,  0.444122145f,\n   -0.897324581f,  0.441371269f,\n   -0.898674466f,  0.438616239f,\n   -0.900015892f,  0.435857080f,\n   -0.901348847f,  0.433093819f,\n   -0.902673318f,  0.430326481f,\n   -0.903989293f,  0.427555093f,\n   -0.905296759f,  0.424779681f,\n   -0.906595705f,  0.422000271f,\n   -0.907886116f,  0.419216888f,\n   -0.909167983f,  0.416429560f,\n   -0.910441292f,  0.413638312f,\n   -0.911706032f,  0.410843171f,\n   -0.912962190f,  0.408044163f,\n   -0.914209756f,  0.405241314f,\n   -0.915448716f,  0.402434651f,\n   -0.916679060f,  0.399624200f,\n   -0.917900776f,  0.396809987f,\n   -0.919113852f,  0.393992040f,\n   -0.920318277f,  0.391170384f,\n   -0.921514039f,  0.388345047f,\n   -0.922701128f,  0.385516054f,\n   -0.923879533f,  0.382683432f,\n   -0.925049241f,  0.379847209f,\n   -0.926210242f,  0.377007410f,\n   -0.927362526f,  0.374164063f,\n   -0.928506080f,  0.371317194f,\n   -0.929640896f,  0.368466830f,\n   -0.930766961f,  0.365612998f,\n   -0.931884266f,  0.362755724f,\n   -0.932992799f,  0.359895037f,\n   -0.934092550f,  0.357030961f,\n   -0.935183510f,  0.354163525f,\n   -0.936265667f,  0.351292756f,\n   -0.937339012f,  0.348418680f,\n   -0.938403534f,  0.345541325f,\n   -0.939459224f,  0.342660717f,\n   -0.940506071f,  0.339776884f,\n   -0.941544065f,  0.336889853f,\n   -0.942573198f,  0.333999651f,\n   -0.943593458f,  0.331106306f,\n   -0.944604837f,  0.328209844f,\n   -0.945607325f,  0.325310292f,\n   -0.946600913f,  0.322407679f,\n   -0.947585591f,  0.319502031f,\n   -0.948561350f,  0.316593376f,\n   -0.949528181f,  0.313681740f,\n   -0.950486074f,  0.310767153f,\n   -0.951435021f,  0.307849640f,\n   -0.952375013f,  0.304929230f,\n   -0.953306040f,  0.302005949f,\n   -0.954228095f,  0.299079826f,\n   -0.955141168f,  0.296150888f,\n   -0.956045251f,  0.293219163f,\n   -0.956940336f,  0.290284677f,\n   -0.957826413f,  0.287347460f,\n   -0.958703475f,  0.284407537f,\n   -0.959571513f,  0.281464938f,\n   -0.960430519f,  0.278519689f,\n   -0.961280486f,  0.275571819f,\n   -0.962121404f,  0.272621355f,\n   -0.962953267f,  0.269668326f,\n   -0.963776066f,  0.266712757f,\n   -0.964589793f,  0.263754679f,\n   -0.965394442f,  0.260794118f,\n   -0.966190003f,  0.257831102f,\n   -0.966976471f,  0.254865660f,\n   -0.967753837f,  0.251897818f,\n   -0.968522094f,  0.248927606f,\n   -0.969281235f,  0.245955050f,\n   -0.970031253f,  0.242980180f,\n   -0.970772141f,  0.240003022f,\n   -0.971503891f,  0.237023606f,\n   -0.972226497f,  0.234041959f,\n   -0.972939952f,  0.231058108f,\n   -0.973644250f,  0.228072083f,\n   -0.974339383f,  0.225083911f,\n   -0.975025345f,  0.222093621f,\n   -0.975702130f,  0.219101240f,\n   -0.976369731f,  0.216106797f,\n   -0.977028143f,  0.213110320f,\n   -0.977677358f,  0.210111837f,\n   -0.978317371f,  0.207111376f,\n   -0.978948175f,  0.204108966f,\n   -0.979569766f,  0.201104635f,\n   -0.980182136f,  0.198098411f,\n   -0.980785280f,  0.195090322f,\n   -0.981379193f,  0.192080397f,\n   -0.981963869f,  0.189068664f,\n   -0.982539302f,  0.186055152f,\n   -0.983105487f,  0.183039888f,\n   -0.983662419f,  0.180022901f,\n   -0.984210092f,  0.177004220f,\n   -0.984748502f,  0.173983873f,\n   -0.985277642f,  0.170961889f,\n   -0.985797509f,  0.167938295f,\n   -0.986308097f,  0.164913120f,\n   -0.986809402f,  0.161886394f,\n   -0.987301418f,  0.158858143f,\n   -0.987784142f,  0.155828398f,\n   -0.988257568f,  0.152797185f,\n   -0.988721692f,  0.149764535f,\n   -0.989176510f,  0.146730474f,\n   -0.989622017f,  0.143695033f,\n   -0.990058210f,  0.140658239f,\n   -0.990485084f,  0.137620122f,\n   -0.990902635f,  0.134580709f,\n   -0.991310860f,  0.131540029f,\n   -0.991709754f,  0.128498111f,\n   -0.992099313f,  0.125454983f,\n   -0.992479535f,  0.122410675f,\n   -0.992850414f,  0.119365215f,\n   -0.993211949f,  0.116318631f,\n   -0.993564136f,  0.113270952f,\n   -0.993906970f,  0.110222207f,\n   -0.994240449f,  0.107172425f,\n   -0.994564571f,  0.104121634f,\n   -0.994879331f,  0.101069863f,\n   -0.995184727f,  0.098017140f,\n   -0.995480755f,  0.094963495f,\n   -0.995767414f,  0.091908956f,\n   -0.996044701f,  0.088853553f,\n   -0.996312612f,  0.085797312f,\n   -0.996571146f,  0.082740265f,\n   -0.996820299f,  0.079682438f,\n   -0.997060070f,  0.076623861f,\n   -0.997290457f,  0.073564564f,\n   -0.997511456f,  0.070504573f,\n   -0.997723067f,  0.067443920f,\n   -0.997925286f,  0.064382631f,\n   -0.998118113f,  0.061320736f,\n   -0.998301545f,  0.058258265f,\n   -0.998475581f,  0.055195244f,\n   -0.998640218f,  0.052131705f,\n   -0.998795456f,  0.049067674f,\n   -0.998941293f,  0.046003182f,\n   -0.999077728f,  0.042938257f,\n   -0.999204759f,  0.039872928f,\n   -0.999322385f,  0.036807223f,\n   -0.999430605f,  0.033741172f,\n   -0.999529418f,  0.030674803f,\n   -0.999618822f,  0.027608146f,\n   -0.999698819f,  0.024541229f,\n   -0.999769405f,  0.021474080f,\n   -0.999830582f,  0.018406730f,\n   -0.999882347f,  0.015339206f,\n   -0.999924702f,  0.012271538f,\n   -0.999957645f,  0.009203755f,\n   -0.999981175f,  0.006135885f,\n   -0.999995294f,  0.003067957f,\n   -1.000000000f,  0.000000000f,\n   -0.999995294f, -0.003067957f,\n   -0.999981175f, -0.006135885f,\n   -0.999957645f, -0.009203755f,\n   -0.999924702f, -0.012271538f,\n   -0.999882347f, -0.015339206f,\n   -0.999830582f, -0.018406730f,\n   -0.999769405f, -0.021474080f,\n   -0.999698819f, -0.024541229f,\n   -0.999618822f, -0.027608146f,\n   -0.999529418f, -0.030674803f,\n   -0.999430605f, -0.033741172f,\n   -0.999322385f, -0.036807223f,\n   -0.999204759f, -0.039872928f,\n   -0.999077728f, -0.042938257f,\n   -0.998941293f, -0.046003182f,\n   -0.998795456f, -0.049067674f,\n   -0.998640218f, -0.052131705f,\n   -0.998475581f, -0.055195244f,\n   -0.998301545f, -0.058258265f,\n   -0.998118113f, -0.061320736f,\n   -0.997925286f, -0.064382631f,\n   -0.997723067f, -0.067443920f,\n   -0.997511456f, -0.070504573f,\n   -0.997290457f, -0.073564564f,\n   -0.997060070f, -0.076623861f,\n   -0.996820299f, -0.079682438f,\n   -0.996571146f, -0.082740265f,\n   -0.996312612f, -0.085797312f,\n   -0.996044701f, -0.088853553f,\n   -0.995767414f, -0.091908956f,\n   -0.995480755f, -0.094963495f,\n   -0.995184727f, -0.098017140f,\n   -0.994879331f, -0.101069863f,\n   -0.994564571f, -0.104121634f,\n   -0.994240449f, -0.107172425f,\n   -0.993906970f, -0.110222207f,\n   -0.993564136f, -0.113270952f,\n   -0.993211949f, -0.116318631f,\n   -0.992850414f, -0.119365215f,\n   -0.992479535f, -0.122410675f,\n   -0.992099313f, -0.125454983f,\n   -0.991709754f, -0.128498111f,\n   -0.991310860f, -0.131540029f,\n   -0.990902635f, -0.134580709f,\n   -0.990485084f, -0.137620122f,\n   -0.990058210f, -0.140658239f,\n   -0.989622017f, -0.143695033f,\n   -0.989176510f, -0.146730474f,\n   -0.988721692f, -0.149764535f,\n   -0.988257568f, -0.152797185f,\n   -0.987784142f, -0.155828398f,\n   -0.987301418f, -0.158858143f,\n   -0.986809402f, -0.161886394f,\n   -0.986308097f, -0.164913120f,\n   -0.985797509f, -0.167938295f,\n   -0.985277642f, -0.170961889f,\n   -0.984748502f, -0.173983873f,\n   -0.984210092f, -0.177004220f,\n   -0.983662419f, -0.180022901f,\n   -0.983105487f, -0.183039888f,\n   -0.982539302f, -0.186055152f,\n   -0.981963869f, -0.189068664f,\n   -0.981379193f, -0.192080397f,\n   -0.980785280f, -0.195090322f,\n   -0.980182136f, -0.198098411f,\n   -0.979569766f, -0.201104635f,\n   -0.978948175f, -0.204108966f,\n   -0.978317371f, -0.207111376f,\n   -0.977677358f, -0.210111837f,\n   -0.977028143f, -0.213110320f,\n   -0.976369731f, -0.216106797f,\n   -0.975702130f, -0.219101240f,\n   -0.975025345f, -0.222093621f,\n   -0.974339383f, -0.225083911f,\n   -0.973644250f, -0.228072083f,\n   -0.972939952f, -0.231058108f,\n   -0.972226497f, -0.234041959f,\n   -0.971503891f, -0.237023606f,\n   -0.970772141f, -0.240003022f,\n   -0.970031253f, -0.242980180f,\n   -0.969281235f, -0.245955050f,\n   -0.968522094f, -0.248927606f,\n   -0.967753837f, -0.251897818f,\n   -0.966976471f, -0.254865660f,\n   -0.966190003f, -0.257831102f,\n   -0.965394442f, -0.260794118f,\n   -0.964589793f, -0.263754679f,\n   -0.963776066f, -0.266712757f,\n   -0.962953267f, -0.269668326f,\n   -0.962121404f, -0.272621355f,\n   -0.961280486f, -0.275571819f,\n   -0.960430519f, -0.278519689f,\n   -0.959571513f, -0.281464938f,\n   -0.958703475f, -0.284407537f,\n   -0.957826413f, -0.287347460f,\n   -0.956940336f, -0.290284677f,\n   -0.956045251f, -0.293219163f,\n   -0.955141168f, -0.296150888f,\n   -0.954228095f, -0.299079826f,\n   -0.953306040f, -0.302005949f,\n   -0.952375013f, -0.304929230f,\n   -0.951435021f, -0.307849640f,\n   -0.950486074f, -0.310767153f,\n   -0.949528181f, -0.313681740f,\n   -0.948561350f, -0.316593376f,\n   -0.947585591f, -0.319502031f,\n   -0.946600913f, -0.322407679f,\n   -0.945607325f, -0.325310292f,\n   -0.944604837f, -0.328209844f,\n   -0.943593458f, -0.331106306f,\n   -0.942573198f, -0.333999651f,\n   -0.941544065f, -0.336889853f,\n   -0.940506071f, -0.339776884f,\n   -0.939459224f, -0.342660717f,\n   -0.938403534f, -0.345541325f,\n   -0.937339012f, -0.348418680f,\n   -0.936265667f, -0.351292756f,\n   -0.935183510f, -0.354163525f,\n   -0.934092550f, -0.357030961f,\n   -0.932992799f, -0.359895037f,\n   -0.931884266f, -0.362755724f,\n   -0.930766961f, -0.365612998f,\n   -0.929640896f, -0.368466830f,\n   -0.928506080f, -0.371317194f,\n   -0.927362526f, -0.374164063f,\n   -0.926210242f, -0.377007410f,\n   -0.925049241f, -0.379847209f,\n   -0.923879533f, -0.382683432f,\n   -0.922701128f, -0.385516054f,\n   -0.921514039f, -0.388345047f,\n   -0.920318277f, -0.391170384f,\n   -0.919113852f, -0.393992040f,\n   -0.917900776f, -0.396809987f,\n   -0.916679060f, -0.399624200f,\n   -0.915448716f, -0.402434651f,\n   -0.914209756f, -0.405241314f,\n   -0.912962190f, -0.408044163f,\n   -0.911706032f, -0.410843171f,\n   -0.910441292f, -0.413638312f,\n   -0.909167983f, -0.416429560f,\n   -0.907886116f, -0.419216888f,\n   -0.906595705f, -0.422000271f,\n   -0.905296759f, -0.424779681f,\n   -0.903989293f, -0.427555093f,\n   -0.902673318f, -0.430326481f,\n   -0.901348847f, -0.433093819f,\n   -0.900015892f, -0.435857080f,\n   -0.898674466f, -0.438616239f,\n   -0.897324581f, -0.441371269f,\n   -0.895966250f, -0.444122145f,\n   -0.894599486f, -0.446868840f,\n   -0.893224301f, -0.449611330f,\n   -0.891840709f, -0.452349587f,\n   -0.890448723f, -0.455083587f,\n   -0.889048356f, -0.457813304f,\n   -0.887639620f, -0.460538711f,\n   -0.886222530f, -0.463259784f,\n   -0.884797098f, -0.465976496f,\n   -0.883363339f, -0.468688822f,\n   -0.881921264f, -0.471396737f,\n   -0.880470889f, -0.474100215f,\n   -0.879012226f, -0.476799230f,\n   -0.877545290f, -0.479493758f,\n   -0.876070094f, -0.482183772f,\n   -0.874586652f, -0.484869248f,\n   -0.873094978f, -0.487550160f,\n   -0.871595087f, -0.490226483f,\n   -0.870086991f, -0.492898192f,\n   -0.868570706f, -0.495565262f,\n   -0.867046246f, -0.498227667f,\n   -0.865513624f, -0.500885383f,\n   -0.863972856f, -0.503538384f,\n   -0.862423956f, -0.506186645f,\n   -0.860866939f, -0.508830143f,\n   -0.859301818f, -0.511468850f,\n   -0.857728610f, -0.514102744f,\n   -0.856147328f, -0.516731799f,\n   -0.854557988f, -0.519355990f,\n   -0.852960605f, -0.521975293f,\n   -0.851355193f, -0.524589683f,\n   -0.849741768f, -0.527199135f,\n   -0.848120345f, -0.529803625f,\n   -0.846490939f, -0.532403128f,\n   -0.844853565f, -0.534997620f,\n   -0.843208240f, -0.537587076f,\n   -0.841554977f, -0.540171473f,\n   -0.839893794f, -0.542750785f,\n   -0.838224706f, -0.545324988f,\n   -0.836547727f, -0.547894059f,\n   -0.834862875f, -0.550457973f,\n   -0.833170165f, -0.553016706f,\n   -0.831469612f, -0.555570233f,\n   -0.829761234f, -0.558118531f,\n   -0.828045045f, -0.560661576f,\n   -0.826321063f, -0.563199344f,\n   -0.824589303f, -0.565731811f,\n   -0.822849781f, -0.568258953f,\n   -0.821102515f, -0.570780746f,\n   -0.819347520f, -0.573297167f,\n   -0.817584813f, -0.575808191f,\n   -0.815814411f, -0.578313796f,\n   -0.814036330f, -0.580813958f,\n   -0.812250587f, -0.583308653f,\n   -0.810457198f, -0.585797857f,\n   -0.808656182f, -0.588281548f,\n   -0.806847554f, -0.590759702f,\n   -0.805031331f, -0.593232295f,\n   -0.803207531f, -0.595699304f,\n   -0.801376172f, -0.598160707f,\n   -0.799537269f, -0.600616479f,\n   -0.797690841f, -0.603066599f,\n   -0.795836905f, -0.605511041f,\n   -0.793975478f, -0.607949785f,\n   -0.792106577f, -0.610382806f,\n   -0.790230221f, -0.612810082f,\n   -0.788346428f, -0.615231591f,\n   -0.786455214f, -0.617647308f,\n   -0.784556597f, -0.620057212f,\n   -0.782650596f, -0.622461279f,\n   -0.780737229f, -0.624859488f,\n   -0.778816512f, -0.627251815f,\n   -0.776888466f, -0.629638239f,\n   -0.774953107f, -0.632018736f,\n   -0.773010453f, -0.634393284f,\n   -0.771060524f, -0.636761861f,\n   -0.769103338f, -0.639124445f,\n   -0.767138912f, -0.641481013f,\n   -0.765167266f, -0.643831543f,\n   -0.763188417f, -0.646176013f,\n   -0.761202385f, -0.648514401f,\n   -0.759209189f, -0.650846685f,\n   -0.757208847f, -0.653172843f,\n   -0.755201377f, -0.655492853f,\n   -0.753186799f, -0.657806693f,\n   -0.751165132f, -0.660114342f,\n   -0.749136395f, -0.662415778f,\n   -0.747100606f, -0.664710978f,\n   -0.745057785f, -0.666999922f,\n   -0.743007952f, -0.669282588f,\n   -0.740951125f, -0.671558955f,\n   -0.738887324f, -0.673829000f,\n   -0.736816569f, -0.676092704f,\n   -0.734738878f, -0.678350043f,\n   -0.732654272f, -0.680600998f,\n   -0.730562769f, -0.682845546f,\n   -0.728464390f, -0.685083668f,\n   -0.726359155f, -0.687315341f,\n   -0.724247083f, -0.689540545f,\n   -0.722128194f, -0.691759258f,\n   -0.720002508f, -0.693971461f,\n   -0.717870045f, -0.696177131f,\n   -0.715730825f, -0.698376249f,\n   -0.713584869f, -0.700568794f,\n   -0.711432196f, -0.702754744f,\n   -0.709272826f, -0.704934080f,\n   -0.707106781f, -0.707106781f,\n   -0.704934080f, -0.709272826f,\n   -0.702754744f, -0.711432196f,\n   -0.700568794f, -0.713584869f,\n   -0.698376249f, -0.715730825f,\n   -0.696177131f, -0.717870045f,\n   -0.693971461f, -0.720002508f,\n   -0.691759258f, -0.722128194f,\n   -0.689540545f, -0.724247083f,\n   -0.687315341f, -0.726359155f,\n   -0.685083668f, -0.728464390f,\n   -0.682845546f, -0.730562769f,\n   -0.680600998f, -0.732654272f,\n   -0.678350043f, -0.734738878f,\n   -0.676092704f, -0.736816569f,\n   -0.673829000f, -0.738887324f,\n   -0.671558955f, -0.740951125f,\n   -0.669282588f, -0.743007952f,\n   -0.666999922f, -0.745057785f,\n   -0.664710978f, -0.747100606f,\n   -0.662415778f, -0.749136395f,\n   -0.660114342f, -0.751165132f,\n   -0.657806693f, -0.753186799f,\n   -0.655492853f, -0.755201377f,\n   -0.653172843f, -0.757208847f,\n   -0.650846685f, -0.759209189f,\n   -0.648514401f, -0.761202385f,\n   -0.646176013f, -0.763188417f,\n   -0.643831543f, -0.765167266f,\n   -0.641481013f, -0.767138912f,\n   -0.639124445f, -0.769103338f,\n   -0.636761861f, -0.771060524f,\n   -0.634393284f, -0.773010453f,\n   -0.632018736f, -0.774953107f,\n   -0.629638239f, -0.776888466f,\n   -0.627251815f, -0.778816512f,\n   -0.624859488f, -0.780737229f,\n   -0.622461279f, -0.782650596f,\n   -0.620057212f, -0.784556597f,\n   -0.617647308f, -0.786455214f,\n   -0.615231591f, -0.788346428f,\n   -0.612810082f, -0.790230221f,\n   -0.610382806f, -0.792106577f,\n   -0.607949785f, -0.793975478f,\n   -0.605511041f, -0.795836905f,\n   -0.603066599f, -0.797690841f,\n   -0.600616479f, -0.799537269f,\n   -0.598160707f, -0.801376172f,\n   -0.595699304f, -0.803207531f,\n   -0.593232295f, -0.805031331f,\n   -0.590759702f, -0.806847554f,\n   -0.588281548f, -0.808656182f,\n   -0.585797857f, -0.810457198f,\n   -0.583308653f, -0.812250587f,\n   -0.580813958f, -0.814036330f,\n   -0.578313796f, -0.815814411f,\n   -0.575808191f, -0.817584813f,\n   -0.573297167f, -0.819347520f,\n   -0.570780746f, -0.821102515f,\n   -0.568258953f, -0.822849781f,\n   -0.565731811f, -0.824589303f,\n   -0.563199344f, -0.826321063f,\n   -0.560661576f, -0.828045045f,\n   -0.558118531f, -0.829761234f,\n   -0.555570233f, -0.831469612f,\n   -0.553016706f, -0.833170165f,\n   -0.550457973f, -0.834862875f,\n   -0.547894059f, -0.836547727f,\n   -0.545324988f, -0.838224706f,\n   -0.542750785f, -0.839893794f,\n   -0.540171473f, -0.841554977f,\n   -0.537587076f, -0.843208240f,\n   -0.534997620f, -0.844853565f,\n   -0.532403128f, -0.846490939f,\n   -0.529803625f, -0.848120345f,\n   -0.527199135f, -0.849741768f,\n   -0.524589683f, -0.851355193f,\n   -0.521975293f, -0.852960605f,\n   -0.519355990f, -0.854557988f,\n   -0.516731799f, -0.856147328f,\n   -0.514102744f, -0.857728610f,\n   -0.511468850f, -0.859301818f,\n   -0.508830143f, -0.860866939f,\n   -0.506186645f, -0.862423956f,\n   -0.503538384f, -0.863972856f,\n   -0.500885383f, -0.865513624f,\n   -0.498227667f, -0.867046246f,\n   -0.495565262f, -0.868570706f,\n   -0.492898192f, -0.870086991f,\n   -0.490226483f, -0.871595087f,\n   -0.487550160f, -0.873094978f,\n   -0.484869248f, -0.874586652f,\n   -0.482183772f, -0.876070094f,\n   -0.479493758f, -0.877545290f,\n   -0.476799230f, -0.879012226f,\n   -0.474100215f, -0.880470889f,\n   -0.471396737f, -0.881921264f,\n   -0.468688822f, -0.883363339f,\n   -0.465976496f, -0.884797098f,\n   -0.463259784f, -0.886222530f,\n   -0.460538711f, -0.887639620f,\n   -0.457813304f, -0.889048356f,\n   -0.455083587f, -0.890448723f,\n   -0.452349587f, -0.891840709f,\n   -0.449611330f, -0.893224301f,\n   -0.446868840f, -0.894599486f,\n   -0.444122145f, -0.895966250f,\n   -0.441371269f, -0.897324581f,\n   -0.438616239f, -0.898674466f,\n   -0.435857080f, -0.900015892f,\n   -0.433093819f, -0.901348847f,\n   -0.430326481f, -0.902673318f,\n   -0.427555093f, -0.903989293f,\n   -0.424779681f, -0.905296759f,\n   -0.422000271f, -0.906595705f,\n   -0.419216888f, -0.907886116f,\n   -0.416429560f, -0.909167983f,\n   -0.413638312f, -0.910441292f,\n   -0.410843171f, -0.911706032f,\n   -0.408044163f, -0.912962190f,\n   -0.405241314f, -0.914209756f,\n   -0.402434651f, -0.915448716f,\n   -0.399624200f, -0.916679060f,\n   -0.396809987f, -0.917900776f,\n   -0.393992040f, -0.919113852f,\n   -0.391170384f, -0.920318277f,\n   -0.388345047f, -0.921514039f,\n   -0.385516054f, -0.922701128f,\n   -0.382683432f, -0.923879533f,\n   -0.379847209f, -0.925049241f,\n   -0.377007410f, -0.926210242f,\n   -0.374164063f, -0.927362526f,\n   -0.371317194f, -0.928506080f,\n   -0.368466830f, -0.929640896f,\n   -0.365612998f, -0.930766961f,\n   -0.362755724f, -0.931884266f,\n   -0.359895037f, -0.932992799f,\n   -0.357030961f, -0.934092550f,\n   -0.354163525f, -0.935183510f,\n   -0.351292756f, -0.936265667f,\n   -0.348418680f, -0.937339012f,\n   -0.345541325f, -0.938403534f,\n   -0.342660717f, -0.939459224f,\n   -0.339776884f, -0.940506071f,\n   -0.336889853f, -0.941544065f,\n   -0.333999651f, -0.942573198f,\n   -0.331106306f, -0.943593458f,\n   -0.328209844f, -0.944604837f,\n   -0.325310292f, -0.945607325f,\n   -0.322407679f, -0.946600913f,\n   -0.319502031f, -0.947585591f,\n   -0.316593376f, -0.948561350f,\n   -0.313681740f, -0.949528181f,\n   -0.310767153f, -0.950486074f,\n   -0.307849640f, -0.951435021f,\n   -0.304929230f, -0.952375013f,\n   -0.302005949f, -0.953306040f,\n   -0.299079826f, -0.954228095f,\n   -0.296150888f, -0.955141168f,\n   -0.293219163f, -0.956045251f,\n   -0.290284677f, -0.956940336f,\n   -0.287347460f, -0.957826413f,\n   -0.284407537f, -0.958703475f,\n   -0.281464938f, -0.959571513f,\n   -0.278519689f, -0.960430519f,\n   -0.275571819f, -0.961280486f,\n   -0.272621355f, -0.962121404f,\n   -0.269668326f, -0.962953267f,\n   -0.266712757f, -0.963776066f,\n   -0.263754679f, -0.964589793f,\n   -0.260794118f, -0.965394442f,\n   -0.257831102f, -0.966190003f,\n   -0.254865660f, -0.966976471f,\n   -0.251897818f, -0.967753837f,\n   -0.248927606f, -0.968522094f,\n   -0.245955050f, -0.969281235f,\n   -0.242980180f, -0.970031253f,\n   -0.240003022f, -0.970772141f,\n   -0.237023606f, -0.971503891f,\n   -0.234041959f, -0.972226497f,\n   -0.231058108f, -0.972939952f,\n   -0.228072083f, -0.973644250f,\n   -0.225083911f, -0.974339383f,\n   -0.222093621f, -0.975025345f,\n   -0.219101240f, -0.975702130f,\n   -0.216106797f, -0.976369731f,\n   -0.213110320f, -0.977028143f,\n   -0.210111837f, -0.977677358f,\n   -0.207111376f, -0.978317371f,\n   -0.204108966f, -0.978948175f,\n   -0.201104635f, -0.979569766f,\n   -0.198098411f, -0.980182136f,\n   -0.195090322f, -0.980785280f,\n   -0.192080397f, -0.981379193f,\n   -0.189068664f, -0.981963869f,\n   -0.186055152f, -0.982539302f,\n   -0.183039888f, -0.983105487f,\n   -0.180022901f, -0.983662419f,\n   -0.177004220f, -0.984210092f,\n   -0.173983873f, -0.984748502f,\n   -0.170961889f, -0.985277642f,\n   -0.167938295f, -0.985797509f,\n   -0.164913120f, -0.986308097f,\n   -0.161886394f, -0.986809402f,\n   -0.158858143f, -0.987301418f,\n   -0.155828398f, -0.987784142f,\n   -0.152797185f, -0.988257568f,\n   -0.149764535f, -0.988721692f,\n   -0.146730474f, -0.989176510f,\n   -0.143695033f, -0.989622017f,\n   -0.140658239f, -0.990058210f,\n   -0.137620122f, -0.990485084f,\n   -0.134580709f, -0.990902635f,\n   -0.131540029f, -0.991310860f,\n   -0.128498111f, -0.991709754f,\n   -0.125454983f, -0.992099313f,\n   -0.122410675f, -0.992479535f,\n   -0.119365215f, -0.992850414f,\n   -0.116318631f, -0.993211949f,\n   -0.113270952f, -0.993564136f,\n   -0.110222207f, -0.993906970f,\n   -0.107172425f, -0.994240449f,\n   -0.104121634f, -0.994564571f,\n   -0.101069863f, -0.994879331f,\n   -0.098017140f, -0.995184727f,\n   -0.094963495f, -0.995480755f,\n   -0.091908956f, -0.995767414f,\n   -0.088853553f, -0.996044701f,\n   -0.085797312f, -0.996312612f,\n   -0.082740265f, -0.996571146f,\n   -0.079682438f, -0.996820299f,\n   -0.076623861f, -0.997060070f,\n   -0.073564564f, -0.997290457f,\n   -0.070504573f, -0.997511456f,\n   -0.067443920f, -0.997723067f,\n   -0.064382631f, -0.997925286f,\n   -0.061320736f, -0.998118113f,\n   -0.058258265f, -0.998301545f,\n   -0.055195244f, -0.998475581f,\n   -0.052131705f, -0.998640218f,\n   -0.049067674f, -0.998795456f,\n   -0.046003182f, -0.998941293f,\n   -0.042938257f, -0.999077728f,\n   -0.039872928f, -0.999204759f,\n   -0.036807223f, -0.999322385f,\n   -0.033741172f, -0.999430605f,\n   -0.030674803f, -0.999529418f,\n   -0.027608146f, -0.999618822f,\n   -0.024541229f, -0.999698819f,\n   -0.021474080f, -0.999769405f,\n   -0.018406730f, -0.999830582f,\n   -0.015339206f, -0.999882347f,\n   -0.012271538f, -0.999924702f,\n   -0.009203755f, -0.999957645f,\n   -0.006135885f, -0.999981175f,\n   -0.003067957f, -0.999995294f,\n   -0.000000000f, -1.000000000f,\n    0.003067957f, -0.999995294f,\n    0.006135885f, -0.999981175f,\n    0.009203755f, -0.999957645f,\n    0.012271538f, -0.999924702f,\n    0.015339206f, -0.999882347f,\n    0.018406730f, -0.999830582f,\n    0.021474080f, -0.999769405f,\n    0.024541229f, -0.999698819f,\n    0.027608146f, -0.999618822f,\n    0.030674803f, -0.999529418f,\n    0.033741172f, -0.999430605f,\n    0.036807223f, -0.999322385f,\n    0.039872928f, -0.999204759f,\n    0.042938257f, -0.999077728f,\n    0.046003182f, -0.998941293f,\n    0.049067674f, -0.998795456f,\n    0.052131705f, -0.998640218f,\n    0.055195244f, -0.998475581f,\n    0.058258265f, -0.998301545f,\n    0.061320736f, -0.998118113f,\n    0.064382631f, -0.997925286f,\n    0.067443920f, -0.997723067f,\n    0.070504573f, -0.997511456f,\n    0.073564564f, -0.997290457f,\n    0.076623861f, -0.997060070f,\n    0.079682438f, -0.996820299f,\n    0.082740265f, -0.996571146f,\n    0.085797312f, -0.996312612f,\n    0.088853553f, -0.996044701f,\n    0.091908956f, -0.995767414f,\n    0.094963495f, -0.995480755f,\n    0.098017140f, -0.995184727f,\n    0.101069863f, -0.994879331f,\n    0.104121634f, -0.994564571f,\n    0.107172425f, -0.994240449f,\n    0.110222207f, -0.993906970f,\n    0.113270952f, -0.993564136f,\n    0.116318631f, -0.993211949f,\n    0.119365215f, -0.992850414f,\n    0.122410675f, -0.992479535f,\n    0.125454983f, -0.992099313f,\n    0.128498111f, -0.991709754f,\n    0.131540029f, -0.991310860f,\n    0.134580709f, -0.990902635f,\n    0.137620122f, -0.990485084f,\n    0.140658239f, -0.990058210f,\n    0.143695033f, -0.989622017f,\n    0.146730474f, -0.989176510f,\n    0.149764535f, -0.988721692f,\n    0.152797185f, -0.988257568f,\n    0.155828398f, -0.987784142f,\n    0.158858143f, -0.987301418f,\n    0.161886394f, -0.986809402f,\n    0.164913120f, -0.986308097f,\n    0.167938295f, -0.985797509f,\n    0.170961889f, -0.985277642f,\n    0.173983873f, -0.984748502f,\n    0.177004220f, -0.984210092f,\n    0.180022901f, -0.983662419f,\n    0.183039888f, -0.983105487f,\n    0.186055152f, -0.982539302f,\n    0.189068664f, -0.981963869f,\n    0.192080397f, -0.981379193f,\n    0.195090322f, -0.980785280f,\n    0.198098411f, -0.980182136f,\n    0.201104635f, -0.979569766f,\n    0.204108966f, -0.978948175f,\n    0.207111376f, -0.978317371f,\n    0.210111837f, -0.977677358f,\n    0.213110320f, -0.977028143f,\n    0.216106797f, -0.976369731f,\n    0.219101240f, -0.975702130f,\n    0.222093621f, -0.975025345f,\n    0.225083911f, -0.974339383f,\n    0.228072083f, -0.973644250f,\n    0.231058108f, -0.972939952f,\n    0.234041959f, -0.972226497f,\n    0.237023606f, -0.971503891f,\n    0.240003022f, -0.970772141f,\n    0.242980180f, -0.970031253f,\n    0.245955050f, -0.969281235f,\n    0.248927606f, -0.968522094f,\n    0.251897818f, -0.967753837f,\n    0.254865660f, -0.966976471f,\n    0.257831102f, -0.966190003f,\n    0.260794118f, -0.965394442f,\n    0.263754679f, -0.964589793f,\n    0.266712757f, -0.963776066f,\n    0.269668326f, -0.962953267f,\n    0.272621355f, -0.962121404f,\n    0.275571819f, -0.961280486f,\n    0.278519689f, -0.960430519f,\n    0.281464938f, -0.959571513f,\n    0.284407537f, -0.958703475f,\n    0.287347460f, -0.957826413f,\n    0.290284677f, -0.956940336f,\n    0.293219163f, -0.956045251f,\n    0.296150888f, -0.955141168f,\n    0.299079826f, -0.954228095f,\n    0.302005949f, -0.953306040f,\n    0.304929230f, -0.952375013f,\n    0.307849640f, -0.951435021f,\n    0.310767153f, -0.950486074f,\n    0.313681740f, -0.949528181f,\n    0.316593376f, -0.948561350f,\n    0.319502031f, -0.947585591f,\n    0.322407679f, -0.946600913f,\n    0.325310292f, -0.945607325f,\n    0.328209844f, -0.944604837f,\n    0.331106306f, -0.943593458f,\n    0.333999651f, -0.942573198f,\n    0.336889853f, -0.941544065f,\n    0.339776884f, -0.940506071f,\n    0.342660717f, -0.939459224f,\n    0.345541325f, -0.938403534f,\n    0.348418680f, -0.937339012f,\n    0.351292756f, -0.936265667f,\n    0.354163525f, -0.935183510f,\n    0.357030961f, -0.934092550f,\n    0.359895037f, -0.932992799f,\n    0.362755724f, -0.931884266f,\n    0.365612998f, -0.930766961f,\n    0.368466830f, -0.929640896f,\n    0.371317194f, -0.928506080f,\n    0.374164063f, -0.927362526f,\n    0.377007410f, -0.926210242f,\n    0.379847209f, -0.925049241f,\n    0.382683432f, -0.923879533f,\n    0.385516054f, -0.922701128f,\n    0.388345047f, -0.921514039f,\n    0.391170384f, -0.920318277f,\n    0.393992040f, -0.919113852f,\n    0.396809987f, -0.917900776f,\n    0.399624200f, -0.916679060f,\n    0.402434651f, -0.915448716f,\n    0.405241314f, -0.914209756f,\n    0.408044163f, -0.912962190f,\n    0.410843171f, -0.911706032f,\n    0.413638312f, -0.910441292f,\n    0.416429560f, -0.909167983f,\n    0.419216888f, -0.907886116f,\n    0.422000271f, -0.906595705f,\n    0.424779681f, -0.905296759f,\n    0.427555093f, -0.903989293f,\n    0.430326481f, -0.902673318f,\n    0.433093819f, -0.901348847f,\n    0.435857080f, -0.900015892f,\n    0.438616239f, -0.898674466f,\n    0.441371269f, -0.897324581f,\n    0.444122145f, -0.895966250f,\n    0.446868840f, -0.894599486f,\n    0.449611330f, -0.893224301f,\n    0.452349587f, -0.891840709f,\n    0.455083587f, -0.890448723f,\n    0.457813304f, -0.889048356f,\n    0.460538711f, -0.887639620f,\n    0.463259784f, -0.886222530f,\n    0.465976496f, -0.884797098f,\n    0.468688822f, -0.883363339f,\n    0.471396737f, -0.881921264f,\n    0.474100215f, -0.880470889f,\n    0.476799230f, -0.879012226f,\n    0.479493758f, -0.877545290f,\n    0.482183772f, -0.876070094f,\n    0.484869248f, -0.874586652f,\n    0.487550160f, -0.873094978f,\n    0.490226483f, -0.871595087f,\n    0.492898192f, -0.870086991f,\n    0.495565262f, -0.868570706f,\n    0.498227667f, -0.867046246f,\n    0.500885383f, -0.865513624f,\n    0.503538384f, -0.863972856f,\n    0.506186645f, -0.862423956f,\n    0.508830143f, -0.860866939f,\n    0.511468850f, -0.859301818f,\n    0.514102744f, -0.857728610f,\n    0.516731799f, -0.856147328f,\n    0.519355990f, -0.854557988f,\n    0.521975293f, -0.852960605f,\n    0.524589683f, -0.851355193f,\n    0.527199135f, -0.849741768f,\n    0.529803625f, -0.848120345f,\n    0.532403128f, -0.846490939f,\n    0.534997620f, -0.844853565f,\n    0.537587076f, -0.843208240f,\n    0.540171473f, -0.841554977f,\n    0.542750785f, -0.839893794f,\n    0.545324988f, -0.838224706f,\n    0.547894059f, -0.836547727f,\n    0.550457973f, -0.834862875f,\n    0.553016706f, -0.833170165f,\n    0.555570233f, -0.831469612f,\n    0.558118531f, -0.829761234f,\n    0.560661576f, -0.828045045f,\n    0.563199344f, -0.826321063f,\n    0.565731811f, -0.824589303f,\n    0.568258953f, -0.822849781f,\n    0.570780746f, -0.821102515f,\n    0.573297167f, -0.819347520f,\n    0.575808191f, -0.817584813f,\n    0.578313796f, -0.815814411f,\n    0.580813958f, -0.814036330f,\n    0.583308653f, -0.812250587f,\n    0.585797857f, -0.810457198f,\n    0.588281548f, -0.808656182f,\n    0.590759702f, -0.806847554f,\n    0.593232295f, -0.805031331f,\n    0.595699304f, -0.803207531f,\n    0.598160707f, -0.801376172f,\n    0.600616479f, -0.799537269f,\n    0.603066599f, -0.797690841f,\n    0.605511041f, -0.795836905f,\n    0.607949785f, -0.793975478f,\n    0.610382806f, -0.792106577f,\n    0.612810082f, -0.790230221f,\n    0.615231591f, -0.788346428f,\n    0.617647308f, -0.786455214f,\n    0.620057212f, -0.784556597f,\n    0.622461279f, -0.782650596f,\n    0.624859488f, -0.780737229f,\n    0.627251815f, -0.778816512f,\n    0.629638239f, -0.776888466f,\n    0.632018736f, -0.774953107f,\n    0.634393284f, -0.773010453f,\n    0.636761861f, -0.771060524f,\n    0.639124445f, -0.769103338f,\n    0.641481013f, -0.767138912f,\n    0.643831543f, -0.765167266f,\n    0.646176013f, -0.763188417f,\n    0.648514401f, -0.761202385f,\n    0.650846685f, -0.759209189f,\n    0.653172843f, -0.757208847f,\n    0.655492853f, -0.755201377f,\n    0.657806693f, -0.753186799f,\n    0.660114342f, -0.751165132f,\n    0.662415778f, -0.749136395f,\n    0.664710978f, -0.747100606f,\n    0.666999922f, -0.745057785f,\n    0.669282588f, -0.743007952f,\n    0.671558955f, -0.740951125f,\n    0.673829000f, -0.738887324f,\n    0.676092704f, -0.736816569f,\n    0.678350043f, -0.734738878f,\n    0.680600998f, -0.732654272f,\n    0.682845546f, -0.730562769f,\n    0.685083668f, -0.728464390f,\n    0.687315341f, -0.726359155f,\n    0.689540545f, -0.724247083f,\n    0.691759258f, -0.722128194f,\n    0.693971461f, -0.720002508f,\n    0.696177131f, -0.717870045f,\n    0.698376249f, -0.715730825f,\n    0.700568794f, -0.713584869f,\n    0.702754744f, -0.711432196f,\n    0.704934080f, -0.709272826f,\n    0.707106781f, -0.707106781f,\n    0.709272826f, -0.704934080f,\n    0.711432196f, -0.702754744f,\n    0.713584869f, -0.700568794f,\n    0.715730825f, -0.698376249f,\n    0.717870045f, -0.696177131f,\n    0.720002508f, -0.693971461f,\n    0.722128194f, -0.691759258f,\n    0.724247083f, -0.689540545f,\n    0.726359155f, -0.687315341f,\n    0.728464390f, -0.685083668f,\n    0.730562769f, -0.682845546f,\n    0.732654272f, -0.680600998f,\n    0.734738878f, -0.678350043f,\n    0.736816569f, -0.676092704f,\n    0.738887324f, -0.673829000f,\n    0.740951125f, -0.671558955f,\n    0.743007952f, -0.669282588f,\n    0.745057785f, -0.666999922f,\n    0.747100606f, -0.664710978f,\n    0.749136395f, -0.662415778f,\n    0.751165132f, -0.660114342f,\n    0.753186799f, -0.657806693f,\n    0.755201377f, -0.655492853f,\n    0.757208847f, -0.653172843f,\n    0.759209189f, -0.650846685f,\n    0.761202385f, -0.648514401f,\n    0.763188417f, -0.646176013f,\n    0.765167266f, -0.643831543f,\n    0.767138912f, -0.641481013f,\n    0.769103338f, -0.639124445f,\n    0.771060524f, -0.636761861f,\n    0.773010453f, -0.634393284f,\n    0.774953107f, -0.632018736f,\n    0.776888466f, -0.629638239f,\n    0.778816512f, -0.627251815f,\n    0.780737229f, -0.624859488f,\n    0.782650596f, -0.622461279f,\n    0.784556597f, -0.620057212f,\n    0.786455214f, -0.617647308f,\n    0.788346428f, -0.615231591f,\n    0.790230221f, -0.612810082f,\n    0.792106577f, -0.610382806f,\n    0.793975478f, -0.607949785f,\n    0.795836905f, -0.605511041f,\n    0.797690841f, -0.603066599f,\n    0.799537269f, -0.600616479f,\n    0.801376172f, -0.598160707f,\n    0.803207531f, -0.595699304f,\n    0.805031331f, -0.593232295f,\n    0.806847554f, -0.590759702f,\n    0.808656182f, -0.588281548f,\n    0.810457198f, -0.585797857f,\n    0.812250587f, -0.583308653f,\n    0.814036330f, -0.580813958f,\n    0.815814411f, -0.578313796f,\n    0.817584813f, -0.575808191f,\n    0.819347520f, -0.573297167f,\n    0.821102515f, -0.570780746f,\n    0.822849781f, -0.568258953f,\n    0.824589303f, -0.565731811f,\n    0.826321063f, -0.563199344f,\n    0.828045045f, -0.560661576f,\n    0.829761234f, -0.558118531f,\n    0.831469612f, -0.555570233f,\n    0.833170165f, -0.553016706f,\n    0.834862875f, -0.550457973f,\n    0.836547727f, -0.547894059f,\n    0.838224706f, -0.545324988f,\n    0.839893794f, -0.542750785f,\n    0.841554977f, -0.540171473f,\n    0.843208240f, -0.537587076f,\n    0.844853565f, -0.534997620f,\n    0.846490939f, -0.532403128f,\n    0.848120345f, -0.529803625f,\n    0.849741768f, -0.527199135f,\n    0.851355193f, -0.524589683f,\n    0.852960605f, -0.521975293f,\n    0.854557988f, -0.519355990f,\n    0.856147328f, -0.516731799f,\n    0.857728610f, -0.514102744f,\n    0.859301818f, -0.511468850f,\n    0.860866939f, -0.508830143f,\n    0.862423956f, -0.506186645f,\n    0.863972856f, -0.503538384f,\n    0.865513624f, -0.500885383f,\n    0.867046246f, -0.498227667f,\n    0.868570706f, -0.495565262f,\n    0.870086991f, -0.492898192f,\n    0.871595087f, -0.490226483f,\n    0.873094978f, -0.487550160f,\n    0.874586652f, -0.484869248f,\n    0.876070094f, -0.482183772f,\n    0.877545290f, -0.479493758f,\n    0.879012226f, -0.476799230f,\n    0.880470889f, -0.474100215f,\n    0.881921264f, -0.471396737f,\n    0.883363339f, -0.468688822f,\n    0.884797098f, -0.465976496f,\n    0.886222530f, -0.463259784f,\n    0.887639620f, -0.460538711f,\n    0.889048356f, -0.457813304f,\n    0.890448723f, -0.455083587f,\n    0.891840709f, -0.452349587f,\n    0.893224301f, -0.449611330f,\n    0.894599486f, -0.446868840f,\n    0.895966250f, -0.444122145f,\n    0.897324581f, -0.441371269f,\n    0.898674466f, -0.438616239f,\n    0.900015892f, -0.435857080f,\n    0.901348847f, -0.433093819f,\n    0.902673318f, -0.430326481f,\n    0.903989293f, -0.427555093f,\n    0.905296759f, -0.424779681f,\n    0.906595705f, -0.422000271f,\n    0.907886116f, -0.419216888f,\n    0.909167983f, -0.416429560f,\n    0.910441292f, -0.413638312f,\n    0.911706032f, -0.410843171f,\n    0.912962190f, -0.408044163f,\n    0.914209756f, -0.405241314f,\n    0.915448716f, -0.402434651f,\n    0.916679060f, -0.399624200f,\n    0.917900776f, -0.396809987f,\n    0.919113852f, -0.393992040f,\n    0.920318277f, -0.391170384f,\n    0.921514039f, -0.388345047f,\n    0.922701128f, -0.385516054f,\n    0.923879533f, -0.382683432f,\n    0.925049241f, -0.379847209f,\n    0.926210242f, -0.377007410f,\n    0.927362526f, -0.374164063f,\n    0.928506080f, -0.371317194f,\n    0.929640896f, -0.368466830f,\n    0.930766961f, -0.365612998f,\n    0.931884266f, -0.362755724f,\n    0.932992799f, -0.359895037f,\n    0.934092550f, -0.357030961f,\n    0.935183510f, -0.354163525f,\n    0.936265667f, -0.351292756f,\n    0.937339012f, -0.348418680f,\n    0.938403534f, -0.345541325f,\n    0.939459224f, -0.342660717f,\n    0.940506071f, -0.339776884f,\n    0.941544065f, -0.336889853f,\n    0.942573198f, -0.333999651f,\n    0.943593458f, -0.331106306f,\n    0.944604837f, -0.328209844f,\n    0.945607325f, -0.325310292f,\n    0.946600913f, -0.322407679f,\n    0.947585591f, -0.319502031f,\n    0.948561350f, -0.316593376f,\n    0.949528181f, -0.313681740f,\n    0.950486074f, -0.310767153f,\n    0.951435021f, -0.307849640f,\n    0.952375013f, -0.304929230f,\n    0.953306040f, -0.302005949f,\n    0.954228095f, -0.299079826f,\n    0.955141168f, -0.296150888f,\n    0.956045251f, -0.293219163f,\n    0.956940336f, -0.290284677f,\n    0.957826413f, -0.287347460f,\n    0.958703475f, -0.284407537f,\n    0.959571513f, -0.281464938f,\n    0.960430519f, -0.278519689f,\n    0.961280486f, -0.275571819f,\n    0.962121404f, -0.272621355f,\n    0.962953267f, -0.269668326f,\n    0.963776066f, -0.266712757f,\n    0.964589793f, -0.263754679f,\n    0.965394442f, -0.260794118f,\n    0.966190003f, -0.257831102f,\n    0.966976471f, -0.254865660f,\n    0.967753837f, -0.251897818f,\n    0.968522094f, -0.248927606f,\n    0.969281235f, -0.245955050f,\n    0.970031253f, -0.242980180f,\n    0.970772141f, -0.240003022f,\n    0.971503891f, -0.237023606f,\n    0.972226497f, -0.234041959f,\n    0.972939952f, -0.231058108f,\n    0.973644250f, -0.228072083f,\n    0.974339383f, -0.225083911f,\n    0.975025345f, -0.222093621f,\n    0.975702130f, -0.219101240f,\n    0.976369731f, -0.216106797f,\n    0.977028143f, -0.213110320f,\n    0.977677358f, -0.210111837f,\n    0.978317371f, -0.207111376f,\n    0.978948175f, -0.204108966f,\n    0.979569766f, -0.201104635f,\n    0.980182136f, -0.198098411f,\n    0.980785280f, -0.195090322f,\n    0.981379193f, -0.192080397f,\n    0.981963869f, -0.189068664f,\n    0.982539302f, -0.186055152f,\n    0.983105487f, -0.183039888f,\n    0.983662419f, -0.180022901f,\n    0.984210092f, -0.177004220f,\n    0.984748502f, -0.173983873f,\n    0.985277642f, -0.170961889f,\n    0.985797509f, -0.167938295f,\n    0.986308097f, -0.164913120f,\n    0.986809402f, -0.161886394f,\n    0.987301418f, -0.158858143f,\n    0.987784142f, -0.155828398f,\n    0.988257568f, -0.152797185f,\n    0.988721692f, -0.149764535f,\n    0.989176510f, -0.146730474f,\n    0.989622017f, -0.143695033f,\n    0.990058210f, -0.140658239f,\n    0.990485084f, -0.137620122f,\n    0.990902635f, -0.134580709f,\n    0.991310860f, -0.131540029f,\n    0.991709754f, -0.128498111f,\n    0.992099313f, -0.125454983f,\n    0.992479535f, -0.122410675f,\n    0.992850414f, -0.119365215f,\n    0.993211949f, -0.116318631f,\n    0.993564136f, -0.113270952f,\n    0.993906970f, -0.110222207f,\n    0.994240449f, -0.107172425f,\n    0.994564571f, -0.104121634f,\n    0.994879331f, -0.101069863f,\n    0.995184727f, -0.098017140f,\n    0.995480755f, -0.094963495f,\n    0.995767414f, -0.091908956f,\n    0.996044701f, -0.088853553f,\n    0.996312612f, -0.085797312f,\n    0.996571146f, -0.082740265f,\n    0.996820299f, -0.079682438f,\n    0.997060070f, -0.076623861f,\n    0.997290457f, -0.073564564f,\n    0.997511456f, -0.070504573f,\n    0.997723067f, -0.067443920f,\n    0.997925286f, -0.064382631f,\n    0.998118113f, -0.061320736f,\n    0.998301545f, -0.058258265f,\n    0.998475581f, -0.055195244f,\n    0.998640218f, -0.052131705f,\n    0.998795456f, -0.049067674f,\n    0.998941293f, -0.046003182f,\n    0.999077728f, -0.042938257f,\n    0.999204759f, -0.039872928f,\n    0.999322385f, -0.036807223f,\n    0.999430605f, -0.033741172f,\n    0.999529418f, -0.030674803f,\n    0.999618822f, -0.027608146f,\n    0.999698819f, -0.024541229f,\n    0.999769405f, -0.021474080f,\n    0.999830582f, -0.018406730f,\n    0.999882347f, -0.015339206f,\n    0.999924702f, -0.012271538f,\n    0.999957645f, -0.009203755f,\n    0.999981175f, -0.006135885f,\n    0.999995294f, -0.003067957f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_F32_4096)\n/**\n  @par\n  Example code for Floating-point Twiddle factors Generation:\n  @par\n  <pre>for (i = 0; i< N/; i++)\n  {\n \ttwiddleCoef[2*i]   = cos(i * 2*PI/(float)N);\n \ttwiddleCoef[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 4096, PI = 3.14159265358979\n  @par\n  Cos and Sin values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_4096[8192] = {\n    1.000000000f,  0.000000000f,\n    0.999998823f,  0.001533980f,\n    0.999995294f,  0.003067957f,\n    0.999989411f,  0.004601926f,\n    0.999981175f,  0.006135885f,\n    0.999970586f,  0.007669829f,\n    0.999957645f,  0.009203755f,\n    0.999942350f,  0.010737659f,\n    0.999924702f,  0.012271538f,\n    0.999904701f,  0.013805389f,\n    0.999882347f,  0.015339206f,\n    0.999857641f,  0.016872988f,\n    0.999830582f,  0.018406730f,\n    0.999801170f,  0.019940429f,\n    0.999769405f,  0.021474080f,\n    0.999735288f,  0.023007681f,\n    0.999698819f,  0.024541229f,\n    0.999659997f,  0.026074718f,\n    0.999618822f,  0.027608146f,\n    0.999575296f,  0.029141509f,\n    0.999529418f,  0.030674803f,\n    0.999481187f,  0.032208025f,\n    0.999430605f,  0.033741172f,\n    0.999377670f,  0.035274239f,\n    0.999322385f,  0.036807223f,\n    0.999264747f,  0.038340120f,\n    0.999204759f,  0.039872928f,\n    0.999142419f,  0.041405641f,\n    0.999077728f,  0.042938257f,\n    0.999010686f,  0.044470772f,\n    0.998941293f,  0.046003182f,\n    0.998869550f,  0.047535484f,\n    0.998795456f,  0.049067674f,\n    0.998719012f,  0.050599749f,\n    0.998640218f,  0.052131705f,\n    0.998559074f,  0.053663538f,\n    0.998475581f,  0.055195244f,\n    0.998389737f,  0.056726821f,\n    0.998301545f,  0.058258265f,\n    0.998211003f,  0.059789571f,\n    0.998118113f,  0.061320736f,\n    0.998022874f,  0.062851758f,\n    0.997925286f,  0.064382631f,\n    0.997825350f,  0.065913353f,\n    0.997723067f,  0.067443920f,\n    0.997618435f,  0.068974328f,\n    0.997511456f,  0.070504573f,\n    0.997402130f,  0.072034653f,\n    0.997290457f,  0.073564564f,\n    0.997176437f,  0.075094301f,\n    0.997060070f,  0.076623861f,\n    0.996941358f,  0.078153242f,\n    0.996820299f,  0.079682438f,\n    0.996696895f,  0.081211447f,\n    0.996571146f,  0.082740265f,\n    0.996443051f,  0.084268888f,\n    0.996312612f,  0.085797312f,\n    0.996179829f,  0.087325535f,\n    0.996044701f,  0.088853553f,\n    0.995907229f,  0.090381361f,\n    0.995767414f,  0.091908956f,\n    0.995625256f,  0.093436336f,\n    0.995480755f,  0.094963495f,\n    0.995333912f,  0.096490431f,\n    0.995184727f,  0.098017140f,\n    0.995033199f,  0.099543619f,\n    0.994879331f,  0.101069863f,\n    0.994723121f,  0.102595869f,\n    0.994564571f,  0.104121634f,\n    0.994403680f,  0.105647154f,\n    0.994240449f,  0.107172425f,\n    0.994074879f,  0.108697444f,\n    0.993906970f,  0.110222207f,\n    0.993736722f,  0.111746711f,\n    0.993564136f,  0.113270952f,\n    0.993389211f,  0.114794927f,\n    0.993211949f,  0.116318631f,\n    0.993032350f,  0.117842062f,\n    0.992850414f,  0.119365215f,\n    0.992666142f,  0.120888087f,\n    0.992479535f,  0.122410675f,\n    0.992290591f,  0.123932975f,\n    0.992099313f,  0.125454983f,\n    0.991905700f,  0.126976696f,\n    0.991709754f,  0.128498111f,\n    0.991511473f,  0.130019223f,\n    0.991310860f,  0.131540029f,\n    0.991107914f,  0.133060525f,\n    0.990902635f,  0.134580709f,\n    0.990695025f,  0.136100575f,\n    0.990485084f,  0.137620122f,\n    0.990272812f,  0.139139344f,\n    0.990058210f,  0.140658239f,\n    0.989841278f,  0.142176804f,\n    0.989622017f,  0.143695033f,\n    0.989400428f,  0.145212925f,\n    0.989176510f,  0.146730474f,\n    0.988950265f,  0.148247679f,\n    0.988721692f,  0.149764535f,\n    0.988490793f,  0.151281038f,\n    0.988257568f,  0.152797185f,\n    0.988022017f,  0.154312973f,\n    0.987784142f,  0.155828398f,\n    0.987543942f,  0.157343456f,\n    0.987301418f,  0.158858143f,\n    0.987056571f,  0.160372457f,\n    0.986809402f,  0.161886394f,\n    0.986559910f,  0.163399949f,\n    0.986308097f,  0.164913120f,\n    0.986053963f,  0.166425904f,\n    0.985797509f,  0.167938295f,\n    0.985538735f,  0.169450291f,\n    0.985277642f,  0.170961889f,\n    0.985014231f,  0.172473084f,\n    0.984748502f,  0.173983873f,\n    0.984480455f,  0.175494253f,\n    0.984210092f,  0.177004220f,\n    0.983937413f,  0.178513771f,\n    0.983662419f,  0.180022901f,\n    0.983385110f,  0.181531608f,\n    0.983105487f,  0.183039888f,\n    0.982823551f,  0.184547737f,\n    0.982539302f,  0.186055152f,\n    0.982252741f,  0.187562129f,\n    0.981963869f,  0.189068664f,\n    0.981672686f,  0.190574755f,\n    0.981379193f,  0.192080397f,\n    0.981083391f,  0.193585587f,\n    0.980785280f,  0.195090322f,\n    0.980484862f,  0.196594598f,\n    0.980182136f,  0.198098411f,\n    0.979877104f,  0.199601758f,\n    0.979569766f,  0.201104635f,\n    0.979260123f,  0.202607039f,\n    0.978948175f,  0.204108966f,\n    0.978633924f,  0.205610413f,\n    0.978317371f,  0.207111376f,\n    0.977998515f,  0.208611852f,\n    0.977677358f,  0.210111837f,\n    0.977353900f,  0.211611327f,\n    0.977028143f,  0.213110320f,\n    0.976700086f,  0.214608811f,\n    0.976369731f,  0.216106797f,\n    0.976037079f,  0.217604275f,\n    0.975702130f,  0.219101240f,\n    0.975364885f,  0.220597690f,\n    0.975025345f,  0.222093621f,\n    0.974683511f,  0.223589029f,\n    0.974339383f,  0.225083911f,\n    0.973992962f,  0.226578264f,\n    0.973644250f,  0.228072083f,\n    0.973293246f,  0.229565366f,\n    0.972939952f,  0.231058108f,\n    0.972584369f,  0.232550307f,\n    0.972226497f,  0.234041959f,\n    0.971866337f,  0.235533059f,\n    0.971503891f,  0.237023606f,\n    0.971139158f,  0.238513595f,\n    0.970772141f,  0.240003022f,\n    0.970402839f,  0.241491885f,\n    0.970031253f,  0.242980180f,\n    0.969657385f,  0.244467903f,\n    0.969281235f,  0.245955050f,\n    0.968902805f,  0.247441619f,\n    0.968522094f,  0.248927606f,\n    0.968139105f,  0.250413007f,\n    0.967753837f,  0.251897818f,\n    0.967366292f,  0.253382037f,\n    0.966976471f,  0.254865660f,\n    0.966584374f,  0.256348682f,\n    0.966190003f,  0.257831102f,\n    0.965793359f,  0.259312915f,\n    0.965394442f,  0.260794118f,\n    0.964993253f,  0.262274707f,\n    0.964589793f,  0.263754679f,\n    0.964184064f,  0.265234030f,\n    0.963776066f,  0.266712757f,\n    0.963365800f,  0.268190857f,\n    0.962953267f,  0.269668326f,\n    0.962538468f,  0.271145160f,\n    0.962121404f,  0.272621355f,\n    0.961702077f,  0.274096910f,\n    0.961280486f,  0.275571819f,\n    0.960856633f,  0.277046080f,\n    0.960430519f,  0.278519689f,\n    0.960002146f,  0.279992643f,\n    0.959571513f,  0.281464938f,\n    0.959138622f,  0.282936570f,\n    0.958703475f,  0.284407537f,\n    0.958266071f,  0.285877835f,\n    0.957826413f,  0.287347460f,\n    0.957384501f,  0.288816408f,\n    0.956940336f,  0.290284677f,\n    0.956493919f,  0.291752263f,\n    0.956045251f,  0.293219163f,\n    0.955594334f,  0.294685372f,\n    0.955141168f,  0.296150888f,\n    0.954685755f,  0.297615707f,\n    0.954228095f,  0.299079826f,\n    0.953768190f,  0.300543241f,\n    0.953306040f,  0.302005949f,\n    0.952841648f,  0.303467947f,\n    0.952375013f,  0.304929230f,\n    0.951906137f,  0.306389795f,\n    0.951435021f,  0.307849640f,\n    0.950961666f,  0.309308760f,\n    0.950486074f,  0.310767153f,\n    0.950008245f,  0.312224814f,\n    0.949528181f,  0.313681740f,\n    0.949045882f,  0.315137929f,\n    0.948561350f,  0.316593376f,\n    0.948074586f,  0.318048077f,\n    0.947585591f,  0.319502031f,\n    0.947094366f,  0.320955232f,\n    0.946600913f,  0.322407679f,\n    0.946105232f,  0.323859367f,\n    0.945607325f,  0.325310292f,\n    0.945107193f,  0.326760452f,\n    0.944604837f,  0.328209844f,\n    0.944100258f,  0.329658463f,\n    0.943593458f,  0.331106306f,\n    0.943084437f,  0.332553370f,\n    0.942573198f,  0.333999651f,\n    0.942059740f,  0.335445147f,\n    0.941544065f,  0.336889853f,\n    0.941026175f,  0.338333767f,\n    0.940506071f,  0.339776884f,\n    0.939983753f,  0.341219202f,\n    0.939459224f,  0.342660717f,\n    0.938932484f,  0.344101426f,\n    0.938403534f,  0.345541325f,\n    0.937872376f,  0.346980411f,\n    0.937339012f,  0.348418680f,\n    0.936803442f,  0.349856130f,\n    0.936265667f,  0.351292756f,\n    0.935725689f,  0.352728556f,\n    0.935183510f,  0.354163525f,\n    0.934639130f,  0.355597662f,\n    0.934092550f,  0.357030961f,\n    0.933543773f,  0.358463421f,\n    0.932992799f,  0.359895037f,\n    0.932439629f,  0.361325806f,\n    0.931884266f,  0.362755724f,\n    0.931326709f,  0.364184790f,\n    0.930766961f,  0.365612998f,\n    0.930205023f,  0.367040346f,\n    0.929640896f,  0.368466830f,\n    0.929074581f,  0.369892447f,\n    0.928506080f,  0.371317194f,\n    0.927935395f,  0.372741067f,\n    0.927362526f,  0.374164063f,\n    0.926787474f,  0.375586178f,\n    0.926210242f,  0.377007410f,\n    0.925630831f,  0.378427755f,\n    0.925049241f,  0.379847209f,\n    0.924465474f,  0.381265769f,\n    0.923879533f,  0.382683432f,\n    0.923291417f,  0.384100195f,\n    0.922701128f,  0.385516054f,\n    0.922108669f,  0.386931006f,\n    0.921514039f,  0.388345047f,\n    0.920917242f,  0.389758174f,\n    0.920318277f,  0.391170384f,\n    0.919717146f,  0.392581674f,\n    0.919113852f,  0.393992040f,\n    0.918508394f,  0.395401479f,\n    0.917900776f,  0.396809987f,\n    0.917290997f,  0.398217562f,\n    0.916679060f,  0.399624200f,\n    0.916064966f,  0.401029897f,\n    0.915448716f,  0.402434651f,\n    0.914830312f,  0.403838458f,\n    0.914209756f,  0.405241314f,\n    0.913587048f,  0.406643217f,\n    0.912962190f,  0.408044163f,\n    0.912335185f,  0.409444149f,\n    0.911706032f,  0.410843171f,\n    0.911074734f,  0.412241227f,\n    0.910441292f,  0.413638312f,\n    0.909805708f,  0.415034424f,\n    0.909167983f,  0.416429560f,\n    0.908528119f,  0.417823716f,\n    0.907886116f,  0.419216888f,\n    0.907241978f,  0.420609074f,\n    0.906595705f,  0.422000271f,\n    0.905947298f,  0.423390474f,\n    0.905296759f,  0.424779681f,\n    0.904644091f,  0.426167889f,\n    0.903989293f,  0.427555093f,\n    0.903332368f,  0.428941292f,\n    0.902673318f,  0.430326481f,\n    0.902012144f,  0.431710658f,\n    0.901348847f,  0.433093819f,\n    0.900683429f,  0.434475961f,\n    0.900015892f,  0.435857080f,\n    0.899346237f,  0.437237174f,\n    0.898674466f,  0.438616239f,\n    0.898000580f,  0.439994271f,\n    0.897324581f,  0.441371269f,\n    0.896646470f,  0.442747228f,\n    0.895966250f,  0.444122145f,\n    0.895283921f,  0.445496017f,\n    0.894599486f,  0.446868840f,\n    0.893912945f,  0.448240612f,\n    0.893224301f,  0.449611330f,\n    0.892533555f,  0.450980989f,\n    0.891840709f,  0.452349587f,\n    0.891145765f,  0.453717121f,\n    0.890448723f,  0.455083587f,\n    0.889749586f,  0.456448982f,\n    0.889048356f,  0.457813304f,\n    0.888345033f,  0.459176548f,\n    0.887639620f,  0.460538711f,\n    0.886932119f,  0.461899791f,\n    0.886222530f,  0.463259784f,\n    0.885510856f,  0.464618686f,\n    0.884797098f,  0.465976496f,\n    0.884081259f,  0.467333209f,\n    0.883363339f,  0.468688822f,\n    0.882643340f,  0.470043332f,\n    0.881921264f,  0.471396737f,\n    0.881197113f,  0.472749032f,\n    0.880470889f,  0.474100215f,\n    0.879742593f,  0.475450282f,\n    0.879012226f,  0.476799230f,\n    0.878279792f,  0.478147056f,\n    0.877545290f,  0.479493758f,\n    0.876808724f,  0.480839331f,\n    0.876070094f,  0.482183772f,\n    0.875329403f,  0.483527079f,\n    0.874586652f,  0.484869248f,\n    0.873841843f,  0.486210276f,\n    0.873094978f,  0.487550160f,\n    0.872346059f,  0.488888897f,\n    0.871595087f,  0.490226483f,\n    0.870842063f,  0.491562916f,\n    0.870086991f,  0.492898192f,\n    0.869329871f,  0.494232309f,\n    0.868570706f,  0.495565262f,\n    0.867809497f,  0.496897049f,\n    0.867046246f,  0.498227667f,\n    0.866280954f,  0.499557113f,\n    0.865513624f,  0.500885383f,\n    0.864744258f,  0.502212474f,\n    0.863972856f,  0.503538384f,\n    0.863199422f,  0.504863109f,\n    0.862423956f,  0.506186645f,\n    0.861646461f,  0.507508991f,\n    0.860866939f,  0.508830143f,\n    0.860085390f,  0.510150097f,\n    0.859301818f,  0.511468850f,\n    0.858516224f,  0.512786401f,\n    0.857728610f,  0.514102744f,\n    0.856938977f,  0.515417878f,\n    0.856147328f,  0.516731799f,\n    0.855353665f,  0.518044504f,\n    0.854557988f,  0.519355990f,\n    0.853760301f,  0.520666254f,\n    0.852960605f,  0.521975293f,\n    0.852158902f,  0.523283103f,\n    0.851355193f,  0.524589683f,\n    0.850549481f,  0.525895027f,\n    0.849741768f,  0.527199135f,\n    0.848932055f,  0.528502002f,\n    0.848120345f,  0.529803625f,\n    0.847306639f,  0.531104001f,\n    0.846490939f,  0.532403128f,\n    0.845673247f,  0.533701002f,\n    0.844853565f,  0.534997620f,\n    0.844031895f,  0.536292979f,\n    0.843208240f,  0.537587076f,\n    0.842382600f,  0.538879909f,\n    0.841554977f,  0.540171473f,\n    0.840725375f,  0.541461766f,\n    0.839893794f,  0.542750785f,\n    0.839060237f,  0.544038527f,\n    0.838224706f,  0.545324988f,\n    0.837387202f,  0.546610167f,\n    0.836547727f,  0.547894059f,\n    0.835706284f,  0.549176662f,\n    0.834862875f,  0.550457973f,\n    0.834017501f,  0.551737988f,\n    0.833170165f,  0.553016706f,\n    0.832320868f,  0.554294121f,\n    0.831469612f,  0.555570233f,\n    0.830616400f,  0.556845037f,\n    0.829761234f,  0.558118531f,\n    0.828904115f,  0.559390712f,\n    0.828045045f,  0.560661576f,\n    0.827184027f,  0.561931121f,\n    0.826321063f,  0.563199344f,\n    0.825456154f,  0.564466242f,\n    0.824589303f,  0.565731811f,\n    0.823720511f,  0.566996049f,\n    0.822849781f,  0.568258953f,\n    0.821977115f,  0.569520519f,\n    0.821102515f,  0.570780746f,\n    0.820225983f,  0.572039629f,\n    0.819347520f,  0.573297167f,\n    0.818467130f,  0.574553355f,\n    0.817584813f,  0.575808191f,\n    0.816700573f,  0.577061673f,\n    0.815814411f,  0.578313796f,\n    0.814926329f,  0.579564559f,\n    0.814036330f,  0.580813958f,\n    0.813144415f,  0.582061990f,\n    0.812250587f,  0.583308653f,\n    0.811354847f,  0.584553943f,\n    0.810457198f,  0.585797857f,\n    0.809557642f,  0.587040394f,\n    0.808656182f,  0.588281548f,\n    0.807752818f,  0.589521319f,\n    0.806847554f,  0.590759702f,\n    0.805940391f,  0.591996695f,\n    0.805031331f,  0.593232295f,\n    0.804120377f,  0.594466499f,\n    0.803207531f,  0.595699304f,\n    0.802292796f,  0.596930708f,\n    0.801376172f,  0.598160707f,\n    0.800457662f,  0.599389298f,\n    0.799537269f,  0.600616479f,\n    0.798614995f,  0.601842247f,\n    0.797690841f,  0.603066599f,\n    0.796764810f,  0.604289531f,\n    0.795836905f,  0.605511041f,\n    0.794907126f,  0.606731127f,\n    0.793975478f,  0.607949785f,\n    0.793041960f,  0.609167012f,\n    0.792106577f,  0.610382806f,\n    0.791169330f,  0.611597164f,\n    0.790230221f,  0.612810082f,\n    0.789289253f,  0.614021559f,\n    0.788346428f,  0.615231591f,\n    0.787401747f,  0.616440175f,\n    0.786455214f,  0.617647308f,\n    0.785506830f,  0.618852988f,\n    0.784556597f,  0.620057212f,\n    0.783604519f,  0.621259977f,\n    0.782650596f,  0.622461279f,\n    0.781694832f,  0.623661118f,\n    0.780737229f,  0.624859488f,\n    0.779777788f,  0.626056388f,\n    0.778816512f,  0.627251815f,\n    0.777853404f,  0.628445767f,\n    0.776888466f,  0.629638239f,\n    0.775921699f,  0.630829230f,\n    0.774953107f,  0.632018736f,\n    0.773982691f,  0.633206755f,\n    0.773010453f,  0.634393284f,\n    0.772036397f,  0.635578320f,\n    0.771060524f,  0.636761861f,\n    0.770082837f,  0.637943904f,\n    0.769103338f,  0.639124445f,\n    0.768122029f,  0.640303482f,\n    0.767138912f,  0.641481013f,\n    0.766153990f,  0.642657034f,\n    0.765167266f,  0.643831543f,\n    0.764178741f,  0.645004537f,\n    0.763188417f,  0.646176013f,\n    0.762196298f,  0.647345969f,\n    0.761202385f,  0.648514401f,\n    0.760206682f,  0.649681307f,\n    0.759209189f,  0.650846685f,\n    0.758209910f,  0.652010531f,\n    0.757208847f,  0.653172843f,\n    0.756206001f,  0.654333618f,\n    0.755201377f,  0.655492853f,\n    0.754194975f,  0.656650546f,\n    0.753186799f,  0.657806693f,\n    0.752176850f,  0.658961293f,\n    0.751165132f,  0.660114342f,\n    0.750151646f,  0.661265838f,\n    0.749136395f,  0.662415778f,\n    0.748119380f,  0.663564159f,\n    0.747100606f,  0.664710978f,\n    0.746080074f,  0.665856234f,\n    0.745057785f,  0.666999922f,\n    0.744033744f,  0.668142041f,\n    0.743007952f,  0.669282588f,\n    0.741980412f,  0.670421560f,\n    0.740951125f,  0.671558955f,\n    0.739920095f,  0.672694769f,\n    0.738887324f,  0.673829000f,\n    0.737852815f,  0.674961646f,\n    0.736816569f,  0.676092704f,\n    0.735778589f,  0.677222170f,\n    0.734738878f,  0.678350043f,\n    0.733697438f,  0.679476320f,\n    0.732654272f,  0.680600998f,\n    0.731609381f,  0.681724074f,\n    0.730562769f,  0.682845546f,\n    0.729514438f,  0.683965412f,\n    0.728464390f,  0.685083668f,\n    0.727412629f,  0.686200312f,\n    0.726359155f,  0.687315341f,\n    0.725303972f,  0.688428753f,\n    0.724247083f,  0.689540545f,\n    0.723188489f,  0.690650714f,\n    0.722128194f,  0.691759258f,\n    0.721066199f,  0.692866175f,\n    0.720002508f,  0.693971461f,\n    0.718937122f,  0.695075114f,\n    0.717870045f,  0.696177131f,\n    0.716801279f,  0.697277511f,\n    0.715730825f,  0.698376249f,\n    0.714658688f,  0.699473345f,\n    0.713584869f,  0.700568794f,\n    0.712509371f,  0.701662595f,\n    0.711432196f,  0.702754744f,\n    0.710353347f,  0.703845241f,\n    0.709272826f,  0.704934080f,\n    0.708190637f,  0.706021261f,\n    0.707106781f,  0.707106781f,\n    0.706021261f,  0.708190637f,\n    0.704934080f,  0.709272826f,\n    0.703845241f,  0.710353347f,\n    0.702754744f,  0.711432196f,\n    0.701662595f,  0.712509371f,\n    0.700568794f,  0.713584869f,\n    0.699473345f,  0.714658688f,\n    0.698376249f,  0.715730825f,\n    0.697277511f,  0.716801279f,\n    0.696177131f,  0.717870045f,\n    0.695075114f,  0.718937122f,\n    0.693971461f,  0.720002508f,\n    0.692866175f,  0.721066199f,\n    0.691759258f,  0.722128194f,\n    0.690650714f,  0.723188489f,\n    0.689540545f,  0.724247083f,\n    0.688428753f,  0.725303972f,\n    0.687315341f,  0.726359155f,\n    0.686200312f,  0.727412629f,\n    0.685083668f,  0.728464390f,\n    0.683965412f,  0.729514438f,\n    0.682845546f,  0.730562769f,\n    0.681724074f,  0.731609381f,\n    0.680600998f,  0.732654272f,\n    0.679476320f,  0.733697438f,\n    0.678350043f,  0.734738878f,\n    0.677222170f,  0.735778589f,\n    0.676092704f,  0.736816569f,\n    0.674961646f,  0.737852815f,\n    0.673829000f,  0.738887324f,\n    0.672694769f,  0.739920095f,\n    0.671558955f,  0.740951125f,\n    0.670421560f,  0.741980412f,\n    0.669282588f,  0.743007952f,\n    0.668142041f,  0.744033744f,\n    0.666999922f,  0.745057785f,\n    0.665856234f,  0.746080074f,\n    0.664710978f,  0.747100606f,\n    0.663564159f,  0.748119380f,\n    0.662415778f,  0.749136395f,\n    0.661265838f,  0.750151646f,\n    0.660114342f,  0.751165132f,\n    0.658961293f,  0.752176850f,\n    0.657806693f,  0.753186799f,\n    0.656650546f,  0.754194975f,\n    0.655492853f,  0.755201377f,\n    0.654333618f,  0.756206001f,\n    0.653172843f,  0.757208847f,\n    0.652010531f,  0.758209910f,\n    0.650846685f,  0.759209189f,\n    0.649681307f,  0.760206682f,\n    0.648514401f,  0.761202385f,\n    0.647345969f,  0.762196298f,\n    0.646176013f,  0.763188417f,\n    0.645004537f,  0.764178741f,\n    0.643831543f,  0.765167266f,\n    0.642657034f,  0.766153990f,\n    0.641481013f,  0.767138912f,\n    0.640303482f,  0.768122029f,\n    0.639124445f,  0.769103338f,\n    0.637943904f,  0.770082837f,\n    0.636761861f,  0.771060524f,\n    0.635578320f,  0.772036397f,\n    0.634393284f,  0.773010453f,\n    0.633206755f,  0.773982691f,\n    0.632018736f,  0.774953107f,\n    0.630829230f,  0.775921699f,\n    0.629638239f,  0.776888466f,\n    0.628445767f,  0.777853404f,\n    0.627251815f,  0.778816512f,\n    0.626056388f,  0.779777788f,\n    0.624859488f,  0.780737229f,\n    0.623661118f,  0.781694832f,\n    0.622461279f,  0.782650596f,\n    0.621259977f,  0.783604519f,\n    0.620057212f,  0.784556597f,\n    0.618852988f,  0.785506830f,\n    0.617647308f,  0.786455214f,\n    0.616440175f,  0.787401747f,\n    0.615231591f,  0.788346428f,\n    0.614021559f,  0.789289253f,\n    0.612810082f,  0.790230221f,\n    0.611597164f,  0.791169330f,\n    0.610382806f,  0.792106577f,\n    0.609167012f,  0.793041960f,\n    0.607949785f,  0.793975478f,\n    0.606731127f,  0.794907126f,\n    0.605511041f,  0.795836905f,\n    0.604289531f,  0.796764810f,\n    0.603066599f,  0.797690841f,\n    0.601842247f,  0.798614995f,\n    0.600616479f,  0.799537269f,\n    0.599389298f,  0.800457662f,\n    0.598160707f,  0.801376172f,\n    0.596930708f,  0.802292796f,\n    0.595699304f,  0.803207531f,\n    0.594466499f,  0.804120377f,\n    0.593232295f,  0.805031331f,\n    0.591996695f,  0.805940391f,\n    0.590759702f,  0.806847554f,\n    0.589521319f,  0.807752818f,\n    0.588281548f,  0.808656182f,\n    0.587040394f,  0.809557642f,\n    0.585797857f,  0.810457198f,\n    0.584553943f,  0.811354847f,\n    0.583308653f,  0.812250587f,\n    0.582061990f,  0.813144415f,\n    0.580813958f,  0.814036330f,\n    0.579564559f,  0.814926329f,\n    0.578313796f,  0.815814411f,\n    0.577061673f,  0.816700573f,\n    0.575808191f,  0.817584813f,\n    0.574553355f,  0.818467130f,\n    0.573297167f,  0.819347520f,\n    0.572039629f,  0.820225983f,\n    0.570780746f,  0.821102515f,\n    0.569520519f,  0.821977115f,\n    0.568258953f,  0.822849781f,\n    0.566996049f,  0.823720511f,\n    0.565731811f,  0.824589303f,\n    0.564466242f,  0.825456154f,\n    0.563199344f,  0.826321063f,\n    0.561931121f,  0.827184027f,\n    0.560661576f,  0.828045045f,\n    0.559390712f,  0.828904115f,\n    0.558118531f,  0.829761234f,\n    0.556845037f,  0.830616400f,\n    0.555570233f,  0.831469612f,\n    0.554294121f,  0.832320868f,\n    0.553016706f,  0.833170165f,\n    0.551737988f,  0.834017501f,\n    0.550457973f,  0.834862875f,\n    0.549176662f,  0.835706284f,\n    0.547894059f,  0.836547727f,\n    0.546610167f,  0.837387202f,\n    0.545324988f,  0.838224706f,\n    0.544038527f,  0.839060237f,\n    0.542750785f,  0.839893794f,\n    0.541461766f,  0.840725375f,\n    0.540171473f,  0.841554977f,\n    0.538879909f,  0.842382600f,\n    0.537587076f,  0.843208240f,\n    0.536292979f,  0.844031895f,\n    0.534997620f,  0.844853565f,\n    0.533701002f,  0.845673247f,\n    0.532403128f,  0.846490939f,\n    0.531104001f,  0.847306639f,\n    0.529803625f,  0.848120345f,\n    0.528502002f,  0.848932055f,\n    0.527199135f,  0.849741768f,\n    0.525895027f,  0.850549481f,\n    0.524589683f,  0.851355193f,\n    0.523283103f,  0.852158902f,\n    0.521975293f,  0.852960605f,\n    0.520666254f,  0.853760301f,\n    0.519355990f,  0.854557988f,\n    0.518044504f,  0.855353665f,\n    0.516731799f,  0.856147328f,\n    0.515417878f,  0.856938977f,\n    0.514102744f,  0.857728610f,\n    0.512786401f,  0.858516224f,\n    0.511468850f,  0.859301818f,\n    0.510150097f,  0.860085390f,\n    0.508830143f,  0.860866939f,\n    0.507508991f,  0.861646461f,\n    0.506186645f,  0.862423956f,\n    0.504863109f,  0.863199422f,\n    0.503538384f,  0.863972856f,\n    0.502212474f,  0.864744258f,\n    0.500885383f,  0.865513624f,\n    0.499557113f,  0.866280954f,\n    0.498227667f,  0.867046246f,\n    0.496897049f,  0.867809497f,\n    0.495565262f,  0.868570706f,\n    0.494232309f,  0.869329871f,\n    0.492898192f,  0.870086991f,\n    0.491562916f,  0.870842063f,\n    0.490226483f,  0.871595087f,\n    0.488888897f,  0.872346059f,\n    0.487550160f,  0.873094978f,\n    0.486210276f,  0.873841843f,\n    0.484869248f,  0.874586652f,\n    0.483527079f,  0.875329403f,\n    0.482183772f,  0.876070094f,\n    0.480839331f,  0.876808724f,\n    0.479493758f,  0.877545290f,\n    0.478147056f,  0.878279792f,\n    0.476799230f,  0.879012226f,\n    0.475450282f,  0.879742593f,\n    0.474100215f,  0.880470889f,\n    0.472749032f,  0.881197113f,\n    0.471396737f,  0.881921264f,\n    0.470043332f,  0.882643340f,\n    0.468688822f,  0.883363339f,\n    0.467333209f,  0.884081259f,\n    0.465976496f,  0.884797098f,\n    0.464618686f,  0.885510856f,\n    0.463259784f,  0.886222530f,\n    0.461899791f,  0.886932119f,\n    0.460538711f,  0.887639620f,\n    0.459176548f,  0.888345033f,\n    0.457813304f,  0.889048356f,\n    0.456448982f,  0.889749586f,\n    0.455083587f,  0.890448723f,\n    0.453717121f,  0.891145765f,\n    0.452349587f,  0.891840709f,\n    0.450980989f,  0.892533555f,\n    0.449611330f,  0.893224301f,\n    0.448240612f,  0.893912945f,\n    0.446868840f,  0.894599486f,\n    0.445496017f,  0.895283921f,\n    0.444122145f,  0.895966250f,\n    0.442747228f,  0.896646470f,\n    0.441371269f,  0.897324581f,\n    0.439994271f,  0.898000580f,\n    0.438616239f,  0.898674466f,\n    0.437237174f,  0.899346237f,\n    0.435857080f,  0.900015892f,\n    0.434475961f,  0.900683429f,\n    0.433093819f,  0.901348847f,\n    0.431710658f,  0.902012144f,\n    0.430326481f,  0.902673318f,\n    0.428941292f,  0.903332368f,\n    0.427555093f,  0.903989293f,\n    0.426167889f,  0.904644091f,\n    0.424779681f,  0.905296759f,\n    0.423390474f,  0.905947298f,\n    0.422000271f,  0.906595705f,\n    0.420609074f,  0.907241978f,\n    0.419216888f,  0.907886116f,\n    0.417823716f,  0.908528119f,\n    0.416429560f,  0.909167983f,\n    0.415034424f,  0.909805708f,\n    0.413638312f,  0.910441292f,\n    0.412241227f,  0.911074734f,\n    0.410843171f,  0.911706032f,\n    0.409444149f,  0.912335185f,\n    0.408044163f,  0.912962190f,\n    0.406643217f,  0.913587048f,\n    0.405241314f,  0.914209756f,\n    0.403838458f,  0.914830312f,\n    0.402434651f,  0.915448716f,\n    0.401029897f,  0.916064966f,\n    0.399624200f,  0.916679060f,\n    0.398217562f,  0.917290997f,\n    0.396809987f,  0.917900776f,\n    0.395401479f,  0.918508394f,\n    0.393992040f,  0.919113852f,\n    0.392581674f,  0.919717146f,\n    0.391170384f,  0.920318277f,\n    0.389758174f,  0.920917242f,\n    0.388345047f,  0.921514039f,\n    0.386931006f,  0.922108669f,\n    0.385516054f,  0.922701128f,\n    0.384100195f,  0.923291417f,\n    0.382683432f,  0.923879533f,\n    0.381265769f,  0.924465474f,\n    0.379847209f,  0.925049241f,\n    0.378427755f,  0.925630831f,\n    0.377007410f,  0.926210242f,\n    0.375586178f,  0.926787474f,\n    0.374164063f,  0.927362526f,\n    0.372741067f,  0.927935395f,\n    0.371317194f,  0.928506080f,\n    0.369892447f,  0.929074581f,\n    0.368466830f,  0.929640896f,\n    0.367040346f,  0.930205023f,\n    0.365612998f,  0.930766961f,\n    0.364184790f,  0.931326709f,\n    0.362755724f,  0.931884266f,\n    0.361325806f,  0.932439629f,\n    0.359895037f,  0.932992799f,\n    0.358463421f,  0.933543773f,\n    0.357030961f,  0.934092550f,\n    0.355597662f,  0.934639130f,\n    0.354163525f,  0.935183510f,\n    0.352728556f,  0.935725689f,\n    0.351292756f,  0.936265667f,\n    0.349856130f,  0.936803442f,\n    0.348418680f,  0.937339012f,\n    0.346980411f,  0.937872376f,\n    0.345541325f,  0.938403534f,\n    0.344101426f,  0.938932484f,\n    0.342660717f,  0.939459224f,\n    0.341219202f,  0.939983753f,\n    0.339776884f,  0.940506071f,\n    0.338333767f,  0.941026175f,\n    0.336889853f,  0.941544065f,\n    0.335445147f,  0.942059740f,\n    0.333999651f,  0.942573198f,\n    0.332553370f,  0.943084437f,\n    0.331106306f,  0.943593458f,\n    0.329658463f,  0.944100258f,\n    0.328209844f,  0.944604837f,\n    0.326760452f,  0.945107193f,\n    0.325310292f,  0.945607325f,\n    0.323859367f,  0.946105232f,\n    0.322407679f,  0.946600913f,\n    0.320955232f,  0.947094366f,\n    0.319502031f,  0.947585591f,\n    0.318048077f,  0.948074586f,\n    0.316593376f,  0.948561350f,\n    0.315137929f,  0.949045882f,\n    0.313681740f,  0.949528181f,\n    0.312224814f,  0.950008245f,\n    0.310767153f,  0.950486074f,\n    0.309308760f,  0.950961666f,\n    0.307849640f,  0.951435021f,\n    0.306389795f,  0.951906137f,\n    0.304929230f,  0.952375013f,\n    0.303467947f,  0.952841648f,\n    0.302005949f,  0.953306040f,\n    0.300543241f,  0.953768190f,\n    0.299079826f,  0.954228095f,\n    0.297615707f,  0.954685755f,\n    0.296150888f,  0.955141168f,\n    0.294685372f,  0.955594334f,\n    0.293219163f,  0.956045251f,\n    0.291752263f,  0.956493919f,\n    0.290284677f,  0.956940336f,\n    0.288816408f,  0.957384501f,\n    0.287347460f,  0.957826413f,\n    0.285877835f,  0.958266071f,\n    0.284407537f,  0.958703475f,\n    0.282936570f,  0.959138622f,\n    0.281464938f,  0.959571513f,\n    0.279992643f,  0.960002146f,\n    0.278519689f,  0.960430519f,\n    0.277046080f,  0.960856633f,\n    0.275571819f,  0.961280486f,\n    0.274096910f,  0.961702077f,\n    0.272621355f,  0.962121404f,\n    0.271145160f,  0.962538468f,\n    0.269668326f,  0.962953267f,\n    0.268190857f,  0.963365800f,\n    0.266712757f,  0.963776066f,\n    0.265234030f,  0.964184064f,\n    0.263754679f,  0.964589793f,\n    0.262274707f,  0.964993253f,\n    0.260794118f,  0.965394442f,\n    0.259312915f,  0.965793359f,\n    0.257831102f,  0.966190003f,\n    0.256348682f,  0.966584374f,\n    0.254865660f,  0.966976471f,\n    0.253382037f,  0.967366292f,\n    0.251897818f,  0.967753837f,\n    0.250413007f,  0.968139105f,\n    0.248927606f,  0.968522094f,\n    0.247441619f,  0.968902805f,\n    0.245955050f,  0.969281235f,\n    0.244467903f,  0.969657385f,\n    0.242980180f,  0.970031253f,\n    0.241491885f,  0.970402839f,\n    0.240003022f,  0.970772141f,\n    0.238513595f,  0.971139158f,\n    0.237023606f,  0.971503891f,\n    0.235533059f,  0.971866337f,\n    0.234041959f,  0.972226497f,\n    0.232550307f,  0.972584369f,\n    0.231058108f,  0.972939952f,\n    0.229565366f,  0.973293246f,\n    0.228072083f,  0.973644250f,\n    0.226578264f,  0.973992962f,\n    0.225083911f,  0.974339383f,\n    0.223589029f,  0.974683511f,\n    0.222093621f,  0.975025345f,\n    0.220597690f,  0.975364885f,\n    0.219101240f,  0.975702130f,\n    0.217604275f,  0.976037079f,\n    0.216106797f,  0.976369731f,\n    0.214608811f,  0.976700086f,\n    0.213110320f,  0.977028143f,\n    0.211611327f,  0.977353900f,\n    0.210111837f,  0.977677358f,\n    0.208611852f,  0.977998515f,\n    0.207111376f,  0.978317371f,\n    0.205610413f,  0.978633924f,\n    0.204108966f,  0.978948175f,\n    0.202607039f,  0.979260123f,\n    0.201104635f,  0.979569766f,\n    0.199601758f,  0.979877104f,\n    0.198098411f,  0.980182136f,\n    0.196594598f,  0.980484862f,\n    0.195090322f,  0.980785280f,\n    0.193585587f,  0.981083391f,\n    0.192080397f,  0.981379193f,\n    0.190574755f,  0.981672686f,\n    0.189068664f,  0.981963869f,\n    0.187562129f,  0.982252741f,\n    0.186055152f,  0.982539302f,\n    0.184547737f,  0.982823551f,\n    0.183039888f,  0.983105487f,\n    0.181531608f,  0.983385110f,\n    0.180022901f,  0.983662419f,\n    0.178513771f,  0.983937413f,\n    0.177004220f,  0.984210092f,\n    0.175494253f,  0.984480455f,\n    0.173983873f,  0.984748502f,\n    0.172473084f,  0.985014231f,\n    0.170961889f,  0.985277642f,\n    0.169450291f,  0.985538735f,\n    0.167938295f,  0.985797509f,\n    0.166425904f,  0.986053963f,\n    0.164913120f,  0.986308097f,\n    0.163399949f,  0.986559910f,\n    0.161886394f,  0.986809402f,\n    0.160372457f,  0.987056571f,\n    0.158858143f,  0.987301418f,\n    0.157343456f,  0.987543942f,\n    0.155828398f,  0.987784142f,\n    0.154312973f,  0.988022017f,\n    0.152797185f,  0.988257568f,\n    0.151281038f,  0.988490793f,\n    0.149764535f,  0.988721692f,\n    0.148247679f,  0.988950265f,\n    0.146730474f,  0.989176510f,\n    0.145212925f,  0.989400428f,\n    0.143695033f,  0.989622017f,\n    0.142176804f,  0.989841278f,\n    0.140658239f,  0.990058210f,\n    0.139139344f,  0.990272812f,\n    0.137620122f,  0.990485084f,\n    0.136100575f,  0.990695025f,\n    0.134580709f,  0.990902635f,\n    0.133060525f,  0.991107914f,\n    0.131540029f,  0.991310860f,\n    0.130019223f,  0.991511473f,\n    0.128498111f,  0.991709754f,\n    0.126976696f,  0.991905700f,\n    0.125454983f,  0.992099313f,\n    0.123932975f,  0.992290591f,\n    0.122410675f,  0.992479535f,\n    0.120888087f,  0.992666142f,\n    0.119365215f,  0.992850414f,\n    0.117842062f,  0.993032350f,\n    0.116318631f,  0.993211949f,\n    0.114794927f,  0.993389211f,\n    0.113270952f,  0.993564136f,\n    0.111746711f,  0.993736722f,\n    0.110222207f,  0.993906970f,\n    0.108697444f,  0.994074879f,\n    0.107172425f,  0.994240449f,\n    0.105647154f,  0.994403680f,\n    0.104121634f,  0.994564571f,\n    0.102595869f,  0.994723121f,\n    0.101069863f,  0.994879331f,\n    0.099543619f,  0.995033199f,\n    0.098017140f,  0.995184727f,\n    0.096490431f,  0.995333912f,\n    0.094963495f,  0.995480755f,\n    0.093436336f,  0.995625256f,\n    0.091908956f,  0.995767414f,\n    0.090381361f,  0.995907229f,\n    0.088853553f,  0.996044701f,\n    0.087325535f,  0.996179829f,\n    0.085797312f,  0.996312612f,\n    0.084268888f,  0.996443051f,\n    0.082740265f,  0.996571146f,\n    0.081211447f,  0.996696895f,\n    0.079682438f,  0.996820299f,\n    0.078153242f,  0.996941358f,\n    0.076623861f,  0.997060070f,\n    0.075094301f,  0.997176437f,\n    0.073564564f,  0.997290457f,\n    0.072034653f,  0.997402130f,\n    0.070504573f,  0.997511456f,\n    0.068974328f,  0.997618435f,\n    0.067443920f,  0.997723067f,\n    0.065913353f,  0.997825350f,\n    0.064382631f,  0.997925286f,\n    0.062851758f,  0.998022874f,\n    0.061320736f,  0.998118113f,\n    0.059789571f,  0.998211003f,\n    0.058258265f,  0.998301545f,\n    0.056726821f,  0.998389737f,\n    0.055195244f,  0.998475581f,\n    0.053663538f,  0.998559074f,\n    0.052131705f,  0.998640218f,\n    0.050599749f,  0.998719012f,\n    0.049067674f,  0.998795456f,\n    0.047535484f,  0.998869550f,\n    0.046003182f,  0.998941293f,\n    0.044470772f,  0.999010686f,\n    0.042938257f,  0.999077728f,\n    0.041405641f,  0.999142419f,\n    0.039872928f,  0.999204759f,\n    0.038340120f,  0.999264747f,\n    0.036807223f,  0.999322385f,\n    0.035274239f,  0.999377670f,\n    0.033741172f,  0.999430605f,\n    0.032208025f,  0.999481187f,\n    0.030674803f,  0.999529418f,\n    0.029141509f,  0.999575296f,\n    0.027608146f,  0.999618822f,\n    0.026074718f,  0.999659997f,\n    0.024541229f,  0.999698819f,\n    0.023007681f,  0.999735288f,\n    0.021474080f,  0.999769405f,\n    0.019940429f,  0.999801170f,\n    0.018406730f,  0.999830582f,\n    0.016872988f,  0.999857641f,\n    0.015339206f,  0.999882347f,\n    0.013805389f,  0.999904701f,\n    0.012271538f,  0.999924702f,\n    0.010737659f,  0.999942350f,\n    0.009203755f,  0.999957645f,\n    0.007669829f,  0.999970586f,\n    0.006135885f,  0.999981175f,\n    0.004601926f,  0.999989411f,\n    0.003067957f,  0.999995294f,\n    0.001533980f,  0.999998823f,\n    0.000000000f,  1.000000000f,\n   -0.001533980f,  0.999998823f,\n   -0.003067957f,  0.999995294f,\n   -0.004601926f,  0.999989411f,\n   -0.006135885f,  0.999981175f,\n   -0.007669829f,  0.999970586f,\n   -0.009203755f,  0.999957645f,\n   -0.010737659f,  0.999942350f,\n   -0.012271538f,  0.999924702f,\n   -0.013805389f,  0.999904701f,\n   -0.015339206f,  0.999882347f,\n   -0.016872988f,  0.999857641f,\n   -0.018406730f,  0.999830582f,\n   -0.019940429f,  0.999801170f,\n   -0.021474080f,  0.999769405f,\n   -0.023007681f,  0.999735288f,\n   -0.024541229f,  0.999698819f,\n   -0.026074718f,  0.999659997f,\n   -0.027608146f,  0.999618822f,\n   -0.029141509f,  0.999575296f,\n   -0.030674803f,  0.999529418f,\n   -0.032208025f,  0.999481187f,\n   -0.033741172f,  0.999430605f,\n   -0.035274239f,  0.999377670f,\n   -0.036807223f,  0.999322385f,\n   -0.038340120f,  0.999264747f,\n   -0.039872928f,  0.999204759f,\n   -0.041405641f,  0.999142419f,\n   -0.042938257f,  0.999077728f,\n   -0.044470772f,  0.999010686f,\n   -0.046003182f,  0.998941293f,\n   -0.047535484f,  0.998869550f,\n   -0.049067674f,  0.998795456f,\n   -0.050599749f,  0.998719012f,\n   -0.052131705f,  0.998640218f,\n   -0.053663538f,  0.998559074f,\n   -0.055195244f,  0.998475581f,\n   -0.056726821f,  0.998389737f,\n   -0.058258265f,  0.998301545f,\n   -0.059789571f,  0.998211003f,\n   -0.061320736f,  0.998118113f,\n   -0.062851758f,  0.998022874f,\n   -0.064382631f,  0.997925286f,\n   -0.065913353f,  0.997825350f,\n   -0.067443920f,  0.997723067f,\n   -0.068974328f,  0.997618435f,\n   -0.070504573f,  0.997511456f,\n   -0.072034653f,  0.997402130f,\n   -0.073564564f,  0.997290457f,\n   -0.075094301f,  0.997176437f,\n   -0.076623861f,  0.997060070f,\n   -0.078153242f,  0.996941358f,\n   -0.079682438f,  0.996820299f,\n   -0.081211447f,  0.996696895f,\n   -0.082740265f,  0.996571146f,\n   -0.084268888f,  0.996443051f,\n   -0.085797312f,  0.996312612f,\n   -0.087325535f,  0.996179829f,\n   -0.088853553f,  0.996044701f,\n   -0.090381361f,  0.995907229f,\n   -0.091908956f,  0.995767414f,\n   -0.093436336f,  0.995625256f,\n   -0.094963495f,  0.995480755f,\n   -0.096490431f,  0.995333912f,\n   -0.098017140f,  0.995184727f,\n   -0.099543619f,  0.995033199f,\n   -0.101069863f,  0.994879331f,\n   -0.102595869f,  0.994723121f,\n   -0.104121634f,  0.994564571f,\n   -0.105647154f,  0.994403680f,\n   -0.107172425f,  0.994240449f,\n   -0.108697444f,  0.994074879f,\n   -0.110222207f,  0.993906970f,\n   -0.111746711f,  0.993736722f,\n   -0.113270952f,  0.993564136f,\n   -0.114794927f,  0.993389211f,\n   -0.116318631f,  0.993211949f,\n   -0.117842062f,  0.993032350f,\n   -0.119365215f,  0.992850414f,\n   -0.120888087f,  0.992666142f,\n   -0.122410675f,  0.992479535f,\n   -0.123932975f,  0.992290591f,\n   -0.125454983f,  0.992099313f,\n   -0.126976696f,  0.991905700f,\n   -0.128498111f,  0.991709754f,\n   -0.130019223f,  0.991511473f,\n   -0.131540029f,  0.991310860f,\n   -0.133060525f,  0.991107914f,\n   -0.134580709f,  0.990902635f,\n   -0.136100575f,  0.990695025f,\n   -0.137620122f,  0.990485084f,\n   -0.139139344f,  0.990272812f,\n   -0.140658239f,  0.990058210f,\n   -0.142176804f,  0.989841278f,\n   -0.143695033f,  0.989622017f,\n   -0.145212925f,  0.989400428f,\n   -0.146730474f,  0.989176510f,\n   -0.148247679f,  0.988950265f,\n   -0.149764535f,  0.988721692f,\n   -0.151281038f,  0.988490793f,\n   -0.152797185f,  0.988257568f,\n   -0.154312973f,  0.988022017f,\n   -0.155828398f,  0.987784142f,\n   -0.157343456f,  0.987543942f,\n   -0.158858143f,  0.987301418f,\n   -0.160372457f,  0.987056571f,\n   -0.161886394f,  0.986809402f,\n   -0.163399949f,  0.986559910f,\n   -0.164913120f,  0.986308097f,\n   -0.166425904f,  0.986053963f,\n   -0.167938295f,  0.985797509f,\n   -0.169450291f,  0.985538735f,\n   -0.170961889f,  0.985277642f,\n   -0.172473084f,  0.985014231f,\n   -0.173983873f,  0.984748502f,\n   -0.175494253f,  0.984480455f,\n   -0.177004220f,  0.984210092f,\n   -0.178513771f,  0.983937413f,\n   -0.180022901f,  0.983662419f,\n   -0.181531608f,  0.983385110f,\n   -0.183039888f,  0.983105487f,\n   -0.184547737f,  0.982823551f,\n   -0.186055152f,  0.982539302f,\n   -0.187562129f,  0.982252741f,\n   -0.189068664f,  0.981963869f,\n   -0.190574755f,  0.981672686f,\n   -0.192080397f,  0.981379193f,\n   -0.193585587f,  0.981083391f,\n   -0.195090322f,  0.980785280f,\n   -0.196594598f,  0.980484862f,\n   -0.198098411f,  0.980182136f,\n   -0.199601758f,  0.979877104f,\n   -0.201104635f,  0.979569766f,\n   -0.202607039f,  0.979260123f,\n   -0.204108966f,  0.978948175f,\n   -0.205610413f,  0.978633924f,\n   -0.207111376f,  0.978317371f,\n   -0.208611852f,  0.977998515f,\n   -0.210111837f,  0.977677358f,\n   -0.211611327f,  0.977353900f,\n   -0.213110320f,  0.977028143f,\n   -0.214608811f,  0.976700086f,\n   -0.216106797f,  0.976369731f,\n   -0.217604275f,  0.976037079f,\n   -0.219101240f,  0.975702130f,\n   -0.220597690f,  0.975364885f,\n   -0.222093621f,  0.975025345f,\n   -0.223589029f,  0.974683511f,\n   -0.225083911f,  0.974339383f,\n   -0.226578264f,  0.973992962f,\n   -0.228072083f,  0.973644250f,\n   -0.229565366f,  0.973293246f,\n   -0.231058108f,  0.972939952f,\n   -0.232550307f,  0.972584369f,\n   -0.234041959f,  0.972226497f,\n   -0.235533059f,  0.971866337f,\n   -0.237023606f,  0.971503891f,\n   -0.238513595f,  0.971139158f,\n   -0.240003022f,  0.970772141f,\n   -0.241491885f,  0.970402839f,\n   -0.242980180f,  0.970031253f,\n   -0.244467903f,  0.969657385f,\n   -0.245955050f,  0.969281235f,\n   -0.247441619f,  0.968902805f,\n   -0.248927606f,  0.968522094f,\n   -0.250413007f,  0.968139105f,\n   -0.251897818f,  0.967753837f,\n   -0.253382037f,  0.967366292f,\n   -0.254865660f,  0.966976471f,\n   -0.256348682f,  0.966584374f,\n   -0.257831102f,  0.966190003f,\n   -0.259312915f,  0.965793359f,\n   -0.260794118f,  0.965394442f,\n   -0.262274707f,  0.964993253f,\n   -0.263754679f,  0.964589793f,\n   -0.265234030f,  0.964184064f,\n   -0.266712757f,  0.963776066f,\n   -0.268190857f,  0.963365800f,\n   -0.269668326f,  0.962953267f,\n   -0.271145160f,  0.962538468f,\n   -0.272621355f,  0.962121404f,\n   -0.274096910f,  0.961702077f,\n   -0.275571819f,  0.961280486f,\n   -0.277046080f,  0.960856633f,\n   -0.278519689f,  0.960430519f,\n   -0.279992643f,  0.960002146f,\n   -0.281464938f,  0.959571513f,\n   -0.282936570f,  0.959138622f,\n   -0.284407537f,  0.958703475f,\n   -0.285877835f,  0.958266071f,\n   -0.287347460f,  0.957826413f,\n   -0.288816408f,  0.957384501f,\n   -0.290284677f,  0.956940336f,\n   -0.291752263f,  0.956493919f,\n   -0.293219163f,  0.956045251f,\n   -0.294685372f,  0.955594334f,\n   -0.296150888f,  0.955141168f,\n   -0.297615707f,  0.954685755f,\n   -0.299079826f,  0.954228095f,\n   -0.300543241f,  0.953768190f,\n   -0.302005949f,  0.953306040f,\n   -0.303467947f,  0.952841648f,\n   -0.304929230f,  0.952375013f,\n   -0.306389795f,  0.951906137f,\n   -0.307849640f,  0.951435021f,\n   -0.309308760f,  0.950961666f,\n   -0.310767153f,  0.950486074f,\n   -0.312224814f,  0.950008245f,\n   -0.313681740f,  0.949528181f,\n   -0.315137929f,  0.949045882f,\n   -0.316593376f,  0.948561350f,\n   -0.318048077f,  0.948074586f,\n   -0.319502031f,  0.947585591f,\n   -0.320955232f,  0.947094366f,\n   -0.322407679f,  0.946600913f,\n   -0.323859367f,  0.946105232f,\n   -0.325310292f,  0.945607325f,\n   -0.326760452f,  0.945107193f,\n   -0.328209844f,  0.944604837f,\n   -0.329658463f,  0.944100258f,\n   -0.331106306f,  0.943593458f,\n   -0.332553370f,  0.943084437f,\n   -0.333999651f,  0.942573198f,\n   -0.335445147f,  0.942059740f,\n   -0.336889853f,  0.941544065f,\n   -0.338333767f,  0.941026175f,\n   -0.339776884f,  0.940506071f,\n   -0.341219202f,  0.939983753f,\n   -0.342660717f,  0.939459224f,\n   -0.344101426f,  0.938932484f,\n   -0.345541325f,  0.938403534f,\n   -0.346980411f,  0.937872376f,\n   -0.348418680f,  0.937339012f,\n   -0.349856130f,  0.936803442f,\n   -0.351292756f,  0.936265667f,\n   -0.352728556f,  0.935725689f,\n   -0.354163525f,  0.935183510f,\n   -0.355597662f,  0.934639130f,\n   -0.357030961f,  0.934092550f,\n   -0.358463421f,  0.933543773f,\n   -0.359895037f,  0.932992799f,\n   -0.361325806f,  0.932439629f,\n   -0.362755724f,  0.931884266f,\n   -0.364184790f,  0.931326709f,\n   -0.365612998f,  0.930766961f,\n   -0.367040346f,  0.930205023f,\n   -0.368466830f,  0.929640896f,\n   -0.369892447f,  0.929074581f,\n   -0.371317194f,  0.928506080f,\n   -0.372741067f,  0.927935395f,\n   -0.374164063f,  0.927362526f,\n   -0.375586178f,  0.926787474f,\n   -0.377007410f,  0.926210242f,\n   -0.378427755f,  0.925630831f,\n   -0.379847209f,  0.925049241f,\n   -0.381265769f,  0.924465474f,\n   -0.382683432f,  0.923879533f,\n   -0.384100195f,  0.923291417f,\n   -0.385516054f,  0.922701128f,\n   -0.386931006f,  0.922108669f,\n   -0.388345047f,  0.921514039f,\n   -0.389758174f,  0.920917242f,\n   -0.391170384f,  0.920318277f,\n   -0.392581674f,  0.919717146f,\n   -0.393992040f,  0.919113852f,\n   -0.395401479f,  0.918508394f,\n   -0.396809987f,  0.917900776f,\n   -0.398217562f,  0.917290997f,\n   -0.399624200f,  0.916679060f,\n   -0.401029897f,  0.916064966f,\n   -0.402434651f,  0.915448716f,\n   -0.403838458f,  0.914830312f,\n   -0.405241314f,  0.914209756f,\n   -0.406643217f,  0.913587048f,\n   -0.408044163f,  0.912962190f,\n   -0.409444149f,  0.912335185f,\n   -0.410843171f,  0.911706032f,\n   -0.412241227f,  0.911074734f,\n   -0.413638312f,  0.910441292f,\n   -0.415034424f,  0.909805708f,\n   -0.416429560f,  0.909167983f,\n   -0.417823716f,  0.908528119f,\n   -0.419216888f,  0.907886116f,\n   -0.420609074f,  0.907241978f,\n   -0.422000271f,  0.906595705f,\n   -0.423390474f,  0.905947298f,\n   -0.424779681f,  0.905296759f,\n   -0.426167889f,  0.904644091f,\n   -0.427555093f,  0.903989293f,\n   -0.428941292f,  0.903332368f,\n   -0.430326481f,  0.902673318f,\n   -0.431710658f,  0.902012144f,\n   -0.433093819f,  0.901348847f,\n   -0.434475961f,  0.900683429f,\n   -0.435857080f,  0.900015892f,\n   -0.437237174f,  0.899346237f,\n   -0.438616239f,  0.898674466f,\n   -0.439994271f,  0.898000580f,\n   -0.441371269f,  0.897324581f,\n   -0.442747228f,  0.896646470f,\n   -0.444122145f,  0.895966250f,\n   -0.445496017f,  0.895283921f,\n   -0.446868840f,  0.894599486f,\n   -0.448240612f,  0.893912945f,\n   -0.449611330f,  0.893224301f,\n   -0.450980989f,  0.892533555f,\n   -0.452349587f,  0.891840709f,\n   -0.453717121f,  0.891145765f,\n   -0.455083587f,  0.890448723f,\n   -0.456448982f,  0.889749586f,\n   -0.457813304f,  0.889048356f,\n   -0.459176548f,  0.888345033f,\n   -0.460538711f,  0.887639620f,\n   -0.461899791f,  0.886932119f,\n   -0.463259784f,  0.886222530f,\n   -0.464618686f,  0.885510856f,\n   -0.465976496f,  0.884797098f,\n   -0.467333209f,  0.884081259f,\n   -0.468688822f,  0.883363339f,\n   -0.470043332f,  0.882643340f,\n   -0.471396737f,  0.881921264f,\n   -0.472749032f,  0.881197113f,\n   -0.474100215f,  0.880470889f,\n   -0.475450282f,  0.879742593f,\n   -0.476799230f,  0.879012226f,\n   -0.478147056f,  0.878279792f,\n   -0.479493758f,  0.877545290f,\n   -0.480839331f,  0.876808724f,\n   -0.482183772f,  0.876070094f,\n   -0.483527079f,  0.875329403f,\n   -0.484869248f,  0.874586652f,\n   -0.486210276f,  0.873841843f,\n   -0.487550160f,  0.873094978f,\n   -0.488888897f,  0.872346059f,\n   -0.490226483f,  0.871595087f,\n   -0.491562916f,  0.870842063f,\n   -0.492898192f,  0.870086991f,\n   -0.494232309f,  0.869329871f,\n   -0.495565262f,  0.868570706f,\n   -0.496897049f,  0.867809497f,\n   -0.498227667f,  0.867046246f,\n   -0.499557113f,  0.866280954f,\n   -0.500885383f,  0.865513624f,\n   -0.502212474f,  0.864744258f,\n   -0.503538384f,  0.863972856f,\n   -0.504863109f,  0.863199422f,\n   -0.506186645f,  0.862423956f,\n   -0.507508991f,  0.861646461f,\n   -0.508830143f,  0.860866939f,\n   -0.510150097f,  0.860085390f,\n   -0.511468850f,  0.859301818f,\n   -0.512786401f,  0.858516224f,\n   -0.514102744f,  0.857728610f,\n   -0.515417878f,  0.856938977f,\n   -0.516731799f,  0.856147328f,\n   -0.518044504f,  0.855353665f,\n   -0.519355990f,  0.854557988f,\n   -0.520666254f,  0.853760301f,\n   -0.521975293f,  0.852960605f,\n   -0.523283103f,  0.852158902f,\n   -0.524589683f,  0.851355193f,\n   -0.525895027f,  0.850549481f,\n   -0.527199135f,  0.849741768f,\n   -0.528502002f,  0.848932055f,\n   -0.529803625f,  0.848120345f,\n   -0.531104001f,  0.847306639f,\n   -0.532403128f,  0.846490939f,\n   -0.533701002f,  0.845673247f,\n   -0.534997620f,  0.844853565f,\n   -0.536292979f,  0.844031895f,\n   -0.537587076f,  0.843208240f,\n   -0.538879909f,  0.842382600f,\n   -0.540171473f,  0.841554977f,\n   -0.541461766f,  0.840725375f,\n   -0.542750785f,  0.839893794f,\n   -0.544038527f,  0.839060237f,\n   -0.545324988f,  0.838224706f,\n   -0.546610167f,  0.837387202f,\n   -0.547894059f,  0.836547727f,\n   -0.549176662f,  0.835706284f,\n   -0.550457973f,  0.834862875f,\n   -0.551737988f,  0.834017501f,\n   -0.553016706f,  0.833170165f,\n   -0.554294121f,  0.832320868f,\n   -0.555570233f,  0.831469612f,\n   -0.556845037f,  0.830616400f,\n   -0.558118531f,  0.829761234f,\n   -0.559390712f,  0.828904115f,\n   -0.560661576f,  0.828045045f,\n   -0.561931121f,  0.827184027f,\n   -0.563199344f,  0.826321063f,\n   -0.564466242f,  0.825456154f,\n   -0.565731811f,  0.824589303f,\n   -0.566996049f,  0.823720511f,\n   -0.568258953f,  0.822849781f,\n   -0.569520519f,  0.821977115f,\n   -0.570780746f,  0.821102515f,\n   -0.572039629f,  0.820225983f,\n   -0.573297167f,  0.819347520f,\n   -0.574553355f,  0.818467130f,\n   -0.575808191f,  0.817584813f,\n   -0.577061673f,  0.816700573f,\n   -0.578313796f,  0.815814411f,\n   -0.579564559f,  0.814926329f,\n   -0.580813958f,  0.814036330f,\n   -0.582061990f,  0.813144415f,\n   -0.583308653f,  0.812250587f,\n   -0.584553943f,  0.811354847f,\n   -0.585797857f,  0.810457198f,\n   -0.587040394f,  0.809557642f,\n   -0.588281548f,  0.808656182f,\n   -0.589521319f,  0.807752818f,\n   -0.590759702f,  0.806847554f,\n   -0.591996695f,  0.805940391f,\n   -0.593232295f,  0.805031331f,\n   -0.594466499f,  0.804120377f,\n   -0.595699304f,  0.803207531f,\n   -0.596930708f,  0.802292796f,\n   -0.598160707f,  0.801376172f,\n   -0.599389298f,  0.800457662f,\n   -0.600616479f,  0.799537269f,\n   -0.601842247f,  0.798614995f,\n   -0.603066599f,  0.797690841f,\n   -0.604289531f,  0.796764810f,\n   -0.605511041f,  0.795836905f,\n   -0.606731127f,  0.794907126f,\n   -0.607949785f,  0.793975478f,\n   -0.609167012f,  0.793041960f,\n   -0.610382806f,  0.792106577f,\n   -0.611597164f,  0.791169330f,\n   -0.612810082f,  0.790230221f,\n   -0.614021559f,  0.789289253f,\n   -0.615231591f,  0.788346428f,\n   -0.616440175f,  0.787401747f,\n   -0.617647308f,  0.786455214f,\n   -0.618852988f,  0.785506830f,\n   -0.620057212f,  0.784556597f,\n   -0.621259977f,  0.783604519f,\n   -0.622461279f,  0.782650596f,\n   -0.623661118f,  0.781694832f,\n   -0.624859488f,  0.780737229f,\n   -0.626056388f,  0.779777788f,\n   -0.627251815f,  0.778816512f,\n   -0.628445767f,  0.777853404f,\n   -0.629638239f,  0.776888466f,\n   -0.630829230f,  0.775921699f,\n   -0.632018736f,  0.774953107f,\n   -0.633206755f,  0.773982691f,\n   -0.634393284f,  0.773010453f,\n   -0.635578320f,  0.772036397f,\n   -0.636761861f,  0.771060524f,\n   -0.637943904f,  0.770082837f,\n   -0.639124445f,  0.769103338f,\n   -0.640303482f,  0.768122029f,\n   -0.641481013f,  0.767138912f,\n   -0.642657034f,  0.766153990f,\n   -0.643831543f,  0.765167266f,\n   -0.645004537f,  0.764178741f,\n   -0.646176013f,  0.763188417f,\n   -0.647345969f,  0.762196298f,\n   -0.648514401f,  0.761202385f,\n   -0.649681307f,  0.760206682f,\n   -0.650846685f,  0.759209189f,\n   -0.652010531f,  0.758209910f,\n   -0.653172843f,  0.757208847f,\n   -0.654333618f,  0.756206001f,\n   -0.655492853f,  0.755201377f,\n   -0.656650546f,  0.754194975f,\n   -0.657806693f,  0.753186799f,\n   -0.658961293f,  0.752176850f,\n   -0.660114342f,  0.751165132f,\n   -0.661265838f,  0.750151646f,\n   -0.662415778f,  0.749136395f,\n   -0.663564159f,  0.748119380f,\n   -0.664710978f,  0.747100606f,\n   -0.665856234f,  0.746080074f,\n   -0.666999922f,  0.745057785f,\n   -0.668142041f,  0.744033744f,\n   -0.669282588f,  0.743007952f,\n   -0.670421560f,  0.741980412f,\n   -0.671558955f,  0.740951125f,\n   -0.672694769f,  0.739920095f,\n   -0.673829000f,  0.738887324f,\n   -0.674961646f,  0.737852815f,\n   -0.676092704f,  0.736816569f,\n   -0.677222170f,  0.735778589f,\n   -0.678350043f,  0.734738878f,\n   -0.679476320f,  0.733697438f,\n   -0.680600998f,  0.732654272f,\n   -0.681724074f,  0.731609381f,\n   -0.682845546f,  0.730562769f,\n   -0.683965412f,  0.729514438f,\n   -0.685083668f,  0.728464390f,\n   -0.686200312f,  0.727412629f,\n   -0.687315341f,  0.726359155f,\n   -0.688428753f,  0.725303972f,\n   -0.689540545f,  0.724247083f,\n   -0.690650714f,  0.723188489f,\n   -0.691759258f,  0.722128194f,\n   -0.692866175f,  0.721066199f,\n   -0.693971461f,  0.720002508f,\n   -0.695075114f,  0.718937122f,\n   -0.696177131f,  0.717870045f,\n   -0.697277511f,  0.716801279f,\n   -0.698376249f,  0.715730825f,\n   -0.699473345f,  0.714658688f,\n   -0.700568794f,  0.713584869f,\n   -0.701662595f,  0.712509371f,\n   -0.702754744f,  0.711432196f,\n   -0.703845241f,  0.710353347f,\n   -0.704934080f,  0.709272826f,\n   -0.706021261f,  0.708190637f,\n   -0.707106781f,  0.707106781f,\n   -0.708190637f,  0.706021261f,\n   -0.709272826f,  0.704934080f,\n   -0.710353347f,  0.703845241f,\n   -0.711432196f,  0.702754744f,\n   -0.712509371f,  0.701662595f,\n   -0.713584869f,  0.700568794f,\n   -0.714658688f,  0.699473345f,\n   -0.715730825f,  0.698376249f,\n   -0.716801279f,  0.697277511f,\n   -0.717870045f,  0.696177131f,\n   -0.718937122f,  0.695075114f,\n   -0.720002508f,  0.693971461f,\n   -0.721066199f,  0.692866175f,\n   -0.722128194f,  0.691759258f,\n   -0.723188489f,  0.690650714f,\n   -0.724247083f,  0.689540545f,\n   -0.725303972f,  0.688428753f,\n   -0.726359155f,  0.687315341f,\n   -0.727412629f,  0.686200312f,\n   -0.728464390f,  0.685083668f,\n   -0.729514438f,  0.683965412f,\n   -0.730562769f,  0.682845546f,\n   -0.731609381f,  0.681724074f,\n   -0.732654272f,  0.680600998f,\n   -0.733697438f,  0.679476320f,\n   -0.734738878f,  0.678350043f,\n   -0.735778589f,  0.677222170f,\n   -0.736816569f,  0.676092704f,\n   -0.737852815f,  0.674961646f,\n   -0.738887324f,  0.673829000f,\n   -0.739920095f,  0.672694769f,\n   -0.740951125f,  0.671558955f,\n   -0.741980412f,  0.670421560f,\n   -0.743007952f,  0.669282588f,\n   -0.744033744f,  0.668142041f,\n   -0.745057785f,  0.666999922f,\n   -0.746080074f,  0.665856234f,\n   -0.747100606f,  0.664710978f,\n   -0.748119380f,  0.663564159f,\n   -0.749136395f,  0.662415778f,\n   -0.750151646f,  0.661265838f,\n   -0.751165132f,  0.660114342f,\n   -0.752176850f,  0.658961293f,\n   -0.753186799f,  0.657806693f,\n   -0.754194975f,  0.656650546f,\n   -0.755201377f,  0.655492853f,\n   -0.756206001f,  0.654333618f,\n   -0.757208847f,  0.653172843f,\n   -0.758209910f,  0.652010531f,\n   -0.759209189f,  0.650846685f,\n   -0.760206682f,  0.649681307f,\n   -0.761202385f,  0.648514401f,\n   -0.762196298f,  0.647345969f,\n   -0.763188417f,  0.646176013f,\n   -0.764178741f,  0.645004537f,\n   -0.765167266f,  0.643831543f,\n   -0.766153990f,  0.642657034f,\n   -0.767138912f,  0.641481013f,\n   -0.768122029f,  0.640303482f,\n   -0.769103338f,  0.639124445f,\n   -0.770082837f,  0.637943904f,\n   -0.771060524f,  0.636761861f,\n   -0.772036397f,  0.635578320f,\n   -0.773010453f,  0.634393284f,\n   -0.773982691f,  0.633206755f,\n   -0.774953107f,  0.632018736f,\n   -0.775921699f,  0.630829230f,\n   -0.776888466f,  0.629638239f,\n   -0.777853404f,  0.628445767f,\n   -0.778816512f,  0.627251815f,\n   -0.779777788f,  0.626056388f,\n   -0.780737229f,  0.624859488f,\n   -0.781694832f,  0.623661118f,\n   -0.782650596f,  0.622461279f,\n   -0.783604519f,  0.621259977f,\n   -0.784556597f,  0.620057212f,\n   -0.785506830f,  0.618852988f,\n   -0.786455214f,  0.617647308f,\n   -0.787401747f,  0.616440175f,\n   -0.788346428f,  0.615231591f,\n   -0.789289253f,  0.614021559f,\n   -0.790230221f,  0.612810082f,\n   -0.791169330f,  0.611597164f,\n   -0.792106577f,  0.610382806f,\n   -0.793041960f,  0.609167012f,\n   -0.793975478f,  0.607949785f,\n   -0.794907126f,  0.606731127f,\n   -0.795836905f,  0.605511041f,\n   -0.796764810f,  0.604289531f,\n   -0.797690841f,  0.603066599f,\n   -0.798614995f,  0.601842247f,\n   -0.799537269f,  0.600616479f,\n   -0.800457662f,  0.599389298f,\n   -0.801376172f,  0.598160707f,\n   -0.802292796f,  0.596930708f,\n   -0.803207531f,  0.595699304f,\n   -0.804120377f,  0.594466499f,\n   -0.805031331f,  0.593232295f,\n   -0.805940391f,  0.591996695f,\n   -0.806847554f,  0.590759702f,\n   -0.807752818f,  0.589521319f,\n   -0.808656182f,  0.588281548f,\n   -0.809557642f,  0.587040394f,\n   -0.810457198f,  0.585797857f,\n   -0.811354847f,  0.584553943f,\n   -0.812250587f,  0.583308653f,\n   -0.813144415f,  0.582061990f,\n   -0.814036330f,  0.580813958f,\n   -0.814926329f,  0.579564559f,\n   -0.815814411f,  0.578313796f,\n   -0.816700573f,  0.577061673f,\n   -0.817584813f,  0.575808191f,\n   -0.818467130f,  0.574553355f,\n   -0.819347520f,  0.573297167f,\n   -0.820225983f,  0.572039629f,\n   -0.821102515f,  0.570780746f,\n   -0.821977115f,  0.569520519f,\n   -0.822849781f,  0.568258953f,\n   -0.823720511f,  0.566996049f,\n   -0.824589303f,  0.565731811f,\n   -0.825456154f,  0.564466242f,\n   -0.826321063f,  0.563199344f,\n   -0.827184027f,  0.561931121f,\n   -0.828045045f,  0.560661576f,\n   -0.828904115f,  0.559390712f,\n   -0.829761234f,  0.558118531f,\n   -0.830616400f,  0.556845037f,\n   -0.831469612f,  0.555570233f,\n   -0.832320868f,  0.554294121f,\n   -0.833170165f,  0.553016706f,\n   -0.834017501f,  0.551737988f,\n   -0.834862875f,  0.550457973f,\n   -0.835706284f,  0.549176662f,\n   -0.836547727f,  0.547894059f,\n   -0.837387202f,  0.546610167f,\n   -0.838224706f,  0.545324988f,\n   -0.839060237f,  0.544038527f,\n   -0.839893794f,  0.542750785f,\n   -0.840725375f,  0.541461766f,\n   -0.841554977f,  0.540171473f,\n   -0.842382600f,  0.538879909f,\n   -0.843208240f,  0.537587076f,\n   -0.844031895f,  0.536292979f,\n   -0.844853565f,  0.534997620f,\n   -0.845673247f,  0.533701002f,\n   -0.846490939f,  0.532403128f,\n   -0.847306639f,  0.531104001f,\n   -0.848120345f,  0.529803625f,\n   -0.848932055f,  0.528502002f,\n   -0.849741768f,  0.527199135f,\n   -0.850549481f,  0.525895027f,\n   -0.851355193f,  0.524589683f,\n   -0.852158902f,  0.523283103f,\n   -0.852960605f,  0.521975293f,\n   -0.853760301f,  0.520666254f,\n   -0.854557988f,  0.519355990f,\n   -0.855353665f,  0.518044504f,\n   -0.856147328f,  0.516731799f,\n   -0.856938977f,  0.515417878f,\n   -0.857728610f,  0.514102744f,\n   -0.858516224f,  0.512786401f,\n   -0.859301818f,  0.511468850f,\n   -0.860085390f,  0.510150097f,\n   -0.860866939f,  0.508830143f,\n   -0.861646461f,  0.507508991f,\n   -0.862423956f,  0.506186645f,\n   -0.863199422f,  0.504863109f,\n   -0.863972856f,  0.503538384f,\n   -0.864744258f,  0.502212474f,\n   -0.865513624f,  0.500885383f,\n   -0.866280954f,  0.499557113f,\n   -0.867046246f,  0.498227667f,\n   -0.867809497f,  0.496897049f,\n   -0.868570706f,  0.495565262f,\n   -0.869329871f,  0.494232309f,\n   -0.870086991f,  0.492898192f,\n   -0.870842063f,  0.491562916f,\n   -0.871595087f,  0.490226483f,\n   -0.872346059f,  0.488888897f,\n   -0.873094978f,  0.487550160f,\n   -0.873841843f,  0.486210276f,\n   -0.874586652f,  0.484869248f,\n   -0.875329403f,  0.483527079f,\n   -0.876070094f,  0.482183772f,\n   -0.876808724f,  0.480839331f,\n   -0.877545290f,  0.479493758f,\n   -0.878279792f,  0.478147056f,\n   -0.879012226f,  0.476799230f,\n   -0.879742593f,  0.475450282f,\n   -0.880470889f,  0.474100215f,\n   -0.881197113f,  0.472749032f,\n   -0.881921264f,  0.471396737f,\n   -0.882643340f,  0.470043332f,\n   -0.883363339f,  0.468688822f,\n   -0.884081259f,  0.467333209f,\n   -0.884797098f,  0.465976496f,\n   -0.885510856f,  0.464618686f,\n   -0.886222530f,  0.463259784f,\n   -0.886932119f,  0.461899791f,\n   -0.887639620f,  0.460538711f,\n   -0.888345033f,  0.459176548f,\n   -0.889048356f,  0.457813304f,\n   -0.889749586f,  0.456448982f,\n   -0.890448723f,  0.455083587f,\n   -0.891145765f,  0.453717121f,\n   -0.891840709f,  0.452349587f,\n   -0.892533555f,  0.450980989f,\n   -0.893224301f,  0.449611330f,\n   -0.893912945f,  0.448240612f,\n   -0.894599486f,  0.446868840f,\n   -0.895283921f,  0.445496017f,\n   -0.895966250f,  0.444122145f,\n   -0.896646470f,  0.442747228f,\n   -0.897324581f,  0.441371269f,\n   -0.898000580f,  0.439994271f,\n   -0.898674466f,  0.438616239f,\n   -0.899346237f,  0.437237174f,\n   -0.900015892f,  0.435857080f,\n   -0.900683429f,  0.434475961f,\n   -0.901348847f,  0.433093819f,\n   -0.902012144f,  0.431710658f,\n   -0.902673318f,  0.430326481f,\n   -0.903332368f,  0.428941292f,\n   -0.903989293f,  0.427555093f,\n   -0.904644091f,  0.426167889f,\n   -0.905296759f,  0.424779681f,\n   -0.905947298f,  0.423390474f,\n   -0.906595705f,  0.422000271f,\n   -0.907241978f,  0.420609074f,\n   -0.907886116f,  0.419216888f,\n   -0.908528119f,  0.417823716f,\n   -0.909167983f,  0.416429560f,\n   -0.909805708f,  0.415034424f,\n   -0.910441292f,  0.413638312f,\n   -0.911074734f,  0.412241227f,\n   -0.911706032f,  0.410843171f,\n   -0.912335185f,  0.409444149f,\n   -0.912962190f,  0.408044163f,\n   -0.913587048f,  0.406643217f,\n   -0.914209756f,  0.405241314f,\n   -0.914830312f,  0.403838458f,\n   -0.915448716f,  0.402434651f,\n   -0.916064966f,  0.401029897f,\n   -0.916679060f,  0.399624200f,\n   -0.917290997f,  0.398217562f,\n   -0.917900776f,  0.396809987f,\n   -0.918508394f,  0.395401479f,\n   -0.919113852f,  0.393992040f,\n   -0.919717146f,  0.392581674f,\n   -0.920318277f,  0.391170384f,\n   -0.920917242f,  0.389758174f,\n   -0.921514039f,  0.388345047f,\n   -0.922108669f,  0.386931006f,\n   -0.922701128f,  0.385516054f,\n   -0.923291417f,  0.384100195f,\n   -0.923879533f,  0.382683432f,\n   -0.924465474f,  0.381265769f,\n   -0.925049241f,  0.379847209f,\n   -0.925630831f,  0.378427755f,\n   -0.926210242f,  0.377007410f,\n   -0.926787474f,  0.375586178f,\n   -0.927362526f,  0.374164063f,\n   -0.927935395f,  0.372741067f,\n   -0.928506080f,  0.371317194f,\n   -0.929074581f,  0.369892447f,\n   -0.929640896f,  0.368466830f,\n   -0.930205023f,  0.367040346f,\n   -0.930766961f,  0.365612998f,\n   -0.931326709f,  0.364184790f,\n   -0.931884266f,  0.362755724f,\n   -0.932439629f,  0.361325806f,\n   -0.932992799f,  0.359895037f,\n   -0.933543773f,  0.358463421f,\n   -0.934092550f,  0.357030961f,\n   -0.934639130f,  0.355597662f,\n   -0.935183510f,  0.354163525f,\n   -0.935725689f,  0.352728556f,\n   -0.936265667f,  0.351292756f,\n   -0.936803442f,  0.349856130f,\n   -0.937339012f,  0.348418680f,\n   -0.937872376f,  0.346980411f,\n   -0.938403534f,  0.345541325f,\n   -0.938932484f,  0.344101426f,\n   -0.939459224f,  0.342660717f,\n   -0.939983753f,  0.341219202f,\n   -0.940506071f,  0.339776884f,\n   -0.941026175f,  0.338333767f,\n   -0.941544065f,  0.336889853f,\n   -0.942059740f,  0.335445147f,\n   -0.942573198f,  0.333999651f,\n   -0.943084437f,  0.332553370f,\n   -0.943593458f,  0.331106306f,\n   -0.944100258f,  0.329658463f,\n   -0.944604837f,  0.328209844f,\n   -0.945107193f,  0.326760452f,\n   -0.945607325f,  0.325310292f,\n   -0.946105232f,  0.323859367f,\n   -0.946600913f,  0.322407679f,\n   -0.947094366f,  0.320955232f,\n   -0.947585591f,  0.319502031f,\n   -0.948074586f,  0.318048077f,\n   -0.948561350f,  0.316593376f,\n   -0.949045882f,  0.315137929f,\n   -0.949528181f,  0.313681740f,\n   -0.950008245f,  0.312224814f,\n   -0.950486074f,  0.310767153f,\n   -0.950961666f,  0.309308760f,\n   -0.951435021f,  0.307849640f,\n   -0.951906137f,  0.306389795f,\n   -0.952375013f,  0.304929230f,\n   -0.952841648f,  0.303467947f,\n   -0.953306040f,  0.302005949f,\n   -0.953768190f,  0.300543241f,\n   -0.954228095f,  0.299079826f,\n   -0.954685755f,  0.297615707f,\n   -0.955141168f,  0.296150888f,\n   -0.955594334f,  0.294685372f,\n   -0.956045251f,  0.293219163f,\n   -0.956493919f,  0.291752263f,\n   -0.956940336f,  0.290284677f,\n   -0.957384501f,  0.288816408f,\n   -0.957826413f,  0.287347460f,\n   -0.958266071f,  0.285877835f,\n   -0.958703475f,  0.284407537f,\n   -0.959138622f,  0.282936570f,\n   -0.959571513f,  0.281464938f,\n   -0.960002146f,  0.279992643f,\n   -0.960430519f,  0.278519689f,\n   -0.960856633f,  0.277046080f,\n   -0.961280486f,  0.275571819f,\n   -0.961702077f,  0.274096910f,\n   -0.962121404f,  0.272621355f,\n   -0.962538468f,  0.271145160f,\n   -0.962953267f,  0.269668326f,\n   -0.963365800f,  0.268190857f,\n   -0.963776066f,  0.266712757f,\n   -0.964184064f,  0.265234030f,\n   -0.964589793f,  0.263754679f,\n   -0.964993253f,  0.262274707f,\n   -0.965394442f,  0.260794118f,\n   -0.965793359f,  0.259312915f,\n   -0.966190003f,  0.257831102f,\n   -0.966584374f,  0.256348682f,\n   -0.966976471f,  0.254865660f,\n   -0.967366292f,  0.253382037f,\n   -0.967753837f,  0.251897818f,\n   -0.968139105f,  0.250413007f,\n   -0.968522094f,  0.248927606f,\n   -0.968902805f,  0.247441619f,\n   -0.969281235f,  0.245955050f,\n   -0.969657385f,  0.244467903f,\n   -0.970031253f,  0.242980180f,\n   -0.970402839f,  0.241491885f,\n   -0.970772141f,  0.240003022f,\n   -0.971139158f,  0.238513595f,\n   -0.971503891f,  0.237023606f,\n   -0.971866337f,  0.235533059f,\n   -0.972226497f,  0.234041959f,\n   -0.972584369f,  0.232550307f,\n   -0.972939952f,  0.231058108f,\n   -0.973293246f,  0.229565366f,\n   -0.973644250f,  0.228072083f,\n   -0.973992962f,  0.226578264f,\n   -0.974339383f,  0.225083911f,\n   -0.974683511f,  0.223589029f,\n   -0.975025345f,  0.222093621f,\n   -0.975364885f,  0.220597690f,\n   -0.975702130f,  0.219101240f,\n   -0.976037079f,  0.217604275f,\n   -0.976369731f,  0.216106797f,\n   -0.976700086f,  0.214608811f,\n   -0.977028143f,  0.213110320f,\n   -0.977353900f,  0.211611327f,\n   -0.977677358f,  0.210111837f,\n   -0.977998515f,  0.208611852f,\n   -0.978317371f,  0.207111376f,\n   -0.978633924f,  0.205610413f,\n   -0.978948175f,  0.204108966f,\n   -0.979260123f,  0.202607039f,\n   -0.979569766f,  0.201104635f,\n   -0.979877104f,  0.199601758f,\n   -0.980182136f,  0.198098411f,\n   -0.980484862f,  0.196594598f,\n   -0.980785280f,  0.195090322f,\n   -0.981083391f,  0.193585587f,\n   -0.981379193f,  0.192080397f,\n   -0.981672686f,  0.190574755f,\n   -0.981963869f,  0.189068664f,\n   -0.982252741f,  0.187562129f,\n   -0.982539302f,  0.186055152f,\n   -0.982823551f,  0.184547737f,\n   -0.983105487f,  0.183039888f,\n   -0.983385110f,  0.181531608f,\n   -0.983662419f,  0.180022901f,\n   -0.983937413f,  0.178513771f,\n   -0.984210092f,  0.177004220f,\n   -0.984480455f,  0.175494253f,\n   -0.984748502f,  0.173983873f,\n   -0.985014231f,  0.172473084f,\n   -0.985277642f,  0.170961889f,\n   -0.985538735f,  0.169450291f,\n   -0.985797509f,  0.167938295f,\n   -0.986053963f,  0.166425904f,\n   -0.986308097f,  0.164913120f,\n   -0.986559910f,  0.163399949f,\n   -0.986809402f,  0.161886394f,\n   -0.987056571f,  0.160372457f,\n   -0.987301418f,  0.158858143f,\n   -0.987543942f,  0.157343456f,\n   -0.987784142f,  0.155828398f,\n   -0.988022017f,  0.154312973f,\n   -0.988257568f,  0.152797185f,\n   -0.988490793f,  0.151281038f,\n   -0.988721692f,  0.149764535f,\n   -0.988950265f,  0.148247679f,\n   -0.989176510f,  0.146730474f,\n   -0.989400428f,  0.145212925f,\n   -0.989622017f,  0.143695033f,\n   -0.989841278f,  0.142176804f,\n   -0.990058210f,  0.140658239f,\n   -0.990272812f,  0.139139344f,\n   -0.990485084f,  0.137620122f,\n   -0.990695025f,  0.136100575f,\n   -0.990902635f,  0.134580709f,\n   -0.991107914f,  0.133060525f,\n   -0.991310860f,  0.131540029f,\n   -0.991511473f,  0.130019223f,\n   -0.991709754f,  0.128498111f,\n   -0.991905700f,  0.126976696f,\n   -0.992099313f,  0.125454983f,\n   -0.992290591f,  0.123932975f,\n   -0.992479535f,  0.122410675f,\n   -0.992666142f,  0.120888087f,\n   -0.992850414f,  0.119365215f,\n   -0.993032350f,  0.117842062f,\n   -0.993211949f,  0.116318631f,\n   -0.993389211f,  0.114794927f,\n   -0.993564136f,  0.113270952f,\n   -0.993736722f,  0.111746711f,\n   -0.993906970f,  0.110222207f,\n   -0.994074879f,  0.108697444f,\n   -0.994240449f,  0.107172425f,\n   -0.994403680f,  0.105647154f,\n   -0.994564571f,  0.104121634f,\n   -0.994723121f,  0.102595869f,\n   -0.994879331f,  0.101069863f,\n   -0.995033199f,  0.099543619f,\n   -0.995184727f,  0.098017140f,\n   -0.995333912f,  0.096490431f,\n   -0.995480755f,  0.094963495f,\n   -0.995625256f,  0.093436336f,\n   -0.995767414f,  0.091908956f,\n   -0.995907229f,  0.090381361f,\n   -0.996044701f,  0.088853553f,\n   -0.996179829f,  0.087325535f,\n   -0.996312612f,  0.085797312f,\n   -0.996443051f,  0.084268888f,\n   -0.996571146f,  0.082740265f,\n   -0.996696895f,  0.081211447f,\n   -0.996820299f,  0.079682438f,\n   -0.996941358f,  0.078153242f,\n   -0.997060070f,  0.076623861f,\n   -0.997176437f,  0.075094301f,\n   -0.997290457f,  0.073564564f,\n   -0.997402130f,  0.072034653f,\n   -0.997511456f,  0.070504573f,\n   -0.997618435f,  0.068974328f,\n   -0.997723067f,  0.067443920f,\n   -0.997825350f,  0.065913353f,\n   -0.997925286f,  0.064382631f,\n   -0.998022874f,  0.062851758f,\n   -0.998118113f,  0.061320736f,\n   -0.998211003f,  0.059789571f,\n   -0.998301545f,  0.058258265f,\n   -0.998389737f,  0.056726821f,\n   -0.998475581f,  0.055195244f,\n   -0.998559074f,  0.053663538f,\n   -0.998640218f,  0.052131705f,\n   -0.998719012f,  0.050599749f,\n   -0.998795456f,  0.049067674f,\n   -0.998869550f,  0.047535484f,\n   -0.998941293f,  0.046003182f,\n   -0.999010686f,  0.044470772f,\n   -0.999077728f,  0.042938257f,\n   -0.999142419f,  0.041405641f,\n   -0.999204759f,  0.039872928f,\n   -0.999264747f,  0.038340120f,\n   -0.999322385f,  0.036807223f,\n   -0.999377670f,  0.035274239f,\n   -0.999430605f,  0.033741172f,\n   -0.999481187f,  0.032208025f,\n   -0.999529418f,  0.030674803f,\n   -0.999575296f,  0.029141509f,\n   -0.999618822f,  0.027608146f,\n   -0.999659997f,  0.026074718f,\n   -0.999698819f,  0.024541229f,\n   -0.999735288f,  0.023007681f,\n   -0.999769405f,  0.021474080f,\n   -0.999801170f,  0.019940429f,\n   -0.999830582f,  0.018406730f,\n   -0.999857641f,  0.016872988f,\n   -0.999882347f,  0.015339206f,\n   -0.999904701f,  0.013805389f,\n   -0.999924702f,  0.012271538f,\n   -0.999942350f,  0.010737659f,\n   -0.999957645f,  0.009203755f,\n   -0.999970586f,  0.007669829f,\n   -0.999981175f,  0.006135885f,\n   -0.999989411f,  0.004601926f,\n   -0.999995294f,  0.003067957f,\n   -0.999998823f,  0.001533980f,\n   -1.000000000f,  0.000000000f,\n   -0.999998823f, -0.001533980f,\n   -0.999995294f, -0.003067957f,\n   -0.999989411f, -0.004601926f,\n   -0.999981175f, -0.006135885f,\n   -0.999970586f, -0.007669829f,\n   -0.999957645f, -0.009203755f,\n   -0.999942350f, -0.010737659f,\n   -0.999924702f, -0.012271538f,\n   -0.999904701f, -0.013805389f,\n   -0.999882347f, -0.015339206f,\n   -0.999857641f, -0.016872988f,\n   -0.999830582f, -0.018406730f,\n   -0.999801170f, -0.019940429f,\n   -0.999769405f, -0.021474080f,\n   -0.999735288f, -0.023007681f,\n   -0.999698819f, -0.024541229f,\n   -0.999659997f, -0.026074718f,\n   -0.999618822f, -0.027608146f,\n   -0.999575296f, -0.029141509f,\n   -0.999529418f, -0.030674803f,\n   -0.999481187f, -0.032208025f,\n   -0.999430605f, -0.033741172f,\n   -0.999377670f, -0.035274239f,\n   -0.999322385f, -0.036807223f,\n   -0.999264747f, -0.038340120f,\n   -0.999204759f, -0.039872928f,\n   -0.999142419f, -0.041405641f,\n   -0.999077728f, -0.042938257f,\n   -0.999010686f, -0.044470772f,\n   -0.998941293f, -0.046003182f,\n   -0.998869550f, -0.047535484f,\n   -0.998795456f, -0.049067674f,\n   -0.998719012f, -0.050599749f,\n   -0.998640218f, -0.052131705f,\n   -0.998559074f, -0.053663538f,\n   -0.998475581f, -0.055195244f,\n   -0.998389737f, -0.056726821f,\n   -0.998301545f, -0.058258265f,\n   -0.998211003f, -0.059789571f,\n   -0.998118113f, -0.061320736f,\n   -0.998022874f, -0.062851758f,\n   -0.997925286f, -0.064382631f,\n   -0.997825350f, -0.065913353f,\n   -0.997723067f, -0.067443920f,\n   -0.997618435f, -0.068974328f,\n   -0.997511456f, -0.070504573f,\n   -0.997402130f, -0.072034653f,\n   -0.997290457f, -0.073564564f,\n   -0.997176437f, -0.075094301f,\n   -0.997060070f, -0.076623861f,\n   -0.996941358f, -0.078153242f,\n   -0.996820299f, -0.079682438f,\n   -0.996696895f, -0.081211447f,\n   -0.996571146f, -0.082740265f,\n   -0.996443051f, -0.084268888f,\n   -0.996312612f, -0.085797312f,\n   -0.996179829f, -0.087325535f,\n   -0.996044701f, -0.088853553f,\n   -0.995907229f, -0.090381361f,\n   -0.995767414f, -0.091908956f,\n   -0.995625256f, -0.093436336f,\n   -0.995480755f, -0.094963495f,\n   -0.995333912f, -0.096490431f,\n   -0.995184727f, -0.098017140f,\n   -0.995033199f, -0.099543619f,\n   -0.994879331f, -0.101069863f,\n   -0.994723121f, -0.102595869f,\n   -0.994564571f, -0.104121634f,\n   -0.994403680f, -0.105647154f,\n   -0.994240449f, -0.107172425f,\n   -0.994074879f, -0.108697444f,\n   -0.993906970f, -0.110222207f,\n   -0.993736722f, -0.111746711f,\n   -0.993564136f, -0.113270952f,\n   -0.993389211f, -0.114794927f,\n   -0.993211949f, -0.116318631f,\n   -0.993032350f, -0.117842062f,\n   -0.992850414f, -0.119365215f,\n   -0.992666142f, -0.120888087f,\n   -0.992479535f, -0.122410675f,\n   -0.992290591f, -0.123932975f,\n   -0.992099313f, -0.125454983f,\n   -0.991905700f, -0.126976696f,\n   -0.991709754f, -0.128498111f,\n   -0.991511473f, -0.130019223f,\n   -0.991310860f, -0.131540029f,\n   -0.991107914f, -0.133060525f,\n   -0.990902635f, -0.134580709f,\n   -0.990695025f, -0.136100575f,\n   -0.990485084f, -0.137620122f,\n   -0.990272812f, -0.139139344f,\n   -0.990058210f, -0.140658239f,\n   -0.989841278f, -0.142176804f,\n   -0.989622017f, -0.143695033f,\n   -0.989400428f, -0.145212925f,\n   -0.989176510f, -0.146730474f,\n   -0.988950265f, -0.148247679f,\n   -0.988721692f, -0.149764535f,\n   -0.988490793f, -0.151281038f,\n   -0.988257568f, -0.152797185f,\n   -0.988022017f, -0.154312973f,\n   -0.987784142f, -0.155828398f,\n   -0.987543942f, -0.157343456f,\n   -0.987301418f, -0.158858143f,\n   -0.987056571f, -0.160372457f,\n   -0.986809402f, -0.161886394f,\n   -0.986559910f, -0.163399949f,\n   -0.986308097f, -0.164913120f,\n   -0.986053963f, -0.166425904f,\n   -0.985797509f, -0.167938295f,\n   -0.985538735f, -0.169450291f,\n   -0.985277642f, -0.170961889f,\n   -0.985014231f, -0.172473084f,\n   -0.984748502f, -0.173983873f,\n   -0.984480455f, -0.175494253f,\n   -0.984210092f, -0.177004220f,\n   -0.983937413f, -0.178513771f,\n   -0.983662419f, -0.180022901f,\n   -0.983385110f, -0.181531608f,\n   -0.983105487f, -0.183039888f,\n   -0.982823551f, -0.184547737f,\n   -0.982539302f, -0.186055152f,\n   -0.982252741f, -0.187562129f,\n   -0.981963869f, -0.189068664f,\n   -0.981672686f, -0.190574755f,\n   -0.981379193f, -0.192080397f,\n   -0.981083391f, -0.193585587f,\n   -0.980785280f, -0.195090322f,\n   -0.980484862f, -0.196594598f,\n   -0.980182136f, -0.198098411f,\n   -0.979877104f, -0.199601758f,\n   -0.979569766f, -0.201104635f,\n   -0.979260123f, -0.202607039f,\n   -0.978948175f, -0.204108966f,\n   -0.978633924f, -0.205610413f,\n   -0.978317371f, -0.207111376f,\n   -0.977998515f, -0.208611852f,\n   -0.977677358f, -0.210111837f,\n   -0.977353900f, -0.211611327f,\n   -0.977028143f, -0.213110320f,\n   -0.976700086f, -0.214608811f,\n   -0.976369731f, -0.216106797f,\n   -0.976037079f, -0.217604275f,\n   -0.975702130f, -0.219101240f,\n   -0.975364885f, -0.220597690f,\n   -0.975025345f, -0.222093621f,\n   -0.974683511f, -0.223589029f,\n   -0.974339383f, -0.225083911f,\n   -0.973992962f, -0.226578264f,\n   -0.973644250f, -0.228072083f,\n   -0.973293246f, -0.229565366f,\n   -0.972939952f, -0.231058108f,\n   -0.972584369f, -0.232550307f,\n   -0.972226497f, -0.234041959f,\n   -0.971866337f, -0.235533059f,\n   -0.971503891f, -0.237023606f,\n   -0.971139158f, -0.238513595f,\n   -0.970772141f, -0.240003022f,\n   -0.970402839f, -0.241491885f,\n   -0.970031253f, -0.242980180f,\n   -0.969657385f, -0.244467903f,\n   -0.969281235f, -0.245955050f,\n   -0.968902805f, -0.247441619f,\n   -0.968522094f, -0.248927606f,\n   -0.968139105f, -0.250413007f,\n   -0.967753837f, -0.251897818f,\n   -0.967366292f, -0.253382037f,\n   -0.966976471f, -0.254865660f,\n   -0.966584374f, -0.256348682f,\n   -0.966190003f, -0.257831102f,\n   -0.965793359f, -0.259312915f,\n   -0.965394442f, -0.260794118f,\n   -0.964993253f, -0.262274707f,\n   -0.964589793f, -0.263754679f,\n   -0.964184064f, -0.265234030f,\n   -0.963776066f, -0.266712757f,\n   -0.963365800f, -0.268190857f,\n   -0.962953267f, -0.269668326f,\n   -0.962538468f, -0.271145160f,\n   -0.962121404f, -0.272621355f,\n   -0.961702077f, -0.274096910f,\n   -0.961280486f, -0.275571819f,\n   -0.960856633f, -0.277046080f,\n   -0.960430519f, -0.278519689f,\n   -0.960002146f, -0.279992643f,\n   -0.959571513f, -0.281464938f,\n   -0.959138622f, -0.282936570f,\n   -0.958703475f, -0.284407537f,\n   -0.958266071f, -0.285877835f,\n   -0.957826413f, -0.287347460f,\n   -0.957384501f, -0.288816408f,\n   -0.956940336f, -0.290284677f,\n   -0.956493919f, -0.291752263f,\n   -0.956045251f, -0.293219163f,\n   -0.955594334f, -0.294685372f,\n   -0.955141168f, -0.296150888f,\n   -0.954685755f, -0.297615707f,\n   -0.954228095f, -0.299079826f,\n   -0.953768190f, -0.300543241f,\n   -0.953306040f, -0.302005949f,\n   -0.952841648f, -0.303467947f,\n   -0.952375013f, -0.304929230f,\n   -0.951906137f, -0.306389795f,\n   -0.951435021f, -0.307849640f,\n   -0.950961666f, -0.309308760f,\n   -0.950486074f, -0.310767153f,\n   -0.950008245f, -0.312224814f,\n   -0.949528181f, -0.313681740f,\n   -0.949045882f, -0.315137929f,\n   -0.948561350f, -0.316593376f,\n   -0.948074586f, -0.318048077f,\n   -0.947585591f, -0.319502031f,\n   -0.947094366f, -0.320955232f,\n   -0.946600913f, -0.322407679f,\n   -0.946105232f, -0.323859367f,\n   -0.945607325f, -0.325310292f,\n   -0.945107193f, -0.326760452f,\n   -0.944604837f, -0.328209844f,\n   -0.944100258f, -0.329658463f,\n   -0.943593458f, -0.331106306f,\n   -0.943084437f, -0.332553370f,\n   -0.942573198f, -0.333999651f,\n   -0.942059740f, -0.335445147f,\n   -0.941544065f, -0.336889853f,\n   -0.941026175f, -0.338333767f,\n   -0.940506071f, -0.339776884f,\n   -0.939983753f, -0.341219202f,\n   -0.939459224f, -0.342660717f,\n   -0.938932484f, -0.344101426f,\n   -0.938403534f, -0.345541325f,\n   -0.937872376f, -0.346980411f,\n   -0.937339012f, -0.348418680f,\n   -0.936803442f, -0.349856130f,\n   -0.936265667f, -0.351292756f,\n   -0.935725689f, -0.352728556f,\n   -0.935183510f, -0.354163525f,\n   -0.934639130f, -0.355597662f,\n   -0.934092550f, -0.357030961f,\n   -0.933543773f, -0.358463421f,\n   -0.932992799f, -0.359895037f,\n   -0.932439629f, -0.361325806f,\n   -0.931884266f, -0.362755724f,\n   -0.931326709f, -0.364184790f,\n   -0.930766961f, -0.365612998f,\n   -0.930205023f, -0.367040346f,\n   -0.929640896f, -0.368466830f,\n   -0.929074581f, -0.369892447f,\n   -0.928506080f, -0.371317194f,\n   -0.927935395f, -0.372741067f,\n   -0.927362526f, -0.374164063f,\n   -0.926787474f, -0.375586178f,\n   -0.926210242f, -0.377007410f,\n   -0.925630831f, -0.378427755f,\n   -0.925049241f, -0.379847209f,\n   -0.924465474f, -0.381265769f,\n   -0.923879533f, -0.382683432f,\n   -0.923291417f, -0.384100195f,\n   -0.922701128f, -0.385516054f,\n   -0.922108669f, -0.386931006f,\n   -0.921514039f, -0.388345047f,\n   -0.920917242f, -0.389758174f,\n   -0.920318277f, -0.391170384f,\n   -0.919717146f, -0.392581674f,\n   -0.919113852f, -0.393992040f,\n   -0.918508394f, -0.395401479f,\n   -0.917900776f, -0.396809987f,\n   -0.917290997f, -0.398217562f,\n   -0.916679060f, -0.399624200f,\n   -0.916064966f, -0.401029897f,\n   -0.915448716f, -0.402434651f,\n   -0.914830312f, -0.403838458f,\n   -0.914209756f, -0.405241314f,\n   -0.913587048f, -0.406643217f,\n   -0.912962190f, -0.408044163f,\n   -0.912335185f, -0.409444149f,\n   -0.911706032f, -0.410843171f,\n   -0.911074734f, -0.412241227f,\n   -0.910441292f, -0.413638312f,\n   -0.909805708f, -0.415034424f,\n   -0.909167983f, -0.416429560f,\n   -0.908528119f, -0.417823716f,\n   -0.907886116f, -0.419216888f,\n   -0.907241978f, -0.420609074f,\n   -0.906595705f, -0.422000271f,\n   -0.905947298f, -0.423390474f,\n   -0.905296759f, -0.424779681f,\n   -0.904644091f, -0.426167889f,\n   -0.903989293f, -0.427555093f,\n   -0.903332368f, -0.428941292f,\n   -0.902673318f, -0.430326481f,\n   -0.902012144f, -0.431710658f,\n   -0.901348847f, -0.433093819f,\n   -0.900683429f, -0.434475961f,\n   -0.900015892f, -0.435857080f,\n   -0.899346237f, -0.437237174f,\n   -0.898674466f, -0.438616239f,\n   -0.898000580f, -0.439994271f,\n   -0.897324581f, -0.441371269f,\n   -0.896646470f, -0.442747228f,\n   -0.895966250f, -0.444122145f,\n   -0.895283921f, -0.445496017f,\n   -0.894599486f, -0.446868840f,\n   -0.893912945f, -0.448240612f,\n   -0.893224301f, -0.449611330f,\n   -0.892533555f, -0.450980989f,\n   -0.891840709f, -0.452349587f,\n   -0.891145765f, -0.453717121f,\n   -0.890448723f, -0.455083587f,\n   -0.889749586f, -0.456448982f,\n   -0.889048356f, -0.457813304f,\n   -0.888345033f, -0.459176548f,\n   -0.887639620f, -0.460538711f,\n   -0.886932119f, -0.461899791f,\n   -0.886222530f, -0.463259784f,\n   -0.885510856f, -0.464618686f,\n   -0.884797098f, -0.465976496f,\n   -0.884081259f, -0.467333209f,\n   -0.883363339f, -0.468688822f,\n   -0.882643340f, -0.470043332f,\n   -0.881921264f, -0.471396737f,\n   -0.881197113f, -0.472749032f,\n   -0.880470889f, -0.474100215f,\n   -0.879742593f, -0.475450282f,\n   -0.879012226f, -0.476799230f,\n   -0.878279792f, -0.478147056f,\n   -0.877545290f, -0.479493758f,\n   -0.876808724f, -0.480839331f,\n   -0.876070094f, -0.482183772f,\n   -0.875329403f, -0.483527079f,\n   -0.874586652f, -0.484869248f,\n   -0.873841843f, -0.486210276f,\n   -0.873094978f, -0.487550160f,\n   -0.872346059f, -0.488888897f,\n   -0.871595087f, -0.490226483f,\n   -0.870842063f, -0.491562916f,\n   -0.870086991f, -0.492898192f,\n   -0.869329871f, -0.494232309f,\n   -0.868570706f, -0.495565262f,\n   -0.867809497f, -0.496897049f,\n   -0.867046246f, -0.498227667f,\n   -0.866280954f, -0.499557113f,\n   -0.865513624f, -0.500885383f,\n   -0.864744258f, -0.502212474f,\n   -0.863972856f, -0.503538384f,\n   -0.863199422f, -0.504863109f,\n   -0.862423956f, -0.506186645f,\n   -0.861646461f, -0.507508991f,\n   -0.860866939f, -0.508830143f,\n   -0.860085390f, -0.510150097f,\n   -0.859301818f, -0.511468850f,\n   -0.858516224f, -0.512786401f,\n   -0.857728610f, -0.514102744f,\n   -0.856938977f, -0.515417878f,\n   -0.856147328f, -0.516731799f,\n   -0.855353665f, -0.518044504f,\n   -0.854557988f, -0.519355990f,\n   -0.853760301f, -0.520666254f,\n   -0.852960605f, -0.521975293f,\n   -0.852158902f, -0.523283103f,\n   -0.851355193f, -0.524589683f,\n   -0.850549481f, -0.525895027f,\n   -0.849741768f, -0.527199135f,\n   -0.848932055f, -0.528502002f,\n   -0.848120345f, -0.529803625f,\n   -0.847306639f, -0.531104001f,\n   -0.846490939f, -0.532403128f,\n   -0.845673247f, -0.533701002f,\n   -0.844853565f, -0.534997620f,\n   -0.844031895f, -0.536292979f,\n   -0.843208240f, -0.537587076f,\n   -0.842382600f, -0.538879909f,\n   -0.841554977f, -0.540171473f,\n   -0.840725375f, -0.541461766f,\n   -0.839893794f, -0.542750785f,\n   -0.839060237f, -0.544038527f,\n   -0.838224706f, -0.545324988f,\n   -0.837387202f, -0.546610167f,\n   -0.836547727f, -0.547894059f,\n   -0.835706284f, -0.549176662f,\n   -0.834862875f, -0.550457973f,\n   -0.834017501f, -0.551737988f,\n   -0.833170165f, -0.553016706f,\n   -0.832320868f, -0.554294121f,\n   -0.831469612f, -0.555570233f,\n   -0.830616400f, -0.556845037f,\n   -0.829761234f, -0.558118531f,\n   -0.828904115f, -0.559390712f,\n   -0.828045045f, -0.560661576f,\n   -0.827184027f, -0.561931121f,\n   -0.826321063f, -0.563199344f,\n   -0.825456154f, -0.564466242f,\n   -0.824589303f, -0.565731811f,\n   -0.823720511f, -0.566996049f,\n   -0.822849781f, -0.568258953f,\n   -0.821977115f, -0.569520519f,\n   -0.821102515f, -0.570780746f,\n   -0.820225983f, -0.572039629f,\n   -0.819347520f, -0.573297167f,\n   -0.818467130f, -0.574553355f,\n   -0.817584813f, -0.575808191f,\n   -0.816700573f, -0.577061673f,\n   -0.815814411f, -0.578313796f,\n   -0.814926329f, -0.579564559f,\n   -0.814036330f, -0.580813958f,\n   -0.813144415f, -0.582061990f,\n   -0.812250587f, -0.583308653f,\n   -0.811354847f, -0.584553943f,\n   -0.810457198f, -0.585797857f,\n   -0.809557642f, -0.587040394f,\n   -0.808656182f, -0.588281548f,\n   -0.807752818f, -0.589521319f,\n   -0.806847554f, -0.590759702f,\n   -0.805940391f, -0.591996695f,\n   -0.805031331f, -0.593232295f,\n   -0.804120377f, -0.594466499f,\n   -0.803207531f, -0.595699304f,\n   -0.802292796f, -0.596930708f,\n   -0.801376172f, -0.598160707f,\n   -0.800457662f, -0.599389298f,\n   -0.799537269f, -0.600616479f,\n   -0.798614995f, -0.601842247f,\n   -0.797690841f, -0.603066599f,\n   -0.796764810f, -0.604289531f,\n   -0.795836905f, -0.605511041f,\n   -0.794907126f, -0.606731127f,\n   -0.793975478f, -0.607949785f,\n   -0.793041960f, -0.609167012f,\n   -0.792106577f, -0.610382806f,\n   -0.791169330f, -0.611597164f,\n   -0.790230221f, -0.612810082f,\n   -0.789289253f, -0.614021559f,\n   -0.788346428f, -0.615231591f,\n   -0.787401747f, -0.616440175f,\n   -0.786455214f, -0.617647308f,\n   -0.785506830f, -0.618852988f,\n   -0.784556597f, -0.620057212f,\n   -0.783604519f, -0.621259977f,\n   -0.782650596f, -0.622461279f,\n   -0.781694832f, -0.623661118f,\n   -0.780737229f, -0.624859488f,\n   -0.779777788f, -0.626056388f,\n   -0.778816512f, -0.627251815f,\n   -0.777853404f, -0.628445767f,\n   -0.776888466f, -0.629638239f,\n   -0.775921699f, -0.630829230f,\n   -0.774953107f, -0.632018736f,\n   -0.773982691f, -0.633206755f,\n   -0.773010453f, -0.634393284f,\n   -0.772036397f, -0.635578320f,\n   -0.771060524f, -0.636761861f,\n   -0.770082837f, -0.637943904f,\n   -0.769103338f, -0.639124445f,\n   -0.768122029f, -0.640303482f,\n   -0.767138912f, -0.641481013f,\n   -0.766153990f, -0.642657034f,\n   -0.765167266f, -0.643831543f,\n   -0.764178741f, -0.645004537f,\n   -0.763188417f, -0.646176013f,\n   -0.762196298f, -0.647345969f,\n   -0.761202385f, -0.648514401f,\n   -0.760206682f, -0.649681307f,\n   -0.759209189f, -0.650846685f,\n   -0.758209910f, -0.652010531f,\n   -0.757208847f, -0.653172843f,\n   -0.756206001f, -0.654333618f,\n   -0.755201377f, -0.655492853f,\n   -0.754194975f, -0.656650546f,\n   -0.753186799f, -0.657806693f,\n   -0.752176850f, -0.658961293f,\n   -0.751165132f, -0.660114342f,\n   -0.750151646f, -0.661265838f,\n   -0.749136395f, -0.662415778f,\n   -0.748119380f, -0.663564159f,\n   -0.747100606f, -0.664710978f,\n   -0.746080074f, -0.665856234f,\n   -0.745057785f, -0.666999922f,\n   -0.744033744f, -0.668142041f,\n   -0.743007952f, -0.669282588f,\n   -0.741980412f, -0.670421560f,\n   -0.740951125f, -0.671558955f,\n   -0.739920095f, -0.672694769f,\n   -0.738887324f, -0.673829000f,\n   -0.737852815f, -0.674961646f,\n   -0.736816569f, -0.676092704f,\n   -0.735778589f, -0.677222170f,\n   -0.734738878f, -0.678350043f,\n   -0.733697438f, -0.679476320f,\n   -0.732654272f, -0.680600998f,\n   -0.731609381f, -0.681724074f,\n   -0.730562769f, -0.682845546f,\n   -0.729514438f, -0.683965412f,\n   -0.728464390f, -0.685083668f,\n   -0.727412629f, -0.686200312f,\n   -0.726359155f, -0.687315341f,\n   -0.725303972f, -0.688428753f,\n   -0.724247083f, -0.689540545f,\n   -0.723188489f, -0.690650714f,\n   -0.722128194f, -0.691759258f,\n   -0.721066199f, -0.692866175f,\n   -0.720002508f, -0.693971461f,\n   -0.718937122f, -0.695075114f,\n   -0.717870045f, -0.696177131f,\n   -0.716801279f, -0.697277511f,\n   -0.715730825f, -0.698376249f,\n   -0.714658688f, -0.699473345f,\n   -0.713584869f, -0.700568794f,\n   -0.712509371f, -0.701662595f,\n   -0.711432196f, -0.702754744f,\n   -0.710353347f, -0.703845241f,\n   -0.709272826f, -0.704934080f,\n   -0.708190637f, -0.706021261f,\n   -0.707106781f, -0.707106781f,\n   -0.706021261f, -0.708190637f,\n   -0.704934080f, -0.709272826f,\n   -0.703845241f, -0.710353347f,\n   -0.702754744f, -0.711432196f,\n   -0.701662595f, -0.712509371f,\n   -0.700568794f, -0.713584869f,\n   -0.699473345f, -0.714658688f,\n   -0.698376249f, -0.715730825f,\n   -0.697277511f, -0.716801279f,\n   -0.696177131f, -0.717870045f,\n   -0.695075114f, -0.718937122f,\n   -0.693971461f, -0.720002508f,\n   -0.692866175f, -0.721066199f,\n   -0.691759258f, -0.722128194f,\n   -0.690650714f, -0.723188489f,\n   -0.689540545f, -0.724247083f,\n   -0.688428753f, -0.725303972f,\n   -0.687315341f, -0.726359155f,\n   -0.686200312f, -0.727412629f,\n   -0.685083668f, -0.728464390f,\n   -0.683965412f, -0.729514438f,\n   -0.682845546f, -0.730562769f,\n   -0.681724074f, -0.731609381f,\n   -0.680600998f, -0.732654272f,\n   -0.679476320f, -0.733697438f,\n   -0.678350043f, -0.734738878f,\n   -0.677222170f, -0.735778589f,\n   -0.676092704f, -0.736816569f,\n   -0.674961646f, -0.737852815f,\n   -0.673829000f, -0.738887324f,\n   -0.672694769f, -0.739920095f,\n   -0.671558955f, -0.740951125f,\n   -0.670421560f, -0.741980412f,\n   -0.669282588f, -0.743007952f,\n   -0.668142041f, -0.744033744f,\n   -0.666999922f, -0.745057785f,\n   -0.665856234f, -0.746080074f,\n   -0.664710978f, -0.747100606f,\n   -0.663564159f, -0.748119380f,\n   -0.662415778f, -0.749136395f,\n   -0.661265838f, -0.750151646f,\n   -0.660114342f, -0.751165132f,\n   -0.658961293f, -0.752176850f,\n   -0.657806693f, -0.753186799f,\n   -0.656650546f, -0.754194975f,\n   -0.655492853f, -0.755201377f,\n   -0.654333618f, -0.756206001f,\n   -0.653172843f, -0.757208847f,\n   -0.652010531f, -0.758209910f,\n   -0.650846685f, -0.759209189f,\n   -0.649681307f, -0.760206682f,\n   -0.648514401f, -0.761202385f,\n   -0.647345969f, -0.762196298f,\n   -0.646176013f, -0.763188417f,\n   -0.645004537f, -0.764178741f,\n   -0.643831543f, -0.765167266f,\n   -0.642657034f, -0.766153990f,\n   -0.641481013f, -0.767138912f,\n   -0.640303482f, -0.768122029f,\n   -0.639124445f, -0.769103338f,\n   -0.637943904f, -0.770082837f,\n   -0.636761861f, -0.771060524f,\n   -0.635578320f, -0.772036397f,\n   -0.634393284f, -0.773010453f,\n   -0.633206755f, -0.773982691f,\n   -0.632018736f, -0.774953107f,\n   -0.630829230f, -0.775921699f,\n   -0.629638239f, -0.776888466f,\n   -0.628445767f, -0.777853404f,\n   -0.627251815f, -0.778816512f,\n   -0.626056388f, -0.779777788f,\n   -0.624859488f, -0.780737229f,\n   -0.623661118f, -0.781694832f,\n   -0.622461279f, -0.782650596f,\n   -0.621259977f, -0.783604519f,\n   -0.620057212f, -0.784556597f,\n   -0.618852988f, -0.785506830f,\n   -0.617647308f, -0.786455214f,\n   -0.616440175f, -0.787401747f,\n   -0.615231591f, -0.788346428f,\n   -0.614021559f, -0.789289253f,\n   -0.612810082f, -0.790230221f,\n   -0.611597164f, -0.791169330f,\n   -0.610382806f, -0.792106577f,\n   -0.609167012f, -0.793041960f,\n   -0.607949785f, -0.793975478f,\n   -0.606731127f, -0.794907126f,\n   -0.605511041f, -0.795836905f,\n   -0.604289531f, -0.796764810f,\n   -0.603066599f, -0.797690841f,\n   -0.601842247f, -0.798614995f,\n   -0.600616479f, -0.799537269f,\n   -0.599389298f, -0.800457662f,\n   -0.598160707f, -0.801376172f,\n   -0.596930708f, -0.802292796f,\n   -0.595699304f, -0.803207531f,\n   -0.594466499f, -0.804120377f,\n   -0.593232295f, -0.805031331f,\n   -0.591996695f, -0.805940391f,\n   -0.590759702f, -0.806847554f,\n   -0.589521319f, -0.807752818f,\n   -0.588281548f, -0.808656182f,\n   -0.587040394f, -0.809557642f,\n   -0.585797857f, -0.810457198f,\n   -0.584553943f, -0.811354847f,\n   -0.583308653f, -0.812250587f,\n   -0.582061990f, -0.813144415f,\n   -0.580813958f, -0.814036330f,\n   -0.579564559f, -0.814926329f,\n   -0.578313796f, -0.815814411f,\n   -0.577061673f, -0.816700573f,\n   -0.575808191f, -0.817584813f,\n   -0.574553355f, -0.818467130f,\n   -0.573297167f, -0.819347520f,\n   -0.572039629f, -0.820225983f,\n   -0.570780746f, -0.821102515f,\n   -0.569520519f, -0.821977115f,\n   -0.568258953f, -0.822849781f,\n   -0.566996049f, -0.823720511f,\n   -0.565731811f, -0.824589303f,\n   -0.564466242f, -0.825456154f,\n   -0.563199344f, -0.826321063f,\n   -0.561931121f, -0.827184027f,\n   -0.560661576f, -0.828045045f,\n   -0.559390712f, -0.828904115f,\n   -0.558118531f, -0.829761234f,\n   -0.556845037f, -0.830616400f,\n   -0.555570233f, -0.831469612f,\n   -0.554294121f, -0.832320868f,\n   -0.553016706f, -0.833170165f,\n   -0.551737988f, -0.834017501f,\n   -0.550457973f, -0.834862875f,\n   -0.549176662f, -0.835706284f,\n   -0.547894059f, -0.836547727f,\n   -0.546610167f, -0.837387202f,\n   -0.545324988f, -0.838224706f,\n   -0.544038527f, -0.839060237f,\n   -0.542750785f, -0.839893794f,\n   -0.541461766f, -0.840725375f,\n   -0.540171473f, -0.841554977f,\n   -0.538879909f, -0.842382600f,\n   -0.537587076f, -0.843208240f,\n   -0.536292979f, -0.844031895f,\n   -0.534997620f, -0.844853565f,\n   -0.533701002f, -0.845673247f,\n   -0.532403128f, -0.846490939f,\n   -0.531104001f, -0.847306639f,\n   -0.529803625f, -0.848120345f,\n   -0.528502002f, -0.848932055f,\n   -0.527199135f, -0.849741768f,\n   -0.525895027f, -0.850549481f,\n   -0.524589683f, -0.851355193f,\n   -0.523283103f, -0.852158902f,\n   -0.521975293f, -0.852960605f,\n   -0.520666254f, -0.853760301f,\n   -0.519355990f, -0.854557988f,\n   -0.518044504f, -0.855353665f,\n   -0.516731799f, -0.856147328f,\n   -0.515417878f, -0.856938977f,\n   -0.514102744f, -0.857728610f,\n   -0.512786401f, -0.858516224f,\n   -0.511468850f, -0.859301818f,\n   -0.510150097f, -0.860085390f,\n   -0.508830143f, -0.860866939f,\n   -0.507508991f, -0.861646461f,\n   -0.506186645f, -0.862423956f,\n   -0.504863109f, -0.863199422f,\n   -0.503538384f, -0.863972856f,\n   -0.502212474f, -0.864744258f,\n   -0.500885383f, -0.865513624f,\n   -0.499557113f, -0.866280954f,\n   -0.498227667f, -0.867046246f,\n   -0.496897049f, -0.867809497f,\n   -0.495565262f, -0.868570706f,\n   -0.494232309f, -0.869329871f,\n   -0.492898192f, -0.870086991f,\n   -0.491562916f, -0.870842063f,\n   -0.490226483f, -0.871595087f,\n   -0.488888897f, -0.872346059f,\n   -0.487550160f, -0.873094978f,\n   -0.486210276f, -0.873841843f,\n   -0.484869248f, -0.874586652f,\n   -0.483527079f, -0.875329403f,\n   -0.482183772f, -0.876070094f,\n   -0.480839331f, -0.876808724f,\n   -0.479493758f, -0.877545290f,\n   -0.478147056f, -0.878279792f,\n   -0.476799230f, -0.879012226f,\n   -0.475450282f, -0.879742593f,\n   -0.474100215f, -0.880470889f,\n   -0.472749032f, -0.881197113f,\n   -0.471396737f, -0.881921264f,\n   -0.470043332f, -0.882643340f,\n   -0.468688822f, -0.883363339f,\n   -0.467333209f, -0.884081259f,\n   -0.465976496f, -0.884797098f,\n   -0.464618686f, -0.885510856f,\n   -0.463259784f, -0.886222530f,\n   -0.461899791f, -0.886932119f,\n   -0.460538711f, -0.887639620f,\n   -0.459176548f, -0.888345033f,\n   -0.457813304f, -0.889048356f,\n   -0.456448982f, -0.889749586f,\n   -0.455083587f, -0.890448723f,\n   -0.453717121f, -0.891145765f,\n   -0.452349587f, -0.891840709f,\n   -0.450980989f, -0.892533555f,\n   -0.449611330f, -0.893224301f,\n   -0.448240612f, -0.893912945f,\n   -0.446868840f, -0.894599486f,\n   -0.445496017f, -0.895283921f,\n   -0.444122145f, -0.895966250f,\n   -0.442747228f, -0.896646470f,\n   -0.441371269f, -0.897324581f,\n   -0.439994271f, -0.898000580f,\n   -0.438616239f, -0.898674466f,\n   -0.437237174f, -0.899346237f,\n   -0.435857080f, -0.900015892f,\n   -0.434475961f, -0.900683429f,\n   -0.433093819f, -0.901348847f,\n   -0.431710658f, -0.902012144f,\n   -0.430326481f, -0.902673318f,\n   -0.428941292f, -0.903332368f,\n   -0.427555093f, -0.903989293f,\n   -0.426167889f, -0.904644091f,\n   -0.424779681f, -0.905296759f,\n   -0.423390474f, -0.905947298f,\n   -0.422000271f, -0.906595705f,\n   -0.420609074f, -0.907241978f,\n   -0.419216888f, -0.907886116f,\n   -0.417823716f, -0.908528119f,\n   -0.416429560f, -0.909167983f,\n   -0.415034424f, -0.909805708f,\n   -0.413638312f, -0.910441292f,\n   -0.412241227f, -0.911074734f,\n   -0.410843171f, -0.911706032f,\n   -0.409444149f, -0.912335185f,\n   -0.408044163f, -0.912962190f,\n   -0.406643217f, -0.913587048f,\n   -0.405241314f, -0.914209756f,\n   -0.403838458f, -0.914830312f,\n   -0.402434651f, -0.915448716f,\n   -0.401029897f, -0.916064966f,\n   -0.399624200f, -0.916679060f,\n   -0.398217562f, -0.917290997f,\n   -0.396809987f, -0.917900776f,\n   -0.395401479f, -0.918508394f,\n   -0.393992040f, -0.919113852f,\n   -0.392581674f, -0.919717146f,\n   -0.391170384f, -0.920318277f,\n   -0.389758174f, -0.920917242f,\n   -0.388345047f, -0.921514039f,\n   -0.386931006f, -0.922108669f,\n   -0.385516054f, -0.922701128f,\n   -0.384100195f, -0.923291417f,\n   -0.382683432f, -0.923879533f,\n   -0.381265769f, -0.924465474f,\n   -0.379847209f, -0.925049241f,\n   -0.378427755f, -0.925630831f,\n   -0.377007410f, -0.926210242f,\n   -0.375586178f, -0.926787474f,\n   -0.374164063f, -0.927362526f,\n   -0.372741067f, -0.927935395f,\n   -0.371317194f, -0.928506080f,\n   -0.369892447f, -0.929074581f,\n   -0.368466830f, -0.929640896f,\n   -0.367040346f, -0.930205023f,\n   -0.365612998f, -0.930766961f,\n   -0.364184790f, -0.931326709f,\n   -0.362755724f, -0.931884266f,\n   -0.361325806f, -0.932439629f,\n   -0.359895037f, -0.932992799f,\n   -0.358463421f, -0.933543773f,\n   -0.357030961f, -0.934092550f,\n   -0.355597662f, -0.934639130f,\n   -0.354163525f, -0.935183510f,\n   -0.352728556f, -0.935725689f,\n   -0.351292756f, -0.936265667f,\n   -0.349856130f, -0.936803442f,\n   -0.348418680f, -0.937339012f,\n   -0.346980411f, -0.937872376f,\n   -0.345541325f, -0.938403534f,\n   -0.344101426f, -0.938932484f,\n   -0.342660717f, -0.939459224f,\n   -0.341219202f, -0.939983753f,\n   -0.339776884f, -0.940506071f,\n   -0.338333767f, -0.941026175f,\n   -0.336889853f, -0.941544065f,\n   -0.335445147f, -0.942059740f,\n   -0.333999651f, -0.942573198f,\n   -0.332553370f, -0.943084437f,\n   -0.331106306f, -0.943593458f,\n   -0.329658463f, -0.944100258f,\n   -0.328209844f, -0.944604837f,\n   -0.326760452f, -0.945107193f,\n   -0.325310292f, -0.945607325f,\n   -0.323859367f, -0.946105232f,\n   -0.322407679f, -0.946600913f,\n   -0.320955232f, -0.947094366f,\n   -0.319502031f, -0.947585591f,\n   -0.318048077f, -0.948074586f,\n   -0.316593376f, -0.948561350f,\n   -0.315137929f, -0.949045882f,\n   -0.313681740f, -0.949528181f,\n   -0.312224814f, -0.950008245f,\n   -0.310767153f, -0.950486074f,\n   -0.309308760f, -0.950961666f,\n   -0.307849640f, -0.951435021f,\n   -0.306389795f, -0.951906137f,\n   -0.304929230f, -0.952375013f,\n   -0.303467947f, -0.952841648f,\n   -0.302005949f, -0.953306040f,\n   -0.300543241f, -0.953768190f,\n   -0.299079826f, -0.954228095f,\n   -0.297615707f, -0.954685755f,\n   -0.296150888f, -0.955141168f,\n   -0.294685372f, -0.955594334f,\n   -0.293219163f, -0.956045251f,\n   -0.291752263f, -0.956493919f,\n   -0.290284677f, -0.956940336f,\n   -0.288816408f, -0.957384501f,\n   -0.287347460f, -0.957826413f,\n   -0.285877835f, -0.958266071f,\n   -0.284407537f, -0.958703475f,\n   -0.282936570f, -0.959138622f,\n   -0.281464938f, -0.959571513f,\n   -0.279992643f, -0.960002146f,\n   -0.278519689f, -0.960430519f,\n   -0.277046080f, -0.960856633f,\n   -0.275571819f, -0.961280486f,\n   -0.274096910f, -0.961702077f,\n   -0.272621355f, -0.962121404f,\n   -0.271145160f, -0.962538468f,\n   -0.269668326f, -0.962953267f,\n   -0.268190857f, -0.963365800f,\n   -0.266712757f, -0.963776066f,\n   -0.265234030f, -0.964184064f,\n   -0.263754679f, -0.964589793f,\n   -0.262274707f, -0.964993253f,\n   -0.260794118f, -0.965394442f,\n   -0.259312915f, -0.965793359f,\n   -0.257831102f, -0.966190003f,\n   -0.256348682f, -0.966584374f,\n   -0.254865660f, -0.966976471f,\n   -0.253382037f, -0.967366292f,\n   -0.251897818f, -0.967753837f,\n   -0.250413007f, -0.968139105f,\n   -0.248927606f, -0.968522094f,\n   -0.247441619f, -0.968902805f,\n   -0.245955050f, -0.969281235f,\n   -0.244467903f, -0.969657385f,\n   -0.242980180f, -0.970031253f,\n   -0.241491885f, -0.970402839f,\n   -0.240003022f, -0.970772141f,\n   -0.238513595f, -0.971139158f,\n   -0.237023606f, -0.971503891f,\n   -0.235533059f, -0.971866337f,\n   -0.234041959f, -0.972226497f,\n   -0.232550307f, -0.972584369f,\n   -0.231058108f, -0.972939952f,\n   -0.229565366f, -0.973293246f,\n   -0.228072083f, -0.973644250f,\n   -0.226578264f, -0.973992962f,\n   -0.225083911f, -0.974339383f,\n   -0.223589029f, -0.974683511f,\n   -0.222093621f, -0.975025345f,\n   -0.220597690f, -0.975364885f,\n   -0.219101240f, -0.975702130f,\n   -0.217604275f, -0.976037079f,\n   -0.216106797f, -0.976369731f,\n   -0.214608811f, -0.976700086f,\n   -0.213110320f, -0.977028143f,\n   -0.211611327f, -0.977353900f,\n   -0.210111837f, -0.977677358f,\n   -0.208611852f, -0.977998515f,\n   -0.207111376f, -0.978317371f,\n   -0.205610413f, -0.978633924f,\n   -0.204108966f, -0.978948175f,\n   -0.202607039f, -0.979260123f,\n   -0.201104635f, -0.979569766f,\n   -0.199601758f, -0.979877104f,\n   -0.198098411f, -0.980182136f,\n   -0.196594598f, -0.980484862f,\n   -0.195090322f, -0.980785280f,\n   -0.193585587f, -0.981083391f,\n   -0.192080397f, -0.981379193f,\n   -0.190574755f, -0.981672686f,\n   -0.189068664f, -0.981963869f,\n   -0.187562129f, -0.982252741f,\n   -0.186055152f, -0.982539302f,\n   -0.184547737f, -0.982823551f,\n   -0.183039888f, -0.983105487f,\n   -0.181531608f, -0.983385110f,\n   -0.180022901f, -0.983662419f,\n   -0.178513771f, -0.983937413f,\n   -0.177004220f, -0.984210092f,\n   -0.175494253f, -0.984480455f,\n   -0.173983873f, -0.984748502f,\n   -0.172473084f, -0.985014231f,\n   -0.170961889f, -0.985277642f,\n   -0.169450291f, -0.985538735f,\n   -0.167938295f, -0.985797509f,\n   -0.166425904f, -0.986053963f,\n   -0.164913120f, -0.986308097f,\n   -0.163399949f, -0.986559910f,\n   -0.161886394f, -0.986809402f,\n   -0.160372457f, -0.987056571f,\n   -0.158858143f, -0.987301418f,\n   -0.157343456f, -0.987543942f,\n   -0.155828398f, -0.987784142f,\n   -0.154312973f, -0.988022017f,\n   -0.152797185f, -0.988257568f,\n   -0.151281038f, -0.988490793f,\n   -0.149764535f, -0.988721692f,\n   -0.148247679f, -0.988950265f,\n   -0.146730474f, -0.989176510f,\n   -0.145212925f, -0.989400428f,\n   -0.143695033f, -0.989622017f,\n   -0.142176804f, -0.989841278f,\n   -0.140658239f, -0.990058210f,\n   -0.139139344f, -0.990272812f,\n   -0.137620122f, -0.990485084f,\n   -0.136100575f, -0.990695025f,\n   -0.134580709f, -0.990902635f,\n   -0.133060525f, -0.991107914f,\n   -0.131540029f, -0.991310860f,\n   -0.130019223f, -0.991511473f,\n   -0.128498111f, -0.991709754f,\n   -0.126976696f, -0.991905700f,\n   -0.125454983f, -0.992099313f,\n   -0.123932975f, -0.992290591f,\n   -0.122410675f, -0.992479535f,\n   -0.120888087f, -0.992666142f,\n   -0.119365215f, -0.992850414f,\n   -0.117842062f, -0.993032350f,\n   -0.116318631f, -0.993211949f,\n   -0.114794927f, -0.993389211f,\n   -0.113270952f, -0.993564136f,\n   -0.111746711f, -0.993736722f,\n   -0.110222207f, -0.993906970f,\n   -0.108697444f, -0.994074879f,\n   -0.107172425f, -0.994240449f,\n   -0.105647154f, -0.994403680f,\n   -0.104121634f, -0.994564571f,\n   -0.102595869f, -0.994723121f,\n   -0.101069863f, -0.994879331f,\n   -0.099543619f, -0.995033199f,\n   -0.098017140f, -0.995184727f,\n   -0.096490431f, -0.995333912f,\n   -0.094963495f, -0.995480755f,\n   -0.093436336f, -0.995625256f,\n   -0.091908956f, -0.995767414f,\n   -0.090381361f, -0.995907229f,\n   -0.088853553f, -0.996044701f,\n   -0.087325535f, -0.996179829f,\n   -0.085797312f, -0.996312612f,\n   -0.084268888f, -0.996443051f,\n   -0.082740265f, -0.996571146f,\n   -0.081211447f, -0.996696895f,\n   -0.079682438f, -0.996820299f,\n   -0.078153242f, -0.996941358f,\n   -0.076623861f, -0.997060070f,\n   -0.075094301f, -0.997176437f,\n   -0.073564564f, -0.997290457f,\n   -0.072034653f, -0.997402130f,\n   -0.070504573f, -0.997511456f,\n   -0.068974328f, -0.997618435f,\n   -0.067443920f, -0.997723067f,\n   -0.065913353f, -0.997825350f,\n   -0.064382631f, -0.997925286f,\n   -0.062851758f, -0.998022874f,\n   -0.061320736f, -0.998118113f,\n   -0.059789571f, -0.998211003f,\n   -0.058258265f, -0.998301545f,\n   -0.056726821f, -0.998389737f,\n   -0.055195244f, -0.998475581f,\n   -0.053663538f, -0.998559074f,\n   -0.052131705f, -0.998640218f,\n   -0.050599749f, -0.998719012f,\n   -0.049067674f, -0.998795456f,\n   -0.047535484f, -0.998869550f,\n   -0.046003182f, -0.998941293f,\n   -0.044470772f, -0.999010686f,\n   -0.042938257f, -0.999077728f,\n   -0.041405641f, -0.999142419f,\n   -0.039872928f, -0.999204759f,\n   -0.038340120f, -0.999264747f,\n   -0.036807223f, -0.999322385f,\n   -0.035274239f, -0.999377670f,\n   -0.033741172f, -0.999430605f,\n   -0.032208025f, -0.999481187f,\n   -0.030674803f, -0.999529418f,\n   -0.029141509f, -0.999575296f,\n   -0.027608146f, -0.999618822f,\n   -0.026074718f, -0.999659997f,\n   -0.024541229f, -0.999698819f,\n   -0.023007681f, -0.999735288f,\n   -0.021474080f, -0.999769405f,\n   -0.019940429f, -0.999801170f,\n   -0.018406730f, -0.999830582f,\n   -0.016872988f, -0.999857641f,\n   -0.015339206f, -0.999882347f,\n   -0.013805389f, -0.999904701f,\n   -0.012271538f, -0.999924702f,\n   -0.010737659f, -0.999942350f,\n   -0.009203755f, -0.999957645f,\n   -0.007669829f, -0.999970586f,\n   -0.006135885f, -0.999981175f,\n   -0.004601926f, -0.999989411f,\n   -0.003067957f, -0.999995294f,\n   -0.001533980f, -0.999998823f,\n   -0.000000000f, -1.000000000f,\n    0.001533980f, -0.999998823f,\n    0.003067957f, -0.999995294f,\n    0.004601926f, -0.999989411f,\n    0.006135885f, -0.999981175f,\n    0.007669829f, -0.999970586f,\n    0.009203755f, -0.999957645f,\n    0.010737659f, -0.999942350f,\n    0.012271538f, -0.999924702f,\n    0.013805389f, -0.999904701f,\n    0.015339206f, -0.999882347f,\n    0.016872988f, -0.999857641f,\n    0.018406730f, -0.999830582f,\n    0.019940429f, -0.999801170f,\n    0.021474080f, -0.999769405f,\n    0.023007681f, -0.999735288f,\n    0.024541229f, -0.999698819f,\n    0.026074718f, -0.999659997f,\n    0.027608146f, -0.999618822f,\n    0.029141509f, -0.999575296f,\n    0.030674803f, -0.999529418f,\n    0.032208025f, -0.999481187f,\n    0.033741172f, -0.999430605f,\n    0.035274239f, -0.999377670f,\n    0.036807223f, -0.999322385f,\n    0.038340120f, -0.999264747f,\n    0.039872928f, -0.999204759f,\n    0.041405641f, -0.999142419f,\n    0.042938257f, -0.999077728f,\n    0.044470772f, -0.999010686f,\n    0.046003182f, -0.998941293f,\n    0.047535484f, -0.998869550f,\n    0.049067674f, -0.998795456f,\n    0.050599749f, -0.998719012f,\n    0.052131705f, -0.998640218f,\n    0.053663538f, -0.998559074f,\n    0.055195244f, -0.998475581f,\n    0.056726821f, -0.998389737f,\n    0.058258265f, -0.998301545f,\n    0.059789571f, -0.998211003f,\n    0.061320736f, -0.998118113f,\n    0.062851758f, -0.998022874f,\n    0.064382631f, -0.997925286f,\n    0.065913353f, -0.997825350f,\n    0.067443920f, -0.997723067f,\n    0.068974328f, -0.997618435f,\n    0.070504573f, -0.997511456f,\n    0.072034653f, -0.997402130f,\n    0.073564564f, -0.997290457f,\n    0.075094301f, -0.997176437f,\n    0.076623861f, -0.997060070f,\n    0.078153242f, -0.996941358f,\n    0.079682438f, -0.996820299f,\n    0.081211447f, -0.996696895f,\n    0.082740265f, -0.996571146f,\n    0.084268888f, -0.996443051f,\n    0.085797312f, -0.996312612f,\n    0.087325535f, -0.996179829f,\n    0.088853553f, -0.996044701f,\n    0.090381361f, -0.995907229f,\n    0.091908956f, -0.995767414f,\n    0.093436336f, -0.995625256f,\n    0.094963495f, -0.995480755f,\n    0.096490431f, -0.995333912f,\n    0.098017140f, -0.995184727f,\n    0.099543619f, -0.995033199f,\n    0.101069863f, -0.994879331f,\n    0.102595869f, -0.994723121f,\n    0.104121634f, -0.994564571f,\n    0.105647154f, -0.994403680f,\n    0.107172425f, -0.994240449f,\n    0.108697444f, -0.994074879f,\n    0.110222207f, -0.993906970f,\n    0.111746711f, -0.993736722f,\n    0.113270952f, -0.993564136f,\n    0.114794927f, -0.993389211f,\n    0.116318631f, -0.993211949f,\n    0.117842062f, -0.993032350f,\n    0.119365215f, -0.992850414f,\n    0.120888087f, -0.992666142f,\n    0.122410675f, -0.992479535f,\n    0.123932975f, -0.992290591f,\n    0.125454983f, -0.992099313f,\n    0.126976696f, -0.991905700f,\n    0.128498111f, -0.991709754f,\n    0.130019223f, -0.991511473f,\n    0.131540029f, -0.991310860f,\n    0.133060525f, -0.991107914f,\n    0.134580709f, -0.990902635f,\n    0.136100575f, -0.990695025f,\n    0.137620122f, -0.990485084f,\n    0.139139344f, -0.990272812f,\n    0.140658239f, -0.990058210f,\n    0.142176804f, -0.989841278f,\n    0.143695033f, -0.989622017f,\n    0.145212925f, -0.989400428f,\n    0.146730474f, -0.989176510f,\n    0.148247679f, -0.988950265f,\n    0.149764535f, -0.988721692f,\n    0.151281038f, -0.988490793f,\n    0.152797185f, -0.988257568f,\n    0.154312973f, -0.988022017f,\n    0.155828398f, -0.987784142f,\n    0.157343456f, -0.987543942f,\n    0.158858143f, -0.987301418f,\n    0.160372457f, -0.987056571f,\n    0.161886394f, -0.986809402f,\n    0.163399949f, -0.986559910f,\n    0.164913120f, -0.986308097f,\n    0.166425904f, -0.986053963f,\n    0.167938295f, -0.985797509f,\n    0.169450291f, -0.985538735f,\n    0.170961889f, -0.985277642f,\n    0.172473084f, -0.985014231f,\n    0.173983873f, -0.984748502f,\n    0.175494253f, -0.984480455f,\n    0.177004220f, -0.984210092f,\n    0.178513771f, -0.983937413f,\n    0.180022901f, -0.983662419f,\n    0.181531608f, -0.983385110f,\n    0.183039888f, -0.983105487f,\n    0.184547737f, -0.982823551f,\n    0.186055152f, -0.982539302f,\n    0.187562129f, -0.982252741f,\n    0.189068664f, -0.981963869f,\n    0.190574755f, -0.981672686f,\n    0.192080397f, -0.981379193f,\n    0.193585587f, -0.981083391f,\n    0.195090322f, -0.980785280f,\n    0.196594598f, -0.980484862f,\n    0.198098411f, -0.980182136f,\n    0.199601758f, -0.979877104f,\n    0.201104635f, -0.979569766f,\n    0.202607039f, -0.979260123f,\n    0.204108966f, -0.978948175f,\n    0.205610413f, -0.978633924f,\n    0.207111376f, -0.978317371f,\n    0.208611852f, -0.977998515f,\n    0.210111837f, -0.977677358f,\n    0.211611327f, -0.977353900f,\n    0.213110320f, -0.977028143f,\n    0.214608811f, -0.976700086f,\n    0.216106797f, -0.976369731f,\n    0.217604275f, -0.976037079f,\n    0.219101240f, -0.975702130f,\n    0.220597690f, -0.975364885f,\n    0.222093621f, -0.975025345f,\n    0.223589029f, -0.974683511f,\n    0.225083911f, -0.974339383f,\n    0.226578264f, -0.973992962f,\n    0.228072083f, -0.973644250f,\n    0.229565366f, -0.973293246f,\n    0.231058108f, -0.972939952f,\n    0.232550307f, -0.972584369f,\n    0.234041959f, -0.972226497f,\n    0.235533059f, -0.971866337f,\n    0.237023606f, -0.971503891f,\n    0.238513595f, -0.971139158f,\n    0.240003022f, -0.970772141f,\n    0.241491885f, -0.970402839f,\n    0.242980180f, -0.970031253f,\n    0.244467903f, -0.969657385f,\n    0.245955050f, -0.969281235f,\n    0.247441619f, -0.968902805f,\n    0.248927606f, -0.968522094f,\n    0.250413007f, -0.968139105f,\n    0.251897818f, -0.967753837f,\n    0.253382037f, -0.967366292f,\n    0.254865660f, -0.966976471f,\n    0.256348682f, -0.966584374f,\n    0.257831102f, -0.966190003f,\n    0.259312915f, -0.965793359f,\n    0.260794118f, -0.965394442f,\n    0.262274707f, -0.964993253f,\n    0.263754679f, -0.964589793f,\n    0.265234030f, -0.964184064f,\n    0.266712757f, -0.963776066f,\n    0.268190857f, -0.963365800f,\n    0.269668326f, -0.962953267f,\n    0.271145160f, -0.962538468f,\n    0.272621355f, -0.962121404f,\n    0.274096910f, -0.961702077f,\n    0.275571819f, -0.961280486f,\n    0.277046080f, -0.960856633f,\n    0.278519689f, -0.960430519f,\n    0.279992643f, -0.960002146f,\n    0.281464938f, -0.959571513f,\n    0.282936570f, -0.959138622f,\n    0.284407537f, -0.958703475f,\n    0.285877835f, -0.958266071f,\n    0.287347460f, -0.957826413f,\n    0.288816408f, -0.957384501f,\n    0.290284677f, -0.956940336f,\n    0.291752263f, -0.956493919f,\n    0.293219163f, -0.956045251f,\n    0.294685372f, -0.955594334f,\n    0.296150888f, -0.955141168f,\n    0.297615707f, -0.954685755f,\n    0.299079826f, -0.954228095f,\n    0.300543241f, -0.953768190f,\n    0.302005949f, -0.953306040f,\n    0.303467947f, -0.952841648f,\n    0.304929230f, -0.952375013f,\n    0.306389795f, -0.951906137f,\n    0.307849640f, -0.951435021f,\n    0.309308760f, -0.950961666f,\n    0.310767153f, -0.950486074f,\n    0.312224814f, -0.950008245f,\n    0.313681740f, -0.949528181f,\n    0.315137929f, -0.949045882f,\n    0.316593376f, -0.948561350f,\n    0.318048077f, -0.948074586f,\n    0.319502031f, -0.947585591f,\n    0.320955232f, -0.947094366f,\n    0.322407679f, -0.946600913f,\n    0.323859367f, -0.946105232f,\n    0.325310292f, -0.945607325f,\n    0.326760452f, -0.945107193f,\n    0.328209844f, -0.944604837f,\n    0.329658463f, -0.944100258f,\n    0.331106306f, -0.943593458f,\n    0.332553370f, -0.943084437f,\n    0.333999651f, -0.942573198f,\n    0.335445147f, -0.942059740f,\n    0.336889853f, -0.941544065f,\n    0.338333767f, -0.941026175f,\n    0.339776884f, -0.940506071f,\n    0.341219202f, -0.939983753f,\n    0.342660717f, -0.939459224f,\n    0.344101426f, -0.938932484f,\n    0.345541325f, -0.938403534f,\n    0.346980411f, -0.937872376f,\n    0.348418680f, -0.937339012f,\n    0.349856130f, -0.936803442f,\n    0.351292756f, -0.936265667f,\n    0.352728556f, -0.935725689f,\n    0.354163525f, -0.935183510f,\n    0.355597662f, -0.934639130f,\n    0.357030961f, -0.934092550f,\n    0.358463421f, -0.933543773f,\n    0.359895037f, -0.932992799f,\n    0.361325806f, -0.932439629f,\n    0.362755724f, -0.931884266f,\n    0.364184790f, -0.931326709f,\n    0.365612998f, -0.930766961f,\n    0.367040346f, -0.930205023f,\n    0.368466830f, -0.929640896f,\n    0.369892447f, -0.929074581f,\n    0.371317194f, -0.928506080f,\n    0.372741067f, -0.927935395f,\n    0.374164063f, -0.927362526f,\n    0.375586178f, -0.926787474f,\n    0.377007410f, -0.926210242f,\n    0.378427755f, -0.925630831f,\n    0.379847209f, -0.925049241f,\n    0.381265769f, -0.924465474f,\n    0.382683432f, -0.923879533f,\n    0.384100195f, -0.923291417f,\n    0.385516054f, -0.922701128f,\n    0.386931006f, -0.922108669f,\n    0.388345047f, -0.921514039f,\n    0.389758174f, -0.920917242f,\n    0.391170384f, -0.920318277f,\n    0.392581674f, -0.919717146f,\n    0.393992040f, -0.919113852f,\n    0.395401479f, -0.918508394f,\n    0.396809987f, -0.917900776f,\n    0.398217562f, -0.917290997f,\n    0.399624200f, -0.916679060f,\n    0.401029897f, -0.916064966f,\n    0.402434651f, -0.915448716f,\n    0.403838458f, -0.914830312f,\n    0.405241314f, -0.914209756f,\n    0.406643217f, -0.913587048f,\n    0.408044163f, -0.912962190f,\n    0.409444149f, -0.912335185f,\n    0.410843171f, -0.911706032f,\n    0.412241227f, -0.911074734f,\n    0.413638312f, -0.910441292f,\n    0.415034424f, -0.909805708f,\n    0.416429560f, -0.909167983f,\n    0.417823716f, -0.908528119f,\n    0.419216888f, -0.907886116f,\n    0.420609074f, -0.907241978f,\n    0.422000271f, -0.906595705f,\n    0.423390474f, -0.905947298f,\n    0.424779681f, -0.905296759f,\n    0.426167889f, -0.904644091f,\n    0.427555093f, -0.903989293f,\n    0.428941292f, -0.903332368f,\n    0.430326481f, -0.902673318f,\n    0.431710658f, -0.902012144f,\n    0.433093819f, -0.901348847f,\n    0.434475961f, -0.900683429f,\n    0.435857080f, -0.900015892f,\n    0.437237174f, -0.899346237f,\n    0.438616239f, -0.898674466f,\n    0.439994271f, -0.898000580f,\n    0.441371269f, -0.897324581f,\n    0.442747228f, -0.896646470f,\n    0.444122145f, -0.895966250f,\n    0.445496017f, -0.895283921f,\n    0.446868840f, -0.894599486f,\n    0.448240612f, -0.893912945f,\n    0.449611330f, -0.893224301f,\n    0.450980989f, -0.892533555f,\n    0.452349587f, -0.891840709f,\n    0.453717121f, -0.891145765f,\n    0.455083587f, -0.890448723f,\n    0.456448982f, -0.889749586f,\n    0.457813304f, -0.889048356f,\n    0.459176548f, -0.888345033f,\n    0.460538711f, -0.887639620f,\n    0.461899791f, -0.886932119f,\n    0.463259784f, -0.886222530f,\n    0.464618686f, -0.885510856f,\n    0.465976496f, -0.884797098f,\n    0.467333209f, -0.884081259f,\n    0.468688822f, -0.883363339f,\n    0.470043332f, -0.882643340f,\n    0.471396737f, -0.881921264f,\n    0.472749032f, -0.881197113f,\n    0.474100215f, -0.880470889f,\n    0.475450282f, -0.879742593f,\n    0.476799230f, -0.879012226f,\n    0.478147056f, -0.878279792f,\n    0.479493758f, -0.877545290f,\n    0.480839331f, -0.876808724f,\n    0.482183772f, -0.876070094f,\n    0.483527079f, -0.875329403f,\n    0.484869248f, -0.874586652f,\n    0.486210276f, -0.873841843f,\n    0.487550160f, -0.873094978f,\n    0.488888897f, -0.872346059f,\n    0.490226483f, -0.871595087f,\n    0.491562916f, -0.870842063f,\n    0.492898192f, -0.870086991f,\n    0.494232309f, -0.869329871f,\n    0.495565262f, -0.868570706f,\n    0.496897049f, -0.867809497f,\n    0.498227667f, -0.867046246f,\n    0.499557113f, -0.866280954f,\n    0.500885383f, -0.865513624f,\n    0.502212474f, -0.864744258f,\n    0.503538384f, -0.863972856f,\n    0.504863109f, -0.863199422f,\n    0.506186645f, -0.862423956f,\n    0.507508991f, -0.861646461f,\n    0.508830143f, -0.860866939f,\n    0.510150097f, -0.860085390f,\n    0.511468850f, -0.859301818f,\n    0.512786401f, -0.858516224f,\n    0.514102744f, -0.857728610f,\n    0.515417878f, -0.856938977f,\n    0.516731799f, -0.856147328f,\n    0.518044504f, -0.855353665f,\n    0.519355990f, -0.854557988f,\n    0.520666254f, -0.853760301f,\n    0.521975293f, -0.852960605f,\n    0.523283103f, -0.852158902f,\n    0.524589683f, -0.851355193f,\n    0.525895027f, -0.850549481f,\n    0.527199135f, -0.849741768f,\n    0.528502002f, -0.848932055f,\n    0.529803625f, -0.848120345f,\n    0.531104001f, -0.847306639f,\n    0.532403128f, -0.846490939f,\n    0.533701002f, -0.845673247f,\n    0.534997620f, -0.844853565f,\n    0.536292979f, -0.844031895f,\n    0.537587076f, -0.843208240f,\n    0.538879909f, -0.842382600f,\n    0.540171473f, -0.841554977f,\n    0.541461766f, -0.840725375f,\n    0.542750785f, -0.839893794f,\n    0.544038527f, -0.839060237f,\n    0.545324988f, -0.838224706f,\n    0.546610167f, -0.837387202f,\n    0.547894059f, -0.836547727f,\n    0.549176662f, -0.835706284f,\n    0.550457973f, -0.834862875f,\n    0.551737988f, -0.834017501f,\n    0.553016706f, -0.833170165f,\n    0.554294121f, -0.832320868f,\n    0.555570233f, -0.831469612f,\n    0.556845037f, -0.830616400f,\n    0.558118531f, -0.829761234f,\n    0.559390712f, -0.828904115f,\n    0.560661576f, -0.828045045f,\n    0.561931121f, -0.827184027f,\n    0.563199344f, -0.826321063f,\n    0.564466242f, -0.825456154f,\n    0.565731811f, -0.824589303f,\n    0.566996049f, -0.823720511f,\n    0.568258953f, -0.822849781f,\n    0.569520519f, -0.821977115f,\n    0.570780746f, -0.821102515f,\n    0.572039629f, -0.820225983f,\n    0.573297167f, -0.819347520f,\n    0.574553355f, -0.818467130f,\n    0.575808191f, -0.817584813f,\n    0.577061673f, -0.816700573f,\n    0.578313796f, -0.815814411f,\n    0.579564559f, -0.814926329f,\n    0.580813958f, -0.814036330f,\n    0.582061990f, -0.813144415f,\n    0.583308653f, -0.812250587f,\n    0.584553943f, -0.811354847f,\n    0.585797857f, -0.810457198f,\n    0.587040394f, -0.809557642f,\n    0.588281548f, -0.808656182f,\n    0.589521319f, -0.807752818f,\n    0.590759702f, -0.806847554f,\n    0.591996695f, -0.805940391f,\n    0.593232295f, -0.805031331f,\n    0.594466499f, -0.804120377f,\n    0.595699304f, -0.803207531f,\n    0.596930708f, -0.802292796f,\n    0.598160707f, -0.801376172f,\n    0.599389298f, -0.800457662f,\n    0.600616479f, -0.799537269f,\n    0.601842247f, -0.798614995f,\n    0.603066599f, -0.797690841f,\n    0.604289531f, -0.796764810f,\n    0.605511041f, -0.795836905f,\n    0.606731127f, -0.794907126f,\n    0.607949785f, -0.793975478f,\n    0.609167012f, -0.793041960f,\n    0.610382806f, -0.792106577f,\n    0.611597164f, -0.791169330f,\n    0.612810082f, -0.790230221f,\n    0.614021559f, -0.789289253f,\n    0.615231591f, -0.788346428f,\n    0.616440175f, -0.787401747f,\n    0.617647308f, -0.786455214f,\n    0.618852988f, -0.785506830f,\n    0.620057212f, -0.784556597f,\n    0.621259977f, -0.783604519f,\n    0.622461279f, -0.782650596f,\n    0.623661118f, -0.781694832f,\n    0.624859488f, -0.780737229f,\n    0.626056388f, -0.779777788f,\n    0.627251815f, -0.778816512f,\n    0.628445767f, -0.777853404f,\n    0.629638239f, -0.776888466f,\n    0.630829230f, -0.775921699f,\n    0.632018736f, -0.774953107f,\n    0.633206755f, -0.773982691f,\n    0.634393284f, -0.773010453f,\n    0.635578320f, -0.772036397f,\n    0.636761861f, -0.771060524f,\n    0.637943904f, -0.770082837f,\n    0.639124445f, -0.769103338f,\n    0.640303482f, -0.768122029f,\n    0.641481013f, -0.767138912f,\n    0.642657034f, -0.766153990f,\n    0.643831543f, -0.765167266f,\n    0.645004537f, -0.764178741f,\n    0.646176013f, -0.763188417f,\n    0.647345969f, -0.762196298f,\n    0.648514401f, -0.761202385f,\n    0.649681307f, -0.760206682f,\n    0.650846685f, -0.759209189f,\n    0.652010531f, -0.758209910f,\n    0.653172843f, -0.757208847f,\n    0.654333618f, -0.756206001f,\n    0.655492853f, -0.755201377f,\n    0.656650546f, -0.754194975f,\n    0.657806693f, -0.753186799f,\n    0.658961293f, -0.752176850f,\n    0.660114342f, -0.751165132f,\n    0.661265838f, -0.750151646f,\n    0.662415778f, -0.749136395f,\n    0.663564159f, -0.748119380f,\n    0.664710978f, -0.747100606f,\n    0.665856234f, -0.746080074f,\n    0.666999922f, -0.745057785f,\n    0.668142041f, -0.744033744f,\n    0.669282588f, -0.743007952f,\n    0.670421560f, -0.741980412f,\n    0.671558955f, -0.740951125f,\n    0.672694769f, -0.739920095f,\n    0.673829000f, -0.738887324f,\n    0.674961646f, -0.737852815f,\n    0.676092704f, -0.736816569f,\n    0.677222170f, -0.735778589f,\n    0.678350043f, -0.734738878f,\n    0.679476320f, -0.733697438f,\n    0.680600998f, -0.732654272f,\n    0.681724074f, -0.731609381f,\n    0.682845546f, -0.730562769f,\n    0.683965412f, -0.729514438f,\n    0.685083668f, -0.728464390f,\n    0.686200312f, -0.727412629f,\n    0.687315341f, -0.726359155f,\n    0.688428753f, -0.725303972f,\n    0.689540545f, -0.724247083f,\n    0.690650714f, -0.723188489f,\n    0.691759258f, -0.722128194f,\n    0.692866175f, -0.721066199f,\n    0.693971461f, -0.720002508f,\n    0.695075114f, -0.718937122f,\n    0.696177131f, -0.717870045f,\n    0.697277511f, -0.716801279f,\n    0.698376249f, -0.715730825f,\n    0.699473345f, -0.714658688f,\n    0.700568794f, -0.713584869f,\n    0.701662595f, -0.712509371f,\n    0.702754744f, -0.711432196f,\n    0.703845241f, -0.710353347f,\n    0.704934080f, -0.709272826f,\n    0.706021261f, -0.708190637f,\n    0.707106781f, -0.707106781f,\n    0.708190637f, -0.706021261f,\n    0.709272826f, -0.704934080f,\n    0.710353347f, -0.703845241f,\n    0.711432196f, -0.702754744f,\n    0.712509371f, -0.701662595f,\n    0.713584869f, -0.700568794f,\n    0.714658688f, -0.699473345f,\n    0.715730825f, -0.698376249f,\n    0.716801279f, -0.697277511f,\n    0.717870045f, -0.696177131f,\n    0.718937122f, -0.695075114f,\n    0.720002508f, -0.693971461f,\n    0.721066199f, -0.692866175f,\n    0.722128194f, -0.691759258f,\n    0.723188489f, -0.690650714f,\n    0.724247083f, -0.689540545f,\n    0.725303972f, -0.688428753f,\n    0.726359155f, -0.687315341f,\n    0.727412629f, -0.686200312f,\n    0.728464390f, -0.685083668f,\n    0.729514438f, -0.683965412f,\n    0.730562769f, -0.682845546f,\n    0.731609381f, -0.681724074f,\n    0.732654272f, -0.680600998f,\n    0.733697438f, -0.679476320f,\n    0.734738878f, -0.678350043f,\n    0.735778589f, -0.677222170f,\n    0.736816569f, -0.676092704f,\n    0.737852815f, -0.674961646f,\n    0.738887324f, -0.673829000f,\n    0.739920095f, -0.672694769f,\n    0.740951125f, -0.671558955f,\n    0.741980412f, -0.670421560f,\n    0.743007952f, -0.669282588f,\n    0.744033744f, -0.668142041f,\n    0.745057785f, -0.666999922f,\n    0.746080074f, -0.665856234f,\n    0.747100606f, -0.664710978f,\n    0.748119380f, -0.663564159f,\n    0.749136395f, -0.662415778f,\n    0.750151646f, -0.661265838f,\n    0.751165132f, -0.660114342f,\n    0.752176850f, -0.658961293f,\n    0.753186799f, -0.657806693f,\n    0.754194975f, -0.656650546f,\n    0.755201377f, -0.655492853f,\n    0.756206001f, -0.654333618f,\n    0.757208847f, -0.653172843f,\n    0.758209910f, -0.652010531f,\n    0.759209189f, -0.650846685f,\n    0.760206682f, -0.649681307f,\n    0.761202385f, -0.648514401f,\n    0.762196298f, -0.647345969f,\n    0.763188417f, -0.646176013f,\n    0.764178741f, -0.645004537f,\n    0.765167266f, -0.643831543f,\n    0.766153990f, -0.642657034f,\n    0.767138912f, -0.641481013f,\n    0.768122029f, -0.640303482f,\n    0.769103338f, -0.639124445f,\n    0.770082837f, -0.637943904f,\n    0.771060524f, -0.636761861f,\n    0.772036397f, -0.635578320f,\n    0.773010453f, -0.634393284f,\n    0.773982691f, -0.633206755f,\n    0.774953107f, -0.632018736f,\n    0.775921699f, -0.630829230f,\n    0.776888466f, -0.629638239f,\n    0.777853404f, -0.628445767f,\n    0.778816512f, -0.627251815f,\n    0.779777788f, -0.626056388f,\n    0.780737229f, -0.624859488f,\n    0.781694832f, -0.623661118f,\n    0.782650596f, -0.622461279f,\n    0.783604519f, -0.621259977f,\n    0.784556597f, -0.620057212f,\n    0.785506830f, -0.618852988f,\n    0.786455214f, -0.617647308f,\n    0.787401747f, -0.616440175f,\n    0.788346428f, -0.615231591f,\n    0.789289253f, -0.614021559f,\n    0.790230221f, -0.612810082f,\n    0.791169330f, -0.611597164f,\n    0.792106577f, -0.610382806f,\n    0.793041960f, -0.609167012f,\n    0.793975478f, -0.607949785f,\n    0.794907126f, -0.606731127f,\n    0.795836905f, -0.605511041f,\n    0.796764810f, -0.604289531f,\n    0.797690841f, -0.603066599f,\n    0.798614995f, -0.601842247f,\n    0.799537269f, -0.600616479f,\n    0.800457662f, -0.599389298f,\n    0.801376172f, -0.598160707f,\n    0.802292796f, -0.596930708f,\n    0.803207531f, -0.595699304f,\n    0.804120377f, -0.594466499f,\n    0.805031331f, -0.593232295f,\n    0.805940391f, -0.591996695f,\n    0.806847554f, -0.590759702f,\n    0.807752818f, -0.589521319f,\n    0.808656182f, -0.588281548f,\n    0.809557642f, -0.587040394f,\n    0.810457198f, -0.585797857f,\n    0.811354847f, -0.584553943f,\n    0.812250587f, -0.583308653f,\n    0.813144415f, -0.582061990f,\n    0.814036330f, -0.580813958f,\n    0.814926329f, -0.579564559f,\n    0.815814411f, -0.578313796f,\n    0.816700573f, -0.577061673f,\n    0.817584813f, -0.575808191f,\n    0.818467130f, -0.574553355f,\n    0.819347520f, -0.573297167f,\n    0.820225983f, -0.572039629f,\n    0.821102515f, -0.570780746f,\n    0.821977115f, -0.569520519f,\n    0.822849781f, -0.568258953f,\n    0.823720511f, -0.566996049f,\n    0.824589303f, -0.565731811f,\n    0.825456154f, -0.564466242f,\n    0.826321063f, -0.563199344f,\n    0.827184027f, -0.561931121f,\n    0.828045045f, -0.560661576f,\n    0.828904115f, -0.559390712f,\n    0.829761234f, -0.558118531f,\n    0.830616400f, -0.556845037f,\n    0.831469612f, -0.555570233f,\n    0.832320868f, -0.554294121f,\n    0.833170165f, -0.553016706f,\n    0.834017501f, -0.551737988f,\n    0.834862875f, -0.550457973f,\n    0.835706284f, -0.549176662f,\n    0.836547727f, -0.547894059f,\n    0.837387202f, -0.546610167f,\n    0.838224706f, -0.545324988f,\n    0.839060237f, -0.544038527f,\n    0.839893794f, -0.542750785f,\n    0.840725375f, -0.541461766f,\n    0.841554977f, -0.540171473f,\n    0.842382600f, -0.538879909f,\n    0.843208240f, -0.537587076f,\n    0.844031895f, -0.536292979f,\n    0.844853565f, -0.534997620f,\n    0.845673247f, -0.533701002f,\n    0.846490939f, -0.532403128f,\n    0.847306639f, -0.531104001f,\n    0.848120345f, -0.529803625f,\n    0.848932055f, -0.528502002f,\n    0.849741768f, -0.527199135f,\n    0.850549481f, -0.525895027f,\n    0.851355193f, -0.524589683f,\n    0.852158902f, -0.523283103f,\n    0.852960605f, -0.521975293f,\n    0.853760301f, -0.520666254f,\n    0.854557988f, -0.519355990f,\n    0.855353665f, -0.518044504f,\n    0.856147328f, -0.516731799f,\n    0.856938977f, -0.515417878f,\n    0.857728610f, -0.514102744f,\n    0.858516224f, -0.512786401f,\n    0.859301818f, -0.511468850f,\n    0.860085390f, -0.510150097f,\n    0.860866939f, -0.508830143f,\n    0.861646461f, -0.507508991f,\n    0.862423956f, -0.506186645f,\n    0.863199422f, -0.504863109f,\n    0.863972856f, -0.503538384f,\n    0.864744258f, -0.502212474f,\n    0.865513624f, -0.500885383f,\n    0.866280954f, -0.499557113f,\n    0.867046246f, -0.498227667f,\n    0.867809497f, -0.496897049f,\n    0.868570706f, -0.495565262f,\n    0.869329871f, -0.494232309f,\n    0.870086991f, -0.492898192f,\n    0.870842063f, -0.491562916f,\n    0.871595087f, -0.490226483f,\n    0.872346059f, -0.488888897f,\n    0.873094978f, -0.487550160f,\n    0.873841843f, -0.486210276f,\n    0.874586652f, -0.484869248f,\n    0.875329403f, -0.483527079f,\n    0.876070094f, -0.482183772f,\n    0.876808724f, -0.480839331f,\n    0.877545290f, -0.479493758f,\n    0.878279792f, -0.478147056f,\n    0.879012226f, -0.476799230f,\n    0.879742593f, -0.475450282f,\n    0.880470889f, -0.474100215f,\n    0.881197113f, -0.472749032f,\n    0.881921264f, -0.471396737f,\n    0.882643340f, -0.470043332f,\n    0.883363339f, -0.468688822f,\n    0.884081259f, -0.467333209f,\n    0.884797098f, -0.465976496f,\n    0.885510856f, -0.464618686f,\n    0.886222530f, -0.463259784f,\n    0.886932119f, -0.461899791f,\n    0.887639620f, -0.460538711f,\n    0.888345033f, -0.459176548f,\n    0.889048356f, -0.457813304f,\n    0.889749586f, -0.456448982f,\n    0.890448723f, -0.455083587f,\n    0.891145765f, -0.453717121f,\n    0.891840709f, -0.452349587f,\n    0.892533555f, -0.450980989f,\n    0.893224301f, -0.449611330f,\n    0.893912945f, -0.448240612f,\n    0.894599486f, -0.446868840f,\n    0.895283921f, -0.445496017f,\n    0.895966250f, -0.444122145f,\n    0.896646470f, -0.442747228f,\n    0.897324581f, -0.441371269f,\n    0.898000580f, -0.439994271f,\n    0.898674466f, -0.438616239f,\n    0.899346237f, -0.437237174f,\n    0.900015892f, -0.435857080f,\n    0.900683429f, -0.434475961f,\n    0.901348847f, -0.433093819f,\n    0.902012144f, -0.431710658f,\n    0.902673318f, -0.430326481f,\n    0.903332368f, -0.428941292f,\n    0.903989293f, -0.427555093f,\n    0.904644091f, -0.426167889f,\n    0.905296759f, -0.424779681f,\n    0.905947298f, -0.423390474f,\n    0.906595705f, -0.422000271f,\n    0.907241978f, -0.420609074f,\n    0.907886116f, -0.419216888f,\n    0.908528119f, -0.417823716f,\n    0.909167983f, -0.416429560f,\n    0.909805708f, -0.415034424f,\n    0.910441292f, -0.413638312f,\n    0.911074734f, -0.412241227f,\n    0.911706032f, -0.410843171f,\n    0.912335185f, -0.409444149f,\n    0.912962190f, -0.408044163f,\n    0.913587048f, -0.406643217f,\n    0.914209756f, -0.405241314f,\n    0.914830312f, -0.403838458f,\n    0.915448716f, -0.402434651f,\n    0.916064966f, -0.401029897f,\n    0.916679060f, -0.399624200f,\n    0.917290997f, -0.398217562f,\n    0.917900776f, -0.396809987f,\n    0.918508394f, -0.395401479f,\n    0.919113852f, -0.393992040f,\n    0.919717146f, -0.392581674f,\n    0.920318277f, -0.391170384f,\n    0.920917242f, -0.389758174f,\n    0.921514039f, -0.388345047f,\n    0.922108669f, -0.386931006f,\n    0.922701128f, -0.385516054f,\n    0.923291417f, -0.384100195f,\n    0.923879533f, -0.382683432f,\n    0.924465474f, -0.381265769f,\n    0.925049241f, -0.379847209f,\n    0.925630831f, -0.378427755f,\n    0.926210242f, -0.377007410f,\n    0.926787474f, -0.375586178f,\n    0.927362526f, -0.374164063f,\n    0.927935395f, -0.372741067f,\n    0.928506080f, -0.371317194f,\n    0.929074581f, -0.369892447f,\n    0.929640896f, -0.368466830f,\n    0.930205023f, -0.367040346f,\n    0.930766961f, -0.365612998f,\n    0.931326709f, -0.364184790f,\n    0.931884266f, -0.362755724f,\n    0.932439629f, -0.361325806f,\n    0.932992799f, -0.359895037f,\n    0.933543773f, -0.358463421f,\n    0.934092550f, -0.357030961f,\n    0.934639130f, -0.355597662f,\n    0.935183510f, -0.354163525f,\n    0.935725689f, -0.352728556f,\n    0.936265667f, -0.351292756f,\n    0.936803442f, -0.349856130f,\n    0.937339012f, -0.348418680f,\n    0.937872376f, -0.346980411f,\n    0.938403534f, -0.345541325f,\n    0.938932484f, -0.344101426f,\n    0.939459224f, -0.342660717f,\n    0.939983753f, -0.341219202f,\n    0.940506071f, -0.339776884f,\n    0.941026175f, -0.338333767f,\n    0.941544065f, -0.336889853f,\n    0.942059740f, -0.335445147f,\n    0.942573198f, -0.333999651f,\n    0.943084437f, -0.332553370f,\n    0.943593458f, -0.331106306f,\n    0.944100258f, -0.329658463f,\n    0.944604837f, -0.328209844f,\n    0.945107193f, -0.326760452f,\n    0.945607325f, -0.325310292f,\n    0.946105232f, -0.323859367f,\n    0.946600913f, -0.322407679f,\n    0.947094366f, -0.320955232f,\n    0.947585591f, -0.319502031f,\n    0.948074586f, -0.318048077f,\n    0.948561350f, -0.316593376f,\n    0.949045882f, -0.315137929f,\n    0.949528181f, -0.313681740f,\n    0.950008245f, -0.312224814f,\n    0.950486074f, -0.310767153f,\n    0.950961666f, -0.309308760f,\n    0.951435021f, -0.307849640f,\n    0.951906137f, -0.306389795f,\n    0.952375013f, -0.304929230f,\n    0.952841648f, -0.303467947f,\n    0.953306040f, -0.302005949f,\n    0.953768190f, -0.300543241f,\n    0.954228095f, -0.299079826f,\n    0.954685755f, -0.297615707f,\n    0.955141168f, -0.296150888f,\n    0.955594334f, -0.294685372f,\n    0.956045251f, -0.293219163f,\n    0.956493919f, -0.291752263f,\n    0.956940336f, -0.290284677f,\n    0.957384501f, -0.288816408f,\n    0.957826413f, -0.287347460f,\n    0.958266071f, -0.285877835f,\n    0.958703475f, -0.284407537f,\n    0.959138622f, -0.282936570f,\n    0.959571513f, -0.281464938f,\n    0.960002146f, -0.279992643f,\n    0.960430519f, -0.278519689f,\n    0.960856633f, -0.277046080f,\n    0.961280486f, -0.275571819f,\n    0.961702077f, -0.274096910f,\n    0.962121404f, -0.272621355f,\n    0.962538468f, -0.271145160f,\n    0.962953267f, -0.269668326f,\n    0.963365800f, -0.268190857f,\n    0.963776066f, -0.266712757f,\n    0.964184064f, -0.265234030f,\n    0.964589793f, -0.263754679f,\n    0.964993253f, -0.262274707f,\n    0.965394442f, -0.260794118f,\n    0.965793359f, -0.259312915f,\n    0.966190003f, -0.257831102f,\n    0.966584374f, -0.256348682f,\n    0.966976471f, -0.254865660f,\n    0.967366292f, -0.253382037f,\n    0.967753837f, -0.251897818f,\n    0.968139105f, -0.250413007f,\n    0.968522094f, -0.248927606f,\n    0.968902805f, -0.247441619f,\n    0.969281235f, -0.245955050f,\n    0.969657385f, -0.244467903f,\n    0.970031253f, -0.242980180f,\n    0.970402839f, -0.241491885f,\n    0.970772141f, -0.240003022f,\n    0.971139158f, -0.238513595f,\n    0.971503891f, -0.237023606f,\n    0.971866337f, -0.235533059f,\n    0.972226497f, -0.234041959f,\n    0.972584369f, -0.232550307f,\n    0.972939952f, -0.231058108f,\n    0.973293246f, -0.229565366f,\n    0.973644250f, -0.228072083f,\n    0.973992962f, -0.226578264f,\n    0.974339383f, -0.225083911f,\n    0.974683511f, -0.223589029f,\n    0.975025345f, -0.222093621f,\n    0.975364885f, -0.220597690f,\n    0.975702130f, -0.219101240f,\n    0.976037079f, -0.217604275f,\n    0.976369731f, -0.216106797f,\n    0.976700086f, -0.214608811f,\n    0.977028143f, -0.213110320f,\n    0.977353900f, -0.211611327f,\n    0.977677358f, -0.210111837f,\n    0.977998515f, -0.208611852f,\n    0.978317371f, -0.207111376f,\n    0.978633924f, -0.205610413f,\n    0.978948175f, -0.204108966f,\n    0.979260123f, -0.202607039f,\n    0.979569766f, -0.201104635f,\n    0.979877104f, -0.199601758f,\n    0.980182136f, -0.198098411f,\n    0.980484862f, -0.196594598f,\n    0.980785280f, -0.195090322f,\n    0.981083391f, -0.193585587f,\n    0.981379193f, -0.192080397f,\n    0.981672686f, -0.190574755f,\n    0.981963869f, -0.189068664f,\n    0.982252741f, -0.187562129f,\n    0.982539302f, -0.186055152f,\n    0.982823551f, -0.184547737f,\n    0.983105487f, -0.183039888f,\n    0.983385110f, -0.181531608f,\n    0.983662419f, -0.180022901f,\n    0.983937413f, -0.178513771f,\n    0.984210092f, -0.177004220f,\n    0.984480455f, -0.175494253f,\n    0.984748502f, -0.173983873f,\n    0.985014231f, -0.172473084f,\n    0.985277642f, -0.170961889f,\n    0.985538735f, -0.169450291f,\n    0.985797509f, -0.167938295f,\n    0.986053963f, -0.166425904f,\n    0.986308097f, -0.164913120f,\n    0.986559910f, -0.163399949f,\n    0.986809402f, -0.161886394f,\n    0.987056571f, -0.160372457f,\n    0.987301418f, -0.158858143f,\n    0.987543942f, -0.157343456f,\n    0.987784142f, -0.155828398f,\n    0.988022017f, -0.154312973f,\n    0.988257568f, -0.152797185f,\n    0.988490793f, -0.151281038f,\n    0.988721692f, -0.149764535f,\n    0.988950265f, -0.148247679f,\n    0.989176510f, -0.146730474f,\n    0.989400428f, -0.145212925f,\n    0.989622017f, -0.143695033f,\n    0.989841278f, -0.142176804f,\n    0.990058210f, -0.140658239f,\n    0.990272812f, -0.139139344f,\n    0.990485084f, -0.137620122f,\n    0.990695025f, -0.136100575f,\n    0.990902635f, -0.134580709f,\n    0.991107914f, -0.133060525f,\n    0.991310860f, -0.131540029f,\n    0.991511473f, -0.130019223f,\n    0.991709754f, -0.128498111f,\n    0.991905700f, -0.126976696f,\n    0.992099313f, -0.125454983f,\n    0.992290591f, -0.123932975f,\n    0.992479535f, -0.122410675f,\n    0.992666142f, -0.120888087f,\n    0.992850414f, -0.119365215f,\n    0.993032350f, -0.117842062f,\n    0.993211949f, -0.116318631f,\n    0.993389211f, -0.114794927f,\n    0.993564136f, -0.113270952f,\n    0.993736722f, -0.111746711f,\n    0.993906970f, -0.110222207f,\n    0.994074879f, -0.108697444f,\n    0.994240449f, -0.107172425f,\n    0.994403680f, -0.105647154f,\n    0.994564571f, -0.104121634f,\n    0.994723121f, -0.102595869f,\n    0.994879331f, -0.101069863f,\n    0.995033199f, -0.099543619f,\n    0.995184727f, -0.098017140f,\n    0.995333912f, -0.096490431f,\n    0.995480755f, -0.094963495f,\n    0.995625256f, -0.093436336f,\n    0.995767414f, -0.091908956f,\n    0.995907229f, -0.090381361f,\n    0.996044701f, -0.088853553f,\n    0.996179829f, -0.087325535f,\n    0.996312612f, -0.085797312f,\n    0.996443051f, -0.084268888f,\n    0.996571146f, -0.082740265f,\n    0.996696895f, -0.081211447f,\n    0.996820299f, -0.079682438f,\n    0.996941358f, -0.078153242f,\n    0.997060070f, -0.076623861f,\n    0.997176437f, -0.075094301f,\n    0.997290457f, -0.073564564f,\n    0.997402130f, -0.072034653f,\n    0.997511456f, -0.070504573f,\n    0.997618435f, -0.068974328f,\n    0.997723067f, -0.067443920f,\n    0.997825350f, -0.065913353f,\n    0.997925286f, -0.064382631f,\n    0.998022874f, -0.062851758f,\n    0.998118113f, -0.061320736f,\n    0.998211003f, -0.059789571f,\n    0.998301545f, -0.058258265f,\n    0.998389737f, -0.056726821f,\n    0.998475581f, -0.055195244f,\n    0.998559074f, -0.053663538f,\n    0.998640218f, -0.052131705f,\n    0.998719012f, -0.050599749f,\n    0.998795456f, -0.049067674f,\n    0.998869550f, -0.047535484f,\n    0.998941293f, -0.046003182f,\n    0.999010686f, -0.044470772f,\n    0.999077728f, -0.042938257f,\n    0.999142419f, -0.041405641f,\n    0.999204759f, -0.039872928f,\n    0.999264747f, -0.038340120f,\n    0.999322385f, -0.036807223f,\n    0.999377670f, -0.035274239f,\n    0.999430605f, -0.033741172f,\n    0.999481187f, -0.032208025f,\n    0.999529418f, -0.030674803f,\n    0.999575296f, -0.029141509f,\n    0.999618822f, -0.027608146f,\n    0.999659997f, -0.026074718f,\n    0.999698819f, -0.024541229f,\n    0.999735288f, -0.023007681f,\n    0.999769405f, -0.021474080f,\n    0.999801170f, -0.019940429f,\n    0.999830582f, -0.018406730f,\n    0.999857641f, -0.016872988f,\n    0.999882347f, -0.015339206f,\n    0.999904701f, -0.013805389f,\n    0.999924702f, -0.012271538f,\n    0.999942350f, -0.010737659f,\n    0.999957645f, -0.009203755f,\n    0.999970586f, -0.007669829f,\n    0.999981175f, -0.006135885f,\n    0.999989411f, -0.004601926f,\n    0.999995294f, -0.003067957f,\n    0.999998823f, -0.001533980f\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n/**\n  @brief  Q31 Twiddle factors Table\n*/\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_16)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre> for(i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 16, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n */\nconst q31_t twiddleCoef_16_q31[24] = {\n    (q31_t)0x7FFFFFFF, (q31_t)0x00000000,\n    (q31_t)0x7641AF3C, (q31_t)0x30FBC54D,\n    (q31_t)0x5A82799A, (q31_t)0x5A82799A,\n    (q31_t)0x30FBC54D, (q31_t)0x7641AF3C,\n    (q31_t)0x00000000, (q31_t)0x7FFFFFFF,\n    (q31_t)0xCF043AB2, (q31_t)0x7641AF3C,\n    (q31_t)0xA57D8666, (q31_t)0x5A82799A,\n    (q31_t)0x89BE50C3, (q31_t)0x30FBC54D,\n    (q31_t)0x80000000, (q31_t)0x00000000,\n    (q31_t)0x89BE50C3, (q31_t)0xCF043AB2,\n    (q31_t)0xA57D8666, (q31_t)0xA57D8666,\n    (q31_t)0xCF043AB2, (q31_t)0x89BE50C3\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_32)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 32, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n */\nconst q31_t twiddleCoef_32_q31[48] = {\n    (q31_t)0x7FFFFFFF, (q31_t)0x00000000,\n    (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C,\n    (q31_t)0x7641AF3C, (q31_t)0x30FBC54D,\n    (q31_t)0x6A6D98A4, (q31_t)0x471CECE6,\n    (q31_t)0x5A82799A, (q31_t)0x5A82799A,\n    (q31_t)0x471CECE6, (q31_t)0x6A6D98A4,\n    (q31_t)0x30FBC54D, (q31_t)0x7641AF3C,\n    (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F,\n    (q31_t)0x00000000, (q31_t)0x7FFFFFFF,\n    (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F,\n    (q31_t)0xCF043AB2, (q31_t)0x7641AF3C,\n    (q31_t)0xB8E31319, (q31_t)0x6A6D98A4,\n    (q31_t)0xA57D8666, (q31_t)0x5A82799A,\n    (q31_t)0x9592675B, (q31_t)0x471CECE6,\n    (q31_t)0x89BE50C3, (q31_t)0x30FBC54D,\n    (q31_t)0x8275A0C0, (q31_t)0x18F8B83C,\n    (q31_t)0x80000000, (q31_t)0x00000000,\n    (q31_t)0x8275A0C0, (q31_t)0xE70747C3,\n    (q31_t)0x89BE50C3, (q31_t)0xCF043AB2,\n    (q31_t)0x9592675B, (q31_t)0xB8E31319,\n    (q31_t)0xA57D8666, (q31_t)0xA57D8666,\n    (q31_t)0xB8E31319, (q31_t)0x9592675B,\n    (q31_t)0xCF043AB2, (q31_t)0x89BE50C3,\n    (q31_t)0xE70747C3, (q31_t)0x8275A0C0\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_64)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 64, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n */\nconst q31_t twiddleCoef_64_q31[96] = {\n\t(q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7F62368F,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C,\n\t(q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7641AF3C,\n\t(q31_t)0x30FBC54D, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70,\n\t(q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x62F201AC,\n\t(q31_t)0x5133CC94, (q31_t)0x5A82799A, (q31_t)0x5A82799A,\n\t(q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x471CECE6,\n\t(q31_t)0x6A6D98A4, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6,\n\t(q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x25280C5D,\n\t(q31_t)0x7A7D055B, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x00000000,\n\t(q31_t)0x7FFFFFFF, (q31_t)0xF3742CA1, (q31_t)0x7F62368F,\n\t(q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x7A7D055B, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C,\n\t(q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xB8E31319,\n\t(q31_t)0x6A6D98A4, (q31_t)0xAECC336B, (q31_t)0x62F201AC,\n\t(q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0x9D0DFE53,\n\t(q31_t)0x5133CC94, (q31_t)0x9592675B, (q31_t)0x471CECE6,\n\t(q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x89BE50C3,\n\t(q31_t)0x30FBC54D, (q31_t)0x8582FAA4, (q31_t)0x25280C5D,\n\t(q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x809DC970,\n\t(q31_t)0x0C8BD35E, (q31_t)0x80000000, (q31_t)0x00000000,\n\t(q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x8275A0C0,\n\t(q31_t)0xE70747C3, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8F1D343A,\n\t(q31_t)0xC3A9458F, (q31_t)0x9592675B, (q31_t)0xB8E31319,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0xA57D8666,\n\t(q31_t)0xA57D8666, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53,\n\t(q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xC3A9458F,\n\t(q31_t)0x8F1D343A, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xE70747C3,\n\t(q31_t)0x8275A0C0, (q31_t)0xF3742CA1, (q31_t)0x809DC970\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_128)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i < 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 128, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n */\nconst q31_t twiddleCoef_128_q31[192] = {\n\t(q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FD8878D,\n\t(q31_t)0x0647D97C, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E,\n\t(q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7D8A5F3F,\n\t(q31_t)0x18F8B83C, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B,\n\t(q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x78848413,\n\t(q31_t)0x2B1F34EB, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D,\n\t(q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x70E2CBC6,\n\t(q31_t)0x3C56BA70, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64,\n\t(q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x66CF811F,\n\t(q31_t)0x4C3FDFF3, (q31_t)0x62F201AC, (q31_t)0x5133CC94,\n\t(q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5A82799A,\n\t(q31_t)0x5A82799A, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89,\n\t(q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4C3FDFF3,\n\t(q31_t)0x66CF811F, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4,\n\t(q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x3C56BA70,\n\t(q31_t)0x70E2CBC6, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0,\n\t(q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2B1F34EB,\n\t(q31_t)0x78848413, (q31_t)0x25280C5D, (q31_t)0x7A7D055B,\n\t(q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x18F8B83C,\n\t(q31_t)0x7D8A5F3F, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0647D97C,\n\t(q31_t)0x7FD8878D, (q31_t)0x00000000, (q31_t)0x7FFFFFFF,\n\t(q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF3742CA1,\n\t(q31_t)0x7F62368F, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC,\n\t(q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE0E60684,\n\t(q31_t)0x7C29FBEE, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B,\n\t(q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xCF043AB2,\n\t(q31_t)0x7641AF3C, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0,\n\t(q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xBE31E19B,\n\t(q31_t)0x6DCA0D14, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4,\n\t(q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xAECC336B,\n\t(q31_t)0x62F201AC, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89,\n\t(q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA1288376,\n\t(q31_t)0x55F5A4D2, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94,\n\t(q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9592675B,\n\t(q31_t)0x471CECE6, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64,\n\t(q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8C4A142F,\n\t(q31_t)0x36BA2013, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D,\n\t(q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8582FAA4,\n\t(q31_t)0x25280C5D, (q31_t)0x83D60411, (q31_t)0x1F19F97B,\n\t(q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x8162AA03,\n\t(q31_t)0x12C8106E, (q31_t)0x809DC970, (q31_t)0x0C8BD35E,\n\t(q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80000000,\n\t(q31_t)0x00000000, (q31_t)0x80277872, (q31_t)0xF9B82683,\n\t(q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x8162AA03,\n\t(q31_t)0xED37EF91, (q31_t)0x8275A0C0, (q31_t)0xE70747C3,\n\t(q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x8582FAA4,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8C4A142F,\n\t(q31_t)0xC945DFEC, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F,\n\t(q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9592675B,\n\t(q31_t)0xB8E31319, (q31_t)0x99307EE0, (q31_t)0xB3C0200C,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0xA1288376,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA57D8666, (q31_t)0xA57D8666,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAECC336B,\n\t(q31_t)0x9D0DFE53, (q31_t)0xB3C0200C, (q31_t)0x99307EE0,\n\t(q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBE31E19B,\n\t(q31_t)0x9235F2EB, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A,\n\t(q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCF043AB2,\n\t(q31_t)0x89BE50C3, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xE0E60684,\n\t(q31_t)0x83D60411, (q31_t)0xE70747C3, (q31_t)0x8275A0C0,\n\t(q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xF3742CA1,\n\t(q31_t)0x809DC970, (q31_t)0xF9B82683, (q31_t)0x80277872\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_256)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 256, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n \n */\nconst q31_t twiddleCoef_256_q31[384] = {\n\t(q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FF62182,\n\t(q31_t)0x03242ABF, (q31_t)0x7FD8878D, (q31_t)0x0647D97C,\n\t(q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F62368F,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B,\n\t(q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E1D93E9,\n\t(q31_t)0x15E21444, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7C29FBEE,\n\t(q31_t)0x1F19F97B, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5,\n\t(q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x798A23B1,\n\t(q31_t)0x2826B928, (q31_t)0x78848413, (q31_t)0x2B1F34EB,\n\t(q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x7641AF3C,\n\t(q31_t)0x30FBC54D, (q31_t)0x7504D345, (q31_t)0x33DEF287,\n\t(q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x72552C84,\n\t(q31_t)0x398CDD32, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6DCA0D14,\n\t(q31_t)0x41CE1E64, (q31_t)0x6C242960, (q31_t)0x447ACD50,\n\t(q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x68A69E81,\n\t(q31_t)0x49B41533, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3,\n\t(q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x62F201AC,\n\t(q31_t)0x5133CC94, (q31_t)0x60EC3830, (q31_t)0x539B2AEF,\n\t(q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5CB420DF,\n\t(q31_t)0x5842DD54, (q31_t)0x5A82799A, (q31_t)0x5A82799A,\n\t(q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x55F5A4D2,\n\t(q31_t)0x5ED77C89, (q31_t)0x539B2AEF, (q31_t)0x60EC3830,\n\t(q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4EBFE8A4,\n\t(q31_t)0x64E88926, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F,\n\t(q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x471CECE6,\n\t(q31_t)0x6A6D98A4, (q31_t)0x447ACD50, (q31_t)0x6C242960,\n\t(q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x3F1749B7,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6,\n\t(q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x36BA2013,\n\t(q31_t)0x73B5EBD0, (q31_t)0x33DEF287, (q31_t)0x7504D345,\n\t(q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2E110A62,\n\t(q31_t)0x776C4EDB, (q31_t)0x2B1F34EB, (q31_t)0x78848413,\n\t(q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x25280C5D,\n\t(q31_t)0x7A7D055B, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D,\n\t(q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1C0B826A,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F,\n\t(q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x12C8106E,\n\t(q31_t)0x7E9D55FC, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x096A9049,\n\t(q31_t)0x7FA736B4, (q31_t)0x0647D97C, (q31_t)0x7FD8878D,\n\t(q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x00000000,\n\t(q31_t)0x7FFFFFFF, (q31_t)0xFCDBD541, (q31_t)0x7FF62182,\n\t(q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF6956FB6,\n\t(q31_t)0x7FA736B4, (q31_t)0xF3742CA1, (q31_t)0x7F62368F,\n\t(q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xED37EF91,\n\t(q31_t)0x7E9D55FC, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9,\n\t(q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE3F47D95,\n\t(q31_t)0x7CE3CEB1, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x7A7D055B, (q31_t)0xD7D946D7, (q31_t)0x798A23B1,\n\t(q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD1EEF59E,\n\t(q31_t)0x776C4EDB, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C,\n\t(q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xC945DFEC,\n\t(q31_t)0x73B5EBD0, (q31_t)0xC67322CD, (q31_t)0x72552C84,\n\t(q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC0E8B648,\n\t(q31_t)0x6F5F02B1, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14,\n\t(q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xB8E31319,\n\t(q31_t)0x6A6D98A4, (q31_t)0xB64BEACC, (q31_t)0x68A69E81,\n\t(q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB140175B,\n\t(q31_t)0x64E88926, (q31_t)0xAECC336B, (q31_t)0x62F201AC,\n\t(q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAA0A5B2D,\n\t(q31_t)0x5ED77C89, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF,\n\t(q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA34BDF20,\n\t(q31_t)0x5842DD54, (q31_t)0xA1288376, (q31_t)0x55F5A4D2,\n\t(q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9D0DFE53,\n\t(q31_t)0x5133CC94, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4,\n\t(q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9759617E,\n\t(q31_t)0x49B41533, (q31_t)0x9592675B, (q31_t)0x471CECE6,\n\t(q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9235F2EB,\n\t(q31_t)0x41CE1E64, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7,\n\t(q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8DAAD37B,\n\t(q31_t)0x398CDD32, (q31_t)0x8C4A142F, (q31_t)0x36BA2013,\n\t(q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x89BE50C3,\n\t(q31_t)0x30FBC54D, (q31_t)0x8893B124, (q31_t)0x2E110A62,\n\t(q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8675DC4E,\n\t(q31_t)0x2826B928, (q31_t)0x8582FAA4, (q31_t)0x25280C5D,\n\t(q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x83D60411,\n\t(q31_t)0x1F19F97B, (q31_t)0x831C314E, (q31_t)0x1C0B826A,\n\t(q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x81E26C16,\n\t(q31_t)0x15E21444, (q31_t)0x8162AA03, (q31_t)0x12C8106E,\n\t(q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x809DC970,\n\t(q31_t)0x0C8BD35E, (q31_t)0x8058C94C, (q31_t)0x096A9049,\n\t(q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x8009DE7D,\n\t(q31_t)0x03242ABF, (q31_t)0x80000000, (q31_t)0x00000000,\n\t(q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x80277872,\n\t(q31_t)0xF9B82683, (q31_t)0x8058C94C, (q31_t)0xF6956FB6,\n\t(q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80F66E3C,\n\t(q31_t)0xF054D8D4, (q31_t)0x8162AA03, (q31_t)0xED37EF91,\n\t(q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x8275A0C0,\n\t(q31_t)0xE70747C3, (q31_t)0x831C314E, (q31_t)0xE3F47D95,\n\t(q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x84A2FC62,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x877B7BEC,\n\t(q31_t)0xD4E0CB14, (q31_t)0x8893B124, (q31_t)0xD1EEF59E,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8AFB2CBA,\n\t(q31_t)0xCC210D78, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC,\n\t(q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8F1D343A,\n\t(q31_t)0xC3A9458F, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648,\n\t(q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x93DBD69F,\n\t(q31_t)0xBB8532AF, (q31_t)0x9592675B, (q31_t)0xB8E31319,\n\t(q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x99307EE0,\n\t(q31_t)0xB3C0200C, (q31_t)0x9B1776D9, (q31_t)0xB140175B,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9F13C7D0,\n\t(q31_t)0xAC64D510, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D,\n\t(q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA57D8666,\n\t(q31_t)0xA57D8666, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAC64D510,\n\t(q31_t)0x9F13C7D0, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53,\n\t(q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB3C0200C,\n\t(q31_t)0x99307EE0, (q31_t)0xB64BEACC, (q31_t)0x9759617E,\n\t(q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBB8532AF,\n\t(q31_t)0x93DBD69F, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB,\n\t(q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC3A9458F,\n\t(q31_t)0x8F1D343A, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B,\n\t(q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCC210D78,\n\t(q31_t)0x8AFB2CBA, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3,\n\t(q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD4E0CB14,\n\t(q31_t)0x877B7BEC, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDDDC5B3A,\n\t(q31_t)0x84A2FC62, (q31_t)0xE0E60684, (q31_t)0x83D60411,\n\t(q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE70747C3,\n\t(q31_t)0x8275A0C0, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16,\n\t(q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xF054D8D4,\n\t(q31_t)0x80F66E3C, (q31_t)0xF3742CA1, (q31_t)0x809DC970,\n\t(q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF9B82683,\n\t(q31_t)0x80277872, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_512)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 512, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n \n */\nconst q31_t twiddleCoef_512_q31[768] = {\n    (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFD885A,\n\t(q31_t)0x01921D1F, (q31_t)0x7FF62182, (q31_t)0x03242ABF,\n\t(q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FD8878D,\n\t(q31_t)0x0647D97C, (q31_t)0x7FC25596, (q31_t)0x07D95B9E,\n\t(q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F872BF3,\n\t(q31_t)0x0AFB6805, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E,\n\t(q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F0991C3,\n\t(q31_t)0x0FAB272B, (q31_t)0x7ED5E5C6, (q31_t)0x1139F0CE,\n\t(q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E5FE493,\n\t(q31_t)0x145576B1, (q31_t)0x7E1D93E9, (q31_t)0x15E21444,\n\t(q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7D8A5F3F,\n\t(q31_t)0x18F8B83C, (q31_t)0x7D3980EC, (q31_t)0x1A82A025,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7C894BDD,\n\t(q31_t)0x1D934FE5, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B,\n\t(q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7B5D039D,\n\t(q31_t)0x2223A4C5, (q31_t)0x7AEF6323, (q31_t)0x23A6887E,\n\t(q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A05EEAD,\n\t(q31_t)0x26A82185, (q31_t)0x798A23B1, (q31_t)0x2826B928,\n\t(q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78848413,\n\t(q31_t)0x2B1F34EB, (q31_t)0x77FAB988, (q31_t)0x2C98FBBA,\n\t(q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x76D94988,\n\t(q31_t)0x2F875262, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D,\n\t(q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7504D345,\n\t(q31_t)0x33DEF287, (q31_t)0x745F9DD1, (q31_t)0x354D9056,\n\t(q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x7307C3D0,\n\t(q31_t)0x382493B0, (q31_t)0x72552C84, (q31_t)0x398CDD32,\n\t(q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x70E2CBC6,\n\t(q31_t)0x3C56BA70, (q31_t)0x70231099, (q31_t)0x3DB832A5,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6E96A99C,\n\t(q31_t)0x4073F21D, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64,\n\t(q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6C242960,\n\t(q31_t)0x447ACD50, (q31_t)0x6B4AF278, (q31_t)0x45CD358F,\n\t(q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x698C246C,\n\t(q31_t)0x4869E664, (q31_t)0x68A69E81, (q31_t)0x49B41533,\n\t(q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x66CF811F,\n\t(q31_t)0x4C3FDFF3, (q31_t)0x65DDFBD3, (q31_t)0x4D8162C4,\n\t(q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x63EF328F,\n\t(q31_t)0x4FFB654D, (q31_t)0x62F201AC, (q31_t)0x5133CC94,\n\t(q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x60EC3830,\n\t(q31_t)0x539B2AEF, (q31_t)0x5FE3B38D, (q31_t)0x54CA0A4A,\n\t(q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5DC79D7C,\n\t(q31_t)0x571DEEF9, (q31_t)0x5CB420DF, (q31_t)0x5842DD54,\n\t(q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5A82799A,\n\t(q31_t)0x5A82799A, (q31_t)0x59646497, (q31_t)0x5B9D1153,\n\t(q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x571DEEF9,\n\t(q31_t)0x5DC79D7C, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89,\n\t(q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x539B2AEF,\n\t(q31_t)0x60EC3830, (q31_t)0x5269126E, (q31_t)0x61F1003E,\n\t(q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4FFB654D,\n\t(q31_t)0x63EF328F, (q31_t)0x4EBFE8A4, (q31_t)0x64E88926,\n\t(q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4C3FDFF3,\n\t(q31_t)0x66CF811F, (q31_t)0x4AFB6C97, (q31_t)0x67BD0FBC,\n\t(q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x4869E664,\n\t(q31_t)0x698C246C, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4,\n\t(q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x447ACD50,\n\t(q31_t)0x6C242960, (q31_t)0x4325C135, (q31_t)0x6CF934FB,\n\t(q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4073F21D,\n\t(q31_t)0x6E96A99C, (q31_t)0x3F1749B7, (q31_t)0x6F5F02B1,\n\t(q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3C56BA70,\n\t(q31_t)0x70E2CBC6, (q31_t)0x3AF2EEB7, (q31_t)0x719E2CD2,\n\t(q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x382493B0,\n\t(q31_t)0x7307C3D0, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0,\n\t(q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x33DEF287,\n\t(q31_t)0x7504D345, (q31_t)0x326E54C7, (q31_t)0x75A585CF,\n\t(q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2F875262,\n\t(q31_t)0x76D94988, (q31_t)0x2E110A62, (q31_t)0x776C4EDB,\n\t(q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2B1F34EB,\n\t(q31_t)0x78848413, (q31_t)0x29A3C484, (q31_t)0x7909A92C,\n\t(q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x26A82185,\n\t(q31_t)0x7A05EEAD, (q31_t)0x25280C5D, (q31_t)0x7A7D055B,\n\t(q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x2223A4C5,\n\t(q31_t)0x7B5D039D, (q31_t)0x209F701C, (q31_t)0x7BC5E28F,\n\t(q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1D934FE5,\n\t(q31_t)0x7C894BDD, (q31_t)0x1C0B826A, (q31_t)0x7CE3CEB1,\n\t(q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x18F8B83C,\n\t(q31_t)0x7D8A5F3F, (q31_t)0x176DD9DE, (q31_t)0x7DD6668E,\n\t(q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x145576B1,\n\t(q31_t)0x7E5FE493, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC,\n\t(q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x0FAB272B,\n\t(q31_t)0x7F0991C3, (q31_t)0x0E1BC2E3, (q31_t)0x7F3857F5,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0AFB6805,\n\t(q31_t)0x7F872BF3, (q31_t)0x096A9049, (q31_t)0x7FA736B4,\n\t(q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x0647D97C,\n\t(q31_t)0x7FD8878D, (q31_t)0x04B6195D, (q31_t)0x7FE9CBC0,\n\t(q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x01921D1F,\n\t(q31_t)0x7FFD885A, (q31_t)0x00000000, (q31_t)0x7FFFFFFF,\n\t(q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFCDBD541,\n\t(q31_t)0x7FF62182, (q31_t)0xFB49E6A2, (q31_t)0x7FE9CBC0,\n\t(q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF826A461,\n\t(q31_t)0x7FC25596, (q31_t)0xF6956FB6, (q31_t)0x7FA736B4,\n\t(q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF3742CA1,\n\t(q31_t)0x7F62368F, (q31_t)0xF1E43D1C, (q31_t)0x7F3857F5,\n\t(q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEEC60F31,\n\t(q31_t)0x7ED5E5C6, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC,\n\t(q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEA1DEBBB,\n\t(q31_t)0x7E1D93E9, (q31_t)0xE8922621, (q31_t)0x7DD6668E,\n\t(q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE57D5FDA,\n\t(q31_t)0x7D3980EC, (q31_t)0xE3F47D95, (q31_t)0x7CE3CEB1,\n\t(q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE0E60684,\n\t(q31_t)0x7C29FBEE, (q31_t)0xDF608FE3, (q31_t)0x7BC5E28F,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDC597781,\n\t(q31_t)0x7AEF6323, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B,\n\t(q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD7D946D7,\n\t(q31_t)0x798A23B1, (q31_t)0xD65C3B7B, (q31_t)0x7909A92C,\n\t(q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD3670445,\n\t(q31_t)0x77FAB988, (q31_t)0xD1EEF59E, (q31_t)0x776C4EDB,\n\t(q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xCF043AB2,\n\t(q31_t)0x7641AF3C, (q31_t)0xCD91AB38, (q31_t)0x75A585CF,\n\t(q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCAB26FA9,\n\t(q31_t)0x745F9DD1, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0,\n\t(q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC67322CD,\n\t(q31_t)0x72552C84, (q31_t)0xC50D1148, (q31_t)0x719E2CD2,\n\t(q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC247CD5A,\n\t(q31_t)0x70231099, (q31_t)0xC0E8B648, (q31_t)0x6F5F02B1,\n\t(q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBE31E19B,\n\t(q31_t)0x6DCA0D14, (q31_t)0xBCDA3ECA, (q31_t)0x6CF934FB,\n\t(q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBA32CA70,\n\t(q31_t)0x6B4AF278, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4,\n\t(q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB64BEACC,\n\t(q31_t)0x68A69E81, (q31_t)0xB5049368, (q31_t)0x67BD0FBC,\n\t(q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB27E9D3B,\n\t(q31_t)0x65DDFBD3, (q31_t)0xB140175B, (q31_t)0x64E88926,\n\t(q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAECC336B,\n\t(q31_t)0x62F201AC, (q31_t)0xAD96ED91, (q31_t)0x61F1003E,\n\t(q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAB35F5B5,\n\t(q31_t)0x5FE3B38D, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89,\n\t(q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA7BD22AB,\n\t(q31_t)0x5CB420DF, (q31_t)0xA69B9B68, (q31_t)0x5B9D1153,\n\t(q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA462EEAC,\n\t(q31_t)0x59646497, (q31_t)0xA34BDF20, (q31_t)0x5842DD54,\n\t(q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1288376,\n\t(q31_t)0x55F5A4D2, (q31_t)0xA01C4C72, (q31_t)0x54CA0A4A,\n\t(q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9E0EFFC1,\n\t(q31_t)0x5269126E, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94,\n\t(q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9B1776D9,\n\t(q31_t)0x4EBFE8A4, (q31_t)0x9A22042C, (q31_t)0x4D8162C4,\n\t(q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9842F043,\n\t(q31_t)0x4AFB6C97, (q31_t)0x9759617E, (q31_t)0x49B41533,\n\t(q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x9592675B,\n\t(q31_t)0x471CECE6, (q31_t)0x94B50D87, (q31_t)0x45CD358F,\n\t(q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9306CB04,\n\t(q31_t)0x4325C135, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64,\n\t(q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x90A0FD4E,\n\t(q31_t)0x3F1749B7, (q31_t)0x8FDCEF66, (q31_t)0x3DB832A5,\n\t(q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8E61D32D,\n\t(q31_t)0x3AF2EEB7, (q31_t)0x8DAAD37B, (q31_t)0x398CDD32,\n\t(q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8C4A142F,\n\t(q31_t)0x36BA2013, (q31_t)0x8BA0622F, (q31_t)0x354D9056,\n\t(q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8A5A7A30,\n\t(q31_t)0x326E54C7, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D,\n\t(q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x8893B124,\n\t(q31_t)0x2E110A62, (q31_t)0x88054677, (q31_t)0x2C98FBBA,\n\t(q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x86F656D3,\n\t(q31_t)0x29A3C484, (q31_t)0x8675DC4E, (q31_t)0x2826B928,\n\t(q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x8582FAA4,\n\t(q31_t)0x25280C5D, (q31_t)0x85109CDC, (q31_t)0x23A6887E,\n\t(q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x843A1D70,\n\t(q31_t)0x209F701C, (q31_t)0x83D60411, (q31_t)0x1F19F97B,\n\t(q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x831C314E,\n\t(q31_t)0x1C0B826A, (q31_t)0x82C67F13, (q31_t)0x1A82A025,\n\t(q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x82299971,\n\t(q31_t)0x176DD9DE, (q31_t)0x81E26C16, (q31_t)0x15E21444,\n\t(q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x8162AA03,\n\t(q31_t)0x12C8106E, (q31_t)0x812A1A39, (q31_t)0x1139F0CE,\n\t(q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80C7A80A,\n\t(q31_t)0x0E1BC2E3, (q31_t)0x809DC970, (q31_t)0x0C8BD35E,\n\t(q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x8058C94C,\n\t(q31_t)0x096A9049, (q31_t)0x803DAA69, (q31_t)0x07D95B9E,\n\t(q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80163440,\n\t(q31_t)0x04B6195D, (q31_t)0x8009DE7D, (q31_t)0x03242ABF,\n\t(q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x80000000,\n\t(q31_t)0x00000000, (q31_t)0x800277A5, (q31_t)0xFE6DE2E0,\n\t(q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x80163440,\n\t(q31_t)0xFB49E6A2, (q31_t)0x80277872, (q31_t)0xF9B82683,\n\t(q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8058C94C,\n\t(q31_t)0xF6956FB6, (q31_t)0x8078D40D, (q31_t)0xF50497FA,\n\t(q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80C7A80A,\n\t(q31_t)0xF1E43D1C, (q31_t)0x80F66E3C, (q31_t)0xF054D8D4,\n\t(q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8162AA03,\n\t(q31_t)0xED37EF91, (q31_t)0x81A01B6C, (q31_t)0xEBAA894E,\n\t(q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x82299971,\n\t(q31_t)0xE8922621, (q31_t)0x8275A0C0, (q31_t)0xE70747C3,\n\t(q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x831C314E,\n\t(q31_t)0xE3F47D95, (q31_t)0x8376B422, (q31_t)0xE26CB01A,\n\t(q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x843A1D70,\n\t(q31_t)0xDF608FE3, (q31_t)0x84A2FC62, (q31_t)0xDDDC5B3A,\n\t(q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x8582FAA4,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x85FA1152, (q31_t)0xD957DE7A,\n\t(q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86F656D3,\n\t(q31_t)0xD65C3B7B, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14,\n\t(q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x8893B124,\n\t(q31_t)0xD1EEF59E, (q31_t)0x8926B677, (q31_t)0xD078AD9D,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8A5A7A30,\n\t(q31_t)0xCD91AB38, (q31_t)0x8AFB2CBA, (q31_t)0xCC210D78,\n\t(q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8C4A142F,\n\t(q31_t)0xC945DFEC, (q31_t)0x8CF83C30, (q31_t)0xC7DB6C50,\n\t(q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8E61D32D,\n\t(q31_t)0xC50D1148, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F,\n\t(q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x90A0FD4E,\n\t(q31_t)0xC0E8B648, (q31_t)0x91695663, (q31_t)0xBF8C0DE2,\n\t(q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9306CB04,\n\t(q31_t)0xBCDA3ECA, (q31_t)0x93DBD69F, (q31_t)0xBB8532AF,\n\t(q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x9592675B,\n\t(q31_t)0xB8E31319, (q31_t)0x9673DB94, (q31_t)0xB796199B,\n\t(q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x9842F043,\n\t(q31_t)0xB5049368, (q31_t)0x99307EE0, (q31_t)0xB3C0200C,\n\t(q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9B1776D9,\n\t(q31_t)0xB140175B, (q31_t)0x9C10CD70, (q31_t)0xB0049AB2,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9E0EFFC1,\n\t(q31_t)0xAD96ED91, (q31_t)0x9F13C7D0, (q31_t)0xAC64D510,\n\t(q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA1288376,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA2386283, (q31_t)0xA8E21106,\n\t(q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA462EEAC,\n\t(q31_t)0xA69B9B68, (q31_t)0xA57D8666, (q31_t)0xA57D8666,\n\t(q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA7BD22AB,\n\t(q31_t)0xA34BDF20, (q31_t)0xA8E21106, (q31_t)0xA2386283,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAB35F5B5,\n\t(q31_t)0xA01C4C72, (q31_t)0xAC64D510, (q31_t)0x9F13C7D0,\n\t(q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xAECC336B,\n\t(q31_t)0x9D0DFE53, (q31_t)0xB0049AB2, (q31_t)0x9C10CD70,\n\t(q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB27E9D3B,\n\t(q31_t)0x9A22042C, (q31_t)0xB3C0200C, (q31_t)0x99307EE0,\n\t(q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB64BEACC,\n\t(q31_t)0x9759617E, (q31_t)0xB796199B, (q31_t)0x9673DB94,\n\t(q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBA32CA70,\n\t(q31_t)0x94B50D87, (q31_t)0xBB8532AF, (q31_t)0x93DBD69F,\n\t(q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBE31E19B,\n\t(q31_t)0x9235F2EB, (q31_t)0xBF8C0DE2, (q31_t)0x91695663,\n\t(q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC247CD5A,\n\t(q31_t)0x8FDCEF66, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A,\n\t(q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC67322CD,\n\t(q31_t)0x8DAAD37B, (q31_t)0xC7DB6C50, (q31_t)0x8CF83C30,\n\t(q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCAB26FA9,\n\t(q31_t)0x8BA0622F, (q31_t)0xCC210D78, (q31_t)0x8AFB2CBA,\n\t(q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCF043AB2,\n\t(q31_t)0x89BE50C3, (q31_t)0xD078AD9D, (q31_t)0x8926B677,\n\t(q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD3670445,\n\t(q31_t)0x88054677, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC,\n\t(q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD7D946D7,\n\t(q31_t)0x8675DC4E, (q31_t)0xD957DE7A, (q31_t)0x85FA1152,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDC597781,\n\t(q31_t)0x85109CDC, (q31_t)0xDDDC5B3A, (q31_t)0x84A2FC62,\n\t(q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xE0E60684,\n\t(q31_t)0x83D60411, (q31_t)0xE26CB01A, (q31_t)0x8376B422,\n\t(q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE57D5FDA,\n\t(q31_t)0x82C67F13, (q31_t)0xE70747C3, (q31_t)0x8275A0C0,\n\t(q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xEA1DEBBB,\n\t(q31_t)0x81E26C16, (q31_t)0xEBAA894E, (q31_t)0x81A01B6C,\n\t(q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xEEC60F31,\n\t(q31_t)0x812A1A39, (q31_t)0xF054D8D4, (q31_t)0x80F66E3C,\n\t(q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF3742CA1,\n\t(q31_t)0x809DC970, (q31_t)0xF50497FA, (q31_t)0x8078D40D,\n\t(q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF826A461,\n\t(q31_t)0x803DAA69, (q31_t)0xF9B82683, (q31_t)0x80277872,\n\t(q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFCDBD541,\n\t(q31_t)0x8009DE7D, (q31_t)0xFE6DE2E0, (q31_t)0x800277A5\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_1024)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 1024, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n \n */\nconst q31_t twiddleCoef_1024_q31[1536] = {\n\t(q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFF6216,\n\t(q31_t)0x00C90F88, (q31_t)0x7FFD885A, (q31_t)0x01921D1F,\n\t(q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF62182,\n\t(q31_t)0x03242ABF, (q31_t)0x7FF09477, (q31_t)0x03ED26E6,\n\t(q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE1C76B,\n\t(q31_t)0x057F0034, (q31_t)0x7FD8878D, (q31_t)0x0647D97C,\n\t(q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FC25596,\n\t(q31_t)0x07D95B9E, (q31_t)0x7FB563B2, (q31_t)0x08A2009A,\n\t(q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F97CEBC,\n\t(q31_t)0x0A3308BC, (q31_t)0x7F872BF3, (q31_t)0x0AFB6805,\n\t(q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F62368F,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F4DE450, (q31_t)0x0D53DB92,\n\t(q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F2191B4,\n\t(q31_t)0x0EE38765, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B,\n\t(q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7ED5E5C6,\n\t(q31_t)0x1139F0CE, (q31_t)0x7EBA3A39, (q31_t)0x120116D4,\n\t(q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E7F3956,\n\t(q31_t)0x138EDBB0, (q31_t)0x7E5FE493, (q31_t)0x145576B1,\n\t(q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E1D93E9,\n\t(q31_t)0x15E21444, (q31_t)0x7DFA98A7, (q31_t)0x16A81305,\n\t(q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DB0FDF7,\n\t(q31_t)0x183366E8, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C,\n\t(q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D3980EC,\n\t(q31_t)0x1A82A025, (q31_t)0x7D0F4218, (q31_t)0x1B4732EF,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CB72724,\n\t(q31_t)0x1CCF8CB3, (q31_t)0x7C894BDD, (q31_t)0x1D934FE5,\n\t(q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C29FBEE,\n\t(q31_t)0x1F19F97B, (q31_t)0x7BF88830, (q31_t)0x1FDCDC1A,\n\t(q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7B920B89,\n\t(q31_t)0x2161B39F, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5,\n\t(q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7AEF6323,\n\t(q31_t)0x23A6887E, (q31_t)0x7AB6CBA3, (q31_t)0x24677757,\n\t(q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A4210D8,\n\t(q31_t)0x25E845B5, (q31_t)0x7A05EEAD, (q31_t)0x26A82185,\n\t(q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x798A23B1,\n\t(q31_t)0x2826B928, (q31_t)0x794A7C11, (q31_t)0x28E5714A,\n\t(q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78C7ABA1,\n\t(q31_t)0x2A61B101, (q31_t)0x78848413, (q31_t)0x2B1F34EB,\n\t(q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x77FAB988,\n\t(q31_t)0x2C98FBBA, (q31_t)0x77B417DF, (q31_t)0x2D553AFB,\n\t(q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x77235F2D,\n\t(q31_t)0x2ECC681E, (q31_t)0x76D94988, (q31_t)0x2F875262,\n\t(q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x7641AF3C,\n\t(q31_t)0x30FBC54D, (q31_t)0x75F42C0A, (q31_t)0x31B54A5D,\n\t(q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7555BD4B,\n\t(q31_t)0x3326E2C2, (q31_t)0x7504D345, (q31_t)0x33DEF287,\n\t(q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x745F9DD1,\n\t(q31_t)0x354D9056, (q31_t)0x740B53FA, (q31_t)0x36041AD9,\n\t(q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x735F6626,\n\t(q31_t)0x376F9E46, (q31_t)0x7307C3D0, (q31_t)0x382493B0,\n\t(q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x72552C84,\n\t(q31_t)0x398CDD32, (q31_t)0x71FA3948, (q31_t)0x3A402DD1,\n\t(q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x71410804,\n\t(q31_t)0x3BA51E29, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70,\n\t(q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x70231099,\n\t(q31_t)0x3DB832A5, (q31_t)0x6FC19385, (q31_t)0x3E680B2C,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6EFB5F12,\n\t(q31_t)0x3FC5EC97, (q31_t)0x6E96A99C, (q31_t)0x4073F21D,\n\t(q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6DCA0D14,\n\t(q31_t)0x41CE1E64, (q31_t)0x6D6227FA, (q31_t)0x427A41D0,\n\t(q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6C8F351C,\n\t(q31_t)0x43D09AEC, (q31_t)0x6C242960, (q31_t)0x447ACD50,\n\t(q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B4AF278,\n\t(q31_t)0x45CD358F, (q31_t)0x6ADCC964, (q31_t)0x46756827,\n\t(q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x69FD614A,\n\t(q31_t)0x47C3C22E, (q31_t)0x698C246C, (q31_t)0x4869E664,\n\t(q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68A69E81,\n\t(q31_t)0x49B41533, (q31_t)0x683257AA, (q31_t)0x4A581C9D,\n\t(q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x6746C7D7,\n\t(q31_t)0x4B9E038F, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3,\n\t(q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x65DDFBD3,\n\t(q31_t)0x4D8162C4, (q31_t)0x6563BF92, (q31_t)0x4E210617,\n\t(q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x646C59BF,\n\t(q31_t)0x4F5E08E3, (q31_t)0x63EF328F, (q31_t)0x4FFB654D,\n\t(q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x62F201AC,\n\t(q31_t)0x5133CC94, (q31_t)0x6271FA69, (q31_t)0x51CED46E,\n\t(q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x616F146B,\n\t(q31_t)0x53028517, (q31_t)0x60EC3830, (q31_t)0x539B2AEF,\n\t(q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x5FE3B38D,\n\t(q31_t)0x54CA0A4A, (q31_t)0x5F5E0DB3, (q31_t)0x556040E2,\n\t(q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5E50015D,\n\t(q31_t)0x568A34A9, (q31_t)0x5DC79D7C, (q31_t)0x571DEEF9,\n\t(q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5CB420DF,\n\t(q31_t)0x5842DD54, (q31_t)0x5C290ACC, (q31_t)0x58D40E8C,\n\t(q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B1035CF,\n\t(q31_t)0x59F3DE12, (q31_t)0x5A82799A, (q31_t)0x5A82799A,\n\t(q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59646497,\n\t(q31_t)0x5B9D1153, (q31_t)0x58D40E8C, (q31_t)0x5C290ACC,\n\t(q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x57B0D256,\n\t(q31_t)0x5D3E5236, (q31_t)0x571DEEF9, (q31_t)0x5DC79D7C,\n\t(q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x55F5A4D2,\n\t(q31_t)0x5ED77C89, (q31_t)0x556040E2, (q31_t)0x5F5E0DB3,\n\t(q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x5433027D,\n\t(q31_t)0x60686CCE, (q31_t)0x539B2AEF, (q31_t)0x60EC3830,\n\t(q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x5269126E,\n\t(q31_t)0x61F1003E, (q31_t)0x51CED46E, (q31_t)0x6271FA69,\n\t(q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x5097FC5E,\n\t(q31_t)0x637114CC, (q31_t)0x4FFB654D, (q31_t)0x63EF328F,\n\t(q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4EBFE8A4,\n\t(q31_t)0x64E88926, (q31_t)0x4E210617, (q31_t)0x6563BF92,\n\t(q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4CE10034,\n\t(q31_t)0x66573CBB, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F,\n\t(q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4AFB6C97,\n\t(q31_t)0x67BD0FBC, (q31_t)0x4A581C9D, (q31_t)0x683257AA,\n\t(q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x490F57EE,\n\t(q31_t)0x6919E320, (q31_t)0x4869E664, (q31_t)0x698C246C,\n\t(q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x471CECE6,\n\t(q31_t)0x6A6D98A4, (q31_t)0x46756827, (q31_t)0x6ADCC964,\n\t(q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x452456BC,\n\t(q31_t)0x6BB812D0, (q31_t)0x447ACD50, (q31_t)0x6C242960,\n\t(q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x4325C135,\n\t(q31_t)0x6CF934FB, (q31_t)0x427A41D0, (q31_t)0x6D6227FA,\n\t(q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4121589A,\n\t(q31_t)0x6E30E349, (q31_t)0x4073F21D, (q31_t)0x6E96A99C,\n\t(q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F1749B7,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3E680B2C, (q31_t)0x6FC19385,\n\t(q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D07C1D5,\n\t(q31_t)0x708378FE, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6,\n\t(q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3AF2EEB7,\n\t(q31_t)0x719E2CD2, (q31_t)0x3A402DD1, (q31_t)0x71FA3948,\n\t(q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x38D8FE93,\n\t(q31_t)0x72AF05A6, (q31_t)0x382493B0, (q31_t)0x7307C3D0,\n\t(q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x36BA2013,\n\t(q31_t)0x73B5EBD0, (q31_t)0x36041AD9, (q31_t)0x740B53FA,\n\t(q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x3496824F,\n\t(q31_t)0x74B2C883, (q31_t)0x33DEF287, (q31_t)0x7504D345,\n\t(q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x326E54C7,\n\t(q31_t)0x75A585CF, (q31_t)0x31B54A5D, (q31_t)0x75F42C0A,\n\t(q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x3041C760,\n\t(q31_t)0x768E0EA5, (q31_t)0x2F875262, (q31_t)0x76D94988,\n\t(q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E110A62,\n\t(q31_t)0x776C4EDB, (q31_t)0x2D553AFB, (q31_t)0x77B417DF,\n\t(q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2BDC4E6F,\n\t(q31_t)0x78403328, (q31_t)0x2B1F34EB, (q31_t)0x78848413,\n\t(q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x29A3C484,\n\t(q31_t)0x7909A92C, (q31_t)0x28E5714A, (q31_t)0x794A7C11,\n\t(q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27679DF4,\n\t(q31_t)0x79C89F6D, (q31_t)0x26A82185, (q31_t)0x7A05EEAD,\n\t(q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x25280C5D,\n\t(q31_t)0x7A7D055B, (q31_t)0x24677757, (q31_t)0x7AB6CBA3,\n\t(q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x22E541AE,\n\t(q31_t)0x7B26CB4F, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D,\n\t(q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x209F701C,\n\t(q31_t)0x7BC5E28F, (q31_t)0x1FDCDC1A, (q31_t)0x7BF88830,\n\t(q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1E56CA1E,\n\t(q31_t)0x7C5A3D4F, (q31_t)0x1D934FE5, (q31_t)0x7C894BDD,\n\t(q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C0B826A,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x1B4732EF, (q31_t)0x7D0F4218,\n\t(q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x19BDCBF2,\n\t(q31_t)0x7D628AC5, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F,\n\t(q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x176DD9DE,\n\t(q31_t)0x7DD6668E, (q31_t)0x16A81305, (q31_t)0x7DFA98A7,\n\t(q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x151BDF85,\n\t(q31_t)0x7E3F57FE, (q31_t)0x145576B1, (q31_t)0x7E5FE493,\n\t(q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x12C8106E,\n\t(q31_t)0x7E9D55FC, (q31_t)0x120116D4, (q31_t)0x7EBA3A39,\n\t(q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x1072A047,\n\t(q31_t)0x7EF0585F, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3,\n\t(q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0E1BC2E3,\n\t(q31_t)0x7F3857F5, (q31_t)0x0D53DB92, (q31_t)0x7F4DE450,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0BC3AC35,\n\t(q31_t)0x7F754E7F, (q31_t)0x0AFB6805, (q31_t)0x7F872BF3,\n\t(q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x096A9049,\n\t(q31_t)0x7FA736B4, (q31_t)0x08A2009A, (q31_t)0x7FB563B2,\n\t(q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x0710A344,\n\t(q31_t)0x7FCE0C3E, (q31_t)0x0647D97C, (q31_t)0x7FD8878D,\n\t(q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x04B6195D,\n\t(q31_t)0x7FE9CBC0, (q31_t)0x03ED26E6, (q31_t)0x7FF09477,\n\t(q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x025B26D7,\n\t(q31_t)0x7FFA72D1, (q31_t)0x01921D1F, (q31_t)0x7FFD885A,\n\t(q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x00000000,\n\t(q31_t)0x7FFFFFFF, (q31_t)0xFF36F078, (q31_t)0x7FFF6216,\n\t(q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFDA4D928,\n\t(q31_t)0x7FFA72D1, (q31_t)0xFCDBD541, (q31_t)0x7FF62182,\n\t(q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFB49E6A2,\n\t(q31_t)0x7FE9CBC0, (q31_t)0xFA80FFCB, (q31_t)0x7FE1C76B,\n\t(q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF8EF5CBB,\n\t(q31_t)0x7FCE0C3E, (q31_t)0xF826A461, (q31_t)0x7FC25596,\n\t(q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF6956FB6,\n\t(q31_t)0x7FA736B4, (q31_t)0xF5CCF743, (q31_t)0x7F97CEBC,\n\t(q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF43C53CA,\n\t(q31_t)0x7F754E7F, (q31_t)0xF3742CA1, (q31_t)0x7F62368F,\n\t(q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF1E43D1C,\n\t(q31_t)0x7F3857F5, (q31_t)0xF11C789A, (q31_t)0x7F2191B4,\n\t(q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEF8D5FB8,\n\t(q31_t)0x7EF0585F, (q31_t)0xEEC60F31, (q31_t)0x7ED5E5C6,\n\t(q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xED37EF91,\n\t(q31_t)0x7E9D55FC, (q31_t)0xEC71244F, (q31_t)0x7E7F3956,\n\t(q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEAE4207A,\n\t(q31_t)0x7E3F57FE, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9,\n\t(q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE8922621,\n\t(q31_t)0x7DD6668E, (q31_t)0xE7CC9917, (q31_t)0x7DB0FDF7,\n\t(q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE642340D,\n\t(q31_t)0x7D628AC5, (q31_t)0xE57D5FDA, (q31_t)0x7D3980EC,\n\t(q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE3F47D95,\n\t(q31_t)0x7CE3CEB1, (q31_t)0xE330734C, (q31_t)0x7CB72724,\n\t(q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE1A935E1,\n\t(q31_t)0x7C5A3D4F, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE,\n\t(q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDF608FE3,\n\t(q31_t)0x7BC5E28F, (q31_t)0xDE9E4C60, (q31_t)0x7B920B89,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDD1ABE51,\n\t(q31_t)0x7B26CB4F, (q31_t)0xDC597781, (q31_t)0x7AEF6323,\n\t(q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x7A7D055B, (q31_t)0xDA17BA4A, (q31_t)0x7A4210D8,\n\t(q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD898620C,\n\t(q31_t)0x79C89F6D, (q31_t)0xD7D946D7, (q31_t)0x798A23B1,\n\t(q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD65C3B7B,\n\t(q31_t)0x7909A92C, (q31_t)0xD59E4EFE, (q31_t)0x78C7ABA1,\n\t(q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD423B190,\n\t(q31_t)0x78403328, (q31_t)0xD3670445, (q31_t)0x77FAB988,\n\t(q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD1EEF59E,\n\t(q31_t)0x776C4EDB, (q31_t)0xD13397E1, (q31_t)0x77235F2D,\n\t(q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xCFBE389F,\n\t(q31_t)0x768E0EA5, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C,\n\t(q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCD91AB38,\n\t(q31_t)0x75A585CF, (q31_t)0xCCD91D3D, (q31_t)0x7555BD4B,\n\t(q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCB697DB0,\n\t(q31_t)0x74B2C883, (q31_t)0xCAB26FA9, (q31_t)0x745F9DD1,\n\t(q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC945DFEC,\n\t(q31_t)0x73B5EBD0, (q31_t)0xC89061BA, (q31_t)0x735F6626,\n\t(q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC727016C,\n\t(q31_t)0x72AF05A6, (q31_t)0xC67322CD, (q31_t)0x72552C84,\n\t(q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC50D1148,\n\t(q31_t)0x719E2CD2, (q31_t)0xC45AE1D7, (q31_t)0x71410804,\n\t(q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC2F83E2A,\n\t(q31_t)0x708378FE, (q31_t)0xC247CD5A, (q31_t)0x70231099,\n\t(q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC0E8B648,\n\t(q31_t)0x6F5F02B1, (q31_t)0xC03A1368, (q31_t)0x6EFB5F12,\n\t(q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBEDEA765,\n\t(q31_t)0x6E30E349, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14,\n\t(q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBCDA3ECA,\n\t(q31_t)0x6CF934FB, (q31_t)0xBC2F6513, (q31_t)0x6C8F351C,\n\t(q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBADBA943,\n\t(q31_t)0x6BB812D0, (q31_t)0xBA32CA70, (q31_t)0x6B4AF278,\n\t(q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB8E31319,\n\t(q31_t)0x6A6D98A4, (q31_t)0xB83C3DD1, (q31_t)0x69FD614A,\n\t(q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB6F0A811,\n\t(q31_t)0x6919E320, (q31_t)0xB64BEACC, (q31_t)0x68A69E81,\n\t(q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB5049368,\n\t(q31_t)0x67BD0FBC, (q31_t)0xB461FC70, (q31_t)0x6746C7D7,\n\t(q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB31EFFCB,\n\t(q31_t)0x66573CBB, (q31_t)0xB27E9D3B, (q31_t)0x65DDFBD3,\n\t(q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB140175B,\n\t(q31_t)0x64E88926, (q31_t)0xB0A1F71C, (q31_t)0x646C59BF,\n\t(q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAF6803A1,\n\t(q31_t)0x637114CC, (q31_t)0xAECC336B, (q31_t)0x62F201AC,\n\t(q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xAD96ED91,\n\t(q31_t)0x61F1003E, (q31_t)0xACFD7AE8, (q31_t)0x616F146B,\n\t(q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xABCCFD82,\n\t(q31_t)0x60686CCE, (q31_t)0xAB35F5B5, (q31_t)0x5FE3B38D,\n\t(q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA0A5B2D,\n\t(q31_t)0x5ED77C89, (q31_t)0xA975CB56, (q31_t)0x5E50015D,\n\t(q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA84F2DA9,\n\t(q31_t)0x5D3E5236, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF,\n\t(q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA69B9B68,\n\t(q31_t)0x5B9D1153, (q31_t)0xA60C21ED, (q31_t)0x5B1035CF,\n\t(q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA4EFCA31,\n\t(q31_t)0x59F3DE12, (q31_t)0xA462EEAC, (q31_t)0x59646497,\n\t(q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA34BDF20,\n\t(q31_t)0x5842DD54, (q31_t)0xA2C1ADC9, (q31_t)0x57B0D256,\n\t(q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1AFFEA2,\n\t(q31_t)0x568A34A9, (q31_t)0xA1288376, (q31_t)0x55F5A4D2,\n\t(q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA01C4C72,\n\t(q31_t)0x54CA0A4A, (q31_t)0x9F979331, (q31_t)0x5433027D,\n\t(q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9E90EB94,\n\t(q31_t)0x53028517, (q31_t)0x9E0EFFC1, (q31_t)0x5269126E,\n\t(q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D0DFE53,\n\t(q31_t)0x5133CC94, (q31_t)0x9C8EEB33, (q31_t)0x5097FC5E,\n\t(q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9B93A640,\n\t(q31_t)0x4F5E08E3, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4,\n\t(q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A22042C,\n\t(q31_t)0x4D8162C4, (q31_t)0x99A8C344, (q31_t)0x4CE10034,\n\t(q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x98B93828,\n\t(q31_t)0x4B9E038F, (q31_t)0x9842F043, (q31_t)0x4AFB6C97,\n\t(q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x9759617E,\n\t(q31_t)0x49B41533, (q31_t)0x96E61CDF, (q31_t)0x490F57EE,\n\t(q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x96029EB5,\n\t(q31_t)0x47C3C22E, (q31_t)0x9592675B, (q31_t)0x471CECE6,\n\t(q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x94B50D87,\n\t(q31_t)0x45CD358F, (q31_t)0x9447ED2F, (q31_t)0x452456BC,\n\t(q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9370CAE4,\n\t(q31_t)0x43D09AEC, (q31_t)0x9306CB04, (q31_t)0x4325C135,\n\t(q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9235F2EB,\n\t(q31_t)0x41CE1E64, (q31_t)0x91CF1CB6, (q31_t)0x4121589A,\n\t(q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x9104A0ED,\n\t(q31_t)0x3FC5EC97, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7,\n\t(q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x8FDCEF66,\n\t(q31_t)0x3DB832A5, (q31_t)0x8F7C8701, (q31_t)0x3D07C1D5,\n\t(q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8EBEF7FB,\n\t(q31_t)0x3BA51E29, (q31_t)0x8E61D32D, (q31_t)0x3AF2EEB7,\n\t(q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DAAD37B,\n\t(q31_t)0x398CDD32, (q31_t)0x8D50FA59, (q31_t)0x38D8FE93,\n\t(q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CA099D9,\n\t(q31_t)0x376F9E46, (q31_t)0x8C4A142F, (q31_t)0x36BA2013,\n\t(q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BA0622F,\n\t(q31_t)0x354D9056, (q31_t)0x8B4D377C, (q31_t)0x3496824F,\n\t(q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AAA42B4,\n\t(q31_t)0x3326E2C2, (q31_t)0x8A5A7A30, (q31_t)0x326E54C7,\n\t(q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89BE50C3,\n\t(q31_t)0x30FBC54D, (q31_t)0x8971F15A, (q31_t)0x3041C760,\n\t(q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x88DCA0D3,\n\t(q31_t)0x2ECC681E, (q31_t)0x8893B124, (q31_t)0x2E110A62,\n\t(q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x88054677,\n\t(q31_t)0x2C98FBBA, (q31_t)0x87BFCCD7, (q31_t)0x2BDC4E6F,\n\t(q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8738545E,\n\t(q31_t)0x2A61B101, (q31_t)0x86F656D3, (q31_t)0x29A3C484,\n\t(q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x8675DC4E,\n\t(q31_t)0x2826B928, (q31_t)0x86376092, (q31_t)0x27679DF4,\n\t(q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85BDEF27,\n\t(q31_t)0x25E845B5, (q31_t)0x8582FAA4, (q31_t)0x25280C5D,\n\t(q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x85109CDC,\n\t(q31_t)0x23A6887E, (q31_t)0x84D934B0, (q31_t)0x22E541AE,\n\t(q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x846DF476,\n\t(q31_t)0x2161B39F, (q31_t)0x843A1D70, (q31_t)0x209F701C,\n\t(q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83D60411,\n\t(q31_t)0x1F19F97B, (q31_t)0x83A5C2B0, (q31_t)0x1E56CA1E,\n\t(q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x8348D8DB,\n\t(q31_t)0x1CCF8CB3, (q31_t)0x831C314E, (q31_t)0x1C0B826A,\n\t(q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82C67F13,\n\t(q31_t)0x1A82A025, (q31_t)0x829D753A, (q31_t)0x19BDCBF2,\n\t(q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x824F0208,\n\t(q31_t)0x183366E8, (q31_t)0x82299971, (q31_t)0x176DD9DE,\n\t(q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81E26C16,\n\t(q31_t)0x15E21444, (q31_t)0x81C0A801, (q31_t)0x151BDF85,\n\t(q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x8180C6A9,\n\t(q31_t)0x138EDBB0, (q31_t)0x8162AA03, (q31_t)0x12C8106E,\n\t(q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x812A1A39,\n\t(q31_t)0x1139F0CE, (q31_t)0x810FA7A0, (q31_t)0x1072A047,\n\t(q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80DE6E4C,\n\t(q31_t)0x0EE38765, (q31_t)0x80C7A80A, (q31_t)0x0E1BC2E3,\n\t(q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x809DC970,\n\t(q31_t)0x0C8BD35E, (q31_t)0x808AB180, (q31_t)0x0BC3AC35,\n\t(q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80683143,\n\t(q31_t)0x0A3308BC, (q31_t)0x8058C94C, (q31_t)0x096A9049,\n\t(q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x803DAA69,\n\t(q31_t)0x07D95B9E, (q31_t)0x8031F3C1, (q31_t)0x0710A344,\n\t(q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x801E3894,\n\t(q31_t)0x057F0034, (q31_t)0x80163440, (q31_t)0x04B6195D,\n\t(q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x8009DE7D,\n\t(q31_t)0x03242ABF, (q31_t)0x80058D2E, (q31_t)0x025B26D7,\n\t(q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x80009DE9,\n\t(q31_t)0x00C90F88, (q31_t)0x80000000, (q31_t)0x00000000,\n\t(q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x800277A5,\n\t(q31_t)0xFE6DE2E0, (q31_t)0x80058D2E, (q31_t)0xFDA4D928,\n\t(q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800F6B88,\n\t(q31_t)0xFC12D919, (q31_t)0x80163440, (q31_t)0xFB49E6A2,\n\t(q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x80277872,\n\t(q31_t)0xF9B82683, (q31_t)0x8031F3C1, (q31_t)0xF8EF5CBB,\n\t(q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x804A9C4D,\n\t(q31_t)0xF75DFF65, (q31_t)0x8058C94C, (q31_t)0xF6956FB6,\n\t(q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x8078D40D,\n\t(q31_t)0xF50497FA, (q31_t)0x808AB180, (q31_t)0xF43C53CA,\n\t(q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80B21BAF,\n\t(q31_t)0xF2AC246D, (q31_t)0x80C7A80A, (q31_t)0xF1E43D1C,\n\t(q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80F66E3C,\n\t(q31_t)0xF054D8D4, (q31_t)0x810FA7A0, (q31_t)0xEF8D5FB8,\n\t(q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8145C5C6,\n\t(q31_t)0xEDFEE92B, (q31_t)0x8162AA03, (q31_t)0xED37EF91,\n\t(q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81A01B6C,\n\t(q31_t)0xEBAA894E, (q31_t)0x81C0A801, (q31_t)0xEAE4207A,\n\t(q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x82056758,\n\t(q31_t)0xE957ECFB, (q31_t)0x82299971, (q31_t)0xE8922621,\n\t(q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x8275A0C0,\n\t(q31_t)0xE70747C3, (q31_t)0x829D753A, (q31_t)0xE642340D,\n\t(q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82F0BDE8,\n\t(q31_t)0xE4B8CD10, (q31_t)0x831C314E, (q31_t)0xE3F47D95,\n\t(q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x8376B422,\n\t(q31_t)0xE26CB01A, (q31_t)0x83A5C2B0, (q31_t)0xE1A935E1,\n\t(q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x840777CF,\n\t(q31_t)0xE02323E5, (q31_t)0x843A1D70, (q31_t)0xDF608FE3,\n\t(q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x84A2FC62,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x84D934B0, (q31_t)0xDD1ABE51,\n\t(q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x8549345C,\n\t(q31_t)0xDB9888A8, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85FA1152,\n\t(q31_t)0xD957DE7A, (q31_t)0x86376092, (q31_t)0xD898620C,\n\t(q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86B583EE,\n\t(q31_t)0xD71A8EB5, (q31_t)0x86F656D3, (q31_t)0xD65C3B7B,\n\t(q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x877B7BEC,\n\t(q31_t)0xD4E0CB14, (q31_t)0x87BFCCD7, (q31_t)0xD423B190,\n\t(q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x884BE820,\n\t(q31_t)0xD2AAC504, (q31_t)0x8893B124, (q31_t)0xD1EEF59E,\n\t(q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x8926B677,\n\t(q31_t)0xD078AD9D, (q31_t)0x8971F15A, (q31_t)0xCFBE389F,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8A0BD3F5,\n\t(q31_t)0xCE4AB5A2, (q31_t)0x8A5A7A30, (q31_t)0xCD91AB38,\n\t(q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8AFB2CBA,\n\t(q31_t)0xCC210D78, (q31_t)0x8B4D377C, (q31_t)0xCB697DB0,\n\t(q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BF4AC05,\n\t(q31_t)0xC9FBE527, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC,\n\t(q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CF83C30,\n\t(q31_t)0xC7DB6C50, (q31_t)0x8D50FA59, (q31_t)0xC727016C,\n\t(q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8E05C6B7,\n\t(q31_t)0xC5BFD22E, (q31_t)0x8E61D32D, (q31_t)0xC50D1148,\n\t(q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8F1D343A,\n\t(q31_t)0xC3A9458F, (q31_t)0x8F7C8701, (q31_t)0xC2F83E2A,\n\t(q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x903E6C7A,\n\t(q31_t)0xC197F4D3, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648,\n\t(q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x91695663,\n\t(q31_t)0xBF8C0DE2, (q31_t)0x91CF1CB6, (q31_t)0xBEDEA765,\n\t(q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x929DD805,\n\t(q31_t)0xBD85BE2F, (q31_t)0x9306CB04, (q31_t)0xBCDA3ECA,\n\t(q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x93DBD69F,\n\t(q31_t)0xBB8532AF, (q31_t)0x9447ED2F, (q31_t)0xBADBA943,\n\t(q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x9523369B,\n\t(q31_t)0xB98A97D8, (q31_t)0x9592675B, (q31_t)0xB8E31319,\n\t(q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x9673DB94,\n\t(q31_t)0xB796199B, (q31_t)0x96E61CDF, (q31_t)0xB6F0A811,\n\t(q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x97CDA855,\n\t(q31_t)0xB5A7E362, (q31_t)0x9842F043, (q31_t)0xB5049368,\n\t(q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x99307EE0,\n\t(q31_t)0xB3C0200C, (q31_t)0x99A8C344, (q31_t)0xB31EFFCB,\n\t(q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A9C406D,\n\t(q31_t)0xB1DEF9E8, (q31_t)0x9B1776D9, (q31_t)0xB140175B,\n\t(q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9C10CD70,\n\t(q31_t)0xB0049AB2, (q31_t)0x9C8EEB33, (q31_t)0xAF6803A1,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D8E0596,\n\t(q31_t)0xAE312B91, (q31_t)0x9E0EFFC1, (q31_t)0xAD96ED91,\n\t(q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9F13C7D0,\n\t(q31_t)0xAC64D510, (q31_t)0x9F979331, (q31_t)0xABCCFD82,\n\t(q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA0A1F24C,\n\t(q31_t)0xAA9FBF1D, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D,\n\t(q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA2386283,\n\t(q31_t)0xA8E21106, (q31_t)0xA2C1ADC9, (q31_t)0xA84F2DA9,\n\t(q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA3D6F533,\n\t(q31_t)0xA72BF173, (q31_t)0xA462EEAC, (q31_t)0xA69B9B68,\n\t(q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA57D8666,\n\t(q31_t)0xA57D8666, (q31_t)0xA60C21ED, (q31_t)0xA4EFCA31,\n\t(q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA72BF173,\n\t(q31_t)0xA3D6F533, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20,\n\t(q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA8E21106,\n\t(q31_t)0xA2386283, (q31_t)0xA975CB56, (q31_t)0xA1AFFEA2,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA9FBF1D,\n\t(q31_t)0xA0A1F24C, (q31_t)0xAB35F5B5, (q31_t)0xA01C4C72,\n\t(q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xAC64D510,\n\t(q31_t)0x9F13C7D0, (q31_t)0xACFD7AE8, (q31_t)0x9E90EB94,\n\t(q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xAE312B91,\n\t(q31_t)0x9D8E0596, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53,\n\t(q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xB0049AB2,\n\t(q31_t)0x9C10CD70, (q31_t)0xB0A1F71C, (q31_t)0x9B93A640,\n\t(q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB1DEF9E8,\n\t(q31_t)0x9A9C406D, (q31_t)0xB27E9D3B, (q31_t)0x9A22042C,\n\t(q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB3C0200C,\n\t(q31_t)0x99307EE0, (q31_t)0xB461FC70, (q31_t)0x98B93828,\n\t(q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB5A7E362,\n\t(q31_t)0x97CDA855, (q31_t)0xB64BEACC, (q31_t)0x9759617E,\n\t(q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB796199B,\n\t(q31_t)0x9673DB94, (q31_t)0xB83C3DD1, (q31_t)0x96029EB5,\n\t(q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB98A97D8,\n\t(q31_t)0x9523369B, (q31_t)0xBA32CA70, (q31_t)0x94B50D87,\n\t(q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB8532AF,\n\t(q31_t)0x93DBD69F, (q31_t)0xBC2F6513, (q31_t)0x9370CAE4,\n\t(q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD85BE2F,\n\t(q31_t)0x929DD805, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB,\n\t(q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF8C0DE2,\n\t(q31_t)0x91695663, (q31_t)0xC03A1368, (q31_t)0x9104A0ED,\n\t(q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC197F4D3,\n\t(q31_t)0x903E6C7A, (q31_t)0xC247CD5A, (q31_t)0x8FDCEF66,\n\t(q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC3A9458F,\n\t(q31_t)0x8F1D343A, (q31_t)0xC45AE1D7, (q31_t)0x8EBEF7FB,\n\t(q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC5BFD22E,\n\t(q31_t)0x8E05C6B7, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B,\n\t(q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7DB6C50,\n\t(q31_t)0x8CF83C30, (q31_t)0xC89061BA, (q31_t)0x8CA099D9,\n\t(q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC9FBE527,\n\t(q31_t)0x8BF4AC05, (q31_t)0xCAB26FA9, (q31_t)0x8BA0622F,\n\t(q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCC210D78,\n\t(q31_t)0x8AFB2CBA, (q31_t)0xCCD91D3D, (q31_t)0x8AAA42B4,\n\t(q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCE4AB5A2,\n\t(q31_t)0x8A0BD3F5, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3,\n\t(q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xD078AD9D,\n\t(q31_t)0x8926B677, (q31_t)0xD13397E1, (q31_t)0x88DCA0D3,\n\t(q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD2AAC504,\n\t(q31_t)0x884BE820, (q31_t)0xD3670445, (q31_t)0x88054677,\n\t(q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD4E0CB14,\n\t(q31_t)0x877B7BEC, (q31_t)0xD59E4EFE, (q31_t)0x8738545E,\n\t(q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD71A8EB5,\n\t(q31_t)0x86B583EE, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E,\n\t(q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD957DE7A,\n\t(q31_t)0x85FA1152, (q31_t)0xDA17BA4A, (q31_t)0x85BDEF27,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB9888A8,\n\t(q31_t)0x8549345C, (q31_t)0xDC597781, (q31_t)0x85109CDC,\n\t(q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDDDC5B3A,\n\t(q31_t)0x84A2FC62, (q31_t)0xDE9E4C60, (q31_t)0x846DF476,\n\t(q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xE02323E5,\n\t(q31_t)0x840777CF, (q31_t)0xE0E60684, (q31_t)0x83D60411,\n\t(q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE26CB01A,\n\t(q31_t)0x8376B422, (q31_t)0xE330734C, (q31_t)0x8348D8DB,\n\t(q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4B8CD10,\n\t(q31_t)0x82F0BDE8, (q31_t)0xE57D5FDA, (q31_t)0x82C67F13,\n\t(q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE70747C3,\n\t(q31_t)0x8275A0C0, (q31_t)0xE7CC9917, (q31_t)0x824F0208,\n\t(q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE957ECFB,\n\t(q31_t)0x82056758, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16,\n\t(q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEBAA894E,\n\t(q31_t)0x81A01B6C, (q31_t)0xEC71244F, (q31_t)0x8180C6A9,\n\t(q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xEDFEE92B,\n\t(q31_t)0x8145C5C6, (q31_t)0xEEC60F31, (q31_t)0x812A1A39,\n\t(q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xF054D8D4,\n\t(q31_t)0x80F66E3C, (q31_t)0xF11C789A, (q31_t)0x80DE6E4C,\n\t(q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF2AC246D,\n\t(q31_t)0x80B21BAF, (q31_t)0xF3742CA1, (q31_t)0x809DC970,\n\t(q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF50497FA,\n\t(q31_t)0x8078D40D, (q31_t)0xF5CCF743, (q31_t)0x80683143,\n\t(q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF75DFF65,\n\t(q31_t)0x804A9C4D, (q31_t)0xF826A461, (q31_t)0x803DAA69,\n\t(q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF9B82683,\n\t(q31_t)0x80277872, (q31_t)0xFA80FFCB, (q31_t)0x801E3894,\n\t(q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFC12D919,\n\t(q31_t)0x800F6B88, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D,\n\t(q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFE6DE2E0,\n\t(q31_t)0x800277A5, (q31_t)0xFF36F078, (q31_t)0x80009DE9\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_2048)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 2048, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n */\nconst q31_t twiddleCoef_2048_q31[3072] = {\n\t(q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFFD885,\n\t(q31_t)0x006487E3, (q31_t)0x7FFF6216, (q31_t)0x00C90F88,\n\t(q31_t)0x7FFE9CB2, (q31_t)0x012D96B0, (q31_t)0x7FFD885A,\n\t(q31_t)0x01921D1F, (q31_t)0x7FFC250F, (q31_t)0x01F6A296,\n\t(q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF871A1,\n\t(q31_t)0x02BFA9A4, (q31_t)0x7FF62182, (q31_t)0x03242ABF,\n\t(q31_t)0x7FF38273, (q31_t)0x0388A9E9, (q31_t)0x7FF09477,\n\t(q31_t)0x03ED26E6, (q31_t)0x7FED5790, (q31_t)0x0451A176,\n\t(q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE5F108,\n\t(q31_t)0x051A8E5C, (q31_t)0x7FE1C76B, (q31_t)0x057F0034,\n\t(q31_t)0x7FDD4EEC, (q31_t)0x05E36EA9, (q31_t)0x7FD8878D,\n\t(q31_t)0x0647D97C, (q31_t)0x7FD37152, (q31_t)0x06AC406F,\n\t(q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FC85853,\n\t(q31_t)0x077501BE, (q31_t)0x7FC25596, (q31_t)0x07D95B9E,\n\t(q31_t)0x7FBC040A, (q31_t)0x083DB0A7, (q31_t)0x7FB563B2,\n\t(q31_t)0x08A2009A, (q31_t)0x7FAE7494, (q31_t)0x09064B3A,\n\t(q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F9FAA15,\n\t(q31_t)0x09CECF89, (q31_t)0x7F97CEBC, (q31_t)0x0A3308BC,\n\t(q31_t)0x7F8FA4AF, (q31_t)0x0A973BA5, (q31_t)0x7F872BF3,\n\t(q31_t)0x0AFB6805, (q31_t)0x7F7E648B, (q31_t)0x0B5F8D9F,\n\t(q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F6BE9D4,\n\t(q31_t)0x0C27C389, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E,\n\t(q31_t)0x7F5834B6, (q31_t)0x0CEFDB75, (q31_t)0x7F4DE450,\n\t(q31_t)0x0D53DB92, (q31_t)0x7F434563, (q31_t)0x0DB7D376,\n\t(q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F2D1C0E,\n\t(q31_t)0x0E7FA99D, (q31_t)0x7F2191B4, (q31_t)0x0EE38765,\n\t(q31_t)0x7F15B8EE, (q31_t)0x0F475BFE, (q31_t)0x7F0991C3,\n\t(q31_t)0x0FAB272B, (q31_t)0x7EFD1C3C, (q31_t)0x100EE8AD,\n\t(q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7EE34635,\n\t(q31_t)0x10D64DBC, (q31_t)0x7ED5E5C6, (q31_t)0x1139F0CE,\n\t(q31_t)0x7EC8371A, (q31_t)0x119D8940, (q31_t)0x7EBA3A39,\n\t(q31_t)0x120116D4, (q31_t)0x7EABEF2C, (q31_t)0x1264994E,\n\t(q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E8E6EB1,\n\t(q31_t)0x132B7BF9, (q31_t)0x7E7F3956, (q31_t)0x138EDBB0,\n\t(q31_t)0x7E6FB5F3, (q31_t)0x13F22F57, (q31_t)0x7E5FE493,\n\t(q31_t)0x145576B1, (q31_t)0x7E4FC53E, (q31_t)0x14B8B17F,\n\t(q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E2E9CDF,\n\t(q31_t)0x157F0086, (q31_t)0x7E1D93E9, (q31_t)0x15E21444,\n\t(q31_t)0x7E0C3D29, (q31_t)0x16451A83, (q31_t)0x7DFA98A7,\n\t(q31_t)0x16A81305, (q31_t)0x7DE8A670, (q31_t)0x170AFD8D,\n\t(q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DC3D90D,\n\t(q31_t)0x17D0A7BB, (q31_t)0x7DB0FDF7, (q31_t)0x183366E8,\n\t(q31_t)0x7D9DD55A, (q31_t)0x18961727, (q31_t)0x7D8A5F3F,\n\t(q31_t)0x18F8B83C, (q31_t)0x7D769BB5, (q31_t)0x195B49E9,\n\t(q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D4E2C7E,\n\t(q31_t)0x1A203E1B, (q31_t)0x7D3980EC, (q31_t)0x1A82A025,\n\t(q31_t)0x7D24881A, (q31_t)0x1AE4F1D6, (q31_t)0x7D0F4218,\n\t(q31_t)0x1B4732EF, (q31_t)0x7CF9AEF0, (q31_t)0x1BA96334,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CCDA168,\n\t(q31_t)0x1C6D9053, (q31_t)0x7CB72724, (q31_t)0x1CCF8CB3,\n\t(q31_t)0x7CA05FF1, (q31_t)0x1D31774D, (q31_t)0x7C894BDD,\n\t(q31_t)0x1D934FE5, (q31_t)0x7C71EAF8, (q31_t)0x1DF5163F,\n\t(q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C4242F2,\n\t(q31_t)0x1EB86B46, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B,\n\t(q31_t)0x7C116853, (q31_t)0x1F7B7480, (q31_t)0x7BF88830,\n\t(q31_t)0x1FDCDC1A, (q31_t)0x7BDF5B94, (q31_t)0x203E300D,\n\t(q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7BAC1D31,\n\t(q31_t)0x21009C0B, (q31_t)0x7B920B89, (q31_t)0x2161B39F,\n\t(q31_t)0x7B77ADA8, (q31_t)0x21C2B69C, (q31_t)0x7B5D039D,\n\t(q31_t)0x2223A4C5, (q31_t)0x7B420D7A, (q31_t)0x22847DDF,\n\t(q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7B0B3D2C,\n\t(q31_t)0x2345EFF7, (q31_t)0x7AEF6323, (q31_t)0x23A6887E,\n\t(q31_t)0x7AD33D45, (q31_t)0x24070B07, (q31_t)0x7AB6CBA3,\n\t(q31_t)0x24677757, (q31_t)0x7A9A0E4F, (q31_t)0x24C7CD32,\n\t(q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A5FB0D8,\n\t(q31_t)0x2588349D, (q31_t)0x7A4210D8, (q31_t)0x25E845B5,\n\t(q31_t)0x7A24256E, (q31_t)0x26483F6C, (q31_t)0x7A05EEAD,\n\t(q31_t)0x26A82185, (q31_t)0x79E76CA6, (q31_t)0x2707EBC6,\n\t(q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x79A98715,\n\t(q31_t)0x27C737D2, (q31_t)0x798A23B1, (q31_t)0x2826B928,\n\t(q31_t)0x796A7554, (q31_t)0x288621B9, (q31_t)0x794A7C11,\n\t(q31_t)0x28E5714A, (q31_t)0x792A37FE, (q31_t)0x2944A7A2,\n\t(q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78E8CFB1,\n\t(q31_t)0x2A02C7B8, (q31_t)0x78C7ABA1, (q31_t)0x2A61B101,\n\t(q31_t)0x78A63D10, (q31_t)0x2AC08025, (q31_t)0x78848413,\n\t(q31_t)0x2B1F34EB, (q31_t)0x786280BF, (q31_t)0x2B7DCF17,\n\t(q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x781D9B64,\n\t(q31_t)0x2C3AB2B9, (q31_t)0x77FAB988, (q31_t)0x2C98FBBA,\n\t(q31_t)0x77D78DAA, (q31_t)0x2CF72939, (q31_t)0x77B417DF,\n\t(q31_t)0x2D553AFB, (q31_t)0x7790583D, (q31_t)0x2DB330C7,\n\t(q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x7747FBCE,\n\t(q31_t)0x2E6EC792, (q31_t)0x77235F2D, (q31_t)0x2ECC681E,\n\t(q31_t)0x76FE790E, (q31_t)0x2F29EBCC, (q31_t)0x76D94988,\n\t(q31_t)0x2F875262, (q31_t)0x76B3D0B3, (q31_t)0x2FE49BA6,\n\t(q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x76680376,\n\t(q31_t)0x309ED555, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D,\n\t(q31_t)0x761B1211, (q31_t)0x3158970D, (q31_t)0x75F42C0A,\n\t(q31_t)0x31B54A5D, (q31_t)0x75CCFD42, (q31_t)0x3211DF03,\n\t(q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x757DC5CA,\n\t(q31_t)0x32CAAB6F, (q31_t)0x7555BD4B, (q31_t)0x3326E2C2,\n\t(q31_t)0x752D6C6C, (q31_t)0x3382FA88, (q31_t)0x7504D345,\n\t(q31_t)0x33DEF287, (q31_t)0x74DBF1EF, (q31_t)0x343ACA87,\n\t(q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x7489571B,\n\t(q31_t)0x34F219A7, (q31_t)0x745F9DD1, (q31_t)0x354D9056,\n\t(q31_t)0x74359CBD, (q31_t)0x35A8E624, (q31_t)0x740B53FA,\n\t(q31_t)0x36041AD9, (q31_t)0x73E0C3A3, (q31_t)0x365F2E3B,\n\t(q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x738ACC9E,\n\t(q31_t)0x3714F02A, (q31_t)0x735F6626, (q31_t)0x376F9E46,\n\t(q31_t)0x7333B883, (q31_t)0x37CA2A30, (q31_t)0x7307C3D0,\n\t(q31_t)0x382493B0, (q31_t)0x72DB8828, (q31_t)0x387EDA8E,\n\t(q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x72823C66,\n\t(q31_t)0x3932FF87, (q31_t)0x72552C84, (q31_t)0x398CDD32,\n\t(q31_t)0x7227D61C, (q31_t)0x39E6975D, (q31_t)0x71FA3948,\n\t(q31_t)0x3A402DD1, (q31_t)0x71CC5626, (q31_t)0x3A99A057,\n\t(q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x716FBD68,\n\t(q31_t)0x3B4C18BA, (q31_t)0x71410804, (q31_t)0x3BA51E29,\n\t(q31_t)0x71120CC5, (q31_t)0x3BFDFECD, (q31_t)0x70E2CBC6,\n\t(q31_t)0x3C56BA70, (q31_t)0x70B34524, (q31_t)0x3CAF50DA,\n\t(q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x70536771,\n\t(q31_t)0x3D600D2B, (q31_t)0x70231099, (q31_t)0x3DB832A5,\n\t(q31_t)0x6FF27496, (q31_t)0x3E10320D, (q31_t)0x6FC19385,\n\t(q31_t)0x3E680B2C, (q31_t)0x6F906D84, (q31_t)0x3EBFBDCC,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6F2D532C,\n\t(q31_t)0x3F6EAEB8, (q31_t)0x6EFB5F12, (q31_t)0x3FC5EC97,\n\t(q31_t)0x6EC92682, (q31_t)0x401D0320, (q31_t)0x6E96A99C,\n\t(q31_t)0x4073F21D, (q31_t)0x6E63E87F, (q31_t)0x40CAB957,\n\t(q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6DFD9A1B,\n\t(q31_t)0x4177CFB0, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64,\n\t(q31_t)0x6D963C54, (q31_t)0x42244480, (q31_t)0x6D6227FA,\n\t(q31_t)0x427A41D0, (q31_t)0x6D2DD027, (q31_t)0x42D0161E,\n\t(q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6CC45697,\n\t(q31_t)0x437B42E1, (q31_t)0x6C8F351C, (q31_t)0x43D09AEC,\n\t(q31_t)0x6C59D0A9, (q31_t)0x4425C923, (q31_t)0x6C242960,\n\t(q31_t)0x447ACD50, (q31_t)0x6BEE3F62, (q31_t)0x44CFA73F,\n\t(q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B81A3CD,\n\t(q31_t)0x4578DB93, (q31_t)0x6B4AF278, (q31_t)0x45CD358F,\n\t(q31_t)0x6B13FEF5, (q31_t)0x4621647C, (q31_t)0x6ADCC964,\n\t(q31_t)0x46756827, (q31_t)0x6AA551E8, (q31_t)0x46C9405C,\n\t(q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x6A359DB9,\n\t(q31_t)0x47706D93, (q31_t)0x69FD614A, (q31_t)0x47C3C22E,\n\t(q31_t)0x69C4E37A, (q31_t)0x4816EA85, (q31_t)0x698C246C,\n\t(q31_t)0x4869E664, (q31_t)0x69532442, (q31_t)0x48BCB598,\n\t(q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68E06129,\n\t(q31_t)0x4961CD32, (q31_t)0x68A69E81, (q31_t)0x49B41533,\n\t(q31_t)0x686C9B4B, (q31_t)0x4A062FBD, (q31_t)0x683257AA,\n\t(q31_t)0x4A581C9D, (q31_t)0x67F7D3C4, (q31_t)0x4AA9DBA1,\n\t(q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x67820BB6,\n\t(q31_t)0x4B4CCF4D, (q31_t)0x6746C7D7, (q31_t)0x4B9E038F,\n\t(q31_t)0x670B4443, (q31_t)0x4BEF092D, (q31_t)0x66CF811F,\n\t(q31_t)0x4C3FDFF3, (q31_t)0x66937E90, (q31_t)0x4C9087B1,\n\t(q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x661ABBC5,\n\t(q31_t)0x4D31494B, (q31_t)0x65DDFBD3, (q31_t)0x4D8162C4,\n\t(q31_t)0x65A0FD0B, (q31_t)0x4DD14C6E, (q31_t)0x6563BF92,\n\t(q31_t)0x4E210617, (q31_t)0x6526438E, (q31_t)0x4E708F8F,\n\t(q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x64AA907F,\n\t(q31_t)0x4F0F1126, (q31_t)0x646C59BF, (q31_t)0x4F5E08E3,\n\t(q31_t)0x642DE50D, (q31_t)0x4FACCFAB, (q31_t)0x63EF328F,\n\t(q31_t)0x4FFB654D, (q31_t)0x63B0426D, (q31_t)0x5049C999,\n\t(q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x6331A9D4,\n\t(q31_t)0x50E5FD6C, (q31_t)0x62F201AC, (q31_t)0x5133CC94,\n\t(q31_t)0x62B21C7B, (q31_t)0x518169A4, (q31_t)0x6271FA69,\n\t(q31_t)0x51CED46E, (q31_t)0x62319B9D, (q31_t)0x521C0CC1,\n\t(q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x61B02876,\n\t(q31_t)0x52B5E545, (q31_t)0x616F146B, (q31_t)0x53028517,\n\t(q31_t)0x612DC446, (q31_t)0x534EF1B5, (q31_t)0x60EC3830,\n\t(q31_t)0x539B2AEF, (q31_t)0x60AA704F, (q31_t)0x53E73097,\n\t(q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x60262DD5,\n\t(q31_t)0x547EA073, (q31_t)0x5FE3B38D, (q31_t)0x54CA0A4A,\n\t(q31_t)0x5FA0FE1E, (q31_t)0x55153FD4, (q31_t)0x5F5E0DB3,\n\t(q31_t)0x556040E2, (q31_t)0x5F1AE273, (q31_t)0x55AB0D46,\n\t(q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5E93DC1F,\n\t(q31_t)0x56400757, (q31_t)0x5E50015D, (q31_t)0x568A34A9,\n\t(q31_t)0x5E0BEC6E, (q31_t)0x56D42C99, (q31_t)0x5DC79D7C,\n\t(q31_t)0x571DEEF9, (q31_t)0x5D8314B0, (q31_t)0x57677B9D,\n\t(q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5CF95638,\n\t(q31_t)0x57F9F2F7, (q31_t)0x5CB420DF, (q31_t)0x5842DD54,\n\t(q31_t)0x5C6EB258, (q31_t)0x588B913F, (q31_t)0x5C290ACC,\n\t(q31_t)0x58D40E8C, (q31_t)0x5BE32A67, (q31_t)0x591C550E,\n\t(q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B56BFBD,\n\t(q31_t)0x59AC3CFD, (q31_t)0x5B1035CF, (q31_t)0x59F3DE12,\n\t(q31_t)0x5AC973B4, (q31_t)0x5A3B47AA, (q31_t)0x5A82799A,\n\t(q31_t)0x5A82799A, (q31_t)0x5A3B47AA, (q31_t)0x5AC973B4,\n\t(q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59AC3CFD,\n\t(q31_t)0x5B56BFBD, (q31_t)0x59646497, (q31_t)0x5B9D1153,\n\t(q31_t)0x591C550E, (q31_t)0x5BE32A67, (q31_t)0x58D40E8C,\n\t(q31_t)0x5C290ACC, (q31_t)0x588B913F, (q31_t)0x5C6EB258,\n\t(q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x57F9F2F7,\n\t(q31_t)0x5CF95638, (q31_t)0x57B0D256, (q31_t)0x5D3E5236,\n\t(q31_t)0x57677B9D, (q31_t)0x5D8314B0, (q31_t)0x571DEEF9,\n\t(q31_t)0x5DC79D7C, (q31_t)0x56D42C99, (q31_t)0x5E0BEC6E,\n\t(q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x56400757,\n\t(q31_t)0x5E93DC1F, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89,\n\t(q31_t)0x55AB0D46, (q31_t)0x5F1AE273, (q31_t)0x556040E2,\n\t(q31_t)0x5F5E0DB3, (q31_t)0x55153FD4, (q31_t)0x5FA0FE1E,\n\t(q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x547EA073,\n\t(q31_t)0x60262DD5, (q31_t)0x5433027D, (q31_t)0x60686CCE,\n\t(q31_t)0x53E73097, (q31_t)0x60AA704F, (q31_t)0x539B2AEF,\n\t(q31_t)0x60EC3830, (q31_t)0x534EF1B5, (q31_t)0x612DC446,\n\t(q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x52B5E545,\n\t(q31_t)0x61B02876, (q31_t)0x5269126E, (q31_t)0x61F1003E,\n\t(q31_t)0x521C0CC1, (q31_t)0x62319B9D, (q31_t)0x51CED46E,\n\t(q31_t)0x6271FA69, (q31_t)0x518169A4, (q31_t)0x62B21C7B,\n\t(q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x50E5FD6C,\n\t(q31_t)0x6331A9D4, (q31_t)0x5097FC5E, (q31_t)0x637114CC,\n\t(q31_t)0x5049C999, (q31_t)0x63B0426D, (q31_t)0x4FFB654D,\n\t(q31_t)0x63EF328F, (q31_t)0x4FACCFAB, (q31_t)0x642DE50D,\n\t(q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4F0F1126,\n\t(q31_t)0x64AA907F, (q31_t)0x4EBFE8A4, (q31_t)0x64E88926,\n\t(q31_t)0x4E708F8F, (q31_t)0x6526438E, (q31_t)0x4E210617,\n\t(q31_t)0x6563BF92, (q31_t)0x4DD14C6E, (q31_t)0x65A0FD0B,\n\t(q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4D31494B,\n\t(q31_t)0x661ABBC5, (q31_t)0x4CE10034, (q31_t)0x66573CBB,\n\t(q31_t)0x4C9087B1, (q31_t)0x66937E90, (q31_t)0x4C3FDFF3,\n\t(q31_t)0x66CF811F, (q31_t)0x4BEF092D, (q31_t)0x670B4443,\n\t(q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4B4CCF4D,\n\t(q31_t)0x67820BB6, (q31_t)0x4AFB6C97, (q31_t)0x67BD0FBC,\n\t(q31_t)0x4AA9DBA1, (q31_t)0x67F7D3C4, (q31_t)0x4A581C9D,\n\t(q31_t)0x683257AA, (q31_t)0x4A062FBD, (q31_t)0x686C9B4B,\n\t(q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x4961CD32,\n\t(q31_t)0x68E06129, (q31_t)0x490F57EE, (q31_t)0x6919E320,\n\t(q31_t)0x48BCB598, (q31_t)0x69532442, (q31_t)0x4869E664,\n\t(q31_t)0x698C246C, (q31_t)0x4816EA85, (q31_t)0x69C4E37A,\n\t(q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x47706D93,\n\t(q31_t)0x6A359DB9, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4,\n\t(q31_t)0x46C9405C, (q31_t)0x6AA551E8, (q31_t)0x46756827,\n\t(q31_t)0x6ADCC964, (q31_t)0x4621647C, (q31_t)0x6B13FEF5,\n\t(q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x4578DB93,\n\t(q31_t)0x6B81A3CD, (q31_t)0x452456BC, (q31_t)0x6BB812D0,\n\t(q31_t)0x44CFA73F, (q31_t)0x6BEE3F62, (q31_t)0x447ACD50,\n\t(q31_t)0x6C242960, (q31_t)0x4425C923, (q31_t)0x6C59D0A9,\n\t(q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x437B42E1,\n\t(q31_t)0x6CC45697, (q31_t)0x4325C135, (q31_t)0x6CF934FB,\n\t(q31_t)0x42D0161E, (q31_t)0x6D2DD027, (q31_t)0x427A41D0,\n\t(q31_t)0x6D6227FA, (q31_t)0x42244480, (q31_t)0x6D963C54,\n\t(q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4177CFB0,\n\t(q31_t)0x6DFD9A1B, (q31_t)0x4121589A, (q31_t)0x6E30E349,\n\t(q31_t)0x40CAB957, (q31_t)0x6E63E87F, (q31_t)0x4073F21D,\n\t(q31_t)0x6E96A99C, (q31_t)0x401D0320, (q31_t)0x6EC92682,\n\t(q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F6EAEB8,\n\t(q31_t)0x6F2D532C, (q31_t)0x3F1749B7, (q31_t)0x6F5F02B1,\n\t(q31_t)0x3EBFBDCC, (q31_t)0x6F906D84, (q31_t)0x3E680B2C,\n\t(q31_t)0x6FC19385, (q31_t)0x3E10320D, (q31_t)0x6FF27496,\n\t(q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D600D2B,\n\t(q31_t)0x70536771, (q31_t)0x3D07C1D5, (q31_t)0x708378FE,\n\t(q31_t)0x3CAF50DA, (q31_t)0x70B34524, (q31_t)0x3C56BA70,\n\t(q31_t)0x70E2CBC6, (q31_t)0x3BFDFECD, (q31_t)0x71120CC5,\n\t(q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3B4C18BA,\n\t(q31_t)0x716FBD68, (q31_t)0x3AF2EEB7, (q31_t)0x719E2CD2,\n\t(q31_t)0x3A99A057, (q31_t)0x71CC5626, (q31_t)0x3A402DD1,\n\t(q31_t)0x71FA3948, (q31_t)0x39E6975D, (q31_t)0x7227D61C,\n\t(q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x3932FF87,\n\t(q31_t)0x72823C66, (q31_t)0x38D8FE93, (q31_t)0x72AF05A6,\n\t(q31_t)0x387EDA8E, (q31_t)0x72DB8828, (q31_t)0x382493B0,\n\t(q31_t)0x7307C3D0, (q31_t)0x37CA2A30, (q31_t)0x7333B883,\n\t(q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x3714F02A,\n\t(q31_t)0x738ACC9E, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0,\n\t(q31_t)0x365F2E3B, (q31_t)0x73E0C3A3, (q31_t)0x36041AD9,\n\t(q31_t)0x740B53FA, (q31_t)0x35A8E624, (q31_t)0x74359CBD,\n\t(q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x34F219A7,\n\t(q31_t)0x7489571B, (q31_t)0x3496824F, (q31_t)0x74B2C883,\n\t(q31_t)0x343ACA87, (q31_t)0x74DBF1EF, (q31_t)0x33DEF287,\n\t(q31_t)0x7504D345, (q31_t)0x3382FA88, (q31_t)0x752D6C6C,\n\t(q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x32CAAB6F,\n\t(q31_t)0x757DC5CA, (q31_t)0x326E54C7, (q31_t)0x75A585CF,\n\t(q31_t)0x3211DF03, (q31_t)0x75CCFD42, (q31_t)0x31B54A5D,\n\t(q31_t)0x75F42C0A, (q31_t)0x3158970D, (q31_t)0x761B1211,\n\t(q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x309ED555,\n\t(q31_t)0x76680376, (q31_t)0x3041C760, (q31_t)0x768E0EA5,\n\t(q31_t)0x2FE49BA6, (q31_t)0x76B3D0B3, (q31_t)0x2F875262,\n\t(q31_t)0x76D94988, (q31_t)0x2F29EBCC, (q31_t)0x76FE790E,\n\t(q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E6EC792,\n\t(q31_t)0x7747FBCE, (q31_t)0x2E110A62, (q31_t)0x776C4EDB,\n\t(q31_t)0x2DB330C7, (q31_t)0x7790583D, (q31_t)0x2D553AFB,\n\t(q31_t)0x77B417DF, (q31_t)0x2CF72939, (q31_t)0x77D78DAA,\n\t(q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2C3AB2B9,\n\t(q31_t)0x781D9B64, (q31_t)0x2BDC4E6F, (q31_t)0x78403328,\n\t(q31_t)0x2B7DCF17, (q31_t)0x786280BF, (q31_t)0x2B1F34EB,\n\t(q31_t)0x78848413, (q31_t)0x2AC08025, (q31_t)0x78A63D10,\n\t(q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x2A02C7B8,\n\t(q31_t)0x78E8CFB1, (q31_t)0x29A3C484, (q31_t)0x7909A92C,\n\t(q31_t)0x2944A7A2, (q31_t)0x792A37FE, (q31_t)0x28E5714A,\n\t(q31_t)0x794A7C11, (q31_t)0x288621B9, (q31_t)0x796A7554,\n\t(q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27C737D2,\n\t(q31_t)0x79A98715, (q31_t)0x27679DF4, (q31_t)0x79C89F6D,\n\t(q31_t)0x2707EBC6, (q31_t)0x79E76CA6, (q31_t)0x26A82185,\n\t(q31_t)0x7A05EEAD, (q31_t)0x26483F6C, (q31_t)0x7A24256E,\n\t(q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x2588349D,\n\t(q31_t)0x7A5FB0D8, (q31_t)0x25280C5D, (q31_t)0x7A7D055B,\n\t(q31_t)0x24C7CD32, (q31_t)0x7A9A0E4F, (q31_t)0x24677757,\n\t(q31_t)0x7AB6CBA3, (q31_t)0x24070B07, (q31_t)0x7AD33D45,\n\t(q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x2345EFF7,\n\t(q31_t)0x7B0B3D2C, (q31_t)0x22E541AE, (q31_t)0x7B26CB4F,\n\t(q31_t)0x22847DDF, (q31_t)0x7B420D7A, (q31_t)0x2223A4C5,\n\t(q31_t)0x7B5D039D, (q31_t)0x21C2B69C, (q31_t)0x7B77ADA8,\n\t(q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x21009C0B,\n\t(q31_t)0x7BAC1D31, (q31_t)0x209F701C, (q31_t)0x7BC5E28F,\n\t(q31_t)0x203E300D, (q31_t)0x7BDF5B94, (q31_t)0x1FDCDC1A,\n\t(q31_t)0x7BF88830, (q31_t)0x1F7B7480, (q31_t)0x7C116853,\n\t(q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1EB86B46,\n\t(q31_t)0x7C4242F2, (q31_t)0x1E56CA1E, (q31_t)0x7C5A3D4F,\n\t(q31_t)0x1DF5163F, (q31_t)0x7C71EAF8, (q31_t)0x1D934FE5,\n\t(q31_t)0x7C894BDD, (q31_t)0x1D31774D, (q31_t)0x7CA05FF1,\n\t(q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C6D9053,\n\t(q31_t)0x7CCDA168, (q31_t)0x1C0B826A, (q31_t)0x7CE3CEB1,\n\t(q31_t)0x1BA96334, (q31_t)0x7CF9AEF0, (q31_t)0x1B4732EF,\n\t(q31_t)0x7D0F4218, (q31_t)0x1AE4F1D6, (q31_t)0x7D24881A,\n\t(q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x1A203E1B,\n\t(q31_t)0x7D4E2C7E, (q31_t)0x19BDCBF2, (q31_t)0x7D628AC5,\n\t(q31_t)0x195B49E9, (q31_t)0x7D769BB5, (q31_t)0x18F8B83C,\n\t(q31_t)0x7D8A5F3F, (q31_t)0x18961727, (q31_t)0x7D9DD55A,\n\t(q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x17D0A7BB,\n\t(q31_t)0x7DC3D90D, (q31_t)0x176DD9DE, (q31_t)0x7DD6668E,\n\t(q31_t)0x170AFD8D, (q31_t)0x7DE8A670, (q31_t)0x16A81305,\n\t(q31_t)0x7DFA98A7, (q31_t)0x16451A83, (q31_t)0x7E0C3D29,\n\t(q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x157F0086,\n\t(q31_t)0x7E2E9CDF, (q31_t)0x151BDF85, (q31_t)0x7E3F57FE,\n\t(q31_t)0x14B8B17F, (q31_t)0x7E4FC53E, (q31_t)0x145576B1,\n\t(q31_t)0x7E5FE493, (q31_t)0x13F22F57, (q31_t)0x7E6FB5F3,\n\t(q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x132B7BF9,\n\t(q31_t)0x7E8E6EB1, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC,\n\t(q31_t)0x1264994E, (q31_t)0x7EABEF2C, (q31_t)0x120116D4,\n\t(q31_t)0x7EBA3A39, (q31_t)0x119D8940, (q31_t)0x7EC8371A,\n\t(q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x10D64DBC,\n\t(q31_t)0x7EE34635, (q31_t)0x1072A047, (q31_t)0x7EF0585F,\n\t(q31_t)0x100EE8AD, (q31_t)0x7EFD1C3C, (q31_t)0x0FAB272B,\n\t(q31_t)0x7F0991C3, (q31_t)0x0F475BFE, (q31_t)0x7F15B8EE,\n\t(q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0E7FA99D,\n\t(q31_t)0x7F2D1C0E, (q31_t)0x0E1BC2E3, (q31_t)0x7F3857F5,\n\t(q31_t)0x0DB7D376, (q31_t)0x7F434563, (q31_t)0x0D53DB92,\n\t(q31_t)0x7F4DE450, (q31_t)0x0CEFDB75, (q31_t)0x7F5834B6,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0C27C389,\n\t(q31_t)0x7F6BE9D4, (q31_t)0x0BC3AC35, (q31_t)0x7F754E7F,\n\t(q31_t)0x0B5F8D9F, (q31_t)0x7F7E648B, (q31_t)0x0AFB6805,\n\t(q31_t)0x7F872BF3, (q31_t)0x0A973BA5, (q31_t)0x7F8FA4AF,\n\t(q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x09CECF89,\n\t(q31_t)0x7F9FAA15, (q31_t)0x096A9049, (q31_t)0x7FA736B4,\n\t(q31_t)0x09064B3A, (q31_t)0x7FAE7494, (q31_t)0x08A2009A,\n\t(q31_t)0x7FB563B2, (q31_t)0x083DB0A7, (q31_t)0x7FBC040A,\n\t(q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x077501BE,\n\t(q31_t)0x7FC85853, (q31_t)0x0710A344, (q31_t)0x7FCE0C3E,\n\t(q31_t)0x06AC406F, (q31_t)0x7FD37152, (q31_t)0x0647D97C,\n\t(q31_t)0x7FD8878D, (q31_t)0x05E36EA9, (q31_t)0x7FDD4EEC,\n\t(q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x051A8E5C,\n\t(q31_t)0x7FE5F108, (q31_t)0x04B6195D, (q31_t)0x7FE9CBC0,\n\t(q31_t)0x0451A176, (q31_t)0x7FED5790, (q31_t)0x03ED26E6,\n\t(q31_t)0x7FF09477, (q31_t)0x0388A9E9, (q31_t)0x7FF38273,\n\t(q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x02BFA9A4,\n\t(q31_t)0x7FF871A1, (q31_t)0x025B26D7, (q31_t)0x7FFA72D1,\n\t(q31_t)0x01F6A296, (q31_t)0x7FFC250F, (q31_t)0x01921D1F,\n\t(q31_t)0x7FFD885A, (q31_t)0x012D96B0, (q31_t)0x7FFE9CB2,\n\t(q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x006487E3,\n\t(q31_t)0x7FFFD885, (q31_t)0x00000000, (q31_t)0x7FFFFFFF,\n\t(q31_t)0xFF9B781D, (q31_t)0x7FFFD885, (q31_t)0xFF36F078,\n\t(q31_t)0x7FFF6216, (q31_t)0xFED2694F, (q31_t)0x7FFE9CB2,\n\t(q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFE095D69,\n\t(q31_t)0x7FFC250F, (q31_t)0xFDA4D928, (q31_t)0x7FFA72D1,\n\t(q31_t)0xFD40565B, (q31_t)0x7FF871A1, (q31_t)0xFCDBD541,\n\t(q31_t)0x7FF62182, (q31_t)0xFC775616, (q31_t)0x7FF38273,\n\t(q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFBAE5E89,\n\t(q31_t)0x7FED5790, (q31_t)0xFB49E6A2, (q31_t)0x7FE9CBC0,\n\t(q31_t)0xFAE571A4, (q31_t)0x7FE5F108, (q31_t)0xFA80FFCB,\n\t(q31_t)0x7FE1C76B, (q31_t)0xFA1C9156, (q31_t)0x7FDD4EEC,\n\t(q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF953BF90,\n\t(q31_t)0x7FD37152, (q31_t)0xF8EF5CBB, (q31_t)0x7FCE0C3E,\n\t(q31_t)0xF88AFE41, (q31_t)0x7FC85853, (q31_t)0xF826A461,\n\t(q31_t)0x7FC25596, (q31_t)0xF7C24F58, (q31_t)0x7FBC040A,\n\t(q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF6F9B4C5,\n\t(q31_t)0x7FAE7494, (q31_t)0xF6956FB6, (q31_t)0x7FA736B4,\n\t(q31_t)0xF6313076, (q31_t)0x7F9FAA15, (q31_t)0xF5CCF743,\n\t(q31_t)0x7F97CEBC, (q31_t)0xF568C45A, (q31_t)0x7F8FA4AF,\n\t(q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF4A07260,\n\t(q31_t)0x7F7E648B, (q31_t)0xF43C53CA, (q31_t)0x7F754E7F,\n\t(q31_t)0xF3D83C76, (q31_t)0x7F6BE9D4, (q31_t)0xF3742CA1,\n\t(q31_t)0x7F62368F, (q31_t)0xF310248A, (q31_t)0x7F5834B6,\n\t(q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF2482C89,\n\t(q31_t)0x7F434563, (q31_t)0xF1E43D1C, (q31_t)0x7F3857F5,\n\t(q31_t)0xF1805662, (q31_t)0x7F2D1C0E, (q31_t)0xF11C789A,\n\t(q31_t)0x7F2191B4, (q31_t)0xF0B8A401, (q31_t)0x7F15B8EE,\n\t(q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEFF11752,\n\t(q31_t)0x7EFD1C3C, (q31_t)0xEF8D5FB8, (q31_t)0x7EF0585F,\n\t(q31_t)0xEF29B243, (q31_t)0x7EE34635, (q31_t)0xEEC60F31,\n\t(q31_t)0x7ED5E5C6, (q31_t)0xEE6276BF, (q31_t)0x7EC8371A,\n\t(q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xED9B66B2,\n\t(q31_t)0x7EABEF2C, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC,\n\t(q31_t)0xECD48406, (q31_t)0x7E8E6EB1, (q31_t)0xEC71244F,\n\t(q31_t)0x7E7F3956, (q31_t)0xEC0DD0A8, (q31_t)0x7E6FB5F3,\n\t(q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEB474E80,\n\t(q31_t)0x7E4FC53E, (q31_t)0xEAE4207A, (q31_t)0x7E3F57FE,\n\t(q31_t)0xEA80FF79, (q31_t)0x7E2E9CDF, (q31_t)0xEA1DEBBB,\n\t(q31_t)0x7E1D93E9, (q31_t)0xE9BAE57C, (q31_t)0x7E0C3D29,\n\t(q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE8F50273,\n\t(q31_t)0x7DE8A670, (q31_t)0xE8922621, (q31_t)0x7DD6668E,\n\t(q31_t)0xE82F5844, (q31_t)0x7DC3D90D, (q31_t)0xE7CC9917,\n\t(q31_t)0x7DB0FDF7, (q31_t)0xE769E8D8, (q31_t)0x7D9DD55A,\n\t(q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE6A4B616,\n\t(q31_t)0x7D769BB5, (q31_t)0xE642340D, (q31_t)0x7D628AC5,\n\t(q31_t)0xE5DFC1E4, (q31_t)0x7D4E2C7E, (q31_t)0xE57D5FDA,\n\t(q31_t)0x7D3980EC, (q31_t)0xE51B0E2A, (q31_t)0x7D24881A,\n\t(q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE4569CCB,\n\t(q31_t)0x7CF9AEF0, (q31_t)0xE3F47D95, (q31_t)0x7CE3CEB1,\n\t(q31_t)0xE3926FAC, (q31_t)0x7CCDA168, (q31_t)0xE330734C,\n\t(q31_t)0x7CB72724, (q31_t)0xE2CE88B2, (q31_t)0x7CA05FF1,\n\t(q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE20AE9C1,\n\t(q31_t)0x7C71EAF8, (q31_t)0xE1A935E1, (q31_t)0x7C5A3D4F,\n\t(q31_t)0xE14794B9, (q31_t)0x7C4242F2, (q31_t)0xE0E60684,\n\t(q31_t)0x7C29FBEE, (q31_t)0xE0848B7F, (q31_t)0x7C116853,\n\t(q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDFC1CFF2,\n\t(q31_t)0x7BDF5B94, (q31_t)0xDF608FE3, (q31_t)0x7BC5E28F,\n\t(q31_t)0xDEFF63F4, (q31_t)0x7BAC1D31, (q31_t)0xDE9E4C60,\n\t(q31_t)0x7B920B89, (q31_t)0xDE3D4963, (q31_t)0x7B77ADA8,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDD7B8220,\n\t(q31_t)0x7B420D7A, (q31_t)0xDD1ABE51, (q31_t)0x7B26CB4F,\n\t(q31_t)0xDCBA1008, (q31_t)0x7B0B3D2C, (q31_t)0xDC597781,\n\t(q31_t)0x7AEF6323, (q31_t)0xDBF8F4F8, (q31_t)0x7AD33D45,\n\t(q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDB3832CD,\n\t(q31_t)0x7A9A0E4F, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B,\n\t(q31_t)0xDA77CB62, (q31_t)0x7A5FB0D8, (q31_t)0xDA17BA4A,\n\t(q31_t)0x7A4210D8, (q31_t)0xD9B7C093, (q31_t)0x7A24256E,\n\t(q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD8F81439,\n\t(q31_t)0x79E76CA6, (q31_t)0xD898620C, (q31_t)0x79C89F6D,\n\t(q31_t)0xD838C82D, (q31_t)0x79A98715, (q31_t)0xD7D946D7,\n\t(q31_t)0x798A23B1, (q31_t)0xD779DE46, (q31_t)0x796A7554,\n\t(q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD6BB585D,\n\t(q31_t)0x792A37FE, (q31_t)0xD65C3B7B, (q31_t)0x7909A92C,\n\t(q31_t)0xD5FD3847, (q31_t)0x78E8CFB1, (q31_t)0xD59E4EFE,\n\t(q31_t)0x78C7ABA1, (q31_t)0xD53F7FDA, (q31_t)0x78A63D10,\n\t(q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD48230E8,\n\t(q31_t)0x786280BF, (q31_t)0xD423B190, (q31_t)0x78403328,\n\t(q31_t)0xD3C54D46, (q31_t)0x781D9B64, (q31_t)0xD3670445,\n\t(q31_t)0x77FAB988, (q31_t)0xD308D6C6, (q31_t)0x77D78DAA,\n\t(q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD24CCF38,\n\t(q31_t)0x7790583D, (q31_t)0xD1EEF59E, (q31_t)0x776C4EDB,\n\t(q31_t)0xD191386D, (q31_t)0x7747FBCE, (q31_t)0xD13397E1,\n\t(q31_t)0x77235F2D, (q31_t)0xD0D61433, (q31_t)0x76FE790E,\n\t(q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xD01B6459,\n\t(q31_t)0x76B3D0B3, (q31_t)0xCFBE389F, (q31_t)0x768E0EA5,\n\t(q31_t)0xCF612AAA, (q31_t)0x76680376, (q31_t)0xCF043AB2,\n\t(q31_t)0x7641AF3C, (q31_t)0xCEA768F2, (q31_t)0x761B1211,\n\t(q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCDEE20FC,\n\t(q31_t)0x75CCFD42, (q31_t)0xCD91AB38, (q31_t)0x75A585CF,\n\t(q31_t)0xCD355490, (q31_t)0x757DC5CA, (q31_t)0xCCD91D3D,\n\t(q31_t)0x7555BD4B, (q31_t)0xCC7D0577, (q31_t)0x752D6C6C,\n\t(q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCBC53578,\n\t(q31_t)0x74DBF1EF, (q31_t)0xCB697DB0, (q31_t)0x74B2C883,\n\t(q31_t)0xCB0DE658, (q31_t)0x7489571B, (q31_t)0xCAB26FA9,\n\t(q31_t)0x745F9DD1, (q31_t)0xCA5719DB, (q31_t)0x74359CBD,\n\t(q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC9A0D1C4,\n\t(q31_t)0x73E0C3A3, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0,\n\t(q31_t)0xC8EB0FD6, (q31_t)0x738ACC9E, (q31_t)0xC89061BA,\n\t(q31_t)0x735F6626, (q31_t)0xC835D5D0, (q31_t)0x7333B883,\n\t(q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC7812571,\n\t(q31_t)0x72DB8828, (q31_t)0xC727016C, (q31_t)0x72AF05A6,\n\t(q31_t)0xC6CD0079, (q31_t)0x72823C66, (q31_t)0xC67322CD,\n\t(q31_t)0x72552C84, (q31_t)0xC61968A2, (q31_t)0x7227D61C,\n\t(q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC5665FA8,\n\t(q31_t)0x71CC5626, (q31_t)0xC50D1148, (q31_t)0x719E2CD2,\n\t(q31_t)0xC4B3E746, (q31_t)0x716FBD68, (q31_t)0xC45AE1D7,\n\t(q31_t)0x71410804, (q31_t)0xC4020132, (q31_t)0x71120CC5,\n\t(q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC350AF25,\n\t(q31_t)0x70B34524, (q31_t)0xC2F83E2A, (q31_t)0x708378FE,\n\t(q31_t)0xC29FF2D4, (q31_t)0x70536771, (q31_t)0xC247CD5A,\n\t(q31_t)0x70231099, (q31_t)0xC1EFCDF2, (q31_t)0x6FF27496,\n\t(q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC1404233,\n\t(q31_t)0x6F906D84, (q31_t)0xC0E8B648, (q31_t)0x6F5F02B1,\n\t(q31_t)0xC0915147, (q31_t)0x6F2D532C, (q31_t)0xC03A1368,\n\t(q31_t)0x6EFB5F12, (q31_t)0xBFE2FCDF, (q31_t)0x6EC92682,\n\t(q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBF3546A8,\n\t(q31_t)0x6E63E87F, (q31_t)0xBEDEA765, (q31_t)0x6E30E349,\n\t(q31_t)0xBE88304F, (q31_t)0x6DFD9A1B, (q31_t)0xBE31E19B,\n\t(q31_t)0x6DCA0D14, (q31_t)0xBDDBBB7F, (q31_t)0x6D963C54,\n\t(q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBD2FE9E1,\n\t(q31_t)0x6D2DD027, (q31_t)0xBCDA3ECA, (q31_t)0x6CF934FB,\n\t(q31_t)0xBC84BD1E, (q31_t)0x6CC45697, (q31_t)0xBC2F6513,\n\t(q31_t)0x6C8F351C, (q31_t)0xBBDA36DC, (q31_t)0x6C59D0A9,\n\t(q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBB3058C0,\n\t(q31_t)0x6BEE3F62, (q31_t)0xBADBA943, (q31_t)0x6BB812D0,\n\t(q31_t)0xBA87246C, (q31_t)0x6B81A3CD, (q31_t)0xBA32CA70,\n\t(q31_t)0x6B4AF278, (q31_t)0xB9DE9B83, (q31_t)0x6B13FEF5,\n\t(q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB936BFA3,\n\t(q31_t)0x6AA551E8, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4,\n\t(q31_t)0xB88F926C, (q31_t)0x6A359DB9, (q31_t)0xB83C3DD1,\n\t(q31_t)0x69FD614A, (q31_t)0xB7E9157A, (q31_t)0x69C4E37A,\n\t(q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB7434A67,\n\t(q31_t)0x69532442, (q31_t)0xB6F0A811, (q31_t)0x6919E320,\n\t(q31_t)0xB69E32CD, (q31_t)0x68E06129, (q31_t)0xB64BEACC,\n\t(q31_t)0x68A69E81, (q31_t)0xB5F9D042, (q31_t)0x686C9B4B,\n\t(q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB556245E,\n\t(q31_t)0x67F7D3C4, (q31_t)0xB5049368, (q31_t)0x67BD0FBC,\n\t(q31_t)0xB4B330B2, (q31_t)0x67820BB6, (q31_t)0xB461FC70,\n\t(q31_t)0x6746C7D7, (q31_t)0xB410F6D2, (q31_t)0x670B4443,\n\t(q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB36F784E,\n\t(q31_t)0x66937E90, (q31_t)0xB31EFFCB, (q31_t)0x66573CBB,\n\t(q31_t)0xB2CEB6B5, (q31_t)0x661ABBC5, (q31_t)0xB27E9D3B,\n\t(q31_t)0x65DDFBD3, (q31_t)0xB22EB392, (q31_t)0x65A0FD0B,\n\t(q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB18F7070,\n\t(q31_t)0x6526438E, (q31_t)0xB140175B, (q31_t)0x64E88926,\n\t(q31_t)0xB0F0EEDA, (q31_t)0x64AA907F, (q31_t)0xB0A1F71C,\n\t(q31_t)0x646C59BF, (q31_t)0xB0533055, (q31_t)0x642DE50D,\n\t(q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAFB63667,\n\t(q31_t)0x63B0426D, (q31_t)0xAF6803A1, (q31_t)0x637114CC,\n\t(q31_t)0xAF1A0293, (q31_t)0x6331A9D4, (q31_t)0xAECC336B,\n\t(q31_t)0x62F201AC, (q31_t)0xAE7E965B, (q31_t)0x62B21C7B,\n\t(q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xADE3F33E,\n\t(q31_t)0x62319B9D, (q31_t)0xAD96ED91, (q31_t)0x61F1003E,\n\t(q31_t)0xAD4A1ABA, (q31_t)0x61B02876, (q31_t)0xACFD7AE8,\n\t(q31_t)0x616F146B, (q31_t)0xACB10E4A, (q31_t)0x612DC446,\n\t(q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAC18CF68,\n\t(q31_t)0x60AA704F, (q31_t)0xABCCFD82, (q31_t)0x60686CCE,\n\t(q31_t)0xAB815F8C, (q31_t)0x60262DD5, (q31_t)0xAB35F5B5,\n\t(q31_t)0x5FE3B38D, (q31_t)0xAAEAC02B, (q31_t)0x5FA0FE1E,\n\t(q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA54F2B9,\n\t(q31_t)0x5F1AE273, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89,\n\t(q31_t)0xA9BFF8A8, (q31_t)0x5E93DC1F, (q31_t)0xA975CB56,\n\t(q31_t)0x5E50015D, (q31_t)0xA92BD366, (q31_t)0x5E0BEC6E,\n\t(q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA8988463,\n\t(q31_t)0x5D8314B0, (q31_t)0xA84F2DA9, (q31_t)0x5D3E5236,\n\t(q31_t)0xA8060D08, (q31_t)0x5CF95638, (q31_t)0xA7BD22AB,\n\t(q31_t)0x5CB420DF, (q31_t)0xA7746EC0, (q31_t)0x5C6EB258,\n\t(q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA6E3AAF2,\n\t(q31_t)0x5BE32A67, (q31_t)0xA69B9B68, (q31_t)0x5B9D1153,\n\t(q31_t)0xA653C302, (q31_t)0x5B56BFBD, (q31_t)0xA60C21ED,\n\t(q31_t)0x5B1035CF, (q31_t)0xA5C4B855, (q31_t)0x5AC973B4,\n\t(q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA5368C4B,\n\t(q31_t)0x5A3B47AA, (q31_t)0xA4EFCA31, (q31_t)0x59F3DE12,\n\t(q31_t)0xA4A94042, (q31_t)0x59AC3CFD, (q31_t)0xA462EEAC,\n\t(q31_t)0x59646497, (q31_t)0xA41CD598, (q31_t)0x591C550E,\n\t(q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA3914DA7,\n\t(q31_t)0x588B913F, (q31_t)0xA34BDF20, (q31_t)0x5842DD54,\n\t(q31_t)0xA306A9C7, (q31_t)0x57F9F2F7, (q31_t)0xA2C1ADC9,\n\t(q31_t)0x57B0D256, (q31_t)0xA27CEB4F, (q31_t)0x57677B9D,\n\t(q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1F41391,\n\t(q31_t)0x56D42C99, (q31_t)0xA1AFFEA2, (q31_t)0x568A34A9,\n\t(q31_t)0xA16C23E1, (q31_t)0x56400757, (q31_t)0xA1288376,\n\t(q31_t)0x55F5A4D2, (q31_t)0xA0E51D8C, (q31_t)0x55AB0D46,\n\t(q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA05F01E1,\n\t(q31_t)0x55153FD4, (q31_t)0xA01C4C72, (q31_t)0x54CA0A4A,\n\t(q31_t)0x9FD9D22A, (q31_t)0x547EA073, (q31_t)0x9F979331,\n\t(q31_t)0x5433027D, (q31_t)0x9F558FB0, (q31_t)0x53E73097,\n\t(q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9ED23BB9,\n\t(q31_t)0x534EF1B5, (q31_t)0x9E90EB94, (q31_t)0x53028517,\n\t(q31_t)0x9E4FD789, (q31_t)0x52B5E545, (q31_t)0x9E0EFFC1,\n\t(q31_t)0x5269126E, (q31_t)0x9DCE6462, (q31_t)0x521C0CC1,\n\t(q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D4DE384,\n\t(q31_t)0x518169A4, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94,\n\t(q31_t)0x9CCE562B, (q31_t)0x50E5FD6C, (q31_t)0x9C8EEB33,\n\t(q31_t)0x5097FC5E, (q31_t)0x9C4FBD92, (q31_t)0x5049C999,\n\t(q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9BD21AF2,\n\t(q31_t)0x4FACCFAB, (q31_t)0x9B93A640, (q31_t)0x4F5E08E3,\n\t(q31_t)0x9B556F80, (q31_t)0x4F0F1126, (q31_t)0x9B1776D9,\n\t(q31_t)0x4EBFE8A4, (q31_t)0x9AD9BC71, (q31_t)0x4E708F8F,\n\t(q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A5F02F5,\n\t(q31_t)0x4DD14C6E, (q31_t)0x9A22042C, (q31_t)0x4D8162C4,\n\t(q31_t)0x99E5443A, (q31_t)0x4D31494B, (q31_t)0x99A8C344,\n\t(q31_t)0x4CE10034, (q31_t)0x996C816F, (q31_t)0x4C9087B1,\n\t(q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x98F4BBBC,\n\t(q31_t)0x4BEF092D, (q31_t)0x98B93828, (q31_t)0x4B9E038F,\n\t(q31_t)0x987DF449, (q31_t)0x4B4CCF4D, (q31_t)0x9842F043,\n\t(q31_t)0x4AFB6C97, (q31_t)0x98082C3B, (q31_t)0x4AA9DBA1,\n\t(q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x979364B5,\n\t(q31_t)0x4A062FBD, (q31_t)0x9759617E, (q31_t)0x49B41533,\n\t(q31_t)0x971F9ED6, (q31_t)0x4961CD32, (q31_t)0x96E61CDF,\n\t(q31_t)0x490F57EE, (q31_t)0x96ACDBBD, (q31_t)0x48BCB598,\n\t(q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x963B1C85,\n\t(q31_t)0x4816EA85, (q31_t)0x96029EB5, (q31_t)0x47C3C22E,\n\t(q31_t)0x95CA6246, (q31_t)0x47706D93, (q31_t)0x9592675B,\n\t(q31_t)0x471CECE6, (q31_t)0x955AAE17, (q31_t)0x46C9405C,\n\t(q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x94EC010B,\n\t(q31_t)0x4621647C, (q31_t)0x94B50D87, (q31_t)0x45CD358F,\n\t(q31_t)0x947E5C32, (q31_t)0x4578DB93, (q31_t)0x9447ED2F,\n\t(q31_t)0x452456BC, (q31_t)0x9411C09D, (q31_t)0x44CFA73F,\n\t(q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x93A62F56,\n\t(q31_t)0x4425C923, (q31_t)0x9370CAE4, (q31_t)0x43D09AEC,\n\t(q31_t)0x933BA968, (q31_t)0x437B42E1, (q31_t)0x9306CB04,\n\t(q31_t)0x4325C135, (q31_t)0x92D22FD8, (q31_t)0x42D0161E,\n\t(q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9269C3AC,\n\t(q31_t)0x42244480, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64,\n\t(q31_t)0x920265E4, (q31_t)0x4177CFB0, (q31_t)0x91CF1CB6,\n\t(q31_t)0x4121589A, (q31_t)0x919C1780, (q31_t)0x40CAB957,\n\t(q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x9136D97D,\n\t(q31_t)0x401D0320, (q31_t)0x9104A0ED, (q31_t)0x3FC5EC97,\n\t(q31_t)0x90D2ACD3, (q31_t)0x3F6EAEB8, (q31_t)0x90A0FD4E,\n\t(q31_t)0x3F1749B7, (q31_t)0x906F927B, (q31_t)0x3EBFBDCC,\n\t(q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x900D8B69,\n\t(q31_t)0x3E10320D, (q31_t)0x8FDCEF66, (q31_t)0x3DB832A5,\n\t(q31_t)0x8FAC988E, (q31_t)0x3D600D2B, (q31_t)0x8F7C8701,\n\t(q31_t)0x3D07C1D5, (q31_t)0x8F4CBADB, (q31_t)0x3CAF50DA,\n\t(q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8EEDF33B,\n\t(q31_t)0x3BFDFECD, (q31_t)0x8EBEF7FB, (q31_t)0x3BA51E29,\n\t(q31_t)0x8E904298, (q31_t)0x3B4C18BA, (q31_t)0x8E61D32D,\n\t(q31_t)0x3AF2EEB7, (q31_t)0x8E33A9D9, (q31_t)0x3A99A057,\n\t(q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DD829E4,\n\t(q31_t)0x39E6975D, (q31_t)0x8DAAD37B, (q31_t)0x398CDD32,\n\t(q31_t)0x8D7DC399, (q31_t)0x3932FF87, (q31_t)0x8D50FA59,\n\t(q31_t)0x38D8FE93, (q31_t)0x8D2477D8, (q31_t)0x387EDA8E,\n\t(q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CCC477D,\n\t(q31_t)0x37CA2A30, (q31_t)0x8CA099D9, (q31_t)0x376F9E46,\n\t(q31_t)0x8C753361, (q31_t)0x3714F02A, (q31_t)0x8C4A142F,\n\t(q31_t)0x36BA2013, (q31_t)0x8C1F3C5C, (q31_t)0x365F2E3B,\n\t(q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BCA6342,\n\t(q31_t)0x35A8E624, (q31_t)0x8BA0622F, (q31_t)0x354D9056,\n\t(q31_t)0x8B76A8E4, (q31_t)0x34F219A7, (q31_t)0x8B4D377C,\n\t(q31_t)0x3496824F, (q31_t)0x8B240E10, (q31_t)0x343ACA87,\n\t(q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AD29393,\n\t(q31_t)0x3382FA88, (q31_t)0x8AAA42B4, (q31_t)0x3326E2C2,\n\t(q31_t)0x8A823A35, (q31_t)0x32CAAB6F, (q31_t)0x8A5A7A30,\n\t(q31_t)0x326E54C7, (q31_t)0x8A3302BD, (q31_t)0x3211DF03,\n\t(q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89E4EDEE,\n\t(q31_t)0x3158970D, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D,\n\t(q31_t)0x8997FC89, (q31_t)0x309ED555, (q31_t)0x8971F15A,\n\t(q31_t)0x3041C760, (q31_t)0x894C2F4C, (q31_t)0x2FE49BA6,\n\t(q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x890186F1,\n\t(q31_t)0x2F29EBCC, (q31_t)0x88DCA0D3, (q31_t)0x2ECC681E,\n\t(q31_t)0x88B80431, (q31_t)0x2E6EC792, (q31_t)0x8893B124,\n\t(q31_t)0x2E110A62, (q31_t)0x886FA7C2, (q31_t)0x2DB330C7,\n\t(q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x88287255,\n\t(q31_t)0x2CF72939, (q31_t)0x88054677, (q31_t)0x2C98FBBA,\n\t(q31_t)0x87E2649B, (q31_t)0x2C3AB2B9, (q31_t)0x87BFCCD7,\n\t(q31_t)0x2BDC4E6F, (q31_t)0x879D7F40, (q31_t)0x2B7DCF17,\n\t(q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8759C2EF,\n\t(q31_t)0x2AC08025, (q31_t)0x8738545E, (q31_t)0x2A61B101,\n\t(q31_t)0x8717304E, (q31_t)0x2A02C7B8, (q31_t)0x86F656D3,\n\t(q31_t)0x29A3C484, (q31_t)0x86D5C802, (q31_t)0x2944A7A2,\n\t(q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x86958AAB,\n\t(q31_t)0x288621B9, (q31_t)0x8675DC4E, (q31_t)0x2826B928,\n\t(q31_t)0x865678EA, (q31_t)0x27C737D2, (q31_t)0x86376092,\n\t(q31_t)0x27679DF4, (q31_t)0x86189359, (q31_t)0x2707EBC6,\n\t(q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85DBDA91,\n\t(q31_t)0x26483F6C, (q31_t)0x85BDEF27, (q31_t)0x25E845B5,\n\t(q31_t)0x85A04F28, (q31_t)0x2588349D, (q31_t)0x8582FAA4,\n\t(q31_t)0x25280C5D, (q31_t)0x8565F1B0, (q31_t)0x24C7CD32,\n\t(q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x852CC2BA,\n\t(q31_t)0x24070B07, (q31_t)0x85109CDC, (q31_t)0x23A6887E,\n\t(q31_t)0x84F4C2D3, (q31_t)0x2345EFF7, (q31_t)0x84D934B0,\n\t(q31_t)0x22E541AE, (q31_t)0x84BDF285, (q31_t)0x22847DDF,\n\t(q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x84885257,\n\t(q31_t)0x21C2B69C, (q31_t)0x846DF476, (q31_t)0x2161B39F,\n\t(q31_t)0x8453E2CE, (q31_t)0x21009C0B, (q31_t)0x843A1D70,\n\t(q31_t)0x209F701C, (q31_t)0x8420A46B, (q31_t)0x203E300D,\n\t(q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83EE97AC,\n\t(q31_t)0x1F7B7480, (q31_t)0x83D60411, (q31_t)0x1F19F97B,\n\t(q31_t)0x83BDBD0D, (q31_t)0x1EB86B46, (q31_t)0x83A5C2B0,\n\t(q31_t)0x1E56CA1E, (q31_t)0x838E1507, (q31_t)0x1DF5163F,\n\t(q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x835FA00E,\n\t(q31_t)0x1D31774D, (q31_t)0x8348D8DB, (q31_t)0x1CCF8CB3,\n\t(q31_t)0x83325E97, (q31_t)0x1C6D9053, (q31_t)0x831C314E,\n\t(q31_t)0x1C0B826A, (q31_t)0x8306510F, (q31_t)0x1BA96334,\n\t(q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82DB77E5,\n\t(q31_t)0x1AE4F1D6, (q31_t)0x82C67F13, (q31_t)0x1A82A025,\n\t(q31_t)0x82B1D381, (q31_t)0x1A203E1B, (q31_t)0x829D753A,\n\t(q31_t)0x19BDCBF2, (q31_t)0x8289644A, (q31_t)0x195B49E9,\n\t(q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x82622AA5,\n\t(q31_t)0x18961727, (q31_t)0x824F0208, (q31_t)0x183366E8,\n\t(q31_t)0x823C26F2, (q31_t)0x17D0A7BB, (q31_t)0x82299971,\n\t(q31_t)0x176DD9DE, (q31_t)0x8217598F, (q31_t)0x170AFD8D,\n\t(q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81F3C2D7,\n\t(q31_t)0x16451A83, (q31_t)0x81E26C16, (q31_t)0x15E21444,\n\t(q31_t)0x81D16320, (q31_t)0x157F0086, (q31_t)0x81C0A801,\n\t(q31_t)0x151BDF85, (q31_t)0x81B03AC1, (q31_t)0x14B8B17F,\n\t(q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x81904A0C,\n\t(q31_t)0x13F22F57, (q31_t)0x8180C6A9, (q31_t)0x138EDBB0,\n\t(q31_t)0x8171914E, (q31_t)0x132B7BF9, (q31_t)0x8162AA03,\n\t(q31_t)0x12C8106E, (q31_t)0x815410D3, (q31_t)0x1264994E,\n\t(q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x8137C8E6,\n\t(q31_t)0x119D8940, (q31_t)0x812A1A39, (q31_t)0x1139F0CE,\n\t(q31_t)0x811CB9CA, (q31_t)0x10D64DBC, (q31_t)0x810FA7A0,\n\t(q31_t)0x1072A047, (q31_t)0x8102E3C3, (q31_t)0x100EE8AD,\n\t(q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80EA4712,\n\t(q31_t)0x0F475BFE, (q31_t)0x80DE6E4C, (q31_t)0x0EE38765,\n\t(q31_t)0x80D2E3F1, (q31_t)0x0E7FA99D, (q31_t)0x80C7A80A,\n\t(q31_t)0x0E1BC2E3, (q31_t)0x80BCBA9C, (q31_t)0x0DB7D376,\n\t(q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x80A7CB49,\n\t(q31_t)0x0CEFDB75, (q31_t)0x809DC970, (q31_t)0x0C8BD35E,\n\t(q31_t)0x8094162B, (q31_t)0x0C27C389, (q31_t)0x808AB180,\n\t(q31_t)0x0BC3AC35, (q31_t)0x80819B74, (q31_t)0x0B5F8D9F,\n\t(q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80705B50,\n\t(q31_t)0x0A973BA5, (q31_t)0x80683143, (q31_t)0x0A3308BC,\n\t(q31_t)0x806055EA, (q31_t)0x09CECF89, (q31_t)0x8058C94C,\n\t(q31_t)0x096A9049, (q31_t)0x80518B6B, (q31_t)0x09064B3A,\n\t(q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x8043FBF6,\n\t(q31_t)0x083DB0A7, (q31_t)0x803DAA69, (q31_t)0x07D95B9E,\n\t(q31_t)0x8037A7AC, (q31_t)0x077501BE, (q31_t)0x8031F3C1,\n\t(q31_t)0x0710A344, (q31_t)0x802C8EAD, (q31_t)0x06AC406F,\n\t(q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x8022B113,\n\t(q31_t)0x05E36EA9, (q31_t)0x801E3894, (q31_t)0x057F0034,\n\t(q31_t)0x801A0EF7, (q31_t)0x051A8E5C, (q31_t)0x80163440,\n\t(q31_t)0x04B6195D, (q31_t)0x8012A86F, (q31_t)0x0451A176,\n\t(q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x800C7D8C,\n\t(q31_t)0x0388A9E9, (q31_t)0x8009DE7D, (q31_t)0x03242ABF,\n\t(q31_t)0x80078E5E, (q31_t)0x02BFA9A4, (q31_t)0x80058D2E,\n\t(q31_t)0x025B26D7, (q31_t)0x8003DAF0, (q31_t)0x01F6A296,\n\t(q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x8001634D,\n\t(q31_t)0x012D96B0, (q31_t)0x80009DE9, (q31_t)0x00C90F88,\n\t(q31_t)0x8000277A, (q31_t)0x006487E3, (q31_t)0x80000000,\n\t(q31_t)0x00000000, (q31_t)0x8000277A, (q31_t)0xFF9B781D,\n\t(q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x8001634D,\n\t(q31_t)0xFED2694F, (q31_t)0x800277A5, (q31_t)0xFE6DE2E0,\n\t(q31_t)0x8003DAF0, (q31_t)0xFE095D69, (q31_t)0x80058D2E,\n\t(q31_t)0xFDA4D928, (q31_t)0x80078E5E, (q31_t)0xFD40565B,\n\t(q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800C7D8C,\n\t(q31_t)0xFC775616, (q31_t)0x800F6B88, (q31_t)0xFC12D919,\n\t(q31_t)0x8012A86F, (q31_t)0xFBAE5E89, (q31_t)0x80163440,\n\t(q31_t)0xFB49E6A2, (q31_t)0x801A0EF7, (q31_t)0xFAE571A4,\n\t(q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x8022B113,\n\t(q31_t)0xFA1C9156, (q31_t)0x80277872, (q31_t)0xF9B82683,\n\t(q31_t)0x802C8EAD, (q31_t)0xF953BF90, (q31_t)0x8031F3C1,\n\t(q31_t)0xF8EF5CBB, (q31_t)0x8037A7AC, (q31_t)0xF88AFE41,\n\t(q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8043FBF6,\n\t(q31_t)0xF7C24F58, (q31_t)0x804A9C4D, (q31_t)0xF75DFF65,\n\t(q31_t)0x80518B6B, (q31_t)0xF6F9B4C5, (q31_t)0x8058C94C,\n\t(q31_t)0xF6956FB6, (q31_t)0x806055EA, (q31_t)0xF6313076,\n\t(q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x80705B50,\n\t(q31_t)0xF568C45A, (q31_t)0x8078D40D, (q31_t)0xF50497FA,\n\t(q31_t)0x80819B74, (q31_t)0xF4A07260, (q31_t)0x808AB180,\n\t(q31_t)0xF43C53CA, (q31_t)0x8094162B, (q31_t)0xF3D83C76,\n\t(q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80A7CB49,\n\t(q31_t)0xF310248A, (q31_t)0x80B21BAF, (q31_t)0xF2AC246D,\n\t(q31_t)0x80BCBA9C, (q31_t)0xF2482C89, (q31_t)0x80C7A80A,\n\t(q31_t)0xF1E43D1C, (q31_t)0x80D2E3F1, (q31_t)0xF1805662,\n\t(q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80EA4712,\n\t(q31_t)0xF0B8A401, (q31_t)0x80F66E3C, (q31_t)0xF054D8D4,\n\t(q31_t)0x8102E3C3, (q31_t)0xEFF11752, (q31_t)0x810FA7A0,\n\t(q31_t)0xEF8D5FB8, (q31_t)0x811CB9CA, (q31_t)0xEF29B243,\n\t(q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8137C8E6,\n\t(q31_t)0xEE6276BF, (q31_t)0x8145C5C6, (q31_t)0xEDFEE92B,\n\t(q31_t)0x815410D3, (q31_t)0xED9B66B2, (q31_t)0x8162AA03,\n\t(q31_t)0xED37EF91, (q31_t)0x8171914E, (q31_t)0xECD48406,\n\t(q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81904A0C,\n\t(q31_t)0xEC0DD0A8, (q31_t)0x81A01B6C, (q31_t)0xEBAA894E,\n\t(q31_t)0x81B03AC1, (q31_t)0xEB474E80, (q31_t)0x81C0A801,\n\t(q31_t)0xEAE4207A, (q31_t)0x81D16320, (q31_t)0xEA80FF79,\n\t(q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x81F3C2D7,\n\t(q31_t)0xE9BAE57C, (q31_t)0x82056758, (q31_t)0xE957ECFB,\n\t(q31_t)0x8217598F, (q31_t)0xE8F50273, (q31_t)0x82299971,\n\t(q31_t)0xE8922621, (q31_t)0x823C26F2, (q31_t)0xE82F5844,\n\t(q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x82622AA5,\n\t(q31_t)0xE769E8D8, (q31_t)0x8275A0C0, (q31_t)0xE70747C3,\n\t(q31_t)0x8289644A, (q31_t)0xE6A4B616, (q31_t)0x829D753A,\n\t(q31_t)0xE642340D, (q31_t)0x82B1D381, (q31_t)0xE5DFC1E4,\n\t(q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82DB77E5,\n\t(q31_t)0xE51B0E2A, (q31_t)0x82F0BDE8, (q31_t)0xE4B8CD10,\n\t(q31_t)0x8306510F, (q31_t)0xE4569CCB, (q31_t)0x831C314E,\n\t(q31_t)0xE3F47D95, (q31_t)0x83325E97, (q31_t)0xE3926FAC,\n\t(q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x835FA00E,\n\t(q31_t)0xE2CE88B2, (q31_t)0x8376B422, (q31_t)0xE26CB01A,\n\t(q31_t)0x838E1507, (q31_t)0xE20AE9C1, (q31_t)0x83A5C2B0,\n\t(q31_t)0xE1A935E1, (q31_t)0x83BDBD0D, (q31_t)0xE14794B9,\n\t(q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x83EE97AC,\n\t(q31_t)0xE0848B7F, (q31_t)0x840777CF, (q31_t)0xE02323E5,\n\t(q31_t)0x8420A46B, (q31_t)0xDFC1CFF2, (q31_t)0x843A1D70,\n\t(q31_t)0xDF608FE3, (q31_t)0x8453E2CE, (q31_t)0xDEFF63F4,\n\t(q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x84885257,\n\t(q31_t)0xDE3D4963, (q31_t)0x84A2FC62, (q31_t)0xDDDC5B3A,\n\t(q31_t)0x84BDF285, (q31_t)0xDD7B8220, (q31_t)0x84D934B0,\n\t(q31_t)0xDD1ABE51, (q31_t)0x84F4C2D3, (q31_t)0xDCBA1008,\n\t(q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x852CC2BA,\n\t(q31_t)0xDBF8F4F8, (q31_t)0x8549345C, (q31_t)0xDB9888A8,\n\t(q31_t)0x8565F1B0, (q31_t)0xDB3832CD, (q31_t)0x8582FAA4,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x85A04F28, (q31_t)0xDA77CB62,\n\t(q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85DBDA91,\n\t(q31_t)0xD9B7C093, (q31_t)0x85FA1152, (q31_t)0xD957DE7A,\n\t(q31_t)0x86189359, (q31_t)0xD8F81439, (q31_t)0x86376092,\n\t(q31_t)0xD898620C, (q31_t)0x865678EA, (q31_t)0xD838C82D,\n\t(q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86958AAB,\n\t(q31_t)0xD779DE46, (q31_t)0x86B583EE, (q31_t)0xD71A8EB5,\n\t(q31_t)0x86D5C802, (q31_t)0xD6BB585D, (q31_t)0x86F656D3,\n\t(q31_t)0xD65C3B7B, (q31_t)0x8717304E, (q31_t)0xD5FD3847,\n\t(q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x8759C2EF,\n\t(q31_t)0xD53F7FDA, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14,\n\t(q31_t)0x879D7F40, (q31_t)0xD48230E8, (q31_t)0x87BFCCD7,\n\t(q31_t)0xD423B190, (q31_t)0x87E2649B, (q31_t)0xD3C54D46,\n\t(q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x88287255,\n\t(q31_t)0xD308D6C6, (q31_t)0x884BE820, (q31_t)0xD2AAC504,\n\t(q31_t)0x886FA7C2, (q31_t)0xD24CCF38, (q31_t)0x8893B124,\n\t(q31_t)0xD1EEF59E, (q31_t)0x88B80431, (q31_t)0xD191386D,\n\t(q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x890186F1,\n\t(q31_t)0xD0D61433, (q31_t)0x8926B677, (q31_t)0xD078AD9D,\n\t(q31_t)0x894C2F4C, (q31_t)0xD01B6459, (q31_t)0x8971F15A,\n\t(q31_t)0xCFBE389F, (q31_t)0x8997FC89, (q31_t)0xCF612AAA,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x89E4EDEE,\n\t(q31_t)0xCEA768F2, (q31_t)0x8A0BD3F5, (q31_t)0xCE4AB5A2,\n\t(q31_t)0x8A3302BD, (q31_t)0xCDEE20FC, (q31_t)0x8A5A7A30,\n\t(q31_t)0xCD91AB38, (q31_t)0x8A823A35, (q31_t)0xCD355490,\n\t(q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8AD29393,\n\t(q31_t)0xCC7D0577, (q31_t)0x8AFB2CBA, (q31_t)0xCC210D78,\n\t(q31_t)0x8B240E10, (q31_t)0xCBC53578, (q31_t)0x8B4D377C,\n\t(q31_t)0xCB697DB0, (q31_t)0x8B76A8E4, (q31_t)0xCB0DE658,\n\t(q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BCA6342,\n\t(q31_t)0xCA5719DB, (q31_t)0x8BF4AC05, (q31_t)0xC9FBE527,\n\t(q31_t)0x8C1F3C5C, (q31_t)0xC9A0D1C4, (q31_t)0x8C4A142F,\n\t(q31_t)0xC945DFEC, (q31_t)0x8C753361, (q31_t)0xC8EB0FD6,\n\t(q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CCC477D,\n\t(q31_t)0xC835D5D0, (q31_t)0x8CF83C30, (q31_t)0xC7DB6C50,\n\t(q31_t)0x8D2477D8, (q31_t)0xC7812571, (q31_t)0x8D50FA59,\n\t(q31_t)0xC727016C, (q31_t)0x8D7DC399, (q31_t)0xC6CD0079,\n\t(q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8DD829E4,\n\t(q31_t)0xC61968A2, (q31_t)0x8E05C6B7, (q31_t)0xC5BFD22E,\n\t(q31_t)0x8E33A9D9, (q31_t)0xC5665FA8, (q31_t)0x8E61D32D,\n\t(q31_t)0xC50D1148, (q31_t)0x8E904298, (q31_t)0xC4B3E746,\n\t(q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8EEDF33B,\n\t(q31_t)0xC4020132, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F,\n\t(q31_t)0x8F4CBADB, (q31_t)0xC350AF25, (q31_t)0x8F7C8701,\n\t(q31_t)0xC2F83E2A, (q31_t)0x8FAC988E, (q31_t)0xC29FF2D4,\n\t(q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x900D8B69,\n\t(q31_t)0xC1EFCDF2, (q31_t)0x903E6C7A, (q31_t)0xC197F4D3,\n\t(q31_t)0x906F927B, (q31_t)0xC1404233, (q31_t)0x90A0FD4E,\n\t(q31_t)0xC0E8B648, (q31_t)0x90D2ACD3, (q31_t)0xC0915147,\n\t(q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x9136D97D,\n\t(q31_t)0xBFE2FCDF, (q31_t)0x91695663, (q31_t)0xBF8C0DE2,\n\t(q31_t)0x919C1780, (q31_t)0xBF3546A8, (q31_t)0x91CF1CB6,\n\t(q31_t)0xBEDEA765, (q31_t)0x920265E4, (q31_t)0xBE88304F,\n\t(q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9269C3AC,\n\t(q31_t)0xBDDBBB7F, (q31_t)0x929DD805, (q31_t)0xBD85BE2F,\n\t(q31_t)0x92D22FD8, (q31_t)0xBD2FE9E1, (q31_t)0x9306CB04,\n\t(q31_t)0xBCDA3ECA, (q31_t)0x933BA968, (q31_t)0xBC84BD1E,\n\t(q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x93A62F56,\n\t(q31_t)0xBBDA36DC, (q31_t)0x93DBD69F, (q31_t)0xBB8532AF,\n\t(q31_t)0x9411C09D, (q31_t)0xBB3058C0, (q31_t)0x9447ED2F,\n\t(q31_t)0xBADBA943, (q31_t)0x947E5C32, (q31_t)0xBA87246C,\n\t(q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x94EC010B,\n\t(q31_t)0xB9DE9B83, (q31_t)0x9523369B, (q31_t)0xB98A97D8,\n\t(q31_t)0x955AAE17, (q31_t)0xB936BFA3, (q31_t)0x9592675B,\n\t(q31_t)0xB8E31319, (q31_t)0x95CA6246, (q31_t)0xB88F926C,\n\t(q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x963B1C85,\n\t(q31_t)0xB7E9157A, (q31_t)0x9673DB94, (q31_t)0xB796199B,\n\t(q31_t)0x96ACDBBD, (q31_t)0xB7434A67, (q31_t)0x96E61CDF,\n\t(q31_t)0xB6F0A811, (q31_t)0x971F9ED6, (q31_t)0xB69E32CD,\n\t(q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x979364B5,\n\t(q31_t)0xB5F9D042, (q31_t)0x97CDA855, (q31_t)0xB5A7E362,\n\t(q31_t)0x98082C3B, (q31_t)0xB556245E, (q31_t)0x9842F043,\n\t(q31_t)0xB5049368, (q31_t)0x987DF449, (q31_t)0xB4B330B2,\n\t(q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x98F4BBBC,\n\t(q31_t)0xB410F6D2, (q31_t)0x99307EE0, (q31_t)0xB3C0200C,\n\t(q31_t)0x996C816F, (q31_t)0xB36F784E, (q31_t)0x99A8C344,\n\t(q31_t)0xB31EFFCB, (q31_t)0x99E5443A, (q31_t)0xB2CEB6B5,\n\t(q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A5F02F5,\n\t(q31_t)0xB22EB392, (q31_t)0x9A9C406D, (q31_t)0xB1DEF9E8,\n\t(q31_t)0x9AD9BC71, (q31_t)0xB18F7070, (q31_t)0x9B1776D9,\n\t(q31_t)0xB140175B, (q31_t)0x9B556F80, (q31_t)0xB0F0EEDA,\n\t(q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9BD21AF2,\n\t(q31_t)0xB0533055, (q31_t)0x9C10CD70, (q31_t)0xB0049AB2,\n\t(q31_t)0x9C4FBD92, (q31_t)0xAFB63667, (q31_t)0x9C8EEB33,\n\t(q31_t)0xAF6803A1, (q31_t)0x9CCE562B, (q31_t)0xAF1A0293,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D4DE384,\n\t(q31_t)0xAE7E965B, (q31_t)0x9D8E0596, (q31_t)0xAE312B91,\n\t(q31_t)0x9DCE6462, (q31_t)0xADE3F33E, (q31_t)0x9E0EFFC1,\n\t(q31_t)0xAD96ED91, (q31_t)0x9E4FD789, (q31_t)0xAD4A1ABA,\n\t(q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9ED23BB9,\n\t(q31_t)0xACB10E4A, (q31_t)0x9F13C7D0, (q31_t)0xAC64D510,\n\t(q31_t)0x9F558FB0, (q31_t)0xAC18CF68, (q31_t)0x9F979331,\n\t(q31_t)0xABCCFD82, (q31_t)0x9FD9D22A, (q31_t)0xAB815F8C,\n\t(q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA05F01E1,\n\t(q31_t)0xAAEAC02B, (q31_t)0xA0A1F24C, (q31_t)0xAA9FBF1D,\n\t(q31_t)0xA0E51D8C, (q31_t)0xAA54F2B9, (q31_t)0xA1288376,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA16C23E1, (q31_t)0xA9BFF8A8,\n\t(q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA1F41391,\n\t(q31_t)0xA92BD366, (q31_t)0xA2386283, (q31_t)0xA8E21106,\n\t(q31_t)0xA27CEB4F, (q31_t)0xA8988463, (q31_t)0xA2C1ADC9,\n\t(q31_t)0xA84F2DA9, (q31_t)0xA306A9C7, (q31_t)0xA8060D08,\n\t(q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA3914DA7,\n\t(q31_t)0xA7746EC0, (q31_t)0xA3D6F533, (q31_t)0xA72BF173,\n\t(q31_t)0xA41CD598, (q31_t)0xA6E3AAF2, (q31_t)0xA462EEAC,\n\t(q31_t)0xA69B9B68, (q31_t)0xA4A94042, (q31_t)0xA653C302,\n\t(q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA5368C4B,\n\t(q31_t)0xA5C4B855, (q31_t)0xA57D8666, (q31_t)0xA57D8666,\n\t(q31_t)0xA5C4B855, (q31_t)0xA5368C4B, (q31_t)0xA60C21ED,\n\t(q31_t)0xA4EFCA31, (q31_t)0xA653C302, (q31_t)0xA4A94042,\n\t(q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA6E3AAF2,\n\t(q31_t)0xA41CD598, (q31_t)0xA72BF173, (q31_t)0xA3D6F533,\n\t(q31_t)0xA7746EC0, (q31_t)0xA3914DA7, (q31_t)0xA7BD22AB,\n\t(q31_t)0xA34BDF20, (q31_t)0xA8060D08, (q31_t)0xA306A9C7,\n\t(q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA8988463,\n\t(q31_t)0xA27CEB4F, (q31_t)0xA8E21106, (q31_t)0xA2386283,\n\t(q31_t)0xA92BD366, (q31_t)0xA1F41391, (q31_t)0xA975CB56,\n\t(q31_t)0xA1AFFEA2, (q31_t)0xA9BFF8A8, (q31_t)0xA16C23E1,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA54F2B9,\n\t(q31_t)0xA0E51D8C, (q31_t)0xAA9FBF1D, (q31_t)0xA0A1F24C,\n\t(q31_t)0xAAEAC02B, (q31_t)0xA05F01E1, (q31_t)0xAB35F5B5,\n\t(q31_t)0xA01C4C72, (q31_t)0xAB815F8C, (q31_t)0x9FD9D22A,\n\t(q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xAC18CF68,\n\t(q31_t)0x9F558FB0, (q31_t)0xAC64D510, (q31_t)0x9F13C7D0,\n\t(q31_t)0xACB10E4A, (q31_t)0x9ED23BB9, (q31_t)0xACFD7AE8,\n\t(q31_t)0x9E90EB94, (q31_t)0xAD4A1ABA, (q31_t)0x9E4FD789,\n\t(q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xADE3F33E,\n\t(q31_t)0x9DCE6462, (q31_t)0xAE312B91, (q31_t)0x9D8E0596,\n\t(q31_t)0xAE7E965B, (q31_t)0x9D4DE384, (q31_t)0xAECC336B,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAF1A0293, (q31_t)0x9CCE562B,\n\t(q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xAFB63667,\n\t(q31_t)0x9C4FBD92, (q31_t)0xB0049AB2, (q31_t)0x9C10CD70,\n\t(q31_t)0xB0533055, (q31_t)0x9BD21AF2, (q31_t)0xB0A1F71C,\n\t(q31_t)0x9B93A640, (q31_t)0xB0F0EEDA, (q31_t)0x9B556F80,\n\t(q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB18F7070,\n\t(q31_t)0x9AD9BC71, (q31_t)0xB1DEF9E8, (q31_t)0x9A9C406D,\n\t(q31_t)0xB22EB392, (q31_t)0x9A5F02F5, (q31_t)0xB27E9D3B,\n\t(q31_t)0x9A22042C, (q31_t)0xB2CEB6B5, (q31_t)0x99E5443A,\n\t(q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB36F784E,\n\t(q31_t)0x996C816F, (q31_t)0xB3C0200C, (q31_t)0x99307EE0,\n\t(q31_t)0xB410F6D2, (q31_t)0x98F4BBBC, (q31_t)0xB461FC70,\n\t(q31_t)0x98B93828, (q31_t)0xB4B330B2, (q31_t)0x987DF449,\n\t(q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB556245E,\n\t(q31_t)0x98082C3B, (q31_t)0xB5A7E362, (q31_t)0x97CDA855,\n\t(q31_t)0xB5F9D042, (q31_t)0x979364B5, (q31_t)0xB64BEACC,\n\t(q31_t)0x9759617E, (q31_t)0xB69E32CD, (q31_t)0x971F9ED6,\n\t(q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB7434A67,\n\t(q31_t)0x96ACDBBD, (q31_t)0xB796199B, (q31_t)0x9673DB94,\n\t(q31_t)0xB7E9157A, (q31_t)0x963B1C85, (q31_t)0xB83C3DD1,\n\t(q31_t)0x96029EB5, (q31_t)0xB88F926C, (q31_t)0x95CA6246,\n\t(q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB936BFA3,\n\t(q31_t)0x955AAE17, (q31_t)0xB98A97D8, (q31_t)0x9523369B,\n\t(q31_t)0xB9DE9B83, (q31_t)0x94EC010B, (q31_t)0xBA32CA70,\n\t(q31_t)0x94B50D87, (q31_t)0xBA87246C, (q31_t)0x947E5C32,\n\t(q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB3058C0,\n\t(q31_t)0x9411C09D, (q31_t)0xBB8532AF, (q31_t)0x93DBD69F,\n\t(q31_t)0xBBDA36DC, (q31_t)0x93A62F56, (q31_t)0xBC2F6513,\n\t(q31_t)0x9370CAE4, (q31_t)0xBC84BD1E, (q31_t)0x933BA968,\n\t(q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD2FE9E1,\n\t(q31_t)0x92D22FD8, (q31_t)0xBD85BE2F, (q31_t)0x929DD805,\n\t(q31_t)0xBDDBBB7F, (q31_t)0x9269C3AC, (q31_t)0xBE31E19B,\n\t(q31_t)0x9235F2EB, (q31_t)0xBE88304F, (q31_t)0x920265E4,\n\t(q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF3546A8,\n\t(q31_t)0x919C1780, (q31_t)0xBF8C0DE2, (q31_t)0x91695663,\n\t(q31_t)0xBFE2FCDF, (q31_t)0x9136D97D, (q31_t)0xC03A1368,\n\t(q31_t)0x9104A0ED, (q31_t)0xC0915147, (q31_t)0x90D2ACD3,\n\t(q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC1404233,\n\t(q31_t)0x906F927B, (q31_t)0xC197F4D3, (q31_t)0x903E6C7A,\n\t(q31_t)0xC1EFCDF2, (q31_t)0x900D8B69, (q31_t)0xC247CD5A,\n\t(q31_t)0x8FDCEF66, (q31_t)0xC29FF2D4, (q31_t)0x8FAC988E,\n\t(q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC350AF25,\n\t(q31_t)0x8F4CBADB, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A,\n\t(q31_t)0xC4020132, (q31_t)0x8EEDF33B, (q31_t)0xC45AE1D7,\n\t(q31_t)0x8EBEF7FB, (q31_t)0xC4B3E746, (q31_t)0x8E904298,\n\t(q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC5665FA8,\n\t(q31_t)0x8E33A9D9, (q31_t)0xC5BFD22E, (q31_t)0x8E05C6B7,\n\t(q31_t)0xC61968A2, (q31_t)0x8DD829E4, (q31_t)0xC67322CD,\n\t(q31_t)0x8DAAD37B, (q31_t)0xC6CD0079, (q31_t)0x8D7DC399,\n\t(q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7812571,\n\t(q31_t)0x8D2477D8, (q31_t)0xC7DB6C50, (q31_t)0x8CF83C30,\n\t(q31_t)0xC835D5D0, (q31_t)0x8CCC477D, (q31_t)0xC89061BA,\n\t(q31_t)0x8CA099D9, (q31_t)0xC8EB0FD6, (q31_t)0x8C753361,\n\t(q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC9A0D1C4,\n\t(q31_t)0x8C1F3C5C, (q31_t)0xC9FBE527, (q31_t)0x8BF4AC05,\n\t(q31_t)0xCA5719DB, (q31_t)0x8BCA6342, (q31_t)0xCAB26FA9,\n\t(q31_t)0x8BA0622F, (q31_t)0xCB0DE658, (q31_t)0x8B76A8E4,\n\t(q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCBC53578,\n\t(q31_t)0x8B240E10, (q31_t)0xCC210D78, (q31_t)0x8AFB2CBA,\n\t(q31_t)0xCC7D0577, (q31_t)0x8AD29393, (q31_t)0xCCD91D3D,\n\t(q31_t)0x8AAA42B4, (q31_t)0xCD355490, (q31_t)0x8A823A35,\n\t(q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCDEE20FC,\n\t(q31_t)0x8A3302BD, (q31_t)0xCE4AB5A2, (q31_t)0x8A0BD3F5,\n\t(q31_t)0xCEA768F2, (q31_t)0x89E4EDEE, (q31_t)0xCF043AB2,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF612AAA, (q31_t)0x8997FC89,\n\t(q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xD01B6459,\n\t(q31_t)0x894C2F4C, (q31_t)0xD078AD9D, (q31_t)0x8926B677,\n\t(q31_t)0xD0D61433, (q31_t)0x890186F1, (q31_t)0xD13397E1,\n\t(q31_t)0x88DCA0D3, (q31_t)0xD191386D, (q31_t)0x88B80431,\n\t(q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD24CCF38,\n\t(q31_t)0x886FA7C2, (q31_t)0xD2AAC504, (q31_t)0x884BE820,\n\t(q31_t)0xD308D6C6, (q31_t)0x88287255, (q31_t)0xD3670445,\n\t(q31_t)0x88054677, (q31_t)0xD3C54D46, (q31_t)0x87E2649B,\n\t(q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD48230E8,\n\t(q31_t)0x879D7F40, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC,\n\t(q31_t)0xD53F7FDA, (q31_t)0x8759C2EF, (q31_t)0xD59E4EFE,\n\t(q31_t)0x8738545E, (q31_t)0xD5FD3847, (q31_t)0x8717304E,\n\t(q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD6BB585D,\n\t(q31_t)0x86D5C802, (q31_t)0xD71A8EB5, (q31_t)0x86B583EE,\n\t(q31_t)0xD779DE46, (q31_t)0x86958AAB, (q31_t)0xD7D946D7,\n\t(q31_t)0x8675DC4E, (q31_t)0xD838C82D, (q31_t)0x865678EA,\n\t(q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD8F81439,\n\t(q31_t)0x86189359, (q31_t)0xD957DE7A, (q31_t)0x85FA1152,\n\t(q31_t)0xD9B7C093, (q31_t)0x85DBDA91, (q31_t)0xDA17BA4A,\n\t(q31_t)0x85BDEF27, (q31_t)0xDA77CB62, (q31_t)0x85A04F28,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB3832CD,\n\t(q31_t)0x8565F1B0, (q31_t)0xDB9888A8, (q31_t)0x8549345C,\n\t(q31_t)0xDBF8F4F8, (q31_t)0x852CC2BA, (q31_t)0xDC597781,\n\t(q31_t)0x85109CDC, (q31_t)0xDCBA1008, (q31_t)0x84F4C2D3,\n\t(q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDD7B8220,\n\t(q31_t)0x84BDF285, (q31_t)0xDDDC5B3A, (q31_t)0x84A2FC62,\n\t(q31_t)0xDE3D4963, (q31_t)0x84885257, (q31_t)0xDE9E4C60,\n\t(q31_t)0x846DF476, (q31_t)0xDEFF63F4, (q31_t)0x8453E2CE,\n\t(q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xDFC1CFF2,\n\t(q31_t)0x8420A46B, (q31_t)0xE02323E5, (q31_t)0x840777CF,\n\t(q31_t)0xE0848B7F, (q31_t)0x83EE97AC, (q31_t)0xE0E60684,\n\t(q31_t)0x83D60411, (q31_t)0xE14794B9, (q31_t)0x83BDBD0D,\n\t(q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE20AE9C1,\n\t(q31_t)0x838E1507, (q31_t)0xE26CB01A, (q31_t)0x8376B422,\n\t(q31_t)0xE2CE88B2, (q31_t)0x835FA00E, (q31_t)0xE330734C,\n\t(q31_t)0x8348D8DB, (q31_t)0xE3926FAC, (q31_t)0x83325E97,\n\t(q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4569CCB,\n\t(q31_t)0x8306510F, (q31_t)0xE4B8CD10, (q31_t)0x82F0BDE8,\n\t(q31_t)0xE51B0E2A, (q31_t)0x82DB77E5, (q31_t)0xE57D5FDA,\n\t(q31_t)0x82C67F13, (q31_t)0xE5DFC1E4, (q31_t)0x82B1D381,\n\t(q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE6A4B616,\n\t(q31_t)0x8289644A, (q31_t)0xE70747C3, (q31_t)0x8275A0C0,\n\t(q31_t)0xE769E8D8, (q31_t)0x82622AA5, (q31_t)0xE7CC9917,\n\t(q31_t)0x824F0208, (q31_t)0xE82F5844, (q31_t)0x823C26F2,\n\t(q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE8F50273,\n\t(q31_t)0x8217598F, (q31_t)0xE957ECFB, (q31_t)0x82056758,\n\t(q31_t)0xE9BAE57C, (q31_t)0x81F3C2D7, (q31_t)0xEA1DEBBB,\n\t(q31_t)0x81E26C16, (q31_t)0xEA80FF79, (q31_t)0x81D16320,\n\t(q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEB474E80,\n\t(q31_t)0x81B03AC1, (q31_t)0xEBAA894E, (q31_t)0x81A01B6C,\n\t(q31_t)0xEC0DD0A8, (q31_t)0x81904A0C, (q31_t)0xEC71244F,\n\t(q31_t)0x8180C6A9, (q31_t)0xECD48406, (q31_t)0x8171914E,\n\t(q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xED9B66B2,\n\t(q31_t)0x815410D3, (q31_t)0xEDFEE92B, (q31_t)0x8145C5C6,\n\t(q31_t)0xEE6276BF, (q31_t)0x8137C8E6, (q31_t)0xEEC60F31,\n\t(q31_t)0x812A1A39, (q31_t)0xEF29B243, (q31_t)0x811CB9CA,\n\t(q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xEFF11752,\n\t(q31_t)0x8102E3C3, (q31_t)0xF054D8D4, (q31_t)0x80F66E3C,\n\t(q31_t)0xF0B8A401, (q31_t)0x80EA4712, (q31_t)0xF11C789A,\n\t(q31_t)0x80DE6E4C, (q31_t)0xF1805662, (q31_t)0x80D2E3F1,\n\t(q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF2482C89,\n\t(q31_t)0x80BCBA9C, (q31_t)0xF2AC246D, (q31_t)0x80B21BAF,\n\t(q31_t)0xF310248A, (q31_t)0x80A7CB49, (q31_t)0xF3742CA1,\n\t(q31_t)0x809DC970, (q31_t)0xF3D83C76, (q31_t)0x8094162B,\n\t(q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF4A07260,\n\t(q31_t)0x80819B74, (q31_t)0xF50497FA, (q31_t)0x8078D40D,\n\t(q31_t)0xF568C45A, (q31_t)0x80705B50, (q31_t)0xF5CCF743,\n\t(q31_t)0x80683143, (q31_t)0xF6313076, (q31_t)0x806055EA,\n\t(q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF6F9B4C5,\n\t(q31_t)0x80518B6B, (q31_t)0xF75DFF65, (q31_t)0x804A9C4D,\n\t(q31_t)0xF7C24F58, (q31_t)0x8043FBF6, (q31_t)0xF826A461,\n\t(q31_t)0x803DAA69, (q31_t)0xF88AFE41, (q31_t)0x8037A7AC,\n\t(q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF953BF90,\n\t(q31_t)0x802C8EAD, (q31_t)0xF9B82683, (q31_t)0x80277872,\n\t(q31_t)0xFA1C9156, (q31_t)0x8022B113, (q31_t)0xFA80FFCB,\n\t(q31_t)0x801E3894, (q31_t)0xFAE571A4, (q31_t)0x801A0EF7,\n\t(q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFBAE5E89,\n\t(q31_t)0x8012A86F, (q31_t)0xFC12D919, (q31_t)0x800F6B88,\n\t(q31_t)0xFC775616, (q31_t)0x800C7D8C, (q31_t)0xFCDBD541,\n\t(q31_t)0x8009DE7D, (q31_t)0xFD40565B, (q31_t)0x80078E5E,\n\t(q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFE095D69,\n\t(q31_t)0x8003DAF0, (q31_t)0xFE6DE2E0, (q31_t)0x800277A5,\n\t(q31_t)0xFED2694F, (q31_t)0x8001634D, (q31_t)0xFF36F078,\n\t(q31_t)0x80009DE9, (q31_t)0xFF9B781D, (q31_t)0x8000277A\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q31_4096)\n/**\n  @par\n  Example code for Q31 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefQ31[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefQ31[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 4096, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to Q31(Fixed point 1.31):\n \tround(twiddleCoefQ31(i) * pow(2, 31))\n */\nconst q31_t twiddleCoef_4096_q31[6144] =\n{\n\t(q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFFF621,\n\t(q31_t)0x003243F5, (q31_t)0x7FFFD885, (q31_t)0x006487E3,\n\t(q31_t)0x7FFFA72C, (q31_t)0x0096CBC1, (q31_t)0x7FFF6216,\n\t(q31_t)0x00C90F88, (q31_t)0x7FFF0942, (q31_t)0x00FB532F,\n\t(q31_t)0x7FFE9CB2, (q31_t)0x012D96B0, (q31_t)0x7FFE1C64,\n\t(q31_t)0x015FDA03, (q31_t)0x7FFD885A, (q31_t)0x01921D1F,\n\t(q31_t)0x7FFCE093, (q31_t)0x01C45FFE, (q31_t)0x7FFC250F,\n\t(q31_t)0x01F6A296, (q31_t)0x7FFB55CE, (q31_t)0x0228E4E1,\n\t(q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF97C17,\n\t(q31_t)0x028D6870, (q31_t)0x7FF871A1, (q31_t)0x02BFA9A4,\n\t(q31_t)0x7FF7536F, (q31_t)0x02F1EA6B, (q31_t)0x7FF62182,\n\t(q31_t)0x03242ABF, (q31_t)0x7FF4DBD8, (q31_t)0x03566A96,\n\t(q31_t)0x7FF38273, (q31_t)0x0388A9E9, (q31_t)0x7FF21553,\n\t(q31_t)0x03BAE8B1, (q31_t)0x7FF09477, (q31_t)0x03ED26E6,\n\t(q31_t)0x7FEEFFE1, (q31_t)0x041F647F, (q31_t)0x7FED5790,\n\t(q31_t)0x0451A176, (q31_t)0x7FEB9B85, (q31_t)0x0483DDC3,\n\t(q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE7E840,\n\t(q31_t)0x04E8543D, (q31_t)0x7FE5F108, (q31_t)0x051A8E5C,\n\t(q31_t)0x7FE3E616, (q31_t)0x054CC7B0, (q31_t)0x7FE1C76B,\n\t(q31_t)0x057F0034, (q31_t)0x7FDF9508, (q31_t)0x05B137DF,\n\t(q31_t)0x7FDD4EEC, (q31_t)0x05E36EA9, (q31_t)0x7FDAF518,\n\t(q31_t)0x0615A48A, (q31_t)0x7FD8878D, (q31_t)0x0647D97C,\n\t(q31_t)0x7FD6064B, (q31_t)0x067A0D75, (q31_t)0x7FD37152,\n\t(q31_t)0x06AC406F, (q31_t)0x7FD0C8A3, (q31_t)0x06DE7261,\n\t(q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FCB3C23,\n\t(q31_t)0x0742D310, (q31_t)0x7FC85853, (q31_t)0x077501BE,\n\t(q31_t)0x7FC560CF, (q31_t)0x07A72F45, (q31_t)0x7FC25596,\n\t(q31_t)0x07D95B9E, (q31_t)0x7FBF36A9, (q31_t)0x080B86C1,\n\t(q31_t)0x7FBC040A, (q31_t)0x083DB0A7, (q31_t)0x7FB8BDB7,\n\t(q31_t)0x086FD947, (q31_t)0x7FB563B2, (q31_t)0x08A2009A,\n\t(q31_t)0x7FB1F5FC, (q31_t)0x08D42698, (q31_t)0x7FAE7494,\n\t(q31_t)0x09064B3A, (q31_t)0x7FAADF7C, (q31_t)0x09386E77,\n\t(q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7FA37A3C,\n\t(q31_t)0x099CB0A7, (q31_t)0x7F9FAA15, (q31_t)0x09CECF89,\n\t(q31_t)0x7F9BC63F, (q31_t)0x0A00ECE8, (q31_t)0x7F97CEBC,\n\t(q31_t)0x0A3308BC, (q31_t)0x7F93C38C, (q31_t)0x0A6522FE,\n\t(q31_t)0x7F8FA4AF, (q31_t)0x0A973BA5, (q31_t)0x7F8B7226,\n\t(q31_t)0x0AC952AA, (q31_t)0x7F872BF3, (q31_t)0x0AFB6805,\n\t(q31_t)0x7F82D214, (q31_t)0x0B2D7BAE, (q31_t)0x7F7E648B,\n\t(q31_t)0x0B5F8D9F, (q31_t)0x7F79E35A, (q31_t)0x0B919DCE,\n\t(q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F70A5FD,\n\t(q31_t)0x0BF5B8CB, (q31_t)0x7F6BE9D4, (q31_t)0x0C27C389,\n\t(q31_t)0x7F671A04, (q31_t)0x0C59CC67, (q31_t)0x7F62368F,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F5D3F75, (q31_t)0x0CBDD865,\n\t(q31_t)0x7F5834B6, (q31_t)0x0CEFDB75, (q31_t)0x7F531654,\n\t(q31_t)0x0D21DC87, (q31_t)0x7F4DE450, (q31_t)0x0D53DB92,\n\t(q31_t)0x7F489EAA, (q31_t)0x0D85D88F, (q31_t)0x7F434563,\n\t(q31_t)0x0DB7D376, (q31_t)0x7F3DD87C, (q31_t)0x0DE9CC3F,\n\t(q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F32C3D0,\n\t(q31_t)0x0E4DB75B, (q31_t)0x7F2D1C0E, (q31_t)0x0E7FA99D,\n\t(q31_t)0x7F2760AF, (q31_t)0x0EB199A3, (q31_t)0x7F2191B4,\n\t(q31_t)0x0EE38765, (q31_t)0x7F1BAF1E, (q31_t)0x0F1572DC,\n\t(q31_t)0x7F15B8EE, (q31_t)0x0F475BFE, (q31_t)0x7F0FAF24,\n\t(q31_t)0x0F7942C6, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B,\n\t(q31_t)0x7F0360CB, (q31_t)0x0FDD0925, (q31_t)0x7EFD1C3C,\n\t(q31_t)0x100EE8AD, (q31_t)0x7EF6C418, (q31_t)0x1040C5BB,\n\t(q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7EE9D913,\n\t(q31_t)0x10A4784A, (q31_t)0x7EE34635, (q31_t)0x10D64DBC,\n\t(q31_t)0x7EDC9FC6, (q31_t)0x11082096, (q31_t)0x7ED5E5C6,\n\t(q31_t)0x1139F0CE, (q31_t)0x7ECF1837, (q31_t)0x116BBE5F,\n\t(q31_t)0x7EC8371A, (q31_t)0x119D8940, (q31_t)0x7EC1426F,\n\t(q31_t)0x11CF516A, (q31_t)0x7EBA3A39, (q31_t)0x120116D4,\n\t(q31_t)0x7EB31E77, (q31_t)0x1232D978, (q31_t)0x7EABEF2C,\n\t(q31_t)0x1264994E, (q31_t)0x7EA4AC58, (q31_t)0x1296564D,\n\t(q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E95EC19,\n\t(q31_t)0x12F9C7AA, (q31_t)0x7E8E6EB1, (q31_t)0x132B7BF9,\n\t(q31_t)0x7E86DDC5, (q31_t)0x135D2D53, (q31_t)0x7E7F3956,\n\t(q31_t)0x138EDBB0, (q31_t)0x7E778165, (q31_t)0x13C0870A,\n\t(q31_t)0x7E6FB5F3, (q31_t)0x13F22F57, (q31_t)0x7E67D702,\n\t(q31_t)0x1423D492, (q31_t)0x7E5FE493, (q31_t)0x145576B1,\n\t(q31_t)0x7E57DEA6, (q31_t)0x148715AD, (q31_t)0x7E4FC53E,\n\t(q31_t)0x14B8B17F, (q31_t)0x7E47985B, (q31_t)0x14EA4A1F,\n\t(q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E37042A,\n\t(q31_t)0x154D71AA, (q31_t)0x7E2E9CDF, (q31_t)0x157F0086,\n\t(q31_t)0x7E26221E, (q31_t)0x15B08C11, (q31_t)0x7E1D93E9,\n\t(q31_t)0x15E21444, (q31_t)0x7E14F242, (q31_t)0x16139917,\n\t(q31_t)0x7E0C3D29, (q31_t)0x16451A83, (q31_t)0x7E03749F,\n\t(q31_t)0x1676987F, (q31_t)0x7DFA98A7, (q31_t)0x16A81305,\n\t(q31_t)0x7DF1A942, (q31_t)0x16D98A0C, (q31_t)0x7DE8A670,\n\t(q31_t)0x170AFD8D, (q31_t)0x7DDF9034, (q31_t)0x173C6D80,\n\t(q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DCD2981,\n\t(q31_t)0x179F429F, (q31_t)0x7DC3D90D, (q31_t)0x17D0A7BB,\n\t(q31_t)0x7DBA7534, (q31_t)0x1802092C, (q31_t)0x7DB0FDF7,\n\t(q31_t)0x183366E8, (q31_t)0x7DA77359, (q31_t)0x1864C0E9,\n\t(q31_t)0x7D9DD55A, (q31_t)0x18961727, (q31_t)0x7D9423FB,\n\t(q31_t)0x18C7699B, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C,\n\t(q31_t)0x7D808727, (q31_t)0x192A0303, (q31_t)0x7D769BB5,\n\t(q31_t)0x195B49E9, (q31_t)0x7D6C9CE9, (q31_t)0x198C8CE6,\n\t(q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D58654C,\n\t(q31_t)0x19EF0706, (q31_t)0x7D4E2C7E, (q31_t)0x1A203E1B,\n\t(q31_t)0x7D43E05E, (q31_t)0x1A517127, (q31_t)0x7D3980EC,\n\t(q31_t)0x1A82A025, (q31_t)0x7D2F0E2A, (q31_t)0x1AB3CB0C,\n\t(q31_t)0x7D24881A, (q31_t)0x1AE4F1D6, (q31_t)0x7D19EEBE,\n\t(q31_t)0x1B161479, (q31_t)0x7D0F4218, (q31_t)0x1B4732EF,\n\t(q31_t)0x7D048228, (q31_t)0x1B784D30, (q31_t)0x7CF9AEF0,\n\t(q31_t)0x1BA96334, (q31_t)0x7CEEC873, (q31_t)0x1BDA74F5,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CD8C1AD,\n\t(q31_t)0x1C3C8B8C, (q31_t)0x7CCDA168, (q31_t)0x1C6D9053,\n\t(q31_t)0x7CC26DE5, (q31_t)0x1C9E90B8, (q31_t)0x7CB72724,\n\t(q31_t)0x1CCF8CB3, (q31_t)0x7CABCD27, (q31_t)0x1D00843C,\n\t(q31_t)0x7CA05FF1, (q31_t)0x1D31774D, (q31_t)0x7C94DF82,\n\t(q31_t)0x1D6265DD, (q31_t)0x7C894BDD, (q31_t)0x1D934FE5,\n\t(q31_t)0x7C7DA504, (q31_t)0x1DC4355D, (q31_t)0x7C71EAF8,\n\t(q31_t)0x1DF5163F, (q31_t)0x7C661DBB, (q31_t)0x1E25F281,\n\t(q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C4E49B6,\n\t(q31_t)0x1E879D0C, (q31_t)0x7C4242F2, (q31_t)0x1EB86B46,\n\t(q31_t)0x7C362904, (q31_t)0x1EE934C2, (q31_t)0x7C29FBEE,\n\t(q31_t)0x1F19F97B, (q31_t)0x7C1DBBB2, (q31_t)0x1F4AB967,\n\t(q31_t)0x7C116853, (q31_t)0x1F7B7480, (q31_t)0x7C0501D1,\n\t(q31_t)0x1FAC2ABF, (q31_t)0x7BF88830, (q31_t)0x1FDCDC1A,\n\t(q31_t)0x7BEBFB70, (q31_t)0x200D888C, (q31_t)0x7BDF5B94,\n\t(q31_t)0x203E300D, (q31_t)0x7BD2A89E, (q31_t)0x206ED295,\n\t(q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7BB9096A,\n\t(q31_t)0x20D0089B, (q31_t)0x7BAC1D31, (q31_t)0x21009C0B,\n\t(q31_t)0x7B9F1DE5, (q31_t)0x21312A65, (q31_t)0x7B920B89,\n\t(q31_t)0x2161B39F, (q31_t)0x7B84E61E, (q31_t)0x219237B4,\n\t(q31_t)0x7B77ADA8, (q31_t)0x21C2B69C, (q31_t)0x7B6A6227,\n\t(q31_t)0x21F3304E, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5,\n\t(q31_t)0x7B4F920E, (q31_t)0x225413F8, (q31_t)0x7B420D7A,\n\t(q31_t)0x22847DDF, (q31_t)0x7B3475E4, (q31_t)0x22B4E274,\n\t(q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7B190DBB,\n\t(q31_t)0x23159B87, (q31_t)0x7B0B3D2C, (q31_t)0x2345EFF7,\n\t(q31_t)0x7AFD59A3, (q31_t)0x23763EF7, (q31_t)0x7AEF6323,\n\t(q31_t)0x23A6887E, (q31_t)0x7AE159AE, (q31_t)0x23D6CC86,\n\t(q31_t)0x7AD33D45, (q31_t)0x24070B07, (q31_t)0x7AC50DEB,\n\t(q31_t)0x243743FA, (q31_t)0x7AB6CBA3, (q31_t)0x24677757,\n\t(q31_t)0x7AA8766E, (q31_t)0x2497A517, (q31_t)0x7A9A0E4F,\n\t(q31_t)0x24C7CD32, (q31_t)0x7A8B9348, (q31_t)0x24F7EFA1,\n\t(q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A6E648A,\n\t(q31_t)0x2558235E, (q31_t)0x7A5FB0D8, (q31_t)0x2588349D,\n\t(q31_t)0x7A50EA46, (q31_t)0x25B84012, (q31_t)0x7A4210D8,\n\t(q31_t)0x25E845B5, (q31_t)0x7A33248F, (q31_t)0x26184581,\n\t(q31_t)0x7A24256E, (q31_t)0x26483F6C, (q31_t)0x7A151377,\n\t(q31_t)0x26783370, (q31_t)0x7A05EEAD, (q31_t)0x26A82185,\n\t(q31_t)0x79F6B711, (q31_t)0x26D809A5, (q31_t)0x79E76CA6,\n\t(q31_t)0x2707EBC6, (q31_t)0x79D80F6F, (q31_t)0x2737C7E3,\n\t(q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x79B91CA4,\n\t(q31_t)0x27976DF1, (q31_t)0x79A98715, (q31_t)0x27C737D2,\n\t(q31_t)0x7999DEC3, (q31_t)0x27F6FB92, (q31_t)0x798A23B1,\n\t(q31_t)0x2826B928, (q31_t)0x797A55E0, (q31_t)0x2856708C,\n\t(q31_t)0x796A7554, (q31_t)0x288621B9, (q31_t)0x795A820E,\n\t(q31_t)0x28B5CCA5, (q31_t)0x794A7C11, (q31_t)0x28E5714A,\n\t(q31_t)0x793A6360, (q31_t)0x29150FA1, (q31_t)0x792A37FE,\n\t(q31_t)0x2944A7A2, (q31_t)0x7919F9EB, (q31_t)0x29743945,\n\t(q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78F945C3,\n\t(q31_t)0x29D34958, (q31_t)0x78E8CFB1, (q31_t)0x2A02C7B8,\n\t(q31_t)0x78D846FB, (q31_t)0x2A323F9D, (q31_t)0x78C7ABA1,\n\t(q31_t)0x2A61B101, (q31_t)0x78B6FDA8, (q31_t)0x2A911BDB,\n\t(q31_t)0x78A63D10, (q31_t)0x2AC08025, (q31_t)0x789569DE,\n\t(q31_t)0x2AEFDDD8, (q31_t)0x78848413, (q31_t)0x2B1F34EB,\n\t(q31_t)0x78738BB3, (q31_t)0x2B4E8558, (q31_t)0x786280BF,\n\t(q31_t)0x2B7DCF17, (q31_t)0x7851633B, (q31_t)0x2BAD1221,\n\t(q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x782EF08B,\n\t(q31_t)0x2C0B83F9, (q31_t)0x781D9B64, (q31_t)0x2C3AB2B9,\n\t(q31_t)0x780C33B8, (q31_t)0x2C69DAA6, (q31_t)0x77FAB988,\n\t(q31_t)0x2C98FBBA, (q31_t)0x77E92CD8, (q31_t)0x2CC815ED,\n\t(q31_t)0x77D78DAA, (q31_t)0x2CF72939, (q31_t)0x77C5DC01,\n\t(q31_t)0x2D263595, (q31_t)0x77B417DF, (q31_t)0x2D553AFB,\n\t(q31_t)0x77A24148, (q31_t)0x2D843963, (q31_t)0x7790583D,\n\t(q31_t)0x2DB330C7, (q31_t)0x777E5CC3, (q31_t)0x2DE2211E,\n\t(q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x775A2E88,\n\t(q31_t)0x2E3FEC8B, (q31_t)0x7747FBCE, (q31_t)0x2E6EC792,\n\t(q31_t)0x7735B6AE, (q31_t)0x2E9D9B70, (q31_t)0x77235F2D,\n\t(q31_t)0x2ECC681E, (q31_t)0x7710F54B, (q31_t)0x2EFB2D94,\n\t(q31_t)0x76FE790E, (q31_t)0x2F29EBCC, (q31_t)0x76EBEA77,\n\t(q31_t)0x2F58A2BD, (q31_t)0x76D94988, (q31_t)0x2F875262,\n\t(q31_t)0x76C69646, (q31_t)0x2FB5FAB2, (q31_t)0x76B3D0B3,\n\t(q31_t)0x2FE49BA6, (q31_t)0x76A0F8D2, (q31_t)0x30133538,\n\t(q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x767B1230,\n\t(q31_t)0x30705217, (q31_t)0x76680376, (q31_t)0x309ED555,\n\t(q31_t)0x7654E279, (q31_t)0x30CD5114, (q31_t)0x7641AF3C,\n\t(q31_t)0x30FBC54D, (q31_t)0x762E69C3, (q31_t)0x312A31F8,\n\t(q31_t)0x761B1211, (q31_t)0x3158970D, (q31_t)0x7607A827,\n\t(q31_t)0x3186F487, (q31_t)0x75F42C0A, (q31_t)0x31B54A5D,\n\t(q31_t)0x75E09DBD, (q31_t)0x31E39889, (q31_t)0x75CCFD42,\n\t(q31_t)0x3211DF03, (q31_t)0x75B94A9C, (q31_t)0x32401DC5,\n\t(q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7591AEDD,\n\t(q31_t)0x329C8402, (q31_t)0x757DC5CA, (q31_t)0x32CAAB6F,\n\t(q31_t)0x7569CA98, (q31_t)0x32F8CB07, (q31_t)0x7555BD4B,\n\t(q31_t)0x3326E2C2, (q31_t)0x75419DE6, (q31_t)0x3354F29A,\n\t(q31_t)0x752D6C6C, (q31_t)0x3382FA88, (q31_t)0x751928E0,\n\t(q31_t)0x33B0FA84, (q31_t)0x7504D345, (q31_t)0x33DEF287,\n\t(q31_t)0x74F06B9E, (q31_t)0x340CE28A, (q31_t)0x74DBF1EF,\n\t(q31_t)0x343ACA87, (q31_t)0x74C7663A, (q31_t)0x3468AA76,\n\t(q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x749E18CD,\n\t(q31_t)0x34C4520D, (q31_t)0x7489571B, (q31_t)0x34F219A7,\n\t(q31_t)0x74748371, (q31_t)0x351FD917, (q31_t)0x745F9DD1,\n\t(q31_t)0x354D9056, (q31_t)0x744AA63E, (q31_t)0x357B3F5D,\n\t(q31_t)0x74359CBD, (q31_t)0x35A8E624, (q31_t)0x74208150,\n\t(q31_t)0x35D684A5, (q31_t)0x740B53FA, (q31_t)0x36041AD9,\n\t(q31_t)0x73F614C0, (q31_t)0x3631A8B7, (q31_t)0x73E0C3A3,\n\t(q31_t)0x365F2E3B, (q31_t)0x73CB60A7, (q31_t)0x368CAB5C,\n\t(q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x73A06522,\n\t(q31_t)0x36E78C5A, (q31_t)0x738ACC9E, (q31_t)0x3714F02A,\n\t(q31_t)0x73752249, (q31_t)0x37424B7A, (q31_t)0x735F6626,\n\t(q31_t)0x376F9E46, (q31_t)0x73499838, (q31_t)0x379CE884,\n\t(q31_t)0x7333B883, (q31_t)0x37CA2A30, (q31_t)0x731DC709,\n\t(q31_t)0x37F76340, (q31_t)0x7307C3D0, (q31_t)0x382493B0,\n\t(q31_t)0x72F1AED8, (q31_t)0x3851BB76, (q31_t)0x72DB8828,\n\t(q31_t)0x387EDA8E, (q31_t)0x72C54FC0, (q31_t)0x38ABF0EF,\n\t(q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x7298A9DC,\n\t(q31_t)0x39060372, (q31_t)0x72823C66, (q31_t)0x3932FF87,\n\t(q31_t)0x726BBD48, (q31_t)0x395FF2C9, (q31_t)0x72552C84,\n\t(q31_t)0x398CDD32, (q31_t)0x723E8A1F, (q31_t)0x39B9BEBB,\n\t(q31_t)0x7227D61C, (q31_t)0x39E6975D, (q31_t)0x7211107D,\n\t(q31_t)0x3A136712, (q31_t)0x71FA3948, (q31_t)0x3A402DD1,\n\t(q31_t)0x71E3507F, (q31_t)0x3A6CEB95, (q31_t)0x71CC5626,\n\t(q31_t)0x3A99A057, (q31_t)0x71B54A40, (q31_t)0x3AC64C0F,\n\t(q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x7186FDDE,\n\t(q31_t)0x3B1F8847, (q31_t)0x716FBD68, (q31_t)0x3B4C18BA,\n\t(q31_t)0x71586B73, (q31_t)0x3B78A007, (q31_t)0x71410804,\n\t(q31_t)0x3BA51E29, (q31_t)0x7129931E, (q31_t)0x3BD19317,\n\t(q31_t)0x71120CC5, (q31_t)0x3BFDFECD, (q31_t)0x70FA74FB,\n\t(q31_t)0x3C2A6142, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70,\n\t(q31_t)0x70CB1127, (q31_t)0x3C830A4F, (q31_t)0x70B34524,\n\t(q31_t)0x3CAF50DA, (q31_t)0x709B67C0, (q31_t)0x3CDB8E09,\n\t(q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x706B78E3,\n\t(q31_t)0x3D33EC39, (q31_t)0x70536771, (q31_t)0x3D600D2B,\n\t(q31_t)0x703B44AC, (q31_t)0x3D8C24A7, (q31_t)0x70231099,\n\t(q31_t)0x3DB832A5, (q31_t)0x700ACB3B, (q31_t)0x3DE4371F,\n\t(q31_t)0x6FF27496, (q31_t)0x3E10320D, (q31_t)0x6FDA0CAD,\n\t(q31_t)0x3E3C2369, (q31_t)0x6FC19385, (q31_t)0x3E680B2C,\n\t(q31_t)0x6FA90920, (q31_t)0x3E93E94F, (q31_t)0x6F906D84,\n\t(q31_t)0x3EBFBDCC, (q31_t)0x6F77C0B3, (q31_t)0x3EEB889C,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6F463383,\n\t(q31_t)0x3F430118, (q31_t)0x6F2D532C, (q31_t)0x3F6EAEB8,\n\t(q31_t)0x6F1461AF, (q31_t)0x3F9A528F, (q31_t)0x6EFB5F12,\n\t(q31_t)0x3FC5EC97, (q31_t)0x6EE24B57, (q31_t)0x3FF17CCA,\n\t(q31_t)0x6EC92682, (q31_t)0x401D0320, (q31_t)0x6EAFF098,\n\t(q31_t)0x40487F93, (q31_t)0x6E96A99C, (q31_t)0x4073F21D,\n\t(q31_t)0x6E7D5193, (q31_t)0x409F5AB6, (q31_t)0x6E63E87F,\n\t(q31_t)0x40CAB957, (q31_t)0x6E4A6E65, (q31_t)0x40F60DFB,\n\t(q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6E17472F,\n\t(q31_t)0x414C992E, (q31_t)0x6DFD9A1B, (q31_t)0x4177CFB0,\n\t(q31_t)0x6DE3DC11, (q31_t)0x41A2FC1A, (q31_t)0x6DCA0D14,\n\t(q31_t)0x41CE1E64, (q31_t)0x6DB02D29, (q31_t)0x41F93688,\n\t(q31_t)0x6D963C54, (q31_t)0x42244480, (q31_t)0x6D7C3A98,\n\t(q31_t)0x424F4845, (q31_t)0x6D6227FA, (q31_t)0x427A41D0,\n\t(q31_t)0x6D48047E, (q31_t)0x42A5311A, (q31_t)0x6D2DD027,\n\t(q31_t)0x42D0161E, (q31_t)0x6D138AFA, (q31_t)0x42FAF0D4,\n\t(q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6CDECE2E,\n\t(q31_t)0x4350873C, (q31_t)0x6CC45697, (q31_t)0x437B42E1,\n\t(q31_t)0x6CA9CE3A, (q31_t)0x43A5F41E, (q31_t)0x6C8F351C,\n\t(q31_t)0x43D09AEC, (q31_t)0x6C748B3F, (q31_t)0x43FB3745,\n\t(q31_t)0x6C59D0A9, (q31_t)0x4425C923, (q31_t)0x6C3F055D,\n\t(q31_t)0x4450507E, (q31_t)0x6C242960, (q31_t)0x447ACD50,\n\t(q31_t)0x6C093CB6, (q31_t)0x44A53F93, (q31_t)0x6BEE3F62,\n\t(q31_t)0x44CFA73F, (q31_t)0x6BD3316A, (q31_t)0x44FA044F,\n\t(q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B9CE39B,\n\t(q31_t)0x454E9E80, (q31_t)0x6B81A3CD, (q31_t)0x4578DB93,\n\t(q31_t)0x6B66536A, (q31_t)0x45A30DF0, (q31_t)0x6B4AF278,\n\t(q31_t)0x45CD358F, (q31_t)0x6B2F80FA, (q31_t)0x45F7526B,\n\t(q31_t)0x6B13FEF5, (q31_t)0x4621647C, (q31_t)0x6AF86C6C,\n\t(q31_t)0x464B6BBD, (q31_t)0x6ADCC964, (q31_t)0x46756827,\n\t(q31_t)0x6AC115E1, (q31_t)0x469F59B4, (q31_t)0x6AA551E8,\n\t(q31_t)0x46C9405C, (q31_t)0x6A897D7D, (q31_t)0x46F31C1A,\n\t(q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x6A51A361,\n\t(q31_t)0x4746B2BC, (q31_t)0x6A359DB9, (q31_t)0x47706D93,\n\t(q31_t)0x6A1987B0, (q31_t)0x479A1D66, (q31_t)0x69FD614A,\n\t(q31_t)0x47C3C22E, (q31_t)0x69E12A8C, (q31_t)0x47ED5BE6,\n\t(q31_t)0x69C4E37A, (q31_t)0x4816EA85, (q31_t)0x69A88C18,\n\t(q31_t)0x48406E07, (q31_t)0x698C246C, (q31_t)0x4869E664,\n\t(q31_t)0x696FAC78, (q31_t)0x48935397, (q31_t)0x69532442,\n\t(q31_t)0x48BCB598, (q31_t)0x69368BCE, (q31_t)0x48E60C62,\n\t(q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68FD2A3D,\n\t(q31_t)0x49389836, (q31_t)0x68E06129, (q31_t)0x4961CD32,\n\t(q31_t)0x68C387E9, (q31_t)0x498AF6DE, (q31_t)0x68A69E81,\n\t(q31_t)0x49B41533, (q31_t)0x6889A4F5, (q31_t)0x49DD282A,\n\t(q31_t)0x686C9B4B, (q31_t)0x4A062FBD, (q31_t)0x684F8186,\n\t(q31_t)0x4A2F2BE5, (q31_t)0x683257AA, (q31_t)0x4A581C9D,\n\t(q31_t)0x68151DBE, (q31_t)0x4A8101DE, (q31_t)0x67F7D3C4,\n\t(q31_t)0x4AA9DBA1, (q31_t)0x67DA79C2, (q31_t)0x4AD2A9E1,\n\t(q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x679F95B7,\n\t(q31_t)0x4B2423BD, (q31_t)0x67820BB6, (q31_t)0x4B4CCF4D,\n\t(q31_t)0x676471C0, (q31_t)0x4B756F3F, (q31_t)0x6746C7D7,\n\t(q31_t)0x4B9E038F, (q31_t)0x67290E02, (q31_t)0x4BC68C36,\n\t(q31_t)0x670B4443, (q31_t)0x4BEF092D, (q31_t)0x66ED6AA1,\n\t(q31_t)0x4C177A6E, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3,\n\t(q31_t)0x66B187C3, (q31_t)0x4C6839B6, (q31_t)0x66937E90,\n\t(q31_t)0x4C9087B1, (q31_t)0x6675658C, (q31_t)0x4CB8C9DD,\n\t(q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x66390422,\n\t(q31_t)0x4D092AB0, (q31_t)0x661ABBC5, (q31_t)0x4D31494B,\n\t(q31_t)0x65FC63A9, (q31_t)0x4D595BFE, (q31_t)0x65DDFBD3,\n\t(q31_t)0x4D8162C4, (q31_t)0x65BF8447, (q31_t)0x4DA95D96,\n\t(q31_t)0x65A0FD0B, (q31_t)0x4DD14C6E, (q31_t)0x65826622,\n\t(q31_t)0x4DF92F45, (q31_t)0x6563BF92, (q31_t)0x4E210617,\n\t(q31_t)0x6545095F, (q31_t)0x4E48D0DC, (q31_t)0x6526438E,\n\t(q31_t)0x4E708F8F, (q31_t)0x65076E24, (q31_t)0x4E984229,\n\t(q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x64C99498,\n\t(q31_t)0x4EE782FA, (q31_t)0x64AA907F, (q31_t)0x4F0F1126,\n\t(q31_t)0x648B7CDF, (q31_t)0x4F369320, (q31_t)0x646C59BF,\n\t(q31_t)0x4F5E08E3, (q31_t)0x644D2722, (q31_t)0x4F857268,\n\t(q31_t)0x642DE50D, (q31_t)0x4FACCFAB, (q31_t)0x640E9385,\n\t(q31_t)0x4FD420A3, (q31_t)0x63EF328F, (q31_t)0x4FFB654D,\n\t(q31_t)0x63CFC230, (q31_t)0x50229DA0, (q31_t)0x63B0426D,\n\t(q31_t)0x5049C999, (q31_t)0x6390B34A, (q31_t)0x5070E92F,\n\t(q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x635166F8,\n\t(q31_t)0x50BF031F, (q31_t)0x6331A9D4, (q31_t)0x50E5FD6C,\n\t(q31_t)0x6311DD63, (q31_t)0x510CEB40, (q31_t)0x62F201AC,\n\t(q31_t)0x5133CC94, (q31_t)0x62D216B2, (q31_t)0x515AA162,\n\t(q31_t)0x62B21C7B, (q31_t)0x518169A4, (q31_t)0x6292130C,\n\t(q31_t)0x51A82555, (q31_t)0x6271FA69, (q31_t)0x51CED46E,\n\t(q31_t)0x6251D297, (q31_t)0x51F576E9, (q31_t)0x62319B9D,\n\t(q31_t)0x521C0CC1, (q31_t)0x6211557D, (q31_t)0x524295EF,\n\t(q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x61D09BE5,\n\t(q31_t)0x528F8237, (q31_t)0x61B02876, (q31_t)0x52B5E545,\n\t(q31_t)0x618FA5F6, (q31_t)0x52DC3B92, (q31_t)0x616F146B,\n\t(q31_t)0x53028517, (q31_t)0x614E73D9, (q31_t)0x5328C1D0,\n\t(q31_t)0x612DC446, (q31_t)0x534EF1B5, (q31_t)0x610D05B7,\n\t(q31_t)0x537514C1, (q31_t)0x60EC3830, (q31_t)0x539B2AEF,\n\t(q31_t)0x60CB5BB6, (q31_t)0x53C13438, (q31_t)0x60AA704F,\n\t(q31_t)0x53E73097, (q31_t)0x60897600, (q31_t)0x540D2005,\n\t(q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x604754BE,\n\t(q31_t)0x5458D7F9, (q31_t)0x60262DD5, (q31_t)0x547EA073,\n\t(q31_t)0x6004F818, (q31_t)0x54A45BE5, (q31_t)0x5FE3B38D,\n\t(q31_t)0x54CA0A4A, (q31_t)0x5FC26038, (q31_t)0x54EFAB9C,\n\t(q31_t)0x5FA0FE1E, (q31_t)0x55153FD4, (q31_t)0x5F7F8D46,\n\t(q31_t)0x553AC6ED, (q31_t)0x5F5E0DB3, (q31_t)0x556040E2,\n\t(q31_t)0x5F3C7F6B, (q31_t)0x5585ADAC, (q31_t)0x5F1AE273,\n\t(q31_t)0x55AB0D46, (q31_t)0x5EF936D1, (q31_t)0x55D05FAA,\n\t(q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5EB5B3A1,\n\t(q31_t)0x561ADCB8, (q31_t)0x5E93DC1F, (q31_t)0x56400757,\n\t(q31_t)0x5E71F606, (q31_t)0x566524AA, (q31_t)0x5E50015D,\n\t(q31_t)0x568A34A9, (q31_t)0x5E2DFE28, (q31_t)0x56AF3750,\n\t(q31_t)0x5E0BEC6E, (q31_t)0x56D42C99, (q31_t)0x5DE9CC32,\n\t(q31_t)0x56F9147E, (q31_t)0x5DC79D7C, (q31_t)0x571DEEF9,\n\t(q31_t)0x5DA5604E, (q31_t)0x5742BC05, (q31_t)0x5D8314B0,\n\t(q31_t)0x57677B9D, (q31_t)0x5D60BAA6, (q31_t)0x578C2DB9,\n\t(q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5D1BDB65,\n\t(q31_t)0x57D5696C, (q31_t)0x5CF95638, (q31_t)0x57F9F2F7,\n\t(q31_t)0x5CD6C2B4, (q31_t)0x581E6EF1, (q31_t)0x5CB420DF,\n\t(q31_t)0x5842DD54, (q31_t)0x5C9170BF, (q31_t)0x58673E1B,\n\t(q31_t)0x5C6EB258, (q31_t)0x588B913F, (q31_t)0x5C4BE5B0,\n\t(q31_t)0x58AFD6BC, (q31_t)0x5C290ACC, (q31_t)0x58D40E8C,\n\t(q31_t)0x5C0621B2, (q31_t)0x58F838A9, (q31_t)0x5BE32A67,\n\t(q31_t)0x591C550E, (q31_t)0x5BC024F0, (q31_t)0x594063B4,\n\t(q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B79EF96,\n\t(q31_t)0x598857B1, (q31_t)0x5B56BFBD, (q31_t)0x59AC3CFD,\n\t(q31_t)0x5B3381CE, (q31_t)0x59D01474, (q31_t)0x5B1035CF,\n\t(q31_t)0x59F3DE12, (q31_t)0x5AECDBC4, (q31_t)0x5A1799D0,\n\t(q31_t)0x5AC973B4, (q31_t)0x5A3B47AA, (q31_t)0x5AA5FDA4,\n\t(q31_t)0x5A5EE79A, (q31_t)0x5A82799A, (q31_t)0x5A82799A,\n\t(q31_t)0x5A5EE79A, (q31_t)0x5AA5FDA4, (q31_t)0x5A3B47AA,\n\t(q31_t)0x5AC973B4, (q31_t)0x5A1799D0, (q31_t)0x5AECDBC4,\n\t(q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59D01474,\n\t(q31_t)0x5B3381CE, (q31_t)0x59AC3CFD, (q31_t)0x5B56BFBD,\n\t(q31_t)0x598857B1, (q31_t)0x5B79EF96, (q31_t)0x59646497,\n\t(q31_t)0x5B9D1153, (q31_t)0x594063B4, (q31_t)0x5BC024F0,\n\t(q31_t)0x591C550E, (q31_t)0x5BE32A67, (q31_t)0x58F838A9,\n\t(q31_t)0x5C0621B2, (q31_t)0x58D40E8C, (q31_t)0x5C290ACC,\n\t(q31_t)0x58AFD6BC, (q31_t)0x5C4BE5B0, (q31_t)0x588B913F,\n\t(q31_t)0x5C6EB258, (q31_t)0x58673E1B, (q31_t)0x5C9170BF,\n\t(q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x581E6EF1,\n\t(q31_t)0x5CD6C2B4, (q31_t)0x57F9F2F7, (q31_t)0x5CF95638,\n\t(q31_t)0x57D5696C, (q31_t)0x5D1BDB65, (q31_t)0x57B0D256,\n\t(q31_t)0x5D3E5236, (q31_t)0x578C2DB9, (q31_t)0x5D60BAA6,\n\t(q31_t)0x57677B9D, (q31_t)0x5D8314B0, (q31_t)0x5742BC05,\n\t(q31_t)0x5DA5604E, (q31_t)0x571DEEF9, (q31_t)0x5DC79D7C,\n\t(q31_t)0x56F9147E, (q31_t)0x5DE9CC32, (q31_t)0x56D42C99,\n\t(q31_t)0x5E0BEC6E, (q31_t)0x56AF3750, (q31_t)0x5E2DFE28,\n\t(q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x566524AA,\n\t(q31_t)0x5E71F606, (q31_t)0x56400757, (q31_t)0x5E93DC1F,\n\t(q31_t)0x561ADCB8, (q31_t)0x5EB5B3A1, (q31_t)0x55F5A4D2,\n\t(q31_t)0x5ED77C89, (q31_t)0x55D05FAA, (q31_t)0x5EF936D1,\n\t(q31_t)0x55AB0D46, (q31_t)0x5F1AE273, (q31_t)0x5585ADAC,\n\t(q31_t)0x5F3C7F6B, (q31_t)0x556040E2, (q31_t)0x5F5E0DB3,\n\t(q31_t)0x553AC6ED, (q31_t)0x5F7F8D46, (q31_t)0x55153FD4,\n\t(q31_t)0x5FA0FE1E, (q31_t)0x54EFAB9C, (q31_t)0x5FC26038,\n\t(q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x54A45BE5,\n\t(q31_t)0x6004F818, (q31_t)0x547EA073, (q31_t)0x60262DD5,\n\t(q31_t)0x5458D7F9, (q31_t)0x604754BE, (q31_t)0x5433027D,\n\t(q31_t)0x60686CCE, (q31_t)0x540D2005, (q31_t)0x60897600,\n\t(q31_t)0x53E73097, (q31_t)0x60AA704F, (q31_t)0x53C13438,\n\t(q31_t)0x60CB5BB6, (q31_t)0x539B2AEF, (q31_t)0x60EC3830,\n\t(q31_t)0x537514C1, (q31_t)0x610D05B7, (q31_t)0x534EF1B5,\n\t(q31_t)0x612DC446, (q31_t)0x5328C1D0, (q31_t)0x614E73D9,\n\t(q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x52DC3B92,\n\t(q31_t)0x618FA5F6, (q31_t)0x52B5E545, (q31_t)0x61B02876,\n\t(q31_t)0x528F8237, (q31_t)0x61D09BE5, (q31_t)0x5269126E,\n\t(q31_t)0x61F1003E, (q31_t)0x524295EF, (q31_t)0x6211557D,\n\t(q31_t)0x521C0CC1, (q31_t)0x62319B9D, (q31_t)0x51F576E9,\n\t(q31_t)0x6251D297, (q31_t)0x51CED46E, (q31_t)0x6271FA69,\n\t(q31_t)0x51A82555, (q31_t)0x6292130C, (q31_t)0x518169A4,\n\t(q31_t)0x62B21C7B, (q31_t)0x515AA162, (q31_t)0x62D216B2,\n\t(q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x510CEB40,\n\t(q31_t)0x6311DD63, (q31_t)0x50E5FD6C, (q31_t)0x6331A9D4,\n\t(q31_t)0x50BF031F, (q31_t)0x635166F8, (q31_t)0x5097FC5E,\n\t(q31_t)0x637114CC, (q31_t)0x5070E92F, (q31_t)0x6390B34A,\n\t(q31_t)0x5049C999, (q31_t)0x63B0426D, (q31_t)0x50229DA0,\n\t(q31_t)0x63CFC230, (q31_t)0x4FFB654D, (q31_t)0x63EF328F,\n\t(q31_t)0x4FD420A3, (q31_t)0x640E9385, (q31_t)0x4FACCFAB,\n\t(q31_t)0x642DE50D, (q31_t)0x4F857268, (q31_t)0x644D2722,\n\t(q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4F369320,\n\t(q31_t)0x648B7CDF, (q31_t)0x4F0F1126, (q31_t)0x64AA907F,\n\t(q31_t)0x4EE782FA, (q31_t)0x64C99498, (q31_t)0x4EBFE8A4,\n\t(q31_t)0x64E88926, (q31_t)0x4E984229, (q31_t)0x65076E24,\n\t(q31_t)0x4E708F8F, (q31_t)0x6526438E, (q31_t)0x4E48D0DC,\n\t(q31_t)0x6545095F, (q31_t)0x4E210617, (q31_t)0x6563BF92,\n\t(q31_t)0x4DF92F45, (q31_t)0x65826622, (q31_t)0x4DD14C6E,\n\t(q31_t)0x65A0FD0B, (q31_t)0x4DA95D96, (q31_t)0x65BF8447,\n\t(q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4D595BFE,\n\t(q31_t)0x65FC63A9, (q31_t)0x4D31494B, (q31_t)0x661ABBC5,\n\t(q31_t)0x4D092AB0, (q31_t)0x66390422, (q31_t)0x4CE10034,\n\t(q31_t)0x66573CBB, (q31_t)0x4CB8C9DD, (q31_t)0x6675658C,\n\t(q31_t)0x4C9087B1, (q31_t)0x66937E90, (q31_t)0x4C6839B6,\n\t(q31_t)0x66B187C3, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F,\n\t(q31_t)0x4C177A6E, (q31_t)0x66ED6AA1, (q31_t)0x4BEF092D,\n\t(q31_t)0x670B4443, (q31_t)0x4BC68C36, (q31_t)0x67290E02,\n\t(q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4B756F3F,\n\t(q31_t)0x676471C0, (q31_t)0x4B4CCF4D, (q31_t)0x67820BB6,\n\t(q31_t)0x4B2423BD, (q31_t)0x679F95B7, (q31_t)0x4AFB6C97,\n\t(q31_t)0x67BD0FBC, (q31_t)0x4AD2A9E1, (q31_t)0x67DA79C2,\n\t(q31_t)0x4AA9DBA1, (q31_t)0x67F7D3C4, (q31_t)0x4A8101DE,\n\t(q31_t)0x68151DBE, (q31_t)0x4A581C9D, (q31_t)0x683257AA,\n\t(q31_t)0x4A2F2BE5, (q31_t)0x684F8186, (q31_t)0x4A062FBD,\n\t(q31_t)0x686C9B4B, (q31_t)0x49DD282A, (q31_t)0x6889A4F5,\n\t(q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x498AF6DE,\n\t(q31_t)0x68C387E9, (q31_t)0x4961CD32, (q31_t)0x68E06129,\n\t(q31_t)0x49389836, (q31_t)0x68FD2A3D, (q31_t)0x490F57EE,\n\t(q31_t)0x6919E320, (q31_t)0x48E60C62, (q31_t)0x69368BCE,\n\t(q31_t)0x48BCB598, (q31_t)0x69532442, (q31_t)0x48935397,\n\t(q31_t)0x696FAC78, (q31_t)0x4869E664, (q31_t)0x698C246C,\n\t(q31_t)0x48406E07, (q31_t)0x69A88C18, (q31_t)0x4816EA85,\n\t(q31_t)0x69C4E37A, (q31_t)0x47ED5BE6, (q31_t)0x69E12A8C,\n\t(q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x479A1D66,\n\t(q31_t)0x6A1987B0, (q31_t)0x47706D93, (q31_t)0x6A359DB9,\n\t(q31_t)0x4746B2BC, (q31_t)0x6A51A361, (q31_t)0x471CECE6,\n\t(q31_t)0x6A6D98A4, (q31_t)0x46F31C1A, (q31_t)0x6A897D7D,\n\t(q31_t)0x46C9405C, (q31_t)0x6AA551E8, (q31_t)0x469F59B4,\n\t(q31_t)0x6AC115E1, (q31_t)0x46756827, (q31_t)0x6ADCC964,\n\t(q31_t)0x464B6BBD, (q31_t)0x6AF86C6C, (q31_t)0x4621647C,\n\t(q31_t)0x6B13FEF5, (q31_t)0x45F7526B, (q31_t)0x6B2F80FA,\n\t(q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x45A30DF0,\n\t(q31_t)0x6B66536A, (q31_t)0x4578DB93, (q31_t)0x6B81A3CD,\n\t(q31_t)0x454E9E80, (q31_t)0x6B9CE39B, (q31_t)0x452456BC,\n\t(q31_t)0x6BB812D0, (q31_t)0x44FA044F, (q31_t)0x6BD3316A,\n\t(q31_t)0x44CFA73F, (q31_t)0x6BEE3F62, (q31_t)0x44A53F93,\n\t(q31_t)0x6C093CB6, (q31_t)0x447ACD50, (q31_t)0x6C242960,\n\t(q31_t)0x4450507E, (q31_t)0x6C3F055D, (q31_t)0x4425C923,\n\t(q31_t)0x6C59D0A9, (q31_t)0x43FB3745, (q31_t)0x6C748B3F,\n\t(q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x43A5F41E,\n\t(q31_t)0x6CA9CE3A, (q31_t)0x437B42E1, (q31_t)0x6CC45697,\n\t(q31_t)0x4350873C, (q31_t)0x6CDECE2E, (q31_t)0x4325C135,\n\t(q31_t)0x6CF934FB, (q31_t)0x42FAF0D4, (q31_t)0x6D138AFA,\n\t(q31_t)0x42D0161E, (q31_t)0x6D2DD027, (q31_t)0x42A5311A,\n\t(q31_t)0x6D48047E, (q31_t)0x427A41D0, (q31_t)0x6D6227FA,\n\t(q31_t)0x424F4845, (q31_t)0x6D7C3A98, (q31_t)0x42244480,\n\t(q31_t)0x6D963C54, (q31_t)0x41F93688, (q31_t)0x6DB02D29,\n\t(q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x41A2FC1A,\n\t(q31_t)0x6DE3DC11, (q31_t)0x4177CFB0, (q31_t)0x6DFD9A1B,\n\t(q31_t)0x414C992E, (q31_t)0x6E17472F, (q31_t)0x4121589A,\n\t(q31_t)0x6E30E349, (q31_t)0x40F60DFB, (q31_t)0x6E4A6E65,\n\t(q31_t)0x40CAB957, (q31_t)0x6E63E87F, (q31_t)0x409F5AB6,\n\t(q31_t)0x6E7D5193, (q31_t)0x4073F21D, (q31_t)0x6E96A99C,\n\t(q31_t)0x40487F93, (q31_t)0x6EAFF098, (q31_t)0x401D0320,\n\t(q31_t)0x6EC92682, (q31_t)0x3FF17CCA, (q31_t)0x6EE24B57,\n\t(q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F9A528F,\n\t(q31_t)0x6F1461AF, (q31_t)0x3F6EAEB8, (q31_t)0x6F2D532C,\n\t(q31_t)0x3F430118, (q31_t)0x6F463383, (q31_t)0x3F1749B7,\n\t(q31_t)0x6F5F02B1, (q31_t)0x3EEB889C, (q31_t)0x6F77C0B3,\n\t(q31_t)0x3EBFBDCC, (q31_t)0x6F906D84, (q31_t)0x3E93E94F,\n\t(q31_t)0x6FA90920, (q31_t)0x3E680B2C, (q31_t)0x6FC19385,\n\t(q31_t)0x3E3C2369, (q31_t)0x6FDA0CAD, (q31_t)0x3E10320D,\n\t(q31_t)0x6FF27496, (q31_t)0x3DE4371F, (q31_t)0x700ACB3B,\n\t(q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D8C24A7,\n\t(q31_t)0x703B44AC, (q31_t)0x3D600D2B, (q31_t)0x70536771,\n\t(q31_t)0x3D33EC39, (q31_t)0x706B78E3, (q31_t)0x3D07C1D5,\n\t(q31_t)0x708378FE, (q31_t)0x3CDB8E09, (q31_t)0x709B67C0,\n\t(q31_t)0x3CAF50DA, (q31_t)0x70B34524, (q31_t)0x3C830A4F,\n\t(q31_t)0x70CB1127, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6,\n\t(q31_t)0x3C2A6142, (q31_t)0x70FA74FB, (q31_t)0x3BFDFECD,\n\t(q31_t)0x71120CC5, (q31_t)0x3BD19317, (q31_t)0x7129931E,\n\t(q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3B78A007,\n\t(q31_t)0x71586B73, (q31_t)0x3B4C18BA, (q31_t)0x716FBD68,\n\t(q31_t)0x3B1F8847, (q31_t)0x7186FDDE, (q31_t)0x3AF2EEB7,\n\t(q31_t)0x719E2CD2, (q31_t)0x3AC64C0F, (q31_t)0x71B54A40,\n\t(q31_t)0x3A99A057, (q31_t)0x71CC5626, (q31_t)0x3A6CEB95,\n\t(q31_t)0x71E3507F, (q31_t)0x3A402DD1, (q31_t)0x71FA3948,\n\t(q31_t)0x3A136712, (q31_t)0x7211107D, (q31_t)0x39E6975D,\n\t(q31_t)0x7227D61C, (q31_t)0x39B9BEBB, (q31_t)0x723E8A1F,\n\t(q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x395FF2C9,\n\t(q31_t)0x726BBD48, (q31_t)0x3932FF87, (q31_t)0x72823C66,\n\t(q31_t)0x39060372, (q31_t)0x7298A9DC, (q31_t)0x38D8FE93,\n\t(q31_t)0x72AF05A6, (q31_t)0x38ABF0EF, (q31_t)0x72C54FC0,\n\t(q31_t)0x387EDA8E, (q31_t)0x72DB8828, (q31_t)0x3851BB76,\n\t(q31_t)0x72F1AED8, (q31_t)0x382493B0, (q31_t)0x7307C3D0,\n\t(q31_t)0x37F76340, (q31_t)0x731DC709, (q31_t)0x37CA2A30,\n\t(q31_t)0x7333B883, (q31_t)0x379CE884, (q31_t)0x73499838,\n\t(q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x37424B7A,\n\t(q31_t)0x73752249, (q31_t)0x3714F02A, (q31_t)0x738ACC9E,\n\t(q31_t)0x36E78C5A, (q31_t)0x73A06522, (q31_t)0x36BA2013,\n\t(q31_t)0x73B5EBD0, (q31_t)0x368CAB5C, (q31_t)0x73CB60A7,\n\t(q31_t)0x365F2E3B, (q31_t)0x73E0C3A3, (q31_t)0x3631A8B7,\n\t(q31_t)0x73F614C0, (q31_t)0x36041AD9, (q31_t)0x740B53FA,\n\t(q31_t)0x35D684A5, (q31_t)0x74208150, (q31_t)0x35A8E624,\n\t(q31_t)0x74359CBD, (q31_t)0x357B3F5D, (q31_t)0x744AA63E,\n\t(q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x351FD917,\n\t(q31_t)0x74748371, (q31_t)0x34F219A7, (q31_t)0x7489571B,\n\t(q31_t)0x34C4520D, (q31_t)0x749E18CD, (q31_t)0x3496824F,\n\t(q31_t)0x74B2C883, (q31_t)0x3468AA76, (q31_t)0x74C7663A,\n\t(q31_t)0x343ACA87, (q31_t)0x74DBF1EF, (q31_t)0x340CE28A,\n\t(q31_t)0x74F06B9E, (q31_t)0x33DEF287, (q31_t)0x7504D345,\n\t(q31_t)0x33B0FA84, (q31_t)0x751928E0, (q31_t)0x3382FA88,\n\t(q31_t)0x752D6C6C, (q31_t)0x3354F29A, (q31_t)0x75419DE6,\n\t(q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x32F8CB07,\n\t(q31_t)0x7569CA98, (q31_t)0x32CAAB6F, (q31_t)0x757DC5CA,\n\t(q31_t)0x329C8402, (q31_t)0x7591AEDD, (q31_t)0x326E54C7,\n\t(q31_t)0x75A585CF, (q31_t)0x32401DC5, (q31_t)0x75B94A9C,\n\t(q31_t)0x3211DF03, (q31_t)0x75CCFD42, (q31_t)0x31E39889,\n\t(q31_t)0x75E09DBD, (q31_t)0x31B54A5D, (q31_t)0x75F42C0A,\n\t(q31_t)0x3186F487, (q31_t)0x7607A827, (q31_t)0x3158970D,\n\t(q31_t)0x761B1211, (q31_t)0x312A31F8, (q31_t)0x762E69C3,\n\t(q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x30CD5114,\n\t(q31_t)0x7654E279, (q31_t)0x309ED555, (q31_t)0x76680376,\n\t(q31_t)0x30705217, (q31_t)0x767B1230, (q31_t)0x3041C760,\n\t(q31_t)0x768E0EA5, (q31_t)0x30133538, (q31_t)0x76A0F8D2,\n\t(q31_t)0x2FE49BA6, (q31_t)0x76B3D0B3, (q31_t)0x2FB5FAB2,\n\t(q31_t)0x76C69646, (q31_t)0x2F875262, (q31_t)0x76D94988,\n\t(q31_t)0x2F58A2BD, (q31_t)0x76EBEA77, (q31_t)0x2F29EBCC,\n\t(q31_t)0x76FE790E, (q31_t)0x2EFB2D94, (q31_t)0x7710F54B,\n\t(q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E9D9B70,\n\t(q31_t)0x7735B6AE, (q31_t)0x2E6EC792, (q31_t)0x7747FBCE,\n\t(q31_t)0x2E3FEC8B, (q31_t)0x775A2E88, (q31_t)0x2E110A62,\n\t(q31_t)0x776C4EDB, (q31_t)0x2DE2211E, (q31_t)0x777E5CC3,\n\t(q31_t)0x2DB330C7, (q31_t)0x7790583D, (q31_t)0x2D843963,\n\t(q31_t)0x77A24148, (q31_t)0x2D553AFB, (q31_t)0x77B417DF,\n\t(q31_t)0x2D263595, (q31_t)0x77C5DC01, (q31_t)0x2CF72939,\n\t(q31_t)0x77D78DAA, (q31_t)0x2CC815ED, (q31_t)0x77E92CD8,\n\t(q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2C69DAA6,\n\t(q31_t)0x780C33B8, (q31_t)0x2C3AB2B9, (q31_t)0x781D9B64,\n\t(q31_t)0x2C0B83F9, (q31_t)0x782EF08B, (q31_t)0x2BDC4E6F,\n\t(q31_t)0x78403328, (q31_t)0x2BAD1221, (q31_t)0x7851633B,\n\t(q31_t)0x2B7DCF17, (q31_t)0x786280BF, (q31_t)0x2B4E8558,\n\t(q31_t)0x78738BB3, (q31_t)0x2B1F34EB, (q31_t)0x78848413,\n\t(q31_t)0x2AEFDDD8, (q31_t)0x789569DE, (q31_t)0x2AC08025,\n\t(q31_t)0x78A63D10, (q31_t)0x2A911BDB, (q31_t)0x78B6FDA8,\n\t(q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x2A323F9D,\n\t(q31_t)0x78D846FB, (q31_t)0x2A02C7B8, (q31_t)0x78E8CFB1,\n\t(q31_t)0x29D34958, (q31_t)0x78F945C3, (q31_t)0x29A3C484,\n\t(q31_t)0x7909A92C, (q31_t)0x29743945, (q31_t)0x7919F9EB,\n\t(q31_t)0x2944A7A2, (q31_t)0x792A37FE, (q31_t)0x29150FA1,\n\t(q31_t)0x793A6360, (q31_t)0x28E5714A, (q31_t)0x794A7C11,\n\t(q31_t)0x28B5CCA5, (q31_t)0x795A820E, (q31_t)0x288621B9,\n\t(q31_t)0x796A7554, (q31_t)0x2856708C, (q31_t)0x797A55E0,\n\t(q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27F6FB92,\n\t(q31_t)0x7999DEC3, (q31_t)0x27C737D2, (q31_t)0x79A98715,\n\t(q31_t)0x27976DF1, (q31_t)0x79B91CA4, (q31_t)0x27679DF4,\n\t(q31_t)0x79C89F6D, (q31_t)0x2737C7E3, (q31_t)0x79D80F6F,\n\t(q31_t)0x2707EBC6, (q31_t)0x79E76CA6, (q31_t)0x26D809A5,\n\t(q31_t)0x79F6B711, (q31_t)0x26A82185, (q31_t)0x7A05EEAD,\n\t(q31_t)0x26783370, (q31_t)0x7A151377, (q31_t)0x26483F6C,\n\t(q31_t)0x7A24256E, (q31_t)0x26184581, (q31_t)0x7A33248F,\n\t(q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x25B84012,\n\t(q31_t)0x7A50EA46, (q31_t)0x2588349D, (q31_t)0x7A5FB0D8,\n\t(q31_t)0x2558235E, (q31_t)0x7A6E648A, (q31_t)0x25280C5D,\n\t(q31_t)0x7A7D055B, (q31_t)0x24F7EFA1, (q31_t)0x7A8B9348,\n\t(q31_t)0x24C7CD32, (q31_t)0x7A9A0E4F, (q31_t)0x2497A517,\n\t(q31_t)0x7AA8766E, (q31_t)0x24677757, (q31_t)0x7AB6CBA3,\n\t(q31_t)0x243743FA, (q31_t)0x7AC50DEB, (q31_t)0x24070B07,\n\t(q31_t)0x7AD33D45, (q31_t)0x23D6CC86, (q31_t)0x7AE159AE,\n\t(q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x23763EF7,\n\t(q31_t)0x7AFD59A3, (q31_t)0x2345EFF7, (q31_t)0x7B0B3D2C,\n\t(q31_t)0x23159B87, (q31_t)0x7B190DBB, (q31_t)0x22E541AE,\n\t(q31_t)0x7B26CB4F, (q31_t)0x22B4E274, (q31_t)0x7B3475E4,\n\t(q31_t)0x22847DDF, (q31_t)0x7B420D7A, (q31_t)0x225413F8,\n\t(q31_t)0x7B4F920E, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D,\n\t(q31_t)0x21F3304E, (q31_t)0x7B6A6227, (q31_t)0x21C2B69C,\n\t(q31_t)0x7B77ADA8, (q31_t)0x219237B4, (q31_t)0x7B84E61E,\n\t(q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x21312A65,\n\t(q31_t)0x7B9F1DE5, (q31_t)0x21009C0B, (q31_t)0x7BAC1D31,\n\t(q31_t)0x20D0089B, (q31_t)0x7BB9096A, (q31_t)0x209F701C,\n\t(q31_t)0x7BC5E28F, (q31_t)0x206ED295, (q31_t)0x7BD2A89E,\n\t(q31_t)0x203E300D, (q31_t)0x7BDF5B94, (q31_t)0x200D888C,\n\t(q31_t)0x7BEBFB70, (q31_t)0x1FDCDC1A, (q31_t)0x7BF88830,\n\t(q31_t)0x1FAC2ABF, (q31_t)0x7C0501D1, (q31_t)0x1F7B7480,\n\t(q31_t)0x7C116853, (q31_t)0x1F4AB967, (q31_t)0x7C1DBBB2,\n\t(q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1EE934C2,\n\t(q31_t)0x7C362904, (q31_t)0x1EB86B46, (q31_t)0x7C4242F2,\n\t(q31_t)0x1E879D0C, (q31_t)0x7C4E49B6, (q31_t)0x1E56CA1E,\n\t(q31_t)0x7C5A3D4F, (q31_t)0x1E25F281, (q31_t)0x7C661DBB,\n\t(q31_t)0x1DF5163F, (q31_t)0x7C71EAF8, (q31_t)0x1DC4355D,\n\t(q31_t)0x7C7DA504, (q31_t)0x1D934FE5, (q31_t)0x7C894BDD,\n\t(q31_t)0x1D6265DD, (q31_t)0x7C94DF82, (q31_t)0x1D31774D,\n\t(q31_t)0x7CA05FF1, (q31_t)0x1D00843C, (q31_t)0x7CABCD27,\n\t(q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C9E90B8,\n\t(q31_t)0x7CC26DE5, (q31_t)0x1C6D9053, (q31_t)0x7CCDA168,\n\t(q31_t)0x1C3C8B8C, (q31_t)0x7CD8C1AD, (q31_t)0x1C0B826A,\n\t(q31_t)0x7CE3CEB1, (q31_t)0x1BDA74F5, (q31_t)0x7CEEC873,\n\t(q31_t)0x1BA96334, (q31_t)0x7CF9AEF0, (q31_t)0x1B784D30,\n\t(q31_t)0x7D048228, (q31_t)0x1B4732EF, (q31_t)0x7D0F4218,\n\t(q31_t)0x1B161479, (q31_t)0x7D19EEBE, (q31_t)0x1AE4F1D6,\n\t(q31_t)0x7D24881A, (q31_t)0x1AB3CB0C, (q31_t)0x7D2F0E2A,\n\t(q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x1A517127,\n\t(q31_t)0x7D43E05E, (q31_t)0x1A203E1B, (q31_t)0x7D4E2C7E,\n\t(q31_t)0x19EF0706, (q31_t)0x7D58654C, (q31_t)0x19BDCBF2,\n\t(q31_t)0x7D628AC5, (q31_t)0x198C8CE6, (q31_t)0x7D6C9CE9,\n\t(q31_t)0x195B49E9, (q31_t)0x7D769BB5, (q31_t)0x192A0303,\n\t(q31_t)0x7D808727, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F,\n\t(q31_t)0x18C7699B, (q31_t)0x7D9423FB, (q31_t)0x18961727,\n\t(q31_t)0x7D9DD55A, (q31_t)0x1864C0E9, (q31_t)0x7DA77359,\n\t(q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x1802092C,\n\t(q31_t)0x7DBA7534, (q31_t)0x17D0A7BB, (q31_t)0x7DC3D90D,\n\t(q31_t)0x179F429F, (q31_t)0x7DCD2981, (q31_t)0x176DD9DE,\n\t(q31_t)0x7DD6668E, (q31_t)0x173C6D80, (q31_t)0x7DDF9034,\n\t(q31_t)0x170AFD8D, (q31_t)0x7DE8A670, (q31_t)0x16D98A0C,\n\t(q31_t)0x7DF1A942, (q31_t)0x16A81305, (q31_t)0x7DFA98A7,\n\t(q31_t)0x1676987F, (q31_t)0x7E03749F, (q31_t)0x16451A83,\n\t(q31_t)0x7E0C3D29, (q31_t)0x16139917, (q31_t)0x7E14F242,\n\t(q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x15B08C11,\n\t(q31_t)0x7E26221E, (q31_t)0x157F0086, (q31_t)0x7E2E9CDF,\n\t(q31_t)0x154D71AA, (q31_t)0x7E37042A, (q31_t)0x151BDF85,\n\t(q31_t)0x7E3F57FE, (q31_t)0x14EA4A1F, (q31_t)0x7E47985B,\n\t(q31_t)0x14B8B17F, (q31_t)0x7E4FC53E, (q31_t)0x148715AD,\n\t(q31_t)0x7E57DEA6, (q31_t)0x145576B1, (q31_t)0x7E5FE493,\n\t(q31_t)0x1423D492, (q31_t)0x7E67D702, (q31_t)0x13F22F57,\n\t(q31_t)0x7E6FB5F3, (q31_t)0x13C0870A, (q31_t)0x7E778165,\n\t(q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x135D2D53,\n\t(q31_t)0x7E86DDC5, (q31_t)0x132B7BF9, (q31_t)0x7E8E6EB1,\n\t(q31_t)0x12F9C7AA, (q31_t)0x7E95EC19, (q31_t)0x12C8106E,\n\t(q31_t)0x7E9D55FC, (q31_t)0x1296564D, (q31_t)0x7EA4AC58,\n\t(q31_t)0x1264994E, (q31_t)0x7EABEF2C, (q31_t)0x1232D978,\n\t(q31_t)0x7EB31E77, (q31_t)0x120116D4, (q31_t)0x7EBA3A39,\n\t(q31_t)0x11CF516A, (q31_t)0x7EC1426F, (q31_t)0x119D8940,\n\t(q31_t)0x7EC8371A, (q31_t)0x116BBE5F, (q31_t)0x7ECF1837,\n\t(q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x11082096,\n\t(q31_t)0x7EDC9FC6, (q31_t)0x10D64DBC, (q31_t)0x7EE34635,\n\t(q31_t)0x10A4784A, (q31_t)0x7EE9D913, (q31_t)0x1072A047,\n\t(q31_t)0x7EF0585F, (q31_t)0x1040C5BB, (q31_t)0x7EF6C418,\n\t(q31_t)0x100EE8AD, (q31_t)0x7EFD1C3C, (q31_t)0x0FDD0925,\n\t(q31_t)0x7F0360CB, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3,\n\t(q31_t)0x0F7942C6, (q31_t)0x7F0FAF24, (q31_t)0x0F475BFE,\n\t(q31_t)0x7F15B8EE, (q31_t)0x0F1572DC, (q31_t)0x7F1BAF1E,\n\t(q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0EB199A3,\n\t(q31_t)0x7F2760AF, (q31_t)0x0E7FA99D, (q31_t)0x7F2D1C0E,\n\t(q31_t)0x0E4DB75B, (q31_t)0x7F32C3D0, (q31_t)0x0E1BC2E3,\n\t(q31_t)0x7F3857F5, (q31_t)0x0DE9CC3F, (q31_t)0x7F3DD87C,\n\t(q31_t)0x0DB7D376, (q31_t)0x7F434563, (q31_t)0x0D85D88F,\n\t(q31_t)0x7F489EAA, (q31_t)0x0D53DB92, (q31_t)0x7F4DE450,\n\t(q31_t)0x0D21DC87, (q31_t)0x7F531654, (q31_t)0x0CEFDB75,\n\t(q31_t)0x7F5834B6, (q31_t)0x0CBDD865, (q31_t)0x7F5D3F75,\n\t(q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0C59CC67,\n\t(q31_t)0x7F671A04, (q31_t)0x0C27C389, (q31_t)0x7F6BE9D4,\n\t(q31_t)0x0BF5B8CB, (q31_t)0x7F70A5FD, (q31_t)0x0BC3AC35,\n\t(q31_t)0x7F754E7F, (q31_t)0x0B919DCE, (q31_t)0x7F79E35A,\n\t(q31_t)0x0B5F8D9F, (q31_t)0x7F7E648B, (q31_t)0x0B2D7BAE,\n\t(q31_t)0x7F82D214, (q31_t)0x0AFB6805, (q31_t)0x7F872BF3,\n\t(q31_t)0x0AC952AA, (q31_t)0x7F8B7226, (q31_t)0x0A973BA5,\n\t(q31_t)0x7F8FA4AF, (q31_t)0x0A6522FE, (q31_t)0x7F93C38C,\n\t(q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x0A00ECE8,\n\t(q31_t)0x7F9BC63F, (q31_t)0x09CECF89, (q31_t)0x7F9FAA15,\n\t(q31_t)0x099CB0A7, (q31_t)0x7FA37A3C, (q31_t)0x096A9049,\n\t(q31_t)0x7FA736B4, (q31_t)0x09386E77, (q31_t)0x7FAADF7C,\n\t(q31_t)0x09064B3A, (q31_t)0x7FAE7494, (q31_t)0x08D42698,\n\t(q31_t)0x7FB1F5FC, (q31_t)0x08A2009A, (q31_t)0x7FB563B2,\n\t(q31_t)0x086FD947, (q31_t)0x7FB8BDB7, (q31_t)0x083DB0A7,\n\t(q31_t)0x7FBC040A, (q31_t)0x080B86C1, (q31_t)0x7FBF36A9,\n\t(q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x07A72F45,\n\t(q31_t)0x7FC560CF, (q31_t)0x077501BE, (q31_t)0x7FC85853,\n\t(q31_t)0x0742D310, (q31_t)0x7FCB3C23, (q31_t)0x0710A344,\n\t(q31_t)0x7FCE0C3E, (q31_t)0x06DE7261, (q31_t)0x7FD0C8A3,\n\t(q31_t)0x06AC406F, (q31_t)0x7FD37152, (q31_t)0x067A0D75,\n\t(q31_t)0x7FD6064B, (q31_t)0x0647D97C, (q31_t)0x7FD8878D,\n\t(q31_t)0x0615A48A, (q31_t)0x7FDAF518, (q31_t)0x05E36EA9,\n\t(q31_t)0x7FDD4EEC, (q31_t)0x05B137DF, (q31_t)0x7FDF9508,\n\t(q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x054CC7B0,\n\t(q31_t)0x7FE3E616, (q31_t)0x051A8E5C, (q31_t)0x7FE5F108,\n\t(q31_t)0x04E8543D, (q31_t)0x7FE7E840, (q31_t)0x04B6195D,\n\t(q31_t)0x7FE9CBC0, (q31_t)0x0483DDC3, (q31_t)0x7FEB9B85,\n\t(q31_t)0x0451A176, (q31_t)0x7FED5790, (q31_t)0x041F647F,\n\t(q31_t)0x7FEEFFE1, (q31_t)0x03ED26E6, (q31_t)0x7FF09477,\n\t(q31_t)0x03BAE8B1, (q31_t)0x7FF21553, (q31_t)0x0388A9E9,\n\t(q31_t)0x7FF38273, (q31_t)0x03566A96, (q31_t)0x7FF4DBD8,\n\t(q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x02F1EA6B,\n\t(q31_t)0x7FF7536F, (q31_t)0x02BFA9A4, (q31_t)0x7FF871A1,\n\t(q31_t)0x028D6870, (q31_t)0x7FF97C17, (q31_t)0x025B26D7,\n\t(q31_t)0x7FFA72D1, (q31_t)0x0228E4E1, (q31_t)0x7FFB55CE,\n\t(q31_t)0x01F6A296, (q31_t)0x7FFC250F, (q31_t)0x01C45FFE,\n\t(q31_t)0x7FFCE093, (q31_t)0x01921D1F, (q31_t)0x7FFD885A,\n\t(q31_t)0x015FDA03, (q31_t)0x7FFE1C64, (q31_t)0x012D96B0,\n\t(q31_t)0x7FFE9CB2, (q31_t)0x00FB532F, (q31_t)0x7FFF0942,\n\t(q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x0096CBC1,\n\t(q31_t)0x7FFFA72C, (q31_t)0x006487E3, (q31_t)0x7FFFD885,\n\t(q31_t)0x003243F5, (q31_t)0x7FFFF621, (q31_t)0x00000000,\n\t(q31_t)0x7FFFFFFF, (q31_t)0xFFCDBC0A, (q31_t)0x7FFFF621,\n\t(q31_t)0xFF9B781D, (q31_t)0x7FFFD885, (q31_t)0xFF69343E,\n\t(q31_t)0x7FFFA72C, (q31_t)0xFF36F078, (q31_t)0x7FFF6216,\n\t(q31_t)0xFF04ACD0, (q31_t)0x7FFF0942, (q31_t)0xFED2694F,\n\t(q31_t)0x7FFE9CB2, (q31_t)0xFEA025FC, (q31_t)0x7FFE1C64,\n\t(q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFE3BA001,\n\t(q31_t)0x7FFCE093, (q31_t)0xFE095D69, (q31_t)0x7FFC250F,\n\t(q31_t)0xFDD71B1E, (q31_t)0x7FFB55CE, (q31_t)0xFDA4D928,\n\t(q31_t)0x7FFA72D1, (q31_t)0xFD72978F, (q31_t)0x7FF97C17,\n\t(q31_t)0xFD40565B, (q31_t)0x7FF871A1, (q31_t)0xFD0E1594,\n\t(q31_t)0x7FF7536F, (q31_t)0xFCDBD541, (q31_t)0x7FF62182,\n\t(q31_t)0xFCA99569, (q31_t)0x7FF4DBD8, (q31_t)0xFC775616,\n\t(q31_t)0x7FF38273, (q31_t)0xFC45174E, (q31_t)0x7FF21553,\n\t(q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFBE09B80,\n\t(q31_t)0x7FEEFFE1, (q31_t)0xFBAE5E89, (q31_t)0x7FED5790,\n\t(q31_t)0xFB7C223C, (q31_t)0x7FEB9B85, (q31_t)0xFB49E6A2,\n\t(q31_t)0x7FE9CBC0, (q31_t)0xFB17ABC2, (q31_t)0x7FE7E840,\n\t(q31_t)0xFAE571A4, (q31_t)0x7FE5F108, (q31_t)0xFAB3384F,\n\t(q31_t)0x7FE3E616, (q31_t)0xFA80FFCB, (q31_t)0x7FE1C76B,\n\t(q31_t)0xFA4EC820, (q31_t)0x7FDF9508, (q31_t)0xFA1C9156,\n\t(q31_t)0x7FDD4EEC, (q31_t)0xF9EA5B75, (q31_t)0x7FDAF518,\n\t(q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF985F28A,\n\t(q31_t)0x7FD6064B, (q31_t)0xF953BF90, (q31_t)0x7FD37152,\n\t(q31_t)0xF9218D9E, (q31_t)0x7FD0C8A3, (q31_t)0xF8EF5CBB,\n\t(q31_t)0x7FCE0C3E, (q31_t)0xF8BD2CEF, (q31_t)0x7FCB3C23,\n\t(q31_t)0xF88AFE41, (q31_t)0x7FC85853, (q31_t)0xF858D0BA,\n\t(q31_t)0x7FC560CF, (q31_t)0xF826A461, (q31_t)0x7FC25596,\n\t(q31_t)0xF7F4793E, (q31_t)0x7FBF36A9, (q31_t)0xF7C24F58,\n\t(q31_t)0x7FBC040A, (q31_t)0xF79026B8, (q31_t)0x7FB8BDB7,\n\t(q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF72BD967,\n\t(q31_t)0x7FB1F5FC, (q31_t)0xF6F9B4C5, (q31_t)0x7FAE7494,\n\t(q31_t)0xF6C79188, (q31_t)0x7FAADF7C, (q31_t)0xF6956FB6,\n\t(q31_t)0x7FA736B4, (q31_t)0xF6634F58, (q31_t)0x7FA37A3C,\n\t(q31_t)0xF6313076, (q31_t)0x7F9FAA15, (q31_t)0xF5FF1317,\n\t(q31_t)0x7F9BC63F, (q31_t)0xF5CCF743, (q31_t)0x7F97CEBC,\n\t(q31_t)0xF59ADD01, (q31_t)0x7F93C38C, (q31_t)0xF568C45A,\n\t(q31_t)0x7F8FA4AF, (q31_t)0xF536AD55, (q31_t)0x7F8B7226,\n\t(q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF4D28451,\n\t(q31_t)0x7F82D214, (q31_t)0xF4A07260, (q31_t)0x7F7E648B,\n\t(q31_t)0xF46E6231, (q31_t)0x7F79E35A, (q31_t)0xF43C53CA,\n\t(q31_t)0x7F754E7F, (q31_t)0xF40A4734, (q31_t)0x7F70A5FD,\n\t(q31_t)0xF3D83C76, (q31_t)0x7F6BE9D4, (q31_t)0xF3A63398,\n\t(q31_t)0x7F671A04, (q31_t)0xF3742CA1, (q31_t)0x7F62368F,\n\t(q31_t)0xF342279A, (q31_t)0x7F5D3F75, (q31_t)0xF310248A,\n\t(q31_t)0x7F5834B6, (q31_t)0xF2DE2378, (q31_t)0x7F531654,\n\t(q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF27A2770,\n\t(q31_t)0x7F489EAA, (q31_t)0xF2482C89, (q31_t)0x7F434563,\n\t(q31_t)0xF21633C0, (q31_t)0x7F3DD87C, (q31_t)0xF1E43D1C,\n\t(q31_t)0x7F3857F5, (q31_t)0xF1B248A5, (q31_t)0x7F32C3D0,\n\t(q31_t)0xF1805662, (q31_t)0x7F2D1C0E, (q31_t)0xF14E665C,\n\t(q31_t)0x7F2760AF, (q31_t)0xF11C789A, (q31_t)0x7F2191B4,\n\t(q31_t)0xF0EA8D23, (q31_t)0x7F1BAF1E, (q31_t)0xF0B8A401,\n\t(q31_t)0x7F15B8EE, (q31_t)0xF086BD39, (q31_t)0x7F0FAF24,\n\t(q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xF022F6DA,\n\t(q31_t)0x7F0360CB, (q31_t)0xEFF11752, (q31_t)0x7EFD1C3C,\n\t(q31_t)0xEFBF3A44, (q31_t)0x7EF6C418, (q31_t)0xEF8D5FB8,\n\t(q31_t)0x7EF0585F, (q31_t)0xEF5B87B5, (q31_t)0x7EE9D913,\n\t(q31_t)0xEF29B243, (q31_t)0x7EE34635, (q31_t)0xEEF7DF6A,\n\t(q31_t)0x7EDC9FC6, (q31_t)0xEEC60F31, (q31_t)0x7ED5E5C6,\n\t(q31_t)0xEE9441A0, (q31_t)0x7ECF1837, (q31_t)0xEE6276BF,\n\t(q31_t)0x7EC8371A, (q31_t)0xEE30AE95, (q31_t)0x7EC1426F,\n\t(q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xEDCD2687,\n\t(q31_t)0x7EB31E77, (q31_t)0xED9B66B2, (q31_t)0x7EABEF2C,\n\t(q31_t)0xED69A9B2, (q31_t)0x7EA4AC58, (q31_t)0xED37EF91,\n\t(q31_t)0x7E9D55FC, (q31_t)0xED063855, (q31_t)0x7E95EC19,\n\t(q31_t)0xECD48406, (q31_t)0x7E8E6EB1, (q31_t)0xECA2D2AC,\n\t(q31_t)0x7E86DDC5, (q31_t)0xEC71244F, (q31_t)0x7E7F3956,\n\t(q31_t)0xEC3F78F5, (q31_t)0x7E778165, (q31_t)0xEC0DD0A8,\n\t(q31_t)0x7E6FB5F3, (q31_t)0xEBDC2B6D, (q31_t)0x7E67D702,\n\t(q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEB78EA52,\n\t(q31_t)0x7E57DEA6, (q31_t)0xEB474E80, (q31_t)0x7E4FC53E,\n\t(q31_t)0xEB15B5E0, (q31_t)0x7E47985B, (q31_t)0xEAE4207A,\n\t(q31_t)0x7E3F57FE, (q31_t)0xEAB28E55, (q31_t)0x7E37042A,\n\t(q31_t)0xEA80FF79, (q31_t)0x7E2E9CDF, (q31_t)0xEA4F73EE,\n\t(q31_t)0x7E26221E, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9,\n\t(q31_t)0xE9EC66E8, (q31_t)0x7E14F242, (q31_t)0xE9BAE57C,\n\t(q31_t)0x7E0C3D29, (q31_t)0xE9896780, (q31_t)0x7E03749F,\n\t(q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE92675F4,\n\t(q31_t)0x7DF1A942, (q31_t)0xE8F50273, (q31_t)0x7DE8A670,\n\t(q31_t)0xE8C3927F, (q31_t)0x7DDF9034, (q31_t)0xE8922621,\n\t(q31_t)0x7DD6668E, (q31_t)0xE860BD60, (q31_t)0x7DCD2981,\n\t(q31_t)0xE82F5844, (q31_t)0x7DC3D90D, (q31_t)0xE7FDF6D3,\n\t(q31_t)0x7DBA7534, (q31_t)0xE7CC9917, (q31_t)0x7DB0FDF7,\n\t(q31_t)0xE79B3F16, (q31_t)0x7DA77359, (q31_t)0xE769E8D8,\n\t(q31_t)0x7D9DD55A, (q31_t)0xE7389664, (q31_t)0x7D9423FB,\n\t(q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE6D5FCFC,\n\t(q31_t)0x7D808727, (q31_t)0xE6A4B616, (q31_t)0x7D769BB5,\n\t(q31_t)0xE6737319, (q31_t)0x7D6C9CE9, (q31_t)0xE642340D,\n\t(q31_t)0x7D628AC5, (q31_t)0xE610F8F9, (q31_t)0x7D58654C,\n\t(q31_t)0xE5DFC1E4, (q31_t)0x7D4E2C7E, (q31_t)0xE5AE8ED8,\n\t(q31_t)0x7D43E05E, (q31_t)0xE57D5FDA, (q31_t)0x7D3980EC,\n\t(q31_t)0xE54C34F3, (q31_t)0x7D2F0E2A, (q31_t)0xE51B0E2A,\n\t(q31_t)0x7D24881A, (q31_t)0xE4E9EB86, (q31_t)0x7D19EEBE,\n\t(q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE487B2CF,\n\t(q31_t)0x7D048228, (q31_t)0xE4569CCB, (q31_t)0x7CF9AEF0,\n\t(q31_t)0xE4258B0A, (q31_t)0x7CEEC873, (q31_t)0xE3F47D95,\n\t(q31_t)0x7CE3CEB1, (q31_t)0xE3C37473, (q31_t)0x7CD8C1AD,\n\t(q31_t)0xE3926FAC, (q31_t)0x7CCDA168, (q31_t)0xE3616F47,\n\t(q31_t)0x7CC26DE5, (q31_t)0xE330734C, (q31_t)0x7CB72724,\n\t(q31_t)0xE2FF7BC3, (q31_t)0x7CABCD27, (q31_t)0xE2CE88B2,\n\t(q31_t)0x7CA05FF1, (q31_t)0xE29D9A22, (q31_t)0x7C94DF82,\n\t(q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE23BCAA2,\n\t(q31_t)0x7C7DA504, (q31_t)0xE20AE9C1, (q31_t)0x7C71EAF8,\n\t(q31_t)0xE1DA0D7E, (q31_t)0x7C661DBB, (q31_t)0xE1A935E1,\n\t(q31_t)0x7C5A3D4F, (q31_t)0xE17862F3, (q31_t)0x7C4E49B6,\n\t(q31_t)0xE14794B9, (q31_t)0x7C4242F2, (q31_t)0xE116CB3D,\n\t(q31_t)0x7C362904, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE,\n\t(q31_t)0xE0B54698, (q31_t)0x7C1DBBB2, (q31_t)0xE0848B7F,\n\t(q31_t)0x7C116853, (q31_t)0xE053D541, (q31_t)0x7C0501D1,\n\t(q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDFF27773,\n\t(q31_t)0x7BEBFB70, (q31_t)0xDFC1CFF2, (q31_t)0x7BDF5B94,\n\t(q31_t)0xDF912D6A, (q31_t)0x7BD2A89E, (q31_t)0xDF608FE3,\n\t(q31_t)0x7BC5E28F, (q31_t)0xDF2FF764, (q31_t)0x7BB9096A,\n\t(q31_t)0xDEFF63F4, (q31_t)0x7BAC1D31, (q31_t)0xDECED59B,\n\t(q31_t)0x7B9F1DE5, (q31_t)0xDE9E4C60, (q31_t)0x7B920B89,\n\t(q31_t)0xDE6DC84B, (q31_t)0x7B84E61E, (q31_t)0xDE3D4963,\n\t(q31_t)0x7B77ADA8, (q31_t)0xDE0CCFB1, (q31_t)0x7B6A6227,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDDABEC07,\n\t(q31_t)0x7B4F920E, (q31_t)0xDD7B8220, (q31_t)0x7B420D7A,\n\t(q31_t)0xDD4B1D8B, (q31_t)0x7B3475E4, (q31_t)0xDD1ABE51,\n\t(q31_t)0x7B26CB4F, (q31_t)0xDCEA6478, (q31_t)0x7B190DBB,\n\t(q31_t)0xDCBA1008, (q31_t)0x7B0B3D2C, (q31_t)0xDC89C108,\n\t(q31_t)0x7AFD59A3, (q31_t)0xDC597781, (q31_t)0x7AEF6323,\n\t(q31_t)0xDC293379, (q31_t)0x7AE159AE, (q31_t)0xDBF8F4F8,\n\t(q31_t)0x7AD33D45, (q31_t)0xDBC8BC05, (q31_t)0x7AC50DEB,\n\t(q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDB685AE8,\n\t(q31_t)0x7AA8766E, (q31_t)0xDB3832CD, (q31_t)0x7A9A0E4F,\n\t(q31_t)0xDB08105E, (q31_t)0x7A8B9348, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x7A7D055B, (q31_t)0xDAA7DCA1, (q31_t)0x7A6E648A,\n\t(q31_t)0xDA77CB62, (q31_t)0x7A5FB0D8, (q31_t)0xDA47BFED,\n\t(q31_t)0x7A50EA46, (q31_t)0xDA17BA4A, (q31_t)0x7A4210D8,\n\t(q31_t)0xD9E7BA7E, (q31_t)0x7A33248F, (q31_t)0xD9B7C093,\n\t(q31_t)0x7A24256E, (q31_t)0xD987CC8F, (q31_t)0x7A151377,\n\t(q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD927F65B,\n\t(q31_t)0x79F6B711, (q31_t)0xD8F81439, (q31_t)0x79E76CA6,\n\t(q31_t)0xD8C8381C, (q31_t)0x79D80F6F, (q31_t)0xD898620C,\n\t(q31_t)0x79C89F6D, (q31_t)0xD868920F, (q31_t)0x79B91CA4,\n\t(q31_t)0xD838C82D, (q31_t)0x79A98715, (q31_t)0xD809046D,\n\t(q31_t)0x7999DEC3, (q31_t)0xD7D946D7, (q31_t)0x798A23B1,\n\t(q31_t)0xD7A98F73, (q31_t)0x797A55E0, (q31_t)0xD779DE46,\n\t(q31_t)0x796A7554, (q31_t)0xD74A335A, (q31_t)0x795A820E,\n\t(q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD6EAF05E,\n\t(q31_t)0x793A6360, (q31_t)0xD6BB585D, (q31_t)0x792A37FE,\n\t(q31_t)0xD68BC6BA, (q31_t)0x7919F9EB, (q31_t)0xD65C3B7B,\n\t(q31_t)0x7909A92C, (q31_t)0xD62CB6A7, (q31_t)0x78F945C3,\n\t(q31_t)0xD5FD3847, (q31_t)0x78E8CFB1, (q31_t)0xD5CDC062,\n\t(q31_t)0x78D846FB, (q31_t)0xD59E4EFE, (q31_t)0x78C7ABA1,\n\t(q31_t)0xD56EE424, (q31_t)0x78B6FDA8, (q31_t)0xD53F7FDA,\n\t(q31_t)0x78A63D10, (q31_t)0xD5102227, (q31_t)0x789569DE,\n\t(q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD4B17AA7,\n\t(q31_t)0x78738BB3, (q31_t)0xD48230E8, (q31_t)0x786280BF,\n\t(q31_t)0xD452EDDE, (q31_t)0x7851633B, (q31_t)0xD423B190,\n\t(q31_t)0x78403328, (q31_t)0xD3F47C06, (q31_t)0x782EF08B,\n\t(q31_t)0xD3C54D46, (q31_t)0x781D9B64, (q31_t)0xD3962559,\n\t(q31_t)0x780C33B8, (q31_t)0xD3670445, (q31_t)0x77FAB988,\n\t(q31_t)0xD337EA12, (q31_t)0x77E92CD8, (q31_t)0xD308D6C6,\n\t(q31_t)0x77D78DAA, (q31_t)0xD2D9CA6A, (q31_t)0x77C5DC01,\n\t(q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD27BC69C,\n\t(q31_t)0x77A24148, (q31_t)0xD24CCF38, (q31_t)0x7790583D,\n\t(q31_t)0xD21DDEE1, (q31_t)0x777E5CC3, (q31_t)0xD1EEF59E,\n\t(q31_t)0x776C4EDB, (q31_t)0xD1C01374, (q31_t)0x775A2E88,\n\t(q31_t)0xD191386D, (q31_t)0x7747FBCE, (q31_t)0xD162648F,\n\t(q31_t)0x7735B6AE, (q31_t)0xD13397E1, (q31_t)0x77235F2D,\n\t(q31_t)0xD104D26B, (q31_t)0x7710F54B, (q31_t)0xD0D61433,\n\t(q31_t)0x76FE790E, (q31_t)0xD0A75D42, (q31_t)0x76EBEA77,\n\t(q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xD04A054D,\n\t(q31_t)0x76C69646, (q31_t)0xD01B6459, (q31_t)0x76B3D0B3,\n\t(q31_t)0xCFECCAC7, (q31_t)0x76A0F8D2, (q31_t)0xCFBE389F,\n\t(q31_t)0x768E0EA5, (q31_t)0xCF8FADE8, (q31_t)0x767B1230,\n\t(q31_t)0xCF612AAA, (q31_t)0x76680376, (q31_t)0xCF32AEEB,\n\t(q31_t)0x7654E279, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C,\n\t(q31_t)0xCED5CE08, (q31_t)0x762E69C3, (q31_t)0xCEA768F2,\n\t(q31_t)0x761B1211, (q31_t)0xCE790B78, (q31_t)0x7607A827,\n\t(q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCE1C6776,\n\t(q31_t)0x75E09DBD, (q31_t)0xCDEE20FC, (q31_t)0x75CCFD42,\n\t(q31_t)0xCDBFE23A, (q31_t)0x75B94A9C, (q31_t)0xCD91AB38,\n\t(q31_t)0x75A585CF, (q31_t)0xCD637BFD, (q31_t)0x7591AEDD,\n\t(q31_t)0xCD355490, (q31_t)0x757DC5CA, (q31_t)0xCD0734F8,\n\t(q31_t)0x7569CA98, (q31_t)0xCCD91D3D, (q31_t)0x7555BD4B,\n\t(q31_t)0xCCAB0D65, (q31_t)0x75419DE6, (q31_t)0xCC7D0577,\n\t(q31_t)0x752D6C6C, (q31_t)0xCC4F057B, (q31_t)0x751928E0,\n\t(q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCBF31D75,\n\t(q31_t)0x74F06B9E, (q31_t)0xCBC53578, (q31_t)0x74DBF1EF,\n\t(q31_t)0xCB975589, (q31_t)0x74C7663A, (q31_t)0xCB697DB0,\n\t(q31_t)0x74B2C883, (q31_t)0xCB3BADF2, (q31_t)0x749E18CD,\n\t(q31_t)0xCB0DE658, (q31_t)0x7489571B, (q31_t)0xCAE026E8,\n\t(q31_t)0x74748371, (q31_t)0xCAB26FA9, (q31_t)0x745F9DD1,\n\t(q31_t)0xCA84C0A2, (q31_t)0x744AA63E, (q31_t)0xCA5719DB,\n\t(q31_t)0x74359CBD, (q31_t)0xCA297B5A, (q31_t)0x74208150,\n\t(q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC9CE5748,\n\t(q31_t)0x73F614C0, (q31_t)0xC9A0D1C4, (q31_t)0x73E0C3A3,\n\t(q31_t)0xC97354A3, (q31_t)0x73CB60A7, (q31_t)0xC945DFEC,\n\t(q31_t)0x73B5EBD0, (q31_t)0xC91873A5, (q31_t)0x73A06522,\n\t(q31_t)0xC8EB0FD6, (q31_t)0x738ACC9E, (q31_t)0xC8BDB485,\n\t(q31_t)0x73752249, (q31_t)0xC89061BA, (q31_t)0x735F6626,\n\t(q31_t)0xC863177B, (q31_t)0x73499838, (q31_t)0xC835D5D0,\n\t(q31_t)0x7333B883, (q31_t)0xC8089CBF, (q31_t)0x731DC709,\n\t(q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC7AE4489,\n\t(q31_t)0x72F1AED8, (q31_t)0xC7812571, (q31_t)0x72DB8828,\n\t(q31_t)0xC7540F10, (q31_t)0x72C54FC0, (q31_t)0xC727016C,\n\t(q31_t)0x72AF05A6, (q31_t)0xC6F9FC8D, (q31_t)0x7298A9DC,\n\t(q31_t)0xC6CD0079, (q31_t)0x72823C66, (q31_t)0xC6A00D36,\n\t(q31_t)0x726BBD48, (q31_t)0xC67322CD, (q31_t)0x72552C84,\n\t(q31_t)0xC6464144, (q31_t)0x723E8A1F, (q31_t)0xC61968A2,\n\t(q31_t)0x7227D61C, (q31_t)0xC5EC98ED, (q31_t)0x7211107D,\n\t(q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC593146A,\n\t(q31_t)0x71E3507F, (q31_t)0xC5665FA8, (q31_t)0x71CC5626,\n\t(q31_t)0xC539B3F0, (q31_t)0x71B54A40, (q31_t)0xC50D1148,\n\t(q31_t)0x719E2CD2, (q31_t)0xC4E077B8, (q31_t)0x7186FDDE,\n\t(q31_t)0xC4B3E746, (q31_t)0x716FBD68, (q31_t)0xC4875FF8,\n\t(q31_t)0x71586B73, (q31_t)0xC45AE1D7, (q31_t)0x71410804,\n\t(q31_t)0xC42E6CE8, (q31_t)0x7129931E, (q31_t)0xC4020132,\n\t(q31_t)0x71120CC5, (q31_t)0xC3D59EBD, (q31_t)0x70FA74FB,\n\t(q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC37CF5B0,\n\t(q31_t)0x70CB1127, (q31_t)0xC350AF25, (q31_t)0x70B34524,\n\t(q31_t)0xC32471F6, (q31_t)0x709B67C0, (q31_t)0xC2F83E2A,\n\t(q31_t)0x708378FE, (q31_t)0xC2CC13C7, (q31_t)0x706B78E3,\n\t(q31_t)0xC29FF2D4, (q31_t)0x70536771, (q31_t)0xC273DB58,\n\t(q31_t)0x703B44AC, (q31_t)0xC247CD5A, (q31_t)0x70231099,\n\t(q31_t)0xC21BC8E0, (q31_t)0x700ACB3B, (q31_t)0xC1EFCDF2,\n\t(q31_t)0x6FF27496, (q31_t)0xC1C3DC96, (q31_t)0x6FDA0CAD,\n\t(q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC16C16B0,\n\t(q31_t)0x6FA90920, (q31_t)0xC1404233, (q31_t)0x6F906D84,\n\t(q31_t)0xC1147763, (q31_t)0x6F77C0B3, (q31_t)0xC0E8B648,\n\t(q31_t)0x6F5F02B1, (q31_t)0xC0BCFEE7, (q31_t)0x6F463383,\n\t(q31_t)0xC0915147, (q31_t)0x6F2D532C, (q31_t)0xC065AD70,\n\t(q31_t)0x6F1461AF, (q31_t)0xC03A1368, (q31_t)0x6EFB5F12,\n\t(q31_t)0xC00E8335, (q31_t)0x6EE24B57, (q31_t)0xBFE2FCDF,\n\t(q31_t)0x6EC92682, (q31_t)0xBFB7806C, (q31_t)0x6EAFF098,\n\t(q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBF60A54A,\n\t(q31_t)0x6E7D5193, (q31_t)0xBF3546A8, (q31_t)0x6E63E87F,\n\t(q31_t)0xBF09F204, (q31_t)0x6E4A6E65, (q31_t)0xBEDEA765,\n\t(q31_t)0x6E30E349, (q31_t)0xBEB366D1, (q31_t)0x6E17472F,\n\t(q31_t)0xBE88304F, (q31_t)0x6DFD9A1B, (q31_t)0xBE5D03E5,\n\t(q31_t)0x6DE3DC11, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14,\n\t(q31_t)0xBE06C977, (q31_t)0x6DB02D29, (q31_t)0xBDDBBB7F,\n\t(q31_t)0x6D963C54, (q31_t)0xBDB0B7BA, (q31_t)0x6D7C3A98,\n\t(q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBD5ACEE5,\n\t(q31_t)0x6D48047E, (q31_t)0xBD2FE9E1, (q31_t)0x6D2DD027,\n\t(q31_t)0xBD050F2C, (q31_t)0x6D138AFA, (q31_t)0xBCDA3ECA,\n\t(q31_t)0x6CF934FB, (q31_t)0xBCAF78C3, (q31_t)0x6CDECE2E,\n\t(q31_t)0xBC84BD1E, (q31_t)0x6CC45697, (q31_t)0xBC5A0BE1,\n\t(q31_t)0x6CA9CE3A, (q31_t)0xBC2F6513, (q31_t)0x6C8F351C,\n\t(q31_t)0xBC04C8BA, (q31_t)0x6C748B3F, (q31_t)0xBBDA36DC,\n\t(q31_t)0x6C59D0A9, (q31_t)0xBBAFAF81, (q31_t)0x6C3F055D,\n\t(q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBB5AC06C,\n\t(q31_t)0x6C093CB6, (q31_t)0xBB3058C0, (q31_t)0x6BEE3F62,\n\t(q31_t)0xBB05FBB0, (q31_t)0x6BD3316A, (q31_t)0xBADBA943,\n\t(q31_t)0x6BB812D0, (q31_t)0xBAB1617F, (q31_t)0x6B9CE39B,\n\t(q31_t)0xBA87246C, (q31_t)0x6B81A3CD, (q31_t)0xBA5CF210,\n\t(q31_t)0x6B66536A, (q31_t)0xBA32CA70, (q31_t)0x6B4AF278,\n\t(q31_t)0xBA08AD94, (q31_t)0x6B2F80FA, (q31_t)0xB9DE9B83,\n\t(q31_t)0x6B13FEF5, (q31_t)0xB9B49442, (q31_t)0x6AF86C6C,\n\t(q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB960A64B,\n\t(q31_t)0x6AC115E1, (q31_t)0xB936BFA3, (q31_t)0x6AA551E8,\n\t(q31_t)0xB90CE3E6, (q31_t)0x6A897D7D, (q31_t)0xB8E31319,\n\t(q31_t)0x6A6D98A4, (q31_t)0xB8B94D44, (q31_t)0x6A51A361,\n\t(q31_t)0xB88F926C, (q31_t)0x6A359DB9, (q31_t)0xB865E299,\n\t(q31_t)0x6A1987B0, (q31_t)0xB83C3DD1, (q31_t)0x69FD614A,\n\t(q31_t)0xB812A419, (q31_t)0x69E12A8C, (q31_t)0xB7E9157A,\n\t(q31_t)0x69C4E37A, (q31_t)0xB7BF91F8, (q31_t)0x69A88C18,\n\t(q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB76CAC68,\n\t(q31_t)0x696FAC78, (q31_t)0xB7434A67, (q31_t)0x69532442,\n\t(q31_t)0xB719F39D, (q31_t)0x69368BCE, (q31_t)0xB6F0A811,\n\t(q31_t)0x6919E320, (q31_t)0xB6C767CA, (q31_t)0x68FD2A3D,\n\t(q31_t)0xB69E32CD, (q31_t)0x68E06129, (q31_t)0xB6750921,\n\t(q31_t)0x68C387E9, (q31_t)0xB64BEACC, (q31_t)0x68A69E81,\n\t(q31_t)0xB622D7D5, (q31_t)0x6889A4F5, (q31_t)0xB5F9D042,\n\t(q31_t)0x686C9B4B, (q31_t)0xB5D0D41A, (q31_t)0x684F8186,\n\t(q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB57EFE21,\n\t(q31_t)0x68151DBE, (q31_t)0xB556245E, (q31_t)0x67F7D3C4,\n\t(q31_t)0xB52D561E, (q31_t)0x67DA79C2, (q31_t)0xB5049368,\n\t(q31_t)0x67BD0FBC, (q31_t)0xB4DBDC42, (q31_t)0x679F95B7,\n\t(q31_t)0xB4B330B2, (q31_t)0x67820BB6, (q31_t)0xB48A90C0,\n\t(q31_t)0x676471C0, (q31_t)0xB461FC70, (q31_t)0x6746C7D7,\n\t(q31_t)0xB43973C9, (q31_t)0x67290E02, (q31_t)0xB410F6D2,\n\t(q31_t)0x670B4443, (q31_t)0xB3E88591, (q31_t)0x66ED6AA1,\n\t(q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB397C649,\n\t(q31_t)0x66B187C3, (q31_t)0xB36F784E, (q31_t)0x66937E90,\n\t(q31_t)0xB3473622, (q31_t)0x6675658C, (q31_t)0xB31EFFCB,\n\t(q31_t)0x66573CBB, (q31_t)0xB2F6D54F, (q31_t)0x66390422,\n\t(q31_t)0xB2CEB6B5, (q31_t)0x661ABBC5, (q31_t)0xB2A6A401,\n\t(q31_t)0x65FC63A9, (q31_t)0xB27E9D3B, (q31_t)0x65DDFBD3,\n\t(q31_t)0xB256A26A, (q31_t)0x65BF8447, (q31_t)0xB22EB392,\n\t(q31_t)0x65A0FD0B, (q31_t)0xB206D0BA, (q31_t)0x65826622,\n\t(q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB1B72F23,\n\t(q31_t)0x6545095F, (q31_t)0xB18F7070, (q31_t)0x6526438E,\n\t(q31_t)0xB167BDD6, (q31_t)0x65076E24, (q31_t)0xB140175B,\n\t(q31_t)0x64E88926, (q31_t)0xB1187D05, (q31_t)0x64C99498,\n\t(q31_t)0xB0F0EEDA, (q31_t)0x64AA907F, (q31_t)0xB0C96CDF,\n\t(q31_t)0x648B7CDF, (q31_t)0xB0A1F71C, (q31_t)0x646C59BF,\n\t(q31_t)0xB07A8D97, (q31_t)0x644D2722, (q31_t)0xB0533055,\n\t(q31_t)0x642DE50D, (q31_t)0xB02BDF5C, (q31_t)0x640E9385,\n\t(q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAFDD625F,\n\t(q31_t)0x63CFC230, (q31_t)0xAFB63667, (q31_t)0x63B0426D,\n\t(q31_t)0xAF8F16D0, (q31_t)0x6390B34A, (q31_t)0xAF6803A1,\n\t(q31_t)0x637114CC, (q31_t)0xAF40FCE0, (q31_t)0x635166F8,\n\t(q31_t)0xAF1A0293, (q31_t)0x6331A9D4, (q31_t)0xAEF314BF,\n\t(q31_t)0x6311DD63, (q31_t)0xAECC336B, (q31_t)0x62F201AC,\n\t(q31_t)0xAEA55E9D, (q31_t)0x62D216B2, (q31_t)0xAE7E965B,\n\t(q31_t)0x62B21C7B, (q31_t)0xAE57DAAA, (q31_t)0x6292130C,\n\t(q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xAE0A8916,\n\t(q31_t)0x6251D297, (q31_t)0xADE3F33E, (q31_t)0x62319B9D,\n\t(q31_t)0xADBD6A10, (q31_t)0x6211557D, (q31_t)0xAD96ED91,\n\t(q31_t)0x61F1003E, (q31_t)0xAD707DC8, (q31_t)0x61D09BE5,\n\t(q31_t)0xAD4A1ABA, (q31_t)0x61B02876, (q31_t)0xAD23C46D,\n\t(q31_t)0x618FA5F6, (q31_t)0xACFD7AE8, (q31_t)0x616F146B,\n\t(q31_t)0xACD73E30, (q31_t)0x614E73D9, (q31_t)0xACB10E4A,\n\t(q31_t)0x612DC446, (q31_t)0xAC8AEB3E, (q31_t)0x610D05B7,\n\t(q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAC3ECBC7,\n\t(q31_t)0x60CB5BB6, (q31_t)0xAC18CF68, (q31_t)0x60AA704F,\n\t(q31_t)0xABF2DFFA, (q31_t)0x60897600, (q31_t)0xABCCFD82,\n\t(q31_t)0x60686CCE, (q31_t)0xABA72806, (q31_t)0x604754BE,\n\t(q31_t)0xAB815F8C, (q31_t)0x60262DD5, (q31_t)0xAB5BA41A,\n\t(q31_t)0x6004F818, (q31_t)0xAB35F5B5, (q31_t)0x5FE3B38D,\n\t(q31_t)0xAB105464, (q31_t)0x5FC26038, (q31_t)0xAAEAC02B,\n\t(q31_t)0x5FA0FE1E, (q31_t)0xAAC53912, (q31_t)0x5F7F8D46,\n\t(q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA7A5253,\n\t(q31_t)0x5F3C7F6B, (q31_t)0xAA54F2B9, (q31_t)0x5F1AE273,\n\t(q31_t)0xAA2FA055, (q31_t)0x5EF936D1, (q31_t)0xAA0A5B2D,\n\t(q31_t)0x5ED77C89, (q31_t)0xA9E52347, (q31_t)0x5EB5B3A1,\n\t(q31_t)0xA9BFF8A8, (q31_t)0x5E93DC1F, (q31_t)0xA99ADB56,\n\t(q31_t)0x5E71F606, (q31_t)0xA975CB56, (q31_t)0x5E50015D,\n\t(q31_t)0xA950C8AF, (q31_t)0x5E2DFE28, (q31_t)0xA92BD366,\n\t(q31_t)0x5E0BEC6E, (q31_t)0xA906EB81, (q31_t)0x5DE9CC32,\n\t(q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA8BD43FA,\n\t(q31_t)0x5DA5604E, (q31_t)0xA8988463, (q31_t)0x5D8314B0,\n\t(q31_t)0xA873D246, (q31_t)0x5D60BAA6, (q31_t)0xA84F2DA9,\n\t(q31_t)0x5D3E5236, (q31_t)0xA82A9693, (q31_t)0x5D1BDB65,\n\t(q31_t)0xA8060D08, (q31_t)0x5CF95638, (q31_t)0xA7E1910E,\n\t(q31_t)0x5CD6C2B4, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF,\n\t(q31_t)0xA798C1E4, (q31_t)0x5C9170BF, (q31_t)0xA7746EC0,\n\t(q31_t)0x5C6EB258, (q31_t)0xA7502943, (q31_t)0x5C4BE5B0,\n\t(q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA707C756,\n\t(q31_t)0x5C0621B2, (q31_t)0xA6E3AAF2, (q31_t)0x5BE32A67,\n\t(q31_t)0xA6BF9C4B, (q31_t)0x5BC024F0, (q31_t)0xA69B9B68,\n\t(q31_t)0x5B9D1153, (q31_t)0xA677A84E, (q31_t)0x5B79EF96,\n\t(q31_t)0xA653C302, (q31_t)0x5B56BFBD, (q31_t)0xA62FEB8B,\n\t(q31_t)0x5B3381CE, (q31_t)0xA60C21ED, (q31_t)0x5B1035CF,\n\t(q31_t)0xA5E8662F, (q31_t)0x5AECDBC4, (q31_t)0xA5C4B855,\n\t(q31_t)0x5AC973B4, (q31_t)0xA5A11865, (q31_t)0x5AA5FDA4,\n\t(q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA55A025B,\n\t(q31_t)0x5A5EE79A, (q31_t)0xA5368C4B, (q31_t)0x5A3B47AA,\n\t(q31_t)0xA513243B, (q31_t)0x5A1799D0, (q31_t)0xA4EFCA31,\n\t(q31_t)0x59F3DE12, (q31_t)0xA4CC7E31, (q31_t)0x59D01474,\n\t(q31_t)0xA4A94042, (q31_t)0x59AC3CFD, (q31_t)0xA4861069,\n\t(q31_t)0x598857B1, (q31_t)0xA462EEAC, (q31_t)0x59646497,\n\t(q31_t)0xA43FDB0F, (q31_t)0x594063B4, (q31_t)0xA41CD598,\n\t(q31_t)0x591C550E, (q31_t)0xA3F9DE4D, (q31_t)0x58F838A9,\n\t(q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA3B41A4F,\n\t(q31_t)0x58AFD6BC, (q31_t)0xA3914DA7, (q31_t)0x588B913F,\n\t(q31_t)0xA36E8F40, (q31_t)0x58673E1B, (q31_t)0xA34BDF20,\n\t(q31_t)0x5842DD54, (q31_t)0xA3293D4B, (q31_t)0x581E6EF1,\n\t(q31_t)0xA306A9C7, (q31_t)0x57F9F2F7, (q31_t)0xA2E4249A,\n\t(q31_t)0x57D5696C, (q31_t)0xA2C1ADC9, (q31_t)0x57B0D256,\n\t(q31_t)0xA29F4559, (q31_t)0x578C2DB9, (q31_t)0xA27CEB4F,\n\t(q31_t)0x57677B9D, (q31_t)0xA25A9FB1, (q31_t)0x5742BC05,\n\t(q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA21633CD,\n\t(q31_t)0x56F9147E, (q31_t)0xA1F41391, (q31_t)0x56D42C99,\n\t(q31_t)0xA1D201D7, (q31_t)0x56AF3750, (q31_t)0xA1AFFEA2,\n\t(q31_t)0x568A34A9, (q31_t)0xA18E09F9, (q31_t)0x566524AA,\n\t(q31_t)0xA16C23E1, (q31_t)0x56400757, (q31_t)0xA14A4C5E,\n\t(q31_t)0x561ADCB8, (q31_t)0xA1288376, (q31_t)0x55F5A4D2,\n\t(q31_t)0xA106C92E, (q31_t)0x55D05FAA, (q31_t)0xA0E51D8C,\n\t(q31_t)0x55AB0D46, (q31_t)0xA0C38094, (q31_t)0x5585ADAC,\n\t(q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA08072BA,\n\t(q31_t)0x553AC6ED, (q31_t)0xA05F01E1, (q31_t)0x55153FD4,\n\t(q31_t)0xA03D9FC7, (q31_t)0x54EFAB9C, (q31_t)0xA01C4C72,\n\t(q31_t)0x54CA0A4A, (q31_t)0x9FFB07E7, (q31_t)0x54A45BE5,\n\t(q31_t)0x9FD9D22A, (q31_t)0x547EA073, (q31_t)0x9FB8AB41,\n\t(q31_t)0x5458D7F9, (q31_t)0x9F979331, (q31_t)0x5433027D,\n\t(q31_t)0x9F7689FF, (q31_t)0x540D2005, (q31_t)0x9F558FB0,\n\t(q31_t)0x53E73097, (q31_t)0x9F34A449, (q31_t)0x53C13438,\n\t(q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9EF2FA48,\n\t(q31_t)0x537514C1, (q31_t)0x9ED23BB9, (q31_t)0x534EF1B5,\n\t(q31_t)0x9EB18C26, (q31_t)0x5328C1D0, (q31_t)0x9E90EB94,\n\t(q31_t)0x53028517, (q31_t)0x9E705A09, (q31_t)0x52DC3B92,\n\t(q31_t)0x9E4FD789, (q31_t)0x52B5E545, (q31_t)0x9E2F641A,\n\t(q31_t)0x528F8237, (q31_t)0x9E0EFFC1, (q31_t)0x5269126E,\n\t(q31_t)0x9DEEAA82, (q31_t)0x524295EF, (q31_t)0x9DCE6462,\n\t(q31_t)0x521C0CC1, (q31_t)0x9DAE2D68, (q31_t)0x51F576E9,\n\t(q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D6DECF4,\n\t(q31_t)0x51A82555, (q31_t)0x9D4DE384, (q31_t)0x518169A4,\n\t(q31_t)0x9D2DE94D, (q31_t)0x515AA162, (q31_t)0x9D0DFE53,\n\t(q31_t)0x5133CC94, (q31_t)0x9CEE229C, (q31_t)0x510CEB40,\n\t(q31_t)0x9CCE562B, (q31_t)0x50E5FD6C, (q31_t)0x9CAE9907,\n\t(q31_t)0x50BF031F, (q31_t)0x9C8EEB33, (q31_t)0x5097FC5E,\n\t(q31_t)0x9C6F4CB5, (q31_t)0x5070E92F, (q31_t)0x9C4FBD92,\n\t(q31_t)0x5049C999, (q31_t)0x9C303DCF, (q31_t)0x50229DA0,\n\t(q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9BF16C7A,\n\t(q31_t)0x4FD420A3, (q31_t)0x9BD21AF2, (q31_t)0x4FACCFAB,\n\t(q31_t)0x9BB2D8DD, (q31_t)0x4F857268, (q31_t)0x9B93A640,\n\t(q31_t)0x4F5E08E3, (q31_t)0x9B748320, (q31_t)0x4F369320,\n\t(q31_t)0x9B556F80, (q31_t)0x4F0F1126, (q31_t)0x9B366B67,\n\t(q31_t)0x4EE782FA, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4,\n\t(q31_t)0x9AF891DB, (q31_t)0x4E984229, (q31_t)0x9AD9BC71,\n\t(q31_t)0x4E708F8F, (q31_t)0x9ABAF6A0, (q31_t)0x4E48D0DC,\n\t(q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A7D99DD,\n\t(q31_t)0x4DF92F45, (q31_t)0x9A5F02F5, (q31_t)0x4DD14C6E,\n\t(q31_t)0x9A407BB8, (q31_t)0x4DA95D96, (q31_t)0x9A22042C,\n\t(q31_t)0x4D8162C4, (q31_t)0x9A039C56, (q31_t)0x4D595BFE,\n\t(q31_t)0x99E5443A, (q31_t)0x4D31494B, (q31_t)0x99C6FBDE,\n\t(q31_t)0x4D092AB0, (q31_t)0x99A8C344, (q31_t)0x4CE10034,\n\t(q31_t)0x998A9A73, (q31_t)0x4CB8C9DD, (q31_t)0x996C816F,\n\t(q31_t)0x4C9087B1, (q31_t)0x994E783C, (q31_t)0x4C6839B6,\n\t(q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9912955E,\n\t(q31_t)0x4C177A6E, (q31_t)0x98F4BBBC, (q31_t)0x4BEF092D,\n\t(q31_t)0x98D6F1FE, (q31_t)0x4BC68C36, (q31_t)0x98B93828,\n\t(q31_t)0x4B9E038F, (q31_t)0x989B8E3F, (q31_t)0x4B756F3F,\n\t(q31_t)0x987DF449, (q31_t)0x4B4CCF4D, (q31_t)0x98606A48,\n\t(q31_t)0x4B2423BD, (q31_t)0x9842F043, (q31_t)0x4AFB6C97,\n\t(q31_t)0x9825863D, (q31_t)0x4AD2A9E1, (q31_t)0x98082C3B,\n\t(q31_t)0x4AA9DBA1, (q31_t)0x97EAE241, (q31_t)0x4A8101DE,\n\t(q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x97B07E7A,\n\t(q31_t)0x4A2F2BE5, (q31_t)0x979364B5, (q31_t)0x4A062FBD,\n\t(q31_t)0x97765B0A, (q31_t)0x49DD282A, (q31_t)0x9759617E,\n\t(q31_t)0x49B41533, (q31_t)0x973C7816, (q31_t)0x498AF6DE,\n\t(q31_t)0x971F9ED6, (q31_t)0x4961CD32, (q31_t)0x9702D5C2,\n\t(q31_t)0x49389836, (q31_t)0x96E61CDF, (q31_t)0x490F57EE,\n\t(q31_t)0x96C97431, (q31_t)0x48E60C62, (q31_t)0x96ACDBBD,\n\t(q31_t)0x48BCB598, (q31_t)0x96905387, (q31_t)0x48935397,\n\t(q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x965773E7,\n\t(q31_t)0x48406E07, (q31_t)0x963B1C85, (q31_t)0x4816EA85,\n\t(q31_t)0x961ED573, (q31_t)0x47ED5BE6, (q31_t)0x96029EB5,\n\t(q31_t)0x47C3C22E, (q31_t)0x95E6784F, (q31_t)0x479A1D66,\n\t(q31_t)0x95CA6246, (q31_t)0x47706D93, (q31_t)0x95AE5C9E,\n\t(q31_t)0x4746B2BC, (q31_t)0x9592675B, (q31_t)0x471CECE6,\n\t(q31_t)0x95768282, (q31_t)0x46F31C1A, (q31_t)0x955AAE17,\n\t(q31_t)0x46C9405C, (q31_t)0x953EEA1E, (q31_t)0x469F59B4,\n\t(q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x95079393,\n\t(q31_t)0x464B6BBD, (q31_t)0x94EC010B, (q31_t)0x4621647C,\n\t(q31_t)0x94D07F05, (q31_t)0x45F7526B, (q31_t)0x94B50D87,\n\t(q31_t)0x45CD358F, (q31_t)0x9499AC95, (q31_t)0x45A30DF0,\n\t(q31_t)0x947E5C32, (q31_t)0x4578DB93, (q31_t)0x94631C64,\n\t(q31_t)0x454E9E80, (q31_t)0x9447ED2F, (q31_t)0x452456BC,\n\t(q31_t)0x942CCE95, (q31_t)0x44FA044F, (q31_t)0x9411C09D,\n\t(q31_t)0x44CFA73F, (q31_t)0x93F6C34A, (q31_t)0x44A53F93,\n\t(q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x93C0FAA2,\n\t(q31_t)0x4450507E, (q31_t)0x93A62F56, (q31_t)0x4425C923,\n\t(q31_t)0x938B74C0, (q31_t)0x43FB3745, (q31_t)0x9370CAE4,\n\t(q31_t)0x43D09AEC, (q31_t)0x935631C5, (q31_t)0x43A5F41E,\n\t(q31_t)0x933BA968, (q31_t)0x437B42E1, (q31_t)0x932131D1,\n\t(q31_t)0x4350873C, (q31_t)0x9306CB04, (q31_t)0x4325C135,\n\t(q31_t)0x92EC7505, (q31_t)0x42FAF0D4, (q31_t)0x92D22FD8,\n\t(q31_t)0x42D0161E, (q31_t)0x92B7FB82, (q31_t)0x42A5311A,\n\t(q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9283C567,\n\t(q31_t)0x424F4845, (q31_t)0x9269C3AC, (q31_t)0x42244480,\n\t(q31_t)0x924FD2D6, (q31_t)0x41F93688, (q31_t)0x9235F2EB,\n\t(q31_t)0x41CE1E64, (q31_t)0x921C23EE, (q31_t)0x41A2FC1A,\n\t(q31_t)0x920265E4, (q31_t)0x4177CFB0, (q31_t)0x91E8B8D0,\n\t(q31_t)0x414C992E, (q31_t)0x91CF1CB6, (q31_t)0x4121589A,\n\t(q31_t)0x91B5919A, (q31_t)0x40F60DFB, (q31_t)0x919C1780,\n\t(q31_t)0x40CAB957, (q31_t)0x9182AE6C, (q31_t)0x409F5AB6,\n\t(q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x91500F67,\n\t(q31_t)0x40487F93, (q31_t)0x9136D97D, (q31_t)0x401D0320,\n\t(q31_t)0x911DB4A8, (q31_t)0x3FF17CCA, (q31_t)0x9104A0ED,\n\t(q31_t)0x3FC5EC97, (q31_t)0x90EB9E50, (q31_t)0x3F9A528F,\n\t(q31_t)0x90D2ACD3, (q31_t)0x3F6EAEB8, (q31_t)0x90B9CC7C,\n\t(q31_t)0x3F430118, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7,\n\t(q31_t)0x90883F4C, (q31_t)0x3EEB889C, (q31_t)0x906F927B,\n\t(q31_t)0x3EBFBDCC, (q31_t)0x9056F6DF, (q31_t)0x3E93E94F,\n\t(q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x9025F352,\n\t(q31_t)0x3E3C2369, (q31_t)0x900D8B69, (q31_t)0x3E10320D,\n\t(q31_t)0x8FF534C4, (q31_t)0x3DE4371F, (q31_t)0x8FDCEF66,\n\t(q31_t)0x3DB832A5, (q31_t)0x8FC4BB53, (q31_t)0x3D8C24A7,\n\t(q31_t)0x8FAC988E, (q31_t)0x3D600D2B, (q31_t)0x8F94871D,\n\t(q31_t)0x3D33EC39, (q31_t)0x8F7C8701, (q31_t)0x3D07C1D5,\n\t(q31_t)0x8F64983F, (q31_t)0x3CDB8E09, (q31_t)0x8F4CBADB,\n\t(q31_t)0x3CAF50DA, (q31_t)0x8F34EED8, (q31_t)0x3C830A4F,\n\t(q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8F058B04,\n\t(q31_t)0x3C2A6142, (q31_t)0x8EEDF33B, (q31_t)0x3BFDFECD,\n\t(q31_t)0x8ED66CE1, (q31_t)0x3BD19317, (q31_t)0x8EBEF7FB,\n\t(q31_t)0x3BA51E29, (q31_t)0x8EA7948C, (q31_t)0x3B78A007,\n\t(q31_t)0x8E904298, (q31_t)0x3B4C18BA, (q31_t)0x8E790222,\n\t(q31_t)0x3B1F8847, (q31_t)0x8E61D32D, (q31_t)0x3AF2EEB7,\n\t(q31_t)0x8E4AB5BF, (q31_t)0x3AC64C0F, (q31_t)0x8E33A9D9,\n\t(q31_t)0x3A99A057, (q31_t)0x8E1CAF80, (q31_t)0x3A6CEB95,\n\t(q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DEEEF82,\n\t(q31_t)0x3A136712, (q31_t)0x8DD829E4, (q31_t)0x39E6975D,\n\t(q31_t)0x8DC175E0, (q31_t)0x39B9BEBB, (q31_t)0x8DAAD37B,\n\t(q31_t)0x398CDD32, (q31_t)0x8D9442B7, (q31_t)0x395FF2C9,\n\t(q31_t)0x8D7DC399, (q31_t)0x3932FF87, (q31_t)0x8D675623,\n\t(q31_t)0x39060372, (q31_t)0x8D50FA59, (q31_t)0x38D8FE93,\n\t(q31_t)0x8D3AB03F, (q31_t)0x38ABF0EF, (q31_t)0x8D2477D8,\n\t(q31_t)0x387EDA8E, (q31_t)0x8D0E5127, (q31_t)0x3851BB76,\n\t(q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CE238F6,\n\t(q31_t)0x37F76340, (q31_t)0x8CCC477D, (q31_t)0x37CA2A30,\n\t(q31_t)0x8CB667C7, (q31_t)0x379CE884, (q31_t)0x8CA099D9,\n\t(q31_t)0x376F9E46, (q31_t)0x8C8ADDB6, (q31_t)0x37424B7A,\n\t(q31_t)0x8C753361, (q31_t)0x3714F02A, (q31_t)0x8C5F9ADD,\n\t(q31_t)0x36E78C5A, (q31_t)0x8C4A142F, (q31_t)0x36BA2013,\n\t(q31_t)0x8C349F58, (q31_t)0x368CAB5C, (q31_t)0x8C1F3C5C,\n\t(q31_t)0x365F2E3B, (q31_t)0x8C09EB40, (q31_t)0x3631A8B7,\n\t(q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BDF7EAF,\n\t(q31_t)0x35D684A5, (q31_t)0x8BCA6342, (q31_t)0x35A8E624,\n\t(q31_t)0x8BB559C1, (q31_t)0x357B3F5D, (q31_t)0x8BA0622F,\n\t(q31_t)0x354D9056, (q31_t)0x8B8B7C8F, (q31_t)0x351FD917,\n\t(q31_t)0x8B76A8E4, (q31_t)0x34F219A7, (q31_t)0x8B61E732,\n\t(q31_t)0x34C4520D, (q31_t)0x8B4D377C, (q31_t)0x3496824F,\n\t(q31_t)0x8B3899C5, (q31_t)0x3468AA76, (q31_t)0x8B240E10,\n\t(q31_t)0x343ACA87, (q31_t)0x8B0F9461, (q31_t)0x340CE28A,\n\t(q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AE6D71F,\n\t(q31_t)0x33B0FA84, (q31_t)0x8AD29393, (q31_t)0x3382FA88,\n\t(q31_t)0x8ABE6219, (q31_t)0x3354F29A, (q31_t)0x8AAA42B4,\n\t(q31_t)0x3326E2C2, (q31_t)0x8A963567, (q31_t)0x32F8CB07,\n\t(q31_t)0x8A823A35, (q31_t)0x32CAAB6F, (q31_t)0x8A6E5122,\n\t(q31_t)0x329C8402, (q31_t)0x8A5A7A30, (q31_t)0x326E54C7,\n\t(q31_t)0x8A46B563, (q31_t)0x32401DC5, (q31_t)0x8A3302BD,\n\t(q31_t)0x3211DF03, (q31_t)0x8A1F6242, (q31_t)0x31E39889,\n\t(q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89F857D8,\n\t(q31_t)0x3186F487, (q31_t)0x89E4EDEE, (q31_t)0x3158970D,\n\t(q31_t)0x89D1963C, (q31_t)0x312A31F8, (q31_t)0x89BE50C3,\n\t(q31_t)0x30FBC54D, (q31_t)0x89AB1D86, (q31_t)0x30CD5114,\n\t(q31_t)0x8997FC89, (q31_t)0x309ED555, (q31_t)0x8984EDCF,\n\t(q31_t)0x30705217, (q31_t)0x8971F15A, (q31_t)0x3041C760,\n\t(q31_t)0x895F072D, (q31_t)0x30133538, (q31_t)0x894C2F4C,\n\t(q31_t)0x2FE49BA6, (q31_t)0x893969B9, (q31_t)0x2FB5FAB2,\n\t(q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x89141589,\n\t(q31_t)0x2F58A2BD, (q31_t)0x890186F1, (q31_t)0x2F29EBCC,\n\t(q31_t)0x88EF0AB4, (q31_t)0x2EFB2D94, (q31_t)0x88DCA0D3,\n\t(q31_t)0x2ECC681E, (q31_t)0x88CA4951, (q31_t)0x2E9D9B70,\n\t(q31_t)0x88B80431, (q31_t)0x2E6EC792, (q31_t)0x88A5D177,\n\t(q31_t)0x2E3FEC8B, (q31_t)0x8893B124, (q31_t)0x2E110A62,\n\t(q31_t)0x8881A33C, (q31_t)0x2DE2211E, (q31_t)0x886FA7C2,\n\t(q31_t)0x2DB330C7, (q31_t)0x885DBEB7, (q31_t)0x2D843963,\n\t(q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x883A23FE,\n\t(q31_t)0x2D263595, (q31_t)0x88287255, (q31_t)0x2CF72939,\n\t(q31_t)0x8816D327, (q31_t)0x2CC815ED, (q31_t)0x88054677,\n\t(q31_t)0x2C98FBBA, (q31_t)0x87F3CC47, (q31_t)0x2C69DAA6,\n\t(q31_t)0x87E2649B, (q31_t)0x2C3AB2B9, (q31_t)0x87D10F75,\n\t(q31_t)0x2C0B83F9, (q31_t)0x87BFCCD7, (q31_t)0x2BDC4E6F,\n\t(q31_t)0x87AE9CC5, (q31_t)0x2BAD1221, (q31_t)0x879D7F40,\n\t(q31_t)0x2B7DCF17, (q31_t)0x878C744C, (q31_t)0x2B4E8558,\n\t(q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x876A9621,\n\t(q31_t)0x2AEFDDD8, (q31_t)0x8759C2EF, (q31_t)0x2AC08025,\n\t(q31_t)0x87490257, (q31_t)0x2A911BDB, (q31_t)0x8738545E,\n\t(q31_t)0x2A61B101, (q31_t)0x8727B904, (q31_t)0x2A323F9D,\n\t(q31_t)0x8717304E, (q31_t)0x2A02C7B8, (q31_t)0x8706BA3C,\n\t(q31_t)0x29D34958, (q31_t)0x86F656D3, (q31_t)0x29A3C484,\n\t(q31_t)0x86E60614, (q31_t)0x29743945, (q31_t)0x86D5C802,\n\t(q31_t)0x2944A7A2, (q31_t)0x86C59C9F, (q31_t)0x29150FA1,\n\t(q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x86A57DF1,\n\t(q31_t)0x28B5CCA5, (q31_t)0x86958AAB, (q31_t)0x288621B9,\n\t(q31_t)0x8685AA1F, (q31_t)0x2856708C, (q31_t)0x8675DC4E,\n\t(q31_t)0x2826B928, (q31_t)0x8666213C, (q31_t)0x27F6FB92,\n\t(q31_t)0x865678EA, (q31_t)0x27C737D2, (q31_t)0x8646E35B,\n\t(q31_t)0x27976DF1, (q31_t)0x86376092, (q31_t)0x27679DF4,\n\t(q31_t)0x8627F090, (q31_t)0x2737C7E3, (q31_t)0x86189359,\n\t(q31_t)0x2707EBC6, (q31_t)0x860948EE, (q31_t)0x26D809A5,\n\t(q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85EAEC88,\n\t(q31_t)0x26783370, (q31_t)0x85DBDA91, (q31_t)0x26483F6C,\n\t(q31_t)0x85CCDB70, (q31_t)0x26184581, (q31_t)0x85BDEF27,\n\t(q31_t)0x25E845B5, (q31_t)0x85AF15B9, (q31_t)0x25B84012,\n\t(q31_t)0x85A04F28, (q31_t)0x2588349D, (q31_t)0x85919B75,\n\t(q31_t)0x2558235E, (q31_t)0x8582FAA4, (q31_t)0x25280C5D,\n\t(q31_t)0x85746CB7, (q31_t)0x24F7EFA1, (q31_t)0x8565F1B0,\n\t(q31_t)0x24C7CD32, (q31_t)0x85578991, (q31_t)0x2497A517,\n\t(q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x853AF214,\n\t(q31_t)0x243743FA, (q31_t)0x852CC2BA, (q31_t)0x24070B07,\n\t(q31_t)0x851EA652, (q31_t)0x23D6CC86, (q31_t)0x85109CDC,\n\t(q31_t)0x23A6887E, (q31_t)0x8502A65C, (q31_t)0x23763EF7,\n\t(q31_t)0x84F4C2D3, (q31_t)0x2345EFF7, (q31_t)0x84E6F244,\n\t(q31_t)0x23159B87, (q31_t)0x84D934B0, (q31_t)0x22E541AE,\n\t(q31_t)0x84CB8A1B, (q31_t)0x22B4E274, (q31_t)0x84BDF285,\n\t(q31_t)0x22847DDF, (q31_t)0x84B06DF1, (q31_t)0x225413F8,\n\t(q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x84959DD9,\n\t(q31_t)0x21F3304E, (q31_t)0x84885257, (q31_t)0x21C2B69C,\n\t(q31_t)0x847B19E1, (q31_t)0x219237B4, (q31_t)0x846DF476,\n\t(q31_t)0x2161B39F, (q31_t)0x8460E21A, (q31_t)0x21312A65,\n\t(q31_t)0x8453E2CE, (q31_t)0x21009C0B, (q31_t)0x8446F695,\n\t(q31_t)0x20D0089B, (q31_t)0x843A1D70, (q31_t)0x209F701C,\n\t(q31_t)0x842D5761, (q31_t)0x206ED295, (q31_t)0x8420A46B,\n\t(q31_t)0x203E300D, (q31_t)0x8414048F, (q31_t)0x200D888C,\n\t(q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83FAFE2E,\n\t(q31_t)0x1FAC2ABF, (q31_t)0x83EE97AC, (q31_t)0x1F7B7480,\n\t(q31_t)0x83E2444D, (q31_t)0x1F4AB967, (q31_t)0x83D60411,\n\t(q31_t)0x1F19F97B, (q31_t)0x83C9D6FB, (q31_t)0x1EE934C2,\n\t(q31_t)0x83BDBD0D, (q31_t)0x1EB86B46, (q31_t)0x83B1B649,\n\t(q31_t)0x1E879D0C, (q31_t)0x83A5C2B0, (q31_t)0x1E56CA1E,\n\t(q31_t)0x8399E244, (q31_t)0x1E25F281, (q31_t)0x838E1507,\n\t(q31_t)0x1DF5163F, (q31_t)0x83825AFB, (q31_t)0x1DC4355D,\n\t(q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x836B207D,\n\t(q31_t)0x1D6265DD, (q31_t)0x835FA00E, (q31_t)0x1D31774D,\n\t(q31_t)0x835432D8, (q31_t)0x1D00843C, (q31_t)0x8348D8DB,\n\t(q31_t)0x1CCF8CB3, (q31_t)0x833D921A, (q31_t)0x1C9E90B8,\n\t(q31_t)0x83325E97, (q31_t)0x1C6D9053, (q31_t)0x83273E52,\n\t(q31_t)0x1C3C8B8C, (q31_t)0x831C314E, (q31_t)0x1C0B826A,\n\t(q31_t)0x8311378C, (q31_t)0x1BDA74F5, (q31_t)0x8306510F,\n\t(q31_t)0x1BA96334, (q31_t)0x82FB7DD8, (q31_t)0x1B784D30,\n\t(q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82E61141,\n\t(q31_t)0x1B161479, (q31_t)0x82DB77E5, (q31_t)0x1AE4F1D6,\n\t(q31_t)0x82D0F1D5, (q31_t)0x1AB3CB0C, (q31_t)0x82C67F13,\n\t(q31_t)0x1A82A025, (q31_t)0x82BC1FA1, (q31_t)0x1A517127,\n\t(q31_t)0x82B1D381, (q31_t)0x1A203E1B, (q31_t)0x82A79AB3,\n\t(q31_t)0x19EF0706, (q31_t)0x829D753A, (q31_t)0x19BDCBF2,\n\t(q31_t)0x82936316, (q31_t)0x198C8CE6, (q31_t)0x8289644A,\n\t(q31_t)0x195B49E9, (q31_t)0x827F78D8, (q31_t)0x192A0303,\n\t(q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x826BDC04,\n\t(q31_t)0x18C7699B, (q31_t)0x82622AA5, (q31_t)0x18961727,\n\t(q31_t)0x82588CA6, (q31_t)0x1864C0E9, (q31_t)0x824F0208,\n\t(q31_t)0x183366E8, (q31_t)0x82458ACB, (q31_t)0x1802092C,\n\t(q31_t)0x823C26F2, (q31_t)0x17D0A7BB, (q31_t)0x8232D67E,\n\t(q31_t)0x179F429F, (q31_t)0x82299971, (q31_t)0x176DD9DE,\n\t(q31_t)0x82206FCB, (q31_t)0x173C6D80, (q31_t)0x8217598F,\n\t(q31_t)0x170AFD8D, (q31_t)0x820E56BE, (q31_t)0x16D98A0C,\n\t(q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81FC8B60,\n\t(q31_t)0x1676987F, (q31_t)0x81F3C2D7, (q31_t)0x16451A83,\n\t(q31_t)0x81EB0DBD, (q31_t)0x16139917, (q31_t)0x81E26C16,\n\t(q31_t)0x15E21444, (q31_t)0x81D9DDE1, (q31_t)0x15B08C11,\n\t(q31_t)0x81D16320, (q31_t)0x157F0086, (q31_t)0x81C8FBD5,\n\t(q31_t)0x154D71AA, (q31_t)0x81C0A801, (q31_t)0x151BDF85,\n\t(q31_t)0x81B867A4, (q31_t)0x14EA4A1F, (q31_t)0x81B03AC1,\n\t(q31_t)0x14B8B17F, (q31_t)0x81A82159, (q31_t)0x148715AD,\n\t(q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x819828FD,\n\t(q31_t)0x1423D492, (q31_t)0x81904A0C, (q31_t)0x13F22F57,\n\t(q31_t)0x81887E9A, (q31_t)0x13C0870A, (q31_t)0x8180C6A9,\n\t(q31_t)0x138EDBB0, (q31_t)0x8179223A, (q31_t)0x135D2D53,\n\t(q31_t)0x8171914E, (q31_t)0x132B7BF9, (q31_t)0x816A13E6,\n\t(q31_t)0x12F9C7AA, (q31_t)0x8162AA03, (q31_t)0x12C8106E,\n\t(q31_t)0x815B53A8, (q31_t)0x1296564D, (q31_t)0x815410D3,\n\t(q31_t)0x1264994E, (q31_t)0x814CE188, (q31_t)0x1232D978,\n\t(q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x813EBD90,\n\t(q31_t)0x11CF516A, (q31_t)0x8137C8E6, (q31_t)0x119D8940,\n\t(q31_t)0x8130E7C8, (q31_t)0x116BBE5F, (q31_t)0x812A1A39,\n\t(q31_t)0x1139F0CE, (q31_t)0x81236039, (q31_t)0x11082096,\n\t(q31_t)0x811CB9CA, (q31_t)0x10D64DBC, (q31_t)0x811626EC,\n\t(q31_t)0x10A4784A, (q31_t)0x810FA7A0, (q31_t)0x1072A047,\n\t(q31_t)0x81093BE8, (q31_t)0x1040C5BB, (q31_t)0x8102E3C3,\n\t(q31_t)0x100EE8AD, (q31_t)0x80FC9F35, (q31_t)0x0FDD0925,\n\t(q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80F050DB,\n\t(q31_t)0x0F7942C6, (q31_t)0x80EA4712, (q31_t)0x0F475BFE,\n\t(q31_t)0x80E450E2, (q31_t)0x0F1572DC, (q31_t)0x80DE6E4C,\n\t(q31_t)0x0EE38765, (q31_t)0x80D89F51, (q31_t)0x0EB199A3,\n\t(q31_t)0x80D2E3F1, (q31_t)0x0E7FA99D, (q31_t)0x80CD3C2F,\n\t(q31_t)0x0E4DB75B, (q31_t)0x80C7A80A, (q31_t)0x0E1BC2E3,\n\t(q31_t)0x80C22783, (q31_t)0x0DE9CC3F, (q31_t)0x80BCBA9C,\n\t(q31_t)0x0DB7D376, (q31_t)0x80B76155, (q31_t)0x0D85D88F,\n\t(q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x80ACE9AB,\n\t(q31_t)0x0D21DC87, (q31_t)0x80A7CB49, (q31_t)0x0CEFDB75,\n\t(q31_t)0x80A2C08B, (q31_t)0x0CBDD865, (q31_t)0x809DC970,\n\t(q31_t)0x0C8BD35E, (q31_t)0x8098E5FB, (q31_t)0x0C59CC67,\n\t(q31_t)0x8094162B, (q31_t)0x0C27C389, (q31_t)0x808F5A02,\n\t(q31_t)0x0BF5B8CB, (q31_t)0x808AB180, (q31_t)0x0BC3AC35,\n\t(q31_t)0x80861CA5, (q31_t)0x0B919DCE, (q31_t)0x80819B74,\n\t(q31_t)0x0B5F8D9F, (q31_t)0x807D2DEB, (q31_t)0x0B2D7BAE,\n\t(q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80748DD9,\n\t(q31_t)0x0AC952AA, (q31_t)0x80705B50, (q31_t)0x0A973BA5,\n\t(q31_t)0x806C3C73, (q31_t)0x0A6522FE, (q31_t)0x80683143,\n\t(q31_t)0x0A3308BC, (q31_t)0x806439C0, (q31_t)0x0A00ECE8,\n\t(q31_t)0x806055EA, (q31_t)0x09CECF89, (q31_t)0x805C85C3,\n\t(q31_t)0x099CB0A7, (q31_t)0x8058C94C, (q31_t)0x096A9049,\n\t(q31_t)0x80552083, (q31_t)0x09386E77, (q31_t)0x80518B6B,\n\t(q31_t)0x09064B3A, (q31_t)0x804E0A03, (q31_t)0x08D42698,\n\t(q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x80474248,\n\t(q31_t)0x086FD947, (q31_t)0x8043FBF6, (q31_t)0x083DB0A7,\n\t(q31_t)0x8040C956, (q31_t)0x080B86C1, (q31_t)0x803DAA69,\n\t(q31_t)0x07D95B9E, (q31_t)0x803A9F31, (q31_t)0x07A72F45,\n\t(q31_t)0x8037A7AC, (q31_t)0x077501BE, (q31_t)0x8034C3DC,\n\t(q31_t)0x0742D310, (q31_t)0x8031F3C1, (q31_t)0x0710A344,\n\t(q31_t)0x802F375C, (q31_t)0x06DE7261, (q31_t)0x802C8EAD,\n\t(q31_t)0x06AC406F, (q31_t)0x8029F9B4, (q31_t)0x067A0D75,\n\t(q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80250AE7,\n\t(q31_t)0x0615A48A, (q31_t)0x8022B113, (q31_t)0x05E36EA9,\n\t(q31_t)0x80206AF8, (q31_t)0x05B137DF, (q31_t)0x801E3894,\n\t(q31_t)0x057F0034, (q31_t)0x801C19E9, (q31_t)0x054CC7B0,\n\t(q31_t)0x801A0EF7, (q31_t)0x051A8E5C, (q31_t)0x801817BF,\n\t(q31_t)0x04E8543D, (q31_t)0x80163440, (q31_t)0x04B6195D,\n\t(q31_t)0x8014647A, (q31_t)0x0483DDC3, (q31_t)0x8012A86F,\n\t(q31_t)0x0451A176, (q31_t)0x8011001E, (q31_t)0x041F647F,\n\t(q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x800DEAAC,\n\t(q31_t)0x03BAE8B1, (q31_t)0x800C7D8C, (q31_t)0x0388A9E9,\n\t(q31_t)0x800B2427, (q31_t)0x03566A96, (q31_t)0x8009DE7D,\n\t(q31_t)0x03242ABF, (q31_t)0x8008AC90, (q31_t)0x02F1EA6B,\n\t(q31_t)0x80078E5E, (q31_t)0x02BFA9A4, (q31_t)0x800683E8,\n\t(q31_t)0x028D6870, (q31_t)0x80058D2E, (q31_t)0x025B26D7,\n\t(q31_t)0x8004AA31, (q31_t)0x0228E4E1, (q31_t)0x8003DAF0,\n\t(q31_t)0x01F6A296, (q31_t)0x80031F6C, (q31_t)0x01C45FFE,\n\t(q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x8001E39B,\n\t(q31_t)0x015FDA03, (q31_t)0x8001634D, (q31_t)0x012D96B0,\n\t(q31_t)0x8000F6BD, (q31_t)0x00FB532F, (q31_t)0x80009DE9,\n\t(q31_t)0x00C90F88, (q31_t)0x800058D3, (q31_t)0x0096CBC1,\n\t(q31_t)0x8000277A, (q31_t)0x006487E3, (q31_t)0x800009DE,\n\t(q31_t)0x003243F5, (q31_t)0x80000000, (q31_t)0x00000000,\n\t(q31_t)0x800009DE, (q31_t)0xFFCDBC0A, (q31_t)0x8000277A,\n\t(q31_t)0xFF9B781D, (q31_t)0x800058D3, (q31_t)0xFF69343E,\n\t(q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x8000F6BD,\n\t(q31_t)0xFF04ACD0, (q31_t)0x8001634D, (q31_t)0xFED2694F,\n\t(q31_t)0x8001E39B, (q31_t)0xFEA025FC, (q31_t)0x800277A5,\n\t(q31_t)0xFE6DE2E0, (q31_t)0x80031F6C, (q31_t)0xFE3BA001,\n\t(q31_t)0x8003DAF0, (q31_t)0xFE095D69, (q31_t)0x8004AA31,\n\t(q31_t)0xFDD71B1E, (q31_t)0x80058D2E, (q31_t)0xFDA4D928,\n\t(q31_t)0x800683E8, (q31_t)0xFD72978F, (q31_t)0x80078E5E,\n\t(q31_t)0xFD40565B, (q31_t)0x8008AC90, (q31_t)0xFD0E1594,\n\t(q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800B2427,\n\t(q31_t)0xFCA99569, (q31_t)0x800C7D8C, (q31_t)0xFC775616,\n\t(q31_t)0x800DEAAC, (q31_t)0xFC45174E, (q31_t)0x800F6B88,\n\t(q31_t)0xFC12D919, (q31_t)0x8011001E, (q31_t)0xFBE09B80,\n\t(q31_t)0x8012A86F, (q31_t)0xFBAE5E89, (q31_t)0x8014647A,\n\t(q31_t)0xFB7C223C, (q31_t)0x80163440, (q31_t)0xFB49E6A2,\n\t(q31_t)0x801817BF, (q31_t)0xFB17ABC2, (q31_t)0x801A0EF7,\n\t(q31_t)0xFAE571A4, (q31_t)0x801C19E9, (q31_t)0xFAB3384F,\n\t(q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x80206AF8,\n\t(q31_t)0xFA4EC820, (q31_t)0x8022B113, (q31_t)0xFA1C9156,\n\t(q31_t)0x80250AE7, (q31_t)0xF9EA5B75, (q31_t)0x80277872,\n\t(q31_t)0xF9B82683, (q31_t)0x8029F9B4, (q31_t)0xF985F28A,\n\t(q31_t)0x802C8EAD, (q31_t)0xF953BF90, (q31_t)0x802F375C,\n\t(q31_t)0xF9218D9E, (q31_t)0x8031F3C1, (q31_t)0xF8EF5CBB,\n\t(q31_t)0x8034C3DC, (q31_t)0xF8BD2CEF, (q31_t)0x8037A7AC,\n\t(q31_t)0xF88AFE41, (q31_t)0x803A9F31, (q31_t)0xF858D0BA,\n\t(q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8040C956,\n\t(q31_t)0xF7F4793E, (q31_t)0x8043FBF6, (q31_t)0xF7C24F58,\n\t(q31_t)0x80474248, (q31_t)0xF79026B8, (q31_t)0x804A9C4D,\n\t(q31_t)0xF75DFF65, (q31_t)0x804E0A03, (q31_t)0xF72BD967,\n\t(q31_t)0x80518B6B, (q31_t)0xF6F9B4C5, (q31_t)0x80552083,\n\t(q31_t)0xF6C79188, (q31_t)0x8058C94C, (q31_t)0xF6956FB6,\n\t(q31_t)0x805C85C3, (q31_t)0xF6634F58, (q31_t)0x806055EA,\n\t(q31_t)0xF6313076, (q31_t)0x806439C0, (q31_t)0xF5FF1317,\n\t(q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x806C3C73,\n\t(q31_t)0xF59ADD01, (q31_t)0x80705B50, (q31_t)0xF568C45A,\n\t(q31_t)0x80748DD9, (q31_t)0xF536AD55, (q31_t)0x8078D40D,\n\t(q31_t)0xF50497FA, (q31_t)0x807D2DEB, (q31_t)0xF4D28451,\n\t(q31_t)0x80819B74, (q31_t)0xF4A07260, (q31_t)0x80861CA5,\n\t(q31_t)0xF46E6231, (q31_t)0x808AB180, (q31_t)0xF43C53CA,\n\t(q31_t)0x808F5A02, (q31_t)0xF40A4734, (q31_t)0x8094162B,\n\t(q31_t)0xF3D83C76, (q31_t)0x8098E5FB, (q31_t)0xF3A63398,\n\t(q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80A2C08B,\n\t(q31_t)0xF342279A, (q31_t)0x80A7CB49, (q31_t)0xF310248A,\n\t(q31_t)0x80ACE9AB, (q31_t)0xF2DE2378, (q31_t)0x80B21BAF,\n\t(q31_t)0xF2AC246D, (q31_t)0x80B76155, (q31_t)0xF27A2770,\n\t(q31_t)0x80BCBA9C, (q31_t)0xF2482C89, (q31_t)0x80C22783,\n\t(q31_t)0xF21633C0, (q31_t)0x80C7A80A, (q31_t)0xF1E43D1C,\n\t(q31_t)0x80CD3C2F, (q31_t)0xF1B248A5, (q31_t)0x80D2E3F1,\n\t(q31_t)0xF1805662, (q31_t)0x80D89F51, (q31_t)0xF14E665C,\n\t(q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80E450E2,\n\t(q31_t)0xF0EA8D23, (q31_t)0x80EA4712, (q31_t)0xF0B8A401,\n\t(q31_t)0x80F050DB, (q31_t)0xF086BD39, (q31_t)0x80F66E3C,\n\t(q31_t)0xF054D8D4, (q31_t)0x80FC9F35, (q31_t)0xF022F6DA,\n\t(q31_t)0x8102E3C3, (q31_t)0xEFF11752, (q31_t)0x81093BE8,\n\t(q31_t)0xEFBF3A44, (q31_t)0x810FA7A0, (q31_t)0xEF8D5FB8,\n\t(q31_t)0x811626EC, (q31_t)0xEF5B87B5, (q31_t)0x811CB9CA,\n\t(q31_t)0xEF29B243, (q31_t)0x81236039, (q31_t)0xEEF7DF6A,\n\t(q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8130E7C8,\n\t(q31_t)0xEE9441A0, (q31_t)0x8137C8E6, (q31_t)0xEE6276BF,\n\t(q31_t)0x813EBD90, (q31_t)0xEE30AE95, (q31_t)0x8145C5C6,\n\t(q31_t)0xEDFEE92B, (q31_t)0x814CE188, (q31_t)0xEDCD2687,\n\t(q31_t)0x815410D3, (q31_t)0xED9B66B2, (q31_t)0x815B53A8,\n\t(q31_t)0xED69A9B2, (q31_t)0x8162AA03, (q31_t)0xED37EF91,\n\t(q31_t)0x816A13E6, (q31_t)0xED063855, (q31_t)0x8171914E,\n\t(q31_t)0xECD48406, (q31_t)0x8179223A, (q31_t)0xECA2D2AC,\n\t(q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81887E9A,\n\t(q31_t)0xEC3F78F5, (q31_t)0x81904A0C, (q31_t)0xEC0DD0A8,\n\t(q31_t)0x819828FD, (q31_t)0xEBDC2B6D, (q31_t)0x81A01B6C,\n\t(q31_t)0xEBAA894E, (q31_t)0x81A82159, (q31_t)0xEB78EA52,\n\t(q31_t)0x81B03AC1, (q31_t)0xEB474E80, (q31_t)0x81B867A4,\n\t(q31_t)0xEB15B5E0, (q31_t)0x81C0A801, (q31_t)0xEAE4207A,\n\t(q31_t)0x81C8FBD5, (q31_t)0xEAB28E55, (q31_t)0x81D16320,\n\t(q31_t)0xEA80FF79, (q31_t)0x81D9DDE1, (q31_t)0xEA4F73EE,\n\t(q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x81EB0DBD,\n\t(q31_t)0xE9EC66E8, (q31_t)0x81F3C2D7, (q31_t)0xE9BAE57C,\n\t(q31_t)0x81FC8B60, (q31_t)0xE9896780, (q31_t)0x82056758,\n\t(q31_t)0xE957ECFB, (q31_t)0x820E56BE, (q31_t)0xE92675F4,\n\t(q31_t)0x8217598F, (q31_t)0xE8F50273, (q31_t)0x82206FCB,\n\t(q31_t)0xE8C3927F, (q31_t)0x82299971, (q31_t)0xE8922621,\n\t(q31_t)0x8232D67E, (q31_t)0xE860BD60, (q31_t)0x823C26F2,\n\t(q31_t)0xE82F5844, (q31_t)0x82458ACB, (q31_t)0xE7FDF6D3,\n\t(q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x82588CA6,\n\t(q31_t)0xE79B3F16, (q31_t)0x82622AA5, (q31_t)0xE769E8D8,\n\t(q31_t)0x826BDC04, (q31_t)0xE7389664, (q31_t)0x8275A0C0,\n\t(q31_t)0xE70747C3, (q31_t)0x827F78D8, (q31_t)0xE6D5FCFC,\n\t(q31_t)0x8289644A, (q31_t)0xE6A4B616, (q31_t)0x82936316,\n\t(q31_t)0xE6737319, (q31_t)0x829D753A, (q31_t)0xE642340D,\n\t(q31_t)0x82A79AB3, (q31_t)0xE610F8F9, (q31_t)0x82B1D381,\n\t(q31_t)0xE5DFC1E4, (q31_t)0x82BC1FA1, (q31_t)0xE5AE8ED8,\n\t(q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82D0F1D5,\n\t(q31_t)0xE54C34F3, (q31_t)0x82DB77E5, (q31_t)0xE51B0E2A,\n\t(q31_t)0x82E61141, (q31_t)0xE4E9EB86, (q31_t)0x82F0BDE8,\n\t(q31_t)0xE4B8CD10, (q31_t)0x82FB7DD8, (q31_t)0xE487B2CF,\n\t(q31_t)0x8306510F, (q31_t)0xE4569CCB, (q31_t)0x8311378C,\n\t(q31_t)0xE4258B0A, (q31_t)0x831C314E, (q31_t)0xE3F47D95,\n\t(q31_t)0x83273E52, (q31_t)0xE3C37473, (q31_t)0x83325E97,\n\t(q31_t)0xE3926FAC, (q31_t)0x833D921A, (q31_t)0xE3616F47,\n\t(q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x835432D8,\n\t(q31_t)0xE2FF7BC3, (q31_t)0x835FA00E, (q31_t)0xE2CE88B2,\n\t(q31_t)0x836B207D, (q31_t)0xE29D9A22, (q31_t)0x8376B422,\n\t(q31_t)0xE26CB01A, (q31_t)0x83825AFB, (q31_t)0xE23BCAA2,\n\t(q31_t)0x838E1507, (q31_t)0xE20AE9C1, (q31_t)0x8399E244,\n\t(q31_t)0xE1DA0D7E, (q31_t)0x83A5C2B0, (q31_t)0xE1A935E1,\n\t(q31_t)0x83B1B649, (q31_t)0xE17862F3, (q31_t)0x83BDBD0D,\n\t(q31_t)0xE14794B9, (q31_t)0x83C9D6FB, (q31_t)0xE116CB3D,\n\t(q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x83E2444D,\n\t(q31_t)0xE0B54698, (q31_t)0x83EE97AC, (q31_t)0xE0848B7F,\n\t(q31_t)0x83FAFE2E, (q31_t)0xE053D541, (q31_t)0x840777CF,\n\t(q31_t)0xE02323E5, (q31_t)0x8414048F, (q31_t)0xDFF27773,\n\t(q31_t)0x8420A46B, (q31_t)0xDFC1CFF2, (q31_t)0x842D5761,\n\t(q31_t)0xDF912D6A, (q31_t)0x843A1D70, (q31_t)0xDF608FE3,\n\t(q31_t)0x8446F695, (q31_t)0xDF2FF764, (q31_t)0x8453E2CE,\n\t(q31_t)0xDEFF63F4, (q31_t)0x8460E21A, (q31_t)0xDECED59B,\n\t(q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x847B19E1,\n\t(q31_t)0xDE6DC84B, (q31_t)0x84885257, (q31_t)0xDE3D4963,\n\t(q31_t)0x84959DD9, (q31_t)0xDE0CCFB1, (q31_t)0x84A2FC62,\n\t(q31_t)0xDDDC5B3A, (q31_t)0x84B06DF1, (q31_t)0xDDABEC07,\n\t(q31_t)0x84BDF285, (q31_t)0xDD7B8220, (q31_t)0x84CB8A1B,\n\t(q31_t)0xDD4B1D8B, (q31_t)0x84D934B0, (q31_t)0xDD1ABE51,\n\t(q31_t)0x84E6F244, (q31_t)0xDCEA6478, (q31_t)0x84F4C2D3,\n\t(q31_t)0xDCBA1008, (q31_t)0x8502A65C, (q31_t)0xDC89C108,\n\t(q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x851EA652,\n\t(q31_t)0xDC293379, (q31_t)0x852CC2BA, (q31_t)0xDBF8F4F8,\n\t(q31_t)0x853AF214, (q31_t)0xDBC8BC05, (q31_t)0x8549345C,\n\t(q31_t)0xDB9888A8, (q31_t)0x85578991, (q31_t)0xDB685AE8,\n\t(q31_t)0x8565F1B0, (q31_t)0xDB3832CD, (q31_t)0x85746CB7,\n\t(q31_t)0xDB08105E, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2,\n\t(q31_t)0x85919B75, (q31_t)0xDAA7DCA1, (q31_t)0x85A04F28,\n\t(q31_t)0xDA77CB62, (q31_t)0x85AF15B9, (q31_t)0xDA47BFED,\n\t(q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85CCDB70,\n\t(q31_t)0xD9E7BA7E, (q31_t)0x85DBDA91, (q31_t)0xD9B7C093,\n\t(q31_t)0x85EAEC88, (q31_t)0xD987CC8F, (q31_t)0x85FA1152,\n\t(q31_t)0xD957DE7A, (q31_t)0x860948EE, (q31_t)0xD927F65B,\n\t(q31_t)0x86189359, (q31_t)0xD8F81439, (q31_t)0x8627F090,\n\t(q31_t)0xD8C8381C, (q31_t)0x86376092, (q31_t)0xD898620C,\n\t(q31_t)0x8646E35B, (q31_t)0xD868920F, (q31_t)0x865678EA,\n\t(q31_t)0xD838C82D, (q31_t)0x8666213C, (q31_t)0xD809046D,\n\t(q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x8685AA1F,\n\t(q31_t)0xD7A98F73, (q31_t)0x86958AAB, (q31_t)0xD779DE46,\n\t(q31_t)0x86A57DF1, (q31_t)0xD74A335A, (q31_t)0x86B583EE,\n\t(q31_t)0xD71A8EB5, (q31_t)0x86C59C9F, (q31_t)0xD6EAF05E,\n\t(q31_t)0x86D5C802, (q31_t)0xD6BB585D, (q31_t)0x86E60614,\n\t(q31_t)0xD68BC6BA, (q31_t)0x86F656D3, (q31_t)0xD65C3B7B,\n\t(q31_t)0x8706BA3C, (q31_t)0xD62CB6A7, (q31_t)0x8717304E,\n\t(q31_t)0xD5FD3847, (q31_t)0x8727B904, (q31_t)0xD5CDC062,\n\t(q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x87490257,\n\t(q31_t)0xD56EE424, (q31_t)0x8759C2EF, (q31_t)0xD53F7FDA,\n\t(q31_t)0x876A9621, (q31_t)0xD5102227, (q31_t)0x877B7BEC,\n\t(q31_t)0xD4E0CB14, (q31_t)0x878C744C, (q31_t)0xD4B17AA7,\n\t(q31_t)0x879D7F40, (q31_t)0xD48230E8, (q31_t)0x87AE9CC5,\n\t(q31_t)0xD452EDDE, (q31_t)0x87BFCCD7, (q31_t)0xD423B190,\n\t(q31_t)0x87D10F75, (q31_t)0xD3F47C06, (q31_t)0x87E2649B,\n\t(q31_t)0xD3C54D46, (q31_t)0x87F3CC47, (q31_t)0xD3962559,\n\t(q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x8816D327,\n\t(q31_t)0xD337EA12, (q31_t)0x88287255, (q31_t)0xD308D6C6,\n\t(q31_t)0x883A23FE, (q31_t)0xD2D9CA6A, (q31_t)0x884BE820,\n\t(q31_t)0xD2AAC504, (q31_t)0x885DBEB7, (q31_t)0xD27BC69C,\n\t(q31_t)0x886FA7C2, (q31_t)0xD24CCF38, (q31_t)0x8881A33C,\n\t(q31_t)0xD21DDEE1, (q31_t)0x8893B124, (q31_t)0xD1EEF59E,\n\t(q31_t)0x88A5D177, (q31_t)0xD1C01374, (q31_t)0x88B80431,\n\t(q31_t)0xD191386D, (q31_t)0x88CA4951, (q31_t)0xD162648F,\n\t(q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x88EF0AB4,\n\t(q31_t)0xD104D26B, (q31_t)0x890186F1, (q31_t)0xD0D61433,\n\t(q31_t)0x89141589, (q31_t)0xD0A75D42, (q31_t)0x8926B677,\n\t(q31_t)0xD078AD9D, (q31_t)0x893969B9, (q31_t)0xD04A054D,\n\t(q31_t)0x894C2F4C, (q31_t)0xD01B6459, (q31_t)0x895F072D,\n\t(q31_t)0xCFECCAC7, (q31_t)0x8971F15A, (q31_t)0xCFBE389F,\n\t(q31_t)0x8984EDCF, (q31_t)0xCF8FADE8, (q31_t)0x8997FC89,\n\t(q31_t)0xCF612AAA, (q31_t)0x89AB1D86, (q31_t)0xCF32AEEB,\n\t(q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x89D1963C,\n\t(q31_t)0xCED5CE08, (q31_t)0x89E4EDEE, (q31_t)0xCEA768F2,\n\t(q31_t)0x89F857D8, (q31_t)0xCE790B78, (q31_t)0x8A0BD3F5,\n\t(q31_t)0xCE4AB5A2, (q31_t)0x8A1F6242, (q31_t)0xCE1C6776,\n\t(q31_t)0x8A3302BD, (q31_t)0xCDEE20FC, (q31_t)0x8A46B563,\n\t(q31_t)0xCDBFE23A, (q31_t)0x8A5A7A30, (q31_t)0xCD91AB38,\n\t(q31_t)0x8A6E5122, (q31_t)0xCD637BFD, (q31_t)0x8A823A35,\n\t(q31_t)0xCD355490, (q31_t)0x8A963567, (q31_t)0xCD0734F8,\n\t(q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8ABE6219,\n\t(q31_t)0xCCAB0D65, (q31_t)0x8AD29393, (q31_t)0xCC7D0577,\n\t(q31_t)0x8AE6D71F, (q31_t)0xCC4F057B, (q31_t)0x8AFB2CBA,\n\t(q31_t)0xCC210D78, (q31_t)0x8B0F9461, (q31_t)0xCBF31D75,\n\t(q31_t)0x8B240E10, (q31_t)0xCBC53578, (q31_t)0x8B3899C5,\n\t(q31_t)0xCB975589, (q31_t)0x8B4D377C, (q31_t)0xCB697DB0,\n\t(q31_t)0x8B61E732, (q31_t)0xCB3BADF2, (q31_t)0x8B76A8E4,\n\t(q31_t)0xCB0DE658, (q31_t)0x8B8B7C8F, (q31_t)0xCAE026E8,\n\t(q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BB559C1,\n\t(q31_t)0xCA84C0A2, (q31_t)0x8BCA6342, (q31_t)0xCA5719DB,\n\t(q31_t)0x8BDF7EAF, (q31_t)0xCA297B5A, (q31_t)0x8BF4AC05,\n\t(q31_t)0xC9FBE527, (q31_t)0x8C09EB40, (q31_t)0xC9CE5748,\n\t(q31_t)0x8C1F3C5C, (q31_t)0xC9A0D1C4, (q31_t)0x8C349F58,\n\t(q31_t)0xC97354A3, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC,\n\t(q31_t)0x8C5F9ADD, (q31_t)0xC91873A5, (q31_t)0x8C753361,\n\t(q31_t)0xC8EB0FD6, (q31_t)0x8C8ADDB6, (q31_t)0xC8BDB485,\n\t(q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CB667C7,\n\t(q31_t)0xC863177B, (q31_t)0x8CCC477D, (q31_t)0xC835D5D0,\n\t(q31_t)0x8CE238F6, (q31_t)0xC8089CBF, (q31_t)0x8CF83C30,\n\t(q31_t)0xC7DB6C50, (q31_t)0x8D0E5127, (q31_t)0xC7AE4489,\n\t(q31_t)0x8D2477D8, (q31_t)0xC7812571, (q31_t)0x8D3AB03F,\n\t(q31_t)0xC7540F10, (q31_t)0x8D50FA59, (q31_t)0xC727016C,\n\t(q31_t)0x8D675623, (q31_t)0xC6F9FC8D, (q31_t)0x8D7DC399,\n\t(q31_t)0xC6CD0079, (q31_t)0x8D9442B7, (q31_t)0xC6A00D36,\n\t(q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8DC175E0,\n\t(q31_t)0xC6464144, (q31_t)0x8DD829E4, (q31_t)0xC61968A2,\n\t(q31_t)0x8DEEEF82, (q31_t)0xC5EC98ED, (q31_t)0x8E05C6B7,\n\t(q31_t)0xC5BFD22E, (q31_t)0x8E1CAF80, (q31_t)0xC593146A,\n\t(q31_t)0x8E33A9D9, (q31_t)0xC5665FA8, (q31_t)0x8E4AB5BF,\n\t(q31_t)0xC539B3F0, (q31_t)0x8E61D32D, (q31_t)0xC50D1148,\n\t(q31_t)0x8E790222, (q31_t)0xC4E077B8, (q31_t)0x8E904298,\n\t(q31_t)0xC4B3E746, (q31_t)0x8EA7948C, (q31_t)0xC4875FF8,\n\t(q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8ED66CE1,\n\t(q31_t)0xC42E6CE8, (q31_t)0x8EEDF33B, (q31_t)0xC4020132,\n\t(q31_t)0x8F058B04, (q31_t)0xC3D59EBD, (q31_t)0x8F1D343A,\n\t(q31_t)0xC3A9458F, (q31_t)0x8F34EED8, (q31_t)0xC37CF5B0,\n\t(q31_t)0x8F4CBADB, (q31_t)0xC350AF25, (q31_t)0x8F64983F,\n\t(q31_t)0xC32471F6, (q31_t)0x8F7C8701, (q31_t)0xC2F83E2A,\n\t(q31_t)0x8F94871D, (q31_t)0xC2CC13C7, (q31_t)0x8FAC988E,\n\t(q31_t)0xC29FF2D4, (q31_t)0x8FC4BB53, (q31_t)0xC273DB58,\n\t(q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x8FF534C4,\n\t(q31_t)0xC21BC8E0, (q31_t)0x900D8B69, (q31_t)0xC1EFCDF2,\n\t(q31_t)0x9025F352, (q31_t)0xC1C3DC96, (q31_t)0x903E6C7A,\n\t(q31_t)0xC197F4D3, (q31_t)0x9056F6DF, (q31_t)0xC16C16B0,\n\t(q31_t)0x906F927B, (q31_t)0xC1404233, (q31_t)0x90883F4C,\n\t(q31_t)0xC1147763, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648,\n\t(q31_t)0x90B9CC7C, (q31_t)0xC0BCFEE7, (q31_t)0x90D2ACD3,\n\t(q31_t)0xC0915147, (q31_t)0x90EB9E50, (q31_t)0xC065AD70,\n\t(q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x911DB4A8,\n\t(q31_t)0xC00E8335, (q31_t)0x9136D97D, (q31_t)0xBFE2FCDF,\n\t(q31_t)0x91500F67, (q31_t)0xBFB7806C, (q31_t)0x91695663,\n\t(q31_t)0xBF8C0DE2, (q31_t)0x9182AE6C, (q31_t)0xBF60A54A,\n\t(q31_t)0x919C1780, (q31_t)0xBF3546A8, (q31_t)0x91B5919A,\n\t(q31_t)0xBF09F204, (q31_t)0x91CF1CB6, (q31_t)0xBEDEA765,\n\t(q31_t)0x91E8B8D0, (q31_t)0xBEB366D1, (q31_t)0x920265E4,\n\t(q31_t)0xBE88304F, (q31_t)0x921C23EE, (q31_t)0xBE5D03E5,\n\t(q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x924FD2D6,\n\t(q31_t)0xBE06C977, (q31_t)0x9269C3AC, (q31_t)0xBDDBBB7F,\n\t(q31_t)0x9283C567, (q31_t)0xBDB0B7BA, (q31_t)0x929DD805,\n\t(q31_t)0xBD85BE2F, (q31_t)0x92B7FB82, (q31_t)0xBD5ACEE5,\n\t(q31_t)0x92D22FD8, (q31_t)0xBD2FE9E1, (q31_t)0x92EC7505,\n\t(q31_t)0xBD050F2C, (q31_t)0x9306CB04, (q31_t)0xBCDA3ECA,\n\t(q31_t)0x932131D1, (q31_t)0xBCAF78C3, (q31_t)0x933BA968,\n\t(q31_t)0xBC84BD1E, (q31_t)0x935631C5, (q31_t)0xBC5A0BE1,\n\t(q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x938B74C0,\n\t(q31_t)0xBC04C8BA, (q31_t)0x93A62F56, (q31_t)0xBBDA36DC,\n\t(q31_t)0x93C0FAA2, (q31_t)0xBBAFAF81, (q31_t)0x93DBD69F,\n\t(q31_t)0xBB8532AF, (q31_t)0x93F6C34A, (q31_t)0xBB5AC06C,\n\t(q31_t)0x9411C09D, (q31_t)0xBB3058C0, (q31_t)0x942CCE95,\n\t(q31_t)0xBB05FBB0, (q31_t)0x9447ED2F, (q31_t)0xBADBA943,\n\t(q31_t)0x94631C64, (q31_t)0xBAB1617F, (q31_t)0x947E5C32,\n\t(q31_t)0xBA87246C, (q31_t)0x9499AC95, (q31_t)0xBA5CF210,\n\t(q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x94D07F05,\n\t(q31_t)0xBA08AD94, (q31_t)0x94EC010B, (q31_t)0xB9DE9B83,\n\t(q31_t)0x95079393, (q31_t)0xB9B49442, (q31_t)0x9523369B,\n\t(q31_t)0xB98A97D8, (q31_t)0x953EEA1E, (q31_t)0xB960A64B,\n\t(q31_t)0x955AAE17, (q31_t)0xB936BFA3, (q31_t)0x95768282,\n\t(q31_t)0xB90CE3E6, (q31_t)0x9592675B, (q31_t)0xB8E31319,\n\t(q31_t)0x95AE5C9E, (q31_t)0xB8B94D44, (q31_t)0x95CA6246,\n\t(q31_t)0xB88F926C, (q31_t)0x95E6784F, (q31_t)0xB865E299,\n\t(q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x961ED573,\n\t(q31_t)0xB812A419, (q31_t)0x963B1C85, (q31_t)0xB7E9157A,\n\t(q31_t)0x965773E7, (q31_t)0xB7BF91F8, (q31_t)0x9673DB94,\n\t(q31_t)0xB796199B, (q31_t)0x96905387, (q31_t)0xB76CAC68,\n\t(q31_t)0x96ACDBBD, (q31_t)0xB7434A67, (q31_t)0x96C97431,\n\t(q31_t)0xB719F39D, (q31_t)0x96E61CDF, (q31_t)0xB6F0A811,\n\t(q31_t)0x9702D5C2, (q31_t)0xB6C767CA, (q31_t)0x971F9ED6,\n\t(q31_t)0xB69E32CD, (q31_t)0x973C7816, (q31_t)0xB6750921,\n\t(q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x97765B0A,\n\t(q31_t)0xB622D7D5, (q31_t)0x979364B5, (q31_t)0xB5F9D042,\n\t(q31_t)0x97B07E7A, (q31_t)0xB5D0D41A, (q31_t)0x97CDA855,\n\t(q31_t)0xB5A7E362, (q31_t)0x97EAE241, (q31_t)0xB57EFE21,\n\t(q31_t)0x98082C3B, (q31_t)0xB556245E, (q31_t)0x9825863D,\n\t(q31_t)0xB52D561E, (q31_t)0x9842F043, (q31_t)0xB5049368,\n\t(q31_t)0x98606A48, (q31_t)0xB4DBDC42, (q31_t)0x987DF449,\n\t(q31_t)0xB4B330B2, (q31_t)0x989B8E3F, (q31_t)0xB48A90C0,\n\t(q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x98D6F1FE,\n\t(q31_t)0xB43973C9, (q31_t)0x98F4BBBC, (q31_t)0xB410F6D2,\n\t(q31_t)0x9912955E, (q31_t)0xB3E88591, (q31_t)0x99307EE0,\n\t(q31_t)0xB3C0200C, (q31_t)0x994E783C, (q31_t)0xB397C649,\n\t(q31_t)0x996C816F, (q31_t)0xB36F784E, (q31_t)0x998A9A73,\n\t(q31_t)0xB3473622, (q31_t)0x99A8C344, (q31_t)0xB31EFFCB,\n\t(q31_t)0x99C6FBDE, (q31_t)0xB2F6D54F, (q31_t)0x99E5443A,\n\t(q31_t)0xB2CEB6B5, (q31_t)0x9A039C56, (q31_t)0xB2A6A401,\n\t(q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A407BB8,\n\t(q31_t)0xB256A26A, (q31_t)0x9A5F02F5, (q31_t)0xB22EB392,\n\t(q31_t)0x9A7D99DD, (q31_t)0xB206D0BA, (q31_t)0x9A9C406D,\n\t(q31_t)0xB1DEF9E8, (q31_t)0x9ABAF6A0, (q31_t)0xB1B72F23,\n\t(q31_t)0x9AD9BC71, (q31_t)0xB18F7070, (q31_t)0x9AF891DB,\n\t(q31_t)0xB167BDD6, (q31_t)0x9B1776D9, (q31_t)0xB140175B,\n\t(q31_t)0x9B366B67, (q31_t)0xB1187D05, (q31_t)0x9B556F80,\n\t(q31_t)0xB0F0EEDA, (q31_t)0x9B748320, (q31_t)0xB0C96CDF,\n\t(q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9BB2D8DD,\n\t(q31_t)0xB07A8D97, (q31_t)0x9BD21AF2, (q31_t)0xB0533055,\n\t(q31_t)0x9BF16C7A, (q31_t)0xB02BDF5C, (q31_t)0x9C10CD70,\n\t(q31_t)0xB0049AB2, (q31_t)0x9C303DCF, (q31_t)0xAFDD625F,\n\t(q31_t)0x9C4FBD92, (q31_t)0xAFB63667, (q31_t)0x9C6F4CB5,\n\t(q31_t)0xAF8F16D0, (q31_t)0x9C8EEB33, (q31_t)0xAF6803A1,\n\t(q31_t)0x9CAE9907, (q31_t)0xAF40FCE0, (q31_t)0x9CCE562B,\n\t(q31_t)0xAF1A0293, (q31_t)0x9CEE229C, (q31_t)0xAEF314BF,\n\t(q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D2DE94D,\n\t(q31_t)0xAEA55E9D, (q31_t)0x9D4DE384, (q31_t)0xAE7E965B,\n\t(q31_t)0x9D6DECF4, (q31_t)0xAE57DAAA, (q31_t)0x9D8E0596,\n\t(q31_t)0xAE312B91, (q31_t)0x9DAE2D68, (q31_t)0xAE0A8916,\n\t(q31_t)0x9DCE6462, (q31_t)0xADE3F33E, (q31_t)0x9DEEAA82,\n\t(q31_t)0xADBD6A10, (q31_t)0x9E0EFFC1, (q31_t)0xAD96ED91,\n\t(q31_t)0x9E2F641A, (q31_t)0xAD707DC8, (q31_t)0x9E4FD789,\n\t(q31_t)0xAD4A1ABA, (q31_t)0x9E705A09, (q31_t)0xAD23C46D,\n\t(q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9EB18C26,\n\t(q31_t)0xACD73E30, (q31_t)0x9ED23BB9, (q31_t)0xACB10E4A,\n\t(q31_t)0x9EF2FA48, (q31_t)0xAC8AEB3E, (q31_t)0x9F13C7D0,\n\t(q31_t)0xAC64D510, (q31_t)0x9F34A449, (q31_t)0xAC3ECBC7,\n\t(q31_t)0x9F558FB0, (q31_t)0xAC18CF68, (q31_t)0x9F7689FF,\n\t(q31_t)0xABF2DFFA, (q31_t)0x9F979331, (q31_t)0xABCCFD82,\n\t(q31_t)0x9FB8AB41, (q31_t)0xABA72806, (q31_t)0x9FD9D22A,\n\t(q31_t)0xAB815F8C, (q31_t)0x9FFB07E7, (q31_t)0xAB5BA41A,\n\t(q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA03D9FC7,\n\t(q31_t)0xAB105464, (q31_t)0xA05F01E1, (q31_t)0xAAEAC02B,\n\t(q31_t)0xA08072BA, (q31_t)0xAAC53912, (q31_t)0xA0A1F24C,\n\t(q31_t)0xAA9FBF1D, (q31_t)0xA0C38094, (q31_t)0xAA7A5253,\n\t(q31_t)0xA0E51D8C, (q31_t)0xAA54F2B9, (q31_t)0xA106C92E,\n\t(q31_t)0xAA2FA055, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D,\n\t(q31_t)0xA14A4C5E, (q31_t)0xA9E52347, (q31_t)0xA16C23E1,\n\t(q31_t)0xA9BFF8A8, (q31_t)0xA18E09F9, (q31_t)0xA99ADB56,\n\t(q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA1D201D7,\n\t(q31_t)0xA950C8AF, (q31_t)0xA1F41391, (q31_t)0xA92BD366,\n\t(q31_t)0xA21633CD, (q31_t)0xA906EB81, (q31_t)0xA2386283,\n\t(q31_t)0xA8E21106, (q31_t)0xA25A9FB1, (q31_t)0xA8BD43FA,\n\t(q31_t)0xA27CEB4F, (q31_t)0xA8988463, (q31_t)0xA29F4559,\n\t(q31_t)0xA873D246, (q31_t)0xA2C1ADC9, (q31_t)0xA84F2DA9,\n\t(q31_t)0xA2E4249A, (q31_t)0xA82A9693, (q31_t)0xA306A9C7,\n\t(q31_t)0xA8060D08, (q31_t)0xA3293D4B, (q31_t)0xA7E1910E,\n\t(q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA36E8F40,\n\t(q31_t)0xA798C1E4, (q31_t)0xA3914DA7, (q31_t)0xA7746EC0,\n\t(q31_t)0xA3B41A4F, (q31_t)0xA7502943, (q31_t)0xA3D6F533,\n\t(q31_t)0xA72BF173, (q31_t)0xA3F9DE4D, (q31_t)0xA707C756,\n\t(q31_t)0xA41CD598, (q31_t)0xA6E3AAF2, (q31_t)0xA43FDB0F,\n\t(q31_t)0xA6BF9C4B, (q31_t)0xA462EEAC, (q31_t)0xA69B9B68,\n\t(q31_t)0xA4861069, (q31_t)0xA677A84E, (q31_t)0xA4A94042,\n\t(q31_t)0xA653C302, (q31_t)0xA4CC7E31, (q31_t)0xA62FEB8B,\n\t(q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA513243B,\n\t(q31_t)0xA5E8662F, (q31_t)0xA5368C4B, (q31_t)0xA5C4B855,\n\t(q31_t)0xA55A025B, (q31_t)0xA5A11865, (q31_t)0xA57D8666,\n\t(q31_t)0xA57D8666, (q31_t)0xA5A11865, (q31_t)0xA55A025B,\n\t(q31_t)0xA5C4B855, (q31_t)0xA5368C4B, (q31_t)0xA5E8662F,\n\t(q31_t)0xA513243B, (q31_t)0xA60C21ED, (q31_t)0xA4EFCA31,\n\t(q31_t)0xA62FEB8B, (q31_t)0xA4CC7E31, (q31_t)0xA653C302,\n\t(q31_t)0xA4A94042, (q31_t)0xA677A84E, (q31_t)0xA4861069,\n\t(q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA6BF9C4B,\n\t(q31_t)0xA43FDB0F, (q31_t)0xA6E3AAF2, (q31_t)0xA41CD598,\n\t(q31_t)0xA707C756, (q31_t)0xA3F9DE4D, (q31_t)0xA72BF173,\n\t(q31_t)0xA3D6F533, (q31_t)0xA7502943, (q31_t)0xA3B41A4F,\n\t(q31_t)0xA7746EC0, (q31_t)0xA3914DA7, (q31_t)0xA798C1E4,\n\t(q31_t)0xA36E8F40, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20,\n\t(q31_t)0xA7E1910E, (q31_t)0xA3293D4B, (q31_t)0xA8060D08,\n\t(q31_t)0xA306A9C7, (q31_t)0xA82A9693, (q31_t)0xA2E4249A,\n\t(q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA873D246,\n\t(q31_t)0xA29F4559, (q31_t)0xA8988463, (q31_t)0xA27CEB4F,\n\t(q31_t)0xA8BD43FA, (q31_t)0xA25A9FB1, (q31_t)0xA8E21106,\n\t(q31_t)0xA2386283, (q31_t)0xA906EB81, (q31_t)0xA21633CD,\n\t(q31_t)0xA92BD366, (q31_t)0xA1F41391, (q31_t)0xA950C8AF,\n\t(q31_t)0xA1D201D7, (q31_t)0xA975CB56, (q31_t)0xA1AFFEA2,\n\t(q31_t)0xA99ADB56, (q31_t)0xA18E09F9, (q31_t)0xA9BFF8A8,\n\t(q31_t)0xA16C23E1, (q31_t)0xA9E52347, (q31_t)0xA14A4C5E,\n\t(q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA2FA055,\n\t(q31_t)0xA106C92E, (q31_t)0xAA54F2B9, (q31_t)0xA0E51D8C,\n\t(q31_t)0xAA7A5253, (q31_t)0xA0C38094, (q31_t)0xAA9FBF1D,\n\t(q31_t)0xA0A1F24C, (q31_t)0xAAC53912, (q31_t)0xA08072BA,\n\t(q31_t)0xAAEAC02B, (q31_t)0xA05F01E1, (q31_t)0xAB105464,\n\t(q31_t)0xA03D9FC7, (q31_t)0xAB35F5B5, (q31_t)0xA01C4C72,\n\t(q31_t)0xAB5BA41A, (q31_t)0x9FFB07E7, (q31_t)0xAB815F8C,\n\t(q31_t)0x9FD9D22A, (q31_t)0xABA72806, (q31_t)0x9FB8AB41,\n\t(q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xABF2DFFA,\n\t(q31_t)0x9F7689FF, (q31_t)0xAC18CF68, (q31_t)0x9F558FB0,\n\t(q31_t)0xAC3ECBC7, (q31_t)0x9F34A449, (q31_t)0xAC64D510,\n\t(q31_t)0x9F13C7D0, (q31_t)0xAC8AEB3E, (q31_t)0x9EF2FA48,\n\t(q31_t)0xACB10E4A, (q31_t)0x9ED23BB9, (q31_t)0xACD73E30,\n\t(q31_t)0x9EB18C26, (q31_t)0xACFD7AE8, (q31_t)0x9E90EB94,\n\t(q31_t)0xAD23C46D, (q31_t)0x9E705A09, (q31_t)0xAD4A1ABA,\n\t(q31_t)0x9E4FD789, (q31_t)0xAD707DC8, (q31_t)0x9E2F641A,\n\t(q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xADBD6A10,\n\t(q31_t)0x9DEEAA82, (q31_t)0xADE3F33E, (q31_t)0x9DCE6462,\n\t(q31_t)0xAE0A8916, (q31_t)0x9DAE2D68, (q31_t)0xAE312B91,\n\t(q31_t)0x9D8E0596, (q31_t)0xAE57DAAA, (q31_t)0x9D6DECF4,\n\t(q31_t)0xAE7E965B, (q31_t)0x9D4DE384, (q31_t)0xAEA55E9D,\n\t(q31_t)0x9D2DE94D, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53,\n\t(q31_t)0xAEF314BF, (q31_t)0x9CEE229C, (q31_t)0xAF1A0293,\n\t(q31_t)0x9CCE562B, (q31_t)0xAF40FCE0, (q31_t)0x9CAE9907,\n\t(q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xAF8F16D0,\n\t(q31_t)0x9C6F4CB5, (q31_t)0xAFB63667, (q31_t)0x9C4FBD92,\n\t(q31_t)0xAFDD625F, (q31_t)0x9C303DCF, (q31_t)0xB0049AB2,\n\t(q31_t)0x9C10CD70, (q31_t)0xB02BDF5C, (q31_t)0x9BF16C7A,\n\t(q31_t)0xB0533055, (q31_t)0x9BD21AF2, (q31_t)0xB07A8D97,\n\t(q31_t)0x9BB2D8DD, (q31_t)0xB0A1F71C, (q31_t)0x9B93A640,\n\t(q31_t)0xB0C96CDF, (q31_t)0x9B748320, (q31_t)0xB0F0EEDA,\n\t(q31_t)0x9B556F80, (q31_t)0xB1187D05, (q31_t)0x9B366B67,\n\t(q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB167BDD6,\n\t(q31_t)0x9AF891DB, (q31_t)0xB18F7070, (q31_t)0x9AD9BC71,\n\t(q31_t)0xB1B72F23, (q31_t)0x9ABAF6A0, (q31_t)0xB1DEF9E8,\n\t(q31_t)0x9A9C406D, (q31_t)0xB206D0BA, (q31_t)0x9A7D99DD,\n\t(q31_t)0xB22EB392, (q31_t)0x9A5F02F5, (q31_t)0xB256A26A,\n\t(q31_t)0x9A407BB8, (q31_t)0xB27E9D3B, (q31_t)0x9A22042C,\n\t(q31_t)0xB2A6A401, (q31_t)0x9A039C56, (q31_t)0xB2CEB6B5,\n\t(q31_t)0x99E5443A, (q31_t)0xB2F6D54F, (q31_t)0x99C6FBDE,\n\t(q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB3473622,\n\t(q31_t)0x998A9A73, (q31_t)0xB36F784E, (q31_t)0x996C816F,\n\t(q31_t)0xB397C649, (q31_t)0x994E783C, (q31_t)0xB3C0200C,\n\t(q31_t)0x99307EE0, (q31_t)0xB3E88591, (q31_t)0x9912955E,\n\t(q31_t)0xB410F6D2, (q31_t)0x98F4BBBC, (q31_t)0xB43973C9,\n\t(q31_t)0x98D6F1FE, (q31_t)0xB461FC70, (q31_t)0x98B93828,\n\t(q31_t)0xB48A90C0, (q31_t)0x989B8E3F, (q31_t)0xB4B330B2,\n\t(q31_t)0x987DF449, (q31_t)0xB4DBDC42, (q31_t)0x98606A48,\n\t(q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB52D561E,\n\t(q31_t)0x9825863D, (q31_t)0xB556245E, (q31_t)0x98082C3B,\n\t(q31_t)0xB57EFE21, (q31_t)0x97EAE241, (q31_t)0xB5A7E362,\n\t(q31_t)0x97CDA855, (q31_t)0xB5D0D41A, (q31_t)0x97B07E7A,\n\t(q31_t)0xB5F9D042, (q31_t)0x979364B5, (q31_t)0xB622D7D5,\n\t(q31_t)0x97765B0A, (q31_t)0xB64BEACC, (q31_t)0x9759617E,\n\t(q31_t)0xB6750921, (q31_t)0x973C7816, (q31_t)0xB69E32CD,\n\t(q31_t)0x971F9ED6, (q31_t)0xB6C767CA, (q31_t)0x9702D5C2,\n\t(q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB719F39D,\n\t(q31_t)0x96C97431, (q31_t)0xB7434A67, (q31_t)0x96ACDBBD,\n\t(q31_t)0xB76CAC68, (q31_t)0x96905387, (q31_t)0xB796199B,\n\t(q31_t)0x9673DB94, (q31_t)0xB7BF91F8, (q31_t)0x965773E7,\n\t(q31_t)0xB7E9157A, (q31_t)0x963B1C85, (q31_t)0xB812A419,\n\t(q31_t)0x961ED573, (q31_t)0xB83C3DD1, (q31_t)0x96029EB5,\n\t(q31_t)0xB865E299, (q31_t)0x95E6784F, (q31_t)0xB88F926C,\n\t(q31_t)0x95CA6246, (q31_t)0xB8B94D44, (q31_t)0x95AE5C9E,\n\t(q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB90CE3E6,\n\t(q31_t)0x95768282, (q31_t)0xB936BFA3, (q31_t)0x955AAE17,\n\t(q31_t)0xB960A64B, (q31_t)0x953EEA1E, (q31_t)0xB98A97D8,\n\t(q31_t)0x9523369B, (q31_t)0xB9B49442, (q31_t)0x95079393,\n\t(q31_t)0xB9DE9B83, (q31_t)0x94EC010B, (q31_t)0xBA08AD94,\n\t(q31_t)0x94D07F05, (q31_t)0xBA32CA70, (q31_t)0x94B50D87,\n\t(q31_t)0xBA5CF210, (q31_t)0x9499AC95, (q31_t)0xBA87246C,\n\t(q31_t)0x947E5C32, (q31_t)0xBAB1617F, (q31_t)0x94631C64,\n\t(q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB05FBB0,\n\t(q31_t)0x942CCE95, (q31_t)0xBB3058C0, (q31_t)0x9411C09D,\n\t(q31_t)0xBB5AC06C, (q31_t)0x93F6C34A, (q31_t)0xBB8532AF,\n\t(q31_t)0x93DBD69F, (q31_t)0xBBAFAF81, (q31_t)0x93C0FAA2,\n\t(q31_t)0xBBDA36DC, (q31_t)0x93A62F56, (q31_t)0xBC04C8BA,\n\t(q31_t)0x938B74C0, (q31_t)0xBC2F6513, (q31_t)0x9370CAE4,\n\t(q31_t)0xBC5A0BE1, (q31_t)0x935631C5, (q31_t)0xBC84BD1E,\n\t(q31_t)0x933BA968, (q31_t)0xBCAF78C3, (q31_t)0x932131D1,\n\t(q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD050F2C,\n\t(q31_t)0x92EC7505, (q31_t)0xBD2FE9E1, (q31_t)0x92D22FD8,\n\t(q31_t)0xBD5ACEE5, (q31_t)0x92B7FB82, (q31_t)0xBD85BE2F,\n\t(q31_t)0x929DD805, (q31_t)0xBDB0B7BA, (q31_t)0x9283C567,\n\t(q31_t)0xBDDBBB7F, (q31_t)0x9269C3AC, (q31_t)0xBE06C977,\n\t(q31_t)0x924FD2D6, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB,\n\t(q31_t)0xBE5D03E5, (q31_t)0x921C23EE, (q31_t)0xBE88304F,\n\t(q31_t)0x920265E4, (q31_t)0xBEB366D1, (q31_t)0x91E8B8D0,\n\t(q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF09F204,\n\t(q31_t)0x91B5919A, (q31_t)0xBF3546A8, (q31_t)0x919C1780,\n\t(q31_t)0xBF60A54A, (q31_t)0x9182AE6C, (q31_t)0xBF8C0DE2,\n\t(q31_t)0x91695663, (q31_t)0xBFB7806C, (q31_t)0x91500F67,\n\t(q31_t)0xBFE2FCDF, (q31_t)0x9136D97D, (q31_t)0xC00E8335,\n\t(q31_t)0x911DB4A8, (q31_t)0xC03A1368, (q31_t)0x9104A0ED,\n\t(q31_t)0xC065AD70, (q31_t)0x90EB9E50, (q31_t)0xC0915147,\n\t(q31_t)0x90D2ACD3, (q31_t)0xC0BCFEE7, (q31_t)0x90B9CC7C,\n\t(q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC1147763,\n\t(q31_t)0x90883F4C, (q31_t)0xC1404233, (q31_t)0x906F927B,\n\t(q31_t)0xC16C16B0, (q31_t)0x9056F6DF, (q31_t)0xC197F4D3,\n\t(q31_t)0x903E6C7A, (q31_t)0xC1C3DC96, (q31_t)0x9025F352,\n\t(q31_t)0xC1EFCDF2, (q31_t)0x900D8B69, (q31_t)0xC21BC8E0,\n\t(q31_t)0x8FF534C4, (q31_t)0xC247CD5A, (q31_t)0x8FDCEF66,\n\t(q31_t)0xC273DB58, (q31_t)0x8FC4BB53, (q31_t)0xC29FF2D4,\n\t(q31_t)0x8FAC988E, (q31_t)0xC2CC13C7, (q31_t)0x8F94871D,\n\t(q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC32471F6,\n\t(q31_t)0x8F64983F, (q31_t)0xC350AF25, (q31_t)0x8F4CBADB,\n\t(q31_t)0xC37CF5B0, (q31_t)0x8F34EED8, (q31_t)0xC3A9458F,\n\t(q31_t)0x8F1D343A, (q31_t)0xC3D59EBD, (q31_t)0x8F058B04,\n\t(q31_t)0xC4020132, (q31_t)0x8EEDF33B, (q31_t)0xC42E6CE8,\n\t(q31_t)0x8ED66CE1, (q31_t)0xC45AE1D7, (q31_t)0x8EBEF7FB,\n\t(q31_t)0xC4875FF8, (q31_t)0x8EA7948C, (q31_t)0xC4B3E746,\n\t(q31_t)0x8E904298, (q31_t)0xC4E077B8, (q31_t)0x8E790222,\n\t(q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC539B3F0,\n\t(q31_t)0x8E4AB5BF, (q31_t)0xC5665FA8, (q31_t)0x8E33A9D9,\n\t(q31_t)0xC593146A, (q31_t)0x8E1CAF80, (q31_t)0xC5BFD22E,\n\t(q31_t)0x8E05C6B7, (q31_t)0xC5EC98ED, (q31_t)0x8DEEEF82,\n\t(q31_t)0xC61968A2, (q31_t)0x8DD829E4, (q31_t)0xC6464144,\n\t(q31_t)0x8DC175E0, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B,\n\t(q31_t)0xC6A00D36, (q31_t)0x8D9442B7, (q31_t)0xC6CD0079,\n\t(q31_t)0x8D7DC399, (q31_t)0xC6F9FC8D, (q31_t)0x8D675623,\n\t(q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7540F10,\n\t(q31_t)0x8D3AB03F, (q31_t)0xC7812571, (q31_t)0x8D2477D8,\n\t(q31_t)0xC7AE4489, (q31_t)0x8D0E5127, (q31_t)0xC7DB6C50,\n\t(q31_t)0x8CF83C30, (q31_t)0xC8089CBF, (q31_t)0x8CE238F6,\n\t(q31_t)0xC835D5D0, (q31_t)0x8CCC477D, (q31_t)0xC863177B,\n\t(q31_t)0x8CB667C7, (q31_t)0xC89061BA, (q31_t)0x8CA099D9,\n\t(q31_t)0xC8BDB485, (q31_t)0x8C8ADDB6, (q31_t)0xC8EB0FD6,\n\t(q31_t)0x8C753361, (q31_t)0xC91873A5, (q31_t)0x8C5F9ADD,\n\t(q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC97354A3,\n\t(q31_t)0x8C349F58, (q31_t)0xC9A0D1C4, (q31_t)0x8C1F3C5C,\n\t(q31_t)0xC9CE5748, (q31_t)0x8C09EB40, (q31_t)0xC9FBE527,\n\t(q31_t)0x8BF4AC05, (q31_t)0xCA297B5A, (q31_t)0x8BDF7EAF,\n\t(q31_t)0xCA5719DB, (q31_t)0x8BCA6342, (q31_t)0xCA84C0A2,\n\t(q31_t)0x8BB559C1, (q31_t)0xCAB26FA9, (q31_t)0x8BA0622F,\n\t(q31_t)0xCAE026E8, (q31_t)0x8B8B7C8F, (q31_t)0xCB0DE658,\n\t(q31_t)0x8B76A8E4, (q31_t)0xCB3BADF2, (q31_t)0x8B61E732,\n\t(q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCB975589,\n\t(q31_t)0x8B3899C5, (q31_t)0xCBC53578, (q31_t)0x8B240E10,\n\t(q31_t)0xCBF31D75, (q31_t)0x8B0F9461, (q31_t)0xCC210D78,\n\t(q31_t)0x8AFB2CBA, (q31_t)0xCC4F057B, (q31_t)0x8AE6D71F,\n\t(q31_t)0xCC7D0577, (q31_t)0x8AD29393, (q31_t)0xCCAB0D65,\n\t(q31_t)0x8ABE6219, (q31_t)0xCCD91D3D, (q31_t)0x8AAA42B4,\n\t(q31_t)0xCD0734F8, (q31_t)0x8A963567, (q31_t)0xCD355490,\n\t(q31_t)0x8A823A35, (q31_t)0xCD637BFD, (q31_t)0x8A6E5122,\n\t(q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCDBFE23A,\n\t(q31_t)0x8A46B563, (q31_t)0xCDEE20FC, (q31_t)0x8A3302BD,\n\t(q31_t)0xCE1C6776, (q31_t)0x8A1F6242, (q31_t)0xCE4AB5A2,\n\t(q31_t)0x8A0BD3F5, (q31_t)0xCE790B78, (q31_t)0x89F857D8,\n\t(q31_t)0xCEA768F2, (q31_t)0x89E4EDEE, (q31_t)0xCED5CE08,\n\t(q31_t)0x89D1963C, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3,\n\t(q31_t)0xCF32AEEB, (q31_t)0x89AB1D86, (q31_t)0xCF612AAA,\n\t(q31_t)0x8997FC89, (q31_t)0xCF8FADE8, (q31_t)0x8984EDCF,\n\t(q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xCFECCAC7,\n\t(q31_t)0x895F072D, (q31_t)0xD01B6459, (q31_t)0x894C2F4C,\n\t(q31_t)0xD04A054D, (q31_t)0x893969B9, (q31_t)0xD078AD9D,\n\t(q31_t)0x8926B677, (q31_t)0xD0A75D42, (q31_t)0x89141589,\n\t(q31_t)0xD0D61433, (q31_t)0x890186F1, (q31_t)0xD104D26B,\n\t(q31_t)0x88EF0AB4, (q31_t)0xD13397E1, (q31_t)0x88DCA0D3,\n\t(q31_t)0xD162648F, (q31_t)0x88CA4951, (q31_t)0xD191386D,\n\t(q31_t)0x88B80431, (q31_t)0xD1C01374, (q31_t)0x88A5D177,\n\t(q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD21DDEE1,\n\t(q31_t)0x8881A33C, (q31_t)0xD24CCF38, (q31_t)0x886FA7C2,\n\t(q31_t)0xD27BC69C, (q31_t)0x885DBEB7, (q31_t)0xD2AAC504,\n\t(q31_t)0x884BE820, (q31_t)0xD2D9CA6A, (q31_t)0x883A23FE,\n\t(q31_t)0xD308D6C6, (q31_t)0x88287255, (q31_t)0xD337EA12,\n\t(q31_t)0x8816D327, (q31_t)0xD3670445, (q31_t)0x88054677,\n\t(q31_t)0xD3962559, (q31_t)0x87F3CC47, (q31_t)0xD3C54D46,\n\t(q31_t)0x87E2649B, (q31_t)0xD3F47C06, (q31_t)0x87D10F75,\n\t(q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD452EDDE,\n\t(q31_t)0x87AE9CC5, (q31_t)0xD48230E8, (q31_t)0x879D7F40,\n\t(q31_t)0xD4B17AA7, (q31_t)0x878C744C, (q31_t)0xD4E0CB14,\n\t(q31_t)0x877B7BEC, (q31_t)0xD5102227, (q31_t)0x876A9621,\n\t(q31_t)0xD53F7FDA, (q31_t)0x8759C2EF, (q31_t)0xD56EE424,\n\t(q31_t)0x87490257, (q31_t)0xD59E4EFE, (q31_t)0x8738545E,\n\t(q31_t)0xD5CDC062, (q31_t)0x8727B904, (q31_t)0xD5FD3847,\n\t(q31_t)0x8717304E, (q31_t)0xD62CB6A7, (q31_t)0x8706BA3C,\n\t(q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD68BC6BA,\n\t(q31_t)0x86E60614, (q31_t)0xD6BB585D, (q31_t)0x86D5C802,\n\t(q31_t)0xD6EAF05E, (q31_t)0x86C59C9F, (q31_t)0xD71A8EB5,\n\t(q31_t)0x86B583EE, (q31_t)0xD74A335A, (q31_t)0x86A57DF1,\n\t(q31_t)0xD779DE46, (q31_t)0x86958AAB, (q31_t)0xD7A98F73,\n\t(q31_t)0x8685AA1F, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E,\n\t(q31_t)0xD809046D, (q31_t)0x8666213C, (q31_t)0xD838C82D,\n\t(q31_t)0x865678EA, (q31_t)0xD868920F, (q31_t)0x8646E35B,\n\t(q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD8C8381C,\n\t(q31_t)0x8627F090, (q31_t)0xD8F81439, (q31_t)0x86189359,\n\t(q31_t)0xD927F65B, (q31_t)0x860948EE, (q31_t)0xD957DE7A,\n\t(q31_t)0x85FA1152, (q31_t)0xD987CC8F, (q31_t)0x85EAEC88,\n\t(q31_t)0xD9B7C093, (q31_t)0x85DBDA91, (q31_t)0xD9E7BA7E,\n\t(q31_t)0x85CCDB70, (q31_t)0xDA17BA4A, (q31_t)0x85BDEF27,\n\t(q31_t)0xDA47BFED, (q31_t)0x85AF15B9, (q31_t)0xDA77CB62,\n\t(q31_t)0x85A04F28, (q31_t)0xDAA7DCA1, (q31_t)0x85919B75,\n\t(q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB08105E,\n\t(q31_t)0x85746CB7, (q31_t)0xDB3832CD, (q31_t)0x8565F1B0,\n\t(q31_t)0xDB685AE8, (q31_t)0x85578991, (q31_t)0xDB9888A8,\n\t(q31_t)0x8549345C, (q31_t)0xDBC8BC05, (q31_t)0x853AF214,\n\t(q31_t)0xDBF8F4F8, (q31_t)0x852CC2BA, (q31_t)0xDC293379,\n\t(q31_t)0x851EA652, (q31_t)0xDC597781, (q31_t)0x85109CDC,\n\t(q31_t)0xDC89C108, (q31_t)0x8502A65C, (q31_t)0xDCBA1008,\n\t(q31_t)0x84F4C2D3, (q31_t)0xDCEA6478, (q31_t)0x84E6F244,\n\t(q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDD4B1D8B,\n\t(q31_t)0x84CB8A1B, (q31_t)0xDD7B8220, (q31_t)0x84BDF285,\n\t(q31_t)0xDDABEC07, (q31_t)0x84B06DF1, (q31_t)0xDDDC5B3A,\n\t(q31_t)0x84A2FC62, (q31_t)0xDE0CCFB1, (q31_t)0x84959DD9,\n\t(q31_t)0xDE3D4963, (q31_t)0x84885257, (q31_t)0xDE6DC84B,\n\t(q31_t)0x847B19E1, (q31_t)0xDE9E4C60, (q31_t)0x846DF476,\n\t(q31_t)0xDECED59B, (q31_t)0x8460E21A, (q31_t)0xDEFF63F4,\n\t(q31_t)0x8453E2CE, (q31_t)0xDF2FF764, (q31_t)0x8446F695,\n\t(q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xDF912D6A,\n\t(q31_t)0x842D5761, (q31_t)0xDFC1CFF2, (q31_t)0x8420A46B,\n\t(q31_t)0xDFF27773, (q31_t)0x8414048F, (q31_t)0xE02323E5,\n\t(q31_t)0x840777CF, (q31_t)0xE053D541, (q31_t)0x83FAFE2E,\n\t(q31_t)0xE0848B7F, (q31_t)0x83EE97AC, (q31_t)0xE0B54698,\n\t(q31_t)0x83E2444D, (q31_t)0xE0E60684, (q31_t)0x83D60411,\n\t(q31_t)0xE116CB3D, (q31_t)0x83C9D6FB, (q31_t)0xE14794B9,\n\t(q31_t)0x83BDBD0D, (q31_t)0xE17862F3, (q31_t)0x83B1B649,\n\t(q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE1DA0D7E,\n\t(q31_t)0x8399E244, (q31_t)0xE20AE9C1, (q31_t)0x838E1507,\n\t(q31_t)0xE23BCAA2, (q31_t)0x83825AFB, (q31_t)0xE26CB01A,\n\t(q31_t)0x8376B422, (q31_t)0xE29D9A22, (q31_t)0x836B207D,\n\t(q31_t)0xE2CE88B2, (q31_t)0x835FA00E, (q31_t)0xE2FF7BC3,\n\t(q31_t)0x835432D8, (q31_t)0xE330734C, (q31_t)0x8348D8DB,\n\t(q31_t)0xE3616F47, (q31_t)0x833D921A, (q31_t)0xE3926FAC,\n\t(q31_t)0x83325E97, (q31_t)0xE3C37473, (q31_t)0x83273E52,\n\t(q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4258B0A,\n\t(q31_t)0x8311378C, (q31_t)0xE4569CCB, (q31_t)0x8306510F,\n\t(q31_t)0xE487B2CF, (q31_t)0x82FB7DD8, (q31_t)0xE4B8CD10,\n\t(q31_t)0x82F0BDE8, (q31_t)0xE4E9EB86, (q31_t)0x82E61141,\n\t(q31_t)0xE51B0E2A, (q31_t)0x82DB77E5, (q31_t)0xE54C34F3,\n\t(q31_t)0x82D0F1D5, (q31_t)0xE57D5FDA, (q31_t)0x82C67F13,\n\t(q31_t)0xE5AE8ED8, (q31_t)0x82BC1FA1, (q31_t)0xE5DFC1E4,\n\t(q31_t)0x82B1D381, (q31_t)0xE610F8F9, (q31_t)0x82A79AB3,\n\t(q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE6737319,\n\t(q31_t)0x82936316, (q31_t)0xE6A4B616, (q31_t)0x8289644A,\n\t(q31_t)0xE6D5FCFC, (q31_t)0x827F78D8, (q31_t)0xE70747C3,\n\t(q31_t)0x8275A0C0, (q31_t)0xE7389664, (q31_t)0x826BDC04,\n\t(q31_t)0xE769E8D8, (q31_t)0x82622AA5, (q31_t)0xE79B3F16,\n\t(q31_t)0x82588CA6, (q31_t)0xE7CC9917, (q31_t)0x824F0208,\n\t(q31_t)0xE7FDF6D3, (q31_t)0x82458ACB, (q31_t)0xE82F5844,\n\t(q31_t)0x823C26F2, (q31_t)0xE860BD60, (q31_t)0x8232D67E,\n\t(q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE8C3927F,\n\t(q31_t)0x82206FCB, (q31_t)0xE8F50273, (q31_t)0x8217598F,\n\t(q31_t)0xE92675F4, (q31_t)0x820E56BE, (q31_t)0xE957ECFB,\n\t(q31_t)0x82056758, (q31_t)0xE9896780, (q31_t)0x81FC8B60,\n\t(q31_t)0xE9BAE57C, (q31_t)0x81F3C2D7, (q31_t)0xE9EC66E8,\n\t(q31_t)0x81EB0DBD, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16,\n\t(q31_t)0xEA4F73EE, (q31_t)0x81D9DDE1, (q31_t)0xEA80FF79,\n\t(q31_t)0x81D16320, (q31_t)0xEAB28E55, (q31_t)0x81C8FBD5,\n\t(q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEB15B5E0,\n\t(q31_t)0x81B867A4, (q31_t)0xEB474E80, (q31_t)0x81B03AC1,\n\t(q31_t)0xEB78EA52, (q31_t)0x81A82159, (q31_t)0xEBAA894E,\n\t(q31_t)0x81A01B6C, (q31_t)0xEBDC2B6D, (q31_t)0x819828FD,\n\t(q31_t)0xEC0DD0A8, (q31_t)0x81904A0C, (q31_t)0xEC3F78F5,\n\t(q31_t)0x81887E9A, (q31_t)0xEC71244F, (q31_t)0x8180C6A9,\n\t(q31_t)0xECA2D2AC, (q31_t)0x8179223A, (q31_t)0xECD48406,\n\t(q31_t)0x8171914E, (q31_t)0xED063855, (q31_t)0x816A13E6,\n\t(q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xED69A9B2,\n\t(q31_t)0x815B53A8, (q31_t)0xED9B66B2, (q31_t)0x815410D3,\n\t(q31_t)0xEDCD2687, (q31_t)0x814CE188, (q31_t)0xEDFEE92B,\n\t(q31_t)0x8145C5C6, (q31_t)0xEE30AE95, (q31_t)0x813EBD90,\n\t(q31_t)0xEE6276BF, (q31_t)0x8137C8E6, (q31_t)0xEE9441A0,\n\t(q31_t)0x8130E7C8, (q31_t)0xEEC60F31, (q31_t)0x812A1A39,\n\t(q31_t)0xEEF7DF6A, (q31_t)0x81236039, (q31_t)0xEF29B243,\n\t(q31_t)0x811CB9CA, (q31_t)0xEF5B87B5, (q31_t)0x811626EC,\n\t(q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xEFBF3A44,\n\t(q31_t)0x81093BE8, (q31_t)0xEFF11752, (q31_t)0x8102E3C3,\n\t(q31_t)0xF022F6DA, (q31_t)0x80FC9F35, (q31_t)0xF054D8D4,\n\t(q31_t)0x80F66E3C, (q31_t)0xF086BD39, (q31_t)0x80F050DB,\n\t(q31_t)0xF0B8A401, (q31_t)0x80EA4712, (q31_t)0xF0EA8D23,\n\t(q31_t)0x80E450E2, (q31_t)0xF11C789A, (q31_t)0x80DE6E4C,\n\t(q31_t)0xF14E665C, (q31_t)0x80D89F51, (q31_t)0xF1805662,\n\t(q31_t)0x80D2E3F1, (q31_t)0xF1B248A5, (q31_t)0x80CD3C2F,\n\t(q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF21633C0,\n\t(q31_t)0x80C22783, (q31_t)0xF2482C89, (q31_t)0x80BCBA9C,\n\t(q31_t)0xF27A2770, (q31_t)0x80B76155, (q31_t)0xF2AC246D,\n\t(q31_t)0x80B21BAF, (q31_t)0xF2DE2378, (q31_t)0x80ACE9AB,\n\t(q31_t)0xF310248A, (q31_t)0x80A7CB49, (q31_t)0xF342279A,\n\t(q31_t)0x80A2C08B, (q31_t)0xF3742CA1, (q31_t)0x809DC970,\n\t(q31_t)0xF3A63398, (q31_t)0x8098E5FB, (q31_t)0xF3D83C76,\n\t(q31_t)0x8094162B, (q31_t)0xF40A4734, (q31_t)0x808F5A02,\n\t(q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF46E6231,\n\t(q31_t)0x80861CA5, (q31_t)0xF4A07260, (q31_t)0x80819B74,\n\t(q31_t)0xF4D28451, (q31_t)0x807D2DEB, (q31_t)0xF50497FA,\n\t(q31_t)0x8078D40D, (q31_t)0xF536AD55, (q31_t)0x80748DD9,\n\t(q31_t)0xF568C45A, (q31_t)0x80705B50, (q31_t)0xF59ADD01,\n\t(q31_t)0x806C3C73, (q31_t)0xF5CCF743, (q31_t)0x80683143,\n\t(q31_t)0xF5FF1317, (q31_t)0x806439C0, (q31_t)0xF6313076,\n\t(q31_t)0x806055EA, (q31_t)0xF6634F58, (q31_t)0x805C85C3,\n\t(q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF6C79188,\n\t(q31_t)0x80552083, (q31_t)0xF6F9B4C5, (q31_t)0x80518B6B,\n\t(q31_t)0xF72BD967, (q31_t)0x804E0A03, (q31_t)0xF75DFF65,\n\t(q31_t)0x804A9C4D, (q31_t)0xF79026B8, (q31_t)0x80474248,\n\t(q31_t)0xF7C24F58, (q31_t)0x8043FBF6, (q31_t)0xF7F4793E,\n\t(q31_t)0x8040C956, (q31_t)0xF826A461, (q31_t)0x803DAA69,\n\t(q31_t)0xF858D0BA, (q31_t)0x803A9F31, (q31_t)0xF88AFE41,\n\t(q31_t)0x8037A7AC, (q31_t)0xF8BD2CEF, (q31_t)0x8034C3DC,\n\t(q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF9218D9E,\n\t(q31_t)0x802F375C, (q31_t)0xF953BF90, (q31_t)0x802C8EAD,\n\t(q31_t)0xF985F28A, (q31_t)0x8029F9B4, (q31_t)0xF9B82683,\n\t(q31_t)0x80277872, (q31_t)0xF9EA5B75, (q31_t)0x80250AE7,\n\t(q31_t)0xFA1C9156, (q31_t)0x8022B113, (q31_t)0xFA4EC820,\n\t(q31_t)0x80206AF8, (q31_t)0xFA80FFCB, (q31_t)0x801E3894,\n\t(q31_t)0xFAB3384F, (q31_t)0x801C19E9, (q31_t)0xFAE571A4,\n\t(q31_t)0x801A0EF7, (q31_t)0xFB17ABC2, (q31_t)0x801817BF,\n\t(q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFB7C223C,\n\t(q31_t)0x8014647A, (q31_t)0xFBAE5E89, (q31_t)0x8012A86F,\n\t(q31_t)0xFBE09B80, (q31_t)0x8011001E, (q31_t)0xFC12D919,\n\t(q31_t)0x800F6B88, (q31_t)0xFC45174E, (q31_t)0x800DEAAC,\n\t(q31_t)0xFC775616, (q31_t)0x800C7D8C, (q31_t)0xFCA99569,\n\t(q31_t)0x800B2427, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D,\n\t(q31_t)0xFD0E1594, (q31_t)0x8008AC90, (q31_t)0xFD40565B,\n\t(q31_t)0x80078E5E, (q31_t)0xFD72978F, (q31_t)0x800683E8,\n\t(q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFDD71B1E,\n\t(q31_t)0x8004AA31, (q31_t)0xFE095D69, (q31_t)0x8003DAF0,\n\t(q31_t)0xFE3BA001, (q31_t)0x80031F6C, (q31_t)0xFE6DE2E0,\n\t(q31_t)0x800277A5, (q31_t)0xFEA025FC, (q31_t)0x8001E39B,\n\t(q31_t)0xFED2694F, (q31_t)0x8001634D, (q31_t)0xFF04ACD0,\n\t(q31_t)0x8000F6BD, (q31_t)0xFF36F078, (q31_t)0x80009DE9,\n\t(q31_t)0xFF69343E, (q31_t)0x800058D3, (q31_t)0xFF9B781D,\n\t(q31_t)0x8000277A, (q31_t)0xFFCDBC0A, (q31_t)0x800009DE\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n/**\n  @brief  q15 Twiddle factors Table\n*/\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_16)\n\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>fori = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 16, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_16_q15[24] = {\n    (q15_t)0x7FFF, (q15_t)0x0000,\n    (q15_t)0x7641, (q15_t)0x30FB,\n    (q15_t)0x5A82, (q15_t)0x5A82,\n    (q15_t)0x30FB, (q15_t)0x7641,\n    (q15_t)0x0000, (q15_t)0x7FFF,\n    (q15_t)0xCF04, (q15_t)0x7641,\n    (q15_t)0xA57D, (q15_t)0x5A82,\n    (q15_t)0x89BE, (q15_t)0x30FB,\n    (q15_t)0x8000, (q15_t)0x0000,\n    (q15_t)0x89BE, (q15_t)0xCF04,\n    (q15_t)0xA57D, (q15_t)0xA57D,\n    (q15_t)0xCF04, (q15_t)0x89BE\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_32)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 32, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_32_q15[48] = {\n    (q15_t)0x7FFF, (q15_t)0x0000,\n    (q15_t)0x7D8A, (q15_t)0x18F8,\n    (q15_t)0x7641, (q15_t)0x30FB,\n    (q15_t)0x6A6D, (q15_t)0x471C,\n    (q15_t)0x5A82, (q15_t)0x5A82,\n    (q15_t)0x471C, (q15_t)0x6A6D,\n    (q15_t)0x30FB, (q15_t)0x7641,\n    (q15_t)0x18F8, (q15_t)0x7D8A,\n    (q15_t)0x0000, (q15_t)0x7FFF,\n    (q15_t)0xE707, (q15_t)0x7D8A,\n    (q15_t)0xCF04, (q15_t)0x7641,\n    (q15_t)0xB8E3, (q15_t)0x6A6D,\n    (q15_t)0xA57D, (q15_t)0x5A82,\n    (q15_t)0x9592, (q15_t)0x471C,\n    (q15_t)0x89BE, (q15_t)0x30FB,\n    (q15_t)0x8275, (q15_t)0x18F8,\n    (q15_t)0x8000, (q15_t)0x0000,\n    (q15_t)0x8275, (q15_t)0xE707,\n    (q15_t)0x89BE, (q15_t)0xCF04,\n    (q15_t)0x9592, (q15_t)0xB8E3,\n    (q15_t)0xA57D, (q15_t)0xA57D,\n    (q15_t)0xB8E3, (q15_t)0x9592,\n    (q15_t)0xCF04, (q15_t)0x89BE,\n    (q15_t)0xE707, (q15_t)0x8275\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_64)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 64, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_64_q15[96] = {\n\t(q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7F62, (q15_t)0x0C8B,\n\t(q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7A7D, (q15_t)0x2528,\n\t(q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x70E2, (q15_t)0x3C56,\n\t(q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x62F2, (q15_t)0x5133,\n\t(q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5133, (q15_t)0x62F2,\n\t(q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x3C56, (q15_t)0x70E2,\n\t(q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2528, (q15_t)0x7A7D,\n\t(q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x0C8B, (q15_t)0x7F62,\n\t(q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xF374, (q15_t)0x7F62,\n\t(q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xDAD7, (q15_t)0x7A7D,\n\t(q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xC3A9, (q15_t)0x70E2,\n\t(q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xAECC, (q15_t)0x62F2,\n\t(q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0x9D0D, (q15_t)0x5133,\n\t(q15_t)0x9592, (q15_t)0x471C, (q15_t)0x8F1D, (q15_t)0x3C56,\n\t(q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8582, (q15_t)0x2528,\n\t(q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x809D, (q15_t)0x0C8B,\n\t(q15_t)0x8000, (q15_t)0x0000, (q15_t)0x809D, (q15_t)0xF374,\n\t(q15_t)0x8275, (q15_t)0xE707, (q15_t)0x8582, (q15_t)0xDAD7,\n\t(q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8F1D, (q15_t)0xC3A9,\n\t(q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9D0D, (q15_t)0xAECC,\n\t(q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xAECC, (q15_t)0x9D0D,\n\t(q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xC3A9, (q15_t)0x8F1D,\n\t(q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xDAD7, (q15_t)0x8582,\n\t(q15_t)0xE707, (q15_t)0x8275, (q15_t)0xF374, (q15_t)0x809D\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_128)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 128, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_128_q15[192] = {\n\t(q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FD8, (q15_t)0x0647,\n\t(q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7E9D, (q15_t)0x12C8,\n\t(q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7C29, (q15_t)0x1F19,\n\t(q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7884, (q15_t)0x2B1F,\n\t(q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x73B5, (q15_t)0x36BA,\n\t(q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x6DCA, (q15_t)0x41CE,\n\t(q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x66CF, (q15_t)0x4C3F,\n\t(q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x5ED7, (q15_t)0x55F5,\n\t(q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x55F5, (q15_t)0x5ED7,\n\t(q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4C3F, (q15_t)0x66CF,\n\t(q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x41CE, (q15_t)0x6DCA,\n\t(q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x36BA, (q15_t)0x73B5,\n\t(q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2B1F, (q15_t)0x7884,\n\t(q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x1F19, (q15_t)0x7C29,\n\t(q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x12C8, (q15_t)0x7E9D,\n\t(q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0647, (q15_t)0x7FD8,\n\t(q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xF9B8, (q15_t)0x7FD8,\n\t(q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xED37, (q15_t)0x7E9D,\n\t(q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE0E6, (q15_t)0x7C29,\n\t(q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD4E0, (q15_t)0x7884,\n\t(q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xC945, (q15_t)0x73B5,\n\t(q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xBE31, (q15_t)0x6DCA,\n\t(q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB3C0, (q15_t)0x66CF,\n\t(q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAA0A, (q15_t)0x5ED7,\n\t(q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA128, (q15_t)0x55F5,\n\t(q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9930, (q15_t)0x4C3F,\n\t(q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9235, (q15_t)0x41CE,\n\t(q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8C4A, (q15_t)0x36BA,\n\t(q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x877B, (q15_t)0x2B1F,\n\t(q15_t)0x8582, (q15_t)0x2528, (q15_t)0x83D6, (q15_t)0x1F19,\n\t(q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8162, (q15_t)0x12C8,\n\t(q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8027, (q15_t)0x0647,\n\t(q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8027, (q15_t)0xF9B8,\n\t(q15_t)0x809D, (q15_t)0xF374, (q15_t)0x8162, (q15_t)0xED37,\n\t(q15_t)0x8275, (q15_t)0xE707, (q15_t)0x83D6, (q15_t)0xE0E6,\n\t(q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x877B, (q15_t)0xD4E0,\n\t(q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8C4A, (q15_t)0xC945,\n\t(q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x9235, (q15_t)0xBE31,\n\t(q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9930, (q15_t)0xB3C0,\n\t(q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0xA128, (q15_t)0xAA0A,\n\t(q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xAA0A, (q15_t)0xA128,\n\t(q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB3C0, (q15_t)0x9930,\n\t(q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBE31, (q15_t)0x9235,\n\t(q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC945, (q15_t)0x8C4A,\n\t(q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD4E0, (q15_t)0x877B,\n\t(q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xE0E6, (q15_t)0x83D6,\n\t(q15_t)0xE707, (q15_t)0x8275, (q15_t)0xED37, (q15_t)0x8162,\n\t(q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF9B8, (q15_t)0x8027\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_256)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 256, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_256_q15[384] = {\n\t(q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FF6, (q15_t)0x0324,\n\t(q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FA7, (q15_t)0x096A,\n\t(q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F09, (q15_t)0x0FAB,\n\t(q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E1D, (q15_t)0x15E2,\n\t(q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7CE3, (q15_t)0x1C0B,\n\t(q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7B5D, (q15_t)0x2223,\n\t(q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x798A, (q15_t)0x2826,\n\t(q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x776C, (q15_t)0x2E11,\n\t(q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x7504, (q15_t)0x33DE,\n\t(q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x7255, (q15_t)0x398C,\n\t(q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x6F5F, (q15_t)0x3F17,\n\t(q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6C24, (q15_t)0x447A,\n\t(q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x68A6, (q15_t)0x49B4,\n\t(q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x64E8, (q15_t)0x4EBF,\n\t(q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x60EC, (q15_t)0x539B,\n\t(q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5CB4, (q15_t)0x5842,\n\t(q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5842, (q15_t)0x5CB4,\n\t(q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x539B, (q15_t)0x60EC,\n\t(q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4EBF, (q15_t)0x64E8,\n\t(q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x49B4, (q15_t)0x68A6,\n\t(q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x447A, (q15_t)0x6C24,\n\t(q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x3F17, (q15_t)0x6F5F,\n\t(q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x398C, (q15_t)0x7255,\n\t(q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x33DE, (q15_t)0x7504,\n\t(q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2E11, (q15_t)0x776C,\n\t(q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2826, (q15_t)0x798A,\n\t(q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x2223, (q15_t)0x7B5D,\n\t(q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1C0B, (q15_t)0x7CE3,\n\t(q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x15E2, (q15_t)0x7E1D,\n\t(q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x0FAB, (q15_t)0x7F09,\n\t(q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x096A, (q15_t)0x7FA7,\n\t(q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x0324, (q15_t)0x7FF6,\n\t(q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFCDB, (q15_t)0x7FF6,\n\t(q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF695, (q15_t)0x7FA7,\n\t(q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF054, (q15_t)0x7F09,\n\t(q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEA1D, (q15_t)0x7E1D,\n\t(q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE3F4, (q15_t)0x7CE3,\n\t(q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xDDDC, (q15_t)0x7B5D,\n\t(q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD7D9, (q15_t)0x798A,\n\t(q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD1EE, (q15_t)0x776C,\n\t(q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCC21, (q15_t)0x7504,\n\t(q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC673, (q15_t)0x7255,\n\t(q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC0E8, (q15_t)0x6F5F,\n\t(q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBB85, (q15_t)0x6C24,\n\t(q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB64B, (q15_t)0x68A6,\n\t(q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB140, (q15_t)0x64E8,\n\t(q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAC64, (q15_t)0x60EC,\n\t(q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA7BD, (q15_t)0x5CB4,\n\t(q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA34B, (q15_t)0x5842,\n\t(q15_t)0xA128, (q15_t)0x55F5, (q15_t)0x9F13, (q15_t)0x539B,\n\t(q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9B17, (q15_t)0x4EBF,\n\t(q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9759, (q15_t)0x49B4,\n\t(q15_t)0x9592, (q15_t)0x471C, (q15_t)0x93DB, (q15_t)0x447A,\n\t(q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x90A0, (q15_t)0x3F17,\n\t(q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8DAA, (q15_t)0x398C,\n\t(q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8AFB, (q15_t)0x33DE,\n\t(q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8893, (q15_t)0x2E11,\n\t(q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8675, (q15_t)0x2826,\n\t(q15_t)0x8582, (q15_t)0x2528, (q15_t)0x84A2, (q15_t)0x2223,\n\t(q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x831C, (q15_t)0x1C0B,\n\t(q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x81E2, (q15_t)0x15E2,\n\t(q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x80F6, (q15_t)0x0FAB,\n\t(q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8058, (q15_t)0x096A,\n\t(q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8009, (q15_t)0x0324,\n\t(q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8009, (q15_t)0xFCDB,\n\t(q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8058, (q15_t)0xF695,\n\t(q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80F6, (q15_t)0xF054,\n\t(q15_t)0x8162, (q15_t)0xED37, (q15_t)0x81E2, (q15_t)0xEA1D,\n\t(q15_t)0x8275, (q15_t)0xE707, (q15_t)0x831C, (q15_t)0xE3F4,\n\t(q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x84A2, (q15_t)0xDDDC,\n\t(q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x8675, (q15_t)0xD7D9,\n\t(q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x8893, (q15_t)0xD1EE,\n\t(q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8AFB, (q15_t)0xCC21,\n\t(q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8DAA, (q15_t)0xC673,\n\t(q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x90A0, (q15_t)0xC0E8,\n\t(q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x93DB, (q15_t)0xBB85,\n\t(q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9759, (q15_t)0xB64B,\n\t(q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x9B17, (q15_t)0xB140,\n\t(q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9F13, (q15_t)0xAC64,\n\t(q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA34B, (q15_t)0xA7BD,\n\t(q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA7BD, (q15_t)0xA34B,\n\t(q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAC64, (q15_t)0x9F13,\n\t(q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB140, (q15_t)0x9B17,\n\t(q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB64B, (q15_t)0x9759,\n\t(q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBB85, (q15_t)0x93DB,\n\t(q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xC0E8, (q15_t)0x90A0,\n\t(q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC673, (q15_t)0x8DAA,\n\t(q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xCC21, (q15_t)0x8AFB,\n\t(q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD1EE, (q15_t)0x8893,\n\t(q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD7D9, (q15_t)0x8675,\n\t(q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDDDC, (q15_t)0x84A2,\n\t(q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE3F4, (q15_t)0x831C,\n\t(q15_t)0xE707, (q15_t)0x8275, (q15_t)0xEA1D, (q15_t)0x81E2,\n\t(q15_t)0xED37, (q15_t)0x8162, (q15_t)0xF054, (q15_t)0x80F6,\n\t(q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF695, (q15_t)0x8058,\n\t(q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFCDB, (q15_t)0x8009\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_512)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 512, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_512_q15[768] = {\n\t(q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFD, (q15_t)0x0192,\n\t(q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FE9, (q15_t)0x04B6,\n\t(q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FC2, (q15_t)0x07D9,\n\t(q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F87, (q15_t)0x0AFB,\n\t(q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F38, (q15_t)0x0E1B,\n\t(q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7ED5, (q15_t)0x1139,\n\t(q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E5F, (q15_t)0x1455,\n\t(q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7DD6, (q15_t)0x176D,\n\t(q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D39, (q15_t)0x1A82,\n\t(q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7C89, (q15_t)0x1D93,\n\t(q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7BC5, (q15_t)0x209F,\n\t(q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7AEF, (q15_t)0x23A6,\n\t(q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A05, (q15_t)0x26A8,\n\t(q15_t)0x798A, (q15_t)0x2826, (q15_t)0x7909, (q15_t)0x29A3,\n\t(q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x77FA, (q15_t)0x2C98,\n\t(q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x76D9, (q15_t)0x2F87,\n\t(q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x75A5, (q15_t)0x326E,\n\t(q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x745F, (q15_t)0x354D,\n\t(q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x7307, (q15_t)0x3824,\n\t(q15_t)0x7255, (q15_t)0x398C, (q15_t)0x719E, (q15_t)0x3AF2,\n\t(q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x7023, (q15_t)0x3DB8,\n\t(q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6E96, (q15_t)0x4073,\n\t(q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6CF9, (q15_t)0x4325,\n\t(q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6B4A, (q15_t)0x45CD,\n\t(q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x698C, (q15_t)0x4869,\n\t(q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x67BD, (q15_t)0x4AFB,\n\t(q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x65DD, (q15_t)0x4D81,\n\t(q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x63EF, (q15_t)0x4FFB,\n\t(q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x61F1, (q15_t)0x5269,\n\t(q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x5FE3, (q15_t)0x54CA,\n\t(q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5DC7, (q15_t)0x571D,\n\t(q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5B9D, (q15_t)0x5964,\n\t(q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5964, (q15_t)0x5B9D,\n\t(q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x571D, (q15_t)0x5DC7,\n\t(q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x54CA, (q15_t)0x5FE3,\n\t(q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5269, (q15_t)0x61F1,\n\t(q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4FFB, (q15_t)0x63EF,\n\t(q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4D81, (q15_t)0x65DD,\n\t(q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4AFB, (q15_t)0x67BD,\n\t(q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x4869, (q15_t)0x698C,\n\t(q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x45CD, (q15_t)0x6B4A,\n\t(q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4325, (q15_t)0x6CF9,\n\t(q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4073, (q15_t)0x6E96,\n\t(q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3DB8, (q15_t)0x7023,\n\t(q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3AF2, (q15_t)0x719E,\n\t(q15_t)0x398C, (q15_t)0x7255, (q15_t)0x3824, (q15_t)0x7307,\n\t(q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x354D, (q15_t)0x745F,\n\t(q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x326E, (q15_t)0x75A5,\n\t(q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2F87, (q15_t)0x76D9,\n\t(q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2C98, (q15_t)0x77FA,\n\t(q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x29A3, (q15_t)0x7909,\n\t(q15_t)0x2826, (q15_t)0x798A, (q15_t)0x26A8, (q15_t)0x7A05,\n\t(q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x23A6, (q15_t)0x7AEF,\n\t(q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x209F, (q15_t)0x7BC5,\n\t(q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1D93, (q15_t)0x7C89,\n\t(q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1A82, (q15_t)0x7D39,\n\t(q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x176D, (q15_t)0x7DD6,\n\t(q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x1455, (q15_t)0x7E5F,\n\t(q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1139, (q15_t)0x7ED5,\n\t(q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0E1B, (q15_t)0x7F38,\n\t(q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0AFB, (q15_t)0x7F87,\n\t(q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x07D9, (q15_t)0x7FC2,\n\t(q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x04B6, (q15_t)0x7FE9,\n\t(q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x0192, (q15_t)0x7FFD,\n\t(q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFE6D, (q15_t)0x7FFD,\n\t(q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFB49, (q15_t)0x7FE9,\n\t(q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF826, (q15_t)0x7FC2,\n\t(q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF504, (q15_t)0x7F87,\n\t(q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF1E4, (q15_t)0x7F38,\n\t(q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEEC6, (q15_t)0x7ED5,\n\t(q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEBAA, (q15_t)0x7E5F,\n\t(q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE892, (q15_t)0x7DD6,\n\t(q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE57D, (q15_t)0x7D39,\n\t(q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE26C, (q15_t)0x7C89,\n\t(q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xDF60, (q15_t)0x7BC5,\n\t(q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDC59, (q15_t)0x7AEF,\n\t(q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD957, (q15_t)0x7A05,\n\t(q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD65C, (q15_t)0x7909,\n\t(q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD367, (q15_t)0x77FA,\n\t(q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD078, (q15_t)0x76D9,\n\t(q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCD91, (q15_t)0x75A5,\n\t(q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCAB2, (q15_t)0x745F,\n\t(q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC7DB, (q15_t)0x7307,\n\t(q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC50D, (q15_t)0x719E,\n\t(q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC247, (q15_t)0x7023,\n\t(q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xBF8C, (q15_t)0x6E96,\n\t(q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBCDA, (q15_t)0x6CF9,\n\t(q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBA32, (q15_t)0x6B4A,\n\t(q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB796, (q15_t)0x698C,\n\t(q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB504, (q15_t)0x67BD,\n\t(q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB27E, (q15_t)0x65DD,\n\t(q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB004, (q15_t)0x63EF,\n\t(q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAD96, (q15_t)0x61F1,\n\t(q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAB35, (q15_t)0x5FE3,\n\t(q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA8E2, (q15_t)0x5DC7,\n\t(q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA69B, (q15_t)0x5B9D,\n\t(q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA462, (q15_t)0x5964,\n\t(q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA238, (q15_t)0x571D,\n\t(q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA01C, (q15_t)0x54CA,\n\t(q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9E0E, (q15_t)0x5269,\n\t(q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9C10, (q15_t)0x4FFB,\n\t(q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9A22, (q15_t)0x4D81,\n\t(q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9842, (q15_t)0x4AFB,\n\t(q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x9673, (q15_t)0x4869,\n\t(q15_t)0x9592, (q15_t)0x471C, (q15_t)0x94B5, (q15_t)0x45CD,\n\t(q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x9306, (q15_t)0x4325,\n\t(q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x9169, (q15_t)0x4073,\n\t(q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x8FDC, (q15_t)0x3DB8,\n\t(q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8E61, (q15_t)0x3AF2,\n\t(q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8CF8, (q15_t)0x3824,\n\t(q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8BA0, (q15_t)0x354D,\n\t(q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8A5A, (q15_t)0x326E,\n\t(q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8926, (q15_t)0x2F87,\n\t(q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x8805, (q15_t)0x2C98,\n\t(q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x86F6, (q15_t)0x29A3,\n\t(q15_t)0x8675, (q15_t)0x2826, (q15_t)0x85FA, (q15_t)0x26A8,\n\t(q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8510, (q15_t)0x23A6,\n\t(q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x843A, (q15_t)0x209F,\n\t(q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x8376, (q15_t)0x1D93,\n\t(q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x82C6, (q15_t)0x1A82,\n\t(q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8229, (q15_t)0x176D,\n\t(q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81A0, (q15_t)0x1455,\n\t(q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x812A, (q15_t)0x1139,\n\t(q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80C7, (q15_t)0x0E1B,\n\t(q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8078, (q15_t)0x0AFB,\n\t(q15_t)0x8058, (q15_t)0x096A, (q15_t)0x803D, (q15_t)0x07D9,\n\t(q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8016, (q15_t)0x04B6,\n\t(q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8002, (q15_t)0x0192,\n\t(q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8002, (q15_t)0xFE6D,\n\t(q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x8016, (q15_t)0xFB49,\n\t(q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x803D, (q15_t)0xF826,\n\t(q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8078, (q15_t)0xF504,\n\t(q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80C7, (q15_t)0xF1E4,\n\t(q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x812A, (q15_t)0xEEC6,\n\t(q15_t)0x8162, (q15_t)0xED37, (q15_t)0x81A0, (q15_t)0xEBAA,\n\t(q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x8229, (q15_t)0xE892,\n\t(q15_t)0x8275, (q15_t)0xE707, (q15_t)0x82C6, (q15_t)0xE57D,\n\t(q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8376, (q15_t)0xE26C,\n\t(q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x843A, (q15_t)0xDF60,\n\t(q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x8510, (q15_t)0xDC59,\n\t(q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85FA, (q15_t)0xD957,\n\t(q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x86F6, (q15_t)0xD65C,\n\t(q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x8805, (q15_t)0xD367,\n\t(q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x8926, (q15_t)0xD078,\n\t(q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8A5A, (q15_t)0xCD91,\n\t(q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8BA0, (q15_t)0xCAB2,\n\t(q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8CF8, (q15_t)0xC7DB,\n\t(q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8E61, (q15_t)0xC50D,\n\t(q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8FDC, (q15_t)0xC247,\n\t(q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x9169, (q15_t)0xBF8C,\n\t(q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x9306, (q15_t)0xBCDA,\n\t(q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x94B5, (q15_t)0xBA32,\n\t(q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9673, (q15_t)0xB796,\n\t(q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9842, (q15_t)0xB504,\n\t(q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x9A22, (q15_t)0xB27E,\n\t(q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9C10, (q15_t)0xB004,\n\t(q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9E0E, (q15_t)0xAD96,\n\t(q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0xA01C, (q15_t)0xAB35,\n\t(q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA238, (q15_t)0xA8E2,\n\t(q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA462, (q15_t)0xA69B,\n\t(q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA69B, (q15_t)0xA462,\n\t(q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA8E2, (q15_t)0xA238,\n\t(q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAB35, (q15_t)0xA01C,\n\t(q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xAD96, (q15_t)0x9E0E,\n\t(q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB004, (q15_t)0x9C10,\n\t(q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB27E, (q15_t)0x9A22,\n\t(q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB504, (q15_t)0x9842,\n\t(q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB796, (q15_t)0x9673,\n\t(q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBA32, (q15_t)0x94B5,\n\t(q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBCDA, (q15_t)0x9306,\n\t(q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBF8C, (q15_t)0x9169,\n\t(q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC247, (q15_t)0x8FDC,\n\t(q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC50D, (q15_t)0x8E61,\n\t(q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC7DB, (q15_t)0x8CF8,\n\t(q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xCAB2, (q15_t)0x8BA0,\n\t(q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCD91, (q15_t)0x8A5A,\n\t(q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD078, (q15_t)0x8926,\n\t(q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD367, (q15_t)0x8805,\n\t(q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD65C, (q15_t)0x86F6,\n\t(q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD957, (q15_t)0x85FA,\n\t(q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDC59, (q15_t)0x8510,\n\t(q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDF60, (q15_t)0x843A,\n\t(q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE26C, (q15_t)0x8376,\n\t(q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE57D, (q15_t)0x82C6,\n\t(q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE892, (q15_t)0x8229,\n\t(q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEBAA, (q15_t)0x81A0,\n\t(q15_t)0xED37, (q15_t)0x8162, (q15_t)0xEEC6, (q15_t)0x812A,\n\t(q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF1E4, (q15_t)0x80C7,\n\t(q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF504, (q15_t)0x8078,\n\t(q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF826, (q15_t)0x803D,\n\t(q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFB49, (q15_t)0x8016,\n\t(q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFE6D, (q15_t)0x8002\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_1024)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 1024, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n \n */\nconst q15_t twiddleCoef_1024_q15[1536] = {\n\t(q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x00C9,\n\t(q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFA, (q15_t)0x025B,\n\t(q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF0, (q15_t)0x03ED,\n\t(q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE1, (q15_t)0x057F,\n\t(q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FCE, (q15_t)0x0710,\n\t(q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FB5, (q15_t)0x08A2,\n\t(q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F97, (q15_t)0x0A33,\n\t(q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F75, (q15_t)0x0BC3,\n\t(q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F4D, (q15_t)0x0D53,\n\t(q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F21, (q15_t)0x0EE3,\n\t(q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7EF0, (q15_t)0x1072,\n\t(q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7EBA, (q15_t)0x1201,\n\t(q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E7F, (q15_t)0x138E,\n\t(q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E3F, (q15_t)0x151B,\n\t(q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7DFA, (q15_t)0x16A8,\n\t(q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DB0, (q15_t)0x1833,\n\t(q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D62, (q15_t)0x19BD,\n\t(q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D0F, (q15_t)0x1B47,\n\t(q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CB7, (q15_t)0x1CCF,\n\t(q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C5A, (q15_t)0x1E56,\n\t(q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7BF8, (q15_t)0x1FDC,\n\t(q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7B92, (q15_t)0x2161,\n\t(q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B26, (q15_t)0x22E5,\n\t(q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AB6, (q15_t)0x2467,\n\t(q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A42, (q15_t)0x25E8,\n\t(q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79C8, (q15_t)0x2767,\n\t(q15_t)0x798A, (q15_t)0x2826, (q15_t)0x794A, (q15_t)0x28E5,\n\t(q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78C7, (q15_t)0x2A61,\n\t(q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7840, (q15_t)0x2BDC,\n\t(q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77B4, (q15_t)0x2D55,\n\t(q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x7723, (q15_t)0x2ECC,\n\t(q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x768E, (q15_t)0x3041,\n\t(q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x75F4, (q15_t)0x31B5,\n\t(q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x7555, (q15_t)0x3326,\n\t(q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74B2, (q15_t)0x3496,\n\t(q15_t)0x745F, (q15_t)0x354D, (q15_t)0x740B, (q15_t)0x3604,\n\t(q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x735F, (q15_t)0x376F,\n\t(q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72AF, (q15_t)0x38D8,\n\t(q15_t)0x7255, (q15_t)0x398C, (q15_t)0x71FA, (q15_t)0x3A40,\n\t(q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x7141, (q15_t)0x3BA5,\n\t(q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x7083, (q15_t)0x3D07,\n\t(q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x6FC1, (q15_t)0x3E68,\n\t(q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6EFB, (q15_t)0x3FC5,\n\t(q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E30, (q15_t)0x4121,\n\t(q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6D62, (q15_t)0x427A,\n\t(q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6C8F, (q15_t)0x43D0,\n\t(q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6BB8, (q15_t)0x4524,\n\t(q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6ADC, (q15_t)0x4675,\n\t(q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x69FD, (q15_t)0x47C3,\n\t(q15_t)0x698C, (q15_t)0x4869, (q15_t)0x6919, (q15_t)0x490F,\n\t(q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x6832, (q15_t)0x4A58,\n\t(q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x6746, (q15_t)0x4B9E,\n\t(q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x6657, (q15_t)0x4CE1,\n\t(q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x6563, (q15_t)0x4E21,\n\t(q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x646C, (q15_t)0x4F5E,\n\t(q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x6371, (q15_t)0x5097,\n\t(q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x6271, (q15_t)0x51CE,\n\t(q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x616F, (q15_t)0x5302,\n\t(q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x6068, (q15_t)0x5433,\n\t(q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5F5E, (q15_t)0x5560,\n\t(q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5E50, (q15_t)0x568A,\n\t(q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5D3E, (q15_t)0x57B0,\n\t(q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C29, (q15_t)0x58D4,\n\t(q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B10, (q15_t)0x59F3,\n\t(q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x59F3, (q15_t)0x5B10,\n\t(q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x58D4, (q15_t)0x5C29,\n\t(q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x57B0, (q15_t)0x5D3E,\n\t(q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x568A, (q15_t)0x5E50,\n\t(q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x5560, (q15_t)0x5F5E,\n\t(q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x5433, (q15_t)0x6068,\n\t(q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5302, (q15_t)0x616F,\n\t(q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x51CE, (q15_t)0x6271,\n\t(q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x5097, (q15_t)0x6371,\n\t(q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4F5E, (q15_t)0x646C,\n\t(q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E21, (q15_t)0x6563,\n\t(q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4CE1, (q15_t)0x6657,\n\t(q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4B9E, (q15_t)0x6746,\n\t(q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4A58, (q15_t)0x6832,\n\t(q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x490F, (q15_t)0x6919,\n\t(q15_t)0x4869, (q15_t)0x698C, (q15_t)0x47C3, (q15_t)0x69FD,\n\t(q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x4675, (q15_t)0x6ADC,\n\t(q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x4524, (q15_t)0x6BB8,\n\t(q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x43D0, (q15_t)0x6C8F,\n\t(q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x427A, (q15_t)0x6D62,\n\t(q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4121, (q15_t)0x6E30,\n\t(q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x3FC5, (q15_t)0x6EFB,\n\t(q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3E68, (q15_t)0x6FC1,\n\t(q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D07, (q15_t)0x7083,\n\t(q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3BA5, (q15_t)0x7141,\n\t(q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3A40, (q15_t)0x71FA,\n\t(q15_t)0x398C, (q15_t)0x7255, (q15_t)0x38D8, (q15_t)0x72AF,\n\t(q15_t)0x3824, (q15_t)0x7307, (q15_t)0x376F, (q15_t)0x735F,\n\t(q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x3604, (q15_t)0x740B,\n\t(q15_t)0x354D, (q15_t)0x745F, (q15_t)0x3496, (q15_t)0x74B2,\n\t(q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x3326, (q15_t)0x7555,\n\t(q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x31B5, (q15_t)0x75F4,\n\t(q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x3041, (q15_t)0x768E,\n\t(q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2ECC, (q15_t)0x7723,\n\t(q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2D55, (q15_t)0x77B4,\n\t(q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2BDC, (q15_t)0x7840,\n\t(q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2A61, (q15_t)0x78C7,\n\t(q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x28E5, (q15_t)0x794A,\n\t(q15_t)0x2826, (q15_t)0x798A, (q15_t)0x2767, (q15_t)0x79C8,\n\t(q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x25E8, (q15_t)0x7A42,\n\t(q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x2467, (q15_t)0x7AB6,\n\t(q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x22E5, (q15_t)0x7B26,\n\t(q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x2161, (q15_t)0x7B92,\n\t(q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x1FDC, (q15_t)0x7BF8,\n\t(q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1E56, (q15_t)0x7C5A,\n\t(q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1CCF, (q15_t)0x7CB7,\n\t(q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1B47, (q15_t)0x7D0F,\n\t(q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x19BD, (q15_t)0x7D62,\n\t(q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x1833, (q15_t)0x7DB0,\n\t(q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x16A8, (q15_t)0x7DFA,\n\t(q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x151B, (q15_t)0x7E3F,\n\t(q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x138E, (q15_t)0x7E7F,\n\t(q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1201, (q15_t)0x7EBA,\n\t(q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x1072, (q15_t)0x7EF0,\n\t(q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0EE3, (q15_t)0x7F21,\n\t(q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0D53, (q15_t)0x7F4D,\n\t(q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0BC3, (q15_t)0x7F75,\n\t(q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0A33, (q15_t)0x7F97,\n\t(q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x08A2, (q15_t)0x7FB5,\n\t(q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x0710, (q15_t)0x7FCE,\n\t(q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x057F, (q15_t)0x7FE1,\n\t(q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x03ED, (q15_t)0x7FF0,\n\t(q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x025B, (q15_t)0x7FFA,\n\t(q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x00C9, (q15_t)0x7FFF,\n\t(q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFF36, (q15_t)0x7FFF,\n\t(q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFDA4, (q15_t)0x7FFA,\n\t(q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFC12, (q15_t)0x7FF0,\n\t(q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFA80, (q15_t)0x7FE1,\n\t(q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF8EF, (q15_t)0x7FCE,\n\t(q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF75D, (q15_t)0x7FB5,\n\t(q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF5CC, (q15_t)0x7F97,\n\t(q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF43C, (q15_t)0x7F75,\n\t(q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF2AC, (q15_t)0x7F4D,\n\t(q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF11C, (q15_t)0x7F21,\n\t(q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEF8D, (q15_t)0x7EF0,\n\t(q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEDFE, (q15_t)0x7EBA,\n\t(q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEC71, (q15_t)0x7E7F,\n\t(q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEAE4, (q15_t)0x7E3F,\n\t(q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE957, (q15_t)0x7DFA,\n\t(q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE7CC, (q15_t)0x7DB0,\n\t(q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE642, (q15_t)0x7D62,\n\t(q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE4B8, (q15_t)0x7D0F,\n\t(q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE330, (q15_t)0x7CB7,\n\t(q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE1A9, (q15_t)0x7C5A,\n\t(q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE023, (q15_t)0x7BF8,\n\t(q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDE9E, (q15_t)0x7B92,\n\t(q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDD1A, (q15_t)0x7B26,\n\t(q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDB98, (q15_t)0x7AB6,\n\t(q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDA17, (q15_t)0x7A42,\n\t(q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD898, (q15_t)0x79C8,\n\t(q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD71A, (q15_t)0x794A,\n\t(q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD59E, (q15_t)0x78C7,\n\t(q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD423, (q15_t)0x7840,\n\t(q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD2AA, (q15_t)0x77B4,\n\t(q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD133, (q15_t)0x7723,\n\t(q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xCFBE, (q15_t)0x768E,\n\t(q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCE4A, (q15_t)0x75F4,\n\t(q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCCD9, (q15_t)0x7555,\n\t(q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCB69, (q15_t)0x74B2,\n\t(q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xC9FB, (q15_t)0x740B,\n\t(q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC890, (q15_t)0x735F,\n\t(q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC727, (q15_t)0x72AF,\n\t(q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC5BF, (q15_t)0x71FA,\n\t(q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC45A, (q15_t)0x7141,\n\t(q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC2F8, (q15_t)0x7083,\n\t(q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC197, (q15_t)0x6FC1,\n\t(q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC03A, (q15_t)0x6EFB,\n\t(q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBEDE, (q15_t)0x6E30,\n\t(q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBD85, (q15_t)0x6D62,\n\t(q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBC2F, (q15_t)0x6C8F,\n\t(q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBADB, (q15_t)0x6BB8,\n\t(q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xB98A, (q15_t)0x6ADC,\n\t(q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB83C, (q15_t)0x69FD,\n\t(q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB6F0, (q15_t)0x6919,\n\t(q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB5A7, (q15_t)0x6832,\n\t(q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB461, (q15_t)0x6746,\n\t(q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB31E, (q15_t)0x6657,\n\t(q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB1DE, (q15_t)0x6563,\n\t(q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB0A1, (q15_t)0x646C,\n\t(q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAF68, (q15_t)0x6371,\n\t(q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAE31, (q15_t)0x6271,\n\t(q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xACFD, (q15_t)0x616F,\n\t(q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xABCC, (q15_t)0x6068,\n\t(q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAA9F, (q15_t)0x5F5E,\n\t(q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA975, (q15_t)0x5E50,\n\t(q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA84F, (q15_t)0x5D3E,\n\t(q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA72B, (q15_t)0x5C29,\n\t(q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA60C, (q15_t)0x5B10,\n\t(q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA4EF, (q15_t)0x59F3,\n\t(q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA3D6, (q15_t)0x58D4,\n\t(q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA2C1, (q15_t)0x57B0,\n\t(q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA1AF, (q15_t)0x568A,\n\t(q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA0A1, (q15_t)0x5560,\n\t(q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9F97, (q15_t)0x5433,\n\t(q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9E90, (q15_t)0x5302,\n\t(q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9D8E, (q15_t)0x51CE,\n\t(q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9C8E, (q15_t)0x5097,\n\t(q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9B93, (q15_t)0x4F5E,\n\t(q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9A9C, (q15_t)0x4E21,\n\t(q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x99A8, (q15_t)0x4CE1,\n\t(q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x98B9, (q15_t)0x4B9E,\n\t(q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x97CD, (q15_t)0x4A58,\n\t(q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x96E6, (q15_t)0x490F,\n\t(q15_t)0x9673, (q15_t)0x4869, (q15_t)0x9602, (q15_t)0x47C3,\n\t(q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9523, (q15_t)0x4675,\n\t(q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x9447, (q15_t)0x4524,\n\t(q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x9370, (q15_t)0x43D0,\n\t(q15_t)0x9306, (q15_t)0x4325, (q15_t)0x929D, (q15_t)0x427A,\n\t(q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x91CF, (q15_t)0x4121,\n\t(q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9104, (q15_t)0x3FC5,\n\t(q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x903E, (q15_t)0x3E68,\n\t(q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8F7C, (q15_t)0x3D07,\n\t(q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8EBE, (q15_t)0x3BA5,\n\t(q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E05, (q15_t)0x3A40,\n\t(q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D50, (q15_t)0x38D8,\n\t(q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CA0, (q15_t)0x376F,\n\t(q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8BF4, (q15_t)0x3604,\n\t(q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B4D, (q15_t)0x3496,\n\t(q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AAA, (q15_t)0x3326,\n\t(q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A0B, (q15_t)0x31B5,\n\t(q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8971, (q15_t)0x3041,\n\t(q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x88DC, (q15_t)0x2ECC,\n\t(q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x884B, (q15_t)0x2D55,\n\t(q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87BF, (q15_t)0x2BDC,\n\t(q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8738, (q15_t)0x2A61,\n\t(q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86B5, (q15_t)0x28E5,\n\t(q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8637, (q15_t)0x2767,\n\t(q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85BD, (q15_t)0x25E8,\n\t(q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8549, (q15_t)0x2467,\n\t(q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x84D9, (q15_t)0x22E5,\n\t(q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x846D, (q15_t)0x2161,\n\t(q15_t)0x843A, (q15_t)0x209F, (q15_t)0x8407, (q15_t)0x1FDC,\n\t(q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83A5, (q15_t)0x1E56,\n\t(q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x8348, (q15_t)0x1CCF,\n\t(q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x82F0, (q15_t)0x1B47,\n\t(q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x829D, (q15_t)0x19BD,\n\t(q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x824F, (q15_t)0x1833,\n\t(q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8205, (q15_t)0x16A8,\n\t(q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81C0, (q15_t)0x151B,\n\t(q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8180, (q15_t)0x138E,\n\t(q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x8145, (q15_t)0x1201,\n\t(q15_t)0x812A, (q15_t)0x1139, (q15_t)0x810F, (q15_t)0x1072,\n\t(q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80DE, (q15_t)0x0EE3,\n\t(q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80B2, (q15_t)0x0D53,\n\t(q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x808A, (q15_t)0x0BC3,\n\t(q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8068, (q15_t)0x0A33,\n\t(q15_t)0x8058, (q15_t)0x096A, (q15_t)0x804A, (q15_t)0x08A2,\n\t(q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x8031, (q15_t)0x0710,\n\t(q15_t)0x8027, (q15_t)0x0647, (q15_t)0x801E, (q15_t)0x057F,\n\t(q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x800F, (q15_t)0x03ED,\n\t(q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8005, (q15_t)0x025B,\n\t(q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8000, (q15_t)0x00C9,\n\t(q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFF36,\n\t(q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8005, (q15_t)0xFDA4,\n\t(q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800F, (q15_t)0xFC12,\n\t(q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x801E, (q15_t)0xFA80,\n\t(q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8031, (q15_t)0xF8EF,\n\t(q15_t)0x803D, (q15_t)0xF826, (q15_t)0x804A, (q15_t)0xF75D,\n\t(q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8068, (q15_t)0xF5CC,\n\t(q15_t)0x8078, (q15_t)0xF504, (q15_t)0x808A, (q15_t)0xF43C,\n\t(q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80B2, (q15_t)0xF2AC,\n\t(q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80DE, (q15_t)0xF11C,\n\t(q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x810F, (q15_t)0xEF8D,\n\t(q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8145, (q15_t)0xEDFE,\n\t(q15_t)0x8162, (q15_t)0xED37, (q15_t)0x8180, (q15_t)0xEC71,\n\t(q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81C0, (q15_t)0xEAE4,\n\t(q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x8205, (q15_t)0xE957,\n\t(q15_t)0x8229, (q15_t)0xE892, (q15_t)0x824F, (q15_t)0xE7CC,\n\t(q15_t)0x8275, (q15_t)0xE707, (q15_t)0x829D, (q15_t)0xE642,\n\t(q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82F0, (q15_t)0xE4B8,\n\t(q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8348, (q15_t)0xE330,\n\t(q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x83A5, (q15_t)0xE1A9,\n\t(q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x8407, (q15_t)0xE023,\n\t(q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x846D, (q15_t)0xDE9E,\n\t(q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84D9, (q15_t)0xDD1A,\n\t(q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x8549, (q15_t)0xDB98,\n\t(q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85BD, (q15_t)0xDA17,\n\t(q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8637, (q15_t)0xD898,\n\t(q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x86B5, (q15_t)0xD71A,\n\t(q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8738, (q15_t)0xD59E,\n\t(q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x87BF, (q15_t)0xD423,\n\t(q15_t)0x8805, (q15_t)0xD367, (q15_t)0x884B, (q15_t)0xD2AA,\n\t(q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88DC, (q15_t)0xD133,\n\t(q15_t)0x8926, (q15_t)0xD078, (q15_t)0x8971, (q15_t)0xCFBE,\n\t(q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8A0B, (q15_t)0xCE4A,\n\t(q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8AAA, (q15_t)0xCCD9,\n\t(q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B4D, (q15_t)0xCB69,\n\t(q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BF4, (q15_t)0xC9FB,\n\t(q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8CA0, (q15_t)0xC890,\n\t(q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D50, (q15_t)0xC727,\n\t(q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8E05, (q15_t)0xC5BF,\n\t(q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8EBE, (q15_t)0xC45A,\n\t(q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F7C, (q15_t)0xC2F8,\n\t(q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x903E, (q15_t)0xC197,\n\t(q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x9104, (q15_t)0xC03A,\n\t(q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x91CF, (q15_t)0xBEDE,\n\t(q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x929D, (q15_t)0xBD85,\n\t(q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x9370, (q15_t)0xBC2F,\n\t(q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x9447, (q15_t)0xBADB,\n\t(q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x9523, (q15_t)0xB98A,\n\t(q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9602, (q15_t)0xB83C,\n\t(q15_t)0x9673, (q15_t)0xB796, (q15_t)0x96E6, (q15_t)0xB6F0,\n\t(q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x97CD, (q15_t)0xB5A7,\n\t(q15_t)0x9842, (q15_t)0xB504, (q15_t)0x98B9, (q15_t)0xB461,\n\t(q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x99A8, (q15_t)0xB31E,\n\t(q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A9C, (q15_t)0xB1DE,\n\t(q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B93, (q15_t)0xB0A1,\n\t(q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C8E, (q15_t)0xAF68,\n\t(q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D8E, (q15_t)0xAE31,\n\t(q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E90, (q15_t)0xACFD,\n\t(q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F97, (q15_t)0xABCC,\n\t(q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA0A1, (q15_t)0xAA9F,\n\t(q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA1AF, (q15_t)0xA975,\n\t(q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA2C1, (q15_t)0xA84F,\n\t(q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA3D6, (q15_t)0xA72B,\n\t(q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA4EF, (q15_t)0xA60C,\n\t(q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA60C, (q15_t)0xA4EF,\n\t(q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA72B, (q15_t)0xA3D6,\n\t(q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA84F, (q15_t)0xA2C1,\n\t(q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA975, (q15_t)0xA1AF,\n\t(q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA9F, (q15_t)0xA0A1,\n\t(q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xABCC, (q15_t)0x9F97,\n\t(q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xACFD, (q15_t)0x9E90,\n\t(q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xAE31, (q15_t)0x9D8E,\n\t(q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAF68, (q15_t)0x9C8E,\n\t(q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB0A1, (q15_t)0x9B93,\n\t(q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB1DE, (q15_t)0x9A9C,\n\t(q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB31E, (q15_t)0x99A8,\n\t(q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB461, (q15_t)0x98B9,\n\t(q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB5A7, (q15_t)0x97CD,\n\t(q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB6F0, (q15_t)0x96E6,\n\t(q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB83C, (q15_t)0x9602,\n\t(q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB98A, (q15_t)0x9523,\n\t(q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBADB, (q15_t)0x9447,\n\t(q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBC2F, (q15_t)0x9370,\n\t(q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD85, (q15_t)0x929D,\n\t(q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBEDE, (q15_t)0x91CF,\n\t(q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xC03A, (q15_t)0x9104,\n\t(q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC197, (q15_t)0x903E,\n\t(q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC2F8, (q15_t)0x8F7C,\n\t(q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC45A, (q15_t)0x8EBE,\n\t(q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC5BF, (q15_t)0x8E05,\n\t(q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC727, (q15_t)0x8D50,\n\t(q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC890, (q15_t)0x8CA0,\n\t(q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC9FB, (q15_t)0x8BF4,\n\t(q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCB69, (q15_t)0x8B4D,\n\t(q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCCD9, (q15_t)0x8AAA,\n\t(q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCE4A, (q15_t)0x8A0B,\n\t(q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCFBE, (q15_t)0x8971,\n\t(q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD133, (q15_t)0x88DC,\n\t(q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD2AA, (q15_t)0x884B,\n\t(q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD423, (q15_t)0x87BF,\n\t(q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD59E, (q15_t)0x8738,\n\t(q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD71A, (q15_t)0x86B5,\n\t(q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD898, (q15_t)0x8637,\n\t(q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xDA17, (q15_t)0x85BD,\n\t(q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB98, (q15_t)0x8549,\n\t(q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDD1A, (q15_t)0x84D9,\n\t(q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE9E, (q15_t)0x846D,\n\t(q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xE023, (q15_t)0x8407,\n\t(q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE1A9, (q15_t)0x83A5,\n\t(q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE330, (q15_t)0x8348,\n\t(q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE4B8, (q15_t)0x82F0,\n\t(q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE642, (q15_t)0x829D,\n\t(q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE7CC, (q15_t)0x824F,\n\t(q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE957, (q15_t)0x8205,\n\t(q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEAE4, (q15_t)0x81C0,\n\t(q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEC71, (q15_t)0x8180,\n\t(q15_t)0xED37, (q15_t)0x8162, (q15_t)0xEDFE, (q15_t)0x8145,\n\t(q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEF8D, (q15_t)0x810F,\n\t(q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF11C, (q15_t)0x80DE,\n\t(q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF2AC, (q15_t)0x80B2,\n\t(q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF43C, (q15_t)0x808A,\n\t(q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF5CC, (q15_t)0x8068,\n\t(q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF75D, (q15_t)0x804A,\n\t(q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF8EF, (q15_t)0x8031,\n\t(q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFA80, (q15_t)0x801E,\n\t(q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFC12, (q15_t)0x800F,\n\t(q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFDA4, (q15_t)0x8005,\n\t(q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFF36, (q15_t)0x8000\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_2048)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 2048, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_2048_q15[3072] = {\n\t(q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x0064,\n\t(q15_t)0x7FFF, (q15_t)0x00C9, (q15_t)0x7FFE, (q15_t)0x012D,\n\t(q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFC, (q15_t)0x01F6,\n\t(q15_t)0x7FFA, (q15_t)0x025B, (q15_t)0x7FF8, (q15_t)0x02BF,\n\t(q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF3, (q15_t)0x0388,\n\t(q15_t)0x7FF0, (q15_t)0x03ED, (q15_t)0x7FED, (q15_t)0x0451,\n\t(q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE5, (q15_t)0x051A,\n\t(q15_t)0x7FE1, (q15_t)0x057F, (q15_t)0x7FDD, (q15_t)0x05E3,\n\t(q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FD3, (q15_t)0x06AC,\n\t(q15_t)0x7FCE, (q15_t)0x0710, (q15_t)0x7FC8, (q15_t)0x0775,\n\t(q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FBC, (q15_t)0x083D,\n\t(q15_t)0x7FB5, (q15_t)0x08A2, (q15_t)0x7FAE, (q15_t)0x0906,\n\t(q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F9F, (q15_t)0x09CE,\n\t(q15_t)0x7F97, (q15_t)0x0A33, (q15_t)0x7F8F, (q15_t)0x0A97,\n\t(q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F7E, (q15_t)0x0B5F,\n\t(q15_t)0x7F75, (q15_t)0x0BC3, (q15_t)0x7F6B, (q15_t)0x0C27,\n\t(q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F58, (q15_t)0x0CEF,\n\t(q15_t)0x7F4D, (q15_t)0x0D53, (q15_t)0x7F43, (q15_t)0x0DB7,\n\t(q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F2D, (q15_t)0x0E7F,\n\t(q15_t)0x7F21, (q15_t)0x0EE3, (q15_t)0x7F15, (q15_t)0x0F47,\n\t(q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7EFD, (q15_t)0x100E,\n\t(q15_t)0x7EF0, (q15_t)0x1072, (q15_t)0x7EE3, (q15_t)0x10D6,\n\t(q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7EC8, (q15_t)0x119D,\n\t(q15_t)0x7EBA, (q15_t)0x1201, (q15_t)0x7EAB, (q15_t)0x1264,\n\t(q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E8E, (q15_t)0x132B,\n\t(q15_t)0x7E7F, (q15_t)0x138E, (q15_t)0x7E6F, (q15_t)0x13F2,\n\t(q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E4F, (q15_t)0x14B8,\n\t(q15_t)0x7E3F, (q15_t)0x151B, (q15_t)0x7E2E, (q15_t)0x157F,\n\t(q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7E0C, (q15_t)0x1645,\n\t(q15_t)0x7DFA, (q15_t)0x16A8, (q15_t)0x7DE8, (q15_t)0x170A,\n\t(q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DC3, (q15_t)0x17D0,\n\t(q15_t)0x7DB0, (q15_t)0x1833, (q15_t)0x7D9D, (q15_t)0x1896,\n\t(q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D76, (q15_t)0x195B,\n\t(q15_t)0x7D62, (q15_t)0x19BD, (q15_t)0x7D4E, (q15_t)0x1A20,\n\t(q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D24, (q15_t)0x1AE4,\n\t(q15_t)0x7D0F, (q15_t)0x1B47, (q15_t)0x7CF9, (q15_t)0x1BA9,\n\t(q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CCD, (q15_t)0x1C6D,\n\t(q15_t)0x7CB7, (q15_t)0x1CCF, (q15_t)0x7CA0, (q15_t)0x1D31,\n\t(q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C71, (q15_t)0x1DF5,\n\t(q15_t)0x7C5A, (q15_t)0x1E56, (q15_t)0x7C42, (q15_t)0x1EB8,\n\t(q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7C11, (q15_t)0x1F7B,\n\t(q15_t)0x7BF8, (q15_t)0x1FDC, (q15_t)0x7BDF, (q15_t)0x203E,\n\t(q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7BAC, (q15_t)0x2100,\n\t(q15_t)0x7B92, (q15_t)0x2161, (q15_t)0x7B77, (q15_t)0x21C2,\n\t(q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B42, (q15_t)0x2284,\n\t(q15_t)0x7B26, (q15_t)0x22E5, (q15_t)0x7B0B, (q15_t)0x2345,\n\t(q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AD3, (q15_t)0x2407,\n\t(q15_t)0x7AB6, (q15_t)0x2467, (q15_t)0x7A9A, (q15_t)0x24C7,\n\t(q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A5F, (q15_t)0x2588,\n\t(q15_t)0x7A42, (q15_t)0x25E8, (q15_t)0x7A24, (q15_t)0x2648,\n\t(q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79E7, (q15_t)0x2707,\n\t(q15_t)0x79C8, (q15_t)0x2767, (q15_t)0x79A9, (q15_t)0x27C7,\n\t(q15_t)0x798A, (q15_t)0x2826, (q15_t)0x796A, (q15_t)0x2886,\n\t(q15_t)0x794A, (q15_t)0x28E5, (q15_t)0x792A, (q15_t)0x2944,\n\t(q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78E8, (q15_t)0x2A02,\n\t(q15_t)0x78C7, (q15_t)0x2A61, (q15_t)0x78A6, (q15_t)0x2AC0,\n\t(q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7862, (q15_t)0x2B7D,\n\t(q15_t)0x7840, (q15_t)0x2BDC, (q15_t)0x781D, (q15_t)0x2C3A,\n\t(q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77D7, (q15_t)0x2CF7,\n\t(q15_t)0x77B4, (q15_t)0x2D55, (q15_t)0x7790, (q15_t)0x2DB3,\n\t(q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x7747, (q15_t)0x2E6E,\n\t(q15_t)0x7723, (q15_t)0x2ECC, (q15_t)0x76FE, (q15_t)0x2F29,\n\t(q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x76B3, (q15_t)0x2FE4,\n\t(q15_t)0x768E, (q15_t)0x3041, (q15_t)0x7668, (q15_t)0x309E,\n\t(q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x761B, (q15_t)0x3158,\n\t(q15_t)0x75F4, (q15_t)0x31B5, (q15_t)0x75CC, (q15_t)0x3211,\n\t(q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x757D, (q15_t)0x32CA,\n\t(q15_t)0x7555, (q15_t)0x3326, (q15_t)0x752D, (q15_t)0x3382,\n\t(q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74DB, (q15_t)0x343A,\n\t(q15_t)0x74B2, (q15_t)0x3496, (q15_t)0x7489, (q15_t)0x34F2,\n\t(q15_t)0x745F, (q15_t)0x354D, (q15_t)0x7435, (q15_t)0x35A8,\n\t(q15_t)0x740B, (q15_t)0x3604, (q15_t)0x73E0, (q15_t)0x365F,\n\t(q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x738A, (q15_t)0x3714,\n\t(q15_t)0x735F, (q15_t)0x376F, (q15_t)0x7333, (q15_t)0x37CA,\n\t(q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72DB, (q15_t)0x387E,\n\t(q15_t)0x72AF, (q15_t)0x38D8, (q15_t)0x7282, (q15_t)0x3932,\n\t(q15_t)0x7255, (q15_t)0x398C, (q15_t)0x7227, (q15_t)0x39E6,\n\t(q15_t)0x71FA, (q15_t)0x3A40, (q15_t)0x71CC, (q15_t)0x3A99,\n\t(q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x716F, (q15_t)0x3B4C,\n\t(q15_t)0x7141, (q15_t)0x3BA5, (q15_t)0x7112, (q15_t)0x3BFD,\n\t(q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x70B3, (q15_t)0x3CAF,\n\t(q15_t)0x7083, (q15_t)0x3D07, (q15_t)0x7053, (q15_t)0x3D60,\n\t(q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x6FF2, (q15_t)0x3E10,\n\t(q15_t)0x6FC1, (q15_t)0x3E68, (q15_t)0x6F90, (q15_t)0x3EBF,\n\t(q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6F2D, (q15_t)0x3F6E,\n\t(q15_t)0x6EFB, (q15_t)0x3FC5, (q15_t)0x6EC9, (q15_t)0x401D,\n\t(q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E63, (q15_t)0x40CA,\n\t(q15_t)0x6E30, (q15_t)0x4121, (q15_t)0x6DFD, (q15_t)0x4177,\n\t(q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6D96, (q15_t)0x4224,\n\t(q15_t)0x6D62, (q15_t)0x427A, (q15_t)0x6D2D, (q15_t)0x42D0,\n\t(q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6CC4, (q15_t)0x437B,\n\t(q15_t)0x6C8F, (q15_t)0x43D0, (q15_t)0x6C59, (q15_t)0x4425,\n\t(q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6BEE, (q15_t)0x44CF,\n\t(q15_t)0x6BB8, (q15_t)0x4524, (q15_t)0x6B81, (q15_t)0x4578,\n\t(q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6B13, (q15_t)0x4621,\n\t(q15_t)0x6ADC, (q15_t)0x4675, (q15_t)0x6AA5, (q15_t)0x46C9,\n\t(q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x6A35, (q15_t)0x4770,\n\t(q15_t)0x69FD, (q15_t)0x47C3, (q15_t)0x69C4, (q15_t)0x4816,\n\t(q15_t)0x698C, (q15_t)0x4869, (q15_t)0x6953, (q15_t)0x48BC,\n\t(q15_t)0x6919, (q15_t)0x490F, (q15_t)0x68E0, (q15_t)0x4961,\n\t(q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x686C, (q15_t)0x4A06,\n\t(q15_t)0x6832, (q15_t)0x4A58, (q15_t)0x67F7, (q15_t)0x4AA9,\n\t(q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x6782, (q15_t)0x4B4C,\n\t(q15_t)0x6746, (q15_t)0x4B9E, (q15_t)0x670B, (q15_t)0x4BEF,\n\t(q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x6693, (q15_t)0x4C90,\n\t(q15_t)0x6657, (q15_t)0x4CE1, (q15_t)0x661A, (q15_t)0x4D31,\n\t(q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x65A0, (q15_t)0x4DD1,\n\t(q15_t)0x6563, (q15_t)0x4E21, (q15_t)0x6526, (q15_t)0x4E70,\n\t(q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x64AA, (q15_t)0x4F0F,\n\t(q15_t)0x646C, (q15_t)0x4F5E, (q15_t)0x642D, (q15_t)0x4FAC,\n\t(q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x63B0, (q15_t)0x5049,\n\t(q15_t)0x6371, (q15_t)0x5097, (q15_t)0x6331, (q15_t)0x50E5,\n\t(q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x62B2, (q15_t)0x5181,\n\t(q15_t)0x6271, (q15_t)0x51CE, (q15_t)0x6231, (q15_t)0x521C,\n\t(q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x61B0, (q15_t)0x52B5,\n\t(q15_t)0x616F, (q15_t)0x5302, (q15_t)0x612D, (q15_t)0x534E,\n\t(q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x60AA, (q15_t)0x53E7,\n\t(q15_t)0x6068, (q15_t)0x5433, (q15_t)0x6026, (q15_t)0x547E,\n\t(q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5FA0, (q15_t)0x5515,\n\t(q15_t)0x5F5E, (q15_t)0x5560, (q15_t)0x5F1A, (q15_t)0x55AB,\n\t(q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5E93, (q15_t)0x5640,\n\t(q15_t)0x5E50, (q15_t)0x568A, (q15_t)0x5E0B, (q15_t)0x56D4,\n\t(q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5D83, (q15_t)0x5767,\n\t(q15_t)0x5D3E, (q15_t)0x57B0, (q15_t)0x5CF9, (q15_t)0x57F9,\n\t(q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C6E, (q15_t)0x588B,\n\t(q15_t)0x5C29, (q15_t)0x58D4, (q15_t)0x5BE3, (q15_t)0x591C,\n\t(q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B56, (q15_t)0x59AC,\n\t(q15_t)0x5B10, (q15_t)0x59F3, (q15_t)0x5AC9, (q15_t)0x5A3B,\n\t(q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5A3B, (q15_t)0x5AC9,\n\t(q15_t)0x59F3, (q15_t)0x5B10, (q15_t)0x59AC, (q15_t)0x5B56,\n\t(q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x591C, (q15_t)0x5BE3,\n\t(q15_t)0x58D4, (q15_t)0x5C29, (q15_t)0x588B, (q15_t)0x5C6E,\n\t(q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x57F9, (q15_t)0x5CF9,\n\t(q15_t)0x57B0, (q15_t)0x5D3E, (q15_t)0x5767, (q15_t)0x5D83,\n\t(q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x56D4, (q15_t)0x5E0B,\n\t(q15_t)0x568A, (q15_t)0x5E50, (q15_t)0x5640, (q15_t)0x5E93,\n\t(q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x55AB, (q15_t)0x5F1A,\n\t(q15_t)0x5560, (q15_t)0x5F5E, (q15_t)0x5515, (q15_t)0x5FA0,\n\t(q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x547E, (q15_t)0x6026,\n\t(q15_t)0x5433, (q15_t)0x6068, (q15_t)0x53E7, (q15_t)0x60AA,\n\t(q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x534E, (q15_t)0x612D,\n\t(q15_t)0x5302, (q15_t)0x616F, (q15_t)0x52B5, (q15_t)0x61B0,\n\t(q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x521C, (q15_t)0x6231,\n\t(q15_t)0x51CE, (q15_t)0x6271, (q15_t)0x5181, (q15_t)0x62B2,\n\t(q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x50E5, (q15_t)0x6331,\n\t(q15_t)0x5097, (q15_t)0x6371, (q15_t)0x5049, (q15_t)0x63B0,\n\t(q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4FAC, (q15_t)0x642D,\n\t(q15_t)0x4F5E, (q15_t)0x646C, (q15_t)0x4F0F, (q15_t)0x64AA,\n\t(q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E70, (q15_t)0x6526,\n\t(q15_t)0x4E21, (q15_t)0x6563, (q15_t)0x4DD1, (q15_t)0x65A0,\n\t(q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4D31, (q15_t)0x661A,\n\t(q15_t)0x4CE1, (q15_t)0x6657, (q15_t)0x4C90, (q15_t)0x6693,\n\t(q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4BEF, (q15_t)0x670B,\n\t(q15_t)0x4B9E, (q15_t)0x6746, (q15_t)0x4B4C, (q15_t)0x6782,\n\t(q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4AA9, (q15_t)0x67F7,\n\t(q15_t)0x4A58, (q15_t)0x6832, (q15_t)0x4A06, (q15_t)0x686C,\n\t(q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x4961, (q15_t)0x68E0,\n\t(q15_t)0x490F, (q15_t)0x6919, (q15_t)0x48BC, (q15_t)0x6953,\n\t(q15_t)0x4869, (q15_t)0x698C, (q15_t)0x4816, (q15_t)0x69C4,\n\t(q15_t)0x47C3, (q15_t)0x69FD, (q15_t)0x4770, (q15_t)0x6A35,\n\t(q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x46C9, (q15_t)0x6AA5,\n\t(q15_t)0x4675, (q15_t)0x6ADC, (q15_t)0x4621, (q15_t)0x6B13,\n\t(q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x4578, (q15_t)0x6B81,\n\t(q15_t)0x4524, (q15_t)0x6BB8, (q15_t)0x44CF, (q15_t)0x6BEE,\n\t(q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4425, (q15_t)0x6C59,\n\t(q15_t)0x43D0, (q15_t)0x6C8F, (q15_t)0x437B, (q15_t)0x6CC4,\n\t(q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x42D0, (q15_t)0x6D2D,\n\t(q15_t)0x427A, (q15_t)0x6D62, (q15_t)0x4224, (q15_t)0x6D96,\n\t(q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4177, (q15_t)0x6DFD,\n\t(q15_t)0x4121, (q15_t)0x6E30, (q15_t)0x40CA, (q15_t)0x6E63,\n\t(q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x401D, (q15_t)0x6EC9,\n\t(q15_t)0x3FC5, (q15_t)0x6EFB, (q15_t)0x3F6E, (q15_t)0x6F2D,\n\t(q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3EBF, (q15_t)0x6F90,\n\t(q15_t)0x3E68, (q15_t)0x6FC1, (q15_t)0x3E10, (q15_t)0x6FF2,\n\t(q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D60, (q15_t)0x7053,\n\t(q15_t)0x3D07, (q15_t)0x7083, (q15_t)0x3CAF, (q15_t)0x70B3,\n\t(q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3BFD, (q15_t)0x7112,\n\t(q15_t)0x3BA5, (q15_t)0x7141, (q15_t)0x3B4C, (q15_t)0x716F,\n\t(q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3A99, (q15_t)0x71CC,\n\t(q15_t)0x3A40, (q15_t)0x71FA, (q15_t)0x39E6, (q15_t)0x7227,\n\t(q15_t)0x398C, (q15_t)0x7255, (q15_t)0x3932, (q15_t)0x7282,\n\t(q15_t)0x38D8, (q15_t)0x72AF, (q15_t)0x387E, (q15_t)0x72DB,\n\t(q15_t)0x3824, (q15_t)0x7307, (q15_t)0x37CA, (q15_t)0x7333,\n\t(q15_t)0x376F, (q15_t)0x735F, (q15_t)0x3714, (q15_t)0x738A,\n\t(q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x365F, (q15_t)0x73E0,\n\t(q15_t)0x3604, (q15_t)0x740B, (q15_t)0x35A8, (q15_t)0x7435,\n\t(q15_t)0x354D, (q15_t)0x745F, (q15_t)0x34F2, (q15_t)0x7489,\n\t(q15_t)0x3496, (q15_t)0x74B2, (q15_t)0x343A, (q15_t)0x74DB,\n\t(q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x3382, (q15_t)0x752D,\n\t(q15_t)0x3326, (q15_t)0x7555, (q15_t)0x32CA, (q15_t)0x757D,\n\t(q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x3211, (q15_t)0x75CC,\n\t(q15_t)0x31B5, (q15_t)0x75F4, (q15_t)0x3158, (q15_t)0x761B,\n\t(q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x309E, (q15_t)0x7668,\n\t(q15_t)0x3041, (q15_t)0x768E, (q15_t)0x2FE4, (q15_t)0x76B3,\n\t(q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2F29, (q15_t)0x76FE,\n\t(q15_t)0x2ECC, (q15_t)0x7723, (q15_t)0x2E6E, (q15_t)0x7747,\n\t(q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2DB3, (q15_t)0x7790,\n\t(q15_t)0x2D55, (q15_t)0x77B4, (q15_t)0x2CF7, (q15_t)0x77D7,\n\t(q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2C3A, (q15_t)0x781D,\n\t(q15_t)0x2BDC, (q15_t)0x7840, (q15_t)0x2B7D, (q15_t)0x7862,\n\t(q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2AC0, (q15_t)0x78A6,\n\t(q15_t)0x2A61, (q15_t)0x78C7, (q15_t)0x2A02, (q15_t)0x78E8,\n\t(q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x2944, (q15_t)0x792A,\n\t(q15_t)0x28E5, (q15_t)0x794A, (q15_t)0x2886, (q15_t)0x796A,\n\t(q15_t)0x2826, (q15_t)0x798A, (q15_t)0x27C7, (q15_t)0x79A9,\n\t(q15_t)0x2767, (q15_t)0x79C8, (q15_t)0x2707, (q15_t)0x79E7,\n\t(q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x2648, (q15_t)0x7A24,\n\t(q15_t)0x25E8, (q15_t)0x7A42, (q15_t)0x2588, (q15_t)0x7A5F,\n\t(q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x24C7, (q15_t)0x7A9A,\n\t(q15_t)0x2467, (q15_t)0x7AB6, (q15_t)0x2407, (q15_t)0x7AD3,\n\t(q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x2345, (q15_t)0x7B0B,\n\t(q15_t)0x22E5, (q15_t)0x7B26, (q15_t)0x2284, (q15_t)0x7B42,\n\t(q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x21C2, (q15_t)0x7B77,\n\t(q15_t)0x2161, (q15_t)0x7B92, (q15_t)0x2100, (q15_t)0x7BAC,\n\t(q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x203E, (q15_t)0x7BDF,\n\t(q15_t)0x1FDC, (q15_t)0x7BF8, (q15_t)0x1F7B, (q15_t)0x7C11,\n\t(q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1EB8, (q15_t)0x7C42,\n\t(q15_t)0x1E56, (q15_t)0x7C5A, (q15_t)0x1DF5, (q15_t)0x7C71,\n\t(q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1D31, (q15_t)0x7CA0,\n\t(q15_t)0x1CCF, (q15_t)0x7CB7, (q15_t)0x1C6D, (q15_t)0x7CCD,\n\t(q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1BA9, (q15_t)0x7CF9,\n\t(q15_t)0x1B47, (q15_t)0x7D0F, (q15_t)0x1AE4, (q15_t)0x7D24,\n\t(q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x1A20, (q15_t)0x7D4E,\n\t(q15_t)0x19BD, (q15_t)0x7D62, (q15_t)0x195B, (q15_t)0x7D76,\n\t(q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x1896, (q15_t)0x7D9D,\n\t(q15_t)0x1833, (q15_t)0x7DB0, (q15_t)0x17D0, (q15_t)0x7DC3,\n\t(q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x170A, (q15_t)0x7DE8,\n\t(q15_t)0x16A8, (q15_t)0x7DFA, (q15_t)0x1645, (q15_t)0x7E0C,\n\t(q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x157F, (q15_t)0x7E2E,\n\t(q15_t)0x151B, (q15_t)0x7E3F, (q15_t)0x14B8, (q15_t)0x7E4F,\n\t(q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x13F2, (q15_t)0x7E6F,\n\t(q15_t)0x138E, (q15_t)0x7E7F, (q15_t)0x132B, (q15_t)0x7E8E,\n\t(q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1264, (q15_t)0x7EAB,\n\t(q15_t)0x1201, (q15_t)0x7EBA, (q15_t)0x119D, (q15_t)0x7EC8,\n\t(q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x10D6, (q15_t)0x7EE3,\n\t(q15_t)0x1072, (q15_t)0x7EF0, (q15_t)0x100E, (q15_t)0x7EFD,\n\t(q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0F47, (q15_t)0x7F15,\n\t(q15_t)0x0EE3, (q15_t)0x7F21, (q15_t)0x0E7F, (q15_t)0x7F2D,\n\t(q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0DB7, (q15_t)0x7F43,\n\t(q15_t)0x0D53, (q15_t)0x7F4D, (q15_t)0x0CEF, (q15_t)0x7F58,\n\t(q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0C27, (q15_t)0x7F6B,\n\t(q15_t)0x0BC3, (q15_t)0x7F75, (q15_t)0x0B5F, (q15_t)0x7F7E,\n\t(q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0A97, (q15_t)0x7F8F,\n\t(q15_t)0x0A33, (q15_t)0x7F97, (q15_t)0x09CE, (q15_t)0x7F9F,\n\t(q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x0906, (q15_t)0x7FAE,\n\t(q15_t)0x08A2, (q15_t)0x7FB5, (q15_t)0x083D, (q15_t)0x7FBC,\n\t(q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x0775, (q15_t)0x7FC8,\n\t(q15_t)0x0710, (q15_t)0x7FCE, (q15_t)0x06AC, (q15_t)0x7FD3,\n\t(q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x05E3, (q15_t)0x7FDD,\n\t(q15_t)0x057F, (q15_t)0x7FE1, (q15_t)0x051A, (q15_t)0x7FE5,\n\t(q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x0451, (q15_t)0x7FED,\n\t(q15_t)0x03ED, (q15_t)0x7FF0, (q15_t)0x0388, (q15_t)0x7FF3,\n\t(q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x02BF, (q15_t)0x7FF8,\n\t(q15_t)0x025B, (q15_t)0x7FFA, (q15_t)0x01F6, (q15_t)0x7FFC,\n\t(q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x012D, (q15_t)0x7FFE,\n\t(q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x0064, (q15_t)0x7FFF,\n\t(q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFF9B, (q15_t)0x7FFF,\n\t(q15_t)0xFF36, (q15_t)0x7FFF, (q15_t)0xFED2, (q15_t)0x7FFE,\n\t(q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFE09, (q15_t)0x7FFC,\n\t(q15_t)0xFDA4, (q15_t)0x7FFA, (q15_t)0xFD40, (q15_t)0x7FF8,\n\t(q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFC77, (q15_t)0x7FF3,\n\t(q15_t)0xFC12, (q15_t)0x7FF0, (q15_t)0xFBAE, (q15_t)0x7FED,\n\t(q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFAE5, (q15_t)0x7FE5,\n\t(q15_t)0xFA80, (q15_t)0x7FE1, (q15_t)0xFA1C, (q15_t)0x7FDD,\n\t(q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF953, (q15_t)0x7FD3,\n\t(q15_t)0xF8EF, (q15_t)0x7FCE, (q15_t)0xF88A, (q15_t)0x7FC8,\n\t(q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF7C2, (q15_t)0x7FBC,\n\t(q15_t)0xF75D, (q15_t)0x7FB5, (q15_t)0xF6F9, (q15_t)0x7FAE,\n\t(q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF631, (q15_t)0x7F9F,\n\t(q15_t)0xF5CC, (q15_t)0x7F97, (q15_t)0xF568, (q15_t)0x7F8F,\n\t(q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF4A0, (q15_t)0x7F7E,\n\t(q15_t)0xF43C, (q15_t)0x7F75, (q15_t)0xF3D8, (q15_t)0x7F6B,\n\t(q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF310, (q15_t)0x7F58,\n\t(q15_t)0xF2AC, (q15_t)0x7F4D, (q15_t)0xF248, (q15_t)0x7F43,\n\t(q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF180, (q15_t)0x7F2D,\n\t(q15_t)0xF11C, (q15_t)0x7F21, (q15_t)0xF0B8, (q15_t)0x7F15,\n\t(q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEFF1, (q15_t)0x7EFD,\n\t(q15_t)0xEF8D, (q15_t)0x7EF0, (q15_t)0xEF29, (q15_t)0x7EE3,\n\t(q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEE62, (q15_t)0x7EC8,\n\t(q15_t)0xEDFE, (q15_t)0x7EBA, (q15_t)0xED9B, (q15_t)0x7EAB,\n\t(q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xECD4, (q15_t)0x7E8E,\n\t(q15_t)0xEC71, (q15_t)0x7E7F, (q15_t)0xEC0D, (q15_t)0x7E6F,\n\t(q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEB47, (q15_t)0x7E4F,\n\t(q15_t)0xEAE4, (q15_t)0x7E3F, (q15_t)0xEA80, (q15_t)0x7E2E,\n\t(q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE9BA, (q15_t)0x7E0C,\n\t(q15_t)0xE957, (q15_t)0x7DFA, (q15_t)0xE8F5, (q15_t)0x7DE8,\n\t(q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE82F, (q15_t)0x7DC3,\n\t(q15_t)0xE7CC, (q15_t)0x7DB0, (q15_t)0xE769, (q15_t)0x7D9D,\n\t(q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE6A4, (q15_t)0x7D76,\n\t(q15_t)0xE642, (q15_t)0x7D62, (q15_t)0xE5DF, (q15_t)0x7D4E,\n\t(q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE51B, (q15_t)0x7D24,\n\t(q15_t)0xE4B8, (q15_t)0x7D0F, (q15_t)0xE456, (q15_t)0x7CF9,\n\t(q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE392, (q15_t)0x7CCD,\n\t(q15_t)0xE330, (q15_t)0x7CB7, (q15_t)0xE2CE, (q15_t)0x7CA0,\n\t(q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE20A, (q15_t)0x7C71,\n\t(q15_t)0xE1A9, (q15_t)0x7C5A, (q15_t)0xE147, (q15_t)0x7C42,\n\t(q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE084, (q15_t)0x7C11,\n\t(q15_t)0xE023, (q15_t)0x7BF8, (q15_t)0xDFC1, (q15_t)0x7BDF,\n\t(q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDEFF, (q15_t)0x7BAC,\n\t(q15_t)0xDE9E, (q15_t)0x7B92, (q15_t)0xDE3D, (q15_t)0x7B77,\n\t(q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDD7B, (q15_t)0x7B42,\n\t(q15_t)0xDD1A, (q15_t)0x7B26, (q15_t)0xDCBA, (q15_t)0x7B0B,\n\t(q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDBF8, (q15_t)0x7AD3,\n\t(q15_t)0xDB98, (q15_t)0x7AB6, (q15_t)0xDB38, (q15_t)0x7A9A,\n\t(q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDA77, (q15_t)0x7A5F,\n\t(q15_t)0xDA17, (q15_t)0x7A42, (q15_t)0xD9B7, (q15_t)0x7A24,\n\t(q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD8F8, (q15_t)0x79E7,\n\t(q15_t)0xD898, (q15_t)0x79C8, (q15_t)0xD838, (q15_t)0x79A9,\n\t(q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD779, (q15_t)0x796A,\n\t(q15_t)0xD71A, (q15_t)0x794A, (q15_t)0xD6BB, (q15_t)0x792A,\n\t(q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD5FD, (q15_t)0x78E8,\n\t(q15_t)0xD59E, (q15_t)0x78C7, (q15_t)0xD53F, (q15_t)0x78A6,\n\t(q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD482, (q15_t)0x7862,\n\t(q15_t)0xD423, (q15_t)0x7840, (q15_t)0xD3C5, (q15_t)0x781D,\n\t(q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD308, (q15_t)0x77D7,\n\t(q15_t)0xD2AA, (q15_t)0x77B4, (q15_t)0xD24C, (q15_t)0x7790,\n\t(q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD191, (q15_t)0x7747,\n\t(q15_t)0xD133, (q15_t)0x7723, (q15_t)0xD0D6, (q15_t)0x76FE,\n\t(q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xD01B, (q15_t)0x76B3,\n\t(q15_t)0xCFBE, (q15_t)0x768E, (q15_t)0xCF61, (q15_t)0x7668,\n\t(q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCEA7, (q15_t)0x761B,\n\t(q15_t)0xCE4A, (q15_t)0x75F4, (q15_t)0xCDEE, (q15_t)0x75CC,\n\t(q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCD35, (q15_t)0x757D,\n\t(q15_t)0xCCD9, (q15_t)0x7555, (q15_t)0xCC7D, (q15_t)0x752D,\n\t(q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCBC5, (q15_t)0x74DB,\n\t(q15_t)0xCB69, (q15_t)0x74B2, (q15_t)0xCB0D, (q15_t)0x7489,\n\t(q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xCA57, (q15_t)0x7435,\n\t(q15_t)0xC9FB, (q15_t)0x740B, (q15_t)0xC9A0, (q15_t)0x73E0,\n\t(q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC8EB, (q15_t)0x738A,\n\t(q15_t)0xC890, (q15_t)0x735F, (q15_t)0xC835, (q15_t)0x7333,\n\t(q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC781, (q15_t)0x72DB,\n\t(q15_t)0xC727, (q15_t)0x72AF, (q15_t)0xC6CD, (q15_t)0x7282,\n\t(q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC619, (q15_t)0x7227,\n\t(q15_t)0xC5BF, (q15_t)0x71FA, (q15_t)0xC566, (q15_t)0x71CC,\n\t(q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC4B3, (q15_t)0x716F,\n\t(q15_t)0xC45A, (q15_t)0x7141, (q15_t)0xC402, (q15_t)0x7112,\n\t(q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC350, (q15_t)0x70B3,\n\t(q15_t)0xC2F8, (q15_t)0x7083, (q15_t)0xC29F, (q15_t)0x7053,\n\t(q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC1EF, (q15_t)0x6FF2,\n\t(q15_t)0xC197, (q15_t)0x6FC1, (q15_t)0xC140, (q15_t)0x6F90,\n\t(q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC091, (q15_t)0x6F2D,\n\t(q15_t)0xC03A, (q15_t)0x6EFB, (q15_t)0xBFE2, (q15_t)0x6EC9,\n\t(q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBF35, (q15_t)0x6E63,\n\t(q15_t)0xBEDE, (q15_t)0x6E30, (q15_t)0xBE88, (q15_t)0x6DFD,\n\t(q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBDDB, (q15_t)0x6D96,\n\t(q15_t)0xBD85, (q15_t)0x6D62, (q15_t)0xBD2F, (q15_t)0x6D2D,\n\t(q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBC84, (q15_t)0x6CC4,\n\t(q15_t)0xBC2F, (q15_t)0x6C8F, (q15_t)0xBBDA, (q15_t)0x6C59,\n\t(q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBB30, (q15_t)0x6BEE,\n\t(q15_t)0xBADB, (q15_t)0x6BB8, (q15_t)0xBA87, (q15_t)0x6B81,\n\t(q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xB9DE, (q15_t)0x6B13,\n\t(q15_t)0xB98A, (q15_t)0x6ADC, (q15_t)0xB936, (q15_t)0x6AA5,\n\t(q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB88F, (q15_t)0x6A35,\n\t(q15_t)0xB83C, (q15_t)0x69FD, (q15_t)0xB7E9, (q15_t)0x69C4,\n\t(q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB743, (q15_t)0x6953,\n\t(q15_t)0xB6F0, (q15_t)0x6919, (q15_t)0xB69E, (q15_t)0x68E0,\n\t(q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB5F9, (q15_t)0x686C,\n\t(q15_t)0xB5A7, (q15_t)0x6832, (q15_t)0xB556, (q15_t)0x67F7,\n\t(q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB4B3, (q15_t)0x6782,\n\t(q15_t)0xB461, (q15_t)0x6746, (q15_t)0xB410, (q15_t)0x670B,\n\t(q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB36F, (q15_t)0x6693,\n\t(q15_t)0xB31E, (q15_t)0x6657, (q15_t)0xB2CE, (q15_t)0x661A,\n\t(q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB22E, (q15_t)0x65A0,\n\t(q15_t)0xB1DE, (q15_t)0x6563, (q15_t)0xB18F, (q15_t)0x6526,\n\t(q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB0F0, (q15_t)0x64AA,\n\t(q15_t)0xB0A1, (q15_t)0x646C, (q15_t)0xB053, (q15_t)0x642D,\n\t(q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAFB6, (q15_t)0x63B0,\n\t(q15_t)0xAF68, (q15_t)0x6371, (q15_t)0xAF1A, (q15_t)0x6331,\n\t(q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAE7E, (q15_t)0x62B2,\n\t(q15_t)0xAE31, (q15_t)0x6271, (q15_t)0xADE3, (q15_t)0x6231,\n\t(q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xAD4A, (q15_t)0x61B0,\n\t(q15_t)0xACFD, (q15_t)0x616F, (q15_t)0xACB1, (q15_t)0x612D,\n\t(q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAC18, (q15_t)0x60AA,\n\t(q15_t)0xABCC, (q15_t)0x6068, (q15_t)0xAB81, (q15_t)0x6026,\n\t(q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAAEA, (q15_t)0x5FA0,\n\t(q15_t)0xAA9F, (q15_t)0x5F5E, (q15_t)0xAA54, (q15_t)0x5F1A,\n\t(q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA9BF, (q15_t)0x5E93,\n\t(q15_t)0xA975, (q15_t)0x5E50, (q15_t)0xA92B, (q15_t)0x5E0B,\n\t(q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA898, (q15_t)0x5D83,\n\t(q15_t)0xA84F, (q15_t)0x5D3E, (q15_t)0xA806, (q15_t)0x5CF9,\n\t(q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA774, (q15_t)0x5C6E,\n\t(q15_t)0xA72B, (q15_t)0x5C29, (q15_t)0xA6E3, (q15_t)0x5BE3,\n\t(q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA653, (q15_t)0x5B56,\n\t(q15_t)0xA60C, (q15_t)0x5B10, (q15_t)0xA5C4, (q15_t)0x5AC9,\n\t(q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA536, (q15_t)0x5A3B,\n\t(q15_t)0xA4EF, (q15_t)0x59F3, (q15_t)0xA4A9, (q15_t)0x59AC,\n\t(q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA41C, (q15_t)0x591C,\n\t(q15_t)0xA3D6, (q15_t)0x58D4, (q15_t)0xA391, (q15_t)0x588B,\n\t(q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA306, (q15_t)0x57F9,\n\t(q15_t)0xA2C1, (q15_t)0x57B0, (q15_t)0xA27C, (q15_t)0x5767,\n\t(q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA1F4, (q15_t)0x56D4,\n\t(q15_t)0xA1AF, (q15_t)0x568A, (q15_t)0xA16C, (q15_t)0x5640,\n\t(q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA0E5, (q15_t)0x55AB,\n\t(q15_t)0xA0A1, (q15_t)0x5560, (q15_t)0xA05F, (q15_t)0x5515,\n\t(q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9FD9, (q15_t)0x547E,\n\t(q15_t)0x9F97, (q15_t)0x5433, (q15_t)0x9F55, (q15_t)0x53E7,\n\t(q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9ED2, (q15_t)0x534E,\n\t(q15_t)0x9E90, (q15_t)0x5302, (q15_t)0x9E4F, (q15_t)0x52B5,\n\t(q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9DCE, (q15_t)0x521C,\n\t(q15_t)0x9D8E, (q15_t)0x51CE, (q15_t)0x9D4D, (q15_t)0x5181,\n\t(q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9CCE, (q15_t)0x50E5,\n\t(q15_t)0x9C8E, (q15_t)0x5097, (q15_t)0x9C4F, (q15_t)0x5049,\n\t(q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9BD2, (q15_t)0x4FAC,\n\t(q15_t)0x9B93, (q15_t)0x4F5E, (q15_t)0x9B55, (q15_t)0x4F0F,\n\t(q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9AD9, (q15_t)0x4E70,\n\t(q15_t)0x9A9C, (q15_t)0x4E21, (q15_t)0x9A5F, (q15_t)0x4DD1,\n\t(q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x99E5, (q15_t)0x4D31,\n\t(q15_t)0x99A8, (q15_t)0x4CE1, (q15_t)0x996C, (q15_t)0x4C90,\n\t(q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x98F4, (q15_t)0x4BEF,\n\t(q15_t)0x98B9, (q15_t)0x4B9E, (q15_t)0x987D, (q15_t)0x4B4C,\n\t(q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x9808, (q15_t)0x4AA9,\n\t(q15_t)0x97CD, (q15_t)0x4A58, (q15_t)0x9793, (q15_t)0x4A06,\n\t(q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x971F, (q15_t)0x4961,\n\t(q15_t)0x96E6, (q15_t)0x490F, (q15_t)0x96AC, (q15_t)0x48BC,\n\t(q15_t)0x9673, (q15_t)0x4869, (q15_t)0x963B, (q15_t)0x4816,\n\t(q15_t)0x9602, (q15_t)0x47C3, (q15_t)0x95CA, (q15_t)0x4770,\n\t(q15_t)0x9592, (q15_t)0x471C, (q15_t)0x955A, (q15_t)0x46C9,\n\t(q15_t)0x9523, (q15_t)0x4675, (q15_t)0x94EC, (q15_t)0x4621,\n\t(q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x947E, (q15_t)0x4578,\n\t(q15_t)0x9447, (q15_t)0x4524, (q15_t)0x9411, (q15_t)0x44CF,\n\t(q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x93A6, (q15_t)0x4425,\n\t(q15_t)0x9370, (q15_t)0x43D0, (q15_t)0x933B, (q15_t)0x437B,\n\t(q15_t)0x9306, (q15_t)0x4325, (q15_t)0x92D2, (q15_t)0x42D0,\n\t(q15_t)0x929D, (q15_t)0x427A, (q15_t)0x9269, (q15_t)0x4224,\n\t(q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x9202, (q15_t)0x4177,\n\t(q15_t)0x91CF, (q15_t)0x4121, (q15_t)0x919C, (q15_t)0x40CA,\n\t(q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9136, (q15_t)0x401D,\n\t(q15_t)0x9104, (q15_t)0x3FC5, (q15_t)0x90D2, (q15_t)0x3F6E,\n\t(q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x906F, (q15_t)0x3EBF,\n\t(q15_t)0x903E, (q15_t)0x3E68, (q15_t)0x900D, (q15_t)0x3E10,\n\t(q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8FAC, (q15_t)0x3D60,\n\t(q15_t)0x8F7C, (q15_t)0x3D07, (q15_t)0x8F4C, (q15_t)0x3CAF,\n\t(q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8EED, (q15_t)0x3BFD,\n\t(q15_t)0x8EBE, (q15_t)0x3BA5, (q15_t)0x8E90, (q15_t)0x3B4C,\n\t(q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E33, (q15_t)0x3A99,\n\t(q15_t)0x8E05, (q15_t)0x3A40, (q15_t)0x8DD8, (q15_t)0x39E6,\n\t(q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D7D, (q15_t)0x3932,\n\t(q15_t)0x8D50, (q15_t)0x38D8, (q15_t)0x8D24, (q15_t)0x387E,\n\t(q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CCC, (q15_t)0x37CA,\n\t(q15_t)0x8CA0, (q15_t)0x376F, (q15_t)0x8C75, (q15_t)0x3714,\n\t(q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8C1F, (q15_t)0x365F,\n\t(q15_t)0x8BF4, (q15_t)0x3604, (q15_t)0x8BCA, (q15_t)0x35A8,\n\t(q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B76, (q15_t)0x34F2,\n\t(q15_t)0x8B4D, (q15_t)0x3496, (q15_t)0x8B24, (q15_t)0x343A,\n\t(q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AD2, (q15_t)0x3382,\n\t(q15_t)0x8AAA, (q15_t)0x3326, (q15_t)0x8A82, (q15_t)0x32CA,\n\t(q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A33, (q15_t)0x3211,\n\t(q15_t)0x8A0B, (q15_t)0x31B5, (q15_t)0x89E4, (q15_t)0x3158,\n\t(q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8997, (q15_t)0x309E,\n\t(q15_t)0x8971, (q15_t)0x3041, (q15_t)0x894C, (q15_t)0x2FE4,\n\t(q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x8901, (q15_t)0x2F29,\n\t(q15_t)0x88DC, (q15_t)0x2ECC, (q15_t)0x88B8, (q15_t)0x2E6E,\n\t(q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x886F, (q15_t)0x2DB3,\n\t(q15_t)0x884B, (q15_t)0x2D55, (q15_t)0x8828, (q15_t)0x2CF7,\n\t(q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87E2, (q15_t)0x2C3A,\n\t(q15_t)0x87BF, (q15_t)0x2BDC, (q15_t)0x879D, (q15_t)0x2B7D,\n\t(q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8759, (q15_t)0x2AC0,\n\t(q15_t)0x8738, (q15_t)0x2A61, (q15_t)0x8717, (q15_t)0x2A02,\n\t(q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86D5, (q15_t)0x2944,\n\t(q15_t)0x86B5, (q15_t)0x28E5, (q15_t)0x8695, (q15_t)0x2886,\n\t(q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8656, (q15_t)0x27C7,\n\t(q15_t)0x8637, (q15_t)0x2767, (q15_t)0x8618, (q15_t)0x2707,\n\t(q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85DB, (q15_t)0x2648,\n\t(q15_t)0x85BD, (q15_t)0x25E8, (q15_t)0x85A0, (q15_t)0x2588,\n\t(q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8565, (q15_t)0x24C7,\n\t(q15_t)0x8549, (q15_t)0x2467, (q15_t)0x852C, (q15_t)0x2407,\n\t(q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x84F4, (q15_t)0x2345,\n\t(q15_t)0x84D9, (q15_t)0x22E5, (q15_t)0x84BD, (q15_t)0x2284,\n\t(q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x8488, (q15_t)0x21C2,\n\t(q15_t)0x846D, (q15_t)0x2161, (q15_t)0x8453, (q15_t)0x2100,\n\t(q15_t)0x843A, (q15_t)0x209F, (q15_t)0x8420, (q15_t)0x203E,\n\t(q15_t)0x8407, (q15_t)0x1FDC, (q15_t)0x83EE, (q15_t)0x1F7B,\n\t(q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83BD, (q15_t)0x1EB8,\n\t(q15_t)0x83A5, (q15_t)0x1E56, (q15_t)0x838E, (q15_t)0x1DF5,\n\t(q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x835F, (q15_t)0x1D31,\n\t(q15_t)0x8348, (q15_t)0x1CCF, (q15_t)0x8332, (q15_t)0x1C6D,\n\t(q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x8306, (q15_t)0x1BA9,\n\t(q15_t)0x82F0, (q15_t)0x1B47, (q15_t)0x82DB, (q15_t)0x1AE4,\n\t(q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x82B1, (q15_t)0x1A20,\n\t(q15_t)0x829D, (q15_t)0x19BD, (q15_t)0x8289, (q15_t)0x195B,\n\t(q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8262, (q15_t)0x1896,\n\t(q15_t)0x824F, (q15_t)0x1833, (q15_t)0x823C, (q15_t)0x17D0,\n\t(q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8217, (q15_t)0x170A,\n\t(q15_t)0x8205, (q15_t)0x16A8, (q15_t)0x81F3, (q15_t)0x1645,\n\t(q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81D1, (q15_t)0x157F,\n\t(q15_t)0x81C0, (q15_t)0x151B, (q15_t)0x81B0, (q15_t)0x14B8,\n\t(q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8190, (q15_t)0x13F2,\n\t(q15_t)0x8180, (q15_t)0x138E, (q15_t)0x8171, (q15_t)0x132B,\n\t(q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x8154, (q15_t)0x1264,\n\t(q15_t)0x8145, (q15_t)0x1201, (q15_t)0x8137, (q15_t)0x119D,\n\t(q15_t)0x812A, (q15_t)0x1139, (q15_t)0x811C, (q15_t)0x10D6,\n\t(q15_t)0x810F, (q15_t)0x1072, (q15_t)0x8102, (q15_t)0x100E,\n\t(q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80EA, (q15_t)0x0F47,\n\t(q15_t)0x80DE, (q15_t)0x0EE3, (q15_t)0x80D2, (q15_t)0x0E7F,\n\t(q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80BC, (q15_t)0x0DB7,\n\t(q15_t)0x80B2, (q15_t)0x0D53, (q15_t)0x80A7, (q15_t)0x0CEF,\n\t(q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8094, (q15_t)0x0C27,\n\t(q15_t)0x808A, (q15_t)0x0BC3, (q15_t)0x8081, (q15_t)0x0B5F,\n\t(q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8070, (q15_t)0x0A97,\n\t(q15_t)0x8068, (q15_t)0x0A33, (q15_t)0x8060, (q15_t)0x09CE,\n\t(q15_t)0x8058, (q15_t)0x096A, (q15_t)0x8051, (q15_t)0x0906,\n\t(q15_t)0x804A, (q15_t)0x08A2, (q15_t)0x8043, (q15_t)0x083D,\n\t(q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x8037, (q15_t)0x0775,\n\t(q15_t)0x8031, (q15_t)0x0710, (q15_t)0x802C, (q15_t)0x06AC,\n\t(q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8022, (q15_t)0x05E3,\n\t(q15_t)0x801E, (q15_t)0x057F, (q15_t)0x801A, (q15_t)0x051A,\n\t(q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x8012, (q15_t)0x0451,\n\t(q15_t)0x800F, (q15_t)0x03ED, (q15_t)0x800C, (q15_t)0x0388,\n\t(q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8007, (q15_t)0x02BF,\n\t(q15_t)0x8005, (q15_t)0x025B, (q15_t)0x8003, (q15_t)0x01F6,\n\t(q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8001, (q15_t)0x012D,\n\t(q15_t)0x8000, (q15_t)0x00C9, (q15_t)0x8000, (q15_t)0x0064,\n\t(q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFF9B,\n\t(q15_t)0x8000, (q15_t)0xFF36, (q15_t)0x8001, (q15_t)0xFED2,\n\t(q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8003, (q15_t)0xFE09,\n\t(q15_t)0x8005, (q15_t)0xFDA4, (q15_t)0x8007, (q15_t)0xFD40,\n\t(q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800C, (q15_t)0xFC77,\n\t(q15_t)0x800F, (q15_t)0xFC12, (q15_t)0x8012, (q15_t)0xFBAE,\n\t(q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x801A, (q15_t)0xFAE5,\n\t(q15_t)0x801E, (q15_t)0xFA80, (q15_t)0x8022, (q15_t)0xFA1C,\n\t(q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x802C, (q15_t)0xF953,\n\t(q15_t)0x8031, (q15_t)0xF8EF, (q15_t)0x8037, (q15_t)0xF88A,\n\t(q15_t)0x803D, (q15_t)0xF826, (q15_t)0x8043, (q15_t)0xF7C2,\n\t(q15_t)0x804A, (q15_t)0xF75D, (q15_t)0x8051, (q15_t)0xF6F9,\n\t(q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8060, (q15_t)0xF631,\n\t(q15_t)0x8068, (q15_t)0xF5CC, (q15_t)0x8070, (q15_t)0xF568,\n\t(q15_t)0x8078, (q15_t)0xF504, (q15_t)0x8081, (q15_t)0xF4A0,\n\t(q15_t)0x808A, (q15_t)0xF43C, (q15_t)0x8094, (q15_t)0xF3D8,\n\t(q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80A7, (q15_t)0xF310,\n\t(q15_t)0x80B2, (q15_t)0xF2AC, (q15_t)0x80BC, (q15_t)0xF248,\n\t(q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80D2, (q15_t)0xF180,\n\t(q15_t)0x80DE, (q15_t)0xF11C, (q15_t)0x80EA, (q15_t)0xF0B8,\n\t(q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x8102, (q15_t)0xEFF1,\n\t(q15_t)0x810F, (q15_t)0xEF8D, (q15_t)0x811C, (q15_t)0xEF29,\n\t(q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8137, (q15_t)0xEE62,\n\t(q15_t)0x8145, (q15_t)0xEDFE, (q15_t)0x8154, (q15_t)0xED9B,\n\t(q15_t)0x8162, (q15_t)0xED37, (q15_t)0x8171, (q15_t)0xECD4,\n\t(q15_t)0x8180, (q15_t)0xEC71, (q15_t)0x8190, (q15_t)0xEC0D,\n\t(q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81B0, (q15_t)0xEB47,\n\t(q15_t)0x81C0, (q15_t)0xEAE4, (q15_t)0x81D1, (q15_t)0xEA80,\n\t(q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x81F3, (q15_t)0xE9BA,\n\t(q15_t)0x8205, (q15_t)0xE957, (q15_t)0x8217, (q15_t)0xE8F5,\n\t(q15_t)0x8229, (q15_t)0xE892, (q15_t)0x823C, (q15_t)0xE82F,\n\t(q15_t)0x824F, (q15_t)0xE7CC, (q15_t)0x8262, (q15_t)0xE769,\n\t(q15_t)0x8275, (q15_t)0xE707, (q15_t)0x8289, (q15_t)0xE6A4,\n\t(q15_t)0x829D, (q15_t)0xE642, (q15_t)0x82B1, (q15_t)0xE5DF,\n\t(q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82DB, (q15_t)0xE51B,\n\t(q15_t)0x82F0, (q15_t)0xE4B8, (q15_t)0x8306, (q15_t)0xE456,\n\t(q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8332, (q15_t)0xE392,\n\t(q15_t)0x8348, (q15_t)0xE330, (q15_t)0x835F, (q15_t)0xE2CE,\n\t(q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x838E, (q15_t)0xE20A,\n\t(q15_t)0x83A5, (q15_t)0xE1A9, (q15_t)0x83BD, (q15_t)0xE147,\n\t(q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x83EE, (q15_t)0xE084,\n\t(q15_t)0x8407, (q15_t)0xE023, (q15_t)0x8420, (q15_t)0xDFC1,\n\t(q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x8453, (q15_t)0xDEFF,\n\t(q15_t)0x846D, (q15_t)0xDE9E, (q15_t)0x8488, (q15_t)0xDE3D,\n\t(q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84BD, (q15_t)0xDD7B,\n\t(q15_t)0x84D9, (q15_t)0xDD1A, (q15_t)0x84F4, (q15_t)0xDCBA,\n\t(q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x852C, (q15_t)0xDBF8,\n\t(q15_t)0x8549, (q15_t)0xDB98, (q15_t)0x8565, (q15_t)0xDB38,\n\t(q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85A0, (q15_t)0xDA77,\n\t(q15_t)0x85BD, (q15_t)0xDA17, (q15_t)0x85DB, (q15_t)0xD9B7,\n\t(q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8618, (q15_t)0xD8F8,\n\t(q15_t)0x8637, (q15_t)0xD898, (q15_t)0x8656, (q15_t)0xD838,\n\t(q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x8695, (q15_t)0xD779,\n\t(q15_t)0x86B5, (q15_t)0xD71A, (q15_t)0x86D5, (q15_t)0xD6BB,\n\t(q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8717, (q15_t)0xD5FD,\n\t(q15_t)0x8738, (q15_t)0xD59E, (q15_t)0x8759, (q15_t)0xD53F,\n\t(q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x879D, (q15_t)0xD482,\n\t(q15_t)0x87BF, (q15_t)0xD423, (q15_t)0x87E2, (q15_t)0xD3C5,\n\t(q15_t)0x8805, (q15_t)0xD367, (q15_t)0x8828, (q15_t)0xD308,\n\t(q15_t)0x884B, (q15_t)0xD2AA, (q15_t)0x886F, (q15_t)0xD24C,\n\t(q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88B8, (q15_t)0xD191,\n\t(q15_t)0x88DC, (q15_t)0xD133, (q15_t)0x8901, (q15_t)0xD0D6,\n\t(q15_t)0x8926, (q15_t)0xD078, (q15_t)0x894C, (q15_t)0xD01B,\n\t(q15_t)0x8971, (q15_t)0xCFBE, (q15_t)0x8997, (q15_t)0xCF61,\n\t(q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x89E4, (q15_t)0xCEA7,\n\t(q15_t)0x8A0B, (q15_t)0xCE4A, (q15_t)0x8A33, (q15_t)0xCDEE,\n\t(q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8A82, (q15_t)0xCD35,\n\t(q15_t)0x8AAA, (q15_t)0xCCD9, (q15_t)0x8AD2, (q15_t)0xCC7D,\n\t(q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B24, (q15_t)0xCBC5,\n\t(q15_t)0x8B4D, (q15_t)0xCB69, (q15_t)0x8B76, (q15_t)0xCB0D,\n\t(q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BCA, (q15_t)0xCA57,\n\t(q15_t)0x8BF4, (q15_t)0xC9FB, (q15_t)0x8C1F, (q15_t)0xC9A0,\n\t(q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8C75, (q15_t)0xC8EB,\n\t(q15_t)0x8CA0, (q15_t)0xC890, (q15_t)0x8CCC, (q15_t)0xC835,\n\t(q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D24, (q15_t)0xC781,\n\t(q15_t)0x8D50, (q15_t)0xC727, (q15_t)0x8D7D, (q15_t)0xC6CD,\n\t(q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8DD8, (q15_t)0xC619,\n\t(q15_t)0x8E05, (q15_t)0xC5BF, (q15_t)0x8E33, (q15_t)0xC566,\n\t(q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8E90, (q15_t)0xC4B3,\n\t(q15_t)0x8EBE, (q15_t)0xC45A, (q15_t)0x8EED, (q15_t)0xC402,\n\t(q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F4C, (q15_t)0xC350,\n\t(q15_t)0x8F7C, (q15_t)0xC2F8, (q15_t)0x8FAC, (q15_t)0xC29F,\n\t(q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x900D, (q15_t)0xC1EF,\n\t(q15_t)0x903E, (q15_t)0xC197, (q15_t)0x906F, (q15_t)0xC140,\n\t(q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x90D2, (q15_t)0xC091,\n\t(q15_t)0x9104, (q15_t)0xC03A, (q15_t)0x9136, (q15_t)0xBFE2,\n\t(q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x919C, (q15_t)0xBF35,\n\t(q15_t)0x91CF, (q15_t)0xBEDE, (q15_t)0x9202, (q15_t)0xBE88,\n\t(q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x9269, (q15_t)0xBDDB,\n\t(q15_t)0x929D, (q15_t)0xBD85, (q15_t)0x92D2, (q15_t)0xBD2F,\n\t(q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x933B, (q15_t)0xBC84,\n\t(q15_t)0x9370, (q15_t)0xBC2F, (q15_t)0x93A6, (q15_t)0xBBDA,\n\t(q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x9411, (q15_t)0xBB30,\n\t(q15_t)0x9447, (q15_t)0xBADB, (q15_t)0x947E, (q15_t)0xBA87,\n\t(q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x94EC, (q15_t)0xB9DE,\n\t(q15_t)0x9523, (q15_t)0xB98A, (q15_t)0x955A, (q15_t)0xB936,\n\t(q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x95CA, (q15_t)0xB88F,\n\t(q15_t)0x9602, (q15_t)0xB83C, (q15_t)0x963B, (q15_t)0xB7E9,\n\t(q15_t)0x9673, (q15_t)0xB796, (q15_t)0x96AC, (q15_t)0xB743,\n\t(q15_t)0x96E6, (q15_t)0xB6F0, (q15_t)0x971F, (q15_t)0xB69E,\n\t(q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9793, (q15_t)0xB5F9,\n\t(q15_t)0x97CD, (q15_t)0xB5A7, (q15_t)0x9808, (q15_t)0xB556,\n\t(q15_t)0x9842, (q15_t)0xB504, (q15_t)0x987D, (q15_t)0xB4B3,\n\t(q15_t)0x98B9, (q15_t)0xB461, (q15_t)0x98F4, (q15_t)0xB410,\n\t(q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x996C, (q15_t)0xB36F,\n\t(q15_t)0x99A8, (q15_t)0xB31E, (q15_t)0x99E5, (q15_t)0xB2CE,\n\t(q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A5F, (q15_t)0xB22E,\n\t(q15_t)0x9A9C, (q15_t)0xB1DE, (q15_t)0x9AD9, (q15_t)0xB18F,\n\t(q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B55, (q15_t)0xB0F0,\n\t(q15_t)0x9B93, (q15_t)0xB0A1, (q15_t)0x9BD2, (q15_t)0xB053,\n\t(q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C4F, (q15_t)0xAFB6,\n\t(q15_t)0x9C8E, (q15_t)0xAF68, (q15_t)0x9CCE, (q15_t)0xAF1A,\n\t(q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D4D, (q15_t)0xAE7E,\n\t(q15_t)0x9D8E, (q15_t)0xAE31, (q15_t)0x9DCE, (q15_t)0xADE3,\n\t(q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E4F, (q15_t)0xAD4A,\n\t(q15_t)0x9E90, (q15_t)0xACFD, (q15_t)0x9ED2, (q15_t)0xACB1,\n\t(q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F55, (q15_t)0xAC18,\n\t(q15_t)0x9F97, (q15_t)0xABCC, (q15_t)0x9FD9, (q15_t)0xAB81,\n\t(q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA05F, (q15_t)0xAAEA,\n\t(q15_t)0xA0A1, (q15_t)0xAA9F, (q15_t)0xA0E5, (q15_t)0xAA54,\n\t(q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA16C, (q15_t)0xA9BF,\n\t(q15_t)0xA1AF, (q15_t)0xA975, (q15_t)0xA1F4, (q15_t)0xA92B,\n\t(q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA27C, (q15_t)0xA898,\n\t(q15_t)0xA2C1, (q15_t)0xA84F, (q15_t)0xA306, (q15_t)0xA806,\n\t(q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA391, (q15_t)0xA774,\n\t(q15_t)0xA3D6, (q15_t)0xA72B, (q15_t)0xA41C, (q15_t)0xA6E3,\n\t(q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA4A9, (q15_t)0xA653,\n\t(q15_t)0xA4EF, (q15_t)0xA60C, (q15_t)0xA536, (q15_t)0xA5C4,\n\t(q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA5C4, (q15_t)0xA536,\n\t(q15_t)0xA60C, (q15_t)0xA4EF, (q15_t)0xA653, (q15_t)0xA4A9,\n\t(q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA6E3, (q15_t)0xA41C,\n\t(q15_t)0xA72B, (q15_t)0xA3D6, (q15_t)0xA774, (q15_t)0xA391,\n\t(q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA806, (q15_t)0xA306,\n\t(q15_t)0xA84F, (q15_t)0xA2C1, (q15_t)0xA898, (q15_t)0xA27C,\n\t(q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA92B, (q15_t)0xA1F4,\n\t(q15_t)0xA975, (q15_t)0xA1AF, (q15_t)0xA9BF, (q15_t)0xA16C,\n\t(q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA54, (q15_t)0xA0E5,\n\t(q15_t)0xAA9F, (q15_t)0xA0A1, (q15_t)0xAAEA, (q15_t)0xA05F,\n\t(q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xAB81, (q15_t)0x9FD9,\n\t(q15_t)0xABCC, (q15_t)0x9F97, (q15_t)0xAC18, (q15_t)0x9F55,\n\t(q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xACB1, (q15_t)0x9ED2,\n\t(q15_t)0xACFD, (q15_t)0x9E90, (q15_t)0xAD4A, (q15_t)0x9E4F,\n\t(q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xADE3, (q15_t)0x9DCE,\n\t(q15_t)0xAE31, (q15_t)0x9D8E, (q15_t)0xAE7E, (q15_t)0x9D4D,\n\t(q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAF1A, (q15_t)0x9CCE,\n\t(q15_t)0xAF68, (q15_t)0x9C8E, (q15_t)0xAFB6, (q15_t)0x9C4F,\n\t(q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB053, (q15_t)0x9BD2,\n\t(q15_t)0xB0A1, (q15_t)0x9B93, (q15_t)0xB0F0, (q15_t)0x9B55,\n\t(q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB18F, (q15_t)0x9AD9,\n\t(q15_t)0xB1DE, (q15_t)0x9A9C, (q15_t)0xB22E, (q15_t)0x9A5F,\n\t(q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB2CE, (q15_t)0x99E5,\n\t(q15_t)0xB31E, (q15_t)0x99A8, (q15_t)0xB36F, (q15_t)0x996C,\n\t(q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB410, (q15_t)0x98F4,\n\t(q15_t)0xB461, (q15_t)0x98B9, (q15_t)0xB4B3, (q15_t)0x987D,\n\t(q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB556, (q15_t)0x9808,\n\t(q15_t)0xB5A7, (q15_t)0x97CD, (q15_t)0xB5F9, (q15_t)0x9793,\n\t(q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB69E, (q15_t)0x971F,\n\t(q15_t)0xB6F0, (q15_t)0x96E6, (q15_t)0xB743, (q15_t)0x96AC,\n\t(q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB7E9, (q15_t)0x963B,\n\t(q15_t)0xB83C, (q15_t)0x9602, (q15_t)0xB88F, (q15_t)0x95CA,\n\t(q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB936, (q15_t)0x955A,\n\t(q15_t)0xB98A, (q15_t)0x9523, (q15_t)0xB9DE, (q15_t)0x94EC,\n\t(q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBA87, (q15_t)0x947E,\n\t(q15_t)0xBADB, (q15_t)0x9447, (q15_t)0xBB30, (q15_t)0x9411,\n\t(q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBBDA, (q15_t)0x93A6,\n\t(q15_t)0xBC2F, (q15_t)0x9370, (q15_t)0xBC84, (q15_t)0x933B,\n\t(q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD2F, (q15_t)0x92D2,\n\t(q15_t)0xBD85, (q15_t)0x929D, (q15_t)0xBDDB, (q15_t)0x9269,\n\t(q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBE88, (q15_t)0x9202,\n\t(q15_t)0xBEDE, (q15_t)0x91CF, (q15_t)0xBF35, (q15_t)0x919C,\n\t(q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xBFE2, (q15_t)0x9136,\n\t(q15_t)0xC03A, (q15_t)0x9104, (q15_t)0xC091, (q15_t)0x90D2,\n\t(q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC140, (q15_t)0x906F,\n\t(q15_t)0xC197, (q15_t)0x903E, (q15_t)0xC1EF, (q15_t)0x900D,\n\t(q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC29F, (q15_t)0x8FAC,\n\t(q15_t)0xC2F8, (q15_t)0x8F7C, (q15_t)0xC350, (q15_t)0x8F4C,\n\t(q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC402, (q15_t)0x8EED,\n\t(q15_t)0xC45A, (q15_t)0x8EBE, (q15_t)0xC4B3, (q15_t)0x8E90,\n\t(q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC566, (q15_t)0x8E33,\n\t(q15_t)0xC5BF, (q15_t)0x8E05, (q15_t)0xC619, (q15_t)0x8DD8,\n\t(q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC6CD, (q15_t)0x8D7D,\n\t(q15_t)0xC727, (q15_t)0x8D50, (q15_t)0xC781, (q15_t)0x8D24,\n\t(q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC835, (q15_t)0x8CCC,\n\t(q15_t)0xC890, (q15_t)0x8CA0, (q15_t)0xC8EB, (q15_t)0x8C75,\n\t(q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC9A0, (q15_t)0x8C1F,\n\t(q15_t)0xC9FB, (q15_t)0x8BF4, (q15_t)0xCA57, (q15_t)0x8BCA,\n\t(q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCB0D, (q15_t)0x8B76,\n\t(q15_t)0xCB69, (q15_t)0x8B4D, (q15_t)0xCBC5, (q15_t)0x8B24,\n\t(q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCC7D, (q15_t)0x8AD2,\n\t(q15_t)0xCCD9, (q15_t)0x8AAA, (q15_t)0xCD35, (q15_t)0x8A82,\n\t(q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCDEE, (q15_t)0x8A33,\n\t(q15_t)0xCE4A, (q15_t)0x8A0B, (q15_t)0xCEA7, (q15_t)0x89E4,\n\t(q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCF61, (q15_t)0x8997,\n\t(q15_t)0xCFBE, (q15_t)0x8971, (q15_t)0xD01B, (q15_t)0x894C,\n\t(q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD0D6, (q15_t)0x8901,\n\t(q15_t)0xD133, (q15_t)0x88DC, (q15_t)0xD191, (q15_t)0x88B8,\n\t(q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD24C, (q15_t)0x886F,\n\t(q15_t)0xD2AA, (q15_t)0x884B, (q15_t)0xD308, (q15_t)0x8828,\n\t(q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD3C5, (q15_t)0x87E2,\n\t(q15_t)0xD423, (q15_t)0x87BF, (q15_t)0xD482, (q15_t)0x879D,\n\t(q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD53F, (q15_t)0x8759,\n\t(q15_t)0xD59E, (q15_t)0x8738, (q15_t)0xD5FD, (q15_t)0x8717,\n\t(q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD6BB, (q15_t)0x86D5,\n\t(q15_t)0xD71A, (q15_t)0x86B5, (q15_t)0xD779, (q15_t)0x8695,\n\t(q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD838, (q15_t)0x8656,\n\t(q15_t)0xD898, (q15_t)0x8637, (q15_t)0xD8F8, (q15_t)0x8618,\n\t(q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xD9B7, (q15_t)0x85DB,\n\t(q15_t)0xDA17, (q15_t)0x85BD, (q15_t)0xDA77, (q15_t)0x85A0,\n\t(q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB38, (q15_t)0x8565,\n\t(q15_t)0xDB98, (q15_t)0x8549, (q15_t)0xDBF8, (q15_t)0x852C,\n\t(q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDCBA, (q15_t)0x84F4,\n\t(q15_t)0xDD1A, (q15_t)0x84D9, (q15_t)0xDD7B, (q15_t)0x84BD,\n\t(q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE3D, (q15_t)0x8488,\n\t(q15_t)0xDE9E, (q15_t)0x846D, (q15_t)0xDEFF, (q15_t)0x8453,\n\t(q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xDFC1, (q15_t)0x8420,\n\t(q15_t)0xE023, (q15_t)0x8407, (q15_t)0xE084, (q15_t)0x83EE,\n\t(q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE147, (q15_t)0x83BD,\n\t(q15_t)0xE1A9, (q15_t)0x83A5, (q15_t)0xE20A, (q15_t)0x838E,\n\t(q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE2CE, (q15_t)0x835F,\n\t(q15_t)0xE330, (q15_t)0x8348, (q15_t)0xE392, (q15_t)0x8332,\n\t(q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE456, (q15_t)0x8306,\n\t(q15_t)0xE4B8, (q15_t)0x82F0, (q15_t)0xE51B, (q15_t)0x82DB,\n\t(q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE5DF, (q15_t)0x82B1,\n\t(q15_t)0xE642, (q15_t)0x829D, (q15_t)0xE6A4, (q15_t)0x8289,\n\t(q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE769, (q15_t)0x8262,\n\t(q15_t)0xE7CC, (q15_t)0x824F, (q15_t)0xE82F, (q15_t)0x823C,\n\t(q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE8F5, (q15_t)0x8217,\n\t(q15_t)0xE957, (q15_t)0x8205, (q15_t)0xE9BA, (q15_t)0x81F3,\n\t(q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEA80, (q15_t)0x81D1,\n\t(q15_t)0xEAE4, (q15_t)0x81C0, (q15_t)0xEB47, (q15_t)0x81B0,\n\t(q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEC0D, (q15_t)0x8190,\n\t(q15_t)0xEC71, (q15_t)0x8180, (q15_t)0xECD4, (q15_t)0x8171,\n\t(q15_t)0xED37, (q15_t)0x8162, (q15_t)0xED9B, (q15_t)0x8154,\n\t(q15_t)0xEDFE, (q15_t)0x8145, (q15_t)0xEE62, (q15_t)0x8137,\n\t(q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEF29, (q15_t)0x811C,\n\t(q15_t)0xEF8D, (q15_t)0x810F, (q15_t)0xEFF1, (q15_t)0x8102,\n\t(q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF0B8, (q15_t)0x80EA,\n\t(q15_t)0xF11C, (q15_t)0x80DE, (q15_t)0xF180, (q15_t)0x80D2,\n\t(q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF248, (q15_t)0x80BC,\n\t(q15_t)0xF2AC, (q15_t)0x80B2, (q15_t)0xF310, (q15_t)0x80A7,\n\t(q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF3D8, (q15_t)0x8094,\n\t(q15_t)0xF43C, (q15_t)0x808A, (q15_t)0xF4A0, (q15_t)0x8081,\n\t(q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF568, (q15_t)0x8070,\n\t(q15_t)0xF5CC, (q15_t)0x8068, (q15_t)0xF631, (q15_t)0x8060,\n\t(q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF6F9, (q15_t)0x8051,\n\t(q15_t)0xF75D, (q15_t)0x804A, (q15_t)0xF7C2, (q15_t)0x8043,\n\t(q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF88A, (q15_t)0x8037,\n\t(q15_t)0xF8EF, (q15_t)0x8031, (q15_t)0xF953, (q15_t)0x802C,\n\t(q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFA1C, (q15_t)0x8022,\n\t(q15_t)0xFA80, (q15_t)0x801E, (q15_t)0xFAE5, (q15_t)0x801A,\n\t(q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFBAE, (q15_t)0x8012,\n\t(q15_t)0xFC12, (q15_t)0x800F, (q15_t)0xFC77, (q15_t)0x800C,\n\t(q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFD40, (q15_t)0x8007,\n\t(q15_t)0xFDA4, (q15_t)0x8005, (q15_t)0xFE09, (q15_t)0x8003,\n\t(q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFED2, (q15_t)0x8001,\n\t(q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF9B, (q15_t)0x8000\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_4096)\n/**\n  @par\n  Example code for q15 Twiddle factors Generation::\n  @par\n  <pre>for (i = 0; i< 3N/4; i++)\n  {\n     twiddleCoefq15[2*i]   = cos(i * 2*PI/(float)N);\n     twiddleCoefq15[2*i+1] = sin(i * 2*PI/(float)N);\n  } </pre>\n  @par\n  where N = 4096, PI = 3.14159265358979\n  @par\n  Cos and Sin values are interleaved fashion\n  @par\n  Convert Floating point to q15(Fixed point 1.15):\n \tround(twiddleCoefq15(i) * pow(2, 15))\n */\nconst q15_t twiddleCoef_4096_q15[6144] =\n{\n\t(q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x0032,\n\t(q15_t)0x7FFF, (q15_t)0x0064, (q15_t)0x7FFF, (q15_t)0x0096,\n\t(q15_t)0x7FFF, (q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x00FB,\n\t(q15_t)0x7FFE, (q15_t)0x012D, (q15_t)0x7FFE, (q15_t)0x015F,\n\t(q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFC, (q15_t)0x01C4,\n\t(q15_t)0x7FFC, (q15_t)0x01F6, (q15_t)0x7FFB, (q15_t)0x0228,\n\t(q15_t)0x7FFA, (q15_t)0x025B, (q15_t)0x7FF9, (q15_t)0x028D,\n\t(q15_t)0x7FF8, (q15_t)0x02BF, (q15_t)0x7FF7, (q15_t)0x02F1,\n\t(q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF4, (q15_t)0x0356,\n\t(q15_t)0x7FF3, (q15_t)0x0388, (q15_t)0x7FF2, (q15_t)0x03BA,\n\t(q15_t)0x7FF0, (q15_t)0x03ED, (q15_t)0x7FEE, (q15_t)0x041F,\n\t(q15_t)0x7FED, (q15_t)0x0451, (q15_t)0x7FEB, (q15_t)0x0483,\n\t(q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE7, (q15_t)0x04E8,\n\t(q15_t)0x7FE5, (q15_t)0x051A, (q15_t)0x7FE3, (q15_t)0x054C,\n\t(q15_t)0x7FE1, (q15_t)0x057F, (q15_t)0x7FDF, (q15_t)0x05B1,\n\t(q15_t)0x7FDD, (q15_t)0x05E3, (q15_t)0x7FDA, (q15_t)0x0615,\n\t(q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FD6, (q15_t)0x067A,\n\t(q15_t)0x7FD3, (q15_t)0x06AC, (q15_t)0x7FD0, (q15_t)0x06DE,\n\t(q15_t)0x7FCE, (q15_t)0x0710, (q15_t)0x7FCB, (q15_t)0x0742,\n\t(q15_t)0x7FC8, (q15_t)0x0775, (q15_t)0x7FC5, (q15_t)0x07A7,\n\t(q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FBF, (q15_t)0x080B,\n\t(q15_t)0x7FBC, (q15_t)0x083D, (q15_t)0x7FB8, (q15_t)0x086F,\n\t(q15_t)0x7FB5, (q15_t)0x08A2, (q15_t)0x7FB1, (q15_t)0x08D4,\n\t(q15_t)0x7FAE, (q15_t)0x0906, (q15_t)0x7FAA, (q15_t)0x0938,\n\t(q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7FA3, (q15_t)0x099C,\n\t(q15_t)0x7F9F, (q15_t)0x09CE, (q15_t)0x7F9B, (q15_t)0x0A00,\n\t(q15_t)0x7F97, (q15_t)0x0A33, (q15_t)0x7F93, (q15_t)0x0A65,\n\t(q15_t)0x7F8F, (q15_t)0x0A97, (q15_t)0x7F8B, (q15_t)0x0AC9,\n\t(q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F82, (q15_t)0x0B2D,\n\t(q15_t)0x7F7E, (q15_t)0x0B5F, (q15_t)0x7F79, (q15_t)0x0B91,\n\t(q15_t)0x7F75, (q15_t)0x0BC3, (q15_t)0x7F70, (q15_t)0x0BF5,\n\t(q15_t)0x7F6B, (q15_t)0x0C27, (q15_t)0x7F67, (q15_t)0x0C59,\n\t(q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F5D, (q15_t)0x0CBD,\n\t(q15_t)0x7F58, (q15_t)0x0CEF, (q15_t)0x7F53, (q15_t)0x0D21,\n\t(q15_t)0x7F4D, (q15_t)0x0D53, (q15_t)0x7F48, (q15_t)0x0D85,\n\t(q15_t)0x7F43, (q15_t)0x0DB7, (q15_t)0x7F3D, (q15_t)0x0DE9,\n\t(q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F32, (q15_t)0x0E4D,\n\t(q15_t)0x7F2D, (q15_t)0x0E7F, (q15_t)0x7F27, (q15_t)0x0EB1,\n\t(q15_t)0x7F21, (q15_t)0x0EE3, (q15_t)0x7F1B, (q15_t)0x0F15,\n\t(q15_t)0x7F15, (q15_t)0x0F47, (q15_t)0x7F0F, (q15_t)0x0F79,\n\t(q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7F03, (q15_t)0x0FDD,\n\t(q15_t)0x7EFD, (q15_t)0x100E, (q15_t)0x7EF6, (q15_t)0x1040,\n\t(q15_t)0x7EF0, (q15_t)0x1072, (q15_t)0x7EE9, (q15_t)0x10A4,\n\t(q15_t)0x7EE3, (q15_t)0x10D6, (q15_t)0x7EDC, (q15_t)0x1108,\n\t(q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7ECF, (q15_t)0x116B,\n\t(q15_t)0x7EC8, (q15_t)0x119D, (q15_t)0x7EC1, (q15_t)0x11CF,\n\t(q15_t)0x7EBA, (q15_t)0x1201, (q15_t)0x7EB3, (q15_t)0x1232,\n\t(q15_t)0x7EAB, (q15_t)0x1264, (q15_t)0x7EA4, (q15_t)0x1296,\n\t(q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E95, (q15_t)0x12F9,\n\t(q15_t)0x7E8E, (q15_t)0x132B, (q15_t)0x7E86, (q15_t)0x135D,\n\t(q15_t)0x7E7F, (q15_t)0x138E, (q15_t)0x7E77, (q15_t)0x13C0,\n\t(q15_t)0x7E6F, (q15_t)0x13F2, (q15_t)0x7E67, (q15_t)0x1423,\n\t(q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E57, (q15_t)0x1487,\n\t(q15_t)0x7E4F, (q15_t)0x14B8, (q15_t)0x7E47, (q15_t)0x14EA,\n\t(q15_t)0x7E3F, (q15_t)0x151B, (q15_t)0x7E37, (q15_t)0x154D,\n\t(q15_t)0x7E2E, (q15_t)0x157F, (q15_t)0x7E26, (q15_t)0x15B0,\n\t(q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7E14, (q15_t)0x1613,\n\t(q15_t)0x7E0C, (q15_t)0x1645, (q15_t)0x7E03, (q15_t)0x1676,\n\t(q15_t)0x7DFA, (q15_t)0x16A8, (q15_t)0x7DF1, (q15_t)0x16D9,\n\t(q15_t)0x7DE8, (q15_t)0x170A, (q15_t)0x7DDF, (q15_t)0x173C,\n\t(q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DCD, (q15_t)0x179F,\n\t(q15_t)0x7DC3, (q15_t)0x17D0, (q15_t)0x7DBA, (q15_t)0x1802,\n\t(q15_t)0x7DB0, (q15_t)0x1833, (q15_t)0x7DA7, (q15_t)0x1864,\n\t(q15_t)0x7D9D, (q15_t)0x1896, (q15_t)0x7D94, (q15_t)0x18C7,\n\t(q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D80, (q15_t)0x192A,\n\t(q15_t)0x7D76, (q15_t)0x195B, (q15_t)0x7D6C, (q15_t)0x198C,\n\t(q15_t)0x7D62, (q15_t)0x19BD, (q15_t)0x7D58, (q15_t)0x19EF,\n\t(q15_t)0x7D4E, (q15_t)0x1A20, (q15_t)0x7D43, (q15_t)0x1A51,\n\t(q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D2F, (q15_t)0x1AB3,\n\t(q15_t)0x7D24, (q15_t)0x1AE4, (q15_t)0x7D19, (q15_t)0x1B16,\n\t(q15_t)0x7D0F, (q15_t)0x1B47, (q15_t)0x7D04, (q15_t)0x1B78,\n\t(q15_t)0x7CF9, (q15_t)0x1BA9, (q15_t)0x7CEE, (q15_t)0x1BDA,\n\t(q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CD8, (q15_t)0x1C3C,\n\t(q15_t)0x7CCD, (q15_t)0x1C6D, (q15_t)0x7CC2, (q15_t)0x1C9E,\n\t(q15_t)0x7CB7, (q15_t)0x1CCF, (q15_t)0x7CAB, (q15_t)0x1D00,\n\t(q15_t)0x7CA0, (q15_t)0x1D31, (q15_t)0x7C94, (q15_t)0x1D62,\n\t(q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C7D, (q15_t)0x1DC4,\n\t(q15_t)0x7C71, (q15_t)0x1DF5, (q15_t)0x7C66, (q15_t)0x1E25,\n\t(q15_t)0x7C5A, (q15_t)0x1E56, (q15_t)0x7C4E, (q15_t)0x1E87,\n\t(q15_t)0x7C42, (q15_t)0x1EB8, (q15_t)0x7C36, (q15_t)0x1EE9,\n\t(q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7C1D, (q15_t)0x1F4A,\n\t(q15_t)0x7C11, (q15_t)0x1F7B, (q15_t)0x7C05, (q15_t)0x1FAC,\n\t(q15_t)0x7BF8, (q15_t)0x1FDC, (q15_t)0x7BEB, (q15_t)0x200D,\n\t(q15_t)0x7BDF, (q15_t)0x203E, (q15_t)0x7BD2, (q15_t)0x206E,\n\t(q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7BB9, (q15_t)0x20D0,\n\t(q15_t)0x7BAC, (q15_t)0x2100, (q15_t)0x7B9F, (q15_t)0x2131,\n\t(q15_t)0x7B92, (q15_t)0x2161, (q15_t)0x7B84, (q15_t)0x2192,\n\t(q15_t)0x7B77, (q15_t)0x21C2, (q15_t)0x7B6A, (q15_t)0x21F3,\n\t(q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B4F, (q15_t)0x2254,\n\t(q15_t)0x7B42, (q15_t)0x2284, (q15_t)0x7B34, (q15_t)0x22B4,\n\t(q15_t)0x7B26, (q15_t)0x22E5, (q15_t)0x7B19, (q15_t)0x2315,\n\t(q15_t)0x7B0B, (q15_t)0x2345, (q15_t)0x7AFD, (q15_t)0x2376,\n\t(q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AE1, (q15_t)0x23D6,\n\t(q15_t)0x7AD3, (q15_t)0x2407, (q15_t)0x7AC5, (q15_t)0x2437,\n\t(q15_t)0x7AB6, (q15_t)0x2467, (q15_t)0x7AA8, (q15_t)0x2497,\n\t(q15_t)0x7A9A, (q15_t)0x24C7, (q15_t)0x7A8B, (q15_t)0x24F7,\n\t(q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A6E, (q15_t)0x2558,\n\t(q15_t)0x7A5F, (q15_t)0x2588, (q15_t)0x7A50, (q15_t)0x25B8,\n\t(q15_t)0x7A42, (q15_t)0x25E8, (q15_t)0x7A33, (q15_t)0x2618,\n\t(q15_t)0x7A24, (q15_t)0x2648, (q15_t)0x7A15, (q15_t)0x2678,\n\t(q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79F6, (q15_t)0x26D8,\n\t(q15_t)0x79E7, (q15_t)0x2707, (q15_t)0x79D8, (q15_t)0x2737,\n\t(q15_t)0x79C8, (q15_t)0x2767, (q15_t)0x79B9, (q15_t)0x2797,\n\t(q15_t)0x79A9, (q15_t)0x27C7, (q15_t)0x7999, (q15_t)0x27F6,\n\t(q15_t)0x798A, (q15_t)0x2826, (q15_t)0x797A, (q15_t)0x2856,\n\t(q15_t)0x796A, (q15_t)0x2886, (q15_t)0x795A, (q15_t)0x28B5,\n\t(q15_t)0x794A, (q15_t)0x28E5, (q15_t)0x793A, (q15_t)0x2915,\n\t(q15_t)0x792A, (q15_t)0x2944, (q15_t)0x7919, (q15_t)0x2974,\n\t(q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78F9, (q15_t)0x29D3,\n\t(q15_t)0x78E8, (q15_t)0x2A02, (q15_t)0x78D8, (q15_t)0x2A32,\n\t(q15_t)0x78C7, (q15_t)0x2A61, (q15_t)0x78B6, (q15_t)0x2A91,\n\t(q15_t)0x78A6, (q15_t)0x2AC0, (q15_t)0x7895, (q15_t)0x2AEF,\n\t(q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7873, (q15_t)0x2B4E,\n\t(q15_t)0x7862, (q15_t)0x2B7D, (q15_t)0x7851, (q15_t)0x2BAD,\n\t(q15_t)0x7840, (q15_t)0x2BDC, (q15_t)0x782E, (q15_t)0x2C0B,\n\t(q15_t)0x781D, (q15_t)0x2C3A, (q15_t)0x780C, (q15_t)0x2C69,\n\t(q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77E9, (q15_t)0x2CC8,\n\t(q15_t)0x77D7, (q15_t)0x2CF7, (q15_t)0x77C5, (q15_t)0x2D26,\n\t(q15_t)0x77B4, (q15_t)0x2D55, (q15_t)0x77A2, (q15_t)0x2D84,\n\t(q15_t)0x7790, (q15_t)0x2DB3, (q15_t)0x777E, (q15_t)0x2DE2,\n\t(q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x775A, (q15_t)0x2E3F,\n\t(q15_t)0x7747, (q15_t)0x2E6E, (q15_t)0x7735, (q15_t)0x2E9D,\n\t(q15_t)0x7723, (q15_t)0x2ECC, (q15_t)0x7710, (q15_t)0x2EFB,\n\t(q15_t)0x76FE, (q15_t)0x2F29, (q15_t)0x76EB, (q15_t)0x2F58,\n\t(q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x76C6, (q15_t)0x2FB5,\n\t(q15_t)0x76B3, (q15_t)0x2FE4, (q15_t)0x76A0, (q15_t)0x3013,\n\t(q15_t)0x768E, (q15_t)0x3041, (q15_t)0x767B, (q15_t)0x3070,\n\t(q15_t)0x7668, (q15_t)0x309E, (q15_t)0x7654, (q15_t)0x30CD,\n\t(q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x762E, (q15_t)0x312A,\n\t(q15_t)0x761B, (q15_t)0x3158, (q15_t)0x7607, (q15_t)0x3186,\n\t(q15_t)0x75F4, (q15_t)0x31B5, (q15_t)0x75E0, (q15_t)0x31E3,\n\t(q15_t)0x75CC, (q15_t)0x3211, (q15_t)0x75B9, (q15_t)0x3240,\n\t(q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x7591, (q15_t)0x329C,\n\t(q15_t)0x757D, (q15_t)0x32CA, (q15_t)0x7569, (q15_t)0x32F8,\n\t(q15_t)0x7555, (q15_t)0x3326, (q15_t)0x7541, (q15_t)0x3354,\n\t(q15_t)0x752D, (q15_t)0x3382, (q15_t)0x7519, (q15_t)0x33B0,\n\t(q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74F0, (q15_t)0x340C,\n\t(q15_t)0x74DB, (q15_t)0x343A, (q15_t)0x74C7, (q15_t)0x3468,\n\t(q15_t)0x74B2, (q15_t)0x3496, (q15_t)0x749E, (q15_t)0x34C4,\n\t(q15_t)0x7489, (q15_t)0x34F2, (q15_t)0x7474, (q15_t)0x351F,\n\t(q15_t)0x745F, (q15_t)0x354D, (q15_t)0x744A, (q15_t)0x357B,\n\t(q15_t)0x7435, (q15_t)0x35A8, (q15_t)0x7420, (q15_t)0x35D6,\n\t(q15_t)0x740B, (q15_t)0x3604, (q15_t)0x73F6, (q15_t)0x3631,\n\t(q15_t)0x73E0, (q15_t)0x365F, (q15_t)0x73CB, (q15_t)0x368C,\n\t(q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x73A0, (q15_t)0x36E7,\n\t(q15_t)0x738A, (q15_t)0x3714, (q15_t)0x7375, (q15_t)0x3742,\n\t(q15_t)0x735F, (q15_t)0x376F, (q15_t)0x7349, (q15_t)0x379C,\n\t(q15_t)0x7333, (q15_t)0x37CA, (q15_t)0x731D, (q15_t)0x37F7,\n\t(q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72F1, (q15_t)0x3851,\n\t(q15_t)0x72DB, (q15_t)0x387E, (q15_t)0x72C5, (q15_t)0x38AB,\n\t(q15_t)0x72AF, (q15_t)0x38D8, (q15_t)0x7298, (q15_t)0x3906,\n\t(q15_t)0x7282, (q15_t)0x3932, (q15_t)0x726B, (q15_t)0x395F,\n\t(q15_t)0x7255, (q15_t)0x398C, (q15_t)0x723E, (q15_t)0x39B9,\n\t(q15_t)0x7227, (q15_t)0x39E6, (q15_t)0x7211, (q15_t)0x3A13,\n\t(q15_t)0x71FA, (q15_t)0x3A40, (q15_t)0x71E3, (q15_t)0x3A6C,\n\t(q15_t)0x71CC, (q15_t)0x3A99, (q15_t)0x71B5, (q15_t)0x3AC6,\n\t(q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x7186, (q15_t)0x3B1F,\n\t(q15_t)0x716F, (q15_t)0x3B4C, (q15_t)0x7158, (q15_t)0x3B78,\n\t(q15_t)0x7141, (q15_t)0x3BA5, (q15_t)0x7129, (q15_t)0x3BD1,\n\t(q15_t)0x7112, (q15_t)0x3BFD, (q15_t)0x70FA, (q15_t)0x3C2A,\n\t(q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x70CB, (q15_t)0x3C83,\n\t(q15_t)0x70B3, (q15_t)0x3CAF, (q15_t)0x709B, (q15_t)0x3CDB,\n\t(q15_t)0x7083, (q15_t)0x3D07, (q15_t)0x706B, (q15_t)0x3D33,\n\t(q15_t)0x7053, (q15_t)0x3D60, (q15_t)0x703B, (q15_t)0x3D8C,\n\t(q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x700A, (q15_t)0x3DE4,\n\t(q15_t)0x6FF2, (q15_t)0x3E10, (q15_t)0x6FDA, (q15_t)0x3E3C,\n\t(q15_t)0x6FC1, (q15_t)0x3E68, (q15_t)0x6FA9, (q15_t)0x3E93,\n\t(q15_t)0x6F90, (q15_t)0x3EBF, (q15_t)0x6F77, (q15_t)0x3EEB,\n\t(q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6F46, (q15_t)0x3F43,\n\t(q15_t)0x6F2D, (q15_t)0x3F6E, (q15_t)0x6F14, (q15_t)0x3F9A,\n\t(q15_t)0x6EFB, (q15_t)0x3FC5, (q15_t)0x6EE2, (q15_t)0x3FF1,\n\t(q15_t)0x6EC9, (q15_t)0x401D, (q15_t)0x6EAF, (q15_t)0x4048,\n\t(q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E7D, (q15_t)0x409F,\n\t(q15_t)0x6E63, (q15_t)0x40CA, (q15_t)0x6E4A, (q15_t)0x40F6,\n\t(q15_t)0x6E30, (q15_t)0x4121, (q15_t)0x6E17, (q15_t)0x414C,\n\t(q15_t)0x6DFD, (q15_t)0x4177, (q15_t)0x6DE3, (q15_t)0x41A2,\n\t(q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6DB0, (q15_t)0x41F9,\n\t(q15_t)0x6D96, (q15_t)0x4224, (q15_t)0x6D7C, (q15_t)0x424F,\n\t(q15_t)0x6D62, (q15_t)0x427A, (q15_t)0x6D48, (q15_t)0x42A5,\n\t(q15_t)0x6D2D, (q15_t)0x42D0, (q15_t)0x6D13, (q15_t)0x42FA,\n\t(q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6CDE, (q15_t)0x4350,\n\t(q15_t)0x6CC4, (q15_t)0x437B, (q15_t)0x6CA9, (q15_t)0x43A5,\n\t(q15_t)0x6C8F, (q15_t)0x43D0, (q15_t)0x6C74, (q15_t)0x43FB,\n\t(q15_t)0x6C59, (q15_t)0x4425, (q15_t)0x6C3F, (q15_t)0x4450,\n\t(q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6C09, (q15_t)0x44A5,\n\t(q15_t)0x6BEE, (q15_t)0x44CF, (q15_t)0x6BD3, (q15_t)0x44FA,\n\t(q15_t)0x6BB8, (q15_t)0x4524, (q15_t)0x6B9C, (q15_t)0x454E,\n\t(q15_t)0x6B81, (q15_t)0x4578, (q15_t)0x6B66, (q15_t)0x45A3,\n\t(q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6B2F, (q15_t)0x45F7,\n\t(q15_t)0x6B13, (q15_t)0x4621, (q15_t)0x6AF8, (q15_t)0x464B,\n\t(q15_t)0x6ADC, (q15_t)0x4675, (q15_t)0x6AC1, (q15_t)0x469F,\n\t(q15_t)0x6AA5, (q15_t)0x46C9, (q15_t)0x6A89, (q15_t)0x46F3,\n\t(q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x6A51, (q15_t)0x4746,\n\t(q15_t)0x6A35, (q15_t)0x4770, (q15_t)0x6A19, (q15_t)0x479A,\n\t(q15_t)0x69FD, (q15_t)0x47C3, (q15_t)0x69E1, (q15_t)0x47ED,\n\t(q15_t)0x69C4, (q15_t)0x4816, (q15_t)0x69A8, (q15_t)0x4840,\n\t(q15_t)0x698C, (q15_t)0x4869, (q15_t)0x696F, (q15_t)0x4893,\n\t(q15_t)0x6953, (q15_t)0x48BC, (q15_t)0x6936, (q15_t)0x48E6,\n\t(q15_t)0x6919, (q15_t)0x490F, (q15_t)0x68FD, (q15_t)0x4938,\n\t(q15_t)0x68E0, (q15_t)0x4961, (q15_t)0x68C3, (q15_t)0x498A,\n\t(q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x6889, (q15_t)0x49DD,\n\t(q15_t)0x686C, (q15_t)0x4A06, (q15_t)0x684F, (q15_t)0x4A2F,\n\t(q15_t)0x6832, (q15_t)0x4A58, (q15_t)0x6815, (q15_t)0x4A81,\n\t(q15_t)0x67F7, (q15_t)0x4AA9, (q15_t)0x67DA, (q15_t)0x4AD2,\n\t(q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x679F, (q15_t)0x4B24,\n\t(q15_t)0x6782, (q15_t)0x4B4C, (q15_t)0x6764, (q15_t)0x4B75,\n\t(q15_t)0x6746, (q15_t)0x4B9E, (q15_t)0x6729, (q15_t)0x4BC6,\n\t(q15_t)0x670B, (q15_t)0x4BEF, (q15_t)0x66ED, (q15_t)0x4C17,\n\t(q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x66B1, (q15_t)0x4C68,\n\t(q15_t)0x6693, (q15_t)0x4C90, (q15_t)0x6675, (q15_t)0x4CB8,\n\t(q15_t)0x6657, (q15_t)0x4CE1, (q15_t)0x6639, (q15_t)0x4D09,\n\t(q15_t)0x661A, (q15_t)0x4D31, (q15_t)0x65FC, (q15_t)0x4D59,\n\t(q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x65BF, (q15_t)0x4DA9,\n\t(q15_t)0x65A0, (q15_t)0x4DD1, (q15_t)0x6582, (q15_t)0x4DF9,\n\t(q15_t)0x6563, (q15_t)0x4E21, (q15_t)0x6545, (q15_t)0x4E48,\n\t(q15_t)0x6526, (q15_t)0x4E70, (q15_t)0x6507, (q15_t)0x4E98,\n\t(q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x64C9, (q15_t)0x4EE7,\n\t(q15_t)0x64AA, (q15_t)0x4F0F, (q15_t)0x648B, (q15_t)0x4F36,\n\t(q15_t)0x646C, (q15_t)0x4F5E, (q15_t)0x644D, (q15_t)0x4F85,\n\t(q15_t)0x642D, (q15_t)0x4FAC, (q15_t)0x640E, (q15_t)0x4FD4,\n\t(q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x63CF, (q15_t)0x5022,\n\t(q15_t)0x63B0, (q15_t)0x5049, (q15_t)0x6390, (q15_t)0x5070,\n\t(q15_t)0x6371, (q15_t)0x5097, (q15_t)0x6351, (q15_t)0x50BF,\n\t(q15_t)0x6331, (q15_t)0x50E5, (q15_t)0x6311, (q15_t)0x510C,\n\t(q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x62D2, (q15_t)0x515A,\n\t(q15_t)0x62B2, (q15_t)0x5181, (q15_t)0x6292, (q15_t)0x51A8,\n\t(q15_t)0x6271, (q15_t)0x51CE, (q15_t)0x6251, (q15_t)0x51F5,\n\t(q15_t)0x6231, (q15_t)0x521C, (q15_t)0x6211, (q15_t)0x5242,\n\t(q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x61D0, (q15_t)0x528F,\n\t(q15_t)0x61B0, (q15_t)0x52B5, (q15_t)0x618F, (q15_t)0x52DC,\n\t(q15_t)0x616F, (q15_t)0x5302, (q15_t)0x614E, (q15_t)0x5328,\n\t(q15_t)0x612D, (q15_t)0x534E, (q15_t)0x610D, (q15_t)0x5375,\n\t(q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x60CB, (q15_t)0x53C1,\n\t(q15_t)0x60AA, (q15_t)0x53E7, (q15_t)0x6089, (q15_t)0x540D,\n\t(q15_t)0x6068, (q15_t)0x5433, (q15_t)0x6047, (q15_t)0x5458,\n\t(q15_t)0x6026, (q15_t)0x547E, (q15_t)0x6004, (q15_t)0x54A4,\n\t(q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5FC2, (q15_t)0x54EF,\n\t(q15_t)0x5FA0, (q15_t)0x5515, (q15_t)0x5F7F, (q15_t)0x553A,\n\t(q15_t)0x5F5E, (q15_t)0x5560, (q15_t)0x5F3C, (q15_t)0x5585,\n\t(q15_t)0x5F1A, (q15_t)0x55AB, (q15_t)0x5EF9, (q15_t)0x55D0,\n\t(q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5EB5, (q15_t)0x561A,\n\t(q15_t)0x5E93, (q15_t)0x5640, (q15_t)0x5E71, (q15_t)0x5665,\n\t(q15_t)0x5E50, (q15_t)0x568A, (q15_t)0x5E2D, (q15_t)0x56AF,\n\t(q15_t)0x5E0B, (q15_t)0x56D4, (q15_t)0x5DE9, (q15_t)0x56F9,\n\t(q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5DA5, (q15_t)0x5742,\n\t(q15_t)0x5D83, (q15_t)0x5767, (q15_t)0x5D60, (q15_t)0x578C,\n\t(q15_t)0x5D3E, (q15_t)0x57B0, (q15_t)0x5D1B, (q15_t)0x57D5,\n\t(q15_t)0x5CF9, (q15_t)0x57F9, (q15_t)0x5CD6, (q15_t)0x581E,\n\t(q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C91, (q15_t)0x5867,\n\t(q15_t)0x5C6E, (q15_t)0x588B, (q15_t)0x5C4B, (q15_t)0x58AF,\n\t(q15_t)0x5C29, (q15_t)0x58D4, (q15_t)0x5C06, (q15_t)0x58F8,\n\t(q15_t)0x5BE3, (q15_t)0x591C, (q15_t)0x5BC0, (q15_t)0x5940,\n\t(q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B79, (q15_t)0x5988,\n\t(q15_t)0x5B56, (q15_t)0x59AC, (q15_t)0x5B33, (q15_t)0x59D0,\n\t(q15_t)0x5B10, (q15_t)0x59F3, (q15_t)0x5AEC, (q15_t)0x5A17,\n\t(q15_t)0x5AC9, (q15_t)0x5A3B, (q15_t)0x5AA5, (q15_t)0x5A5E,\n\t(q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5A5E, (q15_t)0x5AA5,\n\t(q15_t)0x5A3B, (q15_t)0x5AC9, (q15_t)0x5A17, (q15_t)0x5AEC,\n\t(q15_t)0x59F3, (q15_t)0x5B10, (q15_t)0x59D0, (q15_t)0x5B33,\n\t(q15_t)0x59AC, (q15_t)0x5B56, (q15_t)0x5988, (q15_t)0x5B79,\n\t(q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x5940, (q15_t)0x5BC0,\n\t(q15_t)0x591C, (q15_t)0x5BE3, (q15_t)0x58F8, (q15_t)0x5C06,\n\t(q15_t)0x58D4, (q15_t)0x5C29, (q15_t)0x58AF, (q15_t)0x5C4B,\n\t(q15_t)0x588B, (q15_t)0x5C6E, (q15_t)0x5867, (q15_t)0x5C91,\n\t(q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x581E, (q15_t)0x5CD6,\n\t(q15_t)0x57F9, (q15_t)0x5CF9, (q15_t)0x57D5, (q15_t)0x5D1B,\n\t(q15_t)0x57B0, (q15_t)0x5D3E, (q15_t)0x578C, (q15_t)0x5D60,\n\t(q15_t)0x5767, (q15_t)0x5D83, (q15_t)0x5742, (q15_t)0x5DA5,\n\t(q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x56F9, (q15_t)0x5DE9,\n\t(q15_t)0x56D4, (q15_t)0x5E0B, (q15_t)0x56AF, (q15_t)0x5E2D,\n\t(q15_t)0x568A, (q15_t)0x5E50, (q15_t)0x5665, (q15_t)0x5E71,\n\t(q15_t)0x5640, (q15_t)0x5E93, (q15_t)0x561A, (q15_t)0x5EB5,\n\t(q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x55D0, (q15_t)0x5EF9,\n\t(q15_t)0x55AB, (q15_t)0x5F1A, (q15_t)0x5585, (q15_t)0x5F3C,\n\t(q15_t)0x5560, (q15_t)0x5F5E, (q15_t)0x553A, (q15_t)0x5F7F,\n\t(q15_t)0x5515, (q15_t)0x5FA0, (q15_t)0x54EF, (q15_t)0x5FC2,\n\t(q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x54A4, (q15_t)0x6004,\n\t(q15_t)0x547E, (q15_t)0x6026, (q15_t)0x5458, (q15_t)0x6047,\n\t(q15_t)0x5433, (q15_t)0x6068, (q15_t)0x540D, (q15_t)0x6089,\n\t(q15_t)0x53E7, (q15_t)0x60AA, (q15_t)0x53C1, (q15_t)0x60CB,\n\t(q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5375, (q15_t)0x610D,\n\t(q15_t)0x534E, (q15_t)0x612D, (q15_t)0x5328, (q15_t)0x614E,\n\t(q15_t)0x5302, (q15_t)0x616F, (q15_t)0x52DC, (q15_t)0x618F,\n\t(q15_t)0x52B5, (q15_t)0x61B0, (q15_t)0x528F, (q15_t)0x61D0,\n\t(q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x5242, (q15_t)0x6211,\n\t(q15_t)0x521C, (q15_t)0x6231, (q15_t)0x51F5, (q15_t)0x6251,\n\t(q15_t)0x51CE, (q15_t)0x6271, (q15_t)0x51A8, (q15_t)0x6292,\n\t(q15_t)0x5181, (q15_t)0x62B2, (q15_t)0x515A, (q15_t)0x62D2,\n\t(q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x510C, (q15_t)0x6311,\n\t(q15_t)0x50E5, (q15_t)0x6331, (q15_t)0x50BF, (q15_t)0x6351,\n\t(q15_t)0x5097, (q15_t)0x6371, (q15_t)0x5070, (q15_t)0x6390,\n\t(q15_t)0x5049, (q15_t)0x63B0, (q15_t)0x5022, (q15_t)0x63CF,\n\t(q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4FD4, (q15_t)0x640E,\n\t(q15_t)0x4FAC, (q15_t)0x642D, (q15_t)0x4F85, (q15_t)0x644D,\n\t(q15_t)0x4F5E, (q15_t)0x646C, (q15_t)0x4F36, (q15_t)0x648B,\n\t(q15_t)0x4F0F, (q15_t)0x64AA, (q15_t)0x4EE7, (q15_t)0x64C9,\n\t(q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E98, (q15_t)0x6507,\n\t(q15_t)0x4E70, (q15_t)0x6526, (q15_t)0x4E48, (q15_t)0x6545,\n\t(q15_t)0x4E21, (q15_t)0x6563, (q15_t)0x4DF9, (q15_t)0x6582,\n\t(q15_t)0x4DD1, (q15_t)0x65A0, (q15_t)0x4DA9, (q15_t)0x65BF,\n\t(q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4D59, (q15_t)0x65FC,\n\t(q15_t)0x4D31, (q15_t)0x661A, (q15_t)0x4D09, (q15_t)0x6639,\n\t(q15_t)0x4CE1, (q15_t)0x6657, (q15_t)0x4CB8, (q15_t)0x6675,\n\t(q15_t)0x4C90, (q15_t)0x6693, (q15_t)0x4C68, (q15_t)0x66B1,\n\t(q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4C17, (q15_t)0x66ED,\n\t(q15_t)0x4BEF, (q15_t)0x670B, (q15_t)0x4BC6, (q15_t)0x6729,\n\t(q15_t)0x4B9E, (q15_t)0x6746, (q15_t)0x4B75, (q15_t)0x6764,\n\t(q15_t)0x4B4C, (q15_t)0x6782, (q15_t)0x4B24, (q15_t)0x679F,\n\t(q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4AD2, (q15_t)0x67DA,\n\t(q15_t)0x4AA9, (q15_t)0x67F7, (q15_t)0x4A81, (q15_t)0x6815,\n\t(q15_t)0x4A58, (q15_t)0x6832, (q15_t)0x4A2F, (q15_t)0x684F,\n\t(q15_t)0x4A06, (q15_t)0x686C, (q15_t)0x49DD, (q15_t)0x6889,\n\t(q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x498A, (q15_t)0x68C3,\n\t(q15_t)0x4961, (q15_t)0x68E0, (q15_t)0x4938, (q15_t)0x68FD,\n\t(q15_t)0x490F, (q15_t)0x6919, (q15_t)0x48E6, (q15_t)0x6936,\n\t(q15_t)0x48BC, (q15_t)0x6953, (q15_t)0x4893, (q15_t)0x696F,\n\t(q15_t)0x4869, (q15_t)0x698C, (q15_t)0x4840, (q15_t)0x69A8,\n\t(q15_t)0x4816, (q15_t)0x69C4, (q15_t)0x47ED, (q15_t)0x69E1,\n\t(q15_t)0x47C3, (q15_t)0x69FD, (q15_t)0x479A, (q15_t)0x6A19,\n\t(q15_t)0x4770, (q15_t)0x6A35, (q15_t)0x4746, (q15_t)0x6A51,\n\t(q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x46F3, (q15_t)0x6A89,\n\t(q15_t)0x46C9, (q15_t)0x6AA5, (q15_t)0x469F, (q15_t)0x6AC1,\n\t(q15_t)0x4675, (q15_t)0x6ADC, (q15_t)0x464B, (q15_t)0x6AF8,\n\t(q15_t)0x4621, (q15_t)0x6B13, (q15_t)0x45F7, (q15_t)0x6B2F,\n\t(q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x45A3, (q15_t)0x6B66,\n\t(q15_t)0x4578, (q15_t)0x6B81, (q15_t)0x454E, (q15_t)0x6B9C,\n\t(q15_t)0x4524, (q15_t)0x6BB8, (q15_t)0x44FA, (q15_t)0x6BD3,\n\t(q15_t)0x44CF, (q15_t)0x6BEE, (q15_t)0x44A5, (q15_t)0x6C09,\n\t(q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4450, (q15_t)0x6C3F,\n\t(q15_t)0x4425, (q15_t)0x6C59, (q15_t)0x43FB, (q15_t)0x6C74,\n\t(q15_t)0x43D0, (q15_t)0x6C8F, (q15_t)0x43A5, (q15_t)0x6CA9,\n\t(q15_t)0x437B, (q15_t)0x6CC4, (q15_t)0x4350, (q15_t)0x6CDE,\n\t(q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x42FA, (q15_t)0x6D13,\n\t(q15_t)0x42D0, (q15_t)0x6D2D, (q15_t)0x42A5, (q15_t)0x6D48,\n\t(q15_t)0x427A, (q15_t)0x6D62, (q15_t)0x424F, (q15_t)0x6D7C,\n\t(q15_t)0x4224, (q15_t)0x6D96, (q15_t)0x41F9, (q15_t)0x6DB0,\n\t(q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x41A2, (q15_t)0x6DE3,\n\t(q15_t)0x4177, (q15_t)0x6DFD, (q15_t)0x414C, (q15_t)0x6E17,\n\t(q15_t)0x4121, (q15_t)0x6E30, (q15_t)0x40F6, (q15_t)0x6E4A,\n\t(q15_t)0x40CA, (q15_t)0x6E63, (q15_t)0x409F, (q15_t)0x6E7D,\n\t(q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x4048, (q15_t)0x6EAF,\n\t(q15_t)0x401D, (q15_t)0x6EC9, (q15_t)0x3FF1, (q15_t)0x6EE2,\n\t(q15_t)0x3FC5, (q15_t)0x6EFB, (q15_t)0x3F9A, (q15_t)0x6F14,\n\t(q15_t)0x3F6E, (q15_t)0x6F2D, (q15_t)0x3F43, (q15_t)0x6F46,\n\t(q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3EEB, (q15_t)0x6F77,\n\t(q15_t)0x3EBF, (q15_t)0x6F90, (q15_t)0x3E93, (q15_t)0x6FA9,\n\t(q15_t)0x3E68, (q15_t)0x6FC1, (q15_t)0x3E3C, (q15_t)0x6FDA,\n\t(q15_t)0x3E10, (q15_t)0x6FF2, (q15_t)0x3DE4, (q15_t)0x700A,\n\t(q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D8C, (q15_t)0x703B,\n\t(q15_t)0x3D60, (q15_t)0x7053, (q15_t)0x3D33, (q15_t)0x706B,\n\t(q15_t)0x3D07, (q15_t)0x7083, (q15_t)0x3CDB, (q15_t)0x709B,\n\t(q15_t)0x3CAF, (q15_t)0x70B3, (q15_t)0x3C83, (q15_t)0x70CB,\n\t(q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3C2A, (q15_t)0x70FA,\n\t(q15_t)0x3BFD, (q15_t)0x7112, (q15_t)0x3BD1, (q15_t)0x7129,\n\t(q15_t)0x3BA5, (q15_t)0x7141, (q15_t)0x3B78, (q15_t)0x7158,\n\t(q15_t)0x3B4C, (q15_t)0x716F, (q15_t)0x3B1F, (q15_t)0x7186,\n\t(q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3AC6, (q15_t)0x71B5,\n\t(q15_t)0x3A99, (q15_t)0x71CC, (q15_t)0x3A6C, (q15_t)0x71E3,\n\t(q15_t)0x3A40, (q15_t)0x71FA, (q15_t)0x3A13, (q15_t)0x7211,\n\t(q15_t)0x39E6, (q15_t)0x7227, (q15_t)0x39B9, (q15_t)0x723E,\n\t(q15_t)0x398C, (q15_t)0x7255, (q15_t)0x395F, (q15_t)0x726B,\n\t(q15_t)0x3932, (q15_t)0x7282, (q15_t)0x3906, (q15_t)0x7298,\n\t(q15_t)0x38D8, (q15_t)0x72AF, (q15_t)0x38AB, (q15_t)0x72C5,\n\t(q15_t)0x387E, (q15_t)0x72DB, (q15_t)0x3851, (q15_t)0x72F1,\n\t(q15_t)0x3824, (q15_t)0x7307, (q15_t)0x37F7, (q15_t)0x731D,\n\t(q15_t)0x37CA, (q15_t)0x7333, (q15_t)0x379C, (q15_t)0x7349,\n\t(q15_t)0x376F, (q15_t)0x735F, (q15_t)0x3742, (q15_t)0x7375,\n\t(q15_t)0x3714, (q15_t)0x738A, (q15_t)0x36E7, (q15_t)0x73A0,\n\t(q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x368C, (q15_t)0x73CB,\n\t(q15_t)0x365F, (q15_t)0x73E0, (q15_t)0x3631, (q15_t)0x73F6,\n\t(q15_t)0x3604, (q15_t)0x740B, (q15_t)0x35D6, (q15_t)0x7420,\n\t(q15_t)0x35A8, (q15_t)0x7435, (q15_t)0x357B, (q15_t)0x744A,\n\t(q15_t)0x354D, (q15_t)0x745F, (q15_t)0x351F, (q15_t)0x7474,\n\t(q15_t)0x34F2, (q15_t)0x7489, (q15_t)0x34C4, (q15_t)0x749E,\n\t(q15_t)0x3496, (q15_t)0x74B2, (q15_t)0x3468, (q15_t)0x74C7,\n\t(q15_t)0x343A, (q15_t)0x74DB, (q15_t)0x340C, (q15_t)0x74F0,\n\t(q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x33B0, (q15_t)0x7519,\n\t(q15_t)0x3382, (q15_t)0x752D, (q15_t)0x3354, (q15_t)0x7541,\n\t(q15_t)0x3326, (q15_t)0x7555, (q15_t)0x32F8, (q15_t)0x7569,\n\t(q15_t)0x32CA, (q15_t)0x757D, (q15_t)0x329C, (q15_t)0x7591,\n\t(q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x3240, (q15_t)0x75B9,\n\t(q15_t)0x3211, (q15_t)0x75CC, (q15_t)0x31E3, (q15_t)0x75E0,\n\t(q15_t)0x31B5, (q15_t)0x75F4, (q15_t)0x3186, (q15_t)0x7607,\n\t(q15_t)0x3158, (q15_t)0x761B, (q15_t)0x312A, (q15_t)0x762E,\n\t(q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x30CD, (q15_t)0x7654,\n\t(q15_t)0x309E, (q15_t)0x7668, (q15_t)0x3070, (q15_t)0x767B,\n\t(q15_t)0x3041, (q15_t)0x768E, (q15_t)0x3013, (q15_t)0x76A0,\n\t(q15_t)0x2FE4, (q15_t)0x76B3, (q15_t)0x2FB5, (q15_t)0x76C6,\n\t(q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2F58, (q15_t)0x76EB,\n\t(q15_t)0x2F29, (q15_t)0x76FE, (q15_t)0x2EFB, (q15_t)0x7710,\n\t(q15_t)0x2ECC, (q15_t)0x7723, (q15_t)0x2E9D, (q15_t)0x7735,\n\t(q15_t)0x2E6E, (q15_t)0x7747, (q15_t)0x2E3F, (q15_t)0x775A,\n\t(q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2DE2, (q15_t)0x777E,\n\t(q15_t)0x2DB3, (q15_t)0x7790, (q15_t)0x2D84, (q15_t)0x77A2,\n\t(q15_t)0x2D55, (q15_t)0x77B4, (q15_t)0x2D26, (q15_t)0x77C5,\n\t(q15_t)0x2CF7, (q15_t)0x77D7, (q15_t)0x2CC8, (q15_t)0x77E9,\n\t(q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2C69, (q15_t)0x780C,\n\t(q15_t)0x2C3A, (q15_t)0x781D, (q15_t)0x2C0B, (q15_t)0x782E,\n\t(q15_t)0x2BDC, (q15_t)0x7840, (q15_t)0x2BAD, (q15_t)0x7851,\n\t(q15_t)0x2B7D, (q15_t)0x7862, (q15_t)0x2B4E, (q15_t)0x7873,\n\t(q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2AEF, (q15_t)0x7895,\n\t(q15_t)0x2AC0, (q15_t)0x78A6, (q15_t)0x2A91, (q15_t)0x78B6,\n\t(q15_t)0x2A61, (q15_t)0x78C7, (q15_t)0x2A32, (q15_t)0x78D8,\n\t(q15_t)0x2A02, (q15_t)0x78E8, (q15_t)0x29D3, (q15_t)0x78F9,\n\t(q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x2974, (q15_t)0x7919,\n\t(q15_t)0x2944, (q15_t)0x792A, (q15_t)0x2915, (q15_t)0x793A,\n\t(q15_t)0x28E5, (q15_t)0x794A, (q15_t)0x28B5, (q15_t)0x795A,\n\t(q15_t)0x2886, (q15_t)0x796A, (q15_t)0x2856, (q15_t)0x797A,\n\t(q15_t)0x2826, (q15_t)0x798A, (q15_t)0x27F6, (q15_t)0x7999,\n\t(q15_t)0x27C7, (q15_t)0x79A9, (q15_t)0x2797, (q15_t)0x79B9,\n\t(q15_t)0x2767, (q15_t)0x79C8, (q15_t)0x2737, (q15_t)0x79D8,\n\t(q15_t)0x2707, (q15_t)0x79E7, (q15_t)0x26D8, (q15_t)0x79F6,\n\t(q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x2678, (q15_t)0x7A15,\n\t(q15_t)0x2648, (q15_t)0x7A24, (q15_t)0x2618, (q15_t)0x7A33,\n\t(q15_t)0x25E8, (q15_t)0x7A42, (q15_t)0x25B8, (q15_t)0x7A50,\n\t(q15_t)0x2588, (q15_t)0x7A5F, (q15_t)0x2558, (q15_t)0x7A6E,\n\t(q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x24F7, (q15_t)0x7A8B,\n\t(q15_t)0x24C7, (q15_t)0x7A9A, (q15_t)0x2497, (q15_t)0x7AA8,\n\t(q15_t)0x2467, (q15_t)0x7AB6, (q15_t)0x2437, (q15_t)0x7AC5,\n\t(q15_t)0x2407, (q15_t)0x7AD3, (q15_t)0x23D6, (q15_t)0x7AE1,\n\t(q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x2376, (q15_t)0x7AFD,\n\t(q15_t)0x2345, (q15_t)0x7B0B, (q15_t)0x2315, (q15_t)0x7B19,\n\t(q15_t)0x22E5, (q15_t)0x7B26, (q15_t)0x22B4, (q15_t)0x7B34,\n\t(q15_t)0x2284, (q15_t)0x7B42, (q15_t)0x2254, (q15_t)0x7B4F,\n\t(q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x21F3, (q15_t)0x7B6A,\n\t(q15_t)0x21C2, (q15_t)0x7B77, (q15_t)0x2192, (q15_t)0x7B84,\n\t(q15_t)0x2161, (q15_t)0x7B92, (q15_t)0x2131, (q15_t)0x7B9F,\n\t(q15_t)0x2100, (q15_t)0x7BAC, (q15_t)0x20D0, (q15_t)0x7BB9,\n\t(q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x206E, (q15_t)0x7BD2,\n\t(q15_t)0x203E, (q15_t)0x7BDF, (q15_t)0x200D, (q15_t)0x7BEB,\n\t(q15_t)0x1FDC, (q15_t)0x7BF8, (q15_t)0x1FAC, (q15_t)0x7C05,\n\t(q15_t)0x1F7B, (q15_t)0x7C11, (q15_t)0x1F4A, (q15_t)0x7C1D,\n\t(q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1EE9, (q15_t)0x7C36,\n\t(q15_t)0x1EB8, (q15_t)0x7C42, (q15_t)0x1E87, (q15_t)0x7C4E,\n\t(q15_t)0x1E56, (q15_t)0x7C5A, (q15_t)0x1E25, (q15_t)0x7C66,\n\t(q15_t)0x1DF5, (q15_t)0x7C71, (q15_t)0x1DC4, (q15_t)0x7C7D,\n\t(q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1D62, (q15_t)0x7C94,\n\t(q15_t)0x1D31, (q15_t)0x7CA0, (q15_t)0x1D00, (q15_t)0x7CAB,\n\t(q15_t)0x1CCF, (q15_t)0x7CB7, (q15_t)0x1C9E, (q15_t)0x7CC2,\n\t(q15_t)0x1C6D, (q15_t)0x7CCD, (q15_t)0x1C3C, (q15_t)0x7CD8,\n\t(q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1BDA, (q15_t)0x7CEE,\n\t(q15_t)0x1BA9, (q15_t)0x7CF9, (q15_t)0x1B78, (q15_t)0x7D04,\n\t(q15_t)0x1B47, (q15_t)0x7D0F, (q15_t)0x1B16, (q15_t)0x7D19,\n\t(q15_t)0x1AE4, (q15_t)0x7D24, (q15_t)0x1AB3, (q15_t)0x7D2F,\n\t(q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x1A51, (q15_t)0x7D43,\n\t(q15_t)0x1A20, (q15_t)0x7D4E, (q15_t)0x19EF, (q15_t)0x7D58,\n\t(q15_t)0x19BD, (q15_t)0x7D62, (q15_t)0x198C, (q15_t)0x7D6C,\n\t(q15_t)0x195B, (q15_t)0x7D76, (q15_t)0x192A, (q15_t)0x7D80,\n\t(q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x18C7, (q15_t)0x7D94,\n\t(q15_t)0x1896, (q15_t)0x7D9D, (q15_t)0x1864, (q15_t)0x7DA7,\n\t(q15_t)0x1833, (q15_t)0x7DB0, (q15_t)0x1802, (q15_t)0x7DBA,\n\t(q15_t)0x17D0, (q15_t)0x7DC3, (q15_t)0x179F, (q15_t)0x7DCD,\n\t(q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x173C, (q15_t)0x7DDF,\n\t(q15_t)0x170A, (q15_t)0x7DE8, (q15_t)0x16D9, (q15_t)0x7DF1,\n\t(q15_t)0x16A8, (q15_t)0x7DFA, (q15_t)0x1676, (q15_t)0x7E03,\n\t(q15_t)0x1645, (q15_t)0x7E0C, (q15_t)0x1613, (q15_t)0x7E14,\n\t(q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x15B0, (q15_t)0x7E26,\n\t(q15_t)0x157F, (q15_t)0x7E2E, (q15_t)0x154D, (q15_t)0x7E37,\n\t(q15_t)0x151B, (q15_t)0x7E3F, (q15_t)0x14EA, (q15_t)0x7E47,\n\t(q15_t)0x14B8, (q15_t)0x7E4F, (q15_t)0x1487, (q15_t)0x7E57,\n\t(q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x1423, (q15_t)0x7E67,\n\t(q15_t)0x13F2, (q15_t)0x7E6F, (q15_t)0x13C0, (q15_t)0x7E77,\n\t(q15_t)0x138E, (q15_t)0x7E7F, (q15_t)0x135D, (q15_t)0x7E86,\n\t(q15_t)0x132B, (q15_t)0x7E8E, (q15_t)0x12F9, (q15_t)0x7E95,\n\t(q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1296, (q15_t)0x7EA4,\n\t(q15_t)0x1264, (q15_t)0x7EAB, (q15_t)0x1232, (q15_t)0x7EB3,\n\t(q15_t)0x1201, (q15_t)0x7EBA, (q15_t)0x11CF, (q15_t)0x7EC1,\n\t(q15_t)0x119D, (q15_t)0x7EC8, (q15_t)0x116B, (q15_t)0x7ECF,\n\t(q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x1108, (q15_t)0x7EDC,\n\t(q15_t)0x10D6, (q15_t)0x7EE3, (q15_t)0x10A4, (q15_t)0x7EE9,\n\t(q15_t)0x1072, (q15_t)0x7EF0, (q15_t)0x1040, (q15_t)0x7EF6,\n\t(q15_t)0x100E, (q15_t)0x7EFD, (q15_t)0x0FDD, (q15_t)0x7F03,\n\t(q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0F79, (q15_t)0x7F0F,\n\t(q15_t)0x0F47, (q15_t)0x7F15, (q15_t)0x0F15, (q15_t)0x7F1B,\n\t(q15_t)0x0EE3, (q15_t)0x7F21, (q15_t)0x0EB1, (q15_t)0x7F27,\n\t(q15_t)0x0E7F, (q15_t)0x7F2D, (q15_t)0x0E4D, (q15_t)0x7F32,\n\t(q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0DE9, (q15_t)0x7F3D,\n\t(q15_t)0x0DB7, (q15_t)0x7F43, (q15_t)0x0D85, (q15_t)0x7F48,\n\t(q15_t)0x0D53, (q15_t)0x7F4D, (q15_t)0x0D21, (q15_t)0x7F53,\n\t(q15_t)0x0CEF, (q15_t)0x7F58, (q15_t)0x0CBD, (q15_t)0x7F5D,\n\t(q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0C59, (q15_t)0x7F67,\n\t(q15_t)0x0C27, (q15_t)0x7F6B, (q15_t)0x0BF5, (q15_t)0x7F70,\n\t(q15_t)0x0BC3, (q15_t)0x7F75, (q15_t)0x0B91, (q15_t)0x7F79,\n\t(q15_t)0x0B5F, (q15_t)0x7F7E, (q15_t)0x0B2D, (q15_t)0x7F82,\n\t(q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0AC9, (q15_t)0x7F8B,\n\t(q15_t)0x0A97, (q15_t)0x7F8F, (q15_t)0x0A65, (q15_t)0x7F93,\n\t(q15_t)0x0A33, (q15_t)0x7F97, (q15_t)0x0A00, (q15_t)0x7F9B,\n\t(q15_t)0x09CE, (q15_t)0x7F9F, (q15_t)0x099C, (q15_t)0x7FA3,\n\t(q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x0938, (q15_t)0x7FAA,\n\t(q15_t)0x0906, (q15_t)0x7FAE, (q15_t)0x08D4, (q15_t)0x7FB1,\n\t(q15_t)0x08A2, (q15_t)0x7FB5, (q15_t)0x086F, (q15_t)0x7FB8,\n\t(q15_t)0x083D, (q15_t)0x7FBC, (q15_t)0x080B, (q15_t)0x7FBF,\n\t(q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x07A7, (q15_t)0x7FC5,\n\t(q15_t)0x0775, (q15_t)0x7FC8, (q15_t)0x0742, (q15_t)0x7FCB,\n\t(q15_t)0x0710, (q15_t)0x7FCE, (q15_t)0x06DE, (q15_t)0x7FD0,\n\t(q15_t)0x06AC, (q15_t)0x7FD3, (q15_t)0x067A, (q15_t)0x7FD6,\n\t(q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x0615, (q15_t)0x7FDA,\n\t(q15_t)0x05E3, (q15_t)0x7FDD, (q15_t)0x05B1, (q15_t)0x7FDF,\n\t(q15_t)0x057F, (q15_t)0x7FE1, (q15_t)0x054C, (q15_t)0x7FE3,\n\t(q15_t)0x051A, (q15_t)0x7FE5, (q15_t)0x04E8, (q15_t)0x7FE7,\n\t(q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x0483, (q15_t)0x7FEB,\n\t(q15_t)0x0451, (q15_t)0x7FED, (q15_t)0x041F, (q15_t)0x7FEE,\n\t(q15_t)0x03ED, (q15_t)0x7FF0, (q15_t)0x03BA, (q15_t)0x7FF2,\n\t(q15_t)0x0388, (q15_t)0x7FF3, (q15_t)0x0356, (q15_t)0x7FF4,\n\t(q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x02F1, (q15_t)0x7FF7,\n\t(q15_t)0x02BF, (q15_t)0x7FF8, (q15_t)0x028D, (q15_t)0x7FF9,\n\t(q15_t)0x025B, (q15_t)0x7FFA, (q15_t)0x0228, (q15_t)0x7FFB,\n\t(q15_t)0x01F6, (q15_t)0x7FFC, (q15_t)0x01C4, (q15_t)0x7FFC,\n\t(q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x015F, (q15_t)0x7FFE,\n\t(q15_t)0x012D, (q15_t)0x7FFE, (q15_t)0x00FB, (q15_t)0x7FFF,\n\t(q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x0096, (q15_t)0x7FFF,\n\t(q15_t)0x0064, (q15_t)0x7FFF, (q15_t)0x0032, (q15_t)0x7FFF,\n\t(q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFFCD, (q15_t)0x7FFF,\n\t(q15_t)0xFF9B, (q15_t)0x7FFF, (q15_t)0xFF69, (q15_t)0x7FFF,\n\t(q15_t)0xFF36, (q15_t)0x7FFF, (q15_t)0xFF04, (q15_t)0x7FFF,\n\t(q15_t)0xFED2, (q15_t)0x7FFE, (q15_t)0xFEA0, (q15_t)0x7FFE,\n\t(q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFE3B, (q15_t)0x7FFC,\n\t(q15_t)0xFE09, (q15_t)0x7FFC, (q15_t)0xFDD7, (q15_t)0x7FFB,\n\t(q15_t)0xFDA4, (q15_t)0x7FFA, (q15_t)0xFD72, (q15_t)0x7FF9,\n\t(q15_t)0xFD40, (q15_t)0x7FF8, (q15_t)0xFD0E, (q15_t)0x7FF7,\n\t(q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFCA9, (q15_t)0x7FF4,\n\t(q15_t)0xFC77, (q15_t)0x7FF3, (q15_t)0xFC45, (q15_t)0x7FF2,\n\t(q15_t)0xFC12, (q15_t)0x7FF0, (q15_t)0xFBE0, (q15_t)0x7FEE,\n\t(q15_t)0xFBAE, (q15_t)0x7FED, (q15_t)0xFB7C, (q15_t)0x7FEB,\n\t(q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFB17, (q15_t)0x7FE7,\n\t(q15_t)0xFAE5, (q15_t)0x7FE5, (q15_t)0xFAB3, (q15_t)0x7FE3,\n\t(q15_t)0xFA80, (q15_t)0x7FE1, (q15_t)0xFA4E, (q15_t)0x7FDF,\n\t(q15_t)0xFA1C, (q15_t)0x7FDD, (q15_t)0xF9EA, (q15_t)0x7FDA,\n\t(q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF985, (q15_t)0x7FD6,\n\t(q15_t)0xF953, (q15_t)0x7FD3, (q15_t)0xF921, (q15_t)0x7FD0,\n\t(q15_t)0xF8EF, (q15_t)0x7FCE, (q15_t)0xF8BD, (q15_t)0x7FCB,\n\t(q15_t)0xF88A, (q15_t)0x7FC8, (q15_t)0xF858, (q15_t)0x7FC5,\n\t(q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF7F4, (q15_t)0x7FBF,\n\t(q15_t)0xF7C2, (q15_t)0x7FBC, (q15_t)0xF790, (q15_t)0x7FB8,\n\t(q15_t)0xF75D, (q15_t)0x7FB5, (q15_t)0xF72B, (q15_t)0x7FB1,\n\t(q15_t)0xF6F9, (q15_t)0x7FAE, (q15_t)0xF6C7, (q15_t)0x7FAA,\n\t(q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF663, (q15_t)0x7FA3,\n\t(q15_t)0xF631, (q15_t)0x7F9F, (q15_t)0xF5FF, (q15_t)0x7F9B,\n\t(q15_t)0xF5CC, (q15_t)0x7F97, (q15_t)0xF59A, (q15_t)0x7F93,\n\t(q15_t)0xF568, (q15_t)0x7F8F, (q15_t)0xF536, (q15_t)0x7F8B,\n\t(q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF4D2, (q15_t)0x7F82,\n\t(q15_t)0xF4A0, (q15_t)0x7F7E, (q15_t)0xF46E, (q15_t)0x7F79,\n\t(q15_t)0xF43C, (q15_t)0x7F75, (q15_t)0xF40A, (q15_t)0x7F70,\n\t(q15_t)0xF3D8, (q15_t)0x7F6B, (q15_t)0xF3A6, (q15_t)0x7F67,\n\t(q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF342, (q15_t)0x7F5D,\n\t(q15_t)0xF310, (q15_t)0x7F58, (q15_t)0xF2DE, (q15_t)0x7F53,\n\t(q15_t)0xF2AC, (q15_t)0x7F4D, (q15_t)0xF27A, (q15_t)0x7F48,\n\t(q15_t)0xF248, (q15_t)0x7F43, (q15_t)0xF216, (q15_t)0x7F3D,\n\t(q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF1B2, (q15_t)0x7F32,\n\t(q15_t)0xF180, (q15_t)0x7F2D, (q15_t)0xF14E, (q15_t)0x7F27,\n\t(q15_t)0xF11C, (q15_t)0x7F21, (q15_t)0xF0EA, (q15_t)0x7F1B,\n\t(q15_t)0xF0B8, (q15_t)0x7F15, (q15_t)0xF086, (q15_t)0x7F0F,\n\t(q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xF022, (q15_t)0x7F03,\n\t(q15_t)0xEFF1, (q15_t)0x7EFD, (q15_t)0xEFBF, (q15_t)0x7EF6,\n\t(q15_t)0xEF8D, (q15_t)0x7EF0, (q15_t)0xEF5B, (q15_t)0x7EE9,\n\t(q15_t)0xEF29, (q15_t)0x7EE3, (q15_t)0xEEF7, (q15_t)0x7EDC,\n\t(q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEE94, (q15_t)0x7ECF,\n\t(q15_t)0xEE62, (q15_t)0x7EC8, (q15_t)0xEE30, (q15_t)0x7EC1,\n\t(q15_t)0xEDFE, (q15_t)0x7EBA, (q15_t)0xEDCD, (q15_t)0x7EB3,\n\t(q15_t)0xED9B, (q15_t)0x7EAB, (q15_t)0xED69, (q15_t)0x7EA4,\n\t(q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xED06, (q15_t)0x7E95,\n\t(q15_t)0xECD4, (q15_t)0x7E8E, (q15_t)0xECA2, (q15_t)0x7E86,\n\t(q15_t)0xEC71, (q15_t)0x7E7F, (q15_t)0xEC3F, (q15_t)0x7E77,\n\t(q15_t)0xEC0D, (q15_t)0x7E6F, (q15_t)0xEBDC, (q15_t)0x7E67,\n\t(q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEB78, (q15_t)0x7E57,\n\t(q15_t)0xEB47, (q15_t)0x7E4F, (q15_t)0xEB15, (q15_t)0x7E47,\n\t(q15_t)0xEAE4, (q15_t)0x7E3F, (q15_t)0xEAB2, (q15_t)0x7E37,\n\t(q15_t)0xEA80, (q15_t)0x7E2E, (q15_t)0xEA4F, (q15_t)0x7E26,\n\t(q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE9EC, (q15_t)0x7E14,\n\t(q15_t)0xE9BA, (q15_t)0x7E0C, (q15_t)0xE989, (q15_t)0x7E03,\n\t(q15_t)0xE957, (q15_t)0x7DFA, (q15_t)0xE926, (q15_t)0x7DF1,\n\t(q15_t)0xE8F5, (q15_t)0x7DE8, (q15_t)0xE8C3, (q15_t)0x7DDF,\n\t(q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE860, (q15_t)0x7DCD,\n\t(q15_t)0xE82F, (q15_t)0x7DC3, (q15_t)0xE7FD, (q15_t)0x7DBA,\n\t(q15_t)0xE7CC, (q15_t)0x7DB0, (q15_t)0xE79B, (q15_t)0x7DA7,\n\t(q15_t)0xE769, (q15_t)0x7D9D, (q15_t)0xE738, (q15_t)0x7D94,\n\t(q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE6D5, (q15_t)0x7D80,\n\t(q15_t)0xE6A4, (q15_t)0x7D76, (q15_t)0xE673, (q15_t)0x7D6C,\n\t(q15_t)0xE642, (q15_t)0x7D62, (q15_t)0xE610, (q15_t)0x7D58,\n\t(q15_t)0xE5DF, (q15_t)0x7D4E, (q15_t)0xE5AE, (q15_t)0x7D43,\n\t(q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE54C, (q15_t)0x7D2F,\n\t(q15_t)0xE51B, (q15_t)0x7D24, (q15_t)0xE4E9, (q15_t)0x7D19,\n\t(q15_t)0xE4B8, (q15_t)0x7D0F, (q15_t)0xE487, (q15_t)0x7D04,\n\t(q15_t)0xE456, (q15_t)0x7CF9, (q15_t)0xE425, (q15_t)0x7CEE,\n\t(q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE3C3, (q15_t)0x7CD8,\n\t(q15_t)0xE392, (q15_t)0x7CCD, (q15_t)0xE361, (q15_t)0x7CC2,\n\t(q15_t)0xE330, (q15_t)0x7CB7, (q15_t)0xE2FF, (q15_t)0x7CAB,\n\t(q15_t)0xE2CE, (q15_t)0x7CA0, (q15_t)0xE29D, (q15_t)0x7C94,\n\t(q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE23B, (q15_t)0x7C7D,\n\t(q15_t)0xE20A, (q15_t)0x7C71, (q15_t)0xE1DA, (q15_t)0x7C66,\n\t(q15_t)0xE1A9, (q15_t)0x7C5A, (q15_t)0xE178, (q15_t)0x7C4E,\n\t(q15_t)0xE147, (q15_t)0x7C42, (q15_t)0xE116, (q15_t)0x7C36,\n\t(q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE0B5, (q15_t)0x7C1D,\n\t(q15_t)0xE084, (q15_t)0x7C11, (q15_t)0xE053, (q15_t)0x7C05,\n\t(q15_t)0xE023, (q15_t)0x7BF8, (q15_t)0xDFF2, (q15_t)0x7BEB,\n\t(q15_t)0xDFC1, (q15_t)0x7BDF, (q15_t)0xDF91, (q15_t)0x7BD2,\n\t(q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDF2F, (q15_t)0x7BB9,\n\t(q15_t)0xDEFF, (q15_t)0x7BAC, (q15_t)0xDECE, (q15_t)0x7B9F,\n\t(q15_t)0xDE9E, (q15_t)0x7B92, (q15_t)0xDE6D, (q15_t)0x7B84,\n\t(q15_t)0xDE3D, (q15_t)0x7B77, (q15_t)0xDE0C, (q15_t)0x7B6A,\n\t(q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDDAB, (q15_t)0x7B4F,\n\t(q15_t)0xDD7B, (q15_t)0x7B42, (q15_t)0xDD4B, (q15_t)0x7B34,\n\t(q15_t)0xDD1A, (q15_t)0x7B26, (q15_t)0xDCEA, (q15_t)0x7B19,\n\t(q15_t)0xDCBA, (q15_t)0x7B0B, (q15_t)0xDC89, (q15_t)0x7AFD,\n\t(q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDC29, (q15_t)0x7AE1,\n\t(q15_t)0xDBF8, (q15_t)0x7AD3, (q15_t)0xDBC8, (q15_t)0x7AC5,\n\t(q15_t)0xDB98, (q15_t)0x7AB6, (q15_t)0xDB68, (q15_t)0x7AA8,\n\t(q15_t)0xDB38, (q15_t)0x7A9A, (q15_t)0xDB08, (q15_t)0x7A8B,\n\t(q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDAA7, (q15_t)0x7A6E,\n\t(q15_t)0xDA77, (q15_t)0x7A5F, (q15_t)0xDA47, (q15_t)0x7A50,\n\t(q15_t)0xDA17, (q15_t)0x7A42, (q15_t)0xD9E7, (q15_t)0x7A33,\n\t(q15_t)0xD9B7, (q15_t)0x7A24, (q15_t)0xD987, (q15_t)0x7A15,\n\t(q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD927, (q15_t)0x79F6,\n\t(q15_t)0xD8F8, (q15_t)0x79E7, (q15_t)0xD8C8, (q15_t)0x79D8,\n\t(q15_t)0xD898, (q15_t)0x79C8, (q15_t)0xD868, (q15_t)0x79B9,\n\t(q15_t)0xD838, (q15_t)0x79A9, (q15_t)0xD809, (q15_t)0x7999,\n\t(q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD7A9, (q15_t)0x797A,\n\t(q15_t)0xD779, (q15_t)0x796A, (q15_t)0xD74A, (q15_t)0x795A,\n\t(q15_t)0xD71A, (q15_t)0x794A, (q15_t)0xD6EA, (q15_t)0x793A,\n\t(q15_t)0xD6BB, (q15_t)0x792A, (q15_t)0xD68B, (q15_t)0x7919,\n\t(q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD62C, (q15_t)0x78F9,\n\t(q15_t)0xD5FD, (q15_t)0x78E8, (q15_t)0xD5CD, (q15_t)0x78D8,\n\t(q15_t)0xD59E, (q15_t)0x78C7, (q15_t)0xD56E, (q15_t)0x78B6,\n\t(q15_t)0xD53F, (q15_t)0x78A6, (q15_t)0xD510, (q15_t)0x7895,\n\t(q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD4B1, (q15_t)0x7873,\n\t(q15_t)0xD482, (q15_t)0x7862, (q15_t)0xD452, (q15_t)0x7851,\n\t(q15_t)0xD423, (q15_t)0x7840, (q15_t)0xD3F4, (q15_t)0x782E,\n\t(q15_t)0xD3C5, (q15_t)0x781D, (q15_t)0xD396, (q15_t)0x780C,\n\t(q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD337, (q15_t)0x77E9,\n\t(q15_t)0xD308, (q15_t)0x77D7, (q15_t)0xD2D9, (q15_t)0x77C5,\n\t(q15_t)0xD2AA, (q15_t)0x77B4, (q15_t)0xD27B, (q15_t)0x77A2,\n\t(q15_t)0xD24C, (q15_t)0x7790, (q15_t)0xD21D, (q15_t)0x777E,\n\t(q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD1C0, (q15_t)0x775A,\n\t(q15_t)0xD191, (q15_t)0x7747, (q15_t)0xD162, (q15_t)0x7735,\n\t(q15_t)0xD133, (q15_t)0x7723, (q15_t)0xD104, (q15_t)0x7710,\n\t(q15_t)0xD0D6, (q15_t)0x76FE, (q15_t)0xD0A7, (q15_t)0x76EB,\n\t(q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xD04A, (q15_t)0x76C6,\n\t(q15_t)0xD01B, (q15_t)0x76B3, (q15_t)0xCFEC, (q15_t)0x76A0,\n\t(q15_t)0xCFBE, (q15_t)0x768E, (q15_t)0xCF8F, (q15_t)0x767B,\n\t(q15_t)0xCF61, (q15_t)0x7668, (q15_t)0xCF32, (q15_t)0x7654,\n\t(q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCED5, (q15_t)0x762E,\n\t(q15_t)0xCEA7, (q15_t)0x761B, (q15_t)0xCE79, (q15_t)0x7607,\n\t(q15_t)0xCE4A, (q15_t)0x75F4, (q15_t)0xCE1C, (q15_t)0x75E0,\n\t(q15_t)0xCDEE, (q15_t)0x75CC, (q15_t)0xCDBF, (q15_t)0x75B9,\n\t(q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCD63, (q15_t)0x7591,\n\t(q15_t)0xCD35, (q15_t)0x757D, (q15_t)0xCD07, (q15_t)0x7569,\n\t(q15_t)0xCCD9, (q15_t)0x7555, (q15_t)0xCCAB, (q15_t)0x7541,\n\t(q15_t)0xCC7D, (q15_t)0x752D, (q15_t)0xCC4F, (q15_t)0x7519,\n\t(q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCBF3, (q15_t)0x74F0,\n\t(q15_t)0xCBC5, (q15_t)0x74DB, (q15_t)0xCB97, (q15_t)0x74C7,\n\t(q15_t)0xCB69, (q15_t)0x74B2, (q15_t)0xCB3B, (q15_t)0x749E,\n\t(q15_t)0xCB0D, (q15_t)0x7489, (q15_t)0xCAE0, (q15_t)0x7474,\n\t(q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xCA84, (q15_t)0x744A,\n\t(q15_t)0xCA57, (q15_t)0x7435, (q15_t)0xCA29, (q15_t)0x7420,\n\t(q15_t)0xC9FB, (q15_t)0x740B, (q15_t)0xC9CE, (q15_t)0x73F6,\n\t(q15_t)0xC9A0, (q15_t)0x73E0, (q15_t)0xC973, (q15_t)0x73CB,\n\t(q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC918, (q15_t)0x73A0,\n\t(q15_t)0xC8EB, (q15_t)0x738A, (q15_t)0xC8BD, (q15_t)0x7375,\n\t(q15_t)0xC890, (q15_t)0x735F, (q15_t)0xC863, (q15_t)0x7349,\n\t(q15_t)0xC835, (q15_t)0x7333, (q15_t)0xC808, (q15_t)0x731D,\n\t(q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC7AE, (q15_t)0x72F1,\n\t(q15_t)0xC781, (q15_t)0x72DB, (q15_t)0xC754, (q15_t)0x72C5,\n\t(q15_t)0xC727, (q15_t)0x72AF, (q15_t)0xC6F9, (q15_t)0x7298,\n\t(q15_t)0xC6CD, (q15_t)0x7282, (q15_t)0xC6A0, (q15_t)0x726B,\n\t(q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC646, (q15_t)0x723E,\n\t(q15_t)0xC619, (q15_t)0x7227, (q15_t)0xC5EC, (q15_t)0x7211,\n\t(q15_t)0xC5BF, (q15_t)0x71FA, (q15_t)0xC593, (q15_t)0x71E3,\n\t(q15_t)0xC566, (q15_t)0x71CC, (q15_t)0xC539, (q15_t)0x71B5,\n\t(q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC4E0, (q15_t)0x7186,\n\t(q15_t)0xC4B3, (q15_t)0x716F, (q15_t)0xC487, (q15_t)0x7158,\n\t(q15_t)0xC45A, (q15_t)0x7141, (q15_t)0xC42E, (q15_t)0x7129,\n\t(q15_t)0xC402, (q15_t)0x7112, (q15_t)0xC3D5, (q15_t)0x70FA,\n\t(q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC37C, (q15_t)0x70CB,\n\t(q15_t)0xC350, (q15_t)0x70B3, (q15_t)0xC324, (q15_t)0x709B,\n\t(q15_t)0xC2F8, (q15_t)0x7083, (q15_t)0xC2CC, (q15_t)0x706B,\n\t(q15_t)0xC29F, (q15_t)0x7053, (q15_t)0xC273, (q15_t)0x703B,\n\t(q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC21B, (q15_t)0x700A,\n\t(q15_t)0xC1EF, (q15_t)0x6FF2, (q15_t)0xC1C3, (q15_t)0x6FDA,\n\t(q15_t)0xC197, (q15_t)0x6FC1, (q15_t)0xC16C, (q15_t)0x6FA9,\n\t(q15_t)0xC140, (q15_t)0x6F90, (q15_t)0xC114, (q15_t)0x6F77,\n\t(q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC0BC, (q15_t)0x6F46,\n\t(q15_t)0xC091, (q15_t)0x6F2D, (q15_t)0xC065, (q15_t)0x6F14,\n\t(q15_t)0xC03A, (q15_t)0x6EFB, (q15_t)0xC00E, (q15_t)0x6EE2,\n\t(q15_t)0xBFE2, (q15_t)0x6EC9, (q15_t)0xBFB7, (q15_t)0x6EAF,\n\t(q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBF60, (q15_t)0x6E7D,\n\t(q15_t)0xBF35, (q15_t)0x6E63, (q15_t)0xBF09, (q15_t)0x6E4A,\n\t(q15_t)0xBEDE, (q15_t)0x6E30, (q15_t)0xBEB3, (q15_t)0x6E17,\n\t(q15_t)0xBE88, (q15_t)0x6DFD, (q15_t)0xBE5D, (q15_t)0x6DE3,\n\t(q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBE06, (q15_t)0x6DB0,\n\t(q15_t)0xBDDB, (q15_t)0x6D96, (q15_t)0xBDB0, (q15_t)0x6D7C,\n\t(q15_t)0xBD85, (q15_t)0x6D62, (q15_t)0xBD5A, (q15_t)0x6D48,\n\t(q15_t)0xBD2F, (q15_t)0x6D2D, (q15_t)0xBD05, (q15_t)0x6D13,\n\t(q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBCAF, (q15_t)0x6CDE,\n\t(q15_t)0xBC84, (q15_t)0x6CC4, (q15_t)0xBC5A, (q15_t)0x6CA9,\n\t(q15_t)0xBC2F, (q15_t)0x6C8F, (q15_t)0xBC04, (q15_t)0x6C74,\n\t(q15_t)0xBBDA, (q15_t)0x6C59, (q15_t)0xBBAF, (q15_t)0x6C3F,\n\t(q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBB5A, (q15_t)0x6C09,\n\t(q15_t)0xBB30, (q15_t)0x6BEE, (q15_t)0xBB05, (q15_t)0x6BD3,\n\t(q15_t)0xBADB, (q15_t)0x6BB8, (q15_t)0xBAB1, (q15_t)0x6B9C,\n\t(q15_t)0xBA87, (q15_t)0x6B81, (q15_t)0xBA5C, (q15_t)0x6B66,\n\t(q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xBA08, (q15_t)0x6B2F,\n\t(q15_t)0xB9DE, (q15_t)0x6B13, (q15_t)0xB9B4, (q15_t)0x6AF8,\n\t(q15_t)0xB98A, (q15_t)0x6ADC, (q15_t)0xB960, (q15_t)0x6AC1,\n\t(q15_t)0xB936, (q15_t)0x6AA5, (q15_t)0xB90C, (q15_t)0x6A89,\n\t(q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB8B9, (q15_t)0x6A51,\n\t(q15_t)0xB88F, (q15_t)0x6A35, (q15_t)0xB865, (q15_t)0x6A19,\n\t(q15_t)0xB83C, (q15_t)0x69FD, (q15_t)0xB812, (q15_t)0x69E1,\n\t(q15_t)0xB7E9, (q15_t)0x69C4, (q15_t)0xB7BF, (q15_t)0x69A8,\n\t(q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB76C, (q15_t)0x696F,\n\t(q15_t)0xB743, (q15_t)0x6953, (q15_t)0xB719, (q15_t)0x6936,\n\t(q15_t)0xB6F0, (q15_t)0x6919, (q15_t)0xB6C7, (q15_t)0x68FD,\n\t(q15_t)0xB69E, (q15_t)0x68E0, (q15_t)0xB675, (q15_t)0x68C3,\n\t(q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB622, (q15_t)0x6889,\n\t(q15_t)0xB5F9, (q15_t)0x686C, (q15_t)0xB5D0, (q15_t)0x684F,\n\t(q15_t)0xB5A7, (q15_t)0x6832, (q15_t)0xB57E, (q15_t)0x6815,\n\t(q15_t)0xB556, (q15_t)0x67F7, (q15_t)0xB52D, (q15_t)0x67DA,\n\t(q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB4DB, (q15_t)0x679F,\n\t(q15_t)0xB4B3, (q15_t)0x6782, (q15_t)0xB48A, (q15_t)0x6764,\n\t(q15_t)0xB461, (q15_t)0x6746, (q15_t)0xB439, (q15_t)0x6729,\n\t(q15_t)0xB410, (q15_t)0x670B, (q15_t)0xB3E8, (q15_t)0x66ED,\n\t(q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB397, (q15_t)0x66B1,\n\t(q15_t)0xB36F, (q15_t)0x6693, (q15_t)0xB347, (q15_t)0x6675,\n\t(q15_t)0xB31E, (q15_t)0x6657, (q15_t)0xB2F6, (q15_t)0x6639,\n\t(q15_t)0xB2CE, (q15_t)0x661A, (q15_t)0xB2A6, (q15_t)0x65FC,\n\t(q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB256, (q15_t)0x65BF,\n\t(q15_t)0xB22E, (q15_t)0x65A0, (q15_t)0xB206, (q15_t)0x6582,\n\t(q15_t)0xB1DE, (q15_t)0x6563, (q15_t)0xB1B7, (q15_t)0x6545,\n\t(q15_t)0xB18F, (q15_t)0x6526, (q15_t)0xB167, (q15_t)0x6507,\n\t(q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB118, (q15_t)0x64C9,\n\t(q15_t)0xB0F0, (q15_t)0x64AA, (q15_t)0xB0C9, (q15_t)0x648B,\n\t(q15_t)0xB0A1, (q15_t)0x646C, (q15_t)0xB07A, (q15_t)0x644D,\n\t(q15_t)0xB053, (q15_t)0x642D, (q15_t)0xB02B, (q15_t)0x640E,\n\t(q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAFDD, (q15_t)0x63CF,\n\t(q15_t)0xAFB6, (q15_t)0x63B0, (q15_t)0xAF8F, (q15_t)0x6390,\n\t(q15_t)0xAF68, (q15_t)0x6371, (q15_t)0xAF40, (q15_t)0x6351,\n\t(q15_t)0xAF1A, (q15_t)0x6331, (q15_t)0xAEF3, (q15_t)0x6311,\n\t(q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAEA5, (q15_t)0x62D2,\n\t(q15_t)0xAE7E, (q15_t)0x62B2, (q15_t)0xAE57, (q15_t)0x6292,\n\t(q15_t)0xAE31, (q15_t)0x6271, (q15_t)0xAE0A, (q15_t)0x6251,\n\t(q15_t)0xADE3, (q15_t)0x6231, (q15_t)0xADBD, (q15_t)0x6211,\n\t(q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xAD70, (q15_t)0x61D0,\n\t(q15_t)0xAD4A, (q15_t)0x61B0, (q15_t)0xAD23, (q15_t)0x618F,\n\t(q15_t)0xACFD, (q15_t)0x616F, (q15_t)0xACD7, (q15_t)0x614E,\n\t(q15_t)0xACB1, (q15_t)0x612D, (q15_t)0xAC8A, (q15_t)0x610D,\n\t(q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAC3E, (q15_t)0x60CB,\n\t(q15_t)0xAC18, (q15_t)0x60AA, (q15_t)0xABF2, (q15_t)0x6089,\n\t(q15_t)0xABCC, (q15_t)0x6068, (q15_t)0xABA7, (q15_t)0x6047,\n\t(q15_t)0xAB81, (q15_t)0x6026, (q15_t)0xAB5B, (q15_t)0x6004,\n\t(q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAB10, (q15_t)0x5FC2,\n\t(q15_t)0xAAEA, (q15_t)0x5FA0, (q15_t)0xAAC5, (q15_t)0x5F7F,\n\t(q15_t)0xAA9F, (q15_t)0x5F5E, (q15_t)0xAA7A, (q15_t)0x5F3C,\n\t(q15_t)0xAA54, (q15_t)0x5F1A, (q15_t)0xAA2F, (q15_t)0x5EF9,\n\t(q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA9E5, (q15_t)0x5EB5,\n\t(q15_t)0xA9BF, (q15_t)0x5E93, (q15_t)0xA99A, (q15_t)0x5E71,\n\t(q15_t)0xA975, (q15_t)0x5E50, (q15_t)0xA950, (q15_t)0x5E2D,\n\t(q15_t)0xA92B, (q15_t)0x5E0B, (q15_t)0xA906, (q15_t)0x5DE9,\n\t(q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA8BD, (q15_t)0x5DA5,\n\t(q15_t)0xA898, (q15_t)0x5D83, (q15_t)0xA873, (q15_t)0x5D60,\n\t(q15_t)0xA84F, (q15_t)0x5D3E, (q15_t)0xA82A, (q15_t)0x5D1B,\n\t(q15_t)0xA806, (q15_t)0x5CF9, (q15_t)0xA7E1, (q15_t)0x5CD6,\n\t(q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA798, (q15_t)0x5C91,\n\t(q15_t)0xA774, (q15_t)0x5C6E, (q15_t)0xA750, (q15_t)0x5C4B,\n\t(q15_t)0xA72B, (q15_t)0x5C29, (q15_t)0xA707, (q15_t)0x5C06,\n\t(q15_t)0xA6E3, (q15_t)0x5BE3, (q15_t)0xA6BF, (q15_t)0x5BC0,\n\t(q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA677, (q15_t)0x5B79,\n\t(q15_t)0xA653, (q15_t)0x5B56, (q15_t)0xA62F, (q15_t)0x5B33,\n\t(q15_t)0xA60C, (q15_t)0x5B10, (q15_t)0xA5E8, (q15_t)0x5AEC,\n\t(q15_t)0xA5C4, (q15_t)0x5AC9, (q15_t)0xA5A1, (q15_t)0x5AA5,\n\t(q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA55A, (q15_t)0x5A5E,\n\t(q15_t)0xA536, (q15_t)0x5A3B, (q15_t)0xA513, (q15_t)0x5A17,\n\t(q15_t)0xA4EF, (q15_t)0x59F3, (q15_t)0xA4CC, (q15_t)0x59D0,\n\t(q15_t)0xA4A9, (q15_t)0x59AC, (q15_t)0xA486, (q15_t)0x5988,\n\t(q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA43F, (q15_t)0x5940,\n\t(q15_t)0xA41C, (q15_t)0x591C, (q15_t)0xA3F9, (q15_t)0x58F8,\n\t(q15_t)0xA3D6, (q15_t)0x58D4, (q15_t)0xA3B4, (q15_t)0x58AF,\n\t(q15_t)0xA391, (q15_t)0x588B, (q15_t)0xA36E, (q15_t)0x5867,\n\t(q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA329, (q15_t)0x581E,\n\t(q15_t)0xA306, (q15_t)0x57F9, (q15_t)0xA2E4, (q15_t)0x57D5,\n\t(q15_t)0xA2C1, (q15_t)0x57B0, (q15_t)0xA29F, (q15_t)0x578C,\n\t(q15_t)0xA27C, (q15_t)0x5767, (q15_t)0xA25A, (q15_t)0x5742,\n\t(q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA216, (q15_t)0x56F9,\n\t(q15_t)0xA1F4, (q15_t)0x56D4, (q15_t)0xA1D2, (q15_t)0x56AF,\n\t(q15_t)0xA1AF, (q15_t)0x568A, (q15_t)0xA18E, (q15_t)0x5665,\n\t(q15_t)0xA16C, (q15_t)0x5640, (q15_t)0xA14A, (q15_t)0x561A,\n\t(q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA106, (q15_t)0x55D0,\n\t(q15_t)0xA0E5, (q15_t)0x55AB, (q15_t)0xA0C3, (q15_t)0x5585,\n\t(q15_t)0xA0A1, (q15_t)0x5560, (q15_t)0xA080, (q15_t)0x553A,\n\t(q15_t)0xA05F, (q15_t)0x5515, (q15_t)0xA03D, (q15_t)0x54EF,\n\t(q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9FFB, (q15_t)0x54A4,\n\t(q15_t)0x9FD9, (q15_t)0x547E, (q15_t)0x9FB8, (q15_t)0x5458,\n\t(q15_t)0x9F97, (q15_t)0x5433, (q15_t)0x9F76, (q15_t)0x540D,\n\t(q15_t)0x9F55, (q15_t)0x53E7, (q15_t)0x9F34, (q15_t)0x53C1,\n\t(q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9EF2, (q15_t)0x5375,\n\t(q15_t)0x9ED2, (q15_t)0x534E, (q15_t)0x9EB1, (q15_t)0x5328,\n\t(q15_t)0x9E90, (q15_t)0x5302, (q15_t)0x9E70, (q15_t)0x52DC,\n\t(q15_t)0x9E4F, (q15_t)0x52B5, (q15_t)0x9E2F, (q15_t)0x528F,\n\t(q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9DEE, (q15_t)0x5242,\n\t(q15_t)0x9DCE, (q15_t)0x521C, (q15_t)0x9DAE, (q15_t)0x51F5,\n\t(q15_t)0x9D8E, (q15_t)0x51CE, (q15_t)0x9D6D, (q15_t)0x51A8,\n\t(q15_t)0x9D4D, (q15_t)0x5181, (q15_t)0x9D2D, (q15_t)0x515A,\n\t(q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9CEE, (q15_t)0x510C,\n\t(q15_t)0x9CCE, (q15_t)0x50E5, (q15_t)0x9CAE, (q15_t)0x50BF,\n\t(q15_t)0x9C8E, (q15_t)0x5097, (q15_t)0x9C6F, (q15_t)0x5070,\n\t(q15_t)0x9C4F, (q15_t)0x5049, (q15_t)0x9C30, (q15_t)0x5022,\n\t(q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9BF1, (q15_t)0x4FD4,\n\t(q15_t)0x9BD2, (q15_t)0x4FAC, (q15_t)0x9BB2, (q15_t)0x4F85,\n\t(q15_t)0x9B93, (q15_t)0x4F5E, (q15_t)0x9B74, (q15_t)0x4F36,\n\t(q15_t)0x9B55, (q15_t)0x4F0F, (q15_t)0x9B36, (q15_t)0x4EE7,\n\t(q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9AF8, (q15_t)0x4E98,\n\t(q15_t)0x9AD9, (q15_t)0x4E70, (q15_t)0x9ABA, (q15_t)0x4E48,\n\t(q15_t)0x9A9C, (q15_t)0x4E21, (q15_t)0x9A7D, (q15_t)0x4DF9,\n\t(q15_t)0x9A5F, (q15_t)0x4DD1, (q15_t)0x9A40, (q15_t)0x4DA9,\n\t(q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x9A03, (q15_t)0x4D59,\n\t(q15_t)0x99E5, (q15_t)0x4D31, (q15_t)0x99C6, (q15_t)0x4D09,\n\t(q15_t)0x99A8, (q15_t)0x4CE1, (q15_t)0x998A, (q15_t)0x4CB8,\n\t(q15_t)0x996C, (q15_t)0x4C90, (q15_t)0x994E, (q15_t)0x4C68,\n\t(q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9912, (q15_t)0x4C17,\n\t(q15_t)0x98F4, (q15_t)0x4BEF, (q15_t)0x98D6, (q15_t)0x4BC6,\n\t(q15_t)0x98B9, (q15_t)0x4B9E, (q15_t)0x989B, (q15_t)0x4B75,\n\t(q15_t)0x987D, (q15_t)0x4B4C, (q15_t)0x9860, (q15_t)0x4B24,\n\t(q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x9825, (q15_t)0x4AD2,\n\t(q15_t)0x9808, (q15_t)0x4AA9, (q15_t)0x97EA, (q15_t)0x4A81,\n\t(q15_t)0x97CD, (q15_t)0x4A58, (q15_t)0x97B0, (q15_t)0x4A2F,\n\t(q15_t)0x9793, (q15_t)0x4A06, (q15_t)0x9776, (q15_t)0x49DD,\n\t(q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x973C, (q15_t)0x498A,\n\t(q15_t)0x971F, (q15_t)0x4961, (q15_t)0x9702, (q15_t)0x4938,\n\t(q15_t)0x96E6, (q15_t)0x490F, (q15_t)0x96C9, (q15_t)0x48E6,\n\t(q15_t)0x96AC, (q15_t)0x48BC, (q15_t)0x9690, (q15_t)0x4893,\n\t(q15_t)0x9673, (q15_t)0x4869, (q15_t)0x9657, (q15_t)0x4840,\n\t(q15_t)0x963B, (q15_t)0x4816, (q15_t)0x961E, (q15_t)0x47ED,\n\t(q15_t)0x9602, (q15_t)0x47C3, (q15_t)0x95E6, (q15_t)0x479A,\n\t(q15_t)0x95CA, (q15_t)0x4770, (q15_t)0x95AE, (q15_t)0x4746,\n\t(q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9576, (q15_t)0x46F3,\n\t(q15_t)0x955A, (q15_t)0x46C9, (q15_t)0x953E, (q15_t)0x469F,\n\t(q15_t)0x9523, (q15_t)0x4675, (q15_t)0x9507, (q15_t)0x464B,\n\t(q15_t)0x94EC, (q15_t)0x4621, (q15_t)0x94D0, (q15_t)0x45F7,\n\t(q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x9499, (q15_t)0x45A3,\n\t(q15_t)0x947E, (q15_t)0x4578, (q15_t)0x9463, (q15_t)0x454E,\n\t(q15_t)0x9447, (q15_t)0x4524, (q15_t)0x942C, (q15_t)0x44FA,\n\t(q15_t)0x9411, (q15_t)0x44CF, (q15_t)0x93F6, (q15_t)0x44A5,\n\t(q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x93C0, (q15_t)0x4450,\n\t(q15_t)0x93A6, (q15_t)0x4425, (q15_t)0x938B, (q15_t)0x43FB,\n\t(q15_t)0x9370, (q15_t)0x43D0, (q15_t)0x9356, (q15_t)0x43A5,\n\t(q15_t)0x933B, (q15_t)0x437B, (q15_t)0x9321, (q15_t)0x4350,\n\t(q15_t)0x9306, (q15_t)0x4325, (q15_t)0x92EC, (q15_t)0x42FA,\n\t(q15_t)0x92D2, (q15_t)0x42D0, (q15_t)0x92B7, (q15_t)0x42A5,\n\t(q15_t)0x929D, (q15_t)0x427A, (q15_t)0x9283, (q15_t)0x424F,\n\t(q15_t)0x9269, (q15_t)0x4224, (q15_t)0x924F, (q15_t)0x41F9,\n\t(q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x921C, (q15_t)0x41A2,\n\t(q15_t)0x9202, (q15_t)0x4177, (q15_t)0x91E8, (q15_t)0x414C,\n\t(q15_t)0x91CF, (q15_t)0x4121, (q15_t)0x91B5, (q15_t)0x40F6,\n\t(q15_t)0x919C, (q15_t)0x40CA, (q15_t)0x9182, (q15_t)0x409F,\n\t(q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9150, (q15_t)0x4048,\n\t(q15_t)0x9136, (q15_t)0x401D, (q15_t)0x911D, (q15_t)0x3FF1,\n\t(q15_t)0x9104, (q15_t)0x3FC5, (q15_t)0x90EB, (q15_t)0x3F9A,\n\t(q15_t)0x90D2, (q15_t)0x3F6E, (q15_t)0x90B9, (q15_t)0x3F43,\n\t(q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x9088, (q15_t)0x3EEB,\n\t(q15_t)0x906F, (q15_t)0x3EBF, (q15_t)0x9056, (q15_t)0x3E93,\n\t(q15_t)0x903E, (q15_t)0x3E68, (q15_t)0x9025, (q15_t)0x3E3C,\n\t(q15_t)0x900D, (q15_t)0x3E10, (q15_t)0x8FF5, (q15_t)0x3DE4,\n\t(q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8FC4, (q15_t)0x3D8C,\n\t(q15_t)0x8FAC, (q15_t)0x3D60, (q15_t)0x8F94, (q15_t)0x3D33,\n\t(q15_t)0x8F7C, (q15_t)0x3D07, (q15_t)0x8F64, (q15_t)0x3CDB,\n\t(q15_t)0x8F4C, (q15_t)0x3CAF, (q15_t)0x8F34, (q15_t)0x3C83,\n\t(q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8F05, (q15_t)0x3C2A,\n\t(q15_t)0x8EED, (q15_t)0x3BFD, (q15_t)0x8ED6, (q15_t)0x3BD1,\n\t(q15_t)0x8EBE, (q15_t)0x3BA5, (q15_t)0x8EA7, (q15_t)0x3B78,\n\t(q15_t)0x8E90, (q15_t)0x3B4C, (q15_t)0x8E79, (q15_t)0x3B1F,\n\t(q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E4A, (q15_t)0x3AC6,\n\t(q15_t)0x8E33, (q15_t)0x3A99, (q15_t)0x8E1C, (q15_t)0x3A6C,\n\t(q15_t)0x8E05, (q15_t)0x3A40, (q15_t)0x8DEE, (q15_t)0x3A13,\n\t(q15_t)0x8DD8, (q15_t)0x39E6, (q15_t)0x8DC1, (q15_t)0x39B9,\n\t(q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D94, (q15_t)0x395F,\n\t(q15_t)0x8D7D, (q15_t)0x3932, (q15_t)0x8D67, (q15_t)0x3906,\n\t(q15_t)0x8D50, (q15_t)0x38D8, (q15_t)0x8D3A, (q15_t)0x38AB,\n\t(q15_t)0x8D24, (q15_t)0x387E, (q15_t)0x8D0E, (q15_t)0x3851,\n\t(q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CE2, (q15_t)0x37F7,\n\t(q15_t)0x8CCC, (q15_t)0x37CA, (q15_t)0x8CB6, (q15_t)0x379C,\n\t(q15_t)0x8CA0, (q15_t)0x376F, (q15_t)0x8C8A, (q15_t)0x3742,\n\t(q15_t)0x8C75, (q15_t)0x3714, (q15_t)0x8C5F, (q15_t)0x36E7,\n\t(q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8C34, (q15_t)0x368C,\n\t(q15_t)0x8C1F, (q15_t)0x365F, (q15_t)0x8C09, (q15_t)0x3631,\n\t(q15_t)0x8BF4, (q15_t)0x3604, (q15_t)0x8BDF, (q15_t)0x35D6,\n\t(q15_t)0x8BCA, (q15_t)0x35A8, (q15_t)0x8BB5, (q15_t)0x357B,\n\t(q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B8B, (q15_t)0x351F,\n\t(q15_t)0x8B76, (q15_t)0x34F2, (q15_t)0x8B61, (q15_t)0x34C4,\n\t(q15_t)0x8B4D, (q15_t)0x3496, (q15_t)0x8B38, (q15_t)0x3468,\n\t(q15_t)0x8B24, (q15_t)0x343A, (q15_t)0x8B0F, (q15_t)0x340C,\n\t(q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AE6, (q15_t)0x33B0,\n\t(q15_t)0x8AD2, (q15_t)0x3382, (q15_t)0x8ABE, (q15_t)0x3354,\n\t(q15_t)0x8AAA, (q15_t)0x3326, (q15_t)0x8A96, (q15_t)0x32F8,\n\t(q15_t)0x8A82, (q15_t)0x32CA, (q15_t)0x8A6E, (q15_t)0x329C,\n\t(q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A46, (q15_t)0x3240,\n\t(q15_t)0x8A33, (q15_t)0x3211, (q15_t)0x8A1F, (q15_t)0x31E3,\n\t(q15_t)0x8A0B, (q15_t)0x31B5, (q15_t)0x89F8, (q15_t)0x3186,\n\t(q15_t)0x89E4, (q15_t)0x3158, (q15_t)0x89D1, (q15_t)0x312A,\n\t(q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x89AB, (q15_t)0x30CD,\n\t(q15_t)0x8997, (q15_t)0x309E, (q15_t)0x8984, (q15_t)0x3070,\n\t(q15_t)0x8971, (q15_t)0x3041, (q15_t)0x895F, (q15_t)0x3013,\n\t(q15_t)0x894C, (q15_t)0x2FE4, (q15_t)0x8939, (q15_t)0x2FB5,\n\t(q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x8914, (q15_t)0x2F58,\n\t(q15_t)0x8901, (q15_t)0x2F29, (q15_t)0x88EF, (q15_t)0x2EFB,\n\t(q15_t)0x88DC, (q15_t)0x2ECC, (q15_t)0x88CA, (q15_t)0x2E9D,\n\t(q15_t)0x88B8, (q15_t)0x2E6E, (q15_t)0x88A5, (q15_t)0x2E3F,\n\t(q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x8881, (q15_t)0x2DE2,\n\t(q15_t)0x886F, (q15_t)0x2DB3, (q15_t)0x885D, (q15_t)0x2D84,\n\t(q15_t)0x884B, (q15_t)0x2D55, (q15_t)0x883A, (q15_t)0x2D26,\n\t(q15_t)0x8828, (q15_t)0x2CF7, (q15_t)0x8816, (q15_t)0x2CC8,\n\t(q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87F3, (q15_t)0x2C69,\n\t(q15_t)0x87E2, (q15_t)0x2C3A, (q15_t)0x87D1, (q15_t)0x2C0B,\n\t(q15_t)0x87BF, (q15_t)0x2BDC, (q15_t)0x87AE, (q15_t)0x2BAD,\n\t(q15_t)0x879D, (q15_t)0x2B7D, (q15_t)0x878C, (q15_t)0x2B4E,\n\t(q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x876A, (q15_t)0x2AEF,\n\t(q15_t)0x8759, (q15_t)0x2AC0, (q15_t)0x8749, (q15_t)0x2A91,\n\t(q15_t)0x8738, (q15_t)0x2A61, (q15_t)0x8727, (q15_t)0x2A32,\n\t(q15_t)0x8717, (q15_t)0x2A02, (q15_t)0x8706, (q15_t)0x29D3,\n\t(q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86E6, (q15_t)0x2974,\n\t(q15_t)0x86D5, (q15_t)0x2944, (q15_t)0x86C5, (q15_t)0x2915,\n\t(q15_t)0x86B5, (q15_t)0x28E5, (q15_t)0x86A5, (q15_t)0x28B5,\n\t(q15_t)0x8695, (q15_t)0x2886, (q15_t)0x8685, (q15_t)0x2856,\n\t(q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8666, (q15_t)0x27F6,\n\t(q15_t)0x8656, (q15_t)0x27C7, (q15_t)0x8646, (q15_t)0x2797,\n\t(q15_t)0x8637, (q15_t)0x2767, (q15_t)0x8627, (q15_t)0x2737,\n\t(q15_t)0x8618, (q15_t)0x2707, (q15_t)0x8609, (q15_t)0x26D8,\n\t(q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85EA, (q15_t)0x2678,\n\t(q15_t)0x85DB, (q15_t)0x2648, (q15_t)0x85CC, (q15_t)0x2618,\n\t(q15_t)0x85BD, (q15_t)0x25E8, (q15_t)0x85AF, (q15_t)0x25B8,\n\t(q15_t)0x85A0, (q15_t)0x2588, (q15_t)0x8591, (q15_t)0x2558,\n\t(q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8574, (q15_t)0x24F7,\n\t(q15_t)0x8565, (q15_t)0x24C7, (q15_t)0x8557, (q15_t)0x2497,\n\t(q15_t)0x8549, (q15_t)0x2467, (q15_t)0x853A, (q15_t)0x2437,\n\t(q15_t)0x852C, (q15_t)0x2407, (q15_t)0x851E, (q15_t)0x23D6,\n\t(q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x8502, (q15_t)0x2376,\n\t(q15_t)0x84F4, (q15_t)0x2345, (q15_t)0x84E6, (q15_t)0x2315,\n\t(q15_t)0x84D9, (q15_t)0x22E5, (q15_t)0x84CB, (q15_t)0x22B4,\n\t(q15_t)0x84BD, (q15_t)0x2284, (q15_t)0x84B0, (q15_t)0x2254,\n\t(q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x8495, (q15_t)0x21F3,\n\t(q15_t)0x8488, (q15_t)0x21C2, (q15_t)0x847B, (q15_t)0x2192,\n\t(q15_t)0x846D, (q15_t)0x2161, (q15_t)0x8460, (q15_t)0x2131,\n\t(q15_t)0x8453, (q15_t)0x2100, (q15_t)0x8446, (q15_t)0x20D0,\n\t(q15_t)0x843A, (q15_t)0x209F, (q15_t)0x842D, (q15_t)0x206E,\n\t(q15_t)0x8420, (q15_t)0x203E, (q15_t)0x8414, (q15_t)0x200D,\n\t(q15_t)0x8407, (q15_t)0x1FDC, (q15_t)0x83FA, (q15_t)0x1FAC,\n\t(q15_t)0x83EE, (q15_t)0x1F7B, (q15_t)0x83E2, (q15_t)0x1F4A,\n\t(q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83C9, (q15_t)0x1EE9,\n\t(q15_t)0x83BD, (q15_t)0x1EB8, (q15_t)0x83B1, (q15_t)0x1E87,\n\t(q15_t)0x83A5, (q15_t)0x1E56, (q15_t)0x8399, (q15_t)0x1E25,\n\t(q15_t)0x838E, (q15_t)0x1DF5, (q15_t)0x8382, (q15_t)0x1DC4,\n\t(q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x836B, (q15_t)0x1D62,\n\t(q15_t)0x835F, (q15_t)0x1D31, (q15_t)0x8354, (q15_t)0x1D00,\n\t(q15_t)0x8348, (q15_t)0x1CCF, (q15_t)0x833D, (q15_t)0x1C9E,\n\t(q15_t)0x8332, (q15_t)0x1C6D, (q15_t)0x8327, (q15_t)0x1C3C,\n\t(q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x8311, (q15_t)0x1BDA,\n\t(q15_t)0x8306, (q15_t)0x1BA9, (q15_t)0x82FB, (q15_t)0x1B78,\n\t(q15_t)0x82F0, (q15_t)0x1B47, (q15_t)0x82E6, (q15_t)0x1B16,\n\t(q15_t)0x82DB, (q15_t)0x1AE4, (q15_t)0x82D0, (q15_t)0x1AB3,\n\t(q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x82BC, (q15_t)0x1A51,\n\t(q15_t)0x82B1, (q15_t)0x1A20, (q15_t)0x82A7, (q15_t)0x19EF,\n\t(q15_t)0x829D, (q15_t)0x19BD, (q15_t)0x8293, (q15_t)0x198C,\n\t(q15_t)0x8289, (q15_t)0x195B, (q15_t)0x827F, (q15_t)0x192A,\n\t(q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x826B, (q15_t)0x18C7,\n\t(q15_t)0x8262, (q15_t)0x1896, (q15_t)0x8258, (q15_t)0x1864,\n\t(q15_t)0x824F, (q15_t)0x1833, (q15_t)0x8245, (q15_t)0x1802,\n\t(q15_t)0x823C, (q15_t)0x17D0, (q15_t)0x8232, (q15_t)0x179F,\n\t(q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8220, (q15_t)0x173C,\n\t(q15_t)0x8217, (q15_t)0x170A, (q15_t)0x820E, (q15_t)0x16D9,\n\t(q15_t)0x8205, (q15_t)0x16A8, (q15_t)0x81FC, (q15_t)0x1676,\n\t(q15_t)0x81F3, (q15_t)0x1645, (q15_t)0x81EB, (q15_t)0x1613,\n\t(q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81D9, (q15_t)0x15B0,\n\t(q15_t)0x81D1, (q15_t)0x157F, (q15_t)0x81C8, (q15_t)0x154D,\n\t(q15_t)0x81C0, (q15_t)0x151B, (q15_t)0x81B8, (q15_t)0x14EA,\n\t(q15_t)0x81B0, (q15_t)0x14B8, (q15_t)0x81A8, (q15_t)0x1487,\n\t(q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8198, (q15_t)0x1423,\n\t(q15_t)0x8190, (q15_t)0x13F2, (q15_t)0x8188, (q15_t)0x13C0,\n\t(q15_t)0x8180, (q15_t)0x138E, (q15_t)0x8179, (q15_t)0x135D,\n\t(q15_t)0x8171, (q15_t)0x132B, (q15_t)0x816A, (q15_t)0x12F9,\n\t(q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x815B, (q15_t)0x1296,\n\t(q15_t)0x8154, (q15_t)0x1264, (q15_t)0x814C, (q15_t)0x1232,\n\t(q15_t)0x8145, (q15_t)0x1201, (q15_t)0x813E, (q15_t)0x11CF,\n\t(q15_t)0x8137, (q15_t)0x119D, (q15_t)0x8130, (q15_t)0x116B,\n\t(q15_t)0x812A, (q15_t)0x1139, (q15_t)0x8123, (q15_t)0x1108,\n\t(q15_t)0x811C, (q15_t)0x10D6, (q15_t)0x8116, (q15_t)0x10A4,\n\t(q15_t)0x810F, (q15_t)0x1072, (q15_t)0x8109, (q15_t)0x1040,\n\t(q15_t)0x8102, (q15_t)0x100E, (q15_t)0x80FC, (q15_t)0x0FDD,\n\t(q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80F0, (q15_t)0x0F79,\n\t(q15_t)0x80EA, (q15_t)0x0F47, (q15_t)0x80E4, (q15_t)0x0F15,\n\t(q15_t)0x80DE, (q15_t)0x0EE3, (q15_t)0x80D8, (q15_t)0x0EB1,\n\t(q15_t)0x80D2, (q15_t)0x0E7F, (q15_t)0x80CD, (q15_t)0x0E4D,\n\t(q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80C2, (q15_t)0x0DE9,\n\t(q15_t)0x80BC, (q15_t)0x0DB7, (q15_t)0x80B7, (q15_t)0x0D85,\n\t(q15_t)0x80B2, (q15_t)0x0D53, (q15_t)0x80AC, (q15_t)0x0D21,\n\t(q15_t)0x80A7, (q15_t)0x0CEF, (q15_t)0x80A2, (q15_t)0x0CBD,\n\t(q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8098, (q15_t)0x0C59,\n\t(q15_t)0x8094, (q15_t)0x0C27, (q15_t)0x808F, (q15_t)0x0BF5,\n\t(q15_t)0x808A, (q15_t)0x0BC3, (q15_t)0x8086, (q15_t)0x0B91,\n\t(q15_t)0x8081, (q15_t)0x0B5F, (q15_t)0x807D, (q15_t)0x0B2D,\n\t(q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8074, (q15_t)0x0AC9,\n\t(q15_t)0x8070, (q15_t)0x0A97, (q15_t)0x806C, (q15_t)0x0A65,\n\t(q15_t)0x8068, (q15_t)0x0A33, (q15_t)0x8064, (q15_t)0x0A00,\n\t(q15_t)0x8060, (q15_t)0x09CE, (q15_t)0x805C, (q15_t)0x099C,\n\t(q15_t)0x8058, (q15_t)0x096A, (q15_t)0x8055, (q15_t)0x0938,\n\t(q15_t)0x8051, (q15_t)0x0906, (q15_t)0x804E, (q15_t)0x08D4,\n\t(q15_t)0x804A, (q15_t)0x08A2, (q15_t)0x8047, (q15_t)0x086F,\n\t(q15_t)0x8043, (q15_t)0x083D, (q15_t)0x8040, (q15_t)0x080B,\n\t(q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x803A, (q15_t)0x07A7,\n\t(q15_t)0x8037, (q15_t)0x0775, (q15_t)0x8034, (q15_t)0x0742,\n\t(q15_t)0x8031, (q15_t)0x0710, (q15_t)0x802F, (q15_t)0x06DE,\n\t(q15_t)0x802C, (q15_t)0x06AC, (q15_t)0x8029, (q15_t)0x067A,\n\t(q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8025, (q15_t)0x0615,\n\t(q15_t)0x8022, (q15_t)0x05E3, (q15_t)0x8020, (q15_t)0x05B1,\n\t(q15_t)0x801E, (q15_t)0x057F, (q15_t)0x801C, (q15_t)0x054C,\n\t(q15_t)0x801A, (q15_t)0x051A, (q15_t)0x8018, (q15_t)0x04E8,\n\t(q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x8014, (q15_t)0x0483,\n\t(q15_t)0x8012, (q15_t)0x0451, (q15_t)0x8011, (q15_t)0x041F,\n\t(q15_t)0x800F, (q15_t)0x03ED, (q15_t)0x800D, (q15_t)0x03BA,\n\t(q15_t)0x800C, (q15_t)0x0388, (q15_t)0x800B, (q15_t)0x0356,\n\t(q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8008, (q15_t)0x02F1,\n\t(q15_t)0x8007, (q15_t)0x02BF, (q15_t)0x8006, (q15_t)0x028D,\n\t(q15_t)0x8005, (q15_t)0x025B, (q15_t)0x8004, (q15_t)0x0228,\n\t(q15_t)0x8003, (q15_t)0x01F6, (q15_t)0x8003, (q15_t)0x01C4,\n\t(q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8001, (q15_t)0x015F,\n\t(q15_t)0x8001, (q15_t)0x012D, (q15_t)0x8000, (q15_t)0x00FB,\n\t(q15_t)0x8000, (q15_t)0x00C9, (q15_t)0x8000, (q15_t)0x0096,\n\t(q15_t)0x8000, (q15_t)0x0064, (q15_t)0x8000, (q15_t)0x0032,\n\t(q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFFCD,\n\t(q15_t)0x8000, (q15_t)0xFF9B, (q15_t)0x8000, (q15_t)0xFF69,\n\t(q15_t)0x8000, (q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF04,\n\t(q15_t)0x8001, (q15_t)0xFED2, (q15_t)0x8001, (q15_t)0xFEA0,\n\t(q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8003, (q15_t)0xFE3B,\n\t(q15_t)0x8003, (q15_t)0xFE09, (q15_t)0x8004, (q15_t)0xFDD7,\n\t(q15_t)0x8005, (q15_t)0xFDA4, (q15_t)0x8006, (q15_t)0xFD72,\n\t(q15_t)0x8007, (q15_t)0xFD40, (q15_t)0x8008, (q15_t)0xFD0E,\n\t(q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800B, (q15_t)0xFCA9,\n\t(q15_t)0x800C, (q15_t)0xFC77, (q15_t)0x800D, (q15_t)0xFC45,\n\t(q15_t)0x800F, (q15_t)0xFC12, (q15_t)0x8011, (q15_t)0xFBE0,\n\t(q15_t)0x8012, (q15_t)0xFBAE, (q15_t)0x8014, (q15_t)0xFB7C,\n\t(q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x8018, (q15_t)0xFB17,\n\t(q15_t)0x801A, (q15_t)0xFAE5, (q15_t)0x801C, (q15_t)0xFAB3,\n\t(q15_t)0x801E, (q15_t)0xFA80, (q15_t)0x8020, (q15_t)0xFA4E,\n\t(q15_t)0x8022, (q15_t)0xFA1C, (q15_t)0x8025, (q15_t)0xF9EA,\n\t(q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8029, (q15_t)0xF985,\n\t(q15_t)0x802C, (q15_t)0xF953, (q15_t)0x802F, (q15_t)0xF921,\n\t(q15_t)0x8031, (q15_t)0xF8EF, (q15_t)0x8034, (q15_t)0xF8BD,\n\t(q15_t)0x8037, (q15_t)0xF88A, (q15_t)0x803A, (q15_t)0xF858,\n\t(q15_t)0x803D, (q15_t)0xF826, (q15_t)0x8040, (q15_t)0xF7F4,\n\t(q15_t)0x8043, (q15_t)0xF7C2, (q15_t)0x8047, (q15_t)0xF790,\n\t(q15_t)0x804A, (q15_t)0xF75D, (q15_t)0x804E, (q15_t)0xF72B,\n\t(q15_t)0x8051, (q15_t)0xF6F9, (q15_t)0x8055, (q15_t)0xF6C7,\n\t(q15_t)0x8058, (q15_t)0xF695, (q15_t)0x805C, (q15_t)0xF663,\n\t(q15_t)0x8060, (q15_t)0xF631, (q15_t)0x8064, (q15_t)0xF5FF,\n\t(q15_t)0x8068, (q15_t)0xF5CC, (q15_t)0x806C, (q15_t)0xF59A,\n\t(q15_t)0x8070, (q15_t)0xF568, (q15_t)0x8074, (q15_t)0xF536,\n\t(q15_t)0x8078, (q15_t)0xF504, (q15_t)0x807D, (q15_t)0xF4D2,\n\t(q15_t)0x8081, (q15_t)0xF4A0, (q15_t)0x8086, (q15_t)0xF46E,\n\t(q15_t)0x808A, (q15_t)0xF43C, (q15_t)0x808F, (q15_t)0xF40A,\n\t(q15_t)0x8094, (q15_t)0xF3D8, (q15_t)0x8098, (q15_t)0xF3A6,\n\t(q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80A2, (q15_t)0xF342,\n\t(q15_t)0x80A7, (q15_t)0xF310, (q15_t)0x80AC, (q15_t)0xF2DE,\n\t(q15_t)0x80B2, (q15_t)0xF2AC, (q15_t)0x80B7, (q15_t)0xF27A,\n\t(q15_t)0x80BC, (q15_t)0xF248, (q15_t)0x80C2, (q15_t)0xF216,\n\t(q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80CD, (q15_t)0xF1B2,\n\t(q15_t)0x80D2, (q15_t)0xF180, (q15_t)0x80D8, (q15_t)0xF14E,\n\t(q15_t)0x80DE, (q15_t)0xF11C, (q15_t)0x80E4, (q15_t)0xF0EA,\n\t(q15_t)0x80EA, (q15_t)0xF0B8, (q15_t)0x80F0, (q15_t)0xF086,\n\t(q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x80FC, (q15_t)0xF022,\n\t(q15_t)0x8102, (q15_t)0xEFF1, (q15_t)0x8109, (q15_t)0xEFBF,\n\t(q15_t)0x810F, (q15_t)0xEF8D, (q15_t)0x8116, (q15_t)0xEF5B,\n\t(q15_t)0x811C, (q15_t)0xEF29, (q15_t)0x8123, (q15_t)0xEEF7,\n\t(q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8130, (q15_t)0xEE94,\n\t(q15_t)0x8137, (q15_t)0xEE62, (q15_t)0x813E, (q15_t)0xEE30,\n\t(q15_t)0x8145, (q15_t)0xEDFE, (q15_t)0x814C, (q15_t)0xEDCD,\n\t(q15_t)0x8154, (q15_t)0xED9B, (q15_t)0x815B, (q15_t)0xED69,\n\t(q15_t)0x8162, (q15_t)0xED37, (q15_t)0x816A, (q15_t)0xED06,\n\t(q15_t)0x8171, (q15_t)0xECD4, (q15_t)0x8179, (q15_t)0xECA2,\n\t(q15_t)0x8180, (q15_t)0xEC71, (q15_t)0x8188, (q15_t)0xEC3F,\n\t(q15_t)0x8190, (q15_t)0xEC0D, (q15_t)0x8198, (q15_t)0xEBDC,\n\t(q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81A8, (q15_t)0xEB78,\n\t(q15_t)0x81B0, (q15_t)0xEB47, (q15_t)0x81B8, (q15_t)0xEB15,\n\t(q15_t)0x81C0, (q15_t)0xEAE4, (q15_t)0x81C8, (q15_t)0xEAB2,\n\t(q15_t)0x81D1, (q15_t)0xEA80, (q15_t)0x81D9, (q15_t)0xEA4F,\n\t(q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x81EB, (q15_t)0xE9EC,\n\t(q15_t)0x81F3, (q15_t)0xE9BA, (q15_t)0x81FC, (q15_t)0xE989,\n\t(q15_t)0x8205, (q15_t)0xE957, (q15_t)0x820E, (q15_t)0xE926,\n\t(q15_t)0x8217, (q15_t)0xE8F5, (q15_t)0x8220, (q15_t)0xE8C3,\n\t(q15_t)0x8229, (q15_t)0xE892, (q15_t)0x8232, (q15_t)0xE860,\n\t(q15_t)0x823C, (q15_t)0xE82F, (q15_t)0x8245, (q15_t)0xE7FD,\n\t(q15_t)0x824F, (q15_t)0xE7CC, (q15_t)0x8258, (q15_t)0xE79B,\n\t(q15_t)0x8262, (q15_t)0xE769, (q15_t)0x826B, (q15_t)0xE738,\n\t(q15_t)0x8275, (q15_t)0xE707, (q15_t)0x827F, (q15_t)0xE6D5,\n\t(q15_t)0x8289, (q15_t)0xE6A4, (q15_t)0x8293, (q15_t)0xE673,\n\t(q15_t)0x829D, (q15_t)0xE642, (q15_t)0x82A7, (q15_t)0xE610,\n\t(q15_t)0x82B1, (q15_t)0xE5DF, (q15_t)0x82BC, (q15_t)0xE5AE,\n\t(q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82D0, (q15_t)0xE54C,\n\t(q15_t)0x82DB, (q15_t)0xE51B, (q15_t)0x82E6, (q15_t)0xE4E9,\n\t(q15_t)0x82F0, (q15_t)0xE4B8, (q15_t)0x82FB, (q15_t)0xE487,\n\t(q15_t)0x8306, (q15_t)0xE456, (q15_t)0x8311, (q15_t)0xE425,\n\t(q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8327, (q15_t)0xE3C3,\n\t(q15_t)0x8332, (q15_t)0xE392, (q15_t)0x833D, (q15_t)0xE361,\n\t(q15_t)0x8348, (q15_t)0xE330, (q15_t)0x8354, (q15_t)0xE2FF,\n\t(q15_t)0x835F, (q15_t)0xE2CE, (q15_t)0x836B, (q15_t)0xE29D,\n\t(q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x8382, (q15_t)0xE23B,\n\t(q15_t)0x838E, (q15_t)0xE20A, (q15_t)0x8399, (q15_t)0xE1DA,\n\t(q15_t)0x83A5, (q15_t)0xE1A9, (q15_t)0x83B1, (q15_t)0xE178,\n\t(q15_t)0x83BD, (q15_t)0xE147, (q15_t)0x83C9, (q15_t)0xE116,\n\t(q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x83E2, (q15_t)0xE0B5,\n\t(q15_t)0x83EE, (q15_t)0xE084, (q15_t)0x83FA, (q15_t)0xE053,\n\t(q15_t)0x8407, (q15_t)0xE023, (q15_t)0x8414, (q15_t)0xDFF2,\n\t(q15_t)0x8420, (q15_t)0xDFC1, (q15_t)0x842D, (q15_t)0xDF91,\n\t(q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x8446, (q15_t)0xDF2F,\n\t(q15_t)0x8453, (q15_t)0xDEFF, (q15_t)0x8460, (q15_t)0xDECE,\n\t(q15_t)0x846D, (q15_t)0xDE9E, (q15_t)0x847B, (q15_t)0xDE6D,\n\t(q15_t)0x8488, (q15_t)0xDE3D, (q15_t)0x8495, (q15_t)0xDE0C,\n\t(q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84B0, (q15_t)0xDDAB,\n\t(q15_t)0x84BD, (q15_t)0xDD7B, (q15_t)0x84CB, (q15_t)0xDD4B,\n\t(q15_t)0x84D9, (q15_t)0xDD1A, (q15_t)0x84E6, (q15_t)0xDCEA,\n\t(q15_t)0x84F4, (q15_t)0xDCBA, (q15_t)0x8502, (q15_t)0xDC89,\n\t(q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x851E, (q15_t)0xDC29,\n\t(q15_t)0x852C, (q15_t)0xDBF8, (q15_t)0x853A, (q15_t)0xDBC8,\n\t(q15_t)0x8549, (q15_t)0xDB98, (q15_t)0x8557, (q15_t)0xDB68,\n\t(q15_t)0x8565, (q15_t)0xDB38, (q15_t)0x8574, (q15_t)0xDB08,\n\t(q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x8591, (q15_t)0xDAA7,\n\t(q15_t)0x85A0, (q15_t)0xDA77, (q15_t)0x85AF, (q15_t)0xDA47,\n\t(q15_t)0x85BD, (q15_t)0xDA17, (q15_t)0x85CC, (q15_t)0xD9E7,\n\t(q15_t)0x85DB, (q15_t)0xD9B7, (q15_t)0x85EA, (q15_t)0xD987,\n\t(q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8609, (q15_t)0xD927,\n\t(q15_t)0x8618, (q15_t)0xD8F8, (q15_t)0x8627, (q15_t)0xD8C8,\n\t(q15_t)0x8637, (q15_t)0xD898, (q15_t)0x8646, (q15_t)0xD868,\n\t(q15_t)0x8656, (q15_t)0xD838, (q15_t)0x8666, (q15_t)0xD809,\n\t(q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x8685, (q15_t)0xD7A9,\n\t(q15_t)0x8695, (q15_t)0xD779, (q15_t)0x86A5, (q15_t)0xD74A,\n\t(q15_t)0x86B5, (q15_t)0xD71A, (q15_t)0x86C5, (q15_t)0xD6EA,\n\t(q15_t)0x86D5, (q15_t)0xD6BB, (q15_t)0x86E6, (q15_t)0xD68B,\n\t(q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8706, (q15_t)0xD62C,\n\t(q15_t)0x8717, (q15_t)0xD5FD, (q15_t)0x8727, (q15_t)0xD5CD,\n\t(q15_t)0x8738, (q15_t)0xD59E, (q15_t)0x8749, (q15_t)0xD56E,\n\t(q15_t)0x8759, (q15_t)0xD53F, (q15_t)0x876A, (q15_t)0xD510,\n\t(q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x878C, (q15_t)0xD4B1,\n\t(q15_t)0x879D, (q15_t)0xD482, (q15_t)0x87AE, (q15_t)0xD452,\n\t(q15_t)0x87BF, (q15_t)0xD423, (q15_t)0x87D1, (q15_t)0xD3F4,\n\t(q15_t)0x87E2, (q15_t)0xD3C5, (q15_t)0x87F3, (q15_t)0xD396,\n\t(q15_t)0x8805, (q15_t)0xD367, (q15_t)0x8816, (q15_t)0xD337,\n\t(q15_t)0x8828, (q15_t)0xD308, (q15_t)0x883A, (q15_t)0xD2D9,\n\t(q15_t)0x884B, (q15_t)0xD2AA, (q15_t)0x885D, (q15_t)0xD27B,\n\t(q15_t)0x886F, (q15_t)0xD24C, (q15_t)0x8881, (q15_t)0xD21D,\n\t(q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88A5, (q15_t)0xD1C0,\n\t(q15_t)0x88B8, (q15_t)0xD191, (q15_t)0x88CA, (q15_t)0xD162,\n\t(q15_t)0x88DC, (q15_t)0xD133, (q15_t)0x88EF, (q15_t)0xD104,\n\t(q15_t)0x8901, (q15_t)0xD0D6, (q15_t)0x8914, (q15_t)0xD0A7,\n\t(q15_t)0x8926, (q15_t)0xD078, (q15_t)0x8939, (q15_t)0xD04A,\n\t(q15_t)0x894C, (q15_t)0xD01B, (q15_t)0x895F, (q15_t)0xCFEC,\n\t(q15_t)0x8971, (q15_t)0xCFBE, (q15_t)0x8984, (q15_t)0xCF8F,\n\t(q15_t)0x8997, (q15_t)0xCF61, (q15_t)0x89AB, (q15_t)0xCF32,\n\t(q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x89D1, (q15_t)0xCED5,\n\t(q15_t)0x89E4, (q15_t)0xCEA7, (q15_t)0x89F8, (q15_t)0xCE79,\n\t(q15_t)0x8A0B, (q15_t)0xCE4A, (q15_t)0x8A1F, (q15_t)0xCE1C,\n\t(q15_t)0x8A33, (q15_t)0xCDEE, (q15_t)0x8A46, (q15_t)0xCDBF,\n\t(q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8A6E, (q15_t)0xCD63,\n\t(q15_t)0x8A82, (q15_t)0xCD35, (q15_t)0x8A96, (q15_t)0xCD07,\n\t(q15_t)0x8AAA, (q15_t)0xCCD9, (q15_t)0x8ABE, (q15_t)0xCCAB,\n\t(q15_t)0x8AD2, (q15_t)0xCC7D, (q15_t)0x8AE6, (q15_t)0xCC4F,\n\t(q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B0F, (q15_t)0xCBF3,\n\t(q15_t)0x8B24, (q15_t)0xCBC5, (q15_t)0x8B38, (q15_t)0xCB97,\n\t(q15_t)0x8B4D, (q15_t)0xCB69, (q15_t)0x8B61, (q15_t)0xCB3B,\n\t(q15_t)0x8B76, (q15_t)0xCB0D, (q15_t)0x8B8B, (q15_t)0xCAE0,\n\t(q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BB5, (q15_t)0xCA84,\n\t(q15_t)0x8BCA, (q15_t)0xCA57, (q15_t)0x8BDF, (q15_t)0xCA29,\n\t(q15_t)0x8BF4, (q15_t)0xC9FB, (q15_t)0x8C09, (q15_t)0xC9CE,\n\t(q15_t)0x8C1F, (q15_t)0xC9A0, (q15_t)0x8C34, (q15_t)0xC973,\n\t(q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8C5F, (q15_t)0xC918,\n\t(q15_t)0x8C75, (q15_t)0xC8EB, (q15_t)0x8C8A, (q15_t)0xC8BD,\n\t(q15_t)0x8CA0, (q15_t)0xC890, (q15_t)0x8CB6, (q15_t)0xC863,\n\t(q15_t)0x8CCC, (q15_t)0xC835, (q15_t)0x8CE2, (q15_t)0xC808,\n\t(q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D0E, (q15_t)0xC7AE,\n\t(q15_t)0x8D24, (q15_t)0xC781, (q15_t)0x8D3A, (q15_t)0xC754,\n\t(q15_t)0x8D50, (q15_t)0xC727, (q15_t)0x8D67, (q15_t)0xC6F9,\n\t(q15_t)0x8D7D, (q15_t)0xC6CD, (q15_t)0x8D94, (q15_t)0xC6A0,\n\t(q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8DC1, (q15_t)0xC646,\n\t(q15_t)0x8DD8, (q15_t)0xC619, (q15_t)0x8DEE, (q15_t)0xC5EC,\n\t(q15_t)0x8E05, (q15_t)0xC5BF, (q15_t)0x8E1C, (q15_t)0xC593,\n\t(q15_t)0x8E33, (q15_t)0xC566, (q15_t)0x8E4A, (q15_t)0xC539,\n\t(q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8E79, (q15_t)0xC4E0,\n\t(q15_t)0x8E90, (q15_t)0xC4B3, (q15_t)0x8EA7, (q15_t)0xC487,\n\t(q15_t)0x8EBE, (q15_t)0xC45A, (q15_t)0x8ED6, (q15_t)0xC42E,\n\t(q15_t)0x8EED, (q15_t)0xC402, (q15_t)0x8F05, (q15_t)0xC3D5,\n\t(q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F34, (q15_t)0xC37C,\n\t(q15_t)0x8F4C, (q15_t)0xC350, (q15_t)0x8F64, (q15_t)0xC324,\n\t(q15_t)0x8F7C, (q15_t)0xC2F8, (q15_t)0x8F94, (q15_t)0xC2CC,\n\t(q15_t)0x8FAC, (q15_t)0xC29F, (q15_t)0x8FC4, (q15_t)0xC273,\n\t(q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x8FF5, (q15_t)0xC21B,\n\t(q15_t)0x900D, (q15_t)0xC1EF, (q15_t)0x9025, (q15_t)0xC1C3,\n\t(q15_t)0x903E, (q15_t)0xC197, (q15_t)0x9056, (q15_t)0xC16C,\n\t(q15_t)0x906F, (q15_t)0xC140, (q15_t)0x9088, (q15_t)0xC114,\n\t(q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x90B9, (q15_t)0xC0BC,\n\t(q15_t)0x90D2, (q15_t)0xC091, (q15_t)0x90EB, (q15_t)0xC065,\n\t(q15_t)0x9104, (q15_t)0xC03A, (q15_t)0x911D, (q15_t)0xC00E,\n\t(q15_t)0x9136, (q15_t)0xBFE2, (q15_t)0x9150, (q15_t)0xBFB7,\n\t(q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x9182, (q15_t)0xBF60,\n\t(q15_t)0x919C, (q15_t)0xBF35, (q15_t)0x91B5, (q15_t)0xBF09,\n\t(q15_t)0x91CF, (q15_t)0xBEDE, (q15_t)0x91E8, (q15_t)0xBEB3,\n\t(q15_t)0x9202, (q15_t)0xBE88, (q15_t)0x921C, (q15_t)0xBE5D,\n\t(q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x924F, (q15_t)0xBE06,\n\t(q15_t)0x9269, (q15_t)0xBDDB, (q15_t)0x9283, (q15_t)0xBDB0,\n\t(q15_t)0x929D, (q15_t)0xBD85, (q15_t)0x92B7, (q15_t)0xBD5A,\n\t(q15_t)0x92D2, (q15_t)0xBD2F, (q15_t)0x92EC, (q15_t)0xBD05,\n\t(q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x9321, (q15_t)0xBCAF,\n\t(q15_t)0x933B, (q15_t)0xBC84, (q15_t)0x9356, (q15_t)0xBC5A,\n\t(q15_t)0x9370, (q15_t)0xBC2F, (q15_t)0x938B, (q15_t)0xBC04,\n\t(q15_t)0x93A6, (q15_t)0xBBDA, (q15_t)0x93C0, (q15_t)0xBBAF,\n\t(q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x93F6, (q15_t)0xBB5A,\n\t(q15_t)0x9411, (q15_t)0xBB30, (q15_t)0x942C, (q15_t)0xBB05,\n\t(q15_t)0x9447, (q15_t)0xBADB, (q15_t)0x9463, (q15_t)0xBAB1,\n\t(q15_t)0x947E, (q15_t)0xBA87, (q15_t)0x9499, (q15_t)0xBA5C,\n\t(q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x94D0, (q15_t)0xBA08,\n\t(q15_t)0x94EC, (q15_t)0xB9DE, (q15_t)0x9507, (q15_t)0xB9B4,\n\t(q15_t)0x9523, (q15_t)0xB98A, (q15_t)0x953E, (q15_t)0xB960,\n\t(q15_t)0x955A, (q15_t)0xB936, (q15_t)0x9576, (q15_t)0xB90C,\n\t(q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x95AE, (q15_t)0xB8B9,\n\t(q15_t)0x95CA, (q15_t)0xB88F, (q15_t)0x95E6, (q15_t)0xB865,\n\t(q15_t)0x9602, (q15_t)0xB83C, (q15_t)0x961E, (q15_t)0xB812,\n\t(q15_t)0x963B, (q15_t)0xB7E9, (q15_t)0x9657, (q15_t)0xB7BF,\n\t(q15_t)0x9673, (q15_t)0xB796, (q15_t)0x9690, (q15_t)0xB76C,\n\t(q15_t)0x96AC, (q15_t)0xB743, (q15_t)0x96C9, (q15_t)0xB719,\n\t(q15_t)0x96E6, (q15_t)0xB6F0, (q15_t)0x9702, (q15_t)0xB6C7,\n\t(q15_t)0x971F, (q15_t)0xB69E, (q15_t)0x973C, (q15_t)0xB675,\n\t(q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9776, (q15_t)0xB622,\n\t(q15_t)0x9793, (q15_t)0xB5F9, (q15_t)0x97B0, (q15_t)0xB5D0,\n\t(q15_t)0x97CD, (q15_t)0xB5A7, (q15_t)0x97EA, (q15_t)0xB57E,\n\t(q15_t)0x9808, (q15_t)0xB556, (q15_t)0x9825, (q15_t)0xB52D,\n\t(q15_t)0x9842, (q15_t)0xB504, (q15_t)0x9860, (q15_t)0xB4DB,\n\t(q15_t)0x987D, (q15_t)0xB4B3, (q15_t)0x989B, (q15_t)0xB48A,\n\t(q15_t)0x98B9, (q15_t)0xB461, (q15_t)0x98D6, (q15_t)0xB439,\n\t(q15_t)0x98F4, (q15_t)0xB410, (q15_t)0x9912, (q15_t)0xB3E8,\n\t(q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x994E, (q15_t)0xB397,\n\t(q15_t)0x996C, (q15_t)0xB36F, (q15_t)0x998A, (q15_t)0xB347,\n\t(q15_t)0x99A8, (q15_t)0xB31E, (q15_t)0x99C6, (q15_t)0xB2F6,\n\t(q15_t)0x99E5, (q15_t)0xB2CE, (q15_t)0x9A03, (q15_t)0xB2A6,\n\t(q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A40, (q15_t)0xB256,\n\t(q15_t)0x9A5F, (q15_t)0xB22E, (q15_t)0x9A7D, (q15_t)0xB206,\n\t(q15_t)0x9A9C, (q15_t)0xB1DE, (q15_t)0x9ABA, (q15_t)0xB1B7,\n\t(q15_t)0x9AD9, (q15_t)0xB18F, (q15_t)0x9AF8, (q15_t)0xB167,\n\t(q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B36, (q15_t)0xB118,\n\t(q15_t)0x9B55, (q15_t)0xB0F0, (q15_t)0x9B74, (q15_t)0xB0C9,\n\t(q15_t)0x9B93, (q15_t)0xB0A1, (q15_t)0x9BB2, (q15_t)0xB07A,\n\t(q15_t)0x9BD2, (q15_t)0xB053, (q15_t)0x9BF1, (q15_t)0xB02B,\n\t(q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C30, (q15_t)0xAFDD,\n\t(q15_t)0x9C4F, (q15_t)0xAFB6, (q15_t)0x9C6F, (q15_t)0xAF8F,\n\t(q15_t)0x9C8E, (q15_t)0xAF68, (q15_t)0x9CAE, (q15_t)0xAF40,\n\t(q15_t)0x9CCE, (q15_t)0xAF1A, (q15_t)0x9CEE, (q15_t)0xAEF3,\n\t(q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D2D, (q15_t)0xAEA5,\n\t(q15_t)0x9D4D, (q15_t)0xAE7E, (q15_t)0x9D6D, (q15_t)0xAE57,\n\t(q15_t)0x9D8E, (q15_t)0xAE31, (q15_t)0x9DAE, (q15_t)0xAE0A,\n\t(q15_t)0x9DCE, (q15_t)0xADE3, (q15_t)0x9DEE, (q15_t)0xADBD,\n\t(q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E2F, (q15_t)0xAD70,\n\t(q15_t)0x9E4F, (q15_t)0xAD4A, (q15_t)0x9E70, (q15_t)0xAD23,\n\t(q15_t)0x9E90, (q15_t)0xACFD, (q15_t)0x9EB1, (q15_t)0xACD7,\n\t(q15_t)0x9ED2, (q15_t)0xACB1, (q15_t)0x9EF2, (q15_t)0xAC8A,\n\t(q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F34, (q15_t)0xAC3E,\n\t(q15_t)0x9F55, (q15_t)0xAC18, (q15_t)0x9F76, (q15_t)0xABF2,\n\t(q15_t)0x9F97, (q15_t)0xABCC, (q15_t)0x9FB8, (q15_t)0xABA7,\n\t(q15_t)0x9FD9, (q15_t)0xAB81, (q15_t)0x9FFB, (q15_t)0xAB5B,\n\t(q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA03D, (q15_t)0xAB10,\n\t(q15_t)0xA05F, (q15_t)0xAAEA, (q15_t)0xA080, (q15_t)0xAAC5,\n\t(q15_t)0xA0A1, (q15_t)0xAA9F, (q15_t)0xA0C3, (q15_t)0xAA7A,\n\t(q15_t)0xA0E5, (q15_t)0xAA54, (q15_t)0xA106, (q15_t)0xAA2F,\n\t(q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA14A, (q15_t)0xA9E5,\n\t(q15_t)0xA16C, (q15_t)0xA9BF, (q15_t)0xA18E, (q15_t)0xA99A,\n\t(q15_t)0xA1AF, (q15_t)0xA975, (q15_t)0xA1D2, (q15_t)0xA950,\n\t(q15_t)0xA1F4, (q15_t)0xA92B, (q15_t)0xA216, (q15_t)0xA906,\n\t(q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA25A, (q15_t)0xA8BD,\n\t(q15_t)0xA27C, (q15_t)0xA898, (q15_t)0xA29F, (q15_t)0xA873,\n\t(q15_t)0xA2C1, (q15_t)0xA84F, (q15_t)0xA2E4, (q15_t)0xA82A,\n\t(q15_t)0xA306, (q15_t)0xA806, (q15_t)0xA329, (q15_t)0xA7E1,\n\t(q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA36E, (q15_t)0xA798,\n\t(q15_t)0xA391, (q15_t)0xA774, (q15_t)0xA3B4, (q15_t)0xA750,\n\t(q15_t)0xA3D6, (q15_t)0xA72B, (q15_t)0xA3F9, (q15_t)0xA707,\n\t(q15_t)0xA41C, (q15_t)0xA6E3, (q15_t)0xA43F, (q15_t)0xA6BF,\n\t(q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA486, (q15_t)0xA677,\n\t(q15_t)0xA4A9, (q15_t)0xA653, (q15_t)0xA4CC, (q15_t)0xA62F,\n\t(q15_t)0xA4EF, (q15_t)0xA60C, (q15_t)0xA513, (q15_t)0xA5E8,\n\t(q15_t)0xA536, (q15_t)0xA5C4, (q15_t)0xA55A, (q15_t)0xA5A1,\n\t(q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA5A1, (q15_t)0xA55A,\n\t(q15_t)0xA5C4, (q15_t)0xA536, (q15_t)0xA5E8, (q15_t)0xA513,\n\t(q15_t)0xA60C, (q15_t)0xA4EF, (q15_t)0xA62F, (q15_t)0xA4CC,\n\t(q15_t)0xA653, (q15_t)0xA4A9, (q15_t)0xA677, (q15_t)0xA486,\n\t(q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA6BF, (q15_t)0xA43F,\n\t(q15_t)0xA6E3, (q15_t)0xA41C, (q15_t)0xA707, (q15_t)0xA3F9,\n\t(q15_t)0xA72B, (q15_t)0xA3D6, (q15_t)0xA750, (q15_t)0xA3B4,\n\t(q15_t)0xA774, (q15_t)0xA391, (q15_t)0xA798, (q15_t)0xA36E,\n\t(q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA7E1, (q15_t)0xA329,\n\t(q15_t)0xA806, (q15_t)0xA306, (q15_t)0xA82A, (q15_t)0xA2E4,\n\t(q15_t)0xA84F, (q15_t)0xA2C1, (q15_t)0xA873, (q15_t)0xA29F,\n\t(q15_t)0xA898, (q15_t)0xA27C, (q15_t)0xA8BD, (q15_t)0xA25A,\n\t(q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA906, (q15_t)0xA216,\n\t(q15_t)0xA92B, (q15_t)0xA1F4, (q15_t)0xA950, (q15_t)0xA1D2,\n\t(q15_t)0xA975, (q15_t)0xA1AF, (q15_t)0xA99A, (q15_t)0xA18E,\n\t(q15_t)0xA9BF, (q15_t)0xA16C, (q15_t)0xA9E5, (q15_t)0xA14A,\n\t(q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA2F, (q15_t)0xA106,\n\t(q15_t)0xAA54, (q15_t)0xA0E5, (q15_t)0xAA7A, (q15_t)0xA0C3,\n\t(q15_t)0xAA9F, (q15_t)0xA0A1, (q15_t)0xAAC5, (q15_t)0xA080,\n\t(q15_t)0xAAEA, (q15_t)0xA05F, (q15_t)0xAB10, (q15_t)0xA03D,\n\t(q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xAB5B, (q15_t)0x9FFB,\n\t(q15_t)0xAB81, (q15_t)0x9FD9, (q15_t)0xABA7, (q15_t)0x9FB8,\n\t(q15_t)0xABCC, (q15_t)0x9F97, (q15_t)0xABF2, (q15_t)0x9F76,\n\t(q15_t)0xAC18, (q15_t)0x9F55, (q15_t)0xAC3E, (q15_t)0x9F34,\n\t(q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xAC8A, (q15_t)0x9EF2,\n\t(q15_t)0xACB1, (q15_t)0x9ED2, (q15_t)0xACD7, (q15_t)0x9EB1,\n\t(q15_t)0xACFD, (q15_t)0x9E90, (q15_t)0xAD23, (q15_t)0x9E70,\n\t(q15_t)0xAD4A, (q15_t)0x9E4F, (q15_t)0xAD70, (q15_t)0x9E2F,\n\t(q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xADBD, (q15_t)0x9DEE,\n\t(q15_t)0xADE3, (q15_t)0x9DCE, (q15_t)0xAE0A, (q15_t)0x9DAE,\n\t(q15_t)0xAE31, (q15_t)0x9D8E, (q15_t)0xAE57, (q15_t)0x9D6D,\n\t(q15_t)0xAE7E, (q15_t)0x9D4D, (q15_t)0xAEA5, (q15_t)0x9D2D,\n\t(q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAEF3, (q15_t)0x9CEE,\n\t(q15_t)0xAF1A, (q15_t)0x9CCE, (q15_t)0xAF40, (q15_t)0x9CAE,\n\t(q15_t)0xAF68, (q15_t)0x9C8E, (q15_t)0xAF8F, (q15_t)0x9C6F,\n\t(q15_t)0xAFB6, (q15_t)0x9C4F, (q15_t)0xAFDD, (q15_t)0x9C30,\n\t(q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB02B, (q15_t)0x9BF1,\n\t(q15_t)0xB053, (q15_t)0x9BD2, (q15_t)0xB07A, (q15_t)0x9BB2,\n\t(q15_t)0xB0A1, (q15_t)0x9B93, (q15_t)0xB0C9, (q15_t)0x9B74,\n\t(q15_t)0xB0F0, (q15_t)0x9B55, (q15_t)0xB118, (q15_t)0x9B36,\n\t(q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB167, (q15_t)0x9AF8,\n\t(q15_t)0xB18F, (q15_t)0x9AD9, (q15_t)0xB1B7, (q15_t)0x9ABA,\n\t(q15_t)0xB1DE, (q15_t)0x9A9C, (q15_t)0xB206, (q15_t)0x9A7D,\n\t(q15_t)0xB22E, (q15_t)0x9A5F, (q15_t)0xB256, (q15_t)0x9A40,\n\t(q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB2A6, (q15_t)0x9A03,\n\t(q15_t)0xB2CE, (q15_t)0x99E5, (q15_t)0xB2F6, (q15_t)0x99C6,\n\t(q15_t)0xB31E, (q15_t)0x99A8, (q15_t)0xB347, (q15_t)0x998A,\n\t(q15_t)0xB36F, (q15_t)0x996C, (q15_t)0xB397, (q15_t)0x994E,\n\t(q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB3E8, (q15_t)0x9912,\n\t(q15_t)0xB410, (q15_t)0x98F4, (q15_t)0xB439, (q15_t)0x98D6,\n\t(q15_t)0xB461, (q15_t)0x98B9, (q15_t)0xB48A, (q15_t)0x989B,\n\t(q15_t)0xB4B3, (q15_t)0x987D, (q15_t)0xB4DB, (q15_t)0x9860,\n\t(q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB52D, (q15_t)0x9825,\n\t(q15_t)0xB556, (q15_t)0x9808, (q15_t)0xB57E, (q15_t)0x97EA,\n\t(q15_t)0xB5A7, (q15_t)0x97CD, (q15_t)0xB5D0, (q15_t)0x97B0,\n\t(q15_t)0xB5F9, (q15_t)0x9793, (q15_t)0xB622, (q15_t)0x9776,\n\t(q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB675, (q15_t)0x973C,\n\t(q15_t)0xB69E, (q15_t)0x971F, (q15_t)0xB6C7, (q15_t)0x9702,\n\t(q15_t)0xB6F0, (q15_t)0x96E6, (q15_t)0xB719, (q15_t)0x96C9,\n\t(q15_t)0xB743, (q15_t)0x96AC, (q15_t)0xB76C, (q15_t)0x9690,\n\t(q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB7BF, (q15_t)0x9657,\n\t(q15_t)0xB7E9, (q15_t)0x963B, (q15_t)0xB812, (q15_t)0x961E,\n\t(q15_t)0xB83C, (q15_t)0x9602, (q15_t)0xB865, (q15_t)0x95E6,\n\t(q15_t)0xB88F, (q15_t)0x95CA, (q15_t)0xB8B9, (q15_t)0x95AE,\n\t(q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB90C, (q15_t)0x9576,\n\t(q15_t)0xB936, (q15_t)0x955A, (q15_t)0xB960, (q15_t)0x953E,\n\t(q15_t)0xB98A, (q15_t)0x9523, (q15_t)0xB9B4, (q15_t)0x9507,\n\t(q15_t)0xB9DE, (q15_t)0x94EC, (q15_t)0xBA08, (q15_t)0x94D0,\n\t(q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBA5C, (q15_t)0x9499,\n\t(q15_t)0xBA87, (q15_t)0x947E, (q15_t)0xBAB1, (q15_t)0x9463,\n\t(q15_t)0xBADB, (q15_t)0x9447, (q15_t)0xBB05, (q15_t)0x942C,\n\t(q15_t)0xBB30, (q15_t)0x9411, (q15_t)0xBB5A, (q15_t)0x93F6,\n\t(q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBBAF, (q15_t)0x93C0,\n\t(q15_t)0xBBDA, (q15_t)0x93A6, (q15_t)0xBC04, (q15_t)0x938B,\n\t(q15_t)0xBC2F, (q15_t)0x9370, (q15_t)0xBC5A, (q15_t)0x9356,\n\t(q15_t)0xBC84, (q15_t)0x933B, (q15_t)0xBCAF, (q15_t)0x9321,\n\t(q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD05, (q15_t)0x92EC,\n\t(q15_t)0xBD2F, (q15_t)0x92D2, (q15_t)0xBD5A, (q15_t)0x92B7,\n\t(q15_t)0xBD85, (q15_t)0x929D, (q15_t)0xBDB0, (q15_t)0x9283,\n\t(q15_t)0xBDDB, (q15_t)0x9269, (q15_t)0xBE06, (q15_t)0x924F,\n\t(q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBE5D, (q15_t)0x921C,\n\t(q15_t)0xBE88, (q15_t)0x9202, (q15_t)0xBEB3, (q15_t)0x91E8,\n\t(q15_t)0xBEDE, (q15_t)0x91CF, (q15_t)0xBF09, (q15_t)0x91B5,\n\t(q15_t)0xBF35, (q15_t)0x919C, (q15_t)0xBF60, (q15_t)0x9182,\n\t(q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xBFB7, (q15_t)0x9150,\n\t(q15_t)0xBFE2, (q15_t)0x9136, (q15_t)0xC00E, (q15_t)0x911D,\n\t(q15_t)0xC03A, (q15_t)0x9104, (q15_t)0xC065, (q15_t)0x90EB,\n\t(q15_t)0xC091, (q15_t)0x90D2, (q15_t)0xC0BC, (q15_t)0x90B9,\n\t(q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC114, (q15_t)0x9088,\n\t(q15_t)0xC140, (q15_t)0x906F, (q15_t)0xC16C, (q15_t)0x9056,\n\t(q15_t)0xC197, (q15_t)0x903E, (q15_t)0xC1C3, (q15_t)0x9025,\n\t(q15_t)0xC1EF, (q15_t)0x900D, (q15_t)0xC21B, (q15_t)0x8FF5,\n\t(q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC273, (q15_t)0x8FC4,\n\t(q15_t)0xC29F, (q15_t)0x8FAC, (q15_t)0xC2CC, (q15_t)0x8F94,\n\t(q15_t)0xC2F8, (q15_t)0x8F7C, (q15_t)0xC324, (q15_t)0x8F64,\n\t(q15_t)0xC350, (q15_t)0x8F4C, (q15_t)0xC37C, (q15_t)0x8F34,\n\t(q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC3D5, (q15_t)0x8F05,\n\t(q15_t)0xC402, (q15_t)0x8EED, (q15_t)0xC42E, (q15_t)0x8ED6,\n\t(q15_t)0xC45A, (q15_t)0x8EBE, (q15_t)0xC487, (q15_t)0x8EA7,\n\t(q15_t)0xC4B3, (q15_t)0x8E90, (q15_t)0xC4E0, (q15_t)0x8E79,\n\t(q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC539, (q15_t)0x8E4A,\n\t(q15_t)0xC566, (q15_t)0x8E33, (q15_t)0xC593, (q15_t)0x8E1C,\n\t(q15_t)0xC5BF, (q15_t)0x8E05, (q15_t)0xC5EC, (q15_t)0x8DEE,\n\t(q15_t)0xC619, (q15_t)0x8DD8, (q15_t)0xC646, (q15_t)0x8DC1,\n\t(q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC6A0, (q15_t)0x8D94,\n\t(q15_t)0xC6CD, (q15_t)0x8D7D, (q15_t)0xC6F9, (q15_t)0x8D67,\n\t(q15_t)0xC727, (q15_t)0x8D50, (q15_t)0xC754, (q15_t)0x8D3A,\n\t(q15_t)0xC781, (q15_t)0x8D24, (q15_t)0xC7AE, (q15_t)0x8D0E,\n\t(q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC808, (q15_t)0x8CE2,\n\t(q15_t)0xC835, (q15_t)0x8CCC, (q15_t)0xC863, (q15_t)0x8CB6,\n\t(q15_t)0xC890, (q15_t)0x8CA0, (q15_t)0xC8BD, (q15_t)0x8C8A,\n\t(q15_t)0xC8EB, (q15_t)0x8C75, (q15_t)0xC918, (q15_t)0x8C5F,\n\t(q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC973, (q15_t)0x8C34,\n\t(q15_t)0xC9A0, (q15_t)0x8C1F, (q15_t)0xC9CE, (q15_t)0x8C09,\n\t(q15_t)0xC9FB, (q15_t)0x8BF4, (q15_t)0xCA29, (q15_t)0x8BDF,\n\t(q15_t)0xCA57, (q15_t)0x8BCA, (q15_t)0xCA84, (q15_t)0x8BB5,\n\t(q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCAE0, (q15_t)0x8B8B,\n\t(q15_t)0xCB0D, (q15_t)0x8B76, (q15_t)0xCB3B, (q15_t)0x8B61,\n\t(q15_t)0xCB69, (q15_t)0x8B4D, (q15_t)0xCB97, (q15_t)0x8B38,\n\t(q15_t)0xCBC5, (q15_t)0x8B24, (q15_t)0xCBF3, (q15_t)0x8B0F,\n\t(q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCC4F, (q15_t)0x8AE6,\n\t(q15_t)0xCC7D, (q15_t)0x8AD2, (q15_t)0xCCAB, (q15_t)0x8ABE,\n\t(q15_t)0xCCD9, (q15_t)0x8AAA, (q15_t)0xCD07, (q15_t)0x8A96,\n\t(q15_t)0xCD35, (q15_t)0x8A82, (q15_t)0xCD63, (q15_t)0x8A6E,\n\t(q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCDBF, (q15_t)0x8A46,\n\t(q15_t)0xCDEE, (q15_t)0x8A33, (q15_t)0xCE1C, (q15_t)0x8A1F,\n\t(q15_t)0xCE4A, (q15_t)0x8A0B, (q15_t)0xCE79, (q15_t)0x89F8,\n\t(q15_t)0xCEA7, (q15_t)0x89E4, (q15_t)0xCED5, (q15_t)0x89D1,\n\t(q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCF32, (q15_t)0x89AB,\n\t(q15_t)0xCF61, (q15_t)0x8997, (q15_t)0xCF8F, (q15_t)0x8984,\n\t(q15_t)0xCFBE, (q15_t)0x8971, (q15_t)0xCFEC, (q15_t)0x895F,\n\t(q15_t)0xD01B, (q15_t)0x894C, (q15_t)0xD04A, (q15_t)0x8939,\n\t(q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD0A7, (q15_t)0x8914,\n\t(q15_t)0xD0D6, (q15_t)0x8901, (q15_t)0xD104, (q15_t)0x88EF,\n\t(q15_t)0xD133, (q15_t)0x88DC, (q15_t)0xD162, (q15_t)0x88CA,\n\t(q15_t)0xD191, (q15_t)0x88B8, (q15_t)0xD1C0, (q15_t)0x88A5,\n\t(q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD21D, (q15_t)0x8881,\n\t(q15_t)0xD24C, (q15_t)0x886F, (q15_t)0xD27B, (q15_t)0x885D,\n\t(q15_t)0xD2AA, (q15_t)0x884B, (q15_t)0xD2D9, (q15_t)0x883A,\n\t(q15_t)0xD308, (q15_t)0x8828, (q15_t)0xD337, (q15_t)0x8816,\n\t(q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD396, (q15_t)0x87F3,\n\t(q15_t)0xD3C5, (q15_t)0x87E2, (q15_t)0xD3F4, (q15_t)0x87D1,\n\t(q15_t)0xD423, (q15_t)0x87BF, (q15_t)0xD452, (q15_t)0x87AE,\n\t(q15_t)0xD482, (q15_t)0x879D, (q15_t)0xD4B1, (q15_t)0x878C,\n\t(q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD510, (q15_t)0x876A,\n\t(q15_t)0xD53F, (q15_t)0x8759, (q15_t)0xD56E, (q15_t)0x8749,\n\t(q15_t)0xD59E, (q15_t)0x8738, (q15_t)0xD5CD, (q15_t)0x8727,\n\t(q15_t)0xD5FD, (q15_t)0x8717, (q15_t)0xD62C, (q15_t)0x8706,\n\t(q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD68B, (q15_t)0x86E6,\n\t(q15_t)0xD6BB, (q15_t)0x86D5, (q15_t)0xD6EA, (q15_t)0x86C5,\n\t(q15_t)0xD71A, (q15_t)0x86B5, (q15_t)0xD74A, (q15_t)0x86A5,\n\t(q15_t)0xD779, (q15_t)0x8695, (q15_t)0xD7A9, (q15_t)0x8685,\n\t(q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD809, (q15_t)0x8666,\n\t(q15_t)0xD838, (q15_t)0x8656, (q15_t)0xD868, (q15_t)0x8646,\n\t(q15_t)0xD898, (q15_t)0x8637, (q15_t)0xD8C8, (q15_t)0x8627,\n\t(q15_t)0xD8F8, (q15_t)0x8618, (q15_t)0xD927, (q15_t)0x8609,\n\t(q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xD987, (q15_t)0x85EA,\n\t(q15_t)0xD9B7, (q15_t)0x85DB, (q15_t)0xD9E7, (q15_t)0x85CC,\n\t(q15_t)0xDA17, (q15_t)0x85BD, (q15_t)0xDA47, (q15_t)0x85AF,\n\t(q15_t)0xDA77, (q15_t)0x85A0, (q15_t)0xDAA7, (q15_t)0x8591,\n\t(q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB08, (q15_t)0x8574,\n\t(q15_t)0xDB38, (q15_t)0x8565, (q15_t)0xDB68, (q15_t)0x8557,\n\t(q15_t)0xDB98, (q15_t)0x8549, (q15_t)0xDBC8, (q15_t)0x853A,\n\t(q15_t)0xDBF8, (q15_t)0x852C, (q15_t)0xDC29, (q15_t)0x851E,\n\t(q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDC89, (q15_t)0x8502,\n\t(q15_t)0xDCBA, (q15_t)0x84F4, (q15_t)0xDCEA, (q15_t)0x84E6,\n\t(q15_t)0xDD1A, (q15_t)0x84D9, (q15_t)0xDD4B, (q15_t)0x84CB,\n\t(q15_t)0xDD7B, (q15_t)0x84BD, (q15_t)0xDDAB, (q15_t)0x84B0,\n\t(q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE0C, (q15_t)0x8495,\n\t(q15_t)0xDE3D, (q15_t)0x8488, (q15_t)0xDE6D, (q15_t)0x847B,\n\t(q15_t)0xDE9E, (q15_t)0x846D, (q15_t)0xDECE, (q15_t)0x8460,\n\t(q15_t)0xDEFF, (q15_t)0x8453, (q15_t)0xDF2F, (q15_t)0x8446,\n\t(q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xDF91, (q15_t)0x842D,\n\t(q15_t)0xDFC1, (q15_t)0x8420, (q15_t)0xDFF2, (q15_t)0x8414,\n\t(q15_t)0xE023, (q15_t)0x8407, (q15_t)0xE053, (q15_t)0x83FA,\n\t(q15_t)0xE084, (q15_t)0x83EE, (q15_t)0xE0B5, (q15_t)0x83E2,\n\t(q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE116, (q15_t)0x83C9,\n\t(q15_t)0xE147, (q15_t)0x83BD, (q15_t)0xE178, (q15_t)0x83B1,\n\t(q15_t)0xE1A9, (q15_t)0x83A5, (q15_t)0xE1DA, (q15_t)0x8399,\n\t(q15_t)0xE20A, (q15_t)0x838E, (q15_t)0xE23B, (q15_t)0x8382,\n\t(q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE29D, (q15_t)0x836B,\n\t(q15_t)0xE2CE, (q15_t)0x835F, (q15_t)0xE2FF, (q15_t)0x8354,\n\t(q15_t)0xE330, (q15_t)0x8348, (q15_t)0xE361, (q15_t)0x833D,\n\t(q15_t)0xE392, (q15_t)0x8332, (q15_t)0xE3C3, (q15_t)0x8327,\n\t(q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE425, (q15_t)0x8311,\n\t(q15_t)0xE456, (q15_t)0x8306, (q15_t)0xE487, (q15_t)0x82FB,\n\t(q15_t)0xE4B8, (q15_t)0x82F0, (q15_t)0xE4E9, (q15_t)0x82E6,\n\t(q15_t)0xE51B, (q15_t)0x82DB, (q15_t)0xE54C, (q15_t)0x82D0,\n\t(q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE5AE, (q15_t)0x82BC,\n\t(q15_t)0xE5DF, (q15_t)0x82B1, (q15_t)0xE610, (q15_t)0x82A7,\n\t(q15_t)0xE642, (q15_t)0x829D, (q15_t)0xE673, (q15_t)0x8293,\n\t(q15_t)0xE6A4, (q15_t)0x8289, (q15_t)0xE6D5, (q15_t)0x827F,\n\t(q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE738, (q15_t)0x826B,\n\t(q15_t)0xE769, (q15_t)0x8262, (q15_t)0xE79B, (q15_t)0x8258,\n\t(q15_t)0xE7CC, (q15_t)0x824F, (q15_t)0xE7FD, (q15_t)0x8245,\n\t(q15_t)0xE82F, (q15_t)0x823C, (q15_t)0xE860, (q15_t)0x8232,\n\t(q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE8C3, (q15_t)0x8220,\n\t(q15_t)0xE8F5, (q15_t)0x8217, (q15_t)0xE926, (q15_t)0x820E,\n\t(q15_t)0xE957, (q15_t)0x8205, (q15_t)0xE989, (q15_t)0x81FC,\n\t(q15_t)0xE9BA, (q15_t)0x81F3, (q15_t)0xE9EC, (q15_t)0x81EB,\n\t(q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEA4F, (q15_t)0x81D9,\n\t(q15_t)0xEA80, (q15_t)0x81D1, (q15_t)0xEAB2, (q15_t)0x81C8,\n\t(q15_t)0xEAE4, (q15_t)0x81C0, (q15_t)0xEB15, (q15_t)0x81B8,\n\t(q15_t)0xEB47, (q15_t)0x81B0, (q15_t)0xEB78, (q15_t)0x81A8,\n\t(q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEBDC, (q15_t)0x8198,\n\t(q15_t)0xEC0D, (q15_t)0x8190, (q15_t)0xEC3F, (q15_t)0x8188,\n\t(q15_t)0xEC71, (q15_t)0x8180, (q15_t)0xECA2, (q15_t)0x8179,\n\t(q15_t)0xECD4, (q15_t)0x8171, (q15_t)0xED06, (q15_t)0x816A,\n\t(q15_t)0xED37, (q15_t)0x8162, (q15_t)0xED69, (q15_t)0x815B,\n\t(q15_t)0xED9B, (q15_t)0x8154, (q15_t)0xEDCD, (q15_t)0x814C,\n\t(q15_t)0xEDFE, (q15_t)0x8145, (q15_t)0xEE30, (q15_t)0x813E,\n\t(q15_t)0xEE62, (q15_t)0x8137, (q15_t)0xEE94, (q15_t)0x8130,\n\t(q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEEF7, (q15_t)0x8123,\n\t(q15_t)0xEF29, (q15_t)0x811C, (q15_t)0xEF5B, (q15_t)0x8116,\n\t(q15_t)0xEF8D, (q15_t)0x810F, (q15_t)0xEFBF, (q15_t)0x8109,\n\t(q15_t)0xEFF1, (q15_t)0x8102, (q15_t)0xF022, (q15_t)0x80FC,\n\t(q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF086, (q15_t)0x80F0,\n\t(q15_t)0xF0B8, (q15_t)0x80EA, (q15_t)0xF0EA, (q15_t)0x80E4,\n\t(q15_t)0xF11C, (q15_t)0x80DE, (q15_t)0xF14E, (q15_t)0x80D8,\n\t(q15_t)0xF180, (q15_t)0x80D2, (q15_t)0xF1B2, (q15_t)0x80CD,\n\t(q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF216, (q15_t)0x80C2,\n\t(q15_t)0xF248, (q15_t)0x80BC, (q15_t)0xF27A, (q15_t)0x80B7,\n\t(q15_t)0xF2AC, (q15_t)0x80B2, (q15_t)0xF2DE, (q15_t)0x80AC,\n\t(q15_t)0xF310, (q15_t)0x80A7, (q15_t)0xF342, (q15_t)0x80A2,\n\t(q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF3A6, (q15_t)0x8098,\n\t(q15_t)0xF3D8, (q15_t)0x8094, (q15_t)0xF40A, (q15_t)0x808F,\n\t(q15_t)0xF43C, (q15_t)0x808A, (q15_t)0xF46E, (q15_t)0x8086,\n\t(q15_t)0xF4A0, (q15_t)0x8081, (q15_t)0xF4D2, (q15_t)0x807D,\n\t(q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF536, (q15_t)0x8074,\n\t(q15_t)0xF568, (q15_t)0x8070, (q15_t)0xF59A, (q15_t)0x806C,\n\t(q15_t)0xF5CC, (q15_t)0x8068, (q15_t)0xF5FF, (q15_t)0x8064,\n\t(q15_t)0xF631, (q15_t)0x8060, (q15_t)0xF663, (q15_t)0x805C,\n\t(q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF6C7, (q15_t)0x8055,\n\t(q15_t)0xF6F9, (q15_t)0x8051, (q15_t)0xF72B, (q15_t)0x804E,\n\t(q15_t)0xF75D, (q15_t)0x804A, (q15_t)0xF790, (q15_t)0x8047,\n\t(q15_t)0xF7C2, (q15_t)0x8043, (q15_t)0xF7F4, (q15_t)0x8040,\n\t(q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF858, (q15_t)0x803A,\n\t(q15_t)0xF88A, (q15_t)0x8037, (q15_t)0xF8BD, (q15_t)0x8034,\n\t(q15_t)0xF8EF, (q15_t)0x8031, (q15_t)0xF921, (q15_t)0x802F,\n\t(q15_t)0xF953, (q15_t)0x802C, (q15_t)0xF985, (q15_t)0x8029,\n\t(q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xF9EA, (q15_t)0x8025,\n\t(q15_t)0xFA1C, (q15_t)0x8022, (q15_t)0xFA4E, (q15_t)0x8020,\n\t(q15_t)0xFA80, (q15_t)0x801E, (q15_t)0xFAB3, (q15_t)0x801C,\n\t(q15_t)0xFAE5, (q15_t)0x801A, (q15_t)0xFB17, (q15_t)0x8018,\n\t(q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFB7C, (q15_t)0x8014,\n\t(q15_t)0xFBAE, (q15_t)0x8012, (q15_t)0xFBE0, (q15_t)0x8011,\n\t(q15_t)0xFC12, (q15_t)0x800F, (q15_t)0xFC45, (q15_t)0x800D,\n\t(q15_t)0xFC77, (q15_t)0x800C, (q15_t)0xFCA9, (q15_t)0x800B,\n\t(q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFD0E, (q15_t)0x8008,\n\t(q15_t)0xFD40, (q15_t)0x8007, (q15_t)0xFD72, (q15_t)0x8006,\n\t(q15_t)0xFDA4, (q15_t)0x8005, (q15_t)0xFDD7, (q15_t)0x8004,\n\t(q15_t)0xFE09, (q15_t)0x8003, (q15_t)0xFE3B, (q15_t)0x8003,\n\t(q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFEA0, (q15_t)0x8001,\n\t(q15_t)0xFED2, (q15_t)0x8001, (q15_t)0xFF04, (q15_t)0x8000,\n\t(q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF69, (q15_t)0x8000,\n\t(q15_t)0xFF9B, (q15_t)0x8000, (q15_t)0xFFCD, (q15_t)0x8000\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n/**\n  @} end of CFFT_CIFFT group\n*/\n\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_16)\n\nconst uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE_16_TABLE_LENGTH] =\n{\n   /* 8x2, size 20 */\n   8,64, 24,72, 16,64, 40,80, 32,64, 56,88, 48,72, 88,104, 72,96, 104,112\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_32)\n\nconst uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE_32_TABLE_LENGTH] =\n{\n   /* 8x4, size 48 */\n   8,64, 16,128, 24,192, 32,64, 40,72, 48,136, 56,200, 64,128, 72,80, 88,208,\n   80,144, 96,192, 104,208, 112,152, 120,216, 136,192, 144,160, 168,208,\n   152,224, 176,208, 184,232, 216,240, 200,224, 232,240\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_64)\n\nconst uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE_64_TABLE_LENGTH] =\n{\n   /* radix 8, size 56 */\n   8,64, 16,128, 24,192, 32,256, 40,320, 48,384, 56,448, 80,136, 88,200,\n   96,264, 104,328, 112,392, 120,456, 152,208, 160,272, 168,336, 176,400,\n   184,464, 224,280, 232,344, 240,408, 248,472, 296,352, 304,416, 312,480,\n   368,424, 376,488, 440,496\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_128)\n\nconst uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH] =\n{\n   /* 8x2, size 208 */\n   8,512, 16,64, 24,576, 32,128, 40,640, 48,192, 56,704, 64,256, 72,768,\n   80,320, 88,832, 96,384, 104,896, 112,448, 120,960, 128,512, 136,520,\n   144,768, 152,584, 160,520, 168,648, 176,200, 184,712, 192,264, 200,776,\n   208,328, 216,840, 224,392, 232,904, 240,456, 248,968, 264,528, 272,320,\n   280,592, 288,768, 296,656, 304,328, 312,720, 328,784, 344,848, 352,400,\n   360,912, 368,464, 376,976, 384,576, 392,536, 400,832, 408,600, 416,584,\n   424,664, 432,840, 440,728, 448,592, 456,792, 464,848, 472,856, 480,600,\n   488,920, 496,856, 504,984, 520,544, 528,576, 536,608, 552,672, 560,608,\n   568,736, 576,768, 584,800, 592,832, 600,864, 608,800, 616,928, 624,864,\n   632,992, 648,672, 656,896, 664,928, 688,904, 696,744, 704,896, 712,808,\n   720,912, 728,872, 736,928, 744,936, 752,920, 760,1000, 776,800, 784,832,\n   792,864, 808,904, 816,864, 824,920, 840,864, 856,880, 872,944, 888,1008,\n   904,928, 912,960, 920,992, 944,968, 952,1000, 968,992, 984,1008\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_256)\n\nconst uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH] =\n{\n   /* 8x4, size 440 */\n   8,512, 16,1024, 24,1536, 32,64, 40,576, 48,1088, 56,1600, 64,128, 72,640,\n   80,1152, 88,1664, 96,192, 104,704, 112,1216, 120,1728, 128,256, 136,768,\n   144,1280, 152,1792, 160,320, 168,832, 176,1344, 184,1856, 192,384,\n   200,896, 208,1408, 216,1920, 224,448, 232,960, 240,1472, 248,1984,\n   256,512, 264,520, 272,1032, 280,1544, 288,640, 296,584, 304,1096, 312,1608,\n   320,768, 328,648, 336,1160, 344,1672, 352,896, 360,712, 368,1224, 376,1736,\n   384,520, 392,776, 400,1288, 408,1800, 416,648, 424,840, 432,1352, 440,1864,\n   448,776, 456,904, 464,1416, 472,1928, 480,904, 488,968, 496,1480, 504,1992,\n   520,528, 512,1024, 528,1040, 536,1552, 544,1152, 552,592, 560,1104,\n   568,1616, 576,1280, 584,656, 592,1168, 600,1680, 608,1408, 616,720,\n   624,1232, 632,1744, 640,1032, 648,784, 656,1296, 664,1808, 672,1160,\n   680,848, 688,1360, 696,1872, 704,1288, 712,912, 720,1424, 728,1936,\n   736,1416, 744,976, 752,1488, 760,2000, 768,1536, 776,1552, 784,1048,\n   792,1560, 800,1664, 808,1680, 816,1112, 824,1624, 832,1792, 840,1808,\n   848,1176, 856,1688, 864,1920, 872,1936, 880,1240, 888,1752, 896,1544,\n   904,1560, 912,1304, 920,1816, 928,1672, 936,1688, 944,1368, 952,1880,\n   960,1800, 968,1816, 976,1432, 984,1944, 992,1928, 1000,1944, 1008,1496,\n   1016,2008, 1032,1152, 1040,1056, 1048,1568, 1064,1408, 1072,1120,\n   1080,1632, 1088,1536, 1096,1160, 1104,1184, 1112,1696, 1120,1552,\n   1128,1416, 1136,1248, 1144,1760, 1160,1664, 1168,1312, 1176,1824,\n   1184,1544, 1192,1920, 1200,1376, 1208,1888, 1216,1568, 1224,1672,\n   1232,1440, 1240,1952, 1248,1560, 1256,1928, 1264,1504, 1272,2016,\n   1288,1312, 1296,1408, 1304,1576, 1320,1424, 1328,1416, 1336,1640,\n   1344,1792, 1352,1824, 1360,1920, 1368,1704, 1376,1800, 1384,1432,\n   1392,1928, 1400,1768, 1416,1680, 1432,1832, 1440,1576, 1448,1936,\n   1456,1832, 1464,1896, 1472,1808, 1480,1688, 1488,1936, 1496,1960,\n   1504,1816, 1512,1944, 1520,1944, 1528,2024, 1560,1584, 1592,1648,\n   1600,1792, 1608,1920, 1616,1800, 1624,1712, 1632,1808, 1640,1936,\n   1648,1816, 1656,1776, 1672,1696, 1688,1840, 1704,1952, 1712,1928,\n   1720,1904, 1728,1824, 1736,1952, 1744,1832, 1752,1968, 1760,1840,\n   1768,1960, 1776,1944, 1784,2032, 1864,1872, 1848,1944, 1872,1888,\n   1880,1904, 1888,1984, 1896,2000, 1912,2032, 1904,2016, 1976,2032,\n   1960,1968, 2008,2032, 1992,2016, 2024,2032\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_512)\n\nconst uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH] =\n{\n   /* radix 8, size 448 */\n   8,512, 16,1024, 24,1536, 32,2048, 40,2560, 48,3072, 56,3584, 72,576,\n   80,1088, 88,1600, 96,2112, 104,2624, 112,3136, 120,3648, 136,640, 144,1152,\n   152,1664, 160,2176, 168,2688, 176,3200, 184,3712, 200,704, 208,1216,\n   216,1728, 224,2240, 232,2752, 240,3264, 248,3776, 264,768, 272,1280,\n   280,1792, 288,2304, 296,2816, 304,3328, 312,3840, 328,832, 336,1344,\n   344,1856, 352,2368, 360,2880, 368,3392, 376,3904, 392,896, 400,1408,\n   408,1920, 416,2432, 424,2944, 432,3456, 440,3968, 456,960, 464,1472,\n   472,1984, 480,2496, 488,3008, 496,3520, 504,4032, 528,1032, 536,1544,\n   544,2056, 552,2568, 560,3080, 568,3592, 592,1096, 600,1608, 608,2120,\n   616,2632, 624,3144, 632,3656, 656,1160, 664,1672, 672,2184, 680,2696,\n   688,3208, 696,3720, 720,1224, 728,1736, 736,2248, 744,2760, 752,3272,\n   760,3784, 784,1288, 792,1800, 800,2312, 808,2824, 816,3336, 824,3848,\n   848,1352, 856,1864, 864,2376, 872,2888, 880,3400, 888,3912, 912,1416,\n   920,1928, 928,2440, 936,2952, 944,3464, 952,3976, 976,1480, 984,1992,\n   992,2504, 1000,3016, 1008,3528, 1016,4040, 1048,1552, 1056,2064, 1064,2576,\n   1072,3088, 1080,3600, 1112,1616, 1120,2128, 1128,2640, 1136,3152,\n   1144,3664, 1176,1680, 1184,2192, 1192,2704, 1200,3216, 1208,3728,\n   1240,1744, 1248,2256, 1256,2768, 1264,3280, 1272,3792, 1304,1808,\n   1312,2320, 1320,2832, 1328,3344, 1336,3856, 1368,1872, 1376,2384,\n   1384,2896, 1392,3408, 1400,3920, 1432,1936, 1440,2448, 1448,2960,\n   1456,3472, 1464,3984, 1496,2000, 1504,2512, 1512,3024, 1520,3536,\n   1528,4048, 1568,2072, 1576,2584, 1584,3096, 1592,3608, 1632,2136,\n   1640,2648, 1648,3160, 1656,3672, 1696,2200, 1704,2712, 1712,3224,\n   1720,3736, 1760,2264, 1768,2776, 1776,3288, 1784,3800, 1824,2328,\n   1832,2840, 1840,3352, 1848,3864, 1888,2392, 1896,2904, 1904,3416,\n   1912,3928, 1952,2456, 1960,2968, 1968,3480, 1976,3992, 2016,2520,\n   2024,3032, 2032,3544, 2040,4056, 2088,2592, 2096,3104, 2104,3616,\n   2152,2656, 2160,3168, 2168,3680, 2216,2720, 2224,3232, 2232,3744,\n   2280,2784, 2288,3296, 2296,3808, 2344,2848, 2352,3360, 2360,3872,\n   2408,2912, 2416,3424, 2424,3936, 2472,2976, 2480,3488, 2488,4000,\n   2536,3040, 2544,3552, 2552,4064, 2608,3112, 2616,3624, 2672,3176,\n   2680,3688, 2736,3240, 2744,3752, 2800,3304, 2808,3816, 2864,3368,\n   2872,3880, 2928,3432, 2936,3944, 2992,3496, 3000,4008, 3056,3560,\n   3064,4072, 3128,3632, 3192,3696, 3256,3760, 3320,3824, 3384,3888,\n   3448,3952, 3512,4016, 3576,4080\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_1024)\n\nconst uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE_1024_TABLE_LENGTH] =\n{\n   /* 8x2, size 1800 */\n   8,4096, 16,512, 24,4608, 32,1024, 40,5120, 48,1536, 56,5632, 64,2048,\n   72,6144, 80,2560, 88,6656, 96,3072, 104,7168, 112,3584, 120,7680, 128,2048,\n   136,4160, 144,576, 152,4672, 160,1088, 168,5184, 176,1600, 184,5696,\n   192,2112, 200,6208, 208,2624, 216,6720, 224,3136, 232,7232, 240,3648,\n   248,7744, 256,2048, 264,4224, 272,640, 280,4736, 288,1152, 296,5248,\n   304,1664, 312,5760, 320,2176, 328,6272, 336,2688, 344,6784, 352,3200,\n   360,7296, 368,3712, 376,7808, 384,2112, 392,4288, 400,704, 408,4800,\n   416,1216, 424,5312, 432,1728, 440,5824, 448,2240, 456,6336, 464,2752,\n   472,6848, 480,3264, 488,7360, 496,3776, 504,7872, 512,2048, 520,4352,\n   528,768, 536,4864, 544,1280, 552,5376, 560,1792, 568,5888, 576,2304,\n   584,6400, 592,2816, 600,6912, 608,3328, 616,7424, 624,3840, 632,7936,\n   640,2176, 648,4416, 656,832, 664,4928, 672,1344, 680,5440, 688,1856,\n   696,5952, 704,2368, 712,6464, 720,2880, 728,6976, 736,3392, 744,7488,\n   752,3904, 760,8000, 768,2112, 776,4480, 784,896, 792,4992, 800,1408,\n   808,5504, 816,1920, 824,6016, 832,2432, 840,6528, 848,2944, 856,7040,\n   864,3456, 872,7552, 880,3968, 888,8064, 896,2240, 904,4544, 912,960,\n   920,5056, 928,1472, 936,5568, 944,1984, 952,6080, 960,2496, 968,6592,\n   976,3008, 984,7104, 992,3520, 1000,7616, 1008,4032, 1016,8128, 1024,4096,\n   1032,4104, 1040,4352, 1048,4616, 1056,4104, 1064,5128, 1072,1544,\n   1080,5640, 1088,2056, 1096,6152, 1104,2568, 1112,6664, 1120,3080,\n   1128,7176, 1136,3592, 1144,7688, 1152,6144, 1160,4168, 1168,6400,\n   1176,4680, 1184,6152, 1192,5192, 1200,1608, 1208,5704, 1216,2120,\n   1224,6216, 1232,2632, 1240,6728, 1248,3144, 1256,7240, 1264,3656,\n   1272,7752, 1280,4160, 1288,4232, 1296,4416, 1304,4744, 1312,4168,\n   1320,5256, 1328,1672, 1336,5768, 1344,2184, 1352,6280, 1360,2696,\n   1368,6792, 1376,3208, 1384,7304, 1392,3720, 1400,7816, 1408,6208,\n   1416,4296, 1424,6464, 1432,4808, 1440,6216, 1448,5320, 1456,1736,\n   1464,5832, 1472,2248, 1480,6344, 1488,2760, 1496,6856, 1504,3272,\n   1512,7368, 1520,3784, 1528,7880, 1536,4224, 1544,4360, 1552,4480,\n   1560,4872, 1568,4232, 1576,5384, 1584,1800, 1592,5896, 1600,2312,\n   1608,6408, 1616,2824, 1624,6920, 1632,3336, 1640,7432, 1648,3848,\n   1656,7944, 1664,6272, 1672,4424, 1680,6528, 1688,4936, 1696,6280,\n   1704,5448, 1712,1864, 1720,5960, 1728,2376, 1736,6472, 1744,2888,\n   1752,6984, 1760,3400, 1768,7496, 1776,3912, 1784,8008, 1792,4288,\n   1800,4488, 1808,4544, 1816,5000, 1824,4296, 1832,5512, 1840,1928,\n   1848,6024, 1856,2440, 1864,6536, 1872,2952, 1880,7048, 1888,3464,\n   1896,7560, 1904,3976, 1912,8072, 1920,6336, 1928,4552, 1936,6592,\n   1944,5064, 1952,6344, 1960,5576, 1968,1992, 1976,6088, 1984,2504,\n   1992,6600, 2000,3016, 2008,7112, 2016,3528, 2024,7624, 2032,4040,\n   2040,8136, 2056,4112, 2064,2112, 2072,4624, 2080,4352, 2088,5136,\n   2096,4480, 2104,5648, 2120,6160, 2128,2576, 2136,6672, 2144,3088,\n   2152,7184, 2160,3600, 2168,7696, 2176,2560, 2184,4176, 2192,2816,\n   2200,4688, 2208,2568, 2216,5200, 2224,2824, 2232,5712, 2240,2576,\n   2248,6224, 2256,2640, 2264,6736, 2272,3152, 2280,7248, 2288,3664,\n   2296,7760, 2312,4240, 2320,2432, 2328,4752, 2336,6400, 2344,5264,\n   2352,6528, 2360,5776, 2368,2816, 2376,6288, 2384,2704, 2392,6800,\n   2400,3216, 2408,7312, 2416,3728, 2424,7824, 2432,2624, 2440,4304,\n   2448,2880, 2456,4816, 2464,2632, 2472,5328, 2480,2888, 2488,5840,\n   2496,2640, 2504,6352, 2512,2768, 2520,6864, 2528,3280, 2536,7376,\n   2544,3792, 2552,7888, 2568,4368, 2584,4880, 2592,4416, 2600,5392,\n   2608,4544, 2616,5904, 2632,6416, 2640,2832, 2648,6928, 2656,3344,\n   2664,7440, 2672,3856, 2680,7952, 2696,4432, 2704,2944, 2712,4944,\n   2720,4432, 2728,5456, 2736,2952, 2744,5968, 2752,2944, 2760,6480,\n   2768,2896, 2776,6992, 2784,3408, 2792,7504, 2800,3920, 2808,8016,\n   2824,4496, 2840,5008, 2848,6464, 2856,5520, 2864,6592, 2872,6032,\n   2888,6544, 2896,2960, 2904,7056, 2912,3472, 2920,7568, 2928,3984,\n   2936,8080, 2952,4560, 2960,3008, 2968,5072, 2976,6480, 2984,5584,\n   2992,3016, 3000,6096, 3016,6608, 3032,7120, 3040,3536, 3048,7632,\n   3056,4048, 3064,8144, 3072,4608, 3080,4120, 3088,4864, 3096,4632,\n   3104,4616, 3112,5144, 3120,4872, 3128,5656, 3136,4624, 3144,6168,\n   3152,4880, 3160,6680, 3168,4632, 3176,7192, 3184,3608, 3192,7704,\n   3200,6656, 3208,4184, 3216,6912, 3224,4696, 3232,6664, 3240,5208,\n   3248,6920, 3256,5720, 3264,6672, 3272,6232, 3280,6928, 3288,6744,\n   3296,6680, 3304,7256, 3312,3672, 3320,7768, 3328,4672, 3336,4248,\n   3344,4928, 3352,4760, 3360,4680, 3368,5272, 3376,4936, 3384,5784,\n   3392,4688, 3400,6296, 3408,4944, 3416,6808, 3424,4696, 3432,7320,\n   3440,3736, 3448,7832, 3456,6720, 3464,4312, 3472,6976, 3480,4824,\n   3488,6728, 3496,5336, 3504,6984, 3512,5848, 3520,6736, 3528,6360,\n   3536,6992, 3544,6872, 3552,6744, 3560,7384, 3568,3800, 3576,7896,\n   3584,4736, 3592,4376, 3600,4992, 3608,4888, 3616,4744, 3624,5400,\n   3632,5000, 3640,5912, 3648,4752, 3656,6424, 3664,5008, 3672,6936,\n   3680,4760, 3688,7448, 3696,3864, 3704,7960, 3712,6784, 3720,4440,\n   3728,7040, 3736,4952, 3744,6792, 3752,5464, 3760,7048, 3768,5976,\n   3776,6800, 3784,6488, 3792,7056, 3800,7000, 3808,6808, 3816,7512,\n   3824,3928, 3832,8024, 3840,4800, 3848,4504, 3856,5056, 3864,5016,\n   3872,4808, 3880,5528, 3888,5064, 3896,6040, 3904,4816, 3912,6552,\n   3920,5072, 3928,7064, 3936,4824, 3944,7576, 3952,3992, 3960,8088,\n   3968,6848, 3976,4568, 3984,7104, 3992,5080, 4000,6856, 4008,5592,\n   4016,7112, 4024,6104, 4032,6864, 4040,6616, 4048,7120, 4056,7128,\n   4064,6872, 4072,7640, 4080,7128, 4088,8152, 4104,4128, 4112,4160,\n   4120,4640, 4136,5152, 4144,4232, 4152,5664, 4160,4352, 4168,6176,\n   4176,4416, 4184,6688, 4192,4616, 4200,7200, 4208,4744, 4216,7712,\n   4224,4608, 4232,4616, 4240,4672, 4248,4704, 4256,4640, 4264,5216,\n   4272,4704, 4280,5728, 4288,4864, 4296,6240, 4304,4928, 4312,6752,\n   4320,4632, 4328,7264, 4336,4760, 4344,7776, 4360,4640, 4368,4416,\n   4376,4768, 4384,6152, 4392,5280, 4400,6280, 4408,5792, 4424,6304,\n   4440,6816, 4448,6664, 4456,7328, 4464,6792, 4472,7840, 4480,4624,\n   4488,4632, 4496,4688, 4504,4832, 4512,6168, 4520,5344, 4528,6296,\n   4536,5856, 4544,4880, 4552,6368, 4560,4944, 4568,6880, 4576,6680,\n   4584,7392, 4592,6808, 4600,7904, 4608,6144, 4616,6152, 4624,6208,\n   4632,4896, 4640,6176, 4648,5408, 4656,6240, 4664,5920, 4672,6400,\n   4680,6432, 4688,6464, 4696,6944, 4704,6432, 4712,7456, 4720,4808,\n   4728,7968, 4736,6656, 4744,6664, 4752,6720, 4760,4960, 4768,6688,\n   4776,5472, 4784,6752, 4792,5984, 4800,6912, 4808,6496, 4816,6976,\n   4824,7008, 4832,6944, 4840,7520, 4848,7008, 4856,8032, 4864,6160,\n   4872,6168, 4880,6224, 4888,5024, 4896,6216, 4904,5536, 4912,6344,\n   4920,6048, 4928,6416, 4936,6560, 4944,6480, 4952,7072, 4960,6728,\n   4968,7584, 4976,6856, 4984,8096, 4992,6672, 5000,6680, 5008,6736,\n   5016,5088, 5024,6232, 5032,5600, 5040,6360, 5048,6112, 5056,6928,\n   5064,6624, 5072,6992, 5080,7136, 5088,6744, 5096,7648, 5104,6872,\n   5112,8160, 5128,5152, 5136,5376, 5144,5408, 5168,5384, 5176,5672,\n   5184,5376, 5192,6184, 5200,5392, 5208,6696, 5216,5408, 5224,7208,\n   5232,5400, 5240,7720, 5248,7168, 5256,7200, 5264,7424, 5272,7456,\n   5280,7176, 5288,7208, 5296,7432, 5304,5736, 5312,7184, 5320,6248,\n   5328,7440, 5336,6760, 5344,7192, 5352,7272, 5360,7448, 5368,7784,\n   5384,5408, 5392,5440, 5400,5472, 5408,6184, 5416,7208, 5424,5448,\n   5432,5800, 5448,6312, 5464,6824, 5472,6696, 5480,7336, 5488,6824,\n   5496,7848, 5504,7232, 5512,7264, 5520,7488, 5528,7520, 5536,7240,\n   5544,7272, 5552,7496, 5560,5864, 5568,7248, 5576,6376, 5584,7504,\n   5592,6888, 5600,7256, 5608,7400, 5616,7512, 5624,7912, 5632,7168,\n   5640,7176, 5648,7232, 5656,7240, 5664,7200, 5672,7208, 5680,7264,\n   5688,5928, 5696,7424, 5704,6440, 5712,7488, 5720,6952, 5728,7456,\n   5736,7464, 5744,7520, 5752,7976, 5760,7296, 5768,7328, 5776,7552,\n   5784,7584, 5792,7304, 5800,7336, 5808,7560, 5816,5992, 5824,7312,\n   5832,6504, 5840,7568, 5848,7016, 5856,7320, 5864,7528, 5872,7576,\n   5880,8040, 5888,7184, 5896,7192, 5904,7248, 5912,7256, 5920,6248,\n   5928,7272, 5936,6376, 5944,6056, 5952,7440, 5960,6568, 5968,7504,\n   5976,7080, 5984,6760, 5992,7592, 6000,6888, 6008,8104, 6016,7360,\n   6024,7392, 6032,7616, 6040,7648, 6048,7368, 6056,7400, 6064,7624,\n   6072,6120, 6080,7376, 6088,6632, 6096,7632, 6104,7144, 6112,7384,\n   6120,7656, 6128,7640, 6136,8168, 6168,6240, 6192,6216, 6200,7264,\n   6232,6704, 6248,7216, 6256,6680, 6264,7728, 6272,6656, 6280,6664,\n   6288,6912, 6296,6496, 6304,6688, 6312,6696, 6320,6944, 6328,7520,\n   6336,6672, 6344,6680, 6352,6928, 6360,6768, 6368,6704, 6376,7280,\n   6384,6744, 6392,7792, 6408,6432, 6424,6752, 6440,7432, 6448,6536,\n   6456,7560, 6472,6944, 6488,6832, 6496,6920, 6504,7344, 6512,7048,\n   6520,7856, 6528,6720, 6536,6728, 6544,6976, 6552,7008, 6560,6752,\n   6568,7448, 6576,7008, 6584,7576, 6592,6736, 6600,6744, 6608,6992,\n   6616,6896, 6624,6936, 6632,7408, 6640,7064, 6648,7920, 6712,7280,\n   6744,6960, 6760,7472, 6768,6936, 6776,7984, 6800,6848, 6808,6856,\n   6832,6880, 6840,6888, 6848,7040, 6856,7048, 6864,7104, 6872,7024,\n   6880,7072, 6888,7536, 6896,7136, 6904,8048, 6952,7496, 6968,7624,\n   6984,7008, 7000,7088, 7016,7600, 7024,7112, 7032,8112, 7056,7104,\n   7064,7112, 7080,7512, 7088,7136, 7096,7640, 7128,7152, 7144,7664,\n   7160,8176, 7176,7200, 7192,7216, 7224,7272, 7240,7264, 7256,7280,\n   7288,7736, 7296,7680, 7304,7712, 7312,7936, 7320,7968, 7328,7688,\n   7336,7720, 7344,7944, 7352,7976, 7360,7696, 7368,7728, 7376,7952,\n   7384,7984, 7392,7704, 7400,7736, 7408,7960, 7416,7800, 7432,7456,\n   7448,7472, 7480,7592, 7496,7520, 7512,7536, 7528,7976, 7544,7864,\n   7552,7744, 7560,7776, 7568,8000, 7576,8032, 7584,7752, 7592,7784,\n   7600,8008, 7608,8040, 7616,7760, 7624,7792, 7632,8016, 7640,8048,\n   7648,7768, 7656,7800, 7664,8024, 7672,7928, 7688,7712, 7704,7728,\n   7752,7776, 7768,7792, 7800,7992, 7816,7840, 7824,8064, 7832,8096,\n   7856,8072, 7864,8104, 7872,8064, 7880,8072, 7888,8080, 7896,8112,\n   7904,8096, 7912,8104, 7920,8088, 7928,8056, 7944,7968, 7960,7984,\n   8008,8032, 8024,8048, 8056,8120, 8072,8096, 8080,8128, 8088,8160,\n   8112,8136, 8120,8168, 8136,8160, 8152,8176\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_2048)\n\nconst uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE_2048_TABLE_LENGTH] =\n{\n   /* 8x2, size 3808 */\n   8,4096, 16,8192, 24,12288, 32,512, 40,4608, 48,8704, 56,12800, 64,1024,\n   72,5120, 80,9216, 88,13312, 96,1536, 104,5632, 112,9728, 120,13824,\n   128,2048, 136,6144, 144,10240, 152,14336, 160,2560, 168,6656, 176,10752,\n   184,14848, 192,3072, 200,7168, 208,11264, 216,15360, 224,3584, 232,7680,\n   240,11776, 248,15872, 256,1024, 264,4160, 272,8256, 280,12352, 288,576,\n   296,4672, 304,8768, 312,12864, 320,1088, 328,5184, 336,9280, 344,13376,\n   352,1600, 360,5696, 368,9792, 376,13888, 384,2112, 392,6208, 400,10304,\n   408,14400, 416,2624, 424,6720, 432,10816, 440,14912, 448,3136, 456,7232,\n   464,11328, 472,15424, 480,3648, 488,7744, 496,11840, 504,15936, 512,2048,\n   520,4224, 528,8320, 536,12416, 544,640, 552,4736, 560,8832, 568,12928,\n   576,1152, 584,5248, 592,9344, 600,13440, 608,1664, 616,5760, 624,9856,\n   632,13952, 640,2176, 648,6272, 656,10368, 664,14464, 672,2688, 680,6784,\n   688,10880, 696,14976, 704,3200, 712,7296, 720,11392, 728,15488, 736,3712,\n   744,7808, 752,11904, 760,16000, 768,3072, 776,4288, 784,8384, 792,12480,\n   800,3200, 808,4800, 816,8896, 824,12992, 832,1216, 840,5312, 848,9408,\n   856,13504, 864,1728, 872,5824, 880,9920, 888,14016, 896,2240, 904,6336,\n   912,10432, 920,14528, 928,2752, 936,6848, 944,10944, 952,15040, 960,3264,\n   968,7360, 976,11456, 984,15552, 992,3776, 1000,7872, 1008,11968, 1016,16064,\n   1032,4352, 1040,8448, 1048,12544, 1056,3072, 1064,4864, 1072,8960,\n   1080,13056, 1088,1280, 1096,5376, 1104,9472, 1112,13568, 1120,1792,\n   1128,5888, 1136,9984, 1144,14080, 1152,2304, 1160,6400, 1168,10496,\n   1176,14592, 1184,2816, 1192,6912, 1200,11008, 1208,15104, 1216,3328,\n   1224,7424, 1232,11520, 1240,15616, 1248,3840, 1256,7936, 1264,12032,\n   1272,16128, 1288,4416, 1296,8512, 1304,12608, 1312,3328, 1320,4928,\n   1328,9024, 1336,13120, 1352,5440, 1360,9536, 1368,13632, 1376,1856,\n   1384,5952, 1392,10048, 1400,14144, 1408,2368, 1416,6464, 1424,10560,\n   1432,14656, 1440,2880, 1448,6976, 1456,11072, 1464,15168, 1472,3392,\n   1480,7488, 1488,11584, 1496,15680, 1504,3904, 1512,8000, 1520,12096,\n   1528,16192, 1536,2112, 1544,4480, 1552,8576, 1560,12672, 1568,2240,\n   1576,4992, 1584,9088, 1592,13184, 1600,2368, 1608,5504, 1616,9600,\n   1624,13696, 1632,1920, 1640,6016, 1648,10112, 1656,14208, 1664,2432,\n   1672,6528, 1680,10624, 1688,14720, 1696,2944, 1704,7040, 1712,11136,\n   1720,15232, 1728,3456, 1736,7552, 1744,11648, 1752,15744, 1760,3968,\n   1768,8064, 1776,12160, 1784,16256, 1792,3136, 1800,4544, 1808,8640,\n   1816,12736, 1824,3264, 1832,5056, 1840,9152, 1848,13248, 1856,3392,\n   1864,5568, 1872,9664, 1880,13760, 1888,1984, 1896,6080, 1904,10176,\n   1912,14272, 1920,2496, 1928,6592, 1936,10688, 1944,14784, 1952,3008,\n   1960,7104, 1968,11200, 1976,15296, 1984,3520, 1992,7616, 2000,11712,\n   2008,15808, 2016,4032, 2024,8128, 2032,12224, 2040,16320, 2048,4096,\n   2056,4104, 2064,8200, 2072,12296, 2080,4224, 2088,4616, 2096,8712,\n   2104,12808, 2112,4352, 2120,5128, 2128,9224, 2136,13320, 2144,4480,\n   2152,5640, 2160,9736, 2168,13832, 2176,4104, 2184,6152, 2192,10248,\n   2200,14344, 2208,2568, 2216,6664, 2224,10760, 2232,14856, 2240,3080,\n   2248,7176, 2256,11272, 2264,15368, 2272,3592, 2280,7688, 2288,11784,\n   2296,15880, 2304,5120, 2312,4168, 2320,8264, 2328,12360, 2336,5248,\n   2344,4680, 2352,8776, 2360,12872, 2368,5376, 2376,5192, 2384,9288,\n   2392,13384, 2400,5504, 2408,5704, 2416,9800, 2424,13896, 2432,5128,\n   2440,6216, 2448,10312, 2456,14408, 2464,2632, 2472,6728, 2480,10824,\n   2488,14920, 2496,3144, 2504,7240, 2512,11336, 2520,15432, 2528,3656,\n   2536,7752, 2544,11848, 2552,15944, 2560,6144, 2568,4232, 2576,8328,\n   2584,12424, 2592,6272, 2600,4744, 2608,8840, 2616,12936, 2624,6400,\n   2632,5256, 2640,9352, 2648,13448, 2656,6528, 2664,5768, 2672,9864,\n   2680,13960, 2688,6152, 2696,6280, 2704,10376, 2712,14472, 2720,6280,\n   2728,6792, 2736,10888, 2744,14984, 2752,3208, 2760,7304, 2768,11400,\n   2776,15496, 2784,3720, 2792,7816, 2800,11912, 2808,16008, 2816,7168,\n   2824,4296, 2832,8392, 2840,12488, 2848,7296, 2856,4808, 2864,8904,\n   2872,13000, 2880,7424, 2888,5320, 2896,9416, 2904,13512, 2912,7552,\n   2920,5832, 2928,9928, 2936,14024, 2944,7176, 2952,6344, 2960,10440,\n   2968,14536, 2976,7304, 2984,6856, 2992,10952, 3000,15048, 3008,3272,\n   3016,7368, 3024,11464, 3032,15560, 3040,3784, 3048,7880, 3056,11976,\n   3064,16072, 3072,4160, 3080,4360, 3088,8456, 3096,12552, 3104,4288,\n   3112,4872, 3120,8968, 3128,13064, 3136,4416, 3144,5384, 3152,9480,\n   3160,13576, 3168,4544, 3176,5896, 3184,9992, 3192,14088, 3200,4168,\n   3208,6408, 3216,10504, 3224,14600, 3232,4296, 3240,6920, 3248,11016,\n   3256,15112, 3264,3336, 3272,7432, 3280,11528, 3288,15624, 3296,3848,\n   3304,7944, 3312,12040, 3320,16136, 3328,5184, 3336,4424, 3344,8520,\n   3352,12616, 3360,5312, 3368,4936, 3376,9032, 3384,13128, 3392,5440,\n   3400,5448, 3408,9544, 3416,13640, 3424,5568, 3432,5960, 3440,10056,\n   3448,14152, 3456,5192, 3464,6472, 3472,10568, 3480,14664, 3488,5320,\n   3496,6984, 3504,11080, 3512,15176, 3520,5448, 3528,7496, 3536,11592,\n   3544,15688, 3552,3912, 3560,8008, 3568,12104, 3576,16200, 3584,6208,\n   3592,4488, 3600,8584, 3608,12680, 3616,6336, 3624,5000, 3632,9096,\n   3640,13192, 3648,6464, 3656,5512, 3664,9608, 3672,13704, 3680,6592,\n   3688,6024, 3696,10120, 3704,14216, 3712,6216, 3720,6536, 3728,10632,\n   3736,14728, 3744,6344, 3752,7048, 3760,11144, 3768,15240, 3776,6472,\n   3784,7560, 3792,11656, 3800,15752, 3808,3976, 3816,8072, 3824,12168,\n   3832,16264, 3840,7232, 3848,4552, 3856,8648, 3864,12744, 3872,7360,\n   3880,5064, 3888,9160, 3896,13256, 3904,7488, 3912,5576, 3920,9672,\n   3928,13768, 3936,7616, 3944,6088, 3952,10184, 3960,14280, 3968,7240,\n   3976,6600, 3984,10696, 3992,14792, 4000,7368, 4008,7112, 4016,11208,\n   4024,15304, 4032,7496, 4040,7624, 4048,11720, 4056,15816, 4064,7624,\n   4072,8136, 4080,12232, 4088,16328, 4096,8192, 4104,4112, 4112,8208,\n   4120,12304, 4128,8320, 4136,4624, 4144,8720, 4152,12816, 4160,8448,\n   4168,5136, 4176,9232, 4184,13328, 4192,8576, 4200,5648, 4208,9744,\n   4216,13840, 4224,8200, 4232,6160, 4240,10256, 4248,14352, 4256,8328,\n   4264,6672, 4272,10768, 4280,14864, 4288,8456, 4296,7184, 4304,11280,\n   4312,15376, 4320,8584, 4328,7696, 4336,11792, 4344,15888, 4352,9216,\n   4360,9232, 4368,8272, 4376,12368, 4384,9344, 4392,4688, 4400,8784,\n   4408,12880, 4416,9472, 4424,5200, 4432,9296, 4440,13392, 4448,9600,\n   4456,5712, 4464,9808, 4472,13904, 4480,9224, 4488,6224, 4496,10320,\n   4504,14416, 4512,9352, 4520,6736, 4528,10832, 4536,14928, 4544,9480,\n   4552,7248, 4560,11344, 4568,15440, 4576,9608, 4584,7760, 4592,11856,\n   4600,15952, 4608,10240, 4616,10256, 4624,8336, 4632,12432, 4640,10368,\n   4648,4752, 4656,8848, 4664,12944, 4672,10496, 4680,5264, 4688,9360,\n   4696,13456, 4704,10624, 4712,5776, 4720,9872, 4728,13968, 4736,10248,\n   4744,6288, 4752,10384, 4760,14480, 4768,10376, 4776,6800, 4784,10896,\n   4792,14992, 4800,10504, 4808,7312, 4816,11408, 4824,15504, 4832,10632,\n   4840,7824, 4848,11920, 4856,16016, 4864,11264, 4872,11280, 4880,8400,\n   4888,12496, 4896,11392, 4904,11408, 4912,8912, 4920,13008, 4928,11520,\n   4936,5328, 4944,9424, 4952,13520, 4960,11648, 4968,5840, 4976,9936,\n   4984,14032, 4992,11272, 5000,6352, 5008,10448, 5016,14544, 5024,11400,\n   5032,6864, 5040,10960, 5048,15056, 5056,11528, 5064,7376, 5072,11472,\n   5080,15568, 5088,11656, 5096,7888, 5104,11984, 5112,16080, 5120,8256,\n   5128,8272, 5136,8464, 5144,12560, 5152,8384, 5160,8400, 5168,8976,\n   5176,13072, 5184,8512, 5192,5392, 5200,9488, 5208,13584, 5216,8640,\n   5224,5904, 5232,10000, 5240,14096, 5248,8264, 5256,6416, 5264,10512,\n   5272,14608, 5280,8392, 5288,6928, 5296,11024, 5304,15120, 5312,8520,\n   5320,7440, 5328,11536, 5336,15632, 5344,8648, 5352,7952, 5360,12048,\n   5368,16144, 5376,9280, 5384,9296, 5392,8528, 5400,12624, 5408,9408,\n   5416,9424, 5424,9040, 5432,13136, 5440,9536, 5448,5456, 5456,9552,\n   5464,13648, 5472,9664, 5480,5968, 5488,10064, 5496,14160, 5504,9288,\n   5512,6480, 5520,10576, 5528,14672, 5536,9416, 5544,6992, 5552,11088,\n   5560,15184, 5568,9544, 5576,7504, 5584,11600, 5592,15696, 5600,9672,\n   5608,8016, 5616,12112, 5624,16208, 5632,10304, 5640,10320, 5648,8592,\n   5656,12688, 5664,10432, 5672,10448, 5680,9104, 5688,13200, 5696,10560,\n   5704,10576, 5712,9616, 5720,13712, 5728,10688, 5736,6032, 5744,10128,\n   5752,14224, 5760,10312, 5768,6544, 5776,10640, 5784,14736, 5792,10440,\n   5800,7056, 5808,11152, 5816,15248, 5824,10568, 5832,7568, 5840,11664,\n   5848,15760, 5856,10696, 5864,8080, 5872,12176, 5880,16272, 5888,11328,\n   5896,11344, 5904,8656, 5912,12752, 5920,11456, 5928,11472, 5936,9168,\n   5944,13264, 5952,11584, 5960,11600, 5968,9680, 5976,13776, 5984,11712,\n   5992,6096, 6000,10192, 6008,14288, 6016,11336, 6024,6608, 6032,10704,\n   6040,14800, 6048,11464, 6056,7120, 6064,11216, 6072,15312, 6080,11592,\n   6088,7632, 6096,11728, 6104,15824, 6112,11720, 6120,8144, 6128,12240,\n   6136,16336, 6144,12288, 6152,12304, 6160,8216, 6168,12312, 6176,12416,\n   6184,12432, 6192,8728, 6200,12824, 6208,12544, 6216,12560, 6224,9240,\n   6232,13336, 6240,12672, 6248,12688, 6256,9752, 6264,13848, 6272,12296,\n   6280,12312, 6288,10264, 6296,14360, 6304,12424, 6312,6680, 6320,10776,\n   6328,14872, 6336,12552, 6344,7192, 6352,11288, 6360,15384, 6368,12680,\n   6376,7704, 6384,11800, 6392,15896, 6400,13312, 6408,13328, 6416,8280,\n   6424,12376, 6432,13440, 6440,13456, 6448,8792, 6456,12888, 6464,13568,\n   6472,13584, 6480,9304, 6488,13400, 6496,13696, 6504,13712, 6512,9816,\n   6520,13912, 6528,13320, 6536,13336, 6544,10328, 6552,14424, 6560,13448,\n   6568,6744, 6576,10840, 6584,14936, 6592,13576, 6600,7256, 6608,11352,\n   6616,15448, 6624,13704, 6632,7768, 6640,11864, 6648,15960, 6656,14336,\n   6664,14352, 6672,8344, 6680,12440, 6688,14464, 6696,14480, 6704,8856,\n   6712,12952, 6720,14592, 6728,14608, 6736,9368, 6744,13464, 6752,14720,\n   6760,14736, 6768,9880, 6776,13976, 6784,14344, 6792,14360, 6800,10392,\n   6808,14488, 6816,14472, 6824,14488, 6832,10904, 6840,15000, 6848,14600,\n   6856,7320, 6864,11416, 6872,15512, 6880,14728, 6888,7832, 6896,11928,\n   6904,16024, 6912,15360, 6920,15376, 6928,8408, 6936,12504, 6944,15488,\n   6952,15504, 6960,8920, 6968,13016, 6976,15616, 6984,15632, 6992,9432,\n   7000,13528, 7008,15744, 7016,15760, 7024,9944, 7032,14040, 7040,15368,\n   7048,15384, 7056,10456, 7064,14552, 7072,15496, 7080,15512, 7088,10968,\n   7096,15064, 7104,15624, 7112,7384, 7120,11480, 7128,15576, 7136,15752,\n   7144,7896, 7152,11992, 7160,16088, 7168,12352, 7176,12368, 7184,8472,\n   7192,12568, 7200,12480, 7208,12496, 7216,8984, 7224,13080, 7232,12608,\n   7240,12624, 7248,9496, 7256,13592, 7264,12736, 7272,12752, 7280,10008,\n   7288,14104, 7296,12360, 7304,12376, 7312,10520, 7320,14616, 7328,12488,\n   7336,12504, 7344,11032, 7352,15128, 7360,12616, 7368,7448, 7376,11544,\n   7384,15640, 7392,12744, 7400,7960, 7408,12056, 7416,16152, 7424,13376,\n   7432,13392, 7440,8536, 7448,12632, 7456,13504, 7464,13520, 7472,9048,\n   7480,13144, 7488,13632, 7496,13648, 7504,9560, 7512,13656, 7520,13760,\n   7528,13776, 7536,10072, 7544,14168, 7552,13384, 7560,13400, 7568,10584,\n   7576,14680, 7584,13512, 7592,13528, 7600,11096, 7608,15192, 7616,13640,\n   7624,13656, 7632,11608, 7640,15704, 7648,13768, 7656,8024, 7664,12120,\n   7672,16216, 7680,14400, 7688,14416, 7696,8600, 7704,12696, 7712,14528,\n   7720,14544, 7728,9112, 7736,13208, 7744,14656, 7752,14672, 7760,9624,\n   7768,13720, 7776,14784, 7784,14800, 7792,10136, 7800,14232, 7808,14408,\n   7816,14424, 7824,10648, 7832,14744, 7840,14536, 7848,14552, 7856,11160,\n   7864,15256, 7872,14664, 7880,14680, 7888,11672, 7896,15768, 7904,14792,\n   7912,8088, 7920,12184, 7928,16280, 7936,15424, 7944,15440, 7952,8664,\n   7960,12760, 7968,15552, 7976,15568, 7984,9176, 7992,13272, 8000,15680,\n   8008,15696, 8016,9688, 8024,13784, 8032,15808, 8040,15824, 8048,10200,\n   8056,14296, 8064,15432, 8072,15448, 8080,10712, 8088,14808, 8096,15560,\n   8104,15576, 8112,11224, 8120,15320, 8128,15688, 8136,15704, 8144,11736,\n   8152,15832, 8160,15816, 8168,15832, 8176,12248, 8184,16344, 8200,8320,\n   8208,8224, 8216,12320, 8232,10368, 8240,8736, 8248,12832, 8256,8448,\n   8264,8384, 8272,9248, 8280,13344, 8288,9232, 8296,10432, 8304,9760,\n   8312,13856, 8328,12416, 8336,10272, 8344,14368, 8352,12296, 8360,14464,\n   8368,10784, 8376,14880, 8384,8456, 8392,12480, 8400,11296, 8408,15392,\n   8416,12552, 8424,14528, 8432,11808, 8440,15904, 8448,9216, 8456,8576,\n   8464,9232, 8472,12384, 8480,9248, 8488,10624, 8496,8800, 8504,12896,\n   8512,9472, 8520,8640, 8528,9312, 8536,13408, 8544,9296, 8552,10688,\n   8560,9824, 8568,13920, 8576,9224, 8584,12672, 8592,10336, 8600,14432,\n   8608,13320, 8616,14720, 8624,10848, 8632,14944, 8640,9480, 8648,12736,\n   8656,11360, 8664,15456, 8672,13576, 8680,14784, 8688,11872, 8696,15968,\n   8704,12288, 8712,12416, 8720,12296, 8728,12448, 8736,12304, 8744,10376,\n   8752,8864, 8760,12960, 8768,12352, 8776,12480, 8784,9376, 8792,13472,\n   8800,12368, 8808,10440, 8816,9888, 8824,13984, 8832,12320, 8840,12424,\n   8848,10400, 8856,14496, 8864,12312, 8872,14472, 8880,10912, 8888,15008,\n   8896,12384, 8904,12488, 8912,11424, 8920,15520, 8928,12568, 8936,14536,\n   8944,11936, 8952,16032, 8960,12544, 8968,12672, 8976,12552, 8984,12512,\n   8992,12560, 9000,10632, 9008,12568, 9016,13024, 9024,12608, 9032,12736,\n   9040,9440, 9048,13536, 9056,12624, 9064,10696, 9072,9952, 9080,14048,\n   9088,9240, 9096,12680, 9104,10464, 9112,14560, 9120,13336, 9128,14728,\n   9136,10976, 9144,15072, 9152,9496, 9160,12744, 9168,11488, 9176,15584,\n   9184,13592, 9192,14792, 9200,12000, 9208,16096, 9224,9344, 9232,9248,\n   9240,12576, 9256,11392, 9264,12560, 9272,13088, 9280,9472, 9288,9408,\n   9296,9504, 9304,13600, 9312,9488, 9320,11456, 9328,10016, 9336,14112,\n   9352,13440, 9360,10528, 9368,14624, 9376,12360, 9384,15488, 9392,11040,\n   9400,15136, 9408,9480, 9416,13504, 9424,11552, 9432,15648, 9440,12616,\n   9448,15552, 9456,12064, 9464,16160, 9480,9600, 9488,9504, 9496,12640,\n   9512,11648, 9520,12624, 9528,13152, 9544,9664, 9552,9568, 9560,13664,\n   9576,11712, 9584,10080, 9592,14176, 9608,13696, 9616,10592, 9624,14688,\n   9632,13384, 9640,15744, 9648,11104, 9656,15200, 9672,13760, 9680,11616,\n   9688,15712, 9696,13640, 9704,15808, 9712,12128, 9720,16224, 9728,13312,\n   9736,13440, 9744,13320, 9752,12704, 9760,13328, 9768,11400, 9776,13336,\n   9784,13216, 9792,13376, 9800,13504, 9808,13384, 9816,13728, 9824,13392,\n   9832,11464, 9840,10144, 9848,14240, 9856,13344, 9864,13448, 9872,10656,\n   9880,14752, 9888,12376, 9896,15496, 9904,11168, 9912,15264, 9920,13408,\n   9928,13512, 9936,11680, 9944,15776, 9952,12632, 9960,15560, 9968,12192,\n   9976,16288, 9984,13568, 9992,13696, 10000,13576, 10008,12768, 10016,13584,\n   10024,11656, 10032,13592, 10040,13280, 10048,13632, 10056,13760,\n   10064,13640, 10072,13792, 10080,13648, 10088,11720, 10096,10208,\n   10104,14304, 10112,13600, 10120,13704, 10128,10720, 10136,14816,\n   10144,13400, 10152,15752, 10160,11232, 10168,15328, 10176,13664,\n   10184,13768, 10192,11744, 10200,15840, 10208,13656, 10216,15816,\n   10224,12256, 10232,16352, 10248,10272, 10256,10368, 10264,12328,\n   10280,10384, 10288,10376, 10296,12840, 10304,11264, 10312,11296,\n   10320,11392, 10328,13352, 10336,11272, 10344,10448, 10352,11400,\n   10360,13864, 10376,12432, 10392,14376, 10400,12328, 10408,14480,\n   10416,10792, 10424,14888, 10432,11280, 10440,12496, 10448,11304,\n   10456,15400, 10464,11288, 10472,14544, 10480,11816, 10488,15912,\n   10496,11264, 10504,11272, 10512,11280, 10520,12392, 10528,11296,\n   10536,10640, 10544,12496, 10552,12904, 10560,11328, 10568,11360,\n   10576,11456, 10584,13416, 10592,11336, 10600,10704, 10608,11464,\n   10616,13928, 10624,11392, 10632,12688, 10640,11304, 10648,14440,\n   10656,13352, 10664,14736, 10672,10856, 10680,14952, 10688,11344,\n   10696,12752, 10704,11368, 10712,15464, 10720,11352, 10728,14800,\n   10736,11880, 10744,15976, 10752,14336, 10760,14368, 10768,14464,\n   10776,12456, 10784,14344, 10792,14376, 10800,14472, 10808,12968,\n   10816,15360, 10824,15392, 10832,15488, 10840,13480, 10848,15368,\n   10856,15400, 10864,15496, 10872,13992, 10880,14352, 10888,12440,\n   10896,14480, 10904,14504, 10912,14360, 10920,14488, 10928,14488,\n   10936,15016, 10944,15376, 10952,12504, 10960,11432, 10968,15528,\n   10976,15384, 10984,14552, 10992,11944, 11000,16040, 11008,14400,\n   11016,14432, 11024,14528, 11032,12520, 11040,14408, 11048,14440,\n   11056,14536, 11064,13032, 11072,15424, 11080,15456, 11088,15552,\n   11096,13544, 11104,15432, 11112,15464, 11120,15560, 11128,14056,\n   11136,14416, 11144,12696, 11152,14544, 11160,14568, 11168,14424,\n   11176,14744, 11184,14552, 11192,15080, 11200,15440, 11208,12760,\n   11216,11496, 11224,15592, 11232,15448, 11240,14808, 11248,12008,\n   11256,16104, 11272,11296, 11280,11392, 11288,12584, 11304,11408,\n   11312,12688, 11320,13096, 11328,11520, 11336,11552, 11344,11648,\n   11352,13608, 11360,11528, 11368,11472, 11376,11656, 11384,14120,\n   11400,13456, 11416,14632, 11424,12392, 11432,15504, 11440,14440,\n   11448,15144, 11456,11536, 11464,13520, 11472,11560, 11480,15656,\n   11488,11544, 11496,15568, 11504,12072, 11512,16168, 11528,11552,\n   11536,11648, 11544,12648, 11560,11664, 11568,12752, 11576,13160,\n   11592,11616, 11600,11712, 11608,13672, 11624,11728, 11632,11720,\n   11640,14184, 11656,13712, 11672,14696, 11680,13416, 11688,15760,\n   11696,15464, 11704,15208, 11720,13776, 11736,15720, 11744,13672,\n   11752,15824, 11760,12136, 11768,16232, 11776,14592, 11784,14624,\n   11792,14720, 11800,12712, 11808,14600, 11816,14632, 11824,14728,\n   11832,13224, 11840,15616, 11848,15648, 11856,15744, 11864,13736,\n   11872,15624, 11880,15656, 11888,15752, 11896,14248, 11904,14608,\n   11912,13464, 11920,14736, 11928,14760, 11936,14616, 11944,15512,\n   11952,14744, 11960,15272, 11968,15632, 11976,13528, 11984,15760,\n   11992,15784, 12000,15640, 12008,15576, 12016,12200, 12024,16296,\n   12032,14656, 12040,14688, 12048,14784, 12056,12776, 12064,14664,\n   12072,14696, 12080,14792, 12088,13288, 12096,15680, 12104,15712,\n   12112,15808, 12120,13800, 12128,15688, 12136,15720, 12144,15816,\n   12152,14312, 12160,14672, 12168,13720, 12176,14800, 12184,14824,\n   12192,14680, 12200,15768, 12208,14808, 12216,15336, 12224,15696,\n   12232,13784, 12240,15824, 12248,15848, 12256,15704, 12264,15832,\n   12272,15832, 12280,16360, 12312,12336, 12344,12848, 12352,12544,\n   12360,12552, 12368,12560, 12376,13360, 12384,12576, 12392,12584,\n   12400,13336, 12408,13872, 12424,12448, 12440,14384, 12456,14496,\n   12464,14472, 12472,14896, 12480,12672, 12488,12512, 12496,12688,\n   12504,15408, 12512,12680, 12520,14560, 12528,14728, 12536,15920,\n   12544,13312, 12552,13320, 12560,13328, 12568,13336, 12576,13344,\n   12584,13352, 12592,13360, 12600,12912, 12608,13568, 12616,13576,\n   12624,13584, 12632,13424, 12640,13600, 12648,13608, 12656,13400,\n   12664,13936, 12672,13440, 12680,12704, 12688,13456, 12696,14448,\n   12704,13448, 12712,14752, 12720,15496, 12728,14960, 12736,13696,\n   12744,12768, 12752,13712, 12760,15472, 12768,13704, 12776,14816,\n   12784,15752, 12792,15984, 12800,14336, 12808,14464, 12816,14344,\n   12824,14472, 12832,14352, 12840,14480, 12848,14360, 12856,12976,\n   12864,14400, 12872,14528, 12880,14408, 12888,13488, 12896,14416,\n   12904,14544, 12912,14424, 12920,14000, 12928,14368, 12936,14496,\n   12944,14376, 12952,14512, 12960,14384, 12968,14504, 12976,14488,\n   12984,15024, 12992,14432, 13000,14560, 13008,14440, 13016,15536,\n   13024,14448, 13032,14568, 13040,14744, 13048,16048, 13056,14592,\n   13064,14720, 13072,14600, 13080,14728, 13088,14608, 13096,14736,\n   13104,14616, 13112,14744, 13120,14656, 13128,14784, 13136,14664,\n   13144,13552, 13152,14672, 13160,14800, 13168,14680, 13176,14064,\n   13184,14624, 13192,14752, 13200,14632, 13208,14576, 13216,13464,\n   13224,14760, 13232,15512, 13240,15088, 13248,14688, 13256,14816,\n   13264,14696, 13272,15600, 13280,13720, 13288,14824, 13296,15768,\n   13304,16112, 13336,13360, 13368,14616, 13376,13568, 13384,13576,\n   13392,13584, 13400,13616, 13408,13600, 13416,13608, 13424,13592,\n   13432,14128, 13448,13472, 13464,14640, 13480,15520, 13488,14536,\n   13496,15152, 13504,13696, 13512,13536, 13520,13712, 13528,15664,\n   13536,13704, 13544,15584, 13552,14792, 13560,16176, 13592,13616,\n   13624,14680, 13656,13680, 13688,14192, 13704,13728, 13720,14704,\n   13736,15776, 13744,15560, 13752,15216, 13768,13792, 13784,15728,\n   13800,15840, 13808,15816, 13816,16240, 13824,15360, 13832,15488,\n   13840,15368, 13848,15496, 13856,15376, 13864,15504, 13872,15384,\n   13880,15512, 13888,15424, 13896,15552, 13904,15432, 13912,15560,\n   13920,15440, 13928,15568, 13936,15448, 13944,14256, 13952,15392,\n   13960,15520, 13968,15400, 13976,14768, 13984,15408, 13992,15528,\n   14000,14552, 14008,15280, 14016,15456, 14024,15584, 14032,15464,\n   14040,15792, 14048,15472, 14056,15592, 14064,14808, 14072,16304,\n   14080,15616, 14088,15744, 14096,15624, 14104,15752, 14112,15632,\n   14120,15760, 14128,15640, 14136,15768, 14144,15680, 14152,15808,\n   14160,15688, 14168,15816, 14176,15696, 14184,15824, 14192,15704,\n   14200,14320, 14208,15648, 14216,15776, 14224,15656, 14232,14832,\n   14240,15664, 14248,15784, 14256,15576, 14264,15344, 14272,15712,\n   14280,15840, 14288,15720, 14296,15856, 14304,15728, 14312,15848,\n   14320,15832, 14328,16368, 14392,14488, 14400,14592, 14408,14600,\n   14416,14608, 14424,14616, 14432,14624, 14440,14632, 14448,14640,\n   14456,15512, 14504,14512, 14520,14904, 14528,14720, 14536,14728,\n   14544,14736, 14552,15416, 14560,14752, 14568,14576, 14584,15928,\n   14576,14760, 14592,15360, 14600,15368, 14608,15376, 14616,15384,\n   14624,15392, 14632,15400, 14640,15408, 14648,15416, 14656,15616,\n   14664,15624, 14672,15632, 14680,15640, 14688,15648, 14696,15656,\n   14704,15664, 14712,15576, 14720,15488, 14728,15496, 14736,15504,\n   14744,15512, 14752,15520, 14760,14768, 14776,14968, 14768,15528,\n   14784,15744, 14792,15752, 14800,15760, 14808,15480, 14816,15776,\n   14824,14832, 14840,15992, 14832,15784, 14856,14864, 14864,14880,\n   14872,14896, 14880,14976, 14888,14992, 14896,15008, 14904,15024,\n   14912,15104, 14920,15120, 14928,15136, 14936,15152, 14944,15232,\n   14952,15248, 14960,15264, 14968,15280, 14984,15008, 15000,15024,\n   15016,15024, 15040,15112, 15048,15128, 15056,15144, 15064,15544,\n   15072,15240, 15080,15256, 15088,15272, 15096,16056, 15104,15872,\n   15112,15888, 15120,15904, 15128,15920, 15136,16000, 15144,16016,\n   15152,16032, 15160,16048, 15168,16128, 15176,16144, 15184,16160,\n   15192,16176, 15200,16256, 15208,16272, 15216,16288, 15224,16304,\n   15232,15880, 15240,15896, 15248,15912, 15256,15928, 15264,16008,\n   15272,16024, 15280,16040, 15288,16056, 15296,16136, 15304,16152,\n   15312,16168, 15320,15608, 15328,16264, 15336,16280, 15344,16296,\n   15352,16120, 15416,15512, 15424,15616, 15432,15624, 15440,15632,\n   15448,15640, 15456,15648, 15464,15656, 15472,15664, 15480,15768,\n   15528,15536, 15544,16048, 15552,15744, 15560,15752, 15568,15760,\n   15576,15672, 15584,15776, 15592,15600, 15600,15784, 15608,16184,\n   15672,15768, 15736,15832, 15784,15792, 15800,16304, 15848,15856,\n   15880,16000, 15864,16248, 15888,16000, 15896,16008, 15904,16000,\n   15912,16016, 15920,16008, 15928,16024, 15936,16128, 15944,16160,\n   15952,16256, 15960,16288, 15968,16136, 15976,16168, 15984,16264,\n   15992,16296, 16008,16032, 16024,16040, 16064,16144, 16040,16048,\n   16072,16176, 16080,16272, 16088,16304, 16096,16152, 16104,16184,\n   16112,16280, 16136,16256, 16120,16312, 16144,16256, 16152,16264,\n   16160,16256, 16168,16272, 16176,16264, 16184,16280, 16200,16208,\n   16208,16224, 16216,16240, 16224,16320, 16232,16336, 16240,16352,\n   16248,16368, 16264,16288, 16280,16296, 16296,16304, 16344,16368,\n   16328,16352, 16360,16368\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FLT_4096)\n\nconst uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE_4096_TABLE_LENGTH] =\n{\n   /* radix 8, size 4032 */\n   8,4096, 16,8192, 24,12288, 32,16384, 40,20480, 48,24576, 56,28672, 64,512,\n   72,4608, 80,8704, 88,12800, 96,16896, 104,20992, 112,25088, 120,29184,\n   128,1024, 136,5120, 144,9216, 152,13312, 160,17408, 168,21504, 176,25600,\n   184,29696, 192,1536, 200,5632, 208,9728, 216,13824, 224,17920, 232,22016,\n   240,26112, 248,30208, 256,2048, 264,6144, 272,10240, 280,14336, 288,18432,\n   296,22528, 304,26624, 312,30720, 320,2560, 328,6656, 336,10752, 344,14848,\n   352,18944, 360,23040, 368,27136, 376,31232, 384,3072, 392,7168, 400,11264,\n   408,15360, 416,19456, 424,23552, 432,27648, 440,31744, 448,3584, 456,7680,\n   464,11776, 472,15872, 480,19968, 488,24064, 496,28160, 504,32256, 520,4160,\n   528,8256, 536,12352, 544,16448, 552,20544, 560,24640, 568,28736, 584,4672,\n   592,8768, 600,12864, 608,16960, 616,21056, 624,25152, 632,29248, 640,1088,\n   648,5184, 656,9280, 664,13376, 672,17472, 680,21568, 688,25664, 696,29760,\n   704,1600, 712,5696, 720,9792, 728,13888, 736,17984, 744,22080, 752,26176,\n   760,30272, 768,2112, 776,6208, 784,10304, 792,14400, 800,18496, 808,22592,\n   816,26688, 824,30784, 832,2624, 840,6720, 848,10816, 856,14912, 864,19008,\n   872,23104, 880,27200, 888,31296, 896,3136, 904,7232, 912,11328, 920,15424,\n   928,19520, 936,23616, 944,27712, 952,31808, 960,3648, 968,7744, 976,11840,\n   984,15936, 992,20032, 1000,24128, 1008,28224, 1016,32320, 1032,4224,\n   1040,8320, 1048,12416, 1056,16512, 1064,20608, 1072,24704, 1080,28800,\n   1096,4736, 1104,8832, 1112,12928, 1120,17024, 1128,21120, 1136,25216,\n   1144,29312, 1160,5248, 1168,9344, 1176,13440, 1184,17536, 1192,21632,\n   1200,25728, 1208,29824, 1216,1664, 1224,5760, 1232,9856, 1240,13952,\n   1248,18048, 1256,22144, 1264,26240, 1272,30336, 1280,2176, 1288,6272,\n   1296,10368, 1304,14464, 1312,18560, 1320,22656, 1328,26752, 1336,30848,\n   1344,2688, 1352,6784, 1360,10880, 1368,14976, 1376,19072, 1384,23168,\n   1392,27264, 1400,31360, 1408,3200, 1416,7296, 1424,11392, 1432,15488,\n   1440,19584, 1448,23680, 1456,27776, 1464,31872, 1472,3712, 1480,7808,\n   1488,11904, 1496,16000, 1504,20096, 1512,24192, 1520,28288, 1528,32384,\n   1544,4288, 1552,8384, 1560,12480, 1568,16576, 1576,20672, 1584,24768,\n   1592,28864, 1608,4800, 1616,8896, 1624,12992, 1632,17088, 1640,21184,\n   1648,25280, 1656,29376, 1672,5312, 1680,9408, 1688,13504, 1696,17600,\n   1704,21696, 1712,25792, 1720,29888, 1736,5824, 1744,9920, 1752,14016,\n   1760,18112, 1768,22208, 1776,26304, 1784,30400, 1792,2240, 1800,6336,\n   1808,10432, 1816,14528, 1824,18624, 1832,22720, 1840,26816, 1848,30912,\n   1856,2752, 1864,6848, 1872,10944, 1880,15040, 1888,19136, 1896,23232,\n   1904,27328, 1912,31424, 1920,3264, 1928,7360, 1936,11456, 1944,15552,\n   1952,19648, 1960,23744, 1968,27840, 1976,31936, 1984,3776, 1992,7872,\n   2000,11968, 2008,16064, 2016,20160, 2024,24256, 2032,28352, 2040,32448,\n   2056,4352, 2064,8448, 2072,12544, 2080,16640, 2088,20736, 2096,24832,\n   2104,28928, 2120,4864, 2128,8960, 2136,13056, 2144,17152, 2152,21248,\n   2160,25344, 2168,29440, 2184,5376, 2192,9472, 2200,13568, 2208,17664,\n   2216,21760, 2224,25856, 2232,29952, 2248,5888, 2256,9984, 2264,14080,\n   2272,18176, 2280,22272, 2288,26368, 2296,30464, 2312,6400, 2320,10496,\n   2328,14592, 2336,18688, 2344,22784, 2352,26880, 2360,30976, 2368,2816,\n   2376,6912, 2384,11008, 2392,15104, 2400,19200, 2408,23296, 2416,27392,\n   2424,31488, 2432,3328, 2440,7424, 2448,11520, 2456,15616, 2464,19712,\n   2472,23808, 2480,27904, 2488,32000, 2496,3840, 2504,7936, 2512,12032,\n   2520,16128, 2528,20224, 2536,24320, 2544,28416, 2552,32512, 2568,4416,\n   2576,8512, 2584,12608, 2592,16704, 2600,20800, 2608,24896, 2616,28992,\n   2632,4928, 2640,9024, 2648,13120, 2656,17216, 2664,21312, 2672,25408,\n   2680,29504, 2696,5440, 2704,9536, 2712,13632, 2720,17728, 2728,21824,\n   2736,25920, 2744,30016, 2760,5952, 2768,10048, 2776,14144, 2784,18240,\n   2792,22336, 2800,26432, 2808,30528, 2824,6464, 2832,10560, 2840,14656,\n   2848,18752, 2856,22848, 2864,26944, 2872,31040, 2888,6976, 2896,11072,\n   2904,15168, 2912,19264, 2920,23360, 2928,27456, 2936,31552, 2944,3392,\n   2952,7488, 2960,11584, 2968,15680, 2976,19776, 2984,23872, 2992,27968,\n   3000,32064, 3008,3904, 3016,8000, 3024,12096, 3032,16192, 3040,20288,\n   3048,24384, 3056,28480, 3064,32576, 3080,4480, 3088,8576, 3096,12672,\n   3104,16768, 3112,20864, 3120,24960, 3128,29056, 3144,4992, 3152,9088,\n   3160,13184, 3168,17280, 3176,21376, 3184,25472, 3192,29568, 3208,5504,\n   3216,9600, 3224,13696, 3232,17792, 3240,21888, 3248,25984, 3256,30080,\n   3272,6016, 3280,10112, 3288,14208, 3296,18304, 3304,22400, 3312,26496,\n   3320,30592, 3336,6528, 3344,10624, 3352,14720, 3360,18816, 3368,22912,\n   3376,27008, 3384,31104, 3400,7040, 3408,11136, 3416,15232, 3424,19328,\n   3432,23424, 3440,27520, 3448,31616, 3464,7552, 3472,11648, 3480,15744,\n   3488,19840, 3496,23936, 3504,28032, 3512,32128, 3520,3968, 3528,8064,\n   3536,12160, 3544,16256, 3552,20352, 3560,24448, 3568,28544, 3576,32640,\n   3592,4544, 3600,8640, 3608,12736, 3616,16832, 3624,20928, 3632,25024,\n   3640,29120, 3656,5056, 3664,9152, 3672,13248, 3680,17344, 3688,21440,\n   3696,25536, 3704,29632, 3720,5568, 3728,9664, 3736,13760, 3744,17856,\n   3752,21952, 3760,26048, 3768,30144, 3784,6080, 3792,10176, 3800,14272,\n   3808,18368, 3816,22464, 3824,26560, 3832,30656, 3848,6592, 3856,10688,\n   3864,14784, 3872,18880, 3880,22976, 3888,27072, 3896,31168, 3912,7104,\n   3920,11200, 3928,15296, 3936,19392, 3944,23488, 3952,27584, 3960,31680,\n   3976,7616, 3984,11712, 3992,15808, 4000,19904, 4008,24000, 4016,28096,\n   4024,32192, 4040,8128, 4048,12224, 4056,16320, 4064,20416, 4072,24512,\n   4080,28608, 4088,32704, 4112,8200, 4120,12296, 4128,16392, 4136,20488,\n   4144,24584, 4152,28680, 4168,4616, 4176,8712, 4184,12808, 4192,16904,\n   4200,21000, 4208,25096, 4216,29192, 4232,5128, 4240,9224, 4248,13320,\n   4256,17416, 4264,21512, 4272,25608, 4280,29704, 4296,5640, 4304,9736,\n   4312,13832, 4320,17928, 4328,22024, 4336,26120, 4344,30216, 4360,6152,\n   4368,10248, 4376,14344, 4384,18440, 4392,22536, 4400,26632, 4408,30728,\n   4424,6664, 4432,10760, 4440,14856, 4448,18952, 4456,23048, 4464,27144,\n   4472,31240, 4488,7176, 4496,11272, 4504,15368, 4512,19464, 4520,23560,\n   4528,27656, 4536,31752, 4552,7688, 4560,11784, 4568,15880, 4576,19976,\n   4584,24072, 4592,28168, 4600,32264, 4624,8264, 4632,12360, 4640,16456,\n   4648,20552, 4656,24648, 4664,28744, 4688,8776, 4696,12872, 4704,16968,\n   4712,21064, 4720,25160, 4728,29256, 4744,5192, 4752,9288, 4760,13384,\n   4768,17480, 4776,21576, 4784,25672, 4792,29768, 4808,5704, 4816,9800,\n   4824,13896, 4832,17992, 4840,22088, 4848,26184, 4856,30280, 4872,6216,\n   4880,10312, 4888,14408, 4896,18504, 4904,22600, 4912,26696, 4920,30792,\n   4936,6728, 4944,10824, 4952,14920, 4960,19016, 4968,23112, 4976,27208,\n   4984,31304, 5000,7240, 5008,11336, 5016,15432, 5024,19528, 5032,23624,\n   5040,27720, 5048,31816, 5064,7752, 5072,11848, 5080,15944, 5088,20040,\n   5096,24136, 5104,28232, 5112,32328, 5136,8328, 5144,12424, 5152,16520,\n   5160,20616, 5168,24712, 5176,28808, 5200,8840, 5208,12936, 5216,17032,\n   5224,21128, 5232,25224, 5240,29320, 5264,9352, 5272,13448, 5280,17544,\n   5288,21640, 5296,25736, 5304,29832, 5320,5768, 5328,9864, 5336,13960,\n   5344,18056, 5352,22152, 5360,26248, 5368,30344, 5384,6280, 5392,10376,\n   5400,14472, 5408,18568, 5416,22664, 5424,26760, 5432,30856, 5448,6792,\n   5456,10888, 5464,14984, 5472,19080, 5480,23176, 5488,27272, 5496,31368,\n   5512,7304, 5520,11400, 5528,15496, 5536,19592, 5544,23688, 5552,27784,\n   5560,31880, 5576,7816, 5584,11912, 5592,16008, 5600,20104, 5608,24200,\n   5616,28296, 5624,32392, 5648,8392, 5656,12488, 5664,16584, 5672,20680,\n   5680,24776, 5688,28872, 5712,8904, 5720,13000, 5728,17096, 5736,21192,\n   5744,25288, 5752,29384, 5776,9416, 5784,13512, 5792,17608, 5800,21704,\n   5808,25800, 5816,29896, 5840,9928, 5848,14024, 5856,18120, 5864,22216,\n   5872,26312, 5880,30408, 5896,6344, 5904,10440, 5912,14536, 5920,18632,\n   5928,22728, 5936,26824, 5944,30920, 5960,6856, 5968,10952, 5976,15048,\n   5984,19144, 5992,23240, 6000,27336, 6008,31432, 6024,7368, 6032,11464,\n   6040,15560, 6048,19656, 6056,23752, 6064,27848, 6072,31944, 6088,7880,\n   6096,11976, 6104,16072, 6112,20168, 6120,24264, 6128,28360, 6136,32456,\n   6160,8456, 6168,12552, 6176,16648, 6184,20744, 6192,24840, 6200,28936,\n   6224,8968, 6232,13064, 6240,17160, 6248,21256, 6256,25352, 6264,29448,\n   6288,9480, 6296,13576, 6304,17672, 6312,21768, 6320,25864, 6328,29960,\n   6352,9992, 6360,14088, 6368,18184, 6376,22280, 6384,26376, 6392,30472,\n   6416,10504, 6424,14600, 6432,18696, 6440,22792, 6448,26888, 6456,30984,\n   6472,6920, 6480,11016, 6488,15112, 6496,19208, 6504,23304, 6512,27400,\n   6520,31496, 6536,7432, 6544,11528, 6552,15624, 6560,19720, 6568,23816,\n   6576,27912, 6584,32008, 6600,7944, 6608,12040, 6616,16136, 6624,20232,\n   6632,24328, 6640,28424, 6648,32520, 6672,8520, 6680,12616, 6688,16712,\n   6696,20808, 6704,24904, 6712,29000, 6736,9032, 6744,13128, 6752,17224,\n   6760,21320, 6768,25416, 6776,29512, 6800,9544, 6808,13640, 6816,17736,\n   6824,21832, 6832,25928, 6840,30024, 6864,10056, 6872,14152, 6880,18248,\n   6888,22344, 6896,26440, 6904,30536, 6928,10568, 6936,14664, 6944,18760,\n   6952,22856, 6960,26952, 6968,31048, 6992,11080, 7000,15176, 7008,19272,\n   7016,23368, 7024,27464, 7032,31560, 7048,7496, 7056,11592, 7064,15688,\n   7072,19784, 7080,23880, 7088,27976, 7096,32072, 7112,8008, 7120,12104,\n   7128,16200, 7136,20296, 7144,24392, 7152,28488, 7160,32584, 7184,8584,\n   7192,12680, 7200,16776, 7208,20872, 7216,24968, 7224,29064, 7248,9096,\n   7256,13192, 7264,17288, 7272,21384, 7280,25480, 7288,29576, 7312,9608,\n   7320,13704, 7328,17800, 7336,21896, 7344,25992, 7352,30088, 7376,10120,\n   7384,14216, 7392,18312, 7400,22408, 7408,26504, 7416,30600, 7440,10632,\n   7448,14728, 7456,18824, 7464,22920, 7472,27016, 7480,31112, 7504,11144,\n   7512,15240, 7520,19336, 7528,23432, 7536,27528, 7544,31624, 7568,11656,\n   7576,15752, 7584,19848, 7592,23944, 7600,28040, 7608,32136, 7624,8072,\n   7632,12168, 7640,16264, 7648,20360, 7656,24456, 7664,28552, 7672,32648,\n   7696,8648, 7704,12744, 7712,16840, 7720,20936, 7728,25032, 7736,29128,\n   7760,9160, 7768,13256, 7776,17352, 7784,21448, 7792,25544, 7800,29640,\n   7824,9672, 7832,13768, 7840,17864, 7848,21960, 7856,26056, 7864,30152,\n   7888,10184, 7896,14280, 7904,18376, 7912,22472, 7920,26568, 7928,30664,\n   7952,10696, 7960,14792, 7968,18888, 7976,22984, 7984,27080, 7992,31176,\n   8016,11208, 8024,15304, 8032,19400, 8040,23496, 8048,27592, 8056,31688,\n   8080,11720, 8088,15816, 8096,19912, 8104,24008, 8112,28104, 8120,32200,\n   8144,12232, 8152,16328, 8160,20424, 8168,24520, 8176,28616, 8184,32712,\n   8216,12304, 8224,16400, 8232,20496, 8240,24592, 8248,28688, 8272,8720,\n   8280,12816, 8288,16912, 8296,21008, 8304,25104, 8312,29200, 8336,9232,\n   8344,13328, 8352,17424, 8360,21520, 8368,25616, 8376,29712, 8400,9744,\n   8408,13840, 8416,17936, 8424,22032, 8432,26128, 8440,30224, 8464,10256,\n   8472,14352, 8480,18448, 8488,22544, 8496,26640, 8504,30736, 8528,10768,\n   8536,14864, 8544,18960, 8552,23056, 8560,27152, 8568,31248, 8592,11280,\n   8600,15376, 8608,19472, 8616,23568, 8624,27664, 8632,31760, 8656,11792,\n   8664,15888, 8672,19984, 8680,24080, 8688,28176, 8696,32272, 8728,12368,\n   8736,16464, 8744,20560, 8752,24656, 8760,28752, 8792,12880, 8800,16976,\n   8808,21072, 8816,25168, 8824,29264, 8848,9296, 8856,13392, 8864,17488,\n   8872,21584, 8880,25680, 8888,29776, 8912,9808, 8920,13904, 8928,18000,\n   8936,22096, 8944,26192, 8952,30288, 8976,10320, 8984,14416, 8992,18512,\n   9000,22608, 9008,26704, 9016,30800, 9040,10832, 9048,14928, 9056,19024,\n   9064,23120, 9072,27216, 9080,31312, 9104,11344, 9112,15440, 9120,19536,\n   9128,23632, 9136,27728, 9144,31824, 9168,11856, 9176,15952, 9184,20048,\n   9192,24144, 9200,28240, 9208,32336, 9240,12432, 9248,16528, 9256,20624,\n   9264,24720, 9272,28816, 9304,12944, 9312,17040, 9320,21136, 9328,25232,\n   9336,29328, 9368,13456, 9376,17552, 9384,21648, 9392,25744, 9400,29840,\n   9424,9872, 9432,13968, 9440,18064, 9448,22160, 9456,26256, 9464,30352,\n   9488,10384, 9496,14480, 9504,18576, 9512,22672, 9520,26768, 9528,30864,\n   9552,10896, 9560,14992, 9568,19088, 9576,23184, 9584,27280, 9592,31376,\n   9616,11408, 9624,15504, 9632,19600, 9640,23696, 9648,27792, 9656,31888,\n   9680,11920, 9688,16016, 9696,20112, 9704,24208, 9712,28304, 9720,32400,\n   9752,12496, 9760,16592, 9768,20688, 9776,24784, 9784,28880, 9816,13008,\n   9824,17104, 9832,21200, 9840,25296, 9848,29392, 9880,13520, 9888,17616,\n   9896,21712, 9904,25808, 9912,29904, 9944,14032, 9952,18128, 9960,22224,\n   9968,26320, 9976,30416, 10000,10448, 10008,14544, 10016,18640, 10024,22736,\n   10032,26832, 10040,30928, 10064,10960, 10072,15056, 10080,19152,\n   10088,23248, 10096,27344, 10104,31440, 10128,11472, 10136,15568,\n   10144,19664, 10152,23760, 10160,27856, 10168,31952, 10192,11984,\n   10200,16080, 10208,20176, 10216,24272, 10224,28368, 10232,32464,\n   10264,12560, 10272,16656, 10280,20752, 10288,24848, 10296,28944,\n   10328,13072, 10336,17168, 10344,21264, 10352,25360, 10360,29456,\n   10392,13584, 10400,17680, 10408,21776, 10416,25872, 10424,29968,\n   10456,14096, 10464,18192, 10472,22288, 10480,26384, 10488,30480,\n   10520,14608, 10528,18704, 10536,22800, 10544,26896, 10552,30992,\n   10576,11024, 10584,15120, 10592,19216, 10600,23312, 10608,27408,\n   10616,31504, 10640,11536, 10648,15632, 10656,19728, 10664,23824,\n   10672,27920, 10680,32016, 10704,12048, 10712,16144, 10720,20240,\n   10728,24336, 10736,28432, 10744,32528, 10776,12624, 10784,16720,\n   10792,20816, 10800,24912, 10808,29008, 10840,13136, 10848,17232,\n   10856,21328, 10864,25424, 10872,29520, 10904,13648, 10912,17744,\n   10920,21840, 10928,25936, 10936,30032, 10968,14160, 10976,18256,\n   10984,22352, 10992,26448, 11000,30544, 11032,14672, 11040,18768,\n   11048,22864, 11056,26960, 11064,31056, 11096,15184, 11104,19280,\n   11112,23376, 11120,27472, 11128,31568, 11152,11600, 11160,15696,\n   11168,19792, 11176,23888, 11184,27984, 11192,32080, 11216,12112,\n   11224,16208, 11232,20304, 11240,24400, 11248,28496, 11256,32592,\n   11288,12688, 11296,16784, 11304,20880, 11312,24976, 11320,29072,\n   11352,13200, 11360,17296, 11368,21392, 11376,25488, 11384,29584,\n   11416,13712, 11424,17808, 11432,21904, 11440,26000, 11448,30096,\n   11480,14224, 11488,18320, 11496,22416, 11504,26512, 11512,30608,\n   11544,14736, 11552,18832, 11560,22928, 11568,27024, 11576,31120,\n   11608,15248, 11616,19344, 11624,23440, 11632,27536, 11640,31632,\n   11672,15760, 11680,19856, 11688,23952, 11696,28048, 11704,32144,\n   11728,12176, 11736,16272, 11744,20368, 11752,24464, 11760,28560,\n   11768,32656, 11800,12752, 11808,16848, 11816,20944, 11824,25040,\n   11832,29136, 11864,13264, 11872,17360, 11880,21456, 11888,25552,\n   11896,29648, 11928,13776, 11936,17872, 11944,21968, 11952,26064,\n   11960,30160, 11992,14288, 12000,18384, 12008,22480, 12016,26576,\n   12024,30672, 12056,14800, 12064,18896, 12072,22992, 12080,27088,\n   12088,31184, 12120,15312, 12128,19408, 12136,23504, 12144,27600,\n   12152,31696, 12184,15824, 12192,19920, 12200,24016, 12208,28112,\n   12216,32208, 12248,16336, 12256,20432, 12264,24528, 12272,28624,\n   12280,32720, 12320,16408, 12328,20504, 12336,24600, 12344,28696,\n   12376,12824, 12384,16920, 12392,21016, 12400,25112, 12408,29208,\n   12440,13336, 12448,17432, 12456,21528, 12464,25624, 12472,29720,\n   12504,13848, 12512,17944, 12520,22040, 12528,26136, 12536,30232,\n   12568,14360, 12576,18456, 12584,22552, 12592,26648, 12600,30744,\n   12632,14872, 12640,18968, 12648,23064, 12656,27160, 12664,31256,\n   12696,15384, 12704,19480, 12712,23576, 12720,27672, 12728,31768,\n   12760,15896, 12768,19992, 12776,24088, 12784,28184, 12792,32280,\n   12832,16472, 12840,20568, 12848,24664, 12856,28760, 12896,16984,\n   12904,21080, 12912,25176, 12920,29272, 12952,13400, 12960,17496,\n   12968,21592, 12976,25688, 12984,29784, 13016,13912, 13024,18008,\n   13032,22104, 13040,26200, 13048,30296, 13080,14424, 13088,18520,\n   13096,22616, 13104,26712, 13112,30808, 13144,14936, 13152,19032,\n   13160,23128, 13168,27224, 13176,31320, 13208,15448, 13216,19544,\n   13224,23640, 13232,27736, 13240,31832, 13272,15960, 13280,20056,\n   13288,24152, 13296,28248, 13304,32344, 13344,16536, 13352,20632,\n   13360,24728, 13368,28824, 13408,17048, 13416,21144, 13424,25240,\n   13432,29336, 13472,17560, 13480,21656, 13488,25752, 13496,29848,\n   13528,13976, 13536,18072, 13544,22168, 13552,26264, 13560,30360,\n   13592,14488, 13600,18584, 13608,22680, 13616,26776, 13624,30872,\n   13656,15000, 13664,19096, 13672,23192, 13680,27288, 13688,31384,\n   13720,15512, 13728,19608, 13736,23704, 13744,27800, 13752,31896,\n   13784,16024, 13792,20120, 13800,24216, 13808,28312, 13816,32408,\n   13856,16600, 13864,20696, 13872,24792, 13880,28888, 13920,17112,\n   13928,21208, 13936,25304, 13944,29400, 13984,17624, 13992,21720,\n   14000,25816, 14008,29912, 14048,18136, 14056,22232, 14064,26328,\n   14072,30424, 14104,14552, 14112,18648, 14120,22744, 14128,26840,\n   14136,30936, 14168,15064, 14176,19160, 14184,23256, 14192,27352,\n   14200,31448, 14232,15576, 14240,19672, 14248,23768, 14256,27864,\n   14264,31960, 14296,16088, 14304,20184, 14312,24280, 14320,28376,\n   14328,32472, 14368,16664, 14376,20760, 14384,24856, 14392,28952,\n   14432,17176, 14440,21272, 14448,25368, 14456,29464, 14496,17688,\n   14504,21784, 14512,25880, 14520,29976, 14560,18200, 14568,22296,\n   14576,26392, 14584,30488, 14624,18712, 14632,22808, 14640,26904,\n   14648,31000, 14680,15128, 14688,19224, 14696,23320, 14704,27416,\n   14712,31512, 14744,15640, 14752,19736, 14760,23832, 14768,27928,\n   14776,32024, 14808,16152, 14816,20248, 14824,24344, 14832,28440,\n   14840,32536, 14880,16728, 14888,20824, 14896,24920, 14904,29016,\n   14944,17240, 14952,21336, 14960,25432, 14968,29528, 15008,17752,\n   15016,21848, 15024,25944, 15032,30040, 15072,18264, 15080,22360,\n   15088,26456, 15096,30552, 15136,18776, 15144,22872, 15152,26968,\n   15160,31064, 15200,19288, 15208,23384, 15216,27480, 15224,31576,\n   15256,15704, 15264,19800, 15272,23896, 15280,27992, 15288,32088,\n   15320,16216, 15328,20312, 15336,24408, 15344,28504, 15352,32600,\n   15392,16792, 15400,20888, 15408,24984, 15416,29080, 15456,17304,\n   15464,21400, 15472,25496, 15480,29592, 15520,17816, 15528,21912,\n   15536,26008, 15544,30104, 15584,18328, 15592,22424, 15600,26520,\n   15608,30616, 15648,18840, 15656,22936, 15664,27032, 15672,31128,\n   15712,19352, 15720,23448, 15728,27544, 15736,31640, 15776,19864,\n   15784,23960, 15792,28056, 15800,32152, 15832,16280, 15840,20376,\n   15848,24472, 15856,28568, 15864,32664, 15904,16856, 15912,20952,\n   15920,25048, 15928,29144, 15968,17368, 15976,21464, 15984,25560,\n   15992,29656, 16032,17880, 16040,21976, 16048,26072, 16056,30168,\n   16096,18392, 16104,22488, 16112,26584, 16120,30680, 16160,18904,\n   16168,23000, 16176,27096, 16184,31192, 16224,19416, 16232,23512,\n   16240,27608, 16248,31704, 16288,19928, 16296,24024, 16304,28120,\n   16312,32216, 16352,20440, 16360,24536, 16368,28632, 16376,32728,\n   16424,20512, 16432,24608, 16440,28704, 16480,16928, 16488,21024,\n   16496,25120, 16504,29216, 16544,17440, 16552,21536, 16560,25632,\n   16568,29728, 16608,17952, 16616,22048, 16624,26144, 16632,30240,\n   16672,18464, 16680,22560, 16688,26656, 16696,30752, 16736,18976,\n   16744,23072, 16752,27168, 16760,31264, 16800,19488, 16808,23584,\n   16816,27680, 16824,31776, 16864,20000, 16872,24096, 16880,28192,\n   16888,32288, 16936,20576, 16944,24672, 16952,28768, 17000,21088,\n   17008,25184, 17016,29280, 17056,17504, 17064,21600, 17072,25696,\n   17080,29792, 17120,18016, 17128,22112, 17136,26208, 17144,30304,\n   17184,18528, 17192,22624, 17200,26720, 17208,30816, 17248,19040,\n   17256,23136, 17264,27232, 17272,31328, 17312,19552, 17320,23648,\n   17328,27744, 17336,31840, 17376,20064, 17384,24160, 17392,28256,\n   17400,32352, 17448,20640, 17456,24736, 17464,28832, 17512,21152,\n   17520,25248, 17528,29344, 17576,21664, 17584,25760, 17592,29856,\n   17632,18080, 17640,22176, 17648,26272, 17656,30368, 17696,18592,\n   17704,22688, 17712,26784, 17720,30880, 17760,19104, 17768,23200,\n   17776,27296, 17784,31392, 17824,19616, 17832,23712, 17840,27808,\n   17848,31904, 17888,20128, 17896,24224, 17904,28320, 17912,32416,\n   17960,20704, 17968,24800, 17976,28896, 18024,21216, 18032,25312,\n   18040,29408, 18088,21728, 18096,25824, 18104,29920, 18152,22240,\n   18160,26336, 18168,30432, 18208,18656, 18216,22752, 18224,26848,\n   18232,30944, 18272,19168, 18280,23264, 18288,27360, 18296,31456,\n   18336,19680, 18344,23776, 18352,27872, 18360,31968, 18400,20192,\n   18408,24288, 18416,28384, 18424,32480, 18472,20768, 18480,24864,\n   18488,28960, 18536,21280, 18544,25376, 18552,29472, 18600,21792,\n   18608,25888, 18616,29984, 18664,22304, 18672,26400, 18680,30496,\n   18728,22816, 18736,26912, 18744,31008, 18784,19232, 18792,23328,\n   18800,27424, 18808,31520, 18848,19744, 18856,23840, 18864,27936,\n   18872,32032, 18912,20256, 18920,24352, 18928,28448, 18936,32544,\n   18984,20832, 18992,24928, 19000,29024, 19048,21344, 19056,25440,\n   19064,29536, 19112,21856, 19120,25952, 19128,30048, 19176,22368,\n   19184,26464, 19192,30560, 19240,22880, 19248,26976, 19256,31072,\n   19304,23392, 19312,27488, 19320,31584, 19360,19808, 19368,23904,\n   19376,28000, 19384,32096, 19424,20320, 19432,24416, 19440,28512,\n   19448,32608, 19496,20896, 19504,24992, 19512,29088, 19560,21408,\n   19568,25504, 19576,29600, 19624,21920, 19632,26016, 19640,30112,\n   19688,22432, 19696,26528, 19704,30624, 19752,22944, 19760,27040,\n   19768,31136, 19816,23456, 19824,27552, 19832,31648, 19880,23968,\n   19888,28064, 19896,32160, 19936,20384, 19944,24480, 19952,28576,\n   19960,32672, 20008,20960, 20016,25056, 20024,29152, 20072,21472,\n   20080,25568, 20088,29664, 20136,21984, 20144,26080, 20152,30176,\n   20200,22496, 20208,26592, 20216,30688, 20264,23008, 20272,27104,\n   20280,31200, 20328,23520, 20336,27616, 20344,31712, 20392,24032,\n   20400,28128, 20408,32224, 20456,24544, 20464,28640, 20472,32736,\n   20528,24616, 20536,28712, 20584,21032, 20592,25128, 20600,29224,\n   20648,21544, 20656,25640, 20664,29736, 20712,22056, 20720,26152,\n   20728,30248, 20776,22568, 20784,26664, 20792,30760, 20840,23080,\n   20848,27176, 20856,31272, 20904,23592, 20912,27688, 20920,31784,\n   20968,24104, 20976,28200, 20984,32296, 21040,24680, 21048,28776,\n   21104,25192, 21112,29288, 21160,21608, 21168,25704, 21176,29800,\n   21224,22120, 21232,26216, 21240,30312, 21288,22632, 21296,26728,\n   21304,30824, 21352,23144, 21360,27240, 21368,31336, 21416,23656,\n   21424,27752, 21432,31848, 21480,24168, 21488,28264, 21496,32360,\n   21552,24744, 21560,28840, 21616,25256, 21624,29352, 21680,25768,\n   21688,29864, 21736,22184, 21744,26280, 21752,30376, 21800,22696,\n   21808,26792, 21816,30888, 21864,23208, 21872,27304, 21880,31400,\n   21928,23720, 21936,27816, 21944,31912, 21992,24232, 22000,28328,\n   22008,32424, 22064,24808, 22072,28904, 22128,25320, 22136,29416,\n   22192,25832, 22200,29928, 22256,26344, 22264,30440, 22312,22760,\n   22320,26856, 22328,30952, 22376,23272, 22384,27368, 22392,31464,\n   22440,23784, 22448,27880, 22456,31976, 22504,24296, 22512,28392,\n   22520,32488, 22576,24872, 22584,28968, 22640,25384, 22648,29480,\n   22704,25896, 22712,29992, 22768,26408, 22776,30504, 22832,26920,\n   22840,31016, 22888,23336, 22896,27432, 22904,31528, 22952,23848,\n   22960,27944, 22968,32040, 23016,24360, 23024,28456, 23032,32552,\n   23088,24936, 23096,29032, 23152,25448, 23160,29544, 23216,25960,\n   23224,30056, 23280,26472, 23288,30568, 23344,26984, 23352,31080,\n   23408,27496, 23416,31592, 23464,23912, 23472,28008, 23480,32104,\n   23528,24424, 23536,28520, 23544,32616, 23600,25000, 23608,29096,\n   23664,25512, 23672,29608, 23728,26024, 23736,30120, 23792,26536,\n   23800,30632, 23856,27048, 23864,31144, 23920,27560, 23928,31656,\n   23984,28072, 23992,32168, 24040,24488, 24048,28584, 24056,32680,\n   24112,25064, 24120,29160, 24176,25576, 24184,29672, 24240,26088,\n   24248,30184, 24304,26600, 24312,30696, 24368,27112, 24376,31208,\n   24432,27624, 24440,31720, 24496,28136, 24504,32232, 24560,28648,\n   24568,32744, 24632,28720, 24688,25136, 24696,29232, 24752,25648,\n   24760,29744, 24816,26160, 24824,30256, 24880,26672, 24888,30768,\n   24944,27184, 24952,31280, 25008,27696, 25016,31792, 25072,28208,\n   25080,32304, 25144,28784, 25208,29296, 25264,25712, 25272,29808,\n   25328,26224, 25336,30320, 25392,26736, 25400,30832, 25456,27248,\n   25464,31344, 25520,27760, 25528,31856, 25584,28272, 25592,32368,\n   25656,28848, 25720,29360, 25784,29872, 25840,26288, 25848,30384,\n   25904,26800, 25912,30896, 25968,27312, 25976,31408, 26032,27824,\n   26040,31920, 26096,28336, 26104,32432, 26168,28912, 26232,29424,\n   26296,29936, 26360,30448, 26416,26864, 26424,30960, 26480,27376,\n   26488,31472, 26544,27888, 26552,31984, 26608,28400, 26616,32496,\n   26680,28976, 26744,29488, 26808,30000, 26872,30512, 26936,31024,\n   26992,27440, 27000,31536, 27056,27952, 27064,32048, 27120,28464,\n   27128,32560, 27192,29040, 27256,29552, 27320,30064, 27384,30576,\n   27448,31088, 27512,31600, 27568,28016, 27576,32112, 27632,28528,\n   27640,32624, 27704,29104, 27768,29616, 27832,30128, 27896,30640,\n   27960,31152, 28024,31664, 28088,32176, 28144,28592, 28152,32688,\n   28216,29168, 28280,29680, 28344,30192, 28408,30704, 28472,31216,\n   28536,31728, 28600,32240, 28664,32752, 28792,29240, 28856,29752,\n   28920,30264, 28984,30776, 29048,31288, 29112,31800, 29176,32312,\n   29368,29816, 29432,30328, 29496,30840, 29560,31352, 29624,31864,\n   29688,32376, 29944,30392, 30008,30904, 30072,31416, 30136,31928,\n   30200,32440, 30520,30968, 30584,31480, 30648,31992, 30712,32504,\n   31096,31544, 31160,32056, 31224,32568, 31672,32120, 31736,32632,\n   32248,32696\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_16)\n\nconst uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH] =\n{\n   /* radix 4, size 12 */\n   8,64, 16,32, 24,96, 40,80, 56,112, 88,104\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_32)\nconst uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH] =\n{\n   /* 4x2, size 24 */\n   8,128, 16,64, 24,192, 40,160, 48,96, 56,224, 72,144,\n   88,208, 104,176, 120,240, 152,200, 184,232\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_64)\nconst uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH] =\n{\n   /* radix 4, size 56 */\n   8,256, 16,128, 24,384, 32,64, 40,320, 48,192, 56,448, 72,288, 80,160, 88,416, 104,352,\n   112,224, 120,480, 136,272, 152,400, 168,336, 176,208, 184,464, 200,304, 216,432,\n   232,368, 248,496, 280,392, 296,328, 312,456, 344,424, 376,488, 440,472\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_128)\nconst uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH] =\n{\n   /* 4x2, size 112 */\n   8,512, 16,256, 24,768, 32,128, 40,640, 48,384, 56,896, 72,576, 80,320, 88,832, 96,192,\n   104,704, 112,448, 120,960, 136,544, 144,288, 152,800, 168,672, 176,416, 184,928, 200,608,\n   208,352, 216,864, 232,736, 240,480, 248,992, 264,528, 280,784, 296,656, 304,400, 312,912,\n   328,592, 344,848, 360,720, 368,464, 376,976, 392,560, 408,816, 424,688, 440,944, 456,624,\n   472,880, 488,752, 504,1008, 536,776, 552,648, 568,904, 600,840, 616,712, 632,968,\n   664,808, 696,936, 728,872, 760,1000, 824,920, 888,984\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_256)\nconst uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH] =\n{\n   /* radix 4, size 240 */\n   8,1024, 16,512, 24,1536, 32,256, 40,1280, 48,768, 56,1792, 64,128, 72,1152, 80,640,\n   88,1664, 96,384, 104,1408, 112,896, 120,1920, 136,1088, 144,576, 152,1600, 160,320,\n   168,1344, 176,832, 184,1856, 200,1216, 208,704, 216,1728, 224,448, 232,1472, 240,960,\n   248,1984, 264,1056, 272,544, 280,1568, 296,1312, 304,800, 312,1824, 328,1184, 336,672,\n   344,1696, 352,416, 360,1440, 368,928, 376,1952, 392,1120, 400,608, 408,1632, 424,1376,\n   432,864, 440,1888, 456,1248, 464,736, 472,1760, 488,1504, 496,992, 504,2016, 520,1040,\n   536,1552, 552,1296, 560,784, 568,1808, 584,1168, 592,656, 600,1680, 616,1424, 624,912,\n   632,1936, 648,1104, 664,1616, 680,1360, 688,848, 696,1872, 712,1232, 728,1744, 744,1488,\n   752,976, 760,2000, 776,1072, 792,1584, 808,1328, 824,1840, 840,1200, 856,1712, 872,1456,\n   880,944, 888,1968, 904,1136, 920,1648, 936,1392, 952,1904, 968,1264, 984,1776, 1000,1520,\n   1016,2032, 1048,1544, 1064,1288, 1080,1800, 1096,1160, 1112,1672, 1128,1416, 1144,1928,\n   1176,1608, 1192,1352, 1208,1864, 1240,1736, 1256,1480, 1272,1992, 1304,1576, 1336,1832,\n   1368,1704, 1384,1448, 1400,1960, 1432,1640, 1464,1896, 1496,1768, 1528,2024, 1592,1816,\n   1624,1688, 1656,1944, 1720,1880, 1784,2008, 1912,1976\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_512)\nconst uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH] =\n{\n   /* 4x2, size 480 */\n   8,2048, 16,1024, 24,3072, 32,512, 40,2560, 48,1536, 56,3584, 64,256, 72,2304, 80,1280,\n   88,3328, 96,768, 104,2816, 112,1792, 120,3840, 136,2176, 144,1152, 152,3200, 160,640,\n   168,2688, 176,1664, 184,3712, 192,384, 200,2432, 208,1408, 216,3456, 224,896, 232,2944,\n   240,1920, 248,3968, 264,2112, 272,1088, 280,3136, 288,576, 296,2624, 304,1600, 312,3648,\n   328,2368, 336,1344, 344,3392, 352,832, 360,2880, 368,1856, 376,3904, 392,2240, 400,1216,\n   408,3264, 416,704, 424,2752, 432,1728, 440,3776, 456,2496, 464,1472, 472,3520, 480,960,\n   488,3008, 496,1984, 504,4032, 520,2080, 528,1056, 536,3104, 552,2592, 560,1568, 568,3616,\n   584,2336, 592,1312, 600,3360, 608,800, 616,2848, 624,1824, 632,3872, 648,2208, 656,1184,\n   664,3232, 680,2720, 688,1696, 696,3744, 712,2464, 720,1440, 728,3488, 736,928, 744,2976,\n   752,1952, 760,4000, 776,2144, 784,1120, 792,3168, 808,2656, 816,1632, 824,3680, 840,2400,\n   848,1376, 856,3424, 872,2912, 880,1888, 888,3936, 904,2272, 912,1248, 920,3296, 936,2784,\n   944,1760, 952,3808, 968,2528, 976,1504, 984,3552, 1000,3040, 1008,2016, 1016,4064,\n   1032,2064, 1048,3088, 1064,2576, 1072,1552, 1080,3600, 1096,2320, 1104,1296, 1112,3344,\n   1128,2832, 1136,1808, 1144,3856, 1160,2192, 1176,3216, 1192,2704, 1200,1680, 1208,3728,\n   1224,2448, 1232,1424, 1240,3472, 1256,2960, 1264,1936, 1272,3984, 1288,2128, 1304,3152,\n   1320,2640, 1328,1616, 1336,3664, 1352,2384, 1368,3408, 1384,2896, 1392,1872, 1400,3920,\n   1416,2256, 1432,3280, 1448,2768, 1456,1744, 1464,3792, 1480,2512, 1496,3536, 1512,3024,\n   1520,2000, 1528,4048, 1544,2096, 1560,3120, 1576,2608, 1592,3632, 1608,2352, 1624,3376,\n   1640,2864, 1648,1840, 1656,3888, 1672,2224, 1688,3248, 1704,2736, 1720,3760, 1736,2480,\n   1752,3504, 1768,2992, 1776,1968, 1784,4016, 1800,2160, 1816,3184, 1832,2672, 1848,3696,\n   1864,2416, 1880,3440, 1896,2928, 1912,3952, 1928,2288, 1944,3312, 1960,2800, 1976,3824,\n   1992,2544, 2008,3568, 2024,3056, 2040,4080, 2072,3080, 2088,2568, 2104,3592, 2120,2312,\n   2136,3336, 2152,2824, 2168,3848, 2200,3208, 2216,2696, 2232,3720, 2248,2440, 2264,3464,\n   2280,2952, 2296,3976, 2328,3144, 2344,2632, 2360,3656, 2392,3400, 2408,2888, 2424,3912,\n   2456,3272, 2472,2760, 2488,3784, 2520,3528, 2536,3016, 2552,4040, 2584,3112, 2616,3624,\n   2648,3368, 2664,2856, 2680,3880, 2712,3240, 2744,3752, 2776,3496, 2792,2984, 2808,4008,\n   2840,3176, 2872,3688, 2904,3432, 2936,3944, 2968,3304, 3000,3816, 3032,3560, 3064,4072,\n   3128,3608, 3160,3352, 3192,3864, 3256,3736, 3288,3480, 3320,3992, 3384,3672, 3448,3928,\n   3512,3800, 3576,4056, 3704,3896, 3832,4024\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_1024)\nconst uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH] =\n{\n    /* radix 4, size 992 */\n    8,4096, 16,2048, 24,6144, 32,1024, 40,5120, 48,3072, 56,7168, 64,512, 72,4608,\n    80,2560, 88,6656, 96,1536, 104,5632, 112,3584, 120,7680, 128,256, 136,4352,\n    144,2304, 152,6400, 160,1280, 168,5376, 176,3328, 184,7424, 192,768, 200,4864,\n    208,2816, 216,6912, 224,1792, 232,5888, 240,3840, 248,7936, 264,4224, 272,2176,\n    280,6272, 288,1152, 296,5248, 304,3200, 312,7296, 320,640, 328,4736, 336,2688,\n    344,6784, 352,1664, 360,5760, 368,3712, 376,7808, 392,4480, 400,2432, 408,6528,\n    416,1408, 424,5504, 432,3456, 440,7552, 448,896, 456,4992, 464,2944, 472,7040,\n    480,1920, 488,6016, 496,3968, 504,8064, 520,4160, 528,2112, 536,6208, 544,1088,\n    552,5184, 560,3136, 568,7232, 584,4672, 592,2624, 600,6720, 608,1600, 616,5696,\n    624,3648, 632,7744, 648,4416, 656,2368, 664,6464, 672,1344, 680,5440, 688,3392,\n    696,7488, 704,832, 712,4928, 720,2880, 728,6976, 736,1856, 744,5952, 752,3904,\n    760,8000, 776,4288, 784,2240, 792,6336, 800,1216, 808,5312, 816,3264, 824,7360,\n    840,4800, 848,2752, 856,6848, 864,1728, 872,5824, 880,3776, 888,7872, 904,4544,\n    912,2496, 920,6592, 928,1472, 936,5568, 944,3520, 952,7616, 968,5056, 976,3008,\n    984,7104, 992,1984, 1000,6080, 1008,4032, 1016,8128, 1032,4128, 1040,2080,\n    1048,6176, 1064,5152, 1072,3104, 1080,7200, 1096,4640, 1104,2592, 1112,6688,\n    1120,1568, 1128,5664, 1136,3616, 1144,7712, 1160,4384, 1168,2336, 1176,6432,\n    1184,1312, 1192,5408, 1200,3360, 1208,7456, 1224,4896, 1232,2848, 1240,6944,\n    1248,1824, 1256,5920, 1264,3872, 1272,7968, 1288,4256, 1296,2208, 1304,6304,\n    1320,5280, 1328,3232, 1336,7328, 1352,4768, 1360,2720, 1368,6816, 1376,1696,\n    1384,5792, 1392,3744, 1400,7840, 1416,4512, 1424,2464, 1432,6560, 1448,5536,\n    1456,3488, 1464,7584, 1480,5024, 1488,2976, 1496,7072, 1504,1952, 1512,6048,\n    1520,4000, 1528,8096, 1544,4192, 1552,2144, 1560,6240, 1576,5216, 1584,3168,\n    1592,7264, 1608,4704, 1616,2656, 1624,6752, 1640,5728, 1648,3680, 1656,7776,\n    1672,4448, 1680,2400, 1688,6496, 1704,5472, 1712,3424, 1720,7520, 1736,4960,\n    1744,2912, 1752,7008, 1760,1888, 1768,5984, 1776,3936, 1784,8032, 1800,4320,\n    1808,2272, 1816,6368, 1832,5344, 1840,3296, 1848,7392, 1864,4832, 1872,2784,\n    1880,6880, 1896,5856, 1904,3808, 1912,7904, 1928,4576, 1936,2528, 1944,6624,\n    1960,5600, 1968,3552, 1976,7648, 1992,5088, 2000,3040, 2008,7136, 2024,6112,\n    2032,4064, 2040,8160, 2056,4112, 2072,6160, 2088,5136, 2096,3088, 2104,7184,\n    2120,4624, 2128,2576, 2136,6672, 2152,5648, 2160,3600, 2168,7696, 2184,4368,\n    2192,2320, 2200,6416, 2216,5392, 2224,3344, 2232,7440, 2248,4880, 2256,2832,\n    2264,6928, 2280,5904, 2288,3856, 2296,7952, 2312,4240, 2328,6288, 2344,5264,\n    2352,3216, 2360,7312, 2376,4752, 2384,2704, 2392,6800, 2408,5776, 2416,3728,\n    2424,7824, 2440,4496, 2456,6544, 2472,5520, 2480,3472, 2488,7568, 2504,5008,\n    2512,2960, 2520,7056, 2536,6032, 2544,3984, 2552,8080, 2568,4176, 2584,6224,\n    2600,5200, 2608,3152, 2616,7248, 2632,4688, 2648,6736, 2664,5712, 2672,3664,\n    2680,7760, 2696,4432, 2712,6480, 2728,5456, 2736,3408, 2744,7504, 2760,4944,\n    2768,2896, 2776,6992, 2792,5968, 2800,3920, 2808,8016, 2824,4304, 2840,6352,\n    2856,5328, 2864,3280, 2872,7376, 2888,4816, 2904,6864, 2920,5840, 2928,3792,\n    2936,7888, 2952,4560, 2968,6608, 2984,5584, 2992,3536, 3000,7632, 3016,5072,\n    3032,7120, 3048,6096, 3056,4048, 3064,8144, 3080,4144, 3096,6192, 3112,5168,\n    3128,7216, 3144,4656, 3160,6704, 3176,5680, 3184,3632, 3192,7728, 3208,4400,\n    3224,6448, 3240,5424, 3248,3376, 3256,7472, 3272,4912, 3288,6960, 3304,5936,\n    3312,3888, 3320,7984, 3336,4272, 3352,6320, 3368,5296, 3384,7344, 3400,4784,\n    3416,6832, 3432,5808, 3440,3760, 3448,7856, 3464,4528, 3480,6576, 3496,5552,\n    3512,7600, 3528,5040, 3544,7088, 3560,6064, 3568,4016, 3576,8112, 3592,4208,\n    3608,6256, 3624,5232, 3640,7280, 3656,4720, 3672,6768, 3688,5744, 3704,7792,\n    3720,4464, 3736,6512, 3752,5488, 3768,7536, 3784,4976, 3800,7024, 3816,6000,\n    3824,3952, 3832,8048, 3848,4336, 3864,6384, 3880,5360, 3896,7408, 3912,4848,\n    3928,6896, 3944,5872, 3960,7920, 3976,4592, 3992,6640, 4008,5616, 4024,7664,\n    4040,5104, 4056,7152, 4072,6128, 4088,8176, 4120,6152, 4136,5128, 4152,7176,\n    4168,4616, 4184,6664, 4200,5640, 4216,7688, 4232,4360, 4248,6408, 4264,5384,\n    4280,7432, 4296,4872, 4312,6920, 4328,5896, 4344,7944, 4376,6280, 4392,5256,\n    4408,7304, 4424,4744, 4440,6792, 4456,5768, 4472,7816, 4504,6536, 4520,5512,\n    4536,7560, 4552,5000, 4568,7048, 4584,6024, 4600,8072, 4632,6216, 4648,5192,\n    4664,7240, 4696,6728, 4712,5704, 4728,7752, 4760,6472, 4776,5448, 4792,7496,\n    4808,4936, 4824,6984, 4840,5960, 4856,8008, 4888,6344, 4904,5320, 4920,7368,\n    4952,6856, 4968,5832, 4984,7880, 5016,6600, 5032,5576, 5048,7624, 5080,7112,\n    5096,6088, 5112,8136, 5144,6184, 5176,7208, 5208,6696, 5224,5672, 5240,7720,\n    5272,6440, 5288,5416, 5304,7464, 5336,6952, 5352,5928, 5368,7976, 5400,6312,\n    5432,7336, 5464,6824, 5480,5800, 5496,7848, 5528,6568, 5560,7592, 5592,7080,\n    5608,6056, 5624,8104, 5656,6248, 5688,7272, 5720,6760, 5752,7784, 5784,6504,\n    5816,7528, 5848,7016, 5864,5992, 5880,8040, 5912,6376, 5944,7400, 5976,6888,\n    6008,7912, 6040,6632, 6072,7656, 6104,7144, 6136,8168, 6200,7192, 6232,6680,\n    6264,7704, 6296,6424, 6328,7448, 6360,6936, 6392,7960, 6456,7320, 6488,6808,\n    6520,7832, 6584,7576, 6616,7064, 6648,8088, 6712,7256, 6776,7768, 6840,7512,\n    6872,7000, 6904,8024, 6968,7384, 7032,7896, 7096,7640, 7160,8152, 7288,7736,\n    7352,7480, 7416,7992, 7544,7864, 7672,8120, 7928,8056\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_2048)\nconst uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH] =\n{\n    /* 4x2, size 1984 */\n    8,8192, 16,4096, 24,12288, 32,2048, 40,10240, 48,6144, 56,14336, 64,1024,\n    72,9216, 80,5120, 88,13312, 96,3072, 104,11264, 112,7168, 120,15360, 128,512,\n    136,8704, 144,4608, 152,12800, 160,2560, 168,10752, 176,6656, 184,14848,\n    192,1536, 200,9728, 208,5632, 216,13824, 224,3584, 232,11776, 240,7680,\n    248,15872, 264,8448, 272,4352, 280,12544, 288,2304, 296,10496, 304,6400,\n    312,14592, 320,1280, 328,9472, 336,5376, 344,13568, 352,3328, 360,11520,\n    368,7424, 376,15616, 384,768, 392,8960, 400,4864, 408,13056, 416,2816,\n    424,11008, 432,6912, 440,15104, 448,1792, 456,9984, 464,5888, 472,14080,\n    480,3840, 488,12032, 496,7936, 504,16128, 520,8320, 528,4224, 536,12416,\n    544,2176, 552,10368, 560,6272, 568,14464, 576,1152, 584,9344, 592,5248,\n    600,13440, 608,3200, 616,11392, 624,7296, 632,15488, 648,8832, 656,4736,\n    664,12928, 672,2688, 680,10880, 688,6784, 696,14976, 704,1664, 712,9856,\n    720,5760, 728,13952, 736,3712, 744,11904, 752,7808, 760,16000, 776,8576,\n    784,4480, 792,12672, 800,2432, 808,10624, 816,6528, 824,14720, 832,1408,\n    840,9600, 848,5504, 856,13696, 864,3456, 872,11648, 880,7552, 888,15744,\n    904,9088, 912,4992, 920,13184, 928,2944, 936,11136, 944,7040, 952,15232,\n    960,1920, 968,10112, 976,6016, 984,14208, 992,3968, 1000,12160, 1008,8064,\n    1016,16256, 1032,8256, 1040,4160, 1048,12352, 1056,2112, 1064,10304, 1072,6208,\n    1080,14400, 1096,9280, 1104,5184, 1112,13376, 1120,3136, 1128,11328, 1136,7232,\n    1144,15424, 1160,8768, 1168,4672, 1176,12864, 1184,2624, 1192,10816, 1200,6720,\n    1208,14912, 1216,1600, 1224,9792, 1232,5696, 1240,13888, 1248,3648, 1256,11840,\n    1264,7744, 1272,15936, 1288,8512, 1296,4416, 1304,12608, 1312,2368, 1320,10560,\n    1328,6464, 1336,14656, 1352,9536, 1360,5440, 1368,13632, 1376,3392, 1384,11584,\n    1392,7488, 1400,15680, 1416,9024, 1424,4928, 1432,13120, 1440,2880, 1448,11072,\n    1456,6976, 1464,15168, 1472,1856, 1480,10048, 1488,5952, 1496,14144, 1504,3904,\n    1512,12096, 1520,8000, 1528,16192, 1544,8384, 1552,4288, 1560,12480, 1568,2240,\n    1576,10432, 1584,6336, 1592,14528, 1608,9408, 1616,5312, 1624,13504, 1632,3264,\n    1640,11456, 1648,7360, 1656,15552, 1672,8896, 1680,4800, 1688,12992, 1696,2752,\n    1704,10944, 1712,6848, 1720,15040, 1736,9920, 1744,5824, 1752,14016, 1760,3776,\n    1768,11968, 1776,7872, 1784,16064, 1800,8640, 1808,4544, 1816,12736, 1824,2496,\n    1832,10688, 1840,6592, 1848,14784, 1864,9664, 1872,5568, 1880,13760, 1888,3520,\n    1896,11712, 1904,7616, 1912,15808, 1928,9152, 1936,5056, 1944,13248, 1952,3008,\n    1960,11200, 1968,7104, 1976,15296, 1992,10176, 2000,6080, 2008,14272, 2016,4032,\n    2024,12224, 2032,8128, 2040,16320, 2056,8224, 2064,4128, 2072,12320, 2088,10272,\n    2096,6176, 2104,14368, 2120,9248, 2128,5152, 2136,13344, 2144,3104, 2152,11296,\n    2160,7200, 2168,15392, 2184,8736, 2192,4640, 2200,12832, 2208,2592, 2216,10784,\n    2224,6688, 2232,14880, 2248,9760, 2256,5664, 2264,13856, 2272,3616, 2280,11808,\n    2288,7712, 2296,15904, 2312,8480, 2320,4384, 2328,12576, 2344,10528, 2352,6432,\n    2360,14624, 2376,9504, 2384,5408, 2392,13600, 2400,3360, 2408,11552, 2416,7456,\n    2424,15648, 2440,8992, 2448,4896, 2456,13088, 2464,2848, 2472,11040, 2480,6944,\n    2488,15136, 2504,10016, 2512,5920, 2520,14112, 2528,3872, 2536,12064, 2544,7968,\n    2552,16160, 2568,8352, 2576,4256, 2584,12448, 2600,10400, 2608,6304, 2616,14496,\n    2632,9376, 2640,5280, 2648,13472, 2656,3232, 2664,11424, 2672,7328, 2680,15520,\n    2696,8864, 2704,4768, 2712,12960, 2728,10912, 2736,6816, 2744,15008, 2760,9888,\n    2768,5792, 2776,13984, 2784,3744, 2792,11936, 2800,7840, 2808,16032, 2824,8608,\n    2832,4512, 2840,12704, 2856,10656, 2864,6560, 2872,14752, 2888,9632, 2896,5536,\n    2904,13728, 2912,3488, 2920,11680, 2928,7584, 2936,15776, 2952,9120, 2960,5024,\n    2968,13216, 2984,11168, 2992,7072, 3000,15264, 3016,10144, 3024,6048,\n    3032,14240, 3040,4000, 3048,12192, 3056,8096, 3064,16288, 3080,8288, 3088,4192,\n    3096,12384, 3112,10336, 3120,6240, 3128,14432, 3144,9312, 3152,5216, 3160,13408,\n    3176,11360, 3184,7264, 3192,15456, 3208,8800, 3216,4704, 3224,12896, 3240,10848,\n    3248,6752, 3256,14944, 3272,9824, 3280,5728, 3288,13920, 3296,3680, 3304,11872,\n    3312,7776, 3320,15968, 3336,8544, 3344,4448, 3352,12640, 3368,10592, 3376,6496,\n    3384,14688, 3400,9568, 3408,5472, 3416,13664, 3432,11616, 3440,7520, 3448,15712,\n    3464,9056, 3472,4960, 3480,13152, 3496,11104, 3504,7008, 3512,15200, 3528,10080,\n    3536,5984, 3544,14176, 3552,3936, 3560,12128, 3568,8032, 3576,16224, 3592,8416,\n    3600,4320, 3608,12512, 3624,10464, 3632,6368, 3640,14560, 3656,9440, 3664,5344,\n    3672,13536, 3688,11488, 3696,7392, 3704,15584, 3720,8928, 3728,4832, 3736,13024,\n    3752,10976, 3760,6880, 3768,15072, 3784,9952, 3792,5856, 3800,14048, 3816,12000,\n    3824,7904, 3832,16096, 3848,8672, 3856,4576, 3864,12768, 3880,10720, 3888,6624,\n    3896,14816, 3912,9696, 3920,5600, 3928,13792, 3944,11744, 3952,7648, 3960,15840,\n    3976,9184, 3984,5088, 3992,13280, 4008,11232, 4016,7136, 4024,15328, 4040,10208,\n    4048,6112, 4056,14304, 4072,12256, 4080,8160, 4088,16352, 4104,8208, 4120,12304,\n    4136,10256, 4144,6160, 4152,14352, 4168,9232, 4176,5136, 4184,13328, 4200,11280,\n    4208,7184, 4216,15376, 4232,8720, 4240,4624, 4248,12816, 4264,10768, 4272,6672,\n    4280,14864, 4296,9744, 4304,5648, 4312,13840, 4328,11792, 4336,7696, 4344,15888,\n    4360,8464, 4376,12560, 4392,10512, 4400,6416, 4408,14608, 4424,9488, 4432,5392,\n    4440,13584, 4456,11536, 4464,7440, 4472,15632, 4488,8976, 4496,4880, 4504,13072,\n    4520,11024, 4528,6928, 4536,15120, 4552,10000, 4560,5904, 4568,14096,\n    4584,12048, 4592,7952, 4600,16144, 4616,8336, 4632,12432, 4648,10384, 4656,6288,\n    4664,14480, 4680,9360, 4688,5264, 4696,13456, 4712,11408, 4720,7312, 4728,15504,\n    4744,8848, 4760,12944, 4776,10896, 4784,6800, 4792,14992, 4808,9872, 4816,5776,\n    4824,13968, 4840,11920, 4848,7824, 4856,16016, 4872,8592, 4888,12688,\n    4904,10640, 4912,6544, 4920,14736, 4936,9616, 4944,5520, 4952,13712, 4968,11664,\n    4976,7568, 4984,15760, 5000,9104, 5016,13200, 5032,11152, 5040,7056, 5048,15248,\n    5064,10128, 5072,6032, 5080,14224, 5096,12176, 5104,8080, 5112,16272, 5128,8272,\n    5144,12368, 5160,10320, 5168,6224, 5176,14416, 5192,9296, 5208,13392,\n    5224,11344, 5232,7248, 5240,15440, 5256,8784, 5272,12880, 5288,10832, 5296,6736,\n    5304,14928, 5320,9808, 5328,5712, 5336,13904, 5352,11856, 5360,7760, 5368,15952,\n    5384,8528, 5400,12624, 5416,10576, 5424,6480, 5432,14672, 5448,9552, 5464,13648,\n    5480,11600, 5488,7504, 5496,15696, 5512,9040, 5528,13136, 5544,11088, 5552,6992,\n    5560,15184, 5576,10064, 5584,5968, 5592,14160, 5608,12112, 5616,8016,\n    5624,16208, 5640,8400, 5656,12496, 5672,10448, 5680,6352, 5688,14544, 5704,9424,\n    5720,13520, 5736,11472, 5744,7376, 5752,15568, 5768,8912, 5784,13008,\n    5800,10960, 5808,6864, 5816,15056, 5832,9936, 5848,14032, 5864,11984, 5872,7888,\n    5880,16080, 5896,8656, 5912,12752, 5928,10704, 5936,6608, 5944,14800, 5960,9680,\n    5976,13776, 5992,11728, 6000,7632, 6008,15824, 6024,9168, 6040,13264,\n    6056,11216, 6064,7120, 6072,15312, 6088,10192, 6104,14288, 6120,12240,\n    6128,8144, 6136,16336, 6152,8240, 6168,12336, 6184,10288, 6200,14384, 6216,9264,\n    6232,13360, 6248,11312, 6256,7216, 6264,15408, 6280,8752, 6296,12848,\n    6312,10800, 6320,6704, 6328,14896, 6344,9776, 6360,13872, 6376,11824, 6384,7728,\n    6392,15920, 6408,8496, 6424,12592, 6440,10544, 6456,14640, 6472,9520,\n    6488,13616, 6504,11568, 6512,7472, 6520,15664, 6536,9008, 6552,13104,\n    6568,11056, 6576,6960, 6584,15152, 6600,10032, 6616,14128, 6632,12080,\n    6640,7984, 6648,16176, 6664,8368, 6680,12464, 6696,10416, 6712,14512, 6728,9392,\n    6744,13488, 6760,11440, 6768,7344, 6776,15536, 6792,8880, 6808,12976,\n    6824,10928, 6840,15024, 6856,9904, 6872,14000, 6888,11952, 6896,7856,\n    6904,16048, 6920,8624, 6936,12720, 6952,10672, 6968,14768, 6984,9648,\n    7000,13744, 7016,11696, 7024,7600, 7032,15792, 7048,9136, 7064,13232,\n    7080,11184, 7096,15280, 7112,10160, 7128,14256, 7144,12208, 7152,8112,\n    7160,16304, 7176,8304, 7192,12400, 7208,10352, 7224,14448, 7240,9328,\n    7256,13424, 7272,11376, 7288,15472, 7304,8816, 7320,12912, 7336,10864,\n    7352,14960, 7368,9840, 7384,13936, 7400,11888, 7408,7792, 7416,15984, 7432,8560,\n    7448,12656, 7464,10608, 7480,14704, 7496,9584, 7512,13680, 7528,11632,\n    7544,15728, 7560,9072, 7576,13168, 7592,11120, 7608,15216, 7624,10096,\n    7640,14192, 7656,12144, 7664,8048, 7672,16240, 7688,8432, 7704,12528,\n    7720,10480, 7736,14576, 7752,9456, 7768,13552, 7784,11504, 7800,15600,\n    7816,8944, 7832,13040, 7848,10992, 7864,15088, 7880,9968, 7896,14064,\n    7912,12016, 7928,16112, 7944,8688, 7960,12784, 7976,10736, 7992,14832,\n    8008,9712, 8024,13808, 8040,11760, 8056,15856, 8072,9200, 8088,13296,\n    8104,11248, 8120,15344, 8136,10224, 8152,14320, 8168,12272, 8184,16368,\n    8216,12296, 8232,10248, 8248,14344, 8264,9224, 8280,13320, 8296,11272,\n    8312,15368, 8328,8712, 8344,12808, 8360,10760, 8376,14856, 8392,9736,\n    8408,13832, 8424,11784, 8440,15880, 8472,12552, 8488,10504, 8504,14600,\n    8520,9480, 8536,13576, 8552,11528, 8568,15624, 8584,8968, 8600,13064,\n    8616,11016, 8632,15112, 8648,9992, 8664,14088, 8680,12040, 8696,16136,\n    8728,12424, 8744,10376, 8760,14472, 8776,9352, 8792,13448, 8808,11400,\n    8824,15496, 8856,12936, 8872,10888, 8888,14984, 8904,9864, 8920,13960,\n    8936,11912, 8952,16008, 8984,12680, 9000,10632, 9016,14728, 9032,9608,\n    9048,13704, 9064,11656, 9080,15752, 9112,13192, 9128,11144, 9144,15240,\n    9160,10120, 9176,14216, 9192,12168, 9208,16264, 9240,12360, 9256,10312,\n    9272,14408, 9304,13384, 9320,11336, 9336,15432, 9368,12872, 9384,10824,\n    9400,14920, 9416,9800, 9432,13896, 9448,11848, 9464,15944, 9496,12616,\n    9512,10568, 9528,14664, 9560,13640, 9576,11592, 9592,15688, 9624,13128,\n    9640,11080, 9656,15176, 9672,10056, 9688,14152, 9704,12104, 9720,16200,\n    9752,12488, 9768,10440, 9784,14536, 9816,13512, 9832,11464, 9848,15560,\n    9880,13000, 9896,10952, 9912,15048, 9944,14024, 9960,11976, 9976,16072,\n    10008,12744, 10024,10696, 10040,14792, 10072,13768, 10088,11720, 10104,15816,\n    10136,13256, 10152,11208, 10168,15304, 10200,14280, 10216,12232, 10232,16328,\n    10264,12328, 10296,14376, 10328,13352, 10344,11304, 10360,15400, 10392,12840,\n    10408,10792, 10424,14888, 10456,13864, 10472,11816, 10488,15912, 10520,12584,\n    10552,14632, 10584,13608, 10600,11560, 10616,15656, 10648,13096, 10664,11048,\n    10680,15144, 10712,14120, 10728,12072, 10744,16168, 10776,12456, 10808,14504,\n    10840,13480, 10856,11432, 10872,15528, 10904,12968, 10936,15016, 10968,13992,\n    10984,11944, 11000,16040, 11032,12712, 11064,14760, 11096,13736, 11112,11688,\n    11128,15784, 11160,13224, 11192,15272, 11224,14248, 11240,12200, 11256,16296,\n    11288,12392, 11320,14440, 11352,13416, 11384,15464, 11416,12904, 11448,14952,\n    11480,13928, 11496,11880, 11512,15976, 11544,12648, 11576,14696, 11608,13672,\n    11640,15720, 11672,13160, 11704,15208, 11736,14184, 11752,12136, 11768,16232,\n    11800,12520, 11832,14568, 11864,13544, 11896,15592, 11928,13032, 11960,15080,\n    11992,14056, 12024,16104, 12056,12776, 12088,14824, 12120,13800, 12152,15848,\n    12184,13288, 12216,15336, 12248,14312, 12280,16360, 12344,14360, 12376,13336,\n    12408,15384, 12440,12824, 12472,14872, 12504,13848, 12536,15896, 12600,14616,\n    12632,13592, 12664,15640, 12696,13080, 12728,15128, 12760,14104, 12792,16152,\n    12856,14488, 12888,13464, 12920,15512, 12984,15000, 13016,13976, 13048,16024,\n    13112,14744, 13144,13720, 13176,15768, 13240,15256, 13272,14232, 13304,16280,\n    13368,14424, 13432,15448, 13496,14936, 13528,13912, 13560,15960, 13624,14680,\n    13688,15704, 13752,15192, 13784,14168, 13816,16216, 13880,14552, 13944,15576,\n    14008,15064, 14072,16088, 14136,14808, 14200,15832, 14264,15320, 14328,16344,\n    14456,15416, 14520,14904, 14584,15928, 14712,15672, 14776,15160, 14840,16184,\n    14968,15544, 15096,16056, 15224,15800, 15352,16312, 15608,15992, 15864,16248\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_4096)\nconst uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH] =\n{\n    /* radix 4, size 4032 */\n    8,16384, 16,8192, 24,24576, 32,4096, 40,20480, 48,12288, 56,28672, 64,2048,\n    72,18432, 80,10240, 88,26624, 96,6144, 104,22528, 112,14336, 120,30720,\n    128,1024, 136,17408, 144,9216, 152,25600, 160,5120, 168,21504, 176,13312,\n    184,29696, 192,3072, 200,19456, 208,11264, 216,27648, 224,7168, 232,23552,\n    240,15360, 248,31744, 256,512, 264,16896, 272,8704, 280,25088, 288,4608,\n    296,20992, 304,12800, 312,29184, 320,2560, 328,18944, 336,10752, 344,27136,\n    352,6656, 360,23040, 368,14848, 376,31232, 384,1536, 392,17920, 400,9728,\n    408,26112, 416,5632, 424,22016, 432,13824, 440,30208, 448,3584, 456,19968,\n    464,11776, 472,28160, 480,7680, 488,24064, 496,15872, 504,32256, 520,16640,\n    528,8448, 536,24832, 544,4352, 552,20736, 560,12544, 568,28928, 576,2304,\n    584,18688, 592,10496, 600,26880, 608,6400, 616,22784, 624,14592, 632,30976,\n    640,1280, 648,17664, 656,9472, 664,25856, 672,5376, 680,21760, 688,13568,\n    696,29952, 704,3328, 712,19712, 720,11520, 728,27904, 736,7424, 744,23808,\n    752,15616, 760,32000, 776,17152, 784,8960, 792,25344, 800,4864, 808,21248,\n    816,13056, 824,29440, 832,2816, 840,19200, 848,11008, 856,27392, 864,6912,\n    872,23296, 880,15104, 888,31488, 896,1792, 904,18176, 912,9984, 920,26368,\n    928,5888, 936,22272, 944,14080, 952,30464, 960,3840, 968,20224, 976,12032,\n    984,28416, 992,7936, 1000,24320, 1008,16128, 1016,32512, 1032,16512, 1040,8320,\n    1048,24704, 1056,4224, 1064,20608, 1072,12416, 1080,28800, 1088,2176,\n    1096,18560, 1104,10368, 1112,26752, 1120,6272, 1128,22656, 1136,14464,\n    1144,30848, 1160,17536, 1168,9344, 1176,25728, 1184,5248, 1192,21632,\n    1200,13440, 1208,29824, 1216,3200, 1224,19584, 1232,11392, 1240,27776,\n    1248,7296, 1256,23680, 1264,15488, 1272,31872, 1288,17024, 1296,8832,\n    1304,25216, 1312,4736, 1320,21120, 1328,12928, 1336,29312, 1344,2688,\n    1352,19072, 1360,10880, 1368,27264, 1376,6784, 1384,23168, 1392,14976,\n    1400,31360, 1408,1664, 1416,18048, 1424,9856, 1432,26240, 1440,5760, 1448,22144,\n    1456,13952, 1464,30336, 1472,3712, 1480,20096, 1488,11904, 1496,28288,\n    1504,7808, 1512,24192, 1520,16000, 1528,32384, 1544,16768, 1552,8576,\n    1560,24960, 1568,4480, 1576,20864, 1584,12672, 1592,29056, 1600,2432,\n    1608,18816, 1616,10624, 1624,27008, 1632,6528, 1640,22912, 1648,14720,\n    1656,31104, 1672,17792, 1680,9600, 1688,25984, 1696,5504, 1704,21888,\n    1712,13696, 1720,30080, 1728,3456, 1736,19840, 1744,11648, 1752,28032,\n    1760,7552, 1768,23936, 1776,15744, 1784,32128, 1800,17280, 1808,9088,\n    1816,25472, 1824,4992, 1832,21376, 1840,13184, 1848,29568, 1856,2944,\n    1864,19328, 1872,11136, 1880,27520, 1888,7040, 1896,23424, 1904,15232,\n    1912,31616, 1928,18304, 1936,10112, 1944,26496, 1952,6016, 1960,22400,\n    1968,14208, 1976,30592, 1984,3968, 1992,20352, 2000,12160, 2008,28544,\n    2016,8064, 2024,24448, 2032,16256, 2040,32640, 2056,16448, 2064,8256,\n    2072,24640, 2080,4160, 2088,20544, 2096,12352, 2104,28736, 2120,18496,\n    2128,10304, 2136,26688, 2144,6208, 2152,22592, 2160,14400, 2168,30784,\n    2184,17472, 2192,9280, 2200,25664, 2208,5184, 2216,21568, 2224,13376,\n    2232,29760, 2240,3136, 2248,19520, 2256,11328, 2264,27712, 2272,7232,\n    2280,23616, 2288,15424, 2296,31808, 2312,16960, 2320,8768, 2328,25152,\n    2336,4672, 2344,21056, 2352,12864, 2360,29248, 2368,2624, 2376,19008,\n    2384,10816, 2392,27200, 2400,6720, 2408,23104, 2416,14912, 2424,31296,\n    2440,17984, 2448,9792, 2456,26176, 2464,5696, 2472,22080, 2480,13888,\n    2488,30272, 2496,3648, 2504,20032, 2512,11840, 2520,28224, 2528,7744,\n    2536,24128, 2544,15936, 2552,32320, 2568,16704, 2576,8512, 2584,24896,\n    2592,4416, 2600,20800, 2608,12608, 2616,28992, 2632,18752, 2640,10560,\n    2648,26944, 2656,6464, 2664,22848, 2672,14656, 2680,31040, 2696,17728,\n    2704,9536, 2712,25920, 2720,5440, 2728,21824, 2736,13632, 2744,30016, 2752,3392,\n    2760,19776, 2768,11584, 2776,27968, 2784,7488, 2792,23872, 2800,15680,\n    2808,32064, 2824,17216, 2832,9024, 2840,25408, 2848,4928, 2856,21312,\n    2864,13120, 2872,29504, 2888,19264, 2896,11072, 2904,27456, 2912,6976,\n    2920,23360, 2928,15168, 2936,31552, 2952,18240, 2960,10048, 2968,26432,\n    2976,5952, 2984,22336, 2992,14144, 3000,30528, 3008,3904, 3016,20288,\n    3024,12096, 3032,28480, 3040,8000, 3048,24384, 3056,16192, 3064,32576,\n    3080,16576, 3088,8384, 3096,24768, 3104,4288, 3112,20672, 3120,12480,\n    3128,28864, 3144,18624, 3152,10432, 3160,26816, 3168,6336, 3176,22720,\n    3184,14528, 3192,30912, 3208,17600, 3216,9408, 3224,25792, 3232,5312,\n    3240,21696, 3248,13504, 3256,29888, 3272,19648, 3280,11456, 3288,27840,\n    3296,7360, 3304,23744, 3312,15552, 3320,31936, 3336,17088, 3344,8896,\n    3352,25280, 3360,4800, 3368,21184, 3376,12992, 3384,29376, 3400,19136,\n    3408,10944, 3416,27328, 3424,6848, 3432,23232, 3440,15040, 3448,31424,\n    3464,18112, 3472,9920, 3480,26304, 3488,5824, 3496,22208, 3504,14016,\n    3512,30400, 3520,3776, 3528,20160, 3536,11968, 3544,28352, 3552,7872,\n    3560,24256, 3568,16064, 3576,32448, 3592,16832, 3600,8640, 3608,25024,\n    3616,4544, 3624,20928, 3632,12736, 3640,29120, 3656,18880, 3664,10688,\n    3672,27072, 3680,6592, 3688,22976, 3696,14784, 3704,31168, 3720,17856,\n    3728,9664, 3736,26048, 3744,5568, 3752,21952, 3760,13760, 3768,30144,\n    3784,19904, 3792,11712, 3800,28096, 3808,7616, 3816,24000, 3824,15808,\n    3832,32192, 3848,17344, 3856,9152, 3864,25536, 3872,5056, 3880,21440,\n    3888,13248, 3896,29632, 3912,19392, 3920,11200, 3928,27584, 3936,7104,\n    3944,23488, 3952,15296, 3960,31680, 3976,18368, 3984,10176, 3992,26560,\n    4000,6080, 4008,22464, 4016,14272, 4024,30656, 4040,20416, 4048,12224,\n    4056,28608, 4064,8128, 4072,24512, 4080,16320, 4088,32704, 4104,16416,\n    4112,8224, 4120,24608, 4136,20512, 4144,12320, 4152,28704, 4168,18464,\n    4176,10272, 4184,26656, 4192,6176, 4200,22560, 4208,14368, 4216,30752,\n    4232,17440, 4240,9248, 4248,25632, 4256,5152, 4264,21536, 4272,13344,\n    4280,29728, 4296,19488, 4304,11296, 4312,27680, 4320,7200, 4328,23584,\n    4336,15392, 4344,31776, 4360,16928, 4368,8736, 4376,25120, 4384,4640,\n    4392,21024, 4400,12832, 4408,29216, 4424,18976, 4432,10784, 4440,27168,\n    4448,6688, 4456,23072, 4464,14880, 4472,31264, 4488,17952, 4496,9760,\n    4504,26144, 4512,5664, 4520,22048, 4528,13856, 4536,30240, 4552,20000,\n    4560,11808, 4568,28192, 4576,7712, 4584,24096, 4592,15904, 4600,32288,\n    4616,16672, 4624,8480, 4632,24864, 4648,20768, 4656,12576, 4664,28960,\n    4680,18720, 4688,10528, 4696,26912, 4704,6432, 4712,22816, 4720,14624,\n    4728,31008, 4744,17696, 4752,9504, 4760,25888, 4768,5408, 4776,21792,\n    4784,13600, 4792,29984, 4808,19744, 4816,11552, 4824,27936, 4832,7456,\n    4840,23840, 4848,15648, 4856,32032, 4872,17184, 4880,8992, 4888,25376,\n    4904,21280, 4912,13088, 4920,29472, 4936,19232, 4944,11040, 4952,27424,\n    4960,6944, 4968,23328, 4976,15136, 4984,31520, 5000,18208, 5008,10016,\n    5016,26400, 5024,5920, 5032,22304, 5040,14112, 5048,30496, 5064,20256,\n    5072,12064, 5080,28448, 5088,7968, 5096,24352, 5104,16160, 5112,32544,\n    5128,16544, 5136,8352, 5144,24736, 5160,20640, 5168,12448, 5176,28832,\n    5192,18592, 5200,10400, 5208,26784, 5216,6304, 5224,22688, 5232,14496,\n    5240,30880, 5256,17568, 5264,9376, 5272,25760, 5288,21664, 5296,13472,\n    5304,29856, 5320,19616, 5328,11424, 5336,27808, 5344,7328, 5352,23712,\n    5360,15520, 5368,31904, 5384,17056, 5392,8864, 5400,25248, 5416,21152,\n    5424,12960, 5432,29344, 5448,19104, 5456,10912, 5464,27296, 5472,6816,\n    5480,23200, 5488,15008, 5496,31392, 5512,18080, 5520,9888, 5528,26272,\n    5536,5792, 5544,22176, 5552,13984, 5560,30368, 5576,20128, 5584,11936,\n    5592,28320, 5600,7840, 5608,24224, 5616,16032, 5624,32416, 5640,16800,\n    5648,8608, 5656,24992, 5672,20896, 5680,12704, 5688,29088, 5704,18848,\n    5712,10656, 5720,27040, 5728,6560, 5736,22944, 5744,14752, 5752,31136,\n    5768,17824, 5776,9632, 5784,26016, 5800,21920, 5808,13728, 5816,30112,\n    5832,19872, 5840,11680, 5848,28064, 5856,7584, 5864,23968, 5872,15776,\n    5880,32160, 5896,17312, 5904,9120, 5912,25504, 5928,21408, 5936,13216,\n    5944,29600, 5960,19360, 5968,11168, 5976,27552, 5984,7072, 5992,23456,\n    6000,15264, 6008,31648, 6024,18336, 6032,10144, 6040,26528, 6056,22432,\n    6064,14240, 6072,30624, 6088,20384, 6096,12192, 6104,28576, 6112,8096,\n    6120,24480, 6128,16288, 6136,32672, 6152,16480, 6160,8288, 6168,24672,\n    6184,20576, 6192,12384, 6200,28768, 6216,18528, 6224,10336, 6232,26720,\n    6248,22624, 6256,14432, 6264,30816, 6280,17504, 6288,9312, 6296,25696,\n    6312,21600, 6320,13408, 6328,29792, 6344,19552, 6352,11360, 6360,27744,\n    6368,7264, 6376,23648, 6384,15456, 6392,31840, 6408,16992, 6416,8800,\n    6424,25184, 6440,21088, 6448,12896, 6456,29280, 6472,19040, 6480,10848,\n    6488,27232, 6496,6752, 6504,23136, 6512,14944, 6520,31328, 6536,18016,\n    6544,9824, 6552,26208, 6568,22112, 6576,13920, 6584,30304, 6600,20064,\n    6608,11872, 6616,28256, 6624,7776, 6632,24160, 6640,15968, 6648,32352,\n    6664,16736, 6672,8544, 6680,24928, 6696,20832, 6704,12640, 6712,29024,\n    6728,18784, 6736,10592, 6744,26976, 6760,22880, 6768,14688, 6776,31072,\n    6792,17760, 6800,9568, 6808,25952, 6824,21856, 6832,13664, 6840,30048,\n    6856,19808, 6864,11616, 6872,28000, 6880,7520, 6888,23904, 6896,15712,\n    6904,32096, 6920,17248, 6928,9056, 6936,25440, 6952,21344, 6960,13152,\n    6968,29536, 6984,19296, 6992,11104, 7000,27488, 7016,23392, 7024,15200,\n    7032,31584, 7048,18272, 7056,10080, 7064,26464, 7080,22368, 7088,14176,\n    7096,30560, 7112,20320, 7120,12128, 7128,28512, 7136,8032, 7144,24416,\n    7152,16224, 7160,32608, 7176,16608, 7184,8416, 7192,24800, 7208,20704,\n    7216,12512, 7224,28896, 7240,18656, 7248,10464, 7256,26848, 7272,22752,\n    7280,14560, 7288,30944, 7304,17632, 7312,9440, 7320,25824, 7336,21728,\n    7344,13536, 7352,29920, 7368,19680, 7376,11488, 7384,27872, 7400,23776,\n    7408,15584, 7416,31968, 7432,17120, 7440,8928, 7448,25312, 7464,21216,\n    7472,13024, 7480,29408, 7496,19168, 7504,10976, 7512,27360, 7528,23264,\n    7536,15072, 7544,31456, 7560,18144, 7568,9952, 7576,26336, 7592,22240,\n    7600,14048, 7608,30432, 7624,20192, 7632,12000, 7640,28384, 7648,7904,\n    7656,24288, 7664,16096, 7672,32480, 7688,16864, 7696,8672, 7704,25056,\n    7720,20960, 7728,12768, 7736,29152, 7752,18912, 7760,10720, 7768,27104,\n    7784,23008, 7792,14816, 7800,31200, 7816,17888, 7824,9696, 7832,26080,\n    7848,21984, 7856,13792, 7864,30176, 7880,19936, 7888,11744, 7896,28128,\n    7912,24032, 7920,15840, 7928,32224, 7944,17376, 7952,9184, 7960,25568,\n    7976,21472, 7984,13280, 7992,29664, 8008,19424, 8016,11232, 8024,27616,\n    8040,23520, 8048,15328, 8056,31712, 8072,18400, 8080,10208, 8088,26592,\n    8104,22496, 8112,14304, 8120,30688, 8136,20448, 8144,12256, 8152,28640,\n    8168,24544, 8176,16352, 8184,32736, 8200,16400, 8216,24592, 8232,20496,\n    8240,12304, 8248,28688, 8264,18448, 8272,10256, 8280,26640, 8296,22544,\n    8304,14352, 8312,30736, 8328,17424, 8336,9232, 8344,25616, 8360,21520,\n    8368,13328, 8376,29712, 8392,19472, 8400,11280, 8408,27664, 8424,23568,\n    8432,15376, 8440,31760, 8456,16912, 8464,8720, 8472,25104, 8488,21008,\n    8496,12816, 8504,29200, 8520,18960, 8528,10768, 8536,27152, 8552,23056,\n    8560,14864, 8568,31248, 8584,17936, 8592,9744, 8600,26128, 8616,22032,\n    8624,13840, 8632,30224, 8648,19984, 8656,11792, 8664,28176, 8680,24080,\n    8688,15888, 8696,32272, 8712,16656, 8728,24848, 8744,20752, 8752,12560,\n    8760,28944, 8776,18704, 8784,10512, 8792,26896, 8808,22800, 8816,14608,\n    8824,30992, 8840,17680, 8848,9488, 8856,25872, 8872,21776, 8880,13584,\n    8888,29968, 8904,19728, 8912,11536, 8920,27920, 8936,23824, 8944,15632,\n    8952,32016, 8968,17168, 8984,25360, 9000,21264, 9008,13072, 9016,29456,\n    9032,19216, 9040,11024, 9048,27408, 9064,23312, 9072,15120, 9080,31504,\n    9096,18192, 9104,10000, 9112,26384, 9128,22288, 9136,14096, 9144,30480,\n    9160,20240, 9168,12048, 9176,28432, 9192,24336, 9200,16144, 9208,32528,\n    9224,16528, 9240,24720, 9256,20624, 9264,12432, 9272,28816, 9288,18576,\n    9296,10384, 9304,26768, 9320,22672, 9328,14480, 9336,30864, 9352,17552,\n    9368,25744, 9384,21648, 9392,13456, 9400,29840, 9416,19600, 9424,11408,\n    9432,27792, 9448,23696, 9456,15504, 9464,31888, 9480,17040, 9496,25232,\n    9512,21136, 9520,12944, 9528,29328, 9544,19088, 9552,10896, 9560,27280,\n    9576,23184, 9584,14992, 9592,31376, 9608,18064, 9616,9872, 9624,26256,\n    9640,22160, 9648,13968, 9656,30352, 9672,20112, 9680,11920, 9688,28304,\n    9704,24208, 9712,16016, 9720,32400, 9736,16784, 9752,24976, 9768,20880,\n    9776,12688, 9784,29072, 9800,18832, 9808,10640, 9816,27024, 9832,22928,\n    9840,14736, 9848,31120, 9864,17808, 9880,26000, 9896,21904, 9904,13712,\n    9912,30096, 9928,19856, 9936,11664, 9944,28048, 9960,23952, 9968,15760,\n    9976,32144, 9992,17296, 10008,25488, 10024,21392, 10032,13200, 10040,29584,\n    10056,19344, 10064,11152, 10072,27536, 10088,23440, 10096,15248, 10104,31632,\n    10120,18320, 10136,26512, 10152,22416, 10160,14224, 10168,30608, 10184,20368,\n    10192,12176, 10200,28560, 10216,24464, 10224,16272, 10232,32656, 10248,16464,\n    10264,24656, 10280,20560, 10288,12368, 10296,28752, 10312,18512, 10328,26704,\n    10344,22608, 10352,14416, 10360,30800, 10376,17488, 10392,25680, 10408,21584,\n    10416,13392, 10424,29776, 10440,19536, 10448,11344, 10456,27728, 10472,23632,\n    10480,15440, 10488,31824, 10504,16976, 10520,25168, 10536,21072, 10544,12880,\n    10552,29264, 10568,19024, 10576,10832, 10584,27216, 10600,23120, 10608,14928,\n    10616,31312, 10632,18000, 10648,26192, 10664,22096, 10672,13904, 10680,30288,\n    10696,20048, 10704,11856, 10712,28240, 10728,24144, 10736,15952, 10744,32336,\n    10760,16720, 10776,24912, 10792,20816, 10800,12624, 10808,29008, 10824,18768,\n    10840,26960, 10856,22864, 10864,14672, 10872,31056, 10888,17744, 10904,25936,\n    10920,21840, 10928,13648, 10936,30032, 10952,19792, 10960,11600, 10968,27984,\n    10984,23888, 10992,15696, 11000,32080, 11016,17232, 11032,25424, 11048,21328,\n    11056,13136, 11064,29520, 11080,19280, 11096,27472, 11112,23376, 11120,15184,\n    11128,31568, 11144,18256, 11160,26448, 11176,22352, 11184,14160, 11192,30544,\n    11208,20304, 11216,12112, 11224,28496, 11240,24400, 11248,16208, 11256,32592,\n    11272,16592, 11288,24784, 11304,20688, 11312,12496, 11320,28880, 11336,18640,\n    11352,26832, 11368,22736, 11376,14544, 11384,30928, 11400,17616, 11416,25808,\n    11432,21712, 11440,13520, 11448,29904, 11464,19664, 11480,27856, 11496,23760,\n    11504,15568, 11512,31952, 11528,17104, 11544,25296, 11560,21200, 11568,13008,\n    11576,29392, 11592,19152, 11608,27344, 11624,23248, 11632,15056, 11640,31440,\n    11656,18128, 11672,26320, 11688,22224, 11696,14032, 11704,30416, 11720,20176,\n    11728,11984, 11736,28368, 11752,24272, 11760,16080, 11768,32464, 11784,16848,\n    11800,25040, 11816,20944, 11824,12752, 11832,29136, 11848,18896, 11864,27088,\n    11880,22992, 11888,14800, 11896,31184, 11912,17872, 11928,26064, 11944,21968,\n    11952,13776, 11960,30160, 11976,19920, 11992,28112, 12008,24016, 12016,15824,\n    12024,32208, 12040,17360, 12056,25552, 12072,21456, 12080,13264, 12088,29648,\n    12104,19408, 12120,27600, 12136,23504, 12144,15312, 12152,31696, 12168,18384,\n    12184,26576, 12200,22480, 12208,14288, 12216,30672, 12232,20432, 12248,28624,\n    12264,24528, 12272,16336, 12280,32720, 12296,16432, 12312,24624, 12328,20528,\n    12344,28720, 12360,18480, 12376,26672, 12392,22576, 12400,14384, 12408,30768,\n    12424,17456, 12440,25648, 12456,21552, 12464,13360, 12472,29744, 12488,19504,\n    12504,27696, 12520,23600, 12528,15408, 12536,31792, 12552,16944, 12568,25136,\n    12584,21040, 12592,12848, 12600,29232, 12616,18992, 12632,27184, 12648,23088,\n    12656,14896, 12664,31280, 12680,17968, 12696,26160, 12712,22064, 12720,13872,\n    12728,30256, 12744,20016, 12760,28208, 12776,24112, 12784,15920, 12792,32304,\n    12808,16688, 12824,24880, 12840,20784, 12856,28976, 12872,18736, 12888,26928,\n    12904,22832, 12912,14640, 12920,31024, 12936,17712, 12952,25904, 12968,21808,\n    12976,13616, 12984,30000, 13000,19760, 13016,27952, 13032,23856, 13040,15664,\n    13048,32048, 13064,17200, 13080,25392, 13096,21296, 13112,29488, 13128,19248,\n    13144,27440, 13160,23344, 13168,15152, 13176,31536, 13192,18224, 13208,26416,\n    13224,22320, 13232,14128, 13240,30512, 13256,20272, 13272,28464, 13288,24368,\n    13296,16176, 13304,32560, 13320,16560, 13336,24752, 13352,20656, 13368,28848,\n    13384,18608, 13400,26800, 13416,22704, 13424,14512, 13432,30896, 13448,17584,\n    13464,25776, 13480,21680, 13496,29872, 13512,19632, 13528,27824, 13544,23728,\n    13552,15536, 13560,31920, 13576,17072, 13592,25264, 13608,21168, 13624,29360,\n    13640,19120, 13656,27312, 13672,23216, 13680,15024, 13688,31408, 13704,18096,\n    13720,26288, 13736,22192, 13744,14000, 13752,30384, 13768,20144, 13784,28336,\n    13800,24240, 13808,16048, 13816,32432, 13832,16816, 13848,25008, 13864,20912,\n    13880,29104, 13896,18864, 13912,27056, 13928,22960, 13936,14768, 13944,31152,\n    13960,17840, 13976,26032, 13992,21936, 14008,30128, 14024,19888, 14040,28080,\n    14056,23984, 14064,15792, 14072,32176, 14088,17328, 14104,25520, 14120,21424,\n    14136,29616, 14152,19376, 14168,27568, 14184,23472, 14192,15280, 14200,31664,\n    14216,18352, 14232,26544, 14248,22448, 14264,30640, 14280,20400, 14296,28592,\n    14312,24496, 14320,16304, 14328,32688, 14344,16496, 14360,24688, 14376,20592,\n    14392,28784, 14408,18544, 14424,26736, 14440,22640, 14456,30832, 14472,17520,\n    14488,25712, 14504,21616, 14520,29808, 14536,19568, 14552,27760, 14568,23664,\n    14576,15472, 14584,31856, 14600,17008, 14616,25200, 14632,21104, 14648,29296,\n    14664,19056, 14680,27248, 14696,23152, 14704,14960, 14712,31344, 14728,18032,\n    14744,26224, 14760,22128, 14776,30320, 14792,20080, 14808,28272, 14824,24176,\n    14832,15984, 14840,32368, 14856,16752, 14872,24944, 14888,20848, 14904,29040,\n    14920,18800, 14936,26992, 14952,22896, 14968,31088, 14984,17776, 15000,25968,\n    15016,21872, 15032,30064, 15048,19824, 15064,28016, 15080,23920, 15088,15728,\n    15096,32112, 15112,17264, 15128,25456, 15144,21360, 15160,29552, 15176,19312,\n    15192,27504, 15208,23408, 15224,31600, 15240,18288, 15256,26480, 15272,22384,\n    15288,30576, 15304,20336, 15320,28528, 15336,24432, 15344,16240, 15352,32624,\n    15368,16624, 15384,24816, 15400,20720, 15416,28912, 15432,18672, 15448,26864,\n    15464,22768, 15480,30960, 15496,17648, 15512,25840, 15528,21744, 15544,29936,\n    15560,19696, 15576,27888, 15592,23792, 15608,31984, 15624,17136, 15640,25328,\n    15656,21232, 15672,29424, 15688,19184, 15704,27376, 15720,23280, 15736,31472,\n    15752,18160, 15768,26352, 15784,22256, 15800,30448, 15816,20208, 15832,28400,\n    15848,24304, 15856,16112, 15864,32496, 15880,16880, 15896,25072, 15912,20976,\n    15928,29168, 15944,18928, 15960,27120, 15976,23024, 15992,31216, 16008,17904,\n    16024,26096, 16040,22000, 16056,30192, 16072,19952, 16088,28144, 16104,24048,\n    16120,32240, 16136,17392, 16152,25584, 16168,21488, 16184,29680, 16200,19440,\n    16216,27632, 16232,23536, 16248,31728, 16264,18416, 16280,26608, 16296,22512,\n    16312,30704, 16328,20464, 16344,28656, 16360,24560, 16376,32752, 16408,24584,\n    16424,20488, 16440,28680, 16456,18440, 16472,26632, 16488,22536, 16504,30728,\n    16520,17416, 16536,25608, 16552,21512, 16568,29704, 16584,19464, 16600,27656,\n    16616,23560, 16632,31752, 16648,16904, 16664,25096, 16680,21000, 16696,29192,\n    16712,18952, 16728,27144, 16744,23048, 16760,31240, 16776,17928, 16792,26120,\n    16808,22024, 16824,30216, 16840,19976, 16856,28168, 16872,24072, 16888,32264,\n    16920,24840, 16936,20744, 16952,28936, 16968,18696, 16984,26888, 17000,22792,\n    17016,30984, 17032,17672, 17048,25864, 17064,21768, 17080,29960, 17096,19720,\n    17112,27912, 17128,23816, 17144,32008, 17176,25352, 17192,21256, 17208,29448,\n    17224,19208, 17240,27400, 17256,23304, 17272,31496, 17288,18184, 17304,26376,\n    17320,22280, 17336,30472, 17352,20232, 17368,28424, 17384,24328, 17400,32520,\n    17432,24712, 17448,20616, 17464,28808, 17480,18568, 17496,26760, 17512,22664,\n    17528,30856, 17560,25736, 17576,21640, 17592,29832, 17608,19592, 17624,27784,\n    17640,23688, 17656,31880, 17688,25224, 17704,21128, 17720,29320, 17736,19080,\n    17752,27272, 17768,23176, 17784,31368, 17800,18056, 17816,26248, 17832,22152,\n    17848,30344, 17864,20104, 17880,28296, 17896,24200, 17912,32392, 17944,24968,\n    17960,20872, 17976,29064, 17992,18824, 18008,27016, 18024,22920, 18040,31112,\n    18072,25992, 18088,21896, 18104,30088, 18120,19848, 18136,28040, 18152,23944,\n    18168,32136, 18200,25480, 18216,21384, 18232,29576, 18248,19336, 18264,27528,\n    18280,23432, 18296,31624, 18328,26504, 18344,22408, 18360,30600, 18376,20360,\n    18392,28552, 18408,24456, 18424,32648, 18456,24648, 18472,20552, 18488,28744,\n    18520,26696, 18536,22600, 18552,30792, 18584,25672, 18600,21576, 18616,29768,\n    18632,19528, 18648,27720, 18664,23624, 18680,31816, 18712,25160, 18728,21064,\n    18744,29256, 18760,19016, 18776,27208, 18792,23112, 18808,31304, 18840,26184,\n    18856,22088, 18872,30280, 18888,20040, 18904,28232, 18920,24136, 18936,32328,\n    18968,24904, 18984,20808, 19000,29000, 19032,26952, 19048,22856, 19064,31048,\n    19096,25928, 19112,21832, 19128,30024, 19144,19784, 19160,27976, 19176,23880,\n    19192,32072, 19224,25416, 19240,21320, 19256,29512, 19288,27464, 19304,23368,\n    19320,31560, 19352,26440, 19368,22344, 19384,30536, 19400,20296, 19416,28488,\n    19432,24392, 19448,32584, 19480,24776, 19496,20680, 19512,28872, 19544,26824,\n    19560,22728, 19576,30920, 19608,25800, 19624,21704, 19640,29896, 19672,27848,\n    19688,23752, 19704,31944, 19736,25288, 19752,21192, 19768,29384, 19800,27336,\n    19816,23240, 19832,31432, 19864,26312, 19880,22216, 19896,30408, 19912,20168,\n    19928,28360, 19944,24264, 19960,32456, 19992,25032, 20008,20936, 20024,29128,\n    20056,27080, 20072,22984, 20088,31176, 20120,26056, 20136,21960, 20152,30152,\n    20184,28104, 20200,24008, 20216,32200, 20248,25544, 20264,21448, 20280,29640,\n    20312,27592, 20328,23496, 20344,31688, 20376,26568, 20392,22472, 20408,30664,\n    20440,28616, 20456,24520, 20472,32712, 20504,24616, 20536,28712, 20568,26664,\n    20584,22568, 20600,30760, 20632,25640, 20648,21544, 20664,29736, 20696,27688,\n    20712,23592, 20728,31784, 20760,25128, 20776,21032, 20792,29224, 20824,27176,\n    20840,23080, 20856,31272, 20888,26152, 20904,22056, 20920,30248, 20952,28200,\n    20968,24104, 20984,32296, 21016,24872, 21048,28968, 21080,26920, 21096,22824,\n    21112,31016, 21144,25896, 21160,21800, 21176,29992, 21208,27944, 21224,23848,\n    21240,32040, 21272,25384, 21304,29480, 21336,27432, 21352,23336, 21368,31528,\n    21400,26408, 21416,22312, 21432,30504, 21464,28456, 21480,24360, 21496,32552,\n    21528,24744, 21560,28840, 21592,26792, 21608,22696, 21624,30888, 21656,25768,\n    21688,29864, 21720,27816, 21736,23720, 21752,31912, 21784,25256, 21816,29352,\n    21848,27304, 21864,23208, 21880,31400, 21912,26280, 21928,22184, 21944,30376,\n    21976,28328, 21992,24232, 22008,32424, 22040,25000, 22072,29096, 22104,27048,\n    22120,22952, 22136,31144, 22168,26024, 22200,30120, 22232,28072, 22248,23976,\n    22264,32168, 22296,25512, 22328,29608, 22360,27560, 22376,23464, 22392,31656,\n    22424,26536, 22456,30632, 22488,28584, 22504,24488, 22520,32680, 22552,24680,\n    22584,28776, 22616,26728, 22648,30824, 22680,25704, 22712,29800, 22744,27752,\n    22760,23656, 22776,31848, 22808,25192, 22840,29288, 22872,27240, 22888,23144,\n    22904,31336, 22936,26216, 22968,30312, 23000,28264, 23016,24168, 23032,32360,\n    23064,24936, 23096,29032, 23128,26984, 23160,31080, 23192,25960, 23224,30056,\n    23256,28008, 23272,23912, 23288,32104, 23320,25448, 23352,29544, 23384,27496,\n    23416,31592, 23448,26472, 23480,30568, 23512,28520, 23528,24424, 23544,32616,\n    23576,24808, 23608,28904, 23640,26856, 23672,30952, 23704,25832, 23736,29928,\n    23768,27880, 23800,31976, 23832,25320, 23864,29416, 23896,27368, 23928,31464,\n    23960,26344, 23992,30440, 24024,28392, 24040,24296, 24056,32488, 24088,25064,\n    24120,29160, 24152,27112, 24184,31208, 24216,26088, 24248,30184, 24280,28136,\n    24312,32232, 24344,25576, 24376,29672, 24408,27624, 24440,31720, 24472,26600,\n    24504,30696, 24536,28648, 24568,32744, 24632,28696, 24664,26648, 24696,30744,\n    24728,25624, 24760,29720, 24792,27672, 24824,31768, 24856,25112, 24888,29208,\n    24920,27160, 24952,31256, 24984,26136, 25016,30232, 25048,28184, 25080,32280,\n    25144,28952, 25176,26904, 25208,31000, 25240,25880, 25272,29976, 25304,27928,\n    25336,32024, 25400,29464, 25432,27416, 25464,31512, 25496,26392, 25528,30488,\n    25560,28440, 25592,32536, 25656,28824, 25688,26776, 25720,30872, 25784,29848,\n    25816,27800, 25848,31896, 25912,29336, 25944,27288, 25976,31384, 26008,26264,\n    26040,30360, 26072,28312, 26104,32408, 26168,29080, 26200,27032, 26232,31128,\n    26296,30104, 26328,28056, 26360,32152, 26424,29592, 26456,27544, 26488,31640,\n    26552,30616, 26584,28568, 26616,32664, 26680,28760, 26744,30808, 26808,29784,\n    26840,27736, 26872,31832, 26936,29272, 26968,27224, 27000,31320, 27064,30296,\n    27096,28248, 27128,32344, 27192,29016, 27256,31064, 27320,30040, 27352,27992,\n    27384,32088, 27448,29528, 27512,31576, 27576,30552, 27608,28504, 27640,32600,\n    27704,28888, 27768,30936, 27832,29912, 27896,31960, 27960,29400, 28024,31448,\n    28088,30424, 28120,28376, 28152,32472, 28216,29144, 28280,31192, 28344,30168,\n    28408,32216, 28472,29656, 28536,31704, 28600,30680, 28664,32728, 28792,30776,\n    28856,29752, 28920,31800, 28984,29240, 29048,31288, 29112,30264, 29176,32312,\n    29304,31032, 29368,30008, 29432,32056, 29560,31544, 29624,30520, 29688,32568,\n    29816,30904, 29944,31928, 30072,31416, 30136,30392, 30200,32440, 30328,31160,\n    30456,32184, 30584,31672, 30712,32696, 30968,31864, 31096,31352, 31224,32376,\n    31480,32120, 31736,32632, 32248,32504\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_32)\n/**\n  @par\n  Example code for Floating-point RFFT Twiddle factors Generation:\n  @par\n  <pre>TW = exp(pi/2*i-2*pi*i*[0:L/2-1]/L).' </pre>\n  @par\n  Real and Imag values are in interleaved fashion\n*/\nconst float32_t twiddleCoef_rfft_32[32] = {\n    0.000000000f,  1.000000000f,\n    0.195090322f,  0.980785280f,\n    0.382683432f,  0.923879533f,\n    0.555570233f,  0.831469612f,\n    0.707106781f,  0.707106781f,\n    0.831469612f,  0.555570233f,\n    0.923879533f,  0.382683432f,\n    0.980785280f,  0.195090322f,\n    1.000000000f,  0.000000000f,\n    0.980785280f, -0.195090322f,\n    0.923879533f, -0.382683432f,\n    0.831469612f, -0.555570233f,\n    0.707106781f, -0.707106781f,\n    0.555570233f, -0.831469612f,\n    0.382683432f, -0.923879533f,\n    0.195090322f, -0.980785280f\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_64)\nconst float32_t twiddleCoef_rfft_64[64] = {\n    0.000000000000000f,  1.000000000000000f,\n    0.098017140329561f,  0.995184726672197f,\n    0.195090322016128f,  0.980785280403230f,\n    0.290284677254462f,  0.956940335732209f,\n    0.382683432365090f,  0.923879532511287f,\n    0.471396736825998f,  0.881921264348355f,\n    0.555570233019602f,  0.831469612302545f,\n    0.634393284163645f,  0.773010453362737f,\n    0.707106781186547f,  0.707106781186548f,\n    0.773010453362737f,  0.634393284163645f,\n    0.831469612302545f,  0.555570233019602f,\n    0.881921264348355f,  0.471396736825998f,\n    0.923879532511287f,  0.382683432365090f,\n    0.956940335732209f,  0.290284677254462f,\n    0.980785280403230f,  0.195090322016128f,\n    0.995184726672197f,  0.098017140329561f,\n    1.000000000000000f,  0.000000000000000f,\n    0.995184726672197f, -0.098017140329561f,\n    0.980785280403230f, -0.195090322016128f,\n    0.956940335732209f, -0.290284677254462f,\n    0.923879532511287f, -0.382683432365090f,\n    0.881921264348355f, -0.471396736825998f,\n    0.831469612302545f, -0.555570233019602f,\n    0.773010453362737f, -0.634393284163645f,\n    0.707106781186548f, -0.707106781186547f,\n    0.634393284163645f, -0.773010453362737f,\n    0.555570233019602f, -0.831469612302545f,\n    0.471396736825998f, -0.881921264348355f,\n    0.382683432365090f, -0.923879532511287f,\n    0.290284677254462f, -0.956940335732209f,\n    0.195090322016129f, -0.980785280403230f,\n    0.098017140329561f, -0.995184726672197f\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_128)\nconst float32_t twiddleCoef_rfft_128[128] = {\n    0.000000000f,  1.000000000f,\n    0.049067674f,  0.998795456f,\n    0.098017140f,  0.995184727f,\n    0.146730474f,  0.989176510f,\n    0.195090322f,  0.980785280f,\n    0.242980180f,  0.970031253f,\n    0.290284677f,  0.956940336f,\n    0.336889853f,  0.941544065f,\n    0.382683432f,  0.923879533f,\n    0.427555093f,  0.903989293f,\n    0.471396737f,  0.881921264f,\n    0.514102744f,  0.857728610f,\n    0.555570233f,  0.831469612f,\n    0.595699304f,  0.803207531f,\n    0.634393284f,  0.773010453f,\n    0.671558955f,  0.740951125f,\n    0.707106781f,  0.707106781f,\n    0.740951125f,  0.671558955f,\n    0.773010453f,  0.634393284f,\n    0.803207531f,  0.595699304f,\n    0.831469612f,  0.555570233f,\n    0.857728610f,  0.514102744f,\n    0.881921264f,  0.471396737f,\n    0.903989293f,  0.427555093f,\n    0.923879533f,  0.382683432f,\n    0.941544065f,  0.336889853f,\n    0.956940336f,  0.290284677f,\n    0.970031253f,  0.242980180f,\n    0.980785280f,  0.195090322f,\n    0.989176510f,  0.146730474f,\n    0.995184727f,  0.098017140f,\n    0.998795456f,  0.049067674f,\n    1.000000000f,  0.000000000f,\n    0.998795456f, -0.049067674f,\n    0.995184727f, -0.098017140f,\n    0.989176510f, -0.146730474f,\n    0.980785280f, -0.195090322f,\n    0.970031253f, -0.242980180f,\n    0.956940336f, -0.290284677f,\n    0.941544065f, -0.336889853f,\n    0.923879533f, -0.382683432f,\n    0.903989293f, -0.427555093f,\n    0.881921264f, -0.471396737f,\n    0.857728610f, -0.514102744f,\n    0.831469612f, -0.555570233f,\n    0.803207531f, -0.595699304f,\n    0.773010453f, -0.634393284f,\n    0.740951125f, -0.671558955f,\n    0.707106781f, -0.707106781f,\n    0.671558955f, -0.740951125f,\n    0.634393284f, -0.773010453f,\n    0.595699304f, -0.803207531f,\n    0.555570233f, -0.831469612f,\n    0.514102744f, -0.857728610f,\n    0.471396737f, -0.881921264f,\n    0.427555093f, -0.903989293f,\n    0.382683432f, -0.923879533f,\n    0.336889853f, -0.941544065f,\n    0.290284677f, -0.956940336f,\n    0.242980180f, -0.970031253f,\n    0.195090322f, -0.980785280f,\n    0.146730474f, -0.989176510f,\n    0.098017140f, -0.995184727f,\n    0.049067674f, -0.998795456f\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_256)\nconst float32_t twiddleCoef_rfft_256[256] = {\n    0.000000000f,  1.000000000f,\n    0.024541229f,  0.999698819f,\n    0.049067674f,  0.998795456f,\n    0.073564564f,  0.997290457f,\n    0.098017140f,  0.995184727f,\n    0.122410675f,  0.992479535f,\n    0.146730474f,  0.989176510f,\n    0.170961889f,  0.985277642f,\n    0.195090322f,  0.980785280f,\n    0.219101240f,  0.975702130f,\n    0.242980180f,  0.970031253f,\n    0.266712757f,  0.963776066f,\n    0.290284677f,  0.956940336f,\n    0.313681740f,  0.949528181f,\n    0.336889853f,  0.941544065f,\n    0.359895037f,  0.932992799f,\n    0.382683432f,  0.923879533f,\n    0.405241314f,  0.914209756f,\n    0.427555093f,  0.903989293f,\n    0.449611330f,  0.893224301f,\n    0.471396737f,  0.881921264f,\n    0.492898192f,  0.870086991f,\n    0.514102744f,  0.857728610f,\n    0.534997620f,  0.844853565f,\n    0.555570233f,  0.831469612f,\n    0.575808191f,  0.817584813f,\n    0.595699304f,  0.803207531f,\n    0.615231591f,  0.788346428f,\n    0.634393284f,  0.773010453f,\n    0.653172843f,  0.757208847f,\n    0.671558955f,  0.740951125f,\n    0.689540545f,  0.724247083f,\n    0.707106781f,  0.707106781f,\n    0.724247083f,  0.689540545f,\n    0.740951125f,  0.671558955f,\n    0.757208847f,  0.653172843f,\n    0.773010453f,  0.634393284f,\n    0.788346428f,  0.615231591f,\n    0.803207531f,  0.595699304f,\n    0.817584813f,  0.575808191f,\n    0.831469612f,  0.555570233f,\n    0.844853565f,  0.534997620f,\n    0.857728610f,  0.514102744f,\n    0.870086991f,  0.492898192f,\n    0.881921264f,  0.471396737f,\n    0.893224301f,  0.449611330f,\n    0.903989293f,  0.427555093f,\n    0.914209756f,  0.405241314f,\n    0.923879533f,  0.382683432f,\n    0.932992799f,  0.359895037f,\n    0.941544065f,  0.336889853f,\n    0.949528181f,  0.313681740f,\n    0.956940336f,  0.290284677f,\n    0.963776066f,  0.266712757f,\n    0.970031253f,  0.242980180f,\n    0.975702130f,  0.219101240f,\n    0.980785280f,  0.195090322f,\n    0.985277642f,  0.170961889f,\n    0.989176510f,  0.146730474f,\n    0.992479535f,  0.122410675f,\n    0.995184727f,  0.098017140f,\n    0.997290457f,  0.073564564f,\n    0.998795456f,  0.049067674f,\n    0.999698819f,  0.024541229f,\n    1.000000000f,  0.000000000f,\n    0.999698819f, -0.024541229f,\n    0.998795456f, -0.049067674f,\n    0.997290457f, -0.073564564f,\n    0.995184727f, -0.098017140f,\n    0.992479535f, -0.122410675f,\n    0.989176510f, -0.146730474f,\n    0.985277642f, -0.170961889f,\n    0.980785280f, -0.195090322f,\n    0.975702130f, -0.219101240f,\n    0.970031253f, -0.242980180f,\n    0.963776066f, -0.266712757f,\n    0.956940336f, -0.290284677f,\n    0.949528181f, -0.313681740f,\n    0.941544065f, -0.336889853f,\n    0.932992799f, -0.359895037f,\n    0.923879533f, -0.382683432f,\n    0.914209756f, -0.405241314f,\n    0.903989293f, -0.427555093f,\n    0.893224301f, -0.449611330f,\n    0.881921264f, -0.471396737f,\n    0.870086991f, -0.492898192f,\n    0.857728610f, -0.514102744f,\n    0.844853565f, -0.534997620f,\n    0.831469612f, -0.555570233f,\n    0.817584813f, -0.575808191f,\n    0.803207531f, -0.595699304f,\n    0.788346428f, -0.615231591f,\n    0.773010453f, -0.634393284f,\n    0.757208847f, -0.653172843f,\n    0.740951125f, -0.671558955f,\n    0.724247083f, -0.689540545f,\n    0.707106781f, -0.707106781f,\n    0.689540545f, -0.724247083f,\n    0.671558955f, -0.740951125f,\n    0.653172843f, -0.757208847f,\n    0.634393284f, -0.773010453f,\n    0.615231591f, -0.788346428f,\n    0.595699304f, -0.803207531f,\n    0.575808191f, -0.817584813f,\n    0.555570233f, -0.831469612f,\n    0.534997620f, -0.844853565f,\n    0.514102744f, -0.857728610f,\n    0.492898192f, -0.870086991f,\n    0.471396737f, -0.881921264f,\n    0.449611330f, -0.893224301f,\n    0.427555093f, -0.903989293f,\n    0.405241314f, -0.914209756f,\n    0.382683432f, -0.923879533f,\n    0.359895037f, -0.932992799f,\n    0.336889853f, -0.941544065f,\n    0.313681740f, -0.949528181f,\n    0.290284677f, -0.956940336f,\n    0.266712757f, -0.963776066f,\n    0.242980180f, -0.970031253f,\n    0.219101240f, -0.975702130f,\n    0.195090322f, -0.980785280f,\n    0.170961889f, -0.985277642f,\n    0.146730474f, -0.989176510f,\n    0.122410675f, -0.992479535f,\n    0.098017140f, -0.995184727f,\n    0.073564564f, -0.997290457f,\n    0.049067674f, -0.998795456f,\n    0.024541229f, -0.999698819f\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_512)\nconst float32_t twiddleCoef_rfft_512[512] = {\n    0.000000000f,  1.000000000f,\n    0.012271538f,  0.999924702f,\n    0.024541229f,  0.999698819f,\n    0.036807223f,  0.999322385f,\n    0.049067674f,  0.998795456f,\n    0.061320736f,  0.998118113f,\n    0.073564564f,  0.997290457f,\n    0.085797312f,  0.996312612f,\n    0.098017140f,  0.995184727f,\n    0.110222207f,  0.993906970f,\n    0.122410675f,  0.992479535f,\n    0.134580709f,  0.990902635f,\n    0.146730474f,  0.989176510f,\n    0.158858143f,  0.987301418f,\n    0.170961889f,  0.985277642f,\n    0.183039888f,  0.983105487f,\n    0.195090322f,  0.980785280f,\n    0.207111376f,  0.978317371f,\n    0.219101240f,  0.975702130f,\n    0.231058108f,  0.972939952f,\n    0.242980180f,  0.970031253f,\n    0.254865660f,  0.966976471f,\n    0.266712757f,  0.963776066f,\n    0.278519689f,  0.960430519f,\n    0.290284677f,  0.956940336f,\n    0.302005949f,  0.953306040f,\n    0.313681740f,  0.949528181f,\n    0.325310292f,  0.945607325f,\n    0.336889853f,  0.941544065f,\n    0.348418680f,  0.937339012f,\n    0.359895037f,  0.932992799f,\n    0.371317194f,  0.928506080f,\n    0.382683432f,  0.923879533f,\n    0.393992040f,  0.919113852f,\n    0.405241314f,  0.914209756f,\n    0.416429560f,  0.909167983f,\n    0.427555093f,  0.903989293f,\n    0.438616239f,  0.898674466f,\n    0.449611330f,  0.893224301f,\n    0.460538711f,  0.887639620f,\n    0.471396737f,  0.881921264f,\n    0.482183772f,  0.876070094f,\n    0.492898192f,  0.870086991f,\n    0.503538384f,  0.863972856f,\n    0.514102744f,  0.857728610f,\n    0.524589683f,  0.851355193f,\n    0.534997620f,  0.844853565f,\n    0.545324988f,  0.838224706f,\n    0.555570233f,  0.831469612f,\n    0.565731811f,  0.824589303f,\n    0.575808191f,  0.817584813f,\n    0.585797857f,  0.810457198f,\n    0.595699304f,  0.803207531f,\n    0.605511041f,  0.795836905f,\n    0.615231591f,  0.788346428f,\n    0.624859488f,  0.780737229f,\n    0.634393284f,  0.773010453f,\n    0.643831543f,  0.765167266f,\n    0.653172843f,  0.757208847f,\n    0.662415778f,  0.749136395f,\n    0.671558955f,  0.740951125f,\n    0.680600998f,  0.732654272f,\n    0.689540545f,  0.724247083f,\n    0.698376249f,  0.715730825f,\n    0.707106781f,  0.707106781f,\n    0.715730825f,  0.698376249f,\n    0.724247083f,  0.689540545f,\n    0.732654272f,  0.680600998f,\n    0.740951125f,  0.671558955f,\n    0.749136395f,  0.662415778f,\n    0.757208847f,  0.653172843f,\n    0.765167266f,  0.643831543f,\n    0.773010453f,  0.634393284f,\n    0.780737229f,  0.624859488f,\n    0.788346428f,  0.615231591f,\n    0.795836905f,  0.605511041f,\n    0.803207531f,  0.595699304f,\n    0.810457198f,  0.585797857f,\n    0.817584813f,  0.575808191f,\n    0.824589303f,  0.565731811f,\n    0.831469612f,  0.555570233f,\n    0.838224706f,  0.545324988f,\n    0.844853565f,  0.534997620f,\n    0.851355193f,  0.524589683f,\n    0.857728610f,  0.514102744f,\n    0.863972856f,  0.503538384f,\n    0.870086991f,  0.492898192f,\n    0.876070094f,  0.482183772f,\n    0.881921264f,  0.471396737f,\n    0.887639620f,  0.460538711f,\n    0.893224301f,  0.449611330f,\n    0.898674466f,  0.438616239f,\n    0.903989293f,  0.427555093f,\n    0.909167983f,  0.416429560f,\n    0.914209756f,  0.405241314f,\n    0.919113852f,  0.393992040f,\n    0.923879533f,  0.382683432f,\n    0.928506080f,  0.371317194f,\n    0.932992799f,  0.359895037f,\n    0.937339012f,  0.348418680f,\n    0.941544065f,  0.336889853f,\n    0.945607325f,  0.325310292f,\n    0.949528181f,  0.313681740f,\n    0.953306040f,  0.302005949f,\n    0.956940336f,  0.290284677f,\n    0.960430519f,  0.278519689f,\n    0.963776066f,  0.266712757f,\n    0.966976471f,  0.254865660f,\n    0.970031253f,  0.242980180f,\n    0.972939952f,  0.231058108f,\n    0.975702130f,  0.219101240f,\n    0.978317371f,  0.207111376f,\n    0.980785280f,  0.195090322f,\n    0.983105487f,  0.183039888f,\n    0.985277642f,  0.170961889f,\n    0.987301418f,  0.158858143f,\n    0.989176510f,  0.146730474f,\n    0.990902635f,  0.134580709f,\n    0.992479535f,  0.122410675f,\n    0.993906970f,  0.110222207f,\n    0.995184727f,  0.098017140f,\n    0.996312612f,  0.085797312f,\n    0.997290457f,  0.073564564f,\n    0.998118113f,  0.061320736f,\n    0.998795456f,  0.049067674f,\n    0.999322385f,  0.036807223f,\n    0.999698819f,  0.024541229f,\n    0.999924702f,  0.012271538f,\n    1.000000000f,  0.000000000f,\n    0.999924702f, -0.012271538f,\n    0.999698819f, -0.024541229f,\n    0.999322385f, -0.036807223f,\n    0.998795456f, -0.049067674f,\n    0.998118113f, -0.061320736f,\n    0.997290457f, -0.073564564f,\n    0.996312612f, -0.085797312f,\n    0.995184727f, -0.098017140f,\n    0.993906970f, -0.110222207f,\n    0.992479535f, -0.122410675f,\n    0.990902635f, -0.134580709f,\n    0.989176510f, -0.146730474f,\n    0.987301418f, -0.158858143f,\n    0.985277642f, -0.170961889f,\n    0.983105487f, -0.183039888f,\n    0.980785280f, -0.195090322f,\n    0.978317371f, -0.207111376f,\n    0.975702130f, -0.219101240f,\n    0.972939952f, -0.231058108f,\n    0.970031253f, -0.242980180f,\n    0.966976471f, -0.254865660f,\n    0.963776066f, -0.266712757f,\n    0.960430519f, -0.278519689f,\n    0.956940336f, -0.290284677f,\n    0.953306040f, -0.302005949f,\n    0.949528181f, -0.313681740f,\n    0.945607325f, -0.325310292f,\n    0.941544065f, -0.336889853f,\n    0.937339012f, -0.348418680f,\n    0.932992799f, -0.359895037f,\n    0.928506080f, -0.371317194f,\n    0.923879533f, -0.382683432f,\n    0.919113852f, -0.393992040f,\n    0.914209756f, -0.405241314f,\n    0.909167983f, -0.416429560f,\n    0.903989293f, -0.427555093f,\n    0.898674466f, -0.438616239f,\n    0.893224301f, -0.449611330f,\n    0.887639620f, -0.460538711f,\n    0.881921264f, -0.471396737f,\n    0.876070094f, -0.482183772f,\n    0.870086991f, -0.492898192f,\n    0.863972856f, -0.503538384f,\n    0.857728610f, -0.514102744f,\n    0.851355193f, -0.524589683f,\n    0.844853565f, -0.534997620f,\n    0.838224706f, -0.545324988f,\n    0.831469612f, -0.555570233f,\n    0.824589303f, -0.565731811f,\n    0.817584813f, -0.575808191f,\n    0.810457198f, -0.585797857f,\n    0.803207531f, -0.595699304f,\n    0.795836905f, -0.605511041f,\n    0.788346428f, -0.615231591f,\n    0.780737229f, -0.624859488f,\n    0.773010453f, -0.634393284f,\n    0.765167266f, -0.643831543f,\n    0.757208847f, -0.653172843f,\n    0.749136395f, -0.662415778f,\n    0.740951125f, -0.671558955f,\n    0.732654272f, -0.680600998f,\n    0.724247083f, -0.689540545f,\n    0.715730825f, -0.698376249f,\n    0.707106781f, -0.707106781f,\n    0.698376249f, -0.715730825f,\n    0.689540545f, -0.724247083f,\n    0.680600998f, -0.732654272f,\n    0.671558955f, -0.740951125f,\n    0.662415778f, -0.749136395f,\n    0.653172843f, -0.757208847f,\n    0.643831543f, -0.765167266f,\n    0.634393284f, -0.773010453f,\n    0.624859488f, -0.780737229f,\n    0.615231591f, -0.788346428f,\n    0.605511041f, -0.795836905f,\n    0.595699304f, -0.803207531f,\n    0.585797857f, -0.810457198f,\n    0.575808191f, -0.817584813f,\n    0.565731811f, -0.824589303f,\n    0.555570233f, -0.831469612f,\n    0.545324988f, -0.838224706f,\n    0.534997620f, -0.844853565f,\n    0.524589683f, -0.851355193f,\n    0.514102744f, -0.857728610f,\n    0.503538384f, -0.863972856f,\n    0.492898192f, -0.870086991f,\n    0.482183772f, -0.876070094f,\n    0.471396737f, -0.881921264f,\n    0.460538711f, -0.887639620f,\n    0.449611330f, -0.893224301f,\n    0.438616239f, -0.898674466f,\n    0.427555093f, -0.903989293f,\n    0.416429560f, -0.909167983f,\n    0.405241314f, -0.914209756f,\n    0.393992040f, -0.919113852f,\n    0.382683432f, -0.923879533f,\n    0.371317194f, -0.928506080f,\n    0.359895037f, -0.932992799f,\n    0.348418680f, -0.937339012f,\n    0.336889853f, -0.941544065f,\n    0.325310292f, -0.945607325f,\n    0.313681740f, -0.949528181f,\n    0.302005949f, -0.953306040f,\n    0.290284677f, -0.956940336f,\n    0.278519689f, -0.960430519f,\n    0.266712757f, -0.963776066f,\n    0.254865660f, -0.966976471f,\n    0.242980180f, -0.970031253f,\n    0.231058108f, -0.972939952f,\n    0.219101240f, -0.975702130f,\n    0.207111376f, -0.978317371f,\n    0.195090322f, -0.980785280f,\n    0.183039888f, -0.983105487f,\n    0.170961889f, -0.985277642f,\n    0.158858143f, -0.987301418f,\n    0.146730474f, -0.989176510f,\n    0.134580709f, -0.990902635f,\n    0.122410675f, -0.992479535f,\n    0.110222207f, -0.993906970f,\n    0.098017140f, -0.995184727f,\n    0.085797312f, -0.996312612f,\n    0.073564564f, -0.997290457f,\n    0.061320736f, -0.998118113f,\n    0.049067674f, -0.998795456f,\n    0.036807223f, -0.999322385f,\n    0.024541229f, -0.999698819f,\n    0.012271538f, -0.999924702f\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_1024)\nconst float32_t twiddleCoef_rfft_1024[1024] = {\n    0.000000000f,  1.000000000f,\n    0.006135885f,  0.999981175f,\n    0.012271538f,  0.999924702f,\n    0.018406730f,  0.999830582f,\n    0.024541229f,  0.999698819f,\n    0.030674803f,  0.999529418f,\n    0.036807223f,  0.999322385f,\n    0.042938257f,  0.999077728f,\n    0.049067674f,  0.998795456f,\n    0.055195244f,  0.998475581f,\n    0.061320736f,  0.998118113f,\n    0.067443920f,  0.997723067f,\n    0.073564564f,  0.997290457f,\n    0.079682438f,  0.996820299f,\n    0.085797312f,  0.996312612f,\n    0.091908956f,  0.995767414f,\n    0.098017140f,  0.995184727f,\n    0.104121634f,  0.994564571f,\n    0.110222207f,  0.993906970f,\n    0.116318631f,  0.993211949f,\n    0.122410675f,  0.992479535f,\n    0.128498111f,  0.991709754f,\n    0.134580709f,  0.990902635f,\n    0.140658239f,  0.990058210f,\n    0.146730474f,  0.989176510f,\n    0.152797185f,  0.988257568f,\n    0.158858143f,  0.987301418f,\n    0.164913120f,  0.986308097f,\n    0.170961889f,  0.985277642f,\n    0.177004220f,  0.984210092f,\n    0.183039888f,  0.983105487f,\n    0.189068664f,  0.981963869f,\n    0.195090322f,  0.980785280f,\n    0.201104635f,  0.979569766f,\n    0.207111376f,  0.978317371f,\n    0.213110320f,  0.977028143f,\n    0.219101240f,  0.975702130f,\n    0.225083911f,  0.974339383f,\n    0.231058108f,  0.972939952f,\n    0.237023606f,  0.971503891f,\n    0.242980180f,  0.970031253f,\n    0.248927606f,  0.968522094f,\n    0.254865660f,  0.966976471f,\n    0.260794118f,  0.965394442f,\n    0.266712757f,  0.963776066f,\n    0.272621355f,  0.962121404f,\n    0.278519689f,  0.960430519f,\n    0.284407537f,  0.958703475f,\n    0.290284677f,  0.956940336f,\n    0.296150888f,  0.955141168f,\n    0.302005949f,  0.953306040f,\n    0.307849640f,  0.951435021f,\n    0.313681740f,  0.949528181f,\n    0.319502031f,  0.947585591f,\n    0.325310292f,  0.945607325f,\n    0.331106306f,  0.943593458f,\n    0.336889853f,  0.941544065f,\n    0.342660717f,  0.939459224f,\n    0.348418680f,  0.937339012f,\n    0.354163525f,  0.935183510f,\n    0.359895037f,  0.932992799f,\n    0.365612998f,  0.930766961f,\n    0.371317194f,  0.928506080f,\n    0.377007410f,  0.926210242f,\n    0.382683432f,  0.923879533f,\n    0.388345047f,  0.921514039f,\n    0.393992040f,  0.919113852f,\n    0.399624200f,  0.916679060f,\n    0.405241314f,  0.914209756f,\n    0.410843171f,  0.911706032f,\n    0.416429560f,  0.909167983f,\n    0.422000271f,  0.906595705f,\n    0.427555093f,  0.903989293f,\n    0.433093819f,  0.901348847f,\n    0.438616239f,  0.898674466f,\n    0.444122145f,  0.895966250f,\n    0.449611330f,  0.893224301f,\n    0.455083587f,  0.890448723f,\n    0.460538711f,  0.887639620f,\n    0.465976496f,  0.884797098f,\n    0.471396737f,  0.881921264f,\n    0.476799230f,  0.879012226f,\n    0.482183772f,  0.876070094f,\n    0.487550160f,  0.873094978f,\n    0.492898192f,  0.870086991f,\n    0.498227667f,  0.867046246f,\n    0.503538384f,  0.863972856f,\n    0.508830143f,  0.860866939f,\n    0.514102744f,  0.857728610f,\n    0.519355990f,  0.854557988f,\n    0.524589683f,  0.851355193f,\n    0.529803625f,  0.848120345f,\n    0.534997620f,  0.844853565f,\n    0.540171473f,  0.841554977f,\n    0.545324988f,  0.838224706f,\n    0.550457973f,  0.834862875f,\n    0.555570233f,  0.831469612f,\n    0.560661576f,  0.828045045f,\n    0.565731811f,  0.824589303f,\n    0.570780746f,  0.821102515f,\n    0.575808191f,  0.817584813f,\n    0.580813958f,  0.814036330f,\n    0.585797857f,  0.810457198f,\n    0.590759702f,  0.806847554f,\n    0.595699304f,  0.803207531f,\n    0.600616479f,  0.799537269f,\n    0.605511041f,  0.795836905f,\n    0.610382806f,  0.792106577f,\n    0.615231591f,  0.788346428f,\n    0.620057212f,  0.784556597f,\n    0.624859488f,  0.780737229f,\n    0.629638239f,  0.776888466f,\n    0.634393284f,  0.773010453f,\n    0.639124445f,  0.769103338f,\n    0.643831543f,  0.765167266f,\n    0.648514401f,  0.761202385f,\n    0.653172843f,  0.757208847f,\n    0.657806693f,  0.753186799f,\n    0.662415778f,  0.749136395f,\n    0.666999922f,  0.745057785f,\n    0.671558955f,  0.740951125f,\n    0.676092704f,  0.736816569f,\n    0.680600998f,  0.732654272f,\n    0.685083668f,  0.728464390f,\n    0.689540545f,  0.724247083f,\n    0.693971461f,  0.720002508f,\n    0.698376249f,  0.715730825f,\n    0.702754744f,  0.711432196f,\n    0.707106781f,  0.707106781f,\n    0.711432196f,  0.702754744f,\n    0.715730825f,  0.698376249f,\n    0.720002508f,  0.693971461f,\n    0.724247083f,  0.689540545f,\n    0.728464390f,  0.685083668f,\n    0.732654272f,  0.680600998f,\n    0.736816569f,  0.676092704f,\n    0.740951125f,  0.671558955f,\n    0.745057785f,  0.666999922f,\n    0.749136395f,  0.662415778f,\n    0.753186799f,  0.657806693f,\n    0.757208847f,  0.653172843f,\n    0.761202385f,  0.648514401f,\n    0.765167266f,  0.643831543f,\n    0.769103338f,  0.639124445f,\n    0.773010453f,  0.634393284f,\n    0.776888466f,  0.629638239f,\n    0.780737229f,  0.624859488f,\n    0.784556597f,  0.620057212f,\n    0.788346428f,  0.615231591f,\n    0.792106577f,  0.610382806f,\n    0.795836905f,  0.605511041f,\n    0.799537269f,  0.600616479f,\n    0.803207531f,  0.595699304f,\n    0.806847554f,  0.590759702f,\n    0.810457198f,  0.585797857f,\n    0.814036330f,  0.580813958f,\n    0.817584813f,  0.575808191f,\n    0.821102515f,  0.570780746f,\n    0.824589303f,  0.565731811f,\n    0.828045045f,  0.560661576f,\n    0.831469612f,  0.555570233f,\n    0.834862875f,  0.550457973f,\n    0.838224706f,  0.545324988f,\n    0.841554977f,  0.540171473f,\n    0.844853565f,  0.534997620f,\n    0.848120345f,  0.529803625f,\n    0.851355193f,  0.524589683f,\n    0.854557988f,  0.519355990f,\n    0.857728610f,  0.514102744f,\n    0.860866939f,  0.508830143f,\n    0.863972856f,  0.503538384f,\n    0.867046246f,  0.498227667f,\n    0.870086991f,  0.492898192f,\n    0.873094978f,  0.487550160f,\n    0.876070094f,  0.482183772f,\n    0.879012226f,  0.476799230f,\n    0.881921264f,  0.471396737f,\n    0.884797098f,  0.465976496f,\n    0.887639620f,  0.460538711f,\n    0.890448723f,  0.455083587f,\n    0.893224301f,  0.449611330f,\n    0.895966250f,  0.444122145f,\n    0.898674466f,  0.438616239f,\n    0.901348847f,  0.433093819f,\n    0.903989293f,  0.427555093f,\n    0.906595705f,  0.422000271f,\n    0.909167983f,  0.416429560f,\n    0.911706032f,  0.410843171f,\n    0.914209756f,  0.405241314f,\n    0.916679060f,  0.399624200f,\n    0.919113852f,  0.393992040f,\n    0.921514039f,  0.388345047f,\n    0.923879533f,  0.382683432f,\n    0.926210242f,  0.377007410f,\n    0.928506080f,  0.371317194f,\n    0.930766961f,  0.365612998f,\n    0.932992799f,  0.359895037f,\n    0.935183510f,  0.354163525f,\n    0.937339012f,  0.348418680f,\n    0.939459224f,  0.342660717f,\n    0.941544065f,  0.336889853f,\n    0.943593458f,  0.331106306f,\n    0.945607325f,  0.325310292f,\n    0.947585591f,  0.319502031f,\n    0.949528181f,  0.313681740f,\n    0.951435021f,  0.307849640f,\n    0.953306040f,  0.302005949f,\n    0.955141168f,  0.296150888f,\n    0.956940336f,  0.290284677f,\n    0.958703475f,  0.284407537f,\n    0.960430519f,  0.278519689f,\n    0.962121404f,  0.272621355f,\n    0.963776066f,  0.266712757f,\n    0.965394442f,  0.260794118f,\n    0.966976471f,  0.254865660f,\n    0.968522094f,  0.248927606f,\n    0.970031253f,  0.242980180f,\n    0.971503891f,  0.237023606f,\n    0.972939952f,  0.231058108f,\n    0.974339383f,  0.225083911f,\n    0.975702130f,  0.219101240f,\n    0.977028143f,  0.213110320f,\n    0.978317371f,  0.207111376f,\n    0.979569766f,  0.201104635f,\n    0.980785280f,  0.195090322f,\n    0.981963869f,  0.189068664f,\n    0.983105487f,  0.183039888f,\n    0.984210092f,  0.177004220f,\n    0.985277642f,  0.170961889f,\n    0.986308097f,  0.164913120f,\n    0.987301418f,  0.158858143f,\n    0.988257568f,  0.152797185f,\n    0.989176510f,  0.146730474f,\n    0.990058210f,  0.140658239f,\n    0.990902635f,  0.134580709f,\n    0.991709754f,  0.128498111f,\n    0.992479535f,  0.122410675f,\n    0.993211949f,  0.116318631f,\n    0.993906970f,  0.110222207f,\n    0.994564571f,  0.104121634f,\n    0.995184727f,  0.098017140f,\n    0.995767414f,  0.091908956f,\n    0.996312612f,  0.085797312f,\n    0.996820299f,  0.079682438f,\n    0.997290457f,  0.073564564f,\n    0.997723067f,  0.067443920f,\n    0.998118113f,  0.061320736f,\n    0.998475581f,  0.055195244f,\n    0.998795456f,  0.049067674f,\n    0.999077728f,  0.042938257f,\n    0.999322385f,  0.036807223f,\n    0.999529418f,  0.030674803f,\n    0.999698819f,  0.024541229f,\n    0.999830582f,  0.018406730f,\n    0.999924702f,  0.012271538f,\n    0.999981175f,  0.006135885f,\n    1.000000000f,  0.000000000f,\n    0.999981175f, -0.006135885f,\n    0.999924702f, -0.012271538f,\n    0.999830582f, -0.018406730f,\n    0.999698819f, -0.024541229f,\n    0.999529418f, -0.030674803f,\n    0.999322385f, -0.036807223f,\n    0.999077728f, -0.042938257f,\n    0.998795456f, -0.049067674f,\n    0.998475581f, -0.055195244f,\n    0.998118113f, -0.061320736f,\n    0.997723067f, -0.067443920f,\n    0.997290457f, -0.073564564f,\n    0.996820299f, -0.079682438f,\n    0.996312612f, -0.085797312f,\n    0.995767414f, -0.091908956f,\n    0.995184727f, -0.098017140f,\n    0.994564571f, -0.104121634f,\n    0.993906970f, -0.110222207f,\n    0.993211949f, -0.116318631f,\n    0.992479535f, -0.122410675f,\n    0.991709754f, -0.128498111f,\n    0.990902635f, -0.134580709f,\n    0.990058210f, -0.140658239f,\n    0.989176510f, -0.146730474f,\n    0.988257568f, -0.152797185f,\n    0.987301418f, -0.158858143f,\n    0.986308097f, -0.164913120f,\n    0.985277642f, -0.170961889f,\n    0.984210092f, -0.177004220f,\n    0.983105487f, -0.183039888f,\n    0.981963869f, -0.189068664f,\n    0.980785280f, -0.195090322f,\n    0.979569766f, -0.201104635f,\n    0.978317371f, -0.207111376f,\n    0.977028143f, -0.213110320f,\n    0.975702130f, -0.219101240f,\n    0.974339383f, -0.225083911f,\n    0.972939952f, -0.231058108f,\n    0.971503891f, -0.237023606f,\n    0.970031253f, -0.242980180f,\n    0.968522094f, -0.248927606f,\n    0.966976471f, -0.254865660f,\n    0.965394442f, -0.260794118f,\n    0.963776066f, -0.266712757f,\n    0.962121404f, -0.272621355f,\n    0.960430519f, -0.278519689f,\n    0.958703475f, -0.284407537f,\n    0.956940336f, -0.290284677f,\n    0.955141168f, -0.296150888f,\n    0.953306040f, -0.302005949f,\n    0.951435021f, -0.307849640f,\n    0.949528181f, -0.313681740f,\n    0.947585591f, -0.319502031f,\n    0.945607325f, -0.325310292f,\n    0.943593458f, -0.331106306f,\n    0.941544065f, -0.336889853f,\n    0.939459224f, -0.342660717f,\n    0.937339012f, -0.348418680f,\n    0.935183510f, -0.354163525f,\n    0.932992799f, -0.359895037f,\n    0.930766961f, -0.365612998f,\n    0.928506080f, -0.371317194f,\n    0.926210242f, -0.377007410f,\n    0.923879533f, -0.382683432f,\n    0.921514039f, -0.388345047f,\n    0.919113852f, -0.393992040f,\n    0.916679060f, -0.399624200f,\n    0.914209756f, -0.405241314f,\n    0.911706032f, -0.410843171f,\n    0.909167983f, -0.416429560f,\n    0.906595705f, -0.422000271f,\n    0.903989293f, -0.427555093f,\n    0.901348847f, -0.433093819f,\n    0.898674466f, -0.438616239f,\n    0.895966250f, -0.444122145f,\n    0.893224301f, -0.449611330f,\n    0.890448723f, -0.455083587f,\n    0.887639620f, -0.460538711f,\n    0.884797098f, -0.465976496f,\n    0.881921264f, -0.471396737f,\n    0.879012226f, -0.476799230f,\n    0.876070094f, -0.482183772f,\n    0.873094978f, -0.487550160f,\n    0.870086991f, -0.492898192f,\n    0.867046246f, -0.498227667f,\n    0.863972856f, -0.503538384f,\n    0.860866939f, -0.508830143f,\n    0.857728610f, -0.514102744f,\n    0.854557988f, -0.519355990f,\n    0.851355193f, -0.524589683f,\n    0.848120345f, -0.529803625f,\n    0.844853565f, -0.534997620f,\n    0.841554977f, -0.540171473f,\n    0.838224706f, -0.545324988f,\n    0.834862875f, -0.550457973f,\n    0.831469612f, -0.555570233f,\n    0.828045045f, -0.560661576f,\n    0.824589303f, -0.565731811f,\n    0.821102515f, -0.570780746f,\n    0.817584813f, -0.575808191f,\n    0.814036330f, -0.580813958f,\n    0.810457198f, -0.585797857f,\n    0.806847554f, -0.590759702f,\n    0.803207531f, -0.595699304f,\n    0.799537269f, -0.600616479f,\n    0.795836905f, -0.605511041f,\n    0.792106577f, -0.610382806f,\n    0.788346428f, -0.615231591f,\n    0.784556597f, -0.620057212f,\n    0.780737229f, -0.624859488f,\n    0.776888466f, -0.629638239f,\n    0.773010453f, -0.634393284f,\n    0.769103338f, -0.639124445f,\n    0.765167266f, -0.643831543f,\n    0.761202385f, -0.648514401f,\n    0.757208847f, -0.653172843f,\n    0.753186799f, -0.657806693f,\n    0.749136395f, -0.662415778f,\n    0.745057785f, -0.666999922f,\n    0.740951125f, -0.671558955f,\n    0.736816569f, -0.676092704f,\n    0.732654272f, -0.680600998f,\n    0.728464390f, -0.685083668f,\n    0.724247083f, -0.689540545f,\n    0.720002508f, -0.693971461f,\n    0.715730825f, -0.698376249f,\n    0.711432196f, -0.702754744f,\n    0.707106781f, -0.707106781f,\n    0.702754744f, -0.711432196f,\n    0.698376249f, -0.715730825f,\n    0.693971461f, -0.720002508f,\n    0.689540545f, -0.724247083f,\n    0.685083668f, -0.728464390f,\n    0.680600998f, -0.732654272f,\n    0.676092704f, -0.736816569f,\n    0.671558955f, -0.740951125f,\n    0.666999922f, -0.745057785f,\n    0.662415778f, -0.749136395f,\n    0.657806693f, -0.753186799f,\n    0.653172843f, -0.757208847f,\n    0.648514401f, -0.761202385f,\n    0.643831543f, -0.765167266f,\n    0.639124445f, -0.769103338f,\n    0.634393284f, -0.773010453f,\n    0.629638239f, -0.776888466f,\n    0.624859488f, -0.780737229f,\n    0.620057212f, -0.784556597f,\n    0.615231591f, -0.788346428f,\n    0.610382806f, -0.792106577f,\n    0.605511041f, -0.795836905f,\n    0.600616479f, -0.799537269f,\n    0.595699304f, -0.803207531f,\n    0.590759702f, -0.806847554f,\n    0.585797857f, -0.810457198f,\n    0.580813958f, -0.814036330f,\n    0.575808191f, -0.817584813f,\n    0.570780746f, -0.821102515f,\n    0.565731811f, -0.824589303f,\n    0.560661576f, -0.828045045f,\n    0.555570233f, -0.831469612f,\n    0.550457973f, -0.834862875f,\n    0.545324988f, -0.838224706f,\n    0.540171473f, -0.841554977f,\n    0.534997620f, -0.844853565f,\n    0.529803625f, -0.848120345f,\n    0.524589683f, -0.851355193f,\n    0.519355990f, -0.854557988f,\n    0.514102744f, -0.857728610f,\n    0.508830143f, -0.860866939f,\n    0.503538384f, -0.863972856f,\n    0.498227667f, -0.867046246f,\n    0.492898192f, -0.870086991f,\n    0.487550160f, -0.873094978f,\n    0.482183772f, -0.876070094f,\n    0.476799230f, -0.879012226f,\n    0.471396737f, -0.881921264f,\n    0.465976496f, -0.884797098f,\n    0.460538711f, -0.887639620f,\n    0.455083587f, -0.890448723f,\n    0.449611330f, -0.893224301f,\n    0.444122145f, -0.895966250f,\n    0.438616239f, -0.898674466f,\n    0.433093819f, -0.901348847f,\n    0.427555093f, -0.903989293f,\n    0.422000271f, -0.906595705f,\n    0.416429560f, -0.909167983f,\n    0.410843171f, -0.911706032f,\n    0.405241314f, -0.914209756f,\n    0.399624200f, -0.916679060f,\n    0.393992040f, -0.919113852f,\n    0.388345047f, -0.921514039f,\n    0.382683432f, -0.923879533f,\n    0.377007410f, -0.926210242f,\n    0.371317194f, -0.928506080f,\n    0.365612998f, -0.930766961f,\n    0.359895037f, -0.932992799f,\n    0.354163525f, -0.935183510f,\n    0.348418680f, -0.937339012f,\n    0.342660717f, -0.939459224f,\n    0.336889853f, -0.941544065f,\n    0.331106306f, -0.943593458f,\n    0.325310292f, -0.945607325f,\n    0.319502031f, -0.947585591f,\n    0.313681740f, -0.949528181f,\n    0.307849640f, -0.951435021f,\n    0.302005949f, -0.953306040f,\n    0.296150888f, -0.955141168f,\n    0.290284677f, -0.956940336f,\n    0.284407537f, -0.958703475f,\n    0.278519689f, -0.960430519f,\n    0.272621355f, -0.962121404f,\n    0.266712757f, -0.963776066f,\n    0.260794118f, -0.965394442f,\n    0.254865660f, -0.966976471f,\n    0.248927606f, -0.968522094f,\n    0.242980180f, -0.970031253f,\n    0.237023606f, -0.971503891f,\n    0.231058108f, -0.972939952f,\n    0.225083911f, -0.974339383f,\n    0.219101240f, -0.975702130f,\n    0.213110320f, -0.977028143f,\n    0.207111376f, -0.978317371f,\n    0.201104635f, -0.979569766f,\n    0.195090322f, -0.980785280f,\n    0.189068664f, -0.981963869f,\n    0.183039888f, -0.983105487f,\n    0.177004220f, -0.984210092f,\n    0.170961889f, -0.985277642f,\n    0.164913120f, -0.986308097f,\n    0.158858143f, -0.987301418f,\n    0.152797185f, -0.988257568f,\n    0.146730474f, -0.989176510f,\n    0.140658239f, -0.990058210f,\n    0.134580709f, -0.990902635f,\n    0.128498111f, -0.991709754f,\n    0.122410675f, -0.992479535f,\n    0.116318631f, -0.993211949f,\n    0.110222207f, -0.993906970f,\n    0.104121634f, -0.994564571f,\n    0.098017140f, -0.995184727f,\n    0.091908956f, -0.995767414f,\n    0.085797312f, -0.996312612f,\n    0.079682438f, -0.996820299f,\n    0.073564564f, -0.997290457f,\n    0.067443920f, -0.997723067f,\n    0.061320736f, -0.998118113f,\n    0.055195244f, -0.998475581f,\n    0.049067674f, -0.998795456f,\n    0.042938257f, -0.999077728f,\n    0.036807223f, -0.999322385f,\n    0.030674803f, -0.999529418f,\n    0.024541229f, -0.999698819f,\n    0.018406730f, -0.999830582f,\n    0.012271538f, -0.999924702f,\n    0.006135885f, -0.999981175f\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_2048)\nconst float32_t twiddleCoef_rfft_2048[2048] = {\n    0.000000000f,  1.000000000f,\n    0.003067957f,  0.999995294f,\n    0.006135885f,  0.999981175f,\n    0.009203755f,  0.999957645f,\n    0.012271538f,  0.999924702f,\n    0.015339206f,  0.999882347f,\n    0.018406730f,  0.999830582f,\n    0.021474080f,  0.999769405f,\n    0.024541229f,  0.999698819f,\n    0.027608146f,  0.999618822f,\n    0.030674803f,  0.999529418f,\n    0.033741172f,  0.999430605f,\n    0.036807223f,  0.999322385f,\n    0.039872928f,  0.999204759f,\n    0.042938257f,  0.999077728f,\n    0.046003182f,  0.998941293f,\n    0.049067674f,  0.998795456f,\n    0.052131705f,  0.998640218f,\n    0.055195244f,  0.998475581f,\n    0.058258265f,  0.998301545f,\n    0.061320736f,  0.998118113f,\n    0.064382631f,  0.997925286f,\n    0.067443920f,  0.997723067f,\n    0.070504573f,  0.997511456f,\n    0.073564564f,  0.997290457f,\n    0.076623861f,  0.997060070f,\n    0.079682438f,  0.996820299f,\n    0.082740265f,  0.996571146f,\n    0.085797312f,  0.996312612f,\n    0.088853553f,  0.996044701f,\n    0.091908956f,  0.995767414f,\n    0.094963495f,  0.995480755f,\n    0.098017140f,  0.995184727f,\n    0.101069863f,  0.994879331f,\n    0.104121634f,  0.994564571f,\n    0.107172425f,  0.994240449f,\n    0.110222207f,  0.993906970f,\n    0.113270952f,  0.993564136f,\n    0.116318631f,  0.993211949f,\n    0.119365215f,  0.992850414f,\n    0.122410675f,  0.992479535f,\n    0.125454983f,  0.992099313f,\n    0.128498111f,  0.991709754f,\n    0.131540029f,  0.991310860f,\n    0.134580709f,  0.990902635f,\n    0.137620122f,  0.990485084f,\n    0.140658239f,  0.990058210f,\n    0.143695033f,  0.989622017f,\n    0.146730474f,  0.989176510f,\n    0.149764535f,  0.988721692f,\n    0.152797185f,  0.988257568f,\n    0.155828398f,  0.987784142f,\n    0.158858143f,  0.987301418f,\n    0.161886394f,  0.986809402f,\n    0.164913120f,  0.986308097f,\n    0.167938295f,  0.985797509f,\n    0.170961889f,  0.985277642f,\n    0.173983873f,  0.984748502f,\n    0.177004220f,  0.984210092f,\n    0.180022901f,  0.983662419f,\n    0.183039888f,  0.983105487f,\n    0.186055152f,  0.982539302f,\n    0.189068664f,  0.981963869f,\n    0.192080397f,  0.981379193f,\n    0.195090322f,  0.980785280f,\n    0.198098411f,  0.980182136f,\n    0.201104635f,  0.979569766f,\n    0.204108966f,  0.978948175f,\n    0.207111376f,  0.978317371f,\n    0.210111837f,  0.977677358f,\n    0.213110320f,  0.977028143f,\n    0.216106797f,  0.976369731f,\n    0.219101240f,  0.975702130f,\n    0.222093621f,  0.975025345f,\n    0.225083911f,  0.974339383f,\n    0.228072083f,  0.973644250f,\n    0.231058108f,  0.972939952f,\n    0.234041959f,  0.972226497f,\n    0.237023606f,  0.971503891f,\n    0.240003022f,  0.970772141f,\n    0.242980180f,  0.970031253f,\n    0.245955050f,  0.969281235f,\n    0.248927606f,  0.968522094f,\n    0.251897818f,  0.967753837f,\n    0.254865660f,  0.966976471f,\n    0.257831102f,  0.966190003f,\n    0.260794118f,  0.965394442f,\n    0.263754679f,  0.964589793f,\n    0.266712757f,  0.963776066f,\n    0.269668326f,  0.962953267f,\n    0.272621355f,  0.962121404f,\n    0.275571819f,  0.961280486f,\n    0.278519689f,  0.960430519f,\n    0.281464938f,  0.959571513f,\n    0.284407537f,  0.958703475f,\n    0.287347460f,  0.957826413f,\n    0.290284677f,  0.956940336f,\n    0.293219163f,  0.956045251f,\n    0.296150888f,  0.955141168f,\n    0.299079826f,  0.954228095f,\n    0.302005949f,  0.953306040f,\n    0.304929230f,  0.952375013f,\n    0.307849640f,  0.951435021f,\n    0.310767153f,  0.950486074f,\n    0.313681740f,  0.949528181f,\n    0.316593376f,  0.948561350f,\n    0.319502031f,  0.947585591f,\n    0.322407679f,  0.946600913f,\n    0.325310292f,  0.945607325f,\n    0.328209844f,  0.944604837f,\n    0.331106306f,  0.943593458f,\n    0.333999651f,  0.942573198f,\n    0.336889853f,  0.941544065f,\n    0.339776884f,  0.940506071f,\n    0.342660717f,  0.939459224f,\n    0.345541325f,  0.938403534f,\n    0.348418680f,  0.937339012f,\n    0.351292756f,  0.936265667f,\n    0.354163525f,  0.935183510f,\n    0.357030961f,  0.934092550f,\n    0.359895037f,  0.932992799f,\n    0.362755724f,  0.931884266f,\n    0.365612998f,  0.930766961f,\n    0.368466830f,  0.929640896f,\n    0.371317194f,  0.928506080f,\n    0.374164063f,  0.927362526f,\n    0.377007410f,  0.926210242f,\n    0.379847209f,  0.925049241f,\n    0.382683432f,  0.923879533f,\n    0.385516054f,  0.922701128f,\n    0.388345047f,  0.921514039f,\n    0.391170384f,  0.920318277f,\n    0.393992040f,  0.919113852f,\n    0.396809987f,  0.917900776f,\n    0.399624200f,  0.916679060f,\n    0.402434651f,  0.915448716f,\n    0.405241314f,  0.914209756f,\n    0.408044163f,  0.912962190f,\n    0.410843171f,  0.911706032f,\n    0.413638312f,  0.910441292f,\n    0.416429560f,  0.909167983f,\n    0.419216888f,  0.907886116f,\n    0.422000271f,  0.906595705f,\n    0.424779681f,  0.905296759f,\n    0.427555093f,  0.903989293f,\n    0.430326481f,  0.902673318f,\n    0.433093819f,  0.901348847f,\n    0.435857080f,  0.900015892f,\n    0.438616239f,  0.898674466f,\n    0.441371269f,  0.897324581f,\n    0.444122145f,  0.895966250f,\n    0.446868840f,  0.894599486f,\n    0.449611330f,  0.893224301f,\n    0.452349587f,  0.891840709f,\n    0.455083587f,  0.890448723f,\n    0.457813304f,  0.889048356f,\n    0.460538711f,  0.887639620f,\n    0.463259784f,  0.886222530f,\n    0.465976496f,  0.884797098f,\n    0.468688822f,  0.883363339f,\n    0.471396737f,  0.881921264f,\n    0.474100215f,  0.880470889f,\n    0.476799230f,  0.879012226f,\n    0.479493758f,  0.877545290f,\n    0.482183772f,  0.876070094f,\n    0.484869248f,  0.874586652f,\n    0.487550160f,  0.873094978f,\n    0.490226483f,  0.871595087f,\n    0.492898192f,  0.870086991f,\n    0.495565262f,  0.868570706f,\n    0.498227667f,  0.867046246f,\n    0.500885383f,  0.865513624f,\n    0.503538384f,  0.863972856f,\n    0.506186645f,  0.862423956f,\n    0.508830143f,  0.860866939f,\n    0.511468850f,  0.859301818f,\n    0.514102744f,  0.857728610f,\n    0.516731799f,  0.856147328f,\n    0.519355990f,  0.854557988f,\n    0.521975293f,  0.852960605f,\n    0.524589683f,  0.851355193f,\n    0.527199135f,  0.849741768f,\n    0.529803625f,  0.848120345f,\n    0.532403128f,  0.846490939f,\n    0.534997620f,  0.844853565f,\n    0.537587076f,  0.843208240f,\n    0.540171473f,  0.841554977f,\n    0.542750785f,  0.839893794f,\n    0.545324988f,  0.838224706f,\n    0.547894059f,  0.836547727f,\n    0.550457973f,  0.834862875f,\n    0.553016706f,  0.833170165f,\n    0.555570233f,  0.831469612f,\n    0.558118531f,  0.829761234f,\n    0.560661576f,  0.828045045f,\n    0.563199344f,  0.826321063f,\n    0.565731811f,  0.824589303f,\n    0.568258953f,  0.822849781f,\n    0.570780746f,  0.821102515f,\n    0.573297167f,  0.819347520f,\n    0.575808191f,  0.817584813f,\n    0.578313796f,  0.815814411f,\n    0.580813958f,  0.814036330f,\n    0.583308653f,  0.812250587f,\n    0.585797857f,  0.810457198f,\n    0.588281548f,  0.808656182f,\n    0.590759702f,  0.806847554f,\n    0.593232295f,  0.805031331f,\n    0.595699304f,  0.803207531f,\n    0.598160707f,  0.801376172f,\n    0.600616479f,  0.799537269f,\n    0.603066599f,  0.797690841f,\n    0.605511041f,  0.795836905f,\n    0.607949785f,  0.793975478f,\n    0.610382806f,  0.792106577f,\n    0.612810082f,  0.790230221f,\n    0.615231591f,  0.788346428f,\n    0.617647308f,  0.786455214f,\n    0.620057212f,  0.784556597f,\n    0.622461279f,  0.782650596f,\n    0.624859488f,  0.780737229f,\n    0.627251815f,  0.778816512f,\n    0.629638239f,  0.776888466f,\n    0.632018736f,  0.774953107f,\n    0.634393284f,  0.773010453f,\n    0.636761861f,  0.771060524f,\n    0.639124445f,  0.769103338f,\n    0.641481013f,  0.767138912f,\n    0.643831543f,  0.765167266f,\n    0.646176013f,  0.763188417f,\n    0.648514401f,  0.761202385f,\n    0.650846685f,  0.759209189f,\n    0.653172843f,  0.757208847f,\n    0.655492853f,  0.755201377f,\n    0.657806693f,  0.753186799f,\n    0.660114342f,  0.751165132f,\n    0.662415778f,  0.749136395f,\n    0.664710978f,  0.747100606f,\n    0.666999922f,  0.745057785f,\n    0.669282588f,  0.743007952f,\n    0.671558955f,  0.740951125f,\n    0.673829000f,  0.738887324f,\n    0.676092704f,  0.736816569f,\n    0.678350043f,  0.734738878f,\n    0.680600998f,  0.732654272f,\n    0.682845546f,  0.730562769f,\n    0.685083668f,  0.728464390f,\n    0.687315341f,  0.726359155f,\n    0.689540545f,  0.724247083f,\n    0.691759258f,  0.722128194f,\n    0.693971461f,  0.720002508f,\n    0.696177131f,  0.717870045f,\n    0.698376249f,  0.715730825f,\n    0.700568794f,  0.713584869f,\n    0.702754744f,  0.711432196f,\n    0.704934080f,  0.709272826f,\n    0.707106781f,  0.707106781f,\n    0.709272826f,  0.704934080f,\n    0.711432196f,  0.702754744f,\n    0.713584869f,  0.700568794f,\n    0.715730825f,  0.698376249f,\n    0.717870045f,  0.696177131f,\n    0.720002508f,  0.693971461f,\n    0.722128194f,  0.691759258f,\n    0.724247083f,  0.689540545f,\n    0.726359155f,  0.687315341f,\n    0.728464390f,  0.685083668f,\n    0.730562769f,  0.682845546f,\n    0.732654272f,  0.680600998f,\n    0.734738878f,  0.678350043f,\n    0.736816569f,  0.676092704f,\n    0.738887324f,  0.673829000f,\n    0.740951125f,  0.671558955f,\n    0.743007952f,  0.669282588f,\n    0.745057785f,  0.666999922f,\n    0.747100606f,  0.664710978f,\n    0.749136395f,  0.662415778f,\n    0.751165132f,  0.660114342f,\n    0.753186799f,  0.657806693f,\n    0.755201377f,  0.655492853f,\n    0.757208847f,  0.653172843f,\n    0.759209189f,  0.650846685f,\n    0.761202385f,  0.648514401f,\n    0.763188417f,  0.646176013f,\n    0.765167266f,  0.643831543f,\n    0.767138912f,  0.641481013f,\n    0.769103338f,  0.639124445f,\n    0.771060524f,  0.636761861f,\n    0.773010453f,  0.634393284f,\n    0.774953107f,  0.632018736f,\n    0.776888466f,  0.629638239f,\n    0.778816512f,  0.627251815f,\n    0.780737229f,  0.624859488f,\n    0.782650596f,  0.622461279f,\n    0.784556597f,  0.620057212f,\n    0.786455214f,  0.617647308f,\n    0.788346428f,  0.615231591f,\n    0.790230221f,  0.612810082f,\n    0.792106577f,  0.610382806f,\n    0.793975478f,  0.607949785f,\n    0.795836905f,  0.605511041f,\n    0.797690841f,  0.603066599f,\n    0.799537269f,  0.600616479f,\n    0.801376172f,  0.598160707f,\n    0.803207531f,  0.595699304f,\n    0.805031331f,  0.593232295f,\n    0.806847554f,  0.590759702f,\n    0.808656182f,  0.588281548f,\n    0.810457198f,  0.585797857f,\n    0.812250587f,  0.583308653f,\n    0.814036330f,  0.580813958f,\n    0.815814411f,  0.578313796f,\n    0.817584813f,  0.575808191f,\n    0.819347520f,  0.573297167f,\n    0.821102515f,  0.570780746f,\n    0.822849781f,  0.568258953f,\n    0.824589303f,  0.565731811f,\n    0.826321063f,  0.563199344f,\n    0.828045045f,  0.560661576f,\n    0.829761234f,  0.558118531f,\n    0.831469612f,  0.555570233f,\n    0.833170165f,  0.553016706f,\n    0.834862875f,  0.550457973f,\n    0.836547727f,  0.547894059f,\n    0.838224706f,  0.545324988f,\n    0.839893794f,  0.542750785f,\n    0.841554977f,  0.540171473f,\n    0.843208240f,  0.537587076f,\n    0.844853565f,  0.534997620f,\n    0.846490939f,  0.532403128f,\n    0.848120345f,  0.529803625f,\n    0.849741768f,  0.527199135f,\n    0.851355193f,  0.524589683f,\n    0.852960605f,  0.521975293f,\n    0.854557988f,  0.519355990f,\n    0.856147328f,  0.516731799f,\n    0.857728610f,  0.514102744f,\n    0.859301818f,  0.511468850f,\n    0.860866939f,  0.508830143f,\n    0.862423956f,  0.506186645f,\n    0.863972856f,  0.503538384f,\n    0.865513624f,  0.500885383f,\n    0.867046246f,  0.498227667f,\n    0.868570706f,  0.495565262f,\n    0.870086991f,  0.492898192f,\n    0.871595087f,  0.490226483f,\n    0.873094978f,  0.487550160f,\n    0.874586652f,  0.484869248f,\n    0.876070094f,  0.482183772f,\n    0.877545290f,  0.479493758f,\n    0.879012226f,  0.476799230f,\n    0.880470889f,  0.474100215f,\n    0.881921264f,  0.471396737f,\n    0.883363339f,  0.468688822f,\n    0.884797098f,  0.465976496f,\n    0.886222530f,  0.463259784f,\n    0.887639620f,  0.460538711f,\n    0.889048356f,  0.457813304f,\n    0.890448723f,  0.455083587f,\n    0.891840709f,  0.452349587f,\n    0.893224301f,  0.449611330f,\n    0.894599486f,  0.446868840f,\n    0.895966250f,  0.444122145f,\n    0.897324581f,  0.441371269f,\n    0.898674466f,  0.438616239f,\n    0.900015892f,  0.435857080f,\n    0.901348847f,  0.433093819f,\n    0.902673318f,  0.430326481f,\n    0.903989293f,  0.427555093f,\n    0.905296759f,  0.424779681f,\n    0.906595705f,  0.422000271f,\n    0.907886116f,  0.419216888f,\n    0.909167983f,  0.416429560f,\n    0.910441292f,  0.413638312f,\n    0.911706032f,  0.410843171f,\n    0.912962190f,  0.408044163f,\n    0.914209756f,  0.405241314f,\n    0.915448716f,  0.402434651f,\n    0.916679060f,  0.399624200f,\n    0.917900776f,  0.396809987f,\n    0.919113852f,  0.393992040f,\n    0.920318277f,  0.391170384f,\n    0.921514039f,  0.388345047f,\n    0.922701128f,  0.385516054f,\n    0.923879533f,  0.382683432f,\n    0.925049241f,  0.379847209f,\n    0.926210242f,  0.377007410f,\n    0.927362526f,  0.374164063f,\n    0.928506080f,  0.371317194f,\n    0.929640896f,  0.368466830f,\n    0.930766961f,  0.365612998f,\n    0.931884266f,  0.362755724f,\n    0.932992799f,  0.359895037f,\n    0.934092550f,  0.357030961f,\n    0.935183510f,  0.354163525f,\n    0.936265667f,  0.351292756f,\n    0.937339012f,  0.348418680f,\n    0.938403534f,  0.345541325f,\n    0.939459224f,  0.342660717f,\n    0.940506071f,  0.339776884f,\n    0.941544065f,  0.336889853f,\n    0.942573198f,  0.333999651f,\n    0.943593458f,  0.331106306f,\n    0.944604837f,  0.328209844f,\n    0.945607325f,  0.325310292f,\n    0.946600913f,  0.322407679f,\n    0.947585591f,  0.319502031f,\n    0.948561350f,  0.316593376f,\n    0.949528181f,  0.313681740f,\n    0.950486074f,  0.310767153f,\n    0.951435021f,  0.307849640f,\n    0.952375013f,  0.304929230f,\n    0.953306040f,  0.302005949f,\n    0.954228095f,  0.299079826f,\n    0.955141168f,  0.296150888f,\n    0.956045251f,  0.293219163f,\n    0.956940336f,  0.290284677f,\n    0.957826413f,  0.287347460f,\n    0.958703475f,  0.284407537f,\n    0.959571513f,  0.281464938f,\n    0.960430519f,  0.278519689f,\n    0.961280486f,  0.275571819f,\n    0.962121404f,  0.272621355f,\n    0.962953267f,  0.269668326f,\n    0.963776066f,  0.266712757f,\n    0.964589793f,  0.263754679f,\n    0.965394442f,  0.260794118f,\n    0.966190003f,  0.257831102f,\n    0.966976471f,  0.254865660f,\n    0.967753837f,  0.251897818f,\n    0.968522094f,  0.248927606f,\n    0.969281235f,  0.245955050f,\n    0.970031253f,  0.242980180f,\n    0.970772141f,  0.240003022f,\n    0.971503891f,  0.237023606f,\n    0.972226497f,  0.234041959f,\n    0.972939952f,  0.231058108f,\n    0.973644250f,  0.228072083f,\n    0.974339383f,  0.225083911f,\n    0.975025345f,  0.222093621f,\n    0.975702130f,  0.219101240f,\n    0.976369731f,  0.216106797f,\n    0.977028143f,  0.213110320f,\n    0.977677358f,  0.210111837f,\n    0.978317371f,  0.207111376f,\n    0.978948175f,  0.204108966f,\n    0.979569766f,  0.201104635f,\n    0.980182136f,  0.198098411f,\n    0.980785280f,  0.195090322f,\n    0.981379193f,  0.192080397f,\n    0.981963869f,  0.189068664f,\n    0.982539302f,  0.186055152f,\n    0.983105487f,  0.183039888f,\n    0.983662419f,  0.180022901f,\n    0.984210092f,  0.177004220f,\n    0.984748502f,  0.173983873f,\n    0.985277642f,  0.170961889f,\n    0.985797509f,  0.167938295f,\n    0.986308097f,  0.164913120f,\n    0.986809402f,  0.161886394f,\n    0.987301418f,  0.158858143f,\n    0.987784142f,  0.155828398f,\n    0.988257568f,  0.152797185f,\n    0.988721692f,  0.149764535f,\n    0.989176510f,  0.146730474f,\n    0.989622017f,  0.143695033f,\n    0.990058210f,  0.140658239f,\n    0.990485084f,  0.137620122f,\n    0.990902635f,  0.134580709f,\n    0.991310860f,  0.131540029f,\n    0.991709754f,  0.128498111f,\n    0.992099313f,  0.125454983f,\n    0.992479535f,  0.122410675f,\n    0.992850414f,  0.119365215f,\n    0.993211949f,  0.116318631f,\n    0.993564136f,  0.113270952f,\n    0.993906970f,  0.110222207f,\n    0.994240449f,  0.107172425f,\n    0.994564571f,  0.104121634f,\n    0.994879331f,  0.101069863f,\n    0.995184727f,  0.098017140f,\n    0.995480755f,  0.094963495f,\n    0.995767414f,  0.091908956f,\n    0.996044701f,  0.088853553f,\n    0.996312612f,  0.085797312f,\n    0.996571146f,  0.082740265f,\n    0.996820299f,  0.079682438f,\n    0.997060070f,  0.076623861f,\n    0.997290457f,  0.073564564f,\n    0.997511456f,  0.070504573f,\n    0.997723067f,  0.067443920f,\n    0.997925286f,  0.064382631f,\n    0.998118113f,  0.061320736f,\n    0.998301545f,  0.058258265f,\n    0.998475581f,  0.055195244f,\n    0.998640218f,  0.052131705f,\n    0.998795456f,  0.049067674f,\n    0.998941293f,  0.046003182f,\n    0.999077728f,  0.042938257f,\n    0.999204759f,  0.039872928f,\n    0.999322385f,  0.036807223f,\n    0.999430605f,  0.033741172f,\n    0.999529418f,  0.030674803f,\n    0.999618822f,  0.027608146f,\n    0.999698819f,  0.024541229f,\n    0.999769405f,  0.021474080f,\n    0.999830582f,  0.018406730f,\n    0.999882347f,  0.015339206f,\n    0.999924702f,  0.012271538f,\n    0.999957645f,  0.009203755f,\n    0.999981175f,  0.006135885f,\n    0.999995294f,  0.003067957f,\n    1.000000000f,  0.000000000f,\n    0.999995294f, -0.003067957f,\n    0.999981175f, -0.006135885f,\n    0.999957645f, -0.009203755f,\n    0.999924702f, -0.012271538f,\n    0.999882347f, -0.015339206f,\n    0.999830582f, -0.018406730f,\n    0.999769405f, -0.021474080f,\n    0.999698819f, -0.024541229f,\n    0.999618822f, -0.027608146f,\n    0.999529418f, -0.030674803f,\n    0.999430605f, -0.033741172f,\n    0.999322385f, -0.036807223f,\n    0.999204759f, -0.039872928f,\n    0.999077728f, -0.042938257f,\n    0.998941293f, -0.046003182f,\n    0.998795456f, -0.049067674f,\n    0.998640218f, -0.052131705f,\n    0.998475581f, -0.055195244f,\n    0.998301545f, -0.058258265f,\n    0.998118113f, -0.061320736f,\n    0.997925286f, -0.064382631f,\n    0.997723067f, -0.067443920f,\n    0.997511456f, -0.070504573f,\n    0.997290457f, -0.073564564f,\n    0.997060070f, -0.076623861f,\n    0.996820299f, -0.079682438f,\n    0.996571146f, -0.082740265f,\n    0.996312612f, -0.085797312f,\n    0.996044701f, -0.088853553f,\n    0.995767414f, -0.091908956f,\n    0.995480755f, -0.094963495f,\n    0.995184727f, -0.098017140f,\n    0.994879331f, -0.101069863f,\n    0.994564571f, -0.104121634f,\n    0.994240449f, -0.107172425f,\n    0.993906970f, -0.110222207f,\n    0.993564136f, -0.113270952f,\n    0.993211949f, -0.116318631f,\n    0.992850414f, -0.119365215f,\n    0.992479535f, -0.122410675f,\n    0.992099313f, -0.125454983f,\n    0.991709754f, -0.128498111f,\n    0.991310860f, -0.131540029f,\n    0.990902635f, -0.134580709f,\n    0.990485084f, -0.137620122f,\n    0.990058210f, -0.140658239f,\n    0.989622017f, -0.143695033f,\n    0.989176510f, -0.146730474f,\n    0.988721692f, -0.149764535f,\n    0.988257568f, -0.152797185f,\n    0.987784142f, -0.155828398f,\n    0.987301418f, -0.158858143f,\n    0.986809402f, -0.161886394f,\n    0.986308097f, -0.164913120f,\n    0.985797509f, -0.167938295f,\n    0.985277642f, -0.170961889f,\n    0.984748502f, -0.173983873f,\n    0.984210092f, -0.177004220f,\n    0.983662419f, -0.180022901f,\n    0.983105487f, -0.183039888f,\n    0.982539302f, -0.186055152f,\n    0.981963869f, -0.189068664f,\n    0.981379193f, -0.192080397f,\n    0.980785280f, -0.195090322f,\n    0.980182136f, -0.198098411f,\n    0.979569766f, -0.201104635f,\n    0.978948175f, -0.204108966f,\n    0.978317371f, -0.207111376f,\n    0.977677358f, -0.210111837f,\n    0.977028143f, -0.213110320f,\n    0.976369731f, -0.216106797f,\n    0.975702130f, -0.219101240f,\n    0.975025345f, -0.222093621f,\n    0.974339383f, -0.225083911f,\n    0.973644250f, -0.228072083f,\n    0.972939952f, -0.231058108f,\n    0.972226497f, -0.234041959f,\n    0.971503891f, -0.237023606f,\n    0.970772141f, -0.240003022f,\n    0.970031253f, -0.242980180f,\n    0.969281235f, -0.245955050f,\n    0.968522094f, -0.248927606f,\n    0.967753837f, -0.251897818f,\n    0.966976471f, -0.254865660f,\n    0.966190003f, -0.257831102f,\n    0.965394442f, -0.260794118f,\n    0.964589793f, -0.263754679f,\n    0.963776066f, -0.266712757f,\n    0.962953267f, -0.269668326f,\n    0.962121404f, -0.272621355f,\n    0.961280486f, -0.275571819f,\n    0.960430519f, -0.278519689f,\n    0.959571513f, -0.281464938f,\n    0.958703475f, -0.284407537f,\n    0.957826413f, -0.287347460f,\n    0.956940336f, -0.290284677f,\n    0.956045251f, -0.293219163f,\n    0.955141168f, -0.296150888f,\n    0.954228095f, -0.299079826f,\n    0.953306040f, -0.302005949f,\n    0.952375013f, -0.304929230f,\n    0.951435021f, -0.307849640f,\n    0.950486074f, -0.310767153f,\n    0.949528181f, -0.313681740f,\n    0.948561350f, -0.316593376f,\n    0.947585591f, -0.319502031f,\n    0.946600913f, -0.322407679f,\n    0.945607325f, -0.325310292f,\n    0.944604837f, -0.328209844f,\n    0.943593458f, -0.331106306f,\n    0.942573198f, -0.333999651f,\n    0.941544065f, -0.336889853f,\n    0.940506071f, -0.339776884f,\n    0.939459224f, -0.342660717f,\n    0.938403534f, -0.345541325f,\n    0.937339012f, -0.348418680f,\n    0.936265667f, -0.351292756f,\n    0.935183510f, -0.354163525f,\n    0.934092550f, -0.357030961f,\n    0.932992799f, -0.359895037f,\n    0.931884266f, -0.362755724f,\n    0.930766961f, -0.365612998f,\n    0.929640896f, -0.368466830f,\n    0.928506080f, -0.371317194f,\n    0.927362526f, -0.374164063f,\n    0.926210242f, -0.377007410f,\n    0.925049241f, -0.379847209f,\n    0.923879533f, -0.382683432f,\n    0.922701128f, -0.385516054f,\n    0.921514039f, -0.388345047f,\n    0.920318277f, -0.391170384f,\n    0.919113852f, -0.393992040f,\n    0.917900776f, -0.396809987f,\n    0.916679060f, -0.399624200f,\n    0.915448716f, -0.402434651f,\n    0.914209756f, -0.405241314f,\n    0.912962190f, -0.408044163f,\n    0.911706032f, -0.410843171f,\n    0.910441292f, -0.413638312f,\n    0.909167983f, -0.416429560f,\n    0.907886116f, -0.419216888f,\n    0.906595705f, -0.422000271f,\n    0.905296759f, -0.424779681f,\n    0.903989293f, -0.427555093f,\n    0.902673318f, -0.430326481f,\n    0.901348847f, -0.433093819f,\n    0.900015892f, -0.435857080f,\n    0.898674466f, -0.438616239f,\n    0.897324581f, -0.441371269f,\n    0.895966250f, -0.444122145f,\n    0.894599486f, -0.446868840f,\n    0.893224301f, -0.449611330f,\n    0.891840709f, -0.452349587f,\n    0.890448723f, -0.455083587f,\n    0.889048356f, -0.457813304f,\n    0.887639620f, -0.460538711f,\n    0.886222530f, -0.463259784f,\n    0.884797098f, -0.465976496f,\n    0.883363339f, -0.468688822f,\n    0.881921264f, -0.471396737f,\n    0.880470889f, -0.474100215f,\n    0.879012226f, -0.476799230f,\n    0.877545290f, -0.479493758f,\n    0.876070094f, -0.482183772f,\n    0.874586652f, -0.484869248f,\n    0.873094978f, -0.487550160f,\n    0.871595087f, -0.490226483f,\n    0.870086991f, -0.492898192f,\n    0.868570706f, -0.495565262f,\n    0.867046246f, -0.498227667f,\n    0.865513624f, -0.500885383f,\n    0.863972856f, -0.503538384f,\n    0.862423956f, -0.506186645f,\n    0.860866939f, -0.508830143f,\n    0.859301818f, -0.511468850f,\n    0.857728610f, -0.514102744f,\n    0.856147328f, -0.516731799f,\n    0.854557988f, -0.519355990f,\n    0.852960605f, -0.521975293f,\n    0.851355193f, -0.524589683f,\n    0.849741768f, -0.527199135f,\n    0.848120345f, -0.529803625f,\n    0.846490939f, -0.532403128f,\n    0.844853565f, -0.534997620f,\n    0.843208240f, -0.537587076f,\n    0.841554977f, -0.540171473f,\n    0.839893794f, -0.542750785f,\n    0.838224706f, -0.545324988f,\n    0.836547727f, -0.547894059f,\n    0.834862875f, -0.550457973f,\n    0.833170165f, -0.553016706f,\n    0.831469612f, -0.555570233f,\n    0.829761234f, -0.558118531f,\n    0.828045045f, -0.560661576f,\n    0.826321063f, -0.563199344f,\n    0.824589303f, -0.565731811f,\n    0.822849781f, -0.568258953f,\n    0.821102515f, -0.570780746f,\n    0.819347520f, -0.573297167f,\n    0.817584813f, -0.575808191f,\n    0.815814411f, -0.578313796f,\n    0.814036330f, -0.580813958f,\n    0.812250587f, -0.583308653f,\n    0.810457198f, -0.585797857f,\n    0.808656182f, -0.588281548f,\n    0.806847554f, -0.590759702f,\n    0.805031331f, -0.593232295f,\n    0.803207531f, -0.595699304f,\n    0.801376172f, -0.598160707f,\n    0.799537269f, -0.600616479f,\n    0.797690841f, -0.603066599f,\n    0.795836905f, -0.605511041f,\n    0.793975478f, -0.607949785f,\n    0.792106577f, -0.610382806f,\n    0.790230221f, -0.612810082f,\n    0.788346428f, -0.615231591f,\n    0.786455214f, -0.617647308f,\n    0.784556597f, -0.620057212f,\n    0.782650596f, -0.622461279f,\n    0.780737229f, -0.624859488f,\n    0.778816512f, -0.627251815f,\n    0.776888466f, -0.629638239f,\n    0.774953107f, -0.632018736f,\n    0.773010453f, -0.634393284f,\n    0.771060524f, -0.636761861f,\n    0.769103338f, -0.639124445f,\n    0.767138912f, -0.641481013f,\n    0.765167266f, -0.643831543f,\n    0.763188417f, -0.646176013f,\n    0.761202385f, -0.648514401f,\n    0.759209189f, -0.650846685f,\n    0.757208847f, -0.653172843f,\n    0.755201377f, -0.655492853f,\n    0.753186799f, -0.657806693f,\n    0.751165132f, -0.660114342f,\n    0.749136395f, -0.662415778f,\n    0.747100606f, -0.664710978f,\n    0.745057785f, -0.666999922f,\n    0.743007952f, -0.669282588f,\n    0.740951125f, -0.671558955f,\n    0.738887324f, -0.673829000f,\n    0.736816569f, -0.676092704f,\n    0.734738878f, -0.678350043f,\n    0.732654272f, -0.680600998f,\n    0.730562769f, -0.682845546f,\n    0.728464390f, -0.685083668f,\n    0.726359155f, -0.687315341f,\n    0.724247083f, -0.689540545f,\n    0.722128194f, -0.691759258f,\n    0.720002508f, -0.693971461f,\n    0.717870045f, -0.696177131f,\n    0.715730825f, -0.698376249f,\n    0.713584869f, -0.700568794f,\n    0.711432196f, -0.702754744f,\n    0.709272826f, -0.704934080f,\n    0.707106781f, -0.707106781f,\n    0.704934080f, -0.709272826f,\n    0.702754744f, -0.711432196f,\n    0.700568794f, -0.713584869f,\n    0.698376249f, -0.715730825f,\n    0.696177131f, -0.717870045f,\n    0.693971461f, -0.720002508f,\n    0.691759258f, -0.722128194f,\n    0.689540545f, -0.724247083f,\n    0.687315341f, -0.726359155f,\n    0.685083668f, -0.728464390f,\n    0.682845546f, -0.730562769f,\n    0.680600998f, -0.732654272f,\n    0.678350043f, -0.734738878f,\n    0.676092704f, -0.736816569f,\n    0.673829000f, -0.738887324f,\n    0.671558955f, -0.740951125f,\n    0.669282588f, -0.743007952f,\n    0.666999922f, -0.745057785f,\n    0.664710978f, -0.747100606f,\n    0.662415778f, -0.749136395f,\n    0.660114342f, -0.751165132f,\n    0.657806693f, -0.753186799f,\n    0.655492853f, -0.755201377f,\n    0.653172843f, -0.757208847f,\n    0.650846685f, -0.759209189f,\n    0.648514401f, -0.761202385f,\n    0.646176013f, -0.763188417f,\n    0.643831543f, -0.765167266f,\n    0.641481013f, -0.767138912f,\n    0.639124445f, -0.769103338f,\n    0.636761861f, -0.771060524f,\n    0.634393284f, -0.773010453f,\n    0.632018736f, -0.774953107f,\n    0.629638239f, -0.776888466f,\n    0.627251815f, -0.778816512f,\n    0.624859488f, -0.780737229f,\n    0.622461279f, -0.782650596f,\n    0.620057212f, -0.784556597f,\n    0.617647308f, -0.786455214f,\n    0.615231591f, -0.788346428f,\n    0.612810082f, -0.790230221f,\n    0.610382806f, -0.792106577f,\n    0.607949785f, -0.793975478f,\n    0.605511041f, -0.795836905f,\n    0.603066599f, -0.797690841f,\n    0.600616479f, -0.799537269f,\n    0.598160707f, -0.801376172f,\n    0.595699304f, -0.803207531f,\n    0.593232295f, -0.805031331f,\n    0.590759702f, -0.806847554f,\n    0.588281548f, -0.808656182f,\n    0.585797857f, -0.810457198f,\n    0.583308653f, -0.812250587f,\n    0.580813958f, -0.814036330f,\n    0.578313796f, -0.815814411f,\n    0.575808191f, -0.817584813f,\n    0.573297167f, -0.819347520f,\n    0.570780746f, -0.821102515f,\n    0.568258953f, -0.822849781f,\n    0.565731811f, -0.824589303f,\n    0.563199344f, -0.826321063f,\n    0.560661576f, -0.828045045f,\n    0.558118531f, -0.829761234f,\n    0.555570233f, -0.831469612f,\n    0.553016706f, -0.833170165f,\n    0.550457973f, -0.834862875f,\n    0.547894059f, -0.836547727f,\n    0.545324988f, -0.838224706f,\n    0.542750785f, -0.839893794f,\n    0.540171473f, -0.841554977f,\n    0.537587076f, -0.843208240f,\n    0.534997620f, -0.844853565f,\n    0.532403128f, -0.846490939f,\n    0.529803625f, -0.848120345f,\n    0.527199135f, -0.849741768f,\n    0.524589683f, -0.851355193f,\n    0.521975293f, -0.852960605f,\n    0.519355990f, -0.854557988f,\n    0.516731799f, -0.856147328f,\n    0.514102744f, -0.857728610f,\n    0.511468850f, -0.859301818f,\n    0.508830143f, -0.860866939f,\n    0.506186645f, -0.862423956f,\n    0.503538384f, -0.863972856f,\n    0.500885383f, -0.865513624f,\n    0.498227667f, -0.867046246f,\n    0.495565262f, -0.868570706f,\n    0.492898192f, -0.870086991f,\n    0.490226483f, -0.871595087f,\n    0.487550160f, -0.873094978f,\n    0.484869248f, -0.874586652f,\n    0.482183772f, -0.876070094f,\n    0.479493758f, -0.877545290f,\n    0.476799230f, -0.879012226f,\n    0.474100215f, -0.880470889f,\n    0.471396737f, -0.881921264f,\n    0.468688822f, -0.883363339f,\n    0.465976496f, -0.884797098f,\n    0.463259784f, -0.886222530f,\n    0.460538711f, -0.887639620f,\n    0.457813304f, -0.889048356f,\n    0.455083587f, -0.890448723f,\n    0.452349587f, -0.891840709f,\n    0.449611330f, -0.893224301f,\n    0.446868840f, -0.894599486f,\n    0.444122145f, -0.895966250f,\n    0.441371269f, -0.897324581f,\n    0.438616239f, -0.898674466f,\n    0.435857080f, -0.900015892f,\n    0.433093819f, -0.901348847f,\n    0.430326481f, -0.902673318f,\n    0.427555093f, -0.903989293f,\n    0.424779681f, -0.905296759f,\n    0.422000271f, -0.906595705f,\n    0.419216888f, -0.907886116f,\n    0.416429560f, -0.909167983f,\n    0.413638312f, -0.910441292f,\n    0.410843171f, -0.911706032f,\n    0.408044163f, -0.912962190f,\n    0.405241314f, -0.914209756f,\n    0.402434651f, -0.915448716f,\n    0.399624200f, -0.916679060f,\n    0.396809987f, -0.917900776f,\n    0.393992040f, -0.919113852f,\n    0.391170384f, -0.920318277f,\n    0.388345047f, -0.921514039f,\n    0.385516054f, -0.922701128f,\n    0.382683432f, -0.923879533f,\n    0.379847209f, -0.925049241f,\n    0.377007410f, -0.926210242f,\n    0.374164063f, -0.927362526f,\n    0.371317194f, -0.928506080f,\n    0.368466830f, -0.929640896f,\n    0.365612998f, -0.930766961f,\n    0.362755724f, -0.931884266f,\n    0.359895037f, -0.932992799f,\n    0.357030961f, -0.934092550f,\n    0.354163525f, -0.935183510f,\n    0.351292756f, -0.936265667f,\n    0.348418680f, -0.937339012f,\n    0.345541325f, -0.938403534f,\n    0.342660717f, -0.939459224f,\n    0.339776884f, -0.940506071f,\n    0.336889853f, -0.941544065f,\n    0.333999651f, -0.942573198f,\n    0.331106306f, -0.943593458f,\n    0.328209844f, -0.944604837f,\n    0.325310292f, -0.945607325f,\n    0.322407679f, -0.946600913f,\n    0.319502031f, -0.947585591f,\n    0.316593376f, -0.948561350f,\n    0.313681740f, -0.949528181f,\n    0.310767153f, -0.950486074f,\n    0.307849640f, -0.951435021f,\n    0.304929230f, -0.952375013f,\n    0.302005949f, -0.953306040f,\n    0.299079826f, -0.954228095f,\n    0.296150888f, -0.955141168f,\n    0.293219163f, -0.956045251f,\n    0.290284677f, -0.956940336f,\n    0.287347460f, -0.957826413f,\n    0.284407537f, -0.958703475f,\n    0.281464938f, -0.959571513f,\n    0.278519689f, -0.960430519f,\n    0.275571819f, -0.961280486f,\n    0.272621355f, -0.962121404f,\n    0.269668326f, -0.962953267f,\n    0.266712757f, -0.963776066f,\n    0.263754679f, -0.964589793f,\n    0.260794118f, -0.965394442f,\n    0.257831102f, -0.966190003f,\n    0.254865660f, -0.966976471f,\n    0.251897818f, -0.967753837f,\n    0.248927606f, -0.968522094f,\n    0.245955050f, -0.969281235f,\n    0.242980180f, -0.970031253f,\n    0.240003022f, -0.970772141f,\n    0.237023606f, -0.971503891f,\n    0.234041959f, -0.972226497f,\n    0.231058108f, -0.972939952f,\n    0.228072083f, -0.973644250f,\n    0.225083911f, -0.974339383f,\n    0.222093621f, -0.975025345f,\n    0.219101240f, -0.975702130f,\n    0.216106797f, -0.976369731f,\n    0.213110320f, -0.977028143f,\n    0.210111837f, -0.977677358f,\n    0.207111376f, -0.978317371f,\n    0.204108966f, -0.978948175f,\n    0.201104635f, -0.979569766f,\n    0.198098411f, -0.980182136f,\n    0.195090322f, -0.980785280f,\n    0.192080397f, -0.981379193f,\n    0.189068664f, -0.981963869f,\n    0.186055152f, -0.982539302f,\n    0.183039888f, -0.983105487f,\n    0.180022901f, -0.983662419f,\n    0.177004220f, -0.984210092f,\n    0.173983873f, -0.984748502f,\n    0.170961889f, -0.985277642f,\n    0.167938295f, -0.985797509f,\n    0.164913120f, -0.986308097f,\n    0.161886394f, -0.986809402f,\n    0.158858143f, -0.987301418f,\n    0.155828398f, -0.987784142f,\n    0.152797185f, -0.988257568f,\n    0.149764535f, -0.988721692f,\n    0.146730474f, -0.989176510f,\n    0.143695033f, -0.989622017f,\n    0.140658239f, -0.990058210f,\n    0.137620122f, -0.990485084f,\n    0.134580709f, -0.990902635f,\n    0.131540029f, -0.991310860f,\n    0.128498111f, -0.991709754f,\n    0.125454983f, -0.992099313f,\n    0.122410675f, -0.992479535f,\n    0.119365215f, -0.992850414f,\n    0.116318631f, -0.993211949f,\n    0.113270952f, -0.993564136f,\n    0.110222207f, -0.993906970f,\n    0.107172425f, -0.994240449f,\n    0.104121634f, -0.994564571f,\n    0.101069863f, -0.994879331f,\n    0.098017140f, -0.995184727f,\n    0.094963495f, -0.995480755f,\n    0.091908956f, -0.995767414f,\n    0.088853553f, -0.996044701f,\n    0.085797312f, -0.996312612f,\n    0.082740265f, -0.996571146f,\n    0.079682438f, -0.996820299f,\n    0.076623861f, -0.997060070f,\n    0.073564564f, -0.997290457f,\n    0.070504573f, -0.997511456f,\n    0.067443920f, -0.997723067f,\n    0.064382631f, -0.997925286f,\n    0.061320736f, -0.998118113f,\n    0.058258265f, -0.998301545f,\n    0.055195244f, -0.998475581f,\n    0.052131705f, -0.998640218f,\n    0.049067674f, -0.998795456f,\n    0.046003182f, -0.998941293f,\n    0.042938257f, -0.999077728f,\n    0.039872928f, -0.999204759f,\n    0.036807223f, -0.999322385f,\n    0.033741172f, -0.999430605f,\n    0.030674803f, -0.999529418f,\n    0.027608146f, -0.999618822f,\n    0.024541229f, -0.999698819f,\n    0.021474080f, -0.999769405f,\n    0.018406730f, -0.999830582f,\n    0.015339206f, -0.999882347f,\n    0.012271538f, -0.999924702f,\n    0.009203755f, -0.999957645f,\n    0.006135885f, -0.999981175f,\n    0.003067957f, -0.999995294f\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_4096)\nconst float32_t twiddleCoef_rfft_4096[4096] = {\n    0.000000000f,  1.000000000f,\n    0.001533980f,  0.999998823f,\n    0.003067957f,  0.999995294f,\n    0.004601926f,  0.999989411f,\n    0.006135885f,  0.999981175f,\n    0.007669829f,  0.999970586f,\n    0.009203755f,  0.999957645f,\n    0.010737659f,  0.999942350f,\n    0.012271538f,  0.999924702f,\n    0.013805389f,  0.999904701f,\n    0.015339206f,  0.999882347f,\n    0.016872988f,  0.999857641f,\n    0.018406730f,  0.999830582f,\n    0.019940429f,  0.999801170f,\n    0.021474080f,  0.999769405f,\n    0.023007681f,  0.999735288f,\n    0.024541229f,  0.999698819f,\n    0.026074718f,  0.999659997f,\n    0.027608146f,  0.999618822f,\n    0.029141509f,  0.999575296f,\n    0.030674803f,  0.999529418f,\n    0.032208025f,  0.999481187f,\n    0.033741172f,  0.999430605f,\n    0.035274239f,  0.999377670f,\n    0.036807223f,  0.999322385f,\n    0.038340120f,  0.999264747f,\n    0.039872928f,  0.999204759f,\n    0.041405641f,  0.999142419f,\n    0.042938257f,  0.999077728f,\n    0.044470772f,  0.999010686f,\n    0.046003182f,  0.998941293f,\n    0.047535484f,  0.998869550f,\n    0.049067674f,  0.998795456f,\n    0.050599749f,  0.998719012f,\n    0.052131705f,  0.998640218f,\n    0.053663538f,  0.998559074f,\n    0.055195244f,  0.998475581f,\n    0.056726821f,  0.998389737f,\n    0.058258265f,  0.998301545f,\n    0.059789571f,  0.998211003f,\n    0.061320736f,  0.998118113f,\n    0.062851758f,  0.998022874f,\n    0.064382631f,  0.997925286f,\n    0.065913353f,  0.997825350f,\n    0.067443920f,  0.997723067f,\n    0.068974328f,  0.997618435f,\n    0.070504573f,  0.997511456f,\n    0.072034653f,  0.997402130f,\n    0.073564564f,  0.997290457f,\n    0.075094301f,  0.997176437f,\n    0.076623861f,  0.997060070f,\n    0.078153242f,  0.996941358f,\n    0.079682438f,  0.996820299f,\n    0.081211447f,  0.996696895f,\n    0.082740265f,  0.996571146f,\n    0.084268888f,  0.996443051f,\n    0.085797312f,  0.996312612f,\n    0.087325535f,  0.996179829f,\n    0.088853553f,  0.996044701f,\n    0.090381361f,  0.995907229f,\n    0.091908956f,  0.995767414f,\n    0.093436336f,  0.995625256f,\n    0.094963495f,  0.995480755f,\n    0.096490431f,  0.995333912f,\n    0.098017140f,  0.995184727f,\n    0.099543619f,  0.995033199f,\n    0.101069863f,  0.994879331f,\n    0.102595869f,  0.994723121f,\n    0.104121634f,  0.994564571f,\n    0.105647154f,  0.994403680f,\n    0.107172425f,  0.994240449f,\n    0.108697444f,  0.994074879f,\n    0.110222207f,  0.993906970f,\n    0.111746711f,  0.993736722f,\n    0.113270952f,  0.993564136f,\n    0.114794927f,  0.993389211f,\n    0.116318631f,  0.993211949f,\n    0.117842062f,  0.993032350f,\n    0.119365215f,  0.992850414f,\n    0.120888087f,  0.992666142f,\n    0.122410675f,  0.992479535f,\n    0.123932975f,  0.992290591f,\n    0.125454983f,  0.992099313f,\n    0.126976696f,  0.991905700f,\n    0.128498111f,  0.991709754f,\n    0.130019223f,  0.991511473f,\n    0.131540029f,  0.991310860f,\n    0.133060525f,  0.991107914f,\n    0.134580709f,  0.990902635f,\n    0.136100575f,  0.990695025f,\n    0.137620122f,  0.990485084f,\n    0.139139344f,  0.990272812f,\n    0.140658239f,  0.990058210f,\n    0.142176804f,  0.989841278f,\n    0.143695033f,  0.989622017f,\n    0.145212925f,  0.989400428f,\n    0.146730474f,  0.989176510f,\n    0.148247679f,  0.988950265f,\n    0.149764535f,  0.988721692f,\n    0.151281038f,  0.988490793f,\n    0.152797185f,  0.988257568f,\n    0.154312973f,  0.988022017f,\n    0.155828398f,  0.987784142f,\n    0.157343456f,  0.987543942f,\n    0.158858143f,  0.987301418f,\n    0.160372457f,  0.987056571f,\n    0.161886394f,  0.986809402f,\n    0.163399949f,  0.986559910f,\n    0.164913120f,  0.986308097f,\n    0.166425904f,  0.986053963f,\n    0.167938295f,  0.985797509f,\n    0.169450291f,  0.985538735f,\n    0.170961889f,  0.985277642f,\n    0.172473084f,  0.985014231f,\n    0.173983873f,  0.984748502f,\n    0.175494253f,  0.984480455f,\n    0.177004220f,  0.984210092f,\n    0.178513771f,  0.983937413f,\n    0.180022901f,  0.983662419f,\n    0.181531608f,  0.983385110f,\n    0.183039888f,  0.983105487f,\n    0.184547737f,  0.982823551f,\n    0.186055152f,  0.982539302f,\n    0.187562129f,  0.982252741f,\n    0.189068664f,  0.981963869f,\n    0.190574755f,  0.981672686f,\n    0.192080397f,  0.981379193f,\n    0.193585587f,  0.981083391f,\n    0.195090322f,  0.980785280f,\n    0.196594598f,  0.980484862f,\n    0.198098411f,  0.980182136f,\n    0.199601758f,  0.979877104f,\n    0.201104635f,  0.979569766f,\n    0.202607039f,  0.979260123f,\n    0.204108966f,  0.978948175f,\n    0.205610413f,  0.978633924f,\n    0.207111376f,  0.978317371f,\n    0.208611852f,  0.977998515f,\n    0.210111837f,  0.977677358f,\n    0.211611327f,  0.977353900f,\n    0.213110320f,  0.977028143f,\n    0.214608811f,  0.976700086f,\n    0.216106797f,  0.976369731f,\n    0.217604275f,  0.976037079f,\n    0.219101240f,  0.975702130f,\n    0.220597690f,  0.975364885f,\n    0.222093621f,  0.975025345f,\n    0.223589029f,  0.974683511f,\n    0.225083911f,  0.974339383f,\n    0.226578264f,  0.973992962f,\n    0.228072083f,  0.973644250f,\n    0.229565366f,  0.973293246f,\n    0.231058108f,  0.972939952f,\n    0.232550307f,  0.972584369f,\n    0.234041959f,  0.972226497f,\n    0.235533059f,  0.971866337f,\n    0.237023606f,  0.971503891f,\n    0.238513595f,  0.971139158f,\n    0.240003022f,  0.970772141f,\n    0.241491885f,  0.970402839f,\n    0.242980180f,  0.970031253f,\n    0.244467903f,  0.969657385f,\n    0.245955050f,  0.969281235f,\n    0.247441619f,  0.968902805f,\n    0.248927606f,  0.968522094f,\n    0.250413007f,  0.968139105f,\n    0.251897818f,  0.967753837f,\n    0.253382037f,  0.967366292f,\n    0.254865660f,  0.966976471f,\n    0.256348682f,  0.966584374f,\n    0.257831102f,  0.966190003f,\n    0.259312915f,  0.965793359f,\n    0.260794118f,  0.965394442f,\n    0.262274707f,  0.964993253f,\n    0.263754679f,  0.964589793f,\n    0.265234030f,  0.964184064f,\n    0.266712757f,  0.963776066f,\n    0.268190857f,  0.963365800f,\n    0.269668326f,  0.962953267f,\n    0.271145160f,  0.962538468f,\n    0.272621355f,  0.962121404f,\n    0.274096910f,  0.961702077f,\n    0.275571819f,  0.961280486f,\n    0.277046080f,  0.960856633f,\n    0.278519689f,  0.960430519f,\n    0.279992643f,  0.960002146f,\n    0.281464938f,  0.959571513f,\n    0.282936570f,  0.959138622f,\n    0.284407537f,  0.958703475f,\n    0.285877835f,  0.958266071f,\n    0.287347460f,  0.957826413f,\n    0.288816408f,  0.957384501f,\n    0.290284677f,  0.956940336f,\n    0.291752263f,  0.956493919f,\n    0.293219163f,  0.956045251f,\n    0.294685372f,  0.955594334f,\n    0.296150888f,  0.955141168f,\n    0.297615707f,  0.954685755f,\n    0.299079826f,  0.954228095f,\n    0.300543241f,  0.953768190f,\n    0.302005949f,  0.953306040f,\n    0.303467947f,  0.952841648f,\n    0.304929230f,  0.952375013f,\n    0.306389795f,  0.951906137f,\n    0.307849640f,  0.951435021f,\n    0.309308760f,  0.950961666f,\n    0.310767153f,  0.950486074f,\n    0.312224814f,  0.950008245f,\n    0.313681740f,  0.949528181f,\n    0.315137929f,  0.949045882f,\n    0.316593376f,  0.948561350f,\n    0.318048077f,  0.948074586f,\n    0.319502031f,  0.947585591f,\n    0.320955232f,  0.947094366f,\n    0.322407679f,  0.946600913f,\n    0.323859367f,  0.946105232f,\n    0.325310292f,  0.945607325f,\n    0.326760452f,  0.945107193f,\n    0.328209844f,  0.944604837f,\n    0.329658463f,  0.944100258f,\n    0.331106306f,  0.943593458f,\n    0.332553370f,  0.943084437f,\n    0.333999651f,  0.942573198f,\n    0.335445147f,  0.942059740f,\n    0.336889853f,  0.941544065f,\n    0.338333767f,  0.941026175f,\n    0.339776884f,  0.940506071f,\n    0.341219202f,  0.939983753f,\n    0.342660717f,  0.939459224f,\n    0.344101426f,  0.938932484f,\n    0.345541325f,  0.938403534f,\n    0.346980411f,  0.937872376f,\n    0.348418680f,  0.937339012f,\n    0.349856130f,  0.936803442f,\n    0.351292756f,  0.936265667f,\n    0.352728556f,  0.935725689f,\n    0.354163525f,  0.935183510f,\n    0.355597662f,  0.934639130f,\n    0.357030961f,  0.934092550f,\n    0.358463421f,  0.933543773f,\n    0.359895037f,  0.932992799f,\n    0.361325806f,  0.932439629f,\n    0.362755724f,  0.931884266f,\n    0.364184790f,  0.931326709f,\n    0.365612998f,  0.930766961f,\n    0.367040346f,  0.930205023f,\n    0.368466830f,  0.929640896f,\n    0.369892447f,  0.929074581f,\n    0.371317194f,  0.928506080f,\n    0.372741067f,  0.927935395f,\n    0.374164063f,  0.927362526f,\n    0.375586178f,  0.926787474f,\n    0.377007410f,  0.926210242f,\n    0.378427755f,  0.925630831f,\n    0.379847209f,  0.925049241f,\n    0.381265769f,  0.924465474f,\n    0.382683432f,  0.923879533f,\n    0.384100195f,  0.923291417f,\n    0.385516054f,  0.922701128f,\n    0.386931006f,  0.922108669f,\n    0.388345047f,  0.921514039f,\n    0.389758174f,  0.920917242f,\n    0.391170384f,  0.920318277f,\n    0.392581674f,  0.919717146f,\n    0.393992040f,  0.919113852f,\n    0.395401479f,  0.918508394f,\n    0.396809987f,  0.917900776f,\n    0.398217562f,  0.917290997f,\n    0.399624200f,  0.916679060f,\n    0.401029897f,  0.916064966f,\n    0.402434651f,  0.915448716f,\n    0.403838458f,  0.914830312f,\n    0.405241314f,  0.914209756f,\n    0.406643217f,  0.913587048f,\n    0.408044163f,  0.912962190f,\n    0.409444149f,  0.912335185f,\n    0.410843171f,  0.911706032f,\n    0.412241227f,  0.911074734f,\n    0.413638312f,  0.910441292f,\n    0.415034424f,  0.909805708f,\n    0.416429560f,  0.909167983f,\n    0.417823716f,  0.908528119f,\n    0.419216888f,  0.907886116f,\n    0.420609074f,  0.907241978f,\n    0.422000271f,  0.906595705f,\n    0.423390474f,  0.905947298f,\n    0.424779681f,  0.905296759f,\n    0.426167889f,  0.904644091f,\n    0.427555093f,  0.903989293f,\n    0.428941292f,  0.903332368f,\n    0.430326481f,  0.902673318f,\n    0.431710658f,  0.902012144f,\n    0.433093819f,  0.901348847f,\n    0.434475961f,  0.900683429f,\n    0.435857080f,  0.900015892f,\n    0.437237174f,  0.899346237f,\n    0.438616239f,  0.898674466f,\n    0.439994271f,  0.898000580f,\n    0.441371269f,  0.897324581f,\n    0.442747228f,  0.896646470f,\n    0.444122145f,  0.895966250f,\n    0.445496017f,  0.895283921f,\n    0.446868840f,  0.894599486f,\n    0.448240612f,  0.893912945f,\n    0.449611330f,  0.893224301f,\n    0.450980989f,  0.892533555f,\n    0.452349587f,  0.891840709f,\n    0.453717121f,  0.891145765f,\n    0.455083587f,  0.890448723f,\n    0.456448982f,  0.889749586f,\n    0.457813304f,  0.889048356f,\n    0.459176548f,  0.888345033f,\n    0.460538711f,  0.887639620f,\n    0.461899791f,  0.886932119f,\n    0.463259784f,  0.886222530f,\n    0.464618686f,  0.885510856f,\n    0.465976496f,  0.884797098f,\n    0.467333209f,  0.884081259f,\n    0.468688822f,  0.883363339f,\n    0.470043332f,  0.882643340f,\n    0.471396737f,  0.881921264f,\n    0.472749032f,  0.881197113f,\n    0.474100215f,  0.880470889f,\n    0.475450282f,  0.879742593f,\n    0.476799230f,  0.879012226f,\n    0.478147056f,  0.878279792f,\n    0.479493758f,  0.877545290f,\n    0.480839331f,  0.876808724f,\n    0.482183772f,  0.876070094f,\n    0.483527079f,  0.875329403f,\n    0.484869248f,  0.874586652f,\n    0.486210276f,  0.873841843f,\n    0.487550160f,  0.873094978f,\n    0.488888897f,  0.872346059f,\n    0.490226483f,  0.871595087f,\n    0.491562916f,  0.870842063f,\n    0.492898192f,  0.870086991f,\n    0.494232309f,  0.869329871f,\n    0.495565262f,  0.868570706f,\n    0.496897049f,  0.867809497f,\n    0.498227667f,  0.867046246f,\n    0.499557113f,  0.866280954f,\n    0.500885383f,  0.865513624f,\n    0.502212474f,  0.864744258f,\n    0.503538384f,  0.863972856f,\n    0.504863109f,  0.863199422f,\n    0.506186645f,  0.862423956f,\n    0.507508991f,  0.861646461f,\n    0.508830143f,  0.860866939f,\n    0.510150097f,  0.860085390f,\n    0.511468850f,  0.859301818f,\n    0.512786401f,  0.858516224f,\n    0.514102744f,  0.857728610f,\n    0.515417878f,  0.856938977f,\n    0.516731799f,  0.856147328f,\n    0.518044504f,  0.855353665f,\n    0.519355990f,  0.854557988f,\n    0.520666254f,  0.853760301f,\n    0.521975293f,  0.852960605f,\n    0.523283103f,  0.852158902f,\n    0.524589683f,  0.851355193f,\n    0.525895027f,  0.850549481f,\n    0.527199135f,  0.849741768f,\n    0.528502002f,  0.848932055f,\n    0.529803625f,  0.848120345f,\n    0.531104001f,  0.847306639f,\n    0.532403128f,  0.846490939f,\n    0.533701002f,  0.845673247f,\n    0.534997620f,  0.844853565f,\n    0.536292979f,  0.844031895f,\n    0.537587076f,  0.843208240f,\n    0.538879909f,  0.842382600f,\n    0.540171473f,  0.841554977f,\n    0.541461766f,  0.840725375f,\n    0.542750785f,  0.839893794f,\n    0.544038527f,  0.839060237f,\n    0.545324988f,  0.838224706f,\n    0.546610167f,  0.837387202f,\n    0.547894059f,  0.836547727f,\n    0.549176662f,  0.835706284f,\n    0.550457973f,  0.834862875f,\n    0.551737988f,  0.834017501f,\n    0.553016706f,  0.833170165f,\n    0.554294121f,  0.832320868f,\n    0.555570233f,  0.831469612f,\n    0.556845037f,  0.830616400f,\n    0.558118531f,  0.829761234f,\n    0.559390712f,  0.828904115f,\n    0.560661576f,  0.828045045f,\n    0.561931121f,  0.827184027f,\n    0.563199344f,  0.826321063f,\n    0.564466242f,  0.825456154f,\n    0.565731811f,  0.824589303f,\n    0.566996049f,  0.823720511f,\n    0.568258953f,  0.822849781f,\n    0.569520519f,  0.821977115f,\n    0.570780746f,  0.821102515f,\n    0.572039629f,  0.820225983f,\n    0.573297167f,  0.819347520f,\n    0.574553355f,  0.818467130f,\n    0.575808191f,  0.817584813f,\n    0.577061673f,  0.816700573f,\n    0.578313796f,  0.815814411f,\n    0.579564559f,  0.814926329f,\n    0.580813958f,  0.814036330f,\n    0.582061990f,  0.813144415f,\n    0.583308653f,  0.812250587f,\n    0.584553943f,  0.811354847f,\n    0.585797857f,  0.810457198f,\n    0.587040394f,  0.809557642f,\n    0.588281548f,  0.808656182f,\n    0.589521319f,  0.807752818f,\n    0.590759702f,  0.806847554f,\n    0.591996695f,  0.805940391f,\n    0.593232295f,  0.805031331f,\n    0.594466499f,  0.804120377f,\n    0.595699304f,  0.803207531f,\n    0.596930708f,  0.802292796f,\n    0.598160707f,  0.801376172f,\n    0.599389298f,  0.800457662f,\n    0.600616479f,  0.799537269f,\n    0.601842247f,  0.798614995f,\n    0.603066599f,  0.797690841f,\n    0.604289531f,  0.796764810f,\n    0.605511041f,  0.795836905f,\n    0.606731127f,  0.794907126f,\n    0.607949785f,  0.793975478f,\n    0.609167012f,  0.793041960f,\n    0.610382806f,  0.792106577f,\n    0.611597164f,  0.791169330f,\n    0.612810082f,  0.790230221f,\n    0.614021559f,  0.789289253f,\n    0.615231591f,  0.788346428f,\n    0.616440175f,  0.787401747f,\n    0.617647308f,  0.786455214f,\n    0.618852988f,  0.785506830f,\n    0.620057212f,  0.784556597f,\n    0.621259977f,  0.783604519f,\n    0.622461279f,  0.782650596f,\n    0.623661118f,  0.781694832f,\n    0.624859488f,  0.780737229f,\n    0.626056388f,  0.779777788f,\n    0.627251815f,  0.778816512f,\n    0.628445767f,  0.777853404f,\n    0.629638239f,  0.776888466f,\n    0.630829230f,  0.775921699f,\n    0.632018736f,  0.774953107f,\n    0.633206755f,  0.773982691f,\n    0.634393284f,  0.773010453f,\n    0.635578320f,  0.772036397f,\n    0.636761861f,  0.771060524f,\n    0.637943904f,  0.770082837f,\n    0.639124445f,  0.769103338f,\n    0.640303482f,  0.768122029f,\n    0.641481013f,  0.767138912f,\n    0.642657034f,  0.766153990f,\n    0.643831543f,  0.765167266f,\n    0.645004537f,  0.764178741f,\n    0.646176013f,  0.763188417f,\n    0.647345969f,  0.762196298f,\n    0.648514401f,  0.761202385f,\n    0.649681307f,  0.760206682f,\n    0.650846685f,  0.759209189f,\n    0.652010531f,  0.758209910f,\n    0.653172843f,  0.757208847f,\n    0.654333618f,  0.756206001f,\n    0.655492853f,  0.755201377f,\n    0.656650546f,  0.754194975f,\n    0.657806693f,  0.753186799f,\n    0.658961293f,  0.752176850f,\n    0.660114342f,  0.751165132f,\n    0.661265838f,  0.750151646f,\n    0.662415778f,  0.749136395f,\n    0.663564159f,  0.748119380f,\n    0.664710978f,  0.747100606f,\n    0.665856234f,  0.746080074f,\n    0.666999922f,  0.745057785f,\n    0.668142041f,  0.744033744f,\n    0.669282588f,  0.743007952f,\n    0.670421560f,  0.741980412f,\n    0.671558955f,  0.740951125f,\n    0.672694769f,  0.739920095f,\n    0.673829000f,  0.738887324f,\n    0.674961646f,  0.737852815f,\n    0.676092704f,  0.736816569f,\n    0.677222170f,  0.735778589f,\n    0.678350043f,  0.734738878f,\n    0.679476320f,  0.733697438f,\n    0.680600998f,  0.732654272f,\n    0.681724074f,  0.731609381f,\n    0.682845546f,  0.730562769f,\n    0.683965412f,  0.729514438f,\n    0.685083668f,  0.728464390f,\n    0.686200312f,  0.727412629f,\n    0.687315341f,  0.726359155f,\n    0.688428753f,  0.725303972f,\n    0.689540545f,  0.724247083f,\n    0.690650714f,  0.723188489f,\n    0.691759258f,  0.722128194f,\n    0.692866175f,  0.721066199f,\n    0.693971461f,  0.720002508f,\n    0.695075114f,  0.718937122f,\n    0.696177131f,  0.717870045f,\n    0.697277511f,  0.716801279f,\n    0.698376249f,  0.715730825f,\n    0.699473345f,  0.714658688f,\n    0.700568794f,  0.713584869f,\n    0.701662595f,  0.712509371f,\n    0.702754744f,  0.711432196f,\n    0.703845241f,  0.710353347f,\n    0.704934080f,  0.709272826f,\n    0.706021261f,  0.708190637f,\n    0.707106781f,  0.707106781f,\n    0.708190637f,  0.706021261f,\n    0.709272826f,  0.704934080f,\n    0.710353347f,  0.703845241f,\n    0.711432196f,  0.702754744f,\n    0.712509371f,  0.701662595f,\n    0.713584869f,  0.700568794f,\n    0.714658688f,  0.699473345f,\n    0.715730825f,  0.698376249f,\n    0.716801279f,  0.697277511f,\n    0.717870045f,  0.696177131f,\n    0.718937122f,  0.695075114f,\n    0.720002508f,  0.693971461f,\n    0.721066199f,  0.692866175f,\n    0.722128194f,  0.691759258f,\n    0.723188489f,  0.690650714f,\n    0.724247083f,  0.689540545f,\n    0.725303972f,  0.688428753f,\n    0.726359155f,  0.687315341f,\n    0.727412629f,  0.686200312f,\n    0.728464390f,  0.685083668f,\n    0.729514438f,  0.683965412f,\n    0.730562769f,  0.682845546f,\n    0.731609381f,  0.681724074f,\n    0.732654272f,  0.680600998f,\n    0.733697438f,  0.679476320f,\n    0.734738878f,  0.678350043f,\n    0.735778589f,  0.677222170f,\n    0.736816569f,  0.676092704f,\n    0.737852815f,  0.674961646f,\n    0.738887324f,  0.673829000f,\n    0.739920095f,  0.672694769f,\n    0.740951125f,  0.671558955f,\n    0.741980412f,  0.670421560f,\n    0.743007952f,  0.669282588f,\n    0.744033744f,  0.668142041f,\n    0.745057785f,  0.666999922f,\n    0.746080074f,  0.665856234f,\n    0.747100606f,  0.664710978f,\n    0.748119380f,  0.663564159f,\n    0.749136395f,  0.662415778f,\n    0.750151646f,  0.661265838f,\n    0.751165132f,  0.660114342f,\n    0.752176850f,  0.658961293f,\n    0.753186799f,  0.657806693f,\n    0.754194975f,  0.656650546f,\n    0.755201377f,  0.655492853f,\n    0.756206001f,  0.654333618f,\n    0.757208847f,  0.653172843f,\n    0.758209910f,  0.652010531f,\n    0.759209189f,  0.650846685f,\n    0.760206682f,  0.649681307f,\n    0.761202385f,  0.648514401f,\n    0.762196298f,  0.647345969f,\n    0.763188417f,  0.646176013f,\n    0.764178741f,  0.645004537f,\n    0.765167266f,  0.643831543f,\n    0.766153990f,  0.642657034f,\n    0.767138912f,  0.641481013f,\n    0.768122029f,  0.640303482f,\n    0.769103338f,  0.639124445f,\n    0.770082837f,  0.637943904f,\n    0.771060524f,  0.636761861f,\n    0.772036397f,  0.635578320f,\n    0.773010453f,  0.634393284f,\n    0.773982691f,  0.633206755f,\n    0.774953107f,  0.632018736f,\n    0.775921699f,  0.630829230f,\n    0.776888466f,  0.629638239f,\n    0.777853404f,  0.628445767f,\n    0.778816512f,  0.627251815f,\n    0.779777788f,  0.626056388f,\n    0.780737229f,  0.624859488f,\n    0.781694832f,  0.623661118f,\n    0.782650596f,  0.622461279f,\n    0.783604519f,  0.621259977f,\n    0.784556597f,  0.620057212f,\n    0.785506830f,  0.618852988f,\n    0.786455214f,  0.617647308f,\n    0.787401747f,  0.616440175f,\n    0.788346428f,  0.615231591f,\n    0.789289253f,  0.614021559f,\n    0.790230221f,  0.612810082f,\n    0.791169330f,  0.611597164f,\n    0.792106577f,  0.610382806f,\n    0.793041960f,  0.609167012f,\n    0.793975478f,  0.607949785f,\n    0.794907126f,  0.606731127f,\n    0.795836905f,  0.605511041f,\n    0.796764810f,  0.604289531f,\n    0.797690841f,  0.603066599f,\n    0.798614995f,  0.601842247f,\n    0.799537269f,  0.600616479f,\n    0.800457662f,  0.599389298f,\n    0.801376172f,  0.598160707f,\n    0.802292796f,  0.596930708f,\n    0.803207531f,  0.595699304f,\n    0.804120377f,  0.594466499f,\n    0.805031331f,  0.593232295f,\n    0.805940391f,  0.591996695f,\n    0.806847554f,  0.590759702f,\n    0.807752818f,  0.589521319f,\n    0.808656182f,  0.588281548f,\n    0.809557642f,  0.587040394f,\n    0.810457198f,  0.585797857f,\n    0.811354847f,  0.584553943f,\n    0.812250587f,  0.583308653f,\n    0.813144415f,  0.582061990f,\n    0.814036330f,  0.580813958f,\n    0.814926329f,  0.579564559f,\n    0.815814411f,  0.578313796f,\n    0.816700573f,  0.577061673f,\n    0.817584813f,  0.575808191f,\n    0.818467130f,  0.574553355f,\n    0.819347520f,  0.573297167f,\n    0.820225983f,  0.572039629f,\n    0.821102515f,  0.570780746f,\n    0.821977115f,  0.569520519f,\n    0.822849781f,  0.568258953f,\n    0.823720511f,  0.566996049f,\n    0.824589303f,  0.565731811f,\n    0.825456154f,  0.564466242f,\n    0.826321063f,  0.563199344f,\n    0.827184027f,  0.561931121f,\n    0.828045045f,  0.560661576f,\n    0.828904115f,  0.559390712f,\n    0.829761234f,  0.558118531f,\n    0.830616400f,  0.556845037f,\n    0.831469612f,  0.555570233f,\n    0.832320868f,  0.554294121f,\n    0.833170165f,  0.553016706f,\n    0.834017501f,  0.551737988f,\n    0.834862875f,  0.550457973f,\n    0.835706284f,  0.549176662f,\n    0.836547727f,  0.547894059f,\n    0.837387202f,  0.546610167f,\n    0.838224706f,  0.545324988f,\n    0.839060237f,  0.544038527f,\n    0.839893794f,  0.542750785f,\n    0.840725375f,  0.541461766f,\n    0.841554977f,  0.540171473f,\n    0.842382600f,  0.538879909f,\n    0.843208240f,  0.537587076f,\n    0.844031895f,  0.536292979f,\n    0.844853565f,  0.534997620f,\n    0.845673247f,  0.533701002f,\n    0.846490939f,  0.532403128f,\n    0.847306639f,  0.531104001f,\n    0.848120345f,  0.529803625f,\n    0.848932055f,  0.528502002f,\n    0.849741768f,  0.527199135f,\n    0.850549481f,  0.525895027f,\n    0.851355193f,  0.524589683f,\n    0.852158902f,  0.523283103f,\n    0.852960605f,  0.521975293f,\n    0.853760301f,  0.520666254f,\n    0.854557988f,  0.519355990f,\n    0.855353665f,  0.518044504f,\n    0.856147328f,  0.516731799f,\n    0.856938977f,  0.515417878f,\n    0.857728610f,  0.514102744f,\n    0.858516224f,  0.512786401f,\n    0.859301818f,  0.511468850f,\n    0.860085390f,  0.510150097f,\n    0.860866939f,  0.508830143f,\n    0.861646461f,  0.507508991f,\n    0.862423956f,  0.506186645f,\n    0.863199422f,  0.504863109f,\n    0.863972856f,  0.503538384f,\n    0.864744258f,  0.502212474f,\n    0.865513624f,  0.500885383f,\n    0.866280954f,  0.499557113f,\n    0.867046246f,  0.498227667f,\n    0.867809497f,  0.496897049f,\n    0.868570706f,  0.495565262f,\n    0.869329871f,  0.494232309f,\n    0.870086991f,  0.492898192f,\n    0.870842063f,  0.491562916f,\n    0.871595087f,  0.490226483f,\n    0.872346059f,  0.488888897f,\n    0.873094978f,  0.487550160f,\n    0.873841843f,  0.486210276f,\n    0.874586652f,  0.484869248f,\n    0.875329403f,  0.483527079f,\n    0.876070094f,  0.482183772f,\n    0.876808724f,  0.480839331f,\n    0.877545290f,  0.479493758f,\n    0.878279792f,  0.478147056f,\n    0.879012226f,  0.476799230f,\n    0.879742593f,  0.475450282f,\n    0.880470889f,  0.474100215f,\n    0.881197113f,  0.472749032f,\n    0.881921264f,  0.471396737f,\n    0.882643340f,  0.470043332f,\n    0.883363339f,  0.468688822f,\n    0.884081259f,  0.467333209f,\n    0.884797098f,  0.465976496f,\n    0.885510856f,  0.464618686f,\n    0.886222530f,  0.463259784f,\n    0.886932119f,  0.461899791f,\n    0.887639620f,  0.460538711f,\n    0.888345033f,  0.459176548f,\n    0.889048356f,  0.457813304f,\n    0.889749586f,  0.456448982f,\n    0.890448723f,  0.455083587f,\n    0.891145765f,  0.453717121f,\n    0.891840709f,  0.452349587f,\n    0.892533555f,  0.450980989f,\n    0.893224301f,  0.449611330f,\n    0.893912945f,  0.448240612f,\n    0.894599486f,  0.446868840f,\n    0.895283921f,  0.445496017f,\n    0.895966250f,  0.444122145f,\n    0.896646470f,  0.442747228f,\n    0.897324581f,  0.441371269f,\n    0.898000580f,  0.439994271f,\n    0.898674466f,  0.438616239f,\n    0.899346237f,  0.437237174f,\n    0.900015892f,  0.435857080f,\n    0.900683429f,  0.434475961f,\n    0.901348847f,  0.433093819f,\n    0.902012144f,  0.431710658f,\n    0.902673318f,  0.430326481f,\n    0.903332368f,  0.428941292f,\n    0.903989293f,  0.427555093f,\n    0.904644091f,  0.426167889f,\n    0.905296759f,  0.424779681f,\n    0.905947298f,  0.423390474f,\n    0.906595705f,  0.422000271f,\n    0.907241978f,  0.420609074f,\n    0.907886116f,  0.419216888f,\n    0.908528119f,  0.417823716f,\n    0.909167983f,  0.416429560f,\n    0.909805708f,  0.415034424f,\n    0.910441292f,  0.413638312f,\n    0.911074734f,  0.412241227f,\n    0.911706032f,  0.410843171f,\n    0.912335185f,  0.409444149f,\n    0.912962190f,  0.408044163f,\n    0.913587048f,  0.406643217f,\n    0.914209756f,  0.405241314f,\n    0.914830312f,  0.403838458f,\n    0.915448716f,  0.402434651f,\n    0.916064966f,  0.401029897f,\n    0.916679060f,  0.399624200f,\n    0.917290997f,  0.398217562f,\n    0.917900776f,  0.396809987f,\n    0.918508394f,  0.395401479f,\n    0.919113852f,  0.393992040f,\n    0.919717146f,  0.392581674f,\n    0.920318277f,  0.391170384f,\n    0.920917242f,  0.389758174f,\n    0.921514039f,  0.388345047f,\n    0.922108669f,  0.386931006f,\n    0.922701128f,  0.385516054f,\n    0.923291417f,  0.384100195f,\n    0.923879533f,  0.382683432f,\n    0.924465474f,  0.381265769f,\n    0.925049241f,  0.379847209f,\n    0.925630831f,  0.378427755f,\n    0.926210242f,  0.377007410f,\n    0.926787474f,  0.375586178f,\n    0.927362526f,  0.374164063f,\n    0.927935395f,  0.372741067f,\n    0.928506080f,  0.371317194f,\n    0.929074581f,  0.369892447f,\n    0.929640896f,  0.368466830f,\n    0.930205023f,  0.367040346f,\n    0.930766961f,  0.365612998f,\n    0.931326709f,  0.364184790f,\n    0.931884266f,  0.362755724f,\n    0.932439629f,  0.361325806f,\n    0.932992799f,  0.359895037f,\n    0.933543773f,  0.358463421f,\n    0.934092550f,  0.357030961f,\n    0.934639130f,  0.355597662f,\n    0.935183510f,  0.354163525f,\n    0.935725689f,  0.352728556f,\n    0.936265667f,  0.351292756f,\n    0.936803442f,  0.349856130f,\n    0.937339012f,  0.348418680f,\n    0.937872376f,  0.346980411f,\n    0.938403534f,  0.345541325f,\n    0.938932484f,  0.344101426f,\n    0.939459224f,  0.342660717f,\n    0.939983753f,  0.341219202f,\n    0.940506071f,  0.339776884f,\n    0.941026175f,  0.338333767f,\n    0.941544065f,  0.336889853f,\n    0.942059740f,  0.335445147f,\n    0.942573198f,  0.333999651f,\n    0.943084437f,  0.332553370f,\n    0.943593458f,  0.331106306f,\n    0.944100258f,  0.329658463f,\n    0.944604837f,  0.328209844f,\n    0.945107193f,  0.326760452f,\n    0.945607325f,  0.325310292f,\n    0.946105232f,  0.323859367f,\n    0.946600913f,  0.322407679f,\n    0.947094366f,  0.320955232f,\n    0.947585591f,  0.319502031f,\n    0.948074586f,  0.318048077f,\n    0.948561350f,  0.316593376f,\n    0.949045882f,  0.315137929f,\n    0.949528181f,  0.313681740f,\n    0.950008245f,  0.312224814f,\n    0.950486074f,  0.310767153f,\n    0.950961666f,  0.309308760f,\n    0.951435021f,  0.307849640f,\n    0.951906137f,  0.306389795f,\n    0.952375013f,  0.304929230f,\n    0.952841648f,  0.303467947f,\n    0.953306040f,  0.302005949f,\n    0.953768190f,  0.300543241f,\n    0.954228095f,  0.299079826f,\n    0.954685755f,  0.297615707f,\n    0.955141168f,  0.296150888f,\n    0.955594334f,  0.294685372f,\n    0.956045251f,  0.293219163f,\n    0.956493919f,  0.291752263f,\n    0.956940336f,  0.290284677f,\n    0.957384501f,  0.288816408f,\n    0.957826413f,  0.287347460f,\n    0.958266071f,  0.285877835f,\n    0.958703475f,  0.284407537f,\n    0.959138622f,  0.282936570f,\n    0.959571513f,  0.281464938f,\n    0.960002146f,  0.279992643f,\n    0.960430519f,  0.278519689f,\n    0.960856633f,  0.277046080f,\n    0.961280486f,  0.275571819f,\n    0.961702077f,  0.274096910f,\n    0.962121404f,  0.272621355f,\n    0.962538468f,  0.271145160f,\n    0.962953267f,  0.269668326f,\n    0.963365800f,  0.268190857f,\n    0.963776066f,  0.266712757f,\n    0.964184064f,  0.265234030f,\n    0.964589793f,  0.263754679f,\n    0.964993253f,  0.262274707f,\n    0.965394442f,  0.260794118f,\n    0.965793359f,  0.259312915f,\n    0.966190003f,  0.257831102f,\n    0.966584374f,  0.256348682f,\n    0.966976471f,  0.254865660f,\n    0.967366292f,  0.253382037f,\n    0.967753837f,  0.251897818f,\n    0.968139105f,  0.250413007f,\n    0.968522094f,  0.248927606f,\n    0.968902805f,  0.247441619f,\n    0.969281235f,  0.245955050f,\n    0.969657385f,  0.244467903f,\n    0.970031253f,  0.242980180f,\n    0.970402839f,  0.241491885f,\n    0.970772141f,  0.240003022f,\n    0.971139158f,  0.238513595f,\n    0.971503891f,  0.237023606f,\n    0.971866337f,  0.235533059f,\n    0.972226497f,  0.234041959f,\n    0.972584369f,  0.232550307f,\n    0.972939952f,  0.231058108f,\n    0.973293246f,  0.229565366f,\n    0.973644250f,  0.228072083f,\n    0.973992962f,  0.226578264f,\n    0.974339383f,  0.225083911f,\n    0.974683511f,  0.223589029f,\n    0.975025345f,  0.222093621f,\n    0.975364885f,  0.220597690f,\n    0.975702130f,  0.219101240f,\n    0.976037079f,  0.217604275f,\n    0.976369731f,  0.216106797f,\n    0.976700086f,  0.214608811f,\n    0.977028143f,  0.213110320f,\n    0.977353900f,  0.211611327f,\n    0.977677358f,  0.210111837f,\n    0.977998515f,  0.208611852f,\n    0.978317371f,  0.207111376f,\n    0.978633924f,  0.205610413f,\n    0.978948175f,  0.204108966f,\n    0.979260123f,  0.202607039f,\n    0.979569766f,  0.201104635f,\n    0.979877104f,  0.199601758f,\n    0.980182136f,  0.198098411f,\n    0.980484862f,  0.196594598f,\n    0.980785280f,  0.195090322f,\n    0.981083391f,  0.193585587f,\n    0.981379193f,  0.192080397f,\n    0.981672686f,  0.190574755f,\n    0.981963869f,  0.189068664f,\n    0.982252741f,  0.187562129f,\n    0.982539302f,  0.186055152f,\n    0.982823551f,  0.184547737f,\n    0.983105487f,  0.183039888f,\n    0.983385110f,  0.181531608f,\n    0.983662419f,  0.180022901f,\n    0.983937413f,  0.178513771f,\n    0.984210092f,  0.177004220f,\n    0.984480455f,  0.175494253f,\n    0.984748502f,  0.173983873f,\n    0.985014231f,  0.172473084f,\n    0.985277642f,  0.170961889f,\n    0.985538735f,  0.169450291f,\n    0.985797509f,  0.167938295f,\n    0.986053963f,  0.166425904f,\n    0.986308097f,  0.164913120f,\n    0.986559910f,  0.163399949f,\n    0.986809402f,  0.161886394f,\n    0.987056571f,  0.160372457f,\n    0.987301418f,  0.158858143f,\n    0.987543942f,  0.157343456f,\n    0.987784142f,  0.155828398f,\n    0.988022017f,  0.154312973f,\n    0.988257568f,  0.152797185f,\n    0.988490793f,  0.151281038f,\n    0.988721692f,  0.149764535f,\n    0.988950265f,  0.148247679f,\n    0.989176510f,  0.146730474f,\n    0.989400428f,  0.145212925f,\n    0.989622017f,  0.143695033f,\n    0.989841278f,  0.142176804f,\n    0.990058210f,  0.140658239f,\n    0.990272812f,  0.139139344f,\n    0.990485084f,  0.137620122f,\n    0.990695025f,  0.136100575f,\n    0.990902635f,  0.134580709f,\n    0.991107914f,  0.133060525f,\n    0.991310860f,  0.131540029f,\n    0.991511473f,  0.130019223f,\n    0.991709754f,  0.128498111f,\n    0.991905700f,  0.126976696f,\n    0.992099313f,  0.125454983f,\n    0.992290591f,  0.123932975f,\n    0.992479535f,  0.122410675f,\n    0.992666142f,  0.120888087f,\n    0.992850414f,  0.119365215f,\n    0.993032350f,  0.117842062f,\n    0.993211949f,  0.116318631f,\n    0.993389211f,  0.114794927f,\n    0.993564136f,  0.113270952f,\n    0.993736722f,  0.111746711f,\n    0.993906970f,  0.110222207f,\n    0.994074879f,  0.108697444f,\n    0.994240449f,  0.107172425f,\n    0.994403680f,  0.105647154f,\n    0.994564571f,  0.104121634f,\n    0.994723121f,  0.102595869f,\n    0.994879331f,  0.101069863f,\n    0.995033199f,  0.099543619f,\n    0.995184727f,  0.098017140f,\n    0.995333912f,  0.096490431f,\n    0.995480755f,  0.094963495f,\n    0.995625256f,  0.093436336f,\n    0.995767414f,  0.091908956f,\n    0.995907229f,  0.090381361f,\n    0.996044701f,  0.088853553f,\n    0.996179829f,  0.087325535f,\n    0.996312612f,  0.085797312f,\n    0.996443051f,  0.084268888f,\n    0.996571146f,  0.082740265f,\n    0.996696895f,  0.081211447f,\n    0.996820299f,  0.079682438f,\n    0.996941358f,  0.078153242f,\n    0.997060070f,  0.076623861f,\n    0.997176437f,  0.075094301f,\n    0.997290457f,  0.073564564f,\n    0.997402130f,  0.072034653f,\n    0.997511456f,  0.070504573f,\n    0.997618435f,  0.068974328f,\n    0.997723067f,  0.067443920f,\n    0.997825350f,  0.065913353f,\n    0.997925286f,  0.064382631f,\n    0.998022874f,  0.062851758f,\n    0.998118113f,  0.061320736f,\n    0.998211003f,  0.059789571f,\n    0.998301545f,  0.058258265f,\n    0.998389737f,  0.056726821f,\n    0.998475581f,  0.055195244f,\n    0.998559074f,  0.053663538f,\n    0.998640218f,  0.052131705f,\n    0.998719012f,  0.050599749f,\n    0.998795456f,  0.049067674f,\n    0.998869550f,  0.047535484f,\n    0.998941293f,  0.046003182f,\n    0.999010686f,  0.044470772f,\n    0.999077728f,  0.042938257f,\n    0.999142419f,  0.041405641f,\n    0.999204759f,  0.039872928f,\n    0.999264747f,  0.038340120f,\n    0.999322385f,  0.036807223f,\n    0.999377670f,  0.035274239f,\n    0.999430605f,  0.033741172f,\n    0.999481187f,  0.032208025f,\n    0.999529418f,  0.030674803f,\n    0.999575296f,  0.029141509f,\n    0.999618822f,  0.027608146f,\n    0.999659997f,  0.026074718f,\n    0.999698819f,  0.024541229f,\n    0.999735288f,  0.023007681f,\n    0.999769405f,  0.021474080f,\n    0.999801170f,  0.019940429f,\n    0.999830582f,  0.018406730f,\n    0.999857641f,  0.016872988f,\n    0.999882347f,  0.015339206f,\n    0.999904701f,  0.013805389f,\n    0.999924702f,  0.012271538f,\n    0.999942350f,  0.010737659f,\n    0.999957645f,  0.009203755f,\n    0.999970586f,  0.007669829f,\n    0.999981175f,  0.006135885f,\n    0.999989411f,  0.004601926f,\n    0.999995294f,  0.003067957f,\n    0.999998823f,  0.001533980f,\n    1.000000000f,  0.000000000f,\n    0.999998823f, -0.001533980f,\n    0.999995294f, -0.003067957f,\n    0.999989411f, -0.004601926f,\n    0.999981175f, -0.006135885f,\n    0.999970586f, -0.007669829f,\n    0.999957645f, -0.009203755f,\n    0.999942350f, -0.010737659f,\n    0.999924702f, -0.012271538f,\n    0.999904701f, -0.013805389f,\n    0.999882347f, -0.015339206f,\n    0.999857641f, -0.016872988f,\n    0.999830582f, -0.018406730f,\n    0.999801170f, -0.019940429f,\n    0.999769405f, -0.021474080f,\n    0.999735288f, -0.023007681f,\n    0.999698819f, -0.024541229f,\n    0.999659997f, -0.026074718f,\n    0.999618822f, -0.027608146f,\n    0.999575296f, -0.029141509f,\n    0.999529418f, -0.030674803f,\n    0.999481187f, -0.032208025f,\n    0.999430605f, -0.033741172f,\n    0.999377670f, -0.035274239f,\n    0.999322385f, -0.036807223f,\n    0.999264747f, -0.038340120f,\n    0.999204759f, -0.039872928f,\n    0.999142419f, -0.041405641f,\n    0.999077728f, -0.042938257f,\n    0.999010686f, -0.044470772f,\n    0.998941293f, -0.046003182f,\n    0.998869550f, -0.047535484f,\n    0.998795456f, -0.049067674f,\n    0.998719012f, -0.050599749f,\n    0.998640218f, -0.052131705f,\n    0.998559074f, -0.053663538f,\n    0.998475581f, -0.055195244f,\n    0.998389737f, -0.056726821f,\n    0.998301545f, -0.058258265f,\n    0.998211003f, -0.059789571f,\n    0.998118113f, -0.061320736f,\n    0.998022874f, -0.062851758f,\n    0.997925286f, -0.064382631f,\n    0.997825350f, -0.065913353f,\n    0.997723067f, -0.067443920f,\n    0.997618435f, -0.068974328f,\n    0.997511456f, -0.070504573f,\n    0.997402130f, -0.072034653f,\n    0.997290457f, -0.073564564f,\n    0.997176437f, -0.075094301f,\n    0.997060070f, -0.076623861f,\n    0.996941358f, -0.078153242f,\n    0.996820299f, -0.079682438f,\n    0.996696895f, -0.081211447f,\n    0.996571146f, -0.082740265f,\n    0.996443051f, -0.084268888f,\n    0.996312612f, -0.085797312f,\n    0.996179829f, -0.087325535f,\n    0.996044701f, -0.088853553f,\n    0.995907229f, -0.090381361f,\n    0.995767414f, -0.091908956f,\n    0.995625256f, -0.093436336f,\n    0.995480755f, -0.094963495f,\n    0.995333912f, -0.096490431f,\n    0.995184727f, -0.098017140f,\n    0.995033199f, -0.099543619f,\n    0.994879331f, -0.101069863f,\n    0.994723121f, -0.102595869f,\n    0.994564571f, -0.104121634f,\n    0.994403680f, -0.105647154f,\n    0.994240449f, -0.107172425f,\n    0.994074879f, -0.108697444f,\n    0.993906970f, -0.110222207f,\n    0.993736722f, -0.111746711f,\n    0.993564136f, -0.113270952f,\n    0.993389211f, -0.114794927f,\n    0.993211949f, -0.116318631f,\n    0.993032350f, -0.117842062f,\n    0.992850414f, -0.119365215f,\n    0.992666142f, -0.120888087f,\n    0.992479535f, -0.122410675f,\n    0.992290591f, -0.123932975f,\n    0.992099313f, -0.125454983f,\n    0.991905700f, -0.126976696f,\n    0.991709754f, -0.128498111f,\n    0.991511473f, -0.130019223f,\n    0.991310860f, -0.131540029f,\n    0.991107914f, -0.133060525f,\n    0.990902635f, -0.134580709f,\n    0.990695025f, -0.136100575f,\n    0.990485084f, -0.137620122f,\n    0.990272812f, -0.139139344f,\n    0.990058210f, -0.140658239f,\n    0.989841278f, -0.142176804f,\n    0.989622017f, -0.143695033f,\n    0.989400428f, -0.145212925f,\n    0.989176510f, -0.146730474f,\n    0.988950265f, -0.148247679f,\n    0.988721692f, -0.149764535f,\n    0.988490793f, -0.151281038f,\n    0.988257568f, -0.152797185f,\n    0.988022017f, -0.154312973f,\n    0.987784142f, -0.155828398f,\n    0.987543942f, -0.157343456f,\n    0.987301418f, -0.158858143f,\n    0.987056571f, -0.160372457f,\n    0.986809402f, -0.161886394f,\n    0.986559910f, -0.163399949f,\n    0.986308097f, -0.164913120f,\n    0.986053963f, -0.166425904f,\n    0.985797509f, -0.167938295f,\n    0.985538735f, -0.169450291f,\n    0.985277642f, -0.170961889f,\n    0.985014231f, -0.172473084f,\n    0.984748502f, -0.173983873f,\n    0.984480455f, -0.175494253f,\n    0.984210092f, -0.177004220f,\n    0.983937413f, -0.178513771f,\n    0.983662419f, -0.180022901f,\n    0.983385110f, -0.181531608f,\n    0.983105487f, -0.183039888f,\n    0.982823551f, -0.184547737f,\n    0.982539302f, -0.186055152f,\n    0.982252741f, -0.187562129f,\n    0.981963869f, -0.189068664f,\n    0.981672686f, -0.190574755f,\n    0.981379193f, -0.192080397f,\n    0.981083391f, -0.193585587f,\n    0.980785280f, -0.195090322f,\n    0.980484862f, -0.196594598f,\n    0.980182136f, -0.198098411f,\n    0.979877104f, -0.199601758f,\n    0.979569766f, -0.201104635f,\n    0.979260123f, -0.202607039f,\n    0.978948175f, -0.204108966f,\n    0.978633924f, -0.205610413f,\n    0.978317371f, -0.207111376f,\n    0.977998515f, -0.208611852f,\n    0.977677358f, -0.210111837f,\n    0.977353900f, -0.211611327f,\n    0.977028143f, -0.213110320f,\n    0.976700086f, -0.214608811f,\n    0.976369731f, -0.216106797f,\n    0.976037079f, -0.217604275f,\n    0.975702130f, -0.219101240f,\n    0.975364885f, -0.220597690f,\n    0.975025345f, -0.222093621f,\n    0.974683511f, -0.223589029f,\n    0.974339383f, -0.225083911f,\n    0.973992962f, -0.226578264f,\n    0.973644250f, -0.228072083f,\n    0.973293246f, -0.229565366f,\n    0.972939952f, -0.231058108f,\n    0.972584369f, -0.232550307f,\n    0.972226497f, -0.234041959f,\n    0.971866337f, -0.235533059f,\n    0.971503891f, -0.237023606f,\n    0.971139158f, -0.238513595f,\n    0.970772141f, -0.240003022f,\n    0.970402839f, -0.241491885f,\n    0.970031253f, -0.242980180f,\n    0.969657385f, -0.244467903f,\n    0.969281235f, -0.245955050f,\n    0.968902805f, -0.247441619f,\n    0.968522094f, -0.248927606f,\n    0.968139105f, -0.250413007f,\n    0.967753837f, -0.251897818f,\n    0.967366292f, -0.253382037f,\n    0.966976471f, -0.254865660f,\n    0.966584374f, -0.256348682f,\n    0.966190003f, -0.257831102f,\n    0.965793359f, -0.259312915f,\n    0.965394442f, -0.260794118f,\n    0.964993253f, -0.262274707f,\n    0.964589793f, -0.263754679f,\n    0.964184064f, -0.265234030f,\n    0.963776066f, -0.266712757f,\n    0.963365800f, -0.268190857f,\n    0.962953267f, -0.269668326f,\n    0.962538468f, -0.271145160f,\n    0.962121404f, -0.272621355f,\n    0.961702077f, -0.274096910f,\n    0.961280486f, -0.275571819f,\n    0.960856633f, -0.277046080f,\n    0.960430519f, -0.278519689f,\n    0.960002146f, -0.279992643f,\n    0.959571513f, -0.281464938f,\n    0.959138622f, -0.282936570f,\n    0.958703475f, -0.284407537f,\n    0.958266071f, -0.285877835f,\n    0.957826413f, -0.287347460f,\n    0.957384501f, -0.288816408f,\n    0.956940336f, -0.290284677f,\n    0.956493919f, -0.291752263f,\n    0.956045251f, -0.293219163f,\n    0.955594334f, -0.294685372f,\n    0.955141168f, -0.296150888f,\n    0.954685755f, -0.297615707f,\n    0.954228095f, -0.299079826f,\n    0.953768190f, -0.300543241f,\n    0.953306040f, -0.302005949f,\n    0.952841648f, -0.303467947f,\n    0.952375013f, -0.304929230f,\n    0.951906137f, -0.306389795f,\n    0.951435021f, -0.307849640f,\n    0.950961666f, -0.309308760f,\n    0.950486074f, -0.310767153f,\n    0.950008245f, -0.312224814f,\n    0.949528181f, -0.313681740f,\n    0.949045882f, -0.315137929f,\n    0.948561350f, -0.316593376f,\n    0.948074586f, -0.318048077f,\n    0.947585591f, -0.319502031f,\n    0.947094366f, -0.320955232f,\n    0.946600913f, -0.322407679f,\n    0.946105232f, -0.323859367f,\n    0.945607325f, -0.325310292f,\n    0.945107193f, -0.326760452f,\n    0.944604837f, -0.328209844f,\n    0.944100258f, -0.329658463f,\n    0.943593458f, -0.331106306f,\n    0.943084437f, -0.332553370f,\n    0.942573198f, -0.333999651f,\n    0.942059740f, -0.335445147f,\n    0.941544065f, -0.336889853f,\n    0.941026175f, -0.338333767f,\n    0.940506071f, -0.339776884f,\n    0.939983753f, -0.341219202f,\n    0.939459224f, -0.342660717f,\n    0.938932484f, -0.344101426f,\n    0.938403534f, -0.345541325f,\n    0.937872376f, -0.346980411f,\n    0.937339012f, -0.348418680f,\n    0.936803442f, -0.349856130f,\n    0.936265667f, -0.351292756f,\n    0.935725689f, -0.352728556f,\n    0.935183510f, -0.354163525f,\n    0.934639130f, -0.355597662f,\n    0.934092550f, -0.357030961f,\n    0.933543773f, -0.358463421f,\n    0.932992799f, -0.359895037f,\n    0.932439629f, -0.361325806f,\n    0.931884266f, -0.362755724f,\n    0.931326709f, -0.364184790f,\n    0.930766961f, -0.365612998f,\n    0.930205023f, -0.367040346f,\n    0.929640896f, -0.368466830f,\n    0.929074581f, -0.369892447f,\n    0.928506080f, -0.371317194f,\n    0.927935395f, -0.372741067f,\n    0.927362526f, -0.374164063f,\n    0.926787474f, -0.375586178f,\n    0.926210242f, -0.377007410f,\n    0.925630831f, -0.378427755f,\n    0.925049241f, -0.379847209f,\n    0.924465474f, -0.381265769f,\n    0.923879533f, -0.382683432f,\n    0.923291417f, -0.384100195f,\n    0.922701128f, -0.385516054f,\n    0.922108669f, -0.386931006f,\n    0.921514039f, -0.388345047f,\n    0.920917242f, -0.389758174f,\n    0.920318277f, -0.391170384f,\n    0.919717146f, -0.392581674f,\n    0.919113852f, -0.393992040f,\n    0.918508394f, -0.395401479f,\n    0.917900776f, -0.396809987f,\n    0.917290997f, -0.398217562f,\n    0.916679060f, -0.399624200f,\n    0.916064966f, -0.401029897f,\n    0.915448716f, -0.402434651f,\n    0.914830312f, -0.403838458f,\n    0.914209756f, -0.405241314f,\n    0.913587048f, -0.406643217f,\n    0.912962190f, -0.408044163f,\n    0.912335185f, -0.409444149f,\n    0.911706032f, -0.410843171f,\n    0.911074734f, -0.412241227f,\n    0.910441292f, -0.413638312f,\n    0.909805708f, -0.415034424f,\n    0.909167983f, -0.416429560f,\n    0.908528119f, -0.417823716f,\n    0.907886116f, -0.419216888f,\n    0.907241978f, -0.420609074f,\n    0.906595705f, -0.422000271f,\n    0.905947298f, -0.423390474f,\n    0.905296759f, -0.424779681f,\n    0.904644091f, -0.426167889f,\n    0.903989293f, -0.427555093f,\n    0.903332368f, -0.428941292f,\n    0.902673318f, -0.430326481f,\n    0.902012144f, -0.431710658f,\n    0.901348847f, -0.433093819f,\n    0.900683429f, -0.434475961f,\n    0.900015892f, -0.435857080f,\n    0.899346237f, -0.437237174f,\n    0.898674466f, -0.438616239f,\n    0.898000580f, -0.439994271f,\n    0.897324581f, -0.441371269f,\n    0.896646470f, -0.442747228f,\n    0.895966250f, -0.444122145f,\n    0.895283921f, -0.445496017f,\n    0.894599486f, -0.446868840f,\n    0.893912945f, -0.448240612f,\n    0.893224301f, -0.449611330f,\n    0.892533555f, -0.450980989f,\n    0.891840709f, -0.452349587f,\n    0.891145765f, -0.453717121f,\n    0.890448723f, -0.455083587f,\n    0.889749586f, -0.456448982f,\n    0.889048356f, -0.457813304f,\n    0.888345033f, -0.459176548f,\n    0.887639620f, -0.460538711f,\n    0.886932119f, -0.461899791f,\n    0.886222530f, -0.463259784f,\n    0.885510856f, -0.464618686f,\n    0.884797098f, -0.465976496f,\n    0.884081259f, -0.467333209f,\n    0.883363339f, -0.468688822f,\n    0.882643340f, -0.470043332f,\n    0.881921264f, -0.471396737f,\n    0.881197113f, -0.472749032f,\n    0.880470889f, -0.474100215f,\n    0.879742593f, -0.475450282f,\n    0.879012226f, -0.476799230f,\n    0.878279792f, -0.478147056f,\n    0.877545290f, -0.479493758f,\n    0.876808724f, -0.480839331f,\n    0.876070094f, -0.482183772f,\n    0.875329403f, -0.483527079f,\n    0.874586652f, -0.484869248f,\n    0.873841843f, -0.486210276f,\n    0.873094978f, -0.487550160f,\n    0.872346059f, -0.488888897f,\n    0.871595087f, -0.490226483f,\n    0.870842063f, -0.491562916f,\n    0.870086991f, -0.492898192f,\n    0.869329871f, -0.494232309f,\n    0.868570706f, -0.495565262f,\n    0.867809497f, -0.496897049f,\n    0.867046246f, -0.498227667f,\n    0.866280954f, -0.499557113f,\n    0.865513624f, -0.500885383f,\n    0.864744258f, -0.502212474f,\n    0.863972856f, -0.503538384f,\n    0.863199422f, -0.504863109f,\n    0.862423956f, -0.506186645f,\n    0.861646461f, -0.507508991f,\n    0.860866939f, -0.508830143f,\n    0.860085390f, -0.510150097f,\n    0.859301818f, -0.511468850f,\n    0.858516224f, -0.512786401f,\n    0.857728610f, -0.514102744f,\n    0.856938977f, -0.515417878f,\n    0.856147328f, -0.516731799f,\n    0.855353665f, -0.518044504f,\n    0.854557988f, -0.519355990f,\n    0.853760301f, -0.520666254f,\n    0.852960605f, -0.521975293f,\n    0.852158902f, -0.523283103f,\n    0.851355193f, -0.524589683f,\n    0.850549481f, -0.525895027f,\n    0.849741768f, -0.527199135f,\n    0.848932055f, -0.528502002f,\n    0.848120345f, -0.529803625f,\n    0.847306639f, -0.531104001f,\n    0.846490939f, -0.532403128f,\n    0.845673247f, -0.533701002f,\n    0.844853565f, -0.534997620f,\n    0.844031895f, -0.536292979f,\n    0.843208240f, -0.537587076f,\n    0.842382600f, -0.538879909f,\n    0.841554977f, -0.540171473f,\n    0.840725375f, -0.541461766f,\n    0.839893794f, -0.542750785f,\n    0.839060237f, -0.544038527f,\n    0.838224706f, -0.545324988f,\n    0.837387202f, -0.546610167f,\n    0.836547727f, -0.547894059f,\n    0.835706284f, -0.549176662f,\n    0.834862875f, -0.550457973f,\n    0.834017501f, -0.551737988f,\n    0.833170165f, -0.553016706f,\n    0.832320868f, -0.554294121f,\n    0.831469612f, -0.555570233f,\n    0.830616400f, -0.556845037f,\n    0.829761234f, -0.558118531f,\n    0.828904115f, -0.559390712f,\n    0.828045045f, -0.560661576f,\n    0.827184027f, -0.561931121f,\n    0.826321063f, -0.563199344f,\n    0.825456154f, -0.564466242f,\n    0.824589303f, -0.565731811f,\n    0.823720511f, -0.566996049f,\n    0.822849781f, -0.568258953f,\n    0.821977115f, -0.569520519f,\n    0.821102515f, -0.570780746f,\n    0.820225983f, -0.572039629f,\n    0.819347520f, -0.573297167f,\n    0.818467130f, -0.574553355f,\n    0.817584813f, -0.575808191f,\n    0.816700573f, -0.577061673f,\n    0.815814411f, -0.578313796f,\n    0.814926329f, -0.579564559f,\n    0.814036330f, -0.580813958f,\n    0.813144415f, -0.582061990f,\n    0.812250587f, -0.583308653f,\n    0.811354847f, -0.584553943f,\n    0.810457198f, -0.585797857f,\n    0.809557642f, -0.587040394f,\n    0.808656182f, -0.588281548f,\n    0.807752818f, -0.589521319f,\n    0.806847554f, -0.590759702f,\n    0.805940391f, -0.591996695f,\n    0.805031331f, -0.593232295f,\n    0.804120377f, -0.594466499f,\n    0.803207531f, -0.595699304f,\n    0.802292796f, -0.596930708f,\n    0.801376172f, -0.598160707f,\n    0.800457662f, -0.599389298f,\n    0.799537269f, -0.600616479f,\n    0.798614995f, -0.601842247f,\n    0.797690841f, -0.603066599f,\n    0.796764810f, -0.604289531f,\n    0.795836905f, -0.605511041f,\n    0.794907126f, -0.606731127f,\n    0.793975478f, -0.607949785f,\n    0.793041960f, -0.609167012f,\n    0.792106577f, -0.610382806f,\n    0.791169330f, -0.611597164f,\n    0.790230221f, -0.612810082f,\n    0.789289253f, -0.614021559f,\n    0.788346428f, -0.615231591f,\n    0.787401747f, -0.616440175f,\n    0.786455214f, -0.617647308f,\n    0.785506830f, -0.618852988f,\n    0.784556597f, -0.620057212f,\n    0.783604519f, -0.621259977f,\n    0.782650596f, -0.622461279f,\n    0.781694832f, -0.623661118f,\n    0.780737229f, -0.624859488f,\n    0.779777788f, -0.626056388f,\n    0.778816512f, -0.627251815f,\n    0.777853404f, -0.628445767f,\n    0.776888466f, -0.629638239f,\n    0.775921699f, -0.630829230f,\n    0.774953107f, -0.632018736f,\n    0.773982691f, -0.633206755f,\n    0.773010453f, -0.634393284f,\n    0.772036397f, -0.635578320f,\n    0.771060524f, -0.636761861f,\n    0.770082837f, -0.637943904f,\n    0.769103338f, -0.639124445f,\n    0.768122029f, -0.640303482f,\n    0.767138912f, -0.641481013f,\n    0.766153990f, -0.642657034f,\n    0.765167266f, -0.643831543f,\n    0.764178741f, -0.645004537f,\n    0.763188417f, -0.646176013f,\n    0.762196298f, -0.647345969f,\n    0.761202385f, -0.648514401f,\n    0.760206682f, -0.649681307f,\n    0.759209189f, -0.650846685f,\n    0.758209910f, -0.652010531f,\n    0.757208847f, -0.653172843f,\n    0.756206001f, -0.654333618f,\n    0.755201377f, -0.655492853f,\n    0.754194975f, -0.656650546f,\n    0.753186799f, -0.657806693f,\n    0.752176850f, -0.658961293f,\n    0.751165132f, -0.660114342f,\n    0.750151646f, -0.661265838f,\n    0.749136395f, -0.662415778f,\n    0.748119380f, -0.663564159f,\n    0.747100606f, -0.664710978f,\n    0.746080074f, -0.665856234f,\n    0.745057785f, -0.666999922f,\n    0.744033744f, -0.668142041f,\n    0.743007952f, -0.669282588f,\n    0.741980412f, -0.670421560f,\n    0.740951125f, -0.671558955f,\n    0.739920095f, -0.672694769f,\n    0.738887324f, -0.673829000f,\n    0.737852815f, -0.674961646f,\n    0.736816569f, -0.676092704f,\n    0.735778589f, -0.677222170f,\n    0.734738878f, -0.678350043f,\n    0.733697438f, -0.679476320f,\n    0.732654272f, -0.680600998f,\n    0.731609381f, -0.681724074f,\n    0.730562769f, -0.682845546f,\n    0.729514438f, -0.683965412f,\n    0.728464390f, -0.685083668f,\n    0.727412629f, -0.686200312f,\n    0.726359155f, -0.687315341f,\n    0.725303972f, -0.688428753f,\n    0.724247083f, -0.689540545f,\n    0.723188489f, -0.690650714f,\n    0.722128194f, -0.691759258f,\n    0.721066199f, -0.692866175f,\n    0.720002508f, -0.693971461f,\n    0.718937122f, -0.695075114f,\n    0.717870045f, -0.696177131f,\n    0.716801279f, -0.697277511f,\n    0.715730825f, -0.698376249f,\n    0.714658688f, -0.699473345f,\n    0.713584869f, -0.700568794f,\n    0.712509371f, -0.701662595f,\n    0.711432196f, -0.702754744f,\n    0.710353347f, -0.703845241f,\n    0.709272826f, -0.704934080f,\n    0.708190637f, -0.706021261f,\n    0.707106781f, -0.707106781f,\n    0.706021261f, -0.708190637f,\n    0.704934080f, -0.709272826f,\n    0.703845241f, -0.710353347f,\n    0.702754744f, -0.711432196f,\n    0.701662595f, -0.712509371f,\n    0.700568794f, -0.713584869f,\n    0.699473345f, -0.714658688f,\n    0.698376249f, -0.715730825f,\n    0.697277511f, -0.716801279f,\n    0.696177131f, -0.717870045f,\n    0.695075114f, -0.718937122f,\n    0.693971461f, -0.720002508f,\n    0.692866175f, -0.721066199f,\n    0.691759258f, -0.722128194f,\n    0.690650714f, -0.723188489f,\n    0.689540545f, -0.724247083f,\n    0.688428753f, -0.725303972f,\n    0.687315341f, -0.726359155f,\n    0.686200312f, -0.727412629f,\n    0.685083668f, -0.728464390f,\n    0.683965412f, -0.729514438f,\n    0.682845546f, -0.730562769f,\n    0.681724074f, -0.731609381f,\n    0.680600998f, -0.732654272f,\n    0.679476320f, -0.733697438f,\n    0.678350043f, -0.734738878f,\n    0.677222170f, -0.735778589f,\n    0.676092704f, -0.736816569f,\n    0.674961646f, -0.737852815f,\n    0.673829000f, -0.738887324f,\n    0.672694769f, -0.739920095f,\n    0.671558955f, -0.740951125f,\n    0.670421560f, -0.741980412f,\n    0.669282588f, -0.743007952f,\n    0.668142041f, -0.744033744f,\n    0.666999922f, -0.745057785f,\n    0.665856234f, -0.746080074f,\n    0.664710978f, -0.747100606f,\n    0.663564159f, -0.748119380f,\n    0.662415778f, -0.749136395f,\n    0.661265838f, -0.750151646f,\n    0.660114342f, -0.751165132f,\n    0.658961293f, -0.752176850f,\n    0.657806693f, -0.753186799f,\n    0.656650546f, -0.754194975f,\n    0.655492853f, -0.755201377f,\n    0.654333618f, -0.756206001f,\n    0.653172843f, -0.757208847f,\n    0.652010531f, -0.758209910f,\n    0.650846685f, -0.759209189f,\n    0.649681307f, -0.760206682f,\n    0.648514401f, -0.761202385f,\n    0.647345969f, -0.762196298f,\n    0.646176013f, -0.763188417f,\n    0.645004537f, -0.764178741f,\n    0.643831543f, -0.765167266f,\n    0.642657034f, -0.766153990f,\n    0.641481013f, -0.767138912f,\n    0.640303482f, -0.768122029f,\n    0.639124445f, -0.769103338f,\n    0.637943904f, -0.770082837f,\n    0.636761861f, -0.771060524f,\n    0.635578320f, -0.772036397f,\n    0.634393284f, -0.773010453f,\n    0.633206755f, -0.773982691f,\n    0.632018736f, -0.774953107f,\n    0.630829230f, -0.775921699f,\n    0.629638239f, -0.776888466f,\n    0.628445767f, -0.777853404f,\n    0.627251815f, -0.778816512f,\n    0.626056388f, -0.779777788f,\n    0.624859488f, -0.780737229f,\n    0.623661118f, -0.781694832f,\n    0.622461279f, -0.782650596f,\n    0.621259977f, -0.783604519f,\n    0.620057212f, -0.784556597f,\n    0.618852988f, -0.785506830f,\n    0.617647308f, -0.786455214f,\n    0.616440175f, -0.787401747f,\n    0.615231591f, -0.788346428f,\n    0.614021559f, -0.789289253f,\n    0.612810082f, -0.790230221f,\n    0.611597164f, -0.791169330f,\n    0.610382806f, -0.792106577f,\n    0.609167012f, -0.793041960f,\n    0.607949785f, -0.793975478f,\n    0.606731127f, -0.794907126f,\n    0.605511041f, -0.795836905f,\n    0.604289531f, -0.796764810f,\n    0.603066599f, -0.797690841f,\n    0.601842247f, -0.798614995f,\n    0.600616479f, -0.799537269f,\n    0.599389298f, -0.800457662f,\n    0.598160707f, -0.801376172f,\n    0.596930708f, -0.802292796f,\n    0.595699304f, -0.803207531f,\n    0.594466499f, -0.804120377f,\n    0.593232295f, -0.805031331f,\n    0.591996695f, -0.805940391f,\n    0.590759702f, -0.806847554f,\n    0.589521319f, -0.807752818f,\n    0.588281548f, -0.808656182f,\n    0.587040394f, -0.809557642f,\n    0.585797857f, -0.810457198f,\n    0.584553943f, -0.811354847f,\n    0.583308653f, -0.812250587f,\n    0.582061990f, -0.813144415f,\n    0.580813958f, -0.814036330f,\n    0.579564559f, -0.814926329f,\n    0.578313796f, -0.815814411f,\n    0.577061673f, -0.816700573f,\n    0.575808191f, -0.817584813f,\n    0.574553355f, -0.818467130f,\n    0.573297167f, -0.819347520f,\n    0.572039629f, -0.820225983f,\n    0.570780746f, -0.821102515f,\n    0.569520519f, -0.821977115f,\n    0.568258953f, -0.822849781f,\n    0.566996049f, -0.823720511f,\n    0.565731811f, -0.824589303f,\n    0.564466242f, -0.825456154f,\n    0.563199344f, -0.826321063f,\n    0.561931121f, -0.827184027f,\n    0.560661576f, -0.828045045f,\n    0.559390712f, -0.828904115f,\n    0.558118531f, -0.829761234f,\n    0.556845037f, -0.830616400f,\n    0.555570233f, -0.831469612f,\n    0.554294121f, -0.832320868f,\n    0.553016706f, -0.833170165f,\n    0.551737988f, -0.834017501f,\n    0.550457973f, -0.834862875f,\n    0.549176662f, -0.835706284f,\n    0.547894059f, -0.836547727f,\n    0.546610167f, -0.837387202f,\n    0.545324988f, -0.838224706f,\n    0.544038527f, -0.839060237f,\n    0.542750785f, -0.839893794f,\n    0.541461766f, -0.840725375f,\n    0.540171473f, -0.841554977f,\n    0.538879909f, -0.842382600f,\n    0.537587076f, -0.843208240f,\n    0.536292979f, -0.844031895f,\n    0.534997620f, -0.844853565f,\n    0.533701002f, -0.845673247f,\n    0.532403128f, -0.846490939f,\n    0.531104001f, -0.847306639f,\n    0.529803625f, -0.848120345f,\n    0.528502002f, -0.848932055f,\n    0.527199135f, -0.849741768f,\n    0.525895027f, -0.850549481f,\n    0.524589683f, -0.851355193f,\n    0.523283103f, -0.852158902f,\n    0.521975293f, -0.852960605f,\n    0.520666254f, -0.853760301f,\n    0.519355990f, -0.854557988f,\n    0.518044504f, -0.855353665f,\n    0.516731799f, -0.856147328f,\n    0.515417878f, -0.856938977f,\n    0.514102744f, -0.857728610f,\n    0.512786401f, -0.858516224f,\n    0.511468850f, -0.859301818f,\n    0.510150097f, -0.860085390f,\n    0.508830143f, -0.860866939f,\n    0.507508991f, -0.861646461f,\n    0.506186645f, -0.862423956f,\n    0.504863109f, -0.863199422f,\n    0.503538384f, -0.863972856f,\n    0.502212474f, -0.864744258f,\n    0.500885383f, -0.865513624f,\n    0.499557113f, -0.866280954f,\n    0.498227667f, -0.867046246f,\n    0.496897049f, -0.867809497f,\n    0.495565262f, -0.868570706f,\n    0.494232309f, -0.869329871f,\n    0.492898192f, -0.870086991f,\n    0.491562916f, -0.870842063f,\n    0.490226483f, -0.871595087f,\n    0.488888897f, -0.872346059f,\n    0.487550160f, -0.873094978f,\n    0.486210276f, -0.873841843f,\n    0.484869248f, -0.874586652f,\n    0.483527079f, -0.875329403f,\n    0.482183772f, -0.876070094f,\n    0.480839331f, -0.876808724f,\n    0.479493758f, -0.877545290f,\n    0.478147056f, -0.878279792f,\n    0.476799230f, -0.879012226f,\n    0.475450282f, -0.879742593f,\n    0.474100215f, -0.880470889f,\n    0.472749032f, -0.881197113f,\n    0.471396737f, -0.881921264f,\n    0.470043332f, -0.882643340f,\n    0.468688822f, -0.883363339f,\n    0.467333209f, -0.884081259f,\n    0.465976496f, -0.884797098f,\n    0.464618686f, -0.885510856f,\n    0.463259784f, -0.886222530f,\n    0.461899791f, -0.886932119f,\n    0.460538711f, -0.887639620f,\n    0.459176548f, -0.888345033f,\n    0.457813304f, -0.889048356f,\n    0.456448982f, -0.889749586f,\n    0.455083587f, -0.890448723f,\n    0.453717121f, -0.891145765f,\n    0.452349587f, -0.891840709f,\n    0.450980989f, -0.892533555f,\n    0.449611330f, -0.893224301f,\n    0.448240612f, -0.893912945f,\n    0.446868840f, -0.894599486f,\n    0.445496017f, -0.895283921f,\n    0.444122145f, -0.895966250f,\n    0.442747228f, -0.896646470f,\n    0.441371269f, -0.897324581f,\n    0.439994271f, -0.898000580f,\n    0.438616239f, -0.898674466f,\n    0.437237174f, -0.899346237f,\n    0.435857080f, -0.900015892f,\n    0.434475961f, -0.900683429f,\n    0.433093819f, -0.901348847f,\n    0.431710658f, -0.902012144f,\n    0.430326481f, -0.902673318f,\n    0.428941292f, -0.903332368f,\n    0.427555093f, -0.903989293f,\n    0.426167889f, -0.904644091f,\n    0.424779681f, -0.905296759f,\n    0.423390474f, -0.905947298f,\n    0.422000271f, -0.906595705f,\n    0.420609074f, -0.907241978f,\n    0.419216888f, -0.907886116f,\n    0.417823716f, -0.908528119f,\n    0.416429560f, -0.909167983f,\n    0.415034424f, -0.909805708f,\n    0.413638312f, -0.910441292f,\n    0.412241227f, -0.911074734f,\n    0.410843171f, -0.911706032f,\n    0.409444149f, -0.912335185f,\n    0.408044163f, -0.912962190f,\n    0.406643217f, -0.913587048f,\n    0.405241314f, -0.914209756f,\n    0.403838458f, -0.914830312f,\n    0.402434651f, -0.915448716f,\n    0.401029897f, -0.916064966f,\n    0.399624200f, -0.916679060f,\n    0.398217562f, -0.917290997f,\n    0.396809987f, -0.917900776f,\n    0.395401479f, -0.918508394f,\n    0.393992040f, -0.919113852f,\n    0.392581674f, -0.919717146f,\n    0.391170384f, -0.920318277f,\n    0.389758174f, -0.920917242f,\n    0.388345047f, -0.921514039f,\n    0.386931006f, -0.922108669f,\n    0.385516054f, -0.922701128f,\n    0.384100195f, -0.923291417f,\n    0.382683432f, -0.923879533f,\n    0.381265769f, -0.924465474f,\n    0.379847209f, -0.925049241f,\n    0.378427755f, -0.925630831f,\n    0.377007410f, -0.926210242f,\n    0.375586178f, -0.926787474f,\n    0.374164063f, -0.927362526f,\n    0.372741067f, -0.927935395f,\n    0.371317194f, -0.928506080f,\n    0.369892447f, -0.929074581f,\n    0.368466830f, -0.929640896f,\n    0.367040346f, -0.930205023f,\n    0.365612998f, -0.930766961f,\n    0.364184790f, -0.931326709f,\n    0.362755724f, -0.931884266f,\n    0.361325806f, -0.932439629f,\n    0.359895037f, -0.932992799f,\n    0.358463421f, -0.933543773f,\n    0.357030961f, -0.934092550f,\n    0.355597662f, -0.934639130f,\n    0.354163525f, -0.935183510f,\n    0.352728556f, -0.935725689f,\n    0.351292756f, -0.936265667f,\n    0.349856130f, -0.936803442f,\n    0.348418680f, -0.937339012f,\n    0.346980411f, -0.937872376f,\n    0.345541325f, -0.938403534f,\n    0.344101426f, -0.938932484f,\n    0.342660717f, -0.939459224f,\n    0.341219202f, -0.939983753f,\n    0.339776884f, -0.940506071f,\n    0.338333767f, -0.941026175f,\n    0.336889853f, -0.941544065f,\n    0.335445147f, -0.942059740f,\n    0.333999651f, -0.942573198f,\n    0.332553370f, -0.943084437f,\n    0.331106306f, -0.943593458f,\n    0.329658463f, -0.944100258f,\n    0.328209844f, -0.944604837f,\n    0.326760452f, -0.945107193f,\n    0.325310292f, -0.945607325f,\n    0.323859367f, -0.946105232f,\n    0.322407679f, -0.946600913f,\n    0.320955232f, -0.947094366f,\n    0.319502031f, -0.947585591f,\n    0.318048077f, -0.948074586f,\n    0.316593376f, -0.948561350f,\n    0.315137929f, -0.949045882f,\n    0.313681740f, -0.949528181f,\n    0.312224814f, -0.950008245f,\n    0.310767153f, -0.950486074f,\n    0.309308760f, -0.950961666f,\n    0.307849640f, -0.951435021f,\n    0.306389795f, -0.951906137f,\n    0.304929230f, -0.952375013f,\n    0.303467947f, -0.952841648f,\n    0.302005949f, -0.953306040f,\n    0.300543241f, -0.953768190f,\n    0.299079826f, -0.954228095f,\n    0.297615707f, -0.954685755f,\n    0.296150888f, -0.955141168f,\n    0.294685372f, -0.955594334f,\n    0.293219163f, -0.956045251f,\n    0.291752263f, -0.956493919f,\n    0.290284677f, -0.956940336f,\n    0.288816408f, -0.957384501f,\n    0.287347460f, -0.957826413f,\n    0.285877835f, -0.958266071f,\n    0.284407537f, -0.958703475f,\n    0.282936570f, -0.959138622f,\n    0.281464938f, -0.959571513f,\n    0.279992643f, -0.960002146f,\n    0.278519689f, -0.960430519f,\n    0.277046080f, -0.960856633f,\n    0.275571819f, -0.961280486f,\n    0.274096910f, -0.961702077f,\n    0.272621355f, -0.962121404f,\n    0.271145160f, -0.962538468f,\n    0.269668326f, -0.962953267f,\n    0.268190857f, -0.963365800f,\n    0.266712757f, -0.963776066f,\n    0.265234030f, -0.964184064f,\n    0.263754679f, -0.964589793f,\n    0.262274707f, -0.964993253f,\n    0.260794118f, -0.965394442f,\n    0.259312915f, -0.965793359f,\n    0.257831102f, -0.966190003f,\n    0.256348682f, -0.966584374f,\n    0.254865660f, -0.966976471f,\n    0.253382037f, -0.967366292f,\n    0.251897818f, -0.967753837f,\n    0.250413007f, -0.968139105f,\n    0.248927606f, -0.968522094f,\n    0.247441619f, -0.968902805f,\n    0.245955050f, -0.969281235f,\n    0.244467903f, -0.969657385f,\n    0.242980180f, -0.970031253f,\n    0.241491885f, -0.970402839f,\n    0.240003022f, -0.970772141f,\n    0.238513595f, -0.971139158f,\n    0.237023606f, -0.971503891f,\n    0.235533059f, -0.971866337f,\n    0.234041959f, -0.972226497f,\n    0.232550307f, -0.972584369f,\n    0.231058108f, -0.972939952f,\n    0.229565366f, -0.973293246f,\n    0.228072083f, -0.973644250f,\n    0.226578264f, -0.973992962f,\n    0.225083911f, -0.974339383f,\n    0.223589029f, -0.974683511f,\n    0.222093621f, -0.975025345f,\n    0.220597690f, -0.975364885f,\n    0.219101240f, -0.975702130f,\n    0.217604275f, -0.976037079f,\n    0.216106797f, -0.976369731f,\n    0.214608811f, -0.976700086f,\n    0.213110320f, -0.977028143f,\n    0.211611327f, -0.977353900f,\n    0.210111837f, -0.977677358f,\n    0.208611852f, -0.977998515f,\n    0.207111376f, -0.978317371f,\n    0.205610413f, -0.978633924f,\n    0.204108966f, -0.978948175f,\n    0.202607039f, -0.979260123f,\n    0.201104635f, -0.979569766f,\n    0.199601758f, -0.979877104f,\n    0.198098411f, -0.980182136f,\n    0.196594598f, -0.980484862f,\n    0.195090322f, -0.980785280f,\n    0.193585587f, -0.981083391f,\n    0.192080397f, -0.981379193f,\n    0.190574755f, -0.981672686f,\n    0.189068664f, -0.981963869f,\n    0.187562129f, -0.982252741f,\n    0.186055152f, -0.982539302f,\n    0.184547737f, -0.982823551f,\n    0.183039888f, -0.983105487f,\n    0.181531608f, -0.983385110f,\n    0.180022901f, -0.983662419f,\n    0.178513771f, -0.983937413f,\n    0.177004220f, -0.984210092f,\n    0.175494253f, -0.984480455f,\n    0.173983873f, -0.984748502f,\n    0.172473084f, -0.985014231f,\n    0.170961889f, -0.985277642f,\n    0.169450291f, -0.985538735f,\n    0.167938295f, -0.985797509f,\n    0.166425904f, -0.986053963f,\n    0.164913120f, -0.986308097f,\n    0.163399949f, -0.986559910f,\n    0.161886394f, -0.986809402f,\n    0.160372457f, -0.987056571f,\n    0.158858143f, -0.987301418f,\n    0.157343456f, -0.987543942f,\n    0.155828398f, -0.987784142f,\n    0.154312973f, -0.988022017f,\n    0.152797185f, -0.988257568f,\n    0.151281038f, -0.988490793f,\n    0.149764535f, -0.988721692f,\n    0.148247679f, -0.988950265f,\n    0.146730474f, -0.989176510f,\n    0.145212925f, -0.989400428f,\n    0.143695033f, -0.989622017f,\n    0.142176804f, -0.989841278f,\n    0.140658239f, -0.990058210f,\n    0.139139344f, -0.990272812f,\n    0.137620122f, -0.990485084f,\n    0.136100575f, -0.990695025f,\n    0.134580709f, -0.990902635f,\n    0.133060525f, -0.991107914f,\n    0.131540029f, -0.991310860f,\n    0.130019223f, -0.991511473f,\n    0.128498111f, -0.991709754f,\n    0.126976696f, -0.991905700f,\n    0.125454983f, -0.992099313f,\n    0.123932975f, -0.992290591f,\n    0.122410675f, -0.992479535f,\n    0.120888087f, -0.992666142f,\n    0.119365215f, -0.992850414f,\n    0.117842062f, -0.993032350f,\n    0.116318631f, -0.993211949f,\n    0.114794927f, -0.993389211f,\n    0.113270952f, -0.993564136f,\n    0.111746711f, -0.993736722f,\n    0.110222207f, -0.993906970f,\n    0.108697444f, -0.994074879f,\n    0.107172425f, -0.994240449f,\n    0.105647154f, -0.994403680f,\n    0.104121634f, -0.994564571f,\n    0.102595869f, -0.994723121f,\n    0.101069863f, -0.994879331f,\n    0.099543619f, -0.995033199f,\n    0.098017140f, -0.995184727f,\n    0.096490431f, -0.995333912f,\n    0.094963495f, -0.995480755f,\n    0.093436336f, -0.995625256f,\n    0.091908956f, -0.995767414f,\n    0.090381361f, -0.995907229f,\n    0.088853553f, -0.996044701f,\n    0.087325535f, -0.996179829f,\n    0.085797312f, -0.996312612f,\n    0.084268888f, -0.996443051f,\n    0.082740265f, -0.996571146f,\n    0.081211447f, -0.996696895f,\n    0.079682438f, -0.996820299f,\n    0.078153242f, -0.996941358f,\n    0.076623861f, -0.997060070f,\n    0.075094301f, -0.997176437f,\n    0.073564564f, -0.997290457f,\n    0.072034653f, -0.997402130f,\n    0.070504573f, -0.997511456f,\n    0.068974328f, -0.997618435f,\n    0.067443920f, -0.997723067f,\n    0.065913353f, -0.997825350f,\n    0.064382631f, -0.997925286f,\n    0.062851758f, -0.998022874f,\n    0.061320736f, -0.998118113f,\n    0.059789571f, -0.998211003f,\n    0.058258265f, -0.998301545f,\n    0.056726821f, -0.998389737f,\n    0.055195244f, -0.998475581f,\n    0.053663538f, -0.998559074f,\n    0.052131705f, -0.998640218f,\n    0.050599749f, -0.998719012f,\n    0.049067674f, -0.998795456f,\n    0.047535484f, -0.998869550f,\n    0.046003182f, -0.998941293f,\n    0.044470772f, -0.999010686f,\n    0.042938257f, -0.999077728f,\n    0.041405641f, -0.999142419f,\n    0.039872928f, -0.999204759f,\n    0.038340120f, -0.999264747f,\n    0.036807223f, -0.999322385f,\n    0.035274239f, -0.999377670f,\n    0.033741172f, -0.999430605f,\n    0.032208025f, -0.999481187f,\n    0.030674803f, -0.999529418f,\n    0.029141509f, -0.999575296f,\n    0.027608146f, -0.999618822f,\n    0.026074718f, -0.999659997f,\n    0.024541229f, -0.999698819f,\n    0.023007681f, -0.999735288f,\n    0.021474080f, -0.999769405f,\n    0.019940429f, -0.999801170f,\n    0.018406730f, -0.999830582f,\n    0.016872988f, -0.999857641f,\n    0.015339206f, -0.999882347f,\n    0.013805389f, -0.999904701f,\n    0.012271538f, -0.999924702f,\n    0.010737659f, -0.999942350f,\n    0.009203755f, -0.999957645f,\n    0.007669829f, -0.999970586f,\n    0.006135885f, -0.999981175f,\n    0.004601926f, -0.999989411f,\n    0.003067957f, -0.999995294f,\n    0.001533980f, -0.999998823f\n};\n\n#endif /* if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALL_TABLES) */\n\n/**\n  @ingroup RealFFT\n */\n\n/**\n  @addtogroup RealFFT_Table Real FFT Tables\n  @{\n */\n\n/**\n  @par\n  Generation of realCoefA array:\n  @par\n  n = 4096\n  <pre>for (i = 0; i < n; i++)\n  {\n     pATable[2 * i]     = 0.5 * ( 1.0 - sin (2 * PI / (double) (2 * n) * (double) i));\n     pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));\n  }</pre>\n */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_REALCOEF_F32)\nconst float32_t realCoefA[8192] = {\n  0.500000000000000f, -0.500000000000000f, 0.499616503715515f, -0.499999850988388f,\n  0.499233007431030f, -0.499999403953552f, 0.498849511146545f, -0.499998688697815f,\n  0.498466014862061f, -0.499997645616531f, 0.498082518577576f, -0.499996334314346f,\n  0.497699022293091f, -0.499994695186615f, 0.497315555810928f, -0.499992787837982f,\n  0.496932059526443f, -0.499990582466125f, 0.496548563241959f, -0.499988079071045f,\n  0.496165096759796f, -0.499985307455063f, 0.495781600475311f, -0.499982208013535f,\n  0.495398133993149f, -0.499978810548782f, 0.495014637708664f, -0.499975144863129f,\n  0.494631171226501f, -0.499971181154251f, 0.494247704744339f, -0.499966919422150f,\n  0.493864238262177f, -0.499962359666824f, 0.493480771780014f, -0.499957501888275f,\n  0.493097305297852f, -0.499952346086502f, 0.492713838815689f, -0.499946922063828f,\n  0.492330402135849f, -0.499941170215607f, 0.491946935653687f, -0.499935150146484f,\n  0.491563498973846f, -0.499928832054138f, 0.491180062294006f, -0.499922215938568f,\n  0.490796625614166f, -0.499915301799774f, 0.490413218736649f, -0.499908089637756f,\n  0.490029782056808f, -0.499900579452515f, 0.489646375179291f, -0.499892801046371f,\n  0.489262968301773f, -0.499884694814682f, 0.488879561424255f, -0.499876320362091f,\n  0.488496154546738f, -0.499867647886276f, 0.488112777471542f, -0.499858677387238f,\n  0.487729400396347f, -0.499849408864975f, 0.487346023321152f, -0.499839842319489f,\n  0.486962646245956f, -0.499830007553101f, 0.486579269170761f, -0.499819844961166f,\n  0.486195921897888f, -0.499809414148331f, 0.485812574625015f, -0.499798685312271f,\n  0.485429257154465f, -0.499787658452988f, 0.485045909881592f, -0.499776333570480f,\n  0.484662592411041f, -0.499764710664749f, 0.484279274940491f, -0.499752789735794f,\n  0.483895987272263f, -0.499740600585938f, 0.483512699604034f, -0.499728083610535f,\n  0.483129411935806f, -0.499715298414230f, 0.482746154069901f, -0.499702215194702f,\n  0.482362866401672f, -0.499688833951950f, 0.481979638338089f, -0.499675154685974f,\n  0.481596380472183f, -0.499661177396774f, 0.481213152408600f, -0.499646931886673f,\n  0.480829954147339f, -0.499632388353348f, 0.480446726083755f, -0.499617516994476f,\n  0.480063527822495f, -0.499602377414703f, 0.479680359363556f, -0.499586939811707f,\n  0.479297190904617f, -0.499571204185486f, 0.478914022445679f, -0.499555170536041f,\n  0.478530883789063f, -0.499538868665695f, 0.478147745132446f, -0.499522238969803f,\n  0.477764606475830f, -0.499505341053009f, 0.477381497621536f, -0.499488145112991f,\n  0.476998418569565f, -0.499470651149750f, 0.476615339517593f, -0.499452859163284f,\n  0.476232260465622f, -0.499434769153595f, 0.475849211215973f, -0.499416410923004f,\n  0.475466161966324f, -0.499397724866867f, 0.475083142518997f, -0.499378770589828f,\n  0.474700123071671f, -0.499359518289566f, 0.474317133426666f, -0.499339967966080f,\n  0.473934143781662f, -0.499320119619370f, 0.473551183938980f, -0.499299973249435f,\n  0.473168224096298f, -0.499279528856277f, 0.472785294055939f, -0.499258816242218f,\n  0.472402364015579f, -0.499237775802612f, 0.472019463777542f, -0.499216467142105f,\n  0.471636593341827f, -0.499194860458374f, 0.471253722906113f, -0.499172955751419f,\n  0.470870882272720f, -0.499150782823563f, 0.470488041639328f, -0.499128282070160f,\n  0.470105201005936f, -0.499105513095856f, 0.469722419977188f, -0.499082416296005f,\n  0.469339638948441f, -0.499059051275253f, 0.468956857919693f, -0.499035388231277f,\n  0.468574106693268f, -0.499011427164078f, 0.468191385269165f, -0.498987197875977f,\n  0.467808693647385f, -0.498962640762329f, 0.467426002025604f, -0.498937815427780f,\n  0.467043310403824f, -0.498912662267685f, 0.466660678386688f, -0.498887240886688f,\n  0.466278046369553f, -0.498861521482468f, 0.465895414352417f, -0.498835533857346f,\n  0.465512841939926f, -0.498809218406677f, 0.465130269527435f, -0.498782604932785f,\n  0.464747726917267f, -0.498755723237991f, 0.464365184307098f, -0.498728543519974f,\n  0.463982671499252f, -0.498701065778732f, 0.463600188493729f, -0.498673290014267f,\n  0.463217705488205f, -0.498645216226578f, 0.462835282087326f, -0.498616874217987f,\n  0.462452858686447f, -0.498588204383850f, 0.462070435285568f, -0.498559266328812f,\n  0.461688071489334f, -0.498530030250549f, 0.461305707693100f, -0.498500496149063f,\n  0.460923373699188f, -0.498470664024353f, 0.460541069507599f, -0.498440563678741f,\n  0.460158795118332f, -0.498410135507584f, 0.459776520729065f, -0.498379439115524f,\n  0.459394276142120f, -0.498348444700241f, 0.459012061357498f, -0.498317152261734f,\n  0.458629876375198f, -0.498285561800003f, 0.458247691392899f, -0.498253703117371f,\n  0.457865566015244f, -0.498221516609192f, 0.457483440637589f, -0.498189061880112f,\n  0.457101345062256f, -0.498156309127808f, 0.456719279289246f, -0.498123258352280f,\n  0.456337243318558f, -0.498089909553528f, 0.455955207347870f, -0.498056292533875f,\n  0.455573230981827f, -0.498022347688675f, 0.455191254615784f, -0.497988134622574f,\n  0.454809308052063f, -0.497953623533249f, 0.454427421092987f, -0.497918814420700f,\n  0.454045534133911f, -0.497883707284927f, 0.453663676977158f, -0.497848302125931f,\n  0.453281819820404f, -0.497812628746033f, 0.452900022268295f, -0.497776657342911f,\n  0.452518254518509f, -0.497740387916565f, 0.452136516571045f, -0.497703820466995f,\n  0.451754778623581f, -0.497666954994202f, 0.451373100280762f, -0.497629791498184f,\n  0.450991421937943f, -0.497592359781265f, 0.450609803199768f, -0.497554630041122f,\n  0.450228184461594f, -0.497516602277756f, 0.449846625328064f, -0.497478276491165f,\n  0.449465066194534f, -0.497439652681351f, 0.449083566665649f, -0.497400760650635f,\n  0.448702067136765f, -0.497361570596695f, 0.448320597410202f, -0.497322082519531f,\n  0.447939187288284f, -0.497282296419144f, 0.447557777166367f, -0.497242212295532f,\n  0.447176426649094f, -0.497201830148697f, 0.446795076131821f, -0.497161179780960f,\n  0.446413785219193f, -0.497120231389999f, 0.446032524108887f, -0.497078984975815f,\n  0.445651292800903f, -0.497037440538406f, 0.445270061492920f, -0.496995598077774f,\n  0.444888889789581f, -0.496953487396240f, 0.444507747888565f, -0.496911078691483f,\n  0.444126635789871f, -0.496868371963501f, 0.443745553493500f, -0.496825367212296f,\n  0.443364530801773f, -0.496782064437866f, 0.442983508110046f, -0.496738493442535f,\n  0.442602545022964f, -0.496694594621658f, 0.442221581935883f, -0.496650427579880f,\n  0.441840678453445f, -0.496605962514877f, 0.441459804773331f, -0.496561229228973f,\n  0.441078960895538f, -0.496516168117523f, 0.440698176622391f, -0.496470838785172f,\n  0.440317392349243f, -0.496425211429596f, 0.439936667680740f, -0.496379286050797f,\n  0.439555943012238f, -0.496333062648773f, 0.439175277948380f, -0.496286571025848f,\n  0.438794672489166f, -0.496239781379700f, 0.438414067029953f, -0.496192663908005f,\n  0.438033521175385f, -0.496145308017731f, 0.437653005123138f, -0.496097624301910f,\n  0.437272518873215f, -0.496049642562866f, 0.436892062425613f, -0.496001392602921f,\n  0.436511665582657f, -0.495952844619751f, 0.436131268739700f, -0.495903998613358f,\n  0.435750931501389f, -0.495854884386063f, 0.435370653867722f, -0.495805442333221f,\n  0.434990376234055f, -0.495755732059479f, 0.434610158205032f, -0.495705723762512f,\n  0.434229999780655f, -0.495655417442322f, 0.433849841356277f, -0.495604842901230f,\n  0.433469742536545f, -0.495553970336914f, 0.433089673519135f, -0.495502769947052f,\n  0.432709634304047f, -0.495451331138611f, 0.432329654693604f, -0.495399564504623f,\n  0.431949704885483f, -0.495347499847412f, 0.431569814682007f, -0.495295166969299f,\n  0.431189924478531f, -0.495242536067963f, 0.430810123682022f, -0.495189607143402f,\n  0.430430322885513f, -0.495136409997940f, 0.430050581693649f, -0.495082914829254f,\n  0.429670870304108f, -0.495029091835022f, 0.429291218519211f, -0.494975030422211f,\n  0.428911596536636f, -0.494920641183853f, 0.428532034158707f, -0.494865983724594f,\n  0.428152471780777f, -0.494810998439789f, 0.427772998809814f, -0.494755744934082f,\n  0.427393525838852f, -0.494700223207474f, 0.427014142274857f, -0.494644373655319f,\n  0.426634758710861f, -0.494588255882263f, 0.426255434751511f, -0.494531840085983f,\n  0.425876170396805f, -0.494475126266479f, 0.425496935844421f, -0.494418144226074f,\n  0.425117731094360f, -0.494360834360123f, 0.424738585948944f, -0.494303256273270f,\n  0.424359470605850f, -0.494245409965515f, 0.423980414867401f, -0.494187235832214f,\n  0.423601418733597f, -0.494128793478012f, 0.423222452402115f, -0.494070053100586f,\n  0.422843515872955f, -0.494011014699936f, 0.422464638948441f, -0.493951678276062f,\n  0.422085791826248f, -0.493892073631287f, 0.421707004308701f, -0.493832170963287f,\n  0.421328276395798f, -0.493771970272064f, 0.420949578285217f, -0.493711471557617f,\n  0.420570939779282f, -0.493650704622269f, 0.420192331075668f, -0.493589639663696f,\n  0.419813781976700f, -0.493528276681900f, 0.419435262680054f, -0.493466645479202f,\n  0.419056802988052f, -0.493404686450958f, 0.418678402900696f, -0.493342459201813f,\n  0.418300032615662f, -0.493279963731766f, 0.417921721935272f, -0.493217140436172f,\n  0.417543441057205f, -0.493154048919678f, 0.417165219783783f, -0.493090659379959f,\n  0.416787058115005f, -0.493026971817017f, 0.416408926248550f, -0.492963016033173f,\n  0.416030853986740f, -0.492898762226105f, 0.415652841329575f, -0.492834210395813f,\n  0.415274858474731f, -0.492769360542297f, 0.414896935224533f, -0.492704242467880f,\n  0.414519041776657f, -0.492638826370239f, 0.414141237735748f, -0.492573112249374f,\n  0.413763463497162f, -0.492507129907608f, 0.413385748863220f, -0.492440819740295f,\n  0.413008064031601f, -0.492374241352081f, 0.412630438804626f, -0.492307394742966f,\n  0.412252873182297f, -0.492240220308304f, 0.411875367164612f, -0.492172777652740f,\n  0.411497890949249f, -0.492105036973953f, 0.411120474338531f, -0.492037028074265f,\n  0.410743117332459f, -0.491968721151352f, 0.410365819931030f, -0.491900116205215f,\n  0.409988552331924f, -0.491831213235855f, 0.409611344337463f, -0.491762012243271f,\n  0.409234195947647f, -0.491692543029785f, 0.408857107162476f, -0.491622805595398f,\n  0.408480048179626f, -0.491552740335464f, 0.408103078603745f, -0.491482406854630f,\n  0.407726138830185f, -0.491411775350571f, 0.407349258661270f, -0.491340845823288f,\n  0.406972438097000f, -0.491269648075104f, 0.406595647335052f, -0.491198152303696f,\n  0.406218945980072f, -0.491126358509064f, 0.405842274427414f, -0.491054296493530f,\n  0.405465662479401f, -0.490981936454773f, 0.405089110136032f, -0.490909278392792f,\n  0.404712617397308f, -0.490836352109909f, 0.404336184263229f, -0.490763127803802f,\n  0.403959810733795f, -0.490689605474472f, 0.403583467006683f, -0.490615785121918f,\n  0.403207212686539f, -0.490541696548462f, 0.402830988168716f, -0.490467309951782f,\n  0.402454853057861f, -0.490392625331879f, 0.402078747749329f, -0.490317672491074f,\n  0.401702702045441f, -0.490242421627045f, 0.401326715946198f, -0.490166902542114f,\n  0.400950789451599f, -0.490091055631638f, 0.400574922561646f, -0.490014940500259f,\n  0.400199115276337f, -0.489938557147980f, 0.399823367595673f, -0.489861875772476f,\n  0.399447679519653f, -0.489784896373749f, 0.399072051048279f, -0.489707618951797f,\n  0.398696482181549f, -0.489630073308945f, 0.398320972919464f, -0.489552229642868f,\n  0.397945523262024f, -0.489474087953568f, 0.397570133209229f, -0.489395678043365f,\n  0.397194802761078f, -0.489316970109940f, 0.396819531917572f, -0.489237964153290f,\n  0.396444320678711f, -0.489158689975739f, 0.396069169044495f, -0.489079117774963f,\n  0.395694077014923f, -0.488999247550964f, 0.395319044589996f, -0.488919109106064f,\n  0.394944071769714f, -0.488838672637939f, 0.394569188356400f, -0.488757967948914f,\n  0.394194334745407f, -0.488676935434341f, 0.393819570541382f, -0.488595664501190f,\n  0.393444836139679f, -0.488514065742493f, 0.393070191144943f, -0.488432198762894f,\n  0.392695605754852f, -0.488350033760071f, 0.392321079969406f, -0.488267600536346f,\n  0.391946613788605f, -0.488184869289398f, 0.391572207212448f, -0.488101840019226f,\n  0.391197860240936f, -0.488018542528152f, 0.390823602676392f, -0.487934947013855f,\n  0.390449374914169f, -0.487851053476334f, 0.390075236558914f, -0.487766891717911f,\n  0.389701157808304f, -0.487682431936264f, 0.389327138662338f, -0.487597703933716f,\n  0.388953179121017f, -0.487512677907944f, 0.388579308986664f, -0.487427353858948f,\n  0.388205498456955f, -0.487341761589050f, 0.387831717729568f, -0.487255871295929f,\n  0.387458056211472f, -0.487169682979584f, 0.387084424495697f, -0.487083226442337f,\n  0.386710882186890f, -0.486996471881866f, 0.386337369680405f, -0.486909449100494f,\n  0.385963946580887f, -0.486822128295898f, 0.385590612888336f, -0.486734509468079f,\n  0.385217308998108f, -0.486646622419357f, 0.384844094514847f, -0.486558437347412f,\n  0.384470939636230f, -0.486469984054565f, 0.384097874164581f, -0.486381232738495f,\n  0.383724838495255f, -0.486292183399200f, 0.383351892232895f, -0.486202865839005f,\n  0.382979035377502f, -0.486113250255585f, 0.382606208324432f, -0.486023366451263f,\n  0.382233470678329f, -0.485933154821396f, 0.381860792636871f, -0.485842704772949f,\n  0.381488204002380f, -0.485751956701279f, 0.381115674972534f, -0.485660910606384f,\n  0.380743205547333f, -0.485569566488266f, 0.380370795726776f, -0.485477954149246f,\n  0.379998475313187f, -0.485386073589325f, 0.379626244306564f, -0.485293895006180f,\n  0.379254043102264f, -0.485201418399811f, 0.378881961107254f, -0.485108673572540f,\n  0.378509908914566f, -0.485015630722046f, 0.378137946128845f, -0.484922289848328f,\n  0.377766042947769f, -0.484828680753708f, 0.377394229173660f, -0.484734803438187f,\n  0.377022475004196f, -0.484640628099442f, 0.376650810241699f, -0.484546154737473f,\n  0.376279205083847f, -0.484451413154602f, 0.375907659530640f, -0.484356373548508f,\n  0.375536203384399f, -0.484261035919189f, 0.375164806842804f, -0.484165430068970f,\n  0.374793499708176f, -0.484069555997849f, 0.374422252178192f, -0.483973383903503f,\n  0.374051094055176f, -0.483876913785934f, 0.373679995536804f, -0.483780175447464f,\n  0.373308986425400f, -0.483683139085770f, 0.372938036918640f, -0.483585834503174f,\n  0.372567176818848f, -0.483488231897354f, 0.372196376323700f, -0.483390361070633f,\n  0.371825665235519f, -0.483292192220688f, 0.371455013751984f, -0.483193725347519f,\n  0.371084451675415f, -0.483094990253448f, 0.370713949203491f, -0.482995986938477f,\n  0.370343536138535f, -0.482896685600281f, 0.369973212480545f, -0.482797086238861f,\n  0.369602948427200f, -0.482697218656540f, 0.369232743978500f, -0.482597053050995f,\n  0.368862658739090f, -0.482496619224548f, 0.368492603302002f, -0.482395917177200f,\n  0.368122667074203f, -0.482294887304306f, 0.367752790451050f, -0.482193619012833f,\n  0.367382973432541f, -0.482092022895813f, 0.367013275623322f, -0.481990188360214f,\n  0.366643607616425f, -0.481888025999069f, 0.366274058818817f, -0.481785595417023f,\n  0.365904569625854f, -0.481682896614075f, 0.365535169839859f, -0.481579899787903f,\n  0.365165829658508f, -0.481476634740829f, 0.364796578884125f, -0.481373071670532f,\n  0.364427417516708f, -0.481269240379334f, 0.364058345556259f, -0.481165111064911f,\n  0.363689333200455f, -0.481060713529587f, 0.363320380449295f, -0.480956017971039f,\n  0.362951546907425f, -0.480851024389267f, 0.362582772970200f, -0.480745792388916f,\n  0.362214088439941f, -0.480640232563019f, 0.361845493316650f, -0.480534434318542f,\n  0.361476957798004f, -0.480428308248520f, 0.361108511686325f, -0.480321943759918f,\n  0.360740154981613f, -0.480215251445770f, 0.360371887683868f, -0.480108320713043f,\n  0.360003679990768f, -0.480001062154770f, 0.359635561704636f, -0.479893565177917f,\n  0.359267532825470f, -0.479785770177841f, 0.358899593353271f, -0.479677677154541f,\n  0.358531713485718f, -0.479569315910339f, 0.358163923025131f, -0.479460656642914f,\n  0.357796221971512f, -0.479351729154587f, 0.357428610324860f, -0.479242533445358f,\n  0.357061088085175f, -0.479133039712906f, 0.356693625450134f, -0.479023247957230f,\n  0.356326282024384f, -0.478913217782974f, 0.355958998203278f, -0.478802859783173f,\n  0.355591803789139f, -0.478692263364792f, 0.355224698781967f, -0.478581339120865f,\n  0.354857653379440f, -0.478470176458359f, 0.354490727186203f, -0.478358715772629f,\n  0.354123860597610f, -0.478246957063675f, 0.353757113218308f, -0.478134930133820f,\n  0.353390425443649f, -0.478022634983063f, 0.353023827075958f, -0.477910041809082f,\n  0.352657318115234f, -0.477797180414200f, 0.352290898561478f, -0.477684020996094f,\n  0.351924568414688f, -0.477570593357086f, 0.351558297872543f, -0.477456867694855f,\n  0.351192146539688f, -0.477342873811722f, 0.350826084613800f, -0.477228611707687f,\n  0.350460082292557f, -0.477114051580429f, 0.350094199180603f, -0.476999223232269f,\n  0.349728375673294f, -0.476884096860886f, 0.349362671375275f, -0.476768702268600f,\n  0.348997026681900f, -0.476653009653091f, 0.348631471395493f, -0.476537048816681f,\n  0.348266035318375f, -0.476420819759369f, 0.347900658845901f, -0.476304292678833f,\n  0.347535371780396f, -0.476187497377396f, 0.347170203924179f, -0.476070433855057f,\n  0.346805095672607f, -0.475953072309494f, 0.346440106630325f, -0.475835442543030f,\n  0.346075177192688f, -0.475717514753342f, 0.345710366964340f, -0.475599318742752f,\n  0.345345616340637f, -0.475480824708939f, 0.344980984926224f, -0.475362062454224f,\n  0.344616413116455f, -0.475243031978607f, 0.344251960515976f, -0.475123733282089f,\n  0.343887597322464f, -0.475004136562347f, 0.343523323535919f, -0.474884241819382f,\n  0.343159139156342f, -0.474764078855515f, 0.342795044183731f, -0.474643647670746f,\n  0.342431038618088f, -0.474522948265076f, 0.342067122459412f, -0.474401950836182f,\n  0.341703325510025f, -0.474280685186386f, 0.341339588165283f, -0.474159121513367f,\n  0.340975970029831f, -0.474037289619446f, 0.340612411499023f, -0.473915189504623f,\n  0.340248972177505f, -0.473792791366577f, 0.339885622262955f, -0.473670125007629f,\n  0.339522391557693f, -0.473547190427780f, 0.339159220457077f, -0.473423957824707f,\n  0.338796168565750f, -0.473300457000732f, 0.338433176279068f, -0.473176687955856f,\n  0.338070303201675f, -0.473052620887756f, 0.337707549333572f, -0.472928285598755f,\n  0.337344855070114f, -0.472803652286530f, 0.336982280015945f, -0.472678780555725f,\n  0.336619764566422f, -0.472553610801697f, 0.336257368326187f, -0.472428143024445f,\n  0.335895091295242f, -0.472302407026291f, 0.335532873868942f, -0.472176402807236f,\n  0.335170775651932f, -0.472050130367279f, 0.334808766841888f, -0.471923559904099f,\n  0.334446847438812f, -0.471796721220016f, 0.334085017442703f, -0.471669614315033f,\n  0.333723306655884f, -0.471542209386826f, 0.333361685276031f, -0.471414536237717f,\n  0.333000183105469f, -0.471286594867706f, 0.332638740539551f, -0.471158385276794f,\n  0.332277417182922f, -0.471029877662659f, 0.331916213035584f, -0.470901101827621f,\n  0.331555068492889f, -0.470772027969360f, 0.331194043159485f, -0.470642685890198f,\n  0.330833107233047f, -0.470513075590134f, 0.330472290515900f, -0.470383197069168f,\n  0.330111563205719f, -0.470253020524979f, 0.329750925302505f, -0.470122605562210f,\n  0.329390406608582f, -0.469991862773895f, 0.329029977321625f, -0.469860881567001f,\n  0.328669637441635f, -0.469729602336884f, 0.328309416770935f, -0.469598054885864f,\n  0.327949285507202f, -0.469466239213943f, 0.327589273452759f, -0.469334155321121f,\n  0.327229350805283f, -0.469201773405075f, 0.326869517564774f, -0.469069123268127f,\n  0.326509803533554f, -0.468936175107956f, 0.326150178909302f, -0.468802988529205f,\n  0.325790673494339f, -0.468669503927231f, 0.325431257486343f, -0.468535751104355f,\n  0.325071930885315f, -0.468401730060577f, 0.324712723493576f, -0.468267410993576f,\n  0.324353635311127f, -0.468132823705673f, 0.323994606733322f, -0.467997968196869f,\n  0.323635727167130f, -0.467862844467163f, 0.323276937007904f, -0.467727422714233f,\n  0.322918236255646f, -0.467591762542725f, 0.322559654712677f, -0.467455804347992f,\n  0.322201162576675f, -0.467319577932358f, 0.321842789649963f, -0.467183053493500f,\n  0.321484506130219f, -0.467046260833740f, 0.321126341819763f, -0.466909229755402f,\n  0.320768296718597f, -0.466771900653839f, 0.320410341024399f, -0.466634273529053f,\n  0.320052474737167f, -0.466496407985687f, 0.319694727659225f, -0.466358244419098f,\n  0.319337099790573f, -0.466219812631607f, 0.318979561328888f, -0.466081112623215f,\n  0.318622142076492f, -0.465942144393921f, 0.318264812231064f, -0.465802878141403f,\n  0.317907601594925f, -0.465663343667984f, 0.317550510168076f, -0.465523540973663f,\n  0.317193508148193f, -0.465383470058441f, 0.316836595535278f, -0.465243130922318f,\n  0.316479831933975f, -0.465102523565292f, 0.316123157739639f, -0.464961618185043f,\n  0.315766572952271f, -0.464820444583893f, 0.315410137176514f, -0.464679002761841f,\n  0.315053790807724f, -0.464537292718887f, 0.314697533845901f, -0.464395314455032f,\n  0.314341396093369f, -0.464253038167953f, 0.313985377550125f, -0.464110493659973f,\n  0.313629478216171f, -0.463967710733414f, 0.313273668289185f, -0.463824629783630f,\n  0.312917977571487f, -0.463681250810623f, 0.312562376260757f, -0.463537633419037f,\n  0.312206923961639f, -0.463393747806549f, 0.311851561069489f, -0.463249564170837f,\n  0.311496287584305f, -0.463105112314224f, 0.311141163110733f, -0.462960392236710f,\n  0.310786128044128f, -0.462815403938293f, 0.310431212186813f, -0.462670147418976f,\n  0.310076385736465f, -0.462524622678757f, 0.309721708297729f, -0.462378799915314f,\n  0.309367120265961f, -0.462232738733292f, 0.309012651443481f, -0.462086379528046f,\n  0.308658272027969f, -0.461939752101898f, 0.308304041624069f, -0.461792886257172f,\n  0.307949900627136f, -0.461645722389221f, 0.307595878839493f, -0.461498260498047f,\n  0.307241976261139f, -0.461350560188293f, 0.306888192892075f, -0.461202591657639f,\n  0.306534498929977f, -0.461054325103760f, 0.306180924177170f, -0.460905820131302f,\n  0.305827468633652f, -0.460757017135620f, 0.305474132299423f, -0.460607945919037f,\n  0.305120915174484f, -0.460458606481552f, 0.304767817258835f, -0.460309028625488f,\n  0.304414808750153f, -0.460159152746201f, 0.304061919450760f, -0.460008978843689f,\n  0.303709149360657f, -0.459858566522598f, 0.303356528282166f, -0.459707885980606f,\n  0.303003966808319f, -0.459556937217712f, 0.302651554346085f, -0.459405690431595f,\n  0.302299261093140f, -0.459254205226898f, 0.301947087049484f, -0.459102421998978f,\n  0.301595002412796f, -0.458950400352478f, 0.301243066787720f, -0.458798080682755f,\n  0.300891220569611f, -0.458645492792130f, 0.300539493560791f, -0.458492636680603f,\n  0.300187885761261f, -0.458339542150497f, 0.299836426973343f, -0.458186149597168f,\n  0.299485057592392f, -0.458032488822937f, 0.299133807420731f, -0.457878559827805f,\n  0.298782676458359f, -0.457724362611771f, 0.298431664705276f, -0.457569897174835f,\n  0.298080772161484f, -0.457415163516998f, 0.297729998826981f, -0.457260161638260f,\n  0.297379344701767f, -0.457104891538620f, 0.297028809785843f, -0.456949323415756f,\n  0.296678394079208f, -0.456793516874313f, 0.296328097581863f, -0.456637442111969f,\n  0.295977920293808f, -0.456481099128723f, 0.295627862215042f, -0.456324487924576f,\n  0.295277923345566f, -0.456167578697205f, 0.294928103685379f, -0.456010431051254f,\n  0.294578403234482f, -0.455853015184402f, 0.294228851795197f, -0.455695331096649f,\n  0.293879389762878f, -0.455537378787994f, 0.293530046939850f, -0.455379128456116f,\n  0.293180853128433f, -0.455220639705658f, 0.292831748723984f, -0.455061882734299f,\n  0.292482793331146f, -0.454902857542038f, 0.292133957147598f, -0.454743564128876f,\n  0.291785210371017f, -0.454584002494812f, 0.291436612606049f, -0.454424172639847f,\n  0.291088134050369f, -0.454264044761658f, 0.290739774703979f, -0.454103678464890f,\n  0.290391564369202f, -0.453943043947220f, 0.290043443441391f, -0.453782171010971f,\n  0.289695471525192f, -0.453621000051498f, 0.289347589015961f, -0.453459560871124f,\n  0.288999855518341f, -0.453297853469849f, 0.288652241230011f, -0.453135877847672f,\n  0.288304775953293f, -0.452973634004593f, 0.287957400083542f, -0.452811151742935f,\n  0.287610173225403f, -0.452648371458054f, 0.287263035774231f, -0.452485352754593f,\n  0.286916047334671f, -0.452322036027908f, 0.286569178104401f, -0.452158480882645f,\n  0.286222457885742f, -0.451994657516479f, 0.285875827074051f, -0.451830536127090f,\n  0.285529345273972f, -0.451666176319122f, 0.285182982683182f, -0.451501548290253f,\n  0.284836769104004f, -0.451336652040482f, 0.284490644931793f, -0.451171487569809f,\n  0.284144669771194f, -0.451006084680557f, 0.283798813819885f, -0.450840383768082f,\n  0.283453077077866f, -0.450674414634705f, 0.283107489347458f, -0.450508207082748f,\n  0.282762020826340f, -0.450341701507568f, 0.282416671514511f, -0.450174957513809f,\n  0.282071471214294f, -0.450007945299149f, 0.281726360321045f, -0.449840664863586f,\n  0.281381398439407f, -0.449673116207123f, 0.281036585569382f, -0.449505299329758f,\n  0.280691891908646f, -0.449337244033813f, 0.280347317457199f, -0.449168890714645f,\n  0.280002862215042f, -0.449000298976898f, 0.279658555984497f, -0.448831409215927f,\n  0.279314368963242f, -0.448662281036377f, 0.278970301151276f, -0.448492884635925f,\n  0.278626382350922f, -0.448323249816895f, 0.278282582759857f, -0.448153316974640f,\n  0.277938932180405f, -0.447983115911484f, 0.277595400810242f, -0.447812676429749f,\n  0.277251988649368f, -0.447641968727112f, 0.276908725500107f, -0.447470992803574f,\n  0.276565581560135f, -0.447299748659134f, 0.276222556829453f, -0.447128236293793f,\n  0.275879681110382f, -0.446956485509872f, 0.275536954402924f, -0.446784436702728f,\n  0.275194346904755f, -0.446612149477005f, 0.274851858615875f, -0.446439594030380f,\n  0.274509519338608f, -0.446266770362854f, 0.274167299270630f, -0.446093708276749f,\n  0.273825198411942f, -0.445920348167419f, 0.273483246564865f, -0.445746749639511f,\n  0.273141443729401f, -0.445572882890701f, 0.272799760103226f, -0.445398747920990f,\n  0.272458195686340f, -0.445224374532700f, 0.272116780281067f, -0.445049703121185f,\n  0.271775513887405f, -0.444874793291092f, 0.271434366703033f, -0.444699615240097f,\n  0.271093338727951f, -0.444524168968201f, 0.270752459764481f, -0.444348484277725f,\n  0.270411729812622f, -0.444172531366348f, 0.270071119070053f, -0.443996280431747f,\n  0.269730657339096f, -0.443819820880890f, 0.269390314817429f, -0.443643063306808f,\n  0.269050091505051f, -0.443466067314148f, 0.268710047006607f, -0.443288803100586f,\n  0.268370121717453f, -0.443111270666122f, 0.268030315637589f, -0.442933470010757f,\n  0.267690658569336f, -0.442755430936813f, 0.267351150512695f, -0.442577123641968f,\n  0.267011761665344f, -0.442398548126221f, 0.266672492027283f, -0.442219734191895f,\n  0.266333401203156f, -0.442040622234344f, 0.265994429588318f, -0.441861271858215f,\n  0.265655577182770f, -0.441681683063507f, 0.265316903591156f, -0.441501796245575f,\n  0.264978319406509f, -0.441321671009064f, 0.264639914035797f, -0.441141277551651f,\n  0.264301627874374f, -0.440960645675659f, 0.263963490724564f, -0.440779715776443f,\n  0.263625472784042f, -0.440598547458649f, 0.263287603855133f, -0.440417140722275f,\n  0.262949883937836f, -0.440235435962677f, 0.262612313032150f, -0.440053492784500f,\n  0.262274861335754f, -0.439871311187744f, 0.261937558650970f, -0.439688831567764f,\n  0.261600375175476f, -0.439506113529205f, 0.261263370513916f, -0.439323127269745f,\n  0.260926485061646f, -0.439139902591705f, 0.260589718818665f, -0.438956409692764f,\n  0.260253131389618f, -0.438772648572922f, 0.259916663169861f, -0.438588619232178f,\n  0.259580343961716f, -0.438404351472855f, 0.259244143962860f, -0.438219845294952f,\n  0.258908122777939f, -0.438035041093826f, 0.258572220802307f, -0.437849998474121f,\n  0.258236467838287f, -0.437664687633514f, 0.257900834083557f, -0.437479138374329f,\n  0.257565379142761f, -0.437293320894241f, 0.257230043411255f, -0.437107264995575f,\n  0.256894856691360f, -0.436920911073685f, 0.256559818983078f, -0.436734348535538f,\n  0.256224930286407f, -0.436547487974167f, 0.255890160799026f, -0.436360388994217f,\n  0.255555540323257f, -0.436173021793365f, 0.255221068859100f, -0.435985416173935f,\n  0.254886746406555f, -0.435797542333603f, 0.254552572965622f, -0.435609430074692f,\n  0.254218548536301f, -0.435421019792557f, 0.253884643316269f, -0.435232400894165f,\n  0.253550916910172f, -0.435043483972549f, 0.253217309713364f, -0.434854328632355f,\n  0.252883851528168f, -0.434664934873581f, 0.252550542354584f, -0.434475272893906f,\n  0.252217382192612f, -0.434285342693329f, 0.251884341239929f, -0.434095174074173f,\n  0.251551479101181f, -0.433904737234116f, 0.251218736171722f, -0.433714061975479f,\n  0.250886172056198f, -0.433523118495941f, 0.250553727149963f, -0.433331936597824f,\n  0.250221431255341f, -0.433140486478806f, 0.249889299273491f, -0.432948768138886f,\n  0.249557301402092f, -0.432756811380386f, 0.249225467443466f, -0.432564586400986f,\n  0.248893767595291f, -0.432372123003006f, 0.248562216758728f, -0.432179391384125f,\n  0.248230814933777f, -0.431986421346664f, 0.247899547219276f, -0.431793183088303f,\n  0.247568443417549f, -0.431599706411362f, 0.247237488627434f, -0.431405961513519f,\n  0.246906682848930f, -0.431211978197098f, 0.246576011180878f, -0.431017726659775f,\n  0.246245503425598f, -0.430823236703873f, 0.245915144681931f, -0.430628478527069f,\n  0.245584934949875f, -0.430433481931686f, 0.245254859328270f, -0.430238217115402f,\n  0.244924947619438f, -0.430042684078217f, 0.244595184922218f, -0.429846942424774f,\n  0.244265571236610f, -0.429650902748108f, 0.243936106562614f, -0.429454624652863f,\n  0.243606805801392f, -0.429258108139038f, 0.243277639150620f, -0.429061323404312f,\n  0.242948621511459f, -0.428864300251007f, 0.242619767785072f, -0.428667008876801f,\n  0.242291063070297f, -0.428469479084015f, 0.241962507367134f, -0.428271710872650f,\n  0.241634100675583f, -0.428073674440384f, 0.241305842995644f, -0.427875369787216f,\n  0.240977749228477f, -0.427676826715469f, 0.240649804472923f, -0.427478045225143f,\n  0.240322008728981f, -0.427278995513916f, 0.239994361996651f, -0.427079707384110f,\n  0.239666879177094f, -0.426880151033401f, 0.239339530467987f, -0.426680356264114f,\n  0.239012360572815f, -0.426480293273926f, 0.238685324788094f, -0.426279991865158f,\n  0.238358452916145f, -0.426079452037811f, 0.238031730055809f, -0.425878643989563f,\n  0.237705156207085f, -0.425677597522736f, 0.237378746271133f, -0.425476282835007f,\n  0.237052485346794f, -0.425274729728699f, 0.236726388335228f, -0.425072938203812f,\n  0.236400425434113f, -0.424870878458023f, 0.236074641346931f, -0.424668580293655f,\n  0.235749006271362f, -0.424466013908386f, 0.235423520207405f, -0.424263238906860f,\n  0.235098183155060f, -0.424060165882111f, 0.234773010015488f, -0.423856884241104f,\n  0.234448000788689f, -0.423653304576874f, 0.234123140573502f, -0.423449516296387f,\n  0.233798429369926f, -0.423245459794998f, 0.233473882079124f, -0.423041164875031f,\n  0.233149498701096f, -0.422836631536484f, 0.232825264334679f, -0.422631829977036f,\n  0.232501193881035f, -0.422426789999008f, 0.232177272439003f, -0.422221481800079f,\n  0.231853514909744f, -0.422015935182571f, 0.231529906392097f, -0.421810150146484f,\n  0.231206461787224f, -0.421604126691818f, 0.230883181095123f, -0.421397835016251f,\n  0.230560049414635f, -0.421191304922104f, 0.230237081646919f, -0.420984506607056f,\n  0.229914262890816f, -0.420777499675751f, 0.229591608047485f, -0.420570224523544f,\n  0.229269117116928f, -0.420362681150436f, 0.228946775197983f, -0.420154929161072f,\n  0.228624612092972f, -0.419946908950806f, 0.228302597999573f, -0.419738620519638f,\n  0.227980732917786f, -0.419530123472214f, 0.227659046649933f, -0.419321358203888f,\n  0.227337509393692f, -0.419112354516983f, 0.227016136050224f, -0.418903112411499f,\n  0.226694911718369f, -0.418693602085114f, 0.226373866200447f, -0.418483853340149f,\n  0.226052969694138f, -0.418273866176605f, 0.225732237100601f, -0.418063640594482f,\n  0.225411668419838f, -0.417853146791458f, 0.225091263651848f, -0.417642414569855f,\n  0.224771007895470f, -0.417431443929672f, 0.224450930953026f, -0.417220205068588f,\n  0.224131003022194f, -0.417008757591248f, 0.223811239004135f, -0.416797041893005f,\n  0.223491653800011f, -0.416585087776184f, 0.223172217607498f, -0.416372895240784f,\n  0.222852945327759f, -0.416160434484482f, 0.222533836960793f, -0.415947735309601f,\n  0.222214877605438f, -0.415734797716141f, 0.221896097064018f, -0.415521621704102f,\n  0.221577480435371f, -0.415308207273483f, 0.221259027719498f, -0.415094524621964f,\n  0.220940738916397f, -0.414880603551865f, 0.220622614026070f, -0.414666473865509f,\n  0.220304638147354f, -0.414452046155930f, 0.219986841082573f, -0.414237409830093f,\n  0.219669207930565f, -0.414022535085678f, 0.219351738691330f, -0.413807392120361f,\n  0.219034433364868f, -0.413592010736465f, 0.218717306852341f, -0.413376390933990f,\n  0.218400329351425f, -0.413160532712936f, 0.218083515763283f, -0.412944436073303f,\n  0.217766880989075f, -0.412728071212769f, 0.217450410127640f, -0.412511497735977f,\n  0.217134088277817f, -0.412294656038284f, 0.216817945241928f, -0.412077575922012f,\n  0.216501981019974f, -0.411860257387161f, 0.216186165809631f, -0.411642700433731f,\n  0.215870529413223f, -0.411424905061722f, 0.215555042028427f, -0.411206841468811f,\n  0.215239733457565f, -0.410988569259644f, 0.214924603700638f, -0.410770028829575f,\n  0.214609622955322f, -0.410551249980927f, 0.214294821023941f, -0.410332232713699f,\n  0.213980183005333f, -0.410112977027893f, 0.213665723800659f, -0.409893482923508f,\n  0.213351413607597f, -0.409673750400543f, 0.213037282228470f, -0.409453779459000f,\n  0.212723329663277f, -0.409233570098877f, 0.212409526109695f, -0.409013092517853f,\n  0.212095901370049f, -0.408792406320572f, 0.211782455444336f, -0.408571451902390f,\n  0.211469158530235f, -0.408350288867950f, 0.211156040430069f, -0.408128857612610f,\n  0.210843101143837f, -0.407907217741013f, 0.210530325770378f, -0.407685309648514f,\n  0.210217714309692f, -0.407463163137436f, 0.209905281662941f, -0.407240778207779f,\n  0.209593027830124f, -0.407018154859543f, 0.209280923008919f, -0.406795293092728f,\n  0.208969011902809f, -0.406572192907333f, 0.208657249808311f, -0.406348884105682f,\n  0.208345666527748f, -0.406125307083130f, 0.208034262061119f, -0.405901491641998f,\n  0.207723021507263f, -0.405677437782288f, 0.207411959767342f, -0.405453115701675f,\n  0.207101076841354f, -0.405228585004807f, 0.206790357828140f, -0.405003815889359f,\n  0.206479802727699f, -0.404778808355331f, 0.206169426441193f, -0.404553562402725f,\n  0.205859228968620f, -0.404328078031540f, 0.205549195408821f, -0.404102355241776f,\n  0.205239340662956f, -0.403876423835754f, 0.204929664731026f, -0.403650224208832f,\n  0.204620152711868f, -0.403423786163330f, 0.204310819506645f, -0.403197109699249f,\n  0.204001650214195f, -0.402970194816589f, 0.203692659735680f, -0.402743041515350f,\n  0.203383848071098f, -0.402515679597855f, 0.203075215220451f, -0.402288049459457f,\n  0.202766746282578f, -0.402060180902481f, 0.202458456158638f, -0.401832103729248f,\n  0.202150344848633f, -0.401603758335114f, 0.201842412352562f, -0.401375204324722f,\n  0.201534643769264f, -0.401146411895752f, 0.201227053999901f, -0.400917351245880f,\n  0.200919643044472f, -0.400688081979752f, 0.200612410902977f, -0.400458574295044f,\n  0.200305357575417f, -0.400228828191757f, 0.199998468160629f, -0.399998843669891f,\n  0.199691757559776f, -0.399768620729446f, 0.199385225772858f, -0.399538189172745f,\n  0.199078872799873f, -0.399307489395142f, 0.198772698640823f, -0.399076581001282f,\n  0.198466703295708f, -0.398845434188843f, 0.198160871863365f, -0.398614019155502f,\n  0.197855234146118f, -0.398382395505905f, 0.197549775242805f, -0.398150533437729f,\n  0.197244480252266f, -0.397918462753296f, 0.196939364075661f, -0.397686123847961f,\n  0.196634441614151f, -0.397453576326370f, 0.196329683065414f, -0.397220760583878f,\n  0.196025103330612f, -0.396987736225128f, 0.195720717310905f, -0.396754473447800f,\n  0.195416495203972f, -0.396520972251892f, 0.195112451910973f, -0.396287262439728f,\n  0.194808602333069f, -0.396053284406662f, 0.194504916667938f, -0.395819097757339f,\n  0.194201424717903f, -0.395584672689438f, 0.193898096680641f, -0.395350009202957f,\n  0.193594962358475f, -0.395115107297897f, 0.193292006850243f, -0.394879996776581f,\n  0.192989215254784f, -0.394644618034363f, 0.192686617374420f, -0.394409030675888f,\n  0.192384198307991f, -0.394173204898834f, 0.192081972956657f, -0.393937170505524f,\n  0.191779911518097f, -0.393700867891312f, 0.191478043794632f, -0.393464356660843f,\n  0.191176339983940f, -0.393227607011795f, 0.190874829888344f, -0.392990618944168f,\n  0.190573498606682f, -0.392753422260284f, 0.190272361040115f, -0.392515957355499f,\n  0.189971387386322f, -0.392278283834457f, 0.189670607447624f, -0.392040401697159f,\n  0.189370006322861f, -0.391802251338959f, 0.189069598913193f, -0.391563892364502f,\n  0.188769355416298f, -0.391325294971466f, 0.188469305634499f, -0.391086459159851f,\n  0.188169434666634f, -0.390847414731979f, 0.187869757413864f, -0.390608131885529f,\n  0.187570258975029f, -0.390368610620499f, 0.187270939350128f, -0.390128880739212f,\n  0.186971798539162f, -0.389888882637024f, 0.186672851443291f, -0.389648675918579f,\n  0.186374098062515f, -0.389408260583878f, 0.186075508594513f, -0.389167606830597f,\n  0.185777112841606f, -0.388926714658737f, 0.185478910803795f, -0.388685584068298f,\n  0.185180887579918f, -0.388444244861603f, 0.184883043169975f, -0.388202667236328f,\n  0.184585392475128f, -0.387960851192474f, 0.184287920594215f, -0.387718826532364f,\n  0.183990627527237f, -0.387476563453674f, 0.183693528175354f, -0.387234061956406f,\n  0.183396622538567f, -0.386991351842880f, 0.183099895715714f, -0.386748403310776f,\n  0.182803362607956f, -0.386505216360092f, 0.182507008314133f, -0.386261820793152f,\n  0.182210832834244f, -0.386018186807632f, 0.181914865970612f, -0.385774344205856f,\n  0.181619063019753f, -0.385530263185501f, 0.181323468685150f, -0.385285943746567f,\n  0.181028053164482f, -0.385041415691376f, 0.180732816457748f, -0.384796649217606f,\n  0.180437773466110f, -0.384551674127579f, 0.180142924189568f, -0.384306460618973f,\n  0.179848253726959f, -0.384061008691788f, 0.179553776979446f, -0.383815348148346f,\n  0.179259493947029f, -0.383569449186325f, 0.178965389728546f, -0.383323341608047f,\n  0.178671479225159f, -0.383076995611191f, 0.178377762436867f, -0.382830440998077f,\n  0.178084224462509f, -0.382583618164063f, 0.177790880203247f, -0.382336616516113f,\n  0.177497729659081f, -0.382089376449585f, 0.177204772830009f, -0.381841897964478f,\n  0.176911994814873f, -0.381594210863113f, 0.176619410514832f, -0.381346285343170f,\n  0.176327019929886f, -0.381098151206970f, 0.176034808158875f, -0.380849778652191f,\n  0.175742805004120f, -0.380601197481155f, 0.175450980663300f, -0.380352377891541f,\n  0.175159350037575f, -0.380103349685669f, 0.174867913126946f, -0.379854083061218f,\n  0.174576655030251f, -0.379604607820511f, 0.174285605549812f, -0.379354894161224f,\n  0.173994734883308f, -0.379104942083359f, 0.173704057931900f, -0.378854811191559f,\n  0.173413574695587f, -0.378604412078857f, 0.173123285174370f, -0.378353834152222f,\n  0.172833189368248f, -0.378102988004684f, 0.172543287277222f, -0.377851963043213f,\n  0.172253578901291f, -0.377600699663162f, 0.171964049339294f, -0.377349197864532f,\n  0.171674728393555f, -0.377097487449646f, 0.171385586261749f, -0.376845568418503f,\n  0.171096652746201f, -0.376593410968781f, 0.170807912945747f, -0.376341015100479f,\n  0.170519351959229f, -0.376088410615921f, 0.170230999588966f, -0.375835597515106f,\n  0.169942826032639f, -0.375582575798035f, 0.169654861092567f, -0.375329315662384f,\n  0.169367074966431f, -0.375075817108154f, 0.169079497456551f, -0.374822109937668f,\n  0.168792113661766f, -0.374568194150925f, 0.168504923582077f, -0.374314039945602f,\n  0.168217927217484f, -0.374059677124023f, 0.167931124567986f, -0.373805105686188f,\n  0.167644515633583f, -0.373550295829773f, 0.167358100414276f, -0.373295277357101f,\n  0.167071878910065f, -0.373040050268173f, 0.166785866022110f, -0.372784584760666f,\n  0.166500031948090f, -0.372528880834579f, 0.166214406490326f, -0.372272998094559f,\n  0.165928974747658f, -0.372016876935959f, 0.165643751621246f, -0.371760547161102f,\n  0.165358707308769f, -0.371503978967667f, 0.165073871612549f, -0.371247202157974f,\n  0.164789214730263f, -0.370990216732025f, 0.164504766464233f, -0.370732992887497f,\n  0.164220526814461f, -0.370475560426712f, 0.163936465978622f, -0.370217919349670f,\n  0.163652613759041f, -0.369960039854050f, 0.163368955254555f, -0.369701951742172f,\n  0.163085505366325f, -0.369443655014038f, 0.162802234292030f, -0.369185149669647f,\n  0.162519171833992f, -0.368926405906677f, 0.162236317992210f, -0.368667453527451f,\n  0.161953642964363f, -0.368408292531967f, 0.161671176552773f, -0.368148893117905f,\n  0.161388918757439f, -0.367889285087585f, 0.161106839776039f, -0.367629468441010f,\n  0.160824984312058f, -0.367369443178177f, 0.160543307662010f, -0.367109179496765f,\n  0.160261839628220f, -0.366848707199097f, 0.159980565309525f, -0.366588026285172f,\n  0.159699499607086f, -0.366327136754990f, 0.159418627619743f, -0.366066008806229f,\n  0.159137964248657f, -0.365804702043533f, 0.158857494592667f, -0.365543156862259f,\n  0.158577233552933f, -0.365281373262405f, 0.158297166228294f, -0.365019410848618f,\n  0.158017292618752f, -0.364757210016251f, 0.157737627625465f, -0.364494800567627f,\n  0.157458171248436f, -0.364232182502747f, 0.157178908586502f, -0.363969355821610f,\n  0.156899839639664f, -0.363706320524216f, 0.156620979309082f, -0.363443046808243f,\n  0.156342327594757f, -0.363179564476013f, 0.156063869595528f, -0.362915903329849f,\n  0.155785620212555f, -0.362651973962784f, 0.155507579445839f, -0.362387865781784f,\n  0.155229732394218f, -0.362123548984528f, 0.154952079057693f, -0.361858993768692f,\n  0.154674649238586f, -0.361594229936600f, 0.154397398233414f, -0.361329287290573f,\n  0.154120370745659f, -0.361064106225967f, 0.153843536973000f, -0.360798716545105f,\n  0.153566911816597f, -0.360533088445663f, 0.153290495276451f, -0.360267281532288f,\n  0.153014272451401f, -0.360001266002655f, 0.152738258242607f, -0.359735012054443f,\n  0.152462437748909f, -0.359468549489975f, 0.152186840772629f, -0.359201908111572f,\n  0.151911437511444f, -0.358935028314590f, 0.151636242866516f, -0.358667939901352f,\n  0.151361241936684f, -0.358400642871857f, 0.151086464524269f, -0.358133137226105f,\n  0.150811880826950f, -0.357865422964096f, 0.150537505745888f, -0.357597470283508f,\n  0.150263324379921f, -0.357329338788986f, 0.149989366531372f, -0.357060998678207f,\n  0.149715602397919f, -0.356792420148849f, 0.149442046880722f, -0.356523662805557f,\n  0.149168699979782f, -0.356254696846008f, 0.148895561695099f, -0.355985492467880f,\n  0.148622632026672f, -0.355716109275818f, 0.148349896073341f, -0.355446487665176f,\n  0.148077383637428f, -0.355176687240601f, 0.147805064916611f, -0.354906648397446f,\n  0.147532954812050f, -0.354636400938034f, 0.147261068224907f, -0.354365974664688f,\n  0.146989375352860f, -0.354095309972763f, 0.146717891097069f, -0.353824466466904f,\n  0.146446615457535f, -0.353553384542465f, 0.146175548434258f, -0.353282123804092f,\n  0.145904675126076f, -0.353010624647141f, 0.145634025335312f, -0.352738946676254f,\n  0.145363584160805f, -0.352467030286789f, 0.145093351602554f, -0.352194935083389f,\n  0.144823327660561f, -0.351922631263733f, 0.144553512334824f, -0.351650089025497f,\n  0.144283905625343f, -0.351377367973328f, 0.144014507532120f, -0.351104438304901f,\n  0.143745318055153f, -0.350831300020218f, 0.143476337194443f, -0.350557953119278f,\n  0.143207564949989f, -0.350284397602081f, 0.142939001321793f, -0.350010633468628f,\n  0.142670661211014f, -0.349736660718918f, 0.142402514815331f, -0.349462509155273f,\n  0.142134591937065f, -0.349188119173050f, 0.141866862773895f, -0.348913550376892f,\n  0.141599357128143f, -0.348638743162155f, 0.141332060098648f, -0.348363757133484f,\n  0.141064971685410f, -0.348088562488556f, 0.140798106789589f, -0.347813159227371f,\n  0.140531435608864f, -0.347537547349930f, 0.140264987945557f, -0.347261756658554f,\n  0.139998748898506f, -0.346985727548599f, 0.139732718467712f, -0.346709519624710f,\n  0.139466896653175f, -0.346433073282242f, 0.139201298356056f, -0.346156448125839f,\n  0.138935908675194f, -0.345879614353180f, 0.138670727610588f, -0.345602601766586f,\n  0.138405755162239f, -0.345325350761414f, 0.138141006231308f, -0.345047920942307f,\n  0.137876465916634f, -0.344770282506943f, 0.137612134218216f, -0.344492435455322f,\n  0.137348011136055f, -0.344214379787445f, 0.137084111571312f, -0.343936115503311f,\n  0.136820420622826f, -0.343657672405243f, 0.136556953191757f, -0.343379020690918f,\n  0.136293679475784f, -0.343100160360336f, 0.136030644178391f, -0.342821091413498f,\n  0.135767802596092f, -0.342541843652725f, 0.135505184531212f, -0.342262357473373f,\n  0.135242775082588f, -0.341982692480087f, 0.134980589151382f, -0.341702848672867f,\n  0.134718611836433f, -0.341422766447067f, 0.134456858038902f, -0.341142505407333f,\n  0.134195312857628f, -0.340862035751343f, 0.133933976292610f, -0.340581357479095f,\n  0.133672863245010f, -0.340300500392914f, 0.133411958813667f, -0.340019434690475f,\n  0.133151277899742f, -0.339738160371780f, 0.132890805602074f, -0.339456677436829f,\n  0.132630556821823f, -0.339175015687943f, 0.132370531558990f, -0.338893145322800f,\n  0.132110700011253f, -0.338611096143723f, 0.131851106882095f, -0.338328808546066f,\n  0.131591722369194f, -0.338046342134476f, 0.131332546472549f, -0.337763696908951f,\n  0.131073594093323f, -0.337480813264847f, 0.130814850330353f, -0.337197750806808f,\n  0.130556344985962f, -0.336914509534836f, 0.130298033356667f, -0.336631029844284f,\n  0.130039945244789f, -0.336347371339798f, 0.129782080650330f, -0.336063534021378f,\n  0.129524439573288f, -0.335779488086700f, 0.129267007112503f, -0.335495233535767f,\n  0.129009798169136f, -0.335210770368576f, 0.128752797842026f, -0.334926128387451f,\n  0.128496021032333f, -0.334641307592392f, 0.128239467740059f, -0.334356248378754f,\n  0.127983123064041f, -0.334071010351181f, 0.127727001905441f, -0.333785593509674f,\n  0.127471104264259f, -0.333499968051910f, 0.127215430140495f, -0.333214133977890f,\n  0.126959964632988f, -0.332928121089935f, 0.126704722642899f, -0.332641899585724f,\n  0.126449704170227f, -0.332355499267578f, 0.126194894313812f, -0.332068890333176f,\n  0.125940307974815f, -0.331782072782516f, 0.125685945153236f, -0.331495076417923f,\n  0.125431805849075f, -0.331207901239395f, 0.125177875161171f, -0.330920487642288f,\n  0.124924175441265f, -0.330632925033569f, 0.124670691788197f, -0.330345153808594f,\n  0.124417431652546f, -0.330057173967361f, 0.124164395034313f, -0.329769015312195f,\n  0.123911574482918f, -0.329480648040771f, 0.123658977448940f, -0.329192101955414f,\n  0.123406603932381f, -0.328903347253799f, 0.123154446482658f, -0.328614413738251f,\n  0.122902512550354f, -0.328325271606445f, 0.122650802135468f, -0.328035950660706f,\n  0.122399315237999f, -0.327746421098709f, 0.122148044407368f, -0.327456712722778f,\n  0.121896997094154f, -0.327166795730591f, 0.121646173298359f, -0.326876699924469f,\n  0.121395580470562f, -0.326586425304413f, 0.121145196259022f, -0.326295942068100f,\n  0.120895043015480f, -0.326005280017853f, 0.120645113289356f, -0.325714409351349f,\n  0.120395407080650f, -0.325423330068588f, 0.120145916938782f, -0.325132101774216f,\n  0.119896657764912f, -0.324840664863586f, 0.119647622108459f, -0.324549019336700f,\n  0.119398809969425f, -0.324257194995880f, 0.119150213897228f, -0.323965191841125f,\n  0.118901848793030f, -0.323672980070114f, 0.118653707206249f, -0.323380589485168f,\n  0.118405789136887f, -0.323088020086288f, 0.118158094584942f, -0.322795242071152f,\n  0.117910631000996f, -0.322502255439758f, 0.117663383483887f, -0.322209119796753f,\n  0.117416366934776f, -0.321915775537491f, 0.117169573903084f, -0.321622252464294f,\n  0.116923004388809f, -0.321328520774841f, 0.116676658391953f, -0.321034610271454f,\n  0.116430543363094f, -0.320740520954132f, 0.116184651851654f, -0.320446223020554f,\n  0.115938983857632f, -0.320151746273041f, 0.115693546831608f, -0.319857090711594f,\n  0.115448333323002f, -0.319562226533890f, 0.115203343331814f, -0.319267183542252f,\n  0.114958584308624f, -0.318971961736679f, 0.114714048802853f, -0.318676531314850f,\n  0.114469736814499f, -0.318380922079086f, 0.114225655794144f, -0.318085134029388f,\n  0.113981798291206f, -0.317789167165756f, 0.113738171756268f, -0.317492991685867f,\n  0.113494776189327f, -0.317196637392044f, 0.113251596689224f, -0.316900104284287f,\n  0.113008655607700f, -0.316603392362595f, 0.112765938043594f, -0.316306471824646f,\n  0.112523443996906f, -0.316009372472763f, 0.112281180918217f, -0.315712094306946f,\n  0.112039148807526f, -0.315414607524872f, 0.111797347664833f, -0.315116971731186f,\n  0.111555770039558f, -0.314819127321243f, 0.111314415931702f, -0.314521104097366f,\n  0.111073300242424f, -0.314222872257233f, 0.110832408070564f, -0.313924491405487f,\n  0.110591746866703f, -0.313625901937485f, 0.110351309180260f, -0.313327133655548f,\n  0.110111102461815f, -0.313028186559677f, 0.109871134161949f, -0.312729060649872f,\n  0.109631389379501f, -0.312429755926132f, 0.109391868114471f, -0.312130242586136f,\n  0.109152585268021f, -0.311830550432205f, 0.108913525938988f, -0.311530679464340f,\n  0.108674705028534f, -0.311230629682541f, 0.108436107635498f, -0.310930401086807f,\n  0.108197741210461f, -0.310629993677139f, 0.107959605753422f, -0.310329377651215f,\n  0.107721701264381f, -0.310028612613678f, 0.107484027743340f, -0.309727638959885f,\n  0.107246585190296f, -0.309426486492157f, 0.107009373605251f, -0.309125155210495f,\n  0.106772392988205f, -0.308823645114899f, 0.106535643339157f, -0.308521956205368f,\n  0.106299124658108f, -0.308220088481903f, 0.106062836945057f, -0.307918041944504f,\n  0.105826787650585f, -0.307615786790848f, 0.105590961873531f, -0.307313382625580f,\n  0.105355374515057f, -0.307010769844055f, 0.105120018124580f, -0.306708008050919f,\n  0.104884892702103f, -0.306405037641525f, 0.104649998247623f, -0.306101888418198f,\n  0.104415334761143f, -0.305798590183258f, 0.104180909693241f, -0.305495083332062f,\n  0.103946708142757f, -0.305191397666931f, 0.103712752461433f, -0.304887533187866f,\n  0.103479020297527f, -0.304583519697189f, 0.103245526552200f, -0.304279297590256f,\n  0.103012263774872f, -0.303974896669388f, 0.102779231965542f, -0.303670316934586f,\n  0.102546438574791f, -0.303365558385849f, 0.102313876152039f, -0.303060621023178f,\n  0.102081544697285f, -0.302755534648895f, 0.101849451661110f, -0.302450239658356f,\n  0.101617597043514f, -0.302144765853882f, 0.101385973393917f, -0.301839113235474f,\n  0.101154580712318f, -0.301533311605453f, 0.100923426449299f, -0.301227301359177f,\n  0.100692503154278f, -0.300921112298965f, 0.100461818277836f, -0.300614774227142f,\n  0.100231364369392f, -0.300308227539063f, 0.100001148879528f, -0.300001531839371f,\n  0.099771171808243f, -0.299694657325745f, 0.099541425704956f, -0.299387603998184f,\n  0.099311910569668f, -0.299080342054367f, 0.099082641303539f, -0.298772931098938f,\n  0.098853603005409f, -0.298465341329575f, 0.098624803125858f, -0.298157602548599f,\n  0.098396234214306f, -0.297849655151367f, 0.098167903721333f, -0.297541528940201f,\n  0.097939811646938f, -0.297233253717422f, 0.097711957991123f, -0.296924799680710f,\n  0.097484335303307f, -0.296616137027740f, 0.097256951034069f, -0.296307325363159f,\n  0.097029805183411f, -0.295998334884644f, 0.096802897751331f, -0.295689195394516f,\n  0.096576221287251f, -0.295379847288132f, 0.096349790692329f, -0.295070350170136f,\n  0.096123591065407f, -0.294760644435883f, 0.095897629857063f, -0.294450789690018f,\n  0.095671907067299f, -0.294140785932541f, 0.095446422696114f, -0.293830573558807f,\n  0.095221176743507f, -0.293520182371140f, 0.094996169209480f, -0.293209642171860f,\n  0.094771400094032f, -0.292898923158646f, 0.094546869397163f, -0.292588025331497f,\n  0.094322577118874f, -0.292276978492737f, 0.094098523259163f, -0.291965723037720f,\n  0.093874707818031f, -0.291654318571091f, 0.093651130795479f, -0.291342735290527f,\n  0.093427792191505f, -0.291031002998352f, 0.093204692006111f, -0.290719062089920f,\n  0.092981837689877f, -0.290406972169876f, 0.092759214341640f, -0.290094703435898f,\n  0.092536836862564f, -0.289782285690308f, 0.092314697802067f, -0.289469659328461f,\n  0.092092797160149f, -0.289156883955002f, 0.091871134936810f, -0.288843959569931f,\n  0.091649711132050f, -0.288530826568604f, 0.091428533196449f, -0.288217544555664f,\n  0.091207593679428f, -0.287904083728790f, 0.090986892580986f, -0.287590473890305f,\n  0.090766437351704f, -0.287276685237885f, 0.090546220541000f, -0.286962717771530f,\n  0.090326242148876f, -0.286648571491241f, 0.090106502175331f, -0.286334276199341f,\n  0.089887008070946f, -0.286019802093506f, 0.089667752385139f, -0.285705178976059f,\n  0.089448742568493f, -0.285390377044678f, 0.089229971170425f, -0.285075396299362f,\n  0.089011445641518f, -0.284760266542435f, 0.088793158531189f, -0.284444957971573f,\n  0.088575109839439f, -0.284129470586777f, 0.088357307016850f, -0.283813834190369f,\n  0.088139742612839f, -0.283498018980026f, 0.087922424077988f, -0.283182054758072f,\n  0.087705351412296f, -0.282865911722183f, 0.087488517165184f, -0.282549589872360f,\n  0.087271921336651f, -0.282233119010925f, 0.087055571377277f, -0.281916469335556f,\n  0.086839467287064f, -0.281599670648575f, 0.086623609066010f, -0.281282693147659f,\n  0.086407989263535f, -0.280965566635132f, 0.086192607879639f, -0.280648261308670f,\n  0.085977479815483f, -0.280330777168274f, 0.085762590169907f, -0.280013144016266f,\n  0.085547938942909f, -0.279695361852646f, 0.085333541035652f, -0.279377400875092f,\n  0.085119381546974f, -0.279059261083603f, 0.084905467927456f, -0.278740972280502f,\n  0.084691800177097f, -0.278422504663467f, 0.084478378295898f, -0.278103888034821f,\n  0.084265194833279f, -0.277785122394562f, 0.084052257239819f, -0.277466177940369f,\n  0.083839565515518f, -0.277147054672241f, 0.083627119660378f, -0.276827782392502f,\n  0.083414919674397f, -0.276508361101151f, 0.083202958106995f, -0.276188760995865f,\n  0.082991249859333f, -0.275868982076645f, 0.082779780030251f, -0.275549083948135f,\n  0.082568563520908f, -0.275228977203369f, 0.082357585430145f, -0.274908751249313f,\n  0.082146860659122f, -0.274588316679001f, 0.081936374306679f, -0.274267762899399f,\n  0.081726133823395f, -0.273947030305862f, 0.081516146659851f, -0.273626148700714f,\n  0.081306397914886f, -0.273305088281631f, 0.081096902489662f, -0.272983878850937f,\n  0.080887645483017f, -0.272662490606308f, 0.080678641796112f, -0.272340953350067f,\n  0.080469883978367f, -0.272019267082214f, 0.080261372029781f, -0.271697402000427f,\n  0.080053105950356f, -0.271375387907028f, 0.079845085740089f, -0.271053224802017f,\n  0.079637311398983f, -0.270730882883072f, 0.079429790377617f, -0.270408391952515f,\n  0.079222507774830f, -0.270085722208023f, 0.079015478491783f, -0.269762933254242f,\n  0.078808702528477f, -0.269439965486526f, 0.078602164983749f, -0.269116818904877f,\n  0.078395880758762f, -0.268793523311615f, 0.078189842402935f, -0.268470078706741f,\n  0.077984049916267f, -0.268146485090256f, 0.077778510749340f, -0.267822742462158f,\n  0.077573217451572f, -0.267498821020126f, 0.077368170022964f, -0.267174720764160f,\n  0.077163375914097f, -0.266850501298904f, 0.076958827674389f, -0.266526103019714f,\n  0.076754532754421f, -0.266201555728912f, 0.076550483703613f, -0.265876859426498f,\n  0.076346680521965f, -0.265552014112473f, 0.076143130660057f, -0.265226989984512f,\n  0.075939826667309f, -0.264901816844940f, 0.075736775994301f, -0.264576494693756f,\n  0.075533971190453f, -0.264250993728638f, 0.075331419706345f, -0.263925373554230f,\n  0.075129114091396f, -0.263599574565887f, 0.074927061796188f, -0.263273626565933f,\n  0.074725262820721f, -0.262947499752045f, 0.074523709714413f, -0.262621253728867f,\n  0.074322402477264f, -0.262294828891754f, 0.074121348559856f, -0.261968284845352f,\n  0.073920547962189f, -0.261641561985016f, 0.073720000684261f, -0.261314690113068f,\n  0.073519699275494f, -0.260987639427185f, 0.073319651186466f, -0.260660469532013f,\n  0.073119848966599f, -0.260333120822906f, 0.072920300066471f, -0.260005623102188f,\n  0.072721004486084f, -0.259678006172180f, 0.072521962225437f, -0.259350210428238f,\n  0.072323165833950f, -0.259022265672684f, 0.072124622762203f, -0.258694142103195f,\n  0.071926333010197f, -0.258365899324417f, 0.071728296577930f, -0.258037507534027f,\n  0.071530513465405f, -0.257708936929703f, 0.071332976222038f, -0.257380217313766f,\n  0.071135692298412f, -0.257051378488541f, 0.070938661694527f, -0.256722360849380f,\n  0.070741884410381f, -0.256393194198608f, 0.070545360445976f, -0.256063878536224f,\n  0.070349089801311f, -0.255734413862228f, 0.070153072476387f, -0.255404800176620f,\n  0.069957308471203f, -0.255075037479401f, 0.069761790335178f, -0.254745125770569f,\n  0.069566532969475f, -0.254415065050125f, 0.069371521472931f, -0.254084855318069f,\n  0.069176770746708f, -0.253754496574402f, 0.068982265889645f, -0.253423988819122f,\n  0.068788021802902f, -0.253093332052231f, 0.068594031035900f, -0.252762526273727f,\n  0.068400286138058f, -0.252431541681290f, 0.068206802010536f, -0.252100437879562f,\n  0.068013571202755f, -0.251769185066223f, 0.067820593714714f, -0.251437783241272f,\n  0.067627869546413f, -0.251106232404709f, 0.067435398697853f, -0.250774532556534f,\n  0.067243188619614f, -0.250442683696747f, 0.067051224410534f, -0.250110685825348f,\n  0.066859520971775f, -0.249778553843498f, 0.066668070852757f, -0.249446272850037f,\n  0.066476874053478f, -0.249113827943802f, 0.066285938024521f, -0.248781248927116f,\n  0.066095255315304f, -0.248448520898819f, 0.065904818475246f, -0.248115643858910f,\n  0.065714649856091f, -0.247782632708550f, 0.065524727106094f, -0.247449472546577f,\n  0.065335065126419f, -0.247116148471832f, 0.065145656466484f, -0.246782705187798f,\n  0.064956501126289f, -0.246449097990990f, 0.064767606556416f, -0.246115356683731f,\n  0.064578965306282f, -0.245781451463699f, 0.064390584826469f, -0.245447427034378f,\n  0.064202457666397f, -0.245113238692284f, 0.064014583826065f, -0.244778916239738f,\n  0.063826970756054f, -0.244444444775581f, 0.063639611005783f, -0.244109839200974f,\n  0.063452512025833f, -0.243775084614754f, 0.063265666365623f, -0.243440181016922f,\n  0.063079081475735f, -0.243105143308640f, 0.062892749905586f, -0.242769956588745f,\n  0.062706671655178f, -0.242434620857239f, 0.062520854175091f, -0.242099151015282f,\n  0.062335297465324f, -0.241763532161713f, 0.062149997800589f, -0.241427779197693f,\n  0.061964951455593f, -0.241091892123222f, 0.061780165880919f, -0.240755841135979f,\n  0.061595637351274f, -0.240419670939446f, 0.061411365866661f, -0.240083336830139f,\n  0.061227355152369f, -0.239746883511543f, 0.061043601483107f, -0.239410281181335f,\n  0.060860104858875f, -0.239073529839516f, 0.060676865279675f, -0.238736644387245f,\n  0.060493886470795f, -0.238399609923363f, 0.060311164706945f, -0.238062441349030f,\n  0.060128703713417f, -0.237725138664246f, 0.059946499764919f, -0.237387686967850f,\n  0.059764556586742f, -0.237050101161003f, 0.059582870453596f, -0.236712381243706f,\n  0.059401445090771f, -0.236374512314796f, 0.059220276772976f, -0.236036509275436f,\n  0.059039369225502f, -0.235698372125626f, 0.058858718723059f, -0.235360085964203f,\n  0.058678328990936f, -0.235021665692329f, 0.058498200029135f, -0.234683111310005f,\n  0.058318331837654f, -0.234344407916069f, 0.058138720691204f, -0.234005570411682f,\n  0.057959370315075f, -0.233666598796844f, 0.057780280709267f, -0.233327493071556f,\n  0.057601451873779f, -0.232988253235817f, 0.057422880083323f, -0.232648864388466f,\n  0.057244572788477f, -0.232309341430664f, 0.057066522538662f, -0.231969684362412f,\n  0.056888736784458f, -0.231629893183708f, 0.056711208075285f, -0.231289967894554f,\n  0.056533940136433f, -0.230949893593788f, 0.056356932967901f, -0.230609700083733f,\n  0.056180190294981f, -0.230269357562065f, 0.056003704667091f, -0.229928880929947f,\n  0.055827483534813f, -0.229588270187378f, 0.055651523172855f, -0.229247525334358f,\n  0.055475823581219f, -0.228906646370888f, 0.055300384759903f, -0.228565633296967f,\n  0.055125206708908f, -0.228224486112595f, 0.054950293153524f, -0.227883204817772f,\n  0.054775636643171f, -0.227541789412498f, 0.054601248353720f, -0.227200239896774f,\n  0.054427117109299f, -0.226858556270599f, 0.054253250360489f, -0.226516738533974f,\n  0.054079644382000f, -0.226174786686897f, 0.053906302899122f, -0.225832715630531f,\n  0.053733222186565f, -0.225490495562553f, 0.053560405969620f, -0.225148141384125f,\n  0.053387850522995f, -0.224805667996407f, 0.053215555846691f, -0.224463045597076f,\n  0.053043525665998f, -0.224120303988457f, 0.052871759980917f, -0.223777428269386f,\n  0.052700258791447f, -0.223434418439865f, 0.052529018372297f, -0.223091274499893f,\n  0.052358038723469f, -0.222748011350632f, 0.052187327295542f, -0.222404599189758f,\n  0.052016876637936f, -0.222061067819595f, 0.051846686750650f, -0.221717402338982f,\n  0.051676765084267f, -0.221373617649078f, 0.051507104188204f, -0.221029683947563f,\n  0.051337707787752f, -0.220685631036758f, 0.051168579608202f, -0.220341444015503f,\n  0.050999708473682f, -0.219997137784958f, 0.050831105560064f, -0.219652697443962f,\n  0.050662767142057f, -0.219308122992516f, 0.050494693219662f, -0.218963414430618f,\n  0.050326880067587f, -0.218618586659431f, 0.050159335136414f, -0.218273624777794f,\n  0.049992054700851f, -0.217928543686867f, 0.049825038760900f, -0.217583328485489f,\n  0.049658283591270f, -0.217237979173660f, 0.049491796642542f, -0.216892510652542f,\n  0.049325577914715f, -0.216546908020973f, 0.049159619957209f, -0.216201186180115f,\n  0.048993926495314f, -0.215855330228806f, 0.048828501254320f, -0.215509355068207f,\n  0.048663340508938f, -0.215163245797157f, 0.048498444259167f, -0.214817002415657f,\n  0.048333816230297f, -0.214470639824867f, 0.048169452697039f, -0.214124158024788f,\n  0.048005353659391f, -0.213777542114258f, 0.047841522842646f, -0.213430806994438f,\n  0.047677956521511f, -0.213083937764168f, 0.047514654695988f, -0.212736949324608f,\n  0.047351621091366f, -0.212389841675758f, 0.047188851982355f, -0.212042599916458f,\n  0.047026351094246f, -0.211695238947868f, 0.046864114701748f, -0.211347743868828f,\n  0.046702146530151f, -0.211000129580498f, 0.046540446579456f, -0.210652396082878f,\n  0.046379011124372f, -0.210304543375969f, 0.046217843890190f, -0.209956556558609f,\n  0.046056941151619f, -0.209608450531960f, 0.045896306633949f, -0.209260210394859f,\n  0.045735940337181f, -0.208911851048470f, 0.045575842261314f, -0.208563387393951f,\n  0.045416008681059f, -0.208214774727821f, 0.045256443321705f, -0.207866057753563f,\n  0.045097146183252f, -0.207517206668854f, 0.044938117265701f, -0.207168251276016f,\n  0.044779352843761f, -0.206819161772728f, 0.044620860368013f, -0.206469938158989f,\n  0.044462632387877f, -0.206120610237122f, 0.044304672628641f, -0.205771163105965f,\n  0.044146984815598f, -0.205421581864357f, 0.043989561498165f, -0.205071896314621f,\n  0.043832406401634f, -0.204722076654434f, 0.043675523251295f, -0.204372137784958f,\n  0.043518904596567f, -0.204022079706192f, 0.043362557888031f, -0.203671902418137f,\n  0.043206475675106f, -0.203321605920792f, 0.043050665408373f, -0.202971190214157f,\n  0.042895123362541f, -0.202620655298233f, 0.042739849537611f, -0.202270001173019f,\n  0.042584843933582f, -0.201919227838516f, 0.042430106550455f, -0.201568335294724f,\n  0.042275641113520f, -0.201217323541641f, 0.042121443897486f, -0.200866192579269f,\n  0.041967518627644f, -0.200514942407608f, 0.041813857853413f, -0.200163587927818f,\n  0.041660469025373f, -0.199812099337578f, 0.041507352143526f, -0.199460506439209f,\n  0.041354499757290f, -0.199108779430389f, 0.041201923042536f, -0.198756948113441f,\n  0.041049610823393f, -0.198404997587204f, 0.040897574275732f, -0.198052927851677f,\n  0.040745802223682f, -0.197700738906860f, 0.040594302117825f, -0.197348430752754f,\n  0.040443073958158f, -0.196996018290520f, 0.040292114019394f, -0.196643486618996f,\n  0.040141426026821f, -0.196290835738182f, 0.039991009980440f, -0.195938065648079f,\n  0.039840862154961f, -0.195585191249847f, 0.039690986275673f, -0.195232197642326f,\n  0.039541378617287f, -0.194879084825516f, 0.039392042905092f, -0.194525867700577f,\n  0.039242979139090f, -0.194172516465187f, 0.039094187319279f, -0.193819075822830f,\n  0.038945667445660f, -0.193465501070023f, 0.038797415792942f, -0.193111822009087f,\n  0.038649436086416f, -0.192758023738861f, 0.038501728326082f, -0.192404121160507f,\n  0.038354292511940f, -0.192050099372864f, 0.038207128643990f, -0.191695958375931f,\n  0.038060232996941f, -0.191341713070869f, 0.037913613021374f, -0.190987363457680f,\n  0.037767261266708f, -0.190632879734039f, 0.037621185183525f, -0.190278306603432f,\n  0.037475381046534f, -0.189923599362373f, 0.037329845130444f, -0.189568802714348f,\n  0.037184584885836f, -0.189213871955872f, 0.037039596587420f, -0.188858851790428f,\n  0.036894880235195f, -0.188503712415695f, 0.036750435829163f, -0.188148453831673f,\n  0.036606263369322f, -0.187793090939522f, 0.036462362855673f, -0.187437608838081f,\n  0.036318738013506f, -0.187082037329674f, 0.036175385117531f, -0.186726331710815f,\n  0.036032304167747f, -0.186370536684990f, 0.035889495164156f, -0.186014622449875f,\n  0.035746958106756f, -0.185658603906631f, 0.035604696720839f, -0.185302466154099f,\n  0.035462711006403f, -0.184946224093437f, 0.035320993512869f, -0.184589877724648f,\n  0.035179551690817f, -0.184233412146568f, 0.035038381814957f, -0.183876842260361f,\n  0.034897487610579f, -0.183520168066025f, 0.034756865352392f, -0.183163389563560f,\n  0.034616518765688f, -0.182806491851807f, 0.034476444125175f, -0.182449504733086f,\n  0.034336645156145f, -0.182092398405075f, 0.034197118133307f, -0.181735187768936f,\n  0.034057866781950f, -0.181377857923508f, 0.033918887376785f, -0.181020438671112f,\n  0.033780183643103f, -0.180662900209427f, 0.033641755580902f, -0.180305257439613f,\n  0.033503599464893f, -0.179947525262833f, 0.033365719020367f, -0.179589673876762f,\n  0.033228114247322f, -0.179231703281403f, 0.033090781420469f, -0.178873643279076f,\n  0.032953724265099f, -0.178515478968620f, 0.032816942781210f, -0.178157210350037f,\n  0.032680433243513f, -0.177798837423325f, 0.032544203102589f, -0.177440345287323f,\n  0.032408244907856f, -0.177081763744354f, 0.032272562384605f, -0.176723077893257f,\n  0.032137155532837f, -0.176364272832870f, 0.032002024352551f, -0.176005378365517f,\n  0.031867165118456f, -0.175646379590034f, 0.031732585281134f, -0.175287276506424f,\n  0.031598277390003f, -0.174928069114685f, 0.031464248895645f, -0.174568757414818f,\n  0.031330492347479f, -0.174209341406822f, 0.031197015196085f, -0.173849821090698f,\n  0.031063811853528f, -0.173490211367607f, 0.030930884182453f, -0.173130482435226f,\n  0.030798232182860f, -0.172770664095879f, 0.030665857717395f, -0.172410741448402f,\n  0.030533758923411f, -0.172050714492798f, 0.030401935800910f, -0.171690583229065f,\n  0.030270388349891f, -0.171330362558365f, 0.030139118432999f, -0.170970037579536f,\n  0.030008124187589f, -0.170609608292580f, 0.029877405613661f, -0.170249074697495f,\n  0.029746964573860f, -0.169888436794281f, 0.029616801068187f, -0.169527709484100f,\n  0.029486913233995f, -0.169166877865791f, 0.029357301071286f, -0.168805956840515f,\n  0.029227968305349f, -0.168444931507111f, 0.029098909348249f, -0.168083801865578f,\n  0.028970129787922f, -0.167722567915916f, 0.028841627761722f, -0.167361244559288f,\n  0.028713401407003f, -0.166999831795692f, 0.028585452586412f, -0.166638299822807f,\n  0.028457781299949f, -0.166276678442955f, 0.028330387547612f, -0.165914967656136f,\n  0.028203271329403f, -0.165553152561188f, 0.028076432645321f, -0.165191248059273f,\n  0.027949871495366f, -0.164829224348068f, 0.027823587879539f, -0.164467126131058f,\n  0.027697581797838f, -0.164104923605919f, 0.027571853250265f, -0.163742616772652f,\n  0.027446404099464f, -0.163380220532417f, 0.027321230620146f, -0.163017734885216f,\n  0.027196336537600f, -0.162655144929886f, 0.027071721851826f, -0.162292465567589f,\n  0.026947384700179f, -0.161929681897163f, 0.026823325082660f, -0.161566808819771f,\n  0.026699542999268f, -0.161203846335411f, 0.026576040312648f, -0.160840779542923f,\n  0.026452817022800f, -0.160477623343468f, 0.026329871267080f, -0.160114362835884f,\n  0.026207204908133f, -0.159751012921333f, 0.026084816083312f, -0.159387573599815f,\n  0.025962706655264f, -0.159024044871330f, 0.025840876623988f, -0.158660411834717f,\n  0.025719324126840f, -0.158296689391136f, 0.025598052889109f, -0.157932877540588f,\n  0.025477059185505f, -0.157568961381912f, 0.025356344878674f, -0.157204970717430f,\n  0.025235909968615f, -0.156840875744820f, 0.025115754455328f, -0.156476691365242f,\n  0.024995878338814f, -0.156112402677536f, 0.024876279756427f, -0.155748039484024f,\n  0.024756962433457f, -0.155383571982384f, 0.024637924507260f, -0.155019029974937f,\n  0.024519165977836f, -0.154654383659363f, 0.024400688707829f, -0.154289647936821f,\n  0.024282488971949f, -0.153924822807312f, 0.024164570495486f, -0.153559908270836f,\n  0.024046931415796f, -0.153194904327393f, 0.023929571732879f, -0.152829796075821f,\n  0.023812493309379f, -0.152464613318443f, 0.023695694282651f, -0.152099341154099f,\n  0.023579176515341f, -0.151733979582787f, 0.023462938144803f, -0.151368513703346f,\n  0.023346979171038f, -0.151002973318100f, 0.023231301456690f, -0.150637343525887f,\n  0.023115905001760f, -0.150271624326706f, 0.023000787943602f, -0.149905815720558f,\n  0.022885952144861f, -0.149539917707443f, 0.022771397605538f, -0.149173930287361f,\n  0.022657122462988f, -0.148807853460312f, 0.022543128579855f, -0.148441687226295f,\n  0.022429415956140f, -0.148075446486473f, 0.022315984591842f, -0.147709101438522f,\n  0.022202832624316f, -0.147342681884766f, 0.022089963778853f, -0.146976172924042f,\n  0.021977374330163f, -0.146609574556351f, 0.021865066140890f, -0.146242901682854f,\n  0.021753041073680f, -0.145876124501228f, 0.021641295403242f, -0.145509272813797f,\n  0.021529832854867f, -0.145142331719399f, 0.021418649703264f, -0.144775316119194f,\n  0.021307749673724f, -0.144408211112022f, 0.021197130903602f, -0.144041016697884f,\n  0.021086793392897f, -0.143673732876778f, 0.020976737141609f, -0.143306359648705f,\n  0.020866964012384f, -0.142938911914825f, 0.020757472142577f, -0.142571389675140f,\n  0.020648263394833f, -0.142203763127327f, 0.020539334043860f, -0.141836062073708f,\n  0.020430689677596f, -0.141468286514282f, 0.020322324708104f, -0.141100421547890f,\n  0.020214242860675f, -0.140732467174530f, 0.020106444135308f, -0.140364438295364f,\n  0.019998926669359f, -0.139996320009232f, 0.019891692325473f, -0.139628127217293f,\n  0.019784741103649f, -0.139259845018387f, 0.019678071141243f, -0.138891488313675f,\n  0.019571684300900f, -0.138523042201996f, 0.019465578719974f, -0.138154521584511f,\n  0.019359756261110f, -0.137785911560059f, 0.019254218786955f, -0.137417227029800f,\n  0.019148962572217f, -0.137048453092575f, 0.019043987616897f, -0.136679604649544f,\n  0.018939297646284f, -0.136310681700706f, 0.018834890797734f, -0.135941669344902f,\n  0.018730765208602f, -0.135572582483292f, 0.018626924604177f, -0.135203406214714f,\n  0.018523367121816f, -0.134834155440331f, 0.018420090898871f, -0.134464830160141f,\n  0.018317099660635f, -0.134095430374146f, 0.018214391544461f, -0.133725941181183f,\n  0.018111966550350f, -0.133356377482414f, 0.018009826540947f, -0.132986739277840f,\n  0.017907967790961f, -0.132617011666298f, 0.017806394025683f, -0.132247209548950f,\n  0.017705103382468f, -0.131877332925797f, 0.017604095861316f, -0.131507381796837f,\n  0.017503373324871f, -0.131137356162071f, 0.017402933910489f, -0.130767241120338f,\n  0.017302779480815f, -0.130397051572800f, 0.017202908173203f, -0.130026802420616f,\n  0.017103319987655f, -0.129656463861465f, 0.017004016786814f, -0.129286035895348f,\n  0.016904998570681f, -0.128915548324585f, 0.016806263476610f, -0.128544986248016f,\n  0.016707813367248f, -0.128174334764481f, 0.016609646379948f, -0.127803623676300f,\n  0.016511764377356f, -0.127432823181152f, 0.016414167359471f, -0.127061963081360f,\n  0.016316853463650f, -0.126691013574600f, 0.016219824552536f, -0.126320004463196f,\n  0.016123080626130f, -0.125948905944824f, 0.016026621684432f, -0.125577747821808f,\n  0.015930447727442f, -0.125206500291824f, 0.015834558755159f, -0.124835193157196f,\n  0.015738952904940f, -0.124463804066181f, 0.015643632039428f, -0.124092340469360f,\n  0.015548598021269f, -0.123720809817314f, 0.015453847125173f, -0.123349204659462f,\n  0.015359382145107f, -0.122977524995804f, 0.015265202149749f, -0.122605770826340f,\n  0.015171307139099f, -0.122233949601650f, 0.015077698044479f, -0.121862053871155f,\n  0.014984373003244f, -0.121490091085434f, 0.014891333878040f, -0.121118053793907f,\n  0.014798580668867f, -0.120745941996574f, 0.014706112444401f, -0.120373763144016f,\n  0.014613929204643f, -0.120001509785652f, 0.014522032812238f, -0.119629189372063f,\n  0.014430420473218f, -0.119256794452667f, 0.014339094981551f, -0.118884332478046f,\n  0.014248054474592f, -0.118511803448200f, 0.014157299883664f, -0.118139199912548f,\n  0.014066831208766f, -0.117766529321671f, 0.013976648449898f, -0.117393791675568f,\n  0.013886751607060f, -0.117020979523659f, 0.013797140680254f, -0.116648100316525f,\n  0.013707815669477f, -0.116275154054165f, 0.013618776574731f, -0.115902140736580f,\n  0.013530024327338f, -0.115529052913189f, 0.013441557064652f, -0.115155905485153f,\n  0.013353376649320f, -0.114782683551311f, 0.013265483081341f, -0.114409394562244f,\n  0.013177875429392f, -0.114036038517952f, 0.013090553693473f, -0.113662622869015f,\n  0.013003518804908f, -0.113289132714272f, 0.012916770763695f, -0.112915575504303f,\n  0.012830308638513f, -0.112541958689690f, 0.012744133360684f, -0.112168267369270f,\n  0.012658244930208f, -0.111794516444206f, 0.012572642415762f, -0.111420698463917f,\n  0.012487327679992f, -0.111046813428402f, 0.012402298860252f, -0.110672861337662f,\n  0.012317557819188f, -0.110298842191696f, 0.012233102694154f, -0.109924763441086f,\n  0.012148935347795f, -0.109550617635250f, 0.012065053917468f, -0.109176412224770f,\n  0.011981460265815f, -0.108802139759064f, 0.011898153461516f, -0.108427800238132f,\n  0.011815134435892f, -0.108053401112556f, 0.011732402257621f, -0.107678934931755f,\n  0.011649956926703f, -0.107304409146309f, 0.011567799374461f, -0.106929816305637f,\n  0.011485928669572f, -0.106555156409740f, 0.011404345743358f, -0.106180444359779f,\n  0.011323049664497f, -0.105805665254593f, 0.011242041364312f, -0.105430819094181f,\n  0.011161320842803f, -0.105055920779705f, 0.011080888099968f, -0.104680955410004f,\n  0.011000742204487f, -0.104305922985077f, 0.010920885019004f, -0.103930838406086f,\n  0.010841314680874f, -0.103555686771870f, 0.010762032121420f, -0.103180475533009f,\n  0.010683037340641f, -0.102805204689503f, 0.010604331269860f, -0.102429874241352f,\n  0.010525912046432f, -0.102054484188557f, 0.010447781533003f, -0.101679034531116f,\n  0.010369938798249f, -0.101303517818451f, 0.010292383842170f, -0.100927948951721f,\n  0.010215117596090f, -0.100552320480347f, 0.010138138197362f, -0.100176624953747f,\n  0.010061448439956f, -0.099800877273083f, 0.009985045529902f, -0.099425069987774f,\n  0.009908932261169f, -0.099049203097820f, 0.009833106771111f, -0.098673284053802f,\n  0.009757569059730f, -0.098297297954559f, 0.009682320058346f, -0.097921259701252f,\n  0.009607359766960f, -0.097545161843300f, 0.009532688185573f, -0.097169004380703f,\n  0.009458304382861f, -0.096792794764042f, 0.009384209290147f, -0.096416525542736f,\n  0.009310402907431f, -0.096040196716785f, 0.009236886166036f, -0.095663815736771f,\n  0.009163657203317f, -0.095287375152111f, 0.009090716950595f, -0.094910882413387f,\n  0.009018065407872f, -0.094534330070019f, 0.008945702575147f, -0.094157725572586f,\n  0.008873629383743f, -0.093781061470509f, 0.008801844902337f, -0.093404345214367f,\n  0.008730349130929f, -0.093027576804161f, 0.008659142069519f, -0.092650748789310f,\n  0.008588224649429f, -0.092273868620396f, 0.008517595939338f, -0.091896936297417f,\n  0.008447255939245f, -0.091519944369793f, 0.008377205580473f, -0.091142900288105f,\n  0.008307444863021f, -0.090765804052353f, 0.008237972855568f, -0.090388655662537f,\n  0.008168790489435f, -0.090011447668076f, 0.008099896833301f, -0.089634194970131f,\n  0.008031292818487f, -0.089256882667542f, 0.007962978444993f, -0.088879525661469f,\n  0.007894953712821f, -0.088502109050751f, 0.007827218621969f, -0.088124647736549f,\n  0.007759772241116f, -0.087747126817703f, 0.007692615967244f, -0.087369553744793f,\n  0.007625748869032f, -0.086991935968399f, 0.007559171877801f, -0.086614266037941f,\n  0.007492884527892f, -0.086236543953419f, 0.007426886819303f, -0.085858769714832f,\n  0.007361178752035f, -0.085480943322182f, 0.007295760791749f, -0.085103072226048f,\n  0.007230632472783f, -0.084725148975849f, 0.007165793795139f, -0.084347173571587f,\n  0.007101245224476f, -0.083969146013260f, 0.007036986760795f, -0.083591073751450f,\n  0.006973018404096f, -0.083212949335575f, 0.006909339688718f, -0.082834780216217f,\n  0.006845951545984f, -0.082456558942795f, 0.006782853044569f, -0.082078292965889f,\n  0.006720044650137f, -0.081699974834919f, 0.006657526828349f, -0.081321612000465f,\n  0.006595299113542f, -0.080943197011948f, 0.006533361505717f, -0.080564737319946f,\n  0.006471714470536f, -0.080186225473881f, 0.006410357542336f, -0.079807676374912f,\n  0.006349290721118f, -0.079429075121880f, 0.006288514938205f, -0.079050421714783f,\n  0.006228029262275f, -0.078671731054783f, 0.006167833693326f, -0.078292988240719f,\n  0.006107929162681f, -0.077914200723171f, 0.006048315204680f, -0.077535368502140f,\n  0.005988991353661f, -0.077156484127045f, 0.005929958540946f, -0.076777562499046f,\n  0.005871216300875f, -0.076398596167564f, 0.005812764633447f, -0.076019577682018f,\n  0.005754603538662f, -0.075640521943569f, 0.005696733482182f, -0.075261414051056f,\n  0.005639153998345f, -0.074882268905640f, 0.005581865552813f, -0.074503071606159f,\n  0.005524867679924f, -0.074123837053776f, 0.005468160845339f, -0.073744557797909f,\n  0.005411745049059f, -0.073365233838558f, 0.005355620291084f, -0.072985872626305f,\n  0.005299786105752f, -0.072606459259987f, 0.005244242958724f, -0.072227008640766f,\n  0.005188991315663f, -0.071847513318062f, 0.005134030245245f, -0.071467980742455f,\n  0.005079360678792f, -0.071088403463364f, 0.005024982150644f, -0.070708781480789f,\n  0.004970894660801f, -0.070329122245312f, 0.004917098674923f, -0.069949418306351f,\n  0.004863593727350f, -0.069569669663906f, 0.004810380283743f, -0.069189883768559f,\n  0.004757457878441f, -0.068810060620308f, 0.004704826977104f, -0.068430192768574f,\n  0.004652487114072f, -0.068050287663937f, 0.004600439220667f, -0.067670337855816f,\n  0.004548682365566f, -0.067290350794792f, 0.004497217014432f, -0.066910326480865f,\n  0.004446043167263f, -0.066530264914036f, 0.004395160824060f, -0.066150158643723f,\n  0.004344569984823f, -0.065770015120506f, 0.004294271115214f, -0.065389834344387f,\n  0.004244263283908f, -0.065009608864784f, 0.004194547422230f, -0.064629353582859f,\n  0.004145123064518f, -0.064249053597450f, 0.004095990676433f, -0.063868723809719f,\n  0.004047149792314f, -0.063488349318504f, 0.003998600877821f, -0.063107937574387f,\n  0.003950343467295f, -0.062727488577366f, 0.003902378026396f, -0.062347009778023f,\n  0.003854704322293f, -0.061966486275196f, 0.003807322587818f, -0.061585929244757f,\n  0.003760232590139f, -0.061205338686705f, 0.003713434794918f, -0.060824707150459f,\n  0.003666928736493f, -0.060444042086601f, 0.003620714880526f, -0.060063343495131f,\n  0.003574792761356f, -0.059682607650757f, 0.003529162844643f, -0.059301838278770f,\n  0.003483824897557f, -0.058921031653881f, 0.003438779152930f, -0.058540191501379f,\n  0.003394025377929f, -0.058159314095974f, 0.003349563805386f, -0.057778406888247f,\n  0.003305394435301f, -0.057397462427616f, 0.003261517267674f, -0.057016488164663f,\n  0.003217932302505f, -0.056635476648808f, 0.003174639539793f, -0.056254431605339f,\n  0.003131638979539f, -0.055873356759548f, 0.003088930854574f, -0.055492244660854f,\n  0.003046514932066f, -0.055111102759838f, 0.003004391444847f, -0.054729927331209f,\n  0.002962560392916f, -0.054348722100258f, 0.002921021543443f, -0.053967483341694f,\n  0.002879775362089f, -0.053586211055517f, 0.002838821383193f, -0.053204908967018f,\n  0.002798160072416f, -0.052823577076197f, 0.002757790964097f, -0.052442211657763f,\n  0.002717714523897f, -0.052060816437006f, 0.002677930751815f, -0.051679391413927f,\n  0.002638439415023f, -0.051297932863235f, 0.002599240746349f, -0.050916448235512f,\n  0.002560334512964f, -0.050534930080175f, 0.002521721180528f, -0.050153385847807f,\n  0.002483400283381f, -0.049771808087826f, 0.002445372054353f, -0.049390204250813f,\n  0.002407636726275f, -0.049008570611477f, 0.002370193833485f, -0.048626907169819f,\n  0.002333043841645f, -0.048245213925838f, 0.002296186750755f, -0.047863494604826f,\n  0.002259622327983f, -0.047481749206781f, 0.002223350573331f, -0.047099970281124f,\n  0.002187371719629f, -0.046718169003725f, 0.002151685766876f, -0.046336337924004f,\n  0.002116292715073f, -0.045954477041960f, 0.002081192564219f, -0.045572593808174f,\n  0.002046385314316f, -0.045190680772066f, 0.002011870965362f, -0.044808741658926f,\n  0.001977649517357f, -0.044426776468754f, 0.001943721086718f, -0.044044785201550f,\n  0.001910085673444f, -0.043662767857313f, 0.001876743277535f, -0.043280724436045f,\n  0.001843693898991f, -0.042898654937744f, 0.001810937537812f, -0.042516563087702f,\n  0.001778474310413f, -0.042134445160627f, 0.001746304216795f, -0.041752301156521f,\n  0.001714427140541f, -0.041370131075382f, 0.001682843198068f, -0.040987938642502f,\n  0.001651552389376f, -0.040605723857880f, 0.001620554830879f, -0.040223482996225f,\n  0.001589850406162f, -0.039841219782829f, 0.001559439115226f, -0.039458930492401f,\n  0.001529321074486f, -0.039076622575521f, 0.001499496400356f, -0.038694288581610f,\n  0.001469964860007f, -0.038311932235956f, 0.001440726569854f, -0.037929553538561f,\n  0.001411781646311f, -0.037547148764133f, 0.001383129972965f, -0.037164725363255f,\n  0.001354771666229f, -0.036782283335924f, 0.001326706726104f, -0.036399815231562f,\n  0.001298935036175f, -0.036017324775457f, 0.001271456829272f, -0.035634815692902f,\n  0.001244271872565f, -0.035252287983894f, 0.001217380515300f, -0.034869734197855f,\n  0.001190782408230f, -0.034487165510654f, 0.001164477784187f, -0.034104570746422f,\n  0.001138466643170f, -0.033721961081028f, 0.001112748985179f, -0.033339329063892f,\n  0.001087324810214f, -0.032956674695015f, 0.001062194118276f, -0.032574005424976f,\n  0.001037356909364f, -0.032191313803196f, 0.001012813183479f, -0.031808607280254f,\n  0.000988563057035f, -0.031425878405571f, 0.000964606530033f, -0.031043132767081f,\n  0.000940943544265f, -0.030660368502140f, 0.000917574157938f, -0.030277585610747f,\n  0.000894498312846f, -0.029894785955548f, 0.000871716125403f, -0.029511967673898f,\n  0.000849227537401f, -0.029129132628441f, 0.000827032607049f, -0.028746278956532f,\n  0.000805131276138f, -0.028363410383463f, 0.000783523661084f, -0.027980525046587f,\n  0.000762209703680f, -0.027597622945905f, 0.000741189462133f, -0.027214704081416f,\n  0.000720462878235f, -0.026831768453121f, 0.000700030010194f, -0.026448817923665f,\n  0.000679890916217f, -0.026065852493048f, 0.000660045538098f, -0.025682870298624f,\n  0.000640493875835f, -0.025299875065684f, 0.000621235987637f, -0.024916863068938f,\n  0.000602271873504f, -0.024533838033676f, 0.000583601591643f, -0.024150796234608f,\n  0.000565225025639f, -0.023767741397023f, 0.000547142291907f, -0.023384673520923f,\n  0.000529353390448f, -0.023001590743661f, 0.000511858321261f, -0.022618494927883f,\n  0.000494657084346f, -0.022235386073589f, 0.000477749679703f, -0.021852264180779f,\n  0.000461136136437f, -0.021469129249454f, 0.000444816454547f, -0.021085981279612f,\n  0.000428790634032f, -0.020702820271254f, 0.000413058703998f, -0.020319648087025f,\n  0.000397620693548f, -0.019936462864280f, 0.000382476573577f, -0.019553268328309f,\n  0.000367626344087f, -0.019170060753822f, 0.000353070063284f, -0.018786842003465f,\n  0.000338807702065f, -0.018403612077236f, 0.000324839289533f, -0.018020370975137f,\n  0.000311164796585f, -0.017637118697166f, 0.000297784281429f, -0.017253857105970f,\n  0.000284697714960f, -0.016870586201549f, 0.000271905126283f, -0.016487304121256f,\n  0.000259406515397f, -0.016104012727737f, 0.000247201882303f, -0.015720712020993f,\n  0.000235291256104f, -0.015337402001023f, 0.000223674607696f, -0.014954082667828f,\n  0.000212351980736f, -0.014570754021406f, 0.000201323360670f, -0.014187417924404f,\n  0.000190588747500f, -0.013804072514176f, 0.000180148170330f, -0.013420719653368f,\n  0.000170001629158f, -0.013037359341979f, 0.000160149123985f, -0.012653990648687f,\n  0.000150590654812f, -0.012270614504814f, 0.000141326236189f, -0.011887230910361f,\n  0.000132355868118f, -0.011503840796649f, 0.000123679565149f, -0.011120444163680f,\n  0.000115297327284f, -0.010737040080130f, 0.000107209154521f, -0.010353630408645f,\n  0.000099415054137f, -0.009970214217901f, 0.000091915040684f, -0.009586792439222f,\n  0.000084709099610f, -0.009203365072608f, 0.000077797252743f, -0.008819932118058f,\n  0.000071179500083f, -0.008436493575573f, 0.000064855834353f, -0.008053051307797f,\n  0.000058826273744f, -0.007669602986425f, 0.000053090810979f, -0.007286150939763f,\n  0.000047649456974f, -0.006902694236487f, 0.000042502211727f, -0.006519233807921f,\n  0.000037649078877f, -0.006135769188404f, 0.000033090062061f, -0.005752300843596f,\n  0.000028825161280f, -0.005368829704821f, 0.000024854381991f, -0.004985354840755f,\n  0.000021177724193f, -0.004601877182722f, 0.000017795191525f, -0.004218397196382f,\n  0.000014706784896f, -0.003834914416075f, 0.000011912506125f, -0.003451429307461f,\n  0.000009412358850f, -0.003067942336202f, 0.000007206342616f, -0.002684453502297f,\n  0.000005294459243f, -0.002300963038579f, 0.000003676709639f, -0.001917471294291f,\n  0.000002353095169f, -0.001533978385851f, 0.000001323616516f, -0.001150484546088f,\n  0.000000588274133f, -0.000766990066040f, 0.000000147068562f, -0.000383495149435f,\n  0.000000000000000f, -0.000000000000023f, 0.000000147068562f, 0.000383495149435f,\n  0.000000588274133f, 0.000766990066040f, 0.000001323616516f, 0.001150484546088f,\n  0.000002353095169f, 0.001533978385851f, 0.000003676709639f, 0.001917471294291f,\n  0.000005294459243f, 0.002300963038579f, 0.000007206342616f, 0.002684453502297f,\n  0.000009412358850f, 0.003067942336202f, 0.000011912506125f, 0.003451429307461f,\n  0.000014706784896f, 0.003834914416075f, 0.000017795191525f, 0.004218397196382f,\n  0.000021177724193f, 0.004601877182722f, 0.000024854381991f, 0.004985354840755f,\n  0.000028825161280f, 0.005368829704821f, 0.000033090062061f, 0.005752300843596f,\n  0.000037649078877f, 0.006135769188404f, 0.000042502211727f, 0.006519233807921f,\n  0.000047649456974f, 0.006902694236487f, 0.000053090810979f, 0.007286150939763f,\n  0.000058826273744f, 0.007669602986425f, 0.000064855834353f, 0.008053051307797f,\n  0.000071179500083f, 0.008436493575573f, 0.000077797252743f, 0.008819932118058f,\n  0.000084709099610f, 0.009203365072608f, 0.000091915040684f, 0.009586792439222f,\n  0.000099415054137f, 0.009970214217901f, 0.000107209154521f, 0.010353630408645f,\n  0.000115297327284f, 0.010737040080130f, 0.000123679565149f, 0.011120444163680f,\n  0.000132355868118f, 0.011503840796649f, 0.000141326236189f, 0.011887230910361f,\n  0.000150590654812f, 0.012270614504814f, 0.000160149123985f, 0.012653990648687f,\n  0.000170001629158f, 0.013037359341979f, 0.000180148170330f, 0.013420719653368f,\n  0.000190588747500f, 0.013804072514176f, 0.000201323360670f, 0.014187417924404f,\n  0.000212351980736f, 0.014570754021406f, 0.000223674607696f, 0.014954082667828f,\n  0.000235291256104f, 0.015337402001023f, 0.000247201882303f, 0.015720712020993f,\n  0.000259406515397f, 0.016104012727737f, 0.000271905126283f, 0.016487304121256f,\n  0.000284697714960f, 0.016870586201549f, 0.000297784281429f, 0.017253857105970f,\n  0.000311164796585f, 0.017637118697166f, 0.000324839289533f, 0.018020370975137f,\n  0.000338807702065f, 0.018403612077236f, 0.000353070063284f, 0.018786842003465f,\n  0.000367626344087f, 0.019170060753822f, 0.000382476573577f, 0.019553268328309f,\n  0.000397620693548f, 0.019936462864280f, 0.000413058703998f, 0.020319648087025f,\n  0.000428790634032f, 0.020702820271254f, 0.000444816454547f, 0.021085981279612f,\n  0.000461136136437f, 0.021469129249454f, 0.000477749679703f, 0.021852264180779f,\n  0.000494657084346f, 0.022235386073589f, 0.000511858321261f, 0.022618494927883f,\n  0.000529353390448f, 0.023001590743661f, 0.000547142291907f, 0.023384673520923f,\n  0.000565225025639f, 0.023767741397023f, 0.000583601591643f, 0.024150796234608f,\n  0.000602271873504f, 0.024533838033676f, 0.000621235987637f, 0.024916863068938f,\n  0.000640493875835f, 0.025299875065684f, 0.000660045538098f, 0.025682870298624f,\n  0.000679890916217f, 0.026065852493048f, 0.000700030010194f, 0.026448817923665f,\n  0.000720462878235f, 0.026831768453121f, 0.000741189462133f, 0.027214704081416f,\n  0.000762209703680f, 0.027597622945905f, 0.000783523661084f, 0.027980525046587f,\n  0.000805131276138f, 0.028363410383463f, 0.000827032607049f, 0.028746278956532f,\n  0.000849227537401f, 0.029129132628441f, 0.000871716125403f, 0.029511967673898f,\n  0.000894498312846f, 0.029894785955548f, 0.000917574157938f, 0.030277585610747f,\n  0.000940943544265f, 0.030660368502140f, 0.000964606530033f, 0.031043132767081f,\n  0.000988563057035f, 0.031425878405571f, 0.001012813183479f, 0.031808607280254f,\n  0.001037356909364f, 0.032191313803196f, 0.001062194118276f, 0.032574005424976f,\n  0.001087324810214f, 0.032956674695015f, 0.001112748985179f, 0.033339329063892f,\n  0.001138466643170f, 0.033721961081028f, 0.001164477784187f, 0.034104570746422f,\n  0.001190782408230f, 0.034487165510654f, 0.001217380515300f, 0.034869734197855f,\n  0.001244271872565f, 0.035252287983894f, 0.001271456829272f, 0.035634815692902f,\n  0.001298935036175f, 0.036017324775457f, 0.001326706726104f, 0.036399815231562f,\n  0.001354771666229f, 0.036782283335924f, 0.001383129972965f, 0.037164725363255f,\n  0.001411781646311f, 0.037547148764133f, 0.001440726569854f, 0.037929553538561f,\n  0.001469964860007f, 0.038311932235956f, 0.001499496400356f, 0.038694288581610f,\n  0.001529321074486f, 0.039076622575521f, 0.001559439115226f, 0.039458930492401f,\n  0.001589850406162f, 0.039841219782829f, 0.001620554830879f, 0.040223482996225f,\n  0.001651552389376f, 0.040605723857880f, 0.001682843198068f, 0.040987938642502f,\n  0.001714427140541f, 0.041370131075382f, 0.001746304216795f, 0.041752301156521f,\n  0.001778474310413f, 0.042134445160627f, 0.001810937537812f, 0.042516563087702f,\n  0.001843693898991f, 0.042898654937744f, 0.001876743277535f, 0.043280724436045f,\n  0.001910085673444f, 0.043662767857313f, 0.001943721086718f, 0.044044785201550f,\n  0.001977649517357f, 0.044426776468754f, 0.002011870965362f, 0.044808741658926f,\n  0.002046385314316f, 0.045190680772066f, 0.002081192564219f, 0.045572593808174f,\n  0.002116292715073f, 0.045954477041960f, 0.002151685766876f, 0.046336337924004f,\n  0.002187371719629f, 0.046718169003725f, 0.002223350573331f, 0.047099970281124f,\n  0.002259622327983f, 0.047481749206781f, 0.002296186750755f, 0.047863494604826f,\n  0.002333043841645f, 0.048245213925838f, 0.002370193833485f, 0.048626907169819f,\n  0.002407636726275f, 0.049008570611477f, 0.002445372054353f, 0.049390204250813f,\n  0.002483400283381f, 0.049771808087826f, 0.002521721180528f, 0.050153385847807f,\n  0.002560334512964f, 0.050534930080175f, 0.002599240746349f, 0.050916448235512f,\n  0.002638439415023f, 0.051297932863235f, 0.002677930751815f, 0.051679391413927f,\n  0.002717714523897f, 0.052060816437006f, 0.002757790964097f, 0.052442211657763f,\n  0.002798160072416f, 0.052823577076197f, 0.002838821383193f, 0.053204908967018f,\n  0.002879775362089f, 0.053586211055517f, 0.002921021543443f, 0.053967483341694f,\n  0.002962560392916f, 0.054348722100258f, 0.003004391444847f, 0.054729927331209f,\n  0.003046514932066f, 0.055111102759838f, 0.003088930854574f, 0.055492244660854f,\n  0.003131638979539f, 0.055873356759548f, 0.003174639539793f, 0.056254431605339f,\n  0.003217932302505f, 0.056635476648808f, 0.003261517267674f, 0.057016488164663f,\n  0.003305394435301f, 0.057397462427616f, 0.003349563805386f, 0.057778406888247f,\n  0.003394025377929f, 0.058159314095974f, 0.003438779152930f, 0.058540191501379f,\n  0.003483824897557f, 0.058921031653881f, 0.003529162844643f, 0.059301838278770f,\n  0.003574792761356f, 0.059682607650757f, 0.003620714880526f, 0.060063343495131f,\n  0.003666928736493f, 0.060444042086601f, 0.003713434794918f, 0.060824707150459f,\n  0.003760232590139f, 0.061205338686705f, 0.003807322587818f, 0.061585929244757f,\n  0.003854704322293f, 0.061966486275196f, 0.003902378026396f, 0.062347009778023f,\n  0.003950343467295f, 0.062727488577366f, 0.003998600877821f, 0.063107937574387f,\n  0.004047149792314f, 0.063488349318504f, 0.004095990676433f, 0.063868723809719f,\n  0.004145123064518f, 0.064249053597450f, 0.004194547422230f, 0.064629353582859f,\n  0.004244263283908f, 0.065009608864784f, 0.004294271115214f, 0.065389834344387f,\n  0.004344569984823f, 0.065770015120506f, 0.004395160824060f, 0.066150158643723f,\n  0.004446043167263f, 0.066530264914036f, 0.004497217014432f, 0.066910326480865f,\n  0.004548682365566f, 0.067290350794792f, 0.004600439220667f, 0.067670337855816f,\n  0.004652487114072f, 0.068050287663937f, 0.004704826977104f, 0.068430192768574f,\n  0.004757457878441f, 0.068810060620308f, 0.004810380283743f, 0.069189883768559f,\n  0.004863593727350f, 0.069569669663906f, 0.004917098674923f, 0.069949418306351f,\n  0.004970894660801f, 0.070329122245312f, 0.005024982150644f, 0.070708781480789f,\n  0.005079360678792f, 0.071088403463364f, 0.005134030245245f, 0.071467980742455f,\n  0.005188991315663f, 0.071847513318062f, 0.005244242958724f, 0.072227008640766f,\n  0.005299786105752f, 0.072606459259987f, 0.005355620291084f, 0.072985872626305f,\n  0.005411745049059f, 0.073365233838558f, 0.005468160845339f, 0.073744557797909f,\n  0.005524867679924f, 0.074123837053776f, 0.005581865552813f, 0.074503071606159f,\n  0.005639153998345f, 0.074882268905640f, 0.005696733482182f, 0.075261414051056f,\n  0.005754603538662f, 0.075640521943569f, 0.005812764633447f, 0.076019577682018f,\n  0.005871216300875f, 0.076398596167564f, 0.005929958540946f, 0.076777562499046f,\n  0.005988991353661f, 0.077156484127045f, 0.006048315204680f, 0.077535368502140f,\n  0.006107929162681f, 0.077914200723171f, 0.006167833693326f, 0.078292988240719f,\n  0.006228029262275f, 0.078671731054783f, 0.006288514938205f, 0.079050421714783f,\n  0.006349290721118f, 0.079429075121880f, 0.006410357542336f, 0.079807676374912f,\n  0.006471714470536f, 0.080186225473881f, 0.006533361505717f, 0.080564737319946f,\n  0.006595299113542f, 0.080943197011948f, 0.006657526828349f, 0.081321612000465f,\n  0.006720044650137f, 0.081699974834919f, 0.006782853044569f, 0.082078292965889f,\n  0.006845951545984f, 0.082456558942795f, 0.006909339688718f, 0.082834780216217f,\n  0.006973018404096f, 0.083212949335575f, 0.007036986760795f, 0.083591073751450f,\n  0.007101245224476f, 0.083969146013260f, 0.007165793795139f, 0.084347173571587f,\n  0.007230632472783f, 0.084725148975849f, 0.007295760791749f, 0.085103072226048f,\n  0.007361178752035f, 0.085480943322182f, 0.007426886819303f, 0.085858769714832f,\n  0.007492884527892f, 0.086236543953419f, 0.007559171877801f, 0.086614266037941f,\n  0.007625748869032f, 0.086991935968399f, 0.007692615967244f, 0.087369553744793f,\n  0.007759772241116f, 0.087747126817703f, 0.007827218621969f, 0.088124647736549f,\n  0.007894953712821f, 0.088502109050751f, 0.007962978444993f, 0.088879525661469f,\n  0.008031292818487f, 0.089256882667542f, 0.008099896833301f, 0.089634194970131f,\n  0.008168790489435f, 0.090011447668076f, 0.008237972855568f, 0.090388655662537f,\n  0.008307444863021f, 0.090765804052353f, 0.008377205580473f, 0.091142900288105f,\n  0.008447255939245f, 0.091519944369793f, 0.008517595939338f, 0.091896936297417f,\n  0.008588224649429f, 0.092273868620396f, 0.008659142069519f, 0.092650748789310f,\n  0.008730349130929f, 0.093027576804161f, 0.008801844902337f, 0.093404345214367f,\n  0.008873629383743f, 0.093781061470509f, 0.008945702575147f, 0.094157725572586f,\n  0.009018065407872f, 0.094534330070019f, 0.009090716950595f, 0.094910882413387f,\n  0.009163657203317f, 0.095287375152111f, 0.009236886166036f, 0.095663815736771f,\n  0.009310402907431f, 0.096040196716785f, 0.009384209290147f, 0.096416525542736f,\n  0.009458304382861f, 0.096792794764042f, 0.009532688185573f, 0.097169004380703f,\n  0.009607359766960f, 0.097545161843300f, 0.009682320058346f, 0.097921259701252f,\n  0.009757569059730f, 0.098297297954559f, 0.009833106771111f, 0.098673284053802f,\n  0.009908932261169f, 0.099049203097820f, 0.009985045529902f, 0.099425069987774f,\n  0.010061448439956f, 0.099800877273083f, 0.010138138197362f, 0.100176624953747f,\n  0.010215117596090f, 0.100552320480347f, 0.010292383842170f, 0.100927948951721f,\n  0.010369938798249f, 0.101303517818451f, 0.010447781533003f, 0.101679034531116f,\n  0.010525912046432f, 0.102054484188557f, 0.010604331269860f, 0.102429874241352f,\n  0.010683037340641f, 0.102805204689503f, 0.010762032121420f, 0.103180475533009f,\n  0.010841314680874f, 0.103555686771870f, 0.010920885019004f, 0.103930838406086f,\n  0.011000742204487f, 0.104305922985077f, 0.011080888099968f, 0.104680955410004f,\n  0.011161320842803f, 0.105055920779705f, 0.011242041364312f, 0.105430819094181f,\n  0.011323049664497f, 0.105805665254593f, 0.011404345743358f, 0.106180444359779f,\n  0.011485928669572f, 0.106555156409740f, 0.011567799374461f, 0.106929816305637f,\n  0.011649956926703f, 0.107304409146309f, 0.011732402257621f, 0.107678934931755f,\n  0.011815134435892f, 0.108053401112556f, 0.011898153461516f, 0.108427800238132f,\n  0.011981460265815f, 0.108802139759064f, 0.012065053917468f, 0.109176412224770f,\n  0.012148935347795f, 0.109550617635250f, 0.012233102694154f, 0.109924763441086f,\n  0.012317557819188f, 0.110298842191696f, 0.012402298860252f, 0.110672861337662f,\n  0.012487327679992f, 0.111046813428402f, 0.012572642415762f, 0.111420698463917f,\n  0.012658244930208f, 0.111794516444206f, 0.012744133360684f, 0.112168267369270f,\n  0.012830308638513f, 0.112541958689690f, 0.012916770763695f, 0.112915575504303f,\n  0.013003518804908f, 0.113289132714272f, 0.013090553693473f, 0.113662622869015f,\n  0.013177875429392f, 0.114036038517952f, 0.013265483081341f, 0.114409394562244f,\n  0.013353376649320f, 0.114782683551311f, 0.013441557064652f, 0.115155905485153f,\n  0.013530024327338f, 0.115529052913189f, 0.013618776574731f, 0.115902140736580f,\n  0.013707815669477f, 0.116275154054165f, 0.013797140680254f, 0.116648100316525f,\n  0.013886751607060f, 0.117020979523659f, 0.013976648449898f, 0.117393791675568f,\n  0.014066831208766f, 0.117766529321671f, 0.014157299883664f, 0.118139199912548f,\n  0.014248054474592f, 0.118511803448200f, 0.014339094981551f, 0.118884332478046f,\n  0.014430420473218f, 0.119256794452667f, 0.014522032812238f, 0.119629189372063f,\n  0.014613929204643f, 0.120001509785652f, 0.014706112444401f, 0.120373763144016f,\n  0.014798580668867f, 0.120745941996574f, 0.014891333878040f, 0.121118053793907f,\n  0.014984373003244f, 0.121490091085434f, 0.015077698044479f, 0.121862053871155f,\n  0.015171307139099f, 0.122233949601650f, 0.015265202149749f, 0.122605770826340f,\n  0.015359382145107f, 0.122977524995804f, 0.015453847125173f, 0.123349204659462f,\n  0.015548598021269f, 0.123720809817314f, 0.015643632039428f, 0.124092340469360f,\n  0.015738952904940f, 0.124463804066181f, 0.015834558755159f, 0.124835193157196f,\n  0.015930447727442f, 0.125206500291824f, 0.016026621684432f, 0.125577747821808f,\n  0.016123080626130f, 0.125948905944824f, 0.016219824552536f, 0.126320004463196f,\n  0.016316853463650f, 0.126691013574600f, 0.016414167359471f, 0.127061963081360f,\n  0.016511764377356f, 0.127432823181152f, 0.016609646379948f, 0.127803623676300f,\n  0.016707813367248f, 0.128174334764481f, 0.016806263476610f, 0.128544986248016f,\n  0.016904998570681f, 0.128915548324585f, 0.017004016786814f, 0.129286035895348f,\n  0.017103319987655f, 0.129656463861465f, 0.017202908173203f, 0.130026802420616f,\n  0.017302779480815f, 0.130397051572800f, 0.017402933910489f, 0.130767241120338f,\n  0.017503373324871f, 0.131137356162071f, 0.017604095861316f, 0.131507381796837f,\n  0.017705103382468f, 0.131877332925797f, 0.017806394025683f, 0.132247209548950f,\n  0.017907967790961f, 0.132617011666298f, 0.018009826540947f, 0.132986739277840f,\n  0.018111966550350f, 0.133356377482414f, 0.018214391544461f, 0.133725941181183f,\n  0.018317099660635f, 0.134095430374146f, 0.018420090898871f, 0.134464830160141f,\n  0.018523367121816f, 0.134834155440331f, 0.018626924604177f, 0.135203406214714f,\n  0.018730765208602f, 0.135572582483292f, 0.018834890797734f, 0.135941669344902f,\n  0.018939297646284f, 0.136310681700706f, 0.019043987616897f, 0.136679604649544f,\n  0.019148962572217f, 0.137048453092575f, 0.019254218786955f, 0.137417227029800f,\n  0.019359756261110f, 0.137785911560059f, 0.019465578719974f, 0.138154521584511f,\n  0.019571684300900f, 0.138523042201996f, 0.019678071141243f, 0.138891488313675f,\n  0.019784741103649f, 0.139259845018387f, 0.019891692325473f, 0.139628127217293f,\n  0.019998926669359f, 0.139996320009232f, 0.020106444135308f, 0.140364438295364f,\n  0.020214242860675f, 0.140732467174530f, 0.020322324708104f, 0.141100421547890f,\n  0.020430689677596f, 0.141468286514282f, 0.020539334043860f, 0.141836062073708f,\n  0.020648263394833f, 0.142203763127327f, 0.020757472142577f, 0.142571389675140f,\n  0.020866964012384f, 0.142938911914825f, 0.020976737141609f, 0.143306359648705f,\n  0.021086793392897f, 0.143673732876778f, 0.021197130903602f, 0.144041016697884f,\n  0.021307749673724f, 0.144408211112022f, 0.021418649703264f, 0.144775316119194f,\n  0.021529832854867f, 0.145142331719399f, 0.021641295403242f, 0.145509272813797f,\n  0.021753041073680f, 0.145876124501228f, 0.021865066140890f, 0.146242901682854f,\n  0.021977374330163f, 0.146609574556351f, 0.022089963778853f, 0.146976172924042f,\n  0.022202832624316f, 0.147342681884766f, 0.022315984591842f, 0.147709101438522f,\n  0.022429415956140f, 0.148075446486473f, 0.022543128579855f, 0.148441687226295f,\n  0.022657122462988f, 0.148807853460312f, 0.022771397605538f, 0.149173930287361f,\n  0.022885952144861f, 0.149539917707443f, 0.023000787943602f, 0.149905815720558f,\n  0.023115905001760f, 0.150271624326706f, 0.023231301456690f, 0.150637343525887f,\n  0.023346979171038f, 0.151002973318100f, 0.023462938144803f, 0.151368513703346f,\n  0.023579176515341f, 0.151733979582787f, 0.023695694282651f, 0.152099341154099f,\n  0.023812493309379f, 0.152464613318443f, 0.023929571732879f, 0.152829796075821f,\n  0.024046931415796f, 0.153194904327393f, 0.024164570495486f, 0.153559908270836f,\n  0.024282488971949f, 0.153924822807312f, 0.024400688707829f, 0.154289647936821f,\n  0.024519165977836f, 0.154654383659363f, 0.024637924507260f, 0.155019029974937f,\n  0.024756962433457f, 0.155383571982384f, 0.024876279756427f, 0.155748039484024f,\n  0.024995878338814f, 0.156112402677536f, 0.025115754455328f, 0.156476691365242f,\n  0.025235909968615f, 0.156840875744820f, 0.025356344878674f, 0.157204970717430f,\n  0.025477059185505f, 0.157568961381912f, 0.025598052889109f, 0.157932877540588f,\n  0.025719324126840f, 0.158296689391136f, 0.025840876623988f, 0.158660411834717f,\n  0.025962706655264f, 0.159024044871330f, 0.026084816083312f, 0.159387573599815f,\n  0.026207204908133f, 0.159751012921333f, 0.026329871267080f, 0.160114362835884f,\n  0.026452817022800f, 0.160477623343468f, 0.026576040312648f, 0.160840779542923f,\n  0.026699542999268f, 0.161203846335411f, 0.026823325082660f, 0.161566808819771f,\n  0.026947384700179f, 0.161929681897163f, 0.027071721851826f, 0.162292465567589f,\n  0.027196336537600f, 0.162655144929886f, 0.027321230620146f, 0.163017734885216f,\n  0.027446404099464f, 0.163380220532417f, 0.027571853250265f, 0.163742616772652f,\n  0.027697581797838f, 0.164104923605919f, 0.027823587879539f, 0.164467126131058f,\n  0.027949871495366f, 0.164829224348068f, 0.028076432645321f, 0.165191248059273f,\n  0.028203271329403f, 0.165553152561188f, 0.028330387547612f, 0.165914967656136f,\n  0.028457781299949f, 0.166276678442955f, 0.028585452586412f, 0.166638299822807f,\n  0.028713401407003f, 0.166999831795692f, 0.028841627761722f, 0.167361244559288f,\n  0.028970129787922f, 0.167722567915916f, 0.029098909348249f, 0.168083801865578f,\n  0.029227968305349f, 0.168444931507111f, 0.029357301071286f, 0.168805956840515f,\n  0.029486913233995f, 0.169166877865791f, 0.029616801068187f, 0.169527709484100f,\n  0.029746964573860f, 0.169888436794281f, 0.029877405613661f, 0.170249074697495f,\n  0.030008124187589f, 0.170609608292580f, 0.030139118432999f, 0.170970037579536f,\n  0.030270388349891f, 0.171330362558365f, 0.030401935800910f, 0.171690583229065f,\n  0.030533758923411f, 0.172050714492798f, 0.030665857717395f, 0.172410741448402f,\n  0.030798232182860f, 0.172770664095879f, 0.030930884182453f, 0.173130482435226f,\n  0.031063811853528f, 0.173490211367607f, 0.031197015196085f, 0.173849821090698f,\n  0.031330492347479f, 0.174209341406822f, 0.031464248895645f, 0.174568757414818f,\n  0.031598277390003f, 0.174928069114685f, 0.031732585281134f, 0.175287276506424f,\n  0.031867165118456f, 0.175646379590034f, 0.032002024352551f, 0.176005378365517f,\n  0.032137155532837f, 0.176364272832870f, 0.032272562384605f, 0.176723077893257f,\n  0.032408244907856f, 0.177081763744354f, 0.032544203102589f, 0.177440345287323f,\n  0.032680433243513f, 0.177798837423325f, 0.032816942781210f, 0.178157210350037f,\n  0.032953724265099f, 0.178515478968620f, 0.033090781420469f, 0.178873643279076f,\n  0.033228114247322f, 0.179231703281403f, 0.033365719020367f, 0.179589673876762f,\n  0.033503599464893f, 0.179947525262833f, 0.033641755580902f, 0.180305257439613f,\n  0.033780183643103f, 0.180662900209427f, 0.033918887376785f, 0.181020438671112f,\n  0.034057866781950f, 0.181377857923508f, 0.034197118133307f, 0.181735187768936f,\n  0.034336645156145f, 0.182092398405075f, 0.034476444125175f, 0.182449504733086f,\n  0.034616518765688f, 0.182806491851807f, 0.034756865352392f, 0.183163389563560f,\n  0.034897487610579f, 0.183520168066025f, 0.035038381814957f, 0.183876842260361f,\n  0.035179551690817f, 0.184233412146568f, 0.035320993512869f, 0.184589877724648f,\n  0.035462711006403f, 0.184946224093437f, 0.035604696720839f, 0.185302466154099f,\n  0.035746958106756f, 0.185658603906631f, 0.035889495164156f, 0.186014622449875f,\n  0.036032304167747f, 0.186370536684990f, 0.036175385117531f, 0.186726331710815f,\n  0.036318738013506f, 0.187082037329674f, 0.036462362855673f, 0.187437608838081f,\n  0.036606263369322f, 0.187793090939522f, 0.036750435829163f, 0.188148453831673f,\n  0.036894880235195f, 0.188503712415695f, 0.037039596587420f, 0.188858851790428f,\n  0.037184584885836f, 0.189213871955872f, 0.037329845130444f, 0.189568802714348f,\n  0.037475381046534f, 0.189923599362373f, 0.037621185183525f, 0.190278306603432f,\n  0.037767261266708f, 0.190632879734039f, 0.037913613021374f, 0.190987363457680f,\n  0.038060232996941f, 0.191341713070869f, 0.038207128643990f, 0.191695958375931f,\n  0.038354292511940f, 0.192050099372864f, 0.038501728326082f, 0.192404121160507f,\n  0.038649436086416f, 0.192758023738861f, 0.038797415792942f, 0.193111822009087f,\n  0.038945667445660f, 0.193465501070023f, 0.039094187319279f, 0.193819075822830f,\n  0.039242979139090f, 0.194172516465187f, 0.039392042905092f, 0.194525867700577f,\n  0.039541378617287f, 0.194879084825516f, 0.039690986275673f, 0.195232197642326f,\n  0.039840862154961f, 0.195585191249847f, 0.039991009980440f, 0.195938065648079f,\n  0.040141426026821f, 0.196290835738182f, 0.040292114019394f, 0.196643486618996f,\n  0.040443073958158f, 0.196996018290520f, 0.040594302117825f, 0.197348430752754f,\n  0.040745802223682f, 0.197700738906860f, 0.040897574275732f, 0.198052927851677f,\n  0.041049610823393f, 0.198404997587204f, 0.041201923042536f, 0.198756948113441f,\n  0.041354499757290f, 0.199108779430389f, 0.041507352143526f, 0.199460506439209f,\n  0.041660469025373f, 0.199812099337578f, 0.041813857853413f, 0.200163587927818f,\n  0.041967518627644f, 0.200514942407608f, 0.042121443897486f, 0.200866192579269f,\n  0.042275641113520f, 0.201217323541641f, 0.042430106550455f, 0.201568335294724f,\n  0.042584843933582f, 0.201919227838516f, 0.042739849537611f, 0.202270001173019f,\n  0.042895123362541f, 0.202620655298233f, 0.043050665408373f, 0.202971190214157f,\n  0.043206475675106f, 0.203321605920792f, 0.043362557888031f, 0.203671902418137f,\n  0.043518904596567f, 0.204022079706192f, 0.043675523251295f, 0.204372137784958f,\n  0.043832406401634f, 0.204722076654434f, 0.043989561498165f, 0.205071896314621f,\n  0.044146984815598f, 0.205421581864357f, 0.044304672628641f, 0.205771163105965f,\n  0.044462632387877f, 0.206120610237122f, 0.044620860368013f, 0.206469938158989f,\n  0.044779352843761f, 0.206819161772728f, 0.044938117265701f, 0.207168251276016f,\n  0.045097146183252f, 0.207517206668854f, 0.045256443321705f, 0.207866057753563f,\n  0.045416008681059f, 0.208214774727821f, 0.045575842261314f, 0.208563387393951f,\n  0.045735940337181f, 0.208911851048470f, 0.045896306633949f, 0.209260210394859f,\n  0.046056941151619f, 0.209608450531960f, 0.046217843890190f, 0.209956556558609f,\n  0.046379011124372f, 0.210304543375969f, 0.046540446579456f, 0.210652396082878f,\n  0.046702146530151f, 0.211000129580498f, 0.046864114701748f, 0.211347743868828f,\n  0.047026351094246f, 0.211695238947868f, 0.047188851982355f, 0.212042599916458f,\n  0.047351621091366f, 0.212389841675758f, 0.047514654695988f, 0.212736949324608f,\n  0.047677956521511f, 0.213083937764168f, 0.047841522842646f, 0.213430806994438f,\n  0.048005353659391f, 0.213777542114258f, 0.048169452697039f, 0.214124158024788f,\n  0.048333816230297f, 0.214470639824867f, 0.048498444259167f, 0.214817002415657f,\n  0.048663340508938f, 0.215163245797157f, 0.048828501254320f, 0.215509355068207f,\n  0.048993926495314f, 0.215855330228806f, 0.049159619957209f, 0.216201186180115f,\n  0.049325577914715f, 0.216546908020973f, 0.049491796642542f, 0.216892510652542f,\n  0.049658283591270f, 0.217237979173660f, 0.049825038760900f, 0.217583328485489f,\n  0.049992054700851f, 0.217928543686867f, 0.050159335136414f, 0.218273624777794f,\n  0.050326880067587f, 0.218618586659431f, 0.050494693219662f, 0.218963414430618f,\n  0.050662767142057f, 0.219308122992516f, 0.050831105560064f, 0.219652697443962f,\n  0.050999708473682f, 0.219997137784958f, 0.051168579608202f, 0.220341444015503f,\n  0.051337707787752f, 0.220685631036758f, 0.051507104188204f, 0.221029683947563f,\n  0.051676765084267f, 0.221373617649078f, 0.051846686750650f, 0.221717402338982f,\n  0.052016876637936f, 0.222061067819595f, 0.052187327295542f, 0.222404599189758f,\n  0.052358038723469f, 0.222748011350632f, 0.052529018372297f, 0.223091274499893f,\n  0.052700258791447f, 0.223434418439865f, 0.052871759980917f, 0.223777428269386f,\n  0.053043525665998f, 0.224120303988457f, 0.053215555846691f, 0.224463045597076f,\n  0.053387850522995f, 0.224805667996407f, 0.053560405969620f, 0.225148141384125f,\n  0.053733222186565f, 0.225490495562553f, 0.053906302899122f, 0.225832715630531f,\n  0.054079644382000f, 0.226174786686897f, 0.054253250360489f, 0.226516738533974f,\n  0.054427117109299f, 0.226858556270599f, 0.054601248353720f, 0.227200239896774f,\n  0.054775636643171f, 0.227541789412498f, 0.054950293153524f, 0.227883204817772f,\n  0.055125206708908f, 0.228224486112595f, 0.055300384759903f, 0.228565633296967f,\n  0.055475823581219f, 0.228906646370888f, 0.055651523172855f, 0.229247525334358f,\n  0.055827483534813f, 0.229588270187378f, 0.056003704667091f, 0.229928880929947f,\n  0.056180190294981f, 0.230269357562065f, 0.056356932967901f, 0.230609700083733f,\n  0.056533940136433f, 0.230949893593788f, 0.056711208075285f, 0.231289967894554f,\n  0.056888736784458f, 0.231629893183708f, 0.057066522538662f, 0.231969684362412f,\n  0.057244572788477f, 0.232309341430664f, 0.057422880083323f, 0.232648864388466f,\n  0.057601451873779f, 0.232988253235817f, 0.057780280709267f, 0.233327493071556f,\n  0.057959370315075f, 0.233666598796844f, 0.058138720691204f, 0.234005570411682f,\n  0.058318331837654f, 0.234344407916069f, 0.058498200029135f, 0.234683111310005f,\n  0.058678328990936f, 0.235021665692329f, 0.058858718723059f, 0.235360085964203f,\n  0.059039369225502f, 0.235698372125626f, 0.059220276772976f, 0.236036509275436f,\n  0.059401445090771f, 0.236374512314796f, 0.059582870453596f, 0.236712381243706f,\n  0.059764556586742f, 0.237050101161003f, 0.059946499764919f, 0.237387686967850f,\n  0.060128703713417f, 0.237725138664246f, 0.060311164706945f, 0.238062441349030f,\n  0.060493886470795f, 0.238399609923363f, 0.060676865279675f, 0.238736644387245f,\n  0.060860104858875f, 0.239073529839516f, 0.061043601483107f, 0.239410281181335f,\n  0.061227355152369f, 0.239746883511543f, 0.061411365866661f, 0.240083336830139f,\n  0.061595637351274f, 0.240419670939446f, 0.061780165880919f, 0.240755841135979f,\n  0.061964951455593f, 0.241091892123222f, 0.062149997800589f, 0.241427779197693f,\n  0.062335297465324f, 0.241763532161713f, 0.062520854175091f, 0.242099151015282f,\n  0.062706671655178f, 0.242434620857239f, 0.062892749905586f, 0.242769956588745f,\n  0.063079081475735f, 0.243105143308640f, 0.063265666365623f, 0.243440181016922f,\n  0.063452512025833f, 0.243775084614754f, 0.063639611005783f, 0.244109839200974f,\n  0.063826970756054f, 0.244444444775581f, 0.064014583826065f, 0.244778916239738f,\n  0.064202457666397f, 0.245113238692284f, 0.064390584826469f, 0.245447427034378f,\n  0.064578965306282f, 0.245781451463699f, 0.064767606556416f, 0.246115356683731f,\n  0.064956501126289f, 0.246449097990990f, 0.065145656466484f, 0.246782705187798f,\n  0.065335065126419f, 0.247116148471832f, 0.065524727106094f, 0.247449472546577f,\n  0.065714649856091f, 0.247782632708550f, 0.065904818475246f, 0.248115643858910f,\n  0.066095255315304f, 0.248448520898819f, 0.066285938024521f, 0.248781248927116f,\n  0.066476874053478f, 0.249113827943802f, 0.066668070852757f, 0.249446272850037f,\n  0.066859520971775f, 0.249778553843498f, 0.067051224410534f, 0.250110685825348f,\n  0.067243188619614f, 0.250442683696747f, 0.067435398697853f, 0.250774532556534f,\n  0.067627869546413f, 0.251106232404709f, 0.067820593714714f, 0.251437783241272f,\n  0.068013571202755f, 0.251769185066223f, 0.068206802010536f, 0.252100437879562f,\n  0.068400286138058f, 0.252431541681290f, 0.068594031035900f, 0.252762526273727f,\n  0.068788021802902f, 0.253093332052231f, 0.068982265889645f, 0.253423988819122f,\n  0.069176770746708f, 0.253754496574402f, 0.069371521472931f, 0.254084855318069f,\n  0.069566532969475f, 0.254415065050125f, 0.069761790335178f, 0.254745125770569f,\n  0.069957308471203f, 0.255075037479401f, 0.070153072476387f, 0.255404800176620f,\n  0.070349089801311f, 0.255734413862228f, 0.070545360445976f, 0.256063878536224f,\n  0.070741884410381f, 0.256393194198608f, 0.070938661694527f, 0.256722360849380f,\n  0.071135692298412f, 0.257051378488541f, 0.071332976222038f, 0.257380217313766f,\n  0.071530513465405f, 0.257708936929703f, 0.071728296577930f, 0.258037507534027f,\n  0.071926333010197f, 0.258365899324417f, 0.072124622762203f, 0.258694142103195f,\n  0.072323165833950f, 0.259022265672684f, 0.072521962225437f, 0.259350210428238f,\n  0.072721004486084f, 0.259678006172180f, 0.072920300066471f, 0.260005623102188f,\n  0.073119848966599f, 0.260333120822906f, 0.073319651186466f, 0.260660469532013f,\n  0.073519699275494f, 0.260987639427185f, 0.073720000684261f, 0.261314690113068f,\n  0.073920547962189f, 0.261641561985016f, 0.074121348559856f, 0.261968284845352f,\n  0.074322402477264f, 0.262294828891754f, 0.074523709714413f, 0.262621253728867f,\n  0.074725262820721f, 0.262947499752045f, 0.074927061796188f, 0.263273626565933f,\n  0.075129114091396f, 0.263599574565887f, 0.075331419706345f, 0.263925373554230f,\n  0.075533971190453f, 0.264250993728638f, 0.075736775994301f, 0.264576494693756f,\n  0.075939826667309f, 0.264901816844940f, 0.076143130660057f, 0.265226989984512f,\n  0.076346680521965f, 0.265552014112473f, 0.076550483703613f, 0.265876859426498f,\n  0.076754532754421f, 0.266201555728912f, 0.076958827674389f, 0.266526103019714f,\n  0.077163375914097f, 0.266850501298904f, 0.077368170022964f, 0.267174720764160f,\n  0.077573217451572f, 0.267498821020126f, 0.077778510749340f, 0.267822742462158f,\n  0.077984049916267f, 0.268146485090256f, 0.078189842402935f, 0.268470078706741f,\n  0.078395880758762f, 0.268793523311615f, 0.078602164983749f, 0.269116818904877f,\n  0.078808702528477f, 0.269439965486526f, 0.079015478491783f, 0.269762933254242f,\n  0.079222507774830f, 0.270085722208023f, 0.079429790377617f, 0.270408391952515f,\n  0.079637311398983f, 0.270730882883072f, 0.079845085740089f, 0.271053224802017f,\n  0.080053105950356f, 0.271375387907028f, 0.080261372029781f, 0.271697402000427f,\n  0.080469883978367f, 0.272019267082214f, 0.080678641796112f, 0.272340953350067f,\n  0.080887645483017f, 0.272662490606308f, 0.081096902489662f, 0.272983878850937f,\n  0.081306397914886f, 0.273305088281631f, 0.081516146659851f, 0.273626148700714f,\n  0.081726133823395f, 0.273947030305862f, 0.081936374306679f, 0.274267762899399f,\n  0.082146860659122f, 0.274588316679001f, 0.082357585430145f, 0.274908751249313f,\n  0.082568563520908f, 0.275228977203369f, 0.082779780030251f, 0.275549083948135f,\n  0.082991249859333f, 0.275868982076645f, 0.083202958106995f, 0.276188760995865f,\n  0.083414919674397f, 0.276508361101151f, 0.083627119660378f, 0.276827782392502f,\n  0.083839565515518f, 0.277147054672241f, 0.084052257239819f, 0.277466177940369f,\n  0.084265194833279f, 0.277785122394562f, 0.084478378295898f, 0.278103888034821f,\n  0.084691800177097f, 0.278422504663467f, 0.084905467927456f, 0.278740972280502f,\n  0.085119381546974f, 0.279059261083603f, 0.085333541035652f, 0.279377400875092f,\n  0.085547938942909f, 0.279695361852646f, 0.085762590169907f, 0.280013144016266f,\n  0.085977479815483f, 0.280330777168274f, 0.086192607879639f, 0.280648261308670f,\n  0.086407989263535f, 0.280965566635132f, 0.086623609066010f, 0.281282693147659f,\n  0.086839467287064f, 0.281599670648575f, 0.087055571377277f, 0.281916469335556f,\n  0.087271921336651f, 0.282233119010925f, 0.087488517165184f, 0.282549589872360f,\n  0.087705351412296f, 0.282865911722183f, 0.087922424077988f, 0.283182054758072f,\n  0.088139742612839f, 0.283498018980026f, 0.088357307016850f, 0.283813834190369f,\n  0.088575109839439f, 0.284129470586777f, 0.088793158531189f, 0.284444957971573f,\n  0.089011445641518f, 0.284760266542435f, 0.089229971170425f, 0.285075396299362f,\n  0.089448742568493f, 0.285390377044678f, 0.089667752385139f, 0.285705178976059f,\n  0.089887008070946f, 0.286019802093506f, 0.090106502175331f, 0.286334276199341f,\n  0.090326242148876f, 0.286648571491241f, 0.090546220541000f, 0.286962717771530f,\n  0.090766437351704f, 0.287276685237885f, 0.090986892580986f, 0.287590473890305f,\n  0.091207593679428f, 0.287904083728790f, 0.091428533196449f, 0.288217544555664f,\n  0.091649711132050f, 0.288530826568604f, 0.091871134936810f, 0.288843959569931f,\n  0.092092797160149f, 0.289156883955002f, 0.092314697802067f, 0.289469659328461f,\n  0.092536836862564f, 0.289782285690308f, 0.092759214341640f, 0.290094703435898f,\n  0.092981837689877f, 0.290406972169876f, 0.093204692006111f, 0.290719062089920f,\n  0.093427792191505f, 0.291031002998352f, 0.093651130795479f, 0.291342735290527f,\n  0.093874707818031f, 0.291654318571091f, 0.094098523259163f, 0.291965723037720f,\n  0.094322577118874f, 0.292276978492737f, 0.094546869397163f, 0.292588025331497f,\n  0.094771400094032f, 0.292898923158646f, 0.094996169209480f, 0.293209642171860f,\n  0.095221176743507f, 0.293520182371140f, 0.095446422696114f, 0.293830573558807f,\n  0.095671907067299f, 0.294140785932541f, 0.095897629857063f, 0.294450789690018f,\n  0.096123591065407f, 0.294760644435883f, 0.096349790692329f, 0.295070350170136f,\n  0.096576221287251f, 0.295379847288132f, 0.096802897751331f, 0.295689195394516f,\n  0.097029805183411f, 0.295998334884644f, 0.097256951034069f, 0.296307325363159f,\n  0.097484335303307f, 0.296616137027740f, 0.097711957991123f, 0.296924799680710f,\n  0.097939811646938f, 0.297233253717422f, 0.098167903721333f, 0.297541528940201f,\n  0.098396234214306f, 0.297849655151367f, 0.098624803125858f, 0.298157602548599f,\n  0.098853603005409f, 0.298465341329575f, 0.099082641303539f, 0.298772931098938f,\n  0.099311910569668f, 0.299080342054367f, 0.099541425704956f, 0.299387603998184f,\n  0.099771171808243f, 0.299694657325745f, 0.100001148879528f, 0.300001531839371f,\n  0.100231364369392f, 0.300308227539063f, 0.100461818277836f, 0.300614774227142f,\n  0.100692503154278f, 0.300921112298965f, 0.100923426449299f, 0.301227301359177f,\n  0.101154580712318f, 0.301533311605453f, 0.101385973393917f, 0.301839113235474f,\n  0.101617597043514f, 0.302144765853882f, 0.101849451661110f, 0.302450239658356f,\n  0.102081544697285f, 0.302755534648895f, 0.102313876152039f, 0.303060621023178f,\n  0.102546438574791f, 0.303365558385849f, 0.102779231965542f, 0.303670316934586f,\n  0.103012263774872f, 0.303974896669388f, 0.103245526552200f, 0.304279297590256f,\n  0.103479020297527f, 0.304583519697189f, 0.103712752461433f, 0.304887533187866f,\n  0.103946708142757f, 0.305191397666931f, 0.104180909693241f, 0.305495083332062f,\n  0.104415334761143f, 0.305798590183258f, 0.104649998247623f, 0.306101888418198f,\n  0.104884892702103f, 0.306405037641525f, 0.105120018124580f, 0.306708008050919f,\n  0.105355374515057f, 0.307010769844055f, 0.105590961873531f, 0.307313382625580f,\n  0.105826787650585f, 0.307615786790848f, 0.106062836945057f, 0.307918041944504f,\n  0.106299124658108f, 0.308220088481903f, 0.106535643339157f, 0.308521956205368f,\n  0.106772392988205f, 0.308823645114899f, 0.107009373605251f, 0.309125155210495f,\n  0.107246585190296f, 0.309426486492157f, 0.107484027743340f, 0.309727638959885f,\n  0.107721701264381f, 0.310028612613678f, 0.107959605753422f, 0.310329377651215f,\n  0.108197741210461f, 0.310629993677139f, 0.108436107635498f, 0.310930401086807f,\n  0.108674705028534f, 0.311230629682541f, 0.108913525938988f, 0.311530679464340f,\n  0.109152585268021f, 0.311830550432205f, 0.109391868114471f, 0.312130242586136f,\n  0.109631389379501f, 0.312429755926132f, 0.109871134161949f, 0.312729060649872f,\n  0.110111102461815f, 0.313028186559677f, 0.110351309180260f, 0.313327133655548f,\n  0.110591746866703f, 0.313625901937485f, 0.110832408070564f, 0.313924491405487f,\n  0.111073300242424f, 0.314222872257233f, 0.111314415931702f, 0.314521104097366f,\n  0.111555770039558f, 0.314819127321243f, 0.111797347664833f, 0.315116971731186f,\n  0.112039148807526f, 0.315414607524872f, 0.112281180918217f, 0.315712094306946f,\n  0.112523443996906f, 0.316009372472763f, 0.112765938043594f, 0.316306471824646f,\n  0.113008655607700f, 0.316603392362595f, 0.113251596689224f, 0.316900104284287f,\n  0.113494776189327f, 0.317196637392044f, 0.113738171756268f, 0.317492991685867f,\n  0.113981798291206f, 0.317789167165756f, 0.114225655794144f, 0.318085134029388f,\n  0.114469736814499f, 0.318380922079086f, 0.114714048802853f, 0.318676531314850f,\n  0.114958584308624f, 0.318971961736679f, 0.115203343331814f, 0.319267183542252f,\n  0.115448333323002f, 0.319562226533890f, 0.115693546831608f, 0.319857090711594f,\n  0.115938983857632f, 0.320151746273041f, 0.116184651851654f, 0.320446223020554f,\n  0.116430543363094f, 0.320740520954132f, 0.116676658391953f, 0.321034610271454f,\n  0.116923004388809f, 0.321328520774841f, 0.117169573903084f, 0.321622252464294f,\n  0.117416366934776f, 0.321915775537491f, 0.117663383483887f, 0.322209119796753f,\n  0.117910631000996f, 0.322502255439758f, 0.118158094584942f, 0.322795242071152f,\n  0.118405789136887f, 0.323088020086288f, 0.118653707206249f, 0.323380589485168f,\n  0.118901848793030f, 0.323672980070114f, 0.119150213897228f, 0.323965191841125f,\n  0.119398809969425f, 0.324257194995880f, 0.119647622108459f, 0.324549019336700f,\n  0.119896657764912f, 0.324840664863586f, 0.120145916938782f, 0.325132101774216f,\n  0.120395407080650f, 0.325423330068588f, 0.120645113289356f, 0.325714409351349f,\n  0.120895043015480f, 0.326005280017853f, 0.121145196259022f, 0.326295942068100f,\n  0.121395580470562f, 0.326586425304413f, 0.121646173298359f, 0.326876699924469f,\n  0.121896997094154f, 0.327166795730591f, 0.122148044407368f, 0.327456712722778f,\n  0.122399315237999f, 0.327746421098709f, 0.122650802135468f, 0.328035950660706f,\n  0.122902512550354f, 0.328325271606445f, 0.123154446482658f, 0.328614413738251f,\n  0.123406603932381f, 0.328903347253799f, 0.123658977448940f, 0.329192101955414f,\n  0.123911574482918f, 0.329480648040771f, 0.124164395034313f, 0.329769015312195f,\n  0.124417431652546f, 0.330057173967361f, 0.124670691788197f, 0.330345153808594f,\n  0.124924175441265f, 0.330632925033569f, 0.125177875161171f, 0.330920487642288f,\n  0.125431805849075f, 0.331207901239395f, 0.125685945153236f, 0.331495076417923f,\n  0.125940307974815f, 0.331782072782516f, 0.126194894313812f, 0.332068890333176f,\n  0.126449704170227f, 0.332355499267578f, 0.126704722642899f, 0.332641899585724f,\n  0.126959964632988f, 0.332928121089935f, 0.127215430140495f, 0.333214133977890f,\n  0.127471104264259f, 0.333499968051910f, 0.127727001905441f, 0.333785593509674f,\n  0.127983123064041f, 0.334071010351181f, 0.128239467740059f, 0.334356248378754f,\n  0.128496021032333f, 0.334641307592392f, 0.128752797842026f, 0.334926128387451f,\n  0.129009798169136f, 0.335210770368576f, 0.129267007112503f, 0.335495233535767f,\n  0.129524439573288f, 0.335779488086700f, 0.129782080650330f, 0.336063534021378f,\n  0.130039945244789f, 0.336347371339798f, 0.130298033356667f, 0.336631029844284f,\n  0.130556344985962f, 0.336914509534836f, 0.130814850330353f, 0.337197750806808f,\n  0.131073594093323f, 0.337480813264847f, 0.131332546472549f, 0.337763696908951f,\n  0.131591722369194f, 0.338046342134476f, 0.131851106882095f, 0.338328808546066f,\n  0.132110700011253f, 0.338611096143723f, 0.132370531558990f, 0.338893145322800f,\n  0.132630556821823f, 0.339175015687943f, 0.132890805602074f, 0.339456677436829f,\n  0.133151277899742f, 0.339738160371780f, 0.133411958813667f, 0.340019434690475f,\n  0.133672863245010f, 0.340300500392914f, 0.133933976292610f, 0.340581357479095f,\n  0.134195312857628f, 0.340862035751343f, 0.134456858038902f, 0.341142505407333f,\n  0.134718611836433f, 0.341422766447067f, 0.134980589151382f, 0.341702848672867f,\n  0.135242775082588f, 0.341982692480087f, 0.135505184531212f, 0.342262357473373f,\n  0.135767802596092f, 0.342541843652725f, 0.136030644178391f, 0.342821091413498f,\n  0.136293679475784f, 0.343100160360336f, 0.136556953191757f, 0.343379020690918f,\n  0.136820420622826f, 0.343657672405243f, 0.137084111571312f, 0.343936115503311f,\n  0.137348011136055f, 0.344214379787445f, 0.137612134218216f, 0.344492435455322f,\n  0.137876465916634f, 0.344770282506943f, 0.138141006231308f, 0.345047920942307f,\n  0.138405755162239f, 0.345325350761414f, 0.138670727610588f, 0.345602601766586f,\n  0.138935908675194f, 0.345879614353180f, 0.139201298356056f, 0.346156448125839f,\n  0.139466896653175f, 0.346433073282242f, 0.139732718467712f, 0.346709519624710f,\n  0.139998748898506f, 0.346985727548599f, 0.140264987945557f, 0.347261756658554f,\n  0.140531435608864f, 0.347537547349930f, 0.140798106789589f, 0.347813159227371f,\n  0.141064971685410f, 0.348088562488556f, 0.141332060098648f, 0.348363757133484f,\n  0.141599357128143f, 0.348638743162155f, 0.141866862773895f, 0.348913550376892f,\n  0.142134591937065f, 0.349188119173050f, 0.142402514815331f, 0.349462509155273f,\n  0.142670661211014f, 0.349736660718918f, 0.142939001321793f, 0.350010633468628f,\n  0.143207564949989f, 0.350284397602081f, 0.143476337194443f, 0.350557953119278f,\n  0.143745318055153f, 0.350831300020218f, 0.144014507532120f, 0.351104438304901f,\n  0.144283905625343f, 0.351377367973328f, 0.144553512334824f, 0.351650089025497f,\n  0.144823327660561f, 0.351922631263733f, 0.145093351602554f, 0.352194935083389f,\n  0.145363584160805f, 0.352467030286789f, 0.145634025335312f, 0.352738946676254f,\n  0.145904675126076f, 0.353010624647141f, 0.146175548434258f, 0.353282123804092f,\n  0.146446615457535f, 0.353553384542465f, 0.146717891097069f, 0.353824466466904f,\n  0.146989375352860f, 0.354095309972763f, 0.147261068224907f, 0.354365974664688f,\n  0.147532954812050f, 0.354636400938034f, 0.147805064916611f, 0.354906648397446f,\n  0.148077383637428f, 0.355176687240601f, 0.148349896073341f, 0.355446487665176f,\n  0.148622632026672f, 0.355716109275818f, 0.148895561695099f, 0.355985492467880f,\n  0.149168699979782f, 0.356254696846008f, 0.149442046880722f, 0.356523662805557f,\n  0.149715602397919f, 0.356792420148849f, 0.149989366531372f, 0.357060998678207f,\n  0.150263324379921f, 0.357329338788986f, 0.150537505745888f, 0.357597470283508f,\n  0.150811880826950f, 0.357865422964096f, 0.151086464524269f, 0.358133137226105f,\n  0.151361241936684f, 0.358400642871857f, 0.151636242866516f, 0.358667939901352f,\n  0.151911437511444f, 0.358935028314590f, 0.152186840772629f, 0.359201908111572f,\n  0.152462437748909f, 0.359468549489975f, 0.152738258242607f, 0.359735012054443f,\n  0.153014272451401f, 0.360001266002655f, 0.153290495276451f, 0.360267281532288f,\n  0.153566911816597f, 0.360533088445663f, 0.153843536973000f, 0.360798716545105f,\n  0.154120370745659f, 0.361064106225967f, 0.154397398233414f, 0.361329287290573f,\n  0.154674649238586f, 0.361594229936600f, 0.154952079057693f, 0.361858993768692f,\n  0.155229732394218f, 0.362123548984528f, 0.155507579445839f, 0.362387865781784f,\n  0.155785620212555f, 0.362651973962784f, 0.156063869595528f, 0.362915903329849f,\n  0.156342327594757f, 0.363179564476013f, 0.156620979309082f, 0.363443046808243f,\n  0.156899839639664f, 0.363706320524216f, 0.157178908586502f, 0.363969355821610f,\n  0.157458171248436f, 0.364232182502747f, 0.157737627625465f, 0.364494800567627f,\n  0.158017292618752f, 0.364757210016251f, 0.158297166228294f, 0.365019410848618f,\n  0.158577233552933f, 0.365281373262405f, 0.158857494592667f, 0.365543156862259f,\n  0.159137964248657f, 0.365804702043533f, 0.159418627619743f, 0.366066008806229f,\n  0.159699499607086f, 0.366327136754990f, 0.159980565309525f, 0.366588026285172f,\n  0.160261839628220f, 0.366848707199097f, 0.160543307662010f, 0.367109179496765f,\n  0.160824984312058f, 0.367369443178177f, 0.161106839776039f, 0.367629468441010f,\n  0.161388918757439f, 0.367889285087585f, 0.161671176552773f, 0.368148893117905f,\n  0.161953642964363f, 0.368408292531967f, 0.162236317992210f, 0.368667453527451f,\n  0.162519171833992f, 0.368926405906677f, 0.162802234292030f, 0.369185149669647f,\n  0.163085505366325f, 0.369443655014038f, 0.163368955254555f, 0.369701951742172f,\n  0.163652613759041f, 0.369960039854050f, 0.163936465978622f, 0.370217919349670f,\n  0.164220526814461f, 0.370475560426712f, 0.164504766464233f, 0.370732992887497f,\n  0.164789214730263f, 0.370990216732025f, 0.165073871612549f, 0.371247202157974f,\n  0.165358707308769f, 0.371503978967667f, 0.165643751621246f, 0.371760547161102f,\n  0.165928974747658f, 0.372016876935959f, 0.166214406490326f, 0.372272998094559f,\n  0.166500031948090f, 0.372528880834579f, 0.166785866022110f, 0.372784584760666f,\n  0.167071878910065f, 0.373040050268173f, 0.167358100414276f, 0.373295277357101f,\n  0.167644515633583f, 0.373550295829773f, 0.167931124567986f, 0.373805105686188f,\n  0.168217927217484f, 0.374059677124023f, 0.168504923582077f, 0.374314039945602f,\n  0.168792113661766f, 0.374568194150925f, 0.169079497456551f, 0.374822109937668f,\n  0.169367074966431f, 0.375075817108154f, 0.169654861092567f, 0.375329315662384f,\n  0.169942826032639f, 0.375582575798035f, 0.170230999588966f, 0.375835597515106f,\n  0.170519351959229f, 0.376088410615921f, 0.170807912945747f, 0.376341015100479f,\n  0.171096652746201f, 0.376593410968781f, 0.171385586261749f, 0.376845568418503f,\n  0.171674728393555f, 0.377097487449646f, 0.171964049339294f, 0.377349197864532f,\n  0.172253578901291f, 0.377600699663162f, 0.172543287277222f, 0.377851963043213f,\n  0.172833189368248f, 0.378102988004684f, 0.173123285174370f, 0.378353834152222f,\n  0.173413574695587f, 0.378604412078857f, 0.173704057931900f, 0.378854811191559f,\n  0.173994734883308f, 0.379104942083359f, 0.174285605549812f, 0.379354894161224f,\n  0.174576655030251f, 0.379604607820511f, 0.174867913126946f, 0.379854083061218f,\n  0.175159350037575f, 0.380103349685669f, 0.175450980663300f, 0.380352377891541f,\n  0.175742805004120f, 0.380601197481155f, 0.176034808158875f, 0.380849778652191f,\n  0.176327019929886f, 0.381098151206970f, 0.176619410514832f, 0.381346285343170f,\n  0.176911994814873f, 0.381594210863113f, 0.177204772830009f, 0.381841897964478f,\n  0.177497729659081f, 0.382089376449585f, 0.177790880203247f, 0.382336616516113f,\n  0.178084224462509f, 0.382583618164063f, 0.178377762436867f, 0.382830440998077f,\n  0.178671479225159f, 0.383076995611191f, 0.178965389728546f, 0.383323341608047f,\n  0.179259493947029f, 0.383569449186325f, 0.179553776979446f, 0.383815348148346f,\n  0.179848253726959f, 0.384061008691788f, 0.180142924189568f, 0.384306460618973f,\n  0.180437773466110f, 0.384551674127579f, 0.180732816457748f, 0.384796649217606f,\n  0.181028053164482f, 0.385041415691376f, 0.181323468685150f, 0.385285943746567f,\n  0.181619063019753f, 0.385530263185501f, 0.181914865970612f, 0.385774344205856f,\n  0.182210832834244f, 0.386018186807632f, 0.182507008314133f, 0.386261820793152f,\n  0.182803362607956f, 0.386505216360092f, 0.183099895715714f, 0.386748403310776f,\n  0.183396622538567f, 0.386991351842880f, 0.183693528175354f, 0.387234061956406f,\n  0.183990627527237f, 0.387476563453674f, 0.184287920594215f, 0.387718826532364f,\n  0.184585392475128f, 0.387960851192474f, 0.184883043169975f, 0.388202667236328f,\n  0.185180887579918f, 0.388444244861603f, 0.185478910803795f, 0.388685584068298f,\n  0.185777112841606f, 0.388926714658737f, 0.186075508594513f, 0.389167606830597f,\n  0.186374098062515f, 0.389408260583878f, 0.186672851443291f, 0.389648675918579f,\n  0.186971798539162f, 0.389888882637024f, 0.187270939350128f, 0.390128880739212f,\n  0.187570258975029f, 0.390368610620499f, 0.187869757413864f, 0.390608131885529f,\n  0.188169434666634f, 0.390847414731979f, 0.188469305634499f, 0.391086459159851f,\n  0.188769355416298f, 0.391325294971466f, 0.189069598913193f, 0.391563892364502f,\n  0.189370006322861f, 0.391802251338959f, 0.189670607447624f, 0.392040401697159f,\n  0.189971387386322f, 0.392278283834457f, 0.190272361040115f, 0.392515957355499f,\n  0.190573498606682f, 0.392753422260284f, 0.190874829888344f, 0.392990618944168f,\n  0.191176339983940f, 0.393227607011795f, 0.191478043794632f, 0.393464356660843f,\n  0.191779911518097f, 0.393700867891312f, 0.192081972956657f, 0.393937170505524f,\n  0.192384198307991f, 0.394173204898834f, 0.192686617374420f, 0.394409030675888f,\n  0.192989215254784f, 0.394644618034363f, 0.193292006850243f, 0.394879996776581f,\n  0.193594962358475f, 0.395115107297897f, 0.193898096680641f, 0.395350009202957f,\n  0.194201424717903f, 0.395584672689438f, 0.194504916667938f, 0.395819097757339f,\n  0.194808602333069f, 0.396053284406662f, 0.195112451910973f, 0.396287262439728f,\n  0.195416495203972f, 0.396520972251892f, 0.195720717310905f, 0.396754473447800f,\n  0.196025103330612f, 0.396987736225128f, 0.196329683065414f, 0.397220760583878f,\n  0.196634441614151f, 0.397453576326370f, 0.196939364075661f, 0.397686123847961f,\n  0.197244480252266f, 0.397918462753296f, 0.197549775242805f, 0.398150533437729f,\n  0.197855234146118f, 0.398382395505905f, 0.198160871863365f, 0.398614019155502f,\n  0.198466703295708f, 0.398845434188843f, 0.198772698640823f, 0.399076581001282f,\n  0.199078872799873f, 0.399307489395142f, 0.199385225772858f, 0.399538189172745f,\n  0.199691757559776f, 0.399768620729446f, 0.199998468160629f, 0.399998843669891f,\n  0.200305357575417f, 0.400228828191757f, 0.200612410902977f, 0.400458574295044f,\n  0.200919643044472f, 0.400688081979752f, 0.201227053999901f, 0.400917351245880f,\n  0.201534643769264f, 0.401146411895752f, 0.201842412352562f, 0.401375204324722f,\n  0.202150344848633f, 0.401603758335114f, 0.202458456158638f, 0.401832103729248f,\n  0.202766746282578f, 0.402060180902481f, 0.203075215220451f, 0.402288049459457f,\n  0.203383848071098f, 0.402515679597855f, 0.203692659735680f, 0.402743041515350f,\n  0.204001650214195f, 0.402970194816589f, 0.204310819506645f, 0.403197109699249f,\n  0.204620152711868f, 0.403423786163330f, 0.204929664731026f, 0.403650224208832f,\n  0.205239340662956f, 0.403876423835754f, 0.205549195408821f, 0.404102355241776f,\n  0.205859228968620f, 0.404328078031540f, 0.206169426441193f, 0.404553562402725f,\n  0.206479802727699f, 0.404778808355331f, 0.206790357828140f, 0.405003815889359f,\n  0.207101076841354f, 0.405228585004807f, 0.207411959767342f, 0.405453115701675f,\n  0.207723021507263f, 0.405677437782288f, 0.208034262061119f, 0.405901491641998f,\n  0.208345666527748f, 0.406125307083130f, 0.208657249808311f, 0.406348884105682f,\n  0.208969011902809f, 0.406572192907333f, 0.209280923008919f, 0.406795293092728f,\n  0.209593027830124f, 0.407018154859543f, 0.209905281662941f, 0.407240778207779f,\n  0.210217714309692f, 0.407463163137436f, 0.210530325770378f, 0.407685309648514f,\n  0.210843101143837f, 0.407907217741013f, 0.211156040430069f, 0.408128857612610f,\n  0.211469158530235f, 0.408350288867950f, 0.211782455444336f, 0.408571451902390f,\n  0.212095901370049f, 0.408792406320572f, 0.212409526109695f, 0.409013092517853f,\n  0.212723329663277f, 0.409233570098877f, 0.213037282228470f, 0.409453779459000f,\n  0.213351413607597f, 0.409673750400543f, 0.213665723800659f, 0.409893482923508f,\n  0.213980183005333f, 0.410112977027893f, 0.214294821023941f, 0.410332232713699f,\n  0.214609622955322f, 0.410551249980927f, 0.214924603700638f, 0.410770028829575f,\n  0.215239733457565f, 0.410988569259644f, 0.215555042028427f, 0.411206841468811f,\n  0.215870529413223f, 0.411424905061722f, 0.216186165809631f, 0.411642700433731f,\n  0.216501981019974f, 0.411860257387161f, 0.216817945241928f, 0.412077575922012f,\n  0.217134088277817f, 0.412294656038284f, 0.217450410127640f, 0.412511497735977f,\n  0.217766880989075f, 0.412728071212769f, 0.218083515763283f, 0.412944436073303f,\n  0.218400329351425f, 0.413160532712936f, 0.218717306852341f, 0.413376390933990f,\n  0.219034433364868f, 0.413592010736465f, 0.219351738691330f, 0.413807392120361f,\n  0.219669207930565f, 0.414022535085678f, 0.219986841082573f, 0.414237409830093f,\n  0.220304638147354f, 0.414452046155930f, 0.220622614026070f, 0.414666473865509f,\n  0.220940738916397f, 0.414880603551865f, 0.221259027719498f, 0.415094524621964f,\n  0.221577480435371f, 0.415308207273483f, 0.221896097064018f, 0.415521621704102f,\n  0.222214877605438f, 0.415734797716141f, 0.222533836960793f, 0.415947735309601f,\n  0.222852945327759f, 0.416160434484482f, 0.223172217607498f, 0.416372895240784f,\n  0.223491653800011f, 0.416585087776184f, 0.223811239004135f, 0.416797041893005f,\n  0.224131003022194f, 0.417008757591248f, 0.224450930953026f, 0.417220205068588f,\n  0.224771007895470f, 0.417431443929672f, 0.225091263651848f, 0.417642414569855f,\n  0.225411668419838f, 0.417853146791458f, 0.225732237100601f, 0.418063640594482f,\n  0.226052969694138f, 0.418273866176605f, 0.226373866200447f, 0.418483853340149f,\n  0.226694911718369f, 0.418693602085114f, 0.227016136050224f, 0.418903112411499f,\n  0.227337509393692f, 0.419112354516983f, 0.227659046649933f, 0.419321358203888f,\n  0.227980732917786f, 0.419530123472214f, 0.228302597999573f, 0.419738620519638f,\n  0.228624612092972f, 0.419946908950806f, 0.228946775197983f, 0.420154929161072f,\n  0.229269117116928f, 0.420362681150436f, 0.229591608047485f, 0.420570224523544f,\n  0.229914262890816f, 0.420777499675751f, 0.230237081646919f, 0.420984506607056f,\n  0.230560049414635f, 0.421191304922104f, 0.230883181095123f, 0.421397835016251f,\n  0.231206461787224f, 0.421604126691818f, 0.231529906392097f, 0.421810150146484f,\n  0.231853514909744f, 0.422015935182571f, 0.232177272439003f, 0.422221481800079f,\n  0.232501193881035f, 0.422426789999008f, 0.232825264334679f, 0.422631829977036f,\n  0.233149498701096f, 0.422836631536484f, 0.233473882079124f, 0.423041164875031f,\n  0.233798429369926f, 0.423245459794998f, 0.234123140573502f, 0.423449516296387f,\n  0.234448000788689f, 0.423653304576874f, 0.234773010015488f, 0.423856884241104f,\n  0.235098183155060f, 0.424060165882111f, 0.235423520207405f, 0.424263238906860f,\n  0.235749006271362f, 0.424466013908386f, 0.236074641346931f, 0.424668580293655f,\n  0.236400425434113f, 0.424870878458023f, 0.236726388335228f, 0.425072938203812f,\n  0.237052485346794f, 0.425274729728699f, 0.237378746271133f, 0.425476282835007f,\n  0.237705156207085f, 0.425677597522736f, 0.238031730055809f, 0.425878643989563f,\n  0.238358452916145f, 0.426079452037811f, 0.238685324788094f, 0.426279991865158f,\n  0.239012360572815f, 0.426480293273926f, 0.239339530467987f, 0.426680356264114f,\n  0.239666879177094f, 0.426880151033401f, 0.239994361996651f, 0.427079707384110f,\n  0.240322008728981f, 0.427278995513916f, 0.240649804472923f, 0.427478045225143f,\n  0.240977749228477f, 0.427676826715469f, 0.241305842995644f, 0.427875369787216f,\n  0.241634100675583f, 0.428073674440384f, 0.241962507367134f, 0.428271710872650f,\n  0.242291063070297f, 0.428469479084015f, 0.242619767785072f, 0.428667008876801f,\n  0.242948621511459f, 0.428864300251007f, 0.243277639150620f, 0.429061323404312f,\n  0.243606805801392f, 0.429258108139038f, 0.243936106562614f, 0.429454624652863f,\n  0.244265571236610f, 0.429650902748108f, 0.244595184922218f, 0.429846942424774f,\n  0.244924947619438f, 0.430042684078217f, 0.245254859328270f, 0.430238217115402f,\n  0.245584934949875f, 0.430433481931686f, 0.245915144681931f, 0.430628478527069f,\n  0.246245503425598f, 0.430823236703873f, 0.246576011180878f, 0.431017726659775f,\n  0.246906682848930f, 0.431211978197098f, 0.247237488627434f, 0.431405961513519f,\n  0.247568443417549f, 0.431599706411362f, 0.247899547219276f, 0.431793183088303f,\n  0.248230814933777f, 0.431986421346664f, 0.248562216758728f, 0.432179391384125f,\n  0.248893767595291f, 0.432372123003006f, 0.249225467443466f, 0.432564586400986f,\n  0.249557301402092f, 0.432756811380386f, 0.249889299273491f, 0.432948768138886f,\n  0.250221431255341f, 0.433140486478806f, 0.250553727149963f, 0.433331936597824f,\n  0.250886172056198f, 0.433523118495941f, 0.251218736171722f, 0.433714061975479f,\n  0.251551479101181f, 0.433904737234116f, 0.251884341239929f, 0.434095174074173f,\n  0.252217382192612f, 0.434285342693329f, 0.252550542354584f, 0.434475272893906f,\n  0.252883851528168f, 0.434664934873581f, 0.253217309713364f, 0.434854328632355f,\n  0.253550916910172f, 0.435043483972549f, 0.253884643316269f, 0.435232400894165f,\n  0.254218548536301f, 0.435421019792557f, 0.254552572965622f, 0.435609430074692f,\n  0.254886746406555f, 0.435797542333603f, 0.255221068859100f, 0.435985416173935f,\n  0.255555540323257f, 0.436173021793365f, 0.255890160799026f, 0.436360388994217f,\n  0.256224930286407f, 0.436547487974167f, 0.256559818983078f, 0.436734348535538f,\n  0.256894856691360f, 0.436920911073685f, 0.257230043411255f, 0.437107264995575f,\n  0.257565379142761f, 0.437293320894241f, 0.257900834083557f, 0.437479138374329f,\n  0.258236467838287f, 0.437664687633514f, 0.258572220802307f, 0.437849998474121f,\n  0.258908122777939f, 0.438035041093826f, 0.259244143962860f, 0.438219845294952f,\n  0.259580343961716f, 0.438404351472855f, 0.259916663169861f, 0.438588619232178f,\n  0.260253131389618f, 0.438772648572922f, 0.260589718818665f, 0.438956409692764f,\n  0.260926485061646f, 0.439139902591705f, 0.261263370513916f, 0.439323127269745f,\n  0.261600375175476f, 0.439506113529205f, 0.261937558650970f, 0.439688831567764f,\n  0.262274861335754f, 0.439871311187744f, 0.262612313032150f, 0.440053492784500f,\n  0.262949883937836f, 0.440235435962677f, 0.263287603855133f, 0.440417140722275f,\n  0.263625472784042f, 0.440598547458649f, 0.263963490724564f, 0.440779715776443f,\n  0.264301627874374f, 0.440960645675659f, 0.264639914035797f, 0.441141277551651f,\n  0.264978319406509f, 0.441321671009064f, 0.265316903591156f, 0.441501796245575f,\n  0.265655577182770f, 0.441681683063507f, 0.265994429588318f, 0.441861271858215f,\n  0.266333401203156f, 0.442040622234344f, 0.266672492027283f, 0.442219734191895f,\n  0.267011761665344f, 0.442398548126221f, 0.267351150512695f, 0.442577123641968f,\n  0.267690658569336f, 0.442755430936813f, 0.268030315637589f, 0.442933470010757f,\n  0.268370121717453f, 0.443111270666122f, 0.268710047006607f, 0.443288803100586f,\n  0.269050091505051f, 0.443466067314148f, 0.269390314817429f, 0.443643063306808f,\n  0.269730657339096f, 0.443819820880890f, 0.270071119070053f, 0.443996280431747f,\n  0.270411729812622f, 0.444172531366348f, 0.270752459764481f, 0.444348484277725f,\n  0.271093338727951f, 0.444524168968201f, 0.271434366703033f, 0.444699615240097f,\n  0.271775513887405f, 0.444874793291092f, 0.272116780281067f, 0.445049703121185f,\n  0.272458195686340f, 0.445224374532700f, 0.272799760103226f, 0.445398747920990f,\n  0.273141443729401f, 0.445572882890701f, 0.273483246564865f, 0.445746749639511f,\n  0.273825198411942f, 0.445920348167419f, 0.274167299270630f, 0.446093708276749f,\n  0.274509519338608f, 0.446266770362854f, 0.274851858615875f, 0.446439594030380f,\n  0.275194346904755f, 0.446612149477005f, 0.275536954402924f, 0.446784436702728f,\n  0.275879681110382f, 0.446956485509872f, 0.276222556829453f, 0.447128236293793f,\n  0.276565581560135f, 0.447299748659134f, 0.276908725500107f, 0.447470992803574f,\n  0.277251988649368f, 0.447641968727112f, 0.277595400810242f, 0.447812676429749f,\n  0.277938932180405f, 0.447983115911484f, 0.278282582759857f, 0.448153316974640f,\n  0.278626382350922f, 0.448323249816895f, 0.278970301151276f, 0.448492884635925f,\n  0.279314368963242f, 0.448662281036377f, 0.279658555984497f, 0.448831409215927f,\n  0.280002862215042f, 0.449000298976898f, 0.280347317457199f, 0.449168890714645f,\n  0.280691891908646f, 0.449337244033813f, 0.281036585569382f, 0.449505299329758f,\n  0.281381398439407f, 0.449673116207123f, 0.281726360321045f, 0.449840664863586f,\n  0.282071471214294f, 0.450007945299149f, 0.282416671514511f, 0.450174957513809f,\n  0.282762020826340f, 0.450341701507568f, 0.283107489347458f, 0.450508207082748f,\n  0.283453077077866f, 0.450674414634705f, 0.283798813819885f, 0.450840383768082f,\n  0.284144669771194f, 0.451006084680557f, 0.284490644931793f, 0.451171487569809f,\n  0.284836769104004f, 0.451336652040482f, 0.285182982683182f, 0.451501548290253f,\n  0.285529345273972f, 0.451666176319122f, 0.285875827074051f, 0.451830536127090f,\n  0.286222457885742f, 0.451994657516479f, 0.286569178104401f, 0.452158480882645f,\n  0.286916047334671f, 0.452322036027908f, 0.287263035774231f, 0.452485352754593f,\n  0.287610173225403f, 0.452648371458054f, 0.287957400083542f, 0.452811151742935f,\n  0.288304775953293f, 0.452973634004593f, 0.288652241230011f, 0.453135877847672f,\n  0.288999855518341f, 0.453297853469849f, 0.289347589015961f, 0.453459560871124f,\n  0.289695471525192f, 0.453621000051498f, 0.290043443441391f, 0.453782171010971f,\n  0.290391564369202f, 0.453943043947220f, 0.290739774703979f, 0.454103678464890f,\n  0.291088134050369f, 0.454264044761658f, 0.291436612606049f, 0.454424172639847f,\n  0.291785210371017f, 0.454584002494812f, 0.292133957147598f, 0.454743564128876f,\n  0.292482793331146f, 0.454902857542038f, 0.292831748723984f, 0.455061882734299f,\n  0.293180853128433f, 0.455220639705658f, 0.293530046939850f, 0.455379128456116f,\n  0.293879389762878f, 0.455537378787994f, 0.294228851795197f, 0.455695331096649f,\n  0.294578403234482f, 0.455853015184402f, 0.294928103685379f, 0.456010431051254f,\n  0.295277923345566f, 0.456167578697205f, 0.295627862215042f, 0.456324487924576f,\n  0.295977920293808f, 0.456481099128723f, 0.296328097581863f, 0.456637442111969f,\n  0.296678394079208f, 0.456793516874313f, 0.297028809785843f, 0.456949323415756f,\n  0.297379344701767f, 0.457104891538620f, 0.297729998826981f, 0.457260161638260f,\n  0.298080772161484f, 0.457415163516998f, 0.298431664705276f, 0.457569897174835f,\n  0.298782676458359f, 0.457724362611771f, 0.299133807420731f, 0.457878559827805f,\n  0.299485057592392f, 0.458032488822937f, 0.299836426973343f, 0.458186149597168f,\n  0.300187885761261f, 0.458339542150497f, 0.300539493560791f, 0.458492636680603f,\n  0.300891220569611f, 0.458645492792130f, 0.301243066787720f, 0.458798080682755f,\n  0.301595002412796f, 0.458950400352478f, 0.301947087049484f, 0.459102421998978f,\n  0.302299261093140f, 0.459254205226898f, 0.302651554346085f, 0.459405690431595f,\n  0.303003966808319f, 0.459556937217712f, 0.303356528282166f, 0.459707885980606f,\n  0.303709149360657f, 0.459858566522598f, 0.304061919450760f, 0.460008978843689f,\n  0.304414808750153f, 0.460159152746201f, 0.304767817258835f, 0.460309028625488f,\n  0.305120915174484f, 0.460458606481552f, 0.305474132299423f, 0.460607945919037f,\n  0.305827468633652f, 0.460757017135620f, 0.306180924177170f, 0.460905820131302f,\n  0.306534498929977f, 0.461054325103760f, 0.306888192892075f, 0.461202591657639f,\n  0.307241976261139f, 0.461350560188293f, 0.307595878839493f, 0.461498260498047f,\n  0.307949900627136f, 0.461645722389221f, 0.308304041624069f, 0.461792886257172f,\n  0.308658272027969f, 0.461939752101898f, 0.309012651443481f, 0.462086379528046f,\n  0.309367120265961f, 0.462232738733292f, 0.309721708297729f, 0.462378799915314f,\n  0.310076385736465f, 0.462524622678757f, 0.310431212186813f, 0.462670147418976f,\n  0.310786128044128f, 0.462815403938293f, 0.311141163110733f, 0.462960392236710f,\n  0.311496287584305f, 0.463105112314224f, 0.311851561069489f, 0.463249564170837f,\n  0.312206923961639f, 0.463393747806549f, 0.312562376260757f, 0.463537633419037f,\n  0.312917977571487f, 0.463681250810623f, 0.313273668289185f, 0.463824629783630f,\n  0.313629478216171f, 0.463967710733414f, 0.313985377550125f, 0.464110493659973f,\n  0.314341396093369f, 0.464253038167953f, 0.314697533845901f, 0.464395314455032f,\n  0.315053790807724f, 0.464537292718887f, 0.315410137176514f, 0.464679002761841f,\n  0.315766572952271f, 0.464820444583893f, 0.316123157739639f, 0.464961618185043f,\n  0.316479831933975f, 0.465102523565292f, 0.316836595535278f, 0.465243130922318f,\n  0.317193508148193f, 0.465383470058441f, 0.317550510168076f, 0.465523540973663f,\n  0.317907601594925f, 0.465663343667984f, 0.318264812231064f, 0.465802878141403f,\n  0.318622142076492f, 0.465942144393921f, 0.318979561328888f, 0.466081112623215f,\n  0.319337099790573f, 0.466219812631607f, 0.319694727659225f, 0.466358244419098f,\n  0.320052474737167f, 0.466496407985687f, 0.320410341024399f, 0.466634273529053f,\n  0.320768296718597f, 0.466771900653839f, 0.321126341819763f, 0.466909229755402f,\n  0.321484506130219f, 0.467046260833740f, 0.321842789649963f, 0.467183053493500f,\n  0.322201162576675f, 0.467319577932358f, 0.322559654712677f, 0.467455804347992f,\n  0.322918236255646f, 0.467591762542725f, 0.323276937007904f, 0.467727422714233f,\n  0.323635727167130f, 0.467862844467163f, 0.323994606733322f, 0.467997968196869f,\n  0.324353635311127f, 0.468132823705673f, 0.324712723493576f, 0.468267410993576f,\n  0.325071930885315f, 0.468401730060577f, 0.325431257486343f, 0.468535751104355f,\n  0.325790673494339f, 0.468669503927231f, 0.326150178909302f, 0.468802988529205f,\n  0.326509803533554f, 0.468936175107956f, 0.326869517564774f, 0.469069123268127f,\n  0.327229350805283f, 0.469201773405075f, 0.327589273452759f, 0.469334155321121f,\n  0.327949285507202f, 0.469466239213943f, 0.328309416770935f, 0.469598054885864f,\n  0.328669637441635f, 0.469729602336884f, 0.329029977321625f, 0.469860881567001f,\n  0.329390406608582f, 0.469991862773895f, 0.329750925302505f, 0.470122605562210f,\n  0.330111563205719f, 0.470253020524979f, 0.330472290515900f, 0.470383197069168f,\n  0.330833107233047f, 0.470513075590134f, 0.331194043159485f, 0.470642685890198f,\n  0.331555068492889f, 0.470772027969360f, 0.331916213035584f, 0.470901101827621f,\n  0.332277417182922f, 0.471029877662659f, 0.332638740539551f, 0.471158385276794f,\n  0.333000183105469f, 0.471286594867706f, 0.333361685276031f, 0.471414536237717f,\n  0.333723306655884f, 0.471542209386826f, 0.334085017442703f, 0.471669614315033f,\n  0.334446847438812f, 0.471796721220016f, 0.334808766841888f, 0.471923559904099f,\n  0.335170775651932f, 0.472050130367279f, 0.335532873868942f, 0.472176402807236f,\n  0.335895091295242f, 0.472302407026291f, 0.336257368326187f, 0.472428143024445f,\n  0.336619764566422f, 0.472553610801697f, 0.336982280015945f, 0.472678780555725f,\n  0.337344855070114f, 0.472803652286530f, 0.337707549333572f, 0.472928285598755f,\n  0.338070303201675f, 0.473052620887756f, 0.338433176279068f, 0.473176687955856f,\n  0.338796168565750f, 0.473300457000732f, 0.339159220457077f, 0.473423957824707f,\n  0.339522391557693f, 0.473547190427780f, 0.339885622262955f, 0.473670125007629f,\n  0.340248972177505f, 0.473792791366577f, 0.340612411499023f, 0.473915189504623f,\n  0.340975970029831f, 0.474037289619446f, 0.341339588165283f, 0.474159121513367f,\n  0.341703325510025f, 0.474280685186386f, 0.342067122459412f, 0.474401950836182f,\n  0.342431038618088f, 0.474522948265076f, 0.342795044183731f, 0.474643647670746f,\n  0.343159139156342f, 0.474764078855515f, 0.343523323535919f, 0.474884241819382f,\n  0.343887597322464f, 0.475004136562347f, 0.344251960515976f, 0.475123733282089f,\n  0.344616413116455f, 0.475243031978607f, 0.344980984926224f, 0.475362062454224f,\n  0.345345616340637f, 0.475480824708939f, 0.345710366964340f, 0.475599318742752f,\n  0.346075177192688f, 0.475717514753342f, 0.346440106630325f, 0.475835442543030f,\n  0.346805095672607f, 0.475953072309494f, 0.347170203924179f, 0.476070433855057f,\n  0.347535371780396f, 0.476187497377396f, 0.347900658845901f, 0.476304292678833f,\n  0.348266035318375f, 0.476420819759369f, 0.348631471395493f, 0.476537048816681f,\n  0.348997026681900f, 0.476653009653091f, 0.349362671375275f, 0.476768702268600f,\n  0.349728375673294f, 0.476884096860886f, 0.350094199180603f, 0.476999223232269f,\n  0.350460082292557f, 0.477114051580429f, 0.350826084613800f, 0.477228611707687f,\n  0.351192146539688f, 0.477342873811722f, 0.351558297872543f, 0.477456867694855f,\n  0.351924568414688f, 0.477570593357086f, 0.352290898561478f, 0.477684020996094f,\n  0.352657318115234f, 0.477797180414200f, 0.353023827075958f, 0.477910041809082f,\n  0.353390425443649f, 0.478022634983063f, 0.353757113218308f, 0.478134930133820f,\n  0.354123860597610f, 0.478246957063675f, 0.354490727186203f, 0.478358715772629f,\n  0.354857653379440f, 0.478470176458359f, 0.355224698781967f, 0.478581339120865f,\n  0.355591803789139f, 0.478692263364792f, 0.355958998203278f, 0.478802859783173f,\n  0.356326282024384f, 0.478913217782974f, 0.356693625450134f, 0.479023247957230f,\n  0.357061088085175f, 0.479133039712906f, 0.357428610324860f, 0.479242533445358f,\n  0.357796221971512f, 0.479351729154587f, 0.358163923025131f, 0.479460656642914f,\n  0.358531713485718f, 0.479569315910339f, 0.358899593353271f, 0.479677677154541f,\n  0.359267532825470f, 0.479785770177841f, 0.359635561704636f, 0.479893565177917f,\n  0.360003679990768f, 0.480001062154770f, 0.360371887683868f, 0.480108320713043f,\n  0.360740154981613f, 0.480215251445770f, 0.361108511686325f, 0.480321943759918f,\n  0.361476957798004f, 0.480428308248520f, 0.361845493316650f, 0.480534434318542f,\n  0.362214088439941f, 0.480640232563019f, 0.362582772970200f, 0.480745792388916f,\n  0.362951546907425f, 0.480851024389267f, 0.363320380449295f, 0.480956017971039f,\n  0.363689333200455f, 0.481060713529587f, 0.364058345556259f, 0.481165111064911f,\n  0.364427417516708f, 0.481269240379334f, 0.364796578884125f, 0.481373071670532f,\n  0.365165829658508f, 0.481476634740829f, 0.365535169839859f, 0.481579899787903f,\n  0.365904569625854f, 0.481682896614075f, 0.366274058818817f, 0.481785595417023f,\n  0.366643607616425f, 0.481888025999069f, 0.367013275623322f, 0.481990188360214f,\n  0.367382973432541f, 0.482092022895813f, 0.367752790451050f, 0.482193619012833f,\n  0.368122667074203f, 0.482294887304306f, 0.368492603302002f, 0.482395917177200f,\n  0.368862658739090f, 0.482496619224548f, 0.369232743978500f, 0.482597053050995f,\n  0.369602948427200f, 0.482697218656540f, 0.369973212480545f, 0.482797086238861f,\n  0.370343536138535f, 0.482896685600281f, 0.370713949203491f, 0.482995986938477f,\n  0.371084451675415f, 0.483094990253448f, 0.371455013751984f, 0.483193725347519f,\n  0.371825665235519f, 0.483292192220688f, 0.372196376323700f, 0.483390361070633f,\n  0.372567176818848f, 0.483488231897354f, 0.372938036918640f, 0.483585834503174f,\n  0.373308986425400f, 0.483683139085770f, 0.373679995536804f, 0.483780175447464f,\n  0.374051094055176f, 0.483876913785934f, 0.374422252178192f, 0.483973383903503f,\n  0.374793499708176f, 0.484069555997849f, 0.375164806842804f, 0.484165430068970f,\n  0.375536203384399f, 0.484261035919189f, 0.375907659530640f, 0.484356373548508f,\n  0.376279205083847f, 0.484451413154602f, 0.376650810241699f, 0.484546154737473f,\n  0.377022475004196f, 0.484640628099442f, 0.377394229173660f, 0.484734803438187f,\n  0.377766042947769f, 0.484828680753708f, 0.378137946128845f, 0.484922289848328f,\n  0.378509908914566f, 0.485015630722046f, 0.378881961107254f, 0.485108673572540f,\n  0.379254043102264f, 0.485201418399811f, 0.379626244306564f, 0.485293895006180f,\n  0.379998475313187f, 0.485386073589325f, 0.380370795726776f, 0.485477954149246f,\n  0.380743205547333f, 0.485569566488266f, 0.381115674972534f, 0.485660910606384f,\n  0.381488204002380f, 0.485751956701279f, 0.381860792636871f, 0.485842704772949f,\n  0.382233470678329f, 0.485933154821396f, 0.382606208324432f, 0.486023366451263f,\n  0.382979035377502f, 0.486113250255585f, 0.383351892232895f, 0.486202865839005f,\n  0.383724838495255f, 0.486292183399200f, 0.384097874164581f, 0.486381232738495f,\n  0.384470939636230f, 0.486469984054565f, 0.384844094514847f, 0.486558437347412f,\n  0.385217308998108f, 0.486646622419357f, 0.385590612888336f, 0.486734509468079f,\n  0.385963946580887f, 0.486822128295898f, 0.386337369680405f, 0.486909449100494f,\n  0.386710882186890f, 0.486996471881866f, 0.387084424495697f, 0.487083226442337f,\n  0.387458056211472f, 0.487169682979584f, 0.387831717729568f, 0.487255871295929f,\n  0.388205498456955f, 0.487341761589050f, 0.388579308986664f, 0.487427353858948f,\n  0.388953179121017f, 0.487512677907944f, 0.389327138662338f, 0.487597703933716f,\n  0.389701157808304f, 0.487682431936264f, 0.390075236558914f, 0.487766891717911f,\n  0.390449374914169f, 0.487851053476334f, 0.390823602676392f, 0.487934947013855f,\n  0.391197860240936f, 0.488018542528152f, 0.391572207212448f, 0.488101840019226f,\n  0.391946613788605f, 0.488184869289398f, 0.392321079969406f, 0.488267600536346f,\n  0.392695605754852f, 0.488350033760071f, 0.393070191144943f, 0.488432198762894f,\n  0.393444836139679f, 0.488514065742493f, 0.393819570541382f, 0.488595664501190f,\n  0.394194334745407f, 0.488676935434341f, 0.394569188356400f, 0.488757967948914f,\n  0.394944071769714f, 0.488838672637939f, 0.395319044589996f, 0.488919109106064f,\n  0.395694077014923f, 0.488999247550964f, 0.396069169044495f, 0.489079117774963f,\n  0.396444320678711f, 0.489158689975739f, 0.396819531917572f, 0.489237964153290f,\n  0.397194802761078f, 0.489316970109940f, 0.397570133209229f, 0.489395678043365f,\n  0.397945523262024f, 0.489474087953568f, 0.398320972919464f, 0.489552229642868f,\n  0.398696482181549f, 0.489630073308945f, 0.399072051048279f, 0.489707618951797f,\n  0.399447679519653f, 0.489784896373749f, 0.399823367595673f, 0.489861875772476f,\n  0.400199115276337f, 0.489938557147980f, 0.400574922561646f, 0.490014940500259f,\n  0.400950789451599f, 0.490091055631638f, 0.401326715946198f, 0.490166902542114f,\n  0.401702702045441f, 0.490242421627045f, 0.402078747749329f, 0.490317672491074f,\n  0.402454853057861f, 0.490392625331879f, 0.402830988168716f, 0.490467309951782f,\n  0.403207212686539f, 0.490541696548462f, 0.403583467006683f, 0.490615785121918f,\n  0.403959810733795f, 0.490689605474472f, 0.404336184263229f, 0.490763127803802f,\n  0.404712617397308f, 0.490836352109909f, 0.405089110136032f, 0.490909278392792f,\n  0.405465662479401f, 0.490981936454773f, 0.405842274427414f, 0.491054296493530f,\n  0.406218945980072f, 0.491126358509064f, 0.406595647335052f, 0.491198152303696f,\n  0.406972438097000f, 0.491269648075104f, 0.407349258661270f, 0.491340845823288f,\n  0.407726138830185f, 0.491411775350571f, 0.408103078603745f, 0.491482406854630f,\n  0.408480048179626f, 0.491552740335464f, 0.408857107162476f, 0.491622805595398f,\n  0.409234195947647f, 0.491692543029785f, 0.409611344337463f, 0.491762012243271f,\n  0.409988552331924f, 0.491831213235855f, 0.410365819931030f, 0.491900116205215f,\n  0.410743117332459f, 0.491968721151352f, 0.411120474338531f, 0.492037028074265f,\n  0.411497890949249f, 0.492105036973953f, 0.411875367164612f, 0.492172777652740f,\n  0.412252873182297f, 0.492240220308304f, 0.412630438804626f, 0.492307394742966f,\n  0.413008064031601f, 0.492374241352081f, 0.413385748863220f, 0.492440819740295f,\n  0.413763463497162f, 0.492507129907608f, 0.414141237735748f, 0.492573112249374f,\n  0.414519041776657f, 0.492638826370239f, 0.414896935224533f, 0.492704242467880f,\n  0.415274858474731f, 0.492769360542297f, 0.415652841329575f, 0.492834210395813f,\n  0.416030853986740f, 0.492898762226105f, 0.416408926248550f, 0.492963016033173f,\n  0.416787058115005f, 0.493026971817017f, 0.417165219783783f, 0.493090659379959f,\n  0.417543441057205f, 0.493154048919678f, 0.417921721935272f, 0.493217140436172f,\n  0.418300032615662f, 0.493279963731766f, 0.418678402900696f, 0.493342459201813f,\n  0.419056802988052f, 0.493404686450958f, 0.419435262680054f, 0.493466645479202f,\n  0.419813781976700f, 0.493528276681900f, 0.420192331075668f, 0.493589639663696f,\n  0.420570939779282f, 0.493650704622269f, 0.420949578285217f, 0.493711471557617f,\n  0.421328276395798f, 0.493771970272064f, 0.421707004308701f, 0.493832170963287f,\n  0.422085791826248f, 0.493892073631287f, 0.422464638948441f, 0.493951678276062f,\n  0.422843515872955f, 0.494011014699936f, 0.423222452402115f, 0.494070053100586f,\n  0.423601418733597f, 0.494128793478012f, 0.423980414867401f, 0.494187235832214f,\n  0.424359470605850f, 0.494245409965515f, 0.424738585948944f, 0.494303256273270f,\n  0.425117731094360f, 0.494360834360123f, 0.425496935844421f, 0.494418144226074f,\n  0.425876170396805f, 0.494475126266479f, 0.426255434751511f, 0.494531840085983f,\n  0.426634758710861f, 0.494588255882263f, 0.427014142274857f, 0.494644373655319f,\n  0.427393525838852f, 0.494700223207474f, 0.427772998809814f, 0.494755744934082f,\n  0.428152471780777f, 0.494810998439789f, 0.428532034158707f, 0.494865983724594f,\n  0.428911596536636f, 0.494920641183853f, 0.429291218519211f, 0.494975030422211f,\n  0.429670870304108f, 0.495029091835022f, 0.430050581693649f, 0.495082914829254f,\n  0.430430322885513f, 0.495136409997940f, 0.430810123682022f, 0.495189607143402f,\n  0.431189924478531f, 0.495242536067963f, 0.431569814682007f, 0.495295166969299f,\n  0.431949704885483f, 0.495347499847412f, 0.432329654693604f, 0.495399564504623f,\n  0.432709634304047f, 0.495451331138611f, 0.433089673519135f, 0.495502769947052f,\n  0.433469742536545f, 0.495553970336914f, 0.433849841356277f, 0.495604842901230f,\n  0.434229999780655f, 0.495655417442322f, 0.434610158205032f, 0.495705723762512f,\n  0.434990376234055f, 0.495755732059479f, 0.435370653867722f, 0.495805442333221f,\n  0.435750931501389f, 0.495854884386063f, 0.436131268739700f, 0.495903998613358f,\n  0.436511665582657f, 0.495952844619751f, 0.436892062425613f, 0.496001392602921f,\n  0.437272518873215f, 0.496049642562866f, 0.437653005123138f, 0.496097624301910f,\n  0.438033521175385f, 0.496145308017731f, 0.438414067029953f, 0.496192663908005f,\n  0.438794672489166f, 0.496239781379700f, 0.439175277948380f, 0.496286571025848f,\n  0.439555943012238f, 0.496333062648773f, 0.439936667680740f, 0.496379286050797f,\n  0.440317392349243f, 0.496425211429596f, 0.440698176622391f, 0.496470838785172f,\n  0.441078960895538f, 0.496516168117523f, 0.441459804773331f, 0.496561229228973f,\n  0.441840678453445f, 0.496605962514877f, 0.442221581935883f, 0.496650427579880f,\n  0.442602545022964f, 0.496694594621658f, 0.442983508110046f, 0.496738493442535f,\n  0.443364530801773f, 0.496782064437866f, 0.443745553493500f, 0.496825367212296f,\n  0.444126635789871f, 0.496868371963501f, 0.444507747888565f, 0.496911078691483f,\n  0.444888889789581f, 0.496953487396240f, 0.445270061492920f, 0.496995598077774f,\n  0.445651292800903f, 0.497037440538406f, 0.446032524108887f, 0.497078984975815f,\n  0.446413785219193f, 0.497120231389999f, 0.446795076131821f, 0.497161179780960f,\n  0.447176426649094f, 0.497201830148697f, 0.447557777166367f, 0.497242212295532f,\n  0.447939187288284f, 0.497282296419144f, 0.448320597410202f, 0.497322082519531f,\n  0.448702067136765f, 0.497361570596695f, 0.449083566665649f, 0.497400760650635f,\n  0.449465066194534f, 0.497439652681351f, 0.449846625328064f, 0.497478276491165f,\n  0.450228184461594f, 0.497516602277756f, 0.450609803199768f, 0.497554630041122f,\n  0.450991421937943f, 0.497592359781265f, 0.451373100280762f, 0.497629791498184f,\n  0.451754778623581f, 0.497666954994202f, 0.452136516571045f, 0.497703820466995f,\n  0.452518254518509f, 0.497740387916565f, 0.452900022268295f, 0.497776657342911f,\n  0.453281819820404f, 0.497812628746033f, 0.453663676977158f, 0.497848302125931f,\n  0.454045534133911f, 0.497883707284927f, 0.454427421092987f, 0.497918814420700f,\n  0.454809308052063f, 0.497953623533249f, 0.455191254615784f, 0.497988134622574f,\n  0.455573230981827f, 0.498022347688675f, 0.455955207347870f, 0.498056292533875f,\n  0.456337243318558f, 0.498089909553528f, 0.456719279289246f, 0.498123258352280f,\n  0.457101345062256f, 0.498156309127808f, 0.457483440637589f, 0.498189061880112f,\n  0.457865566015244f, 0.498221516609192f, 0.458247691392899f, 0.498253703117371f,\n  0.458629876375198f, 0.498285561800003f, 0.459012061357498f, 0.498317152261734f,\n  0.459394276142120f, 0.498348444700241f, 0.459776520729065f, 0.498379439115524f,\n  0.460158795118332f, 0.498410135507584f, 0.460541069507599f, 0.498440563678741f,\n  0.460923373699188f, 0.498470664024353f, 0.461305707693100f, 0.498500496149063f,\n  0.461688071489334f, 0.498530030250549f, 0.462070435285568f, 0.498559266328812f,\n  0.462452858686447f, 0.498588204383850f, 0.462835282087326f, 0.498616874217987f,\n  0.463217705488205f, 0.498645216226578f, 0.463600188493729f, 0.498673290014267f,\n  0.463982671499252f, 0.498701065778732f, 0.464365184307098f, 0.498728543519974f,\n  0.464747726917267f, 0.498755723237991f, 0.465130269527435f, 0.498782604932785f,\n  0.465512841939926f, 0.498809218406677f, 0.465895414352417f, 0.498835533857346f,\n  0.466278046369553f, 0.498861521482468f, 0.466660678386688f, 0.498887240886688f,\n  0.467043310403824f, 0.498912662267685f, 0.467426002025604f, 0.498937815427780f,\n  0.467808693647385f, 0.498962640762329f, 0.468191385269165f, 0.498987197875977f,\n  0.468574106693268f, 0.499011427164078f, 0.468956857919693f, 0.499035388231277f,\n  0.469339638948441f, 0.499059051275253f, 0.469722419977188f, 0.499082416296005f,\n  0.470105201005936f, 0.499105513095856f, 0.470488041639328f, 0.499128282070160f,\n  0.470870882272720f, 0.499150782823563f, 0.471253722906113f, 0.499172955751419f,\n  0.471636593341827f, 0.499194860458374f, 0.472019463777542f, 0.499216467142105f,\n  0.472402364015579f, 0.499237775802612f, 0.472785294055939f, 0.499258816242218f,\n  0.473168224096298f, 0.499279528856277f, 0.473551183938980f, 0.499299973249435f,\n  0.473934143781662f, 0.499320119619370f, 0.474317133426666f, 0.499339967966080f,\n  0.474700123071671f, 0.499359518289566f, 0.475083142518997f, 0.499378770589828f,\n  0.475466161966324f, 0.499397724866867f, 0.475849211215973f, 0.499416410923004f,\n  0.476232260465622f, 0.499434769153595f, 0.476615339517593f, 0.499452859163284f,\n  0.476998418569565f, 0.499470651149750f, 0.477381497621536f, 0.499488145112991f,\n  0.477764606475830f, 0.499505341053009f, 0.478147745132446f, 0.499522238969803f,\n  0.478530883789063f, 0.499538868665695f, 0.478914022445679f, 0.499555170536041f,\n  0.479297190904617f, 0.499571204185486f, 0.479680359363556f, 0.499586939811707f,\n  0.480063527822495f, 0.499602377414703f, 0.480446726083755f, 0.499617516994476f,\n  0.480829954147339f, 0.499632388353348f, 0.481213152408600f, 0.499646931886673f,\n  0.481596380472183f, 0.499661177396774f, 0.481979638338089f, 0.499675154685974f,\n  0.482362866401672f, 0.499688833951950f, 0.482746154069901f, 0.499702215194702f,\n  0.483129411935806f, 0.499715298414230f, 0.483512699604034f, 0.499728083610535f,\n  0.483895987272263f, 0.499740600585938f, 0.484279274940491f, 0.499752789735794f,\n  0.484662592411041f, 0.499764710664749f, 0.485045909881592f, 0.499776333570480f,\n  0.485429257154465f, 0.499787658452988f, 0.485812574625015f, 0.499798685312271f,\n  0.486195921897888f, 0.499809414148331f, 0.486579269170761f, 0.499819844961166f,\n  0.486962646245956f, 0.499830007553101f, 0.487346023321152f, 0.499839842319489f,\n  0.487729400396347f, 0.499849408864975f, 0.488112777471542f, 0.499858677387238f,\n  0.488496154546738f, 0.499867647886276f, 0.488879561424255f, 0.499876320362091f,\n  0.489262968301773f, 0.499884694814682f, 0.489646375179291f, 0.499892801046371f,\n  0.490029782056808f, 0.499900579452515f, 0.490413218736649f, 0.499908089637756f,\n  0.490796625614166f, 0.499915301799774f, 0.491180062294006f, 0.499922215938568f,\n  0.491563498973846f, 0.499928832054138f, 0.491946935653687f, 0.499935150146484f,\n  0.492330402135849f, 0.499941170215607f, 0.492713838815689f, 0.499946922063828f,\n  0.493097305297852f, 0.499952346086502f, 0.493480771780014f, 0.499957501888275f,\n  0.493864238262177f, 0.499962359666824f, 0.494247704744339f, 0.499966919422150f,\n  0.494631171226501f, 0.499971181154251f, 0.495014637708664f, 0.499975144863129f,\n  0.495398133993149f, 0.499978810548782f, 0.495781600475311f, 0.499982208013535f,\n  0.496165096759796f, 0.499985307455063f, 0.496548563241959f, 0.499988079071045f,\n  0.496932059526443f, 0.499990582466125f, 0.497315555810928f, 0.499992787837982f,\n  0.497699022293091f, 0.499994695186615f, 0.498082518577576f, 0.499996334314346f,\n  0.498466014862061f, 0.499997645616531f, 0.498849511146545f, 0.499998688697815f,\n  0.499233007431030f, 0.499999403953552f, 0.499616503715515f, 0.499999850988388f,\n};\n\n\n/**\n  @par\n  Generation of realCoefB array:\n  @par\n  n = 4096\n  <pre>for (i = 0; i < n; i++)\n  {\n     pBTable[2 * i]     = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));\n     pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));\n  }</pre>\n */\n\nconst float32_t realCoefB[8192] = {\n  0.500000000000000f, 0.500000000000000f, 0.500383496284485f, 0.499999850988388f,\n  0.500766992568970f, 0.499999403953552f, 0.501150488853455f, 0.499998688697815f,\n  0.501533985137939f, 0.499997645616531f, 0.501917481422424f, 0.499996334314346f,\n  0.502300977706909f, 0.499994695186615f, 0.502684473991394f, 0.499992787837982f,\n  0.503067970275879f, 0.499990582466125f, 0.503451406955719f, 0.499988079071045f,\n  0.503834903240204f, 0.499985307455063f, 0.504218399524689f, 0.499982208013535f,\n  0.504601895809174f, 0.499978810548782f, 0.504985332489014f, 0.499975144863129f,\n  0.505368828773499f, 0.499971181154251f, 0.505752325057983f, 0.499966919422150f,\n  0.506135761737823f, 0.499962359666824f, 0.506519258022308f, 0.499957501888275f,\n  0.506902694702148f, 0.499952346086502f, 0.507286131381989f, 0.499946922063828f,\n  0.507669627666473f, 0.499941170215607f, 0.508053064346313f, 0.499935150146484f,\n  0.508436501026154f, 0.499928832054138f, 0.508819937705994f, 0.499922215938568f,\n  0.509203374385834f, 0.499915301799774f, 0.509586811065674f, 0.499908089637756f,\n  0.509970188140869f, 0.499900579452515f, 0.510353624820709f, 0.499892801046371f,\n  0.510737061500549f, 0.499884694814682f, 0.511120438575745f, 0.499876320362091f,\n  0.511503815650940f, 0.499867647886276f, 0.511887252330780f, 0.499858677387238f,\n  0.512270629405975f, 0.499849408864975f, 0.512654006481171f, 0.499839842319489f,\n  0.513037383556366f, 0.499830007553101f, 0.513420701026917f, 0.499819844961166f,\n  0.513804078102112f, 0.499809414148331f, 0.514187395572662f, 0.499798685312271f,\n  0.514570772647858f, 0.499787658452988f, 0.514954090118408f, 0.499776333570480f,\n  0.515337407588959f, 0.499764710664749f, 0.515720725059509f, 0.499752789735794f,\n  0.516103982925415f, 0.499740600585938f, 0.516487300395966f, 0.499728083610535f,\n  0.516870558261871f, 0.499715298414230f, 0.517253875732422f, 0.499702215194702f,\n  0.517637133598328f, 0.499688833951950f, 0.518020391464233f, 0.499675154685974f,\n  0.518403589725494f, 0.499661177396774f, 0.518786847591400f, 0.499646931886673f,\n  0.519170045852661f, 0.499632388353348f, 0.519553244113922f, 0.499617516994476f,\n  0.519936442375183f, 0.499602377414703f, 0.520319640636444f, 0.499586939811707f,\n  0.520702838897705f, 0.499571204185486f, 0.521085977554321f, 0.499555170536041f,\n  0.521469116210938f, 0.499538868665695f, 0.521852254867554f, 0.499522238969803f,\n  0.522235393524170f, 0.499505341053009f, 0.522618472576141f, 0.499488145112991f,\n  0.523001611232758f, 0.499470651149750f, 0.523384690284729f, 0.499452859163284f,\n  0.523767769336700f, 0.499434769153595f, 0.524150788784027f, 0.499416410923004f,\n  0.524533808231354f, 0.499397724866867f, 0.524916887283325f, 0.499378770589828f,\n  0.525299847126007f, 0.499359518289566f, 0.525682866573334f, 0.499339967966080f,\n  0.526065826416016f, 0.499320119619370f, 0.526448845863342f, 0.499299973249435f,\n  0.526831746101379f, 0.499279528856277f, 0.527214705944061f, 0.499258816242218f,\n  0.527597606182098f, 0.499237775802612f, 0.527980506420136f, 0.499216467142105f,\n  0.528363406658173f, 0.499194860458374f, 0.528746306896210f, 0.499172955751419f,\n  0.529129147529602f, 0.499150782823563f, 0.529511988162994f, 0.499128282070160f,\n  0.529894769191742f, 0.499105513095856f, 0.530277609825134f, 0.499082416296005f,\n  0.530660390853882f, 0.499059051275253f, 0.531043112277985f, 0.499035388231277f,\n  0.531425893306732f, 0.499011427164078f, 0.531808614730835f, 0.498987197875977f,\n  0.532191336154938f, 0.498962640762329f, 0.532573997974396f, 0.498937815427780f,\n  0.532956659793854f, 0.498912662267685f, 0.533339321613312f, 0.498887240886688f,\n  0.533721983432770f, 0.498861521482468f, 0.534104585647583f, 0.498835533857346f,\n  0.534487187862396f, 0.498809218406677f, 0.534869730472565f, 0.498782604932785f,\n  0.535252273082733f, 0.498755723237991f, 0.535634815692902f, 0.498728543519974f,\n  0.536017298698425f, 0.498701065778732f, 0.536399841308594f, 0.498673290014267f,\n  0.536782264709473f, 0.498645216226578f, 0.537164747714996f, 0.498616874217987f,\n  0.537547171115875f, 0.498588204383850f, 0.537929534912109f, 0.498559266328812f,\n  0.538311958312988f, 0.498530030250549f, 0.538694262504578f, 0.498500496149063f,\n  0.539076626300812f, 0.498470664024353f, 0.539458930492401f, 0.498440563678741f,\n  0.539841234683990f, 0.498410135507584f, 0.540223479270935f, 0.498379439115524f,\n  0.540605723857880f, 0.498348444700241f, 0.540987968444824f, 0.498317152261734f,\n  0.541370153427124f, 0.498285561800003f, 0.541752278804779f, 0.498253703117371f,\n  0.542134463787079f, 0.498221516609192f, 0.542516589164734f, 0.498189061880112f,\n  0.542898654937744f, 0.498156309127808f, 0.543280720710754f, 0.498123258352280f,\n  0.543662786483765f, 0.498089909553528f, 0.544044792652130f, 0.498056292533875f,\n  0.544426798820496f, 0.498022347688675f, 0.544808745384216f, 0.497988134622574f,\n  0.545190691947937f, 0.497953623533249f, 0.545572578907013f, 0.497918814420700f,\n  0.545954465866089f, 0.497883707284927f, 0.546336352825165f, 0.497848302125931f,\n  0.546718180179596f, 0.497812628746033f, 0.547099947929382f, 0.497776657342911f,\n  0.547481775283813f, 0.497740387916565f, 0.547863483428955f, 0.497703820466995f,\n  0.548245191574097f, 0.497666954994202f, 0.548626899719238f, 0.497629791498184f,\n  0.549008548259735f, 0.497592359781265f, 0.549390196800232f, 0.497554630041122f,\n  0.549771785736084f, 0.497516602277756f, 0.550153374671936f, 0.497478276491165f,\n  0.550534904003143f, 0.497439652681351f, 0.550916433334351f, 0.497400760650635f,\n  0.551297962665558f, 0.497361570596695f, 0.551679372787476f, 0.497322082519531f,\n  0.552060842514038f, 0.497282296419144f, 0.552442193031311f, 0.497242212295532f,\n  0.552823603153229f, 0.497201830148697f, 0.553204894065857f, 0.497161179780960f,\n  0.553586184978485f, 0.497120231389999f, 0.553967475891113f, 0.497078984975815f,\n  0.554348707199097f, 0.497037440538406f, 0.554729938507080f, 0.496995598077774f,\n  0.555111110210419f, 0.496953487396240f, 0.555492222309113f, 0.496911078691483f,\n  0.555873334407806f, 0.496868371963501f, 0.556254446506500f, 0.496825367212296f,\n  0.556635499000549f, 0.496782064437866f, 0.557016491889954f, 0.496738493442535f,\n  0.557397484779358f, 0.496694594621658f, 0.557778418064117f, 0.496650427579880f,\n  0.558159291744232f, 0.496605962514877f, 0.558540165424347f, 0.496561229228973f,\n  0.558921039104462f, 0.496516168117523f, 0.559301853179932f, 0.496470838785172f,\n  0.559682607650757f, 0.496425211429596f, 0.560063362121582f, 0.496379286050797f,\n  0.560444056987762f, 0.496333062648773f, 0.560824692249298f, 0.496286571025848f,\n  0.561205327510834f, 0.496239781379700f, 0.561585903167725f, 0.496192663908005f,\n  0.561966478824615f, 0.496145308017731f, 0.562346994876862f, 0.496097624301910f,\n  0.562727510929108f, 0.496049642562866f, 0.563107967376709f, 0.496001392602921f,\n  0.563488364219666f, 0.495952844619751f, 0.563868701457977f, 0.495903998613358f,\n  0.564249038696289f, 0.495854884386063f, 0.564629375934601f, 0.495805442333221f,\n  0.565009593963623f, 0.495755732059479f, 0.565389811992645f, 0.495705723762512f,\n  0.565770030021667f, 0.495655417442322f, 0.566150128841400f, 0.495604842901230f,\n  0.566530287265778f, 0.495553970336914f, 0.566910326480865f, 0.495502769947052f,\n  0.567290365695953f, 0.495451331138611f, 0.567670345306396f, 0.495399564504623f,\n  0.568050265312195f, 0.495347499847412f, 0.568430185317993f, 0.495295166969299f,\n  0.568810045719147f, 0.495242536067963f, 0.569189906120300f, 0.495189607143402f,\n  0.569569647312164f, 0.495136409997940f, 0.569949388504028f, 0.495082914829254f,\n  0.570329129695892f, 0.495029091835022f, 0.570708811283112f, 0.494975030422211f,\n  0.571088373661041f, 0.494920641183853f, 0.571467995643616f, 0.494865983724594f,\n  0.571847498416901f, 0.494810998439789f, 0.572227001190186f, 0.494755744934082f,\n  0.572606444358826f, 0.494700223207474f, 0.572985887527466f, 0.494644373655319f,\n  0.573365211486816f, 0.494588255882263f, 0.573744535446167f, 0.494531840085983f,\n  0.574123859405518f, 0.494475126266479f, 0.574503064155579f, 0.494418144226074f,\n  0.574882268905640f, 0.494360834360123f, 0.575261414051056f, 0.494303256273270f,\n  0.575640499591827f, 0.494245409965515f, 0.576019585132599f, 0.494187235832214f,\n  0.576398611068726f, 0.494128793478012f, 0.576777577400208f, 0.494070053100586f,\n  0.577156484127045f, 0.494011014699936f, 0.577535390853882f, 0.493951678276062f,\n  0.577914178371429f, 0.493892073631287f, 0.578292965888977f, 0.493832170963287f,\n  0.578671753406525f, 0.493771970272064f, 0.579050421714783f, 0.493711471557617f,\n  0.579429090023041f, 0.493650704622269f, 0.579807698726654f, 0.493589639663696f,\n  0.580186247825623f, 0.493528276681900f, 0.580564737319946f, 0.493466645479202f,\n  0.580943167209625f, 0.493404686450958f, 0.581321597099304f, 0.493342459201813f,\n  0.581699967384338f, 0.493279963731766f, 0.582078278064728f, 0.493217140436172f,\n  0.582456588745117f, 0.493154048919678f, 0.582834780216217f, 0.493090659379959f,\n  0.583212971687317f, 0.493026971817017f, 0.583591103553772f, 0.492963016033173f,\n  0.583969175815582f, 0.492898762226105f, 0.584347188472748f, 0.492834210395813f,\n  0.584725141525269f, 0.492769360542297f, 0.585103094577789f, 0.492704242467880f,\n  0.585480928421021f, 0.492638826370239f, 0.585858762264252f, 0.492573112249374f,\n  0.586236536502838f, 0.492507129907608f, 0.586614251136780f, 0.492440819740295f,\n  0.586991965770721f, 0.492374241352081f, 0.587369561195374f, 0.492307394742966f,\n  0.587747097015381f, 0.492240220308304f, 0.588124632835388f, 0.492172777652740f,\n  0.588502109050751f, 0.492105036973953f, 0.588879525661469f, 0.492037028074265f,\n  0.589256882667542f, 0.491968721151352f, 0.589634180068970f, 0.491900116205215f,\n  0.590011477470398f, 0.491831213235855f, 0.590388655662537f, 0.491762012243271f,\n  0.590765833854675f, 0.491692543029785f, 0.591142892837524f, 0.491622805595398f,\n  0.591519951820374f, 0.491552740335464f, 0.591896951198578f, 0.491482406854630f,\n  0.592273890972137f, 0.491411775350571f, 0.592650771141052f, 0.491340845823288f,\n  0.593027591705322f, 0.491269648075104f, 0.593404352664948f, 0.491198152303696f,\n  0.593781054019928f, 0.491126358509064f, 0.594157755374908f, 0.491054296493530f,\n  0.594534337520599f, 0.490981936454773f, 0.594910860061646f, 0.490909278392792f,\n  0.595287382602692f, 0.490836352109909f, 0.595663845539093f, 0.490763127803802f,\n  0.596040189266205f, 0.490689605474472f, 0.596416532993317f, 0.490615785121918f,\n  0.596792817115784f, 0.490541696548462f, 0.597168982028961f, 0.490467309951782f,\n  0.597545146942139f, 0.490392625331879f, 0.597921252250671f, 0.490317672491074f,\n  0.598297297954559f, 0.490242421627045f, 0.598673284053802f, 0.490166902542114f,\n  0.599049210548401f, 0.490091055631638f, 0.599425077438354f, 0.490014940500259f,\n  0.599800884723663f, 0.489938557147980f, 0.600176632404327f, 0.489861875772476f,\n  0.600552320480347f, 0.489784896373749f, 0.600927948951721f, 0.489707618951797f,\n  0.601303517818451f, 0.489630073308945f, 0.601679027080536f, 0.489552229642868f,\n  0.602054476737976f, 0.489474087953568f, 0.602429866790771f, 0.489395678043365f,\n  0.602805197238922f, 0.489316970109940f, 0.603180468082428f, 0.489237964153290f,\n  0.603555679321289f, 0.489158689975739f, 0.603930830955505f, 0.489079117774963f,\n  0.604305922985077f, 0.488999247550964f, 0.604680955410004f, 0.488919109106064f,\n  0.605055928230286f, 0.488838672637939f, 0.605430841445923f, 0.488757967948914f,\n  0.605805635452271f, 0.488676935434341f, 0.606180429458618f, 0.488595664501190f,\n  0.606555163860321f, 0.488514065742493f, 0.606929838657379f, 0.488432198762894f,\n  0.607304394245148f, 0.488350033760071f, 0.607678949832916f, 0.488267600536346f,\n  0.608053386211395f, 0.488184869289398f, 0.608427822589874f, 0.488101840019226f,\n  0.608802139759064f, 0.488018542528152f, 0.609176397323608f, 0.487934947013855f,\n  0.609550595283508f, 0.487851053476334f, 0.609924793243408f, 0.487766891717911f,\n  0.610298871994019f, 0.487682431936264f, 0.610672831535339f, 0.487597703933716f,\n  0.611046791076660f, 0.487512677907944f, 0.611420691013336f, 0.487427353858948f,\n  0.611794531345367f, 0.487341761589050f, 0.612168252468109f, 0.487255871295929f,\n  0.612541973590851f, 0.487169682979584f, 0.612915575504303f, 0.487083226442337f,\n  0.613289117813110f, 0.486996471881866f, 0.613662600517273f, 0.486909449100494f,\n  0.614036023616791f, 0.486822128295898f, 0.614409387111664f, 0.486734509468079f,\n  0.614782691001892f, 0.486646622419357f, 0.615155875682831f, 0.486558437347412f,\n  0.615529060363770f, 0.486469984054565f, 0.615902125835419f, 0.486381232738495f,\n  0.616275131702423f, 0.486292183399200f, 0.616648077964783f, 0.486202865839005f,\n  0.617020964622498f, 0.486113250255585f, 0.617393791675568f, 0.486023366451263f,\n  0.617766559123993f, 0.485933154821396f, 0.618139207363129f, 0.485842704772949f,\n  0.618511795997620f, 0.485751956701279f, 0.618884325027466f, 0.485660910606384f,\n  0.619256794452667f, 0.485569566488266f, 0.619629204273224f, 0.485477954149246f,\n  0.620001494884491f, 0.485386073589325f, 0.620373785495758f, 0.485293895006180f,\n  0.620745956897736f, 0.485201418399811f, 0.621118068695068f, 0.485108673572540f,\n  0.621490061283112f, 0.485015630722046f, 0.621862053871155f, 0.484922289848328f,\n  0.622233927249908f, 0.484828680753708f, 0.622605800628662f, 0.484734803438187f,\n  0.622977554798126f, 0.484640628099442f, 0.623349189758301f, 0.484546154737473f,\n  0.623720824718475f, 0.484451413154602f, 0.624092340469360f, 0.484356373548508f,\n  0.624463796615601f, 0.484261035919189f, 0.624835193157196f, 0.484165430068970f,\n  0.625206530094147f, 0.484069555997849f, 0.625577747821808f, 0.483973383903503f,\n  0.625948905944824f, 0.483876913785934f, 0.626320004463196f, 0.483780175447464f,\n  0.626691043376923f, 0.483683139085770f, 0.627061963081360f, 0.483585834503174f,\n  0.627432823181152f, 0.483488231897354f, 0.627803623676300f, 0.483390361070633f,\n  0.628174364566803f, 0.483292192220688f, 0.628544986248016f, 0.483193725347519f,\n  0.628915548324585f, 0.483094990253448f, 0.629286050796509f, 0.482995986938477f,\n  0.629656434059143f, 0.482896685600281f, 0.630026817321777f, 0.482797086238861f,\n  0.630397081375122f, 0.482697218656540f, 0.630767226219177f, 0.482597053050995f,\n  0.631137371063232f, 0.482496619224548f, 0.631507396697998f, 0.482395917177200f,\n  0.631877362728119f, 0.482294887304306f, 0.632247209548950f, 0.482193619012833f,\n  0.632616996765137f, 0.482092022895813f, 0.632986724376678f, 0.481990188360214f,\n  0.633356392383575f, 0.481888025999069f, 0.633725941181183f, 0.481785595417023f,\n  0.634095430374146f, 0.481682896614075f, 0.634464859962463f, 0.481579899787903f,\n  0.634834170341492f, 0.481476634740829f, 0.635203421115875f, 0.481373071670532f,\n  0.635572552680969f, 0.481269240379334f, 0.635941684246063f, 0.481165111064911f,\n  0.636310696601868f, 0.481060713529587f, 0.636679589748383f, 0.480956017971039f,\n  0.637048482894897f, 0.480851024389267f, 0.637417197227478f, 0.480745792388916f,\n  0.637785911560059f, 0.480640232563019f, 0.638154506683350f, 0.480534434318542f,\n  0.638523042201996f, 0.480428308248520f, 0.638891458511353f, 0.480321943759918f,\n  0.639259815216064f, 0.480215251445770f, 0.639628112316132f, 0.480108320713043f,\n  0.639996349811554f, 0.480001062154770f, 0.640364408493042f, 0.479893565177917f,\n  0.640732467174530f, 0.479785770177841f, 0.641100406646729f, 0.479677677154541f,\n  0.641468286514282f, 0.479569315910339f, 0.641836047172546f, 0.479460656642914f,\n  0.642203748226166f, 0.479351729154587f, 0.642571389675140f, 0.479242533445358f,\n  0.642938911914825f, 0.479133039712906f, 0.643306374549866f, 0.479023247957230f,\n  0.643673717975616f, 0.478913217782974f, 0.644041001796722f, 0.478802859783173f,\n  0.644408226013184f, 0.478692263364792f, 0.644775331020355f, 0.478581339120865f,\n  0.645142316818237f, 0.478470176458359f, 0.645509302616119f, 0.478358715772629f,\n  0.645876109600067f, 0.478246957063675f, 0.646242916584015f, 0.478134930133820f,\n  0.646609604358673f, 0.478022634983063f, 0.646976172924042f, 0.477910041809082f,\n  0.647342681884766f, 0.477797180414200f, 0.647709131240845f, 0.477684020996094f,\n  0.648075461387634f, 0.477570593357086f, 0.648441672325134f, 0.477456867694855f,\n  0.648807883262634f, 0.477342873811722f, 0.649173915386200f, 0.477228611707687f,\n  0.649539887905121f, 0.477114051580429f, 0.649905800819397f, 0.476999223232269f,\n  0.650271594524384f, 0.476884096860886f, 0.650637328624725f, 0.476768702268600f,\n  0.651003003120422f, 0.476653009653091f, 0.651368498802185f, 0.476537048816681f,\n  0.651733994483948f, 0.476420819759369f, 0.652099311351776f, 0.476304292678833f,\n  0.652464628219604f, 0.476187497377396f, 0.652829825878143f, 0.476070433855057f,\n  0.653194904327393f, 0.475953072309494f, 0.653559923171997f, 0.475835442543030f,\n  0.653924822807312f, 0.475717514753342f, 0.654289662837982f, 0.475599318742752f,\n  0.654654383659363f, 0.475480824708939f, 0.655019044876099f, 0.475362062454224f,\n  0.655383586883545f, 0.475243031978607f, 0.655748009681702f, 0.475123733282089f,\n  0.656112432479858f, 0.475004136562347f, 0.656476676464081f, 0.474884241819382f,\n  0.656840860843658f, 0.474764078855515f, 0.657204985618591f, 0.474643647670746f,\n  0.657568991184235f, 0.474522948265076f, 0.657932877540588f, 0.474401950836182f,\n  0.658296704292297f, 0.474280685186386f, 0.658660411834717f, 0.474159121513367f,\n  0.659024059772491f, 0.474037289619446f, 0.659387588500977f, 0.473915189504623f,\n  0.659750998020172f, 0.473792791366577f, 0.660114347934723f, 0.473670125007629f,\n  0.660477638244629f, 0.473547190427780f, 0.660840749740601f, 0.473423957824707f,\n  0.661203861236572f, 0.473300457000732f, 0.661566793918610f, 0.473176687955856f,\n  0.661929666996002f, 0.473052620887756f, 0.662292480468750f, 0.472928285598755f,\n  0.662655174732208f, 0.472803652286530f, 0.663017749786377f, 0.472678780555725f,\n  0.663380205631256f, 0.472553610801697f, 0.663742601871490f, 0.472428143024445f,\n  0.664104938507080f, 0.472302407026291f, 0.664467096328735f, 0.472176402807236f,\n  0.664829254150391f, 0.472050130367279f, 0.665191233158112f, 0.471923559904099f,\n  0.665553152561188f, 0.471796721220016f, 0.665914952754974f, 0.471669614315033f,\n  0.666276693344116f, 0.471542209386826f, 0.666638314723969f, 0.471414536237717f,\n  0.666999816894531f, 0.471286594867706f, 0.667361259460449f, 0.471158385276794f,\n  0.667722582817078f, 0.471029877662659f, 0.668083786964417f, 0.470901101827621f,\n  0.668444931507111f, 0.470772027969360f, 0.668805956840515f, 0.470642685890198f,\n  0.669166862964630f, 0.470513075590134f, 0.669527709484100f, 0.470383197069168f,\n  0.669888436794281f, 0.470253020524979f, 0.670249044895172f, 0.470122605562210f,\n  0.670609593391418f, 0.469991862773895f, 0.670970022678375f, 0.469860881567001f,\n  0.671330332756042f, 0.469729602336884f, 0.671690583229065f, 0.469598054885864f,\n  0.672050714492798f, 0.469466239213943f, 0.672410726547241f, 0.469334155321121f,\n  0.672770678997040f, 0.469201773405075f, 0.673130512237549f, 0.469069123268127f,\n  0.673490226268768f, 0.468936175107956f, 0.673849821090698f, 0.468802988529205f,\n  0.674209356307983f, 0.468669503927231f, 0.674568772315979f, 0.468535751104355f,\n  0.674928069114685f, 0.468401730060577f, 0.675287246704102f, 0.468267410993576f,\n  0.675646364688873f, 0.468132823705673f, 0.676005363464355f, 0.467997968196869f,\n  0.676364302635193f, 0.467862844467163f, 0.676723062992096f, 0.467727422714233f,\n  0.677081763744354f, 0.467591762542725f, 0.677440345287323f, 0.467455804347992f,\n  0.677798807621002f, 0.467319577932358f, 0.678157210350037f, 0.467183053493500f,\n  0.678515493869781f, 0.467046260833740f, 0.678873658180237f, 0.466909229755402f,\n  0.679231703281403f, 0.466771900653839f, 0.679589688777924f, 0.466634273529053f,\n  0.679947495460510f, 0.466496407985687f, 0.680305242538452f, 0.466358244419098f,\n  0.680662930011749f, 0.466219812631607f, 0.681020438671112f, 0.466081112623215f,\n  0.681377887725830f, 0.465942144393921f, 0.681735157966614f, 0.465802878141403f,\n  0.682092368602753f, 0.465663343667984f, 0.682449519634247f, 0.465523540973663f,\n  0.682806491851807f, 0.465383470058441f, 0.683163404464722f, 0.465243130922318f,\n  0.683520197868347f, 0.465102523565292f, 0.683876872062683f, 0.464961618185043f,\n  0.684233427047729f, 0.464820444583893f, 0.684589862823486f, 0.464679002761841f,\n  0.684946238994598f, 0.464537292718887f, 0.685302436351776f, 0.464395314455032f,\n  0.685658574104309f, 0.464253038167953f, 0.686014592647552f, 0.464110493659973f,\n  0.686370551586151f, 0.463967710733414f, 0.686726331710815f, 0.463824629783630f,\n  0.687082052230835f, 0.463681250810623f, 0.687437593936920f, 0.463537633419037f,\n  0.687793076038361f, 0.463393747806549f, 0.688148438930511f, 0.463249564170837f,\n  0.688503682613373f, 0.463105112314224f, 0.688858866691589f, 0.462960392236710f,\n  0.689213871955872f, 0.462815403938293f, 0.689568817615509f, 0.462670147418976f,\n  0.689923584461212f, 0.462524622678757f, 0.690278291702271f, 0.462378799915314f,\n  0.690632879734039f, 0.462232738733292f, 0.690987348556519f, 0.462086379528046f,\n  0.691341698169708f, 0.461939752101898f, 0.691695988178253f, 0.461792886257172f,\n  0.692050099372864f, 0.461645722389221f, 0.692404091358185f, 0.461498260498047f,\n  0.692758023738861f, 0.461350560188293f, 0.693111836910248f, 0.461202591657639f,\n  0.693465530872345f, 0.461054325103760f, 0.693819046020508f, 0.460905820131302f,\n  0.694172501564026f, 0.460757017135620f, 0.694525837898254f, 0.460607945919037f,\n  0.694879114627838f, 0.460458606481552f, 0.695232212543488f, 0.460309028625488f,\n  0.695585191249847f, 0.460159152746201f, 0.695938050746918f, 0.460008978843689f,\n  0.696290850639343f, 0.459858566522598f, 0.696643471717834f, 0.459707885980606f,\n  0.696996033191681f, 0.459556937217712f, 0.697348415851593f, 0.459405690431595f,\n  0.697700738906860f, 0.459254205226898f, 0.698052942752838f, 0.459102421998978f,\n  0.698404967784882f, 0.458950400352478f, 0.698756933212280f, 0.458798080682755f,\n  0.699108779430389f, 0.458645492792130f, 0.699460506439209f, 0.458492636680603f,\n  0.699812114238739f, 0.458339542150497f, 0.700163602828979f, 0.458186149597168f,\n  0.700514972209930f, 0.458032488822937f, 0.700866222381592f, 0.457878559827805f,\n  0.701217353343964f, 0.457724362611771f, 0.701568365097046f, 0.457569897174835f,\n  0.701919257640839f, 0.457415163516998f, 0.702270030975342f, 0.457260161638260f,\n  0.702620685100555f, 0.457104891538620f, 0.702971220016479f, 0.456949323415756f,\n  0.703321635723114f, 0.456793516874313f, 0.703671932220459f, 0.456637442111969f,\n  0.704022109508514f, 0.456481099128723f, 0.704372167587280f, 0.456324487924576f,\n  0.704722046852112f, 0.456167578697205f, 0.705071866512299f, 0.456010431051254f,\n  0.705421566963196f, 0.455853015184402f, 0.705771148204803f, 0.455695331096649f,\n  0.706120610237122f, 0.455537378787994f, 0.706469953060150f, 0.455379128456116f,\n  0.706819176673889f, 0.455220639705658f, 0.707168221473694f, 0.455061882734299f,\n  0.707517206668854f, 0.454902857542038f, 0.707866072654724f, 0.454743564128876f,\n  0.708214759826660f, 0.454584002494812f, 0.708563387393951f, 0.454424172639847f,\n  0.708911836147308f, 0.454264044761658f, 0.709260225296021f, 0.454103678464890f,\n  0.709608435630798f, 0.453943043947220f, 0.709956526756287f, 0.453782171010971f,\n  0.710304558277130f, 0.453621000051498f, 0.710652410984039f, 0.453459560871124f,\n  0.711000144481659f, 0.453297853469849f, 0.711347758769989f, 0.453135877847672f,\n  0.711695253849030f, 0.452973634004593f, 0.712042629718781f, 0.452811151742935f,\n  0.712389826774597f, 0.452648371458054f, 0.712736964225769f, 0.452485352754593f,\n  0.713083922863007f, 0.452322036027908f, 0.713430821895599f, 0.452158480882645f,\n  0.713777542114258f, 0.451994657516479f, 0.714124143123627f, 0.451830536127090f,\n  0.714470624923706f, 0.451666176319122f, 0.714816987514496f, 0.451501548290253f,\n  0.715163230895996f, 0.451336652040482f, 0.715509355068207f, 0.451171487569809f,\n  0.715855300426483f, 0.451006084680557f, 0.716201186180115f, 0.450840383768082f,\n  0.716546893119812f, 0.450674414634705f, 0.716892480850220f, 0.450508207082748f,\n  0.717238008975983f, 0.450341701507568f, 0.717583298683167f, 0.450174957513809f,\n  0.717928528785706f, 0.450007945299149f, 0.718273639678955f, 0.449840664863586f,\n  0.718618571758270f, 0.449673116207123f, 0.718963444232941f, 0.449505299329758f,\n  0.719308137893677f, 0.449337244033813f, 0.719652712345123f, 0.449168890714645f,\n  0.719997107982636f, 0.449000298976898f, 0.720341444015503f, 0.448831409215927f,\n  0.720685660839081f, 0.448662281036377f, 0.721029698848724f, 0.448492884635925f,\n  0.721373617649078f, 0.448323249816895f, 0.721717417240143f, 0.448153316974640f,\n  0.722061097621918f, 0.447983115911484f, 0.722404599189758f, 0.447812676429749f,\n  0.722747981548309f, 0.447641968727112f, 0.723091304302216f, 0.447470992803574f,\n  0.723434448242188f, 0.447299748659134f, 0.723777413368225f, 0.447128236293793f,\n  0.724120318889618f, 0.446956485509872f, 0.724463045597076f, 0.446784436702728f,\n  0.724805653095245f, 0.446612149477005f, 0.725148141384125f, 0.446439594030380f,\n  0.725490510463715f, 0.446266770362854f, 0.725832700729370f, 0.446093708276749f,\n  0.726174771785736f, 0.445920348167419f, 0.726516723632813f, 0.445746749639511f,\n  0.726858556270599f, 0.445572882890701f, 0.727200269699097f, 0.445398747920990f,\n  0.727541804313660f, 0.445224374532700f, 0.727883219718933f, 0.445049703121185f,\n  0.728224515914917f, 0.444874793291092f, 0.728565633296967f, 0.444699615240097f,\n  0.728906631469727f, 0.444524168968201f, 0.729247510433197f, 0.444348484277725f,\n  0.729588270187378f, 0.444172531366348f, 0.729928910732269f, 0.443996280431747f,\n  0.730269372463226f, 0.443819820880890f, 0.730609714984894f, 0.443643063306808f,\n  0.730949878692627f, 0.443466067314148f, 0.731289982795715f, 0.443288803100586f,\n  0.731629908084869f, 0.443111270666122f, 0.731969714164734f, 0.442933470010757f,\n  0.732309341430664f, 0.442755430936813f, 0.732648849487305f, 0.442577123641968f,\n  0.732988238334656f, 0.442398548126221f, 0.733327507972717f, 0.442219734191895f,\n  0.733666598796844f, 0.442040622234344f, 0.734005570411682f, 0.441861271858215f,\n  0.734344422817230f, 0.441681683063507f, 0.734683096408844f, 0.441501796245575f,\n  0.735021650791168f, 0.441321671009064f, 0.735360085964203f, 0.441141277551651f,\n  0.735698342323303f, 0.440960645675659f, 0.736036539077759f, 0.440779715776443f,\n  0.736374497413635f, 0.440598547458649f, 0.736712396144867f, 0.440417140722275f,\n  0.737050116062164f, 0.440235435962677f, 0.737387716770172f, 0.440053492784500f,\n  0.737725138664246f, 0.439871311187744f, 0.738062441349030f, 0.439688831567764f,\n  0.738399624824524f, 0.439506113529205f, 0.738736629486084f, 0.439323127269745f,\n  0.739073514938354f, 0.439139902591705f, 0.739410281181335f, 0.438956409692764f,\n  0.739746868610382f, 0.438772648572922f, 0.740083336830139f, 0.438588619232178f,\n  0.740419685840607f, 0.438404351472855f, 0.740755856037140f, 0.438219845294952f,\n  0.741091907024384f, 0.438035041093826f, 0.741427779197693f, 0.437849998474121f,\n  0.741763532161713f, 0.437664687633514f, 0.742099165916443f, 0.437479138374329f,\n  0.742434620857239f, 0.437293320894241f, 0.742769956588745f, 0.437107264995575f,\n  0.743105113506317f, 0.436920911073685f, 0.743440151214600f, 0.436734348535538f,\n  0.743775069713593f, 0.436547487974167f, 0.744109809398651f, 0.436360388994217f,\n  0.744444429874420f, 0.436173021793365f, 0.744778931140900f, 0.435985416173935f,\n  0.745113253593445f, 0.435797542333603f, 0.745447397232056f, 0.435609430074692f,\n  0.745781481266022f, 0.435421019792557f, 0.746115326881409f, 0.435232400894165f,\n  0.746449112892151f, 0.435043483972549f, 0.746782720088959f, 0.434854328632355f,\n  0.747116148471832f, 0.434664934873581f, 0.747449457645416f, 0.434475272893906f,\n  0.747782647609711f, 0.434285342693329f, 0.748115658760071f, 0.434095174074173f,\n  0.748448550701141f, 0.433904737234116f, 0.748781263828278f, 0.433714061975479f,\n  0.749113857746124f, 0.433523118495941f, 0.749446272850037f, 0.433331936597824f,\n  0.749778568744659f, 0.433140486478806f, 0.750110685825348f, 0.432948768138886f,\n  0.750442683696747f, 0.432756811380386f, 0.750774562358856f, 0.432564586400986f,\n  0.751106262207031f, 0.432372123003006f, 0.751437783241272f, 0.432179391384125f,\n  0.751769185066223f, 0.431986421346664f, 0.752100467681885f, 0.431793183088303f,\n  0.752431571483612f, 0.431599706411362f, 0.752762496471405f, 0.431405961513519f,\n  0.753093302249908f, 0.431211978197098f, 0.753423988819122f, 0.431017726659775f,\n  0.753754496574402f, 0.430823236703873f, 0.754084885120392f, 0.430628478527069f,\n  0.754415094852448f, 0.430433481931686f, 0.754745125770569f, 0.430238217115402f,\n  0.755075037479401f, 0.430042684078217f, 0.755404829978943f, 0.429846942424774f,\n  0.755734443664551f, 0.429650902748108f, 0.756063878536224f, 0.429454624652863f,\n  0.756393194198608f, 0.429258108139038f, 0.756722390651703f, 0.429061323404312f,\n  0.757051348686218f, 0.428864300251007f, 0.757380247116089f, 0.428667008876801f,\n  0.757708966732025f, 0.428469479084015f, 0.758037507534027f, 0.428271710872650f,\n  0.758365929126740f, 0.428073674440384f, 0.758694171905518f, 0.427875369787216f,\n  0.759022235870361f, 0.427676826715469f, 0.759350180625916f, 0.427478045225143f,\n  0.759678006172180f, 0.427278995513916f, 0.760005652904511f, 0.427079707384110f,\n  0.760333120822906f, 0.426880151033401f, 0.760660469532013f, 0.426680356264114f,\n  0.760987639427185f, 0.426480293273926f, 0.761314690113068f, 0.426279991865158f,\n  0.761641561985016f, 0.426079452037811f, 0.761968255043030f, 0.425878643989563f,\n  0.762294828891754f, 0.425677597522736f, 0.762621283531189f, 0.425476282835007f,\n  0.762947499752045f, 0.425274729728699f, 0.763273596763611f, 0.425072938203812f,\n  0.763599574565887f, 0.424870878458023f, 0.763925373554230f, 0.424668580293655f,\n  0.764250993728638f, 0.424466013908386f, 0.764576494693756f, 0.424263238906860f,\n  0.764901816844940f, 0.424060165882111f, 0.765226960182190f, 0.423856884241104f,\n  0.765551984310150f, 0.423653304576874f, 0.765876889228821f, 0.423449516296387f,\n  0.766201555728912f, 0.423245459794998f, 0.766526103019714f, 0.423041164875031f,\n  0.766850471496582f, 0.422836631536484f, 0.767174720764160f, 0.422631829977036f,\n  0.767498791217804f, 0.422426789999008f, 0.767822742462158f, 0.422221481800079f,\n  0.768146514892578f, 0.422015935182571f, 0.768470108509064f, 0.421810150146484f,\n  0.768793523311615f, 0.421604126691818f, 0.769116818904877f, 0.421397835016251f,\n  0.769439935684204f, 0.421191304922104f, 0.769762933254242f, 0.420984506607056f,\n  0.770085752010345f, 0.420777499675751f, 0.770408391952515f, 0.420570224523544f,\n  0.770730912685394f, 0.420362681150436f, 0.771053194999695f, 0.420154929161072f,\n  0.771375417709351f, 0.419946908950806f, 0.771697402000427f, 0.419738620519638f,\n  0.772019267082214f, 0.419530123472214f, 0.772340953350067f, 0.419321358203888f,\n  0.772662520408630f, 0.419112354516983f, 0.772983849048615f, 0.418903112411499f,\n  0.773305058479309f, 0.418693602085114f, 0.773626148700714f, 0.418483853340149f,\n  0.773947000503540f, 0.418273866176605f, 0.774267733097076f, 0.418063640594482f,\n  0.774588346481323f, 0.417853146791458f, 0.774908721446991f, 0.417642414569855f,\n  0.775228977203369f, 0.417431443929672f, 0.775549054145813f, 0.417220205068588f,\n  0.775869011878967f, 0.417008757591248f, 0.776188731193542f, 0.416797041893005f,\n  0.776508331298828f, 0.416585087776184f, 0.776827812194824f, 0.416372895240784f,\n  0.777147054672241f, 0.416160434484482f, 0.777466177940369f, 0.415947735309601f,\n  0.777785122394562f, 0.415734797716141f, 0.778103888034821f, 0.415521621704102f,\n  0.778422534465790f, 0.415308207273483f, 0.778741002082825f, 0.415094524621964f,\n  0.779059290885925f, 0.414880603551865f, 0.779377400875092f, 0.414666473865509f,\n  0.779695332050323f, 0.414452046155930f, 0.780013144016266f, 0.414237409830093f,\n  0.780330777168274f, 0.414022535085678f, 0.780648231506348f, 0.413807392120361f,\n  0.780965566635132f, 0.413592010736465f, 0.781282722949982f, 0.413376390933990f,\n  0.781599700450897f, 0.413160532712936f, 0.781916499137878f, 0.412944436073303f,\n  0.782233119010925f, 0.412728071212769f, 0.782549619674683f, 0.412511497735977f,\n  0.782865881919861f, 0.412294656038284f, 0.783182024955750f, 0.412077575922012f,\n  0.783498048782349f, 0.411860257387161f, 0.783813834190369f, 0.411642700433731f,\n  0.784129500389099f, 0.411424905061722f, 0.784444928169250f, 0.411206841468811f,\n  0.784760236740112f, 0.410988569259644f, 0.785075426101685f, 0.410770028829575f,\n  0.785390377044678f, 0.410551249980927f, 0.785705149173737f, 0.410332232713699f,\n  0.786019802093506f, 0.410112977027893f, 0.786334276199341f, 0.409893482923508f,\n  0.786648571491241f, 0.409673750400543f, 0.786962687969208f, 0.409453779459000f,\n  0.787276685237885f, 0.409233570098877f, 0.787590444087982f, 0.409013092517853f,\n  0.787904083728790f, 0.408792406320572f, 0.788217544555664f, 0.408571451902390f,\n  0.788530826568604f, 0.408350288867950f, 0.788843929767609f, 0.408128857612610f,\n  0.789156913757324f, 0.407907217741013f, 0.789469659328461f, 0.407685309648514f,\n  0.789782285690308f, 0.407463163137436f, 0.790094733238220f, 0.407240778207779f,\n  0.790407001972198f, 0.407018154859543f, 0.790719091892242f, 0.406795293092728f,\n  0.791031002998352f, 0.406572192907333f, 0.791342735290527f, 0.406348884105682f,\n  0.791654348373413f, 0.406125307083130f, 0.791965723037720f, 0.405901491641998f,\n  0.792276978492737f, 0.405677437782288f, 0.792588055133820f, 0.405453115701675f,\n  0.792898952960968f, 0.405228585004807f, 0.793209671974182f, 0.405003815889359f,\n  0.793520212173462f, 0.404778808355331f, 0.793830573558807f, 0.404553562402725f,\n  0.794140756130219f, 0.404328078031540f, 0.794450819492340f, 0.404102355241776f,\n  0.794760644435883f, 0.403876423835754f, 0.795070350170136f, 0.403650224208832f,\n  0.795379877090454f, 0.403423786163330f, 0.795689165592194f, 0.403197109699249f,\n  0.795998334884644f, 0.402970194816589f, 0.796307325363159f, 0.402743041515350f,\n  0.796616137027740f, 0.402515679597855f, 0.796924769878387f, 0.402288049459457f,\n  0.797233223915100f, 0.402060180902481f, 0.797541558742523f, 0.401832103729248f,\n  0.797849655151367f, 0.401603758335114f, 0.798157572746277f, 0.401375204324722f,\n  0.798465371131897f, 0.401146411895752f, 0.798772931098938f, 0.400917351245880f,\n  0.799080371856689f, 0.400688081979752f, 0.799387574195862f, 0.400458574295044f,\n  0.799694657325745f, 0.400228828191757f, 0.800001561641693f, 0.399998843669891f,\n  0.800308227539063f, 0.399768620729446f, 0.800614774227142f, 0.399538189172745f,\n  0.800921142101288f, 0.399307489395142f, 0.801227271556854f, 0.399076581001282f,\n  0.801533281803131f, 0.398845434188843f, 0.801839113235474f, 0.398614019155502f,\n  0.802144765853882f, 0.398382395505905f, 0.802450239658356f, 0.398150533437729f,\n  0.802755534648895f, 0.397918462753296f, 0.803060650825500f, 0.397686123847961f,\n  0.803365588188171f, 0.397453576326370f, 0.803670346736908f, 0.397220760583878f,\n  0.803974866867065f, 0.396987736225128f, 0.804279267787933f, 0.396754473447800f,\n  0.804583489894867f, 0.396520972251892f, 0.804887533187866f, 0.396287262439728f,\n  0.805191397666931f, 0.396053284406662f, 0.805495083332062f, 0.395819097757339f,\n  0.805798590183258f, 0.395584672689438f, 0.806101918220520f, 0.395350009202957f,\n  0.806405067443848f, 0.395115107297897f, 0.806707978248596f, 0.394879996776581f,\n  0.807010769844055f, 0.394644618034363f, 0.807313382625580f, 0.394409030675888f,\n  0.807615816593170f, 0.394173204898834f, 0.807918012142181f, 0.393937170505524f,\n  0.808220088481903f, 0.393700867891312f, 0.808521986007690f, 0.393464356660843f,\n  0.808823645114899f, 0.393227607011795f, 0.809125185012817f, 0.392990618944168f,\n  0.809426486492157f, 0.392753422260284f, 0.809727668762207f, 0.392515957355499f,\n  0.810028612613678f, 0.392278283834457f, 0.810329377651215f, 0.392040401697159f,\n  0.810629963874817f, 0.391802251338959f, 0.810930430889130f, 0.391563892364502f,\n  0.811230659484863f, 0.391325294971466f, 0.811530709266663f, 0.391086459159851f,\n  0.811830580234528f, 0.390847414731979f, 0.812130272388458f, 0.390608131885529f,\n  0.812429726123810f, 0.390368610620499f, 0.812729060649872f, 0.390128880739212f,\n  0.813028216362000f, 0.389888882637024f, 0.813327133655548f, 0.389648675918579f,\n  0.813625931739807f, 0.389408260583878f, 0.813924491405487f, 0.389167606830597f,\n  0.814222872257233f, 0.388926714658737f, 0.814521074295044f, 0.388685584068298f,\n  0.814819097518921f, 0.388444244861603f, 0.815116941928864f, 0.388202667236328f,\n  0.815414607524872f, 0.387960851192474f, 0.815712094306946f, 0.387718826532364f,\n  0.816009342670441f, 0.387476563453674f, 0.816306471824646f, 0.387234061956406f,\n  0.816603362560272f, 0.386991351842880f, 0.816900074481964f, 0.386748403310776f,\n  0.817196667194366f, 0.386505216360092f, 0.817493021488190f, 0.386261820793152f,\n  0.817789137363434f, 0.386018186807632f, 0.818085134029388f, 0.385774344205856f,\n  0.818380951881409f, 0.385530263185501f, 0.818676531314850f, 0.385285943746567f,\n  0.818971931934357f, 0.385041415691376f, 0.819267153739929f, 0.384796649217606f,\n  0.819562196731567f, 0.384551674127579f, 0.819857060909271f, 0.384306460618973f,\n  0.820151746273041f, 0.384061008691788f, 0.820446193218231f, 0.383815348148346f,\n  0.820740520954132f, 0.383569449186325f, 0.821034610271454f, 0.383323341608047f,\n  0.821328520774841f, 0.383076995611191f, 0.821622252464294f, 0.382830440998077f,\n  0.821915745735168f, 0.382583618164063f, 0.822209119796753f, 0.382336616516113f,\n  0.822502255439758f, 0.382089376449585f, 0.822795212268829f, 0.381841897964478f,\n  0.823087990283966f, 0.381594210863113f, 0.823380589485168f, 0.381346285343170f,\n  0.823673009872437f, 0.381098151206970f, 0.823965191841125f, 0.380849778652191f,\n  0.824257194995880f, 0.380601197481155f, 0.824549019336700f, 0.380352377891541f,\n  0.824840664863586f, 0.380103349685669f, 0.825132071971893f, 0.379854083061218f,\n  0.825423359870911f, 0.379604607820511f, 0.825714409351349f, 0.379354894161224f,\n  0.826005280017853f, 0.379104942083359f, 0.826295912265778f, 0.378854811191559f,\n  0.826586425304413f, 0.378604412078857f, 0.826876699924469f, 0.378353834152222f,\n  0.827166795730591f, 0.378102988004684f, 0.827456712722778f, 0.377851963043213f,\n  0.827746450901031f, 0.377600699663162f, 0.828035950660706f, 0.377349197864532f,\n  0.828325271606445f, 0.377097487449646f, 0.828614413738251f, 0.376845568418503f,\n  0.828903317451477f, 0.376593410968781f, 0.829192101955414f, 0.376341015100479f,\n  0.829480648040771f, 0.376088410615921f, 0.829769015312195f, 0.375835597515106f,\n  0.830057144165039f, 0.375582575798035f, 0.830345153808594f, 0.375329315662384f,\n  0.830632925033569f, 0.375075817108154f, 0.830920517444611f, 0.374822109937668f,\n  0.831207871437073f, 0.374568194150925f, 0.831495106220245f, 0.374314039945602f,\n  0.831782102584839f, 0.374059677124023f, 0.832068860530853f, 0.373805105686188f,\n  0.832355499267578f, 0.373550295829773f, 0.832641899585724f, 0.373295277357101f,\n  0.832928121089935f, 0.373040050268173f, 0.833214163780212f, 0.372784584760666f,\n  0.833499968051910f, 0.372528880834579f, 0.833785593509674f, 0.372272998094559f,\n  0.834071040153503f, 0.372016876935959f, 0.834356248378754f, 0.371760547161102f,\n  0.834641277790070f, 0.371503978967667f, 0.834926128387451f, 0.371247202157974f,\n  0.835210800170898f, 0.370990216732025f, 0.835495233535767f, 0.370732992887497f,\n  0.835779488086700f, 0.370475560426712f, 0.836063504219055f, 0.370217919349670f,\n  0.836347401142120f, 0.369960039854050f, 0.836631059646606f, 0.369701951742172f,\n  0.836914479732513f, 0.369443655014038f, 0.837197780609131f, 0.369185149669647f,\n  0.837480843067169f, 0.368926405906677f, 0.837763667106628f, 0.368667453527451f,\n  0.838046371936798f, 0.368408292531967f, 0.838328838348389f, 0.368148893117905f,\n  0.838611066341400f, 0.367889285087585f, 0.838893175125122f, 0.367629468441010f,\n  0.839175045490265f, 0.367369443178177f, 0.839456677436829f, 0.367109179496765f,\n  0.839738130569458f, 0.366848707199097f, 0.840019404888153f, 0.366588026285172f,\n  0.840300500392914f, 0.366327136754990f, 0.840581357479095f, 0.366066008806229f,\n  0.840862035751343f, 0.365804702043533f, 0.841142535209656f, 0.365543156862259f,\n  0.841422796249390f, 0.365281373262405f, 0.841702818870544f, 0.365019410848618f,\n  0.841982722282410f, 0.364757210016251f, 0.842262387275696f, 0.364494800567627f,\n  0.842541813850403f, 0.364232182502747f, 0.842821121215820f, 0.363969355821610f,\n  0.843100130558014f, 0.363706320524216f, 0.843379020690918f, 0.363443046808243f,\n  0.843657672405243f, 0.363179564476013f, 0.843936145305634f, 0.362915903329849f,\n  0.844214379787445f, 0.362651973962784f, 0.844492435455322f, 0.362387865781784f,\n  0.844770252704620f, 0.362123548984528f, 0.845047891139984f, 0.361858993768692f,\n  0.845325350761414f, 0.361594229936600f, 0.845602571964264f, 0.361329287290573f,\n  0.845879614353180f, 0.361064106225967f, 0.846156477928162f, 0.360798716545105f,\n  0.846433103084564f, 0.360533088445663f, 0.846709489822388f, 0.360267281532288f,\n  0.846985757350922f, 0.360001266002655f, 0.847261726856232f, 0.359735012054443f,\n  0.847537577152252f, 0.359468549489975f, 0.847813189029694f, 0.359201908111572f,\n  0.848088562488556f, 0.358935028314590f, 0.848363757133484f, 0.358667939901352f,\n  0.848638772964478f, 0.358400642871857f, 0.848913550376892f, 0.358133137226105f,\n  0.849188148975372f, 0.357865422964096f, 0.849462509155273f, 0.357597470283508f,\n  0.849736690521240f, 0.357329338788986f, 0.850010633468628f, 0.357060998678207f,\n  0.850284397602081f, 0.356792420148849f, 0.850557923316956f, 0.356523662805557f,\n  0.850831270217896f, 0.356254696846008f, 0.851104438304901f, 0.355985492467880f,\n  0.851377367973328f, 0.355716109275818f, 0.851650118827820f, 0.355446487665176f,\n  0.851922631263733f, 0.355176687240601f, 0.852194905281067f, 0.354906648397446f,\n  0.852467060089111f, 0.354636400938034f, 0.852738916873932f, 0.354365974664688f,\n  0.853010654449463f, 0.354095309972763f, 0.853282094001770f, 0.353824466466904f,\n  0.853553414344788f, 0.353553384542465f, 0.853824436664581f, 0.353282123804092f,\n  0.854095339775085f, 0.353010624647141f, 0.854365944862366f, 0.352738946676254f,\n  0.854636430740356f, 0.352467030286789f, 0.854906618595123f, 0.352194935083389f,\n  0.855176687240601f, 0.351922631263733f, 0.855446517467499f, 0.351650089025497f,\n  0.855716109275818f, 0.351377367973328f, 0.855985522270203f, 0.351104438304901f,\n  0.856254696846008f, 0.350831300020218f, 0.856523692607880f, 0.350557953119278f,\n  0.856792449951172f, 0.350284397602081f, 0.857060968875885f, 0.350010633468628f,\n  0.857329368591309f, 0.349736660718918f, 0.857597470283508f, 0.349462509155273f,\n  0.857865393161774f, 0.349188119173050f, 0.858133137226105f, 0.348913550376892f,\n  0.858400642871857f, 0.348638743162155f, 0.858667910099030f, 0.348363757133484f,\n  0.858934998512268f, 0.348088562488556f, 0.859201908111572f, 0.347813159227371f,\n  0.859468579292297f, 0.347537547349930f, 0.859735012054443f, 0.347261756658554f,\n  0.860001266002655f, 0.346985727548599f, 0.860267281532288f, 0.346709519624710f,\n  0.860533118247986f, 0.346433073282242f, 0.860798716545105f, 0.346156448125839f,\n  0.861064076423645f, 0.345879614353180f, 0.861329257488251f, 0.345602601766586f,\n  0.861594259738922f, 0.345325350761414f, 0.861859023571014f, 0.345047920942307f,\n  0.862123548984528f, 0.344770282506943f, 0.862387895584106f, 0.344492435455322f,\n  0.862652003765106f, 0.344214379787445f, 0.862915873527527f, 0.343936115503311f,\n  0.863179564476013f, 0.343657672405243f, 0.863443076610565f, 0.343379020690918f,\n  0.863706290721893f, 0.343100160360336f, 0.863969385623932f, 0.342821091413498f,\n  0.864232182502747f, 0.342541843652725f, 0.864494800567627f, 0.342262357473373f,\n  0.864757239818573f, 0.341982692480087f, 0.865019381046295f, 0.341702848672867f,\n  0.865281403064728f, 0.341422766447067f, 0.865543127059937f, 0.341142505407333f,\n  0.865804672241211f, 0.340862035751343f, 0.866066038608551f, 0.340581357479095f,\n  0.866327106952667f, 0.340300500392914f, 0.866588056087494f, 0.340019434690475f,\n  0.866848707199097f, 0.339738160371780f, 0.867109179496765f, 0.339456677436829f,\n  0.867369413375854f, 0.339175015687943f, 0.867629468441010f, 0.338893145322800f,\n  0.867889285087585f, 0.338611096143723f, 0.868148922920227f, 0.338328808546066f,\n  0.868408262729645f, 0.338046342134476f, 0.868667483329773f, 0.337763696908951f,\n  0.868926405906677f, 0.337480813264847f, 0.869185149669647f, 0.337197750806808f,\n  0.869443655014038f, 0.336914509534836f, 0.869701981544495f, 0.336631029844284f,\n  0.869960069656372f, 0.336347371339798f, 0.870217919349670f, 0.336063534021378f,\n  0.870475590229034f, 0.335779488086700f, 0.870733022689819f, 0.335495233535767f,\n  0.870990216732025f, 0.335210770368576f, 0.871247172355652f, 0.334926128387451f,\n  0.871503949165344f, 0.334641307592392f, 0.871760547161102f, 0.334356248378754f,\n  0.872016847133636f, 0.334071010351181f, 0.872272968292236f, 0.333785593509674f,\n  0.872528910636902f, 0.333499968051910f, 0.872784554958344f, 0.333214133977890f,\n  0.873040020465851f, 0.332928121089935f, 0.873295307159424f, 0.332641899585724f,\n  0.873550295829773f, 0.332355499267578f, 0.873805105686188f, 0.332068890333176f,\n  0.874059677124023f, 0.331782072782516f, 0.874314069747925f, 0.331495076417923f,\n  0.874568223953247f, 0.331207901239395f, 0.874822139739990f, 0.330920487642288f,\n  0.875075817108154f, 0.330632925033569f, 0.875329315662384f, 0.330345153808594f,\n  0.875582575798035f, 0.330057173967361f, 0.875835597515106f, 0.329769015312195f,\n  0.876088440418243f, 0.329480648040771f, 0.876341044902802f, 0.329192101955414f,\n  0.876593410968781f, 0.328903347253799f, 0.876845538616180f, 0.328614413738251f,\n  0.877097487449646f, 0.328325271606445f, 0.877349197864532f, 0.328035950660706f,\n  0.877600669860840f, 0.327746421098709f, 0.877851963043213f, 0.327456712722778f,\n  0.878103017807007f, 0.327166795730591f, 0.878353834152222f, 0.326876699924469f,\n  0.878604412078857f, 0.326586425304413f, 0.878854811191559f, 0.326295942068100f,\n  0.879104971885681f, 0.326005280017853f, 0.879354894161224f, 0.325714409351349f,\n  0.879604578018188f, 0.325423330068588f, 0.879854083061218f, 0.325132101774216f,\n  0.880103349685669f, 0.324840664863586f, 0.880352377891541f, 0.324549019336700f,\n  0.880601167678833f, 0.324257194995880f, 0.880849778652191f, 0.323965191841125f,\n  0.881098151206970f, 0.323672980070114f, 0.881346285343170f, 0.323380589485168f,\n  0.881594181060791f, 0.323088020086288f, 0.881841897964478f, 0.322795242071152f,\n  0.882089376449585f, 0.322502255439758f, 0.882336616516113f, 0.322209119796753f,\n  0.882583618164063f, 0.321915775537491f, 0.882830440998077f, 0.321622252464294f,\n  0.883076965808868f, 0.321328520774841f, 0.883323311805725f, 0.321034610271454f,\n  0.883569478988647f, 0.320740520954132f, 0.883815348148346f, 0.320446223020554f,\n  0.884061038494110f, 0.320151746273041f, 0.884306430816650f, 0.319857090711594f,\n  0.884551644325256f, 0.319562226533890f, 0.884796679019928f, 0.319267183542252f,\n  0.885041415691376f, 0.318971961736679f, 0.885285973548889f, 0.318676531314850f,\n  0.885530233383179f, 0.318380922079086f, 0.885774314403534f, 0.318085134029388f,\n  0.886018216609955f, 0.317789167165756f, 0.886261820793152f, 0.317492991685867f,\n  0.886505246162415f, 0.317196637392044f, 0.886748373508453f, 0.316900104284287f,\n  0.886991322040558f, 0.316603392362595f, 0.887234091758728f, 0.316306471824646f,\n  0.887476563453674f, 0.316009372472763f, 0.887718796730042f, 0.315712094306946f,\n  0.887960851192474f, 0.315414607524872f, 0.888202667236328f, 0.315116971731186f,\n  0.888444244861603f, 0.314819127321243f, 0.888685584068298f, 0.314521104097366f,\n  0.888926684856415f, 0.314222872257233f, 0.889167606830597f, 0.313924491405487f,\n  0.889408230781555f, 0.313625901937485f, 0.889648675918579f, 0.313327133655548f,\n  0.889888882637024f, 0.313028186559677f, 0.890128850936890f, 0.312729060649872f,\n  0.890368640422821f, 0.312429755926132f, 0.890608131885529f, 0.312130242586136f,\n  0.890847444534302f, 0.311830550432205f, 0.891086459159851f, 0.311530679464340f,\n  0.891325294971466f, 0.311230629682541f, 0.891563892364502f, 0.310930401086807f,\n  0.891802251338959f, 0.310629993677139f, 0.892040371894836f, 0.310329377651215f,\n  0.892278313636780f, 0.310028612613678f, 0.892515957355499f, 0.309727638959885f,\n  0.892753422260284f, 0.309426486492157f, 0.892990648746490f, 0.309125155210495f,\n  0.893227577209473f, 0.308823645114899f, 0.893464326858521f, 0.308521956205368f,\n  0.893700897693634f, 0.308220088481903f, 0.893937170505524f, 0.307918041944504f,\n  0.894173204898834f, 0.307615786790848f, 0.894409060478210f, 0.307313382625580f,\n  0.894644618034363f, 0.307010769844055f, 0.894879996776581f, 0.306708008050919f,\n  0.895115137100220f, 0.306405037641525f, 0.895349979400635f, 0.306101888418198f,\n  0.895584642887115f, 0.305798590183258f, 0.895819067955017f, 0.305495083332062f,\n  0.896053314208984f, 0.305191397666931f, 0.896287262439728f, 0.304887533187866f,\n  0.896520972251892f, 0.304583519697189f, 0.896754503250122f, 0.304279297590256f,\n  0.896987736225128f, 0.303974896669388f, 0.897220790386200f, 0.303670316934586f,\n  0.897453546524048f, 0.303365558385849f, 0.897686123847961f, 0.303060621023178f,\n  0.897918462753296f, 0.302755534648895f, 0.898150563240051f, 0.302450239658356f,\n  0.898382425308228f, 0.302144765853882f, 0.898614048957825f, 0.301839113235474f,\n  0.898845434188843f, 0.301533311605453f, 0.899076581001282f, 0.301227301359177f,\n  0.899307489395142f, 0.300921112298965f, 0.899538159370422f, 0.300614774227142f,\n  0.899768650531769f, 0.300308227539063f, 0.899998843669891f, 0.300001531839371f,\n  0.900228857994080f, 0.299694657325745f, 0.900458574295044f, 0.299387603998184f,\n  0.900688111782074f, 0.299080342054367f, 0.900917351245880f, 0.298772931098938f,\n  0.901146411895752f, 0.298465341329575f, 0.901375174522400f, 0.298157602548599f,\n  0.901603758335114f, 0.297849655151367f, 0.901832103729248f, 0.297541528940201f,\n  0.902060210704803f, 0.297233253717422f, 0.902288019657135f, 0.296924799680710f,\n  0.902515649795532f, 0.296616137027740f, 0.902743041515350f, 0.296307325363159f,\n  0.902970194816589f, 0.295998334884644f, 0.903197109699249f, 0.295689195394516f,\n  0.903423786163330f, 0.295379847288132f, 0.903650224208832f, 0.295070350170136f,\n  0.903876423835754f, 0.294760644435883f, 0.904102385044098f, 0.294450789690018f,\n  0.904328107833862f, 0.294140785932541f, 0.904553592205048f, 0.293830573558807f,\n  0.904778838157654f, 0.293520182371140f, 0.905003845691681f, 0.293209642171860f,\n  0.905228614807129f, 0.292898923158646f, 0.905453145503998f, 0.292588025331497f,\n  0.905677437782288f, 0.292276978492737f, 0.905901491641998f, 0.291965723037720f,\n  0.906125307083130f, 0.291654318571091f, 0.906348884105682f, 0.291342735290527f,\n  0.906572222709656f, 0.291031002998352f, 0.906795322895050f, 0.290719062089920f,\n  0.907018184661865f, 0.290406972169876f, 0.907240808010101f, 0.290094703435898f,\n  0.907463192939758f, 0.289782285690308f, 0.907685279846191f, 0.289469659328461f,\n  0.907907187938690f, 0.289156883955002f, 0.908128857612610f, 0.288843959569931f,\n  0.908350288867950f, 0.288530826568604f, 0.908571481704712f, 0.288217544555664f,\n  0.908792436122894f, 0.287904083728790f, 0.909013092517853f, 0.287590473890305f,\n  0.909233570098877f, 0.287276685237885f, 0.909453809261322f, 0.286962717771530f,\n  0.909673750400543f, 0.286648571491241f, 0.909893512725830f, 0.286334276199341f,\n  0.910112977027893f, 0.286019802093506f, 0.910332262516022f, 0.285705178976059f,\n  0.910551249980927f, 0.285390377044678f, 0.910769999027252f, 0.285075396299362f,\n  0.910988569259644f, 0.284760266542435f, 0.911206841468811f, 0.284444957971573f,\n  0.911424875259399f, 0.284129470586777f, 0.911642670631409f, 0.283813834190369f,\n  0.911860227584839f, 0.283498018980026f, 0.912077546119690f, 0.283182054758072f,\n  0.912294626235962f, 0.282865911722183f, 0.912511467933655f, 0.282549589872360f,\n  0.912728071212769f, 0.282233119010925f, 0.912944436073303f, 0.281916469335556f,\n  0.913160502910614f, 0.281599670648575f, 0.913376390933990f, 0.281282693147659f,\n  0.913592040538788f, 0.280965566635132f, 0.913807392120361f, 0.280648261308670f,\n  0.914022505283356f, 0.280330777168274f, 0.914237439632416f, 0.280013144016266f,\n  0.914452075958252f, 0.279695361852646f, 0.914666473865509f, 0.279377400875092f,\n  0.914880633354187f, 0.279059261083603f, 0.915094554424286f, 0.278740972280502f,\n  0.915308177471161f, 0.278422504663467f, 0.915521621704102f, 0.278103888034821f,\n  0.915734827518463f, 0.277785122394562f, 0.915947735309601f, 0.277466177940369f,\n  0.916160404682159f, 0.277147054672241f, 0.916372895240784f, 0.276827782392502f,\n  0.916585087776184f, 0.276508361101151f, 0.916797041893005f, 0.276188760995865f,\n  0.917008757591248f, 0.275868982076645f, 0.917220234870911f, 0.275549083948135f,\n  0.917431414127350f, 0.275228977203369f, 0.917642414569855f, 0.274908751249313f,\n  0.917853116989136f, 0.274588316679001f, 0.918063640594482f, 0.274267762899399f,\n  0.918273866176605f, 0.273947030305862f, 0.918483853340149f, 0.273626148700714f,\n  0.918693602085114f, 0.273305088281631f, 0.918903112411499f, 0.272983878850937f,\n  0.919112324714661f, 0.272662490606308f, 0.919321358203888f, 0.272340953350067f,\n  0.919530093669891f, 0.272019267082214f, 0.919738650321960f, 0.271697402000427f,\n  0.919946908950806f, 0.271375387907028f, 0.920154929161072f, 0.271053224802017f,\n  0.920362710952759f, 0.270730882883072f, 0.920570194721222f, 0.270408391952515f,\n  0.920777499675751f, 0.270085722208023f, 0.920984506607056f, 0.269762933254242f,\n  0.921191275119781f, 0.269439965486526f, 0.921397805213928f, 0.269116818904877f,\n  0.921604096889496f, 0.268793523311615f, 0.921810150146484f, 0.268470078706741f,\n  0.922015964984894f, 0.268146485090256f, 0.922221481800079f, 0.267822742462158f,\n  0.922426760196686f, 0.267498821020126f, 0.922631800174713f, 0.267174720764160f,\n  0.922836601734161f, 0.266850501298904f, 0.923041164875031f, 0.266526103019714f,\n  0.923245489597321f, 0.266201555728912f, 0.923449516296387f, 0.265876859426498f,\n  0.923653304576874f, 0.265552014112473f, 0.923856854438782f, 0.265226989984512f,\n  0.924060165882111f, 0.264901816844940f, 0.924263238906860f, 0.264576494693756f,\n  0.924466013908386f, 0.264250993728638f, 0.924668610095978f, 0.263925373554230f,\n  0.924870908260345f, 0.263599574565887f, 0.925072908401489f, 0.263273626565933f,\n  0.925274729728699f, 0.262947499752045f, 0.925476312637329f, 0.262621253728867f,\n  0.925677597522736f, 0.262294828891754f, 0.925878643989563f, 0.261968284845352f,\n  0.926079452037811f, 0.261641561985016f, 0.926280021667480f, 0.261314690113068f,\n  0.926480293273926f, 0.260987639427185f, 0.926680326461792f, 0.260660469532013f,\n  0.926880121231079f, 0.260333120822906f, 0.927079677581787f, 0.260005623102188f,\n  0.927278995513916f, 0.259678006172180f, 0.927478015422821f, 0.259350210428238f,\n  0.927676856517792f, 0.259022265672684f, 0.927875399589539f, 0.258694142103195f,\n  0.928073644638062f, 0.258365899324417f, 0.928271710872650f, 0.258037507534027f,\n  0.928469479084015f, 0.257708936929703f, 0.928667008876801f, 0.257380217313766f,\n  0.928864300251007f, 0.257051378488541f, 0.929061353206635f, 0.256722360849380f,\n  0.929258108139038f, 0.256393194198608f, 0.929454624652863f, 0.256063878536224f,\n  0.929650902748108f, 0.255734413862228f, 0.929846942424774f, 0.255404800176620f,\n  0.930042684078217f, 0.255075037479401f, 0.930238187313080f, 0.254745125770569f,\n  0.930433452129364f, 0.254415065050125f, 0.930628478527069f, 0.254084855318069f,\n  0.930823206901550f, 0.253754496574402f, 0.931017756462097f, 0.253423988819122f,\n  0.931211948394775f, 0.253093332052231f, 0.931405961513519f, 0.252762526273727f,\n  0.931599736213684f, 0.252431541681290f, 0.931793212890625f, 0.252100437879562f,\n  0.931986451148987f, 0.251769185066223f, 0.932179391384125f, 0.251437783241272f,\n  0.932372152805328f, 0.251106232404709f, 0.932564616203308f, 0.250774532556534f,\n  0.932756841182709f, 0.250442683696747f, 0.932948768138886f, 0.250110685825348f,\n  0.933140456676483f, 0.249778553843498f, 0.933331906795502f, 0.249446272850037f,\n  0.933523118495941f, 0.249113827943802f, 0.933714091777802f, 0.248781248927116f,\n  0.933904767036438f, 0.248448520898819f, 0.934095203876495f, 0.248115643858910f,\n  0.934285342693329f, 0.247782632708550f, 0.934475243091583f, 0.247449472546577f,\n  0.934664964675903f, 0.247116148471832f, 0.934854328632355f, 0.246782705187798f,\n  0.935043513774872f, 0.246449097990990f, 0.935232400894165f, 0.246115356683731f,\n  0.935421049594879f, 0.245781451463699f, 0.935609400272369f, 0.245447427034378f,\n  0.935797572135925f, 0.245113238692284f, 0.935985386371613f, 0.244778916239738f,\n  0.936173021793365f, 0.244444444775581f, 0.936360359191895f, 0.244109839200974f,\n  0.936547517776489f, 0.243775084614754f, 0.936734318733215f, 0.243440181016922f,\n  0.936920940876007f, 0.243105143308640f, 0.937107264995575f, 0.242769956588745f,\n  0.937293350696564f, 0.242434620857239f, 0.937479138374329f, 0.242099151015282f,\n  0.937664687633514f, 0.241763532161713f, 0.937849998474121f, 0.241427779197693f,\n  0.938035070896149f, 0.241091892123222f, 0.938219845294952f, 0.240755841135979f,\n  0.938404381275177f, 0.240419670939446f, 0.938588619232178f, 0.240083336830139f,\n  0.938772618770599f, 0.239746883511543f, 0.938956379890442f, 0.239410281181335f,\n  0.939139902591705f, 0.239073529839516f, 0.939323127269745f, 0.238736644387245f,\n  0.939506113529205f, 0.238399609923363f, 0.939688861370087f, 0.238062441349030f,\n  0.939871311187744f, 0.237725138664246f, 0.940053522586823f, 0.237387686967850f,\n  0.940235435962677f, 0.237050101161003f, 0.940417110919952f, 0.236712381243706f,\n  0.940598547458649f, 0.236374512314796f, 0.940779745578766f, 0.236036509275436f,\n  0.940960645675659f, 0.235698372125626f, 0.941141307353973f, 0.235360085964203f,\n  0.941321671009064f, 0.235021665692329f, 0.941501796245575f, 0.234683111310005f,\n  0.941681683063507f, 0.234344407916069f, 0.941861271858215f, 0.234005570411682f,\n  0.942040622234344f, 0.233666598796844f, 0.942219734191895f, 0.233327493071556f,\n  0.942398548126221f, 0.232988253235817f, 0.942577123641968f, 0.232648864388466f,\n  0.942755401134491f, 0.232309341430664f, 0.942933499813080f, 0.231969684362412f,\n  0.943111240863800f, 0.231629893183708f, 0.943288803100586f, 0.231289967894554f,\n  0.943466067314148f, 0.230949893593788f, 0.943643093109131f, 0.230609700083733f,\n  0.943819820880890f, 0.230269357562065f, 0.943996310234070f, 0.229928880929947f,\n  0.944172501564026f, 0.229588270187378f, 0.944348454475403f, 0.229247525334358f,\n  0.944524168968201f, 0.228906646370888f, 0.944699645042419f, 0.228565633296967f,\n  0.944874763488770f, 0.228224486112595f, 0.945049703121185f, 0.227883204817772f,\n  0.945224344730377f, 0.227541789412498f, 0.945398747920990f, 0.227200239896774f,\n  0.945572853088379f, 0.226858556270599f, 0.945746779441834f, 0.226516738533974f,\n  0.945920348167419f, 0.226174786686897f, 0.946093678474426f, 0.225832715630531f,\n  0.946266770362854f, 0.225490495562553f, 0.946439623832703f, 0.225148141384125f,\n  0.946612179279327f, 0.224805667996407f, 0.946784436702728f, 0.224463045597076f,\n  0.946956455707550f, 0.224120303988457f, 0.947128236293793f, 0.223777428269386f,\n  0.947299718856812f, 0.223434418439865f, 0.947470963001251f, 0.223091274499893f,\n  0.947641968727112f, 0.222748011350632f, 0.947812676429749f, 0.222404599189758f,\n  0.947983145713806f, 0.222061067819595f, 0.948153316974640f, 0.221717402338982f,\n  0.948323249816895f, 0.221373617649078f, 0.948492884635925f, 0.221029683947563f,\n  0.948662281036377f, 0.220685631036758f, 0.948831439018250f, 0.220341444015503f,\n  0.949000298976898f, 0.219997137784958f, 0.949168920516968f, 0.219652697443962f,\n  0.949337244033813f, 0.219308122992516f, 0.949505329132080f, 0.218963414430618f,\n  0.949673116207123f, 0.218618586659431f, 0.949840664863586f, 0.218273624777794f,\n  0.950007975101471f, 0.217928543686867f, 0.950174987316132f, 0.217583328485489f,\n  0.950341701507568f, 0.217237979173660f, 0.950508177280426f, 0.216892510652542f,\n  0.950674414634705f, 0.216546908020973f, 0.950840353965759f, 0.216201186180115f,\n  0.951006054878235f, 0.215855330228806f, 0.951171517372131f, 0.215509355068207f,\n  0.951336681842804f, 0.215163245797157f, 0.951501548290253f, 0.214817002415657f,\n  0.951666176319122f, 0.214470639824867f, 0.951830565929413f, 0.214124158024788f,\n  0.951994657516479f, 0.213777542114258f, 0.952158451080322f, 0.213430806994438f,\n  0.952322065830231f, 0.213083937764168f, 0.952485322952271f, 0.212736949324608f,\n  0.952648401260376f, 0.212389841675758f, 0.952811121940613f, 0.212042599916458f,\n  0.952973663806915f, 0.211695238947868f, 0.953135907649994f, 0.211347743868828f,\n  0.953297853469849f, 0.211000129580498f, 0.953459560871124f, 0.210652396082878f,\n  0.953620970249176f, 0.210304543375969f, 0.953782141208649f, 0.209956556558609f,\n  0.953943073749542f, 0.209608450531960f, 0.954103708267212f, 0.209260210394859f,\n  0.954264044761658f, 0.208911851048470f, 0.954424142837524f, 0.208563387393951f,\n  0.954584002494812f, 0.208214774727821f, 0.954743564128876f, 0.207866057753563f,\n  0.954902827739716f, 0.207517206668854f, 0.955061912536621f, 0.207168251276016f,\n  0.955220639705658f, 0.206819161772728f, 0.955379128456116f, 0.206469938158989f,\n  0.955537378787994f, 0.206120610237122f, 0.955695331096649f, 0.205771163105965f,\n  0.955853044986725f, 0.205421581864357f, 0.956010460853577f, 0.205071896314621f,\n  0.956167578697205f, 0.204722076654434f, 0.956324458122253f, 0.204372137784958f,\n  0.956481099128723f, 0.204022079706192f, 0.956637442111969f, 0.203671902418137f,\n  0.956793546676636f, 0.203321605920792f, 0.956949353218079f, 0.202971190214157f,\n  0.957104861736298f, 0.202620655298233f, 0.957260131835938f, 0.202270001173019f,\n  0.957415163516998f, 0.201919227838516f, 0.957569897174835f, 0.201568335294724f,\n  0.957724332809448f, 0.201217323541641f, 0.957878530025482f, 0.200866192579269f,\n  0.958032488822937f, 0.200514942407608f, 0.958186149597168f, 0.200163587927818f,\n  0.958339512348175f, 0.199812099337578f, 0.958492636680603f, 0.199460506439209f,\n  0.958645522594452f, 0.199108779430389f, 0.958798050880432f, 0.198756948113441f,\n  0.958950400352478f, 0.198404997587204f, 0.959102451801300f, 0.198052927851677f,\n  0.959254205226898f, 0.197700738906860f, 0.959405720233917f, 0.197348430752754f,\n  0.959556937217712f, 0.196996018290520f, 0.959707856178284f, 0.196643486618996f,\n  0.959858596324921f, 0.196290835738182f, 0.960008978843689f, 0.195938065648079f,\n  0.960159122943878f, 0.195585191249847f, 0.960309028625488f, 0.195232197642326f,\n  0.960458636283875f, 0.194879084825516f, 0.960607945919037f, 0.194525867700577f,\n  0.960757017135620f, 0.194172516465187f, 0.960905790328979f, 0.193819075822830f,\n  0.961054325103760f, 0.193465501070023f, 0.961202561855316f, 0.193111822009087f,\n  0.961350560188293f, 0.192758023738861f, 0.961498260498047f, 0.192404121160507f,\n  0.961645722389221f, 0.192050099372864f, 0.961792886257172f, 0.191695958375931f,\n  0.961939752101898f, 0.191341713070869f, 0.962086379528046f, 0.190987363457680f,\n  0.962232708930969f, 0.190632879734039f, 0.962378799915314f, 0.190278306603432f,\n  0.962524592876434f, 0.189923599362373f, 0.962670147418976f, 0.189568802714348f,\n  0.962815403938293f, 0.189213871955872f, 0.962960422039032f, 0.188858851790428f,\n  0.963105142116547f, 0.188503712415695f, 0.963249564170837f, 0.188148453831673f,\n  0.963393747806549f, 0.187793090939522f, 0.963537633419037f, 0.187437608838081f,\n  0.963681280612946f, 0.187082037329674f, 0.963824629783630f, 0.186726331710815f,\n  0.963967680931091f, 0.186370536684990f, 0.964110493659973f, 0.186014622449875f,\n  0.964253067970276f, 0.185658603906631f, 0.964395284652710f, 0.185302466154099f,\n  0.964537262916565f, 0.184946224093437f, 0.964679002761841f, 0.184589877724648f,\n  0.964820444583893f, 0.184233412146568f, 0.964961588382721f, 0.183876842260361f,\n  0.965102493762970f, 0.183520168066025f, 0.965243160724640f, 0.183163389563560f,\n  0.965383470058441f, 0.182806491851807f, 0.965523540973663f, 0.182449504733086f,\n  0.965663373470306f, 0.182092398405075f, 0.965802907943726f, 0.181735187768936f,\n  0.965942144393921f, 0.181377857923508f, 0.966081082820892f, 0.181020438671112f,\n  0.966219842433929f, 0.180662900209427f, 0.966358244419098f, 0.180305257439613f,\n  0.966496407985687f, 0.179947525262833f, 0.966634273529053f, 0.179589673876762f,\n  0.966771900653839f, 0.179231703281403f, 0.966909229755402f, 0.178873643279076f,\n  0.967046260833740f, 0.178515478968620f, 0.967183053493500f, 0.178157210350037f,\n  0.967319548130035f, 0.177798837423325f, 0.967455804347992f, 0.177440345287323f,\n  0.967591762542725f, 0.177081763744354f, 0.967727422714233f, 0.176723077893257f,\n  0.967862844467163f, 0.176364272832870f, 0.967997968196869f, 0.176005378365517f,\n  0.968132853507996f, 0.175646379590034f, 0.968267440795898f, 0.175287276506424f,\n  0.968401730060577f, 0.174928069114685f, 0.968535780906677f, 0.174568757414818f,\n  0.968669533729553f, 0.174209341406822f, 0.968802988529205f, 0.173849821090698f,\n  0.968936204910278f, 0.173490211367607f, 0.969069123268127f, 0.173130482435226f,\n  0.969201743602753f, 0.172770664095879f, 0.969334125518799f, 0.172410741448402f,\n  0.969466269016266f, 0.172050714492798f, 0.969598054885864f, 0.171690583229065f,\n  0.969729602336884f, 0.171330362558365f, 0.969860911369324f, 0.170970037579536f,\n  0.969991862773895f, 0.170609608292580f, 0.970122575759888f, 0.170249074697495f,\n  0.970253050327301f, 0.169888436794281f, 0.970383226871490f, 0.169527709484100f,\n  0.970513105392456f, 0.169166877865791f, 0.970642685890198f, 0.168805956840515f,\n  0.970772027969360f, 0.168444931507111f, 0.970901072025299f, 0.168083801865578f,\n  0.971029877662659f, 0.167722567915916f, 0.971158385276794f, 0.167361244559288f,\n  0.971286594867706f, 0.166999831795692f, 0.971414566040039f, 0.166638299822807f,\n  0.971542239189148f, 0.166276678442955f, 0.971669614315033f, 0.165914967656136f,\n  0.971796751022339f, 0.165553152561188f, 0.971923589706421f, 0.165191248059273f,\n  0.972050130367279f, 0.164829224348068f, 0.972176432609558f, 0.164467126131058f,\n  0.972302436828613f, 0.164104923605919f, 0.972428143024445f, 0.163742616772652f,\n  0.972553610801697f, 0.163380220532417f, 0.972678780555725f, 0.163017734885216f,\n  0.972803652286530f, 0.162655144929886f, 0.972928285598755f, 0.162292465567589f,\n  0.973052620887756f, 0.161929681897163f, 0.973176658153534f, 0.161566808819771f,\n  0.973300457000732f, 0.161203846335411f, 0.973423957824707f, 0.160840779542923f,\n  0.973547160625458f, 0.160477623343468f, 0.973670125007629f, 0.160114362835884f,\n  0.973792791366577f, 0.159751012921333f, 0.973915159702301f, 0.159387573599815f,\n  0.974037289619446f, 0.159024044871330f, 0.974159121513367f, 0.158660411834717f,\n  0.974280655384064f, 0.158296689391136f, 0.974401950836182f, 0.157932877540588f,\n  0.974522948265076f, 0.157568961381912f, 0.974643647670746f, 0.157204970717430f,\n  0.974764108657837f, 0.156840875744820f, 0.974884271621704f, 0.156476691365242f,\n  0.975004136562347f, 0.156112402677536f, 0.975123703479767f, 0.155748039484024f,\n  0.975243031978607f, 0.155383571982384f, 0.975362062454224f, 0.155019029974937f,\n  0.975480854511261f, 0.154654383659363f, 0.975599288940430f, 0.154289647936821f,\n  0.975717484951019f, 0.153924822807312f, 0.975835442543030f, 0.153559908270836f,\n  0.975953042507172f, 0.153194904327393f, 0.976070404052734f, 0.152829796075821f,\n  0.976187527179718f, 0.152464613318443f, 0.976304292678833f, 0.152099341154099f,\n  0.976420819759369f, 0.151733979582787f, 0.976537048816681f, 0.151368513703346f,\n  0.976653039455414f, 0.151002973318100f, 0.976768672466278f, 0.150637343525887f,\n  0.976884067058563f, 0.150271624326706f, 0.976999223232269f, 0.149905815720558f,\n  0.977114021778107f, 0.149539917707443f, 0.977228581905365f, 0.149173930287361f,\n  0.977342903614044f, 0.148807853460312f, 0.977456867694855f, 0.148441687226295f,\n  0.977570593357086f, 0.148075446486473f, 0.977684020996094f, 0.147709101438522f,\n  0.977797150611877f, 0.147342681884766f, 0.977910041809082f, 0.146976172924042f,\n  0.978022634983063f, 0.146609574556351f, 0.978134930133820f, 0.146242901682854f,\n  0.978246986865997f, 0.145876124501228f, 0.978358685970306f, 0.145509272813797f,\n  0.978470146656036f, 0.145142331719399f, 0.978581368923187f, 0.144775316119194f,\n  0.978692233562469f, 0.144408211112022f, 0.978802859783173f, 0.144041016697884f,\n  0.978913187980652f, 0.143673732876778f, 0.979023277759552f, 0.143306359648705f,\n  0.979133009910584f, 0.142938911914825f, 0.979242503643036f, 0.142571389675140f,\n  0.979351758956909f, 0.142203763127327f, 0.979460656642914f, 0.141836062073708f,\n  0.979569315910339f, 0.141468286514282f, 0.979677677154541f, 0.141100421547890f,\n  0.979785740375519f, 0.140732467174530f, 0.979893565177917f, 0.140364438295364f,\n  0.980001091957092f, 0.139996320009232f, 0.980108320713043f, 0.139628127217293f,\n  0.980215251445770f, 0.139259845018387f, 0.980321943759918f, 0.138891488313675f,\n  0.980428338050842f, 0.138523042201996f, 0.980534434318542f, 0.138154521584511f,\n  0.980640232563019f, 0.137785911560059f, 0.980745792388916f, 0.137417227029800f,\n  0.980851054191589f, 0.137048453092575f, 0.980956017971039f, 0.136679604649544f,\n  0.981060683727264f, 0.136310681700706f, 0.981165111064911f, 0.135941669344902f,\n  0.981269240379334f, 0.135572582483292f, 0.981373071670532f, 0.135203406214714f,\n  0.981476604938507f, 0.134834155440331f, 0.981579899787903f, 0.134464830160141f,\n  0.981682896614075f, 0.134095430374146f, 0.981785595417023f, 0.133725941181183f,\n  0.981888055801392f, 0.133356377482414f, 0.981990158557892f, 0.132986739277840f,\n  0.982092022895813f, 0.132617011666298f, 0.982193589210510f, 0.132247209548950f,\n  0.982294917106628f, 0.131877332925797f, 0.982395887374878f, 0.131507381796837f,\n  0.982496619224548f, 0.131137356162071f, 0.982597053050995f, 0.130767241120338f,\n  0.982697248458862f, 0.130397051572800f, 0.982797086238861f, 0.130026802420616f,\n  0.982896685600281f, 0.129656463861465f, 0.982995986938477f, 0.129286035895348f,\n  0.983094990253448f, 0.128915548324585f, 0.983193755149841f, 0.128544986248016f,\n  0.983292162418365f, 0.128174334764481f, 0.983390331268311f, 0.127803623676300f,\n  0.983488261699677f, 0.127432823181152f, 0.983585834503174f, 0.127061963081360f,\n  0.983683168888092f, 0.126691013574600f, 0.983780145645142f, 0.126320004463196f,\n  0.983876943588257f, 0.125948905944824f, 0.983973383903503f, 0.125577747821808f,\n  0.984069526195526f, 0.125206500291824f, 0.984165430068970f, 0.124835193157196f,\n  0.984261035919189f, 0.124463804066181f, 0.984356343746185f, 0.124092340469360f,\n  0.984451413154602f, 0.123720809817314f, 0.984546124935150f, 0.123349204659462f,\n  0.984640598297119f, 0.122977524995804f, 0.984734773635864f, 0.122605770826340f,\n  0.984828710556030f, 0.122233949601650f, 0.984922289848328f, 0.121862053871155f,\n  0.985015630722046f, 0.121490091085434f, 0.985108673572540f, 0.121118053793907f,\n  0.985201418399811f, 0.120745941996574f, 0.985293865203857f, 0.120373763144016f,\n  0.985386073589325f, 0.120001509785652f, 0.985477983951569f, 0.119629189372063f,\n  0.985569596290588f, 0.119256794452667f, 0.985660910606384f, 0.118884332478046f,\n  0.985751926898956f, 0.118511803448200f, 0.985842704772949f, 0.118139199912548f,\n  0.985933184623718f, 0.117766529321671f, 0.986023366451263f, 0.117393791675568f,\n  0.986113250255585f, 0.117020979523659f, 0.986202836036682f, 0.116648100316525f,\n  0.986292183399200f, 0.116275154054165f, 0.986381232738495f, 0.115902140736580f,\n  0.986469984054565f, 0.115529052913189f, 0.986558437347412f, 0.115155905485153f,\n  0.986646652221680f, 0.114782683551311f, 0.986734509468079f, 0.114409394562244f,\n  0.986822128295898f, 0.114036038517952f, 0.986909449100494f, 0.113662622869015f,\n  0.986996471881866f, 0.113289132714272f, 0.987083256244659f, 0.112915575504303f,\n  0.987169682979584f, 0.112541958689690f, 0.987255871295929f, 0.112168267369270f,\n  0.987341761589050f, 0.111794516444206f, 0.987427353858948f, 0.111420698463917f,\n  0.987512648105621f, 0.111046813428402f, 0.987597703933716f, 0.110672861337662f,\n  0.987682461738586f, 0.110298842191696f, 0.987766921520233f, 0.109924763441086f,\n  0.987851083278656f, 0.109550617635250f, 0.987934947013855f, 0.109176412224770f,\n  0.988018512725830f, 0.108802139759064f, 0.988101840019226f, 0.108427800238132f,\n  0.988184869289398f, 0.108053401112556f, 0.988267600536346f, 0.107678934931755f,\n  0.988350033760071f, 0.107304409146309f, 0.988432228565216f, 0.106929816305637f,\n  0.988514065742493f, 0.106555156409740f, 0.988595664501190f, 0.106180444359779f,\n  0.988676965236664f, 0.105805665254593f, 0.988757967948914f, 0.105430819094181f,\n  0.988838672637939f, 0.105055920779705f, 0.988919138908386f, 0.104680955410004f,\n  0.988999247550964f, 0.104305922985077f, 0.989079117774963f, 0.103930838406086f,\n  0.989158689975739f, 0.103555686771870f, 0.989237964153290f, 0.103180475533009f,\n  0.989316940307617f, 0.102805204689503f, 0.989395678043365f, 0.102429874241352f,\n  0.989474058151245f, 0.102054484188557f, 0.989552199840546f, 0.101679034531116f,\n  0.989630043506622f, 0.101303517818451f, 0.989707589149475f, 0.100927948951721f,\n  0.989784896373749f, 0.100552320480347f, 0.989861845970154f, 0.100176624953747f,\n  0.989938557147980f, 0.099800877273083f, 0.990014970302582f, 0.099425069987774f,\n  0.990091085433960f, 0.099049203097820f, 0.990166902542114f, 0.098673284053802f,\n  0.990242421627045f, 0.098297297954559f, 0.990317702293396f, 0.097921259701252f,\n  0.990392625331879f, 0.097545161843300f, 0.990467309951782f, 0.097169004380703f,\n  0.990541696548462f, 0.096792794764042f, 0.990615785121918f, 0.096416525542736f,\n  0.990689575672150f, 0.096040196716785f, 0.990763127803802f, 0.095663815736771f,\n  0.990836322307587f, 0.095287375152111f, 0.990909278392792f, 0.094910882413387f,\n  0.990981936454773f, 0.094534330070019f, 0.991054296493530f, 0.094157725572586f,\n  0.991126358509064f, 0.093781061470509f, 0.991198182106018f, 0.093404345214367f,\n  0.991269648075104f, 0.093027576804161f, 0.991340875625610f, 0.092650748789310f,\n  0.991411805152893f, 0.092273868620396f, 0.991482377052307f, 0.091896936297417f,\n  0.991552770137787f, 0.091519944369793f, 0.991622805595398f, 0.091142900288105f,\n  0.991692543029785f, 0.090765804052353f, 0.991762042045593f, 0.090388655662537f,\n  0.991831183433533f, 0.090011447668076f, 0.991900086402893f, 0.089634194970131f,\n  0.991968691349030f, 0.089256882667542f, 0.992036998271942f, 0.088879525661469f,\n  0.992105066776276f, 0.088502109050751f, 0.992172777652740f, 0.088124647736549f,\n  0.992240250110626f, 0.087747126817703f, 0.992307364940643f, 0.087369553744793f,\n  0.992374241352081f, 0.086991935968399f, 0.992440819740295f, 0.086614266037941f,\n  0.992507100105286f, 0.086236543953419f, 0.992573142051697f, 0.085858769714832f,\n  0.992638826370239f, 0.085480943322182f, 0.992704212665558f, 0.085103072226048f,\n  0.992769360542297f, 0.084725148975849f, 0.992834210395813f, 0.084347173571587f,\n  0.992898762226105f, 0.083969146013260f, 0.992963016033173f, 0.083591073751450f,\n  0.993026971817017f, 0.083212949335575f, 0.993090689182281f, 0.082834780216217f,\n  0.993154048919678f, 0.082456558942795f, 0.993217170238495f, 0.082078292965889f,\n  0.993279933929443f, 0.081699974834919f, 0.993342459201813f, 0.081321612000465f,\n  0.993404686450958f, 0.080943197011948f, 0.993466615676880f, 0.080564737319946f,\n  0.993528306484222f, 0.080186225473881f, 0.993589639663696f, 0.079807676374912f,\n  0.993650734424591f, 0.079429075121880f, 0.993711471557617f, 0.079050421714783f,\n  0.993771970272064f, 0.078671731054783f, 0.993832170963287f, 0.078292988240719f,\n  0.993892073631287f, 0.077914200723171f, 0.993951678276062f, 0.077535368502140f,\n  0.994010984897614f, 0.077156484127045f, 0.994070053100586f, 0.076777562499046f,\n  0.994128763675690f, 0.076398596167564f, 0.994187235832214f, 0.076019577682018f,\n  0.994245409965515f, 0.075640521943569f, 0.994303286075592f, 0.075261414051056f,\n  0.994360864162445f, 0.074882268905640f, 0.994418144226074f, 0.074503071606159f,\n  0.994475126266479f, 0.074123837053776f, 0.994531810283661f, 0.073744557797909f,\n  0.994588255882263f, 0.073365233838558f, 0.994644403457642f, 0.072985872626305f,\n  0.994700193405151f, 0.072606459259987f, 0.994755744934082f, 0.072227008640766f,\n  0.994810998439789f, 0.071847513318062f, 0.994865953922272f, 0.071467980742455f,\n  0.994920611381531f, 0.071088403463364f, 0.994975030422211f, 0.070708781480789f,\n  0.995029091835022f, 0.070329122245312f, 0.995082914829254f, 0.069949418306351f,\n  0.995136380195618f, 0.069569669663906f, 0.995189607143402f, 0.069189883768559f,\n  0.995242536067963f, 0.068810060620308f, 0.995295166969299f, 0.068430192768574f,\n  0.995347499847412f, 0.068050287663937f, 0.995399534702301f, 0.067670337855816f,\n  0.995451331138611f, 0.067290350794792f, 0.995502769947052f, 0.066910326480865f,\n  0.995553970336914f, 0.066530264914036f, 0.995604813098907f, 0.066150158643723f,\n  0.995655417442322f, 0.065770015120506f, 0.995705723762512f, 0.065389834344387f,\n  0.995755732059479f, 0.065009608864784f, 0.995805442333221f, 0.064629353582859f,\n  0.995854854583740f, 0.064249053597450f, 0.995904028415680f, 0.063868723809719f,\n  0.995952844619751f, 0.063488349318504f, 0.996001422405243f, 0.063107937574387f,\n  0.996049642562866f, 0.062727488577366f, 0.996097624301910f, 0.062347009778023f,\n  0.996145308017731f, 0.061966486275196f, 0.996192693710327f, 0.061585929244757f,\n  0.996239781379700f, 0.061205338686705f, 0.996286571025848f, 0.060824707150459f,\n  0.996333062648773f, 0.060444042086601f, 0.996379256248474f, 0.060063343495131f,\n  0.996425211429596f, 0.059682607650757f, 0.996470808982849f, 0.059301838278770f,\n  0.996516168117523f, 0.058921031653881f, 0.996561229228973f, 0.058540191501379f,\n  0.996605992317200f, 0.058159314095974f, 0.996650457382202f, 0.057778406888247f,\n  0.996694624423981f, 0.057397462427616f, 0.996738493442535f, 0.057016488164663f,\n  0.996782064437866f, 0.056635476648808f, 0.996825337409973f, 0.056254431605339f,\n  0.996868371963501f, 0.055873356759548f, 0.996911048889160f, 0.055492244660854f,\n  0.996953487396240f, 0.055111102759838f, 0.996995627880096f, 0.054729927331209f,\n  0.997037410736084f, 0.054348722100258f, 0.997078955173492f, 0.053967483341694f,\n  0.997120201587677f, 0.053586211055517f, 0.997161149978638f, 0.053204908967018f,\n  0.997201859951019f, 0.052823577076197f, 0.997242212295532f, 0.052442211657763f,\n  0.997282266616821f, 0.052060816437006f, 0.997322082519531f, 0.051679391413927f,\n  0.997361540794373f, 0.051297932863235f, 0.997400760650635f, 0.050916448235512f,\n  0.997439682483673f, 0.050534930080175f, 0.997478306293488f, 0.050153385847807f,\n  0.997516572475433f, 0.049771808087826f, 0.997554600238800f, 0.049390204250813f,\n  0.997592389583588f, 0.049008570611477f, 0.997629821300507f, 0.048626907169819f,\n  0.997666954994202f, 0.048245213925838f, 0.997703790664673f, 0.047863494604826f,\n  0.997740387916565f, 0.047481749206781f, 0.997776627540588f, 0.047099970281124f,\n  0.997812628746033f, 0.046718169003725f, 0.997848331928253f, 0.046336337924004f,\n  0.997883677482605f, 0.045954477041960f, 0.997918784618378f, 0.045572593808174f,\n  0.997953593730927f, 0.045190680772066f, 0.997988104820251f, 0.044808741658926f,\n  0.998022377490997f, 0.044426776468754f, 0.998056292533875f, 0.044044785201550f,\n  0.998089909553528f, 0.043662767857313f, 0.998123228549957f, 0.043280724436045f,\n  0.998156309127808f, 0.042898654937744f, 0.998189091682434f, 0.042516563087702f,\n  0.998221516609192f, 0.042134445160627f, 0.998253703117371f, 0.041752301156521f,\n  0.998285591602325f, 0.041370131075382f, 0.998317182064056f, 0.040987938642502f,\n  0.998348474502563f, 0.040605723857880f, 0.998379468917847f, 0.040223482996225f,\n  0.998410165309906f, 0.039841219782829f, 0.998440563678741f, 0.039458930492401f,\n  0.998470664024353f, 0.039076622575521f, 0.998500525951386f, 0.038694288581610f,\n  0.998530030250549f, 0.038311932235956f, 0.998559296131134f, 0.037929553538561f,\n  0.998588204383850f, 0.037547148764133f, 0.998616874217987f, 0.037164725363255f,\n  0.998645246028900f, 0.036782283335924f, 0.998673319816589f, 0.036399815231562f,\n  0.998701035976410f, 0.036017324775457f, 0.998728513717651f, 0.035634815692902f,\n  0.998755753040314f, 0.035252287983894f, 0.998782634735107f, 0.034869734197855f,\n  0.998809218406677f, 0.034487165510654f, 0.998835504055023f, 0.034104570746422f,\n  0.998861551284790f, 0.033721961081028f, 0.998887240886688f, 0.033339329063892f,\n  0.998912692070007f, 0.032956674695015f, 0.998937785625458f, 0.032574005424976f,\n  0.998962640762329f, 0.032191313803196f, 0.998987197875977f, 0.031808607280254f,\n  0.999011456966400f, 0.031425878405571f, 0.999035418033600f, 0.031043132767081f,\n  0.999059081077576f, 0.030660368502140f, 0.999082446098328f, 0.030277585610747f,\n  0.999105513095856f, 0.029894785955548f, 0.999128282070160f, 0.029511967673898f,\n  0.999150753021240f, 0.029129132628441f, 0.999172985553741f, 0.028746278956532f,\n  0.999194860458374f, 0.028363410383463f, 0.999216496944427f, 0.027980525046587f,\n  0.999237775802612f, 0.027597622945905f, 0.999258816242218f, 0.027214704081416f,\n  0.999279558658600f, 0.026831768453121f, 0.999299943447113f, 0.026448817923665f,\n  0.999320089817047f, 0.026065852493048f, 0.999339938163757f, 0.025682870298624f,\n  0.999359488487244f, 0.025299875065684f, 0.999378740787506f, 0.024916863068938f,\n  0.999397754669189f, 0.024533838033676f, 0.999416410923004f, 0.024150796234608f,\n  0.999434769153595f, 0.023767741397023f, 0.999452829360962f, 0.023384673520923f,\n  0.999470651149750f, 0.023001590743661f, 0.999488115310669f, 0.022618494927883f,\n  0.999505341053009f, 0.022235386073589f, 0.999522268772125f, 0.021852264180779f,\n  0.999538838863373f, 0.021469129249454f, 0.999555170536041f, 0.021085981279612f,\n  0.999571204185486f, 0.020702820271254f, 0.999586939811707f, 0.020319648087025f,\n  0.999602377414703f, 0.019936462864280f, 0.999617516994476f, 0.019553268328309f,\n  0.999632358551025f, 0.019170060753822f, 0.999646902084351f, 0.018786842003465f,\n  0.999661207199097f, 0.018403612077236f, 0.999675154685974f, 0.018020370975137f,\n  0.999688863754272f, 0.017637118697166f, 0.999702215194702f, 0.017253857105970f,\n  0.999715328216553f, 0.016870586201549f, 0.999728083610535f, 0.016487304121256f,\n  0.999740600585938f, 0.016104012727737f, 0.999752819538116f, 0.015720712020993f,\n  0.999764680862427f, 0.015337402001023f, 0.999776303768158f, 0.014954082667828f,\n  0.999787628650665f, 0.014570754021406f, 0.999798655509949f, 0.014187417924404f,\n  0.999809384346008f, 0.013804072514176f, 0.999819874763489f, 0.013420719653368f,\n  0.999830007553101f, 0.013037359341979f, 0.999839842319489f, 0.012653990648687f,\n  0.999849438667297f, 0.012270614504814f, 0.999858677387238f, 0.011887230910361f,\n  0.999867618083954f, 0.011503840796649f, 0.999876320362091f, 0.011120444163680f,\n  0.999884724617004f, 0.010737040080130f, 0.999892771244049f, 0.010353630408645f,\n  0.999900579452515f, 0.009970214217901f, 0.999908089637756f, 0.009586792439222f,\n  0.999915301799774f, 0.009203365072608f, 0.999922215938568f, 0.008819932118058f,\n  0.999928832054138f, 0.008436493575573f, 0.999935150146484f, 0.008053051307797f,\n  0.999941170215607f, 0.007669602986425f, 0.999946892261505f, 0.007286150939763f,\n  0.999952375888824f, 0.006902694236487f, 0.999957501888275f, 0.006519233807921f,\n  0.999962329864502f, 0.006135769188404f, 0.999966919422150f, 0.005752300843596f,\n  0.999971151351929f, 0.005368829704821f, 0.999975144863129f, 0.004985354840755f,\n  0.999978840351105f, 0.004601877182722f, 0.999982178211212f, 0.004218397196382f,\n  0.999985277652740f, 0.003834914416075f, 0.999988079071045f, 0.003451429307461f,\n  0.999990582466125f, 0.003067942336202f, 0.999992787837982f, 0.002684453502297f,\n  0.999994695186615f, 0.002300963038579f, 0.999996304512024f, 0.001917471294291f,\n  0.999997675418854f, 0.001533978385851f, 0.999998688697815f, 0.001150484546088f,\n  0.999999403953552f, 0.000766990066040f, 0.999999880790710f, 0.000383495149435f,\n  1.000000000000000f, 0.000000000000023f, 0.999999880790710f, -0.000383495149435f,\n  0.999999403953552f, -0.000766990066040f, 0.999998688697815f, -0.001150484546088f,\n  0.999997675418854f, -0.001533978385851f, 0.999996304512024f, -0.001917471294291f,\n  0.999994695186615f, -0.002300963038579f, 0.999992787837982f, -0.002684453502297f,\n  0.999990582466125f, -0.003067942336202f, 0.999988079071045f, -0.003451429307461f,\n  0.999985277652740f, -0.003834914416075f, 0.999982178211212f, -0.004218397196382f,\n  0.999978840351105f, -0.004601877182722f, 0.999975144863129f, -0.004985354840755f,\n  0.999971151351929f, -0.005368829704821f, 0.999966919422150f, -0.005752300843596f,\n  0.999962329864502f, -0.006135769188404f, 0.999957501888275f, -0.006519233807921f,\n  0.999952375888824f, -0.006902694236487f, 0.999946892261505f, -0.007286150939763f,\n  0.999941170215607f, -0.007669602986425f, 0.999935150146484f, -0.008053051307797f,\n  0.999928832054138f, -0.008436493575573f, 0.999922215938568f, -0.008819932118058f,\n  0.999915301799774f, -0.009203365072608f, 0.999908089637756f, -0.009586792439222f,\n  0.999900579452515f, -0.009970214217901f, 0.999892771244049f, -0.010353630408645f,\n  0.999884724617004f, -0.010737040080130f, 0.999876320362091f, -0.011120444163680f,\n  0.999867618083954f, -0.011503840796649f, 0.999858677387238f, -0.011887230910361f,\n  0.999849438667297f, -0.012270614504814f, 0.999839842319489f, -0.012653990648687f,\n  0.999830007553101f, -0.013037359341979f, 0.999819874763489f, -0.013420719653368f,\n  0.999809384346008f, -0.013804072514176f, 0.999798655509949f, -0.014187417924404f,\n  0.999787628650665f, -0.014570754021406f, 0.999776303768158f, -0.014954082667828f,\n  0.999764680862427f, -0.015337402001023f, 0.999752819538116f, -0.015720712020993f,\n  0.999740600585938f, -0.016104012727737f, 0.999728083610535f, -0.016487304121256f,\n  0.999715328216553f, -0.016870586201549f, 0.999702215194702f, -0.017253857105970f,\n  0.999688863754272f, -0.017637118697166f, 0.999675154685974f, -0.018020370975137f,\n  0.999661207199097f, -0.018403612077236f, 0.999646902084351f, -0.018786842003465f,\n  0.999632358551025f, -0.019170060753822f, 0.999617516994476f, -0.019553268328309f,\n  0.999602377414703f, -0.019936462864280f, 0.999586939811707f, -0.020319648087025f,\n  0.999571204185486f, -0.020702820271254f, 0.999555170536041f, -0.021085981279612f,\n  0.999538838863373f, -0.021469129249454f, 0.999522268772125f, -0.021852264180779f,\n  0.999505341053009f, -0.022235386073589f, 0.999488115310669f, -0.022618494927883f,\n  0.999470651149750f, -0.023001590743661f, 0.999452829360962f, -0.023384673520923f,\n  0.999434769153595f, -0.023767741397023f, 0.999416410923004f, -0.024150796234608f,\n  0.999397754669189f, -0.024533838033676f, 0.999378740787506f, -0.024916863068938f,\n  0.999359488487244f, -0.025299875065684f, 0.999339938163757f, -0.025682870298624f,\n  0.999320089817047f, -0.026065852493048f, 0.999299943447113f, -0.026448817923665f,\n  0.999279558658600f, -0.026831768453121f, 0.999258816242218f, -0.027214704081416f,\n  0.999237775802612f, -0.027597622945905f, 0.999216496944427f, -0.027980525046587f,\n  0.999194860458374f, -0.028363410383463f, 0.999172985553741f, -0.028746278956532f,\n  0.999150753021240f, -0.029129132628441f, 0.999128282070160f, -0.029511967673898f,\n  0.999105513095856f, -0.029894785955548f, 0.999082446098328f, -0.030277585610747f,\n  0.999059081077576f, -0.030660368502140f, 0.999035418033600f, -0.031043132767081f,\n  0.999011456966400f, -0.031425878405571f, 0.998987197875977f, -0.031808607280254f,\n  0.998962640762329f, -0.032191313803196f, 0.998937785625458f, -0.032574005424976f,\n  0.998912692070007f, -0.032956674695015f, 0.998887240886688f, -0.033339329063892f,\n  0.998861551284790f, -0.033721961081028f, 0.998835504055023f, -0.034104570746422f,\n  0.998809218406677f, -0.034487165510654f, 0.998782634735107f, -0.034869734197855f,\n  0.998755753040314f, -0.035252287983894f, 0.998728513717651f, -0.035634815692902f,\n  0.998701035976410f, -0.036017324775457f, 0.998673319816589f, -0.036399815231562f,\n  0.998645246028900f, -0.036782283335924f, 0.998616874217987f, -0.037164725363255f,\n  0.998588204383850f, -0.037547148764133f, 0.998559296131134f, -0.037929553538561f,\n  0.998530030250549f, -0.038311932235956f, 0.998500525951386f, -0.038694288581610f,\n  0.998470664024353f, -0.039076622575521f, 0.998440563678741f, -0.039458930492401f,\n  0.998410165309906f, -0.039841219782829f, 0.998379468917847f, -0.040223482996225f,\n  0.998348474502563f, -0.040605723857880f, 0.998317182064056f, -0.040987938642502f,\n  0.998285591602325f, -0.041370131075382f, 0.998253703117371f, -0.041752301156521f,\n  0.998221516609192f, -0.042134445160627f, 0.998189091682434f, -0.042516563087702f,\n  0.998156309127808f, -0.042898654937744f, 0.998123228549957f, -0.043280724436045f,\n  0.998089909553528f, -0.043662767857313f, 0.998056292533875f, -0.044044785201550f,\n  0.998022377490997f, -0.044426776468754f, 0.997988104820251f, -0.044808741658926f,\n  0.997953593730927f, -0.045190680772066f, 0.997918784618378f, -0.045572593808174f,\n  0.997883677482605f, -0.045954477041960f, 0.997848331928253f, -0.046336337924004f,\n  0.997812628746033f, -0.046718169003725f, 0.997776627540588f, -0.047099970281124f,\n  0.997740387916565f, -0.047481749206781f, 0.997703790664673f, -0.047863494604826f,\n  0.997666954994202f, -0.048245213925838f, 0.997629821300507f, -0.048626907169819f,\n  0.997592389583588f, -0.049008570611477f, 0.997554600238800f, -0.049390204250813f,\n  0.997516572475433f, -0.049771808087826f, 0.997478306293488f, -0.050153385847807f,\n  0.997439682483673f, -0.050534930080175f, 0.997400760650635f, -0.050916448235512f,\n  0.997361540794373f, -0.051297932863235f, 0.997322082519531f, -0.051679391413927f,\n  0.997282266616821f, -0.052060816437006f, 0.997242212295532f, -0.052442211657763f,\n  0.997201859951019f, -0.052823577076197f, 0.997161149978638f, -0.053204908967018f,\n  0.997120201587677f, -0.053586211055517f, 0.997078955173492f, -0.053967483341694f,\n  0.997037410736084f, -0.054348722100258f, 0.996995627880096f, -0.054729927331209f,\n  0.996953487396240f, -0.055111102759838f, 0.996911048889160f, -0.055492244660854f,\n  0.996868371963501f, -0.055873356759548f, 0.996825337409973f, -0.056254431605339f,\n  0.996782064437866f, -0.056635476648808f, 0.996738493442535f, -0.057016488164663f,\n  0.996694624423981f, -0.057397462427616f, 0.996650457382202f, -0.057778406888247f,\n  0.996605992317200f, -0.058159314095974f, 0.996561229228973f, -0.058540191501379f,\n  0.996516168117523f, -0.058921031653881f, 0.996470808982849f, -0.059301838278770f,\n  0.996425211429596f, -0.059682607650757f, 0.996379256248474f, -0.060063343495131f,\n  0.996333062648773f, -0.060444042086601f, 0.996286571025848f, -0.060824707150459f,\n  0.996239781379700f, -0.061205338686705f, 0.996192693710327f, -0.061585929244757f,\n  0.996145308017731f, -0.061966486275196f, 0.996097624301910f, -0.062347009778023f,\n  0.996049642562866f, -0.062727488577366f, 0.996001422405243f, -0.063107937574387f,\n  0.995952844619751f, -0.063488349318504f, 0.995904028415680f, -0.063868723809719f,\n  0.995854854583740f, -0.064249053597450f, 0.995805442333221f, -0.064629353582859f,\n  0.995755732059479f, -0.065009608864784f, 0.995705723762512f, -0.065389834344387f,\n  0.995655417442322f, -0.065770015120506f, 0.995604813098907f, -0.066150158643723f,\n  0.995553970336914f, -0.066530264914036f, 0.995502769947052f, -0.066910326480865f,\n  0.995451331138611f, -0.067290350794792f, 0.995399534702301f, -0.067670337855816f,\n  0.995347499847412f, -0.068050287663937f, 0.995295166969299f, -0.068430192768574f,\n  0.995242536067963f, -0.068810060620308f, 0.995189607143402f, -0.069189883768559f,\n  0.995136380195618f, -0.069569669663906f, 0.995082914829254f, -0.069949418306351f,\n  0.995029091835022f, -0.070329122245312f, 0.994975030422211f, -0.070708781480789f,\n  0.994920611381531f, -0.071088403463364f, 0.994865953922272f, -0.071467980742455f,\n  0.994810998439789f, -0.071847513318062f, 0.994755744934082f, -0.072227008640766f,\n  0.994700193405151f, -0.072606459259987f, 0.994644403457642f, -0.072985872626305f,\n  0.994588255882263f, -0.073365233838558f, 0.994531810283661f, -0.073744557797909f,\n  0.994475126266479f, -0.074123837053776f, 0.994418144226074f, -0.074503071606159f,\n  0.994360864162445f, -0.074882268905640f, 0.994303286075592f, -0.075261414051056f,\n  0.994245409965515f, -0.075640521943569f, 0.994187235832214f, -0.076019577682018f,\n  0.994128763675690f, -0.076398596167564f, 0.994070053100586f, -0.076777562499046f,\n  0.994010984897614f, -0.077156484127045f, 0.993951678276062f, -0.077535368502140f,\n  0.993892073631287f, -0.077914200723171f, 0.993832170963287f, -0.078292988240719f,\n  0.993771970272064f, -0.078671731054783f, 0.993711471557617f, -0.079050421714783f,\n  0.993650734424591f, -0.079429075121880f, 0.993589639663696f, -0.079807676374912f,\n  0.993528306484222f, -0.080186225473881f, 0.993466615676880f, -0.080564737319946f,\n  0.993404686450958f, -0.080943197011948f, 0.993342459201813f, -0.081321612000465f,\n  0.993279933929443f, -0.081699974834919f, 0.993217170238495f, -0.082078292965889f,\n  0.993154048919678f, -0.082456558942795f, 0.993090689182281f, -0.082834780216217f,\n  0.993026971817017f, -0.083212949335575f, 0.992963016033173f, -0.083591073751450f,\n  0.992898762226105f, -0.083969146013260f, 0.992834210395813f, -0.084347173571587f,\n  0.992769360542297f, -0.084725148975849f, 0.992704212665558f, -0.085103072226048f,\n  0.992638826370239f, -0.085480943322182f, 0.992573142051697f, -0.085858769714832f,\n  0.992507100105286f, -0.086236543953419f, 0.992440819740295f, -0.086614266037941f,\n  0.992374241352081f, -0.086991935968399f, 0.992307364940643f, -0.087369553744793f,\n  0.992240250110626f, -0.087747126817703f, 0.992172777652740f, -0.088124647736549f,\n  0.992105066776276f, -0.088502109050751f, 0.992036998271942f, -0.088879525661469f,\n  0.991968691349030f, -0.089256882667542f, 0.991900086402893f, -0.089634194970131f,\n  0.991831183433533f, -0.090011447668076f, 0.991762042045593f, -0.090388655662537f,\n  0.991692543029785f, -0.090765804052353f, 0.991622805595398f, -0.091142900288105f,\n  0.991552770137787f, -0.091519944369793f, 0.991482377052307f, -0.091896936297417f,\n  0.991411805152893f, -0.092273868620396f, 0.991340875625610f, -0.092650748789310f,\n  0.991269648075104f, -0.093027576804161f, 0.991198182106018f, -0.093404345214367f,\n  0.991126358509064f, -0.093781061470509f, 0.991054296493530f, -0.094157725572586f,\n  0.990981936454773f, -0.094534330070019f, 0.990909278392792f, -0.094910882413387f,\n  0.990836322307587f, -0.095287375152111f, 0.990763127803802f, -0.095663815736771f,\n  0.990689575672150f, -0.096040196716785f, 0.990615785121918f, -0.096416525542736f,\n  0.990541696548462f, -0.096792794764042f, 0.990467309951782f, -0.097169004380703f,\n  0.990392625331879f, -0.097545161843300f, 0.990317702293396f, -0.097921259701252f,\n  0.990242421627045f, -0.098297297954559f, 0.990166902542114f, -0.098673284053802f,\n  0.990091085433960f, -0.099049203097820f, 0.990014970302582f, -0.099425069987774f,\n  0.989938557147980f, -0.099800877273083f, 0.989861845970154f, -0.100176624953747f,\n  0.989784896373749f, -0.100552320480347f, 0.989707589149475f, -0.100927948951721f,\n  0.989630043506622f, -0.101303517818451f, 0.989552199840546f, -0.101679034531116f,\n  0.989474058151245f, -0.102054484188557f, 0.989395678043365f, -0.102429874241352f,\n  0.989316940307617f, -0.102805204689503f, 0.989237964153290f, -0.103180475533009f,\n  0.989158689975739f, -0.103555686771870f, 0.989079117774963f, -0.103930838406086f,\n  0.988999247550964f, -0.104305922985077f, 0.988919138908386f, -0.104680955410004f,\n  0.988838672637939f, -0.105055920779705f, 0.988757967948914f, -0.105430819094181f,\n  0.988676965236664f, -0.105805665254593f, 0.988595664501190f, -0.106180444359779f,\n  0.988514065742493f, -0.106555156409740f, 0.988432228565216f, -0.106929816305637f,\n  0.988350033760071f, -0.107304409146309f, 0.988267600536346f, -0.107678934931755f,\n  0.988184869289398f, -0.108053401112556f, 0.988101840019226f, -0.108427800238132f,\n  0.988018512725830f, -0.108802139759064f, 0.987934947013855f, -0.109176412224770f,\n  0.987851083278656f, -0.109550617635250f, 0.987766921520233f, -0.109924763441086f,\n  0.987682461738586f, -0.110298842191696f, 0.987597703933716f, -0.110672861337662f,\n  0.987512648105621f, -0.111046813428402f, 0.987427353858948f, -0.111420698463917f,\n  0.987341761589050f, -0.111794516444206f, 0.987255871295929f, -0.112168267369270f,\n  0.987169682979584f, -0.112541958689690f, 0.987083256244659f, -0.112915575504303f,\n  0.986996471881866f, -0.113289132714272f, 0.986909449100494f, -0.113662622869015f,\n  0.986822128295898f, -0.114036038517952f, 0.986734509468079f, -0.114409394562244f,\n  0.986646652221680f, -0.114782683551311f, 0.986558437347412f, -0.115155905485153f,\n  0.986469984054565f, -0.115529052913189f, 0.986381232738495f, -0.115902140736580f,\n  0.986292183399200f, -0.116275154054165f, 0.986202836036682f, -0.116648100316525f,\n  0.986113250255585f, -0.117020979523659f, 0.986023366451263f, -0.117393791675568f,\n  0.985933184623718f, -0.117766529321671f, 0.985842704772949f, -0.118139199912548f,\n  0.985751926898956f, -0.118511803448200f, 0.985660910606384f, -0.118884332478046f,\n  0.985569596290588f, -0.119256794452667f, 0.985477983951569f, -0.119629189372063f,\n  0.985386073589325f, -0.120001509785652f, 0.985293865203857f, -0.120373763144016f,\n  0.985201418399811f, -0.120745941996574f, 0.985108673572540f, -0.121118053793907f,\n  0.985015630722046f, -0.121490091085434f, 0.984922289848328f, -0.121862053871155f,\n  0.984828710556030f, -0.122233949601650f, 0.984734773635864f, -0.122605770826340f,\n  0.984640598297119f, -0.122977524995804f, 0.984546124935150f, -0.123349204659462f,\n  0.984451413154602f, -0.123720809817314f, 0.984356343746185f, -0.124092340469360f,\n  0.984261035919189f, -0.124463804066181f, 0.984165430068970f, -0.124835193157196f,\n  0.984069526195526f, -0.125206500291824f, 0.983973383903503f, -0.125577747821808f,\n  0.983876943588257f, -0.125948905944824f, 0.983780145645142f, -0.126320004463196f,\n  0.983683168888092f, -0.126691013574600f, 0.983585834503174f, -0.127061963081360f,\n  0.983488261699677f, -0.127432823181152f, 0.983390331268311f, -0.127803623676300f,\n  0.983292162418365f, -0.128174334764481f, 0.983193755149841f, -0.128544986248016f,\n  0.983094990253448f, -0.128915548324585f, 0.982995986938477f, -0.129286035895348f,\n  0.982896685600281f, -0.129656463861465f, 0.982797086238861f, -0.130026802420616f,\n  0.982697248458862f, -0.130397051572800f, 0.982597053050995f, -0.130767241120338f,\n  0.982496619224548f, -0.131137356162071f, 0.982395887374878f, -0.131507381796837f,\n  0.982294917106628f, -0.131877332925797f, 0.982193589210510f, -0.132247209548950f,\n  0.982092022895813f, -0.132617011666298f, 0.981990158557892f, -0.132986739277840f,\n  0.981888055801392f, -0.133356377482414f, 0.981785595417023f, -0.133725941181183f,\n  0.981682896614075f, -0.134095430374146f, 0.981579899787903f, -0.134464830160141f,\n  0.981476604938507f, -0.134834155440331f, 0.981373071670532f, -0.135203406214714f,\n  0.981269240379334f, -0.135572582483292f, 0.981165111064911f, -0.135941669344902f,\n  0.981060683727264f, -0.136310681700706f, 0.980956017971039f, -0.136679604649544f,\n  0.980851054191589f, -0.137048453092575f, 0.980745792388916f, -0.137417227029800f,\n  0.980640232563019f, -0.137785911560059f, 0.980534434318542f, -0.138154521584511f,\n  0.980428338050842f, -0.138523042201996f, 0.980321943759918f, -0.138891488313675f,\n  0.980215251445770f, -0.139259845018387f, 0.980108320713043f, -0.139628127217293f,\n  0.980001091957092f, -0.139996320009232f, 0.979893565177917f, -0.140364438295364f,\n  0.979785740375519f, -0.140732467174530f, 0.979677677154541f, -0.141100421547890f,\n  0.979569315910339f, -0.141468286514282f, 0.979460656642914f, -0.141836062073708f,\n  0.979351758956909f, -0.142203763127327f, 0.979242503643036f, -0.142571389675140f,\n  0.979133009910584f, -0.142938911914825f, 0.979023277759552f, -0.143306359648705f,\n  0.978913187980652f, -0.143673732876778f, 0.978802859783173f, -0.144041016697884f,\n  0.978692233562469f, -0.144408211112022f, 0.978581368923187f, -0.144775316119194f,\n  0.978470146656036f, -0.145142331719399f, 0.978358685970306f, -0.145509272813797f,\n  0.978246986865997f, -0.145876124501228f, 0.978134930133820f, -0.146242901682854f,\n  0.978022634983063f, -0.146609574556351f, 0.977910041809082f, -0.146976172924042f,\n  0.977797150611877f, -0.147342681884766f, 0.977684020996094f, -0.147709101438522f,\n  0.977570593357086f, -0.148075446486473f, 0.977456867694855f, -0.148441687226295f,\n  0.977342903614044f, -0.148807853460312f, 0.977228581905365f, -0.149173930287361f,\n  0.977114021778107f, -0.149539917707443f, 0.976999223232269f, -0.149905815720558f,\n  0.976884067058563f, -0.150271624326706f, 0.976768672466278f, -0.150637343525887f,\n  0.976653039455414f, -0.151002973318100f, 0.976537048816681f, -0.151368513703346f,\n  0.976420819759369f, -0.151733979582787f, 0.976304292678833f, -0.152099341154099f,\n  0.976187527179718f, -0.152464613318443f, 0.976070404052734f, -0.152829796075821f,\n  0.975953042507172f, -0.153194904327393f, 0.975835442543030f, -0.153559908270836f,\n  0.975717484951019f, -0.153924822807312f, 0.975599288940430f, -0.154289647936821f,\n  0.975480854511261f, -0.154654383659363f, 0.975362062454224f, -0.155019029974937f,\n  0.975243031978607f, -0.155383571982384f, 0.975123703479767f, -0.155748039484024f,\n  0.975004136562347f, -0.156112402677536f, 0.974884271621704f, -0.156476691365242f,\n  0.974764108657837f, -0.156840875744820f, 0.974643647670746f, -0.157204970717430f,\n  0.974522948265076f, -0.157568961381912f, 0.974401950836182f, -0.157932877540588f,\n  0.974280655384064f, -0.158296689391136f, 0.974159121513367f, -0.158660411834717f,\n  0.974037289619446f, -0.159024044871330f, 0.973915159702301f, -0.159387573599815f,\n  0.973792791366577f, -0.159751012921333f, 0.973670125007629f, -0.160114362835884f,\n  0.973547160625458f, -0.160477623343468f, 0.973423957824707f, -0.160840779542923f,\n  0.973300457000732f, -0.161203846335411f, 0.973176658153534f, -0.161566808819771f,\n  0.973052620887756f, -0.161929681897163f, 0.972928285598755f, -0.162292465567589f,\n  0.972803652286530f, -0.162655144929886f, 0.972678780555725f, -0.163017734885216f,\n  0.972553610801697f, -0.163380220532417f, 0.972428143024445f, -0.163742616772652f,\n  0.972302436828613f, -0.164104923605919f, 0.972176432609558f, -0.164467126131058f,\n  0.972050130367279f, -0.164829224348068f, 0.971923589706421f, -0.165191248059273f,\n  0.971796751022339f, -0.165553152561188f, 0.971669614315033f, -0.165914967656136f,\n  0.971542239189148f, -0.166276678442955f, 0.971414566040039f, -0.166638299822807f,\n  0.971286594867706f, -0.166999831795692f, 0.971158385276794f, -0.167361244559288f,\n  0.971029877662659f, -0.167722567915916f, 0.970901072025299f, -0.168083801865578f,\n  0.970772027969360f, -0.168444931507111f, 0.970642685890198f, -0.168805956840515f,\n  0.970513105392456f, -0.169166877865791f, 0.970383226871490f, -0.169527709484100f,\n  0.970253050327301f, -0.169888436794281f, 0.970122575759888f, -0.170249074697495f,\n  0.969991862773895f, -0.170609608292580f, 0.969860911369324f, -0.170970037579536f,\n  0.969729602336884f, -0.171330362558365f, 0.969598054885864f, -0.171690583229065f,\n  0.969466269016266f, -0.172050714492798f, 0.969334125518799f, -0.172410741448402f,\n  0.969201743602753f, -0.172770664095879f, 0.969069123268127f, -0.173130482435226f,\n  0.968936204910278f, -0.173490211367607f, 0.968802988529205f, -0.173849821090698f,\n  0.968669533729553f, -0.174209341406822f, 0.968535780906677f, -0.174568757414818f,\n  0.968401730060577f, -0.174928069114685f, 0.968267440795898f, -0.175287276506424f,\n  0.968132853507996f, -0.175646379590034f, 0.967997968196869f, -0.176005378365517f,\n  0.967862844467163f, -0.176364272832870f, 0.967727422714233f, -0.176723077893257f,\n  0.967591762542725f, -0.177081763744354f, 0.967455804347992f, -0.177440345287323f,\n  0.967319548130035f, -0.177798837423325f, 0.967183053493500f, -0.178157210350037f,\n  0.967046260833740f, -0.178515478968620f, 0.966909229755402f, -0.178873643279076f,\n  0.966771900653839f, -0.179231703281403f, 0.966634273529053f, -0.179589673876762f,\n  0.966496407985687f, -0.179947525262833f, 0.966358244419098f, -0.180305257439613f,\n  0.966219842433929f, -0.180662900209427f, 0.966081082820892f, -0.181020438671112f,\n  0.965942144393921f, -0.181377857923508f, 0.965802907943726f, -0.181735187768936f,\n  0.965663373470306f, -0.182092398405075f, 0.965523540973663f, -0.182449504733086f,\n  0.965383470058441f, -0.182806491851807f, 0.965243160724640f, -0.183163389563560f,\n  0.965102493762970f, -0.183520168066025f, 0.964961588382721f, -0.183876842260361f,\n  0.964820444583893f, -0.184233412146568f, 0.964679002761841f, -0.184589877724648f,\n  0.964537262916565f, -0.184946224093437f, 0.964395284652710f, -0.185302466154099f,\n  0.964253067970276f, -0.185658603906631f, 0.964110493659973f, -0.186014622449875f,\n  0.963967680931091f, -0.186370536684990f, 0.963824629783630f, -0.186726331710815f,\n  0.963681280612946f, -0.187082037329674f, 0.963537633419037f, -0.187437608838081f,\n  0.963393747806549f, -0.187793090939522f, 0.963249564170837f, -0.188148453831673f,\n  0.963105142116547f, -0.188503712415695f, 0.962960422039032f, -0.188858851790428f,\n  0.962815403938293f, -0.189213871955872f, 0.962670147418976f, -0.189568802714348f,\n  0.962524592876434f, -0.189923599362373f, 0.962378799915314f, -0.190278306603432f,\n  0.962232708930969f, -0.190632879734039f, 0.962086379528046f, -0.190987363457680f,\n  0.961939752101898f, -0.191341713070869f, 0.961792886257172f, -0.191695958375931f,\n  0.961645722389221f, -0.192050099372864f, 0.961498260498047f, -0.192404121160507f,\n  0.961350560188293f, -0.192758023738861f, 0.961202561855316f, -0.193111822009087f,\n  0.961054325103760f, -0.193465501070023f, 0.960905790328979f, -0.193819075822830f,\n  0.960757017135620f, -0.194172516465187f, 0.960607945919037f, -0.194525867700577f,\n  0.960458636283875f, -0.194879084825516f, 0.960309028625488f, -0.195232197642326f,\n  0.960159122943878f, -0.195585191249847f, 0.960008978843689f, -0.195938065648079f,\n  0.959858596324921f, -0.196290835738182f, 0.959707856178284f, -0.196643486618996f,\n  0.959556937217712f, -0.196996018290520f, 0.959405720233917f, -0.197348430752754f,\n  0.959254205226898f, -0.197700738906860f, 0.959102451801300f, -0.198052927851677f,\n  0.958950400352478f, -0.198404997587204f, 0.958798050880432f, -0.198756948113441f,\n  0.958645522594452f, -0.199108779430389f, 0.958492636680603f, -0.199460506439209f,\n  0.958339512348175f, -0.199812099337578f, 0.958186149597168f, -0.200163587927818f,\n  0.958032488822937f, -0.200514942407608f, 0.957878530025482f, -0.200866192579269f,\n  0.957724332809448f, -0.201217323541641f, 0.957569897174835f, -0.201568335294724f,\n  0.957415163516998f, -0.201919227838516f, 0.957260131835938f, -0.202270001173019f,\n  0.957104861736298f, -0.202620655298233f, 0.956949353218079f, -0.202971190214157f,\n  0.956793546676636f, -0.203321605920792f, 0.956637442111969f, -0.203671902418137f,\n  0.956481099128723f, -0.204022079706192f, 0.956324458122253f, -0.204372137784958f,\n  0.956167578697205f, -0.204722076654434f, 0.956010460853577f, -0.205071896314621f,\n  0.955853044986725f, -0.205421581864357f, 0.955695331096649f, -0.205771163105965f,\n  0.955537378787994f, -0.206120610237122f, 0.955379128456116f, -0.206469938158989f,\n  0.955220639705658f, -0.206819161772728f, 0.955061912536621f, -0.207168251276016f,\n  0.954902827739716f, -0.207517206668854f, 0.954743564128876f, -0.207866057753563f,\n  0.954584002494812f, -0.208214774727821f, 0.954424142837524f, -0.208563387393951f,\n  0.954264044761658f, -0.208911851048470f, 0.954103708267212f, -0.209260210394859f,\n  0.953943073749542f, -0.209608450531960f, 0.953782141208649f, -0.209956556558609f,\n  0.953620970249176f, -0.210304543375969f, 0.953459560871124f, -0.210652396082878f,\n  0.953297853469849f, -0.211000129580498f, 0.953135907649994f, -0.211347743868828f,\n  0.952973663806915f, -0.211695238947868f, 0.952811121940613f, -0.212042599916458f,\n  0.952648401260376f, -0.212389841675758f, 0.952485322952271f, -0.212736949324608f,\n  0.952322065830231f, -0.213083937764168f, 0.952158451080322f, -0.213430806994438f,\n  0.951994657516479f, -0.213777542114258f, 0.951830565929413f, -0.214124158024788f,\n  0.951666176319122f, -0.214470639824867f, 0.951501548290253f, -0.214817002415657f,\n  0.951336681842804f, -0.215163245797157f, 0.951171517372131f, -0.215509355068207f,\n  0.951006054878235f, -0.215855330228806f, 0.950840353965759f, -0.216201186180115f,\n  0.950674414634705f, -0.216546908020973f, 0.950508177280426f, -0.216892510652542f,\n  0.950341701507568f, -0.217237979173660f, 0.950174987316132f, -0.217583328485489f,\n  0.950007975101471f, -0.217928543686867f, 0.949840664863586f, -0.218273624777794f,\n  0.949673116207123f, -0.218618586659431f, 0.949505329132080f, -0.218963414430618f,\n  0.949337244033813f, -0.219308122992516f, 0.949168920516968f, -0.219652697443962f,\n  0.949000298976898f, -0.219997137784958f, 0.948831439018250f, -0.220341444015503f,\n  0.948662281036377f, -0.220685631036758f, 0.948492884635925f, -0.221029683947563f,\n  0.948323249816895f, -0.221373617649078f, 0.948153316974640f, -0.221717402338982f,\n  0.947983145713806f, -0.222061067819595f, 0.947812676429749f, -0.222404599189758f,\n  0.947641968727112f, -0.222748011350632f, 0.947470963001251f, -0.223091274499893f,\n  0.947299718856812f, -0.223434418439865f, 0.947128236293793f, -0.223777428269386f,\n  0.946956455707550f, -0.224120303988457f, 0.946784436702728f, -0.224463045597076f,\n  0.946612179279327f, -0.224805667996407f, 0.946439623832703f, -0.225148141384125f,\n  0.946266770362854f, -0.225490495562553f, 0.946093678474426f, -0.225832715630531f,\n  0.945920348167419f, -0.226174786686897f, 0.945746779441834f, -0.226516738533974f,\n  0.945572853088379f, -0.226858556270599f, 0.945398747920990f, -0.227200239896774f,\n  0.945224344730377f, -0.227541789412498f, 0.945049703121185f, -0.227883204817772f,\n  0.944874763488770f, -0.228224486112595f, 0.944699645042419f, -0.228565633296967f,\n  0.944524168968201f, -0.228906646370888f, 0.944348454475403f, -0.229247525334358f,\n  0.944172501564026f, -0.229588270187378f, 0.943996310234070f, -0.229928880929947f,\n  0.943819820880890f, -0.230269357562065f, 0.943643093109131f, -0.230609700083733f,\n  0.943466067314148f, -0.230949893593788f, 0.943288803100586f, -0.231289967894554f,\n  0.943111240863800f, -0.231629893183708f, 0.942933499813080f, -0.231969684362412f,\n  0.942755401134491f, -0.232309341430664f, 0.942577123641968f, -0.232648864388466f,\n  0.942398548126221f, -0.232988253235817f, 0.942219734191895f, -0.233327493071556f,\n  0.942040622234344f, -0.233666598796844f, 0.941861271858215f, -0.234005570411682f,\n  0.941681683063507f, -0.234344407916069f, 0.941501796245575f, -0.234683111310005f,\n  0.941321671009064f, -0.235021665692329f, 0.941141307353973f, -0.235360085964203f,\n  0.940960645675659f, -0.235698372125626f, 0.940779745578766f, -0.236036509275436f,\n  0.940598547458649f, -0.236374512314796f, 0.940417110919952f, -0.236712381243706f,\n  0.940235435962677f, -0.237050101161003f, 0.940053522586823f, -0.237387686967850f,\n  0.939871311187744f, -0.237725138664246f, 0.939688861370087f, -0.238062441349030f,\n  0.939506113529205f, -0.238399609923363f, 0.939323127269745f, -0.238736644387245f,\n  0.939139902591705f, -0.239073529839516f, 0.938956379890442f, -0.239410281181335f,\n  0.938772618770599f, -0.239746883511543f, 0.938588619232178f, -0.240083336830139f,\n  0.938404381275177f, -0.240419670939446f, 0.938219845294952f, -0.240755841135979f,\n  0.938035070896149f, -0.241091892123222f, 0.937849998474121f, -0.241427779197693f,\n  0.937664687633514f, -0.241763532161713f, 0.937479138374329f, -0.242099151015282f,\n  0.937293350696564f, -0.242434620857239f, 0.937107264995575f, -0.242769956588745f,\n  0.936920940876007f, -0.243105143308640f, 0.936734318733215f, -0.243440181016922f,\n  0.936547517776489f, -0.243775084614754f, 0.936360359191895f, -0.244109839200974f,\n  0.936173021793365f, -0.244444444775581f, 0.935985386371613f, -0.244778916239738f,\n  0.935797572135925f, -0.245113238692284f, 0.935609400272369f, -0.245447427034378f,\n  0.935421049594879f, -0.245781451463699f, 0.935232400894165f, -0.246115356683731f,\n  0.935043513774872f, -0.246449097990990f, 0.934854328632355f, -0.246782705187798f,\n  0.934664964675903f, -0.247116148471832f, 0.934475243091583f, -0.247449472546577f,\n  0.934285342693329f, -0.247782632708550f, 0.934095203876495f, -0.248115643858910f,\n  0.933904767036438f, -0.248448520898819f, 0.933714091777802f, -0.248781248927116f,\n  0.933523118495941f, -0.249113827943802f, 0.933331906795502f, -0.249446272850037f,\n  0.933140456676483f, -0.249778553843498f, 0.932948768138886f, -0.250110685825348f,\n  0.932756841182709f, -0.250442683696747f, 0.932564616203308f, -0.250774532556534f,\n  0.932372152805328f, -0.251106232404709f, 0.932179391384125f, -0.251437783241272f,\n  0.931986451148987f, -0.251769185066223f, 0.931793212890625f, -0.252100437879562f,\n  0.931599736213684f, -0.252431541681290f, 0.931405961513519f, -0.252762526273727f,\n  0.931211948394775f, -0.253093332052231f, 0.931017756462097f, -0.253423988819122f,\n  0.930823206901550f, -0.253754496574402f, 0.930628478527069f, -0.254084855318069f,\n  0.930433452129364f, -0.254415065050125f, 0.930238187313080f, -0.254745125770569f,\n  0.930042684078217f, -0.255075037479401f, 0.929846942424774f, -0.255404800176620f,\n  0.929650902748108f, -0.255734413862228f, 0.929454624652863f, -0.256063878536224f,\n  0.929258108139038f, -0.256393194198608f, 0.929061353206635f, -0.256722360849380f,\n  0.928864300251007f, -0.257051378488541f, 0.928667008876801f, -0.257380217313766f,\n  0.928469479084015f, -0.257708936929703f, 0.928271710872650f, -0.258037507534027f,\n  0.928073644638062f, -0.258365899324417f, 0.927875399589539f, -0.258694142103195f,\n  0.927676856517792f, -0.259022265672684f, 0.927478015422821f, -0.259350210428238f,\n  0.927278995513916f, -0.259678006172180f, 0.927079677581787f, -0.260005623102188f,\n  0.926880121231079f, -0.260333120822906f, 0.926680326461792f, -0.260660469532013f,\n  0.926480293273926f, -0.260987639427185f, 0.926280021667480f, -0.261314690113068f,\n  0.926079452037811f, -0.261641561985016f, 0.925878643989563f, -0.261968284845352f,\n  0.925677597522736f, -0.262294828891754f, 0.925476312637329f, -0.262621253728867f,\n  0.925274729728699f, -0.262947499752045f, 0.925072908401489f, -0.263273626565933f,\n  0.924870908260345f, -0.263599574565887f, 0.924668610095978f, -0.263925373554230f,\n  0.924466013908386f, -0.264250993728638f, 0.924263238906860f, -0.264576494693756f,\n  0.924060165882111f, -0.264901816844940f, 0.923856854438782f, -0.265226989984512f,\n  0.923653304576874f, -0.265552014112473f, 0.923449516296387f, -0.265876859426498f,\n  0.923245489597321f, -0.266201555728912f, 0.923041164875031f, -0.266526103019714f,\n  0.922836601734161f, -0.266850501298904f, 0.922631800174713f, -0.267174720764160f,\n  0.922426760196686f, -0.267498821020126f, 0.922221481800079f, -0.267822742462158f,\n  0.922015964984894f, -0.268146485090256f, 0.921810150146484f, -0.268470078706741f,\n  0.921604096889496f, -0.268793523311615f, 0.921397805213928f, -0.269116818904877f,\n  0.921191275119781f, -0.269439965486526f, 0.920984506607056f, -0.269762933254242f,\n  0.920777499675751f, -0.270085722208023f, 0.920570194721222f, -0.270408391952515f,\n  0.920362710952759f, -0.270730882883072f, 0.920154929161072f, -0.271053224802017f,\n  0.919946908950806f, -0.271375387907028f, 0.919738650321960f, -0.271697402000427f,\n  0.919530093669891f, -0.272019267082214f, 0.919321358203888f, -0.272340953350067f,\n  0.919112324714661f, -0.272662490606308f, 0.918903112411499f, -0.272983878850937f,\n  0.918693602085114f, -0.273305088281631f, 0.918483853340149f, -0.273626148700714f,\n  0.918273866176605f, -0.273947030305862f, 0.918063640594482f, -0.274267762899399f,\n  0.917853116989136f, -0.274588316679001f, 0.917642414569855f, -0.274908751249313f,\n  0.917431414127350f, -0.275228977203369f, 0.917220234870911f, -0.275549083948135f,\n  0.917008757591248f, -0.275868982076645f, 0.916797041893005f, -0.276188760995865f,\n  0.916585087776184f, -0.276508361101151f, 0.916372895240784f, -0.276827782392502f,\n  0.916160404682159f, -0.277147054672241f, 0.915947735309601f, -0.277466177940369f,\n  0.915734827518463f, -0.277785122394562f, 0.915521621704102f, -0.278103888034821f,\n  0.915308177471161f, -0.278422504663467f, 0.915094554424286f, -0.278740972280502f,\n  0.914880633354187f, -0.279059261083603f, 0.914666473865509f, -0.279377400875092f,\n  0.914452075958252f, -0.279695361852646f, 0.914237439632416f, -0.280013144016266f,\n  0.914022505283356f, -0.280330777168274f, 0.913807392120361f, -0.280648261308670f,\n  0.913592040538788f, -0.280965566635132f, 0.913376390933990f, -0.281282693147659f,\n  0.913160502910614f, -0.281599670648575f, 0.912944436073303f, -0.281916469335556f,\n  0.912728071212769f, -0.282233119010925f, 0.912511467933655f, -0.282549589872360f,\n  0.912294626235962f, -0.282865911722183f, 0.912077546119690f, -0.283182054758072f,\n  0.911860227584839f, -0.283498018980026f, 0.911642670631409f, -0.283813834190369f,\n  0.911424875259399f, -0.284129470586777f, 0.911206841468811f, -0.284444957971573f,\n  0.910988569259644f, -0.284760266542435f, 0.910769999027252f, -0.285075396299362f,\n  0.910551249980927f, -0.285390377044678f, 0.910332262516022f, -0.285705178976059f,\n  0.910112977027893f, -0.286019802093506f, 0.909893512725830f, -0.286334276199341f,\n  0.909673750400543f, -0.286648571491241f, 0.909453809261322f, -0.286962717771530f,\n  0.909233570098877f, -0.287276685237885f, 0.909013092517853f, -0.287590473890305f,\n  0.908792436122894f, -0.287904083728790f, 0.908571481704712f, -0.288217544555664f,\n  0.908350288867950f, -0.288530826568604f, 0.908128857612610f, -0.288843959569931f,\n  0.907907187938690f, -0.289156883955002f, 0.907685279846191f, -0.289469659328461f,\n  0.907463192939758f, -0.289782285690308f, 0.907240808010101f, -0.290094703435898f,\n  0.907018184661865f, -0.290406972169876f, 0.906795322895050f, -0.290719062089920f,\n  0.906572222709656f, -0.291031002998352f, 0.906348884105682f, -0.291342735290527f,\n  0.906125307083130f, -0.291654318571091f, 0.905901491641998f, -0.291965723037720f,\n  0.905677437782288f, -0.292276978492737f, 0.905453145503998f, -0.292588025331497f,\n  0.905228614807129f, -0.292898923158646f, 0.905003845691681f, -0.293209642171860f,\n  0.904778838157654f, -0.293520182371140f, 0.904553592205048f, -0.293830573558807f,\n  0.904328107833862f, -0.294140785932541f, 0.904102385044098f, -0.294450789690018f,\n  0.903876423835754f, -0.294760644435883f, 0.903650224208832f, -0.295070350170136f,\n  0.903423786163330f, -0.295379847288132f, 0.903197109699249f, -0.295689195394516f,\n  0.902970194816589f, -0.295998334884644f, 0.902743041515350f, -0.296307325363159f,\n  0.902515649795532f, -0.296616137027740f, 0.902288019657135f, -0.296924799680710f,\n  0.902060210704803f, -0.297233253717422f, 0.901832103729248f, -0.297541528940201f,\n  0.901603758335114f, -0.297849655151367f, 0.901375174522400f, -0.298157602548599f,\n  0.901146411895752f, -0.298465341329575f, 0.900917351245880f, -0.298772931098938f,\n  0.900688111782074f, -0.299080342054367f, 0.900458574295044f, -0.299387603998184f,\n  0.900228857994080f, -0.299694657325745f, 0.899998843669891f, -0.300001531839371f,\n  0.899768650531769f, -0.300308227539063f, 0.899538159370422f, -0.300614774227142f,\n  0.899307489395142f, -0.300921112298965f, 0.899076581001282f, -0.301227301359177f,\n  0.898845434188843f, -0.301533311605453f, 0.898614048957825f, -0.301839113235474f,\n  0.898382425308228f, -0.302144765853882f, 0.898150563240051f, -0.302450239658356f,\n  0.897918462753296f, -0.302755534648895f, 0.897686123847961f, -0.303060621023178f,\n  0.897453546524048f, -0.303365558385849f, 0.897220790386200f, -0.303670316934586f,\n  0.896987736225128f, -0.303974896669388f, 0.896754503250122f, -0.304279297590256f,\n  0.896520972251892f, -0.304583519697189f, 0.896287262439728f, -0.304887533187866f,\n  0.896053314208984f, -0.305191397666931f, 0.895819067955017f, -0.305495083332062f,\n  0.895584642887115f, -0.305798590183258f, 0.895349979400635f, -0.306101888418198f,\n  0.895115137100220f, -0.306405037641525f, 0.894879996776581f, -0.306708008050919f,\n  0.894644618034363f, -0.307010769844055f, 0.894409060478210f, -0.307313382625580f,\n  0.894173204898834f, -0.307615786790848f, 0.893937170505524f, -0.307918041944504f,\n  0.893700897693634f, -0.308220088481903f, 0.893464326858521f, -0.308521956205368f,\n  0.893227577209473f, -0.308823645114899f, 0.892990648746490f, -0.309125155210495f,\n  0.892753422260284f, -0.309426486492157f, 0.892515957355499f, -0.309727638959885f,\n  0.892278313636780f, -0.310028612613678f, 0.892040371894836f, -0.310329377651215f,\n  0.891802251338959f, -0.310629993677139f, 0.891563892364502f, -0.310930401086807f,\n  0.891325294971466f, -0.311230629682541f, 0.891086459159851f, -0.311530679464340f,\n  0.890847444534302f, -0.311830550432205f, 0.890608131885529f, -0.312130242586136f,\n  0.890368640422821f, -0.312429755926132f, 0.890128850936890f, -0.312729060649872f,\n  0.889888882637024f, -0.313028186559677f, 0.889648675918579f, -0.313327133655548f,\n  0.889408230781555f, -0.313625901937485f, 0.889167606830597f, -0.313924491405487f,\n  0.888926684856415f, -0.314222872257233f, 0.888685584068298f, -0.314521104097366f,\n  0.888444244861603f, -0.314819127321243f, 0.888202667236328f, -0.315116971731186f,\n  0.887960851192474f, -0.315414607524872f, 0.887718796730042f, -0.315712094306946f,\n  0.887476563453674f, -0.316009372472763f, 0.887234091758728f, -0.316306471824646f,\n  0.886991322040558f, -0.316603392362595f, 0.886748373508453f, -0.316900104284287f,\n  0.886505246162415f, -0.317196637392044f, 0.886261820793152f, -0.317492991685867f,\n  0.886018216609955f, -0.317789167165756f, 0.885774314403534f, -0.318085134029388f,\n  0.885530233383179f, -0.318380922079086f, 0.885285973548889f, -0.318676531314850f,\n  0.885041415691376f, -0.318971961736679f, 0.884796679019928f, -0.319267183542252f,\n  0.884551644325256f, -0.319562226533890f, 0.884306430816650f, -0.319857090711594f,\n  0.884061038494110f, -0.320151746273041f, 0.883815348148346f, -0.320446223020554f,\n  0.883569478988647f, -0.320740520954132f, 0.883323311805725f, -0.321034610271454f,\n  0.883076965808868f, -0.321328520774841f, 0.882830440998077f, -0.321622252464294f,\n  0.882583618164063f, -0.321915775537491f, 0.882336616516113f, -0.322209119796753f,\n  0.882089376449585f, -0.322502255439758f, 0.881841897964478f, -0.322795242071152f,\n  0.881594181060791f, -0.323088020086288f, 0.881346285343170f, -0.323380589485168f,\n  0.881098151206970f, -0.323672980070114f, 0.880849778652191f, -0.323965191841125f,\n  0.880601167678833f, -0.324257194995880f, 0.880352377891541f, -0.324549019336700f,\n  0.880103349685669f, -0.324840664863586f, 0.879854083061218f, -0.325132101774216f,\n  0.879604578018188f, -0.325423330068588f, 0.879354894161224f, -0.325714409351349f,\n  0.879104971885681f, -0.326005280017853f, 0.878854811191559f, -0.326295942068100f,\n  0.878604412078857f, -0.326586425304413f, 0.878353834152222f, -0.326876699924469f,\n  0.878103017807007f, -0.327166795730591f, 0.877851963043213f, -0.327456712722778f,\n  0.877600669860840f, -0.327746421098709f, 0.877349197864532f, -0.328035950660706f,\n  0.877097487449646f, -0.328325271606445f, 0.876845538616180f, -0.328614413738251f,\n  0.876593410968781f, -0.328903347253799f, 0.876341044902802f, -0.329192101955414f,\n  0.876088440418243f, -0.329480648040771f, 0.875835597515106f, -0.329769015312195f,\n  0.875582575798035f, -0.330057173967361f, 0.875329315662384f, -0.330345153808594f,\n  0.875075817108154f, -0.330632925033569f, 0.874822139739990f, -0.330920487642288f,\n  0.874568223953247f, -0.331207901239395f, 0.874314069747925f, -0.331495076417923f,\n  0.874059677124023f, -0.331782072782516f, 0.873805105686188f, -0.332068890333176f,\n  0.873550295829773f, -0.332355499267578f, 0.873295307159424f, -0.332641899585724f,\n  0.873040020465851f, -0.332928121089935f, 0.872784554958344f, -0.333214133977890f,\n  0.872528910636902f, -0.333499968051910f, 0.872272968292236f, -0.333785593509674f,\n  0.872016847133636f, -0.334071010351181f, 0.871760547161102f, -0.334356248378754f,\n  0.871503949165344f, -0.334641307592392f, 0.871247172355652f, -0.334926128387451f,\n  0.870990216732025f, -0.335210770368576f, 0.870733022689819f, -0.335495233535767f,\n  0.870475590229034f, -0.335779488086700f, 0.870217919349670f, -0.336063534021378f,\n  0.869960069656372f, -0.336347371339798f, 0.869701981544495f, -0.336631029844284f,\n  0.869443655014038f, -0.336914509534836f, 0.869185149669647f, -0.337197750806808f,\n  0.868926405906677f, -0.337480813264847f, 0.868667483329773f, -0.337763696908951f,\n  0.868408262729645f, -0.338046342134476f, 0.868148922920227f, -0.338328808546066f,\n  0.867889285087585f, -0.338611096143723f, 0.867629468441010f, -0.338893145322800f,\n  0.867369413375854f, -0.339175015687943f, 0.867109179496765f, -0.339456677436829f,\n  0.866848707199097f, -0.339738160371780f, 0.866588056087494f, -0.340019434690475f,\n  0.866327106952667f, -0.340300500392914f, 0.866066038608551f, -0.340581357479095f,\n  0.865804672241211f, -0.340862035751343f, 0.865543127059937f, -0.341142505407333f,\n  0.865281403064728f, -0.341422766447067f, 0.865019381046295f, -0.341702848672867f,\n  0.864757239818573f, -0.341982692480087f, 0.864494800567627f, -0.342262357473373f,\n  0.864232182502747f, -0.342541843652725f, 0.863969385623932f, -0.342821091413498f,\n  0.863706290721893f, -0.343100160360336f, 0.863443076610565f, -0.343379020690918f,\n  0.863179564476013f, -0.343657672405243f, 0.862915873527527f, -0.343936115503311f,\n  0.862652003765106f, -0.344214379787445f, 0.862387895584106f, -0.344492435455322f,\n  0.862123548984528f, -0.344770282506943f, 0.861859023571014f, -0.345047920942307f,\n  0.861594259738922f, -0.345325350761414f, 0.861329257488251f, -0.345602601766586f,\n  0.861064076423645f, -0.345879614353180f, 0.860798716545105f, -0.346156448125839f,\n  0.860533118247986f, -0.346433073282242f, 0.860267281532288f, -0.346709519624710f,\n  0.860001266002655f, -0.346985727548599f, 0.859735012054443f, -0.347261756658554f,\n  0.859468579292297f, -0.347537547349930f, 0.859201908111572f, -0.347813159227371f,\n  0.858934998512268f, -0.348088562488556f, 0.858667910099030f, -0.348363757133484f,\n  0.858400642871857f, -0.348638743162155f, 0.858133137226105f, -0.348913550376892f,\n  0.857865393161774f, -0.349188119173050f, 0.857597470283508f, -0.349462509155273f,\n  0.857329368591309f, -0.349736660718918f, 0.857060968875885f, -0.350010633468628f,\n  0.856792449951172f, -0.350284397602081f, 0.856523692607880f, -0.350557953119278f,\n  0.856254696846008f, -0.350831300020218f, 0.855985522270203f, -0.351104438304901f,\n  0.855716109275818f, -0.351377367973328f, 0.855446517467499f, -0.351650089025497f,\n  0.855176687240601f, -0.351922631263733f, 0.854906618595123f, -0.352194935083389f,\n  0.854636430740356f, -0.352467030286789f, 0.854365944862366f, -0.352738946676254f,\n  0.854095339775085f, -0.353010624647141f, 0.853824436664581f, -0.353282123804092f,\n  0.853553414344788f, -0.353553384542465f, 0.853282094001770f, -0.353824466466904f,\n  0.853010654449463f, -0.354095309972763f, 0.852738916873932f, -0.354365974664688f,\n  0.852467060089111f, -0.354636400938034f, 0.852194905281067f, -0.354906648397446f,\n  0.851922631263733f, -0.355176687240601f, 0.851650118827820f, -0.355446487665176f,\n  0.851377367973328f, -0.355716109275818f, 0.851104438304901f, -0.355985492467880f,\n  0.850831270217896f, -0.356254696846008f, 0.850557923316956f, -0.356523662805557f,\n  0.850284397602081f, -0.356792420148849f, 0.850010633468628f, -0.357060998678207f,\n  0.849736690521240f, -0.357329338788986f, 0.849462509155273f, -0.357597470283508f,\n  0.849188148975372f, -0.357865422964096f, 0.848913550376892f, -0.358133137226105f,\n  0.848638772964478f, -0.358400642871857f, 0.848363757133484f, -0.358667939901352f,\n  0.848088562488556f, -0.358935028314590f, 0.847813189029694f, -0.359201908111572f,\n  0.847537577152252f, -0.359468549489975f, 0.847261726856232f, -0.359735012054443f,\n  0.846985757350922f, -0.360001266002655f, 0.846709489822388f, -0.360267281532288f,\n  0.846433103084564f, -0.360533088445663f, 0.846156477928162f, -0.360798716545105f,\n  0.845879614353180f, -0.361064106225967f, 0.845602571964264f, -0.361329287290573f,\n  0.845325350761414f, -0.361594229936600f, 0.845047891139984f, -0.361858993768692f,\n  0.844770252704620f, -0.362123548984528f, 0.844492435455322f, -0.362387865781784f,\n  0.844214379787445f, -0.362651973962784f, 0.843936145305634f, -0.362915903329849f,\n  0.843657672405243f, -0.363179564476013f, 0.843379020690918f, -0.363443046808243f,\n  0.843100130558014f, -0.363706320524216f, 0.842821121215820f, -0.363969355821610f,\n  0.842541813850403f, -0.364232182502747f, 0.842262387275696f, -0.364494800567627f,\n  0.841982722282410f, -0.364757210016251f, 0.841702818870544f, -0.365019410848618f,\n  0.841422796249390f, -0.365281373262405f, 0.841142535209656f, -0.365543156862259f,\n  0.840862035751343f, -0.365804702043533f, 0.840581357479095f, -0.366066008806229f,\n  0.840300500392914f, -0.366327136754990f, 0.840019404888153f, -0.366588026285172f,\n  0.839738130569458f, -0.366848707199097f, 0.839456677436829f, -0.367109179496765f,\n  0.839175045490265f, -0.367369443178177f, 0.838893175125122f, -0.367629468441010f,\n  0.838611066341400f, -0.367889285087585f, 0.838328838348389f, -0.368148893117905f,\n  0.838046371936798f, -0.368408292531967f, 0.837763667106628f, -0.368667453527451f,\n  0.837480843067169f, -0.368926405906677f, 0.837197780609131f, -0.369185149669647f,\n  0.836914479732513f, -0.369443655014038f, 0.836631059646606f, -0.369701951742172f,\n  0.836347401142120f, -0.369960039854050f, 0.836063504219055f, -0.370217919349670f,\n  0.835779488086700f, -0.370475560426712f, 0.835495233535767f, -0.370732992887497f,\n  0.835210800170898f, -0.370990216732025f, 0.834926128387451f, -0.371247202157974f,\n  0.834641277790070f, -0.371503978967667f, 0.834356248378754f, -0.371760547161102f,\n  0.834071040153503f, -0.372016876935959f, 0.833785593509674f, -0.372272998094559f,\n  0.833499968051910f, -0.372528880834579f, 0.833214163780212f, -0.372784584760666f,\n  0.832928121089935f, -0.373040050268173f, 0.832641899585724f, -0.373295277357101f,\n  0.832355499267578f, -0.373550295829773f, 0.832068860530853f, -0.373805105686188f,\n  0.831782102584839f, -0.374059677124023f, 0.831495106220245f, -0.374314039945602f,\n  0.831207871437073f, -0.374568194150925f, 0.830920517444611f, -0.374822109937668f,\n  0.830632925033569f, -0.375075817108154f, 0.830345153808594f, -0.375329315662384f,\n  0.830057144165039f, -0.375582575798035f, 0.829769015312195f, -0.375835597515106f,\n  0.829480648040771f, -0.376088410615921f, 0.829192101955414f, -0.376341015100479f,\n  0.828903317451477f, -0.376593410968781f, 0.828614413738251f, -0.376845568418503f,\n  0.828325271606445f, -0.377097487449646f, 0.828035950660706f, -0.377349197864532f,\n  0.827746450901031f, -0.377600699663162f, 0.827456712722778f, -0.377851963043213f,\n  0.827166795730591f, -0.378102988004684f, 0.826876699924469f, -0.378353834152222f,\n  0.826586425304413f, -0.378604412078857f, 0.826295912265778f, -0.378854811191559f,\n  0.826005280017853f, -0.379104942083359f, 0.825714409351349f, -0.379354894161224f,\n  0.825423359870911f, -0.379604607820511f, 0.825132071971893f, -0.379854083061218f,\n  0.824840664863586f, -0.380103349685669f, 0.824549019336700f, -0.380352377891541f,\n  0.824257194995880f, -0.380601197481155f, 0.823965191841125f, -0.380849778652191f,\n  0.823673009872437f, -0.381098151206970f, 0.823380589485168f, -0.381346285343170f,\n  0.823087990283966f, -0.381594210863113f, 0.822795212268829f, -0.381841897964478f,\n  0.822502255439758f, -0.382089376449585f, 0.822209119796753f, -0.382336616516113f,\n  0.821915745735168f, -0.382583618164063f, 0.821622252464294f, -0.382830440998077f,\n  0.821328520774841f, -0.383076995611191f, 0.821034610271454f, -0.383323341608047f,\n  0.820740520954132f, -0.383569449186325f, 0.820446193218231f, -0.383815348148346f,\n  0.820151746273041f, -0.384061008691788f, 0.819857060909271f, -0.384306460618973f,\n  0.819562196731567f, -0.384551674127579f, 0.819267153739929f, -0.384796649217606f,\n  0.818971931934357f, -0.385041415691376f, 0.818676531314850f, -0.385285943746567f,\n  0.818380951881409f, -0.385530263185501f, 0.818085134029388f, -0.385774344205856f,\n  0.817789137363434f, -0.386018186807632f, 0.817493021488190f, -0.386261820793152f,\n  0.817196667194366f, -0.386505216360092f, 0.816900074481964f, -0.386748403310776f,\n  0.816603362560272f, -0.386991351842880f, 0.816306471824646f, -0.387234061956406f,\n  0.816009342670441f, -0.387476563453674f, 0.815712094306946f, -0.387718826532364f,\n  0.815414607524872f, -0.387960851192474f, 0.815116941928864f, -0.388202667236328f,\n  0.814819097518921f, -0.388444244861603f, 0.814521074295044f, -0.388685584068298f,\n  0.814222872257233f, -0.388926714658737f, 0.813924491405487f, -0.389167606830597f,\n  0.813625931739807f, -0.389408260583878f, 0.813327133655548f, -0.389648675918579f,\n  0.813028216362000f, -0.389888882637024f, 0.812729060649872f, -0.390128880739212f,\n  0.812429726123810f, -0.390368610620499f, 0.812130272388458f, -0.390608131885529f,\n  0.811830580234528f, -0.390847414731979f, 0.811530709266663f, -0.391086459159851f,\n  0.811230659484863f, -0.391325294971466f, 0.810930430889130f, -0.391563892364502f,\n  0.810629963874817f, -0.391802251338959f, 0.810329377651215f, -0.392040401697159f,\n  0.810028612613678f, -0.392278283834457f, 0.809727668762207f, -0.392515957355499f,\n  0.809426486492157f, -0.392753422260284f, 0.809125185012817f, -0.392990618944168f,\n  0.808823645114899f, -0.393227607011795f, 0.808521986007690f, -0.393464356660843f,\n  0.808220088481903f, -0.393700867891312f, 0.807918012142181f, -0.393937170505524f,\n  0.807615816593170f, -0.394173204898834f, 0.807313382625580f, -0.394409030675888f,\n  0.807010769844055f, -0.394644618034363f, 0.806707978248596f, -0.394879996776581f,\n  0.806405067443848f, -0.395115107297897f, 0.806101918220520f, -0.395350009202957f,\n  0.805798590183258f, -0.395584672689438f, 0.805495083332062f, -0.395819097757339f,\n  0.805191397666931f, -0.396053284406662f, 0.804887533187866f, -0.396287262439728f,\n  0.804583489894867f, -0.396520972251892f, 0.804279267787933f, -0.396754473447800f,\n  0.803974866867065f, -0.396987736225128f, 0.803670346736908f, -0.397220760583878f,\n  0.803365588188171f, -0.397453576326370f, 0.803060650825500f, -0.397686123847961f,\n  0.802755534648895f, -0.397918462753296f, 0.802450239658356f, -0.398150533437729f,\n  0.802144765853882f, -0.398382395505905f, 0.801839113235474f, -0.398614019155502f,\n  0.801533281803131f, -0.398845434188843f, 0.801227271556854f, -0.399076581001282f,\n  0.800921142101288f, -0.399307489395142f, 0.800614774227142f, -0.399538189172745f,\n  0.800308227539063f, -0.399768620729446f, 0.800001561641693f, -0.399998843669891f,\n  0.799694657325745f, -0.400228828191757f, 0.799387574195862f, -0.400458574295044f,\n  0.799080371856689f, -0.400688081979752f, 0.798772931098938f, -0.400917351245880f,\n  0.798465371131897f, -0.401146411895752f, 0.798157572746277f, -0.401375204324722f,\n  0.797849655151367f, -0.401603758335114f, 0.797541558742523f, -0.401832103729248f,\n  0.797233223915100f, -0.402060180902481f, 0.796924769878387f, -0.402288049459457f,\n  0.796616137027740f, -0.402515679597855f, 0.796307325363159f, -0.402743041515350f,\n  0.795998334884644f, -0.402970194816589f, 0.795689165592194f, -0.403197109699249f,\n  0.795379877090454f, -0.403423786163330f, 0.795070350170136f, -0.403650224208832f,\n  0.794760644435883f, -0.403876423835754f, 0.794450819492340f, -0.404102355241776f,\n  0.794140756130219f, -0.404328078031540f, 0.793830573558807f, -0.404553562402725f,\n  0.793520212173462f, -0.404778808355331f, 0.793209671974182f, -0.405003815889359f,\n  0.792898952960968f, -0.405228585004807f, 0.792588055133820f, -0.405453115701675f,\n  0.792276978492737f, -0.405677437782288f, 0.791965723037720f, -0.405901491641998f,\n  0.791654348373413f, -0.406125307083130f, 0.791342735290527f, -0.406348884105682f,\n  0.791031002998352f, -0.406572192907333f, 0.790719091892242f, -0.406795293092728f,\n  0.790407001972198f, -0.407018154859543f, 0.790094733238220f, -0.407240778207779f,\n  0.789782285690308f, -0.407463163137436f, 0.789469659328461f, -0.407685309648514f,\n  0.789156913757324f, -0.407907217741013f, 0.788843929767609f, -0.408128857612610f,\n  0.788530826568604f, -0.408350288867950f, 0.788217544555664f, -0.408571451902390f,\n  0.787904083728790f, -0.408792406320572f, 0.787590444087982f, -0.409013092517853f,\n  0.787276685237885f, -0.409233570098877f, 0.786962687969208f, -0.409453779459000f,\n  0.786648571491241f, -0.409673750400543f, 0.786334276199341f, -0.409893482923508f,\n  0.786019802093506f, -0.410112977027893f, 0.785705149173737f, -0.410332232713699f,\n  0.785390377044678f, -0.410551249980927f, 0.785075426101685f, -0.410770028829575f,\n  0.784760236740112f, -0.410988569259644f, 0.784444928169250f, -0.411206841468811f,\n  0.784129500389099f, -0.411424905061722f, 0.783813834190369f, -0.411642700433731f,\n  0.783498048782349f, -0.411860257387161f, 0.783182024955750f, -0.412077575922012f,\n  0.782865881919861f, -0.412294656038284f, 0.782549619674683f, -0.412511497735977f,\n  0.782233119010925f, -0.412728071212769f, 0.781916499137878f, -0.412944436073303f,\n  0.781599700450897f, -0.413160532712936f, 0.781282722949982f, -0.413376390933990f,\n  0.780965566635132f, -0.413592010736465f, 0.780648231506348f, -0.413807392120361f,\n  0.780330777168274f, -0.414022535085678f, 0.780013144016266f, -0.414237409830093f,\n  0.779695332050323f, -0.414452046155930f, 0.779377400875092f, -0.414666473865509f,\n  0.779059290885925f, -0.414880603551865f, 0.778741002082825f, -0.415094524621964f,\n  0.778422534465790f, -0.415308207273483f, 0.778103888034821f, -0.415521621704102f,\n  0.777785122394562f, -0.415734797716141f, 0.777466177940369f, -0.415947735309601f,\n  0.777147054672241f, -0.416160434484482f, 0.776827812194824f, -0.416372895240784f,\n  0.776508331298828f, -0.416585087776184f, 0.776188731193542f, -0.416797041893005f,\n  0.775869011878967f, -0.417008757591248f, 0.775549054145813f, -0.417220205068588f,\n  0.775228977203369f, -0.417431443929672f, 0.774908721446991f, -0.417642414569855f,\n  0.774588346481323f, -0.417853146791458f, 0.774267733097076f, -0.418063640594482f,\n  0.773947000503540f, -0.418273866176605f, 0.773626148700714f, -0.418483853340149f,\n  0.773305058479309f, -0.418693602085114f, 0.772983849048615f, -0.418903112411499f,\n  0.772662520408630f, -0.419112354516983f, 0.772340953350067f, -0.419321358203888f,\n  0.772019267082214f, -0.419530123472214f, 0.771697402000427f, -0.419738620519638f,\n  0.771375417709351f, -0.419946908950806f, 0.771053194999695f, -0.420154929161072f,\n  0.770730912685394f, -0.420362681150436f, 0.770408391952515f, -0.420570224523544f,\n  0.770085752010345f, -0.420777499675751f, 0.769762933254242f, -0.420984506607056f,\n  0.769439935684204f, -0.421191304922104f, 0.769116818904877f, -0.421397835016251f,\n  0.768793523311615f, -0.421604126691818f, 0.768470108509064f, -0.421810150146484f,\n  0.768146514892578f, -0.422015935182571f, 0.767822742462158f, -0.422221481800079f,\n  0.767498791217804f, -0.422426789999008f, 0.767174720764160f, -0.422631829977036f,\n  0.766850471496582f, -0.422836631536484f, 0.766526103019714f, -0.423041164875031f,\n  0.766201555728912f, -0.423245459794998f, 0.765876889228821f, -0.423449516296387f,\n  0.765551984310150f, -0.423653304576874f, 0.765226960182190f, -0.423856884241104f,\n  0.764901816844940f, -0.424060165882111f, 0.764576494693756f, -0.424263238906860f,\n  0.764250993728638f, -0.424466013908386f, 0.763925373554230f, -0.424668580293655f,\n  0.763599574565887f, -0.424870878458023f, 0.763273596763611f, -0.425072938203812f,\n  0.762947499752045f, -0.425274729728699f, 0.762621283531189f, -0.425476282835007f,\n  0.762294828891754f, -0.425677597522736f, 0.761968255043030f, -0.425878643989563f,\n  0.761641561985016f, -0.426079452037811f, 0.761314690113068f, -0.426279991865158f,\n  0.760987639427185f, -0.426480293273926f, 0.760660469532013f, -0.426680356264114f,\n  0.760333120822906f, -0.426880151033401f, 0.760005652904511f, -0.427079707384110f,\n  0.759678006172180f, -0.427278995513916f, 0.759350180625916f, -0.427478045225143f,\n  0.759022235870361f, -0.427676826715469f, 0.758694171905518f, -0.427875369787216f,\n  0.758365929126740f, -0.428073674440384f, 0.758037507534027f, -0.428271710872650f,\n  0.757708966732025f, -0.428469479084015f, 0.757380247116089f, -0.428667008876801f,\n  0.757051348686218f, -0.428864300251007f, 0.756722390651703f, -0.429061323404312f,\n  0.756393194198608f, -0.429258108139038f, 0.756063878536224f, -0.429454624652863f,\n  0.755734443664551f, -0.429650902748108f, 0.755404829978943f, -0.429846942424774f,\n  0.755075037479401f, -0.430042684078217f, 0.754745125770569f, -0.430238217115402f,\n  0.754415094852448f, -0.430433481931686f, 0.754084885120392f, -0.430628478527069f,\n  0.753754496574402f, -0.430823236703873f, 0.753423988819122f, -0.431017726659775f,\n  0.753093302249908f, -0.431211978197098f, 0.752762496471405f, -0.431405961513519f,\n  0.752431571483612f, -0.431599706411362f, 0.752100467681885f, -0.431793183088303f,\n  0.751769185066223f, -0.431986421346664f, 0.751437783241272f, -0.432179391384125f,\n  0.751106262207031f, -0.432372123003006f, 0.750774562358856f, -0.432564586400986f,\n  0.750442683696747f, -0.432756811380386f, 0.750110685825348f, -0.432948768138886f,\n  0.749778568744659f, -0.433140486478806f, 0.749446272850037f, -0.433331936597824f,\n  0.749113857746124f, -0.433523118495941f, 0.748781263828278f, -0.433714061975479f,\n  0.748448550701141f, -0.433904737234116f, 0.748115658760071f, -0.434095174074173f,\n  0.747782647609711f, -0.434285342693329f, 0.747449457645416f, -0.434475272893906f,\n  0.747116148471832f, -0.434664934873581f, 0.746782720088959f, -0.434854328632355f,\n  0.746449112892151f, -0.435043483972549f, 0.746115326881409f, -0.435232400894165f,\n  0.745781481266022f, -0.435421019792557f, 0.745447397232056f, -0.435609430074692f,\n  0.745113253593445f, -0.435797542333603f, 0.744778931140900f, -0.435985416173935f,\n  0.744444429874420f, -0.436173021793365f, 0.744109809398651f, -0.436360388994217f,\n  0.743775069713593f, -0.436547487974167f, 0.743440151214600f, -0.436734348535538f,\n  0.743105113506317f, -0.436920911073685f, 0.742769956588745f, -0.437107264995575f,\n  0.742434620857239f, -0.437293320894241f, 0.742099165916443f, -0.437479138374329f,\n  0.741763532161713f, -0.437664687633514f, 0.741427779197693f, -0.437849998474121f,\n  0.741091907024384f, -0.438035041093826f, 0.740755856037140f, -0.438219845294952f,\n  0.740419685840607f, -0.438404351472855f, 0.740083336830139f, -0.438588619232178f,\n  0.739746868610382f, -0.438772648572922f, 0.739410281181335f, -0.438956409692764f,\n  0.739073514938354f, -0.439139902591705f, 0.738736629486084f, -0.439323127269745f,\n  0.738399624824524f, -0.439506113529205f, 0.738062441349030f, -0.439688831567764f,\n  0.737725138664246f, -0.439871311187744f, 0.737387716770172f, -0.440053492784500f,\n  0.737050116062164f, -0.440235435962677f, 0.736712396144867f, -0.440417140722275f,\n  0.736374497413635f, -0.440598547458649f, 0.736036539077759f, -0.440779715776443f,\n  0.735698342323303f, -0.440960645675659f, 0.735360085964203f, -0.441141277551651f,\n  0.735021650791168f, -0.441321671009064f, 0.734683096408844f, -0.441501796245575f,\n  0.734344422817230f, -0.441681683063507f, 0.734005570411682f, -0.441861271858215f,\n  0.733666598796844f, -0.442040622234344f, 0.733327507972717f, -0.442219734191895f,\n  0.732988238334656f, -0.442398548126221f, 0.732648849487305f, -0.442577123641968f,\n  0.732309341430664f, -0.442755430936813f, 0.731969714164734f, -0.442933470010757f,\n  0.731629908084869f, -0.443111270666122f, 0.731289982795715f, -0.443288803100586f,\n  0.730949878692627f, -0.443466067314148f, 0.730609714984894f, -0.443643063306808f,\n  0.730269372463226f, -0.443819820880890f, 0.729928910732269f, -0.443996280431747f,\n  0.729588270187378f, -0.444172531366348f, 0.729247510433197f, -0.444348484277725f,\n  0.728906631469727f, -0.444524168968201f, 0.728565633296967f, -0.444699615240097f,\n  0.728224515914917f, -0.444874793291092f, 0.727883219718933f, -0.445049703121185f,\n  0.727541804313660f, -0.445224374532700f, 0.727200269699097f, -0.445398747920990f,\n  0.726858556270599f, -0.445572882890701f, 0.726516723632813f, -0.445746749639511f,\n  0.726174771785736f, -0.445920348167419f, 0.725832700729370f, -0.446093708276749f,\n  0.725490510463715f, -0.446266770362854f, 0.725148141384125f, -0.446439594030380f,\n  0.724805653095245f, -0.446612149477005f, 0.724463045597076f, -0.446784436702728f,\n  0.724120318889618f, -0.446956485509872f, 0.723777413368225f, -0.447128236293793f,\n  0.723434448242188f, -0.447299748659134f, 0.723091304302216f, -0.447470992803574f,\n  0.722747981548309f, -0.447641968727112f, 0.722404599189758f, -0.447812676429749f,\n  0.722061097621918f, -0.447983115911484f, 0.721717417240143f, -0.448153316974640f,\n  0.721373617649078f, -0.448323249816895f, 0.721029698848724f, -0.448492884635925f,\n  0.720685660839081f, -0.448662281036377f, 0.720341444015503f, -0.448831409215927f,\n  0.719997107982636f, -0.449000298976898f, 0.719652712345123f, -0.449168890714645f,\n  0.719308137893677f, -0.449337244033813f, 0.718963444232941f, -0.449505299329758f,\n  0.718618571758270f, -0.449673116207123f, 0.718273639678955f, -0.449840664863586f,\n  0.717928528785706f, -0.450007945299149f, 0.717583298683167f, -0.450174957513809f,\n  0.717238008975983f, -0.450341701507568f, 0.716892480850220f, -0.450508207082748f,\n  0.716546893119812f, -0.450674414634705f, 0.716201186180115f, -0.450840383768082f,\n  0.715855300426483f, -0.451006084680557f, 0.715509355068207f, -0.451171487569809f,\n  0.715163230895996f, -0.451336652040482f, 0.714816987514496f, -0.451501548290253f,\n  0.714470624923706f, -0.451666176319122f, 0.714124143123627f, -0.451830536127090f,\n  0.713777542114258f, -0.451994657516479f, 0.713430821895599f, -0.452158480882645f,\n  0.713083922863007f, -0.452322036027908f, 0.712736964225769f, -0.452485352754593f,\n  0.712389826774597f, -0.452648371458054f, 0.712042629718781f, -0.452811151742935f,\n  0.711695253849030f, -0.452973634004593f, 0.711347758769989f, -0.453135877847672f,\n  0.711000144481659f, -0.453297853469849f, 0.710652410984039f, -0.453459560871124f,\n  0.710304558277130f, -0.453621000051498f, 0.709956526756287f, -0.453782171010971f,\n  0.709608435630798f, -0.453943043947220f, 0.709260225296021f, -0.454103678464890f,\n  0.708911836147308f, -0.454264044761658f, 0.708563387393951f, -0.454424172639847f,\n  0.708214759826660f, -0.454584002494812f, 0.707866072654724f, -0.454743564128876f,\n  0.707517206668854f, -0.454902857542038f, 0.707168221473694f, -0.455061882734299f,\n  0.706819176673889f, -0.455220639705658f, 0.706469953060150f, -0.455379128456116f,\n  0.706120610237122f, -0.455537378787994f, 0.705771148204803f, -0.455695331096649f,\n  0.705421566963196f, -0.455853015184402f, 0.705071866512299f, -0.456010431051254f,\n  0.704722046852112f, -0.456167578697205f, 0.704372167587280f, -0.456324487924576f,\n  0.704022109508514f, -0.456481099128723f, 0.703671932220459f, -0.456637442111969f,\n  0.703321635723114f, -0.456793516874313f, 0.702971220016479f, -0.456949323415756f,\n  0.702620685100555f, -0.457104891538620f, 0.702270030975342f, -0.457260161638260f,\n  0.701919257640839f, -0.457415163516998f, 0.701568365097046f, -0.457569897174835f,\n  0.701217353343964f, -0.457724362611771f, 0.700866222381592f, -0.457878559827805f,\n  0.700514972209930f, -0.458032488822937f, 0.700163602828979f, -0.458186149597168f,\n  0.699812114238739f, -0.458339542150497f, 0.699460506439209f, -0.458492636680603f,\n  0.699108779430389f, -0.458645492792130f, 0.698756933212280f, -0.458798080682755f,\n  0.698404967784882f, -0.458950400352478f, 0.698052942752838f, -0.459102421998978f,\n  0.697700738906860f, -0.459254205226898f, 0.697348415851593f, -0.459405690431595f,\n  0.696996033191681f, -0.459556937217712f, 0.696643471717834f, -0.459707885980606f,\n  0.696290850639343f, -0.459858566522598f, 0.695938050746918f, -0.460008978843689f,\n  0.695585191249847f, -0.460159152746201f, 0.695232212543488f, -0.460309028625488f,\n  0.694879114627838f, -0.460458606481552f, 0.694525837898254f, -0.460607945919037f,\n  0.694172501564026f, -0.460757017135620f, 0.693819046020508f, -0.460905820131302f,\n  0.693465530872345f, -0.461054325103760f, 0.693111836910248f, -0.461202591657639f,\n  0.692758023738861f, -0.461350560188293f, 0.692404091358185f, -0.461498260498047f,\n  0.692050099372864f, -0.461645722389221f, 0.691695988178253f, -0.461792886257172f,\n  0.691341698169708f, -0.461939752101898f, 0.690987348556519f, -0.462086379528046f,\n  0.690632879734039f, -0.462232738733292f, 0.690278291702271f, -0.462378799915314f,\n  0.689923584461212f, -0.462524622678757f, 0.689568817615509f, -0.462670147418976f,\n  0.689213871955872f, -0.462815403938293f, 0.688858866691589f, -0.462960392236710f,\n  0.688503682613373f, -0.463105112314224f, 0.688148438930511f, -0.463249564170837f,\n  0.687793076038361f, -0.463393747806549f, 0.687437593936920f, -0.463537633419037f,\n  0.687082052230835f, -0.463681250810623f, 0.686726331710815f, -0.463824629783630f,\n  0.686370551586151f, -0.463967710733414f, 0.686014592647552f, -0.464110493659973f,\n  0.685658574104309f, -0.464253038167953f, 0.685302436351776f, -0.464395314455032f,\n  0.684946238994598f, -0.464537292718887f, 0.684589862823486f, -0.464679002761841f,\n  0.684233427047729f, -0.464820444583893f, 0.683876872062683f, -0.464961618185043f,\n  0.683520197868347f, -0.465102523565292f, 0.683163404464722f, -0.465243130922318f,\n  0.682806491851807f, -0.465383470058441f, 0.682449519634247f, -0.465523540973663f,\n  0.682092368602753f, -0.465663343667984f, 0.681735157966614f, -0.465802878141403f,\n  0.681377887725830f, -0.465942144393921f, 0.681020438671112f, -0.466081112623215f,\n  0.680662930011749f, -0.466219812631607f, 0.680305242538452f, -0.466358244419098f,\n  0.679947495460510f, -0.466496407985687f, 0.679589688777924f, -0.466634273529053f,\n  0.679231703281403f, -0.466771900653839f, 0.678873658180237f, -0.466909229755402f,\n  0.678515493869781f, -0.467046260833740f, 0.678157210350037f, -0.467183053493500f,\n  0.677798807621002f, -0.467319577932358f, 0.677440345287323f, -0.467455804347992f,\n  0.677081763744354f, -0.467591762542725f, 0.676723062992096f, -0.467727422714233f,\n  0.676364302635193f, -0.467862844467163f, 0.676005363464355f, -0.467997968196869f,\n  0.675646364688873f, -0.468132823705673f, 0.675287246704102f, -0.468267410993576f,\n  0.674928069114685f, -0.468401730060577f, 0.674568772315979f, -0.468535751104355f,\n  0.674209356307983f, -0.468669503927231f, 0.673849821090698f, -0.468802988529205f,\n  0.673490226268768f, -0.468936175107956f, 0.673130512237549f, -0.469069123268127f,\n  0.672770678997040f, -0.469201773405075f, 0.672410726547241f, -0.469334155321121f,\n  0.672050714492798f, -0.469466239213943f, 0.671690583229065f, -0.469598054885864f,\n  0.671330332756042f, -0.469729602336884f, 0.670970022678375f, -0.469860881567001f,\n  0.670609593391418f, -0.469991862773895f, 0.670249044895172f, -0.470122605562210f,\n  0.669888436794281f, -0.470253020524979f, 0.669527709484100f, -0.470383197069168f,\n  0.669166862964630f, -0.470513075590134f, 0.668805956840515f, -0.470642685890198f,\n  0.668444931507111f, -0.470772027969360f, 0.668083786964417f, -0.470901101827621f,\n  0.667722582817078f, -0.471029877662659f, 0.667361259460449f, -0.471158385276794f,\n  0.666999816894531f, -0.471286594867706f, 0.666638314723969f, -0.471414536237717f,\n  0.666276693344116f, -0.471542209386826f, 0.665914952754974f, -0.471669614315033f,\n  0.665553152561188f, -0.471796721220016f, 0.665191233158112f, -0.471923559904099f,\n  0.664829254150391f, -0.472050130367279f, 0.664467096328735f, -0.472176402807236f,\n  0.664104938507080f, -0.472302407026291f, 0.663742601871490f, -0.472428143024445f,\n  0.663380205631256f, -0.472553610801697f, 0.663017749786377f, -0.472678780555725f,\n  0.662655174732208f, -0.472803652286530f, 0.662292480468750f, -0.472928285598755f,\n  0.661929666996002f, -0.473052620887756f, 0.661566793918610f, -0.473176687955856f,\n  0.661203861236572f, -0.473300457000732f, 0.660840749740601f, -0.473423957824707f,\n  0.660477638244629f, -0.473547190427780f, 0.660114347934723f, -0.473670125007629f,\n  0.659750998020172f, -0.473792791366577f, 0.659387588500977f, -0.473915189504623f,\n  0.659024059772491f, -0.474037289619446f, 0.658660411834717f, -0.474159121513367f,\n  0.658296704292297f, -0.474280685186386f, 0.657932877540588f, -0.474401950836182f,\n  0.657568991184235f, -0.474522948265076f, 0.657204985618591f, -0.474643647670746f,\n  0.656840860843658f, -0.474764078855515f, 0.656476676464081f, -0.474884241819382f,\n  0.656112432479858f, -0.475004136562347f, 0.655748009681702f, -0.475123733282089f,\n  0.655383586883545f, -0.475243031978607f, 0.655019044876099f, -0.475362062454224f,\n  0.654654383659363f, -0.475480824708939f, 0.654289662837982f, -0.475599318742752f,\n  0.653924822807312f, -0.475717514753342f, 0.653559923171997f, -0.475835442543030f,\n  0.653194904327393f, -0.475953072309494f, 0.652829825878143f, -0.476070433855057f,\n  0.652464628219604f, -0.476187497377396f, 0.652099311351776f, -0.476304292678833f,\n  0.651733994483948f, -0.476420819759369f, 0.651368498802185f, -0.476537048816681f,\n  0.651003003120422f, -0.476653009653091f, 0.650637328624725f, -0.476768702268600f,\n  0.650271594524384f, -0.476884096860886f, 0.649905800819397f, -0.476999223232269f,\n  0.649539887905121f, -0.477114051580429f, 0.649173915386200f, -0.477228611707687f,\n  0.648807883262634f, -0.477342873811722f, 0.648441672325134f, -0.477456867694855f,\n  0.648075461387634f, -0.477570593357086f, 0.647709131240845f, -0.477684020996094f,\n  0.647342681884766f, -0.477797180414200f, 0.646976172924042f, -0.477910041809082f,\n  0.646609604358673f, -0.478022634983063f, 0.646242916584015f, -0.478134930133820f,\n  0.645876109600067f, -0.478246957063675f, 0.645509302616119f, -0.478358715772629f,\n  0.645142316818237f, -0.478470176458359f, 0.644775331020355f, -0.478581339120865f,\n  0.644408226013184f, -0.478692263364792f, 0.644041001796722f, -0.478802859783173f,\n  0.643673717975616f, -0.478913217782974f, 0.643306374549866f, -0.479023247957230f,\n  0.642938911914825f, -0.479133039712906f, 0.642571389675140f, -0.479242533445358f,\n  0.642203748226166f, -0.479351729154587f, 0.641836047172546f, -0.479460656642914f,\n  0.641468286514282f, -0.479569315910339f, 0.641100406646729f, -0.479677677154541f,\n  0.640732467174530f, -0.479785770177841f, 0.640364408493042f, -0.479893565177917f,\n  0.639996349811554f, -0.480001062154770f, 0.639628112316132f, -0.480108320713043f,\n  0.639259815216064f, -0.480215251445770f, 0.638891458511353f, -0.480321943759918f,\n  0.638523042201996f, -0.480428308248520f, 0.638154506683350f, -0.480534434318542f,\n  0.637785911560059f, -0.480640232563019f, 0.637417197227478f, -0.480745792388916f,\n  0.637048482894897f, -0.480851024389267f, 0.636679589748383f, -0.480956017971039f,\n  0.636310696601868f, -0.481060713529587f, 0.635941684246063f, -0.481165111064911f,\n  0.635572552680969f, -0.481269240379334f, 0.635203421115875f, -0.481373071670532f,\n  0.634834170341492f, -0.481476634740829f, 0.634464859962463f, -0.481579899787903f,\n  0.634095430374146f, -0.481682896614075f, 0.633725941181183f, -0.481785595417023f,\n  0.633356392383575f, -0.481888025999069f, 0.632986724376678f, -0.481990188360214f,\n  0.632616996765137f, -0.482092022895813f, 0.632247209548950f, -0.482193619012833f,\n  0.631877362728119f, -0.482294887304306f, 0.631507396697998f, -0.482395917177200f,\n  0.631137371063232f, -0.482496619224548f, 0.630767226219177f, -0.482597053050995f,\n  0.630397081375122f, -0.482697218656540f, 0.630026817321777f, -0.482797086238861f,\n  0.629656434059143f, -0.482896685600281f, 0.629286050796509f, -0.482995986938477f,\n  0.628915548324585f, -0.483094990253448f, 0.628544986248016f, -0.483193725347519f,\n  0.628174364566803f, -0.483292192220688f, 0.627803623676300f, -0.483390361070633f,\n  0.627432823181152f, -0.483488231897354f, 0.627061963081360f, -0.483585834503174f,\n  0.626691043376923f, -0.483683139085770f, 0.626320004463196f, -0.483780175447464f,\n  0.625948905944824f, -0.483876913785934f, 0.625577747821808f, -0.483973383903503f,\n  0.625206530094147f, -0.484069555997849f, 0.624835193157196f, -0.484165430068970f,\n  0.624463796615601f, -0.484261035919189f, 0.624092340469360f, -0.484356373548508f,\n  0.623720824718475f, -0.484451413154602f, 0.623349189758301f, -0.484546154737473f,\n  0.622977554798126f, -0.484640628099442f, 0.622605800628662f, -0.484734803438187f,\n  0.622233927249908f, -0.484828680753708f, 0.621862053871155f, -0.484922289848328f,\n  0.621490061283112f, -0.485015630722046f, 0.621118068695068f, -0.485108673572540f,\n  0.620745956897736f, -0.485201418399811f, 0.620373785495758f, -0.485293895006180f,\n  0.620001494884491f, -0.485386073589325f, 0.619629204273224f, -0.485477954149246f,\n  0.619256794452667f, -0.485569566488266f, 0.618884325027466f, -0.485660910606384f,\n  0.618511795997620f, -0.485751956701279f, 0.618139207363129f, -0.485842704772949f,\n  0.617766559123993f, -0.485933154821396f, 0.617393791675568f, -0.486023366451263f,\n  0.617020964622498f, -0.486113250255585f, 0.616648077964783f, -0.486202865839005f,\n  0.616275131702423f, -0.486292183399200f, 0.615902125835419f, -0.486381232738495f,\n  0.615529060363770f, -0.486469984054565f, 0.615155875682831f, -0.486558437347412f,\n  0.614782691001892f, -0.486646622419357f, 0.614409387111664f, -0.486734509468079f,\n  0.614036023616791f, -0.486822128295898f, 0.613662600517273f, -0.486909449100494f,\n  0.613289117813110f, -0.486996471881866f, 0.612915575504303f, -0.487083226442337f,\n  0.612541973590851f, -0.487169682979584f, 0.612168252468109f, -0.487255871295929f,\n  0.611794531345367f, -0.487341761589050f, 0.611420691013336f, -0.487427353858948f,\n  0.611046791076660f, -0.487512677907944f, 0.610672831535339f, -0.487597703933716f,\n  0.610298871994019f, -0.487682431936264f, 0.609924793243408f, -0.487766891717911f,\n  0.609550595283508f, -0.487851053476334f, 0.609176397323608f, -0.487934947013855f,\n  0.608802139759064f, -0.488018542528152f, 0.608427822589874f, -0.488101840019226f,\n  0.608053386211395f, -0.488184869289398f, 0.607678949832916f, -0.488267600536346f,\n  0.607304394245148f, -0.488350033760071f, 0.606929838657379f, -0.488432198762894f,\n  0.606555163860321f, -0.488514065742493f, 0.606180429458618f, -0.488595664501190f,\n  0.605805635452271f, -0.488676935434341f, 0.605430841445923f, -0.488757967948914f,\n  0.605055928230286f, -0.488838672637939f, 0.604680955410004f, -0.488919109106064f,\n  0.604305922985077f, -0.488999247550964f, 0.603930830955505f, -0.489079117774963f,\n  0.603555679321289f, -0.489158689975739f, 0.603180468082428f, -0.489237964153290f,\n  0.602805197238922f, -0.489316970109940f, 0.602429866790771f, -0.489395678043365f,\n  0.602054476737976f, -0.489474087953568f, 0.601679027080536f, -0.489552229642868f,\n  0.601303517818451f, -0.489630073308945f, 0.600927948951721f, -0.489707618951797f,\n  0.600552320480347f, -0.489784896373749f, 0.600176632404327f, -0.489861875772476f,\n  0.599800884723663f, -0.489938557147980f, 0.599425077438354f, -0.490014940500259f,\n  0.599049210548401f, -0.490091055631638f, 0.598673284053802f, -0.490166902542114f,\n  0.598297297954559f, -0.490242421627045f, 0.597921252250671f, -0.490317672491074f,\n  0.597545146942139f, -0.490392625331879f, 0.597168982028961f, -0.490467309951782f,\n  0.596792817115784f, -0.490541696548462f, 0.596416532993317f, -0.490615785121918f,\n  0.596040189266205f, -0.490689605474472f, 0.595663845539093f, -0.490763127803802f,\n  0.595287382602692f, -0.490836352109909f, 0.594910860061646f, -0.490909278392792f,\n  0.594534337520599f, -0.490981936454773f, 0.594157755374908f, -0.491054296493530f,\n  0.593781054019928f, -0.491126358509064f, 0.593404352664948f, -0.491198152303696f,\n  0.593027591705322f, -0.491269648075104f, 0.592650771141052f, -0.491340845823288f,\n  0.592273890972137f, -0.491411775350571f, 0.591896951198578f, -0.491482406854630f,\n  0.591519951820374f, -0.491552740335464f, 0.591142892837524f, -0.491622805595398f,\n  0.590765833854675f, -0.491692543029785f, 0.590388655662537f, -0.491762012243271f,\n  0.590011477470398f, -0.491831213235855f, 0.589634180068970f, -0.491900116205215f,\n  0.589256882667542f, -0.491968721151352f, 0.588879525661469f, -0.492037028074265f,\n  0.588502109050751f, -0.492105036973953f, 0.588124632835388f, -0.492172777652740f,\n  0.587747097015381f, -0.492240220308304f, 0.587369561195374f, -0.492307394742966f,\n  0.586991965770721f, -0.492374241352081f, 0.586614251136780f, -0.492440819740295f,\n  0.586236536502838f, -0.492507129907608f, 0.585858762264252f, -0.492573112249374f,\n  0.585480928421021f, -0.492638826370239f, 0.585103094577789f, -0.492704242467880f,\n  0.584725141525269f, -0.492769360542297f, 0.584347188472748f, -0.492834210395813f,\n  0.583969175815582f, -0.492898762226105f, 0.583591103553772f, -0.492963016033173f,\n  0.583212971687317f, -0.493026971817017f, 0.582834780216217f, -0.493090659379959f,\n  0.582456588745117f, -0.493154048919678f, 0.582078278064728f, -0.493217140436172f,\n  0.581699967384338f, -0.493279963731766f, 0.581321597099304f, -0.493342459201813f,\n  0.580943167209625f, -0.493404686450958f, 0.580564737319946f, -0.493466645479202f,\n  0.580186247825623f, -0.493528276681900f, 0.579807698726654f, -0.493589639663696f,\n  0.579429090023041f, -0.493650704622269f, 0.579050421714783f, -0.493711471557617f,\n  0.578671753406525f, -0.493771970272064f, 0.578292965888977f, -0.493832170963287f,\n  0.577914178371429f, -0.493892073631287f, 0.577535390853882f, -0.493951678276062f,\n  0.577156484127045f, -0.494011014699936f, 0.576777577400208f, -0.494070053100586f,\n  0.576398611068726f, -0.494128793478012f, 0.576019585132599f, -0.494187235832214f,\n  0.575640499591827f, -0.494245409965515f, 0.575261414051056f, -0.494303256273270f,\n  0.574882268905640f, -0.494360834360123f, 0.574503064155579f, -0.494418144226074f,\n  0.574123859405518f, -0.494475126266479f, 0.573744535446167f, -0.494531840085983f,\n  0.573365211486816f, -0.494588255882263f, 0.572985887527466f, -0.494644373655319f,\n  0.572606444358826f, -0.494700223207474f, 0.572227001190186f, -0.494755744934082f,\n  0.571847498416901f, -0.494810998439789f, 0.571467995643616f, -0.494865983724594f,\n  0.571088373661041f, -0.494920641183853f, 0.570708811283112f, -0.494975030422211f,\n  0.570329129695892f, -0.495029091835022f, 0.569949388504028f, -0.495082914829254f,\n  0.569569647312164f, -0.495136409997940f, 0.569189906120300f, -0.495189607143402f,\n  0.568810045719147f, -0.495242536067963f, 0.568430185317993f, -0.495295166969299f,\n  0.568050265312195f, -0.495347499847412f, 0.567670345306396f, -0.495399564504623f,\n  0.567290365695953f, -0.495451331138611f, 0.566910326480865f, -0.495502769947052f,\n  0.566530287265778f, -0.495553970336914f, 0.566150128841400f, -0.495604842901230f,\n  0.565770030021667f, -0.495655417442322f, 0.565389811992645f, -0.495705723762512f,\n  0.565009593963623f, -0.495755732059479f, 0.564629375934601f, -0.495805442333221f,\n  0.564249038696289f, -0.495854884386063f, 0.563868701457977f, -0.495903998613358f,\n  0.563488364219666f, -0.495952844619751f, 0.563107967376709f, -0.496001392602921f,\n  0.562727510929108f, -0.496049642562866f, 0.562346994876862f, -0.496097624301910f,\n  0.561966478824615f, -0.496145308017731f, 0.561585903167725f, -0.496192663908005f,\n  0.561205327510834f, -0.496239781379700f, 0.560824692249298f, -0.496286571025848f,\n  0.560444056987762f, -0.496333062648773f, 0.560063362121582f, -0.496379286050797f,\n  0.559682607650757f, -0.496425211429596f, 0.559301853179932f, -0.496470838785172f,\n  0.558921039104462f, -0.496516168117523f, 0.558540165424347f, -0.496561229228973f,\n  0.558159291744232f, -0.496605962514877f, 0.557778418064117f, -0.496650427579880f,\n  0.557397484779358f, -0.496694594621658f, 0.557016491889954f, -0.496738493442535f,\n  0.556635499000549f, -0.496782064437866f, 0.556254446506500f, -0.496825367212296f,\n  0.555873334407806f, -0.496868371963501f, 0.555492222309113f, -0.496911078691483f,\n  0.555111110210419f, -0.496953487396240f, 0.554729938507080f, -0.496995598077774f,\n  0.554348707199097f, -0.497037440538406f, 0.553967475891113f, -0.497078984975815f,\n  0.553586184978485f, -0.497120231389999f, 0.553204894065857f, -0.497161179780960f,\n  0.552823603153229f, -0.497201830148697f, 0.552442193031311f, -0.497242212295532f,\n  0.552060842514038f, -0.497282296419144f, 0.551679372787476f, -0.497322082519531f,\n  0.551297962665558f, -0.497361570596695f, 0.550916433334351f, -0.497400760650635f,\n  0.550534904003143f, -0.497439652681351f, 0.550153374671936f, -0.497478276491165f,\n  0.549771785736084f, -0.497516602277756f, 0.549390196800232f, -0.497554630041122f,\n  0.549008548259735f, -0.497592359781265f, 0.548626899719238f, -0.497629791498184f,\n  0.548245191574097f, -0.497666954994202f, 0.547863483428955f, -0.497703820466995f,\n  0.547481775283813f, -0.497740387916565f, 0.547099947929382f, -0.497776657342911f,\n  0.546718180179596f, -0.497812628746033f, 0.546336352825165f, -0.497848302125931f,\n  0.545954465866089f, -0.497883707284927f, 0.545572578907013f, -0.497918814420700f,\n  0.545190691947937f, -0.497953623533249f, 0.544808745384216f, -0.497988134622574f,\n  0.544426798820496f, -0.498022347688675f, 0.544044792652130f, -0.498056292533875f,\n  0.543662786483765f, -0.498089909553528f, 0.543280720710754f, -0.498123258352280f,\n  0.542898654937744f, -0.498156309127808f, 0.542516589164734f, -0.498189061880112f,\n  0.542134463787079f, -0.498221516609192f, 0.541752278804779f, -0.498253703117371f,\n  0.541370153427124f, -0.498285561800003f, 0.540987968444824f, -0.498317152261734f,\n  0.540605723857880f, -0.498348444700241f, 0.540223479270935f, -0.498379439115524f,\n  0.539841234683990f, -0.498410135507584f, 0.539458930492401f, -0.498440563678741f,\n  0.539076626300812f, -0.498470664024353f, 0.538694262504578f, -0.498500496149063f,\n  0.538311958312988f, -0.498530030250549f, 0.537929534912109f, -0.498559266328812f,\n  0.537547171115875f, -0.498588204383850f, 0.537164747714996f, -0.498616874217987f,\n  0.536782264709473f, -0.498645216226578f, 0.536399841308594f, -0.498673290014267f,\n  0.536017298698425f, -0.498701065778732f, 0.535634815692902f, -0.498728543519974f,\n  0.535252273082733f, -0.498755723237991f, 0.534869730472565f, -0.498782604932785f,\n  0.534487187862396f, -0.498809218406677f, 0.534104585647583f, -0.498835533857346f,\n  0.533721983432770f, -0.498861521482468f, 0.533339321613312f, -0.498887240886688f,\n  0.532956659793854f, -0.498912662267685f, 0.532573997974396f, -0.498937815427780f,\n  0.532191336154938f, -0.498962640762329f, 0.531808614730835f, -0.498987197875977f,\n  0.531425893306732f, -0.499011427164078f, 0.531043112277985f, -0.499035388231277f,\n  0.530660390853882f, -0.499059051275253f, 0.530277609825134f, -0.499082416296005f,\n  0.529894769191742f, -0.499105513095856f, 0.529511988162994f, -0.499128282070160f,\n  0.529129147529602f, -0.499150782823563f, 0.528746306896210f, -0.499172955751419f,\n  0.528363406658173f, -0.499194860458374f, 0.527980506420136f, -0.499216467142105f,\n  0.527597606182098f, -0.499237775802612f, 0.527214705944061f, -0.499258816242218f,\n  0.526831746101379f, -0.499279528856277f, 0.526448845863342f, -0.499299973249435f,\n  0.526065826416016f, -0.499320119619370f, 0.525682866573334f, -0.499339967966080f,\n  0.525299847126007f, -0.499359518289566f, 0.524916887283325f, -0.499378770589828f,\n  0.524533808231354f, -0.499397724866867f, 0.524150788784027f, -0.499416410923004f,\n  0.523767769336700f, -0.499434769153595f, 0.523384690284729f, -0.499452859163284f,\n  0.523001611232758f, -0.499470651149750f, 0.522618472576141f, -0.499488145112991f,\n  0.522235393524170f, -0.499505341053009f, 0.521852254867554f, -0.499522238969803f,\n  0.521469116210938f, -0.499538868665695f, 0.521085977554321f, -0.499555170536041f,\n  0.520702838897705f, -0.499571204185486f, 0.520319640636444f, -0.499586939811707f,\n  0.519936442375183f, -0.499602377414703f, 0.519553244113922f, -0.499617516994476f,\n  0.519170045852661f, -0.499632388353348f, 0.518786847591400f, -0.499646931886673f,\n  0.518403589725494f, -0.499661177396774f, 0.518020391464233f, -0.499675154685974f,\n  0.517637133598328f, -0.499688833951950f, 0.517253875732422f, -0.499702215194702f,\n  0.516870558261871f, -0.499715298414230f, 0.516487300395966f, -0.499728083610535f,\n  0.516103982925415f, -0.499740600585938f, 0.515720725059509f, -0.499752789735794f,\n  0.515337407588959f, -0.499764710664749f, 0.514954090118408f, -0.499776333570480f,\n  0.514570772647858f, -0.499787658452988f, 0.514187395572662f, -0.499798685312271f,\n  0.513804078102112f, -0.499809414148331f, 0.513420701026917f, -0.499819844961166f,\n  0.513037383556366f, -0.499830007553101f, 0.512654006481171f, -0.499839842319489f,\n  0.512270629405975f, -0.499849408864975f, 0.511887252330780f, -0.499858677387238f,\n  0.511503815650940f, -0.499867647886276f, 0.511120438575745f, -0.499876320362091f,\n  0.510737061500549f, -0.499884694814682f, 0.510353624820709f, -0.499892801046371f,\n  0.509970188140869f, -0.499900579452515f, 0.509586811065674f, -0.499908089637756f,\n  0.509203374385834f, -0.499915301799774f, 0.508819937705994f, -0.499922215938568f,\n  0.508436501026154f, -0.499928832054138f, 0.508053064346313f, -0.499935150146484f,\n  0.507669627666473f, -0.499941170215607f, 0.507286131381989f, -0.499946922063828f,\n  0.506902694702148f, -0.499952346086502f, 0.506519258022308f, -0.499957501888275f,\n  0.506135761737823f, -0.499962359666824f, 0.505752325057983f, -0.499966919422150f,\n  0.505368828773499f, -0.499971181154251f, 0.504985332489014f, -0.499975144863129f,\n  0.504601895809174f, -0.499978810548782f, 0.504218399524689f, -0.499982208013535f,\n  0.503834903240204f, -0.499985307455063f, 0.503451406955719f, -0.499988079071045f,\n  0.503067970275879f, -0.499990582466125f, 0.502684473991394f, -0.499992787837982f,\n  0.502300977706909f, -0.499994695186615f, 0.501917481422424f, -0.499996334314346f,\n  0.501533985137939f, -0.499997645616531f, 0.501150488853455f, -0.499998688697815f,\n  0.500766992568970f, -0.499999403953552f, 0.500383496284485f, -0.499999850988388f,\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_REALCOEF_Q31)\n/**\n  @par\n  Generation fixed-point realCoefAQ31 array in Q31 format:\n  @par\n  n = 4096\n  <pre>for (i = 0; i < n; i++)\n  {\n     pATable[2 * i]     = 0.5 * ( 1.0 - sin (2 * PI / (double) (2 * n) * (double) i));\n     pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));\n  }</pre>\n  @par\n  Convert to fixed point Q31 format\n      round(pATable[i] * pow(2, 31))\n*/\nconst q31_t realCoefAQ31[8192] = {\n    (q31_t)0x40000000, (q31_t)0xc0000000, (q31_t)0x3ff36f02, (q31_t)0xc000013c,\n    (q31_t)0x3fe6de05, (q31_t)0xc00004ef, (q31_t)0x3fda4d09, (q31_t)0xc0000b1a,\n    (q31_t)0x3fcdbc0f, (q31_t)0xc00013bd, (q31_t)0x3fc12b16, (q31_t)0xc0001ed8,\n    (q31_t)0x3fb49a1f, (q31_t)0xc0002c6a, (q31_t)0x3fa8092c, (q31_t)0xc0003c74,\n    (q31_t)0x3f9b783c, (q31_t)0xc0004ef5, (q31_t)0x3f8ee750, (q31_t)0xc00063ee,\n    (q31_t)0x3f825668, (q31_t)0xc0007b5f, (q31_t)0x3f75c585, (q31_t)0xc0009547,\n    (q31_t)0x3f6934a8, (q31_t)0xc000b1a7, (q31_t)0x3f5ca3d0, (q31_t)0xc000d07e,\n    (q31_t)0x3f5012fe, (q31_t)0xc000f1ce, (q31_t)0x3f438234, (q31_t)0xc0011594,\n    (q31_t)0x3f36f170, (q31_t)0xc0013bd3, (q31_t)0x3f2a60b4, (q31_t)0xc0016489,\n    (q31_t)0x3f1dd001, (q31_t)0xc0018fb6, (q31_t)0x3f113f56, (q31_t)0xc001bd5c,\n    (q31_t)0x3f04aeb5, (q31_t)0xc001ed78, (q31_t)0x3ef81e1d, (q31_t)0xc002200d,\n    (q31_t)0x3eeb8d8f, (q31_t)0xc0025519, (q31_t)0x3edefd0c, (q31_t)0xc0028c9c,\n    (q31_t)0x3ed26c94, (q31_t)0xc002c697, (q31_t)0x3ec5dc28, (q31_t)0xc003030a,\n    (q31_t)0x3eb94bc8, (q31_t)0xc00341f4, (q31_t)0x3eacbb74, (q31_t)0xc0038356,\n    (q31_t)0x3ea02b2e, (q31_t)0xc003c72f, (q31_t)0x3e939af5, (q31_t)0xc0040d80,\n    (q31_t)0x3e870aca, (q31_t)0xc0045648, (q31_t)0x3e7a7aae, (q31_t)0xc004a188,\n    (q31_t)0x3e6deaa1, (q31_t)0xc004ef3f, (q31_t)0x3e615aa3, (q31_t)0xc0053f6e,\n    (q31_t)0x3e54cab5, (q31_t)0xc0059214, (q31_t)0x3e483ad8, (q31_t)0xc005e731,\n    (q31_t)0x3e3bab0b, (q31_t)0xc0063ec6, (q31_t)0x3e2f1b50, (q31_t)0xc00698d3,\n    (q31_t)0x3e228ba7, (q31_t)0xc006f556, (q31_t)0x3e15fc11, (q31_t)0xc0075452,\n    (q31_t)0x3e096c8d, (q31_t)0xc007b5c4, (q31_t)0x3dfcdd1d, (q31_t)0xc00819ae,\n    (q31_t)0x3df04dc0, (q31_t)0xc008800f, (q31_t)0x3de3be78, (q31_t)0xc008e8e8,\n    (q31_t)0x3dd72f45, (q31_t)0xc0095438, (q31_t)0x3dcaa027, (q31_t)0xc009c1ff,\n    (q31_t)0x3dbe111e, (q31_t)0xc00a323d, (q31_t)0x3db1822c, (q31_t)0xc00aa4f3,\n    (q31_t)0x3da4f351, (q31_t)0xc00b1a20, (q31_t)0x3d98648d, (q31_t)0xc00b91c4,\n    (q31_t)0x3d8bd5e1, (q31_t)0xc00c0be0, (q31_t)0x3d7f474d, (q31_t)0xc00c8872,\n    (q31_t)0x3d72b8d2, (q31_t)0xc00d077c, (q31_t)0x3d662a70, (q31_t)0xc00d88fd,\n    (q31_t)0x3d599c28, (q31_t)0xc00e0cf5, (q31_t)0x3d4d0df9, (q31_t)0xc00e9364,\n    (q31_t)0x3d407fe6, (q31_t)0xc00f1c4a, (q31_t)0x3d33f1ed, (q31_t)0xc00fa7a8,\n    (q31_t)0x3d276410, (q31_t)0xc010357c, (q31_t)0x3d1ad650, (q31_t)0xc010c5c7,\n    (q31_t)0x3d0e48ab, (q31_t)0xc011588a, (q31_t)0x3d01bb24, (q31_t)0xc011edc3,\n    (q31_t)0x3cf52dbb, (q31_t)0xc0128574, (q31_t)0x3ce8a06f, (q31_t)0xc0131f9b,\n    (q31_t)0x3cdc1342, (q31_t)0xc013bc39, (q31_t)0x3ccf8634, (q31_t)0xc0145b4e,\n    (q31_t)0x3cc2f945, (q31_t)0xc014fcda, (q31_t)0x3cb66c77, (q31_t)0xc015a0dd,\n    (q31_t)0x3ca9dfc8, (q31_t)0xc0164757, (q31_t)0x3c9d533b, (q31_t)0xc016f047,\n    (q31_t)0x3c90c6cf, (q31_t)0xc0179bae, (q31_t)0x3c843a85, (q31_t)0xc018498c,\n    (q31_t)0x3c77ae5e, (q31_t)0xc018f9e1, (q31_t)0x3c6b2259, (q31_t)0xc019acac,\n    (q31_t)0x3c5e9678, (q31_t)0xc01a61ee, (q31_t)0x3c520aba, (q31_t)0xc01b19a7,\n    (q31_t)0x3c457f21, (q31_t)0xc01bd3d6, (q31_t)0x3c38f3ac, (q31_t)0xc01c907c,\n    (q31_t)0x3c2c685d, (q31_t)0xc01d4f99, (q31_t)0x3c1fdd34, (q31_t)0xc01e112b,\n    (q31_t)0x3c135231, (q31_t)0xc01ed535, (q31_t)0x3c06c754, (q31_t)0xc01f9bb5,\n    (q31_t)0x3bfa3c9f, (q31_t)0xc02064ab, (q31_t)0x3bedb212, (q31_t)0xc0213018,\n    (q31_t)0x3be127ac, (q31_t)0xc021fdfb, (q31_t)0x3bd49d70, (q31_t)0xc022ce54,\n    (q31_t)0x3bc8135c, (q31_t)0xc023a124, (q31_t)0x3bbb8973, (q31_t)0xc024766a,\n    (q31_t)0x3baeffb3, (q31_t)0xc0254e27, (q31_t)0x3ba2761e, (q31_t)0xc0262859,\n    (q31_t)0x3b95ecb4, (q31_t)0xc0270502, (q31_t)0x3b896375, (q31_t)0xc027e421,\n    (q31_t)0x3b7cda63, (q31_t)0xc028c5b6, (q31_t)0x3b70517d, (q31_t)0xc029a9c1,\n    (q31_t)0x3b63c8c4, (q31_t)0xc02a9042, (q31_t)0x3b574039, (q31_t)0xc02b7939,\n    (q31_t)0x3b4ab7db, (q31_t)0xc02c64a6, (q31_t)0x3b3e2fac, (q31_t)0xc02d5289,\n    (q31_t)0x3b31a7ac, (q31_t)0xc02e42e2, (q31_t)0x3b251fdc, (q31_t)0xc02f35b1,\n    (q31_t)0x3b18983b, (q31_t)0xc0302af5, (q31_t)0x3b0c10cb, (q31_t)0xc03122b0,\n    (q31_t)0x3aff898c, (q31_t)0xc0321ce0, (q31_t)0x3af3027e, (q31_t)0xc0331986,\n    (q31_t)0x3ae67ba2, (q31_t)0xc03418a2, (q31_t)0x3ad9f4f8, (q31_t)0xc0351a33,\n    (q31_t)0x3acd6e81, (q31_t)0xc0361e3a, (q31_t)0x3ac0e83d, (q31_t)0xc03724b6,\n    (q31_t)0x3ab4622d, (q31_t)0xc0382da8, (q31_t)0x3aa7dc52, (q31_t)0xc0393910,\n    (q31_t)0x3a9b56ab, (q31_t)0xc03a46ed, (q31_t)0x3a8ed139, (q31_t)0xc03b573f,\n    (q31_t)0x3a824bfd, (q31_t)0xc03c6a07, (q31_t)0x3a75c6f8, (q31_t)0xc03d7f44,\n    (q31_t)0x3a694229, (q31_t)0xc03e96f6, (q31_t)0x3a5cbd91, (q31_t)0xc03fb11d,\n    (q31_t)0x3a503930, (q31_t)0xc040cdba, (q31_t)0x3a43b508, (q31_t)0xc041eccc,\n    (q31_t)0x3a373119, (q31_t)0xc0430e53, (q31_t)0x3a2aad62, (q31_t)0xc044324f,\n    (q31_t)0x3a1e29e5, (q31_t)0xc04558c0, (q31_t)0x3a11a6a3, (q31_t)0xc04681a6,\n    (q31_t)0x3a05239a, (q31_t)0xc047ad01, (q31_t)0x39f8a0cd, (q31_t)0xc048dad1,\n    (q31_t)0x39ec1e3b, (q31_t)0xc04a0b16, (q31_t)0x39df9be6, (q31_t)0xc04b3dcf,\n    (q31_t)0x39d319cc, (q31_t)0xc04c72fe, (q31_t)0x39c697f0, (q31_t)0xc04daaa1,\n    (q31_t)0x39ba1651, (q31_t)0xc04ee4b8, (q31_t)0x39ad94f0, (q31_t)0xc0502145,\n    (q31_t)0x39a113cd, (q31_t)0xc0516045, (q31_t)0x399492ea, (q31_t)0xc052a1bb,\n    (q31_t)0x39881245, (q31_t)0xc053e5a5, (q31_t)0x397b91e1, (q31_t)0xc0552c03,\n    (q31_t)0x396f11bc, (q31_t)0xc05674d6, (q31_t)0x396291d9, (q31_t)0xc057c01d,\n    (q31_t)0x39561237, (q31_t)0xc0590dd8, (q31_t)0x394992d7, (q31_t)0xc05a5e07,\n    (q31_t)0x393d13b8, (q31_t)0xc05bb0ab, (q31_t)0x393094dd, (q31_t)0xc05d05c3,\n    (q31_t)0x39241645, (q31_t)0xc05e5d4e, (q31_t)0x391797f0, (q31_t)0xc05fb74e,\n    (q31_t)0x390b19e0, (q31_t)0xc06113c2, (q31_t)0x38fe9c15, (q31_t)0xc06272aa,\n    (q31_t)0x38f21e8e, (q31_t)0xc063d405, (q31_t)0x38e5a14d, (q31_t)0xc06537d4,\n    (q31_t)0x38d92452, (q31_t)0xc0669e18, (q31_t)0x38cca79e, (q31_t)0xc06806ce,\n    (q31_t)0x38c02b31, (q31_t)0xc06971f9, (q31_t)0x38b3af0c, (q31_t)0xc06adf97,\n    (q31_t)0x38a7332e, (q31_t)0xc06c4fa8, (q31_t)0x389ab799, (q31_t)0xc06dc22e,\n    (q31_t)0x388e3c4d, (q31_t)0xc06f3726, (q31_t)0x3881c14b, (q31_t)0xc070ae92,\n    (q31_t)0x38754692, (q31_t)0xc0722871, (q31_t)0x3868cc24, (q31_t)0xc073a4c3,\n    (q31_t)0x385c5201, (q31_t)0xc0752389, (q31_t)0x384fd829, (q31_t)0xc076a4c2,\n    (q31_t)0x38435e9d, (q31_t)0xc078286e, (q31_t)0x3836e55d, (q31_t)0xc079ae8c,\n    (q31_t)0x382a6c6a, (q31_t)0xc07b371e, (q31_t)0x381df3c5, (q31_t)0xc07cc223,\n    (q31_t)0x38117b6d, (q31_t)0xc07e4f9b, (q31_t)0x38050364, (q31_t)0xc07fdf85,\n    (q31_t)0x37f88ba9, (q31_t)0xc08171e2, (q31_t)0x37ec143e, (q31_t)0xc08306b2,\n    (q31_t)0x37df9d22, (q31_t)0xc0849df4, (q31_t)0x37d32657, (q31_t)0xc08637a9,\n    (q31_t)0x37c6afdc, (q31_t)0xc087d3d0, (q31_t)0x37ba39b3, (q31_t)0xc089726a,\n    (q31_t)0x37adc3db, (q31_t)0xc08b1376, (q31_t)0x37a14e55, (q31_t)0xc08cb6f5,\n    (q31_t)0x3794d922, (q31_t)0xc08e5ce5, (q31_t)0x37886442, (q31_t)0xc0900548,\n    (q31_t)0x377befb5, (q31_t)0xc091b01d, (q31_t)0x376f7b7d, (q31_t)0xc0935d64,\n    (q31_t)0x37630799, (q31_t)0xc0950d1d, (q31_t)0x3756940a, (q31_t)0xc096bf48,\n    (q31_t)0x374a20d0, (q31_t)0xc09873e4, (q31_t)0x373daded, (q31_t)0xc09a2af3,\n    (q31_t)0x37313b60, (q31_t)0xc09be473, (q31_t)0x3724c92a, (q31_t)0xc09da065,\n    (q31_t)0x3718574b, (q31_t)0xc09f5ec8, (q31_t)0x370be5c4, (q31_t)0xc0a11f9d,\n    (q31_t)0x36ff7496, (q31_t)0xc0a2e2e3, (q31_t)0x36f303c0, (q31_t)0xc0a4a89b,\n    (q31_t)0x36e69344, (q31_t)0xc0a670c4, (q31_t)0x36da2321, (q31_t)0xc0a83b5e,\n    (q31_t)0x36cdb359, (q31_t)0xc0aa086a, (q31_t)0x36c143ec, (q31_t)0xc0abd7e6,\n    (q31_t)0x36b4d4d9, (q31_t)0xc0ada9d4, (q31_t)0x36a86623, (q31_t)0xc0af7e33,\n    (q31_t)0x369bf7c9, (q31_t)0xc0b15502, (q31_t)0x368f89cb, (q31_t)0xc0b32e42,\n    (q31_t)0x36831c2b, (q31_t)0xc0b509f3, (q31_t)0x3676aee8, (q31_t)0xc0b6e815,\n    (q31_t)0x366a4203, (q31_t)0xc0b8c8a7, (q31_t)0x365dd57d, (q31_t)0xc0baabaa,\n    (q31_t)0x36516956, (q31_t)0xc0bc911d, (q31_t)0x3644fd8f, (q31_t)0xc0be7901,\n    (q31_t)0x36389228, (q31_t)0xc0c06355, (q31_t)0x362c2721, (q31_t)0xc0c25019,\n    (q31_t)0x361fbc7b, (q31_t)0xc0c43f4d, (q31_t)0x36135237, (q31_t)0xc0c630f2,\n    (q31_t)0x3606e854, (q31_t)0xc0c82506, (q31_t)0x35fa7ed4, (q31_t)0xc0ca1b8a,\n    (q31_t)0x35ee15b7, (q31_t)0xc0cc147f, (q31_t)0x35e1acfd, (q31_t)0xc0ce0fe3,\n    (q31_t)0x35d544a7, (q31_t)0xc0d00db6, (q31_t)0x35c8dcb6, (q31_t)0xc0d20dfa,\n    (q31_t)0x35bc7529, (q31_t)0xc0d410ad, (q31_t)0x35b00e02, (q31_t)0xc0d615cf,\n    (q31_t)0x35a3a740, (q31_t)0xc0d81d61, (q31_t)0x359740e5, (q31_t)0xc0da2762,\n    (q31_t)0x358adaf0, (q31_t)0xc0dc33d2, (q31_t)0x357e7563, (q31_t)0xc0de42b2,\n    (q31_t)0x3572103d, (q31_t)0xc0e05401, (q31_t)0x3565ab80, (q31_t)0xc0e267be,\n    (q31_t)0x3559472b, (q31_t)0xc0e47deb, (q31_t)0x354ce33f, (q31_t)0xc0e69686,\n    (q31_t)0x35407fbd, (q31_t)0xc0e8b190, (q31_t)0x35341ca5, (q31_t)0xc0eacf09,\n    (q31_t)0x3527b9f7, (q31_t)0xc0eceef1, (q31_t)0x351b57b5, (q31_t)0xc0ef1147,\n    (q31_t)0x350ef5de, (q31_t)0xc0f1360b, (q31_t)0x35029473, (q31_t)0xc0f35d3e,\n    (q31_t)0x34f63374, (q31_t)0xc0f586df, (q31_t)0x34e9d2e3, (q31_t)0xc0f7b2ee,\n    (q31_t)0x34dd72be, (q31_t)0xc0f9e16b, (q31_t)0x34d11308, (q31_t)0xc0fc1257,\n    (q31_t)0x34c4b3c0, (q31_t)0xc0fe45b0, (q31_t)0x34b854e7, (q31_t)0xc1007b77,\n    (q31_t)0x34abf67e, (q31_t)0xc102b3ac, (q31_t)0x349f9884, (q31_t)0xc104ee4f,\n    (q31_t)0x34933afa, (q31_t)0xc1072b5f, (q31_t)0x3486dde1, (q31_t)0xc1096add,\n    (q31_t)0x347a8139, (q31_t)0xc10bacc8, (q31_t)0x346e2504, (q31_t)0xc10df120,\n    (q31_t)0x3461c940, (q31_t)0xc11037e6, (q31_t)0x34556def, (q31_t)0xc1128119,\n    (q31_t)0x34491311, (q31_t)0xc114ccb9, (q31_t)0x343cb8a7, (q31_t)0xc1171ac6,\n    (q31_t)0x34305eb0, (q31_t)0xc1196b3f, (q31_t)0x3424052f, (q31_t)0xc11bbe26,\n    (q31_t)0x3417ac22, (q31_t)0xc11e1379, (q31_t)0x340b538b, (q31_t)0xc1206b39,\n    (q31_t)0x33fefb6a, (q31_t)0xc122c566, (q31_t)0x33f2a3bf, (q31_t)0xc12521ff,\n    (q31_t)0x33e64c8c, (q31_t)0xc1278104, (q31_t)0x33d9f5cf, (q31_t)0xc129e276,\n    (q31_t)0x33cd9f8b, (q31_t)0xc12c4653, (q31_t)0x33c149bf, (q31_t)0xc12eac9d,\n    (q31_t)0x33b4f46c, (q31_t)0xc1311553, (q31_t)0x33a89f92, (q31_t)0xc1338075,\n    (q31_t)0x339c4b32, (q31_t)0xc135ee02, (q31_t)0x338ff74d, (q31_t)0xc1385dfb,\n    (q31_t)0x3383a3e2, (q31_t)0xc13ad060, (q31_t)0x337750f2, (q31_t)0xc13d4530,\n    (q31_t)0x336afe7e, (q31_t)0xc13fbc6c, (q31_t)0x335eac86, (q31_t)0xc1423613,\n    (q31_t)0x33525b0b, (q31_t)0xc144b225, (q31_t)0x33460a0d, (q31_t)0xc14730a3,\n    (q31_t)0x3339b98d, (q31_t)0xc149b18b, (q31_t)0x332d698a, (q31_t)0xc14c34df,\n    (q31_t)0x33211a07, (q31_t)0xc14eba9d, (q31_t)0x3314cb02, (q31_t)0xc15142c6,\n    (q31_t)0x33087c7d, (q31_t)0xc153cd5a, (q31_t)0x32fc2e77, (q31_t)0xc1565a58,\n    (q31_t)0x32efe0f2, (q31_t)0xc158e9c1, (q31_t)0x32e393ef, (q31_t)0xc15b7b94,\n    (q31_t)0x32d7476c, (q31_t)0xc15e0fd1, (q31_t)0x32cafb6b, (q31_t)0xc160a678,\n    (q31_t)0x32beafed, (q31_t)0xc1633f8a, (q31_t)0x32b264f2, (q31_t)0xc165db05,\n    (q31_t)0x32a61a7a, (q31_t)0xc16878eb, (q31_t)0x3299d085, (q31_t)0xc16b193a,\n    (q31_t)0x328d8715, (q31_t)0xc16dbbf3, (q31_t)0x32813e2a, (q31_t)0xc1706115,\n    (q31_t)0x3274f5c3, (q31_t)0xc17308a1, (q31_t)0x3268ade3, (q31_t)0xc175b296,\n    (q31_t)0x325c6688, (q31_t)0xc1785ef4, (q31_t)0x32501fb5, (q31_t)0xc17b0dbb,\n    (q31_t)0x3243d968, (q31_t)0xc17dbeec, (q31_t)0x323793a3, (q31_t)0xc1807285,\n    (q31_t)0x322b4e66, (q31_t)0xc1832888, (q31_t)0x321f09b1, (q31_t)0xc185e0f3,\n    (q31_t)0x3212c585, (q31_t)0xc1889bc6, (q31_t)0x320681e3, (q31_t)0xc18b5903,\n    (q31_t)0x31fa3ecb, (q31_t)0xc18e18a7, (q31_t)0x31edfc3d, (q31_t)0xc190dab4,\n    (q31_t)0x31e1ba3a, (q31_t)0xc1939f29, (q31_t)0x31d578c2, (q31_t)0xc1966606,\n    (q31_t)0x31c937d6, (q31_t)0xc1992f4c, (q31_t)0x31bcf777, (q31_t)0xc19bfaf9,\n    (q31_t)0x31b0b7a4, (q31_t)0xc19ec90d, (q31_t)0x31a4785e, (q31_t)0xc1a1998a,\n    (q31_t)0x319839a6, (q31_t)0xc1a46c6e, (q31_t)0x318bfb7d, (q31_t)0xc1a741b9,\n    (q31_t)0x317fbde2, (q31_t)0xc1aa196c, (q31_t)0x317380d6, (q31_t)0xc1acf386,\n    (q31_t)0x31674459, (q31_t)0xc1afd007, (q31_t)0x315b086d, (q31_t)0xc1b2aef0,\n    (q31_t)0x314ecd11, (q31_t)0xc1b5903f, (q31_t)0x31429247, (q31_t)0xc1b873f5,\n    (q31_t)0x3136580d, (q31_t)0xc1bb5a11, (q31_t)0x312a1e66, (q31_t)0xc1be4294,\n    (q31_t)0x311de551, (q31_t)0xc1c12d7e, (q31_t)0x3111accf, (q31_t)0xc1c41ace,\n    (q31_t)0x310574e0, (q31_t)0xc1c70a84, (q31_t)0x30f93d86, (q31_t)0xc1c9fca0,\n    (q31_t)0x30ed06bf, (q31_t)0xc1ccf122, (q31_t)0x30e0d08d, (q31_t)0xc1cfe80a,\n    (q31_t)0x30d49af1, (q31_t)0xc1d2e158, (q31_t)0x30c865ea, (q31_t)0xc1d5dd0c,\n    (q31_t)0x30bc317a, (q31_t)0xc1d8db25, (q31_t)0x30affda0, (q31_t)0xc1dbdba3,\n    (q31_t)0x30a3ca5d, (q31_t)0xc1dede87, (q31_t)0x309797b2, (q31_t)0xc1e1e3d0,\n    (q31_t)0x308b659f, (q31_t)0xc1e4eb7e, (q31_t)0x307f3424, (q31_t)0xc1e7f591,\n    (q31_t)0x30730342, (q31_t)0xc1eb0209, (q31_t)0x3066d2fa, (q31_t)0xc1ee10e5,\n    (q31_t)0x305aa34c, (q31_t)0xc1f12227, (q31_t)0x304e7438, (q31_t)0xc1f435cc,\n    (q31_t)0x304245c0, (q31_t)0xc1f74bd6, (q31_t)0x303617e2, (q31_t)0xc1fa6445,\n    (q31_t)0x3029eaa1, (q31_t)0xc1fd7f17, (q31_t)0x301dbdfb, (q31_t)0xc2009c4e,\n    (q31_t)0x301191f3, (q31_t)0xc203bbe8, (q31_t)0x30056687, (q31_t)0xc206dde6,\n    (q31_t)0x2ff93bba, (q31_t)0xc20a0248, (q31_t)0x2fed118a, (q31_t)0xc20d290d,\n    (q31_t)0x2fe0e7f9, (q31_t)0xc2105236, (q31_t)0x2fd4bf08, (q31_t)0xc2137dc2,\n    (q31_t)0x2fc896b5, (q31_t)0xc216abb1, (q31_t)0x2fbc6f03, (q31_t)0xc219dc03,\n    (q31_t)0x2fb047f2, (q31_t)0xc21d0eb8, (q31_t)0x2fa42181, (q31_t)0xc22043d0,\n    (q31_t)0x2f97fbb2, (q31_t)0xc2237b4b, (q31_t)0x2f8bd685, (q31_t)0xc226b528,\n    (q31_t)0x2f7fb1fa, (q31_t)0xc229f167, (q31_t)0x2f738e12, (q31_t)0xc22d3009,\n    (q31_t)0x2f676ace, (q31_t)0xc230710d, (q31_t)0x2f5b482d, (q31_t)0xc233b473,\n    (q31_t)0x2f4f2630, (q31_t)0xc236fa3b, (q31_t)0x2f4304d8, (q31_t)0xc23a4265,\n    (q31_t)0x2f36e426, (q31_t)0xc23d8cf1, (q31_t)0x2f2ac419, (q31_t)0xc240d9de,\n    (q31_t)0x2f1ea4b2, (q31_t)0xc244292c, (q31_t)0x2f1285f2, (q31_t)0xc2477adc,\n    (q31_t)0x2f0667d9, (q31_t)0xc24aceed, (q31_t)0x2efa4a67, (q31_t)0xc24e255e,\n    (q31_t)0x2eee2d9d, (q31_t)0xc2517e31, (q31_t)0x2ee2117c, (q31_t)0xc254d965,\n    (q31_t)0x2ed5f604, (q31_t)0xc25836f9, (q31_t)0x2ec9db35, (q31_t)0xc25b96ee,\n    (q31_t)0x2ebdc110, (q31_t)0xc25ef943, (q31_t)0x2eb1a796, (q31_t)0xc2625df8,\n    (q31_t)0x2ea58ec6, (q31_t)0xc265c50e, (q31_t)0x2e9976a1, (q31_t)0xc2692e83,\n    (q31_t)0x2e8d5f29, (q31_t)0xc26c9a58, (q31_t)0x2e81485c, (q31_t)0xc270088e,\n    (q31_t)0x2e75323c, (q31_t)0xc2737922, (q31_t)0x2e691cc9, (q31_t)0xc276ec16,\n    (q31_t)0x2e5d0804, (q31_t)0xc27a616a, (q31_t)0x2e50f3ed, (q31_t)0xc27dd91c,\n    (q31_t)0x2e44e084, (q31_t)0xc281532e, (q31_t)0x2e38cdcb, (q31_t)0xc284cf9f,\n    (q31_t)0x2e2cbbc1, (q31_t)0xc2884e6e, (q31_t)0x2e20aa67, (q31_t)0xc28bcf9c,\n    (q31_t)0x2e1499bd, (q31_t)0xc28f5329, (q31_t)0x2e0889c4, (q31_t)0xc292d914,\n    (q31_t)0x2dfc7a7c, (q31_t)0xc296615d, (q31_t)0x2df06be6, (q31_t)0xc299ec05,\n    (q31_t)0x2de45e03, (q31_t)0xc29d790a, (q31_t)0x2dd850d2, (q31_t)0xc2a1086d,\n    (q31_t)0x2dcc4454, (q31_t)0xc2a49a2e, (q31_t)0x2dc0388a, (q31_t)0xc2a82e4d,\n    (q31_t)0x2db42d74, (q31_t)0xc2abc4c9, (q31_t)0x2da82313, (q31_t)0xc2af5da2,\n    (q31_t)0x2d9c1967, (q31_t)0xc2b2f8d8, (q31_t)0x2d901070, (q31_t)0xc2b6966c,\n    (q31_t)0x2d84082f, (q31_t)0xc2ba365c, (q31_t)0x2d7800a5, (q31_t)0xc2bdd8a9,\n    (q31_t)0x2d6bf9d1, (q31_t)0xc2c17d52, (q31_t)0x2d5ff3b5, (q31_t)0xc2c52459,\n    (q31_t)0x2d53ee51, (q31_t)0xc2c8cdbb, (q31_t)0x2d47e9a5, (q31_t)0xc2cc7979,\n    (q31_t)0x2d3be5b1, (q31_t)0xc2d02794, (q31_t)0x2d2fe277, (q31_t)0xc2d3d80a,\n    (q31_t)0x2d23dff7, (q31_t)0xc2d78add, (q31_t)0x2d17de31, (q31_t)0xc2db400a,\n    (q31_t)0x2d0bdd25, (q31_t)0xc2def794, (q31_t)0x2cffdcd4, (q31_t)0xc2e2b178,\n    (q31_t)0x2cf3dd3f, (q31_t)0xc2e66db8, (q31_t)0x2ce7de66, (q31_t)0xc2ea2c53,\n    (q31_t)0x2cdbe04a, (q31_t)0xc2eded49, (q31_t)0x2ccfe2ea, (q31_t)0xc2f1b099,\n    (q31_t)0x2cc3e648, (q31_t)0xc2f57644, (q31_t)0x2cb7ea63, (q31_t)0xc2f93e4a,\n    (q31_t)0x2cabef3d, (q31_t)0xc2fd08a9, (q31_t)0x2c9ff4d6, (q31_t)0xc300d563,\n    (q31_t)0x2c93fb2e, (q31_t)0xc304a477, (q31_t)0x2c880245, (q31_t)0xc30875e5,\n    (q31_t)0x2c7c0a1d, (q31_t)0xc30c49ad, (q31_t)0x2c7012b5, (q31_t)0xc3101fce,\n    (q31_t)0x2c641c0e, (q31_t)0xc313f848, (q31_t)0x2c582629, (q31_t)0xc317d31c,\n    (q31_t)0x2c4c3106, (q31_t)0xc31bb049, (q31_t)0x2c403ca5, (q31_t)0xc31f8fcf,\n    (q31_t)0x2c344908, (q31_t)0xc32371ae, (q31_t)0x2c28562d, (q31_t)0xc32755e5,\n    (q31_t)0x2c1c6417, (q31_t)0xc32b3c75, (q31_t)0x2c1072c4, (q31_t)0xc32f255e,\n    (q31_t)0x2c048237, (q31_t)0xc333109e, (q31_t)0x2bf8926f, (q31_t)0xc336fe37,\n    (q31_t)0x2beca36c, (q31_t)0xc33aee27, (q31_t)0x2be0b52f, (q31_t)0xc33ee070,\n    (q31_t)0x2bd4c7ba, (q31_t)0xc342d510, (q31_t)0x2bc8db0b, (q31_t)0xc346cc07,\n    (q31_t)0x2bbcef23, (q31_t)0xc34ac556, (q31_t)0x2bb10404, (q31_t)0xc34ec0fc,\n    (q31_t)0x2ba519ad, (q31_t)0xc352bef9, (q31_t)0x2b99301f, (q31_t)0xc356bf4d,\n    (q31_t)0x2b8d475b, (q31_t)0xc35ac1f7, (q31_t)0x2b815f60, (q31_t)0xc35ec6f8,\n    (q31_t)0x2b75782f, (q31_t)0xc362ce50, (q31_t)0x2b6991ca, (q31_t)0xc366d7fd,\n    (q31_t)0x2b5dac2f, (q31_t)0xc36ae401, (q31_t)0x2b51c760, (q31_t)0xc36ef25b,\n    (q31_t)0x2b45e35d, (q31_t)0xc373030a, (q31_t)0x2b3a0027, (q31_t)0xc377160f,\n    (q31_t)0x2b2e1dbe, (q31_t)0xc37b2b6a, (q31_t)0x2b223c22, (q31_t)0xc37f4319,\n    (q31_t)0x2b165b54, (q31_t)0xc3835d1e, (q31_t)0x2b0a7b54, (q31_t)0xc3877978,\n    (q31_t)0x2afe9c24, (q31_t)0xc38b9827, (q31_t)0x2af2bdc3, (q31_t)0xc38fb92a,\n    (q31_t)0x2ae6e031, (q31_t)0xc393dc82, (q31_t)0x2adb0370, (q31_t)0xc398022f,\n    (q31_t)0x2acf277f, (q31_t)0xc39c2a2f, (q31_t)0x2ac34c60, (q31_t)0xc3a05484,\n    (q31_t)0x2ab77212, (q31_t)0xc3a4812c, (q31_t)0x2aab9896, (q31_t)0xc3a8b028,\n    (q31_t)0x2a9fbfed, (q31_t)0xc3ace178, (q31_t)0x2a93e817, (q31_t)0xc3b1151b,\n    (q31_t)0x2a881114, (q31_t)0xc3b54b11, (q31_t)0x2a7c3ae5, (q31_t)0xc3b9835a,\n    (q31_t)0x2a70658a, (q31_t)0xc3bdbdf6, (q31_t)0x2a649105, (q31_t)0xc3c1fae5,\n    (q31_t)0x2a58bd54, (q31_t)0xc3c63a26, (q31_t)0x2a4cea79, (q31_t)0xc3ca7bba,\n    (q31_t)0x2a411874, (q31_t)0xc3cebfa0, (q31_t)0x2a354746, (q31_t)0xc3d305d8,\n    (q31_t)0x2a2976ef, (q31_t)0xc3d74e62, (q31_t)0x2a1da770, (q31_t)0xc3db993e,\n    (q31_t)0x2a11d8c8, (q31_t)0xc3dfe66c, (q31_t)0x2a060af9, (q31_t)0xc3e435ea,\n    (q31_t)0x29fa3e03, (q31_t)0xc3e887bb, (q31_t)0x29ee71e6, (q31_t)0xc3ecdbdc,\n    (q31_t)0x29e2a6a3, (q31_t)0xc3f1324e, (q31_t)0x29d6dc3b, (q31_t)0xc3f58b10,\n    (q31_t)0x29cb12ad, (q31_t)0xc3f9e624, (q31_t)0x29bf49fa, (q31_t)0xc3fe4388,\n    (q31_t)0x29b38223, (q31_t)0xc402a33c, (q31_t)0x29a7bb28, (q31_t)0xc4070540,\n    (q31_t)0x299bf509, (q31_t)0xc40b6994, (q31_t)0x29902fc7, (q31_t)0xc40fd037,\n    (q31_t)0x29846b63, (q31_t)0xc414392b, (q31_t)0x2978a7dd, (q31_t)0xc418a46d,\n    (q31_t)0x296ce535, (q31_t)0xc41d11ff, (q31_t)0x2961236c, (q31_t)0xc42181e0,\n    (q31_t)0x29556282, (q31_t)0xc425f410, (q31_t)0x2949a278, (q31_t)0xc42a688f,\n    (q31_t)0x293de34e, (q31_t)0xc42edf5c, (q31_t)0x29322505, (q31_t)0xc4335877,\n    (q31_t)0x2926679c, (q31_t)0xc437d3e1, (q31_t)0x291aab16, (q31_t)0xc43c5199,\n    (q31_t)0x290eef71, (q31_t)0xc440d19e, (q31_t)0x290334af, (q31_t)0xc44553f2,\n    (q31_t)0x28f77acf, (q31_t)0xc449d892, (q31_t)0x28ebc1d3, (q31_t)0xc44e5f80,\n    (q31_t)0x28e009ba, (q31_t)0xc452e8bc, (q31_t)0x28d45286, (q31_t)0xc4577444,\n    (q31_t)0x28c89c37, (q31_t)0xc45c0219, (q31_t)0x28bce6cd, (q31_t)0xc460923b,\n    (q31_t)0x28b13248, (q31_t)0xc46524a9, (q31_t)0x28a57ea9, (q31_t)0xc469b963,\n    (q31_t)0x2899cbf1, (q31_t)0xc46e5069, (q31_t)0x288e1a20, (q31_t)0xc472e9bc,\n    (q31_t)0x28826936, (q31_t)0xc477855a, (q31_t)0x2876b934, (q31_t)0xc47c2344,\n    (q31_t)0x286b0a1a, (q31_t)0xc480c379, (q31_t)0x285f5be9, (q31_t)0xc48565f9,\n    (q31_t)0x2853aea1, (q31_t)0xc48a0ac4, (q31_t)0x28480243, (q31_t)0xc48eb1db,\n    (q31_t)0x283c56cf, (q31_t)0xc4935b3c, (q31_t)0x2830ac45, (q31_t)0xc49806e7,\n    (q31_t)0x282502a7, (q31_t)0xc49cb4dd, (q31_t)0x281959f4, (q31_t)0xc4a1651c,\n    (q31_t)0x280db22d, (q31_t)0xc4a617a6, (q31_t)0x28020b52, (q31_t)0xc4aacc7a,\n    (q31_t)0x27f66564, (q31_t)0xc4af8397, (q31_t)0x27eac063, (q31_t)0xc4b43cfd,\n    (q31_t)0x27df1c50, (q31_t)0xc4b8f8ad, (q31_t)0x27d3792b, (q31_t)0xc4bdb6a6,\n    (q31_t)0x27c7d6f4, (q31_t)0xc4c276e8, (q31_t)0x27bc35ad, (q31_t)0xc4c73972,\n    (q31_t)0x27b09555, (q31_t)0xc4cbfe45, (q31_t)0x27a4f5ed, (q31_t)0xc4d0c560,\n    (q31_t)0x27995776, (q31_t)0xc4d58ec3, (q31_t)0x278db9ef, (q31_t)0xc4da5a6f,\n    (q31_t)0x27821d59, (q31_t)0xc4df2862, (q31_t)0x277681b6, (q31_t)0xc4e3f89c,\n    (q31_t)0x276ae704, (q31_t)0xc4e8cb1e, (q31_t)0x275f4d45, (q31_t)0xc4ed9fe7,\n    (q31_t)0x2753b479, (q31_t)0xc4f276f7, (q31_t)0x27481ca1, (q31_t)0xc4f7504e,\n    (q31_t)0x273c85bc, (q31_t)0xc4fc2bec, (q31_t)0x2730efcc, (q31_t)0xc50109d0,\n    (q31_t)0x27255ad1, (q31_t)0xc505e9fb, (q31_t)0x2719c6cb, (q31_t)0xc50acc6b,\n    (q31_t)0x270e33bb, (q31_t)0xc50fb121, (q31_t)0x2702a1a1, (q31_t)0xc514981d,\n    (q31_t)0x26f7107e, (q31_t)0xc519815f, (q31_t)0x26eb8052, (q31_t)0xc51e6ce6,\n    (q31_t)0x26dff11d, (q31_t)0xc5235ab2, (q31_t)0x26d462e1, (q31_t)0xc5284ac3,\n    (q31_t)0x26c8d59c, (q31_t)0xc52d3d18, (q31_t)0x26bd4951, (q31_t)0xc53231b3,\n    (q31_t)0x26b1bdff, (q31_t)0xc5372891, (q31_t)0x26a633a6, (q31_t)0xc53c21b4,\n    (q31_t)0x269aaa48, (q31_t)0xc5411d1b, (q31_t)0x268f21e5, (q31_t)0xc5461ac6,\n    (q31_t)0x26839a7c, (q31_t)0xc54b1ab4, (q31_t)0x26781410, (q31_t)0xc5501ce5,\n    (q31_t)0x266c8e9f, (q31_t)0xc555215a, (q31_t)0x26610a2a, (q31_t)0xc55a2812,\n    (q31_t)0x265586b3, (q31_t)0xc55f310d, (q31_t)0x264a0438, (q31_t)0xc5643c4a,\n    (q31_t)0x263e82bc, (q31_t)0xc56949ca, (q31_t)0x2633023e, (q31_t)0xc56e598c,\n    (q31_t)0x262782be, (q31_t)0xc5736b90, (q31_t)0x261c043d, (q31_t)0xc5787fd6,\n    (q31_t)0x261086bc, (q31_t)0xc57d965d, (q31_t)0x26050a3b, (q31_t)0xc582af26,\n    (q31_t)0x25f98ebb, (q31_t)0xc587ca31, (q31_t)0x25ee143b, (q31_t)0xc58ce77c,\n    (q31_t)0x25e29abc, (q31_t)0xc5920708, (q31_t)0x25d72240, (q31_t)0xc59728d5,\n    (q31_t)0x25cbaac5, (q31_t)0xc59c4ce3, (q31_t)0x25c0344d, (q31_t)0xc5a17330,\n    (q31_t)0x25b4bed8, (q31_t)0xc5a69bbe, (q31_t)0x25a94a67, (q31_t)0xc5abc68c,\n    (q31_t)0x259dd6f9, (q31_t)0xc5b0f399, (q31_t)0x25926490, (q31_t)0xc5b622e6,\n    (q31_t)0x2586f32c, (q31_t)0xc5bb5472, (q31_t)0x257b82cd, (q31_t)0xc5c0883d,\n    (q31_t)0x25701374, (q31_t)0xc5c5be47, (q31_t)0x2564a521, (q31_t)0xc5caf690,\n    (q31_t)0x255937d5, (q31_t)0xc5d03118, (q31_t)0x254dcb8f, (q31_t)0xc5d56ddd,\n    (q31_t)0x25426051, (q31_t)0xc5daace1, (q31_t)0x2536f61b, (q31_t)0xc5dfee22,\n    (q31_t)0x252b8cee, (q31_t)0xc5e531a1, (q31_t)0x252024c9, (q31_t)0xc5ea775e,\n    (q31_t)0x2514bdad, (q31_t)0xc5efbf58, (q31_t)0x2509579b, (q31_t)0xc5f5098f,\n    (q31_t)0x24fdf294, (q31_t)0xc5fa5603, (q31_t)0x24f28e96, (q31_t)0xc5ffa4b3,\n    (q31_t)0x24e72ba4, (q31_t)0xc604f5a0, (q31_t)0x24dbc9bd, (q31_t)0xc60a48c9,\n    (q31_t)0x24d068e2, (q31_t)0xc60f9e2e, (q31_t)0x24c50914, (q31_t)0xc614f5cf,\n    (q31_t)0x24b9aa52, (q31_t)0xc61a4fac, (q31_t)0x24ae4c9d, (q31_t)0xc61fabc4,\n    (q31_t)0x24a2eff6, (q31_t)0xc6250a18, (q31_t)0x2497945d, (q31_t)0xc62a6aa6,\n    (q31_t)0x248c39d3, (q31_t)0xc62fcd6f, (q31_t)0x2480e057, (q31_t)0xc6353273,\n    (q31_t)0x247587eb, (q31_t)0xc63a99b1, (q31_t)0x246a308f, (q31_t)0xc6400329,\n    (q31_t)0x245eda43, (q31_t)0xc6456edb, (q31_t)0x24538507, (q31_t)0xc64adcc7,\n    (q31_t)0x244830dd, (q31_t)0xc6504ced, (q31_t)0x243cddc4, (q31_t)0xc655bf4c,\n    (q31_t)0x24318bbe, (q31_t)0xc65b33e4, (q31_t)0x24263ac9, (q31_t)0xc660aab5,\n    (q31_t)0x241aeae8, (q31_t)0xc66623be, (q31_t)0x240f9c1a, (q31_t)0xc66b9f01,\n    (q31_t)0x24044e60, (q31_t)0xc6711c7b, (q31_t)0x23f901ba, (q31_t)0xc6769c2e,\n    (q31_t)0x23edb628, (q31_t)0xc67c1e18, (q31_t)0x23e26bac, (q31_t)0xc681a23a,\n    (q31_t)0x23d72245, (q31_t)0xc6872894, (q31_t)0x23cbd9f4, (q31_t)0xc68cb124,\n    (q31_t)0x23c092b9, (q31_t)0xc6923bec, (q31_t)0x23b54c95, (q31_t)0xc697c8eb,\n    (q31_t)0x23aa0788, (q31_t)0xc69d5820, (q31_t)0x239ec393, (q31_t)0xc6a2e98b,\n    (q31_t)0x239380b6, (q31_t)0xc6a87d2d, (q31_t)0x23883ef2, (q31_t)0xc6ae1304,\n    (q31_t)0x237cfe47, (q31_t)0xc6b3ab12, (q31_t)0x2371beb5, (q31_t)0xc6b94554,\n    (q31_t)0x2366803c, (q31_t)0xc6bee1cd, (q31_t)0x235b42df, (q31_t)0xc6c4807a,\n    (q31_t)0x2350069b, (q31_t)0xc6ca215c, (q31_t)0x2344cb73, (q31_t)0xc6cfc472,\n    (q31_t)0x23399167, (q31_t)0xc6d569be, (q31_t)0x232e5876, (q31_t)0xc6db113d,\n    (q31_t)0x232320a2, (q31_t)0xc6e0baf0, (q31_t)0x2317e9eb, (q31_t)0xc6e666d7,\n    (q31_t)0x230cb451, (q31_t)0xc6ec14f2, (q31_t)0x23017fd5, (q31_t)0xc6f1c540,\n    (q31_t)0x22f64c77, (q31_t)0xc6f777c1, (q31_t)0x22eb1a37, (q31_t)0xc6fd2c75,\n    (q31_t)0x22dfe917, (q31_t)0xc702e35c, (q31_t)0x22d4b916, (q31_t)0xc7089c75,\n    (q31_t)0x22c98a35, (q31_t)0xc70e57c0, (q31_t)0x22be5c74, (q31_t)0xc714153e,\n    (q31_t)0x22b32fd4, (q31_t)0xc719d4ed, (q31_t)0x22a80456, (q31_t)0xc71f96ce,\n    (q31_t)0x229cd9f8, (q31_t)0xc7255ae0, (q31_t)0x2291b0bd, (q31_t)0xc72b2123,\n    (q31_t)0x228688a4, (q31_t)0xc730e997, (q31_t)0x227b61af, (q31_t)0xc736b43c,\n    (q31_t)0x22703bdc, (q31_t)0xc73c8111, (q31_t)0x2265172e, (q31_t)0xc7425016,\n    (q31_t)0x2259f3a3, (q31_t)0xc748214c, (q31_t)0x224ed13d, (q31_t)0xc74df4b1,\n    (q31_t)0x2243affc, (q31_t)0xc753ca46, (q31_t)0x22388fe1, (q31_t)0xc759a20a,\n    (q31_t)0x222d70eb, (q31_t)0xc75f7bfe, (q31_t)0x2222531c, (q31_t)0xc7655820,\n    (q31_t)0x22173674, (q31_t)0xc76b3671, (q31_t)0x220c1af3, (q31_t)0xc77116f0,\n    (q31_t)0x22010099, (q31_t)0xc776f99d, (q31_t)0x21f5e768, (q31_t)0xc77cde79,\n    (q31_t)0x21eacf5f, (q31_t)0xc782c582, (q31_t)0x21dfb87f, (q31_t)0xc788aeb9,\n    (q31_t)0x21d4a2c8, (q31_t)0xc78e9a1d, (q31_t)0x21c98e3b, (q31_t)0xc79487ae,\n    (q31_t)0x21be7ad8, (q31_t)0xc79a776c, (q31_t)0x21b368a0, (q31_t)0xc7a06957,\n    (q31_t)0x21a85793, (q31_t)0xc7a65d6e, (q31_t)0x219d47b1, (q31_t)0xc7ac53b1,\n    (q31_t)0x219238fb, (q31_t)0xc7b24c20, (q31_t)0x21872b72, (q31_t)0xc7b846ba,\n    (q31_t)0x217c1f15, (q31_t)0xc7be4381, (q31_t)0x217113e5, (q31_t)0xc7c44272,\n    (q31_t)0x216609e3, (q31_t)0xc7ca438f, (q31_t)0x215b0110, (q31_t)0xc7d046d6,\n    (q31_t)0x214ff96a, (q31_t)0xc7d64c47, (q31_t)0x2144f2f3, (q31_t)0xc7dc53e3,\n    (q31_t)0x2139edac, (q31_t)0xc7e25daa, (q31_t)0x212ee995, (q31_t)0xc7e8699a,\n    (q31_t)0x2123e6ad, (q31_t)0xc7ee77b3, (q31_t)0x2118e4f6, (q31_t)0xc7f487f6,\n    (q31_t)0x210de470, (q31_t)0xc7fa9a62, (q31_t)0x2102e51c, (q31_t)0xc800aef7,\n    (q31_t)0x20f7e6f9, (q31_t)0xc806c5b5, (q31_t)0x20ecea09, (q31_t)0xc80cde9b,\n    (q31_t)0x20e1ee4b, (q31_t)0xc812f9a9, (q31_t)0x20d6f3c1, (q31_t)0xc81916df,\n    (q31_t)0x20cbfa6a, (q31_t)0xc81f363d, (q31_t)0x20c10247, (q31_t)0xc82557c3,\n    (q31_t)0x20b60b58, (q31_t)0xc82b7b70, (q31_t)0x20ab159e, (q31_t)0xc831a143,\n    (q31_t)0x20a0211a, (q31_t)0xc837c93e, (q31_t)0x20952dcb, (q31_t)0xc83df35f,\n    (q31_t)0x208a3bb2, (q31_t)0xc8441fa6, (q31_t)0x207f4acf, (q31_t)0xc84a4e14,\n    (q31_t)0x20745b24, (q31_t)0xc8507ea7, (q31_t)0x20696cb0, (q31_t)0xc856b160,\n    (q31_t)0x205e7f74, (q31_t)0xc85ce63e, (q31_t)0x2053936f, (q31_t)0xc8631d42,\n    (q31_t)0x2048a8a4, (q31_t)0xc869566a, (q31_t)0x203dbf11, (q31_t)0xc86f91b7,\n    (q31_t)0x2032d6b8, (q31_t)0xc875cf28, (q31_t)0x2027ef99, (q31_t)0xc87c0ebd,\n    (q31_t)0x201d09b4, (q31_t)0xc8825077, (q31_t)0x2012250a, (q31_t)0xc8889454,\n    (q31_t)0x2007419b, (q31_t)0xc88eda54, (q31_t)0x1ffc5f67, (q31_t)0xc8952278,\n    (q31_t)0x1ff17e70, (q31_t)0xc89b6cbf, (q31_t)0x1fe69eb4, (q31_t)0xc8a1b928,\n    (q31_t)0x1fdbc036, (q31_t)0xc8a807b4, (q31_t)0x1fd0e2f5, (q31_t)0xc8ae5862,\n    (q31_t)0x1fc606f1, (q31_t)0xc8b4ab32, (q31_t)0x1fbb2c2c, (q31_t)0xc8bb0023,\n    (q31_t)0x1fb052a5, (q31_t)0xc8c15736, (q31_t)0x1fa57a5d, (q31_t)0xc8c7b06b,\n    (q31_t)0x1f9aa354, (q31_t)0xc8ce0bc0, (q31_t)0x1f8fcd8b, (q31_t)0xc8d46936,\n    (q31_t)0x1f84f902, (q31_t)0xc8dac8cd, (q31_t)0x1f7a25ba, (q31_t)0xc8e12a84,\n    (q31_t)0x1f6f53b3, (q31_t)0xc8e78e5b, (q31_t)0x1f6482ed, (q31_t)0xc8edf452,\n    (q31_t)0x1f59b369, (q31_t)0xc8f45c68, (q31_t)0x1f4ee527, (q31_t)0xc8fac69e,\n    (q31_t)0x1f441828, (q31_t)0xc90132f2, (q31_t)0x1f394c6b, (q31_t)0xc907a166,\n    (q31_t)0x1f2e81f3, (q31_t)0xc90e11f7, (q31_t)0x1f23b8be, (q31_t)0xc91484a8,\n    (q31_t)0x1f18f0ce, (q31_t)0xc91af976, (q31_t)0x1f0e2a22, (q31_t)0xc9217062,\n    (q31_t)0x1f0364bc, (q31_t)0xc927e96b, (q31_t)0x1ef8a09b, (q31_t)0xc92e6492,\n    (q31_t)0x1eedddc0, (q31_t)0xc934e1d6, (q31_t)0x1ee31c2b, (q31_t)0xc93b6137,\n    (q31_t)0x1ed85bdd, (q31_t)0xc941e2b4, (q31_t)0x1ecd9cd7, (q31_t)0xc948664d,\n    (q31_t)0x1ec2df18, (q31_t)0xc94eec03, (q31_t)0x1eb822a1, (q31_t)0xc95573d4,\n    (q31_t)0x1ead6773, (q31_t)0xc95bfdc1, (q31_t)0x1ea2ad8d, (q31_t)0xc96289c9,\n    (q31_t)0x1e97f4f1, (q31_t)0xc96917ec, (q31_t)0x1e8d3d9e, (q31_t)0xc96fa82a,\n    (q31_t)0x1e828796, (q31_t)0xc9763a83, (q31_t)0x1e77d2d8, (q31_t)0xc97ccef5,\n    (q31_t)0x1e6d1f65, (q31_t)0xc9836582, (q31_t)0x1e626d3e, (q31_t)0xc989fe29,\n    (q31_t)0x1e57bc62, (q31_t)0xc99098e9, (q31_t)0x1e4d0cd2, (q31_t)0xc99735c2,\n    (q31_t)0x1e425e8f, (q31_t)0xc99dd4b4, (q31_t)0x1e37b199, (q31_t)0xc9a475bf,\n    (q31_t)0x1e2d05f1, (q31_t)0xc9ab18e3, (q31_t)0x1e225b96, (q31_t)0xc9b1be1e,\n    (q31_t)0x1e17b28a, (q31_t)0xc9b86572, (q31_t)0x1e0d0acc, (q31_t)0xc9bf0edd,\n    (q31_t)0x1e02645d, (q31_t)0xc9c5ba60, (q31_t)0x1df7bf3e, (q31_t)0xc9cc67fa,\n    (q31_t)0x1ded1b6e, (q31_t)0xc9d317ab, (q31_t)0x1de278ef, (q31_t)0xc9d9c973,\n    (q31_t)0x1dd7d7c1, (q31_t)0xc9e07d51, (q31_t)0x1dcd37e4, (q31_t)0xc9e73346,\n    (q31_t)0x1dc29958, (q31_t)0xc9edeb50, (q31_t)0x1db7fc1e, (q31_t)0xc9f4a570,\n    (q31_t)0x1dad6036, (q31_t)0xc9fb61a5, (q31_t)0x1da2c5a2, (q31_t)0xca021fef,\n    (q31_t)0x1d982c60, (q31_t)0xca08e04f, (q31_t)0x1d8d9472, (q31_t)0xca0fa2c3,\n    (q31_t)0x1d82fdd8, (q31_t)0xca16674b, (q31_t)0x1d786892, (q31_t)0xca1d2de7,\n    (q31_t)0x1d6dd4a2, (q31_t)0xca23f698, (q31_t)0x1d634206, (q31_t)0xca2ac15b,\n    (q31_t)0x1d58b0c0, (q31_t)0xca318e32, (q31_t)0x1d4e20d0, (q31_t)0xca385d1d,\n    (q31_t)0x1d439236, (q31_t)0xca3f2e19, (q31_t)0x1d3904f4, (q31_t)0xca460129,\n    (q31_t)0x1d2e7908, (q31_t)0xca4cd64b, (q31_t)0x1d23ee74, (q31_t)0xca53ad7e,\n    (q31_t)0x1d196538, (q31_t)0xca5a86c4, (q31_t)0x1d0edd55, (q31_t)0xca61621b,\n    (q31_t)0x1d0456ca, (q31_t)0xca683f83, (q31_t)0x1cf9d199, (q31_t)0xca6f1efc,\n    (q31_t)0x1cef4dc2, (q31_t)0xca760086, (q31_t)0x1ce4cb44, (q31_t)0xca7ce420,\n    (q31_t)0x1cda4a21, (q31_t)0xca83c9ca, (q31_t)0x1ccfca59, (q31_t)0xca8ab184,\n    (q31_t)0x1cc54bec, (q31_t)0xca919b4e, (q31_t)0x1cbacedb, (q31_t)0xca988727,\n    (q31_t)0x1cb05326, (q31_t)0xca9f750f, (q31_t)0x1ca5d8cd, (q31_t)0xcaa66506,\n    (q31_t)0x1c9b5fd2, (q31_t)0xcaad570c, (q31_t)0x1c90e834, (q31_t)0xcab44b1f,\n    (q31_t)0x1c8671f3, (q31_t)0xcabb4141, (q31_t)0x1c7bfd11, (q31_t)0xcac23971,\n    (q31_t)0x1c71898d, (q31_t)0xcac933ae, (q31_t)0x1c671768, (q31_t)0xcad02ff8,\n    (q31_t)0x1c5ca6a2, (q31_t)0xcad72e4f, (q31_t)0x1c52373c, (q31_t)0xcade2eb3,\n    (q31_t)0x1c47c936, (q31_t)0xcae53123, (q31_t)0x1c3d5c91, (q31_t)0xcaec35a0,\n    (q31_t)0x1c32f14d, (q31_t)0xcaf33c28, (q31_t)0x1c28876a, (q31_t)0xcafa44bc,\n    (q31_t)0x1c1e1ee9, (q31_t)0xcb014f5b, (q31_t)0x1c13b7c9, (q31_t)0xcb085c05,\n    (q31_t)0x1c09520d, (q31_t)0xcb0f6aba, (q31_t)0x1bfeedb3, (q31_t)0xcb167b79,\n    (q31_t)0x1bf48abd, (q31_t)0xcb1d8e43, (q31_t)0x1bea292b, (q31_t)0xcb24a316,\n    (q31_t)0x1bdfc8fc, (q31_t)0xcb2bb9f4, (q31_t)0x1bd56a32, (q31_t)0xcb32d2da,\n    (q31_t)0x1bcb0cce, (q31_t)0xcb39edca, (q31_t)0x1bc0b0ce, (q31_t)0xcb410ac3,\n    (q31_t)0x1bb65634, (q31_t)0xcb4829c4, (q31_t)0x1babfd01, (q31_t)0xcb4f4acd,\n    (q31_t)0x1ba1a534, (q31_t)0xcb566ddf, (q31_t)0x1b974ece, (q31_t)0xcb5d92f8,\n    (q31_t)0x1b8cf9cf, (q31_t)0xcb64ba19, (q31_t)0x1b82a638, (q31_t)0xcb6be341,\n    (q31_t)0x1b785409, (q31_t)0xcb730e70, (q31_t)0x1b6e0342, (q31_t)0xcb7a3ba5,\n    (q31_t)0x1b63b3e5, (q31_t)0xcb816ae1, (q31_t)0x1b5965f1, (q31_t)0xcb889c23,\n    (q31_t)0x1b4f1967, (q31_t)0xcb8fcf6b, (q31_t)0x1b44ce46, (q31_t)0xcb9704b9,\n    (q31_t)0x1b3a8491, (q31_t)0xcb9e3c0b, (q31_t)0x1b303c46, (q31_t)0xcba57563,\n    (q31_t)0x1b25f566, (q31_t)0xcbacb0bf, (q31_t)0x1b1baff2, (q31_t)0xcbb3ee20,\n    (q31_t)0x1b116beb, (q31_t)0xcbbb2d85, (q31_t)0x1b072950, (q31_t)0xcbc26eee,\n    (q31_t)0x1afce821, (q31_t)0xcbc9b25a, (q31_t)0x1af2a860, (q31_t)0xcbd0f7ca,\n    (q31_t)0x1ae86a0d, (q31_t)0xcbd83f3d, (q31_t)0x1ade2d28, (q31_t)0xcbdf88b3,\n    (q31_t)0x1ad3f1b1, (q31_t)0xcbe6d42b, (q31_t)0x1ac9b7a9, (q31_t)0xcbee21a5,\n    (q31_t)0x1abf7f11, (q31_t)0xcbf57121, (q31_t)0x1ab547e8, (q31_t)0xcbfcc29f,\n    (q31_t)0x1aab122f, (q31_t)0xcc04161e, (q31_t)0x1aa0dde7, (q31_t)0xcc0b6b9e,\n    (q31_t)0x1a96ab0f, (q31_t)0xcc12c31f, (q31_t)0x1a8c79a9, (q31_t)0xcc1a1ca0,\n    (q31_t)0x1a8249b4, (q31_t)0xcc217822, (q31_t)0x1a781b31, (q31_t)0xcc28d5a3,\n    (q31_t)0x1a6dee21, (q31_t)0xcc303524, (q31_t)0x1a63c284, (q31_t)0xcc3796a5,\n    (q31_t)0x1a599859, (q31_t)0xcc3efa25, (q31_t)0x1a4f6fa3, (q31_t)0xcc465fa3,\n    (q31_t)0x1a454860, (q31_t)0xcc4dc720, (q31_t)0x1a3b2292, (q31_t)0xcc55309b,\n    (q31_t)0x1a30fe38, (q31_t)0xcc5c9c14, (q31_t)0x1a26db54, (q31_t)0xcc64098b,\n    (q31_t)0x1a1cb9e5, (q31_t)0xcc6b78ff, (q31_t)0x1a1299ec, (q31_t)0xcc72ea70,\n    (q31_t)0x1a087b69, (q31_t)0xcc7a5dde, (q31_t)0x19fe5e5e, (q31_t)0xcc81d349,\n    (q31_t)0x19f442c9, (q31_t)0xcc894aaf, (q31_t)0x19ea28ac, (q31_t)0xcc90c412,\n    (q31_t)0x19e01006, (q31_t)0xcc983f70, (q31_t)0x19d5f8d9, (q31_t)0xcc9fbcca,\n    (q31_t)0x19cbe325, (q31_t)0xcca73c1e, (q31_t)0x19c1cee9, (q31_t)0xccaebd6e,\n    (q31_t)0x19b7bc27, (q31_t)0xccb640b8, (q31_t)0x19adaadf, (q31_t)0xccbdc5fc,\n    (q31_t)0x19a39b11, (q31_t)0xccc54d3a, (q31_t)0x19998cbe, (q31_t)0xccccd671,\n    (q31_t)0x198f7fe6, (q31_t)0xccd461a2, (q31_t)0x19857489, (q31_t)0xccdbeecc,\n    (q31_t)0x197b6aa8, (q31_t)0xcce37def, (q31_t)0x19716243, (q31_t)0xcceb0f0a,\n    (q31_t)0x19675b5a, (q31_t)0xccf2a21d, (q31_t)0x195d55ef, (q31_t)0xccfa3729,\n    (q31_t)0x19535201, (q31_t)0xcd01ce2b, (q31_t)0x19494f90, (q31_t)0xcd096725,\n    (q31_t)0x193f4e9e, (q31_t)0xcd110216, (q31_t)0x19354f2a, (q31_t)0xcd189efe,\n    (q31_t)0x192b5135, (q31_t)0xcd203ddc, (q31_t)0x192154bf, (q31_t)0xcd27deb0,\n    (q31_t)0x191759c9, (q31_t)0xcd2f817b, (q31_t)0x190d6053, (q31_t)0xcd37263a,\n    (q31_t)0x1903685d, (q31_t)0xcd3eccef, (q31_t)0x18f971e8, (q31_t)0xcd467599,\n    (q31_t)0x18ef7cf4, (q31_t)0xcd4e2037, (q31_t)0x18e58982, (q31_t)0xcd55ccca,\n    (q31_t)0x18db9792, (q31_t)0xcd5d7b50, (q31_t)0x18d1a724, (q31_t)0xcd652bcb,\n    (q31_t)0x18c7b838, (q31_t)0xcd6cde39, (q31_t)0x18bdcad0, (q31_t)0xcd74929a,\n    (q31_t)0x18b3deeb, (q31_t)0xcd7c48ee, (q31_t)0x18a9f48a, (q31_t)0xcd840134,\n    (q31_t)0x18a00bae, (q31_t)0xcd8bbb6d, (q31_t)0x18962456, (q31_t)0xcd937798,\n    (q31_t)0x188c3e83, (q31_t)0xcd9b35b4, (q31_t)0x18825a35, (q31_t)0xcda2f5c2,\n    (q31_t)0x1878776d, (q31_t)0xcdaab7c0, (q31_t)0x186e962b, (q31_t)0xcdb27bb0,\n    (q31_t)0x1864b670, (q31_t)0xcdba4190, (q31_t)0x185ad83c, (q31_t)0xcdc20960,\n    (q31_t)0x1850fb8e, (q31_t)0xcdc9d320, (q31_t)0x18472069, (q31_t)0xcdd19ed0,\n    (q31_t)0x183d46cc, (q31_t)0xcdd96c6f, (q31_t)0x18336eb7, (q31_t)0xcde13bfd,\n    (q31_t)0x1829982b, (q31_t)0xcde90d79, (q31_t)0x181fc328, (q31_t)0xcdf0e0e4,\n    (q31_t)0x1815efae, (q31_t)0xcdf8b63d, (q31_t)0x180c1dbf, (q31_t)0xce008d84,\n    (q31_t)0x18024d59, (q31_t)0xce0866b8, (q31_t)0x17f87e7f, (q31_t)0xce1041d9,\n    (q31_t)0x17eeb130, (q31_t)0xce181ee8, (q31_t)0x17e4e56c, (q31_t)0xce1ffde2,\n    (q31_t)0x17db1b34, (q31_t)0xce27dec9, (q31_t)0x17d15288, (q31_t)0xce2fc19c,\n    (q31_t)0x17c78b68, (q31_t)0xce37a65b, (q31_t)0x17bdc5d6, (q31_t)0xce3f8d05,\n    (q31_t)0x17b401d1, (q31_t)0xce47759a, (q31_t)0x17aa3f5a, (q31_t)0xce4f6019,\n    (q31_t)0x17a07e70, (q31_t)0xce574c84, (q31_t)0x1796bf16, (q31_t)0xce5f3ad8,\n    (q31_t)0x178d014a, (q31_t)0xce672b16, (q31_t)0x1783450d, (q31_t)0xce6f1d3d,\n    (q31_t)0x17798a60, (q31_t)0xce77114e, (q31_t)0x176fd143, (q31_t)0xce7f0748,\n    (q31_t)0x176619b6, (q31_t)0xce86ff2a, (q31_t)0x175c63ba, (q31_t)0xce8ef8f4,\n    (q31_t)0x1752af4f, (q31_t)0xce96f4a7, (q31_t)0x1748fc75, (q31_t)0xce9ef241,\n    (q31_t)0x173f4b2e, (q31_t)0xcea6f1c2, (q31_t)0x17359b78, (q31_t)0xceaef32b,\n    (q31_t)0x172bed55, (q31_t)0xceb6f67a, (q31_t)0x172240c5, (q31_t)0xcebefbb0,\n    (q31_t)0x171895c9, (q31_t)0xcec702cb, (q31_t)0x170eec60, (q31_t)0xcecf0bcd,\n    (q31_t)0x1705448b, (q31_t)0xced716b4, (q31_t)0x16fb9e4b, (q31_t)0xcedf2380,\n    (q31_t)0x16f1f99f, (q31_t)0xcee73231, (q31_t)0x16e85689, (q31_t)0xceef42c7,\n    (q31_t)0x16deb508, (q31_t)0xcef75541, (q31_t)0x16d5151d, (q31_t)0xceff699f,\n    (q31_t)0x16cb76c9, (q31_t)0xcf077fe1, (q31_t)0x16c1da0b, (q31_t)0xcf0f9805,\n    (q31_t)0x16b83ee4, (q31_t)0xcf17b20d, (q31_t)0x16aea555, (q31_t)0xcf1fcdf8,\n    (q31_t)0x16a50d5d, (q31_t)0xcf27ebc5, (q31_t)0x169b76fe, (q31_t)0xcf300b74,\n    (q31_t)0x1691e237, (q31_t)0xcf382d05, (q31_t)0x16884f09, (q31_t)0xcf405077,\n    (q31_t)0x167ebd74, (q31_t)0xcf4875ca, (q31_t)0x16752d79, (q31_t)0xcf509cfe,\n    (q31_t)0x166b9f18, (q31_t)0xcf58c613, (q31_t)0x16621251, (q31_t)0xcf60f108,\n    (q31_t)0x16588725, (q31_t)0xcf691ddd, (q31_t)0x164efd94, (q31_t)0xcf714c91,\n    (q31_t)0x1645759f, (q31_t)0xcf797d24, (q31_t)0x163bef46, (q31_t)0xcf81af97,\n    (q31_t)0x16326a88, (q31_t)0xcf89e3e8, (q31_t)0x1628e767, (q31_t)0xcf921a17,\n    (q31_t)0x161f65e4, (q31_t)0xcf9a5225, (q31_t)0x1615e5fd, (q31_t)0xcfa28c10,\n    (q31_t)0x160c67b4, (q31_t)0xcfaac7d8, (q31_t)0x1602eb0a, (q31_t)0xcfb3057d,\n    (q31_t)0x15f96ffd, (q31_t)0xcfbb4500, (q31_t)0x15eff690, (q31_t)0xcfc3865e,\n    (q31_t)0x15e67ec1, (q31_t)0xcfcbc999, (q31_t)0x15dd0892, (q31_t)0xcfd40eaf,\n    (q31_t)0x15d39403, (q31_t)0xcfdc55a1, (q31_t)0x15ca2115, (q31_t)0xcfe49e6d,\n    (q31_t)0x15c0afc6, (q31_t)0xcfece915, (q31_t)0x15b74019, (q31_t)0xcff53597,\n    (q31_t)0x15add20d, (q31_t)0xcffd83f4, (q31_t)0x15a465a3, (q31_t)0xd005d42a,\n    (q31_t)0x159afadb, (q31_t)0xd00e2639, (q31_t)0x159191b5, (q31_t)0xd0167a22,\n    (q31_t)0x15882a32, (q31_t)0xd01ecfe4, (q31_t)0x157ec452, (q31_t)0xd027277e,\n    (q31_t)0x15756016, (q31_t)0xd02f80f1, (q31_t)0x156bfd7d, (q31_t)0xd037dc3b,\n    (q31_t)0x15629c89, (q31_t)0xd040395d, (q31_t)0x15593d3a, (q31_t)0xd0489856,\n    (q31_t)0x154fdf8f, (q31_t)0xd050f926, (q31_t)0x15468389, (q31_t)0xd0595bcd,\n    (q31_t)0x153d292a, (q31_t)0xd061c04a, (q31_t)0x1533d070, (q31_t)0xd06a269d,\n    (q31_t)0x152a795d, (q31_t)0xd0728ec6, (q31_t)0x152123f0, (q31_t)0xd07af8c4,\n    (q31_t)0x1517d02b, (q31_t)0xd0836497, (q31_t)0x150e7e0d, (q31_t)0xd08bd23f,\n    (q31_t)0x15052d97, (q31_t)0xd09441bb, (q31_t)0x14fbdec9, (q31_t)0xd09cb30b,\n    (q31_t)0x14f291a4, (q31_t)0xd0a5262f, (q31_t)0x14e94627, (q31_t)0xd0ad9b26,\n    (q31_t)0x14dffc54, (q31_t)0xd0b611f1, (q31_t)0x14d6b42b, (q31_t)0xd0be8a8d,\n    (q31_t)0x14cd6dab, (q31_t)0xd0c704fd, (q31_t)0x14c428d6, (q31_t)0xd0cf813e,\n    (q31_t)0x14bae5ab, (q31_t)0xd0d7ff51, (q31_t)0x14b1a42c, (q31_t)0xd0e07f36,\n    (q31_t)0x14a86458, (q31_t)0xd0e900ec, (q31_t)0x149f2630, (q31_t)0xd0f18472,\n    (q31_t)0x1495e9b3, (q31_t)0xd0fa09c9, (q31_t)0x148caee4, (q31_t)0xd10290f0,\n    (q31_t)0x148375c1, (q31_t)0xd10b19e7, (q31_t)0x147a3e4b, (q31_t)0xd113a4ad,\n    (q31_t)0x14710883, (q31_t)0xd11c3142, (q31_t)0x1467d469, (q31_t)0xd124bfa6,\n    (q31_t)0x145ea1fd, (q31_t)0xd12d4fd9, (q31_t)0x14557140, (q31_t)0xd135e1d9,\n    (q31_t)0x144c4232, (q31_t)0xd13e75a8, (q31_t)0x144314d3, (q31_t)0xd1470b44,\n    (q31_t)0x1439e923, (q31_t)0xd14fa2ad, (q31_t)0x1430bf24, (q31_t)0xd1583be2,\n    (q31_t)0x142796d5, (q31_t)0xd160d6e5, (q31_t)0x141e7037, (q31_t)0xd16973b3,\n    (q31_t)0x14154b4a, (q31_t)0xd172124d, (q31_t)0x140c280e, (q31_t)0xd17ab2b3,\n    (q31_t)0x14030684, (q31_t)0xd18354e4, (q31_t)0x13f9e6ad, (q31_t)0xd18bf8e0,\n    (q31_t)0x13f0c887, (q31_t)0xd1949ea6, (q31_t)0x13e7ac15, (q31_t)0xd19d4636,\n    (q31_t)0x13de9156, (q31_t)0xd1a5ef90, (q31_t)0x13d5784a, (q31_t)0xd1ae9ab4,\n    (q31_t)0x13cc60f2, (q31_t)0xd1b747a0, (q31_t)0x13c34b4f, (q31_t)0xd1bff656,\n    (q31_t)0x13ba3760, (q31_t)0xd1c8a6d4, (q31_t)0x13b12526, (q31_t)0xd1d1591a,\n    (q31_t)0x13a814a2, (q31_t)0xd1da0d28, (q31_t)0x139f05d3, (q31_t)0xd1e2c2fd,\n    (q31_t)0x1395f8ba, (q31_t)0xd1eb7a9a, (q31_t)0x138ced57, (q31_t)0xd1f433fd,\n    (q31_t)0x1383e3ab, (q31_t)0xd1fcef27, (q31_t)0x137adbb6, (q31_t)0xd205ac17,\n    (q31_t)0x1371d579, (q31_t)0xd20e6acc, (q31_t)0x1368d0f3, (q31_t)0xd2172b48,\n    (q31_t)0x135fce26, (q31_t)0xd21fed88, (q31_t)0x1356cd11, (q31_t)0xd228b18d,\n    (q31_t)0x134dcdb4, (q31_t)0xd2317756, (q31_t)0x1344d011, (q31_t)0xd23a3ee4,\n    (q31_t)0x133bd427, (q31_t)0xd2430835, (q31_t)0x1332d9f7, (q31_t)0xd24bd34a,\n    (q31_t)0x1329e181, (q31_t)0xd254a021, (q31_t)0x1320eac6, (q31_t)0xd25d6ebc,\n    (q31_t)0x1317f5c6, (q31_t)0xd2663f19, (q31_t)0x130f0280, (q31_t)0xd26f1138,\n    (q31_t)0x130610f7, (q31_t)0xd277e518, (q31_t)0x12fd2129, (q31_t)0xd280babb,\n    (q31_t)0x12f43318, (q31_t)0xd289921e, (q31_t)0x12eb46c3, (q31_t)0xd2926b41,\n    (q31_t)0x12e25c2b, (q31_t)0xd29b4626, (q31_t)0x12d97350, (q31_t)0xd2a422ca,\n    (q31_t)0x12d08c33, (q31_t)0xd2ad012e, (q31_t)0x12c7a6d4, (q31_t)0xd2b5e151,\n    (q31_t)0x12bec333, (q31_t)0xd2bec333, (q31_t)0x12b5e151, (q31_t)0xd2c7a6d4,\n    (q31_t)0x12ad012e, (q31_t)0xd2d08c33, (q31_t)0x12a422ca, (q31_t)0xd2d97350,\n    (q31_t)0x129b4626, (q31_t)0xd2e25c2b, (q31_t)0x12926b41, (q31_t)0xd2eb46c3,\n    (q31_t)0x1289921e, (q31_t)0xd2f43318, (q31_t)0x1280babb, (q31_t)0xd2fd2129,\n    (q31_t)0x1277e518, (q31_t)0xd30610f7, (q31_t)0x126f1138, (q31_t)0xd30f0280,\n    (q31_t)0x12663f19, (q31_t)0xd317f5c6, (q31_t)0x125d6ebc, (q31_t)0xd320eac6,\n    (q31_t)0x1254a021, (q31_t)0xd329e181, (q31_t)0x124bd34a, (q31_t)0xd332d9f7,\n    (q31_t)0x12430835, (q31_t)0xd33bd427, (q31_t)0x123a3ee4, (q31_t)0xd344d011,\n    (q31_t)0x12317756, (q31_t)0xd34dcdb4, (q31_t)0x1228b18d, (q31_t)0xd356cd11,\n    (q31_t)0x121fed88, (q31_t)0xd35fce26, (q31_t)0x12172b48, (q31_t)0xd368d0f3,\n    (q31_t)0x120e6acc, (q31_t)0xd371d579, (q31_t)0x1205ac17, (q31_t)0xd37adbb6,\n    (q31_t)0x11fcef27, (q31_t)0xd383e3ab, (q31_t)0x11f433fd, (q31_t)0xd38ced57,\n    (q31_t)0x11eb7a9a, (q31_t)0xd395f8ba, (q31_t)0x11e2c2fd, (q31_t)0xd39f05d3,\n    (q31_t)0x11da0d28, (q31_t)0xd3a814a2, (q31_t)0x11d1591a, (q31_t)0xd3b12526,\n    (q31_t)0x11c8a6d4, (q31_t)0xd3ba3760, (q31_t)0x11bff656, (q31_t)0xd3c34b4f,\n    (q31_t)0x11b747a0, (q31_t)0xd3cc60f2, (q31_t)0x11ae9ab4, (q31_t)0xd3d5784a,\n    (q31_t)0x11a5ef90, (q31_t)0xd3de9156, (q31_t)0x119d4636, (q31_t)0xd3e7ac15,\n    (q31_t)0x11949ea6, (q31_t)0xd3f0c887, (q31_t)0x118bf8e0, (q31_t)0xd3f9e6ad,\n    (q31_t)0x118354e4, (q31_t)0xd4030684, (q31_t)0x117ab2b3, (q31_t)0xd40c280e,\n    (q31_t)0x1172124d, (q31_t)0xd4154b4a, (q31_t)0x116973b3, (q31_t)0xd41e7037,\n    (q31_t)0x1160d6e5, (q31_t)0xd42796d5, (q31_t)0x11583be2, (q31_t)0xd430bf24,\n    (q31_t)0x114fa2ad, (q31_t)0xd439e923, (q31_t)0x11470b44, (q31_t)0xd44314d3,\n    (q31_t)0x113e75a8, (q31_t)0xd44c4232, (q31_t)0x1135e1d9, (q31_t)0xd4557140,\n    (q31_t)0x112d4fd9, (q31_t)0xd45ea1fd, (q31_t)0x1124bfa6, (q31_t)0xd467d469,\n    (q31_t)0x111c3142, (q31_t)0xd4710883, (q31_t)0x1113a4ad, (q31_t)0xd47a3e4b,\n    (q31_t)0x110b19e7, (q31_t)0xd48375c1, (q31_t)0x110290f0, (q31_t)0xd48caee4,\n    (q31_t)0x10fa09c9, (q31_t)0xd495e9b3, (q31_t)0x10f18472, (q31_t)0xd49f2630,\n    (q31_t)0x10e900ec, (q31_t)0xd4a86458, (q31_t)0x10e07f36, (q31_t)0xd4b1a42c,\n    (q31_t)0x10d7ff51, (q31_t)0xd4bae5ab, (q31_t)0x10cf813e, (q31_t)0xd4c428d6,\n    (q31_t)0x10c704fd, (q31_t)0xd4cd6dab, (q31_t)0x10be8a8d, (q31_t)0xd4d6b42b,\n    (q31_t)0x10b611f1, (q31_t)0xd4dffc54, (q31_t)0x10ad9b26, (q31_t)0xd4e94627,\n    (q31_t)0x10a5262f, (q31_t)0xd4f291a4, (q31_t)0x109cb30b, (q31_t)0xd4fbdec9,\n    (q31_t)0x109441bb, (q31_t)0xd5052d97, (q31_t)0x108bd23f, (q31_t)0xd50e7e0d,\n    (q31_t)0x10836497, (q31_t)0xd517d02b, (q31_t)0x107af8c4, (q31_t)0xd52123f0,\n    (q31_t)0x10728ec6, (q31_t)0xd52a795d, (q31_t)0x106a269d, (q31_t)0xd533d070,\n    (q31_t)0x1061c04a, (q31_t)0xd53d292a, (q31_t)0x10595bcd, (q31_t)0xd5468389,\n    (q31_t)0x1050f926, (q31_t)0xd54fdf8f, (q31_t)0x10489856, (q31_t)0xd5593d3a,\n    (q31_t)0x1040395d, (q31_t)0xd5629c89, (q31_t)0x1037dc3b, (q31_t)0xd56bfd7d,\n    (q31_t)0x102f80f1, (q31_t)0xd5756016, (q31_t)0x1027277e, (q31_t)0xd57ec452,\n    (q31_t)0x101ecfe4, (q31_t)0xd5882a32, (q31_t)0x10167a22, (q31_t)0xd59191b5,\n    (q31_t)0x100e2639, (q31_t)0xd59afadb, (q31_t)0x1005d42a, (q31_t)0xd5a465a3,\n    (q31_t)0xffd83f4, (q31_t)0xd5add20d, (q31_t)0xff53597, (q31_t)0xd5b74019,\n    (q31_t)0xfece915, (q31_t)0xd5c0afc6, (q31_t)0xfe49e6d, (q31_t)0xd5ca2115,\n    (q31_t)0xfdc55a1, (q31_t)0xd5d39403, (q31_t)0xfd40eaf, (q31_t)0xd5dd0892,\n    (q31_t)0xfcbc999, (q31_t)0xd5e67ec1, (q31_t)0xfc3865e, (q31_t)0xd5eff690,\n    (q31_t)0xfbb4500, (q31_t)0xd5f96ffd, (q31_t)0xfb3057d, (q31_t)0xd602eb0a,\n    (q31_t)0xfaac7d8, (q31_t)0xd60c67b4, (q31_t)0xfa28c10, (q31_t)0xd615e5fd,\n    (q31_t)0xf9a5225, (q31_t)0xd61f65e4, (q31_t)0xf921a17, (q31_t)0xd628e767,\n    (q31_t)0xf89e3e8, (q31_t)0xd6326a88, (q31_t)0xf81af97, (q31_t)0xd63bef46,\n    (q31_t)0xf797d24, (q31_t)0xd645759f, (q31_t)0xf714c91, (q31_t)0xd64efd94,\n    (q31_t)0xf691ddd, (q31_t)0xd6588725, (q31_t)0xf60f108, (q31_t)0xd6621251,\n    (q31_t)0xf58c613, (q31_t)0xd66b9f18, (q31_t)0xf509cfe, (q31_t)0xd6752d79,\n    (q31_t)0xf4875ca, (q31_t)0xd67ebd74, (q31_t)0xf405077, (q31_t)0xd6884f09,\n    (q31_t)0xf382d05, (q31_t)0xd691e237, (q31_t)0xf300b74, (q31_t)0xd69b76fe,\n    (q31_t)0xf27ebc5, (q31_t)0xd6a50d5d, (q31_t)0xf1fcdf8, (q31_t)0xd6aea555,\n    (q31_t)0xf17b20d, (q31_t)0xd6b83ee4, (q31_t)0xf0f9805, (q31_t)0xd6c1da0b,\n    (q31_t)0xf077fe1, (q31_t)0xd6cb76c9, (q31_t)0xeff699f, (q31_t)0xd6d5151d,\n    (q31_t)0xef75541, (q31_t)0xd6deb508, (q31_t)0xeef42c7, (q31_t)0xd6e85689,\n    (q31_t)0xee73231, (q31_t)0xd6f1f99f, (q31_t)0xedf2380, (q31_t)0xd6fb9e4b,\n    (q31_t)0xed716b4, (q31_t)0xd705448b, (q31_t)0xecf0bcd, (q31_t)0xd70eec60,\n    (q31_t)0xec702cb, (q31_t)0xd71895c9, (q31_t)0xebefbb0, (q31_t)0xd72240c5,\n    (q31_t)0xeb6f67a, (q31_t)0xd72bed55, (q31_t)0xeaef32b, (q31_t)0xd7359b78,\n    (q31_t)0xea6f1c2, (q31_t)0xd73f4b2e, (q31_t)0xe9ef241, (q31_t)0xd748fc75,\n    (q31_t)0xe96f4a7, (q31_t)0xd752af4f, (q31_t)0xe8ef8f4, (q31_t)0xd75c63ba,\n    (q31_t)0xe86ff2a, (q31_t)0xd76619b6, (q31_t)0xe7f0748, (q31_t)0xd76fd143,\n    (q31_t)0xe77114e, (q31_t)0xd7798a60, (q31_t)0xe6f1d3d, (q31_t)0xd783450d,\n    (q31_t)0xe672b16, (q31_t)0xd78d014a, (q31_t)0xe5f3ad8, (q31_t)0xd796bf16,\n    (q31_t)0xe574c84, (q31_t)0xd7a07e70, (q31_t)0xe4f6019, (q31_t)0xd7aa3f5a,\n    (q31_t)0xe47759a, (q31_t)0xd7b401d1, (q31_t)0xe3f8d05, (q31_t)0xd7bdc5d6,\n    (q31_t)0xe37a65b, (q31_t)0xd7c78b68, (q31_t)0xe2fc19c, (q31_t)0xd7d15288,\n    (q31_t)0xe27dec9, (q31_t)0xd7db1b34, (q31_t)0xe1ffde2, (q31_t)0xd7e4e56c,\n    (q31_t)0xe181ee8, (q31_t)0xd7eeb130, (q31_t)0xe1041d9, (q31_t)0xd7f87e7f,\n    (q31_t)0xe0866b8, (q31_t)0xd8024d59, (q31_t)0xe008d84, (q31_t)0xd80c1dbf,\n    (q31_t)0xdf8b63d, (q31_t)0xd815efae, (q31_t)0xdf0e0e4, (q31_t)0xd81fc328,\n    (q31_t)0xde90d79, (q31_t)0xd829982b, (q31_t)0xde13bfd, (q31_t)0xd8336eb7,\n    (q31_t)0xdd96c6f, (q31_t)0xd83d46cc, (q31_t)0xdd19ed0, (q31_t)0xd8472069,\n    (q31_t)0xdc9d320, (q31_t)0xd850fb8e, (q31_t)0xdc20960, (q31_t)0xd85ad83c,\n    (q31_t)0xdba4190, (q31_t)0xd864b670, (q31_t)0xdb27bb0, (q31_t)0xd86e962b,\n    (q31_t)0xdaab7c0, (q31_t)0xd878776d, (q31_t)0xda2f5c2, (q31_t)0xd8825a35,\n    (q31_t)0xd9b35b4, (q31_t)0xd88c3e83, (q31_t)0xd937798, (q31_t)0xd8962456,\n    (q31_t)0xd8bbb6d, (q31_t)0xd8a00bae, (q31_t)0xd840134, (q31_t)0xd8a9f48a,\n    (q31_t)0xd7c48ee, (q31_t)0xd8b3deeb, (q31_t)0xd74929a, (q31_t)0xd8bdcad0,\n    (q31_t)0xd6cde39, (q31_t)0xd8c7b838, (q31_t)0xd652bcb, (q31_t)0xd8d1a724,\n    (q31_t)0xd5d7b50, (q31_t)0xd8db9792, (q31_t)0xd55ccca, (q31_t)0xd8e58982,\n    (q31_t)0xd4e2037, (q31_t)0xd8ef7cf4, (q31_t)0xd467599, (q31_t)0xd8f971e8,\n    (q31_t)0xd3eccef, (q31_t)0xd903685d, (q31_t)0xd37263a, (q31_t)0xd90d6053,\n    (q31_t)0xd2f817b, (q31_t)0xd91759c9, (q31_t)0xd27deb0, (q31_t)0xd92154bf,\n    (q31_t)0xd203ddc, (q31_t)0xd92b5135, (q31_t)0xd189efe, (q31_t)0xd9354f2a,\n    (q31_t)0xd110216, (q31_t)0xd93f4e9e, (q31_t)0xd096725, (q31_t)0xd9494f90,\n    (q31_t)0xd01ce2b, (q31_t)0xd9535201, (q31_t)0xcfa3729, (q31_t)0xd95d55ef,\n    (q31_t)0xcf2a21d, (q31_t)0xd9675b5a, (q31_t)0xceb0f0a, (q31_t)0xd9716243,\n    (q31_t)0xce37def, (q31_t)0xd97b6aa8, (q31_t)0xcdbeecc, (q31_t)0xd9857489,\n    (q31_t)0xcd461a2, (q31_t)0xd98f7fe6, (q31_t)0xcccd671, (q31_t)0xd9998cbe,\n    (q31_t)0xcc54d3a, (q31_t)0xd9a39b11, (q31_t)0xcbdc5fc, (q31_t)0xd9adaadf,\n    (q31_t)0xcb640b8, (q31_t)0xd9b7bc27, (q31_t)0xcaebd6e, (q31_t)0xd9c1cee9,\n    (q31_t)0xca73c1e, (q31_t)0xd9cbe325, (q31_t)0xc9fbcca, (q31_t)0xd9d5f8d9,\n    (q31_t)0xc983f70, (q31_t)0xd9e01006, (q31_t)0xc90c412, (q31_t)0xd9ea28ac,\n    (q31_t)0xc894aaf, (q31_t)0xd9f442c9, (q31_t)0xc81d349, (q31_t)0xd9fe5e5e,\n    (q31_t)0xc7a5dde, (q31_t)0xda087b69, (q31_t)0xc72ea70, (q31_t)0xda1299ec,\n    (q31_t)0xc6b78ff, (q31_t)0xda1cb9e5, (q31_t)0xc64098b, (q31_t)0xda26db54,\n    (q31_t)0xc5c9c14, (q31_t)0xda30fe38, (q31_t)0xc55309b, (q31_t)0xda3b2292,\n    (q31_t)0xc4dc720, (q31_t)0xda454860, (q31_t)0xc465fa3, (q31_t)0xda4f6fa3,\n    (q31_t)0xc3efa25, (q31_t)0xda599859, (q31_t)0xc3796a5, (q31_t)0xda63c284,\n    (q31_t)0xc303524, (q31_t)0xda6dee21, (q31_t)0xc28d5a3, (q31_t)0xda781b31,\n    (q31_t)0xc217822, (q31_t)0xda8249b4, (q31_t)0xc1a1ca0, (q31_t)0xda8c79a9,\n    (q31_t)0xc12c31f, (q31_t)0xda96ab0f, (q31_t)0xc0b6b9e, (q31_t)0xdaa0dde7,\n    (q31_t)0xc04161e, (q31_t)0xdaab122f, (q31_t)0xbfcc29f, (q31_t)0xdab547e8,\n    (q31_t)0xbf57121, (q31_t)0xdabf7f11, (q31_t)0xbee21a5, (q31_t)0xdac9b7a9,\n    (q31_t)0xbe6d42b, (q31_t)0xdad3f1b1, (q31_t)0xbdf88b3, (q31_t)0xdade2d28,\n    (q31_t)0xbd83f3d, (q31_t)0xdae86a0d, (q31_t)0xbd0f7ca, (q31_t)0xdaf2a860,\n    (q31_t)0xbc9b25a, (q31_t)0xdafce821, (q31_t)0xbc26eee, (q31_t)0xdb072950,\n    (q31_t)0xbbb2d85, (q31_t)0xdb116beb, (q31_t)0xbb3ee20, (q31_t)0xdb1baff2,\n    (q31_t)0xbacb0bf, (q31_t)0xdb25f566, (q31_t)0xba57563, (q31_t)0xdb303c46,\n    (q31_t)0xb9e3c0b, (q31_t)0xdb3a8491, (q31_t)0xb9704b9, (q31_t)0xdb44ce46,\n    (q31_t)0xb8fcf6b, (q31_t)0xdb4f1967, (q31_t)0xb889c23, (q31_t)0xdb5965f1,\n    (q31_t)0xb816ae1, (q31_t)0xdb63b3e5, (q31_t)0xb7a3ba5, (q31_t)0xdb6e0342,\n    (q31_t)0xb730e70, (q31_t)0xdb785409, (q31_t)0xb6be341, (q31_t)0xdb82a638,\n    (q31_t)0xb64ba19, (q31_t)0xdb8cf9cf, (q31_t)0xb5d92f8, (q31_t)0xdb974ece,\n    (q31_t)0xb566ddf, (q31_t)0xdba1a534, (q31_t)0xb4f4acd, (q31_t)0xdbabfd01,\n    (q31_t)0xb4829c4, (q31_t)0xdbb65634, (q31_t)0xb410ac3, (q31_t)0xdbc0b0ce,\n    (q31_t)0xb39edca, (q31_t)0xdbcb0cce, (q31_t)0xb32d2da, (q31_t)0xdbd56a32,\n    (q31_t)0xb2bb9f4, (q31_t)0xdbdfc8fc, (q31_t)0xb24a316, (q31_t)0xdbea292b,\n    (q31_t)0xb1d8e43, (q31_t)0xdbf48abd, (q31_t)0xb167b79, (q31_t)0xdbfeedb3,\n    (q31_t)0xb0f6aba, (q31_t)0xdc09520d, (q31_t)0xb085c05, (q31_t)0xdc13b7c9,\n    (q31_t)0xb014f5b, (q31_t)0xdc1e1ee9, (q31_t)0xafa44bc, (q31_t)0xdc28876a,\n    (q31_t)0xaf33c28, (q31_t)0xdc32f14d, (q31_t)0xaec35a0, (q31_t)0xdc3d5c91,\n    (q31_t)0xae53123, (q31_t)0xdc47c936, (q31_t)0xade2eb3, (q31_t)0xdc52373c,\n    (q31_t)0xad72e4f, (q31_t)0xdc5ca6a2, (q31_t)0xad02ff8, (q31_t)0xdc671768,\n    (q31_t)0xac933ae, (q31_t)0xdc71898d, (q31_t)0xac23971, (q31_t)0xdc7bfd11,\n    (q31_t)0xabb4141, (q31_t)0xdc8671f3, (q31_t)0xab44b1f, (q31_t)0xdc90e834,\n    (q31_t)0xaad570c, (q31_t)0xdc9b5fd2, (q31_t)0xaa66506, (q31_t)0xdca5d8cd,\n    (q31_t)0xa9f750f, (q31_t)0xdcb05326, (q31_t)0xa988727, (q31_t)0xdcbacedb,\n    (q31_t)0xa919b4e, (q31_t)0xdcc54bec, (q31_t)0xa8ab184, (q31_t)0xdccfca59,\n    (q31_t)0xa83c9ca, (q31_t)0xdcda4a21, (q31_t)0xa7ce420, (q31_t)0xdce4cb44,\n    (q31_t)0xa760086, (q31_t)0xdcef4dc2, (q31_t)0xa6f1efc, (q31_t)0xdcf9d199,\n    (q31_t)0xa683f83, (q31_t)0xdd0456ca, (q31_t)0xa61621b, (q31_t)0xdd0edd55,\n    (q31_t)0xa5a86c4, (q31_t)0xdd196538, (q31_t)0xa53ad7e, (q31_t)0xdd23ee74,\n    (q31_t)0xa4cd64b, (q31_t)0xdd2e7908, (q31_t)0xa460129, (q31_t)0xdd3904f4,\n    (q31_t)0xa3f2e19, (q31_t)0xdd439236, (q31_t)0xa385d1d, (q31_t)0xdd4e20d0,\n    (q31_t)0xa318e32, (q31_t)0xdd58b0c0, (q31_t)0xa2ac15b, (q31_t)0xdd634206,\n    (q31_t)0xa23f698, (q31_t)0xdd6dd4a2, (q31_t)0xa1d2de7, (q31_t)0xdd786892,\n    (q31_t)0xa16674b, (q31_t)0xdd82fdd8, (q31_t)0xa0fa2c3, (q31_t)0xdd8d9472,\n    (q31_t)0xa08e04f, (q31_t)0xdd982c60, (q31_t)0xa021fef, (q31_t)0xdda2c5a2,\n    (q31_t)0x9fb61a5, (q31_t)0xddad6036, (q31_t)0x9f4a570, (q31_t)0xddb7fc1e,\n    (q31_t)0x9edeb50, (q31_t)0xddc29958, (q31_t)0x9e73346, (q31_t)0xddcd37e4,\n    (q31_t)0x9e07d51, (q31_t)0xddd7d7c1, (q31_t)0x9d9c973, (q31_t)0xdde278ef,\n    (q31_t)0x9d317ab, (q31_t)0xdded1b6e, (q31_t)0x9cc67fa, (q31_t)0xddf7bf3e,\n    (q31_t)0x9c5ba60, (q31_t)0xde02645d, (q31_t)0x9bf0edd, (q31_t)0xde0d0acc,\n    (q31_t)0x9b86572, (q31_t)0xde17b28a, (q31_t)0x9b1be1e, (q31_t)0xde225b96,\n    (q31_t)0x9ab18e3, (q31_t)0xde2d05f1, (q31_t)0x9a475bf, (q31_t)0xde37b199,\n    (q31_t)0x99dd4b4, (q31_t)0xde425e8f, (q31_t)0x99735c2, (q31_t)0xde4d0cd2,\n    (q31_t)0x99098e9, (q31_t)0xde57bc62, (q31_t)0x989fe29, (q31_t)0xde626d3e,\n    (q31_t)0x9836582, (q31_t)0xde6d1f65, (q31_t)0x97ccef5, (q31_t)0xde77d2d8,\n    (q31_t)0x9763a83, (q31_t)0xde828796, (q31_t)0x96fa82a, (q31_t)0xde8d3d9e,\n    (q31_t)0x96917ec, (q31_t)0xde97f4f1, (q31_t)0x96289c9, (q31_t)0xdea2ad8d,\n    (q31_t)0x95bfdc1, (q31_t)0xdead6773, (q31_t)0x95573d4, (q31_t)0xdeb822a1,\n    (q31_t)0x94eec03, (q31_t)0xdec2df18, (q31_t)0x948664d, (q31_t)0xdecd9cd7,\n    (q31_t)0x941e2b4, (q31_t)0xded85bdd, (q31_t)0x93b6137, (q31_t)0xdee31c2b,\n    (q31_t)0x934e1d6, (q31_t)0xdeedddc0, (q31_t)0x92e6492, (q31_t)0xdef8a09b,\n    (q31_t)0x927e96b, (q31_t)0xdf0364bc, (q31_t)0x9217062, (q31_t)0xdf0e2a22,\n    (q31_t)0x91af976, (q31_t)0xdf18f0ce, (q31_t)0x91484a8, (q31_t)0xdf23b8be,\n    (q31_t)0x90e11f7, (q31_t)0xdf2e81f3, (q31_t)0x907a166, (q31_t)0xdf394c6b,\n    (q31_t)0x90132f2, (q31_t)0xdf441828, (q31_t)0x8fac69e, (q31_t)0xdf4ee527,\n    (q31_t)0x8f45c68, (q31_t)0xdf59b369, (q31_t)0x8edf452, (q31_t)0xdf6482ed,\n    (q31_t)0x8e78e5b, (q31_t)0xdf6f53b3, (q31_t)0x8e12a84, (q31_t)0xdf7a25ba,\n    (q31_t)0x8dac8cd, (q31_t)0xdf84f902, (q31_t)0x8d46936, (q31_t)0xdf8fcd8b,\n    (q31_t)0x8ce0bc0, (q31_t)0xdf9aa354, (q31_t)0x8c7b06b, (q31_t)0xdfa57a5d,\n    (q31_t)0x8c15736, (q31_t)0xdfb052a5, (q31_t)0x8bb0023, (q31_t)0xdfbb2c2c,\n    (q31_t)0x8b4ab32, (q31_t)0xdfc606f1, (q31_t)0x8ae5862, (q31_t)0xdfd0e2f5,\n    (q31_t)0x8a807b4, (q31_t)0xdfdbc036, (q31_t)0x8a1b928, (q31_t)0xdfe69eb4,\n    (q31_t)0x89b6cbf, (q31_t)0xdff17e70, (q31_t)0x8952278, (q31_t)0xdffc5f67,\n    (q31_t)0x88eda54, (q31_t)0xe007419b, (q31_t)0x8889454, (q31_t)0xe012250a,\n    (q31_t)0x8825077, (q31_t)0xe01d09b4, (q31_t)0x87c0ebd, (q31_t)0xe027ef99,\n    (q31_t)0x875cf28, (q31_t)0xe032d6b8, (q31_t)0x86f91b7, (q31_t)0xe03dbf11,\n    (q31_t)0x869566a, (q31_t)0xe048a8a4, (q31_t)0x8631d42, (q31_t)0xe053936f,\n    (q31_t)0x85ce63e, (q31_t)0xe05e7f74, (q31_t)0x856b160, (q31_t)0xe0696cb0,\n    (q31_t)0x8507ea7, (q31_t)0xe0745b24, (q31_t)0x84a4e14, (q31_t)0xe07f4acf,\n    (q31_t)0x8441fa6, (q31_t)0xe08a3bb2, (q31_t)0x83df35f, (q31_t)0xe0952dcb,\n    (q31_t)0x837c93e, (q31_t)0xe0a0211a, (q31_t)0x831a143, (q31_t)0xe0ab159e,\n    (q31_t)0x82b7b70, (q31_t)0xe0b60b58, (q31_t)0x82557c3, (q31_t)0xe0c10247,\n    (q31_t)0x81f363d, (q31_t)0xe0cbfa6a, (q31_t)0x81916df, (q31_t)0xe0d6f3c1,\n    (q31_t)0x812f9a9, (q31_t)0xe0e1ee4b, (q31_t)0x80cde9b, (q31_t)0xe0ecea09,\n    (q31_t)0x806c5b5, (q31_t)0xe0f7e6f9, (q31_t)0x800aef7, (q31_t)0xe102e51c,\n    (q31_t)0x7fa9a62, (q31_t)0xe10de470, (q31_t)0x7f487f6, (q31_t)0xe118e4f6,\n    (q31_t)0x7ee77b3, (q31_t)0xe123e6ad, (q31_t)0x7e8699a, (q31_t)0xe12ee995,\n    (q31_t)0x7e25daa, (q31_t)0xe139edac, (q31_t)0x7dc53e3, (q31_t)0xe144f2f3,\n    (q31_t)0x7d64c47, (q31_t)0xe14ff96a, (q31_t)0x7d046d6, (q31_t)0xe15b0110,\n    (q31_t)0x7ca438f, (q31_t)0xe16609e3, (q31_t)0x7c44272, (q31_t)0xe17113e5,\n    (q31_t)0x7be4381, (q31_t)0xe17c1f15, (q31_t)0x7b846ba, (q31_t)0xe1872b72,\n    (q31_t)0x7b24c20, (q31_t)0xe19238fb, (q31_t)0x7ac53b1, (q31_t)0xe19d47b1,\n    (q31_t)0x7a65d6e, (q31_t)0xe1a85793, (q31_t)0x7a06957, (q31_t)0xe1b368a0,\n    (q31_t)0x79a776c, (q31_t)0xe1be7ad8, (q31_t)0x79487ae, (q31_t)0xe1c98e3b,\n    (q31_t)0x78e9a1d, (q31_t)0xe1d4a2c8, (q31_t)0x788aeb9, (q31_t)0xe1dfb87f,\n    (q31_t)0x782c582, (q31_t)0xe1eacf5f, (q31_t)0x77cde79, (q31_t)0xe1f5e768,\n    (q31_t)0x776f99d, (q31_t)0xe2010099, (q31_t)0x77116f0, (q31_t)0xe20c1af3,\n    (q31_t)0x76b3671, (q31_t)0xe2173674, (q31_t)0x7655820, (q31_t)0xe222531c,\n    (q31_t)0x75f7bfe, (q31_t)0xe22d70eb, (q31_t)0x759a20a, (q31_t)0xe2388fe1,\n    (q31_t)0x753ca46, (q31_t)0xe243affc, (q31_t)0x74df4b1, (q31_t)0xe24ed13d,\n    (q31_t)0x748214c, (q31_t)0xe259f3a3, (q31_t)0x7425016, (q31_t)0xe265172e,\n    (q31_t)0x73c8111, (q31_t)0xe2703bdc, (q31_t)0x736b43c, (q31_t)0xe27b61af,\n    (q31_t)0x730e997, (q31_t)0xe28688a4, (q31_t)0x72b2123, (q31_t)0xe291b0bd,\n    (q31_t)0x7255ae0, (q31_t)0xe29cd9f8, (q31_t)0x71f96ce, (q31_t)0xe2a80456,\n    (q31_t)0x719d4ed, (q31_t)0xe2b32fd4, (q31_t)0x714153e, (q31_t)0xe2be5c74,\n    (q31_t)0x70e57c0, (q31_t)0xe2c98a35, (q31_t)0x7089c75, (q31_t)0xe2d4b916,\n    (q31_t)0x702e35c, (q31_t)0xe2dfe917, (q31_t)0x6fd2c75, (q31_t)0xe2eb1a37,\n    (q31_t)0x6f777c1, (q31_t)0xe2f64c77, (q31_t)0x6f1c540, (q31_t)0xe3017fd5,\n    (q31_t)0x6ec14f2, (q31_t)0xe30cb451, (q31_t)0x6e666d7, (q31_t)0xe317e9eb,\n    (q31_t)0x6e0baf0, (q31_t)0xe32320a2, (q31_t)0x6db113d, (q31_t)0xe32e5876,\n    (q31_t)0x6d569be, (q31_t)0xe3399167, (q31_t)0x6cfc472, (q31_t)0xe344cb73,\n    (q31_t)0x6ca215c, (q31_t)0xe350069b, (q31_t)0x6c4807a, (q31_t)0xe35b42df,\n    (q31_t)0x6bee1cd, (q31_t)0xe366803c, (q31_t)0x6b94554, (q31_t)0xe371beb5,\n    (q31_t)0x6b3ab12, (q31_t)0xe37cfe47, (q31_t)0x6ae1304, (q31_t)0xe3883ef2,\n    (q31_t)0x6a87d2d, (q31_t)0xe39380b6, (q31_t)0x6a2e98b, (q31_t)0xe39ec393,\n    (q31_t)0x69d5820, (q31_t)0xe3aa0788, (q31_t)0x697c8eb, (q31_t)0xe3b54c95,\n    (q31_t)0x6923bec, (q31_t)0xe3c092b9, (q31_t)0x68cb124, (q31_t)0xe3cbd9f4,\n    (q31_t)0x6872894, (q31_t)0xe3d72245, (q31_t)0x681a23a, (q31_t)0xe3e26bac,\n    (q31_t)0x67c1e18, (q31_t)0xe3edb628, (q31_t)0x6769c2e, (q31_t)0xe3f901ba,\n    (q31_t)0x6711c7b, (q31_t)0xe4044e60, (q31_t)0x66b9f01, (q31_t)0xe40f9c1a,\n    (q31_t)0x66623be, (q31_t)0xe41aeae8, (q31_t)0x660aab5, (q31_t)0xe4263ac9,\n    (q31_t)0x65b33e4, (q31_t)0xe4318bbe, (q31_t)0x655bf4c, (q31_t)0xe43cddc4,\n    (q31_t)0x6504ced, (q31_t)0xe44830dd, (q31_t)0x64adcc7, (q31_t)0xe4538507,\n    (q31_t)0x6456edb, (q31_t)0xe45eda43, (q31_t)0x6400329, (q31_t)0xe46a308f,\n    (q31_t)0x63a99b1, (q31_t)0xe47587eb, (q31_t)0x6353273, (q31_t)0xe480e057,\n    (q31_t)0x62fcd6f, (q31_t)0xe48c39d3, (q31_t)0x62a6aa6, (q31_t)0xe497945d,\n    (q31_t)0x6250a18, (q31_t)0xe4a2eff6, (q31_t)0x61fabc4, (q31_t)0xe4ae4c9d,\n    (q31_t)0x61a4fac, (q31_t)0xe4b9aa52, (q31_t)0x614f5cf, (q31_t)0xe4c50914,\n    (q31_t)0x60f9e2e, (q31_t)0xe4d068e2, (q31_t)0x60a48c9, (q31_t)0xe4dbc9bd,\n    (q31_t)0x604f5a0, (q31_t)0xe4e72ba4, (q31_t)0x5ffa4b3, (q31_t)0xe4f28e96,\n    (q31_t)0x5fa5603, (q31_t)0xe4fdf294, (q31_t)0x5f5098f, (q31_t)0xe509579b,\n    (q31_t)0x5efbf58, (q31_t)0xe514bdad, (q31_t)0x5ea775e, (q31_t)0xe52024c9,\n    (q31_t)0x5e531a1, (q31_t)0xe52b8cee, (q31_t)0x5dfee22, (q31_t)0xe536f61b,\n    (q31_t)0x5daace1, (q31_t)0xe5426051, (q31_t)0x5d56ddd, (q31_t)0xe54dcb8f,\n    (q31_t)0x5d03118, (q31_t)0xe55937d5, (q31_t)0x5caf690, (q31_t)0xe564a521,\n    (q31_t)0x5c5be47, (q31_t)0xe5701374, (q31_t)0x5c0883d, (q31_t)0xe57b82cd,\n    (q31_t)0x5bb5472, (q31_t)0xe586f32c, (q31_t)0x5b622e6, (q31_t)0xe5926490,\n    (q31_t)0x5b0f399, (q31_t)0xe59dd6f9, (q31_t)0x5abc68c, (q31_t)0xe5a94a67,\n    (q31_t)0x5a69bbe, (q31_t)0xe5b4bed8, (q31_t)0x5a17330, (q31_t)0xe5c0344d,\n    (q31_t)0x59c4ce3, (q31_t)0xe5cbaac5, (q31_t)0x59728d5, (q31_t)0xe5d72240,\n    (q31_t)0x5920708, (q31_t)0xe5e29abc, (q31_t)0x58ce77c, (q31_t)0xe5ee143b,\n    (q31_t)0x587ca31, (q31_t)0xe5f98ebb, (q31_t)0x582af26, (q31_t)0xe6050a3b,\n    (q31_t)0x57d965d, (q31_t)0xe61086bc, (q31_t)0x5787fd6, (q31_t)0xe61c043d,\n    (q31_t)0x5736b90, (q31_t)0xe62782be, (q31_t)0x56e598c, (q31_t)0xe633023e,\n    (q31_t)0x56949ca, (q31_t)0xe63e82bc, (q31_t)0x5643c4a, (q31_t)0xe64a0438,\n    (q31_t)0x55f310d, (q31_t)0xe65586b3, (q31_t)0x55a2812, (q31_t)0xe6610a2a,\n    (q31_t)0x555215a, (q31_t)0xe66c8e9f, (q31_t)0x5501ce5, (q31_t)0xe6781410,\n    (q31_t)0x54b1ab4, (q31_t)0xe6839a7c, (q31_t)0x5461ac6, (q31_t)0xe68f21e5,\n    (q31_t)0x5411d1b, (q31_t)0xe69aaa48, (q31_t)0x53c21b4, (q31_t)0xe6a633a6,\n    (q31_t)0x5372891, (q31_t)0xe6b1bdff, (q31_t)0x53231b3, (q31_t)0xe6bd4951,\n    (q31_t)0x52d3d18, (q31_t)0xe6c8d59c, (q31_t)0x5284ac3, (q31_t)0xe6d462e1,\n    (q31_t)0x5235ab2, (q31_t)0xe6dff11d, (q31_t)0x51e6ce6, (q31_t)0xe6eb8052,\n    (q31_t)0x519815f, (q31_t)0xe6f7107e, (q31_t)0x514981d, (q31_t)0xe702a1a1,\n    (q31_t)0x50fb121, (q31_t)0xe70e33bb, (q31_t)0x50acc6b, (q31_t)0xe719c6cb,\n    (q31_t)0x505e9fb, (q31_t)0xe7255ad1, (q31_t)0x50109d0, (q31_t)0xe730efcc,\n    (q31_t)0x4fc2bec, (q31_t)0xe73c85bc, (q31_t)0x4f7504e, (q31_t)0xe7481ca1,\n    (q31_t)0x4f276f7, (q31_t)0xe753b479, (q31_t)0x4ed9fe7, (q31_t)0xe75f4d45,\n    (q31_t)0x4e8cb1e, (q31_t)0xe76ae704, (q31_t)0x4e3f89c, (q31_t)0xe77681b6,\n    (q31_t)0x4df2862, (q31_t)0xe7821d59, (q31_t)0x4da5a6f, (q31_t)0xe78db9ef,\n    (q31_t)0x4d58ec3, (q31_t)0xe7995776, (q31_t)0x4d0c560, (q31_t)0xe7a4f5ed,\n    (q31_t)0x4cbfe45, (q31_t)0xe7b09555, (q31_t)0x4c73972, (q31_t)0xe7bc35ad,\n    (q31_t)0x4c276e8, (q31_t)0xe7c7d6f4, (q31_t)0x4bdb6a6, (q31_t)0xe7d3792b,\n    (q31_t)0x4b8f8ad, (q31_t)0xe7df1c50, (q31_t)0x4b43cfd, (q31_t)0xe7eac063,\n    (q31_t)0x4af8397, (q31_t)0xe7f66564, (q31_t)0x4aacc7a, (q31_t)0xe8020b52,\n    (q31_t)0x4a617a6, (q31_t)0xe80db22d, (q31_t)0x4a1651c, (q31_t)0xe81959f4,\n    (q31_t)0x49cb4dd, (q31_t)0xe82502a7, (q31_t)0x49806e7, (q31_t)0xe830ac45,\n    (q31_t)0x4935b3c, (q31_t)0xe83c56cf, (q31_t)0x48eb1db, (q31_t)0xe8480243,\n    (q31_t)0x48a0ac4, (q31_t)0xe853aea1, (q31_t)0x48565f9, (q31_t)0xe85f5be9,\n    (q31_t)0x480c379, (q31_t)0xe86b0a1a, (q31_t)0x47c2344, (q31_t)0xe876b934,\n    (q31_t)0x477855a, (q31_t)0xe8826936, (q31_t)0x472e9bc, (q31_t)0xe88e1a20,\n    (q31_t)0x46e5069, (q31_t)0xe899cbf1, (q31_t)0x469b963, (q31_t)0xe8a57ea9,\n    (q31_t)0x46524a9, (q31_t)0xe8b13248, (q31_t)0x460923b, (q31_t)0xe8bce6cd,\n    (q31_t)0x45c0219, (q31_t)0xe8c89c37, (q31_t)0x4577444, (q31_t)0xe8d45286,\n    (q31_t)0x452e8bc, (q31_t)0xe8e009ba, (q31_t)0x44e5f80, (q31_t)0xe8ebc1d3,\n    (q31_t)0x449d892, (q31_t)0xe8f77acf, (q31_t)0x44553f2, (q31_t)0xe90334af,\n    (q31_t)0x440d19e, (q31_t)0xe90eef71, (q31_t)0x43c5199, (q31_t)0xe91aab16,\n    (q31_t)0x437d3e1, (q31_t)0xe926679c, (q31_t)0x4335877, (q31_t)0xe9322505,\n    (q31_t)0x42edf5c, (q31_t)0xe93de34e, (q31_t)0x42a688f, (q31_t)0xe949a278,\n    (q31_t)0x425f410, (q31_t)0xe9556282, (q31_t)0x42181e0, (q31_t)0xe961236c,\n    (q31_t)0x41d11ff, (q31_t)0xe96ce535, (q31_t)0x418a46d, (q31_t)0xe978a7dd,\n    (q31_t)0x414392b, (q31_t)0xe9846b63, (q31_t)0x40fd037, (q31_t)0xe9902fc7,\n    (q31_t)0x40b6994, (q31_t)0xe99bf509, (q31_t)0x4070540, (q31_t)0xe9a7bb28,\n    (q31_t)0x402a33c, (q31_t)0xe9b38223, (q31_t)0x3fe4388, (q31_t)0xe9bf49fa,\n    (q31_t)0x3f9e624, (q31_t)0xe9cb12ad, (q31_t)0x3f58b10, (q31_t)0xe9d6dc3b,\n    (q31_t)0x3f1324e, (q31_t)0xe9e2a6a3, (q31_t)0x3ecdbdc, (q31_t)0xe9ee71e6,\n    (q31_t)0x3e887bb, (q31_t)0xe9fa3e03, (q31_t)0x3e435ea, (q31_t)0xea060af9,\n    (q31_t)0x3dfe66c, (q31_t)0xea11d8c8, (q31_t)0x3db993e, (q31_t)0xea1da770,\n    (q31_t)0x3d74e62, (q31_t)0xea2976ef, (q31_t)0x3d305d8, (q31_t)0xea354746,\n    (q31_t)0x3cebfa0, (q31_t)0xea411874, (q31_t)0x3ca7bba, (q31_t)0xea4cea79,\n    (q31_t)0x3c63a26, (q31_t)0xea58bd54, (q31_t)0x3c1fae5, (q31_t)0xea649105,\n    (q31_t)0x3bdbdf6, (q31_t)0xea70658a, (q31_t)0x3b9835a, (q31_t)0xea7c3ae5,\n    (q31_t)0x3b54b11, (q31_t)0xea881114, (q31_t)0x3b1151b, (q31_t)0xea93e817,\n    (q31_t)0x3ace178, (q31_t)0xea9fbfed, (q31_t)0x3a8b028, (q31_t)0xeaab9896,\n    (q31_t)0x3a4812c, (q31_t)0xeab77212, (q31_t)0x3a05484, (q31_t)0xeac34c60,\n    (q31_t)0x39c2a2f, (q31_t)0xeacf277f, (q31_t)0x398022f, (q31_t)0xeadb0370,\n    (q31_t)0x393dc82, (q31_t)0xeae6e031, (q31_t)0x38fb92a, (q31_t)0xeaf2bdc3,\n    (q31_t)0x38b9827, (q31_t)0xeafe9c24, (q31_t)0x3877978, (q31_t)0xeb0a7b54,\n    (q31_t)0x3835d1e, (q31_t)0xeb165b54, (q31_t)0x37f4319, (q31_t)0xeb223c22,\n    (q31_t)0x37b2b6a, (q31_t)0xeb2e1dbe, (q31_t)0x377160f, (q31_t)0xeb3a0027,\n    (q31_t)0x373030a, (q31_t)0xeb45e35d, (q31_t)0x36ef25b, (q31_t)0xeb51c760,\n    (q31_t)0x36ae401, (q31_t)0xeb5dac2f, (q31_t)0x366d7fd, (q31_t)0xeb6991ca,\n    (q31_t)0x362ce50, (q31_t)0xeb75782f, (q31_t)0x35ec6f8, (q31_t)0xeb815f60,\n    (q31_t)0x35ac1f7, (q31_t)0xeb8d475b, (q31_t)0x356bf4d, (q31_t)0xeb99301f,\n    (q31_t)0x352bef9, (q31_t)0xeba519ad, (q31_t)0x34ec0fc, (q31_t)0xebb10404,\n    (q31_t)0x34ac556, (q31_t)0xebbcef23, (q31_t)0x346cc07, (q31_t)0xebc8db0b,\n    (q31_t)0x342d510, (q31_t)0xebd4c7ba, (q31_t)0x33ee070, (q31_t)0xebe0b52f,\n    (q31_t)0x33aee27, (q31_t)0xebeca36c, (q31_t)0x336fe37, (q31_t)0xebf8926f,\n    (q31_t)0x333109e, (q31_t)0xec048237, (q31_t)0x32f255e, (q31_t)0xec1072c4,\n    (q31_t)0x32b3c75, (q31_t)0xec1c6417, (q31_t)0x32755e5, (q31_t)0xec28562d,\n    (q31_t)0x32371ae, (q31_t)0xec344908, (q31_t)0x31f8fcf, (q31_t)0xec403ca5,\n    (q31_t)0x31bb049, (q31_t)0xec4c3106, (q31_t)0x317d31c, (q31_t)0xec582629,\n    (q31_t)0x313f848, (q31_t)0xec641c0e, (q31_t)0x3101fce, (q31_t)0xec7012b5,\n    (q31_t)0x30c49ad, (q31_t)0xec7c0a1d, (q31_t)0x30875e5, (q31_t)0xec880245,\n    (q31_t)0x304a477, (q31_t)0xec93fb2e, (q31_t)0x300d563, (q31_t)0xec9ff4d6,\n    (q31_t)0x2fd08a9, (q31_t)0xecabef3d, (q31_t)0x2f93e4a, (q31_t)0xecb7ea63,\n    (q31_t)0x2f57644, (q31_t)0xecc3e648, (q31_t)0x2f1b099, (q31_t)0xeccfe2ea,\n    (q31_t)0x2eded49, (q31_t)0xecdbe04a, (q31_t)0x2ea2c53, (q31_t)0xece7de66,\n    (q31_t)0x2e66db8, (q31_t)0xecf3dd3f, (q31_t)0x2e2b178, (q31_t)0xecffdcd4,\n    (q31_t)0x2def794, (q31_t)0xed0bdd25, (q31_t)0x2db400a, (q31_t)0xed17de31,\n    (q31_t)0x2d78add, (q31_t)0xed23dff7, (q31_t)0x2d3d80a, (q31_t)0xed2fe277,\n    (q31_t)0x2d02794, (q31_t)0xed3be5b1, (q31_t)0x2cc7979, (q31_t)0xed47e9a5,\n    (q31_t)0x2c8cdbb, (q31_t)0xed53ee51, (q31_t)0x2c52459, (q31_t)0xed5ff3b5,\n    (q31_t)0x2c17d52, (q31_t)0xed6bf9d1, (q31_t)0x2bdd8a9, (q31_t)0xed7800a5,\n    (q31_t)0x2ba365c, (q31_t)0xed84082f, (q31_t)0x2b6966c, (q31_t)0xed901070,\n    (q31_t)0x2b2f8d8, (q31_t)0xed9c1967, (q31_t)0x2af5da2, (q31_t)0xeda82313,\n    (q31_t)0x2abc4c9, (q31_t)0xedb42d74, (q31_t)0x2a82e4d, (q31_t)0xedc0388a,\n    (q31_t)0x2a49a2e, (q31_t)0xedcc4454, (q31_t)0x2a1086d, (q31_t)0xedd850d2,\n    (q31_t)0x29d790a, (q31_t)0xede45e03, (q31_t)0x299ec05, (q31_t)0xedf06be6,\n    (q31_t)0x296615d, (q31_t)0xedfc7a7c, (q31_t)0x292d914, (q31_t)0xee0889c4,\n    (q31_t)0x28f5329, (q31_t)0xee1499bd, (q31_t)0x28bcf9c, (q31_t)0xee20aa67,\n    (q31_t)0x2884e6e, (q31_t)0xee2cbbc1, (q31_t)0x284cf9f, (q31_t)0xee38cdcb,\n    (q31_t)0x281532e, (q31_t)0xee44e084, (q31_t)0x27dd91c, (q31_t)0xee50f3ed,\n    (q31_t)0x27a616a, (q31_t)0xee5d0804, (q31_t)0x276ec16, (q31_t)0xee691cc9,\n    (q31_t)0x2737922, (q31_t)0xee75323c, (q31_t)0x270088e, (q31_t)0xee81485c,\n    (q31_t)0x26c9a58, (q31_t)0xee8d5f29, (q31_t)0x2692e83, (q31_t)0xee9976a1,\n    (q31_t)0x265c50e, (q31_t)0xeea58ec6, (q31_t)0x2625df8, (q31_t)0xeeb1a796,\n    (q31_t)0x25ef943, (q31_t)0xeebdc110, (q31_t)0x25b96ee, (q31_t)0xeec9db35,\n    (q31_t)0x25836f9, (q31_t)0xeed5f604, (q31_t)0x254d965, (q31_t)0xeee2117c,\n    (q31_t)0x2517e31, (q31_t)0xeeee2d9d, (q31_t)0x24e255e, (q31_t)0xeefa4a67,\n    (q31_t)0x24aceed, (q31_t)0xef0667d9, (q31_t)0x2477adc, (q31_t)0xef1285f2,\n    (q31_t)0x244292c, (q31_t)0xef1ea4b2, (q31_t)0x240d9de, (q31_t)0xef2ac419,\n    (q31_t)0x23d8cf1, (q31_t)0xef36e426, (q31_t)0x23a4265, (q31_t)0xef4304d8,\n    (q31_t)0x236fa3b, (q31_t)0xef4f2630, (q31_t)0x233b473, (q31_t)0xef5b482d,\n    (q31_t)0x230710d, (q31_t)0xef676ace, (q31_t)0x22d3009, (q31_t)0xef738e12,\n    (q31_t)0x229f167, (q31_t)0xef7fb1fa, (q31_t)0x226b528, (q31_t)0xef8bd685,\n    (q31_t)0x2237b4b, (q31_t)0xef97fbb2, (q31_t)0x22043d0, (q31_t)0xefa42181,\n    (q31_t)0x21d0eb8, (q31_t)0xefb047f2, (q31_t)0x219dc03, (q31_t)0xefbc6f03,\n    (q31_t)0x216abb1, (q31_t)0xefc896b5, (q31_t)0x2137dc2, (q31_t)0xefd4bf08,\n    (q31_t)0x2105236, (q31_t)0xefe0e7f9, (q31_t)0x20d290d, (q31_t)0xefed118a,\n    (q31_t)0x20a0248, (q31_t)0xeff93bba, (q31_t)0x206dde6, (q31_t)0xf0056687,\n    (q31_t)0x203bbe8, (q31_t)0xf01191f3, (q31_t)0x2009c4e, (q31_t)0xf01dbdfb,\n    (q31_t)0x1fd7f17, (q31_t)0xf029eaa1, (q31_t)0x1fa6445, (q31_t)0xf03617e2,\n    (q31_t)0x1f74bd6, (q31_t)0xf04245c0, (q31_t)0x1f435cc, (q31_t)0xf04e7438,\n    (q31_t)0x1f12227, (q31_t)0xf05aa34c, (q31_t)0x1ee10e5, (q31_t)0xf066d2fa,\n    (q31_t)0x1eb0209, (q31_t)0xf0730342, (q31_t)0x1e7f591, (q31_t)0xf07f3424,\n    (q31_t)0x1e4eb7e, (q31_t)0xf08b659f, (q31_t)0x1e1e3d0, (q31_t)0xf09797b2,\n    (q31_t)0x1dede87, (q31_t)0xf0a3ca5d, (q31_t)0x1dbdba3, (q31_t)0xf0affda0,\n    (q31_t)0x1d8db25, (q31_t)0xf0bc317a, (q31_t)0x1d5dd0c, (q31_t)0xf0c865ea,\n    (q31_t)0x1d2e158, (q31_t)0xf0d49af1, (q31_t)0x1cfe80a, (q31_t)0xf0e0d08d,\n    (q31_t)0x1ccf122, (q31_t)0xf0ed06bf, (q31_t)0x1c9fca0, (q31_t)0xf0f93d86,\n    (q31_t)0x1c70a84, (q31_t)0xf10574e0, (q31_t)0x1c41ace, (q31_t)0xf111accf,\n    (q31_t)0x1c12d7e, (q31_t)0xf11de551, (q31_t)0x1be4294, (q31_t)0xf12a1e66,\n    (q31_t)0x1bb5a11, (q31_t)0xf136580d, (q31_t)0x1b873f5, (q31_t)0xf1429247,\n    (q31_t)0x1b5903f, (q31_t)0xf14ecd11, (q31_t)0x1b2aef0, (q31_t)0xf15b086d,\n    (q31_t)0x1afd007, (q31_t)0xf1674459, (q31_t)0x1acf386, (q31_t)0xf17380d6,\n    (q31_t)0x1aa196c, (q31_t)0xf17fbde2, (q31_t)0x1a741b9, (q31_t)0xf18bfb7d,\n    (q31_t)0x1a46c6e, (q31_t)0xf19839a6, (q31_t)0x1a1998a, (q31_t)0xf1a4785e,\n    (q31_t)0x19ec90d, (q31_t)0xf1b0b7a4, (q31_t)0x19bfaf9, (q31_t)0xf1bcf777,\n    (q31_t)0x1992f4c, (q31_t)0xf1c937d6, (q31_t)0x1966606, (q31_t)0xf1d578c2,\n    (q31_t)0x1939f29, (q31_t)0xf1e1ba3a, (q31_t)0x190dab4, (q31_t)0xf1edfc3d,\n    (q31_t)0x18e18a7, (q31_t)0xf1fa3ecb, (q31_t)0x18b5903, (q31_t)0xf20681e3,\n    (q31_t)0x1889bc6, (q31_t)0xf212c585, (q31_t)0x185e0f3, (q31_t)0xf21f09b1,\n    (q31_t)0x1832888, (q31_t)0xf22b4e66, (q31_t)0x1807285, (q31_t)0xf23793a3,\n    (q31_t)0x17dbeec, (q31_t)0xf243d968, (q31_t)0x17b0dbb, (q31_t)0xf2501fb5,\n    (q31_t)0x1785ef4, (q31_t)0xf25c6688, (q31_t)0x175b296, (q31_t)0xf268ade3,\n    (q31_t)0x17308a1, (q31_t)0xf274f5c3, (q31_t)0x1706115, (q31_t)0xf2813e2a,\n    (q31_t)0x16dbbf3, (q31_t)0xf28d8715, (q31_t)0x16b193a, (q31_t)0xf299d085,\n    (q31_t)0x16878eb, (q31_t)0xf2a61a7a, (q31_t)0x165db05, (q31_t)0xf2b264f2,\n    (q31_t)0x1633f8a, (q31_t)0xf2beafed, (q31_t)0x160a678, (q31_t)0xf2cafb6b,\n    (q31_t)0x15e0fd1, (q31_t)0xf2d7476c, (q31_t)0x15b7b94, (q31_t)0xf2e393ef,\n    (q31_t)0x158e9c1, (q31_t)0xf2efe0f2, (q31_t)0x1565a58, (q31_t)0xf2fc2e77,\n    (q31_t)0x153cd5a, (q31_t)0xf3087c7d, (q31_t)0x15142c6, (q31_t)0xf314cb02,\n    (q31_t)0x14eba9d, (q31_t)0xf3211a07, (q31_t)0x14c34df, (q31_t)0xf32d698a,\n    (q31_t)0x149b18b, (q31_t)0xf339b98d, (q31_t)0x14730a3, (q31_t)0xf3460a0d,\n    (q31_t)0x144b225, (q31_t)0xf3525b0b, (q31_t)0x1423613, (q31_t)0xf35eac86,\n    (q31_t)0x13fbc6c, (q31_t)0xf36afe7e, (q31_t)0x13d4530, (q31_t)0xf37750f2,\n    (q31_t)0x13ad060, (q31_t)0xf383a3e2, (q31_t)0x1385dfb, (q31_t)0xf38ff74d,\n    (q31_t)0x135ee02, (q31_t)0xf39c4b32, (q31_t)0x1338075, (q31_t)0xf3a89f92,\n    (q31_t)0x1311553, (q31_t)0xf3b4f46c, (q31_t)0x12eac9d, (q31_t)0xf3c149bf,\n    (q31_t)0x12c4653, (q31_t)0xf3cd9f8b, (q31_t)0x129e276, (q31_t)0xf3d9f5cf,\n    (q31_t)0x1278104, (q31_t)0xf3e64c8c, (q31_t)0x12521ff, (q31_t)0xf3f2a3bf,\n    (q31_t)0x122c566, (q31_t)0xf3fefb6a, (q31_t)0x1206b39, (q31_t)0xf40b538b,\n    (q31_t)0x11e1379, (q31_t)0xf417ac22, (q31_t)0x11bbe26, (q31_t)0xf424052f,\n    (q31_t)0x1196b3f, (q31_t)0xf4305eb0, (q31_t)0x1171ac6, (q31_t)0xf43cb8a7,\n    (q31_t)0x114ccb9, (q31_t)0xf4491311, (q31_t)0x1128119, (q31_t)0xf4556def,\n    (q31_t)0x11037e6, (q31_t)0xf461c940, (q31_t)0x10df120, (q31_t)0xf46e2504,\n    (q31_t)0x10bacc8, (q31_t)0xf47a8139, (q31_t)0x1096add, (q31_t)0xf486dde1,\n    (q31_t)0x1072b5f, (q31_t)0xf4933afa, (q31_t)0x104ee4f, (q31_t)0xf49f9884,\n    (q31_t)0x102b3ac, (q31_t)0xf4abf67e, (q31_t)0x1007b77, (q31_t)0xf4b854e7,\n    (q31_t)0xfe45b0, (q31_t)0xf4c4b3c0, (q31_t)0xfc1257, (q31_t)0xf4d11308,\n    (q31_t)0xf9e16b, (q31_t)0xf4dd72be, (q31_t)0xf7b2ee, (q31_t)0xf4e9d2e3,\n    (q31_t)0xf586df, (q31_t)0xf4f63374, (q31_t)0xf35d3e, (q31_t)0xf5029473,\n    (q31_t)0xf1360b, (q31_t)0xf50ef5de, (q31_t)0xef1147, (q31_t)0xf51b57b5,\n    (q31_t)0xeceef1, (q31_t)0xf527b9f7, (q31_t)0xeacf09, (q31_t)0xf5341ca5,\n    (q31_t)0xe8b190, (q31_t)0xf5407fbd, (q31_t)0xe69686, (q31_t)0xf54ce33f,\n    (q31_t)0xe47deb, (q31_t)0xf559472b, (q31_t)0xe267be, (q31_t)0xf565ab80,\n    (q31_t)0xe05401, (q31_t)0xf572103d, (q31_t)0xde42b2, (q31_t)0xf57e7563,\n    (q31_t)0xdc33d2, (q31_t)0xf58adaf0, (q31_t)0xda2762, (q31_t)0xf59740e5,\n    (q31_t)0xd81d61, (q31_t)0xf5a3a740, (q31_t)0xd615cf, (q31_t)0xf5b00e02,\n    (q31_t)0xd410ad, (q31_t)0xf5bc7529, (q31_t)0xd20dfa, (q31_t)0xf5c8dcb6,\n    (q31_t)0xd00db6, (q31_t)0xf5d544a7, (q31_t)0xce0fe3, (q31_t)0xf5e1acfd,\n    (q31_t)0xcc147f, (q31_t)0xf5ee15b7, (q31_t)0xca1b8a, (q31_t)0xf5fa7ed4,\n    (q31_t)0xc82506, (q31_t)0xf606e854, (q31_t)0xc630f2, (q31_t)0xf6135237,\n    (q31_t)0xc43f4d, (q31_t)0xf61fbc7b, (q31_t)0xc25019, (q31_t)0xf62c2721,\n    (q31_t)0xc06355, (q31_t)0xf6389228, (q31_t)0xbe7901, (q31_t)0xf644fd8f,\n    (q31_t)0xbc911d, (q31_t)0xf6516956, (q31_t)0xbaabaa, (q31_t)0xf65dd57d,\n    (q31_t)0xb8c8a7, (q31_t)0xf66a4203, (q31_t)0xb6e815, (q31_t)0xf676aee8,\n    (q31_t)0xb509f3, (q31_t)0xf6831c2b, (q31_t)0xb32e42, (q31_t)0xf68f89cb,\n    (q31_t)0xb15502, (q31_t)0xf69bf7c9, (q31_t)0xaf7e33, (q31_t)0xf6a86623,\n    (q31_t)0xada9d4, (q31_t)0xf6b4d4d9, (q31_t)0xabd7e6, (q31_t)0xf6c143ec,\n    (q31_t)0xaa086a, (q31_t)0xf6cdb359, (q31_t)0xa83b5e, (q31_t)0xf6da2321,\n    (q31_t)0xa670c4, (q31_t)0xf6e69344, (q31_t)0xa4a89b, (q31_t)0xf6f303c0,\n    (q31_t)0xa2e2e3, (q31_t)0xf6ff7496, (q31_t)0xa11f9d, (q31_t)0xf70be5c4,\n    (q31_t)0x9f5ec8, (q31_t)0xf718574b, (q31_t)0x9da065, (q31_t)0xf724c92a,\n    (q31_t)0x9be473, (q31_t)0xf7313b60, (q31_t)0x9a2af3, (q31_t)0xf73daded,\n    (q31_t)0x9873e4, (q31_t)0xf74a20d0, (q31_t)0x96bf48, (q31_t)0xf756940a,\n    (q31_t)0x950d1d, (q31_t)0xf7630799, (q31_t)0x935d64, (q31_t)0xf76f7b7d,\n    (q31_t)0x91b01d, (q31_t)0xf77befb5, (q31_t)0x900548, (q31_t)0xf7886442,\n    (q31_t)0x8e5ce5, (q31_t)0xf794d922, (q31_t)0x8cb6f5, (q31_t)0xf7a14e55,\n    (q31_t)0x8b1376, (q31_t)0xf7adc3db, (q31_t)0x89726a, (q31_t)0xf7ba39b3,\n    (q31_t)0x87d3d0, (q31_t)0xf7c6afdc, (q31_t)0x8637a9, (q31_t)0xf7d32657,\n    (q31_t)0x849df4, (q31_t)0xf7df9d22, (q31_t)0x8306b2, (q31_t)0xf7ec143e,\n    (q31_t)0x8171e2, (q31_t)0xf7f88ba9, (q31_t)0x7fdf85, (q31_t)0xf8050364,\n    (q31_t)0x7e4f9b, (q31_t)0xf8117b6d, (q31_t)0x7cc223, (q31_t)0xf81df3c5,\n    (q31_t)0x7b371e, (q31_t)0xf82a6c6a, (q31_t)0x79ae8c, (q31_t)0xf836e55d,\n    (q31_t)0x78286e, (q31_t)0xf8435e9d, (q31_t)0x76a4c2, (q31_t)0xf84fd829,\n    (q31_t)0x752389, (q31_t)0xf85c5201, (q31_t)0x73a4c3, (q31_t)0xf868cc24,\n    (q31_t)0x722871, (q31_t)0xf8754692, (q31_t)0x70ae92, (q31_t)0xf881c14b,\n    (q31_t)0x6f3726, (q31_t)0xf88e3c4d, (q31_t)0x6dc22e, (q31_t)0xf89ab799,\n    (q31_t)0x6c4fa8, (q31_t)0xf8a7332e, (q31_t)0x6adf97, (q31_t)0xf8b3af0c,\n    (q31_t)0x6971f9, (q31_t)0xf8c02b31, (q31_t)0x6806ce, (q31_t)0xf8cca79e,\n    (q31_t)0x669e18, (q31_t)0xf8d92452, (q31_t)0x6537d4, (q31_t)0xf8e5a14d,\n    (q31_t)0x63d405, (q31_t)0xf8f21e8e, (q31_t)0x6272aa, (q31_t)0xf8fe9c15,\n    (q31_t)0x6113c2, (q31_t)0xf90b19e0, (q31_t)0x5fb74e, (q31_t)0xf91797f0,\n    (q31_t)0x5e5d4e, (q31_t)0xf9241645, (q31_t)0x5d05c3, (q31_t)0xf93094dd,\n    (q31_t)0x5bb0ab, (q31_t)0xf93d13b8, (q31_t)0x5a5e07, (q31_t)0xf94992d7,\n    (q31_t)0x590dd8, (q31_t)0xf9561237, (q31_t)0x57c01d, (q31_t)0xf96291d9,\n    (q31_t)0x5674d6, (q31_t)0xf96f11bc, (q31_t)0x552c03, (q31_t)0xf97b91e1,\n    (q31_t)0x53e5a5, (q31_t)0xf9881245, (q31_t)0x52a1bb, (q31_t)0xf99492ea,\n    (q31_t)0x516045, (q31_t)0xf9a113cd, (q31_t)0x502145, (q31_t)0xf9ad94f0,\n    (q31_t)0x4ee4b8, (q31_t)0xf9ba1651, (q31_t)0x4daaa1, (q31_t)0xf9c697f0,\n    (q31_t)0x4c72fe, (q31_t)0xf9d319cc, (q31_t)0x4b3dcf, (q31_t)0xf9df9be6,\n    (q31_t)0x4a0b16, (q31_t)0xf9ec1e3b, (q31_t)0x48dad1, (q31_t)0xf9f8a0cd,\n    (q31_t)0x47ad01, (q31_t)0xfa05239a, (q31_t)0x4681a6, (q31_t)0xfa11a6a3,\n    (q31_t)0x4558c0, (q31_t)0xfa1e29e5, (q31_t)0x44324f, (q31_t)0xfa2aad62,\n    (q31_t)0x430e53, (q31_t)0xfa373119, (q31_t)0x41eccc, (q31_t)0xfa43b508,\n    (q31_t)0x40cdba, (q31_t)0xfa503930, (q31_t)0x3fb11d, (q31_t)0xfa5cbd91,\n    (q31_t)0x3e96f6, (q31_t)0xfa694229, (q31_t)0x3d7f44, (q31_t)0xfa75c6f8,\n    (q31_t)0x3c6a07, (q31_t)0xfa824bfd, (q31_t)0x3b573f, (q31_t)0xfa8ed139,\n    (q31_t)0x3a46ed, (q31_t)0xfa9b56ab, (q31_t)0x393910, (q31_t)0xfaa7dc52,\n    (q31_t)0x382da8, (q31_t)0xfab4622d, (q31_t)0x3724b6, (q31_t)0xfac0e83d,\n    (q31_t)0x361e3a, (q31_t)0xfacd6e81, (q31_t)0x351a33, (q31_t)0xfad9f4f8,\n    (q31_t)0x3418a2, (q31_t)0xfae67ba2, (q31_t)0x331986, (q31_t)0xfaf3027e,\n    (q31_t)0x321ce0, (q31_t)0xfaff898c, (q31_t)0x3122b0, (q31_t)0xfb0c10cb,\n    (q31_t)0x302af5, (q31_t)0xfb18983b, (q31_t)0x2f35b1, (q31_t)0xfb251fdc,\n    (q31_t)0x2e42e2, (q31_t)0xfb31a7ac, (q31_t)0x2d5289, (q31_t)0xfb3e2fac,\n    (q31_t)0x2c64a6, (q31_t)0xfb4ab7db, (q31_t)0x2b7939, (q31_t)0xfb574039,\n    (q31_t)0x2a9042, (q31_t)0xfb63c8c4, (q31_t)0x29a9c1, (q31_t)0xfb70517d,\n    (q31_t)0x28c5b6, (q31_t)0xfb7cda63, (q31_t)0x27e421, (q31_t)0xfb896375,\n    (q31_t)0x270502, (q31_t)0xfb95ecb4, (q31_t)0x262859, (q31_t)0xfba2761e,\n    (q31_t)0x254e27, (q31_t)0xfbaeffb3, (q31_t)0x24766a, (q31_t)0xfbbb8973,\n    (q31_t)0x23a124, (q31_t)0xfbc8135c, (q31_t)0x22ce54, (q31_t)0xfbd49d70,\n    (q31_t)0x21fdfb, (q31_t)0xfbe127ac, (q31_t)0x213018, (q31_t)0xfbedb212,\n    (q31_t)0x2064ab, (q31_t)0xfbfa3c9f, (q31_t)0x1f9bb5, (q31_t)0xfc06c754,\n    (q31_t)0x1ed535, (q31_t)0xfc135231, (q31_t)0x1e112b, (q31_t)0xfc1fdd34,\n    (q31_t)0x1d4f99, (q31_t)0xfc2c685d, (q31_t)0x1c907c, (q31_t)0xfc38f3ac,\n    (q31_t)0x1bd3d6, (q31_t)0xfc457f21, (q31_t)0x1b19a7, (q31_t)0xfc520aba,\n    (q31_t)0x1a61ee, (q31_t)0xfc5e9678, (q31_t)0x19acac, (q31_t)0xfc6b2259,\n    (q31_t)0x18f9e1, (q31_t)0xfc77ae5e, (q31_t)0x18498c, (q31_t)0xfc843a85,\n    (q31_t)0x179bae, (q31_t)0xfc90c6cf, (q31_t)0x16f047, (q31_t)0xfc9d533b,\n    (q31_t)0x164757, (q31_t)0xfca9dfc8, (q31_t)0x15a0dd, (q31_t)0xfcb66c77,\n    (q31_t)0x14fcda, (q31_t)0xfcc2f945, (q31_t)0x145b4e, (q31_t)0xfccf8634,\n    (q31_t)0x13bc39, (q31_t)0xfcdc1342, (q31_t)0x131f9b, (q31_t)0xfce8a06f,\n    (q31_t)0x128574, (q31_t)0xfcf52dbb, (q31_t)0x11edc3, (q31_t)0xfd01bb24,\n    (q31_t)0x11588a, (q31_t)0xfd0e48ab, (q31_t)0x10c5c7, (q31_t)0xfd1ad650,\n    (q31_t)0x10357c, (q31_t)0xfd276410, (q31_t)0xfa7a8, (q31_t)0xfd33f1ed,\n    (q31_t)0xf1c4a, (q31_t)0xfd407fe6, (q31_t)0xe9364, (q31_t)0xfd4d0df9,\n    (q31_t)0xe0cf5, (q31_t)0xfd599c28, (q31_t)0xd88fd, (q31_t)0xfd662a70,\n    (q31_t)0xd077c, (q31_t)0xfd72b8d2, (q31_t)0xc8872, (q31_t)0xfd7f474d,\n    (q31_t)0xc0be0, (q31_t)0xfd8bd5e1, (q31_t)0xb91c4, (q31_t)0xfd98648d,\n    (q31_t)0xb1a20, (q31_t)0xfda4f351, (q31_t)0xaa4f3, (q31_t)0xfdb1822c,\n    (q31_t)0xa323d, (q31_t)0xfdbe111e, (q31_t)0x9c1ff, (q31_t)0xfdcaa027,\n    (q31_t)0x95438, (q31_t)0xfdd72f45, (q31_t)0x8e8e8, (q31_t)0xfde3be78,\n    (q31_t)0x8800f, (q31_t)0xfdf04dc0, (q31_t)0x819ae, (q31_t)0xfdfcdd1d,\n    (q31_t)0x7b5c4, (q31_t)0xfe096c8d, (q31_t)0x75452, (q31_t)0xfe15fc11,\n    (q31_t)0x6f556, (q31_t)0xfe228ba7, (q31_t)0x698d3, (q31_t)0xfe2f1b50,\n    (q31_t)0x63ec6, (q31_t)0xfe3bab0b, (q31_t)0x5e731, (q31_t)0xfe483ad8,\n    (q31_t)0x59214, (q31_t)0xfe54cab5, (q31_t)0x53f6e, (q31_t)0xfe615aa3,\n    (q31_t)0x4ef3f, (q31_t)0xfe6deaa1, (q31_t)0x4a188, (q31_t)0xfe7a7aae,\n    (q31_t)0x45648, (q31_t)0xfe870aca, (q31_t)0x40d80, (q31_t)0xfe939af5,\n    (q31_t)0x3c72f, (q31_t)0xfea02b2e, (q31_t)0x38356, (q31_t)0xfeacbb74,\n    (q31_t)0x341f4, (q31_t)0xfeb94bc8, (q31_t)0x3030a, (q31_t)0xfec5dc28,\n    (q31_t)0x2c697, (q31_t)0xfed26c94, (q31_t)0x28c9c, (q31_t)0xfedefd0c,\n    (q31_t)0x25519, (q31_t)0xfeeb8d8f, (q31_t)0x2200d, (q31_t)0xfef81e1d,\n    (q31_t)0x1ed78, (q31_t)0xff04aeb5, (q31_t)0x1bd5c, (q31_t)0xff113f56,\n    (q31_t)0x18fb6, (q31_t)0xff1dd001, (q31_t)0x16489, (q31_t)0xff2a60b4,\n    (q31_t)0x13bd3, (q31_t)0xff36f170, (q31_t)0x11594, (q31_t)0xff438234,\n    (q31_t)0xf1ce, (q31_t)0xff5012fe, (q31_t)0xd07e, (q31_t)0xff5ca3d0,\n    (q31_t)0xb1a7, (q31_t)0xff6934a8, (q31_t)0x9547, (q31_t)0xff75c585,\n    (q31_t)0x7b5f, (q31_t)0xff825668, (q31_t)0x63ee, (q31_t)0xff8ee750,\n    (q31_t)0x4ef5, (q31_t)0xff9b783c, (q31_t)0x3c74, (q31_t)0xffa8092c,\n    (q31_t)0x2c6a, (q31_t)0xffb49a1f, (q31_t)0x1ed8, (q31_t)0xffc12b16,\n    (q31_t)0x13bd, (q31_t)0xffcdbc0f, (q31_t)0xb1a, (q31_t)0xffda4d09,\n    (q31_t)0x4ef, (q31_t)0xffe6de05, (q31_t)0x13c, (q31_t)0xfff36f02,\n    (q31_t)0x0, (q31_t)0x0, (q31_t)0x13c, (q31_t)0xc90fe,\n    (q31_t)0x4ef, (q31_t)0x1921fb, (q31_t)0xb1a, (q31_t)0x25b2f7,\n    (q31_t)0x13bd, (q31_t)0x3243f1, (q31_t)0x1ed8, (q31_t)0x3ed4ea,\n    (q31_t)0x2c6a, (q31_t)0x4b65e1, (q31_t)0x3c74, (q31_t)0x57f6d4,\n    (q31_t)0x4ef5, (q31_t)0x6487c4, (q31_t)0x63ee, (q31_t)0x7118b0,\n    (q31_t)0x7b5f, (q31_t)0x7da998, (q31_t)0x9547, (q31_t)0x8a3a7b,\n    (q31_t)0xb1a7, (q31_t)0x96cb58, (q31_t)0xd07e, (q31_t)0xa35c30,\n    (q31_t)0xf1ce, (q31_t)0xafed02, (q31_t)0x11594, (q31_t)0xbc7dcc,\n    (q31_t)0x13bd3, (q31_t)0xc90e90, (q31_t)0x16489, (q31_t)0xd59f4c,\n    (q31_t)0x18fb6, (q31_t)0xe22fff, (q31_t)0x1bd5c, (q31_t)0xeec0aa,\n    (q31_t)0x1ed78, (q31_t)0xfb514b, (q31_t)0x2200d, (q31_t)0x107e1e3,\n    (q31_t)0x25519, (q31_t)0x1147271, (q31_t)0x28c9c, (q31_t)0x12102f4,\n    (q31_t)0x2c697, (q31_t)0x12d936c, (q31_t)0x3030a, (q31_t)0x13a23d8,\n    (q31_t)0x341f4, (q31_t)0x146b438, (q31_t)0x38356, (q31_t)0x153448c,\n    (q31_t)0x3c72f, (q31_t)0x15fd4d2, (q31_t)0x40d80, (q31_t)0x16c650b,\n    (q31_t)0x45648, (q31_t)0x178f536, (q31_t)0x4a188, (q31_t)0x1858552,\n    (q31_t)0x4ef3f, (q31_t)0x192155f, (q31_t)0x53f6e, (q31_t)0x19ea55d,\n    (q31_t)0x59214, (q31_t)0x1ab354b, (q31_t)0x5e731, (q31_t)0x1b7c528,\n    (q31_t)0x63ec6, (q31_t)0x1c454f5, (q31_t)0x698d3, (q31_t)0x1d0e4b0,\n    (q31_t)0x6f556, (q31_t)0x1dd7459, (q31_t)0x75452, (q31_t)0x1ea03ef,\n    (q31_t)0x7b5c4, (q31_t)0x1f69373, (q31_t)0x819ae, (q31_t)0x20322e3,\n    (q31_t)0x8800f, (q31_t)0x20fb240, (q31_t)0x8e8e8, (q31_t)0x21c4188,\n    (q31_t)0x95438, (q31_t)0x228d0bb, (q31_t)0x9c1ff, (q31_t)0x2355fd9,\n    (q31_t)0xa323d, (q31_t)0x241eee2, (q31_t)0xaa4f3, (q31_t)0x24e7dd4,\n    (q31_t)0xb1a20, (q31_t)0x25b0caf, (q31_t)0xb91c4, (q31_t)0x2679b73,\n    (q31_t)0xc0be0, (q31_t)0x2742a1f, (q31_t)0xc8872, (q31_t)0x280b8b3,\n    (q31_t)0xd077c, (q31_t)0x28d472e, (q31_t)0xd88fd, (q31_t)0x299d590,\n    (q31_t)0xe0cf5, (q31_t)0x2a663d8, (q31_t)0xe9364, (q31_t)0x2b2f207,\n    (q31_t)0xf1c4a, (q31_t)0x2bf801a, (q31_t)0xfa7a8, (q31_t)0x2cc0e13,\n    (q31_t)0x10357c, (q31_t)0x2d89bf0, (q31_t)0x10c5c7, (q31_t)0x2e529b0,\n    (q31_t)0x11588a, (q31_t)0x2f1b755, (q31_t)0x11edc3, (q31_t)0x2fe44dc,\n    (q31_t)0x128574, (q31_t)0x30ad245, (q31_t)0x131f9b, (q31_t)0x3175f91,\n    (q31_t)0x13bc39, (q31_t)0x323ecbe, (q31_t)0x145b4e, (q31_t)0x33079cc,\n    (q31_t)0x14fcda, (q31_t)0x33d06bb, (q31_t)0x15a0dd, (q31_t)0x3499389,\n    (q31_t)0x164757, (q31_t)0x3562038, (q31_t)0x16f047, (q31_t)0x362acc5,\n    (q31_t)0x179bae, (q31_t)0x36f3931, (q31_t)0x18498c, (q31_t)0x37bc57b,\n    (q31_t)0x18f9e1, (q31_t)0x38851a2, (q31_t)0x19acac, (q31_t)0x394dda7,\n    (q31_t)0x1a61ee, (q31_t)0x3a16988, (q31_t)0x1b19a7, (q31_t)0x3adf546,\n    (q31_t)0x1bd3d6, (q31_t)0x3ba80df, (q31_t)0x1c907c, (q31_t)0x3c70c54,\n    (q31_t)0x1d4f99, (q31_t)0x3d397a3, (q31_t)0x1e112b, (q31_t)0x3e022cc,\n    (q31_t)0x1ed535, (q31_t)0x3ecadcf, (q31_t)0x1f9bb5, (q31_t)0x3f938ac,\n    (q31_t)0x2064ab, (q31_t)0x405c361, (q31_t)0x213018, (q31_t)0x4124dee,\n    (q31_t)0x21fdfb, (q31_t)0x41ed854, (q31_t)0x22ce54, (q31_t)0x42b6290,\n    (q31_t)0x23a124, (q31_t)0x437eca4, (q31_t)0x24766a, (q31_t)0x444768d,\n    (q31_t)0x254e27, (q31_t)0x451004d, (q31_t)0x262859, (q31_t)0x45d89e2,\n    (q31_t)0x270502, (q31_t)0x46a134c, (q31_t)0x27e421, (q31_t)0x4769c8b,\n    (q31_t)0x28c5b6, (q31_t)0x483259d, (q31_t)0x29a9c1, (q31_t)0x48fae83,\n    (q31_t)0x2a9042, (q31_t)0x49c373c, (q31_t)0x2b7939, (q31_t)0x4a8bfc7,\n    (q31_t)0x2c64a6, (q31_t)0x4b54825, (q31_t)0x2d5289, (q31_t)0x4c1d054,\n    (q31_t)0x2e42e2, (q31_t)0x4ce5854, (q31_t)0x2f35b1, (q31_t)0x4dae024,\n    (q31_t)0x302af5, (q31_t)0x4e767c5, (q31_t)0x3122b0, (q31_t)0x4f3ef35,\n    (q31_t)0x321ce0, (q31_t)0x5007674, (q31_t)0x331986, (q31_t)0x50cfd82,\n    (q31_t)0x3418a2, (q31_t)0x519845e, (q31_t)0x351a33, (q31_t)0x5260b08,\n    (q31_t)0x361e3a, (q31_t)0x532917f, (q31_t)0x3724b6, (q31_t)0x53f17c3,\n    (q31_t)0x382da8, (q31_t)0x54b9dd3, (q31_t)0x393910, (q31_t)0x55823ae,\n    (q31_t)0x3a46ed, (q31_t)0x564a955, (q31_t)0x3b573f, (q31_t)0x5712ec7,\n    (q31_t)0x3c6a07, (q31_t)0x57db403, (q31_t)0x3d7f44, (q31_t)0x58a3908,\n    (q31_t)0x3e96f6, (q31_t)0x596bdd7, (q31_t)0x3fb11d, (q31_t)0x5a3426f,\n    (q31_t)0x40cdba, (q31_t)0x5afc6d0, (q31_t)0x41eccc, (q31_t)0x5bc4af8,\n    (q31_t)0x430e53, (q31_t)0x5c8cee7, (q31_t)0x44324f, (q31_t)0x5d5529e,\n    (q31_t)0x4558c0, (q31_t)0x5e1d61b, (q31_t)0x4681a6, (q31_t)0x5ee595d,\n    (q31_t)0x47ad01, (q31_t)0x5fadc66, (q31_t)0x48dad1, (q31_t)0x6075f33,\n    (q31_t)0x4a0b16, (q31_t)0x613e1c5, (q31_t)0x4b3dcf, (q31_t)0x620641a,\n    (q31_t)0x4c72fe, (q31_t)0x62ce634, (q31_t)0x4daaa1, (q31_t)0x6396810,\n    (q31_t)0x4ee4b8, (q31_t)0x645e9af, (q31_t)0x502145, (q31_t)0x6526b10,\n    (q31_t)0x516045, (q31_t)0x65eec33, (q31_t)0x52a1bb, (q31_t)0x66b6d16,\n    (q31_t)0x53e5a5, (q31_t)0x677edbb, (q31_t)0x552c03, (q31_t)0x6846e1f,\n    (q31_t)0x5674d6, (q31_t)0x690ee44, (q31_t)0x57c01d, (q31_t)0x69d6e27,\n    (q31_t)0x590dd8, (q31_t)0x6a9edc9, (q31_t)0x5a5e07, (q31_t)0x6b66d29,\n    (q31_t)0x5bb0ab, (q31_t)0x6c2ec48, (q31_t)0x5d05c3, (q31_t)0x6cf6b23,\n    (q31_t)0x5e5d4e, (q31_t)0x6dbe9bb, (q31_t)0x5fb74e, (q31_t)0x6e86810,\n    (q31_t)0x6113c2, (q31_t)0x6f4e620, (q31_t)0x6272aa, (q31_t)0x70163eb,\n    (q31_t)0x63d405, (q31_t)0x70de172, (q31_t)0x6537d4, (q31_t)0x71a5eb3,\n    (q31_t)0x669e18, (q31_t)0x726dbae, (q31_t)0x6806ce, (q31_t)0x7335862,\n    (q31_t)0x6971f9, (q31_t)0x73fd4cf, (q31_t)0x6adf97, (q31_t)0x74c50f4,\n    (q31_t)0x6c4fa8, (q31_t)0x758ccd2, (q31_t)0x6dc22e, (q31_t)0x7654867,\n    (q31_t)0x6f3726, (q31_t)0x771c3b3, (q31_t)0x70ae92, (q31_t)0x77e3eb5,\n    (q31_t)0x722871, (q31_t)0x78ab96e, (q31_t)0x73a4c3, (q31_t)0x79733dc,\n    (q31_t)0x752389, (q31_t)0x7a3adff, (q31_t)0x76a4c2, (q31_t)0x7b027d7,\n    (q31_t)0x78286e, (q31_t)0x7bca163, (q31_t)0x79ae8c, (q31_t)0x7c91aa3,\n    (q31_t)0x7b371e, (q31_t)0x7d59396, (q31_t)0x7cc223, (q31_t)0x7e20c3b,\n    (q31_t)0x7e4f9b, (q31_t)0x7ee8493, (q31_t)0x7fdf85, (q31_t)0x7fafc9c,\n    (q31_t)0x8171e2, (q31_t)0x8077457, (q31_t)0x8306b2, (q31_t)0x813ebc2,\n    (q31_t)0x849df4, (q31_t)0x82062de, (q31_t)0x8637a9, (q31_t)0x82cd9a9,\n    (q31_t)0x87d3d0, (q31_t)0x8395024, (q31_t)0x89726a, (q31_t)0x845c64d,\n    (q31_t)0x8b1376, (q31_t)0x8523c25, (q31_t)0x8cb6f5, (q31_t)0x85eb1ab,\n    (q31_t)0x8e5ce5, (q31_t)0x86b26de, (q31_t)0x900548, (q31_t)0x8779bbe,\n    (q31_t)0x91b01d, (q31_t)0x884104b, (q31_t)0x935d64, (q31_t)0x8908483,\n    (q31_t)0x950d1d, (q31_t)0x89cf867, (q31_t)0x96bf48, (q31_t)0x8a96bf6,\n    (q31_t)0x9873e4, (q31_t)0x8b5df30, (q31_t)0x9a2af3, (q31_t)0x8c25213,\n    (q31_t)0x9be473, (q31_t)0x8cec4a0, (q31_t)0x9da065, (q31_t)0x8db36d6,\n    (q31_t)0x9f5ec8, (q31_t)0x8e7a8b5, (q31_t)0xa11f9d, (q31_t)0x8f41a3c,\n    (q31_t)0xa2e2e3, (q31_t)0x9008b6a, (q31_t)0xa4a89b, (q31_t)0x90cfc40,\n    (q31_t)0xa670c4, (q31_t)0x9196cbc, (q31_t)0xa83b5e, (q31_t)0x925dcdf,\n    (q31_t)0xaa086a, (q31_t)0x9324ca7, (q31_t)0xabd7e6, (q31_t)0x93ebc14,\n    (q31_t)0xada9d4, (q31_t)0x94b2b27, (q31_t)0xaf7e33, (q31_t)0x95799dd,\n    (q31_t)0xb15502, (q31_t)0x9640837, (q31_t)0xb32e42, (q31_t)0x9707635,\n    (q31_t)0xb509f3, (q31_t)0x97ce3d5, (q31_t)0xb6e815, (q31_t)0x9895118,\n    (q31_t)0xb8c8a7, (q31_t)0x995bdfd, (q31_t)0xbaabaa, (q31_t)0x9a22a83,\n    (q31_t)0xbc911d, (q31_t)0x9ae96aa, (q31_t)0xbe7901, (q31_t)0x9bb0271,\n    (q31_t)0xc06355, (q31_t)0x9c76dd8, (q31_t)0xc25019, (q31_t)0x9d3d8df,\n    (q31_t)0xc43f4d, (q31_t)0x9e04385, (q31_t)0xc630f2, (q31_t)0x9ecadc9,\n    (q31_t)0xc82506, (q31_t)0x9f917ac, (q31_t)0xca1b8a, (q31_t)0xa05812c,\n    (q31_t)0xcc147f, (q31_t)0xa11ea49, (q31_t)0xce0fe3, (q31_t)0xa1e5303,\n    (q31_t)0xd00db6, (q31_t)0xa2abb59, (q31_t)0xd20dfa, (q31_t)0xa37234a,\n    (q31_t)0xd410ad, (q31_t)0xa438ad7, (q31_t)0xd615cf, (q31_t)0xa4ff1fe,\n    (q31_t)0xd81d61, (q31_t)0xa5c58c0, (q31_t)0xda2762, (q31_t)0xa68bf1b,\n    (q31_t)0xdc33d2, (q31_t)0xa752510, (q31_t)0xde42b2, (q31_t)0xa818a9d,\n    (q31_t)0xe05401, (q31_t)0xa8defc3, (q31_t)0xe267be, (q31_t)0xa9a5480,\n    (q31_t)0xe47deb, (q31_t)0xaa6b8d5, (q31_t)0xe69686, (q31_t)0xab31cc1,\n    (q31_t)0xe8b190, (q31_t)0xabf8043, (q31_t)0xeacf09, (q31_t)0xacbe35b,\n    (q31_t)0xeceef1, (q31_t)0xad84609, (q31_t)0xef1147, (q31_t)0xae4a84b,\n    (q31_t)0xf1360b, (q31_t)0xaf10a22, (q31_t)0xf35d3e, (q31_t)0xafd6b8d,\n    (q31_t)0xf586df, (q31_t)0xb09cc8c, (q31_t)0xf7b2ee, (q31_t)0xb162d1d,\n    (q31_t)0xf9e16b, (q31_t)0xb228d42, (q31_t)0xfc1257, (q31_t)0xb2eecf8,\n    (q31_t)0xfe45b0, (q31_t)0xb3b4c40, (q31_t)0x1007b77, (q31_t)0xb47ab19,\n    (q31_t)0x102b3ac, (q31_t)0xb540982, (q31_t)0x104ee4f, (q31_t)0xb60677c,\n    (q31_t)0x1072b5f, (q31_t)0xb6cc506, (q31_t)0x1096add, (q31_t)0xb79221f,\n    (q31_t)0x10bacc8, (q31_t)0xb857ec7, (q31_t)0x10df120, (q31_t)0xb91dafc,\n    (q31_t)0x11037e6, (q31_t)0xb9e36c0, (q31_t)0x1128119, (q31_t)0xbaa9211,\n    (q31_t)0x114ccb9, (q31_t)0xbb6ecef, (q31_t)0x1171ac6, (q31_t)0xbc34759,\n    (q31_t)0x1196b3f, (q31_t)0xbcfa150, (q31_t)0x11bbe26, (q31_t)0xbdbfad1,\n    (q31_t)0x11e1379, (q31_t)0xbe853de, (q31_t)0x1206b39, (q31_t)0xbf4ac75,\n    (q31_t)0x122c566, (q31_t)0xc010496, (q31_t)0x12521ff, (q31_t)0xc0d5c41,\n    (q31_t)0x1278104, (q31_t)0xc19b374, (q31_t)0x129e276, (q31_t)0xc260a31,\n    (q31_t)0x12c4653, (q31_t)0xc326075, (q31_t)0x12eac9d, (q31_t)0xc3eb641,\n    (q31_t)0x1311553, (q31_t)0xc4b0b94, (q31_t)0x1338075, (q31_t)0xc57606e,\n    (q31_t)0x135ee02, (q31_t)0xc63b4ce, (q31_t)0x1385dfb, (q31_t)0xc7008b3,\n    (q31_t)0x13ad060, (q31_t)0xc7c5c1e, (q31_t)0x13d4530, (q31_t)0xc88af0e,\n    (q31_t)0x13fbc6c, (q31_t)0xc950182, (q31_t)0x1423613, (q31_t)0xca1537a,\n    (q31_t)0x144b225, (q31_t)0xcada4f5, (q31_t)0x14730a3, (q31_t)0xcb9f5f3,\n    (q31_t)0x149b18b, (q31_t)0xcc64673, (q31_t)0x14c34df, (q31_t)0xcd29676,\n    (q31_t)0x14eba9d, (q31_t)0xcdee5f9, (q31_t)0x15142c6, (q31_t)0xceb34fe,\n    (q31_t)0x153cd5a, (q31_t)0xcf78383, (q31_t)0x1565a58, (q31_t)0xd03d189,\n    (q31_t)0x158e9c1, (q31_t)0xd101f0e, (q31_t)0x15b7b94, (q31_t)0xd1c6c11,\n    (q31_t)0x15e0fd1, (q31_t)0xd28b894, (q31_t)0x160a678, (q31_t)0xd350495,\n    (q31_t)0x1633f8a, (q31_t)0xd415013, (q31_t)0x165db05, (q31_t)0xd4d9b0e,\n    (q31_t)0x16878eb, (q31_t)0xd59e586, (q31_t)0x16b193a, (q31_t)0xd662f7b,\n    (q31_t)0x16dbbf3, (q31_t)0xd7278eb, (q31_t)0x1706115, (q31_t)0xd7ec1d6,\n    (q31_t)0x17308a1, (q31_t)0xd8b0a3d, (q31_t)0x175b296, (q31_t)0xd97521d,\n    (q31_t)0x1785ef4, (q31_t)0xda39978, (q31_t)0x17b0dbb, (q31_t)0xdafe04b,\n    (q31_t)0x17dbeec, (q31_t)0xdbc2698, (q31_t)0x1807285, (q31_t)0xdc86c5d,\n    (q31_t)0x1832888, (q31_t)0xdd4b19a, (q31_t)0x185e0f3, (q31_t)0xde0f64f,\n    (q31_t)0x1889bc6, (q31_t)0xded3a7b, (q31_t)0x18b5903, (q31_t)0xdf97e1d,\n    (q31_t)0x18e18a7, (q31_t)0xe05c135, (q31_t)0x190dab4, (q31_t)0xe1203c3,\n    (q31_t)0x1939f29, (q31_t)0xe1e45c6, (q31_t)0x1966606, (q31_t)0xe2a873e,\n    (q31_t)0x1992f4c, (q31_t)0xe36c82a, (q31_t)0x19bfaf9, (q31_t)0xe430889,\n    (q31_t)0x19ec90d, (q31_t)0xe4f485c, (q31_t)0x1a1998a, (q31_t)0xe5b87a2,\n    (q31_t)0x1a46c6e, (q31_t)0xe67c65a, (q31_t)0x1a741b9, (q31_t)0xe740483,\n    (q31_t)0x1aa196c, (q31_t)0xe80421e, (q31_t)0x1acf386, (q31_t)0xe8c7f2a,\n    (q31_t)0x1afd007, (q31_t)0xe98bba7, (q31_t)0x1b2aef0, (q31_t)0xea4f793,\n    (q31_t)0x1b5903f, (q31_t)0xeb132ef, (q31_t)0x1b873f5, (q31_t)0xebd6db9,\n    (q31_t)0x1bb5a11, (q31_t)0xec9a7f3, (q31_t)0x1be4294, (q31_t)0xed5e19a,\n    (q31_t)0x1c12d7e, (q31_t)0xee21aaf, (q31_t)0x1c41ace, (q31_t)0xeee5331,\n    (q31_t)0x1c70a84, (q31_t)0xefa8b20, (q31_t)0x1c9fca0, (q31_t)0xf06c27a,\n    (q31_t)0x1ccf122, (q31_t)0xf12f941, (q31_t)0x1cfe80a, (q31_t)0xf1f2f73,\n    (q31_t)0x1d2e158, (q31_t)0xf2b650f, (q31_t)0x1d5dd0c, (q31_t)0xf379a16,\n    (q31_t)0x1d8db25, (q31_t)0xf43ce86, (q31_t)0x1dbdba3, (q31_t)0xf500260,\n    (q31_t)0x1dede87, (q31_t)0xf5c35a3, (q31_t)0x1e1e3d0, (q31_t)0xf68684e,\n    (q31_t)0x1e4eb7e, (q31_t)0xf749a61, (q31_t)0x1e7f591, (q31_t)0xf80cbdc,\n    (q31_t)0x1eb0209, (q31_t)0xf8cfcbe, (q31_t)0x1ee10e5, (q31_t)0xf992d06,\n    (q31_t)0x1f12227, (q31_t)0xfa55cb4, (q31_t)0x1f435cc, (q31_t)0xfb18bc8,\n    (q31_t)0x1f74bd6, (q31_t)0xfbdba40, (q31_t)0x1fa6445, (q31_t)0xfc9e81e,\n    (q31_t)0x1fd7f17, (q31_t)0xfd6155f, (q31_t)0x2009c4e, (q31_t)0xfe24205,\n    (q31_t)0x203bbe8, (q31_t)0xfee6e0d, (q31_t)0x206dde6, (q31_t)0xffa9979,\n    (q31_t)0x20a0248, (q31_t)0x1006c446, (q31_t)0x20d290d, (q31_t)0x1012ee76,\n    (q31_t)0x2105236, (q31_t)0x101f1807, (q31_t)0x2137dc2, (q31_t)0x102b40f8,\n    (q31_t)0x216abb1, (q31_t)0x1037694b, (q31_t)0x219dc03, (q31_t)0x104390fd,\n    (q31_t)0x21d0eb8, (q31_t)0x104fb80e, (q31_t)0x22043d0, (q31_t)0x105bde7f,\n    (q31_t)0x2237b4b, (q31_t)0x1068044e, (q31_t)0x226b528, (q31_t)0x1074297b,\n    (q31_t)0x229f167, (q31_t)0x10804e06, (q31_t)0x22d3009, (q31_t)0x108c71ee,\n    (q31_t)0x230710d, (q31_t)0x10989532, (q31_t)0x233b473, (q31_t)0x10a4b7d3,\n    (q31_t)0x236fa3b, (q31_t)0x10b0d9d0, (q31_t)0x23a4265, (q31_t)0x10bcfb28,\n    (q31_t)0x23d8cf1, (q31_t)0x10c91bda, (q31_t)0x240d9de, (q31_t)0x10d53be7,\n    (q31_t)0x244292c, (q31_t)0x10e15b4e, (q31_t)0x2477adc, (q31_t)0x10ed7a0e,\n    (q31_t)0x24aceed, (q31_t)0x10f99827, (q31_t)0x24e255e, (q31_t)0x1105b599,\n    (q31_t)0x2517e31, (q31_t)0x1111d263, (q31_t)0x254d965, (q31_t)0x111dee84,\n    (q31_t)0x25836f9, (q31_t)0x112a09fc, (q31_t)0x25b96ee, (q31_t)0x113624cb,\n    (q31_t)0x25ef943, (q31_t)0x11423ef0, (q31_t)0x2625df8, (q31_t)0x114e586a,\n    (q31_t)0x265c50e, (q31_t)0x115a713a, (q31_t)0x2692e83, (q31_t)0x1166895f,\n    (q31_t)0x26c9a58, (q31_t)0x1172a0d7, (q31_t)0x270088e, (q31_t)0x117eb7a4,\n    (q31_t)0x2737922, (q31_t)0x118acdc4, (q31_t)0x276ec16, (q31_t)0x1196e337,\n    (q31_t)0x27a616a, (q31_t)0x11a2f7fc, (q31_t)0x27dd91c, (q31_t)0x11af0c13,\n    (q31_t)0x281532e, (q31_t)0x11bb1f7c, (q31_t)0x284cf9f, (q31_t)0x11c73235,\n    (q31_t)0x2884e6e, (q31_t)0x11d3443f, (q31_t)0x28bcf9c, (q31_t)0x11df5599,\n    (q31_t)0x28f5329, (q31_t)0x11eb6643, (q31_t)0x292d914, (q31_t)0x11f7763c,\n    (q31_t)0x296615d, (q31_t)0x12038584, (q31_t)0x299ec05, (q31_t)0x120f941a,\n    (q31_t)0x29d790a, (q31_t)0x121ba1fd, (q31_t)0x2a1086d, (q31_t)0x1227af2e,\n    (q31_t)0x2a49a2e, (q31_t)0x1233bbac, (q31_t)0x2a82e4d, (q31_t)0x123fc776,\n    (q31_t)0x2abc4c9, (q31_t)0x124bd28c, (q31_t)0x2af5da2, (q31_t)0x1257dced,\n    (q31_t)0x2b2f8d8, (q31_t)0x1263e699, (q31_t)0x2b6966c, (q31_t)0x126fef90,\n    (q31_t)0x2ba365c, (q31_t)0x127bf7d1, (q31_t)0x2bdd8a9, (q31_t)0x1287ff5b,\n    (q31_t)0x2c17d52, (q31_t)0x1294062f, (q31_t)0x2c52459, (q31_t)0x12a00c4b,\n    (q31_t)0x2c8cdbb, (q31_t)0x12ac11af, (q31_t)0x2cc7979, (q31_t)0x12b8165b,\n    (q31_t)0x2d02794, (q31_t)0x12c41a4f, (q31_t)0x2d3d80a, (q31_t)0x12d01d89,\n    (q31_t)0x2d78add, (q31_t)0x12dc2009, (q31_t)0x2db400a, (q31_t)0x12e821cf,\n    (q31_t)0x2def794, (q31_t)0x12f422db, (q31_t)0x2e2b178, (q31_t)0x1300232c,\n    (q31_t)0x2e66db8, (q31_t)0x130c22c1, (q31_t)0x2ea2c53, (q31_t)0x1318219a,\n    (q31_t)0x2eded49, (q31_t)0x13241fb6, (q31_t)0x2f1b099, (q31_t)0x13301d16,\n    (q31_t)0x2f57644, (q31_t)0x133c19b8, (q31_t)0x2f93e4a, (q31_t)0x1348159d,\n    (q31_t)0x2fd08a9, (q31_t)0x135410c3, (q31_t)0x300d563, (q31_t)0x13600b2a,\n    (q31_t)0x304a477, (q31_t)0x136c04d2, (q31_t)0x30875e5, (q31_t)0x1377fdbb,\n    (q31_t)0x30c49ad, (q31_t)0x1383f5e3, (q31_t)0x3101fce, (q31_t)0x138fed4b,\n    (q31_t)0x313f848, (q31_t)0x139be3f2, (q31_t)0x317d31c, (q31_t)0x13a7d9d7,\n    (q31_t)0x31bb049, (q31_t)0x13b3cefa, (q31_t)0x31f8fcf, (q31_t)0x13bfc35b,\n    (q31_t)0x32371ae, (q31_t)0x13cbb6f8, (q31_t)0x32755e5, (q31_t)0x13d7a9d3,\n    (q31_t)0x32b3c75, (q31_t)0x13e39be9, (q31_t)0x32f255e, (q31_t)0x13ef8d3c,\n    (q31_t)0x333109e, (q31_t)0x13fb7dc9, (q31_t)0x336fe37, (q31_t)0x14076d91,\n    (q31_t)0x33aee27, (q31_t)0x14135c94, (q31_t)0x33ee070, (q31_t)0x141f4ad1,\n    (q31_t)0x342d510, (q31_t)0x142b3846, (q31_t)0x346cc07, (q31_t)0x143724f5,\n    (q31_t)0x34ac556, (q31_t)0x144310dd, (q31_t)0x34ec0fc, (q31_t)0x144efbfc,\n    (q31_t)0x352bef9, (q31_t)0x145ae653, (q31_t)0x356bf4d, (q31_t)0x1466cfe1,\n    (q31_t)0x35ac1f7, (q31_t)0x1472b8a5, (q31_t)0x35ec6f8, (q31_t)0x147ea0a0,\n    (q31_t)0x362ce50, (q31_t)0x148a87d1, (q31_t)0x366d7fd, (q31_t)0x14966e36,\n    (q31_t)0x36ae401, (q31_t)0x14a253d1, (q31_t)0x36ef25b, (q31_t)0x14ae38a0,\n    (q31_t)0x373030a, (q31_t)0x14ba1ca3, (q31_t)0x377160f, (q31_t)0x14c5ffd9,\n    (q31_t)0x37b2b6a, (q31_t)0x14d1e242, (q31_t)0x37f4319, (q31_t)0x14ddc3de,\n    (q31_t)0x3835d1e, (q31_t)0x14e9a4ac, (q31_t)0x3877978, (q31_t)0x14f584ac,\n    (q31_t)0x38b9827, (q31_t)0x150163dc, (q31_t)0x38fb92a, (q31_t)0x150d423d,\n    (q31_t)0x393dc82, (q31_t)0x15191fcf, (q31_t)0x398022f, (q31_t)0x1524fc90,\n    (q31_t)0x39c2a2f, (q31_t)0x1530d881, (q31_t)0x3a05484, (q31_t)0x153cb3a0,\n    (q31_t)0x3a4812c, (q31_t)0x15488dee, (q31_t)0x3a8b028, (q31_t)0x1554676a,\n    (q31_t)0x3ace178, (q31_t)0x15604013, (q31_t)0x3b1151b, (q31_t)0x156c17e9,\n    (q31_t)0x3b54b11, (q31_t)0x1577eeec, (q31_t)0x3b9835a, (q31_t)0x1583c51b,\n    (q31_t)0x3bdbdf6, (q31_t)0x158f9a76, (q31_t)0x3c1fae5, (q31_t)0x159b6efb,\n    (q31_t)0x3c63a26, (q31_t)0x15a742ac, (q31_t)0x3ca7bba, (q31_t)0x15b31587,\n    (q31_t)0x3cebfa0, (q31_t)0x15bee78c, (q31_t)0x3d305d8, (q31_t)0x15cab8ba,\n    (q31_t)0x3d74e62, (q31_t)0x15d68911, (q31_t)0x3db993e, (q31_t)0x15e25890,\n    (q31_t)0x3dfe66c, (q31_t)0x15ee2738, (q31_t)0x3e435ea, (q31_t)0x15f9f507,\n    (q31_t)0x3e887bb, (q31_t)0x1605c1fd, (q31_t)0x3ecdbdc, (q31_t)0x16118e1a,\n    (q31_t)0x3f1324e, (q31_t)0x161d595d, (q31_t)0x3f58b10, (q31_t)0x162923c5,\n    (q31_t)0x3f9e624, (q31_t)0x1634ed53, (q31_t)0x3fe4388, (q31_t)0x1640b606,\n    (q31_t)0x402a33c, (q31_t)0x164c7ddd, (q31_t)0x4070540, (q31_t)0x165844d8,\n    (q31_t)0x40b6994, (q31_t)0x16640af7, (q31_t)0x40fd037, (q31_t)0x166fd039,\n    (q31_t)0x414392b, (q31_t)0x167b949d, (q31_t)0x418a46d, (q31_t)0x16875823,\n    (q31_t)0x41d11ff, (q31_t)0x16931acb, (q31_t)0x42181e0, (q31_t)0x169edc94,\n    (q31_t)0x425f410, (q31_t)0x16aa9d7e, (q31_t)0x42a688f, (q31_t)0x16b65d88,\n    (q31_t)0x42edf5c, (q31_t)0x16c21cb2, (q31_t)0x4335877, (q31_t)0x16cddafb,\n    (q31_t)0x437d3e1, (q31_t)0x16d99864, (q31_t)0x43c5199, (q31_t)0x16e554ea,\n    (q31_t)0x440d19e, (q31_t)0x16f1108f, (q31_t)0x44553f2, (q31_t)0x16fccb51,\n    (q31_t)0x449d892, (q31_t)0x17088531, (q31_t)0x44e5f80, (q31_t)0x17143e2d,\n    (q31_t)0x452e8bc, (q31_t)0x171ff646, (q31_t)0x4577444, (q31_t)0x172bad7a,\n    (q31_t)0x45c0219, (q31_t)0x173763c9, (q31_t)0x460923b, (q31_t)0x17431933,\n    (q31_t)0x46524a9, (q31_t)0x174ecdb8, (q31_t)0x469b963, (q31_t)0x175a8157,\n    (q31_t)0x46e5069, (q31_t)0x1766340f, (q31_t)0x472e9bc, (q31_t)0x1771e5e0,\n    (q31_t)0x477855a, (q31_t)0x177d96ca, (q31_t)0x47c2344, (q31_t)0x178946cc,\n    (q31_t)0x480c379, (q31_t)0x1794f5e6, (q31_t)0x48565f9, (q31_t)0x17a0a417,\n    (q31_t)0x48a0ac4, (q31_t)0x17ac515f, (q31_t)0x48eb1db, (q31_t)0x17b7fdbd,\n    (q31_t)0x4935b3c, (q31_t)0x17c3a931, (q31_t)0x49806e7, (q31_t)0x17cf53bb,\n    (q31_t)0x49cb4dd, (q31_t)0x17dafd59, (q31_t)0x4a1651c, (q31_t)0x17e6a60c,\n    (q31_t)0x4a617a6, (q31_t)0x17f24dd3, (q31_t)0x4aacc7a, (q31_t)0x17fdf4ae,\n    (q31_t)0x4af8397, (q31_t)0x18099a9c, (q31_t)0x4b43cfd, (q31_t)0x18153f9d,\n    (q31_t)0x4b8f8ad, (q31_t)0x1820e3b0, (q31_t)0x4bdb6a6, (q31_t)0x182c86d5,\n    (q31_t)0x4c276e8, (q31_t)0x1838290c, (q31_t)0x4c73972, (q31_t)0x1843ca53,\n    (q31_t)0x4cbfe45, (q31_t)0x184f6aab, (q31_t)0x4d0c560, (q31_t)0x185b0a13,\n    (q31_t)0x4d58ec3, (q31_t)0x1866a88a, (q31_t)0x4da5a6f, (q31_t)0x18724611,\n    (q31_t)0x4df2862, (q31_t)0x187de2a7, (q31_t)0x4e3f89c, (q31_t)0x18897e4a,\n    (q31_t)0x4e8cb1e, (q31_t)0x189518fc, (q31_t)0x4ed9fe7, (q31_t)0x18a0b2bb,\n    (q31_t)0x4f276f7, (q31_t)0x18ac4b87, (q31_t)0x4f7504e, (q31_t)0x18b7e35f,\n    (q31_t)0x4fc2bec, (q31_t)0x18c37a44, (q31_t)0x50109d0, (q31_t)0x18cf1034,\n    (q31_t)0x505e9fb, (q31_t)0x18daa52f, (q31_t)0x50acc6b, (q31_t)0x18e63935,\n    (q31_t)0x50fb121, (q31_t)0x18f1cc45, (q31_t)0x514981d, (q31_t)0x18fd5e5f,\n    (q31_t)0x519815f, (q31_t)0x1908ef82, (q31_t)0x51e6ce6, (q31_t)0x19147fae,\n    (q31_t)0x5235ab2, (q31_t)0x19200ee3, (q31_t)0x5284ac3, (q31_t)0x192b9d1f,\n    (q31_t)0x52d3d18, (q31_t)0x19372a64, (q31_t)0x53231b3, (q31_t)0x1942b6af,\n    (q31_t)0x5372891, (q31_t)0x194e4201, (q31_t)0x53c21b4, (q31_t)0x1959cc5a,\n    (q31_t)0x5411d1b, (q31_t)0x196555b8, (q31_t)0x5461ac6, (q31_t)0x1970de1b,\n    (q31_t)0x54b1ab4, (q31_t)0x197c6584, (q31_t)0x5501ce5, (q31_t)0x1987ebf0,\n    (q31_t)0x555215a, (q31_t)0x19937161, (q31_t)0x55a2812, (q31_t)0x199ef5d6,\n    (q31_t)0x55f310d, (q31_t)0x19aa794d, (q31_t)0x5643c4a, (q31_t)0x19b5fbc8,\n    (q31_t)0x56949ca, (q31_t)0x19c17d44, (q31_t)0x56e598c, (q31_t)0x19ccfdc2,\n    (q31_t)0x5736b90, (q31_t)0x19d87d42, (q31_t)0x5787fd6, (q31_t)0x19e3fbc3,\n    (q31_t)0x57d965d, (q31_t)0x19ef7944, (q31_t)0x582af26, (q31_t)0x19faf5c5,\n    (q31_t)0x587ca31, (q31_t)0x1a067145, (q31_t)0x58ce77c, (q31_t)0x1a11ebc5,\n    (q31_t)0x5920708, (q31_t)0x1a1d6544, (q31_t)0x59728d5, (q31_t)0x1a28ddc0,\n    (q31_t)0x59c4ce3, (q31_t)0x1a34553b, (q31_t)0x5a17330, (q31_t)0x1a3fcbb3,\n    (q31_t)0x5a69bbe, (q31_t)0x1a4b4128, (q31_t)0x5abc68c, (q31_t)0x1a56b599,\n    (q31_t)0x5b0f399, (q31_t)0x1a622907, (q31_t)0x5b622e6, (q31_t)0x1a6d9b70,\n    (q31_t)0x5bb5472, (q31_t)0x1a790cd4, (q31_t)0x5c0883d, (q31_t)0x1a847d33,\n    (q31_t)0x5c5be47, (q31_t)0x1a8fec8c, (q31_t)0x5caf690, (q31_t)0x1a9b5adf,\n    (q31_t)0x5d03118, (q31_t)0x1aa6c82b, (q31_t)0x5d56ddd, (q31_t)0x1ab23471,\n    (q31_t)0x5daace1, (q31_t)0x1abd9faf, (q31_t)0x5dfee22, (q31_t)0x1ac909e5,\n    (q31_t)0x5e531a1, (q31_t)0x1ad47312, (q31_t)0x5ea775e, (q31_t)0x1adfdb37,\n    (q31_t)0x5efbf58, (q31_t)0x1aeb4253, (q31_t)0x5f5098f, (q31_t)0x1af6a865,\n    (q31_t)0x5fa5603, (q31_t)0x1b020d6c, (q31_t)0x5ffa4b3, (q31_t)0x1b0d716a,\n    (q31_t)0x604f5a0, (q31_t)0x1b18d45c, (q31_t)0x60a48c9, (q31_t)0x1b243643,\n    (q31_t)0x60f9e2e, (q31_t)0x1b2f971e, (q31_t)0x614f5cf, (q31_t)0x1b3af6ec,\n    (q31_t)0x61a4fac, (q31_t)0x1b4655ae, (q31_t)0x61fabc4, (q31_t)0x1b51b363,\n    (q31_t)0x6250a18, (q31_t)0x1b5d100a, (q31_t)0x62a6aa6, (q31_t)0x1b686ba3,\n    (q31_t)0x62fcd6f, (q31_t)0x1b73c62d, (q31_t)0x6353273, (q31_t)0x1b7f1fa9,\n    (q31_t)0x63a99b1, (q31_t)0x1b8a7815, (q31_t)0x6400329, (q31_t)0x1b95cf71,\n    (q31_t)0x6456edb, (q31_t)0x1ba125bd, (q31_t)0x64adcc7, (q31_t)0x1bac7af9,\n    (q31_t)0x6504ced, (q31_t)0x1bb7cf23, (q31_t)0x655bf4c, (q31_t)0x1bc3223c,\n    (q31_t)0x65b33e4, (q31_t)0x1bce7442, (q31_t)0x660aab5, (q31_t)0x1bd9c537,\n    (q31_t)0x66623be, (q31_t)0x1be51518, (q31_t)0x66b9f01, (q31_t)0x1bf063e6,\n    (q31_t)0x6711c7b, (q31_t)0x1bfbb1a0, (q31_t)0x6769c2e, (q31_t)0x1c06fe46,\n    (q31_t)0x67c1e18, (q31_t)0x1c1249d8, (q31_t)0x681a23a, (q31_t)0x1c1d9454,\n    (q31_t)0x6872894, (q31_t)0x1c28ddbb, (q31_t)0x68cb124, (q31_t)0x1c34260c,\n    (q31_t)0x6923bec, (q31_t)0x1c3f6d47, (q31_t)0x697c8eb, (q31_t)0x1c4ab36b,\n    (q31_t)0x69d5820, (q31_t)0x1c55f878, (q31_t)0x6a2e98b, (q31_t)0x1c613c6d,\n    (q31_t)0x6a87d2d, (q31_t)0x1c6c7f4a, (q31_t)0x6ae1304, (q31_t)0x1c77c10e,\n    (q31_t)0x6b3ab12, (q31_t)0x1c8301b9, (q31_t)0x6b94554, (q31_t)0x1c8e414b,\n    (q31_t)0x6bee1cd, (q31_t)0x1c997fc4, (q31_t)0x6c4807a, (q31_t)0x1ca4bd21,\n    (q31_t)0x6ca215c, (q31_t)0x1caff965, (q31_t)0x6cfc472, (q31_t)0x1cbb348d,\n    (q31_t)0x6d569be, (q31_t)0x1cc66e99, (q31_t)0x6db113d, (q31_t)0x1cd1a78a,\n    (q31_t)0x6e0baf0, (q31_t)0x1cdcdf5e, (q31_t)0x6e666d7, (q31_t)0x1ce81615,\n    (q31_t)0x6ec14f2, (q31_t)0x1cf34baf, (q31_t)0x6f1c540, (q31_t)0x1cfe802b,\n    (q31_t)0x6f777c1, (q31_t)0x1d09b389, (q31_t)0x6fd2c75, (q31_t)0x1d14e5c9,\n    (q31_t)0x702e35c, (q31_t)0x1d2016e9, (q31_t)0x7089c75, (q31_t)0x1d2b46ea,\n    (q31_t)0x70e57c0, (q31_t)0x1d3675cb, (q31_t)0x714153e, (q31_t)0x1d41a38c,\n    (q31_t)0x719d4ed, (q31_t)0x1d4cd02c, (q31_t)0x71f96ce, (q31_t)0x1d57fbaa,\n    (q31_t)0x7255ae0, (q31_t)0x1d632608, (q31_t)0x72b2123, (q31_t)0x1d6e4f43,\n    (q31_t)0x730e997, (q31_t)0x1d79775c, (q31_t)0x736b43c, (q31_t)0x1d849e51,\n    (q31_t)0x73c8111, (q31_t)0x1d8fc424, (q31_t)0x7425016, (q31_t)0x1d9ae8d2,\n    (q31_t)0x748214c, (q31_t)0x1da60c5d, (q31_t)0x74df4b1, (q31_t)0x1db12ec3,\n    (q31_t)0x753ca46, (q31_t)0x1dbc5004, (q31_t)0x759a20a, (q31_t)0x1dc7701f,\n    (q31_t)0x75f7bfe, (q31_t)0x1dd28f15, (q31_t)0x7655820, (q31_t)0x1dddace4,\n    (q31_t)0x76b3671, (q31_t)0x1de8c98c, (q31_t)0x77116f0, (q31_t)0x1df3e50d,\n    (q31_t)0x776f99d, (q31_t)0x1dfeff67, (q31_t)0x77cde79, (q31_t)0x1e0a1898,\n    (q31_t)0x782c582, (q31_t)0x1e1530a1, (q31_t)0x788aeb9, (q31_t)0x1e204781,\n    (q31_t)0x78e9a1d, (q31_t)0x1e2b5d38, (q31_t)0x79487ae, (q31_t)0x1e3671c5,\n    (q31_t)0x79a776c, (q31_t)0x1e418528, (q31_t)0x7a06957, (q31_t)0x1e4c9760,\n    (q31_t)0x7a65d6e, (q31_t)0x1e57a86d, (q31_t)0x7ac53b1, (q31_t)0x1e62b84f,\n    (q31_t)0x7b24c20, (q31_t)0x1e6dc705, (q31_t)0x7b846ba, (q31_t)0x1e78d48e,\n    (q31_t)0x7be4381, (q31_t)0x1e83e0eb, (q31_t)0x7c44272, (q31_t)0x1e8eec1b,\n    (q31_t)0x7ca438f, (q31_t)0x1e99f61d, (q31_t)0x7d046d6, (q31_t)0x1ea4fef0,\n    (q31_t)0x7d64c47, (q31_t)0x1eb00696, (q31_t)0x7dc53e3, (q31_t)0x1ebb0d0d,\n    (q31_t)0x7e25daa, (q31_t)0x1ec61254, (q31_t)0x7e8699a, (q31_t)0x1ed1166b,\n    (q31_t)0x7ee77b3, (q31_t)0x1edc1953, (q31_t)0x7f487f6, (q31_t)0x1ee71b0a,\n    (q31_t)0x7fa9a62, (q31_t)0x1ef21b90, (q31_t)0x800aef7, (q31_t)0x1efd1ae4,\n    (q31_t)0x806c5b5, (q31_t)0x1f081907, (q31_t)0x80cde9b, (q31_t)0x1f1315f7,\n    (q31_t)0x812f9a9, (q31_t)0x1f1e11b5, (q31_t)0x81916df, (q31_t)0x1f290c3f,\n    (q31_t)0x81f363d, (q31_t)0x1f340596, (q31_t)0x82557c3, (q31_t)0x1f3efdb9,\n    (q31_t)0x82b7b70, (q31_t)0x1f49f4a8, (q31_t)0x831a143, (q31_t)0x1f54ea62,\n    (q31_t)0x837c93e, (q31_t)0x1f5fdee6, (q31_t)0x83df35f, (q31_t)0x1f6ad235,\n    (q31_t)0x8441fa6, (q31_t)0x1f75c44e, (q31_t)0x84a4e14, (q31_t)0x1f80b531,\n    (q31_t)0x8507ea7, (q31_t)0x1f8ba4dc, (q31_t)0x856b160, (q31_t)0x1f969350,\n    (q31_t)0x85ce63e, (q31_t)0x1fa1808c, (q31_t)0x8631d42, (q31_t)0x1fac6c91,\n    (q31_t)0x869566a, (q31_t)0x1fb7575c, (q31_t)0x86f91b7, (q31_t)0x1fc240ef,\n    (q31_t)0x875cf28, (q31_t)0x1fcd2948, (q31_t)0x87c0ebd, (q31_t)0x1fd81067,\n    (q31_t)0x8825077, (q31_t)0x1fe2f64c, (q31_t)0x8889454, (q31_t)0x1feddaf6,\n    (q31_t)0x88eda54, (q31_t)0x1ff8be65, (q31_t)0x8952278, (q31_t)0x2003a099,\n    (q31_t)0x89b6cbf, (q31_t)0x200e8190, (q31_t)0x8a1b928, (q31_t)0x2019614c,\n    (q31_t)0x8a807b4, (q31_t)0x20243fca, (q31_t)0x8ae5862, (q31_t)0x202f1d0b,\n    (q31_t)0x8b4ab32, (q31_t)0x2039f90f, (q31_t)0x8bb0023, (q31_t)0x2044d3d4,\n    (q31_t)0x8c15736, (q31_t)0x204fad5b, (q31_t)0x8c7b06b, (q31_t)0x205a85a3,\n    (q31_t)0x8ce0bc0, (q31_t)0x20655cac, (q31_t)0x8d46936, (q31_t)0x20703275,\n    (q31_t)0x8dac8cd, (q31_t)0x207b06fe, (q31_t)0x8e12a84, (q31_t)0x2085da46,\n    (q31_t)0x8e78e5b, (q31_t)0x2090ac4d, (q31_t)0x8edf452, (q31_t)0x209b7d13,\n    (q31_t)0x8f45c68, (q31_t)0x20a64c97, (q31_t)0x8fac69e, (q31_t)0x20b11ad9,\n    (q31_t)0x90132f2, (q31_t)0x20bbe7d8, (q31_t)0x907a166, (q31_t)0x20c6b395,\n    (q31_t)0x90e11f7, (q31_t)0x20d17e0d, (q31_t)0x91484a8, (q31_t)0x20dc4742,\n    (q31_t)0x91af976, (q31_t)0x20e70f32, (q31_t)0x9217062, (q31_t)0x20f1d5de,\n    (q31_t)0x927e96b, (q31_t)0x20fc9b44, (q31_t)0x92e6492, (q31_t)0x21075f65,\n    (q31_t)0x934e1d6, (q31_t)0x21122240, (q31_t)0x93b6137, (q31_t)0x211ce3d5,\n    (q31_t)0x941e2b4, (q31_t)0x2127a423, (q31_t)0x948664d, (q31_t)0x21326329,\n    (q31_t)0x94eec03, (q31_t)0x213d20e8, (q31_t)0x95573d4, (q31_t)0x2147dd5f,\n    (q31_t)0x95bfdc1, (q31_t)0x2152988d, (q31_t)0x96289c9, (q31_t)0x215d5273,\n    (q31_t)0x96917ec, (q31_t)0x21680b0f, (q31_t)0x96fa82a, (q31_t)0x2172c262,\n    (q31_t)0x9763a83, (q31_t)0x217d786a, (q31_t)0x97ccef5, (q31_t)0x21882d28,\n    (q31_t)0x9836582, (q31_t)0x2192e09b, (q31_t)0x989fe29, (q31_t)0x219d92c2,\n    (q31_t)0x99098e9, (q31_t)0x21a8439e, (q31_t)0x99735c2, (q31_t)0x21b2f32e,\n    (q31_t)0x99dd4b4, (q31_t)0x21bda171, (q31_t)0x9a475bf, (q31_t)0x21c84e67,\n    (q31_t)0x9ab18e3, (q31_t)0x21d2fa0f, (q31_t)0x9b1be1e, (q31_t)0x21dda46a,\n    (q31_t)0x9b86572, (q31_t)0x21e84d76, (q31_t)0x9bf0edd, (q31_t)0x21f2f534,\n    (q31_t)0x9c5ba60, (q31_t)0x21fd9ba3, (q31_t)0x9cc67fa, (q31_t)0x220840c2,\n    (q31_t)0x9d317ab, (q31_t)0x2212e492, (q31_t)0x9d9c973, (q31_t)0x221d8711,\n    (q31_t)0x9e07d51, (q31_t)0x2228283f, (q31_t)0x9e73346, (q31_t)0x2232c81c,\n    (q31_t)0x9edeb50, (q31_t)0x223d66a8, (q31_t)0x9f4a570, (q31_t)0x224803e2,\n    (q31_t)0x9fb61a5, (q31_t)0x22529fca, (q31_t)0xa021fef, (q31_t)0x225d3a5e,\n    (q31_t)0xa08e04f, (q31_t)0x2267d3a0, (q31_t)0xa0fa2c3, (q31_t)0x22726b8e,\n    (q31_t)0xa16674b, (q31_t)0x227d0228, (q31_t)0xa1d2de7, (q31_t)0x2287976e,\n    (q31_t)0xa23f698, (q31_t)0x22922b5e, (q31_t)0xa2ac15b, (q31_t)0x229cbdfa,\n    (q31_t)0xa318e32, (q31_t)0x22a74f40, (q31_t)0xa385d1d, (q31_t)0x22b1df30,\n    (q31_t)0xa3f2e19, (q31_t)0x22bc6dca, (q31_t)0xa460129, (q31_t)0x22c6fb0c,\n    (q31_t)0xa4cd64b, (q31_t)0x22d186f8, (q31_t)0xa53ad7e, (q31_t)0x22dc118c,\n    (q31_t)0xa5a86c4, (q31_t)0x22e69ac8, (q31_t)0xa61621b, (q31_t)0x22f122ab,\n    (q31_t)0xa683f83, (q31_t)0x22fba936, (q31_t)0xa6f1efc, (q31_t)0x23062e67,\n    (q31_t)0xa760086, (q31_t)0x2310b23e, (q31_t)0xa7ce420, (q31_t)0x231b34bc,\n    (q31_t)0xa83c9ca, (q31_t)0x2325b5df, (q31_t)0xa8ab184, (q31_t)0x233035a7,\n    (q31_t)0xa919b4e, (q31_t)0x233ab414, (q31_t)0xa988727, (q31_t)0x23453125,\n    (q31_t)0xa9f750f, (q31_t)0x234facda, (q31_t)0xaa66506, (q31_t)0x235a2733,\n    (q31_t)0xaad570c, (q31_t)0x2364a02e, (q31_t)0xab44b1f, (q31_t)0x236f17cc,\n    (q31_t)0xabb4141, (q31_t)0x23798e0d, (q31_t)0xac23971, (q31_t)0x238402ef,\n    (q31_t)0xac933ae, (q31_t)0x238e7673, (q31_t)0xad02ff8, (q31_t)0x2398e898,\n    (q31_t)0xad72e4f, (q31_t)0x23a3595e, (q31_t)0xade2eb3, (q31_t)0x23adc8c4,\n    (q31_t)0xae53123, (q31_t)0x23b836ca, (q31_t)0xaec35a0, (q31_t)0x23c2a36f,\n    (q31_t)0xaf33c28, (q31_t)0x23cd0eb3, (q31_t)0xafa44bc, (q31_t)0x23d77896,\n    (q31_t)0xb014f5b, (q31_t)0x23e1e117, (q31_t)0xb085c05, (q31_t)0x23ec4837,\n    (q31_t)0xb0f6aba, (q31_t)0x23f6adf3, (q31_t)0xb167b79, (q31_t)0x2401124d,\n    (q31_t)0xb1d8e43, (q31_t)0x240b7543, (q31_t)0xb24a316, (q31_t)0x2415d6d5,\n    (q31_t)0xb2bb9f4, (q31_t)0x24203704, (q31_t)0xb32d2da, (q31_t)0x242a95ce,\n    (q31_t)0xb39edca, (q31_t)0x2434f332, (q31_t)0xb410ac3, (q31_t)0x243f4f32,\n    (q31_t)0xb4829c4, (q31_t)0x2449a9cc, (q31_t)0xb4f4acd, (q31_t)0x245402ff,\n    (q31_t)0xb566ddf, (q31_t)0x245e5acc, (q31_t)0xb5d92f8, (q31_t)0x2468b132,\n    (q31_t)0xb64ba19, (q31_t)0x24730631, (q31_t)0xb6be341, (q31_t)0x247d59c8,\n    (q31_t)0xb730e70, (q31_t)0x2487abf7, (q31_t)0xb7a3ba5, (q31_t)0x2491fcbe,\n    (q31_t)0xb816ae1, (q31_t)0x249c4c1b, (q31_t)0xb889c23, (q31_t)0x24a69a0f,\n    (q31_t)0xb8fcf6b, (q31_t)0x24b0e699, (q31_t)0xb9704b9, (q31_t)0x24bb31ba,\n    (q31_t)0xb9e3c0b, (q31_t)0x24c57b6f, (q31_t)0xba57563, (q31_t)0x24cfc3ba,\n    (q31_t)0xbacb0bf, (q31_t)0x24da0a9a, (q31_t)0xbb3ee20, (q31_t)0x24e4500e,\n    (q31_t)0xbbb2d85, (q31_t)0x24ee9415, (q31_t)0xbc26eee, (q31_t)0x24f8d6b0,\n    (q31_t)0xbc9b25a, (q31_t)0x250317df, (q31_t)0xbd0f7ca, (q31_t)0x250d57a0,\n    (q31_t)0xbd83f3d, (q31_t)0x251795f3, (q31_t)0xbdf88b3, (q31_t)0x2521d2d8,\n    (q31_t)0xbe6d42b, (q31_t)0x252c0e4f, (q31_t)0xbee21a5, (q31_t)0x25364857,\n    (q31_t)0xbf57121, (q31_t)0x254080ef, (q31_t)0xbfcc29f, (q31_t)0x254ab818,\n    (q31_t)0xc04161e, (q31_t)0x2554edd1, (q31_t)0xc0b6b9e, (q31_t)0x255f2219,\n    (q31_t)0xc12c31f, (q31_t)0x256954f1, (q31_t)0xc1a1ca0, (q31_t)0x25738657,\n    (q31_t)0xc217822, (q31_t)0x257db64c, (q31_t)0xc28d5a3, (q31_t)0x2587e4cf,\n    (q31_t)0xc303524, (q31_t)0x259211df, (q31_t)0xc3796a5, (q31_t)0x259c3d7c,\n    (q31_t)0xc3efa25, (q31_t)0x25a667a7, (q31_t)0xc465fa3, (q31_t)0x25b0905d,\n    (q31_t)0xc4dc720, (q31_t)0x25bab7a0, (q31_t)0xc55309b, (q31_t)0x25c4dd6e,\n    (q31_t)0xc5c9c14, (q31_t)0x25cf01c8, (q31_t)0xc64098b, (q31_t)0x25d924ac,\n    (q31_t)0xc6b78ff, (q31_t)0x25e3461b, (q31_t)0xc72ea70, (q31_t)0x25ed6614,\n    (q31_t)0xc7a5dde, (q31_t)0x25f78497, (q31_t)0xc81d349, (q31_t)0x2601a1a2,\n    (q31_t)0xc894aaf, (q31_t)0x260bbd37, (q31_t)0xc90c412, (q31_t)0x2615d754,\n    (q31_t)0xc983f70, (q31_t)0x261feffa, (q31_t)0xc9fbcca, (q31_t)0x262a0727,\n    (q31_t)0xca73c1e, (q31_t)0x26341cdb, (q31_t)0xcaebd6e, (q31_t)0x263e3117,\n    (q31_t)0xcb640b8, (q31_t)0x264843d9, (q31_t)0xcbdc5fc, (q31_t)0x26525521,\n    (q31_t)0xcc54d3a, (q31_t)0x265c64ef, (q31_t)0xcccd671, (q31_t)0x26667342,\n    (q31_t)0xcd461a2, (q31_t)0x2670801a, (q31_t)0xcdbeecc, (q31_t)0x267a8b77,\n    (q31_t)0xce37def, (q31_t)0x26849558, (q31_t)0xceb0f0a, (q31_t)0x268e9dbd,\n    (q31_t)0xcf2a21d, (q31_t)0x2698a4a6, (q31_t)0xcfa3729, (q31_t)0x26a2aa11,\n    (q31_t)0xd01ce2b, (q31_t)0x26acadff, (q31_t)0xd096725, (q31_t)0x26b6b070,\n    (q31_t)0xd110216, (q31_t)0x26c0b162, (q31_t)0xd189efe, (q31_t)0x26cab0d6,\n    (q31_t)0xd203ddc, (q31_t)0x26d4aecb, (q31_t)0xd27deb0, (q31_t)0x26deab41,\n    (q31_t)0xd2f817b, (q31_t)0x26e8a637, (q31_t)0xd37263a, (q31_t)0x26f29fad,\n    (q31_t)0xd3eccef, (q31_t)0x26fc97a3, (q31_t)0xd467599, (q31_t)0x27068e18,\n    (q31_t)0xd4e2037, (q31_t)0x2710830c, (q31_t)0xd55ccca, (q31_t)0x271a767e,\n    (q31_t)0xd5d7b50, (q31_t)0x2724686e, (q31_t)0xd652bcb, (q31_t)0x272e58dc,\n    (q31_t)0xd6cde39, (q31_t)0x273847c8, (q31_t)0xd74929a, (q31_t)0x27423530,\n    (q31_t)0xd7c48ee, (q31_t)0x274c2115, (q31_t)0xd840134, (q31_t)0x27560b76,\n    (q31_t)0xd8bbb6d, (q31_t)0x275ff452, (q31_t)0xd937798, (q31_t)0x2769dbaa,\n    (q31_t)0xd9b35b4, (q31_t)0x2773c17d, (q31_t)0xda2f5c2, (q31_t)0x277da5cb,\n    (q31_t)0xdaab7c0, (q31_t)0x27878893, (q31_t)0xdb27bb0, (q31_t)0x279169d5,\n    (q31_t)0xdba4190, (q31_t)0x279b4990, (q31_t)0xdc20960, (q31_t)0x27a527c4,\n    (q31_t)0xdc9d320, (q31_t)0x27af0472, (q31_t)0xdd19ed0, (q31_t)0x27b8df97,\n    (q31_t)0xdd96c6f, (q31_t)0x27c2b934, (q31_t)0xde13bfd, (q31_t)0x27cc9149,\n    (q31_t)0xde90d79, (q31_t)0x27d667d5, (q31_t)0xdf0e0e4, (q31_t)0x27e03cd8,\n    (q31_t)0xdf8b63d, (q31_t)0x27ea1052, (q31_t)0xe008d84, (q31_t)0x27f3e241,\n    (q31_t)0xe0866b8, (q31_t)0x27fdb2a7, (q31_t)0xe1041d9, (q31_t)0x28078181,\n    (q31_t)0xe181ee8, (q31_t)0x28114ed0, (q31_t)0xe1ffde2, (q31_t)0x281b1a94,\n    (q31_t)0xe27dec9, (q31_t)0x2824e4cc, (q31_t)0xe2fc19c, (q31_t)0x282ead78,\n    (q31_t)0xe37a65b, (q31_t)0x28387498, (q31_t)0xe3f8d05, (q31_t)0x28423a2a,\n    (q31_t)0xe47759a, (q31_t)0x284bfe2f, (q31_t)0xe4f6019, (q31_t)0x2855c0a6,\n    (q31_t)0xe574c84, (q31_t)0x285f8190, (q31_t)0xe5f3ad8, (q31_t)0x286940ea,\n    (q31_t)0xe672b16, (q31_t)0x2872feb6, (q31_t)0xe6f1d3d, (q31_t)0x287cbaf3,\n    (q31_t)0xe77114e, (q31_t)0x288675a0, (q31_t)0xe7f0748, (q31_t)0x28902ebd,\n    (q31_t)0xe86ff2a, (q31_t)0x2899e64a, (q31_t)0xe8ef8f4, (q31_t)0x28a39c46,\n    (q31_t)0xe96f4a7, (q31_t)0x28ad50b1, (q31_t)0xe9ef241, (q31_t)0x28b7038b,\n    (q31_t)0xea6f1c2, (q31_t)0x28c0b4d2, (q31_t)0xeaef32b, (q31_t)0x28ca6488,\n    (q31_t)0xeb6f67a, (q31_t)0x28d412ab, (q31_t)0xebefbb0, (q31_t)0x28ddbf3b,\n    (q31_t)0xec702cb, (q31_t)0x28e76a37, (q31_t)0xecf0bcd, (q31_t)0x28f113a0,\n    (q31_t)0xed716b4, (q31_t)0x28fabb75, (q31_t)0xedf2380, (q31_t)0x290461b5,\n    (q31_t)0xee73231, (q31_t)0x290e0661, (q31_t)0xeef42c7, (q31_t)0x2917a977,\n    (q31_t)0xef75541, (q31_t)0x29214af8, (q31_t)0xeff699f, (q31_t)0x292aeae3,\n    (q31_t)0xf077fe1, (q31_t)0x29348937, (q31_t)0xf0f9805, (q31_t)0x293e25f5,\n    (q31_t)0xf17b20d, (q31_t)0x2947c11c, (q31_t)0xf1fcdf8, (q31_t)0x29515aab,\n    (q31_t)0xf27ebc5, (q31_t)0x295af2a3, (q31_t)0xf300b74, (q31_t)0x29648902,\n    (q31_t)0xf382d05, (q31_t)0x296e1dc9, (q31_t)0xf405077, (q31_t)0x2977b0f7,\n    (q31_t)0xf4875ca, (q31_t)0x2981428c, (q31_t)0xf509cfe, (q31_t)0x298ad287,\n    (q31_t)0xf58c613, (q31_t)0x299460e8, (q31_t)0xf60f108, (q31_t)0x299dedaf,\n    (q31_t)0xf691ddd, (q31_t)0x29a778db, (q31_t)0xf714c91, (q31_t)0x29b1026c,\n    (q31_t)0xf797d24, (q31_t)0x29ba8a61, (q31_t)0xf81af97, (q31_t)0x29c410ba,\n    (q31_t)0xf89e3e8, (q31_t)0x29cd9578, (q31_t)0xf921a17, (q31_t)0x29d71899,\n    (q31_t)0xf9a5225, (q31_t)0x29e09a1c, (q31_t)0xfa28c10, (q31_t)0x29ea1a03,\n    (q31_t)0xfaac7d8, (q31_t)0x29f3984c, (q31_t)0xfb3057d, (q31_t)0x29fd14f6,\n    (q31_t)0xfbb4500, (q31_t)0x2a069003, (q31_t)0xfc3865e, (q31_t)0x2a100970,\n    (q31_t)0xfcbc999, (q31_t)0x2a19813f, (q31_t)0xfd40eaf, (q31_t)0x2a22f76e,\n    (q31_t)0xfdc55a1, (q31_t)0x2a2c6bfd, (q31_t)0xfe49e6d, (q31_t)0x2a35deeb,\n    (q31_t)0xfece915, (q31_t)0x2a3f503a, (q31_t)0xff53597, (q31_t)0x2a48bfe7,\n    (q31_t)0xffd83f4, (q31_t)0x2a522df3, (q31_t)0x1005d42a, (q31_t)0x2a5b9a5d,\n    (q31_t)0x100e2639, (q31_t)0x2a650525, (q31_t)0x10167a22, (q31_t)0x2a6e6e4b,\n    (q31_t)0x101ecfe4, (q31_t)0x2a77d5ce, (q31_t)0x1027277e, (q31_t)0x2a813bae,\n    (q31_t)0x102f80f1, (q31_t)0x2a8a9fea, (q31_t)0x1037dc3b, (q31_t)0x2a940283,\n    (q31_t)0x1040395d, (q31_t)0x2a9d6377, (q31_t)0x10489856, (q31_t)0x2aa6c2c6,\n    (q31_t)0x1050f926, (q31_t)0x2ab02071, (q31_t)0x10595bcd, (q31_t)0x2ab97c77,\n    (q31_t)0x1061c04a, (q31_t)0x2ac2d6d6, (q31_t)0x106a269d, (q31_t)0x2acc2f90,\n    (q31_t)0x10728ec6, (q31_t)0x2ad586a3, (q31_t)0x107af8c4, (q31_t)0x2adedc10,\n    (q31_t)0x10836497, (q31_t)0x2ae82fd5, (q31_t)0x108bd23f, (q31_t)0x2af181f3,\n    (q31_t)0x109441bb, (q31_t)0x2afad269, (q31_t)0x109cb30b, (q31_t)0x2b042137,\n    (q31_t)0x10a5262f, (q31_t)0x2b0d6e5c, (q31_t)0x10ad9b26, (q31_t)0x2b16b9d9,\n    (q31_t)0x10b611f1, (q31_t)0x2b2003ac, (q31_t)0x10be8a8d, (q31_t)0x2b294bd5,\n    (q31_t)0x10c704fd, (q31_t)0x2b329255, (q31_t)0x10cf813e, (q31_t)0x2b3bd72a,\n    (q31_t)0x10d7ff51, (q31_t)0x2b451a55, (q31_t)0x10e07f36, (q31_t)0x2b4e5bd4,\n    (q31_t)0x10e900ec, (q31_t)0x2b579ba8, (q31_t)0x10f18472, (q31_t)0x2b60d9d0,\n    (q31_t)0x10fa09c9, (q31_t)0x2b6a164d, (q31_t)0x110290f0, (q31_t)0x2b73511c,\n    (q31_t)0x110b19e7, (q31_t)0x2b7c8a3f, (q31_t)0x1113a4ad, (q31_t)0x2b85c1b5,\n    (q31_t)0x111c3142, (q31_t)0x2b8ef77d, (q31_t)0x1124bfa6, (q31_t)0x2b982b97,\n    (q31_t)0x112d4fd9, (q31_t)0x2ba15e03, (q31_t)0x1135e1d9, (q31_t)0x2baa8ec0,\n    (q31_t)0x113e75a8, (q31_t)0x2bb3bdce, (q31_t)0x11470b44, (q31_t)0x2bbceb2d,\n    (q31_t)0x114fa2ad, (q31_t)0x2bc616dd, (q31_t)0x11583be2, (q31_t)0x2bcf40dc,\n    (q31_t)0x1160d6e5, (q31_t)0x2bd8692b, (q31_t)0x116973b3, (q31_t)0x2be18fc9,\n    (q31_t)0x1172124d, (q31_t)0x2beab4b6, (q31_t)0x117ab2b3, (q31_t)0x2bf3d7f2,\n    (q31_t)0x118354e4, (q31_t)0x2bfcf97c, (q31_t)0x118bf8e0, (q31_t)0x2c061953,\n    (q31_t)0x11949ea6, (q31_t)0x2c0f3779, (q31_t)0x119d4636, (q31_t)0x2c1853eb,\n    (q31_t)0x11a5ef90, (q31_t)0x2c216eaa, (q31_t)0x11ae9ab4, (q31_t)0x2c2a87b6,\n    (q31_t)0x11b747a0, (q31_t)0x2c339f0e, (q31_t)0x11bff656, (q31_t)0x2c3cb4b1,\n    (q31_t)0x11c8a6d4, (q31_t)0x2c45c8a0, (q31_t)0x11d1591a, (q31_t)0x2c4edada,\n    (q31_t)0x11da0d28, (q31_t)0x2c57eb5e, (q31_t)0x11e2c2fd, (q31_t)0x2c60fa2d,\n    (q31_t)0x11eb7a9a, (q31_t)0x2c6a0746, (q31_t)0x11f433fd, (q31_t)0x2c7312a9,\n    (q31_t)0x11fcef27, (q31_t)0x2c7c1c55, (q31_t)0x1205ac17, (q31_t)0x2c85244a,\n    (q31_t)0x120e6acc, (q31_t)0x2c8e2a87, (q31_t)0x12172b48, (q31_t)0x2c972f0d,\n    (q31_t)0x121fed88, (q31_t)0x2ca031da, (q31_t)0x1228b18d, (q31_t)0x2ca932ef,\n    (q31_t)0x12317756, (q31_t)0x2cb2324c, (q31_t)0x123a3ee4, (q31_t)0x2cbb2fef,\n    (q31_t)0x12430835, (q31_t)0x2cc42bd9, (q31_t)0x124bd34a, (q31_t)0x2ccd2609,\n    (q31_t)0x1254a021, (q31_t)0x2cd61e7f, (q31_t)0x125d6ebc, (q31_t)0x2cdf153a,\n    (q31_t)0x12663f19, (q31_t)0x2ce80a3a, (q31_t)0x126f1138, (q31_t)0x2cf0fd80,\n    (q31_t)0x1277e518, (q31_t)0x2cf9ef09, (q31_t)0x1280babb, (q31_t)0x2d02ded7,\n    (q31_t)0x1289921e, (q31_t)0x2d0bcce8, (q31_t)0x12926b41, (q31_t)0x2d14b93d,\n    (q31_t)0x129b4626, (q31_t)0x2d1da3d5, (q31_t)0x12a422ca, (q31_t)0x2d268cb0,\n    (q31_t)0x12ad012e, (q31_t)0x2d2f73cd, (q31_t)0x12b5e151, (q31_t)0x2d38592c,\n    (q31_t)0x12bec333, (q31_t)0x2d413ccd, (q31_t)0x12c7a6d4, (q31_t)0x2d4a1eaf,\n    (q31_t)0x12d08c33, (q31_t)0x2d52fed2, (q31_t)0x12d97350, (q31_t)0x2d5bdd36,\n    (q31_t)0x12e25c2b, (q31_t)0x2d64b9da, (q31_t)0x12eb46c3, (q31_t)0x2d6d94bf,\n    (q31_t)0x12f43318, (q31_t)0x2d766de2, (q31_t)0x12fd2129, (q31_t)0x2d7f4545,\n    (q31_t)0x130610f7, (q31_t)0x2d881ae8, (q31_t)0x130f0280, (q31_t)0x2d90eec8,\n    (q31_t)0x1317f5c6, (q31_t)0x2d99c0e7, (q31_t)0x1320eac6, (q31_t)0x2da29144,\n    (q31_t)0x1329e181, (q31_t)0x2dab5fdf, (q31_t)0x1332d9f7, (q31_t)0x2db42cb6,\n    (q31_t)0x133bd427, (q31_t)0x2dbcf7cb, (q31_t)0x1344d011, (q31_t)0x2dc5c11c,\n    (q31_t)0x134dcdb4, (q31_t)0x2dce88aa, (q31_t)0x1356cd11, (q31_t)0x2dd74e73,\n    (q31_t)0x135fce26, (q31_t)0x2de01278, (q31_t)0x1368d0f3, (q31_t)0x2de8d4b8,\n    (q31_t)0x1371d579, (q31_t)0x2df19534, (q31_t)0x137adbb6, (q31_t)0x2dfa53e9,\n    (q31_t)0x1383e3ab, (q31_t)0x2e0310d9, (q31_t)0x138ced57, (q31_t)0x2e0bcc03,\n    (q31_t)0x1395f8ba, (q31_t)0x2e148566, (q31_t)0x139f05d3, (q31_t)0x2e1d3d03,\n    (q31_t)0x13a814a2, (q31_t)0x2e25f2d8, (q31_t)0x13b12526, (q31_t)0x2e2ea6e6,\n    (q31_t)0x13ba3760, (q31_t)0x2e37592c, (q31_t)0x13c34b4f, (q31_t)0x2e4009aa,\n    (q31_t)0x13cc60f2, (q31_t)0x2e48b860, (q31_t)0x13d5784a, (q31_t)0x2e51654c,\n    (q31_t)0x13de9156, (q31_t)0x2e5a1070, (q31_t)0x13e7ac15, (q31_t)0x2e62b9ca,\n    (q31_t)0x13f0c887, (q31_t)0x2e6b615a, (q31_t)0x13f9e6ad, (q31_t)0x2e740720,\n    (q31_t)0x14030684, (q31_t)0x2e7cab1c, (q31_t)0x140c280e, (q31_t)0x2e854d4d,\n    (q31_t)0x14154b4a, (q31_t)0x2e8dedb3, (q31_t)0x141e7037, (q31_t)0x2e968c4d,\n    (q31_t)0x142796d5, (q31_t)0x2e9f291b, (q31_t)0x1430bf24, (q31_t)0x2ea7c41e,\n    (q31_t)0x1439e923, (q31_t)0x2eb05d53, (q31_t)0x144314d3, (q31_t)0x2eb8f4bc,\n    (q31_t)0x144c4232, (q31_t)0x2ec18a58, (q31_t)0x14557140, (q31_t)0x2eca1e27,\n    (q31_t)0x145ea1fd, (q31_t)0x2ed2b027, (q31_t)0x1467d469, (q31_t)0x2edb405a,\n    (q31_t)0x14710883, (q31_t)0x2ee3cebe, (q31_t)0x147a3e4b, (q31_t)0x2eec5b53,\n    (q31_t)0x148375c1, (q31_t)0x2ef4e619, (q31_t)0x148caee4, (q31_t)0x2efd6f10,\n    (q31_t)0x1495e9b3, (q31_t)0x2f05f637, (q31_t)0x149f2630, (q31_t)0x2f0e7b8e,\n    (q31_t)0x14a86458, (q31_t)0x2f16ff14, (q31_t)0x14b1a42c, (q31_t)0x2f1f80ca,\n    (q31_t)0x14bae5ab, (q31_t)0x2f2800af, (q31_t)0x14c428d6, (q31_t)0x2f307ec2,\n    (q31_t)0x14cd6dab, (q31_t)0x2f38fb03, (q31_t)0x14d6b42b, (q31_t)0x2f417573,\n    (q31_t)0x14dffc54, (q31_t)0x2f49ee0f, (q31_t)0x14e94627, (q31_t)0x2f5264da,\n    (q31_t)0x14f291a4, (q31_t)0x2f5ad9d1, (q31_t)0x14fbdec9, (q31_t)0x2f634cf5,\n    (q31_t)0x15052d97, (q31_t)0x2f6bbe45, (q31_t)0x150e7e0d, (q31_t)0x2f742dc1,\n    (q31_t)0x1517d02b, (q31_t)0x2f7c9b69, (q31_t)0x152123f0, (q31_t)0x2f85073c,\n    (q31_t)0x152a795d, (q31_t)0x2f8d713a, (q31_t)0x1533d070, (q31_t)0x2f95d963,\n    (q31_t)0x153d292a, (q31_t)0x2f9e3fb6, (q31_t)0x15468389, (q31_t)0x2fa6a433,\n    (q31_t)0x154fdf8f, (q31_t)0x2faf06da, (q31_t)0x15593d3a, (q31_t)0x2fb767aa,\n    (q31_t)0x15629c89, (q31_t)0x2fbfc6a3, (q31_t)0x156bfd7d, (q31_t)0x2fc823c5,\n    (q31_t)0x15756016, (q31_t)0x2fd07f0f, (q31_t)0x157ec452, (q31_t)0x2fd8d882,\n    (q31_t)0x15882a32, (q31_t)0x2fe1301c, (q31_t)0x159191b5, (q31_t)0x2fe985de,\n    (q31_t)0x159afadb, (q31_t)0x2ff1d9c7, (q31_t)0x15a465a3, (q31_t)0x2ffa2bd6,\n    (q31_t)0x15add20d, (q31_t)0x30027c0c, (q31_t)0x15b74019, (q31_t)0x300aca69,\n    (q31_t)0x15c0afc6, (q31_t)0x301316eb, (q31_t)0x15ca2115, (q31_t)0x301b6193,\n    (q31_t)0x15d39403, (q31_t)0x3023aa5f, (q31_t)0x15dd0892, (q31_t)0x302bf151,\n    (q31_t)0x15e67ec1, (q31_t)0x30343667, (q31_t)0x15eff690, (q31_t)0x303c79a2,\n    (q31_t)0x15f96ffd, (q31_t)0x3044bb00, (q31_t)0x1602eb0a, (q31_t)0x304cfa83,\n    (q31_t)0x160c67b4, (q31_t)0x30553828, (q31_t)0x1615e5fd, (q31_t)0x305d73f0,\n    (q31_t)0x161f65e4, (q31_t)0x3065addb, (q31_t)0x1628e767, (q31_t)0x306de5e9,\n    (q31_t)0x16326a88, (q31_t)0x30761c18, (q31_t)0x163bef46, (q31_t)0x307e5069,\n    (q31_t)0x1645759f, (q31_t)0x308682dc, (q31_t)0x164efd94, (q31_t)0x308eb36f,\n    (q31_t)0x16588725, (q31_t)0x3096e223, (q31_t)0x16621251, (q31_t)0x309f0ef8,\n    (q31_t)0x166b9f18, (q31_t)0x30a739ed, (q31_t)0x16752d79, (q31_t)0x30af6302,\n    (q31_t)0x167ebd74, (q31_t)0x30b78a36, (q31_t)0x16884f09, (q31_t)0x30bfaf89,\n    (q31_t)0x1691e237, (q31_t)0x30c7d2fb, (q31_t)0x169b76fe, (q31_t)0x30cff48c,\n    (q31_t)0x16a50d5d, (q31_t)0x30d8143b, (q31_t)0x16aea555, (q31_t)0x30e03208,\n    (q31_t)0x16b83ee4, (q31_t)0x30e84df3, (q31_t)0x16c1da0b, (q31_t)0x30f067fb,\n    (q31_t)0x16cb76c9, (q31_t)0x30f8801f, (q31_t)0x16d5151d, (q31_t)0x31009661,\n    (q31_t)0x16deb508, (q31_t)0x3108aabf, (q31_t)0x16e85689, (q31_t)0x3110bd39,\n    (q31_t)0x16f1f99f, (q31_t)0x3118cdcf, (q31_t)0x16fb9e4b, (q31_t)0x3120dc80,\n    (q31_t)0x1705448b, (q31_t)0x3128e94c, (q31_t)0x170eec60, (q31_t)0x3130f433,\n    (q31_t)0x171895c9, (q31_t)0x3138fd35, (q31_t)0x172240c5, (q31_t)0x31410450,\n    (q31_t)0x172bed55, (q31_t)0x31490986, (q31_t)0x17359b78, (q31_t)0x31510cd5,\n    (q31_t)0x173f4b2e, (q31_t)0x31590e3e, (q31_t)0x1748fc75, (q31_t)0x31610dbf,\n    (q31_t)0x1752af4f, (q31_t)0x31690b59, (q31_t)0x175c63ba, (q31_t)0x3171070c,\n    (q31_t)0x176619b6, (q31_t)0x317900d6, (q31_t)0x176fd143, (q31_t)0x3180f8b8,\n    (q31_t)0x17798a60, (q31_t)0x3188eeb2, (q31_t)0x1783450d, (q31_t)0x3190e2c3,\n    (q31_t)0x178d014a, (q31_t)0x3198d4ea, (q31_t)0x1796bf16, (q31_t)0x31a0c528,\n    (q31_t)0x17a07e70, (q31_t)0x31a8b37c, (q31_t)0x17aa3f5a, (q31_t)0x31b09fe7,\n    (q31_t)0x17b401d1, (q31_t)0x31b88a66, (q31_t)0x17bdc5d6, (q31_t)0x31c072fb,\n    (q31_t)0x17c78b68, (q31_t)0x31c859a5, (q31_t)0x17d15288, (q31_t)0x31d03e64,\n    (q31_t)0x17db1b34, (q31_t)0x31d82137, (q31_t)0x17e4e56c, (q31_t)0x31e0021e,\n    (q31_t)0x17eeb130, (q31_t)0x31e7e118, (q31_t)0x17f87e7f, (q31_t)0x31efbe27,\n    (q31_t)0x18024d59, (q31_t)0x31f79948, (q31_t)0x180c1dbf, (q31_t)0x31ff727c,\n    (q31_t)0x1815efae, (q31_t)0x320749c3, (q31_t)0x181fc328, (q31_t)0x320f1f1c,\n    (q31_t)0x1829982b, (q31_t)0x3216f287, (q31_t)0x18336eb7, (q31_t)0x321ec403,\n    (q31_t)0x183d46cc, (q31_t)0x32269391, (q31_t)0x18472069, (q31_t)0x322e6130,\n    (q31_t)0x1850fb8e, (q31_t)0x32362ce0, (q31_t)0x185ad83c, (q31_t)0x323df6a0,\n    (q31_t)0x1864b670, (q31_t)0x3245be70, (q31_t)0x186e962b, (q31_t)0x324d8450,\n    (q31_t)0x1878776d, (q31_t)0x32554840, (q31_t)0x18825a35, (q31_t)0x325d0a3e,\n    (q31_t)0x188c3e83, (q31_t)0x3264ca4c, (q31_t)0x18962456, (q31_t)0x326c8868,\n    (q31_t)0x18a00bae, (q31_t)0x32744493, (q31_t)0x18a9f48a, (q31_t)0x327bfecc,\n    (q31_t)0x18b3deeb, (q31_t)0x3283b712, (q31_t)0x18bdcad0, (q31_t)0x328b6d66,\n    (q31_t)0x18c7b838, (q31_t)0x329321c7, (q31_t)0x18d1a724, (q31_t)0x329ad435,\n    (q31_t)0x18db9792, (q31_t)0x32a284b0, (q31_t)0x18e58982, (q31_t)0x32aa3336,\n    (q31_t)0x18ef7cf4, (q31_t)0x32b1dfc9, (q31_t)0x18f971e8, (q31_t)0x32b98a67,\n    (q31_t)0x1903685d, (q31_t)0x32c13311, (q31_t)0x190d6053, (q31_t)0x32c8d9c6,\n    (q31_t)0x191759c9, (q31_t)0x32d07e85, (q31_t)0x192154bf, (q31_t)0x32d82150,\n    (q31_t)0x192b5135, (q31_t)0x32dfc224, (q31_t)0x19354f2a, (q31_t)0x32e76102,\n    (q31_t)0x193f4e9e, (q31_t)0x32eefdea, (q31_t)0x19494f90, (q31_t)0x32f698db,\n    (q31_t)0x19535201, (q31_t)0x32fe31d5, (q31_t)0x195d55ef, (q31_t)0x3305c8d7,\n    (q31_t)0x19675b5a, (q31_t)0x330d5de3, (q31_t)0x19716243, (q31_t)0x3314f0f6,\n    (q31_t)0x197b6aa8, (q31_t)0x331c8211, (q31_t)0x19857489, (q31_t)0x33241134,\n    (q31_t)0x198f7fe6, (q31_t)0x332b9e5e, (q31_t)0x19998cbe, (q31_t)0x3333298f,\n    (q31_t)0x19a39b11, (q31_t)0x333ab2c6, (q31_t)0x19adaadf, (q31_t)0x33423a04,\n    (q31_t)0x19b7bc27, (q31_t)0x3349bf48, (q31_t)0x19c1cee9, (q31_t)0x33514292,\n    (q31_t)0x19cbe325, (q31_t)0x3358c3e2, (q31_t)0x19d5f8d9, (q31_t)0x33604336,\n    (q31_t)0x19e01006, (q31_t)0x3367c090, (q31_t)0x19ea28ac, (q31_t)0x336f3bee,\n    (q31_t)0x19f442c9, (q31_t)0x3376b551, (q31_t)0x19fe5e5e, (q31_t)0x337e2cb7,\n    (q31_t)0x1a087b69, (q31_t)0x3385a222, (q31_t)0x1a1299ec, (q31_t)0x338d1590,\n    (q31_t)0x1a1cb9e5, (q31_t)0x33948701, (q31_t)0x1a26db54, (q31_t)0x339bf675,\n    (q31_t)0x1a30fe38, (q31_t)0x33a363ec, (q31_t)0x1a3b2292, (q31_t)0x33aacf65,\n    (q31_t)0x1a454860, (q31_t)0x33b238e0, (q31_t)0x1a4f6fa3, (q31_t)0x33b9a05d,\n    (q31_t)0x1a599859, (q31_t)0x33c105db, (q31_t)0x1a63c284, (q31_t)0x33c8695b,\n    (q31_t)0x1a6dee21, (q31_t)0x33cfcadc, (q31_t)0x1a781b31, (q31_t)0x33d72a5d,\n    (q31_t)0x1a8249b4, (q31_t)0x33de87de, (q31_t)0x1a8c79a9, (q31_t)0x33e5e360,\n    (q31_t)0x1a96ab0f, (q31_t)0x33ed3ce1, (q31_t)0x1aa0dde7, (q31_t)0x33f49462,\n    (q31_t)0x1aab122f, (q31_t)0x33fbe9e2, (q31_t)0x1ab547e8, (q31_t)0x34033d61,\n    (q31_t)0x1abf7f11, (q31_t)0x340a8edf, (q31_t)0x1ac9b7a9, (q31_t)0x3411de5b,\n    (q31_t)0x1ad3f1b1, (q31_t)0x34192bd5, (q31_t)0x1ade2d28, (q31_t)0x3420774d,\n    (q31_t)0x1ae86a0d, (q31_t)0x3427c0c3, (q31_t)0x1af2a860, (q31_t)0x342f0836,\n    (q31_t)0x1afce821, (q31_t)0x34364da6, (q31_t)0x1b072950, (q31_t)0x343d9112,\n    (q31_t)0x1b116beb, (q31_t)0x3444d27b, (q31_t)0x1b1baff2, (q31_t)0x344c11e0,\n    (q31_t)0x1b25f566, (q31_t)0x34534f41, (q31_t)0x1b303c46, (q31_t)0x345a8a9d,\n    (q31_t)0x1b3a8491, (q31_t)0x3461c3f5, (q31_t)0x1b44ce46, (q31_t)0x3468fb47,\n    (q31_t)0x1b4f1967, (q31_t)0x34703095, (q31_t)0x1b5965f1, (q31_t)0x347763dd,\n    (q31_t)0x1b63b3e5, (q31_t)0x347e951f, (q31_t)0x1b6e0342, (q31_t)0x3485c45b,\n    (q31_t)0x1b785409, (q31_t)0x348cf190, (q31_t)0x1b82a638, (q31_t)0x34941cbf,\n    (q31_t)0x1b8cf9cf, (q31_t)0x349b45e7, (q31_t)0x1b974ece, (q31_t)0x34a26d08,\n    (q31_t)0x1ba1a534, (q31_t)0x34a99221, (q31_t)0x1babfd01, (q31_t)0x34b0b533,\n    (q31_t)0x1bb65634, (q31_t)0x34b7d63c, (q31_t)0x1bc0b0ce, (q31_t)0x34bef53d,\n    (q31_t)0x1bcb0cce, (q31_t)0x34c61236, (q31_t)0x1bd56a32, (q31_t)0x34cd2d26,\n    (q31_t)0x1bdfc8fc, (q31_t)0x34d4460c, (q31_t)0x1bea292b, (q31_t)0x34db5cea,\n    (q31_t)0x1bf48abd, (q31_t)0x34e271bd, (q31_t)0x1bfeedb3, (q31_t)0x34e98487,\n    (q31_t)0x1c09520d, (q31_t)0x34f09546, (q31_t)0x1c13b7c9, (q31_t)0x34f7a3fb,\n    (q31_t)0x1c1e1ee9, (q31_t)0x34feb0a5, (q31_t)0x1c28876a, (q31_t)0x3505bb44,\n    (q31_t)0x1c32f14d, (q31_t)0x350cc3d8, (q31_t)0x1c3d5c91, (q31_t)0x3513ca60,\n    (q31_t)0x1c47c936, (q31_t)0x351acedd, (q31_t)0x1c52373c, (q31_t)0x3521d14d,\n    (q31_t)0x1c5ca6a2, (q31_t)0x3528d1b1, (q31_t)0x1c671768, (q31_t)0x352fd008,\n    (q31_t)0x1c71898d, (q31_t)0x3536cc52, (q31_t)0x1c7bfd11, (q31_t)0x353dc68f,\n    (q31_t)0x1c8671f3, (q31_t)0x3544bebf, (q31_t)0x1c90e834, (q31_t)0x354bb4e1,\n    (q31_t)0x1c9b5fd2, (q31_t)0x3552a8f4, (q31_t)0x1ca5d8cd, (q31_t)0x35599afa,\n    (q31_t)0x1cb05326, (q31_t)0x35608af1, (q31_t)0x1cbacedb, (q31_t)0x356778d9,\n    (q31_t)0x1cc54bec, (q31_t)0x356e64b2, (q31_t)0x1ccfca59, (q31_t)0x35754e7c,\n    (q31_t)0x1cda4a21, (q31_t)0x357c3636, (q31_t)0x1ce4cb44, (q31_t)0x35831be0,\n    (q31_t)0x1cef4dc2, (q31_t)0x3589ff7a, (q31_t)0x1cf9d199, (q31_t)0x3590e104,\n    (q31_t)0x1d0456ca, (q31_t)0x3597c07d, (q31_t)0x1d0edd55, (q31_t)0x359e9de5,\n    (q31_t)0x1d196538, (q31_t)0x35a5793c, (q31_t)0x1d23ee74, (q31_t)0x35ac5282,\n    (q31_t)0x1d2e7908, (q31_t)0x35b329b5, (q31_t)0x1d3904f4, (q31_t)0x35b9fed7,\n    (q31_t)0x1d439236, (q31_t)0x35c0d1e7, (q31_t)0x1d4e20d0, (q31_t)0x35c7a2e3,\n    (q31_t)0x1d58b0c0, (q31_t)0x35ce71ce, (q31_t)0x1d634206, (q31_t)0x35d53ea5,\n    (q31_t)0x1d6dd4a2, (q31_t)0x35dc0968, (q31_t)0x1d786892, (q31_t)0x35e2d219,\n    (q31_t)0x1d82fdd8, (q31_t)0x35e998b5, (q31_t)0x1d8d9472, (q31_t)0x35f05d3d,\n    (q31_t)0x1d982c60, (q31_t)0x35f71fb1, (q31_t)0x1da2c5a2, (q31_t)0x35fde011,\n    (q31_t)0x1dad6036, (q31_t)0x36049e5b, (q31_t)0x1db7fc1e, (q31_t)0x360b5a90,\n    (q31_t)0x1dc29958, (q31_t)0x361214b0, (q31_t)0x1dcd37e4, (q31_t)0x3618ccba,\n    (q31_t)0x1dd7d7c1, (q31_t)0x361f82af, (q31_t)0x1de278ef, (q31_t)0x3626368d,\n    (q31_t)0x1ded1b6e, (q31_t)0x362ce855, (q31_t)0x1df7bf3e, (q31_t)0x36339806,\n    (q31_t)0x1e02645d, (q31_t)0x363a45a0, (q31_t)0x1e0d0acc, (q31_t)0x3640f123,\n    (q31_t)0x1e17b28a, (q31_t)0x36479a8e, (q31_t)0x1e225b96, (q31_t)0x364e41e2,\n    (q31_t)0x1e2d05f1, (q31_t)0x3654e71d, (q31_t)0x1e37b199, (q31_t)0x365b8a41,\n    (q31_t)0x1e425e8f, (q31_t)0x36622b4c, (q31_t)0x1e4d0cd2, (q31_t)0x3668ca3e,\n    (q31_t)0x1e57bc62, (q31_t)0x366f6717, (q31_t)0x1e626d3e, (q31_t)0x367601d7,\n    (q31_t)0x1e6d1f65, (q31_t)0x367c9a7e, (q31_t)0x1e77d2d8, (q31_t)0x3683310b,\n    (q31_t)0x1e828796, (q31_t)0x3689c57d, (q31_t)0x1e8d3d9e, (q31_t)0x369057d6,\n    (q31_t)0x1e97f4f1, (q31_t)0x3696e814, (q31_t)0x1ea2ad8d, (q31_t)0x369d7637,\n    (q31_t)0x1ead6773, (q31_t)0x36a4023f, (q31_t)0x1eb822a1, (q31_t)0x36aa8c2c,\n    (q31_t)0x1ec2df18, (q31_t)0x36b113fd, (q31_t)0x1ecd9cd7, (q31_t)0x36b799b3,\n    (q31_t)0x1ed85bdd, (q31_t)0x36be1d4c, (q31_t)0x1ee31c2b, (q31_t)0x36c49ec9,\n    (q31_t)0x1eedddc0, (q31_t)0x36cb1e2a, (q31_t)0x1ef8a09b, (q31_t)0x36d19b6e,\n    (q31_t)0x1f0364bc, (q31_t)0x36d81695, (q31_t)0x1f0e2a22, (q31_t)0x36de8f9e,\n    (q31_t)0x1f18f0ce, (q31_t)0x36e5068a, (q31_t)0x1f23b8be, (q31_t)0x36eb7b58,\n    (q31_t)0x1f2e81f3, (q31_t)0x36f1ee09, (q31_t)0x1f394c6b, (q31_t)0x36f85e9a,\n    (q31_t)0x1f441828, (q31_t)0x36fecd0e, (q31_t)0x1f4ee527, (q31_t)0x37053962,\n    (q31_t)0x1f59b369, (q31_t)0x370ba398, (q31_t)0x1f6482ed, (q31_t)0x37120bae,\n    (q31_t)0x1f6f53b3, (q31_t)0x371871a5, (q31_t)0x1f7a25ba, (q31_t)0x371ed57c,\n    (q31_t)0x1f84f902, (q31_t)0x37253733, (q31_t)0x1f8fcd8b, (q31_t)0x372b96ca,\n    (q31_t)0x1f9aa354, (q31_t)0x3731f440, (q31_t)0x1fa57a5d, (q31_t)0x37384f95,\n    (q31_t)0x1fb052a5, (q31_t)0x373ea8ca, (q31_t)0x1fbb2c2c, (q31_t)0x3744ffdd,\n    (q31_t)0x1fc606f1, (q31_t)0x374b54ce, (q31_t)0x1fd0e2f5, (q31_t)0x3751a79e,\n    (q31_t)0x1fdbc036, (q31_t)0x3757f84c, (q31_t)0x1fe69eb4, (q31_t)0x375e46d8,\n    (q31_t)0x1ff17e70, (q31_t)0x37649341, (q31_t)0x1ffc5f67, (q31_t)0x376add88,\n    (q31_t)0x2007419b, (q31_t)0x377125ac, (q31_t)0x2012250a, (q31_t)0x37776bac,\n    (q31_t)0x201d09b4, (q31_t)0x377daf89, (q31_t)0x2027ef99, (q31_t)0x3783f143,\n    (q31_t)0x2032d6b8, (q31_t)0x378a30d8, (q31_t)0x203dbf11, (q31_t)0x37906e49,\n    (q31_t)0x2048a8a4, (q31_t)0x3796a996, (q31_t)0x2053936f, (q31_t)0x379ce2be,\n    (q31_t)0x205e7f74, (q31_t)0x37a319c2, (q31_t)0x20696cb0, (q31_t)0x37a94ea0,\n    (q31_t)0x20745b24, (q31_t)0x37af8159, (q31_t)0x207f4acf, (q31_t)0x37b5b1ec,\n    (q31_t)0x208a3bb2, (q31_t)0x37bbe05a, (q31_t)0x20952dcb, (q31_t)0x37c20ca1,\n    (q31_t)0x20a0211a, (q31_t)0x37c836c2, (q31_t)0x20ab159e, (q31_t)0x37ce5ebd,\n    (q31_t)0x20b60b58, (q31_t)0x37d48490, (q31_t)0x20c10247, (q31_t)0x37daa83d,\n    (q31_t)0x20cbfa6a, (q31_t)0x37e0c9c3, (q31_t)0x20d6f3c1, (q31_t)0x37e6e921,\n    (q31_t)0x20e1ee4b, (q31_t)0x37ed0657, (q31_t)0x20ecea09, (q31_t)0x37f32165,\n    (q31_t)0x20f7e6f9, (q31_t)0x37f93a4b, (q31_t)0x2102e51c, (q31_t)0x37ff5109,\n    (q31_t)0x210de470, (q31_t)0x3805659e, (q31_t)0x2118e4f6, (q31_t)0x380b780a,\n    (q31_t)0x2123e6ad, (q31_t)0x3811884d, (q31_t)0x212ee995, (q31_t)0x38179666,\n    (q31_t)0x2139edac, (q31_t)0x381da256, (q31_t)0x2144f2f3, (q31_t)0x3823ac1d,\n    (q31_t)0x214ff96a, (q31_t)0x3829b3b9, (q31_t)0x215b0110, (q31_t)0x382fb92a,\n    (q31_t)0x216609e3, (q31_t)0x3835bc71, (q31_t)0x217113e5, (q31_t)0x383bbd8e,\n    (q31_t)0x217c1f15, (q31_t)0x3841bc7f, (q31_t)0x21872b72, (q31_t)0x3847b946,\n    (q31_t)0x219238fb, (q31_t)0x384db3e0, (q31_t)0x219d47b1, (q31_t)0x3853ac4f,\n    (q31_t)0x21a85793, (q31_t)0x3859a292, (q31_t)0x21b368a0, (q31_t)0x385f96a9,\n    (q31_t)0x21be7ad8, (q31_t)0x38658894, (q31_t)0x21c98e3b, (q31_t)0x386b7852,\n    (q31_t)0x21d4a2c8, (q31_t)0x387165e3, (q31_t)0x21dfb87f, (q31_t)0x38775147,\n    (q31_t)0x21eacf5f, (q31_t)0x387d3a7e, (q31_t)0x21f5e768, (q31_t)0x38832187,\n    (q31_t)0x22010099, (q31_t)0x38890663, (q31_t)0x220c1af3, (q31_t)0x388ee910,\n    (q31_t)0x22173674, (q31_t)0x3894c98f, (q31_t)0x2222531c, (q31_t)0x389aa7e0,\n    (q31_t)0x222d70eb, (q31_t)0x38a08402, (q31_t)0x22388fe1, (q31_t)0x38a65df6,\n    (q31_t)0x2243affc, (q31_t)0x38ac35ba, (q31_t)0x224ed13d, (q31_t)0x38b20b4f,\n    (q31_t)0x2259f3a3, (q31_t)0x38b7deb4, (q31_t)0x2265172e, (q31_t)0x38bdafea,\n    (q31_t)0x22703bdc, (q31_t)0x38c37eef, (q31_t)0x227b61af, (q31_t)0x38c94bc4,\n    (q31_t)0x228688a4, (q31_t)0x38cf1669, (q31_t)0x2291b0bd, (q31_t)0x38d4dedd,\n    (q31_t)0x229cd9f8, (q31_t)0x38daa520, (q31_t)0x22a80456, (q31_t)0x38e06932,\n    (q31_t)0x22b32fd4, (q31_t)0x38e62b13, (q31_t)0x22be5c74, (q31_t)0x38ebeac2,\n    (q31_t)0x22c98a35, (q31_t)0x38f1a840, (q31_t)0x22d4b916, (q31_t)0x38f7638b,\n    (q31_t)0x22dfe917, (q31_t)0x38fd1ca4, (q31_t)0x22eb1a37, (q31_t)0x3902d38b,\n    (q31_t)0x22f64c77, (q31_t)0x3908883f, (q31_t)0x23017fd5, (q31_t)0x390e3ac0,\n    (q31_t)0x230cb451, (q31_t)0x3913eb0e, (q31_t)0x2317e9eb, (q31_t)0x39199929,\n    (q31_t)0x232320a2, (q31_t)0x391f4510, (q31_t)0x232e5876, (q31_t)0x3924eec3,\n    (q31_t)0x23399167, (q31_t)0x392a9642, (q31_t)0x2344cb73, (q31_t)0x39303b8e,\n    (q31_t)0x2350069b, (q31_t)0x3935dea4, (q31_t)0x235b42df, (q31_t)0x393b7f86,\n    (q31_t)0x2366803c, (q31_t)0x39411e33, (q31_t)0x2371beb5, (q31_t)0x3946baac,\n    (q31_t)0x237cfe47, (q31_t)0x394c54ee, (q31_t)0x23883ef2, (q31_t)0x3951ecfc,\n    (q31_t)0x239380b6, (q31_t)0x395782d3, (q31_t)0x239ec393, (q31_t)0x395d1675,\n    (q31_t)0x23aa0788, (q31_t)0x3962a7e0, (q31_t)0x23b54c95, (q31_t)0x39683715,\n    (q31_t)0x23c092b9, (q31_t)0x396dc414, (q31_t)0x23cbd9f4, (q31_t)0x39734edc,\n    (q31_t)0x23d72245, (q31_t)0x3978d76c, (q31_t)0x23e26bac, (q31_t)0x397e5dc6,\n    (q31_t)0x23edb628, (q31_t)0x3983e1e8, (q31_t)0x23f901ba, (q31_t)0x398963d2,\n    (q31_t)0x24044e60, (q31_t)0x398ee385, (q31_t)0x240f9c1a, (q31_t)0x399460ff,\n    (q31_t)0x241aeae8, (q31_t)0x3999dc42, (q31_t)0x24263ac9, (q31_t)0x399f554b,\n    (q31_t)0x24318bbe, (q31_t)0x39a4cc1c, (q31_t)0x243cddc4, (q31_t)0x39aa40b4,\n    (q31_t)0x244830dd, (q31_t)0x39afb313, (q31_t)0x24538507, (q31_t)0x39b52339,\n    (q31_t)0x245eda43, (q31_t)0x39ba9125, (q31_t)0x246a308f, (q31_t)0x39bffcd7,\n    (q31_t)0x247587eb, (q31_t)0x39c5664f, (q31_t)0x2480e057, (q31_t)0x39cacd8d,\n    (q31_t)0x248c39d3, (q31_t)0x39d03291, (q31_t)0x2497945d, (q31_t)0x39d5955a,\n    (q31_t)0x24a2eff6, (q31_t)0x39daf5e8, (q31_t)0x24ae4c9d, (q31_t)0x39e0543c,\n    (q31_t)0x24b9aa52, (q31_t)0x39e5b054, (q31_t)0x24c50914, (q31_t)0x39eb0a31,\n    (q31_t)0x24d068e2, (q31_t)0x39f061d2, (q31_t)0x24dbc9bd, (q31_t)0x39f5b737,\n    (q31_t)0x24e72ba4, (q31_t)0x39fb0a60, (q31_t)0x24f28e96, (q31_t)0x3a005b4d,\n    (q31_t)0x24fdf294, (q31_t)0x3a05a9fd, (q31_t)0x2509579b, (q31_t)0x3a0af671,\n    (q31_t)0x2514bdad, (q31_t)0x3a1040a8, (q31_t)0x252024c9, (q31_t)0x3a1588a2,\n    (q31_t)0x252b8cee, (q31_t)0x3a1ace5f, (q31_t)0x2536f61b, (q31_t)0x3a2011de,\n    (q31_t)0x25426051, (q31_t)0x3a25531f, (q31_t)0x254dcb8f, (q31_t)0x3a2a9223,\n    (q31_t)0x255937d5, (q31_t)0x3a2fcee8, (q31_t)0x2564a521, (q31_t)0x3a350970,\n    (q31_t)0x25701374, (q31_t)0x3a3a41b9, (q31_t)0x257b82cd, (q31_t)0x3a3f77c3,\n    (q31_t)0x2586f32c, (q31_t)0x3a44ab8e, (q31_t)0x25926490, (q31_t)0x3a49dd1a,\n    (q31_t)0x259dd6f9, (q31_t)0x3a4f0c67, (q31_t)0x25a94a67, (q31_t)0x3a543974,\n    (q31_t)0x25b4bed8, (q31_t)0x3a596442, (q31_t)0x25c0344d, (q31_t)0x3a5e8cd0,\n    (q31_t)0x25cbaac5, (q31_t)0x3a63b31d, (q31_t)0x25d72240, (q31_t)0x3a68d72b,\n    (q31_t)0x25e29abc, (q31_t)0x3a6df8f8, (q31_t)0x25ee143b, (q31_t)0x3a731884,\n    (q31_t)0x25f98ebb, (q31_t)0x3a7835cf, (q31_t)0x26050a3b, (q31_t)0x3a7d50da,\n    (q31_t)0x261086bc, (q31_t)0x3a8269a3, (q31_t)0x261c043d, (q31_t)0x3a87802a,\n    (q31_t)0x262782be, (q31_t)0x3a8c9470, (q31_t)0x2633023e, (q31_t)0x3a91a674,\n    (q31_t)0x263e82bc, (q31_t)0x3a96b636, (q31_t)0x264a0438, (q31_t)0x3a9bc3b6,\n    (q31_t)0x265586b3, (q31_t)0x3aa0cef3, (q31_t)0x26610a2a, (q31_t)0x3aa5d7ee,\n    (q31_t)0x266c8e9f, (q31_t)0x3aaadea6, (q31_t)0x26781410, (q31_t)0x3aafe31b,\n    (q31_t)0x26839a7c, (q31_t)0x3ab4e54c, (q31_t)0x268f21e5, (q31_t)0x3ab9e53a,\n    (q31_t)0x269aaa48, (q31_t)0x3abee2e5, (q31_t)0x26a633a6, (q31_t)0x3ac3de4c,\n    (q31_t)0x26b1bdff, (q31_t)0x3ac8d76f, (q31_t)0x26bd4951, (q31_t)0x3acdce4d,\n    (q31_t)0x26c8d59c, (q31_t)0x3ad2c2e8, (q31_t)0x26d462e1, (q31_t)0x3ad7b53d,\n    (q31_t)0x26dff11d, (q31_t)0x3adca54e, (q31_t)0x26eb8052, (q31_t)0x3ae1931a,\n    (q31_t)0x26f7107e, (q31_t)0x3ae67ea1, (q31_t)0x2702a1a1, (q31_t)0x3aeb67e3,\n    (q31_t)0x270e33bb, (q31_t)0x3af04edf, (q31_t)0x2719c6cb, (q31_t)0x3af53395,\n    (q31_t)0x27255ad1, (q31_t)0x3afa1605, (q31_t)0x2730efcc, (q31_t)0x3afef630,\n    (q31_t)0x273c85bc, (q31_t)0x3b03d414, (q31_t)0x27481ca1, (q31_t)0x3b08afb2,\n    (q31_t)0x2753b479, (q31_t)0x3b0d8909, (q31_t)0x275f4d45, (q31_t)0x3b126019,\n    (q31_t)0x276ae704, (q31_t)0x3b1734e2, (q31_t)0x277681b6, (q31_t)0x3b1c0764,\n    (q31_t)0x27821d59, (q31_t)0x3b20d79e, (q31_t)0x278db9ef, (q31_t)0x3b25a591,\n    (q31_t)0x27995776, (q31_t)0x3b2a713d, (q31_t)0x27a4f5ed, (q31_t)0x3b2f3aa0,\n    (q31_t)0x27b09555, (q31_t)0x3b3401bb, (q31_t)0x27bc35ad, (q31_t)0x3b38c68e,\n    (q31_t)0x27c7d6f4, (q31_t)0x3b3d8918, (q31_t)0x27d3792b, (q31_t)0x3b42495a,\n    (q31_t)0x27df1c50, (q31_t)0x3b470753, (q31_t)0x27eac063, (q31_t)0x3b4bc303,\n    (q31_t)0x27f66564, (q31_t)0x3b507c69, (q31_t)0x28020b52, (q31_t)0x3b553386,\n    (q31_t)0x280db22d, (q31_t)0x3b59e85a, (q31_t)0x281959f4, (q31_t)0x3b5e9ae4,\n    (q31_t)0x282502a7, (q31_t)0x3b634b23, (q31_t)0x2830ac45, (q31_t)0x3b67f919,\n    (q31_t)0x283c56cf, (q31_t)0x3b6ca4c4, (q31_t)0x28480243, (q31_t)0x3b714e25,\n    (q31_t)0x2853aea1, (q31_t)0x3b75f53c, (q31_t)0x285f5be9, (q31_t)0x3b7a9a07,\n    (q31_t)0x286b0a1a, (q31_t)0x3b7f3c87, (q31_t)0x2876b934, (q31_t)0x3b83dcbc,\n    (q31_t)0x28826936, (q31_t)0x3b887aa6, (q31_t)0x288e1a20, (q31_t)0x3b8d1644,\n    (q31_t)0x2899cbf1, (q31_t)0x3b91af97, (q31_t)0x28a57ea9, (q31_t)0x3b96469d,\n    (q31_t)0x28b13248, (q31_t)0x3b9adb57, (q31_t)0x28bce6cd, (q31_t)0x3b9f6dc5,\n    (q31_t)0x28c89c37, (q31_t)0x3ba3fde7, (q31_t)0x28d45286, (q31_t)0x3ba88bbc,\n    (q31_t)0x28e009ba, (q31_t)0x3bad1744, (q31_t)0x28ebc1d3, (q31_t)0x3bb1a080,\n    (q31_t)0x28f77acf, (q31_t)0x3bb6276e, (q31_t)0x290334af, (q31_t)0x3bbaac0e,\n    (q31_t)0x290eef71, (q31_t)0x3bbf2e62, (q31_t)0x291aab16, (q31_t)0x3bc3ae67,\n    (q31_t)0x2926679c, (q31_t)0x3bc82c1f, (q31_t)0x29322505, (q31_t)0x3bcca789,\n    (q31_t)0x293de34e, (q31_t)0x3bd120a4, (q31_t)0x2949a278, (q31_t)0x3bd59771,\n    (q31_t)0x29556282, (q31_t)0x3bda0bf0, (q31_t)0x2961236c, (q31_t)0x3bde7e20,\n    (q31_t)0x296ce535, (q31_t)0x3be2ee01, (q31_t)0x2978a7dd, (q31_t)0x3be75b93,\n    (q31_t)0x29846b63, (q31_t)0x3bebc6d5, (q31_t)0x29902fc7, (q31_t)0x3bf02fc9,\n    (q31_t)0x299bf509, (q31_t)0x3bf4966c, (q31_t)0x29a7bb28, (q31_t)0x3bf8fac0,\n    (q31_t)0x29b38223, (q31_t)0x3bfd5cc4, (q31_t)0x29bf49fa, (q31_t)0x3c01bc78,\n    (q31_t)0x29cb12ad, (q31_t)0x3c0619dc, (q31_t)0x29d6dc3b, (q31_t)0x3c0a74f0,\n    (q31_t)0x29e2a6a3, (q31_t)0x3c0ecdb2, (q31_t)0x29ee71e6, (q31_t)0x3c132424,\n    (q31_t)0x29fa3e03, (q31_t)0x3c177845, (q31_t)0x2a060af9, (q31_t)0x3c1bca16,\n    (q31_t)0x2a11d8c8, (q31_t)0x3c201994, (q31_t)0x2a1da770, (q31_t)0x3c2466c2,\n    (q31_t)0x2a2976ef, (q31_t)0x3c28b19e, (q31_t)0x2a354746, (q31_t)0x3c2cfa28,\n    (q31_t)0x2a411874, (q31_t)0x3c314060, (q31_t)0x2a4cea79, (q31_t)0x3c358446,\n    (q31_t)0x2a58bd54, (q31_t)0x3c39c5da, (q31_t)0x2a649105, (q31_t)0x3c3e051b,\n    (q31_t)0x2a70658a, (q31_t)0x3c42420a, (q31_t)0x2a7c3ae5, (q31_t)0x3c467ca6,\n    (q31_t)0x2a881114, (q31_t)0x3c4ab4ef, (q31_t)0x2a93e817, (q31_t)0x3c4eeae5,\n    (q31_t)0x2a9fbfed, (q31_t)0x3c531e88, (q31_t)0x2aab9896, (q31_t)0x3c574fd8,\n    (q31_t)0x2ab77212, (q31_t)0x3c5b7ed4, (q31_t)0x2ac34c60, (q31_t)0x3c5fab7c,\n    (q31_t)0x2acf277f, (q31_t)0x3c63d5d1, (q31_t)0x2adb0370, (q31_t)0x3c67fdd1,\n    (q31_t)0x2ae6e031, (q31_t)0x3c6c237e, (q31_t)0x2af2bdc3, (q31_t)0x3c7046d6,\n    (q31_t)0x2afe9c24, (q31_t)0x3c7467d9, (q31_t)0x2b0a7b54, (q31_t)0x3c788688,\n    (q31_t)0x2b165b54, (q31_t)0x3c7ca2e2, (q31_t)0x2b223c22, (q31_t)0x3c80bce7,\n    (q31_t)0x2b2e1dbe, (q31_t)0x3c84d496, (q31_t)0x2b3a0027, (q31_t)0x3c88e9f1,\n    (q31_t)0x2b45e35d, (q31_t)0x3c8cfcf6, (q31_t)0x2b51c760, (q31_t)0x3c910da5,\n    (q31_t)0x2b5dac2f, (q31_t)0x3c951bff, (q31_t)0x2b6991ca, (q31_t)0x3c992803,\n    (q31_t)0x2b75782f, (q31_t)0x3c9d31b0, (q31_t)0x2b815f60, (q31_t)0x3ca13908,\n    (q31_t)0x2b8d475b, (q31_t)0x3ca53e09, (q31_t)0x2b99301f, (q31_t)0x3ca940b3,\n    (q31_t)0x2ba519ad, (q31_t)0x3cad4107, (q31_t)0x2bb10404, (q31_t)0x3cb13f04,\n    (q31_t)0x2bbcef23, (q31_t)0x3cb53aaa, (q31_t)0x2bc8db0b, (q31_t)0x3cb933f9,\n    (q31_t)0x2bd4c7ba, (q31_t)0x3cbd2af0, (q31_t)0x2be0b52f, (q31_t)0x3cc11f90,\n    (q31_t)0x2beca36c, (q31_t)0x3cc511d9, (q31_t)0x2bf8926f, (q31_t)0x3cc901c9,\n    (q31_t)0x2c048237, (q31_t)0x3cccef62, (q31_t)0x2c1072c4, (q31_t)0x3cd0daa2,\n    (q31_t)0x2c1c6417, (q31_t)0x3cd4c38b, (q31_t)0x2c28562d, (q31_t)0x3cd8aa1b,\n    (q31_t)0x2c344908, (q31_t)0x3cdc8e52, (q31_t)0x2c403ca5, (q31_t)0x3ce07031,\n    (q31_t)0x2c4c3106, (q31_t)0x3ce44fb7, (q31_t)0x2c582629, (q31_t)0x3ce82ce4,\n    (q31_t)0x2c641c0e, (q31_t)0x3cec07b8, (q31_t)0x2c7012b5, (q31_t)0x3cefe032,\n    (q31_t)0x2c7c0a1d, (q31_t)0x3cf3b653, (q31_t)0x2c880245, (q31_t)0x3cf78a1b,\n    (q31_t)0x2c93fb2e, (q31_t)0x3cfb5b89, (q31_t)0x2c9ff4d6, (q31_t)0x3cff2a9d,\n    (q31_t)0x2cabef3d, (q31_t)0x3d02f757, (q31_t)0x2cb7ea63, (q31_t)0x3d06c1b6,\n    (q31_t)0x2cc3e648, (q31_t)0x3d0a89bc, (q31_t)0x2ccfe2ea, (q31_t)0x3d0e4f67,\n    (q31_t)0x2cdbe04a, (q31_t)0x3d1212b7, (q31_t)0x2ce7de66, (q31_t)0x3d15d3ad,\n    (q31_t)0x2cf3dd3f, (q31_t)0x3d199248, (q31_t)0x2cffdcd4, (q31_t)0x3d1d4e88,\n    (q31_t)0x2d0bdd25, (q31_t)0x3d21086c, (q31_t)0x2d17de31, (q31_t)0x3d24bff6,\n    (q31_t)0x2d23dff7, (q31_t)0x3d287523, (q31_t)0x2d2fe277, (q31_t)0x3d2c27f6,\n    (q31_t)0x2d3be5b1, (q31_t)0x3d2fd86c, (q31_t)0x2d47e9a5, (q31_t)0x3d338687,\n    (q31_t)0x2d53ee51, (q31_t)0x3d373245, (q31_t)0x2d5ff3b5, (q31_t)0x3d3adba7,\n    (q31_t)0x2d6bf9d1, (q31_t)0x3d3e82ae, (q31_t)0x2d7800a5, (q31_t)0x3d422757,\n    (q31_t)0x2d84082f, (q31_t)0x3d45c9a4, (q31_t)0x2d901070, (q31_t)0x3d496994,\n    (q31_t)0x2d9c1967, (q31_t)0x3d4d0728, (q31_t)0x2da82313, (q31_t)0x3d50a25e,\n    (q31_t)0x2db42d74, (q31_t)0x3d543b37, (q31_t)0x2dc0388a, (q31_t)0x3d57d1b3,\n    (q31_t)0x2dcc4454, (q31_t)0x3d5b65d2, (q31_t)0x2dd850d2, (q31_t)0x3d5ef793,\n    (q31_t)0x2de45e03, (q31_t)0x3d6286f6, (q31_t)0x2df06be6, (q31_t)0x3d6613fb,\n    (q31_t)0x2dfc7a7c, (q31_t)0x3d699ea3, (q31_t)0x2e0889c4, (q31_t)0x3d6d26ec,\n    (q31_t)0x2e1499bd, (q31_t)0x3d70acd7, (q31_t)0x2e20aa67, (q31_t)0x3d743064,\n    (q31_t)0x2e2cbbc1, (q31_t)0x3d77b192, (q31_t)0x2e38cdcb, (q31_t)0x3d7b3061,\n    (q31_t)0x2e44e084, (q31_t)0x3d7eacd2, (q31_t)0x2e50f3ed, (q31_t)0x3d8226e4,\n    (q31_t)0x2e5d0804, (q31_t)0x3d859e96, (q31_t)0x2e691cc9, (q31_t)0x3d8913ea,\n    (q31_t)0x2e75323c, (q31_t)0x3d8c86de, (q31_t)0x2e81485c, (q31_t)0x3d8ff772,\n    (q31_t)0x2e8d5f29, (q31_t)0x3d9365a8, (q31_t)0x2e9976a1, (q31_t)0x3d96d17d,\n    (q31_t)0x2ea58ec6, (q31_t)0x3d9a3af2, (q31_t)0x2eb1a796, (q31_t)0x3d9da208,\n    (q31_t)0x2ebdc110, (q31_t)0x3da106bd, (q31_t)0x2ec9db35, (q31_t)0x3da46912,\n    (q31_t)0x2ed5f604, (q31_t)0x3da7c907, (q31_t)0x2ee2117c, (q31_t)0x3dab269b,\n    (q31_t)0x2eee2d9d, (q31_t)0x3dae81cf, (q31_t)0x2efa4a67, (q31_t)0x3db1daa2,\n    (q31_t)0x2f0667d9, (q31_t)0x3db53113, (q31_t)0x2f1285f2, (q31_t)0x3db88524,\n    (q31_t)0x2f1ea4b2, (q31_t)0x3dbbd6d4, (q31_t)0x2f2ac419, (q31_t)0x3dbf2622,\n    (q31_t)0x2f36e426, (q31_t)0x3dc2730f, (q31_t)0x2f4304d8, (q31_t)0x3dc5bd9b,\n    (q31_t)0x2f4f2630, (q31_t)0x3dc905c5, (q31_t)0x2f5b482d, (q31_t)0x3dcc4b8d,\n    (q31_t)0x2f676ace, (q31_t)0x3dcf8ef3, (q31_t)0x2f738e12, (q31_t)0x3dd2cff7,\n    (q31_t)0x2f7fb1fa, (q31_t)0x3dd60e99, (q31_t)0x2f8bd685, (q31_t)0x3dd94ad8,\n    (q31_t)0x2f97fbb2, (q31_t)0x3ddc84b5, (q31_t)0x2fa42181, (q31_t)0x3ddfbc30,\n    (q31_t)0x2fb047f2, (q31_t)0x3de2f148, (q31_t)0x2fbc6f03, (q31_t)0x3de623fd,\n    (q31_t)0x2fc896b5, (q31_t)0x3de9544f, (q31_t)0x2fd4bf08, (q31_t)0x3dec823e,\n    (q31_t)0x2fe0e7f9, (q31_t)0x3defadca, (q31_t)0x2fed118a, (q31_t)0x3df2d6f3,\n    (q31_t)0x2ff93bba, (q31_t)0x3df5fdb8, (q31_t)0x30056687, (q31_t)0x3df9221a,\n    (q31_t)0x301191f3, (q31_t)0x3dfc4418, (q31_t)0x301dbdfb, (q31_t)0x3dff63b2,\n    (q31_t)0x3029eaa1, (q31_t)0x3e0280e9, (q31_t)0x303617e2, (q31_t)0x3e059bbb,\n    (q31_t)0x304245c0, (q31_t)0x3e08b42a, (q31_t)0x304e7438, (q31_t)0x3e0bca34,\n    (q31_t)0x305aa34c, (q31_t)0x3e0eddd9, (q31_t)0x3066d2fa, (q31_t)0x3e11ef1b,\n    (q31_t)0x30730342, (q31_t)0x3e14fdf7, (q31_t)0x307f3424, (q31_t)0x3e180a6f,\n    (q31_t)0x308b659f, (q31_t)0x3e1b1482, (q31_t)0x309797b2, (q31_t)0x3e1e1c30,\n    (q31_t)0x30a3ca5d, (q31_t)0x3e212179, (q31_t)0x30affda0, (q31_t)0x3e24245d,\n    (q31_t)0x30bc317a, (q31_t)0x3e2724db, (q31_t)0x30c865ea, (q31_t)0x3e2a22f4,\n    (q31_t)0x30d49af1, (q31_t)0x3e2d1ea8, (q31_t)0x30e0d08d, (q31_t)0x3e3017f6,\n    (q31_t)0x30ed06bf, (q31_t)0x3e330ede, (q31_t)0x30f93d86, (q31_t)0x3e360360,\n    (q31_t)0x310574e0, (q31_t)0x3e38f57c, (q31_t)0x3111accf, (q31_t)0x3e3be532,\n    (q31_t)0x311de551, (q31_t)0x3e3ed282, (q31_t)0x312a1e66, (q31_t)0x3e41bd6c,\n    (q31_t)0x3136580d, (q31_t)0x3e44a5ef, (q31_t)0x31429247, (q31_t)0x3e478c0b,\n    (q31_t)0x314ecd11, (q31_t)0x3e4a6fc1, (q31_t)0x315b086d, (q31_t)0x3e4d5110,\n    (q31_t)0x31674459, (q31_t)0x3e502ff9, (q31_t)0x317380d6, (q31_t)0x3e530c7a,\n    (q31_t)0x317fbde2, (q31_t)0x3e55e694, (q31_t)0x318bfb7d, (q31_t)0x3e58be47,\n    (q31_t)0x319839a6, (q31_t)0x3e5b9392, (q31_t)0x31a4785e, (q31_t)0x3e5e6676,\n    (q31_t)0x31b0b7a4, (q31_t)0x3e6136f3, (q31_t)0x31bcf777, (q31_t)0x3e640507,\n    (q31_t)0x31c937d6, (q31_t)0x3e66d0b4, (q31_t)0x31d578c2, (q31_t)0x3e6999fa,\n    (q31_t)0x31e1ba3a, (q31_t)0x3e6c60d7, (q31_t)0x31edfc3d, (q31_t)0x3e6f254c,\n    (q31_t)0x31fa3ecb, (q31_t)0x3e71e759, (q31_t)0x320681e3, (q31_t)0x3e74a6fd,\n    (q31_t)0x3212c585, (q31_t)0x3e77643a, (q31_t)0x321f09b1, (q31_t)0x3e7a1f0d,\n    (q31_t)0x322b4e66, (q31_t)0x3e7cd778, (q31_t)0x323793a3, (q31_t)0x3e7f8d7b,\n    (q31_t)0x3243d968, (q31_t)0x3e824114, (q31_t)0x32501fb5, (q31_t)0x3e84f245,\n    (q31_t)0x325c6688, (q31_t)0x3e87a10c, (q31_t)0x3268ade3, (q31_t)0x3e8a4d6a,\n    (q31_t)0x3274f5c3, (q31_t)0x3e8cf75f, (q31_t)0x32813e2a, (q31_t)0x3e8f9eeb,\n    (q31_t)0x328d8715, (q31_t)0x3e92440d, (q31_t)0x3299d085, (q31_t)0x3e94e6c6,\n    (q31_t)0x32a61a7a, (q31_t)0x3e978715, (q31_t)0x32b264f2, (q31_t)0x3e9a24fb,\n    (q31_t)0x32beafed, (q31_t)0x3e9cc076, (q31_t)0x32cafb6b, (q31_t)0x3e9f5988,\n    (q31_t)0x32d7476c, (q31_t)0x3ea1f02f, (q31_t)0x32e393ef, (q31_t)0x3ea4846c,\n    (q31_t)0x32efe0f2, (q31_t)0x3ea7163f, (q31_t)0x32fc2e77, (q31_t)0x3ea9a5a8,\n    (q31_t)0x33087c7d, (q31_t)0x3eac32a6, (q31_t)0x3314cb02, (q31_t)0x3eaebd3a,\n    (q31_t)0x33211a07, (q31_t)0x3eb14563, (q31_t)0x332d698a, (q31_t)0x3eb3cb21,\n    (q31_t)0x3339b98d, (q31_t)0x3eb64e75, (q31_t)0x33460a0d, (q31_t)0x3eb8cf5d,\n    (q31_t)0x33525b0b, (q31_t)0x3ebb4ddb, (q31_t)0x335eac86, (q31_t)0x3ebdc9ed,\n    (q31_t)0x336afe7e, (q31_t)0x3ec04394, (q31_t)0x337750f2, (q31_t)0x3ec2bad0,\n    (q31_t)0x3383a3e2, (q31_t)0x3ec52fa0, (q31_t)0x338ff74d, (q31_t)0x3ec7a205,\n    (q31_t)0x339c4b32, (q31_t)0x3eca11fe, (q31_t)0x33a89f92, (q31_t)0x3ecc7f8b,\n    (q31_t)0x33b4f46c, (q31_t)0x3eceeaad, (q31_t)0x33c149bf, (q31_t)0x3ed15363,\n    (q31_t)0x33cd9f8b, (q31_t)0x3ed3b9ad, (q31_t)0x33d9f5cf, (q31_t)0x3ed61d8a,\n    (q31_t)0x33e64c8c, (q31_t)0x3ed87efc, (q31_t)0x33f2a3bf, (q31_t)0x3edade01,\n    (q31_t)0x33fefb6a, (q31_t)0x3edd3a9a, (q31_t)0x340b538b, (q31_t)0x3edf94c7,\n    (q31_t)0x3417ac22, (q31_t)0x3ee1ec87, (q31_t)0x3424052f, (q31_t)0x3ee441da,\n    (q31_t)0x34305eb0, (q31_t)0x3ee694c1, (q31_t)0x343cb8a7, (q31_t)0x3ee8e53a,\n    (q31_t)0x34491311, (q31_t)0x3eeb3347, (q31_t)0x34556def, (q31_t)0x3eed7ee7,\n    (q31_t)0x3461c940, (q31_t)0x3eefc81a, (q31_t)0x346e2504, (q31_t)0x3ef20ee0,\n    (q31_t)0x347a8139, (q31_t)0x3ef45338, (q31_t)0x3486dde1, (q31_t)0x3ef69523,\n    (q31_t)0x34933afa, (q31_t)0x3ef8d4a1, (q31_t)0x349f9884, (q31_t)0x3efb11b1,\n    (q31_t)0x34abf67e, (q31_t)0x3efd4c54, (q31_t)0x34b854e7, (q31_t)0x3eff8489,\n    (q31_t)0x34c4b3c0, (q31_t)0x3f01ba50, (q31_t)0x34d11308, (q31_t)0x3f03eda9,\n    (q31_t)0x34dd72be, (q31_t)0x3f061e95, (q31_t)0x34e9d2e3, (q31_t)0x3f084d12,\n    (q31_t)0x34f63374, (q31_t)0x3f0a7921, (q31_t)0x35029473, (q31_t)0x3f0ca2c2,\n    (q31_t)0x350ef5de, (q31_t)0x3f0ec9f5, (q31_t)0x351b57b5, (q31_t)0x3f10eeb9,\n    (q31_t)0x3527b9f7, (q31_t)0x3f13110f, (q31_t)0x35341ca5, (q31_t)0x3f1530f7,\n    (q31_t)0x35407fbd, (q31_t)0x3f174e70, (q31_t)0x354ce33f, (q31_t)0x3f19697a,\n    (q31_t)0x3559472b, (q31_t)0x3f1b8215, (q31_t)0x3565ab80, (q31_t)0x3f1d9842,\n    (q31_t)0x3572103d, (q31_t)0x3f1fabff, (q31_t)0x357e7563, (q31_t)0x3f21bd4e,\n    (q31_t)0x358adaf0, (q31_t)0x3f23cc2e, (q31_t)0x359740e5, (q31_t)0x3f25d89e,\n    (q31_t)0x35a3a740, (q31_t)0x3f27e29f, (q31_t)0x35b00e02, (q31_t)0x3f29ea31,\n    (q31_t)0x35bc7529, (q31_t)0x3f2bef53, (q31_t)0x35c8dcb6, (q31_t)0x3f2df206,\n    (q31_t)0x35d544a7, (q31_t)0x3f2ff24a, (q31_t)0x35e1acfd, (q31_t)0x3f31f01d,\n    (q31_t)0x35ee15b7, (q31_t)0x3f33eb81, (q31_t)0x35fa7ed4, (q31_t)0x3f35e476,\n    (q31_t)0x3606e854, (q31_t)0x3f37dafa, (q31_t)0x36135237, (q31_t)0x3f39cf0e,\n    (q31_t)0x361fbc7b, (q31_t)0x3f3bc0b3, (q31_t)0x362c2721, (q31_t)0x3f3dafe7,\n    (q31_t)0x36389228, (q31_t)0x3f3f9cab, (q31_t)0x3644fd8f, (q31_t)0x3f4186ff,\n    (q31_t)0x36516956, (q31_t)0x3f436ee3, (q31_t)0x365dd57d, (q31_t)0x3f455456,\n    (q31_t)0x366a4203, (q31_t)0x3f473759, (q31_t)0x3676aee8, (q31_t)0x3f4917eb,\n    (q31_t)0x36831c2b, (q31_t)0x3f4af60d, (q31_t)0x368f89cb, (q31_t)0x3f4cd1be,\n    (q31_t)0x369bf7c9, (q31_t)0x3f4eaafe, (q31_t)0x36a86623, (q31_t)0x3f5081cd,\n    (q31_t)0x36b4d4d9, (q31_t)0x3f52562c, (q31_t)0x36c143ec, (q31_t)0x3f54281a,\n    (q31_t)0x36cdb359, (q31_t)0x3f55f796, (q31_t)0x36da2321, (q31_t)0x3f57c4a2,\n    (q31_t)0x36e69344, (q31_t)0x3f598f3c, (q31_t)0x36f303c0, (q31_t)0x3f5b5765,\n    (q31_t)0x36ff7496, (q31_t)0x3f5d1d1d, (q31_t)0x370be5c4, (q31_t)0x3f5ee063,\n    (q31_t)0x3718574b, (q31_t)0x3f60a138, (q31_t)0x3724c92a, (q31_t)0x3f625f9b,\n    (q31_t)0x37313b60, (q31_t)0x3f641b8d, (q31_t)0x373daded, (q31_t)0x3f65d50d,\n    (q31_t)0x374a20d0, (q31_t)0x3f678c1c, (q31_t)0x3756940a, (q31_t)0x3f6940b8,\n    (q31_t)0x37630799, (q31_t)0x3f6af2e3, (q31_t)0x376f7b7d, (q31_t)0x3f6ca29c,\n    (q31_t)0x377befb5, (q31_t)0x3f6e4fe3, (q31_t)0x37886442, (q31_t)0x3f6ffab8,\n    (q31_t)0x3794d922, (q31_t)0x3f71a31b, (q31_t)0x37a14e55, (q31_t)0x3f73490b,\n    (q31_t)0x37adc3db, (q31_t)0x3f74ec8a, (q31_t)0x37ba39b3, (q31_t)0x3f768d96,\n    (q31_t)0x37c6afdc, (q31_t)0x3f782c30, (q31_t)0x37d32657, (q31_t)0x3f79c857,\n    (q31_t)0x37df9d22, (q31_t)0x3f7b620c, (q31_t)0x37ec143e, (q31_t)0x3f7cf94e,\n    (q31_t)0x37f88ba9, (q31_t)0x3f7e8e1e, (q31_t)0x38050364, (q31_t)0x3f80207b,\n    (q31_t)0x38117b6d, (q31_t)0x3f81b065, (q31_t)0x381df3c5, (q31_t)0x3f833ddd,\n    (q31_t)0x382a6c6a, (q31_t)0x3f84c8e2, (q31_t)0x3836e55d, (q31_t)0x3f865174,\n    (q31_t)0x38435e9d, (q31_t)0x3f87d792, (q31_t)0x384fd829, (q31_t)0x3f895b3e,\n    (q31_t)0x385c5201, (q31_t)0x3f8adc77, (q31_t)0x3868cc24, (q31_t)0x3f8c5b3d,\n    (q31_t)0x38754692, (q31_t)0x3f8dd78f, (q31_t)0x3881c14b, (q31_t)0x3f8f516e,\n    (q31_t)0x388e3c4d, (q31_t)0x3f90c8da, (q31_t)0x389ab799, (q31_t)0x3f923dd2,\n    (q31_t)0x38a7332e, (q31_t)0x3f93b058, (q31_t)0x38b3af0c, (q31_t)0x3f952069,\n    (q31_t)0x38c02b31, (q31_t)0x3f968e07, (q31_t)0x38cca79e, (q31_t)0x3f97f932,\n    (q31_t)0x38d92452, (q31_t)0x3f9961e8, (q31_t)0x38e5a14d, (q31_t)0x3f9ac82c,\n    (q31_t)0x38f21e8e, (q31_t)0x3f9c2bfb, (q31_t)0x38fe9c15, (q31_t)0x3f9d8d56,\n    (q31_t)0x390b19e0, (q31_t)0x3f9eec3e, (q31_t)0x391797f0, (q31_t)0x3fa048b2,\n    (q31_t)0x39241645, (q31_t)0x3fa1a2b2, (q31_t)0x393094dd, (q31_t)0x3fa2fa3d,\n    (q31_t)0x393d13b8, (q31_t)0x3fa44f55, (q31_t)0x394992d7, (q31_t)0x3fa5a1f9,\n    (q31_t)0x39561237, (q31_t)0x3fa6f228, (q31_t)0x396291d9, (q31_t)0x3fa83fe3,\n    (q31_t)0x396f11bc, (q31_t)0x3fa98b2a, (q31_t)0x397b91e1, (q31_t)0x3faad3fd,\n    (q31_t)0x39881245, (q31_t)0x3fac1a5b, (q31_t)0x399492ea, (q31_t)0x3fad5e45,\n    (q31_t)0x39a113cd, (q31_t)0x3fae9fbb, (q31_t)0x39ad94f0, (q31_t)0x3fafdebb,\n    (q31_t)0x39ba1651, (q31_t)0x3fb11b48, (q31_t)0x39c697f0, (q31_t)0x3fb2555f,\n    (q31_t)0x39d319cc, (q31_t)0x3fb38d02, (q31_t)0x39df9be6, (q31_t)0x3fb4c231,\n    (q31_t)0x39ec1e3b, (q31_t)0x3fb5f4ea, (q31_t)0x39f8a0cd, (q31_t)0x3fb7252f,\n    (q31_t)0x3a05239a, (q31_t)0x3fb852ff, (q31_t)0x3a11a6a3, (q31_t)0x3fb97e5a,\n    (q31_t)0x3a1e29e5, (q31_t)0x3fbaa740, (q31_t)0x3a2aad62, (q31_t)0x3fbbcdb1,\n    (q31_t)0x3a373119, (q31_t)0x3fbcf1ad, (q31_t)0x3a43b508, (q31_t)0x3fbe1334,\n    (q31_t)0x3a503930, (q31_t)0x3fbf3246, (q31_t)0x3a5cbd91, (q31_t)0x3fc04ee3,\n    (q31_t)0x3a694229, (q31_t)0x3fc1690a, (q31_t)0x3a75c6f8, (q31_t)0x3fc280bc,\n    (q31_t)0x3a824bfd, (q31_t)0x3fc395f9, (q31_t)0x3a8ed139, (q31_t)0x3fc4a8c1,\n    (q31_t)0x3a9b56ab, (q31_t)0x3fc5b913, (q31_t)0x3aa7dc52, (q31_t)0x3fc6c6f0,\n    (q31_t)0x3ab4622d, (q31_t)0x3fc7d258, (q31_t)0x3ac0e83d, (q31_t)0x3fc8db4a,\n    (q31_t)0x3acd6e81, (q31_t)0x3fc9e1c6, (q31_t)0x3ad9f4f8, (q31_t)0x3fcae5cd,\n    (q31_t)0x3ae67ba2, (q31_t)0x3fcbe75e, (q31_t)0x3af3027e, (q31_t)0x3fcce67a,\n    (q31_t)0x3aff898c, (q31_t)0x3fcde320, (q31_t)0x3b0c10cb, (q31_t)0x3fcedd50,\n    (q31_t)0x3b18983b, (q31_t)0x3fcfd50b, (q31_t)0x3b251fdc, (q31_t)0x3fd0ca4f,\n    (q31_t)0x3b31a7ac, (q31_t)0x3fd1bd1e, (q31_t)0x3b3e2fac, (q31_t)0x3fd2ad77,\n    (q31_t)0x3b4ab7db, (q31_t)0x3fd39b5a, (q31_t)0x3b574039, (q31_t)0x3fd486c7,\n    (q31_t)0x3b63c8c4, (q31_t)0x3fd56fbe, (q31_t)0x3b70517d, (q31_t)0x3fd6563f,\n    (q31_t)0x3b7cda63, (q31_t)0x3fd73a4a, (q31_t)0x3b896375, (q31_t)0x3fd81bdf,\n    (q31_t)0x3b95ecb4, (q31_t)0x3fd8fafe, (q31_t)0x3ba2761e, (q31_t)0x3fd9d7a7,\n    (q31_t)0x3baeffb3, (q31_t)0x3fdab1d9, (q31_t)0x3bbb8973, (q31_t)0x3fdb8996,\n    (q31_t)0x3bc8135c, (q31_t)0x3fdc5edc, (q31_t)0x3bd49d70, (q31_t)0x3fdd31ac,\n    (q31_t)0x3be127ac, (q31_t)0x3fde0205, (q31_t)0x3bedb212, (q31_t)0x3fdecfe8,\n    (q31_t)0x3bfa3c9f, (q31_t)0x3fdf9b55, (q31_t)0x3c06c754, (q31_t)0x3fe0644b,\n    (q31_t)0x3c135231, (q31_t)0x3fe12acb, (q31_t)0x3c1fdd34, (q31_t)0x3fe1eed5,\n    (q31_t)0x3c2c685d, (q31_t)0x3fe2b067, (q31_t)0x3c38f3ac, (q31_t)0x3fe36f84,\n    (q31_t)0x3c457f21, (q31_t)0x3fe42c2a, (q31_t)0x3c520aba, (q31_t)0x3fe4e659,\n    (q31_t)0x3c5e9678, (q31_t)0x3fe59e12, (q31_t)0x3c6b2259, (q31_t)0x3fe65354,\n    (q31_t)0x3c77ae5e, (q31_t)0x3fe7061f, (q31_t)0x3c843a85, (q31_t)0x3fe7b674,\n    (q31_t)0x3c90c6cf, (q31_t)0x3fe86452, (q31_t)0x3c9d533b, (q31_t)0x3fe90fb9,\n    (q31_t)0x3ca9dfc8, (q31_t)0x3fe9b8a9, (q31_t)0x3cb66c77, (q31_t)0x3fea5f23,\n    (q31_t)0x3cc2f945, (q31_t)0x3feb0326, (q31_t)0x3ccf8634, (q31_t)0x3feba4b2,\n    (q31_t)0x3cdc1342, (q31_t)0x3fec43c7, (q31_t)0x3ce8a06f, (q31_t)0x3fece065,\n    (q31_t)0x3cf52dbb, (q31_t)0x3fed7a8c, (q31_t)0x3d01bb24, (q31_t)0x3fee123d,\n    (q31_t)0x3d0e48ab, (q31_t)0x3feea776, (q31_t)0x3d1ad650, (q31_t)0x3fef3a39,\n    (q31_t)0x3d276410, (q31_t)0x3fefca84, (q31_t)0x3d33f1ed, (q31_t)0x3ff05858,\n    (q31_t)0x3d407fe6, (q31_t)0x3ff0e3b6, (q31_t)0x3d4d0df9, (q31_t)0x3ff16c9c,\n    (q31_t)0x3d599c28, (q31_t)0x3ff1f30b, (q31_t)0x3d662a70, (q31_t)0x3ff27703,\n    (q31_t)0x3d72b8d2, (q31_t)0x3ff2f884, (q31_t)0x3d7f474d, (q31_t)0x3ff3778e,\n    (q31_t)0x3d8bd5e1, (q31_t)0x3ff3f420, (q31_t)0x3d98648d, (q31_t)0x3ff46e3c,\n    (q31_t)0x3da4f351, (q31_t)0x3ff4e5e0, (q31_t)0x3db1822c, (q31_t)0x3ff55b0d,\n    (q31_t)0x3dbe111e, (q31_t)0x3ff5cdc3, (q31_t)0x3dcaa027, (q31_t)0x3ff63e01,\n    (q31_t)0x3dd72f45, (q31_t)0x3ff6abc8, (q31_t)0x3de3be78, (q31_t)0x3ff71718,\n    (q31_t)0x3df04dc0, (q31_t)0x3ff77ff1, (q31_t)0x3dfcdd1d, (q31_t)0x3ff7e652,\n    (q31_t)0x3e096c8d, (q31_t)0x3ff84a3c, (q31_t)0x3e15fc11, (q31_t)0x3ff8abae,\n    (q31_t)0x3e228ba7, (q31_t)0x3ff90aaa, (q31_t)0x3e2f1b50, (q31_t)0x3ff9672d,\n    (q31_t)0x3e3bab0b, (q31_t)0x3ff9c13a, (q31_t)0x3e483ad8, (q31_t)0x3ffa18cf,\n    (q31_t)0x3e54cab5, (q31_t)0x3ffa6dec, (q31_t)0x3e615aa3, (q31_t)0x3ffac092,\n    (q31_t)0x3e6deaa1, (q31_t)0x3ffb10c1, (q31_t)0x3e7a7aae, (q31_t)0x3ffb5e78,\n    (q31_t)0x3e870aca, (q31_t)0x3ffba9b8, (q31_t)0x3e939af5, (q31_t)0x3ffbf280,\n    (q31_t)0x3ea02b2e, (q31_t)0x3ffc38d1, (q31_t)0x3eacbb74, (q31_t)0x3ffc7caa,\n    (q31_t)0x3eb94bc8, (q31_t)0x3ffcbe0c, (q31_t)0x3ec5dc28, (q31_t)0x3ffcfcf6,\n    (q31_t)0x3ed26c94, (q31_t)0x3ffd3969, (q31_t)0x3edefd0c, (q31_t)0x3ffd7364,\n    (q31_t)0x3eeb8d8f, (q31_t)0x3ffdaae7, (q31_t)0x3ef81e1d, (q31_t)0x3ffddff3,\n    (q31_t)0x3f04aeb5, (q31_t)0x3ffe1288, (q31_t)0x3f113f56, (q31_t)0x3ffe42a4,\n    (q31_t)0x3f1dd001, (q31_t)0x3ffe704a, (q31_t)0x3f2a60b4, (q31_t)0x3ffe9b77,\n    (q31_t)0x3f36f170, (q31_t)0x3ffec42d, (q31_t)0x3f438234, (q31_t)0x3ffeea6c,\n    (q31_t)0x3f5012fe, (q31_t)0x3fff0e32, (q31_t)0x3f5ca3d0, (q31_t)0x3fff2f82,\n    (q31_t)0x3f6934a8, (q31_t)0x3fff4e59, (q31_t)0x3f75c585, (q31_t)0x3fff6ab9,\n    (q31_t)0x3f825668, (q31_t)0x3fff84a1, (q31_t)0x3f8ee750, (q31_t)0x3fff9c12,\n    (q31_t)0x3f9b783c, (q31_t)0x3fffb10b, (q31_t)0x3fa8092c, (q31_t)0x3fffc38c,\n    (q31_t)0x3fb49a1f, (q31_t)0x3fffd396, (q31_t)0x3fc12b16, (q31_t)0x3fffe128,\n    (q31_t)0x3fcdbc0f, (q31_t)0x3fffec43, (q31_t)0x3fda4d09, (q31_t)0x3ffff4e6,\n    (q31_t)0x3fe6de05, (q31_t)0x3ffffb11, (q31_t)0x3ff36f02, (q31_t)0x3ffffec4,\n};\n\n\n/**\n  @par\n  Generation of realCoefBQ31 array:\n  @par\n   n = 4096\n  <pre>for (i = 0; i < n; i++)\n  {\n     pBTable[2 * i]     = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));\n     pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));\n  } </pre>\n  @par\n  Convert to fixed point Q31 format\n      round(pBTable[i] * pow(2, 31))\n */\n\nconst q31_t realCoefBQ31[8192] = {\n    (q31_t)0x40000000, (q31_t)0x40000000, (q31_t)0x400c90fe, (q31_t)0x3ffffec4,\n    (q31_t)0x401921fb, (q31_t)0x3ffffb11, (q31_t)0x4025b2f7, (q31_t)0x3ffff4e6,\n    (q31_t)0x403243f1, (q31_t)0x3fffec43, (q31_t)0x403ed4ea, (q31_t)0x3fffe128,\n    (q31_t)0x404b65e1, (q31_t)0x3fffd396, (q31_t)0x4057f6d4, (q31_t)0x3fffc38c,\n    (q31_t)0x406487c4, (q31_t)0x3fffb10b, (q31_t)0x407118b0, (q31_t)0x3fff9c12,\n    (q31_t)0x407da998, (q31_t)0x3fff84a1, (q31_t)0x408a3a7b, (q31_t)0x3fff6ab9,\n    (q31_t)0x4096cb58, (q31_t)0x3fff4e59, (q31_t)0x40a35c30, (q31_t)0x3fff2f82,\n    (q31_t)0x40afed02, (q31_t)0x3fff0e32, (q31_t)0x40bc7dcc, (q31_t)0x3ffeea6c,\n    (q31_t)0x40c90e90, (q31_t)0x3ffec42d, (q31_t)0x40d59f4c, (q31_t)0x3ffe9b77,\n    (q31_t)0x40e22fff, (q31_t)0x3ffe704a, (q31_t)0x40eec0aa, (q31_t)0x3ffe42a4,\n    (q31_t)0x40fb514b, (q31_t)0x3ffe1288, (q31_t)0x4107e1e3, (q31_t)0x3ffddff3,\n    (q31_t)0x41147271, (q31_t)0x3ffdaae7, (q31_t)0x412102f4, (q31_t)0x3ffd7364,\n    (q31_t)0x412d936c, (q31_t)0x3ffd3969, (q31_t)0x413a23d8, (q31_t)0x3ffcfcf6,\n    (q31_t)0x4146b438, (q31_t)0x3ffcbe0c, (q31_t)0x4153448c, (q31_t)0x3ffc7caa,\n    (q31_t)0x415fd4d2, (q31_t)0x3ffc38d1, (q31_t)0x416c650b, (q31_t)0x3ffbf280,\n    (q31_t)0x4178f536, (q31_t)0x3ffba9b8, (q31_t)0x41858552, (q31_t)0x3ffb5e78,\n    (q31_t)0x4192155f, (q31_t)0x3ffb10c1, (q31_t)0x419ea55d, (q31_t)0x3ffac092,\n    (q31_t)0x41ab354b, (q31_t)0x3ffa6dec, (q31_t)0x41b7c528, (q31_t)0x3ffa18cf,\n    (q31_t)0x41c454f5, (q31_t)0x3ff9c13a, (q31_t)0x41d0e4b0, (q31_t)0x3ff9672d,\n    (q31_t)0x41dd7459, (q31_t)0x3ff90aaa, (q31_t)0x41ea03ef, (q31_t)0x3ff8abae,\n    (q31_t)0x41f69373, (q31_t)0x3ff84a3c, (q31_t)0x420322e3, (q31_t)0x3ff7e652,\n    (q31_t)0x420fb240, (q31_t)0x3ff77ff1, (q31_t)0x421c4188, (q31_t)0x3ff71718,\n    (q31_t)0x4228d0bb, (q31_t)0x3ff6abc8, (q31_t)0x42355fd9, (q31_t)0x3ff63e01,\n    (q31_t)0x4241eee2, (q31_t)0x3ff5cdc3, (q31_t)0x424e7dd4, (q31_t)0x3ff55b0d,\n    (q31_t)0x425b0caf, (q31_t)0x3ff4e5e0, (q31_t)0x42679b73, (q31_t)0x3ff46e3c,\n    (q31_t)0x42742a1f, (q31_t)0x3ff3f420, (q31_t)0x4280b8b3, (q31_t)0x3ff3778e,\n    (q31_t)0x428d472e, (q31_t)0x3ff2f884, (q31_t)0x4299d590, (q31_t)0x3ff27703,\n    (q31_t)0x42a663d8, (q31_t)0x3ff1f30b, (q31_t)0x42b2f207, (q31_t)0x3ff16c9c,\n    (q31_t)0x42bf801a, (q31_t)0x3ff0e3b6, (q31_t)0x42cc0e13, (q31_t)0x3ff05858,\n    (q31_t)0x42d89bf0, (q31_t)0x3fefca84, (q31_t)0x42e529b0, (q31_t)0x3fef3a39,\n    (q31_t)0x42f1b755, (q31_t)0x3feea776, (q31_t)0x42fe44dc, (q31_t)0x3fee123d,\n    (q31_t)0x430ad245, (q31_t)0x3fed7a8c, (q31_t)0x43175f91, (q31_t)0x3fece065,\n    (q31_t)0x4323ecbe, (q31_t)0x3fec43c7, (q31_t)0x433079cc, (q31_t)0x3feba4b2,\n    (q31_t)0x433d06bb, (q31_t)0x3feb0326, (q31_t)0x43499389, (q31_t)0x3fea5f23,\n    (q31_t)0x43562038, (q31_t)0x3fe9b8a9, (q31_t)0x4362acc5, (q31_t)0x3fe90fb9,\n    (q31_t)0x436f3931, (q31_t)0x3fe86452, (q31_t)0x437bc57b, (q31_t)0x3fe7b674,\n    (q31_t)0x438851a2, (q31_t)0x3fe7061f, (q31_t)0x4394dda7, (q31_t)0x3fe65354,\n    (q31_t)0x43a16988, (q31_t)0x3fe59e12, (q31_t)0x43adf546, (q31_t)0x3fe4e659,\n    (q31_t)0x43ba80df, (q31_t)0x3fe42c2a, (q31_t)0x43c70c54, (q31_t)0x3fe36f84,\n    (q31_t)0x43d397a3, (q31_t)0x3fe2b067, (q31_t)0x43e022cc, (q31_t)0x3fe1eed5,\n    (q31_t)0x43ecadcf, (q31_t)0x3fe12acb, (q31_t)0x43f938ac, (q31_t)0x3fe0644b,\n    (q31_t)0x4405c361, (q31_t)0x3fdf9b55, (q31_t)0x44124dee, (q31_t)0x3fdecfe8,\n    (q31_t)0x441ed854, (q31_t)0x3fde0205, (q31_t)0x442b6290, (q31_t)0x3fdd31ac,\n    (q31_t)0x4437eca4, (q31_t)0x3fdc5edc, (q31_t)0x4444768d, (q31_t)0x3fdb8996,\n    (q31_t)0x4451004d, (q31_t)0x3fdab1d9, (q31_t)0x445d89e2, (q31_t)0x3fd9d7a7,\n    (q31_t)0x446a134c, (q31_t)0x3fd8fafe, (q31_t)0x44769c8b, (q31_t)0x3fd81bdf,\n    (q31_t)0x4483259d, (q31_t)0x3fd73a4a, (q31_t)0x448fae83, (q31_t)0x3fd6563f,\n    (q31_t)0x449c373c, (q31_t)0x3fd56fbe, (q31_t)0x44a8bfc7, (q31_t)0x3fd486c7,\n    (q31_t)0x44b54825, (q31_t)0x3fd39b5a, (q31_t)0x44c1d054, (q31_t)0x3fd2ad77,\n    (q31_t)0x44ce5854, (q31_t)0x3fd1bd1e, (q31_t)0x44dae024, (q31_t)0x3fd0ca4f,\n    (q31_t)0x44e767c5, (q31_t)0x3fcfd50b, (q31_t)0x44f3ef35, (q31_t)0x3fcedd50,\n    (q31_t)0x45007674, (q31_t)0x3fcde320, (q31_t)0x450cfd82, (q31_t)0x3fcce67a,\n    (q31_t)0x4519845e, (q31_t)0x3fcbe75e, (q31_t)0x45260b08, (q31_t)0x3fcae5cd,\n    (q31_t)0x4532917f, (q31_t)0x3fc9e1c6, (q31_t)0x453f17c3, (q31_t)0x3fc8db4a,\n    (q31_t)0x454b9dd3, (q31_t)0x3fc7d258, (q31_t)0x455823ae, (q31_t)0x3fc6c6f0,\n    (q31_t)0x4564a955, (q31_t)0x3fc5b913, (q31_t)0x45712ec7, (q31_t)0x3fc4a8c1,\n    (q31_t)0x457db403, (q31_t)0x3fc395f9, (q31_t)0x458a3908, (q31_t)0x3fc280bc,\n    (q31_t)0x4596bdd7, (q31_t)0x3fc1690a, (q31_t)0x45a3426f, (q31_t)0x3fc04ee3,\n    (q31_t)0x45afc6d0, (q31_t)0x3fbf3246, (q31_t)0x45bc4af8, (q31_t)0x3fbe1334,\n    (q31_t)0x45c8cee7, (q31_t)0x3fbcf1ad, (q31_t)0x45d5529e, (q31_t)0x3fbbcdb1,\n    (q31_t)0x45e1d61b, (q31_t)0x3fbaa740, (q31_t)0x45ee595d, (q31_t)0x3fb97e5a,\n    (q31_t)0x45fadc66, (q31_t)0x3fb852ff, (q31_t)0x46075f33, (q31_t)0x3fb7252f,\n    (q31_t)0x4613e1c5, (q31_t)0x3fb5f4ea, (q31_t)0x4620641a, (q31_t)0x3fb4c231,\n    (q31_t)0x462ce634, (q31_t)0x3fb38d02, (q31_t)0x46396810, (q31_t)0x3fb2555f,\n    (q31_t)0x4645e9af, (q31_t)0x3fb11b48, (q31_t)0x46526b10, (q31_t)0x3fafdebb,\n    (q31_t)0x465eec33, (q31_t)0x3fae9fbb, (q31_t)0x466b6d16, (q31_t)0x3fad5e45,\n    (q31_t)0x4677edbb, (q31_t)0x3fac1a5b, (q31_t)0x46846e1f, (q31_t)0x3faad3fd,\n    (q31_t)0x4690ee44, (q31_t)0x3fa98b2a, (q31_t)0x469d6e27, (q31_t)0x3fa83fe3,\n    (q31_t)0x46a9edc9, (q31_t)0x3fa6f228, (q31_t)0x46b66d29, (q31_t)0x3fa5a1f9,\n    (q31_t)0x46c2ec48, (q31_t)0x3fa44f55, (q31_t)0x46cf6b23, (q31_t)0x3fa2fa3d,\n    (q31_t)0x46dbe9bb, (q31_t)0x3fa1a2b2, (q31_t)0x46e86810, (q31_t)0x3fa048b2,\n    (q31_t)0x46f4e620, (q31_t)0x3f9eec3e, (q31_t)0x470163eb, (q31_t)0x3f9d8d56,\n    (q31_t)0x470de172, (q31_t)0x3f9c2bfb, (q31_t)0x471a5eb3, (q31_t)0x3f9ac82c,\n    (q31_t)0x4726dbae, (q31_t)0x3f9961e8, (q31_t)0x47335862, (q31_t)0x3f97f932,\n    (q31_t)0x473fd4cf, (q31_t)0x3f968e07, (q31_t)0x474c50f4, (q31_t)0x3f952069,\n    (q31_t)0x4758ccd2, (q31_t)0x3f93b058, (q31_t)0x47654867, (q31_t)0x3f923dd2,\n    (q31_t)0x4771c3b3, (q31_t)0x3f90c8da, (q31_t)0x477e3eb5, (q31_t)0x3f8f516e,\n    (q31_t)0x478ab96e, (q31_t)0x3f8dd78f, (q31_t)0x479733dc, (q31_t)0x3f8c5b3d,\n    (q31_t)0x47a3adff, (q31_t)0x3f8adc77, (q31_t)0x47b027d7, (q31_t)0x3f895b3e,\n    (q31_t)0x47bca163, (q31_t)0x3f87d792, (q31_t)0x47c91aa3, (q31_t)0x3f865174,\n    (q31_t)0x47d59396, (q31_t)0x3f84c8e2, (q31_t)0x47e20c3b, (q31_t)0x3f833ddd,\n    (q31_t)0x47ee8493, (q31_t)0x3f81b065, (q31_t)0x47fafc9c, (q31_t)0x3f80207b,\n    (q31_t)0x48077457, (q31_t)0x3f7e8e1e, (q31_t)0x4813ebc2, (q31_t)0x3f7cf94e,\n    (q31_t)0x482062de, (q31_t)0x3f7b620c, (q31_t)0x482cd9a9, (q31_t)0x3f79c857,\n    (q31_t)0x48395024, (q31_t)0x3f782c30, (q31_t)0x4845c64d, (q31_t)0x3f768d96,\n    (q31_t)0x48523c25, (q31_t)0x3f74ec8a, (q31_t)0x485eb1ab, (q31_t)0x3f73490b,\n    (q31_t)0x486b26de, (q31_t)0x3f71a31b, (q31_t)0x48779bbe, (q31_t)0x3f6ffab8,\n    (q31_t)0x4884104b, (q31_t)0x3f6e4fe3, (q31_t)0x48908483, (q31_t)0x3f6ca29c,\n    (q31_t)0x489cf867, (q31_t)0x3f6af2e3, (q31_t)0x48a96bf6, (q31_t)0x3f6940b8,\n    (q31_t)0x48b5df30, (q31_t)0x3f678c1c, (q31_t)0x48c25213, (q31_t)0x3f65d50d,\n    (q31_t)0x48cec4a0, (q31_t)0x3f641b8d, (q31_t)0x48db36d6, (q31_t)0x3f625f9b,\n    (q31_t)0x48e7a8b5, (q31_t)0x3f60a138, (q31_t)0x48f41a3c, (q31_t)0x3f5ee063,\n    (q31_t)0x49008b6a, (q31_t)0x3f5d1d1d, (q31_t)0x490cfc40, (q31_t)0x3f5b5765,\n    (q31_t)0x49196cbc, (q31_t)0x3f598f3c, (q31_t)0x4925dcdf, (q31_t)0x3f57c4a2,\n    (q31_t)0x49324ca7, (q31_t)0x3f55f796, (q31_t)0x493ebc14, (q31_t)0x3f54281a,\n    (q31_t)0x494b2b27, (q31_t)0x3f52562c, (q31_t)0x495799dd, (q31_t)0x3f5081cd,\n    (q31_t)0x49640837, (q31_t)0x3f4eaafe, (q31_t)0x49707635, (q31_t)0x3f4cd1be,\n    (q31_t)0x497ce3d5, (q31_t)0x3f4af60d, (q31_t)0x49895118, (q31_t)0x3f4917eb,\n    (q31_t)0x4995bdfd, (q31_t)0x3f473759, (q31_t)0x49a22a83, (q31_t)0x3f455456,\n    (q31_t)0x49ae96aa, (q31_t)0x3f436ee3, (q31_t)0x49bb0271, (q31_t)0x3f4186ff,\n    (q31_t)0x49c76dd8, (q31_t)0x3f3f9cab, (q31_t)0x49d3d8df, (q31_t)0x3f3dafe7,\n    (q31_t)0x49e04385, (q31_t)0x3f3bc0b3, (q31_t)0x49ecadc9, (q31_t)0x3f39cf0e,\n    (q31_t)0x49f917ac, (q31_t)0x3f37dafa, (q31_t)0x4a05812c, (q31_t)0x3f35e476,\n    (q31_t)0x4a11ea49, (q31_t)0x3f33eb81, (q31_t)0x4a1e5303, (q31_t)0x3f31f01d,\n    (q31_t)0x4a2abb59, (q31_t)0x3f2ff24a, (q31_t)0x4a37234a, (q31_t)0x3f2df206,\n    (q31_t)0x4a438ad7, (q31_t)0x3f2bef53, (q31_t)0x4a4ff1fe, (q31_t)0x3f29ea31,\n    (q31_t)0x4a5c58c0, (q31_t)0x3f27e29f, (q31_t)0x4a68bf1b, (q31_t)0x3f25d89e,\n    (q31_t)0x4a752510, (q31_t)0x3f23cc2e, (q31_t)0x4a818a9d, (q31_t)0x3f21bd4e,\n    (q31_t)0x4a8defc3, (q31_t)0x3f1fabff, (q31_t)0x4a9a5480, (q31_t)0x3f1d9842,\n    (q31_t)0x4aa6b8d5, (q31_t)0x3f1b8215, (q31_t)0x4ab31cc1, (q31_t)0x3f19697a,\n    (q31_t)0x4abf8043, (q31_t)0x3f174e70, (q31_t)0x4acbe35b, (q31_t)0x3f1530f7,\n    (q31_t)0x4ad84609, (q31_t)0x3f13110f, (q31_t)0x4ae4a84b, (q31_t)0x3f10eeb9,\n    (q31_t)0x4af10a22, (q31_t)0x3f0ec9f5, (q31_t)0x4afd6b8d, (q31_t)0x3f0ca2c2,\n    (q31_t)0x4b09cc8c, (q31_t)0x3f0a7921, (q31_t)0x4b162d1d, (q31_t)0x3f084d12,\n    (q31_t)0x4b228d42, (q31_t)0x3f061e95, (q31_t)0x4b2eecf8, (q31_t)0x3f03eda9,\n    (q31_t)0x4b3b4c40, (q31_t)0x3f01ba50, (q31_t)0x4b47ab19, (q31_t)0x3eff8489,\n    (q31_t)0x4b540982, (q31_t)0x3efd4c54, (q31_t)0x4b60677c, (q31_t)0x3efb11b1,\n    (q31_t)0x4b6cc506, (q31_t)0x3ef8d4a1, (q31_t)0x4b79221f, (q31_t)0x3ef69523,\n    (q31_t)0x4b857ec7, (q31_t)0x3ef45338, (q31_t)0x4b91dafc, (q31_t)0x3ef20ee0,\n    (q31_t)0x4b9e36c0, (q31_t)0x3eefc81a, (q31_t)0x4baa9211, (q31_t)0x3eed7ee7,\n    (q31_t)0x4bb6ecef, (q31_t)0x3eeb3347, (q31_t)0x4bc34759, (q31_t)0x3ee8e53a,\n    (q31_t)0x4bcfa150, (q31_t)0x3ee694c1, (q31_t)0x4bdbfad1, (q31_t)0x3ee441da,\n    (q31_t)0x4be853de, (q31_t)0x3ee1ec87, (q31_t)0x4bf4ac75, (q31_t)0x3edf94c7,\n    (q31_t)0x4c010496, (q31_t)0x3edd3a9a, (q31_t)0x4c0d5c41, (q31_t)0x3edade01,\n    (q31_t)0x4c19b374, (q31_t)0x3ed87efc, (q31_t)0x4c260a31, (q31_t)0x3ed61d8a,\n    (q31_t)0x4c326075, (q31_t)0x3ed3b9ad, (q31_t)0x4c3eb641, (q31_t)0x3ed15363,\n    (q31_t)0x4c4b0b94, (q31_t)0x3eceeaad, (q31_t)0x4c57606e, (q31_t)0x3ecc7f8b,\n    (q31_t)0x4c63b4ce, (q31_t)0x3eca11fe, (q31_t)0x4c7008b3, (q31_t)0x3ec7a205,\n    (q31_t)0x4c7c5c1e, (q31_t)0x3ec52fa0, (q31_t)0x4c88af0e, (q31_t)0x3ec2bad0,\n    (q31_t)0x4c950182, (q31_t)0x3ec04394, (q31_t)0x4ca1537a, (q31_t)0x3ebdc9ed,\n    (q31_t)0x4cada4f5, (q31_t)0x3ebb4ddb, (q31_t)0x4cb9f5f3, (q31_t)0x3eb8cf5d,\n    (q31_t)0x4cc64673, (q31_t)0x3eb64e75, (q31_t)0x4cd29676, (q31_t)0x3eb3cb21,\n    (q31_t)0x4cdee5f9, (q31_t)0x3eb14563, (q31_t)0x4ceb34fe, (q31_t)0x3eaebd3a,\n    (q31_t)0x4cf78383, (q31_t)0x3eac32a6, (q31_t)0x4d03d189, (q31_t)0x3ea9a5a8,\n    (q31_t)0x4d101f0e, (q31_t)0x3ea7163f, (q31_t)0x4d1c6c11, (q31_t)0x3ea4846c,\n    (q31_t)0x4d28b894, (q31_t)0x3ea1f02f, (q31_t)0x4d350495, (q31_t)0x3e9f5988,\n    (q31_t)0x4d415013, (q31_t)0x3e9cc076, (q31_t)0x4d4d9b0e, (q31_t)0x3e9a24fb,\n    (q31_t)0x4d59e586, (q31_t)0x3e978715, (q31_t)0x4d662f7b, (q31_t)0x3e94e6c6,\n    (q31_t)0x4d7278eb, (q31_t)0x3e92440d, (q31_t)0x4d7ec1d6, (q31_t)0x3e8f9eeb,\n    (q31_t)0x4d8b0a3d, (q31_t)0x3e8cf75f, (q31_t)0x4d97521d, (q31_t)0x3e8a4d6a,\n    (q31_t)0x4da39978, (q31_t)0x3e87a10c, (q31_t)0x4dafe04b, (q31_t)0x3e84f245,\n    (q31_t)0x4dbc2698, (q31_t)0x3e824114, (q31_t)0x4dc86c5d, (q31_t)0x3e7f8d7b,\n    (q31_t)0x4dd4b19a, (q31_t)0x3e7cd778, (q31_t)0x4de0f64f, (q31_t)0x3e7a1f0d,\n    (q31_t)0x4ded3a7b, (q31_t)0x3e77643a, (q31_t)0x4df97e1d, (q31_t)0x3e74a6fd,\n    (q31_t)0x4e05c135, (q31_t)0x3e71e759, (q31_t)0x4e1203c3, (q31_t)0x3e6f254c,\n    (q31_t)0x4e1e45c6, (q31_t)0x3e6c60d7, (q31_t)0x4e2a873e, (q31_t)0x3e6999fa,\n    (q31_t)0x4e36c82a, (q31_t)0x3e66d0b4, (q31_t)0x4e430889, (q31_t)0x3e640507,\n    (q31_t)0x4e4f485c, (q31_t)0x3e6136f3, (q31_t)0x4e5b87a2, (q31_t)0x3e5e6676,\n    (q31_t)0x4e67c65a, (q31_t)0x3e5b9392, (q31_t)0x4e740483, (q31_t)0x3e58be47,\n    (q31_t)0x4e80421e, (q31_t)0x3e55e694, (q31_t)0x4e8c7f2a, (q31_t)0x3e530c7a,\n    (q31_t)0x4e98bba7, (q31_t)0x3e502ff9, (q31_t)0x4ea4f793, (q31_t)0x3e4d5110,\n    (q31_t)0x4eb132ef, (q31_t)0x3e4a6fc1, (q31_t)0x4ebd6db9, (q31_t)0x3e478c0b,\n    (q31_t)0x4ec9a7f3, (q31_t)0x3e44a5ef, (q31_t)0x4ed5e19a, (q31_t)0x3e41bd6c,\n    (q31_t)0x4ee21aaf, (q31_t)0x3e3ed282, (q31_t)0x4eee5331, (q31_t)0x3e3be532,\n    (q31_t)0x4efa8b20, (q31_t)0x3e38f57c, (q31_t)0x4f06c27a, (q31_t)0x3e360360,\n    (q31_t)0x4f12f941, (q31_t)0x3e330ede, (q31_t)0x4f1f2f73, (q31_t)0x3e3017f6,\n    (q31_t)0x4f2b650f, (q31_t)0x3e2d1ea8, (q31_t)0x4f379a16, (q31_t)0x3e2a22f4,\n    (q31_t)0x4f43ce86, (q31_t)0x3e2724db, (q31_t)0x4f500260, (q31_t)0x3e24245d,\n    (q31_t)0x4f5c35a3, (q31_t)0x3e212179, (q31_t)0x4f68684e, (q31_t)0x3e1e1c30,\n    (q31_t)0x4f749a61, (q31_t)0x3e1b1482, (q31_t)0x4f80cbdc, (q31_t)0x3e180a6f,\n    (q31_t)0x4f8cfcbe, (q31_t)0x3e14fdf7, (q31_t)0x4f992d06, (q31_t)0x3e11ef1b,\n    (q31_t)0x4fa55cb4, (q31_t)0x3e0eddd9, (q31_t)0x4fb18bc8, (q31_t)0x3e0bca34,\n    (q31_t)0x4fbdba40, (q31_t)0x3e08b42a, (q31_t)0x4fc9e81e, (q31_t)0x3e059bbb,\n    (q31_t)0x4fd6155f, (q31_t)0x3e0280e9, (q31_t)0x4fe24205, (q31_t)0x3dff63b2,\n    (q31_t)0x4fee6e0d, (q31_t)0x3dfc4418, (q31_t)0x4ffa9979, (q31_t)0x3df9221a,\n    (q31_t)0x5006c446, (q31_t)0x3df5fdb8, (q31_t)0x5012ee76, (q31_t)0x3df2d6f3,\n    (q31_t)0x501f1807, (q31_t)0x3defadca, (q31_t)0x502b40f8, (q31_t)0x3dec823e,\n    (q31_t)0x5037694b, (q31_t)0x3de9544f, (q31_t)0x504390fd, (q31_t)0x3de623fd,\n    (q31_t)0x504fb80e, (q31_t)0x3de2f148, (q31_t)0x505bde7f, (q31_t)0x3ddfbc30,\n    (q31_t)0x5068044e, (q31_t)0x3ddc84b5, (q31_t)0x5074297b, (q31_t)0x3dd94ad8,\n    (q31_t)0x50804e06, (q31_t)0x3dd60e99, (q31_t)0x508c71ee, (q31_t)0x3dd2cff7,\n    (q31_t)0x50989532, (q31_t)0x3dcf8ef3, (q31_t)0x50a4b7d3, (q31_t)0x3dcc4b8d,\n    (q31_t)0x50b0d9d0, (q31_t)0x3dc905c5, (q31_t)0x50bcfb28, (q31_t)0x3dc5bd9b,\n    (q31_t)0x50c91bda, (q31_t)0x3dc2730f, (q31_t)0x50d53be7, (q31_t)0x3dbf2622,\n    (q31_t)0x50e15b4e, (q31_t)0x3dbbd6d4, (q31_t)0x50ed7a0e, (q31_t)0x3db88524,\n    (q31_t)0x50f99827, (q31_t)0x3db53113, (q31_t)0x5105b599, (q31_t)0x3db1daa2,\n    (q31_t)0x5111d263, (q31_t)0x3dae81cf, (q31_t)0x511dee84, (q31_t)0x3dab269b,\n    (q31_t)0x512a09fc, (q31_t)0x3da7c907, (q31_t)0x513624cb, (q31_t)0x3da46912,\n    (q31_t)0x51423ef0, (q31_t)0x3da106bd, (q31_t)0x514e586a, (q31_t)0x3d9da208,\n    (q31_t)0x515a713a, (q31_t)0x3d9a3af2, (q31_t)0x5166895f, (q31_t)0x3d96d17d,\n    (q31_t)0x5172a0d7, (q31_t)0x3d9365a8, (q31_t)0x517eb7a4, (q31_t)0x3d8ff772,\n    (q31_t)0x518acdc4, (q31_t)0x3d8c86de, (q31_t)0x5196e337, (q31_t)0x3d8913ea,\n    (q31_t)0x51a2f7fc, (q31_t)0x3d859e96, (q31_t)0x51af0c13, (q31_t)0x3d8226e4,\n    (q31_t)0x51bb1f7c, (q31_t)0x3d7eacd2, (q31_t)0x51c73235, (q31_t)0x3d7b3061,\n    (q31_t)0x51d3443f, (q31_t)0x3d77b192, (q31_t)0x51df5599, (q31_t)0x3d743064,\n    (q31_t)0x51eb6643, (q31_t)0x3d70acd7, (q31_t)0x51f7763c, (q31_t)0x3d6d26ec,\n    (q31_t)0x52038584, (q31_t)0x3d699ea3, (q31_t)0x520f941a, (q31_t)0x3d6613fb,\n    (q31_t)0x521ba1fd, (q31_t)0x3d6286f6, (q31_t)0x5227af2e, (q31_t)0x3d5ef793,\n    (q31_t)0x5233bbac, (q31_t)0x3d5b65d2, (q31_t)0x523fc776, (q31_t)0x3d57d1b3,\n    (q31_t)0x524bd28c, (q31_t)0x3d543b37, (q31_t)0x5257dced, (q31_t)0x3d50a25e,\n    (q31_t)0x5263e699, (q31_t)0x3d4d0728, (q31_t)0x526fef90, (q31_t)0x3d496994,\n    (q31_t)0x527bf7d1, (q31_t)0x3d45c9a4, (q31_t)0x5287ff5b, (q31_t)0x3d422757,\n    (q31_t)0x5294062f, (q31_t)0x3d3e82ae, (q31_t)0x52a00c4b, (q31_t)0x3d3adba7,\n    (q31_t)0x52ac11af, (q31_t)0x3d373245, (q31_t)0x52b8165b, (q31_t)0x3d338687,\n    (q31_t)0x52c41a4f, (q31_t)0x3d2fd86c, (q31_t)0x52d01d89, (q31_t)0x3d2c27f6,\n    (q31_t)0x52dc2009, (q31_t)0x3d287523, (q31_t)0x52e821cf, (q31_t)0x3d24bff6,\n    (q31_t)0x52f422db, (q31_t)0x3d21086c, (q31_t)0x5300232c, (q31_t)0x3d1d4e88,\n    (q31_t)0x530c22c1, (q31_t)0x3d199248, (q31_t)0x5318219a, (q31_t)0x3d15d3ad,\n    (q31_t)0x53241fb6, (q31_t)0x3d1212b7, (q31_t)0x53301d16, (q31_t)0x3d0e4f67,\n    (q31_t)0x533c19b8, (q31_t)0x3d0a89bc, (q31_t)0x5348159d, (q31_t)0x3d06c1b6,\n    (q31_t)0x535410c3, (q31_t)0x3d02f757, (q31_t)0x53600b2a, (q31_t)0x3cff2a9d,\n    (q31_t)0x536c04d2, (q31_t)0x3cfb5b89, (q31_t)0x5377fdbb, (q31_t)0x3cf78a1b,\n    (q31_t)0x5383f5e3, (q31_t)0x3cf3b653, (q31_t)0x538fed4b, (q31_t)0x3cefe032,\n    (q31_t)0x539be3f2, (q31_t)0x3cec07b8, (q31_t)0x53a7d9d7, (q31_t)0x3ce82ce4,\n    (q31_t)0x53b3cefa, (q31_t)0x3ce44fb7, (q31_t)0x53bfc35b, (q31_t)0x3ce07031,\n    (q31_t)0x53cbb6f8, (q31_t)0x3cdc8e52, (q31_t)0x53d7a9d3, (q31_t)0x3cd8aa1b,\n    (q31_t)0x53e39be9, (q31_t)0x3cd4c38b, (q31_t)0x53ef8d3c, (q31_t)0x3cd0daa2,\n    (q31_t)0x53fb7dc9, (q31_t)0x3cccef62, (q31_t)0x54076d91, (q31_t)0x3cc901c9,\n    (q31_t)0x54135c94, (q31_t)0x3cc511d9, (q31_t)0x541f4ad1, (q31_t)0x3cc11f90,\n    (q31_t)0x542b3846, (q31_t)0x3cbd2af0, (q31_t)0x543724f5, (q31_t)0x3cb933f9,\n    (q31_t)0x544310dd, (q31_t)0x3cb53aaa, (q31_t)0x544efbfc, (q31_t)0x3cb13f04,\n    (q31_t)0x545ae653, (q31_t)0x3cad4107, (q31_t)0x5466cfe1, (q31_t)0x3ca940b3,\n    (q31_t)0x5472b8a5, (q31_t)0x3ca53e09, (q31_t)0x547ea0a0, (q31_t)0x3ca13908,\n    (q31_t)0x548a87d1, (q31_t)0x3c9d31b0, (q31_t)0x54966e36, (q31_t)0x3c992803,\n    (q31_t)0x54a253d1, (q31_t)0x3c951bff, (q31_t)0x54ae38a0, (q31_t)0x3c910da5,\n    (q31_t)0x54ba1ca3, (q31_t)0x3c8cfcf6, (q31_t)0x54c5ffd9, (q31_t)0x3c88e9f1,\n    (q31_t)0x54d1e242, (q31_t)0x3c84d496, (q31_t)0x54ddc3de, (q31_t)0x3c80bce7,\n    (q31_t)0x54e9a4ac, (q31_t)0x3c7ca2e2, (q31_t)0x54f584ac, (q31_t)0x3c788688,\n    (q31_t)0x550163dc, (q31_t)0x3c7467d9, (q31_t)0x550d423d, (q31_t)0x3c7046d6,\n    (q31_t)0x55191fcf, (q31_t)0x3c6c237e, (q31_t)0x5524fc90, (q31_t)0x3c67fdd1,\n    (q31_t)0x5530d881, (q31_t)0x3c63d5d1, (q31_t)0x553cb3a0, (q31_t)0x3c5fab7c,\n    (q31_t)0x55488dee, (q31_t)0x3c5b7ed4, (q31_t)0x5554676a, (q31_t)0x3c574fd8,\n    (q31_t)0x55604013, (q31_t)0x3c531e88, (q31_t)0x556c17e9, (q31_t)0x3c4eeae5,\n    (q31_t)0x5577eeec, (q31_t)0x3c4ab4ef, (q31_t)0x5583c51b, (q31_t)0x3c467ca6,\n    (q31_t)0x558f9a76, (q31_t)0x3c42420a, (q31_t)0x559b6efb, (q31_t)0x3c3e051b,\n    (q31_t)0x55a742ac, (q31_t)0x3c39c5da, (q31_t)0x55b31587, (q31_t)0x3c358446,\n    (q31_t)0x55bee78c, (q31_t)0x3c314060, (q31_t)0x55cab8ba, (q31_t)0x3c2cfa28,\n    (q31_t)0x55d68911, (q31_t)0x3c28b19e, (q31_t)0x55e25890, (q31_t)0x3c2466c2,\n    (q31_t)0x55ee2738, (q31_t)0x3c201994, (q31_t)0x55f9f507, (q31_t)0x3c1bca16,\n    (q31_t)0x5605c1fd, (q31_t)0x3c177845, (q31_t)0x56118e1a, (q31_t)0x3c132424,\n    (q31_t)0x561d595d, (q31_t)0x3c0ecdb2, (q31_t)0x562923c5, (q31_t)0x3c0a74f0,\n    (q31_t)0x5634ed53, (q31_t)0x3c0619dc, (q31_t)0x5640b606, (q31_t)0x3c01bc78,\n    (q31_t)0x564c7ddd, (q31_t)0x3bfd5cc4, (q31_t)0x565844d8, (q31_t)0x3bf8fac0,\n    (q31_t)0x56640af7, (q31_t)0x3bf4966c, (q31_t)0x566fd039, (q31_t)0x3bf02fc9,\n    (q31_t)0x567b949d, (q31_t)0x3bebc6d5, (q31_t)0x56875823, (q31_t)0x3be75b93,\n    (q31_t)0x56931acb, (q31_t)0x3be2ee01, (q31_t)0x569edc94, (q31_t)0x3bde7e20,\n    (q31_t)0x56aa9d7e, (q31_t)0x3bda0bf0, (q31_t)0x56b65d88, (q31_t)0x3bd59771,\n    (q31_t)0x56c21cb2, (q31_t)0x3bd120a4, (q31_t)0x56cddafb, (q31_t)0x3bcca789,\n    (q31_t)0x56d99864, (q31_t)0x3bc82c1f, (q31_t)0x56e554ea, (q31_t)0x3bc3ae67,\n    (q31_t)0x56f1108f, (q31_t)0x3bbf2e62, (q31_t)0x56fccb51, (q31_t)0x3bbaac0e,\n    (q31_t)0x57088531, (q31_t)0x3bb6276e, (q31_t)0x57143e2d, (q31_t)0x3bb1a080,\n    (q31_t)0x571ff646, (q31_t)0x3bad1744, (q31_t)0x572bad7a, (q31_t)0x3ba88bbc,\n    (q31_t)0x573763c9, (q31_t)0x3ba3fde7, (q31_t)0x57431933, (q31_t)0x3b9f6dc5,\n    (q31_t)0x574ecdb8, (q31_t)0x3b9adb57, (q31_t)0x575a8157, (q31_t)0x3b96469d,\n    (q31_t)0x5766340f, (q31_t)0x3b91af97, (q31_t)0x5771e5e0, (q31_t)0x3b8d1644,\n    (q31_t)0x577d96ca, (q31_t)0x3b887aa6, (q31_t)0x578946cc, (q31_t)0x3b83dcbc,\n    (q31_t)0x5794f5e6, (q31_t)0x3b7f3c87, (q31_t)0x57a0a417, (q31_t)0x3b7a9a07,\n    (q31_t)0x57ac515f, (q31_t)0x3b75f53c, (q31_t)0x57b7fdbd, (q31_t)0x3b714e25,\n    (q31_t)0x57c3a931, (q31_t)0x3b6ca4c4, (q31_t)0x57cf53bb, (q31_t)0x3b67f919,\n    (q31_t)0x57dafd59, (q31_t)0x3b634b23, (q31_t)0x57e6a60c, (q31_t)0x3b5e9ae4,\n    (q31_t)0x57f24dd3, (q31_t)0x3b59e85a, (q31_t)0x57fdf4ae, (q31_t)0x3b553386,\n    (q31_t)0x58099a9c, (q31_t)0x3b507c69, (q31_t)0x58153f9d, (q31_t)0x3b4bc303,\n    (q31_t)0x5820e3b0, (q31_t)0x3b470753, (q31_t)0x582c86d5, (q31_t)0x3b42495a,\n    (q31_t)0x5838290c, (q31_t)0x3b3d8918, (q31_t)0x5843ca53, (q31_t)0x3b38c68e,\n    (q31_t)0x584f6aab, (q31_t)0x3b3401bb, (q31_t)0x585b0a13, (q31_t)0x3b2f3aa0,\n    (q31_t)0x5866a88a, (q31_t)0x3b2a713d, (q31_t)0x58724611, (q31_t)0x3b25a591,\n    (q31_t)0x587de2a7, (q31_t)0x3b20d79e, (q31_t)0x58897e4a, (q31_t)0x3b1c0764,\n    (q31_t)0x589518fc, (q31_t)0x3b1734e2, (q31_t)0x58a0b2bb, (q31_t)0x3b126019,\n    (q31_t)0x58ac4b87, (q31_t)0x3b0d8909, (q31_t)0x58b7e35f, (q31_t)0x3b08afb2,\n    (q31_t)0x58c37a44, (q31_t)0x3b03d414, (q31_t)0x58cf1034, (q31_t)0x3afef630,\n    (q31_t)0x58daa52f, (q31_t)0x3afa1605, (q31_t)0x58e63935, (q31_t)0x3af53395,\n    (q31_t)0x58f1cc45, (q31_t)0x3af04edf, (q31_t)0x58fd5e5f, (q31_t)0x3aeb67e3,\n    (q31_t)0x5908ef82, (q31_t)0x3ae67ea1, (q31_t)0x59147fae, (q31_t)0x3ae1931a,\n    (q31_t)0x59200ee3, (q31_t)0x3adca54e, (q31_t)0x592b9d1f, (q31_t)0x3ad7b53d,\n    (q31_t)0x59372a64, (q31_t)0x3ad2c2e8, (q31_t)0x5942b6af, (q31_t)0x3acdce4d,\n    (q31_t)0x594e4201, (q31_t)0x3ac8d76f, (q31_t)0x5959cc5a, (q31_t)0x3ac3de4c,\n    (q31_t)0x596555b8, (q31_t)0x3abee2e5, (q31_t)0x5970de1b, (q31_t)0x3ab9e53a,\n    (q31_t)0x597c6584, (q31_t)0x3ab4e54c, (q31_t)0x5987ebf0, (q31_t)0x3aafe31b,\n    (q31_t)0x59937161, (q31_t)0x3aaadea6, (q31_t)0x599ef5d6, (q31_t)0x3aa5d7ee,\n    (q31_t)0x59aa794d, (q31_t)0x3aa0cef3, (q31_t)0x59b5fbc8, (q31_t)0x3a9bc3b6,\n    (q31_t)0x59c17d44, (q31_t)0x3a96b636, (q31_t)0x59ccfdc2, (q31_t)0x3a91a674,\n    (q31_t)0x59d87d42, (q31_t)0x3a8c9470, (q31_t)0x59e3fbc3, (q31_t)0x3a87802a,\n    (q31_t)0x59ef7944, (q31_t)0x3a8269a3, (q31_t)0x59faf5c5, (q31_t)0x3a7d50da,\n    (q31_t)0x5a067145, (q31_t)0x3a7835cf, (q31_t)0x5a11ebc5, (q31_t)0x3a731884,\n    (q31_t)0x5a1d6544, (q31_t)0x3a6df8f8, (q31_t)0x5a28ddc0, (q31_t)0x3a68d72b,\n    (q31_t)0x5a34553b, (q31_t)0x3a63b31d, (q31_t)0x5a3fcbb3, (q31_t)0x3a5e8cd0,\n    (q31_t)0x5a4b4128, (q31_t)0x3a596442, (q31_t)0x5a56b599, (q31_t)0x3a543974,\n    (q31_t)0x5a622907, (q31_t)0x3a4f0c67, (q31_t)0x5a6d9b70, (q31_t)0x3a49dd1a,\n    (q31_t)0x5a790cd4, (q31_t)0x3a44ab8e, (q31_t)0x5a847d33, (q31_t)0x3a3f77c3,\n    (q31_t)0x5a8fec8c, (q31_t)0x3a3a41b9, (q31_t)0x5a9b5adf, (q31_t)0x3a350970,\n    (q31_t)0x5aa6c82b, (q31_t)0x3a2fcee8, (q31_t)0x5ab23471, (q31_t)0x3a2a9223,\n    (q31_t)0x5abd9faf, (q31_t)0x3a25531f, (q31_t)0x5ac909e5, (q31_t)0x3a2011de,\n    (q31_t)0x5ad47312, (q31_t)0x3a1ace5f, (q31_t)0x5adfdb37, (q31_t)0x3a1588a2,\n    (q31_t)0x5aeb4253, (q31_t)0x3a1040a8, (q31_t)0x5af6a865, (q31_t)0x3a0af671,\n    (q31_t)0x5b020d6c, (q31_t)0x3a05a9fd, (q31_t)0x5b0d716a, (q31_t)0x3a005b4d,\n    (q31_t)0x5b18d45c, (q31_t)0x39fb0a60, (q31_t)0x5b243643, (q31_t)0x39f5b737,\n    (q31_t)0x5b2f971e, (q31_t)0x39f061d2, (q31_t)0x5b3af6ec, (q31_t)0x39eb0a31,\n    (q31_t)0x5b4655ae, (q31_t)0x39e5b054, (q31_t)0x5b51b363, (q31_t)0x39e0543c,\n    (q31_t)0x5b5d100a, (q31_t)0x39daf5e8, (q31_t)0x5b686ba3, (q31_t)0x39d5955a,\n    (q31_t)0x5b73c62d, (q31_t)0x39d03291, (q31_t)0x5b7f1fa9, (q31_t)0x39cacd8d,\n    (q31_t)0x5b8a7815, (q31_t)0x39c5664f, (q31_t)0x5b95cf71, (q31_t)0x39bffcd7,\n    (q31_t)0x5ba125bd, (q31_t)0x39ba9125, (q31_t)0x5bac7af9, (q31_t)0x39b52339,\n    (q31_t)0x5bb7cf23, (q31_t)0x39afb313, (q31_t)0x5bc3223c, (q31_t)0x39aa40b4,\n    (q31_t)0x5bce7442, (q31_t)0x39a4cc1c, (q31_t)0x5bd9c537, (q31_t)0x399f554b,\n    (q31_t)0x5be51518, (q31_t)0x3999dc42, (q31_t)0x5bf063e6, (q31_t)0x399460ff,\n    (q31_t)0x5bfbb1a0, (q31_t)0x398ee385, (q31_t)0x5c06fe46, (q31_t)0x398963d2,\n    (q31_t)0x5c1249d8, (q31_t)0x3983e1e8, (q31_t)0x5c1d9454, (q31_t)0x397e5dc6,\n    (q31_t)0x5c28ddbb, (q31_t)0x3978d76c, (q31_t)0x5c34260c, (q31_t)0x39734edc,\n    (q31_t)0x5c3f6d47, (q31_t)0x396dc414, (q31_t)0x5c4ab36b, (q31_t)0x39683715,\n    (q31_t)0x5c55f878, (q31_t)0x3962a7e0, (q31_t)0x5c613c6d, (q31_t)0x395d1675,\n    (q31_t)0x5c6c7f4a, (q31_t)0x395782d3, (q31_t)0x5c77c10e, (q31_t)0x3951ecfc,\n    (q31_t)0x5c8301b9, (q31_t)0x394c54ee, (q31_t)0x5c8e414b, (q31_t)0x3946baac,\n    (q31_t)0x5c997fc4, (q31_t)0x39411e33, (q31_t)0x5ca4bd21, (q31_t)0x393b7f86,\n    (q31_t)0x5caff965, (q31_t)0x3935dea4, (q31_t)0x5cbb348d, (q31_t)0x39303b8e,\n    (q31_t)0x5cc66e99, (q31_t)0x392a9642, (q31_t)0x5cd1a78a, (q31_t)0x3924eec3,\n    (q31_t)0x5cdcdf5e, (q31_t)0x391f4510, (q31_t)0x5ce81615, (q31_t)0x39199929,\n    (q31_t)0x5cf34baf, (q31_t)0x3913eb0e, (q31_t)0x5cfe802b, (q31_t)0x390e3ac0,\n    (q31_t)0x5d09b389, (q31_t)0x3908883f, (q31_t)0x5d14e5c9, (q31_t)0x3902d38b,\n    (q31_t)0x5d2016e9, (q31_t)0x38fd1ca4, (q31_t)0x5d2b46ea, (q31_t)0x38f7638b,\n    (q31_t)0x5d3675cb, (q31_t)0x38f1a840, (q31_t)0x5d41a38c, (q31_t)0x38ebeac2,\n    (q31_t)0x5d4cd02c, (q31_t)0x38e62b13, (q31_t)0x5d57fbaa, (q31_t)0x38e06932,\n    (q31_t)0x5d632608, (q31_t)0x38daa520, (q31_t)0x5d6e4f43, (q31_t)0x38d4dedd,\n    (q31_t)0x5d79775c, (q31_t)0x38cf1669, (q31_t)0x5d849e51, (q31_t)0x38c94bc4,\n    (q31_t)0x5d8fc424, (q31_t)0x38c37eef, (q31_t)0x5d9ae8d2, (q31_t)0x38bdafea,\n    (q31_t)0x5da60c5d, (q31_t)0x38b7deb4, (q31_t)0x5db12ec3, (q31_t)0x38b20b4f,\n    (q31_t)0x5dbc5004, (q31_t)0x38ac35ba, (q31_t)0x5dc7701f, (q31_t)0x38a65df6,\n    (q31_t)0x5dd28f15, (q31_t)0x38a08402, (q31_t)0x5dddace4, (q31_t)0x389aa7e0,\n    (q31_t)0x5de8c98c, (q31_t)0x3894c98f, (q31_t)0x5df3e50d, (q31_t)0x388ee910,\n    (q31_t)0x5dfeff67, (q31_t)0x38890663, (q31_t)0x5e0a1898, (q31_t)0x38832187,\n    (q31_t)0x5e1530a1, (q31_t)0x387d3a7e, (q31_t)0x5e204781, (q31_t)0x38775147,\n    (q31_t)0x5e2b5d38, (q31_t)0x387165e3, (q31_t)0x5e3671c5, (q31_t)0x386b7852,\n    (q31_t)0x5e418528, (q31_t)0x38658894, (q31_t)0x5e4c9760, (q31_t)0x385f96a9,\n    (q31_t)0x5e57a86d, (q31_t)0x3859a292, (q31_t)0x5e62b84f, (q31_t)0x3853ac4f,\n    (q31_t)0x5e6dc705, (q31_t)0x384db3e0, (q31_t)0x5e78d48e, (q31_t)0x3847b946,\n    (q31_t)0x5e83e0eb, (q31_t)0x3841bc7f, (q31_t)0x5e8eec1b, (q31_t)0x383bbd8e,\n    (q31_t)0x5e99f61d, (q31_t)0x3835bc71, (q31_t)0x5ea4fef0, (q31_t)0x382fb92a,\n    (q31_t)0x5eb00696, (q31_t)0x3829b3b9, (q31_t)0x5ebb0d0d, (q31_t)0x3823ac1d,\n    (q31_t)0x5ec61254, (q31_t)0x381da256, (q31_t)0x5ed1166b, (q31_t)0x38179666,\n    (q31_t)0x5edc1953, (q31_t)0x3811884d, (q31_t)0x5ee71b0a, (q31_t)0x380b780a,\n    (q31_t)0x5ef21b90, (q31_t)0x3805659e, (q31_t)0x5efd1ae4, (q31_t)0x37ff5109,\n    (q31_t)0x5f081907, (q31_t)0x37f93a4b, (q31_t)0x5f1315f7, (q31_t)0x37f32165,\n    (q31_t)0x5f1e11b5, (q31_t)0x37ed0657, (q31_t)0x5f290c3f, (q31_t)0x37e6e921,\n    (q31_t)0x5f340596, (q31_t)0x37e0c9c3, (q31_t)0x5f3efdb9, (q31_t)0x37daa83d,\n    (q31_t)0x5f49f4a8, (q31_t)0x37d48490, (q31_t)0x5f54ea62, (q31_t)0x37ce5ebd,\n    (q31_t)0x5f5fdee6, (q31_t)0x37c836c2, (q31_t)0x5f6ad235, (q31_t)0x37c20ca1,\n    (q31_t)0x5f75c44e, (q31_t)0x37bbe05a, (q31_t)0x5f80b531, (q31_t)0x37b5b1ec,\n    (q31_t)0x5f8ba4dc, (q31_t)0x37af8159, (q31_t)0x5f969350, (q31_t)0x37a94ea0,\n    (q31_t)0x5fa1808c, (q31_t)0x37a319c2, (q31_t)0x5fac6c91, (q31_t)0x379ce2be,\n    (q31_t)0x5fb7575c, (q31_t)0x3796a996, (q31_t)0x5fc240ef, (q31_t)0x37906e49,\n    (q31_t)0x5fcd2948, (q31_t)0x378a30d8, (q31_t)0x5fd81067, (q31_t)0x3783f143,\n    (q31_t)0x5fe2f64c, (q31_t)0x377daf89, (q31_t)0x5feddaf6, (q31_t)0x37776bac,\n    (q31_t)0x5ff8be65, (q31_t)0x377125ac, (q31_t)0x6003a099, (q31_t)0x376add88,\n    (q31_t)0x600e8190, (q31_t)0x37649341, (q31_t)0x6019614c, (q31_t)0x375e46d8,\n    (q31_t)0x60243fca, (q31_t)0x3757f84c, (q31_t)0x602f1d0b, (q31_t)0x3751a79e,\n    (q31_t)0x6039f90f, (q31_t)0x374b54ce, (q31_t)0x6044d3d4, (q31_t)0x3744ffdd,\n    (q31_t)0x604fad5b, (q31_t)0x373ea8ca, (q31_t)0x605a85a3, (q31_t)0x37384f95,\n    (q31_t)0x60655cac, (q31_t)0x3731f440, (q31_t)0x60703275, (q31_t)0x372b96ca,\n    (q31_t)0x607b06fe, (q31_t)0x37253733, (q31_t)0x6085da46, (q31_t)0x371ed57c,\n    (q31_t)0x6090ac4d, (q31_t)0x371871a5, (q31_t)0x609b7d13, (q31_t)0x37120bae,\n    (q31_t)0x60a64c97, (q31_t)0x370ba398, (q31_t)0x60b11ad9, (q31_t)0x37053962,\n    (q31_t)0x60bbe7d8, (q31_t)0x36fecd0e, (q31_t)0x60c6b395, (q31_t)0x36f85e9a,\n    (q31_t)0x60d17e0d, (q31_t)0x36f1ee09, (q31_t)0x60dc4742, (q31_t)0x36eb7b58,\n    (q31_t)0x60e70f32, (q31_t)0x36e5068a, (q31_t)0x60f1d5de, (q31_t)0x36de8f9e,\n    (q31_t)0x60fc9b44, (q31_t)0x36d81695, (q31_t)0x61075f65, (q31_t)0x36d19b6e,\n    (q31_t)0x61122240, (q31_t)0x36cb1e2a, (q31_t)0x611ce3d5, (q31_t)0x36c49ec9,\n    (q31_t)0x6127a423, (q31_t)0x36be1d4c, (q31_t)0x61326329, (q31_t)0x36b799b3,\n    (q31_t)0x613d20e8, (q31_t)0x36b113fd, (q31_t)0x6147dd5f, (q31_t)0x36aa8c2c,\n    (q31_t)0x6152988d, (q31_t)0x36a4023f, (q31_t)0x615d5273, (q31_t)0x369d7637,\n    (q31_t)0x61680b0f, (q31_t)0x3696e814, (q31_t)0x6172c262, (q31_t)0x369057d6,\n    (q31_t)0x617d786a, (q31_t)0x3689c57d, (q31_t)0x61882d28, (q31_t)0x3683310b,\n    (q31_t)0x6192e09b, (q31_t)0x367c9a7e, (q31_t)0x619d92c2, (q31_t)0x367601d7,\n    (q31_t)0x61a8439e, (q31_t)0x366f6717, (q31_t)0x61b2f32e, (q31_t)0x3668ca3e,\n    (q31_t)0x61bda171, (q31_t)0x36622b4c, (q31_t)0x61c84e67, (q31_t)0x365b8a41,\n    (q31_t)0x61d2fa0f, (q31_t)0x3654e71d, (q31_t)0x61dda46a, (q31_t)0x364e41e2,\n    (q31_t)0x61e84d76, (q31_t)0x36479a8e, (q31_t)0x61f2f534, (q31_t)0x3640f123,\n    (q31_t)0x61fd9ba3, (q31_t)0x363a45a0, (q31_t)0x620840c2, (q31_t)0x36339806,\n    (q31_t)0x6212e492, (q31_t)0x362ce855, (q31_t)0x621d8711, (q31_t)0x3626368d,\n    (q31_t)0x6228283f, (q31_t)0x361f82af, (q31_t)0x6232c81c, (q31_t)0x3618ccba,\n    (q31_t)0x623d66a8, (q31_t)0x361214b0, (q31_t)0x624803e2, (q31_t)0x360b5a90,\n    (q31_t)0x62529fca, (q31_t)0x36049e5b, (q31_t)0x625d3a5e, (q31_t)0x35fde011,\n    (q31_t)0x6267d3a0, (q31_t)0x35f71fb1, (q31_t)0x62726b8e, (q31_t)0x35f05d3d,\n    (q31_t)0x627d0228, (q31_t)0x35e998b5, (q31_t)0x6287976e, (q31_t)0x35e2d219,\n    (q31_t)0x62922b5e, (q31_t)0x35dc0968, (q31_t)0x629cbdfa, (q31_t)0x35d53ea5,\n    (q31_t)0x62a74f40, (q31_t)0x35ce71ce, (q31_t)0x62b1df30, (q31_t)0x35c7a2e3,\n    (q31_t)0x62bc6dca, (q31_t)0x35c0d1e7, (q31_t)0x62c6fb0c, (q31_t)0x35b9fed7,\n    (q31_t)0x62d186f8, (q31_t)0x35b329b5, (q31_t)0x62dc118c, (q31_t)0x35ac5282,\n    (q31_t)0x62e69ac8, (q31_t)0x35a5793c, (q31_t)0x62f122ab, (q31_t)0x359e9de5,\n    (q31_t)0x62fba936, (q31_t)0x3597c07d, (q31_t)0x63062e67, (q31_t)0x3590e104,\n    (q31_t)0x6310b23e, (q31_t)0x3589ff7a, (q31_t)0x631b34bc, (q31_t)0x35831be0,\n    (q31_t)0x6325b5df, (q31_t)0x357c3636, (q31_t)0x633035a7, (q31_t)0x35754e7c,\n    (q31_t)0x633ab414, (q31_t)0x356e64b2, (q31_t)0x63453125, (q31_t)0x356778d9,\n    (q31_t)0x634facda, (q31_t)0x35608af1, (q31_t)0x635a2733, (q31_t)0x35599afa,\n    (q31_t)0x6364a02e, (q31_t)0x3552a8f4, (q31_t)0x636f17cc, (q31_t)0x354bb4e1,\n    (q31_t)0x63798e0d, (q31_t)0x3544bebf, (q31_t)0x638402ef, (q31_t)0x353dc68f,\n    (q31_t)0x638e7673, (q31_t)0x3536cc52, (q31_t)0x6398e898, (q31_t)0x352fd008,\n    (q31_t)0x63a3595e, (q31_t)0x3528d1b1, (q31_t)0x63adc8c4, (q31_t)0x3521d14d,\n    (q31_t)0x63b836ca, (q31_t)0x351acedd, (q31_t)0x63c2a36f, (q31_t)0x3513ca60,\n    (q31_t)0x63cd0eb3, (q31_t)0x350cc3d8, (q31_t)0x63d77896, (q31_t)0x3505bb44,\n    (q31_t)0x63e1e117, (q31_t)0x34feb0a5, (q31_t)0x63ec4837, (q31_t)0x34f7a3fb,\n    (q31_t)0x63f6adf3, (q31_t)0x34f09546, (q31_t)0x6401124d, (q31_t)0x34e98487,\n    (q31_t)0x640b7543, (q31_t)0x34e271bd, (q31_t)0x6415d6d5, (q31_t)0x34db5cea,\n    (q31_t)0x64203704, (q31_t)0x34d4460c, (q31_t)0x642a95ce, (q31_t)0x34cd2d26,\n    (q31_t)0x6434f332, (q31_t)0x34c61236, (q31_t)0x643f4f32, (q31_t)0x34bef53d,\n    (q31_t)0x6449a9cc, (q31_t)0x34b7d63c, (q31_t)0x645402ff, (q31_t)0x34b0b533,\n    (q31_t)0x645e5acc, (q31_t)0x34a99221, (q31_t)0x6468b132, (q31_t)0x34a26d08,\n    (q31_t)0x64730631, (q31_t)0x349b45e7, (q31_t)0x647d59c8, (q31_t)0x34941cbf,\n    (q31_t)0x6487abf7, (q31_t)0x348cf190, (q31_t)0x6491fcbe, (q31_t)0x3485c45b,\n    (q31_t)0x649c4c1b, (q31_t)0x347e951f, (q31_t)0x64a69a0f, (q31_t)0x347763dd,\n    (q31_t)0x64b0e699, (q31_t)0x34703095, (q31_t)0x64bb31ba, (q31_t)0x3468fb47,\n    (q31_t)0x64c57b6f, (q31_t)0x3461c3f5, (q31_t)0x64cfc3ba, (q31_t)0x345a8a9d,\n    (q31_t)0x64da0a9a, (q31_t)0x34534f41, (q31_t)0x64e4500e, (q31_t)0x344c11e0,\n    (q31_t)0x64ee9415, (q31_t)0x3444d27b, (q31_t)0x64f8d6b0, (q31_t)0x343d9112,\n    (q31_t)0x650317df, (q31_t)0x34364da6, (q31_t)0x650d57a0, (q31_t)0x342f0836,\n    (q31_t)0x651795f3, (q31_t)0x3427c0c3, (q31_t)0x6521d2d8, (q31_t)0x3420774d,\n    (q31_t)0x652c0e4f, (q31_t)0x34192bd5, (q31_t)0x65364857, (q31_t)0x3411de5b,\n    (q31_t)0x654080ef, (q31_t)0x340a8edf, (q31_t)0x654ab818, (q31_t)0x34033d61,\n    (q31_t)0x6554edd1, (q31_t)0x33fbe9e2, (q31_t)0x655f2219, (q31_t)0x33f49462,\n    (q31_t)0x656954f1, (q31_t)0x33ed3ce1, (q31_t)0x65738657, (q31_t)0x33e5e360,\n    (q31_t)0x657db64c, (q31_t)0x33de87de, (q31_t)0x6587e4cf, (q31_t)0x33d72a5d,\n    (q31_t)0x659211df, (q31_t)0x33cfcadc, (q31_t)0x659c3d7c, (q31_t)0x33c8695b,\n    (q31_t)0x65a667a7, (q31_t)0x33c105db, (q31_t)0x65b0905d, (q31_t)0x33b9a05d,\n    (q31_t)0x65bab7a0, (q31_t)0x33b238e0, (q31_t)0x65c4dd6e, (q31_t)0x33aacf65,\n    (q31_t)0x65cf01c8, (q31_t)0x33a363ec, (q31_t)0x65d924ac, (q31_t)0x339bf675,\n    (q31_t)0x65e3461b, (q31_t)0x33948701, (q31_t)0x65ed6614, (q31_t)0x338d1590,\n    (q31_t)0x65f78497, (q31_t)0x3385a222, (q31_t)0x6601a1a2, (q31_t)0x337e2cb7,\n    (q31_t)0x660bbd37, (q31_t)0x3376b551, (q31_t)0x6615d754, (q31_t)0x336f3bee,\n    (q31_t)0x661feffa, (q31_t)0x3367c090, (q31_t)0x662a0727, (q31_t)0x33604336,\n    (q31_t)0x66341cdb, (q31_t)0x3358c3e2, (q31_t)0x663e3117, (q31_t)0x33514292,\n    (q31_t)0x664843d9, (q31_t)0x3349bf48, (q31_t)0x66525521, (q31_t)0x33423a04,\n    (q31_t)0x665c64ef, (q31_t)0x333ab2c6, (q31_t)0x66667342, (q31_t)0x3333298f,\n    (q31_t)0x6670801a, (q31_t)0x332b9e5e, (q31_t)0x667a8b77, (q31_t)0x33241134,\n    (q31_t)0x66849558, (q31_t)0x331c8211, (q31_t)0x668e9dbd, (q31_t)0x3314f0f6,\n    (q31_t)0x6698a4a6, (q31_t)0x330d5de3, (q31_t)0x66a2aa11, (q31_t)0x3305c8d7,\n    (q31_t)0x66acadff, (q31_t)0x32fe31d5, (q31_t)0x66b6b070, (q31_t)0x32f698db,\n    (q31_t)0x66c0b162, (q31_t)0x32eefdea, (q31_t)0x66cab0d6, (q31_t)0x32e76102,\n    (q31_t)0x66d4aecb, (q31_t)0x32dfc224, (q31_t)0x66deab41, (q31_t)0x32d82150,\n    (q31_t)0x66e8a637, (q31_t)0x32d07e85, (q31_t)0x66f29fad, (q31_t)0x32c8d9c6,\n    (q31_t)0x66fc97a3, (q31_t)0x32c13311, (q31_t)0x67068e18, (q31_t)0x32b98a67,\n    (q31_t)0x6710830c, (q31_t)0x32b1dfc9, (q31_t)0x671a767e, (q31_t)0x32aa3336,\n    (q31_t)0x6724686e, (q31_t)0x32a284b0, (q31_t)0x672e58dc, (q31_t)0x329ad435,\n    (q31_t)0x673847c8, (q31_t)0x329321c7, (q31_t)0x67423530, (q31_t)0x328b6d66,\n    (q31_t)0x674c2115, (q31_t)0x3283b712, (q31_t)0x67560b76, (q31_t)0x327bfecc,\n    (q31_t)0x675ff452, (q31_t)0x32744493, (q31_t)0x6769dbaa, (q31_t)0x326c8868,\n    (q31_t)0x6773c17d, (q31_t)0x3264ca4c, (q31_t)0x677da5cb, (q31_t)0x325d0a3e,\n    (q31_t)0x67878893, (q31_t)0x32554840, (q31_t)0x679169d5, (q31_t)0x324d8450,\n    (q31_t)0x679b4990, (q31_t)0x3245be70, (q31_t)0x67a527c4, (q31_t)0x323df6a0,\n    (q31_t)0x67af0472, (q31_t)0x32362ce0, (q31_t)0x67b8df97, (q31_t)0x322e6130,\n    (q31_t)0x67c2b934, (q31_t)0x32269391, (q31_t)0x67cc9149, (q31_t)0x321ec403,\n    (q31_t)0x67d667d5, (q31_t)0x3216f287, (q31_t)0x67e03cd8, (q31_t)0x320f1f1c,\n    (q31_t)0x67ea1052, (q31_t)0x320749c3, (q31_t)0x67f3e241, (q31_t)0x31ff727c,\n    (q31_t)0x67fdb2a7, (q31_t)0x31f79948, (q31_t)0x68078181, (q31_t)0x31efbe27,\n    (q31_t)0x68114ed0, (q31_t)0x31e7e118, (q31_t)0x681b1a94, (q31_t)0x31e0021e,\n    (q31_t)0x6824e4cc, (q31_t)0x31d82137, (q31_t)0x682ead78, (q31_t)0x31d03e64,\n    (q31_t)0x68387498, (q31_t)0x31c859a5, (q31_t)0x68423a2a, (q31_t)0x31c072fb,\n    (q31_t)0x684bfe2f, (q31_t)0x31b88a66, (q31_t)0x6855c0a6, (q31_t)0x31b09fe7,\n    (q31_t)0x685f8190, (q31_t)0x31a8b37c, (q31_t)0x686940ea, (q31_t)0x31a0c528,\n    (q31_t)0x6872feb6, (q31_t)0x3198d4ea, (q31_t)0x687cbaf3, (q31_t)0x3190e2c3,\n    (q31_t)0x688675a0, (q31_t)0x3188eeb2, (q31_t)0x68902ebd, (q31_t)0x3180f8b8,\n    (q31_t)0x6899e64a, (q31_t)0x317900d6, (q31_t)0x68a39c46, (q31_t)0x3171070c,\n    (q31_t)0x68ad50b1, (q31_t)0x31690b59, (q31_t)0x68b7038b, (q31_t)0x31610dbf,\n    (q31_t)0x68c0b4d2, (q31_t)0x31590e3e, (q31_t)0x68ca6488, (q31_t)0x31510cd5,\n    (q31_t)0x68d412ab, (q31_t)0x31490986, (q31_t)0x68ddbf3b, (q31_t)0x31410450,\n    (q31_t)0x68e76a37, (q31_t)0x3138fd35, (q31_t)0x68f113a0, (q31_t)0x3130f433,\n    (q31_t)0x68fabb75, (q31_t)0x3128e94c, (q31_t)0x690461b5, (q31_t)0x3120dc80,\n    (q31_t)0x690e0661, (q31_t)0x3118cdcf, (q31_t)0x6917a977, (q31_t)0x3110bd39,\n    (q31_t)0x69214af8, (q31_t)0x3108aabf, (q31_t)0x692aeae3, (q31_t)0x31009661,\n    (q31_t)0x69348937, (q31_t)0x30f8801f, (q31_t)0x693e25f5, (q31_t)0x30f067fb,\n    (q31_t)0x6947c11c, (q31_t)0x30e84df3, (q31_t)0x69515aab, (q31_t)0x30e03208,\n    (q31_t)0x695af2a3, (q31_t)0x30d8143b, (q31_t)0x69648902, (q31_t)0x30cff48c,\n    (q31_t)0x696e1dc9, (q31_t)0x30c7d2fb, (q31_t)0x6977b0f7, (q31_t)0x30bfaf89,\n    (q31_t)0x6981428c, (q31_t)0x30b78a36, (q31_t)0x698ad287, (q31_t)0x30af6302,\n    (q31_t)0x699460e8, (q31_t)0x30a739ed, (q31_t)0x699dedaf, (q31_t)0x309f0ef8,\n    (q31_t)0x69a778db, (q31_t)0x3096e223, (q31_t)0x69b1026c, (q31_t)0x308eb36f,\n    (q31_t)0x69ba8a61, (q31_t)0x308682dc, (q31_t)0x69c410ba, (q31_t)0x307e5069,\n    (q31_t)0x69cd9578, (q31_t)0x30761c18, (q31_t)0x69d71899, (q31_t)0x306de5e9,\n    (q31_t)0x69e09a1c, (q31_t)0x3065addb, (q31_t)0x69ea1a03, (q31_t)0x305d73f0,\n    (q31_t)0x69f3984c, (q31_t)0x30553828, (q31_t)0x69fd14f6, (q31_t)0x304cfa83,\n    (q31_t)0x6a069003, (q31_t)0x3044bb00, (q31_t)0x6a100970, (q31_t)0x303c79a2,\n    (q31_t)0x6a19813f, (q31_t)0x30343667, (q31_t)0x6a22f76e, (q31_t)0x302bf151,\n    (q31_t)0x6a2c6bfd, (q31_t)0x3023aa5f, (q31_t)0x6a35deeb, (q31_t)0x301b6193,\n    (q31_t)0x6a3f503a, (q31_t)0x301316eb, (q31_t)0x6a48bfe7, (q31_t)0x300aca69,\n    (q31_t)0x6a522df3, (q31_t)0x30027c0c, (q31_t)0x6a5b9a5d, (q31_t)0x2ffa2bd6,\n    (q31_t)0x6a650525, (q31_t)0x2ff1d9c7, (q31_t)0x6a6e6e4b, (q31_t)0x2fe985de,\n    (q31_t)0x6a77d5ce, (q31_t)0x2fe1301c, (q31_t)0x6a813bae, (q31_t)0x2fd8d882,\n    (q31_t)0x6a8a9fea, (q31_t)0x2fd07f0f, (q31_t)0x6a940283, (q31_t)0x2fc823c5,\n    (q31_t)0x6a9d6377, (q31_t)0x2fbfc6a3, (q31_t)0x6aa6c2c6, (q31_t)0x2fb767aa,\n    (q31_t)0x6ab02071, (q31_t)0x2faf06da, (q31_t)0x6ab97c77, (q31_t)0x2fa6a433,\n    (q31_t)0x6ac2d6d6, (q31_t)0x2f9e3fb6, (q31_t)0x6acc2f90, (q31_t)0x2f95d963,\n    (q31_t)0x6ad586a3, (q31_t)0x2f8d713a, (q31_t)0x6adedc10, (q31_t)0x2f85073c,\n    (q31_t)0x6ae82fd5, (q31_t)0x2f7c9b69, (q31_t)0x6af181f3, (q31_t)0x2f742dc1,\n    (q31_t)0x6afad269, (q31_t)0x2f6bbe45, (q31_t)0x6b042137, (q31_t)0x2f634cf5,\n    (q31_t)0x6b0d6e5c, (q31_t)0x2f5ad9d1, (q31_t)0x6b16b9d9, (q31_t)0x2f5264da,\n    (q31_t)0x6b2003ac, (q31_t)0x2f49ee0f, (q31_t)0x6b294bd5, (q31_t)0x2f417573,\n    (q31_t)0x6b329255, (q31_t)0x2f38fb03, (q31_t)0x6b3bd72a, (q31_t)0x2f307ec2,\n    (q31_t)0x6b451a55, (q31_t)0x2f2800af, (q31_t)0x6b4e5bd4, (q31_t)0x2f1f80ca,\n    (q31_t)0x6b579ba8, (q31_t)0x2f16ff14, (q31_t)0x6b60d9d0, (q31_t)0x2f0e7b8e,\n    (q31_t)0x6b6a164d, (q31_t)0x2f05f637, (q31_t)0x6b73511c, (q31_t)0x2efd6f10,\n    (q31_t)0x6b7c8a3f, (q31_t)0x2ef4e619, (q31_t)0x6b85c1b5, (q31_t)0x2eec5b53,\n    (q31_t)0x6b8ef77d, (q31_t)0x2ee3cebe, (q31_t)0x6b982b97, (q31_t)0x2edb405a,\n    (q31_t)0x6ba15e03, (q31_t)0x2ed2b027, (q31_t)0x6baa8ec0, (q31_t)0x2eca1e27,\n    (q31_t)0x6bb3bdce, (q31_t)0x2ec18a58, (q31_t)0x6bbceb2d, (q31_t)0x2eb8f4bc,\n    (q31_t)0x6bc616dd, (q31_t)0x2eb05d53, (q31_t)0x6bcf40dc, (q31_t)0x2ea7c41e,\n    (q31_t)0x6bd8692b, (q31_t)0x2e9f291b, (q31_t)0x6be18fc9, (q31_t)0x2e968c4d,\n    (q31_t)0x6beab4b6, (q31_t)0x2e8dedb3, (q31_t)0x6bf3d7f2, (q31_t)0x2e854d4d,\n    (q31_t)0x6bfcf97c, (q31_t)0x2e7cab1c, (q31_t)0x6c061953, (q31_t)0x2e740720,\n    (q31_t)0x6c0f3779, (q31_t)0x2e6b615a, (q31_t)0x6c1853eb, (q31_t)0x2e62b9ca,\n    (q31_t)0x6c216eaa, (q31_t)0x2e5a1070, (q31_t)0x6c2a87b6, (q31_t)0x2e51654c,\n    (q31_t)0x6c339f0e, (q31_t)0x2e48b860, (q31_t)0x6c3cb4b1, (q31_t)0x2e4009aa,\n    (q31_t)0x6c45c8a0, (q31_t)0x2e37592c, (q31_t)0x6c4edada, (q31_t)0x2e2ea6e6,\n    (q31_t)0x6c57eb5e, (q31_t)0x2e25f2d8, (q31_t)0x6c60fa2d, (q31_t)0x2e1d3d03,\n    (q31_t)0x6c6a0746, (q31_t)0x2e148566, (q31_t)0x6c7312a9, (q31_t)0x2e0bcc03,\n    (q31_t)0x6c7c1c55, (q31_t)0x2e0310d9, (q31_t)0x6c85244a, (q31_t)0x2dfa53e9,\n    (q31_t)0x6c8e2a87, (q31_t)0x2df19534, (q31_t)0x6c972f0d, (q31_t)0x2de8d4b8,\n    (q31_t)0x6ca031da, (q31_t)0x2de01278, (q31_t)0x6ca932ef, (q31_t)0x2dd74e73,\n    (q31_t)0x6cb2324c, (q31_t)0x2dce88aa, (q31_t)0x6cbb2fef, (q31_t)0x2dc5c11c,\n    (q31_t)0x6cc42bd9, (q31_t)0x2dbcf7cb, (q31_t)0x6ccd2609, (q31_t)0x2db42cb6,\n    (q31_t)0x6cd61e7f, (q31_t)0x2dab5fdf, (q31_t)0x6cdf153a, (q31_t)0x2da29144,\n    (q31_t)0x6ce80a3a, (q31_t)0x2d99c0e7, (q31_t)0x6cf0fd80, (q31_t)0x2d90eec8,\n    (q31_t)0x6cf9ef09, (q31_t)0x2d881ae8, (q31_t)0x6d02ded7, (q31_t)0x2d7f4545,\n    (q31_t)0x6d0bcce8, (q31_t)0x2d766de2, (q31_t)0x6d14b93d, (q31_t)0x2d6d94bf,\n    (q31_t)0x6d1da3d5, (q31_t)0x2d64b9da, (q31_t)0x6d268cb0, (q31_t)0x2d5bdd36,\n    (q31_t)0x6d2f73cd, (q31_t)0x2d52fed2, (q31_t)0x6d38592c, (q31_t)0x2d4a1eaf,\n    (q31_t)0x6d413ccd, (q31_t)0x2d413ccd, (q31_t)0x6d4a1eaf, (q31_t)0x2d38592c,\n    (q31_t)0x6d52fed2, (q31_t)0x2d2f73cd, (q31_t)0x6d5bdd36, (q31_t)0x2d268cb0,\n    (q31_t)0x6d64b9da, (q31_t)0x2d1da3d5, (q31_t)0x6d6d94bf, (q31_t)0x2d14b93d,\n    (q31_t)0x6d766de2, (q31_t)0x2d0bcce8, (q31_t)0x6d7f4545, (q31_t)0x2d02ded7,\n    (q31_t)0x6d881ae8, (q31_t)0x2cf9ef09, (q31_t)0x6d90eec8, (q31_t)0x2cf0fd80,\n    (q31_t)0x6d99c0e7, (q31_t)0x2ce80a3a, (q31_t)0x6da29144, (q31_t)0x2cdf153a,\n    (q31_t)0x6dab5fdf, (q31_t)0x2cd61e7f, (q31_t)0x6db42cb6, (q31_t)0x2ccd2609,\n    (q31_t)0x6dbcf7cb, (q31_t)0x2cc42bd9, (q31_t)0x6dc5c11c, (q31_t)0x2cbb2fef,\n    (q31_t)0x6dce88aa, (q31_t)0x2cb2324c, (q31_t)0x6dd74e73, (q31_t)0x2ca932ef,\n    (q31_t)0x6de01278, (q31_t)0x2ca031da, (q31_t)0x6de8d4b8, (q31_t)0x2c972f0d,\n    (q31_t)0x6df19534, (q31_t)0x2c8e2a87, (q31_t)0x6dfa53e9, (q31_t)0x2c85244a,\n    (q31_t)0x6e0310d9, (q31_t)0x2c7c1c55, (q31_t)0x6e0bcc03, (q31_t)0x2c7312a9,\n    (q31_t)0x6e148566, (q31_t)0x2c6a0746, (q31_t)0x6e1d3d03, (q31_t)0x2c60fa2d,\n    (q31_t)0x6e25f2d8, (q31_t)0x2c57eb5e, (q31_t)0x6e2ea6e6, (q31_t)0x2c4edada,\n    (q31_t)0x6e37592c, (q31_t)0x2c45c8a0, (q31_t)0x6e4009aa, (q31_t)0x2c3cb4b1,\n    (q31_t)0x6e48b860, (q31_t)0x2c339f0e, (q31_t)0x6e51654c, (q31_t)0x2c2a87b6,\n    (q31_t)0x6e5a1070, (q31_t)0x2c216eaa, (q31_t)0x6e62b9ca, (q31_t)0x2c1853eb,\n    (q31_t)0x6e6b615a, (q31_t)0x2c0f3779, (q31_t)0x6e740720, (q31_t)0x2c061953,\n    (q31_t)0x6e7cab1c, (q31_t)0x2bfcf97c, (q31_t)0x6e854d4d, (q31_t)0x2bf3d7f2,\n    (q31_t)0x6e8dedb3, (q31_t)0x2beab4b6, (q31_t)0x6e968c4d, (q31_t)0x2be18fc9,\n    (q31_t)0x6e9f291b, (q31_t)0x2bd8692b, (q31_t)0x6ea7c41e, (q31_t)0x2bcf40dc,\n    (q31_t)0x6eb05d53, (q31_t)0x2bc616dd, (q31_t)0x6eb8f4bc, (q31_t)0x2bbceb2d,\n    (q31_t)0x6ec18a58, (q31_t)0x2bb3bdce, (q31_t)0x6eca1e27, (q31_t)0x2baa8ec0,\n    (q31_t)0x6ed2b027, (q31_t)0x2ba15e03, (q31_t)0x6edb405a, (q31_t)0x2b982b97,\n    (q31_t)0x6ee3cebe, (q31_t)0x2b8ef77d, (q31_t)0x6eec5b53, (q31_t)0x2b85c1b5,\n    (q31_t)0x6ef4e619, (q31_t)0x2b7c8a3f, (q31_t)0x6efd6f10, (q31_t)0x2b73511c,\n    (q31_t)0x6f05f637, (q31_t)0x2b6a164d, (q31_t)0x6f0e7b8e, (q31_t)0x2b60d9d0,\n    (q31_t)0x6f16ff14, (q31_t)0x2b579ba8, (q31_t)0x6f1f80ca, (q31_t)0x2b4e5bd4,\n    (q31_t)0x6f2800af, (q31_t)0x2b451a55, (q31_t)0x6f307ec2, (q31_t)0x2b3bd72a,\n    (q31_t)0x6f38fb03, (q31_t)0x2b329255, (q31_t)0x6f417573, (q31_t)0x2b294bd5,\n    (q31_t)0x6f49ee0f, (q31_t)0x2b2003ac, (q31_t)0x6f5264da, (q31_t)0x2b16b9d9,\n    (q31_t)0x6f5ad9d1, (q31_t)0x2b0d6e5c, (q31_t)0x6f634cf5, (q31_t)0x2b042137,\n    (q31_t)0x6f6bbe45, (q31_t)0x2afad269, (q31_t)0x6f742dc1, (q31_t)0x2af181f3,\n    (q31_t)0x6f7c9b69, (q31_t)0x2ae82fd5, (q31_t)0x6f85073c, (q31_t)0x2adedc10,\n    (q31_t)0x6f8d713a, (q31_t)0x2ad586a3, (q31_t)0x6f95d963, (q31_t)0x2acc2f90,\n    (q31_t)0x6f9e3fb6, (q31_t)0x2ac2d6d6, (q31_t)0x6fa6a433, (q31_t)0x2ab97c77,\n    (q31_t)0x6faf06da, (q31_t)0x2ab02071, (q31_t)0x6fb767aa, (q31_t)0x2aa6c2c6,\n    (q31_t)0x6fbfc6a3, (q31_t)0x2a9d6377, (q31_t)0x6fc823c5, (q31_t)0x2a940283,\n    (q31_t)0x6fd07f0f, (q31_t)0x2a8a9fea, (q31_t)0x6fd8d882, (q31_t)0x2a813bae,\n    (q31_t)0x6fe1301c, (q31_t)0x2a77d5ce, (q31_t)0x6fe985de, (q31_t)0x2a6e6e4b,\n    (q31_t)0x6ff1d9c7, (q31_t)0x2a650525, (q31_t)0x6ffa2bd6, (q31_t)0x2a5b9a5d,\n    (q31_t)0x70027c0c, (q31_t)0x2a522df3, (q31_t)0x700aca69, (q31_t)0x2a48bfe7,\n    (q31_t)0x701316eb, (q31_t)0x2a3f503a, (q31_t)0x701b6193, (q31_t)0x2a35deeb,\n    (q31_t)0x7023aa5f, (q31_t)0x2a2c6bfd, (q31_t)0x702bf151, (q31_t)0x2a22f76e,\n    (q31_t)0x70343667, (q31_t)0x2a19813f, (q31_t)0x703c79a2, (q31_t)0x2a100970,\n    (q31_t)0x7044bb00, (q31_t)0x2a069003, (q31_t)0x704cfa83, (q31_t)0x29fd14f6,\n    (q31_t)0x70553828, (q31_t)0x29f3984c, (q31_t)0x705d73f0, (q31_t)0x29ea1a03,\n    (q31_t)0x7065addb, (q31_t)0x29e09a1c, (q31_t)0x706de5e9, (q31_t)0x29d71899,\n    (q31_t)0x70761c18, (q31_t)0x29cd9578, (q31_t)0x707e5069, (q31_t)0x29c410ba,\n    (q31_t)0x708682dc, (q31_t)0x29ba8a61, (q31_t)0x708eb36f, (q31_t)0x29b1026c,\n    (q31_t)0x7096e223, (q31_t)0x29a778db, (q31_t)0x709f0ef8, (q31_t)0x299dedaf,\n    (q31_t)0x70a739ed, (q31_t)0x299460e8, (q31_t)0x70af6302, (q31_t)0x298ad287,\n    (q31_t)0x70b78a36, (q31_t)0x2981428c, (q31_t)0x70bfaf89, (q31_t)0x2977b0f7,\n    (q31_t)0x70c7d2fb, (q31_t)0x296e1dc9, (q31_t)0x70cff48c, (q31_t)0x29648902,\n    (q31_t)0x70d8143b, (q31_t)0x295af2a3, (q31_t)0x70e03208, (q31_t)0x29515aab,\n    (q31_t)0x70e84df3, (q31_t)0x2947c11c, (q31_t)0x70f067fb, (q31_t)0x293e25f5,\n    (q31_t)0x70f8801f, (q31_t)0x29348937, (q31_t)0x71009661, (q31_t)0x292aeae3,\n    (q31_t)0x7108aabf, (q31_t)0x29214af8, (q31_t)0x7110bd39, (q31_t)0x2917a977,\n    (q31_t)0x7118cdcf, (q31_t)0x290e0661, (q31_t)0x7120dc80, (q31_t)0x290461b5,\n    (q31_t)0x7128e94c, (q31_t)0x28fabb75, (q31_t)0x7130f433, (q31_t)0x28f113a0,\n    (q31_t)0x7138fd35, (q31_t)0x28e76a37, (q31_t)0x71410450, (q31_t)0x28ddbf3b,\n    (q31_t)0x71490986, (q31_t)0x28d412ab, (q31_t)0x71510cd5, (q31_t)0x28ca6488,\n    (q31_t)0x71590e3e, (q31_t)0x28c0b4d2, (q31_t)0x71610dbf, (q31_t)0x28b7038b,\n    (q31_t)0x71690b59, (q31_t)0x28ad50b1, (q31_t)0x7171070c, (q31_t)0x28a39c46,\n    (q31_t)0x717900d6, (q31_t)0x2899e64a, (q31_t)0x7180f8b8, (q31_t)0x28902ebd,\n    (q31_t)0x7188eeb2, (q31_t)0x288675a0, (q31_t)0x7190e2c3, (q31_t)0x287cbaf3,\n    (q31_t)0x7198d4ea, (q31_t)0x2872feb6, (q31_t)0x71a0c528, (q31_t)0x286940ea,\n    (q31_t)0x71a8b37c, (q31_t)0x285f8190, (q31_t)0x71b09fe7, (q31_t)0x2855c0a6,\n    (q31_t)0x71b88a66, (q31_t)0x284bfe2f, (q31_t)0x71c072fb, (q31_t)0x28423a2a,\n    (q31_t)0x71c859a5, (q31_t)0x28387498, (q31_t)0x71d03e64, (q31_t)0x282ead78,\n    (q31_t)0x71d82137, (q31_t)0x2824e4cc, (q31_t)0x71e0021e, (q31_t)0x281b1a94,\n    (q31_t)0x71e7e118, (q31_t)0x28114ed0, (q31_t)0x71efbe27, (q31_t)0x28078181,\n    (q31_t)0x71f79948, (q31_t)0x27fdb2a7, (q31_t)0x71ff727c, (q31_t)0x27f3e241,\n    (q31_t)0x720749c3, (q31_t)0x27ea1052, (q31_t)0x720f1f1c, (q31_t)0x27e03cd8,\n    (q31_t)0x7216f287, (q31_t)0x27d667d5, (q31_t)0x721ec403, (q31_t)0x27cc9149,\n    (q31_t)0x72269391, (q31_t)0x27c2b934, (q31_t)0x722e6130, (q31_t)0x27b8df97,\n    (q31_t)0x72362ce0, (q31_t)0x27af0472, (q31_t)0x723df6a0, (q31_t)0x27a527c4,\n    (q31_t)0x7245be70, (q31_t)0x279b4990, (q31_t)0x724d8450, (q31_t)0x279169d5,\n    (q31_t)0x72554840, (q31_t)0x27878893, (q31_t)0x725d0a3e, (q31_t)0x277da5cb,\n    (q31_t)0x7264ca4c, (q31_t)0x2773c17d, (q31_t)0x726c8868, (q31_t)0x2769dbaa,\n    (q31_t)0x72744493, (q31_t)0x275ff452, (q31_t)0x727bfecc, (q31_t)0x27560b76,\n    (q31_t)0x7283b712, (q31_t)0x274c2115, (q31_t)0x728b6d66, (q31_t)0x27423530,\n    (q31_t)0x729321c7, (q31_t)0x273847c8, (q31_t)0x729ad435, (q31_t)0x272e58dc,\n    (q31_t)0x72a284b0, (q31_t)0x2724686e, (q31_t)0x72aa3336, (q31_t)0x271a767e,\n    (q31_t)0x72b1dfc9, (q31_t)0x2710830c, (q31_t)0x72b98a67, (q31_t)0x27068e18,\n    (q31_t)0x72c13311, (q31_t)0x26fc97a3, (q31_t)0x72c8d9c6, (q31_t)0x26f29fad,\n    (q31_t)0x72d07e85, (q31_t)0x26e8a637, (q31_t)0x72d82150, (q31_t)0x26deab41,\n    (q31_t)0x72dfc224, (q31_t)0x26d4aecb, (q31_t)0x72e76102, (q31_t)0x26cab0d6,\n    (q31_t)0x72eefdea, (q31_t)0x26c0b162, (q31_t)0x72f698db, (q31_t)0x26b6b070,\n    (q31_t)0x72fe31d5, (q31_t)0x26acadff, (q31_t)0x7305c8d7, (q31_t)0x26a2aa11,\n    (q31_t)0x730d5de3, (q31_t)0x2698a4a6, (q31_t)0x7314f0f6, (q31_t)0x268e9dbd,\n    (q31_t)0x731c8211, (q31_t)0x26849558, (q31_t)0x73241134, (q31_t)0x267a8b77,\n    (q31_t)0x732b9e5e, (q31_t)0x2670801a, (q31_t)0x7333298f, (q31_t)0x26667342,\n    (q31_t)0x733ab2c6, (q31_t)0x265c64ef, (q31_t)0x73423a04, (q31_t)0x26525521,\n    (q31_t)0x7349bf48, (q31_t)0x264843d9, (q31_t)0x73514292, (q31_t)0x263e3117,\n    (q31_t)0x7358c3e2, (q31_t)0x26341cdb, (q31_t)0x73604336, (q31_t)0x262a0727,\n    (q31_t)0x7367c090, (q31_t)0x261feffa, (q31_t)0x736f3bee, (q31_t)0x2615d754,\n    (q31_t)0x7376b551, (q31_t)0x260bbd37, (q31_t)0x737e2cb7, (q31_t)0x2601a1a2,\n    (q31_t)0x7385a222, (q31_t)0x25f78497, (q31_t)0x738d1590, (q31_t)0x25ed6614,\n    (q31_t)0x73948701, (q31_t)0x25e3461b, (q31_t)0x739bf675, (q31_t)0x25d924ac,\n    (q31_t)0x73a363ec, (q31_t)0x25cf01c8, (q31_t)0x73aacf65, (q31_t)0x25c4dd6e,\n    (q31_t)0x73b238e0, (q31_t)0x25bab7a0, (q31_t)0x73b9a05d, (q31_t)0x25b0905d,\n    (q31_t)0x73c105db, (q31_t)0x25a667a7, (q31_t)0x73c8695b, (q31_t)0x259c3d7c,\n    (q31_t)0x73cfcadc, (q31_t)0x259211df, (q31_t)0x73d72a5d, (q31_t)0x2587e4cf,\n    (q31_t)0x73de87de, (q31_t)0x257db64c, (q31_t)0x73e5e360, (q31_t)0x25738657,\n    (q31_t)0x73ed3ce1, (q31_t)0x256954f1, (q31_t)0x73f49462, (q31_t)0x255f2219,\n    (q31_t)0x73fbe9e2, (q31_t)0x2554edd1, (q31_t)0x74033d61, (q31_t)0x254ab818,\n    (q31_t)0x740a8edf, (q31_t)0x254080ef, (q31_t)0x7411de5b, (q31_t)0x25364857,\n    (q31_t)0x74192bd5, (q31_t)0x252c0e4f, (q31_t)0x7420774d, (q31_t)0x2521d2d8,\n    (q31_t)0x7427c0c3, (q31_t)0x251795f3, (q31_t)0x742f0836, (q31_t)0x250d57a0,\n    (q31_t)0x74364da6, (q31_t)0x250317df, (q31_t)0x743d9112, (q31_t)0x24f8d6b0,\n    (q31_t)0x7444d27b, (q31_t)0x24ee9415, (q31_t)0x744c11e0, (q31_t)0x24e4500e,\n    (q31_t)0x74534f41, (q31_t)0x24da0a9a, (q31_t)0x745a8a9d, (q31_t)0x24cfc3ba,\n    (q31_t)0x7461c3f5, (q31_t)0x24c57b6f, (q31_t)0x7468fb47, (q31_t)0x24bb31ba,\n    (q31_t)0x74703095, (q31_t)0x24b0e699, (q31_t)0x747763dd, (q31_t)0x24a69a0f,\n    (q31_t)0x747e951f, (q31_t)0x249c4c1b, (q31_t)0x7485c45b, (q31_t)0x2491fcbe,\n    (q31_t)0x748cf190, (q31_t)0x2487abf7, (q31_t)0x74941cbf, (q31_t)0x247d59c8,\n    (q31_t)0x749b45e7, (q31_t)0x24730631, (q31_t)0x74a26d08, (q31_t)0x2468b132,\n    (q31_t)0x74a99221, (q31_t)0x245e5acc, (q31_t)0x74b0b533, (q31_t)0x245402ff,\n    (q31_t)0x74b7d63c, (q31_t)0x2449a9cc, (q31_t)0x74bef53d, (q31_t)0x243f4f32,\n    (q31_t)0x74c61236, (q31_t)0x2434f332, (q31_t)0x74cd2d26, (q31_t)0x242a95ce,\n    (q31_t)0x74d4460c, (q31_t)0x24203704, (q31_t)0x74db5cea, (q31_t)0x2415d6d5,\n    (q31_t)0x74e271bd, (q31_t)0x240b7543, (q31_t)0x74e98487, (q31_t)0x2401124d,\n    (q31_t)0x74f09546, (q31_t)0x23f6adf3, (q31_t)0x74f7a3fb, (q31_t)0x23ec4837,\n    (q31_t)0x74feb0a5, (q31_t)0x23e1e117, (q31_t)0x7505bb44, (q31_t)0x23d77896,\n    (q31_t)0x750cc3d8, (q31_t)0x23cd0eb3, (q31_t)0x7513ca60, (q31_t)0x23c2a36f,\n    (q31_t)0x751acedd, (q31_t)0x23b836ca, (q31_t)0x7521d14d, (q31_t)0x23adc8c4,\n    (q31_t)0x7528d1b1, (q31_t)0x23a3595e, (q31_t)0x752fd008, (q31_t)0x2398e898,\n    (q31_t)0x7536cc52, (q31_t)0x238e7673, (q31_t)0x753dc68f, (q31_t)0x238402ef,\n    (q31_t)0x7544bebf, (q31_t)0x23798e0d, (q31_t)0x754bb4e1, (q31_t)0x236f17cc,\n    (q31_t)0x7552a8f4, (q31_t)0x2364a02e, (q31_t)0x75599afa, (q31_t)0x235a2733,\n    (q31_t)0x75608af1, (q31_t)0x234facda, (q31_t)0x756778d9, (q31_t)0x23453125,\n    (q31_t)0x756e64b2, (q31_t)0x233ab414, (q31_t)0x75754e7c, (q31_t)0x233035a7,\n    (q31_t)0x757c3636, (q31_t)0x2325b5df, (q31_t)0x75831be0, (q31_t)0x231b34bc,\n    (q31_t)0x7589ff7a, (q31_t)0x2310b23e, (q31_t)0x7590e104, (q31_t)0x23062e67,\n    (q31_t)0x7597c07d, (q31_t)0x22fba936, (q31_t)0x759e9de5, (q31_t)0x22f122ab,\n    (q31_t)0x75a5793c, (q31_t)0x22e69ac8, (q31_t)0x75ac5282, (q31_t)0x22dc118c,\n    (q31_t)0x75b329b5, (q31_t)0x22d186f8, (q31_t)0x75b9fed7, (q31_t)0x22c6fb0c,\n    (q31_t)0x75c0d1e7, (q31_t)0x22bc6dca, (q31_t)0x75c7a2e3, (q31_t)0x22b1df30,\n    (q31_t)0x75ce71ce, (q31_t)0x22a74f40, (q31_t)0x75d53ea5, (q31_t)0x229cbdfa,\n    (q31_t)0x75dc0968, (q31_t)0x22922b5e, (q31_t)0x75e2d219, (q31_t)0x2287976e,\n    (q31_t)0x75e998b5, (q31_t)0x227d0228, (q31_t)0x75f05d3d, (q31_t)0x22726b8e,\n    (q31_t)0x75f71fb1, (q31_t)0x2267d3a0, (q31_t)0x75fde011, (q31_t)0x225d3a5e,\n    (q31_t)0x76049e5b, (q31_t)0x22529fca, (q31_t)0x760b5a90, (q31_t)0x224803e2,\n    (q31_t)0x761214b0, (q31_t)0x223d66a8, (q31_t)0x7618ccba, (q31_t)0x2232c81c,\n    (q31_t)0x761f82af, (q31_t)0x2228283f, (q31_t)0x7626368d, (q31_t)0x221d8711,\n    (q31_t)0x762ce855, (q31_t)0x2212e492, (q31_t)0x76339806, (q31_t)0x220840c2,\n    (q31_t)0x763a45a0, (q31_t)0x21fd9ba3, (q31_t)0x7640f123, (q31_t)0x21f2f534,\n    (q31_t)0x76479a8e, (q31_t)0x21e84d76, (q31_t)0x764e41e2, (q31_t)0x21dda46a,\n    (q31_t)0x7654e71d, (q31_t)0x21d2fa0f, (q31_t)0x765b8a41, (q31_t)0x21c84e67,\n    (q31_t)0x76622b4c, (q31_t)0x21bda171, (q31_t)0x7668ca3e, (q31_t)0x21b2f32e,\n    (q31_t)0x766f6717, (q31_t)0x21a8439e, (q31_t)0x767601d7, (q31_t)0x219d92c2,\n    (q31_t)0x767c9a7e, (q31_t)0x2192e09b, (q31_t)0x7683310b, (q31_t)0x21882d28,\n    (q31_t)0x7689c57d, (q31_t)0x217d786a, (q31_t)0x769057d6, (q31_t)0x2172c262,\n    (q31_t)0x7696e814, (q31_t)0x21680b0f, (q31_t)0x769d7637, (q31_t)0x215d5273,\n    (q31_t)0x76a4023f, (q31_t)0x2152988d, (q31_t)0x76aa8c2c, (q31_t)0x2147dd5f,\n    (q31_t)0x76b113fd, (q31_t)0x213d20e8, (q31_t)0x76b799b3, (q31_t)0x21326329,\n    (q31_t)0x76be1d4c, (q31_t)0x2127a423, (q31_t)0x76c49ec9, (q31_t)0x211ce3d5,\n    (q31_t)0x76cb1e2a, (q31_t)0x21122240, (q31_t)0x76d19b6e, (q31_t)0x21075f65,\n    (q31_t)0x76d81695, (q31_t)0x20fc9b44, (q31_t)0x76de8f9e, (q31_t)0x20f1d5de,\n    (q31_t)0x76e5068a, (q31_t)0x20e70f32, (q31_t)0x76eb7b58, (q31_t)0x20dc4742,\n    (q31_t)0x76f1ee09, (q31_t)0x20d17e0d, (q31_t)0x76f85e9a, (q31_t)0x20c6b395,\n    (q31_t)0x76fecd0e, (q31_t)0x20bbe7d8, (q31_t)0x77053962, (q31_t)0x20b11ad9,\n    (q31_t)0x770ba398, (q31_t)0x20a64c97, (q31_t)0x77120bae, (q31_t)0x209b7d13,\n    (q31_t)0x771871a5, (q31_t)0x2090ac4d, (q31_t)0x771ed57c, (q31_t)0x2085da46,\n    (q31_t)0x77253733, (q31_t)0x207b06fe, (q31_t)0x772b96ca, (q31_t)0x20703275,\n    (q31_t)0x7731f440, (q31_t)0x20655cac, (q31_t)0x77384f95, (q31_t)0x205a85a3,\n    (q31_t)0x773ea8ca, (q31_t)0x204fad5b, (q31_t)0x7744ffdd, (q31_t)0x2044d3d4,\n    (q31_t)0x774b54ce, (q31_t)0x2039f90f, (q31_t)0x7751a79e, (q31_t)0x202f1d0b,\n    (q31_t)0x7757f84c, (q31_t)0x20243fca, (q31_t)0x775e46d8, (q31_t)0x2019614c,\n    (q31_t)0x77649341, (q31_t)0x200e8190, (q31_t)0x776add88, (q31_t)0x2003a099,\n    (q31_t)0x777125ac, (q31_t)0x1ff8be65, (q31_t)0x77776bac, (q31_t)0x1feddaf6,\n    (q31_t)0x777daf89, (q31_t)0x1fe2f64c, (q31_t)0x7783f143, (q31_t)0x1fd81067,\n    (q31_t)0x778a30d8, (q31_t)0x1fcd2948, (q31_t)0x77906e49, (q31_t)0x1fc240ef,\n    (q31_t)0x7796a996, (q31_t)0x1fb7575c, (q31_t)0x779ce2be, (q31_t)0x1fac6c91,\n    (q31_t)0x77a319c2, (q31_t)0x1fa1808c, (q31_t)0x77a94ea0, (q31_t)0x1f969350,\n    (q31_t)0x77af8159, (q31_t)0x1f8ba4dc, (q31_t)0x77b5b1ec, (q31_t)0x1f80b531,\n    (q31_t)0x77bbe05a, (q31_t)0x1f75c44e, (q31_t)0x77c20ca1, (q31_t)0x1f6ad235,\n    (q31_t)0x77c836c2, (q31_t)0x1f5fdee6, (q31_t)0x77ce5ebd, (q31_t)0x1f54ea62,\n    (q31_t)0x77d48490, (q31_t)0x1f49f4a8, (q31_t)0x77daa83d, (q31_t)0x1f3efdb9,\n    (q31_t)0x77e0c9c3, (q31_t)0x1f340596, (q31_t)0x77e6e921, (q31_t)0x1f290c3f,\n    (q31_t)0x77ed0657, (q31_t)0x1f1e11b5, (q31_t)0x77f32165, (q31_t)0x1f1315f7,\n    (q31_t)0x77f93a4b, (q31_t)0x1f081907, (q31_t)0x77ff5109, (q31_t)0x1efd1ae4,\n    (q31_t)0x7805659e, (q31_t)0x1ef21b90, (q31_t)0x780b780a, (q31_t)0x1ee71b0a,\n    (q31_t)0x7811884d, (q31_t)0x1edc1953, (q31_t)0x78179666, (q31_t)0x1ed1166b,\n    (q31_t)0x781da256, (q31_t)0x1ec61254, (q31_t)0x7823ac1d, (q31_t)0x1ebb0d0d,\n    (q31_t)0x7829b3b9, (q31_t)0x1eb00696, (q31_t)0x782fb92a, (q31_t)0x1ea4fef0,\n    (q31_t)0x7835bc71, (q31_t)0x1e99f61d, (q31_t)0x783bbd8e, (q31_t)0x1e8eec1b,\n    (q31_t)0x7841bc7f, (q31_t)0x1e83e0eb, (q31_t)0x7847b946, (q31_t)0x1e78d48e,\n    (q31_t)0x784db3e0, (q31_t)0x1e6dc705, (q31_t)0x7853ac4f, (q31_t)0x1e62b84f,\n    (q31_t)0x7859a292, (q31_t)0x1e57a86d, (q31_t)0x785f96a9, (q31_t)0x1e4c9760,\n    (q31_t)0x78658894, (q31_t)0x1e418528, (q31_t)0x786b7852, (q31_t)0x1e3671c5,\n    (q31_t)0x787165e3, (q31_t)0x1e2b5d38, (q31_t)0x78775147, (q31_t)0x1e204781,\n    (q31_t)0x787d3a7e, (q31_t)0x1e1530a1, (q31_t)0x78832187, (q31_t)0x1e0a1898,\n    (q31_t)0x78890663, (q31_t)0x1dfeff67, (q31_t)0x788ee910, (q31_t)0x1df3e50d,\n    (q31_t)0x7894c98f, (q31_t)0x1de8c98c, (q31_t)0x789aa7e0, (q31_t)0x1dddace4,\n    (q31_t)0x78a08402, (q31_t)0x1dd28f15, (q31_t)0x78a65df6, (q31_t)0x1dc7701f,\n    (q31_t)0x78ac35ba, (q31_t)0x1dbc5004, (q31_t)0x78b20b4f, (q31_t)0x1db12ec3,\n    (q31_t)0x78b7deb4, (q31_t)0x1da60c5d, (q31_t)0x78bdafea, (q31_t)0x1d9ae8d2,\n    (q31_t)0x78c37eef, (q31_t)0x1d8fc424, (q31_t)0x78c94bc4, (q31_t)0x1d849e51,\n    (q31_t)0x78cf1669, (q31_t)0x1d79775c, (q31_t)0x78d4dedd, (q31_t)0x1d6e4f43,\n    (q31_t)0x78daa520, (q31_t)0x1d632608, (q31_t)0x78e06932, (q31_t)0x1d57fbaa,\n    (q31_t)0x78e62b13, (q31_t)0x1d4cd02c, (q31_t)0x78ebeac2, (q31_t)0x1d41a38c,\n    (q31_t)0x78f1a840, (q31_t)0x1d3675cb, (q31_t)0x78f7638b, (q31_t)0x1d2b46ea,\n    (q31_t)0x78fd1ca4, (q31_t)0x1d2016e9, (q31_t)0x7902d38b, (q31_t)0x1d14e5c9,\n    (q31_t)0x7908883f, (q31_t)0x1d09b389, (q31_t)0x790e3ac0, (q31_t)0x1cfe802b,\n    (q31_t)0x7913eb0e, (q31_t)0x1cf34baf, (q31_t)0x79199929, (q31_t)0x1ce81615,\n    (q31_t)0x791f4510, (q31_t)0x1cdcdf5e, (q31_t)0x7924eec3, (q31_t)0x1cd1a78a,\n    (q31_t)0x792a9642, (q31_t)0x1cc66e99, (q31_t)0x79303b8e, (q31_t)0x1cbb348d,\n    (q31_t)0x7935dea4, (q31_t)0x1caff965, (q31_t)0x793b7f86, (q31_t)0x1ca4bd21,\n    (q31_t)0x79411e33, (q31_t)0x1c997fc4, (q31_t)0x7946baac, (q31_t)0x1c8e414b,\n    (q31_t)0x794c54ee, (q31_t)0x1c8301b9, (q31_t)0x7951ecfc, (q31_t)0x1c77c10e,\n    (q31_t)0x795782d3, (q31_t)0x1c6c7f4a, (q31_t)0x795d1675, (q31_t)0x1c613c6d,\n    (q31_t)0x7962a7e0, (q31_t)0x1c55f878, (q31_t)0x79683715, (q31_t)0x1c4ab36b,\n    (q31_t)0x796dc414, (q31_t)0x1c3f6d47, (q31_t)0x79734edc, (q31_t)0x1c34260c,\n    (q31_t)0x7978d76c, (q31_t)0x1c28ddbb, (q31_t)0x797e5dc6, (q31_t)0x1c1d9454,\n    (q31_t)0x7983e1e8, (q31_t)0x1c1249d8, (q31_t)0x798963d2, (q31_t)0x1c06fe46,\n    (q31_t)0x798ee385, (q31_t)0x1bfbb1a0, (q31_t)0x799460ff, (q31_t)0x1bf063e6,\n    (q31_t)0x7999dc42, (q31_t)0x1be51518, (q31_t)0x799f554b, (q31_t)0x1bd9c537,\n    (q31_t)0x79a4cc1c, (q31_t)0x1bce7442, (q31_t)0x79aa40b4, (q31_t)0x1bc3223c,\n    (q31_t)0x79afb313, (q31_t)0x1bb7cf23, (q31_t)0x79b52339, (q31_t)0x1bac7af9,\n    (q31_t)0x79ba9125, (q31_t)0x1ba125bd, (q31_t)0x79bffcd7, (q31_t)0x1b95cf71,\n    (q31_t)0x79c5664f, (q31_t)0x1b8a7815, (q31_t)0x79cacd8d, (q31_t)0x1b7f1fa9,\n    (q31_t)0x79d03291, (q31_t)0x1b73c62d, (q31_t)0x79d5955a, (q31_t)0x1b686ba3,\n    (q31_t)0x79daf5e8, (q31_t)0x1b5d100a, (q31_t)0x79e0543c, (q31_t)0x1b51b363,\n    (q31_t)0x79e5b054, (q31_t)0x1b4655ae, (q31_t)0x79eb0a31, (q31_t)0x1b3af6ec,\n    (q31_t)0x79f061d2, (q31_t)0x1b2f971e, (q31_t)0x79f5b737, (q31_t)0x1b243643,\n    (q31_t)0x79fb0a60, (q31_t)0x1b18d45c, (q31_t)0x7a005b4d, (q31_t)0x1b0d716a,\n    (q31_t)0x7a05a9fd, (q31_t)0x1b020d6c, (q31_t)0x7a0af671, (q31_t)0x1af6a865,\n    (q31_t)0x7a1040a8, (q31_t)0x1aeb4253, (q31_t)0x7a1588a2, (q31_t)0x1adfdb37,\n    (q31_t)0x7a1ace5f, (q31_t)0x1ad47312, (q31_t)0x7a2011de, (q31_t)0x1ac909e5,\n    (q31_t)0x7a25531f, (q31_t)0x1abd9faf, (q31_t)0x7a2a9223, (q31_t)0x1ab23471,\n    (q31_t)0x7a2fcee8, (q31_t)0x1aa6c82b, (q31_t)0x7a350970, (q31_t)0x1a9b5adf,\n    (q31_t)0x7a3a41b9, (q31_t)0x1a8fec8c, (q31_t)0x7a3f77c3, (q31_t)0x1a847d33,\n    (q31_t)0x7a44ab8e, (q31_t)0x1a790cd4, (q31_t)0x7a49dd1a, (q31_t)0x1a6d9b70,\n    (q31_t)0x7a4f0c67, (q31_t)0x1a622907, (q31_t)0x7a543974, (q31_t)0x1a56b599,\n    (q31_t)0x7a596442, (q31_t)0x1a4b4128, (q31_t)0x7a5e8cd0, (q31_t)0x1a3fcbb3,\n    (q31_t)0x7a63b31d, (q31_t)0x1a34553b, (q31_t)0x7a68d72b, (q31_t)0x1a28ddc0,\n    (q31_t)0x7a6df8f8, (q31_t)0x1a1d6544, (q31_t)0x7a731884, (q31_t)0x1a11ebc5,\n    (q31_t)0x7a7835cf, (q31_t)0x1a067145, (q31_t)0x7a7d50da, (q31_t)0x19faf5c5,\n    (q31_t)0x7a8269a3, (q31_t)0x19ef7944, (q31_t)0x7a87802a, (q31_t)0x19e3fbc3,\n    (q31_t)0x7a8c9470, (q31_t)0x19d87d42, (q31_t)0x7a91a674, (q31_t)0x19ccfdc2,\n    (q31_t)0x7a96b636, (q31_t)0x19c17d44, (q31_t)0x7a9bc3b6, (q31_t)0x19b5fbc8,\n    (q31_t)0x7aa0cef3, (q31_t)0x19aa794d, (q31_t)0x7aa5d7ee, (q31_t)0x199ef5d6,\n    (q31_t)0x7aaadea6, (q31_t)0x19937161, (q31_t)0x7aafe31b, (q31_t)0x1987ebf0,\n    (q31_t)0x7ab4e54c, (q31_t)0x197c6584, (q31_t)0x7ab9e53a, (q31_t)0x1970de1b,\n    (q31_t)0x7abee2e5, (q31_t)0x196555b8, (q31_t)0x7ac3de4c, (q31_t)0x1959cc5a,\n    (q31_t)0x7ac8d76f, (q31_t)0x194e4201, (q31_t)0x7acdce4d, (q31_t)0x1942b6af,\n    (q31_t)0x7ad2c2e8, (q31_t)0x19372a64, (q31_t)0x7ad7b53d, (q31_t)0x192b9d1f,\n    (q31_t)0x7adca54e, (q31_t)0x19200ee3, (q31_t)0x7ae1931a, (q31_t)0x19147fae,\n    (q31_t)0x7ae67ea1, (q31_t)0x1908ef82, (q31_t)0x7aeb67e3, (q31_t)0x18fd5e5f,\n    (q31_t)0x7af04edf, (q31_t)0x18f1cc45, (q31_t)0x7af53395, (q31_t)0x18e63935,\n    (q31_t)0x7afa1605, (q31_t)0x18daa52f, (q31_t)0x7afef630, (q31_t)0x18cf1034,\n    (q31_t)0x7b03d414, (q31_t)0x18c37a44, (q31_t)0x7b08afb2, (q31_t)0x18b7e35f,\n    (q31_t)0x7b0d8909, (q31_t)0x18ac4b87, (q31_t)0x7b126019, (q31_t)0x18a0b2bb,\n    (q31_t)0x7b1734e2, (q31_t)0x189518fc, (q31_t)0x7b1c0764, (q31_t)0x18897e4a,\n    (q31_t)0x7b20d79e, (q31_t)0x187de2a7, (q31_t)0x7b25a591, (q31_t)0x18724611,\n    (q31_t)0x7b2a713d, (q31_t)0x1866a88a, (q31_t)0x7b2f3aa0, (q31_t)0x185b0a13,\n    (q31_t)0x7b3401bb, (q31_t)0x184f6aab, (q31_t)0x7b38c68e, (q31_t)0x1843ca53,\n    (q31_t)0x7b3d8918, (q31_t)0x1838290c, (q31_t)0x7b42495a, (q31_t)0x182c86d5,\n    (q31_t)0x7b470753, (q31_t)0x1820e3b0, (q31_t)0x7b4bc303, (q31_t)0x18153f9d,\n    (q31_t)0x7b507c69, (q31_t)0x18099a9c, (q31_t)0x7b553386, (q31_t)0x17fdf4ae,\n    (q31_t)0x7b59e85a, (q31_t)0x17f24dd3, (q31_t)0x7b5e9ae4, (q31_t)0x17e6a60c,\n    (q31_t)0x7b634b23, (q31_t)0x17dafd59, (q31_t)0x7b67f919, (q31_t)0x17cf53bb,\n    (q31_t)0x7b6ca4c4, (q31_t)0x17c3a931, (q31_t)0x7b714e25, (q31_t)0x17b7fdbd,\n    (q31_t)0x7b75f53c, (q31_t)0x17ac515f, (q31_t)0x7b7a9a07, (q31_t)0x17a0a417,\n    (q31_t)0x7b7f3c87, (q31_t)0x1794f5e6, (q31_t)0x7b83dcbc, (q31_t)0x178946cc,\n    (q31_t)0x7b887aa6, (q31_t)0x177d96ca, (q31_t)0x7b8d1644, (q31_t)0x1771e5e0,\n    (q31_t)0x7b91af97, (q31_t)0x1766340f, (q31_t)0x7b96469d, (q31_t)0x175a8157,\n    (q31_t)0x7b9adb57, (q31_t)0x174ecdb8, (q31_t)0x7b9f6dc5, (q31_t)0x17431933,\n    (q31_t)0x7ba3fde7, (q31_t)0x173763c9, (q31_t)0x7ba88bbc, (q31_t)0x172bad7a,\n    (q31_t)0x7bad1744, (q31_t)0x171ff646, (q31_t)0x7bb1a080, (q31_t)0x17143e2d,\n    (q31_t)0x7bb6276e, (q31_t)0x17088531, (q31_t)0x7bbaac0e, (q31_t)0x16fccb51,\n    (q31_t)0x7bbf2e62, (q31_t)0x16f1108f, (q31_t)0x7bc3ae67, (q31_t)0x16e554ea,\n    (q31_t)0x7bc82c1f, (q31_t)0x16d99864, (q31_t)0x7bcca789, (q31_t)0x16cddafb,\n    (q31_t)0x7bd120a4, (q31_t)0x16c21cb2, (q31_t)0x7bd59771, (q31_t)0x16b65d88,\n    (q31_t)0x7bda0bf0, (q31_t)0x16aa9d7e, (q31_t)0x7bde7e20, (q31_t)0x169edc94,\n    (q31_t)0x7be2ee01, (q31_t)0x16931acb, (q31_t)0x7be75b93, (q31_t)0x16875823,\n    (q31_t)0x7bebc6d5, (q31_t)0x167b949d, (q31_t)0x7bf02fc9, (q31_t)0x166fd039,\n    (q31_t)0x7bf4966c, (q31_t)0x16640af7, (q31_t)0x7bf8fac0, (q31_t)0x165844d8,\n    (q31_t)0x7bfd5cc4, (q31_t)0x164c7ddd, (q31_t)0x7c01bc78, (q31_t)0x1640b606,\n    (q31_t)0x7c0619dc, (q31_t)0x1634ed53, (q31_t)0x7c0a74f0, (q31_t)0x162923c5,\n    (q31_t)0x7c0ecdb2, (q31_t)0x161d595d, (q31_t)0x7c132424, (q31_t)0x16118e1a,\n    (q31_t)0x7c177845, (q31_t)0x1605c1fd, (q31_t)0x7c1bca16, (q31_t)0x15f9f507,\n    (q31_t)0x7c201994, (q31_t)0x15ee2738, (q31_t)0x7c2466c2, (q31_t)0x15e25890,\n    (q31_t)0x7c28b19e, (q31_t)0x15d68911, (q31_t)0x7c2cfa28, (q31_t)0x15cab8ba,\n    (q31_t)0x7c314060, (q31_t)0x15bee78c, (q31_t)0x7c358446, (q31_t)0x15b31587,\n    (q31_t)0x7c39c5da, (q31_t)0x15a742ac, (q31_t)0x7c3e051b, (q31_t)0x159b6efb,\n    (q31_t)0x7c42420a, (q31_t)0x158f9a76, (q31_t)0x7c467ca6, (q31_t)0x1583c51b,\n    (q31_t)0x7c4ab4ef, (q31_t)0x1577eeec, (q31_t)0x7c4eeae5, (q31_t)0x156c17e9,\n    (q31_t)0x7c531e88, (q31_t)0x15604013, (q31_t)0x7c574fd8, (q31_t)0x1554676a,\n    (q31_t)0x7c5b7ed4, (q31_t)0x15488dee, (q31_t)0x7c5fab7c, (q31_t)0x153cb3a0,\n    (q31_t)0x7c63d5d1, (q31_t)0x1530d881, (q31_t)0x7c67fdd1, (q31_t)0x1524fc90,\n    (q31_t)0x7c6c237e, (q31_t)0x15191fcf, (q31_t)0x7c7046d6, (q31_t)0x150d423d,\n    (q31_t)0x7c7467d9, (q31_t)0x150163dc, (q31_t)0x7c788688, (q31_t)0x14f584ac,\n    (q31_t)0x7c7ca2e2, (q31_t)0x14e9a4ac, (q31_t)0x7c80bce7, (q31_t)0x14ddc3de,\n    (q31_t)0x7c84d496, (q31_t)0x14d1e242, (q31_t)0x7c88e9f1, (q31_t)0x14c5ffd9,\n    (q31_t)0x7c8cfcf6, (q31_t)0x14ba1ca3, (q31_t)0x7c910da5, (q31_t)0x14ae38a0,\n    (q31_t)0x7c951bff, (q31_t)0x14a253d1, (q31_t)0x7c992803, (q31_t)0x14966e36,\n    (q31_t)0x7c9d31b0, (q31_t)0x148a87d1, (q31_t)0x7ca13908, (q31_t)0x147ea0a0,\n    (q31_t)0x7ca53e09, (q31_t)0x1472b8a5, (q31_t)0x7ca940b3, (q31_t)0x1466cfe1,\n    (q31_t)0x7cad4107, (q31_t)0x145ae653, (q31_t)0x7cb13f04, (q31_t)0x144efbfc,\n    (q31_t)0x7cb53aaa, (q31_t)0x144310dd, (q31_t)0x7cb933f9, (q31_t)0x143724f5,\n    (q31_t)0x7cbd2af0, (q31_t)0x142b3846, (q31_t)0x7cc11f90, (q31_t)0x141f4ad1,\n    (q31_t)0x7cc511d9, (q31_t)0x14135c94, (q31_t)0x7cc901c9, (q31_t)0x14076d91,\n    (q31_t)0x7cccef62, (q31_t)0x13fb7dc9, (q31_t)0x7cd0daa2, (q31_t)0x13ef8d3c,\n    (q31_t)0x7cd4c38b, (q31_t)0x13e39be9, (q31_t)0x7cd8aa1b, (q31_t)0x13d7a9d3,\n    (q31_t)0x7cdc8e52, (q31_t)0x13cbb6f8, (q31_t)0x7ce07031, (q31_t)0x13bfc35b,\n    (q31_t)0x7ce44fb7, (q31_t)0x13b3cefa, (q31_t)0x7ce82ce4, (q31_t)0x13a7d9d7,\n    (q31_t)0x7cec07b8, (q31_t)0x139be3f2, (q31_t)0x7cefe032, (q31_t)0x138fed4b,\n    (q31_t)0x7cf3b653, (q31_t)0x1383f5e3, (q31_t)0x7cf78a1b, (q31_t)0x1377fdbb,\n    (q31_t)0x7cfb5b89, (q31_t)0x136c04d2, (q31_t)0x7cff2a9d, (q31_t)0x13600b2a,\n    (q31_t)0x7d02f757, (q31_t)0x135410c3, (q31_t)0x7d06c1b6, (q31_t)0x1348159d,\n    (q31_t)0x7d0a89bc, (q31_t)0x133c19b8, (q31_t)0x7d0e4f67, (q31_t)0x13301d16,\n    (q31_t)0x7d1212b7, (q31_t)0x13241fb6, (q31_t)0x7d15d3ad, (q31_t)0x1318219a,\n    (q31_t)0x7d199248, (q31_t)0x130c22c1, (q31_t)0x7d1d4e88, (q31_t)0x1300232c,\n    (q31_t)0x7d21086c, (q31_t)0x12f422db, (q31_t)0x7d24bff6, (q31_t)0x12e821cf,\n    (q31_t)0x7d287523, (q31_t)0x12dc2009, (q31_t)0x7d2c27f6, (q31_t)0x12d01d89,\n    (q31_t)0x7d2fd86c, (q31_t)0x12c41a4f, (q31_t)0x7d338687, (q31_t)0x12b8165b,\n    (q31_t)0x7d373245, (q31_t)0x12ac11af, (q31_t)0x7d3adba7, (q31_t)0x12a00c4b,\n    (q31_t)0x7d3e82ae, (q31_t)0x1294062f, (q31_t)0x7d422757, (q31_t)0x1287ff5b,\n    (q31_t)0x7d45c9a4, (q31_t)0x127bf7d1, (q31_t)0x7d496994, (q31_t)0x126fef90,\n    (q31_t)0x7d4d0728, (q31_t)0x1263e699, (q31_t)0x7d50a25e, (q31_t)0x1257dced,\n    (q31_t)0x7d543b37, (q31_t)0x124bd28c, (q31_t)0x7d57d1b3, (q31_t)0x123fc776,\n    (q31_t)0x7d5b65d2, (q31_t)0x1233bbac, (q31_t)0x7d5ef793, (q31_t)0x1227af2e,\n    (q31_t)0x7d6286f6, (q31_t)0x121ba1fd, (q31_t)0x7d6613fb, (q31_t)0x120f941a,\n    (q31_t)0x7d699ea3, (q31_t)0x12038584, (q31_t)0x7d6d26ec, (q31_t)0x11f7763c,\n    (q31_t)0x7d70acd7, (q31_t)0x11eb6643, (q31_t)0x7d743064, (q31_t)0x11df5599,\n    (q31_t)0x7d77b192, (q31_t)0x11d3443f, (q31_t)0x7d7b3061, (q31_t)0x11c73235,\n    (q31_t)0x7d7eacd2, (q31_t)0x11bb1f7c, (q31_t)0x7d8226e4, (q31_t)0x11af0c13,\n    (q31_t)0x7d859e96, (q31_t)0x11a2f7fc, (q31_t)0x7d8913ea, (q31_t)0x1196e337,\n    (q31_t)0x7d8c86de, (q31_t)0x118acdc4, (q31_t)0x7d8ff772, (q31_t)0x117eb7a4,\n    (q31_t)0x7d9365a8, (q31_t)0x1172a0d7, (q31_t)0x7d96d17d, (q31_t)0x1166895f,\n    (q31_t)0x7d9a3af2, (q31_t)0x115a713a, (q31_t)0x7d9da208, (q31_t)0x114e586a,\n    (q31_t)0x7da106bd, (q31_t)0x11423ef0, (q31_t)0x7da46912, (q31_t)0x113624cb,\n    (q31_t)0x7da7c907, (q31_t)0x112a09fc, (q31_t)0x7dab269b, (q31_t)0x111dee84,\n    (q31_t)0x7dae81cf, (q31_t)0x1111d263, (q31_t)0x7db1daa2, (q31_t)0x1105b599,\n    (q31_t)0x7db53113, (q31_t)0x10f99827, (q31_t)0x7db88524, (q31_t)0x10ed7a0e,\n    (q31_t)0x7dbbd6d4, (q31_t)0x10e15b4e, (q31_t)0x7dbf2622, (q31_t)0x10d53be7,\n    (q31_t)0x7dc2730f, (q31_t)0x10c91bda, (q31_t)0x7dc5bd9b, (q31_t)0x10bcfb28,\n    (q31_t)0x7dc905c5, (q31_t)0x10b0d9d0, (q31_t)0x7dcc4b8d, (q31_t)0x10a4b7d3,\n    (q31_t)0x7dcf8ef3, (q31_t)0x10989532, (q31_t)0x7dd2cff7, (q31_t)0x108c71ee,\n    (q31_t)0x7dd60e99, (q31_t)0x10804e06, (q31_t)0x7dd94ad8, (q31_t)0x1074297b,\n    (q31_t)0x7ddc84b5, (q31_t)0x1068044e, (q31_t)0x7ddfbc30, (q31_t)0x105bde7f,\n    (q31_t)0x7de2f148, (q31_t)0x104fb80e, (q31_t)0x7de623fd, (q31_t)0x104390fd,\n    (q31_t)0x7de9544f, (q31_t)0x1037694b, (q31_t)0x7dec823e, (q31_t)0x102b40f8,\n    (q31_t)0x7defadca, (q31_t)0x101f1807, (q31_t)0x7df2d6f3, (q31_t)0x1012ee76,\n    (q31_t)0x7df5fdb8, (q31_t)0x1006c446, (q31_t)0x7df9221a, (q31_t)0xffa9979,\n    (q31_t)0x7dfc4418, (q31_t)0xfee6e0d, (q31_t)0x7dff63b2, (q31_t)0xfe24205,\n    (q31_t)0x7e0280e9, (q31_t)0xfd6155f, (q31_t)0x7e059bbb, (q31_t)0xfc9e81e,\n    (q31_t)0x7e08b42a, (q31_t)0xfbdba40, (q31_t)0x7e0bca34, (q31_t)0xfb18bc8,\n    (q31_t)0x7e0eddd9, (q31_t)0xfa55cb4, (q31_t)0x7e11ef1b, (q31_t)0xf992d06,\n    (q31_t)0x7e14fdf7, (q31_t)0xf8cfcbe, (q31_t)0x7e180a6f, (q31_t)0xf80cbdc,\n    (q31_t)0x7e1b1482, (q31_t)0xf749a61, (q31_t)0x7e1e1c30, (q31_t)0xf68684e,\n    (q31_t)0x7e212179, (q31_t)0xf5c35a3, (q31_t)0x7e24245d, (q31_t)0xf500260,\n    (q31_t)0x7e2724db, (q31_t)0xf43ce86, (q31_t)0x7e2a22f4, (q31_t)0xf379a16,\n    (q31_t)0x7e2d1ea8, (q31_t)0xf2b650f, (q31_t)0x7e3017f6, (q31_t)0xf1f2f73,\n    (q31_t)0x7e330ede, (q31_t)0xf12f941, (q31_t)0x7e360360, (q31_t)0xf06c27a,\n    (q31_t)0x7e38f57c, (q31_t)0xefa8b20, (q31_t)0x7e3be532, (q31_t)0xeee5331,\n    (q31_t)0x7e3ed282, (q31_t)0xee21aaf, (q31_t)0x7e41bd6c, (q31_t)0xed5e19a,\n    (q31_t)0x7e44a5ef, (q31_t)0xec9a7f3, (q31_t)0x7e478c0b, (q31_t)0xebd6db9,\n    (q31_t)0x7e4a6fc1, (q31_t)0xeb132ef, (q31_t)0x7e4d5110, (q31_t)0xea4f793,\n    (q31_t)0x7e502ff9, (q31_t)0xe98bba7, (q31_t)0x7e530c7a, (q31_t)0xe8c7f2a,\n    (q31_t)0x7e55e694, (q31_t)0xe80421e, (q31_t)0x7e58be47, (q31_t)0xe740483,\n    (q31_t)0x7e5b9392, (q31_t)0xe67c65a, (q31_t)0x7e5e6676, (q31_t)0xe5b87a2,\n    (q31_t)0x7e6136f3, (q31_t)0xe4f485c, (q31_t)0x7e640507, (q31_t)0xe430889,\n    (q31_t)0x7e66d0b4, (q31_t)0xe36c82a, (q31_t)0x7e6999fa, (q31_t)0xe2a873e,\n    (q31_t)0x7e6c60d7, (q31_t)0xe1e45c6, (q31_t)0x7e6f254c, (q31_t)0xe1203c3,\n    (q31_t)0x7e71e759, (q31_t)0xe05c135, (q31_t)0x7e74a6fd, (q31_t)0xdf97e1d,\n    (q31_t)0x7e77643a, (q31_t)0xded3a7b, (q31_t)0x7e7a1f0d, (q31_t)0xde0f64f,\n    (q31_t)0x7e7cd778, (q31_t)0xdd4b19a, (q31_t)0x7e7f8d7b, (q31_t)0xdc86c5d,\n    (q31_t)0x7e824114, (q31_t)0xdbc2698, (q31_t)0x7e84f245, (q31_t)0xdafe04b,\n    (q31_t)0x7e87a10c, (q31_t)0xda39978, (q31_t)0x7e8a4d6a, (q31_t)0xd97521d,\n    (q31_t)0x7e8cf75f, (q31_t)0xd8b0a3d, (q31_t)0x7e8f9eeb, (q31_t)0xd7ec1d6,\n    (q31_t)0x7e92440d, (q31_t)0xd7278eb, (q31_t)0x7e94e6c6, (q31_t)0xd662f7b,\n    (q31_t)0x7e978715, (q31_t)0xd59e586, (q31_t)0x7e9a24fb, (q31_t)0xd4d9b0e,\n    (q31_t)0x7e9cc076, (q31_t)0xd415013, (q31_t)0x7e9f5988, (q31_t)0xd350495,\n    (q31_t)0x7ea1f02f, (q31_t)0xd28b894, (q31_t)0x7ea4846c, (q31_t)0xd1c6c11,\n    (q31_t)0x7ea7163f, (q31_t)0xd101f0e, (q31_t)0x7ea9a5a8, (q31_t)0xd03d189,\n    (q31_t)0x7eac32a6, (q31_t)0xcf78383, (q31_t)0x7eaebd3a, (q31_t)0xceb34fe,\n    (q31_t)0x7eb14563, (q31_t)0xcdee5f9, (q31_t)0x7eb3cb21, (q31_t)0xcd29676,\n    (q31_t)0x7eb64e75, (q31_t)0xcc64673, (q31_t)0x7eb8cf5d, (q31_t)0xcb9f5f3,\n    (q31_t)0x7ebb4ddb, (q31_t)0xcada4f5, (q31_t)0x7ebdc9ed, (q31_t)0xca1537a,\n    (q31_t)0x7ec04394, (q31_t)0xc950182, (q31_t)0x7ec2bad0, (q31_t)0xc88af0e,\n    (q31_t)0x7ec52fa0, (q31_t)0xc7c5c1e, (q31_t)0x7ec7a205, (q31_t)0xc7008b3,\n    (q31_t)0x7eca11fe, (q31_t)0xc63b4ce, (q31_t)0x7ecc7f8b, (q31_t)0xc57606e,\n    (q31_t)0x7eceeaad, (q31_t)0xc4b0b94, (q31_t)0x7ed15363, (q31_t)0xc3eb641,\n    (q31_t)0x7ed3b9ad, (q31_t)0xc326075, (q31_t)0x7ed61d8a, (q31_t)0xc260a31,\n    (q31_t)0x7ed87efc, (q31_t)0xc19b374, (q31_t)0x7edade01, (q31_t)0xc0d5c41,\n    (q31_t)0x7edd3a9a, (q31_t)0xc010496, (q31_t)0x7edf94c7, (q31_t)0xbf4ac75,\n    (q31_t)0x7ee1ec87, (q31_t)0xbe853de, (q31_t)0x7ee441da, (q31_t)0xbdbfad1,\n    (q31_t)0x7ee694c1, (q31_t)0xbcfa150, (q31_t)0x7ee8e53a, (q31_t)0xbc34759,\n    (q31_t)0x7eeb3347, (q31_t)0xbb6ecef, (q31_t)0x7eed7ee7, (q31_t)0xbaa9211,\n    (q31_t)0x7eefc81a, (q31_t)0xb9e36c0, (q31_t)0x7ef20ee0, (q31_t)0xb91dafc,\n    (q31_t)0x7ef45338, (q31_t)0xb857ec7, (q31_t)0x7ef69523, (q31_t)0xb79221f,\n    (q31_t)0x7ef8d4a1, (q31_t)0xb6cc506, (q31_t)0x7efb11b1, (q31_t)0xb60677c,\n    (q31_t)0x7efd4c54, (q31_t)0xb540982, (q31_t)0x7eff8489, (q31_t)0xb47ab19,\n    (q31_t)0x7f01ba50, (q31_t)0xb3b4c40, (q31_t)0x7f03eda9, (q31_t)0xb2eecf8,\n    (q31_t)0x7f061e95, (q31_t)0xb228d42, (q31_t)0x7f084d12, (q31_t)0xb162d1d,\n    (q31_t)0x7f0a7921, (q31_t)0xb09cc8c, (q31_t)0x7f0ca2c2, (q31_t)0xafd6b8d,\n    (q31_t)0x7f0ec9f5, (q31_t)0xaf10a22, (q31_t)0x7f10eeb9, (q31_t)0xae4a84b,\n    (q31_t)0x7f13110f, (q31_t)0xad84609, (q31_t)0x7f1530f7, (q31_t)0xacbe35b,\n    (q31_t)0x7f174e70, (q31_t)0xabf8043, (q31_t)0x7f19697a, (q31_t)0xab31cc1,\n    (q31_t)0x7f1b8215, (q31_t)0xaa6b8d5, (q31_t)0x7f1d9842, (q31_t)0xa9a5480,\n    (q31_t)0x7f1fabff, (q31_t)0xa8defc3, (q31_t)0x7f21bd4e, (q31_t)0xa818a9d,\n    (q31_t)0x7f23cc2e, (q31_t)0xa752510, (q31_t)0x7f25d89e, (q31_t)0xa68bf1b,\n    (q31_t)0x7f27e29f, (q31_t)0xa5c58c0, (q31_t)0x7f29ea31, (q31_t)0xa4ff1fe,\n    (q31_t)0x7f2bef53, (q31_t)0xa438ad7, (q31_t)0x7f2df206, (q31_t)0xa37234a,\n    (q31_t)0x7f2ff24a, (q31_t)0xa2abb59, (q31_t)0x7f31f01d, (q31_t)0xa1e5303,\n    (q31_t)0x7f33eb81, (q31_t)0xa11ea49, (q31_t)0x7f35e476, (q31_t)0xa05812c,\n    (q31_t)0x7f37dafa, (q31_t)0x9f917ac, (q31_t)0x7f39cf0e, (q31_t)0x9ecadc9,\n    (q31_t)0x7f3bc0b3, (q31_t)0x9e04385, (q31_t)0x7f3dafe7, (q31_t)0x9d3d8df,\n    (q31_t)0x7f3f9cab, (q31_t)0x9c76dd8, (q31_t)0x7f4186ff, (q31_t)0x9bb0271,\n    (q31_t)0x7f436ee3, (q31_t)0x9ae96aa, (q31_t)0x7f455456, (q31_t)0x9a22a83,\n    (q31_t)0x7f473759, (q31_t)0x995bdfd, (q31_t)0x7f4917eb, (q31_t)0x9895118,\n    (q31_t)0x7f4af60d, (q31_t)0x97ce3d5, (q31_t)0x7f4cd1be, (q31_t)0x9707635,\n    (q31_t)0x7f4eaafe, (q31_t)0x9640837, (q31_t)0x7f5081cd, (q31_t)0x95799dd,\n    (q31_t)0x7f52562c, (q31_t)0x94b2b27, (q31_t)0x7f54281a, (q31_t)0x93ebc14,\n    (q31_t)0x7f55f796, (q31_t)0x9324ca7, (q31_t)0x7f57c4a2, (q31_t)0x925dcdf,\n    (q31_t)0x7f598f3c, (q31_t)0x9196cbc, (q31_t)0x7f5b5765, (q31_t)0x90cfc40,\n    (q31_t)0x7f5d1d1d, (q31_t)0x9008b6a, (q31_t)0x7f5ee063, (q31_t)0x8f41a3c,\n    (q31_t)0x7f60a138, (q31_t)0x8e7a8b5, (q31_t)0x7f625f9b, (q31_t)0x8db36d6,\n    (q31_t)0x7f641b8d, (q31_t)0x8cec4a0, (q31_t)0x7f65d50d, (q31_t)0x8c25213,\n    (q31_t)0x7f678c1c, (q31_t)0x8b5df30, (q31_t)0x7f6940b8, (q31_t)0x8a96bf6,\n    (q31_t)0x7f6af2e3, (q31_t)0x89cf867, (q31_t)0x7f6ca29c, (q31_t)0x8908483,\n    (q31_t)0x7f6e4fe3, (q31_t)0x884104b, (q31_t)0x7f6ffab8, (q31_t)0x8779bbe,\n    (q31_t)0x7f71a31b, (q31_t)0x86b26de, (q31_t)0x7f73490b, (q31_t)0x85eb1ab,\n    (q31_t)0x7f74ec8a, (q31_t)0x8523c25, (q31_t)0x7f768d96, (q31_t)0x845c64d,\n    (q31_t)0x7f782c30, (q31_t)0x8395024, (q31_t)0x7f79c857, (q31_t)0x82cd9a9,\n    (q31_t)0x7f7b620c, (q31_t)0x82062de, (q31_t)0x7f7cf94e, (q31_t)0x813ebc2,\n    (q31_t)0x7f7e8e1e, (q31_t)0x8077457, (q31_t)0x7f80207b, (q31_t)0x7fafc9c,\n    (q31_t)0x7f81b065, (q31_t)0x7ee8493, (q31_t)0x7f833ddd, (q31_t)0x7e20c3b,\n    (q31_t)0x7f84c8e2, (q31_t)0x7d59396, (q31_t)0x7f865174, (q31_t)0x7c91aa3,\n    (q31_t)0x7f87d792, (q31_t)0x7bca163, (q31_t)0x7f895b3e, (q31_t)0x7b027d7,\n    (q31_t)0x7f8adc77, (q31_t)0x7a3adff, (q31_t)0x7f8c5b3d, (q31_t)0x79733dc,\n    (q31_t)0x7f8dd78f, (q31_t)0x78ab96e, (q31_t)0x7f8f516e, (q31_t)0x77e3eb5,\n    (q31_t)0x7f90c8da, (q31_t)0x771c3b3, (q31_t)0x7f923dd2, (q31_t)0x7654867,\n    (q31_t)0x7f93b058, (q31_t)0x758ccd2, (q31_t)0x7f952069, (q31_t)0x74c50f4,\n    (q31_t)0x7f968e07, (q31_t)0x73fd4cf, (q31_t)0x7f97f932, (q31_t)0x7335862,\n    (q31_t)0x7f9961e8, (q31_t)0x726dbae, (q31_t)0x7f9ac82c, (q31_t)0x71a5eb3,\n    (q31_t)0x7f9c2bfb, (q31_t)0x70de172, (q31_t)0x7f9d8d56, (q31_t)0x70163eb,\n    (q31_t)0x7f9eec3e, (q31_t)0x6f4e620, (q31_t)0x7fa048b2, (q31_t)0x6e86810,\n    (q31_t)0x7fa1a2b2, (q31_t)0x6dbe9bb, (q31_t)0x7fa2fa3d, (q31_t)0x6cf6b23,\n    (q31_t)0x7fa44f55, (q31_t)0x6c2ec48, (q31_t)0x7fa5a1f9, (q31_t)0x6b66d29,\n    (q31_t)0x7fa6f228, (q31_t)0x6a9edc9, (q31_t)0x7fa83fe3, (q31_t)0x69d6e27,\n    (q31_t)0x7fa98b2a, (q31_t)0x690ee44, (q31_t)0x7faad3fd, (q31_t)0x6846e1f,\n    (q31_t)0x7fac1a5b, (q31_t)0x677edbb, (q31_t)0x7fad5e45, (q31_t)0x66b6d16,\n    (q31_t)0x7fae9fbb, (q31_t)0x65eec33, (q31_t)0x7fafdebb, (q31_t)0x6526b10,\n    (q31_t)0x7fb11b48, (q31_t)0x645e9af, (q31_t)0x7fb2555f, (q31_t)0x6396810,\n    (q31_t)0x7fb38d02, (q31_t)0x62ce634, (q31_t)0x7fb4c231, (q31_t)0x620641a,\n    (q31_t)0x7fb5f4ea, (q31_t)0x613e1c5, (q31_t)0x7fb7252f, (q31_t)0x6075f33,\n    (q31_t)0x7fb852ff, (q31_t)0x5fadc66, (q31_t)0x7fb97e5a, (q31_t)0x5ee595d,\n    (q31_t)0x7fbaa740, (q31_t)0x5e1d61b, (q31_t)0x7fbbcdb1, (q31_t)0x5d5529e,\n    (q31_t)0x7fbcf1ad, (q31_t)0x5c8cee7, (q31_t)0x7fbe1334, (q31_t)0x5bc4af8,\n    (q31_t)0x7fbf3246, (q31_t)0x5afc6d0, (q31_t)0x7fc04ee3, (q31_t)0x5a3426f,\n    (q31_t)0x7fc1690a, (q31_t)0x596bdd7, (q31_t)0x7fc280bc, (q31_t)0x58a3908,\n    (q31_t)0x7fc395f9, (q31_t)0x57db403, (q31_t)0x7fc4a8c1, (q31_t)0x5712ec7,\n    (q31_t)0x7fc5b913, (q31_t)0x564a955, (q31_t)0x7fc6c6f0, (q31_t)0x55823ae,\n    (q31_t)0x7fc7d258, (q31_t)0x54b9dd3, (q31_t)0x7fc8db4a, (q31_t)0x53f17c3,\n    (q31_t)0x7fc9e1c6, (q31_t)0x532917f, (q31_t)0x7fcae5cd, (q31_t)0x5260b08,\n    (q31_t)0x7fcbe75e, (q31_t)0x519845e, (q31_t)0x7fcce67a, (q31_t)0x50cfd82,\n    (q31_t)0x7fcde320, (q31_t)0x5007674, (q31_t)0x7fcedd50, (q31_t)0x4f3ef35,\n    (q31_t)0x7fcfd50b, (q31_t)0x4e767c5, (q31_t)0x7fd0ca4f, (q31_t)0x4dae024,\n    (q31_t)0x7fd1bd1e, (q31_t)0x4ce5854, (q31_t)0x7fd2ad77, (q31_t)0x4c1d054,\n    (q31_t)0x7fd39b5a, (q31_t)0x4b54825, (q31_t)0x7fd486c7, (q31_t)0x4a8bfc7,\n    (q31_t)0x7fd56fbe, (q31_t)0x49c373c, (q31_t)0x7fd6563f, (q31_t)0x48fae83,\n    (q31_t)0x7fd73a4a, (q31_t)0x483259d, (q31_t)0x7fd81bdf, (q31_t)0x4769c8b,\n    (q31_t)0x7fd8fafe, (q31_t)0x46a134c, (q31_t)0x7fd9d7a7, (q31_t)0x45d89e2,\n    (q31_t)0x7fdab1d9, (q31_t)0x451004d, (q31_t)0x7fdb8996, (q31_t)0x444768d,\n    (q31_t)0x7fdc5edc, (q31_t)0x437eca4, (q31_t)0x7fdd31ac, (q31_t)0x42b6290,\n    (q31_t)0x7fde0205, (q31_t)0x41ed854, (q31_t)0x7fdecfe8, (q31_t)0x4124dee,\n    (q31_t)0x7fdf9b55, (q31_t)0x405c361, (q31_t)0x7fe0644b, (q31_t)0x3f938ac,\n    (q31_t)0x7fe12acb, (q31_t)0x3ecadcf, (q31_t)0x7fe1eed5, (q31_t)0x3e022cc,\n    (q31_t)0x7fe2b067, (q31_t)0x3d397a3, (q31_t)0x7fe36f84, (q31_t)0x3c70c54,\n    (q31_t)0x7fe42c2a, (q31_t)0x3ba80df, (q31_t)0x7fe4e659, (q31_t)0x3adf546,\n    (q31_t)0x7fe59e12, (q31_t)0x3a16988, (q31_t)0x7fe65354, (q31_t)0x394dda7,\n    (q31_t)0x7fe7061f, (q31_t)0x38851a2, (q31_t)0x7fe7b674, (q31_t)0x37bc57b,\n    (q31_t)0x7fe86452, (q31_t)0x36f3931, (q31_t)0x7fe90fb9, (q31_t)0x362acc5,\n    (q31_t)0x7fe9b8a9, (q31_t)0x3562038, (q31_t)0x7fea5f23, (q31_t)0x3499389,\n    (q31_t)0x7feb0326, (q31_t)0x33d06bb, (q31_t)0x7feba4b2, (q31_t)0x33079cc,\n    (q31_t)0x7fec43c7, (q31_t)0x323ecbe, (q31_t)0x7fece065, (q31_t)0x3175f91,\n    (q31_t)0x7fed7a8c, (q31_t)0x30ad245, (q31_t)0x7fee123d, (q31_t)0x2fe44dc,\n    (q31_t)0x7feea776, (q31_t)0x2f1b755, (q31_t)0x7fef3a39, (q31_t)0x2e529b0,\n    (q31_t)0x7fefca84, (q31_t)0x2d89bf0, (q31_t)0x7ff05858, (q31_t)0x2cc0e13,\n    (q31_t)0x7ff0e3b6, (q31_t)0x2bf801a, (q31_t)0x7ff16c9c, (q31_t)0x2b2f207,\n    (q31_t)0x7ff1f30b, (q31_t)0x2a663d8, (q31_t)0x7ff27703, (q31_t)0x299d590,\n    (q31_t)0x7ff2f884, (q31_t)0x28d472e, (q31_t)0x7ff3778e, (q31_t)0x280b8b3,\n    (q31_t)0x7ff3f420, (q31_t)0x2742a1f, (q31_t)0x7ff46e3c, (q31_t)0x2679b73,\n    (q31_t)0x7ff4e5e0, (q31_t)0x25b0caf, (q31_t)0x7ff55b0d, (q31_t)0x24e7dd4,\n    (q31_t)0x7ff5cdc3, (q31_t)0x241eee2, (q31_t)0x7ff63e01, (q31_t)0x2355fd9,\n    (q31_t)0x7ff6abc8, (q31_t)0x228d0bb, (q31_t)0x7ff71718, (q31_t)0x21c4188,\n    (q31_t)0x7ff77ff1, (q31_t)0x20fb240, (q31_t)0x7ff7e652, (q31_t)0x20322e3,\n    (q31_t)0x7ff84a3c, (q31_t)0x1f69373, (q31_t)0x7ff8abae, (q31_t)0x1ea03ef,\n    (q31_t)0x7ff90aaa, (q31_t)0x1dd7459, (q31_t)0x7ff9672d, (q31_t)0x1d0e4b0,\n    (q31_t)0x7ff9c13a, (q31_t)0x1c454f5, (q31_t)0x7ffa18cf, (q31_t)0x1b7c528,\n    (q31_t)0x7ffa6dec, (q31_t)0x1ab354b, (q31_t)0x7ffac092, (q31_t)0x19ea55d,\n    (q31_t)0x7ffb10c1, (q31_t)0x192155f, (q31_t)0x7ffb5e78, (q31_t)0x1858552,\n    (q31_t)0x7ffba9b8, (q31_t)0x178f536, (q31_t)0x7ffbf280, (q31_t)0x16c650b,\n    (q31_t)0x7ffc38d1, (q31_t)0x15fd4d2, (q31_t)0x7ffc7caa, (q31_t)0x153448c,\n    (q31_t)0x7ffcbe0c, (q31_t)0x146b438, (q31_t)0x7ffcfcf6, (q31_t)0x13a23d8,\n    (q31_t)0x7ffd3969, (q31_t)0x12d936c, (q31_t)0x7ffd7364, (q31_t)0x12102f4,\n    (q31_t)0x7ffdaae7, (q31_t)0x1147271, (q31_t)0x7ffddff3, (q31_t)0x107e1e3,\n    (q31_t)0x7ffe1288, (q31_t)0xfb514b, (q31_t)0x7ffe42a4, (q31_t)0xeec0aa,\n    (q31_t)0x7ffe704a, (q31_t)0xe22fff, (q31_t)0x7ffe9b77, (q31_t)0xd59f4c,\n    (q31_t)0x7ffec42d, (q31_t)0xc90e90, (q31_t)0x7ffeea6c, (q31_t)0xbc7dcc,\n    (q31_t)0x7fff0e32, (q31_t)0xafed02, (q31_t)0x7fff2f82, (q31_t)0xa35c30,\n    (q31_t)0x7fff4e59, (q31_t)0x96cb58, (q31_t)0x7fff6ab9, (q31_t)0x8a3a7b,\n    (q31_t)0x7fff84a1, (q31_t)0x7da998, (q31_t)0x7fff9c12, (q31_t)0x7118b0,\n    (q31_t)0x7fffb10b, (q31_t)0x6487c4, (q31_t)0x7fffc38c, (q31_t)0x57f6d4,\n    (q31_t)0x7fffd396, (q31_t)0x4b65e1, (q31_t)0x7fffe128, (q31_t)0x3ed4ea,\n    (q31_t)0x7fffec43, (q31_t)0x3243f1, (q31_t)0x7ffff4e6, (q31_t)0x25b2f7,\n    (q31_t)0x7ffffb11, (q31_t)0x1921fb, (q31_t)0x7ffffec4, (q31_t)0xc90fe,\n    (q31_t)0x7fffffff, (q31_t)0x0, (q31_t)0x7ffffec4, (q31_t)0xfff36f02,\n    (q31_t)0x7ffffb11, (q31_t)0xffe6de05, (q31_t)0x7ffff4e6, (q31_t)0xffda4d09,\n    (q31_t)0x7fffec43, (q31_t)0xffcdbc0f, (q31_t)0x7fffe128, (q31_t)0xffc12b16,\n    (q31_t)0x7fffd396, (q31_t)0xffb49a1f, (q31_t)0x7fffc38c, (q31_t)0xffa8092c,\n    (q31_t)0x7fffb10b, (q31_t)0xff9b783c, (q31_t)0x7fff9c12, (q31_t)0xff8ee750,\n    (q31_t)0x7fff84a1, (q31_t)0xff825668, (q31_t)0x7fff6ab9, (q31_t)0xff75c585,\n    (q31_t)0x7fff4e59, (q31_t)0xff6934a8, (q31_t)0x7fff2f82, (q31_t)0xff5ca3d0,\n    (q31_t)0x7fff0e32, (q31_t)0xff5012fe, (q31_t)0x7ffeea6c, (q31_t)0xff438234,\n    (q31_t)0x7ffec42d, (q31_t)0xff36f170, (q31_t)0x7ffe9b77, (q31_t)0xff2a60b4,\n    (q31_t)0x7ffe704a, (q31_t)0xff1dd001, (q31_t)0x7ffe42a4, (q31_t)0xff113f56,\n    (q31_t)0x7ffe1288, (q31_t)0xff04aeb5, (q31_t)0x7ffddff3, (q31_t)0xfef81e1d,\n    (q31_t)0x7ffdaae7, (q31_t)0xfeeb8d8f, (q31_t)0x7ffd7364, (q31_t)0xfedefd0c,\n    (q31_t)0x7ffd3969, (q31_t)0xfed26c94, (q31_t)0x7ffcfcf6, (q31_t)0xfec5dc28,\n    (q31_t)0x7ffcbe0c, (q31_t)0xfeb94bc8, (q31_t)0x7ffc7caa, (q31_t)0xfeacbb74,\n    (q31_t)0x7ffc38d1, (q31_t)0xfea02b2e, (q31_t)0x7ffbf280, (q31_t)0xfe939af5,\n    (q31_t)0x7ffba9b8, (q31_t)0xfe870aca, (q31_t)0x7ffb5e78, (q31_t)0xfe7a7aae,\n    (q31_t)0x7ffb10c1, (q31_t)0xfe6deaa1, (q31_t)0x7ffac092, (q31_t)0xfe615aa3,\n    (q31_t)0x7ffa6dec, (q31_t)0xfe54cab5, (q31_t)0x7ffa18cf, (q31_t)0xfe483ad8,\n    (q31_t)0x7ff9c13a, (q31_t)0xfe3bab0b, (q31_t)0x7ff9672d, (q31_t)0xfe2f1b50,\n    (q31_t)0x7ff90aaa, (q31_t)0xfe228ba7, (q31_t)0x7ff8abae, (q31_t)0xfe15fc11,\n    (q31_t)0x7ff84a3c, (q31_t)0xfe096c8d, (q31_t)0x7ff7e652, (q31_t)0xfdfcdd1d,\n    (q31_t)0x7ff77ff1, (q31_t)0xfdf04dc0, (q31_t)0x7ff71718, (q31_t)0xfde3be78,\n    (q31_t)0x7ff6abc8, (q31_t)0xfdd72f45, (q31_t)0x7ff63e01, (q31_t)0xfdcaa027,\n    (q31_t)0x7ff5cdc3, (q31_t)0xfdbe111e, (q31_t)0x7ff55b0d, (q31_t)0xfdb1822c,\n    (q31_t)0x7ff4e5e0, (q31_t)0xfda4f351, (q31_t)0x7ff46e3c, (q31_t)0xfd98648d,\n    (q31_t)0x7ff3f420, (q31_t)0xfd8bd5e1, (q31_t)0x7ff3778e, (q31_t)0xfd7f474d,\n    (q31_t)0x7ff2f884, (q31_t)0xfd72b8d2, (q31_t)0x7ff27703, (q31_t)0xfd662a70,\n    (q31_t)0x7ff1f30b, (q31_t)0xfd599c28, (q31_t)0x7ff16c9c, (q31_t)0xfd4d0df9,\n    (q31_t)0x7ff0e3b6, (q31_t)0xfd407fe6, (q31_t)0x7ff05858, (q31_t)0xfd33f1ed,\n    (q31_t)0x7fefca84, (q31_t)0xfd276410, (q31_t)0x7fef3a39, (q31_t)0xfd1ad650,\n    (q31_t)0x7feea776, (q31_t)0xfd0e48ab, (q31_t)0x7fee123d, (q31_t)0xfd01bb24,\n    (q31_t)0x7fed7a8c, (q31_t)0xfcf52dbb, (q31_t)0x7fece065, (q31_t)0xfce8a06f,\n    (q31_t)0x7fec43c7, (q31_t)0xfcdc1342, (q31_t)0x7feba4b2, (q31_t)0xfccf8634,\n    (q31_t)0x7feb0326, (q31_t)0xfcc2f945, (q31_t)0x7fea5f23, (q31_t)0xfcb66c77,\n    (q31_t)0x7fe9b8a9, (q31_t)0xfca9dfc8, (q31_t)0x7fe90fb9, (q31_t)0xfc9d533b,\n    (q31_t)0x7fe86452, (q31_t)0xfc90c6cf, (q31_t)0x7fe7b674, (q31_t)0xfc843a85,\n    (q31_t)0x7fe7061f, (q31_t)0xfc77ae5e, (q31_t)0x7fe65354, (q31_t)0xfc6b2259,\n    (q31_t)0x7fe59e12, (q31_t)0xfc5e9678, (q31_t)0x7fe4e659, (q31_t)0xfc520aba,\n    (q31_t)0x7fe42c2a, (q31_t)0xfc457f21, (q31_t)0x7fe36f84, (q31_t)0xfc38f3ac,\n    (q31_t)0x7fe2b067, (q31_t)0xfc2c685d, (q31_t)0x7fe1eed5, (q31_t)0xfc1fdd34,\n    (q31_t)0x7fe12acb, (q31_t)0xfc135231, (q31_t)0x7fe0644b, (q31_t)0xfc06c754,\n    (q31_t)0x7fdf9b55, (q31_t)0xfbfa3c9f, (q31_t)0x7fdecfe8, (q31_t)0xfbedb212,\n    (q31_t)0x7fde0205, (q31_t)0xfbe127ac, (q31_t)0x7fdd31ac, (q31_t)0xfbd49d70,\n    (q31_t)0x7fdc5edc, (q31_t)0xfbc8135c, (q31_t)0x7fdb8996, (q31_t)0xfbbb8973,\n    (q31_t)0x7fdab1d9, (q31_t)0xfbaeffb3, (q31_t)0x7fd9d7a7, (q31_t)0xfba2761e,\n    (q31_t)0x7fd8fafe, (q31_t)0xfb95ecb4, (q31_t)0x7fd81bdf, (q31_t)0xfb896375,\n    (q31_t)0x7fd73a4a, (q31_t)0xfb7cda63, (q31_t)0x7fd6563f, (q31_t)0xfb70517d,\n    (q31_t)0x7fd56fbe, (q31_t)0xfb63c8c4, (q31_t)0x7fd486c7, (q31_t)0xfb574039,\n    (q31_t)0x7fd39b5a, (q31_t)0xfb4ab7db, (q31_t)0x7fd2ad77, (q31_t)0xfb3e2fac,\n    (q31_t)0x7fd1bd1e, (q31_t)0xfb31a7ac, (q31_t)0x7fd0ca4f, (q31_t)0xfb251fdc,\n    (q31_t)0x7fcfd50b, (q31_t)0xfb18983b, (q31_t)0x7fcedd50, (q31_t)0xfb0c10cb,\n    (q31_t)0x7fcde320, (q31_t)0xfaff898c, (q31_t)0x7fcce67a, (q31_t)0xfaf3027e,\n    (q31_t)0x7fcbe75e, (q31_t)0xfae67ba2, (q31_t)0x7fcae5cd, (q31_t)0xfad9f4f8,\n    (q31_t)0x7fc9e1c6, (q31_t)0xfacd6e81, (q31_t)0x7fc8db4a, (q31_t)0xfac0e83d,\n    (q31_t)0x7fc7d258, (q31_t)0xfab4622d, (q31_t)0x7fc6c6f0, (q31_t)0xfaa7dc52,\n    (q31_t)0x7fc5b913, (q31_t)0xfa9b56ab, (q31_t)0x7fc4a8c1, (q31_t)0xfa8ed139,\n    (q31_t)0x7fc395f9, (q31_t)0xfa824bfd, (q31_t)0x7fc280bc, (q31_t)0xfa75c6f8,\n    (q31_t)0x7fc1690a, (q31_t)0xfa694229, (q31_t)0x7fc04ee3, (q31_t)0xfa5cbd91,\n    (q31_t)0x7fbf3246, (q31_t)0xfa503930, (q31_t)0x7fbe1334, (q31_t)0xfa43b508,\n    (q31_t)0x7fbcf1ad, (q31_t)0xfa373119, (q31_t)0x7fbbcdb1, (q31_t)0xfa2aad62,\n    (q31_t)0x7fbaa740, (q31_t)0xfa1e29e5, (q31_t)0x7fb97e5a, (q31_t)0xfa11a6a3,\n    (q31_t)0x7fb852ff, (q31_t)0xfa05239a, (q31_t)0x7fb7252f, (q31_t)0xf9f8a0cd,\n    (q31_t)0x7fb5f4ea, (q31_t)0xf9ec1e3b, (q31_t)0x7fb4c231, (q31_t)0xf9df9be6,\n    (q31_t)0x7fb38d02, (q31_t)0xf9d319cc, (q31_t)0x7fb2555f, (q31_t)0xf9c697f0,\n    (q31_t)0x7fb11b48, (q31_t)0xf9ba1651, (q31_t)0x7fafdebb, (q31_t)0xf9ad94f0,\n    (q31_t)0x7fae9fbb, (q31_t)0xf9a113cd, (q31_t)0x7fad5e45, (q31_t)0xf99492ea,\n    (q31_t)0x7fac1a5b, (q31_t)0xf9881245, (q31_t)0x7faad3fd, (q31_t)0xf97b91e1,\n    (q31_t)0x7fa98b2a, (q31_t)0xf96f11bc, (q31_t)0x7fa83fe3, (q31_t)0xf96291d9,\n    (q31_t)0x7fa6f228, (q31_t)0xf9561237, (q31_t)0x7fa5a1f9, (q31_t)0xf94992d7,\n    (q31_t)0x7fa44f55, (q31_t)0xf93d13b8, (q31_t)0x7fa2fa3d, (q31_t)0xf93094dd,\n    (q31_t)0x7fa1a2b2, (q31_t)0xf9241645, (q31_t)0x7fa048b2, (q31_t)0xf91797f0,\n    (q31_t)0x7f9eec3e, (q31_t)0xf90b19e0, (q31_t)0x7f9d8d56, (q31_t)0xf8fe9c15,\n    (q31_t)0x7f9c2bfb, (q31_t)0xf8f21e8e, (q31_t)0x7f9ac82c, (q31_t)0xf8e5a14d,\n    (q31_t)0x7f9961e8, (q31_t)0xf8d92452, (q31_t)0x7f97f932, (q31_t)0xf8cca79e,\n    (q31_t)0x7f968e07, (q31_t)0xf8c02b31, (q31_t)0x7f952069, (q31_t)0xf8b3af0c,\n    (q31_t)0x7f93b058, (q31_t)0xf8a7332e, (q31_t)0x7f923dd2, (q31_t)0xf89ab799,\n    (q31_t)0x7f90c8da, (q31_t)0xf88e3c4d, (q31_t)0x7f8f516e, (q31_t)0xf881c14b,\n    (q31_t)0x7f8dd78f, (q31_t)0xf8754692, (q31_t)0x7f8c5b3d, (q31_t)0xf868cc24,\n    (q31_t)0x7f8adc77, (q31_t)0xf85c5201, (q31_t)0x7f895b3e, (q31_t)0xf84fd829,\n    (q31_t)0x7f87d792, (q31_t)0xf8435e9d, (q31_t)0x7f865174, (q31_t)0xf836e55d,\n    (q31_t)0x7f84c8e2, (q31_t)0xf82a6c6a, (q31_t)0x7f833ddd, (q31_t)0xf81df3c5,\n    (q31_t)0x7f81b065, (q31_t)0xf8117b6d, (q31_t)0x7f80207b, (q31_t)0xf8050364,\n    (q31_t)0x7f7e8e1e, (q31_t)0xf7f88ba9, (q31_t)0x7f7cf94e, (q31_t)0xf7ec143e,\n    (q31_t)0x7f7b620c, (q31_t)0xf7df9d22, (q31_t)0x7f79c857, (q31_t)0xf7d32657,\n    (q31_t)0x7f782c30, (q31_t)0xf7c6afdc, (q31_t)0x7f768d96, (q31_t)0xf7ba39b3,\n    (q31_t)0x7f74ec8a, (q31_t)0xf7adc3db, (q31_t)0x7f73490b, (q31_t)0xf7a14e55,\n    (q31_t)0x7f71a31b, (q31_t)0xf794d922, (q31_t)0x7f6ffab8, (q31_t)0xf7886442,\n    (q31_t)0x7f6e4fe3, (q31_t)0xf77befb5, (q31_t)0x7f6ca29c, (q31_t)0xf76f7b7d,\n    (q31_t)0x7f6af2e3, (q31_t)0xf7630799, (q31_t)0x7f6940b8, (q31_t)0xf756940a,\n    (q31_t)0x7f678c1c, (q31_t)0xf74a20d0, (q31_t)0x7f65d50d, (q31_t)0xf73daded,\n    (q31_t)0x7f641b8d, (q31_t)0xf7313b60, (q31_t)0x7f625f9b, (q31_t)0xf724c92a,\n    (q31_t)0x7f60a138, (q31_t)0xf718574b, (q31_t)0x7f5ee063, (q31_t)0xf70be5c4,\n    (q31_t)0x7f5d1d1d, (q31_t)0xf6ff7496, (q31_t)0x7f5b5765, (q31_t)0xf6f303c0,\n    (q31_t)0x7f598f3c, (q31_t)0xf6e69344, (q31_t)0x7f57c4a2, (q31_t)0xf6da2321,\n    (q31_t)0x7f55f796, (q31_t)0xf6cdb359, (q31_t)0x7f54281a, (q31_t)0xf6c143ec,\n    (q31_t)0x7f52562c, (q31_t)0xf6b4d4d9, (q31_t)0x7f5081cd, (q31_t)0xf6a86623,\n    (q31_t)0x7f4eaafe, (q31_t)0xf69bf7c9, (q31_t)0x7f4cd1be, (q31_t)0xf68f89cb,\n    (q31_t)0x7f4af60d, (q31_t)0xf6831c2b, (q31_t)0x7f4917eb, (q31_t)0xf676aee8,\n    (q31_t)0x7f473759, (q31_t)0xf66a4203, (q31_t)0x7f455456, (q31_t)0xf65dd57d,\n    (q31_t)0x7f436ee3, (q31_t)0xf6516956, (q31_t)0x7f4186ff, (q31_t)0xf644fd8f,\n    (q31_t)0x7f3f9cab, (q31_t)0xf6389228, (q31_t)0x7f3dafe7, (q31_t)0xf62c2721,\n    (q31_t)0x7f3bc0b3, (q31_t)0xf61fbc7b, (q31_t)0x7f39cf0e, (q31_t)0xf6135237,\n    (q31_t)0x7f37dafa, (q31_t)0xf606e854, (q31_t)0x7f35e476, (q31_t)0xf5fa7ed4,\n    (q31_t)0x7f33eb81, (q31_t)0xf5ee15b7, (q31_t)0x7f31f01d, (q31_t)0xf5e1acfd,\n    (q31_t)0x7f2ff24a, (q31_t)0xf5d544a7, (q31_t)0x7f2df206, (q31_t)0xf5c8dcb6,\n    (q31_t)0x7f2bef53, (q31_t)0xf5bc7529, (q31_t)0x7f29ea31, (q31_t)0xf5b00e02,\n    (q31_t)0x7f27e29f, (q31_t)0xf5a3a740, (q31_t)0x7f25d89e, (q31_t)0xf59740e5,\n    (q31_t)0x7f23cc2e, (q31_t)0xf58adaf0, (q31_t)0x7f21bd4e, (q31_t)0xf57e7563,\n    (q31_t)0x7f1fabff, (q31_t)0xf572103d, (q31_t)0x7f1d9842, (q31_t)0xf565ab80,\n    (q31_t)0x7f1b8215, (q31_t)0xf559472b, (q31_t)0x7f19697a, (q31_t)0xf54ce33f,\n    (q31_t)0x7f174e70, (q31_t)0xf5407fbd, (q31_t)0x7f1530f7, (q31_t)0xf5341ca5,\n    (q31_t)0x7f13110f, (q31_t)0xf527b9f7, (q31_t)0x7f10eeb9, (q31_t)0xf51b57b5,\n    (q31_t)0x7f0ec9f5, (q31_t)0xf50ef5de, (q31_t)0x7f0ca2c2, (q31_t)0xf5029473,\n    (q31_t)0x7f0a7921, (q31_t)0xf4f63374, (q31_t)0x7f084d12, (q31_t)0xf4e9d2e3,\n    (q31_t)0x7f061e95, (q31_t)0xf4dd72be, (q31_t)0x7f03eda9, (q31_t)0xf4d11308,\n    (q31_t)0x7f01ba50, (q31_t)0xf4c4b3c0, (q31_t)0x7eff8489, (q31_t)0xf4b854e7,\n    (q31_t)0x7efd4c54, (q31_t)0xf4abf67e, (q31_t)0x7efb11b1, (q31_t)0xf49f9884,\n    (q31_t)0x7ef8d4a1, (q31_t)0xf4933afa, (q31_t)0x7ef69523, (q31_t)0xf486dde1,\n    (q31_t)0x7ef45338, (q31_t)0xf47a8139, (q31_t)0x7ef20ee0, (q31_t)0xf46e2504,\n    (q31_t)0x7eefc81a, (q31_t)0xf461c940, (q31_t)0x7eed7ee7, (q31_t)0xf4556def,\n    (q31_t)0x7eeb3347, (q31_t)0xf4491311, (q31_t)0x7ee8e53a, (q31_t)0xf43cb8a7,\n    (q31_t)0x7ee694c1, (q31_t)0xf4305eb0, (q31_t)0x7ee441da, (q31_t)0xf424052f,\n    (q31_t)0x7ee1ec87, (q31_t)0xf417ac22, (q31_t)0x7edf94c7, (q31_t)0xf40b538b,\n    (q31_t)0x7edd3a9a, (q31_t)0xf3fefb6a, (q31_t)0x7edade01, (q31_t)0xf3f2a3bf,\n    (q31_t)0x7ed87efc, (q31_t)0xf3e64c8c, (q31_t)0x7ed61d8a, (q31_t)0xf3d9f5cf,\n    (q31_t)0x7ed3b9ad, (q31_t)0xf3cd9f8b, (q31_t)0x7ed15363, (q31_t)0xf3c149bf,\n    (q31_t)0x7eceeaad, (q31_t)0xf3b4f46c, (q31_t)0x7ecc7f8b, (q31_t)0xf3a89f92,\n    (q31_t)0x7eca11fe, (q31_t)0xf39c4b32, (q31_t)0x7ec7a205, (q31_t)0xf38ff74d,\n    (q31_t)0x7ec52fa0, (q31_t)0xf383a3e2, (q31_t)0x7ec2bad0, (q31_t)0xf37750f2,\n    (q31_t)0x7ec04394, (q31_t)0xf36afe7e, (q31_t)0x7ebdc9ed, (q31_t)0xf35eac86,\n    (q31_t)0x7ebb4ddb, (q31_t)0xf3525b0b, (q31_t)0x7eb8cf5d, (q31_t)0xf3460a0d,\n    (q31_t)0x7eb64e75, (q31_t)0xf339b98d, (q31_t)0x7eb3cb21, (q31_t)0xf32d698a,\n    (q31_t)0x7eb14563, (q31_t)0xf3211a07, (q31_t)0x7eaebd3a, (q31_t)0xf314cb02,\n    (q31_t)0x7eac32a6, (q31_t)0xf3087c7d, (q31_t)0x7ea9a5a8, (q31_t)0xf2fc2e77,\n    (q31_t)0x7ea7163f, (q31_t)0xf2efe0f2, (q31_t)0x7ea4846c, (q31_t)0xf2e393ef,\n    (q31_t)0x7ea1f02f, (q31_t)0xf2d7476c, (q31_t)0x7e9f5988, (q31_t)0xf2cafb6b,\n    (q31_t)0x7e9cc076, (q31_t)0xf2beafed, (q31_t)0x7e9a24fb, (q31_t)0xf2b264f2,\n    (q31_t)0x7e978715, (q31_t)0xf2a61a7a, (q31_t)0x7e94e6c6, (q31_t)0xf299d085,\n    (q31_t)0x7e92440d, (q31_t)0xf28d8715, (q31_t)0x7e8f9eeb, (q31_t)0xf2813e2a,\n    (q31_t)0x7e8cf75f, (q31_t)0xf274f5c3, (q31_t)0x7e8a4d6a, (q31_t)0xf268ade3,\n    (q31_t)0x7e87a10c, (q31_t)0xf25c6688, (q31_t)0x7e84f245, (q31_t)0xf2501fb5,\n    (q31_t)0x7e824114, (q31_t)0xf243d968, (q31_t)0x7e7f8d7b, (q31_t)0xf23793a3,\n    (q31_t)0x7e7cd778, (q31_t)0xf22b4e66, (q31_t)0x7e7a1f0d, (q31_t)0xf21f09b1,\n    (q31_t)0x7e77643a, (q31_t)0xf212c585, (q31_t)0x7e74a6fd, (q31_t)0xf20681e3,\n    (q31_t)0x7e71e759, (q31_t)0xf1fa3ecb, (q31_t)0x7e6f254c, (q31_t)0xf1edfc3d,\n    (q31_t)0x7e6c60d7, (q31_t)0xf1e1ba3a, (q31_t)0x7e6999fa, (q31_t)0xf1d578c2,\n    (q31_t)0x7e66d0b4, (q31_t)0xf1c937d6, (q31_t)0x7e640507, (q31_t)0xf1bcf777,\n    (q31_t)0x7e6136f3, (q31_t)0xf1b0b7a4, (q31_t)0x7e5e6676, (q31_t)0xf1a4785e,\n    (q31_t)0x7e5b9392, (q31_t)0xf19839a6, (q31_t)0x7e58be47, (q31_t)0xf18bfb7d,\n    (q31_t)0x7e55e694, (q31_t)0xf17fbde2, (q31_t)0x7e530c7a, (q31_t)0xf17380d6,\n    (q31_t)0x7e502ff9, (q31_t)0xf1674459, (q31_t)0x7e4d5110, (q31_t)0xf15b086d,\n    (q31_t)0x7e4a6fc1, (q31_t)0xf14ecd11, (q31_t)0x7e478c0b, (q31_t)0xf1429247,\n    (q31_t)0x7e44a5ef, (q31_t)0xf136580d, (q31_t)0x7e41bd6c, (q31_t)0xf12a1e66,\n    (q31_t)0x7e3ed282, (q31_t)0xf11de551, (q31_t)0x7e3be532, (q31_t)0xf111accf,\n    (q31_t)0x7e38f57c, (q31_t)0xf10574e0, (q31_t)0x7e360360, (q31_t)0xf0f93d86,\n    (q31_t)0x7e330ede, (q31_t)0xf0ed06bf, (q31_t)0x7e3017f6, (q31_t)0xf0e0d08d,\n    (q31_t)0x7e2d1ea8, (q31_t)0xf0d49af1, (q31_t)0x7e2a22f4, (q31_t)0xf0c865ea,\n    (q31_t)0x7e2724db, (q31_t)0xf0bc317a, (q31_t)0x7e24245d, (q31_t)0xf0affda0,\n    (q31_t)0x7e212179, (q31_t)0xf0a3ca5d, (q31_t)0x7e1e1c30, (q31_t)0xf09797b2,\n    (q31_t)0x7e1b1482, (q31_t)0xf08b659f, (q31_t)0x7e180a6f, (q31_t)0xf07f3424,\n    (q31_t)0x7e14fdf7, (q31_t)0xf0730342, (q31_t)0x7e11ef1b, (q31_t)0xf066d2fa,\n    (q31_t)0x7e0eddd9, (q31_t)0xf05aa34c, (q31_t)0x7e0bca34, (q31_t)0xf04e7438,\n    (q31_t)0x7e08b42a, (q31_t)0xf04245c0, (q31_t)0x7e059bbb, (q31_t)0xf03617e2,\n    (q31_t)0x7e0280e9, (q31_t)0xf029eaa1, (q31_t)0x7dff63b2, (q31_t)0xf01dbdfb,\n    (q31_t)0x7dfc4418, (q31_t)0xf01191f3, (q31_t)0x7df9221a, (q31_t)0xf0056687,\n    (q31_t)0x7df5fdb8, (q31_t)0xeff93bba, (q31_t)0x7df2d6f3, (q31_t)0xefed118a,\n    (q31_t)0x7defadca, (q31_t)0xefe0e7f9, (q31_t)0x7dec823e, (q31_t)0xefd4bf08,\n    (q31_t)0x7de9544f, (q31_t)0xefc896b5, (q31_t)0x7de623fd, (q31_t)0xefbc6f03,\n    (q31_t)0x7de2f148, (q31_t)0xefb047f2, (q31_t)0x7ddfbc30, (q31_t)0xefa42181,\n    (q31_t)0x7ddc84b5, (q31_t)0xef97fbb2, (q31_t)0x7dd94ad8, (q31_t)0xef8bd685,\n    (q31_t)0x7dd60e99, (q31_t)0xef7fb1fa, (q31_t)0x7dd2cff7, (q31_t)0xef738e12,\n    (q31_t)0x7dcf8ef3, (q31_t)0xef676ace, (q31_t)0x7dcc4b8d, (q31_t)0xef5b482d,\n    (q31_t)0x7dc905c5, (q31_t)0xef4f2630, (q31_t)0x7dc5bd9b, (q31_t)0xef4304d8,\n    (q31_t)0x7dc2730f, (q31_t)0xef36e426, (q31_t)0x7dbf2622, (q31_t)0xef2ac419,\n    (q31_t)0x7dbbd6d4, (q31_t)0xef1ea4b2, (q31_t)0x7db88524, (q31_t)0xef1285f2,\n    (q31_t)0x7db53113, (q31_t)0xef0667d9, (q31_t)0x7db1daa2, (q31_t)0xeefa4a67,\n    (q31_t)0x7dae81cf, (q31_t)0xeeee2d9d, (q31_t)0x7dab269b, (q31_t)0xeee2117c,\n    (q31_t)0x7da7c907, (q31_t)0xeed5f604, (q31_t)0x7da46912, (q31_t)0xeec9db35,\n    (q31_t)0x7da106bd, (q31_t)0xeebdc110, (q31_t)0x7d9da208, (q31_t)0xeeb1a796,\n    (q31_t)0x7d9a3af2, (q31_t)0xeea58ec6, (q31_t)0x7d96d17d, (q31_t)0xee9976a1,\n    (q31_t)0x7d9365a8, (q31_t)0xee8d5f29, (q31_t)0x7d8ff772, (q31_t)0xee81485c,\n    (q31_t)0x7d8c86de, (q31_t)0xee75323c, (q31_t)0x7d8913ea, (q31_t)0xee691cc9,\n    (q31_t)0x7d859e96, (q31_t)0xee5d0804, (q31_t)0x7d8226e4, (q31_t)0xee50f3ed,\n    (q31_t)0x7d7eacd2, (q31_t)0xee44e084, (q31_t)0x7d7b3061, (q31_t)0xee38cdcb,\n    (q31_t)0x7d77b192, (q31_t)0xee2cbbc1, (q31_t)0x7d743064, (q31_t)0xee20aa67,\n    (q31_t)0x7d70acd7, (q31_t)0xee1499bd, (q31_t)0x7d6d26ec, (q31_t)0xee0889c4,\n    (q31_t)0x7d699ea3, (q31_t)0xedfc7a7c, (q31_t)0x7d6613fb, (q31_t)0xedf06be6,\n    (q31_t)0x7d6286f6, (q31_t)0xede45e03, (q31_t)0x7d5ef793, (q31_t)0xedd850d2,\n    (q31_t)0x7d5b65d2, (q31_t)0xedcc4454, (q31_t)0x7d57d1b3, (q31_t)0xedc0388a,\n    (q31_t)0x7d543b37, (q31_t)0xedb42d74, (q31_t)0x7d50a25e, (q31_t)0xeda82313,\n    (q31_t)0x7d4d0728, (q31_t)0xed9c1967, (q31_t)0x7d496994, (q31_t)0xed901070,\n    (q31_t)0x7d45c9a4, (q31_t)0xed84082f, (q31_t)0x7d422757, (q31_t)0xed7800a5,\n    (q31_t)0x7d3e82ae, (q31_t)0xed6bf9d1, (q31_t)0x7d3adba7, (q31_t)0xed5ff3b5,\n    (q31_t)0x7d373245, (q31_t)0xed53ee51, (q31_t)0x7d338687, (q31_t)0xed47e9a5,\n    (q31_t)0x7d2fd86c, (q31_t)0xed3be5b1, (q31_t)0x7d2c27f6, (q31_t)0xed2fe277,\n    (q31_t)0x7d287523, (q31_t)0xed23dff7, (q31_t)0x7d24bff6, (q31_t)0xed17de31,\n    (q31_t)0x7d21086c, (q31_t)0xed0bdd25, (q31_t)0x7d1d4e88, (q31_t)0xecffdcd4,\n    (q31_t)0x7d199248, (q31_t)0xecf3dd3f, (q31_t)0x7d15d3ad, (q31_t)0xece7de66,\n    (q31_t)0x7d1212b7, (q31_t)0xecdbe04a, (q31_t)0x7d0e4f67, (q31_t)0xeccfe2ea,\n    (q31_t)0x7d0a89bc, (q31_t)0xecc3e648, (q31_t)0x7d06c1b6, (q31_t)0xecb7ea63,\n    (q31_t)0x7d02f757, (q31_t)0xecabef3d, (q31_t)0x7cff2a9d, (q31_t)0xec9ff4d6,\n    (q31_t)0x7cfb5b89, (q31_t)0xec93fb2e, (q31_t)0x7cf78a1b, (q31_t)0xec880245,\n    (q31_t)0x7cf3b653, (q31_t)0xec7c0a1d, (q31_t)0x7cefe032, (q31_t)0xec7012b5,\n    (q31_t)0x7cec07b8, (q31_t)0xec641c0e, (q31_t)0x7ce82ce4, (q31_t)0xec582629,\n    (q31_t)0x7ce44fb7, (q31_t)0xec4c3106, (q31_t)0x7ce07031, (q31_t)0xec403ca5,\n    (q31_t)0x7cdc8e52, (q31_t)0xec344908, (q31_t)0x7cd8aa1b, (q31_t)0xec28562d,\n    (q31_t)0x7cd4c38b, (q31_t)0xec1c6417, (q31_t)0x7cd0daa2, (q31_t)0xec1072c4,\n    (q31_t)0x7cccef62, (q31_t)0xec048237, (q31_t)0x7cc901c9, (q31_t)0xebf8926f,\n    (q31_t)0x7cc511d9, (q31_t)0xebeca36c, (q31_t)0x7cc11f90, (q31_t)0xebe0b52f,\n    (q31_t)0x7cbd2af0, (q31_t)0xebd4c7ba, (q31_t)0x7cb933f9, (q31_t)0xebc8db0b,\n    (q31_t)0x7cb53aaa, (q31_t)0xebbcef23, (q31_t)0x7cb13f04, (q31_t)0xebb10404,\n    (q31_t)0x7cad4107, (q31_t)0xeba519ad, (q31_t)0x7ca940b3, (q31_t)0xeb99301f,\n    (q31_t)0x7ca53e09, (q31_t)0xeb8d475b, (q31_t)0x7ca13908, (q31_t)0xeb815f60,\n    (q31_t)0x7c9d31b0, (q31_t)0xeb75782f, (q31_t)0x7c992803, (q31_t)0xeb6991ca,\n    (q31_t)0x7c951bff, (q31_t)0xeb5dac2f, (q31_t)0x7c910da5, (q31_t)0xeb51c760,\n    (q31_t)0x7c8cfcf6, (q31_t)0xeb45e35d, (q31_t)0x7c88e9f1, (q31_t)0xeb3a0027,\n    (q31_t)0x7c84d496, (q31_t)0xeb2e1dbe, (q31_t)0x7c80bce7, (q31_t)0xeb223c22,\n    (q31_t)0x7c7ca2e2, (q31_t)0xeb165b54, (q31_t)0x7c788688, (q31_t)0xeb0a7b54,\n    (q31_t)0x7c7467d9, (q31_t)0xeafe9c24, (q31_t)0x7c7046d6, (q31_t)0xeaf2bdc3,\n    (q31_t)0x7c6c237e, (q31_t)0xeae6e031, (q31_t)0x7c67fdd1, (q31_t)0xeadb0370,\n    (q31_t)0x7c63d5d1, (q31_t)0xeacf277f, (q31_t)0x7c5fab7c, (q31_t)0xeac34c60,\n    (q31_t)0x7c5b7ed4, (q31_t)0xeab77212, (q31_t)0x7c574fd8, (q31_t)0xeaab9896,\n    (q31_t)0x7c531e88, (q31_t)0xea9fbfed, (q31_t)0x7c4eeae5, (q31_t)0xea93e817,\n    (q31_t)0x7c4ab4ef, (q31_t)0xea881114, (q31_t)0x7c467ca6, (q31_t)0xea7c3ae5,\n    (q31_t)0x7c42420a, (q31_t)0xea70658a, (q31_t)0x7c3e051b, (q31_t)0xea649105,\n    (q31_t)0x7c39c5da, (q31_t)0xea58bd54, (q31_t)0x7c358446, (q31_t)0xea4cea79,\n    (q31_t)0x7c314060, (q31_t)0xea411874, (q31_t)0x7c2cfa28, (q31_t)0xea354746,\n    (q31_t)0x7c28b19e, (q31_t)0xea2976ef, (q31_t)0x7c2466c2, (q31_t)0xea1da770,\n    (q31_t)0x7c201994, (q31_t)0xea11d8c8, (q31_t)0x7c1bca16, (q31_t)0xea060af9,\n    (q31_t)0x7c177845, (q31_t)0xe9fa3e03, (q31_t)0x7c132424, (q31_t)0xe9ee71e6,\n    (q31_t)0x7c0ecdb2, (q31_t)0xe9e2a6a3, (q31_t)0x7c0a74f0, (q31_t)0xe9d6dc3b,\n    (q31_t)0x7c0619dc, (q31_t)0xe9cb12ad, (q31_t)0x7c01bc78, (q31_t)0xe9bf49fa,\n    (q31_t)0x7bfd5cc4, (q31_t)0xe9b38223, (q31_t)0x7bf8fac0, (q31_t)0xe9a7bb28,\n    (q31_t)0x7bf4966c, (q31_t)0xe99bf509, (q31_t)0x7bf02fc9, (q31_t)0xe9902fc7,\n    (q31_t)0x7bebc6d5, (q31_t)0xe9846b63, (q31_t)0x7be75b93, (q31_t)0xe978a7dd,\n    (q31_t)0x7be2ee01, (q31_t)0xe96ce535, (q31_t)0x7bde7e20, (q31_t)0xe961236c,\n    (q31_t)0x7bda0bf0, (q31_t)0xe9556282, (q31_t)0x7bd59771, (q31_t)0xe949a278,\n    (q31_t)0x7bd120a4, (q31_t)0xe93de34e, (q31_t)0x7bcca789, (q31_t)0xe9322505,\n    (q31_t)0x7bc82c1f, (q31_t)0xe926679c, (q31_t)0x7bc3ae67, (q31_t)0xe91aab16,\n    (q31_t)0x7bbf2e62, (q31_t)0xe90eef71, (q31_t)0x7bbaac0e, (q31_t)0xe90334af,\n    (q31_t)0x7bb6276e, (q31_t)0xe8f77acf, (q31_t)0x7bb1a080, (q31_t)0xe8ebc1d3,\n    (q31_t)0x7bad1744, (q31_t)0xe8e009ba, (q31_t)0x7ba88bbc, (q31_t)0xe8d45286,\n    (q31_t)0x7ba3fde7, (q31_t)0xe8c89c37, (q31_t)0x7b9f6dc5, (q31_t)0xe8bce6cd,\n    (q31_t)0x7b9adb57, (q31_t)0xe8b13248, (q31_t)0x7b96469d, (q31_t)0xe8a57ea9,\n    (q31_t)0x7b91af97, (q31_t)0xe899cbf1, (q31_t)0x7b8d1644, (q31_t)0xe88e1a20,\n    (q31_t)0x7b887aa6, (q31_t)0xe8826936, (q31_t)0x7b83dcbc, (q31_t)0xe876b934,\n    (q31_t)0x7b7f3c87, (q31_t)0xe86b0a1a, (q31_t)0x7b7a9a07, (q31_t)0xe85f5be9,\n    (q31_t)0x7b75f53c, (q31_t)0xe853aea1, (q31_t)0x7b714e25, (q31_t)0xe8480243,\n    (q31_t)0x7b6ca4c4, (q31_t)0xe83c56cf, (q31_t)0x7b67f919, (q31_t)0xe830ac45,\n    (q31_t)0x7b634b23, (q31_t)0xe82502a7, (q31_t)0x7b5e9ae4, (q31_t)0xe81959f4,\n    (q31_t)0x7b59e85a, (q31_t)0xe80db22d, (q31_t)0x7b553386, (q31_t)0xe8020b52,\n    (q31_t)0x7b507c69, (q31_t)0xe7f66564, (q31_t)0x7b4bc303, (q31_t)0xe7eac063,\n    (q31_t)0x7b470753, (q31_t)0xe7df1c50, (q31_t)0x7b42495a, (q31_t)0xe7d3792b,\n    (q31_t)0x7b3d8918, (q31_t)0xe7c7d6f4, (q31_t)0x7b38c68e, (q31_t)0xe7bc35ad,\n    (q31_t)0x7b3401bb, (q31_t)0xe7b09555, (q31_t)0x7b2f3aa0, (q31_t)0xe7a4f5ed,\n    (q31_t)0x7b2a713d, (q31_t)0xe7995776, (q31_t)0x7b25a591, (q31_t)0xe78db9ef,\n    (q31_t)0x7b20d79e, (q31_t)0xe7821d59, (q31_t)0x7b1c0764, (q31_t)0xe77681b6,\n    (q31_t)0x7b1734e2, (q31_t)0xe76ae704, (q31_t)0x7b126019, (q31_t)0xe75f4d45,\n    (q31_t)0x7b0d8909, (q31_t)0xe753b479, (q31_t)0x7b08afb2, (q31_t)0xe7481ca1,\n    (q31_t)0x7b03d414, (q31_t)0xe73c85bc, (q31_t)0x7afef630, (q31_t)0xe730efcc,\n    (q31_t)0x7afa1605, (q31_t)0xe7255ad1, (q31_t)0x7af53395, (q31_t)0xe719c6cb,\n    (q31_t)0x7af04edf, (q31_t)0xe70e33bb, (q31_t)0x7aeb67e3, (q31_t)0xe702a1a1,\n    (q31_t)0x7ae67ea1, (q31_t)0xe6f7107e, (q31_t)0x7ae1931a, (q31_t)0xe6eb8052,\n    (q31_t)0x7adca54e, (q31_t)0xe6dff11d, (q31_t)0x7ad7b53d, (q31_t)0xe6d462e1,\n    (q31_t)0x7ad2c2e8, (q31_t)0xe6c8d59c, (q31_t)0x7acdce4d, (q31_t)0xe6bd4951,\n    (q31_t)0x7ac8d76f, (q31_t)0xe6b1bdff, (q31_t)0x7ac3de4c, (q31_t)0xe6a633a6,\n    (q31_t)0x7abee2e5, (q31_t)0xe69aaa48, (q31_t)0x7ab9e53a, (q31_t)0xe68f21e5,\n    (q31_t)0x7ab4e54c, (q31_t)0xe6839a7c, (q31_t)0x7aafe31b, (q31_t)0xe6781410,\n    (q31_t)0x7aaadea6, (q31_t)0xe66c8e9f, (q31_t)0x7aa5d7ee, (q31_t)0xe6610a2a,\n    (q31_t)0x7aa0cef3, (q31_t)0xe65586b3, (q31_t)0x7a9bc3b6, (q31_t)0xe64a0438,\n    (q31_t)0x7a96b636, (q31_t)0xe63e82bc, (q31_t)0x7a91a674, (q31_t)0xe633023e,\n    (q31_t)0x7a8c9470, (q31_t)0xe62782be, (q31_t)0x7a87802a, (q31_t)0xe61c043d,\n    (q31_t)0x7a8269a3, (q31_t)0xe61086bc, (q31_t)0x7a7d50da, (q31_t)0xe6050a3b,\n    (q31_t)0x7a7835cf, (q31_t)0xe5f98ebb, (q31_t)0x7a731884, (q31_t)0xe5ee143b,\n    (q31_t)0x7a6df8f8, (q31_t)0xe5e29abc, (q31_t)0x7a68d72b, (q31_t)0xe5d72240,\n    (q31_t)0x7a63b31d, (q31_t)0xe5cbaac5, (q31_t)0x7a5e8cd0, (q31_t)0xe5c0344d,\n    (q31_t)0x7a596442, (q31_t)0xe5b4bed8, (q31_t)0x7a543974, (q31_t)0xe5a94a67,\n    (q31_t)0x7a4f0c67, (q31_t)0xe59dd6f9, (q31_t)0x7a49dd1a, (q31_t)0xe5926490,\n    (q31_t)0x7a44ab8e, (q31_t)0xe586f32c, (q31_t)0x7a3f77c3, (q31_t)0xe57b82cd,\n    (q31_t)0x7a3a41b9, (q31_t)0xe5701374, (q31_t)0x7a350970, (q31_t)0xe564a521,\n    (q31_t)0x7a2fcee8, (q31_t)0xe55937d5, (q31_t)0x7a2a9223, (q31_t)0xe54dcb8f,\n    (q31_t)0x7a25531f, (q31_t)0xe5426051, (q31_t)0x7a2011de, (q31_t)0xe536f61b,\n    (q31_t)0x7a1ace5f, (q31_t)0xe52b8cee, (q31_t)0x7a1588a2, (q31_t)0xe52024c9,\n    (q31_t)0x7a1040a8, (q31_t)0xe514bdad, (q31_t)0x7a0af671, (q31_t)0xe509579b,\n    (q31_t)0x7a05a9fd, (q31_t)0xe4fdf294, (q31_t)0x7a005b4d, (q31_t)0xe4f28e96,\n    (q31_t)0x79fb0a60, (q31_t)0xe4e72ba4, (q31_t)0x79f5b737, (q31_t)0xe4dbc9bd,\n    (q31_t)0x79f061d2, (q31_t)0xe4d068e2, (q31_t)0x79eb0a31, (q31_t)0xe4c50914,\n    (q31_t)0x79e5b054, (q31_t)0xe4b9aa52, (q31_t)0x79e0543c, (q31_t)0xe4ae4c9d,\n    (q31_t)0x79daf5e8, (q31_t)0xe4a2eff6, (q31_t)0x79d5955a, (q31_t)0xe497945d,\n    (q31_t)0x79d03291, (q31_t)0xe48c39d3, (q31_t)0x79cacd8d, (q31_t)0xe480e057,\n    (q31_t)0x79c5664f, (q31_t)0xe47587eb, (q31_t)0x79bffcd7, (q31_t)0xe46a308f,\n    (q31_t)0x79ba9125, (q31_t)0xe45eda43, (q31_t)0x79b52339, (q31_t)0xe4538507,\n    (q31_t)0x79afb313, (q31_t)0xe44830dd, (q31_t)0x79aa40b4, (q31_t)0xe43cddc4,\n    (q31_t)0x79a4cc1c, (q31_t)0xe4318bbe, (q31_t)0x799f554b, (q31_t)0xe4263ac9,\n    (q31_t)0x7999dc42, (q31_t)0xe41aeae8, (q31_t)0x799460ff, (q31_t)0xe40f9c1a,\n    (q31_t)0x798ee385, (q31_t)0xe4044e60, (q31_t)0x798963d2, (q31_t)0xe3f901ba,\n    (q31_t)0x7983e1e8, (q31_t)0xe3edb628, (q31_t)0x797e5dc6, (q31_t)0xe3e26bac,\n    (q31_t)0x7978d76c, (q31_t)0xe3d72245, (q31_t)0x79734edc, (q31_t)0xe3cbd9f4,\n    (q31_t)0x796dc414, (q31_t)0xe3c092b9, (q31_t)0x79683715, (q31_t)0xe3b54c95,\n    (q31_t)0x7962a7e0, (q31_t)0xe3aa0788, (q31_t)0x795d1675, (q31_t)0xe39ec393,\n    (q31_t)0x795782d3, (q31_t)0xe39380b6, (q31_t)0x7951ecfc, (q31_t)0xe3883ef2,\n    (q31_t)0x794c54ee, (q31_t)0xe37cfe47, (q31_t)0x7946baac, (q31_t)0xe371beb5,\n    (q31_t)0x79411e33, (q31_t)0xe366803c, (q31_t)0x793b7f86, (q31_t)0xe35b42df,\n    (q31_t)0x7935dea4, (q31_t)0xe350069b, (q31_t)0x79303b8e, (q31_t)0xe344cb73,\n    (q31_t)0x792a9642, (q31_t)0xe3399167, (q31_t)0x7924eec3, (q31_t)0xe32e5876,\n    (q31_t)0x791f4510, (q31_t)0xe32320a2, (q31_t)0x79199929, (q31_t)0xe317e9eb,\n    (q31_t)0x7913eb0e, (q31_t)0xe30cb451, (q31_t)0x790e3ac0, (q31_t)0xe3017fd5,\n    (q31_t)0x7908883f, (q31_t)0xe2f64c77, (q31_t)0x7902d38b, (q31_t)0xe2eb1a37,\n    (q31_t)0x78fd1ca4, (q31_t)0xe2dfe917, (q31_t)0x78f7638b, (q31_t)0xe2d4b916,\n    (q31_t)0x78f1a840, (q31_t)0xe2c98a35, (q31_t)0x78ebeac2, (q31_t)0xe2be5c74,\n    (q31_t)0x78e62b13, (q31_t)0xe2b32fd4, (q31_t)0x78e06932, (q31_t)0xe2a80456,\n    (q31_t)0x78daa520, (q31_t)0xe29cd9f8, (q31_t)0x78d4dedd, (q31_t)0xe291b0bd,\n    (q31_t)0x78cf1669, (q31_t)0xe28688a4, (q31_t)0x78c94bc4, (q31_t)0xe27b61af,\n    (q31_t)0x78c37eef, (q31_t)0xe2703bdc, (q31_t)0x78bdafea, (q31_t)0xe265172e,\n    (q31_t)0x78b7deb4, (q31_t)0xe259f3a3, (q31_t)0x78b20b4f, (q31_t)0xe24ed13d,\n    (q31_t)0x78ac35ba, (q31_t)0xe243affc, (q31_t)0x78a65df6, (q31_t)0xe2388fe1,\n    (q31_t)0x78a08402, (q31_t)0xe22d70eb, (q31_t)0x789aa7e0, (q31_t)0xe222531c,\n    (q31_t)0x7894c98f, (q31_t)0xe2173674, (q31_t)0x788ee910, (q31_t)0xe20c1af3,\n    (q31_t)0x78890663, (q31_t)0xe2010099, (q31_t)0x78832187, (q31_t)0xe1f5e768,\n    (q31_t)0x787d3a7e, (q31_t)0xe1eacf5f, (q31_t)0x78775147, (q31_t)0xe1dfb87f,\n    (q31_t)0x787165e3, (q31_t)0xe1d4a2c8, (q31_t)0x786b7852, (q31_t)0xe1c98e3b,\n    (q31_t)0x78658894, (q31_t)0xe1be7ad8, (q31_t)0x785f96a9, (q31_t)0xe1b368a0,\n    (q31_t)0x7859a292, (q31_t)0xe1a85793, (q31_t)0x7853ac4f, (q31_t)0xe19d47b1,\n    (q31_t)0x784db3e0, (q31_t)0xe19238fb, (q31_t)0x7847b946, (q31_t)0xe1872b72,\n    (q31_t)0x7841bc7f, (q31_t)0xe17c1f15, (q31_t)0x783bbd8e, (q31_t)0xe17113e5,\n    (q31_t)0x7835bc71, (q31_t)0xe16609e3, (q31_t)0x782fb92a, (q31_t)0xe15b0110,\n    (q31_t)0x7829b3b9, (q31_t)0xe14ff96a, (q31_t)0x7823ac1d, (q31_t)0xe144f2f3,\n    (q31_t)0x781da256, (q31_t)0xe139edac, (q31_t)0x78179666, (q31_t)0xe12ee995,\n    (q31_t)0x7811884d, (q31_t)0xe123e6ad, (q31_t)0x780b780a, (q31_t)0xe118e4f6,\n    (q31_t)0x7805659e, (q31_t)0xe10de470, (q31_t)0x77ff5109, (q31_t)0xe102e51c,\n    (q31_t)0x77f93a4b, (q31_t)0xe0f7e6f9, (q31_t)0x77f32165, (q31_t)0xe0ecea09,\n    (q31_t)0x77ed0657, (q31_t)0xe0e1ee4b, (q31_t)0x77e6e921, (q31_t)0xe0d6f3c1,\n    (q31_t)0x77e0c9c3, (q31_t)0xe0cbfa6a, (q31_t)0x77daa83d, (q31_t)0xe0c10247,\n    (q31_t)0x77d48490, (q31_t)0xe0b60b58, (q31_t)0x77ce5ebd, (q31_t)0xe0ab159e,\n    (q31_t)0x77c836c2, (q31_t)0xe0a0211a, (q31_t)0x77c20ca1, (q31_t)0xe0952dcb,\n    (q31_t)0x77bbe05a, (q31_t)0xe08a3bb2, (q31_t)0x77b5b1ec, (q31_t)0xe07f4acf,\n    (q31_t)0x77af8159, (q31_t)0xe0745b24, (q31_t)0x77a94ea0, (q31_t)0xe0696cb0,\n    (q31_t)0x77a319c2, (q31_t)0xe05e7f74, (q31_t)0x779ce2be, (q31_t)0xe053936f,\n    (q31_t)0x7796a996, (q31_t)0xe048a8a4, (q31_t)0x77906e49, (q31_t)0xe03dbf11,\n    (q31_t)0x778a30d8, (q31_t)0xe032d6b8, (q31_t)0x7783f143, (q31_t)0xe027ef99,\n    (q31_t)0x777daf89, (q31_t)0xe01d09b4, (q31_t)0x77776bac, (q31_t)0xe012250a,\n    (q31_t)0x777125ac, (q31_t)0xe007419b, (q31_t)0x776add88, (q31_t)0xdffc5f67,\n    (q31_t)0x77649341, (q31_t)0xdff17e70, (q31_t)0x775e46d8, (q31_t)0xdfe69eb4,\n    (q31_t)0x7757f84c, (q31_t)0xdfdbc036, (q31_t)0x7751a79e, (q31_t)0xdfd0e2f5,\n    (q31_t)0x774b54ce, (q31_t)0xdfc606f1, (q31_t)0x7744ffdd, (q31_t)0xdfbb2c2c,\n    (q31_t)0x773ea8ca, (q31_t)0xdfb052a5, (q31_t)0x77384f95, (q31_t)0xdfa57a5d,\n    (q31_t)0x7731f440, (q31_t)0xdf9aa354, (q31_t)0x772b96ca, (q31_t)0xdf8fcd8b,\n    (q31_t)0x77253733, (q31_t)0xdf84f902, (q31_t)0x771ed57c, (q31_t)0xdf7a25ba,\n    (q31_t)0x771871a5, (q31_t)0xdf6f53b3, (q31_t)0x77120bae, (q31_t)0xdf6482ed,\n    (q31_t)0x770ba398, (q31_t)0xdf59b369, (q31_t)0x77053962, (q31_t)0xdf4ee527,\n    (q31_t)0x76fecd0e, (q31_t)0xdf441828, (q31_t)0x76f85e9a, (q31_t)0xdf394c6b,\n    (q31_t)0x76f1ee09, (q31_t)0xdf2e81f3, (q31_t)0x76eb7b58, (q31_t)0xdf23b8be,\n    (q31_t)0x76e5068a, (q31_t)0xdf18f0ce, (q31_t)0x76de8f9e, (q31_t)0xdf0e2a22,\n    (q31_t)0x76d81695, (q31_t)0xdf0364bc, (q31_t)0x76d19b6e, (q31_t)0xdef8a09b,\n    (q31_t)0x76cb1e2a, (q31_t)0xdeedddc0, (q31_t)0x76c49ec9, (q31_t)0xdee31c2b,\n    (q31_t)0x76be1d4c, (q31_t)0xded85bdd, (q31_t)0x76b799b3, (q31_t)0xdecd9cd7,\n    (q31_t)0x76b113fd, (q31_t)0xdec2df18, (q31_t)0x76aa8c2c, (q31_t)0xdeb822a1,\n    (q31_t)0x76a4023f, (q31_t)0xdead6773, (q31_t)0x769d7637, (q31_t)0xdea2ad8d,\n    (q31_t)0x7696e814, (q31_t)0xde97f4f1, (q31_t)0x769057d6, (q31_t)0xde8d3d9e,\n    (q31_t)0x7689c57d, (q31_t)0xde828796, (q31_t)0x7683310b, (q31_t)0xde77d2d8,\n    (q31_t)0x767c9a7e, (q31_t)0xde6d1f65, (q31_t)0x767601d7, (q31_t)0xde626d3e,\n    (q31_t)0x766f6717, (q31_t)0xde57bc62, (q31_t)0x7668ca3e, (q31_t)0xde4d0cd2,\n    (q31_t)0x76622b4c, (q31_t)0xde425e8f, (q31_t)0x765b8a41, (q31_t)0xde37b199,\n    (q31_t)0x7654e71d, (q31_t)0xde2d05f1, (q31_t)0x764e41e2, (q31_t)0xde225b96,\n    (q31_t)0x76479a8e, (q31_t)0xde17b28a, (q31_t)0x7640f123, (q31_t)0xde0d0acc,\n    (q31_t)0x763a45a0, (q31_t)0xde02645d, (q31_t)0x76339806, (q31_t)0xddf7bf3e,\n    (q31_t)0x762ce855, (q31_t)0xdded1b6e, (q31_t)0x7626368d, (q31_t)0xdde278ef,\n    (q31_t)0x761f82af, (q31_t)0xddd7d7c1, (q31_t)0x7618ccba, (q31_t)0xddcd37e4,\n    (q31_t)0x761214b0, (q31_t)0xddc29958, (q31_t)0x760b5a90, (q31_t)0xddb7fc1e,\n    (q31_t)0x76049e5b, (q31_t)0xddad6036, (q31_t)0x75fde011, (q31_t)0xdda2c5a2,\n    (q31_t)0x75f71fb1, (q31_t)0xdd982c60, (q31_t)0x75f05d3d, (q31_t)0xdd8d9472,\n    (q31_t)0x75e998b5, (q31_t)0xdd82fdd8, (q31_t)0x75e2d219, (q31_t)0xdd786892,\n    (q31_t)0x75dc0968, (q31_t)0xdd6dd4a2, (q31_t)0x75d53ea5, (q31_t)0xdd634206,\n    (q31_t)0x75ce71ce, (q31_t)0xdd58b0c0, (q31_t)0x75c7a2e3, (q31_t)0xdd4e20d0,\n    (q31_t)0x75c0d1e7, (q31_t)0xdd439236, (q31_t)0x75b9fed7, (q31_t)0xdd3904f4,\n    (q31_t)0x75b329b5, (q31_t)0xdd2e7908, (q31_t)0x75ac5282, (q31_t)0xdd23ee74,\n    (q31_t)0x75a5793c, (q31_t)0xdd196538, (q31_t)0x759e9de5, (q31_t)0xdd0edd55,\n    (q31_t)0x7597c07d, (q31_t)0xdd0456ca, (q31_t)0x7590e104, (q31_t)0xdcf9d199,\n    (q31_t)0x7589ff7a, (q31_t)0xdcef4dc2, (q31_t)0x75831be0, (q31_t)0xdce4cb44,\n    (q31_t)0x757c3636, (q31_t)0xdcda4a21, (q31_t)0x75754e7c, (q31_t)0xdccfca59,\n    (q31_t)0x756e64b2, (q31_t)0xdcc54bec, (q31_t)0x756778d9, (q31_t)0xdcbacedb,\n    (q31_t)0x75608af1, (q31_t)0xdcb05326, (q31_t)0x75599afa, (q31_t)0xdca5d8cd,\n    (q31_t)0x7552a8f4, (q31_t)0xdc9b5fd2, (q31_t)0x754bb4e1, (q31_t)0xdc90e834,\n    (q31_t)0x7544bebf, (q31_t)0xdc8671f3, (q31_t)0x753dc68f, (q31_t)0xdc7bfd11,\n    (q31_t)0x7536cc52, (q31_t)0xdc71898d, (q31_t)0x752fd008, (q31_t)0xdc671768,\n    (q31_t)0x7528d1b1, (q31_t)0xdc5ca6a2, (q31_t)0x7521d14d, (q31_t)0xdc52373c,\n    (q31_t)0x751acedd, (q31_t)0xdc47c936, (q31_t)0x7513ca60, (q31_t)0xdc3d5c91,\n    (q31_t)0x750cc3d8, (q31_t)0xdc32f14d, (q31_t)0x7505bb44, (q31_t)0xdc28876a,\n    (q31_t)0x74feb0a5, (q31_t)0xdc1e1ee9, (q31_t)0x74f7a3fb, (q31_t)0xdc13b7c9,\n    (q31_t)0x74f09546, (q31_t)0xdc09520d, (q31_t)0x74e98487, (q31_t)0xdbfeedb3,\n    (q31_t)0x74e271bd, (q31_t)0xdbf48abd, (q31_t)0x74db5cea, (q31_t)0xdbea292b,\n    (q31_t)0x74d4460c, (q31_t)0xdbdfc8fc, (q31_t)0x74cd2d26, (q31_t)0xdbd56a32,\n    (q31_t)0x74c61236, (q31_t)0xdbcb0cce, (q31_t)0x74bef53d, (q31_t)0xdbc0b0ce,\n    (q31_t)0x74b7d63c, (q31_t)0xdbb65634, (q31_t)0x74b0b533, (q31_t)0xdbabfd01,\n    (q31_t)0x74a99221, (q31_t)0xdba1a534, (q31_t)0x74a26d08, (q31_t)0xdb974ece,\n    (q31_t)0x749b45e7, (q31_t)0xdb8cf9cf, (q31_t)0x74941cbf, (q31_t)0xdb82a638,\n    (q31_t)0x748cf190, (q31_t)0xdb785409, (q31_t)0x7485c45b, (q31_t)0xdb6e0342,\n    (q31_t)0x747e951f, (q31_t)0xdb63b3e5, (q31_t)0x747763dd, (q31_t)0xdb5965f1,\n    (q31_t)0x74703095, (q31_t)0xdb4f1967, (q31_t)0x7468fb47, (q31_t)0xdb44ce46,\n    (q31_t)0x7461c3f5, (q31_t)0xdb3a8491, (q31_t)0x745a8a9d, (q31_t)0xdb303c46,\n    (q31_t)0x74534f41, (q31_t)0xdb25f566, (q31_t)0x744c11e0, (q31_t)0xdb1baff2,\n    (q31_t)0x7444d27b, (q31_t)0xdb116beb, (q31_t)0x743d9112, (q31_t)0xdb072950,\n    (q31_t)0x74364da6, (q31_t)0xdafce821, (q31_t)0x742f0836, (q31_t)0xdaf2a860,\n    (q31_t)0x7427c0c3, (q31_t)0xdae86a0d, (q31_t)0x7420774d, (q31_t)0xdade2d28,\n    (q31_t)0x74192bd5, (q31_t)0xdad3f1b1, (q31_t)0x7411de5b, (q31_t)0xdac9b7a9,\n    (q31_t)0x740a8edf, (q31_t)0xdabf7f11, (q31_t)0x74033d61, (q31_t)0xdab547e8,\n    (q31_t)0x73fbe9e2, (q31_t)0xdaab122f, (q31_t)0x73f49462, (q31_t)0xdaa0dde7,\n    (q31_t)0x73ed3ce1, (q31_t)0xda96ab0f, (q31_t)0x73e5e360, (q31_t)0xda8c79a9,\n    (q31_t)0x73de87de, (q31_t)0xda8249b4, (q31_t)0x73d72a5d, (q31_t)0xda781b31,\n    (q31_t)0x73cfcadc, (q31_t)0xda6dee21, (q31_t)0x73c8695b, (q31_t)0xda63c284,\n    (q31_t)0x73c105db, (q31_t)0xda599859, (q31_t)0x73b9a05d, (q31_t)0xda4f6fa3,\n    (q31_t)0x73b238e0, (q31_t)0xda454860, (q31_t)0x73aacf65, (q31_t)0xda3b2292,\n    (q31_t)0x73a363ec, (q31_t)0xda30fe38, (q31_t)0x739bf675, (q31_t)0xda26db54,\n    (q31_t)0x73948701, (q31_t)0xda1cb9e5, (q31_t)0x738d1590, (q31_t)0xda1299ec,\n    (q31_t)0x7385a222, (q31_t)0xda087b69, (q31_t)0x737e2cb7, (q31_t)0xd9fe5e5e,\n    (q31_t)0x7376b551, (q31_t)0xd9f442c9, (q31_t)0x736f3bee, (q31_t)0xd9ea28ac,\n    (q31_t)0x7367c090, (q31_t)0xd9e01006, (q31_t)0x73604336, (q31_t)0xd9d5f8d9,\n    (q31_t)0x7358c3e2, (q31_t)0xd9cbe325, (q31_t)0x73514292, (q31_t)0xd9c1cee9,\n    (q31_t)0x7349bf48, (q31_t)0xd9b7bc27, (q31_t)0x73423a04, (q31_t)0xd9adaadf,\n    (q31_t)0x733ab2c6, (q31_t)0xd9a39b11, (q31_t)0x7333298f, (q31_t)0xd9998cbe,\n    (q31_t)0x732b9e5e, (q31_t)0xd98f7fe6, (q31_t)0x73241134, (q31_t)0xd9857489,\n    (q31_t)0x731c8211, (q31_t)0xd97b6aa8, (q31_t)0x7314f0f6, (q31_t)0xd9716243,\n    (q31_t)0x730d5de3, (q31_t)0xd9675b5a, (q31_t)0x7305c8d7, (q31_t)0xd95d55ef,\n    (q31_t)0x72fe31d5, (q31_t)0xd9535201, (q31_t)0x72f698db, (q31_t)0xd9494f90,\n    (q31_t)0x72eefdea, (q31_t)0xd93f4e9e, (q31_t)0x72e76102, (q31_t)0xd9354f2a,\n    (q31_t)0x72dfc224, (q31_t)0xd92b5135, (q31_t)0x72d82150, (q31_t)0xd92154bf,\n    (q31_t)0x72d07e85, (q31_t)0xd91759c9, (q31_t)0x72c8d9c6, (q31_t)0xd90d6053,\n    (q31_t)0x72c13311, (q31_t)0xd903685d, (q31_t)0x72b98a67, (q31_t)0xd8f971e8,\n    (q31_t)0x72b1dfc9, (q31_t)0xd8ef7cf4, (q31_t)0x72aa3336, (q31_t)0xd8e58982,\n    (q31_t)0x72a284b0, (q31_t)0xd8db9792, (q31_t)0x729ad435, (q31_t)0xd8d1a724,\n    (q31_t)0x729321c7, (q31_t)0xd8c7b838, (q31_t)0x728b6d66, (q31_t)0xd8bdcad0,\n    (q31_t)0x7283b712, (q31_t)0xd8b3deeb, (q31_t)0x727bfecc, (q31_t)0xd8a9f48a,\n    (q31_t)0x72744493, (q31_t)0xd8a00bae, (q31_t)0x726c8868, (q31_t)0xd8962456,\n    (q31_t)0x7264ca4c, (q31_t)0xd88c3e83, (q31_t)0x725d0a3e, (q31_t)0xd8825a35,\n    (q31_t)0x72554840, (q31_t)0xd878776d, (q31_t)0x724d8450, (q31_t)0xd86e962b,\n    (q31_t)0x7245be70, (q31_t)0xd864b670, (q31_t)0x723df6a0, (q31_t)0xd85ad83c,\n    (q31_t)0x72362ce0, (q31_t)0xd850fb8e, (q31_t)0x722e6130, (q31_t)0xd8472069,\n    (q31_t)0x72269391, (q31_t)0xd83d46cc, (q31_t)0x721ec403, (q31_t)0xd8336eb7,\n    (q31_t)0x7216f287, (q31_t)0xd829982b, (q31_t)0x720f1f1c, (q31_t)0xd81fc328,\n    (q31_t)0x720749c3, (q31_t)0xd815efae, (q31_t)0x71ff727c, (q31_t)0xd80c1dbf,\n    (q31_t)0x71f79948, (q31_t)0xd8024d59, (q31_t)0x71efbe27, (q31_t)0xd7f87e7f,\n    (q31_t)0x71e7e118, (q31_t)0xd7eeb130, (q31_t)0x71e0021e, (q31_t)0xd7e4e56c,\n    (q31_t)0x71d82137, (q31_t)0xd7db1b34, (q31_t)0x71d03e64, (q31_t)0xd7d15288,\n    (q31_t)0x71c859a5, (q31_t)0xd7c78b68, (q31_t)0x71c072fb, (q31_t)0xd7bdc5d6,\n    (q31_t)0x71b88a66, (q31_t)0xd7b401d1, (q31_t)0x71b09fe7, (q31_t)0xd7aa3f5a,\n    (q31_t)0x71a8b37c, (q31_t)0xd7a07e70, (q31_t)0x71a0c528, (q31_t)0xd796bf16,\n    (q31_t)0x7198d4ea, (q31_t)0xd78d014a, (q31_t)0x7190e2c3, (q31_t)0xd783450d,\n    (q31_t)0x7188eeb2, (q31_t)0xd7798a60, (q31_t)0x7180f8b8, (q31_t)0xd76fd143,\n    (q31_t)0x717900d6, (q31_t)0xd76619b6, (q31_t)0x7171070c, (q31_t)0xd75c63ba,\n    (q31_t)0x71690b59, (q31_t)0xd752af4f, (q31_t)0x71610dbf, (q31_t)0xd748fc75,\n    (q31_t)0x71590e3e, (q31_t)0xd73f4b2e, (q31_t)0x71510cd5, (q31_t)0xd7359b78,\n    (q31_t)0x71490986, (q31_t)0xd72bed55, (q31_t)0x71410450, (q31_t)0xd72240c5,\n    (q31_t)0x7138fd35, (q31_t)0xd71895c9, (q31_t)0x7130f433, (q31_t)0xd70eec60,\n    (q31_t)0x7128e94c, (q31_t)0xd705448b, (q31_t)0x7120dc80, (q31_t)0xd6fb9e4b,\n    (q31_t)0x7118cdcf, (q31_t)0xd6f1f99f, (q31_t)0x7110bd39, (q31_t)0xd6e85689,\n    (q31_t)0x7108aabf, (q31_t)0xd6deb508, (q31_t)0x71009661, (q31_t)0xd6d5151d,\n    (q31_t)0x70f8801f, (q31_t)0xd6cb76c9, (q31_t)0x70f067fb, (q31_t)0xd6c1da0b,\n    (q31_t)0x70e84df3, (q31_t)0xd6b83ee4, (q31_t)0x70e03208, (q31_t)0xd6aea555,\n    (q31_t)0x70d8143b, (q31_t)0xd6a50d5d, (q31_t)0x70cff48c, (q31_t)0xd69b76fe,\n    (q31_t)0x70c7d2fb, (q31_t)0xd691e237, (q31_t)0x70bfaf89, (q31_t)0xd6884f09,\n    (q31_t)0x70b78a36, (q31_t)0xd67ebd74, (q31_t)0x70af6302, (q31_t)0xd6752d79,\n    (q31_t)0x70a739ed, (q31_t)0xd66b9f18, (q31_t)0x709f0ef8, (q31_t)0xd6621251,\n    (q31_t)0x7096e223, (q31_t)0xd6588725, (q31_t)0x708eb36f, (q31_t)0xd64efd94,\n    (q31_t)0x708682dc, (q31_t)0xd645759f, (q31_t)0x707e5069, (q31_t)0xd63bef46,\n    (q31_t)0x70761c18, (q31_t)0xd6326a88, (q31_t)0x706de5e9, (q31_t)0xd628e767,\n    (q31_t)0x7065addb, (q31_t)0xd61f65e4, (q31_t)0x705d73f0, (q31_t)0xd615e5fd,\n    (q31_t)0x70553828, (q31_t)0xd60c67b4, (q31_t)0x704cfa83, (q31_t)0xd602eb0a,\n    (q31_t)0x7044bb00, (q31_t)0xd5f96ffd, (q31_t)0x703c79a2, (q31_t)0xd5eff690,\n    (q31_t)0x70343667, (q31_t)0xd5e67ec1, (q31_t)0x702bf151, (q31_t)0xd5dd0892,\n    (q31_t)0x7023aa5f, (q31_t)0xd5d39403, (q31_t)0x701b6193, (q31_t)0xd5ca2115,\n    (q31_t)0x701316eb, (q31_t)0xd5c0afc6, (q31_t)0x700aca69, (q31_t)0xd5b74019,\n    (q31_t)0x70027c0c, (q31_t)0xd5add20d, (q31_t)0x6ffa2bd6, (q31_t)0xd5a465a3,\n    (q31_t)0x6ff1d9c7, (q31_t)0xd59afadb, (q31_t)0x6fe985de, (q31_t)0xd59191b5,\n    (q31_t)0x6fe1301c, (q31_t)0xd5882a32, (q31_t)0x6fd8d882, (q31_t)0xd57ec452,\n    (q31_t)0x6fd07f0f, (q31_t)0xd5756016, (q31_t)0x6fc823c5, (q31_t)0xd56bfd7d,\n    (q31_t)0x6fbfc6a3, (q31_t)0xd5629c89, (q31_t)0x6fb767aa, (q31_t)0xd5593d3a,\n    (q31_t)0x6faf06da, (q31_t)0xd54fdf8f, (q31_t)0x6fa6a433, (q31_t)0xd5468389,\n    (q31_t)0x6f9e3fb6, (q31_t)0xd53d292a, (q31_t)0x6f95d963, (q31_t)0xd533d070,\n    (q31_t)0x6f8d713a, (q31_t)0xd52a795d, (q31_t)0x6f85073c, (q31_t)0xd52123f0,\n    (q31_t)0x6f7c9b69, (q31_t)0xd517d02b, (q31_t)0x6f742dc1, (q31_t)0xd50e7e0d,\n    (q31_t)0x6f6bbe45, (q31_t)0xd5052d97, (q31_t)0x6f634cf5, (q31_t)0xd4fbdec9,\n    (q31_t)0x6f5ad9d1, (q31_t)0xd4f291a4, (q31_t)0x6f5264da, (q31_t)0xd4e94627,\n    (q31_t)0x6f49ee0f, (q31_t)0xd4dffc54, (q31_t)0x6f417573, (q31_t)0xd4d6b42b,\n    (q31_t)0x6f38fb03, (q31_t)0xd4cd6dab, (q31_t)0x6f307ec2, (q31_t)0xd4c428d6,\n    (q31_t)0x6f2800af, (q31_t)0xd4bae5ab, (q31_t)0x6f1f80ca, (q31_t)0xd4b1a42c,\n    (q31_t)0x6f16ff14, (q31_t)0xd4a86458, (q31_t)0x6f0e7b8e, (q31_t)0xd49f2630,\n    (q31_t)0x6f05f637, (q31_t)0xd495e9b3, (q31_t)0x6efd6f10, (q31_t)0xd48caee4,\n    (q31_t)0x6ef4e619, (q31_t)0xd48375c1, (q31_t)0x6eec5b53, (q31_t)0xd47a3e4b,\n    (q31_t)0x6ee3cebe, (q31_t)0xd4710883, (q31_t)0x6edb405a, (q31_t)0xd467d469,\n    (q31_t)0x6ed2b027, (q31_t)0xd45ea1fd, (q31_t)0x6eca1e27, (q31_t)0xd4557140,\n    (q31_t)0x6ec18a58, (q31_t)0xd44c4232, (q31_t)0x6eb8f4bc, (q31_t)0xd44314d3,\n    (q31_t)0x6eb05d53, (q31_t)0xd439e923, (q31_t)0x6ea7c41e, (q31_t)0xd430bf24,\n    (q31_t)0x6e9f291b, (q31_t)0xd42796d5, (q31_t)0x6e968c4d, (q31_t)0xd41e7037,\n    (q31_t)0x6e8dedb3, (q31_t)0xd4154b4a, (q31_t)0x6e854d4d, (q31_t)0xd40c280e,\n    (q31_t)0x6e7cab1c, (q31_t)0xd4030684, (q31_t)0x6e740720, (q31_t)0xd3f9e6ad,\n    (q31_t)0x6e6b615a, (q31_t)0xd3f0c887, (q31_t)0x6e62b9ca, (q31_t)0xd3e7ac15,\n    (q31_t)0x6e5a1070, (q31_t)0xd3de9156, (q31_t)0x6e51654c, (q31_t)0xd3d5784a,\n    (q31_t)0x6e48b860, (q31_t)0xd3cc60f2, (q31_t)0x6e4009aa, (q31_t)0xd3c34b4f,\n    (q31_t)0x6e37592c, (q31_t)0xd3ba3760, (q31_t)0x6e2ea6e6, (q31_t)0xd3b12526,\n    (q31_t)0x6e25f2d8, (q31_t)0xd3a814a2, (q31_t)0x6e1d3d03, (q31_t)0xd39f05d3,\n    (q31_t)0x6e148566, (q31_t)0xd395f8ba, (q31_t)0x6e0bcc03, (q31_t)0xd38ced57,\n    (q31_t)0x6e0310d9, (q31_t)0xd383e3ab, (q31_t)0x6dfa53e9, (q31_t)0xd37adbb6,\n    (q31_t)0x6df19534, (q31_t)0xd371d579, (q31_t)0x6de8d4b8, (q31_t)0xd368d0f3,\n    (q31_t)0x6de01278, (q31_t)0xd35fce26, (q31_t)0x6dd74e73, (q31_t)0xd356cd11,\n    (q31_t)0x6dce88aa, (q31_t)0xd34dcdb4, (q31_t)0x6dc5c11c, (q31_t)0xd344d011,\n    (q31_t)0x6dbcf7cb, (q31_t)0xd33bd427, (q31_t)0x6db42cb6, (q31_t)0xd332d9f7,\n    (q31_t)0x6dab5fdf, (q31_t)0xd329e181, (q31_t)0x6da29144, (q31_t)0xd320eac6,\n    (q31_t)0x6d99c0e7, (q31_t)0xd317f5c6, (q31_t)0x6d90eec8, (q31_t)0xd30f0280,\n    (q31_t)0x6d881ae8, (q31_t)0xd30610f7, (q31_t)0x6d7f4545, (q31_t)0xd2fd2129,\n    (q31_t)0x6d766de2, (q31_t)0xd2f43318, (q31_t)0x6d6d94bf, (q31_t)0xd2eb46c3,\n    (q31_t)0x6d64b9da, (q31_t)0xd2e25c2b, (q31_t)0x6d5bdd36, (q31_t)0xd2d97350,\n    (q31_t)0x6d52fed2, (q31_t)0xd2d08c33, (q31_t)0x6d4a1eaf, (q31_t)0xd2c7a6d4,\n    (q31_t)0x6d413ccd, (q31_t)0xd2bec333, (q31_t)0x6d38592c, (q31_t)0xd2b5e151,\n    (q31_t)0x6d2f73cd, (q31_t)0xd2ad012e, (q31_t)0x6d268cb0, (q31_t)0xd2a422ca,\n    (q31_t)0x6d1da3d5, (q31_t)0xd29b4626, (q31_t)0x6d14b93d, (q31_t)0xd2926b41,\n    (q31_t)0x6d0bcce8, (q31_t)0xd289921e, (q31_t)0x6d02ded7, (q31_t)0xd280babb,\n    (q31_t)0x6cf9ef09, (q31_t)0xd277e518, (q31_t)0x6cf0fd80, (q31_t)0xd26f1138,\n    (q31_t)0x6ce80a3a, (q31_t)0xd2663f19, (q31_t)0x6cdf153a, (q31_t)0xd25d6ebc,\n    (q31_t)0x6cd61e7f, (q31_t)0xd254a021, (q31_t)0x6ccd2609, (q31_t)0xd24bd34a,\n    (q31_t)0x6cc42bd9, (q31_t)0xd2430835, (q31_t)0x6cbb2fef, (q31_t)0xd23a3ee4,\n    (q31_t)0x6cb2324c, (q31_t)0xd2317756, (q31_t)0x6ca932ef, (q31_t)0xd228b18d,\n    (q31_t)0x6ca031da, (q31_t)0xd21fed88, (q31_t)0x6c972f0d, (q31_t)0xd2172b48,\n    (q31_t)0x6c8e2a87, (q31_t)0xd20e6acc, (q31_t)0x6c85244a, (q31_t)0xd205ac17,\n    (q31_t)0x6c7c1c55, (q31_t)0xd1fcef27, (q31_t)0x6c7312a9, (q31_t)0xd1f433fd,\n    (q31_t)0x6c6a0746, (q31_t)0xd1eb7a9a, (q31_t)0x6c60fa2d, (q31_t)0xd1e2c2fd,\n    (q31_t)0x6c57eb5e, (q31_t)0xd1da0d28, (q31_t)0x6c4edada, (q31_t)0xd1d1591a,\n    (q31_t)0x6c45c8a0, (q31_t)0xd1c8a6d4, (q31_t)0x6c3cb4b1, (q31_t)0xd1bff656,\n    (q31_t)0x6c339f0e, (q31_t)0xd1b747a0, (q31_t)0x6c2a87b6, (q31_t)0xd1ae9ab4,\n    (q31_t)0x6c216eaa, (q31_t)0xd1a5ef90, (q31_t)0x6c1853eb, (q31_t)0xd19d4636,\n    (q31_t)0x6c0f3779, (q31_t)0xd1949ea6, (q31_t)0x6c061953, (q31_t)0xd18bf8e0,\n    (q31_t)0x6bfcf97c, (q31_t)0xd18354e4, (q31_t)0x6bf3d7f2, (q31_t)0xd17ab2b3,\n    (q31_t)0x6beab4b6, (q31_t)0xd172124d, (q31_t)0x6be18fc9, (q31_t)0xd16973b3,\n    (q31_t)0x6bd8692b, (q31_t)0xd160d6e5, (q31_t)0x6bcf40dc, (q31_t)0xd1583be2,\n    (q31_t)0x6bc616dd, (q31_t)0xd14fa2ad, (q31_t)0x6bbceb2d, (q31_t)0xd1470b44,\n    (q31_t)0x6bb3bdce, (q31_t)0xd13e75a8, (q31_t)0x6baa8ec0, (q31_t)0xd135e1d9,\n    (q31_t)0x6ba15e03, (q31_t)0xd12d4fd9, (q31_t)0x6b982b97, (q31_t)0xd124bfa6,\n    (q31_t)0x6b8ef77d, (q31_t)0xd11c3142, (q31_t)0x6b85c1b5, (q31_t)0xd113a4ad,\n    (q31_t)0x6b7c8a3f, (q31_t)0xd10b19e7, (q31_t)0x6b73511c, (q31_t)0xd10290f0,\n    (q31_t)0x6b6a164d, (q31_t)0xd0fa09c9, (q31_t)0x6b60d9d0, (q31_t)0xd0f18472,\n    (q31_t)0x6b579ba8, (q31_t)0xd0e900ec, (q31_t)0x6b4e5bd4, (q31_t)0xd0e07f36,\n    (q31_t)0x6b451a55, (q31_t)0xd0d7ff51, (q31_t)0x6b3bd72a, (q31_t)0xd0cf813e,\n    (q31_t)0x6b329255, (q31_t)0xd0c704fd, (q31_t)0x6b294bd5, (q31_t)0xd0be8a8d,\n    (q31_t)0x6b2003ac, (q31_t)0xd0b611f1, (q31_t)0x6b16b9d9, (q31_t)0xd0ad9b26,\n    (q31_t)0x6b0d6e5c, (q31_t)0xd0a5262f, (q31_t)0x6b042137, (q31_t)0xd09cb30b,\n    (q31_t)0x6afad269, (q31_t)0xd09441bb, (q31_t)0x6af181f3, (q31_t)0xd08bd23f,\n    (q31_t)0x6ae82fd5, (q31_t)0xd0836497, (q31_t)0x6adedc10, (q31_t)0xd07af8c4,\n    (q31_t)0x6ad586a3, (q31_t)0xd0728ec6, (q31_t)0x6acc2f90, (q31_t)0xd06a269d,\n    (q31_t)0x6ac2d6d6, (q31_t)0xd061c04a, (q31_t)0x6ab97c77, (q31_t)0xd0595bcd,\n    (q31_t)0x6ab02071, (q31_t)0xd050f926, (q31_t)0x6aa6c2c6, (q31_t)0xd0489856,\n    (q31_t)0x6a9d6377, (q31_t)0xd040395d, (q31_t)0x6a940283, (q31_t)0xd037dc3b,\n    (q31_t)0x6a8a9fea, (q31_t)0xd02f80f1, (q31_t)0x6a813bae, (q31_t)0xd027277e,\n    (q31_t)0x6a77d5ce, (q31_t)0xd01ecfe4, (q31_t)0x6a6e6e4b, (q31_t)0xd0167a22,\n    (q31_t)0x6a650525, (q31_t)0xd00e2639, (q31_t)0x6a5b9a5d, (q31_t)0xd005d42a,\n    (q31_t)0x6a522df3, (q31_t)0xcffd83f4, (q31_t)0x6a48bfe7, (q31_t)0xcff53597,\n    (q31_t)0x6a3f503a, (q31_t)0xcfece915, (q31_t)0x6a35deeb, (q31_t)0xcfe49e6d,\n    (q31_t)0x6a2c6bfd, (q31_t)0xcfdc55a1, (q31_t)0x6a22f76e, (q31_t)0xcfd40eaf,\n    (q31_t)0x6a19813f, (q31_t)0xcfcbc999, (q31_t)0x6a100970, (q31_t)0xcfc3865e,\n    (q31_t)0x6a069003, (q31_t)0xcfbb4500, (q31_t)0x69fd14f6, (q31_t)0xcfb3057d,\n    (q31_t)0x69f3984c, (q31_t)0xcfaac7d8, (q31_t)0x69ea1a03, (q31_t)0xcfa28c10,\n    (q31_t)0x69e09a1c, (q31_t)0xcf9a5225, (q31_t)0x69d71899, (q31_t)0xcf921a17,\n    (q31_t)0x69cd9578, (q31_t)0xcf89e3e8, (q31_t)0x69c410ba, (q31_t)0xcf81af97,\n    (q31_t)0x69ba8a61, (q31_t)0xcf797d24, (q31_t)0x69b1026c, (q31_t)0xcf714c91,\n    (q31_t)0x69a778db, (q31_t)0xcf691ddd, (q31_t)0x699dedaf, (q31_t)0xcf60f108,\n    (q31_t)0x699460e8, (q31_t)0xcf58c613, (q31_t)0x698ad287, (q31_t)0xcf509cfe,\n    (q31_t)0x6981428c, (q31_t)0xcf4875ca, (q31_t)0x6977b0f7, (q31_t)0xcf405077,\n    (q31_t)0x696e1dc9, (q31_t)0xcf382d05, (q31_t)0x69648902, (q31_t)0xcf300b74,\n    (q31_t)0x695af2a3, (q31_t)0xcf27ebc5, (q31_t)0x69515aab, (q31_t)0xcf1fcdf8,\n    (q31_t)0x6947c11c, (q31_t)0xcf17b20d, (q31_t)0x693e25f5, (q31_t)0xcf0f9805,\n    (q31_t)0x69348937, (q31_t)0xcf077fe1, (q31_t)0x692aeae3, (q31_t)0xceff699f,\n    (q31_t)0x69214af8, (q31_t)0xcef75541, (q31_t)0x6917a977, (q31_t)0xceef42c7,\n    (q31_t)0x690e0661, (q31_t)0xcee73231, (q31_t)0x690461b5, (q31_t)0xcedf2380,\n    (q31_t)0x68fabb75, (q31_t)0xced716b4, (q31_t)0x68f113a0, (q31_t)0xcecf0bcd,\n    (q31_t)0x68e76a37, (q31_t)0xcec702cb, (q31_t)0x68ddbf3b, (q31_t)0xcebefbb0,\n    (q31_t)0x68d412ab, (q31_t)0xceb6f67a, (q31_t)0x68ca6488, (q31_t)0xceaef32b,\n    (q31_t)0x68c0b4d2, (q31_t)0xcea6f1c2, (q31_t)0x68b7038b, (q31_t)0xce9ef241,\n    (q31_t)0x68ad50b1, (q31_t)0xce96f4a7, (q31_t)0x68a39c46, (q31_t)0xce8ef8f4,\n    (q31_t)0x6899e64a, (q31_t)0xce86ff2a, (q31_t)0x68902ebd, (q31_t)0xce7f0748,\n    (q31_t)0x688675a0, (q31_t)0xce77114e, (q31_t)0x687cbaf3, (q31_t)0xce6f1d3d,\n    (q31_t)0x6872feb6, (q31_t)0xce672b16, (q31_t)0x686940ea, (q31_t)0xce5f3ad8,\n    (q31_t)0x685f8190, (q31_t)0xce574c84, (q31_t)0x6855c0a6, (q31_t)0xce4f6019,\n    (q31_t)0x684bfe2f, (q31_t)0xce47759a, (q31_t)0x68423a2a, (q31_t)0xce3f8d05,\n    (q31_t)0x68387498, (q31_t)0xce37a65b, (q31_t)0x682ead78, (q31_t)0xce2fc19c,\n    (q31_t)0x6824e4cc, (q31_t)0xce27dec9, (q31_t)0x681b1a94, (q31_t)0xce1ffde2,\n    (q31_t)0x68114ed0, (q31_t)0xce181ee8, (q31_t)0x68078181, (q31_t)0xce1041d9,\n    (q31_t)0x67fdb2a7, (q31_t)0xce0866b8, (q31_t)0x67f3e241, (q31_t)0xce008d84,\n    (q31_t)0x67ea1052, (q31_t)0xcdf8b63d, (q31_t)0x67e03cd8, (q31_t)0xcdf0e0e4,\n    (q31_t)0x67d667d5, (q31_t)0xcde90d79, (q31_t)0x67cc9149, (q31_t)0xcde13bfd,\n    (q31_t)0x67c2b934, (q31_t)0xcdd96c6f, (q31_t)0x67b8df97, (q31_t)0xcdd19ed0,\n    (q31_t)0x67af0472, (q31_t)0xcdc9d320, (q31_t)0x67a527c4, (q31_t)0xcdc20960,\n    (q31_t)0x679b4990, (q31_t)0xcdba4190, (q31_t)0x679169d5, (q31_t)0xcdb27bb0,\n    (q31_t)0x67878893, (q31_t)0xcdaab7c0, (q31_t)0x677da5cb, (q31_t)0xcda2f5c2,\n    (q31_t)0x6773c17d, (q31_t)0xcd9b35b4, (q31_t)0x6769dbaa, (q31_t)0xcd937798,\n    (q31_t)0x675ff452, (q31_t)0xcd8bbb6d, (q31_t)0x67560b76, (q31_t)0xcd840134,\n    (q31_t)0x674c2115, (q31_t)0xcd7c48ee, (q31_t)0x67423530, (q31_t)0xcd74929a,\n    (q31_t)0x673847c8, (q31_t)0xcd6cde39, (q31_t)0x672e58dc, (q31_t)0xcd652bcb,\n    (q31_t)0x6724686e, (q31_t)0xcd5d7b50, (q31_t)0x671a767e, (q31_t)0xcd55ccca,\n    (q31_t)0x6710830c, (q31_t)0xcd4e2037, (q31_t)0x67068e18, (q31_t)0xcd467599,\n    (q31_t)0x66fc97a3, (q31_t)0xcd3eccef, (q31_t)0x66f29fad, (q31_t)0xcd37263a,\n    (q31_t)0x66e8a637, (q31_t)0xcd2f817b, (q31_t)0x66deab41, (q31_t)0xcd27deb0,\n    (q31_t)0x66d4aecb, (q31_t)0xcd203ddc, (q31_t)0x66cab0d6, (q31_t)0xcd189efe,\n    (q31_t)0x66c0b162, (q31_t)0xcd110216, (q31_t)0x66b6b070, (q31_t)0xcd096725,\n    (q31_t)0x66acadff, (q31_t)0xcd01ce2b, (q31_t)0x66a2aa11, (q31_t)0xccfa3729,\n    (q31_t)0x6698a4a6, (q31_t)0xccf2a21d, (q31_t)0x668e9dbd, (q31_t)0xcceb0f0a,\n    (q31_t)0x66849558, (q31_t)0xcce37def, (q31_t)0x667a8b77, (q31_t)0xccdbeecc,\n    (q31_t)0x6670801a, (q31_t)0xccd461a2, (q31_t)0x66667342, (q31_t)0xccccd671,\n    (q31_t)0x665c64ef, (q31_t)0xccc54d3a, (q31_t)0x66525521, (q31_t)0xccbdc5fc,\n    (q31_t)0x664843d9, (q31_t)0xccb640b8, (q31_t)0x663e3117, (q31_t)0xccaebd6e,\n    (q31_t)0x66341cdb, (q31_t)0xcca73c1e, (q31_t)0x662a0727, (q31_t)0xcc9fbcca,\n    (q31_t)0x661feffa, (q31_t)0xcc983f70, (q31_t)0x6615d754, (q31_t)0xcc90c412,\n    (q31_t)0x660bbd37, (q31_t)0xcc894aaf, (q31_t)0x6601a1a2, (q31_t)0xcc81d349,\n    (q31_t)0x65f78497, (q31_t)0xcc7a5dde, (q31_t)0x65ed6614, (q31_t)0xcc72ea70,\n    (q31_t)0x65e3461b, (q31_t)0xcc6b78ff, (q31_t)0x65d924ac, (q31_t)0xcc64098b,\n    (q31_t)0x65cf01c8, (q31_t)0xcc5c9c14, (q31_t)0x65c4dd6e, (q31_t)0xcc55309b,\n    (q31_t)0x65bab7a0, (q31_t)0xcc4dc720, (q31_t)0x65b0905d, (q31_t)0xcc465fa3,\n    (q31_t)0x65a667a7, (q31_t)0xcc3efa25, (q31_t)0x659c3d7c, (q31_t)0xcc3796a5,\n    (q31_t)0x659211df, (q31_t)0xcc303524, (q31_t)0x6587e4cf, (q31_t)0xcc28d5a3,\n    (q31_t)0x657db64c, (q31_t)0xcc217822, (q31_t)0x65738657, (q31_t)0xcc1a1ca0,\n    (q31_t)0x656954f1, (q31_t)0xcc12c31f, (q31_t)0x655f2219, (q31_t)0xcc0b6b9e,\n    (q31_t)0x6554edd1, (q31_t)0xcc04161e, (q31_t)0x654ab818, (q31_t)0xcbfcc29f,\n    (q31_t)0x654080ef, (q31_t)0xcbf57121, (q31_t)0x65364857, (q31_t)0xcbee21a5,\n    (q31_t)0x652c0e4f, (q31_t)0xcbe6d42b, (q31_t)0x6521d2d8, (q31_t)0xcbdf88b3,\n    (q31_t)0x651795f3, (q31_t)0xcbd83f3d, (q31_t)0x650d57a0, (q31_t)0xcbd0f7ca,\n    (q31_t)0x650317df, (q31_t)0xcbc9b25a, (q31_t)0x64f8d6b0, (q31_t)0xcbc26eee,\n    (q31_t)0x64ee9415, (q31_t)0xcbbb2d85, (q31_t)0x64e4500e, (q31_t)0xcbb3ee20,\n    (q31_t)0x64da0a9a, (q31_t)0xcbacb0bf, (q31_t)0x64cfc3ba, (q31_t)0xcba57563,\n    (q31_t)0x64c57b6f, (q31_t)0xcb9e3c0b, (q31_t)0x64bb31ba, (q31_t)0xcb9704b9,\n    (q31_t)0x64b0e699, (q31_t)0xcb8fcf6b, (q31_t)0x64a69a0f, (q31_t)0xcb889c23,\n    (q31_t)0x649c4c1b, (q31_t)0xcb816ae1, (q31_t)0x6491fcbe, (q31_t)0xcb7a3ba5,\n    (q31_t)0x6487abf7, (q31_t)0xcb730e70, (q31_t)0x647d59c8, (q31_t)0xcb6be341,\n    (q31_t)0x64730631, (q31_t)0xcb64ba19, (q31_t)0x6468b132, (q31_t)0xcb5d92f8,\n    (q31_t)0x645e5acc, (q31_t)0xcb566ddf, (q31_t)0x645402ff, (q31_t)0xcb4f4acd,\n    (q31_t)0x6449a9cc, (q31_t)0xcb4829c4, (q31_t)0x643f4f32, (q31_t)0xcb410ac3,\n    (q31_t)0x6434f332, (q31_t)0xcb39edca, (q31_t)0x642a95ce, (q31_t)0xcb32d2da,\n    (q31_t)0x64203704, (q31_t)0xcb2bb9f4, (q31_t)0x6415d6d5, (q31_t)0xcb24a316,\n    (q31_t)0x640b7543, (q31_t)0xcb1d8e43, (q31_t)0x6401124d, (q31_t)0xcb167b79,\n    (q31_t)0x63f6adf3, (q31_t)0xcb0f6aba, (q31_t)0x63ec4837, (q31_t)0xcb085c05,\n    (q31_t)0x63e1e117, (q31_t)0xcb014f5b, (q31_t)0x63d77896, (q31_t)0xcafa44bc,\n    (q31_t)0x63cd0eb3, (q31_t)0xcaf33c28, (q31_t)0x63c2a36f, (q31_t)0xcaec35a0,\n    (q31_t)0x63b836ca, (q31_t)0xcae53123, (q31_t)0x63adc8c4, (q31_t)0xcade2eb3,\n    (q31_t)0x63a3595e, (q31_t)0xcad72e4f, (q31_t)0x6398e898, (q31_t)0xcad02ff8,\n    (q31_t)0x638e7673, (q31_t)0xcac933ae, (q31_t)0x638402ef, (q31_t)0xcac23971,\n    (q31_t)0x63798e0d, (q31_t)0xcabb4141, (q31_t)0x636f17cc, (q31_t)0xcab44b1f,\n    (q31_t)0x6364a02e, (q31_t)0xcaad570c, (q31_t)0x635a2733, (q31_t)0xcaa66506,\n    (q31_t)0x634facda, (q31_t)0xca9f750f, (q31_t)0x63453125, (q31_t)0xca988727,\n    (q31_t)0x633ab414, (q31_t)0xca919b4e, (q31_t)0x633035a7, (q31_t)0xca8ab184,\n    (q31_t)0x6325b5df, (q31_t)0xca83c9ca, (q31_t)0x631b34bc, (q31_t)0xca7ce420,\n    (q31_t)0x6310b23e, (q31_t)0xca760086, (q31_t)0x63062e67, (q31_t)0xca6f1efc,\n    (q31_t)0x62fba936, (q31_t)0xca683f83, (q31_t)0x62f122ab, (q31_t)0xca61621b,\n    (q31_t)0x62e69ac8, (q31_t)0xca5a86c4, (q31_t)0x62dc118c, (q31_t)0xca53ad7e,\n    (q31_t)0x62d186f8, (q31_t)0xca4cd64b, (q31_t)0x62c6fb0c, (q31_t)0xca460129,\n    (q31_t)0x62bc6dca, (q31_t)0xca3f2e19, (q31_t)0x62b1df30, (q31_t)0xca385d1d,\n    (q31_t)0x62a74f40, (q31_t)0xca318e32, (q31_t)0x629cbdfa, (q31_t)0xca2ac15b,\n    (q31_t)0x62922b5e, (q31_t)0xca23f698, (q31_t)0x6287976e, (q31_t)0xca1d2de7,\n    (q31_t)0x627d0228, (q31_t)0xca16674b, (q31_t)0x62726b8e, (q31_t)0xca0fa2c3,\n    (q31_t)0x6267d3a0, (q31_t)0xca08e04f, (q31_t)0x625d3a5e, (q31_t)0xca021fef,\n    (q31_t)0x62529fca, (q31_t)0xc9fb61a5, (q31_t)0x624803e2, (q31_t)0xc9f4a570,\n    (q31_t)0x623d66a8, (q31_t)0xc9edeb50, (q31_t)0x6232c81c, (q31_t)0xc9e73346,\n    (q31_t)0x6228283f, (q31_t)0xc9e07d51, (q31_t)0x621d8711, (q31_t)0xc9d9c973,\n    (q31_t)0x6212e492, (q31_t)0xc9d317ab, (q31_t)0x620840c2, (q31_t)0xc9cc67fa,\n    (q31_t)0x61fd9ba3, (q31_t)0xc9c5ba60, (q31_t)0x61f2f534, (q31_t)0xc9bf0edd,\n    (q31_t)0x61e84d76, (q31_t)0xc9b86572, (q31_t)0x61dda46a, (q31_t)0xc9b1be1e,\n    (q31_t)0x61d2fa0f, (q31_t)0xc9ab18e3, (q31_t)0x61c84e67, (q31_t)0xc9a475bf,\n    (q31_t)0x61bda171, (q31_t)0xc99dd4b4, (q31_t)0x61b2f32e, (q31_t)0xc99735c2,\n    (q31_t)0x61a8439e, (q31_t)0xc99098e9, (q31_t)0x619d92c2, (q31_t)0xc989fe29,\n    (q31_t)0x6192e09b, (q31_t)0xc9836582, (q31_t)0x61882d28, (q31_t)0xc97ccef5,\n    (q31_t)0x617d786a, (q31_t)0xc9763a83, (q31_t)0x6172c262, (q31_t)0xc96fa82a,\n    (q31_t)0x61680b0f, (q31_t)0xc96917ec, (q31_t)0x615d5273, (q31_t)0xc96289c9,\n    (q31_t)0x6152988d, (q31_t)0xc95bfdc1, (q31_t)0x6147dd5f, (q31_t)0xc95573d4,\n    (q31_t)0x613d20e8, (q31_t)0xc94eec03, (q31_t)0x61326329, (q31_t)0xc948664d,\n    (q31_t)0x6127a423, (q31_t)0xc941e2b4, (q31_t)0x611ce3d5, (q31_t)0xc93b6137,\n    (q31_t)0x61122240, (q31_t)0xc934e1d6, (q31_t)0x61075f65, (q31_t)0xc92e6492,\n    (q31_t)0x60fc9b44, (q31_t)0xc927e96b, (q31_t)0x60f1d5de, (q31_t)0xc9217062,\n    (q31_t)0x60e70f32, (q31_t)0xc91af976, (q31_t)0x60dc4742, (q31_t)0xc91484a8,\n    (q31_t)0x60d17e0d, (q31_t)0xc90e11f7, (q31_t)0x60c6b395, (q31_t)0xc907a166,\n    (q31_t)0x60bbe7d8, (q31_t)0xc90132f2, (q31_t)0x60b11ad9, (q31_t)0xc8fac69e,\n    (q31_t)0x60a64c97, (q31_t)0xc8f45c68, (q31_t)0x609b7d13, (q31_t)0xc8edf452,\n    (q31_t)0x6090ac4d, (q31_t)0xc8e78e5b, (q31_t)0x6085da46, (q31_t)0xc8e12a84,\n    (q31_t)0x607b06fe, (q31_t)0xc8dac8cd, (q31_t)0x60703275, (q31_t)0xc8d46936,\n    (q31_t)0x60655cac, (q31_t)0xc8ce0bc0, (q31_t)0x605a85a3, (q31_t)0xc8c7b06b,\n    (q31_t)0x604fad5b, (q31_t)0xc8c15736, (q31_t)0x6044d3d4, (q31_t)0xc8bb0023,\n    (q31_t)0x6039f90f, (q31_t)0xc8b4ab32, (q31_t)0x602f1d0b, (q31_t)0xc8ae5862,\n    (q31_t)0x60243fca, (q31_t)0xc8a807b4, (q31_t)0x6019614c, (q31_t)0xc8a1b928,\n    (q31_t)0x600e8190, (q31_t)0xc89b6cbf, (q31_t)0x6003a099, (q31_t)0xc8952278,\n    (q31_t)0x5ff8be65, (q31_t)0xc88eda54, (q31_t)0x5feddaf6, (q31_t)0xc8889454,\n    (q31_t)0x5fe2f64c, (q31_t)0xc8825077, (q31_t)0x5fd81067, (q31_t)0xc87c0ebd,\n    (q31_t)0x5fcd2948, (q31_t)0xc875cf28, (q31_t)0x5fc240ef, (q31_t)0xc86f91b7,\n    (q31_t)0x5fb7575c, (q31_t)0xc869566a, (q31_t)0x5fac6c91, (q31_t)0xc8631d42,\n    (q31_t)0x5fa1808c, (q31_t)0xc85ce63e, (q31_t)0x5f969350, (q31_t)0xc856b160,\n    (q31_t)0x5f8ba4dc, (q31_t)0xc8507ea7, (q31_t)0x5f80b531, (q31_t)0xc84a4e14,\n    (q31_t)0x5f75c44e, (q31_t)0xc8441fa6, (q31_t)0x5f6ad235, (q31_t)0xc83df35f,\n    (q31_t)0x5f5fdee6, (q31_t)0xc837c93e, (q31_t)0x5f54ea62, (q31_t)0xc831a143,\n    (q31_t)0x5f49f4a8, (q31_t)0xc82b7b70, (q31_t)0x5f3efdb9, (q31_t)0xc82557c3,\n    (q31_t)0x5f340596, (q31_t)0xc81f363d, (q31_t)0x5f290c3f, (q31_t)0xc81916df,\n    (q31_t)0x5f1e11b5, (q31_t)0xc812f9a9, (q31_t)0x5f1315f7, (q31_t)0xc80cde9b,\n    (q31_t)0x5f081907, (q31_t)0xc806c5b5, (q31_t)0x5efd1ae4, (q31_t)0xc800aef7,\n    (q31_t)0x5ef21b90, (q31_t)0xc7fa9a62, (q31_t)0x5ee71b0a, (q31_t)0xc7f487f6,\n    (q31_t)0x5edc1953, (q31_t)0xc7ee77b3, (q31_t)0x5ed1166b, (q31_t)0xc7e8699a,\n    (q31_t)0x5ec61254, (q31_t)0xc7e25daa, (q31_t)0x5ebb0d0d, (q31_t)0xc7dc53e3,\n    (q31_t)0x5eb00696, (q31_t)0xc7d64c47, (q31_t)0x5ea4fef0, (q31_t)0xc7d046d6,\n    (q31_t)0x5e99f61d, (q31_t)0xc7ca438f, (q31_t)0x5e8eec1b, (q31_t)0xc7c44272,\n    (q31_t)0x5e83e0eb, (q31_t)0xc7be4381, (q31_t)0x5e78d48e, (q31_t)0xc7b846ba,\n    (q31_t)0x5e6dc705, (q31_t)0xc7b24c20, (q31_t)0x5e62b84f, (q31_t)0xc7ac53b1,\n    (q31_t)0x5e57a86d, (q31_t)0xc7a65d6e, (q31_t)0x5e4c9760, (q31_t)0xc7a06957,\n    (q31_t)0x5e418528, (q31_t)0xc79a776c, (q31_t)0x5e3671c5, (q31_t)0xc79487ae,\n    (q31_t)0x5e2b5d38, (q31_t)0xc78e9a1d, (q31_t)0x5e204781, (q31_t)0xc788aeb9,\n    (q31_t)0x5e1530a1, (q31_t)0xc782c582, (q31_t)0x5e0a1898, (q31_t)0xc77cde79,\n    (q31_t)0x5dfeff67, (q31_t)0xc776f99d, (q31_t)0x5df3e50d, (q31_t)0xc77116f0,\n    (q31_t)0x5de8c98c, (q31_t)0xc76b3671, (q31_t)0x5dddace4, (q31_t)0xc7655820,\n    (q31_t)0x5dd28f15, (q31_t)0xc75f7bfe, (q31_t)0x5dc7701f, (q31_t)0xc759a20a,\n    (q31_t)0x5dbc5004, (q31_t)0xc753ca46, (q31_t)0x5db12ec3, (q31_t)0xc74df4b1,\n    (q31_t)0x5da60c5d, (q31_t)0xc748214c, (q31_t)0x5d9ae8d2, (q31_t)0xc7425016,\n    (q31_t)0x5d8fc424, (q31_t)0xc73c8111, (q31_t)0x5d849e51, (q31_t)0xc736b43c,\n    (q31_t)0x5d79775c, (q31_t)0xc730e997, (q31_t)0x5d6e4f43, (q31_t)0xc72b2123,\n    (q31_t)0x5d632608, (q31_t)0xc7255ae0, (q31_t)0x5d57fbaa, (q31_t)0xc71f96ce,\n    (q31_t)0x5d4cd02c, (q31_t)0xc719d4ed, (q31_t)0x5d41a38c, (q31_t)0xc714153e,\n    (q31_t)0x5d3675cb, (q31_t)0xc70e57c0, (q31_t)0x5d2b46ea, (q31_t)0xc7089c75,\n    (q31_t)0x5d2016e9, (q31_t)0xc702e35c, (q31_t)0x5d14e5c9, (q31_t)0xc6fd2c75,\n    (q31_t)0x5d09b389, (q31_t)0xc6f777c1, (q31_t)0x5cfe802b, (q31_t)0xc6f1c540,\n    (q31_t)0x5cf34baf, (q31_t)0xc6ec14f2, (q31_t)0x5ce81615, (q31_t)0xc6e666d7,\n    (q31_t)0x5cdcdf5e, (q31_t)0xc6e0baf0, (q31_t)0x5cd1a78a, (q31_t)0xc6db113d,\n    (q31_t)0x5cc66e99, (q31_t)0xc6d569be, (q31_t)0x5cbb348d, (q31_t)0xc6cfc472,\n    (q31_t)0x5caff965, (q31_t)0xc6ca215c, (q31_t)0x5ca4bd21, (q31_t)0xc6c4807a,\n    (q31_t)0x5c997fc4, (q31_t)0xc6bee1cd, (q31_t)0x5c8e414b, (q31_t)0xc6b94554,\n    (q31_t)0x5c8301b9, (q31_t)0xc6b3ab12, (q31_t)0x5c77c10e, (q31_t)0xc6ae1304,\n    (q31_t)0x5c6c7f4a, (q31_t)0xc6a87d2d, (q31_t)0x5c613c6d, (q31_t)0xc6a2e98b,\n    (q31_t)0x5c55f878, (q31_t)0xc69d5820, (q31_t)0x5c4ab36b, (q31_t)0xc697c8eb,\n    (q31_t)0x5c3f6d47, (q31_t)0xc6923bec, (q31_t)0x5c34260c, (q31_t)0xc68cb124,\n    (q31_t)0x5c28ddbb, (q31_t)0xc6872894, (q31_t)0x5c1d9454, (q31_t)0xc681a23a,\n    (q31_t)0x5c1249d8, (q31_t)0xc67c1e18, (q31_t)0x5c06fe46, (q31_t)0xc6769c2e,\n    (q31_t)0x5bfbb1a0, (q31_t)0xc6711c7b, (q31_t)0x5bf063e6, (q31_t)0xc66b9f01,\n    (q31_t)0x5be51518, (q31_t)0xc66623be, (q31_t)0x5bd9c537, (q31_t)0xc660aab5,\n    (q31_t)0x5bce7442, (q31_t)0xc65b33e4, (q31_t)0x5bc3223c, (q31_t)0xc655bf4c,\n    (q31_t)0x5bb7cf23, (q31_t)0xc6504ced, (q31_t)0x5bac7af9, (q31_t)0xc64adcc7,\n    (q31_t)0x5ba125bd, (q31_t)0xc6456edb, (q31_t)0x5b95cf71, (q31_t)0xc6400329,\n    (q31_t)0x5b8a7815, (q31_t)0xc63a99b1, (q31_t)0x5b7f1fa9, (q31_t)0xc6353273,\n    (q31_t)0x5b73c62d, (q31_t)0xc62fcd6f, (q31_t)0x5b686ba3, (q31_t)0xc62a6aa6,\n    (q31_t)0x5b5d100a, (q31_t)0xc6250a18, (q31_t)0x5b51b363, (q31_t)0xc61fabc4,\n    (q31_t)0x5b4655ae, (q31_t)0xc61a4fac, (q31_t)0x5b3af6ec, (q31_t)0xc614f5cf,\n    (q31_t)0x5b2f971e, (q31_t)0xc60f9e2e, (q31_t)0x5b243643, (q31_t)0xc60a48c9,\n    (q31_t)0x5b18d45c, (q31_t)0xc604f5a0, (q31_t)0x5b0d716a, (q31_t)0xc5ffa4b3,\n    (q31_t)0x5b020d6c, (q31_t)0xc5fa5603, (q31_t)0x5af6a865, (q31_t)0xc5f5098f,\n    (q31_t)0x5aeb4253, (q31_t)0xc5efbf58, (q31_t)0x5adfdb37, (q31_t)0xc5ea775e,\n    (q31_t)0x5ad47312, (q31_t)0xc5e531a1, (q31_t)0x5ac909e5, (q31_t)0xc5dfee22,\n    (q31_t)0x5abd9faf, (q31_t)0xc5daace1, (q31_t)0x5ab23471, (q31_t)0xc5d56ddd,\n    (q31_t)0x5aa6c82b, (q31_t)0xc5d03118, (q31_t)0x5a9b5adf, (q31_t)0xc5caf690,\n    (q31_t)0x5a8fec8c, (q31_t)0xc5c5be47, (q31_t)0x5a847d33, (q31_t)0xc5c0883d,\n    (q31_t)0x5a790cd4, (q31_t)0xc5bb5472, (q31_t)0x5a6d9b70, (q31_t)0xc5b622e6,\n    (q31_t)0x5a622907, (q31_t)0xc5b0f399, (q31_t)0x5a56b599, (q31_t)0xc5abc68c,\n    (q31_t)0x5a4b4128, (q31_t)0xc5a69bbe, (q31_t)0x5a3fcbb3, (q31_t)0xc5a17330,\n    (q31_t)0x5a34553b, (q31_t)0xc59c4ce3, (q31_t)0x5a28ddc0, (q31_t)0xc59728d5,\n    (q31_t)0x5a1d6544, (q31_t)0xc5920708, (q31_t)0x5a11ebc5, (q31_t)0xc58ce77c,\n    (q31_t)0x5a067145, (q31_t)0xc587ca31, (q31_t)0x59faf5c5, (q31_t)0xc582af26,\n    (q31_t)0x59ef7944, (q31_t)0xc57d965d, (q31_t)0x59e3fbc3, (q31_t)0xc5787fd6,\n    (q31_t)0x59d87d42, (q31_t)0xc5736b90, (q31_t)0x59ccfdc2, (q31_t)0xc56e598c,\n    (q31_t)0x59c17d44, (q31_t)0xc56949ca, (q31_t)0x59b5fbc8, (q31_t)0xc5643c4a,\n    (q31_t)0x59aa794d, (q31_t)0xc55f310d, (q31_t)0x599ef5d6, (q31_t)0xc55a2812,\n    (q31_t)0x59937161, (q31_t)0xc555215a, (q31_t)0x5987ebf0, (q31_t)0xc5501ce5,\n    (q31_t)0x597c6584, (q31_t)0xc54b1ab4, (q31_t)0x5970de1b, (q31_t)0xc5461ac6,\n    (q31_t)0x596555b8, (q31_t)0xc5411d1b, (q31_t)0x5959cc5a, (q31_t)0xc53c21b4,\n    (q31_t)0x594e4201, (q31_t)0xc5372891, (q31_t)0x5942b6af, (q31_t)0xc53231b3,\n    (q31_t)0x59372a64, (q31_t)0xc52d3d18, (q31_t)0x592b9d1f, (q31_t)0xc5284ac3,\n    (q31_t)0x59200ee3, (q31_t)0xc5235ab2, (q31_t)0x59147fae, (q31_t)0xc51e6ce6,\n    (q31_t)0x5908ef82, (q31_t)0xc519815f, (q31_t)0x58fd5e5f, (q31_t)0xc514981d,\n    (q31_t)0x58f1cc45, (q31_t)0xc50fb121, (q31_t)0x58e63935, (q31_t)0xc50acc6b,\n    (q31_t)0x58daa52f, (q31_t)0xc505e9fb, (q31_t)0x58cf1034, (q31_t)0xc50109d0,\n    (q31_t)0x58c37a44, (q31_t)0xc4fc2bec, (q31_t)0x58b7e35f, (q31_t)0xc4f7504e,\n    (q31_t)0x58ac4b87, (q31_t)0xc4f276f7, (q31_t)0x58a0b2bb, (q31_t)0xc4ed9fe7,\n    (q31_t)0x589518fc, (q31_t)0xc4e8cb1e, (q31_t)0x58897e4a, (q31_t)0xc4e3f89c,\n    (q31_t)0x587de2a7, (q31_t)0xc4df2862, (q31_t)0x58724611, (q31_t)0xc4da5a6f,\n    (q31_t)0x5866a88a, (q31_t)0xc4d58ec3, (q31_t)0x585b0a13, (q31_t)0xc4d0c560,\n    (q31_t)0x584f6aab, (q31_t)0xc4cbfe45, (q31_t)0x5843ca53, (q31_t)0xc4c73972,\n    (q31_t)0x5838290c, (q31_t)0xc4c276e8, (q31_t)0x582c86d5, (q31_t)0xc4bdb6a6,\n    (q31_t)0x5820e3b0, (q31_t)0xc4b8f8ad, (q31_t)0x58153f9d, (q31_t)0xc4b43cfd,\n    (q31_t)0x58099a9c, (q31_t)0xc4af8397, (q31_t)0x57fdf4ae, (q31_t)0xc4aacc7a,\n    (q31_t)0x57f24dd3, (q31_t)0xc4a617a6, (q31_t)0x57e6a60c, (q31_t)0xc4a1651c,\n    (q31_t)0x57dafd59, (q31_t)0xc49cb4dd, (q31_t)0x57cf53bb, (q31_t)0xc49806e7,\n    (q31_t)0x57c3a931, (q31_t)0xc4935b3c, (q31_t)0x57b7fdbd, (q31_t)0xc48eb1db,\n    (q31_t)0x57ac515f, (q31_t)0xc48a0ac4, (q31_t)0x57a0a417, (q31_t)0xc48565f9,\n    (q31_t)0x5794f5e6, (q31_t)0xc480c379, (q31_t)0x578946cc, (q31_t)0xc47c2344,\n    (q31_t)0x577d96ca, (q31_t)0xc477855a, (q31_t)0x5771e5e0, (q31_t)0xc472e9bc,\n    (q31_t)0x5766340f, (q31_t)0xc46e5069, (q31_t)0x575a8157, (q31_t)0xc469b963,\n    (q31_t)0x574ecdb8, (q31_t)0xc46524a9, (q31_t)0x57431933, (q31_t)0xc460923b,\n    (q31_t)0x573763c9, (q31_t)0xc45c0219, (q31_t)0x572bad7a, (q31_t)0xc4577444,\n    (q31_t)0x571ff646, (q31_t)0xc452e8bc, (q31_t)0x57143e2d, (q31_t)0xc44e5f80,\n    (q31_t)0x57088531, (q31_t)0xc449d892, (q31_t)0x56fccb51, (q31_t)0xc44553f2,\n    (q31_t)0x56f1108f, (q31_t)0xc440d19e, (q31_t)0x56e554ea, (q31_t)0xc43c5199,\n    (q31_t)0x56d99864, (q31_t)0xc437d3e1, (q31_t)0x56cddafb, (q31_t)0xc4335877,\n    (q31_t)0x56c21cb2, (q31_t)0xc42edf5c, (q31_t)0x56b65d88, (q31_t)0xc42a688f,\n    (q31_t)0x56aa9d7e, (q31_t)0xc425f410, (q31_t)0x569edc94, (q31_t)0xc42181e0,\n    (q31_t)0x56931acb, (q31_t)0xc41d11ff, (q31_t)0x56875823, (q31_t)0xc418a46d,\n    (q31_t)0x567b949d, (q31_t)0xc414392b, (q31_t)0x566fd039, (q31_t)0xc40fd037,\n    (q31_t)0x56640af7, (q31_t)0xc40b6994, (q31_t)0x565844d8, (q31_t)0xc4070540,\n    (q31_t)0x564c7ddd, (q31_t)0xc402a33c, (q31_t)0x5640b606, (q31_t)0xc3fe4388,\n    (q31_t)0x5634ed53, (q31_t)0xc3f9e624, (q31_t)0x562923c5, (q31_t)0xc3f58b10,\n    (q31_t)0x561d595d, (q31_t)0xc3f1324e, (q31_t)0x56118e1a, (q31_t)0xc3ecdbdc,\n    (q31_t)0x5605c1fd, (q31_t)0xc3e887bb, (q31_t)0x55f9f507, (q31_t)0xc3e435ea,\n    (q31_t)0x55ee2738, (q31_t)0xc3dfe66c, (q31_t)0x55e25890, (q31_t)0xc3db993e,\n    (q31_t)0x55d68911, (q31_t)0xc3d74e62, (q31_t)0x55cab8ba, (q31_t)0xc3d305d8,\n    (q31_t)0x55bee78c, (q31_t)0xc3cebfa0, (q31_t)0x55b31587, (q31_t)0xc3ca7bba,\n    (q31_t)0x55a742ac, (q31_t)0xc3c63a26, (q31_t)0x559b6efb, (q31_t)0xc3c1fae5,\n    (q31_t)0x558f9a76, (q31_t)0xc3bdbdf6, (q31_t)0x5583c51b, (q31_t)0xc3b9835a,\n    (q31_t)0x5577eeec, (q31_t)0xc3b54b11, (q31_t)0x556c17e9, (q31_t)0xc3b1151b,\n    (q31_t)0x55604013, (q31_t)0xc3ace178, (q31_t)0x5554676a, (q31_t)0xc3a8b028,\n    (q31_t)0x55488dee, (q31_t)0xc3a4812c, (q31_t)0x553cb3a0, (q31_t)0xc3a05484,\n    (q31_t)0x5530d881, (q31_t)0xc39c2a2f, (q31_t)0x5524fc90, (q31_t)0xc398022f,\n    (q31_t)0x55191fcf, (q31_t)0xc393dc82, (q31_t)0x550d423d, (q31_t)0xc38fb92a,\n    (q31_t)0x550163dc, (q31_t)0xc38b9827, (q31_t)0x54f584ac, (q31_t)0xc3877978,\n    (q31_t)0x54e9a4ac, (q31_t)0xc3835d1e, (q31_t)0x54ddc3de, (q31_t)0xc37f4319,\n    (q31_t)0x54d1e242, (q31_t)0xc37b2b6a, (q31_t)0x54c5ffd9, (q31_t)0xc377160f,\n    (q31_t)0x54ba1ca3, (q31_t)0xc373030a, (q31_t)0x54ae38a0, (q31_t)0xc36ef25b,\n    (q31_t)0x54a253d1, (q31_t)0xc36ae401, (q31_t)0x54966e36, (q31_t)0xc366d7fd,\n    (q31_t)0x548a87d1, (q31_t)0xc362ce50, (q31_t)0x547ea0a0, (q31_t)0xc35ec6f8,\n    (q31_t)0x5472b8a5, (q31_t)0xc35ac1f7, (q31_t)0x5466cfe1, (q31_t)0xc356bf4d,\n    (q31_t)0x545ae653, (q31_t)0xc352bef9, (q31_t)0x544efbfc, (q31_t)0xc34ec0fc,\n    (q31_t)0x544310dd, (q31_t)0xc34ac556, (q31_t)0x543724f5, (q31_t)0xc346cc07,\n    (q31_t)0x542b3846, (q31_t)0xc342d510, (q31_t)0x541f4ad1, (q31_t)0xc33ee070,\n    (q31_t)0x54135c94, (q31_t)0xc33aee27, (q31_t)0x54076d91, (q31_t)0xc336fe37,\n    (q31_t)0x53fb7dc9, (q31_t)0xc333109e, (q31_t)0x53ef8d3c, (q31_t)0xc32f255e,\n    (q31_t)0x53e39be9, (q31_t)0xc32b3c75, (q31_t)0x53d7a9d3, (q31_t)0xc32755e5,\n    (q31_t)0x53cbb6f8, (q31_t)0xc32371ae, (q31_t)0x53bfc35b, (q31_t)0xc31f8fcf,\n    (q31_t)0x53b3cefa, (q31_t)0xc31bb049, (q31_t)0x53a7d9d7, (q31_t)0xc317d31c,\n    (q31_t)0x539be3f2, (q31_t)0xc313f848, (q31_t)0x538fed4b, (q31_t)0xc3101fce,\n    (q31_t)0x5383f5e3, (q31_t)0xc30c49ad, (q31_t)0x5377fdbb, (q31_t)0xc30875e5,\n    (q31_t)0x536c04d2, (q31_t)0xc304a477, (q31_t)0x53600b2a, (q31_t)0xc300d563,\n    (q31_t)0x535410c3, (q31_t)0xc2fd08a9, (q31_t)0x5348159d, (q31_t)0xc2f93e4a,\n    (q31_t)0x533c19b8, (q31_t)0xc2f57644, (q31_t)0x53301d16, (q31_t)0xc2f1b099,\n    (q31_t)0x53241fb6, (q31_t)0xc2eded49, (q31_t)0x5318219a, (q31_t)0xc2ea2c53,\n    (q31_t)0x530c22c1, (q31_t)0xc2e66db8, (q31_t)0x5300232c, (q31_t)0xc2e2b178,\n    (q31_t)0x52f422db, (q31_t)0xc2def794, (q31_t)0x52e821cf, (q31_t)0xc2db400a,\n    (q31_t)0x52dc2009, (q31_t)0xc2d78add, (q31_t)0x52d01d89, (q31_t)0xc2d3d80a,\n    (q31_t)0x52c41a4f, (q31_t)0xc2d02794, (q31_t)0x52b8165b, (q31_t)0xc2cc7979,\n    (q31_t)0x52ac11af, (q31_t)0xc2c8cdbb, (q31_t)0x52a00c4b, (q31_t)0xc2c52459,\n    (q31_t)0x5294062f, (q31_t)0xc2c17d52, (q31_t)0x5287ff5b, (q31_t)0xc2bdd8a9,\n    (q31_t)0x527bf7d1, (q31_t)0xc2ba365c, (q31_t)0x526fef90, (q31_t)0xc2b6966c,\n    (q31_t)0x5263e699, (q31_t)0xc2b2f8d8, (q31_t)0x5257dced, (q31_t)0xc2af5da2,\n    (q31_t)0x524bd28c, (q31_t)0xc2abc4c9, (q31_t)0x523fc776, (q31_t)0xc2a82e4d,\n    (q31_t)0x5233bbac, (q31_t)0xc2a49a2e, (q31_t)0x5227af2e, (q31_t)0xc2a1086d,\n    (q31_t)0x521ba1fd, (q31_t)0xc29d790a, (q31_t)0x520f941a, (q31_t)0xc299ec05,\n    (q31_t)0x52038584, (q31_t)0xc296615d, (q31_t)0x51f7763c, (q31_t)0xc292d914,\n    (q31_t)0x51eb6643, (q31_t)0xc28f5329, (q31_t)0x51df5599, (q31_t)0xc28bcf9c,\n    (q31_t)0x51d3443f, (q31_t)0xc2884e6e, (q31_t)0x51c73235, (q31_t)0xc284cf9f,\n    (q31_t)0x51bb1f7c, (q31_t)0xc281532e, (q31_t)0x51af0c13, (q31_t)0xc27dd91c,\n    (q31_t)0x51a2f7fc, (q31_t)0xc27a616a, (q31_t)0x5196e337, (q31_t)0xc276ec16,\n    (q31_t)0x518acdc4, (q31_t)0xc2737922, (q31_t)0x517eb7a4, (q31_t)0xc270088e,\n    (q31_t)0x5172a0d7, (q31_t)0xc26c9a58, (q31_t)0x5166895f, (q31_t)0xc2692e83,\n    (q31_t)0x515a713a, (q31_t)0xc265c50e, (q31_t)0x514e586a, (q31_t)0xc2625df8,\n    (q31_t)0x51423ef0, (q31_t)0xc25ef943, (q31_t)0x513624cb, (q31_t)0xc25b96ee,\n    (q31_t)0x512a09fc, (q31_t)0xc25836f9, (q31_t)0x511dee84, (q31_t)0xc254d965,\n    (q31_t)0x5111d263, (q31_t)0xc2517e31, (q31_t)0x5105b599, (q31_t)0xc24e255e,\n    (q31_t)0x50f99827, (q31_t)0xc24aceed, (q31_t)0x50ed7a0e, (q31_t)0xc2477adc,\n    (q31_t)0x50e15b4e, (q31_t)0xc244292c, (q31_t)0x50d53be7, (q31_t)0xc240d9de,\n    (q31_t)0x50c91bda, (q31_t)0xc23d8cf1, (q31_t)0x50bcfb28, (q31_t)0xc23a4265,\n    (q31_t)0x50b0d9d0, (q31_t)0xc236fa3b, (q31_t)0x50a4b7d3, (q31_t)0xc233b473,\n    (q31_t)0x50989532, (q31_t)0xc230710d, (q31_t)0x508c71ee, (q31_t)0xc22d3009,\n    (q31_t)0x50804e06, (q31_t)0xc229f167, (q31_t)0x5074297b, (q31_t)0xc226b528,\n    (q31_t)0x5068044e, (q31_t)0xc2237b4b, (q31_t)0x505bde7f, (q31_t)0xc22043d0,\n    (q31_t)0x504fb80e, (q31_t)0xc21d0eb8, (q31_t)0x504390fd, (q31_t)0xc219dc03,\n    (q31_t)0x5037694b, (q31_t)0xc216abb1, (q31_t)0x502b40f8, (q31_t)0xc2137dc2,\n    (q31_t)0x501f1807, (q31_t)0xc2105236, (q31_t)0x5012ee76, (q31_t)0xc20d290d,\n    (q31_t)0x5006c446, (q31_t)0xc20a0248, (q31_t)0x4ffa9979, (q31_t)0xc206dde6,\n    (q31_t)0x4fee6e0d, (q31_t)0xc203bbe8, (q31_t)0x4fe24205, (q31_t)0xc2009c4e,\n    (q31_t)0x4fd6155f, (q31_t)0xc1fd7f17, (q31_t)0x4fc9e81e, (q31_t)0xc1fa6445,\n    (q31_t)0x4fbdba40, (q31_t)0xc1f74bd6, (q31_t)0x4fb18bc8, (q31_t)0xc1f435cc,\n    (q31_t)0x4fa55cb4, (q31_t)0xc1f12227, (q31_t)0x4f992d06, (q31_t)0xc1ee10e5,\n    (q31_t)0x4f8cfcbe, (q31_t)0xc1eb0209, (q31_t)0x4f80cbdc, (q31_t)0xc1e7f591,\n    (q31_t)0x4f749a61, (q31_t)0xc1e4eb7e, (q31_t)0x4f68684e, (q31_t)0xc1e1e3d0,\n    (q31_t)0x4f5c35a3, (q31_t)0xc1dede87, (q31_t)0x4f500260, (q31_t)0xc1dbdba3,\n    (q31_t)0x4f43ce86, (q31_t)0xc1d8db25, (q31_t)0x4f379a16, (q31_t)0xc1d5dd0c,\n    (q31_t)0x4f2b650f, (q31_t)0xc1d2e158, (q31_t)0x4f1f2f73, (q31_t)0xc1cfe80a,\n    (q31_t)0x4f12f941, (q31_t)0xc1ccf122, (q31_t)0x4f06c27a, (q31_t)0xc1c9fca0,\n    (q31_t)0x4efa8b20, (q31_t)0xc1c70a84, (q31_t)0x4eee5331, (q31_t)0xc1c41ace,\n    (q31_t)0x4ee21aaf, (q31_t)0xc1c12d7e, (q31_t)0x4ed5e19a, (q31_t)0xc1be4294,\n    (q31_t)0x4ec9a7f3, (q31_t)0xc1bb5a11, (q31_t)0x4ebd6db9, (q31_t)0xc1b873f5,\n    (q31_t)0x4eb132ef, (q31_t)0xc1b5903f, (q31_t)0x4ea4f793, (q31_t)0xc1b2aef0,\n    (q31_t)0x4e98bba7, (q31_t)0xc1afd007, (q31_t)0x4e8c7f2a, (q31_t)0xc1acf386,\n    (q31_t)0x4e80421e, (q31_t)0xc1aa196c, (q31_t)0x4e740483, (q31_t)0xc1a741b9,\n    (q31_t)0x4e67c65a, (q31_t)0xc1a46c6e, (q31_t)0x4e5b87a2, (q31_t)0xc1a1998a,\n    (q31_t)0x4e4f485c, (q31_t)0xc19ec90d, (q31_t)0x4e430889, (q31_t)0xc19bfaf9,\n    (q31_t)0x4e36c82a, (q31_t)0xc1992f4c, (q31_t)0x4e2a873e, (q31_t)0xc1966606,\n    (q31_t)0x4e1e45c6, (q31_t)0xc1939f29, (q31_t)0x4e1203c3, (q31_t)0xc190dab4,\n    (q31_t)0x4e05c135, (q31_t)0xc18e18a7, (q31_t)0x4df97e1d, (q31_t)0xc18b5903,\n    (q31_t)0x4ded3a7b, (q31_t)0xc1889bc6, (q31_t)0x4de0f64f, (q31_t)0xc185e0f3,\n    (q31_t)0x4dd4b19a, (q31_t)0xc1832888, (q31_t)0x4dc86c5d, (q31_t)0xc1807285,\n    (q31_t)0x4dbc2698, (q31_t)0xc17dbeec, (q31_t)0x4dafe04b, (q31_t)0xc17b0dbb,\n    (q31_t)0x4da39978, (q31_t)0xc1785ef4, (q31_t)0x4d97521d, (q31_t)0xc175b296,\n    (q31_t)0x4d8b0a3d, (q31_t)0xc17308a1, (q31_t)0x4d7ec1d6, (q31_t)0xc1706115,\n    (q31_t)0x4d7278eb, (q31_t)0xc16dbbf3, (q31_t)0x4d662f7b, (q31_t)0xc16b193a,\n    (q31_t)0x4d59e586, (q31_t)0xc16878eb, (q31_t)0x4d4d9b0e, (q31_t)0xc165db05,\n    (q31_t)0x4d415013, (q31_t)0xc1633f8a, (q31_t)0x4d350495, (q31_t)0xc160a678,\n    (q31_t)0x4d28b894, (q31_t)0xc15e0fd1, (q31_t)0x4d1c6c11, (q31_t)0xc15b7b94,\n    (q31_t)0x4d101f0e, (q31_t)0xc158e9c1, (q31_t)0x4d03d189, (q31_t)0xc1565a58,\n    (q31_t)0x4cf78383, (q31_t)0xc153cd5a, (q31_t)0x4ceb34fe, (q31_t)0xc15142c6,\n    (q31_t)0x4cdee5f9, (q31_t)0xc14eba9d, (q31_t)0x4cd29676, (q31_t)0xc14c34df,\n    (q31_t)0x4cc64673, (q31_t)0xc149b18b, (q31_t)0x4cb9f5f3, (q31_t)0xc14730a3,\n    (q31_t)0x4cada4f5, (q31_t)0xc144b225, (q31_t)0x4ca1537a, (q31_t)0xc1423613,\n    (q31_t)0x4c950182, (q31_t)0xc13fbc6c, (q31_t)0x4c88af0e, (q31_t)0xc13d4530,\n    (q31_t)0x4c7c5c1e, (q31_t)0xc13ad060, (q31_t)0x4c7008b3, (q31_t)0xc1385dfb,\n    (q31_t)0x4c63b4ce, (q31_t)0xc135ee02, (q31_t)0x4c57606e, (q31_t)0xc1338075,\n    (q31_t)0x4c4b0b94, (q31_t)0xc1311553, (q31_t)0x4c3eb641, (q31_t)0xc12eac9d,\n    (q31_t)0x4c326075, (q31_t)0xc12c4653, (q31_t)0x4c260a31, (q31_t)0xc129e276,\n    (q31_t)0x4c19b374, (q31_t)0xc1278104, (q31_t)0x4c0d5c41, (q31_t)0xc12521ff,\n    (q31_t)0x4c010496, (q31_t)0xc122c566, (q31_t)0x4bf4ac75, (q31_t)0xc1206b39,\n    (q31_t)0x4be853de, (q31_t)0xc11e1379, (q31_t)0x4bdbfad1, (q31_t)0xc11bbe26,\n    (q31_t)0x4bcfa150, (q31_t)0xc1196b3f, (q31_t)0x4bc34759, (q31_t)0xc1171ac6,\n    (q31_t)0x4bb6ecef, (q31_t)0xc114ccb9, (q31_t)0x4baa9211, (q31_t)0xc1128119,\n    (q31_t)0x4b9e36c0, (q31_t)0xc11037e6, (q31_t)0x4b91dafc, (q31_t)0xc10df120,\n    (q31_t)0x4b857ec7, (q31_t)0xc10bacc8, (q31_t)0x4b79221f, (q31_t)0xc1096add,\n    (q31_t)0x4b6cc506, (q31_t)0xc1072b5f, (q31_t)0x4b60677c, (q31_t)0xc104ee4f,\n    (q31_t)0x4b540982, (q31_t)0xc102b3ac, (q31_t)0x4b47ab19, (q31_t)0xc1007b77,\n    (q31_t)0x4b3b4c40, (q31_t)0xc0fe45b0, (q31_t)0x4b2eecf8, (q31_t)0xc0fc1257,\n    (q31_t)0x4b228d42, (q31_t)0xc0f9e16b, (q31_t)0x4b162d1d, (q31_t)0xc0f7b2ee,\n    (q31_t)0x4b09cc8c, (q31_t)0xc0f586df, (q31_t)0x4afd6b8d, (q31_t)0xc0f35d3e,\n    (q31_t)0x4af10a22, (q31_t)0xc0f1360b, (q31_t)0x4ae4a84b, (q31_t)0xc0ef1147,\n    (q31_t)0x4ad84609, (q31_t)0xc0eceef1, (q31_t)0x4acbe35b, (q31_t)0xc0eacf09,\n    (q31_t)0x4abf8043, (q31_t)0xc0e8b190, (q31_t)0x4ab31cc1, (q31_t)0xc0e69686,\n    (q31_t)0x4aa6b8d5, (q31_t)0xc0e47deb, (q31_t)0x4a9a5480, (q31_t)0xc0e267be,\n    (q31_t)0x4a8defc3, (q31_t)0xc0e05401, (q31_t)0x4a818a9d, (q31_t)0xc0de42b2,\n    (q31_t)0x4a752510, (q31_t)0xc0dc33d2, (q31_t)0x4a68bf1b, (q31_t)0xc0da2762,\n    (q31_t)0x4a5c58c0, (q31_t)0xc0d81d61, (q31_t)0x4a4ff1fe, (q31_t)0xc0d615cf,\n    (q31_t)0x4a438ad7, (q31_t)0xc0d410ad, (q31_t)0x4a37234a, (q31_t)0xc0d20dfa,\n    (q31_t)0x4a2abb59, (q31_t)0xc0d00db6, (q31_t)0x4a1e5303, (q31_t)0xc0ce0fe3,\n    (q31_t)0x4a11ea49, (q31_t)0xc0cc147f, (q31_t)0x4a05812c, (q31_t)0xc0ca1b8a,\n    (q31_t)0x49f917ac, (q31_t)0xc0c82506, (q31_t)0x49ecadc9, (q31_t)0xc0c630f2,\n    (q31_t)0x49e04385, (q31_t)0xc0c43f4d, (q31_t)0x49d3d8df, (q31_t)0xc0c25019,\n    (q31_t)0x49c76dd8, (q31_t)0xc0c06355, (q31_t)0x49bb0271, (q31_t)0xc0be7901,\n    (q31_t)0x49ae96aa, (q31_t)0xc0bc911d, (q31_t)0x49a22a83, (q31_t)0xc0baabaa,\n    (q31_t)0x4995bdfd, (q31_t)0xc0b8c8a7, (q31_t)0x49895118, (q31_t)0xc0b6e815,\n    (q31_t)0x497ce3d5, (q31_t)0xc0b509f3, (q31_t)0x49707635, (q31_t)0xc0b32e42,\n    (q31_t)0x49640837, (q31_t)0xc0b15502, (q31_t)0x495799dd, (q31_t)0xc0af7e33,\n    (q31_t)0x494b2b27, (q31_t)0xc0ada9d4, (q31_t)0x493ebc14, (q31_t)0xc0abd7e6,\n    (q31_t)0x49324ca7, (q31_t)0xc0aa086a, (q31_t)0x4925dcdf, (q31_t)0xc0a83b5e,\n    (q31_t)0x49196cbc, (q31_t)0xc0a670c4, (q31_t)0x490cfc40, (q31_t)0xc0a4a89b,\n    (q31_t)0x49008b6a, (q31_t)0xc0a2e2e3, (q31_t)0x48f41a3c, (q31_t)0xc0a11f9d,\n    (q31_t)0x48e7a8b5, (q31_t)0xc09f5ec8, (q31_t)0x48db36d6, (q31_t)0xc09da065,\n    (q31_t)0x48cec4a0, (q31_t)0xc09be473, (q31_t)0x48c25213, (q31_t)0xc09a2af3,\n    (q31_t)0x48b5df30, (q31_t)0xc09873e4, (q31_t)0x48a96bf6, (q31_t)0xc096bf48,\n    (q31_t)0x489cf867, (q31_t)0xc0950d1d, (q31_t)0x48908483, (q31_t)0xc0935d64,\n    (q31_t)0x4884104b, (q31_t)0xc091b01d, (q31_t)0x48779bbe, (q31_t)0xc0900548,\n    (q31_t)0x486b26de, (q31_t)0xc08e5ce5, (q31_t)0x485eb1ab, (q31_t)0xc08cb6f5,\n    (q31_t)0x48523c25, (q31_t)0xc08b1376, (q31_t)0x4845c64d, (q31_t)0xc089726a,\n    (q31_t)0x48395024, (q31_t)0xc087d3d0, (q31_t)0x482cd9a9, (q31_t)0xc08637a9,\n    (q31_t)0x482062de, (q31_t)0xc0849df4, (q31_t)0x4813ebc2, (q31_t)0xc08306b2,\n    (q31_t)0x48077457, (q31_t)0xc08171e2, (q31_t)0x47fafc9c, (q31_t)0xc07fdf85,\n    (q31_t)0x47ee8493, (q31_t)0xc07e4f9b, (q31_t)0x47e20c3b, (q31_t)0xc07cc223,\n    (q31_t)0x47d59396, (q31_t)0xc07b371e, (q31_t)0x47c91aa3, (q31_t)0xc079ae8c,\n    (q31_t)0x47bca163, (q31_t)0xc078286e, (q31_t)0x47b027d7, (q31_t)0xc076a4c2,\n    (q31_t)0x47a3adff, (q31_t)0xc0752389, (q31_t)0x479733dc, (q31_t)0xc073a4c3,\n    (q31_t)0x478ab96e, (q31_t)0xc0722871, (q31_t)0x477e3eb5, (q31_t)0xc070ae92,\n    (q31_t)0x4771c3b3, (q31_t)0xc06f3726, (q31_t)0x47654867, (q31_t)0xc06dc22e,\n    (q31_t)0x4758ccd2, (q31_t)0xc06c4fa8, (q31_t)0x474c50f4, (q31_t)0xc06adf97,\n    (q31_t)0x473fd4cf, (q31_t)0xc06971f9, (q31_t)0x47335862, (q31_t)0xc06806ce,\n    (q31_t)0x4726dbae, (q31_t)0xc0669e18, (q31_t)0x471a5eb3, (q31_t)0xc06537d4,\n    (q31_t)0x470de172, (q31_t)0xc063d405, (q31_t)0x470163eb, (q31_t)0xc06272aa,\n    (q31_t)0x46f4e620, (q31_t)0xc06113c2, (q31_t)0x46e86810, (q31_t)0xc05fb74e,\n    (q31_t)0x46dbe9bb, (q31_t)0xc05e5d4e, (q31_t)0x46cf6b23, (q31_t)0xc05d05c3,\n    (q31_t)0x46c2ec48, (q31_t)0xc05bb0ab, (q31_t)0x46b66d29, (q31_t)0xc05a5e07,\n    (q31_t)0x46a9edc9, (q31_t)0xc0590dd8, (q31_t)0x469d6e27, (q31_t)0xc057c01d,\n    (q31_t)0x4690ee44, (q31_t)0xc05674d6, (q31_t)0x46846e1f, (q31_t)0xc0552c03,\n    (q31_t)0x4677edbb, (q31_t)0xc053e5a5, (q31_t)0x466b6d16, (q31_t)0xc052a1bb,\n    (q31_t)0x465eec33, (q31_t)0xc0516045, (q31_t)0x46526b10, (q31_t)0xc0502145,\n    (q31_t)0x4645e9af, (q31_t)0xc04ee4b8, (q31_t)0x46396810, (q31_t)0xc04daaa1,\n    (q31_t)0x462ce634, (q31_t)0xc04c72fe, (q31_t)0x4620641a, (q31_t)0xc04b3dcf,\n    (q31_t)0x4613e1c5, (q31_t)0xc04a0b16, (q31_t)0x46075f33, (q31_t)0xc048dad1,\n    (q31_t)0x45fadc66, (q31_t)0xc047ad01, (q31_t)0x45ee595d, (q31_t)0xc04681a6,\n    (q31_t)0x45e1d61b, (q31_t)0xc04558c0, (q31_t)0x45d5529e, (q31_t)0xc044324f,\n    (q31_t)0x45c8cee7, (q31_t)0xc0430e53, (q31_t)0x45bc4af8, (q31_t)0xc041eccc,\n    (q31_t)0x45afc6d0, (q31_t)0xc040cdba, (q31_t)0x45a3426f, (q31_t)0xc03fb11d,\n    (q31_t)0x4596bdd7, (q31_t)0xc03e96f6, (q31_t)0x458a3908, (q31_t)0xc03d7f44,\n    (q31_t)0x457db403, (q31_t)0xc03c6a07, (q31_t)0x45712ec7, (q31_t)0xc03b573f,\n    (q31_t)0x4564a955, (q31_t)0xc03a46ed, (q31_t)0x455823ae, (q31_t)0xc0393910,\n    (q31_t)0x454b9dd3, (q31_t)0xc0382da8, (q31_t)0x453f17c3, (q31_t)0xc03724b6,\n    (q31_t)0x4532917f, (q31_t)0xc0361e3a, (q31_t)0x45260b08, (q31_t)0xc0351a33,\n    (q31_t)0x4519845e, (q31_t)0xc03418a2, (q31_t)0x450cfd82, (q31_t)0xc0331986,\n    (q31_t)0x45007674, (q31_t)0xc0321ce0, (q31_t)0x44f3ef35, (q31_t)0xc03122b0,\n    (q31_t)0x44e767c5, (q31_t)0xc0302af5, (q31_t)0x44dae024, (q31_t)0xc02f35b1,\n    (q31_t)0x44ce5854, (q31_t)0xc02e42e2, (q31_t)0x44c1d054, (q31_t)0xc02d5289,\n    (q31_t)0x44b54825, (q31_t)0xc02c64a6, (q31_t)0x44a8bfc7, (q31_t)0xc02b7939,\n    (q31_t)0x449c373c, (q31_t)0xc02a9042, (q31_t)0x448fae83, (q31_t)0xc029a9c1,\n    (q31_t)0x4483259d, (q31_t)0xc028c5b6, (q31_t)0x44769c8b, (q31_t)0xc027e421,\n    (q31_t)0x446a134c, (q31_t)0xc0270502, (q31_t)0x445d89e2, (q31_t)0xc0262859,\n    (q31_t)0x4451004d, (q31_t)0xc0254e27, (q31_t)0x4444768d, (q31_t)0xc024766a,\n    (q31_t)0x4437eca4, (q31_t)0xc023a124, (q31_t)0x442b6290, (q31_t)0xc022ce54,\n    (q31_t)0x441ed854, (q31_t)0xc021fdfb, (q31_t)0x44124dee, (q31_t)0xc0213018,\n    (q31_t)0x4405c361, (q31_t)0xc02064ab, (q31_t)0x43f938ac, (q31_t)0xc01f9bb5,\n    (q31_t)0x43ecadcf, (q31_t)0xc01ed535, (q31_t)0x43e022cc, (q31_t)0xc01e112b,\n    (q31_t)0x43d397a3, (q31_t)0xc01d4f99, (q31_t)0x43c70c54, (q31_t)0xc01c907c,\n    (q31_t)0x43ba80df, (q31_t)0xc01bd3d6, (q31_t)0x43adf546, (q31_t)0xc01b19a7,\n    (q31_t)0x43a16988, (q31_t)0xc01a61ee, (q31_t)0x4394dda7, (q31_t)0xc019acac,\n    (q31_t)0x438851a2, (q31_t)0xc018f9e1, (q31_t)0x437bc57b, (q31_t)0xc018498c,\n    (q31_t)0x436f3931, (q31_t)0xc0179bae, (q31_t)0x4362acc5, (q31_t)0xc016f047,\n    (q31_t)0x43562038, (q31_t)0xc0164757, (q31_t)0x43499389, (q31_t)0xc015a0dd,\n    (q31_t)0x433d06bb, (q31_t)0xc014fcda, (q31_t)0x433079cc, (q31_t)0xc0145b4e,\n    (q31_t)0x4323ecbe, (q31_t)0xc013bc39, (q31_t)0x43175f91, (q31_t)0xc0131f9b,\n    (q31_t)0x430ad245, (q31_t)0xc0128574, (q31_t)0x42fe44dc, (q31_t)0xc011edc3,\n    (q31_t)0x42f1b755, (q31_t)0xc011588a, (q31_t)0x42e529b0, (q31_t)0xc010c5c7,\n    (q31_t)0x42d89bf0, (q31_t)0xc010357c, (q31_t)0x42cc0e13, (q31_t)0xc00fa7a8,\n    (q31_t)0x42bf801a, (q31_t)0xc00f1c4a, (q31_t)0x42b2f207, (q31_t)0xc00e9364,\n    (q31_t)0x42a663d8, (q31_t)0xc00e0cf5, (q31_t)0x4299d590, (q31_t)0xc00d88fd,\n    (q31_t)0x428d472e, (q31_t)0xc00d077c, (q31_t)0x4280b8b3, (q31_t)0xc00c8872,\n    (q31_t)0x42742a1f, (q31_t)0xc00c0be0, (q31_t)0x42679b73, (q31_t)0xc00b91c4,\n    (q31_t)0x425b0caf, (q31_t)0xc00b1a20, (q31_t)0x424e7dd4, (q31_t)0xc00aa4f3,\n    (q31_t)0x4241eee2, (q31_t)0xc00a323d, (q31_t)0x42355fd9, (q31_t)0xc009c1ff,\n    (q31_t)0x4228d0bb, (q31_t)0xc0095438, (q31_t)0x421c4188, (q31_t)0xc008e8e8,\n    (q31_t)0x420fb240, (q31_t)0xc008800f, (q31_t)0x420322e3, (q31_t)0xc00819ae,\n    (q31_t)0x41f69373, (q31_t)0xc007b5c4, (q31_t)0x41ea03ef, (q31_t)0xc0075452,\n    (q31_t)0x41dd7459, (q31_t)0xc006f556, (q31_t)0x41d0e4b0, (q31_t)0xc00698d3,\n    (q31_t)0x41c454f5, (q31_t)0xc0063ec6, (q31_t)0x41b7c528, (q31_t)0xc005e731,\n    (q31_t)0x41ab354b, (q31_t)0xc0059214, (q31_t)0x419ea55d, (q31_t)0xc0053f6e,\n    (q31_t)0x4192155f, (q31_t)0xc004ef3f, (q31_t)0x41858552, (q31_t)0xc004a188,\n    (q31_t)0x4178f536, (q31_t)0xc0045648, (q31_t)0x416c650b, (q31_t)0xc0040d80,\n    (q31_t)0x415fd4d2, (q31_t)0xc003c72f, (q31_t)0x4153448c, (q31_t)0xc0038356,\n    (q31_t)0x4146b438, (q31_t)0xc00341f4, (q31_t)0x413a23d8, (q31_t)0xc003030a,\n    (q31_t)0x412d936c, (q31_t)0xc002c697, (q31_t)0x412102f4, (q31_t)0xc0028c9c,\n    (q31_t)0x41147271, (q31_t)0xc0025519, (q31_t)0x4107e1e3, (q31_t)0xc002200d,\n    (q31_t)0x40fb514b, (q31_t)0xc001ed78, (q31_t)0x40eec0aa, (q31_t)0xc001bd5c,\n    (q31_t)0x40e22fff, (q31_t)0xc0018fb6, (q31_t)0x40d59f4c, (q31_t)0xc0016489,\n    (q31_t)0x40c90e90, (q31_t)0xc0013bd3, (q31_t)0x40bc7dcc, (q31_t)0xc0011594,\n    (q31_t)0x40afed02, (q31_t)0xc000f1ce, (q31_t)0x40a35c30, (q31_t)0xc000d07e,\n    (q31_t)0x4096cb58, (q31_t)0xc000b1a7, (q31_t)0x408a3a7b, (q31_t)0xc0009547,\n    (q31_t)0x407da998, (q31_t)0xc0007b5f, (q31_t)0x407118b0, (q31_t)0xc00063ee,\n    (q31_t)0x406487c4, (q31_t)0xc0004ef5, (q31_t)0x4057f6d4, (q31_t)0xc0003c74,\n    (q31_t)0x404b65e1, (q31_t)0xc0002c6a, (q31_t)0x403ed4ea, (q31_t)0xc0001ed8,\n    (q31_t)0x403243f1, (q31_t)0xc00013bd, (q31_t)0x4025b2f7, (q31_t)0xc0000b1a,\n    (q31_t)0x401921fb, (q31_t)0xc00004ef, (q31_t)0x400c90fe, (q31_t)0xc000013c,\n};\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_REALCOEF_Q15)\n/**\n  @par\n  Generation fixed-point realCoefAQ15 array in Q15 format:\n  @par\n  n = 4096\n  <pre>for (i = 0; i < n; i++)\n  {\n     pATable[2 * i]     = 0.5 * ( 1.0 - sin (2 * PI / (double) (2 * n) * (double) i));\n     pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));\n  }</pre>\n  @par\n  Convert to fixed point Q15 format\n        round(pATable[i] * pow(2, 15))\n */\nconst q15_t __ALIGNED(4) realCoefAQ15[8192] = {\n    (q15_t)0x4000, (q15_t)0xc000, (q15_t)0x3ff3, (q15_t)0xc000, (q15_t)0x3fe7, (q15_t)0xc000, (q15_t)0x3fda, (q15_t)0xc000,\n    (q15_t)0x3fce, (q15_t)0xc000, (q15_t)0x3fc1, (q15_t)0xc000, (q15_t)0x3fb5, (q15_t)0xc000, (q15_t)0x3fa8, (q15_t)0xc000,\n    (q15_t)0x3f9b, (q15_t)0xc000, (q15_t)0x3f8f, (q15_t)0xc000, (q15_t)0x3f82, (q15_t)0xc000, (q15_t)0x3f76, (q15_t)0xc001,\n    (q15_t)0x3f69, (q15_t)0xc001, (q15_t)0x3f5d, (q15_t)0xc001, (q15_t)0x3f50, (q15_t)0xc001, (q15_t)0x3f44, (q15_t)0xc001,\n    (q15_t)0x3f37, (q15_t)0xc001, (q15_t)0x3f2a, (q15_t)0xc001, (q15_t)0x3f1e, (q15_t)0xc002, (q15_t)0x3f11, (q15_t)0xc002,\n    (q15_t)0x3f05, (q15_t)0xc002, (q15_t)0x3ef8, (q15_t)0xc002, (q15_t)0x3eec, (q15_t)0xc002, (q15_t)0x3edf, (q15_t)0xc003,\n    (q15_t)0x3ed2, (q15_t)0xc003, (q15_t)0x3ec6, (q15_t)0xc003, (q15_t)0x3eb9, (q15_t)0xc003, (q15_t)0x3ead, (q15_t)0xc004,\n    (q15_t)0x3ea0, (q15_t)0xc004, (q15_t)0x3e94, (q15_t)0xc004, (q15_t)0x3e87, (q15_t)0xc004, (q15_t)0x3e7a, (q15_t)0xc005,\n    (q15_t)0x3e6e, (q15_t)0xc005, (q15_t)0x3e61, (q15_t)0xc005, (q15_t)0x3e55, (q15_t)0xc006, (q15_t)0x3e48, (q15_t)0xc006,\n    (q15_t)0x3e3c, (q15_t)0xc006, (q15_t)0x3e2f, (q15_t)0xc007, (q15_t)0x3e23, (q15_t)0xc007, (q15_t)0x3e16, (q15_t)0xc007,\n    (q15_t)0x3e09, (q15_t)0xc008, (q15_t)0x3dfd, (q15_t)0xc008, (q15_t)0x3df0, (q15_t)0xc009, (q15_t)0x3de4, (q15_t)0xc009,\n    (q15_t)0x3dd7, (q15_t)0xc009, (q15_t)0x3dcb, (q15_t)0xc00a, (q15_t)0x3dbe, (q15_t)0xc00a, (q15_t)0x3db2, (q15_t)0xc00b,\n    (q15_t)0x3da5, (q15_t)0xc00b, (q15_t)0x3d98, (q15_t)0xc00c, (q15_t)0x3d8c, (q15_t)0xc00c, (q15_t)0x3d7f, (q15_t)0xc00d,\n    (q15_t)0x3d73, (q15_t)0xc00d, (q15_t)0x3d66, (q15_t)0xc00e, (q15_t)0x3d5a, (q15_t)0xc00e, (q15_t)0x3d4d, (q15_t)0xc00f,\n    (q15_t)0x3d40, (q15_t)0xc00f, (q15_t)0x3d34, (q15_t)0xc010, (q15_t)0x3d27, (q15_t)0xc010, (q15_t)0x3d1b, (q15_t)0xc011,\n    (q15_t)0x3d0e, (q15_t)0xc011, (q15_t)0x3d02, (q15_t)0xc012, (q15_t)0x3cf5, (q15_t)0xc013, (q15_t)0x3ce9, (q15_t)0xc013,\n    (q15_t)0x3cdc, (q15_t)0xc014, (q15_t)0x3cd0, (q15_t)0xc014, (q15_t)0x3cc3, (q15_t)0xc015, (q15_t)0x3cb6, (q15_t)0xc016,\n    (q15_t)0x3caa, (q15_t)0xc016, (q15_t)0x3c9d, (q15_t)0xc017, (q15_t)0x3c91, (q15_t)0xc018, (q15_t)0x3c84, (q15_t)0xc018,\n    (q15_t)0x3c78, (q15_t)0xc019, (q15_t)0x3c6b, (q15_t)0xc01a, (q15_t)0x3c5f, (q15_t)0xc01a, (q15_t)0x3c52, (q15_t)0xc01b,\n    (q15_t)0x3c45, (q15_t)0xc01c, (q15_t)0x3c39, (q15_t)0xc01d, (q15_t)0x3c2c, (q15_t)0xc01d, (q15_t)0x3c20, (q15_t)0xc01e,\n    (q15_t)0x3c13, (q15_t)0xc01f, (q15_t)0x3c07, (q15_t)0xc020, (q15_t)0x3bfa, (q15_t)0xc020, (q15_t)0x3bee, (q15_t)0xc021,\n    (q15_t)0x3be1, (q15_t)0xc022, (q15_t)0x3bd5, (q15_t)0xc023, (q15_t)0x3bc8, (q15_t)0xc024, (q15_t)0x3bbc, (q15_t)0xc024,\n    (q15_t)0x3baf, (q15_t)0xc025, (q15_t)0x3ba2, (q15_t)0xc026, (q15_t)0x3b96, (q15_t)0xc027, (q15_t)0x3b89, (q15_t)0xc028,\n    (q15_t)0x3b7d, (q15_t)0xc029, (q15_t)0x3b70, (q15_t)0xc02a, (q15_t)0x3b64, (q15_t)0xc02b, (q15_t)0x3b57, (q15_t)0xc02b,\n    (q15_t)0x3b4b, (q15_t)0xc02c, (q15_t)0x3b3e, (q15_t)0xc02d, (q15_t)0x3b32, (q15_t)0xc02e, (q15_t)0x3b25, (q15_t)0xc02f,\n    (q15_t)0x3b19, (q15_t)0xc030, (q15_t)0x3b0c, (q15_t)0xc031, (q15_t)0x3b00, (q15_t)0xc032, (q15_t)0x3af3, (q15_t)0xc033,\n    (q15_t)0x3ae6, (q15_t)0xc034, (q15_t)0x3ada, (q15_t)0xc035, (q15_t)0x3acd, (q15_t)0xc036, (q15_t)0x3ac1, (q15_t)0xc037,\n    (q15_t)0x3ab4, (q15_t)0xc038, (q15_t)0x3aa8, (q15_t)0xc039, (q15_t)0x3a9b, (q15_t)0xc03a, (q15_t)0x3a8f, (q15_t)0xc03b,\n    (q15_t)0x3a82, (q15_t)0xc03c, (q15_t)0x3a76, (q15_t)0xc03d, (q15_t)0x3a69, (q15_t)0xc03f, (q15_t)0x3a5d, (q15_t)0xc040,\n    (q15_t)0x3a50, (q15_t)0xc041, (q15_t)0x3a44, (q15_t)0xc042, (q15_t)0x3a37, (q15_t)0xc043, (q15_t)0x3a2b, (q15_t)0xc044,\n    (q15_t)0x3a1e, (q15_t)0xc045, (q15_t)0x3a12, (q15_t)0xc047, (q15_t)0x3a05, (q15_t)0xc048, (q15_t)0x39f9, (q15_t)0xc049,\n    (q15_t)0x39ec, (q15_t)0xc04a, (q15_t)0x39e0, (q15_t)0xc04b, (q15_t)0x39d3, (q15_t)0xc04c, (q15_t)0x39c7, (q15_t)0xc04e,\n    (q15_t)0x39ba, (q15_t)0xc04f, (q15_t)0x39ae, (q15_t)0xc050, (q15_t)0x39a1, (q15_t)0xc051, (q15_t)0x3995, (q15_t)0xc053,\n    (q15_t)0x3988, (q15_t)0xc054, (q15_t)0x397c, (q15_t)0xc055, (q15_t)0x396f, (q15_t)0xc056, (q15_t)0x3963, (q15_t)0xc058,\n    (q15_t)0x3956, (q15_t)0xc059, (q15_t)0x394a, (q15_t)0xc05a, (q15_t)0x393d, (q15_t)0xc05c, (q15_t)0x3931, (q15_t)0xc05d,\n    (q15_t)0x3924, (q15_t)0xc05e, (q15_t)0x3918, (q15_t)0xc060, (q15_t)0x390b, (q15_t)0xc061, (q15_t)0x38ff, (q15_t)0xc062,\n    (q15_t)0x38f2, (q15_t)0xc064, (q15_t)0x38e6, (q15_t)0xc065, (q15_t)0x38d9, (q15_t)0xc067, (q15_t)0x38cd, (q15_t)0xc068,\n    (q15_t)0x38c0, (q15_t)0xc069, (q15_t)0x38b4, (q15_t)0xc06b, (q15_t)0x38a7, (q15_t)0xc06c, (q15_t)0x389b, (q15_t)0xc06e,\n    (q15_t)0x388e, (q15_t)0xc06f, (q15_t)0x3882, (q15_t)0xc071, (q15_t)0x3875, (q15_t)0xc072, (q15_t)0x3869, (q15_t)0xc074,\n    (q15_t)0x385c, (q15_t)0xc075, (q15_t)0x3850, (q15_t)0xc077, (q15_t)0x3843, (q15_t)0xc078, (q15_t)0x3837, (q15_t)0xc07a,\n    (q15_t)0x382a, (q15_t)0xc07b, (q15_t)0x381e, (q15_t)0xc07d, (q15_t)0x3811, (q15_t)0xc07e, (q15_t)0x3805, (q15_t)0xc080,\n    (q15_t)0x37f9, (q15_t)0xc081, (q15_t)0x37ec, (q15_t)0xc083, (q15_t)0x37e0, (q15_t)0xc085, (q15_t)0x37d3, (q15_t)0xc086,\n    (q15_t)0x37c7, (q15_t)0xc088, (q15_t)0x37ba, (q15_t)0xc089, (q15_t)0x37ae, (q15_t)0xc08b, (q15_t)0x37a1, (q15_t)0xc08d,\n    (q15_t)0x3795, (q15_t)0xc08e, (q15_t)0x3788, (q15_t)0xc090, (q15_t)0x377c, (q15_t)0xc092, (q15_t)0x376f, (q15_t)0xc093,\n    (q15_t)0x3763, (q15_t)0xc095, (q15_t)0x3757, (q15_t)0xc097, (q15_t)0x374a, (q15_t)0xc098, (q15_t)0x373e, (q15_t)0xc09a,\n    (q15_t)0x3731, (q15_t)0xc09c, (q15_t)0x3725, (q15_t)0xc09e, (q15_t)0x3718, (q15_t)0xc09f, (q15_t)0x370c, (q15_t)0xc0a1,\n    (q15_t)0x36ff, (q15_t)0xc0a3, (q15_t)0x36f3, (q15_t)0xc0a5, (q15_t)0x36e7, (q15_t)0xc0a6, (q15_t)0x36da, (q15_t)0xc0a8,\n    (q15_t)0x36ce, (q15_t)0xc0aa, (q15_t)0x36c1, (q15_t)0xc0ac, (q15_t)0x36b5, (q15_t)0xc0ae, (q15_t)0x36a8, (q15_t)0xc0af,\n    (q15_t)0x369c, (q15_t)0xc0b1, (q15_t)0x3690, (q15_t)0xc0b3, (q15_t)0x3683, (q15_t)0xc0b5, (q15_t)0x3677, (q15_t)0xc0b7,\n    (q15_t)0x366a, (q15_t)0xc0b9, (q15_t)0x365e, (q15_t)0xc0bb, (q15_t)0x3651, (q15_t)0xc0bd, (q15_t)0x3645, (q15_t)0xc0be,\n    (q15_t)0x3639, (q15_t)0xc0c0, (q15_t)0x362c, (q15_t)0xc0c2, (q15_t)0x3620, (q15_t)0xc0c4, (q15_t)0x3613, (q15_t)0xc0c6,\n    (q15_t)0x3607, (q15_t)0xc0c8, (q15_t)0x35fa, (q15_t)0xc0ca, (q15_t)0x35ee, (q15_t)0xc0cc, (q15_t)0x35e2, (q15_t)0xc0ce,\n    (q15_t)0x35d5, (q15_t)0xc0d0, (q15_t)0x35c9, (q15_t)0xc0d2, (q15_t)0x35bc, (q15_t)0xc0d4, (q15_t)0x35b0, (q15_t)0xc0d6,\n    (q15_t)0x35a4, (q15_t)0xc0d8, (q15_t)0x3597, (q15_t)0xc0da, (q15_t)0x358b, (q15_t)0xc0dc, (q15_t)0x357e, (q15_t)0xc0de,\n    (q15_t)0x3572, (q15_t)0xc0e0, (q15_t)0x3566, (q15_t)0xc0e2, (q15_t)0x3559, (q15_t)0xc0e4, (q15_t)0x354d, (q15_t)0xc0e7,\n    (q15_t)0x3540, (q15_t)0xc0e9, (q15_t)0x3534, (q15_t)0xc0eb, (q15_t)0x3528, (q15_t)0xc0ed, (q15_t)0x351b, (q15_t)0xc0ef,\n    (q15_t)0x350f, (q15_t)0xc0f1, (q15_t)0x3503, (q15_t)0xc0f3, (q15_t)0x34f6, (q15_t)0xc0f6, (q15_t)0x34ea, (q15_t)0xc0f8,\n    (q15_t)0x34dd, (q15_t)0xc0fa, (q15_t)0x34d1, (q15_t)0xc0fc, (q15_t)0x34c5, (q15_t)0xc0fe, (q15_t)0x34b8, (q15_t)0xc100,\n    (q15_t)0x34ac, (q15_t)0xc103, (q15_t)0x34a0, (q15_t)0xc105, (q15_t)0x3493, (q15_t)0xc107, (q15_t)0x3487, (q15_t)0xc109,\n    (q15_t)0x347b, (q15_t)0xc10c, (q15_t)0x346e, (q15_t)0xc10e, (q15_t)0x3462, (q15_t)0xc110, (q15_t)0x3455, (q15_t)0xc113,\n    (q15_t)0x3449, (q15_t)0xc115, (q15_t)0x343d, (q15_t)0xc117, (q15_t)0x3430, (q15_t)0xc119, (q15_t)0x3424, (q15_t)0xc11c,\n    (q15_t)0x3418, (q15_t)0xc11e, (q15_t)0x340b, (q15_t)0xc120, (q15_t)0x33ff, (q15_t)0xc123, (q15_t)0x33f3, (q15_t)0xc125,\n    (q15_t)0x33e6, (q15_t)0xc128, (q15_t)0x33da, (q15_t)0xc12a, (q15_t)0x33ce, (q15_t)0xc12c, (q15_t)0x33c1, (q15_t)0xc12f,\n    (q15_t)0x33b5, (q15_t)0xc131, (q15_t)0x33a9, (q15_t)0xc134, (q15_t)0x339c, (q15_t)0xc136, (q15_t)0x3390, (q15_t)0xc138,\n    (q15_t)0x3384, (q15_t)0xc13b, (q15_t)0x3377, (q15_t)0xc13d, (q15_t)0x336b, (q15_t)0xc140, (q15_t)0x335f, (q15_t)0xc142,\n    (q15_t)0x3352, (q15_t)0xc145, (q15_t)0x3346, (q15_t)0xc147, (q15_t)0x333a, (q15_t)0xc14a, (q15_t)0x332d, (q15_t)0xc14c,\n    (q15_t)0x3321, (q15_t)0xc14f, (q15_t)0x3315, (q15_t)0xc151, (q15_t)0x3308, (q15_t)0xc154, (q15_t)0x32fc, (q15_t)0xc156,\n    (q15_t)0x32f0, (q15_t)0xc159, (q15_t)0x32e4, (q15_t)0xc15b, (q15_t)0x32d7, (q15_t)0xc15e, (q15_t)0x32cb, (q15_t)0xc161,\n    (q15_t)0x32bf, (q15_t)0xc163, (q15_t)0x32b2, (q15_t)0xc166, (q15_t)0x32a6, (q15_t)0xc168, (q15_t)0x329a, (q15_t)0xc16b,\n    (q15_t)0x328e, (q15_t)0xc16e, (q15_t)0x3281, (q15_t)0xc170, (q15_t)0x3275, (q15_t)0xc173, (q15_t)0x3269, (q15_t)0xc176,\n    (q15_t)0x325c, (q15_t)0xc178, (q15_t)0x3250, (q15_t)0xc17b, (q15_t)0x3244, (q15_t)0xc17e, (q15_t)0x3238, (q15_t)0xc180,\n    (q15_t)0x322b, (q15_t)0xc183, (q15_t)0x321f, (q15_t)0xc186, (q15_t)0x3213, (q15_t)0xc189, (q15_t)0x3207, (q15_t)0xc18b,\n    (q15_t)0x31fa, (q15_t)0xc18e, (q15_t)0x31ee, (q15_t)0xc191, (q15_t)0x31e2, (q15_t)0xc194, (q15_t)0x31d5, (q15_t)0xc196,\n    (q15_t)0x31c9, (q15_t)0xc199, (q15_t)0x31bd, (q15_t)0xc19c, (q15_t)0x31b1, (q15_t)0xc19f, (q15_t)0x31a4, (q15_t)0xc1a2,\n    (q15_t)0x3198, (q15_t)0xc1a4, (q15_t)0x318c, (q15_t)0xc1a7, (q15_t)0x3180, (q15_t)0xc1aa, (q15_t)0x3174, (q15_t)0xc1ad,\n    (q15_t)0x3167, (q15_t)0xc1b0, (q15_t)0x315b, (q15_t)0xc1b3, (q15_t)0x314f, (q15_t)0xc1b6, (q15_t)0x3143, (q15_t)0xc1b8,\n    (q15_t)0x3136, (q15_t)0xc1bb, (q15_t)0x312a, (q15_t)0xc1be, (q15_t)0x311e, (q15_t)0xc1c1, (q15_t)0x3112, (q15_t)0xc1c4,\n    (q15_t)0x3105, (q15_t)0xc1c7, (q15_t)0x30f9, (q15_t)0xc1ca, (q15_t)0x30ed, (q15_t)0xc1cd, (q15_t)0x30e1, (q15_t)0xc1d0,\n    (q15_t)0x30d5, (q15_t)0xc1d3, (q15_t)0x30c8, (q15_t)0xc1d6, (q15_t)0x30bc, (q15_t)0xc1d9, (q15_t)0x30b0, (q15_t)0xc1dc,\n    (q15_t)0x30a4, (q15_t)0xc1df, (q15_t)0x3098, (q15_t)0xc1e2, (q15_t)0x308b, (q15_t)0xc1e5, (q15_t)0x307f, (q15_t)0xc1e8,\n    (q15_t)0x3073, (q15_t)0xc1eb, (q15_t)0x3067, (q15_t)0xc1ee, (q15_t)0x305b, (q15_t)0xc1f1, (q15_t)0x304e, (q15_t)0xc1f4,\n    (q15_t)0x3042, (q15_t)0xc1f7, (q15_t)0x3036, (q15_t)0xc1fa, (q15_t)0x302a, (q15_t)0xc1fd, (q15_t)0x301e, (q15_t)0xc201,\n    (q15_t)0x3012, (q15_t)0xc204, (q15_t)0x3005, (q15_t)0xc207, (q15_t)0x2ff9, (q15_t)0xc20a, (q15_t)0x2fed, (q15_t)0xc20d,\n    (q15_t)0x2fe1, (q15_t)0xc210, (q15_t)0x2fd5, (q15_t)0xc213, (q15_t)0x2fc9, (q15_t)0xc217, (q15_t)0x2fbc, (q15_t)0xc21a,\n    (q15_t)0x2fb0, (q15_t)0xc21d, (q15_t)0x2fa4, (q15_t)0xc220, (q15_t)0x2f98, (q15_t)0xc223, (q15_t)0x2f8c, (q15_t)0xc227,\n    (q15_t)0x2f80, (q15_t)0xc22a, (q15_t)0x2f74, (q15_t)0xc22d, (q15_t)0x2f67, (q15_t)0xc230, (q15_t)0x2f5b, (q15_t)0xc234,\n    (q15_t)0x2f4f, (q15_t)0xc237, (q15_t)0x2f43, (q15_t)0xc23a, (q15_t)0x2f37, (q15_t)0xc23e, (q15_t)0x2f2b, (q15_t)0xc241,\n    (q15_t)0x2f1f, (q15_t)0xc244, (q15_t)0x2f13, (q15_t)0xc247, (q15_t)0x2f06, (q15_t)0xc24b, (q15_t)0x2efa, (q15_t)0xc24e,\n    (q15_t)0x2eee, (q15_t)0xc251, (q15_t)0x2ee2, (q15_t)0xc255, (q15_t)0x2ed6, (q15_t)0xc258, (q15_t)0x2eca, (q15_t)0xc25c,\n    (q15_t)0x2ebe, (q15_t)0xc25f, (q15_t)0x2eb2, (q15_t)0xc262, (q15_t)0x2ea6, (q15_t)0xc266, (q15_t)0x2e99, (q15_t)0xc269,\n    (q15_t)0x2e8d, (q15_t)0xc26d, (q15_t)0x2e81, (q15_t)0xc270, (q15_t)0x2e75, (q15_t)0xc273, (q15_t)0x2e69, (q15_t)0xc277,\n    (q15_t)0x2e5d, (q15_t)0xc27a, (q15_t)0x2e51, (q15_t)0xc27e, (q15_t)0x2e45, (q15_t)0xc281, (q15_t)0x2e39, (q15_t)0xc285,\n    (q15_t)0x2e2d, (q15_t)0xc288, (q15_t)0x2e21, (q15_t)0xc28c, (q15_t)0x2e15, (q15_t)0xc28f, (q15_t)0x2e09, (q15_t)0xc293,\n    (q15_t)0x2dfc, (q15_t)0xc296, (q15_t)0x2df0, (q15_t)0xc29a, (q15_t)0x2de4, (q15_t)0xc29d, (q15_t)0x2dd8, (q15_t)0xc2a1,\n    (q15_t)0x2dcc, (q15_t)0xc2a5, (q15_t)0x2dc0, (q15_t)0xc2a8, (q15_t)0x2db4, (q15_t)0xc2ac, (q15_t)0x2da8, (q15_t)0xc2af,\n    (q15_t)0x2d9c, (q15_t)0xc2b3, (q15_t)0x2d90, (q15_t)0xc2b7, (q15_t)0x2d84, (q15_t)0xc2ba, (q15_t)0x2d78, (q15_t)0xc2be,\n    (q15_t)0x2d6c, (q15_t)0xc2c1, (q15_t)0x2d60, (q15_t)0xc2c5, (q15_t)0x2d54, (q15_t)0xc2c9, (q15_t)0x2d48, (q15_t)0xc2cc,\n    (q15_t)0x2d3c, (q15_t)0xc2d0, (q15_t)0x2d30, (q15_t)0xc2d4, (q15_t)0x2d24, (q15_t)0xc2d8, (q15_t)0x2d18, (q15_t)0xc2db,\n    (q15_t)0x2d0c, (q15_t)0xc2df, (q15_t)0x2d00, (q15_t)0xc2e3, (q15_t)0x2cf4, (q15_t)0xc2e6, (q15_t)0x2ce8, (q15_t)0xc2ea,\n    (q15_t)0x2cdc, (q15_t)0xc2ee, (q15_t)0x2cd0, (q15_t)0xc2f2, (q15_t)0x2cc4, (q15_t)0xc2f5, (q15_t)0x2cb8, (q15_t)0xc2f9,\n    (q15_t)0x2cac, (q15_t)0xc2fd, (q15_t)0x2ca0, (q15_t)0xc301, (q15_t)0x2c94, (q15_t)0xc305, (q15_t)0x2c88, (q15_t)0xc308,\n    (q15_t)0x2c7c, (q15_t)0xc30c, (q15_t)0x2c70, (q15_t)0xc310, (q15_t)0x2c64, (q15_t)0xc314, (q15_t)0x2c58, (q15_t)0xc318,\n    (q15_t)0x2c4c, (q15_t)0xc31c, (q15_t)0x2c40, (q15_t)0xc320, (q15_t)0x2c34, (q15_t)0xc323, (q15_t)0x2c28, (q15_t)0xc327,\n    (q15_t)0x2c1c, (q15_t)0xc32b, (q15_t)0x2c10, (q15_t)0xc32f, (q15_t)0x2c05, (q15_t)0xc333, (q15_t)0x2bf9, (q15_t)0xc337,\n    (q15_t)0x2bed, (q15_t)0xc33b, (q15_t)0x2be1, (q15_t)0xc33f, (q15_t)0x2bd5, (q15_t)0xc343, (q15_t)0x2bc9, (q15_t)0xc347,\n    (q15_t)0x2bbd, (q15_t)0xc34b, (q15_t)0x2bb1, (q15_t)0xc34f, (q15_t)0x2ba5, (q15_t)0xc353, (q15_t)0x2b99, (q15_t)0xc357,\n    (q15_t)0x2b8d, (q15_t)0xc35b, (q15_t)0x2b81, (q15_t)0xc35f, (q15_t)0x2b75, (q15_t)0xc363, (q15_t)0x2b6a, (q15_t)0xc367,\n    (q15_t)0x2b5e, (q15_t)0xc36b, (q15_t)0x2b52, (q15_t)0xc36f, (q15_t)0x2b46, (q15_t)0xc373, (q15_t)0x2b3a, (q15_t)0xc377,\n    (q15_t)0x2b2e, (q15_t)0xc37b, (q15_t)0x2b22, (q15_t)0xc37f, (q15_t)0x2b16, (q15_t)0xc383, (q15_t)0x2b0a, (q15_t)0xc387,\n    (q15_t)0x2aff, (q15_t)0xc38c, (q15_t)0x2af3, (q15_t)0xc390, (q15_t)0x2ae7, (q15_t)0xc394, (q15_t)0x2adb, (q15_t)0xc398,\n    (q15_t)0x2acf, (q15_t)0xc39c, (q15_t)0x2ac3, (q15_t)0xc3a0, (q15_t)0x2ab7, (q15_t)0xc3a5, (q15_t)0x2aac, (q15_t)0xc3a9,\n    (q15_t)0x2aa0, (q15_t)0xc3ad, (q15_t)0x2a94, (q15_t)0xc3b1, (q15_t)0x2a88, (q15_t)0xc3b5, (q15_t)0x2a7c, (q15_t)0xc3ba,\n    (q15_t)0x2a70, (q15_t)0xc3be, (q15_t)0x2a65, (q15_t)0xc3c2, (q15_t)0x2a59, (q15_t)0xc3c6, (q15_t)0x2a4d, (q15_t)0xc3ca,\n    (q15_t)0x2a41, (q15_t)0xc3cf, (q15_t)0x2a35, (q15_t)0xc3d3, (q15_t)0x2a29, (q15_t)0xc3d7, (q15_t)0x2a1e, (q15_t)0xc3dc,\n    (q15_t)0x2a12, (q15_t)0xc3e0, (q15_t)0x2a06, (q15_t)0xc3e4, (q15_t)0x29fa, (q15_t)0xc3e9, (q15_t)0x29ee, (q15_t)0xc3ed,\n    (q15_t)0x29e3, (q15_t)0xc3f1, (q15_t)0x29d7, (q15_t)0xc3f6, (q15_t)0x29cb, (q15_t)0xc3fa, (q15_t)0x29bf, (q15_t)0xc3fe,\n    (q15_t)0x29b4, (q15_t)0xc403, (q15_t)0x29a8, (q15_t)0xc407, (q15_t)0x299c, (q15_t)0xc40b, (q15_t)0x2990, (q15_t)0xc410,\n    (q15_t)0x2984, (q15_t)0xc414, (q15_t)0x2979, (q15_t)0xc419, (q15_t)0x296d, (q15_t)0xc41d, (q15_t)0x2961, (q15_t)0xc422,\n    (q15_t)0x2955, (q15_t)0xc426, (q15_t)0x294a, (q15_t)0xc42a, (q15_t)0x293e, (q15_t)0xc42f, (q15_t)0x2932, (q15_t)0xc433,\n    (q15_t)0x2926, (q15_t)0xc438, (q15_t)0x291b, (q15_t)0xc43c, (q15_t)0x290f, (q15_t)0xc441, (q15_t)0x2903, (q15_t)0xc445,\n    (q15_t)0x28f7, (q15_t)0xc44a, (q15_t)0x28ec, (q15_t)0xc44e, (q15_t)0x28e0, (q15_t)0xc453, (q15_t)0x28d4, (q15_t)0xc457,\n    (q15_t)0x28c9, (q15_t)0xc45c, (q15_t)0x28bd, (q15_t)0xc461, (q15_t)0x28b1, (q15_t)0xc465, (q15_t)0x28a5, (q15_t)0xc46a,\n    (q15_t)0x289a, (q15_t)0xc46e, (q15_t)0x288e, (q15_t)0xc473, (q15_t)0x2882, (q15_t)0xc478, (q15_t)0x2877, (q15_t)0xc47c,\n    (q15_t)0x286b, (q15_t)0xc481, (q15_t)0x285f, (q15_t)0xc485, (q15_t)0x2854, (q15_t)0xc48a, (q15_t)0x2848, (q15_t)0xc48f,\n    (q15_t)0x283c, (q15_t)0xc493, (q15_t)0x2831, (q15_t)0xc498, (q15_t)0x2825, (q15_t)0xc49d, (q15_t)0x2819, (q15_t)0xc4a1,\n    (q15_t)0x280e, (q15_t)0xc4a6, (q15_t)0x2802, (q15_t)0xc4ab, (q15_t)0x27f6, (q15_t)0xc4b0, (q15_t)0x27eb, (q15_t)0xc4b4,\n    (q15_t)0x27df, (q15_t)0xc4b9, (q15_t)0x27d3, (q15_t)0xc4be, (q15_t)0x27c8, (q15_t)0xc4c2, (q15_t)0x27bc, (q15_t)0xc4c7,\n    (q15_t)0x27b1, (q15_t)0xc4cc, (q15_t)0x27a5, (q15_t)0xc4d1, (q15_t)0x2799, (q15_t)0xc4d6, (q15_t)0x278e, (q15_t)0xc4da,\n    (q15_t)0x2782, (q15_t)0xc4df, (q15_t)0x2777, (q15_t)0xc4e4, (q15_t)0x276b, (q15_t)0xc4e9, (q15_t)0x275f, (q15_t)0xc4ee,\n    (q15_t)0x2754, (q15_t)0xc4f2, (q15_t)0x2748, (q15_t)0xc4f7, (q15_t)0x273d, (q15_t)0xc4fc, (q15_t)0x2731, (q15_t)0xc501,\n    (q15_t)0x2725, (q15_t)0xc506, (q15_t)0x271a, (q15_t)0xc50b, (q15_t)0x270e, (q15_t)0xc510, (q15_t)0x2703, (q15_t)0xc515,\n    (q15_t)0x26f7, (q15_t)0xc51a, (q15_t)0x26ec, (q15_t)0xc51e, (q15_t)0x26e0, (q15_t)0xc523, (q15_t)0x26d4, (q15_t)0xc528,\n    (q15_t)0x26c9, (q15_t)0xc52d, (q15_t)0x26bd, (q15_t)0xc532, (q15_t)0x26b2, (q15_t)0xc537, (q15_t)0x26a6, (q15_t)0xc53c,\n    (q15_t)0x269b, (q15_t)0xc541, (q15_t)0x268f, (q15_t)0xc546, (q15_t)0x2684, (q15_t)0xc54b, (q15_t)0x2678, (q15_t)0xc550,\n    (q15_t)0x266d, (q15_t)0xc555, (q15_t)0x2661, (q15_t)0xc55a, (q15_t)0x2656, (q15_t)0xc55f, (q15_t)0x264a, (q15_t)0xc564,\n    (q15_t)0x263f, (q15_t)0xc569, (q15_t)0x2633, (q15_t)0xc56e, (q15_t)0x2628, (q15_t)0xc573, (q15_t)0x261c, (q15_t)0xc578,\n    (q15_t)0x2611, (q15_t)0xc57e, (q15_t)0x2605, (q15_t)0xc583, (q15_t)0x25fa, (q15_t)0xc588, (q15_t)0x25ee, (q15_t)0xc58d,\n    (q15_t)0x25e3, (q15_t)0xc592, (q15_t)0x25d7, (q15_t)0xc597, (q15_t)0x25cc, (q15_t)0xc59c, (q15_t)0x25c0, (q15_t)0xc5a1,\n    (q15_t)0x25b5, (q15_t)0xc5a7, (q15_t)0x25a9, (q15_t)0xc5ac, (q15_t)0x259e, (q15_t)0xc5b1, (q15_t)0x2592, (q15_t)0xc5b6,\n    (q15_t)0x2587, (q15_t)0xc5bb, (q15_t)0x257c, (q15_t)0xc5c1, (q15_t)0x2570, (q15_t)0xc5c6, (q15_t)0x2565, (q15_t)0xc5cb,\n    (q15_t)0x2559, (q15_t)0xc5d0, (q15_t)0x254e, (q15_t)0xc5d5, (q15_t)0x2542, (q15_t)0xc5db, (q15_t)0x2537, (q15_t)0xc5e0,\n    (q15_t)0x252c, (q15_t)0xc5e5, (q15_t)0x2520, (q15_t)0xc5ea, (q15_t)0x2515, (q15_t)0xc5f0, (q15_t)0x2509, (q15_t)0xc5f5,\n    (q15_t)0x24fe, (q15_t)0xc5fa, (q15_t)0x24f3, (q15_t)0xc600, (q15_t)0x24e7, (q15_t)0xc605, (q15_t)0x24dc, (q15_t)0xc60a,\n    (q15_t)0x24d0, (q15_t)0xc610, (q15_t)0x24c5, (q15_t)0xc615, (q15_t)0x24ba, (q15_t)0xc61a, (q15_t)0x24ae, (q15_t)0xc620,\n    (q15_t)0x24a3, (q15_t)0xc625, (q15_t)0x2498, (q15_t)0xc62a, (q15_t)0x248c, (q15_t)0xc630, (q15_t)0x2481, (q15_t)0xc635,\n    (q15_t)0x2476, (q15_t)0xc63b, (q15_t)0x246a, (q15_t)0xc640, (q15_t)0x245f, (q15_t)0xc645, (q15_t)0x2454, (q15_t)0xc64b,\n    (q15_t)0x2448, (q15_t)0xc650, (q15_t)0x243d, (q15_t)0xc656, (q15_t)0x2432, (q15_t)0xc65b, (q15_t)0x2426, (q15_t)0xc661,\n    (q15_t)0x241b, (q15_t)0xc666, (q15_t)0x2410, (q15_t)0xc66c, (q15_t)0x2404, (q15_t)0xc671, (q15_t)0x23f9, (q15_t)0xc677,\n    (q15_t)0x23ee, (q15_t)0xc67c, (q15_t)0x23e2, (q15_t)0xc682, (q15_t)0x23d7, (q15_t)0xc687, (q15_t)0x23cc, (q15_t)0xc68d,\n    (q15_t)0x23c1, (q15_t)0xc692, (q15_t)0x23b5, (q15_t)0xc698, (q15_t)0x23aa, (q15_t)0xc69d, (q15_t)0x239f, (q15_t)0xc6a3,\n    (q15_t)0x2394, (q15_t)0xc6a8, (q15_t)0x2388, (q15_t)0xc6ae, (q15_t)0x237d, (q15_t)0xc6b4, (q15_t)0x2372, (q15_t)0xc6b9,\n    (q15_t)0x2367, (q15_t)0xc6bf, (q15_t)0x235b, (q15_t)0xc6c5, (q15_t)0x2350, (q15_t)0xc6ca, (q15_t)0x2345, (q15_t)0xc6d0,\n    (q15_t)0x233a, (q15_t)0xc6d5, (q15_t)0x232e, (q15_t)0xc6db, (q15_t)0x2323, (q15_t)0xc6e1, (q15_t)0x2318, (q15_t)0xc6e6,\n    (q15_t)0x230d, (q15_t)0xc6ec, (q15_t)0x2301, (q15_t)0xc6f2, (q15_t)0x22f6, (q15_t)0xc6f7, (q15_t)0x22eb, (q15_t)0xc6fd,\n    (q15_t)0x22e0, (q15_t)0xc703, (q15_t)0x22d5, (q15_t)0xc709, (q15_t)0x22ca, (q15_t)0xc70e, (q15_t)0x22be, (q15_t)0xc714,\n    (q15_t)0x22b3, (q15_t)0xc71a, (q15_t)0x22a8, (q15_t)0xc720, (q15_t)0x229d, (q15_t)0xc725, (q15_t)0x2292, (q15_t)0xc72b,\n    (q15_t)0x2287, (q15_t)0xc731, (q15_t)0x227b, (q15_t)0xc737, (q15_t)0x2270, (q15_t)0xc73d, (q15_t)0x2265, (q15_t)0xc742,\n    (q15_t)0x225a, (q15_t)0xc748, (q15_t)0x224f, (q15_t)0xc74e, (q15_t)0x2244, (q15_t)0xc754, (q15_t)0x2239, (q15_t)0xc75a,\n    (q15_t)0x222d, (q15_t)0xc75f, (q15_t)0x2222, (q15_t)0xc765, (q15_t)0x2217, (q15_t)0xc76b, (q15_t)0x220c, (q15_t)0xc771,\n    (q15_t)0x2201, (q15_t)0xc777, (q15_t)0x21f6, (q15_t)0xc77d, (q15_t)0x21eb, (q15_t)0xc783, (q15_t)0x21e0, (q15_t)0xc789,\n    (q15_t)0x21d5, (q15_t)0xc78f, (q15_t)0x21ca, (q15_t)0xc795, (q15_t)0x21be, (q15_t)0xc79a, (q15_t)0x21b3, (q15_t)0xc7a0,\n    (q15_t)0x21a8, (q15_t)0xc7a6, (q15_t)0x219d, (q15_t)0xc7ac, (q15_t)0x2192, (q15_t)0xc7b2, (q15_t)0x2187, (q15_t)0xc7b8,\n    (q15_t)0x217c, (q15_t)0xc7be, (q15_t)0x2171, (q15_t)0xc7c4, (q15_t)0x2166, (q15_t)0xc7ca, (q15_t)0x215b, (q15_t)0xc7d0,\n    (q15_t)0x2150, (q15_t)0xc7d6, (q15_t)0x2145, (q15_t)0xc7dc, (q15_t)0x213a, (q15_t)0xc7e2, (q15_t)0x212f, (q15_t)0xc7e8,\n    (q15_t)0x2124, (q15_t)0xc7ee, (q15_t)0x2119, (q15_t)0xc7f5, (q15_t)0x210e, (q15_t)0xc7fb, (q15_t)0x2103, (q15_t)0xc801,\n    (q15_t)0x20f8, (q15_t)0xc807, (q15_t)0x20ed, (q15_t)0xc80d, (q15_t)0x20e2, (q15_t)0xc813, (q15_t)0x20d7, (q15_t)0xc819,\n    (q15_t)0x20cc, (q15_t)0xc81f, (q15_t)0x20c1, (q15_t)0xc825, (q15_t)0x20b6, (q15_t)0xc82b, (q15_t)0x20ab, (q15_t)0xc832,\n    (q15_t)0x20a0, (q15_t)0xc838, (q15_t)0x2095, (q15_t)0xc83e, (q15_t)0x208a, (q15_t)0xc844, (q15_t)0x207f, (q15_t)0xc84a,\n    (q15_t)0x2074, (q15_t)0xc850, (q15_t)0x2069, (q15_t)0xc857, (q15_t)0x205e, (q15_t)0xc85d, (q15_t)0x2054, (q15_t)0xc863,\n    (q15_t)0x2049, (q15_t)0xc869, (q15_t)0x203e, (q15_t)0xc870, (q15_t)0x2033, (q15_t)0xc876, (q15_t)0x2028, (q15_t)0xc87c,\n    (q15_t)0x201d, (q15_t)0xc882, (q15_t)0x2012, (q15_t)0xc889, (q15_t)0x2007, (q15_t)0xc88f, (q15_t)0x1ffc, (q15_t)0xc895,\n    (q15_t)0x1ff1, (q15_t)0xc89b, (q15_t)0x1fe7, (q15_t)0xc8a2, (q15_t)0x1fdc, (q15_t)0xc8a8, (q15_t)0x1fd1, (q15_t)0xc8ae,\n    (q15_t)0x1fc6, (q15_t)0xc8b5, (q15_t)0x1fbb, (q15_t)0xc8bb, (q15_t)0x1fb0, (q15_t)0xc8c1, (q15_t)0x1fa5, (q15_t)0xc8c8,\n    (q15_t)0x1f9b, (q15_t)0xc8ce, (q15_t)0x1f90, (q15_t)0xc8d4, (q15_t)0x1f85, (q15_t)0xc8db, (q15_t)0x1f7a, (q15_t)0xc8e1,\n    (q15_t)0x1f6f, (q15_t)0xc8e8, (q15_t)0x1f65, (q15_t)0xc8ee, (q15_t)0x1f5a, (q15_t)0xc8f4, (q15_t)0x1f4f, (q15_t)0xc8fb,\n    (q15_t)0x1f44, (q15_t)0xc901, (q15_t)0x1f39, (q15_t)0xc908, (q15_t)0x1f2f, (q15_t)0xc90e, (q15_t)0x1f24, (q15_t)0xc915,\n    (q15_t)0x1f19, (q15_t)0xc91b, (q15_t)0x1f0e, (q15_t)0xc921, (q15_t)0x1f03, (q15_t)0xc928, (q15_t)0x1ef9, (q15_t)0xc92e,\n    (q15_t)0x1eee, (q15_t)0xc935, (q15_t)0x1ee3, (q15_t)0xc93b, (q15_t)0x1ed8, (q15_t)0xc942, (q15_t)0x1ece, (q15_t)0xc948,\n    (q15_t)0x1ec3, (q15_t)0xc94f, (q15_t)0x1eb8, (q15_t)0xc955, (q15_t)0x1ead, (q15_t)0xc95c, (q15_t)0x1ea3, (q15_t)0xc963,\n    (q15_t)0x1e98, (q15_t)0xc969, (q15_t)0x1e8d, (q15_t)0xc970, (q15_t)0x1e83, (q15_t)0xc976, (q15_t)0x1e78, (q15_t)0xc97d,\n    (q15_t)0x1e6d, (q15_t)0xc983, (q15_t)0x1e62, (q15_t)0xc98a, (q15_t)0x1e58, (q15_t)0xc991, (q15_t)0x1e4d, (q15_t)0xc997,\n    (q15_t)0x1e42, (q15_t)0xc99e, (q15_t)0x1e38, (q15_t)0xc9a4, (q15_t)0x1e2d, (q15_t)0xc9ab, (q15_t)0x1e22, (q15_t)0xc9b2,\n    (q15_t)0x1e18, (q15_t)0xc9b8, (q15_t)0x1e0d, (q15_t)0xc9bf, (q15_t)0x1e02, (q15_t)0xc9c6, (q15_t)0x1df8, (q15_t)0xc9cc,\n    (q15_t)0x1ded, (q15_t)0xc9d3, (q15_t)0x1de2, (q15_t)0xc9da, (q15_t)0x1dd8, (q15_t)0xc9e0, (q15_t)0x1dcd, (q15_t)0xc9e7,\n    (q15_t)0x1dc3, (q15_t)0xc9ee, (q15_t)0x1db8, (q15_t)0xc9f5, (q15_t)0x1dad, (q15_t)0xc9fb, (q15_t)0x1da3, (q15_t)0xca02,\n    (q15_t)0x1d98, (q15_t)0xca09, (q15_t)0x1d8e, (q15_t)0xca10, (q15_t)0x1d83, (q15_t)0xca16, (q15_t)0x1d78, (q15_t)0xca1d,\n    (q15_t)0x1d6e, (q15_t)0xca24, (q15_t)0x1d63, (q15_t)0xca2b, (q15_t)0x1d59, (q15_t)0xca32, (q15_t)0x1d4e, (q15_t)0xca38,\n    (q15_t)0x1d44, (q15_t)0xca3f, (q15_t)0x1d39, (q15_t)0xca46, (q15_t)0x1d2e, (q15_t)0xca4d, (q15_t)0x1d24, (q15_t)0xca54,\n    (q15_t)0x1d19, (q15_t)0xca5b, (q15_t)0x1d0f, (q15_t)0xca61, (q15_t)0x1d04, (q15_t)0xca68, (q15_t)0x1cfa, (q15_t)0xca6f,\n    (q15_t)0x1cef, (q15_t)0xca76, (q15_t)0x1ce5, (q15_t)0xca7d, (q15_t)0x1cda, (q15_t)0xca84, (q15_t)0x1cd0, (q15_t)0xca8b,\n    (q15_t)0x1cc5, (q15_t)0xca92, (q15_t)0x1cbb, (q15_t)0xca99, (q15_t)0x1cb0, (q15_t)0xca9f, (q15_t)0x1ca6, (q15_t)0xcaa6,\n    (q15_t)0x1c9b, (q15_t)0xcaad, (q15_t)0x1c91, (q15_t)0xcab4, (q15_t)0x1c86, (q15_t)0xcabb, (q15_t)0x1c7c, (q15_t)0xcac2,\n    (q15_t)0x1c72, (q15_t)0xcac9, (q15_t)0x1c67, (q15_t)0xcad0, (q15_t)0x1c5d, (q15_t)0xcad7, (q15_t)0x1c52, (q15_t)0xcade,\n    (q15_t)0x1c48, (q15_t)0xcae5, (q15_t)0x1c3d, (q15_t)0xcaec, (q15_t)0x1c33, (q15_t)0xcaf3, (q15_t)0x1c29, (q15_t)0xcafa,\n    (q15_t)0x1c1e, (q15_t)0xcb01, (q15_t)0x1c14, (q15_t)0xcb08, (q15_t)0x1c09, (q15_t)0xcb0f, (q15_t)0x1bff, (q15_t)0xcb16,\n    (q15_t)0x1bf5, (q15_t)0xcb1e, (q15_t)0x1bea, (q15_t)0xcb25, (q15_t)0x1be0, (q15_t)0xcb2c, (q15_t)0x1bd5, (q15_t)0xcb33,\n    (q15_t)0x1bcb, (q15_t)0xcb3a, (q15_t)0x1bc1, (q15_t)0xcb41, (q15_t)0x1bb6, (q15_t)0xcb48, (q15_t)0x1bac, (q15_t)0xcb4f,\n    (q15_t)0x1ba2, (q15_t)0xcb56, (q15_t)0x1b97, (q15_t)0xcb5e, (q15_t)0x1b8d, (q15_t)0xcb65, (q15_t)0x1b83, (q15_t)0xcb6c,\n    (q15_t)0x1b78, (q15_t)0xcb73, (q15_t)0x1b6e, (q15_t)0xcb7a, (q15_t)0x1b64, (q15_t)0xcb81, (q15_t)0x1b59, (q15_t)0xcb89,\n    (q15_t)0x1b4f, (q15_t)0xcb90, (q15_t)0x1b45, (q15_t)0xcb97, (q15_t)0x1b3b, (q15_t)0xcb9e, (q15_t)0x1b30, (q15_t)0xcba5,\n    (q15_t)0x1b26, (q15_t)0xcbad, (q15_t)0x1b1c, (q15_t)0xcbb4, (q15_t)0x1b11, (q15_t)0xcbbb, (q15_t)0x1b07, (q15_t)0xcbc2,\n    (q15_t)0x1afd, (q15_t)0xcbca, (q15_t)0x1af3, (q15_t)0xcbd1, (q15_t)0x1ae8, (q15_t)0xcbd8, (q15_t)0x1ade, (q15_t)0xcbe0,\n    (q15_t)0x1ad4, (q15_t)0xcbe7, (q15_t)0x1aca, (q15_t)0xcbee, (q15_t)0x1abf, (q15_t)0xcbf5, (q15_t)0x1ab5, (q15_t)0xcbfd,\n    (q15_t)0x1aab, (q15_t)0xcc04, (q15_t)0x1aa1, (q15_t)0xcc0b, (q15_t)0x1a97, (q15_t)0xcc13, (q15_t)0x1a8c, (q15_t)0xcc1a,\n    (q15_t)0x1a82, (q15_t)0xcc21, (q15_t)0x1a78, (q15_t)0xcc29, (q15_t)0x1a6e, (q15_t)0xcc30, (q15_t)0x1a64, (q15_t)0xcc38,\n    (q15_t)0x1a5a, (q15_t)0xcc3f, (q15_t)0x1a4f, (q15_t)0xcc46, (q15_t)0x1a45, (q15_t)0xcc4e, (q15_t)0x1a3b, (q15_t)0xcc55,\n    (q15_t)0x1a31, (q15_t)0xcc5d, (q15_t)0x1a27, (q15_t)0xcc64, (q15_t)0x1a1d, (q15_t)0xcc6b, (q15_t)0x1a13, (q15_t)0xcc73,\n    (q15_t)0x1a08, (q15_t)0xcc7a, (q15_t)0x19fe, (q15_t)0xcc82, (q15_t)0x19f4, (q15_t)0xcc89, (q15_t)0x19ea, (q15_t)0xcc91,\n    (q15_t)0x19e0, (q15_t)0xcc98, (q15_t)0x19d6, (q15_t)0xcca0, (q15_t)0x19cc, (q15_t)0xcca7, (q15_t)0x19c2, (q15_t)0xccaf,\n    (q15_t)0x19b8, (q15_t)0xccb6, (q15_t)0x19ae, (q15_t)0xccbe, (q15_t)0x19a4, (q15_t)0xccc5, (q15_t)0x199a, (q15_t)0xcccd,\n    (q15_t)0x198f, (q15_t)0xccd4, (q15_t)0x1985, (q15_t)0xccdc, (q15_t)0x197b, (q15_t)0xcce3, (q15_t)0x1971, (q15_t)0xcceb,\n    (q15_t)0x1967, (q15_t)0xccf3, (q15_t)0x195d, (q15_t)0xccfa, (q15_t)0x1953, (q15_t)0xcd02, (q15_t)0x1949, (q15_t)0xcd09,\n    (q15_t)0x193f, (q15_t)0xcd11, (q15_t)0x1935, (q15_t)0xcd19, (q15_t)0x192b, (q15_t)0xcd20, (q15_t)0x1921, (q15_t)0xcd28,\n    (q15_t)0x1917, (q15_t)0xcd30, (q15_t)0x190d, (q15_t)0xcd37, (q15_t)0x1903, (q15_t)0xcd3f, (q15_t)0x18f9, (q15_t)0xcd46,\n    (q15_t)0x18ef, (q15_t)0xcd4e, (q15_t)0x18e6, (q15_t)0xcd56, (q15_t)0x18dc, (q15_t)0xcd5d, (q15_t)0x18d2, (q15_t)0xcd65,\n    (q15_t)0x18c8, (q15_t)0xcd6d, (q15_t)0x18be, (q15_t)0xcd75, (q15_t)0x18b4, (q15_t)0xcd7c, (q15_t)0x18aa, (q15_t)0xcd84,\n    (q15_t)0x18a0, (q15_t)0xcd8c, (q15_t)0x1896, (q15_t)0xcd93, (q15_t)0x188c, (q15_t)0xcd9b, (q15_t)0x1882, (q15_t)0xcda3,\n    (q15_t)0x1878, (q15_t)0xcdab, (q15_t)0x186f, (q15_t)0xcdb2, (q15_t)0x1865, (q15_t)0xcdba, (q15_t)0x185b, (q15_t)0xcdc2,\n    (q15_t)0x1851, (q15_t)0xcdca, (q15_t)0x1847, (q15_t)0xcdd2, (q15_t)0x183d, (q15_t)0xcdd9, (q15_t)0x1833, (q15_t)0xcde1,\n    (q15_t)0x182a, (q15_t)0xcde9, (q15_t)0x1820, (q15_t)0xcdf1, (q15_t)0x1816, (q15_t)0xcdf9, (q15_t)0x180c, (q15_t)0xce01,\n    (q15_t)0x1802, (q15_t)0xce08, (q15_t)0x17f8, (q15_t)0xce10, (q15_t)0x17ef, (q15_t)0xce18, (q15_t)0x17e5, (q15_t)0xce20,\n    (q15_t)0x17db, (q15_t)0xce28, (q15_t)0x17d1, (q15_t)0xce30, (q15_t)0x17c8, (q15_t)0xce38, (q15_t)0x17be, (q15_t)0xce40,\n    (q15_t)0x17b4, (q15_t)0xce47, (q15_t)0x17aa, (q15_t)0xce4f, (q15_t)0x17a0, (q15_t)0xce57, (q15_t)0x1797, (q15_t)0xce5f,\n    (q15_t)0x178d, (q15_t)0xce67, (q15_t)0x1783, (q15_t)0xce6f, (q15_t)0x177a, (q15_t)0xce77, (q15_t)0x1770, (q15_t)0xce7f,\n    (q15_t)0x1766, (q15_t)0xce87, (q15_t)0x175c, (q15_t)0xce8f, (q15_t)0x1753, (q15_t)0xce97, (q15_t)0x1749, (q15_t)0xce9f,\n    (q15_t)0x173f, (q15_t)0xcea7, (q15_t)0x1736, (q15_t)0xceaf, (q15_t)0x172c, (q15_t)0xceb7, (q15_t)0x1722, (q15_t)0xcebf,\n    (q15_t)0x1719, (q15_t)0xcec7, (q15_t)0x170f, (q15_t)0xcecf, (q15_t)0x1705, (q15_t)0xced7, (q15_t)0x16fc, (q15_t)0xcedf,\n    (q15_t)0x16f2, (q15_t)0xcee7, (q15_t)0x16e8, (q15_t)0xceef, (q15_t)0x16df, (q15_t)0xcef7, (q15_t)0x16d5, (q15_t)0xceff,\n    (q15_t)0x16cb, (q15_t)0xcf07, (q15_t)0x16c2, (q15_t)0xcf10, (q15_t)0x16b8, (q15_t)0xcf18, (q15_t)0x16af, (q15_t)0xcf20,\n    (q15_t)0x16a5, (q15_t)0xcf28, (q15_t)0x169b, (q15_t)0xcf30, (q15_t)0x1692, (q15_t)0xcf38, (q15_t)0x1688, (q15_t)0xcf40,\n    (q15_t)0x167f, (q15_t)0xcf48, (q15_t)0x1675, (q15_t)0xcf51, (q15_t)0x166c, (q15_t)0xcf59, (q15_t)0x1662, (q15_t)0xcf61,\n    (q15_t)0x1659, (q15_t)0xcf69, (q15_t)0x164f, (q15_t)0xcf71, (q15_t)0x1645, (q15_t)0xcf79, (q15_t)0x163c, (q15_t)0xcf82,\n    (q15_t)0x1632, (q15_t)0xcf8a, (q15_t)0x1629, (q15_t)0xcf92, (q15_t)0x161f, (q15_t)0xcf9a, (q15_t)0x1616, (q15_t)0xcfa3,\n    (q15_t)0x160c, (q15_t)0xcfab, (q15_t)0x1603, (q15_t)0xcfb3, (q15_t)0x15f9, (q15_t)0xcfbb, (q15_t)0x15f0, (q15_t)0xcfc4,\n    (q15_t)0x15e6, (q15_t)0xcfcc, (q15_t)0x15dd, (q15_t)0xcfd4, (q15_t)0x15d4, (q15_t)0xcfdc, (q15_t)0x15ca, (q15_t)0xcfe5,\n    (q15_t)0x15c1, (q15_t)0xcfed, (q15_t)0x15b7, (q15_t)0xcff5, (q15_t)0x15ae, (q15_t)0xcffe, (q15_t)0x15a4, (q15_t)0xd006,\n    (q15_t)0x159b, (q15_t)0xd00e, (q15_t)0x1592, (q15_t)0xd016, (q15_t)0x1588, (q15_t)0xd01f, (q15_t)0x157f, (q15_t)0xd027,\n    (q15_t)0x1575, (q15_t)0xd030, (q15_t)0x156c, (q15_t)0xd038, (q15_t)0x1563, (q15_t)0xd040, (q15_t)0x1559, (q15_t)0xd049,\n    (q15_t)0x1550, (q15_t)0xd051, (q15_t)0x1547, (q15_t)0xd059, (q15_t)0x153d, (q15_t)0xd062, (q15_t)0x1534, (q15_t)0xd06a,\n    (q15_t)0x152a, (q15_t)0xd073, (q15_t)0x1521, (q15_t)0xd07b, (q15_t)0x1518, (q15_t)0xd083, (q15_t)0x150e, (q15_t)0xd08c,\n    (q15_t)0x1505, (q15_t)0xd094, (q15_t)0x14fc, (q15_t)0xd09d, (q15_t)0x14f3, (q15_t)0xd0a5, (q15_t)0x14e9, (q15_t)0xd0ae,\n    (q15_t)0x14e0, (q15_t)0xd0b6, (q15_t)0x14d7, (q15_t)0xd0bf, (q15_t)0x14cd, (q15_t)0xd0c7, (q15_t)0x14c4, (q15_t)0xd0d0,\n    (q15_t)0x14bb, (q15_t)0xd0d8, (q15_t)0x14b2, (q15_t)0xd0e0, (q15_t)0x14a8, (q15_t)0xd0e9, (q15_t)0x149f, (q15_t)0xd0f2,\n    (q15_t)0x1496, (q15_t)0xd0fa, (q15_t)0x148d, (q15_t)0xd103, (q15_t)0x1483, (q15_t)0xd10b, (q15_t)0x147a, (q15_t)0xd114,\n    (q15_t)0x1471, (q15_t)0xd11c, (q15_t)0x1468, (q15_t)0xd125, (q15_t)0x145f, (q15_t)0xd12d, (q15_t)0x1455, (q15_t)0xd136,\n    (q15_t)0x144c, (q15_t)0xd13e, (q15_t)0x1443, (q15_t)0xd147, (q15_t)0x143a, (q15_t)0xd150, (q15_t)0x1431, (q15_t)0xd158,\n    (q15_t)0x1428, (q15_t)0xd161, (q15_t)0x141e, (q15_t)0xd169, (q15_t)0x1415, (q15_t)0xd172, (q15_t)0x140c, (q15_t)0xd17b,\n    (q15_t)0x1403, (q15_t)0xd183, (q15_t)0x13fa, (q15_t)0xd18c, (q15_t)0x13f1, (q15_t)0xd195, (q15_t)0x13e8, (q15_t)0xd19d,\n    (q15_t)0x13df, (q15_t)0xd1a6, (q15_t)0x13d5, (q15_t)0xd1af, (q15_t)0x13cc, (q15_t)0xd1b7, (q15_t)0x13c3, (q15_t)0xd1c0,\n    (q15_t)0x13ba, (q15_t)0xd1c9, (q15_t)0x13b1, (q15_t)0xd1d1, (q15_t)0x13a8, (q15_t)0xd1da, (q15_t)0x139f, (q15_t)0xd1e3,\n    (q15_t)0x1396, (q15_t)0xd1eb, (q15_t)0x138d, (q15_t)0xd1f4, (q15_t)0x1384, (q15_t)0xd1fd, (q15_t)0x137b, (q15_t)0xd206,\n    (q15_t)0x1372, (q15_t)0xd20e, (q15_t)0x1369, (q15_t)0xd217, (q15_t)0x1360, (q15_t)0xd220, (q15_t)0x1357, (q15_t)0xd229,\n    (q15_t)0x134e, (q15_t)0xd231, (q15_t)0x1345, (q15_t)0xd23a, (q15_t)0x133c, (q15_t)0xd243, (q15_t)0x1333, (q15_t)0xd24c,\n    (q15_t)0x132a, (q15_t)0xd255, (q15_t)0x1321, (q15_t)0xd25d, (q15_t)0x1318, (q15_t)0xd266, (q15_t)0x130f, (q15_t)0xd26f,\n    (q15_t)0x1306, (q15_t)0xd278, (q15_t)0x12fd, (q15_t)0xd281, (q15_t)0x12f4, (q15_t)0xd28a, (q15_t)0x12eb, (q15_t)0xd292,\n    (q15_t)0x12e2, (q15_t)0xd29b, (q15_t)0x12d9, (q15_t)0xd2a4, (q15_t)0x12d1, (q15_t)0xd2ad, (q15_t)0x12c8, (q15_t)0xd2b6,\n    (q15_t)0x12bf, (q15_t)0xd2bf, (q15_t)0x12b6, (q15_t)0xd2c8, (q15_t)0x12ad, (q15_t)0xd2d1, (q15_t)0x12a4, (q15_t)0xd2d9,\n    (q15_t)0x129b, (q15_t)0xd2e2, (q15_t)0x1292, (q15_t)0xd2eb, (q15_t)0x128a, (q15_t)0xd2f4, (q15_t)0x1281, (q15_t)0xd2fd,\n    (q15_t)0x1278, (q15_t)0xd306, (q15_t)0x126f, (q15_t)0xd30f, (q15_t)0x1266, (q15_t)0xd318, (q15_t)0x125d, (q15_t)0xd321,\n    (q15_t)0x1255, (q15_t)0xd32a, (q15_t)0x124c, (q15_t)0xd333, (q15_t)0x1243, (q15_t)0xd33c, (q15_t)0x123a, (q15_t)0xd345,\n    (q15_t)0x1231, (q15_t)0xd34e, (q15_t)0x1229, (q15_t)0xd357, (q15_t)0x1220, (q15_t)0xd360, (q15_t)0x1217, (q15_t)0xd369,\n    (q15_t)0x120e, (q15_t)0xd372, (q15_t)0x1206, (q15_t)0xd37b, (q15_t)0x11fd, (q15_t)0xd384, (q15_t)0x11f4, (q15_t)0xd38d,\n    (q15_t)0x11eb, (q15_t)0xd396, (q15_t)0x11e3, (q15_t)0xd39f, (q15_t)0x11da, (q15_t)0xd3a8, (q15_t)0x11d1, (q15_t)0xd3b1,\n    (q15_t)0x11c9, (q15_t)0xd3ba, (q15_t)0x11c0, (q15_t)0xd3c3, (q15_t)0x11b7, (q15_t)0xd3cc, (q15_t)0x11af, (q15_t)0xd3d5,\n    (q15_t)0x11a6, (q15_t)0xd3df, (q15_t)0x119d, (q15_t)0xd3e8, (q15_t)0x1195, (q15_t)0xd3f1, (q15_t)0x118c, (q15_t)0xd3fa,\n    (q15_t)0x1183, (q15_t)0xd403, (q15_t)0x117b, (q15_t)0xd40c, (q15_t)0x1172, (q15_t)0xd415, (q15_t)0x1169, (q15_t)0xd41e,\n    (q15_t)0x1161, (q15_t)0xd428, (q15_t)0x1158, (q15_t)0xd431, (q15_t)0x1150, (q15_t)0xd43a, (q15_t)0x1147, (q15_t)0xd443,\n    (q15_t)0x113e, (q15_t)0xd44c, (q15_t)0x1136, (q15_t)0xd455, (q15_t)0x112d, (q15_t)0xd45f, (q15_t)0x1125, (q15_t)0xd468,\n    (q15_t)0x111c, (q15_t)0xd471, (q15_t)0x1114, (q15_t)0xd47a, (q15_t)0x110b, (q15_t)0xd483, (q15_t)0x1103, (q15_t)0xd48d,\n    (q15_t)0x10fa, (q15_t)0xd496, (q15_t)0x10f2, (q15_t)0xd49f, (q15_t)0x10e9, (q15_t)0xd4a8, (q15_t)0x10e0, (q15_t)0xd4b2,\n    (q15_t)0x10d8, (q15_t)0xd4bb, (q15_t)0x10d0, (q15_t)0xd4c4, (q15_t)0x10c7, (q15_t)0xd4cd, (q15_t)0x10bf, (q15_t)0xd4d7,\n    (q15_t)0x10b6, (q15_t)0xd4e0, (q15_t)0x10ae, (q15_t)0xd4e9, (q15_t)0x10a5, (q15_t)0xd4f3, (q15_t)0x109d, (q15_t)0xd4fc,\n    (q15_t)0x1094, (q15_t)0xd505, (q15_t)0x108c, (q15_t)0xd50e, (q15_t)0x1083, (q15_t)0xd518, (q15_t)0x107b, (q15_t)0xd521,\n    (q15_t)0x1073, (q15_t)0xd52a, (q15_t)0x106a, (q15_t)0xd534, (q15_t)0x1062, (q15_t)0xd53d, (q15_t)0x1059, (q15_t)0xd547,\n    (q15_t)0x1051, (q15_t)0xd550, (q15_t)0x1049, (q15_t)0xd559, (q15_t)0x1040, (q15_t)0xd563, (q15_t)0x1038, (q15_t)0xd56c,\n    (q15_t)0x1030, (q15_t)0xd575, (q15_t)0x1027, (q15_t)0xd57f, (q15_t)0x101f, (q15_t)0xd588, (q15_t)0x1016, (q15_t)0xd592,\n    (q15_t)0x100e, (q15_t)0xd59b, (q15_t)0x1006, (q15_t)0xd5a4, (q15_t)0xffe, (q15_t)0xd5ae, (q15_t)0xff5, (q15_t)0xd5b7,\n    (q15_t)0xfed, (q15_t)0xd5c1, (q15_t)0xfe5, (q15_t)0xd5ca, (q15_t)0xfdc, (q15_t)0xd5d4, (q15_t)0xfd4, (q15_t)0xd5dd,\n    (q15_t)0xfcc, (q15_t)0xd5e6, (q15_t)0xfc4, (q15_t)0xd5f0, (q15_t)0xfbb, (q15_t)0xd5f9, (q15_t)0xfb3, (q15_t)0xd603,\n    (q15_t)0xfab, (q15_t)0xd60c, (q15_t)0xfa3, (q15_t)0xd616, (q15_t)0xf9a, (q15_t)0xd61f, (q15_t)0xf92, (q15_t)0xd629,\n    (q15_t)0xf8a, (q15_t)0xd632, (q15_t)0xf82, (q15_t)0xd63c, (q15_t)0xf79, (q15_t)0xd645, (q15_t)0xf71, (q15_t)0xd64f,\n    (q15_t)0xf69, (q15_t)0xd659, (q15_t)0xf61, (q15_t)0xd662, (q15_t)0xf59, (q15_t)0xd66c, (q15_t)0xf51, (q15_t)0xd675,\n    (q15_t)0xf48, (q15_t)0xd67f, (q15_t)0xf40, (q15_t)0xd688, (q15_t)0xf38, (q15_t)0xd692, (q15_t)0xf30, (q15_t)0xd69b,\n    (q15_t)0xf28, (q15_t)0xd6a5, (q15_t)0xf20, (q15_t)0xd6af, (q15_t)0xf18, (q15_t)0xd6b8, (q15_t)0xf10, (q15_t)0xd6c2,\n    (q15_t)0xf07, (q15_t)0xd6cb, (q15_t)0xeff, (q15_t)0xd6d5, (q15_t)0xef7, (q15_t)0xd6df, (q15_t)0xeef, (q15_t)0xd6e8,\n    (q15_t)0xee7, (q15_t)0xd6f2, (q15_t)0xedf, (q15_t)0xd6fc, (q15_t)0xed7, (q15_t)0xd705, (q15_t)0xecf, (q15_t)0xd70f,\n    (q15_t)0xec7, (q15_t)0xd719, (q15_t)0xebf, (q15_t)0xd722, (q15_t)0xeb7, (q15_t)0xd72c, (q15_t)0xeaf, (q15_t)0xd736,\n    (q15_t)0xea7, (q15_t)0xd73f, (q15_t)0xe9f, (q15_t)0xd749, (q15_t)0xe97, (q15_t)0xd753, (q15_t)0xe8f, (q15_t)0xd75c,\n    (q15_t)0xe87, (q15_t)0xd766, (q15_t)0xe7f, (q15_t)0xd770, (q15_t)0xe77, (q15_t)0xd77a, (q15_t)0xe6f, (q15_t)0xd783,\n    (q15_t)0xe67, (q15_t)0xd78d, (q15_t)0xe5f, (q15_t)0xd797, (q15_t)0xe57, (q15_t)0xd7a0, (q15_t)0xe4f, (q15_t)0xd7aa,\n    (q15_t)0xe47, (q15_t)0xd7b4, (q15_t)0xe40, (q15_t)0xd7be, (q15_t)0xe38, (q15_t)0xd7c8, (q15_t)0xe30, (q15_t)0xd7d1,\n    (q15_t)0xe28, (q15_t)0xd7db, (q15_t)0xe20, (q15_t)0xd7e5, (q15_t)0xe18, (q15_t)0xd7ef, (q15_t)0xe10, (q15_t)0xd7f8,\n    (q15_t)0xe08, (q15_t)0xd802, (q15_t)0xe01, (q15_t)0xd80c, (q15_t)0xdf9, (q15_t)0xd816, (q15_t)0xdf1, (q15_t)0xd820,\n    (q15_t)0xde9, (q15_t)0xd82a, (q15_t)0xde1, (q15_t)0xd833, (q15_t)0xdd9, (q15_t)0xd83d, (q15_t)0xdd2, (q15_t)0xd847,\n    (q15_t)0xdca, (q15_t)0xd851, (q15_t)0xdc2, (q15_t)0xd85b, (q15_t)0xdba, (q15_t)0xd865, (q15_t)0xdb2, (q15_t)0xd86f,\n    (q15_t)0xdab, (q15_t)0xd878, (q15_t)0xda3, (q15_t)0xd882, (q15_t)0xd9b, (q15_t)0xd88c, (q15_t)0xd93, (q15_t)0xd896,\n    (q15_t)0xd8c, (q15_t)0xd8a0, (q15_t)0xd84, (q15_t)0xd8aa, (q15_t)0xd7c, (q15_t)0xd8b4, (q15_t)0xd75, (q15_t)0xd8be,\n    (q15_t)0xd6d, (q15_t)0xd8c8, (q15_t)0xd65, (q15_t)0xd8d2, (q15_t)0xd5d, (q15_t)0xd8dc, (q15_t)0xd56, (q15_t)0xd8e6,\n    (q15_t)0xd4e, (q15_t)0xd8ef, (q15_t)0xd46, (q15_t)0xd8f9, (q15_t)0xd3f, (q15_t)0xd903, (q15_t)0xd37, (q15_t)0xd90d,\n    (q15_t)0xd30, (q15_t)0xd917, (q15_t)0xd28, (q15_t)0xd921, (q15_t)0xd20, (q15_t)0xd92b, (q15_t)0xd19, (q15_t)0xd935,\n    (q15_t)0xd11, (q15_t)0xd93f, (q15_t)0xd09, (q15_t)0xd949, (q15_t)0xd02, (q15_t)0xd953, (q15_t)0xcfa, (q15_t)0xd95d,\n    (q15_t)0xcf3, (q15_t)0xd967, (q15_t)0xceb, (q15_t)0xd971, (q15_t)0xce3, (q15_t)0xd97b, (q15_t)0xcdc, (q15_t)0xd985,\n    (q15_t)0xcd4, (q15_t)0xd98f, (q15_t)0xccd, (q15_t)0xd99a, (q15_t)0xcc5, (q15_t)0xd9a4, (q15_t)0xcbe, (q15_t)0xd9ae,\n    (q15_t)0xcb6, (q15_t)0xd9b8, (q15_t)0xcaf, (q15_t)0xd9c2, (q15_t)0xca7, (q15_t)0xd9cc, (q15_t)0xca0, (q15_t)0xd9d6,\n    (q15_t)0xc98, (q15_t)0xd9e0, (q15_t)0xc91, (q15_t)0xd9ea, (q15_t)0xc89, (q15_t)0xd9f4, (q15_t)0xc82, (q15_t)0xd9fe,\n    (q15_t)0xc7a, (q15_t)0xda08, (q15_t)0xc73, (q15_t)0xda13, (q15_t)0xc6b, (q15_t)0xda1d, (q15_t)0xc64, (q15_t)0xda27,\n    (q15_t)0xc5d, (q15_t)0xda31, (q15_t)0xc55, (q15_t)0xda3b, (q15_t)0xc4e, (q15_t)0xda45, (q15_t)0xc46, (q15_t)0xda4f,\n    (q15_t)0xc3f, (q15_t)0xda5a, (q15_t)0xc38, (q15_t)0xda64, (q15_t)0xc30, (q15_t)0xda6e, (q15_t)0xc29, (q15_t)0xda78,\n    (q15_t)0xc21, (q15_t)0xda82, (q15_t)0xc1a, (q15_t)0xda8c, (q15_t)0xc13, (q15_t)0xda97, (q15_t)0xc0b, (q15_t)0xdaa1,\n    (q15_t)0xc04, (q15_t)0xdaab, (q15_t)0xbfd, (q15_t)0xdab5, (q15_t)0xbf5, (q15_t)0xdabf, (q15_t)0xbee, (q15_t)0xdaca,\n    (q15_t)0xbe7, (q15_t)0xdad4, (q15_t)0xbe0, (q15_t)0xdade, (q15_t)0xbd8, (q15_t)0xdae8, (q15_t)0xbd1, (q15_t)0xdaf3,\n    (q15_t)0xbca, (q15_t)0xdafd, (q15_t)0xbc2, (q15_t)0xdb07, (q15_t)0xbbb, (q15_t)0xdb11, (q15_t)0xbb4, (q15_t)0xdb1c,\n    (q15_t)0xbad, (q15_t)0xdb26, (q15_t)0xba5, (q15_t)0xdb30, (q15_t)0xb9e, (q15_t)0xdb3b, (q15_t)0xb97, (q15_t)0xdb45,\n    (q15_t)0xb90, (q15_t)0xdb4f, (q15_t)0xb89, (q15_t)0xdb59, (q15_t)0xb81, (q15_t)0xdb64, (q15_t)0xb7a, (q15_t)0xdb6e,\n    (q15_t)0xb73, (q15_t)0xdb78, (q15_t)0xb6c, (q15_t)0xdb83, (q15_t)0xb65, (q15_t)0xdb8d, (q15_t)0xb5e, (q15_t)0xdb97,\n    (q15_t)0xb56, (q15_t)0xdba2, (q15_t)0xb4f, (q15_t)0xdbac, (q15_t)0xb48, (q15_t)0xdbb6, (q15_t)0xb41, (q15_t)0xdbc1,\n    (q15_t)0xb3a, (q15_t)0xdbcb, (q15_t)0xb33, (q15_t)0xdbd5, (q15_t)0xb2c, (q15_t)0xdbe0, (q15_t)0xb25, (q15_t)0xdbea,\n    (q15_t)0xb1e, (q15_t)0xdbf5, (q15_t)0xb16, (q15_t)0xdbff, (q15_t)0xb0f, (q15_t)0xdc09, (q15_t)0xb08, (q15_t)0xdc14,\n    (q15_t)0xb01, (q15_t)0xdc1e, (q15_t)0xafa, (q15_t)0xdc29, (q15_t)0xaf3, (q15_t)0xdc33, (q15_t)0xaec, (q15_t)0xdc3d,\n    (q15_t)0xae5, (q15_t)0xdc48, (q15_t)0xade, (q15_t)0xdc52, (q15_t)0xad7, (q15_t)0xdc5d, (q15_t)0xad0, (q15_t)0xdc67,\n    (q15_t)0xac9, (q15_t)0xdc72, (q15_t)0xac2, (q15_t)0xdc7c, (q15_t)0xabb, (q15_t)0xdc86, (q15_t)0xab4, (q15_t)0xdc91,\n    (q15_t)0xaad, (q15_t)0xdc9b, (q15_t)0xaa6, (q15_t)0xdca6, (q15_t)0xa9f, (q15_t)0xdcb0, (q15_t)0xa99, (q15_t)0xdcbb,\n    (q15_t)0xa92, (q15_t)0xdcc5, (q15_t)0xa8b, (q15_t)0xdcd0, (q15_t)0xa84, (q15_t)0xdcda, (q15_t)0xa7d, (q15_t)0xdce5,\n    (q15_t)0xa76, (q15_t)0xdcef, (q15_t)0xa6f, (q15_t)0xdcfa, (q15_t)0xa68, (q15_t)0xdd04, (q15_t)0xa61, (q15_t)0xdd0f,\n    (q15_t)0xa5b, (q15_t)0xdd19, (q15_t)0xa54, (q15_t)0xdd24, (q15_t)0xa4d, (q15_t)0xdd2e, (q15_t)0xa46, (q15_t)0xdd39,\n    (q15_t)0xa3f, (q15_t)0xdd44, (q15_t)0xa38, (q15_t)0xdd4e, (q15_t)0xa32, (q15_t)0xdd59, (q15_t)0xa2b, (q15_t)0xdd63,\n    (q15_t)0xa24, (q15_t)0xdd6e, (q15_t)0xa1d, (q15_t)0xdd78, (q15_t)0xa16, (q15_t)0xdd83, (q15_t)0xa10, (q15_t)0xdd8e,\n    (q15_t)0xa09, (q15_t)0xdd98, (q15_t)0xa02, (q15_t)0xdda3, (q15_t)0x9fb, (q15_t)0xddad, (q15_t)0x9f5, (q15_t)0xddb8,\n    (q15_t)0x9ee, (q15_t)0xddc3, (q15_t)0x9e7, (q15_t)0xddcd, (q15_t)0x9e0, (q15_t)0xddd8, (q15_t)0x9da, (q15_t)0xdde2,\n    (q15_t)0x9d3, (q15_t)0xdded, (q15_t)0x9cc, (q15_t)0xddf8, (q15_t)0x9c6, (q15_t)0xde02, (q15_t)0x9bf, (q15_t)0xde0d,\n    (q15_t)0x9b8, (q15_t)0xde18, (q15_t)0x9b2, (q15_t)0xde22, (q15_t)0x9ab, (q15_t)0xde2d, (q15_t)0x9a4, (q15_t)0xde38,\n    (q15_t)0x99e, (q15_t)0xde42, (q15_t)0x997, (q15_t)0xde4d, (q15_t)0x991, (q15_t)0xde58, (q15_t)0x98a, (q15_t)0xde62,\n    (q15_t)0x983, (q15_t)0xde6d, (q15_t)0x97d, (q15_t)0xde78, (q15_t)0x976, (q15_t)0xde83, (q15_t)0x970, (q15_t)0xde8d,\n    (q15_t)0x969, (q15_t)0xde98, (q15_t)0x963, (q15_t)0xdea3, (q15_t)0x95c, (q15_t)0xdead, (q15_t)0x955, (q15_t)0xdeb8,\n    (q15_t)0x94f, (q15_t)0xdec3, (q15_t)0x948, (q15_t)0xdece, (q15_t)0x942, (q15_t)0xded8, (q15_t)0x93b, (q15_t)0xdee3,\n    (q15_t)0x935, (q15_t)0xdeee, (q15_t)0x92e, (q15_t)0xdef9, (q15_t)0x928, (q15_t)0xdf03, (q15_t)0x921, (q15_t)0xdf0e,\n    (q15_t)0x91b, (q15_t)0xdf19, (q15_t)0x915, (q15_t)0xdf24, (q15_t)0x90e, (q15_t)0xdf2f, (q15_t)0x908, (q15_t)0xdf39,\n    (q15_t)0x901, (q15_t)0xdf44, (q15_t)0x8fb, (q15_t)0xdf4f, (q15_t)0x8f4, (q15_t)0xdf5a, (q15_t)0x8ee, (q15_t)0xdf65,\n    (q15_t)0x8e8, (q15_t)0xdf6f, (q15_t)0x8e1, (q15_t)0xdf7a, (q15_t)0x8db, (q15_t)0xdf85, (q15_t)0x8d4, (q15_t)0xdf90,\n    (q15_t)0x8ce, (q15_t)0xdf9b, (q15_t)0x8c8, (q15_t)0xdfa5, (q15_t)0x8c1, (q15_t)0xdfb0, (q15_t)0x8bb, (q15_t)0xdfbb,\n    (q15_t)0x8b5, (q15_t)0xdfc6, (q15_t)0x8ae, (q15_t)0xdfd1, (q15_t)0x8a8, (q15_t)0xdfdc, (q15_t)0x8a2, (q15_t)0xdfe7,\n    (q15_t)0x89b, (q15_t)0xdff1, (q15_t)0x895, (q15_t)0xdffc, (q15_t)0x88f, (q15_t)0xe007, (q15_t)0x889, (q15_t)0xe012,\n    (q15_t)0x882, (q15_t)0xe01d, (q15_t)0x87c, (q15_t)0xe028, (q15_t)0x876, (q15_t)0xe033, (q15_t)0x870, (q15_t)0xe03e,\n    (q15_t)0x869, (q15_t)0xe049, (q15_t)0x863, (q15_t)0xe054, (q15_t)0x85d, (q15_t)0xe05e, (q15_t)0x857, (q15_t)0xe069,\n    (q15_t)0x850, (q15_t)0xe074, (q15_t)0x84a, (q15_t)0xe07f, (q15_t)0x844, (q15_t)0xe08a, (q15_t)0x83e, (q15_t)0xe095,\n    (q15_t)0x838, (q15_t)0xe0a0, (q15_t)0x832, (q15_t)0xe0ab, (q15_t)0x82b, (q15_t)0xe0b6, (q15_t)0x825, (q15_t)0xe0c1,\n    (q15_t)0x81f, (q15_t)0xe0cc, (q15_t)0x819, (q15_t)0xe0d7, (q15_t)0x813, (q15_t)0xe0e2, (q15_t)0x80d, (q15_t)0xe0ed,\n    (q15_t)0x807, (q15_t)0xe0f8, (q15_t)0x801, (q15_t)0xe103, (q15_t)0x7fb, (q15_t)0xe10e, (q15_t)0x7f5, (q15_t)0xe119,\n    (q15_t)0x7ee, (q15_t)0xe124, (q15_t)0x7e8, (q15_t)0xe12f, (q15_t)0x7e2, (q15_t)0xe13a, (q15_t)0x7dc, (q15_t)0xe145,\n    (q15_t)0x7d6, (q15_t)0xe150, (q15_t)0x7d0, (q15_t)0xe15b, (q15_t)0x7ca, (q15_t)0xe166, (q15_t)0x7c4, (q15_t)0xe171,\n    (q15_t)0x7be, (q15_t)0xe17c, (q15_t)0x7b8, (q15_t)0xe187, (q15_t)0x7b2, (q15_t)0xe192, (q15_t)0x7ac, (q15_t)0xe19d,\n    (q15_t)0x7a6, (q15_t)0xe1a8, (q15_t)0x7a0, (q15_t)0xe1b3, (q15_t)0x79a, (q15_t)0xe1be, (q15_t)0x795, (q15_t)0xe1ca,\n    (q15_t)0x78f, (q15_t)0xe1d5, (q15_t)0x789, (q15_t)0xe1e0, (q15_t)0x783, (q15_t)0xe1eb, (q15_t)0x77d, (q15_t)0xe1f6,\n    (q15_t)0x777, (q15_t)0xe201, (q15_t)0x771, (q15_t)0xe20c, (q15_t)0x76b, (q15_t)0xe217, (q15_t)0x765, (q15_t)0xe222,\n    (q15_t)0x75f, (q15_t)0xe22d, (q15_t)0x75a, (q15_t)0xe239, (q15_t)0x754, (q15_t)0xe244, (q15_t)0x74e, (q15_t)0xe24f,\n    (q15_t)0x748, (q15_t)0xe25a, (q15_t)0x742, (q15_t)0xe265, (q15_t)0x73d, (q15_t)0xe270, (q15_t)0x737, (q15_t)0xe27b,\n    (q15_t)0x731, (q15_t)0xe287, (q15_t)0x72b, (q15_t)0xe292, (q15_t)0x725, (q15_t)0xe29d, (q15_t)0x720, (q15_t)0xe2a8,\n    (q15_t)0x71a, (q15_t)0xe2b3, (q15_t)0x714, (q15_t)0xe2be, (q15_t)0x70e, (q15_t)0xe2ca, (q15_t)0x709, (q15_t)0xe2d5,\n    (q15_t)0x703, (q15_t)0xe2e0, (q15_t)0x6fd, (q15_t)0xe2eb, (q15_t)0x6f7, (q15_t)0xe2f6, (q15_t)0x6f2, (q15_t)0xe301,\n    (q15_t)0x6ec, (q15_t)0xe30d, (q15_t)0x6e6, (q15_t)0xe318, (q15_t)0x6e1, (q15_t)0xe323, (q15_t)0x6db, (q15_t)0xe32e,\n    (q15_t)0x6d5, (q15_t)0xe33a, (q15_t)0x6d0, (q15_t)0xe345, (q15_t)0x6ca, (q15_t)0xe350, (q15_t)0x6c5, (q15_t)0xe35b,\n    (q15_t)0x6bf, (q15_t)0xe367, (q15_t)0x6b9, (q15_t)0xe372, (q15_t)0x6b4, (q15_t)0xe37d, (q15_t)0x6ae, (q15_t)0xe388,\n    (q15_t)0x6a8, (q15_t)0xe394, (q15_t)0x6a3, (q15_t)0xe39f, (q15_t)0x69d, (q15_t)0xe3aa, (q15_t)0x698, (q15_t)0xe3b5,\n    (q15_t)0x692, (q15_t)0xe3c1, (q15_t)0x68d, (q15_t)0xe3cc, (q15_t)0x687, (q15_t)0xe3d7, (q15_t)0x682, (q15_t)0xe3e2,\n    (q15_t)0x67c, (q15_t)0xe3ee, (q15_t)0x677, (q15_t)0xe3f9, (q15_t)0x671, (q15_t)0xe404, (q15_t)0x66c, (q15_t)0xe410,\n    (q15_t)0x666, (q15_t)0xe41b, (q15_t)0x661, (q15_t)0xe426, (q15_t)0x65b, (q15_t)0xe432, (q15_t)0x656, (q15_t)0xe43d,\n    (q15_t)0x650, (q15_t)0xe448, (q15_t)0x64b, (q15_t)0xe454, (q15_t)0x645, (q15_t)0xe45f, (q15_t)0x640, (q15_t)0xe46a,\n    (q15_t)0x63b, (q15_t)0xe476, (q15_t)0x635, (q15_t)0xe481, (q15_t)0x630, (q15_t)0xe48c, (q15_t)0x62a, (q15_t)0xe498,\n    (q15_t)0x625, (q15_t)0xe4a3, (q15_t)0x620, (q15_t)0xe4ae, (q15_t)0x61a, (q15_t)0xe4ba, (q15_t)0x615, (q15_t)0xe4c5,\n    (q15_t)0x610, (q15_t)0xe4d0, (q15_t)0x60a, (q15_t)0xe4dc, (q15_t)0x605, (q15_t)0xe4e7, (q15_t)0x600, (q15_t)0xe4f3,\n    (q15_t)0x5fa, (q15_t)0xe4fe, (q15_t)0x5f5, (q15_t)0xe509, (q15_t)0x5f0, (q15_t)0xe515, (q15_t)0x5ea, (q15_t)0xe520,\n    (q15_t)0x5e5, (q15_t)0xe52c, (q15_t)0x5e0, (q15_t)0xe537, (q15_t)0x5db, (q15_t)0xe542, (q15_t)0x5d5, (q15_t)0xe54e,\n    (q15_t)0x5d0, (q15_t)0xe559, (q15_t)0x5cb, (q15_t)0xe565, (q15_t)0x5c6, (q15_t)0xe570, (q15_t)0x5c1, (q15_t)0xe57c,\n    (q15_t)0x5bb, (q15_t)0xe587, (q15_t)0x5b6, (q15_t)0xe592, (q15_t)0x5b1, (q15_t)0xe59e, (q15_t)0x5ac, (q15_t)0xe5a9,\n    (q15_t)0x5a7, (q15_t)0xe5b5, (q15_t)0x5a1, (q15_t)0xe5c0, (q15_t)0x59c, (q15_t)0xe5cc, (q15_t)0x597, (q15_t)0xe5d7,\n    (q15_t)0x592, (q15_t)0xe5e3, (q15_t)0x58d, (q15_t)0xe5ee, (q15_t)0x588, (q15_t)0xe5fa, (q15_t)0x583, (q15_t)0xe605,\n    (q15_t)0x57e, (q15_t)0xe611, (q15_t)0x578, (q15_t)0xe61c, (q15_t)0x573, (q15_t)0xe628, (q15_t)0x56e, (q15_t)0xe633,\n    (q15_t)0x569, (q15_t)0xe63f, (q15_t)0x564, (q15_t)0xe64a, (q15_t)0x55f, (q15_t)0xe656, (q15_t)0x55a, (q15_t)0xe661,\n    (q15_t)0x555, (q15_t)0xe66d, (q15_t)0x550, (q15_t)0xe678, (q15_t)0x54b, (q15_t)0xe684, (q15_t)0x546, (q15_t)0xe68f,\n    (q15_t)0x541, (q15_t)0xe69b, (q15_t)0x53c, (q15_t)0xe6a6, (q15_t)0x537, (q15_t)0xe6b2, (q15_t)0x532, (q15_t)0xe6bd,\n    (q15_t)0x52d, (q15_t)0xe6c9, (q15_t)0x528, (q15_t)0xe6d4, (q15_t)0x523, (q15_t)0xe6e0, (q15_t)0x51e, (q15_t)0xe6ec,\n    (q15_t)0x51a, (q15_t)0xe6f7, (q15_t)0x515, (q15_t)0xe703, (q15_t)0x510, (q15_t)0xe70e, (q15_t)0x50b, (q15_t)0xe71a,\n    (q15_t)0x506, (q15_t)0xe725, (q15_t)0x501, (q15_t)0xe731, (q15_t)0x4fc, (q15_t)0xe73d, (q15_t)0x4f7, (q15_t)0xe748,\n    (q15_t)0x4f2, (q15_t)0xe754, (q15_t)0x4ee, (q15_t)0xe75f, (q15_t)0x4e9, (q15_t)0xe76b, (q15_t)0x4e4, (q15_t)0xe777,\n    (q15_t)0x4df, (q15_t)0xe782, (q15_t)0x4da, (q15_t)0xe78e, (q15_t)0x4d6, (q15_t)0xe799, (q15_t)0x4d1, (q15_t)0xe7a5,\n    (q15_t)0x4cc, (q15_t)0xe7b1, (q15_t)0x4c7, (q15_t)0xe7bc, (q15_t)0x4c2, (q15_t)0xe7c8, (q15_t)0x4be, (q15_t)0xe7d3,\n    (q15_t)0x4b9, (q15_t)0xe7df, (q15_t)0x4b4, (q15_t)0xe7eb, (q15_t)0x4b0, (q15_t)0xe7f6, (q15_t)0x4ab, (q15_t)0xe802,\n    (q15_t)0x4a6, (q15_t)0xe80e, (q15_t)0x4a1, (q15_t)0xe819, (q15_t)0x49d, (q15_t)0xe825, (q15_t)0x498, (q15_t)0xe831,\n    (q15_t)0x493, (q15_t)0xe83c, (q15_t)0x48f, (q15_t)0xe848, (q15_t)0x48a, (q15_t)0xe854, (q15_t)0x485, (q15_t)0xe85f,\n    (q15_t)0x481, (q15_t)0xe86b, (q15_t)0x47c, (q15_t)0xe877, (q15_t)0x478, (q15_t)0xe882, (q15_t)0x473, (q15_t)0xe88e,\n    (q15_t)0x46e, (q15_t)0xe89a, (q15_t)0x46a, (q15_t)0xe8a5, (q15_t)0x465, (q15_t)0xe8b1, (q15_t)0x461, (q15_t)0xe8bd,\n    (q15_t)0x45c, (q15_t)0xe8c9, (q15_t)0x457, (q15_t)0xe8d4, (q15_t)0x453, (q15_t)0xe8e0, (q15_t)0x44e, (q15_t)0xe8ec,\n    (q15_t)0x44a, (q15_t)0xe8f7, (q15_t)0x445, (q15_t)0xe903, (q15_t)0x441, (q15_t)0xe90f, (q15_t)0x43c, (q15_t)0xe91b,\n    (q15_t)0x438, (q15_t)0xe926, (q15_t)0x433, (q15_t)0xe932, (q15_t)0x42f, (q15_t)0xe93e, (q15_t)0x42a, (q15_t)0xe94a,\n    (q15_t)0x426, (q15_t)0xe955, (q15_t)0x422, (q15_t)0xe961, (q15_t)0x41d, (q15_t)0xe96d, (q15_t)0x419, (q15_t)0xe979,\n    (q15_t)0x414, (q15_t)0xe984, (q15_t)0x410, (q15_t)0xe990, (q15_t)0x40b, (q15_t)0xe99c, (q15_t)0x407, (q15_t)0xe9a8,\n    (q15_t)0x403, (q15_t)0xe9b4, (q15_t)0x3fe, (q15_t)0xe9bf, (q15_t)0x3fa, (q15_t)0xe9cb, (q15_t)0x3f6, (q15_t)0xe9d7,\n    (q15_t)0x3f1, (q15_t)0xe9e3, (q15_t)0x3ed, (q15_t)0xe9ee, (q15_t)0x3e9, (q15_t)0xe9fa, (q15_t)0x3e4, (q15_t)0xea06,\n    (q15_t)0x3e0, (q15_t)0xea12, (q15_t)0x3dc, (q15_t)0xea1e, (q15_t)0x3d7, (q15_t)0xea29, (q15_t)0x3d3, (q15_t)0xea35,\n    (q15_t)0x3cf, (q15_t)0xea41, (q15_t)0x3ca, (q15_t)0xea4d, (q15_t)0x3c6, (q15_t)0xea59, (q15_t)0x3c2, (q15_t)0xea65,\n    (q15_t)0x3be, (q15_t)0xea70, (q15_t)0x3ba, (q15_t)0xea7c, (q15_t)0x3b5, (q15_t)0xea88, (q15_t)0x3b1, (q15_t)0xea94,\n    (q15_t)0x3ad, (q15_t)0xeaa0, (q15_t)0x3a9, (q15_t)0xeaac, (q15_t)0x3a5, (q15_t)0xeab7, (q15_t)0x3a0, (q15_t)0xeac3,\n    (q15_t)0x39c, (q15_t)0xeacf, (q15_t)0x398, (q15_t)0xeadb, (q15_t)0x394, (q15_t)0xeae7, (q15_t)0x390, (q15_t)0xeaf3,\n    (q15_t)0x38c, (q15_t)0xeaff, (q15_t)0x387, (q15_t)0xeb0a, (q15_t)0x383, (q15_t)0xeb16, (q15_t)0x37f, (q15_t)0xeb22,\n    (q15_t)0x37b, (q15_t)0xeb2e, (q15_t)0x377, (q15_t)0xeb3a, (q15_t)0x373, (q15_t)0xeb46, (q15_t)0x36f, (q15_t)0xeb52,\n    (q15_t)0x36b, (q15_t)0xeb5e, (q15_t)0x367, (q15_t)0xeb6a, (q15_t)0x363, (q15_t)0xeb75, (q15_t)0x35f, (q15_t)0xeb81,\n    (q15_t)0x35b, (q15_t)0xeb8d, (q15_t)0x357, (q15_t)0xeb99, (q15_t)0x353, (q15_t)0xeba5, (q15_t)0x34f, (q15_t)0xebb1,\n    (q15_t)0x34b, (q15_t)0xebbd, (q15_t)0x347, (q15_t)0xebc9, (q15_t)0x343, (q15_t)0xebd5, (q15_t)0x33f, (q15_t)0xebe1,\n    (q15_t)0x33b, (q15_t)0xebed, (q15_t)0x337, (q15_t)0xebf9, (q15_t)0x333, (q15_t)0xec05, (q15_t)0x32f, (q15_t)0xec10,\n    (q15_t)0x32b, (q15_t)0xec1c, (q15_t)0x327, (q15_t)0xec28, (q15_t)0x323, (q15_t)0xec34, (q15_t)0x320, (q15_t)0xec40,\n    (q15_t)0x31c, (q15_t)0xec4c, (q15_t)0x318, (q15_t)0xec58, (q15_t)0x314, (q15_t)0xec64, (q15_t)0x310, (q15_t)0xec70,\n    (q15_t)0x30c, (q15_t)0xec7c, (q15_t)0x308, (q15_t)0xec88, (q15_t)0x305, (q15_t)0xec94, (q15_t)0x301, (q15_t)0xeca0,\n    (q15_t)0x2fd, (q15_t)0xecac, (q15_t)0x2f9, (q15_t)0xecb8, (q15_t)0x2f5, (q15_t)0xecc4, (q15_t)0x2f2, (q15_t)0xecd0,\n    (q15_t)0x2ee, (q15_t)0xecdc, (q15_t)0x2ea, (q15_t)0xece8, (q15_t)0x2e6, (q15_t)0xecf4, (q15_t)0x2e3, (q15_t)0xed00,\n    (q15_t)0x2df, (q15_t)0xed0c, (q15_t)0x2db, (q15_t)0xed18, (q15_t)0x2d8, (q15_t)0xed24, (q15_t)0x2d4, (q15_t)0xed30,\n    (q15_t)0x2d0, (q15_t)0xed3c, (q15_t)0x2cc, (q15_t)0xed48, (q15_t)0x2c9, (q15_t)0xed54, (q15_t)0x2c5, (q15_t)0xed60,\n    (q15_t)0x2c1, (q15_t)0xed6c, (q15_t)0x2be, (q15_t)0xed78, (q15_t)0x2ba, (q15_t)0xed84, (q15_t)0x2b7, (q15_t)0xed90,\n    (q15_t)0x2b3, (q15_t)0xed9c, (q15_t)0x2af, (q15_t)0xeda8, (q15_t)0x2ac, (q15_t)0xedb4, (q15_t)0x2a8, (q15_t)0xedc0,\n    (q15_t)0x2a5, (q15_t)0xedcc, (q15_t)0x2a1, (q15_t)0xedd8, (q15_t)0x29d, (q15_t)0xede4, (q15_t)0x29a, (q15_t)0xedf0,\n    (q15_t)0x296, (q15_t)0xedfc, (q15_t)0x293, (q15_t)0xee09, (q15_t)0x28f, (q15_t)0xee15, (q15_t)0x28c, (q15_t)0xee21,\n    (q15_t)0x288, (q15_t)0xee2d, (q15_t)0x285, (q15_t)0xee39, (q15_t)0x281, (q15_t)0xee45, (q15_t)0x27e, (q15_t)0xee51,\n    (q15_t)0x27a, (q15_t)0xee5d, (q15_t)0x277, (q15_t)0xee69, (q15_t)0x273, (q15_t)0xee75, (q15_t)0x270, (q15_t)0xee81,\n    (q15_t)0x26d, (q15_t)0xee8d, (q15_t)0x269, (q15_t)0xee99, (q15_t)0x266, (q15_t)0xeea6, (q15_t)0x262, (q15_t)0xeeb2,\n    (q15_t)0x25f, (q15_t)0xeebe, (q15_t)0x25c, (q15_t)0xeeca, (q15_t)0x258, (q15_t)0xeed6, (q15_t)0x255, (q15_t)0xeee2,\n    (q15_t)0x251, (q15_t)0xeeee, (q15_t)0x24e, (q15_t)0xeefa, (q15_t)0x24b, (q15_t)0xef06, (q15_t)0x247, (q15_t)0xef13,\n    (q15_t)0x244, (q15_t)0xef1f, (q15_t)0x241, (q15_t)0xef2b, (q15_t)0x23e, (q15_t)0xef37, (q15_t)0x23a, (q15_t)0xef43,\n    (q15_t)0x237, (q15_t)0xef4f, (q15_t)0x234, (q15_t)0xef5b, (q15_t)0x230, (q15_t)0xef67, (q15_t)0x22d, (q15_t)0xef74,\n    (q15_t)0x22a, (q15_t)0xef80, (q15_t)0x227, (q15_t)0xef8c, (q15_t)0x223, (q15_t)0xef98, (q15_t)0x220, (q15_t)0xefa4,\n    (q15_t)0x21d, (q15_t)0xefb0, (q15_t)0x21a, (q15_t)0xefbc, (q15_t)0x217, (q15_t)0xefc9, (q15_t)0x213, (q15_t)0xefd5,\n    (q15_t)0x210, (q15_t)0xefe1, (q15_t)0x20d, (q15_t)0xefed, (q15_t)0x20a, (q15_t)0xeff9, (q15_t)0x207, (q15_t)0xf005,\n    (q15_t)0x204, (q15_t)0xf012, (q15_t)0x201, (q15_t)0xf01e, (q15_t)0x1fd, (q15_t)0xf02a, (q15_t)0x1fa, (q15_t)0xf036,\n    (q15_t)0x1f7, (q15_t)0xf042, (q15_t)0x1f4, (q15_t)0xf04e, (q15_t)0x1f1, (q15_t)0xf05b, (q15_t)0x1ee, (q15_t)0xf067,\n    (q15_t)0x1eb, (q15_t)0xf073, (q15_t)0x1e8, (q15_t)0xf07f, (q15_t)0x1e5, (q15_t)0xf08b, (q15_t)0x1e2, (q15_t)0xf098,\n    (q15_t)0x1df, (q15_t)0xf0a4, (q15_t)0x1dc, (q15_t)0xf0b0, (q15_t)0x1d9, (q15_t)0xf0bc, (q15_t)0x1d6, (q15_t)0xf0c8,\n    (q15_t)0x1d3, (q15_t)0xf0d5, (q15_t)0x1d0, (q15_t)0xf0e1, (q15_t)0x1cd, (q15_t)0xf0ed, (q15_t)0x1ca, (q15_t)0xf0f9,\n    (q15_t)0x1c7, (q15_t)0xf105, (q15_t)0x1c4, (q15_t)0xf112, (q15_t)0x1c1, (q15_t)0xf11e, (q15_t)0x1be, (q15_t)0xf12a,\n    (q15_t)0x1bb, (q15_t)0xf136, (q15_t)0x1b8, (q15_t)0xf143, (q15_t)0x1b6, (q15_t)0xf14f, (q15_t)0x1b3, (q15_t)0xf15b,\n    (q15_t)0x1b0, (q15_t)0xf167, (q15_t)0x1ad, (q15_t)0xf174, (q15_t)0x1aa, (q15_t)0xf180, (q15_t)0x1a7, (q15_t)0xf18c,\n    (q15_t)0x1a4, (q15_t)0xf198, (q15_t)0x1a2, (q15_t)0xf1a4, (q15_t)0x19f, (q15_t)0xf1b1, (q15_t)0x19c, (q15_t)0xf1bd,\n    (q15_t)0x199, (q15_t)0xf1c9, (q15_t)0x196, (q15_t)0xf1d5, (q15_t)0x194, (q15_t)0xf1e2, (q15_t)0x191, (q15_t)0xf1ee,\n    (q15_t)0x18e, (q15_t)0xf1fa, (q15_t)0x18b, (q15_t)0xf207, (q15_t)0x189, (q15_t)0xf213, (q15_t)0x186, (q15_t)0xf21f,\n    (q15_t)0x183, (q15_t)0xf22b, (q15_t)0x180, (q15_t)0xf238, (q15_t)0x17e, (q15_t)0xf244, (q15_t)0x17b, (q15_t)0xf250,\n    (q15_t)0x178, (q15_t)0xf25c, (q15_t)0x176, (q15_t)0xf269, (q15_t)0x173, (q15_t)0xf275, (q15_t)0x170, (q15_t)0xf281,\n    (q15_t)0x16e, (q15_t)0xf28e, (q15_t)0x16b, (q15_t)0xf29a, (q15_t)0x168, (q15_t)0xf2a6, (q15_t)0x166, (q15_t)0xf2b2,\n    (q15_t)0x163, (q15_t)0xf2bf, (q15_t)0x161, (q15_t)0xf2cb, (q15_t)0x15e, (q15_t)0xf2d7, (q15_t)0x15b, (q15_t)0xf2e4,\n    (q15_t)0x159, (q15_t)0xf2f0, (q15_t)0x156, (q15_t)0xf2fc, (q15_t)0x154, (q15_t)0xf308, (q15_t)0x151, (q15_t)0xf315,\n    (q15_t)0x14f, (q15_t)0xf321, (q15_t)0x14c, (q15_t)0xf32d, (q15_t)0x14a, (q15_t)0xf33a, (q15_t)0x147, (q15_t)0xf346,\n    (q15_t)0x145, (q15_t)0xf352, (q15_t)0x142, (q15_t)0xf35f, (q15_t)0x140, (q15_t)0xf36b, (q15_t)0x13d, (q15_t)0xf377,\n    (q15_t)0x13b, (q15_t)0xf384, (q15_t)0x138, (q15_t)0xf390, (q15_t)0x136, (q15_t)0xf39c, (q15_t)0x134, (q15_t)0xf3a9,\n    (q15_t)0x131, (q15_t)0xf3b5, (q15_t)0x12f, (q15_t)0xf3c1, (q15_t)0x12c, (q15_t)0xf3ce, (q15_t)0x12a, (q15_t)0xf3da,\n    (q15_t)0x128, (q15_t)0xf3e6, (q15_t)0x125, (q15_t)0xf3f3, (q15_t)0x123, (q15_t)0xf3ff, (q15_t)0x120, (q15_t)0xf40b,\n    (q15_t)0x11e, (q15_t)0xf418, (q15_t)0x11c, (q15_t)0xf424, (q15_t)0x119, (q15_t)0xf430, (q15_t)0x117, (q15_t)0xf43d,\n    (q15_t)0x115, (q15_t)0xf449, (q15_t)0x113, (q15_t)0xf455, (q15_t)0x110, (q15_t)0xf462, (q15_t)0x10e, (q15_t)0xf46e,\n    (q15_t)0x10c, (q15_t)0xf47b, (q15_t)0x109, (q15_t)0xf487, (q15_t)0x107, (q15_t)0xf493, (q15_t)0x105, (q15_t)0xf4a0,\n    (q15_t)0x103, (q15_t)0xf4ac, (q15_t)0x100, (q15_t)0xf4b8, (q15_t)0xfe, (q15_t)0xf4c5, (q15_t)0xfc, (q15_t)0xf4d1,\n    (q15_t)0xfa, (q15_t)0xf4dd, (q15_t)0xf8, (q15_t)0xf4ea, (q15_t)0xf6, (q15_t)0xf4f6, (q15_t)0xf3, (q15_t)0xf503,\n    (q15_t)0xf1, (q15_t)0xf50f, (q15_t)0xef, (q15_t)0xf51b, (q15_t)0xed, (q15_t)0xf528, (q15_t)0xeb, (q15_t)0xf534,\n    (q15_t)0xe9, (q15_t)0xf540, (q15_t)0xe7, (q15_t)0xf54d, (q15_t)0xe4, (q15_t)0xf559, (q15_t)0xe2, (q15_t)0xf566,\n    (q15_t)0xe0, (q15_t)0xf572, (q15_t)0xde, (q15_t)0xf57e, (q15_t)0xdc, (q15_t)0xf58b, (q15_t)0xda, (q15_t)0xf597,\n    (q15_t)0xd8, (q15_t)0xf5a4, (q15_t)0xd6, (q15_t)0xf5b0, (q15_t)0xd4, (q15_t)0xf5bc, (q15_t)0xd2, (q15_t)0xf5c9,\n    (q15_t)0xd0, (q15_t)0xf5d5, (q15_t)0xce, (q15_t)0xf5e2, (q15_t)0xcc, (q15_t)0xf5ee, (q15_t)0xca, (q15_t)0xf5fa,\n    (q15_t)0xc8, (q15_t)0xf607, (q15_t)0xc6, (q15_t)0xf613, (q15_t)0xc4, (q15_t)0xf620, (q15_t)0xc2, (q15_t)0xf62c,\n    (q15_t)0xc0, (q15_t)0xf639, (q15_t)0xbe, (q15_t)0xf645, (q15_t)0xbd, (q15_t)0xf651, (q15_t)0xbb, (q15_t)0xf65e,\n    (q15_t)0xb9, (q15_t)0xf66a, (q15_t)0xb7, (q15_t)0xf677, (q15_t)0xb5, (q15_t)0xf683, (q15_t)0xb3, (q15_t)0xf690,\n    (q15_t)0xb1, (q15_t)0xf69c, (q15_t)0xaf, (q15_t)0xf6a8, (q15_t)0xae, (q15_t)0xf6b5, (q15_t)0xac, (q15_t)0xf6c1,\n    (q15_t)0xaa, (q15_t)0xf6ce, (q15_t)0xa8, (q15_t)0xf6da, (q15_t)0xa6, (q15_t)0xf6e7, (q15_t)0xa5, (q15_t)0xf6f3,\n    (q15_t)0xa3, (q15_t)0xf6ff, (q15_t)0xa1, (q15_t)0xf70c, (q15_t)0x9f, (q15_t)0xf718, (q15_t)0x9e, (q15_t)0xf725,\n    (q15_t)0x9c, (q15_t)0xf731, (q15_t)0x9a, (q15_t)0xf73e, (q15_t)0x98, (q15_t)0xf74a, (q15_t)0x97, (q15_t)0xf757,\n    (q15_t)0x95, (q15_t)0xf763, (q15_t)0x93, (q15_t)0xf76f, (q15_t)0x92, (q15_t)0xf77c, (q15_t)0x90, (q15_t)0xf788,\n    (q15_t)0x8e, (q15_t)0xf795, (q15_t)0x8d, (q15_t)0xf7a1, (q15_t)0x8b, (q15_t)0xf7ae, (q15_t)0x89, (q15_t)0xf7ba,\n    (q15_t)0x88, (q15_t)0xf7c7, (q15_t)0x86, (q15_t)0xf7d3, (q15_t)0x85, (q15_t)0xf7e0, (q15_t)0x83, (q15_t)0xf7ec,\n    (q15_t)0x81, (q15_t)0xf7f9, (q15_t)0x80, (q15_t)0xf805, (q15_t)0x7e, (q15_t)0xf811, (q15_t)0x7d, (q15_t)0xf81e,\n    (q15_t)0x7b, (q15_t)0xf82a, (q15_t)0x7a, (q15_t)0xf837, (q15_t)0x78, (q15_t)0xf843, (q15_t)0x77, (q15_t)0xf850,\n    (q15_t)0x75, (q15_t)0xf85c, (q15_t)0x74, (q15_t)0xf869, (q15_t)0x72, (q15_t)0xf875, (q15_t)0x71, (q15_t)0xf882,\n    (q15_t)0x6f, (q15_t)0xf88e, (q15_t)0x6e, (q15_t)0xf89b, (q15_t)0x6c, (q15_t)0xf8a7, (q15_t)0x6b, (q15_t)0xf8b4,\n    (q15_t)0x69, (q15_t)0xf8c0, (q15_t)0x68, (q15_t)0xf8cd, (q15_t)0x67, (q15_t)0xf8d9, (q15_t)0x65, (q15_t)0xf8e6,\n    (q15_t)0x64, (q15_t)0xf8f2, (q15_t)0x62, (q15_t)0xf8ff, (q15_t)0x61, (q15_t)0xf90b, (q15_t)0x60, (q15_t)0xf918,\n    (q15_t)0x5e, (q15_t)0xf924, (q15_t)0x5d, (q15_t)0xf931, (q15_t)0x5c, (q15_t)0xf93d, (q15_t)0x5a, (q15_t)0xf94a,\n    (q15_t)0x59, (q15_t)0xf956, (q15_t)0x58, (q15_t)0xf963, (q15_t)0x56, (q15_t)0xf96f, (q15_t)0x55, (q15_t)0xf97c,\n    (q15_t)0x54, (q15_t)0xf988, (q15_t)0x53, (q15_t)0xf995, (q15_t)0x51, (q15_t)0xf9a1, (q15_t)0x50, (q15_t)0xf9ae,\n    (q15_t)0x4f, (q15_t)0xf9ba, (q15_t)0x4e, (q15_t)0xf9c7, (q15_t)0x4c, (q15_t)0xf9d3, (q15_t)0x4b, (q15_t)0xf9e0,\n    (q15_t)0x4a, (q15_t)0xf9ec, (q15_t)0x49, (q15_t)0xf9f9, (q15_t)0x48, (q15_t)0xfa05, (q15_t)0x47, (q15_t)0xfa12,\n    (q15_t)0x45, (q15_t)0xfa1e, (q15_t)0x44, (q15_t)0xfa2b, (q15_t)0x43, (q15_t)0xfa37, (q15_t)0x42, (q15_t)0xfa44,\n    (q15_t)0x41, (q15_t)0xfa50, (q15_t)0x40, (q15_t)0xfa5d, (q15_t)0x3f, (q15_t)0xfa69, (q15_t)0x3d, (q15_t)0xfa76,\n    (q15_t)0x3c, (q15_t)0xfa82, (q15_t)0x3b, (q15_t)0xfa8f, (q15_t)0x3a, (q15_t)0xfa9b, (q15_t)0x39, (q15_t)0xfaa8,\n    (q15_t)0x38, (q15_t)0xfab4, (q15_t)0x37, (q15_t)0xfac1, (q15_t)0x36, (q15_t)0xfacd, (q15_t)0x35, (q15_t)0xfada,\n    (q15_t)0x34, (q15_t)0xfae6, (q15_t)0x33, (q15_t)0xfaf3, (q15_t)0x32, (q15_t)0xfb00, (q15_t)0x31, (q15_t)0xfb0c,\n    (q15_t)0x30, (q15_t)0xfb19, (q15_t)0x2f, (q15_t)0xfb25, (q15_t)0x2e, (q15_t)0xfb32, (q15_t)0x2d, (q15_t)0xfb3e,\n    (q15_t)0x2c, (q15_t)0xfb4b, (q15_t)0x2b, (q15_t)0xfb57, (q15_t)0x2b, (q15_t)0xfb64, (q15_t)0x2a, (q15_t)0xfb70,\n    (q15_t)0x29, (q15_t)0xfb7d, (q15_t)0x28, (q15_t)0xfb89, (q15_t)0x27, (q15_t)0xfb96, (q15_t)0x26, (q15_t)0xfba2,\n    (q15_t)0x25, (q15_t)0xfbaf, (q15_t)0x24, (q15_t)0xfbbc, (q15_t)0x24, (q15_t)0xfbc8, (q15_t)0x23, (q15_t)0xfbd5,\n    (q15_t)0x22, (q15_t)0xfbe1, (q15_t)0x21, (q15_t)0xfbee, (q15_t)0x20, (q15_t)0xfbfa, (q15_t)0x20, (q15_t)0xfc07,\n    (q15_t)0x1f, (q15_t)0xfc13, (q15_t)0x1e, (q15_t)0xfc20, (q15_t)0x1d, (q15_t)0xfc2c, (q15_t)0x1d, (q15_t)0xfc39,\n    (q15_t)0x1c, (q15_t)0xfc45, (q15_t)0x1b, (q15_t)0xfc52, (q15_t)0x1a, (q15_t)0xfc5f, (q15_t)0x1a, (q15_t)0xfc6b,\n    (q15_t)0x19, (q15_t)0xfc78, (q15_t)0x18, (q15_t)0xfc84, (q15_t)0x18, (q15_t)0xfc91, (q15_t)0x17, (q15_t)0xfc9d,\n    (q15_t)0x16, (q15_t)0xfcaa, (q15_t)0x16, (q15_t)0xfcb6, (q15_t)0x15, (q15_t)0xfcc3, (q15_t)0x14, (q15_t)0xfcd0,\n    (q15_t)0x14, (q15_t)0xfcdc, (q15_t)0x13, (q15_t)0xfce9, (q15_t)0x13, (q15_t)0xfcf5, (q15_t)0x12, (q15_t)0xfd02,\n    (q15_t)0x11, (q15_t)0xfd0e, (q15_t)0x11, (q15_t)0xfd1b, (q15_t)0x10, (q15_t)0xfd27, (q15_t)0x10, (q15_t)0xfd34,\n    (q15_t)0xf, (q15_t)0xfd40, (q15_t)0xf, (q15_t)0xfd4d, (q15_t)0xe, (q15_t)0xfd5a, (q15_t)0xe, (q15_t)0xfd66,\n    (q15_t)0xd, (q15_t)0xfd73, (q15_t)0xd, (q15_t)0xfd7f, (q15_t)0xc, (q15_t)0xfd8c, (q15_t)0xc, (q15_t)0xfd98,\n    (q15_t)0xb, (q15_t)0xfda5, (q15_t)0xb, (q15_t)0xfdb2, (q15_t)0xa, (q15_t)0xfdbe, (q15_t)0xa, (q15_t)0xfdcb,\n    (q15_t)0x9, (q15_t)0xfdd7, (q15_t)0x9, (q15_t)0xfde4, (q15_t)0x9, (q15_t)0xfdf0, (q15_t)0x8, (q15_t)0xfdfd,\n    (q15_t)0x8, (q15_t)0xfe09, (q15_t)0x7, (q15_t)0xfe16, (q15_t)0x7, (q15_t)0xfe23, (q15_t)0x7, (q15_t)0xfe2f,\n    (q15_t)0x6, (q15_t)0xfe3c, (q15_t)0x6, (q15_t)0xfe48, (q15_t)0x6, (q15_t)0xfe55, (q15_t)0x5, (q15_t)0xfe61,\n    (q15_t)0x5, (q15_t)0xfe6e, (q15_t)0x5, (q15_t)0xfe7a, (q15_t)0x4, (q15_t)0xfe87, (q15_t)0x4, (q15_t)0xfe94,\n    (q15_t)0x4, (q15_t)0xfea0, (q15_t)0x4, (q15_t)0xfead, (q15_t)0x3, (q15_t)0xfeb9, (q15_t)0x3, (q15_t)0xfec6,\n    (q15_t)0x3, (q15_t)0xfed2, (q15_t)0x3, (q15_t)0xfedf, (q15_t)0x2, (q15_t)0xfeec, (q15_t)0x2, (q15_t)0xfef8,\n    (q15_t)0x2, (q15_t)0xff05, (q15_t)0x2, (q15_t)0xff11, (q15_t)0x2, (q15_t)0xff1e, (q15_t)0x1, (q15_t)0xff2a,\n    (q15_t)0x1, (q15_t)0xff37, (q15_t)0x1, (q15_t)0xff44, (q15_t)0x1, (q15_t)0xff50, (q15_t)0x1, (q15_t)0xff5d,\n    (q15_t)0x1, (q15_t)0xff69, (q15_t)0x1, (q15_t)0xff76, (q15_t)0x0, (q15_t)0xff82, (q15_t)0x0, (q15_t)0xff8f,\n    (q15_t)0x0, (q15_t)0xff9b, (q15_t)0x0, (q15_t)0xffa8, (q15_t)0x0, (q15_t)0xffb5, (q15_t)0x0, (q15_t)0xffc1,\n    (q15_t)0x0, (q15_t)0xffce, (q15_t)0x0, (q15_t)0xffda, (q15_t)0x0, (q15_t)0xffe7, (q15_t)0x0, (q15_t)0xfff3,\n    (q15_t)0x0, (q15_t)0x0, (q15_t)0x0, (q15_t)0xd, (q15_t)0x0, (q15_t)0x19, (q15_t)0x0, (q15_t)0x26,\n    (q15_t)0x0, (q15_t)0x32, (q15_t)0x0, (q15_t)0x3f, (q15_t)0x0, (q15_t)0x4b, (q15_t)0x0, (q15_t)0x58,\n    (q15_t)0x0, (q15_t)0x65, (q15_t)0x0, (q15_t)0x71, (q15_t)0x0, (q15_t)0x7e, (q15_t)0x1, (q15_t)0x8a,\n    (q15_t)0x1, (q15_t)0x97, (q15_t)0x1, (q15_t)0xa3, (q15_t)0x1, (q15_t)0xb0, (q15_t)0x1, (q15_t)0xbc,\n    (q15_t)0x1, (q15_t)0xc9, (q15_t)0x1, (q15_t)0xd6, (q15_t)0x2, (q15_t)0xe2, (q15_t)0x2, (q15_t)0xef,\n    (q15_t)0x2, (q15_t)0xfb, (q15_t)0x2, (q15_t)0x108, (q15_t)0x2, (q15_t)0x114, (q15_t)0x3, (q15_t)0x121,\n    (q15_t)0x3, (q15_t)0x12e, (q15_t)0x3, (q15_t)0x13a, (q15_t)0x3, (q15_t)0x147, (q15_t)0x4, (q15_t)0x153,\n    (q15_t)0x4, (q15_t)0x160, (q15_t)0x4, (q15_t)0x16c, (q15_t)0x4, (q15_t)0x179, (q15_t)0x5, (q15_t)0x186,\n    (q15_t)0x5, (q15_t)0x192, (q15_t)0x5, (q15_t)0x19f, (q15_t)0x6, (q15_t)0x1ab, (q15_t)0x6, (q15_t)0x1b8,\n    (q15_t)0x6, (q15_t)0x1c4, (q15_t)0x7, (q15_t)0x1d1, (q15_t)0x7, (q15_t)0x1dd, (q15_t)0x7, (q15_t)0x1ea,\n    (q15_t)0x8, (q15_t)0x1f7, (q15_t)0x8, (q15_t)0x203, (q15_t)0x9, (q15_t)0x210, (q15_t)0x9, (q15_t)0x21c,\n    (q15_t)0x9, (q15_t)0x229, (q15_t)0xa, (q15_t)0x235, (q15_t)0xa, (q15_t)0x242, (q15_t)0xb, (q15_t)0x24e,\n    (q15_t)0xb, (q15_t)0x25b, (q15_t)0xc, (q15_t)0x268, (q15_t)0xc, (q15_t)0x274, (q15_t)0xd, (q15_t)0x281,\n    (q15_t)0xd, (q15_t)0x28d, (q15_t)0xe, (q15_t)0x29a, (q15_t)0xe, (q15_t)0x2a6, (q15_t)0xf, (q15_t)0x2b3,\n    (q15_t)0xf, (q15_t)0x2c0, (q15_t)0x10, (q15_t)0x2cc, (q15_t)0x10, (q15_t)0x2d9, (q15_t)0x11, (q15_t)0x2e5,\n    (q15_t)0x11, (q15_t)0x2f2, (q15_t)0x12, (q15_t)0x2fe, (q15_t)0x13, (q15_t)0x30b, (q15_t)0x13, (q15_t)0x317,\n    (q15_t)0x14, (q15_t)0x324, (q15_t)0x14, (q15_t)0x330, (q15_t)0x15, (q15_t)0x33d, (q15_t)0x16, (q15_t)0x34a,\n    (q15_t)0x16, (q15_t)0x356, (q15_t)0x17, (q15_t)0x363, (q15_t)0x18, (q15_t)0x36f, (q15_t)0x18, (q15_t)0x37c,\n    (q15_t)0x19, (q15_t)0x388, (q15_t)0x1a, (q15_t)0x395, (q15_t)0x1a, (q15_t)0x3a1, (q15_t)0x1b, (q15_t)0x3ae,\n    (q15_t)0x1c, (q15_t)0x3bb, (q15_t)0x1d, (q15_t)0x3c7, (q15_t)0x1d, (q15_t)0x3d4, (q15_t)0x1e, (q15_t)0x3e0,\n    (q15_t)0x1f, (q15_t)0x3ed, (q15_t)0x20, (q15_t)0x3f9, (q15_t)0x20, (q15_t)0x406, (q15_t)0x21, (q15_t)0x412,\n    (q15_t)0x22, (q15_t)0x41f, (q15_t)0x23, (q15_t)0x42b, (q15_t)0x24, (q15_t)0x438, (q15_t)0x24, (q15_t)0x444,\n    (q15_t)0x25, (q15_t)0x451, (q15_t)0x26, (q15_t)0x45e, (q15_t)0x27, (q15_t)0x46a, (q15_t)0x28, (q15_t)0x477,\n    (q15_t)0x29, (q15_t)0x483, (q15_t)0x2a, (q15_t)0x490, (q15_t)0x2b, (q15_t)0x49c, (q15_t)0x2b, (q15_t)0x4a9,\n    (q15_t)0x2c, (q15_t)0x4b5, (q15_t)0x2d, (q15_t)0x4c2, (q15_t)0x2e, (q15_t)0x4ce, (q15_t)0x2f, (q15_t)0x4db,\n    (q15_t)0x30, (q15_t)0x4e7, (q15_t)0x31, (q15_t)0x4f4, (q15_t)0x32, (q15_t)0x500, (q15_t)0x33, (q15_t)0x50d,\n    (q15_t)0x34, (q15_t)0x51a, (q15_t)0x35, (q15_t)0x526, (q15_t)0x36, (q15_t)0x533, (q15_t)0x37, (q15_t)0x53f,\n    (q15_t)0x38, (q15_t)0x54c, (q15_t)0x39, (q15_t)0x558, (q15_t)0x3a, (q15_t)0x565, (q15_t)0x3b, (q15_t)0x571,\n    (q15_t)0x3c, (q15_t)0x57e, (q15_t)0x3d, (q15_t)0x58a, (q15_t)0x3f, (q15_t)0x597, (q15_t)0x40, (q15_t)0x5a3,\n    (q15_t)0x41, (q15_t)0x5b0, (q15_t)0x42, (q15_t)0x5bc, (q15_t)0x43, (q15_t)0x5c9, (q15_t)0x44, (q15_t)0x5d5,\n    (q15_t)0x45, (q15_t)0x5e2, (q15_t)0x47, (q15_t)0x5ee, (q15_t)0x48, (q15_t)0x5fb, (q15_t)0x49, (q15_t)0x607,\n    (q15_t)0x4a, (q15_t)0x614, (q15_t)0x4b, (q15_t)0x620, (q15_t)0x4c, (q15_t)0x62d, (q15_t)0x4e, (q15_t)0x639,\n    (q15_t)0x4f, (q15_t)0x646, (q15_t)0x50, (q15_t)0x652, (q15_t)0x51, (q15_t)0x65f, (q15_t)0x53, (q15_t)0x66b,\n    (q15_t)0x54, (q15_t)0x678, (q15_t)0x55, (q15_t)0x684, (q15_t)0x56, (q15_t)0x691, (q15_t)0x58, (q15_t)0x69d,\n    (q15_t)0x59, (q15_t)0x6aa, (q15_t)0x5a, (q15_t)0x6b6, (q15_t)0x5c, (q15_t)0x6c3, (q15_t)0x5d, (q15_t)0x6cf,\n    (q15_t)0x5e, (q15_t)0x6dc, (q15_t)0x60, (q15_t)0x6e8, (q15_t)0x61, (q15_t)0x6f5, (q15_t)0x62, (q15_t)0x701,\n    (q15_t)0x64, (q15_t)0x70e, (q15_t)0x65, (q15_t)0x71a, (q15_t)0x67, (q15_t)0x727, (q15_t)0x68, (q15_t)0x733,\n    (q15_t)0x69, (q15_t)0x740, (q15_t)0x6b, (q15_t)0x74c, (q15_t)0x6c, (q15_t)0x759, (q15_t)0x6e, (q15_t)0x765,\n    (q15_t)0x6f, (q15_t)0x772, (q15_t)0x71, (q15_t)0x77e, (q15_t)0x72, (q15_t)0x78b, (q15_t)0x74, (q15_t)0x797,\n    (q15_t)0x75, (q15_t)0x7a4, (q15_t)0x77, (q15_t)0x7b0, (q15_t)0x78, (q15_t)0x7bd, (q15_t)0x7a, (q15_t)0x7c9,\n    (q15_t)0x7b, (q15_t)0x7d6, (q15_t)0x7d, (q15_t)0x7e2, (q15_t)0x7e, (q15_t)0x7ef, (q15_t)0x80, (q15_t)0x7fb,\n    (q15_t)0x81, (q15_t)0x807, (q15_t)0x83, (q15_t)0x814, (q15_t)0x85, (q15_t)0x820, (q15_t)0x86, (q15_t)0x82d,\n    (q15_t)0x88, (q15_t)0x839, (q15_t)0x89, (q15_t)0x846, (q15_t)0x8b, (q15_t)0x852, (q15_t)0x8d, (q15_t)0x85f,\n    (q15_t)0x8e, (q15_t)0x86b, (q15_t)0x90, (q15_t)0x878, (q15_t)0x92, (q15_t)0x884, (q15_t)0x93, (q15_t)0x891,\n    (q15_t)0x95, (q15_t)0x89d, (q15_t)0x97, (q15_t)0x8a9, (q15_t)0x98, (q15_t)0x8b6, (q15_t)0x9a, (q15_t)0x8c2,\n    (q15_t)0x9c, (q15_t)0x8cf, (q15_t)0x9e, (q15_t)0x8db, (q15_t)0x9f, (q15_t)0x8e8, (q15_t)0xa1, (q15_t)0x8f4,\n    (q15_t)0xa3, (q15_t)0x901, (q15_t)0xa5, (q15_t)0x90d, (q15_t)0xa6, (q15_t)0x919, (q15_t)0xa8, (q15_t)0x926,\n    (q15_t)0xaa, (q15_t)0x932, (q15_t)0xac, (q15_t)0x93f, (q15_t)0xae, (q15_t)0x94b, (q15_t)0xaf, (q15_t)0x958,\n    (q15_t)0xb1, (q15_t)0x964, (q15_t)0xb3, (q15_t)0x970, (q15_t)0xb5, (q15_t)0x97d, (q15_t)0xb7, (q15_t)0x989,\n    (q15_t)0xb9, (q15_t)0x996, (q15_t)0xbb, (q15_t)0x9a2, (q15_t)0xbd, (q15_t)0x9af, (q15_t)0xbe, (q15_t)0x9bb,\n    (q15_t)0xc0, (q15_t)0x9c7, (q15_t)0xc2, (q15_t)0x9d4, (q15_t)0xc4, (q15_t)0x9e0, (q15_t)0xc6, (q15_t)0x9ed,\n    (q15_t)0xc8, (q15_t)0x9f9, (q15_t)0xca, (q15_t)0xa06, (q15_t)0xcc, (q15_t)0xa12, (q15_t)0xce, (q15_t)0xa1e,\n    (q15_t)0xd0, (q15_t)0xa2b, (q15_t)0xd2, (q15_t)0xa37, (q15_t)0xd4, (q15_t)0xa44, (q15_t)0xd6, (q15_t)0xa50,\n    (q15_t)0xd8, (q15_t)0xa5c, (q15_t)0xda, (q15_t)0xa69, (q15_t)0xdc, (q15_t)0xa75, (q15_t)0xde, (q15_t)0xa82,\n    (q15_t)0xe0, (q15_t)0xa8e, (q15_t)0xe2, (q15_t)0xa9a, (q15_t)0xe4, (q15_t)0xaa7, (q15_t)0xe7, (q15_t)0xab3,\n    (q15_t)0xe9, (q15_t)0xac0, (q15_t)0xeb, (q15_t)0xacc, (q15_t)0xed, (q15_t)0xad8, (q15_t)0xef, (q15_t)0xae5,\n    (q15_t)0xf1, (q15_t)0xaf1, (q15_t)0xf3, (q15_t)0xafd, (q15_t)0xf6, (q15_t)0xb0a, (q15_t)0xf8, (q15_t)0xb16,\n    (q15_t)0xfa, (q15_t)0xb23, (q15_t)0xfc, (q15_t)0xb2f, (q15_t)0xfe, (q15_t)0xb3b, (q15_t)0x100, (q15_t)0xb48,\n    (q15_t)0x103, (q15_t)0xb54, (q15_t)0x105, (q15_t)0xb60, (q15_t)0x107, (q15_t)0xb6d, (q15_t)0x109, (q15_t)0xb79,\n    (q15_t)0x10c, (q15_t)0xb85, (q15_t)0x10e, (q15_t)0xb92, (q15_t)0x110, (q15_t)0xb9e, (q15_t)0x113, (q15_t)0xbab,\n    (q15_t)0x115, (q15_t)0xbb7, (q15_t)0x117, (q15_t)0xbc3, (q15_t)0x119, (q15_t)0xbd0, (q15_t)0x11c, (q15_t)0xbdc,\n    (q15_t)0x11e, (q15_t)0xbe8, (q15_t)0x120, (q15_t)0xbf5, (q15_t)0x123, (q15_t)0xc01, (q15_t)0x125, (q15_t)0xc0d,\n    (q15_t)0x128, (q15_t)0xc1a, (q15_t)0x12a, (q15_t)0xc26, (q15_t)0x12c, (q15_t)0xc32, (q15_t)0x12f, (q15_t)0xc3f,\n    (q15_t)0x131, (q15_t)0xc4b, (q15_t)0x134, (q15_t)0xc57, (q15_t)0x136, (q15_t)0xc64, (q15_t)0x138, (q15_t)0xc70,\n    (q15_t)0x13b, (q15_t)0xc7c, (q15_t)0x13d, (q15_t)0xc89, (q15_t)0x140, (q15_t)0xc95, (q15_t)0x142, (q15_t)0xca1,\n    (q15_t)0x145, (q15_t)0xcae, (q15_t)0x147, (q15_t)0xcba, (q15_t)0x14a, (q15_t)0xcc6, (q15_t)0x14c, (q15_t)0xcd3,\n    (q15_t)0x14f, (q15_t)0xcdf, (q15_t)0x151, (q15_t)0xceb, (q15_t)0x154, (q15_t)0xcf8, (q15_t)0x156, (q15_t)0xd04,\n    (q15_t)0x159, (q15_t)0xd10, (q15_t)0x15b, (q15_t)0xd1c, (q15_t)0x15e, (q15_t)0xd29, (q15_t)0x161, (q15_t)0xd35,\n    (q15_t)0x163, (q15_t)0xd41, (q15_t)0x166, (q15_t)0xd4e, (q15_t)0x168, (q15_t)0xd5a, (q15_t)0x16b, (q15_t)0xd66,\n    (q15_t)0x16e, (q15_t)0xd72, (q15_t)0x170, (q15_t)0xd7f, (q15_t)0x173, (q15_t)0xd8b, (q15_t)0x176, (q15_t)0xd97,\n    (q15_t)0x178, (q15_t)0xda4, (q15_t)0x17b, (q15_t)0xdb0, (q15_t)0x17e, (q15_t)0xdbc, (q15_t)0x180, (q15_t)0xdc8,\n    (q15_t)0x183, (q15_t)0xdd5, (q15_t)0x186, (q15_t)0xde1, (q15_t)0x189, (q15_t)0xded, (q15_t)0x18b, (q15_t)0xdf9,\n    (q15_t)0x18e, (q15_t)0xe06, (q15_t)0x191, (q15_t)0xe12, (q15_t)0x194, (q15_t)0xe1e, (q15_t)0x196, (q15_t)0xe2b,\n    (q15_t)0x199, (q15_t)0xe37, (q15_t)0x19c, (q15_t)0xe43, (q15_t)0x19f, (q15_t)0xe4f, (q15_t)0x1a2, (q15_t)0xe5c,\n    (q15_t)0x1a4, (q15_t)0xe68, (q15_t)0x1a7, (q15_t)0xe74, (q15_t)0x1aa, (q15_t)0xe80, (q15_t)0x1ad, (q15_t)0xe8c,\n    (q15_t)0x1b0, (q15_t)0xe99, (q15_t)0x1b3, (q15_t)0xea5, (q15_t)0x1b6, (q15_t)0xeb1, (q15_t)0x1b8, (q15_t)0xebd,\n    (q15_t)0x1bb, (q15_t)0xeca, (q15_t)0x1be, (q15_t)0xed6, (q15_t)0x1c1, (q15_t)0xee2, (q15_t)0x1c4, (q15_t)0xeee,\n    (q15_t)0x1c7, (q15_t)0xefb, (q15_t)0x1ca, (q15_t)0xf07, (q15_t)0x1cd, (q15_t)0xf13, (q15_t)0x1d0, (q15_t)0xf1f,\n    (q15_t)0x1d3, (q15_t)0xf2b, (q15_t)0x1d6, (q15_t)0xf38, (q15_t)0x1d9, (q15_t)0xf44, (q15_t)0x1dc, (q15_t)0xf50,\n    (q15_t)0x1df, (q15_t)0xf5c, (q15_t)0x1e2, (q15_t)0xf68, (q15_t)0x1e5, (q15_t)0xf75, (q15_t)0x1e8, (q15_t)0xf81,\n    (q15_t)0x1eb, (q15_t)0xf8d, (q15_t)0x1ee, (q15_t)0xf99, (q15_t)0x1f1, (q15_t)0xfa5, (q15_t)0x1f4, (q15_t)0xfb2,\n    (q15_t)0x1f7, (q15_t)0xfbe, (q15_t)0x1fa, (q15_t)0xfca, (q15_t)0x1fd, (q15_t)0xfd6, (q15_t)0x201, (q15_t)0xfe2,\n    (q15_t)0x204, (q15_t)0xfee, (q15_t)0x207, (q15_t)0xffb, (q15_t)0x20a, (q15_t)0x1007, (q15_t)0x20d, (q15_t)0x1013,\n    (q15_t)0x210, (q15_t)0x101f, (q15_t)0x213, (q15_t)0x102b, (q15_t)0x217, (q15_t)0x1037, (q15_t)0x21a, (q15_t)0x1044,\n    (q15_t)0x21d, (q15_t)0x1050, (q15_t)0x220, (q15_t)0x105c, (q15_t)0x223, (q15_t)0x1068, (q15_t)0x227, (q15_t)0x1074,\n    (q15_t)0x22a, (q15_t)0x1080, (q15_t)0x22d, (q15_t)0x108c, (q15_t)0x230, (q15_t)0x1099, (q15_t)0x234, (q15_t)0x10a5,\n    (q15_t)0x237, (q15_t)0x10b1, (q15_t)0x23a, (q15_t)0x10bd, (q15_t)0x23e, (q15_t)0x10c9, (q15_t)0x241, (q15_t)0x10d5,\n    (q15_t)0x244, (q15_t)0x10e1, (q15_t)0x247, (q15_t)0x10ed, (q15_t)0x24b, (q15_t)0x10fa, (q15_t)0x24e, (q15_t)0x1106,\n    (q15_t)0x251, (q15_t)0x1112, (q15_t)0x255, (q15_t)0x111e, (q15_t)0x258, (q15_t)0x112a, (q15_t)0x25c, (q15_t)0x1136,\n    (q15_t)0x25f, (q15_t)0x1142, (q15_t)0x262, (q15_t)0x114e, (q15_t)0x266, (q15_t)0x115a, (q15_t)0x269, (q15_t)0x1167,\n    (q15_t)0x26d, (q15_t)0x1173, (q15_t)0x270, (q15_t)0x117f, (q15_t)0x273, (q15_t)0x118b, (q15_t)0x277, (q15_t)0x1197,\n    (q15_t)0x27a, (q15_t)0x11a3, (q15_t)0x27e, (q15_t)0x11af, (q15_t)0x281, (q15_t)0x11bb, (q15_t)0x285, (q15_t)0x11c7,\n    (q15_t)0x288, (q15_t)0x11d3, (q15_t)0x28c, (q15_t)0x11df, (q15_t)0x28f, (q15_t)0x11eb, (q15_t)0x293, (q15_t)0x11f7,\n    (q15_t)0x296, (q15_t)0x1204, (q15_t)0x29a, (q15_t)0x1210, (q15_t)0x29d, (q15_t)0x121c, (q15_t)0x2a1, (q15_t)0x1228,\n    (q15_t)0x2a5, (q15_t)0x1234, (q15_t)0x2a8, (q15_t)0x1240, (q15_t)0x2ac, (q15_t)0x124c, (q15_t)0x2af, (q15_t)0x1258,\n    (q15_t)0x2b3, (q15_t)0x1264, (q15_t)0x2b7, (q15_t)0x1270, (q15_t)0x2ba, (q15_t)0x127c, (q15_t)0x2be, (q15_t)0x1288,\n    (q15_t)0x2c1, (q15_t)0x1294, (q15_t)0x2c5, (q15_t)0x12a0, (q15_t)0x2c9, (q15_t)0x12ac, (q15_t)0x2cc, (q15_t)0x12b8,\n    (q15_t)0x2d0, (q15_t)0x12c4, (q15_t)0x2d4, (q15_t)0x12d0, (q15_t)0x2d8, (q15_t)0x12dc, (q15_t)0x2db, (q15_t)0x12e8,\n    (q15_t)0x2df, (q15_t)0x12f4, (q15_t)0x2e3, (q15_t)0x1300, (q15_t)0x2e6, (q15_t)0x130c, (q15_t)0x2ea, (q15_t)0x1318,\n    (q15_t)0x2ee, (q15_t)0x1324, (q15_t)0x2f2, (q15_t)0x1330, (q15_t)0x2f5, (q15_t)0x133c, (q15_t)0x2f9, (q15_t)0x1348,\n    (q15_t)0x2fd, (q15_t)0x1354, (q15_t)0x301, (q15_t)0x1360, (q15_t)0x305, (q15_t)0x136c, (q15_t)0x308, (q15_t)0x1378,\n    (q15_t)0x30c, (q15_t)0x1384, (q15_t)0x310, (q15_t)0x1390, (q15_t)0x314, (q15_t)0x139c, (q15_t)0x318, (q15_t)0x13a8,\n    (q15_t)0x31c, (q15_t)0x13b4, (q15_t)0x320, (q15_t)0x13c0, (q15_t)0x323, (q15_t)0x13cc, (q15_t)0x327, (q15_t)0x13d8,\n    (q15_t)0x32b, (q15_t)0x13e4, (q15_t)0x32f, (q15_t)0x13f0, (q15_t)0x333, (q15_t)0x13fb, (q15_t)0x337, (q15_t)0x1407,\n    (q15_t)0x33b, (q15_t)0x1413, (q15_t)0x33f, (q15_t)0x141f, (q15_t)0x343, (q15_t)0x142b, (q15_t)0x347, (q15_t)0x1437,\n    (q15_t)0x34b, (q15_t)0x1443, (q15_t)0x34f, (q15_t)0x144f, (q15_t)0x353, (q15_t)0x145b, (q15_t)0x357, (q15_t)0x1467,\n    (q15_t)0x35b, (q15_t)0x1473, (q15_t)0x35f, (q15_t)0x147f, (q15_t)0x363, (q15_t)0x148b, (q15_t)0x367, (q15_t)0x1496,\n    (q15_t)0x36b, (q15_t)0x14a2, (q15_t)0x36f, (q15_t)0x14ae, (q15_t)0x373, (q15_t)0x14ba, (q15_t)0x377, (q15_t)0x14c6,\n    (q15_t)0x37b, (q15_t)0x14d2, (q15_t)0x37f, (q15_t)0x14de, (q15_t)0x383, (q15_t)0x14ea, (q15_t)0x387, (q15_t)0x14f6,\n    (q15_t)0x38c, (q15_t)0x1501, (q15_t)0x390, (q15_t)0x150d, (q15_t)0x394, (q15_t)0x1519, (q15_t)0x398, (q15_t)0x1525,\n    (q15_t)0x39c, (q15_t)0x1531, (q15_t)0x3a0, (q15_t)0x153d, (q15_t)0x3a5, (q15_t)0x1549, (q15_t)0x3a9, (q15_t)0x1554,\n    (q15_t)0x3ad, (q15_t)0x1560, (q15_t)0x3b1, (q15_t)0x156c, (q15_t)0x3b5, (q15_t)0x1578, (q15_t)0x3ba, (q15_t)0x1584,\n    (q15_t)0x3be, (q15_t)0x1590, (q15_t)0x3c2, (q15_t)0x159b, (q15_t)0x3c6, (q15_t)0x15a7, (q15_t)0x3ca, (q15_t)0x15b3,\n    (q15_t)0x3cf, (q15_t)0x15bf, (q15_t)0x3d3, (q15_t)0x15cb, (q15_t)0x3d7, (q15_t)0x15d7, (q15_t)0x3dc, (q15_t)0x15e2,\n    (q15_t)0x3e0, (q15_t)0x15ee, (q15_t)0x3e4, (q15_t)0x15fa, (q15_t)0x3e9, (q15_t)0x1606, (q15_t)0x3ed, (q15_t)0x1612,\n    (q15_t)0x3f1, (q15_t)0x161d, (q15_t)0x3f6, (q15_t)0x1629, (q15_t)0x3fa, (q15_t)0x1635, (q15_t)0x3fe, (q15_t)0x1641,\n    (q15_t)0x403, (q15_t)0x164c, (q15_t)0x407, (q15_t)0x1658, (q15_t)0x40b, (q15_t)0x1664, (q15_t)0x410, (q15_t)0x1670,\n    (q15_t)0x414, (q15_t)0x167c, (q15_t)0x419, (q15_t)0x1687, (q15_t)0x41d, (q15_t)0x1693, (q15_t)0x422, (q15_t)0x169f,\n    (q15_t)0x426, (q15_t)0x16ab, (q15_t)0x42a, (q15_t)0x16b6, (q15_t)0x42f, (q15_t)0x16c2, (q15_t)0x433, (q15_t)0x16ce,\n    (q15_t)0x438, (q15_t)0x16da, (q15_t)0x43c, (q15_t)0x16e5, (q15_t)0x441, (q15_t)0x16f1, (q15_t)0x445, (q15_t)0x16fd,\n    (q15_t)0x44a, (q15_t)0x1709, (q15_t)0x44e, (q15_t)0x1714, (q15_t)0x453, (q15_t)0x1720, (q15_t)0x457, (q15_t)0x172c,\n    (q15_t)0x45c, (q15_t)0x1737, (q15_t)0x461, (q15_t)0x1743, (q15_t)0x465, (q15_t)0x174f, (q15_t)0x46a, (q15_t)0x175b,\n    (q15_t)0x46e, (q15_t)0x1766, (q15_t)0x473, (q15_t)0x1772, (q15_t)0x478, (q15_t)0x177e, (q15_t)0x47c, (q15_t)0x1789,\n    (q15_t)0x481, (q15_t)0x1795, (q15_t)0x485, (q15_t)0x17a1, (q15_t)0x48a, (q15_t)0x17ac, (q15_t)0x48f, (q15_t)0x17b8,\n    (q15_t)0x493, (q15_t)0x17c4, (q15_t)0x498, (q15_t)0x17cf, (q15_t)0x49d, (q15_t)0x17db, (q15_t)0x4a1, (q15_t)0x17e7,\n    (q15_t)0x4a6, (q15_t)0x17f2, (q15_t)0x4ab, (q15_t)0x17fe, (q15_t)0x4b0, (q15_t)0x180a, (q15_t)0x4b4, (q15_t)0x1815,\n    (q15_t)0x4b9, (q15_t)0x1821, (q15_t)0x4be, (q15_t)0x182d, (q15_t)0x4c2, (q15_t)0x1838, (q15_t)0x4c7, (q15_t)0x1844,\n    (q15_t)0x4cc, (q15_t)0x184f, (q15_t)0x4d1, (q15_t)0x185b, (q15_t)0x4d6, (q15_t)0x1867, (q15_t)0x4da, (q15_t)0x1872,\n    (q15_t)0x4df, (q15_t)0x187e, (q15_t)0x4e4, (q15_t)0x1889, (q15_t)0x4e9, (q15_t)0x1895, (q15_t)0x4ee, (q15_t)0x18a1,\n    (q15_t)0x4f2, (q15_t)0x18ac, (q15_t)0x4f7, (q15_t)0x18b8, (q15_t)0x4fc, (q15_t)0x18c3, (q15_t)0x501, (q15_t)0x18cf,\n    (q15_t)0x506, (q15_t)0x18db, (q15_t)0x50b, (q15_t)0x18e6, (q15_t)0x510, (q15_t)0x18f2, (q15_t)0x515, (q15_t)0x18fd,\n    (q15_t)0x51a, (q15_t)0x1909, (q15_t)0x51e, (q15_t)0x1914, (q15_t)0x523, (q15_t)0x1920, (q15_t)0x528, (q15_t)0x192c,\n    (q15_t)0x52d, (q15_t)0x1937, (q15_t)0x532, (q15_t)0x1943, (q15_t)0x537, (q15_t)0x194e, (q15_t)0x53c, (q15_t)0x195a,\n    (q15_t)0x541, (q15_t)0x1965, (q15_t)0x546, (q15_t)0x1971, (q15_t)0x54b, (q15_t)0x197c, (q15_t)0x550, (q15_t)0x1988,\n    (q15_t)0x555, (q15_t)0x1993, (q15_t)0x55a, (q15_t)0x199f, (q15_t)0x55f, (q15_t)0x19aa, (q15_t)0x564, (q15_t)0x19b6,\n    (q15_t)0x569, (q15_t)0x19c1, (q15_t)0x56e, (q15_t)0x19cd, (q15_t)0x573, (q15_t)0x19d8, (q15_t)0x578, (q15_t)0x19e4,\n    (q15_t)0x57e, (q15_t)0x19ef, (q15_t)0x583, (q15_t)0x19fb, (q15_t)0x588, (q15_t)0x1a06, (q15_t)0x58d, (q15_t)0x1a12,\n    (q15_t)0x592, (q15_t)0x1a1d, (q15_t)0x597, (q15_t)0x1a29, (q15_t)0x59c, (q15_t)0x1a34, (q15_t)0x5a1, (q15_t)0x1a40,\n    (q15_t)0x5a7, (q15_t)0x1a4b, (q15_t)0x5ac, (q15_t)0x1a57, (q15_t)0x5b1, (q15_t)0x1a62, (q15_t)0x5b6, (q15_t)0x1a6e,\n    (q15_t)0x5bb, (q15_t)0x1a79, (q15_t)0x5c1, (q15_t)0x1a84, (q15_t)0x5c6, (q15_t)0x1a90, (q15_t)0x5cb, (q15_t)0x1a9b,\n    (q15_t)0x5d0, (q15_t)0x1aa7, (q15_t)0x5d5, (q15_t)0x1ab2, (q15_t)0x5db, (q15_t)0x1abe, (q15_t)0x5e0, (q15_t)0x1ac9,\n    (q15_t)0x5e5, (q15_t)0x1ad4, (q15_t)0x5ea, (q15_t)0x1ae0, (q15_t)0x5f0, (q15_t)0x1aeb, (q15_t)0x5f5, (q15_t)0x1af7,\n    (q15_t)0x5fa, (q15_t)0x1b02, (q15_t)0x600, (q15_t)0x1b0d, (q15_t)0x605, (q15_t)0x1b19, (q15_t)0x60a, (q15_t)0x1b24,\n    (q15_t)0x610, (q15_t)0x1b30, (q15_t)0x615, (q15_t)0x1b3b, (q15_t)0x61a, (q15_t)0x1b46, (q15_t)0x620, (q15_t)0x1b52,\n    (q15_t)0x625, (q15_t)0x1b5d, (q15_t)0x62a, (q15_t)0x1b68, (q15_t)0x630, (q15_t)0x1b74, (q15_t)0x635, (q15_t)0x1b7f,\n    (q15_t)0x63b, (q15_t)0x1b8a, (q15_t)0x640, (q15_t)0x1b96, (q15_t)0x645, (q15_t)0x1ba1, (q15_t)0x64b, (q15_t)0x1bac,\n    (q15_t)0x650, (q15_t)0x1bb8, (q15_t)0x656, (q15_t)0x1bc3, (q15_t)0x65b, (q15_t)0x1bce, (q15_t)0x661, (q15_t)0x1bda,\n    (q15_t)0x666, (q15_t)0x1be5, (q15_t)0x66c, (q15_t)0x1bf0, (q15_t)0x671, (q15_t)0x1bfc, (q15_t)0x677, (q15_t)0x1c07,\n    (q15_t)0x67c, (q15_t)0x1c12, (q15_t)0x682, (q15_t)0x1c1e, (q15_t)0x687, (q15_t)0x1c29, (q15_t)0x68d, (q15_t)0x1c34,\n    (q15_t)0x692, (q15_t)0x1c3f, (q15_t)0x698, (q15_t)0x1c4b, (q15_t)0x69d, (q15_t)0x1c56, (q15_t)0x6a3, (q15_t)0x1c61,\n    (q15_t)0x6a8, (q15_t)0x1c6c, (q15_t)0x6ae, (q15_t)0x1c78, (q15_t)0x6b4, (q15_t)0x1c83, (q15_t)0x6b9, (q15_t)0x1c8e,\n    (q15_t)0x6bf, (q15_t)0x1c99, (q15_t)0x6c5, (q15_t)0x1ca5, (q15_t)0x6ca, (q15_t)0x1cb0, (q15_t)0x6d0, (q15_t)0x1cbb,\n    (q15_t)0x6d5, (q15_t)0x1cc6, (q15_t)0x6db, (q15_t)0x1cd2, (q15_t)0x6e1, (q15_t)0x1cdd, (q15_t)0x6e6, (q15_t)0x1ce8,\n    (q15_t)0x6ec, (q15_t)0x1cf3, (q15_t)0x6f2, (q15_t)0x1cff, (q15_t)0x6f7, (q15_t)0x1d0a, (q15_t)0x6fd, (q15_t)0x1d15,\n    (q15_t)0x703, (q15_t)0x1d20, (q15_t)0x709, (q15_t)0x1d2b, (q15_t)0x70e, (q15_t)0x1d36, (q15_t)0x714, (q15_t)0x1d42,\n    (q15_t)0x71a, (q15_t)0x1d4d, (q15_t)0x720, (q15_t)0x1d58, (q15_t)0x725, (q15_t)0x1d63, (q15_t)0x72b, (q15_t)0x1d6e,\n    (q15_t)0x731, (q15_t)0x1d79, (q15_t)0x737, (q15_t)0x1d85, (q15_t)0x73d, (q15_t)0x1d90, (q15_t)0x742, (q15_t)0x1d9b,\n    (q15_t)0x748, (q15_t)0x1da6, (q15_t)0x74e, (q15_t)0x1db1, (q15_t)0x754, (q15_t)0x1dbc, (q15_t)0x75a, (q15_t)0x1dc7,\n    (q15_t)0x75f, (q15_t)0x1dd3, (q15_t)0x765, (q15_t)0x1dde, (q15_t)0x76b, (q15_t)0x1de9, (q15_t)0x771, (q15_t)0x1df4,\n    (q15_t)0x777, (q15_t)0x1dff, (q15_t)0x77d, (q15_t)0x1e0a, (q15_t)0x783, (q15_t)0x1e15, (q15_t)0x789, (q15_t)0x1e20,\n    (q15_t)0x78f, (q15_t)0x1e2b, (q15_t)0x795, (q15_t)0x1e36, (q15_t)0x79a, (q15_t)0x1e42, (q15_t)0x7a0, (q15_t)0x1e4d,\n    (q15_t)0x7a6, (q15_t)0x1e58, (q15_t)0x7ac, (q15_t)0x1e63, (q15_t)0x7b2, (q15_t)0x1e6e, (q15_t)0x7b8, (q15_t)0x1e79,\n    (q15_t)0x7be, (q15_t)0x1e84, (q15_t)0x7c4, (q15_t)0x1e8f, (q15_t)0x7ca, (q15_t)0x1e9a, (q15_t)0x7d0, (q15_t)0x1ea5,\n    (q15_t)0x7d6, (q15_t)0x1eb0, (q15_t)0x7dc, (q15_t)0x1ebb, (q15_t)0x7e2, (q15_t)0x1ec6, (q15_t)0x7e8, (q15_t)0x1ed1,\n    (q15_t)0x7ee, (q15_t)0x1edc, (q15_t)0x7f5, (q15_t)0x1ee7, (q15_t)0x7fb, (q15_t)0x1ef2, (q15_t)0x801, (q15_t)0x1efd,\n    (q15_t)0x807, (q15_t)0x1f08, (q15_t)0x80d, (q15_t)0x1f13, (q15_t)0x813, (q15_t)0x1f1e, (q15_t)0x819, (q15_t)0x1f29,\n    (q15_t)0x81f, (q15_t)0x1f34, (q15_t)0x825, (q15_t)0x1f3f, (q15_t)0x82b, (q15_t)0x1f4a, (q15_t)0x832, (q15_t)0x1f55,\n    (q15_t)0x838, (q15_t)0x1f60, (q15_t)0x83e, (q15_t)0x1f6b, (q15_t)0x844, (q15_t)0x1f76, (q15_t)0x84a, (q15_t)0x1f81,\n    (q15_t)0x850, (q15_t)0x1f8c, (q15_t)0x857, (q15_t)0x1f97, (q15_t)0x85d, (q15_t)0x1fa2, (q15_t)0x863, (q15_t)0x1fac,\n    (q15_t)0x869, (q15_t)0x1fb7, (q15_t)0x870, (q15_t)0x1fc2, (q15_t)0x876, (q15_t)0x1fcd, (q15_t)0x87c, (q15_t)0x1fd8,\n    (q15_t)0x882, (q15_t)0x1fe3, (q15_t)0x889, (q15_t)0x1fee, (q15_t)0x88f, (q15_t)0x1ff9, (q15_t)0x895, (q15_t)0x2004,\n    (q15_t)0x89b, (q15_t)0x200f, (q15_t)0x8a2, (q15_t)0x2019, (q15_t)0x8a8, (q15_t)0x2024, (q15_t)0x8ae, (q15_t)0x202f,\n    (q15_t)0x8b5, (q15_t)0x203a, (q15_t)0x8bb, (q15_t)0x2045, (q15_t)0x8c1, (q15_t)0x2050, (q15_t)0x8c8, (q15_t)0x205b,\n    (q15_t)0x8ce, (q15_t)0x2065, (q15_t)0x8d4, (q15_t)0x2070, (q15_t)0x8db, (q15_t)0x207b, (q15_t)0x8e1, (q15_t)0x2086,\n    (q15_t)0x8e8, (q15_t)0x2091, (q15_t)0x8ee, (q15_t)0x209b, (q15_t)0x8f4, (q15_t)0x20a6, (q15_t)0x8fb, (q15_t)0x20b1,\n    (q15_t)0x901, (q15_t)0x20bc, (q15_t)0x908, (q15_t)0x20c7, (q15_t)0x90e, (q15_t)0x20d1, (q15_t)0x915, (q15_t)0x20dc,\n    (q15_t)0x91b, (q15_t)0x20e7, (q15_t)0x921, (q15_t)0x20f2, (q15_t)0x928, (q15_t)0x20fd, (q15_t)0x92e, (q15_t)0x2107,\n    (q15_t)0x935, (q15_t)0x2112, (q15_t)0x93b, (q15_t)0x211d, (q15_t)0x942, (q15_t)0x2128, (q15_t)0x948, (q15_t)0x2132,\n    (q15_t)0x94f, (q15_t)0x213d, (q15_t)0x955, (q15_t)0x2148, (q15_t)0x95c, (q15_t)0x2153, (q15_t)0x963, (q15_t)0x215d,\n    (q15_t)0x969, (q15_t)0x2168, (q15_t)0x970, (q15_t)0x2173, (q15_t)0x976, (q15_t)0x217d, (q15_t)0x97d, (q15_t)0x2188,\n    (q15_t)0x983, (q15_t)0x2193, (q15_t)0x98a, (q15_t)0x219e, (q15_t)0x991, (q15_t)0x21a8, (q15_t)0x997, (q15_t)0x21b3,\n    (q15_t)0x99e, (q15_t)0x21be, (q15_t)0x9a4, (q15_t)0x21c8, (q15_t)0x9ab, (q15_t)0x21d3, (q15_t)0x9b2, (q15_t)0x21de,\n    (q15_t)0x9b8, (q15_t)0x21e8, (q15_t)0x9bf, (q15_t)0x21f3, (q15_t)0x9c6, (q15_t)0x21fe, (q15_t)0x9cc, (q15_t)0x2208,\n    (q15_t)0x9d3, (q15_t)0x2213, (q15_t)0x9da, (q15_t)0x221e, (q15_t)0x9e0, (q15_t)0x2228, (q15_t)0x9e7, (q15_t)0x2233,\n    (q15_t)0x9ee, (q15_t)0x223d, (q15_t)0x9f5, (q15_t)0x2248, (q15_t)0x9fb, (q15_t)0x2253, (q15_t)0xa02, (q15_t)0x225d,\n    (q15_t)0xa09, (q15_t)0x2268, (q15_t)0xa10, (q15_t)0x2272, (q15_t)0xa16, (q15_t)0x227d, (q15_t)0xa1d, (q15_t)0x2288,\n    (q15_t)0xa24, (q15_t)0x2292, (q15_t)0xa2b, (q15_t)0x229d, (q15_t)0xa32, (q15_t)0x22a7, (q15_t)0xa38, (q15_t)0x22b2,\n    (q15_t)0xa3f, (q15_t)0x22bc, (q15_t)0xa46, (q15_t)0x22c7, (q15_t)0xa4d, (q15_t)0x22d2, (q15_t)0xa54, (q15_t)0x22dc,\n    (q15_t)0xa5b, (q15_t)0x22e7, (q15_t)0xa61, (q15_t)0x22f1, (q15_t)0xa68, (q15_t)0x22fc, (q15_t)0xa6f, (q15_t)0x2306,\n    (q15_t)0xa76, (q15_t)0x2311, (q15_t)0xa7d, (q15_t)0x231b, (q15_t)0xa84, (q15_t)0x2326, (q15_t)0xa8b, (q15_t)0x2330,\n    (q15_t)0xa92, (q15_t)0x233b, (q15_t)0xa99, (q15_t)0x2345, (q15_t)0xa9f, (q15_t)0x2350, (q15_t)0xaa6, (q15_t)0x235a,\n    (q15_t)0xaad, (q15_t)0x2365, (q15_t)0xab4, (q15_t)0x236f, (q15_t)0xabb, (q15_t)0x237a, (q15_t)0xac2, (q15_t)0x2384,\n    (q15_t)0xac9, (q15_t)0x238e, (q15_t)0xad0, (q15_t)0x2399, (q15_t)0xad7, (q15_t)0x23a3, (q15_t)0xade, (q15_t)0x23ae,\n    (q15_t)0xae5, (q15_t)0x23b8, (q15_t)0xaec, (q15_t)0x23c3, (q15_t)0xaf3, (q15_t)0x23cd, (q15_t)0xafa, (q15_t)0x23d7,\n    (q15_t)0xb01, (q15_t)0x23e2, (q15_t)0xb08, (q15_t)0x23ec, (q15_t)0xb0f, (q15_t)0x23f7, (q15_t)0xb16, (q15_t)0x2401,\n    (q15_t)0xb1e, (q15_t)0x240b, (q15_t)0xb25, (q15_t)0x2416, (q15_t)0xb2c, (q15_t)0x2420, (q15_t)0xb33, (q15_t)0x242b,\n    (q15_t)0xb3a, (q15_t)0x2435, (q15_t)0xb41, (q15_t)0x243f, (q15_t)0xb48, (q15_t)0x244a, (q15_t)0xb4f, (q15_t)0x2454,\n    (q15_t)0xb56, (q15_t)0x245e, (q15_t)0xb5e, (q15_t)0x2469, (q15_t)0xb65, (q15_t)0x2473, (q15_t)0xb6c, (q15_t)0x247d,\n    (q15_t)0xb73, (q15_t)0x2488, (q15_t)0xb7a, (q15_t)0x2492, (q15_t)0xb81, (q15_t)0x249c, (q15_t)0xb89, (q15_t)0x24a7,\n    (q15_t)0xb90, (q15_t)0x24b1, (q15_t)0xb97, (q15_t)0x24bb, (q15_t)0xb9e, (q15_t)0x24c5, (q15_t)0xba5, (q15_t)0x24d0,\n    (q15_t)0xbad, (q15_t)0x24da, (q15_t)0xbb4, (q15_t)0x24e4, (q15_t)0xbbb, (q15_t)0x24ef, (q15_t)0xbc2, (q15_t)0x24f9,\n    (q15_t)0xbca, (q15_t)0x2503, (q15_t)0xbd1, (q15_t)0x250d, (q15_t)0xbd8, (q15_t)0x2518, (q15_t)0xbe0, (q15_t)0x2522,\n    (q15_t)0xbe7, (q15_t)0x252c, (q15_t)0xbee, (q15_t)0x2536, (q15_t)0xbf5, (q15_t)0x2541, (q15_t)0xbfd, (q15_t)0x254b,\n    (q15_t)0xc04, (q15_t)0x2555, (q15_t)0xc0b, (q15_t)0x255f, (q15_t)0xc13, (q15_t)0x2569, (q15_t)0xc1a, (q15_t)0x2574,\n    (q15_t)0xc21, (q15_t)0x257e, (q15_t)0xc29, (q15_t)0x2588, (q15_t)0xc30, (q15_t)0x2592, (q15_t)0xc38, (q15_t)0x259c,\n    (q15_t)0xc3f, (q15_t)0x25a6, (q15_t)0xc46, (q15_t)0x25b1, (q15_t)0xc4e, (q15_t)0x25bb, (q15_t)0xc55, (q15_t)0x25c5,\n    (q15_t)0xc5d, (q15_t)0x25cf, (q15_t)0xc64, (q15_t)0x25d9, (q15_t)0xc6b, (q15_t)0x25e3, (q15_t)0xc73, (q15_t)0x25ed,\n    (q15_t)0xc7a, (q15_t)0x25f8, (q15_t)0xc82, (q15_t)0x2602, (q15_t)0xc89, (q15_t)0x260c, (q15_t)0xc91, (q15_t)0x2616,\n    (q15_t)0xc98, (q15_t)0x2620, (q15_t)0xca0, (q15_t)0x262a, (q15_t)0xca7, (q15_t)0x2634, (q15_t)0xcaf, (q15_t)0x263e,\n    (q15_t)0xcb6, (q15_t)0x2648, (q15_t)0xcbe, (q15_t)0x2652, (q15_t)0xcc5, (q15_t)0x265c, (q15_t)0xccd, (q15_t)0x2666,\n    (q15_t)0xcd4, (q15_t)0x2671, (q15_t)0xcdc, (q15_t)0x267b, (q15_t)0xce3, (q15_t)0x2685, (q15_t)0xceb, (q15_t)0x268f,\n    (q15_t)0xcf3, (q15_t)0x2699, (q15_t)0xcfa, (q15_t)0x26a3, (q15_t)0xd02, (q15_t)0x26ad, (q15_t)0xd09, (q15_t)0x26b7,\n    (q15_t)0xd11, (q15_t)0x26c1, (q15_t)0xd19, (q15_t)0x26cb, (q15_t)0xd20, (q15_t)0x26d5, (q15_t)0xd28, (q15_t)0x26df,\n    (q15_t)0xd30, (q15_t)0x26e9, (q15_t)0xd37, (q15_t)0x26f3, (q15_t)0xd3f, (q15_t)0x26fd, (q15_t)0xd46, (q15_t)0x2707,\n    (q15_t)0xd4e, (q15_t)0x2711, (q15_t)0xd56, (q15_t)0x271a, (q15_t)0xd5d, (q15_t)0x2724, (q15_t)0xd65, (q15_t)0x272e,\n    (q15_t)0xd6d, (q15_t)0x2738, (q15_t)0xd75, (q15_t)0x2742, (q15_t)0xd7c, (q15_t)0x274c, (q15_t)0xd84, (q15_t)0x2756,\n    (q15_t)0xd8c, (q15_t)0x2760, (q15_t)0xd93, (q15_t)0x276a, (q15_t)0xd9b, (q15_t)0x2774, (q15_t)0xda3, (q15_t)0x277e,\n    (q15_t)0xdab, (q15_t)0x2788, (q15_t)0xdb2, (q15_t)0x2791, (q15_t)0xdba, (q15_t)0x279b, (q15_t)0xdc2, (q15_t)0x27a5,\n    (q15_t)0xdca, (q15_t)0x27af, (q15_t)0xdd2, (q15_t)0x27b9, (q15_t)0xdd9, (q15_t)0x27c3, (q15_t)0xde1, (q15_t)0x27cd,\n    (q15_t)0xde9, (q15_t)0x27d6, (q15_t)0xdf1, (q15_t)0x27e0, (q15_t)0xdf9, (q15_t)0x27ea, (q15_t)0xe01, (q15_t)0x27f4,\n    (q15_t)0xe08, (q15_t)0x27fe, (q15_t)0xe10, (q15_t)0x2808, (q15_t)0xe18, (q15_t)0x2811, (q15_t)0xe20, (q15_t)0x281b,\n    (q15_t)0xe28, (q15_t)0x2825, (q15_t)0xe30, (q15_t)0x282f, (q15_t)0xe38, (q15_t)0x2838, (q15_t)0xe40, (q15_t)0x2842,\n    (q15_t)0xe47, (q15_t)0x284c, (q15_t)0xe4f, (q15_t)0x2856, (q15_t)0xe57, (q15_t)0x2860, (q15_t)0xe5f, (q15_t)0x2869,\n    (q15_t)0xe67, (q15_t)0x2873, (q15_t)0xe6f, (q15_t)0x287d, (q15_t)0xe77, (q15_t)0x2886, (q15_t)0xe7f, (q15_t)0x2890,\n    (q15_t)0xe87, (q15_t)0x289a, (q15_t)0xe8f, (q15_t)0x28a4, (q15_t)0xe97, (q15_t)0x28ad, (q15_t)0xe9f, (q15_t)0x28b7,\n    (q15_t)0xea7, (q15_t)0x28c1, (q15_t)0xeaf, (q15_t)0x28ca, (q15_t)0xeb7, (q15_t)0x28d4, (q15_t)0xebf, (q15_t)0x28de,\n    (q15_t)0xec7, (q15_t)0x28e7, (q15_t)0xecf, (q15_t)0x28f1, (q15_t)0xed7, (q15_t)0x28fb, (q15_t)0xedf, (q15_t)0x2904,\n    (q15_t)0xee7, (q15_t)0x290e, (q15_t)0xeef, (q15_t)0x2918, (q15_t)0xef7, (q15_t)0x2921, (q15_t)0xeff, (q15_t)0x292b,\n    (q15_t)0xf07, (q15_t)0x2935, (q15_t)0xf10, (q15_t)0x293e, (q15_t)0xf18, (q15_t)0x2948, (q15_t)0xf20, (q15_t)0x2951,\n    (q15_t)0xf28, (q15_t)0x295b, (q15_t)0xf30, (q15_t)0x2965, (q15_t)0xf38, (q15_t)0x296e, (q15_t)0xf40, (q15_t)0x2978,\n    (q15_t)0xf48, (q15_t)0x2981, (q15_t)0xf51, (q15_t)0x298b, (q15_t)0xf59, (q15_t)0x2994, (q15_t)0xf61, (q15_t)0x299e,\n    (q15_t)0xf69, (q15_t)0x29a7, (q15_t)0xf71, (q15_t)0x29b1, (q15_t)0xf79, (q15_t)0x29bb, (q15_t)0xf82, (q15_t)0x29c4,\n    (q15_t)0xf8a, (q15_t)0x29ce, (q15_t)0xf92, (q15_t)0x29d7, (q15_t)0xf9a, (q15_t)0x29e1, (q15_t)0xfa3, (q15_t)0x29ea,\n    (q15_t)0xfab, (q15_t)0x29f4, (q15_t)0xfb3, (q15_t)0x29fd, (q15_t)0xfbb, (q15_t)0x2a07, (q15_t)0xfc4, (q15_t)0x2a10,\n    (q15_t)0xfcc, (q15_t)0x2a1a, (q15_t)0xfd4, (q15_t)0x2a23, (q15_t)0xfdc, (q15_t)0x2a2c, (q15_t)0xfe5, (q15_t)0x2a36,\n    (q15_t)0xfed, (q15_t)0x2a3f, (q15_t)0xff5, (q15_t)0x2a49, (q15_t)0xffe, (q15_t)0x2a52, (q15_t)0x1006, (q15_t)0x2a5c,\n    (q15_t)0x100e, (q15_t)0x2a65, (q15_t)0x1016, (q15_t)0x2a6e, (q15_t)0x101f, (q15_t)0x2a78, (q15_t)0x1027, (q15_t)0x2a81,\n    (q15_t)0x1030, (q15_t)0x2a8b, (q15_t)0x1038, (q15_t)0x2a94, (q15_t)0x1040, (q15_t)0x2a9d, (q15_t)0x1049, (q15_t)0x2aa7,\n    (q15_t)0x1051, (q15_t)0x2ab0, (q15_t)0x1059, (q15_t)0x2ab9, (q15_t)0x1062, (q15_t)0x2ac3, (q15_t)0x106a, (q15_t)0x2acc,\n    (q15_t)0x1073, (q15_t)0x2ad6, (q15_t)0x107b, (q15_t)0x2adf, (q15_t)0x1083, (q15_t)0x2ae8, (q15_t)0x108c, (q15_t)0x2af2,\n    (q15_t)0x1094, (q15_t)0x2afb, (q15_t)0x109d, (q15_t)0x2b04, (q15_t)0x10a5, (q15_t)0x2b0d, (q15_t)0x10ae, (q15_t)0x2b17,\n    (q15_t)0x10b6, (q15_t)0x2b20, (q15_t)0x10bf, (q15_t)0x2b29, (q15_t)0x10c7, (q15_t)0x2b33, (q15_t)0x10d0, (q15_t)0x2b3c,\n    (q15_t)0x10d8, (q15_t)0x2b45, (q15_t)0x10e0, (q15_t)0x2b4e, (q15_t)0x10e9, (q15_t)0x2b58, (q15_t)0x10f2, (q15_t)0x2b61,\n    (q15_t)0x10fa, (q15_t)0x2b6a, (q15_t)0x1103, (q15_t)0x2b73, (q15_t)0x110b, (q15_t)0x2b7d, (q15_t)0x1114, (q15_t)0x2b86,\n    (q15_t)0x111c, (q15_t)0x2b8f, (q15_t)0x1125, (q15_t)0x2b98, (q15_t)0x112d, (q15_t)0x2ba1, (q15_t)0x1136, (q15_t)0x2bab,\n    (q15_t)0x113e, (q15_t)0x2bb4, (q15_t)0x1147, (q15_t)0x2bbd, (q15_t)0x1150, (q15_t)0x2bc6, (q15_t)0x1158, (q15_t)0x2bcf,\n    (q15_t)0x1161, (q15_t)0x2bd8, (q15_t)0x1169, (q15_t)0x2be2, (q15_t)0x1172, (q15_t)0x2beb, (q15_t)0x117b, (q15_t)0x2bf4,\n    (q15_t)0x1183, (q15_t)0x2bfd, (q15_t)0x118c, (q15_t)0x2c06, (q15_t)0x1195, (q15_t)0x2c0f, (q15_t)0x119d, (q15_t)0x2c18,\n    (q15_t)0x11a6, (q15_t)0x2c21, (q15_t)0x11af, (q15_t)0x2c2b, (q15_t)0x11b7, (q15_t)0x2c34, (q15_t)0x11c0, (q15_t)0x2c3d,\n    (q15_t)0x11c9, (q15_t)0x2c46, (q15_t)0x11d1, (q15_t)0x2c4f, (q15_t)0x11da, (q15_t)0x2c58, (q15_t)0x11e3, (q15_t)0x2c61,\n    (q15_t)0x11eb, (q15_t)0x2c6a, (q15_t)0x11f4, (q15_t)0x2c73, (q15_t)0x11fd, (q15_t)0x2c7c, (q15_t)0x1206, (q15_t)0x2c85,\n    (q15_t)0x120e, (q15_t)0x2c8e, (q15_t)0x1217, (q15_t)0x2c97, (q15_t)0x1220, (q15_t)0x2ca0, (q15_t)0x1229, (q15_t)0x2ca9,\n    (q15_t)0x1231, (q15_t)0x2cb2, (q15_t)0x123a, (q15_t)0x2cbb, (q15_t)0x1243, (q15_t)0x2cc4, (q15_t)0x124c, (q15_t)0x2ccd,\n    (q15_t)0x1255, (q15_t)0x2cd6, (q15_t)0x125d, (q15_t)0x2cdf, (q15_t)0x1266, (q15_t)0x2ce8, (q15_t)0x126f, (q15_t)0x2cf1,\n    (q15_t)0x1278, (q15_t)0x2cfa, (q15_t)0x1281, (q15_t)0x2d03, (q15_t)0x128a, (q15_t)0x2d0c, (q15_t)0x1292, (q15_t)0x2d15,\n    (q15_t)0x129b, (q15_t)0x2d1e, (q15_t)0x12a4, (q15_t)0x2d27, (q15_t)0x12ad, (q15_t)0x2d2f, (q15_t)0x12b6, (q15_t)0x2d38,\n    (q15_t)0x12bf, (q15_t)0x2d41, (q15_t)0x12c8, (q15_t)0x2d4a, (q15_t)0x12d1, (q15_t)0x2d53, (q15_t)0x12d9, (q15_t)0x2d5c,\n    (q15_t)0x12e2, (q15_t)0x2d65, (q15_t)0x12eb, (q15_t)0x2d6e, (q15_t)0x12f4, (q15_t)0x2d76, (q15_t)0x12fd, (q15_t)0x2d7f,\n    (q15_t)0x1306, (q15_t)0x2d88, (q15_t)0x130f, (q15_t)0x2d91, (q15_t)0x1318, (q15_t)0x2d9a, (q15_t)0x1321, (q15_t)0x2da3,\n    (q15_t)0x132a, (q15_t)0x2dab, (q15_t)0x1333, (q15_t)0x2db4, (q15_t)0x133c, (q15_t)0x2dbd, (q15_t)0x1345, (q15_t)0x2dc6,\n    (q15_t)0x134e, (q15_t)0x2dcf, (q15_t)0x1357, (q15_t)0x2dd7, (q15_t)0x1360, (q15_t)0x2de0, (q15_t)0x1369, (q15_t)0x2de9,\n    (q15_t)0x1372, (q15_t)0x2df2, (q15_t)0x137b, (q15_t)0x2dfa, (q15_t)0x1384, (q15_t)0x2e03, (q15_t)0x138d, (q15_t)0x2e0c,\n    (q15_t)0x1396, (q15_t)0x2e15, (q15_t)0x139f, (q15_t)0x2e1d, (q15_t)0x13a8, (q15_t)0x2e26, (q15_t)0x13b1, (q15_t)0x2e2f,\n    (q15_t)0x13ba, (q15_t)0x2e37, (q15_t)0x13c3, (q15_t)0x2e40, (q15_t)0x13cc, (q15_t)0x2e49, (q15_t)0x13d5, (q15_t)0x2e51,\n    (q15_t)0x13df, (q15_t)0x2e5a, (q15_t)0x13e8, (q15_t)0x2e63, (q15_t)0x13f1, (q15_t)0x2e6b, (q15_t)0x13fa, (q15_t)0x2e74,\n    (q15_t)0x1403, (q15_t)0x2e7d, (q15_t)0x140c, (q15_t)0x2e85, (q15_t)0x1415, (q15_t)0x2e8e, (q15_t)0x141e, (q15_t)0x2e97,\n    (q15_t)0x1428, (q15_t)0x2e9f, (q15_t)0x1431, (q15_t)0x2ea8, (q15_t)0x143a, (q15_t)0x2eb0, (q15_t)0x1443, (q15_t)0x2eb9,\n    (q15_t)0x144c, (q15_t)0x2ec2, (q15_t)0x1455, (q15_t)0x2eca, (q15_t)0x145f, (q15_t)0x2ed3, (q15_t)0x1468, (q15_t)0x2edb,\n    (q15_t)0x1471, (q15_t)0x2ee4, (q15_t)0x147a, (q15_t)0x2eec, (q15_t)0x1483, (q15_t)0x2ef5, (q15_t)0x148d, (q15_t)0x2efd,\n    (q15_t)0x1496, (q15_t)0x2f06, (q15_t)0x149f, (q15_t)0x2f0e, (q15_t)0x14a8, (q15_t)0x2f17, (q15_t)0x14b2, (q15_t)0x2f20,\n    (q15_t)0x14bb, (q15_t)0x2f28, (q15_t)0x14c4, (q15_t)0x2f30, (q15_t)0x14cd, (q15_t)0x2f39, (q15_t)0x14d7, (q15_t)0x2f41,\n    (q15_t)0x14e0, (q15_t)0x2f4a, (q15_t)0x14e9, (q15_t)0x2f52, (q15_t)0x14f3, (q15_t)0x2f5b, (q15_t)0x14fc, (q15_t)0x2f63,\n    (q15_t)0x1505, (q15_t)0x2f6c, (q15_t)0x150e, (q15_t)0x2f74, (q15_t)0x1518, (q15_t)0x2f7d, (q15_t)0x1521, (q15_t)0x2f85,\n    (q15_t)0x152a, (q15_t)0x2f8d, (q15_t)0x1534, (q15_t)0x2f96, (q15_t)0x153d, (q15_t)0x2f9e, (q15_t)0x1547, (q15_t)0x2fa7,\n    (q15_t)0x1550, (q15_t)0x2faf, (q15_t)0x1559, (q15_t)0x2fb7, (q15_t)0x1563, (q15_t)0x2fc0, (q15_t)0x156c, (q15_t)0x2fc8,\n    (q15_t)0x1575, (q15_t)0x2fd0, (q15_t)0x157f, (q15_t)0x2fd9, (q15_t)0x1588, (q15_t)0x2fe1, (q15_t)0x1592, (q15_t)0x2fea,\n    (q15_t)0x159b, (q15_t)0x2ff2, (q15_t)0x15a4, (q15_t)0x2ffa, (q15_t)0x15ae, (q15_t)0x3002, (q15_t)0x15b7, (q15_t)0x300b,\n    (q15_t)0x15c1, (q15_t)0x3013, (q15_t)0x15ca, (q15_t)0x301b, (q15_t)0x15d4, (q15_t)0x3024, (q15_t)0x15dd, (q15_t)0x302c,\n    (q15_t)0x15e6, (q15_t)0x3034, (q15_t)0x15f0, (q15_t)0x303c, (q15_t)0x15f9, (q15_t)0x3045, (q15_t)0x1603, (q15_t)0x304d,\n    (q15_t)0x160c, (q15_t)0x3055, (q15_t)0x1616, (q15_t)0x305d, (q15_t)0x161f, (q15_t)0x3066, (q15_t)0x1629, (q15_t)0x306e,\n    (q15_t)0x1632, (q15_t)0x3076, (q15_t)0x163c, (q15_t)0x307e, (q15_t)0x1645, (q15_t)0x3087, (q15_t)0x164f, (q15_t)0x308f,\n    (q15_t)0x1659, (q15_t)0x3097, (q15_t)0x1662, (q15_t)0x309f, (q15_t)0x166c, (q15_t)0x30a7, (q15_t)0x1675, (q15_t)0x30af,\n    (q15_t)0x167f, (q15_t)0x30b8, (q15_t)0x1688, (q15_t)0x30c0, (q15_t)0x1692, (q15_t)0x30c8, (q15_t)0x169b, (q15_t)0x30d0,\n    (q15_t)0x16a5, (q15_t)0x30d8, (q15_t)0x16af, (q15_t)0x30e0, (q15_t)0x16b8, (q15_t)0x30e8, (q15_t)0x16c2, (q15_t)0x30f0,\n    (q15_t)0x16cb, (q15_t)0x30f9, (q15_t)0x16d5, (q15_t)0x3101, (q15_t)0x16df, (q15_t)0x3109, (q15_t)0x16e8, (q15_t)0x3111,\n    (q15_t)0x16f2, (q15_t)0x3119, (q15_t)0x16fc, (q15_t)0x3121, (q15_t)0x1705, (q15_t)0x3129, (q15_t)0x170f, (q15_t)0x3131,\n    (q15_t)0x1719, (q15_t)0x3139, (q15_t)0x1722, (q15_t)0x3141, (q15_t)0x172c, (q15_t)0x3149, (q15_t)0x1736, (q15_t)0x3151,\n    (q15_t)0x173f, (q15_t)0x3159, (q15_t)0x1749, (q15_t)0x3161, (q15_t)0x1753, (q15_t)0x3169, (q15_t)0x175c, (q15_t)0x3171,\n    (q15_t)0x1766, (q15_t)0x3179, (q15_t)0x1770, (q15_t)0x3181, (q15_t)0x177a, (q15_t)0x3189, (q15_t)0x1783, (q15_t)0x3191,\n    (q15_t)0x178d, (q15_t)0x3199, (q15_t)0x1797, (q15_t)0x31a1, (q15_t)0x17a0, (q15_t)0x31a9, (q15_t)0x17aa, (q15_t)0x31b1,\n    (q15_t)0x17b4, (q15_t)0x31b9, (q15_t)0x17be, (q15_t)0x31c0, (q15_t)0x17c8, (q15_t)0x31c8, (q15_t)0x17d1, (q15_t)0x31d0,\n    (q15_t)0x17db, (q15_t)0x31d8, (q15_t)0x17e5, (q15_t)0x31e0, (q15_t)0x17ef, (q15_t)0x31e8, (q15_t)0x17f8, (q15_t)0x31f0,\n    (q15_t)0x1802, (q15_t)0x31f8, (q15_t)0x180c, (q15_t)0x31ff, (q15_t)0x1816, (q15_t)0x3207, (q15_t)0x1820, (q15_t)0x320f,\n    (q15_t)0x182a, (q15_t)0x3217, (q15_t)0x1833, (q15_t)0x321f, (q15_t)0x183d, (q15_t)0x3227, (q15_t)0x1847, (q15_t)0x322e,\n    (q15_t)0x1851, (q15_t)0x3236, (q15_t)0x185b, (q15_t)0x323e, (q15_t)0x1865, (q15_t)0x3246, (q15_t)0x186f, (q15_t)0x324e,\n    (q15_t)0x1878, (q15_t)0x3255, (q15_t)0x1882, (q15_t)0x325d, (q15_t)0x188c, (q15_t)0x3265, (q15_t)0x1896, (q15_t)0x326d,\n    (q15_t)0x18a0, (q15_t)0x3274, (q15_t)0x18aa, (q15_t)0x327c, (q15_t)0x18b4, (q15_t)0x3284, (q15_t)0x18be, (q15_t)0x328b,\n    (q15_t)0x18c8, (q15_t)0x3293, (q15_t)0x18d2, (q15_t)0x329b, (q15_t)0x18dc, (q15_t)0x32a3, (q15_t)0x18e6, (q15_t)0x32aa,\n    (q15_t)0x18ef, (q15_t)0x32b2, (q15_t)0x18f9, (q15_t)0x32ba, (q15_t)0x1903, (q15_t)0x32c1, (q15_t)0x190d, (q15_t)0x32c9,\n    (q15_t)0x1917, (q15_t)0x32d0, (q15_t)0x1921, (q15_t)0x32d8, (q15_t)0x192b, (q15_t)0x32e0, (q15_t)0x1935, (q15_t)0x32e7,\n    (q15_t)0x193f, (q15_t)0x32ef, (q15_t)0x1949, (q15_t)0x32f7, (q15_t)0x1953, (q15_t)0x32fe, (q15_t)0x195d, (q15_t)0x3306,\n    (q15_t)0x1967, (q15_t)0x330d, (q15_t)0x1971, (q15_t)0x3315, (q15_t)0x197b, (q15_t)0x331d, (q15_t)0x1985, (q15_t)0x3324,\n    (q15_t)0x198f, (q15_t)0x332c, (q15_t)0x199a, (q15_t)0x3333, (q15_t)0x19a4, (q15_t)0x333b, (q15_t)0x19ae, (q15_t)0x3342,\n    (q15_t)0x19b8, (q15_t)0x334a, (q15_t)0x19c2, (q15_t)0x3351, (q15_t)0x19cc, (q15_t)0x3359, (q15_t)0x19d6, (q15_t)0x3360,\n    (q15_t)0x19e0, (q15_t)0x3368, (q15_t)0x19ea, (q15_t)0x336f, (q15_t)0x19f4, (q15_t)0x3377, (q15_t)0x19fe, (q15_t)0x337e,\n    (q15_t)0x1a08, (q15_t)0x3386, (q15_t)0x1a13, (q15_t)0x338d, (q15_t)0x1a1d, (q15_t)0x3395, (q15_t)0x1a27, (q15_t)0x339c,\n    (q15_t)0x1a31, (q15_t)0x33a3, (q15_t)0x1a3b, (q15_t)0x33ab, (q15_t)0x1a45, (q15_t)0x33b2, (q15_t)0x1a4f, (q15_t)0x33ba,\n    (q15_t)0x1a5a, (q15_t)0x33c1, (q15_t)0x1a64, (q15_t)0x33c8, (q15_t)0x1a6e, (q15_t)0x33d0, (q15_t)0x1a78, (q15_t)0x33d7,\n    (q15_t)0x1a82, (q15_t)0x33df, (q15_t)0x1a8c, (q15_t)0x33e6, (q15_t)0x1a97, (q15_t)0x33ed, (q15_t)0x1aa1, (q15_t)0x33f5,\n    (q15_t)0x1aab, (q15_t)0x33fc, (q15_t)0x1ab5, (q15_t)0x3403, (q15_t)0x1abf, (q15_t)0x340b, (q15_t)0x1aca, (q15_t)0x3412,\n    (q15_t)0x1ad4, (q15_t)0x3419, (q15_t)0x1ade, (q15_t)0x3420, (q15_t)0x1ae8, (q15_t)0x3428, (q15_t)0x1af3, (q15_t)0x342f,\n    (q15_t)0x1afd, (q15_t)0x3436, (q15_t)0x1b07, (q15_t)0x343e, (q15_t)0x1b11, (q15_t)0x3445, (q15_t)0x1b1c, (q15_t)0x344c,\n    (q15_t)0x1b26, (q15_t)0x3453, (q15_t)0x1b30, (q15_t)0x345b, (q15_t)0x1b3b, (q15_t)0x3462, (q15_t)0x1b45, (q15_t)0x3469,\n    (q15_t)0x1b4f, (q15_t)0x3470, (q15_t)0x1b59, (q15_t)0x3477, (q15_t)0x1b64, (q15_t)0x347f, (q15_t)0x1b6e, (q15_t)0x3486,\n    (q15_t)0x1b78, (q15_t)0x348d, (q15_t)0x1b83, (q15_t)0x3494, (q15_t)0x1b8d, (q15_t)0x349b, (q15_t)0x1b97, (q15_t)0x34a2,\n    (q15_t)0x1ba2, (q15_t)0x34aa, (q15_t)0x1bac, (q15_t)0x34b1, (q15_t)0x1bb6, (q15_t)0x34b8, (q15_t)0x1bc1, (q15_t)0x34bf,\n    (q15_t)0x1bcb, (q15_t)0x34c6, (q15_t)0x1bd5, (q15_t)0x34cd, (q15_t)0x1be0, (q15_t)0x34d4, (q15_t)0x1bea, (q15_t)0x34db,\n    (q15_t)0x1bf5, (q15_t)0x34e2, (q15_t)0x1bff, (q15_t)0x34ea, (q15_t)0x1c09, (q15_t)0x34f1, (q15_t)0x1c14, (q15_t)0x34f8,\n    (q15_t)0x1c1e, (q15_t)0x34ff, (q15_t)0x1c29, (q15_t)0x3506, (q15_t)0x1c33, (q15_t)0x350d, (q15_t)0x1c3d, (q15_t)0x3514,\n    (q15_t)0x1c48, (q15_t)0x351b, (q15_t)0x1c52, (q15_t)0x3522, (q15_t)0x1c5d, (q15_t)0x3529, (q15_t)0x1c67, (q15_t)0x3530,\n    (q15_t)0x1c72, (q15_t)0x3537, (q15_t)0x1c7c, (q15_t)0x353e, (q15_t)0x1c86, (q15_t)0x3545, (q15_t)0x1c91, (q15_t)0x354c,\n    (q15_t)0x1c9b, (q15_t)0x3553, (q15_t)0x1ca6, (q15_t)0x355a, (q15_t)0x1cb0, (q15_t)0x3561, (q15_t)0x1cbb, (q15_t)0x3567,\n    (q15_t)0x1cc5, (q15_t)0x356e, (q15_t)0x1cd0, (q15_t)0x3575, (q15_t)0x1cda, (q15_t)0x357c, (q15_t)0x1ce5, (q15_t)0x3583,\n    (q15_t)0x1cef, (q15_t)0x358a, (q15_t)0x1cfa, (q15_t)0x3591, (q15_t)0x1d04, (q15_t)0x3598, (q15_t)0x1d0f, (q15_t)0x359f,\n    (q15_t)0x1d19, (q15_t)0x35a5, (q15_t)0x1d24, (q15_t)0x35ac, (q15_t)0x1d2e, (q15_t)0x35b3, (q15_t)0x1d39, (q15_t)0x35ba,\n    (q15_t)0x1d44, (q15_t)0x35c1, (q15_t)0x1d4e, (q15_t)0x35c8, (q15_t)0x1d59, (q15_t)0x35ce, (q15_t)0x1d63, (q15_t)0x35d5,\n    (q15_t)0x1d6e, (q15_t)0x35dc, (q15_t)0x1d78, (q15_t)0x35e3, (q15_t)0x1d83, (q15_t)0x35ea, (q15_t)0x1d8e, (q15_t)0x35f0,\n    (q15_t)0x1d98, (q15_t)0x35f7, (q15_t)0x1da3, (q15_t)0x35fe, (q15_t)0x1dad, (q15_t)0x3605, (q15_t)0x1db8, (q15_t)0x360b,\n    (q15_t)0x1dc3, (q15_t)0x3612, (q15_t)0x1dcd, (q15_t)0x3619, (q15_t)0x1dd8, (q15_t)0x3620, (q15_t)0x1de2, (q15_t)0x3626,\n    (q15_t)0x1ded, (q15_t)0x362d, (q15_t)0x1df8, (q15_t)0x3634, (q15_t)0x1e02, (q15_t)0x363a, (q15_t)0x1e0d, (q15_t)0x3641,\n    (q15_t)0x1e18, (q15_t)0x3648, (q15_t)0x1e22, (q15_t)0x364e, (q15_t)0x1e2d, (q15_t)0x3655, (q15_t)0x1e38, (q15_t)0x365c,\n    (q15_t)0x1e42, (q15_t)0x3662, (q15_t)0x1e4d, (q15_t)0x3669, (q15_t)0x1e58, (q15_t)0x366f, (q15_t)0x1e62, (q15_t)0x3676,\n    (q15_t)0x1e6d, (q15_t)0x367d, (q15_t)0x1e78, (q15_t)0x3683, (q15_t)0x1e83, (q15_t)0x368a, (q15_t)0x1e8d, (q15_t)0x3690,\n    (q15_t)0x1e98, (q15_t)0x3697, (q15_t)0x1ea3, (q15_t)0x369d, (q15_t)0x1ead, (q15_t)0x36a4, (q15_t)0x1eb8, (q15_t)0x36ab,\n    (q15_t)0x1ec3, (q15_t)0x36b1, (q15_t)0x1ece, (q15_t)0x36b8, (q15_t)0x1ed8, (q15_t)0x36be, (q15_t)0x1ee3, (q15_t)0x36c5,\n    (q15_t)0x1eee, (q15_t)0x36cb, (q15_t)0x1ef9, (q15_t)0x36d2, (q15_t)0x1f03, (q15_t)0x36d8, (q15_t)0x1f0e, (q15_t)0x36df,\n    (q15_t)0x1f19, (q15_t)0x36e5, (q15_t)0x1f24, (q15_t)0x36eb, (q15_t)0x1f2f, (q15_t)0x36f2, (q15_t)0x1f39, (q15_t)0x36f8,\n    (q15_t)0x1f44, (q15_t)0x36ff, (q15_t)0x1f4f, (q15_t)0x3705, (q15_t)0x1f5a, (q15_t)0x370c, (q15_t)0x1f65, (q15_t)0x3712,\n    (q15_t)0x1f6f, (q15_t)0x3718, (q15_t)0x1f7a, (q15_t)0x371f, (q15_t)0x1f85, (q15_t)0x3725, (q15_t)0x1f90, (q15_t)0x372c,\n    (q15_t)0x1f9b, (q15_t)0x3732, (q15_t)0x1fa5, (q15_t)0x3738, (q15_t)0x1fb0, (q15_t)0x373f, (q15_t)0x1fbb, (q15_t)0x3745,\n    (q15_t)0x1fc6, (q15_t)0x374b, (q15_t)0x1fd1, (q15_t)0x3752, (q15_t)0x1fdc, (q15_t)0x3758, (q15_t)0x1fe7, (q15_t)0x375e,\n    (q15_t)0x1ff1, (q15_t)0x3765, (q15_t)0x1ffc, (q15_t)0x376b, (q15_t)0x2007, (q15_t)0x3771, (q15_t)0x2012, (q15_t)0x3777,\n    (q15_t)0x201d, (q15_t)0x377e, (q15_t)0x2028, (q15_t)0x3784, (q15_t)0x2033, (q15_t)0x378a, (q15_t)0x203e, (q15_t)0x3790,\n    (q15_t)0x2049, (q15_t)0x3797, (q15_t)0x2054, (q15_t)0x379d, (q15_t)0x205e, (q15_t)0x37a3, (q15_t)0x2069, (q15_t)0x37a9,\n    (q15_t)0x2074, (q15_t)0x37b0, (q15_t)0x207f, (q15_t)0x37b6, (q15_t)0x208a, (q15_t)0x37bc, (q15_t)0x2095, (q15_t)0x37c2,\n    (q15_t)0x20a0, (q15_t)0x37c8, (q15_t)0x20ab, (q15_t)0x37ce, (q15_t)0x20b6, (q15_t)0x37d5, (q15_t)0x20c1, (q15_t)0x37db,\n    (q15_t)0x20cc, (q15_t)0x37e1, (q15_t)0x20d7, (q15_t)0x37e7, (q15_t)0x20e2, (q15_t)0x37ed, (q15_t)0x20ed, (q15_t)0x37f3,\n    (q15_t)0x20f8, (q15_t)0x37f9, (q15_t)0x2103, (q15_t)0x37ff, (q15_t)0x210e, (q15_t)0x3805, (q15_t)0x2119, (q15_t)0x380b,\n    (q15_t)0x2124, (q15_t)0x3812, (q15_t)0x212f, (q15_t)0x3818, (q15_t)0x213a, (q15_t)0x381e, (q15_t)0x2145, (q15_t)0x3824,\n    (q15_t)0x2150, (q15_t)0x382a, (q15_t)0x215b, (q15_t)0x3830, (q15_t)0x2166, (q15_t)0x3836, (q15_t)0x2171, (q15_t)0x383c,\n    (q15_t)0x217c, (q15_t)0x3842, (q15_t)0x2187, (q15_t)0x3848, (q15_t)0x2192, (q15_t)0x384e, (q15_t)0x219d, (q15_t)0x3854,\n    (q15_t)0x21a8, (q15_t)0x385a, (q15_t)0x21b3, (q15_t)0x3860, (q15_t)0x21be, (q15_t)0x3866, (q15_t)0x21ca, (q15_t)0x386b,\n    (q15_t)0x21d5, (q15_t)0x3871, (q15_t)0x21e0, (q15_t)0x3877, (q15_t)0x21eb, (q15_t)0x387d, (q15_t)0x21f6, (q15_t)0x3883,\n    (q15_t)0x2201, (q15_t)0x3889, (q15_t)0x220c, (q15_t)0x388f, (q15_t)0x2217, (q15_t)0x3895, (q15_t)0x2222, (q15_t)0x389b,\n    (q15_t)0x222d, (q15_t)0x38a1, (q15_t)0x2239, (q15_t)0x38a6, (q15_t)0x2244, (q15_t)0x38ac, (q15_t)0x224f, (q15_t)0x38b2,\n    (q15_t)0x225a, (q15_t)0x38b8, (q15_t)0x2265, (q15_t)0x38be, (q15_t)0x2270, (q15_t)0x38c3, (q15_t)0x227b, (q15_t)0x38c9,\n    (q15_t)0x2287, (q15_t)0x38cf, (q15_t)0x2292, (q15_t)0x38d5, (q15_t)0x229d, (q15_t)0x38db, (q15_t)0x22a8, (q15_t)0x38e0,\n    (q15_t)0x22b3, (q15_t)0x38e6, (q15_t)0x22be, (q15_t)0x38ec, (q15_t)0x22ca, (q15_t)0x38f2, (q15_t)0x22d5, (q15_t)0x38f7,\n    (q15_t)0x22e0, (q15_t)0x38fd, (q15_t)0x22eb, (q15_t)0x3903, (q15_t)0x22f6, (q15_t)0x3909, (q15_t)0x2301, (q15_t)0x390e,\n    (q15_t)0x230d, (q15_t)0x3914, (q15_t)0x2318, (q15_t)0x391a, (q15_t)0x2323, (q15_t)0x391f, (q15_t)0x232e, (q15_t)0x3925,\n    (q15_t)0x233a, (q15_t)0x392b, (q15_t)0x2345, (q15_t)0x3930, (q15_t)0x2350, (q15_t)0x3936, (q15_t)0x235b, (q15_t)0x393b,\n    (q15_t)0x2367, (q15_t)0x3941, (q15_t)0x2372, (q15_t)0x3947, (q15_t)0x237d, (q15_t)0x394c, (q15_t)0x2388, (q15_t)0x3952,\n    (q15_t)0x2394, (q15_t)0x3958, (q15_t)0x239f, (q15_t)0x395d, (q15_t)0x23aa, (q15_t)0x3963, (q15_t)0x23b5, (q15_t)0x3968,\n    (q15_t)0x23c1, (q15_t)0x396e, (q15_t)0x23cc, (q15_t)0x3973, (q15_t)0x23d7, (q15_t)0x3979, (q15_t)0x23e2, (q15_t)0x397e,\n    (q15_t)0x23ee, (q15_t)0x3984, (q15_t)0x23f9, (q15_t)0x3989, (q15_t)0x2404, (q15_t)0x398f, (q15_t)0x2410, (q15_t)0x3994,\n    (q15_t)0x241b, (q15_t)0x399a, (q15_t)0x2426, (q15_t)0x399f, (q15_t)0x2432, (q15_t)0x39a5, (q15_t)0x243d, (q15_t)0x39aa,\n    (q15_t)0x2448, (q15_t)0x39b0, (q15_t)0x2454, (q15_t)0x39b5, (q15_t)0x245f, (q15_t)0x39bb, (q15_t)0x246a, (q15_t)0x39c0,\n    (q15_t)0x2476, (q15_t)0x39c5, (q15_t)0x2481, (q15_t)0x39cb, (q15_t)0x248c, (q15_t)0x39d0, (q15_t)0x2498, (q15_t)0x39d6,\n    (q15_t)0x24a3, (q15_t)0x39db, (q15_t)0x24ae, (q15_t)0x39e0, (q15_t)0x24ba, (q15_t)0x39e6, (q15_t)0x24c5, (q15_t)0x39eb,\n    (q15_t)0x24d0, (q15_t)0x39f0, (q15_t)0x24dc, (q15_t)0x39f6, (q15_t)0x24e7, (q15_t)0x39fb, (q15_t)0x24f3, (q15_t)0x3a00,\n    (q15_t)0x24fe, (q15_t)0x3a06, (q15_t)0x2509, (q15_t)0x3a0b, (q15_t)0x2515, (q15_t)0x3a10, (q15_t)0x2520, (q15_t)0x3a16,\n    (q15_t)0x252c, (q15_t)0x3a1b, (q15_t)0x2537, (q15_t)0x3a20, (q15_t)0x2542, (q15_t)0x3a25, (q15_t)0x254e, (q15_t)0x3a2b,\n    (q15_t)0x2559, (q15_t)0x3a30, (q15_t)0x2565, (q15_t)0x3a35, (q15_t)0x2570, (q15_t)0x3a3a, (q15_t)0x257c, (q15_t)0x3a3f,\n    (q15_t)0x2587, (q15_t)0x3a45, (q15_t)0x2592, (q15_t)0x3a4a, (q15_t)0x259e, (q15_t)0x3a4f, (q15_t)0x25a9, (q15_t)0x3a54,\n    (q15_t)0x25b5, (q15_t)0x3a59, (q15_t)0x25c0, (q15_t)0x3a5f, (q15_t)0x25cc, (q15_t)0x3a64, (q15_t)0x25d7, (q15_t)0x3a69,\n    (q15_t)0x25e3, (q15_t)0x3a6e, (q15_t)0x25ee, (q15_t)0x3a73, (q15_t)0x25fa, (q15_t)0x3a78, (q15_t)0x2605, (q15_t)0x3a7d,\n    (q15_t)0x2611, (q15_t)0x3a82, (q15_t)0x261c, (q15_t)0x3a88, (q15_t)0x2628, (q15_t)0x3a8d, (q15_t)0x2633, (q15_t)0x3a92,\n    (q15_t)0x263f, (q15_t)0x3a97, (q15_t)0x264a, (q15_t)0x3a9c, (q15_t)0x2656, (q15_t)0x3aa1, (q15_t)0x2661, (q15_t)0x3aa6,\n    (q15_t)0x266d, (q15_t)0x3aab, (q15_t)0x2678, (q15_t)0x3ab0, (q15_t)0x2684, (q15_t)0x3ab5, (q15_t)0x268f, (q15_t)0x3aba,\n    (q15_t)0x269b, (q15_t)0x3abf, (q15_t)0x26a6, (q15_t)0x3ac4, (q15_t)0x26b2, (q15_t)0x3ac9, (q15_t)0x26bd, (q15_t)0x3ace,\n    (q15_t)0x26c9, (q15_t)0x3ad3, (q15_t)0x26d4, (q15_t)0x3ad8, (q15_t)0x26e0, (q15_t)0x3add, (q15_t)0x26ec, (q15_t)0x3ae2,\n    (q15_t)0x26f7, (q15_t)0x3ae6, (q15_t)0x2703, (q15_t)0x3aeb, (q15_t)0x270e, (q15_t)0x3af0, (q15_t)0x271a, (q15_t)0x3af5,\n    (q15_t)0x2725, (q15_t)0x3afa, (q15_t)0x2731, (q15_t)0x3aff, (q15_t)0x273d, (q15_t)0x3b04, (q15_t)0x2748, (q15_t)0x3b09,\n    (q15_t)0x2754, (q15_t)0x3b0e, (q15_t)0x275f, (q15_t)0x3b12, (q15_t)0x276b, (q15_t)0x3b17, (q15_t)0x2777, (q15_t)0x3b1c,\n    (q15_t)0x2782, (q15_t)0x3b21, (q15_t)0x278e, (q15_t)0x3b26, (q15_t)0x2799, (q15_t)0x3b2a, (q15_t)0x27a5, (q15_t)0x3b2f,\n    (q15_t)0x27b1, (q15_t)0x3b34, (q15_t)0x27bc, (q15_t)0x3b39, (q15_t)0x27c8, (q15_t)0x3b3e, (q15_t)0x27d3, (q15_t)0x3b42,\n    (q15_t)0x27df, (q15_t)0x3b47, (q15_t)0x27eb, (q15_t)0x3b4c, (q15_t)0x27f6, (q15_t)0x3b50, (q15_t)0x2802, (q15_t)0x3b55,\n    (q15_t)0x280e, (q15_t)0x3b5a, (q15_t)0x2819, (q15_t)0x3b5f, (q15_t)0x2825, (q15_t)0x3b63, (q15_t)0x2831, (q15_t)0x3b68,\n    (q15_t)0x283c, (q15_t)0x3b6d, (q15_t)0x2848, (q15_t)0x3b71, (q15_t)0x2854, (q15_t)0x3b76, (q15_t)0x285f, (q15_t)0x3b7b,\n    (q15_t)0x286b, (q15_t)0x3b7f, (q15_t)0x2877, (q15_t)0x3b84, (q15_t)0x2882, (q15_t)0x3b88, (q15_t)0x288e, (q15_t)0x3b8d,\n    (q15_t)0x289a, (q15_t)0x3b92, (q15_t)0x28a5, (q15_t)0x3b96, (q15_t)0x28b1, (q15_t)0x3b9b, (q15_t)0x28bd, (q15_t)0x3b9f,\n    (q15_t)0x28c9, (q15_t)0x3ba4, (q15_t)0x28d4, (q15_t)0x3ba9, (q15_t)0x28e0, (q15_t)0x3bad, (q15_t)0x28ec, (q15_t)0x3bb2,\n    (q15_t)0x28f7, (q15_t)0x3bb6, (q15_t)0x2903, (q15_t)0x3bbb, (q15_t)0x290f, (q15_t)0x3bbf, (q15_t)0x291b, (q15_t)0x3bc4,\n    (q15_t)0x2926, (q15_t)0x3bc8, (q15_t)0x2932, (q15_t)0x3bcd, (q15_t)0x293e, (q15_t)0x3bd1, (q15_t)0x294a, (q15_t)0x3bd6,\n    (q15_t)0x2955, (q15_t)0x3bda, (q15_t)0x2961, (q15_t)0x3bde, (q15_t)0x296d, (q15_t)0x3be3, (q15_t)0x2979, (q15_t)0x3be7,\n    (q15_t)0x2984, (q15_t)0x3bec, (q15_t)0x2990, (q15_t)0x3bf0, (q15_t)0x299c, (q15_t)0x3bf5, (q15_t)0x29a8, (q15_t)0x3bf9,\n    (q15_t)0x29b4, (q15_t)0x3bfd, (q15_t)0x29bf, (q15_t)0x3c02, (q15_t)0x29cb, (q15_t)0x3c06, (q15_t)0x29d7, (q15_t)0x3c0a,\n    (q15_t)0x29e3, (q15_t)0x3c0f, (q15_t)0x29ee, (q15_t)0x3c13, (q15_t)0x29fa, (q15_t)0x3c17, (q15_t)0x2a06, (q15_t)0x3c1c,\n    (q15_t)0x2a12, (q15_t)0x3c20, (q15_t)0x2a1e, (q15_t)0x3c24, (q15_t)0x2a29, (q15_t)0x3c29, (q15_t)0x2a35, (q15_t)0x3c2d,\n    (q15_t)0x2a41, (q15_t)0x3c31, (q15_t)0x2a4d, (q15_t)0x3c36, (q15_t)0x2a59, (q15_t)0x3c3a, (q15_t)0x2a65, (q15_t)0x3c3e,\n    (q15_t)0x2a70, (q15_t)0x3c42, (q15_t)0x2a7c, (q15_t)0x3c46, (q15_t)0x2a88, (q15_t)0x3c4b, (q15_t)0x2a94, (q15_t)0x3c4f,\n    (q15_t)0x2aa0, (q15_t)0x3c53, (q15_t)0x2aac, (q15_t)0x3c57, (q15_t)0x2ab7, (q15_t)0x3c5b, (q15_t)0x2ac3, (q15_t)0x3c60,\n    (q15_t)0x2acf, (q15_t)0x3c64, (q15_t)0x2adb, (q15_t)0x3c68, (q15_t)0x2ae7, (q15_t)0x3c6c, (q15_t)0x2af3, (q15_t)0x3c70,\n    (q15_t)0x2aff, (q15_t)0x3c74, (q15_t)0x2b0a, (q15_t)0x3c79, (q15_t)0x2b16, (q15_t)0x3c7d, (q15_t)0x2b22, (q15_t)0x3c81,\n    (q15_t)0x2b2e, (q15_t)0x3c85, (q15_t)0x2b3a, (q15_t)0x3c89, (q15_t)0x2b46, (q15_t)0x3c8d, (q15_t)0x2b52, (q15_t)0x3c91,\n    (q15_t)0x2b5e, (q15_t)0x3c95, (q15_t)0x2b6a, (q15_t)0x3c99, (q15_t)0x2b75, (q15_t)0x3c9d, (q15_t)0x2b81, (q15_t)0x3ca1,\n    (q15_t)0x2b8d, (q15_t)0x3ca5, (q15_t)0x2b99, (q15_t)0x3ca9, (q15_t)0x2ba5, (q15_t)0x3cad, (q15_t)0x2bb1, (q15_t)0x3cb1,\n    (q15_t)0x2bbd, (q15_t)0x3cb5, (q15_t)0x2bc9, (q15_t)0x3cb9, (q15_t)0x2bd5, (q15_t)0x3cbd, (q15_t)0x2be1, (q15_t)0x3cc1,\n    (q15_t)0x2bed, (q15_t)0x3cc5, (q15_t)0x2bf9, (q15_t)0x3cc9, (q15_t)0x2c05, (q15_t)0x3ccd, (q15_t)0x2c10, (q15_t)0x3cd1,\n    (q15_t)0x2c1c, (q15_t)0x3cd5, (q15_t)0x2c28, (q15_t)0x3cd9, (q15_t)0x2c34, (q15_t)0x3cdd, (q15_t)0x2c40, (q15_t)0x3ce0,\n    (q15_t)0x2c4c, (q15_t)0x3ce4, (q15_t)0x2c58, (q15_t)0x3ce8, (q15_t)0x2c64, (q15_t)0x3cec, (q15_t)0x2c70, (q15_t)0x3cf0,\n    (q15_t)0x2c7c, (q15_t)0x3cf4, (q15_t)0x2c88, (q15_t)0x3cf8, (q15_t)0x2c94, (q15_t)0x3cfb, (q15_t)0x2ca0, (q15_t)0x3cff,\n    (q15_t)0x2cac, (q15_t)0x3d03, (q15_t)0x2cb8, (q15_t)0x3d07, (q15_t)0x2cc4, (q15_t)0x3d0b, (q15_t)0x2cd0, (q15_t)0x3d0e,\n    (q15_t)0x2cdc, (q15_t)0x3d12, (q15_t)0x2ce8, (q15_t)0x3d16, (q15_t)0x2cf4, (q15_t)0x3d1a, (q15_t)0x2d00, (q15_t)0x3d1d,\n    (q15_t)0x2d0c, (q15_t)0x3d21, (q15_t)0x2d18, (q15_t)0x3d25, (q15_t)0x2d24, (q15_t)0x3d28, (q15_t)0x2d30, (q15_t)0x3d2c,\n    (q15_t)0x2d3c, (q15_t)0x3d30, (q15_t)0x2d48, (q15_t)0x3d34, (q15_t)0x2d54, (q15_t)0x3d37, (q15_t)0x2d60, (q15_t)0x3d3b,\n    (q15_t)0x2d6c, (q15_t)0x3d3f, (q15_t)0x2d78, (q15_t)0x3d42, (q15_t)0x2d84, (q15_t)0x3d46, (q15_t)0x2d90, (q15_t)0x3d49,\n    (q15_t)0x2d9c, (q15_t)0x3d4d, (q15_t)0x2da8, (q15_t)0x3d51, (q15_t)0x2db4, (q15_t)0x3d54, (q15_t)0x2dc0, (q15_t)0x3d58,\n    (q15_t)0x2dcc, (q15_t)0x3d5b, (q15_t)0x2dd8, (q15_t)0x3d5f, (q15_t)0x2de4, (q15_t)0x3d63, (q15_t)0x2df0, (q15_t)0x3d66,\n    (q15_t)0x2dfc, (q15_t)0x3d6a, (q15_t)0x2e09, (q15_t)0x3d6d, (q15_t)0x2e15, (q15_t)0x3d71, (q15_t)0x2e21, (q15_t)0x3d74,\n    (q15_t)0x2e2d, (q15_t)0x3d78, (q15_t)0x2e39, (q15_t)0x3d7b, (q15_t)0x2e45, (q15_t)0x3d7f, (q15_t)0x2e51, (q15_t)0x3d82,\n    (q15_t)0x2e5d, (q15_t)0x3d86, (q15_t)0x2e69, (q15_t)0x3d89, (q15_t)0x2e75, (q15_t)0x3d8d, (q15_t)0x2e81, (q15_t)0x3d90,\n    (q15_t)0x2e8d, (q15_t)0x3d93, (q15_t)0x2e99, (q15_t)0x3d97, (q15_t)0x2ea6, (q15_t)0x3d9a, (q15_t)0x2eb2, (q15_t)0x3d9e,\n    (q15_t)0x2ebe, (q15_t)0x3da1, (q15_t)0x2eca, (q15_t)0x3da4, (q15_t)0x2ed6, (q15_t)0x3da8, (q15_t)0x2ee2, (q15_t)0x3dab,\n    (q15_t)0x2eee, (q15_t)0x3daf, (q15_t)0x2efa, (q15_t)0x3db2, (q15_t)0x2f06, (q15_t)0x3db5, (q15_t)0x2f13, (q15_t)0x3db9,\n    (q15_t)0x2f1f, (q15_t)0x3dbc, (q15_t)0x2f2b, (q15_t)0x3dbf, (q15_t)0x2f37, (q15_t)0x3dc2, (q15_t)0x2f43, (q15_t)0x3dc6,\n    (q15_t)0x2f4f, (q15_t)0x3dc9, (q15_t)0x2f5b, (q15_t)0x3dcc, (q15_t)0x2f67, (q15_t)0x3dd0, (q15_t)0x2f74, (q15_t)0x3dd3,\n    (q15_t)0x2f80, (q15_t)0x3dd6, (q15_t)0x2f8c, (q15_t)0x3dd9, (q15_t)0x2f98, (q15_t)0x3ddd, (q15_t)0x2fa4, (q15_t)0x3de0,\n    (q15_t)0x2fb0, (q15_t)0x3de3, (q15_t)0x2fbc, (q15_t)0x3de6, (q15_t)0x2fc9, (q15_t)0x3de9, (q15_t)0x2fd5, (q15_t)0x3ded,\n    (q15_t)0x2fe1, (q15_t)0x3df0, (q15_t)0x2fed, (q15_t)0x3df3, (q15_t)0x2ff9, (q15_t)0x3df6, (q15_t)0x3005, (q15_t)0x3df9,\n    (q15_t)0x3012, (q15_t)0x3dfc, (q15_t)0x301e, (q15_t)0x3dff, (q15_t)0x302a, (q15_t)0x3e03, (q15_t)0x3036, (q15_t)0x3e06,\n    (q15_t)0x3042, (q15_t)0x3e09, (q15_t)0x304e, (q15_t)0x3e0c, (q15_t)0x305b, (q15_t)0x3e0f, (q15_t)0x3067, (q15_t)0x3e12,\n    (q15_t)0x3073, (q15_t)0x3e15, (q15_t)0x307f, (q15_t)0x3e18, (q15_t)0x308b, (q15_t)0x3e1b, (q15_t)0x3098, (q15_t)0x3e1e,\n    (q15_t)0x30a4, (q15_t)0x3e21, (q15_t)0x30b0, (q15_t)0x3e24, (q15_t)0x30bc, (q15_t)0x3e27, (q15_t)0x30c8, (q15_t)0x3e2a,\n    (q15_t)0x30d5, (q15_t)0x3e2d, (q15_t)0x30e1, (q15_t)0x3e30, (q15_t)0x30ed, (q15_t)0x3e33, (q15_t)0x30f9, (q15_t)0x3e36,\n    (q15_t)0x3105, (q15_t)0x3e39, (q15_t)0x3112, (q15_t)0x3e3c, (q15_t)0x311e, (q15_t)0x3e3f, (q15_t)0x312a, (q15_t)0x3e42,\n    (q15_t)0x3136, (q15_t)0x3e45, (q15_t)0x3143, (q15_t)0x3e48, (q15_t)0x314f, (q15_t)0x3e4a, (q15_t)0x315b, (q15_t)0x3e4d,\n    (q15_t)0x3167, (q15_t)0x3e50, (q15_t)0x3174, (q15_t)0x3e53, (q15_t)0x3180, (q15_t)0x3e56, (q15_t)0x318c, (q15_t)0x3e59,\n    (q15_t)0x3198, (q15_t)0x3e5c, (q15_t)0x31a4, (q15_t)0x3e5e, (q15_t)0x31b1, (q15_t)0x3e61, (q15_t)0x31bd, (q15_t)0x3e64,\n    (q15_t)0x31c9, (q15_t)0x3e67, (q15_t)0x31d5, (q15_t)0x3e6a, (q15_t)0x31e2, (q15_t)0x3e6c, (q15_t)0x31ee, (q15_t)0x3e6f,\n    (q15_t)0x31fa, (q15_t)0x3e72, (q15_t)0x3207, (q15_t)0x3e75, (q15_t)0x3213, (q15_t)0x3e77, (q15_t)0x321f, (q15_t)0x3e7a,\n    (q15_t)0x322b, (q15_t)0x3e7d, (q15_t)0x3238, (q15_t)0x3e80, (q15_t)0x3244, (q15_t)0x3e82, (q15_t)0x3250, (q15_t)0x3e85,\n    (q15_t)0x325c, (q15_t)0x3e88, (q15_t)0x3269, (q15_t)0x3e8a, (q15_t)0x3275, (q15_t)0x3e8d, (q15_t)0x3281, (q15_t)0x3e90,\n    (q15_t)0x328e, (q15_t)0x3e92, (q15_t)0x329a, (q15_t)0x3e95, (q15_t)0x32a6, (q15_t)0x3e98, (q15_t)0x32b2, (q15_t)0x3e9a,\n    (q15_t)0x32bf, (q15_t)0x3e9d, (q15_t)0x32cb, (q15_t)0x3e9f, (q15_t)0x32d7, (q15_t)0x3ea2, (q15_t)0x32e4, (q15_t)0x3ea5,\n    (q15_t)0x32f0, (q15_t)0x3ea7, (q15_t)0x32fc, (q15_t)0x3eaa, (q15_t)0x3308, (q15_t)0x3eac, (q15_t)0x3315, (q15_t)0x3eaf,\n    (q15_t)0x3321, (q15_t)0x3eb1, (q15_t)0x332d, (q15_t)0x3eb4, (q15_t)0x333a, (q15_t)0x3eb6, (q15_t)0x3346, (q15_t)0x3eb9,\n    (q15_t)0x3352, (q15_t)0x3ebb, (q15_t)0x335f, (q15_t)0x3ebe, (q15_t)0x336b, (q15_t)0x3ec0, (q15_t)0x3377, (q15_t)0x3ec3,\n    (q15_t)0x3384, (q15_t)0x3ec5, (q15_t)0x3390, (q15_t)0x3ec8, (q15_t)0x339c, (q15_t)0x3eca, (q15_t)0x33a9, (q15_t)0x3ecc,\n    (q15_t)0x33b5, (q15_t)0x3ecf, (q15_t)0x33c1, (q15_t)0x3ed1, (q15_t)0x33ce, (q15_t)0x3ed4, (q15_t)0x33da, (q15_t)0x3ed6,\n    (q15_t)0x33e6, (q15_t)0x3ed8, (q15_t)0x33f3, (q15_t)0x3edb, (q15_t)0x33ff, (q15_t)0x3edd, (q15_t)0x340b, (q15_t)0x3ee0,\n    (q15_t)0x3418, (q15_t)0x3ee2, (q15_t)0x3424, (q15_t)0x3ee4, (q15_t)0x3430, (q15_t)0x3ee7, (q15_t)0x343d, (q15_t)0x3ee9,\n    (q15_t)0x3449, (q15_t)0x3eeb, (q15_t)0x3455, (q15_t)0x3eed, (q15_t)0x3462, (q15_t)0x3ef0, (q15_t)0x346e, (q15_t)0x3ef2,\n    (q15_t)0x347b, (q15_t)0x3ef4, (q15_t)0x3487, (q15_t)0x3ef7, (q15_t)0x3493, (q15_t)0x3ef9, (q15_t)0x34a0, (q15_t)0x3efb,\n    (q15_t)0x34ac, (q15_t)0x3efd, (q15_t)0x34b8, (q15_t)0x3f00, (q15_t)0x34c5, (q15_t)0x3f02, (q15_t)0x34d1, (q15_t)0x3f04,\n    (q15_t)0x34dd, (q15_t)0x3f06, (q15_t)0x34ea, (q15_t)0x3f08, (q15_t)0x34f6, (q15_t)0x3f0a, (q15_t)0x3503, (q15_t)0x3f0d,\n    (q15_t)0x350f, (q15_t)0x3f0f, (q15_t)0x351b, (q15_t)0x3f11, (q15_t)0x3528, (q15_t)0x3f13, (q15_t)0x3534, (q15_t)0x3f15,\n    (q15_t)0x3540, (q15_t)0x3f17, (q15_t)0x354d, (q15_t)0x3f19, (q15_t)0x3559, (q15_t)0x3f1c, (q15_t)0x3566, (q15_t)0x3f1e,\n    (q15_t)0x3572, (q15_t)0x3f20, (q15_t)0x357e, (q15_t)0x3f22, (q15_t)0x358b, (q15_t)0x3f24, (q15_t)0x3597, (q15_t)0x3f26,\n    (q15_t)0x35a4, (q15_t)0x3f28, (q15_t)0x35b0, (q15_t)0x3f2a, (q15_t)0x35bc, (q15_t)0x3f2c, (q15_t)0x35c9, (q15_t)0x3f2e,\n    (q15_t)0x35d5, (q15_t)0x3f30, (q15_t)0x35e2, (q15_t)0x3f32, (q15_t)0x35ee, (q15_t)0x3f34, (q15_t)0x35fa, (q15_t)0x3f36,\n    (q15_t)0x3607, (q15_t)0x3f38, (q15_t)0x3613, (q15_t)0x3f3a, (q15_t)0x3620, (q15_t)0x3f3c, (q15_t)0x362c, (q15_t)0x3f3e,\n    (q15_t)0x3639, (q15_t)0x3f40, (q15_t)0x3645, (q15_t)0x3f42, (q15_t)0x3651, (q15_t)0x3f43, (q15_t)0x365e, (q15_t)0x3f45,\n    (q15_t)0x366a, (q15_t)0x3f47, (q15_t)0x3677, (q15_t)0x3f49, (q15_t)0x3683, (q15_t)0x3f4b, (q15_t)0x3690, (q15_t)0x3f4d,\n    (q15_t)0x369c, (q15_t)0x3f4f, (q15_t)0x36a8, (q15_t)0x3f51, (q15_t)0x36b5, (q15_t)0x3f52, (q15_t)0x36c1, (q15_t)0x3f54,\n    (q15_t)0x36ce, (q15_t)0x3f56, (q15_t)0x36da, (q15_t)0x3f58, (q15_t)0x36e7, (q15_t)0x3f5a, (q15_t)0x36f3, (q15_t)0x3f5b,\n    (q15_t)0x36ff, (q15_t)0x3f5d, (q15_t)0x370c, (q15_t)0x3f5f, (q15_t)0x3718, (q15_t)0x3f61, (q15_t)0x3725, (q15_t)0x3f62,\n    (q15_t)0x3731, (q15_t)0x3f64, (q15_t)0x373e, (q15_t)0x3f66, (q15_t)0x374a, (q15_t)0x3f68, (q15_t)0x3757, (q15_t)0x3f69,\n    (q15_t)0x3763, (q15_t)0x3f6b, (q15_t)0x376f, (q15_t)0x3f6d, (q15_t)0x377c, (q15_t)0x3f6e, (q15_t)0x3788, (q15_t)0x3f70,\n    (q15_t)0x3795, (q15_t)0x3f72, (q15_t)0x37a1, (q15_t)0x3f73, (q15_t)0x37ae, (q15_t)0x3f75, (q15_t)0x37ba, (q15_t)0x3f77,\n    (q15_t)0x37c7, (q15_t)0x3f78, (q15_t)0x37d3, (q15_t)0x3f7a, (q15_t)0x37e0, (q15_t)0x3f7b, (q15_t)0x37ec, (q15_t)0x3f7d,\n    (q15_t)0x37f9, (q15_t)0x3f7f, (q15_t)0x3805, (q15_t)0x3f80, (q15_t)0x3811, (q15_t)0x3f82, (q15_t)0x381e, (q15_t)0x3f83,\n    (q15_t)0x382a, (q15_t)0x3f85, (q15_t)0x3837, (q15_t)0x3f86, (q15_t)0x3843, (q15_t)0x3f88, (q15_t)0x3850, (q15_t)0x3f89,\n    (q15_t)0x385c, (q15_t)0x3f8b, (q15_t)0x3869, (q15_t)0x3f8c, (q15_t)0x3875, (q15_t)0x3f8e, (q15_t)0x3882, (q15_t)0x3f8f,\n    (q15_t)0x388e, (q15_t)0x3f91, (q15_t)0x389b, (q15_t)0x3f92, (q15_t)0x38a7, (q15_t)0x3f94, (q15_t)0x38b4, (q15_t)0x3f95,\n    (q15_t)0x38c0, (q15_t)0x3f97, (q15_t)0x38cd, (q15_t)0x3f98, (q15_t)0x38d9, (q15_t)0x3f99, (q15_t)0x38e6, (q15_t)0x3f9b,\n    (q15_t)0x38f2, (q15_t)0x3f9c, (q15_t)0x38ff, (q15_t)0x3f9e, (q15_t)0x390b, (q15_t)0x3f9f, (q15_t)0x3918, (q15_t)0x3fa0,\n    (q15_t)0x3924, (q15_t)0x3fa2, (q15_t)0x3931, (q15_t)0x3fa3, (q15_t)0x393d, (q15_t)0x3fa4, (q15_t)0x394a, (q15_t)0x3fa6,\n    (q15_t)0x3956, (q15_t)0x3fa7, (q15_t)0x3963, (q15_t)0x3fa8, (q15_t)0x396f, (q15_t)0x3faa, (q15_t)0x397c, (q15_t)0x3fab,\n    (q15_t)0x3988, (q15_t)0x3fac, (q15_t)0x3995, (q15_t)0x3fad, (q15_t)0x39a1, (q15_t)0x3faf, (q15_t)0x39ae, (q15_t)0x3fb0,\n    (q15_t)0x39ba, (q15_t)0x3fb1, (q15_t)0x39c7, (q15_t)0x3fb2, (q15_t)0x39d3, (q15_t)0x3fb4, (q15_t)0x39e0, (q15_t)0x3fb5,\n    (q15_t)0x39ec, (q15_t)0x3fb6, (q15_t)0x39f9, (q15_t)0x3fb7, (q15_t)0x3a05, (q15_t)0x3fb8, (q15_t)0x3a12, (q15_t)0x3fb9,\n    (q15_t)0x3a1e, (q15_t)0x3fbb, (q15_t)0x3a2b, (q15_t)0x3fbc, (q15_t)0x3a37, (q15_t)0x3fbd, (q15_t)0x3a44, (q15_t)0x3fbe,\n    (q15_t)0x3a50, (q15_t)0x3fbf, (q15_t)0x3a5d, (q15_t)0x3fc0, (q15_t)0x3a69, (q15_t)0x3fc1, (q15_t)0x3a76, (q15_t)0x3fc3,\n    (q15_t)0x3a82, (q15_t)0x3fc4, (q15_t)0x3a8f, (q15_t)0x3fc5, (q15_t)0x3a9b, (q15_t)0x3fc6, (q15_t)0x3aa8, (q15_t)0x3fc7,\n    (q15_t)0x3ab4, (q15_t)0x3fc8, (q15_t)0x3ac1, (q15_t)0x3fc9, (q15_t)0x3acd, (q15_t)0x3fca, (q15_t)0x3ada, (q15_t)0x3fcb,\n    (q15_t)0x3ae6, (q15_t)0x3fcc, (q15_t)0x3af3, (q15_t)0x3fcd, (q15_t)0x3b00, (q15_t)0x3fce, (q15_t)0x3b0c, (q15_t)0x3fcf,\n    (q15_t)0x3b19, (q15_t)0x3fd0, (q15_t)0x3b25, (q15_t)0x3fd1, (q15_t)0x3b32, (q15_t)0x3fd2, (q15_t)0x3b3e, (q15_t)0x3fd3,\n    (q15_t)0x3b4b, (q15_t)0x3fd4, (q15_t)0x3b57, (q15_t)0x3fd5, (q15_t)0x3b64, (q15_t)0x3fd5, (q15_t)0x3b70, (q15_t)0x3fd6,\n    (q15_t)0x3b7d, (q15_t)0x3fd7, (q15_t)0x3b89, (q15_t)0x3fd8, (q15_t)0x3b96, (q15_t)0x3fd9, (q15_t)0x3ba2, (q15_t)0x3fda,\n    (q15_t)0x3baf, (q15_t)0x3fdb, (q15_t)0x3bbc, (q15_t)0x3fdc, (q15_t)0x3bc8, (q15_t)0x3fdc, (q15_t)0x3bd5, (q15_t)0x3fdd,\n    (q15_t)0x3be1, (q15_t)0x3fde, (q15_t)0x3bee, (q15_t)0x3fdf, (q15_t)0x3bfa, (q15_t)0x3fe0, (q15_t)0x3c07, (q15_t)0x3fe0,\n    (q15_t)0x3c13, (q15_t)0x3fe1, (q15_t)0x3c20, (q15_t)0x3fe2, (q15_t)0x3c2c, (q15_t)0x3fe3, (q15_t)0x3c39, (q15_t)0x3fe3,\n    (q15_t)0x3c45, (q15_t)0x3fe4, (q15_t)0x3c52, (q15_t)0x3fe5, (q15_t)0x3c5f, (q15_t)0x3fe6, (q15_t)0x3c6b, (q15_t)0x3fe6,\n    (q15_t)0x3c78, (q15_t)0x3fe7, (q15_t)0x3c84, (q15_t)0x3fe8, (q15_t)0x3c91, (q15_t)0x3fe8, (q15_t)0x3c9d, (q15_t)0x3fe9,\n    (q15_t)0x3caa, (q15_t)0x3fea, (q15_t)0x3cb6, (q15_t)0x3fea, (q15_t)0x3cc3, (q15_t)0x3feb, (q15_t)0x3cd0, (q15_t)0x3fec,\n    (q15_t)0x3cdc, (q15_t)0x3fec, (q15_t)0x3ce9, (q15_t)0x3fed, (q15_t)0x3cf5, (q15_t)0x3fed, (q15_t)0x3d02, (q15_t)0x3fee,\n    (q15_t)0x3d0e, (q15_t)0x3fef, (q15_t)0x3d1b, (q15_t)0x3fef, (q15_t)0x3d27, (q15_t)0x3ff0, (q15_t)0x3d34, (q15_t)0x3ff0,\n    (q15_t)0x3d40, (q15_t)0x3ff1, (q15_t)0x3d4d, (q15_t)0x3ff1, (q15_t)0x3d5a, (q15_t)0x3ff2, (q15_t)0x3d66, (q15_t)0x3ff2,\n    (q15_t)0x3d73, (q15_t)0x3ff3, (q15_t)0x3d7f, (q15_t)0x3ff3, (q15_t)0x3d8c, (q15_t)0x3ff4, (q15_t)0x3d98, (q15_t)0x3ff4,\n    (q15_t)0x3da5, (q15_t)0x3ff5, (q15_t)0x3db2, (q15_t)0x3ff5, (q15_t)0x3dbe, (q15_t)0x3ff6, (q15_t)0x3dcb, (q15_t)0x3ff6,\n    (q15_t)0x3dd7, (q15_t)0x3ff7, (q15_t)0x3de4, (q15_t)0x3ff7, (q15_t)0x3df0, (q15_t)0x3ff7, (q15_t)0x3dfd, (q15_t)0x3ff8,\n    (q15_t)0x3e09, (q15_t)0x3ff8, (q15_t)0x3e16, (q15_t)0x3ff9, (q15_t)0x3e23, (q15_t)0x3ff9, (q15_t)0x3e2f, (q15_t)0x3ff9,\n    (q15_t)0x3e3c, (q15_t)0x3ffa, (q15_t)0x3e48, (q15_t)0x3ffa, (q15_t)0x3e55, (q15_t)0x3ffa, (q15_t)0x3e61, (q15_t)0x3ffb,\n    (q15_t)0x3e6e, (q15_t)0x3ffb, (q15_t)0x3e7a, (q15_t)0x3ffb, (q15_t)0x3e87, (q15_t)0x3ffc, (q15_t)0x3e94, (q15_t)0x3ffc,\n    (q15_t)0x3ea0, (q15_t)0x3ffc, (q15_t)0x3ead, (q15_t)0x3ffc, (q15_t)0x3eb9, (q15_t)0x3ffd, (q15_t)0x3ec6, (q15_t)0x3ffd,\n    (q15_t)0x3ed2, (q15_t)0x3ffd, (q15_t)0x3edf, (q15_t)0x3ffd, (q15_t)0x3eec, (q15_t)0x3ffe, (q15_t)0x3ef8, (q15_t)0x3ffe,\n    (q15_t)0x3f05, (q15_t)0x3ffe, (q15_t)0x3f11, (q15_t)0x3ffe, (q15_t)0x3f1e, (q15_t)0x3ffe, (q15_t)0x3f2a, (q15_t)0x3fff,\n    (q15_t)0x3f37, (q15_t)0x3fff, (q15_t)0x3f44, (q15_t)0x3fff, (q15_t)0x3f50, (q15_t)0x3fff, (q15_t)0x3f5d, (q15_t)0x3fff,\n    (q15_t)0x3f69, (q15_t)0x3fff, (q15_t)0x3f76, (q15_t)0x3fff, (q15_t)0x3f82, (q15_t)0x4000, (q15_t)0x3f8f, (q15_t)0x4000,\n    (q15_t)0x3f9b, (q15_t)0x4000, (q15_t)0x3fa8, (q15_t)0x4000, (q15_t)0x3fb5, (q15_t)0x4000, (q15_t)0x3fc1, (q15_t)0x4000,\n    (q15_t)0x3fce, (q15_t)0x4000, (q15_t)0x3fda, (q15_t)0x4000, (q15_t)0x3fe7, (q15_t)0x4000, (q15_t)0x3ff3, (q15_t)0x4000,\n};\n\n/**\n  @par\n  Generation of real_CoefB array:\n  @par\n  n = 4096\n  <pre>for (i = 0; i < n; i++)\n  {\n     pBTable[2 * i]     = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));\n     pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));\n  }</pre>\n  @par\n  Convert to fixed point Q15 format\n        round(pBTable[i] * pow(2, 15))\n*/\nconst q15_t __ALIGNED(4) realCoefBQ15[8192] = {\n    (q15_t)0x4000, (q15_t)0x4000, (q15_t)0x400d, (q15_t)0x4000, (q15_t)0x4019, (q15_t)0x4000, (q15_t)0x4026, (q15_t)0x4000,\n    (q15_t)0x4032, (q15_t)0x4000, (q15_t)0x403f, (q15_t)0x4000, (q15_t)0x404b, (q15_t)0x4000, (q15_t)0x4058, (q15_t)0x4000,\n    (q15_t)0x4065, (q15_t)0x4000, (q15_t)0x4071, (q15_t)0x4000, (q15_t)0x407e, (q15_t)0x4000, (q15_t)0x408a, (q15_t)0x3fff,\n    (q15_t)0x4097, (q15_t)0x3fff, (q15_t)0x40a3, (q15_t)0x3fff, (q15_t)0x40b0, (q15_t)0x3fff, (q15_t)0x40bc, (q15_t)0x3fff,\n    (q15_t)0x40c9, (q15_t)0x3fff, (q15_t)0x40d6, (q15_t)0x3fff, (q15_t)0x40e2, (q15_t)0x3ffe, (q15_t)0x40ef, (q15_t)0x3ffe,\n    (q15_t)0x40fb, (q15_t)0x3ffe, (q15_t)0x4108, (q15_t)0x3ffe, (q15_t)0x4114, (q15_t)0x3ffe, (q15_t)0x4121, (q15_t)0x3ffd,\n    (q15_t)0x412e, (q15_t)0x3ffd, (q15_t)0x413a, (q15_t)0x3ffd, (q15_t)0x4147, (q15_t)0x3ffd, (q15_t)0x4153, (q15_t)0x3ffc,\n    (q15_t)0x4160, (q15_t)0x3ffc, (q15_t)0x416c, (q15_t)0x3ffc, (q15_t)0x4179, (q15_t)0x3ffc, (q15_t)0x4186, (q15_t)0x3ffb,\n    (q15_t)0x4192, (q15_t)0x3ffb, (q15_t)0x419f, (q15_t)0x3ffb, (q15_t)0x41ab, (q15_t)0x3ffa, (q15_t)0x41b8, (q15_t)0x3ffa,\n    (q15_t)0x41c4, (q15_t)0x3ffa, (q15_t)0x41d1, (q15_t)0x3ff9, (q15_t)0x41dd, (q15_t)0x3ff9, (q15_t)0x41ea, (q15_t)0x3ff9,\n    (q15_t)0x41f7, (q15_t)0x3ff8, (q15_t)0x4203, (q15_t)0x3ff8, (q15_t)0x4210, (q15_t)0x3ff7, (q15_t)0x421c, (q15_t)0x3ff7,\n    (q15_t)0x4229, (q15_t)0x3ff7, (q15_t)0x4235, (q15_t)0x3ff6, (q15_t)0x4242, (q15_t)0x3ff6, (q15_t)0x424e, (q15_t)0x3ff5,\n    (q15_t)0x425b, (q15_t)0x3ff5, (q15_t)0x4268, (q15_t)0x3ff4, (q15_t)0x4274, (q15_t)0x3ff4, (q15_t)0x4281, (q15_t)0x3ff3,\n    (q15_t)0x428d, (q15_t)0x3ff3, (q15_t)0x429a, (q15_t)0x3ff2, (q15_t)0x42a6, (q15_t)0x3ff2, (q15_t)0x42b3, (q15_t)0x3ff1,\n    (q15_t)0x42c0, (q15_t)0x3ff1, (q15_t)0x42cc, (q15_t)0x3ff0, (q15_t)0x42d9, (q15_t)0x3ff0, (q15_t)0x42e5, (q15_t)0x3fef,\n    (q15_t)0x42f2, (q15_t)0x3fef, (q15_t)0x42fe, (q15_t)0x3fee, (q15_t)0x430b, (q15_t)0x3fed, (q15_t)0x4317, (q15_t)0x3fed,\n    (q15_t)0x4324, (q15_t)0x3fec, (q15_t)0x4330, (q15_t)0x3fec, (q15_t)0x433d, (q15_t)0x3feb, (q15_t)0x434a, (q15_t)0x3fea,\n    (q15_t)0x4356, (q15_t)0x3fea, (q15_t)0x4363, (q15_t)0x3fe9, (q15_t)0x436f, (q15_t)0x3fe8, (q15_t)0x437c, (q15_t)0x3fe8,\n    (q15_t)0x4388, (q15_t)0x3fe7, (q15_t)0x4395, (q15_t)0x3fe6, (q15_t)0x43a1, (q15_t)0x3fe6, (q15_t)0x43ae, (q15_t)0x3fe5,\n    (q15_t)0x43bb, (q15_t)0x3fe4, (q15_t)0x43c7, (q15_t)0x3fe3, (q15_t)0x43d4, (q15_t)0x3fe3, (q15_t)0x43e0, (q15_t)0x3fe2,\n    (q15_t)0x43ed, (q15_t)0x3fe1, (q15_t)0x43f9, (q15_t)0x3fe0, (q15_t)0x4406, (q15_t)0x3fe0, (q15_t)0x4412, (q15_t)0x3fdf,\n    (q15_t)0x441f, (q15_t)0x3fde, (q15_t)0x442b, (q15_t)0x3fdd, (q15_t)0x4438, (q15_t)0x3fdc, (q15_t)0x4444, (q15_t)0x3fdc,\n    (q15_t)0x4451, (q15_t)0x3fdb, (q15_t)0x445e, (q15_t)0x3fda, (q15_t)0x446a, (q15_t)0x3fd9, (q15_t)0x4477, (q15_t)0x3fd8,\n    (q15_t)0x4483, (q15_t)0x3fd7, (q15_t)0x4490, (q15_t)0x3fd6, (q15_t)0x449c, (q15_t)0x3fd5, (q15_t)0x44a9, (q15_t)0x3fd5,\n    (q15_t)0x44b5, (q15_t)0x3fd4, (q15_t)0x44c2, (q15_t)0x3fd3, (q15_t)0x44ce, (q15_t)0x3fd2, (q15_t)0x44db, (q15_t)0x3fd1,\n    (q15_t)0x44e7, (q15_t)0x3fd0, (q15_t)0x44f4, (q15_t)0x3fcf, (q15_t)0x4500, (q15_t)0x3fce, (q15_t)0x450d, (q15_t)0x3fcd,\n    (q15_t)0x451a, (q15_t)0x3fcc, (q15_t)0x4526, (q15_t)0x3fcb, (q15_t)0x4533, (q15_t)0x3fca, (q15_t)0x453f, (q15_t)0x3fc9,\n    (q15_t)0x454c, (q15_t)0x3fc8, (q15_t)0x4558, (q15_t)0x3fc7, (q15_t)0x4565, (q15_t)0x3fc6, (q15_t)0x4571, (q15_t)0x3fc5,\n    (q15_t)0x457e, (q15_t)0x3fc4, (q15_t)0x458a, (q15_t)0x3fc3, (q15_t)0x4597, (q15_t)0x3fc1, (q15_t)0x45a3, (q15_t)0x3fc0,\n    (q15_t)0x45b0, (q15_t)0x3fbf, (q15_t)0x45bc, (q15_t)0x3fbe, (q15_t)0x45c9, (q15_t)0x3fbd, (q15_t)0x45d5, (q15_t)0x3fbc,\n    (q15_t)0x45e2, (q15_t)0x3fbb, (q15_t)0x45ee, (q15_t)0x3fb9, (q15_t)0x45fb, (q15_t)0x3fb8, (q15_t)0x4607, (q15_t)0x3fb7,\n    (q15_t)0x4614, (q15_t)0x3fb6, (q15_t)0x4620, (q15_t)0x3fb5, (q15_t)0x462d, (q15_t)0x3fb4, (q15_t)0x4639, (q15_t)0x3fb2,\n    (q15_t)0x4646, (q15_t)0x3fb1, (q15_t)0x4652, (q15_t)0x3fb0, (q15_t)0x465f, (q15_t)0x3faf, (q15_t)0x466b, (q15_t)0x3fad,\n    (q15_t)0x4678, (q15_t)0x3fac, (q15_t)0x4684, (q15_t)0x3fab, (q15_t)0x4691, (q15_t)0x3faa, (q15_t)0x469d, (q15_t)0x3fa8,\n    (q15_t)0x46aa, (q15_t)0x3fa7, (q15_t)0x46b6, (q15_t)0x3fa6, (q15_t)0x46c3, (q15_t)0x3fa4, (q15_t)0x46cf, (q15_t)0x3fa3,\n    (q15_t)0x46dc, (q15_t)0x3fa2, (q15_t)0x46e8, (q15_t)0x3fa0, (q15_t)0x46f5, (q15_t)0x3f9f, (q15_t)0x4701, (q15_t)0x3f9e,\n    (q15_t)0x470e, (q15_t)0x3f9c, (q15_t)0x471a, (q15_t)0x3f9b, (q15_t)0x4727, (q15_t)0x3f99, (q15_t)0x4733, (q15_t)0x3f98,\n    (q15_t)0x4740, (q15_t)0x3f97, (q15_t)0x474c, (q15_t)0x3f95, (q15_t)0x4759, (q15_t)0x3f94, (q15_t)0x4765, (q15_t)0x3f92,\n    (q15_t)0x4772, (q15_t)0x3f91, (q15_t)0x477e, (q15_t)0x3f8f, (q15_t)0x478b, (q15_t)0x3f8e, (q15_t)0x4797, (q15_t)0x3f8c,\n    (q15_t)0x47a4, (q15_t)0x3f8b, (q15_t)0x47b0, (q15_t)0x3f89, (q15_t)0x47bd, (q15_t)0x3f88, (q15_t)0x47c9, (q15_t)0x3f86,\n    (q15_t)0x47d6, (q15_t)0x3f85, (q15_t)0x47e2, (q15_t)0x3f83, (q15_t)0x47ef, (q15_t)0x3f82, (q15_t)0x47fb, (q15_t)0x3f80,\n    (q15_t)0x4807, (q15_t)0x3f7f, (q15_t)0x4814, (q15_t)0x3f7d, (q15_t)0x4820, (q15_t)0x3f7b, (q15_t)0x482d, (q15_t)0x3f7a,\n    (q15_t)0x4839, (q15_t)0x3f78, (q15_t)0x4846, (q15_t)0x3f77, (q15_t)0x4852, (q15_t)0x3f75, (q15_t)0x485f, (q15_t)0x3f73,\n    (q15_t)0x486b, (q15_t)0x3f72, (q15_t)0x4878, (q15_t)0x3f70, (q15_t)0x4884, (q15_t)0x3f6e, (q15_t)0x4891, (q15_t)0x3f6d,\n    (q15_t)0x489d, (q15_t)0x3f6b, (q15_t)0x48a9, (q15_t)0x3f69, (q15_t)0x48b6, (q15_t)0x3f68, (q15_t)0x48c2, (q15_t)0x3f66,\n    (q15_t)0x48cf, (q15_t)0x3f64, (q15_t)0x48db, (q15_t)0x3f62, (q15_t)0x48e8, (q15_t)0x3f61, (q15_t)0x48f4, (q15_t)0x3f5f,\n    (q15_t)0x4901, (q15_t)0x3f5d, (q15_t)0x490d, (q15_t)0x3f5b, (q15_t)0x4919, (q15_t)0x3f5a, (q15_t)0x4926, (q15_t)0x3f58,\n    (q15_t)0x4932, (q15_t)0x3f56, (q15_t)0x493f, (q15_t)0x3f54, (q15_t)0x494b, (q15_t)0x3f52, (q15_t)0x4958, (q15_t)0x3f51,\n    (q15_t)0x4964, (q15_t)0x3f4f, (q15_t)0x4970, (q15_t)0x3f4d, (q15_t)0x497d, (q15_t)0x3f4b, (q15_t)0x4989, (q15_t)0x3f49,\n    (q15_t)0x4996, (q15_t)0x3f47, (q15_t)0x49a2, (q15_t)0x3f45, (q15_t)0x49af, (q15_t)0x3f43, (q15_t)0x49bb, (q15_t)0x3f42,\n    (q15_t)0x49c7, (q15_t)0x3f40, (q15_t)0x49d4, (q15_t)0x3f3e, (q15_t)0x49e0, (q15_t)0x3f3c, (q15_t)0x49ed, (q15_t)0x3f3a,\n    (q15_t)0x49f9, (q15_t)0x3f38, (q15_t)0x4a06, (q15_t)0x3f36, (q15_t)0x4a12, (q15_t)0x3f34, (q15_t)0x4a1e, (q15_t)0x3f32,\n    (q15_t)0x4a2b, (q15_t)0x3f30, (q15_t)0x4a37, (q15_t)0x3f2e, (q15_t)0x4a44, (q15_t)0x3f2c, (q15_t)0x4a50, (q15_t)0x3f2a,\n    (q15_t)0x4a5c, (q15_t)0x3f28, (q15_t)0x4a69, (q15_t)0x3f26, (q15_t)0x4a75, (q15_t)0x3f24, (q15_t)0x4a82, (q15_t)0x3f22,\n    (q15_t)0x4a8e, (q15_t)0x3f20, (q15_t)0x4a9a, (q15_t)0x3f1e, (q15_t)0x4aa7, (q15_t)0x3f1c, (q15_t)0x4ab3, (q15_t)0x3f19,\n    (q15_t)0x4ac0, (q15_t)0x3f17, (q15_t)0x4acc, (q15_t)0x3f15, (q15_t)0x4ad8, (q15_t)0x3f13, (q15_t)0x4ae5, (q15_t)0x3f11,\n    (q15_t)0x4af1, (q15_t)0x3f0f, (q15_t)0x4afd, (q15_t)0x3f0d, (q15_t)0x4b0a, (q15_t)0x3f0a, (q15_t)0x4b16, (q15_t)0x3f08,\n    (q15_t)0x4b23, (q15_t)0x3f06, (q15_t)0x4b2f, (q15_t)0x3f04, (q15_t)0x4b3b, (q15_t)0x3f02, (q15_t)0x4b48, (q15_t)0x3f00,\n    (q15_t)0x4b54, (q15_t)0x3efd, (q15_t)0x4b60, (q15_t)0x3efb, (q15_t)0x4b6d, (q15_t)0x3ef9, (q15_t)0x4b79, (q15_t)0x3ef7,\n    (q15_t)0x4b85, (q15_t)0x3ef4, (q15_t)0x4b92, (q15_t)0x3ef2, (q15_t)0x4b9e, (q15_t)0x3ef0, (q15_t)0x4bab, (q15_t)0x3eed,\n    (q15_t)0x4bb7, (q15_t)0x3eeb, (q15_t)0x4bc3, (q15_t)0x3ee9, (q15_t)0x4bd0, (q15_t)0x3ee7, (q15_t)0x4bdc, (q15_t)0x3ee4,\n    (q15_t)0x4be8, (q15_t)0x3ee2, (q15_t)0x4bf5, (q15_t)0x3ee0, (q15_t)0x4c01, (q15_t)0x3edd, (q15_t)0x4c0d, (q15_t)0x3edb,\n    (q15_t)0x4c1a, (q15_t)0x3ed8, (q15_t)0x4c26, (q15_t)0x3ed6, (q15_t)0x4c32, (q15_t)0x3ed4, (q15_t)0x4c3f, (q15_t)0x3ed1,\n    (q15_t)0x4c4b, (q15_t)0x3ecf, (q15_t)0x4c57, (q15_t)0x3ecc, (q15_t)0x4c64, (q15_t)0x3eca, (q15_t)0x4c70, (q15_t)0x3ec8,\n    (q15_t)0x4c7c, (q15_t)0x3ec5, (q15_t)0x4c89, (q15_t)0x3ec3, (q15_t)0x4c95, (q15_t)0x3ec0, (q15_t)0x4ca1, (q15_t)0x3ebe,\n    (q15_t)0x4cae, (q15_t)0x3ebb, (q15_t)0x4cba, (q15_t)0x3eb9, (q15_t)0x4cc6, (q15_t)0x3eb6, (q15_t)0x4cd3, (q15_t)0x3eb4,\n    (q15_t)0x4cdf, (q15_t)0x3eb1, (q15_t)0x4ceb, (q15_t)0x3eaf, (q15_t)0x4cf8, (q15_t)0x3eac, (q15_t)0x4d04, (q15_t)0x3eaa,\n    (q15_t)0x4d10, (q15_t)0x3ea7, (q15_t)0x4d1c, (q15_t)0x3ea5, (q15_t)0x4d29, (q15_t)0x3ea2, (q15_t)0x4d35, (q15_t)0x3e9f,\n    (q15_t)0x4d41, (q15_t)0x3e9d, (q15_t)0x4d4e, (q15_t)0x3e9a, (q15_t)0x4d5a, (q15_t)0x3e98, (q15_t)0x4d66, (q15_t)0x3e95,\n    (q15_t)0x4d72, (q15_t)0x3e92, (q15_t)0x4d7f, (q15_t)0x3e90, (q15_t)0x4d8b, (q15_t)0x3e8d, (q15_t)0x4d97, (q15_t)0x3e8a,\n    (q15_t)0x4da4, (q15_t)0x3e88, (q15_t)0x4db0, (q15_t)0x3e85, (q15_t)0x4dbc, (q15_t)0x3e82, (q15_t)0x4dc8, (q15_t)0x3e80,\n    (q15_t)0x4dd5, (q15_t)0x3e7d, (q15_t)0x4de1, (q15_t)0x3e7a, (q15_t)0x4ded, (q15_t)0x3e77, (q15_t)0x4df9, (q15_t)0x3e75,\n    (q15_t)0x4e06, (q15_t)0x3e72, (q15_t)0x4e12, (q15_t)0x3e6f, (q15_t)0x4e1e, (q15_t)0x3e6c, (q15_t)0x4e2b, (q15_t)0x3e6a,\n    (q15_t)0x4e37, (q15_t)0x3e67, (q15_t)0x4e43, (q15_t)0x3e64, (q15_t)0x4e4f, (q15_t)0x3e61, (q15_t)0x4e5c, (q15_t)0x3e5e,\n    (q15_t)0x4e68, (q15_t)0x3e5c, (q15_t)0x4e74, (q15_t)0x3e59, (q15_t)0x4e80, (q15_t)0x3e56, (q15_t)0x4e8c, (q15_t)0x3e53,\n    (q15_t)0x4e99, (q15_t)0x3e50, (q15_t)0x4ea5, (q15_t)0x3e4d, (q15_t)0x4eb1, (q15_t)0x3e4a, (q15_t)0x4ebd, (q15_t)0x3e48,\n    (q15_t)0x4eca, (q15_t)0x3e45, (q15_t)0x4ed6, (q15_t)0x3e42, (q15_t)0x4ee2, (q15_t)0x3e3f, (q15_t)0x4eee, (q15_t)0x3e3c,\n    (q15_t)0x4efb, (q15_t)0x3e39, (q15_t)0x4f07, (q15_t)0x3e36, (q15_t)0x4f13, (q15_t)0x3e33, (q15_t)0x4f1f, (q15_t)0x3e30,\n    (q15_t)0x4f2b, (q15_t)0x3e2d, (q15_t)0x4f38, (q15_t)0x3e2a, (q15_t)0x4f44, (q15_t)0x3e27, (q15_t)0x4f50, (q15_t)0x3e24,\n    (q15_t)0x4f5c, (q15_t)0x3e21, (q15_t)0x4f68, (q15_t)0x3e1e, (q15_t)0x4f75, (q15_t)0x3e1b, (q15_t)0x4f81, (q15_t)0x3e18,\n    (q15_t)0x4f8d, (q15_t)0x3e15, (q15_t)0x4f99, (q15_t)0x3e12, (q15_t)0x4fa5, (q15_t)0x3e0f, (q15_t)0x4fb2, (q15_t)0x3e0c,\n    (q15_t)0x4fbe, (q15_t)0x3e09, (q15_t)0x4fca, (q15_t)0x3e06, (q15_t)0x4fd6, (q15_t)0x3e03, (q15_t)0x4fe2, (q15_t)0x3dff,\n    (q15_t)0x4fee, (q15_t)0x3dfc, (q15_t)0x4ffb, (q15_t)0x3df9, (q15_t)0x5007, (q15_t)0x3df6, (q15_t)0x5013, (q15_t)0x3df3,\n    (q15_t)0x501f, (q15_t)0x3df0, (q15_t)0x502b, (q15_t)0x3ded, (q15_t)0x5037, (q15_t)0x3de9, (q15_t)0x5044, (q15_t)0x3de6,\n    (q15_t)0x5050, (q15_t)0x3de3, (q15_t)0x505c, (q15_t)0x3de0, (q15_t)0x5068, (q15_t)0x3ddd, (q15_t)0x5074, (q15_t)0x3dd9,\n    (q15_t)0x5080, (q15_t)0x3dd6, (q15_t)0x508c, (q15_t)0x3dd3, (q15_t)0x5099, (q15_t)0x3dd0, (q15_t)0x50a5, (q15_t)0x3dcc,\n    (q15_t)0x50b1, (q15_t)0x3dc9, (q15_t)0x50bd, (q15_t)0x3dc6, (q15_t)0x50c9, (q15_t)0x3dc2, (q15_t)0x50d5, (q15_t)0x3dbf,\n    (q15_t)0x50e1, (q15_t)0x3dbc, (q15_t)0x50ed, (q15_t)0x3db9, (q15_t)0x50fa, (q15_t)0x3db5, (q15_t)0x5106, (q15_t)0x3db2,\n    (q15_t)0x5112, (q15_t)0x3daf, (q15_t)0x511e, (q15_t)0x3dab, (q15_t)0x512a, (q15_t)0x3da8, (q15_t)0x5136, (q15_t)0x3da4,\n    (q15_t)0x5142, (q15_t)0x3da1, (q15_t)0x514e, (q15_t)0x3d9e, (q15_t)0x515a, (q15_t)0x3d9a, (q15_t)0x5167, (q15_t)0x3d97,\n    (q15_t)0x5173, (q15_t)0x3d93, (q15_t)0x517f, (q15_t)0x3d90, (q15_t)0x518b, (q15_t)0x3d8d, (q15_t)0x5197, (q15_t)0x3d89,\n    (q15_t)0x51a3, (q15_t)0x3d86, (q15_t)0x51af, (q15_t)0x3d82, (q15_t)0x51bb, (q15_t)0x3d7f, (q15_t)0x51c7, (q15_t)0x3d7b,\n    (q15_t)0x51d3, (q15_t)0x3d78, (q15_t)0x51df, (q15_t)0x3d74, (q15_t)0x51eb, (q15_t)0x3d71, (q15_t)0x51f7, (q15_t)0x3d6d,\n    (q15_t)0x5204, (q15_t)0x3d6a, (q15_t)0x5210, (q15_t)0x3d66, (q15_t)0x521c, (q15_t)0x3d63, (q15_t)0x5228, (q15_t)0x3d5f,\n    (q15_t)0x5234, (q15_t)0x3d5b, (q15_t)0x5240, (q15_t)0x3d58, (q15_t)0x524c, (q15_t)0x3d54, (q15_t)0x5258, (q15_t)0x3d51,\n    (q15_t)0x5264, (q15_t)0x3d4d, (q15_t)0x5270, (q15_t)0x3d49, (q15_t)0x527c, (q15_t)0x3d46, (q15_t)0x5288, (q15_t)0x3d42,\n    (q15_t)0x5294, (q15_t)0x3d3f, (q15_t)0x52a0, (q15_t)0x3d3b, (q15_t)0x52ac, (q15_t)0x3d37, (q15_t)0x52b8, (q15_t)0x3d34,\n    (q15_t)0x52c4, (q15_t)0x3d30, (q15_t)0x52d0, (q15_t)0x3d2c, (q15_t)0x52dc, (q15_t)0x3d28, (q15_t)0x52e8, (q15_t)0x3d25,\n    (q15_t)0x52f4, (q15_t)0x3d21, (q15_t)0x5300, (q15_t)0x3d1d, (q15_t)0x530c, (q15_t)0x3d1a, (q15_t)0x5318, (q15_t)0x3d16,\n    (q15_t)0x5324, (q15_t)0x3d12, (q15_t)0x5330, (q15_t)0x3d0e, (q15_t)0x533c, (q15_t)0x3d0b, (q15_t)0x5348, (q15_t)0x3d07,\n    (q15_t)0x5354, (q15_t)0x3d03, (q15_t)0x5360, (q15_t)0x3cff, (q15_t)0x536c, (q15_t)0x3cfb, (q15_t)0x5378, (q15_t)0x3cf8,\n    (q15_t)0x5384, (q15_t)0x3cf4, (q15_t)0x5390, (q15_t)0x3cf0, (q15_t)0x539c, (q15_t)0x3cec, (q15_t)0x53a8, (q15_t)0x3ce8,\n    (q15_t)0x53b4, (q15_t)0x3ce4, (q15_t)0x53c0, (q15_t)0x3ce0, (q15_t)0x53cc, (q15_t)0x3cdd, (q15_t)0x53d8, (q15_t)0x3cd9,\n    (q15_t)0x53e4, (q15_t)0x3cd5, (q15_t)0x53f0, (q15_t)0x3cd1, (q15_t)0x53fb, (q15_t)0x3ccd, (q15_t)0x5407, (q15_t)0x3cc9,\n    (q15_t)0x5413, (q15_t)0x3cc5, (q15_t)0x541f, (q15_t)0x3cc1, (q15_t)0x542b, (q15_t)0x3cbd, (q15_t)0x5437, (q15_t)0x3cb9,\n    (q15_t)0x5443, (q15_t)0x3cb5, (q15_t)0x544f, (q15_t)0x3cb1, (q15_t)0x545b, (q15_t)0x3cad, (q15_t)0x5467, (q15_t)0x3ca9,\n    (q15_t)0x5473, (q15_t)0x3ca5, (q15_t)0x547f, (q15_t)0x3ca1, (q15_t)0x548b, (q15_t)0x3c9d, (q15_t)0x5496, (q15_t)0x3c99,\n    (q15_t)0x54a2, (q15_t)0x3c95, (q15_t)0x54ae, (q15_t)0x3c91, (q15_t)0x54ba, (q15_t)0x3c8d, (q15_t)0x54c6, (q15_t)0x3c89,\n    (q15_t)0x54d2, (q15_t)0x3c85, (q15_t)0x54de, (q15_t)0x3c81, (q15_t)0x54ea, (q15_t)0x3c7d, (q15_t)0x54f6, (q15_t)0x3c79,\n    (q15_t)0x5501, (q15_t)0x3c74, (q15_t)0x550d, (q15_t)0x3c70, (q15_t)0x5519, (q15_t)0x3c6c, (q15_t)0x5525, (q15_t)0x3c68,\n    (q15_t)0x5531, (q15_t)0x3c64, (q15_t)0x553d, (q15_t)0x3c60, (q15_t)0x5549, (q15_t)0x3c5b, (q15_t)0x5554, (q15_t)0x3c57,\n    (q15_t)0x5560, (q15_t)0x3c53, (q15_t)0x556c, (q15_t)0x3c4f, (q15_t)0x5578, (q15_t)0x3c4b, (q15_t)0x5584, (q15_t)0x3c46,\n    (q15_t)0x5590, (q15_t)0x3c42, (q15_t)0x559b, (q15_t)0x3c3e, (q15_t)0x55a7, (q15_t)0x3c3a, (q15_t)0x55b3, (q15_t)0x3c36,\n    (q15_t)0x55bf, (q15_t)0x3c31, (q15_t)0x55cb, (q15_t)0x3c2d, (q15_t)0x55d7, (q15_t)0x3c29, (q15_t)0x55e2, (q15_t)0x3c24,\n    (q15_t)0x55ee, (q15_t)0x3c20, (q15_t)0x55fa, (q15_t)0x3c1c, (q15_t)0x5606, (q15_t)0x3c17, (q15_t)0x5612, (q15_t)0x3c13,\n    (q15_t)0x561d, (q15_t)0x3c0f, (q15_t)0x5629, (q15_t)0x3c0a, (q15_t)0x5635, (q15_t)0x3c06, (q15_t)0x5641, (q15_t)0x3c02,\n    (q15_t)0x564c, (q15_t)0x3bfd, (q15_t)0x5658, (q15_t)0x3bf9, (q15_t)0x5664, (q15_t)0x3bf5, (q15_t)0x5670, (q15_t)0x3bf0,\n    (q15_t)0x567c, (q15_t)0x3bec, (q15_t)0x5687, (q15_t)0x3be7, (q15_t)0x5693, (q15_t)0x3be3, (q15_t)0x569f, (q15_t)0x3bde,\n    (q15_t)0x56ab, (q15_t)0x3bda, (q15_t)0x56b6, (q15_t)0x3bd6, (q15_t)0x56c2, (q15_t)0x3bd1, (q15_t)0x56ce, (q15_t)0x3bcd,\n    (q15_t)0x56da, (q15_t)0x3bc8, (q15_t)0x56e5, (q15_t)0x3bc4, (q15_t)0x56f1, (q15_t)0x3bbf, (q15_t)0x56fd, (q15_t)0x3bbb,\n    (q15_t)0x5709, (q15_t)0x3bb6, (q15_t)0x5714, (q15_t)0x3bb2, (q15_t)0x5720, (q15_t)0x3bad, (q15_t)0x572c, (q15_t)0x3ba9,\n    (q15_t)0x5737, (q15_t)0x3ba4, (q15_t)0x5743, (q15_t)0x3b9f, (q15_t)0x574f, (q15_t)0x3b9b, (q15_t)0x575b, (q15_t)0x3b96,\n    (q15_t)0x5766, (q15_t)0x3b92, (q15_t)0x5772, (q15_t)0x3b8d, (q15_t)0x577e, (q15_t)0x3b88, (q15_t)0x5789, (q15_t)0x3b84,\n    (q15_t)0x5795, (q15_t)0x3b7f, (q15_t)0x57a1, (q15_t)0x3b7b, (q15_t)0x57ac, (q15_t)0x3b76, (q15_t)0x57b8, (q15_t)0x3b71,\n    (q15_t)0x57c4, (q15_t)0x3b6d, (q15_t)0x57cf, (q15_t)0x3b68, (q15_t)0x57db, (q15_t)0x3b63, (q15_t)0x57e7, (q15_t)0x3b5f,\n    (q15_t)0x57f2, (q15_t)0x3b5a, (q15_t)0x57fe, (q15_t)0x3b55, (q15_t)0x580a, (q15_t)0x3b50, (q15_t)0x5815, (q15_t)0x3b4c,\n    (q15_t)0x5821, (q15_t)0x3b47, (q15_t)0x582d, (q15_t)0x3b42, (q15_t)0x5838, (q15_t)0x3b3e, (q15_t)0x5844, (q15_t)0x3b39,\n    (q15_t)0x584f, (q15_t)0x3b34, (q15_t)0x585b, (q15_t)0x3b2f, (q15_t)0x5867, (q15_t)0x3b2a, (q15_t)0x5872, (q15_t)0x3b26,\n    (q15_t)0x587e, (q15_t)0x3b21, (q15_t)0x5889, (q15_t)0x3b1c, (q15_t)0x5895, (q15_t)0x3b17, (q15_t)0x58a1, (q15_t)0x3b12,\n    (q15_t)0x58ac, (q15_t)0x3b0e, (q15_t)0x58b8, (q15_t)0x3b09, (q15_t)0x58c3, (q15_t)0x3b04, (q15_t)0x58cf, (q15_t)0x3aff,\n    (q15_t)0x58db, (q15_t)0x3afa, (q15_t)0x58e6, (q15_t)0x3af5, (q15_t)0x58f2, (q15_t)0x3af0, (q15_t)0x58fd, (q15_t)0x3aeb,\n    (q15_t)0x5909, (q15_t)0x3ae6, (q15_t)0x5914, (q15_t)0x3ae2, (q15_t)0x5920, (q15_t)0x3add, (q15_t)0x592c, (q15_t)0x3ad8,\n    (q15_t)0x5937, (q15_t)0x3ad3, (q15_t)0x5943, (q15_t)0x3ace, (q15_t)0x594e, (q15_t)0x3ac9, (q15_t)0x595a, (q15_t)0x3ac4,\n    (q15_t)0x5965, (q15_t)0x3abf, (q15_t)0x5971, (q15_t)0x3aba, (q15_t)0x597c, (q15_t)0x3ab5, (q15_t)0x5988, (q15_t)0x3ab0,\n    (q15_t)0x5993, (q15_t)0x3aab, (q15_t)0x599f, (q15_t)0x3aa6, (q15_t)0x59aa, (q15_t)0x3aa1, (q15_t)0x59b6, (q15_t)0x3a9c,\n    (q15_t)0x59c1, (q15_t)0x3a97, (q15_t)0x59cd, (q15_t)0x3a92, (q15_t)0x59d8, (q15_t)0x3a8d, (q15_t)0x59e4, (q15_t)0x3a88,\n    (q15_t)0x59ef, (q15_t)0x3a82, (q15_t)0x59fb, (q15_t)0x3a7d, (q15_t)0x5a06, (q15_t)0x3a78, (q15_t)0x5a12, (q15_t)0x3a73,\n    (q15_t)0x5a1d, (q15_t)0x3a6e, (q15_t)0x5a29, (q15_t)0x3a69, (q15_t)0x5a34, (q15_t)0x3a64, (q15_t)0x5a40, (q15_t)0x3a5f,\n    (q15_t)0x5a4b, (q15_t)0x3a59, (q15_t)0x5a57, (q15_t)0x3a54, (q15_t)0x5a62, (q15_t)0x3a4f, (q15_t)0x5a6e, (q15_t)0x3a4a,\n    (q15_t)0x5a79, (q15_t)0x3a45, (q15_t)0x5a84, (q15_t)0x3a3f, (q15_t)0x5a90, (q15_t)0x3a3a, (q15_t)0x5a9b, (q15_t)0x3a35,\n    (q15_t)0x5aa7, (q15_t)0x3a30, (q15_t)0x5ab2, (q15_t)0x3a2b, (q15_t)0x5abe, (q15_t)0x3a25, (q15_t)0x5ac9, (q15_t)0x3a20,\n    (q15_t)0x5ad4, (q15_t)0x3a1b, (q15_t)0x5ae0, (q15_t)0x3a16, (q15_t)0x5aeb, (q15_t)0x3a10, (q15_t)0x5af7, (q15_t)0x3a0b,\n    (q15_t)0x5b02, (q15_t)0x3a06, (q15_t)0x5b0d, (q15_t)0x3a00, (q15_t)0x5b19, (q15_t)0x39fb, (q15_t)0x5b24, (q15_t)0x39f6,\n    (q15_t)0x5b30, (q15_t)0x39f0, (q15_t)0x5b3b, (q15_t)0x39eb, (q15_t)0x5b46, (q15_t)0x39e6, (q15_t)0x5b52, (q15_t)0x39e0,\n    (q15_t)0x5b5d, (q15_t)0x39db, (q15_t)0x5b68, (q15_t)0x39d6, (q15_t)0x5b74, (q15_t)0x39d0, (q15_t)0x5b7f, (q15_t)0x39cb,\n    (q15_t)0x5b8a, (q15_t)0x39c5, (q15_t)0x5b96, (q15_t)0x39c0, (q15_t)0x5ba1, (q15_t)0x39bb, (q15_t)0x5bac, (q15_t)0x39b5,\n    (q15_t)0x5bb8, (q15_t)0x39b0, (q15_t)0x5bc3, (q15_t)0x39aa, (q15_t)0x5bce, (q15_t)0x39a5, (q15_t)0x5bda, (q15_t)0x399f,\n    (q15_t)0x5be5, (q15_t)0x399a, (q15_t)0x5bf0, (q15_t)0x3994, (q15_t)0x5bfc, (q15_t)0x398f, (q15_t)0x5c07, (q15_t)0x3989,\n    (q15_t)0x5c12, (q15_t)0x3984, (q15_t)0x5c1e, (q15_t)0x397e, (q15_t)0x5c29, (q15_t)0x3979, (q15_t)0x5c34, (q15_t)0x3973,\n    (q15_t)0x5c3f, (q15_t)0x396e, (q15_t)0x5c4b, (q15_t)0x3968, (q15_t)0x5c56, (q15_t)0x3963, (q15_t)0x5c61, (q15_t)0x395d,\n    (q15_t)0x5c6c, (q15_t)0x3958, (q15_t)0x5c78, (q15_t)0x3952, (q15_t)0x5c83, (q15_t)0x394c, (q15_t)0x5c8e, (q15_t)0x3947,\n    (q15_t)0x5c99, (q15_t)0x3941, (q15_t)0x5ca5, (q15_t)0x393b, (q15_t)0x5cb0, (q15_t)0x3936, (q15_t)0x5cbb, (q15_t)0x3930,\n    (q15_t)0x5cc6, (q15_t)0x392b, (q15_t)0x5cd2, (q15_t)0x3925, (q15_t)0x5cdd, (q15_t)0x391f, (q15_t)0x5ce8, (q15_t)0x391a,\n    (q15_t)0x5cf3, (q15_t)0x3914, (q15_t)0x5cff, (q15_t)0x390e, (q15_t)0x5d0a, (q15_t)0x3909, (q15_t)0x5d15, (q15_t)0x3903,\n    (q15_t)0x5d20, (q15_t)0x38fd, (q15_t)0x5d2b, (q15_t)0x38f7, (q15_t)0x5d36, (q15_t)0x38f2, (q15_t)0x5d42, (q15_t)0x38ec,\n    (q15_t)0x5d4d, (q15_t)0x38e6, (q15_t)0x5d58, (q15_t)0x38e0, (q15_t)0x5d63, (q15_t)0x38db, (q15_t)0x5d6e, (q15_t)0x38d5,\n    (q15_t)0x5d79, (q15_t)0x38cf, (q15_t)0x5d85, (q15_t)0x38c9, (q15_t)0x5d90, (q15_t)0x38c3, (q15_t)0x5d9b, (q15_t)0x38be,\n    (q15_t)0x5da6, (q15_t)0x38b8, (q15_t)0x5db1, (q15_t)0x38b2, (q15_t)0x5dbc, (q15_t)0x38ac, (q15_t)0x5dc7, (q15_t)0x38a6,\n    (q15_t)0x5dd3, (q15_t)0x38a1, (q15_t)0x5dde, (q15_t)0x389b, (q15_t)0x5de9, (q15_t)0x3895, (q15_t)0x5df4, (q15_t)0x388f,\n    (q15_t)0x5dff, (q15_t)0x3889, (q15_t)0x5e0a, (q15_t)0x3883, (q15_t)0x5e15, (q15_t)0x387d, (q15_t)0x5e20, (q15_t)0x3877,\n    (q15_t)0x5e2b, (q15_t)0x3871, (q15_t)0x5e36, (q15_t)0x386b, (q15_t)0x5e42, (q15_t)0x3866, (q15_t)0x5e4d, (q15_t)0x3860,\n    (q15_t)0x5e58, (q15_t)0x385a, (q15_t)0x5e63, (q15_t)0x3854, (q15_t)0x5e6e, (q15_t)0x384e, (q15_t)0x5e79, (q15_t)0x3848,\n    (q15_t)0x5e84, (q15_t)0x3842, (q15_t)0x5e8f, (q15_t)0x383c, (q15_t)0x5e9a, (q15_t)0x3836, (q15_t)0x5ea5, (q15_t)0x3830,\n    (q15_t)0x5eb0, (q15_t)0x382a, (q15_t)0x5ebb, (q15_t)0x3824, (q15_t)0x5ec6, (q15_t)0x381e, (q15_t)0x5ed1, (q15_t)0x3818,\n    (q15_t)0x5edc, (q15_t)0x3812, (q15_t)0x5ee7, (q15_t)0x380b, (q15_t)0x5ef2, (q15_t)0x3805, (q15_t)0x5efd, (q15_t)0x37ff,\n    (q15_t)0x5f08, (q15_t)0x37f9, (q15_t)0x5f13, (q15_t)0x37f3, (q15_t)0x5f1e, (q15_t)0x37ed, (q15_t)0x5f29, (q15_t)0x37e7,\n    (q15_t)0x5f34, (q15_t)0x37e1, (q15_t)0x5f3f, (q15_t)0x37db, (q15_t)0x5f4a, (q15_t)0x37d5, (q15_t)0x5f55, (q15_t)0x37ce,\n    (q15_t)0x5f60, (q15_t)0x37c8, (q15_t)0x5f6b, (q15_t)0x37c2, (q15_t)0x5f76, (q15_t)0x37bc, (q15_t)0x5f81, (q15_t)0x37b6,\n    (q15_t)0x5f8c, (q15_t)0x37b0, (q15_t)0x5f97, (q15_t)0x37a9, (q15_t)0x5fa2, (q15_t)0x37a3, (q15_t)0x5fac, (q15_t)0x379d,\n    (q15_t)0x5fb7, (q15_t)0x3797, (q15_t)0x5fc2, (q15_t)0x3790, (q15_t)0x5fcd, (q15_t)0x378a, (q15_t)0x5fd8, (q15_t)0x3784,\n    (q15_t)0x5fe3, (q15_t)0x377e, (q15_t)0x5fee, (q15_t)0x3777, (q15_t)0x5ff9, (q15_t)0x3771, (q15_t)0x6004, (q15_t)0x376b,\n    (q15_t)0x600f, (q15_t)0x3765, (q15_t)0x6019, (q15_t)0x375e, (q15_t)0x6024, (q15_t)0x3758, (q15_t)0x602f, (q15_t)0x3752,\n    (q15_t)0x603a, (q15_t)0x374b, (q15_t)0x6045, (q15_t)0x3745, (q15_t)0x6050, (q15_t)0x373f, (q15_t)0x605b, (q15_t)0x3738,\n    (q15_t)0x6065, (q15_t)0x3732, (q15_t)0x6070, (q15_t)0x372c, (q15_t)0x607b, (q15_t)0x3725, (q15_t)0x6086, (q15_t)0x371f,\n    (q15_t)0x6091, (q15_t)0x3718, (q15_t)0x609b, (q15_t)0x3712, (q15_t)0x60a6, (q15_t)0x370c, (q15_t)0x60b1, (q15_t)0x3705,\n    (q15_t)0x60bc, (q15_t)0x36ff, (q15_t)0x60c7, (q15_t)0x36f8, (q15_t)0x60d1, (q15_t)0x36f2, (q15_t)0x60dc, (q15_t)0x36eb,\n    (q15_t)0x60e7, (q15_t)0x36e5, (q15_t)0x60f2, (q15_t)0x36df, (q15_t)0x60fd, (q15_t)0x36d8, (q15_t)0x6107, (q15_t)0x36d2,\n    (q15_t)0x6112, (q15_t)0x36cb, (q15_t)0x611d, (q15_t)0x36c5, (q15_t)0x6128, (q15_t)0x36be, (q15_t)0x6132, (q15_t)0x36b8,\n    (q15_t)0x613d, (q15_t)0x36b1, (q15_t)0x6148, (q15_t)0x36ab, (q15_t)0x6153, (q15_t)0x36a4, (q15_t)0x615d, (q15_t)0x369d,\n    (q15_t)0x6168, (q15_t)0x3697, (q15_t)0x6173, (q15_t)0x3690, (q15_t)0x617d, (q15_t)0x368a, (q15_t)0x6188, (q15_t)0x3683,\n    (q15_t)0x6193, (q15_t)0x367d, (q15_t)0x619e, (q15_t)0x3676, (q15_t)0x61a8, (q15_t)0x366f, (q15_t)0x61b3, (q15_t)0x3669,\n    (q15_t)0x61be, (q15_t)0x3662, (q15_t)0x61c8, (q15_t)0x365c, (q15_t)0x61d3, (q15_t)0x3655, (q15_t)0x61de, (q15_t)0x364e,\n    (q15_t)0x61e8, (q15_t)0x3648, (q15_t)0x61f3, (q15_t)0x3641, (q15_t)0x61fe, (q15_t)0x363a, (q15_t)0x6208, (q15_t)0x3634,\n    (q15_t)0x6213, (q15_t)0x362d, (q15_t)0x621e, (q15_t)0x3626, (q15_t)0x6228, (q15_t)0x3620, (q15_t)0x6233, (q15_t)0x3619,\n    (q15_t)0x623d, (q15_t)0x3612, (q15_t)0x6248, (q15_t)0x360b, (q15_t)0x6253, (q15_t)0x3605, (q15_t)0x625d, (q15_t)0x35fe,\n    (q15_t)0x6268, (q15_t)0x35f7, (q15_t)0x6272, (q15_t)0x35f0, (q15_t)0x627d, (q15_t)0x35ea, (q15_t)0x6288, (q15_t)0x35e3,\n    (q15_t)0x6292, (q15_t)0x35dc, (q15_t)0x629d, (q15_t)0x35d5, (q15_t)0x62a7, (q15_t)0x35ce, (q15_t)0x62b2, (q15_t)0x35c8,\n    (q15_t)0x62bc, (q15_t)0x35c1, (q15_t)0x62c7, (q15_t)0x35ba, (q15_t)0x62d2, (q15_t)0x35b3, (q15_t)0x62dc, (q15_t)0x35ac,\n    (q15_t)0x62e7, (q15_t)0x35a5, (q15_t)0x62f1, (q15_t)0x359f, (q15_t)0x62fc, (q15_t)0x3598, (q15_t)0x6306, (q15_t)0x3591,\n    (q15_t)0x6311, (q15_t)0x358a, (q15_t)0x631b, (q15_t)0x3583, (q15_t)0x6326, (q15_t)0x357c, (q15_t)0x6330, (q15_t)0x3575,\n    (q15_t)0x633b, (q15_t)0x356e, (q15_t)0x6345, (q15_t)0x3567, (q15_t)0x6350, (q15_t)0x3561, (q15_t)0x635a, (q15_t)0x355a,\n    (q15_t)0x6365, (q15_t)0x3553, (q15_t)0x636f, (q15_t)0x354c, (q15_t)0x637a, (q15_t)0x3545, (q15_t)0x6384, (q15_t)0x353e,\n    (q15_t)0x638e, (q15_t)0x3537, (q15_t)0x6399, (q15_t)0x3530, (q15_t)0x63a3, (q15_t)0x3529, (q15_t)0x63ae, (q15_t)0x3522,\n    (q15_t)0x63b8, (q15_t)0x351b, (q15_t)0x63c3, (q15_t)0x3514, (q15_t)0x63cd, (q15_t)0x350d, (q15_t)0x63d7, (q15_t)0x3506,\n    (q15_t)0x63e2, (q15_t)0x34ff, (q15_t)0x63ec, (q15_t)0x34f8, (q15_t)0x63f7, (q15_t)0x34f1, (q15_t)0x6401, (q15_t)0x34ea,\n    (q15_t)0x640b, (q15_t)0x34e2, (q15_t)0x6416, (q15_t)0x34db, (q15_t)0x6420, (q15_t)0x34d4, (q15_t)0x642b, (q15_t)0x34cd,\n    (q15_t)0x6435, (q15_t)0x34c6, (q15_t)0x643f, (q15_t)0x34bf, (q15_t)0x644a, (q15_t)0x34b8, (q15_t)0x6454, (q15_t)0x34b1,\n    (q15_t)0x645e, (q15_t)0x34aa, (q15_t)0x6469, (q15_t)0x34a2, (q15_t)0x6473, (q15_t)0x349b, (q15_t)0x647d, (q15_t)0x3494,\n    (q15_t)0x6488, (q15_t)0x348d, (q15_t)0x6492, (q15_t)0x3486, (q15_t)0x649c, (q15_t)0x347f, (q15_t)0x64a7, (q15_t)0x3477,\n    (q15_t)0x64b1, (q15_t)0x3470, (q15_t)0x64bb, (q15_t)0x3469, (q15_t)0x64c5, (q15_t)0x3462, (q15_t)0x64d0, (q15_t)0x345b,\n    (q15_t)0x64da, (q15_t)0x3453, (q15_t)0x64e4, (q15_t)0x344c, (q15_t)0x64ef, (q15_t)0x3445, (q15_t)0x64f9, (q15_t)0x343e,\n    (q15_t)0x6503, (q15_t)0x3436, (q15_t)0x650d, (q15_t)0x342f, (q15_t)0x6518, (q15_t)0x3428, (q15_t)0x6522, (q15_t)0x3420,\n    (q15_t)0x652c, (q15_t)0x3419, (q15_t)0x6536, (q15_t)0x3412, (q15_t)0x6541, (q15_t)0x340b, (q15_t)0x654b, (q15_t)0x3403,\n    (q15_t)0x6555, (q15_t)0x33fc, (q15_t)0x655f, (q15_t)0x33f5, (q15_t)0x6569, (q15_t)0x33ed, (q15_t)0x6574, (q15_t)0x33e6,\n    (q15_t)0x657e, (q15_t)0x33df, (q15_t)0x6588, (q15_t)0x33d7, (q15_t)0x6592, (q15_t)0x33d0, (q15_t)0x659c, (q15_t)0x33c8,\n    (q15_t)0x65a6, (q15_t)0x33c1, (q15_t)0x65b1, (q15_t)0x33ba, (q15_t)0x65bb, (q15_t)0x33b2, (q15_t)0x65c5, (q15_t)0x33ab,\n    (q15_t)0x65cf, (q15_t)0x33a3, (q15_t)0x65d9, (q15_t)0x339c, (q15_t)0x65e3, (q15_t)0x3395, (q15_t)0x65ed, (q15_t)0x338d,\n    (q15_t)0x65f8, (q15_t)0x3386, (q15_t)0x6602, (q15_t)0x337e, (q15_t)0x660c, (q15_t)0x3377, (q15_t)0x6616, (q15_t)0x336f,\n    (q15_t)0x6620, (q15_t)0x3368, (q15_t)0x662a, (q15_t)0x3360, (q15_t)0x6634, (q15_t)0x3359, (q15_t)0x663e, (q15_t)0x3351,\n    (q15_t)0x6648, (q15_t)0x334a, (q15_t)0x6652, (q15_t)0x3342, (q15_t)0x665c, (q15_t)0x333b, (q15_t)0x6666, (q15_t)0x3333,\n    (q15_t)0x6671, (q15_t)0x332c, (q15_t)0x667b, (q15_t)0x3324, (q15_t)0x6685, (q15_t)0x331d, (q15_t)0x668f, (q15_t)0x3315,\n    (q15_t)0x6699, (q15_t)0x330d, (q15_t)0x66a3, (q15_t)0x3306, (q15_t)0x66ad, (q15_t)0x32fe, (q15_t)0x66b7, (q15_t)0x32f7,\n    (q15_t)0x66c1, (q15_t)0x32ef, (q15_t)0x66cb, (q15_t)0x32e7, (q15_t)0x66d5, (q15_t)0x32e0, (q15_t)0x66df, (q15_t)0x32d8,\n    (q15_t)0x66e9, (q15_t)0x32d0, (q15_t)0x66f3, (q15_t)0x32c9, (q15_t)0x66fd, (q15_t)0x32c1, (q15_t)0x6707, (q15_t)0x32ba,\n    (q15_t)0x6711, (q15_t)0x32b2, (q15_t)0x671a, (q15_t)0x32aa, (q15_t)0x6724, (q15_t)0x32a3, (q15_t)0x672e, (q15_t)0x329b,\n    (q15_t)0x6738, (q15_t)0x3293, (q15_t)0x6742, (q15_t)0x328b, (q15_t)0x674c, (q15_t)0x3284, (q15_t)0x6756, (q15_t)0x327c,\n    (q15_t)0x6760, (q15_t)0x3274, (q15_t)0x676a, (q15_t)0x326d, (q15_t)0x6774, (q15_t)0x3265, (q15_t)0x677e, (q15_t)0x325d,\n    (q15_t)0x6788, (q15_t)0x3255, (q15_t)0x6791, (q15_t)0x324e, (q15_t)0x679b, (q15_t)0x3246, (q15_t)0x67a5, (q15_t)0x323e,\n    (q15_t)0x67af, (q15_t)0x3236, (q15_t)0x67b9, (q15_t)0x322e, (q15_t)0x67c3, (q15_t)0x3227, (q15_t)0x67cd, (q15_t)0x321f,\n    (q15_t)0x67d6, (q15_t)0x3217, (q15_t)0x67e0, (q15_t)0x320f, (q15_t)0x67ea, (q15_t)0x3207, (q15_t)0x67f4, (q15_t)0x31ff,\n    (q15_t)0x67fe, (q15_t)0x31f8, (q15_t)0x6808, (q15_t)0x31f0, (q15_t)0x6811, (q15_t)0x31e8, (q15_t)0x681b, (q15_t)0x31e0,\n    (q15_t)0x6825, (q15_t)0x31d8, (q15_t)0x682f, (q15_t)0x31d0, (q15_t)0x6838, (q15_t)0x31c8, (q15_t)0x6842, (q15_t)0x31c0,\n    (q15_t)0x684c, (q15_t)0x31b9, (q15_t)0x6856, (q15_t)0x31b1, (q15_t)0x6860, (q15_t)0x31a9, (q15_t)0x6869, (q15_t)0x31a1,\n    (q15_t)0x6873, (q15_t)0x3199, (q15_t)0x687d, (q15_t)0x3191, (q15_t)0x6886, (q15_t)0x3189, (q15_t)0x6890, (q15_t)0x3181,\n    (q15_t)0x689a, (q15_t)0x3179, (q15_t)0x68a4, (q15_t)0x3171, (q15_t)0x68ad, (q15_t)0x3169, (q15_t)0x68b7, (q15_t)0x3161,\n    (q15_t)0x68c1, (q15_t)0x3159, (q15_t)0x68ca, (q15_t)0x3151, (q15_t)0x68d4, (q15_t)0x3149, (q15_t)0x68de, (q15_t)0x3141,\n    (q15_t)0x68e7, (q15_t)0x3139, (q15_t)0x68f1, (q15_t)0x3131, (q15_t)0x68fb, (q15_t)0x3129, (q15_t)0x6904, (q15_t)0x3121,\n    (q15_t)0x690e, (q15_t)0x3119, (q15_t)0x6918, (q15_t)0x3111, (q15_t)0x6921, (q15_t)0x3109, (q15_t)0x692b, (q15_t)0x3101,\n    (q15_t)0x6935, (q15_t)0x30f9, (q15_t)0x693e, (q15_t)0x30f0, (q15_t)0x6948, (q15_t)0x30e8, (q15_t)0x6951, (q15_t)0x30e0,\n    (q15_t)0x695b, (q15_t)0x30d8, (q15_t)0x6965, (q15_t)0x30d0, (q15_t)0x696e, (q15_t)0x30c8, (q15_t)0x6978, (q15_t)0x30c0,\n    (q15_t)0x6981, (q15_t)0x30b8, (q15_t)0x698b, (q15_t)0x30af, (q15_t)0x6994, (q15_t)0x30a7, (q15_t)0x699e, (q15_t)0x309f,\n    (q15_t)0x69a7, (q15_t)0x3097, (q15_t)0x69b1, (q15_t)0x308f, (q15_t)0x69bb, (q15_t)0x3087, (q15_t)0x69c4, (q15_t)0x307e,\n    (q15_t)0x69ce, (q15_t)0x3076, (q15_t)0x69d7, (q15_t)0x306e, (q15_t)0x69e1, (q15_t)0x3066, (q15_t)0x69ea, (q15_t)0x305d,\n    (q15_t)0x69f4, (q15_t)0x3055, (q15_t)0x69fd, (q15_t)0x304d, (q15_t)0x6a07, (q15_t)0x3045, (q15_t)0x6a10, (q15_t)0x303c,\n    (q15_t)0x6a1a, (q15_t)0x3034, (q15_t)0x6a23, (q15_t)0x302c, (q15_t)0x6a2c, (q15_t)0x3024, (q15_t)0x6a36, (q15_t)0x301b,\n    (q15_t)0x6a3f, (q15_t)0x3013, (q15_t)0x6a49, (q15_t)0x300b, (q15_t)0x6a52, (q15_t)0x3002, (q15_t)0x6a5c, (q15_t)0x2ffa,\n    (q15_t)0x6a65, (q15_t)0x2ff2, (q15_t)0x6a6e, (q15_t)0x2fea, (q15_t)0x6a78, (q15_t)0x2fe1, (q15_t)0x6a81, (q15_t)0x2fd9,\n    (q15_t)0x6a8b, (q15_t)0x2fd0, (q15_t)0x6a94, (q15_t)0x2fc8, (q15_t)0x6a9d, (q15_t)0x2fc0, (q15_t)0x6aa7, (q15_t)0x2fb7,\n    (q15_t)0x6ab0, (q15_t)0x2faf, (q15_t)0x6ab9, (q15_t)0x2fa7, (q15_t)0x6ac3, (q15_t)0x2f9e, (q15_t)0x6acc, (q15_t)0x2f96,\n    (q15_t)0x6ad6, (q15_t)0x2f8d, (q15_t)0x6adf, (q15_t)0x2f85, (q15_t)0x6ae8, (q15_t)0x2f7d, (q15_t)0x6af2, (q15_t)0x2f74,\n    (q15_t)0x6afb, (q15_t)0x2f6c, (q15_t)0x6b04, (q15_t)0x2f63, (q15_t)0x6b0d, (q15_t)0x2f5b, (q15_t)0x6b17, (q15_t)0x2f52,\n    (q15_t)0x6b20, (q15_t)0x2f4a, (q15_t)0x6b29, (q15_t)0x2f41, (q15_t)0x6b33, (q15_t)0x2f39, (q15_t)0x6b3c, (q15_t)0x2f30,\n    (q15_t)0x6b45, (q15_t)0x2f28, (q15_t)0x6b4e, (q15_t)0x2f20, (q15_t)0x6b58, (q15_t)0x2f17, (q15_t)0x6b61, (q15_t)0x2f0e,\n    (q15_t)0x6b6a, (q15_t)0x2f06, (q15_t)0x6b73, (q15_t)0x2efd, (q15_t)0x6b7d, (q15_t)0x2ef5, (q15_t)0x6b86, (q15_t)0x2eec,\n    (q15_t)0x6b8f, (q15_t)0x2ee4, (q15_t)0x6b98, (q15_t)0x2edb, (q15_t)0x6ba1, (q15_t)0x2ed3, (q15_t)0x6bab, (q15_t)0x2eca,\n    (q15_t)0x6bb4, (q15_t)0x2ec2, (q15_t)0x6bbd, (q15_t)0x2eb9, (q15_t)0x6bc6, (q15_t)0x2eb0, (q15_t)0x6bcf, (q15_t)0x2ea8,\n    (q15_t)0x6bd8, (q15_t)0x2e9f, (q15_t)0x6be2, (q15_t)0x2e97, (q15_t)0x6beb, (q15_t)0x2e8e, (q15_t)0x6bf4, (q15_t)0x2e85,\n    (q15_t)0x6bfd, (q15_t)0x2e7d, (q15_t)0x6c06, (q15_t)0x2e74, (q15_t)0x6c0f, (q15_t)0x2e6b, (q15_t)0x6c18, (q15_t)0x2e63,\n    (q15_t)0x6c21, (q15_t)0x2e5a, (q15_t)0x6c2b, (q15_t)0x2e51, (q15_t)0x6c34, (q15_t)0x2e49, (q15_t)0x6c3d, (q15_t)0x2e40,\n    (q15_t)0x6c46, (q15_t)0x2e37, (q15_t)0x6c4f, (q15_t)0x2e2f, (q15_t)0x6c58, (q15_t)0x2e26, (q15_t)0x6c61, (q15_t)0x2e1d,\n    (q15_t)0x6c6a, (q15_t)0x2e15, (q15_t)0x6c73, (q15_t)0x2e0c, (q15_t)0x6c7c, (q15_t)0x2e03, (q15_t)0x6c85, (q15_t)0x2dfa,\n    (q15_t)0x6c8e, (q15_t)0x2df2, (q15_t)0x6c97, (q15_t)0x2de9, (q15_t)0x6ca0, (q15_t)0x2de0, (q15_t)0x6ca9, (q15_t)0x2dd7,\n    (q15_t)0x6cb2, (q15_t)0x2dcf, (q15_t)0x6cbb, (q15_t)0x2dc6, (q15_t)0x6cc4, (q15_t)0x2dbd, (q15_t)0x6ccd, (q15_t)0x2db4,\n    (q15_t)0x6cd6, (q15_t)0x2dab, (q15_t)0x6cdf, (q15_t)0x2da3, (q15_t)0x6ce8, (q15_t)0x2d9a, (q15_t)0x6cf1, (q15_t)0x2d91,\n    (q15_t)0x6cfa, (q15_t)0x2d88, (q15_t)0x6d03, (q15_t)0x2d7f, (q15_t)0x6d0c, (q15_t)0x2d76, (q15_t)0x6d15, (q15_t)0x2d6e,\n    (q15_t)0x6d1e, (q15_t)0x2d65, (q15_t)0x6d27, (q15_t)0x2d5c, (q15_t)0x6d2f, (q15_t)0x2d53, (q15_t)0x6d38, (q15_t)0x2d4a,\n    (q15_t)0x6d41, (q15_t)0x2d41, (q15_t)0x6d4a, (q15_t)0x2d38, (q15_t)0x6d53, (q15_t)0x2d2f, (q15_t)0x6d5c, (q15_t)0x2d27,\n    (q15_t)0x6d65, (q15_t)0x2d1e, (q15_t)0x6d6e, (q15_t)0x2d15, (q15_t)0x6d76, (q15_t)0x2d0c, (q15_t)0x6d7f, (q15_t)0x2d03,\n    (q15_t)0x6d88, (q15_t)0x2cfa, (q15_t)0x6d91, (q15_t)0x2cf1, (q15_t)0x6d9a, (q15_t)0x2ce8, (q15_t)0x6da3, (q15_t)0x2cdf,\n    (q15_t)0x6dab, (q15_t)0x2cd6, (q15_t)0x6db4, (q15_t)0x2ccd, (q15_t)0x6dbd, (q15_t)0x2cc4, (q15_t)0x6dc6, (q15_t)0x2cbb,\n    (q15_t)0x6dcf, (q15_t)0x2cb2, (q15_t)0x6dd7, (q15_t)0x2ca9, (q15_t)0x6de0, (q15_t)0x2ca0, (q15_t)0x6de9, (q15_t)0x2c97,\n    (q15_t)0x6df2, (q15_t)0x2c8e, (q15_t)0x6dfa, (q15_t)0x2c85, (q15_t)0x6e03, (q15_t)0x2c7c, (q15_t)0x6e0c, (q15_t)0x2c73,\n    (q15_t)0x6e15, (q15_t)0x2c6a, (q15_t)0x6e1d, (q15_t)0x2c61, (q15_t)0x6e26, (q15_t)0x2c58, (q15_t)0x6e2f, (q15_t)0x2c4f,\n    (q15_t)0x6e37, (q15_t)0x2c46, (q15_t)0x6e40, (q15_t)0x2c3d, (q15_t)0x6e49, (q15_t)0x2c34, (q15_t)0x6e51, (q15_t)0x2c2b,\n    (q15_t)0x6e5a, (q15_t)0x2c21, (q15_t)0x6e63, (q15_t)0x2c18, (q15_t)0x6e6b, (q15_t)0x2c0f, (q15_t)0x6e74, (q15_t)0x2c06,\n    (q15_t)0x6e7d, (q15_t)0x2bfd, (q15_t)0x6e85, (q15_t)0x2bf4, (q15_t)0x6e8e, (q15_t)0x2beb, (q15_t)0x6e97, (q15_t)0x2be2,\n    (q15_t)0x6e9f, (q15_t)0x2bd8, (q15_t)0x6ea8, (q15_t)0x2bcf, (q15_t)0x6eb0, (q15_t)0x2bc6, (q15_t)0x6eb9, (q15_t)0x2bbd,\n    (q15_t)0x6ec2, (q15_t)0x2bb4, (q15_t)0x6eca, (q15_t)0x2bab, (q15_t)0x6ed3, (q15_t)0x2ba1, (q15_t)0x6edb, (q15_t)0x2b98,\n    (q15_t)0x6ee4, (q15_t)0x2b8f, (q15_t)0x6eec, (q15_t)0x2b86, (q15_t)0x6ef5, (q15_t)0x2b7d, (q15_t)0x6efd, (q15_t)0x2b73,\n    (q15_t)0x6f06, (q15_t)0x2b6a, (q15_t)0x6f0e, (q15_t)0x2b61, (q15_t)0x6f17, (q15_t)0x2b58, (q15_t)0x6f20, (q15_t)0x2b4e,\n    (q15_t)0x6f28, (q15_t)0x2b45, (q15_t)0x6f30, (q15_t)0x2b3c, (q15_t)0x6f39, (q15_t)0x2b33, (q15_t)0x6f41, (q15_t)0x2b29,\n    (q15_t)0x6f4a, (q15_t)0x2b20, (q15_t)0x6f52, (q15_t)0x2b17, (q15_t)0x6f5b, (q15_t)0x2b0d, (q15_t)0x6f63, (q15_t)0x2b04,\n    (q15_t)0x6f6c, (q15_t)0x2afb, (q15_t)0x6f74, (q15_t)0x2af2, (q15_t)0x6f7d, (q15_t)0x2ae8, (q15_t)0x6f85, (q15_t)0x2adf,\n    (q15_t)0x6f8d, (q15_t)0x2ad6, (q15_t)0x6f96, (q15_t)0x2acc, (q15_t)0x6f9e, (q15_t)0x2ac3, (q15_t)0x6fa7, (q15_t)0x2ab9,\n    (q15_t)0x6faf, (q15_t)0x2ab0, (q15_t)0x6fb7, (q15_t)0x2aa7, (q15_t)0x6fc0, (q15_t)0x2a9d, (q15_t)0x6fc8, (q15_t)0x2a94,\n    (q15_t)0x6fd0, (q15_t)0x2a8b, (q15_t)0x6fd9, (q15_t)0x2a81, (q15_t)0x6fe1, (q15_t)0x2a78, (q15_t)0x6fea, (q15_t)0x2a6e,\n    (q15_t)0x6ff2, (q15_t)0x2a65, (q15_t)0x6ffa, (q15_t)0x2a5c, (q15_t)0x7002, (q15_t)0x2a52, (q15_t)0x700b, (q15_t)0x2a49,\n    (q15_t)0x7013, (q15_t)0x2a3f, (q15_t)0x701b, (q15_t)0x2a36, (q15_t)0x7024, (q15_t)0x2a2c, (q15_t)0x702c, (q15_t)0x2a23,\n    (q15_t)0x7034, (q15_t)0x2a1a, (q15_t)0x703c, (q15_t)0x2a10, (q15_t)0x7045, (q15_t)0x2a07, (q15_t)0x704d, (q15_t)0x29fd,\n    (q15_t)0x7055, (q15_t)0x29f4, (q15_t)0x705d, (q15_t)0x29ea, (q15_t)0x7066, (q15_t)0x29e1, (q15_t)0x706e, (q15_t)0x29d7,\n    (q15_t)0x7076, (q15_t)0x29ce, (q15_t)0x707e, (q15_t)0x29c4, (q15_t)0x7087, (q15_t)0x29bb, (q15_t)0x708f, (q15_t)0x29b1,\n    (q15_t)0x7097, (q15_t)0x29a7, (q15_t)0x709f, (q15_t)0x299e, (q15_t)0x70a7, (q15_t)0x2994, (q15_t)0x70af, (q15_t)0x298b,\n    (q15_t)0x70b8, (q15_t)0x2981, (q15_t)0x70c0, (q15_t)0x2978, (q15_t)0x70c8, (q15_t)0x296e, (q15_t)0x70d0, (q15_t)0x2965,\n    (q15_t)0x70d8, (q15_t)0x295b, (q15_t)0x70e0, (q15_t)0x2951, (q15_t)0x70e8, (q15_t)0x2948, (q15_t)0x70f0, (q15_t)0x293e,\n    (q15_t)0x70f9, (q15_t)0x2935, (q15_t)0x7101, (q15_t)0x292b, (q15_t)0x7109, (q15_t)0x2921, (q15_t)0x7111, (q15_t)0x2918,\n    (q15_t)0x7119, (q15_t)0x290e, (q15_t)0x7121, (q15_t)0x2904, (q15_t)0x7129, (q15_t)0x28fb, (q15_t)0x7131, (q15_t)0x28f1,\n    (q15_t)0x7139, (q15_t)0x28e7, (q15_t)0x7141, (q15_t)0x28de, (q15_t)0x7149, (q15_t)0x28d4, (q15_t)0x7151, (q15_t)0x28ca,\n    (q15_t)0x7159, (q15_t)0x28c1, (q15_t)0x7161, (q15_t)0x28b7, (q15_t)0x7169, (q15_t)0x28ad, (q15_t)0x7171, (q15_t)0x28a4,\n    (q15_t)0x7179, (q15_t)0x289a, (q15_t)0x7181, (q15_t)0x2890, (q15_t)0x7189, (q15_t)0x2886, (q15_t)0x7191, (q15_t)0x287d,\n    (q15_t)0x7199, (q15_t)0x2873, (q15_t)0x71a1, (q15_t)0x2869, (q15_t)0x71a9, (q15_t)0x2860, (q15_t)0x71b1, (q15_t)0x2856,\n    (q15_t)0x71b9, (q15_t)0x284c, (q15_t)0x71c0, (q15_t)0x2842, (q15_t)0x71c8, (q15_t)0x2838, (q15_t)0x71d0, (q15_t)0x282f,\n    (q15_t)0x71d8, (q15_t)0x2825, (q15_t)0x71e0, (q15_t)0x281b, (q15_t)0x71e8, (q15_t)0x2811, (q15_t)0x71f0, (q15_t)0x2808,\n    (q15_t)0x71f8, (q15_t)0x27fe, (q15_t)0x71ff, (q15_t)0x27f4, (q15_t)0x7207, (q15_t)0x27ea, (q15_t)0x720f, (q15_t)0x27e0,\n    (q15_t)0x7217, (q15_t)0x27d6, (q15_t)0x721f, (q15_t)0x27cd, (q15_t)0x7227, (q15_t)0x27c3, (q15_t)0x722e, (q15_t)0x27b9,\n    (q15_t)0x7236, (q15_t)0x27af, (q15_t)0x723e, (q15_t)0x27a5, (q15_t)0x7246, (q15_t)0x279b, (q15_t)0x724e, (q15_t)0x2791,\n    (q15_t)0x7255, (q15_t)0x2788, (q15_t)0x725d, (q15_t)0x277e, (q15_t)0x7265, (q15_t)0x2774, (q15_t)0x726d, (q15_t)0x276a,\n    (q15_t)0x7274, (q15_t)0x2760, (q15_t)0x727c, (q15_t)0x2756, (q15_t)0x7284, (q15_t)0x274c, (q15_t)0x728b, (q15_t)0x2742,\n    (q15_t)0x7293, (q15_t)0x2738, (q15_t)0x729b, (q15_t)0x272e, (q15_t)0x72a3, (q15_t)0x2724, (q15_t)0x72aa, (q15_t)0x271a,\n    (q15_t)0x72b2, (q15_t)0x2711, (q15_t)0x72ba, (q15_t)0x2707, (q15_t)0x72c1, (q15_t)0x26fd, (q15_t)0x72c9, (q15_t)0x26f3,\n    (q15_t)0x72d0, (q15_t)0x26e9, (q15_t)0x72d8, (q15_t)0x26df, (q15_t)0x72e0, (q15_t)0x26d5, (q15_t)0x72e7, (q15_t)0x26cb,\n    (q15_t)0x72ef, (q15_t)0x26c1, (q15_t)0x72f7, (q15_t)0x26b7, (q15_t)0x72fe, (q15_t)0x26ad, (q15_t)0x7306, (q15_t)0x26a3,\n    (q15_t)0x730d, (q15_t)0x2699, (q15_t)0x7315, (q15_t)0x268f, (q15_t)0x731d, (q15_t)0x2685, (q15_t)0x7324, (q15_t)0x267b,\n    (q15_t)0x732c, (q15_t)0x2671, (q15_t)0x7333, (q15_t)0x2666, (q15_t)0x733b, (q15_t)0x265c, (q15_t)0x7342, (q15_t)0x2652,\n    (q15_t)0x734a, (q15_t)0x2648, (q15_t)0x7351, (q15_t)0x263e, (q15_t)0x7359, (q15_t)0x2634, (q15_t)0x7360, (q15_t)0x262a,\n    (q15_t)0x7368, (q15_t)0x2620, (q15_t)0x736f, (q15_t)0x2616, (q15_t)0x7377, (q15_t)0x260c, (q15_t)0x737e, (q15_t)0x2602,\n    (q15_t)0x7386, (q15_t)0x25f8, (q15_t)0x738d, (q15_t)0x25ed, (q15_t)0x7395, (q15_t)0x25e3, (q15_t)0x739c, (q15_t)0x25d9,\n    (q15_t)0x73a3, (q15_t)0x25cf, (q15_t)0x73ab, (q15_t)0x25c5, (q15_t)0x73b2, (q15_t)0x25bb, (q15_t)0x73ba, (q15_t)0x25b1,\n    (q15_t)0x73c1, (q15_t)0x25a6, (q15_t)0x73c8, (q15_t)0x259c, (q15_t)0x73d0, (q15_t)0x2592, (q15_t)0x73d7, (q15_t)0x2588,\n    (q15_t)0x73df, (q15_t)0x257e, (q15_t)0x73e6, (q15_t)0x2574, (q15_t)0x73ed, (q15_t)0x2569, (q15_t)0x73f5, (q15_t)0x255f,\n    (q15_t)0x73fc, (q15_t)0x2555, (q15_t)0x7403, (q15_t)0x254b, (q15_t)0x740b, (q15_t)0x2541, (q15_t)0x7412, (q15_t)0x2536,\n    (q15_t)0x7419, (q15_t)0x252c, (q15_t)0x7420, (q15_t)0x2522, (q15_t)0x7428, (q15_t)0x2518, (q15_t)0x742f, (q15_t)0x250d,\n    (q15_t)0x7436, (q15_t)0x2503, (q15_t)0x743e, (q15_t)0x24f9, (q15_t)0x7445, (q15_t)0x24ef, (q15_t)0x744c, (q15_t)0x24e4,\n    (q15_t)0x7453, (q15_t)0x24da, (q15_t)0x745b, (q15_t)0x24d0, (q15_t)0x7462, (q15_t)0x24c5, (q15_t)0x7469, (q15_t)0x24bb,\n    (q15_t)0x7470, (q15_t)0x24b1, (q15_t)0x7477, (q15_t)0x24a7, (q15_t)0x747f, (q15_t)0x249c, (q15_t)0x7486, (q15_t)0x2492,\n    (q15_t)0x748d, (q15_t)0x2488, (q15_t)0x7494, (q15_t)0x247d, (q15_t)0x749b, (q15_t)0x2473, (q15_t)0x74a2, (q15_t)0x2469,\n    (q15_t)0x74aa, (q15_t)0x245e, (q15_t)0x74b1, (q15_t)0x2454, (q15_t)0x74b8, (q15_t)0x244a, (q15_t)0x74bf, (q15_t)0x243f,\n    (q15_t)0x74c6, (q15_t)0x2435, (q15_t)0x74cd, (q15_t)0x242b, (q15_t)0x74d4, (q15_t)0x2420, (q15_t)0x74db, (q15_t)0x2416,\n    (q15_t)0x74e2, (q15_t)0x240b, (q15_t)0x74ea, (q15_t)0x2401, (q15_t)0x74f1, (q15_t)0x23f7, (q15_t)0x74f8, (q15_t)0x23ec,\n    (q15_t)0x74ff, (q15_t)0x23e2, (q15_t)0x7506, (q15_t)0x23d7, (q15_t)0x750d, (q15_t)0x23cd, (q15_t)0x7514, (q15_t)0x23c3,\n    (q15_t)0x751b, (q15_t)0x23b8, (q15_t)0x7522, (q15_t)0x23ae, (q15_t)0x7529, (q15_t)0x23a3, (q15_t)0x7530, (q15_t)0x2399,\n    (q15_t)0x7537, (q15_t)0x238e, (q15_t)0x753e, (q15_t)0x2384, (q15_t)0x7545, (q15_t)0x237a, (q15_t)0x754c, (q15_t)0x236f,\n    (q15_t)0x7553, (q15_t)0x2365, (q15_t)0x755a, (q15_t)0x235a, (q15_t)0x7561, (q15_t)0x2350, (q15_t)0x7567, (q15_t)0x2345,\n    (q15_t)0x756e, (q15_t)0x233b, (q15_t)0x7575, (q15_t)0x2330, (q15_t)0x757c, (q15_t)0x2326, (q15_t)0x7583, (q15_t)0x231b,\n    (q15_t)0x758a, (q15_t)0x2311, (q15_t)0x7591, (q15_t)0x2306, (q15_t)0x7598, (q15_t)0x22fc, (q15_t)0x759f, (q15_t)0x22f1,\n    (q15_t)0x75a5, (q15_t)0x22e7, (q15_t)0x75ac, (q15_t)0x22dc, (q15_t)0x75b3, (q15_t)0x22d2, (q15_t)0x75ba, (q15_t)0x22c7,\n    (q15_t)0x75c1, (q15_t)0x22bc, (q15_t)0x75c8, (q15_t)0x22b2, (q15_t)0x75ce, (q15_t)0x22a7, (q15_t)0x75d5, (q15_t)0x229d,\n    (q15_t)0x75dc, (q15_t)0x2292, (q15_t)0x75e3, (q15_t)0x2288, (q15_t)0x75ea, (q15_t)0x227d, (q15_t)0x75f0, (q15_t)0x2272,\n    (q15_t)0x75f7, (q15_t)0x2268, (q15_t)0x75fe, (q15_t)0x225d, (q15_t)0x7605, (q15_t)0x2253, (q15_t)0x760b, (q15_t)0x2248,\n    (q15_t)0x7612, (q15_t)0x223d, (q15_t)0x7619, (q15_t)0x2233, (q15_t)0x7620, (q15_t)0x2228, (q15_t)0x7626, (q15_t)0x221e,\n    (q15_t)0x762d, (q15_t)0x2213, (q15_t)0x7634, (q15_t)0x2208, (q15_t)0x763a, (q15_t)0x21fe, (q15_t)0x7641, (q15_t)0x21f3,\n    (q15_t)0x7648, (q15_t)0x21e8, (q15_t)0x764e, (q15_t)0x21de, (q15_t)0x7655, (q15_t)0x21d3, (q15_t)0x765c, (q15_t)0x21c8,\n    (q15_t)0x7662, (q15_t)0x21be, (q15_t)0x7669, (q15_t)0x21b3, (q15_t)0x766f, (q15_t)0x21a8, (q15_t)0x7676, (q15_t)0x219e,\n    (q15_t)0x767d, (q15_t)0x2193, (q15_t)0x7683, (q15_t)0x2188, (q15_t)0x768a, (q15_t)0x217d, (q15_t)0x7690, (q15_t)0x2173,\n    (q15_t)0x7697, (q15_t)0x2168, (q15_t)0x769d, (q15_t)0x215d, (q15_t)0x76a4, (q15_t)0x2153, (q15_t)0x76ab, (q15_t)0x2148,\n    (q15_t)0x76b1, (q15_t)0x213d, (q15_t)0x76b8, (q15_t)0x2132, (q15_t)0x76be, (q15_t)0x2128, (q15_t)0x76c5, (q15_t)0x211d,\n    (q15_t)0x76cb, (q15_t)0x2112, (q15_t)0x76d2, (q15_t)0x2107, (q15_t)0x76d8, (q15_t)0x20fd, (q15_t)0x76df, (q15_t)0x20f2,\n    (q15_t)0x76e5, (q15_t)0x20e7, (q15_t)0x76eb, (q15_t)0x20dc, (q15_t)0x76f2, (q15_t)0x20d1, (q15_t)0x76f8, (q15_t)0x20c7,\n    (q15_t)0x76ff, (q15_t)0x20bc, (q15_t)0x7705, (q15_t)0x20b1, (q15_t)0x770c, (q15_t)0x20a6, (q15_t)0x7712, (q15_t)0x209b,\n    (q15_t)0x7718, (q15_t)0x2091, (q15_t)0x771f, (q15_t)0x2086, (q15_t)0x7725, (q15_t)0x207b, (q15_t)0x772c, (q15_t)0x2070,\n    (q15_t)0x7732, (q15_t)0x2065, (q15_t)0x7738, (q15_t)0x205b, (q15_t)0x773f, (q15_t)0x2050, (q15_t)0x7745, (q15_t)0x2045,\n    (q15_t)0x774b, (q15_t)0x203a, (q15_t)0x7752, (q15_t)0x202f, (q15_t)0x7758, (q15_t)0x2024, (q15_t)0x775e, (q15_t)0x2019,\n    (q15_t)0x7765, (q15_t)0x200f, (q15_t)0x776b, (q15_t)0x2004, (q15_t)0x7771, (q15_t)0x1ff9, (q15_t)0x7777, (q15_t)0x1fee,\n    (q15_t)0x777e, (q15_t)0x1fe3, (q15_t)0x7784, (q15_t)0x1fd8, (q15_t)0x778a, (q15_t)0x1fcd, (q15_t)0x7790, (q15_t)0x1fc2,\n    (q15_t)0x7797, (q15_t)0x1fb7, (q15_t)0x779d, (q15_t)0x1fac, (q15_t)0x77a3, (q15_t)0x1fa2, (q15_t)0x77a9, (q15_t)0x1f97,\n    (q15_t)0x77b0, (q15_t)0x1f8c, (q15_t)0x77b6, (q15_t)0x1f81, (q15_t)0x77bc, (q15_t)0x1f76, (q15_t)0x77c2, (q15_t)0x1f6b,\n    (q15_t)0x77c8, (q15_t)0x1f60, (q15_t)0x77ce, (q15_t)0x1f55, (q15_t)0x77d5, (q15_t)0x1f4a, (q15_t)0x77db, (q15_t)0x1f3f,\n    (q15_t)0x77e1, (q15_t)0x1f34, (q15_t)0x77e7, (q15_t)0x1f29, (q15_t)0x77ed, (q15_t)0x1f1e, (q15_t)0x77f3, (q15_t)0x1f13,\n    (q15_t)0x77f9, (q15_t)0x1f08, (q15_t)0x77ff, (q15_t)0x1efd, (q15_t)0x7805, (q15_t)0x1ef2, (q15_t)0x780b, (q15_t)0x1ee7,\n    (q15_t)0x7812, (q15_t)0x1edc, (q15_t)0x7818, (q15_t)0x1ed1, (q15_t)0x781e, (q15_t)0x1ec6, (q15_t)0x7824, (q15_t)0x1ebb,\n    (q15_t)0x782a, (q15_t)0x1eb0, (q15_t)0x7830, (q15_t)0x1ea5, (q15_t)0x7836, (q15_t)0x1e9a, (q15_t)0x783c, (q15_t)0x1e8f,\n    (q15_t)0x7842, (q15_t)0x1e84, (q15_t)0x7848, (q15_t)0x1e79, (q15_t)0x784e, (q15_t)0x1e6e, (q15_t)0x7854, (q15_t)0x1e63,\n    (q15_t)0x785a, (q15_t)0x1e58, (q15_t)0x7860, (q15_t)0x1e4d, (q15_t)0x7866, (q15_t)0x1e42, (q15_t)0x786b, (q15_t)0x1e36,\n    (q15_t)0x7871, (q15_t)0x1e2b, (q15_t)0x7877, (q15_t)0x1e20, (q15_t)0x787d, (q15_t)0x1e15, (q15_t)0x7883, (q15_t)0x1e0a,\n    (q15_t)0x7889, (q15_t)0x1dff, (q15_t)0x788f, (q15_t)0x1df4, (q15_t)0x7895, (q15_t)0x1de9, (q15_t)0x789b, (q15_t)0x1dde,\n    (q15_t)0x78a1, (q15_t)0x1dd3, (q15_t)0x78a6, (q15_t)0x1dc7, (q15_t)0x78ac, (q15_t)0x1dbc, (q15_t)0x78b2, (q15_t)0x1db1,\n    (q15_t)0x78b8, (q15_t)0x1da6, (q15_t)0x78be, (q15_t)0x1d9b, (q15_t)0x78c3, (q15_t)0x1d90, (q15_t)0x78c9, (q15_t)0x1d85,\n    (q15_t)0x78cf, (q15_t)0x1d79, (q15_t)0x78d5, (q15_t)0x1d6e, (q15_t)0x78db, (q15_t)0x1d63, (q15_t)0x78e0, (q15_t)0x1d58,\n    (q15_t)0x78e6, (q15_t)0x1d4d, (q15_t)0x78ec, (q15_t)0x1d42, (q15_t)0x78f2, (q15_t)0x1d36, (q15_t)0x78f7, (q15_t)0x1d2b,\n    (q15_t)0x78fd, (q15_t)0x1d20, (q15_t)0x7903, (q15_t)0x1d15, (q15_t)0x7909, (q15_t)0x1d0a, (q15_t)0x790e, (q15_t)0x1cff,\n    (q15_t)0x7914, (q15_t)0x1cf3, (q15_t)0x791a, (q15_t)0x1ce8, (q15_t)0x791f, (q15_t)0x1cdd, (q15_t)0x7925, (q15_t)0x1cd2,\n    (q15_t)0x792b, (q15_t)0x1cc6, (q15_t)0x7930, (q15_t)0x1cbb, (q15_t)0x7936, (q15_t)0x1cb0, (q15_t)0x793b, (q15_t)0x1ca5,\n    (q15_t)0x7941, (q15_t)0x1c99, (q15_t)0x7947, (q15_t)0x1c8e, (q15_t)0x794c, (q15_t)0x1c83, (q15_t)0x7952, (q15_t)0x1c78,\n    (q15_t)0x7958, (q15_t)0x1c6c, (q15_t)0x795d, (q15_t)0x1c61, (q15_t)0x7963, (q15_t)0x1c56, (q15_t)0x7968, (q15_t)0x1c4b,\n    (q15_t)0x796e, (q15_t)0x1c3f, (q15_t)0x7973, (q15_t)0x1c34, (q15_t)0x7979, (q15_t)0x1c29, (q15_t)0x797e, (q15_t)0x1c1e,\n    (q15_t)0x7984, (q15_t)0x1c12, (q15_t)0x7989, (q15_t)0x1c07, (q15_t)0x798f, (q15_t)0x1bfc, (q15_t)0x7994, (q15_t)0x1bf0,\n    (q15_t)0x799a, (q15_t)0x1be5, (q15_t)0x799f, (q15_t)0x1bda, (q15_t)0x79a5, (q15_t)0x1bce, (q15_t)0x79aa, (q15_t)0x1bc3,\n    (q15_t)0x79b0, (q15_t)0x1bb8, (q15_t)0x79b5, (q15_t)0x1bac, (q15_t)0x79bb, (q15_t)0x1ba1, (q15_t)0x79c0, (q15_t)0x1b96,\n    (q15_t)0x79c5, (q15_t)0x1b8a, (q15_t)0x79cb, (q15_t)0x1b7f, (q15_t)0x79d0, (q15_t)0x1b74, (q15_t)0x79d6, (q15_t)0x1b68,\n    (q15_t)0x79db, (q15_t)0x1b5d, (q15_t)0x79e0, (q15_t)0x1b52, (q15_t)0x79e6, (q15_t)0x1b46, (q15_t)0x79eb, (q15_t)0x1b3b,\n    (q15_t)0x79f0, (q15_t)0x1b30, (q15_t)0x79f6, (q15_t)0x1b24, (q15_t)0x79fb, (q15_t)0x1b19, (q15_t)0x7a00, (q15_t)0x1b0d,\n    (q15_t)0x7a06, (q15_t)0x1b02, (q15_t)0x7a0b, (q15_t)0x1af7, (q15_t)0x7a10, (q15_t)0x1aeb, (q15_t)0x7a16, (q15_t)0x1ae0,\n    (q15_t)0x7a1b, (q15_t)0x1ad4, (q15_t)0x7a20, (q15_t)0x1ac9, (q15_t)0x7a25, (q15_t)0x1abe, (q15_t)0x7a2b, (q15_t)0x1ab2,\n    (q15_t)0x7a30, (q15_t)0x1aa7, (q15_t)0x7a35, (q15_t)0x1a9b, (q15_t)0x7a3a, (q15_t)0x1a90, (q15_t)0x7a3f, (q15_t)0x1a84,\n    (q15_t)0x7a45, (q15_t)0x1a79, (q15_t)0x7a4a, (q15_t)0x1a6e, (q15_t)0x7a4f, (q15_t)0x1a62, (q15_t)0x7a54, (q15_t)0x1a57,\n    (q15_t)0x7a59, (q15_t)0x1a4b, (q15_t)0x7a5f, (q15_t)0x1a40, (q15_t)0x7a64, (q15_t)0x1a34, (q15_t)0x7a69, (q15_t)0x1a29,\n    (q15_t)0x7a6e, (q15_t)0x1a1d, (q15_t)0x7a73, (q15_t)0x1a12, (q15_t)0x7a78, (q15_t)0x1a06, (q15_t)0x7a7d, (q15_t)0x19fb,\n    (q15_t)0x7a82, (q15_t)0x19ef, (q15_t)0x7a88, (q15_t)0x19e4, (q15_t)0x7a8d, (q15_t)0x19d8, (q15_t)0x7a92, (q15_t)0x19cd,\n    (q15_t)0x7a97, (q15_t)0x19c1, (q15_t)0x7a9c, (q15_t)0x19b6, (q15_t)0x7aa1, (q15_t)0x19aa, (q15_t)0x7aa6, (q15_t)0x199f,\n    (q15_t)0x7aab, (q15_t)0x1993, (q15_t)0x7ab0, (q15_t)0x1988, (q15_t)0x7ab5, (q15_t)0x197c, (q15_t)0x7aba, (q15_t)0x1971,\n    (q15_t)0x7abf, (q15_t)0x1965, (q15_t)0x7ac4, (q15_t)0x195a, (q15_t)0x7ac9, (q15_t)0x194e, (q15_t)0x7ace, (q15_t)0x1943,\n    (q15_t)0x7ad3, (q15_t)0x1937, (q15_t)0x7ad8, (q15_t)0x192c, (q15_t)0x7add, (q15_t)0x1920, (q15_t)0x7ae2, (q15_t)0x1914,\n    (q15_t)0x7ae6, (q15_t)0x1909, (q15_t)0x7aeb, (q15_t)0x18fd, (q15_t)0x7af0, (q15_t)0x18f2, (q15_t)0x7af5, (q15_t)0x18e6,\n    (q15_t)0x7afa, (q15_t)0x18db, (q15_t)0x7aff, (q15_t)0x18cf, (q15_t)0x7b04, (q15_t)0x18c3, (q15_t)0x7b09, (q15_t)0x18b8,\n    (q15_t)0x7b0e, (q15_t)0x18ac, (q15_t)0x7b12, (q15_t)0x18a1, (q15_t)0x7b17, (q15_t)0x1895, (q15_t)0x7b1c, (q15_t)0x1889,\n    (q15_t)0x7b21, (q15_t)0x187e, (q15_t)0x7b26, (q15_t)0x1872, (q15_t)0x7b2a, (q15_t)0x1867, (q15_t)0x7b2f, (q15_t)0x185b,\n    (q15_t)0x7b34, (q15_t)0x184f, (q15_t)0x7b39, (q15_t)0x1844, (q15_t)0x7b3e, (q15_t)0x1838, (q15_t)0x7b42, (q15_t)0x182d,\n    (q15_t)0x7b47, (q15_t)0x1821, (q15_t)0x7b4c, (q15_t)0x1815, (q15_t)0x7b50, (q15_t)0x180a, (q15_t)0x7b55, (q15_t)0x17fe,\n    (q15_t)0x7b5a, (q15_t)0x17f2, (q15_t)0x7b5f, (q15_t)0x17e7, (q15_t)0x7b63, (q15_t)0x17db, (q15_t)0x7b68, (q15_t)0x17cf,\n    (q15_t)0x7b6d, (q15_t)0x17c4, (q15_t)0x7b71, (q15_t)0x17b8, (q15_t)0x7b76, (q15_t)0x17ac, (q15_t)0x7b7b, (q15_t)0x17a1,\n    (q15_t)0x7b7f, (q15_t)0x1795, (q15_t)0x7b84, (q15_t)0x1789, (q15_t)0x7b88, (q15_t)0x177e, (q15_t)0x7b8d, (q15_t)0x1772,\n    (q15_t)0x7b92, (q15_t)0x1766, (q15_t)0x7b96, (q15_t)0x175b, (q15_t)0x7b9b, (q15_t)0x174f, (q15_t)0x7b9f, (q15_t)0x1743,\n    (q15_t)0x7ba4, (q15_t)0x1737, (q15_t)0x7ba9, (q15_t)0x172c, (q15_t)0x7bad, (q15_t)0x1720, (q15_t)0x7bb2, (q15_t)0x1714,\n    (q15_t)0x7bb6, (q15_t)0x1709, (q15_t)0x7bbb, (q15_t)0x16fd, (q15_t)0x7bbf, (q15_t)0x16f1, (q15_t)0x7bc4, (q15_t)0x16e5,\n    (q15_t)0x7bc8, (q15_t)0x16da, (q15_t)0x7bcd, (q15_t)0x16ce, (q15_t)0x7bd1, (q15_t)0x16c2, (q15_t)0x7bd6, (q15_t)0x16b6,\n    (q15_t)0x7bda, (q15_t)0x16ab, (q15_t)0x7bde, (q15_t)0x169f, (q15_t)0x7be3, (q15_t)0x1693, (q15_t)0x7be7, (q15_t)0x1687,\n    (q15_t)0x7bec, (q15_t)0x167c, (q15_t)0x7bf0, (q15_t)0x1670, (q15_t)0x7bf5, (q15_t)0x1664, (q15_t)0x7bf9, (q15_t)0x1658,\n    (q15_t)0x7bfd, (q15_t)0x164c, (q15_t)0x7c02, (q15_t)0x1641, (q15_t)0x7c06, (q15_t)0x1635, (q15_t)0x7c0a, (q15_t)0x1629,\n    (q15_t)0x7c0f, (q15_t)0x161d, (q15_t)0x7c13, (q15_t)0x1612, (q15_t)0x7c17, (q15_t)0x1606, (q15_t)0x7c1c, (q15_t)0x15fa,\n    (q15_t)0x7c20, (q15_t)0x15ee, (q15_t)0x7c24, (q15_t)0x15e2, (q15_t)0x7c29, (q15_t)0x15d7, (q15_t)0x7c2d, (q15_t)0x15cb,\n    (q15_t)0x7c31, (q15_t)0x15bf, (q15_t)0x7c36, (q15_t)0x15b3, (q15_t)0x7c3a, (q15_t)0x15a7, (q15_t)0x7c3e, (q15_t)0x159b,\n    (q15_t)0x7c42, (q15_t)0x1590, (q15_t)0x7c46, (q15_t)0x1584, (q15_t)0x7c4b, (q15_t)0x1578, (q15_t)0x7c4f, (q15_t)0x156c,\n    (q15_t)0x7c53, (q15_t)0x1560, (q15_t)0x7c57, (q15_t)0x1554, (q15_t)0x7c5b, (q15_t)0x1549, (q15_t)0x7c60, (q15_t)0x153d,\n    (q15_t)0x7c64, (q15_t)0x1531, (q15_t)0x7c68, (q15_t)0x1525, (q15_t)0x7c6c, (q15_t)0x1519, (q15_t)0x7c70, (q15_t)0x150d,\n    (q15_t)0x7c74, (q15_t)0x1501, (q15_t)0x7c79, (q15_t)0x14f6, (q15_t)0x7c7d, (q15_t)0x14ea, (q15_t)0x7c81, (q15_t)0x14de,\n    (q15_t)0x7c85, (q15_t)0x14d2, (q15_t)0x7c89, (q15_t)0x14c6, (q15_t)0x7c8d, (q15_t)0x14ba, (q15_t)0x7c91, (q15_t)0x14ae,\n    (q15_t)0x7c95, (q15_t)0x14a2, (q15_t)0x7c99, (q15_t)0x1496, (q15_t)0x7c9d, (q15_t)0x148b, (q15_t)0x7ca1, (q15_t)0x147f,\n    (q15_t)0x7ca5, (q15_t)0x1473, (q15_t)0x7ca9, (q15_t)0x1467, (q15_t)0x7cad, (q15_t)0x145b, (q15_t)0x7cb1, (q15_t)0x144f,\n    (q15_t)0x7cb5, (q15_t)0x1443, (q15_t)0x7cb9, (q15_t)0x1437, (q15_t)0x7cbd, (q15_t)0x142b, (q15_t)0x7cc1, (q15_t)0x141f,\n    (q15_t)0x7cc5, (q15_t)0x1413, (q15_t)0x7cc9, (q15_t)0x1407, (q15_t)0x7ccd, (q15_t)0x13fb, (q15_t)0x7cd1, (q15_t)0x13f0,\n    (q15_t)0x7cd5, (q15_t)0x13e4, (q15_t)0x7cd9, (q15_t)0x13d8, (q15_t)0x7cdd, (q15_t)0x13cc, (q15_t)0x7ce0, (q15_t)0x13c0,\n    (q15_t)0x7ce4, (q15_t)0x13b4, (q15_t)0x7ce8, (q15_t)0x13a8, (q15_t)0x7cec, (q15_t)0x139c, (q15_t)0x7cf0, (q15_t)0x1390,\n    (q15_t)0x7cf4, (q15_t)0x1384, (q15_t)0x7cf8, (q15_t)0x1378, (q15_t)0x7cfb, (q15_t)0x136c, (q15_t)0x7cff, (q15_t)0x1360,\n    (q15_t)0x7d03, (q15_t)0x1354, (q15_t)0x7d07, (q15_t)0x1348, (q15_t)0x7d0b, (q15_t)0x133c, (q15_t)0x7d0e, (q15_t)0x1330,\n    (q15_t)0x7d12, (q15_t)0x1324, (q15_t)0x7d16, (q15_t)0x1318, (q15_t)0x7d1a, (q15_t)0x130c, (q15_t)0x7d1d, (q15_t)0x1300,\n    (q15_t)0x7d21, (q15_t)0x12f4, (q15_t)0x7d25, (q15_t)0x12e8, (q15_t)0x7d28, (q15_t)0x12dc, (q15_t)0x7d2c, (q15_t)0x12d0,\n    (q15_t)0x7d30, (q15_t)0x12c4, (q15_t)0x7d34, (q15_t)0x12b8, (q15_t)0x7d37, (q15_t)0x12ac, (q15_t)0x7d3b, (q15_t)0x12a0,\n    (q15_t)0x7d3f, (q15_t)0x1294, (q15_t)0x7d42, (q15_t)0x1288, (q15_t)0x7d46, (q15_t)0x127c, (q15_t)0x7d49, (q15_t)0x1270,\n    (q15_t)0x7d4d, (q15_t)0x1264, (q15_t)0x7d51, (q15_t)0x1258, (q15_t)0x7d54, (q15_t)0x124c, (q15_t)0x7d58, (q15_t)0x1240,\n    (q15_t)0x7d5b, (q15_t)0x1234, (q15_t)0x7d5f, (q15_t)0x1228, (q15_t)0x7d63, (q15_t)0x121c, (q15_t)0x7d66, (q15_t)0x1210,\n    (q15_t)0x7d6a, (q15_t)0x1204, (q15_t)0x7d6d, (q15_t)0x11f7, (q15_t)0x7d71, (q15_t)0x11eb, (q15_t)0x7d74, (q15_t)0x11df,\n    (q15_t)0x7d78, (q15_t)0x11d3, (q15_t)0x7d7b, (q15_t)0x11c7, (q15_t)0x7d7f, (q15_t)0x11bb, (q15_t)0x7d82, (q15_t)0x11af,\n    (q15_t)0x7d86, (q15_t)0x11a3, (q15_t)0x7d89, (q15_t)0x1197, (q15_t)0x7d8d, (q15_t)0x118b, (q15_t)0x7d90, (q15_t)0x117f,\n    (q15_t)0x7d93, (q15_t)0x1173, (q15_t)0x7d97, (q15_t)0x1167, (q15_t)0x7d9a, (q15_t)0x115a, (q15_t)0x7d9e, (q15_t)0x114e,\n    (q15_t)0x7da1, (q15_t)0x1142, (q15_t)0x7da4, (q15_t)0x1136, (q15_t)0x7da8, (q15_t)0x112a, (q15_t)0x7dab, (q15_t)0x111e,\n    (q15_t)0x7daf, (q15_t)0x1112, (q15_t)0x7db2, (q15_t)0x1106, (q15_t)0x7db5, (q15_t)0x10fa, (q15_t)0x7db9, (q15_t)0x10ed,\n    (q15_t)0x7dbc, (q15_t)0x10e1, (q15_t)0x7dbf, (q15_t)0x10d5, (q15_t)0x7dc2, (q15_t)0x10c9, (q15_t)0x7dc6, (q15_t)0x10bd,\n    (q15_t)0x7dc9, (q15_t)0x10b1, (q15_t)0x7dcc, (q15_t)0x10a5, (q15_t)0x7dd0, (q15_t)0x1099, (q15_t)0x7dd3, (q15_t)0x108c,\n    (q15_t)0x7dd6, (q15_t)0x1080, (q15_t)0x7dd9, (q15_t)0x1074, (q15_t)0x7ddd, (q15_t)0x1068, (q15_t)0x7de0, (q15_t)0x105c,\n    (q15_t)0x7de3, (q15_t)0x1050, (q15_t)0x7de6, (q15_t)0x1044, (q15_t)0x7de9, (q15_t)0x1037, (q15_t)0x7ded, (q15_t)0x102b,\n    (q15_t)0x7df0, (q15_t)0x101f, (q15_t)0x7df3, (q15_t)0x1013, (q15_t)0x7df6, (q15_t)0x1007, (q15_t)0x7df9, (q15_t)0xffb,\n    (q15_t)0x7dfc, (q15_t)0xfee, (q15_t)0x7dff, (q15_t)0xfe2, (q15_t)0x7e03, (q15_t)0xfd6, (q15_t)0x7e06, (q15_t)0xfca,\n    (q15_t)0x7e09, (q15_t)0xfbe, (q15_t)0x7e0c, (q15_t)0xfb2, (q15_t)0x7e0f, (q15_t)0xfa5, (q15_t)0x7e12, (q15_t)0xf99,\n    (q15_t)0x7e15, (q15_t)0xf8d, (q15_t)0x7e18, (q15_t)0xf81, (q15_t)0x7e1b, (q15_t)0xf75, (q15_t)0x7e1e, (q15_t)0xf68,\n    (q15_t)0x7e21, (q15_t)0xf5c, (q15_t)0x7e24, (q15_t)0xf50, (q15_t)0x7e27, (q15_t)0xf44, (q15_t)0x7e2a, (q15_t)0xf38,\n    (q15_t)0x7e2d, (q15_t)0xf2b, (q15_t)0x7e30, (q15_t)0xf1f, (q15_t)0x7e33, (q15_t)0xf13, (q15_t)0x7e36, (q15_t)0xf07,\n    (q15_t)0x7e39, (q15_t)0xefb, (q15_t)0x7e3c, (q15_t)0xeee, (q15_t)0x7e3f, (q15_t)0xee2, (q15_t)0x7e42, (q15_t)0xed6,\n    (q15_t)0x7e45, (q15_t)0xeca, (q15_t)0x7e48, (q15_t)0xebd, (q15_t)0x7e4a, (q15_t)0xeb1, (q15_t)0x7e4d, (q15_t)0xea5,\n    (q15_t)0x7e50, (q15_t)0xe99, (q15_t)0x7e53, (q15_t)0xe8c, (q15_t)0x7e56, (q15_t)0xe80, (q15_t)0x7e59, (q15_t)0xe74,\n    (q15_t)0x7e5c, (q15_t)0xe68, (q15_t)0x7e5e, (q15_t)0xe5c, (q15_t)0x7e61, (q15_t)0xe4f, (q15_t)0x7e64, (q15_t)0xe43,\n    (q15_t)0x7e67, (q15_t)0xe37, (q15_t)0x7e6a, (q15_t)0xe2b, (q15_t)0x7e6c, (q15_t)0xe1e, (q15_t)0x7e6f, (q15_t)0xe12,\n    (q15_t)0x7e72, (q15_t)0xe06, (q15_t)0x7e75, (q15_t)0xdf9, (q15_t)0x7e77, (q15_t)0xded, (q15_t)0x7e7a, (q15_t)0xde1,\n    (q15_t)0x7e7d, (q15_t)0xdd5, (q15_t)0x7e80, (q15_t)0xdc8, (q15_t)0x7e82, (q15_t)0xdbc, (q15_t)0x7e85, (q15_t)0xdb0,\n    (q15_t)0x7e88, (q15_t)0xda4, (q15_t)0x7e8a, (q15_t)0xd97, (q15_t)0x7e8d, (q15_t)0xd8b, (q15_t)0x7e90, (q15_t)0xd7f,\n    (q15_t)0x7e92, (q15_t)0xd72, (q15_t)0x7e95, (q15_t)0xd66, (q15_t)0x7e98, (q15_t)0xd5a, (q15_t)0x7e9a, (q15_t)0xd4e,\n    (q15_t)0x7e9d, (q15_t)0xd41, (q15_t)0x7e9f, (q15_t)0xd35, (q15_t)0x7ea2, (q15_t)0xd29, (q15_t)0x7ea5, (q15_t)0xd1c,\n    (q15_t)0x7ea7, (q15_t)0xd10, (q15_t)0x7eaa, (q15_t)0xd04, (q15_t)0x7eac, (q15_t)0xcf8, (q15_t)0x7eaf, (q15_t)0xceb,\n    (q15_t)0x7eb1, (q15_t)0xcdf, (q15_t)0x7eb4, (q15_t)0xcd3, (q15_t)0x7eb6, (q15_t)0xcc6, (q15_t)0x7eb9, (q15_t)0xcba,\n    (q15_t)0x7ebb, (q15_t)0xcae, (q15_t)0x7ebe, (q15_t)0xca1, (q15_t)0x7ec0, (q15_t)0xc95, (q15_t)0x7ec3, (q15_t)0xc89,\n    (q15_t)0x7ec5, (q15_t)0xc7c, (q15_t)0x7ec8, (q15_t)0xc70, (q15_t)0x7eca, (q15_t)0xc64, (q15_t)0x7ecc, (q15_t)0xc57,\n    (q15_t)0x7ecf, (q15_t)0xc4b, (q15_t)0x7ed1, (q15_t)0xc3f, (q15_t)0x7ed4, (q15_t)0xc32, (q15_t)0x7ed6, (q15_t)0xc26,\n    (q15_t)0x7ed8, (q15_t)0xc1a, (q15_t)0x7edb, (q15_t)0xc0d, (q15_t)0x7edd, (q15_t)0xc01, (q15_t)0x7ee0, (q15_t)0xbf5,\n    (q15_t)0x7ee2, (q15_t)0xbe8, (q15_t)0x7ee4, (q15_t)0xbdc, (q15_t)0x7ee7, (q15_t)0xbd0, (q15_t)0x7ee9, (q15_t)0xbc3,\n    (q15_t)0x7eeb, (q15_t)0xbb7, (q15_t)0x7eed, (q15_t)0xbab, (q15_t)0x7ef0, (q15_t)0xb9e, (q15_t)0x7ef2, (q15_t)0xb92,\n    (q15_t)0x7ef4, (q15_t)0xb85, (q15_t)0x7ef7, (q15_t)0xb79, (q15_t)0x7ef9, (q15_t)0xb6d, (q15_t)0x7efb, (q15_t)0xb60,\n    (q15_t)0x7efd, (q15_t)0xb54, (q15_t)0x7f00, (q15_t)0xb48, (q15_t)0x7f02, (q15_t)0xb3b, (q15_t)0x7f04, (q15_t)0xb2f,\n    (q15_t)0x7f06, (q15_t)0xb23, (q15_t)0x7f08, (q15_t)0xb16, (q15_t)0x7f0a, (q15_t)0xb0a, (q15_t)0x7f0d, (q15_t)0xafd,\n    (q15_t)0x7f0f, (q15_t)0xaf1, (q15_t)0x7f11, (q15_t)0xae5, (q15_t)0x7f13, (q15_t)0xad8, (q15_t)0x7f15, (q15_t)0xacc,\n    (q15_t)0x7f17, (q15_t)0xac0, (q15_t)0x7f19, (q15_t)0xab3, (q15_t)0x7f1c, (q15_t)0xaa7, (q15_t)0x7f1e, (q15_t)0xa9a,\n    (q15_t)0x7f20, (q15_t)0xa8e, (q15_t)0x7f22, (q15_t)0xa82, (q15_t)0x7f24, (q15_t)0xa75, (q15_t)0x7f26, (q15_t)0xa69,\n    (q15_t)0x7f28, (q15_t)0xa5c, (q15_t)0x7f2a, (q15_t)0xa50, (q15_t)0x7f2c, (q15_t)0xa44, (q15_t)0x7f2e, (q15_t)0xa37,\n    (q15_t)0x7f30, (q15_t)0xa2b, (q15_t)0x7f32, (q15_t)0xa1e, (q15_t)0x7f34, (q15_t)0xa12, (q15_t)0x7f36, (q15_t)0xa06,\n    (q15_t)0x7f38, (q15_t)0x9f9, (q15_t)0x7f3a, (q15_t)0x9ed, (q15_t)0x7f3c, (q15_t)0x9e0, (q15_t)0x7f3e, (q15_t)0x9d4,\n    (q15_t)0x7f40, (q15_t)0x9c7, (q15_t)0x7f42, (q15_t)0x9bb, (q15_t)0x7f43, (q15_t)0x9af, (q15_t)0x7f45, (q15_t)0x9a2,\n    (q15_t)0x7f47, (q15_t)0x996, (q15_t)0x7f49, (q15_t)0x989, (q15_t)0x7f4b, (q15_t)0x97d, (q15_t)0x7f4d, (q15_t)0x970,\n    (q15_t)0x7f4f, (q15_t)0x964, (q15_t)0x7f51, (q15_t)0x958, (q15_t)0x7f52, (q15_t)0x94b, (q15_t)0x7f54, (q15_t)0x93f,\n    (q15_t)0x7f56, (q15_t)0x932, (q15_t)0x7f58, (q15_t)0x926, (q15_t)0x7f5a, (q15_t)0x919, (q15_t)0x7f5b, (q15_t)0x90d,\n    (q15_t)0x7f5d, (q15_t)0x901, (q15_t)0x7f5f, (q15_t)0x8f4, (q15_t)0x7f61, (q15_t)0x8e8, (q15_t)0x7f62, (q15_t)0x8db,\n    (q15_t)0x7f64, (q15_t)0x8cf, (q15_t)0x7f66, (q15_t)0x8c2, (q15_t)0x7f68, (q15_t)0x8b6, (q15_t)0x7f69, (q15_t)0x8a9,\n    (q15_t)0x7f6b, (q15_t)0x89d, (q15_t)0x7f6d, (q15_t)0x891, (q15_t)0x7f6e, (q15_t)0x884, (q15_t)0x7f70, (q15_t)0x878,\n    (q15_t)0x7f72, (q15_t)0x86b, (q15_t)0x7f73, (q15_t)0x85f, (q15_t)0x7f75, (q15_t)0x852, (q15_t)0x7f77, (q15_t)0x846,\n    (q15_t)0x7f78, (q15_t)0x839, (q15_t)0x7f7a, (q15_t)0x82d, (q15_t)0x7f7b, (q15_t)0x820, (q15_t)0x7f7d, (q15_t)0x814,\n    (q15_t)0x7f7f, (q15_t)0x807, (q15_t)0x7f80, (q15_t)0x7fb, (q15_t)0x7f82, (q15_t)0x7ef, (q15_t)0x7f83, (q15_t)0x7e2,\n    (q15_t)0x7f85, (q15_t)0x7d6, (q15_t)0x7f86, (q15_t)0x7c9, (q15_t)0x7f88, (q15_t)0x7bd, (q15_t)0x7f89, (q15_t)0x7b0,\n    (q15_t)0x7f8b, (q15_t)0x7a4, (q15_t)0x7f8c, (q15_t)0x797, (q15_t)0x7f8e, (q15_t)0x78b, (q15_t)0x7f8f, (q15_t)0x77e,\n    (q15_t)0x7f91, (q15_t)0x772, (q15_t)0x7f92, (q15_t)0x765, (q15_t)0x7f94, (q15_t)0x759, (q15_t)0x7f95, (q15_t)0x74c,\n    (q15_t)0x7f97, (q15_t)0x740, (q15_t)0x7f98, (q15_t)0x733, (q15_t)0x7f99, (q15_t)0x727, (q15_t)0x7f9b, (q15_t)0x71a,\n    (q15_t)0x7f9c, (q15_t)0x70e, (q15_t)0x7f9e, (q15_t)0x701, (q15_t)0x7f9f, (q15_t)0x6f5, (q15_t)0x7fa0, (q15_t)0x6e8,\n    (q15_t)0x7fa2, (q15_t)0x6dc, (q15_t)0x7fa3, (q15_t)0x6cf, (q15_t)0x7fa4, (q15_t)0x6c3, (q15_t)0x7fa6, (q15_t)0x6b6,\n    (q15_t)0x7fa7, (q15_t)0x6aa, (q15_t)0x7fa8, (q15_t)0x69d, (q15_t)0x7faa, (q15_t)0x691, (q15_t)0x7fab, (q15_t)0x684,\n    (q15_t)0x7fac, (q15_t)0x678, (q15_t)0x7fad, (q15_t)0x66b, (q15_t)0x7faf, (q15_t)0x65f, (q15_t)0x7fb0, (q15_t)0x652,\n    (q15_t)0x7fb1, (q15_t)0x646, (q15_t)0x7fb2, (q15_t)0x639, (q15_t)0x7fb4, (q15_t)0x62d, (q15_t)0x7fb5, (q15_t)0x620,\n    (q15_t)0x7fb6, (q15_t)0x614, (q15_t)0x7fb7, (q15_t)0x607, (q15_t)0x7fb8, (q15_t)0x5fb, (q15_t)0x7fb9, (q15_t)0x5ee,\n    (q15_t)0x7fbb, (q15_t)0x5e2, (q15_t)0x7fbc, (q15_t)0x5d5, (q15_t)0x7fbd, (q15_t)0x5c9, (q15_t)0x7fbe, (q15_t)0x5bc,\n    (q15_t)0x7fbf, (q15_t)0x5b0, (q15_t)0x7fc0, (q15_t)0x5a3, (q15_t)0x7fc1, (q15_t)0x597, (q15_t)0x7fc3, (q15_t)0x58a,\n    (q15_t)0x7fc4, (q15_t)0x57e, (q15_t)0x7fc5, (q15_t)0x571, (q15_t)0x7fc6, (q15_t)0x565, (q15_t)0x7fc7, (q15_t)0x558,\n    (q15_t)0x7fc8, (q15_t)0x54c, (q15_t)0x7fc9, (q15_t)0x53f, (q15_t)0x7fca, (q15_t)0x533, (q15_t)0x7fcb, (q15_t)0x526,\n    (q15_t)0x7fcc, (q15_t)0x51a, (q15_t)0x7fcd, (q15_t)0x50d, (q15_t)0x7fce, (q15_t)0x500, (q15_t)0x7fcf, (q15_t)0x4f4,\n    (q15_t)0x7fd0, (q15_t)0x4e7, (q15_t)0x7fd1, (q15_t)0x4db, (q15_t)0x7fd2, (q15_t)0x4ce, (q15_t)0x7fd3, (q15_t)0x4c2,\n    (q15_t)0x7fd4, (q15_t)0x4b5, (q15_t)0x7fd5, (q15_t)0x4a9, (q15_t)0x7fd5, (q15_t)0x49c, (q15_t)0x7fd6, (q15_t)0x490,\n    (q15_t)0x7fd7, (q15_t)0x483, (q15_t)0x7fd8, (q15_t)0x477, (q15_t)0x7fd9, (q15_t)0x46a, (q15_t)0x7fda, (q15_t)0x45e,\n    (q15_t)0x7fdb, (q15_t)0x451, (q15_t)0x7fdc, (q15_t)0x444, (q15_t)0x7fdc, (q15_t)0x438, (q15_t)0x7fdd, (q15_t)0x42b,\n    (q15_t)0x7fde, (q15_t)0x41f, (q15_t)0x7fdf, (q15_t)0x412, (q15_t)0x7fe0, (q15_t)0x406, (q15_t)0x7fe0, (q15_t)0x3f9,\n    (q15_t)0x7fe1, (q15_t)0x3ed, (q15_t)0x7fe2, (q15_t)0x3e0, (q15_t)0x7fe3, (q15_t)0x3d4, (q15_t)0x7fe3, (q15_t)0x3c7,\n    (q15_t)0x7fe4, (q15_t)0x3bb, (q15_t)0x7fe5, (q15_t)0x3ae, (q15_t)0x7fe6, (q15_t)0x3a1, (q15_t)0x7fe6, (q15_t)0x395,\n    (q15_t)0x7fe7, (q15_t)0x388, (q15_t)0x7fe8, (q15_t)0x37c, (q15_t)0x7fe8, (q15_t)0x36f, (q15_t)0x7fe9, (q15_t)0x363,\n    (q15_t)0x7fea, (q15_t)0x356, (q15_t)0x7fea, (q15_t)0x34a, (q15_t)0x7feb, (q15_t)0x33d, (q15_t)0x7fec, (q15_t)0x330,\n    (q15_t)0x7fec, (q15_t)0x324, (q15_t)0x7fed, (q15_t)0x317, (q15_t)0x7fed, (q15_t)0x30b, (q15_t)0x7fee, (q15_t)0x2fe,\n    (q15_t)0x7fef, (q15_t)0x2f2, (q15_t)0x7fef, (q15_t)0x2e5, (q15_t)0x7ff0, (q15_t)0x2d9, (q15_t)0x7ff0, (q15_t)0x2cc,\n    (q15_t)0x7ff1, (q15_t)0x2c0, (q15_t)0x7ff1, (q15_t)0x2b3, (q15_t)0x7ff2, (q15_t)0x2a6, (q15_t)0x7ff2, (q15_t)0x29a,\n    (q15_t)0x7ff3, (q15_t)0x28d, (q15_t)0x7ff3, (q15_t)0x281, (q15_t)0x7ff4, (q15_t)0x274, (q15_t)0x7ff4, (q15_t)0x268,\n    (q15_t)0x7ff5, (q15_t)0x25b, (q15_t)0x7ff5, (q15_t)0x24e, (q15_t)0x7ff6, (q15_t)0x242, (q15_t)0x7ff6, (q15_t)0x235,\n    (q15_t)0x7ff7, (q15_t)0x229, (q15_t)0x7ff7, (q15_t)0x21c, (q15_t)0x7ff7, (q15_t)0x210, (q15_t)0x7ff8, (q15_t)0x203,\n    (q15_t)0x7ff8, (q15_t)0x1f7, (q15_t)0x7ff9, (q15_t)0x1ea, (q15_t)0x7ff9, (q15_t)0x1dd, (q15_t)0x7ff9, (q15_t)0x1d1,\n    (q15_t)0x7ffa, (q15_t)0x1c4, (q15_t)0x7ffa, (q15_t)0x1b8, (q15_t)0x7ffa, (q15_t)0x1ab, (q15_t)0x7ffb, (q15_t)0x19f,\n    (q15_t)0x7ffb, (q15_t)0x192, (q15_t)0x7ffb, (q15_t)0x186, (q15_t)0x7ffc, (q15_t)0x179, (q15_t)0x7ffc, (q15_t)0x16c,\n    (q15_t)0x7ffc, (q15_t)0x160, (q15_t)0x7ffc, (q15_t)0x153, (q15_t)0x7ffd, (q15_t)0x147, (q15_t)0x7ffd, (q15_t)0x13a,\n    (q15_t)0x7ffd, (q15_t)0x12e, (q15_t)0x7ffd, (q15_t)0x121, (q15_t)0x7ffe, (q15_t)0x114, (q15_t)0x7ffe, (q15_t)0x108,\n    (q15_t)0x7ffe, (q15_t)0xfb, (q15_t)0x7ffe, (q15_t)0xef, (q15_t)0x7ffe, (q15_t)0xe2, (q15_t)0x7fff, (q15_t)0xd6,\n    (q15_t)0x7fff, (q15_t)0xc9, (q15_t)0x7fff, (q15_t)0xbc, (q15_t)0x7fff, (q15_t)0xb0, (q15_t)0x7fff, (q15_t)0xa3,\n    (q15_t)0x7fff, (q15_t)0x97, (q15_t)0x7fff, (q15_t)0x8a, (q15_t)0x7fff, (q15_t)0x7e, (q15_t)0x7fff, (q15_t)0x71,\n    (q15_t)0x7fff, (q15_t)0x65, (q15_t)0x7fff, (q15_t)0x58, (q15_t)0x7fff, (q15_t)0x4b, (q15_t)0x7fff, (q15_t)0x3f,\n    (q15_t)0x7fff, (q15_t)0x32, (q15_t)0x7fff, (q15_t)0x26, (q15_t)0x7fff, (q15_t)0x19, (q15_t)0x7fff, (q15_t)0xd,\n    (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xfff3, (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffda,\n    (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffc1, (q15_t)0x7fff, (q15_t)0xffb5, (q15_t)0x7fff, (q15_t)0xffa8,\n    (q15_t)0x7fff, (q15_t)0xff9b, (q15_t)0x7fff, (q15_t)0xff8f, (q15_t)0x7fff, (q15_t)0xff82, (q15_t)0x7fff, (q15_t)0xff76,\n    (q15_t)0x7fff, (q15_t)0xff69, (q15_t)0x7fff, (q15_t)0xff5d, (q15_t)0x7fff, (q15_t)0xff50, (q15_t)0x7fff, (q15_t)0xff44,\n    (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff2a, (q15_t)0x7ffe, (q15_t)0xff1e, (q15_t)0x7ffe, (q15_t)0xff11,\n    (q15_t)0x7ffe, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfef8, (q15_t)0x7ffe, (q15_t)0xfeec, (q15_t)0x7ffd, (q15_t)0xfedf,\n    (q15_t)0x7ffd, (q15_t)0xfed2, (q15_t)0x7ffd, (q15_t)0xfec6, (q15_t)0x7ffd, (q15_t)0xfeb9, (q15_t)0x7ffc, (q15_t)0xfead,\n    (q15_t)0x7ffc, (q15_t)0xfea0, (q15_t)0x7ffc, (q15_t)0xfe94, (q15_t)0x7ffc, (q15_t)0xfe87, (q15_t)0x7ffb, (q15_t)0xfe7a,\n    (q15_t)0x7ffb, (q15_t)0xfe6e, (q15_t)0x7ffb, (q15_t)0xfe61, (q15_t)0x7ffa, (q15_t)0xfe55, (q15_t)0x7ffa, (q15_t)0xfe48,\n    (q15_t)0x7ffa, (q15_t)0xfe3c, (q15_t)0x7ff9, (q15_t)0xfe2f, (q15_t)0x7ff9, (q15_t)0xfe23, (q15_t)0x7ff9, (q15_t)0xfe16,\n    (q15_t)0x7ff8, (q15_t)0xfe09, (q15_t)0x7ff8, (q15_t)0xfdfd, (q15_t)0x7ff7, (q15_t)0xfdf0, (q15_t)0x7ff7, (q15_t)0xfde4,\n    (q15_t)0x7ff7, (q15_t)0xfdd7, (q15_t)0x7ff6, (q15_t)0xfdcb, (q15_t)0x7ff6, (q15_t)0xfdbe, (q15_t)0x7ff5, (q15_t)0xfdb2,\n    (q15_t)0x7ff5, (q15_t)0xfda5, (q15_t)0x7ff4, (q15_t)0xfd98, (q15_t)0x7ff4, (q15_t)0xfd8c, (q15_t)0x7ff3, (q15_t)0xfd7f,\n    (q15_t)0x7ff3, (q15_t)0xfd73, (q15_t)0x7ff2, (q15_t)0xfd66, (q15_t)0x7ff2, (q15_t)0xfd5a, (q15_t)0x7ff1, (q15_t)0xfd4d,\n    (q15_t)0x7ff1, (q15_t)0xfd40, (q15_t)0x7ff0, (q15_t)0xfd34, (q15_t)0x7ff0, (q15_t)0xfd27, (q15_t)0x7fef, (q15_t)0xfd1b,\n    (q15_t)0x7fef, (q15_t)0xfd0e, (q15_t)0x7fee, (q15_t)0xfd02, (q15_t)0x7fed, (q15_t)0xfcf5, (q15_t)0x7fed, (q15_t)0xfce9,\n    (q15_t)0x7fec, (q15_t)0xfcdc, (q15_t)0x7fec, (q15_t)0xfcd0, (q15_t)0x7feb, (q15_t)0xfcc3, (q15_t)0x7fea, (q15_t)0xfcb6,\n    (q15_t)0x7fea, (q15_t)0xfcaa, (q15_t)0x7fe9, (q15_t)0xfc9d, (q15_t)0x7fe8, (q15_t)0xfc91, (q15_t)0x7fe8, (q15_t)0xfc84,\n    (q15_t)0x7fe7, (q15_t)0xfc78, (q15_t)0x7fe6, (q15_t)0xfc6b, (q15_t)0x7fe6, (q15_t)0xfc5f, (q15_t)0x7fe5, (q15_t)0xfc52,\n    (q15_t)0x7fe4, (q15_t)0xfc45, (q15_t)0x7fe3, (q15_t)0xfc39, (q15_t)0x7fe3, (q15_t)0xfc2c, (q15_t)0x7fe2, (q15_t)0xfc20,\n    (q15_t)0x7fe1, (q15_t)0xfc13, (q15_t)0x7fe0, (q15_t)0xfc07, (q15_t)0x7fe0, (q15_t)0xfbfa, (q15_t)0x7fdf, (q15_t)0xfbee,\n    (q15_t)0x7fde, (q15_t)0xfbe1, (q15_t)0x7fdd, (q15_t)0xfbd5, (q15_t)0x7fdc, (q15_t)0xfbc8, (q15_t)0x7fdc, (q15_t)0xfbbc,\n    (q15_t)0x7fdb, (q15_t)0xfbaf, (q15_t)0x7fda, (q15_t)0xfba2, (q15_t)0x7fd9, (q15_t)0xfb96, (q15_t)0x7fd8, (q15_t)0xfb89,\n    (q15_t)0x7fd7, (q15_t)0xfb7d, (q15_t)0x7fd6, (q15_t)0xfb70, (q15_t)0x7fd5, (q15_t)0xfb64, (q15_t)0x7fd5, (q15_t)0xfb57,\n    (q15_t)0x7fd4, (q15_t)0xfb4b, (q15_t)0x7fd3, (q15_t)0xfb3e, (q15_t)0x7fd2, (q15_t)0xfb32, (q15_t)0x7fd1, (q15_t)0xfb25,\n    (q15_t)0x7fd0, (q15_t)0xfb19, (q15_t)0x7fcf, (q15_t)0xfb0c, (q15_t)0x7fce, (q15_t)0xfb00, (q15_t)0x7fcd, (q15_t)0xfaf3,\n    (q15_t)0x7fcc, (q15_t)0xfae6, (q15_t)0x7fcb, (q15_t)0xfada, (q15_t)0x7fca, (q15_t)0xfacd, (q15_t)0x7fc9, (q15_t)0xfac1,\n    (q15_t)0x7fc8, (q15_t)0xfab4, (q15_t)0x7fc7, (q15_t)0xfaa8, (q15_t)0x7fc6, (q15_t)0xfa9b, (q15_t)0x7fc5, (q15_t)0xfa8f,\n    (q15_t)0x7fc4, (q15_t)0xfa82, (q15_t)0x7fc3, (q15_t)0xfa76, (q15_t)0x7fc1, (q15_t)0xfa69, (q15_t)0x7fc0, (q15_t)0xfa5d,\n    (q15_t)0x7fbf, (q15_t)0xfa50, (q15_t)0x7fbe, (q15_t)0xfa44, (q15_t)0x7fbd, (q15_t)0xfa37, (q15_t)0x7fbc, (q15_t)0xfa2b,\n    (q15_t)0x7fbb, (q15_t)0xfa1e, (q15_t)0x7fb9, (q15_t)0xfa12, (q15_t)0x7fb8, (q15_t)0xfa05, (q15_t)0x7fb7, (q15_t)0xf9f9,\n    (q15_t)0x7fb6, (q15_t)0xf9ec, (q15_t)0x7fb5, (q15_t)0xf9e0, (q15_t)0x7fb4, (q15_t)0xf9d3, (q15_t)0x7fb2, (q15_t)0xf9c7,\n    (q15_t)0x7fb1, (q15_t)0xf9ba, (q15_t)0x7fb0, (q15_t)0xf9ae, (q15_t)0x7faf, (q15_t)0xf9a1, (q15_t)0x7fad, (q15_t)0xf995,\n    (q15_t)0x7fac, (q15_t)0xf988, (q15_t)0x7fab, (q15_t)0xf97c, (q15_t)0x7faa, (q15_t)0xf96f, (q15_t)0x7fa8, (q15_t)0xf963,\n    (q15_t)0x7fa7, (q15_t)0xf956, (q15_t)0x7fa6, (q15_t)0xf94a, (q15_t)0x7fa4, (q15_t)0xf93d, (q15_t)0x7fa3, (q15_t)0xf931,\n    (q15_t)0x7fa2, (q15_t)0xf924, (q15_t)0x7fa0, (q15_t)0xf918, (q15_t)0x7f9f, (q15_t)0xf90b, (q15_t)0x7f9e, (q15_t)0xf8ff,\n    (q15_t)0x7f9c, (q15_t)0xf8f2, (q15_t)0x7f9b, (q15_t)0xf8e6, (q15_t)0x7f99, (q15_t)0xf8d9, (q15_t)0x7f98, (q15_t)0xf8cd,\n    (q15_t)0x7f97, (q15_t)0xf8c0, (q15_t)0x7f95, (q15_t)0xf8b4, (q15_t)0x7f94, (q15_t)0xf8a7, (q15_t)0x7f92, (q15_t)0xf89b,\n    (q15_t)0x7f91, (q15_t)0xf88e, (q15_t)0x7f8f, (q15_t)0xf882, (q15_t)0x7f8e, (q15_t)0xf875, (q15_t)0x7f8c, (q15_t)0xf869,\n    (q15_t)0x7f8b, (q15_t)0xf85c, (q15_t)0x7f89, (q15_t)0xf850, (q15_t)0x7f88, (q15_t)0xf843, (q15_t)0x7f86, (q15_t)0xf837,\n    (q15_t)0x7f85, (q15_t)0xf82a, (q15_t)0x7f83, (q15_t)0xf81e, (q15_t)0x7f82, (q15_t)0xf811, (q15_t)0x7f80, (q15_t)0xf805,\n    (q15_t)0x7f7f, (q15_t)0xf7f9, (q15_t)0x7f7d, (q15_t)0xf7ec, (q15_t)0x7f7b, (q15_t)0xf7e0, (q15_t)0x7f7a, (q15_t)0xf7d3,\n    (q15_t)0x7f78, (q15_t)0xf7c7, (q15_t)0x7f77, (q15_t)0xf7ba, (q15_t)0x7f75, (q15_t)0xf7ae, (q15_t)0x7f73, (q15_t)0xf7a1,\n    (q15_t)0x7f72, (q15_t)0xf795, (q15_t)0x7f70, (q15_t)0xf788, (q15_t)0x7f6e, (q15_t)0xf77c, (q15_t)0x7f6d, (q15_t)0xf76f,\n    (q15_t)0x7f6b, (q15_t)0xf763, (q15_t)0x7f69, (q15_t)0xf757, (q15_t)0x7f68, (q15_t)0xf74a, (q15_t)0x7f66, (q15_t)0xf73e,\n    (q15_t)0x7f64, (q15_t)0xf731, (q15_t)0x7f62, (q15_t)0xf725, (q15_t)0x7f61, (q15_t)0xf718, (q15_t)0x7f5f, (q15_t)0xf70c,\n    (q15_t)0x7f5d, (q15_t)0xf6ff, (q15_t)0x7f5b, (q15_t)0xf6f3, (q15_t)0x7f5a, (q15_t)0xf6e7, (q15_t)0x7f58, (q15_t)0xf6da,\n    (q15_t)0x7f56, (q15_t)0xf6ce, (q15_t)0x7f54, (q15_t)0xf6c1, (q15_t)0x7f52, (q15_t)0xf6b5, (q15_t)0x7f51, (q15_t)0xf6a8,\n    (q15_t)0x7f4f, (q15_t)0xf69c, (q15_t)0x7f4d, (q15_t)0xf690, (q15_t)0x7f4b, (q15_t)0xf683, (q15_t)0x7f49, (q15_t)0xf677,\n    (q15_t)0x7f47, (q15_t)0xf66a, (q15_t)0x7f45, (q15_t)0xf65e, (q15_t)0x7f43, (q15_t)0xf651, (q15_t)0x7f42, (q15_t)0xf645,\n    (q15_t)0x7f40, (q15_t)0xf639, (q15_t)0x7f3e, (q15_t)0xf62c, (q15_t)0x7f3c, (q15_t)0xf620, (q15_t)0x7f3a, (q15_t)0xf613,\n    (q15_t)0x7f38, (q15_t)0xf607, (q15_t)0x7f36, (q15_t)0xf5fa, (q15_t)0x7f34, (q15_t)0xf5ee, (q15_t)0x7f32, (q15_t)0xf5e2,\n    (q15_t)0x7f30, (q15_t)0xf5d5, (q15_t)0x7f2e, (q15_t)0xf5c9, (q15_t)0x7f2c, (q15_t)0xf5bc, (q15_t)0x7f2a, (q15_t)0xf5b0,\n    (q15_t)0x7f28, (q15_t)0xf5a4, (q15_t)0x7f26, (q15_t)0xf597, (q15_t)0x7f24, (q15_t)0xf58b, (q15_t)0x7f22, (q15_t)0xf57e,\n    (q15_t)0x7f20, (q15_t)0xf572, (q15_t)0x7f1e, (q15_t)0xf566, (q15_t)0x7f1c, (q15_t)0xf559, (q15_t)0x7f19, (q15_t)0xf54d,\n    (q15_t)0x7f17, (q15_t)0xf540, (q15_t)0x7f15, (q15_t)0xf534, (q15_t)0x7f13, (q15_t)0xf528, (q15_t)0x7f11, (q15_t)0xf51b,\n    (q15_t)0x7f0f, (q15_t)0xf50f, (q15_t)0x7f0d, (q15_t)0xf503, (q15_t)0x7f0a, (q15_t)0xf4f6, (q15_t)0x7f08, (q15_t)0xf4ea,\n    (q15_t)0x7f06, (q15_t)0xf4dd, (q15_t)0x7f04, (q15_t)0xf4d1, (q15_t)0x7f02, (q15_t)0xf4c5, (q15_t)0x7f00, (q15_t)0xf4b8,\n    (q15_t)0x7efd, (q15_t)0xf4ac, (q15_t)0x7efb, (q15_t)0xf4a0, (q15_t)0x7ef9, (q15_t)0xf493, (q15_t)0x7ef7, (q15_t)0xf487,\n    (q15_t)0x7ef4, (q15_t)0xf47b, (q15_t)0x7ef2, (q15_t)0xf46e, (q15_t)0x7ef0, (q15_t)0xf462, (q15_t)0x7eed, (q15_t)0xf455,\n    (q15_t)0x7eeb, (q15_t)0xf449, (q15_t)0x7ee9, (q15_t)0xf43d, (q15_t)0x7ee7, (q15_t)0xf430, (q15_t)0x7ee4, (q15_t)0xf424,\n    (q15_t)0x7ee2, (q15_t)0xf418, (q15_t)0x7ee0, (q15_t)0xf40b, (q15_t)0x7edd, (q15_t)0xf3ff, (q15_t)0x7edb, (q15_t)0xf3f3,\n    (q15_t)0x7ed8, (q15_t)0xf3e6, (q15_t)0x7ed6, (q15_t)0xf3da, (q15_t)0x7ed4, (q15_t)0xf3ce, (q15_t)0x7ed1, (q15_t)0xf3c1,\n    (q15_t)0x7ecf, (q15_t)0xf3b5, (q15_t)0x7ecc, (q15_t)0xf3a9, (q15_t)0x7eca, (q15_t)0xf39c, (q15_t)0x7ec8, (q15_t)0xf390,\n    (q15_t)0x7ec5, (q15_t)0xf384, (q15_t)0x7ec3, (q15_t)0xf377, (q15_t)0x7ec0, (q15_t)0xf36b, (q15_t)0x7ebe, (q15_t)0xf35f,\n    (q15_t)0x7ebb, (q15_t)0xf352, (q15_t)0x7eb9, (q15_t)0xf346, (q15_t)0x7eb6, (q15_t)0xf33a, (q15_t)0x7eb4, (q15_t)0xf32d,\n    (q15_t)0x7eb1, (q15_t)0xf321, (q15_t)0x7eaf, (q15_t)0xf315, (q15_t)0x7eac, (q15_t)0xf308, (q15_t)0x7eaa, (q15_t)0xf2fc,\n    (q15_t)0x7ea7, (q15_t)0xf2f0, (q15_t)0x7ea5, (q15_t)0xf2e4, (q15_t)0x7ea2, (q15_t)0xf2d7, (q15_t)0x7e9f, (q15_t)0xf2cb,\n    (q15_t)0x7e9d, (q15_t)0xf2bf, (q15_t)0x7e9a, (q15_t)0xf2b2, (q15_t)0x7e98, (q15_t)0xf2a6, (q15_t)0x7e95, (q15_t)0xf29a,\n    (q15_t)0x7e92, (q15_t)0xf28e, (q15_t)0x7e90, (q15_t)0xf281, (q15_t)0x7e8d, (q15_t)0xf275, (q15_t)0x7e8a, (q15_t)0xf269,\n    (q15_t)0x7e88, (q15_t)0xf25c, (q15_t)0x7e85, (q15_t)0xf250, (q15_t)0x7e82, (q15_t)0xf244, (q15_t)0x7e80, (q15_t)0xf238,\n    (q15_t)0x7e7d, (q15_t)0xf22b, (q15_t)0x7e7a, (q15_t)0xf21f, (q15_t)0x7e77, (q15_t)0xf213, (q15_t)0x7e75, (q15_t)0xf207,\n    (q15_t)0x7e72, (q15_t)0xf1fa, (q15_t)0x7e6f, (q15_t)0xf1ee, (q15_t)0x7e6c, (q15_t)0xf1e2, (q15_t)0x7e6a, (q15_t)0xf1d5,\n    (q15_t)0x7e67, (q15_t)0xf1c9, (q15_t)0x7e64, (q15_t)0xf1bd, (q15_t)0x7e61, (q15_t)0xf1b1, (q15_t)0x7e5e, (q15_t)0xf1a4,\n    (q15_t)0x7e5c, (q15_t)0xf198, (q15_t)0x7e59, (q15_t)0xf18c, (q15_t)0x7e56, (q15_t)0xf180, (q15_t)0x7e53, (q15_t)0xf174,\n    (q15_t)0x7e50, (q15_t)0xf167, (q15_t)0x7e4d, (q15_t)0xf15b, (q15_t)0x7e4a, (q15_t)0xf14f, (q15_t)0x7e48, (q15_t)0xf143,\n    (q15_t)0x7e45, (q15_t)0xf136, (q15_t)0x7e42, (q15_t)0xf12a, (q15_t)0x7e3f, (q15_t)0xf11e, (q15_t)0x7e3c, (q15_t)0xf112,\n    (q15_t)0x7e39, (q15_t)0xf105, (q15_t)0x7e36, (q15_t)0xf0f9, (q15_t)0x7e33, (q15_t)0xf0ed, (q15_t)0x7e30, (q15_t)0xf0e1,\n    (q15_t)0x7e2d, (q15_t)0xf0d5, (q15_t)0x7e2a, (q15_t)0xf0c8, (q15_t)0x7e27, (q15_t)0xf0bc, (q15_t)0x7e24, (q15_t)0xf0b0,\n    (q15_t)0x7e21, (q15_t)0xf0a4, (q15_t)0x7e1e, (q15_t)0xf098, (q15_t)0x7e1b, (q15_t)0xf08b, (q15_t)0x7e18, (q15_t)0xf07f,\n    (q15_t)0x7e15, (q15_t)0xf073, (q15_t)0x7e12, (q15_t)0xf067, (q15_t)0x7e0f, (q15_t)0xf05b, (q15_t)0x7e0c, (q15_t)0xf04e,\n    (q15_t)0x7e09, (q15_t)0xf042, (q15_t)0x7e06, (q15_t)0xf036, (q15_t)0x7e03, (q15_t)0xf02a, (q15_t)0x7dff, (q15_t)0xf01e,\n    (q15_t)0x7dfc, (q15_t)0xf012, (q15_t)0x7df9, (q15_t)0xf005, (q15_t)0x7df6, (q15_t)0xeff9, (q15_t)0x7df3, (q15_t)0xefed,\n    (q15_t)0x7df0, (q15_t)0xefe1, (q15_t)0x7ded, (q15_t)0xefd5, (q15_t)0x7de9, (q15_t)0xefc9, (q15_t)0x7de6, (q15_t)0xefbc,\n    (q15_t)0x7de3, (q15_t)0xefb0, (q15_t)0x7de0, (q15_t)0xefa4, (q15_t)0x7ddd, (q15_t)0xef98, (q15_t)0x7dd9, (q15_t)0xef8c,\n    (q15_t)0x7dd6, (q15_t)0xef80, (q15_t)0x7dd3, (q15_t)0xef74, (q15_t)0x7dd0, (q15_t)0xef67, (q15_t)0x7dcc, (q15_t)0xef5b,\n    (q15_t)0x7dc9, (q15_t)0xef4f, (q15_t)0x7dc6, (q15_t)0xef43, (q15_t)0x7dc2, (q15_t)0xef37, (q15_t)0x7dbf, (q15_t)0xef2b,\n    (q15_t)0x7dbc, (q15_t)0xef1f, (q15_t)0x7db9, (q15_t)0xef13, (q15_t)0x7db5, (q15_t)0xef06, (q15_t)0x7db2, (q15_t)0xeefa,\n    (q15_t)0x7daf, (q15_t)0xeeee, (q15_t)0x7dab, (q15_t)0xeee2, (q15_t)0x7da8, (q15_t)0xeed6, (q15_t)0x7da4, (q15_t)0xeeca,\n    (q15_t)0x7da1, (q15_t)0xeebe, (q15_t)0x7d9e, (q15_t)0xeeb2, (q15_t)0x7d9a, (q15_t)0xeea6, (q15_t)0x7d97, (q15_t)0xee99,\n    (q15_t)0x7d93, (q15_t)0xee8d, (q15_t)0x7d90, (q15_t)0xee81, (q15_t)0x7d8d, (q15_t)0xee75, (q15_t)0x7d89, (q15_t)0xee69,\n    (q15_t)0x7d86, (q15_t)0xee5d, (q15_t)0x7d82, (q15_t)0xee51, (q15_t)0x7d7f, (q15_t)0xee45, (q15_t)0x7d7b, (q15_t)0xee39,\n    (q15_t)0x7d78, (q15_t)0xee2d, (q15_t)0x7d74, (q15_t)0xee21, (q15_t)0x7d71, (q15_t)0xee15, (q15_t)0x7d6d, (q15_t)0xee09,\n    (q15_t)0x7d6a, (q15_t)0xedfc, (q15_t)0x7d66, (q15_t)0xedf0, (q15_t)0x7d63, (q15_t)0xede4, (q15_t)0x7d5f, (q15_t)0xedd8,\n    (q15_t)0x7d5b, (q15_t)0xedcc, (q15_t)0x7d58, (q15_t)0xedc0, (q15_t)0x7d54, (q15_t)0xedb4, (q15_t)0x7d51, (q15_t)0xeda8,\n    (q15_t)0x7d4d, (q15_t)0xed9c, (q15_t)0x7d49, (q15_t)0xed90, (q15_t)0x7d46, (q15_t)0xed84, (q15_t)0x7d42, (q15_t)0xed78,\n    (q15_t)0x7d3f, (q15_t)0xed6c, (q15_t)0x7d3b, (q15_t)0xed60, (q15_t)0x7d37, (q15_t)0xed54, (q15_t)0x7d34, (q15_t)0xed48,\n    (q15_t)0x7d30, (q15_t)0xed3c, (q15_t)0x7d2c, (q15_t)0xed30, (q15_t)0x7d28, (q15_t)0xed24, (q15_t)0x7d25, (q15_t)0xed18,\n    (q15_t)0x7d21, (q15_t)0xed0c, (q15_t)0x7d1d, (q15_t)0xed00, (q15_t)0x7d1a, (q15_t)0xecf4, (q15_t)0x7d16, (q15_t)0xece8,\n    (q15_t)0x7d12, (q15_t)0xecdc, (q15_t)0x7d0e, (q15_t)0xecd0, (q15_t)0x7d0b, (q15_t)0xecc4, (q15_t)0x7d07, (q15_t)0xecb8,\n    (q15_t)0x7d03, (q15_t)0xecac, (q15_t)0x7cff, (q15_t)0xeca0, (q15_t)0x7cfb, (q15_t)0xec94, (q15_t)0x7cf8, (q15_t)0xec88,\n    (q15_t)0x7cf4, (q15_t)0xec7c, (q15_t)0x7cf0, (q15_t)0xec70, (q15_t)0x7cec, (q15_t)0xec64, (q15_t)0x7ce8, (q15_t)0xec58,\n    (q15_t)0x7ce4, (q15_t)0xec4c, (q15_t)0x7ce0, (q15_t)0xec40, (q15_t)0x7cdd, (q15_t)0xec34, (q15_t)0x7cd9, (q15_t)0xec28,\n    (q15_t)0x7cd5, (q15_t)0xec1c, (q15_t)0x7cd1, (q15_t)0xec10, (q15_t)0x7ccd, (q15_t)0xec05, (q15_t)0x7cc9, (q15_t)0xebf9,\n    (q15_t)0x7cc5, (q15_t)0xebed, (q15_t)0x7cc1, (q15_t)0xebe1, (q15_t)0x7cbd, (q15_t)0xebd5, (q15_t)0x7cb9, (q15_t)0xebc9,\n    (q15_t)0x7cb5, (q15_t)0xebbd, (q15_t)0x7cb1, (q15_t)0xebb1, (q15_t)0x7cad, (q15_t)0xeba5, (q15_t)0x7ca9, (q15_t)0xeb99,\n    (q15_t)0x7ca5, (q15_t)0xeb8d, (q15_t)0x7ca1, (q15_t)0xeb81, (q15_t)0x7c9d, (q15_t)0xeb75, (q15_t)0x7c99, (q15_t)0xeb6a,\n    (q15_t)0x7c95, (q15_t)0xeb5e, (q15_t)0x7c91, (q15_t)0xeb52, (q15_t)0x7c8d, (q15_t)0xeb46, (q15_t)0x7c89, (q15_t)0xeb3a,\n    (q15_t)0x7c85, (q15_t)0xeb2e, (q15_t)0x7c81, (q15_t)0xeb22, (q15_t)0x7c7d, (q15_t)0xeb16, (q15_t)0x7c79, (q15_t)0xeb0a,\n    (q15_t)0x7c74, (q15_t)0xeaff, (q15_t)0x7c70, (q15_t)0xeaf3, (q15_t)0x7c6c, (q15_t)0xeae7, (q15_t)0x7c68, (q15_t)0xeadb,\n    (q15_t)0x7c64, (q15_t)0xeacf, (q15_t)0x7c60, (q15_t)0xeac3, (q15_t)0x7c5b, (q15_t)0xeab7, (q15_t)0x7c57, (q15_t)0xeaac,\n    (q15_t)0x7c53, (q15_t)0xeaa0, (q15_t)0x7c4f, (q15_t)0xea94, (q15_t)0x7c4b, (q15_t)0xea88, (q15_t)0x7c46, (q15_t)0xea7c,\n    (q15_t)0x7c42, (q15_t)0xea70, (q15_t)0x7c3e, (q15_t)0xea65, (q15_t)0x7c3a, (q15_t)0xea59, (q15_t)0x7c36, (q15_t)0xea4d,\n    (q15_t)0x7c31, (q15_t)0xea41, (q15_t)0x7c2d, (q15_t)0xea35, (q15_t)0x7c29, (q15_t)0xea29, (q15_t)0x7c24, (q15_t)0xea1e,\n    (q15_t)0x7c20, (q15_t)0xea12, (q15_t)0x7c1c, (q15_t)0xea06, (q15_t)0x7c17, (q15_t)0xe9fa, (q15_t)0x7c13, (q15_t)0xe9ee,\n    (q15_t)0x7c0f, (q15_t)0xe9e3, (q15_t)0x7c0a, (q15_t)0xe9d7, (q15_t)0x7c06, (q15_t)0xe9cb, (q15_t)0x7c02, (q15_t)0xe9bf,\n    (q15_t)0x7bfd, (q15_t)0xe9b4, (q15_t)0x7bf9, (q15_t)0xe9a8, (q15_t)0x7bf5, (q15_t)0xe99c, (q15_t)0x7bf0, (q15_t)0xe990,\n    (q15_t)0x7bec, (q15_t)0xe984, (q15_t)0x7be7, (q15_t)0xe979, (q15_t)0x7be3, (q15_t)0xe96d, (q15_t)0x7bde, (q15_t)0xe961,\n    (q15_t)0x7bda, (q15_t)0xe955, (q15_t)0x7bd6, (q15_t)0xe94a, (q15_t)0x7bd1, (q15_t)0xe93e, (q15_t)0x7bcd, (q15_t)0xe932,\n    (q15_t)0x7bc8, (q15_t)0xe926, (q15_t)0x7bc4, (q15_t)0xe91b, (q15_t)0x7bbf, (q15_t)0xe90f, (q15_t)0x7bbb, (q15_t)0xe903,\n    (q15_t)0x7bb6, (q15_t)0xe8f7, (q15_t)0x7bb2, (q15_t)0xe8ec, (q15_t)0x7bad, (q15_t)0xe8e0, (q15_t)0x7ba9, (q15_t)0xe8d4,\n    (q15_t)0x7ba4, (q15_t)0xe8c9, (q15_t)0x7b9f, (q15_t)0xe8bd, (q15_t)0x7b9b, (q15_t)0xe8b1, (q15_t)0x7b96, (q15_t)0xe8a5,\n    (q15_t)0x7b92, (q15_t)0xe89a, (q15_t)0x7b8d, (q15_t)0xe88e, (q15_t)0x7b88, (q15_t)0xe882, (q15_t)0x7b84, (q15_t)0xe877,\n    (q15_t)0x7b7f, (q15_t)0xe86b, (q15_t)0x7b7b, (q15_t)0xe85f, (q15_t)0x7b76, (q15_t)0xe854, (q15_t)0x7b71, (q15_t)0xe848,\n    (q15_t)0x7b6d, (q15_t)0xe83c, (q15_t)0x7b68, (q15_t)0xe831, (q15_t)0x7b63, (q15_t)0xe825, (q15_t)0x7b5f, (q15_t)0xe819,\n    (q15_t)0x7b5a, (q15_t)0xe80e, (q15_t)0x7b55, (q15_t)0xe802, (q15_t)0x7b50, (q15_t)0xe7f6, (q15_t)0x7b4c, (q15_t)0xe7eb,\n    (q15_t)0x7b47, (q15_t)0xe7df, (q15_t)0x7b42, (q15_t)0xe7d3, (q15_t)0x7b3e, (q15_t)0xe7c8, (q15_t)0x7b39, (q15_t)0xe7bc,\n    (q15_t)0x7b34, (q15_t)0xe7b1, (q15_t)0x7b2f, (q15_t)0xe7a5, (q15_t)0x7b2a, (q15_t)0xe799, (q15_t)0x7b26, (q15_t)0xe78e,\n    (q15_t)0x7b21, (q15_t)0xe782, (q15_t)0x7b1c, (q15_t)0xe777, (q15_t)0x7b17, (q15_t)0xe76b, (q15_t)0x7b12, (q15_t)0xe75f,\n    (q15_t)0x7b0e, (q15_t)0xe754, (q15_t)0x7b09, (q15_t)0xe748, (q15_t)0x7b04, (q15_t)0xe73d, (q15_t)0x7aff, (q15_t)0xe731,\n    (q15_t)0x7afa, (q15_t)0xe725, (q15_t)0x7af5, (q15_t)0xe71a, (q15_t)0x7af0, (q15_t)0xe70e, (q15_t)0x7aeb, (q15_t)0xe703,\n    (q15_t)0x7ae6, (q15_t)0xe6f7, (q15_t)0x7ae2, (q15_t)0xe6ec, (q15_t)0x7add, (q15_t)0xe6e0, (q15_t)0x7ad8, (q15_t)0xe6d4,\n    (q15_t)0x7ad3, (q15_t)0xe6c9, (q15_t)0x7ace, (q15_t)0xe6bd, (q15_t)0x7ac9, (q15_t)0xe6b2, (q15_t)0x7ac4, (q15_t)0xe6a6,\n    (q15_t)0x7abf, (q15_t)0xe69b, (q15_t)0x7aba, (q15_t)0xe68f, (q15_t)0x7ab5, (q15_t)0xe684, (q15_t)0x7ab0, (q15_t)0xe678,\n    (q15_t)0x7aab, (q15_t)0xe66d, (q15_t)0x7aa6, (q15_t)0xe661, (q15_t)0x7aa1, (q15_t)0xe656, (q15_t)0x7a9c, (q15_t)0xe64a,\n    (q15_t)0x7a97, (q15_t)0xe63f, (q15_t)0x7a92, (q15_t)0xe633, (q15_t)0x7a8d, (q15_t)0xe628, (q15_t)0x7a88, (q15_t)0xe61c,\n    (q15_t)0x7a82, (q15_t)0xe611, (q15_t)0x7a7d, (q15_t)0xe605, (q15_t)0x7a78, (q15_t)0xe5fa, (q15_t)0x7a73, (q15_t)0xe5ee,\n    (q15_t)0x7a6e, (q15_t)0xe5e3, (q15_t)0x7a69, (q15_t)0xe5d7, (q15_t)0x7a64, (q15_t)0xe5cc, (q15_t)0x7a5f, (q15_t)0xe5c0,\n    (q15_t)0x7a59, (q15_t)0xe5b5, (q15_t)0x7a54, (q15_t)0xe5a9, (q15_t)0x7a4f, (q15_t)0xe59e, (q15_t)0x7a4a, (q15_t)0xe592,\n    (q15_t)0x7a45, (q15_t)0xe587, (q15_t)0x7a3f, (q15_t)0xe57c, (q15_t)0x7a3a, (q15_t)0xe570, (q15_t)0x7a35, (q15_t)0xe565,\n    (q15_t)0x7a30, (q15_t)0xe559, (q15_t)0x7a2b, (q15_t)0xe54e, (q15_t)0x7a25, (q15_t)0xe542, (q15_t)0x7a20, (q15_t)0xe537,\n    (q15_t)0x7a1b, (q15_t)0xe52c, (q15_t)0x7a16, (q15_t)0xe520, (q15_t)0x7a10, (q15_t)0xe515, (q15_t)0x7a0b, (q15_t)0xe509,\n    (q15_t)0x7a06, (q15_t)0xe4fe, (q15_t)0x7a00, (q15_t)0xe4f3, (q15_t)0x79fb, (q15_t)0xe4e7, (q15_t)0x79f6, (q15_t)0xe4dc,\n    (q15_t)0x79f0, (q15_t)0xe4d0, (q15_t)0x79eb, (q15_t)0xe4c5, (q15_t)0x79e6, (q15_t)0xe4ba, (q15_t)0x79e0, (q15_t)0xe4ae,\n    (q15_t)0x79db, (q15_t)0xe4a3, (q15_t)0x79d6, (q15_t)0xe498, (q15_t)0x79d0, (q15_t)0xe48c, (q15_t)0x79cb, (q15_t)0xe481,\n    (q15_t)0x79c5, (q15_t)0xe476, (q15_t)0x79c0, (q15_t)0xe46a, (q15_t)0x79bb, (q15_t)0xe45f, (q15_t)0x79b5, (q15_t)0xe454,\n    (q15_t)0x79b0, (q15_t)0xe448, (q15_t)0x79aa, (q15_t)0xe43d, (q15_t)0x79a5, (q15_t)0xe432, (q15_t)0x799f, (q15_t)0xe426,\n    (q15_t)0x799a, (q15_t)0xe41b, (q15_t)0x7994, (q15_t)0xe410, (q15_t)0x798f, (q15_t)0xe404, (q15_t)0x7989, (q15_t)0xe3f9,\n    (q15_t)0x7984, (q15_t)0xe3ee, (q15_t)0x797e, (q15_t)0xe3e2, (q15_t)0x7979, (q15_t)0xe3d7, (q15_t)0x7973, (q15_t)0xe3cc,\n    (q15_t)0x796e, (q15_t)0xe3c1, (q15_t)0x7968, (q15_t)0xe3b5, (q15_t)0x7963, (q15_t)0xe3aa, (q15_t)0x795d, (q15_t)0xe39f,\n    (q15_t)0x7958, (q15_t)0xe394, (q15_t)0x7952, (q15_t)0xe388, (q15_t)0x794c, (q15_t)0xe37d, (q15_t)0x7947, (q15_t)0xe372,\n    (q15_t)0x7941, (q15_t)0xe367, (q15_t)0x793b, (q15_t)0xe35b, (q15_t)0x7936, (q15_t)0xe350, (q15_t)0x7930, (q15_t)0xe345,\n    (q15_t)0x792b, (q15_t)0xe33a, (q15_t)0x7925, (q15_t)0xe32e, (q15_t)0x791f, (q15_t)0xe323, (q15_t)0x791a, (q15_t)0xe318,\n    (q15_t)0x7914, (q15_t)0xe30d, (q15_t)0x790e, (q15_t)0xe301, (q15_t)0x7909, (q15_t)0xe2f6, (q15_t)0x7903, (q15_t)0xe2eb,\n    (q15_t)0x78fd, (q15_t)0xe2e0, (q15_t)0x78f7, (q15_t)0xe2d5, (q15_t)0x78f2, (q15_t)0xe2ca, (q15_t)0x78ec, (q15_t)0xe2be,\n    (q15_t)0x78e6, (q15_t)0xe2b3, (q15_t)0x78e0, (q15_t)0xe2a8, (q15_t)0x78db, (q15_t)0xe29d, (q15_t)0x78d5, (q15_t)0xe292,\n    (q15_t)0x78cf, (q15_t)0xe287, (q15_t)0x78c9, (q15_t)0xe27b, (q15_t)0x78c3, (q15_t)0xe270, (q15_t)0x78be, (q15_t)0xe265,\n    (q15_t)0x78b8, (q15_t)0xe25a, (q15_t)0x78b2, (q15_t)0xe24f, (q15_t)0x78ac, (q15_t)0xe244, (q15_t)0x78a6, (q15_t)0xe239,\n    (q15_t)0x78a1, (q15_t)0xe22d, (q15_t)0x789b, (q15_t)0xe222, (q15_t)0x7895, (q15_t)0xe217, (q15_t)0x788f, (q15_t)0xe20c,\n    (q15_t)0x7889, (q15_t)0xe201, (q15_t)0x7883, (q15_t)0xe1f6, (q15_t)0x787d, (q15_t)0xe1eb, (q15_t)0x7877, (q15_t)0xe1e0,\n    (q15_t)0x7871, (q15_t)0xe1d5, (q15_t)0x786b, (q15_t)0xe1ca, (q15_t)0x7866, (q15_t)0xe1be, (q15_t)0x7860, (q15_t)0xe1b3,\n    (q15_t)0x785a, (q15_t)0xe1a8, (q15_t)0x7854, (q15_t)0xe19d, (q15_t)0x784e, (q15_t)0xe192, (q15_t)0x7848, (q15_t)0xe187,\n    (q15_t)0x7842, (q15_t)0xe17c, (q15_t)0x783c, (q15_t)0xe171, (q15_t)0x7836, (q15_t)0xe166, (q15_t)0x7830, (q15_t)0xe15b,\n    (q15_t)0x782a, (q15_t)0xe150, (q15_t)0x7824, (q15_t)0xe145, (q15_t)0x781e, (q15_t)0xe13a, (q15_t)0x7818, (q15_t)0xe12f,\n    (q15_t)0x7812, (q15_t)0xe124, (q15_t)0x780b, (q15_t)0xe119, (q15_t)0x7805, (q15_t)0xe10e, (q15_t)0x77ff, (q15_t)0xe103,\n    (q15_t)0x77f9, (q15_t)0xe0f8, (q15_t)0x77f3, (q15_t)0xe0ed, (q15_t)0x77ed, (q15_t)0xe0e2, (q15_t)0x77e7, (q15_t)0xe0d7,\n    (q15_t)0x77e1, (q15_t)0xe0cc, (q15_t)0x77db, (q15_t)0xe0c1, (q15_t)0x77d5, (q15_t)0xe0b6, (q15_t)0x77ce, (q15_t)0xe0ab,\n    (q15_t)0x77c8, (q15_t)0xe0a0, (q15_t)0x77c2, (q15_t)0xe095, (q15_t)0x77bc, (q15_t)0xe08a, (q15_t)0x77b6, (q15_t)0xe07f,\n    (q15_t)0x77b0, (q15_t)0xe074, (q15_t)0x77a9, (q15_t)0xe069, (q15_t)0x77a3, (q15_t)0xe05e, (q15_t)0x779d, (q15_t)0xe054,\n    (q15_t)0x7797, (q15_t)0xe049, (q15_t)0x7790, (q15_t)0xe03e, (q15_t)0x778a, (q15_t)0xe033, (q15_t)0x7784, (q15_t)0xe028,\n    (q15_t)0x777e, (q15_t)0xe01d, (q15_t)0x7777, (q15_t)0xe012, (q15_t)0x7771, (q15_t)0xe007, (q15_t)0x776b, (q15_t)0xdffc,\n    (q15_t)0x7765, (q15_t)0xdff1, (q15_t)0x775e, (q15_t)0xdfe7, (q15_t)0x7758, (q15_t)0xdfdc, (q15_t)0x7752, (q15_t)0xdfd1,\n    (q15_t)0x774b, (q15_t)0xdfc6, (q15_t)0x7745, (q15_t)0xdfbb, (q15_t)0x773f, (q15_t)0xdfb0, (q15_t)0x7738, (q15_t)0xdfa5,\n    (q15_t)0x7732, (q15_t)0xdf9b, (q15_t)0x772c, (q15_t)0xdf90, (q15_t)0x7725, (q15_t)0xdf85, (q15_t)0x771f, (q15_t)0xdf7a,\n    (q15_t)0x7718, (q15_t)0xdf6f, (q15_t)0x7712, (q15_t)0xdf65, (q15_t)0x770c, (q15_t)0xdf5a, (q15_t)0x7705, (q15_t)0xdf4f,\n    (q15_t)0x76ff, (q15_t)0xdf44, (q15_t)0x76f8, (q15_t)0xdf39, (q15_t)0x76f2, (q15_t)0xdf2f, (q15_t)0x76eb, (q15_t)0xdf24,\n    (q15_t)0x76e5, (q15_t)0xdf19, (q15_t)0x76df, (q15_t)0xdf0e, (q15_t)0x76d8, (q15_t)0xdf03, (q15_t)0x76d2, (q15_t)0xdef9,\n    (q15_t)0x76cb, (q15_t)0xdeee, (q15_t)0x76c5, (q15_t)0xdee3, (q15_t)0x76be, (q15_t)0xded8, (q15_t)0x76b8, (q15_t)0xdece,\n    (q15_t)0x76b1, (q15_t)0xdec3, (q15_t)0x76ab, (q15_t)0xdeb8, (q15_t)0x76a4, (q15_t)0xdead, (q15_t)0x769d, (q15_t)0xdea3,\n    (q15_t)0x7697, (q15_t)0xde98, (q15_t)0x7690, (q15_t)0xde8d, (q15_t)0x768a, (q15_t)0xde83, (q15_t)0x7683, (q15_t)0xde78,\n    (q15_t)0x767d, (q15_t)0xde6d, (q15_t)0x7676, (q15_t)0xde62, (q15_t)0x766f, (q15_t)0xde58, (q15_t)0x7669, (q15_t)0xde4d,\n    (q15_t)0x7662, (q15_t)0xde42, (q15_t)0x765c, (q15_t)0xde38, (q15_t)0x7655, (q15_t)0xde2d, (q15_t)0x764e, (q15_t)0xde22,\n    (q15_t)0x7648, (q15_t)0xde18, (q15_t)0x7641, (q15_t)0xde0d, (q15_t)0x763a, (q15_t)0xde02, (q15_t)0x7634, (q15_t)0xddf8,\n    (q15_t)0x762d, (q15_t)0xdded, (q15_t)0x7626, (q15_t)0xdde2, (q15_t)0x7620, (q15_t)0xddd8, (q15_t)0x7619, (q15_t)0xddcd,\n    (q15_t)0x7612, (q15_t)0xddc3, (q15_t)0x760b, (q15_t)0xddb8, (q15_t)0x7605, (q15_t)0xddad, (q15_t)0x75fe, (q15_t)0xdda3,\n    (q15_t)0x75f7, (q15_t)0xdd98, (q15_t)0x75f0, (q15_t)0xdd8e, (q15_t)0x75ea, (q15_t)0xdd83, (q15_t)0x75e3, (q15_t)0xdd78,\n    (q15_t)0x75dc, (q15_t)0xdd6e, (q15_t)0x75d5, (q15_t)0xdd63, (q15_t)0x75ce, (q15_t)0xdd59, (q15_t)0x75c8, (q15_t)0xdd4e,\n    (q15_t)0x75c1, (q15_t)0xdd44, (q15_t)0x75ba, (q15_t)0xdd39, (q15_t)0x75b3, (q15_t)0xdd2e, (q15_t)0x75ac, (q15_t)0xdd24,\n    (q15_t)0x75a5, (q15_t)0xdd19, (q15_t)0x759f, (q15_t)0xdd0f, (q15_t)0x7598, (q15_t)0xdd04, (q15_t)0x7591, (q15_t)0xdcfa,\n    (q15_t)0x758a, (q15_t)0xdcef, (q15_t)0x7583, (q15_t)0xdce5, (q15_t)0x757c, (q15_t)0xdcda, (q15_t)0x7575, (q15_t)0xdcd0,\n    (q15_t)0x756e, (q15_t)0xdcc5, (q15_t)0x7567, (q15_t)0xdcbb, (q15_t)0x7561, (q15_t)0xdcb0, (q15_t)0x755a, (q15_t)0xdca6,\n    (q15_t)0x7553, (q15_t)0xdc9b, (q15_t)0x754c, (q15_t)0xdc91, (q15_t)0x7545, (q15_t)0xdc86, (q15_t)0x753e, (q15_t)0xdc7c,\n    (q15_t)0x7537, (q15_t)0xdc72, (q15_t)0x7530, (q15_t)0xdc67, (q15_t)0x7529, (q15_t)0xdc5d, (q15_t)0x7522, (q15_t)0xdc52,\n    (q15_t)0x751b, (q15_t)0xdc48, (q15_t)0x7514, (q15_t)0xdc3d, (q15_t)0x750d, (q15_t)0xdc33, (q15_t)0x7506, (q15_t)0xdc29,\n    (q15_t)0x74ff, (q15_t)0xdc1e, (q15_t)0x74f8, (q15_t)0xdc14, (q15_t)0x74f1, (q15_t)0xdc09, (q15_t)0x74ea, (q15_t)0xdbff,\n    (q15_t)0x74e2, (q15_t)0xdbf5, (q15_t)0x74db, (q15_t)0xdbea, (q15_t)0x74d4, (q15_t)0xdbe0, (q15_t)0x74cd, (q15_t)0xdbd5,\n    (q15_t)0x74c6, (q15_t)0xdbcb, (q15_t)0x74bf, (q15_t)0xdbc1, (q15_t)0x74b8, (q15_t)0xdbb6, (q15_t)0x74b1, (q15_t)0xdbac,\n    (q15_t)0x74aa, (q15_t)0xdba2, (q15_t)0x74a2, (q15_t)0xdb97, (q15_t)0x749b, (q15_t)0xdb8d, (q15_t)0x7494, (q15_t)0xdb83,\n    (q15_t)0x748d, (q15_t)0xdb78, (q15_t)0x7486, (q15_t)0xdb6e, (q15_t)0x747f, (q15_t)0xdb64, (q15_t)0x7477, (q15_t)0xdb59,\n    (q15_t)0x7470, (q15_t)0xdb4f, (q15_t)0x7469, (q15_t)0xdb45, (q15_t)0x7462, (q15_t)0xdb3b, (q15_t)0x745b, (q15_t)0xdb30,\n    (q15_t)0x7453, (q15_t)0xdb26, (q15_t)0x744c, (q15_t)0xdb1c, (q15_t)0x7445, (q15_t)0xdb11, (q15_t)0x743e, (q15_t)0xdb07,\n    (q15_t)0x7436, (q15_t)0xdafd, (q15_t)0x742f, (q15_t)0xdaf3, (q15_t)0x7428, (q15_t)0xdae8, (q15_t)0x7420, (q15_t)0xdade,\n    (q15_t)0x7419, (q15_t)0xdad4, (q15_t)0x7412, (q15_t)0xdaca, (q15_t)0x740b, (q15_t)0xdabf, (q15_t)0x7403, (q15_t)0xdab5,\n    (q15_t)0x73fc, (q15_t)0xdaab, (q15_t)0x73f5, (q15_t)0xdaa1, (q15_t)0x73ed, (q15_t)0xda97, (q15_t)0x73e6, (q15_t)0xda8c,\n    (q15_t)0x73df, (q15_t)0xda82, (q15_t)0x73d7, (q15_t)0xda78, (q15_t)0x73d0, (q15_t)0xda6e, (q15_t)0x73c8, (q15_t)0xda64,\n    (q15_t)0x73c1, (q15_t)0xda5a, (q15_t)0x73ba, (q15_t)0xda4f, (q15_t)0x73b2, (q15_t)0xda45, (q15_t)0x73ab, (q15_t)0xda3b,\n    (q15_t)0x73a3, (q15_t)0xda31, (q15_t)0x739c, (q15_t)0xda27, (q15_t)0x7395, (q15_t)0xda1d, (q15_t)0x738d, (q15_t)0xda13,\n    (q15_t)0x7386, (q15_t)0xda08, (q15_t)0x737e, (q15_t)0xd9fe, (q15_t)0x7377, (q15_t)0xd9f4, (q15_t)0x736f, (q15_t)0xd9ea,\n    (q15_t)0x7368, (q15_t)0xd9e0, (q15_t)0x7360, (q15_t)0xd9d6, (q15_t)0x7359, (q15_t)0xd9cc, (q15_t)0x7351, (q15_t)0xd9c2,\n    (q15_t)0x734a, (q15_t)0xd9b8, (q15_t)0x7342, (q15_t)0xd9ae, (q15_t)0x733b, (q15_t)0xd9a4, (q15_t)0x7333, (q15_t)0xd99a,\n    (q15_t)0x732c, (q15_t)0xd98f, (q15_t)0x7324, (q15_t)0xd985, (q15_t)0x731d, (q15_t)0xd97b, (q15_t)0x7315, (q15_t)0xd971,\n    (q15_t)0x730d, (q15_t)0xd967, (q15_t)0x7306, (q15_t)0xd95d, (q15_t)0x72fe, (q15_t)0xd953, (q15_t)0x72f7, (q15_t)0xd949,\n    (q15_t)0x72ef, (q15_t)0xd93f, (q15_t)0x72e7, (q15_t)0xd935, (q15_t)0x72e0, (q15_t)0xd92b, (q15_t)0x72d8, (q15_t)0xd921,\n    (q15_t)0x72d0, (q15_t)0xd917, (q15_t)0x72c9, (q15_t)0xd90d, (q15_t)0x72c1, (q15_t)0xd903, (q15_t)0x72ba, (q15_t)0xd8f9,\n    (q15_t)0x72b2, (q15_t)0xd8ef, (q15_t)0x72aa, (q15_t)0xd8e6, (q15_t)0x72a3, (q15_t)0xd8dc, (q15_t)0x729b, (q15_t)0xd8d2,\n    (q15_t)0x7293, (q15_t)0xd8c8, (q15_t)0x728b, (q15_t)0xd8be, (q15_t)0x7284, (q15_t)0xd8b4, (q15_t)0x727c, (q15_t)0xd8aa,\n    (q15_t)0x7274, (q15_t)0xd8a0, (q15_t)0x726d, (q15_t)0xd896, (q15_t)0x7265, (q15_t)0xd88c, (q15_t)0x725d, (q15_t)0xd882,\n    (q15_t)0x7255, (q15_t)0xd878, (q15_t)0x724e, (q15_t)0xd86f, (q15_t)0x7246, (q15_t)0xd865, (q15_t)0x723e, (q15_t)0xd85b,\n    (q15_t)0x7236, (q15_t)0xd851, (q15_t)0x722e, (q15_t)0xd847, (q15_t)0x7227, (q15_t)0xd83d, (q15_t)0x721f, (q15_t)0xd833,\n    (q15_t)0x7217, (q15_t)0xd82a, (q15_t)0x720f, (q15_t)0xd820, (q15_t)0x7207, (q15_t)0xd816, (q15_t)0x71ff, (q15_t)0xd80c,\n    (q15_t)0x71f8, (q15_t)0xd802, (q15_t)0x71f0, (q15_t)0xd7f8, (q15_t)0x71e8, (q15_t)0xd7ef, (q15_t)0x71e0, (q15_t)0xd7e5,\n    (q15_t)0x71d8, (q15_t)0xd7db, (q15_t)0x71d0, (q15_t)0xd7d1, (q15_t)0x71c8, (q15_t)0xd7c8, (q15_t)0x71c0, (q15_t)0xd7be,\n    (q15_t)0x71b9, (q15_t)0xd7b4, (q15_t)0x71b1, (q15_t)0xd7aa, (q15_t)0x71a9, (q15_t)0xd7a0, (q15_t)0x71a1, (q15_t)0xd797,\n    (q15_t)0x7199, (q15_t)0xd78d, (q15_t)0x7191, (q15_t)0xd783, (q15_t)0x7189, (q15_t)0xd77a, (q15_t)0x7181, (q15_t)0xd770,\n    (q15_t)0x7179, (q15_t)0xd766, (q15_t)0x7171, (q15_t)0xd75c, (q15_t)0x7169, (q15_t)0xd753, (q15_t)0x7161, (q15_t)0xd749,\n    (q15_t)0x7159, (q15_t)0xd73f, (q15_t)0x7151, (q15_t)0xd736, (q15_t)0x7149, (q15_t)0xd72c, (q15_t)0x7141, (q15_t)0xd722,\n    (q15_t)0x7139, (q15_t)0xd719, (q15_t)0x7131, (q15_t)0xd70f, (q15_t)0x7129, (q15_t)0xd705, (q15_t)0x7121, (q15_t)0xd6fc,\n    (q15_t)0x7119, (q15_t)0xd6f2, (q15_t)0x7111, (q15_t)0xd6e8, (q15_t)0x7109, (q15_t)0xd6df, (q15_t)0x7101, (q15_t)0xd6d5,\n    (q15_t)0x70f9, (q15_t)0xd6cb, (q15_t)0x70f0, (q15_t)0xd6c2, (q15_t)0x70e8, (q15_t)0xd6b8, (q15_t)0x70e0, (q15_t)0xd6af,\n    (q15_t)0x70d8, (q15_t)0xd6a5, (q15_t)0x70d0, (q15_t)0xd69b, (q15_t)0x70c8, (q15_t)0xd692, (q15_t)0x70c0, (q15_t)0xd688,\n    (q15_t)0x70b8, (q15_t)0xd67f, (q15_t)0x70af, (q15_t)0xd675, (q15_t)0x70a7, (q15_t)0xd66c, (q15_t)0x709f, (q15_t)0xd662,\n    (q15_t)0x7097, (q15_t)0xd659, (q15_t)0x708f, (q15_t)0xd64f, (q15_t)0x7087, (q15_t)0xd645, (q15_t)0x707e, (q15_t)0xd63c,\n    (q15_t)0x7076, (q15_t)0xd632, (q15_t)0x706e, (q15_t)0xd629, (q15_t)0x7066, (q15_t)0xd61f, (q15_t)0x705d, (q15_t)0xd616,\n    (q15_t)0x7055, (q15_t)0xd60c, (q15_t)0x704d, (q15_t)0xd603, (q15_t)0x7045, (q15_t)0xd5f9, (q15_t)0x703c, (q15_t)0xd5f0,\n    (q15_t)0x7034, (q15_t)0xd5e6, (q15_t)0x702c, (q15_t)0xd5dd, (q15_t)0x7024, (q15_t)0xd5d4, (q15_t)0x701b, (q15_t)0xd5ca,\n    (q15_t)0x7013, (q15_t)0xd5c1, (q15_t)0x700b, (q15_t)0xd5b7, (q15_t)0x7002, (q15_t)0xd5ae, (q15_t)0x6ffa, (q15_t)0xd5a4,\n    (q15_t)0x6ff2, (q15_t)0xd59b, (q15_t)0x6fea, (q15_t)0xd592, (q15_t)0x6fe1, (q15_t)0xd588, (q15_t)0x6fd9, (q15_t)0xd57f,\n    (q15_t)0x6fd0, (q15_t)0xd575, (q15_t)0x6fc8, (q15_t)0xd56c, (q15_t)0x6fc0, (q15_t)0xd563, (q15_t)0x6fb7, (q15_t)0xd559,\n    (q15_t)0x6faf, (q15_t)0xd550, (q15_t)0x6fa7, (q15_t)0xd547, (q15_t)0x6f9e, (q15_t)0xd53d, (q15_t)0x6f96, (q15_t)0xd534,\n    (q15_t)0x6f8d, (q15_t)0xd52a, (q15_t)0x6f85, (q15_t)0xd521, (q15_t)0x6f7d, (q15_t)0xd518, (q15_t)0x6f74, (q15_t)0xd50e,\n    (q15_t)0x6f6c, (q15_t)0xd505, (q15_t)0x6f63, (q15_t)0xd4fc, (q15_t)0x6f5b, (q15_t)0xd4f3, (q15_t)0x6f52, (q15_t)0xd4e9,\n    (q15_t)0x6f4a, (q15_t)0xd4e0, (q15_t)0x6f41, (q15_t)0xd4d7, (q15_t)0x6f39, (q15_t)0xd4cd, (q15_t)0x6f30, (q15_t)0xd4c4,\n    (q15_t)0x6f28, (q15_t)0xd4bb, (q15_t)0x6f20, (q15_t)0xd4b2, (q15_t)0x6f17, (q15_t)0xd4a8, (q15_t)0x6f0e, (q15_t)0xd49f,\n    (q15_t)0x6f06, (q15_t)0xd496, (q15_t)0x6efd, (q15_t)0xd48d, (q15_t)0x6ef5, (q15_t)0xd483, (q15_t)0x6eec, (q15_t)0xd47a,\n    (q15_t)0x6ee4, (q15_t)0xd471, (q15_t)0x6edb, (q15_t)0xd468, (q15_t)0x6ed3, (q15_t)0xd45f, (q15_t)0x6eca, (q15_t)0xd455,\n    (q15_t)0x6ec2, (q15_t)0xd44c, (q15_t)0x6eb9, (q15_t)0xd443, (q15_t)0x6eb0, (q15_t)0xd43a, (q15_t)0x6ea8, (q15_t)0xd431,\n    (q15_t)0x6e9f, (q15_t)0xd428, (q15_t)0x6e97, (q15_t)0xd41e, (q15_t)0x6e8e, (q15_t)0xd415, (q15_t)0x6e85, (q15_t)0xd40c,\n    (q15_t)0x6e7d, (q15_t)0xd403, (q15_t)0x6e74, (q15_t)0xd3fa, (q15_t)0x6e6b, (q15_t)0xd3f1, (q15_t)0x6e63, (q15_t)0xd3e8,\n    (q15_t)0x6e5a, (q15_t)0xd3df, (q15_t)0x6e51, (q15_t)0xd3d5, (q15_t)0x6e49, (q15_t)0xd3cc, (q15_t)0x6e40, (q15_t)0xd3c3,\n    (q15_t)0x6e37, (q15_t)0xd3ba, (q15_t)0x6e2f, (q15_t)0xd3b1, (q15_t)0x6e26, (q15_t)0xd3a8, (q15_t)0x6e1d, (q15_t)0xd39f,\n    (q15_t)0x6e15, (q15_t)0xd396, (q15_t)0x6e0c, (q15_t)0xd38d, (q15_t)0x6e03, (q15_t)0xd384, (q15_t)0x6dfa, (q15_t)0xd37b,\n    (q15_t)0x6df2, (q15_t)0xd372, (q15_t)0x6de9, (q15_t)0xd369, (q15_t)0x6de0, (q15_t)0xd360, (q15_t)0x6dd7, (q15_t)0xd357,\n    (q15_t)0x6dcf, (q15_t)0xd34e, (q15_t)0x6dc6, (q15_t)0xd345, (q15_t)0x6dbd, (q15_t)0xd33c, (q15_t)0x6db4, (q15_t)0xd333,\n    (q15_t)0x6dab, (q15_t)0xd32a, (q15_t)0x6da3, (q15_t)0xd321, (q15_t)0x6d9a, (q15_t)0xd318, (q15_t)0x6d91, (q15_t)0xd30f,\n    (q15_t)0x6d88, (q15_t)0xd306, (q15_t)0x6d7f, (q15_t)0xd2fd, (q15_t)0x6d76, (q15_t)0xd2f4, (q15_t)0x6d6e, (q15_t)0xd2eb,\n    (q15_t)0x6d65, (q15_t)0xd2e2, (q15_t)0x6d5c, (q15_t)0xd2d9, (q15_t)0x6d53, (q15_t)0xd2d1, (q15_t)0x6d4a, (q15_t)0xd2c8,\n    (q15_t)0x6d41, (q15_t)0xd2bf, (q15_t)0x6d38, (q15_t)0xd2b6, (q15_t)0x6d2f, (q15_t)0xd2ad, (q15_t)0x6d27, (q15_t)0xd2a4,\n    (q15_t)0x6d1e, (q15_t)0xd29b, (q15_t)0x6d15, (q15_t)0xd292, (q15_t)0x6d0c, (q15_t)0xd28a, (q15_t)0x6d03, (q15_t)0xd281,\n    (q15_t)0x6cfa, (q15_t)0xd278, (q15_t)0x6cf1, (q15_t)0xd26f, (q15_t)0x6ce8, (q15_t)0xd266, (q15_t)0x6cdf, (q15_t)0xd25d,\n    (q15_t)0x6cd6, (q15_t)0xd255, (q15_t)0x6ccd, (q15_t)0xd24c, (q15_t)0x6cc4, (q15_t)0xd243, (q15_t)0x6cbb, (q15_t)0xd23a,\n    (q15_t)0x6cb2, (q15_t)0xd231, (q15_t)0x6ca9, (q15_t)0xd229, (q15_t)0x6ca0, (q15_t)0xd220, (q15_t)0x6c97, (q15_t)0xd217,\n    (q15_t)0x6c8e, (q15_t)0xd20e, (q15_t)0x6c85, (q15_t)0xd206, (q15_t)0x6c7c, (q15_t)0xd1fd, (q15_t)0x6c73, (q15_t)0xd1f4,\n    (q15_t)0x6c6a, (q15_t)0xd1eb, (q15_t)0x6c61, (q15_t)0xd1e3, (q15_t)0x6c58, (q15_t)0xd1da, (q15_t)0x6c4f, (q15_t)0xd1d1,\n    (q15_t)0x6c46, (q15_t)0xd1c9, (q15_t)0x6c3d, (q15_t)0xd1c0, (q15_t)0x6c34, (q15_t)0xd1b7, (q15_t)0x6c2b, (q15_t)0xd1af,\n    (q15_t)0x6c21, (q15_t)0xd1a6, (q15_t)0x6c18, (q15_t)0xd19d, (q15_t)0x6c0f, (q15_t)0xd195, (q15_t)0x6c06, (q15_t)0xd18c,\n    (q15_t)0x6bfd, (q15_t)0xd183, (q15_t)0x6bf4, (q15_t)0xd17b, (q15_t)0x6beb, (q15_t)0xd172, (q15_t)0x6be2, (q15_t)0xd169,\n    (q15_t)0x6bd8, (q15_t)0xd161, (q15_t)0x6bcf, (q15_t)0xd158, (q15_t)0x6bc6, (q15_t)0xd150, (q15_t)0x6bbd, (q15_t)0xd147,\n    (q15_t)0x6bb4, (q15_t)0xd13e, (q15_t)0x6bab, (q15_t)0xd136, (q15_t)0x6ba1, (q15_t)0xd12d, (q15_t)0x6b98, (q15_t)0xd125,\n    (q15_t)0x6b8f, (q15_t)0xd11c, (q15_t)0x6b86, (q15_t)0xd114, (q15_t)0x6b7d, (q15_t)0xd10b, (q15_t)0x6b73, (q15_t)0xd103,\n    (q15_t)0x6b6a, (q15_t)0xd0fa, (q15_t)0x6b61, (q15_t)0xd0f2, (q15_t)0x6b58, (q15_t)0xd0e9, (q15_t)0x6b4e, (q15_t)0xd0e0,\n    (q15_t)0x6b45, (q15_t)0xd0d8, (q15_t)0x6b3c, (q15_t)0xd0d0, (q15_t)0x6b33, (q15_t)0xd0c7, (q15_t)0x6b29, (q15_t)0xd0bf,\n    (q15_t)0x6b20, (q15_t)0xd0b6, (q15_t)0x6b17, (q15_t)0xd0ae, (q15_t)0x6b0d, (q15_t)0xd0a5, (q15_t)0x6b04, (q15_t)0xd09d,\n    (q15_t)0x6afb, (q15_t)0xd094, (q15_t)0x6af2, (q15_t)0xd08c, (q15_t)0x6ae8, (q15_t)0xd083, (q15_t)0x6adf, (q15_t)0xd07b,\n    (q15_t)0x6ad6, (q15_t)0xd073, (q15_t)0x6acc, (q15_t)0xd06a, (q15_t)0x6ac3, (q15_t)0xd062, (q15_t)0x6ab9, (q15_t)0xd059,\n    (q15_t)0x6ab0, (q15_t)0xd051, (q15_t)0x6aa7, (q15_t)0xd049, (q15_t)0x6a9d, (q15_t)0xd040, (q15_t)0x6a94, (q15_t)0xd038,\n    (q15_t)0x6a8b, (q15_t)0xd030, (q15_t)0x6a81, (q15_t)0xd027, (q15_t)0x6a78, (q15_t)0xd01f, (q15_t)0x6a6e, (q15_t)0xd016,\n    (q15_t)0x6a65, (q15_t)0xd00e, (q15_t)0x6a5c, (q15_t)0xd006, (q15_t)0x6a52, (q15_t)0xcffe, (q15_t)0x6a49, (q15_t)0xcff5,\n    (q15_t)0x6a3f, (q15_t)0xcfed, (q15_t)0x6a36, (q15_t)0xcfe5, (q15_t)0x6a2c, (q15_t)0xcfdc, (q15_t)0x6a23, (q15_t)0xcfd4,\n    (q15_t)0x6a1a, (q15_t)0xcfcc, (q15_t)0x6a10, (q15_t)0xcfc4, (q15_t)0x6a07, (q15_t)0xcfbb, (q15_t)0x69fd, (q15_t)0xcfb3,\n    (q15_t)0x69f4, (q15_t)0xcfab, (q15_t)0x69ea, (q15_t)0xcfa3, (q15_t)0x69e1, (q15_t)0xcf9a, (q15_t)0x69d7, (q15_t)0xcf92,\n    (q15_t)0x69ce, (q15_t)0xcf8a, (q15_t)0x69c4, (q15_t)0xcf82, (q15_t)0x69bb, (q15_t)0xcf79, (q15_t)0x69b1, (q15_t)0xcf71,\n    (q15_t)0x69a7, (q15_t)0xcf69, (q15_t)0x699e, (q15_t)0xcf61, (q15_t)0x6994, (q15_t)0xcf59, (q15_t)0x698b, (q15_t)0xcf51,\n    (q15_t)0x6981, (q15_t)0xcf48, (q15_t)0x6978, (q15_t)0xcf40, (q15_t)0x696e, (q15_t)0xcf38, (q15_t)0x6965, (q15_t)0xcf30,\n    (q15_t)0x695b, (q15_t)0xcf28, (q15_t)0x6951, (q15_t)0xcf20, (q15_t)0x6948, (q15_t)0xcf18, (q15_t)0x693e, (q15_t)0xcf10,\n    (q15_t)0x6935, (q15_t)0xcf07, (q15_t)0x692b, (q15_t)0xceff, (q15_t)0x6921, (q15_t)0xcef7, (q15_t)0x6918, (q15_t)0xceef,\n    (q15_t)0x690e, (q15_t)0xcee7, (q15_t)0x6904, (q15_t)0xcedf, (q15_t)0x68fb, (q15_t)0xced7, (q15_t)0x68f1, (q15_t)0xcecf,\n    (q15_t)0x68e7, (q15_t)0xcec7, (q15_t)0x68de, (q15_t)0xcebf, (q15_t)0x68d4, (q15_t)0xceb7, (q15_t)0x68ca, (q15_t)0xceaf,\n    (q15_t)0x68c1, (q15_t)0xcea7, (q15_t)0x68b7, (q15_t)0xce9f, (q15_t)0x68ad, (q15_t)0xce97, (q15_t)0x68a4, (q15_t)0xce8f,\n    (q15_t)0x689a, (q15_t)0xce87, (q15_t)0x6890, (q15_t)0xce7f, (q15_t)0x6886, (q15_t)0xce77, (q15_t)0x687d, (q15_t)0xce6f,\n    (q15_t)0x6873, (q15_t)0xce67, (q15_t)0x6869, (q15_t)0xce5f, (q15_t)0x6860, (q15_t)0xce57, (q15_t)0x6856, (q15_t)0xce4f,\n    (q15_t)0x684c, (q15_t)0xce47, (q15_t)0x6842, (q15_t)0xce40, (q15_t)0x6838, (q15_t)0xce38, (q15_t)0x682f, (q15_t)0xce30,\n    (q15_t)0x6825, (q15_t)0xce28, (q15_t)0x681b, (q15_t)0xce20, (q15_t)0x6811, (q15_t)0xce18, (q15_t)0x6808, (q15_t)0xce10,\n    (q15_t)0x67fe, (q15_t)0xce08, (q15_t)0x67f4, (q15_t)0xce01, (q15_t)0x67ea, (q15_t)0xcdf9, (q15_t)0x67e0, (q15_t)0xcdf1,\n    (q15_t)0x67d6, (q15_t)0xcde9, (q15_t)0x67cd, (q15_t)0xcde1, (q15_t)0x67c3, (q15_t)0xcdd9, (q15_t)0x67b9, (q15_t)0xcdd2,\n    (q15_t)0x67af, (q15_t)0xcdca, (q15_t)0x67a5, (q15_t)0xcdc2, (q15_t)0x679b, (q15_t)0xcdba, (q15_t)0x6791, (q15_t)0xcdb2,\n    (q15_t)0x6788, (q15_t)0xcdab, (q15_t)0x677e, (q15_t)0xcda3, (q15_t)0x6774, (q15_t)0xcd9b, (q15_t)0x676a, (q15_t)0xcd93,\n    (q15_t)0x6760, (q15_t)0xcd8c, (q15_t)0x6756, (q15_t)0xcd84, (q15_t)0x674c, (q15_t)0xcd7c, (q15_t)0x6742, (q15_t)0xcd75,\n    (q15_t)0x6738, (q15_t)0xcd6d, (q15_t)0x672e, (q15_t)0xcd65, (q15_t)0x6724, (q15_t)0xcd5d, (q15_t)0x671a, (q15_t)0xcd56,\n    (q15_t)0x6711, (q15_t)0xcd4e, (q15_t)0x6707, (q15_t)0xcd46, (q15_t)0x66fd, (q15_t)0xcd3f, (q15_t)0x66f3, (q15_t)0xcd37,\n    (q15_t)0x66e9, (q15_t)0xcd30, (q15_t)0x66df, (q15_t)0xcd28, (q15_t)0x66d5, (q15_t)0xcd20, (q15_t)0x66cb, (q15_t)0xcd19,\n    (q15_t)0x66c1, (q15_t)0xcd11, (q15_t)0x66b7, (q15_t)0xcd09, (q15_t)0x66ad, (q15_t)0xcd02, (q15_t)0x66a3, (q15_t)0xccfa,\n    (q15_t)0x6699, (q15_t)0xccf3, (q15_t)0x668f, (q15_t)0xcceb, (q15_t)0x6685, (q15_t)0xcce3, (q15_t)0x667b, (q15_t)0xccdc,\n    (q15_t)0x6671, (q15_t)0xccd4, (q15_t)0x6666, (q15_t)0xcccd, (q15_t)0x665c, (q15_t)0xccc5, (q15_t)0x6652, (q15_t)0xccbe,\n    (q15_t)0x6648, (q15_t)0xccb6, (q15_t)0x663e, (q15_t)0xccaf, (q15_t)0x6634, (q15_t)0xcca7, (q15_t)0x662a, (q15_t)0xcca0,\n    (q15_t)0x6620, (q15_t)0xcc98, (q15_t)0x6616, (q15_t)0xcc91, (q15_t)0x660c, (q15_t)0xcc89, (q15_t)0x6602, (q15_t)0xcc82,\n    (q15_t)0x65f8, (q15_t)0xcc7a, (q15_t)0x65ed, (q15_t)0xcc73, (q15_t)0x65e3, (q15_t)0xcc6b, (q15_t)0x65d9, (q15_t)0xcc64,\n    (q15_t)0x65cf, (q15_t)0xcc5d, (q15_t)0x65c5, (q15_t)0xcc55, (q15_t)0x65bb, (q15_t)0xcc4e, (q15_t)0x65b1, (q15_t)0xcc46,\n    (q15_t)0x65a6, (q15_t)0xcc3f, (q15_t)0x659c, (q15_t)0xcc38, (q15_t)0x6592, (q15_t)0xcc30, (q15_t)0x6588, (q15_t)0xcc29,\n    (q15_t)0x657e, (q15_t)0xcc21, (q15_t)0x6574, (q15_t)0xcc1a, (q15_t)0x6569, (q15_t)0xcc13, (q15_t)0x655f, (q15_t)0xcc0b,\n    (q15_t)0x6555, (q15_t)0xcc04, (q15_t)0x654b, (q15_t)0xcbfd, (q15_t)0x6541, (q15_t)0xcbf5, (q15_t)0x6536, (q15_t)0xcbee,\n    (q15_t)0x652c, (q15_t)0xcbe7, (q15_t)0x6522, (q15_t)0xcbe0, (q15_t)0x6518, (q15_t)0xcbd8, (q15_t)0x650d, (q15_t)0xcbd1,\n    (q15_t)0x6503, (q15_t)0xcbca, (q15_t)0x64f9, (q15_t)0xcbc2, (q15_t)0x64ef, (q15_t)0xcbbb, (q15_t)0x64e4, (q15_t)0xcbb4,\n    (q15_t)0x64da, (q15_t)0xcbad, (q15_t)0x64d0, (q15_t)0xcba5, (q15_t)0x64c5, (q15_t)0xcb9e, (q15_t)0x64bb, (q15_t)0xcb97,\n    (q15_t)0x64b1, (q15_t)0xcb90, (q15_t)0x64a7, (q15_t)0xcb89, (q15_t)0x649c, (q15_t)0xcb81, (q15_t)0x6492, (q15_t)0xcb7a,\n    (q15_t)0x6488, (q15_t)0xcb73, (q15_t)0x647d, (q15_t)0xcb6c, (q15_t)0x6473, (q15_t)0xcb65, (q15_t)0x6469, (q15_t)0xcb5e,\n    (q15_t)0x645e, (q15_t)0xcb56, (q15_t)0x6454, (q15_t)0xcb4f, (q15_t)0x644a, (q15_t)0xcb48, (q15_t)0x643f, (q15_t)0xcb41,\n    (q15_t)0x6435, (q15_t)0xcb3a, (q15_t)0x642b, (q15_t)0xcb33, (q15_t)0x6420, (q15_t)0xcb2c, (q15_t)0x6416, (q15_t)0xcb25,\n    (q15_t)0x640b, (q15_t)0xcb1e, (q15_t)0x6401, (q15_t)0xcb16, (q15_t)0x63f7, (q15_t)0xcb0f, (q15_t)0x63ec, (q15_t)0xcb08,\n    (q15_t)0x63e2, (q15_t)0xcb01, (q15_t)0x63d7, (q15_t)0xcafa, (q15_t)0x63cd, (q15_t)0xcaf3, (q15_t)0x63c3, (q15_t)0xcaec,\n    (q15_t)0x63b8, (q15_t)0xcae5, (q15_t)0x63ae, (q15_t)0xcade, (q15_t)0x63a3, (q15_t)0xcad7, (q15_t)0x6399, (q15_t)0xcad0,\n    (q15_t)0x638e, (q15_t)0xcac9, (q15_t)0x6384, (q15_t)0xcac2, (q15_t)0x637a, (q15_t)0xcabb, (q15_t)0x636f, (q15_t)0xcab4,\n    (q15_t)0x6365, (q15_t)0xcaad, (q15_t)0x635a, (q15_t)0xcaa6, (q15_t)0x6350, (q15_t)0xca9f, (q15_t)0x6345, (q15_t)0xca99,\n    (q15_t)0x633b, (q15_t)0xca92, (q15_t)0x6330, (q15_t)0xca8b, (q15_t)0x6326, (q15_t)0xca84, (q15_t)0x631b, (q15_t)0xca7d,\n    (q15_t)0x6311, (q15_t)0xca76, (q15_t)0x6306, (q15_t)0xca6f, (q15_t)0x62fc, (q15_t)0xca68, (q15_t)0x62f1, (q15_t)0xca61,\n    (q15_t)0x62e7, (q15_t)0xca5b, (q15_t)0x62dc, (q15_t)0xca54, (q15_t)0x62d2, (q15_t)0xca4d, (q15_t)0x62c7, (q15_t)0xca46,\n    (q15_t)0x62bc, (q15_t)0xca3f, (q15_t)0x62b2, (q15_t)0xca38, (q15_t)0x62a7, (q15_t)0xca32, (q15_t)0x629d, (q15_t)0xca2b,\n    (q15_t)0x6292, (q15_t)0xca24, (q15_t)0x6288, (q15_t)0xca1d, (q15_t)0x627d, (q15_t)0xca16, (q15_t)0x6272, (q15_t)0xca10,\n    (q15_t)0x6268, (q15_t)0xca09, (q15_t)0x625d, (q15_t)0xca02, (q15_t)0x6253, (q15_t)0xc9fb, (q15_t)0x6248, (q15_t)0xc9f5,\n    (q15_t)0x623d, (q15_t)0xc9ee, (q15_t)0x6233, (q15_t)0xc9e7, (q15_t)0x6228, (q15_t)0xc9e0, (q15_t)0x621e, (q15_t)0xc9da,\n    (q15_t)0x6213, (q15_t)0xc9d3, (q15_t)0x6208, (q15_t)0xc9cc, (q15_t)0x61fe, (q15_t)0xc9c6, (q15_t)0x61f3, (q15_t)0xc9bf,\n    (q15_t)0x61e8, (q15_t)0xc9b8, (q15_t)0x61de, (q15_t)0xc9b2, (q15_t)0x61d3, (q15_t)0xc9ab, (q15_t)0x61c8, (q15_t)0xc9a4,\n    (q15_t)0x61be, (q15_t)0xc99e, (q15_t)0x61b3, (q15_t)0xc997, (q15_t)0x61a8, (q15_t)0xc991, (q15_t)0x619e, (q15_t)0xc98a,\n    (q15_t)0x6193, (q15_t)0xc983, (q15_t)0x6188, (q15_t)0xc97d, (q15_t)0x617d, (q15_t)0xc976, (q15_t)0x6173, (q15_t)0xc970,\n    (q15_t)0x6168, (q15_t)0xc969, (q15_t)0x615d, (q15_t)0xc963, (q15_t)0x6153, (q15_t)0xc95c, (q15_t)0x6148, (q15_t)0xc955,\n    (q15_t)0x613d, (q15_t)0xc94f, (q15_t)0x6132, (q15_t)0xc948, (q15_t)0x6128, (q15_t)0xc942, (q15_t)0x611d, (q15_t)0xc93b,\n    (q15_t)0x6112, (q15_t)0xc935, (q15_t)0x6107, (q15_t)0xc92e, (q15_t)0x60fd, (q15_t)0xc928, (q15_t)0x60f2, (q15_t)0xc921,\n    (q15_t)0x60e7, (q15_t)0xc91b, (q15_t)0x60dc, (q15_t)0xc915, (q15_t)0x60d1, (q15_t)0xc90e, (q15_t)0x60c7, (q15_t)0xc908,\n    (q15_t)0x60bc, (q15_t)0xc901, (q15_t)0x60b1, (q15_t)0xc8fb, (q15_t)0x60a6, (q15_t)0xc8f4, (q15_t)0x609b, (q15_t)0xc8ee,\n    (q15_t)0x6091, (q15_t)0xc8e8, (q15_t)0x6086, (q15_t)0xc8e1, (q15_t)0x607b, (q15_t)0xc8db, (q15_t)0x6070, (q15_t)0xc8d4,\n    (q15_t)0x6065, (q15_t)0xc8ce, (q15_t)0x605b, (q15_t)0xc8c8, (q15_t)0x6050, (q15_t)0xc8c1, (q15_t)0x6045, (q15_t)0xc8bb,\n    (q15_t)0x603a, (q15_t)0xc8b5, (q15_t)0x602f, (q15_t)0xc8ae, (q15_t)0x6024, (q15_t)0xc8a8, (q15_t)0x6019, (q15_t)0xc8a2,\n    (q15_t)0x600f, (q15_t)0xc89b, (q15_t)0x6004, (q15_t)0xc895, (q15_t)0x5ff9, (q15_t)0xc88f, (q15_t)0x5fee, (q15_t)0xc889,\n    (q15_t)0x5fe3, (q15_t)0xc882, (q15_t)0x5fd8, (q15_t)0xc87c, (q15_t)0x5fcd, (q15_t)0xc876, (q15_t)0x5fc2, (q15_t)0xc870,\n    (q15_t)0x5fb7, (q15_t)0xc869, (q15_t)0x5fac, (q15_t)0xc863, (q15_t)0x5fa2, (q15_t)0xc85d, (q15_t)0x5f97, (q15_t)0xc857,\n    (q15_t)0x5f8c, (q15_t)0xc850, (q15_t)0x5f81, (q15_t)0xc84a, (q15_t)0x5f76, (q15_t)0xc844, (q15_t)0x5f6b, (q15_t)0xc83e,\n    (q15_t)0x5f60, (q15_t)0xc838, (q15_t)0x5f55, (q15_t)0xc832, (q15_t)0x5f4a, (q15_t)0xc82b, (q15_t)0x5f3f, (q15_t)0xc825,\n    (q15_t)0x5f34, (q15_t)0xc81f, (q15_t)0x5f29, (q15_t)0xc819, (q15_t)0x5f1e, (q15_t)0xc813, (q15_t)0x5f13, (q15_t)0xc80d,\n    (q15_t)0x5f08, (q15_t)0xc807, (q15_t)0x5efd, (q15_t)0xc801, (q15_t)0x5ef2, (q15_t)0xc7fb, (q15_t)0x5ee7, (q15_t)0xc7f5,\n    (q15_t)0x5edc, (q15_t)0xc7ee, (q15_t)0x5ed1, (q15_t)0xc7e8, (q15_t)0x5ec6, (q15_t)0xc7e2, (q15_t)0x5ebb, (q15_t)0xc7dc,\n    (q15_t)0x5eb0, (q15_t)0xc7d6, (q15_t)0x5ea5, (q15_t)0xc7d0, (q15_t)0x5e9a, (q15_t)0xc7ca, (q15_t)0x5e8f, (q15_t)0xc7c4,\n    (q15_t)0x5e84, (q15_t)0xc7be, (q15_t)0x5e79, (q15_t)0xc7b8, (q15_t)0x5e6e, (q15_t)0xc7b2, (q15_t)0x5e63, (q15_t)0xc7ac,\n    (q15_t)0x5e58, (q15_t)0xc7a6, (q15_t)0x5e4d, (q15_t)0xc7a0, (q15_t)0x5e42, (q15_t)0xc79a, (q15_t)0x5e36, (q15_t)0xc795,\n    (q15_t)0x5e2b, (q15_t)0xc78f, (q15_t)0x5e20, (q15_t)0xc789, (q15_t)0x5e15, (q15_t)0xc783, (q15_t)0x5e0a, (q15_t)0xc77d,\n    (q15_t)0x5dff, (q15_t)0xc777, (q15_t)0x5df4, (q15_t)0xc771, (q15_t)0x5de9, (q15_t)0xc76b, (q15_t)0x5dde, (q15_t)0xc765,\n    (q15_t)0x5dd3, (q15_t)0xc75f, (q15_t)0x5dc7, (q15_t)0xc75a, (q15_t)0x5dbc, (q15_t)0xc754, (q15_t)0x5db1, (q15_t)0xc74e,\n    (q15_t)0x5da6, (q15_t)0xc748, (q15_t)0x5d9b, (q15_t)0xc742, (q15_t)0x5d90, (q15_t)0xc73d, (q15_t)0x5d85, (q15_t)0xc737,\n    (q15_t)0x5d79, (q15_t)0xc731, (q15_t)0x5d6e, (q15_t)0xc72b, (q15_t)0x5d63, (q15_t)0xc725, (q15_t)0x5d58, (q15_t)0xc720,\n    (q15_t)0x5d4d, (q15_t)0xc71a, (q15_t)0x5d42, (q15_t)0xc714, (q15_t)0x5d36, (q15_t)0xc70e, (q15_t)0x5d2b, (q15_t)0xc709,\n    (q15_t)0x5d20, (q15_t)0xc703, (q15_t)0x5d15, (q15_t)0xc6fd, (q15_t)0x5d0a, (q15_t)0xc6f7, (q15_t)0x5cff, (q15_t)0xc6f2,\n    (q15_t)0x5cf3, (q15_t)0xc6ec, (q15_t)0x5ce8, (q15_t)0xc6e6, (q15_t)0x5cdd, (q15_t)0xc6e1, (q15_t)0x5cd2, (q15_t)0xc6db,\n    (q15_t)0x5cc6, (q15_t)0xc6d5, (q15_t)0x5cbb, (q15_t)0xc6d0, (q15_t)0x5cb0, (q15_t)0xc6ca, (q15_t)0x5ca5, (q15_t)0xc6c5,\n    (q15_t)0x5c99, (q15_t)0xc6bf, (q15_t)0x5c8e, (q15_t)0xc6b9, (q15_t)0x5c83, (q15_t)0xc6b4, (q15_t)0x5c78, (q15_t)0xc6ae,\n    (q15_t)0x5c6c, (q15_t)0xc6a8, (q15_t)0x5c61, (q15_t)0xc6a3, (q15_t)0x5c56, (q15_t)0xc69d, (q15_t)0x5c4b, (q15_t)0xc698,\n    (q15_t)0x5c3f, (q15_t)0xc692, (q15_t)0x5c34, (q15_t)0xc68d, (q15_t)0x5c29, (q15_t)0xc687, (q15_t)0x5c1e, (q15_t)0xc682,\n    (q15_t)0x5c12, (q15_t)0xc67c, (q15_t)0x5c07, (q15_t)0xc677, (q15_t)0x5bfc, (q15_t)0xc671, (q15_t)0x5bf0, (q15_t)0xc66c,\n    (q15_t)0x5be5, (q15_t)0xc666, (q15_t)0x5bda, (q15_t)0xc661, (q15_t)0x5bce, (q15_t)0xc65b, (q15_t)0x5bc3, (q15_t)0xc656,\n    (q15_t)0x5bb8, (q15_t)0xc650, (q15_t)0x5bac, (q15_t)0xc64b, (q15_t)0x5ba1, (q15_t)0xc645, (q15_t)0x5b96, (q15_t)0xc640,\n    (q15_t)0x5b8a, (q15_t)0xc63b, (q15_t)0x5b7f, (q15_t)0xc635, (q15_t)0x5b74, (q15_t)0xc630, (q15_t)0x5b68, (q15_t)0xc62a,\n    (q15_t)0x5b5d, (q15_t)0xc625, (q15_t)0x5b52, (q15_t)0xc620, (q15_t)0x5b46, (q15_t)0xc61a, (q15_t)0x5b3b, (q15_t)0xc615,\n    (q15_t)0x5b30, (q15_t)0xc610, (q15_t)0x5b24, (q15_t)0xc60a, (q15_t)0x5b19, (q15_t)0xc605, (q15_t)0x5b0d, (q15_t)0xc600,\n    (q15_t)0x5b02, (q15_t)0xc5fa, (q15_t)0x5af7, (q15_t)0xc5f5, (q15_t)0x5aeb, (q15_t)0xc5f0, (q15_t)0x5ae0, (q15_t)0xc5ea,\n    (q15_t)0x5ad4, (q15_t)0xc5e5, (q15_t)0x5ac9, (q15_t)0xc5e0, (q15_t)0x5abe, (q15_t)0xc5db, (q15_t)0x5ab2, (q15_t)0xc5d5,\n    (q15_t)0x5aa7, (q15_t)0xc5d0, (q15_t)0x5a9b, (q15_t)0xc5cb, (q15_t)0x5a90, (q15_t)0xc5c6, (q15_t)0x5a84, (q15_t)0xc5c1,\n    (q15_t)0x5a79, (q15_t)0xc5bb, (q15_t)0x5a6e, (q15_t)0xc5b6, (q15_t)0x5a62, (q15_t)0xc5b1, (q15_t)0x5a57, (q15_t)0xc5ac,\n    (q15_t)0x5a4b, (q15_t)0xc5a7, (q15_t)0x5a40, (q15_t)0xc5a1, (q15_t)0x5a34, (q15_t)0xc59c, (q15_t)0x5a29, (q15_t)0xc597,\n    (q15_t)0x5a1d, (q15_t)0xc592, (q15_t)0x5a12, (q15_t)0xc58d, (q15_t)0x5a06, (q15_t)0xc588, (q15_t)0x59fb, (q15_t)0xc583,\n    (q15_t)0x59ef, (q15_t)0xc57e, (q15_t)0x59e4, (q15_t)0xc578, (q15_t)0x59d8, (q15_t)0xc573, (q15_t)0x59cd, (q15_t)0xc56e,\n    (q15_t)0x59c1, (q15_t)0xc569, (q15_t)0x59b6, (q15_t)0xc564, (q15_t)0x59aa, (q15_t)0xc55f, (q15_t)0x599f, (q15_t)0xc55a,\n    (q15_t)0x5993, (q15_t)0xc555, (q15_t)0x5988, (q15_t)0xc550, (q15_t)0x597c, (q15_t)0xc54b, (q15_t)0x5971, (q15_t)0xc546,\n    (q15_t)0x5965, (q15_t)0xc541, (q15_t)0x595a, (q15_t)0xc53c, (q15_t)0x594e, (q15_t)0xc537, (q15_t)0x5943, (q15_t)0xc532,\n    (q15_t)0x5937, (q15_t)0xc52d, (q15_t)0x592c, (q15_t)0xc528, (q15_t)0x5920, (q15_t)0xc523, (q15_t)0x5914, (q15_t)0xc51e,\n    (q15_t)0x5909, (q15_t)0xc51a, (q15_t)0x58fd, (q15_t)0xc515, (q15_t)0x58f2, (q15_t)0xc510, (q15_t)0x58e6, (q15_t)0xc50b,\n    (q15_t)0x58db, (q15_t)0xc506, (q15_t)0x58cf, (q15_t)0xc501, (q15_t)0x58c3, (q15_t)0xc4fc, (q15_t)0x58b8, (q15_t)0xc4f7,\n    (q15_t)0x58ac, (q15_t)0xc4f2, (q15_t)0x58a1, (q15_t)0xc4ee, (q15_t)0x5895, (q15_t)0xc4e9, (q15_t)0x5889, (q15_t)0xc4e4,\n    (q15_t)0x587e, (q15_t)0xc4df, (q15_t)0x5872, (q15_t)0xc4da, (q15_t)0x5867, (q15_t)0xc4d6, (q15_t)0x585b, (q15_t)0xc4d1,\n    (q15_t)0x584f, (q15_t)0xc4cc, (q15_t)0x5844, (q15_t)0xc4c7, (q15_t)0x5838, (q15_t)0xc4c2, (q15_t)0x582d, (q15_t)0xc4be,\n    (q15_t)0x5821, (q15_t)0xc4b9, (q15_t)0x5815, (q15_t)0xc4b4, (q15_t)0x580a, (q15_t)0xc4b0, (q15_t)0x57fe, (q15_t)0xc4ab,\n    (q15_t)0x57f2, (q15_t)0xc4a6, (q15_t)0x57e7, (q15_t)0xc4a1, (q15_t)0x57db, (q15_t)0xc49d, (q15_t)0x57cf, (q15_t)0xc498,\n    (q15_t)0x57c4, (q15_t)0xc493, (q15_t)0x57b8, (q15_t)0xc48f, (q15_t)0x57ac, (q15_t)0xc48a, (q15_t)0x57a1, (q15_t)0xc485,\n    (q15_t)0x5795, (q15_t)0xc481, (q15_t)0x5789, (q15_t)0xc47c, (q15_t)0x577e, (q15_t)0xc478, (q15_t)0x5772, (q15_t)0xc473,\n    (q15_t)0x5766, (q15_t)0xc46e, (q15_t)0x575b, (q15_t)0xc46a, (q15_t)0x574f, (q15_t)0xc465, (q15_t)0x5743, (q15_t)0xc461,\n    (q15_t)0x5737, (q15_t)0xc45c, (q15_t)0x572c, (q15_t)0xc457, (q15_t)0x5720, (q15_t)0xc453, (q15_t)0x5714, (q15_t)0xc44e,\n    (q15_t)0x5709, (q15_t)0xc44a, (q15_t)0x56fd, (q15_t)0xc445, (q15_t)0x56f1, (q15_t)0xc441, (q15_t)0x56e5, (q15_t)0xc43c,\n    (q15_t)0x56da, (q15_t)0xc438, (q15_t)0x56ce, (q15_t)0xc433, (q15_t)0x56c2, (q15_t)0xc42f, (q15_t)0x56b6, (q15_t)0xc42a,\n    (q15_t)0x56ab, (q15_t)0xc426, (q15_t)0x569f, (q15_t)0xc422, (q15_t)0x5693, (q15_t)0xc41d, (q15_t)0x5687, (q15_t)0xc419,\n    (q15_t)0x567c, (q15_t)0xc414, (q15_t)0x5670, (q15_t)0xc410, (q15_t)0x5664, (q15_t)0xc40b, (q15_t)0x5658, (q15_t)0xc407,\n    (q15_t)0x564c, (q15_t)0xc403, (q15_t)0x5641, (q15_t)0xc3fe, (q15_t)0x5635, (q15_t)0xc3fa, (q15_t)0x5629, (q15_t)0xc3f6,\n    (q15_t)0x561d, (q15_t)0xc3f1, (q15_t)0x5612, (q15_t)0xc3ed, (q15_t)0x5606, (q15_t)0xc3e9, (q15_t)0x55fa, (q15_t)0xc3e4,\n    (q15_t)0x55ee, (q15_t)0xc3e0, (q15_t)0x55e2, (q15_t)0xc3dc, (q15_t)0x55d7, (q15_t)0xc3d7, (q15_t)0x55cb, (q15_t)0xc3d3,\n    (q15_t)0x55bf, (q15_t)0xc3cf, (q15_t)0x55b3, (q15_t)0xc3ca, (q15_t)0x55a7, (q15_t)0xc3c6, (q15_t)0x559b, (q15_t)0xc3c2,\n    (q15_t)0x5590, (q15_t)0xc3be, (q15_t)0x5584, (q15_t)0xc3ba, (q15_t)0x5578, (q15_t)0xc3b5, (q15_t)0x556c, (q15_t)0xc3b1,\n    (q15_t)0x5560, (q15_t)0xc3ad, (q15_t)0x5554, (q15_t)0xc3a9, (q15_t)0x5549, (q15_t)0xc3a5, (q15_t)0x553d, (q15_t)0xc3a0,\n    (q15_t)0x5531, (q15_t)0xc39c, (q15_t)0x5525, (q15_t)0xc398, (q15_t)0x5519, (q15_t)0xc394, (q15_t)0x550d, (q15_t)0xc390,\n    (q15_t)0x5501, (q15_t)0xc38c, (q15_t)0x54f6, (q15_t)0xc387, (q15_t)0x54ea, (q15_t)0xc383, (q15_t)0x54de, (q15_t)0xc37f,\n    (q15_t)0x54d2, (q15_t)0xc37b, (q15_t)0x54c6, (q15_t)0xc377, (q15_t)0x54ba, (q15_t)0xc373, (q15_t)0x54ae, (q15_t)0xc36f,\n    (q15_t)0x54a2, (q15_t)0xc36b, (q15_t)0x5496, (q15_t)0xc367, (q15_t)0x548b, (q15_t)0xc363, (q15_t)0x547f, (q15_t)0xc35f,\n    (q15_t)0x5473, (q15_t)0xc35b, (q15_t)0x5467, (q15_t)0xc357, (q15_t)0x545b, (q15_t)0xc353, (q15_t)0x544f, (q15_t)0xc34f,\n    (q15_t)0x5443, (q15_t)0xc34b, (q15_t)0x5437, (q15_t)0xc347, (q15_t)0x542b, (q15_t)0xc343, (q15_t)0x541f, (q15_t)0xc33f,\n    (q15_t)0x5413, (q15_t)0xc33b, (q15_t)0x5407, (q15_t)0xc337, (q15_t)0x53fb, (q15_t)0xc333, (q15_t)0x53f0, (q15_t)0xc32f,\n    (q15_t)0x53e4, (q15_t)0xc32b, (q15_t)0x53d8, (q15_t)0xc327, (q15_t)0x53cc, (q15_t)0xc323, (q15_t)0x53c0, (q15_t)0xc320,\n    (q15_t)0x53b4, (q15_t)0xc31c, (q15_t)0x53a8, (q15_t)0xc318, (q15_t)0x539c, (q15_t)0xc314, (q15_t)0x5390, (q15_t)0xc310,\n    (q15_t)0x5384, (q15_t)0xc30c, (q15_t)0x5378, (q15_t)0xc308, (q15_t)0x536c, (q15_t)0xc305, (q15_t)0x5360, (q15_t)0xc301,\n    (q15_t)0x5354, (q15_t)0xc2fd, (q15_t)0x5348, (q15_t)0xc2f9, (q15_t)0x533c, (q15_t)0xc2f5, (q15_t)0x5330, (q15_t)0xc2f2,\n    (q15_t)0x5324, (q15_t)0xc2ee, (q15_t)0x5318, (q15_t)0xc2ea, (q15_t)0x530c, (q15_t)0xc2e6, (q15_t)0x5300, (q15_t)0xc2e3,\n    (q15_t)0x52f4, (q15_t)0xc2df, (q15_t)0x52e8, (q15_t)0xc2db, (q15_t)0x52dc, (q15_t)0xc2d8, (q15_t)0x52d0, (q15_t)0xc2d4,\n    (q15_t)0x52c4, (q15_t)0xc2d0, (q15_t)0x52b8, (q15_t)0xc2cc, (q15_t)0x52ac, (q15_t)0xc2c9, (q15_t)0x52a0, (q15_t)0xc2c5,\n    (q15_t)0x5294, (q15_t)0xc2c1, (q15_t)0x5288, (q15_t)0xc2be, (q15_t)0x527c, (q15_t)0xc2ba, (q15_t)0x5270, (q15_t)0xc2b7,\n    (q15_t)0x5264, (q15_t)0xc2b3, (q15_t)0x5258, (q15_t)0xc2af, (q15_t)0x524c, (q15_t)0xc2ac, (q15_t)0x5240, (q15_t)0xc2a8,\n    (q15_t)0x5234, (q15_t)0xc2a5, (q15_t)0x5228, (q15_t)0xc2a1, (q15_t)0x521c, (q15_t)0xc29d, (q15_t)0x5210, (q15_t)0xc29a,\n    (q15_t)0x5204, (q15_t)0xc296, (q15_t)0x51f7, (q15_t)0xc293, (q15_t)0x51eb, (q15_t)0xc28f, (q15_t)0x51df, (q15_t)0xc28c,\n    (q15_t)0x51d3, (q15_t)0xc288, (q15_t)0x51c7, (q15_t)0xc285, (q15_t)0x51bb, (q15_t)0xc281, (q15_t)0x51af, (q15_t)0xc27e,\n    (q15_t)0x51a3, (q15_t)0xc27a, (q15_t)0x5197, (q15_t)0xc277, (q15_t)0x518b, (q15_t)0xc273, (q15_t)0x517f, (q15_t)0xc270,\n    (q15_t)0x5173, (q15_t)0xc26d, (q15_t)0x5167, (q15_t)0xc269, (q15_t)0x515a, (q15_t)0xc266, (q15_t)0x514e, (q15_t)0xc262,\n    (q15_t)0x5142, (q15_t)0xc25f, (q15_t)0x5136, (q15_t)0xc25c, (q15_t)0x512a, (q15_t)0xc258, (q15_t)0x511e, (q15_t)0xc255,\n    (q15_t)0x5112, (q15_t)0xc251, (q15_t)0x5106, (q15_t)0xc24e, (q15_t)0x50fa, (q15_t)0xc24b, (q15_t)0x50ed, (q15_t)0xc247,\n    (q15_t)0x50e1, (q15_t)0xc244, (q15_t)0x50d5, (q15_t)0xc241, (q15_t)0x50c9, (q15_t)0xc23e, (q15_t)0x50bd, (q15_t)0xc23a,\n    (q15_t)0x50b1, (q15_t)0xc237, (q15_t)0x50a5, (q15_t)0xc234, (q15_t)0x5099, (q15_t)0xc230, (q15_t)0x508c, (q15_t)0xc22d,\n    (q15_t)0x5080, (q15_t)0xc22a, (q15_t)0x5074, (q15_t)0xc227, (q15_t)0x5068, (q15_t)0xc223, (q15_t)0x505c, (q15_t)0xc220,\n    (q15_t)0x5050, (q15_t)0xc21d, (q15_t)0x5044, (q15_t)0xc21a, (q15_t)0x5037, (q15_t)0xc217, (q15_t)0x502b, (q15_t)0xc213,\n    (q15_t)0x501f, (q15_t)0xc210, (q15_t)0x5013, (q15_t)0xc20d, (q15_t)0x5007, (q15_t)0xc20a, (q15_t)0x4ffb, (q15_t)0xc207,\n    (q15_t)0x4fee, (q15_t)0xc204, (q15_t)0x4fe2, (q15_t)0xc201, (q15_t)0x4fd6, (q15_t)0xc1fd, (q15_t)0x4fca, (q15_t)0xc1fa,\n    (q15_t)0x4fbe, (q15_t)0xc1f7, (q15_t)0x4fb2, (q15_t)0xc1f4, (q15_t)0x4fa5, (q15_t)0xc1f1, (q15_t)0x4f99, (q15_t)0xc1ee,\n    (q15_t)0x4f8d, (q15_t)0xc1eb, (q15_t)0x4f81, (q15_t)0xc1e8, (q15_t)0x4f75, (q15_t)0xc1e5, (q15_t)0x4f68, (q15_t)0xc1e2,\n    (q15_t)0x4f5c, (q15_t)0xc1df, (q15_t)0x4f50, (q15_t)0xc1dc, (q15_t)0x4f44, (q15_t)0xc1d9, (q15_t)0x4f38, (q15_t)0xc1d6,\n    (q15_t)0x4f2b, (q15_t)0xc1d3, (q15_t)0x4f1f, (q15_t)0xc1d0, (q15_t)0x4f13, (q15_t)0xc1cd, (q15_t)0x4f07, (q15_t)0xc1ca,\n    (q15_t)0x4efb, (q15_t)0xc1c7, (q15_t)0x4eee, (q15_t)0xc1c4, (q15_t)0x4ee2, (q15_t)0xc1c1, (q15_t)0x4ed6, (q15_t)0xc1be,\n    (q15_t)0x4eca, (q15_t)0xc1bb, (q15_t)0x4ebd, (q15_t)0xc1b8, (q15_t)0x4eb1, (q15_t)0xc1b6, (q15_t)0x4ea5, (q15_t)0xc1b3,\n    (q15_t)0x4e99, (q15_t)0xc1b0, (q15_t)0x4e8c, (q15_t)0xc1ad, (q15_t)0x4e80, (q15_t)0xc1aa, (q15_t)0x4e74, (q15_t)0xc1a7,\n    (q15_t)0x4e68, (q15_t)0xc1a4, (q15_t)0x4e5c, (q15_t)0xc1a2, (q15_t)0x4e4f, (q15_t)0xc19f, (q15_t)0x4e43, (q15_t)0xc19c,\n    (q15_t)0x4e37, (q15_t)0xc199, (q15_t)0x4e2b, (q15_t)0xc196, (q15_t)0x4e1e, (q15_t)0xc194, (q15_t)0x4e12, (q15_t)0xc191,\n    (q15_t)0x4e06, (q15_t)0xc18e, (q15_t)0x4df9, (q15_t)0xc18b, (q15_t)0x4ded, (q15_t)0xc189, (q15_t)0x4de1, (q15_t)0xc186,\n    (q15_t)0x4dd5, (q15_t)0xc183, (q15_t)0x4dc8, (q15_t)0xc180, (q15_t)0x4dbc, (q15_t)0xc17e, (q15_t)0x4db0, (q15_t)0xc17b,\n    (q15_t)0x4da4, (q15_t)0xc178, (q15_t)0x4d97, (q15_t)0xc176, (q15_t)0x4d8b, (q15_t)0xc173, (q15_t)0x4d7f, (q15_t)0xc170,\n    (q15_t)0x4d72, (q15_t)0xc16e, (q15_t)0x4d66, (q15_t)0xc16b, (q15_t)0x4d5a, (q15_t)0xc168, (q15_t)0x4d4e, (q15_t)0xc166,\n    (q15_t)0x4d41, (q15_t)0xc163, (q15_t)0x4d35, (q15_t)0xc161, (q15_t)0x4d29, (q15_t)0xc15e, (q15_t)0x4d1c, (q15_t)0xc15b,\n    (q15_t)0x4d10, (q15_t)0xc159, (q15_t)0x4d04, (q15_t)0xc156, (q15_t)0x4cf8, (q15_t)0xc154, (q15_t)0x4ceb, (q15_t)0xc151,\n    (q15_t)0x4cdf, (q15_t)0xc14f, (q15_t)0x4cd3, (q15_t)0xc14c, (q15_t)0x4cc6, (q15_t)0xc14a, (q15_t)0x4cba, (q15_t)0xc147,\n    (q15_t)0x4cae, (q15_t)0xc145, (q15_t)0x4ca1, (q15_t)0xc142, (q15_t)0x4c95, (q15_t)0xc140, (q15_t)0x4c89, (q15_t)0xc13d,\n    (q15_t)0x4c7c, (q15_t)0xc13b, (q15_t)0x4c70, (q15_t)0xc138, (q15_t)0x4c64, (q15_t)0xc136, (q15_t)0x4c57, (q15_t)0xc134,\n    (q15_t)0x4c4b, (q15_t)0xc131, (q15_t)0x4c3f, (q15_t)0xc12f, (q15_t)0x4c32, (q15_t)0xc12c, (q15_t)0x4c26, (q15_t)0xc12a,\n    (q15_t)0x4c1a, (q15_t)0xc128, (q15_t)0x4c0d, (q15_t)0xc125, (q15_t)0x4c01, (q15_t)0xc123, (q15_t)0x4bf5, (q15_t)0xc120,\n    (q15_t)0x4be8, (q15_t)0xc11e, (q15_t)0x4bdc, (q15_t)0xc11c, (q15_t)0x4bd0, (q15_t)0xc119, (q15_t)0x4bc3, (q15_t)0xc117,\n    (q15_t)0x4bb7, (q15_t)0xc115, (q15_t)0x4bab, (q15_t)0xc113, (q15_t)0x4b9e, (q15_t)0xc110, (q15_t)0x4b92, (q15_t)0xc10e,\n    (q15_t)0x4b85, (q15_t)0xc10c, (q15_t)0x4b79, (q15_t)0xc109, (q15_t)0x4b6d, (q15_t)0xc107, (q15_t)0x4b60, (q15_t)0xc105,\n    (q15_t)0x4b54, (q15_t)0xc103, (q15_t)0x4b48, (q15_t)0xc100, (q15_t)0x4b3b, (q15_t)0xc0fe, (q15_t)0x4b2f, (q15_t)0xc0fc,\n    (q15_t)0x4b23, (q15_t)0xc0fa, (q15_t)0x4b16, (q15_t)0xc0f8, (q15_t)0x4b0a, (q15_t)0xc0f6, (q15_t)0x4afd, (q15_t)0xc0f3,\n    (q15_t)0x4af1, (q15_t)0xc0f1, (q15_t)0x4ae5, (q15_t)0xc0ef, (q15_t)0x4ad8, (q15_t)0xc0ed, (q15_t)0x4acc, (q15_t)0xc0eb,\n    (q15_t)0x4ac0, (q15_t)0xc0e9, (q15_t)0x4ab3, (q15_t)0xc0e7, (q15_t)0x4aa7, (q15_t)0xc0e4, (q15_t)0x4a9a, (q15_t)0xc0e2,\n    (q15_t)0x4a8e, (q15_t)0xc0e0, (q15_t)0x4a82, (q15_t)0xc0de, (q15_t)0x4a75, (q15_t)0xc0dc, (q15_t)0x4a69, (q15_t)0xc0da,\n    (q15_t)0x4a5c, (q15_t)0xc0d8, (q15_t)0x4a50, (q15_t)0xc0d6, (q15_t)0x4a44, (q15_t)0xc0d4, (q15_t)0x4a37, (q15_t)0xc0d2,\n    (q15_t)0x4a2b, (q15_t)0xc0d0, (q15_t)0x4a1e, (q15_t)0xc0ce, (q15_t)0x4a12, (q15_t)0xc0cc, (q15_t)0x4a06, (q15_t)0xc0ca,\n    (q15_t)0x49f9, (q15_t)0xc0c8, (q15_t)0x49ed, (q15_t)0xc0c6, (q15_t)0x49e0, (q15_t)0xc0c4, (q15_t)0x49d4, (q15_t)0xc0c2,\n    (q15_t)0x49c7, (q15_t)0xc0c0, (q15_t)0x49bb, (q15_t)0xc0be, (q15_t)0x49af, (q15_t)0xc0bd, (q15_t)0x49a2, (q15_t)0xc0bb,\n    (q15_t)0x4996, (q15_t)0xc0b9, (q15_t)0x4989, (q15_t)0xc0b7, (q15_t)0x497d, (q15_t)0xc0b5, (q15_t)0x4970, (q15_t)0xc0b3,\n    (q15_t)0x4964, (q15_t)0xc0b1, (q15_t)0x4958, (q15_t)0xc0af, (q15_t)0x494b, (q15_t)0xc0ae, (q15_t)0x493f, (q15_t)0xc0ac,\n    (q15_t)0x4932, (q15_t)0xc0aa, (q15_t)0x4926, (q15_t)0xc0a8, (q15_t)0x4919, (q15_t)0xc0a6, (q15_t)0x490d, (q15_t)0xc0a5,\n    (q15_t)0x4901, (q15_t)0xc0a3, (q15_t)0x48f4, (q15_t)0xc0a1, (q15_t)0x48e8, (q15_t)0xc09f, (q15_t)0x48db, (q15_t)0xc09e,\n    (q15_t)0x48cf, (q15_t)0xc09c, (q15_t)0x48c2, (q15_t)0xc09a, (q15_t)0x48b6, (q15_t)0xc098, (q15_t)0x48a9, (q15_t)0xc097,\n    (q15_t)0x489d, (q15_t)0xc095, (q15_t)0x4891, (q15_t)0xc093, (q15_t)0x4884, (q15_t)0xc092, (q15_t)0x4878, (q15_t)0xc090,\n    (q15_t)0x486b, (q15_t)0xc08e, (q15_t)0x485f, (q15_t)0xc08d, (q15_t)0x4852, (q15_t)0xc08b, (q15_t)0x4846, (q15_t)0xc089,\n    (q15_t)0x4839, (q15_t)0xc088, (q15_t)0x482d, (q15_t)0xc086, (q15_t)0x4820, (q15_t)0xc085, (q15_t)0x4814, (q15_t)0xc083,\n    (q15_t)0x4807, (q15_t)0xc081, (q15_t)0x47fb, (q15_t)0xc080, (q15_t)0x47ef, (q15_t)0xc07e, (q15_t)0x47e2, (q15_t)0xc07d,\n    (q15_t)0x47d6, (q15_t)0xc07b, (q15_t)0x47c9, (q15_t)0xc07a, (q15_t)0x47bd, (q15_t)0xc078, (q15_t)0x47b0, (q15_t)0xc077,\n    (q15_t)0x47a4, (q15_t)0xc075, (q15_t)0x4797, (q15_t)0xc074, (q15_t)0x478b, (q15_t)0xc072, (q15_t)0x477e, (q15_t)0xc071,\n    (q15_t)0x4772, (q15_t)0xc06f, (q15_t)0x4765, (q15_t)0xc06e, (q15_t)0x4759, (q15_t)0xc06c, (q15_t)0x474c, (q15_t)0xc06b,\n    (q15_t)0x4740, (q15_t)0xc069, (q15_t)0x4733, (q15_t)0xc068, (q15_t)0x4727, (q15_t)0xc067, (q15_t)0x471a, (q15_t)0xc065,\n    (q15_t)0x470e, (q15_t)0xc064, (q15_t)0x4701, (q15_t)0xc062, (q15_t)0x46f5, (q15_t)0xc061, (q15_t)0x46e8, (q15_t)0xc060,\n    (q15_t)0x46dc, (q15_t)0xc05e, (q15_t)0x46cf, (q15_t)0xc05d, (q15_t)0x46c3, (q15_t)0xc05c, (q15_t)0x46b6, (q15_t)0xc05a,\n    (q15_t)0x46aa, (q15_t)0xc059, (q15_t)0x469d, (q15_t)0xc058, (q15_t)0x4691, (q15_t)0xc056, (q15_t)0x4684, (q15_t)0xc055,\n    (q15_t)0x4678, (q15_t)0xc054, (q15_t)0x466b, (q15_t)0xc053, (q15_t)0x465f, (q15_t)0xc051, (q15_t)0x4652, (q15_t)0xc050,\n    (q15_t)0x4646, (q15_t)0xc04f, (q15_t)0x4639, (q15_t)0xc04e, (q15_t)0x462d, (q15_t)0xc04c, (q15_t)0x4620, (q15_t)0xc04b,\n    (q15_t)0x4614, (q15_t)0xc04a, (q15_t)0x4607, (q15_t)0xc049, (q15_t)0x45fb, (q15_t)0xc048, (q15_t)0x45ee, (q15_t)0xc047,\n    (q15_t)0x45e2, (q15_t)0xc045, (q15_t)0x45d5, (q15_t)0xc044, (q15_t)0x45c9, (q15_t)0xc043, (q15_t)0x45bc, (q15_t)0xc042,\n    (q15_t)0x45b0, (q15_t)0xc041, (q15_t)0x45a3, (q15_t)0xc040, (q15_t)0x4597, (q15_t)0xc03f, (q15_t)0x458a, (q15_t)0xc03d,\n    (q15_t)0x457e, (q15_t)0xc03c, (q15_t)0x4571, (q15_t)0xc03b, (q15_t)0x4565, (q15_t)0xc03a, (q15_t)0x4558, (q15_t)0xc039,\n    (q15_t)0x454c, (q15_t)0xc038, (q15_t)0x453f, (q15_t)0xc037, (q15_t)0x4533, (q15_t)0xc036, (q15_t)0x4526, (q15_t)0xc035,\n    (q15_t)0x451a, (q15_t)0xc034, (q15_t)0x450d, (q15_t)0xc033, (q15_t)0x4500, (q15_t)0xc032, (q15_t)0x44f4, (q15_t)0xc031,\n    (q15_t)0x44e7, (q15_t)0xc030, (q15_t)0x44db, (q15_t)0xc02f, (q15_t)0x44ce, (q15_t)0xc02e, (q15_t)0x44c2, (q15_t)0xc02d,\n    (q15_t)0x44b5, (q15_t)0xc02c, (q15_t)0x44a9, (q15_t)0xc02b, (q15_t)0x449c, (q15_t)0xc02b, (q15_t)0x4490, (q15_t)0xc02a,\n    (q15_t)0x4483, (q15_t)0xc029, (q15_t)0x4477, (q15_t)0xc028, (q15_t)0x446a, (q15_t)0xc027, (q15_t)0x445e, (q15_t)0xc026,\n    (q15_t)0x4451, (q15_t)0xc025, (q15_t)0x4444, (q15_t)0xc024, (q15_t)0x4438, (q15_t)0xc024, (q15_t)0x442b, (q15_t)0xc023,\n    (q15_t)0x441f, (q15_t)0xc022, (q15_t)0x4412, (q15_t)0xc021, (q15_t)0x4406, (q15_t)0xc020, (q15_t)0x43f9, (q15_t)0xc020,\n    (q15_t)0x43ed, (q15_t)0xc01f, (q15_t)0x43e0, (q15_t)0xc01e, (q15_t)0x43d4, (q15_t)0xc01d, (q15_t)0x43c7, (q15_t)0xc01d,\n    (q15_t)0x43bb, (q15_t)0xc01c, (q15_t)0x43ae, (q15_t)0xc01b, (q15_t)0x43a1, (q15_t)0xc01a, (q15_t)0x4395, (q15_t)0xc01a,\n    (q15_t)0x4388, (q15_t)0xc019, (q15_t)0x437c, (q15_t)0xc018, (q15_t)0x436f, (q15_t)0xc018, (q15_t)0x4363, (q15_t)0xc017,\n    (q15_t)0x4356, (q15_t)0xc016, (q15_t)0x434a, (q15_t)0xc016, (q15_t)0x433d, (q15_t)0xc015, (q15_t)0x4330, (q15_t)0xc014,\n    (q15_t)0x4324, (q15_t)0xc014, (q15_t)0x4317, (q15_t)0xc013, (q15_t)0x430b, (q15_t)0xc013, (q15_t)0x42fe, (q15_t)0xc012,\n    (q15_t)0x42f2, (q15_t)0xc011, (q15_t)0x42e5, (q15_t)0xc011, (q15_t)0x42d9, (q15_t)0xc010, (q15_t)0x42cc, (q15_t)0xc010,\n    (q15_t)0x42c0, (q15_t)0xc00f, (q15_t)0x42b3, (q15_t)0xc00f, (q15_t)0x42a6, (q15_t)0xc00e, (q15_t)0x429a, (q15_t)0xc00e,\n    (q15_t)0x428d, (q15_t)0xc00d, (q15_t)0x4281, (q15_t)0xc00d, (q15_t)0x4274, (q15_t)0xc00c, (q15_t)0x4268, (q15_t)0xc00c,\n    (q15_t)0x425b, (q15_t)0xc00b, (q15_t)0x424e, (q15_t)0xc00b, (q15_t)0x4242, (q15_t)0xc00a, (q15_t)0x4235, (q15_t)0xc00a,\n    (q15_t)0x4229, (q15_t)0xc009, (q15_t)0x421c, (q15_t)0xc009, (q15_t)0x4210, (q15_t)0xc009, (q15_t)0x4203, (q15_t)0xc008,\n    (q15_t)0x41f7, (q15_t)0xc008, (q15_t)0x41ea, (q15_t)0xc007, (q15_t)0x41dd, (q15_t)0xc007, (q15_t)0x41d1, (q15_t)0xc007,\n    (q15_t)0x41c4, (q15_t)0xc006, (q15_t)0x41b8, (q15_t)0xc006, (q15_t)0x41ab, (q15_t)0xc006, (q15_t)0x419f, (q15_t)0xc005,\n    (q15_t)0x4192, (q15_t)0xc005, (q15_t)0x4186, (q15_t)0xc005, (q15_t)0x4179, (q15_t)0xc004, (q15_t)0x416c, (q15_t)0xc004,\n    (q15_t)0x4160, (q15_t)0xc004, (q15_t)0x4153, (q15_t)0xc004, (q15_t)0x4147, (q15_t)0xc003, (q15_t)0x413a, (q15_t)0xc003,\n    (q15_t)0x412e, (q15_t)0xc003, (q15_t)0x4121, (q15_t)0xc003, (q15_t)0x4114, (q15_t)0xc002, (q15_t)0x4108, (q15_t)0xc002,\n    (q15_t)0x40fb, (q15_t)0xc002, (q15_t)0x40ef, (q15_t)0xc002, (q15_t)0x40e2, (q15_t)0xc002, (q15_t)0x40d6, (q15_t)0xc001,\n    (q15_t)0x40c9, (q15_t)0xc001, (q15_t)0x40bc, (q15_t)0xc001, (q15_t)0x40b0, (q15_t)0xc001, (q15_t)0x40a3, (q15_t)0xc001,\n    (q15_t)0x4097, (q15_t)0xc001, (q15_t)0x408a, (q15_t)0xc001, (q15_t)0x407e, (q15_t)0xc000, (q15_t)0x4071, (q15_t)0xc000,\n    (q15_t)0x4065, (q15_t)0xc000, (q15_t)0x4058, (q15_t)0xc000, (q15_t)0x404b, (q15_t)0xc000, (q15_t)0x403f, (q15_t)0xc000,\n    (q15_t)0x4032, (q15_t)0xc000, (q15_t)0x4026, (q15_t)0xc000, (q15_t)0x4019, (q15_t)0xc000, (q15_t)0x400d, (q15_t)0xc000,\n};\n\n#endif\n/**\n  @} end of RealFFT_Table group\n */\n\n/**\n  @ingroup DCT4_IDCT4\n */\n\n/**\n  @addtogroup DCT4_IDCT4_Table DCT Type IV Tables\n  @{\n */\n\n/**\n  @brief  Weights Table\n */\n\n/**\n  @par\n  Weights tables are generated using the formula : <pre>weights[n] = e^(-j*n*pi/(2*N))</pre>\n  @par\n  C command to generate the table\n  <pre>\n  for(i = 0; i< N; i++)\n  {\n    weights[(2*i)]   =  cos (i*c);\n    weights[(2*i)+1] = -sin (i*c);\n  } </pre>\n  @par\n  where <code>N</code> is the Number of weights to be calculated and <code>c</code> is <code>pi/(2*N)</code>\n  @par\n  In the tables below the real and imaginary values are placed alternatively, hence the\n  array length is <code>2*N</code>.\n */\n\n\n/**\n  @par\n  cosFactor tables are generated using the formula : <pre>cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))</pre>\n  @par\n  C command to generate the table\n  @par\n  <pre> for(i = 0; i< N; i++)\n  {\n     cos_factors[i]= 2 * cos((2*i+1)*c/2);\n  } </pre>\n  @par\n  where <code>N</code> is the number of factors to generate and <code>c</code> is <code>pi/(2*N)</code>\n*/\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_128)\n    const float32_t Weights_128[256] = {\n  1.000000000000000000f, 0.000000000000000000f, 0.999924701839144500f,  -0.012271538285719925f,\n  0.999698818696204250f, -0.024541228522912288f, 0.999322384588349540f, -0.036807222941358832f,\n  0.998795456205172410f, -0.049067674327418015f, 0.998118112900149180f, -0.061320736302208578f,\n  0.997290456678690210f, -0.073564563599667426f, 0.996312612182778000f, -0.085797312344439894f,\n  0.995184726672196930f, -0.098017140329560604f, 0.993906970002356060f, -0.110222207293883060f,\n  0.992479534598709970f, -0.122410675199216200f, 0.990902635427780010f, -0.134580708507126170f,\n  0.989176509964781010f, -0.146730474455361750f, 0.987301418157858430f, -0.158858143333861450f,\n  0.985277642388941220f, -0.170961888760301220f, 0.983105487431216290f, -0.183039887955140950f,\n  0.980785280403230430f, -0.195090322016128250f, 0.978317370719627650f, -0.207111376192218560f,\n  0.975702130038528570f, -0.219101240156869800f, 0.972939952205560180f, -0.231058108280671110f,\n  0.970031253194543970f, -0.242980179903263870f, 0.966976471044852070f, -0.254865659604514570f,\n  0.963776065795439840f, -0.266712757474898370f, 0.960430519415565790f, -0.278519689385053060f,\n  0.956940335732208820f, -0.290284677254462330f, 0.953306040354193860f, -0.302005949319228080f,\n  0.949528180593036670f, -0.313681740398891520f, 0.945607325380521280f, -0.325310292162262930f,\n  0.941544065183020810f, -0.336889853392220050f, 0.937339011912574960f, -0.348418680249434560f,\n  0.932992798834738960f, -0.359895036534988110f, 0.928506080473215590f, -0.371317193951837540f,\n  0.923879532511286740f, -0.382683432365089780f, 0.919113851690057770f, -0.393992040061048100f,\n  0.914209755703530690f, -0.405241314004989860f, 0.909167983090522380f, -0.416429560097637150f,\n  0.903989293123443340f, -0.427555093430282080f, 0.898674465693953820f, -0.438616238538527660f,\n  0.893224301195515320f, -0.449611329654606540f, 0.887639620402853930f, -0.460538710958240010f,\n  0.881921264348355050f, -0.471396736825997640f, 0.876070094195406600f, -0.482183772079122720f,\n  0.870086991108711460f, -0.492898192229784040f, 0.863972856121586810f, -0.503538383725717580f,\n  0.857728610000272120f, -0.514102744193221660f, 0.851355193105265200f, -0.524589682678468950f,\n  0.844853565249707120f, -0.534997619887097150f, 0.838224705554838080f, -0.545324988422046460f,\n  0.831469612302545240f, -0.555570233019602180f, 0.824589302785025290f, -0.565731810783613120f,\n  0.817584813151583710f, -0.575808191417845340f, 0.810457198252594770f, -0.585797857456438860f,\n  0.803207531480644940f, -0.595699304492433360f, 0.795836904608883570f, -0.605511041404325550f,\n  0.788346427626606340f, -0.615231590580626820f, 0.780737228572094490f, -0.624859488142386340f,\n  0.773010453362736990f, -0.634393284163645490f, 0.765167265622458960f, -0.643831542889791390f,\n  0.757208846506484570f, -0.653172842953776760f, 0.749136394523459370f, -0.662415777590171780f,\n  0.740951125354959110f, -0.671558954847018330f, 0.732654271672412820f, -0.680600997795453020f,\n  0.724247082951467000f, -0.689540544737066830f, 0.715730825283818590f, -0.698376249408972920f,\n  0.707106781186547570f, -0.707106781186547460f, 0.698376249408972920f, -0.715730825283818590f,\n  0.689540544737066940f, -0.724247082951466890f, 0.680600997795453130f, -0.732654271672412820f,\n  0.671558954847018330f, -0.740951125354959110f, 0.662415777590171780f, -0.749136394523459260f,\n  0.653172842953776760f, -0.757208846506484460f, 0.643831542889791500f, -0.765167265622458960f,\n  0.634393284163645490f, -0.773010453362736990f, 0.624859488142386450f, -0.780737228572094380f,\n  0.615231590580626820f, -0.788346427626606230f, 0.605511041404325550f, -0.795836904608883460f,\n  0.595699304492433470f, -0.803207531480644830f, 0.585797857456438860f, -0.810457198252594770f,\n  0.575808191417845340f, -0.817584813151583710f, 0.565731810783613230f, -0.824589302785025290f,\n  0.555570233019602290f, -0.831469612302545240f, 0.545324988422046460f, -0.838224705554837970f,\n  0.534997619887097260f, -0.844853565249707010f, 0.524589682678468840f, -0.851355193105265200f,\n  0.514102744193221660f, -0.857728610000272120f, 0.503538383725717580f, -0.863972856121586700f,\n  0.492898192229784090f, -0.870086991108711350f, 0.482183772079122830f, -0.876070094195406600f,\n  0.471396736825997810f, -0.881921264348354940f, 0.460538710958240010f, -0.887639620402853930f,\n  0.449611329654606600f, -0.893224301195515320f, 0.438616238538527710f, -0.898674465693953820f,\n  0.427555093430282200f, -0.903989293123443340f, 0.416429560097637320f, -0.909167983090522270f,\n  0.405241314004989860f, -0.914209755703530690f, 0.393992040061048100f, -0.919113851690057770f,\n  0.382683432365089840f, -0.923879532511286740f, 0.371317193951837600f, -0.928506080473215480f,\n  0.359895036534988280f, -0.932992798834738850f, 0.348418680249434510f, -0.937339011912574960f,\n  0.336889853392220050f, -0.941544065183020810f, 0.325310292162262980f, -0.945607325380521280f,\n  0.313681740398891570f, -0.949528180593036670f, 0.302005949319228200f, -0.953306040354193750f,\n  0.290284677254462330f, -0.956940335732208940f, 0.278519689385053060f, -0.960430519415565790f,\n  0.266712757474898420f, -0.963776065795439840f, 0.254865659604514630f, -0.966976471044852070f,\n  0.242980179903263980f, -0.970031253194543970f, 0.231058108280671280f, -0.972939952205560070f,\n  0.219101240156869770f, -0.975702130038528570f, 0.207111376192218560f, -0.978317370719627650f,\n  0.195090322016128330f, -0.980785280403230430f, 0.183039887955141060f, -0.983105487431216290f,\n  0.170961888760301360f, -0.985277642388941220f, 0.158858143333861390f, -0.987301418157858430f,\n  0.146730474455361750f, -0.989176509964781010f, 0.134580708507126220f, -0.990902635427780010f,\n  0.122410675199216280f, -0.992479534598709970f, 0.110222207293883180f, -0.993906970002356060f,\n  0.098017140329560770f, -0.995184726672196820f, 0.085797312344439880f, -0.996312612182778000f,\n  0.073564563599667454f, -0.997290456678690210f, 0.061320736302208648f, -0.998118112900149180f,\n  0.049067674327418126f, -0.998795456205172410f, 0.036807222941358991f, -0.999322384588349540f,\n  0.024541228522912264f, -0.999698818696204250f, 0.012271538285719944f, -0.999924701839144500f\n};\n\n    const float32_t cos_factors_128[128] = {\n  0.999981175282601110f, 0.999830581795823400f, 0.999529417501093140f,\n  0.999077727752645360f,\n  0.998475580573294770f, 0.997723066644191640f, 0.996820299291165670f,\n  0.995767414467659820f,\n  0.994564570734255420f, 0.993211949234794500f, 0.991709753669099530f,\n  0.990058210262297120f,\n  0.988257567730749460f, 0.986308097244598670f, 0.984210092386929030f,\n  0.981963869109555240f,\n  0.979569765685440520f, 0.977028142657754390f, 0.974339382785575860f,\n  0.971503890986251780f,\n  0.968522094274417380f, 0.965394441697689400f, 0.962121404269041580f,\n  0.958703474895871600f,\n  0.955141168305770780f, 0.951435020969008340f, 0.947585591017741090f,\n  0.943593458161960390f,\n  0.939459223602189920f, 0.935183509938947610f, 0.930766961078983710f,\n  0.926210242138311380f,\n  0.921514039342042010f, 0.916679059921042700f, 0.911706032005429880f,\n  0.906595704514915330f,\n  0.901348847046022030f, 0.895966249756185220f, 0.890448723244757880f,\n  0.884797098430937790f,\n  0.879012226428633530f, 0.873094978418290090f, 0.867046245515692650f,\n  0.860866938637767310f,\n  0.854557988365400530f, 0.848120344803297230f, 0.841554977436898440f,\n  0.834862874986380010f,\n  0.828045045257755800f, 0.821102514991104650f, 0.814036329705948410f,\n  0.806847553543799330f,\n  0.799537269107905010f, 0.792106577300212390f, 0.784556597155575240f,\n  0.776888465673232440f,\n  0.769103337645579700f, 0.761202385484261780f, 0.753186799043612520f,\n  0.745057785441466060f,\n  0.736816568877369900f, 0.728464390448225200f, 0.720002507961381650f,\n  0.711432195745216430f,\n  0.702754744457225300f, 0.693971460889654000f, 0.685083667772700360f,\n  0.676092703575316030f,\n  0.666999922303637470f, 0.657806693297078640f, 0.648514401022112550f,\n  0.639124444863775730f,\n  0.629638238914927100f, 0.620057211763289210f, 0.610382806276309480f,\n  0.600616479383868970f,\n  0.590759701858874280f, 0.580813958095764530f, 0.570780745886967370f,\n  0.560661576197336030f,\n  0.550457972936604810f, 0.540171472729892970f, 0.529803624686294830f,\n  0.519355990165589530f,\n  0.508830142543106990f, 0.498227666972781870f, 0.487550160148436050f,\n  0.476799230063322250f,\n  0.465976495767966130f, 0.455083587126343840f, 0.444122144570429260f,\n  0.433093818853152010f,\n  0.422000270799799790f, 0.410843171057903910f, 0.399624199845646790f,\n  0.388345046698826300f,\n  0.377007410216418310f, 0.365612997804773960f, 0.354163525420490510f,\n  0.342660717311994380f,\n  0.331106305759876430f, 0.319502030816015750f, 0.307849640041534980f,\n  0.296150888243623960f,\n  0.284407537211271820f, 0.272621355449948980f, 0.260794117915275570f,\n  0.248927605745720260f,\n  0.237023605994367340f, 0.225083911359792780f, 0.213110319916091360f,\n  0.201104634842091960f,\n  0.189068664149806280f, 0.177004220412148860f, 0.164913120489970090f,\n  0.152797185258443410f,\n  0.140658239332849240f, 0.128498110793793220f, 0.116318630911904880f,\n  0.104121633872054730f,\n  0.091908956497132696f, 0.079682437971430126f, 0.067443919563664106f,\n  0.055195244349690031f,\n  0.042938256934940959f, 0.030674803176636581f, 0.018406729905804820f,\n  0.006135884649154515f\n};\n\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_512)\n    const float32_t Weights_512[1024] = {\n  1.000000000000000000f,  0.000000000000000000f, 0.999995293809576190f, -0.003067956762965976f,\n  0.999981175282601110f, -0.006135884649154475f, 0.999957644551963900f, -0.009203754782059819f,\n  0.999924701839144500f, -0.012271538285719925f, 0.999882347454212560f, -0.015339206284988100f,\n  0.999830581795823400f, -0.018406729905804820f, 0.999769405351215280f, -0.021474080275469508f,\n  0.999698818696204250f, -0.024541228522912288f, 0.999618822495178640f, -0.027608145778965740f,\n  0.999529417501093140f, -0.030674803176636626f, 0.999430604555461730f, -0.033741171851377580f,\n  0.999322384588349540f, -0.036807222941358832f, 0.999204758618363890f, -0.039872927587739811f,\n  0.999077727752645360f, -0.042938256934940820f, 0.998941293186856870f, -0.046003182130914623f,\n  0.998795456205172410f, -0.049067674327418015f, 0.998640218180265270f, -0.052131704680283324f,\n  0.998475580573294770f, -0.055195244349689934f, 0.998301544933892890f, -0.058258264500435752f,\n  0.998118112900149180f, -0.061320736302208578f, 0.997925286198596000f, -0.064382630929857465f,\n  0.997723066644191640f, -0.067443919563664051f, 0.997511456140303450f, -0.070504573389613856f,\n  0.997290456678690210f, -0.073564563599667426f, 0.997060070339482960f, -0.076623861392031492f,\n  0.996820299291165670f, -0.079682437971430126f, 0.996571145790554840f, -0.082740264549375692f,\n  0.996312612182778000f, -0.085797312344439894f, 0.996044700901251970f, -0.088853552582524600f,\n  0.995767414467659820f, -0.091908956497132724f, 0.995480755491926940f, -0.094963495329638992f,\n  0.995184726672196930f, -0.098017140329560604f, 0.994879330794805620f, -0.101069862754827820f,\n  0.994564570734255420f, -0.104121633872054590f, 0.994240449453187900f, -0.107172424956808840f,\n  0.993906970002356060f, -0.110222207293883060f, 0.993564135520595300f, -0.113270952177564350f,\n  0.993211949234794500f, -0.116318630911904750f, 0.992850414459865100f, -0.119365214810991350f,\n  0.992479534598709970f, -0.122410675199216200f, 0.992099313142191800f, -0.125454983411546230f,\n  0.991709753669099530f, -0.128498110793793170f, 0.991310859846115440f, -0.131540028702883120f,\n  0.990902635427780010f, -0.134580708507126170f, 0.990485084256457090f, -0.137620121586486040f,\n  0.990058210262297120f, -0.140658239332849210f, 0.989622017463200890f, -0.143695033150294470f,\n  0.989176509964781010f, -0.146730474455361750f, 0.988721691960323780f, -0.149764534677321510f,\n  0.988257567730749460f, -0.152797185258443440f, 0.987784141644572180f, -0.155828397654265230f,\n  0.987301418157858430f, -0.158858143333861450f, 0.986809401814185530f, -0.161886393780111830f,\n  0.986308097244598670f, -0.164913120489969890f, 0.985797509167567480f, -0.167938294974731170f,\n  0.985277642388941220f, -0.170961888760301220f, 0.984748501801904210f, -0.173983873387463820f,\n  0.984210092386929030f, -0.177004220412148750f, 0.983662419211730250f, -0.180022901405699510f,\n  0.983105487431216290f, -0.183039887955140950f, 0.982539302287441240f, -0.186055151663446630f,\n  0.981963869109555240f, -0.189068664149806190f, 0.981379193313754560f, -0.192080397049892440f,\n  0.980785280403230430f, -0.195090322016128250f, 0.980182135968117430f, -0.198098410717953560f,\n  0.979569765685440520f, -0.201104634842091900f, 0.978948175319062200f, -0.204108966092816870f,\n  0.978317370719627650f, -0.207111376192218560f, 0.977677357824509930f, -0.210111836880469610f,\n  0.977028142657754390f, -0.213110319916091360f, 0.976369731330021140f, -0.216106797076219520f,\n  0.975702130038528570f, -0.219101240156869800f, 0.975025345066994120f, -0.222093620973203510f,\n  0.974339382785575860f, -0.225083911359792830f, 0.973644249650811980f, -0.228072083170885730f,\n  0.972939952205560180f, -0.231058108280671110f, 0.972226497078936270f, -0.234041958583543430f,\n  0.971503890986251780f, -0.237023605994367200f, 0.970772140728950350f, -0.240003022448741500f,\n  0.970031253194543970f, -0.242980179903263870f, 0.969281235356548530f, -0.245955050335794590f,\n  0.968522094274417380f, -0.248927605745720150f, 0.967753837093475510f, -0.251897818154216970f,\n  0.966976471044852070f, -0.254865659604514570f, 0.966190003445412500f, -0.257831102162158990f,\n  0.965394441697689400f, -0.260794117915275510f, 0.964589793289812760f, -0.263754678974831350f,\n  0.963776065795439840f, -0.266712757474898370f, 0.962953266873683880f, -0.269668325572915090f,\n  0.962121404269041580f, -0.272621355449948980f, 0.961280485811320640f, -0.275571819310958140f,\n  0.960430519415565790f, -0.278519689385053060f, 0.959571513081984520f, -0.281464937925757940f,\n  0.958703474895871600f, -0.284407537211271880f, 0.957826413027532910f, -0.287347459544729510f,\n  0.956940335732208820f, -0.290284677254462330f, 0.956045251349996410f, -0.293219162694258630f,\n  0.955141168305770780f, -0.296150888243623790f, 0.954228095109105670f, -0.299079826308040480f,\n  0.953306040354193860f, -0.302005949319228080f, 0.952375012719765880f, -0.304929229735402370f,\n  0.951435020969008340f, -0.307849640041534870f, 0.950486073949481700f, -0.310767152749611470f,\n  0.949528180593036670f, -0.313681740398891520f, 0.948561349915730270f, -0.316593375556165850f,\n  0.947585591017741090f, -0.319502030816015690f, 0.946600913083283530f, -0.322407678801069850f,\n  0.945607325380521280f, -0.325310292162262930f, 0.944604837261480260f, -0.328209843579092500f,\n  0.943593458161960390f, -0.331106305759876430f, 0.942573197601446870f, -0.333999651442009380f,\n  0.941544065183020810f, -0.336889853392220050f, 0.940506070593268300f, -0.339776884406826850f,\n  0.939459223602189920f, -0.342660717311994380f, 0.938403534063108060f, -0.345541324963989090f,\n  0.937339011912574960f, -0.348418680249434560f, 0.936265667170278260f, -0.351292756085567090f,\n  0.935183509938947610f, -0.354163525420490340f, 0.934092550404258980f, -0.357030961233429980f,\n  0.932992798834738960f, -0.359895036534988110f, 0.931884265581668150f, -0.362755724367397230f,\n  0.930766961078983710f, -0.365612997804773850f, 0.929640895843181330f, -0.368466829953372320f,\n  0.928506080473215590f, -0.371317193951837540f, 0.927362525650401110f, -0.374164062971457930f,\n  0.926210242138311380f, -0.377007410216418260f, 0.925049240782677580f, -0.379847208924051160f,\n  0.923879532511286740f, -0.382683432365089780f, 0.922701128333878630f, -0.385516053843918850f,\n  0.921514039342042010f, -0.388345046698826250f, 0.920318276709110590f, -0.391170384302253870f,\n  0.919113851690057770f, -0.393992040061048100f, 0.917900775621390500f, -0.396809987416710310f,\n  0.916679059921042700f, -0.399624199845646790f, 0.915448716088267830f, -0.402434650859418430f,\n  0.914209755703530690f, -0.405241314004989860f, 0.912962190428398210f, -0.408044162864978690f,\n  0.911706032005429880f, -0.410843171057903910f, 0.910441292258067250f, -0.413638312238434500f,\n  0.909167983090522380f, -0.416429560097637150f, 0.907886116487666260f, -0.419216888363223910f,\n  0.906595704514915330f, -0.422000270799799680f, 0.905296759318118820f, -0.424779681209108810f,\n  0.903989293123443340f, -0.427555093430282080f, 0.902673318237258830f, -0.430326481340082610f,\n  0.901348847046022030f, -0.433093818853151960f, 0.900015892016160280f, -0.435857079922255470f,\n  0.898674465693953820f, -0.438616238538527660f, 0.897324580705418320f, -0.441371268731716670f,\n  0.895966249756185220f, -0.444122144570429200f, 0.894599485631382700f, -0.446868840162374160f,\n  0.893224301195515320f, -0.449611329654606540f, 0.891840709392342720f, -0.452349587233770890f,\n  0.890448723244757880f, -0.455083587126343840f, 0.889048355854664570f, -0.457813303598877170f,\n  0.887639620402853930f, -0.460538710958240010f, 0.886222530148880640f, -0.463259783551860150f,\n  0.884797098430937790f, -0.465976495767966180f, 0.883363338665731580f, -0.468688822035827900f,\n  0.881921264348355050f, -0.471396736825997640f, 0.880470889052160750f, -0.474100214650549970f,\n  0.879012226428633530f, -0.476799230063322090f, 0.877545290207261350f, -0.479493757660153010f,\n  0.876070094195406600f, -0.482183772079122720f, 0.874586652278176110f, -0.484869248000791060f,\n  0.873094978418290090f, -0.487550160148436000f, 0.871595086655950980f, -0.490226483288291160f,\n  0.870086991108711460f, -0.492898192229784040f, 0.868570705971340900f, -0.495565261825772540f,\n  0.867046245515692650f, -0.498227666972781870f, 0.865513624090569090f, -0.500885382611240710f,\n  0.863972856121586810f, -0.503538383725717580f, 0.862423956111040610f, -0.506186645345155230f,\n  0.860866938637767310f, -0.508830142543106990f, 0.859301818357008470f, -0.511468850437970300f,\n  0.857728610000272120f, -0.514102744193221660f, 0.856147328375194470f, -0.516731799017649870f,\n  0.854557988365400530f, -0.519355990165589640f, 0.852960604930363630f, -0.521975292937154390f,\n  0.851355193105265200f, -0.524589682678468950f, 0.849741768000852550f, -0.527199134781901280f,\n  0.848120344803297230f, -0.529803624686294610f, 0.846490938774052130f, -0.532403127877197900f,\n  0.844853565249707120f, -0.534997619887097150f, 0.843208239641845440f, -0.537587076295645390f,\n  0.841554977436898440f, -0.540171472729892850f, 0.839893794195999520f, -0.542750784864515890f,\n  0.838224705554838080f, -0.545324988422046460f, 0.836547727223512010f, -0.547894059173100190f,\n  0.834862874986380010f, -0.550457972936604810f, 0.833170164701913190f, -0.553016705580027470f,\n  0.831469612302545240f, -0.555570233019602180f, 0.829761233794523050f, -0.558118531220556100f,\n  0.828045045257755800f, -0.560661576197336030f, 0.826321062845663530f, -0.563199344013834090f,\n  0.824589302785025290f, -0.565731810783613120f, 0.822849781375826430f, -0.568258952670131490f,\n  0.821102514991104650f, -0.570780745886967260f, 0.819347520076796900f, -0.573297166698042200f,\n  0.817584813151583710f, -0.575808191417845340f, 0.815814410806733780f, -0.578313796411655590f,\n  0.814036329705948410f, -0.580813958095764530f, 0.812250586585203880f, -0.583308652937698290f,\n  0.810457198252594770f, -0.585797857456438860f, 0.808656181588174980f, -0.588281548222645220f,\n  0.806847553543799330f, -0.590759701858874160f, 0.805031331142963660f, -0.593232295039799800f,\n  0.803207531480644940f, -0.595699304492433360f, 0.801376171723140240f, -0.598160706996342270f,\n  0.799537269107905010f, -0.600616479383868970f, 0.797690840943391160f, -0.603066598540348160f,\n  0.795836904608883570f, -0.605511041404325550f, 0.793975477554337170f, -0.607949784967773630f,\n  0.792106577300212390f, -0.610382806276309480f, 0.790230221437310030f, -0.612810082429409710f,\n  0.788346427626606340f, -0.615231590580626820f, 0.786455213599085770f, -0.617647307937803870f,\n  0.784556597155575240f, -0.620057211763289100f, 0.782650596166575730f, -0.622461279374149970f,\n  0.780737228572094490f, -0.624859488142386340f, 0.778816512381475980f, -0.627251815495144080f,\n  0.776888465673232440f, -0.629638238914926980f, 0.774953106594873930f, -0.632018735939809060f,\n  0.773010453362736990f, -0.634393284163645490f, 0.771060524261813820f, -0.636761861236284200f,\n  0.769103337645579700f, -0.639124444863775730f, 0.767138911935820400f, -0.641481012808583160f,\n  0.765167265622458960f, -0.643831542889791390f, 0.763188417263381270f, -0.646176012983316280f,\n  0.761202385484261780f, -0.648514401022112440f, 0.759209188978388070f, -0.650846684996380880f,\n  0.757208846506484570f, -0.653172842953776760f, 0.755201376896536550f, -0.655492852999615350f,\n  0.753186799043612520f, -0.657806693297078640f, 0.751165131909686480f, -0.660114342067420480f,\n  0.749136394523459370f, -0.662415777590171780f, 0.747100605980180130f, -0.664710978203344790f,\n  0.745057785441466060f, -0.666999922303637470f, 0.743007952135121720f, -0.669282588346636010f,\n  0.740951125354959110f, -0.671558954847018330f, 0.738887324460615110f, -0.673829000378756040f,\n  0.736816568877369900f, -0.676092703575315920f, 0.734738878095963500f, -0.678350043129861470f,\n  0.732654271672412820f, -0.680600997795453020f, 0.730562769227827590f, -0.682845546385248080f,\n  0.728464390448225200f, -0.685083667772700360f, 0.726359155084346010f, -0.687315340891759050f,\n  0.724247082951467000f, -0.689540544737066830f, 0.722128193929215350f, -0.691759258364157750f,\n  0.720002507961381650f, -0.693971460889654000f, 0.717870045055731710f, -0.696177131491462990f,\n  0.715730825283818590f, -0.698376249408972920f, 0.713584868780793640f, -0.700568793943248340f,\n  0.711432195745216430f, -0.702754744457225300f, 0.709272826438865690f, -0.704934080375904880f,\n  0.707106781186547570f, -0.707106781186547460f, 0.704934080375904990f, -0.709272826438865580f,\n  0.702754744457225300f, -0.711432195745216430f, 0.700568793943248450f, -0.713584868780793520f,\n  0.698376249408972920f, -0.715730825283818590f, 0.696177131491462990f, -0.717870045055731710f,\n  0.693971460889654000f, -0.720002507961381650f, 0.691759258364157750f, -0.722128193929215350f,\n  0.689540544737066940f, -0.724247082951466890f, 0.687315340891759160f, -0.726359155084346010f,\n  0.685083667772700360f, -0.728464390448225200f, 0.682845546385248080f, -0.730562769227827590f,\n  0.680600997795453130f, -0.732654271672412820f, 0.678350043129861580f, -0.734738878095963390f,\n  0.676092703575316030f, -0.736816568877369790f, 0.673829000378756150f, -0.738887324460615110f,\n  0.671558954847018330f, -0.740951125354959110f, 0.669282588346636010f, -0.743007952135121720f,\n  0.666999922303637470f, -0.745057785441465950f, 0.664710978203344900f, -0.747100605980180130f,\n  0.662415777590171780f, -0.749136394523459260f, 0.660114342067420480f, -0.751165131909686370f,\n  0.657806693297078640f, -0.753186799043612410f, 0.655492852999615460f, -0.755201376896536550f,\n  0.653172842953776760f, -0.757208846506484460f, 0.650846684996380990f, -0.759209188978387960f,\n  0.648514401022112550f, -0.761202385484261780f, 0.646176012983316390f, -0.763188417263381270f,\n  0.643831542889791500f, -0.765167265622458960f, 0.641481012808583160f, -0.767138911935820400f,\n  0.639124444863775730f, -0.769103337645579590f, 0.636761861236284200f, -0.771060524261813710f,\n  0.634393284163645490f, -0.773010453362736990f, 0.632018735939809060f, -0.774953106594873820f,\n  0.629638238914927100f, -0.776888465673232440f, 0.627251815495144190f, -0.778816512381475870f,\n  0.624859488142386450f, -0.780737228572094380f, 0.622461279374150080f, -0.782650596166575730f,\n  0.620057211763289210f, -0.784556597155575240f, 0.617647307937803980f, -0.786455213599085770f,\n  0.615231590580626820f, -0.788346427626606230f, 0.612810082429409710f, -0.790230221437310030f,\n  0.610382806276309480f, -0.792106577300212390f, 0.607949784967773740f, -0.793975477554337170f,\n  0.605511041404325550f, -0.795836904608883460f, 0.603066598540348280f, -0.797690840943391040f,\n  0.600616479383868970f, -0.799537269107905010f, 0.598160706996342380f, -0.801376171723140130f,\n  0.595699304492433470f, -0.803207531480644830f, 0.593232295039799800f, -0.805031331142963660f,\n  0.590759701858874280f, -0.806847553543799220f, 0.588281548222645330f, -0.808656181588174980f,\n  0.585797857456438860f, -0.810457198252594770f, 0.583308652937698290f, -0.812250586585203880f,\n  0.580813958095764530f, -0.814036329705948300f, 0.578313796411655590f, -0.815814410806733780f,\n  0.575808191417845340f, -0.817584813151583710f, 0.573297166698042320f, -0.819347520076796900f,\n  0.570780745886967370f, -0.821102514991104650f, 0.568258952670131490f, -0.822849781375826320f,\n  0.565731810783613230f, -0.824589302785025290f, 0.563199344013834090f, -0.826321062845663420f,\n  0.560661576197336030f, -0.828045045257755800f, 0.558118531220556100f, -0.829761233794523050f,\n  0.555570233019602290f, -0.831469612302545240f, 0.553016705580027580f, -0.833170164701913190f,\n  0.550457972936604810f, -0.834862874986380010f, 0.547894059173100190f, -0.836547727223511890f,\n  0.545324988422046460f, -0.838224705554837970f, 0.542750784864516000f, -0.839893794195999410f,\n  0.540171472729892970f, -0.841554977436898330f, 0.537587076295645510f, -0.843208239641845440f,\n  0.534997619887097260f, -0.844853565249707010f, 0.532403127877198010f, -0.846490938774052020f,\n  0.529803624686294830f, -0.848120344803297120f, 0.527199134781901390f, -0.849741768000852440f,\n  0.524589682678468840f, -0.851355193105265200f, 0.521975292937154390f, -0.852960604930363630f,\n  0.519355990165589530f, -0.854557988365400530f, 0.516731799017649980f, -0.856147328375194470f,\n  0.514102744193221660f, -0.857728610000272120f, 0.511468850437970520f, -0.859301818357008360f,\n  0.508830142543106990f, -0.860866938637767310f, 0.506186645345155450f, -0.862423956111040500f,\n  0.503538383725717580f, -0.863972856121586700f, 0.500885382611240940f, -0.865513624090568980f,\n  0.498227666972781870f, -0.867046245515692650f, 0.495565261825772490f, -0.868570705971340900f,\n  0.492898192229784090f, -0.870086991108711350f, 0.490226483288291100f, -0.871595086655951090f,\n  0.487550160148436050f, -0.873094978418290090f, 0.484869248000791120f, -0.874586652278176110f,\n  0.482183772079122830f, -0.876070094195406600f, 0.479493757660153010f, -0.877545290207261240f,\n  0.476799230063322250f, -0.879012226428633410f, 0.474100214650550020f, -0.880470889052160750f,\n  0.471396736825997810f, -0.881921264348354940f, 0.468688822035827960f, -0.883363338665731580f,\n  0.465976495767966130f, -0.884797098430937790f, 0.463259783551860260f, -0.886222530148880640f,\n  0.460538710958240010f, -0.887639620402853930f, 0.457813303598877290f, -0.889048355854664570f,\n  0.455083587126343840f, -0.890448723244757880f, 0.452349587233771000f, -0.891840709392342720f,\n  0.449611329654606600f, -0.893224301195515320f, 0.446868840162374330f, -0.894599485631382580f,\n  0.444122144570429260f, -0.895966249756185110f, 0.441371268731716620f, -0.897324580705418320f,\n  0.438616238538527710f, -0.898674465693953820f, 0.435857079922255470f, -0.900015892016160280f,\n  0.433093818853152010f, -0.901348847046022030f, 0.430326481340082610f, -0.902673318237258830f,\n  0.427555093430282200f, -0.903989293123443340f, 0.424779681209108810f, -0.905296759318118820f,\n  0.422000270799799790f, -0.906595704514915330f, 0.419216888363223960f, -0.907886116487666150f,\n  0.416429560097637320f, -0.909167983090522270f, 0.413638312238434560f, -0.910441292258067140f,\n  0.410843171057903910f, -0.911706032005429880f, 0.408044162864978740f, -0.912962190428398100f,\n  0.405241314004989860f, -0.914209755703530690f, 0.402434650859418540f, -0.915448716088267830f,\n  0.399624199845646790f, -0.916679059921042700f, 0.396809987416710420f, -0.917900775621390390f,\n  0.393992040061048100f, -0.919113851690057770f, 0.391170384302253980f, -0.920318276709110480f,\n  0.388345046698826300f, -0.921514039342041900f, 0.385516053843919020f, -0.922701128333878520f,\n  0.382683432365089840f, -0.923879532511286740f, 0.379847208924051110f, -0.925049240782677580f,\n  0.377007410216418310f, -0.926210242138311270f, 0.374164062971457990f, -0.927362525650401110f,\n  0.371317193951837600f, -0.928506080473215480f, 0.368466829953372320f, -0.929640895843181330f,\n  0.365612997804773960f, -0.930766961078983710f, 0.362755724367397230f, -0.931884265581668150f,\n  0.359895036534988280f, -0.932992798834738850f, 0.357030961233430030f, -0.934092550404258870f,\n  0.354163525420490510f, -0.935183509938947500f, 0.351292756085567150f, -0.936265667170278260f,\n  0.348418680249434510f, -0.937339011912574960f, 0.345541324963989150f, -0.938403534063108060f,\n  0.342660717311994380f, -0.939459223602189920f, 0.339776884406826960f, -0.940506070593268300f,\n  0.336889853392220050f, -0.941544065183020810f, 0.333999651442009490f, -0.942573197601446870f,\n  0.331106305759876430f, -0.943593458161960390f, 0.328209843579092660f, -0.944604837261480260f,\n  0.325310292162262980f, -0.945607325380521280f, 0.322407678801070020f, -0.946600913083283530f,\n  0.319502030816015750f, -0.947585591017741090f, 0.316593375556165850f, -0.948561349915730270f,\n  0.313681740398891570f, -0.949528180593036670f, 0.310767152749611470f, -0.950486073949481700f,\n  0.307849640041534980f, -0.951435020969008340f, 0.304929229735402430f, -0.952375012719765880f,\n  0.302005949319228200f, -0.953306040354193750f, 0.299079826308040480f, -0.954228095109105670f,\n  0.296150888243623960f, -0.955141168305770670f, 0.293219162694258680f, -0.956045251349996410f,\n  0.290284677254462330f, -0.956940335732208940f, 0.287347459544729570f, -0.957826413027532910f,\n  0.284407537211271820f, -0.958703474895871600f, 0.281464937925758050f, -0.959571513081984520f,\n  0.278519689385053060f, -0.960430519415565790f, 0.275571819310958250f, -0.961280485811320640f,\n  0.272621355449948980f, -0.962121404269041580f, 0.269668325572915200f, -0.962953266873683880f,\n  0.266712757474898420f, -0.963776065795439840f, 0.263754678974831510f, -0.964589793289812650f,\n  0.260794117915275570f, -0.965394441697689400f, 0.257831102162158930f, -0.966190003445412620f,\n  0.254865659604514630f, -0.966976471044852070f, 0.251897818154216910f, -0.967753837093475510f,\n  0.248927605745720260f, -0.968522094274417270f, 0.245955050335794590f, -0.969281235356548530f,\n  0.242980179903263980f, -0.970031253194543970f, 0.240003022448741500f, -0.970772140728950350f,\n  0.237023605994367340f, -0.971503890986251780f, 0.234041958583543460f, -0.972226497078936270f,\n  0.231058108280671280f, -0.972939952205560070f, 0.228072083170885790f, -0.973644249650811870f,\n  0.225083911359792780f, -0.974339382785575860f, 0.222093620973203590f, -0.975025345066994120f,\n  0.219101240156869770f, -0.975702130038528570f, 0.216106797076219600f, -0.976369731330021140f,\n  0.213110319916091360f, -0.977028142657754390f, 0.210111836880469720f, -0.977677357824509930f,\n  0.207111376192218560f, -0.978317370719627650f, 0.204108966092817010f, -0.978948175319062200f,\n  0.201104634842091960f, -0.979569765685440520f, 0.198098410717953730f, -0.980182135968117320f,\n  0.195090322016128330f, -0.980785280403230430f, 0.192080397049892380f, -0.981379193313754560f,\n  0.189068664149806280f, -0.981963869109555240f, 0.186055151663446630f, -0.982539302287441240f,\n  0.183039887955141060f, -0.983105487431216290f, 0.180022901405699510f, -0.983662419211730250f,\n  0.177004220412148860f, -0.984210092386929030f, 0.173983873387463850f, -0.984748501801904210f,\n  0.170961888760301360f, -0.985277642388941220f, 0.167938294974731230f, -0.985797509167567370f,\n  0.164913120489970090f, -0.986308097244598670f, 0.161886393780111910f, -0.986809401814185420f,\n  0.158858143333861390f, -0.987301418157858430f, 0.155828397654265320f, -0.987784141644572180f,\n  0.152797185258443410f, -0.988257567730749460f, 0.149764534677321620f, -0.988721691960323780f,\n  0.146730474455361750f, -0.989176509964781010f, 0.143695033150294580f, -0.989622017463200780f,\n  0.140658239332849240f, -0.990058210262297120f, 0.137620121586486180f, -0.990485084256456980f,\n  0.134580708507126220f, -0.990902635427780010f, 0.131540028702883280f, -0.991310859846115440f,\n  0.128498110793793220f, -0.991709753669099530f, 0.125454983411546210f, -0.992099313142191800f,\n  0.122410675199216280f, -0.992479534598709970f, 0.119365214810991350f, -0.992850414459865100f,\n  0.116318630911904880f, -0.993211949234794500f, 0.113270952177564360f, -0.993564135520595300f,\n  0.110222207293883180f, -0.993906970002356060f, 0.107172424956808870f, -0.994240449453187900f,\n  0.104121633872054730f, -0.994564570734255420f, 0.101069862754827880f, -0.994879330794805620f,\n  0.098017140329560770f, -0.995184726672196820f, 0.094963495329639061f, -0.995480755491926940f,\n  0.091908956497132696f, -0.995767414467659820f, 0.088853552582524684f, -0.996044700901251970f,\n  0.085797312344439880f, -0.996312612182778000f, 0.082740264549375803f, -0.996571145790554840f,\n  0.079682437971430126f, -0.996820299291165670f, 0.076623861392031617f, -0.997060070339482960f,\n  0.073564563599667454f, -0.997290456678690210f, 0.070504573389614009f, -0.997511456140303450f,\n  0.067443919563664106f, -0.997723066644191640f, 0.064382630929857410f, -0.997925286198596000f,\n  0.061320736302208648f, -0.998118112900149180f, 0.058258264500435732f, -0.998301544933892890f,\n  0.055195244349690031f, -0.998475580573294770f, 0.052131704680283317f, -0.998640218180265270f,\n  0.049067674327418126f, -0.998795456205172410f, 0.046003182130914644f, -0.998941293186856870f,\n  0.042938256934940959f, -0.999077727752645360f, 0.039872927587739845f, -0.999204758618363890f,\n  0.036807222941358991f, -0.999322384588349540f, 0.033741171851377642f, -0.999430604555461730f,\n  0.030674803176636581f, -0.999529417501093140f, 0.027608145778965820f, -0.999618822495178640f,\n  0.024541228522912264f, -0.999698818696204250f, 0.021474080275469605f, -0.999769405351215280f,\n  0.018406729905804820f, -0.999830581795823400f, 0.015339206284988220f, -0.999882347454212560f,\n  0.012271538285719944f, -0.999924701839144500f, 0.009203754782059960f, -0.999957644551963900f,\n  0.006135884649154515f, -0.999981175282601110f, 0.003067956762966138f, -0.999995293809576190f\n};\n\n    const float32_t cos_factors_512[512] = {\n  0.999998823451701880f, 0.999989411081928400f, 0.999970586430974140f,\n  0.999942349676023910f,\n  0.999904701082852900f, 0.999857641005823860f, 0.999801169887884260f,\n  0.999735288260561680f,\n  0.999659996743959220f, 0.999575296046749220f, 0.999481186966166950f,\n  0.999377670388002850f,\n  0.999264747286594420f, 0.999142418724816910f, 0.999010685854073380f,\n  0.998869549914283560f,\n  0.998719012233872940f, 0.998559074229759310f, 0.998389737407340160f,\n  0.998211003360478190f,\n  0.998022873771486240f, 0.997825350411111640f, 0.997618435138519550f,\n  0.997402129901275300f,\n  0.997176436735326190f, 0.996941357764982160f, 0.996696895202896060f,\n  0.996443051350042630f,\n  0.996179828595696980f, 0.995907229417411720f, 0.995625256380994310f,\n  0.995333912140482280f,\n  0.995033199438118630f, 0.994723121104325700f, 0.994403680057679100f,\n  0.994074879304879370f,\n  0.993736721940724600f, 0.993389211148080650f, 0.993032350197851410f,\n  0.992666142448948020f,\n  0.992290591348257370f, 0.991905700430609330f, 0.991511473318743900f,\n  0.991107913723276890f,\n  0.990695025442664630f, 0.990272812363169110f, 0.989841278458820530f,\n  0.989400427791380380f,\n  0.988950264510302990f, 0.988490792852696590f, 0.988022017143283530f,\n  0.987543941794359230f,\n  0.987056571305750970f, 0.986559910264775410f, 0.986053963346195440f,\n  0.985538735312176060f,\n  0.985014231012239840f, 0.984480455383220930f, 0.983937413449218920f,\n  0.983385110321551180f,\n  0.982823551198705240f, 0.982252741366289370f, 0.981672686196983110f,\n  0.981083391150486710f,\n  0.980484861773469380f, 0.979877103699517640f, 0.979260122649082020f,\n  0.978633924429423210f,\n  0.977998514934557140f, 0.977353900145199960f, 0.976700086128711840f,\n  0.976037079039039020f,\n  0.975364885116656980f, 0.974683510688510670f, 0.973992962167955830f,\n  0.973293246054698250f,\n  0.972584368934732210f, 0.971866337480279400f, 0.971139158449725090f,\n  0.970402838687555500f,\n  0.969657385124292450f, 0.968902804776428870f, 0.968139104746362440f,\n  0.967366292222328510f,\n  0.966584374478333120f, 0.965793358874083680f, 0.964993252854920320f,\n  0.964184063951745830f,\n  0.963365799780954050f, 0.962538468044359160f, 0.961702076529122540f,\n  0.960856633107679660f,\n  0.960002145737665960f, 0.959138622461841890f, 0.958266071408017670f,\n  0.957384500788975860f,\n  0.956493918902395100f, 0.955594334130771110f, 0.954685754941338340f,\n  0.953768189885990330f,\n  0.952841647601198720f, 0.951906136807932350f, 0.950961666311575080f,\n  0.950008245001843000f,\n  0.949045881852700560f, 0.948074585922276230f, 0.947094366352777220f,\n  0.946105232370403450f,\n  0.945107193285260610f, 0.944100258491272660f, 0.943084437466093490f,\n  0.942059739771017310f,\n  0.941026175050889260f, 0.939983753034014050f, 0.938932483532064600f,\n  0.937872376439989890f,\n  0.936803441735921560f, 0.935725689481080370f, 0.934639129819680780f,\n  0.933543772978836170f,\n  0.932439629268462360f, 0.931326709081180430f, 0.930205022892219070f,\n  0.929074581259315860f,\n  0.927935394822617890f, 0.926787474304581750f, 0.925630830509872720f,\n  0.924465474325262600f,\n  0.923291416719527640f, 0.922108668743345180f, 0.920917241529189520f,\n  0.919717146291227360f,\n  0.918508394325212250f, 0.917290997008377910f, 0.916064965799331720f,\n  0.914830312237946200f,\n  0.913587047945250810f, 0.912335184623322750f, 0.911074734055176360f,\n  0.909805708104652220f,\n  0.908528118716306120f, 0.907241977915295820f, 0.905947297807268460f,\n  0.904644090578246240f,\n  0.903332368494511820f, 0.902012143902493180f, 0.900683429228646970f,\n  0.899346236979341570f,\n  0.898000579740739880f, 0.896646470178680150f, 0.895283921038557580f,\n  0.893912945145203250f,\n  0.892533555402764580f, 0.891145764794583180f, 0.889749586383072780f,\n  0.888345033309596350f,\n  0.886932118794342190f, 0.885510856136199950f, 0.884081258712634990f,\n  0.882643339979562790f,\n  0.881197113471222090f, 0.879742592800047410f, 0.878279791656541580f,\n  0.876808723809145650f,\n  0.875329403104110890f, 0.873841843465366860f, 0.872346058894391540f,\n  0.870842063470078980f,\n  0.869329871348606840f, 0.867809496763303320f, 0.866280954024512990f,\n  0.864744257519462380f,\n  0.863199421712124160f, 0.861646461143081300f, 0.860085390429390140f,\n  0.858516224264442740f,\n  0.856938977417828760f, 0.855353664735196030f, 0.853760301138111410f,\n  0.852158901623919830f,\n  0.850549481265603480f, 0.848932055211639610f, 0.847306638685858320f,\n  0.845673246987299070f,\n  0.844031895490066410f, 0.842382599643185850f, 0.840725374970458070f,\n  0.839060237070312740f,\n  0.837387201615661940f, 0.835706284353752600f, 0.834017501106018130f,\n  0.832320867767929680f,\n  0.830616400308846310f, 0.828904114771864870f, 0.827184027273669130f,\n  0.825456154004377550f,\n  0.823720511227391430f, 0.821977115279241550f, 0.820225982569434690f,\n  0.818467129580298660f,\n  0.816700572866827850f, 0.814926329056526620f, 0.813144414849253590f,\n  0.811354847017063730f,\n  0.809557642404051260f, 0.807752817926190360f, 0.805940390571176280f,\n  0.804120377398265810f,\n  0.802292795538115720f, 0.800457662192622820f, 0.798614994634760820f,\n  0.796764810208418830f,\n  0.794907126328237010f, 0.793041960479443640f, 0.791169330217690200f,\n  0.789289253168885650f,\n  0.787401747029031430f, 0.785506829564053930f, 0.783604518609638200f,\n  0.781694832071059390f,\n  0.779777787923014550f, 0.777853404209453150f, 0.775921699043407690f,\n  0.773982690606822900f,\n  0.772036397150384520f, 0.770082836993347900f, 0.768122028523365420f,\n  0.766153990196312920f,\n  0.764178740536116670f, 0.762196298134578900f, 0.760206681651202420f,\n  0.758209909813015280f,\n  0.756206001414394540f, 0.754194975316889170f, 0.752176850449042810f,\n  0.750151645806215070f,\n  0.748119380450403600f, 0.746080073510063780f, 0.744033744179929290f,\n  0.741980411720831070f,\n  0.739920095459516200f, 0.737852814788465980f, 0.735778589165713590f,\n  0.733697438114660370f,\n  0.731609381223892630f, 0.729514438146997010f, 0.727412628602375770f,\n  0.725303972373060770f,\n  0.723188489306527460f, 0.721066199314508110f, 0.718937122372804490f,\n  0.716801278521099540f,\n  0.714658687862769090f, 0.712509370564692320f, 0.710353346857062420f,\n  0.708190637033195400f,\n  0.706021261449339740f, 0.703845240524484940f, 0.701662594740168570f,\n  0.699473344640283770f,\n  0.697277510830886630f, 0.695075113980000880f, 0.692866174817424740f,\n  0.690650714134534720f,\n  0.688428752784090550f, 0.686200311680038700f, 0.683965411797315510f,\n  0.681724074171649820f,\n  0.679476319899365080f, 0.677222170137180450f, 0.674961646102012040f,\n  0.672694769070772970f,\n  0.670421560380173090f, 0.668142041426518560f, 0.665856233665509720f,\n  0.663564158612039880f,\n  0.661265837839992270f, 0.658961292982037320f, 0.656650545729429050f,\n  0.654333617831800550f,\n  0.652010531096959500f, 0.649681307390683190f, 0.647345968636512060f,\n  0.645004536815544040f,\n  0.642657033966226860f, 0.640303482184151670f, 0.637943903621844170f,\n  0.635578320488556230f,\n  0.633206755050057190f, 0.630829229628424470f, 0.628445766601832710f,\n  0.626056388404343520f,\n  0.623661117525694640f, 0.621259976511087660f, 0.618852987960976320f,\n  0.616440174530853650f,\n  0.614021558931038490f, 0.611597163926462020f, 0.609167012336453210f,\n  0.606731127034524480f,\n  0.604289530948156070f, 0.601842247058580030f, 0.599389298400564540f,\n  0.596930708062196500f,\n  0.594466499184664540f, 0.591996694962040990f, 0.589521318641063940f,\n  0.587040393520918080f,\n  0.584553942953015330f, 0.582061990340775550f, 0.579564559139405740f,\n  0.577061672855679550f,\n  0.574553355047715760f, 0.572039629324757050f, 0.569520519346947250f,\n  0.566996048825108680f,\n  0.564466241520519500f, 0.561931121244689470f, 0.559390711859136140f,\n  0.556845037275160100f,\n  0.554294121453620110f, 0.551737988404707450f, 0.549176662187719770f,\n  0.546610166910834860f,\n  0.544038526730883930f, 0.541461765853123560f, 0.538879908531008420f,\n  0.536292979065963180f,\n  0.533701001807152960f, 0.531104001151255000f, 0.528502001542228480f,\n  0.525895027471084740f,\n  0.523283103475656430f, 0.520666254140367270f, 0.518044504095999340f,\n  0.515417878019463150f,\n  0.512786400633563070f, 0.510150096706766700f, 0.507508991052970870f,\n  0.504863108531267480f,\n  0.502212474045710900f, 0.499557112545081890f, 0.496897049022654640f,\n  0.494232308515959730f,\n  0.491562916106550060f, 0.488888896919763230f, 0.486210276124486530f,\n  0.483527078932918740f,\n  0.480839330600333900f, 0.478147056424843120f, 0.475450281747155870f,\n  0.472749031950342900f,\n  0.470043332459595620f, 0.467333208741988530f, 0.464618686306237820f,\n  0.461899790702462840f,\n  0.459176547521944150f, 0.456448982396883860f, 0.453717121000163930f,\n  0.450980989045103810f,\n  0.448240612285220000f, 0.445496016513981740f, 0.442747227564570130f,\n  0.439994271309633260f,\n  0.437237173661044200f, 0.434475960569655710f, 0.431710658025057370f,\n  0.428941292055329550f,\n  0.426167888726799620f, 0.423390474143796100f, 0.420609074448402510f,\n  0.417823715820212380f,\n  0.415034424476081630f, 0.412241226669883000f, 0.409444148692257590f,\n  0.406643216870369140f,\n  0.403838457567654130f, 0.401029897183575790f, 0.398217562153373620f,\n  0.395401478947816300f,\n  0.392581674072951530f, 0.389758174069856410f, 0.386931005514388690f,\n  0.384100195016935040f,\n  0.381265769222162490f, 0.378427754808765620f, 0.375586178489217330f,\n  0.372741067009515810f,\n  0.369892447148934270f, 0.367040345719767240f, 0.364184789567079840f,\n  0.361325805568454340f,\n  0.358463420633736540f, 0.355597661704783960f, 0.352728555755210730f,\n  0.349856129790135030f,\n  0.346980410845923680f, 0.344101425989938980f, 0.341219202320282410f,\n  0.338333766965541290f,\n  0.335445147084531660f, 0.332553369866044220f, 0.329658462528587550f,\n  0.326760452320131790f,\n  0.323859366517852960f, 0.320955232427875210f, 0.318048077385015060f,\n  0.315137928752522440f,\n  0.312224813921825050f, 0.309308760312268780f, 0.306389795370861080f,\n  0.303467946572011370f,\n  0.300543241417273400f, 0.297615707435086310f, 0.294685372180514330f,\n  0.291752263234989370f,\n  0.288816408206049480f, 0.285877834727080730f, 0.282936570457055390f,\n  0.279992643080273380f,\n  0.277046080306099950f, 0.274096909868706330f, 0.271145159526808070f,\n  0.268190857063403180f,\n  0.265234030285511900f, 0.262274707023913590f, 0.259312915132886350f,\n  0.256348682489942910f,\n  0.253382036995570270f, 0.250413006572965280f, 0.247441619167773440f,\n  0.244467902747824210f,\n  0.241491885302869300f, 0.238513594844318500f, 0.235533059404975460f,\n  0.232550307038775330f,\n  0.229565365820518870f, 0.226578263845610110f, 0.223589029229790020f,\n  0.220597690108873650f,\n  0.217604274638483670f, 0.214608810993786920f, 0.211611327369227610f,\n  0.208611851978263460f,\n  0.205610413053099320f, 0.202607038844421110f, 0.199601757621131050f,\n  0.196594597670080220f,\n  0.193585587295803750f, 0.190574754820252800f, 0.187562128582529740f,\n  0.184547736938619640f,\n  0.181531608261125130f, 0.178513770938997590f, 0.175494253377271400f,\n  0.172473083996796030f,\n  0.169450291233967930f, 0.166425903540464220f, 0.163399949382973230f,\n  0.160372457242928400f,\n  0.157343455616238280f, 0.154312973013020240f, 0.151281037957330250f,\n  0.148247678986896200f,\n  0.145212924652847520f, 0.142176803519448000f, 0.139139344163826280f,\n  0.136100575175706200f,\n  0.133060525157139180f, 0.130019222722233350f, 0.126976696496885980f,\n  0.123932975118512200f,\n  0.120888087235777220f, 0.117842061508325020f, 0.114794926606510250f,\n  0.111746711211126660f,\n  0.108697444013138670f, 0.105647153713410700f, 0.102595869022436280f,\n  0.099543618660069444f,\n  0.096490431355252607f, 0.093436335845747912f, 0.090381360877865011f,\n  0.087325535206192226f,\n  0.084268887593324127f, 0.081211446809592386f, 0.078153241632794315f,\n  0.075094300847921291f,\n  0.072034653246889416f, 0.068974327628266732f, 0.065913352797003930f,\n  0.062851757564161420f,\n  0.059789570746640007f, 0.056726821166907783f, 0.053663537652730679f,\n  0.050599749036899337f,\n  0.047535484156959261f, 0.044470771854938744f, 0.041405640977076712f,\n  0.038340120373552791f,\n  0.035274238898213947f, 0.032208025408304704f, 0.029141508764193740f,\n  0.026074717829104040f,\n  0.023007681468839410f, 0.019940428551514598f, 0.016872987947281773f,\n  0.013805388528060349f,\n  0.010737659167264572f, 0.007669828739531077f, 0.004601926120448672f,\n  0.001533980186284766f\n};\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_2048)\n    const float32_t Weights_2048[4096] = {\n  1.000000000000000000f, 0.000000000000000000f, 0.999999705862882230f,  -0.000766990318742704f,\n  0.999998823451701880f, -0.001533980186284766f, 0.999997352766978210f,  -0.002300969151425805f,\n  0.999995293809576190f, -0.003067956762965976f, 0.999992646580707190f,  -0.003834942569706228f,\n  0.999989411081928400f, -0.004601926120448571f, 0.999985587315143200f,  -0.005368906963996343f,\n  0.999981175282601110f, -0.006135884649154475f, 0.999976174986897610f,  -0.006902858724729756f,\n  0.999970586430974140f, -0.007669828739531097f, 0.999964409618118280f,  -0.008436794242369799f,\n  0.999957644551963900f, -0.009203754782059819f, 0.999950291236490480f,  -0.009970709907418031f,\n  0.999942349676023910f, -0.010737659167264491f, 0.999933819875236000f,  -0.011504602110422714f,\n  0.999924701839144500f, -0.012271538285719925f, 0.999914995573113470f,  -0.013038467241987334f,\n  0.999904701082852900f, -0.013805388528060391f, 0.999893818374418490f,  -0.014572301692779064f,\n  0.999882347454212560f, -0.015339206284988100f, 0.999870288328982950f,  -0.016106101853537287f,\n  0.999857641005823860f, -0.016872987947281710f, 0.999844405492175240f,  -0.017639864115082053f,\n  0.999830581795823400f, -0.018406729905804820f, 0.999816169924900410f,  -0.019173584868322623f,\n  0.999801169887884260f, -0.019940428551514441f, 0.999785581693599210f,  -0.020707260504265895f,\n  0.999769405351215280f, -0.021474080275469508f, 0.999752640870248840f,  -0.022240887414024961f,\n  0.999735288260561680f, -0.023007681468839369f, 0.999717347532362190f,  -0.023774461988827555f,\n  0.999698818696204250f, -0.024541228522912288f, 0.999679701762987930f,  -0.025307980620024571f,\n  0.999659996743959220f, -0.026074717829103901f, 0.999639703650710200f,  -0.026841439699098531f,\n  0.999618822495178640f, -0.027608145778965740f, 0.999597353289648380f,  -0.028374835617672099f,\n  0.999575296046749220f, -0.029141508764193722f, 0.999552650779456990f,  -0.029908164767516555f,\n  0.999529417501093140f, -0.030674803176636626f, 0.999505596225325310f,  -0.031441423540560301f,\n  0.999481186966166950f, -0.032208025408304586f, 0.999456189737977340f,  -0.032974608328897335f,\n  0.999430604555461730f, -0.033741171851377580f, 0.999404431433671300f,  -0.034507715524795750f,\n  0.999377670388002850f, -0.035274238898213947f, 0.999350321434199440f,  -0.036040741520706229f,\n  0.999322384588349540f, -0.036807222941358832f, 0.999293859866887790f,  -0.037573682709270494f,\n  0.999264747286594420f, -0.038340120373552694f, 0.999235046864595850f,  -0.039106535483329888f,\n  0.999204758618363890f, -0.039872927587739811f, 0.999173882565716380f,  -0.040639296235933736f,\n  0.999142418724816910f, -0.041405640977076739f, 0.999110367114174890f,  -0.042171961360347947f,\n  0.999077727752645360f, -0.042938256934940820f, 0.999044500659429290f,  -0.043704527250063421f,\n  0.999010685854073380f, -0.044470771854938668f, 0.998976283356469820f,  -0.045236990298804590f,\n  0.998941293186856870f, -0.046003182130914623f, 0.998905715365818290f,  -0.046769346900537863f,\n  0.998869549914283560f, -0.047535484156959303f, 0.998832796853527990f,  -0.048301593449480144f,\n  0.998795456205172410f, -0.049067674327418015f, 0.998757527991183340f,  -0.049833726340107277f,\n  0.998719012233872940f, -0.050599749036899282f, 0.998679908955899090f,  -0.051365741967162593f,\n  0.998640218180265270f, -0.052131704680283324f, 0.998599939930320370f,  -0.052897636725665324f,\n  0.998559074229759310f, -0.053663537652730520f, 0.998517621102622210f,  -0.054429407010919133f,\n  0.998475580573294770f, -0.055195244349689934f, 0.998432952666508440f,  -0.055961049218520569f,\n  0.998389737407340160f, -0.056726821166907748f, 0.998345934821212370f,  -0.057492559744367566f,\n  0.998301544933892890f, -0.058258264500435752f, 0.998256567771495180f,  -0.059023934984667931f,\n  0.998211003360478190f, -0.059789570746639868f, 0.998164851727646240f,  -0.060555171335947788f,\n  0.998118112900149180f, -0.061320736302208578f, 0.998070786905482340f,  -0.062086265195060088f,\n  0.998022873771486240f, -0.062851757564161406f, 0.997974373526346990f,  -0.063617212959193106f,\n  0.997925286198596000f, -0.064382630929857465f, 0.997875611817110150f,  -0.065148011025878833f,\n  0.997825350411111640f, -0.065913352797003805f, 0.997774502010167820f,  -0.066678655793001557f,\n  0.997723066644191640f, -0.067443919563664051f, 0.997671044343441000f,  -0.068209143658806329f,\n  0.997618435138519550f, -0.068974327628266746f, 0.997565239060375750f,  -0.069739471021907307f,\n  0.997511456140303450f, -0.070504573389613856f, 0.997457086409941910f,  -0.071269634281296401f,\n  0.997402129901275300f, -0.072034653246889332f, 0.997346586646633230f,  -0.072799629836351673f,\n  0.997290456678690210f, -0.073564563599667426f, 0.997233740030466280f,  -0.074329454086845756f,\n  0.997176436735326190f, -0.075094300847921305f, 0.997118546826979980f,  -0.075859103432954447f,\n  0.997060070339482960f, -0.076623861392031492f, 0.997001007307235290f,  -0.077388574275265049f,\n  0.996941357764982160f, -0.078153241632794232f, 0.996881121747813850f,  -0.078917863014784942f,\n  0.996820299291165670f, -0.079682437971430126f, 0.996758890430818000f,  -0.080446966052950014f,\n  0.996696895202896060f, -0.081211446809592441f, 0.996634313643869900f,  -0.081975879791633066f,\n  0.996571145790554840f, -0.082740264549375692f, 0.996507391680110820f,  -0.083504600633152432f,\n  0.996443051350042630f, -0.084268887593324071f, 0.996378124838200210f,  -0.085033124980280275f,\n  0.996312612182778000f, -0.085797312344439894f, 0.996246513422315520f,  -0.086561449236251170f,\n  0.996179828595696980f, -0.087325535206192059f, 0.996112557742151130f,  -0.088089569804770507f,\n  0.996044700901251970f, -0.088853552582524600f, 0.995976258112917790f,  -0.089617483090022959f,\n  0.995907229417411720f, -0.090381360877864983f, 0.995837614855341610f,  -0.091145185496681005f,\n  0.995767414467659820f, -0.091908956497132724f, 0.995696628295663520f,  -0.092672673429913310f,\n  0.995625256380994310f, -0.093436335845747787f, 0.995553298765638470f,  -0.094199943295393204f,\n  0.995480755491926940f, -0.094963495329638992f, 0.995407626602534900f,  -0.095726991499307162f,\n  0.995333912140482280f, -0.096490431355252593f, 0.995259612149133390f,  -0.097253814448363271f,\n  0.995184726672196930f, -0.098017140329560604f, 0.995109255753726110f,  -0.098780408549799623f,\n  0.995033199438118630f, -0.099543618660069319f, 0.994956557770116380f,  -0.100306770211392860f,\n  0.994879330794805620f, -0.101069862754827820f, 0.994801518557617110f,  -0.101832895841466530f,\n  0.994723121104325700f, -0.102595869022436280f, 0.994644138481050710f,  -0.103358781848899610f,\n  0.994564570734255420f, -0.104121633872054590f, 0.994484417910747600f,  -0.104884424643134970f,\n  0.994403680057679100f, -0.105647153713410620f, 0.994322357222545810f,  -0.106409820634187680f,\n  0.994240449453187900f, -0.107172424956808840f, 0.994157956797789730f,  -0.107934966232653650f,\n  0.994074879304879370f, -0.108697444013138720f, 0.993991217023329380f,  -0.109459857849717980f,\n  0.993906970002356060f, -0.110222207293883060f, 0.993822138291519660f,  -0.110984491897163390f,\n  0.993736721940724600f, -0.111746711211126590f, 0.993650721000219120f,  -0.112508864787378690f,\n  0.993564135520595300f, -0.113270952177564350f, 0.993476965552789190f,  -0.114032972933367200f,\n  0.993389211148080650f, -0.114794926606510080f, 0.993300872358093280f,  -0.115556812748755260f,\n  0.993211949234794500f, -0.116318630911904750f, 0.993122441830495580f,  -0.117080380647800590f,\n  0.993032350197851410f, -0.117842061508324980f, 0.992941674389860470f,  -0.118603673045400720f,\n  0.992850414459865100f, -0.119365214810991350f, 0.992758570461551140f,  -0.120126686357101500f,\n  0.992666142448948020f, -0.120888087235777080f, 0.992573130476428810f,  -0.121649416999105530f,\n  0.992479534598709970f, -0.122410675199216200f, 0.992385354870851670f,  -0.123171861388280480f,\n  0.992290591348257370f, -0.123932975118512160f, 0.992195244086673920f,  -0.124694015942167640f,\n  0.992099313142191800f, -0.125454983411546230f, 0.992002798571244520f,  -0.126215877078990350f,\n  0.991905700430609330f, -0.126976696496885870f, 0.991808018777406430f,  -0.127737441217662310f,\n  0.991709753669099530f, -0.128498110793793170f, 0.991610905163495370f,  -0.129258704777796140f,\n  0.991511473318743900f, -0.130019222722233350f, 0.991411458193338540f,  -0.130779664179711710f,\n  0.991310859846115440f, -0.131540028702883120f, 0.991209678336254060f,  -0.132300315844444650f,\n  0.991107913723276890f, -0.133060525157139060f, 0.991005566067049370f,  -0.133820656193754720f,\n  0.990902635427780010f, -0.134580708507126170f, 0.990799121866020370f,  -0.135340681650134210f,\n  0.990695025442664630f, -0.136100575175706200f, 0.990590346218950150f,  -0.136860388636816380f,\n  0.990485084256457090f, -0.137620121586486040f, 0.990379239617108160f,  -0.138379773577783890f,\n  0.990272812363169110f, -0.139139344163826200f, 0.990165802557248400f,  -0.139898832897777210f,\n  0.990058210262297120f, -0.140658239332849210f, 0.989950035541608990f,  -0.141417563022303020f,\n  0.989841278458820530f, -0.142176803519448030f, 0.989731939077910570f,  -0.142935960377642670f,\n  0.989622017463200890f, -0.143695033150294470f, 0.989511513679355190f,  -0.144454021390860470f,\n  0.989400427791380380f, -0.145212924652847460f, 0.989288759864625170f,  -0.145971742489812210f,\n  0.989176509964781010f, -0.146730474455361750f, 0.989063678157881540f,  -0.147489120103153570f,\n  0.988950264510302990f, -0.148247678986896030f, 0.988836269088763540f,  -0.149006150660348450f,\n  0.988721691960323780f, -0.149764534677321510f, 0.988606533192386450f,  -0.150522830591677400f,\n  0.988490792852696590f, -0.151281037957330220f, 0.988374471009341280f,  -0.152039156328246050f,\n  0.988257567730749460f, -0.152797185258443440f, 0.988140083085692570f,  -0.153555124301993450f,\n  0.988022017143283530f, -0.154312973013020100f, 0.987903369972977790f,  -0.155070730945700510f,\n  0.987784141644572180f, -0.155828397654265230f, 0.987664332228205710f,  -0.156585972692998430f,\n  0.987543941794359230f, -0.157343455616238250f, 0.987422970413855410f,  -0.158100845978376980f,\n  0.987301418157858430f, -0.158858143333861450f, 0.987179285097874340f,  -0.159615347237193060f,\n  0.987056571305750970f, -0.160372457242928280f, 0.986933276853677710f,  -0.161129472905678810f,\n  0.986809401814185530f, -0.161886393780111830f, 0.986684946260146690f,  -0.162643219420950310f,\n  0.986559910264775410f, -0.163399949382973230f, 0.986434293901627180f,  -0.164156583221015810f,\n  0.986308097244598670f, -0.164913120489969890f, 0.986181320367928270f,  -0.165669560744784120f,\n  0.986053963346195440f, -0.166425903540464100f, 0.985926026254321130f,  -0.167182148432072940f,\n  0.985797509167567480f, -0.167938294974731170f, 0.985668412161537550f,  -0.168694342723617330f,\n  0.985538735312176060f, -0.169450291233967960f, 0.985408478695768420f,  -0.170206140061078070f,\n  0.985277642388941220f, -0.170961888760301220f, 0.985146226468662230f,  -0.171717536887049970f,\n  0.985014231012239840f, -0.172473083996795950f, 0.984881656097323700f,  -0.173228529645070320f,\n  0.984748501801904210f, -0.173983873387463820f, 0.984614768204312600f,  -0.174739114779627200f,\n  0.984480455383220930f, -0.175494253377271430f, 0.984345563417641900f,  -0.176249288736167880f,\n  0.984210092386929030f, -0.177004220412148750f, 0.984074042370776450f,  -0.177759047961107170f,\n  0.983937413449218920f, -0.178513770938997510f, 0.983800205702631600f,  -0.179268388901835750f,\n  0.983662419211730250f, -0.180022901405699510f, 0.983524054057571260f,  -0.180777308006728590f,\n  0.983385110321551180f, -0.181531608261124970f, 0.983245588085407070f,  -0.182285801725153300f,\n  0.983105487431216290f, -0.183039887955140950f, 0.982964808441396440f,  -0.183793866507478450f,\n  0.982823551198705240f, -0.184547736938619620f, 0.982681715786240860f,  -0.185301498805081900f,\n  0.982539302287441240f, -0.186055151663446630f, 0.982396310786084690f,  -0.186808695070359270f,\n  0.982252741366289370f, -0.187562128582529600f, 0.982108594112513610f,  -0.188315451756732120f,\n  0.981963869109555240f, -0.189068664149806190f, 0.981818566442552500f,  -0.189821765318656410f,\n  0.981672686196983110f, -0.190574754820252740f, 0.981526228458664770f,  -0.191327632211630900f,\n  0.981379193313754560f, -0.192080397049892440f, 0.981231580848749730f,  -0.192833048892205230f,\n  0.981083391150486710f, -0.193585587295803610f, 0.980934624306141640f,  -0.194338011817988600f,\n  0.980785280403230430f, -0.195090322016128250f, 0.980635359529608120f,  -0.195842517447657850f,\n  0.980484861773469380f, -0.196594597670080220f, 0.980333787223347960f,  -0.197346562240965920f,\n  0.980182135968117430f, -0.198098410717953560f, 0.980029908096990090f,  -0.198850142658750090f,\n  0.979877103699517640f, -0.199601757621130970f, 0.979723722865591170f,  -0.200353255162940450f,\n  0.979569765685440520f, -0.201104634842091900f, 0.979415232249634780f,  -0.201855896216568050f,\n  0.979260122649082020f, -0.202607038844421130f, 0.979104436975029250f,  -0.203358062283773320f,\n  0.978948175319062200f, -0.204108966092816870f, 0.978791337773105670f,  -0.204859749829814420f,\n  0.978633924429423210f, -0.205610413053099240f, 0.978475935380616830f,  -0.206360955321075510f,\n  0.978317370719627650f, -0.207111376192218560f, 0.978158230539735050f,  -0.207861675225075070f,\n  0.977998514934557140f, -0.208611851978263490f, 0.977838223998050430f,  -0.209361906010474160f,\n  0.977677357824509930f, -0.210111836880469610f, 0.977515916508569280f,  -0.210861644147084860f,\n  0.977353900145199960f, -0.211611327369227550f, 0.977191308829712280f,  -0.212360886105878420f,\n  0.977028142657754390f, -0.213110319916091360f, 0.976864401725312640f,  -0.213859628358993750f,\n  0.976700086128711840f, -0.214608810993786760f, 0.976535195964614470f,  -0.215357867379745550f,\n  0.976369731330021140f, -0.216106797076219520f, 0.976203692322270560f,  -0.216855599642632620f,\n  0.976037079039039020f, -0.217604274638483640f, 0.975869891578341030f,  -0.218352821623346320f,\n  0.975702130038528570f, -0.219101240156869800f, 0.975533794518291360f,  -0.219849529798778700f,\n  0.975364885116656980f, -0.220597690108873510f, 0.975195401932990370f,  -0.221345720647030810f,\n  0.975025345066994120f, -0.222093620973203510f, 0.974854714618708430f,  -0.222841390647421120f,\n  0.974683510688510670f, -0.223589029229789990f, 0.974511733377115720f,  -0.224336536280493600f,\n  0.974339382785575860f, -0.225083911359792830f, 0.974166459015280320f,  -0.225831154028026170f,\n  0.973992962167955830f, -0.226578263845610000f, 0.973818892345666100f,  -0.227325240373038860f,\n  0.973644249650811980f, -0.228072083170885730f, 0.973469034186131070f,  -0.228818791799802220f,\n  0.973293246054698250f, -0.229565365820518870f, 0.973116885359925130f,  -0.230311804793845440f,\n  0.972939952205560180f, -0.231058108280671110f, 0.972762446695688570f,  -0.231804275841964780f,\n  0.972584368934732210f, -0.232550307038775240f, 0.972405719027449770f,  -0.233296201432231590f,\n  0.972226497078936270f, -0.234041958583543430f, 0.972046703194623500f,  -0.234787578054000970f,\n  0.971866337480279400f, -0.235533059404975490f, 0.971685400042008540f,  -0.236278402197919570f,\n  0.971503890986251780f, -0.237023605994367200f, 0.971321810419786160f,  -0.237768670355934190f,\n  0.971139158449725090f, -0.238513594844318420f, 0.970955935183517970f,  -0.239258379021299980f,\n  0.970772140728950350f, -0.240003022448741500f, 0.970587775194143630f,  -0.240747524688588430f,\n  0.970402838687555500f, -0.241491885302869330f, 0.970217331317979160f,  -0.242236103853696010f,\n  0.970031253194543970f, -0.242980179903263870f, 0.969844604426714830f,  -0.243724113013852160f,\n  0.969657385124292450f, -0.244467902747824150f, 0.969469595397413060f,  -0.245211548667627540f,\n  0.969281235356548530f, -0.245955050335794590f, 0.969092305112506210f,  -0.246698407314942410f,\n  0.968902804776428870f, -0.247441619167773270f, 0.968712734459794780f,  -0.248184685457074780f,\n  0.968522094274417380f, -0.248927605745720150f, 0.968330884332445190f,  -0.249670379596668570f,\n  0.968139104746362440f, -0.250413006572965220f, 0.967946755628987800f,  -0.251155486237741920f,\n  0.967753837093475510f, -0.251897818154216970f, 0.967560349253314360f,  -0.252640001885695520f,\n  0.967366292222328510f, -0.253382036995570160f, 0.967171666114676640f,  -0.254123923047320620f,\n  0.966976471044852070f, -0.254865659604514570f, 0.966780707127683270f,  -0.255607246230807380f,\n  0.966584374478333120f, -0.256348682489942910f, 0.966387473212298900f,  -0.257089967945753120f,\n  0.966190003445412500f, -0.257831102162158990f, 0.965991965293840570f,\n  -0.258572084703170340f,\n  0.965793358874083680f, -0.259312915132886230f, 0.965594184302976830f,\n  -0.260053593015495190f,\n  0.965394441697689400f, -0.260794117915275510f, 0.965194131175724720f,\n  -0.261534489396595520f,\n  0.964993252854920320f, -0.262274707023913590f, 0.964791806853447900f,\n  -0.263014770361779000f,\n  0.964589793289812760f, -0.263754678974831350f, 0.964387212282854290f,\n  -0.264494432427801630f,\n  0.964184063951745830f, -0.265234030285511790f, 0.963980348415994110f,\n  -0.265973472112875590f,\n  0.963776065795439840f, -0.266712757474898370f, 0.963571216210257320f,\n  -0.267451885936677620f,\n  0.963365799780954050f, -0.268190857063403180f, 0.963159816628371360f,\n  -0.268929670420357260f,\n  0.962953266873683880f, -0.269668325572915090f, 0.962746150638399410f,\n  -0.270406822086544820f,\n  0.962538468044359160f, -0.271145159526808010f, 0.962330219213737400f,\n  -0.271883337459359720f,\n  0.962121404269041580f, -0.272621355449948980f, 0.961912023333112210f,\n  -0.273359213064418680f,\n  0.961702076529122540f, -0.274096909868706380f, 0.961491563980579000f,\n  -0.274834445428843940f,\n  0.961280485811320640f, -0.275571819310958140f, 0.961068842145519350f,\n  -0.276309031081271080f,\n  0.960856633107679660f, -0.277046080306099900f, 0.960643858822638590f,\n  -0.277782966551857690f,\n  0.960430519415565790f, -0.278519689385053060f, 0.960216615011963430f,\n  -0.279256248372291180f,\n  0.960002145737665960f, -0.279992643080273220f, 0.959787111718839900f,\n  -0.280728873075797190f,\n  0.959571513081984520f, -0.281464937925757940f, 0.959355349953930790f,\n  -0.282200837197147560f,\n  0.959138622461841890f, -0.282936570457055390f, 0.958921330733213170f,\n  -0.283672137272668430f,\n  0.958703474895871600f, -0.284407537211271880f, 0.958485055077976100f,\n  -0.285142769840248670f,\n  0.958266071408017670f, -0.285877834727080620f, 0.958046524014818600f,\n  -0.286612731439347790f,\n  0.957826413027532910f, -0.287347459544729510f, 0.957605738575646350f,\n  -0.288082018611004130f,\n  0.957384500788975860f, -0.288816408206049480f, 0.957162699797670210f,\n  -0.289550627897843030f,\n  0.956940335732208820f, -0.290284677254462330f, 0.956717408723403050f,\n  -0.291018555844085090f,\n  0.956493918902395100f, -0.291752263234989260f, 0.956269866400658030f,\n  -0.292485798995553880f,\n  0.956045251349996410f, -0.293219162694258630f, 0.955820073882545420f,\n  -0.293952353899684660f,\n  0.955594334130771110f, -0.294685372180514330f, 0.955368032227470350f,\n  -0.295418217105532010f,\n  0.955141168305770780f, -0.296150888243623790f, 0.954913742499130520f,\n  -0.296883385163778270f,\n  0.954685754941338340f, -0.297615707435086200f, 0.954457205766513490f,\n  -0.298347854626741400f,\n  0.954228095109105670f, -0.299079826308040480f, 0.953998423103894490f,\n  -0.299811622048383350f,\n  0.953768189885990330f, -0.300543241417273450f, 0.953537395590833280f,\n  -0.301274683984317950f,\n  0.953306040354193860f, -0.302005949319228080f, 0.953074124312172200f,\n  -0.302737036991819140f,\n  0.952841647601198720f, -0.303467946572011320f, 0.952608610358033350f,\n  -0.304198677629829110f,\n  0.952375012719765880f, -0.304929229735402370f, 0.952140854823815830f,\n  -0.305659602458966120f,\n  0.951906136807932350f, -0.306389795370860920f, 0.951670858810193860f,\n  -0.307119808041533100f,\n  0.951435020969008340f, -0.307849640041534870f, 0.951198623423113230f,\n  -0.308579290941525090f,\n  0.950961666311575080f, -0.309308760312268730f, 0.950724149773789610f,\n  -0.310038047724637890f,\n  0.950486073949481700f, -0.310767152749611470f, 0.950247438978705230f,\n  -0.311496074958275910f,\n  0.950008245001843000f, -0.312224813921824880f, 0.949768492159606680f,\n  -0.312953369211560200f,\n  0.949528180593036670f, -0.313681740398891520f, 0.949287310443502120f,\n  -0.314409927055336660f,\n  0.949045881852700560f, -0.315137928752522440f, 0.948803894962658490f,\n  -0.315865745062183960f,\n  0.948561349915730270f, -0.316593375556165850f, 0.948318246854599090f,\n  -0.317320819806421740f,\n  0.948074585922276230f, -0.318048077385014950f, 0.947830367262101010f,\n  -0.318775147864118480f,\n  0.947585591017741090f, -0.319502030816015690f, 0.947340257333192050f,\n  -0.320228725813099860f,\n  0.947094366352777220f, -0.320955232427875210f, 0.946847918221148000f,\n  -0.321681550232956580f,\n  0.946600913083283530f, -0.322407678801069850f, 0.946353351084490590f,\n  -0.323133617705052330f,\n  0.946105232370403450f, -0.323859366517852850f, 0.945856557086983910f,\n  -0.324584924812532150f,\n  0.945607325380521280f, -0.325310292162262930f, 0.945357537397632290f,\n  -0.326035468140330240f,\n  0.945107193285260610f, -0.326760452320131730f, 0.944856293190677210f,\n  -0.327485244275178000f,\n  0.944604837261480260f, -0.328209843579092500f, 0.944352825645594750f,\n  -0.328934249805612200f,\n  0.944100258491272660f, -0.329658462528587490f, 0.943847135947092690f,\n  -0.330382481321982780f,\n  0.943593458161960390f, -0.331106305759876430f, 0.943339225285107720f,\n  -0.331829935416461110f,\n  0.943084437466093490f, -0.332553369866044220f, 0.942829094854802710f,\n  -0.333276608683047930f,\n  0.942573197601446870f, -0.333999651442009380f, 0.942316745856563780f,\n  -0.334722497717581220f,\n  0.942059739771017310f, -0.335445147084531600f, 0.941802179495997650f,\n  -0.336167599117744520f,\n  0.941544065183020810f, -0.336889853392220050f, 0.941285396983928660f,\n  -0.337611909483074620f,\n  0.941026175050889260f, -0.338333766965541130f, 0.940766399536396070f,\n  -0.339055425414969640f,\n  0.940506070593268300f, -0.339776884406826850f, 0.940245188374650880f,\n  -0.340498143516697160f,\n  0.939983753034014050f, -0.341219202320282360f, 0.939721764725153340f,\n  -0.341940060393402190f,\n  0.939459223602189920f, -0.342660717311994380f, 0.939196129819569900f,\n  -0.343381172652115040f,\n  0.938932483532064600f, -0.344101425989938810f, 0.938668284894770170f,\n  -0.344821476901759290f,\n  0.938403534063108060f, -0.345541324963989090f, 0.938138231192824360f,\n  -0.346260969753160010f,\n  0.937872376439989890f, -0.346980410845923680f, 0.937605969960999990f,\n  -0.347699647819051380f,\n  0.937339011912574960f, -0.348418680249434560f, 0.937071502451759190f,\n  -0.349137507714084970f,\n  0.936803441735921560f, -0.349856129790134920f, 0.936534829922755500f,\n  -0.350574546054837510f,\n  0.936265667170278260f, -0.351292756085567090f, 0.935995953636831410f,\n  -0.352010759459819080f,\n  0.935725689481080370f, -0.352728555755210730f, 0.935454874862014620f,\n  -0.353446144549480810f,\n  0.935183509938947610f, -0.354163525420490340f, 0.934911594871516090f,\n  -0.354880697946222790f,\n  0.934639129819680780f, -0.355597661704783850f, 0.934366114943725790f,\n  -0.356314416274402410f,\n  0.934092550404258980f, -0.357030961233429980f, 0.933818436362210960f,\n  -0.357747296160341900f,\n  0.933543772978836170f, -0.358463420633736540f, 0.933268560415712050f,\n  -0.359179334232336500f,\n  0.932992798834738960f, -0.359895036534988110f, 0.932716488398140250f,\n  -0.360610527120662270f,\n  0.932439629268462360f, -0.361325805568454280f, 0.932162221608574430f,\n  -0.362040871457584180f,\n  0.931884265581668150f, -0.362755724367397230f, 0.931605761351257830f,\n  -0.363470363877363760f,\n  0.931326709081180430f, -0.364184789567079890f, 0.931047108935595280f,\n  -0.364899001016267320f,\n  0.930766961078983710f, -0.365612997804773850f, 0.930486265676149780f,\n  -0.366326779512573590f,\n  0.930205022892219070f, -0.367040345719767180f, 0.929923232892639670f,\n  -0.367753696006581980f,\n  0.929640895843181330f, -0.368466829953372320f, 0.929358011909935500f,\n  -0.369179747140620020f,\n  0.929074581259315860f, -0.369892447148934100f, 0.928790604058057020f,\n  -0.370604929559051670f,\n  0.928506080473215590f, -0.371317193951837540f, 0.928221010672169440f,\n  -0.372029239908285010f,\n  0.927935394822617890f, -0.372741067009515760f, 0.927649233092581180f,\n  -0.373452674836780300f,\n  0.927362525650401110f, -0.374164062971457930f, 0.927075272664740100f,\n  -0.374875230995057540f,\n  0.926787474304581750f, -0.375586178489217220f, 0.926499130739230510f,\n  -0.376296905035704790f,\n  0.926210242138311380f, -0.377007410216418260f, 0.925920808671770070f,\n  -0.377717693613385640f,\n  0.925630830509872720f, -0.378427754808765560f, 0.925340307823206310f,\n  -0.379137593384847320f,\n  0.925049240782677580f, -0.379847208924051160f, 0.924757629559513910f,\n  -0.380556601008928520f,\n  0.924465474325262600f, -0.381265769222162380f, 0.924172775251791200f,\n  -0.381974713146567220f,\n  0.923879532511286740f, -0.382683432365089780f, 0.923585746276256670f,\n  -0.383391926460808660f,\n  0.923291416719527640f, -0.384100195016935040f, 0.922996544014246250f,\n  -0.384808237616812880f,\n  0.922701128333878630f, -0.385516053843918850f, 0.922405169852209880f,\n  -0.386223643281862980f,\n  0.922108668743345180f, -0.386931005514388580f, 0.921811625181708120f,\n  -0.387638140125372730f,\n  0.921514039342042010f, -0.388345046698826250f, 0.921215911399408730f,\n  -0.389051724818894380f,\n  0.920917241529189520f, -0.389758174069856410f, 0.920618029907083970f,\n  -0.390464394036126590f,\n  0.920318276709110590f, -0.391170384302253870f, 0.920017982111606570f,\n  -0.391876144452922350f,\n  0.919717146291227360f, -0.392581674072951470f, 0.919415769424947070f,\n  -0.393286972747296400f,\n  0.919113851690057770f, -0.393992040061048100f, 0.918811393264170050f,\n  -0.394696875599433560f,\n  0.918508394325212250f, -0.395401478947816350f, 0.918204855051430900f,\n  -0.396105849691696270f,\n  0.917900775621390500f, -0.396809987416710310f, 0.917596156213972950f,\n  -0.397513891708632330f,\n  0.917290997008377910f, -0.398217562153373560f, 0.916985298184123000f,\n  -0.398920998336982910f,\n  0.916679059921042700f, -0.399624199845646790f, 0.916372282399289140f,\n  -0.400327166265690090f,\n  0.916064965799331720f, -0.401029897183575620f, 0.915757110301956720f,\n  -0.401732392185905010f,\n  0.915448716088267830f, -0.402434650859418430f, 0.915139783339685260f,\n  -0.403136672790995300f,\n  0.914830312237946200f, -0.403838457567654070f, 0.914520302965104450f,\n  -0.404540004776553000f,\n  0.914209755703530690f, -0.405241314004989860f, 0.913898670635911680f,\n  -0.405942384840402510f,\n  0.913587047945250810f, -0.406643216870369030f, 0.913274887814867760f,\n  -0.407343809682607970f,\n  0.912962190428398210f, -0.408044162864978690f, 0.912648955969793900f,\n  -0.408744276005481360f,\n  0.912335184623322750f, -0.409444148692257590f, 0.912020876573568340f,\n  -0.410143780513590240f,\n  0.911706032005429880f, -0.410843171057903910f, 0.911390651104122430f,\n  -0.411542319913765220f,\n  0.911074734055176360f, -0.412241226669882890f, 0.910758281044437570f,\n  -0.412939890915108080f,\n  0.910441292258067250f, -0.413638312238434500f, 0.910123767882541680f,\n  -0.414336490228999100f,\n  0.909805708104652220f, -0.415034424476081630f, 0.909487113111505430f,\n  -0.415732114569105360f,\n  0.909167983090522380f, -0.416429560097637150f, 0.908848318229439120f,\n  -0.417126760651387870f,\n  0.908528118716306120f, -0.417823715820212270f, 0.908207384739488700f,\n  -0.418520425194109700f,\n  0.907886116487666260f, -0.419216888363223910f, 0.907564314149832630f,\n  -0.419913104917843620f,\n  0.907241977915295820f, -0.420609074448402510f, 0.906919107973678140f,\n  -0.421304796545479640f,\n  0.906595704514915330f, -0.422000270799799680f, 0.906271767729257660f,\n  -0.422695496802232950f,\n  0.905947297807268460f, -0.423390474143796050f, 0.905622294939825270f,\n  -0.424085202415651560f,\n  0.905296759318118820f, -0.424779681209108810f, 0.904970691133653250f,\n  -0.425473910115623800f,\n  0.904644090578246240f, -0.426167888726799620f, 0.904316957844028320f,\n  -0.426861616634386430f,\n  0.903989293123443340f, -0.427555093430282080f, 0.903661096609247980f,\n  -0.428248318706531960f,\n  0.903332368494511820f, -0.428941292055329490f, 0.903003108972617150f,\n  -0.429634013069016380f,\n  0.902673318237258830f, -0.430326481340082610f, 0.902342996482444200f,\n  -0.431018696461167030f,\n  0.902012143902493180f, -0.431710658025057260f, 0.901680760692037730f,\n  -0.432402365624690140f,\n  0.901348847046022030f, -0.433093818853151960f, 0.901016403159702330f,\n  -0.433785017303678520f,\n  0.900683429228646970f, -0.434475960569655650f, 0.900349925448735600f,\n  -0.435166648244619260f,\n  0.900015892016160280f, -0.435857079922255470f, 0.899681329127423930f,\n  -0.436547255196401200f,\n  0.899346236979341570f, -0.437237173661044090f, 0.899010615769039070f,\n  -0.437926834910322860f,\n  0.898674465693953820f, -0.438616238538527660f, 0.898337786951834310f,\n  -0.439305384140099950f,\n  0.898000579740739880f, -0.439994271309633260f, 0.897662844259040860f,\n  -0.440682899641872900f,\n  0.897324580705418320f, -0.441371268731716670f, 0.896985789278863970f,\n  -0.442059378174214700f,\n  0.896646470178680150f, -0.442747227564570020f, 0.896306623604479550f,\n  -0.443434816498138480f,\n  0.895966249756185220f, -0.444122144570429200f, 0.895625348834030110f,\n  -0.444809211377104880f,\n  0.895283921038557580f, -0.445496016513981740f, 0.894941966570620750f,\n  -0.446182559577030070f,\n  0.894599485631382700f, -0.446868840162374160f, 0.894256478422316040f,\n  -0.447554857866293010f,\n  0.893912945145203250f, -0.448240612285219890f, 0.893568886002135910f,\n  -0.448926103015743260f,\n  0.893224301195515320f, -0.449611329654606540f, 0.892879190928051680f,\n  -0.450296291798708610f,\n  0.892533555402764580f, -0.450980989045103860f, 0.892187394822982480f,\n  -0.451665420991002490f,\n  0.891840709392342720f, -0.452349587233770890f, 0.891493499314791380f,\n  -0.453033487370931580f,\n  0.891145764794583180f, -0.453717121000163870f, 0.890797506036281490f,\n  -0.454400487719303580f,\n  0.890448723244757880f, -0.455083587126343840f, 0.890099416625192320f,\n  -0.455766418819434640f,\n  0.889749586383072780f, -0.456448982396883920f, 0.889399232724195520f,\n  -0.457131277457156980f,\n  0.889048355854664570f, -0.457813303598877170f, 0.888696955980891600f,\n  -0.458495060420826270f,\n  0.888345033309596350f, -0.459176547521944090f, 0.887992588047805560f,\n  -0.459857764501329540f,\n  0.887639620402853930f, -0.460538710958240010f, 0.887286130582383150f,\n  -0.461219386492092380f,\n  0.886932118794342190f, -0.461899790702462730f, 0.886577585246987040f,\n  -0.462579923189086810f,\n  0.886222530148880640f, -0.463259783551860150f, 0.885866953708892790f,\n  -0.463939371390838520f,\n  0.885510856136199950f, -0.464618686306237820f, 0.885154237640285110f,\n  -0.465297727898434600f,\n  0.884797098430937790f, -0.465976495767966180f, 0.884439438718253810f,\n  -0.466654989515530920f,\n  0.884081258712634990f, -0.467333208741988420f, 0.883722558624789660f,\n  -0.468011153048359830f,\n  0.883363338665731580f, -0.468688822035827900f, 0.883003599046780830f,\n  -0.469366215305737520f,\n  0.882643339979562790f, -0.470043332459595620f, 0.882282561676008710f,\n  -0.470720173099071600f,\n  0.881921264348355050f, -0.471396736825997640f, 0.881559448209143780f,\n  -0.472073023242368660f,\n  0.881197113471222090f, -0.472749031950342790f, 0.880834260347742040f,\n  -0.473424762552241530f,\n  0.880470889052160750f, -0.474100214650549970f, 0.880106999798240360f,\n  -0.474775387847917120f,\n  0.879742592800047410f, -0.475450281747155870f, 0.879377668271953290f,\n  -0.476124895951243580f,\n  0.879012226428633530f, -0.476799230063322090f, 0.878646267485068130f,\n  -0.477473283686698060f,\n  0.878279791656541580f, -0.478147056424843010f, 0.877912799158641840f,\n  -0.478820547881393890f,\n  0.877545290207261350f, -0.479493757660153010f, 0.877177265018595940f,\n  -0.480166685365088390f,\n  0.876808723809145650f, -0.480839330600333960f, 0.876439666795713610f,\n  -0.481511692970189860f,\n  0.876070094195406600f, -0.482183772079122720f, 0.875700006225634600f,\n  -0.482855567531765670f,\n  0.875329403104110890f, -0.483527078932918740f, 0.874958285048851650f,\n  -0.484198305887549030f,\n  0.874586652278176110f, -0.484869248000791060f, 0.874214505010706300f,\n  -0.485539904877946960f,\n  0.873841843465366860f, -0.486210276124486420f, 0.873468667861384880f,\n  -0.486880361346047340f,\n  0.873094978418290090f, -0.487550160148436000f, 0.872720775355914300f,\n  -0.488219672137626790f,\n  0.872346058894391540f, -0.488888896919763170f, 0.871970829254157810f,\n  -0.489557834101157440f,\n  0.871595086655950980f, -0.490226483288291160f, 0.871218831320811020f,\n  -0.490894844087815090f,\n  0.870842063470078980f, -0.491562916106549900f, 0.870464783325397670f,\n  -0.492230698951486020f,\n  0.870086991108711460f, -0.492898192229784040f, 0.869708687042265670f,\n  -0.493565395548774770f,\n  0.869329871348606840f, -0.494232308515959670f, 0.868950544250582380f,\n  -0.494898930739011260f,\n  0.868570705971340900f, -0.495565261825772540f, 0.868190356734331310f,\n  -0.496231301384258250f,\n  0.867809496763303320f, -0.496897049022654470f, 0.867428126282306920f,\n  -0.497562504349319150f,\n  0.867046245515692650f, -0.498227666972781870f, 0.866663854688111130f,\n  -0.498892536501744590f,\n  0.866280954024512990f, -0.499557112545081840f, 0.865897543750148820f,\n  -0.500221394711840680f,\n  0.865513624090569090f, -0.500885382611240710f, 0.865129195271623800f,\n  -0.501549075852675390f,\n  0.864744257519462380f, -0.502212474045710790f, 0.864358811060534030f,\n  -0.502875576800086990f,\n  0.863972856121586810f, -0.503538383725717580f, 0.863586392929668100f,\n  -0.504200894432690340f,\n  0.863199421712124160f, -0.504863108531267590f, 0.862811942696600330f,\n  -0.505525025631885390f,\n  0.862423956111040610f, -0.506186645345155230f, 0.862035462183687210f,\n  -0.506847967281863210f,\n  0.861646461143081300f, -0.507508991052970870f, 0.861256953218062170f,\n  -0.508169716269614600f,\n  0.860866938637767310f, -0.508830142543106990f, 0.860476417631632070f,\n  -0.509490269484936360f,\n  0.860085390429390140f, -0.510150096706766810f, 0.859693857261072610f,\n  -0.510809623820439040f,\n  0.859301818357008470f, -0.511468850437970300f, 0.858909273947823900f,\n  -0.512127776171554690f,\n  0.858516224264442740f, -0.512786400633562960f, 0.858122669538086140f,\n  -0.513444723436543460f,\n  0.857728610000272120f, -0.514102744193221660f, 0.857334045882815590f,\n  -0.514760462516501200f,\n  0.856938977417828760f, -0.515417878019462930f, 0.856543404837719960f,\n  -0.516074990315366630f,\n  0.856147328375194470f, -0.516731799017649870f, 0.855750748263253920f,\n  -0.517388303739929060f,\n  0.855353664735196030f, -0.518044504095999340f, 0.854956078024614930f,\n  -0.518700399699834950f,\n  0.854557988365400530f, -0.519355990165589640f, 0.854159395991738850f,\n  -0.520011275107596040f,\n  0.853760301138111410f, -0.520666254140367160f, 0.853360704039295430f,\n  -0.521320926878595660f,\n  0.852960604930363630f, -0.521975292937154390f, 0.852560004046684080f,\n  -0.522629351931096610f,\n  0.852158901623919830f, -0.523283103475656430f, 0.851757297898029120f,\n  -0.523936547186248600f,\n  0.851355193105265200f, -0.524589682678468950f, 0.850952587482175730f,\n  -0.525242509568094710f,\n  0.850549481265603480f, -0.525895027471084630f, 0.850145874692685210f,\n  -0.526547236003579440f,\n  0.849741768000852550f, -0.527199134781901280f, 0.849337161427830780f,\n  -0.527850723422555230f,\n  0.848932055211639610f, -0.528502001542228480f, 0.848526449590592650f,\n  -0.529152968757790610f,\n  0.848120344803297230f, -0.529803624686294610f, 0.847713741088654380f,\n  -0.530453968944976320f,\n  0.847306638685858320f, -0.531104001151255000f, 0.846899037834397240f,\n  -0.531753720922733320f,\n  0.846490938774052130f, -0.532403127877197900f, 0.846082341744897050f,\n  -0.533052221632619450f,\n  0.845673246987299070f, -0.533701001807152960f, 0.845263654741918220f,\n  -0.534349468019137520f,\n  0.844853565249707120f, -0.534997619887097150f, 0.844442978751910660f,\n  -0.535645457029741090f,\n  0.844031895490066410f, -0.536292979065963180f, 0.843620315706004150f,\n  -0.536940185614842910f,\n  0.843208239641845440f, -0.537587076295645390f, 0.842795667540004120f,\n  -0.538233650727821700f,\n  0.842382599643185850f, -0.538879908531008420f, 0.841969036194387680f,\n  -0.539525849325028890f,\n  0.841554977436898440f, -0.540171472729892850f, 0.841140423614298080f,\n  -0.540816778365796670f,\n  0.840725374970458070f, -0.541461765853123440f, 0.840309831749540770f,\n  -0.542106434812443920f,\n  0.839893794195999520f, -0.542750784864515890f, 0.839477262554578550f,\n  -0.543394815630284800f,\n  0.839060237070312740f, -0.544038526730883820f, 0.838642717988527300f,\n  -0.544681917787634530f,\n  0.838224705554838080f, -0.545324988422046460f, 0.837806200015150940f,\n  -0.545967738255817570f,\n  0.837387201615661940f, -0.546610166910834860f, 0.836967710602857020f,\n  -0.547252274009174090f,\n  0.836547727223512010f, -0.547894059173100190f, 0.836127251724692270f,\n  -0.548535522025067390f,\n  0.835706284353752600f, -0.549176662187719660f, 0.835284825358337370f,\n  -0.549817479283890910f,\n  0.834862874986380010f, -0.550457972936604810f, 0.834440433486103190f,\n  -0.551098142769075430f,\n  0.834017501106018130f, -0.551737988404707340f, 0.833594078094925140f,\n  -0.552377509467096070f,\n  0.833170164701913190f, -0.553016705580027470f, 0.832745761176359460f,\n  -0.553655576367479310f,\n  0.832320867767929680f, -0.554294121453620000f, 0.831895484726577590f,\n  -0.554932340462810370f,\n  0.831469612302545240f, -0.555570233019602180f, 0.831043250746362320f,\n  -0.556207798748739930f,\n  0.830616400308846310f, -0.556845037275160100f, 0.830189061241102370f,\n  -0.557481948223991550f,\n  0.829761233794523050f, -0.558118531220556100f, 0.829332918220788250f,\n  -0.558754785890368310f,\n  0.828904114771864870f, -0.559390711859136140f, 0.828474823700007130f,\n  -0.560026308752760380f,\n  0.828045045257755800f, -0.560661576197336030f, 0.827614779697938400f,\n  -0.561296513819151470f,\n  0.827184027273669130f, -0.561931121244689470f, 0.826752788238348520f,\n  -0.562565398100626560f,\n  0.826321062845663530f, -0.563199344013834090f, 0.825888851349586780f,\n  -0.563832958611378170f,\n  0.825456154004377550f, -0.564466241520519500f, 0.825022971064580220f,\n  -0.565099192368713980f,\n  0.824589302785025290f, -0.565731810783613120f, 0.824155149420828570f,\n  -0.566364096393063840f,\n  0.823720511227391430f, -0.566996048825108680f, 0.823285388460400110f,\n  -0.567627667707986230f,\n  0.822849781375826430f, -0.568258952670131490f, 0.822413690229926390f,\n  -0.568889903340175860f,\n  0.821977115279241550f, -0.569520519346947140f, 0.821540056780597610f,\n  -0.570150800319470300f,\n  0.821102514991104650f, -0.570780745886967260f, 0.820664490168157460f,\n  -0.571410355678857230f,\n  0.820225982569434690f, -0.572039629324757050f, 0.819786992452898990f,\n  -0.572668566454481160f,\n  0.819347520076796900f, -0.573297166698042200f, 0.818907565699658950f,\n  -0.573925429685650750f,\n  0.818467129580298660f, -0.574553355047715760f, 0.818026211977813440f,\n  -0.575180942414845080f,\n  0.817584813151583710f, -0.575808191417845340f, 0.817142933361272970f,\n  -0.576435101687721830f,\n  0.816700572866827850f, -0.577061672855679440f, 0.816257731928477390f,\n  -0.577687904553122800f,\n  0.815814410806733780f, -0.578313796411655590f, 0.815370609762391290f,\n  -0.578939348063081780f,\n  0.814926329056526620f, -0.579564559139405630f, 0.814481568950498610f,\n  -0.580189429272831680f,\n  0.814036329705948410f, -0.580813958095764530f, 0.813590611584798510f,\n  -0.581438145240810170f,\n  0.813144414849253590f, -0.582061990340775440f, 0.812697739761799490f,\n  -0.582685493028668460f,\n  0.812250586585203880f, -0.583308652937698290f, 0.811802955582515470f,\n  -0.583931469701276180f,\n  0.811354847017063730f, -0.584553942953015330f, 0.810906261152459670f,\n  -0.585176072326730410f,\n  0.810457198252594770f, -0.585797857456438860f, 0.810007658581641140f,\n  -0.586419297976360500f,\n  0.809557642404051260f, -0.587040393520917970f, 0.809107149984558240f,\n  -0.587661143724736660f,\n  0.808656181588174980f, -0.588281548222645220f, 0.808204737480194720f,\n  -0.588901606649675720f,\n  0.807752817926190360f, -0.589521318641063940f, 0.807300423192014450f,\n  -0.590140683832248820f,\n  0.806847553543799330f, -0.590759701858874160f, 0.806394209247956240f,\n  -0.591378372356787580f,\n  0.805940390571176280f, -0.591996694962040990f, 0.805486097780429230f,\n  -0.592614669310891130f,\n  0.805031331142963660f, -0.593232295039799800f, 0.804576090926307110f,\n  -0.593849571785433630f,\n  0.804120377398265810f, -0.594466499184664430f, 0.803664190826924090f,\n  -0.595083076874569960f,\n  0.803207531480644940f, -0.595699304492433360f, 0.802750399628069160f,\n  -0.596315181675743710f,\n  0.802292795538115720f, -0.596930708062196500f, 0.801834719479981310f,\n  -0.597545883289693160f,\n  0.801376171723140240f, -0.598160706996342270f, 0.800917152537344300f,\n  -0.598775178820458720f,\n  0.800457662192622820f, -0.599389298400564540f, 0.799997700959281910f,\n  -0.600003065375388940f,\n  0.799537269107905010f, -0.600616479383868970f, 0.799076366909352350f,\n  -0.601229540065148500f,\n  0.798614994634760820f, -0.601842247058580030f, 0.798153152555543750f,\n  -0.602454600003723750f,\n  0.797690840943391160f, -0.603066598540348160f, 0.797228060070268810f,\n  -0.603678242308430370f,\n  0.796764810208418830f, -0.604289530948155960f, 0.796301091630359110f,\n  -0.604900464099919820f,\n  0.795836904608883570f, -0.605511041404325550f, 0.795372249417061310f,\n  -0.606121262502186120f,\n  0.794907126328237010f, -0.606731127034524480f, 0.794441535616030590f,\n  -0.607340634642572930f,\n  0.793975477554337170f, -0.607949784967773630f, 0.793508952417326660f,\n  -0.608558577651779450f,\n  0.793041960479443640f, -0.609167012336453210f, 0.792574502015407690f,\n  -0.609775088663868430f,\n  0.792106577300212390f, -0.610382806276309480f, 0.791638186609125880f,\n  -0.610990164816271660f,\n  0.791169330217690200f, -0.611597163926461910f, 0.790700008401721610f,\n  -0.612203803249797950f,\n  0.790230221437310030f, -0.612810082429409710f, 0.789759969600819070f,\n  -0.613416001108638590f,\n  0.789289253168885650f, -0.614021558931038380f, 0.788818072418420280f,\n  -0.614626755540375050f,\n  0.788346427626606340f, -0.615231590580626820f, 0.787874319070900220f,\n  -0.615836063695985090f,\n  0.787401747029031430f, -0.616440174530853650f, 0.786928711779001810f,\n  -0.617043922729849760f,\n  0.786455213599085770f, -0.617647307937803870f, 0.785981252767830150f,\n  -0.618250329799760250f,\n  0.785506829564053930f, -0.618852987960976320f, 0.785031944266848080f,\n  -0.619455282066924020f,\n  0.784556597155575240f, -0.620057211763289100f, 0.784080788509869950f,\n  -0.620658776695972140f,\n  0.783604518609638200f, -0.621259976511087550f, 0.783127787735057310f,\n  -0.621860810854965360f,\n  0.782650596166575730f, -0.622461279374149970f, 0.782172944184913010f,\n  -0.623061381715401260f,\n  0.781694832071059390f, -0.623661117525694530f, 0.781216260106276090f,\n  -0.624260486452220650f,\n  0.780737228572094490f, -0.624859488142386340f, 0.780257737750316590f,\n  -0.625458122243814360f,\n  0.779777787923014550f, -0.626056388404343520f, 0.779297379372530300f,\n  -0.626654286272029350f,\n  0.778816512381475980f, -0.627251815495144080f, 0.778335187232733210f,\n  -0.627848975722176460f,\n  0.777853404209453150f, -0.628445766601832710f, 0.777371163595056310f,\n  -0.629042187783036000f,\n  0.776888465673232440f, -0.629638238914926980f, 0.776405310727940390f,\n  -0.630233919646864370f,\n  0.775921699043407690f, -0.630829229628424470f, 0.775437630904130540f,\n  -0.631424168509401860f,\n  0.774953106594873930f, -0.632018735939809060f, 0.774468126400670860f,\n  -0.632612931569877410f,\n  0.773982690606822900f, -0.633206755050057190f, 0.773496799498899050f,\n  -0.633800206031017280f,\n  0.773010453362736990f, -0.634393284163645490f, 0.772523652484441330f,\n  -0.634985989099049460f,\n  0.772036397150384520f, -0.635578320488556110f, 0.771548687647206300f,\n  -0.636170277983712170f,\n  0.771060524261813820f, -0.636761861236284200f, 0.770571907281380810f,\n  -0.637353069898259130f,\n  0.770082836993347900f, -0.637943903621844060f, 0.769593313685422940f,\n  -0.638534362059466790f,\n  0.769103337645579700f, -0.639124444863775730f, 0.768612909162058380f,\n  -0.639714151687640450f,\n  0.768122028523365420f, -0.640303482184151670f, 0.767630696018273380f,\n  -0.640892436006621380f,\n  0.767138911935820400f, -0.641481012808583160f, 0.766646676565310380f,\n  -0.642069212243792540f,\n  0.766153990196312920f, -0.642657033966226860f, 0.765660853118662500f,\n  -0.643244477630085850f,\n  0.765167265622458960f, -0.643831542889791390f, 0.764673227998067140f,\n  -0.644418229399988380f,\n  0.764178740536116670f, -0.645004536815543930f, 0.763683803527501870f,\n  -0.645590464791548690f,\n  0.763188417263381270f, -0.646176012983316280f, 0.762692582035177980f,\n  -0.646761181046383920f,\n  0.762196298134578900f, -0.647345968636512060f, 0.761699565853535380f,\n  -0.647930375409685340f,\n  0.761202385484261780f, -0.648514401022112440f, 0.760704757319236920f,\n  -0.649098045130225950f,\n  0.760206681651202420f, -0.649681307390683190f, 0.759708158773163440f,\n  -0.650264187460365850f,\n  0.759209188978388070f, -0.650846684996380880f, 0.758709772560407390f,\n  -0.651428799656059820f,\n  0.758209909813015280f, -0.652010531096959500f, 0.757709601030268080f,\n  -0.652591878976862440f,\n  0.757208846506484570f, -0.653172842953776760f, 0.756707646536245670f,\n  -0.653753422685936060f,\n  0.756206001414394540f, -0.654333617831800440f, 0.755703911436035880f,\n  -0.654913428050056030f,\n  0.755201376896536550f, -0.655492852999615350f, 0.754698398091524500f,\n  -0.656071892339617600f,\n  0.754194975316889170f, -0.656650545729428940f, 0.753691108868781210f,\n  -0.657228812828642540f,\n  0.753186799043612520f, -0.657806693297078640f, 0.752682046138055340f,\n  -0.658384186794785050f,\n  0.752176850449042810f, -0.658961292982037320f, 0.751671212273768430f,\n  -0.659538011519338660f,\n  0.751165131909686480f, -0.660114342067420480f, 0.750658609654510700f,\n  -0.660690284287242300f,\n  0.750151645806215070f, -0.661265837839992270f, 0.749644240663033480f,\n  -0.661841002387086870f,\n  0.749136394523459370f, -0.662415777590171780f, 0.748628107686245440f,\n  -0.662990163111121470f,\n  0.748119380450403600f, -0.663564158612039770f, 0.747610213115205150f,\n  -0.664137763755260010f,\n  0.747100605980180130f, -0.664710978203344790f, 0.746590559345117310f,\n  -0.665283801619087180f,\n  0.746080073510063780f, -0.665856233665509720f, 0.745569148775325430f,\n  -0.666428274005865240f,\n  0.745057785441466060f, -0.666999922303637470f, 0.744545983809307370f,\n  -0.667571178222540310f,\n  0.744033744179929290f, -0.668142041426518450f, 0.743521066854669120f,\n  -0.668712511579747980f,\n  0.743007952135121720f, -0.669282588346636010f, 0.742494400323139180f,\n  -0.669852271391821020f,\n  0.741980411720831070f, -0.670421560380173090f, 0.741465986630563290f,\n  -0.670990454976794220f,\n  0.740951125354959110f, -0.671558954847018330f, 0.740435828196898020f,\n  -0.672127059656411730f,\n  0.739920095459516200f, -0.672694769070772860f, 0.739403927446205760f,\n  -0.673262082756132970f,\n  0.738887324460615110f, -0.673829000378756040f, 0.738370286806648620f,\n  -0.674395521605139050f,\n  0.737852814788465980f, -0.674961646102011930f, 0.737334908710482910f,\n  -0.675527373536338520f,\n  0.736816568877369900f, -0.676092703575315920f, 0.736297795594053170f,\n  -0.676657635886374950f,\n  0.735778589165713590f, -0.677222170137180330f, 0.735258949897786840f,\n  -0.677786305995631500f,\n  0.734738878095963500f, -0.678350043129861470f, 0.734218374066188280f,\n  -0.678913381208238410f,\n  0.733697438114660370f, -0.679476319899364970f, 0.733176070547832740f,\n  -0.680038858872078930f,\n  0.732654271672412820f, -0.680600997795453020f, 0.732132041795361290f,\n  -0.681162736338795430f,\n  0.731609381223892630f, -0.681724074171649710f, 0.731086290265474340f,\n  -0.682285010963795570f,\n  0.730562769227827590f, -0.682845546385248080f, 0.730038818418926260f,\n  -0.683405680106258680f,\n  0.729514438146997010f, -0.683965411797315400f, 0.728989628720519420f,\n  -0.684524741129142300f,\n  0.728464390448225200f, -0.685083667772700360f, 0.727938723639098620f,\n  -0.685642191399187470f,\n  0.727412628602375770f, -0.686200311680038590f, 0.726886105647544970f,\n  -0.686758028286925890f,\n  0.726359155084346010f, -0.687315340891759050f, 0.725831777222770370f,\n  -0.687872249166685550f,\n  0.725303972373060770f, -0.688428752784090440f, 0.724775740845711280f,\n  -0.688984851416597040f,\n  0.724247082951467000f, -0.689540544737066830f, 0.723717999001323500f,\n  -0.690095832418599950f,\n  0.723188489306527460f, -0.690650714134534600f, 0.722658554178575610f,\n  -0.691205189558448450f,\n  0.722128193929215350f, -0.691759258364157750f, 0.721597408870443770f,\n  -0.692312920225718220f,\n  0.721066199314508110f, -0.692866174817424630f, 0.720534565573905270f,\n  -0.693419021813811760f,\n  0.720002507961381650f, -0.693971460889654000f, 0.719470026789932990f,\n  -0.694523491719965520f,\n  0.718937122372804490f, -0.695075113980000880f, 0.718403795023489830f,\n  -0.695626327345254870f,\n  0.717870045055731710f, -0.696177131491462990f, 0.717335872783521730f,\n  -0.696727526094601200f,\n  0.716801278521099540f, -0.697277510830886520f, 0.716266262582953120f,\n  -0.697827085376777290f,\n  0.715730825283818590f, -0.698376249408972920f, 0.715194966938680120f,\n  -0.698925002604414150f,\n  0.714658687862769090f, -0.699473344640283770f, 0.714121988371564820f,\n  -0.700021275194006250f,\n  0.713584868780793640f, -0.700568793943248340f, 0.713047329406429340f,\n  -0.701115900565918660f,\n  0.712509370564692320f, -0.701662594740168450f, 0.711970992572050100f,\n  -0.702208876144391870f,\n  0.711432195745216430f, -0.702754744457225300f, 0.710892980401151680f,\n  -0.703300199357548730f,\n  0.710353346857062420f, -0.703845240524484940f, 0.709813295430400840f,\n  -0.704389867637400410f,\n  0.709272826438865690f, -0.704934080375904880f, 0.708731940200400650f,\n  -0.705477878419852100f,\n  0.708190637033195400f, -0.706021261449339740f, 0.707648917255684350f,\n  -0.706564229144709510f,\n  0.707106781186547570f, -0.707106781186547460f, 0.706564229144709620f,\n  -0.707648917255684350f,\n  0.706021261449339740f, -0.708190637033195290f, 0.705477878419852210f,\n  -0.708731940200400650f,\n  0.704934080375904990f, -0.709272826438865580f, 0.704389867637400410f,\n  -0.709813295430400840f,\n  0.703845240524484940f, -0.710353346857062310f, 0.703300199357548730f,\n  -0.710892980401151680f,\n  0.702754744457225300f, -0.711432195745216430f, 0.702208876144391870f,\n  -0.711970992572049990f,\n  0.701662594740168570f, -0.712509370564692320f, 0.701115900565918660f,\n  -0.713047329406429230f,\n  0.700568793943248450f, -0.713584868780793520f, 0.700021275194006360f,\n  -0.714121988371564710f,\n  0.699473344640283770f, -0.714658687862768980f, 0.698925002604414150f,\n  -0.715194966938680010f,\n  0.698376249408972920f, -0.715730825283818590f, 0.697827085376777290f,\n  -0.716266262582953120f,\n  0.697277510830886630f, -0.716801278521099540f, 0.696727526094601200f,\n  -0.717335872783521730f,\n  0.696177131491462990f, -0.717870045055731710f, 0.695626327345254870f,\n  -0.718403795023489720f,\n  0.695075113980000880f, -0.718937122372804380f, 0.694523491719965520f,\n  -0.719470026789932990f,\n  0.693971460889654000f, -0.720002507961381650f, 0.693419021813811880f,\n  -0.720534565573905270f,\n  0.692866174817424740f, -0.721066199314508110f, 0.692312920225718220f,\n  -0.721597408870443660f,\n  0.691759258364157750f, -0.722128193929215350f, 0.691205189558448450f,\n  -0.722658554178575610f,\n  0.690650714134534720f, -0.723188489306527350f, 0.690095832418599950f,\n  -0.723717999001323390f,\n  0.689540544737066940f, -0.724247082951466890f, 0.688984851416597150f,\n  -0.724775740845711280f,\n  0.688428752784090550f, -0.725303972373060660f, 0.687872249166685550f,\n  -0.725831777222770370f,\n  0.687315340891759160f, -0.726359155084346010f, 0.686758028286925890f,\n  -0.726886105647544970f,\n  0.686200311680038700f, -0.727412628602375770f, 0.685642191399187470f,\n  -0.727938723639098620f,\n  0.685083667772700360f, -0.728464390448225200f, 0.684524741129142300f,\n  -0.728989628720519310f,\n  0.683965411797315510f, -0.729514438146996900f, 0.683405680106258790f,\n  -0.730038818418926150f,\n  0.682845546385248080f, -0.730562769227827590f, 0.682285010963795570f,\n  -0.731086290265474230f,\n  0.681724074171649820f, -0.731609381223892520f, 0.681162736338795430f,\n  -0.732132041795361290f,\n  0.680600997795453130f, -0.732654271672412820f, 0.680038858872079040f,\n  -0.733176070547832740f,\n  0.679476319899365080f, -0.733697438114660260f, 0.678913381208238410f,\n  -0.734218374066188170f,\n  0.678350043129861580f, -0.734738878095963390f, 0.677786305995631500f,\n  -0.735258949897786730f,\n  0.677222170137180450f, -0.735778589165713480f, 0.676657635886374950f,\n  -0.736297795594053060f,\n  0.676092703575316030f, -0.736816568877369790f, 0.675527373536338630f,\n  -0.737334908710482790f,\n  0.674961646102012040f, -0.737852814788465980f, 0.674395521605139050f,\n  -0.738370286806648510f,\n  0.673829000378756150f, -0.738887324460615110f, 0.673262082756132970f,\n  -0.739403927446205760f,\n  0.672694769070772970f, -0.739920095459516090f, 0.672127059656411840f,\n  -0.740435828196898020f,\n  0.671558954847018330f, -0.740951125354959110f, 0.670990454976794220f,\n  -0.741465986630563290f,\n  0.670421560380173090f, -0.741980411720830960f, 0.669852271391821130f,\n  -0.742494400323139180f,\n  0.669282588346636010f, -0.743007952135121720f, 0.668712511579748090f,\n  -0.743521066854669120f,\n  0.668142041426518560f, -0.744033744179929180f, 0.667571178222540310f,\n  -0.744545983809307250f,\n  0.666999922303637470f, -0.745057785441465950f, 0.666428274005865350f,\n  -0.745569148775325430f,\n  0.665856233665509720f, -0.746080073510063780f, 0.665283801619087180f,\n  -0.746590559345117310f,\n  0.664710978203344900f, -0.747100605980180130f, 0.664137763755260010f,\n  -0.747610213115205150f,\n  0.663564158612039880f, -0.748119380450403490f, 0.662990163111121470f,\n  -0.748628107686245330f,\n  0.662415777590171780f, -0.749136394523459260f, 0.661841002387086870f,\n  -0.749644240663033480f,\n  0.661265837839992270f, -0.750151645806214960f, 0.660690284287242300f,\n  -0.750658609654510590f,\n  0.660114342067420480f, -0.751165131909686370f, 0.659538011519338770f,\n  -0.751671212273768430f,\n  0.658961292982037320f, -0.752176850449042700f, 0.658384186794785050f,\n  -0.752682046138055230f,\n  0.657806693297078640f, -0.753186799043612410f, 0.657228812828642650f,\n  -0.753691108868781210f,\n  0.656650545729429050f, -0.754194975316889170f, 0.656071892339617710f,\n  -0.754698398091524390f,\n  0.655492852999615460f, -0.755201376896536550f, 0.654913428050056150f,\n  -0.755703911436035880f,\n  0.654333617831800550f, -0.756206001414394540f, 0.653753422685936170f,\n  -0.756707646536245670f,\n  0.653172842953776760f, -0.757208846506484460f, 0.652591878976862550f,\n  -0.757709601030268080f,\n  0.652010531096959500f, -0.758209909813015280f, 0.651428799656059820f,\n  -0.758709772560407390f,\n  0.650846684996380990f, -0.759209188978387960f, 0.650264187460365960f,\n  -0.759708158773163440f,\n  0.649681307390683190f, -0.760206681651202420f, 0.649098045130226060f,\n  -0.760704757319236920f,\n  0.648514401022112550f, -0.761202385484261780f, 0.647930375409685460f,\n  -0.761699565853535270f,\n  0.647345968636512060f, -0.762196298134578900f, 0.646761181046383920f,\n  -0.762692582035177870f,\n  0.646176012983316390f, -0.763188417263381270f, 0.645590464791548800f,\n  -0.763683803527501870f,\n  0.645004536815544040f, -0.764178740536116670f, 0.644418229399988380f,\n  -0.764673227998067140f,\n  0.643831542889791500f, -0.765167265622458960f, 0.643244477630085850f,\n  -0.765660853118662390f,\n  0.642657033966226860f, -0.766153990196312810f, 0.642069212243792540f,\n  -0.766646676565310380f,\n  0.641481012808583160f, -0.767138911935820400f, 0.640892436006621380f,\n  -0.767630696018273270f,\n  0.640303482184151670f, -0.768122028523365310f, 0.639714151687640450f,\n  -0.768612909162058270f,\n  0.639124444863775730f, -0.769103337645579590f, 0.638534362059466790f,\n  -0.769593313685422940f,\n  0.637943903621844170f, -0.770082836993347900f, 0.637353069898259130f,\n  -0.770571907281380700f,\n  0.636761861236284200f, -0.771060524261813710f, 0.636170277983712170f,\n  -0.771548687647206300f,\n  0.635578320488556230f, -0.772036397150384410f, 0.634985989099049460f,\n  -0.772523652484441330f,\n  0.634393284163645490f, -0.773010453362736990f, 0.633800206031017280f,\n  -0.773496799498899050f,\n  0.633206755050057190f, -0.773982690606822790f, 0.632612931569877520f,\n  -0.774468126400670860f,\n  0.632018735939809060f, -0.774953106594873820f, 0.631424168509401860f,\n  -0.775437630904130430f,\n  0.630829229628424470f, -0.775921699043407580f, 0.630233919646864480f,\n  -0.776405310727940390f,\n  0.629638238914927100f, -0.776888465673232440f, 0.629042187783036000f,\n  -0.777371163595056200f,\n  0.628445766601832710f, -0.777853404209453040f, 0.627848975722176570f,\n  -0.778335187232733090f,\n  0.627251815495144190f, -0.778816512381475870f, 0.626654286272029460f,\n  -0.779297379372530300f,\n  0.626056388404343520f, -0.779777787923014440f, 0.625458122243814360f,\n  -0.780257737750316590f,\n  0.624859488142386450f, -0.780737228572094380f, 0.624260486452220650f,\n  -0.781216260106276090f,\n  0.623661117525694640f, -0.781694832071059390f, 0.623061381715401370f,\n  -0.782172944184912900f,\n  0.622461279374150080f, -0.782650596166575730f, 0.621860810854965360f,\n  -0.783127787735057310f,\n  0.621259976511087660f, -0.783604518609638200f, 0.620658776695972140f,\n  -0.784080788509869950f,\n  0.620057211763289210f, -0.784556597155575240f, 0.619455282066924020f,\n  -0.785031944266848080f,\n  0.618852987960976320f, -0.785506829564053930f, 0.618250329799760250f,\n  -0.785981252767830150f,\n  0.617647307937803980f, -0.786455213599085770f, 0.617043922729849760f,\n  -0.786928711779001700f,\n  0.616440174530853650f, -0.787401747029031320f, 0.615836063695985090f,\n  -0.787874319070900110f,\n  0.615231590580626820f, -0.788346427626606230f, 0.614626755540375050f,\n  -0.788818072418420170f,\n  0.614021558931038490f, -0.789289253168885650f, 0.613416001108638590f,\n  -0.789759969600819070f,\n  0.612810082429409710f, -0.790230221437310030f, 0.612203803249798060f,\n  -0.790700008401721610f,\n  0.611597163926462020f, -0.791169330217690090f, 0.610990164816271770f,\n  -0.791638186609125770f,\n  0.610382806276309480f, -0.792106577300212390f, 0.609775088663868430f,\n  -0.792574502015407580f,\n  0.609167012336453210f, -0.793041960479443640f, 0.608558577651779450f,\n  -0.793508952417326660f,\n  0.607949784967773740f, -0.793975477554337170f, 0.607340634642572930f,\n  -0.794441535616030590f,\n  0.606731127034524480f, -0.794907126328237010f, 0.606121262502186230f,\n  -0.795372249417061190f,\n  0.605511041404325550f, -0.795836904608883460f, 0.604900464099919930f,\n  -0.796301091630359110f,\n  0.604289530948156070f, -0.796764810208418720f, 0.603678242308430370f,\n  -0.797228060070268700f,\n  0.603066598540348280f, -0.797690840943391040f, 0.602454600003723860f,\n  -0.798153152555543750f,\n  0.601842247058580030f, -0.798614994634760820f, 0.601229540065148620f,\n  -0.799076366909352350f,\n  0.600616479383868970f, -0.799537269107905010f, 0.600003065375389060f,\n  -0.799997700959281910f,\n  0.599389298400564540f, -0.800457662192622710f, 0.598775178820458720f,\n  -0.800917152537344300f,\n  0.598160706996342380f, -0.801376171723140130f, 0.597545883289693270f,\n  -0.801834719479981310f,\n  0.596930708062196500f, -0.802292795538115720f, 0.596315181675743820f,\n  -0.802750399628069160f,\n  0.595699304492433470f, -0.803207531480644830f, 0.595083076874569960f,\n  -0.803664190826924090f,\n  0.594466499184664540f, -0.804120377398265700f, 0.593849571785433630f,\n  -0.804576090926307000f,\n  0.593232295039799800f, -0.805031331142963660f, 0.592614669310891130f,\n  -0.805486097780429120f,\n  0.591996694962040990f, -0.805940390571176280f, 0.591378372356787580f,\n  -0.806394209247956240f,\n  0.590759701858874280f, -0.806847553543799220f, 0.590140683832248940f,\n  -0.807300423192014450f,\n  0.589521318641063940f, -0.807752817926190360f, 0.588901606649675840f,\n  -0.808204737480194720f,\n  0.588281548222645330f, -0.808656181588174980f, 0.587661143724736770f,\n  -0.809107149984558130f,\n  0.587040393520918080f, -0.809557642404051260f, 0.586419297976360500f,\n  -0.810007658581641140f,\n  0.585797857456438860f, -0.810457198252594770f, 0.585176072326730410f,\n  -0.810906261152459670f,\n  0.584553942953015330f, -0.811354847017063730f, 0.583931469701276300f,\n  -0.811802955582515360f,\n  0.583308652937698290f, -0.812250586585203880f, 0.582685493028668460f,\n  -0.812697739761799490f,\n  0.582061990340775550f, -0.813144414849253590f, 0.581438145240810280f,\n  -0.813590611584798510f,\n  0.580813958095764530f, -0.814036329705948300f, 0.580189429272831680f,\n  -0.814481568950498610f,\n  0.579564559139405740f, -0.814926329056526620f, 0.578939348063081890f,\n  -0.815370609762391290f,\n  0.578313796411655590f, -0.815814410806733780f, 0.577687904553122800f,\n  -0.816257731928477390f,\n  0.577061672855679550f, -0.816700572866827850f, 0.576435101687721830f,\n  -0.817142933361272970f,\n  0.575808191417845340f, -0.817584813151583710f, 0.575180942414845190f,\n  -0.818026211977813440f,\n  0.574553355047715760f, -0.818467129580298660f, 0.573925429685650750f,\n  -0.818907565699658950f,\n  0.573297166698042320f, -0.819347520076796900f, 0.572668566454481160f,\n  -0.819786992452898990f,\n  0.572039629324757050f, -0.820225982569434690f, 0.571410355678857340f,\n  -0.820664490168157460f,\n  0.570780745886967370f, -0.821102514991104650f, 0.570150800319470300f,\n  -0.821540056780597610f,\n  0.569520519346947250f, -0.821977115279241550f, 0.568889903340175970f,\n  -0.822413690229926390f,\n  0.568258952670131490f, -0.822849781375826320f, 0.567627667707986230f,\n  -0.823285388460400110f,\n  0.566996048825108680f, -0.823720511227391320f, 0.566364096393063950f,\n  -0.824155149420828570f,\n  0.565731810783613230f, -0.824589302785025290f, 0.565099192368714090f,\n  -0.825022971064580220f,\n  0.564466241520519500f, -0.825456154004377440f, 0.563832958611378170f,\n  -0.825888851349586780f,\n  0.563199344013834090f, -0.826321062845663420f, 0.562565398100626560f,\n  -0.826752788238348520f,\n  0.561931121244689470f, -0.827184027273669020f, 0.561296513819151470f,\n  -0.827614779697938400f,\n  0.560661576197336030f, -0.828045045257755800f, 0.560026308752760380f,\n  -0.828474823700007130f,\n  0.559390711859136140f, -0.828904114771864870f, 0.558754785890368310f,\n  -0.829332918220788250f,\n  0.558118531220556100f, -0.829761233794523050f, 0.557481948223991660f,\n  -0.830189061241102370f,\n  0.556845037275160100f, -0.830616400308846200f, 0.556207798748739930f,\n  -0.831043250746362320f,\n  0.555570233019602290f, -0.831469612302545240f, 0.554932340462810370f,\n  -0.831895484726577590f,\n  0.554294121453620110f, -0.832320867767929680f, 0.553655576367479310f,\n  -0.832745761176359460f,\n  0.553016705580027580f, -0.833170164701913190f, 0.552377509467096070f,\n  -0.833594078094925140f,\n  0.551737988404707450f, -0.834017501106018130f, 0.551098142769075430f,\n  -0.834440433486103190f,\n  0.550457972936604810f, -0.834862874986380010f, 0.549817479283891020f,\n  -0.835284825358337370f,\n  0.549176662187719770f, -0.835706284353752600f, 0.548535522025067390f,\n  -0.836127251724692160f,\n  0.547894059173100190f, -0.836547727223511890f, 0.547252274009174090f,\n  -0.836967710602857020f,\n  0.546610166910834860f, -0.837387201615661940f, 0.545967738255817680f,\n  -0.837806200015150940f,\n  0.545324988422046460f, -0.838224705554837970f, 0.544681917787634530f,\n  -0.838642717988527300f,\n  0.544038526730883930f, -0.839060237070312630f, 0.543394815630284800f,\n  -0.839477262554578550f,\n  0.542750784864516000f, -0.839893794195999410f, 0.542106434812444030f,\n  -0.840309831749540770f,\n  0.541461765853123560f, -0.840725374970458070f, 0.540816778365796670f,\n  -0.841140423614298080f,\n  0.540171472729892970f, -0.841554977436898330f, 0.539525849325029010f,\n  -0.841969036194387680f,\n  0.538879908531008420f, -0.842382599643185960f, 0.538233650727821700f,\n  -0.842795667540004120f,\n  0.537587076295645510f, -0.843208239641845440f, 0.536940185614843020f,\n  -0.843620315706004040f,\n  0.536292979065963180f, -0.844031895490066410f, 0.535645457029741090f,\n  -0.844442978751910660f,\n  0.534997619887097260f, -0.844853565249707010f, 0.534349468019137520f,\n  -0.845263654741918220f,\n  0.533701001807152960f, -0.845673246987299070f, 0.533052221632619670f,\n  -0.846082341744896940f,\n  0.532403127877198010f, -0.846490938774052020f, 0.531753720922733320f,\n  -0.846899037834397350f,\n  0.531104001151255000f, -0.847306638685858320f, 0.530453968944976320f,\n  -0.847713741088654270f,\n  0.529803624686294830f, -0.848120344803297120f, 0.529152968757790720f,\n  -0.848526449590592650f,\n  0.528502001542228480f, -0.848932055211639610f, 0.527850723422555460f,\n  -0.849337161427830670f,\n  0.527199134781901390f, -0.849741768000852440f, 0.526547236003579330f,\n  -0.850145874692685210f,\n  0.525895027471084740f, -0.850549481265603370f, 0.525242509568094710f,\n  -0.850952587482175730f,\n  0.524589682678468840f, -0.851355193105265200f, 0.523936547186248600f,\n  -0.851757297898029120f,\n  0.523283103475656430f, -0.852158901623919830f, 0.522629351931096720f,\n  -0.852560004046683970f,\n  0.521975292937154390f, -0.852960604930363630f, 0.521320926878595550f,\n  -0.853360704039295430f,\n  0.520666254140367270f, -0.853760301138111300f, 0.520011275107596040f,\n  -0.854159395991738730f,\n  0.519355990165589530f, -0.854557988365400530f, 0.518700399699835170f,\n  -0.854956078024614820f,\n  0.518044504095999340f, -0.855353664735196030f, 0.517388303739929060f,\n  -0.855750748263253920f,\n  0.516731799017649980f, -0.856147328375194470f, 0.516074990315366630f,\n  -0.856543404837719960f,\n  0.515417878019463150f, -0.856938977417828650f, 0.514760462516501200f,\n  -0.857334045882815590f,\n  0.514102744193221660f, -0.857728610000272120f, 0.513444723436543570f,\n  -0.858122669538086020f,\n  0.512786400633563070f, -0.858516224264442740f, 0.512127776171554690f,\n  -0.858909273947823900f,\n  0.511468850437970520f, -0.859301818357008360f, 0.510809623820439040f,\n  -0.859693857261072610f,\n  0.510150096706766700f, -0.860085390429390140f, 0.509490269484936360f,\n  -0.860476417631632070f,\n  0.508830142543106990f, -0.860866938637767310f, 0.508169716269614710f,\n  -0.861256953218062060f,\n  0.507508991052970870f, -0.861646461143081300f, 0.506847967281863320f,\n  -0.862035462183687210f,\n  0.506186645345155450f, -0.862423956111040500f, 0.505525025631885510f,\n  -0.862811942696600330f,\n  0.504863108531267480f, -0.863199421712124160f, 0.504200894432690560f,\n  -0.863586392929667990f,\n  0.503538383725717580f, -0.863972856121586700f, 0.502875576800086880f,\n  -0.864358811060534030f,\n  0.502212474045710900f, -0.864744257519462380f, 0.501549075852675390f,\n  -0.865129195271623690f,\n  0.500885382611240940f, -0.865513624090568980f, 0.500221394711840680f,\n  -0.865897543750148820f,\n  0.499557112545081890f, -0.866280954024512990f, 0.498892536501744750f,\n  -0.866663854688111020f,\n  0.498227666972781870f, -0.867046245515692650f, 0.497562504349319090f,\n  -0.867428126282306920f,\n  0.496897049022654640f, -0.867809496763303210f, 0.496231301384258310f,\n  -0.868190356734331310f,\n  0.495565261825772490f, -0.868570705971340900f, 0.494898930739011310f,\n  -0.868950544250582380f,\n  0.494232308515959730f, -0.869329871348606730f, 0.493565395548774880f,\n  -0.869708687042265560f,\n  0.492898192229784090f, -0.870086991108711350f, 0.492230698951486080f,\n  -0.870464783325397670f,\n  0.491562916106550060f, -0.870842063470078860f, 0.490894844087815140f,\n  -0.871218831320810900f,\n  0.490226483288291100f, -0.871595086655951090f, 0.489557834101157550f,\n  -0.871970829254157700f,\n  0.488888896919763230f, -0.872346058894391540f, 0.488219672137626740f,\n  -0.872720775355914300f,\n  0.487550160148436050f, -0.873094978418290090f, 0.486880361346047400f,\n  -0.873468667861384880f,\n  0.486210276124486530f, -0.873841843465366750f, 0.485539904877947020f,\n  -0.874214505010706300f,\n  0.484869248000791120f, -0.874586652278176110f, 0.484198305887549140f,\n  -0.874958285048851540f,\n  0.483527078932918740f, -0.875329403104110780f, 0.482855567531765670f,\n  -0.875700006225634600f,\n  0.482183772079122830f, -0.876070094195406600f, 0.481511692970189920f,\n  -0.876439666795713610f,\n  0.480839330600333900f, -0.876808723809145760f, 0.480166685365088440f,\n  -0.877177265018595940f,\n  0.479493757660153010f, -0.877545290207261240f, 0.478820547881394050f,\n  -0.877912799158641730f,\n  0.478147056424843120f, -0.878279791656541460f, 0.477473283686698060f,\n  -0.878646267485068130f,\n  0.476799230063322250f, -0.879012226428633410f, 0.476124895951243630f,\n  -0.879377668271953180f,\n  0.475450281747155870f, -0.879742592800047410f, 0.474775387847917230f,\n  -0.880106999798240360f,\n  0.474100214650550020f, -0.880470889052160750f, 0.473424762552241530f,\n  -0.880834260347742040f,\n  0.472749031950342900f, -0.881197113471221980f, 0.472073023242368660f,\n  -0.881559448209143780f,\n  0.471396736825997810f, -0.881921264348354940f, 0.470720173099071710f,\n  -0.882282561676008600f,\n  0.470043332459595620f, -0.882643339979562790f, 0.469366215305737630f,\n  -0.883003599046780720f,\n  0.468688822035827960f, -0.883363338665731580f, 0.468011153048359830f,\n  -0.883722558624789660f,\n  0.467333208741988530f, -0.884081258712634990f, 0.466654989515530970f,\n  -0.884439438718253700f,\n  0.465976495767966130f, -0.884797098430937790f, 0.465297727898434650f,\n  -0.885154237640285110f,\n  0.464618686306237820f, -0.885510856136199950f, 0.463939371390838460f,\n  -0.885866953708892790f,\n  0.463259783551860260f, -0.886222530148880640f, 0.462579923189086810f,\n  -0.886577585246987040f,\n  0.461899790702462840f, -0.886932118794342080f, 0.461219386492092430f,\n  -0.887286130582383150f,\n  0.460538710958240010f, -0.887639620402853930f, 0.459857764501329650f,\n  -0.887992588047805560f,\n  0.459176547521944150f, -0.888345033309596240f, 0.458495060420826220f,\n  -0.888696955980891710f,\n  0.457813303598877290f, -0.889048355854664570f, 0.457131277457156980f,\n  -0.889399232724195520f,\n  0.456448982396883860f, -0.889749586383072890f, 0.455766418819434750f,\n  -0.890099416625192210f,\n  0.455083587126343840f, -0.890448723244757880f, 0.454400487719303750f,\n  -0.890797506036281490f,\n  0.453717121000163930f, -0.891145764794583180f, 0.453033487370931580f,\n  -0.891493499314791380f,\n  0.452349587233771000f, -0.891840709392342720f, 0.451665420991002540f,\n  -0.892187394822982480f,\n  0.450980989045103810f, -0.892533555402764690f, 0.450296291798708730f,\n  -0.892879190928051680f,\n  0.449611329654606600f, -0.893224301195515320f, 0.448926103015743260f,\n  -0.893568886002136020f,\n  0.448240612285220000f, -0.893912945145203250f, 0.447554857866293010f,\n  -0.894256478422316040f,\n  0.446868840162374330f, -0.894599485631382580f, 0.446182559577030120f,\n  -0.894941966570620750f,\n  0.445496016513981740f, -0.895283921038557580f, 0.444809211377105000f,\n  -0.895625348834030000f,\n  0.444122144570429260f, -0.895966249756185110f, 0.443434816498138430f,\n  -0.896306623604479660f,\n  0.442747227564570130f, -0.896646470178680150f, 0.442059378174214760f,\n  -0.896985789278863970f,\n  0.441371268731716620f, -0.897324580705418320f, 0.440682899641873020f,\n  -0.897662844259040750f,\n  0.439994271309633260f, -0.898000579740739880f, 0.439305384140100060f,\n  -0.898337786951834190f,\n  0.438616238538527710f, -0.898674465693953820f, 0.437926834910322860f,\n  -0.899010615769039070f,\n  0.437237173661044200f, -0.899346236979341460f, 0.436547255196401250f,\n  -0.899681329127423930f,\n  0.435857079922255470f, -0.900015892016160280f, 0.435166648244619370f,\n  -0.900349925448735600f,\n  0.434475960569655710f, -0.900683429228646860f, 0.433785017303678520f,\n  -0.901016403159702330f,\n  0.433093818853152010f, -0.901348847046022030f, 0.432402365624690140f,\n  -0.901680760692037730f,\n  0.431710658025057370f, -0.902012143902493070f, 0.431018696461167080f,\n  -0.902342996482444200f,\n  0.430326481340082610f, -0.902673318237258830f, 0.429634013069016500f,\n  -0.903003108972617040f,\n  0.428941292055329550f, -0.903332368494511820f, 0.428248318706531910f,\n  -0.903661096609247980f,\n  0.427555093430282200f, -0.903989293123443340f, 0.426861616634386490f,\n  -0.904316957844028320f,\n  0.426167888726799620f, -0.904644090578246240f, 0.425473910115623910f,\n  -0.904970691133653250f,\n  0.424779681209108810f, -0.905296759318118820f, 0.424085202415651670f,\n  -0.905622294939825160f,\n  0.423390474143796100f, -0.905947297807268460f, 0.422695496802232950f,\n  -0.906271767729257660f,\n  0.422000270799799790f, -0.906595704514915330f, 0.421304796545479700f,\n  -0.906919107973678030f,\n  0.420609074448402510f, -0.907241977915295930f, 0.419913104917843730f,\n  -0.907564314149832520f,\n  0.419216888363223960f, -0.907886116487666150f, 0.418520425194109700f,\n  -0.908207384739488700f,\n  0.417823715820212380f, -0.908528118716306120f, 0.417126760651387870f,\n  -0.908848318229439120f,\n  0.416429560097637320f, -0.909167983090522270f, 0.415732114569105420f,\n  -0.909487113111505430f,\n  0.415034424476081630f, -0.909805708104652220f, 0.414336490228999210f,\n  -0.910123767882541570f,\n  0.413638312238434560f, -0.910441292258067140f, 0.412939890915108020f,\n  -0.910758281044437570f,\n  0.412241226669883000f, -0.911074734055176250f, 0.411542319913765280f,\n  -0.911390651104122320f,\n  0.410843171057903910f, -0.911706032005429880f, 0.410143780513590350f,\n  -0.912020876573568230f,\n  0.409444148692257590f, -0.912335184623322750f, 0.408744276005481520f,\n  -0.912648955969793900f,\n  0.408044162864978740f, -0.912962190428398100f, 0.407343809682607970f,\n  -0.913274887814867760f,\n  0.406643216870369140f, -0.913587047945250810f, 0.405942384840402570f,\n  -0.913898670635911680f,\n  0.405241314004989860f, -0.914209755703530690f, 0.404540004776553110f,\n  -0.914520302965104450f,\n  0.403838457567654130f, -0.914830312237946090f, 0.403136672790995240f,\n  -0.915139783339685260f,\n  0.402434650859418540f, -0.915448716088267830f, 0.401732392185905010f,\n  -0.915757110301956720f,\n  0.401029897183575790f, -0.916064965799331610f, 0.400327166265690150f,\n  -0.916372282399289140f,\n  0.399624199845646790f, -0.916679059921042700f, 0.398920998336983020f,\n  -0.916985298184122890f,\n  0.398217562153373620f, -0.917290997008377910f, 0.397513891708632330f,\n  -0.917596156213972950f,\n  0.396809987416710420f, -0.917900775621390390f, 0.396105849691696320f,\n  -0.918204855051430900f,\n  0.395401478947816300f, -0.918508394325212250f, 0.394696875599433670f,\n  -0.918811393264169940f,\n  0.393992040061048100f, -0.919113851690057770f, 0.393286972747296570f,\n  -0.919415769424946960f,\n  0.392581674072951530f, -0.919717146291227360f, 0.391876144452922350f,\n  -0.920017982111606570f,\n  0.391170384302253980f, -0.920318276709110480f, 0.390464394036126650f,\n  -0.920618029907083860f,\n  0.389758174069856410f, -0.920917241529189520f, 0.389051724818894500f,\n  -0.921215911399408730f,\n  0.388345046698826300f, -0.921514039342041900f, 0.387638140125372680f,\n  -0.921811625181708120f,\n  0.386931005514388690f, -0.922108668743345070f, 0.386223643281862980f,\n  -0.922405169852209880f,\n  0.385516053843919020f, -0.922701128333878520f, 0.384808237616812930f,\n  -0.922996544014246250f,\n  0.384100195016935040f, -0.923291416719527640f, 0.383391926460808770f,\n  -0.923585746276256560f,\n  0.382683432365089840f, -0.923879532511286740f, 0.381974713146567220f,\n  -0.924172775251791200f,\n  0.381265769222162490f, -0.924465474325262600f, 0.380556601008928570f,\n  -0.924757629559513910f,\n  0.379847208924051110f, -0.925049240782677580f, 0.379137593384847430f,\n  -0.925340307823206200f,\n  0.378427754808765620f, -0.925630830509872720f, 0.377717693613385810f,\n  -0.925920808671769960f,\n  0.377007410216418310f, -0.926210242138311270f, 0.376296905035704790f,\n  -0.926499130739230510f,\n  0.375586178489217330f, -0.926787474304581750f, 0.374875230995057600f,\n  -0.927075272664740100f,\n  0.374164062971457990f, -0.927362525650401110f, 0.373452674836780410f,\n  -0.927649233092581180f,\n  0.372741067009515810f, -0.927935394822617890f, 0.372029239908284960f,\n  -0.928221010672169440f,\n  0.371317193951837600f, -0.928506080473215480f, 0.370604929559051670f,\n  -0.928790604058057020f,\n  0.369892447148934270f, -0.929074581259315750f, 0.369179747140620070f,\n  -0.929358011909935500f,\n  0.368466829953372320f, -0.929640895843181330f, 0.367753696006582090f,\n  -0.929923232892639560f,\n  0.367040345719767240f, -0.930205022892219070f, 0.366326779512573590f,\n  -0.930486265676149780f,\n  0.365612997804773960f, -0.930766961078983710f, 0.364899001016267380f,\n  -0.931047108935595170f,\n  0.364184789567079840f, -0.931326709081180430f, 0.363470363877363870f,\n  -0.931605761351257830f,\n  0.362755724367397230f, -0.931884265581668150f, 0.362040871457584350f,\n  -0.932162221608574320f,\n  0.361325805568454340f, -0.932439629268462360f, 0.360610527120662270f,\n  -0.932716488398140250f,\n  0.359895036534988280f, -0.932992798834738850f, 0.359179334232336560f,\n  -0.933268560415712050f,\n  0.358463420633736540f, -0.933543772978836170f, 0.357747296160342010f,\n  -0.933818436362210960f,\n  0.357030961233430030f, -0.934092550404258870f, 0.356314416274402360f,\n  -0.934366114943725900f,\n  0.355597661704783960f, -0.934639129819680780f, 0.354880697946222790f,\n  -0.934911594871516090f,\n  0.354163525420490510f, -0.935183509938947500f, 0.353446144549480870f,\n  -0.935454874862014620f,\n  0.352728555755210730f, -0.935725689481080370f, 0.352010759459819240f,\n  -0.935995953636831300f,\n  0.351292756085567150f, -0.936265667170278260f, 0.350574546054837570f,\n  -0.936534829922755500f,\n  0.349856129790135030f, -0.936803441735921560f, 0.349137507714085030f,\n  -0.937071502451759190f,\n  0.348418680249434510f, -0.937339011912574960f, 0.347699647819051490f,\n  -0.937605969960999990f,\n  0.346980410845923680f, -0.937872376439989890f, 0.346260969753160170f,\n  -0.938138231192824360f,\n  0.345541324963989150f, -0.938403534063108060f, 0.344821476901759290f,\n  -0.938668284894770170f,\n  0.344101425989938980f, -0.938932483532064490f, 0.343381172652115100f,\n  -0.939196129819569900f,\n  0.342660717311994380f, -0.939459223602189920f, 0.341940060393402300f,\n  -0.939721764725153340f,\n  0.341219202320282410f, -0.939983753034013940f, 0.340498143516697100f,\n  -0.940245188374650880f,\n  0.339776884406826960f, -0.940506070593268300f, 0.339055425414969640f,\n  -0.940766399536396070f,\n  0.338333766965541290f, -0.941026175050889260f, 0.337611909483074680f,\n  -0.941285396983928660f,\n  0.336889853392220050f, -0.941544065183020810f, 0.336167599117744690f,\n  -0.941802179495997650f,\n  0.335445147084531660f, -0.942059739771017310f, 0.334722497717581220f,\n  -0.942316745856563780f,\n  0.333999651442009490f, -0.942573197601446870f, 0.333276608683047980f,\n  -0.942829094854802710f,\n  0.332553369866044220f, -0.943084437466093490f, 0.331829935416461220f,\n  -0.943339225285107720f,\n  0.331106305759876430f, -0.943593458161960390f, 0.330382481321982950f,\n  -0.943847135947092690f,\n  0.329658462528587550f, -0.944100258491272660f, 0.328934249805612200f,\n  -0.944352825645594750f,\n  0.328209843579092660f, -0.944604837261480260f, 0.327485244275178060f,\n  -0.944856293190677210f,\n  0.326760452320131790f, -0.945107193285260610f, 0.326035468140330350f,\n  -0.945357537397632290f,\n  0.325310292162262980f, -0.945607325380521280f, 0.324584924812532150f,\n  -0.945856557086983910f,\n  0.323859366517852960f, -0.946105232370403340f, 0.323133617705052330f,\n  -0.946353351084490590f,\n  0.322407678801070020f, -0.946600913083283530f, 0.321681550232956640f,\n  -0.946847918221148000f,\n  0.320955232427875210f, -0.947094366352777220f, 0.320228725813100020f,\n  -0.947340257333191940f,\n  0.319502030816015750f, -0.947585591017741090f, 0.318775147864118480f,\n  -0.947830367262101010f,\n  0.318048077385015060f, -0.948074585922276230f, 0.317320819806421790f,\n  -0.948318246854599090f,\n  0.316593375556165850f, -0.948561349915730270f, 0.315865745062184070f,\n  -0.948803894962658380f,\n  0.315137928752522440f, -0.949045881852700560f, 0.314409927055336820f,\n  -0.949287310443502010f,\n  0.313681740398891570f, -0.949528180593036670f, 0.312953369211560200f,\n  -0.949768492159606680f,\n  0.312224813921825050f, -0.950008245001843000f, 0.311496074958275970f,\n  -0.950247438978705230f,\n  0.310767152749611470f, -0.950486073949481700f, 0.310038047724638000f,\n  -0.950724149773789610f,\n  0.309308760312268780f, -0.950961666311575080f, 0.308579290941525030f,\n  -0.951198623423113230f,\n  0.307849640041534980f, -0.951435020969008340f, 0.307119808041533100f,\n  -0.951670858810193860f,\n  0.306389795370861080f, -0.951906136807932230f, 0.305659602458966230f,\n  -0.952140854823815830f,\n  0.304929229735402430f, -0.952375012719765880f, 0.304198677629829270f,\n  -0.952608610358033240f,\n  0.303467946572011370f, -0.952841647601198720f, 0.302737036991819140f,\n  -0.953074124312172200f,\n  0.302005949319228200f, -0.953306040354193750f, 0.301274683984318000f,\n  -0.953537395590833280f,\n  0.300543241417273400f, -0.953768189885990330f, 0.299811622048383460f,\n  -0.953998423103894490f,\n  0.299079826308040480f, -0.954228095109105670f, 0.298347854626741570f,\n  -0.954457205766513490f,\n  0.297615707435086310f, -0.954685754941338340f, 0.296883385163778270f,\n  -0.954913742499130520f,\n  0.296150888243623960f, -0.955141168305770670f, 0.295418217105532070f,\n  -0.955368032227470240f,\n  0.294685372180514330f, -0.955594334130771110f, 0.293952353899684770f,\n  -0.955820073882545420f,\n  0.293219162694258680f, -0.956045251349996410f, 0.292485798995553830f,\n  -0.956269866400658140f,\n  0.291752263234989370f, -0.956493918902394990f, 0.291018555844085090f,\n  -0.956717408723403050f,\n  0.290284677254462330f, -0.956940335732208940f, 0.289550627897843140f,\n  -0.957162699797670100f,\n  0.288816408206049480f, -0.957384500788975860f, 0.288082018611004300f,\n  -0.957605738575646240f,\n  0.287347459544729570f, -0.957826413027532910f, 0.286612731439347790f,\n  -0.958046524014818600f,\n  0.285877834727080730f, -0.958266071408017670f, 0.285142769840248720f,\n  -0.958485055077976100f,\n  0.284407537211271820f, -0.958703474895871600f, 0.283672137272668550f,\n  -0.958921330733213060f,\n  0.282936570457055390f, -0.959138622461841890f, 0.282200837197147500f,\n  -0.959355349953930790f,\n  0.281464937925758050f, -0.959571513081984520f, 0.280728873075797190f,\n  -0.959787111718839900f,\n  0.279992643080273380f, -0.960002145737665850f, 0.279256248372291240f,\n  -0.960216615011963430f,\n  0.278519689385053060f, -0.960430519415565790f, 0.277782966551857800f,\n  -0.960643858822638470f,\n  0.277046080306099950f, -0.960856633107679660f, 0.276309031081271030f,\n  -0.961068842145519350f,\n  0.275571819310958250f, -0.961280485811320640f, 0.274834445428843940f,\n  -0.961491563980579000f,\n  0.274096909868706330f, -0.961702076529122540f, 0.273359213064418790f,\n  -0.961912023333112100f,\n  0.272621355449948980f, -0.962121404269041580f, 0.271883337459359890f,\n  -0.962330219213737400f,\n  0.271145159526808070f, -0.962538468044359160f, 0.270406822086544820f,\n  -0.962746150638399410f,\n  0.269668325572915200f, -0.962953266873683880f, 0.268929670420357310f,\n  -0.963159816628371360f,\n  0.268190857063403180f, -0.963365799780954050f, 0.267451885936677740f,\n  -0.963571216210257210f,\n  0.266712757474898420f, -0.963776065795439840f, 0.265973472112875530f,\n  -0.963980348415994110f,\n  0.265234030285511900f, -0.964184063951745720f, 0.264494432427801630f,\n  -0.964387212282854290f,\n  0.263754678974831510f, -0.964589793289812650f, 0.263014770361779060f,\n  -0.964791806853447900f,\n  0.262274707023913590f, -0.964993252854920320f, 0.261534489396595630f,\n  -0.965194131175724720f,\n  0.260794117915275570f, -0.965394441697689400f, 0.260053593015495130f,\n  -0.965594184302976830f,\n  0.259312915132886350f, -0.965793358874083570f, 0.258572084703170390f,\n  -0.965991965293840570f,\n  0.257831102162158930f, -0.966190003445412620f, 0.257089967945753230f,\n  -0.966387473212298790f,\n  0.256348682489942910f, -0.966584374478333120f, 0.255607246230807550f,\n  -0.966780707127683270f,\n  0.254865659604514630f, -0.966976471044852070f, 0.254123923047320620f,\n  -0.967171666114676640f,\n  0.253382036995570270f, -0.967366292222328510f, 0.252640001885695580f,\n  -0.967560349253314360f,\n  0.251897818154216910f, -0.967753837093475510f, 0.251155486237742030f,\n  -0.967946755628987800f,\n  0.250413006572965280f, -0.968139104746362330f, 0.249670379596668520f,\n  -0.968330884332445300f,\n  0.248927605745720260f, -0.968522094274417270f, 0.248184685457074780f,\n  -0.968712734459794780f,\n  0.247441619167773440f, -0.968902804776428870f, 0.246698407314942500f,\n  -0.969092305112506100f,\n  0.245955050335794590f, -0.969281235356548530f, 0.245211548667627680f,\n  -0.969469595397412950f,\n  0.244467902747824210f, -0.969657385124292450f, 0.243724113013852130f,\n  -0.969844604426714830f,\n  0.242980179903263980f, -0.970031253194543970f, 0.242236103853696070f,\n  -0.970217331317979160f,\n  0.241491885302869300f, -0.970402838687555500f, 0.240747524688588540f,\n  -0.970587775194143630f,\n  0.240003022448741500f, -0.970772140728950350f, 0.239258379021300120f,\n  -0.970955935183517970f,\n  0.238513594844318500f, -0.971139158449725090f, 0.237768670355934210f,\n  -0.971321810419786160f,\n  0.237023605994367340f, -0.971503890986251780f, 0.236278402197919620f,\n  -0.971685400042008540f,\n  0.235533059404975460f, -0.971866337480279400f, 0.234787578054001080f,\n  -0.972046703194623500f,\n  0.234041958583543460f, -0.972226497078936270f, 0.233296201432231560f,\n  -0.972405719027449770f,\n  0.232550307038775330f, -0.972584368934732210f, 0.231804275841964780f,\n  -0.972762446695688570f,\n  0.231058108280671280f, -0.972939952205560070f, 0.230311804793845530f,\n  -0.973116885359925130f,\n  0.229565365820518870f, -0.973293246054698250f, 0.228818791799802360f,\n  -0.973469034186130950f,\n  0.228072083170885790f, -0.973644249650811870f, 0.227325240373038830f,\n  -0.973818892345666100f,\n  0.226578263845610110f, -0.973992962167955830f, 0.225831154028026200f,\n  -0.974166459015280320f,\n  0.225083911359792780f, -0.974339382785575860f, 0.224336536280493690f,\n  -0.974511733377115720f,\n  0.223589029229790020f, -0.974683510688510670f, 0.222841390647421280f,\n  -0.974854714618708430f,\n  0.222093620973203590f, -0.975025345066994120f, 0.221345720647030810f,\n  -0.975195401932990370f,\n  0.220597690108873650f, -0.975364885116656870f, 0.219849529798778750f,\n  -0.975533794518291360f,\n  0.219101240156869770f, -0.975702130038528570f, 0.218352821623346430f,\n  -0.975869891578341030f,\n  0.217604274638483670f, -0.976037079039039020f, 0.216855599642632570f,\n  -0.976203692322270560f,\n  0.216106797076219600f, -0.976369731330021140f, 0.215357867379745550f,\n  -0.976535195964614470f,\n  0.214608810993786920f, -0.976700086128711840f, 0.213859628358993830f,\n  -0.976864401725312640f,\n  0.213110319916091360f, -0.977028142657754390f, 0.212360886105878580f,\n  -0.977191308829712280f,\n  0.211611327369227610f, -0.977353900145199960f, 0.210861644147084830f,\n  -0.977515916508569280f,\n  0.210111836880469720f, -0.977677357824509930f, 0.209361906010474190f,\n  -0.977838223998050430f,\n  0.208611851978263460f, -0.977998514934557140f, 0.207861675225075150f,\n  -0.978158230539735050f,\n  0.207111376192218560f, -0.978317370719627650f, 0.206360955321075680f,\n  -0.978475935380616830f,\n  0.205610413053099320f, -0.978633924429423100f, 0.204859749829814420f,\n  -0.978791337773105670f,\n  0.204108966092817010f, -0.978948175319062200f, 0.203358062283773370f,\n  -0.979104436975029250f,\n  0.202607038844421110f, -0.979260122649082020f, 0.201855896216568160f,\n  -0.979415232249634780f,\n  0.201104634842091960f, -0.979569765685440520f, 0.200353255162940420f,\n  -0.979723722865591170f,\n  0.199601757621131050f, -0.979877103699517640f, 0.198850142658750120f,\n  -0.980029908096989980f,\n  0.198098410717953730f, -0.980182135968117320f, 0.197346562240966000f,\n  -0.980333787223347960f,\n  0.196594597670080220f, -0.980484861773469380f, 0.195842517447657990f,\n  -0.980635359529608120f,\n  0.195090322016128330f, -0.980785280403230430f, 0.194338011817988600f,\n  -0.980934624306141640f,\n  0.193585587295803750f, -0.981083391150486590f, 0.192833048892205290f,\n  -0.981231580848749730f,\n  0.192080397049892380f, -0.981379193313754560f, 0.191327632211630990f,\n  -0.981526228458664660f,\n  0.190574754820252800f, -0.981672686196983110f, 0.189821765318656580f,\n  -0.981818566442552500f,\n  0.189068664149806280f, -0.981963869109555240f, 0.188315451756732120f,\n  -0.982108594112513610f,\n  0.187562128582529740f, -0.982252741366289370f, 0.186808695070359330f,\n  -0.982396310786084690f,\n  0.186055151663446630f, -0.982539302287441240f, 0.185301498805082040f,\n  -0.982681715786240860f,\n  0.184547736938619640f, -0.982823551198705240f, 0.183793866507478390f,\n  -0.982964808441396440f,\n  0.183039887955141060f, -0.983105487431216290f, 0.182285801725153320f,\n  -0.983245588085407070f,\n  0.181531608261125130f, -0.983385110321551180f, 0.180777308006728670f,\n  -0.983524054057571260f,\n  0.180022901405699510f, -0.983662419211730250f, 0.179268388901835880f,\n  -0.983800205702631490f,\n  0.178513770938997590f, -0.983937413449218920f, 0.177759047961107140f,\n  -0.984074042370776450f,\n  0.177004220412148860f, -0.984210092386929030f, 0.176249288736167940f,\n  -0.984345563417641900f,\n  0.175494253377271400f, -0.984480455383220930f, 0.174739114779627310f,\n  -0.984614768204312600f,\n  0.173983873387463850f, -0.984748501801904210f, 0.173228529645070490f,\n  -0.984881656097323700f,\n  0.172473083996796030f, -0.985014231012239840f, 0.171717536887049970f,\n  -0.985146226468662230f,\n  0.170961888760301360f, -0.985277642388941220f, 0.170206140061078120f,\n  -0.985408478695768420f,\n  0.169450291233967930f, -0.985538735312176060f, 0.168694342723617440f,\n  -0.985668412161537550f,\n  0.167938294974731230f, -0.985797509167567370f, 0.167182148432072880f,\n  -0.985926026254321130f,\n  0.166425903540464220f, -0.986053963346195440f, 0.165669560744784140f,\n  -0.986181320367928270f,\n  0.164913120489970090f, -0.986308097244598670f, 0.164156583221015890f,\n  -0.986434293901627070f,\n  0.163399949382973230f, -0.986559910264775410f, 0.162643219420950450f,\n  -0.986684946260146690f,\n  0.161886393780111910f, -0.986809401814185420f, 0.161129472905678780f,\n  -0.986933276853677710f,\n  0.160372457242928400f, -0.987056571305750970f, 0.159615347237193090f,\n  -0.987179285097874340f,\n  0.158858143333861390f, -0.987301418157858430f, 0.158100845978377090f,\n  -0.987422970413855410f,\n  0.157343455616238280f, -0.987543941794359230f, 0.156585972692998590f,\n  -0.987664332228205710f,\n  0.155828397654265320f, -0.987784141644572180f, 0.155070730945700510f,\n  -0.987903369972977790f,\n  0.154312973013020240f, -0.988022017143283530f, 0.153555124301993500f,\n  -0.988140083085692570f,\n  0.152797185258443410f, -0.988257567730749460f, 0.152039156328246160f,\n  -0.988374471009341280f,\n  0.151281037957330250f, -0.988490792852696590f, 0.150522830591677370f,\n  -0.988606533192386450f,\n  0.149764534677321620f, -0.988721691960323780f, 0.149006150660348470f,\n  -0.988836269088763540f,\n  0.148247678986896200f, -0.988950264510302990f, 0.147489120103153680f,\n  -0.989063678157881540f,\n  0.146730474455361750f, -0.989176509964781010f, 0.145971742489812370f,\n  -0.989288759864625170f,\n  0.145212924652847520f, -0.989400427791380380f, 0.144454021390860440f,\n  -0.989511513679355190f,\n  0.143695033150294580f, -0.989622017463200780f, 0.142935960377642700f,\n  -0.989731939077910570f,\n  0.142176803519448000f, -0.989841278458820530f, 0.141417563022303130f,\n  -0.989950035541608990f,\n  0.140658239332849240f, -0.990058210262297120f, 0.139898832897777380f,\n  -0.990165802557248400f,\n  0.139139344163826280f, -0.990272812363169110f, 0.138379773577783890f,\n  -0.990379239617108160f,\n  0.137620121586486180f, -0.990485084256456980f, 0.136860388636816430f,\n  -0.990590346218950150f,\n  0.136100575175706200f, -0.990695025442664630f, 0.135340681650134330f,\n  -0.990799121866020370f,\n  0.134580708507126220f, -0.990902635427780010f, 0.133820656193754690f,\n  -0.991005566067049370f,\n  0.133060525157139180f, -0.991107913723276780f, 0.132300315844444680f,\n  -0.991209678336254060f,\n  0.131540028702883280f, -0.991310859846115440f, 0.130779664179711790f,\n  -0.991411458193338540f,\n  0.130019222722233350f, -0.991511473318743900f, 0.129258704777796270f,\n  -0.991610905163495370f,\n  0.128498110793793220f, -0.991709753669099530f, 0.127737441217662280f,\n  -0.991808018777406430f,\n  0.126976696496885980f, -0.991905700430609330f, 0.126215877078990400f,\n  -0.992002798571244520f,\n  0.125454983411546210f, -0.992099313142191800f, 0.124694015942167770f,\n  -0.992195244086673920f,\n  0.123932975118512200f, -0.992290591348257370f, 0.123171861388280650f,\n  -0.992385354870851670f,\n  0.122410675199216280f, -0.992479534598709970f, 0.121649416999105540f,\n  -0.992573130476428810f,\n  0.120888087235777220f, -0.992666142448948020f, 0.120126686357101580f,\n  -0.992758570461551140f,\n  0.119365214810991350f, -0.992850414459865100f, 0.118603673045400840f,\n  -0.992941674389860470f,\n  0.117842061508325020f, -0.993032350197851410f, 0.117080380647800550f,\n  -0.993122441830495580f,\n  0.116318630911904880f, -0.993211949234794500f, 0.115556812748755290f,\n  -0.993300872358093280f,\n  0.114794926606510250f, -0.993389211148080650f, 0.114032972933367300f,\n  -0.993476965552789190f,\n  0.113270952177564360f, -0.993564135520595300f, 0.112508864787378830f,\n  -0.993650721000219120f,\n  0.111746711211126660f, -0.993736721940724600f, 0.110984491897163380f,\n  -0.993822138291519660f,\n  0.110222207293883180f, -0.993906970002356060f, 0.109459857849718030f,\n  -0.993991217023329380f,\n  0.108697444013138670f, -0.994074879304879370f, 0.107934966232653760f,\n  -0.994157956797789730f,\n  0.107172424956808870f, -0.994240449453187900f, 0.106409820634187840f,\n  -0.994322357222545810f,\n  0.105647153713410700f, -0.994403680057679100f, 0.104884424643134970f,\n  -0.994484417910747600f,\n  0.104121633872054730f, -0.994564570734255420f, 0.103358781848899700f,\n  -0.994644138481050710f,\n  0.102595869022436280f, -0.994723121104325700f, 0.101832895841466670f,\n  -0.994801518557617110f,\n  0.101069862754827880f, -0.994879330794805620f, 0.100306770211392820f,\n  -0.994956557770116380f,\n  0.099543618660069444f, -0.995033199438118630f, 0.098780408549799664f,\n  -0.995109255753726110f,\n  0.098017140329560770f, -0.995184726672196820f, 0.097253814448363354f,\n  -0.995259612149133390f,\n  0.096490431355252607f, -0.995333912140482280f, 0.095726991499307315f,\n  -0.995407626602534900f,\n  0.094963495329639061f, -0.995480755491926940f, 0.094199943295393190f,\n  -0.995553298765638470f,\n  0.093436335845747912f, -0.995625256380994310f, 0.092672673429913366f,\n  -0.995696628295663520f,\n  0.091908956497132696f, -0.995767414467659820f, 0.091145185496681130f,\n  -0.995837614855341610f,\n  0.090381360877865011f, -0.995907229417411720f, 0.089617483090022917f,\n  -0.995976258112917790f,\n  0.088853552582524684f, -0.996044700901251970f, 0.088089569804770507f,\n  -0.996112557742151130f,\n  0.087325535206192226f, -0.996179828595696870f, 0.086561449236251239f,\n  -0.996246513422315520f,\n  0.085797312344439880f, -0.996312612182778000f, 0.085033124980280414f,\n  -0.996378124838200210f,\n  0.084268887593324127f, -0.996443051350042630f, 0.083504600633152404f,\n  -0.996507391680110820f,\n  0.082740264549375803f, -0.996571145790554840f, 0.081975879791633108f,\n  -0.996634313643869900f,\n  0.081211446809592386f, -0.996696895202896060f, 0.080446966052950097f,\n  -0.996758890430818000f,\n  0.079682437971430126f, -0.996820299291165670f, 0.078917863014785095f,\n  -0.996881121747813850f,\n  0.078153241632794315f, -0.996941357764982160f, 0.077388574275265049f,\n  -0.997001007307235290f,\n  0.076623861392031617f, -0.997060070339482960f, 0.075859103432954503f,\n  -0.997118546826979980f,\n  0.075094300847921291f, -0.997176436735326190f, 0.074329454086845867f,\n  -0.997233740030466160f,\n  0.073564563599667454f, -0.997290456678690210f, 0.072799629836351618f,\n  -0.997346586646633230f,\n  0.072034653246889416f, -0.997402129901275300f, 0.071269634281296415f,\n  -0.997457086409941910f,\n  0.070504573389614009f, -0.997511456140303450f, 0.069739471021907376f,\n  -0.997565239060375750f,\n  0.068974327628266732f, -0.997618435138519550f, 0.068209143658806454f,\n  -0.997671044343441000f,\n  0.067443919563664106f, -0.997723066644191640f, 0.066678655793001543f,\n  -0.997774502010167820f,\n  0.065913352797003930f, -0.997825350411111640f, 0.065148011025878860f,\n  -0.997875611817110150f,\n  0.064382630929857410f, -0.997925286198596000f, 0.063617212959193190f,\n  -0.997974373526346990f,\n  0.062851757564161420f, -0.998022873771486240f, 0.062086265195060247f,\n  -0.998070786905482340f,\n  0.061320736302208648f, -0.998118112900149180f, 0.060555171335947781f,\n  -0.998164851727646240f,\n  0.059789570746640007f, -0.998211003360478190f, 0.059023934984667986f,\n  -0.998256567771495180f,\n  0.058258264500435732f, -0.998301544933892890f, 0.057492559744367684f,\n  -0.998345934821212370f,\n  0.056726821166907783f, -0.998389737407340160f, 0.055961049218520520f,\n  -0.998432952666508440f,\n  0.055195244349690031f, -0.998475580573294770f, 0.054429407010919147f,\n  -0.998517621102622210f,\n  0.053663537652730679f, -0.998559074229759310f, 0.052897636725665401f,\n  -0.998599939930320370f,\n  0.052131704680283317f, -0.998640218180265270f, 0.051365741967162731f,\n  -0.998679908955899090f,\n  0.050599749036899337f, -0.998719012233872940f, 0.049833726340107257f,\n  -0.998757527991183340f,\n  0.049067674327418126f, -0.998795456205172410f, 0.048301593449480172f,\n  -0.998832796853527990f,\n  0.047535484156959261f, -0.998869549914283560f, 0.046769346900537960f,\n  -0.998905715365818290f,\n  0.046003182130914644f, -0.998941293186856870f, 0.045236990298804750f,\n  -0.998976283356469820f,\n  0.044470771854938744f, -0.999010685854073380f, 0.043704527250063421f,\n  -0.999044500659429290f,\n  0.042938256934940959f, -0.999077727752645360f, 0.042171961360348002f,\n  -0.999110367114174890f,\n  0.041405640977076712f, -0.999142418724816910f, 0.040639296235933854f,\n  -0.999173882565716380f,\n  0.039872927587739845f, -0.999204758618363890f, 0.039106535483329839f,\n  -0.999235046864595850f,\n  0.038340120373552791f, -0.999264747286594420f, 0.037573682709270514f,\n  -0.999293859866887790f,\n  0.036807222941358991f, -0.999322384588349540f, 0.036040741520706299f,\n  -0.999350321434199440f,\n  0.035274238898213947f, -0.999377670388002850f, 0.034507715524795889f,\n  -0.999404431433671300f,\n  0.033741171851377642f, -0.999430604555461730f, 0.032974608328897315f,\n  -0.999456189737977340f,\n  0.032208025408304704f, -0.999481186966166950f, 0.031441423540560343f,\n  -0.999505596225325310f,\n  0.030674803176636581f, -0.999529417501093140f, 0.029908164767516655f,\n  -0.999552650779456990f,\n  0.029141508764193740f, -0.999575296046749220f, 0.028374835617672258f,\n  -0.999597353289648380f,\n  0.027608145778965820f, -0.999618822495178640f, 0.026841439699098527f,\n  -0.999639703650710200f,\n  0.026074717829104040f, -0.999659996743959220f, 0.025307980620024630f,\n  -0.999679701762987930f,\n  0.024541228522912264f, -0.999698818696204250f, 0.023774461988827676f,\n  -0.999717347532362190f,\n  0.023007681468839410f, -0.999735288260561680f, 0.022240887414024919f,\n  -0.999752640870248840f,\n  0.021474080275469605f, -0.999769405351215280f, 0.020707260504265912f,\n  -0.999785581693599210f,\n  0.019940428551514598f, -0.999801169887884260f, 0.019173584868322699f,\n  -0.999816169924900410f,\n  0.018406729905804820f, -0.999830581795823400f, 0.017639864115082195f,\n  -0.999844405492175240f,\n  0.016872987947281773f, -0.999857641005823860f, 0.016106101853537263f,\n  -0.999870288328982950f,\n  0.015339206284988220f, -0.999882347454212560f, 0.014572301692779104f,\n  -0.999893818374418490f,\n  0.013805388528060349f, -0.999904701082852900f, 0.013038467241987433f,\n  -0.999914995573113470f,\n  0.012271538285719944f, -0.999924701839144500f, 0.011504602110422875f,\n  -0.999933819875236000f,\n  0.010737659167264572f, -0.999942349676023910f, 0.009970709907418029f,\n  -0.999950291236490480f,\n  0.009203754782059960f, -0.999957644551963900f, 0.008436794242369860f,\n  -0.999964409618118280f,\n  0.007669828739531077f, -0.999970586430974140f, 0.006902858724729877f,\n  -0.999976174986897610f,\n  0.006135884649154515f, -0.999981175282601110f, 0.005368906963996303f,\n  -0.999985587315143200f,\n  0.004601926120448672f, -0.999989411081928400f, 0.003834942569706248f,\n  -0.999992646580707190f,\n  0.003067956762966138f, -0.999995293809576190f, 0.002300969151425887f,\n  -0.999997352766978210f,\n  0.001533980186284766f, -0.999998823451701880f, 0.000766990318742846f,\n  -0.999999705862882230f\n};\n    const float32_t cos_factors_2048[2048] = {\n  0.999999926465717890f, 0.999999338191525530f, 0.999998161643486980f,\n  0.999996396822294350f,\n  0.999994043728985820f, 0.999991102364945590f, 0.999987572731904080f,\n  0.999983454831937730f,\n  0.999978748667468830f, 0.999973454241265940f, 0.999967571556443780f,\n  0.999961100616462820f,\n  0.999954041425129780f, 0.999946393986597460f, 0.999938158305364590f,\n  0.999929334386276070f,\n  0.999919922234522750f, 0.999909921855641540f, 0.999899333255515390f,\n  0.999888156440373320f,\n  0.999876391416790410f, 0.999864038191687680f, 0.999851096772332190f,\n  0.999837567166337090f,\n  0.999823449381661570f, 0.999808743426610520f, 0.999793449309835270f,\n  0.999777567040332940f,\n  0.999761096627446610f, 0.999744038080865430f, 0.999726391410624470f,\n  0.999708156627104880f,\n  0.999689333741033640f, 0.999669922763483760f, 0.999649923705874240f,\n  0.999629336579970110f,\n  0.999608161397882110f, 0.999586398172067070f, 0.999564046915327740f,\n  0.999541107640812940f,\n  0.999517580362016990f, 0.999493465092780590f, 0.999468761847290050f,\n  0.999443470640077770f,\n  0.999417591486021720f, 0.999391124400346050f, 0.999364069398620550f,\n  0.999336426496761240f,\n  0.999308195711029470f, 0.999279377058032710f, 0.999249970554724420f,\n  0.999219976218403530f,\n  0.999189394066714920f, 0.999158224117649430f, 0.999126466389543390f,\n  0.999094120901079070f,\n  0.999061187671284600f, 0.999027666719533690f, 0.998993558065545680f,\n  0.998958861729386080f,\n  0.998923577731465780f, 0.998887706092541290f, 0.998851246833715180f,\n  0.998814199976435390f,\n  0.998776565542495610f, 0.998738343554035230f, 0.998699534033539280f,\n  0.998660137003838490f,\n  0.998620152488108870f, 0.998579580509872500f, 0.998538421092996730f,\n  0.998496674261694640f,\n  0.998454340040524800f, 0.998411418454391300f, 0.998367909528543820f,\n  0.998323813288577560f,\n  0.998279129760433200f, 0.998233858970396850f, 0.998188000945100300f,\n  0.998141555711520520f,\n  0.998094523296980010f, 0.998046903729146840f, 0.997998697036034390f,\n  0.997949903246001190f,\n  0.997900522387751620f, 0.997850554490335110f, 0.997799999583146470f,\n  0.997748857695925690f,\n  0.997697128858758500f, 0.997644813102075420f, 0.997591910456652630f,\n  0.997538420953611340f,\n  0.997484344624417930f, 0.997429681500884180f, 0.997374431615167150f,\n  0.997318594999768600f,\n  0.997262171687536170f, 0.997205161711661850f, 0.997147565105683480f,\n  0.997089381903483400f,\n  0.997030612139289450f, 0.996971255847674320f, 0.996911313063555740f,\n  0.996850783822196610f,\n  0.996789668159204560f, 0.996727966110532490f, 0.996665677712478160f,\n  0.996602803001684130f,\n  0.996539342015137940f, 0.996475294790172160f, 0.996410661364464100f,\n  0.996345441776035900f,\n  0.996279636063254650f, 0.996213244264832040f, 0.996146266419824620f,\n  0.996078702567633980f,\n  0.996010552748005870f, 0.995941817001031350f, 0.995872495367145730f,\n  0.995802587887129160f,\n  0.995732094602106430f, 0.995661015553546910f, 0.995589350783264600f,\n  0.995517100333418110f,\n  0.995444264246510340f, 0.995370842565388990f, 0.995296835333246090f,\n  0.995222242593618360f,\n  0.995147064390386470f, 0.995071300767776170f, 0.994994951770357020f,\n  0.994918017443043200f,\n  0.994840497831093180f, 0.994762392980109930f, 0.994683702936040250f,\n  0.994604427745175660f,\n  0.994524567454151740f, 0.994444122109948040f, 0.994363091759888570f,\n  0.994281476451641550f,\n  0.994199276233218910f, 0.994116491152977070f, 0.994033121259616400f,\n  0.993949166602181130f,\n  0.993864627230059750f, 0.993779503192984580f, 0.993693794541031790f,\n  0.993607501324621610f,\n  0.993520623594518090f, 0.993433161401829360f, 0.993345114798006910f,\n  0.993256483834846440f,\n  0.993167268564487230f, 0.993077469039412300f, 0.992987085312448390f,\n  0.992896117436765980f,\n  0.992804565465879140f, 0.992712429453645460f, 0.992619709454266140f,\n  0.992526405522286100f,\n  0.992432517712593660f, 0.992338046080420420f, 0.992242990681341700f,\n  0.992147351571276090f,\n  0.992051128806485720f, 0.991954322443575950f, 0.991856932539495470f,\n  0.991758959151536110f,\n  0.991660402337333210f, 0.991561262154865290f, 0.991461538662453790f,\n  0.991361231918763460f,\n  0.991260341982802440f, 0.991158868913921350f, 0.991056812771814340f,\n  0.990954173616518500f,\n  0.990850951508413620f, 0.990747146508222710f, 0.990642758677011570f,\n  0.990537788076188750f,\n  0.990432234767505970f, 0.990326098813057330f, 0.990219380275280000f,\n  0.990112079216953770f,\n  0.990004195701200910f, 0.989895729791486660f, 0.989786681551618640f,\n  0.989677051045747210f,\n  0.989566838338365120f, 0.989456043494307710f, 0.989344666578752640f,\n  0.989232707657220050f,\n  0.989120166795572690f, 0.989007044060015270f, 0.988893339517095130f,\n  0.988779053233701520f,\n  0.988664185277066230f, 0.988548735714763200f, 0.988432704614708340f,\n  0.988316092045159690f,\n  0.988198898074717610f, 0.988081122772324070f, 0.987962766207263420f,\n  0.987843828449161740f,\n  0.987724309567986960f, 0.987604209634049160f, 0.987483528717999710f,\n  0.987362266890832400f,\n  0.987240424223882250f, 0.987118000788826280f, 0.986994996657682980f,\n  0.986871411902812470f,\n  0.986747246596916590f, 0.986622500813038480f, 0.986497174624562880f,\n  0.986371268105216030f,\n  0.986244781329065460f, 0.986117714370520090f, 0.985990067304330140f,\n  0.985861840205586980f,\n  0.985733033149723490f, 0.985603646212513400f, 0.985473679470071810f,\n  0.985343132998854790f,\n  0.985212006875659350f, 0.985080301177623800f, 0.984948015982227030f,\n  0.984815151367289140f,\n  0.984681707410970940f, 0.984547684191773960f, 0.984413081788540700f,\n  0.984277900280454370f,\n  0.984142139747038570f, 0.984005800268157870f, 0.983868881924017220f,\n  0.983731384795162090f,\n  0.983593308962478650f, 0.983454654507193270f, 0.983315421510872810f,\n  0.983175610055424420f,\n  0.983035220223095640f, 0.982894252096474070f, 0.982752705758487830f,\n  0.982610581292404750f,\n  0.982467878781833170f, 0.982324598310721280f, 0.982180739963357090f,\n  0.982036303824369020f,\n  0.981891289978725100f, 0.981745698511732990f, 0.981599529509040720f,\n  0.981452783056635520f,\n  0.981305459240844670f, 0.981157558148334830f, 0.981009079866112630f,\n  0.980860024481523870f,\n  0.980710392082253970f, 0.980560182756327840f, 0.980409396592109910f,\n  0.980258033678303550f,\n  0.980106094103951770f, 0.979953577958436740f, 0.979800485331479790f,\n  0.979646816313141210f,\n  0.979492570993820810f, 0.979337749464256780f, 0.979182351815526930f,\n  0.979026378139047580f,\n  0.978869828526574120f, 0.978712703070200420f, 0.978555001862359550f,\n  0.978396724995823090f,\n  0.978237872563701090f, 0.978078444659442380f, 0.977918441376834370f,\n  0.977757862810002760f,\n  0.977596709053411890f, 0.977434980201864260f, 0.977272676350500860f,\n  0.977109797594800880f,\n  0.976946344030581670f, 0.976782315753998650f, 0.976617712861545640f,\n  0.976452535450054060f,\n  0.976286783616693630f, 0.976120457458971910f, 0.975953557074734300f,\n  0.975786082562163930f,\n  0.975618034019781750f, 0.975449411546446380f, 0.975280215241354220f,\n  0.975110445204038890f,\n  0.974940101534371830f, 0.974769184332561770f, 0.974597693699155050f,\n  0.974425629735034990f,\n  0.974252992541422500f, 0.974079782219875680f, 0.973905998872289570f,\n  0.973731642600896400f,\n  0.973556713508265560f, 0.973381211697303290f, 0.973205137271252800f,\n  0.973028490333694210f,\n  0.972851270988544180f, 0.972673479340056430f, 0.972495115492821190f,\n  0.972316179551765300f,\n  0.972136671622152230f, 0.971956591809581720f, 0.971775940219990140f,\n  0.971594716959650160f,\n  0.971412922135170940f, 0.971230555853497380f, 0.971047618221911100f,\n  0.970864109348029470f,\n  0.970680029339806130f, 0.970495378305530560f, 0.970310156353828110f,\n  0.970124363593660280f,\n  0.969938000134323960f, 0.969751066085452140f, 0.969563561557013180f,\n  0.969375486659311280f,\n  0.969186841502985950f, 0.968997626199012420f, 0.968807840858700970f,\n  0.968617485593697540f,\n  0.968426560515983190f, 0.968235065737874320f, 0.968043001372022260f,\n  0.967850367531413620f,\n  0.967657164329369880f, 0.967463391879547550f, 0.967269050295937790f,\n  0.967074139692867040f,\n  0.966878660184995910f, 0.966682611887320080f, 0.966485994915169840f,\n  0.966288809384209690f,\n  0.966091055410438830f, 0.965892733110190860f, 0.965693842600133690f,\n  0.965494383997269500f,\n  0.965294357418934660f, 0.965093762982799590f, 0.964892600806868890f,\n  0.964690871009481030f,\n  0.964488573709308410f, 0.964285709025357480f, 0.964082277076968140f,\n  0.963878277983814200f,\n  0.963673711865903230f, 0.963468578843575950f, 0.963262879037507070f,\n  0.963056612568704340f,\n  0.962849779558509030f, 0.962642380128595710f, 0.962434414400972100f,\n  0.962225882497979020f,\n  0.962016784542290560f, 0.961807120656913540f, 0.961596890965187860f,\n  0.961386095590786250f,\n  0.961174734657714080f, 0.960962808290309780f, 0.960750316613243950f,\n  0.960537259751520050f,\n  0.960323637830473920f, 0.960109450975773940f, 0.959894699313420530f,\n  0.959679382969746750f,\n  0.959463502071417510f, 0.959247056745430090f, 0.959030047119113660f,\n  0.958812473320129310f,\n  0.958594335476470220f, 0.958375633716461170f, 0.958156368168758820f,\n  0.957936538962351420f,\n  0.957716146226558870f, 0.957495190091032570f, 0.957273670685755200f,\n  0.957051588141040970f,\n  0.956828942587535370f, 0.956605734156215080f, 0.956381962978387730f,\n  0.956157629185692140f,\n  0.955932732910098280f, 0.955707274283906560f, 0.955481253439748770f,\n  0.955254670510586990f,\n  0.955027525629714160f, 0.954799818930753720f, 0.954571550547659630f,\n  0.954342720614716480f,\n  0.954113329266538800f, 0.953883376638071770f, 0.953652862864590500f,\n  0.953421788081700310f,\n  0.953190152425336670f, 0.952957956031764700f, 0.952725199037579570f,\n  0.952491881579706320f,\n  0.952258003795399600f, 0.952023565822243570f, 0.951788567798152130f,\n  0.951553009861368590f,\n  0.951316892150465550f, 0.951080214804345010f, 0.950842977962238160f,\n  0.950605181763705340f,\n  0.950366826348635780f, 0.950127911857248100f, 0.949888438430089300f,\n  0.949648406208035480f,\n  0.949407815332291570f, 0.949166665944390700f, 0.948924958186195160f,\n  0.948682692199895090f,\n  0.948439868128009620f, 0.948196486113385580f, 0.947952546299198670f,\n  0.947708048828952100f,\n  0.947462993846477700f, 0.947217381495934820f, 0.946971211921810880f,\n  0.946724485268921170f,\n  0.946477201682408680f, 0.946229361307743820f, 0.945980964290724760f,\n  0.945732010777477150f,\n  0.945482500914453740f, 0.945232434848435000f, 0.944981812726528150f,\n  0.944730634696167800f,\n  0.944478900905115550f, 0.944226611501459810f, 0.943973766633615980f,\n  0.943720366450326200f,\n  0.943466411100659320f, 0.943211900734010620f, 0.942956835500102120f,\n  0.942701215548981900f,\n  0.942445041031024890f, 0.942188312096931770f, 0.941931028897729620f,\n  0.941673191584771360f,\n  0.941414800309736340f, 0.941155855224629190f, 0.940896356481780830f,\n  0.940636304233847590f,\n  0.940375698633811540f, 0.940114539834980280f, 0.939852827990986680f,\n  0.939590563255789270f,\n  0.939327745783671400f, 0.939064375729241950f, 0.938800453247434770f,\n  0.938535978493508560f,\n  0.938270951623047190f, 0.938005372791958840f, 0.937739242156476970f,\n  0.937472559873159250f,\n  0.937205326098887960f, 0.936937540990869900f, 0.936669204706636170f,\n  0.936400317404042060f,\n  0.936130879241267030f, 0.935860890376814640f, 0.935590350969512370f,\n  0.935319261178511610f,\n  0.935047621163287430f, 0.934775431083638700f, 0.934502691099687870f,\n  0.934229401371880820f,\n  0.933955562060986730f, 0.933681173328098410f, 0.933406235334631520f,\n  0.933130748242325230f,\n  0.932854712213241120f, 0.932578127409764420f, 0.932300993994602760f,\n  0.932023312130786490f,\n  0.931745081981668720f, 0.931466303710925090f, 0.931186977482553750f,\n  0.930907103460875130f,\n  0.930626681810531760f, 0.930345712696488470f, 0.930064196284032360f,\n  0.929782132738772190f,\n  0.929499522226638560f, 0.929216364913884040f, 0.928932660967082820f,\n  0.928648410553130520f,\n  0.928363613839244370f, 0.928078270992963140f, 0.927792382182146320f,\n  0.927505947574975180f,\n  0.927218967339951790f, 0.926931441645899130f, 0.926643370661961230f,\n  0.926354754557602860f,\n  0.926065593502609310f, 0.925775887667086740f, 0.925485637221461490f,\n  0.925194842336480530f,\n  0.924903503183210910f, 0.924611619933039970f, 0.924319192757675160f,\n  0.924026221829143850f,\n  0.923732707319793290f, 0.923438649402290370f, 0.923144048249621930f,\n  0.922848904035094120f,\n  0.922553216932332830f, 0.922256987115283030f, 0.921960214758209220f,\n  0.921662900035694730f,\n  0.921365043122642340f, 0.921066644194273640f, 0.920767703426128790f,\n  0.920468220994067110f,\n  0.920168197074266340f, 0.919867631843222950f, 0.919566525477751530f,\n  0.919264878154985370f,\n  0.918962690052375630f, 0.918659961347691900f, 0.918356692219021720f,\n  0.918052882844770380f,\n  0.917748533403661250f, 0.917443644074735220f, 0.917138215037350710f,\n  0.916832246471183890f,\n  0.916525738556228210f, 0.916218691472794220f, 0.915911105401509880f,\n  0.915602980523320230f,\n  0.915294317019487050f, 0.914985115071589310f, 0.914675374861522390f,\n  0.914365096571498560f,\n  0.914054280384046570f, 0.913742926482011390f, 0.913431035048554720f,\n  0.913118606267154240f,\n  0.912805640321603500f, 0.912492137396012650f, 0.912178097674807180f,\n  0.911863521342728520f,\n  0.911548408584833990f, 0.911232759586496190f, 0.910916574533403360f,\n  0.910599853611558930f,\n  0.910282597007281760f, 0.909964804907205660f, 0.909646477498279540f,\n  0.909327614967767260f,\n  0.909008217503247450f, 0.908688285292613360f, 0.908367818524072890f,\n  0.908046817386148340f,\n  0.907725282067676440f, 0.907403212757808110f, 0.907080609646008450f,\n  0.906757472922056550f,\n  0.906433802776045460f, 0.906109599398381980f, 0.905784862979786550f,\n  0.905459593711293250f,\n  0.905133791784249690f, 0.904807457390316540f, 0.904480590721468250f,\n  0.904153191969991780f,\n  0.903825261328487510f, 0.903496798989868450f, 0.903167805147360720f,\n  0.902838279994502830f,\n  0.902508223725145940f, 0.902177636533453620f, 0.901846518613901750f,\n  0.901514870161278740f,\n  0.901182691370684520f, 0.900849982437531450f, 0.900516743557543520f,\n  0.900182974926756810f,\n  0.899848676741518580f, 0.899513849198487980f, 0.899178492494635330f,\n  0.898842606827242370f,\n  0.898506192393901950f, 0.898169249392518080f, 0.897831778021305650f,\n  0.897493778478790310f,\n  0.897155250963808550f, 0.896816195675507300f, 0.896476612813344120f,\n  0.896136502577086770f,\n  0.895795865166813530f, 0.895454700782912450f, 0.895113009626081760f,\n  0.894770791897329550f,\n  0.894428047797973800f, 0.894084777529641990f, 0.893740981294271040f,\n  0.893396659294107720f,\n  0.893051811731707450f, 0.892706438809935390f, 0.892360540731965360f,\n  0.892014117701280470f,\n  0.891667169921672280f, 0.891319697597241390f, 0.890971700932396860f,\n  0.890623180131855930f,\n  0.890274135400644600f, 0.889924566944096720f, 0.889574474967854580f,\n  0.889223859677868210f,\n  0.888872721280395630f, 0.888521059982002260f, 0.888168875989561730f,\n  0.887816169510254440f,\n  0.887462940751568840f, 0.887109189921300170f, 0.886754917227550840f,\n  0.886400122878730600f,\n  0.886044807083555600f, 0.885688970051048960f, 0.885332611990540590f,\n  0.884975733111666660f,\n  0.884618333624369920f, 0.884260413738899190f, 0.883901973665809470f,\n  0.883543013615961880f,\n  0.883183533800523390f, 0.882823534430966620f, 0.882463015719070150f,\n  0.882101977876917580f,\n  0.881740421116898320f, 0.881378345651706920f, 0.881015751694342870f,\n  0.880652639458111010f,\n  0.880289009156621010f, 0.879924861003786860f, 0.879560195213827890f,\n  0.879195012001267480f,\n  0.878829311580933360f, 0.878463094167957870f, 0.878096359977777130f,\n  0.877729109226131570f,\n  0.877361342129065140f, 0.876993058902925890f, 0.876624259764365310f,\n  0.876254944930338510f,\n  0.875885114618103810f, 0.875514769045222850f, 0.875143908429560360f,\n  0.874772532989284150f,\n  0.874400642942864790f, 0.874028238509075740f, 0.873655319906992630f,\n  0.873281887355994210f,\n  0.872907941075761080f, 0.872533481286276170f, 0.872158508207824480f,\n  0.871783022060993120f,\n  0.871407023066670950f, 0.871030511446048260f, 0.870653487420617430f,\n  0.870275951212171940f,\n  0.869897903042806340f, 0.869519343134916860f, 0.869140271711200560f,\n  0.868760688994655310f,\n  0.868380595208579800f, 0.867999990576573510f, 0.867618875322536230f,\n  0.867237249670668400f,\n  0.866855113845470430f, 0.866472468071743050f, 0.866089312574586770f,\n  0.865705647579402380f,\n  0.865321473311889800f, 0.864936789998049020f, 0.864551597864179340f,\n  0.864165897136879300f,\n  0.863779688043046720f, 0.863392970809878420f, 0.863005745664870320f,\n  0.862618012835816740f,\n  0.862229772550811240f, 0.861841025038245330f, 0.861451770526809320f,\n  0.861062009245491480f,\n  0.860671741423578380f, 0.860280967290654510f, 0.859889687076602290f,\n  0.859497901011601730f,\n  0.859105609326130450f, 0.858712812250963520f, 0.858319510017173440f,\n  0.857925702856129790f,\n  0.857531390999499150f, 0.857136574679244980f, 0.856741254127627470f,\n  0.856345429577203610f,\n  0.855949101260826910f, 0.855552269411646860f, 0.855154934263109620f,\n  0.854757096048957220f,\n  0.854358755003227440f, 0.853959911360254180f, 0.853560565354666840f,\n  0.853160717221390420f,\n  0.852760367195645300f, 0.852359515512947090f, 0.851958162409106380f,\n  0.851556308120228980f,\n  0.851153952882715340f, 0.850751096933260790f, 0.850347740508854980f,\n  0.849943883846782210f,\n  0.849539527184620890f, 0.849134670760243630f, 0.848729314811817130f,\n  0.848323459577801640f,\n  0.847917105296951410f, 0.847510252208314330f, 0.847102900551231500f,\n  0.846695050565337450f,\n  0.846286702490559710f, 0.845877856567119000f, 0.845468513035528830f,\n  0.845058672136595470f,\n  0.844648334111417820f, 0.844237499201387020f, 0.843826167648186740f,\n  0.843414339693792760f,\n  0.843002015580472940f, 0.842589195550786710f, 0.842175879847585570f,\n  0.841762068714012490f,\n  0.841347762393501950f, 0.840932961129779780f, 0.840517665166862550f,\n  0.840101874749058400f,\n  0.839685590120966110f, 0.839268811527475230f, 0.838851539213765760f,\n  0.838433773425308340f,\n  0.838015514407863820f, 0.837596762407483040f, 0.837177517670507300f,\n  0.836757780443567190f,\n  0.836337550973583530f, 0.835916829507766360f, 0.835495616293615350f,\n  0.835073911578919410f,\n  0.834651715611756440f, 0.834229028640493420f, 0.833805850913786340f,\n  0.833382182680579730f,\n  0.832958024190106670f, 0.832533375691888680f, 0.832108237435735590f,\n  0.831682609671745120f,\n  0.831256492650303210f, 0.830829886622083570f, 0.830402791838047550f,\n  0.829975208549443950f,\n  0.829547137007808910f, 0.829118577464965980f, 0.828689530173025820f,\n  0.828259995384385660f,\n  0.827829973351729920f, 0.827399464328029470f, 0.826968468566541600f,\n  0.826536986320809960f,\n  0.826105017844664610f, 0.825672563392221390f, 0.825239623217882250f,\n  0.824806197576334330f,\n  0.824372286722551250f, 0.823937890911791370f, 0.823503010399598500f,\n  0.823067645441801670f,\n  0.822631796294514990f, 0.822195463214137170f, 0.821758646457351750f,\n  0.821321346281126740f,\n  0.820883562942714580f, 0.820445296699652050f, 0.820006547809759680f,\n  0.819567316531142230f,\n  0.819127603122188240f, 0.818687407841569680f, 0.818246730948242070f,\n  0.817805572701444270f,\n  0.817363933360698460f, 0.816921813185809480f, 0.816479212436865390f,\n  0.816036131374236810f,\n  0.815592570258576790f, 0.815148529350820830f, 0.814704008912187080f,\n  0.814259009204175270f,\n  0.813813530488567190f, 0.813367573027426570f, 0.812921137083098770f,\n  0.812474222918210480f,\n  0.812026830795669730f, 0.811578960978665890f, 0.811130613730669190f,\n  0.810681789315430780f,\n  0.810232487996982330f, 0.809782710039636530f, 0.809332455707985950f,\n  0.808881725266903610f,\n  0.808430518981542720f, 0.807978837117336310f, 0.807526679939997160f,\n  0.807074047715517610f,\n  0.806620940710169650f, 0.806167359190504420f, 0.805713303423352230f,\n  0.805258773675822210f,\n  0.804803770215302920f, 0.804348293309460780f, 0.803892343226241260f,\n  0.803435920233868120f,\n  0.802979024600843250f, 0.802521656595946430f, 0.802063816488235440f,\n  0.801605504547046150f,\n  0.801146721041991360f, 0.800687466242961610f, 0.800227740420124790f,\n  0.799767543843925680f,\n  0.799306876785086160f, 0.798845739514604580f, 0.798384132303756380f,\n  0.797922055424093000f,\n  0.797459509147442460f, 0.796996493745908750f, 0.796533009491872000f,\n  0.796069056657987990f,\n  0.795604635517188070f, 0.795139746342679590f, 0.794674389407944550f,\n  0.794208564986740640f,\n  0.793742273353100210f, 0.793275514781330630f, 0.792808289546014120f,\n  0.792340597922007170f,\n  0.791872440184440470f, 0.791403816608719500f, 0.790934727470523290f,\n  0.790465173045804880f,\n  0.789995153610791090f, 0.789524669441982190f, 0.789053720816151880f,\n  0.788582308010347120f,\n  0.788110431301888070f, 0.787638090968367450f, 0.787165287287651010f,\n  0.786692020537876790f,\n  0.786218290997455660f, 0.785744098945070360f, 0.785269444659675850f,\n  0.784794328420499230f,\n  0.784318750507038920f, 0.783842711199065230f, 0.783366210776619720f,\n  0.782889249520015480f,\n  0.782411827709836530f, 0.781933945626937630f, 0.781455603552444590f,\n  0.780976801767753750f,\n  0.780497540554531910f, 0.780017820194715990f, 0.779537640970513260f,\n  0.779057003164400630f,\n  0.778575907059125050f, 0.778094352937702790f, 0.777612341083420030f,\n  0.777129871779831620f,\n  0.776646945310762060f, 0.776163561960304340f, 0.775679722012820650f,\n  0.775195425752941420f,\n  0.774710673465565550f, 0.774225465435860680f, 0.773739801949261840f,\n  0.773253683291472590f,\n  0.772767109748463850f, 0.772280081606474320f, 0.771792599152010150f,\n  0.771304662671844830f,\n  0.770816272453018540f, 0.770327428782838890f, 0.769838131948879840f,\n  0.769348382238982280f,\n  0.768858179941253270f, 0.768367525344066270f, 0.767876418736060610f,\n  0.767384860406141730f,\n  0.766892850643480670f, 0.766400389737514230f, 0.765907477977944340f,\n  0.765414115654738270f,\n  0.764920303058128410f, 0.764426040478612070f, 0.763931328206951090f,\n  0.763436166534172010f,\n  0.762940555751565720f, 0.762444496150687210f, 0.761947988023355390f,\n  0.761451031661653620f,\n  0.760953627357928150f, 0.760455775404789260f, 0.759957476095110330f,\n  0.759458729722028210f,\n  0.758959536578942440f, 0.758459896959515430f, 0.757959811157672300f,\n  0.757459279467600720f,\n  0.756958302183750490f, 0.756456879600833740f, 0.755955012013824420f,\n  0.755452699717958250f,\n  0.754949943008732640f, 0.754446742181906440f, 0.753943097533499640f,\n  0.753439009359793580f,\n  0.752934477957330150f, 0.752429503622912390f, 0.751924086653603550f,\n  0.751418227346727470f,\n  0.750911925999867890f, 0.750405182910869330f, 0.749897998377835330f,\n  0.749390372699129560f,\n  0.748882306173375150f, 0.748373799099454560f, 0.747864851776509410f,\n  0.747355464503940190f,\n  0.746845637581406540f, 0.746335371308826320f, 0.745824665986376090f,\n  0.745313521914490520f,\n  0.744801939393862630f, 0.744289918725443260f, 0.743777460210440890f,\n  0.743264564150321600f,\n  0.742751230846809050f, 0.742237460601884000f, 0.741723253717784140f,\n  0.741208610497004260f,\n  0.740693531242295760f, 0.740178016256666240f, 0.739662065843380010f,\n  0.739145680305957510f,\n  0.738628859948174840f, 0.738111605074064260f, 0.737593915987913570f,\n  0.737075792994265730f,\n  0.736557236397919150f, 0.736038246503927350f, 0.735518823617598900f,\n  0.734998968044496710f,\n  0.734478680090438370f, 0.733957960061495940f, 0.733436808263995710f,\n  0.732915225004517780f,\n  0.732393210589896040f, 0.731870765327218290f, 0.731347889523825570f,\n  0.730824583487312160f,\n  0.730300847525525490f, 0.729776681946566090f, 0.729252087058786970f,\n  0.728727063170793830f,\n  0.728201610591444610f, 0.727675729629849610f, 0.727149420595371020f,\n  0.726622683797622850f,\n  0.726095519546471000f, 0.725567928152032300f, 0.725039909924675370f,\n  0.724511465175019630f,\n  0.723982594213935520f, 0.723453297352544380f, 0.722923574902217700f,\n  0.722393427174577550f,\n  0.721862854481496340f, 0.721331857135096290f, 0.720800435447749190f,\n  0.720268589732077190f,\n  0.719736320300951030f, 0.719203627467491220f, 0.718670511545067230f,\n  0.718136972847297490f,\n  0.717603011688049080f, 0.717068628381437480f, 0.716533823241826680f,\n  0.715998596583828690f,\n  0.715462948722303760f, 0.714926879972359490f, 0.714390390649351390f,\n  0.713853481068882470f,\n  0.713316151546802610f, 0.712778402399208980f, 0.712240233942445510f,\n  0.711701646493102970f,\n  0.711162640368018350f, 0.710623215884275020f, 0.710083373359202800f,\n  0.709543113110376770f,\n  0.709002435455618250f, 0.708461340712994160f, 0.707919829200816310f,\n  0.707377901237642100f,\n  0.706835557142273860f, 0.706292797233758480f, 0.705749621831387790f,\n  0.705206031254697830f,\n  0.704662025823468930f, 0.704117605857725430f, 0.703572771677735580f,\n  0.703027523604011220f,\n  0.702481861957308000f, 0.701935787058624360f, 0.701389299229202230f,\n  0.700842398790526230f,\n  0.700295086064323780f, 0.699747361372564990f, 0.699199225037462120f,\n  0.698650677381469580f,\n  0.698101718727283880f, 0.697552349397843270f, 0.697002569716327460f,\n  0.696452380006157830f,\n  0.695901780590996830f, 0.695350771794747800f, 0.694799353941554900f,\n  0.694247527355803310f,\n  0.693695292362118350f, 0.693142649285365510f, 0.692589598450650380f,\n  0.692036140183318830f,\n  0.691482274808955850f, 0.690928002653386280f, 0.690373324042674040f,\n  0.689818239303122470f,\n  0.689262748761273470f, 0.688706852743907750f, 0.688150551578044830f,\n  0.687593845590942170f,\n  0.687036735110095660f, 0.686479220463238950f, 0.685921301978343670f,\n  0.685362979983618730f,\n  0.684804254807510620f, 0.684245126778703080f, 0.683685596226116690f,\n  0.683125663478908800f,\n  0.682565328866473250f, 0.682004592718440830f, 0.681443455364677990f,\n  0.680881917135287340f,\n  0.680319978360607200f, 0.679757639371212030f, 0.679194900497911200f,\n  0.678631762071749470f,\n  0.678068224424006600f, 0.677504287886197430f, 0.676939952790071240f,\n  0.676375219467611700f,\n  0.675810088251037060f, 0.675244559472799270f, 0.674678633465584540f,\n  0.674112310562312360f,\n  0.673545591096136100f, 0.672978475400442090f, 0.672410963808849900f,\n  0.671843056655211930f,\n  0.671274754273613490f, 0.670706056998372160f, 0.670136965164037760f,\n  0.669567479105392490f,\n  0.668997599157450270f, 0.668427325655456820f, 0.667856658934889440f,\n  0.667285599331456480f,\n  0.666714147181097670f, 0.666142302819983540f, 0.665570066584515560f,\n  0.664997438811325340f,\n  0.664424419837275180f, 0.663851009999457340f, 0.663277209635194100f,\n  0.662703019082037440f,\n  0.662128438677768720f, 0.661553468760399000f, 0.660978109668168060f,\n  0.660402361739545030f,\n  0.659826225313227430f, 0.659249700728141490f, 0.658672788323441890f,\n  0.658095488438511290f,\n  0.657517801412960120f, 0.656939727586627110f, 0.656361267299578000f,\n  0.655782420892106030f,\n  0.655203188704731930f, 0.654623571078202680f, 0.654043568353492640f,\n  0.653463180871802330f,\n  0.652882408974558960f, 0.652301253003415460f, 0.651719713300251020f,\n  0.651137790207170330f,\n  0.650555484066503990f, 0.649972795220807530f, 0.649389724012861770f,\n  0.648806270785672550f,\n  0.648222435882470420f, 0.647638219646710420f, 0.647053622422071650f,\n  0.646468644552457890f,\n  0.645883286381996440f, 0.645297548255038380f, 0.644711430516158420f,\n  0.644124933510154540f,\n  0.643538057582047850f, 0.642950803077082080f, 0.642363170340724320f,\n  0.641775159718663500f,\n  0.641186771556811250f, 0.640598006201301030f, 0.640008863998488440f,\n  0.639419345294950700f,\n  0.638829450437486400f, 0.638239179773115390f, 0.637648533649078810f,\n  0.637057512412838590f,\n  0.636466116412077180f, 0.635874345994697720f, 0.635282201508823530f,\n  0.634689683302797850f,\n  0.634096791725183740f, 0.633503527124764320f, 0.632909889850541860f,\n  0.632315880251737680f,\n  0.631721498677792370f, 0.631126745478365340f, 0.630531621003334600f,\n  0.629936125602796550f,\n  0.629340259627065750f, 0.628744023426674790f, 0.628147417352374120f,\n  0.627550441755131530f,\n  0.626953096986132770f, 0.626355383396779990f, 0.625757301338692900f,\n  0.625158851163707730f,\n  0.624560033223877320f, 0.623960847871470770f, 0.623361295458973340f,\n  0.622761376339086460f,\n  0.622161090864726930f, 0.621560439389027270f, 0.620959422265335180f,\n  0.620358039847213830f,\n  0.619756292488440660f, 0.619154180543008410f, 0.618551704365123860f,\n  0.617948864309208260f,\n  0.617345660729896940f, 0.616742093982038830f, 0.616138164420696910f,\n  0.615533872401147430f,\n  0.614929218278879590f, 0.614324202409595950f, 0.613718825149211830f,\n  0.613113086853854910f,\n  0.612506987879865570f, 0.611900528583796070f, 0.611293709322411010f,\n  0.610686530452686280f,\n  0.610078992331809620f, 0.609471095317180240f, 0.608862839766408200f,\n  0.608254226037314490f,\n  0.607645254487930830f, 0.607035925476499760f, 0.606426239361473550f,\n  0.605816196501515080f,\n  0.605205797255496500f, 0.604595041982500360f, 0.603983931041818020f,\n  0.603372464792950370f,\n  0.602760643595607220f, 0.602148467809707320f, 0.601535937795377730f,\n  0.600923053912954090f,\n  0.600309816522980430f, 0.599696225986208310f, 0.599082282663597310f,\n  0.598467986916314310f,\n  0.597853339105733910f, 0.597238339593437530f, 0.596622988741213330f,\n  0.596007286911056530f,\n  0.595391234465168730f, 0.594774831765957580f, 0.594158079176036800f,\n  0.593540977058226390f,\n  0.592923525775551410f, 0.592305725691242400f, 0.591687577168735550f,\n  0.591069080571671510f,\n  0.590450236263895920f, 0.589831044609458900f, 0.589211505972615070f,\n  0.588591620717822890f,\n  0.587971389209745120f, 0.587350811813247660f, 0.586729888893400500f,\n  0.586108620815476430f,\n  0.585487007944951450f, 0.584865050647504490f, 0.584242749289016980f,\n  0.583620104235572760f,\n  0.582997115853457700f, 0.582373784509160220f, 0.581750110569369760f,\n  0.581126094400977620f,\n  0.580501736371076600f, 0.579877036846960350f, 0.579251996196123550f,\n  0.578626614786261430f,\n  0.578000892985269910f, 0.577374831161244880f, 0.576748429682482520f,\n  0.576121688917478390f,\n  0.575494609234928230f, 0.574867191003726740f, 0.574239434592967890f,\n  0.573611340371944610f,\n  0.572982908710148680f, 0.572354139977270030f, 0.571725034543197120f,\n  0.571095592778016690f,\n  0.570465815052012990f, 0.569835701735668110f, 0.569205253199661200f,\n  0.568574469814869250f,\n  0.567943351952365670f, 0.567311899983420800f, 0.566680114279501710f,\n  0.566047995212271560f,\n  0.565415543153589770f, 0.564782758475511400f, 0.564149641550287680f,\n  0.563516192750364910f,\n  0.562882412448384550f, 0.562248301017183150f, 0.561613858829792420f,\n  0.560979086259438260f,\n  0.560343983679540860f, 0.559708551463714790f, 0.559072789985768480f,\n  0.558436699619704100f,\n  0.557800280739717100f, 0.557163533720196340f, 0.556526458935723720f,\n  0.555889056761073920f,\n  0.555251327571214090f, 0.554613271741304040f, 0.553974889646695610f,\n  0.553336181662932410f,\n  0.552697148165749770f, 0.552057789531074980f, 0.551418106135026060f,\n  0.550778098353912230f,\n  0.550137766564233630f, 0.549497111142680960f, 0.548856132466135290f,\n  0.548214830911667780f,\n  0.547573206856539870f, 0.546931260678202190f, 0.546288992754295210f,\n  0.545646403462648590f,\n  0.545003493181281160f, 0.544360262288400400f, 0.543716711162402390f,\n  0.543072840181871850f,\n  0.542428649725581360f, 0.541784140172491660f, 0.541139311901750910f,\n  0.540494165292695230f,\n  0.539848700724847700f, 0.539202918577918240f, 0.538556819231804210f,\n  0.537910403066588990f,\n  0.537263670462542530f, 0.536616621800121150f, 0.535969257459966710f,\n  0.535321577822907010f,\n  0.534673583269955510f, 0.534025274182310380f, 0.533376650941355560f,\n  0.532727713928658810f,\n  0.532078463525973540f, 0.531428900115236910f, 0.530779024078570250f,\n  0.530128835798278850f,\n  0.529478335656852090f, 0.528827524036961980f, 0.528176401321464370f,\n  0.527524967893398200f,\n  0.526873224135984700f, 0.526221170432628170f, 0.525568807166914680f,\n  0.524916134722612890f,\n  0.524263153483673470f, 0.523609863834228030f, 0.522956266158590140f,\n  0.522302360841254700f,\n  0.521648148266897090f, 0.520993628820373810f, 0.520338802886721960f,\n  0.519683670851158520f,\n  0.519028233099080970f, 0.518372490016066220f, 0.517716441987871150f,\n  0.517060089400432130f,\n  0.516403432639863990f, 0.515746472092461380f, 0.515089208144697270f,\n  0.514431641183222930f,\n  0.513773771594868030f, 0.513115599766640560f, 0.512457126085725800f,\n  0.511798350939487000f,\n  0.511139274715464390f, 0.510479897801375700f, 0.509820220585115560f,\n  0.509160243454754750f,\n  0.508499966798540810f, 0.507839391004897940f, 0.507178516462425290f,\n  0.506517343559898530f,\n  0.505855872686268860f, 0.505194104230662240f, 0.504532038582380380f,\n  0.503869676130898950f,\n  0.503207017265869030f, 0.502544062377115800f, 0.501880811854638400f,\n  0.501217266088609950f,\n  0.500553425469377640f, 0.499889290387461380f, 0.499224861233555030f,\n  0.498560138398525200f,\n  0.497895122273410930f, 0.497229813249424340f, 0.496564211717949340f,\n  0.495898318070542240f,\n  0.495232132698931350f, 0.494565655995016010f, 0.493898888350867430f,\n  0.493231830158728070f,\n  0.492564481811010650f, 0.491896843700299240f, 0.491228916219348330f,\n  0.490560699761082080f,\n  0.489892194718595300f, 0.489223401485152030f, 0.488554320454186230f,\n  0.487884952019301210f,\n  0.487215296574268820f, 0.486545354513030270f, 0.485875126229695420f,\n  0.485204612118541880f,\n  0.484533812574016120f, 0.483862727990732320f, 0.483191358763471910f,\n  0.482519705287184520f,\n  0.481847767956986080f, 0.481175547168160360f, 0.480503043316157670f,\n  0.479830256796594250f,\n  0.479157188005253310f, 0.478483837338084080f, 0.477810205191201040f,\n  0.477136291960884750f,\n  0.476462098043581310f, 0.475787623835901120f, 0.475112869734620470f,\n  0.474437836136679340f,\n  0.473762523439182850f, 0.473086932039400220f, 0.472411062334764100f,\n  0.471734914722871430f,\n  0.471058489601482610f, 0.470381787368520710f, 0.469704808422072460f,\n  0.469027553160387240f,\n  0.468350021981876530f, 0.467672215285114710f, 0.466994133468838110f,\n  0.466315776931944480f,\n  0.465637146073493770f, 0.464958241292706740f, 0.464279062988965760f,\n  0.463599611561814120f,\n  0.462919887410955130f, 0.462239890936253280f, 0.461559622537733190f,\n  0.460879082615578690f,\n  0.460198271570134270f, 0.459517189801903590f, 0.458835837711549120f,\n  0.458154215699893230f,\n  0.457472324167916110f, 0.456790163516757220f, 0.456107734147714220f,\n  0.455425036462242420f,\n  0.454742070861955450f, 0.454058837748624540f, 0.453375337524177750f,\n  0.452691570590700860f,\n  0.452007537350436530f, 0.451323238205783520f, 0.450638673559297760f,\n  0.449953843813690580f,\n  0.449268749371829920f, 0.448583390636739300f, 0.447897768011597360f,\n  0.447211881899738260f,\n  0.446525732704651400f, 0.445839320829980350f, 0.445152646679523590f,\n  0.444465710657234110f,\n  0.443778513167218280f, 0.443091054613736990f, 0.442403335401204130f,\n  0.441715355934187310f,\n  0.441027116617407340f, 0.440338617855737300f, 0.439649860054203420f,\n  0.438960843617984430f,\n  0.438271568952410480f, 0.437582036462964340f, 0.436892246555280470f,\n  0.436202199635143950f,\n  0.435511896108492170f, 0.434821336381412350f, 0.434130520860143310f,\n  0.433439449951074200f,\n  0.432748124060743760f, 0.432056543595841450f, 0.431364708963206440f,\n  0.430672620569826860f,\n  0.429980278822840570f, 0.429287684129534720f, 0.428594836897344400f,\n  0.427901737533854240f,\n  0.427208386446796370f, 0.426514784044051520f, 0.425820930733648350f,\n  0.425126826923762410f,\n  0.424432473022717420f, 0.423737869438983950f, 0.423043016581179100f,\n  0.422347914858067000f,\n  0.421652564678558380f, 0.420956966451709440f, 0.420261120586723050f,\n  0.419565027492946940f,\n  0.418868687579875110f, 0.418172101257146430f, 0.417475268934544340f,\n  0.416778191021997590f,\n  0.416080867929579320f, 0.415383300067506290f, 0.414685487846140010f,\n  0.413987431675985510f,\n  0.413289131967690960f, 0.412590589132048380f, 0.411891803579992220f,\n  0.411192775722600160f,\n  0.410493505971092520f, 0.409793994736831200f, 0.409094242431320920f,\n  0.408394249466208110f,\n  0.407694016253280170f, 0.406993543204466460f, 0.406292830731837470f,\n  0.405591879247603870f,\n  0.404890689164117750f, 0.404189260893870750f, 0.403487594849495310f,\n  0.402785691443763640f,\n  0.402083551089587040f, 0.401381174200016790f, 0.400678561188243350f,\n  0.399975712467595390f,\n  0.399272628451540930f, 0.398569309553686360f, 0.397865756187775750f,\n  0.397161968767691720f,\n  0.396457947707453960f, 0.395753693421220080f, 0.395049206323284880f,\n  0.394344486828079650f,\n  0.393639535350172880f, 0.392934352304269600f, 0.392228938105210370f,\n  0.391523293167972350f,\n  0.390817417907668610f, 0.390111312739546910f, 0.389404978078991100f,\n  0.388698414341519250f,\n  0.387991621942784910f, 0.387284601298575890f, 0.386577352824813980f,\n  0.385869876937555310f,\n  0.385162174052989970f, 0.384454244587440870f, 0.383746088957365010f,\n  0.383037707579352130f,\n  0.382329100870124510f, 0.381620269246537520f, 0.380911213125578130f,\n  0.380201932924366050f,\n  0.379492429060152740f, 0.378782701950320600f, 0.378072752012383990f,\n  0.377362579663988450f,\n  0.376652185322909620f, 0.375941569407054420f, 0.375230732334460030f,\n  0.374519674523293210f,\n  0.373808396391851370f, 0.373096898358560690f, 0.372385180841977360f,\n  0.371673244260786630f,\n  0.370961089033802040f, 0.370248715579966360f, 0.369536124318350760f,\n  0.368823315668153960f,\n  0.368110290048703050f, 0.367397047879452820f, 0.366683589579984930f,\n  0.365969915570008910f,\n  0.365256026269360380f, 0.364541922098002180f, 0.363827603476023610f,\n  0.363113070823639530f,\n  0.362398324561191310f, 0.361683365109145950f, 0.360968192888095290f,\n  0.360252808318756830f,\n  0.359537211821973180f, 0.358821403818710860f, 0.358105384730061760f,\n  0.357389154977241000f,\n  0.356672714981588260f, 0.355956065164567010f, 0.355239205947763370f,\n  0.354522137752887430f,\n  0.353804861001772160f, 0.353087376116372530f, 0.352369683518766630f,\n  0.351651783631154680f,\n  0.350933676875858360f, 0.350215363675321740f, 0.349496844452109600f,\n  0.348778119628908420f,\n  0.348059189628525780f, 0.347340054873889190f, 0.346620715788047320f,\n  0.345901172794169100f,\n  0.345181426315542610f, 0.344461476775576480f, 0.343741324597798600f,\n  0.343020970205855540f,\n  0.342300414023513690f, 0.341579656474657210f, 0.340858697983289440f,\n  0.340137538973531880f,\n  0.339416179869623410f, 0.338694621095921190f, 0.337972863076899830f,\n  0.337250906237150650f,\n  0.336528751001382350f, 0.335806397794420560f, 0.335083847041206580f,\n  0.334361099166798900f,\n  0.333638154596370920f, 0.332915013755212650f, 0.332191677068729320f,\n  0.331468144962440920f,\n  0.330744417861982890f, 0.330020496193105530f, 0.329296380381672800f,\n  0.328572070853663690f,\n  0.327847568035170960f, 0.327122872352400510f, 0.326397984231672660f,\n  0.325672904099419900f,\n  0.324947632382188430f, 0.324222169506637130f, 0.323496515899536760f,\n  0.322770671987770710f,\n  0.322044638198334620f, 0.321318414958334910f, 0.320592002694990330f,\n  0.319865401835630610f,\n  0.319138612807695900f, 0.318411636038737960f, 0.317684471956418020f,\n  0.316957120988508150f,\n  0.316229583562890490f, 0.315501860107556040f, 0.314773951050606070f,\n  0.314045856820250820f,\n  0.313317577844809070f, 0.312589114552708660f, 0.311860467372486130f,\n  0.311131636732785270f,\n  0.310402623062358880f, 0.309673426790066490f, 0.308944048344875710f,\n  0.308214488155861220f,\n  0.307484746652204160f, 0.306754824263192780f, 0.306024721418221900f,\n  0.305294438546791720f,\n  0.304563976078509050f, 0.303833334443086470f, 0.303102514070341060f,\n  0.302371515390196130f,\n  0.301640338832678880f, 0.300908984827921890f, 0.300177453806162120f,\n  0.299445746197739950f,\n  0.298713862433100390f, 0.297981802942791920f, 0.297249568157465890f,\n  0.296517158507877410f,\n  0.295784574424884370f, 0.295051816339446720f, 0.294318884682627570f,\n  0.293585779885591310f,\n  0.292852502379604810f, 0.292119052596036540f, 0.291385430966355720f,\n  0.290651637922133220f,\n  0.289917673895040860f, 0.289183539316850310f, 0.288449234619434170f,\n  0.287714760234765280f,\n  0.286980116594915570f, 0.286245304132057120f, 0.285510323278461380f,\n  0.284775174466498300f,\n  0.284039858128637360f, 0.283304374697445790f, 0.282568724605589740f,\n  0.281832908285833460f,\n  0.281096926171038320f, 0.280360778694163810f, 0.279624466288266700f,\n  0.278887989386500280f,\n  0.278151348422115090f, 0.277414543828458200f, 0.276677576038972420f,\n  0.275940445487197320f,\n  0.275203152606767370f, 0.274465697831413220f, 0.273728081594960650f,\n  0.272990304331329980f,\n  0.272252366474536660f, 0.271514268458690810f, 0.270776010717996010f,\n  0.270037593686750510f,\n  0.269299017799346230f, 0.268560283490267890f, 0.267821391194094320f,\n  0.267082341345496350f,\n  0.266343134379238180f, 0.265603770730176440f, 0.264864250833259320f,\n  0.264124575123527490f,\n  0.263384744036113390f, 0.262644758006240100f, 0.261904617469222560f,\n  0.261164322860466590f,\n  0.260423874615468010f, 0.259683273169813930f, 0.258942518959180580f,\n  0.258201612419334870f,\n  0.257460553986133210f, 0.256719344095520720f, 0.255977983183532380f,\n  0.255236471686291820f,\n  0.254494810040010790f, 0.253752998680989940f, 0.253011038045617980f,\n  0.252268928570370810f,\n  0.251526670691812780f, 0.250784264846594550f, 0.250041711471454650f,\n  0.249299011003218300f,\n  0.248556163878796620f, 0.247813170535187620f, 0.247070031409475370f,\n  0.246326746938829060f,\n  0.245583317560504000f, 0.244839743711840750f, 0.244096025830264210f,\n  0.243352164353284880f,\n  0.242608159718496890f, 0.241864012363579210f, 0.241119722726294730f,\n  0.240375291244489500f,\n  0.239630718356093560f, 0.238886004499120170f, 0.238141150111664870f,\n  0.237396155631906550f,\n  0.236651021498106460f, 0.235905748148607370f, 0.235160336021834860f,\n  0.234414785556295250f,\n  0.233669097190576820f, 0.232923271363349120f, 0.232177308513361770f,\n  0.231431209079445730f,\n  0.230684973500512310f, 0.229938602215552260f, 0.229192095663636740f,\n  0.228445454283916550f,\n  0.227698678515621170f, 0.226951768798059980f, 0.226204725570620270f,\n  0.225457549272768540f,\n  0.224710240344049570f, 0.223962799224085520f, 0.223215226352576960f,\n  0.222467522169301990f,\n  0.221719687114115240f, 0.220971721626949060f, 0.220223626147812460f,\n  0.219475401116790340f,\n  0.218727046974044600f, 0.217978564159812290f, 0.217229953114406790f,\n  0.216481214278216900f,\n  0.215732348091705940f, 0.214983354995412820f, 0.214234235429951100f,\n  0.213484989836008080f,\n  0.212735618654345870f, 0.211986122325800410f, 0.211236501291280710f,\n  0.210486755991769890f,\n  0.209736886868323370f, 0.208986894362070070f, 0.208236778914211470f,\n  0.207486540966020700f,\n  0.206736180958843660f, 0.205985699334098050f, 0.205235096533272380f,\n  0.204484372997927180f,\n  0.203733529169694010f, 0.202982565490274460f, 0.202231482401441620f,\n  0.201480280345037820f,\n  0.200728959762976140f, 0.199977521097239290f, 0.199225964789878890f,\n  0.198474291283016360f,\n  0.197722501018842030f, 0.196970594439614370f, 0.196218571987660850f,\n  0.195466434105377090f,\n  0.194714181235225990f, 0.193961813819739010f, 0.193209332301514080f,\n  0.192456737123216840f,\n  0.191704028727579940f, 0.190951207557401860f, 0.190198274055548120f,\n  0.189445228664950340f,\n  0.188692071828605260f, 0.187938803989575850f, 0.187185425590990440f,\n  0.186431937076041640f,\n  0.185678338887987790f, 0.184924631470150870f, 0.184170815265917720f,\n  0.183416890718739230f,\n  0.182662858272129360f, 0.181908718369666160f, 0.181154471454990920f,\n  0.180400117971807270f,\n  0.179645658363882100f, 0.178891093075044830f, 0.178136422549186320f,\n  0.177381647230260200f,\n  0.176626767562280960f, 0.175871783989325040f, 0.175116696955530060f,\n  0.174361506905093830f,\n  0.173606214282275410f, 0.172850819531394200f, 0.172095323096829040f,\n  0.171339725423019260f,\n  0.170584026954463700f, 0.169828228135719880f, 0.169072329411405180f,\n  0.168316331226194910f,\n  0.167560234024823590f, 0.166804038252083870f, 0.166047744352825850f,\n  0.165291352771957970f,\n  0.164534863954446110f, 0.163778278345312690f, 0.163021596389637810f,\n  0.162264818532558110f,\n  0.161507945219266150f, 0.160750976895011390f, 0.159993914005098350f,\n  0.159236756994887850f,\n  0.158479506309796100f, 0.157722162395293690f, 0.156964725696906750f,\n  0.156207196660216040f,\n  0.155449575730855880f, 0.154691863354515400f, 0.153934059976937460f,\n  0.153176166043917870f,\n  0.152418182001306500f, 0.151660108295005400f, 0.150901945370970040f,\n  0.150143693675208330f,\n  0.149385353653779810f, 0.148626925752796540f, 0.147868410418422360f,\n  0.147109808096871850f,\n  0.146351119234411440f, 0.145592344277358450f, 0.144833483672080240f,\n  0.144074537864995330f,\n  0.143315507302571590f, 0.142556392431327340f, 0.141797193697830530f,\n  0.141037911548697770f,\n  0.140278546430595420f, 0.139519098790238600f, 0.138759569074390380f,\n  0.137999957729862760f,\n  0.137240265203515700f, 0.136480491942256310f, 0.135720638393040080f,\n  0.134960705002868830f,\n  0.134200692218792020f, 0.133440600487905820f, 0.132680430257352130f,\n  0.131920181974319760f,\n  0.131159856086043410f, 0.130399453039802740f, 0.129638973282923540f,\n  0.128878417262776660f,\n  0.128117785426777150f, 0.127357078222385570f, 0.126596296097105960f,\n  0.125835439498487020f,\n  0.125074508874121300f, 0.124313504671644300f, 0.123552427338735370f,\n  0.122791277323116900f,\n  0.122030055072553410f, 0.121268761034852550f, 0.120507395657864240f,\n  0.119745959389479630f,\n  0.118984452677632520f, 0.118222875970297250f, 0.117461229715489990f,\n  0.116699514361267840f,\n  0.115937730355727850f, 0.115175878147008180f, 0.114413958183287050f,\n  0.113651970912781920f,\n  0.112889916783750470f, 0.112127796244489750f, 0.111365609743335190f,\n  0.110603357728661910f,\n  0.109841040648882680f, 0.109078658952449240f, 0.108316213087851300f,\n  0.107553703503615710f,\n  0.106791130648307380f, 0.106028494970528530f, 0.105265796918917650f,\n  0.104503036942150550f,\n  0.103740215488939480f, 0.102977333008032250f, 0.102214389948213370f,\n  0.101451386758302160f,\n  0.100688323887153970f, 0.099925201783659226f, 0.099162020896742573f,\n  0.098398781675363881f,\n  0.097635484568517339f, 0.096872130025230527f, 0.096108718494565468f,\n  0.095345250425617742f,\n  0.094581726267515473f, 0.093818146469420494f, 0.093054511480527333f,\n  0.092290821750062355f,\n  0.091527077727284981f, 0.090763279861485704f, 0.089999428601987341f,\n  0.089235524398144139f,\n  0.088471567699340822f, 0.087707558954993645f, 0.086943498614549489f,\n  0.086179387127484922f,\n  0.085415224943307277f, 0.084651012511553700f, 0.083886750281790226f,\n  0.083122438703613077f,\n  0.082358078226646619f, 0.081593669300544638f, 0.080829212374989468f,\n  0.080064707899690932f,\n  0.079300156324387569f, 0.078535558098845590f, 0.077770913672857989f,\n  0.077006223496245585f,\n  0.076241488018856149f, 0.075476707690563416f, 0.074711882961268378f,\n  0.073947014280897269f,\n  0.073182102099402888f, 0.072417146866763538f, 0.071652149032982254f,\n  0.070887109048087787f,\n  0.070122027362133646f, 0.069356904425197236f, 0.068591740687380900f,\n  0.067826536598810966f,\n  0.067061292609636836f, 0.066296009170032283f, 0.065530686730193397f,\n  0.064765325740339871f,\n  0.063999926650714078f, 0.063234489911580136f, 0.062469015973224969f,\n  0.061703505285957416f,\n  0.060937958300107238f, 0.060172375466026218f, 0.059406757234087247f,\n  0.058641104054683348f,\n  0.057875416378229017f, 0.057109694655158132f, 0.056343939335925283f,\n  0.055578150871004817f,\n  0.054812329710889909f, 0.054046476306093640f, 0.053280591107148056f,\n  0.052514674564603257f,\n  0.051748727129028414f, 0.050982749251010900f, 0.050216741381155325f,\n  0.049450703970084824f,\n  0.048684637468439020f, 0.047918542326875327f, 0.047152418996068000f,\n  0.046386267926707213f,\n  0.045620089569500123f, 0.044853884375169933f, 0.044087652794454979f,\n  0.043321395278109784f,\n  0.042555112276904117f, 0.041788804241622082f, 0.041022471623063397f,\n  0.040256114872041358f,\n  0.039489734439384118f, 0.038723330775933762f, 0.037956904332545366f,\n  0.037190455560088091f,\n  0.036423984909444228f, 0.035657492831508264f, 0.034890979777187955f,\n  0.034124446197403423f,\n  0.033357892543086159f, 0.032591319265180385f, 0.031824726814640963f,\n  0.031058115642434700f,\n  0.030291486199539423f, 0.029524838936943035f, 0.028758174305644590f,\n  0.027991492756653365f,\n  0.027224794740987910f, 0.026458080709677145f, 0.025691351113759395f,\n  0.024924606404281485f,\n  0.024157847032300020f, 0.023391073448879338f, 0.022624286105092803f,\n  0.021857485452021874f,\n  0.021090671940755180f, 0.020323846022389572f, 0.019557008148029204f,\n  0.018790158768784596f,\n  0.018023298335773701f, 0.017256427300120978f, 0.016489546112956454f,\n  0.015722655225417017f,\n  0.014955755088644378f, 0.014188846153786343f, 0.013421928871995907f,\n  0.012655003694430301f,\n  0.011888071072252072f, 0.011121131456628141f, 0.010354185298728884f,\n  0.009587233049729183f,\n  0.008820275160807512f, 0.008053312083144991f, 0.007286344267926684f,\n  0.006519372166339549f,\n  0.005752396229573737f, 0.004985416908821652f, 0.004218434655277024f,\n  0.003451449920135975f,\n  0.002684463154596083f, 0.001917474809855460f, 0.001150485337113809f,\n  0.000383495187571497f\n};\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_8192)\n    const float32_t Weights_8192[16384] = {\n  1.000000000000000000f, -0.000000000000000000f, 0.999999981616429330f,\n    -0.000191747597310703f,\n  0.999999926465717890f, -0.000383495187571396f, 0.999999834547867670f,\n    -0.000575242763732066f,\n  0.999999705862882230f, -0.000766990318742704f, 0.999999540410766110f,\n    -0.000958737845553301f,\n  0.999999338191525530f, -0.001150485337113849f, 0.999999099205167830f,\n    -0.001342232786374338f,\n  0.999998823451701880f, -0.001533980186284766f, 0.999998510931137790f,\n    -0.001725727529795126f,\n  0.999998161643486980f, -0.001917474809855419f, 0.999997775588762350f,\n    -0.002109222019415644f,\n  0.999997352766978210f, -0.002300969151425805f, 0.999996893178149880f,\n    -0.002492716198835908f,\n  0.999996396822294350f, -0.002684463154595962f, 0.999995863699429940f,\n    -0.002876210011655979f,\n  0.999995293809576190f, -0.003067956762965976f, 0.999994687152754080f,\n    -0.003259703401475973f,\n  0.999994043728985820f, -0.003451449920135994f, 0.999993363538295150f,\n    -0.003643196311896068f,\n  0.999992646580707190f, -0.003834942569706228f, 0.999991892856248010f,\n    -0.004026688686516512f,\n  0.999991102364945590f, -0.004218434655276963f, 0.999990275106828920f,\n    -0.004410180468937631f,\n  0.999989411081928400f, -0.004601926120448571f, 0.999988510290275690f,\n    -0.004793671602759841f,\n  0.999987572731904080f, -0.004985416908821511f, 0.999986598406848000f,\n    -0.005177162031583651f,\n  0.999985587315143200f, -0.005368906963996343f, 0.999984539456826970f,\n    -0.005560651699009674f,\n  0.999983454831937730f, -0.005752396229573736f, 0.999982333440515350f,\n    -0.005944140548638633f,\n  0.999981175282601110f, -0.006135884649154475f, 0.999979980358237650f,\n    -0.006327628524071378f,\n  0.999978748667468830f, -0.006519372166339468f, 0.999977480210339940f,\n    -0.006711115568908879f,\n  0.999976174986897610f, -0.006902858724729756f, 0.999974832997189810f,\n    -0.007094601626752250f,\n  0.999973454241265940f, -0.007286344267926521f, 0.999972038719176730f,\n    -0.007478086641202744f,\n  0.999970586430974140f, -0.007669828739531097f, 0.999969097376711580f,\n    -0.007861570555861772f,\n  0.999967571556443780f, -0.008053312083144972f, 0.999966008970226920f,\n    -0.008245053314330906f,\n  0.999964409618118280f, -0.008436794242369799f, 0.999962773500176930f,\n    -0.008628534860211886f,\n  0.999961100616462820f, -0.008820275160807412f, 0.999959390967037450f,\n    -0.009012015137106633f,\n  0.999957644551963900f, -0.009203754782059819f, 0.999955861371306100f,\n    -0.009395494088617252f,\n  0.999954041425129780f, -0.009587233049729225f, 0.999952184713501780f,\n    -0.009778971658346044f,\n  0.999950291236490480f, -0.009970709907418031f, 0.999948360994165400f,\n    -0.010162447789895513f,\n  0.999946393986597460f, -0.010354185298728842f, 0.999944390213859060f,\n    -0.010545922426868378f,\n  0.999942349676023910f, -0.010737659167264491f, 0.999940272373166960f,\n    -0.010929395512867571f,\n  0.999938158305364590f, -0.011121131456628021f, 0.999936007472694620f,\n    -0.011312866991496258f,\n  0.999933819875236000f, -0.011504602110422714f, 0.999931595513069200f,\n    -0.011696336806357838f,\n  0.999929334386276070f, -0.011888071072252092f, 0.999927036494939640f,\n    -0.012079804901055957f,\n  0.999924701839144500f, -0.012271538285719925f, 0.999922330418976490f,\n    -0.012463271219194511f,\n  0.999919922234522750f, -0.012655003694430242f, 0.999917477285871770f,\n    -0.012846735704377662f,\n  0.999914995573113470f, -0.013038467241987334f, 0.999912477096339240f,\n    -0.013230198300209835f,\n  0.999909921855641540f, -0.013421928871995765f, 0.999907329851114300f,\n    -0.013613658950295740f,\n  0.999904701082852900f, -0.013805388528060391f, 0.999902035550953920f,\n    -0.013997117598240367f,\n  0.999899333255515390f, -0.014188846153786345f, 0.999896594196636680f,\n    -0.014380574187649006f,\n  0.999893818374418490f, -0.014572301692779064f, 0.999891005788962950f,\n    -0.014764028662127246f,\n  0.999888156440373320f, -0.014955755088644296f, 0.999885270328754520f,\n    -0.015147480965280987f,\n  0.999882347454212560f, -0.015339206284988100f, 0.999879387816854930f,\n    -0.015530931040716447f,\n  0.999876391416790410f, -0.015722655225416857f, 0.999873358254129260f,\n    -0.015914378832040183f,\n  0.999870288328982950f, -0.016106101853537287f, 0.999867181641464380f,\n    -0.016297824282859065f,\n  0.999864038191687680f, -0.016489546112956437f, 0.999860857979768540f,\n    -0.016681267336780332f,\n  0.999857641005823860f, -0.016872987947281710f, 0.999854387269971890f,\n    -0.017064707937411563f,\n  0.999851096772332190f, -0.017256427300120877f, 0.999847769513025900f,\n    -0.017448146028360693f,\n  0.999844405492175240f, -0.017639864115082053f, 0.999841004709904000f,\n    -0.017831581553236039f,\n  0.999837567166337090f, -0.018023298335773746f, 0.999834092861600960f,\n    -0.018215014455646290f,\n  0.999830581795823400f, -0.018406729905804820f, 0.999827033969133420f,\n    -0.018598444679200511f,\n  0.999823449381661570f, -0.018790158768784555f, 0.999819828033539420f,\n    -0.018981872167508178f,\n  0.999816169924900410f, -0.019173584868322623f, 0.999812475055878780f,\n    -0.019365296864179156f,\n  0.999808743426610520f, -0.019557008148029083f, 0.999804975037232870f,\n    -0.019748718712823729f,\n  0.999801169887884260f, -0.019940428551514441f, 0.999797327978704690f,\n    -0.020132137657052594f,\n  0.999793449309835270f, -0.020323846022389593f, 0.999789533881418780f,\n    -0.020515553640476875f,\n  0.999785581693599210f, -0.020707260504265895f, 0.999781592746521670f,\n    -0.020898966606708137f,\n  0.999777567040332940f, -0.021090671940755121f, 0.999773504575180990f,\n    -0.021282376499358387f,\n  0.999769405351215280f, -0.021474080275469508f, 0.999765269368586450f,\n    -0.021665783262040078f,\n  0.999761096627446610f, -0.021857485452021735f, 0.999756887127949080f,\n    -0.022049186838366135f,\n  0.999752640870248840f, -0.022240887414024961f, 0.999748357854501780f,\n    -0.022432587171949934f,\n  0.999744038080865430f, -0.022624286105092803f, 0.999739681549498660f,\n    -0.022815984206405345f,\n  0.999735288260561680f, -0.023007681468839369f, 0.999730858214216030f,\n    -0.023199377885346720f,\n  0.999726391410624470f, -0.023391073448879258f, 0.999721887849951310f,\n    -0.023582768152388894f,\n  0.999717347532362190f, -0.023774461988827555f, 0.999712770458023870f,\n    -0.023966154951147210f,\n  0.999708156627104880f, -0.024157847032299864f, 0.999703506039774650f,\n    -0.024349538225237534f,\n  0.999698818696204250f, -0.024541228522912288f, 0.999694094596566000f,\n    -0.024732917918276223f,\n  0.999689333741033640f, -0.024924606404281468f, 0.999684536129782140f,\n    -0.025116293973880186f,\n  0.999679701762987930f, -0.025307980620024571f, 0.999674830640828740f,\n    -0.025499666335666853f,\n  0.999669922763483760f, -0.025691351113759295f, 0.999664978131133310f,\n    -0.025883034947254198f,\n  0.999659996743959220f, -0.026074717829103901f, 0.999654978602144690f,\n    -0.026266399752260760f,\n  0.999649923705874240f, -0.026458080709677187f, 0.999644832055333610f,\n    -0.026649760694305618f,\n  0.999639703650710200f, -0.026841439699098531f, 0.999634538492192300f,\n    -0.027033117717008431f,\n  0.999629336579970110f, -0.027224794740987875f, 0.999624097914234570f,\n    -0.027416470763989436f,\n  0.999618822495178640f, -0.027608145778965740f, 0.999613510322995950f,\n    -0.027799819778869445f,\n  0.999608161397882110f, -0.027991492756653243f, 0.999602775720033530f,\n    -0.028183164705269874f,\n  0.999597353289648380f, -0.028374835617672099f, 0.999591894106925950f,\n    -0.028566505486812728f,\n  0.999586398172067070f, -0.028758174305644615f, 0.999580865485273700f,\n    -0.028949842067120635f,\n  0.999575296046749220f, -0.029141508764193722f, 0.999569689856698580f,\n    -0.029333174389816835f,\n  0.999564046915327740f, -0.029524838936942976f, 0.999558367222844300f,\n    -0.029716502398525191f,\n  0.999552650779456990f, -0.029908164767516555f, 0.999546897585375960f,\n    -0.030099826036870198f,\n  0.999541107640812940f, -0.030291486199539284f, 0.999535280945980540f,\n    -0.030483145248477009f,\n  0.999529417501093140f, -0.030674803176636626f, 0.999523517306366350f,\n    -0.030866459976971412f,\n  0.999517580362016990f, -0.031058115642434700f, 0.999511606668263440f,\n    -0.031249770165979861f,\n  0.999505596225325310f, -0.031441423540560301f, 0.999499549033423640f,\n    -0.031633075759129478f,\n  0.999493465092780590f, -0.031824726814640887f, 0.999487344403620080f,\n    -0.032016376700048060f,\n  0.999481186966166950f, -0.032208025408304586f, 0.999474992780647780f,\n    -0.032399672932364086f,\n  0.999468761847290050f, -0.032591319265180226f, 0.999462494166323160f,\n    -0.032782964399706724f,\n  0.999456189737977340f, -0.032974608328897335f, 0.999449848562484530f,\n    -0.033166251045705857f,\n  0.999443470640077770f, -0.033357892543086139f, 0.999437055970991530f,\n    -0.033549532813992068f,\n  0.999430604555461730f, -0.033741171851377580f, 0.999424116393725640f,\n    -0.033932809648196664f,\n  0.999417591486021720f, -0.034124446197403326f, 0.999411029832589780f,\n    -0.034316081491951651f,\n  0.999404431433671300f, -0.034507715524795750f, 0.999397796289508640f,\n    -0.034699348288889799f,\n  0.999391124400346050f, -0.034890979777188004f, 0.999384415766428560f,\n    -0.035082609982644619f,\n  0.999377670388002850f, -0.035274238898213947f, 0.999370888265317170f,\n    -0.035465866516850353f,\n  0.999364069398620550f, -0.035657492831508222f, 0.999357213788164000f,\n    -0.035849117835142018f,\n  0.999350321434199440f, -0.036040741520706229f, 0.999343392336980220f,\n    -0.036232363881155395f,\n  0.999336426496761240f, -0.036423984909444110f, 0.999329423913798420f,\n    -0.036615604598527030f,\n  0.999322384588349540f, -0.036807222941358832f, 0.999315308520673070f,\n    -0.036998839930894263f,\n  0.999308195711029470f, -0.037190455560088119f, 0.999301046159680070f,\n    -0.037382069821895229f,\n  0.999293859866887790f, -0.037573682709270494f, 0.999286636832916740f,\n    -0.037765294215168860f,\n  0.999279377058032710f, -0.037956904332545310f, 0.999272080542502610f,\n    -0.038148513054354891f,\n  0.999264747286594420f, -0.038340120373552694f, 0.999257377290578060f,\n    -0.038531726283093870f,\n  0.999249970554724420f, -0.038723330775933623f, 0.999242527079305830f,\n    -0.038914933845027193f,\n  0.999235046864595850f, -0.039106535483329888f, 0.999227529910869610f,\n    -0.039298135683797059f,\n  0.999219976218403530f, -0.039489734439384118f, 0.999212385787475290f,\n    -0.039681331743046527f,\n  0.999204758618363890f, -0.039872927587739811f, 0.999197094711349880f,\n    -0.040064521966419520f,\n  0.999189394066714920f, -0.040256114872041282f, 0.999181656684742350f,\n    -0.040447706297560782f,\n  0.999173882565716380f, -0.040639296235933736f, 0.999166071709923000f,\n    -0.040830884680115948f,\n  0.999158224117649430f, -0.041022471623063238f, 0.999150339789184110f,\n    -0.041214057057731519f,\n  0.999142418724816910f, -0.041405640977076739f, 0.999134460924839150f,\n    -0.041597223374054894f,\n  0.999126466389543390f, -0.041788804241622061f, 0.999118435119223490f,\n    -0.041980383572734356f,\n  0.999110367114174890f, -0.042171961360347947f, 0.999102262374694130f,\n    -0.042363537597419072f,\n  0.999094120901079070f, -0.042555112276904020f, 0.999085942693629270f,\n    -0.042746685391759132f,\n  0.999077727752645360f, -0.042938256934940820f, 0.999069476078429330f,\n    -0.043129826899405546f,\n  0.999061187671284600f, -0.043321395278109825f, 0.999052862531515930f,\n    -0.043512962064010237f,\n  0.999044500659429290f, -0.043704527250063421f, 0.999036102055332330f,\n    -0.043896090829226068f,\n  0.999027666719533690f, -0.044087652794454944f, 0.999019194652343460f,\n    -0.044279213138706849f,\n  0.999010685854073380f, -0.044470771854938668f, 0.999002140325035980f,\n    -0.044662328936107325f,\n  0.998993558065545680f, -0.044853884375169815f, 0.998984939075918010f,\n    -0.045045438165083197f,\n  0.998976283356469820f, -0.045236990298804590f, 0.998967590907519300f,\n    -0.045428540769291155f,\n  0.998958861729386080f, -0.045620089569500144f, 0.998950095822391250f,\n    -0.045811636692388844f,\n  0.998941293186856870f, -0.046003182130914623f, 0.998932453823106690f,\n    -0.046194725878034908f,\n  0.998923577731465780f, -0.046386267926707157f, 0.998914664912260440f,\n    -0.046577808269888943f,\n  0.998905715365818290f, -0.046769346900537863f, 0.998896729092468410f,\n    -0.046960883811611592f,\n  0.998887706092541290f, -0.047152418996067869f, 0.998878646366368690f,\n    -0.047343952446864478f,\n  0.998869549914283560f, -0.047535484156959303f, 0.998860416736620520f,\n    -0.047727014119310254f,\n  0.998851246833715180f, -0.047918542326875327f, 0.998842040205904840f,\n    -0.048110068772612591f,\n  0.998832796853527990f, -0.048301593449480144f, 0.998823516776924490f,\n    -0.048493116350436176f,\n  0.998814199976435390f, -0.048684637468438943f, 0.998804846452403420f,\n    -0.048876156796446760f,\n  0.998795456205172410f, -0.049067674327418015f, 0.998786029235087640f,\n    -0.049259190054311140f,\n  0.998776565542495610f, -0.049450703970084664f, 0.998767065127744380f,\n    -0.049642216067697156f,\n  0.998757527991183340f, -0.049833726340107277f, 0.998747954133162860f,\n    -0.050025234780273729f,\n  0.998738343554035230f, -0.050216741381155311f, 0.998728696254153720f,\n    -0.050408246135710856f,\n  0.998719012233872940f, -0.050599749036899282f, 0.998709291493549030f,\n    -0.050791250077679581f,\n  0.998699534033539280f, -0.050982749251010803f, 0.998689739854202620f,\n    -0.051174246549852080f,\n  0.998679908955899090f, -0.051365741967162593f, 0.998670041338990070f,\n    -0.051557235495901611f,\n  0.998660137003838490f, -0.051748727129028456f, 0.998650195950808280f,\n    -0.051940216859502536f,\n  0.998640218180265270f, -0.052131704680283324f, 0.998630203692576050f,\n    -0.052323190584330347f,\n  0.998620152488108870f, -0.052514674564603223f, 0.998610064567233340f,\n    -0.052706156614061632f,\n  0.998599939930320370f, -0.052897636725665324f, 0.998589778577742230f,\n    -0.053089114892374133f,\n  0.998579580509872500f, -0.053280591107147945f, 0.998569345727086110f,\n    -0.053472065362946727f,\n  0.998559074229759310f, -0.053663537652730520f, 0.998548766018269920f,\n    -0.053855007969459440f,\n  0.998538421092996730f, -0.054046476306093660f, 0.998528039454320230f,\n    -0.054237942655593452f,\n  0.998517621102622210f, -0.054429407010919133f, 0.998507166038285490f,\n    -0.054620869365031105f,\n  0.998496674261694640f, -0.054812329710889854f, 0.998486145773235360f,\n    -0.055003788041455920f,\n  0.998475580573294770f, -0.055195244349689934f, 0.998464978662261250f,\n    -0.055386698628552597f,\n  0.998454340040524800f, -0.055578150871004678f, 0.998443664708476340f,\n    -0.055769601070007030f,\n  0.998432952666508440f, -0.055961049218520569f, 0.998422203915015020f,\n    -0.056152495309506292f,\n  0.998411418454391300f, -0.056343939335925290f, 0.998400596285033640f,\n    -0.056535381290738700f,\n  0.998389737407340160f, -0.056726821166907748f, 0.998378841821709990f,\n    -0.056918258957393740f,\n  0.998367909528543820f, -0.057109694655158062f, 0.998356940528243420f,\n    -0.057301128253162158f,\n  0.998345934821212370f, -0.057492559744367566f, 0.998334892407855000f,\n    -0.057683989121735904f,\n  0.998323813288577560f, -0.057875416378228857f, 0.998312697463787260f,\n    -0.058066841506808194f,\n  0.998301544933892890f, -0.058258264500435752f, 0.998290355699304350f,\n    -0.058449685352073476f,\n  0.998279129760433200f, -0.058641104054683341f, 0.998267867117692110f,\n    -0.058832520601227435f,\n  0.998256567771495180f, -0.059023934984667931f, 0.998245231722257880f,\n    -0.059215347197967061f,\n  0.998233858970396850f, -0.059406757234087150f, 0.998222449516330550f,\n    -0.059598165085990591f,\n  0.998211003360478190f, -0.059789570746639868f, 0.998199520503260660f,\n    -0.059980974208997548f,\n  0.998188000945100300f, -0.060172375466026259f, 0.998176444686420530f,\n    -0.060363774510688743f,\n  0.998164851727646240f, -0.060555171335947788f, 0.998153222069203760f,\n    -0.060746565934766288f,\n  0.998141555711520520f, -0.060937958300107203f, 0.998129852655025630f,\n    -0.061129348424933588f,\n  0.998118112900149180f, -0.061320736302208578f, 0.998106336447323050f,\n    -0.061512121924895378f,\n  0.998094523296980010f, -0.061703505285957298f, 0.998082673449554590f,\n    -0.061894886378357716f,\n  0.998070786905482340f, -0.062086265195060088f, 0.998058863665200250f,\n    -0.062277641729027972f,\n  0.998046903729146840f, -0.062469015973224996f, 0.998034907097761770f,\n    -0.062660387920614874f,\n  0.998022873771486240f, -0.062851757564161406f, 0.998010803750762450f,\n    -0.063043124896828492f,\n  0.997998697036034390f, -0.063234489911580066f, 0.997986553627747020f,\n    -0.063425852601380228f,\n  0.997974373526346990f, -0.063617212959193106f, 0.997962156732281950f,\n    -0.063808570977982898f,\n  0.997949903246001190f, -0.063999926650713940f, 0.997937613067955250f,\n    -0.064191279970350637f,\n  0.997925286198596000f, -0.064382630929857465f, 0.997912922638376610f,\n    -0.064573979522198982f,\n  0.997900522387751620f, -0.064765325740339885f, 0.997888085447177110f,\n    -0.064956669577244872f,\n  0.997875611817110150f, -0.065148011025878833f, 0.997863101498009500f,\n    -0.065339350079206632f,\n  0.997850554490335110f, -0.065530686730193327f, 0.997837970794548280f,\n    -0.065722020971803990f,\n  0.997825350411111640f, -0.065913352797003805f, 0.997812693340489280f,\n    -0.066104682198758077f,\n  0.997799999583146470f, -0.066296009170032130f, 0.997787269139549960f,\n    -0.066487333703791451f,\n  0.997774502010167820f, -0.066678655793001557f, 0.997761698195469560f,\n    -0.066869975430628115f,\n  0.997748857695925690f, -0.067061292609636822f, 0.997735980512008620f,\n    -0.067252607322993499f,\n  0.997723066644191640f, -0.067443919563664051f, 0.997710116092949570f,\n    -0.067635229324614479f,\n  0.997697128858758500f, -0.067826536598810869f, 0.997684104942096030f,\n    -0.068017841379219388f,\n  0.997671044343441000f, -0.068209143658806329f, 0.997657947063273710f,\n    -0.068400443430538013f,\n  0.997644813102075420f, -0.068591740687380942f, 0.997631642460329320f,\n    -0.068783035422301630f,\n  0.997618435138519550f, -0.068974327628266746f, 0.997605191137131640f,\n    -0.069165617298242985f,\n  0.997591910456652630f, -0.069356904425197208f, 0.997578593097570800f,\n    -0.069548189002096306f,\n  0.997565239060375750f, -0.069739471021907307f, 0.997551848345558430f,\n    -0.069930750477597309f,\n  0.997538420953611340f, -0.070122027362133521f, 0.997524956885027960f,\n    -0.070313301668483250f,\n  0.997511456140303450f, -0.070504573389613856f, 0.997497918719934210f,\n    -0.070695842518492855f,\n  0.997484344624417930f, -0.070887109048087801f, 0.997470733854253670f,\n    -0.071078372971366405f,\n  0.997457086409941910f, -0.071269634281296401f, 0.997443402291984360f,\n    -0.071460892970845680f,\n  0.997429681500884180f, -0.071652149032982212f, 0.997415924037145960f,\n    -0.071843402460674027f,\n  0.997402129901275300f, -0.072034653246889332f, 0.997388299093779460f,\n    -0.072225901384596322f,\n  0.997374431615167150f, -0.072417146866763413f, 0.997360527465947940f,\n    -0.072608389686358993f,\n  0.997346586646633230f, -0.072799629836351673f, 0.997332609157735470f,\n    -0.072990867309710036f,\n  0.997318594999768600f, -0.073182102099402888f, 0.997304544173247990f,\n    -0.073373334198399032f,\n  0.997290456678690210f, -0.073564563599667426f, 0.997276332516613180f,\n    -0.073755790296177098f,\n  0.997262171687536170f, -0.073947014280897200f, 0.997247974191979860f,\n    -0.074138235546796979f,\n  0.997233740030466280f, -0.074329454086845756f, 0.997219469203518670f,\n    -0.074520669894013000f,\n  0.997205161711661850f, -0.074711882961268211f, 0.997190817555421940f,\n    -0.074903093281581082f,\n  0.997176436735326190f, -0.075094300847921305f, 0.997162019251903290f,\n    -0.075285505653258769f,\n  0.997147565105683480f, -0.075476707690563388f, 0.997133074297198110f,\n    -0.075667906952805231f,\n  0.997118546826979980f, -0.075859103432954447f, 0.997103982695563330f,\n    -0.076050297123981259f,\n  0.997089381903483400f, -0.076241488018856066f, 0.997074744451277310f,\n    -0.076432676110549283f,\n  0.997060070339482960f, -0.076623861392031492f, 0.997045359568640040f,\n    -0.076815043856273343f,\n  0.997030612139289450f, -0.077006223496245640f, 0.997015828051973310f,\n    -0.077197400304919200f,\n  0.997001007307235290f, -0.077388574275265049f, 0.996986149905620180f,\n    -0.077579745400254224f,\n  0.996971255847674320f, -0.077770913672857947f, 0.996956325133945280f,\n    -0.077962079086047492f,\n  0.996941357764982160f, -0.078153241632794232f, 0.996926353741335090f,\n    -0.078344401306069705f,\n  0.996911313063555740f, -0.078535558098845479f, 0.996896235732197210f,\n    -0.078726712004093299f,\n  0.996881121747813850f, -0.078917863014784942f, 0.996865971110961310f,\n    -0.079109011123892375f,\n  0.996850783822196610f, -0.079300156324387597f, 0.996835559882078170f,\n    -0.079491298609242769f,\n  0.996820299291165670f, -0.079682437971430126f, 0.996805002050020430f,\n    -0.079873574403921996f,\n  0.996789668159204560f, -0.080064707899690890f, 0.996774297619282050f,\n    -0.080255838451709319f,\n  0.996758890430818000f, -0.080446966052950014f, 0.996743446594378860f,\n    -0.080638090696385709f,\n  0.996727966110532490f, -0.080829212374989329f, 0.996712448979848010f,\n    -0.081020331081733857f,\n  0.996696895202896060f, -0.081211446809592441f, 0.996681304780248300f,\n    -0.081402559551538245f,\n  0.996665677712478160f, -0.081593669300544652f, 0.996650014000160070f,\n    -0.081784776049585076f,\n  0.996634313643869900f, -0.081975879791633066f, 0.996618576644185070f,\n    -0.082166980519662314f,\n  0.996602803001684130f, -0.082358078226646536f, 0.996586992716946950f,\n    -0.082549172905559673f,\n  0.996571145790554840f, -0.082740264549375692f, 0.996555262223090540f,\n    -0.082931353151068699f,\n  0.996539342015137940f, -0.083122438703612911f, 0.996523385167282450f,\n    -0.083313521199982685f,\n  0.996507391680110820f, -0.083504600633152432f, 0.996491361554210920f,\n    -0.083695676996096716f,\n  0.996475294790172160f, -0.083886750281790226f, 0.996459191388585410f,\n    -0.084077820483207694f,\n  0.996443051350042630f, -0.084268887593324071f, 0.996426874675137240f,\n    -0.084459951605114325f,\n  0.996410661364464100f, -0.084651012511553617f, 0.996394411418619290f,\n    -0.084842070305617134f,\n  0.996378124838200210f, -0.085033124980280275f, 0.996361801623805720f,\n    -0.085224176528518478f,\n  0.996345441776035900f, -0.085415224943307333f, 0.996329045295492380f,\n    -0.085606270217622529f,\n  0.996312612182778000f, -0.085797312344439894f, 0.996296142438496850f,\n    -0.085988351316735337f,\n  0.996279636063254650f, -0.086179387127484894f, 0.996263093057658140f,\n    -0.086370419769664752f,\n  0.996246513422315520f, -0.086561449236251170f, 0.996229897157836500f,\n    -0.086752475520220543f,\n  0.996213244264832040f, -0.086943498614549378f, 0.996196554743914220f,\n    -0.087134518512214307f,\n  0.996179828595696980f, -0.087325535206192059f, 0.996163065820794950f,\n    -0.087516548689459531f,\n  0.996146266419824620f, -0.087707558954993659f, 0.996129430393403740f,\n    -0.087898565995771588f,\n  0.996112557742151130f, -0.088089569804770507f, 0.996095648466687300f,\n    -0.088280570374967740f,\n  0.996078702567633980f, -0.088471567699340767f, 0.996061720045614000f,\n    -0.088662561770867149f,\n  0.996044700901251970f, -0.088853552582524600f, 0.996027645135173610f,\n    -0.089044540127290892f,\n  0.996010552748005870f, -0.089235524398144014f, 0.995993423740377360f,\n    -0.089426505388061961f,\n  0.995976258112917790f, -0.089617483090022959f, 0.995959055866258320f,\n    -0.089808457497005278f,\n  0.995941817001031350f, -0.089999428601987341f, 0.995924541517870800f,\n    -0.090190396397947695f,\n  0.995907229417411720f, -0.090381360877864983f, 0.995889880700290720f,\n    -0.090572322034717989f,\n  0.995872495367145730f, -0.090763279861485621f, 0.995855073418615790f,\n    -0.090954234351146926f,\n  0.995837614855341610f, -0.091145185496681005f, 0.995820119677964910f,\n    -0.091336133291067184f,\n  0.995802587887129160f, -0.091527077727284828f, 0.995785019483478750f,\n    -0.091718018798313455f,\n  0.995767414467659820f, -0.091908956497132724f, 0.995749772840319510f,\n    -0.092099890816722388f,\n  0.995732094602106430f, -0.092290821750062355f, 0.995714379753670610f,\n    -0.092481749290132600f,\n  0.995696628295663520f, -0.092672673429913310f, 0.995678840228737540f,\n    -0.092863594162384724f,\n  0.995661015553546910f, -0.093054511480527249f, 0.995643154270746900f,\n    -0.093245425377321375f,\n  0.995625256380994310f, -0.093436335845747787f, 0.995607321884947050f,\n    -0.093627242878787195f,\n  0.995589350783264600f, -0.093818146469420549f, 0.995571343076607770f,\n    -0.094009046610628838f,\n  0.995553298765638470f, -0.094199943295393204f, 0.995535217851020390f,\n    -0.094390836516694943f,\n  0.995517100333418110f, -0.094581726267515445f, 0.995498946213497770f,\n    -0.094772612540836243f,\n  0.995480755491926940f, -0.094963495329638992f, 0.995462528169374420f,\n    -0.095154374626905486f,\n  0.995444264246510340f, -0.095345250425617617f, 0.995425963724006160f,\n    -0.095536122718757471f,\n  0.995407626602534900f, -0.095726991499307162f, 0.995389252882770690f,\n    -0.095917856760249040f,\n  0.995370842565388990f, -0.096108718494565509f, 0.995352395651066810f,\n    -0.096299576695239128f,\n  0.995333912140482280f, -0.096490431355252593f, 0.995315392034315070f,\n    -0.096681282467588725f,\n  0.995296835333246090f, -0.096872130025230471f, 0.995278242037957670f,\n    -0.097062974021160917f,\n  0.995259612149133390f, -0.097253814448363271f, 0.995240945667458130f,\n    -0.097444651299820870f,\n  0.995222242593618360f, -0.097635484568517200f, 0.995203502928301510f,\n    -0.097826314247435861f,\n  0.995184726672196930f, -0.098017140329560604f, 0.995165913825994620f,\n    -0.098207962807875276f,\n  0.995147064390386470f, -0.098398781675363881f, 0.995128178366065490f,\n    -0.098589596925010584f,\n  0.995109255753726110f, -0.098780408549799623f, 0.995090296554064000f,\n    -0.098971216542715429f,\n  0.995071300767776170f, -0.099162020896742503f, 0.995052268395561050f,\n    -0.099352821604865540f,\n  0.995033199438118630f, -0.099543618660069319f, 0.995014093896149700f,\n    -0.099734412055338825f,\n  0.994994951770357020f, -0.099925201783659073f, 0.994975773061444140f,\n    -0.100115987838015310f,\n  0.994956557770116380f, -0.100306770211392860f, 0.994937305897080070f,\n    -0.100497548896777200f,\n  0.994918017443043200f, -0.100688323887153960f, 0.994898692408714870f,\n    -0.100879095175508860f,\n  0.994879330794805620f, -0.101069862754827820f, 0.994859932602027320f,\n    -0.101260626618096830f,\n  0.994840497831093180f, -0.101451386758302080f, 0.994821026482717860f,\n    -0.101642143168429830f,\n  0.994801518557617110f, -0.101832895841466530f, 0.994781974056508260f,\n    -0.102023644770398740f,\n  0.994762392980109930f, -0.102214389948213210f, 0.994742775329142010f,\n    -0.102405131367896720f,\n  0.994723121104325700f, -0.102595869022436280f, 0.994703430306383860f,\n    -0.102786602904819040f,\n  0.994683702936040250f, -0.102977333008032220f, 0.994663938994020390f,\n    -0.103168059325063230f,\n  0.994644138481050710f, -0.103358781848899610f, 0.994624301397859400f,\n    -0.103549500572529070f,\n  0.994604427745175660f, -0.103740215488939370f, 0.994584517523730340f,\n    -0.103930926591118510f,\n  0.994564570734255420f, -0.104121633872054590f, 0.994544587377484300f,\n    -0.104312337324735800f,\n  0.994524567454151740f, -0.104503036942150570f, 0.994504510964993700f,\n    -0.104693732717287390f,\n  0.994484417910747600f, -0.104884424643134970f, 0.994464288292152390f,\n    -0.105075112712682040f,\n  0.994444122109948040f, -0.105265796918917600f, 0.994423919364875950f,\n    -0.105456477254830710f,\n  0.994403680057679100f, -0.105647153713410620f, 0.994383404189101430f,\n    -0.105837826287646670f,\n  0.994363091759888570f, -0.106028494970528410f, 0.994342742770787270f,\n    -0.106219159755045480f,\n  0.994322357222545810f, -0.106409820634187680f, 0.994301935115913580f,\n    -0.106600477600944960f,\n  0.994281476451641550f, -0.106791130648307390f, 0.994260981230481790f,\n    -0.106981779769265230f,\n  0.994240449453187900f, -0.107172424956808840f, 0.994219881120514960f,\n    -0.107363066203928760f,\n  0.994199276233218910f, -0.107553703503615620f, 0.994178634792057590f,\n    -0.107744336848860280f,\n  0.994157956797789730f, -0.107934966232653650f, 0.994137242251175720f,\n    -0.108125591647986870f,\n  0.994116491152977070f, -0.108316213087851170f, 0.994095703503956930f,\n    -0.108506830545237920f,\n  0.994074879304879370f, -0.108697444013138720f, 0.994054018556510210f,\n    -0.108888053484545190f,\n  0.994033121259616400f, -0.109078658952449240f, 0.994012187414966220f,\n    -0.109269260409842780f,\n  0.993991217023329380f, -0.109459857849717980f, 0.993970210085476920f,\n    -0.109650451265067100f,\n  0.993949166602181130f, -0.109841040648882600f, 0.993928086574215830f,\n    -0.110031625994157000f,\n  0.993906970002356060f, -0.110222207293883060f, 0.993885816887378090f,\n    -0.110412784541053630f,\n  0.993864627230059750f, -0.110603357728661730f, 0.993843401031180180f,\n    -0.110793926849700560f,\n  0.993822138291519660f, -0.110984491897163390f, 0.993800839011860120f,\n    -0.111175052864043720f,\n  0.993779503192984580f, -0.111365609743335160f, 0.993758130835677430f,\n    -0.111556162528031480f,\n  0.993736721940724600f, -0.111746711211126590f, 0.993715276508913230f,\n    -0.111937255785614570f,\n  0.993693794541031790f, -0.112127796244489640f, 0.993672276037870010f,\n    -0.112318332580746170f,\n  0.993650721000219120f, -0.112508864787378690f, 0.993629129428871720f,\n    -0.112699392857381860f,\n  0.993607501324621610f, -0.112889916783750520f, 0.993585836688263950f,\n    -0.113080436559479620f,\n  0.993564135520595300f, -0.113270952177564350f, 0.993542397822413600f,\n    -0.113461463630999950f,\n  0.993520623594518090f, -0.113651970912781870f, 0.993498812837709360f,\n    -0.113842474015905710f,\n  0.993476965552789190f, -0.114032972933367200f, 0.993455081740560960f,\n    -0.114223467658162260f,\n  0.993433161401829360f, -0.114413958183286920f, 0.993411204537400060f,\n    -0.114604444501737420f,\n  0.993389211148080650f, -0.114794926606510080f, 0.993367181234679600f,\n    -0.114985404490601460f,\n  0.993345114798006910f, -0.115175878147008190f, 0.993323011838873950f,\n    -0.115366347568727140f,\n  0.993300872358093280f, -0.115556812748755260f, 0.993278696356479030f,\n    -0.115747273680089720f,\n  0.993256483834846440f, -0.115937730355727780f, 0.993234234794012290f,\n    -0.116128182768666930f,\n  0.993211949234794500f, -0.116318630911904750f, 0.993189627158012620f,\n    -0.116509074778439040f,\n  0.993167268564487230f, -0.116699514361267690f, 0.993144873455040430f,\n    -0.116889949653388780f,\n  0.993122441830495580f, -0.117080380647800590f, 0.993099973691677570f,\n    -0.117270807337501460f,\n  0.993077469039412300f, -0.117461229715489990f, 0.993054927874527320f,\n    -0.117651647774764860f,\n  0.993032350197851410f, -0.117842061508324980f, 0.993009736010214580f,\n    -0.118032470909169340f,\n  0.992987085312448390f, -0.118222875970297170f, 0.992964398105385610f,\n    -0.118413276684707790f,\n  0.992941674389860470f, -0.118603673045400720f, 0.992918914166708300f,\n    -0.118794065045375640f,\n  0.992896117436765980f, -0.118984452677632340f, 0.992873284200871730f,\n    -0.119174835935170880f,\n  0.992850414459865100f, -0.119365214810991350f, 0.992827508214586760f,\n    -0.119555589298094110f,\n  0.992804565465879140f, -0.119745959389479600f, 0.992781586214585570f,\n    -0.119936325078148470f,\n  0.992758570461551140f, -0.120126686357101500f, 0.992735518207621850f,\n    -0.120317043219339680f,\n  0.992712429453645460f, -0.120507395657864130f, 0.992689304200470750f,\n    -0.120697743665676110f,\n  0.992666142448948020f, -0.120888087235777080f, 0.992642944199928820f,\n    -0.121078426361168640f,\n  0.992619709454266140f, -0.121268761034852600f, 0.992596438212814290f,\n    -0.121459091249830840f,\n  0.992573130476428810f, -0.121649416999105530f, 0.992549786245966680f,\n    -0.121839738275678890f,\n  0.992526405522286100f, -0.122030055072553360f, 0.992502988306246950f,\n    -0.122220367382731540f,\n  0.992479534598709970f, -0.122410675199216200f, 0.992456044400537700f,\n    -0.122600978515010240f,\n  0.992432517712593660f, -0.122791277323116770f, 0.992408954535742850f,\n    -0.122981571616539050f,\n  0.992385354870851670f, -0.123171861388280480f, 0.992361718718787870f,\n    -0.123362146631344680f,\n  0.992338046080420420f, -0.123552427338735370f, 0.992314336956619640f,\n    -0.123742703503456510f,\n  0.992290591348257370f, -0.123932975118512160f, 0.992266809256206580f,\n    -0.124123242176906600f,\n  0.992242990681341700f, -0.124313504671644230f, 0.992219135624538450f,\n    -0.124503762595729660f,\n  0.992195244086673920f, -0.124694015942167640f, 0.992171316068626520f,\n    -0.124884264703963130f,\n  0.992147351571276090f, -0.125074508874121170f, 0.992123350595503720f,\n    -0.125264748445647060f,\n  0.992099313142191800f, -0.125454983411546230f, 0.992075239212224070f,\n    -0.125645213764824290f,\n  0.992051128806485720f, -0.125835439498487000f, 0.992026981925863360f,\n    -0.126025660605540320f,\n  0.992002798571244520f, -0.126215877078990350f, 0.991978578743518580f,\n    -0.126406088911843380f,\n  0.991954322443575950f, -0.126596296097105850f, 0.991930029672308480f,\n    -0.126786498627784410f,\n  0.991905700430609330f, -0.126976696496885870f, 0.991881334719373010f,\n    -0.127166889697417160f,\n  0.991856932539495470f, -0.127357078222385400f, 0.991832493891873780f,\n    -0.127547262064797970f,\n  0.991808018777406430f, -0.127737441217662310f, 0.991783507196993490f,\n    -0.127927615673986080f,\n  0.991758959151536110f, -0.128117785426777130f, 0.991734374641936810f,\n    -0.128307950469043420f,\n  0.991709753669099530f, -0.128498110793793170f, 0.991685096233929420f,\n    -0.128688266394034690f,\n  0.991660402337333210f, -0.128878417262776550f, 0.991635671980218740f,\n    -0.129068563393027410f,\n  0.991610905163495370f, -0.129258704777796140f, 0.991586101888073500f,\n    -0.129448841410091780f,\n  0.991561262154865290f, -0.129638973282923560f, 0.991536385964783880f,\n    -0.129829100389300930f,\n  0.991511473318743900f, -0.130019222722233350f, 0.991486524217661480f,\n    -0.130209340274730630f,\n  0.991461538662453790f, -0.130399453039802690f, 0.991436516654039420f,\n    -0.130589561010459650f,\n  0.991411458193338540f, -0.130779664179711710f, 0.991386363281272280f,\n    -0.130969762540569380f,\n  0.991361231918763460f, -0.131159856086043270f, 0.991336064106736140f,\n    -0.131349944809144190f,\n  0.991310859846115440f, -0.131540028702883120f, 0.991285619137828200f,\n    -0.131730107760271160f,\n  0.991260341982802440f, -0.131920181974319790f, 0.991235028381967420f,\n    -0.132110251338040360f,\n  0.991209678336254060f, -0.132300315844444650f, 0.991184291846594180f,\n    -0.132490375486544550f,\n  0.991158868913921350f, -0.132680430257352070f, 0.991133409539170170f,\n    -0.132870480149879430f,\n  0.991107913723276890f, -0.133060525157139060f, 0.991082381467178640f,\n    -0.133250565272143570f,\n  0.991056812771814340f, -0.133440600487905680f, 0.991031207638124130f,\n    -0.133630630797438340f,\n  0.991005566067049370f, -0.133820656193754720f, 0.990979888059532740f,\n    -0.134010676669868130f,\n  0.990954173616518500f, -0.134200692218792020f, 0.990928422738951990f,\n    -0.134390702833540070f,\n  0.990902635427780010f, -0.134580708507126170f, 0.990876811683950700f,\n    -0.134770709232564350f,\n  0.990850951508413620f, -0.134960705002868750f, 0.990825054902119470f,\n    -0.135150695811053850f,\n  0.990799121866020370f, -0.135340681650134210f, 0.990773152401069780f,\n    -0.135530662513124590f,\n  0.990747146508222710f, -0.135720638393039910f, 0.990721104188435180f,\n    -0.135910609282895330f,\n  0.990695025442664630f, -0.136100575175706200f, 0.990668910271870100f,\n    -0.136290536064487960f,\n  0.990642758677011570f, -0.136480491942256280f, 0.990616570659050620f,\n    -0.136670442802027090f,\n  0.990590346218950150f, -0.136860388636816380f, 0.990564085357674370f,\n    -0.137050329439640410f,\n  0.990537788076188750f, -0.137240265203515590f, 0.990511454375460290f,\n    -0.137430195921458550f,\n  0.990485084256457090f, -0.137620121586486040f, 0.990458677720148620f,\n    -0.137810042191615080f,\n  0.990432234767505970f, -0.137999957729862790f, 0.990405755399501260f,\n    -0.138189868194246560f,\n  0.990379239617108160f, -0.138379773577783890f, 0.990352687421301450f,\n    -0.138569673873492500f,\n  0.990326098813057330f, -0.138759569074390350f, 0.990299473793353590f,\n    -0.138949459173495490f,\n  0.990272812363169110f, -0.139139344163826200f, 0.990246114523483990f,\n    -0.139329224038400980f,\n  0.990219380275280000f, -0.139519098790238490f, 0.990192609619540030f,\n    -0.139708968412357550f,\n  0.990165802557248400f, -0.139898832897777210f, 0.990138959089390650f,\n    -0.140088692239516670f,\n  0.990112079216953770f, -0.140278546430595420f, 0.990085162940925970f,\n    -0.140468395464033000f,\n  0.990058210262297120f, -0.140658239332849210f, 0.990031221182058000f,\n    -0.140848078030064080f,\n  0.990004195701200910f, -0.141037911548697710f, 0.989977133820719610f,\n    -0.141227739881770510f,\n  0.989950035541608990f, -0.141417563022303020f, 0.989922900864865450f,\n    -0.141607380963316020f,\n  0.989895729791486660f, -0.141797193697830390f, 0.989868522322471580f,\n    -0.141987001218867290f,\n  0.989841278458820530f, -0.142176803519448030f, 0.989813998201535260f,\n    -0.142366600592594180f,\n  0.989786681551618640f, -0.142556392431327340f, 0.989759328510075200f,\n    -0.142746179028669460f,\n  0.989731939077910570f, -0.142935960377642670f, 0.989704513256131850f,\n    -0.143125736471269190f,\n  0.989677051045747210f, -0.143315507302571500f, 0.989649552447766530f,\n    -0.143505272864572290f,\n  0.989622017463200890f, -0.143695033150294470f, 0.989594446093062460f,\n    -0.143884788152760980f,\n  0.989566838338365120f, -0.144074537864995160f, 0.989539194200123930f,\n    -0.144264282280020440f,\n  0.989511513679355190f, -0.144454021390860470f, 0.989483796777076760f,\n    -0.144643755190539040f,\n  0.989456043494307710f, -0.144833483672080210f, 0.989428253832068230f,\n    -0.145023206828508220f,\n  0.989400427791380380f, -0.145212924652847460f, 0.989372565373267010f,\n    -0.145402637138122570f,\n  0.989344666578752640f, -0.145592344277358340f, 0.989316731408863000f,\n    -0.145782046063579860f,\n  0.989288759864625170f, -0.145971742489812210f, 0.989260751947067640f,\n    -0.146161433549080900f,\n  0.989232707657220050f, -0.146351119234411460f, 0.989204626996113780f,\n    -0.146540799538829760f,\n  0.989176509964781010f, -0.146730474455361750f, 0.989148356564255590f,\n    -0.146920143977033620f,\n  0.989120166795572690f, -0.147109808096871820f, 0.989091940659768800f,\n    -0.147299466807902850f,\n  0.989063678157881540f, -0.147489120103153570f, 0.989035379290950310f,\n    -0.147678767975650970f,\n  0.989007044060015270f, -0.147868410418422220f, 0.988978672466118480f,\n    -0.148058047424494720f,\n  0.988950264510302990f, -0.148247678986896030f, 0.988921820193613190f,\n    -0.148437305098653970f,\n  0.988893339517095130f, -0.148626925752796540f, 0.988864822481795640f,\n    -0.148816540942351920f,\n  0.988836269088763540f, -0.149006150660348450f, 0.988807679339048450f,\n    -0.149195754899814820f,\n  0.988779053233701520f, -0.149385353653779720f, 0.988750390773775360f,\n    -0.149574946915272230f,\n  0.988721691960323780f, -0.149764534677321510f, 0.988692956794401940f,\n    -0.149954116932956960f,\n  0.988664185277066230f, -0.150143693675208190f, 0.988635377409374790f,\n    -0.150333264897105000f,\n  0.988606533192386450f, -0.150522830591677400f, 0.988577652627162020f,\n    -0.150712390751955610f,\n  0.988548735714763200f, -0.150901945370970040f, 0.988519782456253270f,\n    -0.151091494441751300f,\n  0.988490792852696590f, -0.151281037957330220f, 0.988461766905159300f,\n    -0.151470575910737810f,\n  0.988432704614708340f, -0.151660108295005310f, 0.988403605982412390f,\n    -0.151849635103164180f,\n  0.988374471009341280f, -0.152039156328246050f, 0.988345299696566150f,\n    -0.152228671963282740f,\n  0.988316092045159690f, -0.152418182001306330f, 0.988286848056195820f,\n    -0.152607686435349050f,\n  0.988257567730749460f, -0.152797185258443440f, 0.988228251069897420f,\n    -0.152986678463622040f,\n  0.988198898074717610f, -0.153176166043917840f, 0.988169508746289060f,\n    -0.153365647992363880f,\n  0.988140083085692570f, -0.153555124301993450f, 0.988110621094009820f,\n    -0.153744594965840030f,\n  0.988081122772324070f, -0.153934059976937350f, 0.988051588121720110f,\n    -0.154123519328319360f,\n  0.988022017143283530f, -0.154312973013020100f, 0.987992409838101880f,\n    -0.154502421024073940f,\n  0.987962766207263420f, -0.154691863354515430f, 0.987933086251858380f,\n    -0.154881299997379320f,\n  0.987903369972977790f, -0.155070730945700510f, 0.987873617371714200f,\n    -0.155260156192514240f,\n  0.987843828449161740f, -0.155449575730855850f, 0.987814003206415550f,\n    -0.155638989553760900f,\n  0.987784141644572180f, -0.155828397654265230f, 0.987754243764729530f,\n    -0.156017800025404800f,\n  0.987724309567986960f, -0.156207196660215900f, 0.987694339055445130f,\n    -0.156396587551734880f,\n  0.987664332228205710f, -0.156585972692998430f, 0.987634289087372160f,\n    -0.156775352077043350f,\n  0.987604209634049160f, -0.156964725696906780f, 0.987574093869342360f,\n    -0.157154093545625900f,\n  0.987543941794359230f, -0.157343455616238250f, 0.987513753410208420f,\n    -0.157532811901781530f,\n  0.987483528717999710f, -0.157722162395293630f, 0.987453267718844560f,\n    -0.157911507089812660f,\n  0.987422970413855410f, -0.158100845978376980f, 0.987392636804146240f,\n    -0.158290179054025180f,\n  0.987362266890832400f, -0.158479506309795960f, 0.987331860675030430f,\n    -0.158668827738728310f,\n  0.987301418157858430f, -0.158858143333861450f, 0.987270939340435420f,\n    -0.159047453088234760f,\n  0.987240424223882250f, -0.159236756994887850f, 0.987209872809320820f,\n    -0.159426055046860580f,\n  0.987179285097874340f, -0.159615347237193060f, 0.987148661090667570f,\n    -0.159804633558925440f,\n  0.987118000788826280f, -0.159993914005098270f, 0.987087304193477900f,\n    -0.160183188568752220f,\n  0.987056571305750970f, -0.160372457242928280f, 0.987025802126775600f,\n    -0.160561720020667490f,\n  0.986994996657682980f, -0.160750976895011220f, 0.986964154899605650f,\n    -0.160940227859001080f,\n  0.986933276853677710f, -0.161129472905678810f, 0.986902362521034470f,\n    -0.161318712028086400f,\n  0.986871411902812470f, -0.161507945219266120f, 0.986840425000149680f,\n    -0.161697172472260400f,\n  0.986809401814185530f, -0.161886393780111830f, 0.986778342346060430f,\n    -0.162075609135863330f,\n  0.986747246596916590f, -0.162264818532558000f, 0.986716114567897100f,\n    -0.162454021963239190f,\n  0.986684946260146690f, -0.162643219420950310f, 0.986653741674811350f,\n    -0.162832410898735210f,\n  0.986622500813038480f, -0.163021596389637840f, 0.986591223675976400f,\n    -0.163210775886702380f,\n  0.986559910264775410f, -0.163399949382973230f, 0.986528560580586690f,\n    -0.163589116871495020f,\n  0.986497174624562880f, -0.163778278345312670f, 0.986465752397857940f,\n    -0.163967433797471170f,\n  0.986434293901627180f, -0.164156583221015810f, 0.986402799137027220f,\n    -0.164345726608992190f,\n  0.986371268105216030f, -0.164534863954446000f, 0.986339700807353000f,\n    -0.164723995250423170f,\n  0.986308097244598670f, -0.164913120489969890f, 0.986276457418115090f,\n    -0.165102239666132660f,\n  0.986244781329065460f, -0.165291352771958000f, 0.986213068978614490f,\n    -0.165480459800492780f,\n  0.986181320367928270f, -0.165669560744784120f, 0.986149535498173860f,\n    -0.165858655597879300f,\n  0.986117714370520090f, -0.166047744352825790f, 0.986085856986136820f,\n    -0.166236827002671420f,\n  0.986053963346195440f, -0.166425903540464100f, 0.986022033451868560f,\n    -0.166614973959252090f,\n  0.985990067304330140f, -0.166804038252083730f, 0.985958064904755460f,\n    -0.166993096412007710f,\n  0.985926026254321130f, -0.167182148432072940f, 0.985893951354205210f,\n    -0.167371194305328430f,\n  0.985861840205586980f, -0.167560234024823560f, 0.985829692809647050f,\n    -0.167749267583607890f,\n  0.985797509167567480f, -0.167938294974731170f, 0.985765289280531310f,\n    -0.168127316191243410f,\n  0.985733033149723490f, -0.168316331226194830f, 0.985700740776329850f,\n    -0.168505340072635900f,\n  0.985668412161537550f, -0.168694342723617330f, 0.985636047306535420f,\n    -0.168883339172189980f,\n  0.985603646212513400f, -0.169072329411405010f, 0.985571208880662740f,\n    -0.169261313434313830f,\n  0.985538735312176060f, -0.169450291233967960f, 0.985506225508247290f,\n    -0.169639262803419290f,\n  0.985473679470071810f, -0.169828228135719850f, 0.985441097198846210f,\n    -0.170017187223921950f,\n  0.985408478695768420f, -0.170206140061078070f, 0.985375823962037710f,\n    -0.170395086640240940f,\n  0.985343132998854790f, -0.170584026954463590f, 0.985310405807421570f,\n    -0.170772960996799230f,\n  0.985277642388941220f, -0.170961888760301220f, 0.985244842744618540f,\n    -0.171150810238023280f,\n  0.985212006875659350f, -0.171339725423019310f, 0.985179134783271130f,\n    -0.171528634308343420f,\n  0.985146226468662230f, -0.171717536887049970f, 0.985113281933042710f,\n    -0.171906433152193530f,\n  0.985080301177623800f, -0.172095323096829010f, 0.985047284203618200f,\n    -0.172284206714011370f,\n  0.985014231012239840f, -0.172473083996795950f, 0.984981141604703960f,\n    -0.172661954938238270f,\n  0.984948015982227030f, -0.172850819531394080f, 0.984914854146027200f,\n    -0.173039677769319360f,\n  0.984881656097323700f, -0.173228529645070320f, 0.984848421837337010f,\n    -0.173417375151703470f,\n  0.984815151367289140f, -0.173606214282275410f, 0.984781844688403350f,\n    -0.173795047029843160f,\n  0.984748501801904210f, -0.173983873387463820f, 0.984715122709017620f,\n    -0.174172693348194820f,\n  0.984681707410970940f, -0.174361506905093750f, 0.984648255908992630f,\n    -0.174550314051218510f,\n  0.984614768204312600f, -0.174739114779627200f, 0.984581244298162180f,\n    -0.174927909083378160f,\n  0.984547684191773960f, -0.175116696955529920f, 0.984514087886381840f,\n    -0.175305478389141320f,\n  0.984480455383220930f, -0.175494253377271430f, 0.984446786683527920f,\n    -0.175683021912979490f,\n  0.984413081788540700f, -0.175871783989325040f, 0.984379340699498510f,\n    -0.176060539599367820f,\n  0.984345563417641900f, -0.176249288736167880f, 0.984311749944212780f,\n    -0.176438031392785410f,\n  0.984277900280454370f, -0.176626767562280880f, 0.984244014427611110f,\n    -0.176815497237715000f,\n  0.984210092386929030f, -0.177004220412148750f, 0.984176134159655320f,\n    -0.177192937078643280f,\n  0.984142139747038570f, -0.177381647230260040f, 0.984108109150328540f,\n    -0.177570350860060710f,\n  0.984074042370776450f, -0.177759047961107170f, 0.984039939409634970f,\n    -0.177947738526461560f,\n  0.984005800268157870f, -0.178136422549186300f, 0.983971624947600270f,\n    -0.178325100022344000f,\n  0.983937413449218920f, -0.178513770938997510f, 0.983903165774271500f,\n    -0.178702435292209970f,\n  0.983868881924017220f, -0.178891093075044720f, 0.983834561899716630f,\n    -0.179079744280565390f,\n  0.983800205702631600f, -0.179268388901835750f, 0.983765813334025240f,\n    -0.179457026931919890f,\n  0.983731384795162090f, -0.179645658363882160f, 0.983696920087308140f,\n    -0.179834283190787090f,\n  0.983662419211730250f, -0.180022901405699510f, 0.983627882169697210f,\n    -0.180211513001684450f,\n  0.983593308962478650f, -0.180400117971807240f, 0.983558699591345900f,\n    -0.180588716309133340f,\n  0.983524054057571260f, -0.180777308006728590f, 0.983489372362428730f,\n    -0.180965893057658980f,\n  0.983454654507193270f, -0.181154471454990810f, 0.983419900493141540f,\n    -0.181343043191790540f,\n  0.983385110321551180f, -0.181531608261124970f, 0.983350283993701500f,\n    -0.181720166656061110f,\n  0.983315421510872810f, -0.181908718369666160f, 0.983280522874346970f,\n    -0.182097263395007650f,\n  0.983245588085407070f, -0.182285801725153300f, 0.983210617145337640f,\n    -0.182474333353171120f,\n  0.983175610055424420f, -0.182662858272129270f, 0.983140566816954500f,\n    -0.182851376475096330f,\n  0.983105487431216290f, -0.183039887955140950f, 0.983070371899499640f,\n    -0.183228392705332140f,\n  0.983035220223095640f, -0.183416890718739100f, 0.983000032403296590f,\n    -0.183605381988431270f,\n  0.982964808441396440f, -0.183793866507478450f, 0.982929548338690170f,\n    -0.183982344268950520f,\n  0.982894252096474070f, -0.184170815265917720f, 0.982858919716046110f,\n    -0.184359279491450510f,\n  0.982823551198705240f, -0.184547736938619620f, 0.982788146545751970f,\n    -0.184736187600495950f,\n  0.982752705758487830f, -0.184924631470150790f, 0.982717228838215990f,\n    -0.185113068540655540f,\n  0.982681715786240860f, -0.185301498805081900f, 0.982646166603868050f,\n    -0.185489922256501880f,\n  0.982610581292404750f, -0.185678338887987630f, 0.982574959853159240f,\n    -0.185866748692611660f,\n  0.982539302287441240f, -0.186055151663446630f, 0.982503608596561830f,\n    -0.186243547793565560f,\n  0.982467878781833170f, -0.186431937076041610f, 0.982432112844569110f,\n    -0.186620319503948280f,\n  0.982396310786084690f, -0.186808695070359270f, 0.982360472607696210f,\n    -0.186997063768348540f,\n  0.982324598310721280f, -0.187185425590990330f, 0.982288687896478830f,\n    -0.187373780531359110f,\n  0.982252741366289370f, -0.187562128582529600f, 0.982216758721474510f,\n    -0.187750469737576780f,\n  0.982180739963357090f, -0.187938803989575910f, 0.982144685093261580f,\n    -0.188127131331602420f,\n  0.982108594112513610f, -0.188315451756732120f, 0.982072467022440000f,\n    -0.188503765258040940f,\n  0.982036303824369020f, -0.188692071828605230f, 0.982000104519630490f,\n    -0.188880371461501380f,\n  0.981963869109555240f, -0.189068664149806190f, 0.981927597595475540f,\n    -0.189256949886596750f,\n  0.981891289978725100f, -0.189445228664950230f, 0.981854946260638630f,\n    -0.189633500477944190f,\n  0.981818566442552500f, -0.189821765318656410f, 0.981782150525804310f,\n    -0.190010023180164990f,\n  0.981745698511732990f, -0.190198274055548150f, 0.981709210401678800f,\n    -0.190386517937884470f,\n  0.981672686196983110f, -0.190574754820252740f, 0.981636125898989080f,\n    -0.190762984695732110f,\n  0.981599529509040720f, -0.190951207557401800f, 0.981562897028483650f,\n    -0.191139423398341450f,\n  0.981526228458664770f, -0.191327632211630900f, 0.981489523800932130f,\n    -0.191515833990350210f,\n  0.981452783056635520f, -0.191704028727579800f, 0.981416006227125550f,\n    -0.191892216416400220f,\n  0.981379193313754560f, -0.192080397049892440f, 0.981342344317876040f,\n    -0.192268570621137500f,\n  0.981305459240844670f, -0.192456737123216840f, 0.981268538084016710f,\n    -0.192644896549212100f,\n  0.981231580848749730f, -0.192833048892205230f, 0.981194587536402320f,\n    -0.193021194145278380f,\n  0.981157558148334830f, -0.193209332301513960f, 0.981120492685908730f,\n    -0.193397463353994740f,\n  0.981083391150486710f, -0.193585587295803610f, 0.981046253543432780f,\n    -0.193773704120023820f,\n  0.981009079866112630f, -0.193961813819738840f, 0.980971870119892840f,\n    -0.194149916388032450f,\n  0.980934624306141640f, -0.194338011817988600f, 0.980897342426228390f,\n    -0.194526100102691610f,\n  0.980860024481523870f, -0.194714181235225960f, 0.980822670473400100f,\n    -0.194902255208676520f,\n  0.980785280403230430f, -0.195090322016128250f, 0.980747854272389750f,\n    -0.195278381650666550f,\n  0.980710392082253970f, -0.195466434105376980f, 0.980672893834200530f,\n    -0.195654479373345370f,\n  0.980635359529608120f, -0.195842517447657850f, 0.980597789169856850f,\n    -0.196030548321400790f,\n  0.980560182756327840f, -0.196218571987660880f, 0.980522540290404090f,\n    -0.196406588439524970f,\n  0.980484861773469380f, -0.196594597670080220f, 0.980447147206909060f,\n    -0.196782599672414100f,\n  0.980409396592109910f, -0.196970594439614340f, 0.980371609930459800f,\n    -0.197158581964768880f,\n  0.980333787223347960f, -0.197346562240965920f, 0.980295928472165290f,\n    -0.197534535261294030f,\n  0.980258033678303550f, -0.197722501018841920f, 0.980220102843156080f,\n    -0.197910459506698670f,\n  0.980182135968117430f, -0.198098410717953560f, 0.980144133054583590f,\n    -0.198286354645696220f,\n  0.980106094103951770f, -0.198474291283016390f, 0.980068019117620650f,\n    -0.198662220623004200f,\n  0.980029908096990090f, -0.198850142658750090f, 0.979991761043461200f,\n    -0.199038057383344680f,\n  0.979953577958436740f, -0.199225964789878830f, 0.979915358843320480f,\n    -0.199413864871443770f,\n  0.979877103699517640f, -0.199601757621130970f, 0.979838812528434740f,\n    -0.199789643032032090f,\n  0.979800485331479790f, -0.199977521097239150f, 0.979762122110061750f,\n    -0.200165391809844440f,\n  0.979723722865591170f, -0.200353255162940450f, 0.979685287599479930f,\n    -0.200541111149619980f,\n  0.979646816313141210f, -0.200728959762976140f, 0.979608309007989450f,\n    -0.200916800996102230f,\n  0.979569765685440520f, -0.201104634842091900f, 0.979531186346911500f,\n    -0.201292461294039020f,\n  0.979492570993820810f, -0.201480280345037730f, 0.979453919627588210f,\n    -0.201668091988182530f,\n  0.979415232249634780f, -0.201855896216568050f, 0.979376508861383170f,\n    -0.202043693023289260f,\n  0.979337749464256780f, -0.202231482401441450f, 0.979298954059681040f,\n    -0.202419264344120160f,\n  0.979260122649082020f, -0.202607038844421130f, 0.979221255233887700f,\n    -0.202794805895440440f,\n  0.979182351815526930f, -0.202982565490274440f, 0.979143412395430230f,\n    -0.203170317622019790f,\n  0.979104436975029250f, -0.203358062283773320f, 0.979065425555756930f,\n    -0.203545799468632190f,\n  0.979026378139047580f, -0.203733529169693920f, 0.978987294726337050f,\n    -0.203921251380056120f,\n  0.978948175319062200f, -0.204108966092816870f, 0.978909019918661310f,\n    -0.204296673301074370f,\n  0.978869828526574120f, -0.204484372997927240f, 0.978830601144241470f,\n    -0.204672065176474210f,\n  0.978791337773105670f, -0.204859749829814420f, 0.978752038414610340f,\n    -0.205047426951047250f,\n  0.978712703070200420f, -0.205235096533272350f, 0.978673331741322210f,\n    -0.205422758569589610f,\n  0.978633924429423210f, -0.205610413053099240f, 0.978594481135952270f,\n    -0.205798059976901790f,\n  0.978555001862359550f, -0.205985699334097910f, 0.978515486610096910f,\n    -0.206173331117788710f,\n  0.978475935380616830f, -0.206360955321075510f, 0.978436348175373730f,\n    -0.206548571937059890f,\n  0.978396724995823090f, -0.206736180958843690f, 0.978357065843421640f,\n    -0.206923782379529100f,\n  0.978317370719627650f, -0.207111376192218560f, 0.978277639625900530f,\n    -0.207298962390014750f,\n  0.978237872563701090f, -0.207486540966020650f, 0.978198069534491400f,\n    -0.207674111913339570f,\n  0.978158230539735050f, -0.207861675225075070f, 0.978118355580896660f,\n    -0.208049230894330940f,\n  0.978078444659442380f, -0.208236778914211330f, 0.978038497776839600f,\n    -0.208424319277820600f,\n  0.977998514934557140f, -0.208611851978263490f, 0.977958496134064830f,\n    -0.208799377008644900f,\n  0.977918441376834370f, -0.208986894362070070f, 0.977878350664338150f,\n    -0.209174404031644580f,\n  0.977838223998050430f, -0.209361906010474160f, 0.977798061379446360f,\n    -0.209549400291664940f,\n  0.977757862810002760f, -0.209736886868323290f, 0.977717628291197460f,\n    -0.209924365733555880f,\n  0.977677357824509930f, -0.210111836880469610f, 0.977637051411420770f,\n    -0.210299300302171730f,\n  0.977596709053411890f, -0.210486755991769720f, 0.977556330751966460f,\n    -0.210674203942371440f,\n  0.977515916508569280f, -0.210861644147084860f, 0.977475466324706170f,\n    -0.211049076599018390f,\n  0.977434980201864260f, -0.211236501291280710f, 0.977394458141532250f,\n    -0.211423918216980670f,\n  0.977353900145199960f, -0.211611327369227550f, 0.977313306214358750f,\n    -0.211798728741130840f,\n  0.977272676350500860f, -0.211986122325800330f, 0.977232010555120320f,\n    -0.212173508116346080f,\n  0.977191308829712280f, -0.212360886105878420f, 0.977150571175773200f,\n    -0.212548256287508060f,\n  0.977109797594800880f, -0.212735618654345930f, 0.977068988088294450f,\n    -0.212922973199503180f,\n  0.977028142657754390f, -0.213110319916091360f, 0.976987261304682390f,\n    -0.213297658797222320f,\n  0.976946344030581670f, -0.213484989836008050f, 0.976905390836956490f,\n    -0.213672313025560970f,\n  0.976864401725312640f, -0.213859628358993750f, 0.976823376697157240f,\n    -0.214046935829419360f,\n  0.976782315753998650f, -0.214234235429950990f, 0.976741218897346550f,\n    -0.214421527153702160f,\n  0.976700086128711840f, -0.214608810993786760f, 0.976658917449606980f,\n    -0.214796086943318860f,\n  0.976617712861545640f, -0.214983354995412820f, 0.976576472366042610f,\n    -0.215170615143183390f,\n  0.976535195964614470f, -0.215357867379745550f, 0.976493883658778650f,\n    -0.215545111698214500f,\n  0.976452535450054060f, -0.215732348091705880f, 0.976411151339961040f,\n    -0.215919576553335490f,\n  0.976369731330021140f, -0.216106797076219520f, 0.976328275421757260f,\n    -0.216294009653474340f,\n  0.976286783616693630f, -0.216481214278216730f, 0.976245255916355800f,\n    -0.216668410943563730f,\n  0.976203692322270560f, -0.216855599642632620f, 0.976162092835966110f,\n    -0.217042780368540990f,\n  0.976120457458971910f, -0.217229953114406790f, 0.976078786192818850f,\n    -0.217417117873348190f,\n  0.976037079039039020f, -0.217604274638483640f, 0.975995335999165990f,\n    -0.217791423402931950f,\n  0.975953557074734300f, -0.217978564159812200f, 0.975911742267280170f,\n    -0.218165696902243800f,\n  0.975869891578341030f, -0.218352821623346320f, 0.975828005009455660f,\n    -0.218539938316239770f,\n  0.975786082562163930f, -0.218727046974044440f, 0.975744124238007270f,\n    -0.218914147589880840f,\n  0.975702130038528570f, -0.219101240156869800f, 0.975660099965271590f,\n    -0.219288324668132470f,\n  0.975618034019781750f, -0.219475401116790310f, 0.975575932203605720f,\n    -0.219662469495965050f,\n  0.975533794518291360f, -0.219849529798778700f, 0.975491620965388110f,\n    -0.220036582018353580f,\n  0.975449411546446380f, -0.220223626147812380f, 0.975407166263018270f,\n    -0.220410662180277940f,\n  0.975364885116656980f, -0.220597690108873510f, 0.975322568108916930f,\n    -0.220784709926722610f,\n  0.975280215241354220f, -0.220971721626949110f, 0.975237826515525820f,\n    -0.221158725202677010f,\n  0.975195401932990370f, -0.221345720647030810f, 0.975152941495307620f,\n    -0.221532707953135230f,\n  0.975110445204038890f, -0.221719687114115220f, 0.975067913060746470f,\n    -0.221906658123096100f,\n  0.975025345066994120f, -0.222093620973203510f, 0.974982741224347140f,\n    -0.222280575657563370f,\n  0.974940101534371830f, -0.222467522169301880f, 0.974897425998635820f,\n    -0.222654460501545500f,\n  0.974854714618708430f, -0.222841390647421120f, 0.974811967396159830f,\n    -0.223028312600055820f,\n  0.974769184332561770f, -0.223215226352576980f, 0.974726365429487320f,\n    -0.223402131898112370f,\n  0.974683510688510670f, -0.223589029229789990f, 0.974640620111207560f,\n    -0.223775918340738150f,\n  0.974597693699155050f, -0.223962799224085460f, 0.974554731453931230f,\n    -0.224149671872960870f,\n  0.974511733377115720f, -0.224336536280493600f, 0.974468699470289580f,\n    -0.224523392439813170f,\n  0.974425629735034990f, -0.224710240344049430f, 0.974382524172935470f,\n    -0.224897079986332490f,\n  0.974339382785575860f, -0.225083911359792830f, 0.974296205574542440f,\n    -0.225270734457561160f,\n  0.974252992541422500f, -0.225457549272768540f, 0.974209743687805220f,\n    -0.225644355798546330f,\n  0.974166459015280320f, -0.225831154028026170f, 0.974123138525439640f,\n    -0.226017943954340020f,\n  0.974079782219875680f, -0.226204725570620190f, 0.974036390100182610f,\n    -0.226391498869999240f,\n  0.973992962167955830f, -0.226578263845610000f, 0.973949498424792170f,\n    -0.226765020490585690f,\n  0.973905998872289570f, -0.226951768798059810f, 0.973862463512047300f,\n    -0.227138508761166170f,\n  0.973818892345666100f, -0.227325240373038860f, 0.973775285374748110f,\n    -0.227511963626812280f,\n  0.973731642600896400f, -0.227698678515621170f, 0.973687964025715670f,\n    -0.227885385032600530f,\n  0.973644249650811980f, -0.228072083170885730f, 0.973600499477792370f,\n    -0.228258772923612380f,\n  0.973556713508265560f, -0.228445454283916470f, 0.973512891743841370f,\n    -0.228632127244934230f,\n  0.973469034186131070f, -0.228818791799802220f, 0.973425140836747030f,\n    -0.229005447941657340f,\n  0.973381211697303290f, -0.229192095663636770f, 0.973337246769414910f,\n    -0.229378734958878010f,\n  0.973293246054698250f, -0.229565365820518870f, 0.973249209554771230f,\n    -0.229751988241697490f,\n  0.973205137271252800f, -0.229938602215552210f, 0.973161029205763530f,\n    -0.230125207735221850f,\n  0.973116885359925130f, -0.230311804793845440f, 0.973072705735360530f,\n    -0.230498393384562350f,\n  0.973028490333694210f, -0.230684973500512200f, 0.972984239156551740f,\n    -0.230871545134835020f,\n  0.972939952205560180f, -0.231058108280671110f, 0.972895629482347760f,\n    -0.231244662931161050f,\n  0.972851270988544180f, -0.231431209079445750f, 0.972806876725780370f,\n    -0.231617746718666470f,\n  0.972762446695688570f, -0.231804275841964780f, 0.972717980899902250f,\n    -0.231990796442482440f,\n  0.972673479340056430f, -0.232177308513361710f, 0.972628942017787270f,\n    -0.232363812047745030f,\n  0.972584368934732210f, -0.232550307038775240f, 0.972539760092530180f,\n    -0.232736793479595390f,\n  0.972495115492821190f, -0.232923271363348980f, 0.972450435137246830f,\n    -0.233109740683179690f,\n  0.972405719027449770f, -0.233296201432231590f, 0.972360967165074140f,\n    -0.233482653603649090f,\n  0.972316179551765300f, -0.233669097190576820f, 0.972271356189170040f,\n    -0.233855532186159840f,\n  0.972226497078936270f, -0.234041958583543430f, 0.972181602222713440f,\n    -0.234228376375873210f,\n  0.972136671622152230f, -0.234414785556295160f, 0.972091705278904430f,\n    -0.234601186117955550f,\n  0.972046703194623500f, -0.234787578054000970f, 0.972001665370963890f,\n    -0.234973961357578250f,\n  0.971956591809581720f, -0.235160336021834730f, 0.971911482512134000f,\n    -0.235346702039917840f,\n  0.971866337480279400f, -0.235533059404975490f, 0.971821156715677700f,\n    -0.235719408110155820f,\n  0.971775940219990140f, -0.235905748148607370f, 0.971730687994879160f,\n    -0.236092079513478910f,\n  0.971685400042008540f, -0.236278402197919570f, 0.971640076363043390f,\n    -0.236464716195078780f,\n  0.971594716959650160f, -0.236651021498106380f, 0.971549321833496630f,\n    -0.236837318100152380f,\n  0.971503890986251780f, -0.237023605994367200f, 0.971458424419585960f,\n    -0.237209885173901600f,\n  0.971412922135170940f, -0.237396155631906610f, 0.971367384134679490f,\n    -0.237582417361533570f,\n  0.971321810419786160f, -0.237768670355934190f, 0.971276200992166490f,\n    -0.237954914608260540f,\n  0.971230555853497380f, -0.238141150111664840f, 0.971184875005457030f,\n    -0.238327376859299810f,\n  0.971139158449725090f, -0.238513594844318420f, 0.971093406187982460f,\n    -0.238699804059873980f,\n  0.971047618221911100f, -0.238886004499120040f, 0.971001794553194690f,\n    -0.239072196155210610f,\n  0.970955935183517970f, -0.239258379021299980f, 0.970910040114567050f,\n    -0.239444553090542630f,\n  0.970864109348029470f, -0.239630718356093560f, 0.970818142885593870f,\n    -0.239816874811108000f,\n  0.970772140728950350f, -0.240003022448741500f, 0.970726102879790110f,\n    -0.240189161262149900f,\n  0.970680029339806130f, -0.240375291244489450f, 0.970633920110692160f,\n    -0.240561412388916650f,\n  0.970587775194143630f, -0.240747524688588430f, 0.970541594591857070f,\n    -0.240933628136661910f,\n  0.970495378305530560f, -0.241119722726294590f, 0.970449126336863090f,\n    -0.241305808450644370f,\n  0.970402838687555500f, -0.241491885302869330f, 0.970356515359309450f,\n    -0.241677953276128010f,\n  0.970310156353828110f, -0.241864012363579180f, 0.970263761672816140f,\n    -0.242050062558382070f,\n  0.970217331317979160f, -0.242236103853696010f, 0.970170865291024480f,\n    -0.242422136242680890f,\n  0.970124363593660280f, -0.242608159718496810f, 0.970077826227596420f,\n    -0.242794174274304220f,\n  0.970031253194543970f, -0.242980179903263870f, 0.969984644496215240f,\n    -0.243166176598536900f,\n  0.969938000134323960f, -0.243352164353284740f, 0.969891320110585100f,\n    -0.243538143160669130f,\n  0.969844604426714830f, -0.243724113013852160f, 0.969797853084430890f,\n    -0.243910073905996260f,\n  0.969751066085452140f, -0.244096025830264210f, 0.969704243431498860f,\n    -0.244281968779819030f,\n  0.969657385124292450f, -0.244467902747824150f, 0.969610491165555870f,\n    -0.244653827727443320f,\n  0.969563561557013180f, -0.244839743711840670f, 0.969516596300390000f,\n    -0.245025650694180470f,\n  0.969469595397413060f, -0.245211548667627540f, 0.969422558849810320f,\n    -0.245397437625346960f,\n  0.969375486659311280f, -0.245583317560504060f, 0.969328378827646660f,\n    -0.245769188466264580f,\n  0.969281235356548530f, -0.245955050335794590f, 0.969234056247750050f,\n    -0.246140903162260530f,\n  0.969186841502985950f, -0.246326746938829030f, 0.969139591123992280f,\n    -0.246512581658667210f,\n  0.969092305112506210f, -0.246698407314942410f, 0.969044983470266240f,\n    -0.246884223900822430f,\n  0.968997626199012420f, -0.247070031409475250f, 0.968950233300485800f,\n    -0.247255829834069300f,\n  0.968902804776428870f, -0.247441619167773270f, 0.968855340628585580f,\n    -0.247627399403756280f,\n  0.968807840858700970f, -0.247813170535187670f, 0.968760305468521430f,\n    -0.247998932555237110f,\n  0.968712734459794780f, -0.248184685457074780f, 0.968665127834270060f,\n    -0.248370429233870980f,\n  0.968617485593697540f, -0.248556163878796560f, 0.968569807739828930f,\n    -0.248741889385022480f,\n  0.968522094274417380f, -0.248927605745720150f, 0.968474345199216820f,\n    -0.249113312954061360f,\n  0.968426560515983190f, -0.249299011003218190f, 0.968378740226473300f,\n    -0.249484699886362960f,\n  0.968330884332445190f, -0.249670379596668550f, 0.968282992835658660f,\n    -0.249856050127307990f,\n  0.968235065737874320f, -0.250041711471454650f, 0.968187103040854420f,\n    -0.250227363622282370f,\n  0.968139104746362440f, -0.250413006572965220f, 0.968091070856162970f,\n    -0.250598640316677670f,\n  0.968043001372022260f, -0.250784264846594500f, 0.967994896295707670f,\n    -0.250969880155890720f,\n  0.967946755628987800f, -0.251155486237741920f, 0.967898579373632660f,\n    -0.251341083085323880f,\n  0.967850367531413620f, -0.251526670691812610f, 0.967802120104103270f,\n    -0.251712249050384700f,\n  0.967753837093475510f, -0.251897818154216970f, 0.967705518501305480f,\n    -0.252083377996486450f,\n  0.967657164329369880f, -0.252268928570370810f, 0.967608774579446500f,\n    -0.252454469869047740f,\n  0.967560349253314360f, -0.252640001885695520f, 0.967511888352754150f,\n    -0.252825524613492610f,\n  0.967463391879547550f, -0.253011038045617860f, 0.967414859835477480f,\n    -0.253196542175250560f,\n  0.967366292222328510f, -0.253382036995570160f, 0.967317689041886310f,\n    -0.253567522499756560f,\n  0.967269050295937790f, -0.253752998680989990f, 0.967220375986271420f,\n    -0.253938465532451090f,\n  0.967171666114676640f, -0.254123923047320620f, 0.967122920682944360f,\n    -0.254309371218780000f,\n  0.967074139692867040f, -0.254494810040010730f, 0.967025323146238010f,\n    -0.254680239504194830f,\n  0.966976471044852070f, -0.254865659604514570f, 0.966927583390505660f,\n    -0.255051070334152470f,\n  0.966878660184995910f, -0.255236471686291710f, 0.966829701430121810f,\n    -0.255421863654115460f,\n  0.966780707127683270f, -0.255607246230807380f, 0.966731677279481840f,\n    -0.255792619409551610f,\n  0.966682611887320080f, -0.255977983183532430f, 0.966633510953002100f,\n    -0.256163337545934460f,\n  0.966584374478333120f, -0.256348682489942910f, 0.966535202465119700f,\n    -0.256534018008743040f,\n  0.966485994915169840f, -0.256719344095520660f, 0.966436751830292650f,\n    -0.256904660743461910f,\n  0.966387473212298900f, -0.257089967945753120f, 0.966338159063000130f,\n    -0.257275265695581120f,\n  0.966288809384209690f, -0.257460553986133100f, 0.966239424177741890f,\n    -0.257645832810596390f,\n  0.966190003445412500f, -0.257831102162158990f, 0.966140547189038750f,\n    -0.258016362034009020f,\n  0.966091055410438830f, -0.258201612419334870f, 0.966041528111432400f,\n    -0.258386853311325600f,\n  0.965991965293840570f, -0.258572084703170340f, 0.965942366959485540f,\n    -0.258757306588058680f,\n  0.965892733110190860f, -0.258942518959180520f, 0.965843063747781510f,\n    -0.259127721809726150f,\n  0.965793358874083680f, -0.259312915132886230f, 0.965743618490924830f,\n    -0.259498098921851660f,\n  0.965693842600133690f, -0.259683273169813770f, 0.965644031203540590f,\n    -0.259868437869964270f,\n  0.965594184302976830f, -0.260053593015495190f, 0.965544301900275180f,\n    -0.260238738599598840f,\n  0.965494383997269500f, -0.260423874615468010f, 0.965444430595795430f,\n    -0.260609001056295750f,\n  0.965394441697689400f, -0.260794117915275510f, 0.965344417304789370f,\n    -0.260979225185601070f,\n  0.965294357418934660f, -0.261164322860466480f, 0.965244262041965780f,\n    -0.261349410933066350f,\n  0.965194131175724720f, -0.261534489396595520f, 0.965143964822054450f,\n    -0.261719558244249030f,\n  0.965093762982799590f, -0.261904617469222610f, 0.965043525659805890f,\n    -0.262089667064712040f,\n  0.964993252854920320f, -0.262274707023913590f, 0.964942944569991410f,\n    -0.262459737340023980f,\n  0.964892600806868890f, -0.262644758006240040f, 0.964842221567403620f,\n    -0.262829769015759160f,\n  0.964791806853447900f, -0.263014770361779000f, 0.964741356666855340f,\n    -0.263199762037497560f,\n  0.964690871009481030f, -0.263384744036113280f, 0.964640349883180930f,\n    -0.263569716350824880f,\n  0.964589793289812760f, -0.263754678974831350f, 0.964539201231235150f,\n    -0.263939631901332350f,\n  0.964488573709308410f, -0.264124575123527550f, 0.964437910725893910f,\n    -0.264309508634617110f,\n  0.964387212282854290f, -0.264494432427801630f, 0.964336478382053720f,\n    -0.264679346496281890f,\n  0.964285709025357480f, -0.264864250833259260f, 0.964234904214632200f,\n    -0.265049145431935250f,\n  0.964184063951745830f, -0.265234030285511790f, 0.964133188238567640f,\n    -0.265418905387191260f,\n  0.964082277076968140f, -0.265603770730176330f, 0.964031330468819280f,\n    -0.265788626307669920f,\n  0.963980348415994110f, -0.265973472112875590f, 0.963929330920367140f,\n    -0.266158308138996990f,\n  0.963878277983814200f, -0.266343134379238180f, 0.963827189608212340f,\n    -0.266527950826803690f,\n  0.963776065795439840f, -0.266712757474898370f, 0.963724906547376530f,\n    -0.266897554316727350f,\n  0.963673711865903230f, -0.267082341345496300f, 0.963622481752902220f,\n    -0.267267118554410930f,\n  0.963571216210257320f, -0.267451885936677620f, 0.963519915239853140f,\n    -0.267636643485503090f,\n  0.963468578843575950f, -0.267821391194094150f, 0.963417207023313350f,\n    -0.268006129055658290f,\n  0.963365799780954050f, -0.268190857063403180f, 0.963314357118388200f,\n    -0.268375575210536900f,\n  0.963262879037507070f, -0.268560283490267890f, 0.963211365540203480f,\n    -0.268744981895804980f,\n  0.963159816628371360f, -0.268929670420357260f, 0.963108232303906190f,\n    -0.269114349057134380f,\n  0.963056612568704340f, -0.269299017799346120f, 0.963004957424663850f,\n    -0.269483676640202840f,\n  0.962953266873683880f, -0.269668325572915090f, 0.962901540917665000f,\n    -0.269852964590693860f,\n  0.962849779558509030f, -0.270037593686750570f, 0.962797982798119010f,\n    -0.270222212854296870f,\n  0.962746150638399410f, -0.270406822086544820f, 0.962694283081255930f,\n    -0.270591421376706940f,\n  0.962642380128595710f, -0.270776010717996010f, 0.962590441782326890f,\n    -0.270960590103625170f,\n  0.962538468044359160f, -0.271145159526808010f, 0.962486458916603450f,\n    -0.271329718980758420f,\n  0.962434414400972100f, -0.271514268458690700f, 0.962382334499378380f,\n    -0.271698807953819510f,\n  0.962330219213737400f, -0.271883337459359720f, 0.962278068545965090f,\n    -0.272067856968526920f,\n  0.962225882497979020f, -0.272252366474536710f, 0.962173661071697880f,\n    -0.272436865970605240f,\n  0.962121404269041580f, -0.272621355449948980f, 0.962069112091931580f,\n    -0.272805834905784810f,\n  0.962016784542290560f, -0.272990304331329920f, 0.961964421622042320f,\n    -0.273174763719801930f,\n  0.961912023333112210f, -0.273359213064418680f, 0.961859589677426570f,\n    -0.273543652358398730f,\n  0.961807120656913540f, -0.273728081594960540f, 0.961754616273502010f,\n    -0.273912500767323260f,\n  0.961702076529122540f, -0.274096909868706380f, 0.961649501425706820f,\n    -0.274281308892329660f,\n  0.961596890965187860f, -0.274465697831413220f, 0.961544245149499990f,\n    -0.274650076679177680f,\n  0.961491563980579000f, -0.274834445428843940f, 0.961438847460361680f,\n    -0.275018804073633220f,\n  0.961386095590786250f, -0.275203152606767310f, 0.961333308373792270f,\n    -0.275387491021468140f,\n  0.961280485811320640f, -0.275571819310958140f, 0.961227627905313460f,\n    -0.275756137468460120f,\n  0.961174734657714080f, -0.275940445487197150f, 0.961121806070467380f,\n    -0.276124743360392830f,\n  0.961068842145519350f, -0.276309031081271080f, 0.961015842884817230f,\n    -0.276493308643055990f,\n  0.960962808290309780f, -0.276677576038972420f, 0.960909738363946770f,\n    -0.276861833262245280f,\n  0.960856633107679660f, -0.277046080306099900f, 0.960803492523460760f,\n    -0.277230317163762170f,\n  0.960750316613243950f, -0.277414543828458090f, 0.960697105378984450f,\n    -0.277598760293414290f,\n  0.960643858822638590f, -0.277782966551857690f, 0.960590576946164120f,\n    -0.277967162597015370f,\n  0.960537259751520050f, -0.278151348422115090f, 0.960483907240666790f,\n    -0.278335524020384920f,\n  0.960430519415565790f, -0.278519689385053060f, 0.960377096278180130f,\n    -0.278703844509348490f,\n  0.960323637830473920f, -0.278887989386500280f, 0.960270144074412800f,\n    -0.279072124009737800f,\n  0.960216615011963430f, -0.279256248372291180f, 0.960163050645094000f,\n    -0.279440362467390510f,\n  0.960109450975773940f, -0.279624466288266590f, 0.960055816005973890f,\n    -0.279808559828150390f,\n  0.960002145737665960f, -0.279992643080273220f, 0.959948440172823210f,\n    -0.280176716037866980f,\n  0.959894699313420530f, -0.280360778694163810f, 0.959840923161433770f,\n    -0.280544831042396250f,\n  0.959787111718839900f, -0.280728873075797190f, 0.959733264987617680f,\n    -0.280912904787600000f,\n  0.959679382969746750f, -0.281096926171038260f, 0.959625465667208190f,\n    -0.281280937219346110f,\n  0.959571513081984520f, -0.281464937925757940f, 0.959517525216059260f,\n    -0.281648928283508630f,\n  0.959463502071417510f, -0.281832908285833350f, 0.959409443650045550f,\n    -0.282016877925967640f,\n  0.959355349953930790f, -0.282200837197147560f, 0.959301220985062210f,\n    -0.282384786092609360f,\n  0.959247056745430090f, -0.282568724605589740f, 0.959192857237025740f,\n    -0.282752652729325930f,\n  0.959138622461841890f, -0.282936570457055390f, 0.959084352421872730f,\n    -0.283120477782015820f,\n  0.959030047119113660f, -0.283304374697445740f, 0.958975706555561080f,\n    -0.283488261196583550f,\n  0.958921330733213170f, -0.283672137272668430f, 0.958866919654069010f,\n    -0.283856002918939750f,\n  0.958812473320129310f, -0.284039858128637190f, 0.958757991733395710f,\n    -0.284223702895001040f,\n  0.958703474895871600f, -0.284407537211271880f, 0.958648922809561150f,\n    -0.284591361070690440f,\n  0.958594335476470220f, -0.284775174466498300f, 0.958539712898605730f,\n    -0.284958977391937040f,\n  0.958485055077976100f, -0.285142769840248670f, 0.958430362016590930f,\n    -0.285326551804675870f,\n  0.958375633716461170f, -0.285510323278461260f, 0.958320870179598880f,\n    -0.285694084254848320f,\n  0.958266071408017670f, -0.285877834727080620f, 0.958211237403732260f,\n    -0.286061574688402040f,\n  0.958156368168758820f, -0.286245304132057120f, 0.958101463705114730f,\n    -0.286429023051290700f,\n  0.958046524014818600f, -0.286612731439347790f, 0.957991549099890370f,\n    -0.286796429289474080f,\n  0.957936538962351420f, -0.286980116594915570f, 0.957881493604224370f,\n    -0.287163793348918390f,\n  0.957826413027532910f, -0.287347459544729510f, 0.957771297234302320f,\n    -0.287531115175595930f,\n  0.957716146226558870f, -0.287714760234765170f, 0.957660960006330610f,\n    -0.287898394715485170f,\n  0.957605738575646350f, -0.288082018611004130f, 0.957550481936536470f,\n    -0.288265631914570770f,\n  0.957495190091032570f, -0.288449234619434220f, 0.957439863041167680f,\n    -0.288632826718843830f,\n  0.957384500788975860f, -0.288816408206049480f, 0.957329103336492790f,\n    -0.288999979074301420f,\n  0.957273670685755200f, -0.289183539316850200f, 0.957218202838801210f,\n    -0.289367088926947010f,\n  0.957162699797670210f, -0.289550627897843030f, 0.957107161564402790f,\n    -0.289734156222790250f,\n  0.957051588141040970f, -0.289917673895040750f, 0.956995979529628230f,\n    -0.290101180907847090f,\n  0.956940335732208820f, -0.290284677254462330f, 0.956884656750828900f,\n    -0.290468162928139820f,\n  0.956828942587535370f, -0.290651637922133220f, 0.956773193244376930f,\n    -0.290835102229696830f,\n  0.956717408723403050f, -0.291018555844085090f, 0.956661589026665090f,\n    -0.291201998758552900f,\n  0.956605734156215080f, -0.291385430966355660f, 0.956549844114106820f,\n    -0.291568852460749040f,\n  0.956493918902395100f, -0.291752263234989260f, 0.956437958523136180f,\n    -0.291935663282332780f,\n  0.956381962978387730f, -0.292119052596036380f, 0.956325932270208230f,\n    -0.292302431169357560f,\n  0.956269866400658030f, -0.292485798995553880f, 0.956213765371798470f,\n    -0.292669156067883460f,\n  0.956157629185692140f, -0.292852502379604810f, 0.956101457844403040f,\n    -0.293035837923976810f,\n  0.956045251349996410f, -0.293219162694258630f, 0.955989009704538930f,\n    -0.293402476683710110f,\n  0.955932732910098280f, -0.293585779885591200f, 0.955876420968743590f,\n    -0.293769072293162400f,\n  0.955820073882545420f, -0.293952353899684660f, 0.955763691653575440f,\n    -0.294135624698419030f,\n  0.955707274283906560f, -0.294318884682627400f, 0.955650821775613330f,\n    -0.294502133845571670f,\n  0.955594334130771110f, -0.294685372180514330f, 0.955537811351456880f,\n    -0.294868599680718270f,\n  0.955481253439748770f, -0.295051816339446720f, 0.955424660397726330f,\n    -0.295235022149963220f,\n  0.955368032227470350f, -0.295418217105532010f, 0.955311368931062720f,\n    -0.295601401199417360f,\n  0.955254670510586990f, -0.295784574424884260f, 0.955197936968127710f,\n    -0.295967736775197890f,\n  0.955141168305770780f, -0.296150888243623790f, 0.955084364525603410f,\n    -0.296334028823428190f,\n  0.955027525629714160f, -0.296517158507877470f, 0.954970651620192790f,\n    -0.296700277290238350f,\n  0.954913742499130520f, -0.296883385163778270f, 0.954856798268619580f,\n    -0.297066482121764730f,\n  0.954799818930753720f, -0.297249568157465840f, 0.954742804487627940f,\n    -0.297432643264150030f,\n  0.954685754941338340f, -0.297615707435086200f, 0.954628670293982680f,\n    -0.297798760663543550f,\n  0.954571550547659630f, -0.297981802942791810f, 0.954514395704469500f,\n    -0.298164834266100850f,\n  0.954457205766513490f, -0.298347854626741400f, 0.954399980735894490f,\n    -0.298530864017984120f,\n  0.954342720614716480f, -0.298713862433100330f, 0.954285425405084650f,\n    -0.298896849865361800f,\n  0.954228095109105670f, -0.299079826308040480f, 0.954170729728887280f,\n    -0.299262791754408840f,\n  0.954113329266538800f, -0.299445746197739890f, 0.954055893724170660f,\n    -0.299628689631306790f,\n  0.953998423103894490f, -0.299811622048383350f, 0.953940917407823500f,\n    -0.299994543442243580f,\n  0.953883376638071770f, -0.300177453806161950f, 0.953825800796755050f,\n    -0.300360353133413530f,\n  0.953768189885990330f, -0.300543241417273450f, 0.953710543907895670f,\n    -0.300726118651017500f,\n  0.953652862864590500f, -0.300908984827921890f, 0.953595146758195680f,\n    -0.301091839941263100f,\n  0.953537395590833280f, -0.301274683984317950f, 0.953479609364626610f,\n    -0.301457516950363940f,\n  0.953421788081700310f, -0.301640338832678770f, 0.953363931744180330f,\n    -0.301823149624540650f,\n  0.953306040354193860f, -0.302005949319228080f, 0.953248113913869320f,\n    -0.302188737910019990f,\n  0.953190152425336670f, -0.302371515390195970f, 0.953132155890726750f,\n    -0.302554281753035610f,\n  0.953074124312172200f, -0.302737036991819140f, 0.953016057691806530f,\n    -0.302919781099827310f,\n  0.952957956031764700f, -0.303102514070341060f, 0.952899819334182880f,\n    -0.303285235896641750f,\n  0.952841647601198720f, -0.303467946572011320f, 0.952783440834950920f,\n    -0.303650646089731910f,\n  0.952725199037579570f, -0.303833334443086360f, 0.952666922211226170f,\n    -0.304016011625357570f,\n  0.952608610358033350f, -0.304198677629829110f, 0.952550263480144930f,\n    -0.304381332449784880f,\n  0.952491881579706320f, -0.304563976078509100f, 0.952433464658864030f,\n    -0.304746608509286530f,\n  0.952375012719765880f, -0.304929229735402370f, 0.952316525764560940f,\n    -0.305111839750142110f,\n  0.952258003795399600f, -0.305294438546791670f, 0.952199446814433580f,\n    -0.305477026118637420f,\n  0.952140854823815830f, -0.305659602458966120f, 0.952082227825700620f,\n    -0.305842167561065080f,\n  0.952023565822243570f, -0.306024721418221790f, 0.951964868815601380f,\n    -0.306207264023724220f,\n  0.951906136807932350f, -0.306389795370860920f, 0.951847369801395620f,\n    -0.306572315452920740f,\n  0.951788567798152130f, -0.306754824263192780f, 0.951729730800363830f,\n    -0.306937321794966910f,\n  0.951670858810193860f, -0.307119808041533100f, 0.951611951829806850f,\n    -0.307302282996181790f,\n  0.951553009861368590f, -0.307484746652204100f, 0.951494032907046370f,\n    -0.307667199002891190f,\n  0.951435020969008340f, -0.307849640041534870f, 0.951375974049424420f,\n    -0.308032069761427330f,\n  0.951316892150465550f, -0.308214488155861050f, 0.951257775274304000f,\n    -0.308396895218129190f,\n  0.951198623423113230f, -0.308579290941525090f, 0.951139436599068190f,\n    -0.308761675319342450f,\n  0.951080214804345010f, -0.308944048344875710f, 0.951020958041121080f,\n    -0.309126410011419440f,\n  0.950961666311575080f, -0.309308760312268730f, 0.950902339617887060f,\n    -0.309491099240719100f,\n  0.950842977962238160f, -0.309673426790066380f, 0.950783581346811070f,\n    -0.309855742953607070f,\n  0.950724149773789610f, -0.310038047724637890f, 0.950664683245358910f,\n    -0.310220341096455850f,\n  0.950605181763705340f, -0.310402623062358720f, 0.950545645331016600f,\n    -0.310584893615644450f,\n  0.950486073949481700f, -0.310767152749611470f, 0.950426467621290900f,\n    -0.310949400457558640f,\n  0.950366826348635780f, -0.311131636732785270f, 0.950307150133709260f,\n    -0.311313861568590920f,\n  0.950247438978705230f, -0.311496074958275910f, 0.950187692885819280f,\n    -0.311678276895140550f,\n  0.950127911857248100f, -0.311860467372486020f, 0.950068095895189590f,\n    -0.312042646383613510f,\n  0.950008245001843000f, -0.312224813921824880f, 0.949948359179409010f,\n    -0.312406969980422440f,\n  0.949888438430089300f, -0.312589114552708710f, 0.949828482756087110f,\n    -0.312771247631986770f,\n  0.949768492159606680f, -0.312953369211560200f, 0.949708466642853800f,\n    -0.313135479284732840f,\n  0.949648406208035480f, -0.313317577844809010f, 0.949588310857359950f,\n    -0.313499664885093510f,\n  0.949528180593036670f, -0.313681740398891520f, 0.949468015417276550f,\n    -0.313863804379508500f,\n  0.949407815332291570f, -0.314045856820250710f, 0.949347580340295210f,\n    -0.314227897714424440f,\n  0.949287310443502120f, -0.314409927055336660f, 0.949227005644128210f,\n    -0.314591944836294660f,\n  0.949166665944390700f, -0.314773951050606070f, 0.949106291346508260f,\n    -0.314955945691579140f,\n  0.949045881852700560f, -0.315137928752522440f, 0.948985437465188710f,\n    -0.315319900226744890f,\n  0.948924958186195160f, -0.315501860107555990f, 0.948864444017943340f,\n    -0.315683808388265650f,\n  0.948803894962658490f, -0.315865745062183960f, 0.948743311022566480f,\n    -0.316047670122621860f,\n  0.948682692199895090f, -0.316229583562890330f, 0.948622038496872990f,\n    -0.316411485376300980f,\n  0.948561349915730270f, -0.316593375556165850f, 0.948500626458698260f,\n    -0.316775254095797270f,\n  0.948439868128009620f, -0.316957120988508150f, 0.948379074925898120f,\n    -0.317138976227611780f,\n  0.948318246854599090f, -0.317320819806421740f, 0.948257383916349060f,\n    -0.317502651718252260f,\n  0.948196486113385580f, -0.317684471956417970f, 0.948135553447947980f,\n    -0.317866280514233660f,\n  0.948074585922276230f, -0.318048077385014950f, 0.948013583538612200f,\n    -0.318229862562077530f,\n  0.947952546299198670f, -0.318411636038737790f, 0.947891474206279840f,\n    -0.318593397808312420f,\n  0.947830367262101010f, -0.318775147864118480f, 0.947769225468909180f,\n    -0.318956886199473650f,\n  0.947708048828952100f, -0.319138612807695900f, 0.947646837344479300f,\n    -0.319320327682103610f,\n  0.947585591017741090f, -0.319502030816015690f, 0.947524309850989570f,\n    -0.319683722202751430f,\n  0.947462993846477700f, -0.319865401835630500f, 0.947401643006459900f,\n    -0.320047069707973140f,\n  0.947340257333192050f, -0.320228725813099860f, 0.947278836828930880f,\n    -0.320410370144331820f,\n  0.947217381495934820f, -0.320592002694990330f, 0.947155891336463270f,\n    -0.320773623458397330f,\n  0.947094366352777220f, -0.320955232427875210f, 0.947032806547138620f,\n    -0.321136829596746660f,\n  0.946971211921810880f, -0.321318414958334850f, 0.946909582479058760f,\n    -0.321499988505963510f,\n  0.946847918221148000f, -0.321681550232956580f, 0.946786219150346000f,\n    -0.321863100132638580f,\n  0.946724485268921170f, -0.322044638198334510f, 0.946662716579143360f,\n    -0.322226164423369600f,\n  0.946600913083283530f, -0.322407678801069850f, 0.946539074783614100f,\n    -0.322589181324761330f,\n  0.946477201682408680f, -0.322770671987770710f, 0.946415293781942110f,\n    -0.322952150783425260f,\n  0.946353351084490590f, -0.323133617705052330f, 0.946291373592331620f,\n    -0.323315072745979980f,\n  0.946229361307743820f, -0.323496515899536710f, 0.946167314233007370f,\n    -0.323677947159051240f,\n  0.946105232370403450f, -0.323859366517852850f, 0.946043115722214560f,\n    -0.324040773969271450f,\n  0.945980964290724760f, -0.324222169506636960f, 0.945918778078219110f,\n    -0.324403553123280230f,\n  0.945856557086983910f, -0.324584924812532150f, 0.945794301319306970f,\n    -0.324766284567724220f,\n  0.945732010777477150f, -0.324947632382188430f, 0.945669685463784710f,\n    -0.325128968249257080f,\n  0.945607325380521280f, -0.325310292162262930f, 0.945544930529979680f,\n    -0.325491604114539310f,\n  0.945482500914453740f, -0.325672904099419850f, 0.945420036536239070f,\n    -0.325854192110238580f,\n  0.945357537397632290f, -0.326035468140330240f, 0.945295003500931210f,\n    -0.326216732183029710f,\n  0.945232434848435000f, -0.326397984231672490f, 0.945169831442444150f,\n    -0.326579224279594400f,\n  0.945107193285260610f, -0.326760452320131730f, 0.945044520379187070f,\n    -0.326941668346621420f,\n  0.944981812726528150f, -0.327122872352400510f, 0.944919070329589220f,\n    -0.327304064330806670f,\n  0.944856293190677210f, -0.327485244275178000f, 0.944793481312100280f,\n    -0.327666412178853120f,\n  0.944730634696167800f, -0.327847568035170840f, 0.944667753345190490f,\n    -0.328028711837470680f,\n  0.944604837261480260f, -0.328209843579092500f, 0.944541886447350490f,\n    -0.328390963253376580f,\n  0.944478900905115550f, -0.328572070853663740f, 0.944415880637091250f,\n    -0.328753166373294990f,\n  0.944352825645594750f, -0.328934249805612200f, 0.944289735932944410f,\n    -0.329115321143957250f,\n  0.944226611501459810f, -0.329296380381672750f, 0.944163452353461770f,\n    -0.329477427512101740f,\n  0.944100258491272660f, -0.329658462528587490f, 0.944037029917215830f,\n    -0.329839485424473940f,\n  0.943973766633615980f, -0.330020496193105420f, 0.943910468642799150f,\n    -0.330201494827826570f,\n  0.943847135947092690f, -0.330382481321982780f, 0.943783768548825060f,\n    -0.330563455668919540f,\n  0.943720366450326200f, -0.330744417861982890f, 0.943656929653927220f,\n    -0.330925367894519540f,\n  0.943593458161960390f, -0.331106305759876430f, 0.943529951976759480f,\n    -0.331287231451400820f,\n  0.943466411100659320f, -0.331468144962440870f, 0.943402835535996240f,\n    -0.331649046286344670f,\n  0.943339225285107720f, -0.331829935416461110f, 0.943275580350332540f,\n    -0.332010812346139380f,\n  0.943211900734010620f, -0.332191677068729150f, 0.943148186438483420f,\n    -0.332372529577580620f,\n  0.943084437466093490f, -0.332553369866044220f, 0.943020653819184650f,\n    -0.332734197927471050f,\n  0.942956835500102120f, -0.332915013755212650f, 0.942892982511192250f,\n    -0.333095817342620780f,\n  0.942829094854802710f, -0.333276608683047930f, 0.942765172533282510f,\n    -0.333457387769846850f,\n  0.942701215548981900f, -0.333638154596370860f, 0.942637223904252530f,\n    -0.333818909155973620f,\n  0.942573197601446870f, -0.333999651442009380f, 0.942509136642919240f,\n    -0.334180381447832690f,\n  0.942445041031024890f, -0.334361099166798740f, 0.942380910768120470f,\n    -0.334541804592262900f,\n  0.942316745856563780f, -0.334722497717581220f, 0.942252546298714020f,\n    -0.334903178536110180f,\n  0.942188312096931770f, -0.335083847041206580f, 0.942124043253578570f,\n    -0.335264503226227810f,\n  0.942059739771017310f, -0.335445147084531600f, 0.941995401651612550f,\n    -0.335625778609476290f,\n  0.941931028897729620f, -0.335806397794420450f, 0.941866621511735280f,\n    -0.335987004632723350f,\n  0.941802179495997650f, -0.336167599117744520f, 0.941737702852886160f,\n    -0.336348181242844050f,\n  0.941673191584771360f, -0.336528751001382410f, 0.941608645694025250f,\n    -0.336709308386720580f,\n  0.941544065183020810f, -0.336889853392220050f, 0.941479450054132580f,\n    -0.337070386011242620f,\n  0.941414800309736340f, -0.337250906237150590f, 0.941350115952208970f,\n    -0.337431414063306840f,\n  0.941285396983928660f, -0.337611909483074620f, 0.941220643407275180f,\n    -0.337792392489817460f,\n  0.941155855224629190f, -0.337972863076899720f, 0.941091032438372780f,\n    -0.338153321237685930f,\n  0.941026175050889260f, -0.338333766965541130f, 0.940961283064563280f,\n    -0.338514200253830940f,\n  0.940896356481780830f, -0.338694621095921190f, 0.940831395304928870f,\n    -0.338875029485178450f,\n  0.940766399536396070f, -0.339055425414969640f, 0.940701369178571940f,\n    -0.339235808878661950f,\n  0.940636304233847590f, -0.339416179869623360f, 0.940571204704615190f,\n    -0.339596538381222110f,\n  0.940506070593268300f, -0.339776884406826850f, 0.940440901902201750f,\n    -0.339957217939806880f,\n  0.940375698633811540f, -0.340137538973531720f, 0.940310460790495070f,\n    -0.340317847501371670f,\n  0.940245188374650880f, -0.340498143516697160f, 0.940179881388678920f,\n    -0.340678427012879200f,\n  0.940114539834980280f, -0.340858697983289440f, 0.940049163715957370f,\n    -0.341038956421299720f,\n  0.939983753034014050f, -0.341219202320282360f, 0.939918307791555050f,\n    -0.341399435673610420f,\n  0.939852827990986680f, -0.341579656474657160f, 0.939787313634716570f,\n    -0.341759864716796310f,\n  0.939721764725153340f, -0.341940060393402190f, 0.939656181264707180f,\n    -0.342120243497849530f,\n  0.939590563255789270f, -0.342300414023513520f, 0.939524910700812230f,\n    -0.342480571963769800f,\n  0.939459223602189920f, -0.342660717311994380f, 0.939393501962337510f,\n    -0.342840850061563950f,\n  0.939327745783671400f, -0.343020970205855540f, 0.939261955068609210f,\n    -0.343201077738246540f,\n  0.939196129819569900f, -0.343381172652115040f, 0.939130270038973650f,\n    -0.343561254940839390f,\n  0.939064375729241950f, -0.343741324597798490f, 0.938998446892797540f,\n    -0.343921381616371700f,\n  0.938932483532064600f, -0.344101425989938810f, 0.938866485649468060f,\n    -0.344281457711880180f,\n  0.938800453247434770f, -0.344461476775576540f, 0.938734386328392460f,\n    -0.344641483174408960f,\n  0.938668284894770170f, -0.344821476901759290f, 0.938602148948998400f,\n    -0.345001457951009670f,\n  0.938535978493508560f, -0.345181426315542550f, 0.938469773530733800f,\n    -0.345361381988741220f,\n  0.938403534063108060f, -0.345541324963989090f, 0.938337260093066950f,\n    -0.345721255234670120f,\n  0.938270951623047190f, -0.345901172794168990f, 0.938204608655486490f,\n    -0.346081077635870430f,\n  0.938138231192824360f, -0.346260969753160010f, 0.938071819237501270f,\n    -0.346440849139423520f,\n  0.938005372791958840f, -0.346620715788047320f, 0.937938891858640320f,\n    -0.346800569692418290f,\n  0.937872376439989890f, -0.346980410845923680f, 0.937805826538453120f,\n    -0.347160239241951160f,\n  0.937739242156476970f, -0.347340054873889140f, 0.937672623296509470f,\n    -0.347519857735126110f,\n  0.937605969960999990f, -0.347699647819051380f, 0.937539282152399230f,\n    -0.347879425119054510f,\n  0.937472559873159250f, -0.348059189628525610f, 0.937405803125732960f,\n    -0.348238941340855260f,\n  0.937339011912574960f, -0.348418680249434560f, 0.937272186236140950f,\n    -0.348598406347654930f,\n  0.937205326098887960f, -0.348778119628908420f, 0.937138431503274140f,\n    -0.348957820086587490f,\n  0.937071502451759190f, -0.349137507714084970f, 0.937004538946803690f,\n    -0.349317182504794380f,\n  0.936937540990869900f, -0.349496844452109550f, 0.936870508586420960f,\n    -0.349676493549424760f,\n  0.936803441735921560f, -0.349856129790134920f, 0.936736340441837620f,\n    -0.350035753167635240f,\n  0.936669204706636170f, -0.350215363675321580f, 0.936602034532785570f,\n    -0.350394961306590150f,\n  0.936534829922755500f, -0.350574546054837510f, 0.936467590879016990f,\n    -0.350754117913461060f,\n  0.936400317404042060f, -0.350933676875858360f, 0.936333009500304180f,\n    -0.351113222935427460f,\n  0.936265667170278260f, -0.351292756085567090f, 0.936198290416440090f,\n    -0.351472276319676310f,\n  0.936130879241267030f, -0.351651783631154570f, 0.936063433647237540f,\n    -0.351831278013402030f,\n  0.935995953636831410f, -0.352010759459819080f, 0.935928439212529660f,\n    -0.352190227963806830f,\n  0.935860890376814640f, -0.352369683518766630f, 0.935793307132169900f,\n    -0.352549126118100460f,\n  0.935725689481080370f, -0.352728555755210730f, 0.935658037426032040f,\n    -0.352907972423500250f,\n  0.935590350969512370f, -0.353087376116372480f, 0.935522630114009930f,\n    -0.353266766827231240f,\n  0.935454874862014620f, -0.353446144549480810f, 0.935387085216017770f,\n    -0.353625509276525970f,\n  0.935319261178511610f, -0.353804861001772050f, 0.935251402751989920f,\n    -0.353984199718624770f,\n  0.935183509938947610f, -0.354163525420490340f, 0.935115582741880890f,\n    -0.354342838100775550f,\n  0.935047621163287430f, -0.354522137752887430f, 0.934979625205665800f,\n    -0.354701424370233830f,\n  0.934911594871516090f, -0.354880697946222790f, 0.934843530163339540f,\n    -0.355059958474262860f,\n  0.934775431083638700f, -0.355239205947763310f, 0.934707297634917440f,\n    -0.355418440360133650f,\n  0.934639129819680780f, -0.355597661704783850f, 0.934570927640435030f,\n    -0.355776869975124640f,\n  0.934502691099687870f, -0.355956065164566850f, 0.934434420199948050f,\n    -0.356135247266522130f,\n  0.934366114943725790f, -0.356314416274402410f, 0.934297775333532530f,\n    -0.356493572181620090f,\n  0.934229401371880820f, -0.356672714981588260f, 0.934160993061284530f,\n    -0.356851844667720300f,\n  0.934092550404258980f, -0.357030961233429980f, 0.934024073403320390f,\n    -0.357210064672131960f,\n  0.933955562060986730f, -0.357389154977240940f, 0.933887016379776890f,\n    -0.357568232142172260f,\n  0.933818436362210960f, -0.357747296160341900f, 0.933749822010810580f,\n    -0.357926347025166010f,\n  0.933681173328098410f, -0.358105384730061590f, 0.933612490316598540f,\n    -0.358284409268445850f,\n  0.933543772978836170f, -0.358463420633736540f, 0.933475021317337950f,\n    -0.358642418819351990f,\n  0.933406235334631520f, -0.358821403818710860f, 0.933337415033246190f,\n    -0.359000375625232460f,\n  0.933268560415712050f, -0.359179334232336500f, 0.933199671484560730f,\n    -0.359358279633443130f,\n  0.933130748242325230f, -0.359537211821973070f, 0.933061790691539380f,\n    -0.359716130791347570f,\n  0.932992798834738960f, -0.359895036534988110f, 0.932923772674460140f,\n    -0.360073929046317020f,\n  0.932854712213241120f, -0.360252808318756890f, 0.932785617453621100f,\n    -0.360431674345730700f,\n  0.932716488398140250f, -0.360610527120662270f, 0.932647325049340450f,\n    -0.360789366636975580f,\n  0.932578127409764420f, -0.360968192888095230f, 0.932508895481956590f,\n    -0.361147005867446250f,\n  0.932439629268462360f, -0.361325805568454280f, 0.932370328771828460f,\n    -0.361504591984545260f,\n  0.932300993994602760f, -0.361683365109145840f, 0.932231624939334540f,\n    -0.361862124935682980f,\n  0.932162221608574430f, -0.362040871457584180f, 0.932092784004874050f,\n    -0.362219604668277460f,\n  0.932023312130786490f, -0.362398324561191310f, 0.931953805988866010f,\n    -0.362577031129754760f,\n  0.931884265581668150f, -0.362755724367397230f, 0.931814690911749730f,\n    -0.362934404267548640f,\n  0.931745081981668720f, -0.363113070823639470f, 0.931675438793984620f,\n    -0.363291724029100760f,\n  0.931605761351257830f, -0.363470363877363760f, 0.931536049656050300f,\n    -0.363648990361860550f,\n  0.931466303710925090f, -0.363827603476023500f, 0.931396523518446600f,\n    -0.364006203213285470f,\n  0.931326709081180430f, -0.364184789567079890f, 0.931256860401693420f,\n    -0.364363362530840620f,\n  0.931186977482553750f, -0.364541922098002120f, 0.931117060326330790f,\n    -0.364720468261999280f,\n  0.931047108935595280f, -0.364899001016267320f, 0.930977123312918930f,\n    -0.365077520354242180f,\n  0.930907103460875130f, -0.365256026269360320f, 0.930837049382038150f,\n    -0.365434518755058390f,\n  0.930766961078983710f, -0.365612997804773850f, 0.930696838554288860f,\n    -0.365791463411944570f,\n  0.930626681810531760f, -0.365969915570008740f, 0.930556490850291800f,\n    -0.366148354272405330f,\n  0.930486265676149780f, -0.366326779512573590f, 0.930416006290687550f,\n    -0.366505191283953370f,\n  0.930345712696488470f, -0.366683589579984930f, 0.930275384896137150f,\n    -0.366861974394109060f,\n  0.930205022892219070f, -0.367040345719767180f, 0.930134626687321390f,\n    -0.367218703550400980f,\n  0.930064196284032360f, -0.367397047879452710f, 0.929993731684941480f,\n    -0.367575378700365330f,\n  0.929923232892639670f, -0.367753696006581980f, 0.929852699909718750f,\n    -0.367931999791546450f,\n  0.929782132738772190f, -0.368110290048703050f, 0.929711531382394370f,\n    -0.368288566771496570f,\n  0.929640895843181330f, -0.368466829953372320f, 0.929570226123729860f,\n    -0.368645079587776040f,\n  0.929499522226638560f, -0.368823315668153910f, 0.929428784154506800f,\n    -0.369001538187952780f,\n  0.929358011909935500f, -0.369179747140620020f, 0.929287205495526790f,\n    -0.369357942519603130f,\n  0.929216364913884040f, -0.369536124318350650f, 0.929145490167611720f,\n    -0.369714292530311240f,\n  0.929074581259315860f, -0.369892447148934100f, 0.929003638191603360f,\n    -0.370070588167669080f,\n  0.928932660967082820f, -0.370248715579966360f, 0.928861649588363700f,\n    -0.370426829379276790f,\n  0.928790604058057020f, -0.370604929559051670f, 0.928719524378774810f,\n    -0.370783016112742560f,\n  0.928648410553130520f, -0.370961089033801980f, 0.928577262583738850f,\n    -0.371139148315682570f,\n  0.928506080473215590f, -0.371317193951837540f, 0.928434864224177980f,\n    -0.371495225935720760f,\n  0.928363613839244370f, -0.371673244260786520f, 0.928292329321034670f,\n    -0.371851248920489490f,\n  0.928221010672169440f, -0.372029239908285010f, 0.928149657895271150f,\n    -0.372207217217628840f,\n  0.928078270992963140f, -0.372385180841977360f, 0.928006849967869970f,\n    -0.372563130774787250f,\n  0.927935394822617890f, -0.372741067009515760f, 0.927863905559833780f,\n    -0.372918989539620830f,\n  0.927792382182146320f, -0.373096898358560640f, 0.927720824692185200f,\n    -0.373274793459793970f,\n  0.927649233092581180f, -0.373452674836780300f, 0.927577607385966730f,\n    -0.373630542482979280f,\n  0.927505947574975180f, -0.373808396391851210f, 0.927434253662241300f,\n    -0.373986236556857030f,\n  0.927362525650401110f, -0.374164062971457930f, 0.927290763542091720f,\n    -0.374341875629115920f,\n  0.927218967339951790f, -0.374519674523293210f, 0.927147137046620880f,\n    -0.374697459647452600f,\n  0.927075272664740100f, -0.374875230995057540f, 0.927003374196951670f,\n    -0.375052988559571920f,\n  0.926931441645899130f, -0.375230732334459920f, 0.926859475014227160f,\n    -0.375408462313186590f,\n  0.926787474304581750f, -0.375586178489217220f, 0.926715439519610330f,\n    -0.375763880856017700f,\n  0.926643370661961230f, -0.375941569407054420f, 0.926571267734284330f,\n    -0.376119244135794340f,\n  0.926499130739230510f, -0.376296905035704790f, 0.926426959679452210f,\n    -0.376474552100253770f,\n  0.926354754557602860f, -0.376652185322909560f, 0.926282515376337210f,\n    -0.376829804697141280f,\n  0.926210242138311380f, -0.377007410216418260f, 0.926137934846182560f,\n    -0.377185001874210450f,\n  0.926065593502609310f, -0.377362579663988340f, 0.925993218110251480f,\n    -0.377540143579222940f,\n  0.925920808671770070f, -0.377717693613385640f, 0.925848365189827270f,\n    -0.377895229759948490f,\n  0.925775887667086740f, -0.378072752012383990f, 0.925703376106213230f,\n    -0.378250260364165200f,\n  0.925630830509872720f, -0.378427754808765560f, 0.925558250880732740f,\n    -0.378605235339659120f,\n  0.925485637221461490f, -0.378782701950320540f, 0.925412989534729060f,\n    -0.378960154634224720f,\n  0.925340307823206310f, -0.379137593384847320f, 0.925267592089565660f,\n    -0.379315018195664430f,\n  0.925194842336480530f, -0.379492429060152630f, 0.925122058566625880f,\n    -0.379669825971788940f,\n  0.925049240782677580f, -0.379847208924051160f, 0.924976388987313160f,\n    -0.380024577910417270f,\n  0.924903503183210910f, -0.380201932924366050f, 0.924830583373050800f,\n    -0.380379273959376600f,\n  0.924757629559513910f, -0.380556601008928520f, 0.924684641745282420f,\n    -0.380733914066502140f,\n  0.924611619933039970f, -0.380911213125578070f, 0.924538564125471420f,\n    -0.381088498179637520f,\n  0.924465474325262600f, -0.381265769222162380f, 0.924392350535101050f,\n    -0.381443026246634730f,\n  0.924319192757675160f, -0.381620269246537360f, 0.924246000995674890f,\n    -0.381797498215353640f,\n  0.924172775251791200f, -0.381974713146567220f, 0.924099515528716280f,\n    -0.382151914033662610f,\n  0.924026221829143850f, -0.382329100870124510f, 0.923952894155768640f,\n    -0.382506273649438230f,\n  0.923879532511286740f, -0.382683432365089780f, 0.923806136898395410f,\n    -0.382860577010565420f,\n  0.923732707319793290f, -0.383037707579352020f, 0.923659243778179980f,\n    -0.383214824064937180f,\n  0.923585746276256670f, -0.383391926460808660f, 0.923512214816725630f,\n    -0.383569014760454910f,\n  0.923438649402290370f, -0.383746088957365010f, 0.923365050035655720f,\n    -0.383923149045028390f,\n  0.923291416719527640f, -0.384100195016935040f, 0.923217749456613500f,\n    -0.384277226866575510f,\n  0.923144048249621930f, -0.384454244587440820f, 0.923070313101262420f,\n    -0.384631248173022580f,\n  0.922996544014246250f, -0.384808237616812880f, 0.922922740991285680f,\n    -0.384985212912304200f,\n  0.922848904035094120f, -0.385162174052989860f, 0.922775033148386380f,\n    -0.385339121032363340f,\n  0.922701128333878630f, -0.385516053843918850f, 0.922627189594287910f,\n    -0.385692972481151140f,\n  0.922553216932332830f, -0.385869876937555310f, 0.922479210350733210f,\n    -0.386046767206627170f,\n  0.922405169852209880f, -0.386223643281862980f, 0.922331095439485440f,\n    -0.386400505156759440f,\n  0.922256987115283030f, -0.386577352824813920f, 0.922182844882327600f,\n    -0.386754186279524180f,\n  0.922108668743345180f, -0.386931005514388580f, 0.922034458701062820f,\n    -0.387107810522905990f,\n  0.921960214758209220f, -0.387284601298575840f, 0.921885936917513970f,\n    -0.387461377834897870f,\n  0.921811625181708120f, -0.387638140125372730f, 0.921737279553523910f,\n    -0.387814888163501180f,\n  0.921662900035694730f, -0.387991621942784860f, 0.921588486630955490f,\n    -0.388168341456725740f,\n  0.921514039342042010f, -0.388345046698826250f, 0.921439558171691430f,\n    -0.388521737662589570f,\n  0.921365043122642340f, -0.388698414341519190f, 0.921290494197634540f,\n    -0.388875076729119250f,\n  0.921215911399408730f, -0.389051724818894380f, 0.921141294730707270f,\n    -0.389228358604349730f,\n  0.921066644194273640f, -0.389404978078990940f, 0.920991959792852310f,\n    -0.389581583236324300f,\n  0.920917241529189520f, -0.389758174069856410f, 0.920842489406032190f,\n    -0.389934750573094730f,\n  0.920767703426128790f, -0.390111312739546910f, 0.920692883592229120f,\n    -0.390287860562721190f,\n  0.920618029907083970f, -0.390464394036126590f, 0.920543142373445480f,\n    -0.390640913153272430f,\n  0.920468220994067110f, -0.390817417907668500f, 0.920393265771703550f,\n    -0.390993908292825380f,\n  0.920318276709110590f, -0.391170384302253870f, 0.920243253809045370f,\n    -0.391346845929465560f,\n  0.920168197074266340f, -0.391523293167972410f, 0.920093106507533180f,\n    -0.391699726011286940f,\n  0.920017982111606570f, -0.391876144452922350f, 0.919942823889248640f,\n    -0.392052548486392090f,\n  0.919867631843222950f, -0.392228938105210310f, 0.919792405976293860f,\n    -0.392405313302891690f,\n  0.919717146291227360f, -0.392581674072951470f, 0.919641852790790470f,\n    -0.392758020408905280f,\n  0.919566525477751530f, -0.392934352304269490f, 0.919491164354880100f,\n    -0.393110669752560760f,\n  0.919415769424947070f, -0.393286972747296400f, 0.919340340690724340f,\n    -0.393463261281994330f,\n  0.919264878154985370f, -0.393639535350172880f, 0.919189381820504470f,\n    -0.393815794945351020f,\n  0.919113851690057770f, -0.393992040061048100f, 0.919038287766422050f,\n    -0.394168270690784080f,\n  0.918962690052375630f, -0.394344486828079600f, 0.918887058550697970f,\n    -0.394520688466455600f,\n  0.918811393264170050f, -0.394696875599433560f, 0.918735694195573550f,\n    -0.394873048220535760f,\n  0.918659961347691900f, -0.395049206323284770f, 0.918584194723309540f,\n    -0.395225349901203670f,\n  0.918508394325212250f, -0.395401478947816350f, 0.918432560156186910f,\n    -0.395577593456646840f,\n  0.918356692219021720f, -0.395753693421220080f, 0.918280790516506130f,\n    -0.395929778835061250f,\n  0.918204855051430900f, -0.396105849691696270f, 0.918128885826588030f,\n    -0.396281905984651520f,\n  0.918052882844770380f, -0.396457947707453910f, 0.917976846108772730f,\n    -0.396633974853630830f,\n  0.917900775621390500f, -0.396809987416710310f, 0.917824671385420570f,\n    -0.396985985390220900f,\n  0.917748533403661250f, -0.397161968767691610f, 0.917672361678911860f,\n    -0.397337937542652060f,\n  0.917596156213972950f, -0.397513891708632330f, 0.917519917011646260f,\n    -0.397689831259163180f,\n  0.917443644074735220f, -0.397865756187775750f, 0.917367337406043930f,\n    -0.398041666488001770f,\n  0.917290997008377910f, -0.398217562153373560f, 0.917214622884544250f,\n    -0.398393443177423980f,\n  0.917138215037350710f, -0.398569309553686300f, 0.917061773469606820f,\n    -0.398745161275694430f,\n  0.916985298184123000f, -0.398920998336982910f, 0.916908789183710990f,\n    -0.399096820731086540f,\n  0.916832246471183890f, -0.399272628451540990f, 0.916755670049355990f,\n    -0.399448421491882140f,\n  0.916679059921042700f, -0.399624199845646790f, 0.916602416089060790f,\n    -0.399799963506371980f,\n  0.916525738556228210f, -0.399975712467595330f, 0.916449027325364150f,\n    -0.400151446722855130f,\n  0.916372282399289140f, -0.400327166265690090f, 0.916295503780824800f,\n    -0.400502871089639500f,\n  0.916218691472794220f, -0.400678561188243240f, 0.916141845478021350f,\n    -0.400854236555041650f,\n  0.916064965799331720f, -0.401029897183575620f, 0.915988052439551950f,\n    -0.401205543067386710f,\n  0.915911105401509880f, -0.401381174200016790f, 0.915834124688034710f,\n    -0.401556790575008540f,\n  0.915757110301956720f, -0.401732392185905010f, 0.915680062246107650f,\n    -0.401907979026249700f,\n  0.915602980523320230f, -0.402083551089586990f, 0.915525865136428530f,\n    -0.402259108369461490f,\n  0.915448716088267830f, -0.402434650859418430f, 0.915371533381674760f,\n    -0.402610178553003680f,\n  0.915294317019487050f, -0.402785691443763530f, 0.915217067004543860f,\n    -0.402961189525244900f,\n  0.915139783339685260f, -0.403136672790995300f, 0.915062466027752760f,\n    -0.403312141234562550f,\n  0.914985115071589310f, -0.403487594849495310f, 0.914907730474038730f,\n    -0.403663033629342640f,\n  0.914830312237946200f, -0.403838457567654070f, 0.914752860366158220f,\n    -0.404013866657979890f,\n  0.914675374861522390f, -0.404189260893870690f, 0.914597855726887790f,\n    -0.404364640268877810f,\n  0.914520302965104450f, -0.404540004776553000f, 0.914442716579023870f,\n    -0.404715354410448650f,\n  0.914365096571498560f, -0.404890689164117580f, 0.914287442945382440f,\n    -0.405066009031113340f,\n  0.914209755703530690f, -0.405241314004989860f, 0.914132034848799460f,\n    -0.405416604079301630f,\n  0.914054280384046570f, -0.405591879247603870f, 0.913976492312130630f,\n    -0.405767139503452060f,\n  0.913898670635911680f, -0.405942384840402510f, 0.913820815358251100f,\n    -0.406117615252011840f,\n  0.913742926482011390f, -0.406292830731837360f, 0.913665004010056350f,\n    -0.406468031273437000f,\n  0.913587047945250810f, -0.406643216870369030f, 0.913509058290461140f,\n    -0.406818387516192310f,\n  0.913431035048554720f, -0.406993543204466510f, 0.913352978222400250f,\n    -0.407168683928751550f,\n  0.913274887814867760f, -0.407343809682607970f, 0.913196763828828200f,\n    -0.407518920459596920f,\n  0.913118606267154240f, -0.407694016253280110f, 0.913040415132719160f,\n    -0.407869097057219800f,\n  0.912962190428398210f, -0.408044162864978690f, 0.912883932157067200f,\n    -0.408219213670120100f,\n  0.912805640321603500f, -0.408394249466208000f, 0.912727314924885900f,\n    -0.408569270246806780f,\n  0.912648955969793900f, -0.408744276005481360f, 0.912570563459208730f,\n    -0.408919266735797430f,\n  0.912492137396012650f, -0.409094242431320980f, 0.912413677783089020f,\n    -0.409269203085618590f,\n  0.912335184623322750f, -0.409444148692257590f, 0.912256657919599760f,\n    -0.409619079244805670f,\n  0.912178097674807180f, -0.409793994736831150f, 0.912099503891833470f,\n    -0.409968895161902880f,\n  0.912020876573568340f, -0.410143780513590240f, 0.911942215722902570f,\n    -0.410318650785463260f,\n  0.911863521342728520f, -0.410493505971092410f, 0.911784793435939430f,\n    -0.410668346064048730f,\n  0.911706032005429880f, -0.410843171057903910f, 0.911627237054095650f,\n    -0.411017980946230210f,\n  0.911548408584833990f, -0.411192775722600160f, 0.911469546600543020f,\n    -0.411367555380587220f,\n  0.911390651104122430f, -0.411542319913765220f, 0.911311722098472780f,\n    -0.411717069315708560f,\n  0.911232759586496190f, -0.411891803579992170f, 0.911153763571095900f,\n    -0.412066522700191560f,\n  0.911074734055176360f, -0.412241226669882890f, 0.910995671041643140f,\n    -0.412415915482642730f,\n  0.910916574533403360f, -0.412590589132048210f, 0.910837444533365010f,\n    -0.412765247611677270f,\n  0.910758281044437570f, -0.412939890915108080f, 0.910679084069531570f,\n    -0.413114519035919450f,\n  0.910599853611558930f, -0.413289131967690960f, 0.910520589673432750f,\n    -0.413463729704002410f,\n  0.910441292258067250f, -0.413638312238434500f, 0.910361961368377990f,\n    -0.413812879564568300f,\n  0.910282597007281760f, -0.413987431675985400f, 0.910203199177696540f,\n    -0.414161968566268080f,\n  0.910123767882541680f, -0.414336490228999100f, 0.910044303124737500f,\n    -0.414510996657761750f,\n  0.909964804907205660f, -0.414685487846140010f, 0.909885273232869160f,\n    -0.414859963787718330f,\n  0.909805708104652220f, -0.415034424476081630f, 0.909726109525480160f,\n    -0.415208869904815590f,\n  0.909646477498279540f, -0.415383300067506230f, 0.909566812025978330f,\n    -0.415557714957740410f,\n  0.909487113111505430f, -0.415732114569105360f, 0.909407380757791260f,\n    -0.415906498895188770f,\n  0.909327614967767260f, -0.416080867929579210f, 0.909247815744366310f,\n    -0.416255221665865480f,\n  0.909167983090522380f, -0.416429560097637150f, 0.909088117009170580f,\n    -0.416603883218484350f,\n  0.909008217503247450f, -0.416778191021997650f, 0.908928284575690640f,\n    -0.416952483501768170f,\n  0.908848318229439120f, -0.417126760651387870f, 0.908768318467432890f,\n    -0.417301022464448890f,\n  0.908688285292613360f, -0.417475268934544290f, 0.908608218707923190f,\n    -0.417649500055267410f,\n  0.908528118716306120f, -0.417823715820212270f, 0.908447985320707250f,\n    -0.417997916222973550f,\n  0.908367818524072890f, -0.418172101257146320f, 0.908287618329350450f,\n    -0.418346270916326260f,\n  0.908207384739488700f, -0.418520425194109700f, 0.908127117757437600f,\n    -0.418694564084093560f,\n  0.908046817386148340f, -0.418868687579875050f, 0.907966483628573350f,\n    -0.419042795675052370f,\n  0.907886116487666260f, -0.419216888363223910f, 0.907805715966381930f,\n    -0.419390965637988890f,\n  0.907725282067676440f, -0.419565027492946880f, 0.907644814794507200f,\n    -0.419739073921698180f,\n  0.907564314149832630f, -0.419913104917843620f, 0.907483780136612570f,\n    -0.420087120474984530f,\n  0.907403212757808110f, -0.420261120586722880f, 0.907322612016381420f,\n    -0.420435105246661170f,\n  0.907241977915295820f, -0.420609074448402510f, 0.907161310457516250f,\n    -0.420783028185550520f,\n  0.907080609646008450f, -0.420956966451709440f, 0.906999875483739610f,\n    -0.421130889240483970f,\n  0.906919107973678140f, -0.421304796545479640f, 0.906838307118793430f,\n    -0.421478688360302280f,\n  0.906757472922056550f, -0.421652564678558330f, 0.906676605386439460f,\n    -0.421826425493854910f,\n  0.906595704514915330f, -0.422000270799799680f, 0.906514770310458800f,\n    -0.422174100590000770f,\n  0.906433802776045460f, -0.422347914858067050f, 0.906352801914652400f,\n    -0.422521713597607820f,\n  0.906271767729257660f, -0.422695496802232950f, 0.906190700222840650f,\n    -0.422869264465553060f,\n  0.906109599398381980f, -0.423043016581179040f, 0.906028465258863600f,\n    -0.423216753142722610f,\n  0.905947297807268460f, -0.423390474143796050f, 0.905866097046580940f,\n    -0.423564179578011960f,\n  0.905784862979786550f, -0.423737869438983840f, 0.905703595609872010f,\n    -0.423911543720325580f,\n  0.905622294939825270f, -0.424085202415651560f, 0.905540960972635590f,\n    -0.424258845518576950f,\n  0.905459593711293250f, -0.424432473022717420f, 0.905378193158790090f,\n    -0.424606084921689110f,\n  0.905296759318118820f, -0.424779681209108810f, 0.905215292192273590f,\n    -0.424953261878593890f,\n  0.905133791784249690f, -0.425126826923762360f, 0.905052258097043590f,\n    -0.425300376338232640f,\n  0.904970691133653250f, -0.425473910115623800f, 0.904889090897077470f,\n    -0.425647428249555590f,\n  0.904807457390316540f, -0.425820930733648240f, 0.904725790616371930f,\n    -0.425994417561522400f,\n  0.904644090578246240f, -0.426167888726799620f, 0.904562357278943300f,\n    -0.426341344223101830f,\n  0.904480590721468250f, -0.426514784044051520f, 0.904398790908827350f,\n    -0.426688208183271860f,\n  0.904316957844028320f, -0.426861616634386430f, 0.904235091530079750f,\n    -0.427035009391019680f,\n  0.904153191969991780f, -0.427208386446796320f, 0.904071259166775440f,\n    -0.427381747795341770f,\n  0.903989293123443340f, -0.427555093430282080f, 0.903907293843009050f,\n    -0.427728423345243800f,\n  0.903825261328487510f, -0.427901737533854080f, 0.903743195582894620f,\n    -0.428075035989740730f,\n  0.903661096609247980f, -0.428248318706531960f, 0.903578964410566070f,\n    -0.428421585677856650f,\n  0.903496798989868450f, -0.428594836897344400f, 0.903414600350176290f,\n    -0.428768072358625070f,\n  0.903332368494511820f, -0.428941292055329490f, 0.903250103425898400f,\n    -0.429114495981088750f,\n  0.903167805147360720f, -0.429287684129534610f, 0.903085473661924600f,\n    -0.429460856494299490f,\n  0.903003108972617150f, -0.429634013069016380f, 0.902920711082466740f,\n    -0.429807153847318710f,\n  0.902838279994502830f, -0.429980278822840620f, 0.902755815711756120f,\n    -0.430153387989216870f,\n  0.902673318237258830f, -0.430326481340082610f, 0.902590787574043870f,\n    -0.430499558869073820f,\n  0.902508223725145940f, -0.430672620569826800f, 0.902425626693600380f,\n    -0.430845666435978660f,\n  0.902342996482444200f, -0.431018696461167030f, 0.902260333094715540f,\n    -0.431191710639029950f,\n  0.902177636533453620f, -0.431364708963206330f, 0.902094906801698900f,\n    -0.431537691427335500f,\n  0.902012143902493180f, -0.431710658025057260f, 0.901929347838879460f,\n    -0.431883608750012250f,\n  0.901846518613901750f, -0.432056543595841500f, 0.901763656230605730f,\n    -0.432229462556186720f,\n  0.901680760692037730f, -0.432402365624690140f, 0.901597832001245660f,\n    -0.432575252794994650f,\n  0.901514870161278740f, -0.432748124060743700f, 0.901431875175186970f,\n    -0.432920979415581280f,\n  0.901348847046022030f, -0.433093818853151960f, 0.901265785776836580f,\n    -0.433266642367100940f,\n  0.901182691370684520f, -0.433439449951074090f, 0.901099563830620950f,\n    -0.433612241598717580f,\n  0.901016403159702330f, -0.433785017303678520f, 0.900933209360986200f,\n    -0.433957777059604420f,\n  0.900849982437531450f, -0.434130520860143310f, 0.900766722392397860f,\n    -0.434303248698943990f,\n  0.900683429228646970f, -0.434475960569655650f, 0.900600102949340900f,\n    -0.434648656465928320f,\n  0.900516743557543520f, -0.434821336381412290f, 0.900433351056319830f,\n    -0.434994000309758710f,\n  0.900349925448735600f, -0.435166648244619260f, 0.900266466737858480f,\n    -0.435339280179646070f,\n  0.900182974926756810f, -0.435511896108492000f, 0.900099450018500450f,\n    -0.435684496024810460f,\n  0.900015892016160280f, -0.435857079922255470f, 0.899932300922808510f,\n    -0.436029647794481560f,\n  0.899848676741518580f, -0.436202199635143950f, 0.899765019475365140f,\n    -0.436374735437898340f,\n  0.899681329127423930f, -0.436547255196401200f, 0.899597605700772180f,\n    -0.436719758904309360f,\n  0.899513849198487980f, -0.436892246555280360f, 0.899430059623650860f,\n    -0.437064718142972370f,\n  0.899346236979341570f, -0.437237173661044090f, 0.899262381268642000f,\n    -0.437409613103154790f,\n  0.899178492494635330f, -0.437582036462964400f, 0.899094570660405770f,\n    -0.437754443734133410f,\n  0.899010615769039070f, -0.437926834910322860f, 0.898926627823621870f,\n    -0.438099209985194470f,\n  0.898842606827242370f, -0.438271568952410430f, 0.898758552782989440f,\n    -0.438443911805633690f,\n  0.898674465693953820f, -0.438616238538527660f, 0.898590345563227030f,\n    -0.438788549144756290f,\n  0.898506192393901950f, -0.438960843617984320f, 0.898422006189072530f,\n    -0.439133121951876930f,\n  0.898337786951834310f, -0.439305384140099950f, 0.898253534685283570f,\n    -0.439477630176319800f,\n  0.898169249392518080f, -0.439649860054203480f, 0.898084931076636780f,\n    -0.439822073767418500f,\n  0.898000579740739880f, -0.439994271309633260f, 0.897916195387928660f,\n    -0.440166452674516320f,\n  0.897831778021305650f, -0.440338617855737250f, 0.897747327643974690f,\n    -0.440510766846965940f,\n  0.897662844259040860f, -0.440682899641872900f, 0.897578327869610230f,\n    -0.440855016234129430f,\n  0.897493778478790310f, -0.441027116617407230f, 0.897409196089689720f,\n    -0.441199200785378660f,\n  0.897324580705418320f, -0.441371268731716670f, 0.897239932329087160f,\n    -0.441543320450094870f,\n  0.897155250963808550f, -0.441715355934187310f, 0.897070536612695870f,\n    -0.441887375177668850f,\n  0.896985789278863970f, -0.442059378174214700f, 0.896901008965428790f,\n    -0.442231364917500980f,\n  0.896816195675507300f, -0.442403335401204080f, 0.896731349412217880f,\n    -0.442575289619001170f,\n  0.896646470178680150f, -0.442747227564570020f, 0.896561557978014960f,\n    -0.442919149231588980f,\n  0.896476612813344120f, -0.443091054613736880f, 0.896391634687790820f,\n    -0.443262943704693320f,\n  0.896306623604479550f, -0.443434816498138480f, 0.896221579566536030f,\n    -0.443606672987752970f,\n  0.896136502577086770f, -0.443778513167218220f, 0.896051392639260150f,\n    -0.443950337030216140f,\n  0.895966249756185220f, -0.444122144570429200f, 0.895881073930992370f,\n    -0.444293935781540580f,\n  0.895795865166813530f, -0.444465710657234000f, 0.895710623466781320f,\n    -0.444637469191193790f,\n  0.895625348834030110f, -0.444809211377104880f, 0.895540041271694950f,\n    -0.444980937208652730f,\n  0.895454700782912450f, -0.445152646679523640f, 0.895369327370820310f,\n    -0.445324339783404190f,\n  0.895283921038557580f, -0.445496016513981740f, 0.895198481789264200f,\n    -0.445667676864944300f,\n  0.895113009626081760f, -0.445839320829980290f, 0.895027504552152630f,\n    -0.446010948402778940f,\n  0.894941966570620750f, -0.446182559577030070f, 0.894856395684631050f,\n    -0.446354154346423840f,\n  0.894770791897329550f, -0.446525732704651350f, 0.894685155211863980f,\n    -0.446697294645404090f,\n  0.894599485631382700f, -0.446868840162374160f, 0.894513783159035620f,\n    -0.447040369249254440f,\n  0.894428047797973800f, -0.447211881899738320f, 0.894342279551349480f,\n    -0.447383378107519600f,\n  0.894256478422316040f, -0.447554857866293010f, 0.894170644414028270f,\n    -0.447726321169753580f,\n  0.894084777529641990f, -0.447897768011597310f, 0.893998877772314240f,\n    -0.448069198385520400f,\n  0.893912945145203250f, -0.448240612285219890f, 0.893826979651468620f,\n    -0.448412009704393430f,\n  0.893740981294271040f, -0.448583390636739240f, 0.893654950076772540f,\n    -0.448754755075955970f,\n  0.893568886002135910f, -0.448926103015743260f, 0.893482789073525850f,\n    -0.449097434449801050f,\n  0.893396659294107720f, -0.449268749371829920f, 0.893310496667048200f,\n    -0.449440047775531150f,\n  0.893224301195515320f, -0.449611329654606540f, 0.893138072882678320f,\n    -0.449782595002758690f,\n  0.893051811731707450f, -0.449953843813690520f, 0.892965517745774370f,\n    -0.450125076081105690f,\n  0.892879190928051680f, -0.450296291798708610f, 0.892792831281713610f,\n    -0.450467490960204110f,\n  0.892706438809935390f, -0.450638673559297600f, 0.892620013515893150f,\n    -0.450809839589695280f,\n  0.892533555402764580f, -0.450980989045103860f, 0.892447064473728680f,\n    -0.451152121919230600f,\n  0.892360540731965360f, -0.451323238205783520f, 0.892273984180655840f,\n    -0.451494337898471100f,\n  0.892187394822982480f, -0.451665420991002490f, 0.892100772662129060f,\n    -0.451836487477087490f,\n  0.892014117701280470f, -0.452007537350436420f, 0.891927429943622510f,\n    -0.452178570604760350f,\n  0.891840709392342720f, -0.452349587233770890f, 0.891753956050629460f,\n    -0.452520587231180050f,\n  0.891667169921672280f, -0.452691570590700920f, 0.891580351008662290f,\n    -0.452862537306046750f,\n  0.891493499314791380f, -0.453033487370931580f, 0.891406614843252900f,\n    -0.453204420779070190f,\n  0.891319697597241390f, -0.453375337524177750f, 0.891232747579952520f,\n    -0.453546237599970090f,\n  0.891145764794583180f, -0.453717121000163870f, 0.891058749244331590f,\n    -0.453887987718476050f,\n  0.890971700932396860f, -0.454058837748624430f, 0.890884619861979530f,\n    -0.454229671084327320f,\n  0.890797506036281490f, -0.454400487719303580f, 0.890710359458505630f,\n    -0.454571287647272950f,\n  0.890623180131855930f, -0.454742070861955450f, 0.890535968059537830f,\n    -0.454912837357071940f,\n  0.890448723244757880f, -0.455083587126343840f, 0.890361445690723840f,\n    -0.455254320163493100f,\n  0.890274135400644600f, -0.455425036462242360f, 0.890186792377730240f,\n    -0.455595736016314980f,\n  0.890099416625192320f, -0.455766418819434640f, 0.890012008146243260f,\n    -0.455937084865326030f,\n  0.889924566944096720f, -0.456107734147714110f, 0.889837093021967900f,\n    -0.456278366660324620f,\n  0.889749586383072780f, -0.456448982396883920f, 0.889662047030628900f,\n    -0.456619581351118910f,\n  0.889574474967854580f, -0.456790163516757160f, 0.889486870197969900f,\n    -0.456960728887526980f,\n  0.889399232724195520f, -0.457131277457156980f, 0.889311562549753850f,\n    -0.457301809219376630f,\n  0.889223859677868210f, -0.457472324167916060f, 0.889136124111763240f,\n    -0.457642822296505770f,\n  0.889048355854664570f, -0.457813303598877170f, 0.888960554909799310f,\n    -0.457983768068762120f,\n  0.888872721280395630f, -0.458154215699893060f, 0.888784854969682850f,\n    -0.458324646486003240f,\n  0.888696955980891600f, -0.458495060420826270f, 0.888609024317253860f,\n    -0.458665457498096560f,\n  0.888521059982002260f, -0.458835837711549120f, 0.888433062978371320f,\n    -0.459006201054919630f,\n  0.888345033309596350f, -0.459176547521944090f, 0.888256970978913870f,\n    -0.459346877106359630f,\n  0.888168875989561730f, -0.459517189801903480f, 0.888080748344778900f,\n    -0.459687485602313870f,\n  0.887992588047805560f, -0.459857764501329540f, 0.887904395101883240f,\n    -0.460028026492689650f,\n  0.887816169510254440f, -0.460198271570134320f, 0.887727911276163020f,\n    -0.460368499727404010f,\n  0.887639620402853930f, -0.460538710958240010f, 0.887551296893573370f,\n    -0.460708905256384080f,\n  0.887462940751568840f, -0.460879082615578690f, 0.887374551980088850f,\n    -0.461049243029566900f,\n  0.887286130582383150f, -0.461219386492092380f, 0.887197676561702900f,\n    -0.461389512996899450f,\n  0.887109189921300170f, -0.461559622537733080f, 0.887020670664428360f,\n    -0.461729715108338770f,\n  0.886932118794342190f, -0.461899790702462730f, 0.886843534314297410f,\n    -0.462069849313851750f,\n  0.886754917227550840f, -0.462239890936253340f, 0.886666267537361000f,\n    -0.462409915563415430f,\n  0.886577585246987040f, -0.462579923189086810f, 0.886488870359689600f,\n    -0.462749913807016740f,\n  0.886400122878730600f, -0.462919887410955080f, 0.886311342807372780f,\n    -0.463089843994652530f,\n  0.886222530148880640f, -0.463259783551860150f, 0.886133684906519340f,\n    -0.463429706076329830f,\n  0.886044807083555600f, -0.463599611561814010f, 0.885955896683257030f,\n    -0.463769500002065630f,\n  0.885866953708892790f, -0.463939371390838520f, 0.885777978163732940f,\n    -0.464109225721886950f,\n  0.885688970051048960f, -0.464279062988965760f, 0.885599929374113360f,\n    -0.464448883185830660f,\n  0.885510856136199950f, -0.464618686306237820f, 0.885421750340583680f,\n    -0.464788472343943990f,\n  0.885332611990540590f, -0.464958241292706690f, 0.885243441089348270f,\n    -0.465127993146283950f,\n  0.885154237640285110f, -0.465297727898434600f, 0.885065001646630930f,\n    -0.465467445542917800f,\n  0.884975733111666660f, -0.465637146073493660f, 0.884886432038674560f,\n    -0.465806829483922710f,\n  0.884797098430937790f, -0.465976495767966180f, 0.884707732291741040f,\n    -0.466146144919385890f,\n  0.884618333624369920f, -0.466315776931944430f, 0.884528902432111460f,\n    -0.466485391799404900f,\n  0.884439438718253810f, -0.466654989515530920f, 0.884349942486086120f,\n    -0.466824570074086950f,\n  0.884260413738899190f, -0.466994133468838000f, 0.884170852479984500f,\n    -0.467163679693549770f,\n  0.884081258712634990f, -0.467333208741988420f, 0.883991632440144890f,\n    -0.467502720607920920f,\n  0.883901973665809470f, -0.467672215285114770f, 0.883812282392925090f,\n    -0.467841692767338170f,\n  0.883722558624789660f, -0.468011153048359830f, 0.883632802364701870f,\n    -0.468180596121949290f,\n  0.883543013615961880f, -0.468350021981876530f, 0.883453192381870920f,\n    -0.468519430621912310f,\n  0.883363338665731580f, -0.468688822035827900f, 0.883273452470847430f,\n    -0.468858196217395330f,\n  0.883183533800523390f, -0.469027553160387130f, 0.883093582658065370f,\n    -0.469196892858576580f,\n  0.883003599046780830f, -0.469366215305737520f, 0.882913582969978020f,\n    -0.469535520495644450f,\n  0.882823534430966620f, -0.469704808422072460f, 0.882733453433057650f,\n    -0.469874079078797360f,\n  0.882643339979562790f, -0.470043332459595620f, 0.882553194073795510f,\n    -0.470212568558244170f,\n  0.882463015719070150f, -0.470381787368520650f, 0.882372804918702290f,\n    -0.470550988884203550f,\n  0.882282561676008710f, -0.470720173099071600f, 0.882192285994307430f,\n    -0.470889340006904520f,\n  0.882101977876917580f, -0.471058489601482500f, 0.882011637327159590f,\n    -0.471227621876586340f,\n  0.881921264348355050f, -0.471396736825997640f, 0.881830858943826620f,\n    -0.471565834443498420f,\n  0.881740421116898320f, -0.471734914722871430f, 0.881649950870895260f,\n    -0.471903977657900210f,\n  0.881559448209143780f, -0.472073023242368660f, 0.881468913134971440f,\n    -0.472242051470061490f,\n  0.881378345651706920f, -0.472411062334764040f, 0.881287745762680100f,\n    -0.472580055830262250f,\n  0.881197113471222090f, -0.472749031950342790f, 0.881106448780665130f,\n    -0.472917990688792760f,\n  0.881015751694342870f, -0.473086932039400050f, 0.880925022215589880f,\n    -0.473255855995953320f,\n  0.880834260347742040f, -0.473424762552241530f, 0.880743466094136340f,\n    -0.473593651702054530f,\n  0.880652639458111010f, -0.473762523439182850f, 0.880561780443005700f,\n    -0.473931377757417450f,\n  0.880470889052160750f, -0.474100214650549970f, 0.880379965288918150f,\n    -0.474269034112372980f,\n  0.880289009156621010f, -0.474437836136679230f, 0.880198020658613190f,\n    -0.474606620717262560f,\n  0.880106999798240360f, -0.474775387847917120f, 0.880015946578849070f,\n    -0.474944137522437800f,\n  0.879924861003786860f, -0.475112869734620300f, 0.879833743076402940f,\n    -0.475281584478260740f,\n  0.879742592800047410f, -0.475450281747155870f, 0.879651410178071580f,\n    -0.475618961535103300f,\n  0.879560195213827890f, -0.475787623835901120f, 0.879468947910670210f,\n    -0.475956268643348060f,\n  0.879377668271953290f, -0.476124895951243580f, 0.879286356301033250f,\n    -0.476293505753387690f,\n  0.879195012001267480f, -0.476462098043581190f, 0.879103635376014330f,\n    -0.476630672815625320f,\n  0.879012226428633530f, -0.476799230063322090f, 0.878920785162485840f,\n    -0.476967769780474170f,\n  0.878829311580933360f, -0.477136291960884810f, 0.878737805687339390f,\n    -0.477304796598357890f,\n  0.878646267485068130f, -0.477473283686698060f, 0.878554696977485450f,\n    -0.477641753219710470f,\n  0.878463094167957870f, -0.477810205191200990f, 0.878371459059853480f,\n    -0.477978639594976160f,\n  0.878279791656541580f, -0.478147056424843010f, 0.878188091961392250f,\n    -0.478315455674609480f,\n  0.878096359977777130f, -0.478483837338083970f, 0.878004595709069080f,\n    -0.478652201409075500f,\n  0.877912799158641840f, -0.478820547881393890f, 0.877820970329870500f,\n    -0.478988876748849490f,\n  0.877729109226131570f, -0.479157188005253310f, 0.877637215850802230f,\n    -0.479325481644417070f,\n  0.877545290207261350f, -0.479493757660153010f, 0.877453332298888560f,\n    -0.479662016046274180f,\n  0.877361342129065140f, -0.479830256796594190f, 0.877269319701173170f,\n    -0.479998479904927280f,\n  0.877177265018595940f, -0.480166685365088390f, 0.877085178084718420f,\n    -0.480334873170893020f,\n  0.876993058902925890f, -0.480503043316157510f, 0.876900907476605650f,\n    -0.480671195794698640f,\n  0.876808723809145650f, -0.480839330600333960f, 0.876716507903935400f,\n    -0.481007447726881590f,\n  0.876624259764365310f, -0.481175547168160300f, 0.876531979393827100f,\n    -0.481343628917989710f,\n  0.876439666795713610f, -0.481511692970189860f, 0.876347321973419020f,\n    -0.481679739318581490f,\n  0.876254944930338510f, -0.481847767956986030f, 0.876162535669868460f,\n    -0.482015778879225590f,\n  0.876070094195406600f, -0.482183772079122720f, 0.875977620510351770f,\n    -0.482351747550500980f,\n  0.875885114618103810f, -0.482519705287184350f, 0.875792576522063880f,\n    -0.482687645282997460f,\n  0.875700006225634600f, -0.482855567531765670f, 0.875607403732219350f,\n    -0.483023472027314880f,\n  0.875514769045222850f, -0.483191358763471860f, 0.875422102168050940f,\n    -0.483359227734063810f,\n  0.875329403104110890f, -0.483527078932918740f, 0.875236671856810870f,\n    -0.483694912353865140f,\n  0.875143908429560360f, -0.483862727990732270f, 0.875051112825769970f,\n    -0.484030525837350010f,\n  0.874958285048851650f, -0.484198305887549030f, 0.874865425102218320f,\n    -0.484366068135160420f,\n  0.874772532989284150f, -0.484533812574016180f, 0.874679608713464510f,\n    -0.484701539197948670f,\n  0.874586652278176110f, -0.484869248000791060f, 0.874493663686836560f,\n    -0.485036938976377290f,\n  0.874400642942864790f, -0.485204612118541820f, 0.874307590049680950f,\n    -0.485372267421119770f,\n  0.874214505010706300f, -0.485539904877946960f, 0.874121387829363330f,\n    -0.485707524482859750f,\n  0.874028238509075740f, -0.485875126229695250f, 0.873935057053268240f,\n    -0.486042710112291330f,\n  0.873841843465366860f, -0.486210276124486420f, 0.873748597748798870f,\n    -0.486377824260119440f,\n  0.873655319906992630f, -0.486545354513030270f, 0.873562009943377850f,\n    -0.486712866877059170f,\n  0.873468667861384880f, -0.486880361346047340f, 0.873375293664446000f,\n    -0.487047837913836380f,\n  0.873281887355994210f, -0.487215296574268760f, 0.873188448939463790f,\n    -0.487382737321187360f,\n  0.873094978418290090f, -0.487550160148436000f, 0.873001475795909920f,\n    -0.487717565049858800f,\n  0.872907941075761080f, -0.487884952019301040f, 0.872814374261282390f,\n    -0.488052321050608250f,\n  0.872720775355914300f, -0.488219672137626790f, 0.872627144363097960f,\n    -0.488387005274203530f,\n  0.872533481286276170f, -0.488554320454186180f, 0.872439786128892280f,\n    -0.488721617671423080f,\n  0.872346058894391540f, -0.488888896919763170f, 0.872252299586219860f,\n    -0.489056158193056030f,\n  0.872158508207824480f, -0.489223401485151980f, 0.872064684762653860f,\n    -0.489390626789901920f,\n  0.871970829254157810f, -0.489557834101157440f, 0.871876941685786890f,\n    -0.489725023412770910f,\n  0.871783022060993120f, -0.489892194718595190f, 0.871689070383229740f,\n    -0.490059348012483850f,\n  0.871595086655950980f, -0.490226483288291160f, 0.871501070882612530f,\n    -0.490393600539871970f,\n  0.871407023066670950f, -0.490560699761082020f, 0.871312943211584030f,\n    -0.490727780945777400f,\n  0.871218831320811020f, -0.490894844087815090f, 0.871124687397811900f,\n    -0.491061889181052650f,\n  0.871030511446048260f, -0.491228916219348280f, 0.870936303468982760f,\n    -0.491395925196560780f,\n  0.870842063470078980f, -0.491562916106549900f, 0.870747791452801790f,\n    -0.491729888943175760f,\n  0.870653487420617430f, -0.491896843700299290f, 0.870559151376993250f,\n    -0.492063780371782000f,\n  0.870464783325397670f, -0.492230698951486020f, 0.870370383269300270f,\n    -0.492397599433274380f,\n  0.870275951212171940f, -0.492564481811010590f, 0.870181487157484560f,\n    -0.492731346078558840f,\n  0.870086991108711460f, -0.492898192229784040f, 0.869992463069326870f,\n    -0.493065020258551700f,\n  0.869897903042806340f, -0.493231830158727900f, 0.869803311032626650f,\n    -0.493398621924179770f,\n  0.869708687042265670f, -0.493565395548774770f, 0.869614031075202300f,\n    -0.493732151026381020f,\n  0.869519343134916860f, -0.493898888350867480f, 0.869424623224890890f,\n    -0.494065607516103570f,\n  0.869329871348606840f, -0.494232308515959670f, 0.869235087509548370f,\n    -0.494398991344306650f,\n  0.869140271711200560f, -0.494565655995015950f, 0.869045423957049530f,\n    -0.494732302461959870f,\n  0.868950544250582380f, -0.494898930739011260f, 0.868855632595287860f,\n    -0.495065540820043560f,\n  0.868760688994655310f, -0.495232132698931180f, 0.868665713452175690f,\n    -0.495398706369549020f,\n  0.868570705971340900f, -0.495565261825772540f, 0.868475666555644120f,\n    -0.495731799061477960f,\n  0.868380595208579800f, -0.495898318070542190f, 0.868285491933643350f,\n    -0.496064818846842890f,\n  0.868190356734331310f, -0.496231301384258250f, 0.868095189614141670f,\n    -0.496397765676667160f,\n  0.867999990576573510f, -0.496564211717949290f, 0.867904759625126920f,\n    -0.496730639501984760f,\n  0.867809496763303320f, -0.496897049022654470f, 0.867714201994605140f,\n    -0.497063440273840250f,\n  0.867618875322536230f, -0.497229813249424220f, 0.867523516750601460f,\n    -0.497396167943289280f,\n  0.867428126282306920f, -0.497562504349319150f, 0.867332703921159800f,\n    -0.497728822461397940f,\n  0.867237249670668400f, -0.497895122273410870f, 0.867141763534342470f,\n    -0.498061403779243410f,\n  0.867046245515692650f, -0.498227666972781870f, 0.866950695618230900f,\n    -0.498393911847913210f,\n  0.866855113845470430f, -0.498560138398525140f, 0.866759500200925400f,\n    -0.498726346618505900f,\n  0.866663854688111130f, -0.498892536501744590f, 0.866568177310544470f,\n    -0.499058708042130870f,\n  0.866472468071743050f, -0.499224861233555080f, 0.866376726975225830f,\n    -0.499390996069908170f,\n  0.866280954024512990f, -0.499557112545081840f, 0.866185149223125840f,\n    -0.499723210652968540f,\n  0.866089312574586770f, -0.499889290387461330f, 0.865993444082419520f,\n    -0.500055351742453860f,\n  0.865897543750148820f, -0.500221394711840680f, 0.865801611581300760f,\n    -0.500387419289516580f,\n  0.865705647579402380f, -0.500553425469377420f, 0.865609651747981990f,\n    -0.500719413245319880f,\n  0.865513624090569090f, -0.500885382611240710f, 0.865417564610694410f,\n    -0.501051333561038040f,\n  0.865321473311889800f, -0.501217266088609950f, 0.865225350197688200f,\n    -0.501383180187855770f,\n  0.865129195271623800f, -0.501549075852675390f, 0.865033008537231860f,\n    -0.501714953076969120f,\n  0.864936789998049020f, -0.501880811854638290f, 0.864840539657612870f,\n    -0.502046652179584660f,\n  0.864744257519462380f, -0.502212474045710790f, 0.864647943587137480f,\n    -0.502378277446919760f,\n  0.864551597864179340f, -0.502544062377115690f, 0.864455220354130360f,\n    -0.502709828830202990f,\n  0.864358811060534030f, -0.502875576800086990f, 0.864262369986934950f,\n    -0.503041306280673450f,\n  0.864165897136879300f, -0.503207017265868920f, 0.864069392513913790f,\n    -0.503372709749581040f,\n  0.863972856121586810f, -0.503538383725717580f, 0.863876287963447510f,\n    -0.503704039188187070f,\n  0.863779688043046720f, -0.503869676130898950f, 0.863683056363935830f,\n    -0.504035294547763190f,\n  0.863586392929668100f, -0.504200894432690340f, 0.863489697743797140f,\n    -0.504366475779592040f,\n  0.863392970809878420f, -0.504532038582380270f, 0.863296212131468230f,\n    -0.504697582834967570f,\n  0.863199421712124160f, -0.504863108531267590f, 0.863102599555404910f,\n    -0.505028615665194080f,\n  0.863005745664870320f, -0.505194104230662240f, 0.862908860044081400f,\n    -0.505359574221587280f,\n  0.862811942696600330f, -0.505525025631885390f, 0.862714993625990690f,\n    -0.505690458455473450f,\n  0.862618012835816740f, -0.505855872686268860f, 0.862521000329644520f,\n    -0.506021268318189720f,\n  0.862423956111040610f, -0.506186645345155230f, 0.862326880183573060f,\n    -0.506352003761084800f,\n  0.862229772550811240f, -0.506517343559898530f, 0.862132633216325380f,\n    -0.506682664735517600f,\n  0.862035462183687210f, -0.506847967281863210f, 0.861938259456469290f,\n    -0.507013251192858230f,\n  0.861841025038245330f, -0.507178516462425180f, 0.861743758932590700f,\n    -0.507343763084487920f,\n  0.861646461143081300f, -0.507508991052970870f, 0.861549131673294720f,\n    -0.507674200361798890f,\n  0.861451770526809320f, -0.507839391004897720f, 0.861354377707204910f,\n    -0.508004562976194010f,\n  0.861256953218062170f, -0.508169716269614600f, 0.861159497062963350f,\n    -0.508334850879087360f,\n  0.861062009245491480f, -0.508499966798540930f, 0.860964489769231010f,\n    -0.508665064021904030f,\n  0.860866938637767310f, -0.508830142543106990f, 0.860769355854687170f,\n    -0.508995202356080090f,\n  0.860671741423578380f, -0.509160243454754640f, 0.860574095348029980f,\n    -0.509325265833062480f,\n  0.860476417631632070f, -0.509490269484936360f, 0.860378708277976130f,\n    -0.509655254404309250f,\n  0.860280967290654510f, -0.509820220585115450f, 0.860183194673260990f,\n    -0.509985168021289460f,\n  0.860085390429390140f, -0.510150096706766810f, 0.859987554562638200f,\n    -0.510315006635483240f,\n  0.859889687076602290f, -0.510479897801375700f, 0.859791787974880650f,\n    -0.510644770198381610f,\n  0.859693857261072610f, -0.510809623820439040f, 0.859595894938779080f,\n    -0.510974458661486830f,\n  0.859497901011601730f, -0.511139274715464390f, 0.859399875483143450f,\n    -0.511304071976312000f,\n  0.859301818357008470f, -0.511468850437970300f, 0.859203729636801920f,\n    -0.511633610094381240f,\n  0.859105609326130450f, -0.511798350939486890f, 0.859007457428601520f,\n    -0.511963072967230200f,\n  0.858909273947823900f, -0.512127776171554690f, 0.858811058887407610f,\n    -0.512292460546404870f,\n  0.858712812250963520f, -0.512457126085725690f, 0.858614534042104190f,\n    -0.512621772783462990f,\n  0.858516224264442740f, -0.512786400633562960f, 0.858417882921593930f,\n    -0.512951009629972980f,\n  0.858319510017173440f, -0.513115599766640560f, 0.858221105554798250f,\n    -0.513280171037514220f,\n  0.858122669538086140f, -0.513444723436543460f, 0.858024201970656540f,\n    -0.513609256957677780f,\n  0.857925702856129790f, -0.513773771594868030f, 0.857827172198127430f,\n    -0.513938267342065380f,\n  0.857728610000272120f, -0.514102744193221660f, 0.857630016266187620f,\n    -0.514267202142289710f,\n  0.857531390999499150f, -0.514431641183222820f, 0.857432734203832700f,\n    -0.514596061309975040f,\n  0.857334045882815590f, -0.514760462516501200f, 0.857235326040076460f,\n    -0.514924844796756490f,\n  0.857136574679244980f, -0.515089208144697160f, 0.857037791803951680f,\n    -0.515253552554280180f,\n  0.856938977417828760f, -0.515417878019462930f, 0.856840131524509220f,\n    -0.515582184534203790f,\n  0.856741254127627470f, -0.515746472092461380f, 0.856642345230818840f,\n    -0.515910740688195650f,\n  0.856543404837719960f, -0.516074990315366630f, 0.856444432951968590f,\n    -0.516239220967935510f,\n  0.856345429577203610f, -0.516403432639863990f, 0.856246394717065210f,\n    -0.516567625325114350f,\n  0.856147328375194470f, -0.516731799017649870f, 0.856048230555233940f,\n    -0.516895953711434150f,\n  0.855949101260826910f, -0.517060089400431910f, 0.855849940495618240f,\n    -0.517224206078608310f,\n  0.855750748263253920f, -0.517388303739929060f, 0.855651524567380690f,\n    -0.517552382378360880f,\n  0.855552269411646860f, -0.517716441987871150f, 0.855452982799701830f,\n    -0.517880482562427690f,\n  0.855353664735196030f, -0.518044504095999340f, 0.855254315221780970f,\n    -0.518208506582555460f,\n  0.855154934263109620f, -0.518372490016066110f, 0.855055521862835950f,\n    -0.518536454390502220f,\n  0.854956078024614930f, -0.518700399699834950f, 0.854856602752102850f,\n    -0.518864325938036890f,\n  0.854757096048957220f, -0.519028233099080860f, 0.854657557918836460f,\n    -0.519192121176940250f,\n  0.854557988365400530f, -0.519355990165589640f, 0.854458387392310170f,\n    -0.519519840059003760f,\n  0.854358755003227440f, -0.519683670851158410f, 0.854259091201815530f,\n    -0.519847482536030190f,\n  0.854159395991738850f, -0.520011275107596040f, 0.854059669376662780f,\n    -0.520175048559833760f,\n  0.853959911360254180f, -0.520338802886721960f, 0.853860121946180770f,\n    -0.520502538082239670f,\n  0.853760301138111410f, -0.520666254140367160f, 0.853660448939716380f,\n    -0.520829951055084670f,\n  0.853560565354666840f, -0.520993628820373920f, 0.853460650386635320f,\n    -0.521157287430216610f,\n  0.853360704039295430f, -0.521320926878595660f, 0.853260726316321880f,\n    -0.521484547159494330f,\n  0.853160717221390420f, -0.521648148266897090f, 0.853060676758178320f,\n    -0.521811730194788550f,\n  0.852960604930363630f, -0.521975292937154390f, 0.852860501741625750f,\n    -0.522138836487980760f,\n  0.852760367195645300f, -0.522302360841254590f, 0.852660201296103760f,\n    -0.522465865990963780f,\n  0.852560004046684080f, -0.522629351931096610f, 0.852459775451070100f,\n    -0.522792818655642090f,\n  0.852359515512947090f, -0.522956266158590140f, 0.852259224236001090f,\n    -0.523119694433931250f,\n  0.852158901623919830f, -0.523283103475656430f, 0.852058547680391690f,\n    -0.523446493277757830f,\n  0.851958162409106380f, -0.523609863834227920f, 0.851857745813754840f,\n    -0.523773215139060170f,\n  0.851757297898029120f, -0.523936547186248600f, 0.851656818665622370f,\n    -0.524099859969787700f,\n  0.851556308120228980f, -0.524263153483673360f, 0.851455766265544310f,\n    -0.524426427721901400f,\n  0.851355193105265200f, -0.524589682678468950f, 0.851254588643089120f,\n    -0.524752918347373360f,\n  0.851153952882715340f, -0.524916134722613000f, 0.851053285827843790f,\n    -0.525079331798186780f,\n  0.850952587482175730f, -0.525242509568094710f, 0.850851857849413530f,\n    -0.525405668026336930f,\n  0.850751096933260790f, -0.525568807166914680f, 0.850650304737422090f,\n    -0.525731926983829760f,\n  0.850549481265603480f, -0.525895027471084630f, 0.850448626521511760f,\n    -0.526058108622682760f,\n  0.850347740508854980f, -0.526221170432628060f, 0.850246823231342710f,\n    -0.526384212894925100f,\n  0.850145874692685210f, -0.526547236003579440f, 0.850044894896594180f,\n    -0.526710239752597010f,\n  0.849943883846782210f, -0.526873224135984590f, 0.849842841546963320f,\n    -0.527036189147750080f,\n  0.849741768000852550f, -0.527199134781901280f, 0.849640663212165910f,\n    -0.527362061032447540f,\n  0.849539527184620890f, -0.527524967893398200f, 0.849438359921936060f,\n    -0.527687855358763720f,\n  0.849337161427830780f, -0.527850723422555230f, 0.849235931706025960f,\n    -0.528013572078784630f,\n  0.849134670760243630f, -0.528176401321464370f, 0.849033378594206800f,\n    -0.528339211144607690f,\n  0.848932055211639610f, -0.528502001542228480f, 0.848830700616267530f,\n    -0.528664772508341320f,\n  0.848729314811817130f, -0.528827524036961870f, 0.848627897802015860f,\n    -0.528990256122106040f,\n  0.848526449590592650f, -0.529152968757790610f, 0.848424970181277600f,\n    -0.529315661938033260f,\n  0.848323459577801640f, -0.529478335656851980f, 0.848221917783896990f,\n    -0.529640989908265910f,\n  0.848120344803297230f, -0.529803624686294610f, 0.848018740639736810f,\n    -0.529966239984958620f,\n  0.847917105296951410f, -0.530128835798278960f, 0.847815438778677930f,\n    -0.530291412120277310f,\n  0.847713741088654380f, -0.530453968944976320f, 0.847612012230619660f,\n    -0.530616506266399330f,\n  0.847510252208314330f, -0.530779024078570140f, 0.847408461025479730f,\n    -0.530941522375513620f,\n  0.847306638685858320f, -0.531104001151255000f, 0.847204785193194090f,\n    -0.531266460399820390f,\n  0.847102900551231500f, -0.531428900115236800f, 0.847000984763716880f,\n    -0.531591320291531670f,\n  0.846899037834397240f, -0.531753720922733320f, 0.846797059767020910f,\n    -0.531916102002870650f,\n  0.846695050565337450f, -0.532078463525973540f, 0.846593010233097190f,\n    -0.532240805486072220f,\n  0.846490938774052130f, -0.532403127877197900f, 0.846388836191954930f,\n    -0.532565430693382580f,\n  0.846286702490559710f, -0.532727713928658810f, 0.846184537673621560f,\n    -0.532889977577059800f,\n  0.846082341744897050f, -0.533052221632619450f, 0.845980114708143270f,\n    -0.533214446089372960f,\n  0.845877856567119000f, -0.533376650941355330f, 0.845775567325584010f,\n    -0.533538836182603120f,\n  0.845673246987299070f, -0.533701001807152960f, 0.845570895556026270f,\n    -0.533863147809042650f,\n  0.845468513035528830f, -0.534025274182310380f, 0.845366099429570970f,\n    -0.534187380920995380f,\n  0.845263654741918220f, -0.534349468019137520f, 0.845161178976337140f,\n    -0.534511535470777120f,\n  0.845058672136595470f, -0.534673583269955510f, 0.844956134226462210f,\n    -0.534835611410714560f,\n  0.844853565249707120f, -0.534997619887097150f, 0.844750965210101510f,\n    -0.535159608693146600f,\n  0.844648334111417820f, -0.535321577822907120f, 0.844545671957429240f,\n    -0.535483527270423370f,\n  0.844442978751910660f, -0.535645457029741090f, 0.844340254498637590f,\n    -0.535807367094906390f,\n  0.844237499201387020f, -0.535969257459966710f, 0.844134712863936930f,\n    -0.536131128118969460f,\n  0.844031895490066410f, -0.536292979065963180f, 0.843929047083555870f,\n    -0.536454810294997090f,\n  0.843826167648186740f, -0.536616621800121040f, 0.843723257187741660f,\n    -0.536778413575385920f,\n  0.843620315706004150f, -0.536940185614842910f, 0.843517343206759200f,\n    -0.537101937912544130f,\n  0.843414339693792760f, -0.537263670462542530f, 0.843311305170892140f,\n    -0.537425383258891550f,\n  0.843208239641845440f, -0.537587076295645390f, 0.843105143110442160f,\n    -0.537748749566859360f,\n  0.843002015580472940f, -0.537910403066588880f, 0.842898857055729310f,\n    -0.538072036788890600f,\n  0.842795667540004120f, -0.538233650727821700f, 0.842692447037091670f,\n    -0.538395244877439950f,\n  0.842589195550786710f, -0.538556819231804100f, 0.842485913084885630f,\n    -0.538718373784973560f,\n  0.842382599643185850f, -0.538879908531008420f, 0.842279255229485990f,\n    -0.539041423463969440f,\n  0.842175879847585570f, -0.539202918577918240f, 0.842072473501285560f,\n    -0.539364393866917040f,\n  0.841969036194387680f, -0.539525849325028890f, 0.841865567930695340f,\n    -0.539687284946317570f,\n  0.841762068714012490f, -0.539848700724847590f, 0.841658538548144760f,\n    -0.540010096654684020f,\n  0.841554977436898440f, -0.540171472729892850f, 0.841451385384081260f,\n    -0.540332828944540710f,\n  0.841347762393501950f, -0.540494165292695230f, 0.841244108468970580f,\n    -0.540655481768424150f,\n  0.841140423614298080f, -0.540816778365796670f, 0.841036707833296650f,\n    -0.540978055078882080f,\n  0.840932961129779780f, -0.541139311901750800f, 0.840829183507561640f,\n    -0.541300548828474120f,\n  0.840725374970458070f, -0.541461765853123440f, 0.840621535522285690f,\n    -0.541622962969771530f,\n  0.840517665166862550f, -0.541784140172491550f, 0.840413763908007480f,\n    -0.541945297455357360f,\n  0.840309831749540770f, -0.542106434812443920f, 0.840205868695283580f,\n    -0.542267552237826520f,\n  0.840101874749058400f, -0.542428649725581250f, 0.839997849914688840f,\n    -0.542589727269785270f,\n  0.839893794195999520f, -0.542750784864515890f, 0.839789707596816370f,\n    -0.542911822503851730f,\n  0.839685590120966110f, -0.543072840181871740f, 0.839581441772277120f,\n    -0.543233837892655890f,\n  0.839477262554578550f, -0.543394815630284800f, 0.839373052471700690f,\n    -0.543555773388839540f,\n  0.839268811527475230f, -0.543716711162402280f, 0.839164539725734680f,\n    -0.543877628945055980f,\n  0.839060237070312740f, -0.544038526730883820f, 0.838955903565044460f,\n    -0.544199404513970310f,\n  0.838851539213765760f, -0.544360262288400400f, 0.838747144020313920f,\n    -0.544521100048259600f,\n  0.838642717988527300f, -0.544681917787634530f, 0.838538261122245280f,\n    -0.544842715500612360f,\n  0.838433773425308340f, -0.545003493181281160f, 0.838329254901558300f,\n    -0.545164250823729320f,\n  0.838224705554838080f, -0.545324988422046460f, 0.838120125388991500f,\n    -0.545485705970322530f,\n  0.838015514407863820f, -0.545646403462648590f, 0.837910872615301170f,\n    -0.545807080893116140f,\n  0.837806200015150940f, -0.545967738255817570f, 0.837701496611261700f,\n    -0.546128375544845950f,\n  0.837596762407483040f, -0.546288992754295210f, 0.837491997407665890f,\n    -0.546449589878259650f,\n  0.837387201615661940f, -0.546610166910834860f, 0.837282375035324320f,\n    -0.546770723846116800f,\n  0.837177517670507300f, -0.546931260678202190f, 0.837072629525066000f,\n    -0.547091777401188530f,\n  0.836967710602857020f, -0.547252274009174090f, 0.836862760907737920f,\n    -0.547412750496257930f,\n  0.836757780443567190f, -0.547573206856539760f, 0.836652769214204950f,\n    -0.547733643084120090f,\n  0.836547727223512010f, -0.547894059173100190f, 0.836442654475350380f,\n    -0.548054455117581880f,\n  0.836337550973583530f, -0.548214830911667780f, 0.836232416722075600f,\n    -0.548375186549461600f,\n  0.836127251724692270f, -0.548535522025067390f, 0.836022055985299880f,\n    -0.548695837332590090f,\n  0.835916829507766360f, -0.548856132466135290f, 0.835811572295960700f,\n    -0.549016407419809390f,\n  0.835706284353752600f, -0.549176662187719660f, 0.835600965685013410f,\n    -0.549336896763974010f,\n  0.835495616293615350f, -0.549497111142680960f, 0.835390236183431890f,\n    -0.549657305317949870f,\n  0.835284825358337370f, -0.549817479283890910f, 0.835179383822207690f,\n    -0.549977633034614890f,\n  0.835073911578919410f, -0.550137766564233630f, 0.834968408632350450f,\n    -0.550297879866859190f,\n  0.834862874986380010f, -0.550457972936604810f, 0.834757310644888230f,\n    -0.550618045767584330f,\n  0.834651715611756440f, -0.550778098353912120f, 0.834546089890866870f,\n    -0.550938130689703880f,\n  0.834440433486103190f, -0.551098142769075430f, 0.834334746401350080f,\n    -0.551258134586143590f,\n  0.834229028640493420f, -0.551418106135026060f, 0.834123280207420100f,\n    -0.551578057409841000f,\n  0.834017501106018130f, -0.551737988404707340f, 0.833911691340176840f,\n    -0.551897899113745210f,\n  0.833805850913786340f, -0.552057789531074980f, 0.833699979830738290f,\n    -0.552217659650817930f,\n  0.833594078094925140f, -0.552377509467096070f, 0.833488145710240770f,\n    -0.552537338974032120f,\n  0.833382182680579730f, -0.552697148165749770f, 0.833276189009838240f,\n    -0.552856937036373290f,\n  0.833170164701913190f, -0.553016705580027470f, 0.833064109760702890f,\n    -0.553176453790838350f,\n  0.832958024190106670f, -0.553336181662932300f, 0.832851907994025090f,\n    -0.553495889190436570f,\n  0.832745761176359460f, -0.553655576367479310f, 0.832639583741012770f,\n    -0.553815243188189090f,\n  0.832533375691888680f, -0.553974889646695500f, 0.832427137032892280f,\n    -0.554134515737128910f,\n  0.832320867767929680f, -0.554294121453620000f, 0.832214567900907980f,\n    -0.554453706790300930f,\n  0.832108237435735590f, -0.554613271741304040f, 0.832001876376321950f,\n    -0.554772816300762470f,\n  0.831895484726577590f, -0.554932340462810370f, 0.831789062490414400f,\n    -0.555091844221582420f,\n  0.831682609671745120f, -0.555251327571213980f, 0.831576126274483740f,\n    -0.555410790505841630f,\n  0.831469612302545240f, -0.555570233019602180f, 0.831363067759845920f,\n    -0.555729655106633410f,\n  0.831256492650303210f, -0.555889056761073810f, 0.831149886977835540f,\n    -0.556048437977062600f,\n  0.831043250746362320f, -0.556207798748739930f, 0.830936583959804410f,\n    -0.556367139070246370f,\n  0.830829886622083570f, -0.556526458935723610f, 0.830723158737122880f,\n    -0.556685758339313890f,\n  0.830616400308846310f, -0.556845037275160100f, 0.830509611341179070f,\n    -0.557004295737405950f,\n  0.830402791838047550f, -0.557163533720196220f, 0.830295941803379070f,\n    -0.557322751217676160f,\n  0.830189061241102370f, -0.557481948223991550f, 0.830082150155146970f,\n    -0.557641124733289420f,\n  0.829975208549443950f, -0.557800280739716990f, 0.829868236427924840f,\n    -0.557959416237422960f,\n  0.829761233794523050f, -0.558118531220556100f, 0.829654200653172640f,\n    -0.558277625683266330f,\n  0.829547137007808910f, -0.558436699619704100f, 0.829440042862368170f,\n    -0.558595753024020760f,\n  0.829332918220788250f, -0.558754785890368310f, 0.829225763087007570f,\n    -0.558913798212899770f,\n  0.829118577464965980f, -0.559072789985768480f, 0.829011361358604430f,\n    -0.559231761203128900f,\n  0.828904114771864870f, -0.559390711859136140f, 0.828796837708690610f,\n    -0.559549641947945760f,\n  0.828689530173025820f, -0.559708551463714680f, 0.828582192168815790f,\n    -0.559867440400600210f,\n  0.828474823700007130f, -0.560026308752760380f, 0.828367424770547480f,\n    -0.560185156514354080f,\n  0.828259995384385660f, -0.560343983679540860f, 0.828152535545471410f,\n    -0.560502790242481060f,\n  0.828045045257755800f, -0.560661576197336030f, 0.827937524525190870f,\n    -0.560820341538267430f,\n  0.827829973351729920f, -0.560979086259438150f, 0.827722391741327220f,\n    -0.561137810355011420f,\n  0.827614779697938400f, -0.561296513819151470f, 0.827507137225519830f,\n    -0.561455196646023280f,\n  0.827399464328029470f, -0.561613858829792420f, 0.827291761009425810f,\n    -0.561772500364625340f,\n  0.827184027273669130f, -0.561931121244689470f, 0.827076263124720270f,\n    -0.562089721464152480f,\n  0.826968468566541600f, -0.562248301017183150f, 0.826860643603096190f,\n    -0.562406859897951140f,\n  0.826752788238348520f, -0.562565398100626560f, 0.826644902476264320f,\n    -0.562723915619380400f,\n  0.826536986320809960f, -0.562882412448384440f, 0.826429039775953500f,\n    -0.563040888581811230f,\n  0.826321062845663530f, -0.563199344013834090f, 0.826213055533910220f,\n    -0.563357778738627020f,\n  0.826105017844664610f, -0.563516192750364800f, 0.825996949781899080f,\n    -0.563674586043223070f,\n  0.825888851349586780f, -0.563832958611378170f, 0.825780722551702430f,\n    -0.563991310449006970f,\n  0.825672563392221390f, -0.564149641550287680f, 0.825564373875120490f,\n    -0.564307951909398640f,\n  0.825456154004377550f, -0.564466241520519500f, 0.825347903783971380f,\n    -0.564624510377830120f,\n  0.825239623217882250f, -0.564782758475511400f, 0.825131312310091070f,\n    -0.564940985807745210f,\n  0.825022971064580220f, -0.565099192368713980f, 0.824914599485333190f,\n    -0.565257378152600800f,\n  0.824806197576334330f, -0.565415543153589660f, 0.824697765341569470f,\n    -0.565573687365865330f,\n  0.824589302785025290f, -0.565731810783613120f, 0.824480809910689500f,\n    -0.565889913401019570f,\n  0.824372286722551250f, -0.566047995212271450f, 0.824263733224600560f,\n    -0.566206056211556730f,\n  0.824155149420828570f, -0.566364096393063840f, 0.824046535315227760f,\n    -0.566522115750982100f,\n  0.823937890911791370f, -0.566680114279501600f, 0.823829216214513990f,\n    -0.566838091972813320f,\n  0.823720511227391430f, -0.566996048825108680f, 0.823611775954420260f,\n    -0.567153984830580100f,\n  0.823503010399598500f, -0.567311899983420800f, 0.823394214566925080f,\n    -0.567469794277824510f,\n  0.823285388460400110f, -0.567627667707986230f, 0.823176532084024860f,\n    -0.567785520268101140f,\n  0.823067645441801670f, -0.567943351952365560f, 0.822958728537734000f,\n    -0.568101162754976460f,\n  0.822849781375826430f, -0.568258952670131490f, 0.822740803960084420f,\n    -0.568416721692029280f,\n  0.822631796294514990f, -0.568574469814869140f, 0.822522758383125940f,\n    -0.568732197032851050f,\n  0.822413690229926390f, -0.568889903340175860f, 0.822304591838926350f,\n    -0.569047588731045110f,\n  0.822195463214137170f, -0.569205253199661200f, 0.822086304359571090f,\n    -0.569362896740227220f,\n  0.821977115279241550f, -0.569520519346947140f, 0.821867895977163250f,\n    -0.569678121014025600f,\n  0.821758646457351750f, -0.569835701735668000f, 0.821649366723823940f,\n    -0.569993261506080540f,\n  0.821540056780597610f, -0.570150800319470300f, 0.821430716631691870f,\n    -0.570308318170044900f,\n  0.821321346281126740f, -0.570465815052012990f, 0.821211945732923550f,\n    -0.570623290959583750f,\n  0.821102514991104650f, -0.570780745886967260f, 0.820993054059693580f,\n    -0.570938179828374360f,\n  0.820883562942714580f, -0.571095592778016690f, 0.820774041644193650f,\n    -0.571252984730106660f,\n  0.820664490168157460f, -0.571410355678857230f, 0.820554908518633890f,\n    -0.571567705618482580f,\n  0.820445296699652050f, -0.571725034543197120f, 0.820335654715241840f,\n    -0.571882342447216590f,\n  0.820225982569434690f, -0.572039629324757050f, 0.820116280266262820f,\n    -0.572196895170035580f,\n  0.820006547809759680f, -0.572354139977269920f, 0.819896785203959810f,\n    -0.572511363740678790f,\n  0.819786992452898990f, -0.572668566454481160f, 0.819677169560613870f,\n    -0.572825748112897550f,\n  0.819567316531142230f, -0.572982908710148560f, 0.819457433368523280f,\n    -0.573140048240455950f,\n  0.819347520076796900f, -0.573297166698042200f, 0.819237576660004520f,\n    -0.573454264077130400f,\n  0.819127603122188240f, -0.573611340371944610f, 0.819017599467391500f,\n    -0.573768395576709560f,\n  0.818907565699658950f, -0.573925429685650750f, 0.818797501823036010f,\n    -0.574082442692994470f,\n  0.818687407841569680f, -0.574239434592967890f, 0.818577283759307610f,\n    -0.574396405379798750f,\n  0.818467129580298660f, -0.574553355047715760f, 0.818356945308593150f,\n    -0.574710283590948330f,\n  0.818246730948242070f, -0.574867191003726740f, 0.818136486503297730f,\n    -0.575024077280281710f,\n  0.818026211977813440f, -0.575180942414845080f, 0.817915907375843850f,\n    -0.575337786401649450f,\n  0.817805572701444270f, -0.575494609234928120f, 0.817695207958671680f,\n    -0.575651410908915140f,\n  0.817584813151583710f, -0.575808191417845340f, 0.817474388284239240f,\n    -0.575964950755954220f,\n  0.817363933360698460f, -0.576121688917478280f, 0.817253448385022340f,\n    -0.576278405896654910f,\n  0.817142933361272970f, -0.576435101687721830f, 0.817032388293513880f,\n    -0.576591776284917760f,\n  0.816921813185809480f, -0.576748429682482410f, 0.816811208042225290f,\n    -0.576905061874655960f,\n  0.816700572866827850f, -0.577061672855679440f, 0.816589907663684890f,\n    -0.577218262619794920f,\n  0.816479212436865390f, -0.577374831161244880f, 0.816368487190439200f,\n    -0.577531378474272720f,\n  0.816257731928477390f, -0.577687904553122800f, 0.816146946655052270f,\n    -0.577844409392039850f,\n  0.816036131374236810f, -0.578000892985269910f, 0.815925286090105510f,\n    -0.578157355327059360f,\n  0.815814410806733780f, -0.578313796411655590f, 0.815703505528198260f,\n    -0.578470216233306630f,\n  0.815592570258576790f, -0.578626614786261430f, 0.815481605001947770f,\n    -0.578782992064769690f,\n  0.815370609762391290f, -0.578939348063081780f, 0.815259584543988280f,\n    -0.579095682775449090f,\n  0.815148529350820830f, -0.579251996196123550f, 0.815037444186972220f,\n    -0.579408288319357870f,\n  0.814926329056526620f, -0.579564559139405630f, 0.814815183963569440f,\n    -0.579720808650521450f,\n  0.814704008912187080f, -0.579877036846960350f, 0.814592803906467270f,\n    -0.580033243722978150f,\n  0.814481568950498610f, -0.580189429272831680f, 0.814370304048371070f,\n    -0.580345593490778300f,\n  0.814259009204175270f, -0.580501736371076490f, 0.814147684422003360f,\n    -0.580657857907985300f,\n  0.814036329705948410f, -0.580813958095764530f, 0.813924945060104600f,\n    -0.580970036928674770f,\n  0.813813530488567190f, -0.581126094400977620f, 0.813702085995432700f,\n    -0.581282130506935000f,\n  0.813590611584798510f, -0.581438145240810170f, 0.813479107260763220f,\n    -0.581594138596866930f,\n  0.813367573027426570f, -0.581750110569369650f, 0.813256008888889380f,\n    -0.581906061152583810f,\n  0.813144414849253590f, -0.582061990340775440f, 0.813032790912622040f,\n    -0.582217898128211670f,\n  0.812921137083098770f, -0.582373784509160110f, 0.812809453364789270f,\n    -0.582529649477889320f,\n  0.812697739761799490f, -0.582685493028668460f, 0.812585996278237130f,\n    -0.582841315155767650f,\n  0.812474222918210480f, -0.582997115853457700f, 0.812362419685829230f,\n    -0.583152895116010430f,\n  0.812250586585203880f, -0.583308652937698290f, 0.812138723620446480f,\n    -0.583464389312794320f,\n  0.812026830795669730f, -0.583620104235572760f, 0.811914908114987790f,\n    -0.583775797700308070f,\n  0.811802955582515470f, -0.583931469701276180f, 0.811690973202369050f,\n    -0.584087120232753440f,\n  0.811578960978665890f, -0.584242749289016980f, 0.811466918915524250f,\n    -0.584398356864344600f,\n  0.811354847017063730f, -0.584553942953015330f, 0.811242745287404810f,\n    -0.584709507549308390f,\n  0.811130613730669190f, -0.584865050647504490f, 0.811018452350979470f,\n    -0.585020572241884530f,\n  0.810906261152459670f, -0.585176072326730410f, 0.810794040139234730f,\n    -0.585331550896324940f,\n  0.810681789315430780f, -0.585487007944951340f, 0.810569508685174630f,\n    -0.585642443466894420f,\n  0.810457198252594770f, -0.585797857456438860f, 0.810344858021820550f,\n    -0.585953249907870570f,\n  0.810232487996982330f, -0.586108620815476430f, 0.810120088182211600f,\n    -0.586263970173543590f,\n  0.810007658581641140f, -0.586419297976360500f, 0.809895199199404450f,\n    -0.586574604218216170f,\n  0.809782710039636530f, -0.586729888893400390f, 0.809670191106473090f,\n    -0.586885151996203950f,\n  0.809557642404051260f, -0.587040393520917970f, 0.809445063936509170f,\n    -0.587195613461834800f,\n  0.809332455707985950f, -0.587350811813247660f, 0.809219817722621750f,\n    -0.587505988569450020f,\n  0.809107149984558240f, -0.587661143724736660f, 0.808994452497937670f,\n    -0.587816277273402910f,\n  0.808881725266903610f, -0.587971389209745010f, 0.808768968295600850f,\n    -0.588126479528059850f,\n  0.808656181588174980f, -0.588281548222645220f, 0.808543365148773010f,\n    -0.588436595287799790f,\n  0.808430518981542720f, -0.588591620717822890f, 0.808317643090633250f,\n    -0.588746624507014540f,\n  0.808204737480194720f, -0.588901606649675720f, 0.808091802154378370f,\n    -0.589056567140108460f,\n  0.807978837117336310f, -0.589211505972614960f, 0.807865842373222120f,\n    -0.589366423141498790f,\n  0.807752817926190360f, -0.589521318641063940f, 0.807639763780396480f,\n    -0.589676192465615420f,\n  0.807526679939997160f, -0.589831044609458790f, 0.807413566409150190f,\n    -0.589985875066900920f,\n  0.807300423192014450f, -0.590140683832248820f, 0.807187250292749960f,\n    -0.590295470899810830f,\n  0.807074047715517610f, -0.590450236263895810f, 0.806960815464479730f,\n    -0.590604979918813330f,\n  0.806847553543799330f, -0.590759701858874160f, 0.806734261957640860f,\n    -0.590914402078389520f,\n  0.806620940710169650f, -0.591069080571671400f, 0.806507589805552260f,\n    -0.591223737333032910f,\n  0.806394209247956240f, -0.591378372356787580f, 0.806280799041550480f,\n    -0.591532985637249990f,\n  0.806167359190504420f, -0.591687577168735430f, 0.806053889698989060f,\n    -0.591842146945560140f,\n  0.805940390571176280f, -0.591996694962040990f, 0.805826861811239300f,\n    -0.592151221212495530f,\n  0.805713303423352230f, -0.592305725691242290f, 0.805599715411690060f,\n    -0.592460208392600830f,\n  0.805486097780429230f, -0.592614669310891130f, 0.805372450533747060f,\n    -0.592769108440434070f,\n  0.805258773675822210f, -0.592923525775551300f, 0.805145067210834230f,\n    -0.593077921310565470f,\n  0.805031331142963660f, -0.593232295039799800f, 0.804917565476392260f,\n    -0.593386646957578480f,\n  0.804803770215302920f, -0.593540977058226390f, 0.804689945363879500f,\n    -0.593695285336069190f,\n  0.804576090926307110f, -0.593849571785433630f, 0.804462206906771840f,\n    -0.594003836400646690f,\n  0.804348293309460780f, -0.594158079176036800f, 0.804234350138562260f,\n    -0.594312300105932830f,\n  0.804120377398265810f, -0.594466499184664430f, 0.804006375092761520f,\n    -0.594620676406562240f,\n  0.803892343226241260f, -0.594774831765957580f, 0.803778281802897570f,\n    -0.594928965257182420f,\n  0.803664190826924090f, -0.595083076874569960f, 0.803550070302515680f,\n    -0.595237166612453850f,\n  0.803435920233868120f, -0.595391234465168730f, 0.803321740625178580f,\n    -0.595545280427049790f,\n  0.803207531480644940f, -0.595699304492433360f, 0.803093292804466400f,\n    -0.595853306655656280f,\n  0.802979024600843250f, -0.596007286911056530f, 0.802864726873976700f,\n    -0.596161245252972540f,\n  0.802750399628069160f, -0.596315181675743710f, 0.802636042867324150f,\n    -0.596469096173710360f,\n  0.802521656595946430f, -0.596622988741213220f, 0.802407240818141300f,\n    -0.596776859372594390f,\n  0.802292795538115720f, -0.596930708062196500f, 0.802178320760077450f,\n    -0.597084534804362740f,\n  0.802063816488235440f, -0.597238339593437420f, 0.801949282726799770f,\n    -0.597392122423765710f,\n  0.801834719479981310f, -0.597545883289693160f, 0.801720126751992330f,\n    -0.597699622185566830f,\n  0.801605504547046150f, -0.597853339105733910f, 0.801490852869356950f,\n    -0.598007034044542700f,\n  0.801376171723140240f, -0.598160706996342270f, 0.801261461112612540f,\n    -0.598314357955482600f,\n  0.801146721041991360f, -0.598467986916314310f, 0.801031951515495330f,\n    -0.598621593873188920f,\n  0.800917152537344300f, -0.598775178820458720f, 0.800802324111759110f,\n    -0.598928741752476900f,\n  0.800687466242961610f, -0.599082282663597310f, 0.800572578935174860f,\n    -0.599235801548174570f,\n  0.800457662192622820f, -0.599389298400564540f, 0.800342716019530660f,\n    -0.599542773215123390f,\n  0.800227740420124790f, -0.599696225986208310f, 0.800112735398632370f,\n    -0.599849656708177250f,\n  0.799997700959281910f, -0.600003065375388940f, 0.799882637106302810f,\n    -0.600156451982203240f,\n  0.799767543843925680f, -0.600309816522980430f, 0.799652421176382240f,\n    -0.600463158992081580f,\n  0.799537269107905010f, -0.600616479383868970f, 0.799422087642728040f,\n    -0.600769777692705230f,\n  0.799306876785086160f, -0.600923053912954090f, 0.799191636539215210f,\n    -0.601076308038980160f,\n  0.799076366909352350f, -0.601229540065148500f, 0.798961067899735760f,\n    -0.601382749985825420f,\n  0.798845739514604580f, -0.601535937795377730f, 0.798730381758199210f,\n    -0.601689103488172950f,\n  0.798614994634760820f, -0.601842247058580030f, 0.798499578148532120f,\n    -0.601995368500968020f,\n  0.798384132303756380f, -0.602148467809707210f, 0.798268657104678430f,\n    -0.602301544979168550f,\n  0.798153152555543750f, -0.602454600003723750f, 0.798037618660599410f,\n    -0.602607632877745440f,\n  0.797922055424093000f, -0.602760643595607220f, 0.797806462850273570f,\n    -0.602913632151683030f,\n  0.797690840943391160f, -0.603066598540348160f, 0.797575189707696700f,\n    -0.603219542755978440f,\n  0.797459509147442460f, -0.603372464792950260f, 0.797343799266881700f,\n    -0.603525364645641550f,\n  0.797228060070268700f, -0.603678242308430370f, 0.797112291561858920f,\n    -0.603831097775695880f,\n  0.796996493745908750f, -0.603983931041818020f, 0.796880666626675780f,\n    -0.604136742101177520f,\n  0.796764810208418830f, -0.604289530948155960f, 0.796648924495397260f,\n    -0.604442297577135860f,\n  0.796533009491872000f, -0.604595041982500360f, 0.796417065202104980f,\n    -0.604747764158633410f,\n  0.796301091630359110f, -0.604900464099919820f, 0.796185088780898440f,\n    -0.605053141800745320f,\n  0.796069056657987990f, -0.605205797255496500f, 0.795952995265893910f,\n    -0.605358430458560530f,\n  0.795836904608883570f, -0.605511041404325550f, 0.795720784691225090f,\n    -0.605663630087180380f,\n  0.795604635517188070f, -0.605816196501514970f, 0.795488457091042990f,\n    -0.605968740641719680f,\n  0.795372249417061310f, -0.606121262502186120f, 0.795256012499515610f,\n    -0.606273762077306430f,\n  0.795139746342679590f, -0.606426239361473550f, 0.795023450950828050f,\n    -0.606578694349081290f,\n  0.794907126328237010f, -0.606731127034524480f, 0.794790772479183170f,\n    -0.606883537412198470f,\n  0.794674389407944550f, -0.607035925476499650f, 0.794557977118800380f,\n    -0.607188291221825160f,\n  0.794441535616030590f, -0.607340634642572930f, 0.794325064903916520f,\n    -0.607492955733141550f,\n  0.794208564986740640f, -0.607645254487930830f, 0.794092035868785960f,\n    -0.607797530901341140f,\n  0.793975477554337170f, -0.607949784967773630f, 0.793858890047679730f,\n    -0.608102016681630440f,\n  0.793742273353100210f, -0.608254226037314490f, 0.793625627474886300f,\n    -0.608406413029229150f,\n  0.793508952417326660f, -0.608558577651779450f, 0.793392248184711100f,\n    -0.608710719899370310f,\n  0.793275514781330630f, -0.608862839766408200f, 0.793158752211477140f,\n    -0.609014937247299830f,\n  0.793041960479443640f, -0.609167012336453210f, 0.792925139589524260f,\n    -0.609319065028276820f,\n  0.792808289546014120f, -0.609471095317180240f, 0.792691410353209450f,\n    -0.609623103197573730f,\n  0.792574502015407690f, -0.609775088663868430f, 0.792457564536907080f,\n    -0.609927051710476120f,\n  0.792340597922007170f, -0.610078992331809620f, 0.792223602175008310f,\n    -0.610230910522282620f,\n  0.792106577300212390f, -0.610382806276309480f, 0.791989523301921850f,\n    -0.610534679588305320f,\n  0.791872440184440470f, -0.610686530452686280f, 0.791755327952073150f,\n    -0.610838358863869170f,\n  0.791638186609125880f, -0.610990164816271660f, 0.791521016159905220f,\n    -0.611141948304312570f,\n  0.791403816608719500f, -0.611293709322410890f, 0.791286587959877830f,\n    -0.611445447864987000f,\n  0.791169330217690200f, -0.611597163926461910f, 0.791052043386467950f,\n    -0.611748857501257290f,\n  0.790934727470523290f, -0.611900528583796070f, 0.790817382474169770f,\n    -0.612052177168501470f,\n  0.790700008401721610f, -0.612203803249797950f, 0.790582605257494460f,\n    -0.612355406822110650f,\n  0.790465173045804880f, -0.612506987879865570f, 0.790347711770970520f,\n    -0.612658546417489290f,\n  0.790230221437310030f, -0.612810082429409710f, 0.790112702049143300f,\n    -0.612961595910055170f,\n  0.789995153610791090f, -0.613113086853854910f, 0.789877576126575280f,\n    -0.613264555255239040f,\n  0.789759969600819070f, -0.613416001108638590f, 0.789642334037846340f,\n    -0.613567424408485330f,\n  0.789524669441982190f, -0.613718825149211720f, 0.789406975817552930f,\n    -0.613870203325251330f,\n  0.789289253168885650f, -0.614021558931038380f, 0.789171501500308900f,\n    -0.614172891961007990f,\n  0.789053720816151880f, -0.614324202409595950f, 0.788935911120745240f,\n    -0.614475490271239040f,\n  0.788818072418420280f, -0.614626755540375050f, 0.788700204713509660f,\n    -0.614777998211442080f,\n  0.788582308010347120f, -0.614929218278879590f, 0.788464382313267540f,\n    -0.615080415737127460f,\n  0.788346427626606340f, -0.615231590580626820f, 0.788228443954700490f,\n    -0.615382742803819220f,\n  0.788110431301888070f, -0.615533872401147320f, 0.787992389672507950f,\n    -0.615684979367054570f,\n  0.787874319070900220f, -0.615836063695985090f, 0.787756219501406060f,\n    -0.615987125382383760f,\n  0.787638090968367450f, -0.616138164420696910f, 0.787519933476127810f,\n    -0.616289180805370980f,\n  0.787401747029031430f, -0.616440174530853650f, 0.787283531631423620f,\n    -0.616591145591593110f,\n  0.787165287287651010f, -0.616742093982038720f, 0.787047014002060790f,\n    -0.616893019696640680f,\n  0.786928711779001810f, -0.617043922729849760f, 0.786810380622823490f,\n    -0.617194803076117630f,\n  0.786692020537876790f, -0.617345660729896830f, 0.786573631528513230f,\n    -0.617496495685640910f,\n  0.786455213599085770f, -0.617647307937803870f, 0.786336766753948260f,\n    -0.617798097480841020f,\n  0.786218290997455660f, -0.617948864309208150f, 0.786099786333963930f,\n    -0.618099608417362000f,\n  0.785981252767830150f, -0.618250329799760250f, 0.785862690303412600f,\n    -0.618401028450860980f,\n  0.785744098945070360f, -0.618551704365123740f, 0.785625478697163700f,\n    -0.618702357537008530f,\n  0.785506829564053930f, -0.618852987960976320f, 0.785388151550103550f,\n    -0.619003595631488660f,\n  0.785269444659675850f, -0.619154180543008410f, 0.785150708897135560f,\n    -0.619304742689998690f,\n  0.785031944266848080f, -0.619455282066924020f, 0.784913150773180020f,\n    -0.619605798668249270f,\n  0.784794328420499230f, -0.619756292488440660f, 0.784675477213174320f,\n    -0.619906763521964720f,\n  0.784556597155575240f, -0.620057211763289100f, 0.784437688252072830f,\n    -0.620207637206882430f,\n  0.784318750507038920f, -0.620358039847213720f, 0.784199783924846570f,\n    -0.620508419678753360f,\n  0.784080788509869950f, -0.620658776695972140f, 0.783961764266484120f,\n    -0.620809110893341900f,\n  0.783842711199065230f, -0.620959422265335180f, 0.783723629311990470f,\n    -0.621109710806425630f,\n  0.783604518609638200f, -0.621259976511087550f, 0.783485379096387820f,\n    -0.621410219373796150f,\n  0.783366210776619720f, -0.621560439389027160f, 0.783247013654715380f,\n    -0.621710636551257690f,\n  0.783127787735057310f, -0.621860810854965360f, 0.783008533022029110f,\n    -0.622010962294628600f,\n  0.782889249520015480f, -0.622161090864726820f, 0.782769937233402050f,\n    -0.622311196559740320f,\n  0.782650596166575730f, -0.622461279374149970f, 0.782531226323924240f,\n    -0.622611339302437730f,\n  0.782411827709836530f, -0.622761376339086350f, 0.782292400328702400f,\n    -0.622911390478579460f,\n  0.782172944184913010f, -0.623061381715401260f, 0.782053459282860300f,\n    -0.623211350044037270f,\n  0.781933945626937630f, -0.623361295458973230f, 0.781814403221538830f,\n    -0.623511217954696440f,\n  0.781694832071059390f, -0.623661117525694530f, 0.781575232179895550f,\n    -0.623810994166456130f,\n  0.781455603552444590f, -0.623960847871470660f, 0.781335946193104870f,\n    -0.624110678635228510f,\n  0.781216260106276090f, -0.624260486452220650f, 0.781096545296358520f,\n    -0.624410271316939270f,\n  0.780976801767753750f, -0.624560033223877210f, 0.780857029524864580f,\n    -0.624709772167528100f,\n  0.780737228572094490f, -0.624859488142386340f, 0.780617398913848400f,\n    -0.625009181142947460f,\n  0.780497540554531910f, -0.625158851163707620f, 0.780377653498552040f,\n    -0.625308498199164010f,\n  0.780257737750316590f, -0.625458122243814360f, 0.780137793314234610f,\n    -0.625607723292157410f,\n  0.780017820194715990f, -0.625757301338692900f, 0.779897818396172000f,\n    -0.625906856377921090f,\n  0.779777787923014550f, -0.626056388404343520f, 0.779657728779656890f,\n    -0.626205897412462130f,\n  0.779537640970513260f, -0.626355383396779990f, 0.779417524499998900f,\n    -0.626504846351800810f,\n  0.779297379372530300f, -0.626654286272029350f, 0.779177205592524680f,\n    -0.626803703151971200f,\n  0.779057003164400630f, -0.626953096986132660f, 0.778936772092577500f,\n    -0.627102467769020900f,\n  0.778816512381475980f, -0.627251815495144080f, 0.778696224035517530f,\n    -0.627401140159011050f,\n  0.778575907059125050f, -0.627550441755131530f, 0.778455561456721900f,\n    -0.627699720278016240f,\n  0.778335187232733210f, -0.627848975722176460f, 0.778214784391584540f,\n    -0.627998208082124700f,\n  0.778094352937702790f, -0.628147417352374000f, 0.777973892875516100f,\n    -0.628296603527438320f,\n  0.777853404209453150f, -0.628445766601832710f, 0.777732886943944050f,\n    -0.628594906570072550f,\n  0.777612341083420030f, -0.628744023426674680f, 0.777491766632313010f,\n    -0.628893117166156480f,\n  0.777371163595056310f, -0.629042187783036000f, 0.777250531976084070f,\n    -0.629191235271832290f,\n  0.777129871779831620f, -0.629340259627065630f, 0.777009183010735290f,\n    -0.629489260843256630f,\n  0.776888465673232440f, -0.629638238914926980f, 0.776767719771761510f,\n    -0.629787193836599200f,\n  0.776646945310762060f, -0.629936125602796440f, 0.776526142294674430f,\n    -0.630085034208043180f,\n  0.776405310727940390f, -0.630233919646864370f, 0.776284450615002510f,\n    -0.630382781913785940f,\n  0.776163561960304340f, -0.630531621003334600f, 0.776042644768290770f,\n    -0.630680436910037940f,\n  0.775921699043407690f, -0.630829229628424470f, 0.775800724790101650f,\n    -0.630977999153023550f,\n  0.775679722012820650f, -0.631126745478365340f, 0.775558690716013580f,\n    -0.631275468598980760f,\n  0.775437630904130540f, -0.631424168509401860f, 0.775316542581622530f,\n    -0.631572845204161020f,\n  0.775195425752941420f, -0.631721498677792260f, 0.775074280422540450f,\n    -0.631870128924829850f,\n  0.774953106594873930f, -0.632018735939809060f, 0.774831904274396850f,\n    -0.632167319717265920f,\n  0.774710673465565550f, -0.632315880251737570f, 0.774589414172837550f,\n    -0.632464417537761840f,\n  0.774468126400670860f, -0.632612931569877410f, 0.774346810153525130f,\n    -0.632761422342624000f,\n  0.774225465435860680f, -0.632909889850541750f, 0.774104092252139050f,\n    -0.633058334088172140f,\n  0.773982690606822900f, -0.633206755050057190f, 0.773861260504375540f,\n    -0.633355152730739950f,\n  0.773739801949261840f, -0.633503527124764320f, 0.773618314945947460f,\n    -0.633651878226674900f,\n  0.773496799498899050f, -0.633800206031017280f, 0.773375255612584470f,\n    -0.633948510532337810f,\n  0.773253683291472590f, -0.634096791725183740f, 0.773132082540033070f,\n    -0.634245049604103330f,\n  0.773010453362736990f, -0.634393284163645490f, 0.772888795764056220f,\n    -0.634541495398360020f,\n  0.772767109748463850f, -0.634689683302797740f, 0.772645395320433860f,\n    -0.634837847871509990f,\n  0.772523652484441330f, -0.634985989099049460f, 0.772401881244962450f,\n    -0.635134106979969190f,\n  0.772280081606474320f, -0.635282201508823420f, 0.772158253573455240f,\n    -0.635430272680167160f,\n  0.772036397150384520f, -0.635578320488556110f, 0.771914512341742350f,\n    -0.635726344928547070f,\n  0.771792599152010150f, -0.635874345994697720f, 0.771670657585670330f,\n    -0.636022323681566300f,\n  0.771548687647206300f, -0.636170277983712170f, 0.771426689341102590f,\n    -0.636318208895695460f,\n  0.771304662671844830f, -0.636466116412077180f, 0.771182607643919330f,\n    -0.636614000527419120f,\n  0.771060524261813820f, -0.636761861236284200f, 0.770938412530016940f,\n    -0.636909698533235870f,\n  0.770816272453018540f, -0.637057512412838590f, 0.770694104035309140f,\n    -0.637205302869657600f,\n  0.770571907281380810f, -0.637353069898259130f, 0.770449682195725960f,\n    -0.637500813493210190f,\n  0.770327428782838890f, -0.637648533649078810f, 0.770205147047214210f,\n    -0.637796230360433540f,\n  0.770082836993347900f, -0.637943903621844060f, 0.769960498625737230f,\n    -0.638091553427880820f,\n  0.769838131948879840f, -0.638239179773115280f, 0.769715736967275130f,\n    -0.638386782652119570f,\n  0.769593313685422940f, -0.638534362059466790f, 0.769470862107824670f,\n    -0.638681917989730730f,\n  0.769348382238982280f, -0.638829450437486290f, 0.769225874083399260f,\n    -0.638976959397309140f,\n  0.769103337645579700f, -0.639124444863775730f, 0.768980772930028870f,\n    -0.639271906831463510f,\n  0.768858179941253270f, -0.639419345294950700f, 0.768735558683760310f,\n    -0.639566760248816310f,\n  0.768612909162058380f, -0.639714151687640450f, 0.768490231380656860f,\n    -0.639861519606003900f,\n  0.768367525344066270f, -0.640008863998488440f, 0.768244791056798330f,\n    -0.640156184859676510f,\n  0.768122028523365420f, -0.640303482184151670f, 0.767999237748281270f,\n    -0.640450755966498140f,\n  0.767876418736060610f, -0.640598006201301030f, 0.767753571491219030f,\n    -0.640745232883146440f,\n  0.767630696018273380f, -0.640892436006621380f, 0.767507792321741270f,\n    -0.641039615566313390f,\n  0.767384860406141730f, -0.641186771556811250f, 0.767261900275994500f,\n    -0.641333903972704290f,\n  0.767138911935820400f, -0.641481012808583160f, 0.767015895390141480f,\n    -0.641628098059038750f,\n  0.766892850643480670f, -0.641775159718663500f, 0.766769777700361920f,\n    -0.641922197782050170f,\n  0.766646676565310380f, -0.642069212243792540f, 0.766523547242852210f,\n    -0.642216203098485370f,\n  0.766400389737514230f, -0.642363170340724320f, 0.766277204053824710f,\n    -0.642510113965105710f,\n  0.766153990196312920f, -0.642657033966226860f, 0.766030748169509000f,\n    -0.642803930338685990f,\n  0.765907477977944340f, -0.642950803077082080f, 0.765784179626150970f,\n    -0.643097652176015110f,\n  0.765660853118662500f, -0.643244477630085850f, 0.765537498460013070f,\n    -0.643391279433895850f,\n  0.765414115654738270f, -0.643538057582047740f, 0.765290704707374370f,\n    -0.643684812069144850f,\n  0.765167265622458960f, -0.643831542889791390f, 0.765043798404530520f,\n    -0.643978250038592660f,\n  0.764920303058128410f, -0.644124933510154540f, 0.764796779587793460f,\n    -0.644271593299083790f,\n  0.764673227998067140f, -0.644418229399988380f, 0.764549648293492150f,\n    -0.644564841807476640f,\n  0.764426040478612070f, -0.644711430516158310f, 0.764302404557971720f,\n    -0.644857995520643710f,\n  0.764178740536116670f, -0.645004536815543930f, 0.764055048417593970f,\n    -0.645151054395471160f,\n  0.763931328206951090f, -0.645297548255038380f, 0.763807579908737160f,\n    -0.645444018388859230f,\n  0.763683803527501870f, -0.645590464791548690f, 0.763559999067796150f,\n    -0.645736887457722290f,\n  0.763436166534172010f, -0.645883286381996320f, 0.763312305931182380f,\n    -0.646029661558988330f,\n  0.763188417263381270f, -0.646176012983316280f, 0.763064500535323710f,\n    -0.646322340649599480f,\n  0.762940555751565720f, -0.646468644552457780f, 0.762816582916664430f,\n    -0.646614924686512050f,\n  0.762692582035177980f, -0.646761181046383920f, 0.762568553111665380f,\n    -0.646907413626696020f,\n  0.762444496150687210f, -0.647053622422071540f, 0.762320411156804270f,\n    -0.647199807427135230f,\n  0.762196298134578900f, -0.647345968636512060f, 0.762072157088574560f,\n    -0.647492106044828100f,\n  0.761947988023355390f, -0.647638219646710310f, 0.761823790943486960f,\n    -0.647784309436786440f,\n  0.761699565853535380f, -0.647930375409685340f, 0.761575312758068000f,\n    -0.648076417560036530f,\n  0.761451031661653620f, -0.648222435882470420f, 0.761326722568861360f,\n    -0.648368430371618290f,\n  0.761202385484261780f, -0.648514401022112440f, 0.761078020412426560f,\n    -0.648660347828585840f,\n  0.760953627357928150f, -0.648806270785672550f, 0.760829206325340010f,\n    -0.648952169888007300f,\n  0.760704757319236920f, -0.649098045130225950f, 0.760580280344194450f,\n    -0.649243896506964900f,\n  0.760455775404789260f, -0.649389724012861660f, 0.760331242505599030f,\n    -0.649535527642554730f,\n  0.760206681651202420f, -0.649681307390683190f, 0.760082092846179340f,\n    -0.649827063251887100f,\n  0.759957476095110330f, -0.649972795220807530f, 0.759832831402577400f,\n    -0.650118503292086200f,\n  0.759708158773163440f, -0.650264187460365850f, 0.759583458211452010f,\n    -0.650409847720290310f,\n  0.759458729722028210f, -0.650555484066503880f, 0.759333973309477940f,\n    -0.650701096493652040f,\n  0.759209188978388070f, -0.650846684996380880f, 0.759084376733346610f,\n    -0.650992249569337660f,\n  0.758959536578942440f, -0.651137790207170330f, 0.758834668519765660f,\n    -0.651283306904527740f,\n  0.758709772560407390f, -0.651428799656059820f, 0.758584848705459610f,\n    -0.651574268456416970f,\n  0.758459896959515430f, -0.651719713300250910f, 0.758334917327168960f,\n    -0.651865134182213920f,\n  0.758209909813015280f, -0.652010531096959500f, 0.758084874421650730f,\n    -0.652155904039141590f,\n  0.757959811157672300f, -0.652301253003415460f, 0.757834720025678310f,\n    -0.652446577984436730f,\n  0.757709601030268080f, -0.652591878976862440f, 0.757584454176041810f,\n    -0.652737155975350310f,\n  0.757459279467600720f, -0.652882408974558850f, 0.757334076909547130f,\n    -0.653027637969147530f,\n  0.757208846506484570f, -0.653172842953776760f, 0.757083588263017140f,\n    -0.653318023923107670f,\n  0.756958302183750490f, -0.653463180871802330f, 0.756832988273290820f,\n    -0.653608313794523890f,\n  0.756707646536245670f, -0.653753422685936060f, 0.756582276977223470f,\n    -0.653898507540703780f,\n  0.756456879600833740f, -0.654043568353492640f, 0.756331454411686920f,\n    -0.654188605118969040f,\n  0.756206001414394540f, -0.654333617831800440f, 0.756080520613569120f,\n    -0.654478606486655350f,\n  0.755955012013824420f, -0.654623571078202680f, 0.755829475619774760f,\n    -0.654768511601112600f,\n  0.755703911436035880f, -0.654913428050056030f, 0.755578319467224540f,\n    -0.655058320419704910f,\n  0.755452699717958250f, -0.655203188704731820f, 0.755327052192855670f,\n    -0.655348032899810470f,\n  0.755201376896536550f, -0.655492852999615350f, 0.755075673833621620f,\n    -0.655637648998821820f,\n  0.754949943008732640f, -0.655782420892106030f, 0.754824184426492350f,\n    -0.655927168674145360f,\n  0.754698398091524500f, -0.656071892339617600f, 0.754572584008453840f,\n    -0.656216591883201920f,\n  0.754446742181906440f, -0.656361267299578000f, 0.754320872616508820f,\n    -0.656505918583426550f,\n  0.754194975316889170f, -0.656650545729428940f, 0.754069050287676120f,\n    -0.656795148732268070f,\n  0.753943097533499640f, -0.656939727586627110f, 0.753817117058990790f,\n    -0.657084282287190180f,\n  0.753691108868781210f, -0.657228812828642540f, 0.753565072967504300f,\n    -0.657373319205670210f,\n  0.753439009359793580f, -0.657517801412960120f, 0.753312918050284330f,\n    -0.657662259445200070f,\n  0.753186799043612520f, -0.657806693297078640f, 0.753060652344415100f,\n    -0.657951102963285520f,\n  0.752934477957330150f, -0.658095488438511180f, 0.752808275886996950f,\n    -0.658239849717446870f,\n  0.752682046138055340f, -0.658384186794785050f, 0.752555788715146390f,\n    -0.658528499665218650f,\n  0.752429503622912390f, -0.658672788323441890f, 0.752303190865996400f,\n    -0.658817052764149480f,\n  0.752176850449042810f, -0.658961292982037320f, 0.752050482376696360f,\n    -0.659105508971802090f,\n  0.751924086653603550f, -0.659249700728141490f, 0.751797663284411550f,\n    -0.659393868245753860f,\n  0.751671212273768430f, -0.659538011519338660f, 0.751544733626323680f,\n    -0.659682130543596150f,\n  0.751418227346727470f, -0.659826225313227320f, 0.751291693439630870f,\n    -0.659970295822934540f,\n  0.751165131909686480f, -0.660114342067420480f, 0.751038542761547360f,\n    -0.660258364041389050f,\n  0.750911925999867890f, -0.660402361739545030f, 0.750785281629303690f,\n    -0.660546335156593890f,\n  0.750658609654510700f, -0.660690284287242300f, 0.750531910080146410f,\n    -0.660834209126197610f,\n  0.750405182910869330f, -0.660978109668168060f, 0.750278428151338720f,\n    -0.661121985907862860f,\n  0.750151645806215070f, -0.661265837839992270f, 0.750024835880159780f,\n    -0.661409665459266940f,\n  0.749897998377835330f, -0.661553468760398890f, 0.749771133303905100f,\n    -0.661697247738101010f,\n  0.749644240663033480f, -0.661841002387086870f, 0.749517320459886170f,\n    -0.661984732702070920f,\n  0.749390372699129560f, -0.662128438677768720f, 0.749263397385431130f,\n    -0.662272120308896590f,\n  0.749136394523459370f, -0.662415777590171780f, 0.749009364117883880f,\n    -0.662559410516312290f,\n  0.748882306173375150f, -0.662703019082037440f, 0.748755220694604760f,\n    -0.662846603282066900f,\n  0.748628107686245440f, -0.662990163111121470f, 0.748500967152970430f,\n    -0.663133698563923010f,\n  0.748373799099454560f, -0.663277209635194100f, 0.748246603530373420f,\n    -0.663420696319658280f,\n  0.748119380450403600f, -0.663564158612039770f, 0.747992129864222700f,\n    -0.663707596507064010f,\n  0.747864851776509410f, -0.663851009999457340f, 0.747737546191943330f,\n    -0.663994399083946640f,\n  0.747610213115205150f, -0.664137763755260010f, 0.747482852550976570f,\n    -0.664281104008126230f,\n  0.747355464503940190f, -0.664424419837275180f, 0.747228048978779920f,\n    -0.664567711237437520f,\n  0.747100605980180130f, -0.664710978203344790f, 0.746973135512826850f,\n    -0.664854220729729660f,\n  0.746845637581406540f, -0.664997438811325340f, 0.746718112190607130f,\n    -0.665140632442866140f,\n  0.746590559345117310f, -0.665283801619087180f, 0.746462979049626770f,\n    -0.665426946334724660f,\n  0.746335371308826320f, -0.665570066584515450f, 0.746207736127407760f,\n    -0.665713162363197550f,\n  0.746080073510063780f, -0.665856233665509720f, 0.745952383461488290f,\n    -0.665999280486191500f,\n  0.745824665986376090f, -0.666142302819983540f, 0.745696921089422760f,\n    -0.666285300661627280f,\n  0.745569148775325430f, -0.666428274005865240f, 0.745441349048781680f,\n    -0.666571222847440640f,\n  0.745313521914490520f, -0.666714147181097670f, 0.745185667377151640f,\n    -0.666857047001581220f,\n  0.745057785441466060f, -0.666999922303637470f, 0.744929876112135350f,\n    -0.667142773082013310f,\n  0.744801939393862630f, -0.667285599331456370f, 0.744673975291351710f,\n    -0.667428401046715520f,\n  0.744545983809307370f, -0.667571178222540310f, 0.744417964952435620f,\n    -0.667713930853681030f,\n  0.744289918725443260f, -0.667856658934889320f, 0.744161845133038180f,\n    -0.667999362460917400f,\n  0.744033744179929290f, -0.668142041426518450f, 0.743905615870826490f,\n    -0.668284695826446670f,\n  0.743777460210440890f, -0.668427325655456820f, 0.743649277203484060f,\n    -0.668569930908304970f,\n  0.743521066854669120f, -0.668712511579747980f, 0.743392829168709970f,\n    -0.668855067664543610f,\n  0.743264564150321600f, -0.668997599157450270f, 0.743136271804219820f,\n    -0.669140106053227600f,\n  0.743007952135121720f, -0.669282588346636010f, 0.742879605147745200f,\n    -0.669425046032436910f,\n  0.742751230846809050f, -0.669567479105392490f, 0.742622829237033490f,\n    -0.669709887560265840f,\n  0.742494400323139180f, -0.669852271391821020f, 0.742365944109848460f,\n    -0.669994630594823000f,\n  0.742237460601884000f, -0.670136965164037650f, 0.742108949803969910f,\n    -0.670279275094231800f,\n  0.741980411720831070f, -0.670421560380173090f, 0.741851846357193480f,\n    -0.670563821016630040f,\n  0.741723253717784140f, -0.670706056998372160f, 0.741594633807331150f,\n    -0.670848268320169640f,\n  0.741465986630563290f, -0.670990454976794220f, 0.741337312192210660f,\n    -0.671132616963017740f,\n  0.741208610497004260f, -0.671274754273613490f, 0.741079881549676080f,\n    -0.671416866903355450f,\n  0.740951125354959110f, -0.671558954847018330f, 0.740822341917587330f,\n    -0.671701018099378320f,\n  0.740693531242295760f, -0.671843056655211930f, 0.740564693333820250f,\n    -0.671985070509296900f,\n  0.740435828196898020f, -0.672127059656411730f, 0.740306935836266940f,\n    -0.672269024091335930f,\n  0.740178016256666240f, -0.672410963808849790f, 0.740049069462835550f,\n    -0.672552878803734710f,\n  0.739920095459516200f, -0.672694769070772860f, 0.739791094251449950f,\n    -0.672836634604747300f,\n  0.739662065843380010f, -0.672978475400442090f, 0.739533010240050250f,\n    -0.673120291452642070f,\n  0.739403927446205760f, -0.673262082756132970f, 0.739274817466592520f,\n    -0.673403849305701740f,\n  0.739145680305957510f, -0.673545591096136100f, 0.739016515969048720f,\n    -0.673687308122224330f,\n  0.738887324460615110f, -0.673829000378756040f, 0.738758105785406900f,\n    -0.673970667860521620f,\n  0.738628859948174840f, -0.674112310562312360f, 0.738499586953671130f,\n    -0.674253928478920410f,\n  0.738370286806648620f, -0.674395521605139050f, 0.738240959511861310f,\n    -0.674537089935762000f,\n  0.738111605074064260f, -0.674678633465584540f, 0.737982223498013570f,\n    -0.674820152189402170f,\n  0.737852814788465980f, -0.674961646102011930f, 0.737723378950179700f,\n    -0.675103115198211420f,\n  0.737593915987913570f, -0.675244559472799270f, 0.737464425906427580f,\n    -0.675385978920574840f,\n  0.737334908710482910f, -0.675527373536338520f, 0.737205364404841190f,\n    -0.675668743314891910f,\n  0.737075792994265730f, -0.675810088251036940f, 0.736946194483520280f,\n    -0.675951408339577010f,\n  0.736816568877369900f, -0.676092703575315920f, 0.736686916180580460f,\n    -0.676233973953058950f,\n  0.736557236397919150f, -0.676375219467611590f, 0.736427529534153690f,\n    -0.676516440113781090f,\n  0.736297795594053170f, -0.676657635886374950f, 0.736168034582387330f,\n    -0.676798806780201770f,\n  0.736038246503927350f, -0.676939952790071130f, 0.735908431363445190f,\n    -0.677081073910793530f,\n  0.735778589165713590f, -0.677222170137180330f, 0.735648719915506510f,\n    -0.677363241464043920f,\n  0.735518823617598900f, -0.677504287886197430f, 0.735388900276766730f,\n    -0.677645309398454910f,\n  0.735258949897786840f, -0.677786305995631500f, 0.735128972485437180f,\n    -0.677927277672543020f,\n  0.734998968044496710f, -0.678068224424006600f, 0.734868936579745170f,\n    -0.678209146244839860f,\n  0.734738878095963500f, -0.678350043129861470f, 0.734608792597933550f,\n    -0.678490915073891140f,\n  0.734478680090438370f, -0.678631762071749360f, 0.734348540578261600f,\n    -0.678772584118257690f,\n  0.734218374066188280f, -0.678913381208238410f, 0.734088180559004040f,\n    -0.679054153336514870f,\n  0.733957960061495940f, -0.679194900497911200f, 0.733827712578451700f,\n    -0.679335622687252560f,\n  0.733697438114660370f, -0.679476319899364970f, 0.733567136674911360f,\n    -0.679616992129075560f,\n  0.733436808263995710f, -0.679757639371212030f, 0.733306452886705260f,\n    -0.679898261620603290f,\n  0.733176070547832740f, -0.680038858872078930f, 0.733045661252172080f,\n    -0.680179431120469750f,\n  0.732915225004517780f, -0.680319978360607200f, 0.732784761809665790f,\n    -0.680460500587323880f,\n  0.732654271672412820f, -0.680600997795453020f, 0.732523754597556700f,\n    -0.680741469979829090f,\n  0.732393210589896040f, -0.680881917135287230f, 0.732262639654230770f,\n    -0.681022339256663670f,\n  0.732132041795361290f, -0.681162736338795430f, 0.732001417018089630f,\n    -0.681303108376520530f,\n  0.731870765327218290f, -0.681443455364677870f, 0.731740086727550980f,\n    -0.681583777298107480f,\n  0.731609381223892630f, -0.681724074171649710f, 0.731478648821048520f,\n    -0.681864345980146670f,\n  0.731347889523825570f, -0.682004592718440830f, 0.731217103337031270f,\n    -0.682144814381375640f,\n  0.731086290265474340f, -0.682285010963795570f, 0.730955450313964360f,\n    -0.682425182460546060f,\n  0.730824583487312160f, -0.682565328866473250f, 0.730693689790329000f,\n    -0.682705450176424590f,\n  0.730562769227827590f, -0.682845546385248080f, 0.730431821804621520f,\n    -0.682985617487792740f,\n  0.730300847525525490f, -0.683125663478908680f, 0.730169846395354870f,\n    -0.683265684353446700f,\n  0.730038818418926260f, -0.683405680106258680f, 0.729907763601057140f,\n    -0.683545650732197530f,\n  0.729776681946566090f, -0.683685596226116580f, 0.729645573460272480f,\n    -0.683825516582870720f,\n  0.729514438146997010f, -0.683965411797315400f, 0.729383276011561050f,\n    -0.684105281864307080f,\n  0.729252087058786970f, -0.684245126778703080f, 0.729120871293498230f,\n    -0.684384946535361750f,\n  0.728989628720519420f, -0.684524741129142300f, 0.728858359344675800f,\n    -0.684664510554904960f,\n  0.728727063170793830f, -0.684804254807510620f, 0.728595740203700770f,\n    -0.684943973881821490f,\n  0.728464390448225200f, -0.685083667772700360f, 0.728333013909196360f,\n    -0.685223336475011210f,\n  0.728201610591444610f, -0.685362979983618730f, 0.728070180499801210f,\n    -0.685502598293388550f,\n  0.727938723639098620f, -0.685642191399187470f, 0.727807240014169960f,\n    -0.685781759295883030f,\n  0.727675729629849610f, -0.685921301978343560f, 0.727544192490972800f,\n    -0.686060819441438710f,\n  0.727412628602375770f, -0.686200311680038590f, 0.727281037968895870f,\n    -0.686339778689014520f,\n  0.727149420595371020f, -0.686479220463238950f, 0.727017776486640680f,\n    -0.686618636997584630f,\n  0.726886105647544970f, -0.686758028286925890f, 0.726754408082925020f,\n    -0.686897394326137610f,\n  0.726622683797622850f, -0.687036735110095660f, 0.726490932796481910f,\n    -0.687176050633676820f,\n  0.726359155084346010f, -0.687315340891759050f, 0.726227350666060370f,\n    -0.687454605879221030f,\n  0.726095519546471000f, -0.687593845590942170f, 0.725963661730424930f,\n    -0.687733060021803230f,\n  0.725831777222770370f, -0.687872249166685550f, 0.725699866028356120f,\n    -0.688011413020471640f,\n  0.725567928152032300f, -0.688150551578044830f, 0.725435963598649810f,\n    -0.688289664834289330f,\n  0.725303972373060770f, -0.688428752784090440f, 0.725171954480117950f,\n    -0.688567815422334250f,\n  0.725039909924675370f, -0.688706852743907750f, 0.724907838711587820f,\n    -0.688845864743699020f,\n  0.724775740845711280f, -0.688984851416597040f, 0.724643616331902550f,\n    -0.689123812757491570f,\n  0.724511465175019630f, -0.689262748761273470f, 0.724379287379921190f,\n    -0.689401659422834270f,\n  0.724247082951467000f, -0.689540544737066830f, 0.724114851894517850f,\n    -0.689679404698864800f,\n  0.723982594213935520f, -0.689818239303122470f, 0.723850309914582880f,\n    -0.689957048544735390f,\n  0.723717999001323500f, -0.690095832418599950f, 0.723585661479022150f,\n    -0.690234590919613370f,\n  0.723453297352544380f, -0.690373324042674040f, 0.723320906626756970f,\n    -0.690512031782681060f,\n  0.723188489306527460f, -0.690650714134534600f, 0.723056045396724410f,\n    -0.690789371093135650f,\n  0.722923574902217700f, -0.690928002653386160f, 0.722791077827877550f,\n    -0.691066608810189220f,\n  0.722658554178575610f, -0.691205189558448450f, 0.722526003959184540f,\n    -0.691343744893068710f,\n  0.722393427174577550f, -0.691482274808955850f, 0.722260823829629310f,\n    -0.691620779301016290f,\n  0.722128193929215350f, -0.691759258364157750f, 0.721995537478211880f,\n    -0.691897711993288760f,\n  0.721862854481496340f, -0.692036140183318720f, 0.721730144943947160f,\n    -0.692174542929158140f,\n  0.721597408870443770f, -0.692312920225718220f, 0.721464646265866370f,\n    -0.692451272067911130f,\n  0.721331857135096290f, -0.692589598450650380f, 0.721199041483015720f,\n    -0.692727899368849820f,\n  0.721066199314508110f, -0.692866174817424630f, 0.720933330634457530f,\n    -0.693004424791290870f,\n  0.720800435447749190f, -0.693142649285365400f, 0.720667513759269520f,\n    -0.693280848294566040f,\n  0.720534565573905270f, -0.693419021813811760f, 0.720401590896544760f,\n    -0.693557169838022290f,\n  0.720268589732077190f, -0.693695292362118240f, 0.720135562085392420f,\n    -0.693833389381021350f,\n  0.720002507961381650f, -0.693971460889654000f, 0.719869427364936860f,\n    -0.694109506882939820f,\n  0.719736320300951030f, -0.694247527355803310f, 0.719603186774318120f,\n    -0.694385522303169740f,\n  0.719470026789932990f, -0.694523491719965520f, 0.719336840352691740f,\n    -0.694661435601117820f,\n  0.719203627467491220f, -0.694799353941554900f, 0.719070388139229190f,\n    -0.694937246736205830f,\n  0.718937122372804490f, -0.695075113980000880f, 0.718803830173116890f,\n    -0.695212955667870780f,\n  0.718670511545067230f, -0.695350771794747690f, 0.718537166493557370f,\n    -0.695488562355564440f,\n  0.718403795023489830f, -0.695626327345254870f, 0.718270397139768260f,\n    -0.695764066758753690f,\n  0.718136972847297490f, -0.695901780590996830f, 0.718003522150983180f,\n    -0.696039468836920690f,\n  0.717870045055731710f, -0.696177131491462990f, 0.717736541566450950f,\n    -0.696314768549562090f,\n  0.717603011688049080f, -0.696452380006157830f, 0.717469455425435830f,\n    -0.696589965856190370f,\n  0.717335872783521730f, -0.696727526094601200f, 0.717202263767218070f,\n    -0.696865060716332470f,\n  0.717068628381437480f, -0.697002569716327460f, 0.716934966631093130f,\n    -0.697140053089530420f,\n  0.716801278521099540f, -0.697277510830886520f, 0.716667564056371890f,\n    -0.697414942935341790f,\n  0.716533823241826680f, -0.697552349397843160f, 0.716400056082381000f,\n    -0.697689730213338800f,\n  0.716266262582953120f, -0.697827085376777290f, 0.716132442748462330f,\n    -0.697964414883108670f,\n  0.715998596583828690f, -0.698101718727283770f, 0.715864724093973500f,\n    -0.698238996904254280f,\n  0.715730825283818590f, -0.698376249408972920f, 0.715596900158287470f,\n    -0.698513476236393040f,\n  0.715462948722303760f, -0.698650677381469460f, 0.715328970980792620f,\n    -0.698787852839157670f,\n  0.715194966938680120f, -0.698925002604414150f, 0.715060936600893090f,\n    -0.699062126672196140f,\n  0.714926879972359490f, -0.699199225037462120f, 0.714792797058008240f,\n    -0.699336297695171140f,\n  0.714658687862769090f, -0.699473344640283770f, 0.714524552391572860f,\n    -0.699610365867761040f,\n  0.714390390649351390f, -0.699747361372564990f, 0.714256202641037510f,\n    -0.699884331149658760f,\n  0.714121988371564820f, -0.700021275194006250f, 0.713987747845867830f,\n    -0.700158193500572730f,\n  0.713853481068882470f, -0.700295086064323780f, 0.713719188045545240f,\n    -0.700431952880226420f,\n  0.713584868780793640f, -0.700568793943248340f, 0.713450523279566260f,\n    -0.700705609248358450f,\n  0.713316151546802610f, -0.700842398790526120f, 0.713181753587443180f,\n    -0.700979162564722370f,\n  0.713047329406429340f, -0.701115900565918660f, 0.712912879008703480f,\n    -0.701252612789087460f,\n  0.712778402399208980f, -0.701389299229202230f, 0.712643899582890210f,\n    -0.701525959881237340f,\n  0.712509370564692320f, -0.701662594740168450f, 0.712374815349561710f,\n    -0.701799203800971720f,\n  0.712240233942445510f, -0.701935787058624360f, 0.712105626348291890f,\n    -0.702072344508104630f,\n  0.711970992572050100f, -0.702208876144391870f, 0.711836332618670080f,\n    -0.702345381962465880f,\n  0.711701646493102970f, -0.702481861957308000f, 0.711566934200300700f,\n    -0.702618316123900130f,\n  0.711432195745216430f, -0.702754744457225300f, 0.711297431132803970f,\n    -0.702891146952267400f,\n  0.711162640368018350f, -0.703027523604011220f, 0.711027823455815280f,\n    -0.703163874407442770f,\n  0.710892980401151680f, -0.703300199357548730f, 0.710758111208985350f,\n    -0.703436498449316660f,\n  0.710623215884275020f, -0.703572771677735580f, 0.710488294431980470f,\n    -0.703709019037794810f,\n  0.710353346857062420f, -0.703845240524484940f, 0.710218373164482220f,\n    -0.703981436132797620f,\n  0.710083373359202800f, -0.704117605857725310f, 0.709948347446187400f,\n    -0.704253749694261470f,\n  0.709813295430400840f, -0.704389867637400410f, 0.709678217316808580f,\n    -0.704525959682137380f,\n  0.709543113110376770f, -0.704662025823468820f, 0.709407982816072980f,\n    -0.704798066056391950f,\n  0.709272826438865690f, -0.704934080375904880f, 0.709137643983724030f,\n    -0.705070068777006840f,\n  0.709002435455618250f, -0.705206031254697830f, 0.708867200859519820f,\n    -0.705341967803978840f,\n  0.708731940200400650f, -0.705477878419852100f, 0.708596653483234080f,\n    -0.705613763097320490f,\n  0.708461340712994160f, -0.705749621831387790f, 0.708326001894655890f,\n    -0.705885454617058980f,\n  0.708190637033195400f, -0.706021261449339740f, 0.708055246133589500f,\n    -0.706157042323237060f,\n  0.707919829200816310f, -0.706292797233758480f, 0.707784386239854620f,\n    -0.706428526175912790f,\n  0.707648917255684350f, -0.706564229144709510f, 0.707513422253286280f,\n    -0.706699906135159430f,\n  0.707377901237642100f, -0.706835557142273750f, 0.707242354213734710f,\n    -0.706971182161065360f,\n  0.707106781186547570f, -0.707106781186547460f, 0.706971182161065360f,\n    -0.707242354213734600f,\n  0.706835557142273860f, -0.707377901237642100f, 0.706699906135159430f,\n    -0.707513422253286170f,\n  0.706564229144709620f, -0.707648917255684350f, 0.706428526175912790f,\n    -0.707784386239854620f,\n  0.706292797233758480f, -0.707919829200816310f, 0.706157042323237060f,\n    -0.708055246133589500f,\n  0.706021261449339740f, -0.708190637033195290f, 0.705885454617058980f,\n    -0.708326001894655780f,\n  0.705749621831387790f, -0.708461340712994050f, 0.705613763097320490f,\n    -0.708596653483234080f,\n  0.705477878419852210f, -0.708731940200400650f, 0.705341967803978950f,\n    -0.708867200859519820f,\n  0.705206031254697830f, -0.709002435455618250f, 0.705070068777006840f,\n    -0.709137643983723920f,\n  0.704934080375904990f, -0.709272826438865580f, 0.704798066056391950f,\n    -0.709407982816072980f,\n  0.704662025823468930f, -0.709543113110376770f, 0.704525959682137380f,\n    -0.709678217316808470f,\n  0.704389867637400410f, -0.709813295430400840f, 0.704253749694261580f,\n    -0.709948347446187400f,\n  0.704117605857725430f, -0.710083373359202690f, 0.703981436132797730f,\n    -0.710218373164482220f,\n  0.703845240524484940f, -0.710353346857062310f, 0.703709019037794810f,\n    -0.710488294431980470f,\n  0.703572771677735580f, -0.710623215884275020f, 0.703436498449316770f,\n    -0.710758111208985350f,\n  0.703300199357548730f, -0.710892980401151680f, 0.703163874407442770f,\n    -0.711027823455815280f,\n  0.703027523604011220f, -0.711162640368018350f, 0.702891146952267400f,\n    -0.711297431132803970f,\n  0.702754744457225300f, -0.711432195745216430f, 0.702618316123900130f,\n    -0.711566934200300700f,\n  0.702481861957308000f, -0.711701646493102970f, 0.702345381962465880f,\n    -0.711836332618670080f,\n  0.702208876144391870f, -0.711970992572049990f, 0.702072344508104740f,\n    -0.712105626348291890f,\n  0.701935787058624360f, -0.712240233942445510f, 0.701799203800971720f,\n    -0.712374815349561710f,\n  0.701662594740168570f, -0.712509370564692320f, 0.701525959881237450f,\n    -0.712643899582890210f,\n  0.701389299229202230f, -0.712778402399208870f, 0.701252612789087460f,\n    -0.712912879008703370f,\n  0.701115900565918660f, -0.713047329406429230f, 0.700979162564722480f,\n    -0.713181753587443070f,\n  0.700842398790526230f, -0.713316151546802610f, 0.700705609248358450f,\n    -0.713450523279566150f,\n  0.700568793943248450f, -0.713584868780793520f, 0.700431952880226420f,\n    -0.713719188045545130f,\n  0.700295086064323780f, -0.713853481068882470f, 0.700158193500572730f,\n    -0.713987747845867830f,\n  0.700021275194006360f, -0.714121988371564710f, 0.699884331149658760f,\n    -0.714256202641037400f,\n  0.699747361372564990f, -0.714390390649351390f, 0.699610365867761040f,\n    -0.714524552391572860f,\n  0.699473344640283770f, -0.714658687862768980f, 0.699336297695171250f,\n    -0.714792797058008130f,\n  0.699199225037462120f, -0.714926879972359370f, 0.699062126672196140f,\n    -0.715060936600892980f,\n  0.698925002604414150f, -0.715194966938680010f, 0.698787852839157790f,\n    -0.715328970980792620f,\n  0.698650677381469580f, -0.715462948722303650f, 0.698513476236393040f,\n    -0.715596900158287360f,\n  0.698376249408972920f, -0.715730825283818590f, 0.698238996904254390f,\n    -0.715864724093973390f,\n  0.698101718727283880f, -0.715998596583828690f, 0.697964414883108790f,\n    -0.716132442748462330f,\n  0.697827085376777290f, -0.716266262582953120f, 0.697689730213338800f,\n    -0.716400056082380890f,\n  0.697552349397843270f, -0.716533823241826570f, 0.697414942935341790f,\n    -0.716667564056371890f,\n  0.697277510830886630f, -0.716801278521099540f, 0.697140053089530530f,\n    -0.716934966631093130f,\n  0.697002569716327460f, -0.717068628381437480f, 0.696865060716332470f,\n    -0.717202263767218070f,\n  0.696727526094601200f, -0.717335872783521730f, 0.696589965856190370f,\n    -0.717469455425435830f,\n  0.696452380006157830f, -0.717603011688049080f, 0.696314768549562200f,\n    -0.717736541566450840f,\n  0.696177131491462990f, -0.717870045055731710f, 0.696039468836920690f,\n    -0.718003522150983060f,\n  0.695901780590996830f, -0.718136972847297490f, 0.695764066758753800f,\n    -0.718270397139768260f,\n  0.695626327345254870f, -0.718403795023489720f, 0.695488562355564440f,\n    -0.718537166493557370f,\n  0.695350771794747800f, -0.718670511545067230f, 0.695212955667870890f,\n    -0.718803830173116890f,\n  0.695075113980000880f, -0.718937122372804380f, 0.694937246736205940f,\n    -0.719070388139229190f,\n  0.694799353941554900f, -0.719203627467491220f, 0.694661435601117930f,\n    -0.719336840352691740f,\n  0.694523491719965520f, -0.719470026789932990f, 0.694385522303169860f,\n    -0.719603186774318000f,\n  0.694247527355803310f, -0.719736320300951030f, 0.694109506882939820f,\n    -0.719869427364936860f,\n  0.693971460889654000f, -0.720002507961381650f, 0.693833389381021350f,\n    -0.720135562085392310f,\n  0.693695292362118350f, -0.720268589732077080f, 0.693557169838022400f,\n    -0.720401590896544760f,\n  0.693419021813811880f, -0.720534565573905270f, 0.693280848294566150f,\n    -0.720667513759269410f,\n  0.693142649285365510f, -0.720800435447749190f, 0.693004424791290870f,\n    -0.720933330634457530f,\n  0.692866174817424740f, -0.721066199314508110f, 0.692727899368849820f,\n    -0.721199041483015720f,\n  0.692589598450650380f, -0.721331857135096180f, 0.692451272067911240f,\n    -0.721464646265866370f,\n  0.692312920225718220f, -0.721597408870443660f, 0.692174542929158140f,\n    -0.721730144943947160f,\n  0.692036140183318830f, -0.721862854481496340f, 0.691897711993288760f,\n    -0.721995537478211880f,\n  0.691759258364157750f, -0.722128193929215350f, 0.691620779301016400f,\n    -0.722260823829629310f,\n  0.691482274808955850f, -0.722393427174577550f, 0.691343744893068820f,\n    -0.722526003959184430f,\n  0.691205189558448450f, -0.722658554178575610f, 0.691066608810189220f,\n    -0.722791077827877550f,\n  0.690928002653386280f, -0.722923574902217700f, 0.690789371093135760f,\n    -0.723056045396724410f,\n  0.690650714134534720f, -0.723188489306527350f, 0.690512031782681170f,\n    -0.723320906626756850f,\n  0.690373324042674040f, -0.723453297352544380f, 0.690234590919613370f,\n    -0.723585661479022040f,\n  0.690095832418599950f, -0.723717999001323390f, 0.689957048544735390f,\n    -0.723850309914582880f,\n  0.689818239303122470f, -0.723982594213935520f, 0.689679404698864800f,\n    -0.724114851894517850f,\n  0.689540544737066940f, -0.724247082951466890f, 0.689401659422834380f,\n    -0.724379287379921080f,\n  0.689262748761273470f, -0.724511465175019520f, 0.689123812757491680f,\n    -0.724643616331902550f,\n  0.688984851416597150f, -0.724775740845711280f, 0.688845864743699130f,\n    -0.724907838711587820f,\n  0.688706852743907750f, -0.725039909924675370f, 0.688567815422334360f,\n    -0.725171954480117840f,\n  0.688428752784090550f, -0.725303972373060660f, 0.688289664834289440f,\n    -0.725435963598649810f,\n  0.688150551578044830f, -0.725567928152032300f, 0.688011413020471640f,\n    -0.725699866028356120f,\n  0.687872249166685550f, -0.725831777222770370f, 0.687733060021803230f,\n    -0.725963661730424930f,\n  0.687593845590942170f, -0.726095519546470890f, 0.687454605879221030f,\n    -0.726227350666060260f,\n  0.687315340891759160f, -0.726359155084346010f, 0.687176050633676930f,\n    -0.726490932796481910f,\n  0.687036735110095660f, -0.726622683797622850f, 0.686897394326137610f,\n    -0.726754408082924910f,\n  0.686758028286925890f, -0.726886105647544970f, 0.686618636997584740f,\n    -0.727017776486640680f,\n  0.686479220463238950f, -0.727149420595371020f, 0.686339778689014630f,\n    -0.727281037968895760f,\n  0.686200311680038700f, -0.727412628602375770f, 0.686060819441438710f,\n    -0.727544192490972800f,\n  0.685921301978343670f, -0.727675729629849610f, 0.685781759295883030f,\n    -0.727807240014169960f,\n  0.685642191399187470f, -0.727938723639098620f, 0.685502598293388670f,\n    -0.728070180499801210f,\n  0.685362979983618730f, -0.728201610591444500f, 0.685223336475011210f,\n    -0.728333013909196360f,\n  0.685083667772700360f, -0.728464390448225200f, 0.684943973881821490f,\n    -0.728595740203700770f,\n  0.684804254807510620f, -0.728727063170793720f, 0.684664510554904960f,\n    -0.728858359344675690f,\n  0.684524741129142300f, -0.728989628720519310f, 0.684384946535361750f,\n    -0.729120871293498230f,\n  0.684245126778703080f, -0.729252087058786970f, 0.684105281864307080f,\n    -0.729383276011561050f,\n  0.683965411797315510f, -0.729514438146996900f, 0.683825516582870830f,\n    -0.729645573460272480f,\n  0.683685596226116690f, -0.729776681946565970f, 0.683545650732197530f,\n    -0.729907763601057140f,\n  0.683405680106258790f, -0.730038818418926150f, 0.683265684353446700f,\n    -0.730169846395354870f,\n  0.683125663478908800f, -0.730300847525525380f, 0.682985617487792850f,\n    -0.730431821804621520f,\n  0.682845546385248080f, -0.730562769227827590f, 0.682705450176424590f,\n    -0.730693689790328890f,\n  0.682565328866473250f, -0.730824583487312050f, 0.682425182460546060f,\n    -0.730955450313964360f,\n  0.682285010963795570f, -0.731086290265474230f, 0.682144814381375640f,\n    -0.731217103337031160f,\n  0.682004592718440830f, -0.731347889523825460f, 0.681864345980146780f,\n    -0.731478648821048520f,\n  0.681724074171649820f, -0.731609381223892520f, 0.681583777298107480f,\n    -0.731740086727550980f,\n  0.681443455364677990f, -0.731870765327218290f, 0.681303108376520530f,\n    -0.732001417018089520f,\n  0.681162736338795430f, -0.732132041795361290f, 0.681022339256663670f,\n    -0.732262639654230660f,\n  0.680881917135287340f, -0.732393210589896040f, 0.680741469979829090f,\n    -0.732523754597556590f,\n  0.680600997795453130f, -0.732654271672412820f, 0.680460500587323880f,\n    -0.732784761809665790f,\n  0.680319978360607200f, -0.732915225004517780f, 0.680179431120469750f,\n    -0.733045661252171970f,\n  0.680038858872079040f, -0.733176070547832740f, 0.679898261620603290f,\n    -0.733306452886705260f,\n  0.679757639371212030f, -0.733436808263995710f, 0.679616992129075560f,\n    -0.733567136674911360f,\n  0.679476319899365080f, -0.733697438114660260f, 0.679335622687252670f,\n    -0.733827712578451700f,\n  0.679194900497911200f, -0.733957960061495940f, 0.679054153336514870f,\n    -0.734088180559004040f,\n  0.678913381208238410f, -0.734218374066188170f, 0.678772584118257690f,\n    -0.734348540578261600f,\n  0.678631762071749470f, -0.734478680090438370f, 0.678490915073891250f,\n    -0.734608792597933550f,\n  0.678350043129861580f, -0.734738878095963390f, 0.678209146244839860f,\n    -0.734868936579745060f,\n  0.678068224424006600f, -0.734998968044496600f, 0.677927277672543130f,\n    -0.735128972485437180f,\n  0.677786305995631500f, -0.735258949897786730f, 0.677645309398454910f,\n    -0.735388900276766620f,\n  0.677504287886197430f, -0.735518823617598900f, 0.677363241464044030f,\n    -0.735648719915506400f,\n  0.677222170137180450f, -0.735778589165713480f, 0.677081073910793530f,\n    -0.735908431363445190f,\n  0.676939952790071240f, -0.736038246503927350f, 0.676798806780201770f,\n    -0.736168034582387330f,\n  0.676657635886374950f, -0.736297795594053060f, 0.676516440113781090f,\n    -0.736427529534153690f,\n  0.676375219467611700f, -0.736557236397919150f, 0.676233973953058950f,\n    -0.736686916180580460f,\n  0.676092703575316030f, -0.736816568877369790f, 0.675951408339577010f,\n    -0.736946194483520170f,\n  0.675810088251037060f, -0.737075792994265620f, 0.675668743314891910f,\n    -0.737205364404841190f,\n  0.675527373536338630f, -0.737334908710482790f, 0.675385978920574950f,\n    -0.737464425906427580f,\n  0.675244559472799270f, -0.737593915987913460f, 0.675103115198211530f,\n    -0.737723378950179590f,\n  0.674961646102012040f, -0.737852814788465980f, 0.674820152189402280f,\n    -0.737982223498013570f,\n  0.674678633465584540f, -0.738111605074064260f, 0.674537089935762110f,\n    -0.738240959511861310f,\n  0.674395521605139050f, -0.738370286806648510f, 0.674253928478920520f,\n    -0.738499586953671130f,\n  0.674112310562312360f, -0.738628859948174840f, 0.673970667860521620f,\n    -0.738758105785406900f,\n  0.673829000378756150f, -0.738887324460615110f, 0.673687308122224330f,\n    -0.739016515969048600f,\n  0.673545591096136100f, -0.739145680305957400f, 0.673403849305701850f,\n    -0.739274817466592520f,\n  0.673262082756132970f, -0.739403927446205760f, 0.673120291452642070f,\n    -0.739533010240050250f,\n  0.672978475400442090f, -0.739662065843379900f, 0.672836634604747410f,\n    -0.739791094251449950f,\n  0.672694769070772970f, -0.739920095459516090f, 0.672552878803734820f,\n    -0.740049069462835550f,\n  0.672410963808849900f, -0.740178016256666240f, 0.672269024091336040f,\n    -0.740306935836266940f,\n  0.672127059656411840f, -0.740435828196898020f, 0.671985070509296900f,\n    -0.740564693333820250f,\n  0.671843056655211930f, -0.740693531242295640f, 0.671701018099378320f,\n    -0.740822341917587330f,\n  0.671558954847018330f, -0.740951125354959110f, 0.671416866903355450f,\n    -0.741079881549676080f,\n  0.671274754273613490f, -0.741208610497004260f, 0.671132616963017850f,\n    -0.741337312192210660f,\n  0.670990454976794220f, -0.741465986630563290f, 0.670848268320169750f,\n    -0.741594633807331150f,\n  0.670706056998372160f, -0.741723253717784140f, 0.670563821016630040f,\n    -0.741851846357193480f,\n  0.670421560380173090f, -0.741980411720830960f, 0.670279275094231910f,\n    -0.742108949803969800f,\n  0.670136965164037760f, -0.742237460601884000f, 0.669994630594823000f,\n    -0.742365944109848460f,\n  0.669852271391821130f, -0.742494400323139180f, 0.669709887560265840f,\n    -0.742622829237033380f,\n  0.669567479105392490f, -0.742751230846809050f, 0.669425046032436910f,\n    -0.742879605147745090f,\n  0.669282588346636010f, -0.743007952135121720f, 0.669140106053227710f,\n    -0.743136271804219820f,\n  0.668997599157450270f, -0.743264564150321490f, 0.668855067664543610f,\n    -0.743392829168709970f,\n  0.668712511579748090f, -0.743521066854669120f, 0.668569930908305080f,\n    -0.743649277203484060f,\n  0.668427325655456820f, -0.743777460210440780f, 0.668284695826446670f,\n    -0.743905615870826490f,\n  0.668142041426518560f, -0.744033744179929180f, 0.667999362460917510f,\n    -0.744161845133038070f,\n  0.667856658934889440f, -0.744289918725443140f, 0.667713930853681140f,\n    -0.744417964952435620f,\n  0.667571178222540310f, -0.744545983809307250f, 0.667428401046715640f,\n    -0.744673975291351600f,\n  0.667285599331456480f, -0.744801939393862630f, 0.667142773082013310f,\n    -0.744929876112135350f,\n  0.666999922303637470f, -0.745057785441465950f, 0.666857047001581220f,\n    -0.745185667377151640f,\n  0.666714147181097670f, -0.745313521914490410f, 0.666571222847440750f,\n    -0.745441349048781680f,\n  0.666428274005865350f, -0.745569148775325430f, 0.666285300661627390f,\n    -0.745696921089422760f,\n  0.666142302819983540f, -0.745824665986375980f, 0.665999280486191500f,\n    -0.745952383461488180f,\n  0.665856233665509720f, -0.746080073510063780f, 0.665713162363197660f,\n    -0.746207736127407650f,\n  0.665570066584515560f, -0.746335371308826320f, 0.665426946334724660f,\n    -0.746462979049626770f,\n  0.665283801619087180f, -0.746590559345117310f, 0.665140632442866140f,\n    -0.746718112190607020f,\n  0.664997438811325340f, -0.746845637581406540f, 0.664854220729729660f,\n    -0.746973135512826740f,\n  0.664710978203344900f, -0.747100605980180130f, 0.664567711237437520f,\n    -0.747228048978779920f,\n  0.664424419837275180f, -0.747355464503940190f, 0.664281104008126230f,\n    -0.747482852550976570f,\n  0.664137763755260010f, -0.747610213115205150f, 0.663994399083946640f,\n    -0.747737546191943330f,\n  0.663851009999457340f, -0.747864851776509410f, 0.663707596507064120f,\n    -0.747992129864222700f,\n  0.663564158612039880f, -0.748119380450403490f, 0.663420696319658280f,\n    -0.748246603530373420f,\n  0.663277209635194100f, -0.748373799099454560f, 0.663133698563923010f,\n    -0.748500967152970430f,\n  0.662990163111121470f, -0.748628107686245330f, 0.662846603282066900f,\n    -0.748755220694604760f,\n  0.662703019082037440f, -0.748882306173375030f, 0.662559410516312400f,\n    -0.749009364117883770f,\n  0.662415777590171780f, -0.749136394523459260f, 0.662272120308896590f,\n    -0.749263397385431020f,\n  0.662128438677768720f, -0.749390372699129560f, 0.661984732702071030f,\n    -0.749517320459886170f,\n  0.661841002387086870f, -0.749644240663033480f, 0.661697247738101120f,\n    -0.749771133303904990f,\n  0.661553468760399000f, -0.749897998377835220f, 0.661409665459266940f,\n    -0.750024835880159780f,\n  0.661265837839992270f, -0.750151645806214960f, 0.661121985907862970f,\n    -0.750278428151338610f,\n  0.660978109668168060f, -0.750405182910869220f, 0.660834209126197610f,\n    -0.750531910080146410f,\n  0.660690284287242300f, -0.750658609654510590f, 0.660546335156593890f,\n    -0.750785281629303580f,\n  0.660402361739545030f, -0.750911925999867890f, 0.660258364041389050f,\n    -0.751038542761547250f,\n  0.660114342067420480f, -0.751165131909686370f, 0.659970295822934540f,\n    -0.751291693439630870f,\n  0.659826225313227430f, -0.751418227346727360f, 0.659682130543596150f,\n    -0.751544733626323570f,\n  0.659538011519338770f, -0.751671212273768430f, 0.659393868245753970f,\n    -0.751797663284411440f,\n  0.659249700728141490f, -0.751924086653603550f, 0.659105508971802200f,\n    -0.752050482376696360f,\n  0.658961292982037320f, -0.752176850449042700f, 0.658817052764149480f,\n    -0.752303190865996400f,\n  0.658672788323441890f, -0.752429503622912390f, 0.658528499665218760f,\n    -0.752555788715146390f,\n  0.658384186794785050f, -0.752682046138055230f, 0.658239849717446980f,\n    -0.752808275886996950f,\n  0.658095488438511290f, -0.752934477957330150f, 0.657951102963285630f,\n    -0.753060652344415100f,\n  0.657806693297078640f, -0.753186799043612410f, 0.657662259445200070f,\n    -0.753312918050284330f,\n  0.657517801412960120f, -0.753439009359793580f, 0.657373319205670210f,\n    -0.753565072967504190f,\n  0.657228812828642650f, -0.753691108868781210f, 0.657084282287190180f,\n    -0.753817117058990680f,\n  0.656939727586627110f, -0.753943097533499640f, 0.656795148732268070f,\n    -0.754069050287676120f,\n  0.656650545729429050f, -0.754194975316889170f, 0.656505918583426550f,\n    -0.754320872616508820f,\n  0.656361267299578000f, -0.754446742181906330f, 0.656216591883202030f,\n    -0.754572584008453840f,\n  0.656071892339617710f, -0.754698398091524390f, 0.655927168674145360f,\n    -0.754824184426492240f,\n  0.655782420892106030f, -0.754949943008732640f, 0.655637648998821820f,\n    -0.755075673833621510f,\n  0.655492852999615460f, -0.755201376896536550f, 0.655348032899810580f,\n    -0.755327052192855560f,\n  0.655203188704731930f, -0.755452699717958140f, 0.655058320419704910f,\n    -0.755578319467224540f,\n  0.654913428050056150f, -0.755703911436035880f, 0.654768511601112600f,\n    -0.755829475619774760f,\n  0.654623571078202680f, -0.755955012013824310f, 0.654478606486655350f,\n    -0.756080520613569120f,\n  0.654333617831800550f, -0.756206001414394540f, 0.654188605118969040f,\n    -0.756331454411686920f,\n  0.654043568353492640f, -0.756456879600833630f, 0.653898507540703890f,\n    -0.756582276977223470f,\n  0.653753422685936170f, -0.756707646536245670f, 0.653608313794523890f,\n    -0.756832988273290820f,\n  0.653463180871802330f, -0.756958302183750490f, 0.653318023923107670f,\n    -0.757083588263017140f,\n  0.653172842953776760f, -0.757208846506484460f, 0.653027637969147650f,\n    -0.757334076909547130f,\n  0.652882408974558960f, -0.757459279467600720f, 0.652737155975350420f,\n    -0.757584454176041810f,\n  0.652591878976862550f, -0.757709601030268080f, 0.652446577984436840f,\n    -0.757834720025678310f,\n  0.652301253003415460f, -0.757959811157672300f, 0.652155904039141700f,\n    -0.758084874421650620f,\n  0.652010531096959500f, -0.758209909813015280f, 0.651865134182214030f,\n    -0.758334917327168960f,\n  0.651719713300251020f, -0.758459896959515320f, 0.651574268456417080f,\n    -0.758584848705459500f,\n  0.651428799656059820f, -0.758709772560407390f, 0.651283306904527850f,\n    -0.758834668519765660f,\n  0.651137790207170330f, -0.758959536578942440f, 0.650992249569337660f,\n    -0.759084376733346500f,\n  0.650846684996380990f, -0.759209188978387960f, 0.650701096493652040f,\n    -0.759333973309477940f,\n  0.650555484066503990f, -0.759458729722028210f, 0.650409847720290420f,\n    -0.759583458211452010f,\n  0.650264187460365960f, -0.759708158773163440f, 0.650118503292086200f,\n    -0.759832831402577400f,\n  0.649972795220807530f, -0.759957476095110330f, 0.649827063251887100f,\n    -0.760082092846179220f,\n  0.649681307390683190f, -0.760206681651202420f, 0.649535527642554730f,\n    -0.760331242505599030f,\n  0.649389724012861770f, -0.760455775404789260f, 0.649243896506965010f,\n    -0.760580280344194340f,\n  0.649098045130226060f, -0.760704757319236920f, 0.648952169888007410f,\n    -0.760829206325340010f,\n  0.648806270785672550f, -0.760953627357928040f, 0.648660347828585840f,\n    -0.761078020412426560f,\n  0.648514401022112550f, -0.761202385484261780f, 0.648368430371618400f,\n    -0.761326722568861250f,\n  0.648222435882470420f, -0.761451031661653510f, 0.648076417560036530f,\n    -0.761575312758068000f,\n  0.647930375409685460f, -0.761699565853535270f, 0.647784309436786550f,\n    -0.761823790943486840f,\n  0.647638219646710420f, -0.761947988023355390f, 0.647492106044828100f,\n    -0.762072157088574560f,\n  0.647345968636512060f, -0.762196298134578900f, 0.647199807427135230f,\n    -0.762320411156804160f,\n  0.647053622422071650f, -0.762444496150687100f, 0.646907413626696020f,\n    -0.762568553111665380f,\n  0.646761181046383920f, -0.762692582035177870f, 0.646614924686512050f,\n    -0.762816582916664320f,\n  0.646468644552457890f, -0.762940555751565720f, 0.646322340649599590f,\n    -0.763064500535323710f,\n  0.646176012983316390f, -0.763188417263381270f, 0.646029661558988330f,\n    -0.763312305931182380f,\n  0.645883286381996440f, -0.763436166534172010f, 0.645736887457722290f,\n    -0.763559999067796150f,\n  0.645590464791548800f, -0.763683803527501870f, 0.645444018388859230f,\n    -0.763807579908737160f,\n  0.645297548255038380f, -0.763931328206951090f, 0.645151054395471270f,\n    -0.764055048417593860f,\n  0.645004536815544040f, -0.764178740536116670f, 0.644857995520643710f,\n    -0.764302404557971720f,\n  0.644711430516158420f, -0.764426040478612070f, 0.644564841807476750f,\n    -0.764549648293492150f,\n  0.644418229399988380f, -0.764673227998067140f, 0.644271593299083900f,\n    -0.764796779587793460f,\n  0.644124933510154540f, -0.764920303058128410f, 0.643978250038592660f,\n    -0.765043798404530410f,\n  0.643831542889791500f, -0.765167265622458960f, 0.643684812069144960f,\n    -0.765290704707374260f,\n  0.643538057582047850f, -0.765414115654738160f, 0.643391279433895960f,\n    -0.765537498460013070f,\n  0.643244477630085850f, -0.765660853118662390f, 0.643097652176015110f,\n    -0.765784179626150970f,\n  0.642950803077082080f, -0.765907477977944230f, 0.642803930338686100f,\n    -0.766030748169509000f,\n  0.642657033966226860f, -0.766153990196312810f, 0.642510113965105710f,\n    -0.766277204053824710f,\n  0.642363170340724320f, -0.766400389737514120f, 0.642216203098485370f,\n    -0.766523547242852100f,\n  0.642069212243792540f, -0.766646676565310380f, 0.641922197782050170f,\n    -0.766769777700361920f,\n  0.641775159718663500f, -0.766892850643480670f, 0.641628098059038860f,\n    -0.767015895390141480f,\n  0.641481012808583160f, -0.767138911935820400f, 0.641333903972704290f,\n    -0.767261900275994390f,\n  0.641186771556811250f, -0.767384860406141620f, 0.641039615566313390f,\n    -0.767507792321741270f,\n  0.640892436006621380f, -0.767630696018273270f, 0.640745232883146440f,\n    -0.767753571491219030f,\n  0.640598006201301030f, -0.767876418736060610f, 0.640450755966498140f,\n    -0.767999237748281270f,\n  0.640303482184151670f, -0.768122028523365310f, 0.640156184859676620f,\n    -0.768244791056798220f,\n  0.640008863998488440f, -0.768367525344066270f, 0.639861519606004010f,\n    -0.768490231380656750f,\n  0.639714151687640450f, -0.768612909162058270f, 0.639566760248816420f,\n    -0.768735558683760310f,\n  0.639419345294950700f, -0.768858179941253270f, 0.639271906831463510f,\n    -0.768980772930028870f,\n  0.639124444863775730f, -0.769103337645579590f, 0.638976959397309140f,\n    -0.769225874083399260f,\n  0.638829450437486400f, -0.769348382238982280f, 0.638681917989730840f,\n    -0.769470862107824560f,\n  0.638534362059466790f, -0.769593313685422940f, 0.638386782652119680f,\n    -0.769715736967275020f,\n  0.638239179773115390f, -0.769838131948879840f, 0.638091553427880930f,\n    -0.769960498625737230f,\n  0.637943903621844170f, -0.770082836993347900f, 0.637796230360433540f,\n    -0.770205147047214100f,\n  0.637648533649078810f, -0.770327428782838770f, 0.637500813493210310f,\n    -0.770449682195725960f,\n  0.637353069898259130f, -0.770571907281380700f, 0.637205302869657600f,\n    -0.770694104035309140f,\n  0.637057512412838590f, -0.770816272453018430f, 0.636909698533235870f,\n    -0.770938412530016940f,\n  0.636761861236284200f, -0.771060524261813710f, 0.636614000527419230f,\n    -0.771182607643919220f,\n  0.636466116412077180f, -0.771304662671844720f, 0.636318208895695570f,\n    -0.771426689341102590f,\n  0.636170277983712170f, -0.771548687647206300f, 0.636022323681566300f,\n    -0.771670657585670330f,\n  0.635874345994697720f, -0.771792599152010150f, 0.635726344928547180f,\n    -0.771914512341742350f,\n  0.635578320488556230f, -0.772036397150384410f, 0.635430272680167160f,\n    -0.772158253573455240f,\n  0.635282201508823530f, -0.772280081606474320f, 0.635134106979969300f,\n    -0.772401881244962340f,\n  0.634985989099049460f, -0.772523652484441330f, 0.634837847871510100f,\n    -0.772645395320433860f,\n  0.634689683302797850f, -0.772767109748463740f, 0.634541495398360130f,\n    -0.772888795764056220f,\n  0.634393284163645490f, -0.773010453362736990f, 0.634245049604103330f,\n    -0.773132082540033070f,\n  0.634096791725183740f, -0.773253683291472590f, 0.633948510532337810f,\n    -0.773375255612584470f,\n  0.633800206031017280f, -0.773496799498899050f, 0.633651878226674900f,\n    -0.773618314945947460f,\n  0.633503527124764320f, -0.773739801949261840f, 0.633355152730740060f,\n    -0.773861260504375540f,\n  0.633206755050057190f, -0.773982690606822790f, 0.633058334088172250f,\n    -0.774104092252138940f,\n  0.632909889850541860f, -0.774225465435860570f, 0.632761422342624000f,\n    -0.774346810153525020f,\n  0.632612931569877520f, -0.774468126400670860f, 0.632464417537761840f,\n    -0.774589414172837550f,\n  0.632315880251737680f, -0.774710673465565550f, 0.632167319717266030f,\n    -0.774831904274396850f,\n  0.632018735939809060f, -0.774953106594873820f, 0.631870128924829850f,\n    -0.775074280422540450f,\n  0.631721498677792370f, -0.775195425752941310f, 0.631572845204161130f,\n    -0.775316542581622410f,\n  0.631424168509401860f, -0.775437630904130430f, 0.631275468598980870f,\n    -0.775558690716013580f,\n  0.631126745478365340f, -0.775679722012820540f, 0.630977999153023660f,\n    -0.775800724790101540f,\n  0.630829229628424470f, -0.775921699043407580f, 0.630680436910038060f,\n    -0.776042644768290770f,\n  0.630531621003334600f, -0.776163561960304340f, 0.630382781913785940f,\n    -0.776284450615002400f,\n  0.630233919646864480f, -0.776405310727940390f, 0.630085034208043290f,\n    -0.776526142294674430f,\n  0.629936125602796550f, -0.776646945310762060f, 0.629787193836599200f,\n    -0.776767719771761510f,\n  0.629638238914927100f, -0.776888465673232440f, 0.629489260843256740f,\n    -0.777009183010735290f,\n  0.629340259627065750f, -0.777129871779831620f, 0.629191235271832410f,\n    -0.777250531976084070f,\n  0.629042187783036000f, -0.777371163595056200f, 0.628893117166156480f,\n    -0.777491766632312900f,\n  0.628744023426674790f, -0.777612341083419920f, 0.628594906570072660f,\n    -0.777732886943944050f,\n  0.628445766601832710f, -0.777853404209453040f, 0.628296603527438440f,\n    -0.777973892875515990f,\n  0.628147417352374120f, -0.778094352937702790f, 0.627998208082124810f,\n    -0.778214784391584420f,\n  0.627848975722176570f, -0.778335187232733090f, 0.627699720278016240f,\n    -0.778455561456721900f,\n  0.627550441755131530f, -0.778575907059124940f, 0.627401140159011160f,\n    -0.778696224035517530f,\n  0.627251815495144190f, -0.778816512381475870f, 0.627102467769021010f,\n    -0.778936772092577500f,\n  0.626953096986132770f, -0.779057003164400630f, 0.626803703151971310f,\n    -0.779177205592524680f,\n  0.626654286272029460f, -0.779297379372530300f, 0.626504846351800930f,\n    -0.779417524499998900f,\n  0.626355383396779990f, -0.779537640970513150f, 0.626205897412462130f,\n    -0.779657728779656780f,\n  0.626056388404343520f, -0.779777787923014440f, 0.625906856377921210f,\n    -0.779897818396171890f,\n  0.625757301338692900f, -0.780017820194715990f, 0.625607723292157410f,\n    -0.780137793314234500f,\n  0.625458122243814360f, -0.780257737750316590f, 0.625308498199164010f,\n    -0.780377653498552040f,\n  0.625158851163707730f, -0.780497540554531910f, 0.625009181142947460f,\n    -0.780617398913848290f,\n  0.624859488142386450f, -0.780737228572094380f, 0.624709772167528100f,\n    -0.780857029524864470f,\n  0.624560033223877320f, -0.780976801767753750f, 0.624410271316939380f,\n    -0.781096545296358410f,\n  0.624260486452220650f, -0.781216260106276090f, 0.624110678635228510f,\n    -0.781335946193104870f,\n  0.623960847871470770f, -0.781455603552444480f, 0.623810994166456130f,\n    -0.781575232179895550f,\n  0.623661117525694640f, -0.781694832071059390f, 0.623511217954696550f,\n    -0.781814403221538830f,\n  0.623361295458973340f, -0.781933945626937630f, 0.623211350044037270f,\n    -0.782053459282860300f,\n  0.623061381715401370f, -0.782172944184912900f, 0.622911390478579460f,\n    -0.782292400328702400f,\n  0.622761376339086460f, -0.782411827709836420f, 0.622611339302437730f,\n    -0.782531226323924240f,\n  0.622461279374150080f, -0.782650596166575730f, 0.622311196559740320f,\n    -0.782769937233402050f,\n  0.622161090864726930f, -0.782889249520015480f, 0.622010962294628600f,\n    -0.783008533022029110f,\n  0.621860810854965360f, -0.783127787735057310f, 0.621710636551257690f,\n    -0.783247013654715380f,\n  0.621560439389027270f, -0.783366210776619720f, 0.621410219373796150f,\n    -0.783485379096387820f,\n  0.621259976511087660f, -0.783604518609638200f, 0.621109710806425740f,\n    -0.783723629311990470f,\n  0.620959422265335180f, -0.783842711199065230f, 0.620809110893341900f,\n    -0.783961764266484010f,\n  0.620658776695972140f, -0.784080788509869950f, 0.620508419678753360f,\n    -0.784199783924846570f,\n  0.620358039847213830f, -0.784318750507038920f, 0.620207637206882430f,\n    -0.784437688252072720f,\n  0.620057211763289210f, -0.784556597155575240f, 0.619906763521964830f,\n    -0.784675477213174320f,\n  0.619756292488440660f, -0.784794328420499230f, 0.619605798668249390f,\n    -0.784913150773180020f,\n  0.619455282066924020f, -0.785031944266848080f, 0.619304742689998690f,\n    -0.785150708897135560f,\n  0.619154180543008410f, -0.785269444659675850f, 0.619003595631488770f,\n    -0.785388151550103550f,\n  0.618852987960976320f, -0.785506829564053930f, 0.618702357537008640f,\n    -0.785625478697163700f,\n  0.618551704365123860f, -0.785744098945070360f, 0.618401028450860980f,\n    -0.785862690303412600f,\n  0.618250329799760250f, -0.785981252767830150f, 0.618099608417362110f,\n    -0.786099786333963820f,\n  0.617948864309208260f, -0.786218290997455550f, 0.617798097480841140f,\n    -0.786336766753948260f,\n  0.617647307937803980f, -0.786455213599085770f, 0.617496495685640910f,\n    -0.786573631528513230f,\n  0.617345660729896940f, -0.786692020537876680f, 0.617194803076117630f,\n    -0.786810380622823490f,\n  0.617043922729849760f, -0.786928711779001700f, 0.616893019696640790f,\n    -0.787047014002060790f,\n  0.616742093982038830f, -0.787165287287650890f, 0.616591145591593230f,\n    -0.787283531631423620f,\n  0.616440174530853650f, -0.787401747029031320f, 0.616289180805370980f,\n    -0.787519933476127810f,\n  0.616138164420696910f, -0.787638090968367450f, 0.615987125382383870f,\n    -0.787756219501405950f,\n  0.615836063695985090f, -0.787874319070900110f, 0.615684979367054570f,\n    -0.787992389672507950f,\n  0.615533872401147430f, -0.788110431301888070f, 0.615382742803819330f,\n    -0.788228443954700490f,\n  0.615231590580626820f, -0.788346427626606230f, 0.615080415737127460f,\n    -0.788464382313267430f,\n  0.614929218278879590f, -0.788582308010347120f, 0.614777998211442190f,\n    -0.788700204713509660f,\n  0.614626755540375050f, -0.788818072418420170f, 0.614475490271239160f,\n    -0.788935911120745130f,\n  0.614324202409595950f, -0.789053720816151880f, 0.614172891961007990f,\n    -0.789171501500308790f,\n  0.614021558931038490f, -0.789289253168885650f, 0.613870203325251440f,\n    -0.789406975817552810f,\n  0.613718825149211830f, -0.789524669441982190f, 0.613567424408485330f,\n    -0.789642334037846340f,\n  0.613416001108638590f, -0.789759969600819070f, 0.613264555255239150f,\n    -0.789877576126575280f,\n  0.613113086853854910f, -0.789995153610791090f, 0.612961595910055170f,\n    -0.790112702049143300f,\n  0.612810082429409710f, -0.790230221437310030f, 0.612658546417489290f,\n    -0.790347711770970520f,\n  0.612506987879865570f, -0.790465173045804880f, 0.612355406822110760f,\n    -0.790582605257494460f,\n  0.612203803249798060f, -0.790700008401721610f, 0.612052177168501580f,\n    -0.790817382474169660f,\n  0.611900528583796070f, -0.790934727470523290f, 0.611748857501257400f,\n    -0.791052043386467950f,\n  0.611597163926462020f, -0.791169330217690090f, 0.611445447864987110f,\n    -0.791286587959877720f,\n  0.611293709322411010f, -0.791403816608719500f, 0.611141948304312570f,\n    -0.791521016159905220f,\n  0.610990164816271770f, -0.791638186609125770f, 0.610838358863869280f,\n    -0.791755327952073150f,\n  0.610686530452686280f, -0.791872440184440470f, 0.610534679588305320f,\n    -0.791989523301921850f,\n  0.610382806276309480f, -0.792106577300212390f, 0.610230910522282620f,\n    -0.792223602175008310f,\n  0.610078992331809620f, -0.792340597922007060f, 0.609927051710476230f,\n    -0.792457564536906970f,\n  0.609775088663868430f, -0.792574502015407580f, 0.609623103197573730f,\n    -0.792691410353209450f,\n  0.609471095317180240f, -0.792808289546014120f, 0.609319065028276820f,\n    -0.792925139589524260f,\n  0.609167012336453210f, -0.793041960479443640f, 0.609014937247299940f,\n    -0.793158752211477140f,\n  0.608862839766408200f, -0.793275514781330630f, 0.608710719899370420f,\n    -0.793392248184711100f,\n  0.608558577651779450f, -0.793508952417326660f, 0.608406413029229260f,\n    -0.793625627474886190f,\n  0.608254226037314490f, -0.793742273353100100f, 0.608102016681630550f,\n    -0.793858890047679620f,\n  0.607949784967773740f, -0.793975477554337170f, 0.607797530901341140f,\n    -0.794092035868785960f,\n  0.607645254487930830f, -0.794208564986740640f, 0.607492955733141660f,\n    -0.794325064903916520f,\n  0.607340634642572930f, -0.794441535616030590f, 0.607188291221825160f,\n    -0.794557977118800270f,\n  0.607035925476499760f, -0.794674389407944550f, 0.606883537412198580f,\n    -0.794790772479183170f,\n  0.606731127034524480f, -0.794907126328237010f, 0.606578694349081400f,\n    -0.795023450950828050f,\n  0.606426239361473550f, -0.795139746342679590f, 0.606273762077306430f,\n    -0.795256012499515500f,\n  0.606121262502186230f, -0.795372249417061190f, 0.605968740641719790f,\n    -0.795488457091042990f,\n  0.605816196501515080f, -0.795604635517188070f, 0.605663630087180490f,\n    -0.795720784691225090f,\n  0.605511041404325550f, -0.795836904608883460f, 0.605358430458560530f,\n    -0.795952995265893910f,\n  0.605205797255496500f, -0.796069056657987990f, 0.605053141800745430f,\n    -0.796185088780898440f,\n  0.604900464099919930f, -0.796301091630359110f, 0.604747764158633410f,\n    -0.796417065202104980f,\n  0.604595041982500360f, -0.796533009491872000f, 0.604442297577135970f,\n    -0.796648924495397150f,\n  0.604289530948156070f, -0.796764810208418720f, 0.604136742101177630f,\n    -0.796880666626675780f,\n  0.603983931041818020f, -0.796996493745908750f, 0.603831097775695880f,\n    -0.797112291561858920f,\n  0.603678242308430370f, -0.797228060070268700f, 0.603525364645641550f,\n    -0.797343799266881700f,\n  0.603372464792950370f, -0.797459509147442460f, 0.603219542755978440f,\n    -0.797575189707696590f,\n  0.603066598540348280f, -0.797690840943391040f, 0.602913632151683140f,\n    -0.797806462850273570f,\n  0.602760643595607220f, -0.797922055424093000f, 0.602607632877745550f,\n    -0.798037618660599410f,\n  0.602454600003723860f, -0.798153152555543750f, 0.602301544979168550f,\n    -0.798268657104678310f,\n  0.602148467809707320f, -0.798384132303756380f, 0.601995368500968130f,\n    -0.798499578148532010f,\n  0.601842247058580030f, -0.798614994634760820f, 0.601689103488173060f,\n    -0.798730381758199210f,\n  0.601535937795377730f, -0.798845739514604580f, 0.601382749985825420f,\n    -0.798961067899735760f,\n  0.601229540065148620f, -0.799076366909352350f, 0.601076308038980160f,\n    -0.799191636539215210f,\n  0.600923053912954090f, -0.799306876785086160f, 0.600769777692705230f,\n    -0.799422087642728040f,\n  0.600616479383868970f, -0.799537269107905010f, 0.600463158992081690f,\n    -0.799652421176382130f,\n  0.600309816522980430f, -0.799767543843925680f, 0.600156451982203350f,\n    -0.799882637106302810f,\n  0.600003065375389060f, -0.799997700959281910f, 0.599849656708177360f,\n    -0.800112735398632370f,\n  0.599696225986208310f, -0.800227740420124790f, 0.599542773215123390f,\n    -0.800342716019530660f,\n  0.599389298400564540f, -0.800457662192622710f, 0.599235801548174570f,\n    -0.800572578935174750f,\n  0.599082282663597310f, -0.800687466242961500f, 0.598928741752476900f,\n    -0.800802324111759110f,\n  0.598775178820458720f, -0.800917152537344300f, 0.598621593873188920f,\n    -0.801031951515495330f,\n  0.598467986916314310f, -0.801146721041991250f, 0.598314357955482600f,\n    -0.801261461112612540f,\n  0.598160706996342380f, -0.801376171723140130f, 0.598007034044542700f,\n    -0.801490852869356840f,\n  0.597853339105733910f, -0.801605504547046040f, 0.597699622185566830f,\n    -0.801720126751992330f,\n  0.597545883289693270f, -0.801834719479981310f, 0.597392122423765710f,\n    -0.801949282726799660f,\n  0.597238339593437530f, -0.802063816488235440f, 0.597084534804362740f,\n    -0.802178320760077450f,\n  0.596930708062196500f, -0.802292795538115720f, 0.596776859372594500f,\n    -0.802407240818141300f,\n  0.596622988741213330f, -0.802521656595946320f, 0.596469096173710360f,\n    -0.802636042867324150f,\n  0.596315181675743820f, -0.802750399628069160f, 0.596161245252972540f,\n    -0.802864726873976590f,\n  0.596007286911056530f, -0.802979024600843140f, 0.595853306655656390f,\n    -0.803093292804466400f,\n  0.595699304492433470f, -0.803207531480644830f, 0.595545280427049790f,\n    -0.803321740625178470f,\n  0.595391234465168730f, -0.803435920233868120f, 0.595237166612453850f,\n    -0.803550070302515570f,\n  0.595083076874569960f, -0.803664190826924090f, 0.594928965257182420f,\n    -0.803778281802897570f,\n  0.594774831765957580f, -0.803892343226241260f, 0.594620676406562240f,\n    -0.804006375092761520f,\n  0.594466499184664540f, -0.804120377398265700f, 0.594312300105932830f,\n    -0.804234350138562260f,\n  0.594158079176036800f, -0.804348293309460780f, 0.594003836400646690f,\n    -0.804462206906771840f,\n  0.593849571785433630f, -0.804576090926307000f, 0.593695285336069300f,\n    -0.804689945363879500f,\n  0.593540977058226390f, -0.804803770215302810f, 0.593386646957578480f,\n    -0.804917565476392150f,\n  0.593232295039799800f, -0.805031331142963660f, 0.593077921310565580f,\n    -0.805145067210834120f,\n  0.592923525775551410f, -0.805258773675822210f, 0.592769108440434070f,\n    -0.805372450533747060f,\n  0.592614669310891130f, -0.805486097780429120f, 0.592460208392600940f,\n    -0.805599715411689950f,\n  0.592305725691242400f, -0.805713303423352120f, 0.592151221212495640f,\n    -0.805826861811239300f,\n  0.591996694962040990f, -0.805940390571176280f, 0.591842146945560250f,\n    -0.806053889698988950f,\n  0.591687577168735550f, -0.806167359190504310f, 0.591532985637249990f,\n    -0.806280799041550370f,\n  0.591378372356787580f, -0.806394209247956240f, 0.591223737333032910f,\n    -0.806507589805552260f,\n  0.591069080571671510f, -0.806620940710169650f, 0.590914402078389520f,\n    -0.806734261957640750f,\n  0.590759701858874280f, -0.806847553543799220f, 0.590604979918813440f,\n    -0.806960815464479620f,\n  0.590450236263895920f, -0.807074047715517610f, 0.590295470899810940f,\n    -0.807187250292749850f,\n  0.590140683832248940f, -0.807300423192014450f, 0.589985875066900920f,\n    -0.807413566409150190f,\n  0.589831044609458900f, -0.807526679939997160f, 0.589676192465615420f,\n    -0.807639763780396370f,\n  0.589521318641063940f, -0.807752817926190360f, 0.589366423141498790f,\n    -0.807865842373222120f,\n  0.589211505972615070f, -0.807978837117336310f, 0.589056567140108460f,\n    -0.808091802154378260f,\n  0.588901606649675840f, -0.808204737480194720f, 0.588746624507014650f,\n    -0.808317643090633250f,\n  0.588591620717822890f, -0.808430518981542720f, 0.588436595287799900f,\n    -0.808543365148773010f,\n  0.588281548222645330f, -0.808656181588174980f, 0.588126479528059850f,\n    -0.808768968295600850f,\n  0.587971389209745120f, -0.808881725266903610f, 0.587816277273403020f,\n    -0.808994452497937560f,\n  0.587661143724736770f, -0.809107149984558130f, 0.587505988569450020f,\n    -0.809219817722621750f,\n  0.587350811813247660f, -0.809332455707985840f, 0.587195613461834910f,\n    -0.809445063936509170f,\n  0.587040393520918080f, -0.809557642404051260f, 0.586885151996203950f,\n    -0.809670191106473090f,\n  0.586729888893400500f, -0.809782710039636420f, 0.586574604218216280f,\n    -0.809895199199404450f,\n  0.586419297976360500f, -0.810007658581641140f, 0.586263970173543700f,\n    -0.810120088182211600f,\n  0.586108620815476430f, -0.810232487996982330f, 0.585953249907870680f,\n    -0.810344858021820550f,\n  0.585797857456438860f, -0.810457198252594770f, 0.585642443466894420f,\n    -0.810569508685174630f,\n  0.585487007944951450f, -0.810681789315430670f, 0.585331550896324940f,\n    -0.810794040139234730f,\n  0.585176072326730410f, -0.810906261152459670f, 0.585020572241884530f,\n    -0.811018452350979470f,\n  0.584865050647504490f, -0.811130613730669190f, 0.584709507549308500f,\n    -0.811242745287404810f,\n  0.584553942953015330f, -0.811354847017063730f, 0.584398356864344710f,\n    -0.811466918915524250f,\n  0.584242749289016980f, -0.811578960978665890f, 0.584087120232753550f,\n    -0.811690973202369050f,\n  0.583931469701276300f, -0.811802955582515360f, 0.583775797700308070f,\n    -0.811914908114987680f,\n  0.583620104235572760f, -0.812026830795669730f, 0.583464389312794430f,\n    -0.812138723620446480f,\n  0.583308652937698290f, -0.812250586585203880f, 0.583152895116010540f,\n    -0.812362419685829120f,\n  0.582997115853457700f, -0.812474222918210480f, 0.582841315155767650f,\n    -0.812585996278237020f,\n  0.582685493028668460f, -0.812697739761799490f, 0.582529649477889320f,\n    -0.812809453364789160f,\n  0.582373784509160220f, -0.812921137083098770f, 0.582217898128211790f,\n    -0.813032790912621930f,\n  0.582061990340775550f, -0.813144414849253590f, 0.581906061152583920f,\n    -0.813256008888889380f,\n  0.581750110569369760f, -0.813367573027426570f, 0.581594138596866930f,\n    -0.813479107260763220f,\n  0.581438145240810280f, -0.813590611584798510f, 0.581282130506935110f,\n    -0.813702085995432700f,\n  0.581126094400977620f, -0.813813530488567190f, 0.580970036928674880f,\n    -0.813924945060104490f,\n  0.580813958095764530f, -0.814036329705948300f, 0.580657857907985410f,\n    -0.814147684422003360f,\n  0.580501736371076600f, -0.814259009204175270f, 0.580345593490778300f,\n    -0.814370304048371070f,\n  0.580189429272831680f, -0.814481568950498610f, 0.580033243722978150f,\n    -0.814592803906467270f,\n  0.579877036846960350f, -0.814704008912187080f, 0.579720808650521560f,\n    -0.814815183963569330f,\n  0.579564559139405740f, -0.814926329056526620f, 0.579408288319357980f,\n    -0.815037444186972220f,\n  0.579251996196123550f, -0.815148529350820830f, 0.579095682775449210f,\n    -0.815259584543988280f,\n  0.578939348063081890f, -0.815370609762391290f, 0.578782992064769690f,\n    -0.815481605001947770f,\n  0.578626614786261430f, -0.815592570258576680f, 0.578470216233306740f,\n    -0.815703505528198260f,\n  0.578313796411655590f, -0.815814410806733780f, 0.578157355327059360f,\n    -0.815925286090105390f,\n  0.578000892985269910f, -0.816036131374236700f, 0.577844409392039850f,\n    -0.816146946655052160f,\n  0.577687904553122800f, -0.816257731928477390f, 0.577531378474272830f,\n    -0.816368487190439200f,\n  0.577374831161244880f, -0.816479212436865390f, 0.577218262619794920f,\n    -0.816589907663684890f,\n  0.577061672855679550f, -0.816700572866827850f, 0.576905061874655960f,\n    -0.816811208042225290f,\n  0.576748429682482520f, -0.816921813185809480f, 0.576591776284917870f,\n    -0.817032388293513880f,\n  0.576435101687721830f, -0.817142933361272970f, 0.576278405896654910f,\n    -0.817253448385022230f,\n  0.576121688917478390f, -0.817363933360698460f, 0.575964950755954330f,\n    -0.817474388284239240f,\n  0.575808191417845340f, -0.817584813151583710f, 0.575651410908915250f,\n    -0.817695207958671680f,\n  0.575494609234928230f, -0.817805572701444270f, 0.575337786401649560f,\n    -0.817915907375843740f,\n  0.575180942414845190f, -0.818026211977813440f, 0.575024077280281820f,\n    -0.818136486503297620f,\n  0.574867191003726740f, -0.818246730948241960f, 0.574710283590948450f,\n    -0.818356945308593150f,\n  0.574553355047715760f, -0.818467129580298660f, 0.574396405379798750f,\n    -0.818577283759307490f,\n  0.574239434592967890f, -0.818687407841569570f, 0.574082442692994470f,\n    -0.818797501823036010f,\n  0.573925429685650750f, -0.818907565699658950f, 0.573768395576709560f,\n    -0.819017599467391500f,\n  0.573611340371944610f, -0.819127603122188240f, 0.573454264077130400f,\n    -0.819237576660004520f,\n  0.573297166698042320f, -0.819347520076796900f, 0.573140048240456060f,\n    -0.819457433368523280f,\n  0.572982908710148680f, -0.819567316531142230f, 0.572825748112897550f,\n    -0.819677169560613760f,\n  0.572668566454481160f, -0.819786992452898990f, 0.572511363740678790f,\n    -0.819896785203959810f,\n  0.572354139977270030f, -0.820006547809759680f, 0.572196895170035580f,\n    -0.820116280266262710f,\n  0.572039629324757050f, -0.820225982569434690f, 0.571882342447216590f,\n    -0.820335654715241840f,\n  0.571725034543197120f, -0.820445296699652050f, 0.571567705618482580f,\n    -0.820554908518633890f,\n  0.571410355678857340f, -0.820664490168157460f, 0.571252984730106660f,\n    -0.820774041644193650f,\n  0.571095592778016690f, -0.820883562942714580f, 0.570938179828374360f,\n    -0.820993054059693470f,\n  0.570780745886967370f, -0.821102514991104650f, 0.570623290959583860f,\n    -0.821211945732923550f,\n  0.570465815052012990f, -0.821321346281126740f, 0.570308318170045010f,\n    -0.821430716631691760f,\n  0.570150800319470300f, -0.821540056780597610f, 0.569993261506080650f,\n    -0.821649366723823830f,\n  0.569835701735668110f, -0.821758646457351640f, 0.569678121014025710f,\n    -0.821867895977163140f,\n  0.569520519346947250f, -0.821977115279241550f, 0.569362896740227330f,\n    -0.822086304359571090f,\n  0.569205253199661200f, -0.822195463214137170f, 0.569047588731045220f,\n    -0.822304591838926350f,\n  0.568889903340175970f, -0.822413690229926390f, 0.568732197032851160f,\n    -0.822522758383125940f,\n  0.568574469814869250f, -0.822631796294514990f, 0.568416721692029390f,\n    -0.822740803960084420f,\n  0.568258952670131490f, -0.822849781375826320f, 0.568101162754976570f,\n    -0.822958728537734000f,\n  0.567943351952365670f, -0.823067645441801670f, 0.567785520268101250f,\n    -0.823176532084024860f,\n  0.567627667707986230f, -0.823285388460400110f, 0.567469794277824620f,\n    -0.823394214566925080f,\n  0.567311899983420800f, -0.823503010399598390f, 0.567153984830580100f,\n    -0.823611775954420260f,\n  0.566996048825108680f, -0.823720511227391320f, 0.566838091972813320f,\n    -0.823829216214513990f,\n  0.566680114279501710f, -0.823937890911791370f, 0.566522115750982100f,\n    -0.824046535315227760f,\n  0.566364096393063950f, -0.824155149420828570f, 0.566206056211556840f,\n    -0.824263733224600450f,\n  0.566047995212271560f, -0.824372286722551250f, 0.565889913401019570f,\n    -0.824480809910689500f,\n  0.565731810783613230f, -0.824589302785025290f, 0.565573687365865440f,\n    -0.824697765341569470f,\n  0.565415543153589770f, -0.824806197576334330f, 0.565257378152600910f,\n    -0.824914599485333080f,\n  0.565099192368714090f, -0.825022971064580220f, 0.564940985807745320f,\n    -0.825131312310090960f,\n  0.564782758475511400f, -0.825239623217882130f, 0.564624510377830120f,\n    -0.825347903783971380f,\n  0.564466241520519500f, -0.825456154004377440f, 0.564307951909398750f,\n    -0.825564373875120490f,\n  0.564149641550287680f, -0.825672563392221390f, 0.563991310449007080f,\n    -0.825780722551702430f,\n  0.563832958611378170f, -0.825888851349586780f, 0.563674586043223180f,\n    -0.825996949781898970f,\n  0.563516192750364910f, -0.826105017844664610f, 0.563357778738627020f,\n    -0.826213055533910110f,\n  0.563199344013834090f, -0.826321062845663420f, 0.563040888581811230f,\n    -0.826429039775953390f,\n  0.562882412448384550f, -0.826536986320809960f, 0.562723915619380400f,\n    -0.826644902476264210f,\n  0.562565398100626560f, -0.826752788238348520f, 0.562406859897951140f,\n    -0.826860643603096080f,\n  0.562248301017183150f, -0.826968468566541490f, 0.562089721464152480f,\n    -0.827076263124720270f,\n  0.561931121244689470f, -0.827184027273669020f, 0.561772500364625450f,\n    -0.827291761009425810f,\n  0.561613858829792420f, -0.827399464328029350f, 0.561455196646023280f,\n    -0.827507137225519830f,\n  0.561296513819151470f, -0.827614779697938400f, 0.561137810355011530f,\n    -0.827722391741327220f,\n  0.560979086259438260f, -0.827829973351729810f, 0.560820341538267540f,\n    -0.827937524525190870f,\n  0.560661576197336030f, -0.828045045257755800f, 0.560502790242481060f,\n    -0.828152535545471410f,\n  0.560343983679540860f, -0.828259995384385550f, 0.560185156514354080f,\n    -0.828367424770547480f,\n  0.560026308752760380f, -0.828474823700007130f, 0.559867440400600320f,\n    -0.828582192168815790f,\n  0.559708551463714790f, -0.828689530173025710f, 0.559549641947945870f,\n    -0.828796837708690610f,\n  0.559390711859136140f, -0.828904114771864870f, 0.559231761203129010f,\n    -0.829011361358604430f,\n  0.559072789985768480f, -0.829118577464965980f, 0.558913798212899770f,\n    -0.829225763087007570f,\n  0.558754785890368310f, -0.829332918220788250f, 0.558595753024020760f,\n    -0.829440042862368170f,\n  0.558436699619704100f, -0.829547137007808800f, 0.558277625683266330f,\n    -0.829654200653172640f,\n  0.558118531220556100f, -0.829761233794523050f, 0.557959416237422960f,\n    -0.829868236427924840f,\n  0.557800280739717100f, -0.829975208549443840f, 0.557641124733289420f,\n    -0.830082150155146970f,\n  0.557481948223991660f, -0.830189061241102370f, 0.557322751217676160f,\n    -0.830295941803379070f,\n  0.557163533720196340f, -0.830402791838047550f, 0.557004295737406060f,\n    -0.830509611341179070f,\n  0.556845037275160100f, -0.830616400308846200f, 0.556685758339313890f,\n    -0.830723158737122880f,\n  0.556526458935723720f, -0.830829886622083570f, 0.556367139070246490f,\n    -0.830936583959804410f,\n  0.556207798748739930f, -0.831043250746362320f, 0.556048437977062720f,\n    -0.831149886977835430f,\n  0.555889056761073920f, -0.831256492650303210f, 0.555729655106633520f,\n    -0.831363067759845920f,\n  0.555570233019602290f, -0.831469612302545240f, 0.555410790505841740f,\n    -0.831576126274483630f,\n  0.555251327571214090f, -0.831682609671745120f, 0.555091844221582420f,\n    -0.831789062490414400f,\n  0.554932340462810370f, -0.831895484726577590f, 0.554772816300762580f,\n    -0.832001876376321840f,\n  0.554613271741304040f, -0.832108237435735480f, 0.554453706790301040f,\n    -0.832214567900907980f,\n  0.554294121453620110f, -0.832320867767929680f, 0.554134515737128910f,\n    -0.832427137032892280f,\n  0.553974889646695610f, -0.832533375691888680f, 0.553815243188189090f,\n    -0.832639583741012770f,\n  0.553655576367479310f, -0.832745761176359460f, 0.553495889190436570f,\n    -0.832851907994024980f,\n  0.553336181662932410f, -0.832958024190106670f, 0.553176453790838460f,\n    -0.833064109760702890f,\n  0.553016705580027580f, -0.833170164701913190f, 0.552856937036373290f,\n    -0.833276189009838240f,\n  0.552697148165749770f, -0.833382182680579730f, 0.552537338974032120f,\n    -0.833488145710240770f,\n  0.552377509467096070f, -0.833594078094925140f, 0.552217659650817930f,\n    -0.833699979830738290f,\n  0.552057789531074980f, -0.833805850913786340f, 0.551897899113745320f,\n    -0.833911691340176730f,\n  0.551737988404707450f, -0.834017501106018130f, 0.551578057409841000f,\n    -0.834123280207419990f,\n  0.551418106135026060f, -0.834229028640493420f, 0.551258134586143700f,\n    -0.834334746401350080f,\n  0.551098142769075430f, -0.834440433486103190f, 0.550938130689703880f,\n    -0.834546089890866760f,\n  0.550778098353912230f, -0.834651715611756330f, 0.550618045767584330f,\n    -0.834757310644888230f,\n  0.550457972936604810f, -0.834862874986380010f, 0.550297879866859190f,\n    -0.834968408632350450f,\n  0.550137766564233630f, -0.835073911578919300f, 0.549977633034615000f,\n    -0.835179383822207580f,\n  0.549817479283891020f, -0.835284825358337370f, 0.549657305317949980f,\n    -0.835390236183431780f,\n  0.549497111142680960f, -0.835495616293615350f, 0.549336896763974010f,\n    -0.835600965685013410f,\n  0.549176662187719770f, -0.835706284353752600f, 0.549016407419809390f,\n    -0.835811572295960590f,\n  0.548856132466135290f, -0.835916829507766360f, 0.548695837332590090f,\n    -0.836022055985299880f,\n  0.548535522025067390f, -0.836127251724692160f, 0.548375186549461600f,\n    -0.836232416722075600f,\n  0.548214830911667780f, -0.836337550973583530f, 0.548054455117581880f,\n    -0.836442654475350380f,\n  0.547894059173100190f, -0.836547727223511890f, 0.547733643084120200f,\n    -0.836652769214204950f,\n  0.547573206856539870f, -0.836757780443567190f, 0.547412750496257930f,\n    -0.836862760907737810f,\n  0.547252274009174090f, -0.836967710602857020f, 0.547091777401188530f,\n    -0.837072629525066000f,\n  0.546931260678202190f, -0.837177517670507190f, 0.546770723846116800f,\n    -0.837282375035324320f,\n  0.546610166910834860f, -0.837387201615661940f, 0.546449589878259760f,\n    -0.837491997407665890f,\n  0.546288992754295210f, -0.837596762407483040f, 0.546128375544846060f,\n    -0.837701496611261700f,\n  0.545967738255817680f, -0.837806200015150940f, 0.545807080893116140f,\n    -0.837910872615301060f,\n  0.545646403462648590f, -0.838015514407863700f, 0.545485705970322530f,\n    -0.838120125388991500f,\n  0.545324988422046460f, -0.838224705554837970f, 0.545164250823729320f,\n    -0.838329254901558300f,\n  0.545003493181281160f, -0.838433773425308340f, 0.544842715500612470f,\n    -0.838538261122245170f,\n  0.544681917787634530f, -0.838642717988527300f, 0.544521100048259710f,\n    -0.838747144020313920f,\n  0.544360262288400400f, -0.838851539213765760f, 0.544199404513970420f,\n    -0.838955903565044350f,\n  0.544038526730883930f, -0.839060237070312630f, 0.543877628945055980f,\n    -0.839164539725734570f,\n  0.543716711162402390f, -0.839268811527475230f, 0.543555773388839650f,\n    -0.839373052471700690f,\n  0.543394815630284800f, -0.839477262554578550f, 0.543233837892656000f,\n    -0.839581441772277120f,\n  0.543072840181871850f, -0.839685590120966110f, 0.542911822503851730f,\n    -0.839789707596816260f,\n  0.542750784864516000f, -0.839893794195999410f, 0.542589727269785270f,\n    -0.839997849914688730f,\n  0.542428649725581360f, -0.840101874749058400f, 0.542267552237826520f,\n    -0.840205868695283580f,\n  0.542106434812444030f, -0.840309831749540770f, 0.541945297455357470f,\n    -0.840413763908007480f,\n  0.541784140172491660f, -0.840517665166862440f, 0.541622962969771640f,\n    -0.840621535522285690f,\n  0.541461765853123560f, -0.840725374970458070f, 0.541300548828474120f,\n    -0.840829183507561640f,\n  0.541139311901750910f, -0.840932961129779670f, 0.540978055078882190f,\n    -0.841036707833296650f,\n  0.540816778365796670f, -0.841140423614298080f, 0.540655481768424260f,\n    -0.841244108468970580f,\n  0.540494165292695230f, -0.841347762393501950f, 0.540332828944540820f,\n    -0.841451385384081260f,\n  0.540171472729892970f, -0.841554977436898330f, 0.540010096654684020f,\n    -0.841658538548144760f,\n  0.539848700724847700f, -0.841762068714012490f, 0.539687284946317570f,\n    -0.841865567930695340f,\n  0.539525849325029010f, -0.841969036194387680f, 0.539364393866917150f,\n    -0.842072473501285450f,\n  0.539202918577918240f, -0.842175879847585570f, 0.539041423463969550f,\n    -0.842279255229485880f,\n  0.538879908531008420f, -0.842382599643185960f, 0.538718373784973670f,\n    -0.842485913084885630f,\n  0.538556819231804210f, -0.842589195550786600f, 0.538395244877439950f,\n    -0.842692447037091560f,\n  0.538233650727821700f, -0.842795667540004120f, 0.538072036788890600f,\n    -0.842898857055729310f,\n  0.537910403066588990f, -0.843002015580472830f, 0.537748749566859470f,\n    -0.843105143110442050f,\n  0.537587076295645510f, -0.843208239641845440f, 0.537425383258891660f,\n    -0.843311305170892030f,\n  0.537263670462542530f, -0.843414339693792760f, 0.537101937912544240f,\n    -0.843517343206759080f,\n  0.536940185614843020f, -0.843620315706004040f, 0.536778413575385920f,\n    -0.843723257187741550f,\n  0.536616621800121150f, -0.843826167648186740f, 0.536454810294997090f,\n    -0.843929047083555870f,\n  0.536292979065963180f, -0.844031895490066410f, 0.536131128118969350f,\n    -0.844134712863936930f,\n  0.535969257459966710f, -0.844237499201387020f, 0.535807367094906620f,\n    -0.844340254498637590f,\n  0.535645457029741090f, -0.844442978751910660f, 0.535483527270423370f,\n    -0.844545671957429240f,\n  0.535321577822907010f, -0.844648334111417820f, 0.535159608693146720f,\n    -0.844750965210101510f,\n  0.534997619887097260f, -0.844853565249707010f, 0.534835611410714670f,\n    -0.844956134226462100f,\n  0.534673583269955510f, -0.845058672136595470f, 0.534511535470777010f,\n    -0.845161178976337140f,\n  0.534349468019137520f, -0.845263654741918220f, 0.534187380920995600f,\n    -0.845366099429570970f,\n  0.534025274182310380f, -0.845468513035528830f, 0.533863147809042650f,\n    -0.845570895556026270f,\n  0.533701001807152960f, -0.845673246987299070f, 0.533538836182603120f,\n    -0.845775567325583900f,\n  0.533376650941355560f, -0.845877856567118890f, 0.533214446089372960f,\n    -0.845980114708143270f,\n  0.533052221632619670f, -0.846082341744896940f, 0.532889977577059690f,\n    -0.846184537673621670f,\n  0.532727713928658810f, -0.846286702490559710f, 0.532565430693382580f,\n    -0.846388836191954930f,\n  0.532403127877198010f, -0.846490938774052020f, 0.532240805486072330f,\n    -0.846593010233097190f,\n  0.532078463525973540f, -0.846695050565337450f, 0.531916102002870760f,\n    -0.846797059767020910f,\n  0.531753720922733320f, -0.846899037834397350f, 0.531591320291531780f,\n    -0.847000984763716880f,\n  0.531428900115236910f, -0.847102900551231500f, 0.531266460399820390f,\n    -0.847204785193193980f,\n  0.531104001151255000f, -0.847306638685858320f, 0.530941522375513510f,\n    -0.847408461025479730f,\n  0.530779024078570250f, -0.847510252208314330f, 0.530616506266399450f,\n    -0.847612012230619660f,\n  0.530453968944976320f, -0.847713741088654270f, 0.530291412120277420f,\n    -0.847815438778677930f,\n  0.530128835798278850f, -0.847917105296951410f, 0.529966239984958620f,\n    -0.848018740639736810f,\n  0.529803624686294830f, -0.848120344803297120f, 0.529640989908265910f,\n    -0.848221917783896990f,\n  0.529478335656852090f, -0.848323459577801530f, 0.529315661938033140f,\n    -0.848424970181277600f,\n  0.529152968757790720f, -0.848526449590592650f, 0.528990256122106040f,\n    -0.848627897802015860f,\n  0.528827524036961980f, -0.848729314811817010f, 0.528664772508341540f,\n    -0.848830700616267530f,\n  0.528502001542228480f, -0.848932055211639610f, 0.528339211144607690f,\n    -0.849033378594206690f,\n  0.528176401321464370f, -0.849134670760243630f, 0.528013572078784740f,\n    -0.849235931706025960f,\n  0.527850723422555460f, -0.849337161427830670f, 0.527687855358763720f,\n    -0.849438359921935950f,\n  0.527524967893398200f, -0.849539527184620890f, 0.527362061032447430f,\n    -0.849640663212165910f,\n  0.527199134781901390f, -0.849741768000852440f, 0.527036189147750190f,\n    -0.849842841546963210f,\n  0.526873224135984700f, -0.849943883846782210f, 0.526710239752597010f,\n    -0.850044894896594070f,\n  0.526547236003579330f, -0.850145874692685210f, 0.526384212894925210f,\n    -0.850246823231342710f,\n  0.526221170432628170f, -0.850347740508854980f, 0.526058108622682760f,\n    -0.850448626521511650f,\n  0.525895027471084740f, -0.850549481265603370f, 0.525731926983829640f,\n    -0.850650304737422200f,\n  0.525568807166914680f, -0.850751096933260790f, 0.525405668026336810f,\n    -0.850851857849413640f,\n  0.525242509568094710f, -0.850952587482175730f, 0.525079331798186890f,\n    -0.851053285827843790f,\n  0.524916134722612890f, -0.851153952882715340f, 0.524752918347373360f,\n    -0.851254588643089120f,\n  0.524589682678468840f, -0.851355193105265200f, 0.524426427721901510f,\n    -0.851455766265544310f,\n  0.524263153483673470f, -0.851556308120228870f, 0.524099859969787810f,\n    -0.851656818665622370f,\n  0.523936547186248600f, -0.851757297898029120f, 0.523773215139060170f,\n    -0.851857745813754840f,\n  0.523609863834228030f, -0.851958162409106380f, 0.523446493277757940f,\n    -0.852058547680391580f,\n  0.523283103475656430f, -0.852158901623919830f, 0.523119694433931250f,\n    -0.852259224236001090f,\n  0.522956266158590140f, -0.852359515512947090f, 0.522792818655642200f,\n    -0.852459775451070100f,\n  0.522629351931096720f, -0.852560004046683970f, 0.522465865990963900f,\n    -0.852660201296103760f,\n  0.522302360841254700f, -0.852760367195645300f, 0.522138836487980650f,\n    -0.852860501741625860f,\n  0.521975292937154390f, -0.852960604930363630f, 0.521811730194788550f,\n    -0.853060676758178320f,\n  0.521648148266897090f, -0.853160717221390420f, 0.521484547159494550f,\n    -0.853260726316321770f,\n  0.521320926878595550f, -0.853360704039295430f, 0.521157287430216610f,\n    -0.853460650386635320f,\n  0.520993628820373810f, -0.853560565354666840f, 0.520829951055084780f,\n    -0.853660448939716270f,\n  0.520666254140367270f, -0.853760301138111300f, 0.520502538082239790f,\n    -0.853860121946180660f,\n  0.520338802886721960f, -0.853959911360254060f, 0.520175048559833760f,\n    -0.854059669376662780f,\n  0.520011275107596040f, -0.854159395991738730f, 0.519847482536030300f,\n    -0.854259091201815420f,\n  0.519683670851158520f, -0.854358755003227440f, 0.519519840059003870f,\n    -0.854458387392310060f,\n  0.519355990165589530f, -0.854557988365400530f, 0.519192121176940360f,\n    -0.854657557918836460f,\n  0.519028233099080970f, -0.854757096048957110f, 0.518864325938037000f,\n    -0.854856602752102850f,\n  0.518700399699835170f, -0.854956078024614820f, 0.518536454390502110f,\n    -0.855055521862835950f,\n  0.518372490016066220f, -0.855154934263109620f, 0.518208506582555460f,\n    -0.855254315221781080f,\n  0.518044504095999340f, -0.855353664735196030f, 0.517880482562427800f,\n    -0.855452982799701830f,\n  0.517716441987871150f, -0.855552269411646970f, 0.517552382378360990f,\n    -0.855651524567380690f,\n  0.517388303739929060f, -0.855750748263253920f, 0.517224206078608310f,\n    -0.855849940495618240f,\n  0.517060089400432130f, -0.855949101260826790f, 0.516895953711434260f,\n    -0.856048230555233820f,\n  0.516731799017649980f, -0.856147328375194470f, 0.516567625325114350f,\n    -0.856246394717065210f,\n  0.516403432639863990f, -0.856345429577203610f, 0.516239220967935620f,\n    -0.856444432951968480f,\n  0.516074990315366630f, -0.856543404837719960f, 0.515910740688195650f,\n    -0.856642345230818720f,\n  0.515746472092461380f, -0.856741254127627470f, 0.515582184534203790f,\n    -0.856840131524509220f,\n  0.515417878019463150f, -0.856938977417828650f, 0.515253552554280290f,\n    -0.857037791803951680f,\n  0.515089208144697270f, -0.857136574679244870f, 0.514924844796756490f,\n    -0.857235326040076460f,\n  0.514760462516501200f, -0.857334045882815590f, 0.514596061309975040f,\n    -0.857432734203832700f,\n  0.514431641183222930f, -0.857531390999499040f, 0.514267202142289830f,\n    -0.857630016266187620f,\n  0.514102744193221660f, -0.857728610000272120f, 0.513938267342065490f,\n    -0.857827172198127320f,\n  0.513773771594868030f, -0.857925702856129790f, 0.513609256957677900f,\n    -0.858024201970656540f,\n  0.513444723436543570f, -0.858122669538086020f, 0.513280171037514330f,\n    -0.858221105554798250f,\n  0.513115599766640560f, -0.858319510017173440f, 0.512951009629972860f,\n    -0.858417882921594040f,\n  0.512786400633563070f, -0.858516224264442740f, 0.512621772783463100f,\n    -0.858614534042104080f,\n  0.512457126085725800f, -0.858712812250963520f, 0.512292460546404980f,\n    -0.858811058887407500f,\n  0.512127776171554690f, -0.858909273947823900f, 0.511963072967230200f,\n    -0.859007457428601410f,\n  0.511798350939487000f, -0.859105609326130340f, 0.511633610094381350f,\n    -0.859203729636801920f,\n  0.511468850437970520f, -0.859301818357008360f, 0.511304071976311890f,\n    -0.859399875483143450f,\n  0.511139274715464390f, -0.859497901011601620f, 0.510974458661486720f,\n    -0.859595894938779080f,\n  0.510809623820439040f, -0.859693857261072610f, 0.510644770198381730f,\n    -0.859791787974880540f,\n  0.510479897801375700f, -0.859889687076602290f, 0.510315006635483350f,\n    -0.859987554562638200f,\n  0.510150096706766700f, -0.860085390429390140f, 0.509985168021289570f,\n    -0.860183194673260880f,\n  0.509820220585115560f, -0.860280967290654510f, 0.509655254404309250f,\n    -0.860378708277976130f,\n  0.509490269484936360f, -0.860476417631632070f, 0.509325265833062480f,\n    -0.860574095348029980f,\n  0.509160243454754750f, -0.860671741423578380f, 0.508995202356080310f,\n    -0.860769355854687060f,\n  0.508830142543106990f, -0.860866938637767310f, 0.508665064021904260f,\n    -0.860964489769230900f,\n  0.508499966798540810f, -0.861062009245491480f, 0.508334850879087470f,\n    -0.861159497062963350f,\n  0.508169716269614710f, -0.861256953218062060f, 0.508004562976194010f,\n    -0.861354377707204800f,\n  0.507839391004897940f, -0.861451770526809210f, 0.507674200361798890f,\n    -0.861549131673294720f,\n  0.507508991052970870f, -0.861646461143081300f, 0.507343763084487920f,\n    -0.861743758932590700f,\n  0.507178516462425290f, -0.861841025038245330f, 0.507013251192858340f,\n    -0.861938259456469180f,\n  0.506847967281863320f, -0.862035462183687210f, 0.506682664735517600f,\n    -0.862132633216325380f,\n  0.506517343559898530f, -0.862229772550811240f, 0.506352003761084800f,\n    -0.862326880183573060f,\n  0.506186645345155450f, -0.862423956111040500f, 0.506021268318189830f,\n    -0.862521000329644520f,\n  0.505855872686268860f, -0.862618012835816740f, 0.505690458455473340f,\n    -0.862714993625990690f,\n  0.505525025631885510f, -0.862811942696600330f, 0.505359574221587390f,\n    -0.862908860044081290f,\n  0.505194104230662240f, -0.863005745664870210f, 0.505028615665194300f,\n    -0.863102599555404800f,\n  0.504863108531267480f, -0.863199421712124160f, 0.504697582834967680f,\n    -0.863296212131468230f,\n  0.504532038582380380f, -0.863392970809878310f, 0.504366475779592150f,\n    -0.863489697743797140f,\n  0.504200894432690560f, -0.863586392929667990f, 0.504035294547763080f,\n    -0.863683056363935940f,\n  0.503869676130898950f, -0.863779688043046610f, 0.503704039188186960f,\n    -0.863876287963447510f,\n  0.503538383725717580f, -0.863972856121586700f, 0.503372709749581150f,\n    -0.864069392513913680f,\n  0.503207017265869030f, -0.864165897136879300f, 0.503041306280673450f,\n    -0.864262369986934950f,\n  0.502875576800086880f, -0.864358811060534030f, 0.502709828830203100f,\n    -0.864455220354130250f,\n  0.502544062377115800f, -0.864551597864179230f, 0.502378277446919870f,\n    -0.864647943587137480f,\n  0.502212474045710900f, -0.864744257519462380f, 0.502046652179584660f,\n    -0.864840539657612980f,\n  0.501880811854638400f, -0.864936789998049020f, 0.501714953076969230f,\n    -0.865033008537231750f,\n  0.501549075852675390f, -0.865129195271623690f, 0.501383180187855880f,\n    -0.865225350197688090f,\n  0.501217266088609950f, -0.865321473311889800f, 0.501051333561038040f,\n    -0.865417564610694410f,\n  0.500885382611240940f, -0.865513624090568980f, 0.500719413245319880f,\n    -0.865609651747981880f,\n  0.500553425469377640f, -0.865705647579402270f, 0.500387419289516580f,\n    -0.865801611581300760f,\n  0.500221394711840680f, -0.865897543750148820f, 0.500055351742453860f,\n    -0.865993444082419520f,\n  0.499889290387461380f, -0.866089312574586770f, 0.499723210652968710f,\n    -0.866185149223125730f,\n  0.499557112545081890f, -0.866280954024512990f, 0.499390996069908220f,\n    -0.866376726975225830f,\n  0.499224861233555030f, -0.866472468071743050f, 0.499058708042130930f,\n    -0.866568177310544360f,\n  0.498892536501744750f, -0.866663854688111020f, 0.498726346618505960f,\n    -0.866759500200925290f,\n  0.498560138398525200f, -0.866855113845470320f, 0.498393911847913150f,\n    -0.866950695618231020f,\n  0.498227666972781870f, -0.867046245515692650f, 0.498061403779243520f,\n    -0.867141763534342360f,\n  0.497895122273410930f, -0.867237249670668400f, 0.497728822461398100f,\n    -0.867332703921159690f,\n  0.497562504349319090f, -0.867428126282306920f, 0.497396167943289340f,\n    -0.867523516750601460f,\n  0.497229813249424340f, -0.867618875322536230f, 0.497063440273840310f,\n    -0.867714201994605140f,\n  0.496897049022654640f, -0.867809496763303210f, 0.496730639501984710f,\n    -0.867904759625126920f,\n  0.496564211717949340f, -0.867999990576573400f, 0.496397765676667160f,\n    -0.868095189614141670f,\n  0.496231301384258310f, -0.868190356734331310f, 0.496064818846843060f,\n    -0.868285491933643240f,\n  0.495898318070542240f, -0.868380595208579800f, 0.495731799061478020f,\n    -0.868475666555644120f,\n  0.495565261825772490f, -0.868570705971340900f, 0.495398706369549080f,\n    -0.868665713452175580f,\n  0.495232132698931350f, -0.868760688994655190f, 0.495065540820043610f,\n    -0.868855632595287750f,\n  0.494898930739011310f, -0.868950544250582380f, 0.494732302461959820f,\n    -0.869045423957049530f,\n  0.494565655995016010f, -0.869140271711200560f, 0.494398991344306760f,\n    -0.869235087509548250f,\n  0.494232308515959730f, -0.869329871348606730f, 0.494065607516103730f,\n    -0.869424623224890780f,\n  0.493898888350867430f, -0.869519343134916970f, 0.493732151026381070f,\n    -0.869614031075202300f,\n  0.493565395548774880f, -0.869708687042265560f, 0.493398621924179830f,\n    -0.869803311032626650f,\n  0.493231830158728070f, -0.869897903042806340f, 0.493065020258551650f,\n    -0.869992463069326870f,\n  0.492898192229784090f, -0.870086991108711350f, 0.492731346078558840f,\n    -0.870181487157484560f,\n  0.492564481811010650f, -0.870275951212171830f, 0.492397599433274550f,\n    -0.870370383269300160f,\n  0.492230698951486080f, -0.870464783325397670f, 0.492063780371782060f,\n    -0.870559151376993250f,\n  0.491896843700299240f, -0.870653487420617540f, 0.491729888943175820f,\n    -0.870747791452801790f,\n  0.491562916106550060f, -0.870842063470078860f, 0.491395925196560830f,\n    -0.870936303468982760f,\n  0.491228916219348330f, -0.871030511446048260f, 0.491061889181052590f,\n    -0.871124687397811900f,\n  0.490894844087815140f, -0.871218831320810900f, 0.490727780945777570f,\n    -0.871312943211583920f,\n  0.490560699761082080f, -0.871407023066670950f, 0.490393600539872130f,\n    -0.871501070882612530f,\n  0.490226483288291100f, -0.871595086655951090f, 0.490059348012483910f,\n    -0.871689070383229740f,\n  0.489892194718595300f, -0.871783022060993010f, 0.489725023412770970f,\n    -0.871876941685786890f,\n  0.489557834101157550f, -0.871970829254157700f, 0.489390626789901920f,\n    -0.872064684762653970f,\n  0.489223401485152030f, -0.872158508207824480f, 0.489056158193055980f,\n    -0.872252299586219860f,\n  0.488888896919763230f, -0.872346058894391540f, 0.488721617671423250f,\n    -0.872439786128892280f,\n  0.488554320454186230f, -0.872533481286276060f, 0.488387005274203590f,\n    -0.872627144363097960f,\n  0.488219672137626740f, -0.872720775355914300f, 0.488052321050608310f,\n    -0.872814374261282390f,\n  0.487884952019301210f, -0.872907941075760970f, 0.487717565049858860f,\n    -0.873001475795909920f,\n  0.487550160148436050f, -0.873094978418290090f, 0.487382737321187310f,\n    -0.873188448939463790f,\n  0.487215296574268820f, -0.873281887355994210f, 0.487047837913836550f,\n    -0.873375293664446000f,\n  0.486880361346047400f, -0.873468667861384880f, 0.486712866877059340f,\n    -0.873562009943377740f,\n  0.486545354513030270f, -0.873655319906992630f, 0.486377824260119500f,\n    -0.873748597748798870f,\n  0.486210276124486530f, -0.873841843465366750f, 0.486042710112291390f,\n    -0.873935057053268130f,\n  0.485875126229695420f, -0.874028238509075630f, 0.485707524482859750f,\n    -0.874121387829363330f,\n  0.485539904877947020f, -0.874214505010706300f, 0.485372267421119770f,\n    -0.874307590049680950f,\n  0.485204612118541880f, -0.874400642942864790f, 0.485036938976377450f,\n    -0.874493663686836450f,\n  0.484869248000791120f, -0.874586652278176110f, 0.484701539197948730f,\n    -0.874679608713464510f,\n  0.484533812574016120f, -0.874772532989284150f, 0.484366068135160480f,\n    -0.874865425102218210f,\n  0.484198305887549140f, -0.874958285048851540f, 0.484030525837350010f,\n    -0.875051112825769970f,\n  0.483862727990732320f, -0.875143908429560250f, 0.483694912353865080f,\n    -0.875236671856810870f,\n  0.483527078932918740f, -0.875329403104110780f, 0.483359227734063980f,\n    -0.875422102168050830f,\n  0.483191358763471910f, -0.875514769045222740f, 0.483023472027315050f,\n    -0.875607403732219240f,\n  0.482855567531765670f, -0.875700006225634600f, 0.482687645282997510f,\n    -0.875792576522063880f,\n  0.482519705287184520f, -0.875885114618103700f, 0.482351747550501030f,\n    -0.875977620510351660f,\n  0.482183772079122830f, -0.876070094195406600f, 0.482015778879225530f,\n    -0.876162535669868460f,\n  0.481847767956986080f, -0.876254944930338400f, 0.481679739318581490f,\n    -0.876347321973419020f,\n  0.481511692970189920f, -0.876439666795713610f, 0.481343628917989870f,\n    -0.876531979393827100f,\n  0.481175547168160360f, -0.876624259764365310f, 0.481007447726881640f,\n    -0.876716507903935400f,\n  0.480839330600333900f, -0.876808723809145760f, 0.480671195794698690f,\n    -0.876900907476605650f,\n  0.480503043316157670f, -0.876993058902925780f, 0.480334873170893070f,\n    -0.877085178084718310f,\n  0.480166685365088440f, -0.877177265018595940f, 0.479998479904927220f,\n    -0.877269319701173170f,\n  0.479830256796594250f, -0.877361342129065140f, 0.479662016046274340f,\n    -0.877453332298888560f,\n  0.479493757660153060f, -0.877545290207261240f, 0.479325481644417130f,\n    -0.877637215850802120f,\n  0.479157188005253310f, -0.877729109226131570f, 0.478988876748849550f,\n    -0.877820970329870500f,\n  0.478820547881394050f, -0.877912799158641730f, 0.478652201409075550f,\n    -0.878004595709069080f,\n  0.478483837338084080f, -0.878096359977777130f, 0.478315455674609480f,\n    -0.878188091961392250f,\n  0.478147056424843120f, -0.878279791656541460f, 0.477978639594976110f,\n    -0.878371459059853590f,\n  0.477810205191201040f, -0.878463094167957870f, 0.477641753219710590f,\n    -0.878554696977485340f,\n  0.477473283686698060f, -0.878646267485068130f, 0.477304796598358010f,\n    -0.878737805687339280f,\n  0.477136291960884750f, -0.878829311580933360f, 0.476967769780474230f,\n    -0.878920785162485840f,\n  0.476799230063322250f, -0.879012226428633410f, 0.476630672815625380f,\n    -0.879103635376014330f,\n  0.476462098043581310f, -0.879195012001267370f, 0.476293505753387750f,\n    -0.879286356301033250f,\n  0.476124895951243630f, -0.879377668271953180f, 0.475956268643348220f,\n    -0.879468947910670100f,\n  0.475787623835901120f, -0.879560195213827890f, 0.475618961535103410f,\n    -0.879651410178071470f,\n  0.475450281747155870f, -0.879742592800047410f, 0.475281584478260800f,\n    -0.879833743076402940f,\n  0.475112869734620470f, -0.879924861003786860f, 0.474944137522437860f,\n    -0.880015946578848960f,\n  0.474775387847917230f, -0.880106999798240360f, 0.474606620717262560f,\n    -0.880198020658613190f,\n  0.474437836136679340f, -0.880289009156620890f, 0.474269034112372920f,\n    -0.880379965288918260f,\n  0.474100214650550020f, -0.880470889052160750f, 0.473931377757417560f,\n    -0.880561780443005590f,\n  0.473762523439182850f, -0.880652639458111010f, 0.473593651702054640f,\n    -0.880743466094136230f,\n  0.473424762552241530f, -0.880834260347742040f, 0.473255855995953380f,\n    -0.880925022215589880f,\n  0.473086932039400220f, -0.881015751694342760f, 0.472917990688792760f,\n    -0.881106448780665130f,\n  0.472749031950342900f, -0.881197113471221980f, 0.472580055830262250f,\n    -0.881287745762680100f,\n  0.472411062334764100f, -0.881378345651706810f, 0.472242051470061650f,\n    -0.881468913134971330f,\n  0.472073023242368660f, -0.881559448209143780f, 0.471903977657900320f,\n    -0.881649950870895260f,\n  0.471734914722871430f, -0.881740421116898320f, 0.471565834443498480f,\n    -0.881830858943826620f,\n  0.471396736825997810f, -0.881921264348354940f, 0.471227621876586400f,\n    -0.882011637327159590f,\n  0.471058489601482610f, -0.882101977876917580f, 0.470889340006904520f,\n    -0.882192285994307430f,\n  0.470720173099071710f, -0.882282561676008600f, 0.470550988884203490f,\n    -0.882372804918702290f,\n  0.470381787368520710f, -0.882463015719070040f, 0.470212568558244280f,\n    -0.882553194073795400f,\n  0.470043332459595620f, -0.882643339979562790f, 0.469874079078797470f,\n    -0.882733453433057540f,\n  0.469704808422072460f, -0.882823534430966730f, 0.469535520495644510f,\n    -0.882913582969978020f,\n  0.469366215305737630f, -0.883003599046780720f, 0.469196892858576630f,\n    -0.883093582658065370f,\n  0.469027553160387240f, -0.883183533800523280f, 0.468858196217395330f,\n    -0.883273452470847430f,\n  0.468688822035827960f, -0.883363338665731580f, 0.468519430621912420f,\n    -0.883453192381870920f,\n  0.468350021981876530f, -0.883543013615961880f, 0.468180596121949400f,\n    -0.883632802364701760f,\n  0.468011153048359830f, -0.883722558624789660f, 0.467841692767338220f,\n    -0.883812282392925090f,\n  0.467672215285114710f, -0.883901973665809470f, 0.467502720607920920f,\n    -0.883991632440144890f,\n  0.467333208741988530f, -0.884081258712634990f, 0.467163679693549770f,\n    -0.884170852479984500f,\n  0.466994133468838110f, -0.884260413738899080f, 0.466824570074086950f,\n    -0.884349942486086120f,\n  0.466654989515530970f, -0.884439438718253700f, 0.466485391799405010f,\n    -0.884528902432111350f,\n  0.466315776931944480f, -0.884618333624369920f, 0.466146144919386000f,\n    -0.884707732291740930f,\n  0.465976495767966130f, -0.884797098430937790f, 0.465806829483922770f,\n    -0.884886432038674560f,\n  0.465637146073493770f, -0.884975733111666660f, 0.465467445542917800f,\n    -0.885065001646630930f,\n  0.465297727898434650f, -0.885154237640285110f, 0.465127993146283950f,\n    -0.885243441089348270f,\n  0.464958241292706740f, -0.885332611990540590f, 0.464788472343944160f,\n    -0.885421750340583570f,\n  0.464618686306237820f, -0.885510856136199950f, 0.464448883185830770f,\n    -0.885599929374113360f,\n  0.464279062988965760f, -0.885688970051048960f, 0.464109225721887010f,\n    -0.885777978163732940f,\n  0.463939371390838460f, -0.885866953708892790f, 0.463769500002065680f,\n    -0.885955896683257030f,\n  0.463599611561814120f, -0.886044807083555490f, 0.463429706076329880f,\n    -0.886133684906519340f,\n  0.463259783551860260f, -0.886222530148880640f, 0.463089843994652470f,\n    -0.886311342807372890f,\n  0.462919887410955130f, -0.886400122878730490f, 0.462749913807016850f,\n    -0.886488870359689600f,\n  0.462579923189086810f, -0.886577585246987040f, 0.462409915563415540f,\n    -0.886666267537360890f,\n  0.462239890936253280f, -0.886754917227550950f, 0.462069849313851810f,\n    -0.886843534314297300f,\n  0.461899790702462840f, -0.886932118794342080f, 0.461729715108338770f,\n    -0.887020670664428360f,\n  0.461559622537733190f, -0.887109189921300060f, 0.461389512996899450f,\n    -0.887197676561702900f,\n  0.461219386492092430f, -0.887286130582383150f, 0.461049243029567010f,\n    -0.887374551980088740f,\n  0.460879082615578690f, -0.887462940751568840f, 0.460708905256384190f,\n    -0.887551296893573370f,\n  0.460538710958240010f, -0.887639620402853930f, 0.460368499727404070f,\n    -0.887727911276163020f,\n  0.460198271570134270f, -0.887816169510254550f, 0.460028026492689700f,\n    -0.887904395101883240f,\n  0.459857764501329650f, -0.887992588047805560f, 0.459687485602313870f,\n    -0.888080748344778900f,\n  0.459517189801903590f, -0.888168875989561620f, 0.459346877106359570f,\n    -0.888256970978913870f,\n  0.459176547521944150f, -0.888345033309596240f, 0.459006201054919680f,\n    -0.888433062978371320f,\n  0.458835837711549120f, -0.888521059982002260f, 0.458665457498096670f,\n    -0.888609024317253750f,\n  0.458495060420826220f, -0.888696955980891710f, 0.458324646486003300f,\n    -0.888784854969682850f,\n  0.458154215699893230f, -0.888872721280395520f, 0.457983768068762180f,\n    -0.888960554909799310f,\n  0.457813303598877290f, -0.889048355854664570f, 0.457642822296505770f,\n    -0.889136124111763240f,\n  0.457472324167916110f, -0.889223859677868210f, 0.457301809219376800f,\n    -0.889311562549753850f,\n  0.457131277457156980f, -0.889399232724195520f, 0.456960728887527030f,\n    -0.889486870197969790f,\n  0.456790163516757220f, -0.889574474967854580f, 0.456619581351118960f,\n    -0.889662047030628790f,\n  0.456448982396883860f, -0.889749586383072890f, 0.456278366660324670f,\n    -0.889837093021967900f,\n  0.456107734147714220f, -0.889924566944096720f, 0.455937084865326030f,\n    -0.890012008146243260f,\n  0.455766418819434750f, -0.890099416625192210f, 0.455595736016314920f,\n    -0.890186792377730240f,\n  0.455425036462242420f, -0.890274135400644480f, 0.455254320163493210f,\n    -0.890361445690723730f,\n  0.455083587126343840f, -0.890448723244757880f, 0.454912837357072050f,\n    -0.890535968059537830f,\n  0.454742070861955450f, -0.890623180131855930f, 0.454571287647273000f,\n    -0.890710359458505520f,\n  0.454400487719303750f, -0.890797506036281490f, 0.454229671084327320f,\n    -0.890884619861979530f,\n  0.454058837748624540f, -0.890971700932396750f, 0.453887987718476050f,\n    -0.891058749244331590f,\n  0.453717121000163930f, -0.891145764794583180f, 0.453546237599970260f,\n    -0.891232747579952520f,\n  0.453375337524177750f, -0.891319697597241390f, 0.453204420779070300f,\n    -0.891406614843252900f,\n  0.453033487370931580f, -0.891493499314791380f, 0.452862537306046810f,\n    -0.891580351008662290f,\n  0.452691570590700860f, -0.891667169921672390f, 0.452520587231180100f,\n    -0.891753956050629460f,\n  0.452349587233771000f, -0.891840709392342720f, 0.452178570604760410f,\n    -0.891927429943622510f,\n  0.452007537350436530f, -0.892014117701280360f, 0.451836487477087430f,\n    -0.892100772662129170f,\n  0.451665420991002540f, -0.892187394822982480f, 0.451494337898471210f,\n    -0.892273984180655730f,\n  0.451323238205783520f, -0.892360540731965360f, 0.451152121919230710f,\n    -0.892447064473728680f,\n  0.450980989045103810f, -0.892533555402764690f, 0.450809839589695340f,\n    -0.892620013515893040f,\n  0.450638673559297760f, -0.892706438809935280f, 0.450467490960204110f,\n    -0.892792831281713610f,\n  0.450296291798708730f, -0.892879190928051680f, 0.450125076081105750f,\n    -0.892965517745774260f,\n  0.449953843813690580f, -0.893051811731707450f, 0.449782595002758860f,\n    -0.893138072882678210f,\n  0.449611329654606600f, -0.893224301195515320f, 0.449440047775531260f,\n    -0.893310496667048090f,\n  0.449268749371829920f, -0.893396659294107610f, 0.449097434449801100f,\n    -0.893482789073525850f,\n  0.448926103015743260f, -0.893568886002136020f, 0.448754755075956020f,\n    -0.893654950076772430f,\n  0.448583390636739300f, -0.893740981294271040f, 0.448412009704393430f,\n    -0.893826979651468620f,\n  0.448240612285220000f, -0.893912945145203250f, 0.448069198385520340f,\n    -0.893998877772314240f,\n  0.447897768011597310f, -0.894084777529641990f, 0.447726321169753750f,\n    -0.894170644414028270f,\n  0.447554857866293010f, -0.894256478422316040f, 0.447383378107519710f,\n    -0.894342279551349480f,\n  0.447211881899738260f, -0.894428047797973800f, 0.447040369249254500f,\n    -0.894513783159035620f,\n  0.446868840162374330f, -0.894599485631382580f, 0.446697294645404090f,\n    -0.894685155211863980f,\n  0.446525732704651400f, -0.894770791897329550f, 0.446354154346423840f,\n    -0.894856395684630930f,\n  0.446182559577030120f, -0.894941966570620750f, 0.446010948402779110f,\n    -0.895027504552152630f,\n  0.445839320829980350f, -0.895113009626081760f, 0.445667676864944350f,\n    -0.895198481789264200f,\n  0.445496016513981740f, -0.895283921038557580f, 0.445324339783404240f,\n    -0.895369327370820310f,\n  0.445152646679523590f, -0.895454700782912450f, 0.444980937208652780f,\n    -0.895540041271694840f,\n  0.444809211377105000f, -0.895625348834030000f, 0.444637469191193790f,\n    -0.895710623466781320f,\n  0.444465710657234110f, -0.895795865166813420f, 0.444293935781540580f,\n    -0.895881073930992370f,\n  0.444122144570429260f, -0.895966249756185110f, 0.443950337030216250f,\n    -0.896051392639260040f,\n  0.443778513167218220f, -0.896136502577086770f, 0.443606672987753080f,\n    -0.896221579566535920f,\n  0.443434816498138430f, -0.896306623604479660f, 0.443262943704693380f,\n    -0.896391634687790820f,\n  0.443091054613736990f, -0.896476612813344010f, 0.442919149231588980f,\n    -0.896561557978014960f,\n  0.442747227564570130f, -0.896646470178680150f, 0.442575289619001170f,\n    -0.896731349412217880f,\n  0.442403335401204130f, -0.896816195675507190f, 0.442231364917501090f,\n    -0.896901008965428680f,\n  0.442059378174214760f, -0.896985789278863970f, 0.441887375177668960f,\n    -0.897070536612695870f,\n  0.441715355934187310f, -0.897155250963808550f, 0.441543320450094920f,\n    -0.897239932329087050f,\n  0.441371268731716620f, -0.897324580705418320f, 0.441199200785378660f,\n    -0.897409196089689720f,\n  0.441027116617407340f, -0.897493778478790190f, 0.440855016234129430f,\n    -0.897578327869610230f,\n  0.440682899641873020f, -0.897662844259040750f, 0.440510766846965880f,\n    -0.897747327643974690f,\n  0.440338617855737300f, -0.897831778021305650f, 0.440166452674516480f,\n    -0.897916195387928550f,\n  0.439994271309633260f, -0.898000579740739880f, 0.439822073767418610f,\n    -0.898084931076636780f,\n  0.439649860054203420f, -0.898169249392518080f, 0.439477630176319860f,\n    -0.898253534685283570f,\n  0.439305384140100060f, -0.898337786951834190f, 0.439133121951876930f,\n    -0.898422006189072530f,\n  0.438960843617984430f, -0.898506192393901840f, 0.438788549144756290f,\n    -0.898590345563227030f,\n  0.438616238538527710f, -0.898674465693953820f, 0.438443911805633860f,\n    -0.898758552782989440f,\n  0.438271568952410480f, -0.898842606827242260f, 0.438099209985194580f,\n    -0.898926627823621870f,\n  0.437926834910322860f, -0.899010615769039070f, 0.437754443734133470f,\n    -0.899094570660405770f,\n  0.437582036462964340f, -0.899178492494635330f, 0.437409613103154850f,\n    -0.899262381268642000f,\n  0.437237173661044200f, -0.899346236979341460f, 0.437064718142972370f,\n    -0.899430059623650860f,\n  0.436892246555280470f, -0.899513849198487870f, 0.436719758904309310f,\n    -0.899597605700772180f,\n  0.436547255196401250f, -0.899681329127423930f, 0.436374735437898510f,\n    -0.899765019475365020f,\n  0.436202199635143950f, -0.899848676741518580f, 0.436029647794481670f,\n    -0.899932300922808400f,\n  0.435857079922255470f, -0.900015892016160280f, 0.435684496024810520f,\n    -0.900099450018500340f,\n  0.435511896108492170f, -0.900182974926756700f, 0.435339280179646070f,\n    -0.900266466737858480f,\n  0.435166648244619370f, -0.900349925448735600f, 0.434994000309758710f,\n    -0.900433351056319830f,\n  0.434821336381412350f, -0.900516743557543520f, 0.434648656465928430f,\n    -0.900600102949340790f,\n  0.434475960569655710f, -0.900683429228646860f, 0.434303248698944100f,\n    -0.900766722392397860f,\n  0.434130520860143310f, -0.900849982437531450f, 0.433957777059604480f,\n    -0.900933209360986200f,\n  0.433785017303678520f, -0.901016403159702330f, 0.433612241598717640f,\n    -0.901099563830620950f,\n  0.433439449951074200f, -0.901182691370684410f, 0.433266642367100940f,\n    -0.901265785776836580f,\n  0.433093818853152010f, -0.901348847046022030f, 0.432920979415581220f,\n    -0.901431875175186970f,\n  0.432748124060743760f, -0.901514870161278630f, 0.432575252794994810f,\n    -0.901597832001245660f,\n  0.432402365624690140f, -0.901680760692037730f, 0.432229462556186770f,\n    -0.901763656230605610f,\n  0.432056543595841450f, -0.901846518613901860f, 0.431883608750012300f,\n    -0.901929347838879350f,\n  0.431710658025057370f, -0.902012143902493070f, 0.431537691427335500f,\n    -0.902094906801698900f,\n  0.431364708963206440f, -0.902177636533453510f, 0.431191710639030000f,\n    -0.902260333094715540f,\n  0.431018696461167080f, -0.902342996482444200f, 0.430845666435978820f,\n    -0.902425626693600270f,\n  0.430672620569826860f, -0.902508223725145830f, 0.430499558869073930f,\n    -0.902590787574043870f,\n  0.430326481340082610f, -0.902673318237258830f, 0.430153387989216930f,\n    -0.902755815711756120f,\n  0.429980278822840570f, -0.902838279994502830f, 0.429807153847318770f,\n    -0.902920711082466630f,\n  0.429634013069016500f, -0.903003108972617040f, 0.429460856494299490f,\n    -0.903085473661924600f,\n  0.429287684129534720f, -0.903167805147360610f, 0.429114495981088690f,\n    -0.903250103425898400f,\n  0.428941292055329550f, -0.903332368494511820f, 0.428768072358625240f,\n    -0.903414600350176290f,\n  0.428594836897344400f, -0.903496798989868450f, 0.428421585677856760f,\n    -0.903578964410565950f,\n  0.428248318706531910f, -0.903661096609247980f, 0.428075035989740780f,\n    -0.903743195582894620f,\n  0.427901737533854240f, -0.903825261328487390f, 0.427728423345243860f,\n    -0.903907293843009050f,\n  0.427555093430282200f, -0.903989293123443340f, 0.427381747795341770f,\n    -0.904071259166775440f,\n  0.427208386446796370f, -0.904153191969991670f, 0.427035009391019790f,\n    -0.904235091530079750f,\n  0.426861616634386490f, -0.904316957844028320f, 0.426688208183271970f,\n    -0.904398790908827350f,\n  0.426514784044051520f, -0.904480590721468250f, 0.426341344223101880f,\n    -0.904562357278943190f,\n  0.426167888726799620f, -0.904644090578246240f, 0.425994417561522450f,\n    -0.904725790616371930f,\n  0.425820930733648300f, -0.904807457390316540f, 0.425647428249555590f,\n    -0.904889090897077470f,\n  0.425473910115623910f, -0.904970691133653250f, 0.425300376338232590f,\n    -0.905052258097043590f,\n  0.425126826923762410f, -0.905133791784249580f, 0.424953261878594060f,\n    -0.905215292192273480f,\n  0.424779681209108810f, -0.905296759318118820f, 0.424606084921689220f,\n    -0.905378193158789980f,\n  0.424432473022717420f, -0.905459593711293250f, 0.424258845518577010f,\n    -0.905540960972635480f,\n  0.424085202415651670f, -0.905622294939825160f, 0.423911543720325580f,\n    -0.905703595609872010f,\n  0.423737869438983950f, -0.905784862979786440f, 0.423564179578011960f,\n    -0.905866097046580940f,\n  0.423390474143796100f, -0.905947297807268460f, 0.423216753142722780f,\n    -0.906028465258863490f,\n  0.423043016581179100f, -0.906109599398381980f, 0.422869264465553170f,\n    -0.906190700222840540f,\n  0.422695496802232950f, -0.906271767729257660f, 0.422521713597607870f,\n    -0.906352801914652280f,\n  0.422347914858067000f, -0.906433802776045460f, 0.422174100590000820f,\n    -0.906514770310458800f,\n  0.422000270799799790f, -0.906595704514915330f, 0.421826425493854910f,\n    -0.906676605386439460f,\n  0.421652564678558380f, -0.906757472922056550f, 0.421478688360302220f,\n    -0.906838307118793540f,\n  0.421304796545479700f, -0.906919107973678030f, 0.421130889240484140f,\n    -0.906999875483739610f,\n  0.420956966451709440f, -0.907080609646008450f, 0.420783028185550630f,\n    -0.907161310457516250f,\n  0.420609074448402510f, -0.907241977915295930f, 0.420435105246661220f,\n    -0.907322612016381310f,\n  0.420261120586723050f, -0.907403212757808000f, 0.420087120474984590f,\n    -0.907483780136612570f,\n  0.419913104917843730f, -0.907564314149832520f, 0.419739073921698180f,\n    -0.907644814794507090f,\n  0.419565027492946940f, -0.907725282067676330f, 0.419390965637989050f,\n    -0.907805715966381820f,\n  0.419216888363223960f, -0.907886116487666150f, 0.419042795675052480f,\n    -0.907966483628573240f,\n  0.418868687579875110f, -0.908046817386148340f, 0.418694564084093610f,\n    -0.908127117757437600f,\n  0.418520425194109700f, -0.908207384739488700f, 0.418346270916326310f,\n    -0.908287618329350450f,\n  0.418172101257146430f, -0.908367818524072780f, 0.417997916222973550f,\n    -0.908447985320707250f,\n  0.417823715820212380f, -0.908528118716306120f, 0.417649500055267410f,\n    -0.908608218707923190f,\n  0.417475268934544340f, -0.908688285292613360f, 0.417301022464449060f,\n    -0.908768318467432780f,\n  0.417126760651387870f, -0.908848318229439120f, 0.416952483501768280f,\n    -0.908928284575690640f,\n  0.416778191021997590f, -0.909008217503247450f, 0.416603883218484410f,\n    -0.909088117009170580f,\n  0.416429560097637320f, -0.909167983090522270f, 0.416255221665865480f,\n    -0.909247815744366310f,\n  0.416080867929579320f, -0.909327614967767260f, 0.415906498895188770f,\n    -0.909407380757791260f,\n  0.415732114569105420f, -0.909487113111505430f, 0.415557714957740580f,\n    -0.909566812025978220f,\n  0.415383300067506290f, -0.909646477498279540f, 0.415208869904815650f,\n    -0.909726109525480160f,\n  0.415034424476081630f, -0.909805708104652220f, 0.414859963787718390f,\n    -0.909885273232869160f,\n  0.414685487846140010f, -0.909964804907205660f, 0.414510996657761810f,\n    -0.910044303124737390f,\n  0.414336490228999210f, -0.910123767882541570f, 0.414161968566268080f,\n    -0.910203199177696540f,\n  0.413987431675985510f, -0.910282597007281760f, 0.413812879564568300f,\n    -0.910361961368377990f,\n  0.413638312238434560f, -0.910441292258067140f, 0.413463729704002580f,\n    -0.910520589673432630f,\n  0.413289131967690960f, -0.910599853611558930f, 0.413114519035919560f,\n    -0.910679084069531570f,\n  0.412939890915108020f, -0.910758281044437570f, 0.412765247611677320f,\n    -0.910837444533365010f,\n  0.412590589132048380f, -0.910916574533403240f, 0.412415915482642730f,\n    -0.910995671041643140f,\n  0.412241226669883000f, -0.911074734055176250f, 0.412066522700191560f,\n    -0.911153763571095900f,\n  0.411891803579992220f, -0.911232759586496190f, 0.411717069315708670f,\n    -0.911311722098472670f,\n  0.411542319913765280f, -0.911390651104122320f, 0.411367555380587340f,\n    -0.911469546600543020f,\n  0.411192775722600160f, -0.911548408584833990f, 0.411017980946230270f,\n    -0.911627237054095650f,\n  0.410843171057903910f, -0.911706032005429880f, 0.410668346064048780f,\n    -0.911784793435939430f,\n  0.410493505971092520f, -0.911863521342728520f, 0.410318650785463260f,\n    -0.911942215722902570f,\n  0.410143780513590350f, -0.912020876573568230f, 0.409968895161902820f,\n    -0.912099503891833470f,\n  0.409793994736831200f, -0.912178097674807060f, 0.409619079244805840f,\n    -0.912256657919599650f,\n  0.409444148692257590f, -0.912335184623322750f, 0.409269203085618700f,\n    -0.912413677783089020f,\n  0.409094242431320920f, -0.912492137396012650f, 0.408919266735797480f,\n    -0.912570563459208730f,\n  0.408744276005481520f, -0.912648955969793900f, 0.408569270246806780f,\n    -0.912727314924885900f,\n  0.408394249466208110f, -0.912805640321603500f, 0.408219213670120100f,\n    -0.912883932157067200f,\n  0.408044162864978740f, -0.912962190428398100f, 0.407869097057219960f,\n    -0.913040415132719160f,\n  0.407694016253280170f, -0.913118606267154130f, 0.407518920459597030f,\n    -0.913196763828828200f,\n  0.407343809682607970f, -0.913274887814867760f, 0.407168683928751610f,\n    -0.913352978222400250f,\n  0.406993543204466460f, -0.913431035048554720f, 0.406818387516192370f,\n    -0.913509058290461140f,\n  0.406643216870369140f, -0.913587047945250810f, 0.406468031273437000f,\n    -0.913665004010056350f,\n  0.406292830731837470f, -0.913742926482011390f, 0.406117615252011790f,\n    -0.913820815358251100f,\n  0.405942384840402570f, -0.913898670635911680f, 0.405767139503452220f,\n    -0.913976492312130520f,\n  0.405591879247603870f, -0.914054280384046460f, 0.405416604079301750f,\n    -0.914132034848799460f,\n  0.405241314004989860f, -0.914209755703530690f, 0.405066009031113390f,\n    -0.914287442945382440f,\n  0.404890689164117750f, -0.914365096571498450f, 0.404715354410448650f,\n    -0.914442716579023870f,\n  0.404540004776553110f, -0.914520302965104450f, 0.404364640268877810f,\n    -0.914597855726887790f,\n  0.404189260893870750f, -0.914675374861522390f, 0.404013866657980060f,\n    -0.914752860366158100f,\n  0.403838457567654130f, -0.914830312237946090f, 0.403663033629342750f,\n    -0.914907730474038620f,\n  0.403487594849495310f, -0.914985115071589310f, 0.403312141234562660f,\n    -0.915062466027752760f,\n  0.403136672790995240f, -0.915139783339685260f, 0.402961189525244960f,\n    -0.915217067004543750f,\n  0.402785691443763640f, -0.915294317019487050f, 0.402610178553003680f,\n    -0.915371533381674760f,\n  0.402434650859418540f, -0.915448716088267830f, 0.402259108369461440f,\n    -0.915525865136428530f,\n  0.402083551089587040f, -0.915602980523320230f, 0.401907979026249860f,\n    -0.915680062246107650f,\n  0.401732392185905010f, -0.915757110301956720f, 0.401556790575008650f,\n    -0.915834124688034710f,\n  0.401381174200016790f, -0.915911105401509880f, 0.401205543067386760f,\n    -0.915988052439551840f,\n  0.401029897183575790f, -0.916064965799331610f, 0.400854236555041650f,\n    -0.916141845478021350f,\n  0.400678561188243350f, -0.916218691472794110f, 0.400502871089639500f,\n    -0.916295503780824800f,\n  0.400327166265690150f, -0.916372282399289140f, 0.400151446722855300f,\n    -0.916449027325364040f,\n  0.399975712467595390f, -0.916525738556228100f, 0.399799963506372090f,\n    -0.916602416089060680f,\n  0.399624199845646790f, -0.916679059921042700f, 0.399448421491882260f,\n    -0.916755670049355990f,\n  0.399272628451540930f, -0.916832246471183890f, 0.399096820731086600f,\n    -0.916908789183710990f,\n  0.398920998336983020f, -0.916985298184122890f, 0.398745161275694480f,\n    -0.917061773469606820f,\n  0.398569309553686360f, -0.917138215037350710f, 0.398393443177423920f,\n    -0.917214622884544250f,\n  0.398217562153373620f, -0.917290997008377910f, 0.398041666488001930f,\n    -0.917367337406043810f,\n  0.397865756187775750f, -0.917443644074735220f, 0.397689831259163240f,\n    -0.917519917011646260f,\n  0.397513891708632330f, -0.917596156213972950f, 0.397337937542652120f,\n    -0.917672361678911750f,\n  0.397161968767691720f, -0.917748533403661250f, 0.396985985390220900f,\n    -0.917824671385420570f,\n  0.396809987416710420f, -0.917900775621390390f, 0.396633974853630830f,\n    -0.917976846108772730f,\n  0.396457947707453960f, -0.918052882844770380f, 0.396281905984651680f,\n    -0.918128885826587910f,\n  0.396105849691696320f, -0.918204855051430900f, 0.395929778835061360f,\n    -0.918280790516506130f,\n  0.395753693421220080f, -0.918356692219021720f, 0.395577593456646950f,\n    -0.918432560156186790f,\n  0.395401478947816300f, -0.918508394325212250f, 0.395225349901203730f,\n    -0.918584194723309540f,\n  0.395049206323284880f, -0.918659961347691900f, 0.394873048220535760f,\n    -0.918735694195573550f,\n  0.394696875599433670f, -0.918811393264169940f, 0.394520688466455550f,\n    -0.918887058550697970f,\n  0.394344486828079650f, -0.918962690052375630f, 0.394168270690784250f,\n    -0.919038287766421940f,\n  0.393992040061048100f, -0.919113851690057770f, 0.393815794945351130f,\n    -0.919189381820504470f,\n  0.393639535350172880f, -0.919264878154985250f, 0.393463261281994380f,\n    -0.919340340690724230f,\n  0.393286972747296570f, -0.919415769424946960f, 0.393110669752560760f,\n    -0.919491164354880100f,\n  0.392934352304269600f, -0.919566525477751530f, 0.392758020408905280f,\n    -0.919641852790790470f,\n  0.392581674072951530f, -0.919717146291227360f, 0.392405313302891860f,\n    -0.919792405976293750f,\n  0.392228938105210370f, -0.919867631843222950f, 0.392052548486392200f,\n    -0.919942823889248640f,\n  0.391876144452922350f, -0.920017982111606570f, 0.391699726011287050f,\n    -0.920093106507533070f,\n  0.391523293167972350f, -0.920168197074266450f, 0.391346845929465610f,\n    -0.920243253809045370f,\n  0.391170384302253980f, -0.920318276709110480f, 0.390993908292825380f,\n    -0.920393265771703550f,\n  0.390817417907668610f, -0.920468220994067110f, 0.390640913153272370f,\n    -0.920543142373445480f,\n  0.390464394036126650f, -0.920618029907083860f, 0.390287860562721360f,\n    -0.920692883592229010f,\n  0.390111312739546910f, -0.920767703426128790f, 0.389934750573094790f,\n    -0.920842489406032080f,\n  0.389758174069856410f, -0.920917241529189520f, 0.389581583236324360f,\n    -0.920991959792852310f,\n  0.389404978078991100f, -0.921066644194273530f, 0.389228358604349730f,\n    -0.921141294730707270f,\n  0.389051724818894500f, -0.921215911399408730f, 0.388875076729119250f,\n    -0.921290494197634540f,\n  0.388698414341519250f, -0.921365043122642340f, 0.388521737662589740f,\n    -0.921439558171691320f,\n  0.388345046698826300f, -0.921514039342041900f, 0.388168341456725850f,\n    -0.921588486630955380f,\n  0.387991621942784910f, -0.921662900035694730f, 0.387814888163501290f,\n    -0.921737279553523800f,\n  0.387638140125372680f, -0.921811625181708120f, 0.387461377834897920f,\n    -0.921885936917513970f,\n  0.387284601298575890f, -0.921960214758209110f, 0.387107810522905990f,\n    -0.922034458701062820f,\n  0.386931005514388690f, -0.922108668743345070f, 0.386754186279524130f,\n    -0.922182844882327600f,\n  0.386577352824813980f, -0.922256987115283030f, 0.386400505156759610f,\n    -0.922331095439485330f,\n  0.386223643281862980f, -0.922405169852209880f, 0.386046767206627280f,\n    -0.922479210350733100f,\n  0.385869876937555310f, -0.922553216932332830f, 0.385692972481151200f,\n    -0.922627189594287800f,\n  0.385516053843919020f, -0.922701128333878520f, 0.385339121032363340f,\n    -0.922775033148386380f,\n  0.385162174052989970f, -0.922848904035094120f, 0.384985212912304200f,\n    -0.922922740991285680f,\n  0.384808237616812930f, -0.922996544014246250f, 0.384631248173022740f,\n    -0.923070313101262420f,\n  0.384454244587440870f, -0.923144048249621820f, 0.384277226866575620f,\n    -0.923217749456613500f,\n  0.384100195016935040f, -0.923291416719527640f, 0.383923149045028500f,\n    -0.923365050035655610f,\n  0.383746088957365010f, -0.923438649402290370f, 0.383569014760454960f,\n    -0.923512214816725520f,\n  0.383391926460808770f, -0.923585746276256560f, 0.383214824064937180f,\n    -0.923659243778179980f,\n  0.383037707579352130f, -0.923732707319793180f, 0.382860577010565360f,\n    -0.923806136898395410f,\n  0.382683432365089840f, -0.923879532511286740f, 0.382506273649438400f,\n    -0.923952894155768640f,\n  0.382329100870124510f, -0.924026221829143850f, 0.382151914033662720f,\n    -0.924099515528716280f,\n  0.381974713146567220f, -0.924172775251791200f, 0.381797498215353690f,\n    -0.924246000995674890f,\n  0.381620269246537520f, -0.924319192757675160f, 0.381443026246634730f,\n    -0.924392350535101050f,\n  0.381265769222162490f, -0.924465474325262600f, 0.381088498179637520f,\n    -0.924538564125471420f,\n  0.380911213125578130f, -0.924611619933039970f, 0.380733914066502090f,\n    -0.924684641745282530f,\n  0.380556601008928570f, -0.924757629559513910f, 0.380379273959376710f,\n    -0.924830583373050800f,\n  0.380201932924366050f, -0.924903503183210910f, 0.380024577910417380f,\n    -0.924976388987313050f,\n  0.379847208924051110f, -0.925049240782677580f, 0.379669825971789000f,\n    -0.925122058566625770f,\n  0.379492429060152740f, -0.925194842336480420f, 0.379315018195664430f,\n    -0.925267592089565550f,\n  0.379137593384847430f, -0.925340307823206200f, 0.378960154634224720f,\n    -0.925412989534729060f,\n  0.378782701950320600f, -0.925485637221461490f, 0.378605235339659290f,\n    -0.925558250880732620f,\n  0.378427754808765620f, -0.925630830509872720f, 0.378250260364165310f,\n    -0.925703376106213120f,\n  0.378072752012383990f, -0.925775887667086740f, 0.377895229759948550f,\n    -0.925848365189827270f,\n  0.377717693613385810f, -0.925920808671769960f, 0.377540143579222940f,\n    -0.925993218110251480f,\n  0.377362579663988450f, -0.926065593502609310f, 0.377185001874210450f,\n    -0.926137934846182560f,\n  0.377007410216418310f, -0.926210242138311270f, 0.376829804697141220f,\n    -0.926282515376337210f,\n  0.376652185322909620f, -0.926354754557602860f, 0.376474552100253880f,\n    -0.926426959679452100f,\n  0.376296905035704790f, -0.926499130739230510f, 0.376119244135794390f,\n    -0.926571267734284220f,\n  0.375941569407054420f, -0.926643370661961230f, 0.375763880856017750f,\n    -0.926715439519610330f,\n  0.375586178489217330f, -0.926787474304581750f, 0.375408462313186590f,\n    -0.926859475014227160f,\n  0.375230732334460030f, -0.926931441645899130f, 0.375052988559571860f,\n    -0.927003374196951670f,\n  0.374875230995057600f, -0.927075272664740100f, 0.374697459647452770f,\n    -0.927147137046620880f,\n  0.374519674523293210f, -0.927218967339951790f, 0.374341875629116030f,\n    -0.927290763542091720f,\n  0.374164062971457990f, -0.927362525650401110f, 0.373986236556857090f,\n    -0.927434253662241300f,\n  0.373808396391851370f, -0.927505947574975180f, 0.373630542482979280f,\n    -0.927577607385966730f,\n  0.373452674836780410f, -0.927649233092581180f, 0.373274793459794030f,\n    -0.927720824692185200f,\n  0.373096898358560690f, -0.927792382182146320f, 0.372918989539620770f,\n    -0.927863905559833780f,\n  0.372741067009515810f, -0.927935394822617890f, 0.372563130774787370f,\n    -0.928006849967869970f,\n  0.372385180841977360f, -0.928078270992963140f, 0.372207217217628950f,\n    -0.928149657895271150f,\n  0.372029239908284960f, -0.928221010672169440f, 0.371851248920489540f,\n    -0.928292329321034560f,\n  0.371673244260786630f, -0.928363613839244370f, 0.371495225935720760f,\n    -0.928434864224177980f,\n  0.371317193951837600f, -0.928506080473215480f, 0.371139148315682510f,\n    -0.928577262583738850f,\n  0.370961089033802040f, -0.928648410553130520f, 0.370783016112742720f,\n    -0.928719524378774700f,\n  0.370604929559051670f, -0.928790604058057020f, 0.370426829379276900f,\n    -0.928861649588363700f,\n  0.370248715579966360f, -0.928932660967082820f, 0.370070588167669130f,\n    -0.929003638191603360f,\n  0.369892447148934270f, -0.929074581259315750f, 0.369714292530311240f,\n    -0.929145490167611720f,\n  0.369536124318350760f, -0.929216364913883930f, 0.369357942519603190f,\n    -0.929287205495526790f,\n  0.369179747140620070f, -0.929358011909935500f, 0.369001538187952780f,\n    -0.929428784154506800f,\n  0.368823315668153960f, -0.929499522226638560f, 0.368645079587776150f,\n    -0.929570226123729860f,\n  0.368466829953372320f, -0.929640895843181330f, 0.368288566771496680f,\n    -0.929711531382394370f,\n  0.368110290048703050f, -0.929782132738772190f, 0.367931999791546500f,\n    -0.929852699909718750f,\n  0.367753696006582090f, -0.929923232892639560f, 0.367575378700365330f,\n    -0.929993731684941480f,\n  0.367397047879452820f, -0.930064196284032360f, 0.367218703550400930f,\n    -0.930134626687321390f,\n  0.367040345719767240f, -0.930205022892219070f, 0.366861974394109220f,\n    -0.930275384896137040f,\n  0.366683589579984930f, -0.930345712696488470f, 0.366505191283953480f,\n    -0.930416006290687550f,\n  0.366326779512573590f, -0.930486265676149780f, 0.366148354272405390f,\n    -0.930556490850291800f,\n  0.365969915570008910f, -0.930626681810531650f, 0.365791463411944570f,\n    -0.930696838554288860f,\n  0.365612997804773960f, -0.930766961078983710f, 0.365434518755058390f,\n    -0.930837049382038150f,\n  0.365256026269360380f, -0.930907103460875020f, 0.365077520354242180f,\n    -0.930977123312918930f,\n  0.364899001016267380f, -0.931047108935595170f, 0.364720468261999390f,\n    -0.931117060326330790f,\n  0.364541922098002180f, -0.931186977482553750f, 0.364363362530840730f,\n    -0.931256860401693420f,\n  0.364184789567079840f, -0.931326709081180430f, 0.364006203213285530f,\n    -0.931396523518446600f,\n  0.363827603476023610f, -0.931466303710925090f, 0.363648990361860550f,\n    -0.931536049656050300f,\n  0.363470363877363870f, -0.931605761351257830f, 0.363291724029100700f,\n    -0.931675438793984620f,\n  0.363113070823639530f, -0.931745081981668720f, 0.362934404267548750f,\n    -0.931814690911749620f,\n  0.362755724367397230f, -0.931884265581668150f, 0.362577031129754870f,\n    -0.931953805988865900f,\n  0.362398324561191310f, -0.932023312130786490f, 0.362219604668277570f,\n    -0.932092784004874050f,\n  0.362040871457584350f, -0.932162221608574320f, 0.361862124935682980f,\n    -0.932231624939334540f,\n  0.361683365109145950f, -0.932300993994602640f, 0.361504591984545260f,\n    -0.932370328771828460f,\n  0.361325805568454340f, -0.932439629268462360f, 0.361147005867446190f,\n    -0.932508895481956700f,\n  0.360968192888095290f, -0.932578127409764420f, 0.360789366636975690f,\n    -0.932647325049340340f,\n  0.360610527120662270f, -0.932716488398140250f, 0.360431674345730810f,\n    -0.932785617453620990f,\n  0.360252808318756830f, -0.932854712213241230f, 0.360073929046317080f,\n    -0.932923772674460140f,\n  0.359895036534988280f, -0.932992798834738850f, 0.359716130791347570f,\n    -0.933061790691539380f,\n  0.359537211821973180f, -0.933130748242325110f, 0.359358279633443080f,\n    -0.933199671484560730f,\n  0.359179334232336560f, -0.933268560415712050f, 0.359000375625232630f,\n    -0.933337415033246080f,\n  0.358821403818710920f, -0.933406235334631520f, 0.358642418819352100f,\n    -0.933475021317337950f,\n  0.358463420633736540f, -0.933543772978836170f, 0.358284409268445900f,\n    -0.933612490316598540f,\n  0.358105384730061760f, -0.933681173328098300f, 0.357926347025166070f,\n    -0.933749822010810580f,\n  0.357747296160342010f, -0.933818436362210960f, 0.357568232142172260f,\n    -0.933887016379776890f,\n  0.357389154977241000f, -0.933955562060986730f, 0.357210064672131900f,\n    -0.934024073403320500f,\n  0.357030961233430030f, -0.934092550404258870f, 0.356851844667720410f,\n    -0.934160993061284420f,\n  0.356672714981588260f, -0.934229401371880820f, 0.356493572181620200f,\n    -0.934297775333532530f,\n  0.356314416274402360f, -0.934366114943725900f, 0.356135247266522180f,\n    -0.934434420199948050f,\n  0.355956065164567010f, -0.934502691099687870f, 0.355776869975124640f,\n    -0.934570927640435030f,\n  0.355597661704783960f, -0.934639129819680780f, 0.355418440360133590f,\n    -0.934707297634917440f,\n  0.355239205947763370f, -0.934775431083638700f, 0.355059958474263030f,\n    -0.934843530163339430f,\n  0.354880697946222790f, -0.934911594871516090f, 0.354701424370233940f,\n    -0.934979625205665800f,\n  0.354522137752887430f, -0.935047621163287430f, 0.354342838100775600f,\n    -0.935115582741880890f,\n  0.354163525420490510f, -0.935183509938947500f, 0.353984199718624830f,\n    -0.935251402751989810f,\n  0.353804861001772160f, -0.935319261178511500f, 0.353625509276525970f,\n    -0.935387085216017770f,\n  0.353446144549480870f, -0.935454874862014620f, 0.353266766827231180f,\n    -0.935522630114009930f,\n  0.353087376116372530f, -0.935590350969512370f, 0.352907972423500360f,\n    -0.935658037426032040f,\n  0.352728555755210730f, -0.935725689481080370f, 0.352549126118100580f,\n    -0.935793307132169900f,\n  0.352369683518766630f, -0.935860890376814640f, 0.352190227963806890f,\n    -0.935928439212529660f,\n  0.352010759459819240f, -0.935995953636831300f, 0.351831278013402030f,\n    -0.936063433647237540f,\n  0.351651783631154680f, -0.936130879241266920f, 0.351472276319676260f,\n    -0.936198290416440090f,\n  0.351292756085567150f, -0.936265667170278260f, 0.351113222935427630f,\n    -0.936333009500304180f,\n  0.350933676875858360f, -0.936400317404042060f, 0.350754117913461170f,\n    -0.936467590879016880f,\n  0.350574546054837570f, -0.936534829922755500f, 0.350394961306590200f,\n    -0.936602034532785570f,\n  0.350215363675321740f, -0.936669204706636060f, 0.350035753167635300f,\n    -0.936736340441837620f,\n  0.349856129790135030f, -0.936803441735921560f, 0.349676493549424760f,\n    -0.936870508586420960f,\n  0.349496844452109600f, -0.936937540990869900f, 0.349317182504794320f,\n    -0.937004538946803690f,\n  0.349137507714085030f, -0.937071502451759190f, 0.348957820086587600f,\n    -0.937138431503274140f,\n  0.348778119628908420f, -0.937205326098887960f, 0.348598406347655040f,\n    -0.937272186236140950f,\n  0.348418680249434510f, -0.937339011912574960f, 0.348238941340855310f,\n    -0.937405803125732850f,\n  0.348059189628525780f, -0.937472559873159140f, 0.347879425119054510f,\n    -0.937539282152399230f,\n  0.347699647819051490f, -0.937605969960999990f, 0.347519857735126110f,\n    -0.937672623296509470f,\n  0.347340054873889190f, -0.937739242156476970f, 0.347160239241951330f,\n    -0.937805826538453010f,\n  0.346980410845923680f, -0.937872376439989890f, 0.346800569692418400f,\n    -0.937938891858640210f,\n  0.346620715788047320f, -0.938005372791958840f, 0.346440849139423580f,\n    -0.938071819237501160f,\n  0.346260969753160170f, -0.938138231192824360f, 0.346081077635870480f,\n    -0.938204608655486490f,\n  0.345901172794169100f, -0.938270951623047080f, 0.345721255234670120f,\n    -0.938337260093066950f,\n  0.345541324963989150f, -0.938403534063108060f, 0.345361381988741170f,\n    -0.938469773530733800f,\n  0.345181426315542610f, -0.938535978493508560f, 0.345001457951009780f,\n    -0.938602148948998290f,\n  0.344821476901759290f, -0.938668284894770170f, 0.344641483174409070f,\n    -0.938734386328392460f,\n  0.344461476775576480f, -0.938800453247434770f, 0.344281457711880230f,\n    -0.938866485649468060f,\n  0.344101425989938980f, -0.938932483532064490f, 0.343921381616371700f,\n    -0.938998446892797540f,\n  0.343741324597798600f, -0.939064375729241950f, 0.343561254940839330f,\n    -0.939130270038973650f,\n  0.343381172652115100f, -0.939196129819569900f, 0.343201077738246710f,\n    -0.939261955068609100f,\n  0.343020970205855540f, -0.939327745783671400f, 0.342840850061564060f,\n    -0.939393501962337510f,\n  0.342660717311994380f, -0.939459223602189920f, 0.342480571963769850f,\n    -0.939524910700812120f,\n  0.342300414023513690f, -0.939590563255789160f, 0.342120243497849590f,\n    -0.939656181264707070f,\n  0.341940060393402300f, -0.939721764725153340f, 0.341759864716796310f,\n    -0.939787313634716570f,\n  0.341579656474657210f, -0.939852827990986680f, 0.341399435673610360f,\n    -0.939918307791555050f,\n  0.341219202320282410f, -0.939983753034013940f, 0.341038956421299830f,\n    -0.940049163715957370f,\n  0.340858697983289440f, -0.940114539834980280f, 0.340678427012879310f,\n    -0.940179881388678810f,\n  0.340498143516697100f, -0.940245188374650880f, 0.340317847501371730f,\n    -0.940310460790495070f,\n  0.340137538973531880f, -0.940375698633811540f, 0.339957217939806880f,\n    -0.940440901902201750f,\n  0.339776884406826960f, -0.940506070593268300f, 0.339596538381222060f,\n    -0.940571204704615190f,\n  0.339416179869623410f, -0.940636304233847590f, 0.339235808878662120f,\n    -0.940701369178571940f,\n  0.339055425414969640f, -0.940766399536396070f, 0.338875029485178560f,\n    -0.940831395304928870f,\n  0.338694621095921190f, -0.940896356481780830f, 0.338514200253831000f,\n    -0.940961283064563280f,\n  0.338333766965541290f, -0.941026175050889260f, 0.338153321237685990f,\n    -0.941091032438372780f,\n  0.337972863076899830f, -0.941155855224629190f, 0.337792392489817460f,\n    -0.941220643407275180f,\n  0.337611909483074680f, -0.941285396983928660f, 0.337431414063306790f,\n    -0.941350115952208970f,\n  0.337250906237150650f, -0.941414800309736230f, 0.337070386011242730f,\n    -0.941479450054132580f,\n  0.336889853392220050f, -0.941544065183020810f, 0.336709308386720700f,\n    -0.941608645694025140f,\n  0.336528751001382350f, -0.941673191584771360f, 0.336348181242844100f,\n    -0.941737702852886160f,\n  0.336167599117744690f, -0.941802179495997650f, 0.335987004632723350f,\n    -0.941866621511735280f,\n  0.335806397794420560f, -0.941931028897729510f, 0.335625778609476230f,\n    -0.941995401651612550f,\n  0.335445147084531660f, -0.942059739771017310f, 0.335264503226227970f,\n    -0.942124043253578460f,\n  0.335083847041206580f, -0.942188312096931770f, 0.334903178536110290f,\n    -0.942252546298714020f,\n  0.334722497717581220f, -0.942316745856563780f, 0.334541804592262960f,\n    -0.942380910768120470f,\n  0.334361099166798900f, -0.942445041031024890f, 0.334180381447832740f,\n    -0.942509136642919240f,\n  0.333999651442009490f, -0.942573197601446870f, 0.333818909155973620f,\n    -0.942637223904252530f,\n  0.333638154596370920f, -0.942701215548981900f, 0.333457387769846790f,\n    -0.942765172533282510f,\n  0.333276608683047980f, -0.942829094854802710f, 0.333095817342620890f,\n    -0.942892982511192130f,\n  0.332915013755212650f, -0.942956835500102120f, 0.332734197927471160f,\n    -0.943020653819184650f,\n  0.332553369866044220f, -0.943084437466093490f, 0.332372529577580680f,\n    -0.943148186438483420f,\n  0.332191677068729320f, -0.943211900734010620f, 0.332010812346139380f,\n    -0.943275580350332540f,\n  0.331829935416461220f, -0.943339225285107720f, 0.331649046286344620f,\n    -0.943402835535996240f,\n  0.331468144962440920f, -0.943466411100659320f, 0.331287231451400990f,\n    -0.943529951976759370f,\n  0.331106305759876430f, -0.943593458161960390f, 0.330925367894519650f,\n    -0.943656929653927110f,\n  0.330744417861982890f, -0.943720366450326200f, 0.330563455668919590f,\n    -0.943783768548825060f,\n  0.330382481321982950f, -0.943847135947092690f, 0.330201494827826620f,\n    -0.943910468642799150f,\n  0.330020496193105530f, -0.943973766633615980f, 0.329839485424473940f,\n    -0.944037029917215830f,\n  0.329658462528587550f, -0.944100258491272660f, 0.329477427512101680f,\n    -0.944163452353461770f,\n  0.329296380381672800f, -0.944226611501459810f, 0.329115321143957360f,\n    -0.944289735932944410f,\n  0.328934249805612200f, -0.944352825645594750f, 0.328753166373295100f,\n    -0.944415880637091250f,\n  0.328572070853663690f, -0.944478900905115550f, 0.328390963253376630f,\n    -0.944541886447350380f,\n  0.328209843579092660f, -0.944604837261480260f, 0.328028711837470730f,\n    -0.944667753345190490f,\n  0.327847568035170960f, -0.944730634696167800f, 0.327666412178853060f,\n    -0.944793481312100280f,\n  0.327485244275178060f, -0.944856293190677210f, 0.327304064330806830f,\n    -0.944919070329589220f,\n  0.327122872352400510f, -0.944981812726528150f, 0.326941668346621530f,\n    -0.945044520379187070f,\n  0.326760452320131790f, -0.945107193285260610f, 0.326579224279594460f,\n    -0.945169831442444150f,\n  0.326397984231672660f, -0.945232434848434890f, 0.326216732183029770f,\n    -0.945295003500931100f,\n  0.326035468140330350f, -0.945357537397632290f, 0.325854192110238580f,\n    -0.945420036536239070f,\n  0.325672904099419900f, -0.945482500914453740f, 0.325491604114539260f,\n    -0.945544930529979680f,\n  0.325310292162262980f, -0.945607325380521280f, 0.325128968249257190f,\n    -0.945669685463784710f,\n  0.324947632382188430f, -0.945732010777477150f, 0.324766284567724330f,\n    -0.945794301319306860f,\n  0.324584924812532150f, -0.945856557086983910f, 0.324403553123280290f,\n    -0.945918778078219110f,\n  0.324222169506637130f, -0.945980964290724760f, 0.324040773969271450f,\n    -0.946043115722214560f,\n  0.323859366517852960f, -0.946105232370403340f, 0.323677947159051180f,\n    -0.946167314233007370f,\n  0.323496515899536760f, -0.946229361307743820f, 0.323315072745980150f,\n    -0.946291373592331510f,\n  0.323133617705052330f, -0.946353351084490590f, 0.322952150783425370f,\n    -0.946415293781942110f,\n  0.322770671987770710f, -0.946477201682408680f, 0.322589181324761390f,\n    -0.946539074783614100f,\n  0.322407678801070020f, -0.946600913083283530f, 0.322226164423369650f,\n    -0.946662716579143360f,\n  0.322044638198334620f, -0.946724485268921170f, 0.321863100132638580f,\n    -0.946786219150346000f,\n  0.321681550232956640f, -0.946847918221148000f, 0.321499988505963450f,\n    -0.946909582479058760f,\n  0.321318414958334910f, -0.946971211921810880f, 0.321136829596746780f,\n    -0.947032806547138620f,\n  0.320955232427875210f, -0.947094366352777220f, 0.320773623458397440f,\n    -0.947155891336463270f,\n  0.320592002694990330f, -0.947217381495934820f, 0.320410370144331880f,\n    -0.947278836828930880f,\n  0.320228725813100020f, -0.947340257333191940f, 0.320047069707973140f,\n    -0.947401643006459900f,\n  0.319865401835630610f, -0.947462993846477700f, 0.319683722202751370f,\n    -0.947524309850989570f,\n  0.319502030816015750f, -0.947585591017741090f, 0.319320327682103720f,\n    -0.947646837344479190f,\n  0.319138612807695900f, -0.947708048828952100f, 0.318956886199473770f,\n    -0.947769225468909180f,\n  0.318775147864118480f, -0.947830367262101010f, 0.318593397808312470f,\n    -0.947891474206279730f,\n  0.318411636038737960f, -0.947952546299198560f, 0.318229862562077580f,\n    -0.948013583538612200f,\n  0.318048077385015060f, -0.948074585922276230f, 0.317866280514233660f,\n    -0.948135553447947980f,\n  0.317684471956418020f, -0.948196486113385580f, 0.317502651718252260f,\n    -0.948257383916349060f,\n  0.317320819806421790f, -0.948318246854599090f, 0.317138976227611890f,\n    -0.948379074925898120f,\n  0.316957120988508150f, -0.948439868128009620f, 0.316775254095797380f,\n    -0.948500626458698260f,\n  0.316593375556165850f, -0.948561349915730270f, 0.316411485376301090f,\n    -0.948622038496872990f,\n  0.316229583562890490f, -0.948682692199895090f, 0.316047670122621860f,\n    -0.948743311022566480f,\n  0.315865745062184070f, -0.948803894962658380f, 0.315683808388265600f,\n    -0.948864444017943340f,\n  0.315501860107556040f, -0.948924958186195160f, 0.315319900226745050f,\n    -0.948985437465188710f,\n  0.315137928752522440f, -0.949045881852700560f, 0.314955945691579250f,\n    -0.949106291346508260f,\n  0.314773951050606070f, -0.949166665944390700f, 0.314591944836294710f,\n    -0.949227005644128210f,\n  0.314409927055336820f, -0.949287310443502010f, 0.314227897714424500f,\n    -0.949347580340295210f,\n  0.314045856820250820f, -0.949407815332291460f, 0.313863804379508500f,\n    -0.949468015417276550f,\n  0.313681740398891570f, -0.949528180593036670f, 0.313499664885093450f,\n    -0.949588310857359950f,\n  0.313317577844809070f, -0.949648406208035480f, 0.313135479284732950f,\n    -0.949708466642853800f,\n  0.312953369211560200f, -0.949768492159606680f, 0.312771247631986880f,\n    -0.949828482756087000f,\n  0.312589114552708660f, -0.949888438430089300f, 0.312406969980422500f,\n    -0.949948359179409010f,\n  0.312224813921825050f, -0.950008245001843000f, 0.312042646383613510f,\n    -0.950068095895189590f,\n  0.311860467372486130f, -0.950127911857248100f, 0.311678276895140550f,\n    -0.950187692885819280f,\n  0.311496074958275970f, -0.950247438978705230f, 0.311313861568591090f,\n    -0.950307150133709140f,\n  0.311131636732785270f, -0.950366826348635780f, 0.310949400457558760f,\n    -0.950426467621290900f,\n  0.310767152749611470f, -0.950486073949481700f, 0.310584893615644560f,\n    -0.950545645331016600f,\n  0.310402623062358880f, -0.950605181763705230f, 0.310220341096455910f,\n    -0.950664683245358910f,\n  0.310038047724638000f, -0.950724149773789610f, 0.309855742953607130f,\n    -0.950783581346811070f,\n  0.309673426790066490f, -0.950842977962238160f, 0.309491099240719050f,\n    -0.950902339617887060f,\n  0.309308760312268780f, -0.950961666311575080f, 0.309126410011419550f,\n    -0.951020958041121080f,\n  0.308944048344875710f, -0.951080214804345010f, 0.308761675319342570f,\n    -0.951139436599068190f,\n  0.308579290941525030f, -0.951198623423113230f, 0.308396895218129240f,\n    -0.951257775274304000f,\n  0.308214488155861220f, -0.951316892150465550f, 0.308032069761427330f,\n    -0.951375974049424420f,\n  0.307849640041534980f, -0.951435020969008340f, 0.307667199002891190f,\n    -0.951494032907046370f,\n  0.307484746652204160f, -0.951553009861368590f, 0.307302282996181950f,\n    -0.951611951829806730f,\n  0.307119808041533100f, -0.951670858810193860f, 0.306937321794967020f,\n    -0.951729730800363720f,\n  0.306754824263192780f, -0.951788567798152130f, 0.306572315452920800f,\n    -0.951847369801395620f,\n  0.306389795370861080f, -0.951906136807932230f, 0.306207264023724280f,\n    -0.951964868815601380f,\n  0.306024721418221900f, -0.952023565822243570f, 0.305842167561065080f,\n    -0.952082227825700620f,\n  0.305659602458966230f, -0.952140854823815830f, 0.305477026118637360f,\n    -0.952199446814433580f,\n  0.305294438546791720f, -0.952258003795399600f, 0.305111839750142220f,\n    -0.952316525764560830f,\n  0.304929229735402430f, -0.952375012719765880f, 0.304746608509286640f,\n    -0.952433464658864030f,\n  0.304563976078509050f, -0.952491881579706320f, 0.304381332449784940f,\n    -0.952550263480144930f,\n  0.304198677629829270f, -0.952608610358033240f, 0.304016011625357570f,\n    -0.952666922211226170f,\n  0.303833334443086470f, -0.952725199037579570f, 0.303650646089731910f,\n    -0.952783440834950920f,\n  0.303467946572011370f, -0.952841647601198720f, 0.303285235896641910f,\n    -0.952899819334182880f,\n  0.303102514070341060f, -0.952957956031764700f, 0.302919781099827420f,\n    -0.953016057691806530f,\n  0.302737036991819140f, -0.953074124312172200f, 0.302554281753035670f,\n    -0.953132155890726750f,\n  0.302371515390196130f, -0.953190152425336560f, 0.302188737910020040f,\n    -0.953248113913869320f,\n  0.302005949319228200f, -0.953306040354193750f, 0.301823149624540650f,\n    -0.953363931744180330f,\n  0.301640338832678880f, -0.953421788081700310f, 0.301457516950363940f,\n    -0.953479609364626610f,\n  0.301274683984318000f, -0.953537395590833280f, 0.301091839941263210f,\n    -0.953595146758195680f,\n  0.300908984827921890f, -0.953652862864590500f, 0.300726118651017620f,\n    -0.953710543907895560f,\n  0.300543241417273400f, -0.953768189885990330f, 0.300360353133413580f,\n    -0.953825800796755050f,\n  0.300177453806162120f, -0.953883376638071770f, 0.299994543442243580f,\n    -0.953940917407823500f,\n  0.299811622048383460f, -0.953998423103894490f, 0.299628689631306790f,\n    -0.954055893724170660f,\n  0.299445746197739950f, -0.954113329266538800f, 0.299262791754409010f,\n    -0.954170729728887280f,\n  0.299079826308040480f, -0.954228095109105670f, 0.298896849865361910f,\n    -0.954285425405084650f,\n  0.298713862433100390f, -0.954342720614716480f, 0.298530864017984230f,\n    -0.954399980735894490f,\n  0.298347854626741570f, -0.954457205766513490f, 0.298164834266100910f,\n    -0.954514395704469500f,\n  0.297981802942791920f, -0.954571550547659630f, 0.297798760663543550f,\n    -0.954628670293982680f,\n  0.297615707435086310f, -0.954685754941338340f, 0.297432643264150030f,\n    -0.954742804487627940f,\n  0.297249568157465890f, -0.954799818930753720f, 0.297066482121764840f,\n    -0.954856798268619580f,\n  0.296883385163778270f, -0.954913742499130520f, 0.296700277290238460f,\n    -0.954970651620192790f,\n  0.296517158507877410f, -0.955027525629714160f, 0.296334028823428240f,\n    -0.955084364525603410f,\n  0.296150888243623960f, -0.955141168305770670f, 0.295967736775197890f,\n    -0.955197936968127710f,\n  0.295784574424884370f, -0.955254670510586990f, 0.295601401199417360f,\n    -0.955311368931062720f,\n  0.295418217105532070f, -0.955368032227470240f, 0.295235022149963390f,\n    -0.955424660397726330f,\n  0.295051816339446720f, -0.955481253439748770f, 0.294868599680718380f,\n    -0.955537811351456770f,\n  0.294685372180514330f, -0.955594334130771110f, 0.294502133845571720f,\n    -0.955650821775613220f,\n  0.294318884682627570f, -0.955707274283906560f, 0.294135624698419080f,\n    -0.955763691653575440f,\n  0.293952353899684770f, -0.955820073882545420f, 0.293769072293162400f,\n    -0.955876420968743590f,\n  0.293585779885591310f, -0.955932732910098170f, 0.293402476683710060f,\n    -0.955989009704538930f,\n  0.293219162694258680f, -0.956045251349996410f, 0.293035837923976920f,\n    -0.956101457844403040f,\n  0.292852502379604810f, -0.956157629185692140f, 0.292669156067883570f,\n    -0.956213765371798470f,\n  0.292485798995553830f, -0.956269866400658140f, 0.292302431169357610f,\n    -0.956325932270208230f,\n  0.292119052596036540f, -0.956381962978387620f, 0.291935663282332780f,\n    -0.956437958523136180f,\n  0.291752263234989370f, -0.956493918902394990f, 0.291568852460749040f,\n    -0.956549844114106820f,\n  0.291385430966355720f, -0.956605734156215080f, 0.291201998758553020f,\n    -0.956661589026664980f,\n  0.291018555844085090f, -0.956717408723403050f, 0.290835102229696940f,\n    -0.956773193244376930f,\n  0.290651637922133220f, -0.956828942587535370f, 0.290468162928139870f,\n    -0.956884656750828900f,\n  0.290284677254462330f, -0.956940335732208940f, 0.290101180907847140f,\n    -0.956995979529628230f,\n  0.289917673895040860f, -0.957051588141040970f, 0.289734156222790250f,\n    -0.957107161564402790f,\n  0.289550627897843140f, -0.957162699797670100f, 0.289367088926946960f,\n    -0.957218202838801210f,\n  0.289183539316850310f, -0.957273670685755200f, 0.288999979074301530f,\n    -0.957329103336492790f,\n  0.288816408206049480f, -0.957384500788975860f, 0.288632826718843940f,\n    -0.957439863041167570f,\n  0.288449234619434170f, -0.957495190091032570f, 0.288265631914570830f,\n    -0.957550481936536470f,\n  0.288082018611004300f, -0.957605738575646240f, 0.287898394715485170f,\n    -0.957660960006330610f,\n  0.287714760234765280f, -0.957716146226558870f, 0.287531115175595930f,\n    -0.957771297234302320f,\n  0.287347459544729570f, -0.957826413027532910f, 0.287163793348918560f,\n    -0.957881493604224250f,\n  0.286980116594915570f, -0.957936538962351420f, 0.286796429289474190f,\n    -0.957991549099890370f,\n  0.286612731439347790f, -0.958046524014818600f, 0.286429023051290750f,\n    -0.958101463705114620f,\n  0.286245304132057120f, -0.958156368168758820f, 0.286061574688402100f,\n    -0.958211237403732260f,\n  0.285877834727080730f, -0.958266071408017670f, 0.285694084254848320f,\n    -0.958320870179598880f,\n  0.285510323278461380f, -0.958375633716461170f, 0.285326551804675810f,\n    -0.958430362016591040f,\n  0.285142769840248720f, -0.958485055077976100f, 0.284958977391937150f,\n    -0.958539712898605730f,\n  0.284775174466498300f, -0.958594335476470220f, 0.284591361070690550f,\n    -0.958648922809561040f,\n  0.284407537211271820f, -0.958703474895871600f, 0.284223702895001100f,\n    -0.958757991733395710f,\n  0.284039858128637360f, -0.958812473320129200f, 0.283856002918939750f,\n    -0.958866919654069010f,\n  0.283672137272668550f, -0.958921330733213060f, 0.283488261196583550f,\n    -0.958975706555561080f,\n  0.283304374697445790f, -0.959030047119113550f, 0.283120477782015990f,\n    -0.959084352421872730f,\n  0.282936570457055390f, -0.959138622461841890f, 0.282752652729326040f,\n    -0.959192857237025740f,\n  0.282568724605589740f, -0.959247056745430090f, 0.282384786092609420f,\n    -0.959301220985062210f,\n  0.282200837197147500f, -0.959355349953930790f, 0.282016877925967690f,\n    -0.959409443650045550f,\n  0.281832908285833460f, -0.959463502071417510f, 0.281648928283508680f,\n    -0.959517525216059260f,\n  0.281464937925758050f, -0.959571513081984520f, 0.281280937219346110f,\n    -0.959625465667208300f,\n  0.281096926171038320f, -0.959679382969746750f, 0.280912904787600120f,\n    -0.959733264987617680f,\n  0.280728873075797190f, -0.959787111718839900f, 0.280544831042396360f,\n    -0.959840923161433660f,\n  0.280360778694163810f, -0.959894699313420530f, 0.280176716037867040f,\n    -0.959948440172823210f,\n  0.279992643080273380f, -0.960002145737665850f, 0.279808559828150390f,\n    -0.960055816005973890f,\n  0.279624466288266700f, -0.960109450975773940f, 0.279440362467390510f,\n    -0.960163050645094000f,\n  0.279256248372291240f, -0.960216615011963430f, 0.279072124009737970f,\n    -0.960270144074412800f,\n  0.278887989386500280f, -0.960323637830473920f, 0.278703844509348600f,\n    -0.960377096278180130f,\n  0.278519689385053060f, -0.960430519415565790f, 0.278335524020384970f,\n    -0.960483907240666790f,\n  0.278151348422115090f, -0.960537259751520050f, 0.277967162597015430f,\n    -0.960590576946164120f,\n  0.277782966551857800f, -0.960643858822638470f, 0.277598760293414290f,\n    -0.960697105378984450f,\n  0.277414543828458200f, -0.960750316613243950f, 0.277230317163762120f,\n    -0.960803492523460760f,\n  0.277046080306099950f, -0.960856633107679660f, 0.276861833262245390f,\n    -0.960909738363946770f,\n  0.276677576038972420f, -0.960962808290309780f, 0.276493308643056100f,\n    -0.961015842884817230f,\n  0.276309031081271030f, -0.961068842145519350f, 0.276124743360392890f,\n    -0.961121806070467380f,\n  0.275940445487197320f, -0.961174734657714080f, 0.275756137468460120f,\n    -0.961227627905313460f,\n  0.275571819310958250f, -0.961280485811320640f, 0.275387491021468140f,\n    -0.961333308373792270f,\n  0.275203152606767370f, -0.961386095590786250f, 0.275018804073633380f,\n    -0.961438847460361570f,\n  0.274834445428843940f, -0.961491563980579000f, 0.274650076679177790f,\n    -0.961544245149499990f,\n  0.274465697831413220f, -0.961596890965187860f, 0.274281308892329710f,\n    -0.961649501425706820f,\n  0.274096909868706330f, -0.961702076529122540f, 0.273912500767323320f,\n    -0.961754616273502010f,\n  0.273728081594960650f, -0.961807120656913540f, 0.273543652358398730f,\n    -0.961859589677426570f,\n  0.273359213064418790f, -0.961912023333112100f, 0.273174763719801870f,\n    -0.961964421622042320f,\n  0.272990304331329980f, -0.962016784542290560f, 0.272805834905784920f,\n    -0.962069112091931580f,\n  0.272621355449948980f, -0.962121404269041580f, 0.272436865970605350f,\n    -0.962173661071697770f,\n  0.272252366474536660f, -0.962225882497979020f, 0.272067856968526980f,\n    -0.962278068545965090f,\n  0.271883337459359890f, -0.962330219213737400f, 0.271698807953819510f,\n    -0.962382334499378380f,\n  0.271514268458690810f, -0.962434414400971990f, 0.271329718980758420f,\n    -0.962486458916603450f,\n  0.271145159526808070f, -0.962538468044359160f, 0.270960590103625330f,\n    -0.962590441782326780f,\n  0.270776010717996010f, -0.962642380128595710f, 0.270591421376707050f,\n    -0.962694283081255930f,\n  0.270406822086544820f, -0.962746150638399410f, 0.270222212854296930f,\n    -0.962797982798119010f,\n  0.270037593686750510f, -0.962849779558509030f, 0.269852964590693910f,\n    -0.962901540917665000f,\n  0.269668325572915200f, -0.962953266873683880f, 0.269483676640202840f,\n    -0.963004957424663850f,\n  0.269299017799346230f, -0.963056612568704340f, 0.269114349057134330f,\n    -0.963108232303906190f,\n  0.268929670420357310f, -0.963159816628371360f, 0.268744981895805090f,\n    -0.963211365540203480f,\n  0.268560283490267890f, -0.963262879037507070f, 0.268375575210537010f,\n    -0.963314357118388090f,\n  0.268190857063403180f, -0.963365799780954050f, 0.268006129055658350f,\n    -0.963417207023313350f,\n  0.267821391194094320f, -0.963468578843575950f, 0.267636643485503090f,\n    -0.963519915239853140f,\n  0.267451885936677740f, -0.963571216210257210f, 0.267267118554410930f,\n    -0.963622481752902220f,\n  0.267082341345496350f, -0.963673711865903230f, 0.266897554316727510f,\n    -0.963724906547376410f,\n  0.266712757474898420f, -0.963776065795439840f, 0.266527950826803810f,\n    -0.963827189608212340f,\n  0.266343134379238180f, -0.963878277983814200f, 0.266158308138997050f,\n    -0.963929330920367140f,\n  0.265973472112875530f, -0.963980348415994110f, 0.265788626307669970f,\n    -0.964031330468819280f,\n  0.265603770730176440f, -0.964082277076968140f, 0.265418905387191260f,\n    -0.964133188238567640f,\n  0.265234030285511900f, -0.964184063951745720f, 0.265049145431935200f,\n    -0.964234904214632200f,\n  0.264864250833259320f, -0.964285709025357370f, 0.264679346496282050f,\n    -0.964336478382053720f,\n  0.264494432427801630f, -0.964387212282854290f, 0.264309508634617220f,\n    -0.964437910725893910f,\n  0.264124575123527490f, -0.964488573709308410f, 0.263939631901332410f,\n    -0.964539201231235150f,\n  0.263754678974831510f, -0.964589793289812650f, 0.263569716350824880f,\n    -0.964640349883180930f,\n  0.263384744036113390f, -0.964690871009480920f, 0.263199762037497560f,\n    -0.964741356666855340f,\n  0.263014770361779060f, -0.964791806853447900f, 0.262829769015759330f,\n    -0.964842221567403510f,\n  0.262644758006240100f, -0.964892600806868890f, 0.262459737340024090f,\n    -0.964942944569991410f,\n  0.262274707023913590f, -0.964993252854920320f, 0.262089667064712100f,\n    -0.965043525659805890f,\n  0.261904617469222560f, -0.965093762982799590f, 0.261719558244249080f,\n    -0.965143964822054450f,\n  0.261534489396595630f, -0.965194131175724720f, 0.261349410933066350f,\n    -0.965244262041965780f,\n  0.261164322860466590f, -0.965294357418934660f, 0.260979225185601020f,\n    -0.965344417304789370f,\n  0.260794117915275570f, -0.965394441697689400f, 0.260609001056295920f,\n    -0.965444430595795430f,\n  0.260423874615468010f, -0.965494383997269500f, 0.260238738599598950f,\n    -0.965544301900275070f,\n  0.260053593015495130f, -0.965594184302976830f, 0.259868437869964330f,\n    -0.965644031203540590f,\n  0.259683273169813930f, -0.965693842600133690f, 0.259498098921851660f,\n    -0.965743618490924830f,\n  0.259312915132886350f, -0.965793358874083570f, 0.259127721809726150f,\n    -0.965843063747781510f,\n  0.258942518959180580f, -0.965892733110190860f, 0.258757306588058840f,\n    -0.965942366959485540f,\n  0.258572084703170390f, -0.965991965293840570f, 0.258386853311325710f,\n    -0.966041528111432400f,\n  0.258201612419334870f, -0.966091055410438830f, 0.258016362034009070f,\n    -0.966140547189038750f,\n  0.257831102162158930f, -0.966190003445412620f, 0.257645832810596440f,\n    -0.966239424177741890f,\n  0.257460553986133210f, -0.966288809384209580f, 0.257275265695581120f,\n    -0.966338159063000130f,\n  0.257089967945753230f, -0.966387473212298790f, 0.256904660743461850f,\n    -0.966436751830292650f,\n  0.256719344095520720f, -0.966485994915169840f, 0.256534018008743200f,\n    -0.966535202465119700f,\n  0.256348682489942910f, -0.966584374478333120f, 0.256163337545934570f,\n    -0.966633510953002100f,\n  0.255977983183532380f, -0.966682611887320190f, 0.255792619409551670f,\n    -0.966731677279481840f,\n  0.255607246230807550f, -0.966780707127683270f, 0.255421863654115460f,\n    -0.966829701430121810f,\n  0.255236471686291820f, -0.966878660184995910f, 0.255051070334152530f,\n    -0.966927583390505660f,\n  0.254865659604514630f, -0.966976471044852070f, 0.254680239504194990f,\n    -0.967025323146237900f,\n  0.254494810040010790f, -0.967074139692867040f, 0.254309371218780110f,\n    -0.967122920682944360f,\n  0.254123923047320620f, -0.967171666114676640f, 0.253938465532451140f,\n    -0.967220375986271310f,\n  0.253752998680989940f, -0.967269050295937790f, 0.253567522499756610f,\n    -0.967317689041886310f,\n  0.253382036995570270f, -0.967366292222328510f, 0.253196542175250560f,\n    -0.967414859835477480f,\n  0.253011038045617980f, -0.967463391879547440f, 0.252825524613492610f,\n    -0.967511888352754150f,\n  0.252640001885695580f, -0.967560349253314360f, 0.252454469869047900f,\n    -0.967608774579446380f,\n  0.252268928570370810f, -0.967657164329369880f, 0.252083377996486560f,\n    -0.967705518501305480f,\n  0.251897818154216910f, -0.967753837093475510f, 0.251712249050384750f,\n    -0.967802120104103270f,\n  0.251526670691812780f, -0.967850367531413620f, 0.251341083085323880f,\n    -0.967898579373632660f,\n  0.251155486237742030f, -0.967946755628987800f, 0.250969880155890720f,\n    -0.967994896295707670f,\n  0.250784264846594550f, -0.968043001372022260f, 0.250598640316677830f,\n    -0.968091070856162970f,\n  0.250413006572965280f, -0.968139104746362330f, 0.250227363622282540f,\n    -0.968187103040854420f,\n  0.250041711471454650f, -0.968235065737874320f, 0.249856050127308050f,\n    -0.968282992835658660f,\n  0.249670379596668520f, -0.968330884332445300f, 0.249484699886363010f,\n    -0.968378740226473300f,\n  0.249299011003218300f, -0.968426560515983190f, 0.249113312954061360f,\n    -0.968474345199216820f,\n  0.248927605745720260f, -0.968522094274417270f, 0.248741889385022420f,\n    -0.968569807739828930f,\n  0.248556163878796620f, -0.968617485593697540f, 0.248370429233871150f,\n    -0.968665127834269950f,\n  0.248184685457074780f, -0.968712734459794780f, 0.247998932555237220f,\n    -0.968760305468521430f,\n  0.247813170535187620f, -0.968807840858700970f, 0.247627399403756330f,\n    -0.968855340628585580f,\n  0.247441619167773440f, -0.968902804776428870f, 0.247255829834069320f,\n    -0.968950233300485800f,\n  0.247070031409475370f, -0.968997626199012310f, 0.246884223900822430f,\n    -0.969044983470266240f,\n  0.246698407314942500f, -0.969092305112506100f, 0.246512581658667380f,\n    -0.969139591123992280f,\n  0.246326746938829060f, -0.969186841502985950f, 0.246140903162260640f,\n    -0.969234056247750050f,\n  0.245955050335794590f, -0.969281235356548530f, 0.245769188466264670f,\n    -0.969328378827646660f,\n  0.245583317560504000f, -0.969375486659311280f, 0.245397437625346990f,\n    -0.969422558849810320f,\n  0.245211548667627680f, -0.969469595397412950f, 0.245025650694180470f,\n    -0.969516596300390000f,\n  0.244839743711840750f, -0.969563561557013180f, 0.244653827727443320f,\n    -0.969610491165555870f,\n  0.244467902747824210f, -0.969657385124292450f, 0.244281968779819170f,\n    -0.969704243431498750f,\n  0.244096025830264210f, -0.969751066085452140f, 0.243910073905996370f,\n    -0.969797853084430890f,\n  0.243724113013852130f, -0.969844604426714830f, 0.243538143160669180f,\n    -0.969891320110585100f,\n  0.243352164353284880f, -0.969938000134323960f, 0.243166176598536930f,\n    -0.969984644496215240f,\n  0.242980179903263980f, -0.970031253194543970f, 0.242794174274304190f,\n    -0.970077826227596420f,\n  0.242608159718496890f, -0.970124363593660280f, 0.242422136242681050f,\n    -0.970170865291024360f,\n  0.242236103853696040f, -0.970217331317979160f, 0.242050062558382180f,\n    -0.970263761672816140f,\n  0.241864012363579210f, -0.970310156353828110f, 0.241677953276128090f,\n    -0.970356515359309450f,\n  0.241491885302869300f, -0.970402838687555500f, 0.241305808450644390f,\n    -0.970449126336863090f,\n  0.241119722726294730f, -0.970495378305530450f, 0.240933628136661910f,\n    -0.970541594591857070f,\n  0.240747524688588540f, -0.970587775194143630f, 0.240561412388916620f,\n    -0.970633920110692160f,\n  0.240375291244489500f, -0.970680029339806130f, 0.240189161262150040f,\n    -0.970726102879790110f,\n  0.240003022448741500f, -0.970772140728950350f, 0.239816874811108110f,\n    -0.970818142885593870f,\n  0.239630718356093560f, -0.970864109348029470f, 0.239444553090542720f,\n    -0.970910040114567050f,\n  0.239258379021300120f, -0.970955935183517970f, 0.239072196155210660f,\n    -0.971001794553194690f,\n  0.238886004499120170f, -0.971047618221911100f, 0.238699804059873950f,\n    -0.971093406187982460f,\n  0.238513594844318500f, -0.971139158449725090f, 0.238327376859299970f,\n    -0.971184875005457030f,\n  0.238141150111664870f, -0.971230555853497380f, 0.237954914608260650f,\n    -0.971276200992166490f,\n  0.237768670355934210f, -0.971321810419786160f, 0.237582417361533650f,\n    -0.971367384134679490f,\n  0.237396155631906550f, -0.971412922135170940f, 0.237209885173901620f,\n    -0.971458424419585960f,\n  0.237023605994367340f, -0.971503890986251780f, 0.236837318100152380f,\n    -0.971549321833496630f,\n  0.236651021498106460f, -0.971594716959650160f, 0.236464716195078750f,\n    -0.971640076363043390f,\n  0.236278402197919620f, -0.971685400042008540f, 0.236092079513479050f,\n    -0.971730687994879160f,\n  0.235905748148607370f, -0.971775940219990140f, 0.235719408110155930f,\n    -0.971821156715677700f,\n  0.235533059404975460f, -0.971866337480279400f, 0.235346702039917920f,\n    -0.971911482512134000f,\n  0.235160336021834860f, -0.971956591809581600f, 0.234973961357578310f,\n    -0.972001665370963890f,\n  0.234787578054001080f, -0.972046703194623380f, 0.234601186117955550f,\n    -0.972091705278904430f,\n  0.234414785556295250f, -0.972136671622152120f, 0.234228376375873380f,\n    -0.972181602222713440f,\n  0.234041958583543460f, -0.972226497078936270f, 0.233855532186159950f,\n    -0.972271356189170040f,\n  0.233669097190576820f, -0.972316179551765300f, 0.233482653603649170f,\n    -0.972360967165074140f,\n  0.233296201432231560f, -0.972405719027449770f, 0.233109740683179740f,\n    -0.972450435137246830f,\n  0.232923271363349120f, -0.972495115492821190f, 0.232736793479595420f,\n    -0.972539760092530180f,\n  0.232550307038775330f, -0.972584368934732210f, 0.232363812047745010f,\n    -0.972628942017787270f,\n  0.232177308513361770f, -0.972673479340056430f, 0.231990796442482580f,\n    -0.972717980899902250f,\n  0.231804275841964780f, -0.972762446695688570f, 0.231617746718666580f,\n    -0.972806876725780370f,\n  0.231431209079445730f, -0.972851270988544180f, 0.231244662931161110f,\n    -0.972895629482347760f,\n  0.231058108280671280f, -0.972939952205560070f, 0.230871545134835070f,\n    -0.972984239156551740f,\n  0.230684973500512310f, -0.973028490333694100f, 0.230498393384562320f,\n    -0.973072705735360530f,\n  0.230311804793845530f, -0.973116885359925130f, 0.230125207735222020f,\n    -0.973161029205763530f,\n  0.229938602215552260f, -0.973205137271252800f, 0.229751988241697600f,\n    -0.973249209554771120f,\n  0.229565365820518870f, -0.973293246054698250f, 0.229378734958878120f,\n    -0.973337246769414800f,\n  0.229192095663636740f, -0.973381211697303290f, 0.229005447941657390f,\n    -0.973425140836747030f,\n  0.228818791799802360f, -0.973469034186130950f, 0.228632127244934230f,\n    -0.973512891743841370f,\n  0.228445454283916550f, -0.973556713508265560f, 0.228258772923612350f,\n    -0.973600499477792370f,\n  0.228072083170885790f, -0.973644249650811870f, 0.227885385032600700f,\n    -0.973687964025715670f,\n  0.227698678515621170f, -0.973731642600896400f, 0.227511963626812390f,\n    -0.973775285374748000f,\n  0.227325240373038830f, -0.973818892345666100f, 0.227138508761166260f,\n    -0.973862463512047300f,\n  0.226951768798059980f, -0.973905998872289460f, 0.226765020490585720f,\n    -0.973949498424792170f,\n  0.226578263845610110f, -0.973992962167955830f, 0.226391498869999210f,\n    -0.974036390100182610f,\n  0.226204725570620270f, -0.974079782219875680f, 0.226017943954340190f,\n    -0.974123138525439520f,\n  0.225831154028026200f, -0.974166459015280320f, 0.225644355798546440f,\n    -0.974209743687805110f,\n  0.225457549272768540f, -0.974252992541422500f, 0.225270734457561240f,\n    -0.974296205574542330f,\n  0.225083911359792780f, -0.974339382785575860f, 0.224897079986332540f,\n    -0.974382524172935470f,\n  0.224710240344049570f, -0.974425629735034990f, 0.224523392439813170f,\n    -0.974468699470289580f,\n  0.224336536280493690f, -0.974511733377115720f, 0.224149671872960840f,\n    -0.974554731453931230f,\n  0.223962799224085520f, -0.974597693699155050f, 0.223775918340738290f,\n    -0.974640620111207560f,\n  0.223589029229790020f, -0.974683510688510670f, 0.223402131898112480f,\n    -0.974726365429487320f,\n  0.223215226352576960f, -0.974769184332561770f, 0.223028312600055870f,\n    -0.974811967396159830f,\n  0.222841390647421280f, -0.974854714618708430f, 0.222654460501545550f,\n    -0.974897425998635820f,\n  0.222467522169301990f, -0.974940101534371720f, 0.222280575657563370f,\n    -0.974982741224347140f,\n  0.222093620973203590f, -0.975025345066994120f, 0.221906658123096260f,\n    -0.975067913060746360f,\n  0.221719687114115240f, -0.975110445204038890f, 0.221532707953135340f,\n    -0.975152941495307620f,\n  0.221345720647030810f, -0.975195401932990370f, 0.221158725202677100f,\n    -0.975237826515525820f,\n  0.220971721626949060f, -0.975280215241354220f, 0.220784709926722670f,\n    -0.975322568108916930f,\n  0.220597690108873650f, -0.975364885116656870f, 0.220410662180277940f,\n    -0.975407166263018270f,\n  0.220223626147812460f, -0.975449411546446380f, 0.220036582018353550f,\n    -0.975491620965388110f,\n  0.219849529798778750f, -0.975533794518291360f, 0.219662469495965180f,\n    -0.975575932203605610f,\n  0.219475401116790340f, -0.975618034019781750f, 0.219288324668132580f,\n    -0.975660099965271590f,\n  0.219101240156869770f, -0.975702130038528570f, 0.218914147589880900f,\n    -0.975744124238007270f,\n  0.218727046974044600f, -0.975786082562163930f, 0.218539938316239830f,\n    -0.975828005009455550f,\n  0.218352821623346430f, -0.975869891578341030f, 0.218165696902243770f,\n    -0.975911742267280170f,\n  0.217978564159812290f, -0.975953557074734300f, 0.217791423402932120f,\n    -0.975995335999165880f,\n  0.217604274638483670f, -0.976037079039039020f, 0.217417117873348300f,\n    -0.976078786192818850f,\n  0.217229953114406790f, -0.976120457458971910f, 0.217042780368541080f,\n    -0.976162092835966110f,\n  0.216855599642632570f, -0.976203692322270560f, 0.216668410943563790f,\n    -0.976245255916355800f,\n  0.216481214278216900f, -0.976286783616693630f, 0.216294009653474370f,\n    -0.976328275421757260f,\n  0.216106797076219600f, -0.976369731330021140f, 0.215919576553335460f,\n    -0.976411151339961040f,\n  0.215732348091705940f, -0.976452535450054060f, 0.215545111698214660f,\n    -0.976493883658778540f,\n  0.215357867379745550f, -0.976535195964614470f, 0.215170615143183500f,\n    -0.976576472366042610f,\n  0.214983354995412820f, -0.976617712861545640f, 0.214796086943318920f,\n    -0.976658917449606980f,\n  0.214608810993786920f, -0.976700086128711840f, 0.214421527153702190f,\n    -0.976741218897346550f,\n  0.214234235429951100f, -0.976782315753998650f, 0.214046935829419330f,\n    -0.976823376697157240f,\n  0.213859628358993830f, -0.976864401725312640f, 0.213672313025561140f,\n    -0.976905390836956490f,\n  0.213484989836008080f, -0.976946344030581560f, 0.213297658797222430f,\n    -0.976987261304682390f,\n  0.213110319916091360f, -0.977028142657754390f, 0.212922973199503260f,\n    -0.977068988088294450f,\n  0.212735618654345870f, -0.977109797594800880f, 0.212548256287508120f,\n    -0.977150571175773200f,\n  0.212360886105878580f, -0.977191308829712280f, 0.212173508116346080f,\n    -0.977232010555120320f,\n  0.211986122325800410f, -0.977272676350500860f, 0.211798728741130820f,\n    -0.977313306214358750f,\n  0.211611327369227610f, -0.977353900145199960f, 0.211423918216980810f,\n    -0.977394458141532250f,\n  0.211236501291280710f, -0.977434980201864260f, 0.211049076599018500f,\n    -0.977475466324706050f,\n  0.210861644147084830f, -0.977515916508569280f, 0.210674203942371490f,\n    -0.977556330751966460f,\n  0.210486755991769890f, -0.977596709053411780f, 0.210299300302171750f,\n    -0.977637051411420770f,\n  0.210111836880469720f, -0.977677357824509930f, 0.209924365733555860f,\n    -0.977717628291197570f,\n  0.209736886868323370f, -0.977757862810002760f, 0.209549400291665110f,\n    -0.977798061379446360f,\n  0.209361906010474190f, -0.977838223998050430f, 0.209174404031644700f,\n    -0.977878350664338150f,\n  0.208986894362070070f, -0.977918441376834370f, 0.208799377008644980f,\n    -0.977958496134064830f,\n  0.208611851978263460f, -0.977998514934557140f, 0.208424319277820650f,\n    -0.978038497776839600f,\n  0.208236778914211470f, -0.978078444659442380f, 0.208049230894330940f,\n    -0.978118355580896660f,\n  0.207861675225075150f, -0.978158230539735050f, 0.207674111913339540f,\n    -0.978198069534491400f,\n  0.207486540966020700f, -0.978237872563701090f, 0.207298962390014880f,\n    -0.978277639625900420f,\n  0.207111376192218560f, -0.978317370719627650f, 0.206923782379529210f,\n    -0.978357065843421640f,\n  0.206736180958843660f, -0.978396724995823090f, 0.206548571937059940f,\n    -0.978436348175373730f,\n  0.206360955321075680f, -0.978475935380616830f, 0.206173331117788770f,\n    -0.978515486610096910f,\n  0.205985699334098050f, -0.978555001862359550f, 0.205798059976901760f,\n    -0.978594481135952270f,\n  0.205610413053099320f, -0.978633924429423100f, 0.205422758569589780f,\n    -0.978673331741322210f,\n  0.205235096533272380f, -0.978712703070200420f, 0.205047426951047380f,\n    -0.978752038414610340f,\n  0.204859749829814420f, -0.978791337773105670f, 0.204672065176474290f,\n    -0.978830601144241470f,\n  0.204484372997927180f, -0.978869828526574120f, 0.204296673301074430f,\n    -0.978909019918661310f,\n  0.204108966092817010f, -0.978948175319062200f, 0.203921251380056150f,\n    -0.978987294726337050f,\n  0.203733529169694010f, -0.979026378139047580f, 0.203545799468632190f,\n    -0.979065425555756930f,\n  0.203358062283773370f, -0.979104436975029250f, 0.203170317622019920f,\n    -0.979143412395430230f,\n  0.202982565490274460f, -0.979182351815526930f, 0.202794805895440550f,\n    -0.979221255233887700f,\n  0.202607038844421110f, -0.979260122649082020f, 0.202419264344120220f,\n    -0.979298954059681040f,\n  0.202231482401441620f, -0.979337749464256780f, 0.202043693023289280f,\n    -0.979376508861383170f,\n  0.201855896216568160f, -0.979415232249634780f, 0.201668091988182500f,\n    -0.979453919627588210f,\n  0.201480280345037820f, -0.979492570993820700f, 0.201292461294039190f,\n    -0.979531186346911390f,\n  0.201104634842091960f, -0.979569765685440520f, 0.200916800996102370f,\n    -0.979608309007989450f,\n  0.200728959762976140f, -0.979646816313141210f, 0.200541111149620090f,\n    -0.979685287599479930f,\n  0.200353255162940420f, -0.979723722865591170f, 0.200165391809844500f,\n    -0.979762122110061640f,\n  0.199977521097239290f, -0.979800485331479680f, 0.199789643032032120f,\n    -0.979838812528434740f,\n  0.199601757621131050f, -0.979877103699517640f, 0.199413864871443750f,\n    -0.979915358843320480f,\n  0.199225964789878890f, -0.979953577958436740f, 0.199038057383344820f,\n    -0.979991761043461200f,\n  0.198850142658750120f, -0.980029908096989980f, 0.198662220623004320f,\n    -0.980068019117620650f,\n  0.198474291283016360f, -0.980106094103951770f, 0.198286354645696270f,\n    -0.980144133054583590f,\n  0.198098410717953730f, -0.980182135968117320f, 0.197910459506698720f,\n    -0.980220102843155970f,\n  0.197722501018842030f, -0.980258033678303550f, 0.197534535261294000f,\n    -0.980295928472165290f,\n  0.197346562240966000f, -0.980333787223347960f, 0.197158581964769040f,\n    -0.980371609930459690f,\n  0.196970594439614370f, -0.980409396592109910f, 0.196782599672414240f,\n    -0.980447147206909060f,\n  0.196594597670080220f, -0.980484861773469380f, 0.196406588439525050f,\n    -0.980522540290404090f,\n  0.196218571987660850f, -0.980560182756327950f, 0.196030548321400880f,\n    -0.980597789169856850f,\n  0.195842517447657990f, -0.980635359529608120f, 0.195654479373345370f,\n    -0.980672893834200530f,\n  0.195466434105377090f, -0.980710392082253970f, 0.195278381650666520f,\n    -0.980747854272389750f,\n  0.195090322016128330f, -0.980785280403230430f, 0.194902255208676660f,\n    -0.980822670473399990f,\n  0.194714181235225990f, -0.980860024481523870f, 0.194526100102691720f,\n    -0.980897342426228390f,\n  0.194338011817988600f, -0.980934624306141640f, 0.194149916388032530f,\n    -0.980971870119892840f,\n  0.193961813819739010f, -0.981009079866112630f, 0.193773704120023840f,\n    -0.981046253543432780f,\n  0.193585587295803750f, -0.981083391150486590f, 0.193397463353994740f,\n    -0.981120492685908730f,\n  0.193209332301514080f, -0.981157558148334830f, 0.193021194145278320f,\n    -0.981194587536402320f,\n  0.192833048892205290f, -0.981231580848749730f, 0.192644896549212240f,\n    -0.981268538084016710f,\n  0.192456737123216840f, -0.981305459240844670f, 0.192268570621137590f,\n    -0.981342344317875930f,\n  0.192080397049892380f, -0.981379193313754560f, 0.191892216416400310f,\n    -0.981416006227125550f,\n  0.191704028727579940f, -0.981452783056635520f, 0.191515833990350240f,\n    -0.981489523800932130f,\n  0.191327632211630990f, -0.981526228458664660f, 0.191139423398341420f,\n    -0.981562897028483650f,\n  0.190951207557401860f, -0.981599529509040720f, 0.190762984695732250f,\n    -0.981636125898989080f,\n  0.190574754820252800f, -0.981672686196983110f, 0.190386517937884580f,\n    -0.981709210401678800f,\n  0.190198274055548120f, -0.981745698511732990f, 0.190010023180165050f,\n    -0.981782150525804310f,\n  0.189821765318656580f, -0.981818566442552500f, 0.189633500477944220f,\n    -0.981854946260638630f,\n  0.189445228664950340f, -0.981891289978724990f, 0.189256949886596720f,\n    -0.981927597595475540f,\n  0.189068664149806280f, -0.981963869109555240f, 0.188880371461501330f,\n    -0.982000104519630490f,\n  0.188692071828605260f, -0.982036303824369020f, 0.188503765258041080f,\n    -0.982072467022439890f,\n  0.188315451756732120f, -0.982108594112513610f, 0.188127131331602530f,\n    -0.982144685093261580f,\n  0.187938803989575850f, -0.982180739963357200f, 0.187750469737576840f,\n    -0.982216758721474510f,\n  0.187562128582529740f, -0.982252741366289370f, 0.187373780531359110f,\n    -0.982288687896478830f,\n  0.187185425590990440f, -0.982324598310721160f, 0.186997063768348510f,\n    -0.982360472607696210f,\n  0.186808695070359330f, -0.982396310786084690f, 0.186620319503948420f,\n    -0.982432112844569110f,\n  0.186431937076041640f, -0.982467878781833170f, 0.186243547793565670f,\n    -0.982503608596561720f,\n  0.186055151663446630f, -0.982539302287441240f, 0.185866748692611720f,\n    -0.982574959853159240f,\n  0.185678338887987790f, -0.982610581292404750f, 0.185489922256501900f,\n    -0.982646166603868050f,\n  0.185301498805082040f, -0.982681715786240860f, 0.185113068540655510f,\n    -0.982717228838215990f,\n  0.184924631470150870f, -0.982752705758487830f, 0.184736187600495930f,\n    -0.982788146545751970f,\n  0.184547736938619640f, -0.982823551198705240f, 0.184359279491450640f,\n    -0.982858919716046110f,\n  0.184170815265917720f, -0.982894252096474070f, 0.183982344268950600f,\n    -0.982929548338690060f,\n  0.183793866507478390f, -0.982964808441396440f, 0.183605381988431350f,\n    -0.983000032403296590f,\n  0.183416890718739230f, -0.983035220223095640f, 0.183228392705332140f,\n    -0.983070371899499640f,\n  0.183039887955141060f, -0.983105487431216290f, 0.182851376475096310f,\n    -0.983140566816954500f,\n  0.182662858272129360f, -0.983175610055424420f, 0.182474333353171260f,\n    -0.983210617145337640f,\n  0.182285801725153320f, -0.983245588085407070f, 0.182097263395007760f,\n    -0.983280522874346970f,\n  0.181908718369666160f, -0.983315421510872810f, 0.181720166656061170f,\n    -0.983350283993701500f,\n  0.181531608261125130f, -0.983385110321551180f, 0.181343043191790590f,\n    -0.983419900493141540f,\n  0.181154471454990920f, -0.983454654507193270f, 0.180965893057658980f,\n    -0.983489372362428730f,\n  0.180777308006728670f, -0.983524054057571260f, 0.180588716309133280f,\n    -0.983558699591345900f,\n  0.180400117971807270f, -0.983593308962478650f, 0.180211513001684590f,\n    -0.983627882169697210f,\n  0.180022901405699510f, -0.983662419211730250f, 0.179834283190787180f,\n    -0.983696920087308020f,\n  0.179645658363882100f, -0.983731384795162090f, 0.179457026931919950f,\n    -0.983765813334025240f,\n  0.179268388901835880f, -0.983800205702631490f, 0.179079744280565390f,\n    -0.983834561899716630f,\n  0.178891093075044830f, -0.983868881924017220f, 0.178702435292209940f,\n    -0.983903165774271500f,\n  0.178513770938997590f, -0.983937413449218920f, 0.178325100022344140f,\n    -0.983971624947600270f,\n  0.178136422549186320f, -0.984005800268157870f, 0.177947738526461670f,\n    -0.984039939409634970f,\n  0.177759047961107140f, -0.984074042370776450f, 0.177570350860060790f,\n    -0.984108109150328540f,\n  0.177381647230260200f, -0.984142139747038570f, 0.177192937078643310f,\n    -0.984176134159655320f,\n  0.177004220412148860f, -0.984210092386929030f, 0.176815497237715000f,\n    -0.984244014427611110f,\n  0.176626767562280960f, -0.984277900280454370f, 0.176438031392785350f,\n    -0.984311749944212780f,\n  0.176249288736167940f, -0.984345563417641900f, 0.176060539599367960f,\n    -0.984379340699498510f,\n  0.175871783989325040f, -0.984413081788540700f, 0.175683021912979580f,\n    -0.984446786683527920f,\n  0.175494253377271400f, -0.984480455383220930f, 0.175305478389141370f,\n    -0.984514087886381840f,\n  0.175116696955530060f, -0.984547684191773960f, 0.174927909083378160f,\n    -0.984581244298162180f,\n  0.174739114779627310f, -0.984614768204312600f, 0.174550314051218490f,\n    -0.984648255908992630f,\n  0.174361506905093830f, -0.984681707410970940f, 0.174172693348194960f,\n    -0.984715122709017620f,\n  0.173983873387463850f, -0.984748501801904210f, 0.173795047029843270f,\n    -0.984781844688403350f,\n  0.173606214282275410f, -0.984815151367289140f, 0.173417375151703520f,\n    -0.984848421837337010f,\n  0.173228529645070490f, -0.984881656097323700f, 0.173039677769319390f,\n    -0.984914854146027200f,\n  0.172850819531394200f, -0.984948015982227030f, 0.172661954938238270f,\n    -0.984981141604703960f,\n  0.172473083996796030f, -0.985014231012239840f, 0.172284206714011350f,\n    -0.985047284203618200f,\n  0.172095323096829040f, -0.985080301177623800f, 0.171906433152193700f,\n    -0.985113281933042590f,\n  0.171717536887049970f, -0.985146226468662230f, 0.171528634308343500f,\n    -0.985179134783271020f,\n  0.171339725423019260f, -0.985212006875659460f, 0.171150810238023340f,\n    -0.985244842744618540f,\n  0.170961888760301360f, -0.985277642388941220f, 0.170772960996799230f,\n    -0.985310405807421570f,\n  0.170584026954463700f, -0.985343132998854790f, 0.170395086640240920f,\n    -0.985375823962037710f,\n  0.170206140061078120f, -0.985408478695768420f, 0.170017187223922090f,\n    -0.985441097198846210f,\n  0.169828228135719880f, -0.985473679470071810f, 0.169639262803419400f,\n    -0.985506225508247290f,\n  0.169450291233967930f, -0.985538735312176060f, 0.169261313434313890f,\n    -0.985571208880662740f,\n  0.169072329411405180f, -0.985603646212513400f, 0.168883339172190010f,\n    -0.985636047306535420f,\n  0.168694342723617440f, -0.985668412161537550f, 0.168505340072635900f,\n    -0.985700740776329850f,\n  0.168316331226194910f, -0.985733033149723490f, 0.168127316191243350f,\n    -0.985765289280531310f,\n  0.167938294974731230f, -0.985797509167567370f, 0.167749267583608030f,\n    -0.985829692809647050f,\n  0.167560234024823590f, -0.985861840205586980f, 0.167371194305328540f,\n    -0.985893951354205210f,\n  0.167182148432072880f, -0.985926026254321130f, 0.166993096412007770f,\n    -0.985958064904755460f,\n  0.166804038252083870f, -0.985990067304330030f, 0.166614973959252090f,\n    -0.986022033451868560f,\n  0.166425903540464220f, -0.986053963346195440f, 0.166236827002671390f,\n    -0.986085856986136820f,\n  0.166047744352825850f, -0.986117714370520090f, 0.165858655597879430f,\n    -0.986149535498173860f,\n  0.165669560744784140f, -0.986181320367928270f, 0.165480459800492890f,\n    -0.986213068978614490f,\n  0.165291352771957970f, -0.986244781329065460f, 0.165102239666132720f,\n    -0.986276457418114980f,\n  0.164913120489970090f, -0.986308097244598670f, 0.164723995250423190f,\n    -0.986339700807353000f,\n  0.164534863954446110f, -0.986371268105216030f, 0.164345726608992190f,\n    -0.986402799137027220f,\n  0.164156583221015890f, -0.986434293901627070f, 0.163967433797471110f,\n    -0.986465752397857940f,\n  0.163778278345312690f, -0.986497174624562880f, 0.163589116871495160f,\n    -0.986528560580586690f,\n  0.163399949382973230f, -0.986559910264775410f, 0.163210775886702460f,\n    -0.986591223675976400f,\n  0.163021596389637810f, -0.986622500813038480f, 0.162832410898735260f,\n    -0.986653741674811350f,\n  0.162643219420950450f, -0.986684946260146690f, 0.162454021963239190f,\n    -0.986716114567897100f,\n  0.162264818532558110f, -0.986747246596916480f, 0.162075609135863330f,\n    -0.986778342346060430f,\n  0.161886393780111910f, -0.986809401814185420f, 0.161697172472260540f,\n    -0.986840425000149680f,\n  0.161507945219266150f, -0.986871411902812470f, 0.161318712028086540f,\n    -0.986902362521034470f,\n  0.161129472905678780f, -0.986933276853677710f, 0.160940227859001140f,\n    -0.986964154899605650f,\n  0.160750976895011390f, -0.986994996657682870f, 0.160561720020667510f,\n    -0.987025802126775600f,\n  0.160372457242928400f, -0.987056571305750970f, 0.160183188568752240f,\n    -0.987087304193477900f,\n  0.159993914005098350f, -0.987118000788826280f, 0.159804633558925380f,\n    -0.987148661090667570f,\n  0.159615347237193090f, -0.987179285097874340f, 0.159426055046860750f,\n    -0.987209872809320820f,\n  0.159236756994887850f, -0.987240424223882250f, 0.159047453088234840f,\n    -0.987270939340435420f,\n  0.158858143333861390f, -0.987301418157858430f, 0.158668827738728370f,\n    -0.987331860675030430f,\n  0.158479506309796100f, -0.987362266890832400f, 0.158290179054025180f,\n    -0.987392636804146240f,\n  0.158100845978377090f, -0.987422970413855410f, 0.157911507089812640f,\n    -0.987453267718844560f,\n  0.157722162395293690f, -0.987483528717999710f, 0.157532811901781670f,\n    -0.987513753410208420f,\n  0.157343455616238280f, -0.987543941794359230f, 0.157154093545626010f,\n    -0.987574093869342360f,\n  0.156964725696906750f, -0.987604209634049160f, 0.156775352077043430f,\n    -0.987634289087372160f,\n  0.156585972692998590f, -0.987664332228205710f, 0.156396587551734940f,\n    -0.987694339055445130f,\n  0.156207196660216040f, -0.987724309567986960f, 0.156017800025404830f,\n    -0.987754243764729530f,\n  0.155828397654265320f, -0.987784141644572180f, 0.155638989553760850f,\n    -0.987814003206415550f,\n  0.155449575730855880f, -0.987843828449161740f, 0.155260156192514380f,\n    -0.987873617371714200f,\n  0.155070730945700510f, -0.987903369972977790f, 0.154881299997379400f,\n    -0.987933086251858380f,\n  0.154691863354515400f, -0.987962766207263420f, 0.154502421024073990f,\n    -0.987992409838101880f,\n  0.154312973013020240f, -0.988022017143283530f, 0.154123519328319360f,\n    -0.988051588121720110f,\n  0.153934059976937460f, -0.988081122772324070f, 0.153744594965840000f,\n    -0.988110621094009820f,\n  0.153555124301993500f, -0.988140083085692570f, 0.153365647992364020f,\n    -0.988169508746289060f,\n  0.153176166043917870f, -0.988198898074717610f, 0.152986678463622160f,\n    -0.988228251069897420f,\n  0.152797185258443410f, -0.988257567730749460f, 0.152607686435349140f,\n    -0.988286848056195710f,\n  0.152418182001306500f, -0.988316092045159690f, 0.152228671963282770f,\n    -0.988345299696566150f,\n  0.152039156328246160f, -0.988374471009341280f, 0.151849635103164180f,\n    -0.988403605982412390f,\n  0.151660108295005400f, -0.988432704614708340f, 0.151470575910737760f,\n    -0.988461766905159300f,\n  0.151281037957330250f, -0.988490792852696590f, 0.151091494441751430f,\n    -0.988519782456253270f,\n  0.150901945370970040f, -0.988548735714763200f, 0.150712390751955720f,\n    -0.988577652627162020f,\n  0.150522830591677370f, -0.988606533192386450f, 0.150333264897105050f,\n    -0.988635377409374790f,\n  0.150143693675208330f, -0.988664185277066230f, 0.149954116932956990f,\n    -0.988692956794401940f,\n  0.149764534677321620f, -0.988721691960323780f, 0.149574946915272210f,\n    -0.988750390773775360f,\n  0.149385353653779810f, -0.988779053233701520f, 0.149195754899814960f,\n    -0.988807679339048340f,\n  0.149006150660348470f, -0.988836269088763540f, 0.148816540942352030f,\n    -0.988864822481795640f,\n  0.148626925752796540f, -0.988893339517095130f, 0.148437305098654050f,\n    -0.988921820193613190f,\n  0.148247678986896200f, -0.988950264510302990f, 0.148058047424494740f,\n    -0.988978672466118480f,\n  0.147868410418422360f, -0.989007044060015270f, 0.147678767975650970f,\n    -0.989035379290950310f,\n  0.147489120103153680f, -0.989063678157881540f, 0.147299466807902820f,\n    -0.989091940659768800f,\n  0.147109808096871850f, -0.989120166795572690f, 0.146920143977033760f,\n    -0.989148356564255590f,\n  0.146730474455361750f, -0.989176509964781010f, 0.146540799538829870f,\n    -0.989204626996113780f,\n  0.146351119234411440f, -0.989232707657220050f, 0.146161433549080950f,\n    -0.989260751947067640f,\n  0.145971742489812370f, -0.989288759864625170f, 0.145782046063579860f,\n    -0.989316731408863000f,\n  0.145592344277358450f, -0.989344666578752640f, 0.145402637138122540f,\n    -0.989372565373267010f,\n  0.145212924652847520f, -0.989400427791380380f, 0.145023206828508360f,\n    -0.989428253832068230f,\n  0.144833483672080240f, -0.989456043494307710f, 0.144643755190539150f,\n    -0.989483796777076760f,\n  0.144454021390860440f, -0.989511513679355190f, 0.144264282280020530f,\n    -0.989539194200123930f,\n  0.144074537864995330f, -0.989566838338365120f, 0.143884788152761010f,\n    -0.989594446093062460f,\n  0.143695033150294580f, -0.989622017463200780f, 0.143505272864572290f,\n    -0.989649552447766530f,\n  0.143315507302571590f, -0.989677051045747210f, 0.143125736471269140f,\n    -0.989704513256131850f,\n  0.142935960377642700f, -0.989731939077910570f, 0.142746179028669620f,\n    -0.989759328510075200f,\n  0.142556392431327340f, -0.989786681551618640f, 0.142366600592594260f,\n    -0.989813998201535260f,\n  0.142176803519448000f, -0.989841278458820530f, 0.141987001218867340f,\n    -0.989868522322471580f,\n  0.141797193697830530f, -0.989895729791486660f, 0.141607380963316020f,\n    -0.989922900864865450f,\n  0.141417563022303130f, -0.989950035541608990f, 0.141227739881770480f,\n    -0.989977133820719610f,\n  0.141037911548697770f, -0.990004195701200910f, 0.140848078030064220f,\n    -0.990031221182058000f,\n  0.140658239332849240f, -0.990058210262297120f, 0.140468395464033110f,\n    -0.990085162940925970f,\n  0.140278546430595420f, -0.990112079216953770f, 0.140088692239516780f,\n    -0.990138959089390650f,\n  0.139898832897777380f, -0.990165802557248400f, 0.139708968412357580f,\n    -0.990192609619540030f,\n  0.139519098790238600f, -0.990219380275280000f, 0.139329224038400980f,\n    -0.990246114523483990f,\n  0.139139344163826280f, -0.990272812363169110f, 0.138949459173495440f,\n    -0.990299473793353590f,\n  0.138759569074390380f, -0.990326098813057330f, 0.138569673873492640f,\n    -0.990352687421301340f,\n  0.138379773577783890f, -0.990379239617108160f, 0.138189868194246640f,\n    -0.990405755399501260f,\n  0.137999957729862760f, -0.990432234767505970f, 0.137810042191615130f,\n    -0.990458677720148620f,\n  0.137620121586486180f, -0.990485084256456980f, 0.137430195921458550f,\n    -0.990511454375460290f,\n  0.137240265203515700f, -0.990537788076188750f, 0.137050329439640380f,\n    -0.990564085357674370f,\n  0.136860388636816430f, -0.990590346218950150f, 0.136670442802027230f,\n    -0.990616570659050620f,\n  0.136480491942256310f, -0.990642758677011570f, 0.136290536064488070f,\n    -0.990668910271869980f,\n  0.136100575175706200f, -0.990695025442664630f, 0.135910609282895440f,\n    -0.990721104188435180f,\n  0.135720638393040080f, -0.990747146508222710f, 0.135530662513124620f,\n    -0.990773152401069780f,\n  0.135340681650134330f, -0.990799121866020370f, 0.135150695811053850f,\n    -0.990825054902119470f,\n  0.134960705002868830f, -0.990850951508413620f, 0.134770709232564290f,\n    -0.990876811683950810f,\n  0.134580708507126220f, -0.990902635427780010f, 0.134390702833540240f,\n    -0.990928422738951990f,\n  0.134200692218792020f, -0.990954173616518500f, 0.134010676669868210f,\n    -0.990979888059532740f,\n  0.133820656193754690f, -0.991005566067049370f, 0.133630630797438390f,\n    -0.991031207638124130f,\n  0.133440600487905820f, -0.991056812771814340f, 0.133250565272143570f,\n    -0.991082381467178640f,\n  0.133060525157139180f, -0.991107913723276780f, 0.132870480149879400f,\n    -0.991133409539170170f,\n  0.132680430257352130f, -0.991158868913921350f, 0.132490375486544710f,\n    -0.991184291846594180f,\n  0.132300315844444680f, -0.991209678336254060f, 0.132110251338040470f,\n    -0.991235028381967420f,\n  0.131920181974319760f, -0.991260341982802440f, 0.131730107760271280f,\n    -0.991285619137828200f,\n  0.131540028702883280f, -0.991310859846115440f, 0.131349944809144220f,\n    -0.991336064106736140f,\n  0.131159856086043410f, -0.991361231918763460f, 0.130969762540569380f,\n    -0.991386363281272280f,\n  0.130779664179711790f, -0.991411458193338540f, 0.130589561010459600f,\n    -0.991436516654039420f,\n  0.130399453039802740f, -0.991461538662453790f, 0.130209340274730770f,\n    -0.991486524217661480f,\n  0.130019222722233350f, -0.991511473318743900f, 0.129829100389301010f,\n    -0.991536385964783880f,\n  0.129638973282923540f, -0.991561262154865290f, 0.129448841410091830f,\n    -0.991586101888073500f,\n  0.129258704777796270f, -0.991610905163495370f, 0.129068563393027410f,\n    -0.991635671980218740f,\n  0.128878417262776660f, -0.991660402337333210f, 0.128688266394034690f,\n    -0.991685096233929530f,\n  0.128498110793793220f, -0.991709753669099530f, 0.128307950469043590f,\n    -0.991734374641936810f,\n  0.128117785426777150f, -0.991758959151536110f, 0.127927615673986190f,\n    -0.991783507196993490f,\n  0.127737441217662280f, -0.991808018777406430f, 0.127547262064798050f,\n    -0.991832493891873780f,\n  0.127357078222385570f, -0.991856932539495360f, 0.127166889697417180f,\n    -0.991881334719373010f,\n  0.126976696496885980f, -0.991905700430609330f, 0.126786498627784430f,\n    -0.991930029672308480f,\n  0.126596296097105960f, -0.991954322443575950f, 0.126406088911843320f,\n    -0.991978578743518580f,\n  0.126215877078990400f, -0.992002798571244520f, 0.126025660605540460f,\n    -0.992026981925863360f,\n  0.125835439498487020f, -0.992051128806485720f, 0.125645213764824380f,\n    -0.992075239212224070f,\n  0.125454983411546210f, -0.992099313142191800f, 0.125264748445647110f,\n    -0.992123350595503720f,\n  0.125074508874121300f, -0.992147351571276090f, 0.124884264703963150f,\n    -0.992171316068626520f,\n  0.124694015942167770f, -0.992195244086673920f, 0.124503762595729650f,\n    -0.992219135624538450f,\n  0.124313504671644300f, -0.992242990681341700f, 0.124123242176906760f,\n    -0.992266809256206580f,\n  0.123932975118512200f, -0.992290591348257370f, 0.123742703503456630f,\n    -0.992314336956619640f,\n  0.123552427338735370f, -0.992338046080420420f, 0.123362146631344750f,\n    -0.992361718718787870f,\n  0.123171861388280650f, -0.992385354870851670f, 0.122981571616539080f,\n    -0.992408954535742850f,\n  0.122791277323116900f, -0.992432517712593550f, 0.122600978515010240f,\n    -0.992456044400537700f,\n  0.122410675199216280f, -0.992479534598709970f, 0.122220367382731500f,\n    -0.992502988306246950f,\n  0.122030055072553410f, -0.992526405522286100f, 0.121839738275679020f,\n    -0.992549786245966570f,\n  0.121649416999105540f, -0.992573130476428810f, 0.121459091249830950f,\n    -0.992596438212814290f,\n  0.121268761034852550f, -0.992619709454266140f, 0.121078426361168710f,\n    -0.992642944199928820f,\n  0.120888087235777220f, -0.992666142448948020f, 0.120697743665676120f,\n    -0.992689304200470750f,\n  0.120507395657864240f, -0.992712429453645460f, 0.120317043219339670f,\n    -0.992735518207621850f,\n  0.120126686357101580f, -0.992758570461551140f, 0.119936325078148620f,\n    -0.992781586214585570f,\n  0.119745959389479630f, -0.992804565465879140f, 0.119555589298094230f,\n    -0.992827508214586760f,\n  0.119365214810991350f, -0.992850414459865100f, 0.119174835935170960f,\n    -0.992873284200871730f,\n  0.118984452677632520f, -0.992896117436765980f, 0.118794065045375670f,\n    -0.992918914166708300f,\n  0.118603673045400840f, -0.992941674389860470f, 0.118413276684707770f,\n    -0.992964398105385610f,\n  0.118222875970297250f, -0.992987085312448390f, 0.118032470909169300f,\n    -0.993009736010214580f,\n  0.117842061508325020f, -0.993032350197851410f, 0.117651647774765000f,\n    -0.993054927874527320f,\n  0.117461229715489990f, -0.993077469039412300f, 0.117270807337501560f,\n    -0.993099973691677570f,\n  0.117080380647800550f, -0.993122441830495580f, 0.116889949653388850f,\n    -0.993144873455040430f,\n  0.116699514361267840f, -0.993167268564487230f, 0.116509074778439050f,\n    -0.993189627158012620f,\n  0.116318630911904880f, -0.993211949234794500f, 0.116128182768666920f,\n    -0.993234234794012290f,\n  0.115937730355727850f, -0.993256483834846440f, 0.115747273680089870f,\n    -0.993278696356479030f,\n  0.115556812748755290f, -0.993300872358093280f, 0.115366347568727250f,\n    -0.993323011838873950f,\n  0.115175878147008180f, -0.993345114798006910f, 0.114985404490601530f,\n    -0.993367181234679600f,\n  0.114794926606510250f, -0.993389211148080650f, 0.114604444501737460f,\n    -0.993411204537400060f,\n  0.114413958183287050f, -0.993433161401829360f, 0.114223467658162260f,\n    -0.993455081740560960f,\n  0.114032972933367300f, -0.993476965552789190f, 0.113842474015905660f,\n    -0.993498812837709360f,\n  0.113651970912781920f, -0.993520623594518090f, 0.113461463631000080f,\n    -0.993542397822413600f,\n  0.113270952177564360f, -0.993564135520595300f, 0.113080436559479720f,\n    -0.993585836688263950f,\n  0.112889916783750470f, -0.993607501324621610f, 0.112699392857381910f,\n    -0.993629129428871720f,\n  0.112508864787378830f, -0.993650721000219120f, 0.112318332580746190f,\n    -0.993672276037870010f,\n  0.112127796244489750f, -0.993693794541031680f, 0.111937255785614560f,\n    -0.993715276508913230f,\n  0.111746711211126660f, -0.993736721940724600f, 0.111556162528031630f,\n    -0.993758130835677430f,\n  0.111365609743335190f, -0.993779503192984580f, 0.111175052864043830f,\n    -0.993800839011860120f,\n  0.110984491897163380f, -0.993822138291519660f, 0.110793926849700630f,\n    -0.993843401031180180f,\n  0.110603357728661910f, -0.993864627230059750f, 0.110412784541053660f,\n    -0.993885816887378090f,\n  0.110222207293883180f, -0.993906970002356060f, 0.110031625994157000f,\n    -0.993928086574215830f,\n  0.109841040648882680f, -0.993949166602181130f, 0.109650451265067080f,\n    -0.993970210085476920f,\n  0.109459857849718030f, -0.993991217023329380f, 0.109269260409842920f,\n    -0.994012187414966220f,\n  0.109078658952449240f, -0.994033121259616400f, 0.108888053484545310f,\n    -0.994054018556510210f,\n  0.108697444013138670f, -0.994074879304879370f, 0.108506830545237980f,\n    -0.994095703503956930f,\n  0.108316213087851300f, -0.994116491152977070f, 0.108125591647986880f,\n    -0.994137242251175720f,\n  0.107934966232653760f, -0.994157956797789730f, 0.107744336848860260f,\n    -0.994178634792057590f,\n  0.107553703503615710f, -0.994199276233218910f, 0.107363066203928920f,\n    -0.994219881120514850f,\n  0.107172424956808870f, -0.994240449453187900f, 0.106981779769265340f,\n    -0.994260981230481790f,\n  0.106791130648307380f, -0.994281476451641550f, 0.106600477600945030f,\n    -0.994301935115913580f,\n  0.106409820634187840f, -0.994322357222545810f, 0.106219159755045520f,\n    -0.994342742770787270f,\n  0.106028494970528530f, -0.994363091759888570f, 0.105837826287646670f,\n    -0.994383404189101430f,\n  0.105647153713410700f, -0.994403680057679100f, 0.105456477254830660f,\n    -0.994423919364875950f,\n  0.105265796918917650f, -0.994444122109948040f, 0.105075112712682180f,\n    -0.994464288292152390f,\n  0.104884424643134970f, -0.994484417910747600f, 0.104693732717287500f,\n    -0.994504510964993590f,\n  0.104503036942150550f, -0.994524567454151740f, 0.104312337324735870f,\n    -0.994544587377484300f,\n  0.104121633872054730f, -0.994564570734255420f, 0.103930926591118540f,\n    -0.994584517523730340f,\n  0.103740215488939480f, -0.994604427745175660f, 0.103549500572529040f,\n    -0.994624301397859400f,\n  0.103358781848899700f, -0.994644138481050710f, 0.103168059325063390f,\n    -0.994663938994020280f,\n  0.102977333008032250f, -0.994683702936040250f, 0.102786602904819150f,\n    -0.994703430306383860f,\n  0.102595869022436280f, -0.994723121104325700f, 0.102405131367896790f,\n    -0.994742775329142010f,\n  0.102214389948213370f, -0.994762392980109930f, 0.102023644770398800f,\n    -0.994781974056508260f,\n  0.101832895841466670f, -0.994801518557617110f, 0.101642143168429830f,\n    -0.994821026482717860f,\n  0.101451386758302160f, -0.994840497831093180f, 0.101260626618096800f,\n    -0.994859932602027320f,\n  0.101069862754827880f, -0.994879330794805620f, 0.100879095175509010f,\n    -0.994898692408714870f,\n  0.100688323887153970f, -0.994918017443043200f, 0.100497548896777310f,\n    -0.994937305897080070f,\n  0.100306770211392820f, -0.994956557770116380f, 0.100115987838015370f,\n    -0.994975773061444140f,\n  0.099925201783659226f, -0.994994951770357020f, 0.099734412055338839f,\n    -0.995014093896149700f,\n  0.099543618660069444f, -0.995033199438118630f, 0.099352821604865513f,\n    -0.995052268395561160f,\n  0.099162020896742573f, -0.995071300767776170f, 0.098971216542715582f,\n    -0.995090296554063890f,\n  0.098780408549799664f, -0.995109255753726110f, 0.098589596925010708f,\n    -0.995128178366065490f,\n  0.098398781675363881f, -0.995147064390386470f, 0.098207962807875346f,\n    -0.995165913825994620f,\n  0.098017140329560770f, -0.995184726672196820f, 0.097826314247435903f,\n    -0.995203502928301510f,\n  0.097635484568517339f, -0.995222242593618240f, 0.097444651299820870f,\n    -0.995240945667458130f,\n  0.097253814448363354f, -0.995259612149133390f, 0.097062974021160875f,\n    -0.995278242037957670f,\n  0.096872130025230527f, -0.995296835333246090f, 0.096681282467588864f,\n    -0.995315392034315070f,\n  0.096490431355252607f, -0.995333912140482280f, 0.096299576695239225f,\n    -0.995352395651066810f,\n  0.096108718494565468f, -0.995370842565388990f, 0.095917856760249096f,\n    -0.995389252882770690f,\n  0.095726991499307315f, -0.995407626602534900f, 0.095536122718757485f,\n    -0.995425963724006160f,\n  0.095345250425617742f, -0.995444264246510340f, 0.095154374626905472f,\n    -0.995462528169374420f,\n  0.094963495329639061f, -0.995480755491926940f, 0.094772612540836410f,\n    -0.995498946213497770f,\n  0.094581726267515473f, -0.995517100333418110f, 0.094390836516695067f,\n    -0.995535217851020390f,\n  0.094199943295393190f, -0.995553298765638470f, 0.094009046610628907f,\n    -0.995571343076607770f,\n  0.093818146469420494f, -0.995589350783264600f, 0.093627242878787237f,\n    -0.995607321884947050f,\n  0.093436335845747912f, -0.995625256380994310f, 0.093245425377321389f,\n    -0.995643154270746900f,\n  0.093054511480527333f, -0.995661015553546910f, 0.092863594162384697f,\n    -0.995678840228737540f,\n  0.092672673429913366f, -0.995696628295663520f, 0.092481749290132753f,\n    -0.995714379753670610f,\n  0.092290821750062355f, -0.995732094602106430f, 0.092099890816722485f,\n    -0.995749772840319400f,\n  0.091908956497132696f, -0.995767414467659820f, 0.091718018798313525f,\n    -0.995785019483478750f,\n  0.091527077727284981f, -0.995802587887129160f, 0.091336133291067212f,\n    -0.995820119677964910f,\n  0.091145185496681130f, -0.995837614855341610f, 0.090954234351146898f,\n    -0.995855073418615790f,\n  0.090763279861485704f, -0.995872495367145730f, 0.090572322034718156f,\n    -0.995889880700290720f,\n  0.090381360877865011f, -0.995907229417411720f, 0.090190396397947820f,\n    -0.995924541517870690f,\n  0.089999428601987341f, -0.995941817001031350f, 0.089808457497005362f,\n    -0.995959055866258320f,\n  0.089617483090022917f, -0.995976258112917790f, 0.089426505388062016f,\n    -0.995993423740377360f,\n  0.089235524398144139f, -0.996010552748005870f, 0.089044540127290905f,\n    -0.996027645135173610f,\n  0.088853552582524684f, -0.996044700901251970f, 0.088662561770867121f,\n    -0.996061720045614000f,\n  0.088471567699340822f, -0.996078702567633980f, 0.088280570374967879f,\n    -0.996095648466687300f,\n  0.088089569804770507f, -0.996112557742151130f, 0.087898565995771685f,\n    -0.996129430393403740f,\n  0.087707558954993645f, -0.996146266419824620f, 0.087516548689459586f,\n    -0.996163065820794950f,\n  0.087325535206192226f, -0.996179828595696870f, 0.087134518512214321f,\n    -0.996196554743914220f,\n  0.086943498614549489f, -0.996213244264832040f, 0.086752475520220515f,\n    -0.996229897157836500f,\n  0.086561449236251239f, -0.996246513422315520f, 0.086370419769664919f,\n    -0.996263093057658030f,\n  0.086179387127484922f, -0.996279636063254650f, 0.085988351316735448f,\n    -0.996296142438496850f,\n  0.085797312344439880f, -0.996312612182778000f, 0.085606270217622613f,\n    -0.996329045295492380f,\n  0.085415224943307277f, -0.996345441776035900f, 0.085224176528518519f,\n    -0.996361801623805720f,\n  0.085033124980280414f, -0.996378124838200210f, 0.084842070305617148f,\n    -0.996394411418619290f,\n  0.084651012511553700f, -0.996410661364464100f, 0.084459951605114297f,\n    -0.996426874675137240f,\n  0.084268887593324127f, -0.996443051350042630f, 0.084077820483207846f,\n    -0.996459191388585410f,\n  0.083886750281790226f, -0.996475294790172160f, 0.083695676996096827f,\n    -0.996491361554210920f,\n  0.083504600633152404f, -0.996507391680110820f, 0.083313521199982740f,\n    -0.996523385167282450f,\n  0.083122438703613077f, -0.996539342015137940f, 0.082931353151068726f,\n    -0.996555262223090540f,\n  0.082740264549375803f, -0.996571145790554840f, 0.082549172905559659f,\n    -0.996586992716946950f,\n  0.082358078226646619f, -0.996602803001684130f, 0.082166980519662466f,\n    -0.996618576644185070f,\n  0.081975879791633108f, -0.996634313643869900f, 0.081784776049585201f,\n    -0.996650014000160070f,\n  0.081593669300544638f, -0.996665677712478160f, 0.081402559551538328f,\n    -0.996681304780248300f,\n  0.081211446809592386f, -0.996696895202896060f, 0.081020331081733912f,\n    -0.996712448979848010f,\n  0.080829212374989468f, -0.996727966110532490f, 0.080638090696385709f,\n    -0.996743446594378860f,\n  0.080446966052950097f, -0.996758890430818000f, 0.080255838451709291f,\n    -0.996774297619282050f,\n  0.080064707899690932f, -0.996789668159204560f, 0.079873574403922148f,\n    -0.996805002050020320f,\n  0.079682437971430126f, -0.996820299291165670f, 0.079491298609242866f,\n    -0.996835559882078170f,\n  0.079300156324387569f, -0.996850783822196610f, 0.079109011123892431f,\n    -0.996865971110961310f,\n  0.078917863014785095f, -0.996881121747813850f, 0.078726712004093313f,\n    -0.996896235732197210f,\n  0.078535558098845590f, -0.996911313063555740f, 0.078344401306069678f,\n    -0.996926353741335090f,\n  0.078153241632794315f, -0.996941357764982160f, 0.077962079086047645f,\n    -0.996956325133945280f,\n  0.077770913672857989f, -0.996971255847674320f, 0.077579745400254363f,\n    -0.996986149905620180f,\n  0.077388574275265049f, -0.997001007307235290f, 0.077197400304919297f,\n    -0.997015828051973310f,\n  0.077006223496245585f, -0.997030612139289450f, 0.076815043856273399f,\n    -0.997045359568640040f,\n  0.076623861392031617f, -0.997060070339482960f, 0.076432676110549283f,\n    -0.997074744451277310f,\n  0.076241488018856149f, -0.997089381903483400f, 0.076050297123981231f,\n    -0.997103982695563330f,\n  0.075859103432954503f, -0.997118546826979980f, 0.075667906952805383f,\n    -0.997133074297198110f,\n  0.075476707690563416f, -0.997147565105683480f, 0.075285505653258880f,\n    -0.997162019251903290f,\n  0.075094300847921291f, -0.997176436735326190f, 0.074903093281581137f,\n    -0.997190817555421940f,\n  0.074711882961268378f, -0.997205161711661850f, 0.074520669894013014f,\n    -0.997219469203518670f,\n  0.074329454086845867f, -0.997233740030466160f, 0.074138235546796952f,\n    -0.997247974191979860f,\n  0.073947014280897269f, -0.997262171687536170f, 0.073755790296177265f,\n    -0.997276332516613180f,\n  0.073564563599667454f, -0.997290456678690210f, 0.073373334198399157f,\n    -0.997304544173247990f,\n  0.073182102099402888f, -0.997318594999768600f, 0.072990867309710133f,\n    -0.997332609157735470f,\n  0.072799629836351618f, -0.997346586646633230f, 0.072608389686359048f,\n    -0.997360527465947940f,\n  0.072417146866763538f, -0.997374431615167030f, 0.072225901384596336f,\n    -0.997388299093779460f,\n  0.072034653246889416f, -0.997402129901275300f, 0.071843402460674000f,\n    -0.997415924037145960f,\n  0.071652149032982254f, -0.997429681500884180f, 0.071460892970845832f,\n    -0.997443402291984360f,\n  0.071269634281296415f, -0.997457086409941910f, 0.071078372971366502f,\n    -0.997470733854253670f,\n  0.070887109048087787f, -0.997484344624417930f, 0.070695842518492924f,\n    -0.997497918719934210f,\n  0.070504573389614009f, -0.997511456140303450f, 0.070313301668483263f,\n    -0.997524956885027960f,\n  0.070122027362133646f, -0.997538420953611230f, 0.069930750477597295f,\n    -0.997551848345558430f,\n  0.069739471021907376f, -0.997565239060375750f, 0.069548189002096472f,\n    -0.997578593097570800f,\n  0.069356904425197236f, -0.997591910456652630f, 0.069165617298243109f,\n    -0.997605191137131640f,\n  0.068974327628266732f, -0.997618435138519550f, 0.068783035422301728f,\n    -0.997631642460329320f,\n  0.068591740687380900f, -0.997644813102075420f, 0.068400443430538069f,\n    -0.997657947063273710f,\n  0.068209143658806454f, -0.997671044343441000f, 0.068017841379219388f,\n    -0.997684104942096030f,\n  0.067826536598810966f, -0.997697128858758500f, 0.067635229324614451f,\n    -0.997710116092949570f,\n  0.067443919563664106f, -0.997723066644191640f, 0.067252607322993652f,\n    -0.997735980512008620f,\n  0.067061292609636836f, -0.997748857695925690f, 0.066869975430628226f,\n    -0.997761698195469560f,\n  0.066678655793001543f, -0.997774502010167820f, 0.066487333703791507f,\n    -0.997787269139549960f,\n  0.066296009170032283f, -0.997799999583146470f, 0.066104682198758091f,\n    -0.997812693340489280f,\n  0.065913352797003930f, -0.997825350411111640f, 0.065722020971803977f,\n    -0.997837970794548280f,\n  0.065530686730193397f, -0.997850554490335110f, 0.065339350079206798f,\n    -0.997863101498009500f,\n  0.065148011025878860f, -0.997875611817110150f, 0.064956669577245010f,\n    -0.997888085447177110f,\n  0.064765325740339871f, -0.997900522387751620f, 0.064573979522199065f,\n    -0.997912922638376610f,\n  0.064382630929857410f, -0.997925286198596000f, 0.064191279970350679f,\n    -0.997937613067955250f,\n  0.063999926650714078f, -0.997949903246001190f, 0.063808570977982898f,\n    -0.997962156732281950f,\n  0.063617212959193190f, -0.997974373526346990f, 0.063425852601380200f,\n    -0.997986553627747020f,\n  0.063234489911580136f, -0.997998697036034390f, 0.063043124896828631f,\n    -0.998010803750762450f,\n  0.062851757564161420f, -0.998022873771486240f, 0.062660387920614985f,\n    -0.998034907097761770f,\n  0.062469015973224969f, -0.998046903729146840f, 0.062277641729028041f,\n    -0.998058863665200250f,\n  0.062086265195060247f, -0.998070786905482340f, 0.061894886378357744f,\n    -0.998082673449554590f,\n  0.061703505285957416f, -0.998094523296980010f, 0.061512121924895365f,\n    -0.998106336447323050f,\n  0.061320736302208648f, -0.998118112900149180f, 0.061129348424933755f,\n    -0.998129852655025520f,\n  0.060937958300107238f, -0.998141555711520520f, 0.060746565934766412f,\n    -0.998153222069203650f,\n  0.060555171335947781f, -0.998164851727646240f, 0.060363774510688827f,\n    -0.998176444686420530f,\n  0.060172375466026218f, -0.998188000945100300f, 0.059980974208997596f,\n    -0.998199520503260660f,\n  0.059789570746640007f, -0.998211003360478190f, 0.059598165085990598f,\n    -0.998222449516330550f,\n  0.059406757234087247f, -0.998233858970396850f, 0.059215347197967026f,\n    -0.998245231722257880f,\n  0.059023934984667986f, -0.998256567771495180f, 0.058832520601227581f,\n    -0.998267867117692110f,\n  0.058641104054683348f, -0.998279129760433200f, 0.058449685352073573f,\n    -0.998290355699304350f,\n  0.058258264500435732f, -0.998301544933892890f, 0.058066841506808263f,\n    -0.998312697463787260f,\n  0.057875416378229017f, -0.998323813288577560f, 0.057683989121735932f,\n    -0.998334892407855000f,\n  0.057492559744367684f, -0.998345934821212370f, 0.057301128253162144f,\n    -0.998356940528243420f,\n  0.057109694655158132f, -0.998367909528543820f, 0.056918258957393907f,\n    -0.998378841821709990f,\n  0.056726821166907783f, -0.998389737407340160f, 0.056535381290738825f,\n    -0.998400596285033640f,\n  0.056343939335925283f, -0.998411418454391300f, 0.056152495309506383f,\n    -0.998422203915015020f,\n  0.055961049218520520f, -0.998432952666508440f, 0.055769601070007072f,\n    -0.998443664708476340f,\n  0.055578150871004817f, -0.998454340040524800f, 0.055386698628552604f,\n    -0.998464978662261250f,\n  0.055195244349690031f, -0.998475580573294770f, 0.055003788041455885f,\n    -0.998486145773235360f,\n  0.054812329710889909f, -0.998496674261694640f, 0.054620869365031251f,\n    -0.998507166038285490f,\n  0.054429407010919147f, -0.998517621102622210f, 0.054237942655593556f,\n    -0.998528039454320230f,\n  0.054046476306093640f, -0.998538421092996730f, 0.053855007969459509f,\n    -0.998548766018269920f,\n  0.053663537652730679f, -0.998559074229759310f, 0.053472065362946755f,\n    -0.998569345727086110f,\n  0.053280591107148056f, -0.998579580509872500f, 0.053089114892374119f,\n    -0.998589778577742230f,\n  0.052897636725665401f, -0.998599939930320370f, 0.052706156614061798f,\n    -0.998610064567233340f,\n  0.052514674564603257f, -0.998620152488108870f, 0.052323190584330471f,\n    -0.998630203692576050f,\n  0.052131704680283317f, -0.998640218180265270f, 0.051940216859502626f,\n    -0.998650195950808280f,\n  0.051748727129028414f, -0.998660137003838490f, 0.051557235495901653f,\n    -0.998670041338990070f,\n  0.051365741967162731f, -0.998679908955899090f, 0.051174246549852087f,\n    -0.998689739854202620f,\n  0.050982749251010900f, -0.998699534033539280f, 0.050791250077679546f,\n    -0.998709291493549030f,\n  0.050599749036899337f, -0.998719012233872940f, 0.050408246135710995f,\n    -0.998728696254153720f,\n  0.050216741381155325f, -0.998738343554035230f, 0.050025234780273840f,\n    -0.998747954133162860f,\n  0.049833726340107257f, -0.998757527991183340f, 0.049642216067697226f,\n    -0.998767065127744380f,\n  0.049450703970084824f, -0.998776565542495610f, 0.049259190054311168f,\n    -0.998786029235087640f,\n  0.049067674327418126f, -0.998795456205172410f, 0.048876156796446746f,\n    -0.998804846452403420f,\n  0.048684637468439020f, -0.998814199976435390f, 0.048493116350436342f,\n    -0.998823516776924380f,\n  0.048301593449480172f, -0.998832796853527990f, 0.048110068772612716f,\n    -0.998842040205904840f,\n  0.047918542326875327f, -0.998851246833715180f, 0.047727014119310344f,\n    -0.998860416736620520f,\n  0.047535484156959261f, -0.998869549914283560f, 0.047343952446864526f,\n    -0.998878646366368690f,\n  0.047152418996068000f, -0.998887706092541290f, 0.046960883811611599f,\n    -0.998896729092468410f,\n  0.046769346900537960f, -0.998905715365818290f, 0.046577808269888908f,\n    -0.998914664912260440f,\n  0.046386267926707213f, -0.998923577731465780f, 0.046194725878035046f,\n    -0.998932453823106690f,\n  0.046003182130914644f, -0.998941293186856870f, 0.045811636692388955f,\n    -0.998950095822391250f,\n  0.045620089569500123f, -0.998958861729386080f, 0.045428540769291224f,\n    -0.998967590907519300f,\n  0.045236990298804750f, -0.998976283356469820f, 0.045045438165083225f,\n    -0.998984939075918010f,\n  0.044853884375169933f, -0.998993558065545680f, 0.044662328936107311f,\n    -0.999002140325035980f,\n  0.044470771854938744f, -0.999010685854073380f, 0.044279213138707016f,\n    -0.999019194652343460f,\n  0.044087652794454979f, -0.999027666719533690f, 0.043896090829226200f,\n    -0.999036102055332330f,\n  0.043704527250063421f, -0.999044500659429290f, 0.043512962064010327f,\n    -0.999052862531515930f,\n  0.043321395278109784f, -0.999061187671284600f, 0.043129826899405595f,\n    -0.999069476078429330f,\n  0.042938256934940959f, -0.999077727752645360f, 0.042746685391759139f,\n    -0.999085942693629270f,\n  0.042555112276904117f, -0.999094120901079070f, 0.042363537597419038f,\n    -0.999102262374694130f,\n  0.042171961360348002f, -0.999110367114174890f, 0.041980383572734502f,\n    -0.999118435119223490f,\n  0.041788804241622082f, -0.999126466389543390f, 0.041597223374055005f,\n    -0.999134460924839150f,\n  0.041405640977076712f, -0.999142418724816910f, 0.041214057057731589f,\n    -0.999150339789184110f,\n  0.041022471623063397f, -0.999158224117649430f, 0.040830884680115968f,\n    -0.999166071709923000f,\n  0.040639296235933854f, -0.999173882565716380f, 0.040447706297560768f,\n    -0.999181656684742350f,\n  0.040256114872041358f, -0.999189394066714920f, 0.040064521966419686f,\n    -0.999197094711349880f,\n  0.039872927587739845f, -0.999204758618363890f, 0.039681331743046659f,\n    -0.999212385787475290f,\n  0.039489734439384118f, -0.999219976218403530f, 0.039298135683797149f,\n    -0.999227529910869610f,\n  0.039106535483329839f, -0.999235046864595850f, 0.038914933845027241f,\n    -0.999242527079305830f,\n  0.038723330775933762f, -0.999249970554724420f, 0.038531726283093877f,\n    -0.999257377290578060f,\n  0.038340120373552791f, -0.999264747286594420f, 0.038148513054354856f,\n    -0.999272080542502610f,\n  0.037956904332545366f, -0.999279377058032710f, 0.037765294215169005f,\n    -0.999286636832916740f,\n  0.037573682709270514f, -0.999293859866887790f, 0.037382069821895340f,\n    -0.999301046159680070f,\n  0.037190455560088091f, -0.999308195711029470f, 0.036998839930894332f,\n    -0.999315308520673070f,\n  0.036807222941358991f, -0.999322384588349540f, 0.036615604598527057f,\n    -0.999329423913798420f,\n  0.036423984909444228f, -0.999336426496761240f, 0.036232363881155374f,\n    -0.999343392336980220f,\n  0.036040741520706299f, -0.999350321434199440f, 0.035849117835142184f,\n    -0.999357213788164000f,\n  0.035657492831508264f, -0.999364069398620550f, 0.035465866516850478f,\n    -0.999370888265317060f,\n  0.035274238898213947f, -0.999377670388002850f, 0.035082609982644702f,\n    -0.999384415766428560f,\n  0.034890979777187955f, -0.999391124400346050f, 0.034699348288889847f,\n    -0.999397796289508640f,\n  0.034507715524795889f, -0.999404431433671300f, 0.034316081491951658f,\n    -0.999411029832589780f,\n  0.034124446197403423f, -0.999417591486021720f, 0.033932809648196623f,\n    -0.999424116393725640f,\n  0.033741171851377642f, -0.999430604555461730f, 0.033549532813992221f,\n    -0.999437055970991530f,\n  0.033357892543086159f, -0.999443470640077770f, 0.033166251045705968f,\n    -0.999449848562484530f,\n  0.032974608328897315f, -0.999456189737977340f, 0.032782964399706793f,\n    -0.999462494166323160f,\n  0.032591319265180385f, -0.999468761847290050f, 0.032399672932364114f,\n    -0.999474992780647780f,\n  0.032208025408304704f, -0.999481186966166950f, 0.032016376700048046f,\n    -0.999487344403620080f,\n  0.031824726814640963f, -0.999493465092780590f, 0.031633075759129645f,\n    -0.999499549033423640f,\n  0.031441423540560343f, -0.999505596225325310f, 0.031249770165979990f,\n    -0.999511606668263440f,\n  0.031058115642434700f, -0.999517580362016990f, 0.030866459976971503f,\n    -0.999523517306366350f,\n  0.030674803176636581f, -0.999529417501093140f, 0.030483145248477058f,\n    -0.999535280945980540f,\n  0.030291486199539423f, -0.999541107640812940f, 0.030099826036870208f,\n    -0.999546897585375960f,\n  0.029908164767516655f, -0.999552650779456990f, 0.029716502398525156f,\n    -0.999558367222844300f,\n  0.029524838936943035f, -0.999564046915327740f, 0.029333174389816984f,\n    -0.999569689856698580f,\n  0.029141508764193740f, -0.999575296046749220f, 0.028949842067120746f,\n    -0.999580865485273700f,\n  0.028758174305644590f, -0.999586398172067070f, 0.028566505486812797f,\n    -0.999591894106925950f,\n  0.028374835617672258f, -0.999597353289648380f, 0.028183164705269902f,\n    -0.999602775720033530f,\n  0.027991492756653365f, -0.999608161397882110f, 0.027799819778869434f,\n    -0.999613510322995950f,\n  0.027608145778965820f, -0.999618822495178640f, 0.027416470763989606f,\n    -0.999624097914234570f,\n  0.027224794740987910f, -0.999629336579970110f, 0.027033117717008563f,\n    -0.999634538492192300f,\n  0.026841439699098527f, -0.999639703650710200f, 0.026649760694305708f,\n    -0.999644832055333610f,\n  0.026458080709677145f, -0.999649923705874240f, 0.026266399752260809f,\n    -0.999654978602144690f,\n  0.026074717829104040f, -0.999659996743959220f, 0.025883034947254208f,\n    -0.999664978131133310f,\n  0.025691351113759395f, -0.999669922763483760f, 0.025499666335666818f,\n    -0.999674830640828740f,\n  0.025307980620024630f, -0.999679701762987930f, 0.025116293973880335f,\n    -0.999684536129782140f,\n  0.024924606404281485f, -0.999689333741033640f, 0.024732917918276334f,\n    -0.999694094596566000f,\n  0.024541228522912264f, -0.999698818696204250f, 0.024349538225237600f,\n    -0.999703506039774650f,\n  0.024157847032300020f, -0.999708156627104880f, 0.023966154951147241f,\n    -0.999712770458023870f,\n  0.023774461988827676f, -0.999717347532362190f, 0.023582768152388880f,\n    -0.999721887849951310f,\n  0.023391073448879338f, -0.999726391410624470f, 0.023199377885346890f,\n    -0.999730858214216030f,\n  0.023007681468839410f, -0.999735288260561680f, 0.022815984206405477f,\n    -0.999739681549498660f,\n  0.022624286105092803f, -0.999744038080865430f, 0.022432587171950024f,\n    -0.999748357854501780f,\n  0.022240887414024919f, -0.999752640870248840f, 0.022049186838366180f,\n    -0.999756887127949080f,\n  0.021857485452021874f, -0.999761096627446610f, 0.021665783262040089f,\n    -0.999765269368586450f,\n  0.021474080275469605f, -0.999769405351215280f, 0.021282376499358355f,\n    -0.999773504575180990f,\n  0.021090671940755180f, -0.999777567040332940f, 0.020898966606708289f,\n    -0.999781592746521670f,\n  0.020707260504265912f, -0.999785581693599210f, 0.020515553640476986f,\n    -0.999789533881418780f,\n  0.020323846022389572f, -0.999793449309835270f, 0.020132137657052664f,\n    -0.999797327978704690f,\n  0.019940428551514598f, -0.999801169887884260f, 0.019748718712823757f,\n    -0.999804975037232870f,\n  0.019557008148029204f, -0.999808743426610520f, 0.019365296864179146f,\n    -0.999812475055878780f,\n  0.019173584868322699f, -0.999816169924900410f, 0.018981872167508348f,\n    -0.999819828033539420f,\n  0.018790158768784596f, -0.999823449381661570f, 0.018598444679200642f,\n    -0.999827033969133420f,\n  0.018406729905804820f, -0.999830581795823400f, 0.018215014455646376f,\n    -0.999834092861600960f,\n  0.018023298335773701f, -0.999837567166337090f, 0.017831581553236088f,\n    -0.999841004709904000f,\n  0.017639864115082195f, -0.999844405492175240f, 0.017448146028360704f,\n    -0.999847769513025900f,\n  0.017256427300120978f, -0.999851096772332190f, 0.017064707937411529f,\n    -0.999854387269971890f,\n  0.016872987947281773f, -0.999857641005823860f, 0.016681267336780482f,\n    -0.999860857979768540f,\n  0.016489546112956454f, -0.999864038191687680f, 0.016297824282859176f,\n    -0.999867181641464380f,\n  0.016106101853537263f, -0.999870288328982950f, 0.015914378832040249f,\n    -0.999873358254129260f,\n  0.015722655225417017f, -0.999876391416790410f, 0.015530931040716478f,\n    -0.999879387816854930f,\n  0.015339206284988220f, -0.999882347454212560f, 0.015147480965280975f,\n    -0.999885270328754520f,\n  0.014955755088644378f, -0.999888156440373320f, 0.014764028662127416f,\n    -0.999891005788962950f,\n  0.014572301692779104f, -0.999893818374418490f, 0.014380574187649138f,\n    -0.999896594196636680f,\n  0.014188846153786343f, -0.999899333255515390f, 0.013997117598240459f,\n    -0.999902035550953920f,\n  0.013805388528060349f, -0.999904701082852900f, 0.013613658950295789f,\n    -0.999907329851114300f,\n  0.013421928871995907f, -0.999909921855641540f, 0.013230198300209845f,\n    -0.999912477096339240f,\n  0.013038467241987433f, -0.999914995573113470f, 0.012846735704377631f,\n    -0.999917477285871770f,\n  0.012655003694430301f, -0.999919922234522750f, 0.012463271219194662f,\n    -0.999922330418976490f,\n  0.012271538285719944f, -0.999924701839144500f, 0.012079804901056066f,\n    -0.999927036494939640f,\n  0.011888071072252072f, -0.999929334386276070f, 0.011696336806357907f,\n    -0.999931595513069200f,\n  0.011504602110422875f, -0.999933819875236000f, 0.011312866991496287f,\n    -0.999936007472694620f,\n  0.011121131456628141f, -0.999938158305364590f, 0.010929395512867561f,\n    -0.999940272373166960f,\n  0.010737659167264572f, -0.999942349676023910f, 0.010545922426868548f,\n    -0.999944390213859060f,\n  0.010354185298728884f, -0.999946393986597460f, 0.010162447789895645f,\n    -0.999948360994165400f,\n  0.009970709907418029f, -0.999950291236490480f, 0.009778971658346134f,\n    -0.999952184713501780f,\n  0.009587233049729183f, -0.999954041425129780f, 0.009395494088617302f,\n    -0.999955861371306100f,\n  0.009203754782059960f, -0.999957644551963900f, 0.009012015137106642f,\n    -0.999959390967037450f,\n  0.008820275160807512f, -0.999961100616462820f, 0.008628534860211857f,\n    -0.999962773500176930f,\n  0.008436794242369860f, -0.999964409618118280f, 0.008245053314331058f,\n    -0.999966008970226920f,\n  0.008053312083144991f, -0.999967571556443780f, 0.007861570555861883f,\n    -0.999969097376711580f,\n  0.007669828739531077f, -0.999970586430974140f, 0.007478086641202815f,\n    -0.999972038719176730f,\n  0.007286344267926684f, -0.999973454241265940f, 0.007094601626752279f,\n    -0.999974832997189810f,\n  0.006902858724729877f, -0.999976174986897610f, 0.006711115568908869f,\n    -0.999977480210339940f,\n  0.006519372166339549f, -0.999978748667468830f, 0.006327628524071549f,\n    -0.999979980358237650f,\n  0.006135884649154515f, -0.999981175282601110f, 0.005944140548638765f,\n    -0.999982333440515350f,\n  0.005752396229573737f, -0.999983454831937730f, 0.005560651699009764f,\n    -0.999984539456826970f,\n  0.005368906963996303f, -0.999985587315143200f, 0.005177162031583702f,\n    -0.999986598406848000f,\n  0.004985416908821652f, -0.999987572731904080f, 0.004793671602759852f,\n    -0.999988510290275690f,\n  0.004601926120448672f, -0.999989411081928400f, 0.004410180468937601f,\n    -0.999990275106828920f,\n  0.004218434655277024f, -0.999991102364945590f, 0.004026688686516664f,\n    -0.999991892856248010f,\n  0.003834942569706248f, -0.999992646580707190f, 0.003643196311896179f,\n    -0.999993363538295150f,\n  0.003451449920135975f, -0.999994043728985820f, 0.003259703401476044f,\n    -0.999994687152754080f,\n  0.003067956762966138f, -0.999995293809576190f, 0.002876210011656010f,\n    -0.999995863699429940f,\n  0.002684463154596083f, -0.999996396822294350f, 0.002492716198835898f,\n    -0.999996893178149880f,\n  0.002300969151425887f, -0.999997352766978210f, 0.002109222019415816f,\n    -0.999997775588762350f,\n  0.001917474809855460f, -0.999998161643486980f, 0.001725727529795258f,\n    -0.999998510931137790f,\n  0.001533980186284766f, -0.999998823451701880f, 0.001342232786374430f,\n    -0.999999099205167830f,\n  0.001150485337113809f, -0.999999338191525530f, 0.000958737845553352f,\n    -0.999999540410766110f,\n  0.000766990318742846f, -0.999999705862882230f, 0.000575242763732077f,\n    -0.999999834547867670f,\n  0.000383495187571497f, -0.999999926465717890f, 0.000191747597310674f,\n    -0.999999981616429330f\n};\n\n    const float32_t cos_factors_8192[8192] = {\n  1.999999990808214700f, 1.999999917273932200f, 1.999999770205369800f,\n    1.999999549602533100f,\n  1.999999255465430200f, 1.999998887794072000f, 1.999998446588471700f,\n    1.999997931848645600f,\n  1.999997343574612800f, 1.999996681766395000f, 1.999995946424016200f,\n    1.999995137547503600f,\n  1.999994255136887000f, 1.999993299192198700f, 1.999992269713474200f,\n    1.999991166700750800f,\n  1.999989990154069600f, 1.999988740073473500f, 1.999987416459008600f,\n    1.999986019310723500f,\n  1.999984548628669600f, 1.999983004412901000f, 1.999981386663474400f,\n    1.999979695380449400f,\n  1.999977930563888100f, 1.999976092213855400f, 1.999974180330418700f,\n    1.999972194913648900f,\n  1.999970135963618400f, 1.999968003480403000f, 1.999965797464081200f,\n    1.999963517914734100f,\n  1.999961164832445800f, 1.999958738217302300f, 1.999956238069392900f,\n    1.999953664388809800f,\n  1.999951017175647600f, 1.999948296430003500f, 1.999945502151977600f,\n    1.999942634341672600f,\n  1.999939692999193900f, 1.999936678124649700f, 1.999933589718150700f,\n    1.999930427779810900f,\n  1.999927192309745900f, 1.999923883308075200f, 1.999920500774920300f,\n    1.999917044710405500f,\n  1.999913515114657900f, 1.999909911987807200f, 1.999906235329986100f,\n    1.999902485141329400f,\n  1.999898661421975400f, 1.999894764172064600f, 1.999890793391740000f,\n    1.999886749081147800f,\n  1.999882631240436700f, 1.999878439869758200f, 1.999874174969266300f,\n    1.999869836539117700f,\n  1.999865424579472000f, 1.999860939090491600f, 1.999856380072341000f,\n    1.999851747525188200f,\n  1.999847041449203300f, 1.999842261844559700f, 1.999837408711432600f,\n    1.999832482050000900f,\n  1.999827481860445300f, 1.999822408142949900f, 1.999817260897701400f,\n    1.999812040124888700f,\n  1.999806745824704000f, 1.999801377997341800f, 1.999795936642999600f,\n    1.999790421761877400f,\n  1.999784833354177900f, 1.999779171420106700f, 1.999773435959872000f,\n    1.999767626973684400f,\n  1.999761744461757700f, 1.999755788424308200f, 1.999749758861554900f,\n    1.999743655773719400f,\n  1.999737479161026100f, 1.999731229023702200f, 1.999724905361977200f,\n    1.999718508176084000f,\n  1.999712037466257600f, 1.999705493232735800f, 1.999698875475759600f,\n    1.999692184195571900f,\n  1.999685419392419000f, 1.999678581066549400f, 1.999671669218214600f,\n    1.999664683847668800f,\n  1.999657624955168700f, 1.999650492540973900f, 1.999643286605346800f,\n    1.999636007148552400f,\n  1.999628654170857900f, 1.999621227672533800f, 1.999613727653853500f,\n    1.999606154115092500f,\n  1.999598507056529000f, 1.999590786478444600f, 1.999582992381123000f,\n    1.999575124764850800f,\n  1.999567183629917100f, 1.999559168976613900f, 1.999551080805236100f,\n    1.999542919116081000f,\n  1.999534683909448600f, 1.999526375185641800f, 1.999517992944965800f,\n    1.999509537187729200f,\n  1.999501007914242600f, 1.999492405124819700f, 1.999483728819776900f,\n    1.999474978999432800f,\n  1.999466155664109600f, 1.999457258814131500f, 1.999448288449825500f,\n    1.999439244571521700f,\n  1.999430127179552500f, 1.999420936274252800f, 1.999411671855960900f,\n    1.999402333925017300f,\n  1.999392922481765500f, 1.999383437526551300f, 1.999373879059723500f,\n    1.999364247081633500f,\n  1.999354541592635500f, 1.999344762593086500f, 1.999334910083345700f,\n    1.999324984063775700f,\n  1.999314984534741100f, 1.999304911496609700f, 1.999294764949752100f,\n    1.999284544894541100f,\n  1.999274251331352400f, 1.999263884260564600f, 1.999253443682558900f,\n    1.999242929597719200f,\n  1.999232342006432000f, 1.999221680909086400f, 1.999210946306074500f,\n    1.999200138197791100f,\n  1.999189256584633600f, 1.999178301467001900f, 1.999167272845298900f,\n    1.999156170719930100f,\n  1.999144995091303600f, 1.999133745959830600f, 1.999122423325924200f,\n    1.999111027190001000f,\n  1.999099557552479900f, 1.999088014413782800f, 1.999076397774334000f,\n    1.999064707634560700f,\n  1.999052943994892300f, 1.999041106855761900f, 1.999029196217604100f,\n    1.999017212080857400f,\n  1.999005154445962200f, 1.998993023313361700f, 1.998980818683502100f,\n    1.998968540556831800f,\n  1.998956188933802800f, 1.998943763814868800f, 1.998931265200486900f,\n    1.998918693091116200f,\n  1.998906047487219600f, 1.998893328389261400f, 1.998880535797709700f,\n    1.998867669713034500f,\n  1.998854730135709400f, 1.998841717066209400f, 1.998828630505013400f,\n    1.998815470452602400f,\n  1.998802236909460500f, 1.998788929876074100f, 1.998775549352932400f,\n    1.998762095340527400f,\n  1.998748567839354000f, 1.998734966849909000f, 1.998721292372693100f,\n    1.998707544408208700f,\n  1.998693722956961500f, 1.998679828019459300f, 1.998665859596213500f,\n    1.998651817687737300f,\n  1.998637702294547000f, 1.998623513417161700f, 1.998609251056103100f,\n    1.998594915211895600f,\n  1.998580505885066100f, 1.998566023076144600f, 1.998551466785663400f,\n    1.998536837014157900f,\n  1.998522133762165900f, 1.998507357030227900f, 1.998492506818887200f,\n    1.998477583128690100f,\n  1.998462585960185000f, 1.998447515313923400f, 1.998432371190459500f,\n    1.998417153590349900f,\n  1.998401862514154200f, 1.998386497962434800f, 1.998371059935756300f,\n    1.998355548434686400f,\n  1.998339963459795400f, 1.998324305011656600f, 1.998308573090845200f,\n    1.998292767697940100f,\n  1.998276888833522300f, 1.998260936498175400f, 1.998244910692486000f,\n    1.998228811417043700f,\n  1.998212638672439900f, 1.998196392459269400f, 1.998180072778129600f,\n    1.998163679629620500f,\n  1.998147213014344900f, 1.998130672932908000f, 1.998114059385918400f,\n    1.998097372373986300f,\n  1.998080611897725700f, 1.998063777957752600f, 1.998046870554686100f,\n    1.998029889689147700f,\n  1.998012835361761900f, 1.997995707573155600f, 1.997978506323958600f,\n    1.997961231614803200f,\n  1.997943883446324800f, 1.997926461819161000f, 1.997908966733952500f,\n    1.997891398191342400f,\n  1.997873756191977000f, 1.997856040736504500f, 1.997838251825576400f,\n    1.997820389459846700f,\n  1.997802453639972300f, 1.997784444366612600f, 1.997766361640429800f,\n    1.997748205462088500f,\n  1.997729975832256600f, 1.997711672751604200f, 1.997693296220804000f,\n    1.997674846240532000f,\n  1.997656322811466500f, 1.997637725934288300f, 1.997619055609681600f,\n    1.997600311838332500f,\n  1.997581494620930300f, 1.997562603958166600f, 1.997543639850736200f,\n    1.997524602299336500f,\n  1.997505491304667000f, 1.997486306867430900f, 1.997467048988333000f,\n    1.997447717668082000f,\n  1.997428312907388200f, 1.997408834706965000f, 1.997389283067528800f,\n    1.997369657989798400f,\n  1.997349959474495200f, 1.997330187522343700f, 1.997310342134070800f,\n    1.997290423310406100f,\n  1.997270431052081900f, 1.997250365359833200f, 1.997230226234397900f,\n    1.997210013676516700f,\n  1.997189727686932400f, 1.997169368266390900f, 1.997148935415640600f,\n    1.997128429135433400f,\n  1.997107849426522600f, 1.997087196289665000f, 1.997066469725620200f,\n    1.997045669735150000f,\n  1.997024796319019300f, 1.997003849477995600f, 1.996982829212848900f,\n    1.996961735524351900f,\n  1.996940568413280600f, 1.996919327880412900f, 1.996898013926530000f,\n    1.996876626552415400f,\n  1.996855165758855600f, 1.996833631546639300f, 1.996812023916558800f,\n    1.996790342869408000f,\n  1.996768588405984300f, 1.996746760527087700f, 1.996724859233520500f,\n    1.996702884526087900f,\n  1.996680836405598100f, 1.996658714872861800f, 1.996636519928692000f,\n    1.996614251573904900f,\n  1.996591909809319400f, 1.996569494635756600f, 1.996547006054041100f,\n    1.996524444064999400f,\n  1.996501808669461000f, 1.996479099868258400f, 1.996456317662226300f,\n    1.996433462052202600f,\n  1.996410533039027400f, 1.996387530623543900f, 1.996364454806597500f,\n    1.996341305589037100f,\n  1.996318082971713500f, 1.996294786955480800f, 1.996271417541195300f,\n    1.996247974729716200f,\n  1.996224458521905600f, 1.996200868918628100f, 1.996177205920750800f,\n    1.996153469529144100f,\n  1.996129659744680300f, 1.996105776568235100f, 1.996081820000686500f,\n    1.996057790042915500f,\n  1.996033686695805300f, 1.996009509960242400f, 1.995985259837115500f,\n    1.995960936327316300f,\n  1.995936539431739000f, 1.995912069151280800f, 1.995887525486841300f,\n    1.995862908439323100f,\n  1.995838218009630800f, 1.995813454198672700f, 1.995788617007359100f,\n    1.995763706436603200f,\n  1.995738722487320600f, 1.995713665160430600f, 1.995688534456853800f,\n    1.995663330377514400f,\n  1.995638052923339300f, 1.995612702095257400f, 1.995587277894201400f,\n    1.995561780321105600f,\n  1.995536209376907600f, 1.995510565062547800f, 1.995484847378968600f,\n    1.995459056327116000f,\n  1.995433191907938000f, 1.995407254122385700f, 1.995381242971412600f,\n    1.995355158455975200f,\n  1.995329000577032800f, 1.995302769335546500f, 1.995276464732481200f,\n    1.995250086768804100f,\n  1.995223635445484900f, 1.995197110763496000f, 1.995170512723813100f,\n    1.995143841327413400f,\n  1.995117096575278200f, 1.995090278468390600f, 1.995063387007736600f,\n    1.995036422194304700f,\n  1.995009384029086800f, 1.994982272513076600f, 1.994955087647271000f,\n    1.994927829432669800f,\n  1.994900497870274900f, 1.994873092961091200f, 1.994845614706126400f,\n    1.994818063106391000f,\n  1.994790438162897600f, 1.994762739876662100f, 1.994734968248702800f,\n    1.994707123280041100f,\n  1.994679204971700100f, 1.994651213324707000f, 1.994623148340090700f,\n    1.994595010018883000f,\n  1.994566798362118300f, 1.994538513370834200f, 1.994510155046070700f,\n    1.994481723388870100f,\n  1.994453218400277900f, 1.994424640081342100f, 1.994395988433113700f,\n    1.994367263456646100f,\n  1.994338465152995000f, 1.994309593523219600f, 1.994280648568381500f,\n    1.994251630289544600f,\n  1.994222538687776100f, 1.994193373764145500f, 1.994164135519725000f,\n    1.994134823955589800f,\n  1.994105439072817700f, 1.994075980872488800f, 1.994046449355686200f,\n    1.994016844523496000f,\n  1.993987166377006600f, 1.993957414917308700f, 1.993927590145496900f,\n    1.993897692062667200f,\n  1.993867720669919400f, 1.993837675968354700f, 1.993807557959078600f,\n    1.993777366643197900f,\n  1.993747102021822900f, 1.993716764096066200f, 1.993686352867043200f,\n    1.993655868335872300f,\n  1.993625310503674100f, 1.993594679371572200f, 1.993563974940692800f,\n    1.993533197212164800f,\n  1.993502346187119700f, 1.993471421866692200f, 1.993440424252018900f,\n    1.993409353344239600f,\n  1.993378209144496700f, 1.993346991653935300f, 1.993315700873703200f,\n    1.993284336804950900f,\n  1.993252899448831400f, 1.993221388806500900f, 1.993189804879117500f,\n    1.993158147667842800f,\n  1.993126417173840500f, 1.993094613398277400f, 1.993062736342323000f,\n    1.993030786007148800f,\n  1.992998762393930000f, 1.992966665503844000f, 1.992934495338070800f,\n    1.992902251897793000f,\n  1.992869935184196300f, 1.992837545198469000f, 1.992805081941801700f,\n    1.992772545415388200f,\n  1.992739935620424700f, 1.992707252558110200f, 1.992674496229646500f,\n    1.992641666636237700f,\n  1.992608763779091000f, 1.992575787659416100f, 1.992542738278425300f,\n    1.992509615637334100f,\n  1.992476419737359900f, 1.992443150579723500f, 1.992409808165648100f,\n    1.992376392496359300f,\n  1.992342903573086000f, 1.992309341397059600f, 1.992275705969513800f,\n    1.992241997291685400f,\n  1.992208215364813700f, 1.992174360190140900f, 1.992140431768911500f,\n    1.992106430102373400f,\n  1.992072355191776300f, 1.992038207038373300f, 1.992003985643419700f,\n    1.991969691008174100f,\n  1.991935323133897000f, 1.991900882021852200f, 1.991866367673306200f,\n    1.991831780089527500f,\n  1.991797119271788300f, 1.991762385221362600f, 1.991727577939527600f,\n    1.991692697427563300f,\n  1.991657743686751700f, 1.991622716718378400f, 1.991587616523731000f,\n    1.991552443104099800f,\n  1.991517196460778500f, 1.991481876595062800f, 1.991446483508251500f,\n    1.991411017201645500f,\n  1.991375477676549100f, 1.991339864934268800f, 1.991304178976114100f,\n    1.991268419803397200f,\n  1.991232587417432600f, 1.991196681819537900f, 1.991160703011033200f,\n    1.991124650993241400f,\n  1.991088525767488200f, 1.991052327335101300f, 1.991016055697411900f,\n    1.990979710855753900f,\n  1.990943292811463000f, 1.990906801565878600f, 1.990870237120342400f,\n    1.990833599476198800f,\n  1.990796888634794400f, 1.990760104597479400f, 1.990723247365606200f,\n    1.990686316940529800f,\n  1.990649313323608100f, 1.990612236516201300f, 1.990575086519673200f,\n    1.990537863335389400f,\n  1.990500566964718400f, 1.990463197409031700f, 1.990425754669703100f,\n    1.990388238748109100f,\n  1.990350649645629600f, 1.990312987363646000f, 1.990275251903543600f,\n    1.990237443266709400f,\n  1.990199561454533600f, 1.990161606468409300f, 1.990123578309731700f,\n    1.990085476979899000f,\n  1.990047302480312300f, 1.990009054812374800f, 1.989970733977493000f,\n    1.989932339977075900f,\n  1.989893872812535000f, 1.989855332485284800f, 1.989816718996742200f,\n    1.989778032348326700f,\n  1.989739272541461100f, 1.989700439577570400f, 1.989661533458082100f,\n    1.989622554184426800f,\n  1.989583501758037700f, 1.989544376180350600f, 1.989505177452804100f,\n    1.989465905576839600f,\n  1.989426560553900500f, 1.989387142385433900f, 1.989347651072888900f,\n    1.989308086617717500f,\n  1.989268449021374300f, 1.989228738285316900f, 1.989188954411005100f,\n    1.989149097399901500f,\n  1.989109167253472000f, 1.989069163973184300f, 1.989029087560509700f,\n    1.988988938016921000f,\n  1.988948715343894900f, 1.988908419542910100f, 1.988868050615448100f,\n    1.988827608562993200f,\n  1.988787093387032600f, 1.988746505089055600f, 1.988705843670554500f,\n    1.988665109133024500f,\n  1.988624301477963200f, 1.988583420706871100f, 1.988542466821251000f,\n    1.988501439822608900f,\n  1.988460339712453200f, 1.988419166492295000f, 1.988377920163648000f,\n    1.988336600728029000f,\n  1.988295208186956700f, 1.988253742541953800f, 1.988212203794544000f,\n    1.988170591946255100f,\n  1.988128906998616800f, 1.988087148953161700f, 1.988045317811425700f,\n    1.988003413574946000f,\n  1.987961436245263800f, 1.987919385823922400f, 1.987877262312467600f,\n    1.987835065712448600f,\n  1.987792796025416500f, 1.987750453252925500f, 1.987708037396532800f,\n    1.987665548457797400f,\n  1.987622986438281700f, 1.987580351339550700f, 1.987537643163171700f,\n    1.987494861910715100f,\n  1.987452007583754100f, 1.987409080183863800f, 1.987366079712622900f,\n    1.987323006171612500f,\n  1.987279859562415900f, 1.987236639886619700f, 1.987193347145813000f,\n    1.987149981341587400f,\n  1.987106542475537400f, 1.987063030549260300f, 1.987019445564355700f,\n    1.986975787522426100f,\n  1.986932056425076800f, 1.986888252273915500f, 1.986844375070552900f,\n    1.986800424816602200f,\n  1.986756401513679400f, 1.986712305163403000f, 1.986668135767394300f,\n    1.986623893327277500f,\n  1.986579577844678900f, 1.986535189321228000f, 1.986490727758556800f,\n    1.986446193158300400f,\n  1.986401585522095600f, 1.986356904851583000f, 1.986312151148405200f,\n    1.986267324414207500f,\n  1.986222424650638400f, 1.986177451859348200f, 1.986132406041990900f,\n    1.986087287200222700f,\n  1.986042095335702300f, 1.985996830450091200f, 1.985951492545054100f,\n    1.985906081622257300f,\n  1.985860597683371000f, 1.985815040730067200f, 1.985769410764020900f,\n    1.985723707786909900f,\n  1.985677931800414500f, 1.985632082806217900f, 1.985586160806005700f,\n    1.985540165801466200f,\n  1.985494097794290800f, 1.985447956786173100f, 1.985401742778809500f,\n    1.985355455773899500f,\n  1.985309095773144500f, 1.985262662778249300f, 1.985216156790921000f,\n    1.985169577812869500f,\n  1.985122925845807400f, 1.985076200891450000f, 1.985029402951515200f,\n    1.984982532027723700f,\n  1.984935588121798700f, 1.984888571235466200f, 1.984841481370454900f,\n    1.984794318528496200f,\n  1.984747082711324100f, 1.984699773920675300f, 1.984652392158289500f,\n    1.984604937425908300f,\n  1.984557409725276700f, 1.984509809058142300f, 1.984462135426255000f,\n    1.984414388831367900f,\n  1.984366569275236400f, 1.984318676759618400f, 1.984270711286275200f,\n    1.984222672856969800f,\n  1.984174561473469200f, 1.984126377137541700f, 1.984078119850959200f,\n    1.984029789615495900f,\n  1.983981386432928800f, 1.983932910305037400f, 1.983884361233604100f,\n    1.983835739220414000f,\n  1.983787044267254700f, 1.983738276375916800f, 1.983689435548192900f,\n    1.983640521785879200f,\n  1.983591535090773800f, 1.983542475464678000f, 1.983493342909395500f,\n    1.983444137426732600f,\n  1.983394859018498900f, 1.983345507686505900f, 1.983296083432567900f,\n    1.983246586258502700f,\n  1.983197016166129400f, 1.983147373157271300f, 1.983097657233753100f,\n    1.983047868397403100f,\n  1.982998006650051400f, 1.982948071993531700f, 1.982898064429679900f,\n    1.982847983960334600f,\n  1.982797830587336800f, 1.982747604312531200f, 1.982697305137763700f,\n    1.982646933064884200f,\n  1.982596488095744300f, 1.982545970232199000f, 1.982495379476105800f,\n    1.982444715829324600f,\n  1.982393979293718200f, 1.982343169871152000f, 1.982292287563494300f,\n    1.982241332372615600f,\n  1.982190304300389400f, 1.982139203348692200f, 1.982088029519402300f,\n    1.982036782814401900f,\n  1.981985463235574700f, 1.981934070784807400f, 1.981882605463990200f,\n    1.981831067275015000f,\n  1.981779456219776600f, 1.981727772300172500f, 1.981676015518103500f,\n    1.981624185875472000f,\n  1.981572283374183800f, 1.981520308016147200f, 1.981468259803273300f,\n    1.981416138737475800f,\n  1.981363944820670800f, 1.981311678054777500f, 1.981259338441717400f,\n    1.981206925983415300f,\n  1.981154440681797800f, 1.981101882538794900f, 1.981049251556338900f,\n    1.980996547736364900f,\n  1.980943771080810700f, 1.980890921591616600f, 1.980837999270726100f,\n    1.980785004120084700f,\n  1.980731936141640900f, 1.980678795337345900f, 1.980625581709153600f,\n    1.980572295259020600f,\n  1.980518935988905700f, 1.980465503900771000f, 1.980411998996581200f,\n    1.980358421278303200f,\n  1.980304770747907300f, 1.980251047407365600f, 1.980197251258653900f,\n    1.980143382303749500f,\n  1.980089440544633600f, 1.980035425983289300f, 1.979981338621702200f,\n    1.979927178461861500f,\n  1.979872945505758000f, 1.979818639755386100f, 1.979764261212742400f,\n    1.979709809879825800f,\n  1.979655285758638900f, 1.979600688851186100f, 1.979546019159474900f,\n    1.979491276685515300f,\n  1.979436461431320000f, 1.979381573398904400f, 1.979326612590286400f,\n    1.979271579007487100f,\n  1.979216472652529900f, 1.979161293527440500f, 1.979106041634248100f,\n    1.979050716974983800f,\n  1.978995319551682100f, 1.978939849366379700f, 1.978884306421115900f,\n    1.978828690717932900f,\n  1.978773002258875600f, 1.978717241045991700f, 1.978661407081331100f,\n    1.978605500366946700f,\n  1.978549520904894000f, 1.978493468697231300f, 1.978437343746019600f,\n    1.978381146053322000f,\n  1.978324875621205300f, 1.978268532451738200f, 1.978212116546992100f,\n    1.978155627909041300f,\n  1.978099066539962900f, 1.978042432441836400f, 1.977985725616743900f,\n    1.977928946066770600f,\n  1.977872093794004200f, 1.977815168800534500f, 1.977758171088455100f,\n    1.977701100659861300f,\n  1.977643957516851400f, 1.977586741661526500f, 1.977529453095990200f,\n    1.977472091822348700f,\n  1.977414657842711200f, 1.977357151159189400f, 1.977299571773897700f,\n    1.977241919688953000f,\n  1.977184194906475000f, 1.977126397428586000f, 1.977068527257411300f,\n    1.977010584395078300f,\n  1.976952568843717700f, 1.976894480605462500f, 1.976836319682448300f,\n    1.976778086076813600f,\n  1.976719779790699500f, 1.976661400826249500f, 1.976602949185610500f,\n    1.976544424870931400f,\n  1.976485827884363800f, 1.976427158228062100f, 1.976368415904183900f,\n    1.976309600914888400f,\n  1.976250713262338600f, 1.976191752948699200f, 1.976132719976138000f,\n    1.976073614346825800f,\n  1.976014436062935700f, 1.975955185126643300f, 1.975895861540127200f,\n    1.975836465305568400f,\n  1.975776996425151000f, 1.975717454901061400f, 1.975657840735488800f,\n    1.975598153930624900f,\n  1.975538394488664200f, 1.975478562411804100f, 1.975418657702244300f,\n    1.975358680362187400f,\n  1.975298630393838500f, 1.975238507799405500f, 1.975178312581099100f,\n    1.975118044741132300f,\n  1.975057704281721000f, 1.974997291205083700f, 1.974936805513442000f,\n    1.974876247209019100f,\n  1.974815616294042200f, 1.974754912770740200f, 1.974694136641345300f,\n    1.974633287908091500f,\n  1.974572366573216400f, 1.974511372638960000f, 1.974450306107564900f,\n    1.974389166981275900f,\n  1.974327955262341400f, 1.974266670953011400f, 1.974205314055540000f,\n    1.974143884572182400f,\n  1.974082382505197400f, 1.974020807856846400f, 1.973959160629393100f,\n    1.973897440825104200f,\n  1.973835648446248900f, 1.973773783495099500f, 1.973711845973930000f,\n    1.973649835885018100f,\n  1.973587753230643400f, 1.973525598013088800f, 1.973463370234639600f,\n    1.973401069897583200f,\n  1.973338697004211100f, 1.973276251556815600f, 1.973213733557693400f,\n    1.973151143009142800f,\n  1.973088479913465100f, 1.973025744272964200f, 1.972962936089946800f,\n    1.972900055366722000f,\n  1.972837102105601900f, 1.972774076308901200f, 1.972710977978936900f,\n    1.972647807118029300f,\n  1.972584563728500700f, 1.972521247812676600f, 1.972457859372884500f,\n    1.972394398411455800f,\n  1.972330864930723200f, 1.972267258933022600f, 1.972203580420693000f,\n    1.972139829396075200f,\n  1.972076005861513700f, 1.972012109819354600f, 1.971948141271947500f,\n    1.971884100221644300f,\n  1.971819986670799500f, 1.971755800621770400f, 1.971691542076916800f,\n    1.971627211038601500f,\n  1.971562807509189800f, 1.971498331491049700f, 1.971433782986551400f,\n    1.971369161998068400f,\n  1.971304468527976800f, 1.971239702578655000f, 1.971174864152484400f,\n    1.971109953251848600f,\n  1.971044969879134600f, 1.970979914036731500f, 1.970914785727030800f,\n    1.970849584952427900f,\n  1.970784311715319400f, 1.970718966018105500f, 1.970653547863188600f,\n    1.970588057252973900f,\n  1.970522494189869800f, 1.970456858676286300f, 1.970391150714636800f,\n    1.970325370307337100f,\n  1.970259517456806100f, 1.970193592165464700f, 1.970127594435737000f,\n    1.970061524270049400f,\n  1.969995381670831100f, 1.969929166640514100f, 1.969862879181532700f,\n    1.969796519296324300f,\n  1.969730086987328900f, 1.969663582256988600f, 1.969597005107748900f,\n    1.969530355542057800f,\n  1.969463633562365400f, 1.969396839171125200f, 1.969329972370792700f,\n    1.969263033163826800f,\n  1.969196021552688500f, 1.969128937539841500f, 1.969061781127752400f,\n    1.968994552318890300f,\n  1.968927251115727200f, 1.968859877520737300f, 1.968792431536398000f,\n    1.968724913165188900f,\n  1.968657322409592500f, 1.968589659272094000f, 1.968521923755181000f,\n    1.968454115861344000f,\n  1.968386235593076300f, 1.968318282952873600f, 1.968250257943234200f,\n    1.968182160566659000f,\n  1.968113990825652200f, 1.968045748722719900f, 1.967977434260371300f,\n    1.967909047441118100f,\n  1.967840588267474500f, 1.967772056741957900f, 1.967703452867087800f,\n    1.967634776645386600f,\n  1.967566028079379200f, 1.967497207171593500f, 1.967428313924559600f,\n    1.967359348340810700f,\n  1.967290310422882700f, 1.967221200173313400f, 1.967152017594644200f,\n    1.967082762689418500f,\n  1.967013435460182700f, 1.966944035909485600f, 1.966874564039879300f,\n    1.966805019853917500f,\n  1.966735403354157500f, 1.966665714543159000f, 1.966595953423483800f,\n    1.966526119997697100f,\n  1.966456214268366600f, 1.966386236238062200f, 1.966316185909357200f,\n    1.966246063284826700f,\n  1.966175868367049400f, 1.966105601158605600f, 1.966035261662079300f,\n    1.965964849880056600f,\n  1.965894365815126000f, 1.965823809469879400f, 1.965753180846910900f,\n    1.965682479948817100f,\n  1.965611706778197700f, 1.965540861337654600f, 1.965469943629792700f,\n    1.965398953657219600f,\n  1.965327891422544900f, 1.965256756928382100f, 1.965185550177345900f,\n    1.965114271172054800f,\n  1.965042919915129400f, 1.964971496409193100f, 1.964900000656872000f,\n    1.964828432660794500f,\n  1.964756792423592200f, 1.964685079947899200f, 1.964613295236352000f,\n    1.964541438291590000f,\n  1.964469509116255000f, 1.964397507712991800f, 1.964325434084447600f,\n    1.964253288233272400f,\n  1.964181070162119000f, 1.964108779873642100f, 1.964036417370500300f,\n    1.963963982655353400f,\n  1.963891475730865400f, 1.963818896599701400f, 1.963746245264530700f,\n    1.963673521728023900f,\n  1.963600725992855200f, 1.963527858061700600f, 1.963454917937239800f,\n    1.963381905622154400f,\n  1.963308821119128700f, 1.963235664430850200f, 1.963162435560008100f,\n    1.963089134509295300f,\n  1.963015761281406800f, 1.962942315879040000f, 1.962868798304895400f,\n    1.962795208561676200f,\n  1.962721546652088200f, 1.962647812578839400f, 1.962574006344640900f,\n    1.962500127952206300f,\n  1.962426177404252200f, 1.962352154703497200f, 1.962278059852663000f,\n    1.962203892854473800f,\n  1.962129653711656800f, 1.962055342426941400f, 1.961980959003059500f,\n    1.961906503442746300f,\n  1.961831975748739200f, 1.961757375923778700f, 1.961682703970607100f,\n    1.961607959891970200f,\n  1.961533143690616000f, 1.961458255369295400f, 1.961383294930761700f,\n    1.961308262377770900f,\n  1.961233157713082200f, 1.961157980939456400f, 1.961082732059657800f,\n    1.961007411076453000f,\n  1.960932017992611500f, 1.960856552810905200f, 1.960781015534108800f,\n    1.960705406164999300f,\n  1.960629724706357100f, 1.960553971160964500f, 1.960478145531606700f,\n    1.960402247821071900f,\n  1.960326278032150200f, 1.960250236167635100f, 1.960174122230322400f,\n    1.960097936223010400f,\n  1.960021678148500500f, 1.959945348009596500f, 1.959868945809104500f,\n    1.959792471549834000f,\n  1.959715925234596600f, 1.959639306866206600f, 1.959562616447480900f,\n    1.959485853981239600f,\n  1.959409019470304700f, 1.959332112917501400f, 1.959255134325657000f,\n    1.959178083697602300f,\n  1.959100961036169800f, 1.959023766344195200f, 1.958946499624516700f,\n    1.958869160879975500f,\n  1.958791750113414700f, 1.958714267327680500f, 1.958636712525621900f,\n    1.958559085710090500f,\n  1.958481386883940100f, 1.958403616050027600f, 1.958325773211212300f,\n    1.958247858370356400f,\n  1.958169871530324600f, 1.958091812693984400f, 1.958013681864205500f,\n    1.957935479043860600f,\n  1.957857204235825100f, 1.957778857442976900f, 1.957700438668196700f,\n    1.957621947914367500f,\n  1.957543385184375300f, 1.957464750481108700f, 1.957386043807458800f,\n    1.957307265166319500f,\n  1.957228414560587200f, 1.957149491993160900f, 1.957070497466942400f,\n    1.956991430984836400f,\n  1.956912292549749500f, 1.956833082164591600f, 1.956753799832275300f,\n    1.956674445555715000f,\n  1.956595019337829000f, 1.956515521181537000f, 1.956435951089762200f,\n    1.956356309065430100f,\n  1.956276595111468900f, 1.956196809230809500f, 1.956116951426385600f,\n    1.956037021701132900f,\n  1.955957020057990500f, 1.955876946499899700f, 1.955796801029804800f,\n    1.955716583650652000f,\n  1.955636294365391300f, 1.955555933176974300f, 1.955475500088355900f,\n    1.955394995102493100f,\n  1.955314418222346100f, 1.955233769450877200f, 1.955153048791052000f,\n    1.955072256245838000f,\n  1.954991391818206000f, 1.954910455511129000f, 1.954829447327582900f,\n    1.954748367270545900f,\n  1.954667215342999600f, 1.954585991547927100f, 1.954504695888315000f,\n    1.954423328367152600f,\n  1.954341888987431100f, 1.954260377752145000f, 1.954178794664291200f,\n    1.954097139726869600f,\n  1.954015412942881900f, 1.953933614315333200f, 1.953851743847231100f,\n    1.953769801541585400f,\n  1.953687787401409400f, 1.953605701429718100f, 1.953523543629529700f,\n    1.953441314003864900f,\n  1.953359012555747200f, 1.953276639288202400f, 1.953194194204259200f,\n    1.953111677306948800f,\n  1.953029088599305100f, 1.952946428084364900f, 1.952863695765167100f,\n    1.952780891644753500f,\n  1.952698015726169100f, 1.952615068012460300f, 1.952532048506677300f,\n    1.952448957211872200f,\n  1.952365794131100300f, 1.952282559267419100f, 1.952199252623889200f,\n    1.952115874203572900f,\n  1.952032424009536600f, 1.951948902044847900f, 1.951865308312577900f,\n    1.951781642815800100f,\n  1.951697905557590700f, 1.951614096541028500f, 1.951530215769194700f,\n    1.951446263245173500f,\n  1.951362238972051500f, 1.951278142952918200f, 1.951193975190865600f,\n    1.951109735688987900f,\n  1.951025424450382900f, 1.950941041478150100f, 1.950856586775392200f,\n    1.950772060345214300f,\n  1.950687462190724200f, 1.950602792315032200f, 1.950518050721251600f,\n    1.950433237412498000f,\n  1.950348352391889600f, 1.950263395662547700f, 1.950178367227595900f,\n    1.950093267090159800f,\n  1.950008095253369200f, 1.949922851720355100f, 1.949837536494251700f,\n    1.949752149578196000f,\n  1.949666690975327100f, 1.949581160688787400f, 1.949495558721721500f,\n    1.949409885077276500f,\n  1.949324139758602700f, 1.949238322768852800f, 1.949152434111181700f,\n    1.949066473788747300f,\n  1.948980441804710300f, 1.948894338162233900f, 1.948808162864483600f,\n    1.948721915914628100f,\n  1.948635597315838200f, 1.948549207071288000f, 1.948462745184153400f,\n    1.948376211657613500f,\n  1.948289606494849800f, 1.948202929699046800f, 1.948116181273391100f,\n    1.948029361221072400f,\n  1.947942469545282500f, 1.947855506249216700f, 1.947768471336071700f,\n    1.947681364809048100f,\n  1.947594186671348000f, 1.947506936926177300f, 1.947419615576743600f,\n    1.947332222626257500f,\n  1.947244758077932200f, 1.947157221934983500f, 1.947069614200629900f,\n    1.946981934878092300f,\n  1.946894183970594900f, 1.946806361481363500f, 1.946718467413627300f,\n    1.946630501770618000f,\n  1.946542464555569800f, 1.946454355771719300f, 1.946366175422306500f,\n    1.946277923510573200f,\n  1.946189600039764300f, 1.946101205013127000f, 1.946012738433911600f,\n    1.945924200305370700f,\n  1.945835590630759400f, 1.945746909413335900f, 1.945658156656360700f,\n    1.945569332363096700f,\n  1.945480436536810100f, 1.945391469180769200f, 1.945302430298244900f,\n    1.945213319892511200f,\n  1.945124137966844200f, 1.945034884524523100f, 1.944945559568829200f,\n    1.944856163103046800f,\n  1.944766695130463000f, 1.944677155654366900f, 1.944587544678050900f,\n    1.944497862204809900f,\n  1.944408108237940700f, 1.944318282780743900f, 1.944228385836521700f,\n    1.944138417408579400f,\n  1.944048377500225100f, 1.943958266114769200f, 1.943868083255524800f,\n    1.943777828925807600f,\n  1.943687503128936200f, 1.943597105868231500f, 1.943506637147017300f,\n    1.943416096968619400f,\n  1.943325485336367300f, 1.943234802253592400f, 1.943144047723628400f,\n    1.943053221749812400f,\n  1.942962324335484100f, 1.942871355483985200f, 1.942780315198660200f,\n    1.942689203482856900f,\n  1.942598020339924700f, 1.942506765773216500f, 1.942415439786087300f,\n    1.942324042381895000f,\n  1.942232573564000000f, 1.942141033335765400f, 1.942049421700556600f,\n    1.941957738661741900f,\n  1.941865984222692900f, 1.941774158386782200f, 1.941682261157386700f,\n    1.941590292537884700f,\n  1.941498252531658200f, 1.941406141142090600f, 1.941313958372568900f,\n    1.941221704226482500f,\n  1.941129378707223000f, 1.941036981818185400f, 1.940944513562766300f,\n    1.940851973944365900f,\n  1.940759362966386600f, 1.940666680632233200f, 1.940573926945313700f,\n    1.940481101909038200f,\n  1.940388205526819600f, 1.940295237802073500f, 1.940202198738217900f,\n    1.940109088338673600f,\n  1.940015906606864300f, 1.939922653546215500f, 1.939829329160156500f,\n    1.939735933452118000f,\n  1.939642466425534300f, 1.939548928083841800f, 1.939455318430479500f,\n    1.939361637468889100f,\n  1.939267885202515400f, 1.939174061634805000f, 1.939080166769207700f,\n    1.938986200609175600f,\n  1.938892163158163700f, 1.938798054419629500f, 1.938703874397032800f,\n    1.938609623093837000f,\n  1.938515300513506700f, 1.938420906659510600f, 1.938326441535318500f,\n    1.938231905144404400f,\n  1.938137297490243500f, 1.938042618576314400f, 1.937947868406098500f,\n    1.937853046983079300f,\n  1.937758154310742900f, 1.937663190392578500f, 1.937568155232077600f,\n    1.937473048832734500f,\n  1.937377871198045600f, 1.937282622331510500f, 1.937187302236631500f,\n    1.937091910916912900f,\n  1.936996448375861900f, 1.936900914616988900f, 1.936805309643805800f,\n    1.936709633459828200f,\n  1.936613886068573500f, 1.936518067473562300f, 1.936422177678317300f,\n    1.936326216686364400f,\n  1.936230184501231500f, 1.936134081126449800f, 1.936037906565552400f,\n    1.935941660822075600f,\n  1.935845343899558000f, 1.935748955801540800f, 1.935652496531568000f,\n    1.935555966093186300f,\n  1.935459364489944500f, 1.935362691725394500f, 1.935265947803090900f,\n    1.935169132726590500f,\n  1.935072246499453000f, 1.934975289125240500f, 1.934878260607517900f,\n    1.934781160949852600f,\n  1.934683990155814800f, 1.934586748228977100f, 1.934489435172914900f,\n    1.934392050991206300f,\n  1.934294595687431300f, 1.934197069265173500f, 1.934099471728018700f,\n    1.934001803079554700f,\n  1.933904063323373300f, 1.933806252463067500f, 1.933708370502233800f,\n    1.933610417444471000f,\n  1.933512393293380600f, 1.933414298052566600f, 1.933316131725635800f,\n    1.933217894316197300f,\n  1.933119585827862900f, 1.933021206264247600f, 1.932922755628968100f,\n    1.932824233925644300f,\n  1.932725641157898600f, 1.932626977329356100f, 1.932528242443643900f,\n    1.932429436504392800f,\n  1.932330559515235100f, 1.932231611479806800f, 1.932132592401745400f,\n    1.932033502284691700f,\n  1.931934341132289100f, 1.931835108948183300f, 1.931735805736022800f,\n    1.931636431499459000f,\n  1.931536986242145200f, 1.931437469967737900f, 1.931337882679895900f,\n    1.931238224382281000f,\n  1.931138495078557300f, 1.931038694772391200f, 1.930938823467452500f,\n    1.930838881167413100f,\n  1.930738867875947400f, 1.930638783596732700f, 1.930538628333448900f,\n    1.930438402089778200f,\n  1.930338104869405900f, 1.930237736676019500f, 1.930137297513309300f,\n    1.930036787384968200f,\n  1.929936206294691400f, 1.929835554246177400f, 1.929734831243126600f,\n    1.929634037289242400f,\n  1.929533172388230700f, 1.929432236543799900f, 1.929331229759661200f,\n    1.929230152039528500f,\n  1.929129003387117800f, 1.929027783806148300f, 1.928926493300341400f,\n    1.928825131873421500f,\n  1.928723699529115000f, 1.928622196271151800f, 1.928520622103263400f,\n    1.928418977029184600f,\n  1.928317261052652700f, 1.928215474177407100f, 1.928113616407190600f,\n    1.928011687745748300f,\n  1.927909688196827400f, 1.927807617764178300f, 1.927705476451554000f,\n    1.927603264262709900f,\n  1.927500981201404100f, 1.927398627271397000f, 1.927296202476451900f,\n    1.927193706820335100f,\n  1.927091140306814500f, 1.926988502939661400f, 1.926885794722649600f,\n    1.926783015659555300f,\n  1.926680165754157500f, 1.926577245010237400f, 1.926474253431579500f,\n    1.926371191021970100f,\n  1.926268057785198700f, 1.926164853725057300f, 1.926061578845340600f,\n    1.925958233149845000f,\n  1.925854816642371000f, 1.925751329326720600f, 1.925647771206698600f,\n    1.925544142286112800f,\n  1.925440442568773000f, 1.925336672058492300f, 1.925232830759086000f,\n    1.925128918674371900f,\n  1.925024935808170600f, 1.924920882164305300f, 1.924816757746601800f,\n    1.924712562558888100f,\n  1.924608296604995800f, 1.924503959888757900f, 1.924399552414010700f,\n    1.924295074184593000f,\n  1.924190525204346300f, 1.924085905477114400f, 1.923981215006744100f,\n    1.923876453797084300f,\n  1.923771621851986700f, 1.923666719175306100f, 1.923561745770898900f,\n    1.923456701642625200f,\n  1.923351586794346900f, 1.923246401229928600f, 1.923141144953238300f,\n    1.923035817968145300f,\n  1.922930420278522500f, 1.922824951888245000f, 1.922719412801190600f,\n    1.922613803021239600f,\n  1.922508122552275100f, 1.922402371398182600f, 1.922296549562850100f,\n    1.922190657050168800f,\n  1.922084693864031700f, 1.921978660008334600f, 1.921872555486976700f,\n    1.921766380303858500f,\n  1.921660134462884100f, 1.921553817967959900f, 1.921447430822994500f,\n    1.921340973031900000f,\n  1.921234444598590100f, 1.921127845526981600f, 1.921021175820994100f,\n    1.920914435484549100f,\n  1.920807624521571700f, 1.920700742935988600f, 1.920593790731729600f,\n    1.920486767912727300f,\n  1.920379674482916500f, 1.920272510446234400f, 1.920165275806621400f,\n    1.920057970568020100f,\n  1.919950594734376000f, 1.919843148309637000f, 1.919735631297753400f,\n    1.919628043702678300f,\n  1.919520385528367300f, 1.919412656778779000f, 1.919304857457874200f,\n    1.919196987569616200f,\n  1.919089047117971100f, 1.918981036106907700f, 1.918872954540397300f,\n    1.918764802422413500f,\n  1.918656579756932800f, 1.918548286547934400f, 1.918439922799399800f,\n    1.918331488515313300f,\n  1.918222983699661600f, 1.918114408356434300f, 1.918005762489623400f,\n    1.917897046103223200f,\n  1.917788259201231200f, 1.917679401787647100f, 1.917570473866473200f,\n    1.917461475441714500f,\n  1.917352406517378600f, 1.917243267097475700f, 1.917134057186018300f,\n    1.917024776787022100f,\n  1.916915425904504700f, 1.916806004542486800f, 1.916696512704991500f,\n    1.916586950396044400f,\n  1.916477317619674100f, 1.916367614379911100f, 1.916257840680788900f,\n    1.916147996526343700f,\n  1.916038081920614400f, 1.915928096867641800f, 1.915818041371470000f,\n    1.915707915436145200f,\n  1.915597719065716700f, 1.915487452264236000f, 1.915377115035757200f,\n    1.915266707384337200f,\n  1.915156229314035200f, 1.915045680828913400f, 1.914935061933036300f,\n    1.914824372630470800f,\n  1.914713612925287100f, 1.914602782821557000f, 1.914491882323355700f,\n    1.914380911434760500f,\n  1.914269870159851700f, 1.914158758502712000f, 1.914047576467426500f,\n    1.913936324058083100f,\n  1.913825001278772100f, 1.913713608133586600f, 1.913602144626622500f,\n    1.913490610761977600f,\n  1.913379006543752800f, 1.913267331976051400f, 1.913155587062979500f,\n    1.913043771808645700f,\n  1.912931886217160900f, 1.912819930292639000f, 1.912707904039196300f,\n    1.912595807460951500f,\n  1.912483640562026200f, 1.912371403346544400f, 1.912259095818632700f,\n    1.912146717982420500f,\n  1.912034269842039600f, 1.911921751401624200f, 1.911809162665311500f,\n    1.911696503637241100f,\n  1.911583774321554700f, 1.911470974722397500f, 1.911358104843916500f,\n    1.911245164690262000f,\n  1.911132154265586100f, 1.911019073574044200f, 1.910905922619793800f,\n    1.910792701406995000f,\n  1.910679409939810600f, 1.910566048222406300f, 1.910452616258949900f,\n    1.910339114053611900f,\n  1.910225541610565800f, 1.910111898933986900f, 1.909998186028053700f,\n    1.909884402896947100f,\n  1.909770549544850500f, 1.909656625975950200f, 1.909542632194434700f,\n    1.909428568204495100f,\n  1.909314434010325400f, 1.909200229616121700f, 1.909085955026083200f,\n    1.908971610244411600f,\n  1.908857195275310800f, 1.908742710122987700f, 1.908628154791651300f,\n    1.908513529285513500f,\n  1.908398833608789100f, 1.908284067765694900f, 1.908169231760450400f,\n    1.908054325597278200f,\n  1.907939349280402400f, 1.907824302814050900f, 1.907709186202453600f,\n    1.907593999449842800f,\n  1.907478742560453600f, 1.907363415538523700f, 1.907248018388293400f,\n    1.907132551114005600f,\n  1.907017013719905600f, 1.906901406210241200f, 1.906785728589263300f,\n    1.906669980861224900f,\n  1.906554163030381500f, 1.906438275100991600f, 1.906322317077316300f,\n    1.906206288963618700f,\n  1.906090190764164700f, 1.905974022483223300f, 1.905857784125065500f,\n    1.905741475693964800f,\n  1.905625097194197900f, 1.905508648630043700f, 1.905392130005783400f,\n    1.905275541325701400f,\n  1.905158882594083900f, 1.905042153815220700f, 1.904925354993402900f,\n    1.904808486132925300f,\n  1.904691547238084800f, 1.904574538313180700f, 1.904457459362515200f,\n    1.904340310390393100f,\n  1.904223091401121600f, 1.904105802399010300f, 1.903988443388371600f,\n    1.903871014373520700f,\n  1.903753515358774800f, 1.903635946348454500f, 1.903518307346881800f,\n    1.903400598358382600f,\n  1.903282819387284200f, 1.903164970437917400f, 1.903047051514615000f,\n    1.902929062621712600f,\n  1.902811003763547900f, 1.902692874944462300f, 1.902574676168798700f,\n    1.902456407440902700f,\n  1.902338068765123200f, 1.902219660145810800f, 1.902101181587319000f,\n    1.901982633094004200f,\n  1.901864014670225000f, 1.901745326320342500f, 1.901626568048721000f,\n    1.901507739859726200f,\n  1.901388841757727600f, 1.901269873747096600f, 1.901150835832207100f,\n    1.901031728017436300f,\n  1.900912550307162700f, 1.900793302705768900f, 1.900673985217638900f,\n    1.900554597847159400f,\n  1.900435140598720500f, 1.900315613476714100f, 1.900196016485534700f,\n    1.900076349629579600f,\n  1.899956612913248800f, 1.899836806340944300f, 1.899716929917071500f,\n    1.899596983646037600f,\n  1.899476967532252900f, 1.899356881580129800f, 1.899236725794083600f,\n    1.899116500178532200f,\n  1.898996204737895900f, 1.898875839476597700f, 1.898755404399062900f,\n    1.898634899509719500f,\n  1.898514324812998300f, 1.898393680313332600f, 1.898272966015157800f,\n    1.898152181922912600f,\n  1.898031328041037700f, 1.897910404373976500f, 1.897789410926175000f,\n    1.897668347702081900f,\n  1.897547214706148300f, 1.897426011942827900f, 1.897304739416577200f,\n    1.897183397131854600f,\n  1.897061985093121800f, 1.896940503304842800f, 1.896818951771484000f,\n    1.896697330497514800f,\n  1.896575639487406300f, 1.896453878745633100f, 1.896332048276672100f,\n    1.896210148085002400f,\n  1.896088178175106200f, 1.895966138551467700f, 1.895844029218574100f,\n    1.895721850180915000f,\n  1.895599601442982600f, 1.895477283009271400f, 1.895354894884279100f,\n    1.895232437072505300f,\n  1.895109909578452500f, 1.894987312406625700f, 1.894864645561532100f,\n    1.894741909047682500f,\n  1.894619102869589100f, 1.894496227031767100f, 1.894373281538734400f,\n    1.894250266395011600f,\n  1.894127181605121100f, 1.894004027173588700f, 1.893880803104942600f,\n    1.893757509403713100f,\n  1.893634146074433500f, 1.893510713121639300f, 1.893387210549869000f,\n    1.893263638363663400f,\n  1.893139996567565900f, 1.893016285166122500f, 1.892892504163881600f,\n    1.892768653565394300f,\n  1.892644733375214300f, 1.892520743597897700f, 1.892396684238003300f,\n    1.892272555300092300f,\n  1.892148356788728700f, 1.892024088708479200f, 1.891899751063912200f,\n    1.891775343859599400f,\n  1.891650867100115300f, 1.891526320790036100f, 1.891401704933941100f,\n    1.891277019536412400f,\n  1.891152264602033800f, 1.891027440135392600f, 1.890902546141078000f,\n    1.890777582623682300f,\n  1.890652549587799700f, 1.890527447038027300f, 1.890402274978965100f,\n    1.890277033415215200f,\n  1.890151722351382200f, 1.890026341792073500f, 1.889900891741899100f,\n    1.889775372205471300f,\n  1.889649783187405100f, 1.889524124692318200f, 1.889398396724830500f,\n    1.889272599289564900f,\n  1.889146732391146400f, 1.889020796034202700f, 1.888894790223364600f,\n    1.888768714963264400f,\n  1.888642570258537700f, 1.888516356113822700f, 1.888390072533759700f,\n    1.888263719522991900f,\n  1.888137297086165000f, 1.888010805227927000f, 1.887884243952928600f,\n    1.887757613265823400f,\n  1.887630913171267000f, 1.887504143673917700f, 1.887377304778437000f,\n    1.887250396489487800f,\n  1.887123418811736500f, 1.886996371749851700f, 1.886869255308504200f,\n    1.886742069492368000f,\n  1.886614814306119400f, 1.886487489754437300f, 1.886360095842002600f,\n    1.886232632573499700f,\n  1.886105099953614900f, 1.885977497987037000f, 1.885849826678457800f,\n    1.885722086032571200f,\n  1.885594276054074300f, 1.885466396747665700f, 1.885338448118047700f,\n    1.885210430169924200f,\n  1.885082342908002400f, 1.884954186336991400f, 1.884825960461603100f,\n    1.884697665286552400f,\n  1.884569300816556000f, 1.884440867056333700f, 1.884312364010607600f,\n    1.884183791684102400f,\n  1.884055150081545200f, 1.883926439207665800f, 1.883797659067196800f,\n    1.883668809664872600f,\n  1.883539891005431100f, 1.883410903093611900f, 1.883281845934157800f,\n    1.883152719531813800f,\n  1.883023523891327300f, 1.882894259017448900f, 1.882764924914930700f,\n    1.882635521588528400f,\n  1.882506049042999700f, 1.882376507283104900f, 1.882246896313606800f,\n    1.882117216139270700f,\n  1.881987466764865100f, 1.881857648195159900f, 1.881727760434928500f,\n    1.881597803488946500f,\n  1.881467777361992100f, 1.881337682058845700f, 1.881207517584290600f,\n    1.881077283943112900f,\n  1.880946981140100500f, 1.880816609180044700f, 1.880686168067738500f,\n    1.880555657807977800f,\n  1.880425078405561600f, 1.880294429865290600f, 1.880163712191968300f,\n    1.880032925390400900f,\n  1.879902069465397200f, 1.879771144421768200f, 1.879640150264327600f,\n    1.879509086997891900f,\n  1.879377954627279700f, 1.879246753157312700f, 1.879115482592814500f,\n    1.878984142938611600f,\n  1.878852734199532900f, 1.878721256380410100f, 1.878589709486077300f,\n    1.878458093521370800f,\n  1.878326408491130200f, 1.878194654400196600f, 1.878062831253414900f,\n    1.877930939055631100f,\n  1.877798977811695200f, 1.877666947526458700f, 1.877534848204775800f,\n    1.877402679851504000f,\n  1.877270442471502100f, 1.877138136069632400f, 1.877005760650759500f,\n    1.876873316219750200f,\n  1.876740802781474500f, 1.876608220340804100f, 1.876475568902614000f,\n    1.876342848471781200f,\n  1.876210059053185600f, 1.876077200651709500f, 1.875944273272237800f,\n    1.875811276919657500f,\n  1.875678211598858800f, 1.875545077314734000f, 1.875411874072178100f,\n    1.875278601876088700f,\n  1.875145260731365700f, 1.875011850642911600f, 1.874878371615631900f,\n    1.874744823654434000f,\n  1.874611206764227800f, 1.874477520949926500f, 1.874343766216444800f,\n    1.874209942568701100f,\n  1.874076050011615400f, 1.873942088550110400f, 1.873808058189111700f,\n    1.873673958933546900f,\n  1.873539790788347100f, 1.873405553758444600f, 1.873271247848775400f,\n    1.873136873064277000f,\n  1.873002429409890600f, 1.872867916890558900f, 1.872733335511227700f,\n    1.872598685276845000f,\n  1.872463966192361900f, 1.872329178262731200f, 1.872194321492908700f,\n    1.872059395887852900f,\n  1.871924401452524700f, 1.871789338191887100f, 1.871654206110906500f,\n    1.871519005214550700f,\n  1.871383735507791100f, 1.871248396995601300f, 1.871112989682956800f,\n    1.870977513574836500f,\n  1.870841968676221400f, 1.870706354992095000f, 1.870570672527443600f,\n    1.870434921287255700f,\n  1.870299101276522400f, 1.870163212500237900f, 1.870027254963397800f,\n    1.869891228671001200f,\n  1.869755133628049600f, 1.869618969839546500f, 1.869482737310498100f,\n    1.869346436045913800f,\n  1.869210066050804600f, 1.869073627330184700f, 1.868937119889070300f,\n    1.868800543732480600f,\n  1.868663898865437200f, 1.868527185292963700f, 1.868390403020087100f,\n    1.868253552051836200f,\n  1.868116632393243000f, 1.867979644049341200f, 1.867842587025167800f,\n    1.867705461325761800f,\n  1.867568266956164800f, 1.867431003921421500f, 1.867293672226578300f,\n    1.867156271876684500f,\n  1.867018802876792200f, 1.866881265231955500f, 1.866743658947231300f,\n    1.866605984027679000f,\n  1.866468240478360600f, 1.866330428304340300f, 1.866192547510685300f,\n    1.866054598102465000f,\n  1.865916580084751500f, 1.865778493462619100f, 1.865640338241145100f,\n    1.865502114425408900f,\n  1.865363822020492700f, 1.865225461031480900f, 1.865087031463460900f,\n    1.864948533321522300f,\n  1.864809966610757400f, 1.864671331336260600f, 1.864532627503129100f,\n    1.864393855116463200f,\n  1.864255014181364500f, 1.864116104702938000f, 1.863977126686291200f,\n    1.863838080136534000f,\n  1.863698965058778300f, 1.863559781458139300f, 1.863420529339734100f,\n    1.863281208708683000f,\n  1.863141819570107900f, 1.863002361929134500f, 1.862862835790889400f,\n    1.862723241160503300f,\n  1.862583578043108100f, 1.862443846443839300f, 1.862304046367834200f,\n    1.862164177820232700f,\n  1.862024240806177800f, 1.861884235330814300f, 1.861744161399289600f,\n    1.861604019016754200f,\n  1.861463808188360500f, 1.861323528919263800f, 1.861183181214621600f,\n    1.861042765079594200f,\n  1.860902280519344500f, 1.860761727539037300f, 1.860621106143840500f,\n    1.860480416338924600f,\n  1.860339658129461800f, 1.860198831520627900f, 1.860057936517600700f,\n    1.859916973125560000f,\n  1.859775941349689000f, 1.859634841195173100f, 1.859493672667199800f,\n    1.859352435770959900f,\n  1.859211130511645900f, 1.859069756894453400f, 1.858928314924580300f,\n    1.858786804607227100f,\n  1.858645225947596300f, 1.858503578950893900f, 1.858361863622327400f,\n    1.858220079967107600f,\n  1.858078227990447300f, 1.857936307697561900f, 1.857794319093669900f,\n    1.857652262183991000f,\n  1.857510136973749000f, 1.857367943468169100f, 1.857225681672479300f,\n    1.857083351591910300f,\n  1.856940953231694900f, 1.856798486597069000f, 1.856655951693270600f,\n    1.856513348525540300f,\n  1.856370677099121100f, 1.856227937419258700f, 1.856085129491201100f,\n    1.855942253320199200f,\n  1.855799308911506100f, 1.855656296270377300f, 1.855513215402071000f,\n    1.855370066311848000f,\n  1.855226849004971500f, 1.855083563486706900f, 1.854940209762322700f,\n    1.854796787837089500f,\n  1.854653297716280400f, 1.854509739405171300f, 1.854366112909040300f,\n    1.854222418233168400f,\n  1.854078655382838300f, 1.853934824363336200f, 1.853790925179950500f,\n    1.853646957837971500f,\n  1.853502922342692600f, 1.853358818699409900f, 1.853214646913421200f,\n    1.853070406990027500f,\n  1.852926098934532200f, 1.852781722752241000f, 1.852637278448462200f,\n    1.852492766028506400f,\n  1.852348185497687300f, 1.852203536861320600f, 1.852058820124724300f,\n    1.851914035293219700f,\n  1.851769182372129600f, 1.851624261366780400f, 1.851479272282500000f,\n    1.851334215124619300f,\n  1.851189089898471800f, 1.851043896609393400f, 1.850898635262721900f,\n    1.850753305863798800f,\n  1.850607908417967200f, 1.850462442930572900f, 1.850316909406964200f,\n    1.850171307852492200f,\n  1.850025638272510000f, 1.849879900672373600f, 1.849734095057441200f,\n    1.849588221433073700f,\n  1.849442279804634600f, 1.849296270177489800f, 1.849150192557007300f,\n    1.849004046948558200f,\n  1.848857833357515900f, 1.848711551789256300f, 1.848565202249157400f,\n    1.848418784742600400f,\n  1.848272299274968500f, 1.848125745851647800f, 1.847979124478026100f,\n    1.847832435159495000f,\n  1.847685677901447200f, 1.847538852709279100f, 1.847391959588388300f,\n    1.847244998544176300f,\n  1.847097969582046200f, 1.846950872707404000f, 1.846803707925657600f,\n    1.846656475242218300f,\n  1.846509174662499300f, 1.846361806191916000f, 1.846214369835887500f,\n    1.846066865599834000f,\n  1.845919293489179000f, 1.845771653509348200f, 1.845623945665770100f,\n    1.845476169963875500f,\n  1.845328326409097400f, 1.845180415006871800f, 1.845032435762637100f,\n    1.844884388681833800f,\n  1.844736273769905300f, 1.844588091032297400f, 1.844439840474458200f,\n    1.844291522101838800f,\n  1.844143135919891900f, 1.843994681934073600f, 1.843846160149842200f,\n    1.843697570572658200f,\n  1.843548913207985000f, 1.843400188061288000f, 1.843251395138035800f,\n    1.843102534443698900f,\n  1.842953605983750400f, 1.842804609763666100f, 1.842655545788924000f,\n    1.842506414065004900f,\n  1.842357214597392100f, 1.842207947391570900f, 1.842058612453029600f,\n    1.841909209787258900f,\n  1.841759739399751800f, 1.841610201296003800f, 1.841460595481513100f,\n    1.841310921961780500f,\n  1.841161180742308500f, 1.841011371828603200f, 1.840861495226172600f,\n    1.840711550940526700f,\n  1.840561538977179200f, 1.840411459341645400f, 1.840261312039443100f,\n    1.840111097076092800f,\n  1.839960814457117600f, 1.839810464188043100f, 1.839660046274397100f,\n    1.839509560721709800f,\n  1.839359007535514400f, 1.839208386721346500f, 1.839057698284743500f,\n    1.838906942231246100f,\n  1.838756118566397200f, 1.838605227295741800f, 1.838454268424828400f,\n    1.838303241959206700f,\n  1.838152147904429800f, 1.838000986266052900f, 1.837849757049633900f,\n    1.837698460260732900f,\n  1.837547095904912700f, 1.837395663987738700f, 1.837244164514778600f,\n    1.837092597491602100f,\n  1.836940962923782700f, 1.836789260816895000f, 1.836637491176516600f,\n    1.836485654008228200f,\n  1.836333749317611700f, 1.836181777110252900f, 1.836029737391738700f,\n    1.835877630167659800f,\n  1.835725455443608200f, 1.835573213225179400f, 1.835420903517970500f,\n    1.835268526327581900f,\n  1.835116081659615700f, 1.834963569519677100f, 1.834810989913373500f,\n    1.834658342846314800f,\n  1.834505628324113200f, 1.834352846352383700f, 1.834199996936744000f,\n    1.834047080082813300f,\n  1.833894095796214400f, 1.833741044082571900f, 1.833587924947513100f,\n    1.833434738396668000f,\n  1.833281484435668400f, 1.833128163070149300f, 1.832974774305747600f,\n    1.832821318148103500f,\n  1.832667794602858400f, 1.832514203675657600f, 1.832360545372147900f,\n    1.832206819697979000f,\n  1.832053026658802700f, 1.831899166260273700f, 1.831745238508049300f,\n    1.831591243407788300f,\n  1.831437180965153100f, 1.831283051185808300f, 1.831128854075420500f,\n    1.830974589639659000f,\n  1.830820257884196100f, 1.830665858814705600f, 1.830511392436864800f,\n    1.830356858756352800f,\n  1.830202257778851300f, 1.830047589510044500f, 1.829892853955619200f,\n    1.829738051121264600f,\n  1.829583181012672400f, 1.829428243635536500f, 1.829273238995553700f,\n    1.829118167098423100f,\n  1.828963027949846100f, 1.828807821555527000f, 1.828652547921171900f,\n    1.828497207052490100f,\n  1.828341798955192900f, 1.828186323634994200f, 1.828030781097610400f,\n    1.827875171348760400f,\n  1.827719494394165500f, 1.827563750239549400f, 1.827407938890638600f,\n    1.827252060353161500f,\n  1.827096114632849700f, 1.826940101735436500f, 1.826784021666658400f,\n    1.826627874432253700f,\n  1.826471660037963800f, 1.826315378489531800f, 1.826159029792704400f,\n    1.826002613953229500f,\n  1.825846130976858100f, 1.825689580869344100f, 1.825532963636443000f,\n    1.825376279283913200f,\n  1.825219527817515800f, 1.825062709243013800f, 1.824905823566173000f,\n    1.824748870792761900f,\n  1.824591850928550800f, 1.824434763979313300f, 1.824277609950824700f,\n    1.824120388848863300f,\n  1.823963100679209600f, 1.823805745447646600f, 1.823648323159960100f,\n    1.823490833821937600f,\n  1.823333277439369600f, 1.823175654018049300f, 1.823017963563772000f,\n    1.822860206082335300f,\n  1.822702381579539800f, 1.822544490061187800f, 1.822386531533084900f,\n    1.822228506001038800f,\n  1.822070413470859600f, 1.821912253948359700f, 1.821754027439354400f,\n    1.821595733949661100f,\n  1.821437373485099900f, 1.821278946051493100f, 1.821120451654665700f,\n    1.820961890300445400f,\n  1.820803261994661500f, 1.820644566743146800f, 1.820485804551735800f,\n    1.820326975426265600f,\n  1.820168079372576300f, 1.820009116396509800f, 1.819850086503910700f,\n    1.819690989700625900f,\n  1.819531825992505500f, 1.819372595385401000f, 1.819213297885166900f,\n    1.819053933497660300f,\n  1.818894502228740600f, 1.818735004084269600f, 1.818575439070111200f,\n    1.818415807192132600f,\n  1.818256108456203000f, 1.818096342868193800f, 1.817936510433979300f,\n    1.817776611159436000f,\n  1.817616645050443000f, 1.817456612112881900f, 1.817296512352636300f,\n    1.817136345775592900f,\n  1.816976112387640700f, 1.816815812194670700f, 1.816655445202576700f,\n    1.816495011417255300f,\n  1.816334510844604700f, 1.816173943490526400f, 1.816013309360923900f,\n    1.815852608461703300f,\n  1.815691840798773000f, 1.815531006378043900f, 1.815370105205429600f,\n    1.815209137286846200f,\n  1.815048102628211500f, 1.814887001235446600f, 1.814725833114474700f,\n    1.814564598271221300f,\n  1.814403296711615000f, 1.814241928441585800f, 1.814080493467067300f,\n    1.813918991793994900f,\n  1.813757423428306000f, 1.813595788375941700f, 1.813434086642844400f,\n    1.813272318234959700f,\n  1.813110483158235400f, 1.812948581418621500f, 1.812786613022070700f,\n    1.812624577974538000f,\n  1.812462476281981200f, 1.812300307950360300f, 1.812138072985637800f,\n    1.811975771393778300f,\n  1.811813403180749300f, 1.811650968352521000f, 1.811488466915065000f,\n    1.811325898874356800f,\n  1.811163264236372900f, 1.811000563007093100f, 1.810837795192499400f,\n    1.810674960798576600f,\n  1.810512059831311400f, 1.810349092296693400f, 1.810186058200714100f,\n    1.810022957549368000f,\n  1.809859790348652200f, 1.809696556604565300f, 1.809533256323109200f,\n    1.809369889510288100f,\n  1.809206456172108200f, 1.809042956314578900f, 1.808879389943711200f,\n    1.808715757065519200f,\n  1.808552057686019200f, 1.808388291811230000f, 1.808224459447172800f,\n    1.808060560599871200f,\n  1.807896595275351200f, 1.807732563479641300f, 1.807568465218772900f,\n    1.807404300498778800f,\n  1.807240069325695400f, 1.807075771705560800f, 1.806911407644415700f,\n    1.806746977148303300f,\n  1.806582480223269500f, 1.806417916875362000f, 1.806253287110631600f,\n    1.806088590935131000f,\n  1.805923828354915900f, 1.805758999376044100f, 1.805594104004575800f,\n    1.805429142246573600f,\n  1.805264114108102900f, 1.805099019595231200f, 1.804933858714028700f,\n    1.804768631470567500f,\n  1.804603337870923000f, 1.804437977921172300f, 1.804272551627395400f,\n    1.804107058995674500f,\n  1.803941500032094200f, 1.803775874742741500f, 1.803610183133706400f,\n    1.803444425211080400f,\n  1.803278600980958300f, 1.803112710449436900f, 1.802946753622615400f,\n    1.802780730506595700f,\n  1.802614641107481900f, 1.802448485431380900f, 1.802282263484401300f,\n    1.802115975272655000f,\n  1.801949620802255600f, 1.801783200079319900f, 1.801616713109966300f,\n    1.801450159900316300f,\n  1.801283540456493700f, 1.801116854784624400f, 1.800950102890836800f,\n    1.800783284781262200f,\n  1.800616400462033800f, 1.800449449939287800f, 1.800282433219162000f,\n    1.800115350307797600f,\n  1.799948201211337500f, 1.799780985935927300f, 1.799613704487715200f,\n    1.799446356872851400f,\n  1.799278943097489100f, 1.799111463167783400f, 1.798943917089892000f,\n    1.798776304869975200f,\n  1.798608626514195800f, 1.798440882028718500f, 1.798273071419711000f,\n    1.798105194693343500f,\n  1.797937251855787700f, 1.797769242913218800f, 1.797601167871813800f,\n    1.797433026737752700f,\n  1.797264819517217200f, 1.797096546216391900f, 1.796928206841463800f,\n    1.796759801398622100f,\n  1.796591329894058800f, 1.796422792333968000f, 1.796254188724546500f,\n    1.796085519071992900f,\n  1.795916783382509200f, 1.795747981662299200f, 1.795579113917569200f,\n    1.795410180154527900f,\n  1.795241180379386800f, 1.795072114598359200f, 1.794902982817661500f,\n    1.794733785043511900f,\n  1.794564521282131300f, 1.794395191539743400f, 1.794225795822573600f,\n    1.794056334136850300f,\n  1.793886806488804100f, 1.793717212884667900f, 1.793547553330677300f,\n    1.793377827833070100f,\n  1.793208036398086900f, 1.793038179031970000f, 1.792868255740965000f,\n    1.792698266531319400f,\n  1.792528211409282900f, 1.792358090381108300f, 1.792187903453050100f,\n    1.792017650631366100f,\n  1.791847331922315600f, 1.791676947332161000f, 1.791506496867166600f,\n    1.791335980533599300f,\n  1.791165398337728900f, 1.790994750285827000f, 1.790824036384167900f,\n    1.790653256639028100f,\n  1.790482411056686800f, 1.790311499643425500f, 1.790140522405528200f,\n    1.789969479349281100f,\n  1.789798370480973000f, 1.789627195806895200f, 1.789455955333341100f,\n    1.789284649066606800f,\n  1.789113277012990900f, 1.788941839178794100f, 1.788770335570319700f,\n    1.788598766193873600f,\n  1.788427131055763600f, 1.788255430162300400f, 1.788083663519796800f,\n    1.787911831134568300f,\n  1.787739933012932900f, 1.787567969161210300f, 1.787395939585723500f,\n    1.787223844292797500f,\n  1.787051683288759500f, 1.786879456579939700f, 1.786707164172670200f,\n    1.786534806073285700f,\n  1.786362382288123400f, 1.786189892823522700f, 1.786017337685825700f,\n    1.785844716881376700f,\n  1.785672030416522300f, 1.785499278297612000f, 1.785326460530997300f,\n    1.785153577123032000f,\n  1.784980628080072900f, 1.784807613408478300f, 1.784634533114609800f,\n    1.784461387204831400f,\n  1.784288175685508700f, 1.784114898563010200f, 1.783941555843707100f,\n    1.783768147533972200f,\n  1.783594673640181800f, 1.783421134168713800f, 1.783247529125948900f,\n    1.783073858518269700f,\n  1.782900122352062000f, 1.782726320633713200f, 1.782552453369613800f,\n    1.782378520566156200f,\n  1.782204522229735600f, 1.782030458366749200f, 1.781856328983596900f,\n    1.781682134086680900f,\n  1.781507873682406200f, 1.781333547777179200f, 1.781159156377410100f,\n    1.780984699489510200f,\n  1.780810177119894100f, 1.780635589274978600f, 1.780460935961182300f,\n    1.780286217184927000f,\n  1.780111432952636600f, 1.779936583270737400f, 1.779761668145658300f,\n    1.779586687583830200f,\n  1.779411641591686500f, 1.779236530175663600f, 1.779061353342199500f,\n    1.778886111097735000f,\n  1.778710803448713400f, 1.778535430401580100f, 1.778359991962783000f,\n    1.778184488138772900f,\n  1.778008918936002000f, 1.777833284360925900f, 1.777657584420002000f,\n    1.777481819119690200f,\n  1.777305988466453000f, 1.777130092466755200f, 1.776954131127064200f,\n    1.776778104453849100f,\n  1.776602012453582400f, 1.776425855132738100f, 1.776249632497793200f,\n    1.776073344555227000f,\n  1.775896991311520800f, 1.775720572773158900f, 1.775544088946627600f,\n    1.775367539838415700f,\n  1.775190925455014400f, 1.775014245802917200f, 1.774837500888620400f,\n    1.774660690718622000f,\n  1.774483815299423100f, 1.774306874637527000f, 1.774129868739439100f,\n    1.773952797611667100f,\n  1.773775661260722100f, 1.773598459693116500f, 1.773421192915365400f,\n    1.773243860933986400f,\n  1.773066463755499800f, 1.772889001386427800f, 1.772711473833295200f,\n    1.772533881102629000f,\n  1.772356223200959100f, 1.772178500134817100f, 1.772000711910737700f,\n    1.771822858535257600f,\n  1.771644940014915700f, 1.771466956356254000f, 1.771288907565816000f,\n    1.771110793650148500f,\n  1.770932614615799800f, 1.770754370469321400f, 1.770576061217266500f,\n    1.770397686866191300f,\n  1.770219247422653700f, 1.770040742893215000f, 1.769862173284438000f,\n    1.769683538602888000f,\n  1.769504838855133100f, 1.769326074047743700f, 1.769147244187292200f,\n    1.768968349280353800f,\n  1.768789389333506000f, 1.768610364353328600f, 1.768431274346403900f,\n    1.768252119319316400f,\n  1.768072899278653200f, 1.767893614231003800f, 1.767714264182959500f,\n    1.767534849141115100f,\n  1.767355369112067100f, 1.767175824102414000f, 1.766996214118757800f,\n    1.766816539167701800f,\n  1.766636799255852300f, 1.766456994389817600f, 1.766277124576209000f,\n    1.766097189821639300f,\n  1.765917190132724600f, 1.765737125516083000f, 1.765556995978334800f,\n    1.765376801526102700f,\n  1.765196542166012100f, 1.765016217904690900f, 1.764835828748768400f,\n    1.764655374704877700f,\n  1.764474855779653200f, 1.764294271979732100f, 1.764113623311754000f,\n    1.763932909782361100f,\n  1.763752131398197200f, 1.763571288165909400f, 1.763390380092146400f,\n    1.763209407183560200f,\n  1.763028369446804500f, 1.762847266888535100f, 1.762666099515411100f,\n    1.762484867334093400f,\n  1.762303570351245300f, 1.762122208573532600f, 1.761940782007623600f,\n    1.761759290660188400f,\n  1.761577734537900500f, 1.761396113647435000f, 1.761214427995469100f,\n    1.761032677588683800f,\n  1.760850862433760700f, 1.760668982537384900f, 1.760487037906243600f,\n    1.760305028547026500f,\n  1.760122954466425600f, 1.759940815671135100f, 1.759758612167851700f,\n    1.759576343963274600f,\n  1.759394011064105100f, 1.759211613477047200f, 1.759029151208807400f,\n    1.758846624266093800f,\n  1.758664032655617500f, 1.758481376384092500f, 1.758298655458233600f,\n    1.758115869884759700f,\n  1.757933019670390800f, 1.757750104821850000f, 1.757567125345862700f,\n    1.757384081249156100f,\n  1.757200972538460700f, 1.757017799220508500f, 1.756834561302034400f,\n    1.756651258789775800f,\n  1.756467891690471700f, 1.756284460010864200f, 1.756100963757697900f,\n    1.755917402937718900f,\n  1.755733777557676500f, 1.755550087624322000f, 1.755366333144409200f,\n    1.755182514124693900f,\n  1.754998630571935200f, 1.754814682492893600f, 1.754630669894332600f,\n    1.754446592783017500f,\n  1.754262451165716300f, 1.754078245049199600f, 1.753893974440240000f,\n    1.753709639345612600f,\n  1.753525239772095100f, 1.753340775726466700f, 1.753156247215510400f,\n    1.752971654246010300f,\n  1.752786996824753600f, 1.752602274958529500f, 1.752417488654129700f,\n    1.752232637918348200f,\n  1.752047722757981600f, 1.751862743179828600f, 1.751677699190690400f,\n    1.751492590797370600f,\n  1.751307418006674800f, 1.751122180825411800f, 1.750936879260391700f,\n    1.750751513318427700f,\n  1.750566083006335600f, 1.750380588330932500f, 1.750195029299038900f,\n    1.750009405917477100f,\n  1.749823718193071800f, 1.749637966132650900f, 1.749452149743043100f,\n    1.749266269031080700f,\n  1.749080324003598100f, 1.748894314667431800f, 1.748708241029421000f,\n    1.748522103096407300f,\n  1.748335900875233900f, 1.748149634372747200f, 1.747963303595795500f,\n    1.747776908551230000f,\n  1.747590449245904000f, 1.747403925686672500f, 1.747217337880393900f,\n    1.747030685833928200f,\n  1.746843969554138200f, 1.746657189047889200f, 1.746470344322048200f,\n    1.746283435383485100f,\n  1.746096462239072000f, 1.745909424895683200f, 1.745722323360195900f,\n    1.745535157639489100f,\n  1.745347927740444200f, 1.745160633669945200f, 1.744973275434878300f,\n    1.744785853042132300f,\n  1.744598366498598200f, 1.744410815811169300f, 1.744223200986741100f,\n    1.744035522032211900f,\n  1.743847778954482000f, 1.743659971760454200f, 1.743472100457033700f,\n    1.743284165051127700f,\n  1.743096165549646400f, 1.742908101959502100f, 1.742719974287608900f,\n    1.742531782540884100f,\n  1.742343526726246800f, 1.742155206850618800f, 1.741966822920923800f,\n    1.741778374944088000f,\n  1.741589862927040800f, 1.741401286876712800f, 1.741212646800037300f,\n    1.741023942703950200f,\n  1.740835174595389600f, 1.740646342481295900f, 1.740457446368612000f,\n    1.740268486264283200f,\n  1.740079462175256900f, 1.739890374108482600f, 1.739701222070913200f,\n    1.739512006069502800f,\n  1.739322726111208500f, 1.739133382202989500f, 1.738943974351807600f,\n    1.738754502564626700f,\n  1.738564966848413100f, 1.738375367210135400f, 1.738185703656765200f,\n    1.737995976195275000f,\n  1.737806184832640900f, 1.737616329575841300f, 1.737426410431856200f,\n    1.737236427407668800f,\n  1.737046380510263800f, 1.736856269746629000f, 1.736666095123754000f,\n    1.736475856648631400f,\n  1.736285554328254900f, 1.736095188169622500f, 1.735904758179732400f,\n    1.735714264365586700f,\n  1.735523706734189100f, 1.735333085292545900f, 1.735142400047666100f,\n    1.734951651006560100f,\n  1.734760838176241400f, 1.734569961563725600f, 1.734379021176030600f,\n    1.734188017020177100f,\n  1.733996949103187500f, 1.733805817432086900f, 1.733614622013902600f,\n    1.733423362855664100f,\n  1.733232039964403900f, 1.733040653347156300f, 1.732849203010957900f,\n    1.732657688962847600f,\n  1.732466111209867200f, 1.732274469759060200f, 1.732082764617472800f,\n    1.731890995792153600f,\n  1.731699163290153100f, 1.731507267118524500f, 1.731315307284323700f,\n    1.731123283794607800f,\n  1.730931196656437600f, 1.730739045876875200f, 1.730546831462985500f,\n    1.730354553421835600f,\n  1.730162211760495300f, 1.729969806486036500f, 1.729777337605533000f,\n    1.729584805126061400f,\n  1.729392209054700900f, 1.729199549398532400f, 1.729006826164639400f,\n    1.728814039360108100f,\n  1.728621188992026400f, 1.728428275067485100f, 1.728235297593577100f,\n    1.728042256577397200f,\n  1.727849152026043500f, 1.727655983946615700f, 1.727462752346216000f,\n    1.727269457231948900f,\n  1.727076098610921500f, 1.726882676490243000f, 1.726689190877025000f,\n    1.726495641778381200f,\n  1.726302029201427900f, 1.726108353153283900f, 1.725914613641069900f,\n    1.725720810671909300f,\n  1.725526944252927700f, 1.725333014391252900f, 1.725139021094015200f,\n    1.724944964368347000f,\n  1.724750844221383500f, 1.724556660660261800f, 1.724362413692121400f,\n    1.724168103324104300f,\n  1.723973729563354600f, 1.723779292417019200f, 1.723584791892246700f,\n    1.723390227996188600f,\n  1.723195600735998100f, 1.723000910118831300f, 1.722806156151846400f,\n    1.722611338842204000f,\n  1.722416458197066900f, 1.722221514223600100f, 1.722026506928971500f,\n    1.721831436320350800f,\n  1.721636302404910200f, 1.721441105189824000f, 1.721245844682269600f,\n    1.721050520889425600f,\n  1.720855133818473900f, 1.720659683476597900f, 1.720464169870984200f,\n    1.720268593008821100f,\n  1.720072952897299100f, 1.719877249543611900f, 1.719681482954954500f,\n    1.719485653138524800f,\n  1.719289760101522900f, 1.719093803851151400f, 1.718897784394614900f,\n    1.718701701739120400f,\n  1.718505555891877400f, 1.718309346860097600f, 1.718113074650995200f,\n    1.717916739271786500f,\n  1.717720340729689700f, 1.717523879031926500f, 1.717327354185719900f,\n    1.717130766198295700f,\n  1.716934115076881800f, 1.716737400828708400f, 1.716540623461008100f,\n    1.716343782981016200f,\n  1.716146879395969500f, 1.715949912713108100f, 1.715752882939673300f,\n    1.715555790082909900f,\n  1.715358634150064000f, 1.715161415148384500f, 1.714964133085122900f,\n    1.714766787967532600f,\n  1.714569379802868900f, 1.714371908598390800f, 1.714174374361358000f,\n    1.713976777099033700f,\n  1.713779116818682900f, 1.713581393527573000f, 1.713383607232973600f,\n    1.713185757942156800f,\n  1.712987845662396800f, 1.712789870400970700f, 1.712591832165157200f,\n    1.712393730962237500f,\n  1.712195566799495500f, 1.711997339684216700f, 1.711799049623689900f,\n    1.711600696625205300f,\n  1.711402280696055800f, 1.711203801843536700f, 1.711005260074945200f,\n    1.710806655397581600f,\n  1.710607987818747700f, 1.710409257345748100f, 1.710210463985889500f,\n    1.710011607746480600f,\n  1.709812688634833300f, 1.709613706658261100f, 1.709414661824080000f,\n    1.709215554139608400f,\n  1.709016383612166600f, 1.708817150249077900f, 1.708617854057667300f,\n    1.708418495045262300f,\n  1.708219073219193300f, 1.708019588586791700f, 1.707820041155392500f,\n    1.707620430932332400f,\n  1.707420757924950300f, 1.707221022140587900f, 1.707021223586588700f,\n    1.706821362270298600f,\n  1.706621438199066300f, 1.706421451380242000f, 1.706221401821179200f,\n    1.706021289529232800f,\n  1.705821114511760300f, 1.705620876776121600f, 1.705420576329679000f,\n    1.705220213179796900f,\n  1.705019787333842200f, 1.704819298799183700f, 1.704618747583193100f,\n    1.704418133693243800f,\n  1.704217457136711900f, 1.704016717920976000f, 1.703815916053416300f,\n    1.703615051541415900f,\n  1.703414124392360000f, 1.703213134613636100f, 1.703012082212634000f,\n    1.702810967196746000f,\n  1.702609789573366300f, 1.702408549349891500f, 1.702207246533721000f,\n    1.702005881132255800f,\n  1.701804453152900000f, 1.701602962603059100f, 1.701401409490141300f,\n    1.701199793821557300f,\n  1.700998115604720000f, 1.700796374847044300f, 1.700594571555948100f,\n    1.700392705738850400f,\n  1.700190777403173700f, 1.699988786556342300f, 1.699786733205783000f,\n    1.699584617358924400f,\n  1.699382439023197700f, 1.699180198206036600f, 1.698977894914877100f,\n    1.698775529157156700f,\n  1.698573100940316400f, 1.698370610271798800f, 1.698168057159048700f,\n    1.697965441609513300f,\n  1.697762763630642700f, 1.697560023229888200f, 1.697357220414704500f,\n    1.697154355192547900f,\n  1.696951427570877000f, 1.696748437557152900f, 1.696545385158839200f,\n    1.696342270383401200f,\n  1.696139093238307400f, 1.695935853731027600f, 1.695732551869034300f,\n    1.695529187659802400f,\n  1.695325761110809200f, 1.695122272229534000f, 1.694918721023458600f,\n    1.694715107500066800f,\n  1.694511431666845000f, 1.694307693531282000f, 1.694103893100868100f,\n    1.693900030383096900f,\n  1.693696105385463800f, 1.693492118115466500f, 1.693288068580604900f,\n    1.693083956788381500f,\n  1.692879782746300700f, 1.692675546461869900f, 1.692471247942597600f,\n    1.692266887195995600f,\n  1.692062464229577600f, 1.691857979050859900f, 1.691653431667360600f,\n    1.691448822086600400f,\n  1.691244150316102000f, 1.691039416363390800f, 1.690834620235994300f,\n    1.690629761941442100f,\n  1.690424841487266700f, 1.690219858881001800f, 1.690014814130184300f,\n    1.689809707242353200f,\n  1.689604538225049700f, 1.689399307085817300f, 1.689194013832201500f,\n    1.688988658471750600f,\n  1.688783241012014700f, 1.688577761460546800f, 1.688372219824901400f,\n    1.688166616112636100f,\n  1.687960950331309800f, 1.687755222488484600f, 1.687549432591724400f,\n    1.687343580648595700f,\n  1.687137666666667100f, 1.686931690653509000f, 1.686725652616694900f,\n    1.686519552563800400f,\n  1.686313390502403000f, 1.686107166440082600f, 1.685900880384421800f,\n    1.685694532343004600f,\n  1.685488122323418400f, 1.685281650333251900f, 1.685075116380096800f,\n    1.684868520471546600f,\n  1.684661862615197000f, 1.684455142818646700f, 1.684248361089495800f,\n    1.684041517435347400f,\n  1.683834611863806100f, 1.683627644382479800f, 1.683420614998977900f,\n    1.683213523720911800f,\n  1.683006370555896400f, 1.682799155511547600f, 1.682591878595484300f,\n    1.682384539815327400f,\n  1.682177139178700400f, 1.681969676693228600f, 1.681762152366539600f,\n    1.681554566206263900f,\n  1.681346918220033800f, 1.681139208415483700f, 1.680931436800250600f,\n    1.680723603381973500f,\n  1.680515708168294200f, 1.680307751166856300f, 1.680099732385305300f,\n    1.679891651831290100f,\n  1.679683509512460900f, 1.679475305436470600f, 1.679267039610974300f,\n    1.679058712043629300f,\n  1.678850322742095200f, 1.678641871714033900f, 1.678433358967109400f,\n    1.678224784508988400f,\n  1.678016148347339300f, 1.677807450489833300f, 1.677598690944143400f,\n    1.677389869717945000f,\n  1.677180986818916300f, 1.676972042254736900f, 1.676763036033089600f,\n    1.676553968161658600f,\n  1.676344838648130600f, 1.676135647500194700f, 1.675926394725542700f,\n    1.675717080331867900f,\n  1.675507704326866200f, 1.675298266718235900f, 1.675088767513677200f,\n    1.674879206720892900f,\n  1.674669584347587800f, 1.674459900401469700f, 1.674250154890247300f,\n    1.674040347821632800f,\n  1.673830479203340000f, 1.673620549043085500f, 1.673410557348587600f,\n    1.673200504127567000f,\n  1.672990389387746700f, 1.672780213136852300f, 1.672569975382611300f,\n    1.672359676132753500f,\n  1.672149315395010900f, 1.671938893177118000f, 1.671728409486811500f,\n    1.671517864331830000f,\n  1.671307257719914800f, 1.671096589658809500f, 1.670885860156259300f,\n    1.670675069220012500f,\n  1.670464216857819200f, 1.670253303077431800f, 1.670042327886605200f,\n    1.669831291293095900f,\n  1.669620193304663500f, 1.669409033929069500f, 1.669197813174077200f,\n    1.668986531047453000f,\n  1.668775187556965000f, 1.668563782710383600f, 1.668352316515481700f,\n    1.668140788980034400f,\n  1.667929200111818400f, 1.667717549918614100f, 1.667505838408202700f,\n    1.667294065588368100f,\n  1.667082231466896900f, 1.666870336051577800f, 1.666658379350201000f,\n    1.666446361370560000f,\n  1.666234282120450100f, 1.666022141607668600f, 1.665809939840015500f,\n    1.665597676825292700f,\n  1.665385352571304500f, 1.665172967085857700f, 1.664960520376761000f,\n    1.664748012451825200f,\n  1.664535443318863900f, 1.664322812985692600f, 1.664110121460129000f,\n    1.663897368749993400f,\n  1.663684554863107800f, 1.663471679807296800f, 1.663258743590387400f,\n    1.663045746220208600f,\n  1.662832687704591800f, 1.662619568051370500f, 1.662406387268380100f,\n    1.662193145363459100f,\n  1.661979842344447600f, 1.661766478219188300f, 1.661553052995526000f,\n    1.661339566681307600f,\n  1.661126019284382200f, 1.660912410812601900f, 1.660698741273819700f,\n    1.660485010675892400f,\n  1.660271219026677700f, 1.660057366334036300f, 1.659843452605831200f,\n    1.659629477849926800f,\n  1.659415442074190900f, 1.659201345286492900f, 1.658987187494704200f,\n    1.658772968706699000f,\n  1.658558688930353400f, 1.658344348173546300f, 1.658129946444157700f,\n    1.657915483750071100f,\n  1.657700960099171200f, 1.657486375499345900f, 1.657271729958484500f,\n    1.657057023484479000f,\n  1.656842256085223800f, 1.656627427768615000f, 1.656412538542551200f,\n    1.656197588414933600f,\n  1.655982577393664700f, 1.655767505486650500f, 1.655552372701798200f,\n    1.655337179047017700f,\n  1.655121924530220900f, 1.654906609159322500f, 1.654691232942238500f,\n    1.654475795886888300f,\n  1.654260298001192200f, 1.654044739293073900f, 1.653829119770458900f,\n    1.653613439441274500f,\n  1.653397698313451300f, 1.653181896394921000f, 1.652966033693617800f,\n    1.652750110217479100f,\n  1.652534125974443000f, 1.652318080972451400f, 1.652101975219447200f,\n    1.651885808723375900f,\n  1.651669581492185300f, 1.651453293533826000f, 1.651236944856249600f,\n    1.651020535467411200f,\n  1.650804065375267400f, 1.650587534587776700f, 1.650370943112901000f,\n    1.650154290958603300f,\n  1.649937578132849400f, 1.649720804643607400f, 1.649503970498847200f,\n    1.649287075706541200f,\n  1.649070120274664000f, 1.648853104211192700f, 1.648636027524106100f,\n    1.648418890221385400f,\n  1.648201692311014300f, 1.647984433800978600f, 1.647767114699266100f,\n    1.647549735013867000f,\n  1.647332294752774200f, 1.647114793923981600f, 1.646897232535486500f,\n    1.646679610595287900f,\n  1.646461928111387300f, 1.646244185091788400f, 1.646026381544496400f,\n    1.645808517477519700f,\n  1.645590592898868600f, 1.645372607816555400f, 1.645154562238594800f,\n    1.644936456173004000f,\n  1.644718289627801600f, 1.644500062611009300f, 1.644281775130650900f,\n    1.644063427194751600f,\n  1.643845018811340300f, 1.643626549988446200f, 1.643408020734102600f,\n    1.643189431056343700f,\n  1.642970780963206800f, 1.642752070462730800f, 1.642533299562957100f,\n    1.642314468271929300f,\n  1.642095576597693200f, 1.641876624548297000f, 1.641657612131790500f,\n    1.641438539356226500f,\n  1.641219406229659700f, 1.641000212760146800f, 1.640780958955747200f,\n    1.640561644824521700f,\n  1.640342270374534500f, 1.640122835613851100f, 1.639903340550539200f,\n    1.639683785192669600f,\n  1.639464169548314100f, 1.639244493625547900f, 1.639024757432447500f,\n    1.638804960977092100f,\n  1.638585104267562800f, 1.638365187311943400f, 1.638145210118319400f,\n    1.637925172694778800f,\n  1.637705075049411800f, 1.637484917190310800f, 1.637264699125570200f,\n    1.637044420863286600f,\n  1.636824082411559600f, 1.636603683778490100f, 1.636383224972181500f,\n    1.636162706000739300f,\n  1.635942126872271800f, 1.635721487594888400f, 1.635500788176702100f,\n    1.635280028625826900f,\n  1.635059208950379700f, 1.634838329158479200f, 1.634617389258246700f,\n    1.634396389257805700f,\n  1.634175329165281400f, 1.633954208988801700f, 1.633733028736496400f,\n    1.633511788416498000f,\n  1.633290488036940500f, 1.633069127605960800f, 1.632847707131697600f,\n    1.632626226622291700f,\n  1.632404686085886300f, 1.632183085530627200f, 1.631961424964661700f,\n    1.631739704396139900f,\n  1.631517923833213400f, 1.631296083284036900f, 1.631074182756766300f,\n    1.630852222259560700f,\n  1.630630201800580900f, 1.630408121387990000f, 1.630185981029953000f,\n    1.629963780734637400f,\n  1.629741520510213000f, 1.629519200364851800f, 1.629296820306727700f,\n    1.629074380344017100f,\n  1.628851880484898200f, 1.628629320737551700f, 1.628406701110161100f,\n    1.628184021610910700f,\n  1.627961282247988300f, 1.627738483029583100f, 1.627515623963887000f,\n    1.627292705059093700f,\n  1.627069726323399500f, 1.626846687765002700f, 1.626623589392103500f,\n    1.626400431212904800f,\n  1.626177213235611400f, 1.625953935468430500f, 1.625730597919571300f,\n    1.625507200597245500f,\n  1.625283743509666300f, 1.625060226665050000f, 1.624836650071614500f,\n    1.624613013737580000f,\n  1.624389317671169500f, 1.624165561880607000f, 1.623941746374119500f,\n    1.623717871159936300f,\n  1.623493936246288300f, 1.623269941641409400f, 1.623045887353534900f,\n    1.622821773390902700f,\n  1.622597599761753000f, 1.622373366474327800f, 1.622149073536871800f,\n    1.621924720957631300f,\n  1.621700308744855200f, 1.621475836906794500f, 1.621251305451702400f,\n    1.621026714387834300f,\n  1.620802063723447700f, 1.620577353466802700f, 1.620352583626160500f,\n    1.620127754209786100f,\n  1.619902865225945300f, 1.619677916682906700f, 1.619452908588941300f,\n    1.619227840952321800f,\n  1.619002713781323200f, 1.618777527084222800f, 1.618552280869300300f,\n    1.618326975144837000f,\n  1.618101609919117200f, 1.617876185200426600f, 1.617650700997053500f,\n    1.617425157317288200f,\n  1.617199554169423500f, 1.616973891561754200f, 1.616748169502577200f,\n    1.616522388000191500f,\n  1.616296547062898500f, 1.616070646699001800f, 1.615844686916807300f,\n    1.615618667724622700f,\n  1.615392589130757900f, 1.615166451143525300f, 1.614940253771239400f,\n    1.614713997022216900f,\n  1.614487680904776600f, 1.614261305427239200f, 1.614034870597928400f,\n    1.613808376425168900f,\n  1.613581822917288900f, 1.613355210082617800f, 1.613128537929487500f,\n    1.612901806466232200f,\n  1.612675015701188000f, 1.612448165642693400f, 1.612221256299089200f,\n    1.611994287678718100f,\n  1.611767259789925100f, 1.611540172641057200f, 1.611313026240463800f,\n    1.611085820596496600f,\n  1.610858555717509200f, 1.610631231611857800f, 1.610403848287899700f,\n    1.610176405753995800f,\n  1.609948904018508200f, 1.609721343089801600f, 1.609493722976242900f,\n    1.609266043686200700f,\n  1.609038305228046400f, 1.608810507610153100f, 1.608582650840896200f,\n    1.608354734928653800f,\n  1.608126759881805400f, 1.607898725708732900f, 1.607670632417820500f,\n    1.607442480017454700f,\n  1.607214268516024000f, 1.606985997921919000f, 1.606757668243532500f,\n    1.606529279489259600f,\n  1.606300831667497600f, 1.606072324786645500f, 1.605843758855105300f,\n    1.605615133881280700f,\n  1.605386449873577300f, 1.605157706840403300f, 1.604928904790168700f,\n    1.604700043731286200f,\n  1.604471123672170500f, 1.604242144621237800f, 1.604013106586907400f,\n    1.603784009577600100f,\n  1.603554853601739700f, 1.603325638667751000f, 1.603096364784061900f,\n    1.602867031959102100f,\n  1.602637640201303400f, 1.602408189519099800f, 1.602178679920927900f,\n    1.601949111415226000f,\n  1.601719484010434300f, 1.601489797714996000f, 1.601260052537355700f,\n    1.601030248485960900f,\n  1.600800385569260300f, 1.600570463795705700f, 1.600340483173750400f,\n    1.600110443711850300f,\n  1.599880345418463100f, 1.599650188302049100f, 1.599419972371070500f,\n    1.599189697633991400f,\n  1.598959364099278700f, 1.598728971775401000f, 1.598498520670828900f,\n    1.598268010794035900f,\n  1.598037442153496900f, 1.597806814757689200f, 1.597576128615092200f,\n    1.597345383734188000f,\n  1.597114580123460100f, 1.596883717791394800f, 1.596652796746479600f,\n    1.596421816997205500f,\n  1.596190778552064800f, 1.595959681419551800f, 1.595728525608163700f,\n    1.595497311126399300f,\n  1.595266037982759500f, 1.595034706185747500f, 1.594803315743869000f,\n    1.594571866665631700f,\n  1.594340358959544800f, 1.594108792634120600f, 1.593877167697873100f,\n    1.593645484159318200f,\n  1.593413742026974500f, 1.593181941309362400f, 1.592950082015004700f,\n    1.592718164152426000f,\n  1.592486187730153300f, 1.592254152756715600f, 1.592022059240644400f,\n    1.591789907190473100f,\n  1.591557696614737100f, 1.591325427521974100f, 1.591093099920724200f,\n    1.590860713819529400f,\n  1.590628269226933600f, 1.590395766151483400f, 1.590163204601727100f,\n    1.589930584586215500f,\n  1.589697906113501000f, 1.589465169192139100f, 1.589232373830686400f,\n    1.588999520037702300f,\n  1.588766607821748200f, 1.588533637191387400f, 1.588300608155185600f,\n    1.588067520721711000f,\n  1.587834374899533400f, 1.587601170697224600f, 1.587367908123358900f,\n    1.587134587186513000f,\n  1.586901207895265300f, 1.586667770258196600f, 1.586434274283889500f,\n    1.586200719980929200f,\n  1.585967107357902700f, 1.585733436423399000f, 1.585499707186010200f,\n    1.585265919654329300f,\n  1.585032073836952100f, 1.584798169742476400f, 1.584564207379502500f,\n    1.584330186756632200f,\n  1.584096107882470000f, 1.583861970765622100f, 1.583627775414697000f,\n    1.583393521838305700f,\n  1.583159210045060900f, 1.582924840043577400f, 1.582690411842472700f,\n    1.582455925450365600f,\n  1.582221380875877800f, 1.581986778127632700f, 1.581752117214255900f,\n    1.581517398144375800f,\n  1.581282620926621300f, 1.581047785569625400f, 1.580812892082021900f,\n    1.580577940472447200f,\n  1.580342930749539800f, 1.580107862921940700f, 1.579872736998292100f,\n    1.579637552987239100f,\n  1.579402310897428900f, 1.579167010737510600f, 1.578931652516135700f,\n    1.578696236241957200f,\n  1.578460761923630800f, 1.578225229569814700f, 1.577989639189168100f,\n    1.577753990790353500f,\n  1.577518284382034800f, 1.577282519972878200f, 1.577046697571552000f,\n    1.576810817186727000f,\n  1.576574878827075700f, 1.576338882501273000f, 1.576102828217995600f,\n    1.575866715985922500f,\n  1.575630545813735200f, 1.575394317710116600f, 1.575158031683752300f,\n    1.574921687743330300f,\n  1.574685285897539800f, 1.574448826155072400f, 1.574212308524622500f,\n    1.573975733014886000f,\n  1.573739099634561500f, 1.573502408392348600f, 1.573265659296950300f,\n    1.573028852357070800f,\n  1.572791987581417100f, 1.572555064978698100f, 1.572318084557624800f,\n    1.572081046326909900f,\n  1.571843950295269000f, 1.571606796471419100f, 1.571369584864080100f,\n    1.571132315481973200f,\n  1.570894988333822400f, 1.570657603428353300f, 1.570420160774294000f,\n    1.570182660380374600f,\n  1.569945102255327200f, 1.569707486407886600f, 1.569469812846788500f,\n    1.569232081580771900f,\n  1.568994292618577400f, 1.568756445968948000f, 1.568518541640628400f,\n    1.568280579642366000f,\n  1.568042559982909500f, 1.567804482671010500f, 1.567566347715422500f,\n    1.567328155124900800f,\n  1.567089904908203200f, 1.566851597074089500f, 1.566613231631321500f,\n    1.566374808588663300f,\n  1.566136327954881000f, 1.565897789738742900f, 1.565659193949019400f,\n    1.565420540594482800f,\n  1.565181829683907700f, 1.564943061226071100f, 1.564704235229751500f,\n    1.564465351703730400f,\n  1.564226410656790000f, 1.563987412097716200f, 1.563748356035296000f,\n    1.563509242478319000f,\n  1.563270071435576500f, 1.563030842915862100f, 1.562791556927971800f,\n    1.562552213480703300f,\n  1.562312812582856500f, 1.562073354243233700f, 1.561833838470639200f,\n    1.561594265273878800f,\n  1.561354634661761300f, 1.561114946643096900f, 1.560875201226698900f,\n    1.560635398421381400f,\n  1.560395538235961800f, 1.560155620679258400f, 1.559915645760092900f,\n    1.559675613487288200f,\n  1.559435523869669500f, 1.559195376916064700f, 1.558955172635302800f,\n    1.558714911036215700f,\n  1.558474592127637100f, 1.558234215918402600f, 1.557993782417350400f,\n    1.557753291633320500f,\n  1.557512743575155000f, 1.557272138251698300f, 1.557031475671796400f,\n    1.556790755844298400f,\n  1.556549978778054300f, 1.556309144481917300f, 1.556068252964741600f,\n    1.555827304235384500f,\n  1.555586298302704900f, 1.555345235175563900f, 1.555104114862824600f,\n    1.554862937373352500f,\n  1.554621702716015000f, 1.554380410899681300f, 1.554139061933223200f,\n    1.553897655825514600f,\n  1.553656192585431100f, 1.553414672221850700f, 1.553173094743653300f,\n    1.552931460159721100f,\n  1.552689768478938500f, 1.552448019710191300f, 1.552206213862368500f,\n    1.551964350944360100f,\n  1.551722430965059000f, 1.551480453933359800f, 1.551238419858159700f,\n    1.550996328748356800f,\n  1.550754180612852900f, 1.550511975460550500f, 1.550269713300355100f,\n    1.550027394141174000f,\n  1.549785017991916400f, 1.549542584861493900f, 1.549300094758820000f,\n    1.549057547692810600f,\n  1.548814943672383300f, 1.548572282706457900f, 1.548329564803956300f,\n    1.548086789973802700f,\n  1.547843958224923000f, 1.547601069566245900f, 1.547358124006701400f,\n    1.547115121555221700f,\n  1.546872062220741700f, 1.546628946012197800f, 1.546385772938528600f,\n    1.546142543008675300f,\n  1.545899256231580300f, 1.545655912616188800f, 1.545412512171447700f,\n    1.545169054906306200f,\n  1.544925540829715600f, 1.544681969950629300f, 1.544438342278002600f,\n    1.544194657820792800f,\n  1.543950916587959700f, 1.543707118588464800f, 1.543463263831272000f,\n    1.543219352325347200f,\n  1.542975384079658300f, 1.542731359103175300f, 1.542487277404870100f,\n    1.542243138993717000f,\n  1.541998943878692300f, 1.541754692068774600f, 1.541510383572944000f,\n    1.541266018400183200f,\n  1.541021596559476700f, 1.540777118059811100f, 1.540532582910175500f,\n    1.540287991119560600f,\n  1.540043342696959100f, 1.539798637651366400f, 1.539553875991779300f,\n    1.539309057727197300f,\n  1.539064182866621400f, 1.538819251419055100f, 1.538574263393503800f,\n    1.538329218798974800f,\n  1.538084117644477900f, 1.537838959939025200f, 1.537593745691629500f,\n    1.537348474911307300f,\n  1.537103147607076200f, 1.536857763787956400f, 1.536612323462969800f,\n    1.536366826641140800f,\n  1.536121273331495300f, 1.535875663543061700f, 1.535629997284870400f,\n    1.535384274565953600f,\n  1.535138495395346400f, 1.534892659782085100f, 1.534646767735208000f,\n    1.534400819263756400f,\n  1.534154814376772700f, 1.533908753083302200f, 1.533662635392391700f,\n    1.533416461313090100f,\n  1.533170230854448400f, 1.532923944025520200f, 1.532677600835360600f,\n    1.532431201293027000f,\n  1.532184745407578500f, 1.531938233188077100f, 1.531691664643585900f,\n    1.531445039783170500f,\n  1.531198358615898800f, 1.530951621150840700f, 1.530704827397067800f,\n    1.530457977363654000f,\n  1.530211071059675200f, 1.529964108494209700f, 1.529717089676337500f,\n    1.529470014615140800f,\n  1.529222883319703700f, 1.528975695799112500f, 1.528728452062455600f,\n    1.528481152118823700f,\n  1.528233795977309400f, 1.527986383647006500f, 1.527738915137012400f,\n    1.527491390456425600f,\n  1.527243809614346600f, 1.526996172619878900f, 1.526748479482126700f,\n    1.526500730210197200f,\n  1.526252924813199500f, 1.526005063300244900f, 1.525757145680446200f,\n    1.525509171962918800f,\n  1.525261142156779900f, 1.525013056271149000f, 1.524764914315147200f,\n    1.524516716297898300f,\n  1.524268462228527900f, 1.524020152116163200f, 1.523771785969934000f,\n    1.523523363798972000f,\n  1.523274885612411200f, 1.523026351419387100f, 1.522777761229038100f,\n    1.522529115050503600f,\n  1.522280412892925900f, 1.522031654765448900f, 1.521782840677218700f,\n    1.521533970637383800f,\n  1.521285044655094300f, 1.521036062739502300f, 1.520787024899762100f,\n    1.520537931145030400f,\n  1.520288781484465700f, 1.520039575927228500f, 1.519790314482481100f,\n    1.519540997159388300f,\n  1.519291623967116600f, 1.519042194914835200f, 1.518792710011714500f,\n    1.518543169266927600f,\n  1.518293572689648900f, 1.518043920289055900f, 1.517794212074327500f,\n    1.517544448054644500f,\n  1.517294628239190400f, 1.517044752637150000f, 1.516794821257710500f,\n    1.516544834110061600f,\n  1.516294791203394200f, 1.516044692546901800f, 1.515794538149779700f,\n    1.515544328021225500f,\n  1.515294062170438700f, 1.515043740606620800f, 1.514793363338975600f,\n    1.514542930376708600f,\n  1.514292441729027300f, 1.514041897405141700f, 1.513791297414263800f,\n    1.513540641765606800f,\n  1.513289930468387300f, 1.513039163531823000f, 1.512788340965133500f,\n    1.512537462777541200f,\n  1.512286528978270300f, 1.512035539576546600f, 1.511784494581598600f,\n    1.511533394002656100f,\n  1.511282237848951400f, 1.511031026129719100f, 1.510779758854195400f,\n    1.510528436031618900f,\n  1.510277057671229400f, 1.510025623782270000f, 1.509774134373984800f,\n    1.509522589455620600f,\n  1.509270989036425800f, 1.509019333125651200f, 1.508767621732549400f,\n    1.508515854866375100f,\n  1.508264032536385000f, 1.508012154751837700f, 1.507760221521994700f,\n    1.507508232856118200f,\n  1.507256188763473200f, 1.507004089253327000f, 1.506751934334948000f,\n    1.506499724017607900f,\n  1.506247458310579400f, 1.505995137223137500f, 1.505742760764559300f,\n    1.505490328944124200f,\n  1.505237841771113200f, 1.504985299254809800f, 1.504732701404498900f,\n    1.504480048229468000f,\n  1.504227339739006500f, 1.503974575942405700f, 1.503721756848958700f,\n    1.503468882467961600f,\n  1.503215952808711500f, 1.502962967880507600f, 1.502709927692651900f,\n    1.502456832254447600f,\n  1.502203681575200700f, 1.501950475664218600f, 1.501697214530810700f,\n    1.501443898184289200f,\n  1.501190526633967600f, 1.500937099889161600f, 1.500683617959188900f,\n    1.500430080853369500f,\n  1.500176488581024900f, 1.499922841151479600f, 1.499669138574058800f,\n    1.499415380858090800f,\n  1.499161568012905300f, 1.498907700047834600f, 1.498653776972212600f,\n    1.498399798795375000f,\n  1.498145765526660300f, 1.497891677175408500f, 1.497637533750961300f,\n    1.497383335262663300f,\n  1.497129081719860400f, 1.496874773131900800f, 1.496620409508134800f,\n    1.496365990857914600f,\n  1.496111517190594300f, 1.495856988515530400f, 1.495602404842080800f,\n    1.495347766179606400f,\n  1.495093072537469100f, 1.494838323925033400f, 1.494583520351665500f,\n    1.494328661826734200f,\n  1.494073748359609600f, 1.493818779959664300f, 1.493563756636272500f,\n    1.493308678398810800f,\n  1.493053545256657800f, 1.492798357219194100f, 1.492543114295801900f,\n    1.492287816495866200f,\n  1.492032463828773200f, 1.491777056303911700f, 1.491521593930672100f,\n    1.491266076718446900f,\n  1.491010504676631500f, 1.490754877814621800f, 1.490499196141816600f,\n    1.490243459667616600f,\n  1.489987668401424800f, 1.489731822352645500f, 1.489475921530685900f,\n    1.489219965944954300f,\n  1.488963955604861500f, 1.488707890519820600f, 1.488451770699245900f,\n    1.488195596152554800f,\n  1.487939366889165600f, 1.487683082918499300f, 1.487426744249978400f,\n    1.487170350893028500f,\n  1.486913902857075700f, 1.486657400151549600f, 1.486400842785880100f,\n    1.486144230769501000f,\n  1.485887564111846500f, 1.485630842822354100f, 1.485374066910462500f,\n    1.485117236385612200f,\n  1.484860351257246500f, 1.484603411534810300f, 1.484346417227750700f,\n    1.484089368345516300f,\n  1.483832264897558400f, 1.483575106893329600f, 1.483317894342285100f,\n    1.483060627253882000f,\n  1.482803305637578900f, 1.482545929502837100f, 1.482288498859119400f,\n    1.482031013715890700f,\n  1.481773474082618300f, 1.481515879968770900f, 1.481258231383819800f,\n    1.481000528337237800f,\n  1.480742770838499900f, 1.480484958897083200f, 1.480227092522466500f,\n    1.479969171724131200f,\n  1.479711196511560100f, 1.479453166894238100f, 1.479195082881652200f,\n    1.478936944483291600f,\n  1.478678751708647000f, 1.478420504567211900f, 1.478162203068481100f,\n    1.477903847221951400f,\n  1.477645437037121900f, 1.477386972523493800f, 1.477128453690569800f,\n    1.476869880547855300f,\n  1.476611253104856700f, 1.476352571371083700f, 1.476093835356046700f,\n    1.475835045069259000f,\n  1.475576200520235500f, 1.475317301718493300f, 1.475058348673551100f,\n    1.474799341394929900f,\n  1.474540279892153000f, 1.474281164174744900f, 1.474021994252233000f,\n    1.473762770134145800f,\n  1.473503491830014300f, 1.473244159349371700f, 1.472984772701752900f,\n    1.472725331896694400f,\n  1.472465836943735600f, 1.472206287852416900f, 1.471946684632281500f,\n    1.471687027292874400f,\n  1.471427315843742100f, 1.471167550294433700f, 1.470907730654499800f,\n    1.470647856933493300f,\n  1.470387929140969200f, 1.470127947286484100f, 1.469867911379596900f,\n    1.469607821429868500f,\n  1.469347677446861500f, 1.469087479440140300f, 1.468827227419272200f,\n    1.468566921393825700f,\n  1.468306561373371900f, 1.468046147367482600f, 1.467785679385733300f,\n    1.467525157437700200f,\n  1.467264581532962100f, 1.467003951681099800f, 1.466743267891695800f,\n    1.466482530174334500f,\n  1.466221738538602500f, 1.465960892994088800f, 1.465699993550383400f,\n    1.465439040217079400f,\n  1.465178033003770700f, 1.464916971920054100f, 1.464655856975527900f,\n    1.464394688179792900f,\n  1.464133465542451200f, 1.463872189073107500f, 1.463610858781367900f,\n    1.463349474676840700f,\n  1.463088036769136600f, 1.462826545067867700f, 1.462564999582648600f,\n    1.462303400323095000f,\n  1.462041747298825900f, 1.461780040519460800f, 1.461518279994622200f,\n    1.461256465733934400f,\n  1.460994597747023600f, 1.460732676043517800f, 1.460470700633046800f,\n    1.460208671525243400f,\n  1.459946588729741100f, 1.459684452256176300f, 1.459422262114186800f,\n    1.459160018313412400f,\n  1.458897720863495500f, 1.458635369774079500f, 1.458372965054810700f,\n    1.458110506715337000f,\n  1.457847994765308200f, 1.457585429214375700f, 1.457322810072193800f,\n    1.457060137348418000f,\n  1.456797411052706200f, 1.456534631194717800f, 1.456271797784114900f,\n    1.456008910830560500f,\n  1.455745970343720800f, 1.455482976333263100f, 1.455219928808857200f,\n    1.454956827780174100f,\n  1.454693673256887600f, 1.454430465248673300f, 1.454167203765208000f,\n    1.453903888816171900f,\n  1.453640520411245900f, 1.453377098560113100f, 1.453113623272459100f,\n    1.452850094557971000f,\n  1.452586512426338000f, 1.452322876887251400f, 1.452059187950404100f,\n    1.451795445625491300f,\n  1.451531649922210200f, 1.451267800850259500f, 1.451003898419340500f,\n    1.450739942639155800f,\n  1.450475933519410400f, 1.450211871069811300f, 1.449947755300067500f,\n    1.449683586219889400f,\n  1.449419363838989800f, 1.449155088167083600f, 1.448890759213887100f,\n    1.448626376989119400f,\n  1.448361941502500900f, 1.448097452763754000f, 1.447832910782603100f,\n    1.447568315568775100f,\n  1.447303667131997900f, 1.447038965482002200f, 1.446774210628520200f,\n    1.446509402581286400f,\n  1.446244541350036700f, 1.445979626944509300f, 1.445714659374444500f,\n    1.445449638649584500f,\n  1.445184564779673500f, 1.444919437774456700f, 1.444654257643682900f,\n    1.444389024397101600f,\n  1.444123738044464900f, 1.443858398595526400f, 1.443593006060042100f,\n    1.443327560447769600f,\n  1.443062061768468400f, 1.442796510031900500f, 1.442530905247829200f,\n    1.442265247426020200f,\n  1.441999536576240800f, 1.441733772708260600f, 1.441467955831850800f,\n    1.441202085956784900f,\n  1.440936163092837900f, 1.440670187249787600f, 1.440404158437412500f,\n    1.440138076665494100f,\n  1.439871941943815300f, 1.439605754282161400f, 1.439339513690319100f,\n    1.439073220178077400f,\n  1.438806873755226900f, 1.438540474431560600f, 1.438274022216873500f,\n    1.438007517120961900f,\n  1.437740959153624500f, 1.437474348324662100f, 1.437207684643876800f,\n    1.436940968121073600f,\n  1.436674198766058500f, 1.436407376588640000f, 1.436140501598628400f,\n    1.435873573805835900f,\n  1.435606593220076600f, 1.435339559851166500f, 1.435072473708924000f,\n    1.434805334803169100f,\n  1.434538143143723200f, 1.434270898740410700f, 1.434003601603057300f,\n    1.433736251741490700f,\n  1.433468849165540500f, 1.433201393885038500f, 1.432933885909818000f,\n    1.432666325249714700f,\n  1.432398711914566200f, 1.432131045914211600f, 1.431863327258492400f,\n    1.431595555957251700f,\n  1.431327732020334800f, 1.431059855457588600f, 1.430791926278862400f,\n    1.430523944494007400f,\n  1.430255910112876000f, 1.429987823145323100f, 1.429719683601205800f,\n    1.429451491490382900f,\n  1.429183246822714800f, 1.428914949608064200f, 1.428646599856295400f,\n    1.428378197577275100f,\n  1.428109742780871800f, 1.427841235476955400f, 1.427572675675398600f,\n    1.427304063386075200f,\n  1.427035398618861500f, 1.426766681383635500f, 1.426497911690277000f,\n    1.426229089548668200f,\n  1.425960214968693000f, 1.425691287960236600f, 1.425422308533187200f,\n    1.425153276697434000f,\n  1.424884192462868800f, 1.424615055839385300f, 1.424345866836878200f,\n    1.424076625465245500f,\n  1.423807331734385800f, 1.423537985654200800f, 1.423268587234593400f,\n    1.422999136485468600f,\n  1.422729633416733200f, 1.422460078038296300f, 1.422190470360068300f,\n    1.421920810391962500f,\n  1.421651098143893000f, 1.421381333625776600f, 1.421111516847531700f,\n    1.420841647819078600f,\n  1.420571726550339700f, 1.420301753051239400f, 1.420031727331703800f,\n    1.419761649401660500f,\n  1.419491519271040000f, 1.419221336949774100f, 1.418951102447796800f,\n    1.418680815775043500f,\n  1.418410476941452100f, 1.418140085956961900f, 1.417869642831514700f,\n    1.417599147575054000f,\n  1.417328600197524900f, 1.417058000708874700f, 1.416787349119052600f,\n    1.416516645438009600f,\n  1.416245889675698900f, 1.415975081842075300f, 1.415704221947095700f,\n    1.415433310000718600f,\n  1.415162346012905000f, 1.414891329993617200f, 1.414620261952819600f,\n    1.414349141900479000f,\n  1.414077969846563500f, 1.413806745801043500f, 1.413535469773890700f,\n    1.413264141775079300f,\n  1.412992761814585400f, 1.412721329902386900f, 1.412449846048463600f,\n    1.412178310262796900f,\n  1.411906722555370500f, 1.411635082936170100f, 1.411363391415182900f,\n    1.411091648002398500f,\n  1.410819852707807700f, 1.410548005541404100f, 1.410276106513182400f,\n    1.410004155633139500f,\n  1.409732152911274500f, 1.409460098357588200f, 1.409187991982083100f,\n    1.408915833794763800f,\n  1.408643623805636800f, 1.408371362024710500f, 1.408099048461995300f,\n    1.407826683127503000f,\n  1.407554266031248100f, 1.407281797183246500f, 1.407009276593515800f,\n    1.406736704272076400f,\n  1.406464080228949600f, 1.406191404474159000f, 1.405918677017730100f,\n    1.405645897869690400f,\n  1.405373067040069300f, 1.405100184538898000f, 1.404827250376209400f,\n    1.404554264562038400f,\n  1.404281227106422400f, 1.404008138019399800f, 1.403734997311011600f,\n    1.403461804991300100f,\n  1.403188561070310100f, 1.402915265558087700f, 1.402641918464681400f,\n    1.402368519800141200f,\n  1.402095069574519800f, 1.401821567797870300f, 1.401548014480249000f,\n    1.401274409631713600f,\n  1.401000753262323900f, 1.400727045382141400f, 1.400453286001229800f,\n    1.400179475129653700f,\n  1.399905612777481200f, 1.399631698954780800f, 1.399357733671623900f,\n    1.399083716938083600f,\n  1.398809648764234100f, 1.398535529160152400f, 1.398261358135917300f,\n    1.397987135701609200f,\n  1.397712861867310300f, 1.397438536643105000f, 1.397164160039079200f,\n    1.396889732065321300f,\n  1.396615252731921100f, 1.396340722048970300f, 1.396066140026562800f,\n    1.395791506674794100f,\n  1.395516822003761700f, 1.395242086023564800f, 1.394967298744304900f,\n    1.394692460176085300f,\n  1.394417570329010700f, 1.394142629213188000f, 1.393867636838725900f,\n    1.393592593215735600f,\n  1.393317498354329300f, 1.393042352264621600f, 1.392767154956728400f,\n    1.392491906440768600f,\n  1.392216606726861800f, 1.391941255825130100f, 1.391665853745697400f,\n    1.391390400498689700f,\n  1.391114896094234100f, 1.390839340542460600f, 1.390563733853500200f,\n    1.390288076037486500f,\n  1.390012367104554600f, 1.389736607064841100f, 1.389460795928485500f,\n    1.389184933705628300f,\n  1.388909020406412100f, 1.388633056040981600f, 1.388357040619483200f,\n    1.388080974152065200f,\n  1.387804856648877600f, 1.387528688120072600f, 1.387252468575804100f,\n    1.386976198026228100f,\n  1.386699876481501900f, 1.386423503951785200f, 1.386147080447239600f,\n    1.385870605978028100f,\n  1.385594080554316100f, 1.385317504186270900f, 1.385040876884061000f,\n    1.384764198657857200f,\n  1.384487469517832200f, 1.384210689474160600f, 1.383933858537019100f,\n    1.383656976716585600f,\n  1.383380044023040400f, 1.383103060466565300f, 1.382826026057344600f,\n    1.382548940805563800f,\n  1.382271804721410600f, 1.381994617815074400f, 1.381717380096746800f,\n    1.381440091576620700f,\n  1.381162752264891500f, 1.380885362171756300f, 1.380607921307413400f,\n    1.380330429682064000f,\n  1.380052887305910400f, 1.379775294189157000f, 1.379497650342010400f,\n    1.379219955774678700f,\n  1.378942210497371600f, 1.378664414520301500f, 1.378386567853681700f,\n    1.378108670507728300f,\n  1.377830722492658500f, 1.377552723818691500f, 1.377274674496048700f,\n    1.376996574534953300f,\n  1.376718423945630000f, 1.376440222738305700f, 1.376161970923209400f,\n    1.375883668510570900f,\n  1.375605315510623200f, 1.375326911933600200f, 1.375048457789738400f,\n    1.374769953089275400f,\n  1.374491397842451100f, 1.374212792059507100f, 1.373934135750687100f,\n    1.373655428926236400f,\n  1.373376671596402400f, 1.373097863771434200f, 1.372819005461582500f,\n    1.372540096677100200f,\n  1.372261137428242300f, 1.371982127725264800f, 1.371703067578426700f,\n    1.371423956997988000f,\n  1.371144795994210500f, 1.370865584577358300f, 1.370586322757697500f,\n    1.370307010545495500f,\n  1.370027647951022100f, 1.369748234984548000f, 1.369468771656347200f,\n    1.369189257976694200f,\n  1.368909693955866000f, 1.368630079604142000f, 1.368350414931802000f,\n    1.368070699949128800f,\n  1.367790934666406600f, 1.367511119093921800f, 1.367231253241962200f,\n    1.366951337120818000f,\n  1.366671370740780500f, 1.366391354112143500f, 1.366111287245202400f,\n    1.365831170150254300f,\n  1.365551002837598600f, 1.365270785317536100f, 1.364990517600369400f,\n    1.364710199696403300f,\n  1.364429831615944200f, 1.364149413369300600f, 1.363868944966782900f,\n    1.363588426418702600f,\n  1.363307857735373900f, 1.363027238927112300f, 1.362746570004235400f,\n    1.362465850977062900f,\n  1.362185081855915600f, 1.361904262651116900f, 1.361623393372991300f,\n    1.361342474031866000f,\n  1.361061504638069400f, 1.360780485201932300f, 1.360499415733786400f,\n    1.360218296243966200f,\n  1.359937126742807300f, 1.359655907240648000f, 1.359374637747827700f,\n    1.359093318274687800f,\n  1.358811948831571500f, 1.358530529428824400f, 1.358249060076792900f,\n    1.357967540785826300f,\n  1.357685971566275200f, 1.357404352428492000f, 1.357122683382830900f,\n    1.356840964439648200f,\n  1.356559195609301700f, 1.356277376902151900f, 1.355995508328559500f,\n    1.355713589898888800f,\n  1.355431621623504700f, 1.355149603512774400f, 1.354867535577067200f,\n    1.354585417826753800f,\n  1.354303250272206500f, 1.354021032923800300f, 1.353738765791911100f,\n    1.353456448886917200f,\n  1.353174082219199100f, 1.352891665799137900f, 1.352609199637117500f,\n    1.352326683743523300f,\n  1.352044118128742600f, 1.351761502803164900f, 1.351478837777180700f,\n    1.351196123061183100f,\n  1.350913358665566400f, 1.350630544600727200f, 1.350347680877063800f,\n    1.350064767504976400f,\n  1.349781804494866600f, 1.349498791857138400f, 1.349215729602197400f,\n    1.348932617740450600f,\n  1.348649456282307700f, 1.348366245238179500f, 1.348082984618478800f,\n    1.347799674433620500f,\n  1.347516314694020800f, 1.347232905410098200f, 1.346949446592273100f,\n    1.346665938250967100f,\n  1.346382380396604000f, 1.346098773039609700f, 1.345815116190411300f,\n    1.345531409859438200f,\n  1.345247654057121700f, 1.344963848793894200f, 1.344679994080190800f,\n    1.344396089926448000f,\n  1.344112136343103900f, 1.343828133340598800f, 1.343544080929374800f,\n    1.343259979119875600f,\n  1.342975827922546600f, 1.342691627347835500f, 1.342407377406191500f,\n    1.342123078108065700f,\n  1.341838729463910900f, 1.341554331484181600f, 1.341269884179334700f,\n    1.340985387559828100f,\n  1.340700841636122400f, 1.340416246418678800f, 1.340131601917961900f,\n    1.339846908144436600f,\n  1.339562165108570700f, 1.339277372820833400f, 1.338992531291695500f,\n    1.338707640531629800f,\n  1.338422700551110900f, 1.338137711360615200f, 1.337852672970621300f,\n    1.337567585391608900f,\n  1.337282448634059800f, 1.336997262708457900f, 1.336712027625288600f,\n    1.336426743395039000f,\n  1.336141410028198500f, 1.335856027535258000f, 1.335570595926709700f,\n    1.335285115213048500f,\n  1.334999585404770700f, 1.334714006512374400f, 1.334428378546359500f,\n    1.334142701517227600f,\n  1.333856975435482300f, 1.333571200311629100f, 1.333285376156174700f,\n    1.332999502979628700f,\n  1.332713580792501500f, 1.332427609605305400f, 1.332141589428554900f,\n    1.331855520272766200f,\n  1.331569402148457400f, 1.331283235066148100f, 1.330997019036359800f,\n    1.330710754069615700f,\n  1.330424440176441300f, 1.330138077367363200f, 1.329851665652910500f,\n    1.329565205043613800f,\n  1.329278695550004700f, 1.328992137182618100f, 1.328705529951989400f,\n    1.328418873868656900f,\n  1.328132168943159800f, 1.327845415186039000f, 1.327558612607838500f,\n    1.327271761219102500f,\n  1.326984861030378000f, 1.326697912052213500f, 1.326410914295159400f,\n    1.326123867769767500f,\n  1.325836772486591800f, 1.325549628456188100f, 1.325262435689113600f,\n    1.324975194195928000f,\n  1.324687903987191900f, 1.324400565073468300f, 1.324113177465321900f,\n    1.323825741173318700f,\n  1.323538256208027800f, 1.323250722580018500f, 1.322963140299862500f,\n    1.322675509378133900f,\n  1.322387829825407700f, 1.322100101652261100f, 1.321812324869273500f,\n    1.321524499487024800f,\n  1.321236625516098100f, 1.320948702967077400f, 1.320660731850549000f,\n    1.320372712177100700f,\n  1.320084643957322400f, 1.319796527201805300f, 1.319508361921142500f,\n    1.319220148125929100f,\n  1.318931885826762000f, 1.318643575034239800f, 1.318355215758962900f,\n    1.318066808011533200f,\n  1.317778351802554800f, 1.317489847142633300f, 1.317201294042376300f,\n    1.316912692512393300f,\n  1.316624042563294900f, 1.316335344205694200f, 1.316046597450205800f,\n    1.315757802307445900f,\n  1.315468958788033000f, 1.315180066902586800f, 1.314891126661728900f,\n    1.314602138076083300f,\n  1.314313101156274800f, 1.314024015912930600f, 1.313734882356679900f,\n    1.313445700498152800f,\n  1.313156470347981900f, 1.312867191916801100f, 1.312577865215246900f,\n    1.312288490253956900f,\n  1.311999067043570200f, 1.311709595594728000f, 1.311420075918073900f,\n    1.311130508024252400f,\n  1.310840891923910100f, 1.310551227627695400f, 1.310261515146258200f,\n    1.309971754490250700f,\n  1.309681945670326400f, 1.309392088697140900f, 1.309102183581351200f,\n    1.308812230333616500f,\n  1.308522228964597500f, 1.308232179484956500f, 1.307942081905358000f,\n    1.307651936236467800f,\n  1.307361742488954300f, 1.307071500673486800f, 1.306781210800736200f,\n    1.306490872881376200f,\n  1.306200486926081700f, 1.305910052945529200f, 1.305619570950396800f,\n    1.305329040951365100f,\n  1.305038462959116100f, 1.304747836984333300f, 1.304457163037702200f,\n    1.304166441129910300f,\n  1.303875671271646400f, 1.303584853473601200f, 1.303293987746467300f,\n    1.303003074100939100f,\n  1.302712112547712800f, 1.302421103097485900f, 1.302130045760958100f,\n    1.301838940548830600f,\n  1.301547787471806900f, 1.301256586540591600f, 1.300965337765891600f,\n    1.300674041158414800f,\n  1.300382696728871400f, 1.300091304487973800f, 1.299799864446435200f,\n    1.299508376614971500f,\n  1.299216841004299200f, 1.298925257625137800f, 1.298633626488207500f,\n    1.298341947604231300f,\n  1.298050220983932900f, 1.297758446638038700f, 1.297466624577275900f,\n    1.297174754812374400f,\n  1.296882837354065100f, 1.296590872213081200f, 1.296298859400157700f,\n    1.296006798926030200f,\n  1.295714690801437600f, 1.295422535037119800f, 1.295130331643818500f,\n    1.294838080632277000f,\n  1.294545782013240900f, 1.294253435797456900f, 1.293961041995673700f,\n    1.293668600618642000f,\n  1.293376111677113900f, 1.293083575181843500f, 1.292790991143586200f,\n    1.292498359573099700f,\n  1.292205680481143500f, 1.291912953878477900f, 1.291620179775866400f,\n    1.291327358184073200f,\n  1.291034489113864100f, 1.290741572576007400f, 1.290448608581273000f,\n    1.290155597140431700f,\n  1.289862538264257700f, 1.289569431963524900f, 1.289276278249010600f,\n    1.288983077131493000f,\n  1.288689828621752300f, 1.288396532730570400f, 1.288103189468731400f,\n    1.287809798847019800f,\n  1.287516360876223500f, 1.287222875567130900f, 1.286929342930532800f,\n    1.286635762977221800f,\n  1.286342135717991600f, 1.286048461163638000f, 1.285754739324958900f,\n    1.285460970212753500f,\n  1.285167153837822900f, 1.284873290210969900f, 1.284579379342998700f,\n    1.284285421244715900f,\n  1.283991415926929400f, 1.283697363400448900f, 1.283403263676086100f,\n    1.283109116764654000f,\n  1.282814922676967400f, 1.282520681423843000f, 1.282226393016099500f,\n    1.281932057464557000f,\n  1.281637674780037100f, 1.281343244973363700f, 1.281048768055361900f,\n    1.280754244036858900f,\n  1.280459672928683500f, 1.280165054741666300f, 1.279870389486639400f,\n    1.279575677174437100f,\n  1.279280917815894600f, 1.278986111421849900f, 1.278691258003142000f,\n    1.278396357570611900f,\n  1.278101410135101800f, 1.277806415707456700f, 1.277511374298522200f,\n    1.277216285919146500f,\n  1.276921150580179200f, 1.276625968292471000f, 1.276330739066875400f,\n    1.276035462914247000f,\n  1.275740139845442400f, 1.275444769871319600f, 1.275149353002738700f,\n    1.274853889250561200f,\n  1.274558378625650200f, 1.274262821138871300f, 1.273967216801090900f,\n    1.273671565623178100f,\n  1.273375867616002300f, 1.273080122790436000f, 1.272784331157352800f,\n    1.272488492727628100f,\n  1.272192607512139300f, 1.271896675521764900f, 1.271600696767385400f,\n    1.271304671259883200f,\n  1.271008599010142500f, 1.270712480029048800f, 1.270416314327489800f,\n    1.270120101916354600f,\n  1.269823842806533800f, 1.269527537008920300f, 1.269231184534408200f,\n    1.268934785393893700f,\n  1.268638339598274500f, 1.268341847158450200f, 1.268045308085321800f,\n    1.267748722389792100f,\n  1.267452090082765900f, 1.267155411175149500f, 1.266858685677851000f,\n    1.266561913601780100f,\n  1.266265094957848000f, 1.265968229756968100f, 1.265671318010055400f,\n    1.265374359728026500f,\n  1.265077354921799300f, 1.264780303602294200f, 1.264483205780432700f,\n    1.264186061467138500f,\n  1.263888870673336400f, 1.263591633409954000f, 1.263294349687918800f,\n    1.262997019518161700f,\n  1.262699642911614600f, 1.262402219879211300f, 1.262104750431887000f,\n    1.261807234580578900f,\n  1.261509672336225600f, 1.261212063709767900f, 1.260914408712147800f,\n    1.260616707354309500f,\n  1.260318959647198400f, 1.260021165601761900f, 1.259723325228949000f,\n    1.259425438539710300f,\n  1.259127505544998600f, 1.258829526255768000f, 1.258531500682973800f,\n    1.258233428837574300f,\n  1.257935310730528000f, 1.257637146372796400f, 1.257338935775342200f,\n    1.257040678949129500f,\n  1.256742375905124400f, 1.256444026654294400f, 1.256145631207609400f,\n    1.255847189576040100f,\n  1.255548701770560000f, 1.255250167802143000f, 1.254951587681765600f,\n    1.254652961420405600f,\n  1.254354289029042900f, 1.254055570518658500f, 1.253756805900235700f,\n    1.253457995184759300f,\n  1.253159138383215200f, 1.252860235506592100f, 1.252561286565879300f,\n    1.252262291572068900f,\n  1.251963250536153500f, 1.251664163469128300f, 1.251365030381989700f,\n    1.251065851285736200f,\n  1.250766626191367500f, 1.250467355109885500f, 1.250168038052293500f,\n    1.249868675029596200f,\n  1.249569266052800800f, 1.249269811132915200f, 1.248970310280950200f,\n    1.248670763507917100f,\n  1.248371170824829300f, 1.248071532242702100f, 1.247771847772552300f,\n    1.247472117425398700f,\n  1.247172341212261500f, 1.246872519144162300f, 1.246572651232124700f,\n    1.246272737487174300f,\n  1.245972777920338000f, 1.245672772542644400f, 1.245372721365123600f,\n    1.245072624398807900f,\n  1.244772481654731000f, 1.244472293143928300f, 1.244172058877436800f,\n    1.243871778866295400f,\n  1.243571453121544000f, 1.243271081654225400f, 1.242970664475383100f,\n    1.242670201596062700f,\n  1.242369693027311200f, 1.242069138780177400f, 1.241768538865712000f,\n    1.241467893294967200f,\n  1.241167202078996800f, 1.240866465228856100f, 1.240565682755603100f,\n    1.240264854670295900f,\n  1.239963980983995300f, 1.239663061707763700f, 1.239362096852665300f,\n    1.239061086429765300f,\n  1.238760030450130900f, 1.238458928924831600f, 1.238157781864937400f,\n    1.237856589281521000f,\n  1.237555351185656500f, 1.237254067588419400f, 1.236952738500886900f,\n    1.236651363934138300f,\n  1.236349943899254000f, 1.236048478407316500f, 1.235746967469409900f,\n    1.235445411096619500f,\n  1.235143809300033300f, 1.234842162090739700f, 1.234540469479829900f,\n    1.234238731478396000f,\n  1.233936948097532400f, 1.233635119348334400f, 1.233333245241899200f,\n    1.233031325789326400f,\n  1.232729361001716500f, 1.232427350890172000f, 1.232125295465796600f,\n    1.231823194739696300f,\n  1.231521048722978200f, 1.231218857426751700f, 1.230916620862127400f,\n    1.230614339040217800f,\n  1.230312011972136500f, 1.230009639668999500f, 1.229707222141924100f,\n    1.229404759402029400f,\n  1.229102251460436400f, 1.228799698328266700f, 1.228497100016644900f,\n    1.228194456536696500f,\n  1.227891767899548700f, 1.227589034116330700f, 1.227286255198173100f,\n    1.226983431156208200f,\n  1.226680562001569900f, 1.226377647745394000f, 1.226074688398817600f,\n    1.225771683972980200f,\n  1.225468634479021500f, 1.225165539928084300f, 1.224862400331312400f,\n    1.224559215699851500f,\n  1.224255986044848500f, 1.223952711377453100f, 1.223649391708814700f,\n    1.223346027050086400f,\n  1.223042617412421600f, 1.222739162806975900f, 1.222435663244906700f,\n    1.222132118737372400f,\n  1.221828529295533800f, 1.221524894930552800f, 1.221221215653593100f,\n    1.220917491475820500f,\n  1.220613722408401900f, 1.220309908462505800f, 1.220006049649302800f,\n    1.219702145979964600f,\n  1.219398197465665400f, 1.219094204117580300f, 1.218790165946886100f,\n    1.218486082964761500f,\n  1.218181955182386500f, 1.217877782610943700f, 1.217573565261616000f,\n    1.217269303145589000f,\n  1.216964996274049400f, 1.216660644658185600f, 1.216356248309187600f,\n    1.216051807238247800f,\n  1.215747321456559300f, 1.215442790975316700f, 1.215138215805717300f,\n    1.214833595958959300f,\n  1.214528931446242600f, 1.214224222278769100f, 1.213919468467741900f,\n    1.213614670024366000f,\n  1.213309826959847700f, 1.213004939285395400f, 1.212700007012219100f,\n    1.212395030151530300f,\n  1.212090008714541600f, 1.211784942712468300f, 1.211479832156526800f,\n    1.211174677057934800f,\n  1.210869477427912300f, 1.210564233277680500f, 1.210258944618462200f,\n    1.209953611461482200f,\n  1.209648233817966600f, 1.209342811699143600f, 1.209037345116242400f,\n    1.208731834080493800f,\n  1.208426278603131200f, 1.208120678695388600f, 1.207815034368502100f,\n    1.207509345633709600f,\n  1.207203612502250300f, 1.206897834985365000f, 1.206592013094296200f,\n    1.206286146840288300f,\n  1.205980236234587100f, 1.205674281288440000f, 1.205368282013096200f,\n    1.205062238419806200f,\n  1.204756150519822300f, 1.204450018324398900f, 1.204143841844791200f,\n    1.203837621092256800f,\n  1.203531356078054100f, 1.203225046813444000f, 1.202918693309688300f,\n    1.202612295578050900f,\n  1.202305853629797500f, 1.201999367476194400f, 1.201692837128510700f,\n    1.201386262598016500f,\n  1.201079643895983700f, 1.200772981033685800f, 1.200466274022397900f,\n    1.200159522873396800f,\n  1.199852727597960700f, 1.199545888207369700f, 1.199239004712905300f,\n    1.198932077125851100f,\n  1.198625105457491700f, 1.198318089719113200f, 1.198011029922004400f,\n    1.197703926077454200f,\n  1.197396778196754700f, 1.197089586291198500f, 1.196782350372080300f,\n    1.196475070450696100f,\n  1.196167746538343600f, 1.195860378646322700f, 1.195552966785933900f,\n    1.195245510968480300f,\n  1.194938011205265900f, 1.194630467507596500f, 1.194322879886780000f,\n    1.194015248354125100f,\n  1.193707572920943000f, 1.193399853598545500f, 1.193092090398246900f,\n    1.192784283331362700f,\n  1.192476432409210100f, 1.192168537643107900f, 1.191860599044376500f,\n    1.191552616624337800f,\n  1.191244590394315400f, 1.190936520365635000f, 1.190628406549622900f,\n    1.190320248957608100f,\n  1.190012047600920200f, 1.189703802490891000f, 1.189395513638853900f,\n    1.189087181056143900f,\n  1.188778804754097300f, 1.188470384744052100f, 1.188161921037348400f,\n    1.187853413645327100f,\n  1.187544862579331500f, 1.187236267850706000f, 1.186927629470796900f,\n    1.186618947450951600f,\n  1.186310221802519900f, 1.186001452536852300f, 1.185692639665301600f,\n    1.185383783199222000f,\n  1.185074883149969100f, 1.184765939528900500f, 1.184456952347374900f,\n    1.184147921616753200f,\n  1.183838847348397400f, 1.183529729553671500f, 1.183220568243940300f,\n    1.182911363430571200f,\n  1.182602115124932900f, 1.182292823338395100f, 1.181983488082330300f,\n    1.181674109368111300f,\n  1.181364687207113100f, 1.181055221610712400f, 1.180745712590287400f,\n    1.180436160157217800f,\n  1.180126564322885100f, 1.179816925098671900f, 1.179507242495962900f,\n    1.179197516526144600f,\n  1.178887747200604300f, 1.178577934530731700f, 1.178268078527917200f,\n    1.177958179203553800f,\n  1.177648236569035300f, 1.177338250635757700f, 1.177028221415118200f,\n    1.176718148918515700f,\n  1.176408033157350300f, 1.176097874143024600f, 1.175787671886942000f,\n    1.175477426400507700f,\n  1.175167137695128900f, 1.174856805782213500f, 1.174546430673171900f,\n    1.174236012379415600f,\n  1.173925550912357800f, 1.173615046283413200f, 1.173304498503998400f,\n    1.172993907585530900f,\n  1.172683273539430800f, 1.172372596377118800f, 1.172061876110017700f,\n    1.171751112749551900f,\n  1.171440306307147200f, 1.171129456794231200f, 1.170818564222232800f,\n    1.170507628602582800f,\n  1.170196649946713100f, 1.169885628266057900f, 1.169574563572052300f,\n    1.169263455876133200f,\n  1.168952305189739200f, 1.168641111524310700f, 1.168329874891289400f,\n    1.168018595302118000f,\n  1.167707272768241800f, 1.167395907301107100f, 1.167084498912162300f,\n    1.166773047612856400f,\n  1.166461553414641000f, 1.166150016328968600f, 1.165838436367293800f,\n    1.165526813541072100f,\n  1.165215147861761400f, 1.164903439340820900f, 1.164591687989710500f,\n    1.164279893819892800f,\n  1.163968056842831700f, 1.163656177069992500f, 1.163344254512841800f,\n    1.163032289182848800f,\n  1.162720281091483000f, 1.162408230250216100f, 1.162096136670521600f,\n    1.161784000363874000f,\n  1.161471821341749900f, 1.161159599615627000f, 1.160847335196984800f,\n    1.160535028097304600f,\n  1.160222678328068700f, 1.159910285900761700f, 1.159597850826869200f,\n    1.159285373117878500f,\n  1.158972852785278500f, 1.158660289840559800f, 1.158347684295214300f,\n    1.158035036160735900f,\n  1.157722345448619400f, 1.157409612170361600f, 1.157096836337461000f,\n    1.156784017961417500f,\n  1.156471157053732300f, 1.156158253625908700f, 1.155845307689450800f,\n    1.155532319255865300f,\n  1.155219288336659400f, 1.154906214943342700f, 1.154593099087426000f,\n    1.154279940780421400f,\n  1.153966740033842900f, 1.153653496859206000f, 1.153340211268028000f,\n    1.153026883271827300f,\n  1.152713512882124400f, 1.152400100110440700f, 1.152086644968299400f,\n    1.151773147467225300f,\n  1.151459607618745300f, 1.151146025434387000f, 1.150832400925680100f,\n    1.150518734104155400f,\n  1.150205024981345800f, 1.149891273568785400f, 1.149577479878009800f,\n    1.149263643920556800f,\n  1.148949765707964600f, 1.148635845251773800f, 1.148321882563526400f,\n    1.148007877654766200f,\n  1.147693830537038100f, 1.147379741221888500f, 1.147065609720865600f,\n    1.146751436045519300f,\n  1.146437220207400700f, 1.146122962218062600f, 1.145808662089060000f,\n    1.145494319831947800f,\n  1.145179935458284100f, 1.144865508979627800f, 1.144551040407539400f,\n    1.144236529753581000f,\n  1.143921977029316500f, 1.143607382246310600f, 1.143292745416130600f,\n    1.142978066550344400f,\n  1.142663345660522000f, 1.142348582758234900f, 1.142033777855056000f,\n    1.141718930962559500f,\n  1.141404042092321500f, 1.141089111255919800f, 1.140774138464933700f,\n    1.140459123730943200f,\n  1.140144067065530700f, 1.139828968480280300f, 1.139513827986776900f,\n    1.139198645596607400f,\n  1.138883421321360600f, 1.138568155172625700f, 1.138252847161994400f,\n    1.137937497301059600f,\n  1.137622105601416000f, 1.137306672074659900f, 1.136991196732388200f,\n    1.136675679586200500f,\n  1.136360120647697200f, 1.136044519928480800f, 1.135728877440154800f,\n    1.135413193194324800f,\n  1.135097467202597100f, 1.134781699476580300f, 1.134465890027884300f,\n    1.134150038868120500f,\n  1.133834146008902100f, 1.133518211461843200f, 1.133202235238559800f,\n    1.132886217350669500f,\n  1.132570157809791500f, 1.132254056627546300f, 1.131937913815556300f,\n    1.131621729385444900f,\n  1.131305503348837300f, 1.130989235717360100f, 1.130672926502642100f,\n    1.130356575716312500f,\n  1.130040183370002900f, 1.129723749475346000f, 1.129407274043976200f,\n    1.129090757087529500f,\n  1.128774198617643200f, 1.128457598645956600f, 1.128140957184109700f,\n    1.127824274243744500f,\n  1.127507549836505000f, 1.127190783974035800f, 1.126873976667983800f,\n    1.126557127929996800f,\n  1.126240237771724700f, 1.125923306204818400f, 1.125606333240930700f,\n    1.125289318891715900f,\n  1.124972263168829500f, 1.124655166083928800f, 1.124338027648672500f,\n    1.124020847874721100f,\n  1.123703626773736100f, 1.123386364357381200f, 1.123069060637320600f,\n    1.122751715625221400f,\n  1.122434329332750800f, 1.122116901771578400f, 1.121799432953375600f,\n    1.121481922889814300f,\n  1.121164371592568300f, 1.120846779073313400f, 1.120529145343726500f,\n    1.120211470415486200f,\n  1.119893754300272300f, 1.119575997009766300f, 1.119258198555651300f,\n    1.118940358949611900f,\n  1.118622478203333800f, 1.118304556328505200f, 1.117986593336814700f,\n    1.117668589239953200f,\n  1.117350544049612300f, 1.117032457777486200f, 1.116714330435269600f,\n    1.116396162034659600f,\n  1.116077952587353600f, 1.115759702105052000f, 1.115441410599455500f,\n    1.115123078082267000f,\n  1.114804704565190500f, 1.114486290059931900f, 1.114167834578198200f,\n    1.113849338131698300f,\n  1.113530800732142100f, 1.113212222391241500f, 1.112893603120710000f,\n    1.112574942932261600f,\n  1.112256241837613000f, 1.111937499848481900f, 1.111618716976587700f,\n    1.111299893233650600f,\n  1.110981028631393700f, 1.110662123181539900f, 1.110343176895814500f,\n    1.110024189785944900f,\n  1.109705161863658600f, 1.109386093140686000f, 1.109066983628758100f,\n    1.108747833339607200f,\n  1.108428642284968100f, 1.108109410476576300f, 1.107790137926169200f,\n    1.107470824645485600f,\n  1.107151470646265300f, 1.106832075940250600f, 1.106512640539184100f,\n    1.106193164454811100f,\n  1.105873647698877300f, 1.105554090283131100f, 1.105234492219321100f,\n    1.104914853519198400f,\n  1.104595174194514800f, 1.104275454257024300f, 1.103955693718482200f,\n    1.103635892590644900f,\n  1.103316050885270600f, 1.102996168614119000f, 1.102676245788951400f,\n    1.102356282421530300f,\n  1.102036278523620000f, 1.101716234106985700f, 1.101396149183395000f,\n    1.101076023764616400f,\n  1.100755857862419700f, 1.100435651488577100f, 1.100115404654861100f,\n    1.099795117373046200f,\n  1.099474789654909100f, 1.099154421512226600f, 1.098834012956778200f,\n    1.098513564000344300f,\n  1.098193074654706800f, 1.097872544931649100f, 1.097551974842956500f,\n    1.097231364400415000f,\n  1.096910713615813200f, 1.096590022500939700f, 1.096269291067585700f,\n    1.095948519327543800f,\n  1.095627707292607700f, 1.095306854974572800f, 1.094985962385235800f,\n    1.094665029536395100f,\n  1.094344056439850600f, 1.094023043107403200f, 1.093701989550856000f,\n    1.093380895782013000f,\n  1.093059761812680100f, 1.092738587654664300f, 1.092417373319774200f,\n    1.092096118819820200f,\n  1.091774824166613600f, 1.091453489371968100f, 1.091132114447697300f,\n    1.090810699405617900f,\n  1.090489244257547300f, 1.090167749015304300f, 1.089846213690709900f,\n    1.089524638295585400f,\n  1.089203022841754400f, 1.088881367341041800f, 1.088559671805274100f,\n    1.088237936246279100f,\n  1.087916160675885800f, 1.087594345105925300f, 1.087272489548229700f,\n    1.086950594014632700f,\n  1.086628658516969500f, 1.086306683067076900f, 1.085984667676792600f,\n    1.085662612357956500f,\n  1.085340517122409800f, 1.085018381981994500f, 1.084696206948555300f,\n    1.084373992033937000f,\n  1.084051737249986900f, 1.083729442608553300f, 1.083407108121486000f,\n    1.083084733800636200f,\n  1.082762319657857100f, 1.082439865705002500f, 1.082117371953928300f,\n    1.081794838416491700f,\n  1.081472265104551200f, 1.081149652029967000f, 1.080826999204601100f,\n    1.080504306640315500f,\n  1.080181574348975500f, 1.079858802342446900f, 1.079535990632596800f,\n    1.079213139231294500f,\n  1.078890248150409700f, 1.078567317401815100f, 1.078244346997383300f,\n    1.077921336948988600f,\n  1.077598287268508400f, 1.077275197967819000f, 1.076952069058800400f,\n    1.076628900553332700f,\n  1.076305692463297900f, 1.075982444800579700f, 1.075659157577062200f,\n    1.075335830804633000f,\n  1.075012464495178800f, 1.074689058660589700f, 1.074365613312755900f,\n    1.074042128463569500f,\n  1.073718604124924500f, 1.073395040308715400f, 1.073071437026839500f,\n    1.072747794291194300f,\n  1.072424112113678600f, 1.072100390506194500f, 1.071776629480643500f,\n    1.071452829048929800f,\n  1.071128989222958500f, 1.070805110014635900f, 1.070481191435870500f,\n    1.070157233498571600f,\n  1.069833236214650800f, 1.069509199596019800f, 1.069185123654592600f,\n    1.068861008402285200f,\n  1.068536853851013600f, 1.068212660012696700f, 1.067888426899253500f,\n    1.067564154522606000f,\n  1.067239842894676100f, 1.066915492027387600f, 1.066591101932666800f,\n    1.066266672622439700f,\n  1.065942204108635300f, 1.065617696403183400f, 1.065293149518014500f,\n    1.064968563465062100f,\n  1.064643938256259400f, 1.064319273903543000f, 1.063994570418849400f,\n    1.063669827814116300f,\n  1.063345046101285000f, 1.063020225292295300f, 1.062695365399091200f,\n    1.062370466433616400f,\n  1.062045528407815900f, 1.061720551333637600f, 1.061395535223029500f,\n    1.061070480087941800f,\n  1.060745385940325500f, 1.060420252792134000f, 1.060095080655320900f,\n    1.059769869541841800f,\n  1.059444619463654400f, 1.059119330432716700f, 1.058794002460989000f,\n    1.058468635560432500f,\n  1.058143229743009600f, 1.057817785020685100f, 1.057492301405424500f,\n    1.057166778909195000f,\n  1.056841217543965200f, 1.056515617321704500f, 1.056189978254385100f,\n    1.055864300353978900f,\n  1.055538583632461100f, 1.055212828101807200f, 1.054887033773993300f,\n    1.054561200660999200f,\n  1.054235328774803900f, 1.053909418127389400f, 1.053583468730738200f,\n    1.053257480596834700f,\n  1.052931453737664600f, 1.052605388165214700f, 1.052279283891473600f,\n    1.051953140928431100f,\n  1.051626959288079100f, 1.051300738982409800f, 1.050974480023417500f,\n    1.050648182423098000f,\n  1.050321846193448000f, 1.049995471346466300f, 1.049669057894152800f,\n    1.049342605848508200f,\n  1.049016115221536000f, 1.048689586025239700f, 1.048363018271625300f,\n    1.048036411972699500f,\n  1.047709767140470500f, 1.047383083786948700f, 1.047056361924144400f,\n    1.046729601564071200f,\n  1.046402802718742400f, 1.046075965400174300f, 1.045749089620383200f,\n    1.045422175391386800f,\n  1.045095222725206200f, 1.044768231633861100f, 1.044441202129375200f,\n    1.044114134223771900f,\n  1.043787027929076000f, 1.043459883257315400f, 1.043132700220517300f,\n    1.042805478830712200f,\n  1.042478219099930400f, 1.042150921040204200f, 1.041823584663568200f,\n    1.041496209982056600f,\n  1.041168797007707000f, 1.040841345752557200f, 1.040513856228645800f,\n    1.040186328448014800f,\n  1.039858762422705600f, 1.039531158164762400f, 1.039203515686230000f,\n    1.038875834999155100f,\n  1.038548116115585800f, 1.038220359047570500f, 1.037892563807160800f,\n    1.037564730406408200f,\n  1.037236858857366600f, 1.036908949172090900f, 1.036581001362636600f,\n    1.036253015441062700f,\n  1.035924991419427100f, 1.035596929309791300f, 1.035268829124216700f,\n    1.034940690874766300f,\n  1.034612514573505700f, 1.034284300232500000f, 1.033956047863817500f,\n    1.033627757479526700f,\n  1.033299429091697700f, 1.032971062712402700f, 1.032642658353714300f,\n    1.032314216027707700f,\n  1.031985735746457900f, 1.031657217522042900f, 1.031328661366541300f,\n    1.031000067292032300f,\n  1.030671435310598600f, 1.030342765434322200f, 1.030014057675287900f,\n    1.029685312045581100f,\n  1.029356528557288300f, 1.029027707222499100f, 1.028698848053302100f,\n    1.028369951061789600f,\n  1.028041016260053500f, 1.027712043660187600f, 1.027383033274288400f,\n    1.027053985114451100f,\n  1.026724899192775300f, 1.026395775521359500f, 1.026066614112305600f,\n    1.025737414977715200f,\n  1.025408178129692000f, 1.025078903580341600f, 1.024749591341769700f,\n    1.024420241426085200f,\n  1.024090853845396800f, 1.023761428611814600f, 1.023431965737451800f,\n    1.023102465234420700f,\n  1.022772927114837100f, 1.022443351390816400f, 1.022113738074476300f,\n    1.021784087177936000f,\n  1.021454398713315600f, 1.021124672692737000f, 1.020794909128323000f,\n    1.020465108032198300f,\n  1.020135269416488700f, 1.019805393293321100f, 1.019475479674824900f,\n    1.019145528573129000f,\n  1.018815540000365800f, 1.018485513968667500f, 1.018155450490168000f,\n    1.017825349577003300f,\n  1.017495211241309800f, 1.017165035495226400f, 1.016834822350892300f,\n    1.016504571820448000f,\n  1.016174283916036800f, 1.015843958649801600f, 1.015513596033888400f,\n    1.015183196080442900f,\n  1.014852758801613200f, 1.014522284209548900f, 1.014191772316400000f,\n    1.013861223134318900f,\n  1.013530636675459100f, 1.013200012951974700f, 1.012869351976022300f,\n    1.012538653759758900f,\n  1.012207918315344300f, 1.011877145654937400f, 1.011546335790700600f,\n    1.011215488734796800f,\n  1.010884604499389800f, 1.010553683096645900f, 1.010222724538731600f,\n    1.009891728837815700f,\n  1.009560696006067900f, 1.009229626055658800f, 1.008898518998761800f,\n    1.008567374847549900f,\n  1.008236193614199000f, 1.007904975310885300f, 1.007573719949786700f,\n    1.007242427543082900f,\n  1.006911098102953900f, 1.006579731641582500f, 1.006248328171152100f,\n    1.005916887703846500f,\n  1.005585410251852700f, 1.005253895827357800f, 1.004922344442551000f,\n    1.004590756109621900f,\n  1.004259130840762700f, 1.003927468648166100f, 1.003595769544025900f,\n    1.003264033540538500f,\n  1.002932260649900000f, 1.002600450884309800f, 1.002268604255967200f,\n    1.001936720777072400f,\n  1.001604800459829000f, 1.001272843316440000f, 1.000940849359111000f,\n    1.000608818600048100f,\n  1.000276751051459200f, 0.999944646725553720f, 0.999612505634541740f,\n    0.999280327790635690f,\n  0.998948113206048590f, 0.998615861892994560f, 0.998283573863690270f,\n    0.997951249130352380f,\n  0.997618887705200020f, 0.997286489600452630f, 0.996954054828332210f,\n    0.996621583401061110f,\n  0.996289075330862860f, 0.995956530629963810f, 0.995623949310589620f,\n    0.995291331384969390f,\n  0.994958676865332010f, 0.994625985763907820f, 0.994293258092929790f,\n    0.993960493864630480f,\n  0.993627693091245660f, 0.993294855785010760f, 0.992961981958163210f,\n    0.992629071622942340f,\n  0.992296124791587690f, 0.991963141476341460f, 0.991630121689446090f,\n    0.991297065443145440f,\n  0.990963972749685840f, 0.990630843621313260f, 0.990297678070276800f,\n    0.989964476108825210f,\n  0.989631237749210020f, 0.989297963003683330f, 0.988964651884498000f,\n    0.988631304403909890f,\n  0.988297920574174430f, 0.987964500407549910f, 0.987631043916294970f,\n    0.987297551112669370f,\n  0.986964022008935520f, 0.986630456617355380f, 0.986296854950194260f,\n    0.985963217019717120f,\n  0.985629542838190490f, 0.985295832417883540f, 0.984962085771065030f,\n    0.984628302910006580f,\n  0.984294483846980150f, 0.983960628594258810f, 0.983626737164118190f,\n    0.983292809568833910f,\n  0.982958845820684270f, 0.982624845931947320f, 0.982290809914904140f,\n    0.981956737781835790f,\n  0.981622629545024770f, 0.981288485216756160f, 0.980954304809314670f,\n    0.980620088334987930f,\n  0.980285835806063770f, 0.979951547234831130f, 0.979617222633581860f,\n    0.979282862014607240f,\n  0.978948465390201530f, 0.978614032772659240f, 0.978279564174275860f,\n    0.977945059607349900f,\n  0.977610519084179290f, 0.977275942617064740f, 0.976941330218307540f,\n    0.976606681900209830f,\n  0.976271997675076550f, 0.975937277555212310f, 0.975602521552924600f,\n    0.975267729680520560f,\n  0.974932901950310350f, 0.974598038374604350f, 0.974263138965714040f,\n    0.973928203735953460f,\n  0.973593232697636530f, 0.973258225863079970f, 0.972923183244600480f,\n    0.972588104854516410f,\n  0.972252990705148370f, 0.971917840808816710f, 0.971582655177844700f,\n    0.971247433824555920f,\n  0.970912176761274950f, 0.970576884000329040f, 0.970241555554045230f,\n    0.969906191434753320f,\n  0.969570791654783330f, 0.969235356226466500f, 0.968899885162136650f,\n    0.968564378474127350f,\n  0.968228836174775060f, 0.967893258276415700f, 0.967557644791388500f,\n    0.967221995732032490f,\n  0.966886311110688230f, 0.966550590939698640f, 0.966214835231406500f,\n    0.965879043998157160f,\n  0.965543217252296420f, 0.965207355006171270f, 0.964871457272131190f,\n    0.964535524062525410f,\n  0.964199555389706030f, 0.963863551266025300f, 0.963527511703836660f,\n    0.963191436715496120f,\n  0.962855326313359350f, 0.962519180509785130f, 0.962182999317132030f,\n    0.961846782747760140f,\n  0.961510530814032040f, 0.961174243528309820f, 0.960837920902958720f,\n    0.960501562950343390f,\n  0.960165169682831830f, 0.959828741112791590f, 0.959492277252591900f,\n    0.959155778114604400f,\n  0.958819243711200310f, 0.958482674054753960f, 0.958146069157639560f,\n    0.957809429032232760f,\n  0.957472753690911670f, 0.957136043146054050f, 0.956799297410040440f,\n    0.956462516495251940f,\n  0.956125700414070300f, 0.955788849178880300f, 0.955451962802066120f,\n    0.955115041296014880f,\n  0.954778084673113870f, 0.954441092945751630f, 0.954104066126319150f,\n    0.953767004227207060f,\n  0.953429907260809120f, 0.953092775239518630f, 0.952755608175731570f,\n    0.952418406081844360f,\n  0.952081168970254520f, 0.951743896853362140f, 0.951406589743566950f,\n    0.951069247653271500f,\n  0.950731870594878510f, 0.950394458580791970f, 0.950057011623418380f,\n    0.949719529735163940f,\n  0.949382012928437600f, 0.949044461215648560f, 0.948706874609207220f,\n    0.948369253121526420f,\n  0.948031596765018910f, 0.947693905552099870f, 0.947356179495185020f,\n    0.947018418606691230f,\n  0.946680622899037650f, 0.946342792384643360f, 0.946004927075930090f,\n    0.945667026985319680f,\n  0.945329092125236190f, 0.944991122508104350f, 0.944653118146349890f,\n    0.944315079052401090f,\n  0.943977005238685770f, 0.943638896717634900f, 0.943300753501679190f,\n    0.942962575603250920f,\n  0.942624363034784580f, 0.942286115808714690f, 0.941947833937478270f,\n    0.941609517433512730f,\n  0.941271166309256450f, 0.940932780577150460f, 0.940594360249635500f,\n    0.940255905339155150f,\n  0.939917415858152920f, 0.939578891819073720f, 0.939240333234364950f,\n    0.938901740116473540f,\n  0.938563112477849630f, 0.938224450330942590f, 0.937885753688204820f,\n    0.937547022562088990f,\n  0.937208256965048840f, 0.936869456909540490f, 0.936530622408019990f,\n    0.936191753472946030f,\n  0.935852850116777430f, 0.935513912351974450f, 0.935174940190999560f,\n    0.934835933646314900f,\n  0.934496892730385720f, 0.934157817455677160f, 0.933818707834655590f,\n    0.933479563879790030f,\n  0.933140385603548840f, 0.932801173018403480f, 0.932461926136825660f,\n    0.932122644971287830f,\n  0.931783329534265240f, 0.931443979838232900f, 0.931104595895668410f,\n    0.930765177719049210f,\n  0.930425725320855430f, 0.930086238713567440f, 0.929746717909666790f,\n    0.929407162921637610f,\n  0.929067573761963250f, 0.928727950443130500f, 0.928388292977625930f,\n    0.928048601377937210f,\n  0.927708875656554800f, 0.927369115825968480f, 0.927029321898671270f,\n    0.926689493887155820f,\n  0.926349631803916270f, 0.926009735661449170f, 0.925669805472250860f,\n    0.925329841248820340f,\n  0.924989843003656610f, 0.924649810749260110f, 0.924309744498133750f,\n    0.923969644262779830f,\n  0.923629510055703820f, 0.923289341889410480f, 0.922949139776407800f,\n    0.922608903729203570f,\n  0.922268633760306990f, 0.921928329882229390f, 0.921587992107482210f,\n    0.921247620448579440f,\n  0.920907214918035070f, 0.920566775528364410f, 0.920226302292085460f,\n    0.919885795221715540f,\n  0.919545254329774850f, 0.919204679628783720f, 0.918864071131263780f,\n    0.918523428849739030f,\n  0.918182752796733110f, 0.917842042984772340f, 0.917501299426383480f,\n    0.917160522134094160f,\n  0.916819711120434700f, 0.916478866397934850f, 0.916137987979127270f,\n    0.915797075876544350f,\n  0.915456130102721200f, 0.915115150670193110f, 0.914774137591496510f,\n    0.914433090879170130f,\n  0.914092010545752620f, 0.913750896603785280f, 0.913409749065809520f,\n    0.913068567944367970f,\n  0.912727353252005710f, 0.912386105001267270f, 0.912044823204700370f,\n    0.911703507874852440f,\n  0.911362159024272310f, 0.911020776665511290f, 0.910679360811120000f,\n    0.910337911473652390f,\n  0.909996428665661990f, 0.909654912399703860f, 0.909313362688335290f,\n    0.908971779544113350f,\n  0.908630162979597760f, 0.908288513007348140f, 0.907946829639926790f,\n    0.907605112889895870f,\n  0.907263362769819000f, 0.906921579292262250f, 0.906579762469791110f,\n    0.906237912314974080f,\n  0.905896028840379560f, 0.905554112058577170f, 0.905212161982139160f,\n    0.904870178623637170f,\n  0.904528161995645670f, 0.904186112110739510f, 0.903844028981494190f,\n    0.903501912620488070f,\n  0.903159763040298880f, 0.902817580253507450f, 0.902475364272694370f,\n    0.902133115110441470f,\n  0.901790832779333250f, 0.901448517291953520f, 0.901106168660889110f,\n    0.900763786898726380f,\n  0.900421372018054500f, 0.900078924031462610f, 0.899736442951541320f,\n    0.899393928790883420f,\n  0.899051381562081310f, 0.898708801277730340f, 0.898366187950425780f,\n    0.898023541592764210f,\n  0.897680862217344440f, 0.897338149836764960f, 0.896995404463627350f,\n    0.896652626110532870f,\n  0.896309814790084090f, 0.895966970514885940f, 0.895624093297543110f,\n    0.895281183150662960f,\n  0.894938240086852970f, 0.894595264118721810f, 0.894252255258880410f,\n    0.893909213519939460f,\n  0.893566138914512420f, 0.893223031455212530f, 0.892879891154655380f,\n    0.892536718025457090f,\n  0.892193512080234670f, 0.891850273331607600f, 0.891507001792195000f,\n    0.891163697474618880f,\n  0.890820360391500920f, 0.890476990555464480f, 0.890133587979135000f,\n    0.889790152675137610f,\n  0.889446684656100330f, 0.889103183934650930f, 0.888759650523418650f,\n    0.888416084435035060f,\n  0.888072485682131150f, 0.887728854277341050f, 0.887385190233298650f,\n    0.887041493562639060f,\n  0.886697764277999840f, 0.886354002392018110f, 0.886010207917333760f,\n    0.885666380866586560f,\n  0.885322521252418610f, 0.884978629087472270f, 0.884634704384391180f,\n    0.884290747155821230f,\n  0.883946757414407980f, 0.883602735172799640f, 0.883258680443644530f,\n    0.882914593239592320f,\n  0.882570473573294660f, 0.882226321457403320f, 0.881882136904572400f,\n    0.881537919927456340f,\n  0.881193670538710450f, 0.880849388750992610f, 0.880505074576960370f,\n    0.880160728029273920f,\n  0.879816349120593590f, 0.879471937863580690f, 0.879127494270899090f,\n    0.878783018355212220f,\n  0.878438510129186170f, 0.878093969605486800f, 0.877749396796782770f,\n    0.877404791715742370f,\n  0.877060154375035710f, 0.876715484787334630f, 0.876370782965310900f,\n    0.876026048921639160f,\n  0.875681282668993700f, 0.875336484220050390f, 0.874991653587487090f,\n    0.874646790783981660f,\n  0.874301895822214290f, 0.873956968714865500f, 0.873612009474616810f,\n    0.873267018114152300f,\n  0.872921994646155390f, 0.872576939083312460f, 0.872231851438309840f,\n    0.871886731723835020f,\n  0.871541579952577750f, 0.871196396137227660f, 0.870851180290476810f,\n    0.870505932425017060f,\n  0.870160652553543020f, 0.869815340688749220f, 0.869469996843331370f,\n    0.869124621029987670f,\n  0.868779213261415610f, 0.868433773550315810f, 0.868088301909388680f,\n    0.867742798351335720f,\n  0.867397262888861100f, 0.867051695534668210f, 0.866706096301463340f,\n    0.866360465201952980f,\n  0.866014802248844420f, 0.865669107454847490f, 0.865323380832671800f,\n    0.864977622395029290f,\n  0.864631832154632240f, 0.864286010124194040f, 0.863940156316430170f,\n    0.863594270744056040f,\n  0.863248353419789670f, 0.862902404356348570f, 0.862556423566453230f,\n    0.862210411062823810f,\n  0.861864366858181910f, 0.861518290965251340f, 0.861172183396755500f,\n    0.860826044165420630f,\n  0.860479873283972910f, 0.860133670765139580f, 0.859787436621650360f,\n    0.859441170866234390f,\n  0.859094873511623840f, 0.858748544570550610f, 0.858402184055747750f,\n    0.858055791979950740f,\n  0.857709368355894840f, 0.857362913196317630f, 0.857016426513956930f,\n    0.856669908321551650f,\n  0.856323358631843170f, 0.855976777457572280f, 0.855630164811482460f,\n    0.855283520706317080f,\n  0.854936845154821930f, 0.854590138169742830f, 0.854243399763827020f,\n    0.853896629949823630f,\n  0.853549828740481690f, 0.853202996148552880f, 0.852856132186788910f,\n    0.852509236867942440f,\n  0.852162310204768740f, 0.851815352210022470f, 0.851468362896461110f,\n    0.851121342276842110f,\n  0.850774290363923820f, 0.850427207170467380f, 0.850080092709233130f,\n    0.849732946992984290f,\n  0.849385770034483680f, 0.849038561846496730f, 0.848691322441788910f,\n    0.848344051833126780f,\n  0.847996750033279350f, 0.847649417055015060f, 0.847302052911105160f,\n    0.846954657614320980f,\n  0.846607231177434640f, 0.846259773613221020f, 0.845912284934454140f,\n    0.845564765153910990f,\n  0.845217214284368690f, 0.844869632338605130f, 0.844522019329400630f,\n    0.844174375269535320f,\n  0.843826700171791620f, 0.843478994048952440f, 0.843131256913801420f,\n    0.842783488779124570f,\n  0.842435689657707650f, 0.842087859562339000f, 0.841739998505806610f,\n    0.841392106500900900f,\n  0.841044183560412770f, 0.840696229697133760f, 0.840348244923857960f,\n    0.840000229253379030f,\n  0.839652182698493290f, 0.839304105271996950f, 0.838955996986687550f,\n    0.838607857855364740f,\n  0.838259687890827830f, 0.837911487105878820f, 0.837563255513319780f,\n    0.837214993125953600f,\n  0.836866699956585690f, 0.836518376018021260f, 0.836170021323067610f,\n    0.835821635884532730f,\n  0.835473219715225040f, 0.835124772827955830f, 0.834776295235535540f,\n    0.834427786950777460f,\n  0.834079247986494690f, 0.833730678355502630f, 0.833382078070616820f,\n    0.833033447144653880f,\n  0.832684785590432690f, 0.832336093420771970f, 0.831987370648492710f,\n    0.831638617286416190f,\n  0.831289833347364620f, 0.830941018844162600f, 0.830592173789634240f,\n    0.830243298196606360f,\n  0.829894392077905720f, 0.829545455446360270f, 0.829196488314800080f,\n    0.828847490696055010f,\n  0.828498462602957340f, 0.828149404048339590f, 0.827800315045035150f,\n    0.827451195605879990f,\n  0.827102045743709160f, 0.826752865471360950f, 0.826403654801672770f,\n    0.826054413747485010f,\n  0.825705142321637720f, 0.825355840536972420f, 0.825006508406332490f,\n    0.824657145942561230f,\n  0.824307753158504460f, 0.823958330067008030f, 0.823608876680918760f,\n    0.823259393013085820f,\n  0.822909879076357930f, 0.822560334883586490f, 0.822210760447622980f,\n    0.821861155781319800f,\n  0.821511520897531660f, 0.821161855809112830f, 0.820812160528920360f,\n    0.820462435069811090f,\n  0.820112679444643060f, 0.819762893666276530f, 0.819413077747571440f,\n    0.819063231701390170f,\n  0.818713355540594880f, 0.818363449278050270f, 0.818013512926620940f,\n    0.817663546499172720f,\n  0.817313550008573640f, 0.816963523467691410f, 0.816613466889396070f,\n    0.816263380286557980f,\n  0.815913263672048310f, 0.815563117058740630f, 0.815212940459508210f,\n    0.814862733887226740f,\n  0.814512497354771830f, 0.814162230875020380f, 0.813811934460851430f,\n    0.813461608125143560f,\n  0.813111251880778150f, 0.812760865740636440f, 0.812410449717600570f,\n    0.812060003824555230f,\n  0.811709528074384460f, 0.811359022479975040f, 0.811008487054213360f,\n    0.810657921809988410f,\n  0.810307326760189020f, 0.809956701917705080f, 0.809606047295428950f,\n    0.809255362906252440f,\n  0.808904648763069890f, 0.808553904878775760f, 0.808203131266265420f,\n    0.807852327938436750f,\n  0.807501494908186900f, 0.807150632188415760f, 0.806799739792023240f,\n    0.806448817731910130f,\n  0.806097866020979660f, 0.805746884672134620f, 0.805395873698280360f,\n    0.805044833112322000f,\n  0.804693762927166100f, 0.804342663155721230f, 0.803991533810895500f,\n    0.803640374905599810f,\n  0.803289186452744390f, 0.802937968465242240f, 0.802586720956006250f,\n    0.802235443937950320f,\n  0.801884137423990890f, 0.801532801427043530f, 0.801181435960026780f,\n    0.800830041035858750f,\n  0.800478616667459010f, 0.800127162867749210f, 0.799775679649650460f,\n    0.799424167026086540f,\n  0.799072625009981330f, 0.798721053614259490f, 0.798369452851848020f,\n    0.798017822735673680f,\n  0.797666163278665570f, 0.797314474493752810f, 0.796962756393865600f,\n    0.796611008991936490f,\n  0.796259232300897350f, 0.795907426333682830f, 0.795555591103226930f,\n    0.795203726622466520f,\n  0.794851832904338360f, 0.794499909961779990f, 0.794147957807731400f,\n    0.793795976455132220f,\n  0.793443965916924570f, 0.793091926206050400f, 0.792739857335452710f,\n    0.792387759318077150f,\n  0.792035632166868230f, 0.791683475894773720f, 0.791331290514740830f,\n    0.790979076039718180f,\n  0.790626832482656310f, 0.790274559856505520f, 0.789922258174218570f,\n    0.789569927448748320f,\n  0.789217567693048520f, 0.788865178920075130f, 0.788512761142783790f,\n    0.788160314374132590f,\n  0.787807838627079260f, 0.787455333914584220f, 0.787102800249607550f,\n    0.786750237645110430f,\n  0.786397646114056490f, 0.786045025669408700f, 0.785692376324132690f,\n    0.785339698091194080f,\n  0.784986990983559170f, 0.784634255014197040f, 0.784281490196075850f,\n    0.783928696542166680f,\n  0.783575874065440270f, 0.783223022778868350f, 0.782870142695425320f,\n    0.782517233828084580f,\n  0.782164296189822530f, 0.781811329793615120f, 0.781458334652439630f,\n    0.781105310779275470f,\n  0.780752258187101480f, 0.780399176888899150f, 0.780046066897649550f,\n    0.779692928226336290f,\n  0.779339760887942880f, 0.778986564895453810f, 0.778633340261856040f,\n    0.778280087000135730f,\n  0.777926805123281830f, 0.777573494644283050f, 0.777220155576129220f,\n    0.776866787931812410f,\n  0.776513391724324210f, 0.776159966966658680f, 0.775806513671809860f,\n    0.775453031852772920f,\n  0.775099521522545020f, 0.774745982694123090f, 0.774392415380506400f,\n    0.774038819594694230f,\n  0.773685195349686940f, 0.773331542658487140f, 0.772977861534096640f,\n    0.772624151989520280f,\n  0.772270414037761980f, 0.771916647691828660f, 0.771562852964726710f,\n    0.771209029869463940f,\n  0.770855178419050050f, 0.770501298626494410f, 0.770147390504808960f,\n    0.769793454067005500f,\n  0.769439489326096850f, 0.769085496295098040f, 0.768731474987023660f,\n    0.768377425414890850f,\n  0.768023347591716640f, 0.767669241530518850f, 0.767315107244318060f,\n    0.766960944746133740f,\n  0.766606754048988260f, 0.766252535165903970f, 0.765898288109903900f,\n    0.765544012894013530f,\n  0.765189709531257760f, 0.764835378034664170f, 0.764481018417259680f,\n    0.764126630692073870f,\n  0.763772214872136200f, 0.763417770970477140f, 0.763063299000129260f,\n    0.762708798974124800f,\n  0.762354270905498450f, 0.761999714807284790f, 0.761645130692519490f,\n    0.761290518574240350f,\n  0.760935878465484720f, 0.760581210379292380f, 0.760226514328703140f,\n    0.759871790326757670f,\n  0.759517038386499090f, 0.759162258520969860f, 0.758807450743214760f,\n    0.758452615066278920f,\n  0.758097751503208020f, 0.757742860067050380f, 0.757387940770853360f,\n    0.757032993627667290f,\n  0.756678018650541630f, 0.756323015852528700f, 0.755967985246680520f,\n    0.755612926846050080f,\n  0.755257840663692730f, 0.754902726712663120f, 0.754547585006018600f,\n    0.754192415556816380f,\n  0.753837218378114460f, 0.753481993482973400f, 0.753126740884452970f,\n    0.752771460595615500f,\n  0.752416152629523330f, 0.752060816999239660f, 0.751705453717829930f,\n    0.751350062798359140f,\n  0.750994644253894730f, 0.750639198097504010f, 0.750283724342255320f,\n    0.749928223001219310f,\n  0.749572694087465850f, 0.749217137614067500f, 0.748861553594096340f,\n    0.748505942040627040f,\n  0.748150302966733790f, 0.747794636385492150f, 0.747438942309979870f,\n    0.747083220753273820f,\n  0.746727471728453770f, 0.746371695248599140f, 0.746015891326790470f,\n    0.745660059976110400f,\n  0.745304201209641030f, 0.744948315040467210f, 0.744592401481673270f,\n    0.744236460546344850f,\n  0.743880492247569580f, 0.743524496598434670f, 0.743168473612029980f,\n    0.742812423301444810f,\n  0.742456345679769810f, 0.742100240760097840f, 0.741744108555520860f,\n    0.741387949079133860f,\n  0.741031762344030790f, 0.740675548363308620f, 0.740319307150063780f,\n    0.739963038717393880f,\n  0.739606743078398690f, 0.739250420246177380f, 0.738894070233831800f,\n    0.738537693054463370f,\n  0.738181288721174830f, 0.737824857247070810f, 0.737468398645255490f,\n    0.737111912928835710f,\n  0.736755400110918000f, 0.736398860204609870f, 0.736042293223021060f,\n    0.735685699179260850f,\n  0.735329078086440880f, 0.734972429957672760f, 0.734615754806068890f,\n    0.734259052644744230f,\n  0.733902323486812610f, 0.733545567345390890f, 0.733188784233595240f,\n    0.732831974164544150f,\n  0.732475137151356370f, 0.732118273207151170f, 0.731761382345050280f,\n    0.731404464578174760f,\n  0.731047519919648340f, 0.730690548382594280f, 0.730333549980137110f,\n    0.729976524725403530f,\n  0.729619472631519270f, 0.729262393711613280f, 0.728905287978813600f,\n    0.728548155446249730f,\n  0.728190996127053180f, 0.727833810034354990f, 0.727476597181288540f,\n    0.727119357580987220f,\n  0.726762091246585200f, 0.726404798191218950f, 0.726047478428024420f,\n    0.725690131970139980f,\n  0.725332758830703360f, 0.724975359022855150f, 0.724617932559735390f,\n    0.724260479454485130f,\n  0.723902999720247850f, 0.723545493370166160f, 0.723187960417385530f,\n    0.722830400875050790f,\n  0.722472814756308090f, 0.722115202074305680f, 0.721757562842191060f,\n    0.721399897073114470f,\n  0.721042204780225960f, 0.720684485976676230f, 0.720326740675618530f,\n    0.719968968890205230f,\n  0.719611170633591480f, 0.719253345918932090f, 0.718895494759382860f,\n    0.718537617168101610f,\n  0.718179713158245800f, 0.717821782742975370f, 0.717463825935449550f,\n    0.717105842748830160f,\n  0.716747833196278770f, 0.716389797290958090f, 0.716031735046032900f,\n    0.715673646474667140f,\n  0.715315531590027700f, 0.714957390405280950f, 0.714599222933594240f,\n    0.714241029188137260f,\n  0.713882809182079030f, 0.713524562928591010f, 0.713166290440844450f,\n    0.712807991732011590f,\n  0.712449666815266890f, 0.712091315703784260f, 0.711732938410739810f,\n    0.711374534949309800f,\n  0.711016105332671340f, 0.710657649574003460f, 0.710299167686484930f,\n    0.709940659683296890f,\n  0.709582125577619790f, 0.709223565382636760f, 0.708864979111530680f,\n    0.708506366777485130f,\n  0.708147728393686340f, 0.707789063973319310f, 0.707430373529572170f,\n    0.707071657075632460f,\n  0.706712914624688770f, 0.706354146189931750f, 0.705995351784551530f,\n    0.705636531421740880f,\n  0.705277685114692020f, 0.704918812876598410f, 0.704559914720655490f,\n    0.704200990660058150f,\n  0.703842040708003820f, 0.703483064877689630f, 0.703124063182313690f,\n    0.702765035635076310f,\n  0.702405982249177160f, 0.702046903037818250f, 0.701687798014201110f,\n    0.701328667191529980f,\n  0.700969510583008600f, 0.700610328201841660f, 0.700251120061236020f,\n    0.699891886174398130f,\n  0.699532626554536630f, 0.699173341214860190f, 0.698814030168578240f,\n    0.698454693428902320f,\n  0.698095331009043640f, 0.697735942922215520f, 0.697376529181631400f,\n    0.697017089800505250f,\n  0.696657624792053730f, 0.696298134169492380f, 0.695938617946039510f,\n    0.695579076134912990f,\n  0.695219508749331800f, 0.694859915802517050f, 0.694500297307689140f,\n    0.694140653278070950f,\n  0.693780983726884790f, 0.693421288667355530f, 0.693061568112707690f,\n    0.692701822076166820f,\n  0.692342050570960430f, 0.691982253610315510f, 0.691622431207461700f,\n    0.691262583375628180f,\n  0.690902710128045050f, 0.690542811477944610f, 0.690182887438558710f,\n    0.689822938023121220f,\n  0.689462963244866330f, 0.689102963117028790f, 0.688742937652845550f,\n    0.688382886865552930f,\n  0.688022810768389670f, 0.687662709374594510f, 0.687302582697406850f,\n    0.686942430750068330f,\n  0.686582253545819920f, 0.686222051097905130f, 0.685861823419566700f,\n    0.685501570524050140f,\n  0.685141292424600310f, 0.684780989134463280f, 0.684420660666887120f,\n    0.684060307035119440f,\n  0.683699928252410110f, 0.683339524332008840f, 0.682979095287166160f,\n    0.682618641131135020f,\n  0.682258161877167370f, 0.681897657538517720f, 0.681537128128440470f,\n    0.681176573660190910f,\n  0.680815994147026320f, 0.680455389602203310f, 0.680094760038981280f,\n    0.679734105470619080f,\n  0.679373425910376310f, 0.679012721371515250f, 0.678651991867297080f,\n    0.678291237410985510f,\n  0.677930458015843620f, 0.677569653695137220f, 0.677208824462131490f,\n    0.676847970330092700f,\n  0.676487091312289350f, 0.676126187421989040f, 0.675765258672461950f,\n    0.675404305076978020f,\n  0.675043326648808170f, 0.674682323401225250f, 0.674321295347501510f,\n    0.673960242500911690f,\n  0.673599164874730370f, 0.673238062482232950f, 0.672876935336696900f,\n    0.672515783451398950f,\n  0.672154606839618470f, 0.671793405514634180f, 0.671432179489727110f,\n    0.671070928778178090f,\n  0.670709653393269050f, 0.670348353348283690f, 0.669987028656505170f,\n    0.669625679331219300f,\n  0.669264305385711360f, 0.668902906833267590f, 0.668541483687176590f,\n    0.668180035960725840f,\n  0.667818563667205600f, 0.667457066819905800f, 0.667095545432117240f,\n    0.666733999517132860f,\n  0.666372429088244790f, 0.666010834158747840f, 0.665649214741936390f,\n    0.665287570851105680f,\n  0.664925902499553190f, 0.664564209700575500f, 0.664202492467472090f,\n    0.663840750813541210f,\n  0.663478984752084110f, 0.663117194296401260f, 0.662755379459794350f,\n    0.662393540255567070f,\n  0.662031676697022450f, 0.661669788797465960f, 0.661307876570202740f,\n    0.660945940028538900f,\n  0.660583979185782600f, 0.660221994055241400f, 0.659859984650225110f,\n    0.659497950984043510f,\n  0.659135893070007080f, 0.658773810921428500f, 0.658411704551619570f,\n    0.658049573973894850f,\n  0.657687419201568260f, 0.657325240247955020f, 0.656963037126372160f,\n    0.656600809850135910f,\n  0.656238558432565400f, 0.655876282886978410f, 0.655513983226695960f,\n    0.655151659465038060f,\n  0.654789311615326050f, 0.654426939690883280f, 0.654064543705032310f,\n    0.653702123671098150f,\n  0.653339679602405470f, 0.652977211512280050f, 0.652614719414049580f,\n    0.652252203321041060f,\n  0.651889663246583930f, 0.651527099204007310f, 0.651164511206641320f,\n    0.650801899267818060f,\n  0.650439263400868990f, 0.650076603619127890f, 0.649713919935928420f,\n    0.649351212364604910f,\n  0.648988480918494040f, 0.648625725610931460f, 0.648262946455255510f,\n    0.647900143464803730f,\n  0.647537316652916140f, 0.647174466032932490f, 0.646811591618193350f,\n    0.646448693422041360f,\n  0.646085771457818310f, 0.645722825738868860f, 0.645359856278536980f,\n    0.644996863090167570f,\n  0.644633846187107620f, 0.644270805582703550f, 0.643907741290304040f,\n    0.643544653323257610f,\n  0.643181541694913480f, 0.642818406418622980f, 0.642455247507736860f,\n    0.642092064975608220f,\n  0.641728858835589830f, 0.641365629101035340f, 0.641002375785300500f,\n    0.640639098901740200f,\n  0.640275798463712080f, 0.639912474484572560f, 0.639549126977681070f,\n    0.639185755956396480f,\n  0.638822361434078330f, 0.638458943424088490f, 0.638095501939787920f,\n    0.637732036994540290f,\n  0.637368548601708660f, 0.637005036774657030f, 0.636641501526751590f,\n    0.636277942871357530f,\n  0.635914360821842830f, 0.635550755391574910f, 0.635187126593922070f,\n    0.634823474442254840f,\n  0.634459798949942640f, 0.634096100130357660f, 0.633732377996871770f,\n    0.633368632562857470f,\n  0.633004863841689520f, 0.632641071846741790f, 0.632277256591390780f,\n    0.631913418089012020f,\n  0.631549556352983710f, 0.631185671396683470f, 0.630821763233490040f,\n    0.630457831876783950f,\n  0.630093877339945260f, 0.629729899636356280f, 0.629365898779399080f,\n    0.629001874782456500f,\n  0.628637827658913300f, 0.628273757422153860f, 0.627909664085564810f,\n    0.627545547662532230f,\n  0.627181408166443410f, 0.626817245610687520f, 0.626453060008652860f,\n    0.626088851373730380f,\n  0.625724619719310480f, 0.625360365058784670f, 0.624996087405546350f,\n    0.624631786772988030f,\n  0.624267463174504880f, 0.623903116623491180f, 0.623538747133343780f,\n    0.623174354717459190f,\n  0.622809939389234460f, 0.622445501162069090f, 0.622081040049361490f,\n    0.621716556064512820f,\n  0.621352049220923570f, 0.620987519531995270f, 0.620622967011131400f,\n    0.620258391671734690f,\n  0.619893793527210410f, 0.619529172590963410f, 0.619164528876399280f,\n    0.618799862396925750f,\n  0.618435173165949760f, 0.618070461196880800f, 0.617705726503127720f,\n    0.617340969098100430f,\n  0.616976188995210780f, 0.616611386207870040f, 0.616246560749491690f,\n    0.615881712633488340f,\n  0.615516841873275490f, 0.615151948482267840f, 0.614787032473881110f,\n    0.614422093861533010f,\n  0.614057132658640590f, 0.613692148878623000f, 0.613327142534899510f,\n    0.612962113640889710f,\n  0.612597062210015750f, 0.612231988255698470f, 0.611866891791361560f,\n    0.611501772830428060f,\n  0.611136631386322020f, 0.610771467472469460f, 0.610406281102295440f,\n    0.610041072289227990f,\n  0.609675841046694030f, 0.609310587388121830f, 0.608945311326941520f,\n    0.608580012876582370f,\n  0.608214692050476290f, 0.607849348862054220f, 0.607483983324749510f,\n    0.607118595451995420f,\n  0.606753185257225550f, 0.606387752753876020f, 0.606022297955381760f,\n    0.605656820875180360f,\n  0.605291321526709060f, 0.604925799923405670f, 0.604560256078710220f,\n    0.604194690006061960f,\n  0.603829101718902580f, 0.603463491230673220f, 0.603097858554815790f,\n    0.602732203704774650f,\n  0.602366526693992930f, 0.602000827535916330f, 0.601635106243990190f,\n    0.601269362831660550f,\n  0.600903597312375640f, 0.600537809699582810f, 0.600172000006731770f,\n    0.599806168247271620f,\n  0.599440314434653620f, 0.599074438582328780f, 0.598708540703749010f,\n    0.598342620812368000f,\n  0.597976678921638860f, 0.597610715045016950f, 0.597244729195957500f,\n    0.596878721387916090f,\n  0.596512691634350830f, 0.596146639948718640f, 0.595780566344478960f,\n    0.595414470835091030f,\n  0.595048353434014630f, 0.594682214154711790f, 0.594316053010643270f,\n    0.593949870015273000f,\n  0.593583665182063740f, 0.593217438524479500f, 0.592851190055986300f,\n    0.592484919790049140f,\n  0.592118627740135460f, 0.591752313919712170f, 0.591385978342248260f,\n    0.591019621021212420f,\n  0.590653241970074180f, 0.590286841202305120f, 0.589920418731375800f,\n    0.589553974570759530f,\n  0.589187508733928890f, 0.588821021234357310f, 0.588454512085520460f,\n    0.588087981300892900f,\n  0.587721428893951850f, 0.587354854878173850f, 0.586988259267036350f,\n    0.586621642074019120f,\n  0.586255003312600500f, 0.585888342996261690f, 0.585521661138483250f,\n    0.585154957752746730f,\n  0.584788232852535560f, 0.584421486451332410f, 0.584054718562622140f,\n    0.583687929199888990f,\n  0.583321118376619710f, 0.582954286106300290f, 0.582587432402417840f,\n    0.582220557278461340f,\n  0.581853660747918780f, 0.581486742824280810f, 0.581119803521037650f,\n    0.580752842851679940f,\n  0.580385860829700780f, 0.580018857468592270f, 0.579651832781848730f,\n    0.579284786782964360f,\n  0.578917719485433800f, 0.578550630902754050f, 0.578183521048421080f,\n    0.577816389935933090f,\n  0.577449237578788300f, 0.577082063990485340f, 0.576714869184524860f,\n    0.576347653174406840f,\n  0.575980415973633590f, 0.575613157595706530f, 0.575245878054129520f,\n    0.574878577362406000f,\n  0.574511255534040030f, 0.574143912582537940f, 0.573776548521405030f,\n    0.573409163364148930f,\n  0.573041757124277180f, 0.572674329815297640f, 0.572306881450720390f,\n    0.571939412044054740f,\n  0.571571921608812320f, 0.571204410158504090f, 0.570836877706642270f,\n    0.570469324266740570f,\n  0.570101749852312100f, 0.569734154476872480f, 0.569366538153936560f,\n    0.568998900897020210f,\n  0.568631242719641270f, 0.568263563635316600f, 0.567895863657565500f,\n    0.567528142799906490f,\n  0.567160401075860410f, 0.566792638498947680f, 0.566424855082689470f,\n    0.566057050840608870f,\n  0.565689225786228160f, 0.565321379933072190f, 0.564953513294665140f,\n    0.564585625884531870f,\n  0.564217717716199550f, 0.563849788803194140f, 0.563481839159044150f,\n    0.563113868797277870f,\n  0.562745877731423820f, 0.562377865975012940f, 0.562009833541575080f,\n    0.561641780444642640f,\n  0.561273706697747450f, 0.560905612314422150f, 0.560537497308201240f,\n    0.560169361692618440f,\n  0.559801205481210040f, 0.559433028687510990f, 0.559064831325059240f,\n    0.558696613407391630f,\n  0.558328374948046320f, 0.557960115960563050f, 0.557591836458480870f,\n    0.557223536455341280f,\n  0.556855215964685120f, 0.556486875000054000f, 0.556118513574991650f,\n    0.555750131703040880f,\n  0.555381729397746880f, 0.555013306672654360f, 0.554644863541308600f,\n    0.554276400017257090f,\n  0.553907916114046440f, 0.553539411845225590f, 0.553170887224342820f,\n    0.552802342264947400f,\n  0.552433776980590490f, 0.552065191384822350f, 0.551696585491195710f,\n    0.551327959313262280f,\n  0.550959312864576220f, 0.550590646158691240f, 0.550221959209161620f,\n    0.549853252029543830f,\n  0.549484524633393480f, 0.549115777034268170f, 0.548747009245725500f,\n    0.548378221281323520f,\n  0.548009413154622370f, 0.547640584879181100f, 0.547271736468561530f,\n    0.546902867936324590f,\n  0.546533979296032200f, 0.546165070561248080f, 0.545796141745535150f,\n    0.545427192862458780f,\n  0.545058223925583670f, 0.544689234948475210f, 0.544320225944701200f,\n    0.543951196927828010f,\n  0.543582147911424560f, 0.543213078909059120f, 0.542843989934301940f,\n    0.542474881000723050f,\n  0.542105752121893050f, 0.541736603311384620f, 0.541367434582769480f,\n    0.540998245949621760f,\n  0.540629037425515050f, 0.540259809024023600f, 0.539890560758723770f,\n    0.539521292643190930f,\n  0.539152004691002770f, 0.538782696915736770f, 0.538413369330970610f,\n    0.538044021950284450f,\n  0.537674654787257180f, 0.537305267855470390f, 0.536935861168504670f,\n    0.536566434739941920f,\n  0.536196988583365510f, 0.535827522712358230f, 0.535458037140505110f,\n    0.535088531881390050f,\n  0.534719006948599860f, 0.534349462355720230f, 0.533979898116337950f,\n    0.533610314244041710f,\n  0.533240710752419080f, 0.532871087655060300f, 0.532501444965554960f,\n    0.532131782697493170f,\n  0.531762100864467290f, 0.531392399480068670f, 0.531022678557890980f,\n    0.530652938111527360f,\n  0.530283178154571710f, 0.529913398700619820f, 0.529543599763266700f,\n    0.529173781356109600f,\n  0.528803943492745180f, 0.528434086186771010f, 0.528064209451786560f,\n    0.527694313301390160f,\n  0.527324397749182720f, 0.526954462808764120f, 0.526584508493736840f,\n    0.526214534817702310f,\n  0.525844541794263210f, 0.525474529437023890f, 0.525104497759587900f,\n    0.524734446775560910f,\n  0.524364376498548390f, 0.523994286942156220f, 0.523624178119992400f,\n    0.523254050045663940f,\n  0.522883902732780290f, 0.522513736194950230f, 0.522143550445783310f,\n    0.521773345498891090f,\n  0.521403121367884030f, 0.521032878066375100f, 0.520662615607976660f,\n    0.520292334006301820f,\n  0.519922033274965560f, 0.519551713427582000f, 0.519181374477767470f,\n    0.518811016439137520f,\n  0.518440639325310040f, 0.518070243149902240f, 0.517699827926532130f,\n    0.517329393668819580f,\n  0.516958940390383700f, 0.516588468104845820f, 0.516217976825826600f,\n    0.515847466566947580f,\n  0.515476937341832310f, 0.515106389164103120f, 0.514735822047384990f,\n    0.514365236005302040f,\n  0.513994631051479240f, 0.513624007199543600f, 0.513253364463121090f,\n    0.512882702855839920f,\n  0.512512022391327980f, 0.512141323083213470f, 0.511770604945127050f,\n    0.511399867990697920f,\n  0.511029112233557960f, 0.510658337687338040f, 0.510287544365671140f,\n    0.509916732282189920f,\n  0.509545901450527690f, 0.509175051884319660f, 0.508804183597200140f,\n    0.508433296602805670f,\n  0.508062390914772230f, 0.507691466546736580f, 0.507320523512337470f,\n    0.506949561825212450f,\n  0.506578581499001590f, 0.506207582547344550f, 0.505836564983881190f,\n    0.505465528822253710f,\n  0.505094474076103310f, 0.504723400759073290f, 0.504352308884806750f,\n    0.503981198466947000f,\n  0.503610069519139780f, 0.503238922055029400f, 0.502867756088262840f,\n    0.502496571632486070f,\n  0.502125368701347050f, 0.501754147308493770f, 0.501382907467574190f,\n    0.501011649192238950f,\n  0.500640372496137020f, 0.500269077392920150f, 0.499897763896239410f,\n    0.499526432019746450f,\n  0.499155081777094940f, 0.498783713181937540f, 0.498412326247929250f,\n    0.498040920988724490f,\n  0.497669497417978280f, 0.497298055549347750f, 0.496926595396488870f,\n    0.496555116973059980f,\n  0.496183620292718900f, 0.495812105369124070f, 0.495440572215935850f,\n    0.495069020846813650f,\n  0.494697451275419140f, 0.494325863515413130f, 0.493954257580458580f,\n    0.493582633484217940f,\n  0.493210991240354450f, 0.492839330862533120f, 0.492467652364417970f,\n    0.492095955759675460f,\n  0.491724241061971320f, 0.491352508284972070f, 0.490980757442346090f,\n    0.490608988547760690f,\n  0.490237201614885710f, 0.489865396657390210f, 0.489493573688943970f,\n    0.489121732723218740f,\n  0.488749873773885120f, 0.488377996854616250f, 0.488006101979084450f,\n    0.487634189160962910f,\n  0.487262258413926560f, 0.486890309751649490f, 0.486518343187807900f,\n    0.486146358736077200f,\n  0.485774356410135000f, 0.485402336223658360f, 0.485030298190324950f,\n    0.484658242323814380f,\n  0.484286168637805270f, 0.483914077145978560f, 0.483541967862014480f,\n    0.483169840799594130f,\n  0.482797695972400300f, 0.482425533394114920f, 0.482053353078422120f,\n    0.481681155039005550f,\n  0.481308939289549380f, 0.480936705843739820f, 0.480564454715261990f,\n    0.480192185917803270f,\n  0.479819899465050160f, 0.479447595370691370f, 0.479075273648415010f,\n    0.478702934311909910f,\n  0.478330577374866780f, 0.477958202850975230f, 0.477585810753927250f,\n    0.477213401097414220f,\n  0.476840973895128200f, 0.476468529160763100f, 0.476096066908011760f,\n    0.475723587150569390f,\n  0.475351089902130650f, 0.474978575176390750f, 0.474606042987046840f,\n    0.474233493347795020f,\n  0.473860926272333670f, 0.473488341774360670f, 0.473115739867574380f,\n    0.472743120565675250f,\n  0.472370483882362520f, 0.471997829831337810f, 0.471625158426301700f,\n    0.471252469680957190f,\n  0.470879763609006460f, 0.470507040224152460f, 0.470134299540099940f,\n    0.469761541570552780f,\n  0.469388766329217000f, 0.469015973829798090f, 0.468643164086002100f,\n    0.468270337111537040f,\n  0.467897492920109850f, 0.467524631525429830f, 0.467151752941205530f,\n    0.466778857181146260f,\n  0.466405944258963200f, 0.466033014188366350f, 0.465660066983068220f,\n    0.465287102656780530f,\n  0.464914121223215740f, 0.464541122696088100f, 0.464168107089110940f,\n    0.463795074415999760f,\n  0.463422024690469060f, 0.463048957926235630f, 0.462675874137015720f,\n    0.462302773336526080f,\n  0.461929655538485470f, 0.461556520756611410f, 0.461183369004623920f,\n    0.460810200296242310f,\n  0.460437014645186440f, 0.460063812065178160f, 0.459690592569938270f,\n    0.459317356173189750f,\n  0.458944102888655060f, 0.458570832730057170f, 0.458197545711121090f,\n    0.457824241845570630f,\n  0.457450921147131930f, 0.457077583629530550f, 0.456704229306492570f,\n    0.456330858191746010f,\n  0.455957470299017840f, 0.455584065642037350f, 0.455210644234532610f,\n    0.454837206090234200f,\n  0.454463751222871910f, 0.454090279646176210f, 0.453716791373879380f,\n    0.453343286419712720f,\n  0.452969764797409750f, 0.452596226520703360f, 0.452222671603327130f,\n    0.451849100059016350f,\n  0.451475511901505420f, 0.451101907144530910f, 0.450728285801828830f,\n    0.450354647887135640f,\n  0.449980993414189900f, 0.449607322396728900f, 0.449233634848492320f,\n    0.448859930783219170f,\n  0.448486210214649020f, 0.448112473156523420f, 0.447738719622582710f,\n    0.447364949626569590f,\n  0.446991163182225700f, 0.446617360303294910f, 0.446243541003520480f,\n    0.445869705296646270f,\n  0.445495853196417930f, 0.445121984716580210f, 0.444748099870879880f,\n    0.444374198673063330f,\n  0.444000281136877280f, 0.443626347276070590f, 0.443252397104390790f,\n    0.442878430635587910f,\n  0.442504447883411090f, 0.442130448861610240f, 0.441756433583937120f,\n    0.441382402064142250f,\n  0.441008354315978680f, 0.440634290353198510f, 0.440260210189554690f,\n    0.439886113838801880f,\n  0.439512001314693700f, 0.439137872630986080f, 0.438763727801433690f,\n    0.438389566839793740f,\n  0.438015389759822630f, 0.437641196575277220f, 0.437266987299916590f,\n    0.436892761947498260f,\n  0.436518520531782470f, 0.436144263066528480f, 0.435769989565496290f,\n    0.435395700042447710f,\n  0.435021394511143410f, 0.434647072985346380f, 0.434272735478819010f,\n    0.433898382005324050f,\n  0.433524012578626440f, 0.433149627212489670f, 0.432775225920679740f,\n    0.432400808716961900f,\n  0.432026375615101930f, 0.431651926628867530f, 0.431277461772025310f,\n    0.430902981058344070f,\n  0.430528484501591540f, 0.430153972115537800f, 0.429779443913952170f,\n    0.429404899910604490f,\n  0.429030340119266550f, 0.428655764553708960f, 0.428281173227704760f,\n    0.427906566155026040f,\n  0.427531943349445720f, 0.427157304824738350f, 0.426782650594677570f,\n    0.426407980673039090f,\n  0.426033295073598160f, 0.425658593810130330f, 0.425283876896413280f,\n    0.424909144346223290f,\n  0.424534396173339160f, 0.424159632391538870f, 0.423784853014600950f,\n    0.423410058056305830f,\n  0.423035247530432810f, 0.422660421450763490f, 0.422285579831078230f,\n    0.421910722685159720f,\n  0.421535850026790060f, 0.421160961869751720f, 0.420786058227829220f,\n    0.420411139114805770f,\n  0.420036204544466940f, 0.419661254530597550f, 0.419286289086983070f,\n    0.418911308227410740f,\n  0.418536311965666650f, 0.418161300315539220f, 0.417786273290816130f,\n    0.417411230905285650f,\n  0.417036173172737830f, 0.416661100106961610f, 0.416286011721748230f,\n    0.415910908030888200f,\n  0.415535789048172620f, 0.415160654787394280f, 0.414785505262345030f,\n    0.414410340486818910f,\n  0.414035160474608700f, 0.413659965239509710f, 0.413284754795316230f,\n    0.412909529155823300f,\n  0.412534288334827750f, 0.412159032346125280f, 0.411783761203513790f,\n    0.411408474920790520f,\n  0.411033173511753220f, 0.410657856990201580f, 0.410282525369933980f,\n    0.409907178664751180f,\n  0.409531816888453190f, 0.409156440054840590f, 0.408781048177715660f,\n    0.408405641270879690f,\n  0.408030219348136270f, 0.407654782423288010f, 0.407279330510138260f,\n    0.406903863622492260f,\n  0.406528381774153900f, 0.406152884978929480f, 0.405777373250624070f,\n    0.405401846603045010f,\n  0.405026305049998980f, 0.404650748605293040f, 0.404275177282736260f,\n    0.403899591096136380f,\n  0.403523990059303620f, 0.403148374186047210f, 0.402772743490177110f,\n    0.402397097985504990f,\n  0.402021437685841480f, 0.401645762604999350f, 0.401270072756790610f,\n    0.400894368155027990f,\n  0.400518648813525830f, 0.400142914746097480f, 0.399767165966558420f,\n    0.399391402488723400f,\n  0.399015624326407800f, 0.398639831493428740f, 0.398264024003602220f,\n    0.397888201870746420f,\n  0.397512365108678430f, 0.397136513731217500f, 0.396760647752182230f,\n    0.396384767185391620f,\n  0.396008872044666730f, 0.395632962343827170f, 0.395257038096694990f,\n    0.394881099317091370f,\n  0.394505146018838130f, 0.394129178215758820f, 0.393753195921675850f,\n    0.393377199150413860f,\n  0.393001187915796750f, 0.392625162231649010f, 0.392249122111796800f,\n    0.391873067570065240f,\n  0.391496998620281590f, 0.391120915276272410f, 0.390744817551864850f,\n    0.390368705460887750f,\n  0.389992579017168830f, 0.389616438234538010f, 0.389240283126824070f,\n    0.388864113707858060f,\n  0.388487929991470140f, 0.388111731991491180f, 0.387735519721753690f,\n    0.387359293196089140f,\n  0.386983052428331030f, 0.386606797432312350f, 0.386230528221866430f,\n    0.385854244810828530f,\n  0.385477947213032580f, 0.385101635442314900f, 0.384725309512510880f,\n    0.384348969437456610f,\n  0.383972615230989860f, 0.383596246906947210f, 0.383219864479167560f,\n    0.382843467961488940f,\n  0.382467057367749940f, 0.382090632711791060f, 0.381714194007451380f,\n    0.381337741268572390f,\n  0.380961274508994250f, 0.380584793742559550f, 0.380208298983109930f,\n    0.379831790244487540f,\n  0.379455267540536490f, 0.379078730885099520f, 0.378702180292021630f,\n    0.378325615775147170f,\n  0.377949037348320800f, 0.377572445025389230f, 0.377195838820197690f,\n    0.376819218746593910f,\n  0.376442584818424570f, 0.376065937049537060f, 0.375689275453780500f,\n    0.375312600045002780f,\n  0.374935910837054080f, 0.374559207843783660f, 0.374182491079041500f,\n    0.373805760556679190f,\n  0.373429016290547200f, 0.373052258294498230f, 0.372675486582383640f,\n    0.372298701168057190f,\n  0.371921902065371730f, 0.371545089288180640f, 0.371168262850339210f,\n    0.370791422765701320f,\n  0.370414569048123140f, 0.370037701711460170f, 0.369660820769568240f,\n    0.369283926236305070f,\n  0.368907018125527120f, 0.368530096451093140f, 0.368153161226860980f,\n    0.367776212466689010f,\n  0.367399250184437480f, 0.367022274393965340f, 0.366645285109133750f,\n    0.366268282343803150f,\n  0.365891266111834370f, 0.365514236427090080f, 0.365137193303431750f,\n    0.364760136754723020f,\n  0.364383066794826350f, 0.364005983437606320f, 0.363628886696926890f,\n    0.363251776586652310f,\n  0.362874653120648700f, 0.362497516312780990f, 0.362120366176916230f,\n    0.361743202726920790f,\n  0.361366025976661450f, 0.360988835940006750f, 0.360611632630824020f,\n    0.360234416062982840f,\n  0.359857186250351960f, 0.359479943206800550f, 0.359102686946199680f,\n    0.358725417482419150f,\n  0.358348134829330870f, 0.357970839000806010f, 0.357593530010716310f,\n    0.357216207872935120f,\n  0.356838872601334680f, 0.356461524209789380f, 0.356084162712172360f,\n    0.355706788122359060f,\n  0.355329400454223950f, 0.354951999721642100f, 0.354574585938490280f,\n    0.354197159118644080f,\n  0.353819719275981330f, 0.353442266424378930f, 0.353064800577714280f,\n    0.352687321749866610f,\n  0.352309829954713830f, 0.351932325206136210f, 0.351554807518012990f,\n    0.351177276904224070f,\n  0.350799733378650890f, 0.350422176955173910f, 0.350044607647675640f,\n    0.349667025470037810f,\n  0.349289430436142520f, 0.348911822559873850f, 0.348534201855114360f,\n    0.348156568335749040f,\n  0.347778922015661520f, 0.347401262908737570f, 0.347023591028862320f,\n    0.346645906389921150f,\n  0.346268209005801410f, 0.345890498890388980f, 0.345512776057572080f,\n    0.345135040521238170f,\n  0.344757292295274910f, 0.344379531393571970f, 0.344001757830017680f,\n    0.343623971618502560f,\n  0.343246172772916250f, 0.342868361307148980f, 0.342490537235092600f,\n    0.342112700570637750f,\n  0.341734851327677280f, 0.341356989520103240f, 0.340979115161808070f,\n    0.340601228266685980f,\n  0.340223328848629880f, 0.339845416921535030f, 0.339467492499295200f,\n    0.339089555595806560f,\n  0.338711606224964210f, 0.338333644400663940f, 0.337955670136803170f,\n    0.337577683447278010f,\n  0.337199684345986910f, 0.336821672846827290f, 0.336443648963697160f,\n    0.336065612710496290f,\n  0.335687564101123050f, 0.335309503149478110f, 0.334931429869461230f,\n    0.334553344274972690f,\n  0.334175246379914470f, 0.333797136198187240f, 0.333419013743693980f,\n    0.333040879030336690f,\n  0.332662732072017800f, 0.332284572882641680f, 0.331906401476111280f,\n    0.331528217866331690f,\n  0.331150022067206780f, 0.330771814092642610f, 0.330393593956544440f,\n    0.330015361672817750f,\n  0.329637117255370090f, 0.329258860718107450f, 0.328880592074938190f,\n    0.328502311339769700f,\n  0.328124018526509800f, 0.327745713649068180f, 0.327367396721353070f,\n    0.326989067757275040f,\n  0.326610726770743760f, 0.326232373775669270f, 0.325854008785963320f,\n    0.325475631815536570f,\n  0.325097242878301660f, 0.324718841988170470f, 0.324340429159055250f,\n    0.323962004404870050f,\n  0.323583567739527570f, 0.323205119176942720f, 0.322826658731029110f,\n    0.322448186415702550f,\n  0.322069702244877910f, 0.321691206232470550f, 0.321312698392397570f,\n    0.320934178738574720f,\n  0.320555647284919980f, 0.320177104045350440f, 0.319798549033783570f,\n    0.319419982264138650f,\n  0.319041403750333630f, 0.318662813506288670f, 0.318284211545923010f,\n    0.317905597883156250f,\n  0.317526972531909870f, 0.317148335506103940f, 0.316769686819660780f,\n    0.316391026486501690f,\n  0.316012354520548600f, 0.315633670935725030f, 0.315254975745953180f,\n    0.314876268965157470f,\n  0.314497550607261090f, 0.314118820686189180f, 0.313740079215866160f,\n    0.313361326210216840f,\n  0.312982561683167790f, 0.312603785648644220f, 0.312224998120573420f,\n    0.311846199112882030f,\n  0.311467388639496860f, 0.311088566714346650f, 0.310709733351358600f,\n    0.310330888564462340f,\n  0.309952032367586390f, 0.309573164774659850f, 0.309194285799613390f,\n    0.308815395456376430f,\n  0.308436493758880660f, 0.308057580721056660f, 0.307678656356835560f,\n    0.307299720680150270f,\n  0.306920773704932260f, 0.306541815445115160f, 0.306162845914631390f,\n    0.305783865127415400f,\n  0.305404873097400780f, 0.305025869838521590f, 0.304646855364713530f,\n    0.304267829689911010f,\n  0.303888792828050650f, 0.303509744793068030f, 0.303130685598899270f,\n    0.302751615259482190f,\n  0.302372533788753170f, 0.301993441200650910f, 0.301614337509113100f,\n    0.301235222728077840f,\n  0.300856096871485010f, 0.300476959953273060f, 0.300097811987382670f,\n    0.299718652987753580f,\n  0.299339482968325970f, 0.298960301943041680f, 0.298581109925841300f,\n    0.298201906930667390f,\n  0.297822692971461410f, 0.297443468062166820f, 0.297064232216726120f,\n    0.296684985449082390f,\n  0.296305727773180260f, 0.295926459202963120f, 0.295547179752376430f,\n    0.295167889435364820f,\n  0.294788588265873170f, 0.294409276257848300f, 0.294029953425235520f,\n    0.293650619781982260f,\n  0.293271275342035120f, 0.292891920119341120f, 0.292512554127848930f,\n    0.292133177381505850f,\n  0.291753789894261320f, 0.291374391680063520f, 0.290994982752862730f,\n    0.290615563126608250f,\n  0.290236132815249790f, 0.289856691832738880f, 0.289477240193025510f,\n    0.289097777910061970f,\n  0.288718304997799550f, 0.288338821470189910f, 0.287959327341186510f,\n    0.287579822624741350f,\n  0.287200307334808670f, 0.286820781485341620f, 0.286441245090293950f,\n    0.286061698163620930f,\n  0.285682140719276560f, 0.285302572771216960f, 0.284922994333397350f,\n    0.284543405419773240f,\n  0.284163806044301910f, 0.283784196220939370f, 0.283404575963643550f,\n    0.283024945286371230f,\n  0.282645304203081090f, 0.282265652727731130f, 0.281885990874279570f,\n    0.281506318656686290f,\n  0.281126636088910030f, 0.280746943184911340f, 0.280367239958650150f,\n    0.279987526424086530f,\n  0.279607802595182420f, 0.279228068485898210f, 0.278848324110196550f,\n    0.278468569482039130f,\n  0.278088804615388040f, 0.277709029524206950f, 0.277329244222458250f,\n    0.276949448724106480f,\n  0.276569643043115150f, 0.276189827193448200f, 0.275810001189071290f,\n    0.275430165043948570f,\n  0.275050318772046500f, 0.274670462387330010f, 0.274290595903766200f,\n    0.273910719335321300f,\n  0.273530832695961790f, 0.273150935999655950f, 0.272771029260370560f,\n    0.272391112492074590f,\n  0.272011185708736060f, 0.271631248924323390f, 0.271251302152806570f,\n    0.270871345408154380f,\n  0.270491378704337540f, 0.270111402055325910f, 0.269731415475089780f,\n    0.269351418977600950f,\n  0.268971412576829990f, 0.268591396286749500f, 0.268211370121331170f,\n    0.267831334094547010f,\n  0.267451288220370730f, 0.267071232512774700f, 0.266691166985733360f,\n    0.266311091653219700f,\n  0.265931006529208920f, 0.265550911627675250f, 0.265170806962593210f,\n    0.264790692547939020f,\n  0.264410568397687560f, 0.264030434525815760f, 0.263650290946299660f,\n    0.263270137673115630f,\n  0.262889974720241610f, 0.262509802101654310f, 0.262129619831332370f,\n    0.261749427923253670f,\n  0.261369226391396310f, 0.260989015249740050f, 0.260608794512263380f,\n    0.260228564192946710f,\n  0.259848324305769600f, 0.259468074864711960f, 0.259087815883755400f,\n    0.258707547376880010f,\n  0.258327269358068100f, 0.257946981841300490f, 0.257566684840560170f,\n    0.257186378369829110f,\n  0.256806062443089680f, 0.256425737074325920f, 0.256045402277520320f,\n    0.255665058066657680f,\n  0.255284704455721660f, 0.254904341458696390f, 0.254523969089567590f,\n    0.254143587362319620f,\n  0.253763196290938850f, 0.253382795889410710f, 0.253002386171721110f,\n    0.252621967151857420f,\n  0.252241538843805680f, 0.251861101261554090f, 0.251480654419089730f,\n    0.251100198330400150f,\n  0.250719733009474530f, 0.250339258470300590f, 0.249958774726868170f,\n    0.249578281793165680f,\n  0.249197779683183660f, 0.248817268410911650f, 0.248436747990339490f,\n    0.248056218435458720f,\n  0.247675679760259450f, 0.247295131978733870f, 0.246914575104873220f,\n    0.246534009152669040f,\n  0.246153434136114490f, 0.245772850069201410f, 0.245392256965923620f,\n    0.245011654840274010f,\n  0.244631043706245800f, 0.244250423577833860f, 0.243869794469031620f,\n    0.243489156393834590f,\n  0.243108509366237320f, 0.242727853400234670f, 0.242347188509823150f,\n    0.241966514708997830f,\n  0.241585832011755900f, 0.241205140432093070f, 0.240824439984007180f,\n    0.240443730681495050f,\n  0.240063012538553830f, 0.239682285569182310f, 0.239301549787377890f,\n    0.238920805207139960f,\n  0.238540051842467020f, 0.238159289707357810f, 0.237778518815812740f,\n    0.237397739181830820f,\n  0.237016950819413100f, 0.236636153742559610f, 0.236255347965270780f,\n    0.235874533501548580f,\n  0.235493710365393630f, 0.235112878570808560f, 0.234732038131795020f,\n    0.234351189062355030f,\n  0.233970331376492150f, 0.233589465088208580f, 0.233208590211508550f,\n    0.232827706760394850f,\n  0.232446814748872410f, 0.232065914190945020f, 0.231685005100616930f,\n    0.231304087491893930f,\n  0.230923161378780380f, 0.230542226775282770f, 0.230161283695406500f,\n    0.229780332153157300f,\n  0.229399372162542610f, 0.229018403737568290f, 0.228637426892242400f,\n    0.228256441640571880f,\n  0.227875447996564060f, 0.227494445974227850f, 0.227113435587570770f,\n    0.226732416850602300f,\n  0.226351389777330990f, 0.225970354381765690f, 0.225589310677916880f,\n    0.225208258679793520f,\n  0.224827198401406690f, 0.224446129856766040f, 0.224065053059883250f,\n    0.223683968024768950f,\n  0.223302874765434120f, 0.222921773295891380f, 0.222540663630151820f,\n    0.222159545782228660f,\n  0.221778419766134050f, 0.221397285595880480f, 0.221016143285482050f,\n    0.220634992848951380f,\n  0.220253834300303180f, 0.219872667653551100f, 0.219491492922709110f,\n    0.219110310121792800f,\n  0.218729119264816280f, 0.218347920365795780f, 0.217966713438746380f,\n    0.217585498497683580f,\n  0.217204275556624420f, 0.216823044629584520f, 0.216441805730581500f,\n    0.216060558873631570f,\n  0.215679304072752960f, 0.215298041341962870f, 0.214916770695278810f,\n    0.214535492146719880f,\n  0.214154205710303750f, 0.213772911400050090f, 0.213391609229977570f,\n    0.213010299214105140f,\n  0.212628981366453330f, 0.212247655701041290f, 0.211866322231890090f,\n    0.211484980973019880f,\n  0.211103631938451000f, 0.210722275142205480f, 0.210340910598303870f,\n    0.209959538320768660f,\n  0.209578158323621420f, 0.209196770620883960f, 0.208815375226579670f,\n    0.208433972154730530f,\n  0.208052561419360520f, 0.207671143034492080f, 0.207289717014149830f,\n    0.206908283372357230f,\n  0.206526842123138070f, 0.206145393280517730f, 0.205763936858520150f,\n    0.205382472871171230f,\n  0.205001001332495910f, 0.204619522256519300f, 0.204238035657268250f,\n    0.203856541548768030f,\n  0.203475039945045950f, 0.203093530860128300f, 0.202712014308041620f,\n    0.202330490302814110f,\n  0.201948958858472420f, 0.201567419989045200f, 0.201185873708560170f,\n    0.200804320031045230f,\n  0.200422758970529910f, 0.200041190541042220f, 0.199659614756612230f,\n    0.199278031631268500f,\n  0.198896441179041650f, 0.198514843413961220f, 0.198133238350057030f,\n    0.197751626001360480f,\n  0.197370006381901520f, 0.196988379505712050f, 0.196606745386822960f,\n    0.196225104039265410f,\n  0.195843455477072190f, 0.195461799714274460f, 0.195080136764905570f,\n    0.194698466642997730f,\n  0.194316789362583340f, 0.193935104937696560f, 0.193553413382369890f,\n    0.193171714710637930f,\n  0.192790008936534220f, 0.192408296074092570f, 0.192026576137348330f,\n    0.191644849140335360f,\n  0.191263115097089540f, 0.190881374021645320f, 0.190499625928039040f,\n    0.190117870830306100f,\n  0.189736108742482030f, 0.189354339678604100f, 0.188972563652707950f,\n    0.188590780678831250f,\n  0.188208990771010640f, 0.187827193943283040f, 0.187445390209686870f,\n    0.187063579584259070f,\n  0.186681762081038650f, 0.186299937714063470f, 0.185918106497371700f,\n    0.185536268445003070f,\n  0.185154423570995760f, 0.184772571889390000f, 0.184390713414225000f,\n    0.184008848159540110f,\n  0.183626976139376310f, 0.183245097367773090f, 0.182863211858771880f,\n    0.182481319626412670f,\n  0.182099420684737420f, 0.181717515047787020f, 0.181335602729602590f,\n    0.180953683744226880f,\n  0.180571758105701030f, 0.180189825828068250f, 0.179807886925370670f,\n    0.179425941411650660f,\n  0.179043989300952110f, 0.178662030607317450f, 0.178280065344791100f,\n    0.177898093527416370f,\n  0.177516115169236820f, 0.177134130284297610f, 0.176752138886642350f,\n    0.176370140990316640f,\n  0.175988136609365020f, 0.175606125757832240f, 0.175224108449764660f,\n    0.174842084699207030f,\n  0.174460054520206240f, 0.174078017926807490f, 0.173695974933058080f,\n    0.173313925553004180f,\n  0.172931869800692250f, 0.172549807690170230f, 0.172167739235484620f,\n    0.171785664450683800f,\n  0.171403583349815180f, 0.171021495946926340f, 0.170639402256066410f,\n    0.170257302291283000f,\n  0.169875196066625710f, 0.169493083596143100f, 0.169110964893883830f,\n    0.168728839973898290f,\n  0.168346708850235140f, 0.167964571536945220f, 0.167582428048078130f,\n    0.167200278397683750f,\n  0.166818122599813570f, 0.166435960668517400f, 0.166053792617847200f,\n    0.165671618461853270f,\n  0.165289438214587970f, 0.164907251890102520f, 0.164525059502448390f,\n    0.164142861065678550f,\n  0.163760656593844480f, 0.163378446100999640f, 0.162996229601196390f,\n    0.162614007108487250f,\n  0.162231778636926370f, 0.161849544200566300f, 0.161467303813461580f,\n    0.161085057489665670f,\n  0.160702805243232240f, 0.160320547088216470f, 0.159938283038672050f,\n    0.159556013108654580f,\n  0.159173737312218650f, 0.158791455663418930f, 0.158409168176311760f,\n    0.158026874864951870f,\n  0.157644575743395960f, 0.157262270825699210f, 0.156879960125918730f,\n    0.156497643658110590f,\n  0.156115321436331000f, 0.155732993474637760f, 0.155350659787087090f,\n    0.154968320387737170f,\n  0.154585975290645110f, 0.154203624509868190f, 0.153821268059465250f,\n    0.153438905953493550f,\n  0.153056538206012340f, 0.152674164831079730f, 0.152291785842754070f,\n    0.151909401255095250f,\n  0.151527011082161540f, 0.151144615338013210f, 0.150762214036709470f,\n    0.150379807192309620f,\n  0.149997394818874590f, 0.149614976930463660f, 0.149232553541138180f,\n    0.148850124664957870f,\n  0.148467690315984390f, 0.148085250508278370f, 0.147702805255900570f,\n    0.147320354572913260f,\n  0.146937898473377210f, 0.146555436971355090f, 0.146172970080908520f,\n    0.145790497816099230f,\n  0.145408020190990560f, 0.145025537219644170f, 0.144643048916123810f,\n    0.144260555294492000f,\n  0.143878056368811510f, 0.143495552153146630f, 0.143113042661560050f,\n    0.142730527908116440f,\n  0.142348007906879320f, 0.141965482671912420f, 0.141582952217280980f,\n    0.141200416557048680f,\n  0.140817875705281120f, 0.140435329676042390f, 0.140052778483398480f,\n    0.139670222141414250f,\n  0.139287660664154770f, 0.138905094065686600f, 0.138522522360074780f,\n    0.138139945561386200f,\n  0.137757363683686740f, 0.137374776741042340f, 0.136992184747520560f,\n    0.136609587717187310f,\n  0.136226985664110460f, 0.135844378602356760f, 0.135461766545993150f,\n    0.135079149509088060f,\n  0.134696527505708320f, 0.134313900549922760f, 0.133931268655799020f,\n    0.133548631837404950f,\n  0.133165990108809860f, 0.132783343484081580f, 0.132400691977289760f,\n    0.132018035602502530f,\n  0.131635374373789940f, 0.131252708305220960f, 0.130870037410864640f,\n    0.130487361704791580f,\n  0.130104681201070800f, 0.129721995913773260f, 0.129339305856968730f,\n    0.128956611044727220f,\n  0.128573911491120210f, 0.128191207210217570f, 0.127808498216091110f,\n    0.127425784522811530f,\n  0.127043066144449680f, 0.126660343095077900f, 0.126277615388766920f,\n    0.125894883039589430f,\n  0.125512146061616980f, 0.125129404468921260f, 0.124746658275575490f,\n    0.124363907495651240f,\n  0.123981152143222060f, 0.123598392232359880f, 0.123215627777138580f,\n    0.122832858791630880f,\n  0.122450085289909640f, 0.122067307286049230f, 0.121684524794122440f,\n    0.121301737828203960f,\n  0.120918946402367330f, 0.120536150530686250f, 0.120153350227235940f,\n    0.119770545506089950f,\n  0.119387736381323830f, 0.119004922867011920f, 0.118622104977228730f,\n    0.118239282726050290f,\n  0.117856456127550970f, 0.117473625195807100f, 0.117090789944893860f,\n    0.116707950388886520f,\n  0.116325106541861910f, 0.115942258417895240f, 0.115559406031063570f,\n    0.115176549395442460f,\n  0.114793688525109290f, 0.114410823434140360f, 0.114027954136612060f,\n    0.113645080646602280f,\n  0.113262202978187320f, 0.112879321145445350f, 0.112496435162453430f,\n    0.112113545043288730f,\n  0.111730650802029900f, 0.111347752452754000f, 0.110964850009539970f,\n    0.110581943486465610f,\n  0.110199032897608850f, 0.109816118257049110f, 0.109433199578864170f,\n    0.109050276877133770f,\n  0.108667350165936400f, 0.108284419459350770f, 0.107901484771457020f,\n    0.107518546116333660f,\n  0.107135603508061170f, 0.106752656960718350f, 0.106369706488385940f,\n    0.105986752105143480f,\n  0.105603793825070680f, 0.105220831662248700f, 0.104837865630757090f,\n    0.104454895744677270f,\n  0.104071922018089540f, 0.103688944465074300f, 0.103305963099713400f,\n    0.102922977936087120f,\n  0.102539988988277600f, 0.102156996270365800f, 0.101773999796432830f,\n    0.101390999580561250f,\n  0.101007995636832020f, 0.100624987979327970f, 0.100241976622130760f,\n    0.099858961579322170f,\n  0.099475942864985456f, 0.099092920493202258f, 0.098709894478056073f,\n    0.098326864833628791f,\n  0.097943831574004214f, 0.097560794713264939f, 0.097177754265493674f,\n    0.096794710244774623f,\n  0.096411662665190329f, 0.096028611540825232f, 0.095645556885762609f,\n    0.095262498714085819f,\n  0.094879437039879722f, 0.094496371877227495f, 0.094113303240214247f,\n    0.093730231142923864f,\n  0.093347155599440373f, 0.092964076623849271f, 0.092580994230234359f,\n    0.092197908432681386f,\n  0.091814819245274432f, 0.091431726682099479f, 0.091048630757241303f,\n    0.090665531484784803f,\n  0.090282428878816323f, 0.089899322953420582f, 0.089516213722684160f,\n    0.089133101200692441f,\n  0.088749985401530951f, 0.088366866339286629f, 0.087983744028044805f,\n    0.087600618481892656f,\n  0.087217489714916191f, 0.086834357741201490f, 0.086451222574836131f,\n    0.086068084229906014f,\n  0.085684942720498897f, 0.085301798060701386f, 0.084918650264600160f,\n    0.084535499346283349f,\n  0.084152345319837438f, 0.083769188199350780f, 0.083386027998910095f,\n    0.083002864732603973f,\n  0.082619698414519799f, 0.082236529058745025f, 0.081853356679368619f,\n    0.081470181290477811f,\n  0.081087002906161790f, 0.080703821540508452f, 0.080320637207605849f,\n    0.079937449921543474f,\n  0.079554259696409127f, 0.079171066546292510f, 0.078787870485282088f,\n    0.078404671527466441f,\n  0.078021469686935602f, 0.077638264977777913f, 0.077255057414083589f,\n    0.076871847009941652f,\n  0.076488633779441206f, 0.076105417736672773f, 0.075722198895725248f,\n    0.075338977270689375f,\n  0.074955752875654230f, 0.074572525724710764f, 0.074189295831948693f,\n    0.073806063211457842f,\n  0.073422827877329483f, 0.073039589843653177f, 0.072656349124520389f,\n    0.072273105734021334f,\n  0.071889859686246352f, 0.071506610995287156f, 0.071123359675233852f,\n    0.070740105740178361f,\n  0.070356849204211397f, 0.069973590081423773f, 0.069590328385907715f,\n    0.069207064131753759f,\n  0.068823797333054326f, 0.068440528003900616f, 0.068057256158383886f,\n    0.067673981810596848f,\n  0.067290704974630494f, 0.066907425664577733f, 0.066524143894529736f,\n    0.066140859678579578f,\n  0.065757573030819083f, 0.065374283965340146f, 0.064990992496236119f,\n    0.064607698637598646f,\n  0.064224402403521202f, 0.063841103808096086f, 0.063457802865415636f,\n    0.063074499589573618f,\n  0.062691193994662109f, 0.062307886094775049f, 0.061924575904005130f,\n    0.061541263436445129f,\n  0.061157948706189229f, 0.060774631727329942f, 0.060391312513961619f,\n    0.060007991080177375f,\n  0.059624667440070382f, 0.059241341607735261f, 0.058858013597264912f,\n    0.058474683422754095f,\n  0.058091351098295878f, 0.057708016637985186f, 0.057324680055915692f,\n    0.056941341366181127f,\n  0.056558000582876661f, 0.056174657720095743f, 0.055791312791933681f,\n    0.055407965812484541f,\n  0.055024616795842439f, 0.054641265756102911f, 0.054257912707359794f,\n    0.053874557663708772f,\n  0.053491200639244271f, 0.053107841648060788f, 0.052724480704254229f,\n    0.052341117821918783f,\n  0.051957753015150501f, 0.051574386298044173f, 0.051191017684694640f,\n    0.050807647189198162f,\n  0.050424274825649297f, 0.050040900608144430f, 0.049657524550778251f,\n    0.049274146667647289f,\n  0.048890766972846805f, 0.048507385480472134f, 0.048124002204620014f,\n    0.047740617159385448f,\n  0.047357230358865306f, 0.046973841817155179f, 0.046590451548350717f,\n    0.046207059566548990f,\n  0.045823665885845313f, 0.045440270520336883f, 0.045056873484119603f,\n    0.044673474791289434f,\n  0.044290074455943754f, 0.043906672492178188f, 0.043523268914090238f,\n    0.043139863735776100f,\n  0.042756456971332048f, 0.042373048634855741f, 0.041989638740443119f,\n    0.041606227302191955f,\n  0.041222814334198304f, 0.040839399850560058f, 0.040455983865373815f,\n    0.040072566392736257f,\n  0.039689147446745419f, 0.039305727041497644f, 0.038922305191091085f,\n    0.038538881909622631f,\n  0.038155457211189216f, 0.037772031109889144f, 0.037388603619819022f,\n    0.037005174755077273f,\n  0.036621744529761024f, 0.036238312957967478f, 0.035854880053795196f,\n    0.035471445831341021f,\n  0.035088010304703626f, 0.034704573487980395f, 0.034321135395268765f,\n    0.033937696040667535f,\n  0.033554255438273790f, 0.033170813602186440f, 0.032787370546502645f,\n    0.032403926285321405f,\n  0.032020480832740429f, 0.031637034202857461f, 0.031253586409771626f,\n    0.030870137467580314f,\n  0.030486687390382738f, 0.030103236192276818f, 0.029719783887360508f,\n    0.029336330489733147f,\n  0.028952876013492331f, 0.028569420472737472f, 0.028185963881566689f,\n    0.027802506254078142f,\n  0.027419047604371360f, 0.027035587946544135f, 0.026652127294696067f,\n    0.026268665662925468f,\n  0.025885203065330677f, 0.025501739516011413f, 0.025118275029065638f,\n    0.024734809618593138f,\n  0.024351343298691951f, 0.023967876083461924f, 0.023584407987001611f,\n    0.023200939023409587f,\n  0.022817469206785804f, 0.022433998551228459f, 0.022050527070837558f,\n    0.021667054779711814f,\n  0.021283581691949955f, 0.020900107821652084f, 0.020516633182916549f,\n    0.020133157789843505f,\n  0.019749681656531803f, 0.019366204797080316f, 0.018982727225589285f,\n    0.018599248956157190f,\n  0.018215770002884327f, 0.017832290379869671f, 0.017448810101212228f,\n    0.017065329181012358f,\n  0.016681847633368677f, 0.016298365472381587f, 0.015914882712149747f,\n    0.015531399366773606f,\n  0.015147915450352307f, 0.014764430976985016f, 0.014380945960772247f,\n    0.013997460415812761f,\n  0.013613974356207112f, 0.013230487796054543f, 0.012847000749454314f,\n    0.012463513230507034f,\n  0.012080025253311559f, 0.011696536831968529f, 0.011313047980577277f,\n    0.010929558713237145f,\n  0.010546069044048827f, 0.010162578987111254f, 0.009779088556525145f,\n    0.009395597766389905f,\n  0.009012106630804949f, 0.008628615163871038f, 0.008245123379687167f,\n    0.007861631292354124f,\n  0.007478138915970929f, 0.007094646264638386f, 0.006711153352455981f,\n    0.006327660193523208f,\n  0.005944166801940901f, 0.005560673191808128f, 0.005177179377225743f,\n    0.004793685372293270f,\n  0.004410191191110246f, 0.004026696847777542f, 0.003643202356394263f,\n    0.003259707731061291f,\n  0.002876212985878184f, 0.002492718134944503f, 0.002109223192361147f,\n    0.001725728172227238f,\n  0.001342233088643682f, 0.000958737955710053f, 0.000575242787525925f,\n    0.000191747598192208f\n};\n  #endif\n\n/**\n  @brief  Weights Table\n */\n\n/**\n  @par\n  Weights tables are generated using the formula : <pre>weights[n] = e^(-j*n*pi/(2*N))</pre>\n  @par\n  C command to generate the table\n  <pre>\n  for(i = 0; i< N; i++)\n  { \n    weights[(2*i)]   =  cos(i*c);\n    weights[(2*i)+1] = -sin(i*c);\n  } </pre>\n  @par\n  where <code>N</code> is the Number of weights to be calculated and <code>c</code> is <code>pi/(2*N)</code>\n  @par\n  Converted the output to q15 format by multiplying with 2^31 and saturated if required.\n  @par\n  In the tables below the real and imaginary values are placed alternatively, hence the\n  array length is <code>2*N</code>.\n */\n\n/**\n  @par\n  cosFactor tables are generated using the formula : <pre> cos_factors[n] = 2 * cos((2n+1)*pi/(4*N)) </pre>\n  @par\n  C command to generate the table\n  <pre>\n  for (i = 0; i< N; i++)\n  {\n    cos_factors[i] = 2 * cos((2*i+1)*c/2);\n  } </pre>\n  @par\n  where <code>N</code> is the number of factors to generate and <code>c</code> is <code>pi/(2*N)</code>\n  @par\n  Then converted to q15 format by multiplying with 2^31 and saturated if required.\n*/\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_128)\n    const q15_t __ALIGNED(4) WeightsQ15_128[256] = {\n  (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7fe9, (q15_t)0xfb4a,\n  (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7f87, (q15_t)0xf505,\n  (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7ed5, (q15_t)0xeec7,\n  (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7dd6, (q15_t)0xe893,\n  (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7c89, (q15_t)0xe26d,\n  (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7aef, (q15_t)0xdc5a,\n  (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7909, (q15_t)0xd65d,\n  (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x76d9, (q15_t)0xd079,\n  (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x745f, (q15_t)0xcab3,\n  (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x719e, (q15_t)0xc50e,\n  (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6e96, (q15_t)0xbf8d,\n  (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6b4a, (q15_t)0xba33,\n  (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x67bd, (q15_t)0xb505,\n  (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x63ef, (q15_t)0xb005,\n  (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x5fe3, (q15_t)0xab36,\n  (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5b9d, (q15_t)0xa69c,\n  (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x571d, (q15_t)0xa239,\n  (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5269, (q15_t)0x9e0f,\n  (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4d81, (q15_t)0x9a23,\n  (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x4869, (q15_t)0x9674,\n  (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4325, (q15_t)0x9307,\n  (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3db8, (q15_t)0x8fdd,\n  (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3824, (q15_t)0x8cf9,\n  (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x326e, (q15_t)0x8a5b,\n  (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2c98, (q15_t)0x8806,\n  (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x26a8, (q15_t)0x85fb,\n  (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x209f, (q15_t)0x843b,\n  (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1a82, (q15_t)0x82c7,\n  (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x1455, (q15_t)0x81a1,\n  (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x1139, (q15_t)0x812b, (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xe1b, (q15_t)0x80c8,\n  (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xafb, (q15_t)0x8079, (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x7d9, (q15_t)0x803e,\n  (q15_t)0x647, (q15_t)0x8028, (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x324, (q15_t)0x800a, (q15_t)0x192, (q15_t)0x8003\n};\n    const q15_t __ALIGNED(4) cos_factorsQ15_128[128] = {\n  (q15_t)0x7fff, (q15_t)0x7ffa, (q15_t)0x7ff0, (q15_t)0x7fe1, (q15_t)0x7fce, (q15_t)0x7fb5, (q15_t)0x7f97, (q15_t)0x7f75,\n  (q15_t)0x7f4d, (q15_t)0x7f21, (q15_t)0x7ef0, (q15_t)0x7eba, (q15_t)0x7e7f, (q15_t)0x7e3f, (q15_t)0x7dfa, (q15_t)0x7db0,\n  (q15_t)0x7d62, (q15_t)0x7d0f, (q15_t)0x7cb7, (q15_t)0x7c5a, (q15_t)0x7bf8, (q15_t)0x7b92, (q15_t)0x7b26, (q15_t)0x7ab6,\n  (q15_t)0x7a42, (q15_t)0x79c8, (q15_t)0x794a, (q15_t)0x78c7, (q15_t)0x7840, (q15_t)0x77b4, (q15_t)0x7723, (q15_t)0x768e,\n  (q15_t)0x75f4, (q15_t)0x7555, (q15_t)0x74b2, (q15_t)0x740b, (q15_t)0x735f, (q15_t)0x72af, (q15_t)0x71fa, (q15_t)0x7141,\n  (q15_t)0x7083, (q15_t)0x6fc1, (q15_t)0x6efb, (q15_t)0x6e30, (q15_t)0x6d62, (q15_t)0x6c8f, (q15_t)0x6bb8, (q15_t)0x6adc,\n  (q15_t)0x69fd, (q15_t)0x6919, (q15_t)0x6832, (q15_t)0x6746, (q15_t)0x6657, (q15_t)0x6563, (q15_t)0x646c, (q15_t)0x6371,\n  (q15_t)0x6271, (q15_t)0x616f, (q15_t)0x6068, (q15_t)0x5f5e, (q15_t)0x5e50, (q15_t)0x5d3e, (q15_t)0x5c29, (q15_t)0x5b10,\n  (q15_t)0x59f3, (q15_t)0x58d4, (q15_t)0x57b0, (q15_t)0x568a, (q15_t)0x5560, (q15_t)0x5433, (q15_t)0x5302, (q15_t)0x51ce,\n  (q15_t)0x5097, (q15_t)0x4f5e, (q15_t)0x4e21, (q15_t)0x4ce1, (q15_t)0x4b9e, (q15_t)0x4a58, (q15_t)0x490f, (q15_t)0x47c3,\n  (q15_t)0x4675, (q15_t)0x4524, (q15_t)0x43d0, (q15_t)0x427a, (q15_t)0x4121, (q15_t)0x3fc5, (q15_t)0x3e68, (q15_t)0x3d07,\n  (q15_t)0x3ba5, (q15_t)0x3a40, (q15_t)0x38d8, (q15_t)0x376f, (q15_t)0x3604, (q15_t)0x3496, (q15_t)0x3326, (q15_t)0x31b5,\n  (q15_t)0x3041, (q15_t)0x2ecc, (q15_t)0x2d55, (q15_t)0x2bdc, (q15_t)0x2a61, (q15_t)0x28e5, (q15_t)0x2767, (q15_t)0x25e8,\n  (q15_t)0x2467, (q15_t)0x22e5, (q15_t)0x2161, (q15_t)0x1fdc, (q15_t)0x1e56, (q15_t)0x1ccf, (q15_t)0x1b47, (q15_t)0x19bd,\n  (q15_t)0x1833, (q15_t)0x16a8, (q15_t)0x151b, (q15_t)0x138e, (q15_t)0x1201, (q15_t)0x1072, (q15_t)0xee3, (q15_t)0xd53,\n  (q15_t)0xbc3, (q15_t)0xa33, (q15_t)0x8a2, (q15_t)0x710, (q15_t)0x57f, (q15_t)0x3ed, (q15_t)0x25b, (q15_t)0xc9\n};\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_512)\n    const q15_t __ALIGNED(4) WeightsQ15_512[1024] = {\n  (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7ffe, (q15_t)0xfed3,\n  (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ff8, (q15_t)0xfd41,\n  (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7fed, (q15_t)0xfbaf,\n  (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fdd, (q15_t)0xfa1d,\n  (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fc8, (q15_t)0xf88b,\n  (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fae, (q15_t)0xf6fa,\n  (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f8f, (q15_t)0xf569,\n  (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f6b, (q15_t)0xf3d9,\n  (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f43, (q15_t)0xf249,\n  (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f15, (q15_t)0xf0b9,\n  (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7ee3, (q15_t)0xef2a,\n  (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eab, (q15_t)0xed9c,\n  (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e6f, (q15_t)0xec0e,\n  (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e2e, (q15_t)0xea81,\n  (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7de8, (q15_t)0xe8f6,\n  (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7d9d, (q15_t)0xe76a,\n  (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d4e, (q15_t)0xe5e0,\n  (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7cf9, (q15_t)0xe457,\n  (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7ca0, (q15_t)0xe2cf,\n  (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c42, (q15_t)0xe148,\n  (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bdf, (q15_t)0xdfc2,\n  (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b77, (q15_t)0xde3e,\n  (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b0b, (q15_t)0xdcbb,\n  (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7a9a, (q15_t)0xdb39,\n  (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a24, (q15_t)0xd9b8,\n  (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79a9, (q15_t)0xd839,\n  (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x792a, (q15_t)0xd6bc,\n  (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78a6, (q15_t)0xd540,\n  (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x781d, (q15_t)0xd3c6,\n  (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x7790, (q15_t)0xd24d,\n  (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x76fe, (q15_t)0xd0d7,\n  (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x7668, (q15_t)0xcf62,\n  (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75cc, (q15_t)0xcdef,\n  (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x752d, (q15_t)0xcc7e,\n  (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x7489, (q15_t)0xcb0e,\n  (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x73e0, (q15_t)0xc9a1,\n  (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x7333, (q15_t)0xc836,\n  (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x7282, (q15_t)0xc6ce,\n  (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71cc, (q15_t)0xc567,\n  (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x7112, (q15_t)0xc403,\n  (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7053, (q15_t)0xc2a0,\n  (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6f90, (q15_t)0xc141,\n  (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6ec9, (q15_t)0xbfe3,\n  (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6dfd, (q15_t)0xbe89,\n  (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d2d, (q15_t)0xbd30,\n  (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c59, (q15_t)0xbbdb,\n  (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6b81, (q15_t)0xba88,\n  (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6aa5, (q15_t)0xb937,\n  (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69c4, (q15_t)0xb7ea,\n  (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x68e0, (q15_t)0xb69f,\n  (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x67f7, (q15_t)0xb557,\n  (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x670b, (q15_t)0xb411,\n  (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x661a, (q15_t)0xb2cf,\n  (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x6526, (q15_t)0xb190,\n  (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x642d, (q15_t)0xb054,\n  (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x6331, (q15_t)0xaf1b,\n  (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x6231, (q15_t)0xade4,\n  (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x612d, (q15_t)0xacb2,\n  (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6026, (q15_t)0xab82,\n  (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f1a, (q15_t)0xaa55,\n  (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e0b, (q15_t)0xa92c,\n  (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5cf9, (q15_t)0xa807,\n  (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5be3, (q15_t)0xa6e4,\n  (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5ac9, (q15_t)0xa5c5,\n  (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59ac, (q15_t)0xa4aa,\n  (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x588b, (q15_t)0xa392,\n  (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x5767, (q15_t)0xa27d,\n  (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5640, (q15_t)0xa16d,\n  (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x5515, (q15_t)0xa060,\n  (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x53e7, (q15_t)0x9f56,\n  (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52b5, (q15_t)0x9e50,\n  (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x5181, (q15_t)0x9d4e,\n  (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5049, (q15_t)0x9c50,\n  (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f0f, (q15_t)0x9b56,\n  (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4dd1, (q15_t)0x9a60,\n  (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4c90, (q15_t)0x996d,\n  (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b4c, (q15_t)0x987e,\n  (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a06, (q15_t)0x9794,\n  (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x48bc, (q15_t)0x96ad,\n  (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x4770, (q15_t)0x95cb,\n  (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4621, (q15_t)0x94ed,\n  (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x44cf, (q15_t)0x9412,\n  (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x437b, (q15_t)0x933c,\n  (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4224, (q15_t)0x926a,\n  (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x40ca, (q15_t)0x919d,\n  (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3f6e, (q15_t)0x90d3,\n  (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e10, (q15_t)0x900e,\n  (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3caf, (q15_t)0x8f4d,\n  (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b4c, (q15_t)0x8e91,\n  (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x39e6, (q15_t)0x8dd9,\n  (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x387e, (q15_t)0x8d25,\n  (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3714, (q15_t)0x8c76,\n  (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35a8, (q15_t)0x8bcb,\n  (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x343a, (q15_t)0x8b25,\n  (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x32ca, (q15_t)0x8a83,\n  (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x3158, (q15_t)0x89e5,\n  (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x2fe4, (q15_t)0x894d,\n  (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2e6e, (q15_t)0x88b9,\n  (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2cf7, (q15_t)0x8829,\n  (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2b7d, (q15_t)0x879e,\n  (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a02, (q15_t)0x8718,\n  (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x2886, (q15_t)0x8696,\n  (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x2707, (q15_t)0x8619,\n  (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x2588, (q15_t)0x85a1,\n  (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x2407, (q15_t)0x852d,\n  (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x2284, (q15_t)0x84be,\n  (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x2100, (q15_t)0x8454,\n  (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1f7b, (q15_t)0x83ef,\n  (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1df5, (q15_t)0x838f,\n  (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1c6d, (q15_t)0x8333,\n  (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1ae4, (q15_t)0x82dc,\n  (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x195b, (q15_t)0x828a,\n  (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x17d0, (q15_t)0x823d,\n  (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x1645, (q15_t)0x81f4,\n  (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x14b8, (q15_t)0x81b1,\n  (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x132b, (q15_t)0x8172,\n  (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x119d, (q15_t)0x8138,\n  (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x100e, (q15_t)0x8103,\n  (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xe7f, (q15_t)0x80d3,\n  (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xcef, (q15_t)0x80a8,\n  (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xb5f, (q15_t)0x8082,\n  (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa33, (q15_t)0x8069, (q15_t)0x9ce, (q15_t)0x8061,\n  (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x906, (q15_t)0x8052, (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x83d, (q15_t)0x8044,\n  (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x775, (q15_t)0x8038, (q15_t)0x710, (q15_t)0x8032, (q15_t)0x6ac, (q15_t)0x802d,\n  (q15_t)0x647, (q15_t)0x8028, (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x51a, (q15_t)0x801b,\n  (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x451, (q15_t)0x8013, (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x388, (q15_t)0x800d,\n  (q15_t)0x324, (q15_t)0x800a, (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x1f6, (q15_t)0x8004,\n  (q15_t)0x192, (q15_t)0x8003, (q15_t)0x12d, (q15_t)0x8002, (q15_t)0xc9, (q15_t)0x8001, (q15_t)0x64, (q15_t)0x8001\n};\n\n    const q15_t __ALIGNED(4) cos_factorsQ15_512[512] = {\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ff9, (q15_t)0x7ff7,\n  (q15_t)0x7ff4, (q15_t)0x7ff2, (q15_t)0x7fee, (q15_t)0x7feb, (q15_t)0x7fe7, (q15_t)0x7fe3, (q15_t)0x7fdf, (q15_t)0x7fda,\n  (q15_t)0x7fd6, (q15_t)0x7fd0, (q15_t)0x7fcb, (q15_t)0x7fc5, (q15_t)0x7fbf, (q15_t)0x7fb8, (q15_t)0x7fb1, (q15_t)0x7faa,\n  (q15_t)0x7fa3, (q15_t)0x7f9b, (q15_t)0x7f93, (q15_t)0x7f8b, (q15_t)0x7f82, (q15_t)0x7f79, (q15_t)0x7f70, (q15_t)0x7f67,\n  (q15_t)0x7f5d, (q15_t)0x7f53, (q15_t)0x7f48, (q15_t)0x7f3d, (q15_t)0x7f32, (q15_t)0x7f27, (q15_t)0x7f1b, (q15_t)0x7f0f,\n  (q15_t)0x7f03, (q15_t)0x7ef6, (q15_t)0x7ee9, (q15_t)0x7edc, (q15_t)0x7ecf, (q15_t)0x7ec1, (q15_t)0x7eb3, (q15_t)0x7ea4,\n  (q15_t)0x7e95, (q15_t)0x7e86, (q15_t)0x7e77, (q15_t)0x7e67, (q15_t)0x7e57, (q15_t)0x7e47, (q15_t)0x7e37, (q15_t)0x7e26,\n  (q15_t)0x7e14, (q15_t)0x7e03, (q15_t)0x7df1, (q15_t)0x7ddf, (q15_t)0x7dcd, (q15_t)0x7dba, (q15_t)0x7da7, (q15_t)0x7d94,\n  (q15_t)0x7d80, (q15_t)0x7d6c, (q15_t)0x7d58, (q15_t)0x7d43, (q15_t)0x7d2f, (q15_t)0x7d19, (q15_t)0x7d04, (q15_t)0x7cee,\n  (q15_t)0x7cd8, (q15_t)0x7cc2, (q15_t)0x7cab, (q15_t)0x7c94, (q15_t)0x7c7d, (q15_t)0x7c66, (q15_t)0x7c4e, (q15_t)0x7c36,\n  (q15_t)0x7c1d, (q15_t)0x7c05, (q15_t)0x7beb, (q15_t)0x7bd2, (q15_t)0x7bb9, (q15_t)0x7b9f, (q15_t)0x7b84, (q15_t)0x7b6a,\n  (q15_t)0x7b4f, (q15_t)0x7b34, (q15_t)0x7b19, (q15_t)0x7afd, (q15_t)0x7ae1, (q15_t)0x7ac5, (q15_t)0x7aa8, (q15_t)0x7a8b,\n  (q15_t)0x7a6e, (q15_t)0x7a50, (q15_t)0x7a33, (q15_t)0x7a15, (q15_t)0x79f6, (q15_t)0x79d8, (q15_t)0x79b9, (q15_t)0x7999,\n  (q15_t)0x797a, (q15_t)0x795a, (q15_t)0x793a, (q15_t)0x7919, (q15_t)0x78f9, (q15_t)0x78d8, (q15_t)0x78b6, (q15_t)0x7895,\n  (q15_t)0x7873, (q15_t)0x7851, (q15_t)0x782e, (q15_t)0x780c, (q15_t)0x77e9, (q15_t)0x77c5, (q15_t)0x77a2, (q15_t)0x777e,\n  (q15_t)0x775a, (q15_t)0x7735, (q15_t)0x7710, (q15_t)0x76eb, (q15_t)0x76c6, (q15_t)0x76a0, (q15_t)0x767b, (q15_t)0x7654,\n  (q15_t)0x762e, (q15_t)0x7607, (q15_t)0x75e0, (q15_t)0x75b9, (q15_t)0x7591, (q15_t)0x7569, (q15_t)0x7541, (q15_t)0x7519,\n  (q15_t)0x74f0, (q15_t)0x74c7, (q15_t)0x749e, (q15_t)0x7474, (q15_t)0x744a, (q15_t)0x7420, (q15_t)0x73f6, (q15_t)0x73cb,\n  (q15_t)0x73a0, (q15_t)0x7375, (q15_t)0x7349, (q15_t)0x731d, (q15_t)0x72f1, (q15_t)0x72c5, (q15_t)0x7298, (q15_t)0x726b,\n  (q15_t)0x723e, (q15_t)0x7211, (q15_t)0x71e3, (q15_t)0x71b5, (q15_t)0x7186, (q15_t)0x7158, (q15_t)0x7129, (q15_t)0x70fa,\n  (q15_t)0x70cb, (q15_t)0x709b, (q15_t)0x706b, (q15_t)0x703b, (q15_t)0x700a, (q15_t)0x6fda, (q15_t)0x6fa9, (q15_t)0x6f77,\n  (q15_t)0x6f46, (q15_t)0x6f14, (q15_t)0x6ee2, (q15_t)0x6eaf, (q15_t)0x6e7d, (q15_t)0x6e4a, (q15_t)0x6e17, (q15_t)0x6de3,\n  (q15_t)0x6db0, (q15_t)0x6d7c, (q15_t)0x6d48, (q15_t)0x6d13, (q15_t)0x6cde, (q15_t)0x6ca9, (q15_t)0x6c74, (q15_t)0x6c3f,\n  (q15_t)0x6c09, (q15_t)0x6bd3, (q15_t)0x6b9c, (q15_t)0x6b66, (q15_t)0x6b2f, (q15_t)0x6af8, (q15_t)0x6ac1, (q15_t)0x6a89,\n  (q15_t)0x6a51, (q15_t)0x6a19, (q15_t)0x69e1, (q15_t)0x69a8, (q15_t)0x696f, (q15_t)0x6936, (q15_t)0x68fd, (q15_t)0x68c3,\n  (q15_t)0x6889, (q15_t)0x684f, (q15_t)0x6815, (q15_t)0x67da, (q15_t)0x679f, (q15_t)0x6764, (q15_t)0x6729, (q15_t)0x66ed,\n  (q15_t)0x66b1, (q15_t)0x6675, (q15_t)0x6639, (q15_t)0x65fc, (q15_t)0x65bf, (q15_t)0x6582, (q15_t)0x6545, (q15_t)0x6507,\n  (q15_t)0x64c9, (q15_t)0x648b, (q15_t)0x644d, (q15_t)0x640e, (q15_t)0x63cf, (q15_t)0x6390, (q15_t)0x6351, (q15_t)0x6311,\n  (q15_t)0x62d2, (q15_t)0x6292, (q15_t)0x6251, (q15_t)0x6211, (q15_t)0x61d0, (q15_t)0x618f, (q15_t)0x614e, (q15_t)0x610d,\n  (q15_t)0x60cb, (q15_t)0x6089, (q15_t)0x6047, (q15_t)0x6004, (q15_t)0x5fc2, (q15_t)0x5f7f, (q15_t)0x5f3c, (q15_t)0x5ef9,\n  (q15_t)0x5eb5, (q15_t)0x5e71, (q15_t)0x5e2d, (q15_t)0x5de9, (q15_t)0x5da5, (q15_t)0x5d60, (q15_t)0x5d1b, (q15_t)0x5cd6,\n  (q15_t)0x5c91, (q15_t)0x5c4b, (q15_t)0x5c06, (q15_t)0x5bc0, (q15_t)0x5b79, (q15_t)0x5b33, (q15_t)0x5aec, (q15_t)0x5aa5,\n  (q15_t)0x5a5e, (q15_t)0x5a17, (q15_t)0x59d0, (q15_t)0x5988, (q15_t)0x5940, (q15_t)0x58f8, (q15_t)0x58af, (q15_t)0x5867,\n  (q15_t)0x581e, (q15_t)0x57d5, (q15_t)0x578c, (q15_t)0x5742, (q15_t)0x56f9, (q15_t)0x56af, (q15_t)0x5665, (q15_t)0x561a,\n  (q15_t)0x55d0, (q15_t)0x5585, (q15_t)0x553a, (q15_t)0x54ef, (q15_t)0x54a4, (q15_t)0x5458, (q15_t)0x540d, (q15_t)0x53c1,\n  (q15_t)0x5375, (q15_t)0x5328, (q15_t)0x52dc, (q15_t)0x528f, (q15_t)0x5242, (q15_t)0x51f5, (q15_t)0x51a8, (q15_t)0x515a,\n  (q15_t)0x510c, (q15_t)0x50bf, (q15_t)0x5070, (q15_t)0x5022, (q15_t)0x4fd4, (q15_t)0x4f85, (q15_t)0x4f36, (q15_t)0x4ee7,\n  (q15_t)0x4e98, (q15_t)0x4e48, (q15_t)0x4df9, (q15_t)0x4da9, (q15_t)0x4d59, (q15_t)0x4d09, (q15_t)0x4cb8, (q15_t)0x4c68,\n  (q15_t)0x4c17, (q15_t)0x4bc6, (q15_t)0x4b75, (q15_t)0x4b24, (q15_t)0x4ad2, (q15_t)0x4a81, (q15_t)0x4a2f, (q15_t)0x49dd,\n  (q15_t)0x498a, (q15_t)0x4938, (q15_t)0x48e6, (q15_t)0x4893, (q15_t)0x4840, (q15_t)0x47ed, (q15_t)0x479a, (q15_t)0x4746,\n  (q15_t)0x46f3, (q15_t)0x469f, (q15_t)0x464b, (q15_t)0x45f7, (q15_t)0x45a3, (q15_t)0x454e, (q15_t)0x44fa, (q15_t)0x44a5,\n  (q15_t)0x4450, (q15_t)0x43fb, (q15_t)0x43a5, (q15_t)0x4350, (q15_t)0x42fa, (q15_t)0x42a5, (q15_t)0x424f, (q15_t)0x41f9,\n  (q15_t)0x41a2, (q15_t)0x414c, (q15_t)0x40f6, (q15_t)0x409f, (q15_t)0x4048, (q15_t)0x3ff1, (q15_t)0x3f9a, (q15_t)0x3f43,\n  (q15_t)0x3eeb, (q15_t)0x3e93, (q15_t)0x3e3c, (q15_t)0x3de4, (q15_t)0x3d8c, (q15_t)0x3d33, (q15_t)0x3cdb, (q15_t)0x3c83,\n  (q15_t)0x3c2a, (q15_t)0x3bd1, (q15_t)0x3b78, (q15_t)0x3b1f, (q15_t)0x3ac6, (q15_t)0x3a6c, (q15_t)0x3a13, (q15_t)0x39b9,\n  (q15_t)0x395f, (q15_t)0x3906, (q15_t)0x38ab, (q15_t)0x3851, (q15_t)0x37f7, (q15_t)0x379c, (q15_t)0x3742, (q15_t)0x36e7,\n  (q15_t)0x368c, (q15_t)0x3631, (q15_t)0x35d6, (q15_t)0x357b, (q15_t)0x351f, (q15_t)0x34c4, (q15_t)0x3468, (q15_t)0x340c,\n  (q15_t)0x33b0, (q15_t)0x3354, (q15_t)0x32f8, (q15_t)0x329c, (q15_t)0x3240, (q15_t)0x31e3, (q15_t)0x3186, (q15_t)0x312a,\n  (q15_t)0x30cd, (q15_t)0x3070, (q15_t)0x3013, (q15_t)0x2fb5, (q15_t)0x2f58, (q15_t)0x2efb, (q15_t)0x2e9d, (q15_t)0x2e3f,\n  (q15_t)0x2de2, (q15_t)0x2d84, (q15_t)0x2d26, (q15_t)0x2cc8, (q15_t)0x2c69, (q15_t)0x2c0b, (q15_t)0x2bad, (q15_t)0x2b4e,\n  (q15_t)0x2aef, (q15_t)0x2a91, (q15_t)0x2a32, (q15_t)0x29d3, (q15_t)0x2974, (q15_t)0x2915, (q15_t)0x28b5, (q15_t)0x2856,\n  (q15_t)0x27f6, (q15_t)0x2797, (q15_t)0x2737, (q15_t)0x26d8, (q15_t)0x2678, (q15_t)0x2618, (q15_t)0x25b8, (q15_t)0x2558,\n  (q15_t)0x24f7, (q15_t)0x2497, (q15_t)0x2437, (q15_t)0x23d6, (q15_t)0x2376, (q15_t)0x2315, (q15_t)0x22b4, (q15_t)0x2254,\n  (q15_t)0x21f3, (q15_t)0x2192, (q15_t)0x2131, (q15_t)0x20d0, (q15_t)0x206e, (q15_t)0x200d, (q15_t)0x1fac, (q15_t)0x1f4a,\n  (q15_t)0x1ee9, (q15_t)0x1e87, (q15_t)0x1e25, (q15_t)0x1dc4, (q15_t)0x1d62, (q15_t)0x1d00, (q15_t)0x1c9e, (q15_t)0x1c3c,\n  (q15_t)0x1bda, (q15_t)0x1b78, (q15_t)0x1b16, (q15_t)0x1ab3, (q15_t)0x1a51, (q15_t)0x19ef, (q15_t)0x198c, (q15_t)0x192a,\n  (q15_t)0x18c7, (q15_t)0x1864, (q15_t)0x1802, (q15_t)0x179f, (q15_t)0x173c, (q15_t)0x16d9, (q15_t)0x1676, (q15_t)0x1613,\n  (q15_t)0x15b0, (q15_t)0x154d, (q15_t)0x14ea, (q15_t)0x1487, (q15_t)0x1423, (q15_t)0x13c0, (q15_t)0x135d, (q15_t)0x12f9,\n  (q15_t)0x1296, (q15_t)0x1232, (q15_t)0x11cf, (q15_t)0x116b, (q15_t)0x1108, (q15_t)0x10a4, (q15_t)0x1040, (q15_t)0xfdd,\n  (q15_t)0xf79, (q15_t)0xf15, (q15_t)0xeb1, (q15_t)0xe4d, (q15_t)0xde9, (q15_t)0xd85, (q15_t)0xd21, (q15_t)0xcbd,\n  (q15_t)0xc59, (q15_t)0xbf5, (q15_t)0xb91, (q15_t)0xb2d, (q15_t)0xac9, (q15_t)0xa65, (q15_t)0xa00, (q15_t)0x99c,\n  (q15_t)0x938, (q15_t)0x8d4, (q15_t)0x86f, (q15_t)0x80b, (q15_t)0x7a7, (q15_t)0x742, (q15_t)0x6de, (q15_t)0x67a,\n  (q15_t)0x615, (q15_t)0x5b1, (q15_t)0x54c, (q15_t)0x4e8, (q15_t)0x483, (q15_t)0x41f, (q15_t)0x3ba, (q15_t)0x356,\n  (q15_t)0x2f1, (q15_t)0x28d, (q15_t)0x228, (q15_t)0x1c4, (q15_t)0x15f, (q15_t)0xfb, (q15_t)0x96, (q15_t)0x32\n};\n\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_2048)\n    const q15_t __ALIGNED(4) WeightsQ15_2048[4096] = {\n  (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffb5,\n  (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff83, (q15_t)0x7fff, (q15_t)0xff6a, (q15_t)0x7fff, (q15_t)0xff51,\n  (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff1e, (q15_t)0x7fff, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfeec,\n  (q15_t)0x7ffe, (q15_t)0xfed3, (q15_t)0x7ffe, (q15_t)0xfeba, (q15_t)0x7ffe, (q15_t)0xfea1, (q15_t)0x7ffd, (q15_t)0xfe88,\n  (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffd, (q15_t)0xfe55, (q15_t)0x7ffc, (q15_t)0xfe3c, (q15_t)0x7ffc, (q15_t)0xfe23,\n  (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffb, (q15_t)0xfdf1, (q15_t)0x7ffb, (q15_t)0xfdd8, (q15_t)0x7ffa, (q15_t)0xfdbe,\n  (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ff9, (q15_t)0xfd8c, (q15_t)0x7ff9, (q15_t)0xfd73, (q15_t)0x7ff8, (q15_t)0xfd5a,\n  (q15_t)0x7ff8, (q15_t)0xfd41, (q15_t)0x7ff7, (q15_t)0xfd28, (q15_t)0x7ff7, (q15_t)0xfd0f, (q15_t)0x7ff6, (q15_t)0xfcf5,\n  (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff5, (q15_t)0xfcc3, (q15_t)0x7ff4, (q15_t)0xfcaa, (q15_t)0x7ff4, (q15_t)0xfc91,\n  (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff2, (q15_t)0xfc5f, (q15_t)0x7ff2, (q15_t)0xfc46, (q15_t)0x7ff1, (q15_t)0xfc2c,\n  (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7fef, (q15_t)0xfbfa, (q15_t)0x7fee, (q15_t)0xfbe1, (q15_t)0x7fee, (q15_t)0xfbc8,\n  (q15_t)0x7fed, (q15_t)0xfbaf, (q15_t)0x7fec, (q15_t)0xfb96, (q15_t)0x7feb, (q15_t)0xfb7d, (q15_t)0x7fea, (q15_t)0xfb64,\n  (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe8, (q15_t)0xfb31, (q15_t)0x7fe7, (q15_t)0xfb18, (q15_t)0x7fe6, (q15_t)0xfaff,\n  (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe4, (q15_t)0xfacd, (q15_t)0x7fe3, (q15_t)0xfab4, (q15_t)0x7fe2, (q15_t)0xfa9b,\n  (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fe0, (q15_t)0xfa68, (q15_t)0x7fdf, (q15_t)0xfa4f, (q15_t)0x7fde, (q15_t)0xfa36,\n  (q15_t)0x7fdd, (q15_t)0xfa1d, (q15_t)0x7fdc, (q15_t)0xfa04, (q15_t)0x7fda, (q15_t)0xf9eb, (q15_t)0x7fd9, (q15_t)0xf9d2,\n  (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd7, (q15_t)0xf9a0, (q15_t)0x7fd6, (q15_t)0xf986, (q15_t)0x7fd4, (q15_t)0xf96d,\n  (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fd2, (q15_t)0xf93b, (q15_t)0x7fd0, (q15_t)0xf922, (q15_t)0x7fcf, (q15_t)0xf909,\n  (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fcc, (q15_t)0xf8d7, (q15_t)0x7fcb, (q15_t)0xf8be, (q15_t)0x7fc9, (q15_t)0xf8a5,\n  (q15_t)0x7fc8, (q15_t)0xf88b, (q15_t)0x7fc6, (q15_t)0xf872, (q15_t)0x7fc5, (q15_t)0xf859, (q15_t)0x7fc3, (q15_t)0xf840,\n  (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fc0, (q15_t)0xf80e, (q15_t)0x7fbf, (q15_t)0xf7f5, (q15_t)0x7fbd, (q15_t)0xf7dc,\n  (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fba, (q15_t)0xf7aa, (q15_t)0x7fb8, (q15_t)0xf791, (q15_t)0x7fb7, (q15_t)0xf778,\n  (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fb3, (q15_t)0xf745, (q15_t)0x7fb1, (q15_t)0xf72c, (q15_t)0x7fb0, (q15_t)0xf713,\n  (q15_t)0x7fae, (q15_t)0xf6fa, (q15_t)0x7fac, (q15_t)0xf6e1, (q15_t)0x7faa, (q15_t)0xf6c8, (q15_t)0x7fa9, (q15_t)0xf6af,\n  (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7fa5, (q15_t)0xf67d, (q15_t)0x7fa3, (q15_t)0xf664, (q15_t)0x7fa1, (q15_t)0xf64b,\n  (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f9d, (q15_t)0xf619, (q15_t)0x7f9b, (q15_t)0xf600, (q15_t)0x7f99, (q15_t)0xf5e7,\n  (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f95, (q15_t)0xf5b4, (q15_t)0x7f93, (q15_t)0xf59b, (q15_t)0x7f91, (q15_t)0xf582,\n  (q15_t)0x7f8f, (q15_t)0xf569, (q15_t)0x7f8d, (q15_t)0xf550, (q15_t)0x7f8b, (q15_t)0xf537, (q15_t)0x7f89, (q15_t)0xf51e,\n  (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f85, (q15_t)0xf4ec, (q15_t)0x7f82, (q15_t)0xf4d3, (q15_t)0x7f80, (q15_t)0xf4ba,\n  (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f7c, (q15_t)0xf488, (q15_t)0x7f79, (q15_t)0xf46f, (q15_t)0x7f77, (q15_t)0xf456,\n  (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f72, (q15_t)0xf424, (q15_t)0x7f70, (q15_t)0xf40b, (q15_t)0x7f6e, (q15_t)0xf3f2,\n  (q15_t)0x7f6b, (q15_t)0xf3d9, (q15_t)0x7f69, (q15_t)0xf3c0, (q15_t)0x7f67, (q15_t)0xf3a7, (q15_t)0x7f64, (q15_t)0xf38e,\n  (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f5f, (q15_t)0xf35c, (q15_t)0x7f5d, (q15_t)0xf343, (q15_t)0x7f5a, (q15_t)0xf32a,\n  (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f55, (q15_t)0xf2f8, (q15_t)0x7f53, (q15_t)0xf2df, (q15_t)0x7f50, (q15_t)0xf2c6,\n  (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f4b, (q15_t)0xf294, (q15_t)0x7f48, (q15_t)0xf27b, (q15_t)0x7f45, (q15_t)0xf262,\n  (q15_t)0x7f43, (q15_t)0xf249, (q15_t)0x7f40, (q15_t)0xf230, (q15_t)0x7f3d, (q15_t)0xf217, (q15_t)0x7f3b, (q15_t)0xf1fe,\n  (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f35, (q15_t)0xf1cc, (q15_t)0x7f32, (q15_t)0xf1b3, (q15_t)0x7f2f, (q15_t)0xf19a,\n  (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f2a, (q15_t)0xf168, (q15_t)0x7f27, (q15_t)0xf14f, (q15_t)0x7f24, (q15_t)0xf136,\n  (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f1e, (q15_t)0xf104, (q15_t)0x7f1b, (q15_t)0xf0eb, (q15_t)0x7f18, (q15_t)0xf0d2,\n  (q15_t)0x7f15, (q15_t)0xf0b9, (q15_t)0x7f12, (q15_t)0xf0a0, (q15_t)0x7f0f, (q15_t)0xf087, (q15_t)0x7f0c, (q15_t)0xf06e,\n  (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7f06, (q15_t)0xf03c, (q15_t)0x7f03, (q15_t)0xf023, (q15_t)0x7f00, (q15_t)0xf00b,\n  (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7ef9, (q15_t)0xefd9, (q15_t)0x7ef6, (q15_t)0xefc0, (q15_t)0x7ef3, (q15_t)0xefa7,\n  (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7eed, (q15_t)0xef75, (q15_t)0x7ee9, (q15_t)0xef5c, (q15_t)0x7ee6, (q15_t)0xef43,\n  (q15_t)0x7ee3, (q15_t)0xef2a, (q15_t)0x7edf, (q15_t)0xef11, (q15_t)0x7edc, (q15_t)0xeef8, (q15_t)0x7ed9, (q15_t)0xeedf,\n  (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ed2, (q15_t)0xeeae, (q15_t)0x7ecf, (q15_t)0xee95, (q15_t)0x7ecb, (q15_t)0xee7c,\n  (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7ec4, (q15_t)0xee4a, (q15_t)0x7ec1, (q15_t)0xee31, (q15_t)0x7ebd, (q15_t)0xee18,\n  (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eb6, (q15_t)0xede7, (q15_t)0x7eb3, (q15_t)0xedce, (q15_t)0x7eaf, (q15_t)0xedb5,\n  (q15_t)0x7eab, (q15_t)0xed9c, (q15_t)0x7ea8, (q15_t)0xed83, (q15_t)0x7ea4, (q15_t)0xed6a, (q15_t)0x7ea1, (q15_t)0xed51,\n  (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e99, (q15_t)0xed20, (q15_t)0x7e95, (q15_t)0xed07, (q15_t)0x7e92, (q15_t)0xecee,\n  (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e8a, (q15_t)0xecbc, (q15_t)0x7e86, (q15_t)0xeca3, (q15_t)0x7e83, (q15_t)0xec8a,\n  (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e7b, (q15_t)0xec59, (q15_t)0x7e77, (q15_t)0xec40, (q15_t)0x7e73, (q15_t)0xec27,\n  (q15_t)0x7e6f, (q15_t)0xec0e, (q15_t)0x7e6b, (q15_t)0xebf5, (q15_t)0x7e67, (q15_t)0xebdd, (q15_t)0x7e63, (q15_t)0xebc4,\n  (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e5b, (q15_t)0xeb92, (q15_t)0x7e57, (q15_t)0xeb79, (q15_t)0x7e53, (q15_t)0xeb61,\n  (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e4b, (q15_t)0xeb2f, (q15_t)0x7e47, (q15_t)0xeb16, (q15_t)0x7e43, (q15_t)0xeafd,\n  (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e3b, (q15_t)0xeacc, (q15_t)0x7e37, (q15_t)0xeab3, (q15_t)0x7e32, (q15_t)0xea9a,\n  (q15_t)0x7e2e, (q15_t)0xea81, (q15_t)0x7e2a, (q15_t)0xea69, (q15_t)0x7e26, (q15_t)0xea50, (q15_t)0x7e21, (q15_t)0xea37,\n  (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e19, (q15_t)0xea06, (q15_t)0x7e14, (q15_t)0xe9ed, (q15_t)0x7e10, (q15_t)0xe9d4,\n  (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7e07, (q15_t)0xe9a3, (q15_t)0x7e03, (q15_t)0xe98a, (q15_t)0x7dff, (q15_t)0xe971,\n  (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7df6, (q15_t)0xe940, (q15_t)0x7df1, (q15_t)0xe927, (q15_t)0x7ded, (q15_t)0xe90e,\n  (q15_t)0x7de8, (q15_t)0xe8f6, (q15_t)0x7de4, (q15_t)0xe8dd, (q15_t)0x7ddf, (q15_t)0xe8c4, (q15_t)0x7dda, (q15_t)0xe8ab,\n  (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dd1, (q15_t)0xe87a, (q15_t)0x7dcd, (q15_t)0xe861, (q15_t)0x7dc8, (q15_t)0xe849,\n  (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7dbf, (q15_t)0xe817, (q15_t)0x7dba, (q15_t)0xe7fe, (q15_t)0x7db5, (q15_t)0xe7e6,\n  (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7dac, (q15_t)0xe7b4, (q15_t)0x7da7, (q15_t)0xe79c, (q15_t)0x7da2, (q15_t)0xe783,\n  (q15_t)0x7d9d, (q15_t)0xe76a, (q15_t)0x7d98, (q15_t)0xe752, (q15_t)0x7d94, (q15_t)0xe739, (q15_t)0x7d8f, (q15_t)0xe720,\n  (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d85, (q15_t)0xe6ef, (q15_t)0x7d80, (q15_t)0xe6d6, (q15_t)0x7d7b, (q15_t)0xe6be,\n  (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d71, (q15_t)0xe68d, (q15_t)0x7d6c, (q15_t)0xe674, (q15_t)0x7d67, (q15_t)0xe65b,\n  (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d5d, (q15_t)0xe62a, (q15_t)0x7d58, (q15_t)0xe611, (q15_t)0x7d53, (q15_t)0xe5f9,\n  (q15_t)0x7d4e, (q15_t)0xe5e0, (q15_t)0x7d49, (q15_t)0xe5c8, (q15_t)0x7d43, (q15_t)0xe5af, (q15_t)0x7d3e, (q15_t)0xe596,\n  (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d34, (q15_t)0xe565, (q15_t)0x7d2f, (q15_t)0xe54d, (q15_t)0x7d29, (q15_t)0xe534,\n  (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d1f, (q15_t)0xe503, (q15_t)0x7d19, (q15_t)0xe4ea, (q15_t)0x7d14, (q15_t)0xe4d2,\n  (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7d09, (q15_t)0xe4a1, (q15_t)0x7d04, (q15_t)0xe488, (q15_t)0x7cff, (q15_t)0xe470,\n  (q15_t)0x7cf9, (q15_t)0xe457, (q15_t)0x7cf4, (q15_t)0xe43f, (q15_t)0x7cee, (q15_t)0xe426, (q15_t)0x7ce9, (q15_t)0xe40e,\n  (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7cde, (q15_t)0xe3dc, (q15_t)0x7cd8, (q15_t)0xe3c4, (q15_t)0x7cd3, (q15_t)0xe3ab,\n  (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7cc8, (q15_t)0xe37a, (q15_t)0x7cc2, (q15_t)0xe362, (q15_t)0x7cbc, (q15_t)0xe349,\n  (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7cb1, (q15_t)0xe318, (q15_t)0x7cab, (q15_t)0xe300, (q15_t)0x7ca6, (q15_t)0xe2e8,\n  (q15_t)0x7ca0, (q15_t)0xe2cf, (q15_t)0x7c9a, (q15_t)0xe2b7, (q15_t)0x7c94, (q15_t)0xe29e, (q15_t)0x7c8f, (q15_t)0xe286,\n  (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c83, (q15_t)0xe255, (q15_t)0x7c7d, (q15_t)0xe23c, (q15_t)0x7c77, (q15_t)0xe224,\n  (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c6c, (q15_t)0xe1f3, (q15_t)0x7c66, (q15_t)0xe1db, (q15_t)0x7c60, (q15_t)0xe1c2,\n  (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c54, (q15_t)0xe191, (q15_t)0x7c4e, (q15_t)0xe179, (q15_t)0x7c48, (q15_t)0xe160,\n  (q15_t)0x7c42, (q15_t)0xe148, (q15_t)0x7c3c, (q15_t)0xe130, (q15_t)0x7c36, (q15_t)0xe117, (q15_t)0x7c30, (q15_t)0xe0ff,\n  (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c23, (q15_t)0xe0ce, (q15_t)0x7c1d, (q15_t)0xe0b6, (q15_t)0x7c17, (q15_t)0xe09d,\n  (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7c0b, (q15_t)0xe06d, (q15_t)0x7c05, (q15_t)0xe054, (q15_t)0x7bfe, (q15_t)0xe03c,\n  (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bf2, (q15_t)0xe00b, (q15_t)0x7beb, (q15_t)0xdff3, (q15_t)0x7be5, (q15_t)0xdfdb,\n  (q15_t)0x7bdf, (q15_t)0xdfc2, (q15_t)0x7bd9, (q15_t)0xdfaa, (q15_t)0x7bd2, (q15_t)0xdf92, (q15_t)0x7bcc, (q15_t)0xdf79,\n  (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bbf, (q15_t)0xdf49, (q15_t)0x7bb9, (q15_t)0xdf30, (q15_t)0x7bb2, (q15_t)0xdf18,\n  (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7ba5, (q15_t)0xdee8, (q15_t)0x7b9f, (q15_t)0xdecf, (q15_t)0x7b98, (q15_t)0xdeb7,\n  (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b8b, (q15_t)0xde87, (q15_t)0x7b84, (q15_t)0xde6e, (q15_t)0x7b7e, (q15_t)0xde56,\n  (q15_t)0x7b77, (q15_t)0xde3e, (q15_t)0x7b71, (q15_t)0xde26, (q15_t)0x7b6a, (q15_t)0xde0d, (q15_t)0x7b63, (q15_t)0xddf5,\n  (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b56, (q15_t)0xddc5, (q15_t)0x7b4f, (q15_t)0xddac, (q15_t)0x7b48, (q15_t)0xdd94,\n  (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b3b, (q15_t)0xdd64, (q15_t)0x7b34, (q15_t)0xdd4c, (q15_t)0x7b2d, (q15_t)0xdd33,\n  (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b1f, (q15_t)0xdd03, (q15_t)0x7b19, (q15_t)0xdceb, (q15_t)0x7b12, (q15_t)0xdcd3,\n  (q15_t)0x7b0b, (q15_t)0xdcbb, (q15_t)0x7b04, (q15_t)0xdca2, (q15_t)0x7afd, (q15_t)0xdc8a, (q15_t)0x7af6, (q15_t)0xdc72,\n  (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7ae8, (q15_t)0xdc42, (q15_t)0x7ae1, (q15_t)0xdc2a, (q15_t)0x7ada, (q15_t)0xdc12,\n  (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7acc, (q15_t)0xdbe1, (q15_t)0x7ac5, (q15_t)0xdbc9, (q15_t)0x7abd, (q15_t)0xdbb1,\n  (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7aaf, (q15_t)0xdb81, (q15_t)0x7aa8, (q15_t)0xdb69, (q15_t)0x7aa1, (q15_t)0xdb51,\n  (q15_t)0x7a9a, (q15_t)0xdb39, (q15_t)0x7a92, (q15_t)0xdb21, (q15_t)0x7a8b, (q15_t)0xdb09, (q15_t)0x7a84, (q15_t)0xdaf1,\n  (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a75, (q15_t)0xdac0, (q15_t)0x7a6e, (q15_t)0xdaa8, (q15_t)0x7a67, (q15_t)0xda90,\n  (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a58, (q15_t)0xda60, (q15_t)0x7a50, (q15_t)0xda48, (q15_t)0x7a49, (q15_t)0xda30,\n  (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a3a, (q15_t)0xda00, (q15_t)0x7a33, (q15_t)0xd9e8, (q15_t)0x7a2b, (q15_t)0xd9d0,\n  (q15_t)0x7a24, (q15_t)0xd9b8, (q15_t)0x7a1c, (q15_t)0xd9a0, (q15_t)0x7a15, (q15_t)0xd988, (q15_t)0x7a0d, (q15_t)0xd970,\n  (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x79fe, (q15_t)0xd940, (q15_t)0x79f6, (q15_t)0xd928, (q15_t)0x79ef, (q15_t)0xd911,\n  (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79df, (q15_t)0xd8e1, (q15_t)0x79d8, (q15_t)0xd8c9, (q15_t)0x79d0, (q15_t)0xd8b1,\n  (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79c0, (q15_t)0xd881, (q15_t)0x79b9, (q15_t)0xd869, (q15_t)0x79b1, (q15_t)0xd851,\n  (q15_t)0x79a9, (q15_t)0xd839, (q15_t)0x79a1, (q15_t)0xd821, (q15_t)0x7999, (q15_t)0xd80a, (q15_t)0x7992, (q15_t)0xd7f2,\n  (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7982, (q15_t)0xd7c2, (q15_t)0x797a, (q15_t)0xd7aa, (q15_t)0x7972, (q15_t)0xd792,\n  (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x7962, (q15_t)0xd763, (q15_t)0x795a, (q15_t)0xd74b, (q15_t)0x7952, (q15_t)0xd733,\n  (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x7942, (q15_t)0xd703, (q15_t)0x793a, (q15_t)0xd6eb, (q15_t)0x7932, (q15_t)0xd6d4,\n  (q15_t)0x792a, (q15_t)0xd6bc, (q15_t)0x7922, (q15_t)0xd6a4, (q15_t)0x7919, (q15_t)0xd68c, (q15_t)0x7911, (q15_t)0xd675,\n  (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x7901, (q15_t)0xd645, (q15_t)0x78f9, (q15_t)0xd62d, (q15_t)0x78f1, (q15_t)0xd615,\n  (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78e0, (q15_t)0xd5e6, (q15_t)0x78d8, (q15_t)0xd5ce, (q15_t)0x78cf, (q15_t)0xd5b7,\n  (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78bf, (q15_t)0xd587, (q15_t)0x78b6, (q15_t)0xd56f, (q15_t)0x78ae, (q15_t)0xd558,\n  (q15_t)0x78a6, (q15_t)0xd540, (q15_t)0x789d, (q15_t)0xd528, (q15_t)0x7895, (q15_t)0xd511, (q15_t)0x788c, (q15_t)0xd4f9,\n  (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x787c, (q15_t)0xd4ca, (q15_t)0x7873, (q15_t)0xd4b2, (q15_t)0x786b, (q15_t)0xd49a,\n  (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7859, (q15_t)0xd46b, (q15_t)0x7851, (q15_t)0xd453, (q15_t)0x7848, (q15_t)0xd43c,\n  (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x7837, (q15_t)0xd40d, (q15_t)0x782e, (q15_t)0xd3f5, (q15_t)0x7826, (q15_t)0xd3dd,\n  (q15_t)0x781d, (q15_t)0xd3c6, (q15_t)0x7814, (q15_t)0xd3ae, (q15_t)0x780c, (q15_t)0xd397, (q15_t)0x7803, (q15_t)0xd37f,\n  (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77f1, (q15_t)0xd350, (q15_t)0x77e9, (q15_t)0xd338, (q15_t)0x77e0, (q15_t)0xd321,\n  (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77ce, (q15_t)0xd2f2, (q15_t)0x77c5, (q15_t)0xd2da, (q15_t)0x77bc, (q15_t)0xd2c3,\n  (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x77ab, (q15_t)0xd294, (q15_t)0x77a2, (q15_t)0xd27c, (q15_t)0x7799, (q15_t)0xd265,\n  (q15_t)0x7790, (q15_t)0xd24d, (q15_t)0x7787, (q15_t)0xd236, (q15_t)0x777e, (q15_t)0xd21e, (q15_t)0x7775, (q15_t)0xd207,\n  (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x7763, (q15_t)0xd1d8, (q15_t)0x775a, (q15_t)0xd1c1, (q15_t)0x7751, (q15_t)0xd1a9,\n  (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x773e, (q15_t)0xd17a, (q15_t)0x7735, (q15_t)0xd163, (q15_t)0x772c, (q15_t)0xd14b,\n  (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x771a, (q15_t)0xd11d, (q15_t)0x7710, (q15_t)0xd105, (q15_t)0x7707, (q15_t)0xd0ee,\n  (q15_t)0x76fe, (q15_t)0xd0d7, (q15_t)0x76f5, (q15_t)0xd0bf, (q15_t)0x76eb, (q15_t)0xd0a8, (q15_t)0x76e2, (q15_t)0xd091,\n  (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76cf, (q15_t)0xd062, (q15_t)0x76c6, (q15_t)0xd04b, (q15_t)0x76bd, (q15_t)0xd033,\n  (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x76aa, (q15_t)0xd005, (q15_t)0x76a0, (q15_t)0xcfed, (q15_t)0x7697, (q15_t)0xcfd6,\n  (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x7684, (q15_t)0xcfa7, (q15_t)0x767b, (q15_t)0xcf90, (q15_t)0x7671, (q15_t)0xcf79,\n  (q15_t)0x7668, (q15_t)0xcf62, (q15_t)0x765e, (q15_t)0xcf4a, (q15_t)0x7654, (q15_t)0xcf33, (q15_t)0x764b, (q15_t)0xcf1c,\n  (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x7638, (q15_t)0xceee, (q15_t)0x762e, (q15_t)0xced6, (q15_t)0x7624, (q15_t)0xcebf,\n  (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x7611, (q15_t)0xce91, (q15_t)0x7607, (q15_t)0xce7a, (q15_t)0x75fd, (q15_t)0xce62,\n  (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75ea, (q15_t)0xce34, (q15_t)0x75e0, (q15_t)0xce1d, (q15_t)0x75d6, (q15_t)0xce06,\n  (q15_t)0x75cc, (q15_t)0xcdef, (q15_t)0x75c3, (q15_t)0xcdd8, (q15_t)0x75b9, (q15_t)0xcdc0, (q15_t)0x75af, (q15_t)0xcda9,\n  (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x759b, (q15_t)0xcd7b, (q15_t)0x7591, (q15_t)0xcd64, (q15_t)0x7587, (q15_t)0xcd4d,\n  (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x7573, (q15_t)0xcd1f, (q15_t)0x7569, (q15_t)0xcd08, (q15_t)0x755f, (q15_t)0xccf1,\n  (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x754b, (q15_t)0xccc3, (q15_t)0x7541, (q15_t)0xccac, (q15_t)0x7537, (q15_t)0xcc95,\n  (q15_t)0x752d, (q15_t)0xcc7e, (q15_t)0x7523, (q15_t)0xcc67, (q15_t)0x7519, (q15_t)0xcc50, (q15_t)0x750f, (q15_t)0xcc39,\n  (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x74fa, (q15_t)0xcc0b, (q15_t)0x74f0, (q15_t)0xcbf4, (q15_t)0x74e6, (q15_t)0xcbdd,\n  (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74d1, (q15_t)0xcbaf, (q15_t)0x74c7, (q15_t)0xcb98, (q15_t)0x74bd, (q15_t)0xcb81,\n  (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x74a8, (q15_t)0xcb53, (q15_t)0x749e, (q15_t)0xcb3c, (q15_t)0x7493, (q15_t)0xcb25,\n  (q15_t)0x7489, (q15_t)0xcb0e, (q15_t)0x747e, (q15_t)0xcaf8, (q15_t)0x7474, (q15_t)0xcae1, (q15_t)0x746a, (q15_t)0xcaca,\n  (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x7455, (q15_t)0xca9c, (q15_t)0x744a, (q15_t)0xca85, (q15_t)0x7440, (q15_t)0xca6e,\n  (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x742b, (q15_t)0xca41, (q15_t)0x7420, (q15_t)0xca2a, (q15_t)0x7415, (q15_t)0xca13,\n  (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x7400, (q15_t)0xc9e6, (q15_t)0x73f6, (q15_t)0xc9cf, (q15_t)0x73eb, (q15_t)0xc9b8,\n  (q15_t)0x73e0, (q15_t)0xc9a1, (q15_t)0x73d6, (q15_t)0xc98b, (q15_t)0x73cb, (q15_t)0xc974, (q15_t)0x73c0, (q15_t)0xc95d,\n  (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x73ab, (q15_t)0xc930, (q15_t)0x73a0, (q15_t)0xc919, (q15_t)0x7395, (q15_t)0xc902,\n  (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x737f, (q15_t)0xc8d5, (q15_t)0x7375, (q15_t)0xc8be, (q15_t)0x736a, (q15_t)0xc8a8,\n  (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x7354, (q15_t)0xc87a, (q15_t)0x7349, (q15_t)0xc864, (q15_t)0x733e, (q15_t)0xc84d,\n  (q15_t)0x7333, (q15_t)0xc836, (q15_t)0x7328, (q15_t)0xc820, (q15_t)0x731d, (q15_t)0xc809, (q15_t)0x7312, (q15_t)0xc7f3,\n  (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x72fc, (q15_t)0xc7c5, (q15_t)0x72f1, (q15_t)0xc7af, (q15_t)0x72e6, (q15_t)0xc798,\n  (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72d0, (q15_t)0xc76b, (q15_t)0x72c5, (q15_t)0xc755, (q15_t)0x72ba, (q15_t)0xc73e,\n  (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x72a3, (q15_t)0xc711, (q15_t)0x7298, (q15_t)0xc6fa, (q15_t)0x728d, (q15_t)0xc6e4,\n  (q15_t)0x7282, (q15_t)0xc6ce, (q15_t)0x7276, (q15_t)0xc6b7, (q15_t)0x726b, (q15_t)0xc6a1, (q15_t)0x7260, (q15_t)0xc68a,\n  (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7249, (q15_t)0xc65d, (q15_t)0x723e, (q15_t)0xc647, (q15_t)0x7233, (q15_t)0xc630,\n  (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x721c, (q15_t)0xc603, (q15_t)0x7211, (q15_t)0xc5ed, (q15_t)0x7205, (q15_t)0xc5d7,\n  (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71ee, (q15_t)0xc5aa, (q15_t)0x71e3, (q15_t)0xc594, (q15_t)0x71d7, (q15_t)0xc57d,\n  (q15_t)0x71cc, (q15_t)0xc567, (q15_t)0x71c0, (q15_t)0xc551, (q15_t)0x71b5, (q15_t)0xc53a, (q15_t)0x71a9, (q15_t)0xc524,\n  (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x7192, (q15_t)0xc4f7, (q15_t)0x7186, (q15_t)0xc4e1, (q15_t)0x717b, (q15_t)0xc4cb,\n  (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x7164, (q15_t)0xc49e, (q15_t)0x7158, (q15_t)0xc488, (q15_t)0x714c, (q15_t)0xc472,\n  (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x7135, (q15_t)0xc445, (q15_t)0x7129, (q15_t)0xc42f, (q15_t)0x711d, (q15_t)0xc419,\n  (q15_t)0x7112, (q15_t)0xc403, (q15_t)0x7106, (q15_t)0xc3ec, (q15_t)0x70fa, (q15_t)0xc3d6, (q15_t)0x70ee, (q15_t)0xc3c0,\n  (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70d6, (q15_t)0xc394, (q15_t)0x70cb, (q15_t)0xc37d, (q15_t)0x70bf, (q15_t)0xc367,\n  (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x70a7, (q15_t)0xc33b, (q15_t)0x709b, (q15_t)0xc325, (q15_t)0x708f, (q15_t)0xc30f,\n  (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7077, (q15_t)0xc2e3, (q15_t)0x706b, (q15_t)0xc2cd, (q15_t)0x705f, (q15_t)0xc2b7,\n  (q15_t)0x7053, (q15_t)0xc2a0, (q15_t)0x7047, (q15_t)0xc28a, (q15_t)0x703b, (q15_t)0xc274, (q15_t)0x702f, (q15_t)0xc25e,\n  (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x7016, (q15_t)0xc232, (q15_t)0x700a, (q15_t)0xc21c, (q15_t)0x6ffe, (q15_t)0xc206,\n  (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fe6, (q15_t)0xc1da, (q15_t)0x6fda, (q15_t)0xc1c4, (q15_t)0x6fcd, (q15_t)0xc1ae,\n  (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6fb5, (q15_t)0xc183, (q15_t)0x6fa9, (q15_t)0xc16d, (q15_t)0x6f9c, (q15_t)0xc157,\n  (q15_t)0x6f90, (q15_t)0xc141, (q15_t)0x6f84, (q15_t)0xc12b, (q15_t)0x6f77, (q15_t)0xc115, (q15_t)0x6f6b, (q15_t)0xc0ff,\n  (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f52, (q15_t)0xc0d3, (q15_t)0x6f46, (q15_t)0xc0bd, (q15_t)0x6f39, (q15_t)0xc0a8,\n  (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6f20, (q15_t)0xc07c, (q15_t)0x6f14, (q15_t)0xc066, (q15_t)0x6f07, (q15_t)0xc050,\n  (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6eee, (q15_t)0xc025, (q15_t)0x6ee2, (q15_t)0xc00f, (q15_t)0x6ed5, (q15_t)0xbff9,\n  (q15_t)0x6ec9, (q15_t)0xbfe3, (q15_t)0x6ebc, (q15_t)0xbfce, (q15_t)0x6eaf, (q15_t)0xbfb8, (q15_t)0x6ea3, (q15_t)0xbfa2,\n  (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e89, (q15_t)0xbf77, (q15_t)0x6e7d, (q15_t)0xbf61, (q15_t)0x6e70, (q15_t)0xbf4b,\n  (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e57, (q15_t)0xbf20, (q15_t)0x6e4a, (q15_t)0xbf0a, (q15_t)0x6e3d, (q15_t)0xbef5,\n  (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6e24, (q15_t)0xbeca, (q15_t)0x6e17, (q15_t)0xbeb4, (q15_t)0x6e0a, (q15_t)0xbe9e,\n  (q15_t)0x6dfd, (q15_t)0xbe89, (q15_t)0x6df0, (q15_t)0xbe73, (q15_t)0x6de3, (q15_t)0xbe5e, (q15_t)0x6dd6, (q15_t)0xbe48,\n  (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6dbd, (q15_t)0xbe1d, (q15_t)0x6db0, (q15_t)0xbe07, (q15_t)0x6da3, (q15_t)0xbdf2,\n  (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d89, (q15_t)0xbdc7, (q15_t)0x6d7c, (q15_t)0xbdb1, (q15_t)0x6d6f, (q15_t)0xbd9c,\n  (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d55, (q15_t)0xbd71, (q15_t)0x6d48, (q15_t)0xbd5b, (q15_t)0x6d3a, (q15_t)0xbd46,\n  (q15_t)0x6d2d, (q15_t)0xbd30, (q15_t)0x6d20, (q15_t)0xbd1b, (q15_t)0x6d13, (q15_t)0xbd06, (q15_t)0x6d06, (q15_t)0xbcf0,\n  (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cec, (q15_t)0xbcc5, (q15_t)0x6cde, (q15_t)0xbcb0, (q15_t)0x6cd1, (q15_t)0xbc9b,\n  (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6cb7, (q15_t)0xbc70, (q15_t)0x6ca9, (q15_t)0xbc5b, (q15_t)0x6c9c, (q15_t)0xbc45,\n  (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c81, (q15_t)0xbc1b, (q15_t)0x6c74, (q15_t)0xbc05, (q15_t)0x6c67, (q15_t)0xbbf0,\n  (q15_t)0x6c59, (q15_t)0xbbdb, (q15_t)0x6c4c, (q15_t)0xbbc5, (q15_t)0x6c3f, (q15_t)0xbbb0, (q15_t)0x6c31, (q15_t)0xbb9b,\n  (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6c16, (q15_t)0xbb70, (q15_t)0x6c09, (q15_t)0xbb5b, (q15_t)0x6bfb, (q15_t)0xbb46,\n  (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6be0, (q15_t)0xbb1c, (q15_t)0x6bd3, (q15_t)0xbb06, (q15_t)0x6bc5, (q15_t)0xbaf1,\n  (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6baa, (q15_t)0xbac7, (q15_t)0x6b9c, (q15_t)0xbab2, (q15_t)0x6b8f, (q15_t)0xba9d,\n  (q15_t)0x6b81, (q15_t)0xba88, (q15_t)0x6b73, (q15_t)0xba73, (q15_t)0x6b66, (q15_t)0xba5d, (q15_t)0x6b58, (q15_t)0xba48,\n  (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b3d, (q15_t)0xba1e, (q15_t)0x6b2f, (q15_t)0xba09, (q15_t)0x6b21, (q15_t)0xb9f4,\n  (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6b06, (q15_t)0xb9ca, (q15_t)0x6af8, (q15_t)0xb9b5, (q15_t)0x6aea, (q15_t)0xb9a0,\n  (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6ace, (q15_t)0xb976, (q15_t)0x6ac1, (q15_t)0xb961, (q15_t)0x6ab3, (q15_t)0xb94c,\n  (q15_t)0x6aa5, (q15_t)0xb937, (q15_t)0x6a97, (q15_t)0xb922, (q15_t)0x6a89, (q15_t)0xb90d, (q15_t)0x6a7b, (q15_t)0xb8f8,\n  (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a5f, (q15_t)0xb8cf, (q15_t)0x6a51, (q15_t)0xb8ba, (q15_t)0x6a43, (q15_t)0xb8a5,\n  (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x6a27, (q15_t)0xb87b, (q15_t)0x6a19, (q15_t)0xb866, (q15_t)0x6a0b, (q15_t)0xb852,\n  (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69ef, (q15_t)0xb828, (q15_t)0x69e1, (q15_t)0xb813, (q15_t)0x69d3, (q15_t)0xb7fe,\n  (q15_t)0x69c4, (q15_t)0xb7ea, (q15_t)0x69b6, (q15_t)0xb7d5, (q15_t)0x69a8, (q15_t)0xb7c0, (q15_t)0x699a, (q15_t)0xb7ab,\n  (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x697d, (q15_t)0xb782, (q15_t)0x696f, (q15_t)0xb76d, (q15_t)0x6961, (q15_t)0xb758,\n  (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x6944, (q15_t)0xb72f, (q15_t)0x6936, (q15_t)0xb71a, (q15_t)0x6928, (q15_t)0xb706,\n  (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x690b, (q15_t)0xb6dd, (q15_t)0x68fd, (q15_t)0xb6c8, (q15_t)0x68ee, (q15_t)0xb6b3,\n  (q15_t)0x68e0, (q15_t)0xb69f, (q15_t)0x68d1, (q15_t)0xb68a, (q15_t)0x68c3, (q15_t)0xb676, (q15_t)0x68b5, (q15_t)0xb661,\n  (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x6898, (q15_t)0xb638, (q15_t)0x6889, (q15_t)0xb623, (q15_t)0x687b, (q15_t)0xb60f,\n  (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x685e, (q15_t)0xb5e6, (q15_t)0x684f, (q15_t)0xb5d1, (q15_t)0x6840, (q15_t)0xb5bd,\n  (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x6823, (q15_t)0xb594, (q15_t)0x6815, (q15_t)0xb57f, (q15_t)0x6806, (q15_t)0xb56b,\n  (q15_t)0x67f7, (q15_t)0xb557, (q15_t)0x67e9, (q15_t)0xb542, (q15_t)0x67da, (q15_t)0xb52e, (q15_t)0x67cb, (q15_t)0xb519,\n  (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x67ae, (q15_t)0xb4f1, (q15_t)0x679f, (q15_t)0xb4dc, (q15_t)0x6790, (q15_t)0xb4c8,\n  (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x6773, (q15_t)0xb49f, (q15_t)0x6764, (q15_t)0xb48b, (q15_t)0x6755, (q15_t)0xb477,\n  (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x6737, (q15_t)0xb44e, (q15_t)0x6729, (q15_t)0xb43a, (q15_t)0x671a, (q15_t)0xb426,\n  (q15_t)0x670b, (q15_t)0xb411, (q15_t)0x66fc, (q15_t)0xb3fd, (q15_t)0x66ed, (q15_t)0xb3e9, (q15_t)0x66de, (q15_t)0xb3d5,\n  (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x66c0, (q15_t)0xb3ac, (q15_t)0x66b1, (q15_t)0xb398, (q15_t)0x66a2, (q15_t)0xb384,\n  (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x6684, (q15_t)0xb35c, (q15_t)0x6675, (q15_t)0xb348, (q15_t)0x6666, (q15_t)0xb334,\n  (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x6648, (q15_t)0xb30b, (q15_t)0x6639, (q15_t)0xb2f7, (q15_t)0x6629, (q15_t)0xb2e3,\n  (q15_t)0x661a, (q15_t)0xb2cf, (q15_t)0x660b, (q15_t)0xb2bb, (q15_t)0x65fc, (q15_t)0xb2a7, (q15_t)0x65ed, (q15_t)0xb293,\n  (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65ce, (q15_t)0xb26b, (q15_t)0x65bf, (q15_t)0xb257, (q15_t)0x65b0, (q15_t)0xb243,\n  (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x6591, (q15_t)0xb21b, (q15_t)0x6582, (q15_t)0xb207, (q15_t)0x6573, (q15_t)0xb1f3,\n  (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x6554, (q15_t)0xb1cc, (q15_t)0x6545, (q15_t)0xb1b8, (q15_t)0x6535, (q15_t)0xb1a4,\n  (q15_t)0x6526, (q15_t)0xb190, (q15_t)0x6516, (q15_t)0xb17c, (q15_t)0x6507, (q15_t)0xb168, (q15_t)0x64f7, (q15_t)0xb154,\n  (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64d9, (q15_t)0xb12d, (q15_t)0x64c9, (q15_t)0xb119, (q15_t)0x64ba, (q15_t)0xb105,\n  (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x649b, (q15_t)0xb0de, (q15_t)0x648b, (q15_t)0xb0ca, (q15_t)0x647b, (q15_t)0xb0b6,\n  (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x645c, (q15_t)0xb08f, (q15_t)0x644d, (q15_t)0xb07b, (q15_t)0x643d, (q15_t)0xb067,\n  (q15_t)0x642d, (q15_t)0xb054, (q15_t)0x641e, (q15_t)0xb040, (q15_t)0x640e, (q15_t)0xb02c, (q15_t)0x63fe, (q15_t)0xb019,\n  (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63df, (q15_t)0xaff1, (q15_t)0x63cf, (q15_t)0xafde, (q15_t)0x63c0, (q15_t)0xafca,\n  (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x63a0, (q15_t)0xafa3, (q15_t)0x6390, (q15_t)0xaf90, (q15_t)0x6380, (q15_t)0xaf7c,\n  (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x6361, (q15_t)0xaf55, (q15_t)0x6351, (q15_t)0xaf41, (q15_t)0x6341, (q15_t)0xaf2e,\n  (q15_t)0x6331, (q15_t)0xaf1b, (q15_t)0x6321, (q15_t)0xaf07, (q15_t)0x6311, (q15_t)0xaef4, (q15_t)0x6301, (q15_t)0xaee0,\n  (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62e2, (q15_t)0xaeb9, (q15_t)0x62d2, (q15_t)0xaea6, (q15_t)0x62c2, (q15_t)0xae92,\n  (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x62a2, (q15_t)0xae6c, (q15_t)0x6292, (q15_t)0xae58, (q15_t)0x6282, (q15_t)0xae45,\n  (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x6261, (q15_t)0xae1e, (q15_t)0x6251, (q15_t)0xae0b, (q15_t)0x6241, (q15_t)0xadf8,\n  (q15_t)0x6231, (q15_t)0xade4, (q15_t)0x6221, (q15_t)0xadd1, (q15_t)0x6211, (q15_t)0xadbe, (q15_t)0x6201, (q15_t)0xadab,\n  (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61e0, (q15_t)0xad84, (q15_t)0x61d0, (q15_t)0xad71, (q15_t)0x61c0, (q15_t)0xad5e,\n  (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x619f, (q15_t)0xad37, (q15_t)0x618f, (q15_t)0xad24, (q15_t)0x617f, (q15_t)0xad11,\n  (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x615e, (q15_t)0xaceb, (q15_t)0x614e, (q15_t)0xacd8, (q15_t)0x613e, (q15_t)0xacc5,\n  (q15_t)0x612d, (q15_t)0xacb2, (q15_t)0x611d, (q15_t)0xac9e, (q15_t)0x610d, (q15_t)0xac8b, (q15_t)0x60fc, (q15_t)0xac78,\n  (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60db, (q15_t)0xac52, (q15_t)0x60cb, (q15_t)0xac3f, (q15_t)0x60ba, (q15_t)0xac2c,\n  (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x6099, (q15_t)0xac06, (q15_t)0x6089, (q15_t)0xabf3, (q15_t)0x6078, (q15_t)0xabe0,\n  (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6057, (q15_t)0xabbb, (q15_t)0x6047, (q15_t)0xaba8, (q15_t)0x6036, (q15_t)0xab95,\n  (q15_t)0x6026, (q15_t)0xab82, (q15_t)0x6015, (q15_t)0xab6f, (q15_t)0x6004, (q15_t)0xab5c, (q15_t)0x5ff4, (q15_t)0xab49,\n  (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fd3, (q15_t)0xab24, (q15_t)0x5fc2, (q15_t)0xab11, (q15_t)0x5fb1, (q15_t)0xaafe,\n  (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f90, (q15_t)0xaad8, (q15_t)0x5f7f, (q15_t)0xaac6, (q15_t)0x5f6e, (q15_t)0xaab3,\n  (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f4d, (q15_t)0xaa8e, (q15_t)0x5f3c, (q15_t)0xaa7b, (q15_t)0x5f2b, (q15_t)0xaa68,\n  (q15_t)0x5f1a, (q15_t)0xaa55, (q15_t)0x5f0a, (q15_t)0xaa43, (q15_t)0x5ef9, (q15_t)0xaa30, (q15_t)0x5ee8, (q15_t)0xaa1d,\n  (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5ec6, (q15_t)0xa9f8, (q15_t)0x5eb5, (q15_t)0xa9e6, (q15_t)0x5ea4, (q15_t)0xa9d3,\n  (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e82, (q15_t)0xa9ae, (q15_t)0x5e71, (q15_t)0xa99b, (q15_t)0x5e60, (q15_t)0xa989,\n  (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e3f, (q15_t)0xa964, (q15_t)0x5e2d, (q15_t)0xa951, (q15_t)0x5e1c, (q15_t)0xa93f,\n  (q15_t)0x5e0b, (q15_t)0xa92c, (q15_t)0x5dfa, (q15_t)0xa91a, (q15_t)0x5de9, (q15_t)0xa907, (q15_t)0x5dd8, (q15_t)0xa8f5,\n  (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5db6, (q15_t)0xa8d0, (q15_t)0x5da5, (q15_t)0xa8be, (q15_t)0x5d94, (q15_t)0xa8ab,\n  (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d71, (q15_t)0xa887, (q15_t)0x5d60, (q15_t)0xa874, (q15_t)0x5d4f, (q15_t)0xa862,\n  (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5d2d, (q15_t)0xa83d, (q15_t)0x5d1b, (q15_t)0xa82b, (q15_t)0x5d0a, (q15_t)0xa819,\n  (q15_t)0x5cf9, (q15_t)0xa807, (q15_t)0x5ce8, (q15_t)0xa7f4, (q15_t)0x5cd6, (q15_t)0xa7e2, (q15_t)0x5cc5, (q15_t)0xa7d0,\n  (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5ca2, (q15_t)0xa7ab, (q15_t)0x5c91, (q15_t)0xa799, (q15_t)0x5c80, (q15_t)0xa787,\n  (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c5d, (q15_t)0xa763, (q15_t)0x5c4b, (q15_t)0xa751, (q15_t)0x5c3a, (q15_t)0xa73f,\n  (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5c17, (q15_t)0xa71a, (q15_t)0x5c06, (q15_t)0xa708, (q15_t)0x5bf4, (q15_t)0xa6f6,\n  (q15_t)0x5be3, (q15_t)0xa6e4, (q15_t)0x5bd1, (q15_t)0xa6d2, (q15_t)0x5bc0, (q15_t)0xa6c0, (q15_t)0x5bae, (q15_t)0xa6ae,\n  (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b8b, (q15_t)0xa68a, (q15_t)0x5b79, (q15_t)0xa678, (q15_t)0x5b68, (q15_t)0xa666,\n  (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b45, (q15_t)0xa642, (q15_t)0x5b33, (q15_t)0xa630, (q15_t)0x5b21, (q15_t)0xa61f,\n  (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5afe, (q15_t)0xa5fb, (q15_t)0x5aec, (q15_t)0xa5e9, (q15_t)0x5adb, (q15_t)0xa5d7,\n  (q15_t)0x5ac9, (q15_t)0xa5c5, (q15_t)0x5ab7, (q15_t)0xa5b3, (q15_t)0x5aa5, (q15_t)0xa5a2, (q15_t)0x5a94, (q15_t)0xa590,\n  (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a70, (q15_t)0xa56c, (q15_t)0x5a5e, (q15_t)0xa55b, (q15_t)0x5a4d, (q15_t)0xa549,\n  (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x5a29, (q15_t)0xa525, (q15_t)0x5a17, (q15_t)0xa514, (q15_t)0x5a05, (q15_t)0xa502,\n  (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59e1, (q15_t)0xa4df, (q15_t)0x59d0, (q15_t)0xa4cd, (q15_t)0x59be, (q15_t)0xa4bb,\n  (q15_t)0x59ac, (q15_t)0xa4aa, (q15_t)0x599a, (q15_t)0xa498, (q15_t)0x5988, (q15_t)0xa487, (q15_t)0x5976, (q15_t)0xa475,\n  (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x5952, (q15_t)0xa452, (q15_t)0x5940, (q15_t)0xa440, (q15_t)0x592e, (q15_t)0xa42f,\n  (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x590a, (q15_t)0xa40c, (q15_t)0x58f8, (q15_t)0xa3fa, (q15_t)0x58e6, (q15_t)0xa3e9,\n  (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x58c1, (q15_t)0xa3c6, (q15_t)0x58af, (q15_t)0xa3b5, (q15_t)0x589d, (q15_t)0xa3a3,\n  (q15_t)0x588b, (q15_t)0xa392, (q15_t)0x5879, (q15_t)0xa380, (q15_t)0x5867, (q15_t)0xa36f, (q15_t)0x5855, (q15_t)0xa35e,\n  (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x5830, (q15_t)0xa33b, (q15_t)0x581e, (q15_t)0xa32a, (q15_t)0x580c, (q15_t)0xa318,\n  (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57e7, (q15_t)0xa2f6, (q15_t)0x57d5, (q15_t)0xa2e5, (q15_t)0x57c3, (q15_t)0xa2d3,\n  (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x579e, (q15_t)0xa2b1, (q15_t)0x578c, (q15_t)0xa2a0, (q15_t)0x5779, (q15_t)0xa28f,\n  (q15_t)0x5767, (q15_t)0xa27d, (q15_t)0x5755, (q15_t)0xa26c, (q15_t)0x5742, (q15_t)0xa25b, (q15_t)0x5730, (q15_t)0xa24a,\n  (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x570b, (q15_t)0xa228, (q15_t)0x56f9, (q15_t)0xa217, (q15_t)0x56e6, (q15_t)0xa206,\n  (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x56c1, (q15_t)0xa1e4, (q15_t)0x56af, (q15_t)0xa1d3, (q15_t)0x569c, (q15_t)0xa1c1,\n  (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5677, (q15_t)0xa1a0, (q15_t)0x5665, (q15_t)0xa18f, (q15_t)0x5652, (q15_t)0xa17e,\n  (q15_t)0x5640, (q15_t)0xa16d, (q15_t)0x562d, (q15_t)0xa15c, (q15_t)0x561a, (q15_t)0xa14b, (q15_t)0x5608, (q15_t)0xa13a,\n  (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55e3, (q15_t)0xa118, (q15_t)0x55d0, (q15_t)0xa107, (q15_t)0x55bd, (q15_t)0xa0f6,\n  (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x5598, (q15_t)0xa0d5, (q15_t)0x5585, (q15_t)0xa0c4, (q15_t)0x5572, (q15_t)0xa0b3,\n  (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x554d, (q15_t)0xa092, (q15_t)0x553a, (q15_t)0xa081, (q15_t)0x5528, (q15_t)0xa070,\n  (q15_t)0x5515, (q15_t)0xa060, (q15_t)0x5502, (q15_t)0xa04f, (q15_t)0x54ef, (q15_t)0xa03e, (q15_t)0x54dc, (q15_t)0xa02d,\n  (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x54b7, (q15_t)0xa00c, (q15_t)0x54a4, (q15_t)0x9ffc, (q15_t)0x5491, (q15_t)0x9feb,\n  (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x546b, (q15_t)0x9fca, (q15_t)0x5458, (q15_t)0x9fb9, (q15_t)0x5445, (q15_t)0x9fa9,\n  (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x5420, (q15_t)0x9f88, (q15_t)0x540d, (q15_t)0x9f77, (q15_t)0x53fa, (q15_t)0x9f67,\n  (q15_t)0x53e7, (q15_t)0x9f56, (q15_t)0x53d4, (q15_t)0x9f46, (q15_t)0x53c1, (q15_t)0x9f35, (q15_t)0x53ae, (q15_t)0x9f25,\n  (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5388, (q15_t)0x9f04, (q15_t)0x5375, (q15_t)0x9ef3, (q15_t)0x5362, (q15_t)0x9ee3,\n  (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x533b, (q15_t)0x9ec2, (q15_t)0x5328, (q15_t)0x9eb2, (q15_t)0x5315, (q15_t)0x9ea2,\n  (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52ef, (q15_t)0x9e81, (q15_t)0x52dc, (q15_t)0x9e71, (q15_t)0x52c9, (q15_t)0x9e61,\n  (q15_t)0x52b5, (q15_t)0x9e50, (q15_t)0x52a2, (q15_t)0x9e40, (q15_t)0x528f, (q15_t)0x9e30, (q15_t)0x527c, (q15_t)0x9e20,\n  (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x5255, (q15_t)0x9dff, (q15_t)0x5242, (q15_t)0x9def, (q15_t)0x522f, (q15_t)0x9ddf,\n  (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x5208, (q15_t)0x9dbf, (q15_t)0x51f5, (q15_t)0x9daf, (q15_t)0x51e2, (q15_t)0x9d9f,\n  (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x51bb, (q15_t)0x9d7e, (q15_t)0x51a8, (q15_t)0x9d6e, (q15_t)0x5194, (q15_t)0x9d5e,\n  (q15_t)0x5181, (q15_t)0x9d4e, (q15_t)0x516e, (q15_t)0x9d3e, (q15_t)0x515a, (q15_t)0x9d2e, (q15_t)0x5147, (q15_t)0x9d1e,\n  (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x5120, (q15_t)0x9cff, (q15_t)0x510c, (q15_t)0x9cef, (q15_t)0x50f9, (q15_t)0x9cdf,\n  (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x50d2, (q15_t)0x9cbf, (q15_t)0x50bf, (q15_t)0x9caf, (q15_t)0x50ab, (q15_t)0x9c9f,\n  (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5084, (q15_t)0x9c80, (q15_t)0x5070, (q15_t)0x9c70, (q15_t)0x505d, (q15_t)0x9c60,\n  (q15_t)0x5049, (q15_t)0x9c50, (q15_t)0x5036, (q15_t)0x9c40, (q15_t)0x5022, (q15_t)0x9c31, (q15_t)0x500f, (q15_t)0x9c21,\n  (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4fe7, (q15_t)0x9c02, (q15_t)0x4fd4, (q15_t)0x9bf2, (q15_t)0x4fc0, (q15_t)0x9be2,\n  (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4f99, (q15_t)0x9bc3, (q15_t)0x4f85, (q15_t)0x9bb3, (q15_t)0x4f71, (q15_t)0x9ba4,\n  (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f4a, (q15_t)0x9b85, (q15_t)0x4f36, (q15_t)0x9b75, (q15_t)0x4f22, (q15_t)0x9b65,\n  (q15_t)0x4f0f, (q15_t)0x9b56, (q15_t)0x4efb, (q15_t)0x9b46, (q15_t)0x4ee7, (q15_t)0x9b37, (q15_t)0x4ed3, (q15_t)0x9b27,\n  (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4eac, (q15_t)0x9b09, (q15_t)0x4e98, (q15_t)0x9af9, (q15_t)0x4e84, (q15_t)0x9aea,\n  (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e5c, (q15_t)0x9acb, (q15_t)0x4e48, (q15_t)0x9abb, (q15_t)0x4e34, (q15_t)0x9aac,\n  (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4e0d, (q15_t)0x9a8d, (q15_t)0x4df9, (q15_t)0x9a7e, (q15_t)0x4de5, (q15_t)0x9a6f,\n  (q15_t)0x4dd1, (q15_t)0x9a60, (q15_t)0x4dbd, (q15_t)0x9a50, (q15_t)0x4da9, (q15_t)0x9a41, (q15_t)0x4d95, (q15_t)0x9a32,\n  (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d6d, (q15_t)0x9a13, (q15_t)0x4d59, (q15_t)0x9a04, (q15_t)0x4d45, (q15_t)0x99f5,\n  (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4d1d, (q15_t)0x99d7, (q15_t)0x4d09, (q15_t)0x99c7, (q15_t)0x4cf5, (q15_t)0x99b8,\n  (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4ccc, (q15_t)0x999a, (q15_t)0x4cb8, (q15_t)0x998b, (q15_t)0x4ca4, (q15_t)0x997c,\n  (q15_t)0x4c90, (q15_t)0x996d, (q15_t)0x4c7c, (q15_t)0x995e, (q15_t)0x4c68, (q15_t)0x994f, (q15_t)0x4c54, (q15_t)0x9940,\n  (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4c2b, (q15_t)0x9922, (q15_t)0x4c17, (q15_t)0x9913, (q15_t)0x4c03, (q15_t)0x9904,\n  (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4bda, (q15_t)0x98e6, (q15_t)0x4bc6, (q15_t)0x98d7, (q15_t)0x4bb2, (q15_t)0x98c9,\n  (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b89, (q15_t)0x98ab, (q15_t)0x4b75, (q15_t)0x989c, (q15_t)0x4b61, (q15_t)0x988d,\n  (q15_t)0x4b4c, (q15_t)0x987e, (q15_t)0x4b38, (q15_t)0x9870, (q15_t)0x4b24, (q15_t)0x9861, (q15_t)0x4b0f, (q15_t)0x9852,\n  (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4ae7, (q15_t)0x9835, (q15_t)0x4ad2, (q15_t)0x9826, (q15_t)0x4abe, (q15_t)0x9817,\n  (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4a95, (q15_t)0x97fa, (q15_t)0x4a81, (q15_t)0x97eb, (q15_t)0x4a6c, (q15_t)0x97dd,\n  (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a43, (q15_t)0x97c0, (q15_t)0x4a2f, (q15_t)0x97b1, (q15_t)0x4a1a, (q15_t)0x97a2,\n  (q15_t)0x4a06, (q15_t)0x9794, (q15_t)0x49f1, (q15_t)0x9785, (q15_t)0x49dd, (q15_t)0x9777, (q15_t)0x49c8, (q15_t)0x9768,\n  (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x499f, (q15_t)0x974b, (q15_t)0x498a, (q15_t)0x973d, (q15_t)0x4976, (q15_t)0x972f,\n  (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x494d, (q15_t)0x9712, (q15_t)0x4938, (q15_t)0x9703, (q15_t)0x4923, (q15_t)0x96f5,\n  (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x48fa, (q15_t)0x96d8, (q15_t)0x48e6, (q15_t)0x96ca, (q15_t)0x48d1, (q15_t)0x96bc,\n  (q15_t)0x48bc, (q15_t)0x96ad, (q15_t)0x48a8, (q15_t)0x969f, (q15_t)0x4893, (q15_t)0x9691, (q15_t)0x487e, (q15_t)0x9683,\n  (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4855, (q15_t)0x9666, (q15_t)0x4840, (q15_t)0x9658, (q15_t)0x482b, (q15_t)0x964a,\n  (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x4802, (q15_t)0x962d, (q15_t)0x47ed, (q15_t)0x961f, (q15_t)0x47d8, (q15_t)0x9611,\n  (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x47ae, (q15_t)0x95f5, (q15_t)0x479a, (q15_t)0x95e7, (q15_t)0x4785, (q15_t)0x95d9,\n  (q15_t)0x4770, (q15_t)0x95cb, (q15_t)0x475b, (q15_t)0x95bd, (q15_t)0x4746, (q15_t)0x95af, (q15_t)0x4731, (q15_t)0x95a1,\n  (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x4708, (q15_t)0x9585, (q15_t)0x46f3, (q15_t)0x9577, (q15_t)0x46de, (q15_t)0x9569,\n  (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x46b4, (q15_t)0x954d, (q15_t)0x469f, (q15_t)0x953f, (q15_t)0x468a, (q15_t)0x9532,\n  (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4660, (q15_t)0x9516, (q15_t)0x464b, (q15_t)0x9508, (q15_t)0x4636, (q15_t)0x94fa,\n  (q15_t)0x4621, (q15_t)0x94ed, (q15_t)0x460c, (q15_t)0x94df, (q15_t)0x45f7, (q15_t)0x94d1, (q15_t)0x45e2, (q15_t)0x94c3,\n  (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x45b8, (q15_t)0x94a8, (q15_t)0x45a3, (q15_t)0x949a, (q15_t)0x458d, (q15_t)0x948d,\n  (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4563, (q15_t)0x9471, (q15_t)0x454e, (q15_t)0x9464, (q15_t)0x4539, (q15_t)0x9456,\n  (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x450f, (q15_t)0x943b, (q15_t)0x44fa, (q15_t)0x942d, (q15_t)0x44e4, (q15_t)0x9420,\n  (q15_t)0x44cf, (q15_t)0x9412, (q15_t)0x44ba, (q15_t)0x9405, (q15_t)0x44a5, (q15_t)0x93f7, (q15_t)0x4490, (q15_t)0x93ea,\n  (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4465, (q15_t)0x93cf, (q15_t)0x4450, (q15_t)0x93c1, (q15_t)0x443b, (q15_t)0x93b4,\n  (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x4410, (q15_t)0x9399, (q15_t)0x43fb, (q15_t)0x938c, (q15_t)0x43e5, (q15_t)0x937f,\n  (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x43bb, (q15_t)0x9364, (q15_t)0x43a5, (q15_t)0x9357, (q15_t)0x4390, (q15_t)0x9349,\n  (q15_t)0x437b, (q15_t)0x933c, (q15_t)0x4365, (q15_t)0x932f, (q15_t)0x4350, (q15_t)0x9322, (q15_t)0x433b, (q15_t)0x9314,\n  (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x4310, (q15_t)0x92fa, (q15_t)0x42fa, (q15_t)0x92ed, (q15_t)0x42e5, (q15_t)0x92e0,\n  (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x42ba, (q15_t)0x92c6, (q15_t)0x42a5, (q15_t)0x92b8, (q15_t)0x428f, (q15_t)0x92ab,\n  (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4264, (q15_t)0x9291, (q15_t)0x424f, (q15_t)0x9284, (q15_t)0x4239, (q15_t)0x9277,\n  (q15_t)0x4224, (q15_t)0x926a, (q15_t)0x420e, (q15_t)0x925d, (q15_t)0x41f9, (q15_t)0x9250, (q15_t)0x41e3, (q15_t)0x9243,\n  (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x41b8, (q15_t)0x922a, (q15_t)0x41a2, (q15_t)0x921d, (q15_t)0x418d, (q15_t)0x9210,\n  (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4162, (q15_t)0x91f6, (q15_t)0x414c, (q15_t)0x91e9, (q15_t)0x4136, (q15_t)0x91dc,\n  (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x410b, (q15_t)0x91c3, (q15_t)0x40f6, (q15_t)0x91b6, (q15_t)0x40e0, (q15_t)0x91a9,\n  (q15_t)0x40ca, (q15_t)0x919d, (q15_t)0x40b5, (q15_t)0x9190, (q15_t)0x409f, (q15_t)0x9183, (q15_t)0x4089, (q15_t)0x9177,\n  (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x405e, (q15_t)0x915d, (q15_t)0x4048, (q15_t)0x9151, (q15_t)0x4032, (q15_t)0x9144,\n  (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x4007, (q15_t)0x912b, (q15_t)0x3ff1, (q15_t)0x911e, (q15_t)0x3fdb, (q15_t)0x9112,\n  (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3fb0, (q15_t)0x90f9, (q15_t)0x3f9a, (q15_t)0x90ec, (q15_t)0x3f84, (q15_t)0x90e0,\n  (q15_t)0x3f6e, (q15_t)0x90d3, (q15_t)0x3f58, (q15_t)0x90c7, (q15_t)0x3f43, (q15_t)0x90ba, (q15_t)0x3f2d, (q15_t)0x90ae,\n  (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3f01, (q15_t)0x9095, (q15_t)0x3eeb, (q15_t)0x9089, (q15_t)0x3ed5, (q15_t)0x907c,\n  (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3ea9, (q15_t)0x9064, (q15_t)0x3e93, (q15_t)0x9057, (q15_t)0x3e7d, (q15_t)0x904b,\n  (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e52, (q15_t)0x9033, (q15_t)0x3e3c, (q15_t)0x9026, (q15_t)0x3e26, (q15_t)0x901a,\n  (q15_t)0x3e10, (q15_t)0x900e, (q15_t)0x3dfa, (q15_t)0x9002, (q15_t)0x3de4, (q15_t)0x8ff6, (q15_t)0x3dce, (q15_t)0x8fea,\n  (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3da2, (q15_t)0x8fd1, (q15_t)0x3d8c, (q15_t)0x8fc5, (q15_t)0x3d76, (q15_t)0x8fb9,\n  (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d49, (q15_t)0x8fa1, (q15_t)0x3d33, (q15_t)0x8f95, (q15_t)0x3d1d, (q15_t)0x8f89,\n  (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3cf1, (q15_t)0x8f71, (q15_t)0x3cdb, (q15_t)0x8f65, (q15_t)0x3cc5, (q15_t)0x8f59,\n  (q15_t)0x3caf, (q15_t)0x8f4d, (q15_t)0x3c99, (q15_t)0x8f41, (q15_t)0x3c83, (q15_t)0x8f35, (q15_t)0x3c6c, (q15_t)0x8f2a,\n  (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3c40, (q15_t)0x8f12, (q15_t)0x3c2a, (q15_t)0x8f06, (q15_t)0x3c14, (q15_t)0x8efa,\n  (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3be7, (q15_t)0x8ee3, (q15_t)0x3bd1, (q15_t)0x8ed7, (q15_t)0x3bbb, (q15_t)0x8ecb,\n  (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b8e, (q15_t)0x8eb4, (q15_t)0x3b78, (q15_t)0x8ea8, (q15_t)0x3b62, (q15_t)0x8e9c,\n  (q15_t)0x3b4c, (q15_t)0x8e91, (q15_t)0x3b35, (q15_t)0x8e85, (q15_t)0x3b1f, (q15_t)0x8e7a, (q15_t)0x3b09, (q15_t)0x8e6e,\n  (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3adc, (q15_t)0x8e57, (q15_t)0x3ac6, (q15_t)0x8e4b, (q15_t)0x3aaf, (q15_t)0x8e40,\n  (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a83, (q15_t)0x8e29, (q15_t)0x3a6c, (q15_t)0x8e1d, (q15_t)0x3a56, (q15_t)0x8e12,\n  (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x3a29, (q15_t)0x8dfb, (q15_t)0x3a13, (q15_t)0x8def, (q15_t)0x39fd, (q15_t)0x8de4,\n  (q15_t)0x39e6, (q15_t)0x8dd9, (q15_t)0x39d0, (q15_t)0x8dcd, (q15_t)0x39b9, (q15_t)0x8dc2, (q15_t)0x39a3, (q15_t)0x8db7,\n  (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3976, (q15_t)0x8da0, (q15_t)0x395f, (q15_t)0x8d95, (q15_t)0x3949, (q15_t)0x8d8a,\n  (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x391c, (q15_t)0x8d73, (q15_t)0x3906, (q15_t)0x8d68, (q15_t)0x38ef, (q15_t)0x8d5d,\n  (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x38c2, (q15_t)0x8d46, (q15_t)0x38ab, (q15_t)0x8d3b, (q15_t)0x3895, (q15_t)0x8d30,\n  (q15_t)0x387e, (q15_t)0x8d25, (q15_t)0x3868, (q15_t)0x8d1a, (q15_t)0x3851, (q15_t)0x8d0f, (q15_t)0x383b, (q15_t)0x8d04,\n  (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x380d, (q15_t)0x8cee, (q15_t)0x37f7, (q15_t)0x8ce3, (q15_t)0x37e0, (q15_t)0x8cd8,\n  (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x37b3, (q15_t)0x8cc2, (q15_t)0x379c, (q15_t)0x8cb7, (q15_t)0x3786, (q15_t)0x8cac,\n  (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3758, (q15_t)0x8c96, (q15_t)0x3742, (q15_t)0x8c8b, (q15_t)0x372b, (q15_t)0x8c81,\n  (q15_t)0x3714, (q15_t)0x8c76, (q15_t)0x36fe, (q15_t)0x8c6b, (q15_t)0x36e7, (q15_t)0x8c60, (q15_t)0x36d0, (q15_t)0x8c55,\n  (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x36a3, (q15_t)0x8c40, (q15_t)0x368c, (q15_t)0x8c35, (q15_t)0x3675, (q15_t)0x8c2a,\n  (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3648, (q15_t)0x8c15, (q15_t)0x3631, (q15_t)0x8c0a, (q15_t)0x361a, (q15_t)0x8c00,\n  (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35ed, (q15_t)0x8beb, (q15_t)0x35d6, (q15_t)0x8be0, (q15_t)0x35bf, (q15_t)0x8bd5,\n  (q15_t)0x35a8, (q15_t)0x8bcb, (q15_t)0x3592, (q15_t)0x8bc0, (q15_t)0x357b, (q15_t)0x8bb6, (q15_t)0x3564, (q15_t)0x8bab,\n  (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x3536, (q15_t)0x8b96, (q15_t)0x351f, (q15_t)0x8b8c, (q15_t)0x3508, (q15_t)0x8b82,\n  (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x34db, (q15_t)0x8b6d, (q15_t)0x34c4, (q15_t)0x8b62, (q15_t)0x34ad, (q15_t)0x8b58,\n  (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x347f, (q15_t)0x8b43, (q15_t)0x3468, (q15_t)0x8b39, (q15_t)0x3451, (q15_t)0x8b2f,\n  (q15_t)0x343a, (q15_t)0x8b25, (q15_t)0x3423, (q15_t)0x8b1a, (q15_t)0x340c, (q15_t)0x8b10, (q15_t)0x33f5, (q15_t)0x8b06,\n  (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x33c7, (q15_t)0x8af1, (q15_t)0x33b0, (q15_t)0x8ae7, (q15_t)0x3399, (q15_t)0x8add,\n  (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x336b, (q15_t)0x8ac9, (q15_t)0x3354, (q15_t)0x8abf, (q15_t)0x333d, (q15_t)0x8ab5,\n  (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x330f, (q15_t)0x8aa1, (q15_t)0x32f8, (q15_t)0x8a97, (q15_t)0x32e1, (q15_t)0x8a8d,\n  (q15_t)0x32ca, (q15_t)0x8a83, (q15_t)0x32b3, (q15_t)0x8a79, (q15_t)0x329c, (q15_t)0x8a6f, (q15_t)0x3285, (q15_t)0x8a65,\n  (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3257, (q15_t)0x8a51, (q15_t)0x3240, (q15_t)0x8a47, (q15_t)0x3228, (q15_t)0x8a3d,\n  (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x31fa, (q15_t)0x8a2a, (q15_t)0x31e3, (q15_t)0x8a20, (q15_t)0x31cc, (q15_t)0x8a16,\n  (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x319e, (q15_t)0x8a03, (q15_t)0x3186, (q15_t)0x89f9, (q15_t)0x316f, (q15_t)0x89ef,\n  (q15_t)0x3158, (q15_t)0x89e5, (q15_t)0x3141, (q15_t)0x89dc, (q15_t)0x312a, (q15_t)0x89d2, (q15_t)0x3112, (q15_t)0x89c8,\n  (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x30e4, (q15_t)0x89b5, (q15_t)0x30cd, (q15_t)0x89ac, (q15_t)0x30b6, (q15_t)0x89a2,\n  (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3087, (q15_t)0x898f, (q15_t)0x3070, (q15_t)0x8985, (q15_t)0x3059, (q15_t)0x897c,\n  (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x302a, (q15_t)0x8969, (q15_t)0x3013, (q15_t)0x8960, (q15_t)0x2ffb, (q15_t)0x8956,\n  (q15_t)0x2fe4, (q15_t)0x894d, (q15_t)0x2fcd, (q15_t)0x8943, (q15_t)0x2fb5, (q15_t)0x893a, (q15_t)0x2f9e, (q15_t)0x8931,\n  (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f6f, (q15_t)0x891e, (q15_t)0x2f58, (q15_t)0x8915, (q15_t)0x2f41, (q15_t)0x890b,\n  (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2f12, (q15_t)0x88f9, (q15_t)0x2efb, (q15_t)0x88f0, (q15_t)0x2ee3, (q15_t)0x88e6,\n  (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2eb5, (q15_t)0x88d4, (q15_t)0x2e9d, (q15_t)0x88cb, (q15_t)0x2e86, (q15_t)0x88c2,\n  (q15_t)0x2e6e, (q15_t)0x88b9, (q15_t)0x2e57, (q15_t)0x88af, (q15_t)0x2e3f, (q15_t)0x88a6, (q15_t)0x2e28, (q15_t)0x889d,\n  (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2df9, (q15_t)0x888b, (q15_t)0x2de2, (q15_t)0x8882, (q15_t)0x2dca, (q15_t)0x8879,\n  (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2d9b, (q15_t)0x8867, (q15_t)0x2d84, (q15_t)0x885e, (q15_t)0x2d6c, (q15_t)0x8855,\n  (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2d3d, (q15_t)0x8844, (q15_t)0x2d26, (q15_t)0x883b, (q15_t)0x2d0e, (q15_t)0x8832,\n  (q15_t)0x2cf7, (q15_t)0x8829, (q15_t)0x2cdf, (q15_t)0x8820, (q15_t)0x2cc8, (q15_t)0x8817, (q15_t)0x2cb0, (q15_t)0x880f,\n  (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c81, (q15_t)0x87fd, (q15_t)0x2c69, (q15_t)0x87f4, (q15_t)0x2c52, (q15_t)0x87ec,\n  (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2c23, (q15_t)0x87da, (q15_t)0x2c0b, (q15_t)0x87d2, (q15_t)0x2bf3, (q15_t)0x87c9,\n  (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2bc4, (q15_t)0x87b8, (q15_t)0x2bad, (q15_t)0x87af, (q15_t)0x2b95, (q15_t)0x87a7,\n  (q15_t)0x2b7d, (q15_t)0x879e, (q15_t)0x2b66, (q15_t)0x8795, (q15_t)0x2b4e, (q15_t)0x878d, (q15_t)0x2b36, (q15_t)0x8784,\n  (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2b07, (q15_t)0x8774, (q15_t)0x2aef, (q15_t)0x876b, (q15_t)0x2ad8, (q15_t)0x8763,\n  (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2aa8, (q15_t)0x8752, (q15_t)0x2a91, (q15_t)0x874a, (q15_t)0x2a79, (q15_t)0x8741,\n  (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a49, (q15_t)0x8731, (q15_t)0x2a32, (q15_t)0x8728, (q15_t)0x2a1a, (q15_t)0x8720,\n  (q15_t)0x2a02, (q15_t)0x8718, (q15_t)0x29eb, (q15_t)0x870f, (q15_t)0x29d3, (q15_t)0x8707, (q15_t)0x29bb, (q15_t)0x86ff,\n  (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x298b, (q15_t)0x86ef, (q15_t)0x2974, (q15_t)0x86e7, (q15_t)0x295c, (q15_t)0x86de,\n  (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x292c, (q15_t)0x86ce, (q15_t)0x2915, (q15_t)0x86c6, (q15_t)0x28fd, (q15_t)0x86be,\n  (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x28cd, (q15_t)0x86ae, (q15_t)0x28b5, (q15_t)0x86a6, (q15_t)0x289d, (q15_t)0x869e,\n  (q15_t)0x2886, (q15_t)0x8696, (q15_t)0x286e, (q15_t)0x868e, (q15_t)0x2856, (q15_t)0x8686, (q15_t)0x283e, (q15_t)0x867e,\n  (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x280e, (q15_t)0x866e, (q15_t)0x27f6, (q15_t)0x8667, (q15_t)0x27df, (q15_t)0x865f,\n  (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x27af, (q15_t)0x864f, (q15_t)0x2797, (q15_t)0x8647, (q15_t)0x277f, (q15_t)0x8640,\n  (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x274f, (q15_t)0x8630, (q15_t)0x2737, (q15_t)0x8628, (q15_t)0x271f, (q15_t)0x8621,\n  (q15_t)0x2707, (q15_t)0x8619, (q15_t)0x26ef, (q15_t)0x8611, (q15_t)0x26d8, (q15_t)0x860a, (q15_t)0x26c0, (q15_t)0x8602,\n  (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x2690, (q15_t)0x85f3, (q15_t)0x2678, (q15_t)0x85eb, (q15_t)0x2660, (q15_t)0x85e4,\n  (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x2630, (q15_t)0x85d5, (q15_t)0x2618, (q15_t)0x85cd, (q15_t)0x2600, (q15_t)0x85c6,\n  (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x25d0, (q15_t)0x85b7, (q15_t)0x25b8, (q15_t)0x85b0, (q15_t)0x25a0, (q15_t)0x85a8,\n  (q15_t)0x2588, (q15_t)0x85a1, (q15_t)0x2570, (q15_t)0x8599, (q15_t)0x2558, (q15_t)0x8592, (q15_t)0x2540, (q15_t)0x858b,\n  (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x250f, (q15_t)0x857c, (q15_t)0x24f7, (q15_t)0x8575, (q15_t)0x24df, (q15_t)0x856e,\n  (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x24af, (q15_t)0x855f, (q15_t)0x2497, (q15_t)0x8558, (q15_t)0x247f, (q15_t)0x8551,\n  (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x244f, (q15_t)0x8543, (q15_t)0x2437, (q15_t)0x853b, (q15_t)0x241f, (q15_t)0x8534,\n  (q15_t)0x2407, (q15_t)0x852d, (q15_t)0x23ee, (q15_t)0x8526, (q15_t)0x23d6, (q15_t)0x851f, (q15_t)0x23be, (q15_t)0x8518,\n  (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x238e, (q15_t)0x850a, (q15_t)0x2376, (q15_t)0x8503, (q15_t)0x235e, (q15_t)0x84fc,\n  (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x232d, (q15_t)0x84ee, (q15_t)0x2315, (q15_t)0x84e7, (q15_t)0x22fd, (q15_t)0x84e1,\n  (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x22cd, (q15_t)0x84d3, (q15_t)0x22b4, (q15_t)0x84cc, (q15_t)0x229c, (q15_t)0x84c5,\n  (q15_t)0x2284, (q15_t)0x84be, (q15_t)0x226c, (q15_t)0x84b8, (q15_t)0x2254, (q15_t)0x84b1, (q15_t)0x223b, (q15_t)0x84aa,\n  (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x220b, (q15_t)0x849d, (q15_t)0x21f3, (q15_t)0x8496, (q15_t)0x21da, (q15_t)0x848f,\n  (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x21aa, (q15_t)0x8482, (q15_t)0x2192, (q15_t)0x847c, (q15_t)0x2179, (q15_t)0x8475,\n  (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x2149, (q15_t)0x8468, (q15_t)0x2131, (q15_t)0x8461, (q15_t)0x2118, (q15_t)0x845b,\n  (q15_t)0x2100, (q15_t)0x8454, (q15_t)0x20e8, (q15_t)0x844e, (q15_t)0x20d0, (q15_t)0x8447, (q15_t)0x20b7, (q15_t)0x8441,\n  (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x2087, (q15_t)0x8434, (q15_t)0x206e, (q15_t)0x842e, (q15_t)0x2056, (q15_t)0x8427,\n  (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x2025, (q15_t)0x841b, (q15_t)0x200d, (q15_t)0x8415, (q15_t)0x1ff5, (q15_t)0x840e,\n  (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1fc4, (q15_t)0x8402, (q15_t)0x1fac, (q15_t)0x83fb, (q15_t)0x1f93, (q15_t)0x83f5,\n  (q15_t)0x1f7b, (q15_t)0x83ef, (q15_t)0x1f63, (q15_t)0x83e9, (q15_t)0x1f4a, (q15_t)0x83e3, (q15_t)0x1f32, (q15_t)0x83dd,\n  (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1f01, (q15_t)0x83d0, (q15_t)0x1ee9, (q15_t)0x83ca, (q15_t)0x1ed0, (q15_t)0x83c4,\n  (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1ea0, (q15_t)0x83b8, (q15_t)0x1e87, (q15_t)0x83b2, (q15_t)0x1e6f, (q15_t)0x83ac,\n  (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1e3e, (q15_t)0x83a0, (q15_t)0x1e25, (q15_t)0x839a, (q15_t)0x1e0d, (q15_t)0x8394,\n  (q15_t)0x1df5, (q15_t)0x838f, (q15_t)0x1ddc, (q15_t)0x8389, (q15_t)0x1dc4, (q15_t)0x8383, (q15_t)0x1dab, (q15_t)0x837d,\n  (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d7a, (q15_t)0x8371, (q15_t)0x1d62, (q15_t)0x836c, (q15_t)0x1d49, (q15_t)0x8366,\n  (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1d18, (q15_t)0x835a, (q15_t)0x1d00, (q15_t)0x8355, (q15_t)0x1ce8, (q15_t)0x834f,\n  (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1cb7, (q15_t)0x8344, (q15_t)0x1c9e, (q15_t)0x833e, (q15_t)0x1c86, (q15_t)0x8338,\n  (q15_t)0x1c6d, (q15_t)0x8333, (q15_t)0x1c55, (q15_t)0x832d, (q15_t)0x1c3c, (q15_t)0x8328, (q15_t)0x1c24, (q15_t)0x8322,\n  (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1bf2, (q15_t)0x8317, (q15_t)0x1bda, (q15_t)0x8312, (q15_t)0x1bc1, (q15_t)0x830c,\n  (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1b90, (q15_t)0x8301, (q15_t)0x1b78, (q15_t)0x82fc, (q15_t)0x1b5f, (q15_t)0x82f7,\n  (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1b2e, (q15_t)0x82ec, (q15_t)0x1b16, (q15_t)0x82e7, (q15_t)0x1afd, (q15_t)0x82e1,\n  (q15_t)0x1ae4, (q15_t)0x82dc, (q15_t)0x1acc, (q15_t)0x82d7, (q15_t)0x1ab3, (q15_t)0x82d1, (q15_t)0x1a9b, (q15_t)0x82cc,\n  (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a6a, (q15_t)0x82c2, (q15_t)0x1a51, (q15_t)0x82bd, (q15_t)0x1a38, (q15_t)0x82b7,\n  (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x1a07, (q15_t)0x82ad, (q15_t)0x19ef, (q15_t)0x82a8, (q15_t)0x19d6, (q15_t)0x82a3,\n  (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x19a5, (q15_t)0x8299, (q15_t)0x198c, (q15_t)0x8294, (q15_t)0x1973, (q15_t)0x828f,\n  (q15_t)0x195b, (q15_t)0x828a, (q15_t)0x1942, (q15_t)0x8285, (q15_t)0x192a, (q15_t)0x8280, (q15_t)0x1911, (q15_t)0x827b,\n  (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x18e0, (q15_t)0x8271, (q15_t)0x18c7, (q15_t)0x826c, (q15_t)0x18ae, (q15_t)0x8268,\n  (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x187d, (q15_t)0x825e, (q15_t)0x1864, (q15_t)0x8259, (q15_t)0x184c, (q15_t)0x8254,\n  (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x181a, (q15_t)0x824b, (q15_t)0x1802, (q15_t)0x8246, (q15_t)0x17e9, (q15_t)0x8241,\n  (q15_t)0x17d0, (q15_t)0x823d, (q15_t)0x17b7, (q15_t)0x8238, (q15_t)0x179f, (q15_t)0x8233, (q15_t)0x1786, (q15_t)0x822f,\n  (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x1755, (q15_t)0x8226, (q15_t)0x173c, (q15_t)0x8221, (q15_t)0x1723, (q15_t)0x821c,\n  (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x16f2, (q15_t)0x8213, (q15_t)0x16d9, (q15_t)0x820f, (q15_t)0x16c0, (q15_t)0x820a,\n  (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x168f, (q15_t)0x8201, (q15_t)0x1676, (q15_t)0x81fd, (q15_t)0x165d, (q15_t)0x81f9,\n  (q15_t)0x1645, (q15_t)0x81f4, (q15_t)0x162c, (q15_t)0x81f0, (q15_t)0x1613, (q15_t)0x81ec, (q15_t)0x15fa, (q15_t)0x81e7,\n  (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x15c9, (q15_t)0x81df, (q15_t)0x15b0, (q15_t)0x81da, (q15_t)0x1597, (q15_t)0x81d6,\n  (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x1566, (q15_t)0x81ce, (q15_t)0x154d, (q15_t)0x81c9, (q15_t)0x1534, (q15_t)0x81c5,\n  (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x1503, (q15_t)0x81bd, (q15_t)0x14ea, (q15_t)0x81b9, (q15_t)0x14d1, (q15_t)0x81b5,\n  (q15_t)0x14b8, (q15_t)0x81b1, (q15_t)0x149f, (q15_t)0x81ad, (q15_t)0x1487, (q15_t)0x81a9, (q15_t)0x146e, (q15_t)0x81a5,\n  (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x143c, (q15_t)0x819d, (q15_t)0x1423, (q15_t)0x8199, (q15_t)0x140b, (q15_t)0x8195,\n  (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x13d9, (q15_t)0x818d, (q15_t)0x13c0, (q15_t)0x8189, (q15_t)0x13a7, (q15_t)0x8185,\n  (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x1376, (q15_t)0x817d, (q15_t)0x135d, (q15_t)0x817a, (q15_t)0x1344, (q15_t)0x8176,\n  (q15_t)0x132b, (q15_t)0x8172, (q15_t)0x1312, (q15_t)0x816e, (q15_t)0x12f9, (q15_t)0x816b, (q15_t)0x12e0, (q15_t)0x8167,\n  (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x12af, (q15_t)0x815f, (q15_t)0x1296, (q15_t)0x815c, (q15_t)0x127d, (q15_t)0x8158,\n  (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x124b, (q15_t)0x8151, (q15_t)0x1232, (q15_t)0x814d, (q15_t)0x1219, (q15_t)0x814a,\n  (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x11e8, (q15_t)0x8143, (q15_t)0x11cf, (q15_t)0x813f, (q15_t)0x11b6, (q15_t)0x813c,\n  (q15_t)0x119d, (q15_t)0x8138, (q15_t)0x1184, (q15_t)0x8135, (q15_t)0x116b, (q15_t)0x8131, (q15_t)0x1152, (q15_t)0x812e,\n  (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x1121, (q15_t)0x8127, (q15_t)0x1108, (q15_t)0x8124, (q15_t)0x10ef, (q15_t)0x8121,\n  (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x10bd, (q15_t)0x811a, (q15_t)0x10a4, (q15_t)0x8117, (q15_t)0x108b, (q15_t)0x8113,\n  (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x1059, (q15_t)0x810d, (q15_t)0x1040, (q15_t)0x810a, (q15_t)0x1027, (q15_t)0x8107,\n  (q15_t)0x100e, (q15_t)0x8103, (q15_t)0xff5, (q15_t)0x8100, (q15_t)0xfdd, (q15_t)0x80fd, (q15_t)0xfc4, (q15_t)0x80fa,\n  (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xf92, (q15_t)0x80f4, (q15_t)0xf79, (q15_t)0x80f1, (q15_t)0xf60, (q15_t)0x80ee,\n  (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xf2e, (q15_t)0x80e8, (q15_t)0xf15, (q15_t)0x80e5, (q15_t)0xefc, (q15_t)0x80e2,\n  (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xeca, (q15_t)0x80dc, (q15_t)0xeb1, (q15_t)0x80d9, (q15_t)0xe98, (q15_t)0x80d6,\n  (q15_t)0xe7f, (q15_t)0x80d3, (q15_t)0xe66, (q15_t)0x80d1, (q15_t)0xe4d, (q15_t)0x80ce, (q15_t)0xe34, (q15_t)0x80cb,\n  (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xe02, (q15_t)0x80c5, (q15_t)0xde9, (q15_t)0x80c3, (q15_t)0xdd0, (q15_t)0x80c0,\n  (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xd9e, (q15_t)0x80bb, (q15_t)0xd85, (q15_t)0x80b8, (q15_t)0xd6c, (q15_t)0x80b5,\n  (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xd3a, (q15_t)0x80b0, (q15_t)0xd21, (q15_t)0x80ad, (q15_t)0xd08, (q15_t)0x80ab,\n  (q15_t)0xcef, (q15_t)0x80a8, (q15_t)0xcd6, (q15_t)0x80a6, (q15_t)0xcbd, (q15_t)0x80a3, (q15_t)0xca4, (q15_t)0x80a1,\n  (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc72, (q15_t)0x809c, (q15_t)0xc59, (q15_t)0x8099, (q15_t)0xc40, (q15_t)0x8097,\n  (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xc0e, (q15_t)0x8092, (q15_t)0xbf5, (q15_t)0x8090, (q15_t)0xbdc, (q15_t)0x808e,\n  (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xbaa, (q15_t)0x8089, (q15_t)0xb91, (q15_t)0x8087, (q15_t)0xb78, (q15_t)0x8084,\n  (q15_t)0xb5f, (q15_t)0x8082, (q15_t)0xb46, (q15_t)0x8080, (q15_t)0xb2d, (q15_t)0x807e, (q15_t)0xb14, (q15_t)0x807b,\n  (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xae2, (q15_t)0x8077, (q15_t)0xac9, (q15_t)0x8075, (q15_t)0xab0, (q15_t)0x8073,\n  (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa7e, (q15_t)0x806f, (q15_t)0xa65, (q15_t)0x806d, (q15_t)0xa4c, (q15_t)0x806b,\n  (q15_t)0xa33, (q15_t)0x8069, (q15_t)0xa19, (q15_t)0x8067, (q15_t)0xa00, (q15_t)0x8065, (q15_t)0x9e7, (q15_t)0x8063,\n  (q15_t)0x9ce, (q15_t)0x8061, (q15_t)0x9b5, (q15_t)0x805f, (q15_t)0x99c, (q15_t)0x805d, (q15_t)0x983, (q15_t)0x805b,\n  (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x951, (q15_t)0x8057, (q15_t)0x938, (q15_t)0x8056, (q15_t)0x91f, (q15_t)0x8054,\n  (q15_t)0x906, (q15_t)0x8052, (q15_t)0x8ed, (q15_t)0x8050, (q15_t)0x8d4, (q15_t)0x804f, (q15_t)0x8bb, (q15_t)0x804d,\n  (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x888, (q15_t)0x8049, (q15_t)0x86f, (q15_t)0x8048, (q15_t)0x856, (q15_t)0x8046,\n  (q15_t)0x83d, (q15_t)0x8044, (q15_t)0x824, (q15_t)0x8043, (q15_t)0x80b, (q15_t)0x8041, (q15_t)0x7f2, (q15_t)0x8040,\n  (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x7c0, (q15_t)0x803d, (q15_t)0x7a7, (q15_t)0x803b, (q15_t)0x78e, (q15_t)0x803a,\n  (q15_t)0x775, (q15_t)0x8038, (q15_t)0x75b, (q15_t)0x8037, (q15_t)0x742, (q15_t)0x8035, (q15_t)0x729, (q15_t)0x8034,\n  (q15_t)0x710, (q15_t)0x8032, (q15_t)0x6f7, (q15_t)0x8031, (q15_t)0x6de, (q15_t)0x8030, (q15_t)0x6c5, (q15_t)0x802e,\n  (q15_t)0x6ac, (q15_t)0x802d, (q15_t)0x693, (q15_t)0x802c, (q15_t)0x67a, (q15_t)0x802a, (q15_t)0x660, (q15_t)0x8029,\n  (q15_t)0x647, (q15_t)0x8028, (q15_t)0x62e, (q15_t)0x8027, (q15_t)0x615, (q15_t)0x8026, (q15_t)0x5fc, (q15_t)0x8024,\n  (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x5ca, (q15_t)0x8022, (q15_t)0x5b1, (q15_t)0x8021, (q15_t)0x598, (q15_t)0x8020,\n  (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x565, (q15_t)0x801e, (q15_t)0x54c, (q15_t)0x801d, (q15_t)0x533, (q15_t)0x801c,\n  (q15_t)0x51a, (q15_t)0x801b, (q15_t)0x501, (q15_t)0x801a, (q15_t)0x4e8, (q15_t)0x8019, (q15_t)0x4cf, (q15_t)0x8018,\n  (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x49c, (q15_t)0x8016, (q15_t)0x483, (q15_t)0x8015, (q15_t)0x46a, (q15_t)0x8014,\n  (q15_t)0x451, (q15_t)0x8013, (q15_t)0x438, (q15_t)0x8012, (q15_t)0x41f, (q15_t)0x8012, (q15_t)0x406, (q15_t)0x8011,\n  (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x3d4, (q15_t)0x800f, (q15_t)0x3ba, (q15_t)0x800e, (q15_t)0x3a1, (q15_t)0x800e,\n  (q15_t)0x388, (q15_t)0x800d, (q15_t)0x36f, (q15_t)0x800c, (q15_t)0x356, (q15_t)0x800c, (q15_t)0x33d, (q15_t)0x800b,\n  (q15_t)0x324, (q15_t)0x800a, (q15_t)0x30b, (q15_t)0x800a, (q15_t)0x2f1, (q15_t)0x8009, (q15_t)0x2d8, (q15_t)0x8009,\n  (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x2a6, (q15_t)0x8008, (q15_t)0x28d, (q15_t)0x8007, (q15_t)0x274, (q15_t)0x8007,\n  (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x242, (q15_t)0x8006, (q15_t)0x228, (q15_t)0x8005, (q15_t)0x20f, (q15_t)0x8005,\n  (q15_t)0x1f6, (q15_t)0x8004, (q15_t)0x1dd, (q15_t)0x8004, (q15_t)0x1c4, (q15_t)0x8004, (q15_t)0x1ab, (q15_t)0x8003,\n  (q15_t)0x192, (q15_t)0x8003, (q15_t)0x178, (q15_t)0x8003, (q15_t)0x15f, (q15_t)0x8002, (q15_t)0x146, (q15_t)0x8002,\n  (q15_t)0x12d, (q15_t)0x8002, (q15_t)0x114, (q15_t)0x8002, (q15_t)0xfb, (q15_t)0x8001, (q15_t)0xe2, (q15_t)0x8001,\n  (q15_t)0xc9, (q15_t)0x8001, (q15_t)0xaf, (q15_t)0x8001, (q15_t)0x96, (q15_t)0x8001, (q15_t)0x7d, (q15_t)0x8001,\n  (q15_t)0x64, (q15_t)0x8001, (q15_t)0x4b, (q15_t)0x8001, (q15_t)0x32, (q15_t)0x8001, (q15_t)0x19, (q15_t)0x8001\n};\n    const q15_t __ALIGNED(4) cos_factorsQ15_2048[2048] = {\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff,\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffd, (q15_t)0x7ffd,\n  (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffa,\n  (q15_t)0x7ffa, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff6,\n  (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff4, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff2, (q15_t)0x7ff1, (q15_t)0x7ff0,\n  (q15_t)0x7ff0, (q15_t)0x7fef, (q15_t)0x7fee, (q15_t)0x7fed, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7feb, (q15_t)0x7fea,\n  (q15_t)0x7fe9, (q15_t)0x7fe8, (q15_t)0x7fe7, (q15_t)0x7fe6, (q15_t)0x7fe5, (q15_t)0x7fe4, (q15_t)0x7fe3, (q15_t)0x7fe2,\n  (q15_t)0x7fe1, (q15_t)0x7fe0, (q15_t)0x7fdf, (q15_t)0x7fdd, (q15_t)0x7fdc, (q15_t)0x7fdb, (q15_t)0x7fda, (q15_t)0x7fd9,\n  (q15_t)0x7fd7, (q15_t)0x7fd6, (q15_t)0x7fd5, (q15_t)0x7fd4, (q15_t)0x7fd2, (q15_t)0x7fd1, (q15_t)0x7fd0, (q15_t)0x7fce,\n  (q15_t)0x7fcd, (q15_t)0x7fcb, (q15_t)0x7fca, (q15_t)0x7fc9, (q15_t)0x7fc7, (q15_t)0x7fc6, (q15_t)0x7fc4, (q15_t)0x7fc3,\n  (q15_t)0x7fc1, (q15_t)0x7fc0, (q15_t)0x7fbe, (q15_t)0x7fbc, (q15_t)0x7fbb, (q15_t)0x7fb9, (q15_t)0x7fb7, (q15_t)0x7fb6,\n  (q15_t)0x7fb4, (q15_t)0x7fb2, (q15_t)0x7fb1, (q15_t)0x7faf, (q15_t)0x7fad, (q15_t)0x7fab, (q15_t)0x7fa9, (q15_t)0x7fa8,\n  (q15_t)0x7fa6, (q15_t)0x7fa4, (q15_t)0x7fa2, (q15_t)0x7fa0, (q15_t)0x7f9e, (q15_t)0x7f9c, (q15_t)0x7f9a, (q15_t)0x7f98,\n  (q15_t)0x7f96, (q15_t)0x7f94, (q15_t)0x7f92, (q15_t)0x7f90, (q15_t)0x7f8e, (q15_t)0x7f8c, (q15_t)0x7f8a, (q15_t)0x7f88,\n  (q15_t)0x7f86, (q15_t)0x7f83, (q15_t)0x7f81, (q15_t)0x7f7f, (q15_t)0x7f7d, (q15_t)0x7f7b, (q15_t)0x7f78, (q15_t)0x7f76,\n  (q15_t)0x7f74, (q15_t)0x7f71, (q15_t)0x7f6f, (q15_t)0x7f6d, (q15_t)0x7f6a, (q15_t)0x7f68, (q15_t)0x7f65, (q15_t)0x7f63,\n  (q15_t)0x7f60, (q15_t)0x7f5e, (q15_t)0x7f5b, (q15_t)0x7f59, (q15_t)0x7f56, (q15_t)0x7f54, (q15_t)0x7f51, (q15_t)0x7f4f,\n  (q15_t)0x7f4c, (q15_t)0x7f49, (q15_t)0x7f47, (q15_t)0x7f44, (q15_t)0x7f41, (q15_t)0x7f3f, (q15_t)0x7f3c, (q15_t)0x7f39,\n  (q15_t)0x7f36, (q15_t)0x7f34, (q15_t)0x7f31, (q15_t)0x7f2e, (q15_t)0x7f2b, (q15_t)0x7f28, (q15_t)0x7f25, (q15_t)0x7f23,\n  (q15_t)0x7f20, (q15_t)0x7f1d, (q15_t)0x7f1a, (q15_t)0x7f17, (q15_t)0x7f14, (q15_t)0x7f11, (q15_t)0x7f0e, (q15_t)0x7f0b,\n  (q15_t)0x7f08, (q15_t)0x7f04, (q15_t)0x7f01, (q15_t)0x7efe, (q15_t)0x7efb, (q15_t)0x7ef8, (q15_t)0x7ef5, (q15_t)0x7ef1,\n  (q15_t)0x7eee, (q15_t)0x7eeb, (q15_t)0x7ee8, (q15_t)0x7ee4, (q15_t)0x7ee1, (q15_t)0x7ede, (q15_t)0x7eda, (q15_t)0x7ed7,\n  (q15_t)0x7ed4, (q15_t)0x7ed0, (q15_t)0x7ecd, (q15_t)0x7ec9, (q15_t)0x7ec6, (q15_t)0x7ec3, (q15_t)0x7ebf, (q15_t)0x7ebb,\n  (q15_t)0x7eb8, (q15_t)0x7eb4, (q15_t)0x7eb1, (q15_t)0x7ead, (q15_t)0x7eaa, (q15_t)0x7ea6, (q15_t)0x7ea2, (q15_t)0x7e9f,\n  (q15_t)0x7e9b, (q15_t)0x7e97, (q15_t)0x7e94, (q15_t)0x7e90, (q15_t)0x7e8c, (q15_t)0x7e88, (q15_t)0x7e84, (q15_t)0x7e81,\n  (q15_t)0x7e7d, (q15_t)0x7e79, (q15_t)0x7e75, (q15_t)0x7e71, (q15_t)0x7e6d, (q15_t)0x7e69, (q15_t)0x7e65, (q15_t)0x7e61,\n  (q15_t)0x7e5d, (q15_t)0x7e59, (q15_t)0x7e55, (q15_t)0x7e51, (q15_t)0x7e4d, (q15_t)0x7e49, (q15_t)0x7e45, (q15_t)0x7e41,\n  (q15_t)0x7e3d, (q15_t)0x7e39, (q15_t)0x7e34, (q15_t)0x7e30, (q15_t)0x7e2c, (q15_t)0x7e28, (q15_t)0x7e24, (q15_t)0x7e1f,\n  (q15_t)0x7e1b, (q15_t)0x7e17, (q15_t)0x7e12, (q15_t)0x7e0e, (q15_t)0x7e0a, (q15_t)0x7e05, (q15_t)0x7e01, (q15_t)0x7dfc,\n  (q15_t)0x7df8, (q15_t)0x7df3, (q15_t)0x7def, (q15_t)0x7dea, (q15_t)0x7de6, (q15_t)0x7de1, (q15_t)0x7ddd, (q15_t)0x7dd8,\n  (q15_t)0x7dd4, (q15_t)0x7dcf, (q15_t)0x7dca, (q15_t)0x7dc6, (q15_t)0x7dc1, (q15_t)0x7dbc, (q15_t)0x7db8, (q15_t)0x7db3,\n  (q15_t)0x7dae, (q15_t)0x7da9, (q15_t)0x7da5, (q15_t)0x7da0, (q15_t)0x7d9b, (q15_t)0x7d96, (q15_t)0x7d91, (q15_t)0x7d8c,\n  (q15_t)0x7d87, (q15_t)0x7d82, (q15_t)0x7d7e, (q15_t)0x7d79, (q15_t)0x7d74, (q15_t)0x7d6f, (q15_t)0x7d6a, (q15_t)0x7d65,\n  (q15_t)0x7d60, (q15_t)0x7d5a, (q15_t)0x7d55, (q15_t)0x7d50, (q15_t)0x7d4b, (q15_t)0x7d46, (q15_t)0x7d41, (q15_t)0x7d3c,\n  (q15_t)0x7d36, (q15_t)0x7d31, (q15_t)0x7d2c, (q15_t)0x7d27, (q15_t)0x7d21, (q15_t)0x7d1c, (q15_t)0x7d17, (q15_t)0x7d11,\n  (q15_t)0x7d0c, (q15_t)0x7d07, (q15_t)0x7d01, (q15_t)0x7cfc, (q15_t)0x7cf6, (q15_t)0x7cf1, (q15_t)0x7cec, (q15_t)0x7ce6,\n  (q15_t)0x7ce1, (q15_t)0x7cdb, (q15_t)0x7cd5, (q15_t)0x7cd0, (q15_t)0x7cca, (q15_t)0x7cc5, (q15_t)0x7cbf, (q15_t)0x7cb9,\n  (q15_t)0x7cb4, (q15_t)0x7cae, (q15_t)0x7ca8, (q15_t)0x7ca3, (q15_t)0x7c9d, (q15_t)0x7c97, (q15_t)0x7c91, (q15_t)0x7c8c,\n  (q15_t)0x7c86, (q15_t)0x7c80, (q15_t)0x7c7a, (q15_t)0x7c74, (q15_t)0x7c6e, (q15_t)0x7c69, (q15_t)0x7c63, (q15_t)0x7c5d,\n  (q15_t)0x7c57, (q15_t)0x7c51, (q15_t)0x7c4b, (q15_t)0x7c45, (q15_t)0x7c3f, (q15_t)0x7c39, (q15_t)0x7c33, (q15_t)0x7c2d,\n  (q15_t)0x7c26, (q15_t)0x7c20, (q15_t)0x7c1a, (q15_t)0x7c14, (q15_t)0x7c0e, (q15_t)0x7c08, (q15_t)0x7c01, (q15_t)0x7bfb,\n  (q15_t)0x7bf5, (q15_t)0x7bef, (q15_t)0x7be8, (q15_t)0x7be2, (q15_t)0x7bdc, (q15_t)0x7bd5, (q15_t)0x7bcf, (q15_t)0x7bc9,\n  (q15_t)0x7bc2, (q15_t)0x7bbc, (q15_t)0x7bb5, (q15_t)0x7baf, (q15_t)0x7ba8, (q15_t)0x7ba2, (q15_t)0x7b9b, (q15_t)0x7b95,\n  (q15_t)0x7b8e, (q15_t)0x7b88, (q15_t)0x7b81, (q15_t)0x7b7a, (q15_t)0x7b74, (q15_t)0x7b6d, (q15_t)0x7b67, (q15_t)0x7b60,\n  (q15_t)0x7b59, (q15_t)0x7b52, (q15_t)0x7b4c, (q15_t)0x7b45, (q15_t)0x7b3e, (q15_t)0x7b37, (q15_t)0x7b31, (q15_t)0x7b2a,\n  (q15_t)0x7b23, (q15_t)0x7b1c, (q15_t)0x7b15, (q15_t)0x7b0e, (q15_t)0x7b07, (q15_t)0x7b00, (q15_t)0x7af9, (q15_t)0x7af2,\n  (q15_t)0x7aeb, (q15_t)0x7ae4, (q15_t)0x7add, (q15_t)0x7ad6, (q15_t)0x7acf, (q15_t)0x7ac8, (q15_t)0x7ac1, (q15_t)0x7aba,\n  (q15_t)0x7ab3, (q15_t)0x7aac, (q15_t)0x7aa4, (q15_t)0x7a9d, (q15_t)0x7a96, (q15_t)0x7a8f, (q15_t)0x7a87, (q15_t)0x7a80,\n  (q15_t)0x7a79, (q15_t)0x7a72, (q15_t)0x7a6a, (q15_t)0x7a63, (q15_t)0x7a5c, (q15_t)0x7a54, (q15_t)0x7a4d, (q15_t)0x7a45,\n  (q15_t)0x7a3e, (q15_t)0x7a36, (q15_t)0x7a2f, (q15_t)0x7a27, (q15_t)0x7a20, (q15_t)0x7a18, (q15_t)0x7a11, (q15_t)0x7a09,\n  (q15_t)0x7a02, (q15_t)0x79fa, (q15_t)0x79f2, (q15_t)0x79eb, (q15_t)0x79e3, (q15_t)0x79db, (q15_t)0x79d4, (q15_t)0x79cc,\n  (q15_t)0x79c4, (q15_t)0x79bc, (q15_t)0x79b5, (q15_t)0x79ad, (q15_t)0x79a5, (q15_t)0x799d, (q15_t)0x7995, (q15_t)0x798e,\n  (q15_t)0x7986, (q15_t)0x797e, (q15_t)0x7976, (q15_t)0x796e, (q15_t)0x7966, (q15_t)0x795e, (q15_t)0x7956, (q15_t)0x794e,\n  (q15_t)0x7946, (q15_t)0x793e, (q15_t)0x7936, (q15_t)0x792e, (q15_t)0x7926, (q15_t)0x791e, (q15_t)0x7915, (q15_t)0x790d,\n  (q15_t)0x7905, (q15_t)0x78fd, (q15_t)0x78f5, (q15_t)0x78ec, (q15_t)0x78e4, (q15_t)0x78dc, (q15_t)0x78d4, (q15_t)0x78cb,\n  (q15_t)0x78c3, (q15_t)0x78bb, (q15_t)0x78b2, (q15_t)0x78aa, (q15_t)0x78a2, (q15_t)0x7899, (q15_t)0x7891, (q15_t)0x7888,\n  (q15_t)0x7880, (q15_t)0x7877, (q15_t)0x786f, (q15_t)0x7866, (q15_t)0x785e, (q15_t)0x7855, (q15_t)0x784d, (q15_t)0x7844,\n  (q15_t)0x783b, (q15_t)0x7833, (q15_t)0x782a, (q15_t)0x7821, (q15_t)0x7819, (q15_t)0x7810, (q15_t)0x7807, (q15_t)0x77ff,\n  (q15_t)0x77f6, (q15_t)0x77ed, (q15_t)0x77e4, (q15_t)0x77db, (q15_t)0x77d3, (q15_t)0x77ca, (q15_t)0x77c1, (q15_t)0x77b8,\n  (q15_t)0x77af, (q15_t)0x77a6, (q15_t)0x779d, (q15_t)0x7794, (q15_t)0x778b, (q15_t)0x7782, (q15_t)0x7779, (q15_t)0x7770,\n  (q15_t)0x7767, (q15_t)0x775e, (q15_t)0x7755, (q15_t)0x774c, (q15_t)0x7743, (q15_t)0x773a, (q15_t)0x7731, (q15_t)0x7727,\n  (q15_t)0x771e, (q15_t)0x7715, (q15_t)0x770c, (q15_t)0x7703, (q15_t)0x76f9, (q15_t)0x76f0, (q15_t)0x76e7, (q15_t)0x76dd,\n  (q15_t)0x76d4, (q15_t)0x76cb, (q15_t)0x76c1, (q15_t)0x76b8, (q15_t)0x76af, (q15_t)0x76a5, (q15_t)0x769c, (q15_t)0x7692,\n  (q15_t)0x7689, (q15_t)0x767f, (q15_t)0x7676, (q15_t)0x766c, (q15_t)0x7663, (q15_t)0x7659, (q15_t)0x7650, (q15_t)0x7646,\n  (q15_t)0x763c, (q15_t)0x7633, (q15_t)0x7629, (q15_t)0x761f, (q15_t)0x7616, (q15_t)0x760c, (q15_t)0x7602, (q15_t)0x75f9,\n  (q15_t)0x75ef, (q15_t)0x75e5, (q15_t)0x75db, (q15_t)0x75d1, (q15_t)0x75c8, (q15_t)0x75be, (q15_t)0x75b4, (q15_t)0x75aa,\n  (q15_t)0x75a0, (q15_t)0x7596, (q15_t)0x758c, (q15_t)0x7582, (q15_t)0x7578, (q15_t)0x756e, (q15_t)0x7564, (q15_t)0x755a,\n  (q15_t)0x7550, (q15_t)0x7546, (q15_t)0x753c, (q15_t)0x7532, (q15_t)0x7528, (q15_t)0x751e, (q15_t)0x7514, (q15_t)0x7509,\n  (q15_t)0x74ff, (q15_t)0x74f5, (q15_t)0x74eb, (q15_t)0x74e1, (q15_t)0x74d6, (q15_t)0x74cc, (q15_t)0x74c2, (q15_t)0x74b7,\n  (q15_t)0x74ad, (q15_t)0x74a3, (q15_t)0x7498, (q15_t)0x748e, (q15_t)0x7484, (q15_t)0x7479, (q15_t)0x746f, (q15_t)0x7464,\n  (q15_t)0x745a, (q15_t)0x744f, (q15_t)0x7445, (q15_t)0x743a, (q15_t)0x7430, (q15_t)0x7425, (q15_t)0x741b, (q15_t)0x7410,\n  (q15_t)0x7406, (q15_t)0x73fb, (q15_t)0x73f0, (q15_t)0x73e6, (q15_t)0x73db, (q15_t)0x73d0, (q15_t)0x73c6, (q15_t)0x73bb,\n  (q15_t)0x73b0, (q15_t)0x73a5, (q15_t)0x739b, (q15_t)0x7390, (q15_t)0x7385, (q15_t)0x737a, (q15_t)0x736f, (q15_t)0x7364,\n  (q15_t)0x7359, (q15_t)0x734f, (q15_t)0x7344, (q15_t)0x7339, (q15_t)0x732e, (q15_t)0x7323, (q15_t)0x7318, (q15_t)0x730d,\n  (q15_t)0x7302, (q15_t)0x72f7, (q15_t)0x72ec, (q15_t)0x72e1, (q15_t)0x72d5, (q15_t)0x72ca, (q15_t)0x72bf, (q15_t)0x72b4,\n  (q15_t)0x72a9, (q15_t)0x729e, (q15_t)0x7293, (q15_t)0x7287, (q15_t)0x727c, (q15_t)0x7271, (q15_t)0x7266, (q15_t)0x725a,\n  (q15_t)0x724f, (q15_t)0x7244, (q15_t)0x7238, (q15_t)0x722d, (q15_t)0x7222, (q15_t)0x7216, (q15_t)0x720b, (q15_t)0x71ff,\n  (q15_t)0x71f4, (q15_t)0x71e9, (q15_t)0x71dd, (q15_t)0x71d2, (q15_t)0x71c6, (q15_t)0x71bb, (q15_t)0x71af, (q15_t)0x71a3,\n  (q15_t)0x7198, (q15_t)0x718c, (q15_t)0x7181, (q15_t)0x7175, (q15_t)0x7169, (q15_t)0x715e, (q15_t)0x7152, (q15_t)0x7146,\n  (q15_t)0x713b, (q15_t)0x712f, (q15_t)0x7123, (q15_t)0x7117, (q15_t)0x710c, (q15_t)0x7100, (q15_t)0x70f4, (q15_t)0x70e8,\n  (q15_t)0x70dc, (q15_t)0x70d1, (q15_t)0x70c5, (q15_t)0x70b9, (q15_t)0x70ad, (q15_t)0x70a1, (q15_t)0x7095, (q15_t)0x7089,\n  (q15_t)0x707d, (q15_t)0x7071, (q15_t)0x7065, (q15_t)0x7059, (q15_t)0x704d, (q15_t)0x7041, (q15_t)0x7035, (q15_t)0x7029,\n  (q15_t)0x701d, (q15_t)0x7010, (q15_t)0x7004, (q15_t)0x6ff8, (q15_t)0x6fec, (q15_t)0x6fe0, (q15_t)0x6fd3, (q15_t)0x6fc7,\n  (q15_t)0x6fbb, (q15_t)0x6faf, (q15_t)0x6fa2, (q15_t)0x6f96, (q15_t)0x6f8a, (q15_t)0x6f7d, (q15_t)0x6f71, (q15_t)0x6f65,\n  (q15_t)0x6f58, (q15_t)0x6f4c, (q15_t)0x6f3f, (q15_t)0x6f33, (q15_t)0x6f27, (q15_t)0x6f1a, (q15_t)0x6f0e, (q15_t)0x6f01,\n  (q15_t)0x6ef5, (q15_t)0x6ee8, (q15_t)0x6edc, (q15_t)0x6ecf, (q15_t)0x6ec2, (q15_t)0x6eb6, (q15_t)0x6ea9, (q15_t)0x6e9c,\n  (q15_t)0x6e90, (q15_t)0x6e83, (q15_t)0x6e76, (q15_t)0x6e6a, (q15_t)0x6e5d, (q15_t)0x6e50, (q15_t)0x6e44, (q15_t)0x6e37,\n  (q15_t)0x6e2a, (q15_t)0x6e1d, (q15_t)0x6e10, (q15_t)0x6e04, (q15_t)0x6df7, (q15_t)0x6dea, (q15_t)0x6ddd, (q15_t)0x6dd0,\n  (q15_t)0x6dc3, (q15_t)0x6db6, (q15_t)0x6da9, (q15_t)0x6d9c, (q15_t)0x6d8f, (q15_t)0x6d82, (q15_t)0x6d75, (q15_t)0x6d68,\n  (q15_t)0x6d5b, (q15_t)0x6d4e, (q15_t)0x6d41, (q15_t)0x6d34, (q15_t)0x6d27, (q15_t)0x6d1a, (q15_t)0x6d0c, (q15_t)0x6cff,\n  (q15_t)0x6cf2, (q15_t)0x6ce5, (q15_t)0x6cd8, (q15_t)0x6cca, (q15_t)0x6cbd, (q15_t)0x6cb0, (q15_t)0x6ca3, (q15_t)0x6c95,\n  (q15_t)0x6c88, (q15_t)0x6c7b, (q15_t)0x6c6d, (q15_t)0x6c60, (q15_t)0x6c53, (q15_t)0x6c45, (q15_t)0x6c38, (q15_t)0x6c2a,\n  (q15_t)0x6c1d, (q15_t)0x6c0f, (q15_t)0x6c02, (q15_t)0x6bf5, (q15_t)0x6be7, (q15_t)0x6bd9, (q15_t)0x6bcc, (q15_t)0x6bbe,\n  (q15_t)0x6bb1, (q15_t)0x6ba3, (q15_t)0x6b96, (q15_t)0x6b88, (q15_t)0x6b7a, (q15_t)0x6b6d, (q15_t)0x6b5f, (q15_t)0x6b51,\n  (q15_t)0x6b44, (q15_t)0x6b36, (q15_t)0x6b28, (q15_t)0x6b1a, (q15_t)0x6b0d, (q15_t)0x6aff, (q15_t)0x6af1, (q15_t)0x6ae3,\n  (q15_t)0x6ad5, (q15_t)0x6ac8, (q15_t)0x6aba, (q15_t)0x6aac, (q15_t)0x6a9e, (q15_t)0x6a90, (q15_t)0x6a82, (q15_t)0x6a74,\n  (q15_t)0x6a66, (q15_t)0x6a58, (q15_t)0x6a4a, (q15_t)0x6a3c, (q15_t)0x6a2e, (q15_t)0x6a20, (q15_t)0x6a12, (q15_t)0x6a04,\n  (q15_t)0x69f6, (q15_t)0x69e8, (q15_t)0x69da, (q15_t)0x69cb, (q15_t)0x69bd, (q15_t)0x69af, (q15_t)0x69a1, (q15_t)0x6993,\n  (q15_t)0x6985, (q15_t)0x6976, (q15_t)0x6968, (q15_t)0x695a, (q15_t)0x694b, (q15_t)0x693d, (q15_t)0x692f, (q15_t)0x6921,\n  (q15_t)0x6912, (q15_t)0x6904, (q15_t)0x68f5, (q15_t)0x68e7, (q15_t)0x68d9, (q15_t)0x68ca, (q15_t)0x68bc, (q15_t)0x68ad,\n  (q15_t)0x689f, (q15_t)0x6890, (q15_t)0x6882, (q15_t)0x6873, (q15_t)0x6865, (q15_t)0x6856, (q15_t)0x6848, (q15_t)0x6839,\n  (q15_t)0x682b, (q15_t)0x681c, (q15_t)0x680d, (q15_t)0x67ff, (q15_t)0x67f0, (q15_t)0x67e1, (q15_t)0x67d3, (q15_t)0x67c4,\n  (q15_t)0x67b5, (q15_t)0x67a6, (q15_t)0x6798, (q15_t)0x6789, (q15_t)0x677a, (q15_t)0x676b, (q15_t)0x675d, (q15_t)0x674e,\n  (q15_t)0x673f, (q15_t)0x6730, (q15_t)0x6721, (q15_t)0x6712, (q15_t)0x6703, (q15_t)0x66f4, (q15_t)0x66e5, (q15_t)0x66d6,\n  (q15_t)0x66c8, (q15_t)0x66b9, (q15_t)0x66aa, (q15_t)0x669b, (q15_t)0x668b, (q15_t)0x667c, (q15_t)0x666d, (q15_t)0x665e,\n  (q15_t)0x664f, (q15_t)0x6640, (q15_t)0x6631, (q15_t)0x6622, (q15_t)0x6613, (q15_t)0x6603, (q15_t)0x65f4, (q15_t)0x65e5,\n  (q15_t)0x65d6, (q15_t)0x65c7, (q15_t)0x65b7, (q15_t)0x65a8, (q15_t)0x6599, (q15_t)0x658a, (q15_t)0x657a, (q15_t)0x656b,\n  (q15_t)0x655c, (q15_t)0x654c, (q15_t)0x653d, (q15_t)0x652d, (q15_t)0x651e, (q15_t)0x650f, (q15_t)0x64ff, (q15_t)0x64f0,\n  (q15_t)0x64e0, (q15_t)0x64d1, (q15_t)0x64c1, (q15_t)0x64b2, (q15_t)0x64a2, (q15_t)0x6493, (q15_t)0x6483, (q15_t)0x6474,\n  (q15_t)0x6464, (q15_t)0x6454, (q15_t)0x6445, (q15_t)0x6435, (q15_t)0x6426, (q15_t)0x6416, (q15_t)0x6406, (q15_t)0x63f7,\n  (q15_t)0x63e7, (q15_t)0x63d7, (q15_t)0x63c7, (q15_t)0x63b8, (q15_t)0x63a8, (q15_t)0x6398, (q15_t)0x6388, (q15_t)0x6378,\n  (q15_t)0x6369, (q15_t)0x6359, (q15_t)0x6349, (q15_t)0x6339, (q15_t)0x6329, (q15_t)0x6319, (q15_t)0x6309, (q15_t)0x62f9,\n  (q15_t)0x62ea, (q15_t)0x62da, (q15_t)0x62ca, (q15_t)0x62ba, (q15_t)0x62aa, (q15_t)0x629a, (q15_t)0x628a, (q15_t)0x627a,\n  (q15_t)0x6269, (q15_t)0x6259, (q15_t)0x6249, (q15_t)0x6239, (q15_t)0x6229, (q15_t)0x6219, (q15_t)0x6209, (q15_t)0x61f9,\n  (q15_t)0x61e8, (q15_t)0x61d8, (q15_t)0x61c8, (q15_t)0x61b8, (q15_t)0x61a8, (q15_t)0x6197, (q15_t)0x6187, (q15_t)0x6177,\n  (q15_t)0x6166, (q15_t)0x6156, (q15_t)0x6146, (q15_t)0x6135, (q15_t)0x6125, (q15_t)0x6115, (q15_t)0x6104, (q15_t)0x60f4,\n  (q15_t)0x60e4, (q15_t)0x60d3, (q15_t)0x60c3, (q15_t)0x60b2, (q15_t)0x60a2, (q15_t)0x6091, (q15_t)0x6081, (q15_t)0x6070,\n  (q15_t)0x6060, (q15_t)0x604f, (q15_t)0x603f, (q15_t)0x602e, (q15_t)0x601d, (q15_t)0x600d, (q15_t)0x5ffc, (q15_t)0x5fec,\n  (q15_t)0x5fdb, (q15_t)0x5fca, (q15_t)0x5fba, (q15_t)0x5fa9, (q15_t)0x5f98, (q15_t)0x5f87, (q15_t)0x5f77, (q15_t)0x5f66,\n  (q15_t)0x5f55, (q15_t)0x5f44, (q15_t)0x5f34, (q15_t)0x5f23, (q15_t)0x5f12, (q15_t)0x5f01, (q15_t)0x5ef0, (q15_t)0x5edf,\n  (q15_t)0x5ecf, (q15_t)0x5ebe, (q15_t)0x5ead, (q15_t)0x5e9c, (q15_t)0x5e8b, (q15_t)0x5e7a, (q15_t)0x5e69, (q15_t)0x5e58,\n  (q15_t)0x5e47, (q15_t)0x5e36, (q15_t)0x5e25, (q15_t)0x5e14, (q15_t)0x5e03, (q15_t)0x5df2, (q15_t)0x5de1, (q15_t)0x5dd0,\n  (q15_t)0x5dbf, (q15_t)0x5dad, (q15_t)0x5d9c, (q15_t)0x5d8b, (q15_t)0x5d7a, (q15_t)0x5d69, (q15_t)0x5d58, (q15_t)0x5d46,\n  (q15_t)0x5d35, (q15_t)0x5d24, (q15_t)0x5d13, (q15_t)0x5d01, (q15_t)0x5cf0, (q15_t)0x5cdf, (q15_t)0x5cce, (q15_t)0x5cbc,\n  (q15_t)0x5cab, (q15_t)0x5c9a, (q15_t)0x5c88, (q15_t)0x5c77, (q15_t)0x5c66, (q15_t)0x5c54, (q15_t)0x5c43, (q15_t)0x5c31,\n  (q15_t)0x5c20, (q15_t)0x5c0e, (q15_t)0x5bfd, (q15_t)0x5beb, (q15_t)0x5bda, (q15_t)0x5bc8, (q15_t)0x5bb7, (q15_t)0x5ba5,\n  (q15_t)0x5b94, (q15_t)0x5b82, (q15_t)0x5b71, (q15_t)0x5b5f, (q15_t)0x5b4d, (q15_t)0x5b3c, (q15_t)0x5b2a, (q15_t)0x5b19,\n  (q15_t)0x5b07, (q15_t)0x5af5, (q15_t)0x5ae4, (q15_t)0x5ad2, (q15_t)0x5ac0, (q15_t)0x5aae, (q15_t)0x5a9d, (q15_t)0x5a8b,\n  (q15_t)0x5a79, (q15_t)0x5a67, (q15_t)0x5a56, (q15_t)0x5a44, (q15_t)0x5a32, (q15_t)0x5a20, (q15_t)0x5a0e, (q15_t)0x59fc,\n  (q15_t)0x59ea, (q15_t)0x59d9, (q15_t)0x59c7, (q15_t)0x59b5, (q15_t)0x59a3, (q15_t)0x5991, (q15_t)0x597f, (q15_t)0x596d,\n  (q15_t)0x595b, (q15_t)0x5949, (q15_t)0x5937, (q15_t)0x5925, (q15_t)0x5913, (q15_t)0x5901, (q15_t)0x58ef, (q15_t)0x58dd,\n  (q15_t)0x58cb, (q15_t)0x58b8, (q15_t)0x58a6, (q15_t)0x5894, (q15_t)0x5882, (q15_t)0x5870, (q15_t)0x585e, (q15_t)0x584b,\n  (q15_t)0x5839, (q15_t)0x5827, (q15_t)0x5815, (q15_t)0x5803, (q15_t)0x57f0, (q15_t)0x57de, (q15_t)0x57cc, (q15_t)0x57b9,\n  (q15_t)0x57a7, (q15_t)0x5795, (q15_t)0x5783, (q15_t)0x5770, (q15_t)0x575e, (q15_t)0x574b, (q15_t)0x5739, (q15_t)0x5727,\n  (q15_t)0x5714, (q15_t)0x5702, (q15_t)0x56ef, (q15_t)0x56dd, (q15_t)0x56ca, (q15_t)0x56b8, (q15_t)0x56a5, (q15_t)0x5693,\n  (q15_t)0x5680, (q15_t)0x566e, (q15_t)0x565b, (q15_t)0x5649, (q15_t)0x5636, (q15_t)0x5624, (q15_t)0x5611, (q15_t)0x55fe,\n  (q15_t)0x55ec, (q15_t)0x55d9, (q15_t)0x55c7, (q15_t)0x55b4, (q15_t)0x55a1, (q15_t)0x558f, (q15_t)0x557c, (q15_t)0x5569,\n  (q15_t)0x5556, (q15_t)0x5544, (q15_t)0x5531, (q15_t)0x551e, (q15_t)0x550b, (q15_t)0x54f9, (q15_t)0x54e6, (q15_t)0x54d3,\n  (q15_t)0x54c0, (q15_t)0x54ad, (q15_t)0x549a, (q15_t)0x5488, (q15_t)0x5475, (q15_t)0x5462, (q15_t)0x544f, (q15_t)0x543c,\n  (q15_t)0x5429, (q15_t)0x5416, (q15_t)0x5403, (q15_t)0x53f0, (q15_t)0x53dd, (q15_t)0x53ca, (q15_t)0x53b7, (q15_t)0x53a4,\n  (q15_t)0x5391, (q15_t)0x537e, (q15_t)0x536b, (q15_t)0x5358, (q15_t)0x5345, (q15_t)0x5332, (q15_t)0x531f, (q15_t)0x530c,\n  (q15_t)0x52f8, (q15_t)0x52e5, (q15_t)0x52d2, (q15_t)0x52bf, (q15_t)0x52ac, (q15_t)0x5299, (q15_t)0x5285, (q15_t)0x5272,\n  (q15_t)0x525f, (q15_t)0x524c, (q15_t)0x5238, (q15_t)0x5225, (q15_t)0x5212, (q15_t)0x51ff, (q15_t)0x51eb, (q15_t)0x51d8,\n  (q15_t)0x51c5, (q15_t)0x51b1, (q15_t)0x519e, (q15_t)0x518b, (q15_t)0x5177, (q15_t)0x5164, (q15_t)0x5150, (q15_t)0x513d,\n  (q15_t)0x512a, (q15_t)0x5116, (q15_t)0x5103, (q15_t)0x50ef, (q15_t)0x50dc, (q15_t)0x50c8, (q15_t)0x50b5, (q15_t)0x50a1,\n  (q15_t)0x508e, (q15_t)0x507a, (q15_t)0x5067, (q15_t)0x5053, (q15_t)0x503f, (q15_t)0x502c, (q15_t)0x5018, (q15_t)0x5005,\n  (q15_t)0x4ff1, (q15_t)0x4fdd, (q15_t)0x4fca, (q15_t)0x4fb6, (q15_t)0x4fa2, (q15_t)0x4f8f, (q15_t)0x4f7b, (q15_t)0x4f67,\n  (q15_t)0x4f54, (q15_t)0x4f40, (q15_t)0x4f2c, (q15_t)0x4f18, (q15_t)0x4f05, (q15_t)0x4ef1, (q15_t)0x4edd, (q15_t)0x4ec9,\n  (q15_t)0x4eb6, (q15_t)0x4ea2, (q15_t)0x4e8e, (q15_t)0x4e7a, (q15_t)0x4e66, (q15_t)0x4e52, (q15_t)0x4e3e, (q15_t)0x4e2a,\n  (q15_t)0x4e17, (q15_t)0x4e03, (q15_t)0x4def, (q15_t)0x4ddb, (q15_t)0x4dc7, (q15_t)0x4db3, (q15_t)0x4d9f, (q15_t)0x4d8b,\n  (q15_t)0x4d77, (q15_t)0x4d63, (q15_t)0x4d4f, (q15_t)0x4d3b, (q15_t)0x4d27, (q15_t)0x4d13, (q15_t)0x4cff, (q15_t)0x4ceb,\n  (q15_t)0x4cd6, (q15_t)0x4cc2, (q15_t)0x4cae, (q15_t)0x4c9a, (q15_t)0x4c86, (q15_t)0x4c72, (q15_t)0x4c5e, (q15_t)0x4c49,\n  (q15_t)0x4c35, (q15_t)0x4c21, (q15_t)0x4c0d, (q15_t)0x4bf9, (q15_t)0x4be4, (q15_t)0x4bd0, (q15_t)0x4bbc, (q15_t)0x4ba8,\n  (q15_t)0x4b93, (q15_t)0x4b7f, (q15_t)0x4b6b, (q15_t)0x4b56, (q15_t)0x4b42, (q15_t)0x4b2e, (q15_t)0x4b19, (q15_t)0x4b05,\n  (q15_t)0x4af1, (q15_t)0x4adc, (q15_t)0x4ac8, (q15_t)0x4ab4, (q15_t)0x4a9f, (q15_t)0x4a8b, (q15_t)0x4a76, (q15_t)0x4a62,\n  (q15_t)0x4a4d, (q15_t)0x4a39, (q15_t)0x4a24, (q15_t)0x4a10, (q15_t)0x49fb, (q15_t)0x49e7, (q15_t)0x49d2, (q15_t)0x49be,\n  (q15_t)0x49a9, (q15_t)0x4995, (q15_t)0x4980, (q15_t)0x496c, (q15_t)0x4957, (q15_t)0x4942, (q15_t)0x492e, (q15_t)0x4919,\n  (q15_t)0x4905, (q15_t)0x48f0, (q15_t)0x48db, (q15_t)0x48c7, (q15_t)0x48b2, (q15_t)0x489d, (q15_t)0x4888, (q15_t)0x4874,\n  (q15_t)0x485f, (q15_t)0x484a, (q15_t)0x4836, (q15_t)0x4821, (q15_t)0x480c, (q15_t)0x47f7, (q15_t)0x47e2, (q15_t)0x47ce,\n  (q15_t)0x47b9, (q15_t)0x47a4, (q15_t)0x478f, (q15_t)0x477a, (q15_t)0x4765, (q15_t)0x4751, (q15_t)0x473c, (q15_t)0x4727,\n  (q15_t)0x4712, (q15_t)0x46fd, (q15_t)0x46e8, (q15_t)0x46d3, (q15_t)0x46be, (q15_t)0x46a9, (q15_t)0x4694, (q15_t)0x467f,\n  (q15_t)0x466a, (q15_t)0x4655, (q15_t)0x4640, (q15_t)0x462b, (q15_t)0x4616, (q15_t)0x4601, (q15_t)0x45ec, (q15_t)0x45d7,\n  (q15_t)0x45c2, (q15_t)0x45ad, (q15_t)0x4598, (q15_t)0x4583, (q15_t)0x456e, (q15_t)0x4559, (q15_t)0x4544, (q15_t)0x452e,\n  (q15_t)0x4519, (q15_t)0x4504, (q15_t)0x44ef, (q15_t)0x44da, (q15_t)0x44c5, (q15_t)0x44af, (q15_t)0x449a, (q15_t)0x4485,\n  (q15_t)0x4470, (q15_t)0x445a, (q15_t)0x4445, (q15_t)0x4430, (q15_t)0x441b, (q15_t)0x4405, (q15_t)0x43f0, (q15_t)0x43db,\n  (q15_t)0x43c5, (q15_t)0x43b0, (q15_t)0x439b, (q15_t)0x4385, (q15_t)0x4370, (q15_t)0x435b, (q15_t)0x4345, (q15_t)0x4330,\n  (q15_t)0x431b, (q15_t)0x4305, (q15_t)0x42f0, (q15_t)0x42da, (q15_t)0x42c5, (q15_t)0x42af, (q15_t)0x429a, (q15_t)0x4284,\n  (q15_t)0x426f, (q15_t)0x425a, (q15_t)0x4244, (q15_t)0x422f, (q15_t)0x4219, (q15_t)0x4203, (q15_t)0x41ee, (q15_t)0x41d8,\n  (q15_t)0x41c3, (q15_t)0x41ad, (q15_t)0x4198, (q15_t)0x4182, (q15_t)0x416d, (q15_t)0x4157, (q15_t)0x4141, (q15_t)0x412c,\n  (q15_t)0x4116, (q15_t)0x4100, (q15_t)0x40eb, (q15_t)0x40d5, (q15_t)0x40bf, (q15_t)0x40aa, (q15_t)0x4094, (q15_t)0x407e,\n  (q15_t)0x4069, (q15_t)0x4053, (q15_t)0x403d, (q15_t)0x4027, (q15_t)0x4012, (q15_t)0x3ffc, (q15_t)0x3fe6, (q15_t)0x3fd0,\n  (q15_t)0x3fbb, (q15_t)0x3fa5, (q15_t)0x3f8f, (q15_t)0x3f79, (q15_t)0x3f63, (q15_t)0x3f4d, (q15_t)0x3f38, (q15_t)0x3f22,\n  (q15_t)0x3f0c, (q15_t)0x3ef6, (q15_t)0x3ee0, (q15_t)0x3eca, (q15_t)0x3eb4, (q15_t)0x3e9e, (q15_t)0x3e88, (q15_t)0x3e73,\n  (q15_t)0x3e5d, (q15_t)0x3e47, (q15_t)0x3e31, (q15_t)0x3e1b, (q15_t)0x3e05, (q15_t)0x3def, (q15_t)0x3dd9, (q15_t)0x3dc3,\n  (q15_t)0x3dad, (q15_t)0x3d97, (q15_t)0x3d81, (q15_t)0x3d6b, (q15_t)0x3d55, (q15_t)0x3d3e, (q15_t)0x3d28, (q15_t)0x3d12,\n  (q15_t)0x3cfc, (q15_t)0x3ce6, (q15_t)0x3cd0, (q15_t)0x3cba, (q15_t)0x3ca4, (q15_t)0x3c8e, (q15_t)0x3c77, (q15_t)0x3c61,\n  (q15_t)0x3c4b, (q15_t)0x3c35, (q15_t)0x3c1f, (q15_t)0x3c09, (q15_t)0x3bf2, (q15_t)0x3bdc, (q15_t)0x3bc6, (q15_t)0x3bb0,\n  (q15_t)0x3b99, (q15_t)0x3b83, (q15_t)0x3b6d, (q15_t)0x3b57, (q15_t)0x3b40, (q15_t)0x3b2a, (q15_t)0x3b14, (q15_t)0x3afe,\n  (q15_t)0x3ae7, (q15_t)0x3ad1, (q15_t)0x3abb, (q15_t)0x3aa4, (q15_t)0x3a8e, (q15_t)0x3a78, (q15_t)0x3a61, (q15_t)0x3a4b,\n  (q15_t)0x3a34, (q15_t)0x3a1e, (q15_t)0x3a08, (q15_t)0x39f1, (q15_t)0x39db, (q15_t)0x39c4, (q15_t)0x39ae, (q15_t)0x3998,\n  (q15_t)0x3981, (q15_t)0x396b, (q15_t)0x3954, (q15_t)0x393e, (q15_t)0x3927, (q15_t)0x3911, (q15_t)0x38fa, (q15_t)0x38e4,\n  (q15_t)0x38cd, (q15_t)0x38b7, (q15_t)0x38a0, (q15_t)0x388a, (q15_t)0x3873, (q15_t)0x385d, (q15_t)0x3846, (q15_t)0x382f,\n  (q15_t)0x3819, (q15_t)0x3802, (q15_t)0x37ec, (q15_t)0x37d5, (q15_t)0x37be, (q15_t)0x37a8, (q15_t)0x3791, (q15_t)0x377a,\n  (q15_t)0x3764, (q15_t)0x374d, (q15_t)0x3736, (q15_t)0x3720, (q15_t)0x3709, (q15_t)0x36f2, (q15_t)0x36dc, (q15_t)0x36c5,\n  (q15_t)0x36ae, (q15_t)0x3698, (q15_t)0x3681, (q15_t)0x366a, (q15_t)0x3653, (q15_t)0x363d, (q15_t)0x3626, (q15_t)0x360f,\n  (q15_t)0x35f8, (q15_t)0x35e1, (q15_t)0x35cb, (q15_t)0x35b4, (q15_t)0x359d, (q15_t)0x3586, (q15_t)0x356f, (q15_t)0x3558,\n  (q15_t)0x3542, (q15_t)0x352b, (q15_t)0x3514, (q15_t)0x34fd, (q15_t)0x34e6, (q15_t)0x34cf, (q15_t)0x34b8, (q15_t)0x34a1,\n  (q15_t)0x348b, (q15_t)0x3474, (q15_t)0x345d, (q15_t)0x3446, (q15_t)0x342f, (q15_t)0x3418, (q15_t)0x3401, (q15_t)0x33ea,\n  (q15_t)0x33d3, (q15_t)0x33bc, (q15_t)0x33a5, (q15_t)0x338e, (q15_t)0x3377, (q15_t)0x3360, (q15_t)0x3349, (q15_t)0x3332,\n  (q15_t)0x331b, (q15_t)0x3304, (q15_t)0x32ed, (q15_t)0x32d6, (q15_t)0x32bf, (q15_t)0x32a8, (q15_t)0x3290, (q15_t)0x3279,\n  (q15_t)0x3262, (q15_t)0x324b, (q15_t)0x3234, (q15_t)0x321d, (q15_t)0x3206, (q15_t)0x31ef, (q15_t)0x31d8, (q15_t)0x31c0,\n  (q15_t)0x31a9, (q15_t)0x3192, (q15_t)0x317b, (q15_t)0x3164, (q15_t)0x314c, (q15_t)0x3135, (q15_t)0x311e, (q15_t)0x3107,\n  (q15_t)0x30f0, (q15_t)0x30d8, (q15_t)0x30c1, (q15_t)0x30aa, (q15_t)0x3093, (q15_t)0x307b, (q15_t)0x3064, (q15_t)0x304d,\n  (q15_t)0x3036, (q15_t)0x301e, (q15_t)0x3007, (q15_t)0x2ff0, (q15_t)0x2fd8, (q15_t)0x2fc1, (q15_t)0x2faa, (q15_t)0x2f92,\n  (q15_t)0x2f7b, (q15_t)0x2f64, (q15_t)0x2f4c, (q15_t)0x2f35, (q15_t)0x2f1e, (q15_t)0x2f06, (q15_t)0x2eef, (q15_t)0x2ed8,\n  (q15_t)0x2ec0, (q15_t)0x2ea9, (q15_t)0x2e91, (q15_t)0x2e7a, (q15_t)0x2e63, (q15_t)0x2e4b, (q15_t)0x2e34, (q15_t)0x2e1c,\n  (q15_t)0x2e05, (q15_t)0x2ded, (q15_t)0x2dd6, (q15_t)0x2dbe, (q15_t)0x2da7, (q15_t)0x2d8f, (q15_t)0x2d78, (q15_t)0x2d60,\n  (q15_t)0x2d49, (q15_t)0x2d31, (q15_t)0x2d1a, (q15_t)0x2d02, (q15_t)0x2ceb, (q15_t)0x2cd3, (q15_t)0x2cbc, (q15_t)0x2ca4,\n  (q15_t)0x2c8d, (q15_t)0x2c75, (q15_t)0x2c5e, (q15_t)0x2c46, (q15_t)0x2c2e, (q15_t)0x2c17, (q15_t)0x2bff, (q15_t)0x2be8,\n  (q15_t)0x2bd0, (q15_t)0x2bb8, (q15_t)0x2ba1, (q15_t)0x2b89, (q15_t)0x2b71, (q15_t)0x2b5a, (q15_t)0x2b42, (q15_t)0x2b2b,\n  (q15_t)0x2b13, (q15_t)0x2afb, (q15_t)0x2ae4, (q15_t)0x2acc, (q15_t)0x2ab4, (q15_t)0x2a9c, (q15_t)0x2a85, (q15_t)0x2a6d,\n  (q15_t)0x2a55, (q15_t)0x2a3e, (q15_t)0x2a26, (q15_t)0x2a0e, (q15_t)0x29f6, (q15_t)0x29df, (q15_t)0x29c7, (q15_t)0x29af,\n  (q15_t)0x2997, (q15_t)0x2980, (q15_t)0x2968, (q15_t)0x2950, (q15_t)0x2938, (q15_t)0x2920, (q15_t)0x2909, (q15_t)0x28f1,\n  (q15_t)0x28d9, (q15_t)0x28c1, (q15_t)0x28a9, (q15_t)0x2892, (q15_t)0x287a, (q15_t)0x2862, (q15_t)0x284a, (q15_t)0x2832,\n  (q15_t)0x281a, (q15_t)0x2802, (q15_t)0x27eb, (q15_t)0x27d3, (q15_t)0x27bb, (q15_t)0x27a3, (q15_t)0x278b, (q15_t)0x2773,\n  (q15_t)0x275b, (q15_t)0x2743, (q15_t)0x272b, (q15_t)0x2713, (q15_t)0x26fb, (q15_t)0x26e4, (q15_t)0x26cc, (q15_t)0x26b4,\n  (q15_t)0x269c, (q15_t)0x2684, (q15_t)0x266c, (q15_t)0x2654, (q15_t)0x263c, (q15_t)0x2624, (q15_t)0x260c, (q15_t)0x25f4,\n  (q15_t)0x25dc, (q15_t)0x25c4, (q15_t)0x25ac, (q15_t)0x2594, (q15_t)0x257c, (q15_t)0x2564, (q15_t)0x254c, (q15_t)0x2534,\n  (q15_t)0x251c, (q15_t)0x2503, (q15_t)0x24eb, (q15_t)0x24d3, (q15_t)0x24bb, (q15_t)0x24a3, (q15_t)0x248b, (q15_t)0x2473,\n  (q15_t)0x245b, (q15_t)0x2443, (q15_t)0x242b, (q15_t)0x2413, (q15_t)0x23fa, (q15_t)0x23e2, (q15_t)0x23ca, (q15_t)0x23b2,\n  (q15_t)0x239a, (q15_t)0x2382, (q15_t)0x236a, (q15_t)0x2352, (q15_t)0x2339, (q15_t)0x2321, (q15_t)0x2309, (q15_t)0x22f1,\n  (q15_t)0x22d9, (q15_t)0x22c0, (q15_t)0x22a8, (q15_t)0x2290, (q15_t)0x2278, (q15_t)0x2260, (q15_t)0x2247, (q15_t)0x222f,\n  (q15_t)0x2217, (q15_t)0x21ff, (q15_t)0x21e7, (q15_t)0x21ce, (q15_t)0x21b6, (q15_t)0x219e, (q15_t)0x2186, (q15_t)0x216d,\n  (q15_t)0x2155, (q15_t)0x213d, (q15_t)0x2125, (q15_t)0x210c, (q15_t)0x20f4, (q15_t)0x20dc, (q15_t)0x20c3, (q15_t)0x20ab,\n  (q15_t)0x2093, (q15_t)0x207a, (q15_t)0x2062, (q15_t)0x204a, (q15_t)0x2032, (q15_t)0x2019, (q15_t)0x2001, (q15_t)0x1fe9,\n  (q15_t)0x1fd0, (q15_t)0x1fb8, (q15_t)0x1f9f, (q15_t)0x1f87, (q15_t)0x1f6f, (q15_t)0x1f56, (q15_t)0x1f3e, (q15_t)0x1f26,\n  (q15_t)0x1f0d, (q15_t)0x1ef5, (q15_t)0x1edd, (q15_t)0x1ec4, (q15_t)0x1eac, (q15_t)0x1e93, (q15_t)0x1e7b, (q15_t)0x1e62,\n  (q15_t)0x1e4a, (q15_t)0x1e32, (q15_t)0x1e19, (q15_t)0x1e01, (q15_t)0x1de8, (q15_t)0x1dd0, (q15_t)0x1db7, (q15_t)0x1d9f,\n  (q15_t)0x1d87, (q15_t)0x1d6e, (q15_t)0x1d56, (q15_t)0x1d3d, (q15_t)0x1d25, (q15_t)0x1d0c, (q15_t)0x1cf4, (q15_t)0x1cdb,\n  (q15_t)0x1cc3, (q15_t)0x1caa, (q15_t)0x1c92, (q15_t)0x1c79, (q15_t)0x1c61, (q15_t)0x1c48, (q15_t)0x1c30, (q15_t)0x1c17,\n  (q15_t)0x1bff, (q15_t)0x1be6, (q15_t)0x1bce, (q15_t)0x1bb5, (q15_t)0x1b9d, (q15_t)0x1b84, (q15_t)0x1b6c, (q15_t)0x1b53,\n  (q15_t)0x1b3a, (q15_t)0x1b22, (q15_t)0x1b09, (q15_t)0x1af1, (q15_t)0x1ad8, (q15_t)0x1ac0, (q15_t)0x1aa7, (q15_t)0x1a8e,\n  (q15_t)0x1a76, (q15_t)0x1a5d, (q15_t)0x1a45, (q15_t)0x1a2c, (q15_t)0x1a13, (q15_t)0x19fb, (q15_t)0x19e2, (q15_t)0x19ca,\n  (q15_t)0x19b1, (q15_t)0x1998, (q15_t)0x1980, (q15_t)0x1967, (q15_t)0x194e, (q15_t)0x1936, (q15_t)0x191d, (q15_t)0x1905,\n  (q15_t)0x18ec, (q15_t)0x18d3, (q15_t)0x18bb, (q15_t)0x18a2, (q15_t)0x1889, (q15_t)0x1871, (q15_t)0x1858, (q15_t)0x183f,\n  (q15_t)0x1827, (q15_t)0x180e, (q15_t)0x17f5, (q15_t)0x17dd, (q15_t)0x17c4, (q15_t)0x17ab, (q15_t)0x1792, (q15_t)0x177a,\n  (q15_t)0x1761, (q15_t)0x1748, (q15_t)0x1730, (q15_t)0x1717, (q15_t)0x16fe, (q15_t)0x16e5, (q15_t)0x16cd, (q15_t)0x16b4,\n  (q15_t)0x169b, (q15_t)0x1682, (q15_t)0x166a, (q15_t)0x1651, (q15_t)0x1638, (q15_t)0x161f, (q15_t)0x1607, (q15_t)0x15ee,\n  (q15_t)0x15d5, (q15_t)0x15bc, (q15_t)0x15a4, (q15_t)0x158b, (q15_t)0x1572, (q15_t)0x1559, (q15_t)0x1541, (q15_t)0x1528,\n  (q15_t)0x150f, (q15_t)0x14f6, (q15_t)0x14dd, (q15_t)0x14c5, (q15_t)0x14ac, (q15_t)0x1493, (q15_t)0x147a, (q15_t)0x1461,\n  (q15_t)0x1449, (q15_t)0x1430, (q15_t)0x1417, (q15_t)0x13fe, (q15_t)0x13e5, (q15_t)0x13cc, (q15_t)0x13b4, (q15_t)0x139b,\n  (q15_t)0x1382, (q15_t)0x1369, (q15_t)0x1350, (q15_t)0x1337, (q15_t)0x131f, (q15_t)0x1306, (q15_t)0x12ed, (q15_t)0x12d4,\n  (q15_t)0x12bb, (q15_t)0x12a2, (q15_t)0x1289, (q15_t)0x1271, (q15_t)0x1258, (q15_t)0x123f, (q15_t)0x1226, (q15_t)0x120d,\n  (q15_t)0x11f4, (q15_t)0x11db, (q15_t)0x11c2, (q15_t)0x11a9, (q15_t)0x1191, (q15_t)0x1178, (q15_t)0x115f, (q15_t)0x1146,\n  (q15_t)0x112d, (q15_t)0x1114, (q15_t)0x10fb, (q15_t)0x10e2, (q15_t)0x10c9, (q15_t)0x10b0, (q15_t)0x1098, (q15_t)0x107f,\n  (q15_t)0x1066, (q15_t)0x104d, (q15_t)0x1034, (q15_t)0x101b, (q15_t)0x1002, (q15_t)0xfe9, (q15_t)0xfd0, (q15_t)0xfb7,\n  (q15_t)0xf9e, (q15_t)0xf85, (q15_t)0xf6c, (q15_t)0xf53, (q15_t)0xf3a, (q15_t)0xf21, (q15_t)0xf08, (q15_t)0xef0,\n  (q15_t)0xed7, (q15_t)0xebe, (q15_t)0xea5, (q15_t)0xe8c, (q15_t)0xe73, (q15_t)0xe5a, (q15_t)0xe41, (q15_t)0xe28,\n  (q15_t)0xe0f, (q15_t)0xdf6, (q15_t)0xddd, (q15_t)0xdc4, (q15_t)0xdab, (q15_t)0xd92, (q15_t)0xd79, (q15_t)0xd60,\n  (q15_t)0xd47, (q15_t)0xd2e, (q15_t)0xd15, (q15_t)0xcfc, (q15_t)0xce3, (q15_t)0xcca, (q15_t)0xcb1, (q15_t)0xc98,\n  (q15_t)0xc7f, (q15_t)0xc66, (q15_t)0xc4d, (q15_t)0xc34, (q15_t)0xc1b, (q15_t)0xc02, (q15_t)0xbe9, (q15_t)0xbd0,\n  (q15_t)0xbb7, (q15_t)0xb9e, (q15_t)0xb85, (q15_t)0xb6c, (q15_t)0xb53, (q15_t)0xb3a, (q15_t)0xb20, (q15_t)0xb07,\n  (q15_t)0xaee, (q15_t)0xad5, (q15_t)0xabc, (q15_t)0xaa3, (q15_t)0xa8a, (q15_t)0xa71, (q15_t)0xa58, (q15_t)0xa3f,\n  (q15_t)0xa26, (q15_t)0xa0d, (q15_t)0x9f4, (q15_t)0x9db, (q15_t)0x9c2, (q15_t)0x9a9, (q15_t)0x990, (q15_t)0x977,\n  (q15_t)0x95e, (q15_t)0x944, (q15_t)0x92b, (q15_t)0x912, (q15_t)0x8f9, (q15_t)0x8e0, (q15_t)0x8c7, (q15_t)0x8ae,\n  (q15_t)0x895, (q15_t)0x87c, (q15_t)0x863, (q15_t)0x84a, (q15_t)0x831, (q15_t)0x818, (q15_t)0x7fe, (q15_t)0x7e5,\n  (q15_t)0x7cc, (q15_t)0x7b3, (q15_t)0x79a, (q15_t)0x781, (q15_t)0x768, (q15_t)0x74f, (q15_t)0x736, (q15_t)0x71d,\n  (q15_t)0x704, (q15_t)0x6ea, (q15_t)0x6d1, (q15_t)0x6b8, (q15_t)0x69f, (q15_t)0x686, (q15_t)0x66d, (q15_t)0x654,\n  (q15_t)0x63b, (q15_t)0x622, (q15_t)0x609, (q15_t)0x5ef, (q15_t)0x5d6, (q15_t)0x5bd, (q15_t)0x5a4, (q15_t)0x58b,\n  (q15_t)0x572, (q15_t)0x559, (q15_t)0x540, (q15_t)0x527, (q15_t)0x50d, (q15_t)0x4f4, (q15_t)0x4db, (q15_t)0x4c2,\n  (q15_t)0x4a9, (q15_t)0x490, (q15_t)0x477, (q15_t)0x45e, (q15_t)0x445, (q15_t)0x42b, (q15_t)0x412, (q15_t)0x3f9,\n  (q15_t)0x3e0, (q15_t)0x3c7, (q15_t)0x3ae, (q15_t)0x395, (q15_t)0x37c, (q15_t)0x362, (q15_t)0x349, (q15_t)0x330,\n  (q15_t)0x317, (q15_t)0x2fe, (q15_t)0x2e5, (q15_t)0x2cc, (q15_t)0x2b3, (q15_t)0x299, (q15_t)0x280, (q15_t)0x267,\n  (q15_t)0x24e, (q15_t)0x235, (q15_t)0x21c, (q15_t)0x203, (q15_t)0x1ea, (q15_t)0x1d0, (q15_t)0x1b7, (q15_t)0x19e,\n  (q15_t)0x185, (q15_t)0x16c, (q15_t)0x153, (q15_t)0x13a, (q15_t)0x121, (q15_t)0x107, (q15_t)0xee, (q15_t)0xd5,\n  (q15_t)0xbc, (q15_t)0xa3, (q15_t)0x8a, (q15_t)0x71, (q15_t)0x57, (q15_t)0x3e, (q15_t)0x25, (q15_t)0xc\n\n};\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_8192)\n    const q15_t __ALIGNED(4) WeightsQ15_8192[16384] = {\n  (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xfffa, (q15_t)0x7fff, (q15_t)0xfff4, (q15_t)0x7fff, (q15_t)0xffee,\n  (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffe1, (q15_t)0x7fff, (q15_t)0xffdb, (q15_t)0x7fff, (q15_t)0xffd5,\n  (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffc8, (q15_t)0x7fff, (q15_t)0xffc2, (q15_t)0x7fff, (q15_t)0xffbb,\n  (q15_t)0x7fff, (q15_t)0xffb5, (q15_t)0x7fff, (q15_t)0xffaf, (q15_t)0x7fff, (q15_t)0xffa9, (q15_t)0x7fff, (q15_t)0xffa2,\n  (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff96, (q15_t)0x7fff, (q15_t)0xff8f, (q15_t)0x7fff, (q15_t)0xff89,\n  (q15_t)0x7fff, (q15_t)0xff83, (q15_t)0x7fff, (q15_t)0xff7d, (q15_t)0x7fff, (q15_t)0xff76, (q15_t)0x7fff, (q15_t)0xff70,\n  (q15_t)0x7fff, (q15_t)0xff6a, (q15_t)0x7fff, (q15_t)0xff63, (q15_t)0x7fff, (q15_t)0xff5d, (q15_t)0x7fff, (q15_t)0xff57,\n  (q15_t)0x7fff, (q15_t)0xff51, (q15_t)0x7fff, (q15_t)0xff4a, (q15_t)0x7fff, (q15_t)0xff44, (q15_t)0x7fff, (q15_t)0xff3e,\n  (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff31, (q15_t)0x7fff, (q15_t)0xff2b, (q15_t)0x7fff, (q15_t)0xff25,\n  (q15_t)0x7fff, (q15_t)0xff1e, (q15_t)0x7fff, (q15_t)0xff18, (q15_t)0x7fff, (q15_t)0xff12, (q15_t)0x7fff, (q15_t)0xff0b,\n  (q15_t)0x7fff, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfeff, (q15_t)0x7ffe, (q15_t)0xfef9, (q15_t)0x7ffe, (q15_t)0xfef2,\n  (q15_t)0x7ffe, (q15_t)0xfeec, (q15_t)0x7ffe, (q15_t)0xfee6, (q15_t)0x7ffe, (q15_t)0xfedf, (q15_t)0x7ffe, (q15_t)0xfed9,\n  (q15_t)0x7ffe, (q15_t)0xfed3, (q15_t)0x7ffe, (q15_t)0xfecd, (q15_t)0x7ffe, (q15_t)0xfec6, (q15_t)0x7ffe, (q15_t)0xfec0,\n  (q15_t)0x7ffe, (q15_t)0xfeba, (q15_t)0x7ffe, (q15_t)0xfeb3, (q15_t)0x7ffe, (q15_t)0xfead, (q15_t)0x7ffe, (q15_t)0xfea7,\n  (q15_t)0x7ffe, (q15_t)0xfea1, (q15_t)0x7ffe, (q15_t)0xfe9a, (q15_t)0x7ffd, (q15_t)0xfe94, (q15_t)0x7ffd, (q15_t)0xfe8e,\n  (q15_t)0x7ffd, (q15_t)0xfe88, (q15_t)0x7ffd, (q15_t)0xfe81, (q15_t)0x7ffd, (q15_t)0xfe7b, (q15_t)0x7ffd, (q15_t)0xfe75,\n  (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffd, (q15_t)0xfe68, (q15_t)0x7ffd, (q15_t)0xfe62, (q15_t)0x7ffd, (q15_t)0xfe5c,\n  (q15_t)0x7ffd, (q15_t)0xfe55, (q15_t)0x7ffd, (q15_t)0xfe4f, (q15_t)0x7ffd, (q15_t)0xfe49, (q15_t)0x7ffc, (q15_t)0xfe42,\n  (q15_t)0x7ffc, (q15_t)0xfe3c, (q15_t)0x7ffc, (q15_t)0xfe36, (q15_t)0x7ffc, (q15_t)0xfe30, (q15_t)0x7ffc, (q15_t)0xfe29,\n  (q15_t)0x7ffc, (q15_t)0xfe23, (q15_t)0x7ffc, (q15_t)0xfe1d, (q15_t)0x7ffc, (q15_t)0xfe16, (q15_t)0x7ffc, (q15_t)0xfe10,\n  (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffc, (q15_t)0xfe04, (q15_t)0x7ffb, (q15_t)0xfdfd, (q15_t)0x7ffb, (q15_t)0xfdf7,\n  (q15_t)0x7ffb, (q15_t)0xfdf1, (q15_t)0x7ffb, (q15_t)0xfdea, (q15_t)0x7ffb, (q15_t)0xfde4, (q15_t)0x7ffb, (q15_t)0xfdde,\n  (q15_t)0x7ffb, (q15_t)0xfdd8, (q15_t)0x7ffb, (q15_t)0xfdd1, (q15_t)0x7ffb, (q15_t)0xfdcb, (q15_t)0x7ffb, (q15_t)0xfdc5,\n  (q15_t)0x7ffa, (q15_t)0xfdbe, (q15_t)0x7ffa, (q15_t)0xfdb8, (q15_t)0x7ffa, (q15_t)0xfdb2, (q15_t)0x7ffa, (q15_t)0xfdac,\n  (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ffa, (q15_t)0xfd9f, (q15_t)0x7ffa, (q15_t)0xfd99, (q15_t)0x7ffa, (q15_t)0xfd93,\n  (q15_t)0x7ff9, (q15_t)0xfd8c, (q15_t)0x7ff9, (q15_t)0xfd86, (q15_t)0x7ff9, (q15_t)0xfd80, (q15_t)0x7ff9, (q15_t)0xfd79,\n  (q15_t)0x7ff9, (q15_t)0xfd73, (q15_t)0x7ff9, (q15_t)0xfd6d, (q15_t)0x7ff9, (q15_t)0xfd67, (q15_t)0x7ff9, (q15_t)0xfd60,\n  (q15_t)0x7ff8, (q15_t)0xfd5a, (q15_t)0x7ff8, (q15_t)0xfd54, (q15_t)0x7ff8, (q15_t)0xfd4d, (q15_t)0x7ff8, (q15_t)0xfd47,\n  (q15_t)0x7ff8, (q15_t)0xfd41, (q15_t)0x7ff8, (q15_t)0xfd3b, (q15_t)0x7ff8, (q15_t)0xfd34, (q15_t)0x7ff8, (q15_t)0xfd2e,\n  (q15_t)0x7ff7, (q15_t)0xfd28, (q15_t)0x7ff7, (q15_t)0xfd21, (q15_t)0x7ff7, (q15_t)0xfd1b, (q15_t)0x7ff7, (q15_t)0xfd15,\n  (q15_t)0x7ff7, (q15_t)0xfd0f, (q15_t)0x7ff7, (q15_t)0xfd08, (q15_t)0x7ff7, (q15_t)0xfd02, (q15_t)0x7ff6, (q15_t)0xfcfc,\n  (q15_t)0x7ff6, (q15_t)0xfcf5, (q15_t)0x7ff6, (q15_t)0xfcef, (q15_t)0x7ff6, (q15_t)0xfce9, (q15_t)0x7ff6, (q15_t)0xfce3,\n  (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff5, (q15_t)0xfcd6, (q15_t)0x7ff5, (q15_t)0xfcd0, (q15_t)0x7ff5, (q15_t)0xfcc9,\n  (q15_t)0x7ff5, (q15_t)0xfcc3, (q15_t)0x7ff5, (q15_t)0xfcbd, (q15_t)0x7ff5, (q15_t)0xfcb7, (q15_t)0x7ff5, (q15_t)0xfcb0,\n  (q15_t)0x7ff4, (q15_t)0xfcaa, (q15_t)0x7ff4, (q15_t)0xfca4, (q15_t)0x7ff4, (q15_t)0xfc9e, (q15_t)0x7ff4, (q15_t)0xfc97,\n  (q15_t)0x7ff4, (q15_t)0xfc91, (q15_t)0x7ff4, (q15_t)0xfc8b, (q15_t)0x7ff3, (q15_t)0xfc84, (q15_t)0x7ff3, (q15_t)0xfc7e,\n  (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff3, (q15_t)0xfc72, (q15_t)0x7ff3, (q15_t)0xfc6b, (q15_t)0x7ff2, (q15_t)0xfc65,\n  (q15_t)0x7ff2, (q15_t)0xfc5f, (q15_t)0x7ff2, (q15_t)0xfc58, (q15_t)0x7ff2, (q15_t)0xfc52, (q15_t)0x7ff2, (q15_t)0xfc4c,\n  (q15_t)0x7ff2, (q15_t)0xfc46, (q15_t)0x7ff1, (q15_t)0xfc3f, (q15_t)0x7ff1, (q15_t)0xfc39, (q15_t)0x7ff1, (q15_t)0xfc33,\n  (q15_t)0x7ff1, (q15_t)0xfc2c, (q15_t)0x7ff1, (q15_t)0xfc26, (q15_t)0x7ff0, (q15_t)0xfc20, (q15_t)0x7ff0, (q15_t)0xfc1a,\n  (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7ff0, (q15_t)0xfc0d, (q15_t)0x7ff0, (q15_t)0xfc07, (q15_t)0x7fef, (q15_t)0xfc01,\n  (q15_t)0x7fef, (q15_t)0xfbfa, (q15_t)0x7fef, (q15_t)0xfbf4, (q15_t)0x7fef, (q15_t)0xfbee, (q15_t)0x7fef, (q15_t)0xfbe7,\n  (q15_t)0x7fee, (q15_t)0xfbe1, (q15_t)0x7fee, (q15_t)0xfbdb, (q15_t)0x7fee, (q15_t)0xfbd5, (q15_t)0x7fee, (q15_t)0xfbce,\n  (q15_t)0x7fee, (q15_t)0xfbc8, (q15_t)0x7fed, (q15_t)0xfbc2, (q15_t)0x7fed, (q15_t)0xfbbb, (q15_t)0x7fed, (q15_t)0xfbb5,\n  (q15_t)0x7fed, (q15_t)0xfbaf, (q15_t)0x7fed, (q15_t)0xfba9, (q15_t)0x7fec, (q15_t)0xfba2, (q15_t)0x7fec, (q15_t)0xfb9c,\n  (q15_t)0x7fec, (q15_t)0xfb96, (q15_t)0x7fec, (q15_t)0xfb8f, (q15_t)0x7fec, (q15_t)0xfb89, (q15_t)0x7feb, (q15_t)0xfb83,\n  (q15_t)0x7feb, (q15_t)0xfb7d, (q15_t)0x7feb, (q15_t)0xfb76, (q15_t)0x7feb, (q15_t)0xfb70, (q15_t)0x7fea, (q15_t)0xfb6a,\n  (q15_t)0x7fea, (q15_t)0xfb64, (q15_t)0x7fea, (q15_t)0xfb5d, (q15_t)0x7fea, (q15_t)0xfb57, (q15_t)0x7fea, (q15_t)0xfb51,\n  (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe9, (q15_t)0xfb44, (q15_t)0x7fe9, (q15_t)0xfb3e, (q15_t)0x7fe9, (q15_t)0xfb38,\n  (q15_t)0x7fe8, (q15_t)0xfb31, (q15_t)0x7fe8, (q15_t)0xfb2b, (q15_t)0x7fe8, (q15_t)0xfb25, (q15_t)0x7fe8, (q15_t)0xfb1e,\n  (q15_t)0x7fe7, (q15_t)0xfb18, (q15_t)0x7fe7, (q15_t)0xfb12, (q15_t)0x7fe7, (q15_t)0xfb0c, (q15_t)0x7fe7, (q15_t)0xfb05,\n  (q15_t)0x7fe6, (q15_t)0xfaff, (q15_t)0x7fe6, (q15_t)0xfaf9, (q15_t)0x7fe6, (q15_t)0xfaf3, (q15_t)0x7fe6, (q15_t)0xfaec,\n  (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe5, (q15_t)0xfae0, (q15_t)0x7fe5, (q15_t)0xfad9, (q15_t)0x7fe5, (q15_t)0xfad3,\n  (q15_t)0x7fe4, (q15_t)0xfacd, (q15_t)0x7fe4, (q15_t)0xfac7, (q15_t)0x7fe4, (q15_t)0xfac0, (q15_t)0x7fe4, (q15_t)0xfaba,\n  (q15_t)0x7fe3, (q15_t)0xfab4, (q15_t)0x7fe3, (q15_t)0xfaad, (q15_t)0x7fe3, (q15_t)0xfaa7, (q15_t)0x7fe3, (q15_t)0xfaa1,\n  (q15_t)0x7fe2, (q15_t)0xfa9b, (q15_t)0x7fe2, (q15_t)0xfa94, (q15_t)0x7fe2, (q15_t)0xfa8e, (q15_t)0x7fe2, (q15_t)0xfa88,\n  (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fe1, (q15_t)0xfa7b, (q15_t)0x7fe1, (q15_t)0xfa75, (q15_t)0x7fe0, (q15_t)0xfa6f,\n  (q15_t)0x7fe0, (q15_t)0xfa68, (q15_t)0x7fe0, (q15_t)0xfa62, (q15_t)0x7fe0, (q15_t)0xfa5c, (q15_t)0x7fdf, (q15_t)0xfa56,\n  (q15_t)0x7fdf, (q15_t)0xfa4f, (q15_t)0x7fdf, (q15_t)0xfa49, (q15_t)0x7fdf, (q15_t)0xfa43, (q15_t)0x7fde, (q15_t)0xfa3c,\n  (q15_t)0x7fde, (q15_t)0xfa36, (q15_t)0x7fde, (q15_t)0xfa30, (q15_t)0x7fdd, (q15_t)0xfa2a, (q15_t)0x7fdd, (q15_t)0xfa23,\n  (q15_t)0x7fdd, (q15_t)0xfa1d, (q15_t)0x7fdd, (q15_t)0xfa17, (q15_t)0x7fdc, (q15_t)0xfa11, (q15_t)0x7fdc, (q15_t)0xfa0a,\n  (q15_t)0x7fdc, (q15_t)0xfa04, (q15_t)0x7fdb, (q15_t)0xf9fe, (q15_t)0x7fdb, (q15_t)0xf9f7, (q15_t)0x7fdb, (q15_t)0xf9f1,\n  (q15_t)0x7fda, (q15_t)0xf9eb, (q15_t)0x7fda, (q15_t)0xf9e5, (q15_t)0x7fda, (q15_t)0xf9de, (q15_t)0x7fda, (q15_t)0xf9d8,\n  (q15_t)0x7fd9, (q15_t)0xf9d2, (q15_t)0x7fd9, (q15_t)0xf9cb, (q15_t)0x7fd9, (q15_t)0xf9c5, (q15_t)0x7fd8, (q15_t)0xf9bf,\n  (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd8, (q15_t)0xf9b2, (q15_t)0x7fd7, (q15_t)0xf9ac, (q15_t)0x7fd7, (q15_t)0xf9a6,\n  (q15_t)0x7fd7, (q15_t)0xf9a0, (q15_t)0x7fd6, (q15_t)0xf999, (q15_t)0x7fd6, (q15_t)0xf993, (q15_t)0x7fd6, (q15_t)0xf98d,\n  (q15_t)0x7fd6, (q15_t)0xf986, (q15_t)0x7fd5, (q15_t)0xf980, (q15_t)0x7fd5, (q15_t)0xf97a, (q15_t)0x7fd5, (q15_t)0xf974,\n  (q15_t)0x7fd4, (q15_t)0xf96d, (q15_t)0x7fd4, (q15_t)0xf967, (q15_t)0x7fd4, (q15_t)0xf961, (q15_t)0x7fd3, (q15_t)0xf95b,\n  (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fd3, (q15_t)0xf94e, (q15_t)0x7fd2, (q15_t)0xf948, (q15_t)0x7fd2, (q15_t)0xf941,\n  (q15_t)0x7fd2, (q15_t)0xf93b, (q15_t)0x7fd1, (q15_t)0xf935, (q15_t)0x7fd1, (q15_t)0xf92f, (q15_t)0x7fd1, (q15_t)0xf928,\n  (q15_t)0x7fd0, (q15_t)0xf922, (q15_t)0x7fd0, (q15_t)0xf91c, (q15_t)0x7fd0, (q15_t)0xf916, (q15_t)0x7fcf, (q15_t)0xf90f,\n  (q15_t)0x7fcf, (q15_t)0xf909, (q15_t)0x7fcf, (q15_t)0xf903, (q15_t)0x7fce, (q15_t)0xf8fc, (q15_t)0x7fce, (q15_t)0xf8f6,\n  (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fcd, (q15_t)0xf8ea, (q15_t)0x7fcd, (q15_t)0xf8e3, (q15_t)0x7fcd, (q15_t)0xf8dd,\n  (q15_t)0x7fcc, (q15_t)0xf8d7, (q15_t)0x7fcc, (q15_t)0xf8d0, (q15_t)0x7fcb, (q15_t)0xf8ca, (q15_t)0x7fcb, (q15_t)0xf8c4,\n  (q15_t)0x7fcb, (q15_t)0xf8be, (q15_t)0x7fca, (q15_t)0xf8b7, (q15_t)0x7fca, (q15_t)0xf8b1, (q15_t)0x7fca, (q15_t)0xf8ab,\n  (q15_t)0x7fc9, (q15_t)0xf8a5, (q15_t)0x7fc9, (q15_t)0xf89e, (q15_t)0x7fc9, (q15_t)0xf898, (q15_t)0x7fc8, (q15_t)0xf892,\n  (q15_t)0x7fc8, (q15_t)0xf88b, (q15_t)0x7fc7, (q15_t)0xf885, (q15_t)0x7fc7, (q15_t)0xf87f, (q15_t)0x7fc7, (q15_t)0xf879,\n  (q15_t)0x7fc6, (q15_t)0xf872, (q15_t)0x7fc6, (q15_t)0xf86c, (q15_t)0x7fc6, (q15_t)0xf866, (q15_t)0x7fc5, (q15_t)0xf860,\n  (q15_t)0x7fc5, (q15_t)0xf859, (q15_t)0x7fc5, (q15_t)0xf853, (q15_t)0x7fc4, (q15_t)0xf84d, (q15_t)0x7fc4, (q15_t)0xf846,\n  (q15_t)0x7fc3, (q15_t)0xf840, (q15_t)0x7fc3, (q15_t)0xf83a, (q15_t)0x7fc3, (q15_t)0xf834, (q15_t)0x7fc2, (q15_t)0xf82d,\n  (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fc1, (q15_t)0xf821, (q15_t)0x7fc1, (q15_t)0xf81b, (q15_t)0x7fc1, (q15_t)0xf814,\n  (q15_t)0x7fc0, (q15_t)0xf80e, (q15_t)0x7fc0, (q15_t)0xf808, (q15_t)0x7fc0, (q15_t)0xf802, (q15_t)0x7fbf, (q15_t)0xf7fb,\n  (q15_t)0x7fbf, (q15_t)0xf7f5, (q15_t)0x7fbe, (q15_t)0xf7ef, (q15_t)0x7fbe, (q15_t)0xf7e8, (q15_t)0x7fbe, (q15_t)0xf7e2,\n  (q15_t)0x7fbd, (q15_t)0xf7dc, (q15_t)0x7fbd, (q15_t)0xf7d6, (q15_t)0x7fbc, (q15_t)0xf7cf, (q15_t)0x7fbc, (q15_t)0xf7c9,\n  (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fbb, (q15_t)0xf7bd, (q15_t)0x7fbb, (q15_t)0xf7b6, (q15_t)0x7fba, (q15_t)0xf7b0,\n  (q15_t)0x7fba, (q15_t)0xf7aa, (q15_t)0x7fb9, (q15_t)0xf7a3, (q15_t)0x7fb9, (q15_t)0xf79d, (q15_t)0x7fb9, (q15_t)0xf797,\n  (q15_t)0x7fb8, (q15_t)0xf791, (q15_t)0x7fb8, (q15_t)0xf78a, (q15_t)0x7fb7, (q15_t)0xf784, (q15_t)0x7fb7, (q15_t)0xf77e,\n  (q15_t)0x7fb7, (q15_t)0xf778, (q15_t)0x7fb6, (q15_t)0xf771, (q15_t)0x7fb6, (q15_t)0xf76b, (q15_t)0x7fb5, (q15_t)0xf765,\n  (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fb4, (q15_t)0xf758, (q15_t)0x7fb4, (q15_t)0xf752, (q15_t)0x7fb4, (q15_t)0xf74c,\n  (q15_t)0x7fb3, (q15_t)0xf745, (q15_t)0x7fb3, (q15_t)0xf73f, (q15_t)0x7fb2, (q15_t)0xf739, (q15_t)0x7fb2, (q15_t)0xf733,\n  (q15_t)0x7fb1, (q15_t)0xf72c, (q15_t)0x7fb1, (q15_t)0xf726, (q15_t)0x7fb1, (q15_t)0xf720, (q15_t)0x7fb0, (q15_t)0xf71a,\n  (q15_t)0x7fb0, (q15_t)0xf713, (q15_t)0x7faf, (q15_t)0xf70d, (q15_t)0x7faf, (q15_t)0xf707, (q15_t)0x7fae, (q15_t)0xf700,\n  (q15_t)0x7fae, (q15_t)0xf6fa, (q15_t)0x7fae, (q15_t)0xf6f4, (q15_t)0x7fad, (q15_t)0xf6ee, (q15_t)0x7fad, (q15_t)0xf6e7,\n  (q15_t)0x7fac, (q15_t)0xf6e1, (q15_t)0x7fac, (q15_t)0xf6db, (q15_t)0x7fab, (q15_t)0xf6d5, (q15_t)0x7fab, (q15_t)0xf6ce,\n  (q15_t)0x7faa, (q15_t)0xf6c8, (q15_t)0x7faa, (q15_t)0xf6c2, (q15_t)0x7fa9, (q15_t)0xf6bc, (q15_t)0x7fa9, (q15_t)0xf6b5,\n  (q15_t)0x7fa9, (q15_t)0xf6af, (q15_t)0x7fa8, (q15_t)0xf6a9, (q15_t)0x7fa8, (q15_t)0xf6a2, (q15_t)0x7fa7, (q15_t)0xf69c,\n  (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7fa6, (q15_t)0xf690, (q15_t)0x7fa6, (q15_t)0xf689, (q15_t)0x7fa5, (q15_t)0xf683,\n  (q15_t)0x7fa5, (q15_t)0xf67d, (q15_t)0x7fa4, (q15_t)0xf677, (q15_t)0x7fa4, (q15_t)0xf670, (q15_t)0x7fa3, (q15_t)0xf66a,\n  (q15_t)0x7fa3, (q15_t)0xf664, (q15_t)0x7fa3, (q15_t)0xf65e, (q15_t)0x7fa2, (q15_t)0xf657, (q15_t)0x7fa2, (q15_t)0xf651,\n  (q15_t)0x7fa1, (q15_t)0xf64b, (q15_t)0x7fa1, (q15_t)0xf644, (q15_t)0x7fa0, (q15_t)0xf63e, (q15_t)0x7fa0, (q15_t)0xf638,\n  (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f9f, (q15_t)0xf62b, (q15_t)0x7f9e, (q15_t)0xf625, (q15_t)0x7f9e, (q15_t)0xf61f,\n  (q15_t)0x7f9d, (q15_t)0xf619, (q15_t)0x7f9d, (q15_t)0xf612, (q15_t)0x7f9c, (q15_t)0xf60c, (q15_t)0x7f9c, (q15_t)0xf606,\n  (q15_t)0x7f9b, (q15_t)0xf600, (q15_t)0x7f9b, (q15_t)0xf5f9, (q15_t)0x7f9a, (q15_t)0xf5f3, (q15_t)0x7f9a, (q15_t)0xf5ed,\n  (q15_t)0x7f99, (q15_t)0xf5e7, (q15_t)0x7f99, (q15_t)0xf5e0, (q15_t)0x7f98, (q15_t)0xf5da, (q15_t)0x7f98, (q15_t)0xf5d4,\n  (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f97, (q15_t)0xf5c7, (q15_t)0x7f96, (q15_t)0xf5c1, (q15_t)0x7f96, (q15_t)0xf5bb,\n  (q15_t)0x7f95, (q15_t)0xf5b4, (q15_t)0x7f95, (q15_t)0xf5ae, (q15_t)0x7f94, (q15_t)0xf5a8, (q15_t)0x7f94, (q15_t)0xf5a2,\n  (q15_t)0x7f93, (q15_t)0xf59b, (q15_t)0x7f93, (q15_t)0xf595, (q15_t)0x7f92, (q15_t)0xf58f, (q15_t)0x7f92, (q15_t)0xf589,\n  (q15_t)0x7f91, (q15_t)0xf582, (q15_t)0x7f91, (q15_t)0xf57c, (q15_t)0x7f90, (q15_t)0xf576, (q15_t)0x7f90, (q15_t)0xf570,\n  (q15_t)0x7f8f, (q15_t)0xf569, (q15_t)0x7f8f, (q15_t)0xf563, (q15_t)0x7f8e, (q15_t)0xf55d, (q15_t)0x7f8e, (q15_t)0xf556,\n  (q15_t)0x7f8d, (q15_t)0xf550, (q15_t)0x7f8d, (q15_t)0xf54a, (q15_t)0x7f8c, (q15_t)0xf544, (q15_t)0x7f8b, (q15_t)0xf53d,\n  (q15_t)0x7f8b, (q15_t)0xf537, (q15_t)0x7f8a, (q15_t)0xf531, (q15_t)0x7f8a, (q15_t)0xf52b, (q15_t)0x7f89, (q15_t)0xf524,\n  (q15_t)0x7f89, (q15_t)0xf51e, (q15_t)0x7f88, (q15_t)0xf518, (q15_t)0x7f88, (q15_t)0xf512, (q15_t)0x7f87, (q15_t)0xf50b,\n  (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f86, (q15_t)0xf4ff, (q15_t)0x7f86, (q15_t)0xf4f9, (q15_t)0x7f85, (q15_t)0xf4f2,\n  (q15_t)0x7f85, (q15_t)0xf4ec, (q15_t)0x7f84, (q15_t)0xf4e6, (q15_t)0x7f83, (q15_t)0xf4e0, (q15_t)0x7f83, (q15_t)0xf4d9,\n  (q15_t)0x7f82, (q15_t)0xf4d3, (q15_t)0x7f82, (q15_t)0xf4cd, (q15_t)0x7f81, (q15_t)0xf4c6, (q15_t)0x7f81, (q15_t)0xf4c0,\n  (q15_t)0x7f80, (q15_t)0xf4ba, (q15_t)0x7f80, (q15_t)0xf4b4, (q15_t)0x7f7f, (q15_t)0xf4ad, (q15_t)0x7f7e, (q15_t)0xf4a7,\n  (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f7d, (q15_t)0xf49b, (q15_t)0x7f7d, (q15_t)0xf494, (q15_t)0x7f7c, (q15_t)0xf48e,\n  (q15_t)0x7f7c, (q15_t)0xf488, (q15_t)0x7f7b, (q15_t)0xf482, (q15_t)0x7f7b, (q15_t)0xf47b, (q15_t)0x7f7a, (q15_t)0xf475,\n  (q15_t)0x7f79, (q15_t)0xf46f, (q15_t)0x7f79, (q15_t)0xf469, (q15_t)0x7f78, (q15_t)0xf462, (q15_t)0x7f78, (q15_t)0xf45c,\n  (q15_t)0x7f77, (q15_t)0xf456, (q15_t)0x7f77, (q15_t)0xf450, (q15_t)0x7f76, (q15_t)0xf449, (q15_t)0x7f75, (q15_t)0xf443,\n  (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f74, (q15_t)0xf437, (q15_t)0x7f74, (q15_t)0xf430, (q15_t)0x7f73, (q15_t)0xf42a,\n  (q15_t)0x7f72, (q15_t)0xf424, (q15_t)0x7f72, (q15_t)0xf41e, (q15_t)0x7f71, (q15_t)0xf417, (q15_t)0x7f71, (q15_t)0xf411,\n  (q15_t)0x7f70, (q15_t)0xf40b, (q15_t)0x7f70, (q15_t)0xf405, (q15_t)0x7f6f, (q15_t)0xf3fe, (q15_t)0x7f6e, (q15_t)0xf3f8,\n  (q15_t)0x7f6e, (q15_t)0xf3f2, (q15_t)0x7f6d, (q15_t)0xf3ec, (q15_t)0x7f6d, (q15_t)0xf3e5, (q15_t)0x7f6c, (q15_t)0xf3df,\n  (q15_t)0x7f6b, (q15_t)0xf3d9, (q15_t)0x7f6b, (q15_t)0xf3d2, (q15_t)0x7f6a, (q15_t)0xf3cc, (q15_t)0x7f6a, (q15_t)0xf3c6,\n  (q15_t)0x7f69, (q15_t)0xf3c0, (q15_t)0x7f68, (q15_t)0xf3b9, (q15_t)0x7f68, (q15_t)0xf3b3, (q15_t)0x7f67, (q15_t)0xf3ad,\n  (q15_t)0x7f67, (q15_t)0xf3a7, (q15_t)0x7f66, (q15_t)0xf3a0, (q15_t)0x7f65, (q15_t)0xf39a, (q15_t)0x7f65, (q15_t)0xf394,\n  (q15_t)0x7f64, (q15_t)0xf38e, (q15_t)0x7f64, (q15_t)0xf387, (q15_t)0x7f63, (q15_t)0xf381, (q15_t)0x7f62, (q15_t)0xf37b,\n  (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f61, (q15_t)0xf36e, (q15_t)0x7f60, (q15_t)0xf368, (q15_t)0x7f60, (q15_t)0xf362,\n  (q15_t)0x7f5f, (q15_t)0xf35c, (q15_t)0x7f5f, (q15_t)0xf355, (q15_t)0x7f5e, (q15_t)0xf34f, (q15_t)0x7f5d, (q15_t)0xf349,\n  (q15_t)0x7f5d, (q15_t)0xf343, (q15_t)0x7f5c, (q15_t)0xf33c, (q15_t)0x7f5b, (q15_t)0xf336, (q15_t)0x7f5b, (q15_t)0xf330,\n  (q15_t)0x7f5a, (q15_t)0xf32a, (q15_t)0x7f5a, (q15_t)0xf323, (q15_t)0x7f59, (q15_t)0xf31d, (q15_t)0x7f58, (q15_t)0xf317,\n  (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f57, (q15_t)0xf30a, (q15_t)0x7f56, (q15_t)0xf304, (q15_t)0x7f56, (q15_t)0xf2fe,\n  (q15_t)0x7f55, (q15_t)0xf2f8, (q15_t)0x7f55, (q15_t)0xf2f1, (q15_t)0x7f54, (q15_t)0xf2eb, (q15_t)0x7f53, (q15_t)0xf2e5,\n  (q15_t)0x7f53, (q15_t)0xf2df, (q15_t)0x7f52, (q15_t)0xf2d8, (q15_t)0x7f51, (q15_t)0xf2d2, (q15_t)0x7f51, (q15_t)0xf2cc,\n  (q15_t)0x7f50, (q15_t)0xf2c6, (q15_t)0x7f4f, (q15_t)0xf2bf, (q15_t)0x7f4f, (q15_t)0xf2b9, (q15_t)0x7f4e, (q15_t)0xf2b3,\n  (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f4d, (q15_t)0xf2a6, (q15_t)0x7f4c, (q15_t)0xf2a0, (q15_t)0x7f4b, (q15_t)0xf29a,\n  (q15_t)0x7f4b, (q15_t)0xf294, (q15_t)0x7f4a, (q15_t)0xf28d, (q15_t)0x7f49, (q15_t)0xf287, (q15_t)0x7f49, (q15_t)0xf281,\n  (q15_t)0x7f48, (q15_t)0xf27b, (q15_t)0x7f47, (q15_t)0xf274, (q15_t)0x7f47, (q15_t)0xf26e, (q15_t)0x7f46, (q15_t)0xf268,\n  (q15_t)0x7f45, (q15_t)0xf262, (q15_t)0x7f45, (q15_t)0xf25b, (q15_t)0x7f44, (q15_t)0xf255, (q15_t)0x7f43, (q15_t)0xf24f,\n  (q15_t)0x7f43, (q15_t)0xf249, (q15_t)0x7f42, (q15_t)0xf242, (q15_t)0x7f41, (q15_t)0xf23c, (q15_t)0x7f41, (q15_t)0xf236,\n  (q15_t)0x7f40, (q15_t)0xf230, (q15_t)0x7f3f, (q15_t)0xf229, (q15_t)0x7f3f, (q15_t)0xf223, (q15_t)0x7f3e, (q15_t)0xf21d,\n  (q15_t)0x7f3d, (q15_t)0xf217, (q15_t)0x7f3d, (q15_t)0xf210, (q15_t)0x7f3c, (q15_t)0xf20a, (q15_t)0x7f3b, (q15_t)0xf204,\n  (q15_t)0x7f3b, (q15_t)0xf1fe, (q15_t)0x7f3a, (q15_t)0xf1f7, (q15_t)0x7f39, (q15_t)0xf1f1, (q15_t)0x7f39, (q15_t)0xf1eb,\n  (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f37, (q15_t)0xf1de, (q15_t)0x7f36, (q15_t)0xf1d8, (q15_t)0x7f36, (q15_t)0xf1d2,\n  (q15_t)0x7f35, (q15_t)0xf1cc, (q15_t)0x7f34, (q15_t)0xf1c6, (q15_t)0x7f34, (q15_t)0xf1bf, (q15_t)0x7f33, (q15_t)0xf1b9,\n  (q15_t)0x7f32, (q15_t)0xf1b3, (q15_t)0x7f32, (q15_t)0xf1ad, (q15_t)0x7f31, (q15_t)0xf1a6, (q15_t)0x7f30, (q15_t)0xf1a0,\n  (q15_t)0x7f2f, (q15_t)0xf19a, (q15_t)0x7f2f, (q15_t)0xf194, (q15_t)0x7f2e, (q15_t)0xf18d, (q15_t)0x7f2d, (q15_t)0xf187,\n  (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f2c, (q15_t)0xf17b, (q15_t)0x7f2b, (q15_t)0xf174, (q15_t)0x7f2a, (q15_t)0xf16e,\n  (q15_t)0x7f2a, (q15_t)0xf168, (q15_t)0x7f29, (q15_t)0xf162, (q15_t)0x7f28, (q15_t)0xf15b, (q15_t)0x7f28, (q15_t)0xf155,\n  (q15_t)0x7f27, (q15_t)0xf14f, (q15_t)0x7f26, (q15_t)0xf149, (q15_t)0x7f25, (q15_t)0xf142, (q15_t)0x7f25, (q15_t)0xf13c,\n  (q15_t)0x7f24, (q15_t)0xf136, (q15_t)0x7f23, (q15_t)0xf130, (q15_t)0x7f23, (q15_t)0xf129, (q15_t)0x7f22, (q15_t)0xf123,\n  (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f20, (q15_t)0xf117, (q15_t)0x7f20, (q15_t)0xf110, (q15_t)0x7f1f, (q15_t)0xf10a,\n  (q15_t)0x7f1e, (q15_t)0xf104, (q15_t)0x7f1d, (q15_t)0xf0fe, (q15_t)0x7f1d, (q15_t)0xf0f8, (q15_t)0x7f1c, (q15_t)0xf0f1,\n  (q15_t)0x7f1b, (q15_t)0xf0eb, (q15_t)0x7f1a, (q15_t)0xf0e5, (q15_t)0x7f1a, (q15_t)0xf0df, (q15_t)0x7f19, (q15_t)0xf0d8,\n  (q15_t)0x7f18, (q15_t)0xf0d2, (q15_t)0x7f17, (q15_t)0xf0cc, (q15_t)0x7f17, (q15_t)0xf0c6, (q15_t)0x7f16, (q15_t)0xf0bf,\n  (q15_t)0x7f15, (q15_t)0xf0b9, (q15_t)0x7f14, (q15_t)0xf0b3, (q15_t)0x7f14, (q15_t)0xf0ad, (q15_t)0x7f13, (q15_t)0xf0a6,\n  (q15_t)0x7f12, (q15_t)0xf0a0, (q15_t)0x7f11, (q15_t)0xf09a, (q15_t)0x7f11, (q15_t)0xf094, (q15_t)0x7f10, (q15_t)0xf08d,\n  (q15_t)0x7f0f, (q15_t)0xf087, (q15_t)0x7f0e, (q15_t)0xf081, (q15_t)0x7f0e, (q15_t)0xf07b, (q15_t)0x7f0d, (q15_t)0xf075,\n  (q15_t)0x7f0c, (q15_t)0xf06e, (q15_t)0x7f0b, (q15_t)0xf068, (q15_t)0x7f0b, (q15_t)0xf062, (q15_t)0x7f0a, (q15_t)0xf05c,\n  (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7f08, (q15_t)0xf04f, (q15_t)0x7f08, (q15_t)0xf049, (q15_t)0x7f07, (q15_t)0xf043,\n  (q15_t)0x7f06, (q15_t)0xf03c, (q15_t)0x7f05, (q15_t)0xf036, (q15_t)0x7f04, (q15_t)0xf030, (q15_t)0x7f04, (q15_t)0xf02a,\n  (q15_t)0x7f03, (q15_t)0xf023, (q15_t)0x7f02, (q15_t)0xf01d, (q15_t)0x7f01, (q15_t)0xf017, (q15_t)0x7f01, (q15_t)0xf011,\n  (q15_t)0x7f00, (q15_t)0xf00b, (q15_t)0x7eff, (q15_t)0xf004, (q15_t)0x7efe, (q15_t)0xeffe, (q15_t)0x7efd, (q15_t)0xeff8,\n  (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7efc, (q15_t)0xefeb, (q15_t)0x7efb, (q15_t)0xefe5, (q15_t)0x7efa, (q15_t)0xefdf,\n  (q15_t)0x7ef9, (q15_t)0xefd9, (q15_t)0x7ef9, (q15_t)0xefd2, (q15_t)0x7ef8, (q15_t)0xefcc, (q15_t)0x7ef7, (q15_t)0xefc6,\n  (q15_t)0x7ef6, (q15_t)0xefc0, (q15_t)0x7ef5, (q15_t)0xefb9, (q15_t)0x7ef5, (q15_t)0xefb3, (q15_t)0x7ef4, (q15_t)0xefad,\n  (q15_t)0x7ef3, (q15_t)0xefa7, (q15_t)0x7ef2, (q15_t)0xefa1, (q15_t)0x7ef1, (q15_t)0xef9a, (q15_t)0x7ef1, (q15_t)0xef94,\n  (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7eef, (q15_t)0xef88, (q15_t)0x7eee, (q15_t)0xef81, (q15_t)0x7eed, (q15_t)0xef7b,\n  (q15_t)0x7eed, (q15_t)0xef75, (q15_t)0x7eec, (q15_t)0xef6f, (q15_t)0x7eeb, (q15_t)0xef68, (q15_t)0x7eea, (q15_t)0xef62,\n  (q15_t)0x7ee9, (q15_t)0xef5c, (q15_t)0x7ee9, (q15_t)0xef56, (q15_t)0x7ee8, (q15_t)0xef50, (q15_t)0x7ee7, (q15_t)0xef49,\n  (q15_t)0x7ee6, (q15_t)0xef43, (q15_t)0x7ee5, (q15_t)0xef3d, (q15_t)0x7ee4, (q15_t)0xef37, (q15_t)0x7ee4, (q15_t)0xef30,\n  (q15_t)0x7ee3, (q15_t)0xef2a, (q15_t)0x7ee2, (q15_t)0xef24, (q15_t)0x7ee1, (q15_t)0xef1e, (q15_t)0x7ee0, (q15_t)0xef18,\n  (q15_t)0x7edf, (q15_t)0xef11, (q15_t)0x7edf, (q15_t)0xef0b, (q15_t)0x7ede, (q15_t)0xef05, (q15_t)0x7edd, (q15_t)0xeeff,\n  (q15_t)0x7edc, (q15_t)0xeef8, (q15_t)0x7edb, (q15_t)0xeef2, (q15_t)0x7eda, (q15_t)0xeeec, (q15_t)0x7eda, (q15_t)0xeee6,\n  (q15_t)0x7ed9, (q15_t)0xeedf, (q15_t)0x7ed8, (q15_t)0xeed9, (q15_t)0x7ed7, (q15_t)0xeed3, (q15_t)0x7ed6, (q15_t)0xeecd,\n  (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ed5, (q15_t)0xeec0, (q15_t)0x7ed4, (q15_t)0xeeba, (q15_t)0x7ed3, (q15_t)0xeeb4,\n  (q15_t)0x7ed2, (q15_t)0xeeae, (q15_t)0x7ed1, (q15_t)0xeea7, (q15_t)0x7ed0, (q15_t)0xeea1, (q15_t)0x7ecf, (q15_t)0xee9b,\n  (q15_t)0x7ecf, (q15_t)0xee95, (q15_t)0x7ece, (q15_t)0xee8f, (q15_t)0x7ecd, (q15_t)0xee88, (q15_t)0x7ecc, (q15_t)0xee82,\n  (q15_t)0x7ecb, (q15_t)0xee7c, (q15_t)0x7eca, (q15_t)0xee76, (q15_t)0x7ec9, (q15_t)0xee6f, (q15_t)0x7ec9, (q15_t)0xee69,\n  (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7ec7, (q15_t)0xee5d, (q15_t)0x7ec6, (q15_t)0xee57, (q15_t)0x7ec5, (q15_t)0xee50,\n  (q15_t)0x7ec4, (q15_t)0xee4a, (q15_t)0x7ec3, (q15_t)0xee44, (q15_t)0x7ec3, (q15_t)0xee3e, (q15_t)0x7ec2, (q15_t)0xee37,\n  (q15_t)0x7ec1, (q15_t)0xee31, (q15_t)0x7ec0, (q15_t)0xee2b, (q15_t)0x7ebf, (q15_t)0xee25, (q15_t)0x7ebe, (q15_t)0xee1f,\n  (q15_t)0x7ebd, (q15_t)0xee18, (q15_t)0x7ebc, (q15_t)0xee12, (q15_t)0x7ebb, (q15_t)0xee0c, (q15_t)0x7ebb, (q15_t)0xee06,\n  (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eb9, (q15_t)0xedf9, (q15_t)0x7eb8, (q15_t)0xedf3, (q15_t)0x7eb7, (q15_t)0xeded,\n  (q15_t)0x7eb6, (q15_t)0xede7, (q15_t)0x7eb5, (q15_t)0xede0, (q15_t)0x7eb4, (q15_t)0xedda, (q15_t)0x7eb4, (q15_t)0xedd4,\n  (q15_t)0x7eb3, (q15_t)0xedce, (q15_t)0x7eb2, (q15_t)0xedc7, (q15_t)0x7eb1, (q15_t)0xedc1, (q15_t)0x7eb0, (q15_t)0xedbb,\n  (q15_t)0x7eaf, (q15_t)0xedb5, (q15_t)0x7eae, (q15_t)0xedaf, (q15_t)0x7ead, (q15_t)0xeda8, (q15_t)0x7eac, (q15_t)0xeda2,\n  (q15_t)0x7eab, (q15_t)0xed9c, (q15_t)0x7eab, (q15_t)0xed96, (q15_t)0x7eaa, (q15_t)0xed8f, (q15_t)0x7ea9, (q15_t)0xed89,\n  (q15_t)0x7ea8, (q15_t)0xed83, (q15_t)0x7ea7, (q15_t)0xed7d, (q15_t)0x7ea6, (q15_t)0xed77, (q15_t)0x7ea5, (q15_t)0xed70,\n  (q15_t)0x7ea4, (q15_t)0xed6a, (q15_t)0x7ea3, (q15_t)0xed64, (q15_t)0x7ea2, (q15_t)0xed5e, (q15_t)0x7ea1, (q15_t)0xed58,\n  (q15_t)0x7ea1, (q15_t)0xed51, (q15_t)0x7ea0, (q15_t)0xed4b, (q15_t)0x7e9f, (q15_t)0xed45, (q15_t)0x7e9e, (q15_t)0xed3f,\n  (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e9c, (q15_t)0xed32, (q15_t)0x7e9b, (q15_t)0xed2c, (q15_t)0x7e9a, (q15_t)0xed26,\n  (q15_t)0x7e99, (q15_t)0xed20, (q15_t)0x7e98, (q15_t)0xed19, (q15_t)0x7e97, (q15_t)0xed13, (q15_t)0x7e96, (q15_t)0xed0d,\n  (q15_t)0x7e95, (q15_t)0xed07, (q15_t)0x7e94, (q15_t)0xed01, (q15_t)0x7e94, (q15_t)0xecfa, (q15_t)0x7e93, (q15_t)0xecf4,\n  (q15_t)0x7e92, (q15_t)0xecee, (q15_t)0x7e91, (q15_t)0xece8, (q15_t)0x7e90, (q15_t)0xece1, (q15_t)0x7e8f, (q15_t)0xecdb,\n  (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e8d, (q15_t)0xeccf, (q15_t)0x7e8c, (q15_t)0xecc9, (q15_t)0x7e8b, (q15_t)0xecc2,\n  (q15_t)0x7e8a, (q15_t)0xecbc, (q15_t)0x7e89, (q15_t)0xecb6, (q15_t)0x7e88, (q15_t)0xecb0, (q15_t)0x7e87, (q15_t)0xecaa,\n  (q15_t)0x7e86, (q15_t)0xeca3, (q15_t)0x7e85, (q15_t)0xec9d, (q15_t)0x7e84, (q15_t)0xec97, (q15_t)0x7e84, (q15_t)0xec91,\n  (q15_t)0x7e83, (q15_t)0xec8a, (q15_t)0x7e82, (q15_t)0xec84, (q15_t)0x7e81, (q15_t)0xec7e, (q15_t)0x7e80, (q15_t)0xec78,\n  (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e7e, (q15_t)0xec6b, (q15_t)0x7e7d, (q15_t)0xec65, (q15_t)0x7e7c, (q15_t)0xec5f,\n  (q15_t)0x7e7b, (q15_t)0xec59, (q15_t)0x7e7a, (q15_t)0xec53, (q15_t)0x7e79, (q15_t)0xec4c, (q15_t)0x7e78, (q15_t)0xec46,\n  (q15_t)0x7e77, (q15_t)0xec40, (q15_t)0x7e76, (q15_t)0xec3a, (q15_t)0x7e75, (q15_t)0xec34, (q15_t)0x7e74, (q15_t)0xec2d,\n  (q15_t)0x7e73, (q15_t)0xec27, (q15_t)0x7e72, (q15_t)0xec21, (q15_t)0x7e71, (q15_t)0xec1b, (q15_t)0x7e70, (q15_t)0xec15,\n  (q15_t)0x7e6f, (q15_t)0xec0e, (q15_t)0x7e6e, (q15_t)0xec08, (q15_t)0x7e6d, (q15_t)0xec02, (q15_t)0x7e6c, (q15_t)0xebfc,\n  (q15_t)0x7e6b, (q15_t)0xebf5, (q15_t)0x7e6a, (q15_t)0xebef, (q15_t)0x7e69, (q15_t)0xebe9, (q15_t)0x7e68, (q15_t)0xebe3,\n  (q15_t)0x7e67, (q15_t)0xebdd, (q15_t)0x7e66, (q15_t)0xebd6, (q15_t)0x7e65, (q15_t)0xebd0, (q15_t)0x7e64, (q15_t)0xebca,\n  (q15_t)0x7e63, (q15_t)0xebc4, (q15_t)0x7e62, (q15_t)0xebbe, (q15_t)0x7e61, (q15_t)0xebb7, (q15_t)0x7e60, (q15_t)0xebb1,\n  (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e5e, (q15_t)0xeba5, (q15_t)0x7e5d, (q15_t)0xeb9f, (q15_t)0x7e5c, (q15_t)0xeb98,\n  (q15_t)0x7e5b, (q15_t)0xeb92, (q15_t)0x7e5a, (q15_t)0xeb8c, (q15_t)0x7e59, (q15_t)0xeb86, (q15_t)0x7e58, (q15_t)0xeb80,\n  (q15_t)0x7e57, (q15_t)0xeb79, (q15_t)0x7e56, (q15_t)0xeb73, (q15_t)0x7e55, (q15_t)0xeb6d, (q15_t)0x7e54, (q15_t)0xeb67,\n  (q15_t)0x7e53, (q15_t)0xeb61, (q15_t)0x7e52, (q15_t)0xeb5a, (q15_t)0x7e51, (q15_t)0xeb54, (q15_t)0x7e50, (q15_t)0xeb4e,\n  (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e4e, (q15_t)0xeb42, (q15_t)0x7e4d, (q15_t)0xeb3b, (q15_t)0x7e4c, (q15_t)0xeb35,\n  (q15_t)0x7e4b, (q15_t)0xeb2f, (q15_t)0x7e4a, (q15_t)0xeb29, (q15_t)0x7e49, (q15_t)0xeb23, (q15_t)0x7e48, (q15_t)0xeb1c,\n  (q15_t)0x7e47, (q15_t)0xeb16, (q15_t)0x7e46, (q15_t)0xeb10, (q15_t)0x7e45, (q15_t)0xeb0a, (q15_t)0x7e44, (q15_t)0xeb04,\n  (q15_t)0x7e43, (q15_t)0xeafd, (q15_t)0x7e42, (q15_t)0xeaf7, (q15_t)0x7e41, (q15_t)0xeaf1, (q15_t)0x7e40, (q15_t)0xeaeb,\n  (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e3e, (q15_t)0xeade, (q15_t)0x7e3d, (q15_t)0xead8, (q15_t)0x7e3c, (q15_t)0xead2,\n  (q15_t)0x7e3b, (q15_t)0xeacc, (q15_t)0x7e3a, (q15_t)0xeac6, (q15_t)0x7e39, (q15_t)0xeabf, (q15_t)0x7e38, (q15_t)0xeab9,\n  (q15_t)0x7e37, (q15_t)0xeab3, (q15_t)0x7e35, (q15_t)0xeaad, (q15_t)0x7e34, (q15_t)0xeaa7, (q15_t)0x7e33, (q15_t)0xeaa0,\n  (q15_t)0x7e32, (q15_t)0xea9a, (q15_t)0x7e31, (q15_t)0xea94, (q15_t)0x7e30, (q15_t)0xea8e, (q15_t)0x7e2f, (q15_t)0xea88,\n  (q15_t)0x7e2e, (q15_t)0xea81, (q15_t)0x7e2d, (q15_t)0xea7b, (q15_t)0x7e2c, (q15_t)0xea75, (q15_t)0x7e2b, (q15_t)0xea6f,\n  (q15_t)0x7e2a, (q15_t)0xea69, (q15_t)0x7e29, (q15_t)0xea63, (q15_t)0x7e28, (q15_t)0xea5c, (q15_t)0x7e27, (q15_t)0xea56,\n  (q15_t)0x7e26, (q15_t)0xea50, (q15_t)0x7e25, (q15_t)0xea4a, (q15_t)0x7e24, (q15_t)0xea44, (q15_t)0x7e22, (q15_t)0xea3d,\n  (q15_t)0x7e21, (q15_t)0xea37, (q15_t)0x7e20, (q15_t)0xea31, (q15_t)0x7e1f, (q15_t)0xea2b, (q15_t)0x7e1e, (q15_t)0xea25,\n  (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e1c, (q15_t)0xea18, (q15_t)0x7e1b, (q15_t)0xea12, (q15_t)0x7e1a, (q15_t)0xea0c,\n  (q15_t)0x7e19, (q15_t)0xea06, (q15_t)0x7e18, (q15_t)0xe9ff, (q15_t)0x7e17, (q15_t)0xe9f9, (q15_t)0x7e16, (q15_t)0xe9f3,\n  (q15_t)0x7e14, (q15_t)0xe9ed, (q15_t)0x7e13, (q15_t)0xe9e7, (q15_t)0x7e12, (q15_t)0xe9e1, (q15_t)0x7e11, (q15_t)0xe9da,\n  (q15_t)0x7e10, (q15_t)0xe9d4, (q15_t)0x7e0f, (q15_t)0xe9ce, (q15_t)0x7e0e, (q15_t)0xe9c8, (q15_t)0x7e0d, (q15_t)0xe9c2,\n  (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7e0b, (q15_t)0xe9b5, (q15_t)0x7e0a, (q15_t)0xe9af, (q15_t)0x7e08, (q15_t)0xe9a9,\n  (q15_t)0x7e07, (q15_t)0xe9a3, (q15_t)0x7e06, (q15_t)0xe99c, (q15_t)0x7e05, (q15_t)0xe996, (q15_t)0x7e04, (q15_t)0xe990,\n  (q15_t)0x7e03, (q15_t)0xe98a, (q15_t)0x7e02, (q15_t)0xe984, (q15_t)0x7e01, (q15_t)0xe97e, (q15_t)0x7e00, (q15_t)0xe977,\n  (q15_t)0x7dff, (q15_t)0xe971, (q15_t)0x7dfd, (q15_t)0xe96b, (q15_t)0x7dfc, (q15_t)0xe965, (q15_t)0x7dfb, (q15_t)0xe95f,\n  (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7df9, (q15_t)0xe952, (q15_t)0x7df8, (q15_t)0xe94c, (q15_t)0x7df7, (q15_t)0xe946,\n  (q15_t)0x7df6, (q15_t)0xe940, (q15_t)0x7df5, (q15_t)0xe93a, (q15_t)0x7df3, (q15_t)0xe933, (q15_t)0x7df2, (q15_t)0xe92d,\n  (q15_t)0x7df1, (q15_t)0xe927, (q15_t)0x7df0, (q15_t)0xe921, (q15_t)0x7def, (q15_t)0xe91b, (q15_t)0x7dee, (q15_t)0xe914,\n  (q15_t)0x7ded, (q15_t)0xe90e, (q15_t)0x7dec, (q15_t)0xe908, (q15_t)0x7dea, (q15_t)0xe902, (q15_t)0x7de9, (q15_t)0xe8fc,\n  (q15_t)0x7de8, (q15_t)0xe8f6, (q15_t)0x7de7, (q15_t)0xe8ef, (q15_t)0x7de6, (q15_t)0xe8e9, (q15_t)0x7de5, (q15_t)0xe8e3,\n  (q15_t)0x7de4, (q15_t)0xe8dd, (q15_t)0x7de2, (q15_t)0xe8d7, (q15_t)0x7de1, (q15_t)0xe8d0, (q15_t)0x7de0, (q15_t)0xe8ca,\n  (q15_t)0x7ddf, (q15_t)0xe8c4, (q15_t)0x7dde, (q15_t)0xe8be, (q15_t)0x7ddd, (q15_t)0xe8b8, (q15_t)0x7ddc, (q15_t)0xe8b2,\n  (q15_t)0x7dda, (q15_t)0xe8ab, (q15_t)0x7dd9, (q15_t)0xe8a5, (q15_t)0x7dd8, (q15_t)0xe89f, (q15_t)0x7dd7, (q15_t)0xe899,\n  (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dd5, (q15_t)0xe88c, (q15_t)0x7dd4, (q15_t)0xe886, (q15_t)0x7dd2, (q15_t)0xe880,\n  (q15_t)0x7dd1, (q15_t)0xe87a, (q15_t)0x7dd0, (q15_t)0xe874, (q15_t)0x7dcf, (q15_t)0xe86e, (q15_t)0x7dce, (q15_t)0xe867,\n  (q15_t)0x7dcd, (q15_t)0xe861, (q15_t)0x7dcc, (q15_t)0xe85b, (q15_t)0x7dca, (q15_t)0xe855, (q15_t)0x7dc9, (q15_t)0xe84f,\n  (q15_t)0x7dc8, (q15_t)0xe849, (q15_t)0x7dc7, (q15_t)0xe842, (q15_t)0x7dc6, (q15_t)0xe83c, (q15_t)0x7dc5, (q15_t)0xe836,\n  (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7dc2, (q15_t)0xe82a, (q15_t)0x7dc1, (q15_t)0xe823, (q15_t)0x7dc0, (q15_t)0xe81d,\n  (q15_t)0x7dbf, (q15_t)0xe817, (q15_t)0x7dbd, (q15_t)0xe811, (q15_t)0x7dbc, (q15_t)0xe80b, (q15_t)0x7dbb, (q15_t)0xe805,\n  (q15_t)0x7dba, (q15_t)0xe7fe, (q15_t)0x7db9, (q15_t)0xe7f8, (q15_t)0x7db8, (q15_t)0xe7f2, (q15_t)0x7db6, (q15_t)0xe7ec,\n  (q15_t)0x7db5, (q15_t)0xe7e6, (q15_t)0x7db4, (q15_t)0xe7e0, (q15_t)0x7db3, (q15_t)0xe7d9, (q15_t)0x7db2, (q15_t)0xe7d3,\n  (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7daf, (q15_t)0xe7c7, (q15_t)0x7dae, (q15_t)0xe7c1, (q15_t)0x7dad, (q15_t)0xe7bb,\n  (q15_t)0x7dac, (q15_t)0xe7b4, (q15_t)0x7dab, (q15_t)0xe7ae, (q15_t)0x7da9, (q15_t)0xe7a8, (q15_t)0x7da8, (q15_t)0xe7a2,\n  (q15_t)0x7da7, (q15_t)0xe79c, (q15_t)0x7da6, (q15_t)0xe796, (q15_t)0x7da5, (q15_t)0xe78f, (q15_t)0x7da3, (q15_t)0xe789,\n  (q15_t)0x7da2, (q15_t)0xe783, (q15_t)0x7da1, (q15_t)0xe77d, (q15_t)0x7da0, (q15_t)0xe777, (q15_t)0x7d9f, (q15_t)0xe771,\n  (q15_t)0x7d9d, (q15_t)0xe76a, (q15_t)0x7d9c, (q15_t)0xe764, (q15_t)0x7d9b, (q15_t)0xe75e, (q15_t)0x7d9a, (q15_t)0xe758,\n  (q15_t)0x7d98, (q15_t)0xe752, (q15_t)0x7d97, (q15_t)0xe74c, (q15_t)0x7d96, (q15_t)0xe745, (q15_t)0x7d95, (q15_t)0xe73f,\n  (q15_t)0x7d94, (q15_t)0xe739, (q15_t)0x7d92, (q15_t)0xe733, (q15_t)0x7d91, (q15_t)0xe72d, (q15_t)0x7d90, (q15_t)0xe727,\n  (q15_t)0x7d8f, (q15_t)0xe720, (q15_t)0x7d8e, (q15_t)0xe71a, (q15_t)0x7d8c, (q15_t)0xe714, (q15_t)0x7d8b, (q15_t)0xe70e,\n  (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d89, (q15_t)0xe702, (q15_t)0x7d87, (q15_t)0xe6fb, (q15_t)0x7d86, (q15_t)0xe6f5,\n  (q15_t)0x7d85, (q15_t)0xe6ef, (q15_t)0x7d84, (q15_t)0xe6e9, (q15_t)0x7d82, (q15_t)0xe6e3, (q15_t)0x7d81, (q15_t)0xe6dd,\n  (q15_t)0x7d80, (q15_t)0xe6d6, (q15_t)0x7d7f, (q15_t)0xe6d0, (q15_t)0x7d7e, (q15_t)0xe6ca, (q15_t)0x7d7c, (q15_t)0xe6c4,\n  (q15_t)0x7d7b, (q15_t)0xe6be, (q15_t)0x7d7a, (q15_t)0xe6b8, (q15_t)0x7d79, (q15_t)0xe6b2, (q15_t)0x7d77, (q15_t)0xe6ab,\n  (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d75, (q15_t)0xe69f, (q15_t)0x7d74, (q15_t)0xe699, (q15_t)0x7d72, (q15_t)0xe693,\n  (q15_t)0x7d71, (q15_t)0xe68d, (q15_t)0x7d70, (q15_t)0xe686, (q15_t)0x7d6f, (q15_t)0xe680, (q15_t)0x7d6d, (q15_t)0xe67a,\n  (q15_t)0x7d6c, (q15_t)0xe674, (q15_t)0x7d6b, (q15_t)0xe66e, (q15_t)0x7d6a, (q15_t)0xe668, (q15_t)0x7d68, (q15_t)0xe661,\n  (q15_t)0x7d67, (q15_t)0xe65b, (q15_t)0x7d66, (q15_t)0xe655, (q15_t)0x7d65, (q15_t)0xe64f, (q15_t)0x7d63, (q15_t)0xe649,\n  (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d61, (q15_t)0xe63d, (q15_t)0x7d60, (q15_t)0xe636, (q15_t)0x7d5e, (q15_t)0xe630,\n  (q15_t)0x7d5d, (q15_t)0xe62a, (q15_t)0x7d5c, (q15_t)0xe624, (q15_t)0x7d5a, (q15_t)0xe61e, (q15_t)0x7d59, (q15_t)0xe618,\n  (q15_t)0x7d58, (q15_t)0xe611, (q15_t)0x7d57, (q15_t)0xe60b, (q15_t)0x7d55, (q15_t)0xe605, (q15_t)0x7d54, (q15_t)0xe5ff,\n  (q15_t)0x7d53, (q15_t)0xe5f9, (q15_t)0x7d52, (q15_t)0xe5f3, (q15_t)0x7d50, (q15_t)0xe5ed, (q15_t)0x7d4f, (q15_t)0xe5e6,\n  (q15_t)0x7d4e, (q15_t)0xe5e0, (q15_t)0x7d4c, (q15_t)0xe5da, (q15_t)0x7d4b, (q15_t)0xe5d4, (q15_t)0x7d4a, (q15_t)0xe5ce,\n  (q15_t)0x7d49, (q15_t)0xe5c8, (q15_t)0x7d47, (q15_t)0xe5c2, (q15_t)0x7d46, (q15_t)0xe5bb, (q15_t)0x7d45, (q15_t)0xe5b5,\n  (q15_t)0x7d43, (q15_t)0xe5af, (q15_t)0x7d42, (q15_t)0xe5a9, (q15_t)0x7d41, (q15_t)0xe5a3, (q15_t)0x7d3f, (q15_t)0xe59d,\n  (q15_t)0x7d3e, (q15_t)0xe596, (q15_t)0x7d3d, (q15_t)0xe590, (q15_t)0x7d3c, (q15_t)0xe58a, (q15_t)0x7d3a, (q15_t)0xe584,\n  (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d38, (q15_t)0xe578, (q15_t)0x7d36, (q15_t)0xe572, (q15_t)0x7d35, (q15_t)0xe56b,\n  (q15_t)0x7d34, (q15_t)0xe565, (q15_t)0x7d32, (q15_t)0xe55f, (q15_t)0x7d31, (q15_t)0xe559, (q15_t)0x7d30, (q15_t)0xe553,\n  (q15_t)0x7d2f, (q15_t)0xe54d, (q15_t)0x7d2d, (q15_t)0xe547, (q15_t)0x7d2c, (q15_t)0xe540, (q15_t)0x7d2b, (q15_t)0xe53a,\n  (q15_t)0x7d29, (q15_t)0xe534, (q15_t)0x7d28, (q15_t)0xe52e, (q15_t)0x7d27, (q15_t)0xe528, (q15_t)0x7d25, (q15_t)0xe522,\n  (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d23, (q15_t)0xe515, (q15_t)0x7d21, (q15_t)0xe50f, (q15_t)0x7d20, (q15_t)0xe509,\n  (q15_t)0x7d1f, (q15_t)0xe503, (q15_t)0x7d1d, (q15_t)0xe4fd, (q15_t)0x7d1c, (q15_t)0xe4f7, (q15_t)0x7d1b, (q15_t)0xe4f1,\n  (q15_t)0x7d19, (q15_t)0xe4ea, (q15_t)0x7d18, (q15_t)0xe4e4, (q15_t)0x7d17, (q15_t)0xe4de, (q15_t)0x7d15, (q15_t)0xe4d8,\n  (q15_t)0x7d14, (q15_t)0xe4d2, (q15_t)0x7d13, (q15_t)0xe4cc, (q15_t)0x7d11, (q15_t)0xe4c6, (q15_t)0x7d10, (q15_t)0xe4bf,\n  (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7d0d, (q15_t)0xe4b3, (q15_t)0x7d0c, (q15_t)0xe4ad, (q15_t)0x7d0b, (q15_t)0xe4a7,\n  (q15_t)0x7d09, (q15_t)0xe4a1, (q15_t)0x7d08, (q15_t)0xe49b, (q15_t)0x7d07, (q15_t)0xe494, (q15_t)0x7d05, (q15_t)0xe48e,\n  (q15_t)0x7d04, (q15_t)0xe488, (q15_t)0x7d03, (q15_t)0xe482, (q15_t)0x7d01, (q15_t)0xe47c, (q15_t)0x7d00, (q15_t)0xe476,\n  (q15_t)0x7cff, (q15_t)0xe470, (q15_t)0x7cfd, (q15_t)0xe46a, (q15_t)0x7cfc, (q15_t)0xe463, (q15_t)0x7cfb, (q15_t)0xe45d,\n  (q15_t)0x7cf9, (q15_t)0xe457, (q15_t)0x7cf8, (q15_t)0xe451, (q15_t)0x7cf6, (q15_t)0xe44b, (q15_t)0x7cf5, (q15_t)0xe445,\n  (q15_t)0x7cf4, (q15_t)0xe43f, (q15_t)0x7cf2, (q15_t)0xe438, (q15_t)0x7cf1, (q15_t)0xe432, (q15_t)0x7cf0, (q15_t)0xe42c,\n  (q15_t)0x7cee, (q15_t)0xe426, (q15_t)0x7ced, (q15_t)0xe420, (q15_t)0x7cec, (q15_t)0xe41a, (q15_t)0x7cea, (q15_t)0xe414,\n  (q15_t)0x7ce9, (q15_t)0xe40e, (q15_t)0x7ce7, (q15_t)0xe407, (q15_t)0x7ce6, (q15_t)0xe401, (q15_t)0x7ce5, (q15_t)0xe3fb,\n  (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7ce2, (q15_t)0xe3ef, (q15_t)0x7ce1, (q15_t)0xe3e9, (q15_t)0x7cdf, (q15_t)0xe3e3,\n  (q15_t)0x7cde, (q15_t)0xe3dc, (q15_t)0x7cdc, (q15_t)0xe3d6, (q15_t)0x7cdb, (q15_t)0xe3d0, (q15_t)0x7cda, (q15_t)0xe3ca,\n  (q15_t)0x7cd8, (q15_t)0xe3c4, (q15_t)0x7cd7, (q15_t)0xe3be, (q15_t)0x7cd5, (q15_t)0xe3b8, (q15_t)0x7cd4, (q15_t)0xe3b2,\n  (q15_t)0x7cd3, (q15_t)0xe3ab, (q15_t)0x7cd1, (q15_t)0xe3a5, (q15_t)0x7cd0, (q15_t)0xe39f, (q15_t)0x7ccf, (q15_t)0xe399,\n  (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7ccc, (q15_t)0xe38d, (q15_t)0x7cca, (q15_t)0xe387, (q15_t)0x7cc9, (q15_t)0xe381,\n  (q15_t)0x7cc8, (q15_t)0xe37a, (q15_t)0x7cc6, (q15_t)0xe374, (q15_t)0x7cc5, (q15_t)0xe36e, (q15_t)0x7cc3, (q15_t)0xe368,\n  (q15_t)0x7cc2, (q15_t)0xe362, (q15_t)0x7cc1, (q15_t)0xe35c, (q15_t)0x7cbf, (q15_t)0xe356, (q15_t)0x7cbe, (q15_t)0xe350,\n  (q15_t)0x7cbc, (q15_t)0xe349, (q15_t)0x7cbb, (q15_t)0xe343, (q15_t)0x7cb9, (q15_t)0xe33d, (q15_t)0x7cb8, (q15_t)0xe337,\n  (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7cb5, (q15_t)0xe32b, (q15_t)0x7cb4, (q15_t)0xe325, (q15_t)0x7cb2, (q15_t)0xe31f,\n  (q15_t)0x7cb1, (q15_t)0xe318, (q15_t)0x7cb0, (q15_t)0xe312, (q15_t)0x7cae, (q15_t)0xe30c, (q15_t)0x7cad, (q15_t)0xe306,\n  (q15_t)0x7cab, (q15_t)0xe300, (q15_t)0x7caa, (q15_t)0xe2fa, (q15_t)0x7ca8, (q15_t)0xe2f4, (q15_t)0x7ca7, (q15_t)0xe2ee,\n  (q15_t)0x7ca6, (q15_t)0xe2e8, (q15_t)0x7ca4, (q15_t)0xe2e1, (q15_t)0x7ca3, (q15_t)0xe2db, (q15_t)0x7ca1, (q15_t)0xe2d5,\n  (q15_t)0x7ca0, (q15_t)0xe2cf, (q15_t)0x7c9e, (q15_t)0xe2c9, (q15_t)0x7c9d, (q15_t)0xe2c3, (q15_t)0x7c9c, (q15_t)0xe2bd,\n  (q15_t)0x7c9a, (q15_t)0xe2b7, (q15_t)0x7c99, (q15_t)0xe2b0, (q15_t)0x7c97, (q15_t)0xe2aa, (q15_t)0x7c96, (q15_t)0xe2a4,\n  (q15_t)0x7c94, (q15_t)0xe29e, (q15_t)0x7c93, (q15_t)0xe298, (q15_t)0x7c91, (q15_t)0xe292, (q15_t)0x7c90, (q15_t)0xe28c,\n  (q15_t)0x7c8f, (q15_t)0xe286, (q15_t)0x7c8d, (q15_t)0xe280, (q15_t)0x7c8c, (q15_t)0xe279, (q15_t)0x7c8a, (q15_t)0xe273,\n  (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c87, (q15_t)0xe267, (q15_t)0x7c86, (q15_t)0xe261, (q15_t)0x7c84, (q15_t)0xe25b,\n  (q15_t)0x7c83, (q15_t)0xe255, (q15_t)0x7c82, (q15_t)0xe24f, (q15_t)0x7c80, (q15_t)0xe249, (q15_t)0x7c7f, (q15_t)0xe242,\n  (q15_t)0x7c7d, (q15_t)0xe23c, (q15_t)0x7c7c, (q15_t)0xe236, (q15_t)0x7c7a, (q15_t)0xe230, (q15_t)0x7c79, (q15_t)0xe22a,\n  (q15_t)0x7c77, (q15_t)0xe224, (q15_t)0x7c76, (q15_t)0xe21e, (q15_t)0x7c74, (q15_t)0xe218, (q15_t)0x7c73, (q15_t)0xe212,\n  (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c70, (q15_t)0xe205, (q15_t)0x7c6e, (q15_t)0xe1ff, (q15_t)0x7c6d, (q15_t)0xe1f9,\n  (q15_t)0x7c6c, (q15_t)0xe1f3, (q15_t)0x7c6a, (q15_t)0xe1ed, (q15_t)0x7c69, (q15_t)0xe1e7, (q15_t)0x7c67, (q15_t)0xe1e1,\n  (q15_t)0x7c66, (q15_t)0xe1db, (q15_t)0x7c64, (q15_t)0xe1d4, (q15_t)0x7c63, (q15_t)0xe1ce, (q15_t)0x7c61, (q15_t)0xe1c8,\n  (q15_t)0x7c60, (q15_t)0xe1c2, (q15_t)0x7c5e, (q15_t)0xe1bc, (q15_t)0x7c5d, (q15_t)0xe1b6, (q15_t)0x7c5b, (q15_t)0xe1b0,\n  (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c58, (q15_t)0xe1a4, (q15_t)0x7c57, (q15_t)0xe19e, (q15_t)0x7c55, (q15_t)0xe197,\n  (q15_t)0x7c54, (q15_t)0xe191, (q15_t)0x7c52, (q15_t)0xe18b, (q15_t)0x7c51, (q15_t)0xe185, (q15_t)0x7c4f, (q15_t)0xe17f,\n  (q15_t)0x7c4e, (q15_t)0xe179, (q15_t)0x7c4c, (q15_t)0xe173, (q15_t)0x7c4b, (q15_t)0xe16d, (q15_t)0x7c49, (q15_t)0xe167,\n  (q15_t)0x7c48, (q15_t)0xe160, (q15_t)0x7c46, (q15_t)0xe15a, (q15_t)0x7c45, (q15_t)0xe154, (q15_t)0x7c43, (q15_t)0xe14e,\n  (q15_t)0x7c42, (q15_t)0xe148, (q15_t)0x7c40, (q15_t)0xe142, (q15_t)0x7c3f, (q15_t)0xe13c, (q15_t)0x7c3d, (q15_t)0xe136,\n  (q15_t)0x7c3c, (q15_t)0xe130, (q15_t)0x7c3a, (q15_t)0xe12a, (q15_t)0x7c39, (q15_t)0xe123, (q15_t)0x7c37, (q15_t)0xe11d,\n  (q15_t)0x7c36, (q15_t)0xe117, (q15_t)0x7c34, (q15_t)0xe111, (q15_t)0x7c33, (q15_t)0xe10b, (q15_t)0x7c31, (q15_t)0xe105,\n  (q15_t)0x7c30, (q15_t)0xe0ff, (q15_t)0x7c2e, (q15_t)0xe0f9, (q15_t)0x7c2d, (q15_t)0xe0f3, (q15_t)0x7c2b, (q15_t)0xe0ed,\n  (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c28, (q15_t)0xe0e0, (q15_t)0x7c26, (q15_t)0xe0da, (q15_t)0x7c25, (q15_t)0xe0d4,\n  (q15_t)0x7c23, (q15_t)0xe0ce, (q15_t)0x7c22, (q15_t)0xe0c8, (q15_t)0x7c20, (q15_t)0xe0c2, (q15_t)0x7c1f, (q15_t)0xe0bc,\n  (q15_t)0x7c1d, (q15_t)0xe0b6, (q15_t)0x7c1c, (q15_t)0xe0b0, (q15_t)0x7c1a, (q15_t)0xe0aa, (q15_t)0x7c19, (q15_t)0xe0a3,\n  (q15_t)0x7c17, (q15_t)0xe09d, (q15_t)0x7c16, (q15_t)0xe097, (q15_t)0x7c14, (q15_t)0xe091, (q15_t)0x7c12, (q15_t)0xe08b,\n  (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7c0f, (q15_t)0xe07f, (q15_t)0x7c0e, (q15_t)0xe079, (q15_t)0x7c0c, (q15_t)0xe073,\n  (q15_t)0x7c0b, (q15_t)0xe06d, (q15_t)0x7c09, (q15_t)0xe067, (q15_t)0x7c08, (q15_t)0xe061, (q15_t)0x7c06, (q15_t)0xe05a,\n  (q15_t)0x7c05, (q15_t)0xe054, (q15_t)0x7c03, (q15_t)0xe04e, (q15_t)0x7c01, (q15_t)0xe048, (q15_t)0x7c00, (q15_t)0xe042,\n  (q15_t)0x7bfe, (q15_t)0xe03c, (q15_t)0x7bfd, (q15_t)0xe036, (q15_t)0x7bfb, (q15_t)0xe030, (q15_t)0x7bfa, (q15_t)0xe02a,\n  (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bf6, (q15_t)0xe01e, (q15_t)0x7bf5, (q15_t)0xe017, (q15_t)0x7bf3, (q15_t)0xe011,\n  (q15_t)0x7bf2, (q15_t)0xe00b, (q15_t)0x7bf0, (q15_t)0xe005, (q15_t)0x7bef, (q15_t)0xdfff, (q15_t)0x7bed, (q15_t)0xdff9,\n  (q15_t)0x7beb, (q15_t)0xdff3, (q15_t)0x7bea, (q15_t)0xdfed, (q15_t)0x7be8, (q15_t)0xdfe7, (q15_t)0x7be7, (q15_t)0xdfe1,\n  (q15_t)0x7be5, (q15_t)0xdfdb, (q15_t)0x7be4, (q15_t)0xdfd5, (q15_t)0x7be2, (q15_t)0xdfce, (q15_t)0x7be0, (q15_t)0xdfc8,\n  (q15_t)0x7bdf, (q15_t)0xdfc2, (q15_t)0x7bdd, (q15_t)0xdfbc, (q15_t)0x7bdc, (q15_t)0xdfb6, (q15_t)0x7bda, (q15_t)0xdfb0,\n  (q15_t)0x7bd9, (q15_t)0xdfaa, (q15_t)0x7bd7, (q15_t)0xdfa4, (q15_t)0x7bd5, (q15_t)0xdf9e, (q15_t)0x7bd4, (q15_t)0xdf98,\n  (q15_t)0x7bd2, (q15_t)0xdf92, (q15_t)0x7bd1, (q15_t)0xdf8c, (q15_t)0x7bcf, (q15_t)0xdf86, (q15_t)0x7bcd, (q15_t)0xdf7f,\n  (q15_t)0x7bcc, (q15_t)0xdf79, (q15_t)0x7bca, (q15_t)0xdf73, (q15_t)0x7bc9, (q15_t)0xdf6d, (q15_t)0x7bc7, (q15_t)0xdf67,\n  (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bc4, (q15_t)0xdf5b, (q15_t)0x7bc2, (q15_t)0xdf55, (q15_t)0x7bc1, (q15_t)0xdf4f,\n  (q15_t)0x7bbf, (q15_t)0xdf49, (q15_t)0x7bbd, (q15_t)0xdf43, (q15_t)0x7bbc, (q15_t)0xdf3d, (q15_t)0x7bba, (q15_t)0xdf37,\n  (q15_t)0x7bb9, (q15_t)0xdf30, (q15_t)0x7bb7, (q15_t)0xdf2a, (q15_t)0x7bb5, (q15_t)0xdf24, (q15_t)0x7bb4, (q15_t)0xdf1e,\n  (q15_t)0x7bb2, (q15_t)0xdf18, (q15_t)0x7bb0, (q15_t)0xdf12, (q15_t)0x7baf, (q15_t)0xdf0c, (q15_t)0x7bad, (q15_t)0xdf06,\n  (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7baa, (q15_t)0xdefa, (q15_t)0x7ba8, (q15_t)0xdef4, (q15_t)0x7ba7, (q15_t)0xdeee,\n  (q15_t)0x7ba5, (q15_t)0xdee8, (q15_t)0x7ba3, (q15_t)0xdee2, (q15_t)0x7ba2, (q15_t)0xdedb, (q15_t)0x7ba0, (q15_t)0xded5,\n  (q15_t)0x7b9f, (q15_t)0xdecf, (q15_t)0x7b9d, (q15_t)0xdec9, (q15_t)0x7b9b, (q15_t)0xdec3, (q15_t)0x7b9a, (q15_t)0xdebd,\n  (q15_t)0x7b98, (q15_t)0xdeb7, (q15_t)0x7b96, (q15_t)0xdeb1, (q15_t)0x7b95, (q15_t)0xdeab, (q15_t)0x7b93, (q15_t)0xdea5,\n  (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b90, (q15_t)0xde99, (q15_t)0x7b8e, (q15_t)0xde93, (q15_t)0x7b8d, (q15_t)0xde8d,\n  (q15_t)0x7b8b, (q15_t)0xde87, (q15_t)0x7b89, (q15_t)0xde80, (q15_t)0x7b88, (q15_t)0xde7a, (q15_t)0x7b86, (q15_t)0xde74,\n  (q15_t)0x7b84, (q15_t)0xde6e, (q15_t)0x7b83, (q15_t)0xde68, (q15_t)0x7b81, (q15_t)0xde62, (q15_t)0x7b7f, (q15_t)0xde5c,\n  (q15_t)0x7b7e, (q15_t)0xde56, (q15_t)0x7b7c, (q15_t)0xde50, (q15_t)0x7b7a, (q15_t)0xde4a, (q15_t)0x7b79, (q15_t)0xde44,\n  (q15_t)0x7b77, (q15_t)0xde3e, (q15_t)0x7b76, (q15_t)0xde38, (q15_t)0x7b74, (q15_t)0xde32, (q15_t)0x7b72, (q15_t)0xde2c,\n  (q15_t)0x7b71, (q15_t)0xde26, (q15_t)0x7b6f, (q15_t)0xde1f, (q15_t)0x7b6d, (q15_t)0xde19, (q15_t)0x7b6c, (q15_t)0xde13,\n  (q15_t)0x7b6a, (q15_t)0xde0d, (q15_t)0x7b68, (q15_t)0xde07, (q15_t)0x7b67, (q15_t)0xde01, (q15_t)0x7b65, (q15_t)0xddfb,\n  (q15_t)0x7b63, (q15_t)0xddf5, (q15_t)0x7b62, (q15_t)0xddef, (q15_t)0x7b60, (q15_t)0xdde9, (q15_t)0x7b5e, (q15_t)0xdde3,\n  (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b5b, (q15_t)0xddd7, (q15_t)0x7b59, (q15_t)0xddd1, (q15_t)0x7b57, (q15_t)0xddcb,\n  (q15_t)0x7b56, (q15_t)0xddc5, (q15_t)0x7b54, (q15_t)0xddbf, (q15_t)0x7b52, (q15_t)0xddb9, (q15_t)0x7b51, (q15_t)0xddb2,\n  (q15_t)0x7b4f, (q15_t)0xddac, (q15_t)0x7b4d, (q15_t)0xdda6, (q15_t)0x7b4c, (q15_t)0xdda0, (q15_t)0x7b4a, (q15_t)0xdd9a,\n  (q15_t)0x7b48, (q15_t)0xdd94, (q15_t)0x7b47, (q15_t)0xdd8e, (q15_t)0x7b45, (q15_t)0xdd88, (q15_t)0x7b43, (q15_t)0xdd82,\n  (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b40, (q15_t)0xdd76, (q15_t)0x7b3e, (q15_t)0xdd70, (q15_t)0x7b3c, (q15_t)0xdd6a,\n  (q15_t)0x7b3b, (q15_t)0xdd64, (q15_t)0x7b39, (q15_t)0xdd5e, (q15_t)0x7b37, (q15_t)0xdd58, (q15_t)0x7b36, (q15_t)0xdd52,\n  (q15_t)0x7b34, (q15_t)0xdd4c, (q15_t)0x7b32, (q15_t)0xdd46, (q15_t)0x7b31, (q15_t)0xdd40, (q15_t)0x7b2f, (q15_t)0xdd39,\n  (q15_t)0x7b2d, (q15_t)0xdd33, (q15_t)0x7b2b, (q15_t)0xdd2d, (q15_t)0x7b2a, (q15_t)0xdd27, (q15_t)0x7b28, (q15_t)0xdd21,\n  (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b25, (q15_t)0xdd15, (q15_t)0x7b23, (q15_t)0xdd0f, (q15_t)0x7b21, (q15_t)0xdd09,\n  (q15_t)0x7b1f, (q15_t)0xdd03, (q15_t)0x7b1e, (q15_t)0xdcfd, (q15_t)0x7b1c, (q15_t)0xdcf7, (q15_t)0x7b1a, (q15_t)0xdcf1,\n  (q15_t)0x7b19, (q15_t)0xdceb, (q15_t)0x7b17, (q15_t)0xdce5, (q15_t)0x7b15, (q15_t)0xdcdf, (q15_t)0x7b13, (q15_t)0xdcd9,\n  (q15_t)0x7b12, (q15_t)0xdcd3, (q15_t)0x7b10, (q15_t)0xdccd, (q15_t)0x7b0e, (q15_t)0xdcc7, (q15_t)0x7b0c, (q15_t)0xdcc1,\n  (q15_t)0x7b0b, (q15_t)0xdcbb, (q15_t)0x7b09, (q15_t)0xdcb5, (q15_t)0x7b07, (q15_t)0xdcae, (q15_t)0x7b06, (q15_t)0xdca8,\n  (q15_t)0x7b04, (q15_t)0xdca2, (q15_t)0x7b02, (q15_t)0xdc9c, (q15_t)0x7b00, (q15_t)0xdc96, (q15_t)0x7aff, (q15_t)0xdc90,\n  (q15_t)0x7afd, (q15_t)0xdc8a, (q15_t)0x7afb, (q15_t)0xdc84, (q15_t)0x7af9, (q15_t)0xdc7e, (q15_t)0x7af8, (q15_t)0xdc78,\n  (q15_t)0x7af6, (q15_t)0xdc72, (q15_t)0x7af4, (q15_t)0xdc6c, (q15_t)0x7af2, (q15_t)0xdc66, (q15_t)0x7af1, (q15_t)0xdc60,\n  (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7aed, (q15_t)0xdc54, (q15_t)0x7aeb, (q15_t)0xdc4e, (q15_t)0x7aea, (q15_t)0xdc48,\n  (q15_t)0x7ae8, (q15_t)0xdc42, (q15_t)0x7ae6, (q15_t)0xdc3c, (q15_t)0x7ae4, (q15_t)0xdc36, (q15_t)0x7ae3, (q15_t)0xdc30,\n  (q15_t)0x7ae1, (q15_t)0xdc2a, (q15_t)0x7adf, (q15_t)0xdc24, (q15_t)0x7add, (q15_t)0xdc1e, (q15_t)0x7adc, (q15_t)0xdc18,\n  (q15_t)0x7ada, (q15_t)0xdc12, (q15_t)0x7ad8, (q15_t)0xdc0c, (q15_t)0x7ad6, (q15_t)0xdc06, (q15_t)0x7ad5, (q15_t)0xdbff,\n  (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7ad1, (q15_t)0xdbf3, (q15_t)0x7acf, (q15_t)0xdbed, (q15_t)0x7acd, (q15_t)0xdbe7,\n  (q15_t)0x7acc, (q15_t)0xdbe1, (q15_t)0x7aca, (q15_t)0xdbdb, (q15_t)0x7ac8, (q15_t)0xdbd5, (q15_t)0x7ac6, (q15_t)0xdbcf,\n  (q15_t)0x7ac5, (q15_t)0xdbc9, (q15_t)0x7ac3, (q15_t)0xdbc3, (q15_t)0x7ac1, (q15_t)0xdbbd, (q15_t)0x7abf, (q15_t)0xdbb7,\n  (q15_t)0x7abd, (q15_t)0xdbb1, (q15_t)0x7abc, (q15_t)0xdbab, (q15_t)0x7aba, (q15_t)0xdba5, (q15_t)0x7ab8, (q15_t)0xdb9f,\n  (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7ab5, (q15_t)0xdb93, (q15_t)0x7ab3, (q15_t)0xdb8d, (q15_t)0x7ab1, (q15_t)0xdb87,\n  (q15_t)0x7aaf, (q15_t)0xdb81, (q15_t)0x7aad, (q15_t)0xdb7b, (q15_t)0x7aac, (q15_t)0xdb75, (q15_t)0x7aaa, (q15_t)0xdb6f,\n  (q15_t)0x7aa8, (q15_t)0xdb69, (q15_t)0x7aa6, (q15_t)0xdb63, (q15_t)0x7aa4, (q15_t)0xdb5d, (q15_t)0x7aa3, (q15_t)0xdb57,\n  (q15_t)0x7aa1, (q15_t)0xdb51, (q15_t)0x7a9f, (q15_t)0xdb4b, (q15_t)0x7a9d, (q15_t)0xdb45, (q15_t)0x7a9b, (q15_t)0xdb3f,\n  (q15_t)0x7a9a, (q15_t)0xdb39, (q15_t)0x7a98, (q15_t)0xdb33, (q15_t)0x7a96, (q15_t)0xdb2d, (q15_t)0x7a94, (q15_t)0xdb27,\n  (q15_t)0x7a92, (q15_t)0xdb21, (q15_t)0x7a91, (q15_t)0xdb1b, (q15_t)0x7a8f, (q15_t)0xdb15, (q15_t)0x7a8d, (q15_t)0xdb0f,\n  (q15_t)0x7a8b, (q15_t)0xdb09, (q15_t)0x7a89, (q15_t)0xdb03, (q15_t)0x7a87, (q15_t)0xdafd, (q15_t)0x7a86, (q15_t)0xdaf7,\n  (q15_t)0x7a84, (q15_t)0xdaf1, (q15_t)0x7a82, (q15_t)0xdaea, (q15_t)0x7a80, (q15_t)0xdae4, (q15_t)0x7a7e, (q15_t)0xdade,\n  (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a7b, (q15_t)0xdad2, (q15_t)0x7a79, (q15_t)0xdacc, (q15_t)0x7a77, (q15_t)0xdac6,\n  (q15_t)0x7a75, (q15_t)0xdac0, (q15_t)0x7a73, (q15_t)0xdaba, (q15_t)0x7a72, (q15_t)0xdab4, (q15_t)0x7a70, (q15_t)0xdaae,\n  (q15_t)0x7a6e, (q15_t)0xdaa8, (q15_t)0x7a6c, (q15_t)0xdaa2, (q15_t)0x7a6a, (q15_t)0xda9c, (q15_t)0x7a68, (q15_t)0xda96,\n  (q15_t)0x7a67, (q15_t)0xda90, (q15_t)0x7a65, (q15_t)0xda8a, (q15_t)0x7a63, (q15_t)0xda84, (q15_t)0x7a61, (q15_t)0xda7e,\n  (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a5d, (q15_t)0xda72, (q15_t)0x7a5c, (q15_t)0xda6c, (q15_t)0x7a5a, (q15_t)0xda66,\n  (q15_t)0x7a58, (q15_t)0xda60, (q15_t)0x7a56, (q15_t)0xda5a, (q15_t)0x7a54, (q15_t)0xda54, (q15_t)0x7a52, (q15_t)0xda4e,\n  (q15_t)0x7a50, (q15_t)0xda48, (q15_t)0x7a4f, (q15_t)0xda42, (q15_t)0x7a4d, (q15_t)0xda3c, (q15_t)0x7a4b, (q15_t)0xda36,\n  (q15_t)0x7a49, (q15_t)0xda30, (q15_t)0x7a47, (q15_t)0xda2a, (q15_t)0x7a45, (q15_t)0xda24, (q15_t)0x7a43, (q15_t)0xda1e,\n  (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a40, (q15_t)0xda12, (q15_t)0x7a3e, (q15_t)0xda0c, (q15_t)0x7a3c, (q15_t)0xda06,\n  (q15_t)0x7a3a, (q15_t)0xda00, (q15_t)0x7a38, (q15_t)0xd9fa, (q15_t)0x7a36, (q15_t)0xd9f4, (q15_t)0x7a35, (q15_t)0xd9ee,\n  (q15_t)0x7a33, (q15_t)0xd9e8, (q15_t)0x7a31, (q15_t)0xd9e2, (q15_t)0x7a2f, (q15_t)0xd9dc, (q15_t)0x7a2d, (q15_t)0xd9d6,\n  (q15_t)0x7a2b, (q15_t)0xd9d0, (q15_t)0x7a29, (q15_t)0xd9ca, (q15_t)0x7a27, (q15_t)0xd9c4, (q15_t)0x7a26, (q15_t)0xd9be,\n  (q15_t)0x7a24, (q15_t)0xd9b8, (q15_t)0x7a22, (q15_t)0xd9b2, (q15_t)0x7a20, (q15_t)0xd9ac, (q15_t)0x7a1e, (q15_t)0xd9a6,\n  (q15_t)0x7a1c, (q15_t)0xd9a0, (q15_t)0x7a1a, (q15_t)0xd99a, (q15_t)0x7a18, (q15_t)0xd994, (q15_t)0x7a16, (q15_t)0xd98e,\n  (q15_t)0x7a15, (q15_t)0xd988, (q15_t)0x7a13, (q15_t)0xd982, (q15_t)0x7a11, (q15_t)0xd97c, (q15_t)0x7a0f, (q15_t)0xd976,\n  (q15_t)0x7a0d, (q15_t)0xd970, (q15_t)0x7a0b, (q15_t)0xd96a, (q15_t)0x7a09, (q15_t)0xd964, (q15_t)0x7a07, (q15_t)0xd95e,\n  (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x7a04, (q15_t)0xd952, (q15_t)0x7a02, (q15_t)0xd94c, (q15_t)0x7a00, (q15_t)0xd946,\n  (q15_t)0x79fe, (q15_t)0xd940, (q15_t)0x79fc, (q15_t)0xd93a, (q15_t)0x79fa, (q15_t)0xd934, (q15_t)0x79f8, (q15_t)0xd92e,\n  (q15_t)0x79f6, (q15_t)0xd928, (q15_t)0x79f4, (q15_t)0xd922, (q15_t)0x79f2, (q15_t)0xd91c, (q15_t)0x79f0, (q15_t)0xd917,\n  (q15_t)0x79ef, (q15_t)0xd911, (q15_t)0x79ed, (q15_t)0xd90b, (q15_t)0x79eb, (q15_t)0xd905, (q15_t)0x79e9, (q15_t)0xd8ff,\n  (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79e5, (q15_t)0xd8f3, (q15_t)0x79e3, (q15_t)0xd8ed, (q15_t)0x79e1, (q15_t)0xd8e7,\n  (q15_t)0x79df, (q15_t)0xd8e1, (q15_t)0x79dd, (q15_t)0xd8db, (q15_t)0x79db, (q15_t)0xd8d5, (q15_t)0x79d9, (q15_t)0xd8cf,\n  (q15_t)0x79d8, (q15_t)0xd8c9, (q15_t)0x79d6, (q15_t)0xd8c3, (q15_t)0x79d4, (q15_t)0xd8bd, (q15_t)0x79d2, (q15_t)0xd8b7,\n  (q15_t)0x79d0, (q15_t)0xd8b1, (q15_t)0x79ce, (q15_t)0xd8ab, (q15_t)0x79cc, (q15_t)0xd8a5, (q15_t)0x79ca, (q15_t)0xd89f,\n  (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79c6, (q15_t)0xd893, (q15_t)0x79c4, (q15_t)0xd88d, (q15_t)0x79c2, (q15_t)0xd887,\n  (q15_t)0x79c0, (q15_t)0xd881, (q15_t)0x79be, (q15_t)0xd87b, (q15_t)0x79bc, (q15_t)0xd875, (q15_t)0x79bb, (q15_t)0xd86f,\n  (q15_t)0x79b9, (q15_t)0xd869, (q15_t)0x79b7, (q15_t)0xd863, (q15_t)0x79b5, (q15_t)0xd85d, (q15_t)0x79b3, (q15_t)0xd857,\n  (q15_t)0x79b1, (q15_t)0xd851, (q15_t)0x79af, (q15_t)0xd84b, (q15_t)0x79ad, (q15_t)0xd845, (q15_t)0x79ab, (q15_t)0xd83f,\n  (q15_t)0x79a9, (q15_t)0xd839, (q15_t)0x79a7, (q15_t)0xd833, (q15_t)0x79a5, (q15_t)0xd82d, (q15_t)0x79a3, (q15_t)0xd827,\n  (q15_t)0x79a1, (q15_t)0xd821, (q15_t)0x799f, (q15_t)0xd81b, (q15_t)0x799d, (q15_t)0xd815, (q15_t)0x799b, (q15_t)0xd80f,\n  (q15_t)0x7999, (q15_t)0xd80a, (q15_t)0x7997, (q15_t)0xd804, (q15_t)0x7995, (q15_t)0xd7fe, (q15_t)0x7993, (q15_t)0xd7f8,\n  (q15_t)0x7992, (q15_t)0xd7f2, (q15_t)0x7990, (q15_t)0xd7ec, (q15_t)0x798e, (q15_t)0xd7e6, (q15_t)0x798c, (q15_t)0xd7e0,\n  (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7988, (q15_t)0xd7d4, (q15_t)0x7986, (q15_t)0xd7ce, (q15_t)0x7984, (q15_t)0xd7c8,\n  (q15_t)0x7982, (q15_t)0xd7c2, (q15_t)0x7980, (q15_t)0xd7bc, (q15_t)0x797e, (q15_t)0xd7b6, (q15_t)0x797c, (q15_t)0xd7b0,\n  (q15_t)0x797a, (q15_t)0xd7aa, (q15_t)0x7978, (q15_t)0xd7a4, (q15_t)0x7976, (q15_t)0xd79e, (q15_t)0x7974, (q15_t)0xd798,\n  (q15_t)0x7972, (q15_t)0xd792, (q15_t)0x7970, (q15_t)0xd78c, (q15_t)0x796e, (q15_t)0xd786, (q15_t)0x796c, (q15_t)0xd780,\n  (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x7968, (q15_t)0xd774, (q15_t)0x7966, (q15_t)0xd76e, (q15_t)0x7964, (q15_t)0xd768,\n  (q15_t)0x7962, (q15_t)0xd763, (q15_t)0x7960, (q15_t)0xd75d, (q15_t)0x795e, (q15_t)0xd757, (q15_t)0x795c, (q15_t)0xd751,\n  (q15_t)0x795a, (q15_t)0xd74b, (q15_t)0x7958, (q15_t)0xd745, (q15_t)0x7956, (q15_t)0xd73f, (q15_t)0x7954, (q15_t)0xd739,\n  (q15_t)0x7952, (q15_t)0xd733, (q15_t)0x7950, (q15_t)0xd72d, (q15_t)0x794e, (q15_t)0xd727, (q15_t)0x794c, (q15_t)0xd721,\n  (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x7948, (q15_t)0xd715, (q15_t)0x7946, (q15_t)0xd70f, (q15_t)0x7944, (q15_t)0xd709,\n  (q15_t)0x7942, (q15_t)0xd703, (q15_t)0x7940, (q15_t)0xd6fd, (q15_t)0x793e, (q15_t)0xd6f7, (q15_t)0x793c, (q15_t)0xd6f1,\n  (q15_t)0x793a, (q15_t)0xd6eb, (q15_t)0x7938, (q15_t)0xd6e5, (q15_t)0x7936, (q15_t)0xd6e0, (q15_t)0x7934, (q15_t)0xd6da,\n  (q15_t)0x7932, (q15_t)0xd6d4, (q15_t)0x7930, (q15_t)0xd6ce, (q15_t)0x792e, (q15_t)0xd6c8, (q15_t)0x792c, (q15_t)0xd6c2,\n  (q15_t)0x792a, (q15_t)0xd6bc, (q15_t)0x7928, (q15_t)0xd6b6, (q15_t)0x7926, (q15_t)0xd6b0, (q15_t)0x7924, (q15_t)0xd6aa,\n  (q15_t)0x7922, (q15_t)0xd6a4, (q15_t)0x7920, (q15_t)0xd69e, (q15_t)0x791e, (q15_t)0xd698, (q15_t)0x791c, (q15_t)0xd692,\n  (q15_t)0x7919, (q15_t)0xd68c, (q15_t)0x7917, (q15_t)0xd686, (q15_t)0x7915, (q15_t)0xd680, (q15_t)0x7913, (q15_t)0xd67a,\n  (q15_t)0x7911, (q15_t)0xd675, (q15_t)0x790f, (q15_t)0xd66f, (q15_t)0x790d, (q15_t)0xd669, (q15_t)0x790b, (q15_t)0xd663,\n  (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x7907, (q15_t)0xd657, (q15_t)0x7905, (q15_t)0xd651, (q15_t)0x7903, (q15_t)0xd64b,\n  (q15_t)0x7901, (q15_t)0xd645, (q15_t)0x78ff, (q15_t)0xd63f, (q15_t)0x78fd, (q15_t)0xd639, (q15_t)0x78fb, (q15_t)0xd633,\n  (q15_t)0x78f9, (q15_t)0xd62d, (q15_t)0x78f7, (q15_t)0xd627, (q15_t)0x78f5, (q15_t)0xd621, (q15_t)0x78f3, (q15_t)0xd61b,\n  (q15_t)0x78f1, (q15_t)0xd615, (q15_t)0x78ee, (q15_t)0xd610, (q15_t)0x78ec, (q15_t)0xd60a, (q15_t)0x78ea, (q15_t)0xd604,\n  (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78e6, (q15_t)0xd5f8, (q15_t)0x78e4, (q15_t)0xd5f2, (q15_t)0x78e2, (q15_t)0xd5ec,\n  (q15_t)0x78e0, (q15_t)0xd5e6, (q15_t)0x78de, (q15_t)0xd5e0, (q15_t)0x78dc, (q15_t)0xd5da, (q15_t)0x78da, (q15_t)0xd5d4,\n  (q15_t)0x78d8, (q15_t)0xd5ce, (q15_t)0x78d6, (q15_t)0xd5c8, (q15_t)0x78d4, (q15_t)0xd5c2, (q15_t)0x78d2, (q15_t)0xd5bc,\n  (q15_t)0x78cf, (q15_t)0xd5b7, (q15_t)0x78cd, (q15_t)0xd5b1, (q15_t)0x78cb, (q15_t)0xd5ab, (q15_t)0x78c9, (q15_t)0xd5a5,\n  (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78c5, (q15_t)0xd599, (q15_t)0x78c3, (q15_t)0xd593, (q15_t)0x78c1, (q15_t)0xd58d,\n  (q15_t)0x78bf, (q15_t)0xd587, (q15_t)0x78bd, (q15_t)0xd581, (q15_t)0x78bb, (q15_t)0xd57b, (q15_t)0x78b9, (q15_t)0xd575,\n  (q15_t)0x78b6, (q15_t)0xd56f, (q15_t)0x78b4, (q15_t)0xd569, (q15_t)0x78b2, (q15_t)0xd564, (q15_t)0x78b0, (q15_t)0xd55e,\n  (q15_t)0x78ae, (q15_t)0xd558, (q15_t)0x78ac, (q15_t)0xd552, (q15_t)0x78aa, (q15_t)0xd54c, (q15_t)0x78a8, (q15_t)0xd546,\n  (q15_t)0x78a6, (q15_t)0xd540, (q15_t)0x78a4, (q15_t)0xd53a, (q15_t)0x78a2, (q15_t)0xd534, (q15_t)0x789f, (q15_t)0xd52e,\n  (q15_t)0x789d, (q15_t)0xd528, (q15_t)0x789b, (q15_t)0xd522, (q15_t)0x7899, (q15_t)0xd51c, (q15_t)0x7897, (q15_t)0xd517,\n  (q15_t)0x7895, (q15_t)0xd511, (q15_t)0x7893, (q15_t)0xd50b, (q15_t)0x7891, (q15_t)0xd505, (q15_t)0x788f, (q15_t)0xd4ff,\n  (q15_t)0x788c, (q15_t)0xd4f9, (q15_t)0x788a, (q15_t)0xd4f3, (q15_t)0x7888, (q15_t)0xd4ed, (q15_t)0x7886, (q15_t)0xd4e7,\n  (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x7882, (q15_t)0xd4db, (q15_t)0x7880, (q15_t)0xd4d5, (q15_t)0x787e, (q15_t)0xd4d0,\n  (q15_t)0x787c, (q15_t)0xd4ca, (q15_t)0x7879, (q15_t)0xd4c4, (q15_t)0x7877, (q15_t)0xd4be, (q15_t)0x7875, (q15_t)0xd4b8,\n  (q15_t)0x7873, (q15_t)0xd4b2, (q15_t)0x7871, (q15_t)0xd4ac, (q15_t)0x786f, (q15_t)0xd4a6, (q15_t)0x786d, (q15_t)0xd4a0,\n  (q15_t)0x786b, (q15_t)0xd49a, (q15_t)0x7868, (q15_t)0xd494, (q15_t)0x7866, (q15_t)0xd48f, (q15_t)0x7864, (q15_t)0xd489,\n  (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7860, (q15_t)0xd47d, (q15_t)0x785e, (q15_t)0xd477, (q15_t)0x785c, (q15_t)0xd471,\n  (q15_t)0x7859, (q15_t)0xd46b, (q15_t)0x7857, (q15_t)0xd465, (q15_t)0x7855, (q15_t)0xd45f, (q15_t)0x7853, (q15_t)0xd459,\n  (q15_t)0x7851, (q15_t)0xd453, (q15_t)0x784f, (q15_t)0xd44e, (q15_t)0x784d, (q15_t)0xd448, (q15_t)0x784a, (q15_t)0xd442,\n  (q15_t)0x7848, (q15_t)0xd43c, (q15_t)0x7846, (q15_t)0xd436, (q15_t)0x7844, (q15_t)0xd430, (q15_t)0x7842, (q15_t)0xd42a,\n  (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x783e, (q15_t)0xd41e, (q15_t)0x783b, (q15_t)0xd418, (q15_t)0x7839, (q15_t)0xd412,\n  (q15_t)0x7837, (q15_t)0xd40d, (q15_t)0x7835, (q15_t)0xd407, (q15_t)0x7833, (q15_t)0xd401, (q15_t)0x7831, (q15_t)0xd3fb,\n  (q15_t)0x782e, (q15_t)0xd3f5, (q15_t)0x782c, (q15_t)0xd3ef, (q15_t)0x782a, (q15_t)0xd3e9, (q15_t)0x7828, (q15_t)0xd3e3,\n  (q15_t)0x7826, (q15_t)0xd3dd, (q15_t)0x7824, (q15_t)0xd3d7, (q15_t)0x7821, (q15_t)0xd3d2, (q15_t)0x781f, (q15_t)0xd3cc,\n  (q15_t)0x781d, (q15_t)0xd3c6, (q15_t)0x781b, (q15_t)0xd3c0, (q15_t)0x7819, (q15_t)0xd3ba, (q15_t)0x7817, (q15_t)0xd3b4,\n  (q15_t)0x7814, (q15_t)0xd3ae, (q15_t)0x7812, (q15_t)0xd3a8, (q15_t)0x7810, (q15_t)0xd3a2, (q15_t)0x780e, (q15_t)0xd39d,\n  (q15_t)0x780c, (q15_t)0xd397, (q15_t)0x780a, (q15_t)0xd391, (q15_t)0x7807, (q15_t)0xd38b, (q15_t)0x7805, (q15_t)0xd385,\n  (q15_t)0x7803, (q15_t)0xd37f, (q15_t)0x7801, (q15_t)0xd379, (q15_t)0x77ff, (q15_t)0xd373, (q15_t)0x77fc, (q15_t)0xd36d,\n  (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77f8, (q15_t)0xd362, (q15_t)0x77f6, (q15_t)0xd35c, (q15_t)0x77f4, (q15_t)0xd356,\n  (q15_t)0x77f1, (q15_t)0xd350, (q15_t)0x77ef, (q15_t)0xd34a, (q15_t)0x77ed, (q15_t)0xd344, (q15_t)0x77eb, (q15_t)0xd33e,\n  (q15_t)0x77e9, (q15_t)0xd338, (q15_t)0x77e6, (q15_t)0xd333, (q15_t)0x77e4, (q15_t)0xd32d, (q15_t)0x77e2, (q15_t)0xd327,\n  (q15_t)0x77e0, (q15_t)0xd321, (q15_t)0x77de, (q15_t)0xd31b, (q15_t)0x77db, (q15_t)0xd315, (q15_t)0x77d9, (q15_t)0xd30f,\n  (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77d5, (q15_t)0xd303, (q15_t)0x77d3, (q15_t)0xd2fe, (q15_t)0x77d0, (q15_t)0xd2f8,\n  (q15_t)0x77ce, (q15_t)0xd2f2, (q15_t)0x77cc, (q15_t)0xd2ec, (q15_t)0x77ca, (q15_t)0xd2e6, (q15_t)0x77c8, (q15_t)0xd2e0,\n  (q15_t)0x77c5, (q15_t)0xd2da, (q15_t)0x77c3, (q15_t)0xd2d4, (q15_t)0x77c1, (q15_t)0xd2cf, (q15_t)0x77bf, (q15_t)0xd2c9,\n  (q15_t)0x77bc, (q15_t)0xd2c3, (q15_t)0x77ba, (q15_t)0xd2bd, (q15_t)0x77b8, (q15_t)0xd2b7, (q15_t)0x77b6, (q15_t)0xd2b1,\n  (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x77b1, (q15_t)0xd2a5, (q15_t)0x77af, (q15_t)0xd2a0, (q15_t)0x77ad, (q15_t)0xd29a,\n  (q15_t)0x77ab, (q15_t)0xd294, (q15_t)0x77a8, (q15_t)0xd28e, (q15_t)0x77a6, (q15_t)0xd288, (q15_t)0x77a4, (q15_t)0xd282,\n  (q15_t)0x77a2, (q15_t)0xd27c, (q15_t)0x77a0, (q15_t)0xd276, (q15_t)0x779d, (q15_t)0xd271, (q15_t)0x779b, (q15_t)0xd26b,\n  (q15_t)0x7799, (q15_t)0xd265, (q15_t)0x7797, (q15_t)0xd25f, (q15_t)0x7794, (q15_t)0xd259, (q15_t)0x7792, (q15_t)0xd253,\n  (q15_t)0x7790, (q15_t)0xd24d, (q15_t)0x778e, (q15_t)0xd247, (q15_t)0x778b, (q15_t)0xd242, (q15_t)0x7789, (q15_t)0xd23c,\n  (q15_t)0x7787, (q15_t)0xd236, (q15_t)0x7785, (q15_t)0xd230, (q15_t)0x7782, (q15_t)0xd22a, (q15_t)0x7780, (q15_t)0xd224,\n  (q15_t)0x777e, (q15_t)0xd21e, (q15_t)0x777c, (q15_t)0xd219, (q15_t)0x7779, (q15_t)0xd213, (q15_t)0x7777, (q15_t)0xd20d,\n  (q15_t)0x7775, (q15_t)0xd207, (q15_t)0x7773, (q15_t)0xd201, (q15_t)0x7770, (q15_t)0xd1fb, (q15_t)0x776e, (q15_t)0xd1f5,\n  (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x776a, (q15_t)0xd1ea, (q15_t)0x7767, (q15_t)0xd1e4, (q15_t)0x7765, (q15_t)0xd1de,\n  (q15_t)0x7763, (q15_t)0xd1d8, (q15_t)0x7760, (q15_t)0xd1d2, (q15_t)0x775e, (q15_t)0xd1cc, (q15_t)0x775c, (q15_t)0xd1c6,\n  (q15_t)0x775a, (q15_t)0xd1c1, (q15_t)0x7757, (q15_t)0xd1bb, (q15_t)0x7755, (q15_t)0xd1b5, (q15_t)0x7753, (q15_t)0xd1af,\n  (q15_t)0x7751, (q15_t)0xd1a9, (q15_t)0x774e, (q15_t)0xd1a3, (q15_t)0x774c, (q15_t)0xd19d, (q15_t)0x774a, (q15_t)0xd198,\n  (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x7745, (q15_t)0xd18c, (q15_t)0x7743, (q15_t)0xd186, (q15_t)0x7741, (q15_t)0xd180,\n  (q15_t)0x773e, (q15_t)0xd17a, (q15_t)0x773c, (q15_t)0xd174, (q15_t)0x773a, (q15_t)0xd16f, (q15_t)0x7738, (q15_t)0xd169,\n  (q15_t)0x7735, (q15_t)0xd163, (q15_t)0x7733, (q15_t)0xd15d, (q15_t)0x7731, (q15_t)0xd157, (q15_t)0x772e, (q15_t)0xd151,\n  (q15_t)0x772c, (q15_t)0xd14b, (q15_t)0x772a, (q15_t)0xd146, (q15_t)0x7727, (q15_t)0xd140, (q15_t)0x7725, (q15_t)0xd13a,\n  (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x7721, (q15_t)0xd12e, (q15_t)0x771e, (q15_t)0xd128, (q15_t)0x771c, (q15_t)0xd123,\n  (q15_t)0x771a, (q15_t)0xd11d, (q15_t)0x7717, (q15_t)0xd117, (q15_t)0x7715, (q15_t)0xd111, (q15_t)0x7713, (q15_t)0xd10b,\n  (q15_t)0x7710, (q15_t)0xd105, (q15_t)0x770e, (q15_t)0xd0ff, (q15_t)0x770c, (q15_t)0xd0fa, (q15_t)0x770a, (q15_t)0xd0f4,\n  (q15_t)0x7707, (q15_t)0xd0ee, (q15_t)0x7705, (q15_t)0xd0e8, (q15_t)0x7703, (q15_t)0xd0e2, (q15_t)0x7700, (q15_t)0xd0dc,\n  (q15_t)0x76fe, (q15_t)0xd0d7, (q15_t)0x76fc, (q15_t)0xd0d1, (q15_t)0x76f9, (q15_t)0xd0cb, (q15_t)0x76f7, (q15_t)0xd0c5,\n  (q15_t)0x76f5, (q15_t)0xd0bf, (q15_t)0x76f2, (q15_t)0xd0b9, (q15_t)0x76f0, (q15_t)0xd0b4, (q15_t)0x76ee, (q15_t)0xd0ae,\n  (q15_t)0x76eb, (q15_t)0xd0a8, (q15_t)0x76e9, (q15_t)0xd0a2, (q15_t)0x76e7, (q15_t)0xd09c, (q15_t)0x76e4, (q15_t)0xd096,\n  (q15_t)0x76e2, (q15_t)0xd091, (q15_t)0x76e0, (q15_t)0xd08b, (q15_t)0x76dd, (q15_t)0xd085, (q15_t)0x76db, (q15_t)0xd07f,\n  (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76d6, (q15_t)0xd073, (q15_t)0x76d4, (q15_t)0xd06e, (q15_t)0x76d2, (q15_t)0xd068,\n  (q15_t)0x76cf, (q15_t)0xd062, (q15_t)0x76cd, (q15_t)0xd05c, (q15_t)0x76cb, (q15_t)0xd056, (q15_t)0x76c8, (q15_t)0xd050,\n  (q15_t)0x76c6, (q15_t)0xd04b, (q15_t)0x76c4, (q15_t)0xd045, (q15_t)0x76c1, (q15_t)0xd03f, (q15_t)0x76bf, (q15_t)0xd039,\n  (q15_t)0x76bd, (q15_t)0xd033, (q15_t)0x76ba, (q15_t)0xd02d, (q15_t)0x76b8, (q15_t)0xd028, (q15_t)0x76b6, (q15_t)0xd022,\n  (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x76b1, (q15_t)0xd016, (q15_t)0x76af, (q15_t)0xd010, (q15_t)0x76ac, (q15_t)0xd00a,\n  (q15_t)0x76aa, (q15_t)0xd005, (q15_t)0x76a8, (q15_t)0xcfff, (q15_t)0x76a5, (q15_t)0xcff9, (q15_t)0x76a3, (q15_t)0xcff3,\n  (q15_t)0x76a0, (q15_t)0xcfed, (q15_t)0x769e, (q15_t)0xcfe7, (q15_t)0x769c, (q15_t)0xcfe2, (q15_t)0x7699, (q15_t)0xcfdc,\n  (q15_t)0x7697, (q15_t)0xcfd6, (q15_t)0x7695, (q15_t)0xcfd0, (q15_t)0x7692, (q15_t)0xcfca, (q15_t)0x7690, (q15_t)0xcfc5,\n  (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x768b, (q15_t)0xcfb9, (q15_t)0x7689, (q15_t)0xcfb3, (q15_t)0x7686, (q15_t)0xcfad,\n  (q15_t)0x7684, (q15_t)0xcfa7, (q15_t)0x7682, (q15_t)0xcfa2, (q15_t)0x767f, (q15_t)0xcf9c, (q15_t)0x767d, (q15_t)0xcf96,\n  (q15_t)0x767b, (q15_t)0xcf90, (q15_t)0x7678, (q15_t)0xcf8a, (q15_t)0x7676, (q15_t)0xcf85, (q15_t)0x7673, (q15_t)0xcf7f,\n  (q15_t)0x7671, (q15_t)0xcf79, (q15_t)0x766f, (q15_t)0xcf73, (q15_t)0x766c, (q15_t)0xcf6d, (q15_t)0x766a, (q15_t)0xcf67,\n  (q15_t)0x7668, (q15_t)0xcf62, (q15_t)0x7665, (q15_t)0xcf5c, (q15_t)0x7663, (q15_t)0xcf56, (q15_t)0x7660, (q15_t)0xcf50,\n  (q15_t)0x765e, (q15_t)0xcf4a, (q15_t)0x765c, (q15_t)0xcf45, (q15_t)0x7659, (q15_t)0xcf3f, (q15_t)0x7657, (q15_t)0xcf39,\n  (q15_t)0x7654, (q15_t)0xcf33, (q15_t)0x7652, (q15_t)0xcf2d, (q15_t)0x7650, (q15_t)0xcf28, (q15_t)0x764d, (q15_t)0xcf22,\n  (q15_t)0x764b, (q15_t)0xcf1c, (q15_t)0x7648, (q15_t)0xcf16, (q15_t)0x7646, (q15_t)0xcf10, (q15_t)0x7644, (q15_t)0xcf0b,\n  (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x763f, (q15_t)0xceff, (q15_t)0x763c, (q15_t)0xcef9, (q15_t)0x763a, (q15_t)0xcef3,\n  (q15_t)0x7638, (q15_t)0xceee, (q15_t)0x7635, (q15_t)0xcee8, (q15_t)0x7633, (q15_t)0xcee2, (q15_t)0x7630, (q15_t)0xcedc,\n  (q15_t)0x762e, (q15_t)0xced6, (q15_t)0x762b, (q15_t)0xced1, (q15_t)0x7629, (q15_t)0xcecb, (q15_t)0x7627, (q15_t)0xcec5,\n  (q15_t)0x7624, (q15_t)0xcebf, (q15_t)0x7622, (q15_t)0xceb9, (q15_t)0x761f, (q15_t)0xceb4, (q15_t)0x761d, (q15_t)0xceae,\n  (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x7618, (q15_t)0xcea2, (q15_t)0x7616, (q15_t)0xce9c, (q15_t)0x7613, (q15_t)0xce97,\n  (q15_t)0x7611, (q15_t)0xce91, (q15_t)0x760e, (q15_t)0xce8b, (q15_t)0x760c, (q15_t)0xce85, (q15_t)0x760a, (q15_t)0xce7f,\n  (q15_t)0x7607, (q15_t)0xce7a, (q15_t)0x7605, (q15_t)0xce74, (q15_t)0x7602, (q15_t)0xce6e, (q15_t)0x7600, (q15_t)0xce68,\n  (q15_t)0x75fd, (q15_t)0xce62, (q15_t)0x75fb, (q15_t)0xce5d, (q15_t)0x75f9, (q15_t)0xce57, (q15_t)0x75f6, (q15_t)0xce51,\n  (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75f1, (q15_t)0xce45, (q15_t)0x75ef, (q15_t)0xce40, (q15_t)0x75ec, (q15_t)0xce3a,\n  (q15_t)0x75ea, (q15_t)0xce34, (q15_t)0x75e7, (q15_t)0xce2e, (q15_t)0x75e5, (q15_t)0xce28, (q15_t)0x75e3, (q15_t)0xce23,\n  (q15_t)0x75e0, (q15_t)0xce1d, (q15_t)0x75de, (q15_t)0xce17, (q15_t)0x75db, (q15_t)0xce11, (q15_t)0x75d9, (q15_t)0xce0c,\n  (q15_t)0x75d6, (q15_t)0xce06, (q15_t)0x75d4, (q15_t)0xce00, (q15_t)0x75d1, (q15_t)0xcdfa, (q15_t)0x75cf, (q15_t)0xcdf4,\n  (q15_t)0x75cc, (q15_t)0xcdef, (q15_t)0x75ca, (q15_t)0xcde9, (q15_t)0x75c8, (q15_t)0xcde3, (q15_t)0x75c5, (q15_t)0xcddd,\n  (q15_t)0x75c3, (q15_t)0xcdd8, (q15_t)0x75c0, (q15_t)0xcdd2, (q15_t)0x75be, (q15_t)0xcdcc, (q15_t)0x75bb, (q15_t)0xcdc6,\n  (q15_t)0x75b9, (q15_t)0xcdc0, (q15_t)0x75b6, (q15_t)0xcdbb, (q15_t)0x75b4, (q15_t)0xcdb5, (q15_t)0x75b1, (q15_t)0xcdaf,\n  (q15_t)0x75af, (q15_t)0xcda9, (q15_t)0x75ac, (q15_t)0xcda3, (q15_t)0x75aa, (q15_t)0xcd9e, (q15_t)0x75a7, (q15_t)0xcd98,\n  (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x75a3, (q15_t)0xcd8c, (q15_t)0x75a0, (q15_t)0xcd87, (q15_t)0x759e, (q15_t)0xcd81,\n  (q15_t)0x759b, (q15_t)0xcd7b, (q15_t)0x7599, (q15_t)0xcd75, (q15_t)0x7596, (q15_t)0xcd70, (q15_t)0x7594, (q15_t)0xcd6a,\n  (q15_t)0x7591, (q15_t)0xcd64, (q15_t)0x758f, (q15_t)0xcd5e, (q15_t)0x758c, (q15_t)0xcd58, (q15_t)0x758a, (q15_t)0xcd53,\n  (q15_t)0x7587, (q15_t)0xcd4d, (q15_t)0x7585, (q15_t)0xcd47, (q15_t)0x7582, (q15_t)0xcd41, (q15_t)0x7580, (q15_t)0xcd3c,\n  (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x757b, (q15_t)0xcd30, (q15_t)0x7578, (q15_t)0xcd2a, (q15_t)0x7576, (q15_t)0xcd25,\n  (q15_t)0x7573, (q15_t)0xcd1f, (q15_t)0x7571, (q15_t)0xcd19, (q15_t)0x756e, (q15_t)0xcd13, (q15_t)0x756c, (q15_t)0xcd0d,\n  (q15_t)0x7569, (q15_t)0xcd08, (q15_t)0x7567, (q15_t)0xcd02, (q15_t)0x7564, (q15_t)0xccfc, (q15_t)0x7562, (q15_t)0xccf6,\n  (q15_t)0x755f, (q15_t)0xccf1, (q15_t)0x755d, (q15_t)0xcceb, (q15_t)0x755a, (q15_t)0xcce5, (q15_t)0x7558, (q15_t)0xccdf,\n  (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x7553, (q15_t)0xccd4, (q15_t)0x7550, (q15_t)0xccce, (q15_t)0x754e, (q15_t)0xccc8,\n  (q15_t)0x754b, (q15_t)0xccc3, (q15_t)0x7549, (q15_t)0xccbd, (q15_t)0x7546, (q15_t)0xccb7, (q15_t)0x7544, (q15_t)0xccb1,\n  (q15_t)0x7541, (q15_t)0xccac, (q15_t)0x753f, (q15_t)0xcca6, (q15_t)0x753c, (q15_t)0xcca0, (q15_t)0x753a, (q15_t)0xcc9a,\n  (q15_t)0x7537, (q15_t)0xcc95, (q15_t)0x7535, (q15_t)0xcc8f, (q15_t)0x7532, (q15_t)0xcc89, (q15_t)0x752f, (q15_t)0xcc83,\n  (q15_t)0x752d, (q15_t)0xcc7e, (q15_t)0x752a, (q15_t)0xcc78, (q15_t)0x7528, (q15_t)0xcc72, (q15_t)0x7525, (q15_t)0xcc6c,\n  (q15_t)0x7523, (q15_t)0xcc67, (q15_t)0x7520, (q15_t)0xcc61, (q15_t)0x751e, (q15_t)0xcc5b, (q15_t)0x751b, (q15_t)0xcc55,\n  (q15_t)0x7519, (q15_t)0xcc50, (q15_t)0x7516, (q15_t)0xcc4a, (q15_t)0x7514, (q15_t)0xcc44, (q15_t)0x7511, (q15_t)0xcc3e,\n  (q15_t)0x750f, (q15_t)0xcc39, (q15_t)0x750c, (q15_t)0xcc33, (q15_t)0x7509, (q15_t)0xcc2d, (q15_t)0x7507, (q15_t)0xcc27,\n  (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x7502, (q15_t)0xcc1c, (q15_t)0x74ff, (q15_t)0xcc16, (q15_t)0x74fd, (q15_t)0xcc10,\n  (q15_t)0x74fa, (q15_t)0xcc0b, (q15_t)0x74f8, (q15_t)0xcc05, (q15_t)0x74f5, (q15_t)0xcbff, (q15_t)0x74f2, (q15_t)0xcbf9,\n  (q15_t)0x74f0, (q15_t)0xcbf4, (q15_t)0x74ed, (q15_t)0xcbee, (q15_t)0x74eb, (q15_t)0xcbe8, (q15_t)0x74e8, (q15_t)0xcbe2,\n  (q15_t)0x74e6, (q15_t)0xcbdd, (q15_t)0x74e3, (q15_t)0xcbd7, (q15_t)0x74e1, (q15_t)0xcbd1, (q15_t)0x74de, (q15_t)0xcbcb,\n  (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74d9, (q15_t)0xcbc0, (q15_t)0x74d6, (q15_t)0xcbba, (q15_t)0x74d4, (q15_t)0xcbb5,\n  (q15_t)0x74d1, (q15_t)0xcbaf, (q15_t)0x74cf, (q15_t)0xcba9, (q15_t)0x74cc, (q15_t)0xcba3, (q15_t)0x74c9, (q15_t)0xcb9e,\n  (q15_t)0x74c7, (q15_t)0xcb98, (q15_t)0x74c4, (q15_t)0xcb92, (q15_t)0x74c2, (q15_t)0xcb8c, (q15_t)0x74bf, (q15_t)0xcb87,\n  (q15_t)0x74bd, (q15_t)0xcb81, (q15_t)0x74ba, (q15_t)0xcb7b, (q15_t)0x74b7, (q15_t)0xcb75, (q15_t)0x74b5, (q15_t)0xcb70,\n  (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x74b0, (q15_t)0xcb64, (q15_t)0x74ad, (q15_t)0xcb5f, (q15_t)0x74ab, (q15_t)0xcb59,\n  (q15_t)0x74a8, (q15_t)0xcb53, (q15_t)0x74a5, (q15_t)0xcb4d, (q15_t)0x74a3, (q15_t)0xcb48, (q15_t)0x74a0, (q15_t)0xcb42,\n  (q15_t)0x749e, (q15_t)0xcb3c, (q15_t)0x749b, (q15_t)0xcb36, (q15_t)0x7498, (q15_t)0xcb31, (q15_t)0x7496, (q15_t)0xcb2b,\n  (q15_t)0x7493, (q15_t)0xcb25, (q15_t)0x7491, (q15_t)0xcb20, (q15_t)0x748e, (q15_t)0xcb1a, (q15_t)0x748b, (q15_t)0xcb14,\n  (q15_t)0x7489, (q15_t)0xcb0e, (q15_t)0x7486, (q15_t)0xcb09, (q15_t)0x7484, (q15_t)0xcb03, (q15_t)0x7481, (q15_t)0xcafd,\n  (q15_t)0x747e, (q15_t)0xcaf8, (q15_t)0x747c, (q15_t)0xcaf2, (q15_t)0x7479, (q15_t)0xcaec, (q15_t)0x7477, (q15_t)0xcae6,\n  (q15_t)0x7474, (q15_t)0xcae1, (q15_t)0x7471, (q15_t)0xcadb, (q15_t)0x746f, (q15_t)0xcad5, (q15_t)0x746c, (q15_t)0xcad0,\n  (q15_t)0x746a, (q15_t)0xcaca, (q15_t)0x7467, (q15_t)0xcac4, (q15_t)0x7464, (q15_t)0xcabe, (q15_t)0x7462, (q15_t)0xcab9,\n  (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x745c, (q15_t)0xcaad, (q15_t)0x745a, (q15_t)0xcaa8, (q15_t)0x7457, (q15_t)0xcaa2,\n  (q15_t)0x7455, (q15_t)0xca9c, (q15_t)0x7452, (q15_t)0xca96, (q15_t)0x744f, (q15_t)0xca91, (q15_t)0x744d, (q15_t)0xca8b,\n  (q15_t)0x744a, (q15_t)0xca85, (q15_t)0x7448, (q15_t)0xca80, (q15_t)0x7445, (q15_t)0xca7a, (q15_t)0x7442, (q15_t)0xca74,\n  (q15_t)0x7440, (q15_t)0xca6e, (q15_t)0x743d, (q15_t)0xca69, (q15_t)0x743a, (q15_t)0xca63, (q15_t)0x7438, (q15_t)0xca5d,\n  (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x7432, (q15_t)0xca52, (q15_t)0x7430, (q15_t)0xca4c, (q15_t)0x742d, (q15_t)0xca46,\n  (q15_t)0x742b, (q15_t)0xca41, (q15_t)0x7428, (q15_t)0xca3b, (q15_t)0x7425, (q15_t)0xca35, (q15_t)0x7423, (q15_t)0xca30,\n  (q15_t)0x7420, (q15_t)0xca2a, (q15_t)0x741d, (q15_t)0xca24, (q15_t)0x741b, (q15_t)0xca1f, (q15_t)0x7418, (q15_t)0xca19,\n  (q15_t)0x7415, (q15_t)0xca13, (q15_t)0x7413, (q15_t)0xca0d, (q15_t)0x7410, (q15_t)0xca08, (q15_t)0x740d, (q15_t)0xca02,\n  (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x7408, (q15_t)0xc9f7, (q15_t)0x7406, (q15_t)0xc9f1, (q15_t)0x7403, (q15_t)0xc9eb,\n  (q15_t)0x7400, (q15_t)0xc9e6, (q15_t)0x73fe, (q15_t)0xc9e0, (q15_t)0x73fb, (q15_t)0xc9da, (q15_t)0x73f8, (q15_t)0xc9d5,\n  (q15_t)0x73f6, (q15_t)0xc9cf, (q15_t)0x73f3, (q15_t)0xc9c9, (q15_t)0x73f0, (q15_t)0xc9c3, (q15_t)0x73ee, (q15_t)0xc9be,\n  (q15_t)0x73eb, (q15_t)0xc9b8, (q15_t)0x73e8, (q15_t)0xc9b2, (q15_t)0x73e6, (q15_t)0xc9ad, (q15_t)0x73e3, (q15_t)0xc9a7,\n  (q15_t)0x73e0, (q15_t)0xc9a1, (q15_t)0x73de, (q15_t)0xc99c, (q15_t)0x73db, (q15_t)0xc996, (q15_t)0x73d8, (q15_t)0xc990,\n  (q15_t)0x73d6, (q15_t)0xc98b, (q15_t)0x73d3, (q15_t)0xc985, (q15_t)0x73d0, (q15_t)0xc97f, (q15_t)0x73ce, (q15_t)0xc97a,\n  (q15_t)0x73cb, (q15_t)0xc974, (q15_t)0x73c8, (q15_t)0xc96e, (q15_t)0x73c6, (q15_t)0xc968, (q15_t)0x73c3, (q15_t)0xc963,\n  (q15_t)0x73c0, (q15_t)0xc95d, (q15_t)0x73bd, (q15_t)0xc957, (q15_t)0x73bb, (q15_t)0xc952, (q15_t)0x73b8, (q15_t)0xc94c,\n  (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x73b3, (q15_t)0xc941, (q15_t)0x73b0, (q15_t)0xc93b, (q15_t)0x73ad, (q15_t)0xc935,\n  (q15_t)0x73ab, (q15_t)0xc930, (q15_t)0x73a8, (q15_t)0xc92a, (q15_t)0x73a5, (q15_t)0xc924, (q15_t)0x73a3, (q15_t)0xc91f,\n  (q15_t)0x73a0, (q15_t)0xc919, (q15_t)0x739d, (q15_t)0xc913, (q15_t)0x739b, (q15_t)0xc90e, (q15_t)0x7398, (q15_t)0xc908,\n  (q15_t)0x7395, (q15_t)0xc902, (q15_t)0x7392, (q15_t)0xc8fd, (q15_t)0x7390, (q15_t)0xc8f7, (q15_t)0x738d, (q15_t)0xc8f1,\n  (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x7388, (q15_t)0xc8e6, (q15_t)0x7385, (q15_t)0xc8e0, (q15_t)0x7382, (q15_t)0xc8db,\n  (q15_t)0x737f, (q15_t)0xc8d5, (q15_t)0x737d, (q15_t)0xc8cf, (q15_t)0x737a, (q15_t)0xc8ca, (q15_t)0x7377, (q15_t)0xc8c4,\n  (q15_t)0x7375, (q15_t)0xc8be, (q15_t)0x7372, (q15_t)0xc8b9, (q15_t)0x736f, (q15_t)0xc8b3, (q15_t)0x736c, (q15_t)0xc8ad,\n  (q15_t)0x736a, (q15_t)0xc8a8, (q15_t)0x7367, (q15_t)0xc8a2, (q15_t)0x7364, (q15_t)0xc89c, (q15_t)0x7362, (q15_t)0xc897,\n  (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x735c, (q15_t)0xc88b, (q15_t)0x7359, (q15_t)0xc886, (q15_t)0x7357, (q15_t)0xc880,\n  (q15_t)0x7354, (q15_t)0xc87a, (q15_t)0x7351, (q15_t)0xc875, (q15_t)0x734f, (q15_t)0xc86f, (q15_t)0x734c, (q15_t)0xc869,\n  (q15_t)0x7349, (q15_t)0xc864, (q15_t)0x7346, (q15_t)0xc85e, (q15_t)0x7344, (q15_t)0xc858, (q15_t)0x7341, (q15_t)0xc853,\n  (q15_t)0x733e, (q15_t)0xc84d, (q15_t)0x733b, (q15_t)0xc847, (q15_t)0x7339, (q15_t)0xc842, (q15_t)0x7336, (q15_t)0xc83c,\n  (q15_t)0x7333, (q15_t)0xc836, (q15_t)0x7330, (q15_t)0xc831, (q15_t)0x732e, (q15_t)0xc82b, (q15_t)0x732b, (q15_t)0xc825,\n  (q15_t)0x7328, (q15_t)0xc820, (q15_t)0x7326, (q15_t)0xc81a, (q15_t)0x7323, (q15_t)0xc814, (q15_t)0x7320, (q15_t)0xc80f,\n  (q15_t)0x731d, (q15_t)0xc809, (q15_t)0x731b, (q15_t)0xc803, (q15_t)0x7318, (q15_t)0xc7fe, (q15_t)0x7315, (q15_t)0xc7f8,\n  (q15_t)0x7312, (q15_t)0xc7f3, (q15_t)0x7310, (q15_t)0xc7ed, (q15_t)0x730d, (q15_t)0xc7e7, (q15_t)0x730a, (q15_t)0xc7e2,\n  (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x7305, (q15_t)0xc7d6, (q15_t)0x7302, (q15_t)0xc7d1, (q15_t)0x72ff, (q15_t)0xc7cb,\n  (q15_t)0x72fc, (q15_t)0xc7c5, (q15_t)0x72f9, (q15_t)0xc7c0, (q15_t)0x72f7, (q15_t)0xc7ba, (q15_t)0x72f4, (q15_t)0xc7b4,\n  (q15_t)0x72f1, (q15_t)0xc7af, (q15_t)0x72ee, (q15_t)0xc7a9, (q15_t)0x72ec, (q15_t)0xc7a3, (q15_t)0x72e9, (q15_t)0xc79e,\n  (q15_t)0x72e6, (q15_t)0xc798, (q15_t)0x72e3, (q15_t)0xc793, (q15_t)0x72e1, (q15_t)0xc78d, (q15_t)0x72de, (q15_t)0xc787,\n  (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72d8, (q15_t)0xc77c, (q15_t)0x72d5, (q15_t)0xc776, (q15_t)0x72d3, (q15_t)0xc771,\n  (q15_t)0x72d0, (q15_t)0xc76b, (q15_t)0x72cd, (q15_t)0xc765, (q15_t)0x72ca, (q15_t)0xc760, (q15_t)0x72c8, (q15_t)0xc75a,\n  (q15_t)0x72c5, (q15_t)0xc755, (q15_t)0x72c2, (q15_t)0xc74f, (q15_t)0x72bf, (q15_t)0xc749, (q15_t)0x72bc, (q15_t)0xc744,\n  (q15_t)0x72ba, (q15_t)0xc73e, (q15_t)0x72b7, (q15_t)0xc738, (q15_t)0x72b4, (q15_t)0xc733, (q15_t)0x72b1, (q15_t)0xc72d,\n  (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x72ac, (q15_t)0xc722, (q15_t)0x72a9, (q15_t)0xc71c, (q15_t)0x72a6, (q15_t)0xc717,\n  (q15_t)0x72a3, (q15_t)0xc711, (q15_t)0x72a1, (q15_t)0xc70b, (q15_t)0x729e, (q15_t)0xc706, (q15_t)0x729b, (q15_t)0xc700,\n  (q15_t)0x7298, (q15_t)0xc6fa, (q15_t)0x7295, (q15_t)0xc6f5, (q15_t)0x7293, (q15_t)0xc6ef, (q15_t)0x7290, (q15_t)0xc6ea,\n  (q15_t)0x728d, (q15_t)0xc6e4, (q15_t)0x728a, (q15_t)0xc6de, (q15_t)0x7287, (q15_t)0xc6d9, (q15_t)0x7285, (q15_t)0xc6d3,\n  (q15_t)0x7282, (q15_t)0xc6ce, (q15_t)0x727f, (q15_t)0xc6c8, (q15_t)0x727c, (q15_t)0xc6c2, (q15_t)0x7279, (q15_t)0xc6bd,\n  (q15_t)0x7276, (q15_t)0xc6b7, (q15_t)0x7274, (q15_t)0xc6b1, (q15_t)0x7271, (q15_t)0xc6ac, (q15_t)0x726e, (q15_t)0xc6a6,\n  (q15_t)0x726b, (q15_t)0xc6a1, (q15_t)0x7268, (q15_t)0xc69b, (q15_t)0x7266, (q15_t)0xc695, (q15_t)0x7263, (q15_t)0xc690,\n  (q15_t)0x7260, (q15_t)0xc68a, (q15_t)0x725d, (q15_t)0xc684, (q15_t)0x725a, (q15_t)0xc67f, (q15_t)0x7257, (q15_t)0xc679,\n  (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7252, (q15_t)0xc66e, (q15_t)0x724f, (q15_t)0xc668, (q15_t)0x724c, (q15_t)0xc663,\n  (q15_t)0x7249, (q15_t)0xc65d, (q15_t)0x7247, (q15_t)0xc658, (q15_t)0x7244, (q15_t)0xc652, (q15_t)0x7241, (q15_t)0xc64c,\n  (q15_t)0x723e, (q15_t)0xc647, (q15_t)0x723b, (q15_t)0xc641, (q15_t)0x7238, (q15_t)0xc63c, (q15_t)0x7236, (q15_t)0xc636,\n  (q15_t)0x7233, (q15_t)0xc630, (q15_t)0x7230, (q15_t)0xc62b, (q15_t)0x722d, (q15_t)0xc625, (q15_t)0x722a, (q15_t)0xc620,\n  (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x7224, (q15_t)0xc614, (q15_t)0x7222, (q15_t)0xc60f, (q15_t)0x721f, (q15_t)0xc609,\n  (q15_t)0x721c, (q15_t)0xc603, (q15_t)0x7219, (q15_t)0xc5fe, (q15_t)0x7216, (q15_t)0xc5f8, (q15_t)0x7213, (q15_t)0xc5f3,\n  (q15_t)0x7211, (q15_t)0xc5ed, (q15_t)0x720e, (q15_t)0xc5e7, (q15_t)0x720b, (q15_t)0xc5e2, (q15_t)0x7208, (q15_t)0xc5dc,\n  (q15_t)0x7205, (q15_t)0xc5d7, (q15_t)0x7202, (q15_t)0xc5d1, (q15_t)0x71ff, (q15_t)0xc5cc, (q15_t)0x71fd, (q15_t)0xc5c6,\n  (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71f7, (q15_t)0xc5bb, (q15_t)0x71f4, (q15_t)0xc5b5, (q15_t)0x71f1, (q15_t)0xc5b0,\n  (q15_t)0x71ee, (q15_t)0xc5aa, (q15_t)0x71eb, (q15_t)0xc5a4, (q15_t)0x71e9, (q15_t)0xc59f, (q15_t)0x71e6, (q15_t)0xc599,\n  (q15_t)0x71e3, (q15_t)0xc594, (q15_t)0x71e0, (q15_t)0xc58e, (q15_t)0x71dd, (q15_t)0xc588, (q15_t)0x71da, (q15_t)0xc583,\n  (q15_t)0x71d7, (q15_t)0xc57d, (q15_t)0x71d4, (q15_t)0xc578, (q15_t)0x71d2, (q15_t)0xc572, (q15_t)0x71cf, (q15_t)0xc56c,\n  (q15_t)0x71cc, (q15_t)0xc567, (q15_t)0x71c9, (q15_t)0xc561, (q15_t)0x71c6, (q15_t)0xc55c, (q15_t)0x71c3, (q15_t)0xc556,\n  (q15_t)0x71c0, (q15_t)0xc551, (q15_t)0x71bd, (q15_t)0xc54b, (q15_t)0x71bb, (q15_t)0xc545, (q15_t)0x71b8, (q15_t)0xc540,\n  (q15_t)0x71b5, (q15_t)0xc53a, (q15_t)0x71b2, (q15_t)0xc535, (q15_t)0x71af, (q15_t)0xc52f, (q15_t)0x71ac, (q15_t)0xc529,\n  (q15_t)0x71a9, (q15_t)0xc524, (q15_t)0x71a6, (q15_t)0xc51e, (q15_t)0x71a3, (q15_t)0xc519, (q15_t)0x71a1, (q15_t)0xc513,\n  (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x719b, (q15_t)0xc508, (q15_t)0x7198, (q15_t)0xc502, (q15_t)0x7195, (q15_t)0xc4fd,\n  (q15_t)0x7192, (q15_t)0xc4f7, (q15_t)0x718f, (q15_t)0xc4f2, (q15_t)0x718c, (q15_t)0xc4ec, (q15_t)0x7189, (q15_t)0xc4e7,\n  (q15_t)0x7186, (q15_t)0xc4e1, (q15_t)0x7184, (q15_t)0xc4db, (q15_t)0x7181, (q15_t)0xc4d6, (q15_t)0x717e, (q15_t)0xc4d0,\n  (q15_t)0x717b, (q15_t)0xc4cb, (q15_t)0x7178, (q15_t)0xc4c5, (q15_t)0x7175, (q15_t)0xc4c0, (q15_t)0x7172, (q15_t)0xc4ba,\n  (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x716c, (q15_t)0xc4af, (q15_t)0x7169, (q15_t)0xc4a9, (q15_t)0x7167, (q15_t)0xc4a4,\n  (q15_t)0x7164, (q15_t)0xc49e, (q15_t)0x7161, (q15_t)0xc499, (q15_t)0x715e, (q15_t)0xc493, (q15_t)0x715b, (q15_t)0xc48d,\n  (q15_t)0x7158, (q15_t)0xc488, (q15_t)0x7155, (q15_t)0xc482, (q15_t)0x7152, (q15_t)0xc47d, (q15_t)0x714f, (q15_t)0xc477,\n  (q15_t)0x714c, (q15_t)0xc472, (q15_t)0x7149, (q15_t)0xc46c, (q15_t)0x7146, (q15_t)0xc467, (q15_t)0x7143, (q15_t)0xc461,\n  (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x713e, (q15_t)0xc456, (q15_t)0x713b, (q15_t)0xc450, (q15_t)0x7138, (q15_t)0xc44b,\n  (q15_t)0x7135, (q15_t)0xc445, (q15_t)0x7132, (q15_t)0xc440, (q15_t)0x712f, (q15_t)0xc43a, (q15_t)0x712c, (q15_t)0xc434,\n  (q15_t)0x7129, (q15_t)0xc42f, (q15_t)0x7126, (q15_t)0xc429, (q15_t)0x7123, (q15_t)0xc424, (q15_t)0x7120, (q15_t)0xc41e,\n  (q15_t)0x711d, (q15_t)0xc419, (q15_t)0x711a, (q15_t)0xc413, (q15_t)0x7117, (q15_t)0xc40e, (q15_t)0x7114, (q15_t)0xc408,\n  (q15_t)0x7112, (q15_t)0xc403, (q15_t)0x710f, (q15_t)0xc3fd, (q15_t)0x710c, (q15_t)0xc3f7, (q15_t)0x7109, (q15_t)0xc3f2,\n  (q15_t)0x7106, (q15_t)0xc3ec, (q15_t)0x7103, (q15_t)0xc3e7, (q15_t)0x7100, (q15_t)0xc3e1, (q15_t)0x70fd, (q15_t)0xc3dc,\n  (q15_t)0x70fa, (q15_t)0xc3d6, (q15_t)0x70f7, (q15_t)0xc3d1, (q15_t)0x70f4, (q15_t)0xc3cb, (q15_t)0x70f1, (q15_t)0xc3c5,\n  (q15_t)0x70ee, (q15_t)0xc3c0, (q15_t)0x70eb, (q15_t)0xc3ba, (q15_t)0x70e8, (q15_t)0xc3b5, (q15_t)0x70e5, (q15_t)0xc3af,\n  (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70df, (q15_t)0xc3a4, (q15_t)0x70dc, (q15_t)0xc39f, (q15_t)0x70d9, (q15_t)0xc399,\n  (q15_t)0x70d6, (q15_t)0xc394, (q15_t)0x70d3, (q15_t)0xc38e, (q15_t)0x70d1, (q15_t)0xc389, (q15_t)0x70ce, (q15_t)0xc383,\n  (q15_t)0x70cb, (q15_t)0xc37d, (q15_t)0x70c8, (q15_t)0xc378, (q15_t)0x70c5, (q15_t)0xc372, (q15_t)0x70c2, (q15_t)0xc36d,\n  (q15_t)0x70bf, (q15_t)0xc367, (q15_t)0x70bc, (q15_t)0xc362, (q15_t)0x70b9, (q15_t)0xc35c, (q15_t)0x70b6, (q15_t)0xc357,\n  (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x70b0, (q15_t)0xc34c, (q15_t)0x70ad, (q15_t)0xc346, (q15_t)0x70aa, (q15_t)0xc341,\n  (q15_t)0x70a7, (q15_t)0xc33b, (q15_t)0x70a4, (q15_t)0xc336, (q15_t)0x70a1, (q15_t)0xc330, (q15_t)0x709e, (q15_t)0xc32a,\n  (q15_t)0x709b, (q15_t)0xc325, (q15_t)0x7098, (q15_t)0xc31f, (q15_t)0x7095, (q15_t)0xc31a, (q15_t)0x7092, (q15_t)0xc314,\n  (q15_t)0x708f, (q15_t)0xc30f, (q15_t)0x708c, (q15_t)0xc309, (q15_t)0x7089, (q15_t)0xc304, (q15_t)0x7086, (q15_t)0xc2fe,\n  (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7080, (q15_t)0xc2f3, (q15_t)0x707d, (q15_t)0xc2ee, (q15_t)0x707a, (q15_t)0xc2e8,\n  (q15_t)0x7077, (q15_t)0xc2e3, (q15_t)0x7074, (q15_t)0xc2dd, (q15_t)0x7071, (q15_t)0xc2d8, (q15_t)0x706e, (q15_t)0xc2d2,\n  (q15_t)0x706b, (q15_t)0xc2cd, (q15_t)0x7068, (q15_t)0xc2c7, (q15_t)0x7065, (q15_t)0xc2c2, (q15_t)0x7062, (q15_t)0xc2bc,\n  (q15_t)0x705f, (q15_t)0xc2b7, (q15_t)0x705c, (q15_t)0xc2b1, (q15_t)0x7059, (q15_t)0xc2ab, (q15_t)0x7056, (q15_t)0xc2a6,\n  (q15_t)0x7053, (q15_t)0xc2a0, (q15_t)0x7050, (q15_t)0xc29b, (q15_t)0x704d, (q15_t)0xc295, (q15_t)0x704a, (q15_t)0xc290,\n  (q15_t)0x7047, (q15_t)0xc28a, (q15_t)0x7044, (q15_t)0xc285, (q15_t)0x7041, (q15_t)0xc27f, (q15_t)0x703e, (q15_t)0xc27a,\n  (q15_t)0x703b, (q15_t)0xc274, (q15_t)0x7038, (q15_t)0xc26f, (q15_t)0x7035, (q15_t)0xc269, (q15_t)0x7032, (q15_t)0xc264,\n  (q15_t)0x702f, (q15_t)0xc25e, (q15_t)0x702c, (q15_t)0xc259, (q15_t)0x7029, (q15_t)0xc253, (q15_t)0x7026, (q15_t)0xc24e,\n  (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x7020, (q15_t)0xc243, (q15_t)0x701d, (q15_t)0xc23d, (q15_t)0x7019, (q15_t)0xc238,\n  (q15_t)0x7016, (q15_t)0xc232, (q15_t)0x7013, (q15_t)0xc22d, (q15_t)0x7010, (q15_t)0xc227, (q15_t)0x700d, (q15_t)0xc222,\n  (q15_t)0x700a, (q15_t)0xc21c, (q15_t)0x7007, (q15_t)0xc217, (q15_t)0x7004, (q15_t)0xc211, (q15_t)0x7001, (q15_t)0xc20c,\n  (q15_t)0x6ffe, (q15_t)0xc206, (q15_t)0x6ffb, (q15_t)0xc201, (q15_t)0x6ff8, (q15_t)0xc1fb, (q15_t)0x6ff5, (q15_t)0xc1f6,\n  (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fef, (q15_t)0xc1eb, (q15_t)0x6fec, (q15_t)0xc1e5, (q15_t)0x6fe9, (q15_t)0xc1e0,\n  (q15_t)0x6fe6, (q15_t)0xc1da, (q15_t)0x6fe3, (q15_t)0xc1d5, (q15_t)0x6fe0, (q15_t)0xc1cf, (q15_t)0x6fdd, (q15_t)0xc1ca,\n  (q15_t)0x6fda, (q15_t)0xc1c4, (q15_t)0x6fd6, (q15_t)0xc1bf, (q15_t)0x6fd3, (q15_t)0xc1b9, (q15_t)0x6fd0, (q15_t)0xc1b4,\n  (q15_t)0x6fcd, (q15_t)0xc1ae, (q15_t)0x6fca, (q15_t)0xc1a9, (q15_t)0x6fc7, (q15_t)0xc1a3, (q15_t)0x6fc4, (q15_t)0xc19e,\n  (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6fbe, (q15_t)0xc193, (q15_t)0x6fbb, (q15_t)0xc18d, (q15_t)0x6fb8, (q15_t)0xc188,\n  (q15_t)0x6fb5, (q15_t)0xc183, (q15_t)0x6fb2, (q15_t)0xc17d, (q15_t)0x6faf, (q15_t)0xc178, (q15_t)0x6fac, (q15_t)0xc172,\n  (q15_t)0x6fa9, (q15_t)0xc16d, (q15_t)0x6fa5, (q15_t)0xc167, (q15_t)0x6fa2, (q15_t)0xc162, (q15_t)0x6f9f, (q15_t)0xc15c,\n  (q15_t)0x6f9c, (q15_t)0xc157, (q15_t)0x6f99, (q15_t)0xc151, (q15_t)0x6f96, (q15_t)0xc14c, (q15_t)0x6f93, (q15_t)0xc146,\n  (q15_t)0x6f90, (q15_t)0xc141, (q15_t)0x6f8d, (q15_t)0xc13b, (q15_t)0x6f8a, (q15_t)0xc136, (q15_t)0x6f87, (q15_t)0xc130,\n  (q15_t)0x6f84, (q15_t)0xc12b, (q15_t)0x6f81, (q15_t)0xc125, (q15_t)0x6f7d, (q15_t)0xc120, (q15_t)0x6f7a, (q15_t)0xc11a,\n  (q15_t)0x6f77, (q15_t)0xc115, (q15_t)0x6f74, (q15_t)0xc10f, (q15_t)0x6f71, (q15_t)0xc10a, (q15_t)0x6f6e, (q15_t)0xc105,\n  (q15_t)0x6f6b, (q15_t)0xc0ff, (q15_t)0x6f68, (q15_t)0xc0fa, (q15_t)0x6f65, (q15_t)0xc0f4, (q15_t)0x6f62, (q15_t)0xc0ef,\n  (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f5b, (q15_t)0xc0e4, (q15_t)0x6f58, (q15_t)0xc0de, (q15_t)0x6f55, (q15_t)0xc0d9,\n  (q15_t)0x6f52, (q15_t)0xc0d3, (q15_t)0x6f4f, (q15_t)0xc0ce, (q15_t)0x6f4c, (q15_t)0xc0c8, (q15_t)0x6f49, (q15_t)0xc0c3,\n  (q15_t)0x6f46, (q15_t)0xc0bd, (q15_t)0x6f43, (q15_t)0xc0b8, (q15_t)0x6f3f, (q15_t)0xc0b3, (q15_t)0x6f3c, (q15_t)0xc0ad,\n  (q15_t)0x6f39, (q15_t)0xc0a8, (q15_t)0x6f36, (q15_t)0xc0a2, (q15_t)0x6f33, (q15_t)0xc09d, (q15_t)0x6f30, (q15_t)0xc097,\n  (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6f2a, (q15_t)0xc08c, (q15_t)0x6f27, (q15_t)0xc087, (q15_t)0x6f23, (q15_t)0xc081,\n  (q15_t)0x6f20, (q15_t)0xc07c, (q15_t)0x6f1d, (q15_t)0xc077, (q15_t)0x6f1a, (q15_t)0xc071, (q15_t)0x6f17, (q15_t)0xc06c,\n  (q15_t)0x6f14, (q15_t)0xc066, (q15_t)0x6f11, (q15_t)0xc061, (q15_t)0x6f0e, (q15_t)0xc05b, (q15_t)0x6f0b, (q15_t)0xc056,\n  (q15_t)0x6f07, (q15_t)0xc050, (q15_t)0x6f04, (q15_t)0xc04b, (q15_t)0x6f01, (q15_t)0xc045, (q15_t)0x6efe, (q15_t)0xc040,\n  (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6ef8, (q15_t)0xc035, (q15_t)0x6ef5, (q15_t)0xc030, (q15_t)0x6ef1, (q15_t)0xc02a,\n  (q15_t)0x6eee, (q15_t)0xc025, (q15_t)0x6eeb, (q15_t)0xc01f, (q15_t)0x6ee8, (q15_t)0xc01a, (q15_t)0x6ee5, (q15_t)0xc014,\n  (q15_t)0x6ee2, (q15_t)0xc00f, (q15_t)0x6edf, (q15_t)0xc00a, (q15_t)0x6edc, (q15_t)0xc004, (q15_t)0x6ed8, (q15_t)0xbfff,\n  (q15_t)0x6ed5, (q15_t)0xbff9, (q15_t)0x6ed2, (q15_t)0xbff4, (q15_t)0x6ecf, (q15_t)0xbfee, (q15_t)0x6ecc, (q15_t)0xbfe9,\n  (q15_t)0x6ec9, (q15_t)0xbfe3, (q15_t)0x6ec6, (q15_t)0xbfde, (q15_t)0x6ec2, (q15_t)0xbfd9, (q15_t)0x6ebf, (q15_t)0xbfd3,\n  (q15_t)0x6ebc, (q15_t)0xbfce, (q15_t)0x6eb9, (q15_t)0xbfc8, (q15_t)0x6eb6, (q15_t)0xbfc3, (q15_t)0x6eb3, (q15_t)0xbfbd,\n  (q15_t)0x6eaf, (q15_t)0xbfb8, (q15_t)0x6eac, (q15_t)0xbfb3, (q15_t)0x6ea9, (q15_t)0xbfad, (q15_t)0x6ea6, (q15_t)0xbfa8,\n  (q15_t)0x6ea3, (q15_t)0xbfa2, (q15_t)0x6ea0, (q15_t)0xbf9d, (q15_t)0x6e9c, (q15_t)0xbf97, (q15_t)0x6e99, (q15_t)0xbf92,\n  (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e93, (q15_t)0xbf87, (q15_t)0x6e90, (q15_t)0xbf82, (q15_t)0x6e8d, (q15_t)0xbf7c,\n  (q15_t)0x6e89, (q15_t)0xbf77, (q15_t)0x6e86, (q15_t)0xbf71, (q15_t)0x6e83, (q15_t)0xbf6c, (q15_t)0x6e80, (q15_t)0xbf67,\n  (q15_t)0x6e7d, (q15_t)0xbf61, (q15_t)0x6e7a, (q15_t)0xbf5c, (q15_t)0x6e76, (q15_t)0xbf56, (q15_t)0x6e73, (q15_t)0xbf51,\n  (q15_t)0x6e70, (q15_t)0xbf4b, (q15_t)0x6e6d, (q15_t)0xbf46, (q15_t)0x6e6a, (q15_t)0xbf41, (q15_t)0x6e67, (q15_t)0xbf3b,\n  (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e60, (q15_t)0xbf30, (q15_t)0x6e5d, (q15_t)0xbf2b, (q15_t)0x6e5a, (q15_t)0xbf26,\n  (q15_t)0x6e57, (q15_t)0xbf20, (q15_t)0x6e53, (q15_t)0xbf1b, (q15_t)0x6e50, (q15_t)0xbf15, (q15_t)0x6e4d, (q15_t)0xbf10,\n  (q15_t)0x6e4a, (q15_t)0xbf0a, (q15_t)0x6e47, (q15_t)0xbf05, (q15_t)0x6e44, (q15_t)0xbf00, (q15_t)0x6e40, (q15_t)0xbefa,\n  (q15_t)0x6e3d, (q15_t)0xbef5, (q15_t)0x6e3a, (q15_t)0xbeef, (q15_t)0x6e37, (q15_t)0xbeea, (q15_t)0x6e34, (q15_t)0xbee5,\n  (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6e2d, (q15_t)0xbeda, (q15_t)0x6e2a, (q15_t)0xbed4, (q15_t)0x6e27, (q15_t)0xbecf,\n  (q15_t)0x6e24, (q15_t)0xbeca, (q15_t)0x6e20, (q15_t)0xbec4, (q15_t)0x6e1d, (q15_t)0xbebf, (q15_t)0x6e1a, (q15_t)0xbeb9,\n  (q15_t)0x6e17, (q15_t)0xbeb4, (q15_t)0x6e14, (q15_t)0xbeae, (q15_t)0x6e10, (q15_t)0xbea9, (q15_t)0x6e0d, (q15_t)0xbea4,\n  (q15_t)0x6e0a, (q15_t)0xbe9e, (q15_t)0x6e07, (q15_t)0xbe99, (q15_t)0x6e04, (q15_t)0xbe93, (q15_t)0x6e00, (q15_t)0xbe8e,\n  (q15_t)0x6dfd, (q15_t)0xbe89, (q15_t)0x6dfa, (q15_t)0xbe83, (q15_t)0x6df7, (q15_t)0xbe7e, (q15_t)0x6df3, (q15_t)0xbe78,\n  (q15_t)0x6df0, (q15_t)0xbe73, (q15_t)0x6ded, (q15_t)0xbe6e, (q15_t)0x6dea, (q15_t)0xbe68, (q15_t)0x6de7, (q15_t)0xbe63,\n  (q15_t)0x6de3, (q15_t)0xbe5e, (q15_t)0x6de0, (q15_t)0xbe58, (q15_t)0x6ddd, (q15_t)0xbe53, (q15_t)0x6dda, (q15_t)0xbe4d,\n  (q15_t)0x6dd6, (q15_t)0xbe48, (q15_t)0x6dd3, (q15_t)0xbe43, (q15_t)0x6dd0, (q15_t)0xbe3d, (q15_t)0x6dcd, (q15_t)0xbe38,\n  (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6dc6, (q15_t)0xbe2d, (q15_t)0x6dc3, (q15_t)0xbe28, (q15_t)0x6dc0, (q15_t)0xbe22,\n  (q15_t)0x6dbd, (q15_t)0xbe1d, (q15_t)0x6db9, (q15_t)0xbe17, (q15_t)0x6db6, (q15_t)0xbe12, (q15_t)0x6db3, (q15_t)0xbe0d,\n  (q15_t)0x6db0, (q15_t)0xbe07, (q15_t)0x6dac, (q15_t)0xbe02, (q15_t)0x6da9, (q15_t)0xbdfd, (q15_t)0x6da6, (q15_t)0xbdf7,\n  (q15_t)0x6da3, (q15_t)0xbdf2, (q15_t)0x6d9f, (q15_t)0xbdec, (q15_t)0x6d9c, (q15_t)0xbde7, (q15_t)0x6d99, (q15_t)0xbde2,\n  (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d92, (q15_t)0xbdd7, (q15_t)0x6d8f, (q15_t)0xbdd1, (q15_t)0x6d8c, (q15_t)0xbdcc,\n  (q15_t)0x6d89, (q15_t)0xbdc7, (q15_t)0x6d85, (q15_t)0xbdc1, (q15_t)0x6d82, (q15_t)0xbdbc, (q15_t)0x6d7f, (q15_t)0xbdb7,\n  (q15_t)0x6d7c, (q15_t)0xbdb1, (q15_t)0x6d78, (q15_t)0xbdac, (q15_t)0x6d75, (q15_t)0xbda6, (q15_t)0x6d72, (q15_t)0xbda1,\n  (q15_t)0x6d6f, (q15_t)0xbd9c, (q15_t)0x6d6b, (q15_t)0xbd96, (q15_t)0x6d68, (q15_t)0xbd91, (q15_t)0x6d65, (q15_t)0xbd8c,\n  (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d5e, (q15_t)0xbd81, (q15_t)0x6d5b, (q15_t)0xbd7c, (q15_t)0x6d58, (q15_t)0xbd76,\n  (q15_t)0x6d55, (q15_t)0xbd71, (q15_t)0x6d51, (q15_t)0xbd6b, (q15_t)0x6d4e, (q15_t)0xbd66, (q15_t)0x6d4b, (q15_t)0xbd61,\n  (q15_t)0x6d48, (q15_t)0xbd5b, (q15_t)0x6d44, (q15_t)0xbd56, (q15_t)0x6d41, (q15_t)0xbd51, (q15_t)0x6d3e, (q15_t)0xbd4b,\n  (q15_t)0x6d3a, (q15_t)0xbd46, (q15_t)0x6d37, (q15_t)0xbd40, (q15_t)0x6d34, (q15_t)0xbd3b, (q15_t)0x6d31, (q15_t)0xbd36,\n  (q15_t)0x6d2d, (q15_t)0xbd30, (q15_t)0x6d2a, (q15_t)0xbd2b, (q15_t)0x6d27, (q15_t)0xbd26, (q15_t)0x6d23, (q15_t)0xbd20,\n  (q15_t)0x6d20, (q15_t)0xbd1b, (q15_t)0x6d1d, (q15_t)0xbd16, (q15_t)0x6d1a, (q15_t)0xbd10, (q15_t)0x6d16, (q15_t)0xbd0b,\n  (q15_t)0x6d13, (q15_t)0xbd06, (q15_t)0x6d10, (q15_t)0xbd00, (q15_t)0x6d0c, (q15_t)0xbcfb, (q15_t)0x6d09, (q15_t)0xbcf5,\n  (q15_t)0x6d06, (q15_t)0xbcf0, (q15_t)0x6d03, (q15_t)0xbceb, (q15_t)0x6cff, (q15_t)0xbce5, (q15_t)0x6cfc, (q15_t)0xbce0,\n  (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cf5, (q15_t)0xbcd5, (q15_t)0x6cf2, (q15_t)0xbcd0, (q15_t)0x6cef, (q15_t)0xbccb,\n  (q15_t)0x6cec, (q15_t)0xbcc5, (q15_t)0x6ce8, (q15_t)0xbcc0, (q15_t)0x6ce5, (q15_t)0xbcbb, (q15_t)0x6ce2, (q15_t)0xbcb5,\n  (q15_t)0x6cde, (q15_t)0xbcb0, (q15_t)0x6cdb, (q15_t)0xbcab, (q15_t)0x6cd8, (q15_t)0xbca5, (q15_t)0x6cd4, (q15_t)0xbca0,\n  (q15_t)0x6cd1, (q15_t)0xbc9b, (q15_t)0x6cce, (q15_t)0xbc95, (q15_t)0x6cca, (q15_t)0xbc90, (q15_t)0x6cc7, (q15_t)0xbc8b,\n  (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6cc1, (q15_t)0xbc80, (q15_t)0x6cbd, (q15_t)0xbc7b, (q15_t)0x6cba, (q15_t)0xbc75,\n  (q15_t)0x6cb7, (q15_t)0xbc70, (q15_t)0x6cb3, (q15_t)0xbc6b, (q15_t)0x6cb0, (q15_t)0xbc65, (q15_t)0x6cad, (q15_t)0xbc60,\n  (q15_t)0x6ca9, (q15_t)0xbc5b, (q15_t)0x6ca6, (q15_t)0xbc55, (q15_t)0x6ca3, (q15_t)0xbc50, (q15_t)0x6c9f, (q15_t)0xbc4b,\n  (q15_t)0x6c9c, (q15_t)0xbc45, (q15_t)0x6c99, (q15_t)0xbc40, (q15_t)0x6c95, (q15_t)0xbc3b, (q15_t)0x6c92, (q15_t)0xbc35,\n  (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c8b, (q15_t)0xbc2b, (q15_t)0x6c88, (q15_t)0xbc25, (q15_t)0x6c85, (q15_t)0xbc20,\n  (q15_t)0x6c81, (q15_t)0xbc1b, (q15_t)0x6c7e, (q15_t)0xbc15, (q15_t)0x6c7b, (q15_t)0xbc10, (q15_t)0x6c77, (q15_t)0xbc0b,\n  (q15_t)0x6c74, (q15_t)0xbc05, (q15_t)0x6c71, (q15_t)0xbc00, (q15_t)0x6c6d, (q15_t)0xbbfb, (q15_t)0x6c6a, (q15_t)0xbbf5,\n  (q15_t)0x6c67, (q15_t)0xbbf0, (q15_t)0x6c63, (q15_t)0xbbeb, (q15_t)0x6c60, (q15_t)0xbbe5, (q15_t)0x6c5d, (q15_t)0xbbe0,\n  (q15_t)0x6c59, (q15_t)0xbbdb, (q15_t)0x6c56, (q15_t)0xbbd5, (q15_t)0x6c53, (q15_t)0xbbd0, (q15_t)0x6c4f, (q15_t)0xbbcb,\n  (q15_t)0x6c4c, (q15_t)0xbbc5, (q15_t)0x6c49, (q15_t)0xbbc0, (q15_t)0x6c45, (q15_t)0xbbbb, (q15_t)0x6c42, (q15_t)0xbbb5,\n  (q15_t)0x6c3f, (q15_t)0xbbb0, (q15_t)0x6c3b, (q15_t)0xbbab, (q15_t)0x6c38, (q15_t)0xbba6, (q15_t)0x6c34, (q15_t)0xbba0,\n  (q15_t)0x6c31, (q15_t)0xbb9b, (q15_t)0x6c2e, (q15_t)0xbb96, (q15_t)0x6c2a, (q15_t)0xbb90, (q15_t)0x6c27, (q15_t)0xbb8b,\n  (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6c20, (q15_t)0xbb80, (q15_t)0x6c1d, (q15_t)0xbb7b, (q15_t)0x6c1a, (q15_t)0xbb76,\n  (q15_t)0x6c16, (q15_t)0xbb70, (q15_t)0x6c13, (q15_t)0xbb6b, (q15_t)0x6c0f, (q15_t)0xbb66, (q15_t)0x6c0c, (q15_t)0xbb61,\n  (q15_t)0x6c09, (q15_t)0xbb5b, (q15_t)0x6c05, (q15_t)0xbb56, (q15_t)0x6c02, (q15_t)0xbb51, (q15_t)0x6bff, (q15_t)0xbb4b,\n  (q15_t)0x6bfb, (q15_t)0xbb46, (q15_t)0x6bf8, (q15_t)0xbb41, (q15_t)0x6bf5, (q15_t)0xbb3b, (q15_t)0x6bf1, (q15_t)0xbb36,\n  (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6bea, (q15_t)0xbb2c, (q15_t)0x6be7, (q15_t)0xbb26, (q15_t)0x6be4, (q15_t)0xbb21,\n  (q15_t)0x6be0, (q15_t)0xbb1c, (q15_t)0x6bdd, (q15_t)0xbb16, (q15_t)0x6bd9, (q15_t)0xbb11, (q15_t)0x6bd6, (q15_t)0xbb0c,\n  (q15_t)0x6bd3, (q15_t)0xbb06, (q15_t)0x6bcf, (q15_t)0xbb01, (q15_t)0x6bcc, (q15_t)0xbafc, (q15_t)0x6bc9, (q15_t)0xbaf7,\n  (q15_t)0x6bc5, (q15_t)0xbaf1, (q15_t)0x6bc2, (q15_t)0xbaec, (q15_t)0x6bbe, (q15_t)0xbae7, (q15_t)0x6bbb, (q15_t)0xbae1,\n  (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6bb4, (q15_t)0xbad7, (q15_t)0x6bb1, (q15_t)0xbad2, (q15_t)0x6bad, (q15_t)0xbacc,\n  (q15_t)0x6baa, (q15_t)0xbac7, (q15_t)0x6ba7, (q15_t)0xbac2, (q15_t)0x6ba3, (q15_t)0xbabc, (q15_t)0x6ba0, (q15_t)0xbab7,\n  (q15_t)0x6b9c, (q15_t)0xbab2, (q15_t)0x6b99, (q15_t)0xbaad, (q15_t)0x6b96, (q15_t)0xbaa7, (q15_t)0x6b92, (q15_t)0xbaa2,\n  (q15_t)0x6b8f, (q15_t)0xba9d, (q15_t)0x6b8b, (q15_t)0xba97, (q15_t)0x6b88, (q15_t)0xba92, (q15_t)0x6b85, (q15_t)0xba8d,\n  (q15_t)0x6b81, (q15_t)0xba88, (q15_t)0x6b7e, (q15_t)0xba82, (q15_t)0x6b7a, (q15_t)0xba7d, (q15_t)0x6b77, (q15_t)0xba78,\n  (q15_t)0x6b73, (q15_t)0xba73, (q15_t)0x6b70, (q15_t)0xba6d, (q15_t)0x6b6d, (q15_t)0xba68, (q15_t)0x6b69, (q15_t)0xba63,\n  (q15_t)0x6b66, (q15_t)0xba5d, (q15_t)0x6b62, (q15_t)0xba58, (q15_t)0x6b5f, (q15_t)0xba53, (q15_t)0x6b5c, (q15_t)0xba4e,\n  (q15_t)0x6b58, (q15_t)0xba48, (q15_t)0x6b55, (q15_t)0xba43, (q15_t)0x6b51, (q15_t)0xba3e, (q15_t)0x6b4e, (q15_t)0xba39,\n  (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b47, (q15_t)0xba2e, (q15_t)0x6b44, (q15_t)0xba29, (q15_t)0x6b40, (q15_t)0xba23,\n  (q15_t)0x6b3d, (q15_t)0xba1e, (q15_t)0x6b39, (q15_t)0xba19, (q15_t)0x6b36, (q15_t)0xba14, (q15_t)0x6b32, (q15_t)0xba0e,\n  (q15_t)0x6b2f, (q15_t)0xba09, (q15_t)0x6b2c, (q15_t)0xba04, (q15_t)0x6b28, (q15_t)0xb9ff, (q15_t)0x6b25, (q15_t)0xb9f9,\n  (q15_t)0x6b21, (q15_t)0xb9f4, (q15_t)0x6b1e, (q15_t)0xb9ef, (q15_t)0x6b1a, (q15_t)0xb9ea, (q15_t)0x6b17, (q15_t)0xb9e4,\n  (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6b10, (q15_t)0xb9da, (q15_t)0x6b0d, (q15_t)0xb9d5, (q15_t)0x6b09, (q15_t)0xb9cf,\n  (q15_t)0x6b06, (q15_t)0xb9ca, (q15_t)0x6b02, (q15_t)0xb9c5, (q15_t)0x6aff, (q15_t)0xb9c0, (q15_t)0x6afb, (q15_t)0xb9ba,\n  (q15_t)0x6af8, (q15_t)0xb9b5, (q15_t)0x6af4, (q15_t)0xb9b0, (q15_t)0x6af1, (q15_t)0xb9ab, (q15_t)0x6aee, (q15_t)0xb9a5,\n  (q15_t)0x6aea, (q15_t)0xb9a0, (q15_t)0x6ae7, (q15_t)0xb99b, (q15_t)0x6ae3, (q15_t)0xb996, (q15_t)0x6ae0, (q15_t)0xb990,\n  (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6ad9, (q15_t)0xb986, (q15_t)0x6ad5, (q15_t)0xb981, (q15_t)0x6ad2, (q15_t)0xb97b,\n  (q15_t)0x6ace, (q15_t)0xb976, (q15_t)0x6acb, (q15_t)0xb971, (q15_t)0x6ac8, (q15_t)0xb96c, (q15_t)0x6ac4, (q15_t)0xb966,\n  (q15_t)0x6ac1, (q15_t)0xb961, (q15_t)0x6abd, (q15_t)0xb95c, (q15_t)0x6aba, (q15_t)0xb957, (q15_t)0x6ab6, (q15_t)0xb951,\n  (q15_t)0x6ab3, (q15_t)0xb94c, (q15_t)0x6aaf, (q15_t)0xb947, (q15_t)0x6aac, (q15_t)0xb942, (q15_t)0x6aa8, (q15_t)0xb93c,\n  (q15_t)0x6aa5, (q15_t)0xb937, (q15_t)0x6aa1, (q15_t)0xb932, (q15_t)0x6a9e, (q15_t)0xb92d, (q15_t)0x6a9a, (q15_t)0xb928,\n  (q15_t)0x6a97, (q15_t)0xb922, (q15_t)0x6a93, (q15_t)0xb91d, (q15_t)0x6a90, (q15_t)0xb918, (q15_t)0x6a8c, (q15_t)0xb913,\n  (q15_t)0x6a89, (q15_t)0xb90d, (q15_t)0x6a86, (q15_t)0xb908, (q15_t)0x6a82, (q15_t)0xb903, (q15_t)0x6a7f, (q15_t)0xb8fe,\n  (q15_t)0x6a7b, (q15_t)0xb8f8, (q15_t)0x6a78, (q15_t)0xb8f3, (q15_t)0x6a74, (q15_t)0xb8ee, (q15_t)0x6a71, (q15_t)0xb8e9,\n  (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a6a, (q15_t)0xb8de, (q15_t)0x6a66, (q15_t)0xb8d9, (q15_t)0x6a63, (q15_t)0xb8d4,\n  (q15_t)0x6a5f, (q15_t)0xb8cf, (q15_t)0x6a5c, (q15_t)0xb8c9, (q15_t)0x6a58, (q15_t)0xb8c4, (q15_t)0x6a55, (q15_t)0xb8bf,\n  (q15_t)0x6a51, (q15_t)0xb8ba, (q15_t)0x6a4e, (q15_t)0xb8b5, (q15_t)0x6a4a, (q15_t)0xb8af, (q15_t)0x6a47, (q15_t)0xb8aa,\n  (q15_t)0x6a43, (q15_t)0xb8a5, (q15_t)0x6a40, (q15_t)0xb8a0, (q15_t)0x6a3c, (q15_t)0xb89b, (q15_t)0x6a39, (q15_t)0xb895,\n  (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x6a32, (q15_t)0xb88b, (q15_t)0x6a2e, (q15_t)0xb886, (q15_t)0x6a2b, (q15_t)0xb880,\n  (q15_t)0x6a27, (q15_t)0xb87b, (q15_t)0x6a24, (q15_t)0xb876, (q15_t)0x6a20, (q15_t)0xb871, (q15_t)0x6a1d, (q15_t)0xb86c,\n  (q15_t)0x6a19, (q15_t)0xb866, (q15_t)0x6a16, (q15_t)0xb861, (q15_t)0x6a12, (q15_t)0xb85c, (q15_t)0x6a0e, (q15_t)0xb857,\n  (q15_t)0x6a0b, (q15_t)0xb852, (q15_t)0x6a07, (q15_t)0xb84c, (q15_t)0x6a04, (q15_t)0xb847, (q15_t)0x6a00, (q15_t)0xb842,\n  (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69f9, (q15_t)0xb838, (q15_t)0x69f6, (q15_t)0xb832, (q15_t)0x69f2, (q15_t)0xb82d,\n  (q15_t)0x69ef, (q15_t)0xb828, (q15_t)0x69eb, (q15_t)0xb823, (q15_t)0x69e8, (q15_t)0xb81e, (q15_t)0x69e4, (q15_t)0xb818,\n  (q15_t)0x69e1, (q15_t)0xb813, (q15_t)0x69dd, (q15_t)0xb80e, (q15_t)0x69da, (q15_t)0xb809, (q15_t)0x69d6, (q15_t)0xb804,\n  (q15_t)0x69d3, (q15_t)0xb7fe, (q15_t)0x69cf, (q15_t)0xb7f9, (q15_t)0x69cb, (q15_t)0xb7f4, (q15_t)0x69c8, (q15_t)0xb7ef,\n  (q15_t)0x69c4, (q15_t)0xb7ea, (q15_t)0x69c1, (q15_t)0xb7e4, (q15_t)0x69bd, (q15_t)0xb7df, (q15_t)0x69ba, (q15_t)0xb7da,\n  (q15_t)0x69b6, (q15_t)0xb7d5, (q15_t)0x69b3, (q15_t)0xb7d0, (q15_t)0x69af, (q15_t)0xb7ca, (q15_t)0x69ac, (q15_t)0xb7c5,\n  (q15_t)0x69a8, (q15_t)0xb7c0, (q15_t)0x69a5, (q15_t)0xb7bb, (q15_t)0x69a1, (q15_t)0xb7b6, (q15_t)0x699d, (q15_t)0xb7b1,\n  (q15_t)0x699a, (q15_t)0xb7ab, (q15_t)0x6996, (q15_t)0xb7a6, (q15_t)0x6993, (q15_t)0xb7a1, (q15_t)0x698f, (q15_t)0xb79c,\n  (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x6988, (q15_t)0xb791, (q15_t)0x6985, (q15_t)0xb78c, (q15_t)0x6981, (q15_t)0xb787,\n  (q15_t)0x697d, (q15_t)0xb782, (q15_t)0x697a, (q15_t)0xb77d, (q15_t)0x6976, (q15_t)0xb778, (q15_t)0x6973, (q15_t)0xb772,\n  (q15_t)0x696f, (q15_t)0xb76d, (q15_t)0x696c, (q15_t)0xb768, (q15_t)0x6968, (q15_t)0xb763, (q15_t)0x6964, (q15_t)0xb75e,\n  (q15_t)0x6961, (q15_t)0xb758, (q15_t)0x695d, (q15_t)0xb753, (q15_t)0x695a, (q15_t)0xb74e, (q15_t)0x6956, (q15_t)0xb749,\n  (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x694f, (q15_t)0xb73f, (q15_t)0x694b, (q15_t)0xb739, (q15_t)0x6948, (q15_t)0xb734,\n  (q15_t)0x6944, (q15_t)0xb72f, (q15_t)0x6941, (q15_t)0xb72a, (q15_t)0x693d, (q15_t)0xb725, (q15_t)0x693a, (q15_t)0xb720,\n  (q15_t)0x6936, (q15_t)0xb71a, (q15_t)0x6932, (q15_t)0xb715, (q15_t)0x692f, (q15_t)0xb710, (q15_t)0x692b, (q15_t)0xb70b,\n  (q15_t)0x6928, (q15_t)0xb706, (q15_t)0x6924, (q15_t)0xb701, (q15_t)0x6921, (q15_t)0xb6fb, (q15_t)0x691d, (q15_t)0xb6f6,\n  (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x6916, (q15_t)0xb6ec, (q15_t)0x6912, (q15_t)0xb6e7, (q15_t)0x690f, (q15_t)0xb6e2,\n  (q15_t)0x690b, (q15_t)0xb6dd, (q15_t)0x6907, (q15_t)0xb6d7, (q15_t)0x6904, (q15_t)0xb6d2, (q15_t)0x6900, (q15_t)0xb6cd,\n  (q15_t)0x68fd, (q15_t)0xb6c8, (q15_t)0x68f9, (q15_t)0xb6c3, (q15_t)0x68f5, (q15_t)0xb6be, (q15_t)0x68f2, (q15_t)0xb6b8,\n  (q15_t)0x68ee, (q15_t)0xb6b3, (q15_t)0x68eb, (q15_t)0xb6ae, (q15_t)0x68e7, (q15_t)0xb6a9, (q15_t)0x68e3, (q15_t)0xb6a4,\n  (q15_t)0x68e0, (q15_t)0xb69f, (q15_t)0x68dc, (q15_t)0xb69a, (q15_t)0x68d9, (q15_t)0xb694, (q15_t)0x68d5, (q15_t)0xb68f,\n  (q15_t)0x68d1, (q15_t)0xb68a, (q15_t)0x68ce, (q15_t)0xb685, (q15_t)0x68ca, (q15_t)0xb680, (q15_t)0x68c7, (q15_t)0xb67b,\n  (q15_t)0x68c3, (q15_t)0xb676, (q15_t)0x68bf, (q15_t)0xb670, (q15_t)0x68bc, (q15_t)0xb66b, (q15_t)0x68b8, (q15_t)0xb666,\n  (q15_t)0x68b5, (q15_t)0xb661, (q15_t)0x68b1, (q15_t)0xb65c, (q15_t)0x68ad, (q15_t)0xb657, (q15_t)0x68aa, (q15_t)0xb652,\n  (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x68a3, (q15_t)0xb647, (q15_t)0x689f, (q15_t)0xb642, (q15_t)0x689b, (q15_t)0xb63d,\n  (q15_t)0x6898, (q15_t)0xb638, (q15_t)0x6894, (q15_t)0xb633, (q15_t)0x6890, (q15_t)0xb62e, (q15_t)0x688d, (q15_t)0xb628,\n  (q15_t)0x6889, (q15_t)0xb623, (q15_t)0x6886, (q15_t)0xb61e, (q15_t)0x6882, (q15_t)0xb619, (q15_t)0x687e, (q15_t)0xb614,\n  (q15_t)0x687b, (q15_t)0xb60f, (q15_t)0x6877, (q15_t)0xb60a, (q15_t)0x6873, (q15_t)0xb605, (q15_t)0x6870, (q15_t)0xb5ff,\n  (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x6868, (q15_t)0xb5f5, (q15_t)0x6865, (q15_t)0xb5f0, (q15_t)0x6861, (q15_t)0xb5eb,\n  (q15_t)0x685e, (q15_t)0xb5e6, (q15_t)0x685a, (q15_t)0xb5e1, (q15_t)0x6856, (q15_t)0xb5dc, (q15_t)0x6853, (q15_t)0xb5d6,\n  (q15_t)0x684f, (q15_t)0xb5d1, (q15_t)0x684b, (q15_t)0xb5cc, (q15_t)0x6848, (q15_t)0xb5c7, (q15_t)0x6844, (q15_t)0xb5c2,\n  (q15_t)0x6840, (q15_t)0xb5bd, (q15_t)0x683d, (q15_t)0xb5b8, (q15_t)0x6839, (q15_t)0xb5b3, (q15_t)0x6835, (q15_t)0xb5ae,\n  (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x682e, (q15_t)0xb5a3, (q15_t)0x682b, (q15_t)0xb59e, (q15_t)0x6827, (q15_t)0xb599,\n  (q15_t)0x6823, (q15_t)0xb594, (q15_t)0x6820, (q15_t)0xb58f, (q15_t)0x681c, (q15_t)0xb58a, (q15_t)0x6818, (q15_t)0xb585,\n  (q15_t)0x6815, (q15_t)0xb57f, (q15_t)0x6811, (q15_t)0xb57a, (q15_t)0x680d, (q15_t)0xb575, (q15_t)0x680a, (q15_t)0xb570,\n  (q15_t)0x6806, (q15_t)0xb56b, (q15_t)0x6802, (q15_t)0xb566, (q15_t)0x67ff, (q15_t)0xb561, (q15_t)0x67fb, (q15_t)0xb55c,\n  (q15_t)0x67f7, (q15_t)0xb557, (q15_t)0x67f4, (q15_t)0xb552, (q15_t)0x67f0, (q15_t)0xb54c, (q15_t)0x67ec, (q15_t)0xb547,\n  (q15_t)0x67e9, (q15_t)0xb542, (q15_t)0x67e5, (q15_t)0xb53d, (q15_t)0x67e1, (q15_t)0xb538, (q15_t)0x67de, (q15_t)0xb533,\n  (q15_t)0x67da, (q15_t)0xb52e, (q15_t)0x67d6, (q15_t)0xb529, (q15_t)0x67d3, (q15_t)0xb524, (q15_t)0x67cf, (q15_t)0xb51f,\n  (q15_t)0x67cb, (q15_t)0xb519, (q15_t)0x67c8, (q15_t)0xb514, (q15_t)0x67c4, (q15_t)0xb50f, (q15_t)0x67c0, (q15_t)0xb50a,\n  (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x67b9, (q15_t)0xb500, (q15_t)0x67b5, (q15_t)0xb4fb, (q15_t)0x67b2, (q15_t)0xb4f6,\n  (q15_t)0x67ae, (q15_t)0xb4f1, (q15_t)0x67aa, (q15_t)0xb4ec, (q15_t)0x67a6, (q15_t)0xb4e7, (q15_t)0x67a3, (q15_t)0xb4e1,\n  (q15_t)0x679f, (q15_t)0xb4dc, (q15_t)0x679b, (q15_t)0xb4d7, (q15_t)0x6798, (q15_t)0xb4d2, (q15_t)0x6794, (q15_t)0xb4cd,\n  (q15_t)0x6790, (q15_t)0xb4c8, (q15_t)0x678d, (q15_t)0xb4c3, (q15_t)0x6789, (q15_t)0xb4be, (q15_t)0x6785, (q15_t)0xb4b9,\n  (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x677e, (q15_t)0xb4af, (q15_t)0x677a, (q15_t)0xb4aa, (q15_t)0x6776, (q15_t)0xb4a4,\n  (q15_t)0x6773, (q15_t)0xb49f, (q15_t)0x676f, (q15_t)0xb49a, (q15_t)0x676b, (q15_t)0xb495, (q15_t)0x6768, (q15_t)0xb490,\n  (q15_t)0x6764, (q15_t)0xb48b, (q15_t)0x6760, (q15_t)0xb486, (q15_t)0x675d, (q15_t)0xb481, (q15_t)0x6759, (q15_t)0xb47c,\n  (q15_t)0x6755, (q15_t)0xb477, (q15_t)0x6751, (q15_t)0xb472, (q15_t)0x674e, (q15_t)0xb46d, (q15_t)0x674a, (q15_t)0xb468,\n  (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x6743, (q15_t)0xb45d, (q15_t)0x673f, (q15_t)0xb458, (q15_t)0x673b, (q15_t)0xb453,\n  (q15_t)0x6737, (q15_t)0xb44e, (q15_t)0x6734, (q15_t)0xb449, (q15_t)0x6730, (q15_t)0xb444, (q15_t)0x672c, (q15_t)0xb43f,\n  (q15_t)0x6729, (q15_t)0xb43a, (q15_t)0x6725, (q15_t)0xb435, (q15_t)0x6721, (q15_t)0xb430, (q15_t)0x671d, (q15_t)0xb42b,\n  (q15_t)0x671a, (q15_t)0xb426, (q15_t)0x6716, (q15_t)0xb421, (q15_t)0x6712, (q15_t)0xb41c, (q15_t)0x670e, (q15_t)0xb417,\n  (q15_t)0x670b, (q15_t)0xb411, (q15_t)0x6707, (q15_t)0xb40c, (q15_t)0x6703, (q15_t)0xb407, (q15_t)0x6700, (q15_t)0xb402,\n  (q15_t)0x66fc, (q15_t)0xb3fd, (q15_t)0x66f8, (q15_t)0xb3f8, (q15_t)0x66f4, (q15_t)0xb3f3, (q15_t)0x66f1, (q15_t)0xb3ee,\n  (q15_t)0x66ed, (q15_t)0xb3e9, (q15_t)0x66e9, (q15_t)0xb3e4, (q15_t)0x66e5, (q15_t)0xb3df, (q15_t)0x66e2, (q15_t)0xb3da,\n  (q15_t)0x66de, (q15_t)0xb3d5, (q15_t)0x66da, (q15_t)0xb3d0, (q15_t)0x66d6, (q15_t)0xb3cb, (q15_t)0x66d3, (q15_t)0xb3c6,\n  (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x66cb, (q15_t)0xb3bc, (q15_t)0x66c8, (q15_t)0xb3b7, (q15_t)0x66c4, (q15_t)0xb3b1,\n  (q15_t)0x66c0, (q15_t)0xb3ac, (q15_t)0x66bc, (q15_t)0xb3a7, (q15_t)0x66b9, (q15_t)0xb3a2, (q15_t)0x66b5, (q15_t)0xb39d,\n  (q15_t)0x66b1, (q15_t)0xb398, (q15_t)0x66ad, (q15_t)0xb393, (q15_t)0x66aa, (q15_t)0xb38e, (q15_t)0x66a6, (q15_t)0xb389,\n  (q15_t)0x66a2, (q15_t)0xb384, (q15_t)0x669e, (q15_t)0xb37f, (q15_t)0x669b, (q15_t)0xb37a, (q15_t)0x6697, (q15_t)0xb375,\n  (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x668f, (q15_t)0xb36b, (q15_t)0x668b, (q15_t)0xb366, (q15_t)0x6688, (q15_t)0xb361,\n  (q15_t)0x6684, (q15_t)0xb35c, (q15_t)0x6680, (q15_t)0xb357, (q15_t)0x667c, (q15_t)0xb352, (q15_t)0x6679, (q15_t)0xb34d,\n  (q15_t)0x6675, (q15_t)0xb348, (q15_t)0x6671, (q15_t)0xb343, (q15_t)0x666d, (q15_t)0xb33e, (q15_t)0x666a, (q15_t)0xb339,\n  (q15_t)0x6666, (q15_t)0xb334, (q15_t)0x6662, (q15_t)0xb32f, (q15_t)0x665e, (q15_t)0xb32a, (q15_t)0x665b, (q15_t)0xb325,\n  (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x6653, (q15_t)0xb31a, (q15_t)0x664f, (q15_t)0xb315, (q15_t)0x664b, (q15_t)0xb310,\n  (q15_t)0x6648, (q15_t)0xb30b, (q15_t)0x6644, (q15_t)0xb306, (q15_t)0x6640, (q15_t)0xb301, (q15_t)0x663c, (q15_t)0xb2fc,\n  (q15_t)0x6639, (q15_t)0xb2f7, (q15_t)0x6635, (q15_t)0xb2f2, (q15_t)0x6631, (q15_t)0xb2ed, (q15_t)0x662d, (q15_t)0xb2e8,\n  (q15_t)0x6629, (q15_t)0xb2e3, (q15_t)0x6626, (q15_t)0xb2de, (q15_t)0x6622, (q15_t)0xb2d9, (q15_t)0x661e, (q15_t)0xb2d4,\n  (q15_t)0x661a, (q15_t)0xb2cf, (q15_t)0x6616, (q15_t)0xb2ca, (q15_t)0x6613, (q15_t)0xb2c5, (q15_t)0x660f, (q15_t)0xb2c0,\n  (q15_t)0x660b, (q15_t)0xb2bb, (q15_t)0x6607, (q15_t)0xb2b6, (q15_t)0x6603, (q15_t)0xb2b1, (q15_t)0x6600, (q15_t)0xb2ac,\n  (q15_t)0x65fc, (q15_t)0xb2a7, (q15_t)0x65f8, (q15_t)0xb2a2, (q15_t)0x65f4, (q15_t)0xb29d, (q15_t)0x65f0, (q15_t)0xb298,\n  (q15_t)0x65ed, (q15_t)0xb293, (q15_t)0x65e9, (q15_t)0xb28e, (q15_t)0x65e5, (q15_t)0xb289, (q15_t)0x65e1, (q15_t)0xb284,\n  (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65da, (q15_t)0xb27a, (q15_t)0x65d6, (q15_t)0xb275, (q15_t)0x65d2, (q15_t)0xb270,\n  (q15_t)0x65ce, (q15_t)0xb26b, (q15_t)0x65ca, (q15_t)0xb266, (q15_t)0x65c7, (q15_t)0xb261, (q15_t)0x65c3, (q15_t)0xb25c,\n  (q15_t)0x65bf, (q15_t)0xb257, (q15_t)0x65bb, (q15_t)0xb252, (q15_t)0x65b7, (q15_t)0xb24d, (q15_t)0x65b4, (q15_t)0xb248,\n  (q15_t)0x65b0, (q15_t)0xb243, (q15_t)0x65ac, (q15_t)0xb23e, (q15_t)0x65a8, (q15_t)0xb239, (q15_t)0x65a4, (q15_t)0xb234,\n  (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x659d, (q15_t)0xb22a, (q15_t)0x6599, (q15_t)0xb225, (q15_t)0x6595, (q15_t)0xb220,\n  (q15_t)0x6591, (q15_t)0xb21b, (q15_t)0x658d, (q15_t)0xb216, (q15_t)0x658a, (q15_t)0xb211, (q15_t)0x6586, (q15_t)0xb20c,\n  (q15_t)0x6582, (q15_t)0xb207, (q15_t)0x657e, (q15_t)0xb202, (q15_t)0x657a, (q15_t)0xb1fd, (q15_t)0x6576, (q15_t)0xb1f8,\n  (q15_t)0x6573, (q15_t)0xb1f3, (q15_t)0x656f, (q15_t)0xb1ee, (q15_t)0x656b, (q15_t)0xb1e9, (q15_t)0x6567, (q15_t)0xb1e4,\n  (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x655f, (q15_t)0xb1da, (q15_t)0x655c, (q15_t)0xb1d6, (q15_t)0x6558, (q15_t)0xb1d1,\n  (q15_t)0x6554, (q15_t)0xb1cc, (q15_t)0x6550, (q15_t)0xb1c7, (q15_t)0x654c, (q15_t)0xb1c2, (q15_t)0x6548, (q15_t)0xb1bd,\n  (q15_t)0x6545, (q15_t)0xb1b8, (q15_t)0x6541, (q15_t)0xb1b3, (q15_t)0x653d, (q15_t)0xb1ae, (q15_t)0x6539, (q15_t)0xb1a9,\n  (q15_t)0x6535, (q15_t)0xb1a4, (q15_t)0x6531, (q15_t)0xb19f, (q15_t)0x652d, (q15_t)0xb19a, (q15_t)0x652a, (q15_t)0xb195,\n  (q15_t)0x6526, (q15_t)0xb190, (q15_t)0x6522, (q15_t)0xb18b, (q15_t)0x651e, (q15_t)0xb186, (q15_t)0x651a, (q15_t)0xb181,\n  (q15_t)0x6516, (q15_t)0xb17c, (q15_t)0x6513, (q15_t)0xb177, (q15_t)0x650f, (q15_t)0xb172, (q15_t)0x650b, (q15_t)0xb16d,\n  (q15_t)0x6507, (q15_t)0xb168, (q15_t)0x6503, (q15_t)0xb163, (q15_t)0x64ff, (q15_t)0xb15e, (q15_t)0x64fb, (q15_t)0xb159,\n  (q15_t)0x64f7, (q15_t)0xb154, (q15_t)0x64f4, (q15_t)0xb14f, (q15_t)0x64f0, (q15_t)0xb14a, (q15_t)0x64ec, (q15_t)0xb146,\n  (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64e4, (q15_t)0xb13c, (q15_t)0x64e0, (q15_t)0xb137, (q15_t)0x64dc, (q15_t)0xb132,\n  (q15_t)0x64d9, (q15_t)0xb12d, (q15_t)0x64d5, (q15_t)0xb128, (q15_t)0x64d1, (q15_t)0xb123, (q15_t)0x64cd, (q15_t)0xb11e,\n  (q15_t)0x64c9, (q15_t)0xb119, (q15_t)0x64c5, (q15_t)0xb114, (q15_t)0x64c1, (q15_t)0xb10f, (q15_t)0x64bd, (q15_t)0xb10a,\n  (q15_t)0x64ba, (q15_t)0xb105, (q15_t)0x64b6, (q15_t)0xb100, (q15_t)0x64b2, (q15_t)0xb0fb, (q15_t)0x64ae, (q15_t)0xb0f6,\n  (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x64a6, (q15_t)0xb0ec, (q15_t)0x64a2, (q15_t)0xb0e8, (q15_t)0x649e, (q15_t)0xb0e3,\n  (q15_t)0x649b, (q15_t)0xb0de, (q15_t)0x6497, (q15_t)0xb0d9, (q15_t)0x6493, (q15_t)0xb0d4, (q15_t)0x648f, (q15_t)0xb0cf,\n  (q15_t)0x648b, (q15_t)0xb0ca, (q15_t)0x6487, (q15_t)0xb0c5, (q15_t)0x6483, (q15_t)0xb0c0, (q15_t)0x647f, (q15_t)0xb0bb,\n  (q15_t)0x647b, (q15_t)0xb0b6, (q15_t)0x6478, (q15_t)0xb0b1, (q15_t)0x6474, (q15_t)0xb0ac, (q15_t)0x6470, (q15_t)0xb0a7,\n  (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x6468, (q15_t)0xb09e, (q15_t)0x6464, (q15_t)0xb099, (q15_t)0x6460, (q15_t)0xb094,\n  (q15_t)0x645c, (q15_t)0xb08f, (q15_t)0x6458, (q15_t)0xb08a, (q15_t)0x6454, (q15_t)0xb085, (q15_t)0x6451, (q15_t)0xb080,\n  (q15_t)0x644d, (q15_t)0xb07b, (q15_t)0x6449, (q15_t)0xb076, (q15_t)0x6445, (q15_t)0xb071, (q15_t)0x6441, (q15_t)0xb06c,\n  (q15_t)0x643d, (q15_t)0xb067, (q15_t)0x6439, (q15_t)0xb062, (q15_t)0x6435, (q15_t)0xb05e, (q15_t)0x6431, (q15_t)0xb059,\n  (q15_t)0x642d, (q15_t)0xb054, (q15_t)0x6429, (q15_t)0xb04f, (q15_t)0x6426, (q15_t)0xb04a, (q15_t)0x6422, (q15_t)0xb045,\n  (q15_t)0x641e, (q15_t)0xb040, (q15_t)0x641a, (q15_t)0xb03b, (q15_t)0x6416, (q15_t)0xb036, (q15_t)0x6412, (q15_t)0xb031,\n  (q15_t)0x640e, (q15_t)0xb02c, (q15_t)0x640a, (q15_t)0xb027, (q15_t)0x6406, (q15_t)0xb023, (q15_t)0x6402, (q15_t)0xb01e,\n  (q15_t)0x63fe, (q15_t)0xb019, (q15_t)0x63fa, (q15_t)0xb014, (q15_t)0x63f7, (q15_t)0xb00f, (q15_t)0x63f3, (q15_t)0xb00a,\n  (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63eb, (q15_t)0xb000, (q15_t)0x63e7, (q15_t)0xaffb, (q15_t)0x63e3, (q15_t)0xaff6,\n  (q15_t)0x63df, (q15_t)0xaff1, (q15_t)0x63db, (q15_t)0xafed, (q15_t)0x63d7, (q15_t)0xafe8, (q15_t)0x63d3, (q15_t)0xafe3,\n  (q15_t)0x63cf, (q15_t)0xafde, (q15_t)0x63cb, (q15_t)0xafd9, (q15_t)0x63c7, (q15_t)0xafd4, (q15_t)0x63c3, (q15_t)0xafcf,\n  (q15_t)0x63c0, (q15_t)0xafca, (q15_t)0x63bc, (q15_t)0xafc5, (q15_t)0x63b8, (q15_t)0xafc1, (q15_t)0x63b4, (q15_t)0xafbc,\n  (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x63ac, (q15_t)0xafb2, (q15_t)0x63a8, (q15_t)0xafad, (q15_t)0x63a4, (q15_t)0xafa8,\n  (q15_t)0x63a0, (q15_t)0xafa3, (q15_t)0x639c, (q15_t)0xaf9e, (q15_t)0x6398, (q15_t)0xaf99, (q15_t)0x6394, (q15_t)0xaf94,\n  (q15_t)0x6390, (q15_t)0xaf90, (q15_t)0x638c, (q15_t)0xaf8b, (q15_t)0x6388, (q15_t)0xaf86, (q15_t)0x6384, (q15_t)0xaf81,\n  (q15_t)0x6380, (q15_t)0xaf7c, (q15_t)0x637c, (q15_t)0xaf77, (q15_t)0x6378, (q15_t)0xaf72, (q15_t)0x6375, (q15_t)0xaf6d,\n  (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x636d, (q15_t)0xaf64, (q15_t)0x6369, (q15_t)0xaf5f, (q15_t)0x6365, (q15_t)0xaf5a,\n  (q15_t)0x6361, (q15_t)0xaf55, (q15_t)0x635d, (q15_t)0xaf50, (q15_t)0x6359, (q15_t)0xaf4b, (q15_t)0x6355, (q15_t)0xaf46,\n  (q15_t)0x6351, (q15_t)0xaf41, (q15_t)0x634d, (q15_t)0xaf3d, (q15_t)0x6349, (q15_t)0xaf38, (q15_t)0x6345, (q15_t)0xaf33,\n  (q15_t)0x6341, (q15_t)0xaf2e, (q15_t)0x633d, (q15_t)0xaf29, (q15_t)0x6339, (q15_t)0xaf24, (q15_t)0x6335, (q15_t)0xaf1f,\n  (q15_t)0x6331, (q15_t)0xaf1b, (q15_t)0x632d, (q15_t)0xaf16, (q15_t)0x6329, (q15_t)0xaf11, (q15_t)0x6325, (q15_t)0xaf0c,\n  (q15_t)0x6321, (q15_t)0xaf07, (q15_t)0x631d, (q15_t)0xaf02, (q15_t)0x6319, (q15_t)0xaefd, (q15_t)0x6315, (q15_t)0xaef8,\n  (q15_t)0x6311, (q15_t)0xaef4, (q15_t)0x630d, (q15_t)0xaeef, (q15_t)0x6309, (q15_t)0xaeea, (q15_t)0x6305, (q15_t)0xaee5,\n  (q15_t)0x6301, (q15_t)0xaee0, (q15_t)0x62fd, (q15_t)0xaedb, (q15_t)0x62f9, (q15_t)0xaed6, (q15_t)0x62f5, (q15_t)0xaed2,\n  (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62ee, (q15_t)0xaec8, (q15_t)0x62ea, (q15_t)0xaec3, (q15_t)0x62e6, (q15_t)0xaebe,\n  (q15_t)0x62e2, (q15_t)0xaeb9, (q15_t)0x62de, (q15_t)0xaeb4, (q15_t)0x62da, (q15_t)0xaeb0, (q15_t)0x62d6, (q15_t)0xaeab,\n  (q15_t)0x62d2, (q15_t)0xaea6, (q15_t)0x62ce, (q15_t)0xaea1, (q15_t)0x62ca, (q15_t)0xae9c, (q15_t)0x62c6, (q15_t)0xae97,\n  (q15_t)0x62c2, (q15_t)0xae92, (q15_t)0x62be, (q15_t)0xae8e, (q15_t)0x62ba, (q15_t)0xae89, (q15_t)0x62b6, (q15_t)0xae84,\n  (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x62ae, (q15_t)0xae7a, (q15_t)0x62aa, (q15_t)0xae75, (q15_t)0x62a6, (q15_t)0xae71,\n  (q15_t)0x62a2, (q15_t)0xae6c, (q15_t)0x629e, (q15_t)0xae67, (q15_t)0x629a, (q15_t)0xae62, (q15_t)0x6296, (q15_t)0xae5d,\n  (q15_t)0x6292, (q15_t)0xae58, (q15_t)0x628e, (q15_t)0xae54, (q15_t)0x628a, (q15_t)0xae4f, (q15_t)0x6286, (q15_t)0xae4a,\n  (q15_t)0x6282, (q15_t)0xae45, (q15_t)0x627e, (q15_t)0xae40, (q15_t)0x627a, (q15_t)0xae3b, (q15_t)0x6275, (q15_t)0xae37,\n  (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x626d, (q15_t)0xae2d, (q15_t)0x6269, (q15_t)0xae28, (q15_t)0x6265, (q15_t)0xae23,\n  (q15_t)0x6261, (q15_t)0xae1e, (q15_t)0x625d, (q15_t)0xae1a, (q15_t)0x6259, (q15_t)0xae15, (q15_t)0x6255, (q15_t)0xae10,\n  (q15_t)0x6251, (q15_t)0xae0b, (q15_t)0x624d, (q15_t)0xae06, (q15_t)0x6249, (q15_t)0xae01, (q15_t)0x6245, (q15_t)0xadfd,\n  (q15_t)0x6241, (q15_t)0xadf8, (q15_t)0x623d, (q15_t)0xadf3, (q15_t)0x6239, (q15_t)0xadee, (q15_t)0x6235, (q15_t)0xade9,\n  (q15_t)0x6231, (q15_t)0xade4, (q15_t)0x622d, (q15_t)0xade0, (q15_t)0x6229, (q15_t)0xaddb, (q15_t)0x6225, (q15_t)0xadd6,\n  (q15_t)0x6221, (q15_t)0xadd1, (q15_t)0x621d, (q15_t)0xadcc, (q15_t)0x6219, (q15_t)0xadc8, (q15_t)0x6215, (q15_t)0xadc3,\n  (q15_t)0x6211, (q15_t)0xadbe, (q15_t)0x620d, (q15_t)0xadb9, (q15_t)0x6209, (q15_t)0xadb4, (q15_t)0x6205, (q15_t)0xadaf,\n  (q15_t)0x6201, (q15_t)0xadab, (q15_t)0x61fd, (q15_t)0xada6, (q15_t)0x61f9, (q15_t)0xada1, (q15_t)0x61f5, (q15_t)0xad9c,\n  (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61ec, (q15_t)0xad93, (q15_t)0x61e8, (q15_t)0xad8e, (q15_t)0x61e4, (q15_t)0xad89,\n  (q15_t)0x61e0, (q15_t)0xad84, (q15_t)0x61dc, (q15_t)0xad7f, (q15_t)0x61d8, (q15_t)0xad7b, (q15_t)0x61d4, (q15_t)0xad76,\n  (q15_t)0x61d0, (q15_t)0xad71, (q15_t)0x61cc, (q15_t)0xad6c, (q15_t)0x61c8, (q15_t)0xad67, (q15_t)0x61c4, (q15_t)0xad63,\n  (q15_t)0x61c0, (q15_t)0xad5e, (q15_t)0x61bc, (q15_t)0xad59, (q15_t)0x61b8, (q15_t)0xad54, (q15_t)0x61b4, (q15_t)0xad4f,\n  (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x61ac, (q15_t)0xad46, (q15_t)0x61a8, (q15_t)0xad41, (q15_t)0x61a3, (q15_t)0xad3c,\n  (q15_t)0x619f, (q15_t)0xad37, (q15_t)0x619b, (q15_t)0xad33, (q15_t)0x6197, (q15_t)0xad2e, (q15_t)0x6193, (q15_t)0xad29,\n  (q15_t)0x618f, (q15_t)0xad24, (q15_t)0x618b, (q15_t)0xad1f, (q15_t)0x6187, (q15_t)0xad1b, (q15_t)0x6183, (q15_t)0xad16,\n  (q15_t)0x617f, (q15_t)0xad11, (q15_t)0x617b, (q15_t)0xad0c, (q15_t)0x6177, (q15_t)0xad08, (q15_t)0x6173, (q15_t)0xad03,\n  (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x616b, (q15_t)0xacf9, (q15_t)0x6166, (q15_t)0xacf4, (q15_t)0x6162, (q15_t)0xacf0,\n  (q15_t)0x615e, (q15_t)0xaceb, (q15_t)0x615a, (q15_t)0xace6, (q15_t)0x6156, (q15_t)0xace1, (q15_t)0x6152, (q15_t)0xacdd,\n  (q15_t)0x614e, (q15_t)0xacd8, (q15_t)0x614a, (q15_t)0xacd3, (q15_t)0x6146, (q15_t)0xacce, (q15_t)0x6142, (q15_t)0xacc9,\n  (q15_t)0x613e, (q15_t)0xacc5, (q15_t)0x613a, (q15_t)0xacc0, (q15_t)0x6135, (q15_t)0xacbb, (q15_t)0x6131, (q15_t)0xacb6,\n  (q15_t)0x612d, (q15_t)0xacb2, (q15_t)0x6129, (q15_t)0xacad, (q15_t)0x6125, (q15_t)0xaca8, (q15_t)0x6121, (q15_t)0xaca3,\n  (q15_t)0x611d, (q15_t)0xac9e, (q15_t)0x6119, (q15_t)0xac9a, (q15_t)0x6115, (q15_t)0xac95, (q15_t)0x6111, (q15_t)0xac90,\n  (q15_t)0x610d, (q15_t)0xac8b, (q15_t)0x6108, (q15_t)0xac87, (q15_t)0x6104, (q15_t)0xac82, (q15_t)0x6100, (q15_t)0xac7d,\n  (q15_t)0x60fc, (q15_t)0xac78, (q15_t)0x60f8, (q15_t)0xac74, (q15_t)0x60f4, (q15_t)0xac6f, (q15_t)0x60f0, (q15_t)0xac6a,\n  (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60e8, (q15_t)0xac61, (q15_t)0x60e4, (q15_t)0xac5c, (q15_t)0x60df, (q15_t)0xac57,\n  (q15_t)0x60db, (q15_t)0xac52, (q15_t)0x60d7, (q15_t)0xac4e, (q15_t)0x60d3, (q15_t)0xac49, (q15_t)0x60cf, (q15_t)0xac44,\n  (q15_t)0x60cb, (q15_t)0xac3f, (q15_t)0x60c7, (q15_t)0xac3b, (q15_t)0x60c3, (q15_t)0xac36, (q15_t)0x60bf, (q15_t)0xac31,\n  (q15_t)0x60ba, (q15_t)0xac2c, (q15_t)0x60b6, (q15_t)0xac28, (q15_t)0x60b2, (q15_t)0xac23, (q15_t)0x60ae, (q15_t)0xac1e,\n  (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x60a6, (q15_t)0xac15, (q15_t)0x60a2, (q15_t)0xac10, (q15_t)0x609e, (q15_t)0xac0b,\n  (q15_t)0x6099, (q15_t)0xac06, (q15_t)0x6095, (q15_t)0xac02, (q15_t)0x6091, (q15_t)0xabfd, (q15_t)0x608d, (q15_t)0xabf8,\n  (q15_t)0x6089, (q15_t)0xabf3, (q15_t)0x6085, (q15_t)0xabef, (q15_t)0x6081, (q15_t)0xabea, (q15_t)0x607d, (q15_t)0xabe5,\n  (q15_t)0x6078, (q15_t)0xabe0, (q15_t)0x6074, (q15_t)0xabdc, (q15_t)0x6070, (q15_t)0xabd7, (q15_t)0x606c, (q15_t)0xabd2,\n  (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6064, (q15_t)0xabc9, (q15_t)0x6060, (q15_t)0xabc4, (q15_t)0x605c, (q15_t)0xabbf,\n  (q15_t)0x6057, (q15_t)0xabbb, (q15_t)0x6053, (q15_t)0xabb6, (q15_t)0x604f, (q15_t)0xabb1, (q15_t)0x604b, (q15_t)0xabac,\n  (q15_t)0x6047, (q15_t)0xaba8, (q15_t)0x6043, (q15_t)0xaba3, (q15_t)0x603f, (q15_t)0xab9e, (q15_t)0x603a, (q15_t)0xab99,\n  (q15_t)0x6036, (q15_t)0xab95, (q15_t)0x6032, (q15_t)0xab90, (q15_t)0x602e, (q15_t)0xab8b, (q15_t)0x602a, (q15_t)0xab87,\n  (q15_t)0x6026, (q15_t)0xab82, (q15_t)0x6022, (q15_t)0xab7d, (q15_t)0x601d, (q15_t)0xab78, (q15_t)0x6019, (q15_t)0xab74,\n  (q15_t)0x6015, (q15_t)0xab6f, (q15_t)0x6011, (q15_t)0xab6a, (q15_t)0x600d, (q15_t)0xab66, (q15_t)0x6009, (q15_t)0xab61,\n  (q15_t)0x6004, (q15_t)0xab5c, (q15_t)0x6000, (q15_t)0xab57, (q15_t)0x5ffc, (q15_t)0xab53, (q15_t)0x5ff8, (q15_t)0xab4e,\n  (q15_t)0x5ff4, (q15_t)0xab49, (q15_t)0x5ff0, (q15_t)0xab45, (q15_t)0x5fec, (q15_t)0xab40, (q15_t)0x5fe7, (q15_t)0xab3b,\n  (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fdf, (q15_t)0xab32, (q15_t)0x5fdb, (q15_t)0xab2d, (q15_t)0x5fd7, (q15_t)0xab28,\n  (q15_t)0x5fd3, (q15_t)0xab24, (q15_t)0x5fce, (q15_t)0xab1f, (q15_t)0x5fca, (q15_t)0xab1a, (q15_t)0x5fc6, (q15_t)0xab16,\n  (q15_t)0x5fc2, (q15_t)0xab11, (q15_t)0x5fbe, (q15_t)0xab0c, (q15_t)0x5fba, (q15_t)0xab07, (q15_t)0x5fb5, (q15_t)0xab03,\n  (q15_t)0x5fb1, (q15_t)0xaafe, (q15_t)0x5fad, (q15_t)0xaaf9, (q15_t)0x5fa9, (q15_t)0xaaf5, (q15_t)0x5fa5, (q15_t)0xaaf0,\n  (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f9c, (q15_t)0xaae7, (q15_t)0x5f98, (q15_t)0xaae2, (q15_t)0x5f94, (q15_t)0xaadd,\n  (q15_t)0x5f90, (q15_t)0xaad8, (q15_t)0x5f8c, (q15_t)0xaad4, (q15_t)0x5f87, (q15_t)0xaacf, (q15_t)0x5f83, (q15_t)0xaaca,\n  (q15_t)0x5f7f, (q15_t)0xaac6, (q15_t)0x5f7b, (q15_t)0xaac1, (q15_t)0x5f77, (q15_t)0xaabc, (q15_t)0x5f72, (q15_t)0xaab8,\n  (q15_t)0x5f6e, (q15_t)0xaab3, (q15_t)0x5f6a, (q15_t)0xaaae, (q15_t)0x5f66, (q15_t)0xaaaa, (q15_t)0x5f62, (q15_t)0xaaa5,\n  (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f59, (q15_t)0xaa9c, (q15_t)0x5f55, (q15_t)0xaa97, (q15_t)0x5f51, (q15_t)0xaa92,\n  (q15_t)0x5f4d, (q15_t)0xaa8e, (q15_t)0x5f49, (q15_t)0xaa89, (q15_t)0x5f44, (q15_t)0xaa84, (q15_t)0x5f40, (q15_t)0xaa7f,\n  (q15_t)0x5f3c, (q15_t)0xaa7b, (q15_t)0x5f38, (q15_t)0xaa76, (q15_t)0x5f34, (q15_t)0xaa71, (q15_t)0x5f2f, (q15_t)0xaa6d,\n  (q15_t)0x5f2b, (q15_t)0xaa68, (q15_t)0x5f27, (q15_t)0xaa63, (q15_t)0x5f23, (q15_t)0xaa5f, (q15_t)0x5f1f, (q15_t)0xaa5a,\n  (q15_t)0x5f1a, (q15_t)0xaa55, (q15_t)0x5f16, (q15_t)0xaa51, (q15_t)0x5f12, (q15_t)0xaa4c, (q15_t)0x5f0e, (q15_t)0xaa47,\n  (q15_t)0x5f0a, (q15_t)0xaa43, (q15_t)0x5f05, (q15_t)0xaa3e, (q15_t)0x5f01, (q15_t)0xaa39, (q15_t)0x5efd, (q15_t)0xaa35,\n  (q15_t)0x5ef9, (q15_t)0xaa30, (q15_t)0x5ef5, (q15_t)0xaa2b, (q15_t)0x5ef0, (q15_t)0xaa27, (q15_t)0x5eec, (q15_t)0xaa22,\n  (q15_t)0x5ee8, (q15_t)0xaa1d, (q15_t)0x5ee4, (q15_t)0xaa19, (q15_t)0x5edf, (q15_t)0xaa14, (q15_t)0x5edb, (q15_t)0xaa10,\n  (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5ed3, (q15_t)0xaa06, (q15_t)0x5ecf, (q15_t)0xaa02, (q15_t)0x5eca, (q15_t)0xa9fd,\n  (q15_t)0x5ec6, (q15_t)0xa9f8, (q15_t)0x5ec2, (q15_t)0xa9f4, (q15_t)0x5ebe, (q15_t)0xa9ef, (q15_t)0x5eb9, (q15_t)0xa9ea,\n  (q15_t)0x5eb5, (q15_t)0xa9e6, (q15_t)0x5eb1, (q15_t)0xa9e1, (q15_t)0x5ead, (q15_t)0xa9dc, (q15_t)0x5ea9, (q15_t)0xa9d8,\n  (q15_t)0x5ea4, (q15_t)0xa9d3, (q15_t)0x5ea0, (q15_t)0xa9ce, (q15_t)0x5e9c, (q15_t)0xa9ca, (q15_t)0x5e98, (q15_t)0xa9c5,\n  (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e8f, (q15_t)0xa9bc, (q15_t)0x5e8b, (q15_t)0xa9b7, (q15_t)0x5e87, (q15_t)0xa9b3,\n  (q15_t)0x5e82, (q15_t)0xa9ae, (q15_t)0x5e7e, (q15_t)0xa9a9, (q15_t)0x5e7a, (q15_t)0xa9a5, (q15_t)0x5e76, (q15_t)0xa9a0,\n  (q15_t)0x5e71, (q15_t)0xa99b, (q15_t)0x5e6d, (q15_t)0xa997, (q15_t)0x5e69, (q15_t)0xa992, (q15_t)0x5e65, (q15_t)0xa98d,\n  (q15_t)0x5e60, (q15_t)0xa989, (q15_t)0x5e5c, (q15_t)0xa984, (q15_t)0x5e58, (q15_t)0xa980, (q15_t)0x5e54, (q15_t)0xa97b,\n  (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e4b, (q15_t)0xa972, (q15_t)0x5e47, (q15_t)0xa96d, (q15_t)0x5e43, (q15_t)0xa968,\n  (q15_t)0x5e3f, (q15_t)0xa964, (q15_t)0x5e3a, (q15_t)0xa95f, (q15_t)0x5e36, (q15_t)0xa95b, (q15_t)0x5e32, (q15_t)0xa956,\n  (q15_t)0x5e2d, (q15_t)0xa951, (q15_t)0x5e29, (q15_t)0xa94d, (q15_t)0x5e25, (q15_t)0xa948, (q15_t)0x5e21, (q15_t)0xa943,\n  (q15_t)0x5e1c, (q15_t)0xa93f, (q15_t)0x5e18, (q15_t)0xa93a, (q15_t)0x5e14, (q15_t)0xa936, (q15_t)0x5e10, (q15_t)0xa931,\n  (q15_t)0x5e0b, (q15_t)0xa92c, (q15_t)0x5e07, (q15_t)0xa928, (q15_t)0x5e03, (q15_t)0xa923, (q15_t)0x5dff, (q15_t)0xa91e,\n  (q15_t)0x5dfa, (q15_t)0xa91a, (q15_t)0x5df6, (q15_t)0xa915, (q15_t)0x5df2, (q15_t)0xa911, (q15_t)0x5dee, (q15_t)0xa90c,\n  (q15_t)0x5de9, (q15_t)0xa907, (q15_t)0x5de5, (q15_t)0xa903, (q15_t)0x5de1, (q15_t)0xa8fe, (q15_t)0x5ddc, (q15_t)0xa8fa,\n  (q15_t)0x5dd8, (q15_t)0xa8f5, (q15_t)0x5dd4, (q15_t)0xa8f0, (q15_t)0x5dd0, (q15_t)0xa8ec, (q15_t)0x5dcb, (q15_t)0xa8e7,\n  (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5dc3, (q15_t)0xa8de, (q15_t)0x5dbf, (q15_t)0xa8d9, (q15_t)0x5dba, (q15_t)0xa8d5,\n  (q15_t)0x5db6, (q15_t)0xa8d0, (q15_t)0x5db2, (q15_t)0xa8cc, (q15_t)0x5dad, (q15_t)0xa8c7, (q15_t)0x5da9, (q15_t)0xa8c2,\n  (q15_t)0x5da5, (q15_t)0xa8be, (q15_t)0x5da1, (q15_t)0xa8b9, (q15_t)0x5d9c, (q15_t)0xa8b5, (q15_t)0x5d98, (q15_t)0xa8b0,\n  (q15_t)0x5d94, (q15_t)0xa8ab, (q15_t)0x5d8f, (q15_t)0xa8a7, (q15_t)0x5d8b, (q15_t)0xa8a2, (q15_t)0x5d87, (q15_t)0xa89e,\n  (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d7e, (q15_t)0xa894, (q15_t)0x5d7a, (q15_t)0xa890, (q15_t)0x5d76, (q15_t)0xa88b,\n  (q15_t)0x5d71, (q15_t)0xa887, (q15_t)0x5d6d, (q15_t)0xa882, (q15_t)0x5d69, (q15_t)0xa87d, (q15_t)0x5d65, (q15_t)0xa879,\n  (q15_t)0x5d60, (q15_t)0xa874, (q15_t)0x5d5c, (q15_t)0xa870, (q15_t)0x5d58, (q15_t)0xa86b, (q15_t)0x5d53, (q15_t)0xa867,\n  (q15_t)0x5d4f, (q15_t)0xa862, (q15_t)0x5d4b, (q15_t)0xa85d, (q15_t)0x5d46, (q15_t)0xa859, (q15_t)0x5d42, (q15_t)0xa854,\n  (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5d3a, (q15_t)0xa84b, (q15_t)0x5d35, (q15_t)0xa847, (q15_t)0x5d31, (q15_t)0xa842,\n  (q15_t)0x5d2d, (q15_t)0xa83d, (q15_t)0x5d28, (q15_t)0xa839, (q15_t)0x5d24, (q15_t)0xa834, (q15_t)0x5d20, (q15_t)0xa830,\n  (q15_t)0x5d1b, (q15_t)0xa82b, (q15_t)0x5d17, (q15_t)0xa827, (q15_t)0x5d13, (q15_t)0xa822, (q15_t)0x5d0e, (q15_t)0xa81d,\n  (q15_t)0x5d0a, (q15_t)0xa819, (q15_t)0x5d06, (q15_t)0xa814, (q15_t)0x5d01, (q15_t)0xa810, (q15_t)0x5cfd, (q15_t)0xa80b,\n  (q15_t)0x5cf9, (q15_t)0xa807, (q15_t)0x5cf5, (q15_t)0xa802, (q15_t)0x5cf0, (q15_t)0xa7fd, (q15_t)0x5cec, (q15_t)0xa7f9,\n  (q15_t)0x5ce8, (q15_t)0xa7f4, (q15_t)0x5ce3, (q15_t)0xa7f0, (q15_t)0x5cdf, (q15_t)0xa7eb, (q15_t)0x5cdb, (q15_t)0xa7e7,\n  (q15_t)0x5cd6, (q15_t)0xa7e2, (q15_t)0x5cd2, (q15_t)0xa7de, (q15_t)0x5cce, (q15_t)0xa7d9, (q15_t)0x5cc9, (q15_t)0xa7d4,\n  (q15_t)0x5cc5, (q15_t)0xa7d0, (q15_t)0x5cc1, (q15_t)0xa7cb, (q15_t)0x5cbc, (q15_t)0xa7c7, (q15_t)0x5cb8, (q15_t)0xa7c2,\n  (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5caf, (q15_t)0xa7b9, (q15_t)0x5cab, (q15_t)0xa7b5, (q15_t)0x5ca7, (q15_t)0xa7b0,\n  (q15_t)0x5ca2, (q15_t)0xa7ab, (q15_t)0x5c9e, (q15_t)0xa7a7, (q15_t)0x5c9a, (q15_t)0xa7a2, (q15_t)0x5c95, (q15_t)0xa79e,\n  (q15_t)0x5c91, (q15_t)0xa799, (q15_t)0x5c8d, (q15_t)0xa795, (q15_t)0x5c88, (q15_t)0xa790, (q15_t)0x5c84, (q15_t)0xa78c,\n  (q15_t)0x5c80, (q15_t)0xa787, (q15_t)0x5c7b, (q15_t)0xa783, (q15_t)0x5c77, (q15_t)0xa77e, (q15_t)0x5c73, (q15_t)0xa779,\n  (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c6a, (q15_t)0xa770, (q15_t)0x5c66, (q15_t)0xa76c, (q15_t)0x5c61, (q15_t)0xa767,\n  (q15_t)0x5c5d, (q15_t)0xa763, (q15_t)0x5c58, (q15_t)0xa75e, (q15_t)0x5c54, (q15_t)0xa75a, (q15_t)0x5c50, (q15_t)0xa755,\n  (q15_t)0x5c4b, (q15_t)0xa751, (q15_t)0x5c47, (q15_t)0xa74c, (q15_t)0x5c43, (q15_t)0xa748, (q15_t)0x5c3e, (q15_t)0xa743,\n  (q15_t)0x5c3a, (q15_t)0xa73f, (q15_t)0x5c36, (q15_t)0xa73a, (q15_t)0x5c31, (q15_t)0xa735, (q15_t)0x5c2d, (q15_t)0xa731,\n  (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5c24, (q15_t)0xa728, (q15_t)0x5c20, (q15_t)0xa723, (q15_t)0x5c1b, (q15_t)0xa71f,\n  (q15_t)0x5c17, (q15_t)0xa71a, (q15_t)0x5c13, (q15_t)0xa716, (q15_t)0x5c0e, (q15_t)0xa711, (q15_t)0x5c0a, (q15_t)0xa70d,\n  (q15_t)0x5c06, (q15_t)0xa708, (q15_t)0x5c01, (q15_t)0xa704, (q15_t)0x5bfd, (q15_t)0xa6ff, (q15_t)0x5bf9, (q15_t)0xa6fb,\n  (q15_t)0x5bf4, (q15_t)0xa6f6, (q15_t)0x5bf0, (q15_t)0xa6f2, (q15_t)0x5beb, (q15_t)0xa6ed, (q15_t)0x5be7, (q15_t)0xa6e9,\n  (q15_t)0x5be3, (q15_t)0xa6e4, (q15_t)0x5bde, (q15_t)0xa6e0, (q15_t)0x5bda, (q15_t)0xa6db, (q15_t)0x5bd6, (q15_t)0xa6d7,\n  (q15_t)0x5bd1, (q15_t)0xa6d2, (q15_t)0x5bcd, (q15_t)0xa6ce, (q15_t)0x5bc8, (q15_t)0xa6c9, (q15_t)0x5bc4, (q15_t)0xa6c5,\n  (q15_t)0x5bc0, (q15_t)0xa6c0, (q15_t)0x5bbb, (q15_t)0xa6bc, (q15_t)0x5bb7, (q15_t)0xa6b7, (q15_t)0x5bb2, (q15_t)0xa6b3,\n  (q15_t)0x5bae, (q15_t)0xa6ae, (q15_t)0x5baa, (q15_t)0xa6aa, (q15_t)0x5ba5, (q15_t)0xa6a5, (q15_t)0x5ba1, (q15_t)0xa6a1,\n  (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b98, (q15_t)0xa698, (q15_t)0x5b94, (q15_t)0xa693, (q15_t)0x5b8f, (q15_t)0xa68f,\n  (q15_t)0x5b8b, (q15_t)0xa68a, (q15_t)0x5b87, (q15_t)0xa686, (q15_t)0x5b82, (q15_t)0xa681, (q15_t)0x5b7e, (q15_t)0xa67d,\n  (q15_t)0x5b79, (q15_t)0xa678, (q15_t)0x5b75, (q15_t)0xa674, (q15_t)0x5b71, (q15_t)0xa66f, (q15_t)0x5b6c, (q15_t)0xa66b,\n  (q15_t)0x5b68, (q15_t)0xa666, (q15_t)0x5b63, (q15_t)0xa662, (q15_t)0x5b5f, (q15_t)0xa65d, (q15_t)0x5b5b, (q15_t)0xa659,\n  (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b52, (q15_t)0xa650, (q15_t)0x5b4d, (q15_t)0xa64b, (q15_t)0x5b49, (q15_t)0xa647,\n  (q15_t)0x5b45, (q15_t)0xa642, (q15_t)0x5b40, (q15_t)0xa63e, (q15_t)0x5b3c, (q15_t)0xa639, (q15_t)0x5b37, (q15_t)0xa635,\n  (q15_t)0x5b33, (q15_t)0xa630, (q15_t)0x5b2f, (q15_t)0xa62c, (q15_t)0x5b2a, (q15_t)0xa627, (q15_t)0x5b26, (q15_t)0xa623,\n  (q15_t)0x5b21, (q15_t)0xa61f, (q15_t)0x5b1d, (q15_t)0xa61a, (q15_t)0x5b19, (q15_t)0xa616, (q15_t)0x5b14, (q15_t)0xa611,\n  (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5b0b, (q15_t)0xa608, (q15_t)0x5b07, (q15_t)0xa604, (q15_t)0x5b02, (q15_t)0xa5ff,\n  (q15_t)0x5afe, (q15_t)0xa5fb, (q15_t)0x5afa, (q15_t)0xa5f6, (q15_t)0x5af5, (q15_t)0xa5f2, (q15_t)0x5af1, (q15_t)0xa5ed,\n  (q15_t)0x5aec, (q15_t)0xa5e9, (q15_t)0x5ae8, (q15_t)0xa5e4, (q15_t)0x5ae4, (q15_t)0xa5e0, (q15_t)0x5adf, (q15_t)0xa5dc,\n  (q15_t)0x5adb, (q15_t)0xa5d7, (q15_t)0x5ad6, (q15_t)0xa5d3, (q15_t)0x5ad2, (q15_t)0xa5ce, (q15_t)0x5acd, (q15_t)0xa5ca,\n  (q15_t)0x5ac9, (q15_t)0xa5c5, (q15_t)0x5ac5, (q15_t)0xa5c1, (q15_t)0x5ac0, (q15_t)0xa5bc, (q15_t)0x5abc, (q15_t)0xa5b8,\n  (q15_t)0x5ab7, (q15_t)0xa5b3, (q15_t)0x5ab3, (q15_t)0xa5af, (q15_t)0x5aae, (q15_t)0xa5aa, (q15_t)0x5aaa, (q15_t)0xa5a6,\n  (q15_t)0x5aa5, (q15_t)0xa5a2, (q15_t)0x5aa1, (q15_t)0xa59d, (q15_t)0x5a9d, (q15_t)0xa599, (q15_t)0x5a98, (q15_t)0xa594,\n  (q15_t)0x5a94, (q15_t)0xa590, (q15_t)0x5a8f, (q15_t)0xa58b, (q15_t)0x5a8b, (q15_t)0xa587, (q15_t)0x5a86, (q15_t)0xa582,\n  (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a7e, (q15_t)0xa57a, (q15_t)0x5a79, (q15_t)0xa575, (q15_t)0x5a75, (q15_t)0xa571,\n  (q15_t)0x5a70, (q15_t)0xa56c, (q15_t)0x5a6c, (q15_t)0xa568, (q15_t)0x5a67, (q15_t)0xa563, (q15_t)0x5a63, (q15_t)0xa55f,\n  (q15_t)0x5a5e, (q15_t)0xa55b, (q15_t)0x5a5a, (q15_t)0xa556, (q15_t)0x5a56, (q15_t)0xa552, (q15_t)0x5a51, (q15_t)0xa54d,\n  (q15_t)0x5a4d, (q15_t)0xa549, (q15_t)0x5a48, (q15_t)0xa544, (q15_t)0x5a44, (q15_t)0xa540, (q15_t)0x5a3f, (q15_t)0xa53b,\n  (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x5a36, (q15_t)0xa533, (q15_t)0x5a32, (q15_t)0xa52e, (q15_t)0x5a2d, (q15_t)0xa52a,\n  (q15_t)0x5a29, (q15_t)0xa525, (q15_t)0x5a24, (q15_t)0xa521, (q15_t)0x5a20, (q15_t)0xa51c, (q15_t)0x5a1c, (q15_t)0xa518,\n  (q15_t)0x5a17, (q15_t)0xa514, (q15_t)0x5a13, (q15_t)0xa50f, (q15_t)0x5a0e, (q15_t)0xa50b, (q15_t)0x5a0a, (q15_t)0xa506,\n  (q15_t)0x5a05, (q15_t)0xa502, (q15_t)0x5a01, (q15_t)0xa4fe, (q15_t)0x59fc, (q15_t)0xa4f9, (q15_t)0x59f8, (q15_t)0xa4f5,\n  (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59ef, (q15_t)0xa4ec, (q15_t)0x59ea, (q15_t)0xa4e7, (q15_t)0x59e6, (q15_t)0xa4e3,\n  (q15_t)0x59e1, (q15_t)0xa4df, (q15_t)0x59dd, (q15_t)0xa4da, (q15_t)0x59d9, (q15_t)0xa4d6, (q15_t)0x59d4, (q15_t)0xa4d1,\n  (q15_t)0x59d0, (q15_t)0xa4cd, (q15_t)0x59cb, (q15_t)0xa4c9, (q15_t)0x59c7, (q15_t)0xa4c4, (q15_t)0x59c2, (q15_t)0xa4c0,\n  (q15_t)0x59be, (q15_t)0xa4bb, (q15_t)0x59b9, (q15_t)0xa4b7, (q15_t)0x59b5, (q15_t)0xa4b3, (q15_t)0x59b0, (q15_t)0xa4ae,\n  (q15_t)0x59ac, (q15_t)0xa4aa, (q15_t)0x59a7, (q15_t)0xa4a5, (q15_t)0x59a3, (q15_t)0xa4a1, (q15_t)0x599e, (q15_t)0xa49d,\n  (q15_t)0x599a, (q15_t)0xa498, (q15_t)0x5995, (q15_t)0xa494, (q15_t)0x5991, (q15_t)0xa48f, (q15_t)0x598c, (q15_t)0xa48b,\n  (q15_t)0x5988, (q15_t)0xa487, (q15_t)0x5983, (q15_t)0xa482, (q15_t)0x597f, (q15_t)0xa47e, (q15_t)0x597a, (q15_t)0xa479,\n  (q15_t)0x5976, (q15_t)0xa475, (q15_t)0x5971, (q15_t)0xa471, (q15_t)0x596d, (q15_t)0xa46c, (q15_t)0x5968, (q15_t)0xa468,\n  (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x595f, (q15_t)0xa45f, (q15_t)0x595b, (q15_t)0xa45b, (q15_t)0x5956, (q15_t)0xa456,\n  (q15_t)0x5952, (q15_t)0xa452, (q15_t)0x594d, (q15_t)0xa44e, (q15_t)0x5949, (q15_t)0xa449, (q15_t)0x5944, (q15_t)0xa445,\n  (q15_t)0x5940, (q15_t)0xa440, (q15_t)0x593b, (q15_t)0xa43c, (q15_t)0x5937, (q15_t)0xa438, (q15_t)0x5932, (q15_t)0xa433,\n  (q15_t)0x592e, (q15_t)0xa42f, (q15_t)0x5929, (q15_t)0xa42a, (q15_t)0x5925, (q15_t)0xa426, (q15_t)0x5920, (q15_t)0xa422,\n  (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x5917, (q15_t)0xa419, (q15_t)0x5913, (q15_t)0xa415, (q15_t)0x590e, (q15_t)0xa410,\n  (q15_t)0x590a, (q15_t)0xa40c, (q15_t)0x5905, (q15_t)0xa407, (q15_t)0x5901, (q15_t)0xa403, (q15_t)0x58fc, (q15_t)0xa3ff,\n  (q15_t)0x58f8, (q15_t)0xa3fa, (q15_t)0x58f3, (q15_t)0xa3f6, (q15_t)0x58ef, (q15_t)0xa3f2, (q15_t)0x58ea, (q15_t)0xa3ed,\n  (q15_t)0x58e6, (q15_t)0xa3e9, (q15_t)0x58e1, (q15_t)0xa3e5, (q15_t)0x58dd, (q15_t)0xa3e0, (q15_t)0x58d8, (q15_t)0xa3dc,\n  (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x58cf, (q15_t)0xa3d3, (q15_t)0x58cb, (q15_t)0xa3cf, (q15_t)0x58c6, (q15_t)0xa3ca,\n  (q15_t)0x58c1, (q15_t)0xa3c6, (q15_t)0x58bd, (q15_t)0xa3c2, (q15_t)0x58b8, (q15_t)0xa3bd, (q15_t)0x58b4, (q15_t)0xa3b9,\n  (q15_t)0x58af, (q15_t)0xa3b5, (q15_t)0x58ab, (q15_t)0xa3b0, (q15_t)0x58a6, (q15_t)0xa3ac, (q15_t)0x58a2, (q15_t)0xa3a8,\n  (q15_t)0x589d, (q15_t)0xa3a3, (q15_t)0x5899, (q15_t)0xa39f, (q15_t)0x5894, (q15_t)0xa39a, (q15_t)0x5890, (q15_t)0xa396,\n  (q15_t)0x588b, (q15_t)0xa392, (q15_t)0x5887, (q15_t)0xa38d, (q15_t)0x5882, (q15_t)0xa389, (q15_t)0x587d, (q15_t)0xa385,\n  (q15_t)0x5879, (q15_t)0xa380, (q15_t)0x5874, (q15_t)0xa37c, (q15_t)0x5870, (q15_t)0xa378, (q15_t)0x586b, (q15_t)0xa373,\n  (q15_t)0x5867, (q15_t)0xa36f, (q15_t)0x5862, (q15_t)0xa36b, (q15_t)0x585e, (q15_t)0xa366, (q15_t)0x5859, (q15_t)0xa362,\n  (q15_t)0x5855, (q15_t)0xa35e, (q15_t)0x5850, (q15_t)0xa359, (q15_t)0x584b, (q15_t)0xa355, (q15_t)0x5847, (q15_t)0xa351,\n  (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x583e, (q15_t)0xa348, (q15_t)0x5839, (q15_t)0xa344, (q15_t)0x5835, (q15_t)0xa33f,\n  (q15_t)0x5830, (q15_t)0xa33b, (q15_t)0x582c, (q15_t)0xa337, (q15_t)0x5827, (q15_t)0xa332, (q15_t)0x5822, (q15_t)0xa32e,\n  (q15_t)0x581e, (q15_t)0xa32a, (q15_t)0x5819, (q15_t)0xa325, (q15_t)0x5815, (q15_t)0xa321, (q15_t)0x5810, (q15_t)0xa31d,\n  (q15_t)0x580c, (q15_t)0xa318, (q15_t)0x5807, (q15_t)0xa314, (q15_t)0x5803, (q15_t)0xa310, (q15_t)0x57fe, (q15_t)0xa30b,\n  (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57f5, (q15_t)0xa303, (q15_t)0x57f0, (q15_t)0xa2ff, (q15_t)0x57ec, (q15_t)0xa2fa,\n  (q15_t)0x57e7, (q15_t)0xa2f6, (q15_t)0x57e3, (q15_t)0xa2f2, (q15_t)0x57de, (q15_t)0xa2ed, (q15_t)0x57d9, (q15_t)0xa2e9,\n  (q15_t)0x57d5, (q15_t)0xa2e5, (q15_t)0x57d0, (q15_t)0xa2e0, (q15_t)0x57cc, (q15_t)0xa2dc, (q15_t)0x57c7, (q15_t)0xa2d8,\n  (q15_t)0x57c3, (q15_t)0xa2d3, (q15_t)0x57be, (q15_t)0xa2cf, (q15_t)0x57b9, (q15_t)0xa2cb, (q15_t)0x57b5, (q15_t)0xa2c6,\n  (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x57ac, (q15_t)0xa2be, (q15_t)0x57a7, (q15_t)0xa2ba, (q15_t)0x57a3, (q15_t)0xa2b5,\n  (q15_t)0x579e, (q15_t)0xa2b1, (q15_t)0x5799, (q15_t)0xa2ad, (q15_t)0x5795, (q15_t)0xa2a8, (q15_t)0x5790, (q15_t)0xa2a4,\n  (q15_t)0x578c, (q15_t)0xa2a0, (q15_t)0x5787, (q15_t)0xa29b, (q15_t)0x5783, (q15_t)0xa297, (q15_t)0x577e, (q15_t)0xa293,\n  (q15_t)0x5779, (q15_t)0xa28f, (q15_t)0x5775, (q15_t)0xa28a, (q15_t)0x5770, (q15_t)0xa286, (q15_t)0x576c, (q15_t)0xa282,\n  (q15_t)0x5767, (q15_t)0xa27d, (q15_t)0x5762, (q15_t)0xa279, (q15_t)0x575e, (q15_t)0xa275, (q15_t)0x5759, (q15_t)0xa271,\n  (q15_t)0x5755, (q15_t)0xa26c, (q15_t)0x5750, (q15_t)0xa268, (q15_t)0x574b, (q15_t)0xa264, (q15_t)0x5747, (q15_t)0xa25f,\n  (q15_t)0x5742, (q15_t)0xa25b, (q15_t)0x573e, (q15_t)0xa257, (q15_t)0x5739, (q15_t)0xa253, (q15_t)0x5734, (q15_t)0xa24e,\n  (q15_t)0x5730, (q15_t)0xa24a, (q15_t)0x572b, (q15_t)0xa246, (q15_t)0x5727, (q15_t)0xa241, (q15_t)0x5722, (q15_t)0xa23d,\n  (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x5719, (q15_t)0xa235, (q15_t)0x5714, (q15_t)0xa230, (q15_t)0x5710, (q15_t)0xa22c,\n  (q15_t)0x570b, (q15_t)0xa228, (q15_t)0x5706, (q15_t)0xa224, (q15_t)0x5702, (q15_t)0xa21f, (q15_t)0x56fd, (q15_t)0xa21b,\n  (q15_t)0x56f9, (q15_t)0xa217, (q15_t)0x56f4, (q15_t)0xa212, (q15_t)0x56ef, (q15_t)0xa20e, (q15_t)0x56eb, (q15_t)0xa20a,\n  (q15_t)0x56e6, (q15_t)0xa206, (q15_t)0x56e2, (q15_t)0xa201, (q15_t)0x56dd, (q15_t)0xa1fd, (q15_t)0x56d8, (q15_t)0xa1f9,\n  (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x56cf, (q15_t)0xa1f0, (q15_t)0x56ca, (q15_t)0xa1ec, (q15_t)0x56c6, (q15_t)0xa1e8,\n  (q15_t)0x56c1, (q15_t)0xa1e4, (q15_t)0x56bd, (q15_t)0xa1df, (q15_t)0x56b8, (q15_t)0xa1db, (q15_t)0x56b3, (q15_t)0xa1d7,\n  (q15_t)0x56af, (q15_t)0xa1d3, (q15_t)0x56aa, (q15_t)0xa1ce, (q15_t)0x56a5, (q15_t)0xa1ca, (q15_t)0x56a1, (q15_t)0xa1c6,\n  (q15_t)0x569c, (q15_t)0xa1c1, (q15_t)0x5698, (q15_t)0xa1bd, (q15_t)0x5693, (q15_t)0xa1b9, (q15_t)0x568e, (q15_t)0xa1b5,\n  (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5685, (q15_t)0xa1ac, (q15_t)0x5680, (q15_t)0xa1a8, (q15_t)0x567c, (q15_t)0xa1a4,\n  (q15_t)0x5677, (q15_t)0xa1a0, (q15_t)0x5673, (q15_t)0xa19b, (q15_t)0x566e, (q15_t)0xa197, (q15_t)0x5669, (q15_t)0xa193,\n  (q15_t)0x5665, (q15_t)0xa18f, (q15_t)0x5660, (q15_t)0xa18a, (q15_t)0x565b, (q15_t)0xa186, (q15_t)0x5657, (q15_t)0xa182,\n  (q15_t)0x5652, (q15_t)0xa17e, (q15_t)0x564d, (q15_t)0xa179, (q15_t)0x5649, (q15_t)0xa175, (q15_t)0x5644, (q15_t)0xa171,\n  (q15_t)0x5640, (q15_t)0xa16d, (q15_t)0x563b, (q15_t)0xa168, (q15_t)0x5636, (q15_t)0xa164, (q15_t)0x5632, (q15_t)0xa160,\n  (q15_t)0x562d, (q15_t)0xa15c, (q15_t)0x5628, (q15_t)0xa157, (q15_t)0x5624, (q15_t)0xa153, (q15_t)0x561f, (q15_t)0xa14f,\n  (q15_t)0x561a, (q15_t)0xa14b, (q15_t)0x5616, (q15_t)0xa147, (q15_t)0x5611, (q15_t)0xa142, (q15_t)0x560c, (q15_t)0xa13e,\n  (q15_t)0x5608, (q15_t)0xa13a, (q15_t)0x5603, (q15_t)0xa136, (q15_t)0x55fe, (q15_t)0xa131, (q15_t)0x55fa, (q15_t)0xa12d,\n  (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55f0, (q15_t)0xa125, (q15_t)0x55ec, (q15_t)0xa121, (q15_t)0x55e7, (q15_t)0xa11c,\n  (q15_t)0x55e3, (q15_t)0xa118, (q15_t)0x55de, (q15_t)0xa114, (q15_t)0x55d9, (q15_t)0xa110, (q15_t)0x55d5, (q15_t)0xa10b,\n  (q15_t)0x55d0, (q15_t)0xa107, (q15_t)0x55cb, (q15_t)0xa103, (q15_t)0x55c7, (q15_t)0xa0ff, (q15_t)0x55c2, (q15_t)0xa0fb,\n  (q15_t)0x55bd, (q15_t)0xa0f6, (q15_t)0x55b9, (q15_t)0xa0f2, (q15_t)0x55b4, (q15_t)0xa0ee, (q15_t)0x55af, (q15_t)0xa0ea,\n  (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x55a6, (q15_t)0xa0e1, (q15_t)0x55a1, (q15_t)0xa0dd, (q15_t)0x559d, (q15_t)0xa0d9,\n  (q15_t)0x5598, (q15_t)0xa0d5, (q15_t)0x5593, (q15_t)0xa0d1, (q15_t)0x558f, (q15_t)0xa0cc, (q15_t)0x558a, (q15_t)0xa0c8,\n  (q15_t)0x5585, (q15_t)0xa0c4, (q15_t)0x5581, (q15_t)0xa0c0, (q15_t)0x557c, (q15_t)0xa0bc, (q15_t)0x5577, (q15_t)0xa0b7,\n  (q15_t)0x5572, (q15_t)0xa0b3, (q15_t)0x556e, (q15_t)0xa0af, (q15_t)0x5569, (q15_t)0xa0ab, (q15_t)0x5564, (q15_t)0xa0a7,\n  (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x555b, (q15_t)0xa09e, (q15_t)0x5556, (q15_t)0xa09a, (q15_t)0x5552, (q15_t)0xa096,\n  (q15_t)0x554d, (q15_t)0xa092, (q15_t)0x5548, (q15_t)0xa08e, (q15_t)0x5544, (q15_t)0xa089, (q15_t)0x553f, (q15_t)0xa085,\n  (q15_t)0x553a, (q15_t)0xa081, (q15_t)0x5536, (q15_t)0xa07d, (q15_t)0x5531, (q15_t)0xa079, (q15_t)0x552c, (q15_t)0xa074,\n  (q15_t)0x5528, (q15_t)0xa070, (q15_t)0x5523, (q15_t)0xa06c, (q15_t)0x551e, (q15_t)0xa068, (q15_t)0x5519, (q15_t)0xa064,\n  (q15_t)0x5515, (q15_t)0xa060, (q15_t)0x5510, (q15_t)0xa05b, (q15_t)0x550b, (q15_t)0xa057, (q15_t)0x5507, (q15_t)0xa053,\n  (q15_t)0x5502, (q15_t)0xa04f, (q15_t)0x54fd, (q15_t)0xa04b, (q15_t)0x54f9, (q15_t)0xa046, (q15_t)0x54f4, (q15_t)0xa042,\n  (q15_t)0x54ef, (q15_t)0xa03e, (q15_t)0x54ea, (q15_t)0xa03a, (q15_t)0x54e6, (q15_t)0xa036, (q15_t)0x54e1, (q15_t)0xa032,\n  (q15_t)0x54dc, (q15_t)0xa02d, (q15_t)0x54d8, (q15_t)0xa029, (q15_t)0x54d3, (q15_t)0xa025, (q15_t)0x54ce, (q15_t)0xa021,\n  (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x54c5, (q15_t)0xa019, (q15_t)0x54c0, (q15_t)0xa014, (q15_t)0x54bb, (q15_t)0xa010,\n  (q15_t)0x54b7, (q15_t)0xa00c, (q15_t)0x54b2, (q15_t)0xa008, (q15_t)0x54ad, (q15_t)0xa004, (q15_t)0x54a9, (q15_t)0xa000,\n  (q15_t)0x54a4, (q15_t)0x9ffc, (q15_t)0x549f, (q15_t)0x9ff7, (q15_t)0x549a, (q15_t)0x9ff3, (q15_t)0x5496, (q15_t)0x9fef,\n  (q15_t)0x5491, (q15_t)0x9feb, (q15_t)0x548c, (q15_t)0x9fe7, (q15_t)0x5488, (q15_t)0x9fe3, (q15_t)0x5483, (q15_t)0x9fde,\n  (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x5479, (q15_t)0x9fd6, (q15_t)0x5475, (q15_t)0x9fd2, (q15_t)0x5470, (q15_t)0x9fce,\n  (q15_t)0x546b, (q15_t)0x9fca, (q15_t)0x5467, (q15_t)0x9fc6, (q15_t)0x5462, (q15_t)0x9fc1, (q15_t)0x545d, (q15_t)0x9fbd,\n  (q15_t)0x5458, (q15_t)0x9fb9, (q15_t)0x5454, (q15_t)0x9fb5, (q15_t)0x544f, (q15_t)0x9fb1, (q15_t)0x544a, (q15_t)0x9fad,\n  (q15_t)0x5445, (q15_t)0x9fa9, (q15_t)0x5441, (q15_t)0x9fa4, (q15_t)0x543c, (q15_t)0x9fa0, (q15_t)0x5437, (q15_t)0x9f9c,\n  (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x542e, (q15_t)0x9f94, (q15_t)0x5429, (q15_t)0x9f90, (q15_t)0x5424, (q15_t)0x9f8c,\n  (q15_t)0x5420, (q15_t)0x9f88, (q15_t)0x541b, (q15_t)0x9f83, (q15_t)0x5416, (q15_t)0x9f7f, (q15_t)0x5411, (q15_t)0x9f7b,\n  (q15_t)0x540d, (q15_t)0x9f77, (q15_t)0x5408, (q15_t)0x9f73, (q15_t)0x5403, (q15_t)0x9f6f, (q15_t)0x53fe, (q15_t)0x9f6b,\n  (q15_t)0x53fa, (q15_t)0x9f67, (q15_t)0x53f5, (q15_t)0x9f62, (q15_t)0x53f0, (q15_t)0x9f5e, (q15_t)0x53eb, (q15_t)0x9f5a,\n  (q15_t)0x53e7, (q15_t)0x9f56, (q15_t)0x53e2, (q15_t)0x9f52, (q15_t)0x53dd, (q15_t)0x9f4e, (q15_t)0x53d8, (q15_t)0x9f4a,\n  (q15_t)0x53d4, (q15_t)0x9f46, (q15_t)0x53cf, (q15_t)0x9f41, (q15_t)0x53ca, (q15_t)0x9f3d, (q15_t)0x53c5, (q15_t)0x9f39,\n  (q15_t)0x53c1, (q15_t)0x9f35, (q15_t)0x53bc, (q15_t)0x9f31, (q15_t)0x53b7, (q15_t)0x9f2d, (q15_t)0x53b2, (q15_t)0x9f29,\n  (q15_t)0x53ae, (q15_t)0x9f25, (q15_t)0x53a9, (q15_t)0x9f21, (q15_t)0x53a4, (q15_t)0x9f1c, (q15_t)0x539f, (q15_t)0x9f18,\n  (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5396, (q15_t)0x9f10, (q15_t)0x5391, (q15_t)0x9f0c, (q15_t)0x538c, (q15_t)0x9f08,\n  (q15_t)0x5388, (q15_t)0x9f04, (q15_t)0x5383, (q15_t)0x9f00, (q15_t)0x537e, (q15_t)0x9efc, (q15_t)0x5379, (q15_t)0x9ef8,\n  (q15_t)0x5375, (q15_t)0x9ef3, (q15_t)0x5370, (q15_t)0x9eef, (q15_t)0x536b, (q15_t)0x9eeb, (q15_t)0x5366, (q15_t)0x9ee7,\n  (q15_t)0x5362, (q15_t)0x9ee3, (q15_t)0x535d, (q15_t)0x9edf, (q15_t)0x5358, (q15_t)0x9edb, (q15_t)0x5353, (q15_t)0x9ed7,\n  (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x534a, (q15_t)0x9ecf, (q15_t)0x5345, (q15_t)0x9ecb, (q15_t)0x5340, (q15_t)0x9ec6,\n  (q15_t)0x533b, (q15_t)0x9ec2, (q15_t)0x5337, (q15_t)0x9ebe, (q15_t)0x5332, (q15_t)0x9eba, (q15_t)0x532d, (q15_t)0x9eb6,\n  (q15_t)0x5328, (q15_t)0x9eb2, (q15_t)0x5323, (q15_t)0x9eae, (q15_t)0x531f, (q15_t)0x9eaa, (q15_t)0x531a, (q15_t)0x9ea6,\n  (q15_t)0x5315, (q15_t)0x9ea2, (q15_t)0x5310, (q15_t)0x9e9e, (q15_t)0x530c, (q15_t)0x9e9a, (q15_t)0x5307, (q15_t)0x9e95,\n  (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52fd, (q15_t)0x9e8d, (q15_t)0x52f8, (q15_t)0x9e89, (q15_t)0x52f4, (q15_t)0x9e85,\n  (q15_t)0x52ef, (q15_t)0x9e81, (q15_t)0x52ea, (q15_t)0x9e7d, (q15_t)0x52e5, (q15_t)0x9e79, (q15_t)0x52e1, (q15_t)0x9e75,\n  (q15_t)0x52dc, (q15_t)0x9e71, (q15_t)0x52d7, (q15_t)0x9e6d, (q15_t)0x52d2, (q15_t)0x9e69, (q15_t)0x52cd, (q15_t)0x9e65,\n  (q15_t)0x52c9, (q15_t)0x9e61, (q15_t)0x52c4, (q15_t)0x9e5d, (q15_t)0x52bf, (q15_t)0x9e58, (q15_t)0x52ba, (q15_t)0x9e54,\n  (q15_t)0x52b5, (q15_t)0x9e50, (q15_t)0x52b1, (q15_t)0x9e4c, (q15_t)0x52ac, (q15_t)0x9e48, (q15_t)0x52a7, (q15_t)0x9e44,\n  (q15_t)0x52a2, (q15_t)0x9e40, (q15_t)0x529d, (q15_t)0x9e3c, (q15_t)0x5299, (q15_t)0x9e38, (q15_t)0x5294, (q15_t)0x9e34,\n  (q15_t)0x528f, (q15_t)0x9e30, (q15_t)0x528a, (q15_t)0x9e2c, (q15_t)0x5285, (q15_t)0x9e28, (q15_t)0x5281, (q15_t)0x9e24,\n  (q15_t)0x527c, (q15_t)0x9e20, (q15_t)0x5277, (q15_t)0x9e1c, (q15_t)0x5272, (q15_t)0x9e18, (q15_t)0x526d, (q15_t)0x9e14,\n  (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x5264, (q15_t)0x9e0b, (q15_t)0x525f, (q15_t)0x9e07, (q15_t)0x525a, (q15_t)0x9e03,\n  (q15_t)0x5255, (q15_t)0x9dff, (q15_t)0x5251, (q15_t)0x9dfb, (q15_t)0x524c, (q15_t)0x9df7, (q15_t)0x5247, (q15_t)0x9df3,\n  (q15_t)0x5242, (q15_t)0x9def, (q15_t)0x523d, (q15_t)0x9deb, (q15_t)0x5238, (q15_t)0x9de7, (q15_t)0x5234, (q15_t)0x9de3,\n  (q15_t)0x522f, (q15_t)0x9ddf, (q15_t)0x522a, (q15_t)0x9ddb, (q15_t)0x5225, (q15_t)0x9dd7, (q15_t)0x5220, (q15_t)0x9dd3,\n  (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x5217, (q15_t)0x9dcb, (q15_t)0x5212, (q15_t)0x9dc7, (q15_t)0x520d, (q15_t)0x9dc3,\n  (q15_t)0x5208, (q15_t)0x9dbf, (q15_t)0x5203, (q15_t)0x9dbb, (q15_t)0x51ff, (q15_t)0x9db7, (q15_t)0x51fa, (q15_t)0x9db3,\n  (q15_t)0x51f5, (q15_t)0x9daf, (q15_t)0x51f0, (q15_t)0x9dab, (q15_t)0x51eb, (q15_t)0x9da7, (q15_t)0x51e6, (q15_t)0x9da3,\n  (q15_t)0x51e2, (q15_t)0x9d9f, (q15_t)0x51dd, (q15_t)0x9d9b, (q15_t)0x51d8, (q15_t)0x9d97, (q15_t)0x51d3, (q15_t)0x9d93,\n  (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x51c9, (q15_t)0x9d8b, (q15_t)0x51c5, (q15_t)0x9d86, (q15_t)0x51c0, (q15_t)0x9d82,\n  (q15_t)0x51bb, (q15_t)0x9d7e, (q15_t)0x51b6, (q15_t)0x9d7a, (q15_t)0x51b1, (q15_t)0x9d76, (q15_t)0x51ac, (q15_t)0x9d72,\n  (q15_t)0x51a8, (q15_t)0x9d6e, (q15_t)0x51a3, (q15_t)0x9d6a, (q15_t)0x519e, (q15_t)0x9d66, (q15_t)0x5199, (q15_t)0x9d62,\n  (q15_t)0x5194, (q15_t)0x9d5e, (q15_t)0x518f, (q15_t)0x9d5a, (q15_t)0x518b, (q15_t)0x9d56, (q15_t)0x5186, (q15_t)0x9d52,\n  (q15_t)0x5181, (q15_t)0x9d4e, (q15_t)0x517c, (q15_t)0x9d4a, (q15_t)0x5177, (q15_t)0x9d46, (q15_t)0x5172, (q15_t)0x9d42,\n  (q15_t)0x516e, (q15_t)0x9d3e, (q15_t)0x5169, (q15_t)0x9d3a, (q15_t)0x5164, (q15_t)0x9d36, (q15_t)0x515f, (q15_t)0x9d32,\n  (q15_t)0x515a, (q15_t)0x9d2e, (q15_t)0x5155, (q15_t)0x9d2a, (q15_t)0x5150, (q15_t)0x9d26, (q15_t)0x514c, (q15_t)0x9d22,\n  (q15_t)0x5147, (q15_t)0x9d1e, (q15_t)0x5142, (q15_t)0x9d1a, (q15_t)0x513d, (q15_t)0x9d16, (q15_t)0x5138, (q15_t)0x9d12,\n  (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x512e, (q15_t)0x9d0b, (q15_t)0x512a, (q15_t)0x9d07, (q15_t)0x5125, (q15_t)0x9d03,\n  (q15_t)0x5120, (q15_t)0x9cff, (q15_t)0x511b, (q15_t)0x9cfb, (q15_t)0x5116, (q15_t)0x9cf7, (q15_t)0x5111, (q15_t)0x9cf3,\n  (q15_t)0x510c, (q15_t)0x9cef, (q15_t)0x5108, (q15_t)0x9ceb, (q15_t)0x5103, (q15_t)0x9ce7, (q15_t)0x50fe, (q15_t)0x9ce3,\n  (q15_t)0x50f9, (q15_t)0x9cdf, (q15_t)0x50f4, (q15_t)0x9cdb, (q15_t)0x50ef, (q15_t)0x9cd7, (q15_t)0x50ea, (q15_t)0x9cd3,\n  (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x50e1, (q15_t)0x9ccb, (q15_t)0x50dc, (q15_t)0x9cc7, (q15_t)0x50d7, (q15_t)0x9cc3,\n  (q15_t)0x50d2, (q15_t)0x9cbf, (q15_t)0x50cd, (q15_t)0x9cbb, (q15_t)0x50c8, (q15_t)0x9cb7, (q15_t)0x50c3, (q15_t)0x9cb3,\n  (q15_t)0x50bf, (q15_t)0x9caf, (q15_t)0x50ba, (q15_t)0x9cab, (q15_t)0x50b5, (q15_t)0x9ca7, (q15_t)0x50b0, (q15_t)0x9ca3,\n  (q15_t)0x50ab, (q15_t)0x9c9f, (q15_t)0x50a6, (q15_t)0x9c9b, (q15_t)0x50a1, (q15_t)0x9c97, (q15_t)0x509c, (q15_t)0x9c93,\n  (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5093, (q15_t)0x9c8b, (q15_t)0x508e, (q15_t)0x9c88, (q15_t)0x5089, (q15_t)0x9c84,\n  (q15_t)0x5084, (q15_t)0x9c80, (q15_t)0x507f, (q15_t)0x9c7c, (q15_t)0x507a, (q15_t)0x9c78, (q15_t)0x5075, (q15_t)0x9c74,\n  (q15_t)0x5070, (q15_t)0x9c70, (q15_t)0x506c, (q15_t)0x9c6c, (q15_t)0x5067, (q15_t)0x9c68, (q15_t)0x5062, (q15_t)0x9c64,\n  (q15_t)0x505d, (q15_t)0x9c60, (q15_t)0x5058, (q15_t)0x9c5c, (q15_t)0x5053, (q15_t)0x9c58, (q15_t)0x504e, (q15_t)0x9c54,\n  (q15_t)0x5049, (q15_t)0x9c50, (q15_t)0x5044, (q15_t)0x9c4c, (q15_t)0x503f, (q15_t)0x9c48, (q15_t)0x503b, (q15_t)0x9c44,\n  (q15_t)0x5036, (q15_t)0x9c40, (q15_t)0x5031, (q15_t)0x9c3d, (q15_t)0x502c, (q15_t)0x9c39, (q15_t)0x5027, (q15_t)0x9c35,\n  (q15_t)0x5022, (q15_t)0x9c31, (q15_t)0x501d, (q15_t)0x9c2d, (q15_t)0x5018, (q15_t)0x9c29, (q15_t)0x5013, (q15_t)0x9c25,\n  (q15_t)0x500f, (q15_t)0x9c21, (q15_t)0x500a, (q15_t)0x9c1d, (q15_t)0x5005, (q15_t)0x9c19, (q15_t)0x5000, (q15_t)0x9c15,\n  (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4ff6, (q15_t)0x9c0d, (q15_t)0x4ff1, (q15_t)0x9c09, (q15_t)0x4fec, (q15_t)0x9c06,\n  (q15_t)0x4fe7, (q15_t)0x9c02, (q15_t)0x4fe2, (q15_t)0x9bfe, (q15_t)0x4fdd, (q15_t)0x9bfa, (q15_t)0x4fd9, (q15_t)0x9bf6,\n  (q15_t)0x4fd4, (q15_t)0x9bf2, (q15_t)0x4fcf, (q15_t)0x9bee, (q15_t)0x4fca, (q15_t)0x9bea, (q15_t)0x4fc5, (q15_t)0x9be6,\n  (q15_t)0x4fc0, (q15_t)0x9be2, (q15_t)0x4fbb, (q15_t)0x9bde, (q15_t)0x4fb6, (q15_t)0x9bda, (q15_t)0x4fb1, (q15_t)0x9bd7,\n  (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4fa7, (q15_t)0x9bcf, (q15_t)0x4fa2, (q15_t)0x9bcb, (q15_t)0x4f9e, (q15_t)0x9bc7,\n  (q15_t)0x4f99, (q15_t)0x9bc3, (q15_t)0x4f94, (q15_t)0x9bbf, (q15_t)0x4f8f, (q15_t)0x9bbb, (q15_t)0x4f8a, (q15_t)0x9bb7,\n  (q15_t)0x4f85, (q15_t)0x9bb3, (q15_t)0x4f80, (q15_t)0x9baf, (q15_t)0x4f7b, (q15_t)0x9bac, (q15_t)0x4f76, (q15_t)0x9ba8,\n  (q15_t)0x4f71, (q15_t)0x9ba4, (q15_t)0x4f6c, (q15_t)0x9ba0, (q15_t)0x4f67, (q15_t)0x9b9c, (q15_t)0x4f62, (q15_t)0x9b98,\n  (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f59, (q15_t)0x9b90, (q15_t)0x4f54, (q15_t)0x9b8c, (q15_t)0x4f4f, (q15_t)0x9b88,\n  (q15_t)0x4f4a, (q15_t)0x9b85, (q15_t)0x4f45, (q15_t)0x9b81, (q15_t)0x4f40, (q15_t)0x9b7d, (q15_t)0x4f3b, (q15_t)0x9b79,\n  (q15_t)0x4f36, (q15_t)0x9b75, (q15_t)0x4f31, (q15_t)0x9b71, (q15_t)0x4f2c, (q15_t)0x9b6d, (q15_t)0x4f27, (q15_t)0x9b69,\n  (q15_t)0x4f22, (q15_t)0x9b65, (q15_t)0x4f1d, (q15_t)0x9b62, (q15_t)0x4f18, (q15_t)0x9b5e, (q15_t)0x4f14, (q15_t)0x9b5a,\n  (q15_t)0x4f0f, (q15_t)0x9b56, (q15_t)0x4f0a, (q15_t)0x9b52, (q15_t)0x4f05, (q15_t)0x9b4e, (q15_t)0x4f00, (q15_t)0x9b4a,\n  (q15_t)0x4efb, (q15_t)0x9b46, (q15_t)0x4ef6, (q15_t)0x9b43, (q15_t)0x4ef1, (q15_t)0x9b3f, (q15_t)0x4eec, (q15_t)0x9b3b,\n  (q15_t)0x4ee7, (q15_t)0x9b37, (q15_t)0x4ee2, (q15_t)0x9b33, (q15_t)0x4edd, (q15_t)0x9b2f, (q15_t)0x4ed8, (q15_t)0x9b2b,\n  (q15_t)0x4ed3, (q15_t)0x9b27, (q15_t)0x4ece, (q15_t)0x9b24, (q15_t)0x4ec9, (q15_t)0x9b20, (q15_t)0x4ec4, (q15_t)0x9b1c,\n  (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4eba, (q15_t)0x9b14, (q15_t)0x4eb6, (q15_t)0x9b10, (q15_t)0x4eb1, (q15_t)0x9b0c,\n  (q15_t)0x4eac, (q15_t)0x9b09, (q15_t)0x4ea7, (q15_t)0x9b05, (q15_t)0x4ea2, (q15_t)0x9b01, (q15_t)0x4e9d, (q15_t)0x9afd,\n  (q15_t)0x4e98, (q15_t)0x9af9, (q15_t)0x4e93, (q15_t)0x9af5, (q15_t)0x4e8e, (q15_t)0x9af1, (q15_t)0x4e89, (q15_t)0x9aed,\n  (q15_t)0x4e84, (q15_t)0x9aea, (q15_t)0x4e7f, (q15_t)0x9ae6, (q15_t)0x4e7a, (q15_t)0x9ae2, (q15_t)0x4e75, (q15_t)0x9ade,\n  (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e6b, (q15_t)0x9ad6, (q15_t)0x4e66, (q15_t)0x9ad3, (q15_t)0x4e61, (q15_t)0x9acf,\n  (q15_t)0x4e5c, (q15_t)0x9acb, (q15_t)0x4e57, (q15_t)0x9ac7, (q15_t)0x4e52, (q15_t)0x9ac3, (q15_t)0x4e4d, (q15_t)0x9abf,\n  (q15_t)0x4e48, (q15_t)0x9abb, (q15_t)0x4e43, (q15_t)0x9ab8, (q15_t)0x4e3e, (q15_t)0x9ab4, (q15_t)0x4e39, (q15_t)0x9ab0,\n  (q15_t)0x4e34, (q15_t)0x9aac, (q15_t)0x4e2f, (q15_t)0x9aa8, (q15_t)0x4e2a, (q15_t)0x9aa4, (q15_t)0x4e26, (q15_t)0x9aa1,\n  (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4e1c, (q15_t)0x9a99, (q15_t)0x4e17, (q15_t)0x9a95, (q15_t)0x4e12, (q15_t)0x9a91,\n  (q15_t)0x4e0d, (q15_t)0x9a8d, (q15_t)0x4e08, (q15_t)0x9a8a, (q15_t)0x4e03, (q15_t)0x9a86, (q15_t)0x4dfe, (q15_t)0x9a82,\n  (q15_t)0x4df9, (q15_t)0x9a7e, (q15_t)0x4df4, (q15_t)0x9a7a, (q15_t)0x4def, (q15_t)0x9a76, (q15_t)0x4dea, (q15_t)0x9a73,\n  (q15_t)0x4de5, (q15_t)0x9a6f, (q15_t)0x4de0, (q15_t)0x9a6b, (q15_t)0x4ddb, (q15_t)0x9a67, (q15_t)0x4dd6, (q15_t)0x9a63,\n  (q15_t)0x4dd1, (q15_t)0x9a60, (q15_t)0x4dcc, (q15_t)0x9a5c, (q15_t)0x4dc7, (q15_t)0x9a58, (q15_t)0x4dc2, (q15_t)0x9a54,\n  (q15_t)0x4dbd, (q15_t)0x9a50, (q15_t)0x4db8, (q15_t)0x9a4c, (q15_t)0x4db3, (q15_t)0x9a49, (q15_t)0x4dae, (q15_t)0x9a45,\n  (q15_t)0x4da9, (q15_t)0x9a41, (q15_t)0x4da4, (q15_t)0x9a3d, (q15_t)0x4d9f, (q15_t)0x9a39, (q15_t)0x4d9a, (q15_t)0x9a36,\n  (q15_t)0x4d95, (q15_t)0x9a32, (q15_t)0x4d90, (q15_t)0x9a2e, (q15_t)0x4d8b, (q15_t)0x9a2a, (q15_t)0x4d86, (q15_t)0x9a26,\n  (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d7c, (q15_t)0x9a1f, (q15_t)0x4d77, (q15_t)0x9a1b, (q15_t)0x4d72, (q15_t)0x9a17,\n  (q15_t)0x4d6d, (q15_t)0x9a13, (q15_t)0x4d68, (q15_t)0x9a10, (q15_t)0x4d63, (q15_t)0x9a0c, (q15_t)0x4d5e, (q15_t)0x9a08,\n  (q15_t)0x4d59, (q15_t)0x9a04, (q15_t)0x4d54, (q15_t)0x9a00, (q15_t)0x4d4f, (q15_t)0x99fd, (q15_t)0x4d4a, (q15_t)0x99f9,\n  (q15_t)0x4d45, (q15_t)0x99f5, (q15_t)0x4d40, (q15_t)0x99f1, (q15_t)0x4d3b, (q15_t)0x99ed, (q15_t)0x4d36, (q15_t)0x99ea,\n  (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4d2c, (q15_t)0x99e2, (q15_t)0x4d27, (q15_t)0x99de, (q15_t)0x4d22, (q15_t)0x99da,\n  (q15_t)0x4d1d, (q15_t)0x99d7, (q15_t)0x4d18, (q15_t)0x99d3, (q15_t)0x4d13, (q15_t)0x99cf, (q15_t)0x4d0e, (q15_t)0x99cb,\n  (q15_t)0x4d09, (q15_t)0x99c7, (q15_t)0x4d04, (q15_t)0x99c4, (q15_t)0x4cff, (q15_t)0x99c0, (q15_t)0x4cfa, (q15_t)0x99bc,\n  (q15_t)0x4cf5, (q15_t)0x99b8, (q15_t)0x4cf0, (q15_t)0x99b5, (q15_t)0x4ceb, (q15_t)0x99b1, (q15_t)0x4ce6, (q15_t)0x99ad,\n  (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4cdb, (q15_t)0x99a5, (q15_t)0x4cd6, (q15_t)0x99a2, (q15_t)0x4cd1, (q15_t)0x999e,\n  (q15_t)0x4ccc, (q15_t)0x999a, (q15_t)0x4cc7, (q15_t)0x9996, (q15_t)0x4cc2, (q15_t)0x9993, (q15_t)0x4cbd, (q15_t)0x998f,\n  (q15_t)0x4cb8, (q15_t)0x998b, (q15_t)0x4cb3, (q15_t)0x9987, (q15_t)0x4cae, (q15_t)0x9984, (q15_t)0x4ca9, (q15_t)0x9980,\n  (q15_t)0x4ca4, (q15_t)0x997c, (q15_t)0x4c9f, (q15_t)0x9978, (q15_t)0x4c9a, (q15_t)0x9975, (q15_t)0x4c95, (q15_t)0x9971,\n  (q15_t)0x4c90, (q15_t)0x996d, (q15_t)0x4c8b, (q15_t)0x9969, (q15_t)0x4c86, (q15_t)0x9965, (q15_t)0x4c81, (q15_t)0x9962,\n  (q15_t)0x4c7c, (q15_t)0x995e, (q15_t)0x4c77, (q15_t)0x995a, (q15_t)0x4c72, (q15_t)0x9956, (q15_t)0x4c6d, (q15_t)0x9953,\n  (q15_t)0x4c68, (q15_t)0x994f, (q15_t)0x4c63, (q15_t)0x994b, (q15_t)0x4c5e, (q15_t)0x9947, (q15_t)0x4c59, (q15_t)0x9944,\n  (q15_t)0x4c54, (q15_t)0x9940, (q15_t)0x4c4f, (q15_t)0x993c, (q15_t)0x4c49, (q15_t)0x9938, (q15_t)0x4c44, (q15_t)0x9935,\n  (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4c3a, (q15_t)0x992d, (q15_t)0x4c35, (q15_t)0x992a, (q15_t)0x4c30, (q15_t)0x9926,\n  (q15_t)0x4c2b, (q15_t)0x9922, (q15_t)0x4c26, (q15_t)0x991e, (q15_t)0x4c21, (q15_t)0x991b, (q15_t)0x4c1c, (q15_t)0x9917,\n  (q15_t)0x4c17, (q15_t)0x9913, (q15_t)0x4c12, (q15_t)0x990f, (q15_t)0x4c0d, (q15_t)0x990c, (q15_t)0x4c08, (q15_t)0x9908,\n  (q15_t)0x4c03, (q15_t)0x9904, (q15_t)0x4bfe, (q15_t)0x9900, (q15_t)0x4bf9, (q15_t)0x98fd, (q15_t)0x4bf4, (q15_t)0x98f9,\n  (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4be9, (q15_t)0x98f2, (q15_t)0x4be4, (q15_t)0x98ee, (q15_t)0x4bdf, (q15_t)0x98ea,\n  (q15_t)0x4bda, (q15_t)0x98e6, (q15_t)0x4bd5, (q15_t)0x98e3, (q15_t)0x4bd0, (q15_t)0x98df, (q15_t)0x4bcb, (q15_t)0x98db,\n  (q15_t)0x4bc6, (q15_t)0x98d7, (q15_t)0x4bc1, (q15_t)0x98d4, (q15_t)0x4bbc, (q15_t)0x98d0, (q15_t)0x4bb7, (q15_t)0x98cc,\n  (q15_t)0x4bb2, (q15_t)0x98c9, (q15_t)0x4bad, (q15_t)0x98c5, (q15_t)0x4ba8, (q15_t)0x98c1, (q15_t)0x4ba3, (q15_t)0x98bd,\n  (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b98, (q15_t)0x98b6, (q15_t)0x4b93, (q15_t)0x98b2, (q15_t)0x4b8e, (q15_t)0x98af,\n  (q15_t)0x4b89, (q15_t)0x98ab, (q15_t)0x4b84, (q15_t)0x98a7, (q15_t)0x4b7f, (q15_t)0x98a3, (q15_t)0x4b7a, (q15_t)0x98a0,\n  (q15_t)0x4b75, (q15_t)0x989c, (q15_t)0x4b70, (q15_t)0x9898, (q15_t)0x4b6b, (q15_t)0x9895, (q15_t)0x4b66, (q15_t)0x9891,\n  (q15_t)0x4b61, (q15_t)0x988d, (q15_t)0x4b5c, (q15_t)0x988a, (q15_t)0x4b56, (q15_t)0x9886, (q15_t)0x4b51, (q15_t)0x9882,\n  (q15_t)0x4b4c, (q15_t)0x987e, (q15_t)0x4b47, (q15_t)0x987b, (q15_t)0x4b42, (q15_t)0x9877, (q15_t)0x4b3d, (q15_t)0x9873,\n  (q15_t)0x4b38, (q15_t)0x9870, (q15_t)0x4b33, (q15_t)0x986c, (q15_t)0x4b2e, (q15_t)0x9868, (q15_t)0x4b29, (q15_t)0x9865,\n  (q15_t)0x4b24, (q15_t)0x9861, (q15_t)0x4b1f, (q15_t)0x985d, (q15_t)0x4b19, (q15_t)0x985a, (q15_t)0x4b14, (q15_t)0x9856,\n  (q15_t)0x4b0f, (q15_t)0x9852, (q15_t)0x4b0a, (q15_t)0x984e, (q15_t)0x4b05, (q15_t)0x984b, (q15_t)0x4b00, (q15_t)0x9847,\n  (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4af6, (q15_t)0x9840, (q15_t)0x4af1, (q15_t)0x983c, (q15_t)0x4aec, (q15_t)0x9838,\n  (q15_t)0x4ae7, (q15_t)0x9835, (q15_t)0x4ae1, (q15_t)0x9831, (q15_t)0x4adc, (q15_t)0x982d, (q15_t)0x4ad7, (q15_t)0x982a,\n  (q15_t)0x4ad2, (q15_t)0x9826, (q15_t)0x4acd, (q15_t)0x9822, (q15_t)0x4ac8, (q15_t)0x981f, (q15_t)0x4ac3, (q15_t)0x981b,\n  (q15_t)0x4abe, (q15_t)0x9817, (q15_t)0x4ab9, (q15_t)0x9814, (q15_t)0x4ab4, (q15_t)0x9810, (q15_t)0x4aae, (q15_t)0x980c,\n  (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4aa4, (q15_t)0x9805, (q15_t)0x4a9f, (q15_t)0x9801, (q15_t)0x4a9a, (q15_t)0x97fe,\n  (q15_t)0x4a95, (q15_t)0x97fa, (q15_t)0x4a90, (q15_t)0x97f6, (q15_t)0x4a8b, (q15_t)0x97f3, (q15_t)0x4a86, (q15_t)0x97ef,\n  (q15_t)0x4a81, (q15_t)0x97eb, (q15_t)0x4a7b, (q15_t)0x97e8, (q15_t)0x4a76, (q15_t)0x97e4, (q15_t)0x4a71, (q15_t)0x97e0,\n  (q15_t)0x4a6c, (q15_t)0x97dd, (q15_t)0x4a67, (q15_t)0x97d9, (q15_t)0x4a62, (q15_t)0x97d5, (q15_t)0x4a5d, (q15_t)0x97d2,\n  (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a52, (q15_t)0x97cb, (q15_t)0x4a4d, (q15_t)0x97c7, (q15_t)0x4a48, (q15_t)0x97c3,\n  (q15_t)0x4a43, (q15_t)0x97c0, (q15_t)0x4a3e, (q15_t)0x97bc, (q15_t)0x4a39, (q15_t)0x97b8, (q15_t)0x4a34, (q15_t)0x97b5,\n  (q15_t)0x4a2f, (q15_t)0x97b1, (q15_t)0x4a2a, (q15_t)0x97ad, (q15_t)0x4a24, (q15_t)0x97aa, (q15_t)0x4a1f, (q15_t)0x97a6,\n  (q15_t)0x4a1a, (q15_t)0x97a2, (q15_t)0x4a15, (q15_t)0x979f, (q15_t)0x4a10, (q15_t)0x979b, (q15_t)0x4a0b, (q15_t)0x9798,\n  (q15_t)0x4a06, (q15_t)0x9794, (q15_t)0x4a01, (q15_t)0x9790, (q15_t)0x49fb, (q15_t)0x978d, (q15_t)0x49f6, (q15_t)0x9789,\n  (q15_t)0x49f1, (q15_t)0x9785, (q15_t)0x49ec, (q15_t)0x9782, (q15_t)0x49e7, (q15_t)0x977e, (q15_t)0x49e2, (q15_t)0x977a,\n  (q15_t)0x49dd, (q15_t)0x9777, (q15_t)0x49d8, (q15_t)0x9773, (q15_t)0x49d2, (q15_t)0x9770, (q15_t)0x49cd, (q15_t)0x976c,\n  (q15_t)0x49c8, (q15_t)0x9768, (q15_t)0x49c3, (q15_t)0x9765, (q15_t)0x49be, (q15_t)0x9761, (q15_t)0x49b9, (q15_t)0x975d,\n  (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x49ae, (q15_t)0x9756, (q15_t)0x49a9, (q15_t)0x9753, (q15_t)0x49a4, (q15_t)0x974f,\n  (q15_t)0x499f, (q15_t)0x974b, (q15_t)0x499a, (q15_t)0x9748, (q15_t)0x4995, (q15_t)0x9744, (q15_t)0x4990, (q15_t)0x9741,\n  (q15_t)0x498a, (q15_t)0x973d, (q15_t)0x4985, (q15_t)0x9739, (q15_t)0x4980, (q15_t)0x9736, (q15_t)0x497b, (q15_t)0x9732,\n  (q15_t)0x4976, (q15_t)0x972f, (q15_t)0x4971, (q15_t)0x972b, (q15_t)0x496c, (q15_t)0x9727, (q15_t)0x4966, (q15_t)0x9724,\n  (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x495c, (q15_t)0x971d, (q15_t)0x4957, (q15_t)0x9719, (q15_t)0x4952, (q15_t)0x9715,\n  (q15_t)0x494d, (q15_t)0x9712, (q15_t)0x4948, (q15_t)0x970e, (q15_t)0x4942, (q15_t)0x970b, (q15_t)0x493d, (q15_t)0x9707,\n  (q15_t)0x4938, (q15_t)0x9703, (q15_t)0x4933, (q15_t)0x9700, (q15_t)0x492e, (q15_t)0x96fc, (q15_t)0x4929, (q15_t)0x96f9,\n  (q15_t)0x4923, (q15_t)0x96f5, (q15_t)0x491e, (q15_t)0x96f1, (q15_t)0x4919, (q15_t)0x96ee, (q15_t)0x4914, (q15_t)0x96ea,\n  (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x490a, (q15_t)0x96e3, (q15_t)0x4905, (q15_t)0x96df, (q15_t)0x48ff, (q15_t)0x96dc,\n  (q15_t)0x48fa, (q15_t)0x96d8, (q15_t)0x48f5, (q15_t)0x96d5, (q15_t)0x48f0, (q15_t)0x96d1, (q15_t)0x48eb, (q15_t)0x96ce,\n  (q15_t)0x48e6, (q15_t)0x96ca, (q15_t)0x48e0, (q15_t)0x96c6, (q15_t)0x48db, (q15_t)0x96c3, (q15_t)0x48d6, (q15_t)0x96bf,\n  (q15_t)0x48d1, (q15_t)0x96bc, (q15_t)0x48cc, (q15_t)0x96b8, (q15_t)0x48c7, (q15_t)0x96b5, (q15_t)0x48c1, (q15_t)0x96b1,\n  (q15_t)0x48bc, (q15_t)0x96ad, (q15_t)0x48b7, (q15_t)0x96aa, (q15_t)0x48b2, (q15_t)0x96a6, (q15_t)0x48ad, (q15_t)0x96a3,\n  (q15_t)0x48a8, (q15_t)0x969f, (q15_t)0x48a2, (q15_t)0x969c, (q15_t)0x489d, (q15_t)0x9698, (q15_t)0x4898, (q15_t)0x9694,\n  (q15_t)0x4893, (q15_t)0x9691, (q15_t)0x488e, (q15_t)0x968d, (q15_t)0x4888, (q15_t)0x968a, (q15_t)0x4883, (q15_t)0x9686,\n  (q15_t)0x487e, (q15_t)0x9683, (q15_t)0x4879, (q15_t)0x967f, (q15_t)0x4874, (q15_t)0x967b, (q15_t)0x486f, (q15_t)0x9678,\n  (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4864, (q15_t)0x9671, (q15_t)0x485f, (q15_t)0x966d, (q15_t)0x485a, (q15_t)0x966a,\n  (q15_t)0x4855, (q15_t)0x9666, (q15_t)0x484f, (q15_t)0x9663, (q15_t)0x484a, (q15_t)0x965f, (q15_t)0x4845, (q15_t)0x965b,\n  (q15_t)0x4840, (q15_t)0x9658, (q15_t)0x483b, (q15_t)0x9654, (q15_t)0x4836, (q15_t)0x9651, (q15_t)0x4830, (q15_t)0x964d,\n  (q15_t)0x482b, (q15_t)0x964a, (q15_t)0x4826, (q15_t)0x9646, (q15_t)0x4821, (q15_t)0x9643, (q15_t)0x481c, (q15_t)0x963f,\n  (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x4811, (q15_t)0x9638, (q15_t)0x480c, (q15_t)0x9635, (q15_t)0x4807, (q15_t)0x9631,\n  (q15_t)0x4802, (q15_t)0x962d, (q15_t)0x47fc, (q15_t)0x962a, (q15_t)0x47f7, (q15_t)0x9626, (q15_t)0x47f2, (q15_t)0x9623,\n  (q15_t)0x47ed, (q15_t)0x961f, (q15_t)0x47e8, (q15_t)0x961c, (q15_t)0x47e2, (q15_t)0x9618, (q15_t)0x47dd, (q15_t)0x9615,\n  (q15_t)0x47d8, (q15_t)0x9611, (q15_t)0x47d3, (q15_t)0x960e, (q15_t)0x47ce, (q15_t)0x960a, (q15_t)0x47c8, (q15_t)0x9607,\n  (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x47be, (q15_t)0x9600, (q15_t)0x47b9, (q15_t)0x95fc, (q15_t)0x47b4, (q15_t)0x95f9,\n  (q15_t)0x47ae, (q15_t)0x95f5, (q15_t)0x47a9, (q15_t)0x95f2, (q15_t)0x47a4, (q15_t)0x95ee, (q15_t)0x479f, (q15_t)0x95ea,\n  (q15_t)0x479a, (q15_t)0x95e7, (q15_t)0x4794, (q15_t)0x95e3, (q15_t)0x478f, (q15_t)0x95e0, (q15_t)0x478a, (q15_t)0x95dc,\n  (q15_t)0x4785, (q15_t)0x95d9, (q15_t)0x4780, (q15_t)0x95d5, (q15_t)0x477a, (q15_t)0x95d2, (q15_t)0x4775, (q15_t)0x95ce,\n  (q15_t)0x4770, (q15_t)0x95cb, (q15_t)0x476b, (q15_t)0x95c7, (q15_t)0x4765, (q15_t)0x95c4, (q15_t)0x4760, (q15_t)0x95c0,\n  (q15_t)0x475b, (q15_t)0x95bd, (q15_t)0x4756, (q15_t)0x95b9, (q15_t)0x4751, (q15_t)0x95b6, (q15_t)0x474b, (q15_t)0x95b2,\n  (q15_t)0x4746, (q15_t)0x95af, (q15_t)0x4741, (q15_t)0x95ab, (q15_t)0x473c, (q15_t)0x95a8, (q15_t)0x4737, (q15_t)0x95a4,\n  (q15_t)0x4731, (q15_t)0x95a1, (q15_t)0x472c, (q15_t)0x959d, (q15_t)0x4727, (q15_t)0x959a, (q15_t)0x4722, (q15_t)0x9596,\n  (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x4717, (q15_t)0x958f, (q15_t)0x4712, (q15_t)0x958c, (q15_t)0x470d, (q15_t)0x9588,\n  (q15_t)0x4708, (q15_t)0x9585, (q15_t)0x4702, (q15_t)0x9581, (q15_t)0x46fd, (q15_t)0x957e, (q15_t)0x46f8, (q15_t)0x957a,\n  (q15_t)0x46f3, (q15_t)0x9577, (q15_t)0x46ed, (q15_t)0x9574, (q15_t)0x46e8, (q15_t)0x9570, (q15_t)0x46e3, (q15_t)0x956d,\n  (q15_t)0x46de, (q15_t)0x9569, (q15_t)0x46d8, (q15_t)0x9566, (q15_t)0x46d3, (q15_t)0x9562, (q15_t)0x46ce, (q15_t)0x955f,\n  (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x46c4, (q15_t)0x9558, (q15_t)0x46be, (q15_t)0x9554, (q15_t)0x46b9, (q15_t)0x9551,\n  (q15_t)0x46b4, (q15_t)0x954d, (q15_t)0x46af, (q15_t)0x954a, (q15_t)0x46a9, (q15_t)0x9546, (q15_t)0x46a4, (q15_t)0x9543,\n  (q15_t)0x469f, (q15_t)0x953f, (q15_t)0x469a, (q15_t)0x953c, (q15_t)0x4694, (q15_t)0x9538, (q15_t)0x468f, (q15_t)0x9535,\n  (q15_t)0x468a, (q15_t)0x9532, (q15_t)0x4685, (q15_t)0x952e, (q15_t)0x467f, (q15_t)0x952b, (q15_t)0x467a, (q15_t)0x9527,\n  (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4670, (q15_t)0x9520, (q15_t)0x466a, (q15_t)0x951d, (q15_t)0x4665, (q15_t)0x9519,\n  (q15_t)0x4660, (q15_t)0x9516, (q15_t)0x465b, (q15_t)0x9512, (q15_t)0x4655, (q15_t)0x950f, (q15_t)0x4650, (q15_t)0x950c,\n  (q15_t)0x464b, (q15_t)0x9508, (q15_t)0x4646, (q15_t)0x9505, (q15_t)0x4640, (q15_t)0x9501, (q15_t)0x463b, (q15_t)0x94fe,\n  (q15_t)0x4636, (q15_t)0x94fa, (q15_t)0x4631, (q15_t)0x94f7, (q15_t)0x462b, (q15_t)0x94f3, (q15_t)0x4626, (q15_t)0x94f0,\n  (q15_t)0x4621, (q15_t)0x94ed, (q15_t)0x461c, (q15_t)0x94e9, (q15_t)0x4616, (q15_t)0x94e6, (q15_t)0x4611, (q15_t)0x94e2,\n  (q15_t)0x460c, (q15_t)0x94df, (q15_t)0x4607, (q15_t)0x94db, (q15_t)0x4601, (q15_t)0x94d8, (q15_t)0x45fc, (q15_t)0x94d4,\n  (q15_t)0x45f7, (q15_t)0x94d1, (q15_t)0x45f2, (q15_t)0x94ce, (q15_t)0x45ec, (q15_t)0x94ca, (q15_t)0x45e7, (q15_t)0x94c7,\n  (q15_t)0x45e2, (q15_t)0x94c3, (q15_t)0x45dd, (q15_t)0x94c0, (q15_t)0x45d7, (q15_t)0x94bc, (q15_t)0x45d2, (q15_t)0x94b9,\n  (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x45c7, (q15_t)0x94b2, (q15_t)0x45c2, (q15_t)0x94af, (q15_t)0x45bd, (q15_t)0x94ab,\n  (q15_t)0x45b8, (q15_t)0x94a8, (q15_t)0x45b2, (q15_t)0x94a4, (q15_t)0x45ad, (q15_t)0x94a1, (q15_t)0x45a8, (q15_t)0x949e,\n  (q15_t)0x45a3, (q15_t)0x949a, (q15_t)0x459d, (q15_t)0x9497, (q15_t)0x4598, (q15_t)0x9493, (q15_t)0x4593, (q15_t)0x9490,\n  (q15_t)0x458d, (q15_t)0x948d, (q15_t)0x4588, (q15_t)0x9489, (q15_t)0x4583, (q15_t)0x9486, (q15_t)0x457e, (q15_t)0x9482,\n  (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4573, (q15_t)0x947b, (q15_t)0x456e, (q15_t)0x9478, (q15_t)0x4569, (q15_t)0x9475,\n  (q15_t)0x4563, (q15_t)0x9471, (q15_t)0x455e, (q15_t)0x946e, (q15_t)0x4559, (q15_t)0x946a, (q15_t)0x4553, (q15_t)0x9467,\n  (q15_t)0x454e, (q15_t)0x9464, (q15_t)0x4549, (q15_t)0x9460, (q15_t)0x4544, (q15_t)0x945d, (q15_t)0x453e, (q15_t)0x9459,\n  (q15_t)0x4539, (q15_t)0x9456, (q15_t)0x4534, (q15_t)0x9453, (q15_t)0x452e, (q15_t)0x944f, (q15_t)0x4529, (q15_t)0x944c,\n  (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x451f, (q15_t)0x9445, (q15_t)0x4519, (q15_t)0x9442, (q15_t)0x4514, (q15_t)0x943e,\n  (q15_t)0x450f, (q15_t)0x943b, (q15_t)0x4509, (q15_t)0x9437, (q15_t)0x4504, (q15_t)0x9434, (q15_t)0x44ff, (q15_t)0x9431,\n  (q15_t)0x44fa, (q15_t)0x942d, (q15_t)0x44f4, (q15_t)0x942a, (q15_t)0x44ef, (q15_t)0x9427, (q15_t)0x44ea, (q15_t)0x9423,\n  (q15_t)0x44e4, (q15_t)0x9420, (q15_t)0x44df, (q15_t)0x941c, (q15_t)0x44da, (q15_t)0x9419, (q15_t)0x44d4, (q15_t)0x9416,\n  (q15_t)0x44cf, (q15_t)0x9412, (q15_t)0x44ca, (q15_t)0x940f, (q15_t)0x44c5, (q15_t)0x940b, (q15_t)0x44bf, (q15_t)0x9408,\n  (q15_t)0x44ba, (q15_t)0x9405, (q15_t)0x44b5, (q15_t)0x9401, (q15_t)0x44af, (q15_t)0x93fe, (q15_t)0x44aa, (q15_t)0x93fb,\n  (q15_t)0x44a5, (q15_t)0x93f7, (q15_t)0x449f, (q15_t)0x93f4, (q15_t)0x449a, (q15_t)0x93f1, (q15_t)0x4495, (q15_t)0x93ed,\n  (q15_t)0x4490, (q15_t)0x93ea, (q15_t)0x448a, (q15_t)0x93e6, (q15_t)0x4485, (q15_t)0x93e3, (q15_t)0x4480, (q15_t)0x93e0,\n  (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4475, (q15_t)0x93d9, (q15_t)0x4470, (q15_t)0x93d6, (q15_t)0x446a, (q15_t)0x93d2,\n  (q15_t)0x4465, (q15_t)0x93cf, (q15_t)0x4460, (q15_t)0x93cc, (q15_t)0x445a, (q15_t)0x93c8, (q15_t)0x4455, (q15_t)0x93c5,\n  (q15_t)0x4450, (q15_t)0x93c1, (q15_t)0x444b, (q15_t)0x93be, (q15_t)0x4445, (q15_t)0x93bb, (q15_t)0x4440, (q15_t)0x93b7,\n  (q15_t)0x443b, (q15_t)0x93b4, (q15_t)0x4435, (q15_t)0x93b1, (q15_t)0x4430, (q15_t)0x93ad, (q15_t)0x442b, (q15_t)0x93aa,\n  (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x4420, (q15_t)0x93a3, (q15_t)0x441b, (q15_t)0x93a0, (q15_t)0x4415, (q15_t)0x939d,\n  (q15_t)0x4410, (q15_t)0x9399, (q15_t)0x440b, (q15_t)0x9396, (q15_t)0x4405, (q15_t)0x9393, (q15_t)0x4400, (q15_t)0x938f,\n  (q15_t)0x43fb, (q15_t)0x938c, (q15_t)0x43f5, (q15_t)0x9389, (q15_t)0x43f0, (q15_t)0x9385, (q15_t)0x43eb, (q15_t)0x9382,\n  (q15_t)0x43e5, (q15_t)0x937f, (q15_t)0x43e0, (q15_t)0x937b, (q15_t)0x43db, (q15_t)0x9378, (q15_t)0x43d5, (q15_t)0x9375,\n  (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x43cb, (q15_t)0x936e, (q15_t)0x43c5, (q15_t)0x936b, (q15_t)0x43c0, (q15_t)0x9367,\n  (q15_t)0x43bb, (q15_t)0x9364, (q15_t)0x43b5, (q15_t)0x9361, (q15_t)0x43b0, (q15_t)0x935d, (q15_t)0x43ab, (q15_t)0x935a,\n  (q15_t)0x43a5, (q15_t)0x9357, (q15_t)0x43a0, (q15_t)0x9353, (q15_t)0x439b, (q15_t)0x9350, (q15_t)0x4395, (q15_t)0x934d,\n  (q15_t)0x4390, (q15_t)0x9349, (q15_t)0x438b, (q15_t)0x9346, (q15_t)0x4385, (q15_t)0x9343, (q15_t)0x4380, (q15_t)0x933f,\n  (q15_t)0x437b, (q15_t)0x933c, (q15_t)0x4375, (q15_t)0x9339, (q15_t)0x4370, (q15_t)0x9336, (q15_t)0x436b, (q15_t)0x9332,\n  (q15_t)0x4365, (q15_t)0x932f, (q15_t)0x4360, (q15_t)0x932c, (q15_t)0x435b, (q15_t)0x9328, (q15_t)0x4355, (q15_t)0x9325,\n  (q15_t)0x4350, (q15_t)0x9322, (q15_t)0x434b, (q15_t)0x931e, (q15_t)0x4345, (q15_t)0x931b, (q15_t)0x4340, (q15_t)0x9318,\n  (q15_t)0x433b, (q15_t)0x9314, (q15_t)0x4335, (q15_t)0x9311, (q15_t)0x4330, (q15_t)0x930e, (q15_t)0x432b, (q15_t)0x930b,\n  (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x4320, (q15_t)0x9304, (q15_t)0x431b, (q15_t)0x9301, (q15_t)0x4315, (q15_t)0x92fd,\n  (q15_t)0x4310, (q15_t)0x92fa, (q15_t)0x430b, (q15_t)0x92f7, (q15_t)0x4305, (q15_t)0x92f4, (q15_t)0x4300, (q15_t)0x92f0,\n  (q15_t)0x42fa, (q15_t)0x92ed, (q15_t)0x42f5, (q15_t)0x92ea, (q15_t)0x42f0, (q15_t)0x92e6, (q15_t)0x42ea, (q15_t)0x92e3,\n  (q15_t)0x42e5, (q15_t)0x92e0, (q15_t)0x42e0, (q15_t)0x92dd, (q15_t)0x42da, (q15_t)0x92d9, (q15_t)0x42d5, (q15_t)0x92d6,\n  (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x42ca, (q15_t)0x92cf, (q15_t)0x42c5, (q15_t)0x92cc, (q15_t)0x42c0, (q15_t)0x92c9,\n  (q15_t)0x42ba, (q15_t)0x92c6, (q15_t)0x42b5, (q15_t)0x92c2, (q15_t)0x42af, (q15_t)0x92bf, (q15_t)0x42aa, (q15_t)0x92bc,\n  (q15_t)0x42a5, (q15_t)0x92b8, (q15_t)0x429f, (q15_t)0x92b5, (q15_t)0x429a, (q15_t)0x92b2, (q15_t)0x4295, (q15_t)0x92af,\n  (q15_t)0x428f, (q15_t)0x92ab, (q15_t)0x428a, (q15_t)0x92a8, (q15_t)0x4284, (q15_t)0x92a5, (q15_t)0x427f, (q15_t)0x92a2,\n  (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4274, (q15_t)0x929b, (q15_t)0x426f, (q15_t)0x9298, (q15_t)0x426a, (q15_t)0x9295,\n  (q15_t)0x4264, (q15_t)0x9291, (q15_t)0x425f, (q15_t)0x928e, (q15_t)0x425a, (q15_t)0x928b, (q15_t)0x4254, (q15_t)0x9288,\n  (q15_t)0x424f, (q15_t)0x9284, (q15_t)0x4249, (q15_t)0x9281, (q15_t)0x4244, (q15_t)0x927e, (q15_t)0x423f, (q15_t)0x927b,\n  (q15_t)0x4239, (q15_t)0x9277, (q15_t)0x4234, (q15_t)0x9274, (q15_t)0x422f, (q15_t)0x9271, (q15_t)0x4229, (q15_t)0x926e,\n  (q15_t)0x4224, (q15_t)0x926a, (q15_t)0x421e, (q15_t)0x9267, (q15_t)0x4219, (q15_t)0x9264, (q15_t)0x4214, (q15_t)0x9261,\n  (q15_t)0x420e, (q15_t)0x925d, (q15_t)0x4209, (q15_t)0x925a, (q15_t)0x4203, (q15_t)0x9257, (q15_t)0x41fe, (q15_t)0x9254,\n  (q15_t)0x41f9, (q15_t)0x9250, (q15_t)0x41f3, (q15_t)0x924d, (q15_t)0x41ee, (q15_t)0x924a, (q15_t)0x41e9, (q15_t)0x9247,\n  (q15_t)0x41e3, (q15_t)0x9243, (q15_t)0x41de, (q15_t)0x9240, (q15_t)0x41d8, (q15_t)0x923d, (q15_t)0x41d3, (q15_t)0x923a,\n  (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x41c8, (q15_t)0x9233, (q15_t)0x41c3, (q15_t)0x9230, (q15_t)0x41bd, (q15_t)0x922d,\n  (q15_t)0x41b8, (q15_t)0x922a, (q15_t)0x41b3, (q15_t)0x9226, (q15_t)0x41ad, (q15_t)0x9223, (q15_t)0x41a8, (q15_t)0x9220,\n  (q15_t)0x41a2, (q15_t)0x921d, (q15_t)0x419d, (q15_t)0x9219, (q15_t)0x4198, (q15_t)0x9216, (q15_t)0x4192, (q15_t)0x9213,\n  (q15_t)0x418d, (q15_t)0x9210, (q15_t)0x4188, (q15_t)0x920d, (q15_t)0x4182, (q15_t)0x9209, (q15_t)0x417d, (q15_t)0x9206,\n  (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4172, (q15_t)0x9200, (q15_t)0x416d, (q15_t)0x91fc, (q15_t)0x4167, (q15_t)0x91f9,\n  (q15_t)0x4162, (q15_t)0x91f6, (q15_t)0x415c, (q15_t)0x91f3, (q15_t)0x4157, (q15_t)0x91f0, (q15_t)0x4152, (q15_t)0x91ec,\n  (q15_t)0x414c, (q15_t)0x91e9, (q15_t)0x4147, (q15_t)0x91e6, (q15_t)0x4141, (q15_t)0x91e3, (q15_t)0x413c, (q15_t)0x91e0,\n  (q15_t)0x4136, (q15_t)0x91dc, (q15_t)0x4131, (q15_t)0x91d9, (q15_t)0x412c, (q15_t)0x91d6, (q15_t)0x4126, (q15_t)0x91d3,\n  (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x411b, (q15_t)0x91cc, (q15_t)0x4116, (q15_t)0x91c9, (q15_t)0x4111, (q15_t)0x91c6,\n  (q15_t)0x410b, (q15_t)0x91c3, (q15_t)0x4106, (q15_t)0x91c0, (q15_t)0x4100, (q15_t)0x91bc, (q15_t)0x40fb, (q15_t)0x91b9,\n  (q15_t)0x40f6, (q15_t)0x91b6, (q15_t)0x40f0, (q15_t)0x91b3, (q15_t)0x40eb, (q15_t)0x91b0, (q15_t)0x40e5, (q15_t)0x91ad,\n  (q15_t)0x40e0, (q15_t)0x91a9, (q15_t)0x40da, (q15_t)0x91a6, (q15_t)0x40d5, (q15_t)0x91a3, (q15_t)0x40d0, (q15_t)0x91a0,\n  (q15_t)0x40ca, (q15_t)0x919d, (q15_t)0x40c5, (q15_t)0x9199, (q15_t)0x40bf, (q15_t)0x9196, (q15_t)0x40ba, (q15_t)0x9193,\n  (q15_t)0x40b5, (q15_t)0x9190, (q15_t)0x40af, (q15_t)0x918d, (q15_t)0x40aa, (q15_t)0x918a, (q15_t)0x40a4, (q15_t)0x9186,\n  (q15_t)0x409f, (q15_t)0x9183, (q15_t)0x4099, (q15_t)0x9180, (q15_t)0x4094, (q15_t)0x917d, (q15_t)0x408f, (q15_t)0x917a,\n  (q15_t)0x4089, (q15_t)0x9177, (q15_t)0x4084, (q15_t)0x9173, (q15_t)0x407e, (q15_t)0x9170, (q15_t)0x4079, (q15_t)0x916d,\n  (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x406e, (q15_t)0x9167, (q15_t)0x4069, (q15_t)0x9164, (q15_t)0x4063, (q15_t)0x9160,\n  (q15_t)0x405e, (q15_t)0x915d, (q15_t)0x4058, (q15_t)0x915a, (q15_t)0x4053, (q15_t)0x9157, (q15_t)0x404d, (q15_t)0x9154,\n  (q15_t)0x4048, (q15_t)0x9151, (q15_t)0x4043, (q15_t)0x914d, (q15_t)0x403d, (q15_t)0x914a, (q15_t)0x4038, (q15_t)0x9147,\n  (q15_t)0x4032, (q15_t)0x9144, (q15_t)0x402d, (q15_t)0x9141, (q15_t)0x4027, (q15_t)0x913e, (q15_t)0x4022, (q15_t)0x913a,\n  (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x4017, (q15_t)0x9134, (q15_t)0x4012, (q15_t)0x9131, (q15_t)0x400c, (q15_t)0x912e,\n  (q15_t)0x4007, (q15_t)0x912b, (q15_t)0x4001, (q15_t)0x9128, (q15_t)0x3ffc, (q15_t)0x9124, (q15_t)0x3ff6, (q15_t)0x9121,\n  (q15_t)0x3ff1, (q15_t)0x911e, (q15_t)0x3fec, (q15_t)0x911b, (q15_t)0x3fe6, (q15_t)0x9118, (q15_t)0x3fe1, (q15_t)0x9115,\n  (q15_t)0x3fdb, (q15_t)0x9112, (q15_t)0x3fd6, (q15_t)0x910f, (q15_t)0x3fd0, (q15_t)0x910b, (q15_t)0x3fcb, (q15_t)0x9108,\n  (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3fc0, (q15_t)0x9102, (q15_t)0x3fbb, (q15_t)0x90ff, (q15_t)0x3fb5, (q15_t)0x90fc,\n  (q15_t)0x3fb0, (q15_t)0x90f9, (q15_t)0x3faa, (q15_t)0x90f5, (q15_t)0x3fa5, (q15_t)0x90f2, (q15_t)0x3f9f, (q15_t)0x90ef,\n  (q15_t)0x3f9a, (q15_t)0x90ec, (q15_t)0x3f94, (q15_t)0x90e9, (q15_t)0x3f8f, (q15_t)0x90e6, (q15_t)0x3f89, (q15_t)0x90e3,\n  (q15_t)0x3f84, (q15_t)0x90e0, (q15_t)0x3f7f, (q15_t)0x90dd, (q15_t)0x3f79, (q15_t)0x90d9, (q15_t)0x3f74, (q15_t)0x90d6,\n  (q15_t)0x3f6e, (q15_t)0x90d3, (q15_t)0x3f69, (q15_t)0x90d0, (q15_t)0x3f63, (q15_t)0x90cd, (q15_t)0x3f5e, (q15_t)0x90ca,\n  (q15_t)0x3f58, (q15_t)0x90c7, (q15_t)0x3f53, (q15_t)0x90c4, (q15_t)0x3f4d, (q15_t)0x90c1, (q15_t)0x3f48, (q15_t)0x90bd,\n  (q15_t)0x3f43, (q15_t)0x90ba, (q15_t)0x3f3d, (q15_t)0x90b7, (q15_t)0x3f38, (q15_t)0x90b4, (q15_t)0x3f32, (q15_t)0x90b1,\n  (q15_t)0x3f2d, (q15_t)0x90ae, (q15_t)0x3f27, (q15_t)0x90ab, (q15_t)0x3f22, (q15_t)0x90a8, (q15_t)0x3f1c, (q15_t)0x90a5,\n  (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3f11, (q15_t)0x909e, (q15_t)0x3f0c, (q15_t)0x909b, (q15_t)0x3f06, (q15_t)0x9098,\n  (q15_t)0x3f01, (q15_t)0x9095, (q15_t)0x3efb, (q15_t)0x9092, (q15_t)0x3ef6, (q15_t)0x908f, (q15_t)0x3ef1, (q15_t)0x908c,\n  (q15_t)0x3eeb, (q15_t)0x9089, (q15_t)0x3ee6, (q15_t)0x9086, (q15_t)0x3ee0, (q15_t)0x9083, (q15_t)0x3edb, (q15_t)0x907f,\n  (q15_t)0x3ed5, (q15_t)0x907c, (q15_t)0x3ed0, (q15_t)0x9079, (q15_t)0x3eca, (q15_t)0x9076, (q15_t)0x3ec5, (q15_t)0x9073,\n  (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3eba, (q15_t)0x906d, (q15_t)0x3eb4, (q15_t)0x906a, (q15_t)0x3eaf, (q15_t)0x9067,\n  (q15_t)0x3ea9, (q15_t)0x9064, (q15_t)0x3ea4, (q15_t)0x9061, (q15_t)0x3e9e, (q15_t)0x905e, (q15_t)0x3e99, (q15_t)0x905b,\n  (q15_t)0x3e93, (q15_t)0x9057, (q15_t)0x3e8e, (q15_t)0x9054, (q15_t)0x3e88, (q15_t)0x9051, (q15_t)0x3e83, (q15_t)0x904e,\n  (q15_t)0x3e7d, (q15_t)0x904b, (q15_t)0x3e78, (q15_t)0x9048, (q15_t)0x3e73, (q15_t)0x9045, (q15_t)0x3e6d, (q15_t)0x9042,\n  (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e62, (q15_t)0x903c, (q15_t)0x3e5d, (q15_t)0x9039, (q15_t)0x3e57, (q15_t)0x9036,\n  (q15_t)0x3e52, (q15_t)0x9033, (q15_t)0x3e4c, (q15_t)0x9030, (q15_t)0x3e47, (q15_t)0x902d, (q15_t)0x3e41, (q15_t)0x902a,\n  (q15_t)0x3e3c, (q15_t)0x9026, (q15_t)0x3e36, (q15_t)0x9023, (q15_t)0x3e31, (q15_t)0x9020, (q15_t)0x3e2b, (q15_t)0x901d,\n  (q15_t)0x3e26, (q15_t)0x901a, (q15_t)0x3e20, (q15_t)0x9017, (q15_t)0x3e1b, (q15_t)0x9014, (q15_t)0x3e15, (q15_t)0x9011,\n  (q15_t)0x3e10, (q15_t)0x900e, (q15_t)0x3e0a, (q15_t)0x900b, (q15_t)0x3e05, (q15_t)0x9008, (q15_t)0x3dff, (q15_t)0x9005,\n  (q15_t)0x3dfa, (q15_t)0x9002, (q15_t)0x3df4, (q15_t)0x8fff, (q15_t)0x3def, (q15_t)0x8ffc, (q15_t)0x3de9, (q15_t)0x8ff9,\n  (q15_t)0x3de4, (q15_t)0x8ff6, (q15_t)0x3dde, (q15_t)0x8ff3, (q15_t)0x3dd9, (q15_t)0x8ff0, (q15_t)0x3dd3, (q15_t)0x8fed,\n  (q15_t)0x3dce, (q15_t)0x8fea, (q15_t)0x3dc8, (q15_t)0x8fe7, (q15_t)0x3dc3, (q15_t)0x8fe3, (q15_t)0x3dbd, (q15_t)0x8fe0,\n  (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3db2, (q15_t)0x8fda, (q15_t)0x3dad, (q15_t)0x8fd7, (q15_t)0x3da7, (q15_t)0x8fd4,\n  (q15_t)0x3da2, (q15_t)0x8fd1, (q15_t)0x3d9c, (q15_t)0x8fce, (q15_t)0x3d97, (q15_t)0x8fcb, (q15_t)0x3d91, (q15_t)0x8fc8,\n  (q15_t)0x3d8c, (q15_t)0x8fc5, (q15_t)0x3d86, (q15_t)0x8fc2, (q15_t)0x3d81, (q15_t)0x8fbf, (q15_t)0x3d7b, (q15_t)0x8fbc,\n  (q15_t)0x3d76, (q15_t)0x8fb9, (q15_t)0x3d70, (q15_t)0x8fb6, (q15_t)0x3d6b, (q15_t)0x8fb3, (q15_t)0x3d65, (q15_t)0x8fb0,\n  (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d5a, (q15_t)0x8faa, (q15_t)0x3d55, (q15_t)0x8fa7, (q15_t)0x3d4f, (q15_t)0x8fa4,\n  (q15_t)0x3d49, (q15_t)0x8fa1, (q15_t)0x3d44, (q15_t)0x8f9e, (q15_t)0x3d3e, (q15_t)0x8f9b, (q15_t)0x3d39, (q15_t)0x8f98,\n  (q15_t)0x3d33, (q15_t)0x8f95, (q15_t)0x3d2e, (q15_t)0x8f92, (q15_t)0x3d28, (q15_t)0x8f8f, (q15_t)0x3d23, (q15_t)0x8f8c,\n  (q15_t)0x3d1d, (q15_t)0x8f89, (q15_t)0x3d18, (q15_t)0x8f86, (q15_t)0x3d12, (q15_t)0x8f83, (q15_t)0x3d0d, (q15_t)0x8f80,\n  (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3d02, (q15_t)0x8f7a, (q15_t)0x3cfc, (q15_t)0x8f77, (q15_t)0x3cf7, (q15_t)0x8f74,\n  (q15_t)0x3cf1, (q15_t)0x8f71, (q15_t)0x3cec, (q15_t)0x8f6e, (q15_t)0x3ce6, (q15_t)0x8f6b, (q15_t)0x3ce1, (q15_t)0x8f68,\n  (q15_t)0x3cdb, (q15_t)0x8f65, (q15_t)0x3cd6, (q15_t)0x8f62, (q15_t)0x3cd0, (q15_t)0x8f5f, (q15_t)0x3cca, (q15_t)0x8f5c,\n  (q15_t)0x3cc5, (q15_t)0x8f59, (q15_t)0x3cbf, (q15_t)0x8f56, (q15_t)0x3cba, (q15_t)0x8f53, (q15_t)0x3cb4, (q15_t)0x8f50,\n  (q15_t)0x3caf, (q15_t)0x8f4d, (q15_t)0x3ca9, (q15_t)0x8f4a, (q15_t)0x3ca4, (q15_t)0x8f47, (q15_t)0x3c9e, (q15_t)0x8f44,\n  (q15_t)0x3c99, (q15_t)0x8f41, (q15_t)0x3c93, (q15_t)0x8f3e, (q15_t)0x3c8e, (q15_t)0x8f3b, (q15_t)0x3c88, (q15_t)0x8f38,\n  (q15_t)0x3c83, (q15_t)0x8f35, (q15_t)0x3c7d, (q15_t)0x8f32, (q15_t)0x3c77, (q15_t)0x8f2f, (q15_t)0x3c72, (q15_t)0x8f2d,\n  (q15_t)0x3c6c, (q15_t)0x8f2a, (q15_t)0x3c67, (q15_t)0x8f27, (q15_t)0x3c61, (q15_t)0x8f24, (q15_t)0x3c5c, (q15_t)0x8f21,\n  (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3c51, (q15_t)0x8f1b, (q15_t)0x3c4b, (q15_t)0x8f18, (q15_t)0x3c46, (q15_t)0x8f15,\n  (q15_t)0x3c40, (q15_t)0x8f12, (q15_t)0x3c3b, (q15_t)0x8f0f, (q15_t)0x3c35, (q15_t)0x8f0c, (q15_t)0x3c2f, (q15_t)0x8f09,\n  (q15_t)0x3c2a, (q15_t)0x8f06, (q15_t)0x3c24, (q15_t)0x8f03, (q15_t)0x3c1f, (q15_t)0x8f00, (q15_t)0x3c19, (q15_t)0x8efd,\n  (q15_t)0x3c14, (q15_t)0x8efa, (q15_t)0x3c0e, (q15_t)0x8ef7, (q15_t)0x3c09, (q15_t)0x8ef4, (q15_t)0x3c03, (q15_t)0x8ef1,\n  (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3bf8, (q15_t)0x8eec, (q15_t)0x3bf2, (q15_t)0x8ee9, (q15_t)0x3bed, (q15_t)0x8ee6,\n  (q15_t)0x3be7, (q15_t)0x8ee3, (q15_t)0x3be2, (q15_t)0x8ee0, (q15_t)0x3bdc, (q15_t)0x8edd, (q15_t)0x3bd7, (q15_t)0x8eda,\n  (q15_t)0x3bd1, (q15_t)0x8ed7, (q15_t)0x3bcc, (q15_t)0x8ed4, (q15_t)0x3bc6, (q15_t)0x8ed1, (q15_t)0x3bc0, (q15_t)0x8ece,\n  (q15_t)0x3bbb, (q15_t)0x8ecb, (q15_t)0x3bb5, (q15_t)0x8ec8, (q15_t)0x3bb0, (q15_t)0x8ec5, (q15_t)0x3baa, (q15_t)0x8ec2,\n  (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b9f, (q15_t)0x8ebd, (q15_t)0x3b99, (q15_t)0x8eba, (q15_t)0x3b94, (q15_t)0x8eb7,\n  (q15_t)0x3b8e, (q15_t)0x8eb4, (q15_t)0x3b89, (q15_t)0x8eb1, (q15_t)0x3b83, (q15_t)0x8eae, (q15_t)0x3b7e, (q15_t)0x8eab,\n  (q15_t)0x3b78, (q15_t)0x8ea8, (q15_t)0x3b73, (q15_t)0x8ea5, (q15_t)0x3b6d, (q15_t)0x8ea2, (q15_t)0x3b67, (q15_t)0x8e9f,\n  (q15_t)0x3b62, (q15_t)0x8e9c, (q15_t)0x3b5c, (q15_t)0x8e99, (q15_t)0x3b57, (q15_t)0x8e97, (q15_t)0x3b51, (q15_t)0x8e94,\n  (q15_t)0x3b4c, (q15_t)0x8e91, (q15_t)0x3b46, (q15_t)0x8e8e, (q15_t)0x3b40, (q15_t)0x8e8b, (q15_t)0x3b3b, (q15_t)0x8e88,\n  (q15_t)0x3b35, (q15_t)0x8e85, (q15_t)0x3b30, (q15_t)0x8e82, (q15_t)0x3b2a, (q15_t)0x8e7f, (q15_t)0x3b25, (q15_t)0x8e7c,\n  (q15_t)0x3b1f, (q15_t)0x8e7a, (q15_t)0x3b19, (q15_t)0x8e77, (q15_t)0x3b14, (q15_t)0x8e74, (q15_t)0x3b0e, (q15_t)0x8e71,\n  (q15_t)0x3b09, (q15_t)0x8e6e, (q15_t)0x3b03, (q15_t)0x8e6b, (q15_t)0x3afe, (q15_t)0x8e68, (q15_t)0x3af8, (q15_t)0x8e65,\n  (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3aed, (q15_t)0x8e5f, (q15_t)0x3ae7, (q15_t)0x8e5d, (q15_t)0x3ae2, (q15_t)0x8e5a,\n  (q15_t)0x3adc, (q15_t)0x8e57, (q15_t)0x3ad7, (q15_t)0x8e54, (q15_t)0x3ad1, (q15_t)0x8e51, (q15_t)0x3acb, (q15_t)0x8e4e,\n  (q15_t)0x3ac6, (q15_t)0x8e4b, (q15_t)0x3ac0, (q15_t)0x8e48, (q15_t)0x3abb, (q15_t)0x8e45, (q15_t)0x3ab5, (q15_t)0x8e43,\n  (q15_t)0x3aaf, (q15_t)0x8e40, (q15_t)0x3aaa, (q15_t)0x8e3d, (q15_t)0x3aa4, (q15_t)0x8e3a, (q15_t)0x3a9f, (q15_t)0x8e37,\n  (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a94, (q15_t)0x8e31, (q15_t)0x3a8e, (q15_t)0x8e2e, (q15_t)0x3a88, (q15_t)0x8e2c,\n  (q15_t)0x3a83, (q15_t)0x8e29, (q15_t)0x3a7d, (q15_t)0x8e26, (q15_t)0x3a78, (q15_t)0x8e23, (q15_t)0x3a72, (q15_t)0x8e20,\n  (q15_t)0x3a6c, (q15_t)0x8e1d, (q15_t)0x3a67, (q15_t)0x8e1a, (q15_t)0x3a61, (q15_t)0x8e17, (q15_t)0x3a5c, (q15_t)0x8e15,\n  (q15_t)0x3a56, (q15_t)0x8e12, (q15_t)0x3a50, (q15_t)0x8e0f, (q15_t)0x3a4b, (q15_t)0x8e0c, (q15_t)0x3a45, (q15_t)0x8e09,\n  (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x3a3a, (q15_t)0x8e03, (q15_t)0x3a34, (q15_t)0x8e01, (q15_t)0x3a2f, (q15_t)0x8dfe,\n  (q15_t)0x3a29, (q15_t)0x8dfb, (q15_t)0x3a24, (q15_t)0x8df8, (q15_t)0x3a1e, (q15_t)0x8df5, (q15_t)0x3a19, (q15_t)0x8df2,\n  (q15_t)0x3a13, (q15_t)0x8def, (q15_t)0x3a0d, (q15_t)0x8ded, (q15_t)0x3a08, (q15_t)0x8dea, (q15_t)0x3a02, (q15_t)0x8de7,\n  (q15_t)0x39fd, (q15_t)0x8de4, (q15_t)0x39f7, (q15_t)0x8de1, (q15_t)0x39f1, (q15_t)0x8dde, (q15_t)0x39ec, (q15_t)0x8ddc,\n  (q15_t)0x39e6, (q15_t)0x8dd9, (q15_t)0x39e0, (q15_t)0x8dd6, (q15_t)0x39db, (q15_t)0x8dd3, (q15_t)0x39d5, (q15_t)0x8dd0,\n  (q15_t)0x39d0, (q15_t)0x8dcd, (q15_t)0x39ca, (q15_t)0x8dca, (q15_t)0x39c4, (q15_t)0x8dc8, (q15_t)0x39bf, (q15_t)0x8dc5,\n  (q15_t)0x39b9, (q15_t)0x8dc2, (q15_t)0x39b4, (q15_t)0x8dbf, (q15_t)0x39ae, (q15_t)0x8dbc, (q15_t)0x39a8, (q15_t)0x8db9,\n  (q15_t)0x39a3, (q15_t)0x8db7, (q15_t)0x399d, (q15_t)0x8db4, (q15_t)0x3998, (q15_t)0x8db1, (q15_t)0x3992, (q15_t)0x8dae,\n  (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3987, (q15_t)0x8da9, (q15_t)0x3981, (q15_t)0x8da6, (q15_t)0x397c, (q15_t)0x8da3,\n  (q15_t)0x3976, (q15_t)0x8da0, (q15_t)0x3970, (q15_t)0x8d9d, (q15_t)0x396b, (q15_t)0x8d9a, (q15_t)0x3965, (q15_t)0x8d98,\n  (q15_t)0x395f, (q15_t)0x8d95, (q15_t)0x395a, (q15_t)0x8d92, (q15_t)0x3954, (q15_t)0x8d8f, (q15_t)0x394f, (q15_t)0x8d8c,\n  (q15_t)0x3949, (q15_t)0x8d8a, (q15_t)0x3943, (q15_t)0x8d87, (q15_t)0x393e, (q15_t)0x8d84, (q15_t)0x3938, (q15_t)0x8d81,\n  (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x392d, (q15_t)0x8d7b, (q15_t)0x3927, (q15_t)0x8d79, (q15_t)0x3922, (q15_t)0x8d76,\n  (q15_t)0x391c, (q15_t)0x8d73, (q15_t)0x3916, (q15_t)0x8d70, (q15_t)0x3911, (q15_t)0x8d6d, (q15_t)0x390b, (q15_t)0x8d6b,\n  (q15_t)0x3906, (q15_t)0x8d68, (q15_t)0x3900, (q15_t)0x8d65, (q15_t)0x38fa, (q15_t)0x8d62, (q15_t)0x38f5, (q15_t)0x8d5f,\n  (q15_t)0x38ef, (q15_t)0x8d5d, (q15_t)0x38e9, (q15_t)0x8d5a, (q15_t)0x38e4, (q15_t)0x8d57, (q15_t)0x38de, (q15_t)0x8d54,\n  (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x38d3, (q15_t)0x8d4f, (q15_t)0x38cd, (q15_t)0x8d4c, (q15_t)0x38c8, (q15_t)0x8d49,\n  (q15_t)0x38c2, (q15_t)0x8d46, (q15_t)0x38bc, (q15_t)0x8d44, (q15_t)0x38b7, (q15_t)0x8d41, (q15_t)0x38b1, (q15_t)0x8d3e,\n  (q15_t)0x38ab, (q15_t)0x8d3b, (q15_t)0x38a6, (q15_t)0x8d38, (q15_t)0x38a0, (q15_t)0x8d36, (q15_t)0x389b, (q15_t)0x8d33,\n  (q15_t)0x3895, (q15_t)0x8d30, (q15_t)0x388f, (q15_t)0x8d2d, (q15_t)0x388a, (q15_t)0x8d2b, (q15_t)0x3884, (q15_t)0x8d28,\n  (q15_t)0x387e, (q15_t)0x8d25, (q15_t)0x3879, (q15_t)0x8d22, (q15_t)0x3873, (q15_t)0x8d1f, (q15_t)0x386d, (q15_t)0x8d1d,\n  (q15_t)0x3868, (q15_t)0x8d1a, (q15_t)0x3862, (q15_t)0x8d17, (q15_t)0x385d, (q15_t)0x8d14, (q15_t)0x3857, (q15_t)0x8d12,\n  (q15_t)0x3851, (q15_t)0x8d0f, (q15_t)0x384c, (q15_t)0x8d0c, (q15_t)0x3846, (q15_t)0x8d09, (q15_t)0x3840, (q15_t)0x8d07,\n  (q15_t)0x383b, (q15_t)0x8d04, (q15_t)0x3835, (q15_t)0x8d01, (q15_t)0x382f, (q15_t)0x8cfe, (q15_t)0x382a, (q15_t)0x8cfb,\n  (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x381e, (q15_t)0x8cf6, (q15_t)0x3819, (q15_t)0x8cf3, (q15_t)0x3813, (q15_t)0x8cf0,\n  (q15_t)0x380d, (q15_t)0x8cee, (q15_t)0x3808, (q15_t)0x8ceb, (q15_t)0x3802, (q15_t)0x8ce8, (q15_t)0x37fd, (q15_t)0x8ce5,\n  (q15_t)0x37f7, (q15_t)0x8ce3, (q15_t)0x37f1, (q15_t)0x8ce0, (q15_t)0x37ec, (q15_t)0x8cdd, (q15_t)0x37e6, (q15_t)0x8cda,\n  (q15_t)0x37e0, (q15_t)0x8cd8, (q15_t)0x37db, (q15_t)0x8cd5, (q15_t)0x37d5, (q15_t)0x8cd2, (q15_t)0x37cf, (q15_t)0x8cd0,\n  (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x37c4, (q15_t)0x8cca, (q15_t)0x37be, (q15_t)0x8cc7, (q15_t)0x37b9, (q15_t)0x8cc5,\n  (q15_t)0x37b3, (q15_t)0x8cc2, (q15_t)0x37ad, (q15_t)0x8cbf, (q15_t)0x37a8, (q15_t)0x8cbc, (q15_t)0x37a2, (q15_t)0x8cba,\n  (q15_t)0x379c, (q15_t)0x8cb7, (q15_t)0x3797, (q15_t)0x8cb4, (q15_t)0x3791, (q15_t)0x8cb1, (q15_t)0x378b, (q15_t)0x8caf,\n  (q15_t)0x3786, (q15_t)0x8cac, (q15_t)0x3780, (q15_t)0x8ca9, (q15_t)0x377a, (q15_t)0x8ca7, (q15_t)0x3775, (q15_t)0x8ca4,\n  (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3769, (q15_t)0x8c9e, (q15_t)0x3764, (q15_t)0x8c9c, (q15_t)0x375e, (q15_t)0x8c99,\n  (q15_t)0x3758, (q15_t)0x8c96, (q15_t)0x3753, (q15_t)0x8c94, (q15_t)0x374d, (q15_t)0x8c91, (q15_t)0x3747, (q15_t)0x8c8e,\n  (q15_t)0x3742, (q15_t)0x8c8b, (q15_t)0x373c, (q15_t)0x8c89, (q15_t)0x3736, (q15_t)0x8c86, (q15_t)0x3731, (q15_t)0x8c83,\n  (q15_t)0x372b, (q15_t)0x8c81, (q15_t)0x3725, (q15_t)0x8c7e, (q15_t)0x3720, (q15_t)0x8c7b, (q15_t)0x371a, (q15_t)0x8c78,\n  (q15_t)0x3714, (q15_t)0x8c76, (q15_t)0x370f, (q15_t)0x8c73, (q15_t)0x3709, (q15_t)0x8c70, (q15_t)0x3703, (q15_t)0x8c6e,\n  (q15_t)0x36fe, (q15_t)0x8c6b, (q15_t)0x36f8, (q15_t)0x8c68, (q15_t)0x36f2, (q15_t)0x8c65, (q15_t)0x36ed, (q15_t)0x8c63,\n  (q15_t)0x36e7, (q15_t)0x8c60, (q15_t)0x36e1, (q15_t)0x8c5d, (q15_t)0x36dc, (q15_t)0x8c5b, (q15_t)0x36d6, (q15_t)0x8c58,\n  (q15_t)0x36d0, (q15_t)0x8c55, (q15_t)0x36cb, (q15_t)0x8c53, (q15_t)0x36c5, (q15_t)0x8c50, (q15_t)0x36bf, (q15_t)0x8c4d,\n  (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x36b4, (q15_t)0x8c48, (q15_t)0x36ae, (q15_t)0x8c45, (q15_t)0x36a9, (q15_t)0x8c43,\n  (q15_t)0x36a3, (q15_t)0x8c40, (q15_t)0x369d, (q15_t)0x8c3d, (q15_t)0x3698, (q15_t)0x8c3a, (q15_t)0x3692, (q15_t)0x8c38,\n  (q15_t)0x368c, (q15_t)0x8c35, (q15_t)0x3686, (q15_t)0x8c32, (q15_t)0x3681, (q15_t)0x8c30, (q15_t)0x367b, (q15_t)0x8c2d,\n  (q15_t)0x3675, (q15_t)0x8c2a, (q15_t)0x3670, (q15_t)0x8c28, (q15_t)0x366a, (q15_t)0x8c25, (q15_t)0x3664, (q15_t)0x8c22,\n  (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3659, (q15_t)0x8c1d, (q15_t)0x3653, (q15_t)0x8c1a, (q15_t)0x364e, (q15_t)0x8c18,\n  (q15_t)0x3648, (q15_t)0x8c15, (q15_t)0x3642, (q15_t)0x8c12, (q15_t)0x363d, (q15_t)0x8c10, (q15_t)0x3637, (q15_t)0x8c0d,\n  (q15_t)0x3631, (q15_t)0x8c0a, (q15_t)0x362b, (q15_t)0x8c08, (q15_t)0x3626, (q15_t)0x8c05, (q15_t)0x3620, (q15_t)0x8c02,\n  (q15_t)0x361a, (q15_t)0x8c00, (q15_t)0x3615, (q15_t)0x8bfd, (q15_t)0x360f, (q15_t)0x8bfa, (q15_t)0x3609, (q15_t)0x8bf8,\n  (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35fe, (q15_t)0x8bf3, (q15_t)0x35f8, (q15_t)0x8bf0, (q15_t)0x35f3, (q15_t)0x8bed,\n  (q15_t)0x35ed, (q15_t)0x8beb, (q15_t)0x35e7, (q15_t)0x8be8, (q15_t)0x35e1, (q15_t)0x8be5, (q15_t)0x35dc, (q15_t)0x8be3,\n  (q15_t)0x35d6, (q15_t)0x8be0, (q15_t)0x35d0, (q15_t)0x8bdd, (q15_t)0x35cb, (q15_t)0x8bdb, (q15_t)0x35c5, (q15_t)0x8bd8,\n  (q15_t)0x35bf, (q15_t)0x8bd5, (q15_t)0x35ba, (q15_t)0x8bd3, (q15_t)0x35b4, (q15_t)0x8bd0, (q15_t)0x35ae, (q15_t)0x8bce,\n  (q15_t)0x35a8, (q15_t)0x8bcb, (q15_t)0x35a3, (q15_t)0x8bc8, (q15_t)0x359d, (q15_t)0x8bc6, (q15_t)0x3597, (q15_t)0x8bc3,\n  (q15_t)0x3592, (q15_t)0x8bc0, (q15_t)0x358c, (q15_t)0x8bbe, (q15_t)0x3586, (q15_t)0x8bbb, (q15_t)0x3580, (q15_t)0x8bb8,\n  (q15_t)0x357b, (q15_t)0x8bb6, (q15_t)0x3575, (q15_t)0x8bb3, (q15_t)0x356f, (q15_t)0x8bb1, (q15_t)0x356a, (q15_t)0x8bae,\n  (q15_t)0x3564, (q15_t)0x8bab, (q15_t)0x355e, (q15_t)0x8ba9, (q15_t)0x3558, (q15_t)0x8ba6, (q15_t)0x3553, (q15_t)0x8ba4,\n  (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x3547, (q15_t)0x8b9e, (q15_t)0x3542, (q15_t)0x8b9c, (q15_t)0x353c, (q15_t)0x8b99,\n  (q15_t)0x3536, (q15_t)0x8b96, (q15_t)0x3530, (q15_t)0x8b94, (q15_t)0x352b, (q15_t)0x8b91, (q15_t)0x3525, (q15_t)0x8b8f,\n  (q15_t)0x351f, (q15_t)0x8b8c, (q15_t)0x351a, (q15_t)0x8b89, (q15_t)0x3514, (q15_t)0x8b87, (q15_t)0x350e, (q15_t)0x8b84,\n  (q15_t)0x3508, (q15_t)0x8b82, (q15_t)0x3503, (q15_t)0x8b7f, (q15_t)0x34fd, (q15_t)0x8b7c, (q15_t)0x34f7, (q15_t)0x8b7a,\n  (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x34ec, (q15_t)0x8b75, (q15_t)0x34e6, (q15_t)0x8b72, (q15_t)0x34e0, (q15_t)0x8b6f,\n  (q15_t)0x34db, (q15_t)0x8b6d, (q15_t)0x34d5, (q15_t)0x8b6a, (q15_t)0x34cf, (q15_t)0x8b68, (q15_t)0x34ca, (q15_t)0x8b65,\n  (q15_t)0x34c4, (q15_t)0x8b62, (q15_t)0x34be, (q15_t)0x8b60, (q15_t)0x34b8, (q15_t)0x8b5d, (q15_t)0x34b3, (q15_t)0x8b5b,\n  (q15_t)0x34ad, (q15_t)0x8b58, (q15_t)0x34a7, (q15_t)0x8b55, (q15_t)0x34a1, (q15_t)0x8b53, (q15_t)0x349c, (q15_t)0x8b50,\n  (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x3490, (q15_t)0x8b4b, (q15_t)0x348b, (q15_t)0x8b49, (q15_t)0x3485, (q15_t)0x8b46,\n  (q15_t)0x347f, (q15_t)0x8b43, (q15_t)0x3479, (q15_t)0x8b41, (q15_t)0x3474, (q15_t)0x8b3e, (q15_t)0x346e, (q15_t)0x8b3c,\n  (q15_t)0x3468, (q15_t)0x8b39, (q15_t)0x3462, (q15_t)0x8b37, (q15_t)0x345d, (q15_t)0x8b34, (q15_t)0x3457, (q15_t)0x8b31,\n  (q15_t)0x3451, (q15_t)0x8b2f, (q15_t)0x344b, (q15_t)0x8b2c, (q15_t)0x3446, (q15_t)0x8b2a, (q15_t)0x3440, (q15_t)0x8b27,\n  (q15_t)0x343a, (q15_t)0x8b25, (q15_t)0x3435, (q15_t)0x8b22, (q15_t)0x342f, (q15_t)0x8b1f, (q15_t)0x3429, (q15_t)0x8b1d,\n  (q15_t)0x3423, (q15_t)0x8b1a, (q15_t)0x341e, (q15_t)0x8b18, (q15_t)0x3418, (q15_t)0x8b15, (q15_t)0x3412, (q15_t)0x8b13,\n  (q15_t)0x340c, (q15_t)0x8b10, (q15_t)0x3407, (q15_t)0x8b0e, (q15_t)0x3401, (q15_t)0x8b0b, (q15_t)0x33fb, (q15_t)0x8b08,\n  (q15_t)0x33f5, (q15_t)0x8b06, (q15_t)0x33f0, (q15_t)0x8b03, (q15_t)0x33ea, (q15_t)0x8b01, (q15_t)0x33e4, (q15_t)0x8afe,\n  (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x33d9, (q15_t)0x8af9, (q15_t)0x33d3, (q15_t)0x8af7, (q15_t)0x33cd, (q15_t)0x8af4,\n  (q15_t)0x33c7, (q15_t)0x8af1, (q15_t)0x33c2, (q15_t)0x8aef, (q15_t)0x33bc, (q15_t)0x8aec, (q15_t)0x33b6, (q15_t)0x8aea,\n  (q15_t)0x33b0, (q15_t)0x8ae7, (q15_t)0x33ab, (q15_t)0x8ae5, (q15_t)0x33a5, (q15_t)0x8ae2, (q15_t)0x339f, (q15_t)0x8ae0,\n  (q15_t)0x3399, (q15_t)0x8add, (q15_t)0x3394, (q15_t)0x8adb, (q15_t)0x338e, (q15_t)0x8ad8, (q15_t)0x3388, (q15_t)0x8ad6,\n  (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x337d, (q15_t)0x8ad1, (q15_t)0x3377, (q15_t)0x8ace, (q15_t)0x3371, (q15_t)0x8acb,\n  (q15_t)0x336b, (q15_t)0x8ac9, (q15_t)0x3366, (q15_t)0x8ac6, (q15_t)0x3360, (q15_t)0x8ac4, (q15_t)0x335a, (q15_t)0x8ac1,\n  (q15_t)0x3354, (q15_t)0x8abf, (q15_t)0x334f, (q15_t)0x8abc, (q15_t)0x3349, (q15_t)0x8aba, (q15_t)0x3343, (q15_t)0x8ab7,\n  (q15_t)0x333d, (q15_t)0x8ab5, (q15_t)0x3338, (q15_t)0x8ab2, (q15_t)0x3332, (q15_t)0x8ab0, (q15_t)0x332c, (q15_t)0x8aad,\n  (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x3321, (q15_t)0x8aa8, (q15_t)0x331b, (q15_t)0x8aa6, (q15_t)0x3315, (q15_t)0x8aa3,\n  (q15_t)0x330f, (q15_t)0x8aa1, (q15_t)0x330a, (q15_t)0x8a9e, (q15_t)0x3304, (q15_t)0x8a9c, (q15_t)0x32fe, (q15_t)0x8a99,\n  (q15_t)0x32f8, (q15_t)0x8a97, (q15_t)0x32f3, (q15_t)0x8a94, (q15_t)0x32ed, (q15_t)0x8a92, (q15_t)0x32e7, (q15_t)0x8a8f,\n  (q15_t)0x32e1, (q15_t)0x8a8d, (q15_t)0x32db, (q15_t)0x8a8a, (q15_t)0x32d6, (q15_t)0x8a88, (q15_t)0x32d0, (q15_t)0x8a85,\n  (q15_t)0x32ca, (q15_t)0x8a83, (q15_t)0x32c4, (q15_t)0x8a80, (q15_t)0x32bf, (q15_t)0x8a7e, (q15_t)0x32b9, (q15_t)0x8a7b,\n  (q15_t)0x32b3, (q15_t)0x8a79, (q15_t)0x32ad, (q15_t)0x8a76, (q15_t)0x32a8, (q15_t)0x8a74, (q15_t)0x32a2, (q15_t)0x8a71,\n  (q15_t)0x329c, (q15_t)0x8a6f, (q15_t)0x3296, (q15_t)0x8a6c, (q15_t)0x3290, (q15_t)0x8a6a, (q15_t)0x328b, (q15_t)0x8a67,\n  (q15_t)0x3285, (q15_t)0x8a65, (q15_t)0x327f, (q15_t)0x8a62, (q15_t)0x3279, (q15_t)0x8a60, (q15_t)0x3274, (q15_t)0x8a5d,\n  (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3268, (q15_t)0x8a59, (q15_t)0x3262, (q15_t)0x8a56, (q15_t)0x325d, (q15_t)0x8a54,\n  (q15_t)0x3257, (q15_t)0x8a51, (q15_t)0x3251, (q15_t)0x8a4f, (q15_t)0x324b, (q15_t)0x8a4c, (q15_t)0x3245, (q15_t)0x8a4a,\n  (q15_t)0x3240, (q15_t)0x8a47, (q15_t)0x323a, (q15_t)0x8a45, (q15_t)0x3234, (q15_t)0x8a42, (q15_t)0x322e, (q15_t)0x8a40,\n  (q15_t)0x3228, (q15_t)0x8a3d, (q15_t)0x3223, (q15_t)0x8a3b, (q15_t)0x321d, (q15_t)0x8a38, (q15_t)0x3217, (q15_t)0x8a36,\n  (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x320c, (q15_t)0x8a31, (q15_t)0x3206, (q15_t)0x8a2f, (q15_t)0x3200, (q15_t)0x8a2c,\n  (q15_t)0x31fa, (q15_t)0x8a2a, (q15_t)0x31f4, (q15_t)0x8a27, (q15_t)0x31ef, (q15_t)0x8a25, (q15_t)0x31e9, (q15_t)0x8a22,\n  (q15_t)0x31e3, (q15_t)0x8a20, (q15_t)0x31dd, (q15_t)0x8a1d, (q15_t)0x31d8, (q15_t)0x8a1b, (q15_t)0x31d2, (q15_t)0x8a19,\n  (q15_t)0x31cc, (q15_t)0x8a16, (q15_t)0x31c6, (q15_t)0x8a14, (q15_t)0x31c0, (q15_t)0x8a11, (q15_t)0x31bb, (q15_t)0x8a0f,\n  (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x31af, (q15_t)0x8a0a, (q15_t)0x31a9, (q15_t)0x8a07, (q15_t)0x31a3, (q15_t)0x8a05,\n  (q15_t)0x319e, (q15_t)0x8a03, (q15_t)0x3198, (q15_t)0x8a00, (q15_t)0x3192, (q15_t)0x89fe, (q15_t)0x318c, (q15_t)0x89fb,\n  (q15_t)0x3186, (q15_t)0x89f9, (q15_t)0x3181, (q15_t)0x89f6, (q15_t)0x317b, (q15_t)0x89f4, (q15_t)0x3175, (q15_t)0x89f2,\n  (q15_t)0x316f, (q15_t)0x89ef, (q15_t)0x3169, (q15_t)0x89ed, (q15_t)0x3164, (q15_t)0x89ea, (q15_t)0x315e, (q15_t)0x89e8,\n  (q15_t)0x3158, (q15_t)0x89e5, (q15_t)0x3152, (q15_t)0x89e3, (q15_t)0x314c, (q15_t)0x89e1, (q15_t)0x3147, (q15_t)0x89de,\n  (q15_t)0x3141, (q15_t)0x89dc, (q15_t)0x313b, (q15_t)0x89d9, (q15_t)0x3135, (q15_t)0x89d7, (q15_t)0x312f, (q15_t)0x89d5,\n  (q15_t)0x312a, (q15_t)0x89d2, (q15_t)0x3124, (q15_t)0x89d0, (q15_t)0x311e, (q15_t)0x89cd, (q15_t)0x3118, (q15_t)0x89cb,\n  (q15_t)0x3112, (q15_t)0x89c8, (q15_t)0x310d, (q15_t)0x89c6, (q15_t)0x3107, (q15_t)0x89c4, (q15_t)0x3101, (q15_t)0x89c1,\n  (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x30f5, (q15_t)0x89bc, (q15_t)0x30f0, (q15_t)0x89ba, (q15_t)0x30ea, (q15_t)0x89b8,\n  (q15_t)0x30e4, (q15_t)0x89b5, (q15_t)0x30de, (q15_t)0x89b3, (q15_t)0x30d8, (q15_t)0x89b0, (q15_t)0x30d3, (q15_t)0x89ae,\n  (q15_t)0x30cd, (q15_t)0x89ac, (q15_t)0x30c7, (q15_t)0x89a9, (q15_t)0x30c1, (q15_t)0x89a7, (q15_t)0x30bb, (q15_t)0x89a4,\n  (q15_t)0x30b6, (q15_t)0x89a2, (q15_t)0x30b0, (q15_t)0x89a0, (q15_t)0x30aa, (q15_t)0x899d, (q15_t)0x30a4, (q15_t)0x899b,\n  (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3099, (q15_t)0x8996, (q15_t)0x3093, (q15_t)0x8994, (q15_t)0x308d, (q15_t)0x8991,\n  (q15_t)0x3087, (q15_t)0x898f, (q15_t)0x3081, (q15_t)0x898d, (q15_t)0x307b, (q15_t)0x898a, (q15_t)0x3076, (q15_t)0x8988,\n  (q15_t)0x3070, (q15_t)0x8985, (q15_t)0x306a, (q15_t)0x8983, (q15_t)0x3064, (q15_t)0x8981, (q15_t)0x305e, (q15_t)0x897e,\n  (q15_t)0x3059, (q15_t)0x897c, (q15_t)0x3053, (q15_t)0x897a, (q15_t)0x304d, (q15_t)0x8977, (q15_t)0x3047, (q15_t)0x8975,\n  (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x303b, (q15_t)0x8970, (q15_t)0x3036, (q15_t)0x896e, (q15_t)0x3030, (q15_t)0x896b,\n  (q15_t)0x302a, (q15_t)0x8969, (q15_t)0x3024, (q15_t)0x8967, (q15_t)0x301e, (q15_t)0x8964, (q15_t)0x3019, (q15_t)0x8962,\n  (q15_t)0x3013, (q15_t)0x8960, (q15_t)0x300d, (q15_t)0x895d, (q15_t)0x3007, (q15_t)0x895b, (q15_t)0x3001, (q15_t)0x8958,\n  (q15_t)0x2ffb, (q15_t)0x8956, (q15_t)0x2ff6, (q15_t)0x8954, (q15_t)0x2ff0, (q15_t)0x8951, (q15_t)0x2fea, (q15_t)0x894f,\n  (q15_t)0x2fe4, (q15_t)0x894d, (q15_t)0x2fde, (q15_t)0x894a, (q15_t)0x2fd8, (q15_t)0x8948, (q15_t)0x2fd3, (q15_t)0x8946,\n  (q15_t)0x2fcd, (q15_t)0x8943, (q15_t)0x2fc7, (q15_t)0x8941, (q15_t)0x2fc1, (q15_t)0x893f, (q15_t)0x2fbb, (q15_t)0x893c,\n  (q15_t)0x2fb5, (q15_t)0x893a, (q15_t)0x2fb0, (q15_t)0x8938, (q15_t)0x2faa, (q15_t)0x8935, (q15_t)0x2fa4, (q15_t)0x8933,\n  (q15_t)0x2f9e, (q15_t)0x8931, (q15_t)0x2f98, (q15_t)0x892e, (q15_t)0x2f92, (q15_t)0x892c, (q15_t)0x2f8d, (q15_t)0x892a,\n  (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f81, (q15_t)0x8925, (q15_t)0x2f7b, (q15_t)0x8923, (q15_t)0x2f75, (q15_t)0x8920,\n  (q15_t)0x2f6f, (q15_t)0x891e, (q15_t)0x2f6a, (q15_t)0x891c, (q15_t)0x2f64, (q15_t)0x8919, (q15_t)0x2f5e, (q15_t)0x8917,\n  (q15_t)0x2f58, (q15_t)0x8915, (q15_t)0x2f52, (q15_t)0x8912, (q15_t)0x2f4c, (q15_t)0x8910, (q15_t)0x2f47, (q15_t)0x890e,\n  (q15_t)0x2f41, (q15_t)0x890b, (q15_t)0x2f3b, (q15_t)0x8909, (q15_t)0x2f35, (q15_t)0x8907, (q15_t)0x2f2f, (q15_t)0x8904,\n  (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2f24, (q15_t)0x8900, (q15_t)0x2f1e, (q15_t)0x88fd, (q15_t)0x2f18, (q15_t)0x88fb,\n  (q15_t)0x2f12, (q15_t)0x88f9, (q15_t)0x2f0c, (q15_t)0x88f6, (q15_t)0x2f06, (q15_t)0x88f4, (q15_t)0x2f01, (q15_t)0x88f2,\n  (q15_t)0x2efb, (q15_t)0x88f0, (q15_t)0x2ef5, (q15_t)0x88ed, (q15_t)0x2eef, (q15_t)0x88eb, (q15_t)0x2ee9, (q15_t)0x88e9,\n  (q15_t)0x2ee3, (q15_t)0x88e6, (q15_t)0x2edd, (q15_t)0x88e4, (q15_t)0x2ed8, (q15_t)0x88e2, (q15_t)0x2ed2, (q15_t)0x88df,\n  (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2ec6, (q15_t)0x88db, (q15_t)0x2ec0, (q15_t)0x88d9, (q15_t)0x2eba, (q15_t)0x88d6,\n  (q15_t)0x2eb5, (q15_t)0x88d4, (q15_t)0x2eaf, (q15_t)0x88d2, (q15_t)0x2ea9, (q15_t)0x88cf, (q15_t)0x2ea3, (q15_t)0x88cd,\n  (q15_t)0x2e9d, (q15_t)0x88cb, (q15_t)0x2e97, (q15_t)0x88c8, (q15_t)0x2e91, (q15_t)0x88c6, (q15_t)0x2e8c, (q15_t)0x88c4,\n  (q15_t)0x2e86, (q15_t)0x88c2, (q15_t)0x2e80, (q15_t)0x88bf, (q15_t)0x2e7a, (q15_t)0x88bd, (q15_t)0x2e74, (q15_t)0x88bb,\n  (q15_t)0x2e6e, (q15_t)0x88b9, (q15_t)0x2e68, (q15_t)0x88b6, (q15_t)0x2e63, (q15_t)0x88b4, (q15_t)0x2e5d, (q15_t)0x88b2,\n  (q15_t)0x2e57, (q15_t)0x88af, (q15_t)0x2e51, (q15_t)0x88ad, (q15_t)0x2e4b, (q15_t)0x88ab, (q15_t)0x2e45, (q15_t)0x88a9,\n  (q15_t)0x2e3f, (q15_t)0x88a6, (q15_t)0x2e3a, (q15_t)0x88a4, (q15_t)0x2e34, (q15_t)0x88a2, (q15_t)0x2e2e, (q15_t)0x88a0,\n  (q15_t)0x2e28, (q15_t)0x889d, (q15_t)0x2e22, (q15_t)0x889b, (q15_t)0x2e1c, (q15_t)0x8899, (q15_t)0x2e16, (q15_t)0x8896,\n  (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2e0b, (q15_t)0x8892, (q15_t)0x2e05, (q15_t)0x8890, (q15_t)0x2dff, (q15_t)0x888d,\n  (q15_t)0x2df9, (q15_t)0x888b, (q15_t)0x2df3, (q15_t)0x8889, (q15_t)0x2ded, (q15_t)0x8887, (q15_t)0x2de7, (q15_t)0x8884,\n  (q15_t)0x2de2, (q15_t)0x8882, (q15_t)0x2ddc, (q15_t)0x8880, (q15_t)0x2dd6, (q15_t)0x887e, (q15_t)0x2dd0, (q15_t)0x887b,\n  (q15_t)0x2dca, (q15_t)0x8879, (q15_t)0x2dc4, (q15_t)0x8877, (q15_t)0x2dbe, (q15_t)0x8875, (q15_t)0x2db9, (q15_t)0x8872,\n  (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2dad, (q15_t)0x886e, (q15_t)0x2da7, (q15_t)0x886c, (q15_t)0x2da1, (q15_t)0x8869,\n  (q15_t)0x2d9b, (q15_t)0x8867, (q15_t)0x2d95, (q15_t)0x8865, (q15_t)0x2d8f, (q15_t)0x8863, (q15_t)0x2d8a, (q15_t)0x8860,\n  (q15_t)0x2d84, (q15_t)0x885e, (q15_t)0x2d7e, (q15_t)0x885c, (q15_t)0x2d78, (q15_t)0x885a, (q15_t)0x2d72, (q15_t)0x8858,\n  (q15_t)0x2d6c, (q15_t)0x8855, (q15_t)0x2d66, (q15_t)0x8853, (q15_t)0x2d60, (q15_t)0x8851, (q15_t)0x2d5b, (q15_t)0x884f,\n  (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2d4f, (q15_t)0x884a, (q15_t)0x2d49, (q15_t)0x8848, (q15_t)0x2d43, (q15_t)0x8846,\n  (q15_t)0x2d3d, (q15_t)0x8844, (q15_t)0x2d37, (q15_t)0x8841, (q15_t)0x2d31, (q15_t)0x883f, (q15_t)0x2d2c, (q15_t)0x883d,\n  (q15_t)0x2d26, (q15_t)0x883b, (q15_t)0x2d20, (q15_t)0x8838, (q15_t)0x2d1a, (q15_t)0x8836, (q15_t)0x2d14, (q15_t)0x8834,\n  (q15_t)0x2d0e, (q15_t)0x8832, (q15_t)0x2d08, (q15_t)0x8830, (q15_t)0x2d02, (q15_t)0x882d, (q15_t)0x2cfd, (q15_t)0x882b,\n  (q15_t)0x2cf7, (q15_t)0x8829, (q15_t)0x2cf1, (q15_t)0x8827, (q15_t)0x2ceb, (q15_t)0x8825, (q15_t)0x2ce5, (q15_t)0x8822,\n  (q15_t)0x2cdf, (q15_t)0x8820, (q15_t)0x2cd9, (q15_t)0x881e, (q15_t)0x2cd3, (q15_t)0x881c, (q15_t)0x2ccd, (q15_t)0x881a,\n  (q15_t)0x2cc8, (q15_t)0x8817, (q15_t)0x2cc2, (q15_t)0x8815, (q15_t)0x2cbc, (q15_t)0x8813, (q15_t)0x2cb6, (q15_t)0x8811,\n  (q15_t)0x2cb0, (q15_t)0x880f, (q15_t)0x2caa, (q15_t)0x880c, (q15_t)0x2ca4, (q15_t)0x880a, (q15_t)0x2c9e, (q15_t)0x8808,\n  (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c93, (q15_t)0x8804, (q15_t)0x2c8d, (q15_t)0x8801, (q15_t)0x2c87, (q15_t)0x87ff,\n  (q15_t)0x2c81, (q15_t)0x87fd, (q15_t)0x2c7b, (q15_t)0x87fb, (q15_t)0x2c75, (q15_t)0x87f9, (q15_t)0x2c6f, (q15_t)0x87f6,\n  (q15_t)0x2c69, (q15_t)0x87f4, (q15_t)0x2c63, (q15_t)0x87f2, (q15_t)0x2c5e, (q15_t)0x87f0, (q15_t)0x2c58, (q15_t)0x87ee,\n  (q15_t)0x2c52, (q15_t)0x87ec, (q15_t)0x2c4c, (q15_t)0x87e9, (q15_t)0x2c46, (q15_t)0x87e7, (q15_t)0x2c40, (q15_t)0x87e5,\n  (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2c34, (q15_t)0x87e1, (q15_t)0x2c2e, (q15_t)0x87df, (q15_t)0x2c29, (q15_t)0x87dc,\n  (q15_t)0x2c23, (q15_t)0x87da, (q15_t)0x2c1d, (q15_t)0x87d8, (q15_t)0x2c17, (q15_t)0x87d6, (q15_t)0x2c11, (q15_t)0x87d4,\n  (q15_t)0x2c0b, (q15_t)0x87d2, (q15_t)0x2c05, (q15_t)0x87cf, (q15_t)0x2bff, (q15_t)0x87cd, (q15_t)0x2bf9, (q15_t)0x87cb,\n  (q15_t)0x2bf3, (q15_t)0x87c9, (q15_t)0x2bee, (q15_t)0x87c7, (q15_t)0x2be8, (q15_t)0x87c5, (q15_t)0x2be2, (q15_t)0x87c2,\n  (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2bd6, (q15_t)0x87be, (q15_t)0x2bd0, (q15_t)0x87bc, (q15_t)0x2bca, (q15_t)0x87ba,\n  (q15_t)0x2bc4, (q15_t)0x87b8, (q15_t)0x2bbe, (q15_t)0x87b6, (q15_t)0x2bb8, (q15_t)0x87b3, (q15_t)0x2bb2, (q15_t)0x87b1,\n  (q15_t)0x2bad, (q15_t)0x87af, (q15_t)0x2ba7, (q15_t)0x87ad, (q15_t)0x2ba1, (q15_t)0x87ab, (q15_t)0x2b9b, (q15_t)0x87a9,\n  (q15_t)0x2b95, (q15_t)0x87a7, (q15_t)0x2b8f, (q15_t)0x87a4, (q15_t)0x2b89, (q15_t)0x87a2, (q15_t)0x2b83, (q15_t)0x87a0,\n  (q15_t)0x2b7d, (q15_t)0x879e, (q15_t)0x2b77, (q15_t)0x879c, (q15_t)0x2b71, (q15_t)0x879a, (q15_t)0x2b6c, (q15_t)0x8798,\n  (q15_t)0x2b66, (q15_t)0x8795, (q15_t)0x2b60, (q15_t)0x8793, (q15_t)0x2b5a, (q15_t)0x8791, (q15_t)0x2b54, (q15_t)0x878f,\n  (q15_t)0x2b4e, (q15_t)0x878d, (q15_t)0x2b48, (q15_t)0x878b, (q15_t)0x2b42, (q15_t)0x8789, (q15_t)0x2b3c, (q15_t)0x8787,\n  (q15_t)0x2b36, (q15_t)0x8784, (q15_t)0x2b30, (q15_t)0x8782, (q15_t)0x2b2b, (q15_t)0x8780, (q15_t)0x2b25, (q15_t)0x877e,\n  (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2b19, (q15_t)0x877a, (q15_t)0x2b13, (q15_t)0x8778, (q15_t)0x2b0d, (q15_t)0x8776,\n  (q15_t)0x2b07, (q15_t)0x8774, (q15_t)0x2b01, (q15_t)0x8771, (q15_t)0x2afb, (q15_t)0x876f, (q15_t)0x2af5, (q15_t)0x876d,\n  (q15_t)0x2aef, (q15_t)0x876b, (q15_t)0x2ae9, (q15_t)0x8769, (q15_t)0x2ae4, (q15_t)0x8767, (q15_t)0x2ade, (q15_t)0x8765,\n  (q15_t)0x2ad8, (q15_t)0x8763, (q15_t)0x2ad2, (q15_t)0x8761, (q15_t)0x2acc, (q15_t)0x875e, (q15_t)0x2ac6, (q15_t)0x875c,\n  (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2aba, (q15_t)0x8758, (q15_t)0x2ab4, (q15_t)0x8756, (q15_t)0x2aae, (q15_t)0x8754,\n  (q15_t)0x2aa8, (q15_t)0x8752, (q15_t)0x2aa2, (q15_t)0x8750, (q15_t)0x2a9c, (q15_t)0x874e, (q15_t)0x2a97, (q15_t)0x874c,\n  (q15_t)0x2a91, (q15_t)0x874a, (q15_t)0x2a8b, (q15_t)0x8747, (q15_t)0x2a85, (q15_t)0x8745, (q15_t)0x2a7f, (q15_t)0x8743,\n  (q15_t)0x2a79, (q15_t)0x8741, (q15_t)0x2a73, (q15_t)0x873f, (q15_t)0x2a6d, (q15_t)0x873d, (q15_t)0x2a67, (q15_t)0x873b,\n  (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a5b, (q15_t)0x8737, (q15_t)0x2a55, (q15_t)0x8735, (q15_t)0x2a4f, (q15_t)0x8733,\n  (q15_t)0x2a49, (q15_t)0x8731, (q15_t)0x2a44, (q15_t)0x872e, (q15_t)0x2a3e, (q15_t)0x872c, (q15_t)0x2a38, (q15_t)0x872a,\n  (q15_t)0x2a32, (q15_t)0x8728, (q15_t)0x2a2c, (q15_t)0x8726, (q15_t)0x2a26, (q15_t)0x8724, (q15_t)0x2a20, (q15_t)0x8722,\n  (q15_t)0x2a1a, (q15_t)0x8720, (q15_t)0x2a14, (q15_t)0x871e, (q15_t)0x2a0e, (q15_t)0x871c, (q15_t)0x2a08, (q15_t)0x871a,\n  (q15_t)0x2a02, (q15_t)0x8718, (q15_t)0x29fc, (q15_t)0x8716, (q15_t)0x29f6, (q15_t)0x8714, (q15_t)0x29f0, (q15_t)0x8712,\n  (q15_t)0x29eb, (q15_t)0x870f, (q15_t)0x29e5, (q15_t)0x870d, (q15_t)0x29df, (q15_t)0x870b, (q15_t)0x29d9, (q15_t)0x8709,\n  (q15_t)0x29d3, (q15_t)0x8707, (q15_t)0x29cd, (q15_t)0x8705, (q15_t)0x29c7, (q15_t)0x8703, (q15_t)0x29c1, (q15_t)0x8701,\n  (q15_t)0x29bb, (q15_t)0x86ff, (q15_t)0x29b5, (q15_t)0x86fd, (q15_t)0x29af, (q15_t)0x86fb, (q15_t)0x29a9, (q15_t)0x86f9,\n  (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x299d, (q15_t)0x86f5, (q15_t)0x2997, (q15_t)0x86f3, (q15_t)0x2991, (q15_t)0x86f1,\n  (q15_t)0x298b, (q15_t)0x86ef, (q15_t)0x2986, (q15_t)0x86ed, (q15_t)0x2980, (q15_t)0x86eb, (q15_t)0x297a, (q15_t)0x86e9,\n  (q15_t)0x2974, (q15_t)0x86e7, (q15_t)0x296e, (q15_t)0x86e4, (q15_t)0x2968, (q15_t)0x86e2, (q15_t)0x2962, (q15_t)0x86e0,\n  (q15_t)0x295c, (q15_t)0x86de, (q15_t)0x2956, (q15_t)0x86dc, (q15_t)0x2950, (q15_t)0x86da, (q15_t)0x294a, (q15_t)0x86d8,\n  (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x293e, (q15_t)0x86d4, (q15_t)0x2938, (q15_t)0x86d2, (q15_t)0x2932, (q15_t)0x86d0,\n  (q15_t)0x292c, (q15_t)0x86ce, (q15_t)0x2926, (q15_t)0x86cc, (q15_t)0x2920, (q15_t)0x86ca, (q15_t)0x291b, (q15_t)0x86c8,\n  (q15_t)0x2915, (q15_t)0x86c6, (q15_t)0x290f, (q15_t)0x86c4, (q15_t)0x2909, (q15_t)0x86c2, (q15_t)0x2903, (q15_t)0x86c0,\n  (q15_t)0x28fd, (q15_t)0x86be, (q15_t)0x28f7, (q15_t)0x86bc, (q15_t)0x28f1, (q15_t)0x86ba, (q15_t)0x28eb, (q15_t)0x86b8,\n  (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x28df, (q15_t)0x86b4, (q15_t)0x28d9, (q15_t)0x86b2, (q15_t)0x28d3, (q15_t)0x86b0,\n  (q15_t)0x28cd, (q15_t)0x86ae, (q15_t)0x28c7, (q15_t)0x86ac, (q15_t)0x28c1, (q15_t)0x86aa, (q15_t)0x28bb, (q15_t)0x86a8,\n  (q15_t)0x28b5, (q15_t)0x86a6, (q15_t)0x28af, (q15_t)0x86a4, (q15_t)0x28a9, (q15_t)0x86a2, (q15_t)0x28a3, (q15_t)0x86a0,\n  (q15_t)0x289d, (q15_t)0x869e, (q15_t)0x2898, (q15_t)0x869c, (q15_t)0x2892, (q15_t)0x869a, (q15_t)0x288c, (q15_t)0x8698,\n  (q15_t)0x2886, (q15_t)0x8696, (q15_t)0x2880, (q15_t)0x8694, (q15_t)0x287a, (q15_t)0x8692, (q15_t)0x2874, (q15_t)0x8690,\n  (q15_t)0x286e, (q15_t)0x868e, (q15_t)0x2868, (q15_t)0x868c, (q15_t)0x2862, (q15_t)0x868a, (q15_t)0x285c, (q15_t)0x8688,\n  (q15_t)0x2856, (q15_t)0x8686, (q15_t)0x2850, (q15_t)0x8684, (q15_t)0x284a, (q15_t)0x8682, (q15_t)0x2844, (q15_t)0x8680,\n  (q15_t)0x283e, (q15_t)0x867e, (q15_t)0x2838, (q15_t)0x867c, (q15_t)0x2832, (q15_t)0x867a, (q15_t)0x282c, (q15_t)0x8678,\n  (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x2820, (q15_t)0x8674, (q15_t)0x281a, (q15_t)0x8672, (q15_t)0x2814, (q15_t)0x8670,\n  (q15_t)0x280e, (q15_t)0x866e, (q15_t)0x2808, (q15_t)0x866d, (q15_t)0x2802, (q15_t)0x866b, (q15_t)0x27fc, (q15_t)0x8669,\n  (q15_t)0x27f6, (q15_t)0x8667, (q15_t)0x27f1, (q15_t)0x8665, (q15_t)0x27eb, (q15_t)0x8663, (q15_t)0x27e5, (q15_t)0x8661,\n  (q15_t)0x27df, (q15_t)0x865f, (q15_t)0x27d9, (q15_t)0x865d, (q15_t)0x27d3, (q15_t)0x865b, (q15_t)0x27cd, (q15_t)0x8659,\n  (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x27c1, (q15_t)0x8655, (q15_t)0x27bb, (q15_t)0x8653, (q15_t)0x27b5, (q15_t)0x8651,\n  (q15_t)0x27af, (q15_t)0x864f, (q15_t)0x27a9, (q15_t)0x864d, (q15_t)0x27a3, (q15_t)0x864b, (q15_t)0x279d, (q15_t)0x8649,\n  (q15_t)0x2797, (q15_t)0x8647, (q15_t)0x2791, (q15_t)0x8645, (q15_t)0x278b, (q15_t)0x8644, (q15_t)0x2785, (q15_t)0x8642,\n  (q15_t)0x277f, (q15_t)0x8640, (q15_t)0x2779, (q15_t)0x863e, (q15_t)0x2773, (q15_t)0x863c, (q15_t)0x276d, (q15_t)0x863a,\n  (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x2761, (q15_t)0x8636, (q15_t)0x275b, (q15_t)0x8634, (q15_t)0x2755, (q15_t)0x8632,\n  (q15_t)0x274f, (q15_t)0x8630, (q15_t)0x2749, (q15_t)0x862e, (q15_t)0x2743, (q15_t)0x862c, (q15_t)0x273d, (q15_t)0x862a,\n  (q15_t)0x2737, (q15_t)0x8628, (q15_t)0x2731, (q15_t)0x8627, (q15_t)0x272b, (q15_t)0x8625, (q15_t)0x2725, (q15_t)0x8623,\n  (q15_t)0x271f, (q15_t)0x8621, (q15_t)0x2719, (q15_t)0x861f, (q15_t)0x2713, (q15_t)0x861d, (q15_t)0x270d, (q15_t)0x861b,\n  (q15_t)0x2707, (q15_t)0x8619, (q15_t)0x2701, (q15_t)0x8617, (q15_t)0x26fb, (q15_t)0x8615, (q15_t)0x26f5, (q15_t)0x8613,\n  (q15_t)0x26ef, (q15_t)0x8611, (q15_t)0x26e9, (q15_t)0x8610, (q15_t)0x26e4, (q15_t)0x860e, (q15_t)0x26de, (q15_t)0x860c,\n  (q15_t)0x26d8, (q15_t)0x860a, (q15_t)0x26d2, (q15_t)0x8608, (q15_t)0x26cc, (q15_t)0x8606, (q15_t)0x26c6, (q15_t)0x8604,\n  (q15_t)0x26c0, (q15_t)0x8602, (q15_t)0x26ba, (q15_t)0x8600, (q15_t)0x26b4, (q15_t)0x85fe, (q15_t)0x26ae, (q15_t)0x85fc,\n  (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x26a2, (q15_t)0x85f9, (q15_t)0x269c, (q15_t)0x85f7, (q15_t)0x2696, (q15_t)0x85f5,\n  (q15_t)0x2690, (q15_t)0x85f3, (q15_t)0x268a, (q15_t)0x85f1, (q15_t)0x2684, (q15_t)0x85ef, (q15_t)0x267e, (q15_t)0x85ed,\n  (q15_t)0x2678, (q15_t)0x85eb, (q15_t)0x2672, (q15_t)0x85ea, (q15_t)0x266c, (q15_t)0x85e8, (q15_t)0x2666, (q15_t)0x85e6,\n  (q15_t)0x2660, (q15_t)0x85e4, (q15_t)0x265a, (q15_t)0x85e2, (q15_t)0x2654, (q15_t)0x85e0, (q15_t)0x264e, (q15_t)0x85de,\n  (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x2642, (q15_t)0x85da, (q15_t)0x263c, (q15_t)0x85d9, (q15_t)0x2636, (q15_t)0x85d7,\n  (q15_t)0x2630, (q15_t)0x85d5, (q15_t)0x262a, (q15_t)0x85d3, (q15_t)0x2624, (q15_t)0x85d1, (q15_t)0x261e, (q15_t)0x85cf,\n  (q15_t)0x2618, (q15_t)0x85cd, (q15_t)0x2612, (q15_t)0x85cb, (q15_t)0x260c, (q15_t)0x85ca, (q15_t)0x2606, (q15_t)0x85c8,\n  (q15_t)0x2600, (q15_t)0x85c6, (q15_t)0x25fa, (q15_t)0x85c4, (q15_t)0x25f4, (q15_t)0x85c2, (q15_t)0x25ee, (q15_t)0x85c0,\n  (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x25e2, (q15_t)0x85bd, (q15_t)0x25dc, (q15_t)0x85bb, (q15_t)0x25d6, (q15_t)0x85b9,\n  (q15_t)0x25d0, (q15_t)0x85b7, (q15_t)0x25ca, (q15_t)0x85b5, (q15_t)0x25c4, (q15_t)0x85b3, (q15_t)0x25be, (q15_t)0x85b1,\n  (q15_t)0x25b8, (q15_t)0x85b0, (q15_t)0x25b2, (q15_t)0x85ae, (q15_t)0x25ac, (q15_t)0x85ac, (q15_t)0x25a6, (q15_t)0x85aa,\n  (q15_t)0x25a0, (q15_t)0x85a8, (q15_t)0x259a, (q15_t)0x85a6, (q15_t)0x2594, (q15_t)0x85a4, (q15_t)0x258e, (q15_t)0x85a3,\n  (q15_t)0x2588, (q15_t)0x85a1, (q15_t)0x2582, (q15_t)0x859f, (q15_t)0x257c, (q15_t)0x859d, (q15_t)0x2576, (q15_t)0x859b,\n  (q15_t)0x2570, (q15_t)0x8599, (q15_t)0x256a, (q15_t)0x8598, (q15_t)0x2564, (q15_t)0x8596, (q15_t)0x255e, (q15_t)0x8594,\n  (q15_t)0x2558, (q15_t)0x8592, (q15_t)0x2552, (q15_t)0x8590, (q15_t)0x254c, (q15_t)0x858e, (q15_t)0x2546, (q15_t)0x858d,\n  (q15_t)0x2540, (q15_t)0x858b, (q15_t)0x253a, (q15_t)0x8589, (q15_t)0x2534, (q15_t)0x8587, (q15_t)0x252e, (q15_t)0x8585,\n  (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x2522, (q15_t)0x8582, (q15_t)0x251c, (q15_t)0x8580, (q15_t)0x2516, (q15_t)0x857e,\n  (q15_t)0x250f, (q15_t)0x857c, (q15_t)0x2509, (q15_t)0x857a, (q15_t)0x2503, (q15_t)0x8579, (q15_t)0x24fd, (q15_t)0x8577,\n  (q15_t)0x24f7, (q15_t)0x8575, (q15_t)0x24f1, (q15_t)0x8573, (q15_t)0x24eb, (q15_t)0x8571, (q15_t)0x24e5, (q15_t)0x856f,\n  (q15_t)0x24df, (q15_t)0x856e, (q15_t)0x24d9, (q15_t)0x856c, (q15_t)0x24d3, (q15_t)0x856a, (q15_t)0x24cd, (q15_t)0x8568,\n  (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x24c1, (q15_t)0x8565, (q15_t)0x24bb, (q15_t)0x8563, (q15_t)0x24b5, (q15_t)0x8561,\n  (q15_t)0x24af, (q15_t)0x855f, (q15_t)0x24a9, (q15_t)0x855d, (q15_t)0x24a3, (q15_t)0x855c, (q15_t)0x249d, (q15_t)0x855a,\n  (q15_t)0x2497, (q15_t)0x8558, (q15_t)0x2491, (q15_t)0x8556, (q15_t)0x248b, (q15_t)0x8554, (q15_t)0x2485, (q15_t)0x8553,\n  (q15_t)0x247f, (q15_t)0x8551, (q15_t)0x2479, (q15_t)0x854f, (q15_t)0x2473, (q15_t)0x854d, (q15_t)0x246d, (q15_t)0x854b,\n  (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x2461, (q15_t)0x8548, (q15_t)0x245b, (q15_t)0x8546, (q15_t)0x2455, (q15_t)0x8544,\n  (q15_t)0x244f, (q15_t)0x8543, (q15_t)0x2449, (q15_t)0x8541, (q15_t)0x2443, (q15_t)0x853f, (q15_t)0x243d, (q15_t)0x853d,\n  (q15_t)0x2437, (q15_t)0x853b, (q15_t)0x2431, (q15_t)0x853a, (q15_t)0x242b, (q15_t)0x8538, (q15_t)0x2425, (q15_t)0x8536,\n  (q15_t)0x241f, (q15_t)0x8534, (q15_t)0x2419, (q15_t)0x8533, (q15_t)0x2413, (q15_t)0x8531, (q15_t)0x240d, (q15_t)0x852f,\n  (q15_t)0x2407, (q15_t)0x852d, (q15_t)0x2401, (q15_t)0x852b, (q15_t)0x23fa, (q15_t)0x852a, (q15_t)0x23f4, (q15_t)0x8528,\n  (q15_t)0x23ee, (q15_t)0x8526, (q15_t)0x23e8, (q15_t)0x8524, (q15_t)0x23e2, (q15_t)0x8523, (q15_t)0x23dc, (q15_t)0x8521,\n  (q15_t)0x23d6, (q15_t)0x851f, (q15_t)0x23d0, (q15_t)0x851d, (q15_t)0x23ca, (q15_t)0x851c, (q15_t)0x23c4, (q15_t)0x851a,\n  (q15_t)0x23be, (q15_t)0x8518, (q15_t)0x23b8, (q15_t)0x8516, (q15_t)0x23b2, (q15_t)0x8515, (q15_t)0x23ac, (q15_t)0x8513,\n  (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x23a0, (q15_t)0x850f, (q15_t)0x239a, (q15_t)0x850e, (q15_t)0x2394, (q15_t)0x850c,\n  (q15_t)0x238e, (q15_t)0x850a, (q15_t)0x2388, (q15_t)0x8508, (q15_t)0x2382, (q15_t)0x8507, (q15_t)0x237c, (q15_t)0x8505,\n  (q15_t)0x2376, (q15_t)0x8503, (q15_t)0x2370, (q15_t)0x8501, (q15_t)0x236a, (q15_t)0x8500, (q15_t)0x2364, (q15_t)0x84fe,\n  (q15_t)0x235e, (q15_t)0x84fc, (q15_t)0x2358, (q15_t)0x84fa, (q15_t)0x2352, (q15_t)0x84f9, (q15_t)0x234b, (q15_t)0x84f7,\n  (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x233f, (q15_t)0x84f4, (q15_t)0x2339, (q15_t)0x84f2, (q15_t)0x2333, (q15_t)0x84f0,\n  (q15_t)0x232d, (q15_t)0x84ee, (q15_t)0x2327, (q15_t)0x84ed, (q15_t)0x2321, (q15_t)0x84eb, (q15_t)0x231b, (q15_t)0x84e9,\n  (q15_t)0x2315, (q15_t)0x84e7, (q15_t)0x230f, (q15_t)0x84e6, (q15_t)0x2309, (q15_t)0x84e4, (q15_t)0x2303, (q15_t)0x84e2,\n  (q15_t)0x22fd, (q15_t)0x84e1, (q15_t)0x22f7, (q15_t)0x84df, (q15_t)0x22f1, (q15_t)0x84dd, (q15_t)0x22eb, (q15_t)0x84db,\n  (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x22df, (q15_t)0x84d8, (q15_t)0x22d9, (q15_t)0x84d6, (q15_t)0x22d3, (q15_t)0x84d5,\n  (q15_t)0x22cd, (q15_t)0x84d3, (q15_t)0x22c7, (q15_t)0x84d1, (q15_t)0x22c0, (q15_t)0x84cf, (q15_t)0x22ba, (q15_t)0x84ce,\n  (q15_t)0x22b4, (q15_t)0x84cc, (q15_t)0x22ae, (q15_t)0x84ca, (q15_t)0x22a8, (q15_t)0x84c9, (q15_t)0x22a2, (q15_t)0x84c7,\n  (q15_t)0x229c, (q15_t)0x84c5, (q15_t)0x2296, (q15_t)0x84c4, (q15_t)0x2290, (q15_t)0x84c2, (q15_t)0x228a, (q15_t)0x84c0,\n  (q15_t)0x2284, (q15_t)0x84be, (q15_t)0x227e, (q15_t)0x84bd, (q15_t)0x2278, (q15_t)0x84bb, (q15_t)0x2272, (q15_t)0x84b9,\n  (q15_t)0x226c, (q15_t)0x84b8, (q15_t)0x2266, (q15_t)0x84b6, (q15_t)0x2260, (q15_t)0x84b4, (q15_t)0x225a, (q15_t)0x84b3,\n  (q15_t)0x2254, (q15_t)0x84b1, (q15_t)0x224e, (q15_t)0x84af, (q15_t)0x2247, (q15_t)0x84ae, (q15_t)0x2241, (q15_t)0x84ac,\n  (q15_t)0x223b, (q15_t)0x84aa, (q15_t)0x2235, (q15_t)0x84a9, (q15_t)0x222f, (q15_t)0x84a7, (q15_t)0x2229, (q15_t)0x84a5,\n  (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x221d, (q15_t)0x84a2, (q15_t)0x2217, (q15_t)0x84a0, (q15_t)0x2211, (q15_t)0x849e,\n  (q15_t)0x220b, (q15_t)0x849d, (q15_t)0x2205, (q15_t)0x849b, (q15_t)0x21ff, (q15_t)0x8499, (q15_t)0x21f9, (q15_t)0x8498,\n  (q15_t)0x21f3, (q15_t)0x8496, (q15_t)0x21ed, (q15_t)0x8494, (q15_t)0x21e7, (q15_t)0x8493, (q15_t)0x21e1, (q15_t)0x8491,\n  (q15_t)0x21da, (q15_t)0x848f, (q15_t)0x21d4, (q15_t)0x848e, (q15_t)0x21ce, (q15_t)0x848c, (q15_t)0x21c8, (q15_t)0x848a,\n  (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x21bc, (q15_t)0x8487, (q15_t)0x21b6, (q15_t)0x8486, (q15_t)0x21b0, (q15_t)0x8484,\n  (q15_t)0x21aa, (q15_t)0x8482, (q15_t)0x21a4, (q15_t)0x8481, (q15_t)0x219e, (q15_t)0x847f, (q15_t)0x2198, (q15_t)0x847d,\n  (q15_t)0x2192, (q15_t)0x847c, (q15_t)0x218c, (q15_t)0x847a, (q15_t)0x2186, (q15_t)0x8478, (q15_t)0x2180, (q15_t)0x8477,\n  (q15_t)0x2179, (q15_t)0x8475, (q15_t)0x2173, (q15_t)0x8473, (q15_t)0x216d, (q15_t)0x8472, (q15_t)0x2167, (q15_t)0x8470,\n  (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x215b, (q15_t)0x846d, (q15_t)0x2155, (q15_t)0x846b, (q15_t)0x214f, (q15_t)0x846a,\n  (q15_t)0x2149, (q15_t)0x8468, (q15_t)0x2143, (q15_t)0x8466, (q15_t)0x213d, (q15_t)0x8465, (q15_t)0x2137, (q15_t)0x8463,\n  (q15_t)0x2131, (q15_t)0x8461, (q15_t)0x212b, (q15_t)0x8460, (q15_t)0x2125, (q15_t)0x845e, (q15_t)0x211e, (q15_t)0x845d,\n  (q15_t)0x2118, (q15_t)0x845b, (q15_t)0x2112, (q15_t)0x8459, (q15_t)0x210c, (q15_t)0x8458, (q15_t)0x2106, (q15_t)0x8456,\n  (q15_t)0x2100, (q15_t)0x8454, (q15_t)0x20fa, (q15_t)0x8453, (q15_t)0x20f4, (q15_t)0x8451, (q15_t)0x20ee, (q15_t)0x8450,\n  (q15_t)0x20e8, (q15_t)0x844e, (q15_t)0x20e2, (q15_t)0x844c, (q15_t)0x20dc, (q15_t)0x844b, (q15_t)0x20d6, (q15_t)0x8449,\n  (q15_t)0x20d0, (q15_t)0x8447, (q15_t)0x20c9, (q15_t)0x8446, (q15_t)0x20c3, (q15_t)0x8444, (q15_t)0x20bd, (q15_t)0x8443,\n  (q15_t)0x20b7, (q15_t)0x8441, (q15_t)0x20b1, (q15_t)0x843f, (q15_t)0x20ab, (q15_t)0x843e, (q15_t)0x20a5, (q15_t)0x843c,\n  (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x2099, (q15_t)0x8439, (q15_t)0x2093, (q15_t)0x8437, (q15_t)0x208d, (q15_t)0x8436,\n  (q15_t)0x2087, (q15_t)0x8434, (q15_t)0x2081, (q15_t)0x8433, (q15_t)0x207a, (q15_t)0x8431, (q15_t)0x2074, (q15_t)0x842f,\n  (q15_t)0x206e, (q15_t)0x842e, (q15_t)0x2068, (q15_t)0x842c, (q15_t)0x2062, (q15_t)0x842b, (q15_t)0x205c, (q15_t)0x8429,\n  (q15_t)0x2056, (q15_t)0x8427, (q15_t)0x2050, (q15_t)0x8426, (q15_t)0x204a, (q15_t)0x8424, (q15_t)0x2044, (q15_t)0x8423,\n  (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x2038, (q15_t)0x8420, (q15_t)0x2032, (q15_t)0x841e, (q15_t)0x202b, (q15_t)0x841c,\n  (q15_t)0x2025, (q15_t)0x841b, (q15_t)0x201f, (q15_t)0x8419, (q15_t)0x2019, (q15_t)0x8418, (q15_t)0x2013, (q15_t)0x8416,\n  (q15_t)0x200d, (q15_t)0x8415, (q15_t)0x2007, (q15_t)0x8413, (q15_t)0x2001, (q15_t)0x8411, (q15_t)0x1ffb, (q15_t)0x8410,\n  (q15_t)0x1ff5, (q15_t)0x840e, (q15_t)0x1fef, (q15_t)0x840d, (q15_t)0x1fe9, (q15_t)0x840b, (q15_t)0x1fe2, (q15_t)0x840a,\n  (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1fd6, (q15_t)0x8406, (q15_t)0x1fd0, (q15_t)0x8405, (q15_t)0x1fca, (q15_t)0x8403,\n  (q15_t)0x1fc4, (q15_t)0x8402, (q15_t)0x1fbe, (q15_t)0x8400, (q15_t)0x1fb8, (q15_t)0x83ff, (q15_t)0x1fb2, (q15_t)0x83fd,\n  (q15_t)0x1fac, (q15_t)0x83fb, (q15_t)0x1fa6, (q15_t)0x83fa, (q15_t)0x1f9f, (q15_t)0x83f8, (q15_t)0x1f99, (q15_t)0x83f7,\n  (q15_t)0x1f93, (q15_t)0x83f5, (q15_t)0x1f8d, (q15_t)0x83f4, (q15_t)0x1f87, (q15_t)0x83f2, (q15_t)0x1f81, (q15_t)0x83f1,\n  (q15_t)0x1f7b, (q15_t)0x83ef, (q15_t)0x1f75, (q15_t)0x83ee, (q15_t)0x1f6f, (q15_t)0x83ec, (q15_t)0x1f69, (q15_t)0x83ea,\n  (q15_t)0x1f63, (q15_t)0x83e9, (q15_t)0x1f5d, (q15_t)0x83e7, (q15_t)0x1f56, (q15_t)0x83e6, (q15_t)0x1f50, (q15_t)0x83e4,\n  (q15_t)0x1f4a, (q15_t)0x83e3, (q15_t)0x1f44, (q15_t)0x83e1, (q15_t)0x1f3e, (q15_t)0x83e0, (q15_t)0x1f38, (q15_t)0x83de,\n  (q15_t)0x1f32, (q15_t)0x83dd, (q15_t)0x1f2c, (q15_t)0x83db, (q15_t)0x1f26, (q15_t)0x83da, (q15_t)0x1f20, (q15_t)0x83d8,\n  (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1f13, (q15_t)0x83d5, (q15_t)0x1f0d, (q15_t)0x83d3, (q15_t)0x1f07, (q15_t)0x83d2,\n  (q15_t)0x1f01, (q15_t)0x83d0, (q15_t)0x1efb, (q15_t)0x83cf, (q15_t)0x1ef5, (q15_t)0x83cd, (q15_t)0x1eef, (q15_t)0x83cc,\n  (q15_t)0x1ee9, (q15_t)0x83ca, (q15_t)0x1ee3, (q15_t)0x83c9, (q15_t)0x1edd, (q15_t)0x83c7, (q15_t)0x1ed6, (q15_t)0x83c6,\n  (q15_t)0x1ed0, (q15_t)0x83c4, (q15_t)0x1eca, (q15_t)0x83c3, (q15_t)0x1ec4, (q15_t)0x83c1, (q15_t)0x1ebe, (q15_t)0x83c0,\n  (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1eb2, (q15_t)0x83bd, (q15_t)0x1eac, (q15_t)0x83bb, (q15_t)0x1ea6, (q15_t)0x83ba,\n  (q15_t)0x1ea0, (q15_t)0x83b8, (q15_t)0x1e99, (q15_t)0x83b7, (q15_t)0x1e93, (q15_t)0x83b5, (q15_t)0x1e8d, (q15_t)0x83b4,\n  (q15_t)0x1e87, (q15_t)0x83b2, (q15_t)0x1e81, (q15_t)0x83b1, (q15_t)0x1e7b, (q15_t)0x83af, (q15_t)0x1e75, (q15_t)0x83ae,\n  (q15_t)0x1e6f, (q15_t)0x83ac, (q15_t)0x1e69, (q15_t)0x83ab, (q15_t)0x1e62, (q15_t)0x83a9, (q15_t)0x1e5c, (q15_t)0x83a8,\n  (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1e50, (q15_t)0x83a5, (q15_t)0x1e4a, (q15_t)0x83a3, (q15_t)0x1e44, (q15_t)0x83a2,\n  (q15_t)0x1e3e, (q15_t)0x83a0, (q15_t)0x1e38, (q15_t)0x839f, (q15_t)0x1e32, (q15_t)0x839d, (q15_t)0x1e2c, (q15_t)0x839c,\n  (q15_t)0x1e25, (q15_t)0x839a, (q15_t)0x1e1f, (q15_t)0x8399, (q15_t)0x1e19, (q15_t)0x8397, (q15_t)0x1e13, (q15_t)0x8396,\n  (q15_t)0x1e0d, (q15_t)0x8394, (q15_t)0x1e07, (q15_t)0x8393, (q15_t)0x1e01, (q15_t)0x8392, (q15_t)0x1dfb, (q15_t)0x8390,\n  (q15_t)0x1df5, (q15_t)0x838f, (q15_t)0x1dee, (q15_t)0x838d, (q15_t)0x1de8, (q15_t)0x838c, (q15_t)0x1de2, (q15_t)0x838a,\n  (q15_t)0x1ddc, (q15_t)0x8389, (q15_t)0x1dd6, (q15_t)0x8387, (q15_t)0x1dd0, (q15_t)0x8386, (q15_t)0x1dca, (q15_t)0x8384,\n  (q15_t)0x1dc4, (q15_t)0x8383, (q15_t)0x1dbe, (q15_t)0x8381, (q15_t)0x1db7, (q15_t)0x8380, (q15_t)0x1db1, (q15_t)0x837e,\n  (q15_t)0x1dab, (q15_t)0x837d, (q15_t)0x1da5, (q15_t)0x837c, (q15_t)0x1d9f, (q15_t)0x837a, (q15_t)0x1d99, (q15_t)0x8379,\n  (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d8d, (q15_t)0x8376, (q15_t)0x1d87, (q15_t)0x8374, (q15_t)0x1d80, (q15_t)0x8373,\n  (q15_t)0x1d7a, (q15_t)0x8371, (q15_t)0x1d74, (q15_t)0x8370, (q15_t)0x1d6e, (q15_t)0x836f, (q15_t)0x1d68, (q15_t)0x836d,\n  (q15_t)0x1d62, (q15_t)0x836c, (q15_t)0x1d5c, (q15_t)0x836a, (q15_t)0x1d56, (q15_t)0x8369, (q15_t)0x1d50, (q15_t)0x8367,\n  (q15_t)0x1d49, (q15_t)0x8366, (q15_t)0x1d43, (q15_t)0x8364, (q15_t)0x1d3d, (q15_t)0x8363, (q15_t)0x1d37, (q15_t)0x8362,\n  (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1d2b, (q15_t)0x835f, (q15_t)0x1d25, (q15_t)0x835d, (q15_t)0x1d1f, (q15_t)0x835c,\n  (q15_t)0x1d18, (q15_t)0x835a, (q15_t)0x1d12, (q15_t)0x8359, (q15_t)0x1d0c, (q15_t)0x8358, (q15_t)0x1d06, (q15_t)0x8356,\n  (q15_t)0x1d00, (q15_t)0x8355, (q15_t)0x1cfa, (q15_t)0x8353, (q15_t)0x1cf4, (q15_t)0x8352, (q15_t)0x1cee, (q15_t)0x8350,\n  (q15_t)0x1ce8, (q15_t)0x834f, (q15_t)0x1ce1, (q15_t)0x834e, (q15_t)0x1cdb, (q15_t)0x834c, (q15_t)0x1cd5, (q15_t)0x834b,\n  (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1cc9, (q15_t)0x8348, (q15_t)0x1cc3, (q15_t)0x8347, (q15_t)0x1cbd, (q15_t)0x8345,\n  (q15_t)0x1cb7, (q15_t)0x8344, (q15_t)0x1cb0, (q15_t)0x8342, (q15_t)0x1caa, (q15_t)0x8341, (q15_t)0x1ca4, (q15_t)0x833f,\n  (q15_t)0x1c9e, (q15_t)0x833e, (q15_t)0x1c98, (q15_t)0x833d, (q15_t)0x1c92, (q15_t)0x833b, (q15_t)0x1c8c, (q15_t)0x833a,\n  (q15_t)0x1c86, (q15_t)0x8338, (q15_t)0x1c7f, (q15_t)0x8337, (q15_t)0x1c79, (q15_t)0x8336, (q15_t)0x1c73, (q15_t)0x8334,\n  (q15_t)0x1c6d, (q15_t)0x8333, (q15_t)0x1c67, (q15_t)0x8331, (q15_t)0x1c61, (q15_t)0x8330, (q15_t)0x1c5b, (q15_t)0x832f,\n  (q15_t)0x1c55, (q15_t)0x832d, (q15_t)0x1c4e, (q15_t)0x832c, (q15_t)0x1c48, (q15_t)0x832b, (q15_t)0x1c42, (q15_t)0x8329,\n  (q15_t)0x1c3c, (q15_t)0x8328, (q15_t)0x1c36, (q15_t)0x8326, (q15_t)0x1c30, (q15_t)0x8325, (q15_t)0x1c2a, (q15_t)0x8324,\n  (q15_t)0x1c24, (q15_t)0x8322, (q15_t)0x1c1d, (q15_t)0x8321, (q15_t)0x1c17, (q15_t)0x831f, (q15_t)0x1c11, (q15_t)0x831e,\n  (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1c05, (q15_t)0x831b, (q15_t)0x1bff, (q15_t)0x831a, (q15_t)0x1bf9, (q15_t)0x8319,\n  (q15_t)0x1bf2, (q15_t)0x8317, (q15_t)0x1bec, (q15_t)0x8316, (q15_t)0x1be6, (q15_t)0x8314, (q15_t)0x1be0, (q15_t)0x8313,\n  (q15_t)0x1bda, (q15_t)0x8312, (q15_t)0x1bd4, (q15_t)0x8310, (q15_t)0x1bce, (q15_t)0x830f, (q15_t)0x1bc8, (q15_t)0x830e,\n  (q15_t)0x1bc1, (q15_t)0x830c, (q15_t)0x1bbb, (q15_t)0x830b, (q15_t)0x1bb5, (q15_t)0x830a, (q15_t)0x1baf, (q15_t)0x8308,\n  (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1ba3, (q15_t)0x8305, (q15_t)0x1b9d, (q15_t)0x8304, (q15_t)0x1b96, (q15_t)0x8303,\n  (q15_t)0x1b90, (q15_t)0x8301, (q15_t)0x1b8a, (q15_t)0x8300, (q15_t)0x1b84, (q15_t)0x82ff, (q15_t)0x1b7e, (q15_t)0x82fd,\n  (q15_t)0x1b78, (q15_t)0x82fc, (q15_t)0x1b72, (q15_t)0x82fb, (q15_t)0x1b6c, (q15_t)0x82f9, (q15_t)0x1b65, (q15_t)0x82f8,\n  (q15_t)0x1b5f, (q15_t)0x82f7, (q15_t)0x1b59, (q15_t)0x82f5, (q15_t)0x1b53, (q15_t)0x82f4, (q15_t)0x1b4d, (q15_t)0x82f3,\n  (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1b41, (q15_t)0x82f0, (q15_t)0x1b3a, (q15_t)0x82ef, (q15_t)0x1b34, (q15_t)0x82ed,\n  (q15_t)0x1b2e, (q15_t)0x82ec, (q15_t)0x1b28, (q15_t)0x82eb, (q15_t)0x1b22, (q15_t)0x82e9, (q15_t)0x1b1c, (q15_t)0x82e8,\n  (q15_t)0x1b16, (q15_t)0x82e7, (q15_t)0x1b0f, (q15_t)0x82e5, (q15_t)0x1b09, (q15_t)0x82e4, (q15_t)0x1b03, (q15_t)0x82e3,\n  (q15_t)0x1afd, (q15_t)0x82e1, (q15_t)0x1af7, (q15_t)0x82e0, (q15_t)0x1af1, (q15_t)0x82df, (q15_t)0x1aeb, (q15_t)0x82dd,\n  (q15_t)0x1ae4, (q15_t)0x82dc, (q15_t)0x1ade, (q15_t)0x82db, (q15_t)0x1ad8, (q15_t)0x82d9, (q15_t)0x1ad2, (q15_t)0x82d8,\n  (q15_t)0x1acc, (q15_t)0x82d7, (q15_t)0x1ac6, (q15_t)0x82d5, (q15_t)0x1ac0, (q15_t)0x82d4, (q15_t)0x1ab9, (q15_t)0x82d3,\n  (q15_t)0x1ab3, (q15_t)0x82d1, (q15_t)0x1aad, (q15_t)0x82d0, (q15_t)0x1aa7, (q15_t)0x82cf, (q15_t)0x1aa1, (q15_t)0x82ce,\n  (q15_t)0x1a9b, (q15_t)0x82cc, (q15_t)0x1a95, (q15_t)0x82cb, (q15_t)0x1a8e, (q15_t)0x82ca, (q15_t)0x1a88, (q15_t)0x82c8,\n  (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a7c, (q15_t)0x82c6, (q15_t)0x1a76, (q15_t)0x82c4, (q15_t)0x1a70, (q15_t)0x82c3,\n  (q15_t)0x1a6a, (q15_t)0x82c2, (q15_t)0x1a63, (q15_t)0x82c1, (q15_t)0x1a5d, (q15_t)0x82bf, (q15_t)0x1a57, (q15_t)0x82be,\n  (q15_t)0x1a51, (q15_t)0x82bd, (q15_t)0x1a4b, (q15_t)0x82bb, (q15_t)0x1a45, (q15_t)0x82ba, (q15_t)0x1a3e, (q15_t)0x82b9,\n  (q15_t)0x1a38, (q15_t)0x82b7, (q15_t)0x1a32, (q15_t)0x82b6, (q15_t)0x1a2c, (q15_t)0x82b5, (q15_t)0x1a26, (q15_t)0x82b4,\n  (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x1a1a, (q15_t)0x82b1, (q15_t)0x1a13, (q15_t)0x82b0, (q15_t)0x1a0d, (q15_t)0x82ae,\n  (q15_t)0x1a07, (q15_t)0x82ad, (q15_t)0x1a01, (q15_t)0x82ac, (q15_t)0x19fb, (q15_t)0x82ab, (q15_t)0x19f5, (q15_t)0x82a9,\n  (q15_t)0x19ef, (q15_t)0x82a8, (q15_t)0x19e8, (q15_t)0x82a7, (q15_t)0x19e2, (q15_t)0x82a6, (q15_t)0x19dc, (q15_t)0x82a4,\n  (q15_t)0x19d6, (q15_t)0x82a3, (q15_t)0x19d0, (q15_t)0x82a2, (q15_t)0x19ca, (q15_t)0x82a0, (q15_t)0x19c3, (q15_t)0x829f,\n  (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x19b7, (q15_t)0x829d, (q15_t)0x19b1, (q15_t)0x829b, (q15_t)0x19ab, (q15_t)0x829a,\n  (q15_t)0x19a5, (q15_t)0x8299, (q15_t)0x199f, (q15_t)0x8298, (q15_t)0x1998, (q15_t)0x8296, (q15_t)0x1992, (q15_t)0x8295,\n  (q15_t)0x198c, (q15_t)0x8294, (q15_t)0x1986, (q15_t)0x8293, (q15_t)0x1980, (q15_t)0x8291, (q15_t)0x197a, (q15_t)0x8290,\n  (q15_t)0x1973, (q15_t)0x828f, (q15_t)0x196d, (q15_t)0x828e, (q15_t)0x1967, (q15_t)0x828c, (q15_t)0x1961, (q15_t)0x828b,\n  (q15_t)0x195b, (q15_t)0x828a, (q15_t)0x1955, (q15_t)0x8289, (q15_t)0x194e, (q15_t)0x8287, (q15_t)0x1948, (q15_t)0x8286,\n  (q15_t)0x1942, (q15_t)0x8285, (q15_t)0x193c, (q15_t)0x8284, (q15_t)0x1936, (q15_t)0x8282, (q15_t)0x1930, (q15_t)0x8281,\n  (q15_t)0x192a, (q15_t)0x8280, (q15_t)0x1923, (q15_t)0x827f, (q15_t)0x191d, (q15_t)0x827e, (q15_t)0x1917, (q15_t)0x827c,\n  (q15_t)0x1911, (q15_t)0x827b, (q15_t)0x190b, (q15_t)0x827a, (q15_t)0x1905, (q15_t)0x8279, (q15_t)0x18fe, (q15_t)0x8277,\n  (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x18f2, (q15_t)0x8275, (q15_t)0x18ec, (q15_t)0x8274, (q15_t)0x18e6, (q15_t)0x8272,\n  (q15_t)0x18e0, (q15_t)0x8271, (q15_t)0x18d9, (q15_t)0x8270, (q15_t)0x18d3, (q15_t)0x826f, (q15_t)0x18cd, (q15_t)0x826e,\n  (q15_t)0x18c7, (q15_t)0x826c, (q15_t)0x18c1, (q15_t)0x826b, (q15_t)0x18bb, (q15_t)0x826a, (q15_t)0x18b4, (q15_t)0x8269,\n  (q15_t)0x18ae, (q15_t)0x8268, (q15_t)0x18a8, (q15_t)0x8266, (q15_t)0x18a2, (q15_t)0x8265, (q15_t)0x189c, (q15_t)0x8264,\n  (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x188f, (q15_t)0x8261, (q15_t)0x1889, (q15_t)0x8260, (q15_t)0x1883, (q15_t)0x825f,\n  (q15_t)0x187d, (q15_t)0x825e, (q15_t)0x1877, (q15_t)0x825d, (q15_t)0x1871, (q15_t)0x825b, (q15_t)0x186a, (q15_t)0x825a,\n  (q15_t)0x1864, (q15_t)0x8259, (q15_t)0x185e, (q15_t)0x8258, (q15_t)0x1858, (q15_t)0x8257, (q15_t)0x1852, (q15_t)0x8255,\n  (q15_t)0x184c, (q15_t)0x8254, (q15_t)0x1845, (q15_t)0x8253, (q15_t)0x183f, (q15_t)0x8252, (q15_t)0x1839, (q15_t)0x8251,\n  (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x182d, (q15_t)0x824e, (q15_t)0x1827, (q15_t)0x824d, (q15_t)0x1820, (q15_t)0x824c,\n  (q15_t)0x181a, (q15_t)0x824b, (q15_t)0x1814, (q15_t)0x824a, (q15_t)0x180e, (q15_t)0x8248, (q15_t)0x1808, (q15_t)0x8247,\n  (q15_t)0x1802, (q15_t)0x8246, (q15_t)0x17fb, (q15_t)0x8245, (q15_t)0x17f5, (q15_t)0x8244, (q15_t)0x17ef, (q15_t)0x8243,\n  (q15_t)0x17e9, (q15_t)0x8241, (q15_t)0x17e3, (q15_t)0x8240, (q15_t)0x17dd, (q15_t)0x823f, (q15_t)0x17d6, (q15_t)0x823e,\n  (q15_t)0x17d0, (q15_t)0x823d, (q15_t)0x17ca, (q15_t)0x823b, (q15_t)0x17c4, (q15_t)0x823a, (q15_t)0x17be, (q15_t)0x8239,\n  (q15_t)0x17b7, (q15_t)0x8238, (q15_t)0x17b1, (q15_t)0x8237, (q15_t)0x17ab, (q15_t)0x8236, (q15_t)0x17a5, (q15_t)0x8234,\n  (q15_t)0x179f, (q15_t)0x8233, (q15_t)0x1799, (q15_t)0x8232, (q15_t)0x1792, (q15_t)0x8231, (q15_t)0x178c, (q15_t)0x8230,\n  (q15_t)0x1786, (q15_t)0x822f, (q15_t)0x1780, (q15_t)0x822e, (q15_t)0x177a, (q15_t)0x822c, (q15_t)0x1774, (q15_t)0x822b,\n  (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x1767, (q15_t)0x8229, (q15_t)0x1761, (q15_t)0x8228, (q15_t)0x175b, (q15_t)0x8227,\n  (q15_t)0x1755, (q15_t)0x8226, (q15_t)0x174e, (q15_t)0x8224, (q15_t)0x1748, (q15_t)0x8223, (q15_t)0x1742, (q15_t)0x8222,\n  (q15_t)0x173c, (q15_t)0x8221, (q15_t)0x1736, (q15_t)0x8220, (q15_t)0x1730, (q15_t)0x821f, (q15_t)0x1729, (q15_t)0x821e,\n  (q15_t)0x1723, (q15_t)0x821c, (q15_t)0x171d, (q15_t)0x821b, (q15_t)0x1717, (q15_t)0x821a, (q15_t)0x1711, (q15_t)0x8219,\n  (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x1704, (q15_t)0x8217, (q15_t)0x16fe, (q15_t)0x8216, (q15_t)0x16f8, (q15_t)0x8214,\n  (q15_t)0x16f2, (q15_t)0x8213, (q15_t)0x16ec, (q15_t)0x8212, (q15_t)0x16e5, (q15_t)0x8211, (q15_t)0x16df, (q15_t)0x8210,\n  (q15_t)0x16d9, (q15_t)0x820f, (q15_t)0x16d3, (q15_t)0x820e, (q15_t)0x16cd, (q15_t)0x820d, (q15_t)0x16c6, (q15_t)0x820b,\n  (q15_t)0x16c0, (q15_t)0x820a, (q15_t)0x16ba, (q15_t)0x8209, (q15_t)0x16b4, (q15_t)0x8208, (q15_t)0x16ae, (q15_t)0x8207,\n  (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x16a1, (q15_t)0x8205, (q15_t)0x169b, (q15_t)0x8204, (q15_t)0x1695, (q15_t)0x8203,\n  (q15_t)0x168f, (q15_t)0x8201, (q15_t)0x1689, (q15_t)0x8200, (q15_t)0x1682, (q15_t)0x81ff, (q15_t)0x167c, (q15_t)0x81fe,\n  (q15_t)0x1676, (q15_t)0x81fd, (q15_t)0x1670, (q15_t)0x81fc, (q15_t)0x166a, (q15_t)0x81fb, (q15_t)0x1664, (q15_t)0x81fa,\n  (q15_t)0x165d, (q15_t)0x81f9, (q15_t)0x1657, (q15_t)0x81f8, (q15_t)0x1651, (q15_t)0x81f6, (q15_t)0x164b, (q15_t)0x81f5,\n  (q15_t)0x1645, (q15_t)0x81f4, (q15_t)0x163e, (q15_t)0x81f3, (q15_t)0x1638, (q15_t)0x81f2, (q15_t)0x1632, (q15_t)0x81f1,\n  (q15_t)0x162c, (q15_t)0x81f0, (q15_t)0x1626, (q15_t)0x81ef, (q15_t)0x161f, (q15_t)0x81ee, (q15_t)0x1619, (q15_t)0x81ed,\n  (q15_t)0x1613, (q15_t)0x81ec, (q15_t)0x160d, (q15_t)0x81ea, (q15_t)0x1607, (q15_t)0x81e9, (q15_t)0x1601, (q15_t)0x81e8,\n  (q15_t)0x15fa, (q15_t)0x81e7, (q15_t)0x15f4, (q15_t)0x81e6, (q15_t)0x15ee, (q15_t)0x81e5, (q15_t)0x15e8, (q15_t)0x81e4,\n  (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x15db, (q15_t)0x81e2, (q15_t)0x15d5, (q15_t)0x81e1, (q15_t)0x15cf, (q15_t)0x81e0,\n  (q15_t)0x15c9, (q15_t)0x81df, (q15_t)0x15c3, (q15_t)0x81de, (q15_t)0x15bc, (q15_t)0x81dc, (q15_t)0x15b6, (q15_t)0x81db,\n  (q15_t)0x15b0, (q15_t)0x81da, (q15_t)0x15aa, (q15_t)0x81d9, (q15_t)0x15a4, (q15_t)0x81d8, (q15_t)0x159d, (q15_t)0x81d7,\n  (q15_t)0x1597, (q15_t)0x81d6, (q15_t)0x1591, (q15_t)0x81d5, (q15_t)0x158b, (q15_t)0x81d4, (q15_t)0x1585, (q15_t)0x81d3,\n  (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x1578, (q15_t)0x81d1, (q15_t)0x1572, (q15_t)0x81d0, (q15_t)0x156c, (q15_t)0x81cf,\n  (q15_t)0x1566, (q15_t)0x81ce, (q15_t)0x1560, (q15_t)0x81cd, (q15_t)0x1559, (q15_t)0x81cc, (q15_t)0x1553, (q15_t)0x81cb,\n  (q15_t)0x154d, (q15_t)0x81c9, (q15_t)0x1547, (q15_t)0x81c8, (q15_t)0x1541, (q15_t)0x81c7, (q15_t)0x153a, (q15_t)0x81c6,\n  (q15_t)0x1534, (q15_t)0x81c5, (q15_t)0x152e, (q15_t)0x81c4, (q15_t)0x1528, (q15_t)0x81c3, (q15_t)0x1522, (q15_t)0x81c2,\n  (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x1515, (q15_t)0x81c0, (q15_t)0x150f, (q15_t)0x81bf, (q15_t)0x1509, (q15_t)0x81be,\n  (q15_t)0x1503, (q15_t)0x81bd, (q15_t)0x14fc, (q15_t)0x81bc, (q15_t)0x14f6, (q15_t)0x81bb, (q15_t)0x14f0, (q15_t)0x81ba,\n  (q15_t)0x14ea, (q15_t)0x81b9, (q15_t)0x14e4, (q15_t)0x81b8, (q15_t)0x14dd, (q15_t)0x81b7, (q15_t)0x14d7, (q15_t)0x81b6,\n  (q15_t)0x14d1, (q15_t)0x81b5, (q15_t)0x14cb, (q15_t)0x81b4, (q15_t)0x14c5, (q15_t)0x81b3, (q15_t)0x14be, (q15_t)0x81b2,\n  (q15_t)0x14b8, (q15_t)0x81b1, (q15_t)0x14b2, (q15_t)0x81b0, (q15_t)0x14ac, (q15_t)0x81af, (q15_t)0x14a6, (q15_t)0x81ae,\n  (q15_t)0x149f, (q15_t)0x81ad, (q15_t)0x1499, (q15_t)0x81ac, (q15_t)0x1493, (q15_t)0x81ab, (q15_t)0x148d, (q15_t)0x81aa,\n  (q15_t)0x1487, (q15_t)0x81a9, (q15_t)0x1480, (q15_t)0x81a8, (q15_t)0x147a, (q15_t)0x81a7, (q15_t)0x1474, (q15_t)0x81a6,\n  (q15_t)0x146e, (q15_t)0x81a5, (q15_t)0x1468, (q15_t)0x81a4, (q15_t)0x1461, (q15_t)0x81a3, (q15_t)0x145b, (q15_t)0x81a2,\n  (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x144f, (q15_t)0x81a0, (q15_t)0x1449, (q15_t)0x819f, (q15_t)0x1442, (q15_t)0x819e,\n  (q15_t)0x143c, (q15_t)0x819d, (q15_t)0x1436, (q15_t)0x819c, (q15_t)0x1430, (q15_t)0x819b, (q15_t)0x142a, (q15_t)0x819a,\n  (q15_t)0x1423, (q15_t)0x8199, (q15_t)0x141d, (q15_t)0x8198, (q15_t)0x1417, (q15_t)0x8197, (q15_t)0x1411, (q15_t)0x8196,\n  (q15_t)0x140b, (q15_t)0x8195, (q15_t)0x1404, (q15_t)0x8194, (q15_t)0x13fe, (q15_t)0x8193, (q15_t)0x13f8, (q15_t)0x8192,\n  (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x13eb, (q15_t)0x8190, (q15_t)0x13e5, (q15_t)0x818f, (q15_t)0x13df, (q15_t)0x818e,\n  (q15_t)0x13d9, (q15_t)0x818d, (q15_t)0x13d3, (q15_t)0x818c, (q15_t)0x13cc, (q15_t)0x818b, (q15_t)0x13c6, (q15_t)0x818a,\n  (q15_t)0x13c0, (q15_t)0x8189, (q15_t)0x13ba, (q15_t)0x8188, (q15_t)0x13b4, (q15_t)0x8187, (q15_t)0x13ad, (q15_t)0x8186,\n  (q15_t)0x13a7, (q15_t)0x8185, (q15_t)0x13a1, (q15_t)0x8184, (q15_t)0x139b, (q15_t)0x8183, (q15_t)0x1395, (q15_t)0x8182,\n  (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x1388, (q15_t)0x8180, (q15_t)0x1382, (q15_t)0x817f, (q15_t)0x137c, (q15_t)0x817e,\n  (q15_t)0x1376, (q15_t)0x817d, (q15_t)0x136f, (q15_t)0x817c, (q15_t)0x1369, (q15_t)0x817c, (q15_t)0x1363, (q15_t)0x817b,\n  (q15_t)0x135d, (q15_t)0x817a, (q15_t)0x1356, (q15_t)0x8179, (q15_t)0x1350, (q15_t)0x8178, (q15_t)0x134a, (q15_t)0x8177,\n  (q15_t)0x1344, (q15_t)0x8176, (q15_t)0x133e, (q15_t)0x8175, (q15_t)0x1337, (q15_t)0x8174, (q15_t)0x1331, (q15_t)0x8173,\n  (q15_t)0x132b, (q15_t)0x8172, (q15_t)0x1325, (q15_t)0x8171, (q15_t)0x131f, (q15_t)0x8170, (q15_t)0x1318, (q15_t)0x816f,\n  (q15_t)0x1312, (q15_t)0x816e, (q15_t)0x130c, (q15_t)0x816d, (q15_t)0x1306, (q15_t)0x816c, (q15_t)0x12ff, (q15_t)0x816c,\n  (q15_t)0x12f9, (q15_t)0x816b, (q15_t)0x12f3, (q15_t)0x816a, (q15_t)0x12ed, (q15_t)0x8169, (q15_t)0x12e7, (q15_t)0x8168,\n  (q15_t)0x12e0, (q15_t)0x8167, (q15_t)0x12da, (q15_t)0x8166, (q15_t)0x12d4, (q15_t)0x8165, (q15_t)0x12ce, (q15_t)0x8164,\n  (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x12c1, (q15_t)0x8162, (q15_t)0x12bb, (q15_t)0x8161, (q15_t)0x12b5, (q15_t)0x8160,\n  (q15_t)0x12af, (q15_t)0x815f, (q15_t)0x12a8, (q15_t)0x815f, (q15_t)0x12a2, (q15_t)0x815e, (q15_t)0x129c, (q15_t)0x815d,\n  (q15_t)0x1296, (q15_t)0x815c, (q15_t)0x1290, (q15_t)0x815b, (q15_t)0x1289, (q15_t)0x815a, (q15_t)0x1283, (q15_t)0x8159,\n  (q15_t)0x127d, (q15_t)0x8158, (q15_t)0x1277, (q15_t)0x8157, (q15_t)0x1271, (q15_t)0x8156, (q15_t)0x126a, (q15_t)0x8155,\n  (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x125e, (q15_t)0x8154, (q15_t)0x1258, (q15_t)0x8153, (q15_t)0x1251, (q15_t)0x8152,\n  (q15_t)0x124b, (q15_t)0x8151, (q15_t)0x1245, (q15_t)0x8150, (q15_t)0x123f, (q15_t)0x814f, (q15_t)0x1239, (q15_t)0x814e,\n  (q15_t)0x1232, (q15_t)0x814d, (q15_t)0x122c, (q15_t)0x814c, (q15_t)0x1226, (q15_t)0x814c, (q15_t)0x1220, (q15_t)0x814b,\n  (q15_t)0x1219, (q15_t)0x814a, (q15_t)0x1213, (q15_t)0x8149, (q15_t)0x120d, (q15_t)0x8148, (q15_t)0x1207, (q15_t)0x8147,\n  (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x11fa, (q15_t)0x8145, (q15_t)0x11f4, (q15_t)0x8145, (q15_t)0x11ee, (q15_t)0x8144,\n  (q15_t)0x11e8, (q15_t)0x8143, (q15_t)0x11e1, (q15_t)0x8142, (q15_t)0x11db, (q15_t)0x8141, (q15_t)0x11d5, (q15_t)0x8140,\n  (q15_t)0x11cf, (q15_t)0x813f, (q15_t)0x11c9, (q15_t)0x813e, (q15_t)0x11c2, (q15_t)0x813d, (q15_t)0x11bc, (q15_t)0x813d,\n  (q15_t)0x11b6, (q15_t)0x813c, (q15_t)0x11b0, (q15_t)0x813b, (q15_t)0x11a9, (q15_t)0x813a, (q15_t)0x11a3, (q15_t)0x8139,\n  (q15_t)0x119d, (q15_t)0x8138, (q15_t)0x1197, (q15_t)0x8137, (q15_t)0x1191, (q15_t)0x8137, (q15_t)0x118a, (q15_t)0x8136,\n  (q15_t)0x1184, (q15_t)0x8135, (q15_t)0x117e, (q15_t)0x8134, (q15_t)0x1178, (q15_t)0x8133, (q15_t)0x1171, (q15_t)0x8132,\n  (q15_t)0x116b, (q15_t)0x8131, (q15_t)0x1165, (q15_t)0x8131, (q15_t)0x115f, (q15_t)0x8130, (q15_t)0x1159, (q15_t)0x812f,\n  (q15_t)0x1152, (q15_t)0x812e, (q15_t)0x114c, (q15_t)0x812d, (q15_t)0x1146, (q15_t)0x812c, (q15_t)0x1140, (q15_t)0x812b,\n  (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x1133, (q15_t)0x812a, (q15_t)0x112d, (q15_t)0x8129, (q15_t)0x1127, (q15_t)0x8128,\n  (q15_t)0x1121, (q15_t)0x8127, (q15_t)0x111a, (q15_t)0x8126, (q15_t)0x1114, (q15_t)0x8126, (q15_t)0x110e, (q15_t)0x8125,\n  (q15_t)0x1108, (q15_t)0x8124, (q15_t)0x1101, (q15_t)0x8123, (q15_t)0x10fb, (q15_t)0x8122, (q15_t)0x10f5, (q15_t)0x8121,\n  (q15_t)0x10ef, (q15_t)0x8121, (q15_t)0x10e8, (q15_t)0x8120, (q15_t)0x10e2, (q15_t)0x811f, (q15_t)0x10dc, (q15_t)0x811e,\n  (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x10d0, (q15_t)0x811c, (q15_t)0x10c9, (q15_t)0x811c, (q15_t)0x10c3, (q15_t)0x811b,\n  (q15_t)0x10bd, (q15_t)0x811a, (q15_t)0x10b7, (q15_t)0x8119, (q15_t)0x10b0, (q15_t)0x8118, (q15_t)0x10aa, (q15_t)0x8117,\n  (q15_t)0x10a4, (q15_t)0x8117, (q15_t)0x109e, (q15_t)0x8116, (q15_t)0x1098, (q15_t)0x8115, (q15_t)0x1091, (q15_t)0x8114,\n  (q15_t)0x108b, (q15_t)0x8113, (q15_t)0x1085, (q15_t)0x8113, (q15_t)0x107f, (q15_t)0x8112, (q15_t)0x1078, (q15_t)0x8111,\n  (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x106c, (q15_t)0x810f, (q15_t)0x1066, (q15_t)0x810f, (q15_t)0x105f, (q15_t)0x810e,\n  (q15_t)0x1059, (q15_t)0x810d, (q15_t)0x1053, (q15_t)0x810c, (q15_t)0x104d, (q15_t)0x810b, (q15_t)0x1047, (q15_t)0x810b,\n  (q15_t)0x1040, (q15_t)0x810a, (q15_t)0x103a, (q15_t)0x8109, (q15_t)0x1034, (q15_t)0x8108, (q15_t)0x102e, (q15_t)0x8107,\n  (q15_t)0x1027, (q15_t)0x8107, (q15_t)0x1021, (q15_t)0x8106, (q15_t)0x101b, (q15_t)0x8105, (q15_t)0x1015, (q15_t)0x8104,\n  (q15_t)0x100e, (q15_t)0x8103, (q15_t)0x1008, (q15_t)0x8103, (q15_t)0x1002, (q15_t)0x8102, (q15_t)0xffc, (q15_t)0x8101,\n  (q15_t)0xff5, (q15_t)0x8100, (q15_t)0xfef, (q15_t)0x80ff, (q15_t)0xfe9, (q15_t)0x80ff, (q15_t)0xfe3, (q15_t)0x80fe,\n  (q15_t)0xfdd, (q15_t)0x80fd, (q15_t)0xfd6, (q15_t)0x80fc, (q15_t)0xfd0, (q15_t)0x80fc, (q15_t)0xfca, (q15_t)0x80fb,\n  (q15_t)0xfc4, (q15_t)0x80fa, (q15_t)0xfbd, (q15_t)0x80f9, (q15_t)0xfb7, (q15_t)0x80f8, (q15_t)0xfb1, (q15_t)0x80f8,\n  (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xfa4, (q15_t)0x80f6, (q15_t)0xf9e, (q15_t)0x80f5, (q15_t)0xf98, (q15_t)0x80f5,\n  (q15_t)0xf92, (q15_t)0x80f4, (q15_t)0xf8b, (q15_t)0x80f3, (q15_t)0xf85, (q15_t)0x80f2, (q15_t)0xf7f, (q15_t)0x80f2,\n  (q15_t)0xf79, (q15_t)0x80f1, (q15_t)0xf73, (q15_t)0x80f0, (q15_t)0xf6c, (q15_t)0x80ef, (q15_t)0xf66, (q15_t)0x80ef,\n  (q15_t)0xf60, (q15_t)0x80ee, (q15_t)0xf5a, (q15_t)0x80ed, (q15_t)0xf53, (q15_t)0x80ec, (q15_t)0xf4d, (q15_t)0x80ec,\n  (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xf41, (q15_t)0x80ea, (q15_t)0xf3a, (q15_t)0x80e9, (q15_t)0xf34, (q15_t)0x80e9,\n  (q15_t)0xf2e, (q15_t)0x80e8, (q15_t)0xf28, (q15_t)0x80e7, (q15_t)0xf21, (q15_t)0x80e6, (q15_t)0xf1b, (q15_t)0x80e6,\n  (q15_t)0xf15, (q15_t)0x80e5, (q15_t)0xf0f, (q15_t)0x80e4, (q15_t)0xf08, (q15_t)0x80e3, (q15_t)0xf02, (q15_t)0x80e3,\n  (q15_t)0xefc, (q15_t)0x80e2, (q15_t)0xef6, (q15_t)0x80e1, (q15_t)0xef0, (q15_t)0x80e0, (q15_t)0xee9, (q15_t)0x80e0,\n  (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xedd, (q15_t)0x80de, (q15_t)0xed7, (q15_t)0x80dd, (q15_t)0xed0, (q15_t)0x80dd,\n  (q15_t)0xeca, (q15_t)0x80dc, (q15_t)0xec4, (q15_t)0x80db, (q15_t)0xebe, (q15_t)0x80db, (q15_t)0xeb7, (q15_t)0x80da,\n  (q15_t)0xeb1, (q15_t)0x80d9, (q15_t)0xeab, (q15_t)0x80d8, (q15_t)0xea5, (q15_t)0x80d8, (q15_t)0xe9e, (q15_t)0x80d7,\n  (q15_t)0xe98, (q15_t)0x80d6, (q15_t)0xe92, (q15_t)0x80d6, (q15_t)0xe8c, (q15_t)0x80d5, (q15_t)0xe85, (q15_t)0x80d4,\n  (q15_t)0xe7f, (q15_t)0x80d3, (q15_t)0xe79, (q15_t)0x80d3, (q15_t)0xe73, (q15_t)0x80d2, (q15_t)0xe6c, (q15_t)0x80d1,\n  (q15_t)0xe66, (q15_t)0x80d1, (q15_t)0xe60, (q15_t)0x80d0, (q15_t)0xe5a, (q15_t)0x80cf, (q15_t)0xe53, (q15_t)0x80ce,\n  (q15_t)0xe4d, (q15_t)0x80ce, (q15_t)0xe47, (q15_t)0x80cd, (q15_t)0xe41, (q15_t)0x80cc, (q15_t)0xe3a, (q15_t)0x80cc,\n  (q15_t)0xe34, (q15_t)0x80cb, (q15_t)0xe2e, (q15_t)0x80ca, (q15_t)0xe28, (q15_t)0x80ca, (q15_t)0xe22, (q15_t)0x80c9,\n  (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xe15, (q15_t)0x80c7, (q15_t)0xe0f, (q15_t)0x80c7, (q15_t)0xe09, (q15_t)0x80c6,\n  (q15_t)0xe02, (q15_t)0x80c5, (q15_t)0xdfc, (q15_t)0x80c5, (q15_t)0xdf6, (q15_t)0x80c4, (q15_t)0xdf0, (q15_t)0x80c3,\n  (q15_t)0xde9, (q15_t)0x80c3, (q15_t)0xde3, (q15_t)0x80c2, (q15_t)0xddd, (q15_t)0x80c1, (q15_t)0xdd7, (q15_t)0x80c1,\n  (q15_t)0xdd0, (q15_t)0x80c0, (q15_t)0xdca, (q15_t)0x80bf, (q15_t)0xdc4, (q15_t)0x80bf, (q15_t)0xdbe, (q15_t)0x80be,\n  (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xdb1, (q15_t)0x80bd, (q15_t)0xdab, (q15_t)0x80bc, (q15_t)0xda5, (q15_t)0x80bb,\n  (q15_t)0xd9e, (q15_t)0x80bb, (q15_t)0xd98, (q15_t)0x80ba, (q15_t)0xd92, (q15_t)0x80b9, (q15_t)0xd8c, (q15_t)0x80b9,\n  (q15_t)0xd85, (q15_t)0x80b8, (q15_t)0xd7f, (q15_t)0x80b7, (q15_t)0xd79, (q15_t)0x80b7, (q15_t)0xd73, (q15_t)0x80b6,\n  (q15_t)0xd6c, (q15_t)0x80b5, (q15_t)0xd66, (q15_t)0x80b5, (q15_t)0xd60, (q15_t)0x80b4, (q15_t)0xd5a, (q15_t)0x80b3,\n  (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xd4d, (q15_t)0x80b2, (q15_t)0xd47, (q15_t)0x80b1, (q15_t)0xd41, (q15_t)0x80b1,\n  (q15_t)0xd3a, (q15_t)0x80b0, (q15_t)0xd34, (q15_t)0x80af, (q15_t)0xd2e, (q15_t)0x80af, (q15_t)0xd28, (q15_t)0x80ae,\n  (q15_t)0xd21, (q15_t)0x80ad, (q15_t)0xd1b, (q15_t)0x80ad, (q15_t)0xd15, (q15_t)0x80ac, (q15_t)0xd0f, (q15_t)0x80ab,\n  (q15_t)0xd08, (q15_t)0x80ab, (q15_t)0xd02, (q15_t)0x80aa, (q15_t)0xcfc, (q15_t)0x80aa, (q15_t)0xcf6, (q15_t)0x80a9,\n  (q15_t)0xcef, (q15_t)0x80a8, (q15_t)0xce9, (q15_t)0x80a8, (q15_t)0xce3, (q15_t)0x80a7, (q15_t)0xcdd, (q15_t)0x80a6,\n  (q15_t)0xcd6, (q15_t)0x80a6, (q15_t)0xcd0, (q15_t)0x80a5, (q15_t)0xcca, (q15_t)0x80a5, (q15_t)0xcc4, (q15_t)0x80a4,\n  (q15_t)0xcbd, (q15_t)0x80a3, (q15_t)0xcb7, (q15_t)0x80a3, (q15_t)0xcb1, (q15_t)0x80a2, (q15_t)0xcab, (q15_t)0x80a1,\n  (q15_t)0xca4, (q15_t)0x80a1, (q15_t)0xc9e, (q15_t)0x80a0, (q15_t)0xc98, (q15_t)0x80a0, (q15_t)0xc92, (q15_t)0x809f,\n  (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc85, (q15_t)0x809e, (q15_t)0xc7f, (q15_t)0x809d, (q15_t)0xc79, (q15_t)0x809c,\n  (q15_t)0xc72, (q15_t)0x809c, (q15_t)0xc6c, (q15_t)0x809b, (q15_t)0xc66, (q15_t)0x809b, (q15_t)0xc60, (q15_t)0x809a,\n  (q15_t)0xc59, (q15_t)0x8099, (q15_t)0xc53, (q15_t)0x8099, (q15_t)0xc4d, (q15_t)0x8098, (q15_t)0xc47, (q15_t)0x8098,\n  (q15_t)0xc40, (q15_t)0x8097, (q15_t)0xc3a, (q15_t)0x8096, (q15_t)0xc34, (q15_t)0x8096, (q15_t)0xc2e, (q15_t)0x8095,\n  (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xc21, (q15_t)0x8094, (q15_t)0xc1b, (q15_t)0x8093, (q15_t)0xc14, (q15_t)0x8093,\n  (q15_t)0xc0e, (q15_t)0x8092, (q15_t)0xc08, (q15_t)0x8092, (q15_t)0xc02, (q15_t)0x8091, (q15_t)0xbfb, (q15_t)0x8090,\n  (q15_t)0xbf5, (q15_t)0x8090, (q15_t)0xbef, (q15_t)0x808f, (q15_t)0xbe9, (q15_t)0x808f, (q15_t)0xbe2, (q15_t)0x808e,\n  (q15_t)0xbdc, (q15_t)0x808e, (q15_t)0xbd6, (q15_t)0x808d, (q15_t)0xbd0, (q15_t)0x808c, (q15_t)0xbc9, (q15_t)0x808c,\n  (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xbbd, (q15_t)0x808b, (q15_t)0xbb7, (q15_t)0x808a, (q15_t)0xbb0, (q15_t)0x8089,\n  (q15_t)0xbaa, (q15_t)0x8089, (q15_t)0xba4, (q15_t)0x8088, (q15_t)0xb9e, (q15_t)0x8088, (q15_t)0xb97, (q15_t)0x8087,\n  (q15_t)0xb91, (q15_t)0x8087, (q15_t)0xb8b, (q15_t)0x8086, (q15_t)0xb85, (q15_t)0x8085, (q15_t)0xb7e, (q15_t)0x8085,\n  (q15_t)0xb78, (q15_t)0x8084, (q15_t)0xb72, (q15_t)0x8084, (q15_t)0xb6c, (q15_t)0x8083, (q15_t)0xb65, (q15_t)0x8083,\n  (q15_t)0xb5f, (q15_t)0x8082, (q15_t)0xb59, (q15_t)0x8082, (q15_t)0xb53, (q15_t)0x8081, (q15_t)0xb4c, (q15_t)0x8080,\n  (q15_t)0xb46, (q15_t)0x8080, (q15_t)0xb40, (q15_t)0x807f, (q15_t)0xb3a, (q15_t)0x807f, (q15_t)0xb33, (q15_t)0x807e,\n  (q15_t)0xb2d, (q15_t)0x807e, (q15_t)0xb27, (q15_t)0x807d, (q15_t)0xb20, (q15_t)0x807d, (q15_t)0xb1a, (q15_t)0x807c,\n  (q15_t)0xb14, (q15_t)0x807b, (q15_t)0xb0e, (q15_t)0x807b, (q15_t)0xb07, (q15_t)0x807a, (q15_t)0xb01, (q15_t)0x807a,\n  (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xaf5, (q15_t)0x8079, (q15_t)0xaee, (q15_t)0x8078, (q15_t)0xae8, (q15_t)0x8078,\n  (q15_t)0xae2, (q15_t)0x8077, (q15_t)0xadc, (q15_t)0x8077, (q15_t)0xad5, (q15_t)0x8076, (q15_t)0xacf, (q15_t)0x8076,\n  (q15_t)0xac9, (q15_t)0x8075, (q15_t)0xac3, (q15_t)0x8075, (q15_t)0xabc, (q15_t)0x8074, (q15_t)0xab6, (q15_t)0x8073,\n  (q15_t)0xab0, (q15_t)0x8073, (q15_t)0xaaa, (q15_t)0x8072, (q15_t)0xaa3, (q15_t)0x8072, (q15_t)0xa9d, (q15_t)0x8071,\n  (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa90, (q15_t)0x8070, (q15_t)0xa8a, (q15_t)0x8070, (q15_t)0xa84, (q15_t)0x806f,\n  (q15_t)0xa7e, (q15_t)0x806f, (q15_t)0xa77, (q15_t)0x806e, (q15_t)0xa71, (q15_t)0x806e, (q15_t)0xa6b, (q15_t)0x806d,\n  (q15_t)0xa65, (q15_t)0x806d, (q15_t)0xa5e, (q15_t)0x806c, (q15_t)0xa58, (q15_t)0x806c, (q15_t)0xa52, (q15_t)0x806b,\n  (q15_t)0xa4c, (q15_t)0x806b, (q15_t)0xa45, (q15_t)0x806a, (q15_t)0xa3f, (q15_t)0x806a, (q15_t)0xa39, (q15_t)0x8069,\n  (q15_t)0xa33, (q15_t)0x8069, (q15_t)0xa2c, (q15_t)0x8068, (q15_t)0xa26, (q15_t)0x8068, (q15_t)0xa20, (q15_t)0x8067,\n  (q15_t)0xa19, (q15_t)0x8067, (q15_t)0xa13, (q15_t)0x8066, (q15_t)0xa0d, (q15_t)0x8066, (q15_t)0xa07, (q15_t)0x8065,\n  (q15_t)0xa00, (q15_t)0x8065, (q15_t)0x9fa, (q15_t)0x8064, (q15_t)0x9f4, (q15_t)0x8064, (q15_t)0x9ee, (q15_t)0x8063,\n  (q15_t)0x9e7, (q15_t)0x8063, (q15_t)0x9e1, (q15_t)0x8062, (q15_t)0x9db, (q15_t)0x8062, (q15_t)0x9d5, (q15_t)0x8061,\n  (q15_t)0x9ce, (q15_t)0x8061, (q15_t)0x9c8, (q15_t)0x8060, (q15_t)0x9c2, (q15_t)0x8060, (q15_t)0x9bc, (q15_t)0x805f,\n  (q15_t)0x9b5, (q15_t)0x805f, (q15_t)0x9af, (q15_t)0x805e, (q15_t)0x9a9, (q15_t)0x805e, (q15_t)0x9a2, (q15_t)0x805d,\n  (q15_t)0x99c, (q15_t)0x805d, (q15_t)0x996, (q15_t)0x805d, (q15_t)0x990, (q15_t)0x805c, (q15_t)0x989, (q15_t)0x805c,\n  (q15_t)0x983, (q15_t)0x805b, (q15_t)0x97d, (q15_t)0x805b, (q15_t)0x977, (q15_t)0x805a, (q15_t)0x970, (q15_t)0x805a,\n  (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x964, (q15_t)0x8059, (q15_t)0x95e, (q15_t)0x8058, (q15_t)0x957, (q15_t)0x8058,\n  (q15_t)0x951, (q15_t)0x8057, (q15_t)0x94b, (q15_t)0x8057, (q15_t)0x944, (q15_t)0x8057, (q15_t)0x93e, (q15_t)0x8056,\n  (q15_t)0x938, (q15_t)0x8056, (q15_t)0x932, (q15_t)0x8055, (q15_t)0x92b, (q15_t)0x8055, (q15_t)0x925, (q15_t)0x8054,\n  (q15_t)0x91f, (q15_t)0x8054, (q15_t)0x919, (q15_t)0x8053, (q15_t)0x912, (q15_t)0x8053, (q15_t)0x90c, (q15_t)0x8052,\n  (q15_t)0x906, (q15_t)0x8052, (q15_t)0x900, (q15_t)0x8052, (q15_t)0x8f9, (q15_t)0x8051, (q15_t)0x8f3, (q15_t)0x8051,\n  (q15_t)0x8ed, (q15_t)0x8050, (q15_t)0x8e6, (q15_t)0x8050, (q15_t)0x8e0, (q15_t)0x804f, (q15_t)0x8da, (q15_t)0x804f,\n  (q15_t)0x8d4, (q15_t)0x804f, (q15_t)0x8cd, (q15_t)0x804e, (q15_t)0x8c7, (q15_t)0x804e, (q15_t)0x8c1, (q15_t)0x804d,\n  (q15_t)0x8bb, (q15_t)0x804d, (q15_t)0x8b4, (q15_t)0x804c, (q15_t)0x8ae, (q15_t)0x804c, (q15_t)0x8a8, (q15_t)0x804c,\n  (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x89b, (q15_t)0x804b, (q15_t)0x895, (q15_t)0x804a, (q15_t)0x88f, (q15_t)0x804a,\n  (q15_t)0x888, (q15_t)0x8049, (q15_t)0x882, (q15_t)0x8049, (q15_t)0x87c, (q15_t)0x8049, (q15_t)0x876, (q15_t)0x8048,\n  (q15_t)0x86f, (q15_t)0x8048, (q15_t)0x869, (q15_t)0x8047, (q15_t)0x863, (q15_t)0x8047, (q15_t)0x85d, (q15_t)0x8047,\n  (q15_t)0x856, (q15_t)0x8046, (q15_t)0x850, (q15_t)0x8046, (q15_t)0x84a, (q15_t)0x8045, (q15_t)0x843, (q15_t)0x8045,\n  (q15_t)0x83d, (q15_t)0x8044, (q15_t)0x837, (q15_t)0x8044, (q15_t)0x831, (q15_t)0x8044, (q15_t)0x82a, (q15_t)0x8043,\n  (q15_t)0x824, (q15_t)0x8043, (q15_t)0x81e, (q15_t)0x8042, (q15_t)0x818, (q15_t)0x8042, (q15_t)0x811, (q15_t)0x8042,\n  (q15_t)0x80b, (q15_t)0x8041, (q15_t)0x805, (q15_t)0x8041, (q15_t)0x7fe, (q15_t)0x8040, (q15_t)0x7f8, (q15_t)0x8040,\n  (q15_t)0x7f2, (q15_t)0x8040, (q15_t)0x7ec, (q15_t)0x803f, (q15_t)0x7e5, (q15_t)0x803f, (q15_t)0x7df, (q15_t)0x803f,\n  (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x7d3, (q15_t)0x803e, (q15_t)0x7cc, (q15_t)0x803d, (q15_t)0x7c6, (q15_t)0x803d,\n  (q15_t)0x7c0, (q15_t)0x803d, (q15_t)0x7ba, (q15_t)0x803c, (q15_t)0x7b3, (q15_t)0x803c, (q15_t)0x7ad, (q15_t)0x803b,\n  (q15_t)0x7a7, (q15_t)0x803b, (q15_t)0x7a0, (q15_t)0x803b, (q15_t)0x79a, (q15_t)0x803a, (q15_t)0x794, (q15_t)0x803a,\n  (q15_t)0x78e, (q15_t)0x803a, (q15_t)0x787, (q15_t)0x8039, (q15_t)0x781, (q15_t)0x8039, (q15_t)0x77b, (q15_t)0x8039,\n  (q15_t)0x775, (q15_t)0x8038, (q15_t)0x76e, (q15_t)0x8038, (q15_t)0x768, (q15_t)0x8037, (q15_t)0x762, (q15_t)0x8037,\n  (q15_t)0x75b, (q15_t)0x8037, (q15_t)0x755, (q15_t)0x8036, (q15_t)0x74f, (q15_t)0x8036, (q15_t)0x749, (q15_t)0x8036,\n  (q15_t)0x742, (q15_t)0x8035, (q15_t)0x73c, (q15_t)0x8035, (q15_t)0x736, (q15_t)0x8035, (q15_t)0x730, (q15_t)0x8034,\n  (q15_t)0x729, (q15_t)0x8034, (q15_t)0x723, (q15_t)0x8033, (q15_t)0x71d, (q15_t)0x8033, (q15_t)0x716, (q15_t)0x8033,\n  (q15_t)0x710, (q15_t)0x8032, (q15_t)0x70a, (q15_t)0x8032, (q15_t)0x704, (q15_t)0x8032, (q15_t)0x6fd, (q15_t)0x8031,\n  (q15_t)0x6f7, (q15_t)0x8031, (q15_t)0x6f1, (q15_t)0x8031, (q15_t)0x6ea, (q15_t)0x8030, (q15_t)0x6e4, (q15_t)0x8030,\n  (q15_t)0x6de, (q15_t)0x8030, (q15_t)0x6d8, (q15_t)0x802f, (q15_t)0x6d1, (q15_t)0x802f, (q15_t)0x6cb, (q15_t)0x802f,\n  (q15_t)0x6c5, (q15_t)0x802e, (q15_t)0x6bf, (q15_t)0x802e, (q15_t)0x6b8, (q15_t)0x802e, (q15_t)0x6b2, (q15_t)0x802d,\n  (q15_t)0x6ac, (q15_t)0x802d, (q15_t)0x6a5, (q15_t)0x802d, (q15_t)0x69f, (q15_t)0x802c, (q15_t)0x699, (q15_t)0x802c,\n  (q15_t)0x693, (q15_t)0x802c, (q15_t)0x68c, (q15_t)0x802b, (q15_t)0x686, (q15_t)0x802b, (q15_t)0x680, (q15_t)0x802b,\n  (q15_t)0x67a, (q15_t)0x802a, (q15_t)0x673, (q15_t)0x802a, (q15_t)0x66d, (q15_t)0x802a, (q15_t)0x667, (q15_t)0x802a,\n  (q15_t)0x660, (q15_t)0x8029, (q15_t)0x65a, (q15_t)0x8029, (q15_t)0x654, (q15_t)0x8029, (q15_t)0x64e, (q15_t)0x8028,\n  (q15_t)0x647, (q15_t)0x8028, (q15_t)0x641, (q15_t)0x8028, (q15_t)0x63b, (q15_t)0x8027, (q15_t)0x635, (q15_t)0x8027,\n  (q15_t)0x62e, (q15_t)0x8027, (q15_t)0x628, (q15_t)0x8026, (q15_t)0x622, (q15_t)0x8026, (q15_t)0x61b, (q15_t)0x8026,\n  (q15_t)0x615, (q15_t)0x8026, (q15_t)0x60f, (q15_t)0x8025, (q15_t)0x609, (q15_t)0x8025, (q15_t)0x602, (q15_t)0x8025,\n  (q15_t)0x5fc, (q15_t)0x8024, (q15_t)0x5f6, (q15_t)0x8024, (q15_t)0x5ef, (q15_t)0x8024, (q15_t)0x5e9, (q15_t)0x8023,\n  (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x5dd, (q15_t)0x8023, (q15_t)0x5d6, (q15_t)0x8023, (q15_t)0x5d0, (q15_t)0x8022,\n  (q15_t)0x5ca, (q15_t)0x8022, (q15_t)0x5c4, (q15_t)0x8022, (q15_t)0x5bd, (q15_t)0x8021, (q15_t)0x5b7, (q15_t)0x8021,\n  (q15_t)0x5b1, (q15_t)0x8021, (q15_t)0x5aa, (q15_t)0x8021, (q15_t)0x5a4, (q15_t)0x8020, (q15_t)0x59e, (q15_t)0x8020,\n  (q15_t)0x598, (q15_t)0x8020, (q15_t)0x591, (q15_t)0x8020, (q15_t)0x58b, (q15_t)0x801f, (q15_t)0x585, (q15_t)0x801f,\n  (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x578, (q15_t)0x801e, (q15_t)0x572, (q15_t)0x801e, (q15_t)0x56c, (q15_t)0x801e,\n  (q15_t)0x565, (q15_t)0x801e, (q15_t)0x55f, (q15_t)0x801d, (q15_t)0x559, (q15_t)0x801d, (q15_t)0x553, (q15_t)0x801d,\n  (q15_t)0x54c, (q15_t)0x801d, (q15_t)0x546, (q15_t)0x801c, (q15_t)0x540, (q15_t)0x801c, (q15_t)0x539, (q15_t)0x801c,\n  (q15_t)0x533, (q15_t)0x801c, (q15_t)0x52d, (q15_t)0x801b, (q15_t)0x527, (q15_t)0x801b, (q15_t)0x520, (q15_t)0x801b,\n  (q15_t)0x51a, (q15_t)0x801b, (q15_t)0x514, (q15_t)0x801a, (q15_t)0x50d, (q15_t)0x801a, (q15_t)0x507, (q15_t)0x801a,\n  (q15_t)0x501, (q15_t)0x801a, (q15_t)0x4fb, (q15_t)0x8019, (q15_t)0x4f4, (q15_t)0x8019, (q15_t)0x4ee, (q15_t)0x8019,\n  (q15_t)0x4e8, (q15_t)0x8019, (q15_t)0x4e2, (q15_t)0x8018, (q15_t)0x4db, (q15_t)0x8018, (q15_t)0x4d5, (q15_t)0x8018,\n  (q15_t)0x4cf, (q15_t)0x8018, (q15_t)0x4c8, (q15_t)0x8017, (q15_t)0x4c2, (q15_t)0x8017, (q15_t)0x4bc, (q15_t)0x8017,\n  (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x4af, (q15_t)0x8016, (q15_t)0x4a9, (q15_t)0x8016, (q15_t)0x4a3, (q15_t)0x8016,\n  (q15_t)0x49c, (q15_t)0x8016, (q15_t)0x496, (q15_t)0x8016, (q15_t)0x490, (q15_t)0x8015, (q15_t)0x48a, (q15_t)0x8015,\n  (q15_t)0x483, (q15_t)0x8015, (q15_t)0x47d, (q15_t)0x8015, (q15_t)0x477, (q15_t)0x8014, (q15_t)0x471, (q15_t)0x8014,\n  (q15_t)0x46a, (q15_t)0x8014, (q15_t)0x464, (q15_t)0x8014, (q15_t)0x45e, (q15_t)0x8014, (q15_t)0x457, (q15_t)0x8013,\n  (q15_t)0x451, (q15_t)0x8013, (q15_t)0x44b, (q15_t)0x8013, (q15_t)0x445, (q15_t)0x8013, (q15_t)0x43e, (q15_t)0x8013,\n  (q15_t)0x438, (q15_t)0x8012, (q15_t)0x432, (q15_t)0x8012, (q15_t)0x42b, (q15_t)0x8012, (q15_t)0x425, (q15_t)0x8012,\n  (q15_t)0x41f, (q15_t)0x8012, (q15_t)0x419, (q15_t)0x8011, (q15_t)0x412, (q15_t)0x8011, (q15_t)0x40c, (q15_t)0x8011,\n  (q15_t)0x406, (q15_t)0x8011, (q15_t)0x3ff, (q15_t)0x8011, (q15_t)0x3f9, (q15_t)0x8010, (q15_t)0x3f3, (q15_t)0x8010,\n  (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x3e6, (q15_t)0x8010, (q15_t)0x3e0, (q15_t)0x8010, (q15_t)0x3da, (q15_t)0x800f,\n  (q15_t)0x3d4, (q15_t)0x800f, (q15_t)0x3cd, (q15_t)0x800f, (q15_t)0x3c7, (q15_t)0x800f, (q15_t)0x3c1, (q15_t)0x800f,\n  (q15_t)0x3ba, (q15_t)0x800e, (q15_t)0x3b4, (q15_t)0x800e, (q15_t)0x3ae, (q15_t)0x800e, (q15_t)0x3a8, (q15_t)0x800e,\n  (q15_t)0x3a1, (q15_t)0x800e, (q15_t)0x39b, (q15_t)0x800e, (q15_t)0x395, (q15_t)0x800d, (q15_t)0x38e, (q15_t)0x800d,\n  (q15_t)0x388, (q15_t)0x800d, (q15_t)0x382, (q15_t)0x800d, (q15_t)0x37c, (q15_t)0x800d, (q15_t)0x375, (q15_t)0x800c,\n  (q15_t)0x36f, (q15_t)0x800c, (q15_t)0x369, (q15_t)0x800c, (q15_t)0x362, (q15_t)0x800c, (q15_t)0x35c, (q15_t)0x800c,\n  (q15_t)0x356, (q15_t)0x800c, (q15_t)0x350, (q15_t)0x800b, (q15_t)0x349, (q15_t)0x800b, (q15_t)0x343, (q15_t)0x800b,\n  (q15_t)0x33d, (q15_t)0x800b, (q15_t)0x337, (q15_t)0x800b, (q15_t)0x330, (q15_t)0x800b, (q15_t)0x32a, (q15_t)0x800b,\n  (q15_t)0x324, (q15_t)0x800a, (q15_t)0x31d, (q15_t)0x800a, (q15_t)0x317, (q15_t)0x800a, (q15_t)0x311, (q15_t)0x800a,\n  (q15_t)0x30b, (q15_t)0x800a, (q15_t)0x304, (q15_t)0x800a, (q15_t)0x2fe, (q15_t)0x8009, (q15_t)0x2f8, (q15_t)0x8009,\n  (q15_t)0x2f1, (q15_t)0x8009, (q15_t)0x2eb, (q15_t)0x8009, (q15_t)0x2e5, (q15_t)0x8009, (q15_t)0x2df, (q15_t)0x8009,\n  (q15_t)0x2d8, (q15_t)0x8009, (q15_t)0x2d2, (q15_t)0x8008, (q15_t)0x2cc, (q15_t)0x8008, (q15_t)0x2c5, (q15_t)0x8008,\n  (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x2b9, (q15_t)0x8008, (q15_t)0x2b3, (q15_t)0x8008, (q15_t)0x2ac, (q15_t)0x8008,\n  (q15_t)0x2a6, (q15_t)0x8008, (q15_t)0x2a0, (q15_t)0x8007, (q15_t)0x299, (q15_t)0x8007, (q15_t)0x293, (q15_t)0x8007,\n  (q15_t)0x28d, (q15_t)0x8007, (q15_t)0x287, (q15_t)0x8007, (q15_t)0x280, (q15_t)0x8007, (q15_t)0x27a, (q15_t)0x8007,\n  (q15_t)0x274, (q15_t)0x8007, (q15_t)0x26d, (q15_t)0x8006, (q15_t)0x267, (q15_t)0x8006, (q15_t)0x261, (q15_t)0x8006,\n  (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x254, (q15_t)0x8006, (q15_t)0x24e, (q15_t)0x8006, (q15_t)0x248, (q15_t)0x8006,\n  (q15_t)0x242, (q15_t)0x8006, (q15_t)0x23b, (q15_t)0x8005, (q15_t)0x235, (q15_t)0x8005, (q15_t)0x22f, (q15_t)0x8005,\n  (q15_t)0x228, (q15_t)0x8005, (q15_t)0x222, (q15_t)0x8005, (q15_t)0x21c, (q15_t)0x8005, (q15_t)0x216, (q15_t)0x8005,\n  (q15_t)0x20f, (q15_t)0x8005, (q15_t)0x209, (q15_t)0x8005, (q15_t)0x203, (q15_t)0x8005, (q15_t)0x1fc, (q15_t)0x8004,\n  (q15_t)0x1f6, (q15_t)0x8004, (q15_t)0x1f0, (q15_t)0x8004, (q15_t)0x1ea, (q15_t)0x8004, (q15_t)0x1e3, (q15_t)0x8004,\n  (q15_t)0x1dd, (q15_t)0x8004, (q15_t)0x1d7, (q15_t)0x8004, (q15_t)0x1d0, (q15_t)0x8004, (q15_t)0x1ca, (q15_t)0x8004,\n  (q15_t)0x1c4, (q15_t)0x8004, (q15_t)0x1be, (q15_t)0x8004, (q15_t)0x1b7, (q15_t)0x8003, (q15_t)0x1b1, (q15_t)0x8003,\n  (q15_t)0x1ab, (q15_t)0x8003, (q15_t)0x1a4, (q15_t)0x8003, (q15_t)0x19e, (q15_t)0x8003, (q15_t)0x198, (q15_t)0x8003,\n  (q15_t)0x192, (q15_t)0x8003, (q15_t)0x18b, (q15_t)0x8003, (q15_t)0x185, (q15_t)0x8003, (q15_t)0x17f, (q15_t)0x8003,\n  (q15_t)0x178, (q15_t)0x8003, (q15_t)0x172, (q15_t)0x8003, (q15_t)0x16c, (q15_t)0x8003, (q15_t)0x166, (q15_t)0x8002,\n  (q15_t)0x15f, (q15_t)0x8002, (q15_t)0x159, (q15_t)0x8002, (q15_t)0x153, (q15_t)0x8002, (q15_t)0x14d, (q15_t)0x8002,\n  (q15_t)0x146, (q15_t)0x8002, (q15_t)0x140, (q15_t)0x8002, (q15_t)0x13a, (q15_t)0x8002, (q15_t)0x133, (q15_t)0x8002,\n  (q15_t)0x12d, (q15_t)0x8002, (q15_t)0x127, (q15_t)0x8002, (q15_t)0x121, (q15_t)0x8002, (q15_t)0x11a, (q15_t)0x8002,\n  (q15_t)0x114, (q15_t)0x8002, (q15_t)0x10e, (q15_t)0x8002, (q15_t)0x107, (q15_t)0x8002, (q15_t)0x101, (q15_t)0x8002,\n  (q15_t)0xfb, (q15_t)0x8001, (q15_t)0xf5, (q15_t)0x8001, (q15_t)0xee, (q15_t)0x8001, (q15_t)0xe8, (q15_t)0x8001,\n  (q15_t)0xe2, (q15_t)0x8001, (q15_t)0xdb, (q15_t)0x8001, (q15_t)0xd5, (q15_t)0x8001, (q15_t)0xcf, (q15_t)0x8001,\n  (q15_t)0xc9, (q15_t)0x8001, (q15_t)0xc2, (q15_t)0x8001, (q15_t)0xbc, (q15_t)0x8001, (q15_t)0xb6, (q15_t)0x8001,\n  (q15_t)0xaf, (q15_t)0x8001, (q15_t)0xa9, (q15_t)0x8001, (q15_t)0xa3, (q15_t)0x8001, (q15_t)0x9d, (q15_t)0x8001,\n  (q15_t)0x96, (q15_t)0x8001, (q15_t)0x90, (q15_t)0x8001, (q15_t)0x8a, (q15_t)0x8001, (q15_t)0x83, (q15_t)0x8001,\n  (q15_t)0x7d, (q15_t)0x8001, (q15_t)0x77, (q15_t)0x8001, (q15_t)0x71, (q15_t)0x8001, (q15_t)0x6a, (q15_t)0x8001,\n  (q15_t)0x64, (q15_t)0x8001, (q15_t)0x5e, (q15_t)0x8001, (q15_t)0x57, (q15_t)0x8001, (q15_t)0x51, (q15_t)0x8001,\n  (q15_t)0x4b, (q15_t)0x8001, (q15_t)0x45, (q15_t)0x8001, (q15_t)0x3e, (q15_t)0x8001, (q15_t)0x38, (q15_t)0x8001,\n  (q15_t)0x32, (q15_t)0x8001, (q15_t)0x2b, (q15_t)0x8001, (q15_t)0x25, (q15_t)0x8001, (q15_t)0x1f, (q15_t)0x8001,\n  (q15_t)0x19, (q15_t)0x8001, (q15_t)0x12, (q15_t)0x8001, (q15_t)0xc, (q15_t)0x8001, (q15_t)0x6, (q15_t)0x8001\n};\n\n    const q15_t __ALIGNED(4) cos_factorsQ15_8192[8192] = {\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff,\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff,\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff,\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff,\n  (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff,\n  (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe,\n  (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe,\n  (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd,\n  (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffc,\n  (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc,\n  (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb,\n  (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa,\n  (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9,\n  (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8,\n  (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7,\n  (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6,\n  (q15_t)0x7ff6, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff4,\n  (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff3,\n  (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2,\n  (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff0, (q15_t)0x7ff0,\n  (q15_t)0x7ff0, (q15_t)0x7ff0, (q15_t)0x7ff0, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef,\n  (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fed, (q15_t)0x7fed, (q15_t)0x7fed,\n  (q15_t)0x7fed, (q15_t)0x7fed, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7feb, (q15_t)0x7feb,\n  (q15_t)0x7feb, (q15_t)0x7feb, (q15_t)0x7feb, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fe9,\n  (q15_t)0x7fe9, (q15_t)0x7fe9, (q15_t)0x7fe9, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8,\n  (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe6, (q15_t)0x7fe6, (q15_t)0x7fe6, (q15_t)0x7fe6,\n  (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe4, (q15_t)0x7fe4, (q15_t)0x7fe4, (q15_t)0x7fe4,\n  (q15_t)0x7fe3, (q15_t)0x7fe3, (q15_t)0x7fe3, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe1,\n  (q15_t)0x7fe1, (q15_t)0x7fe1, (q15_t)0x7fe1, (q15_t)0x7fe0, (q15_t)0x7fe0, (q15_t)0x7fe0, (q15_t)0x7fdf, (q15_t)0x7fdf,\n  (q15_t)0x7fdf, (q15_t)0x7fdf, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fdd, (q15_t)0x7fdd,\n  (q15_t)0x7fdd, (q15_t)0x7fdc, (q15_t)0x7fdc, (q15_t)0x7fdc, (q15_t)0x7fdb, (q15_t)0x7fdb, (q15_t)0x7fdb, (q15_t)0x7fdb,\n  (q15_t)0x7fda, (q15_t)0x7fda, (q15_t)0x7fda, (q15_t)0x7fd9, (q15_t)0x7fd9, (q15_t)0x7fd9, (q15_t)0x7fd8, (q15_t)0x7fd8,\n  (q15_t)0x7fd8, (q15_t)0x7fd8, (q15_t)0x7fd7, (q15_t)0x7fd7, (q15_t)0x7fd7, (q15_t)0x7fd6, (q15_t)0x7fd6, (q15_t)0x7fd6,\n  (q15_t)0x7fd5, (q15_t)0x7fd5, (q15_t)0x7fd5, (q15_t)0x7fd4, (q15_t)0x7fd4, (q15_t)0x7fd4, (q15_t)0x7fd3, (q15_t)0x7fd3,\n  (q15_t)0x7fd3, (q15_t)0x7fd2, (q15_t)0x7fd2, (q15_t)0x7fd2, (q15_t)0x7fd1, (q15_t)0x7fd1, (q15_t)0x7fd1, (q15_t)0x7fd0,\n  (q15_t)0x7fd0, (q15_t)0x7fd0, (q15_t)0x7fcf, (q15_t)0x7fcf, (q15_t)0x7fcf, (q15_t)0x7fce, (q15_t)0x7fce, (q15_t)0x7fce,\n  (q15_t)0x7fcd, (q15_t)0x7fcd, (q15_t)0x7fcd, (q15_t)0x7fcc, (q15_t)0x7fcc, (q15_t)0x7fcc, (q15_t)0x7fcb, (q15_t)0x7fcb,\n  (q15_t)0x7fcb, (q15_t)0x7fca, (q15_t)0x7fca, (q15_t)0x7fc9, (q15_t)0x7fc9, (q15_t)0x7fc9, (q15_t)0x7fc8, (q15_t)0x7fc8,\n  (q15_t)0x7fc8, (q15_t)0x7fc7, (q15_t)0x7fc7, (q15_t)0x7fc7, (q15_t)0x7fc6, (q15_t)0x7fc6, (q15_t)0x7fc5, (q15_t)0x7fc5,\n  (q15_t)0x7fc5, (q15_t)0x7fc4, (q15_t)0x7fc4, (q15_t)0x7fc4, (q15_t)0x7fc3, (q15_t)0x7fc3, (q15_t)0x7fc2, (q15_t)0x7fc2,\n  (q15_t)0x7fc2, (q15_t)0x7fc1, (q15_t)0x7fc1, (q15_t)0x7fc0, (q15_t)0x7fc0, (q15_t)0x7fc0, (q15_t)0x7fbf, (q15_t)0x7fbf,\n  (q15_t)0x7fbf, (q15_t)0x7fbe, (q15_t)0x7fbe, (q15_t)0x7fbd, (q15_t)0x7fbd, (q15_t)0x7fbd, (q15_t)0x7fbc, (q15_t)0x7fbc,\n  (q15_t)0x7fbb, (q15_t)0x7fbb, (q15_t)0x7fbb, (q15_t)0x7fba, (q15_t)0x7fba, (q15_t)0x7fb9, (q15_t)0x7fb9, (q15_t)0x7fb8,\n  (q15_t)0x7fb8, (q15_t)0x7fb8, (q15_t)0x7fb7, (q15_t)0x7fb7, (q15_t)0x7fb6, (q15_t)0x7fb6, (q15_t)0x7fb6, (q15_t)0x7fb5,\n  (q15_t)0x7fb5, (q15_t)0x7fb4, (q15_t)0x7fb4, (q15_t)0x7fb3, (q15_t)0x7fb3, (q15_t)0x7fb3, (q15_t)0x7fb2, (q15_t)0x7fb2,\n  (q15_t)0x7fb1, (q15_t)0x7fb1, (q15_t)0x7fb0, (q15_t)0x7fb0, (q15_t)0x7faf, (q15_t)0x7faf, (q15_t)0x7faf, (q15_t)0x7fae,\n  (q15_t)0x7fae, (q15_t)0x7fad, (q15_t)0x7fad, (q15_t)0x7fac, (q15_t)0x7fac, (q15_t)0x7fac, (q15_t)0x7fab, (q15_t)0x7fab,\n  (q15_t)0x7faa, (q15_t)0x7faa, (q15_t)0x7fa9, (q15_t)0x7fa9, (q15_t)0x7fa8, (q15_t)0x7fa8, (q15_t)0x7fa7, (q15_t)0x7fa7,\n  (q15_t)0x7fa6, (q15_t)0x7fa6, (q15_t)0x7fa6, (q15_t)0x7fa5, (q15_t)0x7fa5, (q15_t)0x7fa4, (q15_t)0x7fa4, (q15_t)0x7fa3,\n  (q15_t)0x7fa3, (q15_t)0x7fa2, (q15_t)0x7fa2, (q15_t)0x7fa1, (q15_t)0x7fa1, (q15_t)0x7fa0, (q15_t)0x7fa0, (q15_t)0x7f9f,\n  (q15_t)0x7f9f, (q15_t)0x7f9e, (q15_t)0x7f9e, (q15_t)0x7f9d, (q15_t)0x7f9d, (q15_t)0x7f9c, (q15_t)0x7f9c, (q15_t)0x7f9c,\n  (q15_t)0x7f9b, (q15_t)0x7f9b, (q15_t)0x7f9a, (q15_t)0x7f9a, (q15_t)0x7f99, (q15_t)0x7f99, (q15_t)0x7f98, (q15_t)0x7f98,\n  (q15_t)0x7f97, (q15_t)0x7f97, (q15_t)0x7f96, (q15_t)0x7f96, (q15_t)0x7f95, (q15_t)0x7f95, (q15_t)0x7f94, (q15_t)0x7f94,\n  (q15_t)0x7f93, (q15_t)0x7f92, (q15_t)0x7f92, (q15_t)0x7f91, (q15_t)0x7f91, (q15_t)0x7f90, (q15_t)0x7f90, (q15_t)0x7f8f,\n  (q15_t)0x7f8f, (q15_t)0x7f8e, (q15_t)0x7f8e, (q15_t)0x7f8d, (q15_t)0x7f8d, (q15_t)0x7f8c, (q15_t)0x7f8c, (q15_t)0x7f8b,\n  (q15_t)0x7f8b, (q15_t)0x7f8a, (q15_t)0x7f8a, (q15_t)0x7f89, (q15_t)0x7f89, (q15_t)0x7f88, (q15_t)0x7f87, (q15_t)0x7f87,\n  (q15_t)0x7f86, (q15_t)0x7f86, (q15_t)0x7f85, (q15_t)0x7f85, (q15_t)0x7f84, (q15_t)0x7f84, (q15_t)0x7f83, (q15_t)0x7f83,\n  (q15_t)0x7f82, (q15_t)0x7f81, (q15_t)0x7f81, (q15_t)0x7f80, (q15_t)0x7f80, (q15_t)0x7f7f, (q15_t)0x7f7f, (q15_t)0x7f7e,\n  (q15_t)0x7f7e, (q15_t)0x7f7d, (q15_t)0x7f7c, (q15_t)0x7f7c, (q15_t)0x7f7b, (q15_t)0x7f7b, (q15_t)0x7f7a, (q15_t)0x7f7a,\n  (q15_t)0x7f79, (q15_t)0x7f79, (q15_t)0x7f78, (q15_t)0x7f77, (q15_t)0x7f77, (q15_t)0x7f76, (q15_t)0x7f76, (q15_t)0x7f75,\n  (q15_t)0x7f75, (q15_t)0x7f74, (q15_t)0x7f73, (q15_t)0x7f73, (q15_t)0x7f72, (q15_t)0x7f72, (q15_t)0x7f71, (q15_t)0x7f70,\n  (q15_t)0x7f70, (q15_t)0x7f6f, (q15_t)0x7f6f, (q15_t)0x7f6e, (q15_t)0x7f6d, (q15_t)0x7f6d, (q15_t)0x7f6c, (q15_t)0x7f6c,\n  (q15_t)0x7f6b, (q15_t)0x7f6b, (q15_t)0x7f6a, (q15_t)0x7f69, (q15_t)0x7f69, (q15_t)0x7f68, (q15_t)0x7f68, (q15_t)0x7f67,\n  (q15_t)0x7f66, (q15_t)0x7f66, (q15_t)0x7f65, (q15_t)0x7f64, (q15_t)0x7f64, (q15_t)0x7f63, (q15_t)0x7f63, (q15_t)0x7f62,\n  (q15_t)0x7f61, (q15_t)0x7f61, (q15_t)0x7f60, (q15_t)0x7f60, (q15_t)0x7f5f, (q15_t)0x7f5e, (q15_t)0x7f5e, (q15_t)0x7f5d,\n  (q15_t)0x7f5c, (q15_t)0x7f5c, (q15_t)0x7f5b, (q15_t)0x7f5b, (q15_t)0x7f5a, (q15_t)0x7f59, (q15_t)0x7f59, (q15_t)0x7f58,\n  (q15_t)0x7f57, (q15_t)0x7f57, (q15_t)0x7f56, (q15_t)0x7f55, (q15_t)0x7f55, (q15_t)0x7f54, (q15_t)0x7f54, (q15_t)0x7f53,\n  (q15_t)0x7f52, (q15_t)0x7f52, (q15_t)0x7f51, (q15_t)0x7f50, (q15_t)0x7f50, (q15_t)0x7f4f, (q15_t)0x7f4e, (q15_t)0x7f4e,\n  (q15_t)0x7f4d, (q15_t)0x7f4c, (q15_t)0x7f4c, (q15_t)0x7f4b, (q15_t)0x7f4a, (q15_t)0x7f4a, (q15_t)0x7f49, (q15_t)0x7f48,\n  (q15_t)0x7f48, (q15_t)0x7f47, (q15_t)0x7f46, (q15_t)0x7f46, (q15_t)0x7f45, (q15_t)0x7f44, (q15_t)0x7f44, (q15_t)0x7f43,\n  (q15_t)0x7f42, (q15_t)0x7f42, (q15_t)0x7f41, (q15_t)0x7f40, (q15_t)0x7f40, (q15_t)0x7f3f, (q15_t)0x7f3e, (q15_t)0x7f3e,\n  (q15_t)0x7f3d, (q15_t)0x7f3c, (q15_t)0x7f3c, (q15_t)0x7f3b, (q15_t)0x7f3a, (q15_t)0x7f3a, (q15_t)0x7f39, (q15_t)0x7f38,\n  (q15_t)0x7f37, (q15_t)0x7f37, (q15_t)0x7f36, (q15_t)0x7f35, (q15_t)0x7f35, (q15_t)0x7f34, (q15_t)0x7f33, (q15_t)0x7f33,\n  (q15_t)0x7f32, (q15_t)0x7f31, (q15_t)0x7f31, (q15_t)0x7f30, (q15_t)0x7f2f, (q15_t)0x7f2e, (q15_t)0x7f2e, (q15_t)0x7f2d,\n  (q15_t)0x7f2c, (q15_t)0x7f2c, (q15_t)0x7f2b, (q15_t)0x7f2a, (q15_t)0x7f29, (q15_t)0x7f29, (q15_t)0x7f28, (q15_t)0x7f27,\n  (q15_t)0x7f27, (q15_t)0x7f26, (q15_t)0x7f25, (q15_t)0x7f24, (q15_t)0x7f24, (q15_t)0x7f23, (q15_t)0x7f22, (q15_t)0x7f21,\n  (q15_t)0x7f21, (q15_t)0x7f20, (q15_t)0x7f1f, (q15_t)0x7f1f, (q15_t)0x7f1e, (q15_t)0x7f1d, (q15_t)0x7f1c, (q15_t)0x7f1c,\n  (q15_t)0x7f1b, (q15_t)0x7f1a, (q15_t)0x7f19, (q15_t)0x7f19, (q15_t)0x7f18, (q15_t)0x7f17, (q15_t)0x7f16, (q15_t)0x7f16,\n  (q15_t)0x7f15, (q15_t)0x7f14, (q15_t)0x7f13, (q15_t)0x7f13, (q15_t)0x7f12, (q15_t)0x7f11, (q15_t)0x7f10, (q15_t)0x7f10,\n  (q15_t)0x7f0f, (q15_t)0x7f0e, (q15_t)0x7f0d, (q15_t)0x7f0d, (q15_t)0x7f0c, (q15_t)0x7f0b, (q15_t)0x7f0a, (q15_t)0x7f09,\n  (q15_t)0x7f09, (q15_t)0x7f08, (q15_t)0x7f07, (q15_t)0x7f06, (q15_t)0x7f06, (q15_t)0x7f05, (q15_t)0x7f04, (q15_t)0x7f03,\n  (q15_t)0x7f02, (q15_t)0x7f02, (q15_t)0x7f01, (q15_t)0x7f00, (q15_t)0x7eff, (q15_t)0x7eff, (q15_t)0x7efe, (q15_t)0x7efd,\n  (q15_t)0x7efc, (q15_t)0x7efb, (q15_t)0x7efb, (q15_t)0x7efa, (q15_t)0x7ef9, (q15_t)0x7ef8, (q15_t)0x7ef7, (q15_t)0x7ef7,\n  (q15_t)0x7ef6, (q15_t)0x7ef5, (q15_t)0x7ef4, (q15_t)0x7ef3, (q15_t)0x7ef3, (q15_t)0x7ef2, (q15_t)0x7ef1, (q15_t)0x7ef0,\n  (q15_t)0x7eef, (q15_t)0x7eef, (q15_t)0x7eee, (q15_t)0x7eed, (q15_t)0x7eec, (q15_t)0x7eeb, (q15_t)0x7eeb, (q15_t)0x7eea,\n  (q15_t)0x7ee9, (q15_t)0x7ee8, (q15_t)0x7ee7, (q15_t)0x7ee6, (q15_t)0x7ee6, (q15_t)0x7ee5, (q15_t)0x7ee4, (q15_t)0x7ee3,\n  (q15_t)0x7ee2, (q15_t)0x7ee2, (q15_t)0x7ee1, (q15_t)0x7ee0, (q15_t)0x7edf, (q15_t)0x7ede, (q15_t)0x7edd, (q15_t)0x7edd,\n  (q15_t)0x7edc, (q15_t)0x7edb, (q15_t)0x7eda, (q15_t)0x7ed9, (q15_t)0x7ed8, (q15_t)0x7ed8, (q15_t)0x7ed7, (q15_t)0x7ed6,\n  (q15_t)0x7ed5, (q15_t)0x7ed4, (q15_t)0x7ed3, (q15_t)0x7ed2, (q15_t)0x7ed2, (q15_t)0x7ed1, (q15_t)0x7ed0, (q15_t)0x7ecf,\n  (q15_t)0x7ece, (q15_t)0x7ecd, (q15_t)0x7ecc, (q15_t)0x7ecc, (q15_t)0x7ecb, (q15_t)0x7eca, (q15_t)0x7ec9, (q15_t)0x7ec8,\n  (q15_t)0x7ec7, (q15_t)0x7ec6, (q15_t)0x7ec6, (q15_t)0x7ec5, (q15_t)0x7ec4, (q15_t)0x7ec3, (q15_t)0x7ec2, (q15_t)0x7ec1,\n  (q15_t)0x7ec0, (q15_t)0x7ebf, (q15_t)0x7ebf, (q15_t)0x7ebe, (q15_t)0x7ebd, (q15_t)0x7ebc, (q15_t)0x7ebb, (q15_t)0x7eba,\n  (q15_t)0x7eb9, (q15_t)0x7eb8, (q15_t)0x7eb8, (q15_t)0x7eb7, (q15_t)0x7eb6, (q15_t)0x7eb5, (q15_t)0x7eb4, (q15_t)0x7eb3,\n  (q15_t)0x7eb2, (q15_t)0x7eb1, (q15_t)0x7eb0, (q15_t)0x7eaf, (q15_t)0x7eaf, (q15_t)0x7eae, (q15_t)0x7ead, (q15_t)0x7eac,\n  (q15_t)0x7eab, (q15_t)0x7eaa, (q15_t)0x7ea9, (q15_t)0x7ea8, (q15_t)0x7ea7, (q15_t)0x7ea6, (q15_t)0x7ea6, (q15_t)0x7ea5,\n  (q15_t)0x7ea4, (q15_t)0x7ea3, (q15_t)0x7ea2, (q15_t)0x7ea1, (q15_t)0x7ea0, (q15_t)0x7e9f, (q15_t)0x7e9e, (q15_t)0x7e9d,\n  (q15_t)0x7e9c, (q15_t)0x7e9b, (q15_t)0x7e9b, (q15_t)0x7e9a, (q15_t)0x7e99, (q15_t)0x7e98, (q15_t)0x7e97, (q15_t)0x7e96,\n  (q15_t)0x7e95, (q15_t)0x7e94, (q15_t)0x7e93, (q15_t)0x7e92, (q15_t)0x7e91, (q15_t)0x7e90, (q15_t)0x7e8f, (q15_t)0x7e8e,\n  (q15_t)0x7e8d, (q15_t)0x7e8d, (q15_t)0x7e8c, (q15_t)0x7e8b, (q15_t)0x7e8a, (q15_t)0x7e89, (q15_t)0x7e88, (q15_t)0x7e87,\n  (q15_t)0x7e86, (q15_t)0x7e85, (q15_t)0x7e84, (q15_t)0x7e83, (q15_t)0x7e82, (q15_t)0x7e81, (q15_t)0x7e80, (q15_t)0x7e7f,\n  (q15_t)0x7e7e, (q15_t)0x7e7d, (q15_t)0x7e7c, (q15_t)0x7e7b, (q15_t)0x7e7a, (q15_t)0x7e79, (q15_t)0x7e78, (q15_t)0x7e77,\n  (q15_t)0x7e77, (q15_t)0x7e76, (q15_t)0x7e75, (q15_t)0x7e74, (q15_t)0x7e73, (q15_t)0x7e72, (q15_t)0x7e71, (q15_t)0x7e70,\n  (q15_t)0x7e6f, (q15_t)0x7e6e, (q15_t)0x7e6d, (q15_t)0x7e6c, (q15_t)0x7e6b, (q15_t)0x7e6a, (q15_t)0x7e69, (q15_t)0x7e68,\n  (q15_t)0x7e67, (q15_t)0x7e66, (q15_t)0x7e65, (q15_t)0x7e64, (q15_t)0x7e63, (q15_t)0x7e62, (q15_t)0x7e61, (q15_t)0x7e60,\n  (q15_t)0x7e5f, (q15_t)0x7e5e, (q15_t)0x7e5d, (q15_t)0x7e5c, (q15_t)0x7e5b, (q15_t)0x7e5a, (q15_t)0x7e59, (q15_t)0x7e58,\n  (q15_t)0x7e57, (q15_t)0x7e56, (q15_t)0x7e55, (q15_t)0x7e54, (q15_t)0x7e53, (q15_t)0x7e52, (q15_t)0x7e51, (q15_t)0x7e50,\n  (q15_t)0x7e4f, (q15_t)0x7e4e, (q15_t)0x7e4d, (q15_t)0x7e4c, (q15_t)0x7e4b, (q15_t)0x7e4a, (q15_t)0x7e49, (q15_t)0x7e48,\n  (q15_t)0x7e47, (q15_t)0x7e46, (q15_t)0x7e45, (q15_t)0x7e43, (q15_t)0x7e42, (q15_t)0x7e41, (q15_t)0x7e40, (q15_t)0x7e3f,\n  (q15_t)0x7e3e, (q15_t)0x7e3d, (q15_t)0x7e3c, (q15_t)0x7e3b, (q15_t)0x7e3a, (q15_t)0x7e39, (q15_t)0x7e38, (q15_t)0x7e37,\n  (q15_t)0x7e36, (q15_t)0x7e35, (q15_t)0x7e34, (q15_t)0x7e33, (q15_t)0x7e32, (q15_t)0x7e31, (q15_t)0x7e30, (q15_t)0x7e2f,\n  (q15_t)0x7e2e, (q15_t)0x7e2d, (q15_t)0x7e2b, (q15_t)0x7e2a, (q15_t)0x7e29, (q15_t)0x7e28, (q15_t)0x7e27, (q15_t)0x7e26,\n  (q15_t)0x7e25, (q15_t)0x7e24, (q15_t)0x7e23, (q15_t)0x7e22, (q15_t)0x7e21, (q15_t)0x7e20, (q15_t)0x7e1f, (q15_t)0x7e1e,\n  (q15_t)0x7e1d, (q15_t)0x7e1b, (q15_t)0x7e1a, (q15_t)0x7e19, (q15_t)0x7e18, (q15_t)0x7e17, (q15_t)0x7e16, (q15_t)0x7e15,\n  (q15_t)0x7e14, (q15_t)0x7e13, (q15_t)0x7e12, (q15_t)0x7e11, (q15_t)0x7e10, (q15_t)0x7e0e, (q15_t)0x7e0d, (q15_t)0x7e0c,\n  (q15_t)0x7e0b, (q15_t)0x7e0a, (q15_t)0x7e09, (q15_t)0x7e08, (q15_t)0x7e07, (q15_t)0x7e06, (q15_t)0x7e05, (q15_t)0x7e04,\n  (q15_t)0x7e02, (q15_t)0x7e01, (q15_t)0x7e00, (q15_t)0x7dff, (q15_t)0x7dfe, (q15_t)0x7dfd, (q15_t)0x7dfc, (q15_t)0x7dfb,\n  (q15_t)0x7dfa, (q15_t)0x7df8, (q15_t)0x7df7, (q15_t)0x7df6, (q15_t)0x7df5, (q15_t)0x7df4, (q15_t)0x7df3, (q15_t)0x7df2,\n  (q15_t)0x7df1, (q15_t)0x7def, (q15_t)0x7dee, (q15_t)0x7ded, (q15_t)0x7dec, (q15_t)0x7deb, (q15_t)0x7dea, (q15_t)0x7de9,\n  (q15_t)0x7de8, (q15_t)0x7de6, (q15_t)0x7de5, (q15_t)0x7de4, (q15_t)0x7de3, (q15_t)0x7de2, (q15_t)0x7de1, (q15_t)0x7de0,\n  (q15_t)0x7dde, (q15_t)0x7ddd, (q15_t)0x7ddc, (q15_t)0x7ddb, (q15_t)0x7dda, (q15_t)0x7dd9, (q15_t)0x7dd8, (q15_t)0x7dd6,\n  (q15_t)0x7dd5, (q15_t)0x7dd4, (q15_t)0x7dd3, (q15_t)0x7dd2, (q15_t)0x7dd1, (q15_t)0x7dd0, (q15_t)0x7dce, (q15_t)0x7dcd,\n  (q15_t)0x7dcc, (q15_t)0x7dcb, (q15_t)0x7dca, (q15_t)0x7dc9, (q15_t)0x7dc7, (q15_t)0x7dc6, (q15_t)0x7dc5, (q15_t)0x7dc4,\n  (q15_t)0x7dc3, (q15_t)0x7dc2, (q15_t)0x7dc0, (q15_t)0x7dbf, (q15_t)0x7dbe, (q15_t)0x7dbd, (q15_t)0x7dbc, (q15_t)0x7dbb,\n  (q15_t)0x7db9, (q15_t)0x7db8, (q15_t)0x7db7, (q15_t)0x7db6, (q15_t)0x7db5, (q15_t)0x7db3, (q15_t)0x7db2, (q15_t)0x7db1,\n  (q15_t)0x7db0, (q15_t)0x7daf, (q15_t)0x7dae, (q15_t)0x7dac, (q15_t)0x7dab, (q15_t)0x7daa, (q15_t)0x7da9, (q15_t)0x7da8,\n  (q15_t)0x7da6, (q15_t)0x7da5, (q15_t)0x7da4, (q15_t)0x7da3, (q15_t)0x7da2, (q15_t)0x7da0, (q15_t)0x7d9f, (q15_t)0x7d9e,\n  (q15_t)0x7d9d, (q15_t)0x7d9c, (q15_t)0x7d9a, (q15_t)0x7d99, (q15_t)0x7d98, (q15_t)0x7d97, (q15_t)0x7d95, (q15_t)0x7d94,\n  (q15_t)0x7d93, (q15_t)0x7d92, (q15_t)0x7d91, (q15_t)0x7d8f, (q15_t)0x7d8e, (q15_t)0x7d8d, (q15_t)0x7d8c, (q15_t)0x7d8a,\n  (q15_t)0x7d89, (q15_t)0x7d88, (q15_t)0x7d87, (q15_t)0x7d86, (q15_t)0x7d84, (q15_t)0x7d83, (q15_t)0x7d82, (q15_t)0x7d81,\n  (q15_t)0x7d7f, (q15_t)0x7d7e, (q15_t)0x7d7d, (q15_t)0x7d7c, (q15_t)0x7d7a, (q15_t)0x7d79, (q15_t)0x7d78, (q15_t)0x7d77,\n  (q15_t)0x7d75, (q15_t)0x7d74, (q15_t)0x7d73, (q15_t)0x7d72, (q15_t)0x7d70, (q15_t)0x7d6f, (q15_t)0x7d6e, (q15_t)0x7d6d,\n  (q15_t)0x7d6b, (q15_t)0x7d6a, (q15_t)0x7d69, (q15_t)0x7d68, (q15_t)0x7d66, (q15_t)0x7d65, (q15_t)0x7d64, (q15_t)0x7d63,\n  (q15_t)0x7d61, (q15_t)0x7d60, (q15_t)0x7d5f, (q15_t)0x7d5e, (q15_t)0x7d5c, (q15_t)0x7d5b, (q15_t)0x7d5a, (q15_t)0x7d59,\n  (q15_t)0x7d57, (q15_t)0x7d56, (q15_t)0x7d55, (q15_t)0x7d53, (q15_t)0x7d52, (q15_t)0x7d51, (q15_t)0x7d50, (q15_t)0x7d4e,\n  (q15_t)0x7d4d, (q15_t)0x7d4c, (q15_t)0x7d4a, (q15_t)0x7d49, (q15_t)0x7d48, (q15_t)0x7d47, (q15_t)0x7d45, (q15_t)0x7d44,\n  (q15_t)0x7d43, (q15_t)0x7d41, (q15_t)0x7d40, (q15_t)0x7d3f, (q15_t)0x7d3e, (q15_t)0x7d3c, (q15_t)0x7d3b, (q15_t)0x7d3a,\n  (q15_t)0x7d38, (q15_t)0x7d37, (q15_t)0x7d36, (q15_t)0x7d34, (q15_t)0x7d33, (q15_t)0x7d32, (q15_t)0x7d31, (q15_t)0x7d2f,\n  (q15_t)0x7d2e, (q15_t)0x7d2d, (q15_t)0x7d2b, (q15_t)0x7d2a, (q15_t)0x7d29, (q15_t)0x7d27, (q15_t)0x7d26, (q15_t)0x7d25,\n  (q15_t)0x7d23, (q15_t)0x7d22, (q15_t)0x7d21, (q15_t)0x7d1f, (q15_t)0x7d1e, (q15_t)0x7d1d, (q15_t)0x7d1b, (q15_t)0x7d1a,\n  (q15_t)0x7d19, (q15_t)0x7d17, (q15_t)0x7d16, (q15_t)0x7d15, (q15_t)0x7d13, (q15_t)0x7d12, (q15_t)0x7d11, (q15_t)0x7d0f,\n  (q15_t)0x7d0e, (q15_t)0x7d0d, (q15_t)0x7d0b, (q15_t)0x7d0a, (q15_t)0x7d09, (q15_t)0x7d07, (q15_t)0x7d06, (q15_t)0x7d05,\n  (q15_t)0x7d03, (q15_t)0x7d02, (q15_t)0x7d01, (q15_t)0x7cff, (q15_t)0x7cfe, (q15_t)0x7cfd, (q15_t)0x7cfb, (q15_t)0x7cfa,\n  (q15_t)0x7cf9, (q15_t)0x7cf7, (q15_t)0x7cf6, (q15_t)0x7cf4, (q15_t)0x7cf3, (q15_t)0x7cf2, (q15_t)0x7cf0, (q15_t)0x7cef,\n  (q15_t)0x7cee, (q15_t)0x7cec, (q15_t)0x7ceb, (q15_t)0x7ce9, (q15_t)0x7ce8, (q15_t)0x7ce7, (q15_t)0x7ce5, (q15_t)0x7ce4,\n  (q15_t)0x7ce3, (q15_t)0x7ce1, (q15_t)0x7ce0, (q15_t)0x7cde, (q15_t)0x7cdd, (q15_t)0x7cdc, (q15_t)0x7cda, (q15_t)0x7cd9,\n  (q15_t)0x7cd8, (q15_t)0x7cd6, (q15_t)0x7cd5, (q15_t)0x7cd3, (q15_t)0x7cd2, (q15_t)0x7cd1, (q15_t)0x7ccf, (q15_t)0x7cce,\n  (q15_t)0x7ccc, (q15_t)0x7ccb, (q15_t)0x7cca, (q15_t)0x7cc8, (q15_t)0x7cc7, (q15_t)0x7cc5, (q15_t)0x7cc4, (q15_t)0x7cc3,\n  (q15_t)0x7cc1, (q15_t)0x7cc0, (q15_t)0x7cbe, (q15_t)0x7cbd, (q15_t)0x7cbc, (q15_t)0x7cba, (q15_t)0x7cb9, (q15_t)0x7cb7,\n  (q15_t)0x7cb6, (q15_t)0x7cb5, (q15_t)0x7cb3, (q15_t)0x7cb2, (q15_t)0x7cb0, (q15_t)0x7caf, (q15_t)0x7cad, (q15_t)0x7cac,\n  (q15_t)0x7cab, (q15_t)0x7ca9, (q15_t)0x7ca8, (q15_t)0x7ca6, (q15_t)0x7ca5, (q15_t)0x7ca3, (q15_t)0x7ca2, (q15_t)0x7ca1,\n  (q15_t)0x7c9f, (q15_t)0x7c9e, (q15_t)0x7c9c, (q15_t)0x7c9b, (q15_t)0x7c99, (q15_t)0x7c98, (q15_t)0x7c97, (q15_t)0x7c95,\n  (q15_t)0x7c94, (q15_t)0x7c92, (q15_t)0x7c91, (q15_t)0x7c8f, (q15_t)0x7c8e, (q15_t)0x7c8c, (q15_t)0x7c8b, (q15_t)0x7c8a,\n  (q15_t)0x7c88, (q15_t)0x7c87, (q15_t)0x7c85, (q15_t)0x7c84, (q15_t)0x7c82, (q15_t)0x7c81, (q15_t)0x7c7f, (q15_t)0x7c7e,\n  (q15_t)0x7c7c, (q15_t)0x7c7b, (q15_t)0x7c79, (q15_t)0x7c78, (q15_t)0x7c77, (q15_t)0x7c75, (q15_t)0x7c74, (q15_t)0x7c72,\n  (q15_t)0x7c71, (q15_t)0x7c6f, (q15_t)0x7c6e, (q15_t)0x7c6c, (q15_t)0x7c6b, (q15_t)0x7c69, (q15_t)0x7c68, (q15_t)0x7c66,\n  (q15_t)0x7c65, (q15_t)0x7c63, (q15_t)0x7c62, (q15_t)0x7c60, (q15_t)0x7c5f, (q15_t)0x7c5d, (q15_t)0x7c5c, (q15_t)0x7c5a,\n  (q15_t)0x7c59, (q15_t)0x7c58, (q15_t)0x7c56, (q15_t)0x7c55, (q15_t)0x7c53, (q15_t)0x7c52, (q15_t)0x7c50, (q15_t)0x7c4f,\n  (q15_t)0x7c4d, (q15_t)0x7c4c, (q15_t)0x7c4a, (q15_t)0x7c49, (q15_t)0x7c47, (q15_t)0x7c46, (q15_t)0x7c44, (q15_t)0x7c43,\n  (q15_t)0x7c41, (q15_t)0x7c3f, (q15_t)0x7c3e, (q15_t)0x7c3c, (q15_t)0x7c3b, (q15_t)0x7c39, (q15_t)0x7c38, (q15_t)0x7c36,\n  (q15_t)0x7c35, (q15_t)0x7c33, (q15_t)0x7c32, (q15_t)0x7c30, (q15_t)0x7c2f, (q15_t)0x7c2d, (q15_t)0x7c2c, (q15_t)0x7c2a,\n  (q15_t)0x7c29, (q15_t)0x7c27, (q15_t)0x7c26, (q15_t)0x7c24, (q15_t)0x7c23, (q15_t)0x7c21, (q15_t)0x7c20, (q15_t)0x7c1e,\n  (q15_t)0x7c1c, (q15_t)0x7c1b, (q15_t)0x7c19, (q15_t)0x7c18, (q15_t)0x7c16, (q15_t)0x7c15, (q15_t)0x7c13, (q15_t)0x7c12,\n  (q15_t)0x7c10, (q15_t)0x7c0f, (q15_t)0x7c0d, (q15_t)0x7c0b, (q15_t)0x7c0a, (q15_t)0x7c08, (q15_t)0x7c07, (q15_t)0x7c05,\n  (q15_t)0x7c04, (q15_t)0x7c02, (q15_t)0x7c01, (q15_t)0x7bff, (q15_t)0x7bfd, (q15_t)0x7bfc, (q15_t)0x7bfa, (q15_t)0x7bf9,\n  (q15_t)0x7bf7, (q15_t)0x7bf6, (q15_t)0x7bf4, (q15_t)0x7bf3, (q15_t)0x7bf1, (q15_t)0x7bef, (q15_t)0x7bee, (q15_t)0x7bec,\n  (q15_t)0x7beb, (q15_t)0x7be9, (q15_t)0x7be8, (q15_t)0x7be6, (q15_t)0x7be4, (q15_t)0x7be3, (q15_t)0x7be1, (q15_t)0x7be0,\n  (q15_t)0x7bde, (q15_t)0x7bdc, (q15_t)0x7bdb, (q15_t)0x7bd9, (q15_t)0x7bd8, (q15_t)0x7bd6, (q15_t)0x7bd5, (q15_t)0x7bd3,\n  (q15_t)0x7bd1, (q15_t)0x7bd0, (q15_t)0x7bce, (q15_t)0x7bcd, (q15_t)0x7bcb, (q15_t)0x7bc9, (q15_t)0x7bc8, (q15_t)0x7bc6,\n  (q15_t)0x7bc5, (q15_t)0x7bc3, (q15_t)0x7bc1, (q15_t)0x7bc0, (q15_t)0x7bbe, (q15_t)0x7bbd, (q15_t)0x7bbb, (q15_t)0x7bb9,\n  (q15_t)0x7bb8, (q15_t)0x7bb6, (q15_t)0x7bb5, (q15_t)0x7bb3, (q15_t)0x7bb1, (q15_t)0x7bb0, (q15_t)0x7bae, (q15_t)0x7bac,\n  (q15_t)0x7bab, (q15_t)0x7ba9, (q15_t)0x7ba8, (q15_t)0x7ba6, (q15_t)0x7ba4, (q15_t)0x7ba3, (q15_t)0x7ba1, (q15_t)0x7b9f,\n  (q15_t)0x7b9e, (q15_t)0x7b9c, (q15_t)0x7b9b, (q15_t)0x7b99, (q15_t)0x7b97, (q15_t)0x7b96, (q15_t)0x7b94, (q15_t)0x7b92,\n  (q15_t)0x7b91, (q15_t)0x7b8f, (q15_t)0x7b8d, (q15_t)0x7b8c, (q15_t)0x7b8a, (q15_t)0x7b89, (q15_t)0x7b87, (q15_t)0x7b85,\n  (q15_t)0x7b84, (q15_t)0x7b82, (q15_t)0x7b80, (q15_t)0x7b7f, (q15_t)0x7b7d, (q15_t)0x7b7b, (q15_t)0x7b7a, (q15_t)0x7b78,\n  (q15_t)0x7b76, (q15_t)0x7b75, (q15_t)0x7b73, (q15_t)0x7b71, (q15_t)0x7b70, (q15_t)0x7b6e, (q15_t)0x7b6c, (q15_t)0x7b6b,\n  (q15_t)0x7b69, (q15_t)0x7b67, (q15_t)0x7b66, (q15_t)0x7b64, (q15_t)0x7b62, (q15_t)0x7b61, (q15_t)0x7b5f, (q15_t)0x7b5d,\n  (q15_t)0x7b5c, (q15_t)0x7b5a, (q15_t)0x7b58, (q15_t)0x7b57, (q15_t)0x7b55, (q15_t)0x7b53, (q15_t)0x7b52, (q15_t)0x7b50,\n  (q15_t)0x7b4e, (q15_t)0x7b4d, (q15_t)0x7b4b, (q15_t)0x7b49, (q15_t)0x7b47, (q15_t)0x7b46, (q15_t)0x7b44, (q15_t)0x7b42,\n  (q15_t)0x7b41, (q15_t)0x7b3f, (q15_t)0x7b3d, (q15_t)0x7b3c, (q15_t)0x7b3a, (q15_t)0x7b38, (q15_t)0x7b37, (q15_t)0x7b35,\n  (q15_t)0x7b33, (q15_t)0x7b31, (q15_t)0x7b30, (q15_t)0x7b2e, (q15_t)0x7b2c, (q15_t)0x7b2b, (q15_t)0x7b29, (q15_t)0x7b27,\n  (q15_t)0x7b25, (q15_t)0x7b24, (q15_t)0x7b22, (q15_t)0x7b20, (q15_t)0x7b1f, (q15_t)0x7b1d, (q15_t)0x7b1b, (q15_t)0x7b19,\n  (q15_t)0x7b18, (q15_t)0x7b16, (q15_t)0x7b14, (q15_t)0x7b13, (q15_t)0x7b11, (q15_t)0x7b0f, (q15_t)0x7b0d, (q15_t)0x7b0c,\n  (q15_t)0x7b0a, (q15_t)0x7b08, (q15_t)0x7b06, (q15_t)0x7b05, (q15_t)0x7b03, (q15_t)0x7b01, (q15_t)0x7aff, (q15_t)0x7afe,\n  (q15_t)0x7afc, (q15_t)0x7afa, (q15_t)0x7af8, (q15_t)0x7af7, (q15_t)0x7af5, (q15_t)0x7af3, (q15_t)0x7af2, (q15_t)0x7af0,\n  (q15_t)0x7aee, (q15_t)0x7aec, (q15_t)0x7aeb, (q15_t)0x7ae9, (q15_t)0x7ae7, (q15_t)0x7ae5, (q15_t)0x7ae3, (q15_t)0x7ae2,\n  (q15_t)0x7ae0, (q15_t)0x7ade, (q15_t)0x7adc, (q15_t)0x7adb, (q15_t)0x7ad9, (q15_t)0x7ad7, (q15_t)0x7ad5, (q15_t)0x7ad4,\n  (q15_t)0x7ad2, (q15_t)0x7ad0, (q15_t)0x7ace, (q15_t)0x7acd, (q15_t)0x7acb, (q15_t)0x7ac9, (q15_t)0x7ac7, (q15_t)0x7ac5,\n  (q15_t)0x7ac4, (q15_t)0x7ac2, (q15_t)0x7ac0, (q15_t)0x7abe, (q15_t)0x7abd, (q15_t)0x7abb, (q15_t)0x7ab9, (q15_t)0x7ab7,\n  (q15_t)0x7ab5, (q15_t)0x7ab4, (q15_t)0x7ab2, (q15_t)0x7ab0, (q15_t)0x7aae, (q15_t)0x7aac, (q15_t)0x7aab, (q15_t)0x7aa9,\n  (q15_t)0x7aa7, (q15_t)0x7aa5, (q15_t)0x7aa3, (q15_t)0x7aa2, (q15_t)0x7aa0, (q15_t)0x7a9e, (q15_t)0x7a9c, (q15_t)0x7a9a,\n  (q15_t)0x7a99, (q15_t)0x7a97, (q15_t)0x7a95, (q15_t)0x7a93, (q15_t)0x7a91, (q15_t)0x7a90, (q15_t)0x7a8e, (q15_t)0x7a8c,\n  (q15_t)0x7a8a, (q15_t)0x7a88, (q15_t)0x7a87, (q15_t)0x7a85, (q15_t)0x7a83, (q15_t)0x7a81, (q15_t)0x7a7f, (q15_t)0x7a7d,\n  (q15_t)0x7a7c, (q15_t)0x7a7a, (q15_t)0x7a78, (q15_t)0x7a76, (q15_t)0x7a74, (q15_t)0x7a72, (q15_t)0x7a71, (q15_t)0x7a6f,\n  (q15_t)0x7a6d, (q15_t)0x7a6b, (q15_t)0x7a69, (q15_t)0x7a67, (q15_t)0x7a66, (q15_t)0x7a64, (q15_t)0x7a62, (q15_t)0x7a60,\n  (q15_t)0x7a5e, (q15_t)0x7a5c, (q15_t)0x7a5b, (q15_t)0x7a59, (q15_t)0x7a57, (q15_t)0x7a55, (q15_t)0x7a53, (q15_t)0x7a51,\n  (q15_t)0x7a4f, (q15_t)0x7a4e, (q15_t)0x7a4c, (q15_t)0x7a4a, (q15_t)0x7a48, (q15_t)0x7a46, (q15_t)0x7a44, (q15_t)0x7a42,\n  (q15_t)0x7a41, (q15_t)0x7a3f, (q15_t)0x7a3d, (q15_t)0x7a3b, (q15_t)0x7a39, (q15_t)0x7a37, (q15_t)0x7a35, (q15_t)0x7a34,\n  (q15_t)0x7a32, (q15_t)0x7a30, (q15_t)0x7a2e, (q15_t)0x7a2c, (q15_t)0x7a2a, (q15_t)0x7a28, (q15_t)0x7a26, (q15_t)0x7a25,\n  (q15_t)0x7a23, (q15_t)0x7a21, (q15_t)0x7a1f, (q15_t)0x7a1d, (q15_t)0x7a1b, (q15_t)0x7a19, (q15_t)0x7a17, (q15_t)0x7a16,\n  (q15_t)0x7a14, (q15_t)0x7a12, (q15_t)0x7a10, (q15_t)0x7a0e, (q15_t)0x7a0c, (q15_t)0x7a0a, (q15_t)0x7a08, (q15_t)0x7a06,\n  (q15_t)0x7a04, (q15_t)0x7a03, (q15_t)0x7a01, (q15_t)0x79ff, (q15_t)0x79fd, (q15_t)0x79fb, (q15_t)0x79f9, (q15_t)0x79f7,\n  (q15_t)0x79f5, (q15_t)0x79f3, (q15_t)0x79f1, (q15_t)0x79f0, (q15_t)0x79ee, (q15_t)0x79ec, (q15_t)0x79ea, (q15_t)0x79e8,\n  (q15_t)0x79e6, (q15_t)0x79e4, (q15_t)0x79e2, (q15_t)0x79e0, (q15_t)0x79de, (q15_t)0x79dc, (q15_t)0x79da, (q15_t)0x79d9,\n  (q15_t)0x79d7, (q15_t)0x79d5, (q15_t)0x79d3, (q15_t)0x79d1, (q15_t)0x79cf, (q15_t)0x79cd, (q15_t)0x79cb, (q15_t)0x79c9,\n  (q15_t)0x79c7, (q15_t)0x79c5, (q15_t)0x79c3, (q15_t)0x79c1, (q15_t)0x79bf, (q15_t)0x79bd, (q15_t)0x79bc, (q15_t)0x79ba,\n  (q15_t)0x79b8, (q15_t)0x79b6, (q15_t)0x79b4, (q15_t)0x79b2, (q15_t)0x79b0, (q15_t)0x79ae, (q15_t)0x79ac, (q15_t)0x79aa,\n  (q15_t)0x79a8, (q15_t)0x79a6, (q15_t)0x79a4, (q15_t)0x79a2, (q15_t)0x79a0, (q15_t)0x799e, (q15_t)0x799c, (q15_t)0x799a,\n  (q15_t)0x7998, (q15_t)0x7996, (q15_t)0x7994, (q15_t)0x7992, (q15_t)0x7991, (q15_t)0x798f, (q15_t)0x798d, (q15_t)0x798b,\n  (q15_t)0x7989, (q15_t)0x7987, (q15_t)0x7985, (q15_t)0x7983, (q15_t)0x7981, (q15_t)0x797f, (q15_t)0x797d, (q15_t)0x797b,\n  (q15_t)0x7979, (q15_t)0x7977, (q15_t)0x7975, (q15_t)0x7973, (q15_t)0x7971, (q15_t)0x796f, (q15_t)0x796d, (q15_t)0x796b,\n  (q15_t)0x7969, (q15_t)0x7967, (q15_t)0x7965, (q15_t)0x7963, (q15_t)0x7961, (q15_t)0x795f, (q15_t)0x795d, (q15_t)0x795b,\n  (q15_t)0x7959, (q15_t)0x7957, (q15_t)0x7955, (q15_t)0x7953, (q15_t)0x7951, (q15_t)0x794f, (q15_t)0x794d, (q15_t)0x794b,\n  (q15_t)0x7949, (q15_t)0x7947, (q15_t)0x7945, (q15_t)0x7943, (q15_t)0x7941, (q15_t)0x793f, (q15_t)0x793d, (q15_t)0x793b,\n  (q15_t)0x7939, (q15_t)0x7937, (q15_t)0x7935, (q15_t)0x7933, (q15_t)0x7931, (q15_t)0x792f, (q15_t)0x792d, (q15_t)0x792b,\n  (q15_t)0x7929, (q15_t)0x7927, (q15_t)0x7925, (q15_t)0x7923, (q15_t)0x7921, (q15_t)0x791f, (q15_t)0x791d, (q15_t)0x791a,\n  (q15_t)0x7918, (q15_t)0x7916, (q15_t)0x7914, (q15_t)0x7912, (q15_t)0x7910, (q15_t)0x790e, (q15_t)0x790c, (q15_t)0x790a,\n  (q15_t)0x7908, (q15_t)0x7906, (q15_t)0x7904, (q15_t)0x7902, (q15_t)0x7900, (q15_t)0x78fe, (q15_t)0x78fc, (q15_t)0x78fa,\n  (q15_t)0x78f8, (q15_t)0x78f6, (q15_t)0x78f4, (q15_t)0x78f2, (q15_t)0x78f0, (q15_t)0x78ed, (q15_t)0x78eb, (q15_t)0x78e9,\n  (q15_t)0x78e7, (q15_t)0x78e5, (q15_t)0x78e3, (q15_t)0x78e1, (q15_t)0x78df, (q15_t)0x78dd, (q15_t)0x78db, (q15_t)0x78d9,\n  (q15_t)0x78d7, (q15_t)0x78d5, (q15_t)0x78d3, (q15_t)0x78d1, (q15_t)0x78ce, (q15_t)0x78cc, (q15_t)0x78ca, (q15_t)0x78c8,\n  (q15_t)0x78c6, (q15_t)0x78c4, (q15_t)0x78c2, (q15_t)0x78c0, (q15_t)0x78be, (q15_t)0x78bc, (q15_t)0x78ba, (q15_t)0x78b8,\n  (q15_t)0x78b5, (q15_t)0x78b3, (q15_t)0x78b1, (q15_t)0x78af, (q15_t)0x78ad, (q15_t)0x78ab, (q15_t)0x78a9, (q15_t)0x78a7,\n  (q15_t)0x78a5, (q15_t)0x78a3, (q15_t)0x78a0, (q15_t)0x789e, (q15_t)0x789c, (q15_t)0x789a, (q15_t)0x7898, (q15_t)0x7896,\n  (q15_t)0x7894, (q15_t)0x7892, (q15_t)0x7890, (q15_t)0x788e, (q15_t)0x788b, (q15_t)0x7889, (q15_t)0x7887, (q15_t)0x7885,\n  (q15_t)0x7883, (q15_t)0x7881, (q15_t)0x787f, (q15_t)0x787d, (q15_t)0x787a, (q15_t)0x7878, (q15_t)0x7876, (q15_t)0x7874,\n  (q15_t)0x7872, (q15_t)0x7870, (q15_t)0x786e, (q15_t)0x786c, (q15_t)0x7869, (q15_t)0x7867, (q15_t)0x7865, (q15_t)0x7863,\n  (q15_t)0x7861, (q15_t)0x785f, (q15_t)0x785d, (q15_t)0x785b, (q15_t)0x7858, (q15_t)0x7856, (q15_t)0x7854, (q15_t)0x7852,\n  (q15_t)0x7850, (q15_t)0x784e, (q15_t)0x784c, (q15_t)0x7849, (q15_t)0x7847, (q15_t)0x7845, (q15_t)0x7843, (q15_t)0x7841,\n  (q15_t)0x783f, (q15_t)0x783c, (q15_t)0x783a, (q15_t)0x7838, (q15_t)0x7836, (q15_t)0x7834, (q15_t)0x7832, (q15_t)0x7830,\n  (q15_t)0x782d, (q15_t)0x782b, (q15_t)0x7829, (q15_t)0x7827, (q15_t)0x7825, (q15_t)0x7823, (q15_t)0x7820, (q15_t)0x781e,\n  (q15_t)0x781c, (q15_t)0x781a, (q15_t)0x7818, (q15_t)0x7816, (q15_t)0x7813, (q15_t)0x7811, (q15_t)0x780f, (q15_t)0x780d,\n  (q15_t)0x780b, (q15_t)0x7808, (q15_t)0x7806, (q15_t)0x7804, (q15_t)0x7802, (q15_t)0x7800, (q15_t)0x77fe, (q15_t)0x77fb,\n  (q15_t)0x77f9, (q15_t)0x77f7, (q15_t)0x77f5, (q15_t)0x77f3, (q15_t)0x77f0, (q15_t)0x77ee, (q15_t)0x77ec, (q15_t)0x77ea,\n  (q15_t)0x77e8, (q15_t)0x77e5, (q15_t)0x77e3, (q15_t)0x77e1, (q15_t)0x77df, (q15_t)0x77dd, (q15_t)0x77da, (q15_t)0x77d8,\n  (q15_t)0x77d6, (q15_t)0x77d4, (q15_t)0x77d2, (q15_t)0x77cf, (q15_t)0x77cd, (q15_t)0x77cb, (q15_t)0x77c9, (q15_t)0x77c6,\n  (q15_t)0x77c4, (q15_t)0x77c2, (q15_t)0x77c0, (q15_t)0x77be, (q15_t)0x77bb, (q15_t)0x77b9, (q15_t)0x77b7, (q15_t)0x77b5,\n  (q15_t)0x77b2, (q15_t)0x77b0, (q15_t)0x77ae, (q15_t)0x77ac, (q15_t)0x77aa, (q15_t)0x77a7, (q15_t)0x77a5, (q15_t)0x77a3,\n  (q15_t)0x77a1, (q15_t)0x779e, (q15_t)0x779c, (q15_t)0x779a, (q15_t)0x7798, (q15_t)0x7795, (q15_t)0x7793, (q15_t)0x7791,\n  (q15_t)0x778f, (q15_t)0x778c, (q15_t)0x778a, (q15_t)0x7788, (q15_t)0x7786, (q15_t)0x7783, (q15_t)0x7781, (q15_t)0x777f,\n  (q15_t)0x777d, (q15_t)0x777a, (q15_t)0x7778, (q15_t)0x7776, (q15_t)0x7774, (q15_t)0x7771, (q15_t)0x776f, (q15_t)0x776d,\n  (q15_t)0x776b, (q15_t)0x7768, (q15_t)0x7766, (q15_t)0x7764, (q15_t)0x7762, (q15_t)0x775f, (q15_t)0x775d, (q15_t)0x775b,\n  (q15_t)0x7759, (q15_t)0x7756, (q15_t)0x7754, (q15_t)0x7752, (q15_t)0x774f, (q15_t)0x774d, (q15_t)0x774b, (q15_t)0x7749,\n  (q15_t)0x7746, (q15_t)0x7744, (q15_t)0x7742, (q15_t)0x773f, (q15_t)0x773d, (q15_t)0x773b, (q15_t)0x7739, (q15_t)0x7736,\n  (q15_t)0x7734, (q15_t)0x7732, (q15_t)0x772f, (q15_t)0x772d, (q15_t)0x772b, (q15_t)0x7729, (q15_t)0x7726, (q15_t)0x7724,\n  (q15_t)0x7722, (q15_t)0x771f, (q15_t)0x771d, (q15_t)0x771b, (q15_t)0x7719, (q15_t)0x7716, (q15_t)0x7714, (q15_t)0x7712,\n  (q15_t)0x770f, (q15_t)0x770d, (q15_t)0x770b, (q15_t)0x7708, (q15_t)0x7706, (q15_t)0x7704, (q15_t)0x7701, (q15_t)0x76ff,\n  (q15_t)0x76fd, (q15_t)0x76fa, (q15_t)0x76f8, (q15_t)0x76f6, (q15_t)0x76f4, (q15_t)0x76f1, (q15_t)0x76ef, (q15_t)0x76ed,\n  (q15_t)0x76ea, (q15_t)0x76e8, (q15_t)0x76e6, (q15_t)0x76e3, (q15_t)0x76e1, (q15_t)0x76df, (q15_t)0x76dc, (q15_t)0x76da,\n  (q15_t)0x76d8, (q15_t)0x76d5, (q15_t)0x76d3, (q15_t)0x76d1, (q15_t)0x76ce, (q15_t)0x76cc, (q15_t)0x76ca, (q15_t)0x76c7,\n  (q15_t)0x76c5, (q15_t)0x76c3, (q15_t)0x76c0, (q15_t)0x76be, (q15_t)0x76bc, (q15_t)0x76b9, (q15_t)0x76b7, (q15_t)0x76b4,\n  (q15_t)0x76b2, (q15_t)0x76b0, (q15_t)0x76ad, (q15_t)0x76ab, (q15_t)0x76a9, (q15_t)0x76a6, (q15_t)0x76a4, (q15_t)0x76a2,\n  (q15_t)0x769f, (q15_t)0x769d, (q15_t)0x769b, (q15_t)0x7698, (q15_t)0x7696, (q15_t)0x7693, (q15_t)0x7691, (q15_t)0x768f,\n  (q15_t)0x768c, (q15_t)0x768a, (q15_t)0x7688, (q15_t)0x7685, (q15_t)0x7683, (q15_t)0x7681, (q15_t)0x767e, (q15_t)0x767c,\n  (q15_t)0x7679, (q15_t)0x7677, (q15_t)0x7675, (q15_t)0x7672, (q15_t)0x7670, (q15_t)0x766d, (q15_t)0x766b, (q15_t)0x7669,\n  (q15_t)0x7666, (q15_t)0x7664, (q15_t)0x7662, (q15_t)0x765f, (q15_t)0x765d, (q15_t)0x765a, (q15_t)0x7658, (q15_t)0x7656,\n  (q15_t)0x7653, (q15_t)0x7651, (q15_t)0x764e, (q15_t)0x764c, (q15_t)0x764a, (q15_t)0x7647, (q15_t)0x7645, (q15_t)0x7642,\n  (q15_t)0x7640, (q15_t)0x763e, (q15_t)0x763b, (q15_t)0x7639, (q15_t)0x7636, (q15_t)0x7634, (q15_t)0x7632, (q15_t)0x762f,\n  (q15_t)0x762d, (q15_t)0x762a, (q15_t)0x7628, (q15_t)0x7625, (q15_t)0x7623, (q15_t)0x7621, (q15_t)0x761e, (q15_t)0x761c,\n  (q15_t)0x7619, (q15_t)0x7617, (q15_t)0x7615, (q15_t)0x7612, (q15_t)0x7610, (q15_t)0x760d, (q15_t)0x760b, (q15_t)0x7608,\n  (q15_t)0x7606, (q15_t)0x7604, (q15_t)0x7601, (q15_t)0x75ff, (q15_t)0x75fc, (q15_t)0x75fa, (q15_t)0x75f7, (q15_t)0x75f5,\n  (q15_t)0x75f2, (q15_t)0x75f0, (q15_t)0x75ee, (q15_t)0x75eb, (q15_t)0x75e9, (q15_t)0x75e6, (q15_t)0x75e4, (q15_t)0x75e1,\n  (q15_t)0x75df, (q15_t)0x75dc, (q15_t)0x75da, (q15_t)0x75d8, (q15_t)0x75d5, (q15_t)0x75d3, (q15_t)0x75d0, (q15_t)0x75ce,\n  (q15_t)0x75cb, (q15_t)0x75c9, (q15_t)0x75c6, (q15_t)0x75c4, (q15_t)0x75c1, (q15_t)0x75bf, (q15_t)0x75bc, (q15_t)0x75ba,\n  (q15_t)0x75b8, (q15_t)0x75b5, (q15_t)0x75b3, (q15_t)0x75b0, (q15_t)0x75ae, (q15_t)0x75ab, (q15_t)0x75a9, (q15_t)0x75a6,\n  (q15_t)0x75a4, (q15_t)0x75a1, (q15_t)0x759f, (q15_t)0x759c, (q15_t)0x759a, (q15_t)0x7597, (q15_t)0x7595, (q15_t)0x7592,\n  (q15_t)0x7590, (q15_t)0x758d, (q15_t)0x758b, (q15_t)0x7588, (q15_t)0x7586, (q15_t)0x7584, (q15_t)0x7581, (q15_t)0x757f,\n  (q15_t)0x757c, (q15_t)0x757a, (q15_t)0x7577, (q15_t)0x7575, (q15_t)0x7572, (q15_t)0x7570, (q15_t)0x756d, (q15_t)0x756b,\n  (q15_t)0x7568, (q15_t)0x7566, (q15_t)0x7563, (q15_t)0x7561, (q15_t)0x755e, (q15_t)0x755c, (q15_t)0x7559, (q15_t)0x7556,\n  (q15_t)0x7554, (q15_t)0x7551, (q15_t)0x754f, (q15_t)0x754c, (q15_t)0x754a, (q15_t)0x7547, (q15_t)0x7545, (q15_t)0x7542,\n  (q15_t)0x7540, (q15_t)0x753d, (q15_t)0x753b, (q15_t)0x7538, (q15_t)0x7536, (q15_t)0x7533, (q15_t)0x7531, (q15_t)0x752e,\n  (q15_t)0x752c, (q15_t)0x7529, (q15_t)0x7527, (q15_t)0x7524, (q15_t)0x7522, (q15_t)0x751f, (q15_t)0x751c, (q15_t)0x751a,\n  (q15_t)0x7517, (q15_t)0x7515, (q15_t)0x7512, (q15_t)0x7510, (q15_t)0x750d, (q15_t)0x750b, (q15_t)0x7508, (q15_t)0x7506,\n  (q15_t)0x7503, (q15_t)0x7501, (q15_t)0x74fe, (q15_t)0x74fb, (q15_t)0x74f9, (q15_t)0x74f6, (q15_t)0x74f4, (q15_t)0x74f1,\n  (q15_t)0x74ef, (q15_t)0x74ec, (q15_t)0x74ea, (q15_t)0x74e7, (q15_t)0x74e4, (q15_t)0x74e2, (q15_t)0x74df, (q15_t)0x74dd,\n  (q15_t)0x74da, (q15_t)0x74d8, (q15_t)0x74d5, (q15_t)0x74d2, (q15_t)0x74d0, (q15_t)0x74cd, (q15_t)0x74cb, (q15_t)0x74c8,\n  (q15_t)0x74c6, (q15_t)0x74c3, (q15_t)0x74c0, (q15_t)0x74be, (q15_t)0x74bb, (q15_t)0x74b9, (q15_t)0x74b6, (q15_t)0x74b4,\n  (q15_t)0x74b1, (q15_t)0x74ae, (q15_t)0x74ac, (q15_t)0x74a9, (q15_t)0x74a7, (q15_t)0x74a4, (q15_t)0x74a1, (q15_t)0x749f,\n  (q15_t)0x749c, (q15_t)0x749a, (q15_t)0x7497, (q15_t)0x7495, (q15_t)0x7492, (q15_t)0x748f, (q15_t)0x748d, (q15_t)0x748a,\n  (q15_t)0x7488, (q15_t)0x7485, (q15_t)0x7482, (q15_t)0x7480, (q15_t)0x747d, (q15_t)0x747b, (q15_t)0x7478, (q15_t)0x7475,\n  (q15_t)0x7473, (q15_t)0x7470, (q15_t)0x746d, (q15_t)0x746b, (q15_t)0x7468, (q15_t)0x7466, (q15_t)0x7463, (q15_t)0x7460,\n  (q15_t)0x745e, (q15_t)0x745b, (q15_t)0x7459, (q15_t)0x7456, (q15_t)0x7453, (q15_t)0x7451, (q15_t)0x744e, (q15_t)0x744b,\n  (q15_t)0x7449, (q15_t)0x7446, (q15_t)0x7444, (q15_t)0x7441, (q15_t)0x743e, (q15_t)0x743c, (q15_t)0x7439, (q15_t)0x7436,\n  (q15_t)0x7434, (q15_t)0x7431, (q15_t)0x742f, (q15_t)0x742c, (q15_t)0x7429, (q15_t)0x7427, (q15_t)0x7424, (q15_t)0x7421,\n  (q15_t)0x741f, (q15_t)0x741c, (q15_t)0x7419, (q15_t)0x7417, (q15_t)0x7414, (q15_t)0x7411, (q15_t)0x740f, (q15_t)0x740c,\n  (q15_t)0x740a, (q15_t)0x7407, (q15_t)0x7404, (q15_t)0x7402, (q15_t)0x73ff, (q15_t)0x73fc, (q15_t)0x73fa, (q15_t)0x73f7,\n  (q15_t)0x73f4, (q15_t)0x73f2, (q15_t)0x73ef, (q15_t)0x73ec, (q15_t)0x73ea, (q15_t)0x73e7, (q15_t)0x73e4, (q15_t)0x73e2,\n  (q15_t)0x73df, (q15_t)0x73dc, (q15_t)0x73da, (q15_t)0x73d7, (q15_t)0x73d4, (q15_t)0x73d2, (q15_t)0x73cf, (q15_t)0x73cc,\n  (q15_t)0x73ca, (q15_t)0x73c7, (q15_t)0x73c4, (q15_t)0x73c1, (q15_t)0x73bf, (q15_t)0x73bc, (q15_t)0x73b9, (q15_t)0x73b7,\n  (q15_t)0x73b4, (q15_t)0x73b1, (q15_t)0x73af, (q15_t)0x73ac, (q15_t)0x73a9, (q15_t)0x73a7, (q15_t)0x73a4, (q15_t)0x73a1,\n  (q15_t)0x739f, (q15_t)0x739c, (q15_t)0x7399, (q15_t)0x7396, (q15_t)0x7394, (q15_t)0x7391, (q15_t)0x738e, (q15_t)0x738c,\n  (q15_t)0x7389, (q15_t)0x7386, (q15_t)0x7384, (q15_t)0x7381, (q15_t)0x737e, (q15_t)0x737b, (q15_t)0x7379, (q15_t)0x7376,\n  (q15_t)0x7373, (q15_t)0x7371, (q15_t)0x736e, (q15_t)0x736b, (q15_t)0x7368, (q15_t)0x7366, (q15_t)0x7363, (q15_t)0x7360,\n  (q15_t)0x735e, (q15_t)0x735b, (q15_t)0x7358, (q15_t)0x7355, (q15_t)0x7353, (q15_t)0x7350, (q15_t)0x734d, (q15_t)0x734a,\n  (q15_t)0x7348, (q15_t)0x7345, (q15_t)0x7342, (q15_t)0x7340, (q15_t)0x733d, (q15_t)0x733a, (q15_t)0x7337, (q15_t)0x7335,\n  (q15_t)0x7332, (q15_t)0x732f, (q15_t)0x732c, (q15_t)0x732a, (q15_t)0x7327, (q15_t)0x7324, (q15_t)0x7321, (q15_t)0x731f,\n  (q15_t)0x731c, (q15_t)0x7319, (q15_t)0x7316, (q15_t)0x7314, (q15_t)0x7311, (q15_t)0x730e, (q15_t)0x730b, (q15_t)0x7309,\n  (q15_t)0x7306, (q15_t)0x7303, (q15_t)0x7300, (q15_t)0x72fe, (q15_t)0x72fb, (q15_t)0x72f8, (q15_t)0x72f5, (q15_t)0x72f3,\n  (q15_t)0x72f0, (q15_t)0x72ed, (q15_t)0x72ea, (q15_t)0x72e8, (q15_t)0x72e5, (q15_t)0x72e2, (q15_t)0x72df, (q15_t)0x72dc,\n  (q15_t)0x72da, (q15_t)0x72d7, (q15_t)0x72d4, (q15_t)0x72d1, (q15_t)0x72cf, (q15_t)0x72cc, (q15_t)0x72c9, (q15_t)0x72c6,\n  (q15_t)0x72c3, (q15_t)0x72c1, (q15_t)0x72be, (q15_t)0x72bb, (q15_t)0x72b8, (q15_t)0x72b5, (q15_t)0x72b3, (q15_t)0x72b0,\n  (q15_t)0x72ad, (q15_t)0x72aa, (q15_t)0x72a8, (q15_t)0x72a5, (q15_t)0x72a2, (q15_t)0x729f, (q15_t)0x729c, (q15_t)0x729a,\n  (q15_t)0x7297, (q15_t)0x7294, (q15_t)0x7291, (q15_t)0x728e, (q15_t)0x728c, (q15_t)0x7289, (q15_t)0x7286, (q15_t)0x7283,\n  (q15_t)0x7280, (q15_t)0x727e, (q15_t)0x727b, (q15_t)0x7278, (q15_t)0x7275, (q15_t)0x7272, (q15_t)0x726f, (q15_t)0x726d,\n  (q15_t)0x726a, (q15_t)0x7267, (q15_t)0x7264, (q15_t)0x7261, (q15_t)0x725f, (q15_t)0x725c, (q15_t)0x7259, (q15_t)0x7256,\n  (q15_t)0x7253, (q15_t)0x7250, (q15_t)0x724e, (q15_t)0x724b, (q15_t)0x7248, (q15_t)0x7245, (q15_t)0x7242, (q15_t)0x723f,\n  (q15_t)0x723d, (q15_t)0x723a, (q15_t)0x7237, (q15_t)0x7234, (q15_t)0x7231, (q15_t)0x722e, (q15_t)0x722c, (q15_t)0x7229,\n  (q15_t)0x7226, (q15_t)0x7223, (q15_t)0x7220, (q15_t)0x721d, (q15_t)0x721b, (q15_t)0x7218, (q15_t)0x7215, (q15_t)0x7212,\n  (q15_t)0x720f, (q15_t)0x720c, (q15_t)0x7209, (q15_t)0x7207, (q15_t)0x7204, (q15_t)0x7201, (q15_t)0x71fe, (q15_t)0x71fb,\n  (q15_t)0x71f8, (q15_t)0x71f5, (q15_t)0x71f3, (q15_t)0x71f0, (q15_t)0x71ed, (q15_t)0x71ea, (q15_t)0x71e7, (q15_t)0x71e4,\n  (q15_t)0x71e1, (q15_t)0x71df, (q15_t)0x71dc, (q15_t)0x71d9, (q15_t)0x71d6, (q15_t)0x71d3, (q15_t)0x71d0, (q15_t)0x71cd,\n  (q15_t)0x71ca, (q15_t)0x71c8, (q15_t)0x71c5, (q15_t)0x71c2, (q15_t)0x71bf, (q15_t)0x71bc, (q15_t)0x71b9, (q15_t)0x71b6,\n  (q15_t)0x71b3, (q15_t)0x71b0, (q15_t)0x71ae, (q15_t)0x71ab, (q15_t)0x71a8, (q15_t)0x71a5, (q15_t)0x71a2, (q15_t)0x719f,\n  (q15_t)0x719c, (q15_t)0x7199, (q15_t)0x7196, (q15_t)0x7194, (q15_t)0x7191, (q15_t)0x718e, (q15_t)0x718b, (q15_t)0x7188,\n  (q15_t)0x7185, (q15_t)0x7182, (q15_t)0x717f, (q15_t)0x717c, (q15_t)0x7179, (q15_t)0x7177, (q15_t)0x7174, (q15_t)0x7171,\n  (q15_t)0x716e, (q15_t)0x716b, (q15_t)0x7168, (q15_t)0x7165, (q15_t)0x7162, (q15_t)0x715f, (q15_t)0x715c, (q15_t)0x7159,\n  (q15_t)0x7156, (q15_t)0x7154, (q15_t)0x7151, (q15_t)0x714e, (q15_t)0x714b, (q15_t)0x7148, (q15_t)0x7145, (q15_t)0x7142,\n  (q15_t)0x713f, (q15_t)0x713c, (q15_t)0x7139, (q15_t)0x7136, (q15_t)0x7133, (q15_t)0x7130, (q15_t)0x712d, (q15_t)0x712b,\n  (q15_t)0x7128, (q15_t)0x7125, (q15_t)0x7122, (q15_t)0x711f, (q15_t)0x711c, (q15_t)0x7119, (q15_t)0x7116, (q15_t)0x7113,\n  (q15_t)0x7110, (q15_t)0x710d, (q15_t)0x710a, (q15_t)0x7107, (q15_t)0x7104, (q15_t)0x7101, (q15_t)0x70fe, (q15_t)0x70fb,\n  (q15_t)0x70f8, (q15_t)0x70f6, (q15_t)0x70f3, (q15_t)0x70f0, (q15_t)0x70ed, (q15_t)0x70ea, (q15_t)0x70e7, (q15_t)0x70e4,\n  (q15_t)0x70e1, (q15_t)0x70de, (q15_t)0x70db, (q15_t)0x70d8, (q15_t)0x70d5, (q15_t)0x70d2, (q15_t)0x70cf, (q15_t)0x70cc,\n  (q15_t)0x70c9, (q15_t)0x70c6, (q15_t)0x70c3, (q15_t)0x70c0, (q15_t)0x70bd, (q15_t)0x70ba, (q15_t)0x70b7, (q15_t)0x70b4,\n  (q15_t)0x70b1, (q15_t)0x70ae, (q15_t)0x70ab, (q15_t)0x70a8, (q15_t)0x70a5, (q15_t)0x70a2, (q15_t)0x709f, (q15_t)0x709c,\n  (q15_t)0x7099, (q15_t)0x7096, (q15_t)0x7093, (q15_t)0x7090, (q15_t)0x708d, (q15_t)0x708a, (q15_t)0x7087, (q15_t)0x7084,\n  (q15_t)0x7081, (q15_t)0x707e, (q15_t)0x707b, (q15_t)0x7078, (q15_t)0x7075, (q15_t)0x7072, (q15_t)0x706f, (q15_t)0x706c,\n  (q15_t)0x7069, (q15_t)0x7066, (q15_t)0x7063, (q15_t)0x7060, (q15_t)0x705d, (q15_t)0x705a, (q15_t)0x7057, (q15_t)0x7054,\n  (q15_t)0x7051, (q15_t)0x704e, (q15_t)0x704b, (q15_t)0x7048, (q15_t)0x7045, (q15_t)0x7042, (q15_t)0x703f, (q15_t)0x703c,\n  (q15_t)0x7039, (q15_t)0x7036, (q15_t)0x7033, (q15_t)0x7030, (q15_t)0x702d, (q15_t)0x702a, (q15_t)0x7027, (q15_t)0x7024,\n  (q15_t)0x7021, (q15_t)0x701e, (q15_t)0x701b, (q15_t)0x7018, (q15_t)0x7015, (q15_t)0x7012, (q15_t)0x700f, (q15_t)0x700c,\n  (q15_t)0x7009, (q15_t)0x7006, (q15_t)0x7003, (q15_t)0x7000, (q15_t)0x6ffd, (q15_t)0x6ffa, (q15_t)0x6ff7, (q15_t)0x6ff3,\n  (q15_t)0x6ff0, (q15_t)0x6fed, (q15_t)0x6fea, (q15_t)0x6fe7, (q15_t)0x6fe4, (q15_t)0x6fe1, (q15_t)0x6fde, (q15_t)0x6fdb,\n  (q15_t)0x6fd8, (q15_t)0x6fd5, (q15_t)0x6fd2, (q15_t)0x6fcf, (q15_t)0x6fcc, (q15_t)0x6fc9, (q15_t)0x6fc6, (q15_t)0x6fc3,\n  (q15_t)0x6fc0, (q15_t)0x6fbc, (q15_t)0x6fb9, (q15_t)0x6fb6, (q15_t)0x6fb3, (q15_t)0x6fb0, (q15_t)0x6fad, (q15_t)0x6faa,\n  (q15_t)0x6fa7, (q15_t)0x6fa4, (q15_t)0x6fa1, (q15_t)0x6f9e, (q15_t)0x6f9b, (q15_t)0x6f98, (q15_t)0x6f95, (q15_t)0x6f91,\n  (q15_t)0x6f8e, (q15_t)0x6f8b, (q15_t)0x6f88, (q15_t)0x6f85, (q15_t)0x6f82, (q15_t)0x6f7f, (q15_t)0x6f7c, (q15_t)0x6f79,\n  (q15_t)0x6f76, (q15_t)0x6f73, (q15_t)0x6f70, (q15_t)0x6f6c, (q15_t)0x6f69, (q15_t)0x6f66, (q15_t)0x6f63, (q15_t)0x6f60,\n  (q15_t)0x6f5d, (q15_t)0x6f5a, (q15_t)0x6f57, (q15_t)0x6f54, (q15_t)0x6f51, (q15_t)0x6f4d, (q15_t)0x6f4a, (q15_t)0x6f47,\n  (q15_t)0x6f44, (q15_t)0x6f41, (q15_t)0x6f3e, (q15_t)0x6f3b, (q15_t)0x6f38, (q15_t)0x6f35, (q15_t)0x6f31, (q15_t)0x6f2e,\n  (q15_t)0x6f2b, (q15_t)0x6f28, (q15_t)0x6f25, (q15_t)0x6f22, (q15_t)0x6f1f, (q15_t)0x6f1c, (q15_t)0x6f19, (q15_t)0x6f15,\n  (q15_t)0x6f12, (q15_t)0x6f0f, (q15_t)0x6f0c, (q15_t)0x6f09, (q15_t)0x6f06, (q15_t)0x6f03, (q15_t)0x6f00, (q15_t)0x6efc,\n  (q15_t)0x6ef9, (q15_t)0x6ef6, (q15_t)0x6ef3, (q15_t)0x6ef0, (q15_t)0x6eed, (q15_t)0x6eea, (q15_t)0x6ee7, (q15_t)0x6ee3,\n  (q15_t)0x6ee0, (q15_t)0x6edd, (q15_t)0x6eda, (q15_t)0x6ed7, (q15_t)0x6ed4, (q15_t)0x6ed1, (q15_t)0x6ecd, (q15_t)0x6eca,\n  (q15_t)0x6ec7, (q15_t)0x6ec4, (q15_t)0x6ec1, (q15_t)0x6ebe, (q15_t)0x6eba, (q15_t)0x6eb7, (q15_t)0x6eb4, (q15_t)0x6eb1,\n  (q15_t)0x6eae, (q15_t)0x6eab, (q15_t)0x6ea8, (q15_t)0x6ea4, (q15_t)0x6ea1, (q15_t)0x6e9e, (q15_t)0x6e9b, (q15_t)0x6e98,\n  (q15_t)0x6e95, (q15_t)0x6e91, (q15_t)0x6e8e, (q15_t)0x6e8b, (q15_t)0x6e88, (q15_t)0x6e85, (q15_t)0x6e82, (q15_t)0x6e7e,\n  (q15_t)0x6e7b, (q15_t)0x6e78, (q15_t)0x6e75, (q15_t)0x6e72, (q15_t)0x6e6f, (q15_t)0x6e6b, (q15_t)0x6e68, (q15_t)0x6e65,\n  (q15_t)0x6e62, (q15_t)0x6e5f, (q15_t)0x6e5b, (q15_t)0x6e58, (q15_t)0x6e55, (q15_t)0x6e52, (q15_t)0x6e4f, (q15_t)0x6e4c,\n  (q15_t)0x6e48, (q15_t)0x6e45, (q15_t)0x6e42, (q15_t)0x6e3f, (q15_t)0x6e3c, (q15_t)0x6e38, (q15_t)0x6e35, (q15_t)0x6e32,\n  (q15_t)0x6e2f, (q15_t)0x6e2c, (q15_t)0x6e28, (q15_t)0x6e25, (q15_t)0x6e22, (q15_t)0x6e1f, (q15_t)0x6e1c, (q15_t)0x6e18,\n  (q15_t)0x6e15, (q15_t)0x6e12, (q15_t)0x6e0f, (q15_t)0x6e0c, (q15_t)0x6e08, (q15_t)0x6e05, (q15_t)0x6e02, (q15_t)0x6dff,\n  (q15_t)0x6dfb, (q15_t)0x6df8, (q15_t)0x6df5, (q15_t)0x6df2, (q15_t)0x6def, (q15_t)0x6deb, (q15_t)0x6de8, (q15_t)0x6de5,\n  (q15_t)0x6de2, (q15_t)0x6ddf, (q15_t)0x6ddb, (q15_t)0x6dd8, (q15_t)0x6dd5, (q15_t)0x6dd2, (q15_t)0x6dce, (q15_t)0x6dcb,\n  (q15_t)0x6dc8, (q15_t)0x6dc5, (q15_t)0x6dc1, (q15_t)0x6dbe, (q15_t)0x6dbb, (q15_t)0x6db8, (q15_t)0x6db5, (q15_t)0x6db1,\n  (q15_t)0x6dae, (q15_t)0x6dab, (q15_t)0x6da8, (q15_t)0x6da4, (q15_t)0x6da1, (q15_t)0x6d9e, (q15_t)0x6d9b, (q15_t)0x6d97,\n  (q15_t)0x6d94, (q15_t)0x6d91, (q15_t)0x6d8e, (q15_t)0x6d8a, (q15_t)0x6d87, (q15_t)0x6d84, (q15_t)0x6d81, (q15_t)0x6d7d,\n  (q15_t)0x6d7a, (q15_t)0x6d77, (q15_t)0x6d74, (q15_t)0x6d70, (q15_t)0x6d6d, (q15_t)0x6d6a, (q15_t)0x6d67, (q15_t)0x6d63,\n  (q15_t)0x6d60, (q15_t)0x6d5d, (q15_t)0x6d59, (q15_t)0x6d56, (q15_t)0x6d53, (q15_t)0x6d50, (q15_t)0x6d4c, (q15_t)0x6d49,\n  (q15_t)0x6d46, (q15_t)0x6d43, (q15_t)0x6d3f, (q15_t)0x6d3c, (q15_t)0x6d39, (q15_t)0x6d36, (q15_t)0x6d32, (q15_t)0x6d2f,\n  (q15_t)0x6d2c, (q15_t)0x6d28, (q15_t)0x6d25, (q15_t)0x6d22, (q15_t)0x6d1f, (q15_t)0x6d1b, (q15_t)0x6d18, (q15_t)0x6d15,\n  (q15_t)0x6d11, (q15_t)0x6d0e, (q15_t)0x6d0b, (q15_t)0x6d08, (q15_t)0x6d04, (q15_t)0x6d01, (q15_t)0x6cfe, (q15_t)0x6cfa,\n  (q15_t)0x6cf7, (q15_t)0x6cf4, (q15_t)0x6cf0, (q15_t)0x6ced, (q15_t)0x6cea, (q15_t)0x6ce7, (q15_t)0x6ce3, (q15_t)0x6ce0,\n  (q15_t)0x6cdd, (q15_t)0x6cd9, (q15_t)0x6cd6, (q15_t)0x6cd3, (q15_t)0x6ccf, (q15_t)0x6ccc, (q15_t)0x6cc9, (q15_t)0x6cc5,\n  (q15_t)0x6cc2, (q15_t)0x6cbf, (q15_t)0x6cbc, (q15_t)0x6cb8, (q15_t)0x6cb5, (q15_t)0x6cb2, (q15_t)0x6cae, (q15_t)0x6cab,\n  (q15_t)0x6ca8, (q15_t)0x6ca4, (q15_t)0x6ca1, (q15_t)0x6c9e, (q15_t)0x6c9a, (q15_t)0x6c97, (q15_t)0x6c94, (q15_t)0x6c90,\n  (q15_t)0x6c8d, (q15_t)0x6c8a, (q15_t)0x6c86, (q15_t)0x6c83, (q15_t)0x6c80, (q15_t)0x6c7c, (q15_t)0x6c79, (q15_t)0x6c76,\n  (q15_t)0x6c72, (q15_t)0x6c6f, (q15_t)0x6c6c, (q15_t)0x6c68, (q15_t)0x6c65, (q15_t)0x6c62, (q15_t)0x6c5e, (q15_t)0x6c5b,\n  (q15_t)0x6c58, (q15_t)0x6c54, (q15_t)0x6c51, (q15_t)0x6c4e, (q15_t)0x6c4a, (q15_t)0x6c47, (q15_t)0x6c44, (q15_t)0x6c40,\n  (q15_t)0x6c3d, (q15_t)0x6c39, (q15_t)0x6c36, (q15_t)0x6c33, (q15_t)0x6c2f, (q15_t)0x6c2c, (q15_t)0x6c29, (q15_t)0x6c25,\n  (q15_t)0x6c22, (q15_t)0x6c1f, (q15_t)0x6c1b, (q15_t)0x6c18, (q15_t)0x6c15, (q15_t)0x6c11, (q15_t)0x6c0e, (q15_t)0x6c0a,\n  (q15_t)0x6c07, (q15_t)0x6c04, (q15_t)0x6c00, (q15_t)0x6bfd, (q15_t)0x6bfa, (q15_t)0x6bf6, (q15_t)0x6bf3, (q15_t)0x6bef,\n  (q15_t)0x6bec, (q15_t)0x6be9, (q15_t)0x6be5, (q15_t)0x6be2, (q15_t)0x6bdf, (q15_t)0x6bdb, (q15_t)0x6bd8, (q15_t)0x6bd4,\n  (q15_t)0x6bd1, (q15_t)0x6bce, (q15_t)0x6bca, (q15_t)0x6bc7, (q15_t)0x6bc3, (q15_t)0x6bc0, (q15_t)0x6bbd, (q15_t)0x6bb9,\n  (q15_t)0x6bb6, (q15_t)0x6bb2, (q15_t)0x6baf, (q15_t)0x6bac, (q15_t)0x6ba8, (q15_t)0x6ba5, (q15_t)0x6ba1, (q15_t)0x6b9e,\n  (q15_t)0x6b9b, (q15_t)0x6b97, (q15_t)0x6b94, (q15_t)0x6b90, (q15_t)0x6b8d, (q15_t)0x6b8a, (q15_t)0x6b86, (q15_t)0x6b83,\n  (q15_t)0x6b7f, (q15_t)0x6b7c, (q15_t)0x6b79, (q15_t)0x6b75, (q15_t)0x6b72, (q15_t)0x6b6e, (q15_t)0x6b6b, (q15_t)0x6b68,\n  (q15_t)0x6b64, (q15_t)0x6b61, (q15_t)0x6b5d, (q15_t)0x6b5a, (q15_t)0x6b56, (q15_t)0x6b53, (q15_t)0x6b50, (q15_t)0x6b4c,\n  (q15_t)0x6b49, (q15_t)0x6b45, (q15_t)0x6b42, (q15_t)0x6b3e, (q15_t)0x6b3b, (q15_t)0x6b38, (q15_t)0x6b34, (q15_t)0x6b31,\n  (q15_t)0x6b2d, (q15_t)0x6b2a, (q15_t)0x6b26, (q15_t)0x6b23, (q15_t)0x6b20, (q15_t)0x6b1c, (q15_t)0x6b19, (q15_t)0x6b15,\n  (q15_t)0x6b12, (q15_t)0x6b0e, (q15_t)0x6b0b, (q15_t)0x6b07, (q15_t)0x6b04, (q15_t)0x6b01, (q15_t)0x6afd, (q15_t)0x6afa,\n  (q15_t)0x6af6, (q15_t)0x6af3, (q15_t)0x6aef, (q15_t)0x6aec, (q15_t)0x6ae8, (q15_t)0x6ae5, (q15_t)0x6ae1, (q15_t)0x6ade,\n  (q15_t)0x6adb, (q15_t)0x6ad7, (q15_t)0x6ad4, (q15_t)0x6ad0, (q15_t)0x6acd, (q15_t)0x6ac9, (q15_t)0x6ac6, (q15_t)0x6ac2,\n  (q15_t)0x6abf, (q15_t)0x6abb, (q15_t)0x6ab8, (q15_t)0x6ab4, (q15_t)0x6ab1, (q15_t)0x6aae, (q15_t)0x6aaa, (q15_t)0x6aa7,\n  (q15_t)0x6aa3, (q15_t)0x6aa0, (q15_t)0x6a9c, (q15_t)0x6a99, (q15_t)0x6a95, (q15_t)0x6a92, (q15_t)0x6a8e, (q15_t)0x6a8b,\n  (q15_t)0x6a87, (q15_t)0x6a84, (q15_t)0x6a80, (q15_t)0x6a7d, (q15_t)0x6a79, (q15_t)0x6a76, (q15_t)0x6a72, (q15_t)0x6a6f,\n  (q15_t)0x6a6b, (q15_t)0x6a68, (q15_t)0x6a64, (q15_t)0x6a61, (q15_t)0x6a5d, (q15_t)0x6a5a, (q15_t)0x6a56, (q15_t)0x6a53,\n  (q15_t)0x6a4f, (q15_t)0x6a4c, (q15_t)0x6a48, (q15_t)0x6a45, (q15_t)0x6a41, (q15_t)0x6a3e, (q15_t)0x6a3a, (q15_t)0x6a37,\n  (q15_t)0x6a33, (q15_t)0x6a30, (q15_t)0x6a2c, (q15_t)0x6a29, (q15_t)0x6a25, (q15_t)0x6a22, (q15_t)0x6a1e, (q15_t)0x6a1b,\n  (q15_t)0x6a17, (q15_t)0x6a14, (q15_t)0x6a10, (q15_t)0x6a0d, (q15_t)0x6a09, (q15_t)0x6a06, (q15_t)0x6a02, (q15_t)0x69ff,\n  (q15_t)0x69fb, (q15_t)0x69f8, (q15_t)0x69f4, (q15_t)0x69f1, (q15_t)0x69ed, (q15_t)0x69e9, (q15_t)0x69e6, (q15_t)0x69e2,\n  (q15_t)0x69df, (q15_t)0x69db, (q15_t)0x69d8, (q15_t)0x69d4, (q15_t)0x69d1, (q15_t)0x69cd, (q15_t)0x69ca, (q15_t)0x69c6,\n  (q15_t)0x69c3, (q15_t)0x69bf, (q15_t)0x69bc, (q15_t)0x69b8, (q15_t)0x69b4, (q15_t)0x69b1, (q15_t)0x69ad, (q15_t)0x69aa,\n  (q15_t)0x69a6, (q15_t)0x69a3, (q15_t)0x699f, (q15_t)0x699c, (q15_t)0x6998, (q15_t)0x6995, (q15_t)0x6991, (q15_t)0x698d,\n  (q15_t)0x698a, (q15_t)0x6986, (q15_t)0x6983, (q15_t)0x697f, (q15_t)0x697c, (q15_t)0x6978, (q15_t)0x6975, (q15_t)0x6971,\n  (q15_t)0x696d, (q15_t)0x696a, (q15_t)0x6966, (q15_t)0x6963, (q15_t)0x695f, (q15_t)0x695c, (q15_t)0x6958, (q15_t)0x6954,\n  (q15_t)0x6951, (q15_t)0x694d, (q15_t)0x694a, (q15_t)0x6946, (q15_t)0x6943, (q15_t)0x693f, (q15_t)0x693b, (q15_t)0x6938,\n  (q15_t)0x6934, (q15_t)0x6931, (q15_t)0x692d, (q15_t)0x692a, (q15_t)0x6926, (q15_t)0x6922, (q15_t)0x691f, (q15_t)0x691b,\n  (q15_t)0x6918, (q15_t)0x6914, (q15_t)0x6910, (q15_t)0x690d, (q15_t)0x6909, (q15_t)0x6906, (q15_t)0x6902, (q15_t)0x68fe,\n  (q15_t)0x68fb, (q15_t)0x68f7, (q15_t)0x68f4, (q15_t)0x68f0, (q15_t)0x68ec, (q15_t)0x68e9, (q15_t)0x68e5, (q15_t)0x68e2,\n  (q15_t)0x68de, (q15_t)0x68da, (q15_t)0x68d7, (q15_t)0x68d3, (q15_t)0x68d0, (q15_t)0x68cc, (q15_t)0x68c8, (q15_t)0x68c5,\n  (q15_t)0x68c1, (q15_t)0x68be, (q15_t)0x68ba, (q15_t)0x68b6, (q15_t)0x68b3, (q15_t)0x68af, (q15_t)0x68ac, (q15_t)0x68a8,\n  (q15_t)0x68a4, (q15_t)0x68a1, (q15_t)0x689d, (q15_t)0x6899, (q15_t)0x6896, (q15_t)0x6892, (q15_t)0x688f, (q15_t)0x688b,\n  (q15_t)0x6887, (q15_t)0x6884, (q15_t)0x6880, (q15_t)0x687c, (q15_t)0x6879, (q15_t)0x6875, (q15_t)0x6872, (q15_t)0x686e,\n  (q15_t)0x686a, (q15_t)0x6867, (q15_t)0x6863, (q15_t)0x685f, (q15_t)0x685c, (q15_t)0x6858, (q15_t)0x6854, (q15_t)0x6851,\n  (q15_t)0x684d, (q15_t)0x684a, (q15_t)0x6846, (q15_t)0x6842, (q15_t)0x683f, (q15_t)0x683b, (q15_t)0x6837, (q15_t)0x6834,\n  (q15_t)0x6830, (q15_t)0x682c, (q15_t)0x6829, (q15_t)0x6825, (q15_t)0x6821, (q15_t)0x681e, (q15_t)0x681a, (q15_t)0x6816,\n  (q15_t)0x6813, (q15_t)0x680f, (q15_t)0x680b, (q15_t)0x6808, (q15_t)0x6804, (q15_t)0x6800, (q15_t)0x67fd, (q15_t)0x67f9,\n  (q15_t)0x67f5, (q15_t)0x67f2, (q15_t)0x67ee, (q15_t)0x67ea, (q15_t)0x67e7, (q15_t)0x67e3, (q15_t)0x67df, (q15_t)0x67dc,\n  (q15_t)0x67d8, (q15_t)0x67d4, (q15_t)0x67d1, (q15_t)0x67cd, (q15_t)0x67c9, (q15_t)0x67c6, (q15_t)0x67c2, (q15_t)0x67be,\n  (q15_t)0x67bb, (q15_t)0x67b7, (q15_t)0x67b3, (q15_t)0x67b0, (q15_t)0x67ac, (q15_t)0x67a8, (q15_t)0x67a5, (q15_t)0x67a1,\n  (q15_t)0x679d, (q15_t)0x679a, (q15_t)0x6796, (q15_t)0x6792, (q15_t)0x678e, (q15_t)0x678b, (q15_t)0x6787, (q15_t)0x6783,\n  (q15_t)0x6780, (q15_t)0x677c, (q15_t)0x6778, (q15_t)0x6775, (q15_t)0x6771, (q15_t)0x676d, (q15_t)0x6769, (q15_t)0x6766,\n  (q15_t)0x6762, (q15_t)0x675e, (q15_t)0x675b, (q15_t)0x6757, (q15_t)0x6753, (q15_t)0x6750, (q15_t)0x674c, (q15_t)0x6748,\n  (q15_t)0x6744, (q15_t)0x6741, (q15_t)0x673d, (q15_t)0x6739, (q15_t)0x6736, (q15_t)0x6732, (q15_t)0x672e, (q15_t)0x672a,\n  (q15_t)0x6727, (q15_t)0x6723, (q15_t)0x671f, (q15_t)0x671c, (q15_t)0x6718, (q15_t)0x6714, (q15_t)0x6710, (q15_t)0x670d,\n  (q15_t)0x6709, (q15_t)0x6705, (q15_t)0x6701, (q15_t)0x66fe, (q15_t)0x66fa, (q15_t)0x66f6, (q15_t)0x66f3, (q15_t)0x66ef,\n  (q15_t)0x66eb, (q15_t)0x66e7, (q15_t)0x66e4, (q15_t)0x66e0, (q15_t)0x66dc, (q15_t)0x66d8, (q15_t)0x66d5, (q15_t)0x66d1,\n  (q15_t)0x66cd, (q15_t)0x66c9, (q15_t)0x66c6, (q15_t)0x66c2, (q15_t)0x66be, (q15_t)0x66ba, (q15_t)0x66b7, (q15_t)0x66b3,\n  (q15_t)0x66af, (q15_t)0x66ab, (q15_t)0x66a8, (q15_t)0x66a4, (q15_t)0x66a0, (q15_t)0x669c, (q15_t)0x6699, (q15_t)0x6695,\n  (q15_t)0x6691, (q15_t)0x668d, (q15_t)0x668a, (q15_t)0x6686, (q15_t)0x6682, (q15_t)0x667e, (q15_t)0x667b, (q15_t)0x6677,\n  (q15_t)0x6673, (q15_t)0x666f, (q15_t)0x666b, (q15_t)0x6668, (q15_t)0x6664, (q15_t)0x6660, (q15_t)0x665c, (q15_t)0x6659,\n  (q15_t)0x6655, (q15_t)0x6651, (q15_t)0x664d, (q15_t)0x664a, (q15_t)0x6646, (q15_t)0x6642, (q15_t)0x663e, (q15_t)0x663a,\n  (q15_t)0x6637, (q15_t)0x6633, (q15_t)0x662f, (q15_t)0x662b, (q15_t)0x6627, (q15_t)0x6624, (q15_t)0x6620, (q15_t)0x661c,\n  (q15_t)0x6618, (q15_t)0x6615, (q15_t)0x6611, (q15_t)0x660d, (q15_t)0x6609, (q15_t)0x6605, (q15_t)0x6602, (q15_t)0x65fe,\n  (q15_t)0x65fa, (q15_t)0x65f6, (q15_t)0x65f2, (q15_t)0x65ef, (q15_t)0x65eb, (q15_t)0x65e7, (q15_t)0x65e3, (q15_t)0x65df,\n  (q15_t)0x65dc, (q15_t)0x65d8, (q15_t)0x65d4, (q15_t)0x65d0, (q15_t)0x65cc, (q15_t)0x65c9, (q15_t)0x65c5, (q15_t)0x65c1,\n  (q15_t)0x65bd, (q15_t)0x65b9, (q15_t)0x65b5, (q15_t)0x65b2, (q15_t)0x65ae, (q15_t)0x65aa, (q15_t)0x65a6, (q15_t)0x65a2,\n  (q15_t)0x659f, (q15_t)0x659b, (q15_t)0x6597, (q15_t)0x6593, (q15_t)0x658f, (q15_t)0x658b, (q15_t)0x6588, (q15_t)0x6584,\n  (q15_t)0x6580, (q15_t)0x657c, (q15_t)0x6578, (q15_t)0x6574, (q15_t)0x6571, (q15_t)0x656d, (q15_t)0x6569, (q15_t)0x6565,\n  (q15_t)0x6561, (q15_t)0x655d, (q15_t)0x655a, (q15_t)0x6556, (q15_t)0x6552, (q15_t)0x654e, (q15_t)0x654a, (q15_t)0x6546,\n  (q15_t)0x6543, (q15_t)0x653f, (q15_t)0x653b, (q15_t)0x6537, (q15_t)0x6533, (q15_t)0x652f, (q15_t)0x652c, (q15_t)0x6528,\n  (q15_t)0x6524, (q15_t)0x6520, (q15_t)0x651c, (q15_t)0x6518, (q15_t)0x6514, (q15_t)0x6511, (q15_t)0x650d, (q15_t)0x6509,\n  (q15_t)0x6505, (q15_t)0x6501, (q15_t)0x64fd, (q15_t)0x64f9, (q15_t)0x64f6, (q15_t)0x64f2, (q15_t)0x64ee, (q15_t)0x64ea,\n  (q15_t)0x64e6, (q15_t)0x64e2, (q15_t)0x64de, (q15_t)0x64db, (q15_t)0x64d7, (q15_t)0x64d3, (q15_t)0x64cf, (q15_t)0x64cb,\n  (q15_t)0x64c7, (q15_t)0x64c3, (q15_t)0x64bf, (q15_t)0x64bc, (q15_t)0x64b8, (q15_t)0x64b4, (q15_t)0x64b0, (q15_t)0x64ac,\n  (q15_t)0x64a8, (q15_t)0x64a4, (q15_t)0x64a0, (q15_t)0x649c, (q15_t)0x6499, (q15_t)0x6495, (q15_t)0x6491, (q15_t)0x648d,\n  (q15_t)0x6489, (q15_t)0x6485, (q15_t)0x6481, (q15_t)0x647d, (q15_t)0x6479, (q15_t)0x6476, (q15_t)0x6472, (q15_t)0x646e,\n  (q15_t)0x646a, (q15_t)0x6466, (q15_t)0x6462, (q15_t)0x645e, (q15_t)0x645a, (q15_t)0x6456, (q15_t)0x6453, (q15_t)0x644f,\n  (q15_t)0x644b, (q15_t)0x6447, (q15_t)0x6443, (q15_t)0x643f, (q15_t)0x643b, (q15_t)0x6437, (q15_t)0x6433, (q15_t)0x642f,\n  (q15_t)0x642b, (q15_t)0x6428, (q15_t)0x6424, (q15_t)0x6420, (q15_t)0x641c, (q15_t)0x6418, (q15_t)0x6414, (q15_t)0x6410,\n  (q15_t)0x640c, (q15_t)0x6408, (q15_t)0x6404, (q15_t)0x6400, (q15_t)0x63fc, (q15_t)0x63f9, (q15_t)0x63f5, (q15_t)0x63f1,\n  (q15_t)0x63ed, (q15_t)0x63e9, (q15_t)0x63e5, (q15_t)0x63e1, (q15_t)0x63dd, (q15_t)0x63d9, (q15_t)0x63d5, (q15_t)0x63d1,\n  (q15_t)0x63cd, (q15_t)0x63c9, (q15_t)0x63c5, (q15_t)0x63c1, (q15_t)0x63be, (q15_t)0x63ba, (q15_t)0x63b6, (q15_t)0x63b2,\n  (q15_t)0x63ae, (q15_t)0x63aa, (q15_t)0x63a6, (q15_t)0x63a2, (q15_t)0x639e, (q15_t)0x639a, (q15_t)0x6396, (q15_t)0x6392,\n  (q15_t)0x638e, (q15_t)0x638a, (q15_t)0x6386, (q15_t)0x6382, (q15_t)0x637e, (q15_t)0x637a, (q15_t)0x6377, (q15_t)0x6373,\n  (q15_t)0x636f, (q15_t)0x636b, (q15_t)0x6367, (q15_t)0x6363, (q15_t)0x635f, (q15_t)0x635b, (q15_t)0x6357, (q15_t)0x6353,\n  (q15_t)0x634f, (q15_t)0x634b, (q15_t)0x6347, (q15_t)0x6343, (q15_t)0x633f, (q15_t)0x633b, (q15_t)0x6337, (q15_t)0x6333,\n  (q15_t)0x632f, (q15_t)0x632b, (q15_t)0x6327, (q15_t)0x6323, (q15_t)0x631f, (q15_t)0x631b, (q15_t)0x6317, (q15_t)0x6313,\n  (q15_t)0x630f, (q15_t)0x630b, (q15_t)0x6307, (q15_t)0x6303, (q15_t)0x62ff, (q15_t)0x62fb, (q15_t)0x62f7, (q15_t)0x62f3,\n  (q15_t)0x62f0, (q15_t)0x62ec, (q15_t)0x62e8, (q15_t)0x62e4, (q15_t)0x62e0, (q15_t)0x62dc, (q15_t)0x62d8, (q15_t)0x62d4,\n  (q15_t)0x62d0, (q15_t)0x62cc, (q15_t)0x62c8, (q15_t)0x62c4, (q15_t)0x62c0, (q15_t)0x62bc, (q15_t)0x62b8, (q15_t)0x62b4,\n  (q15_t)0x62b0, (q15_t)0x62ac, (q15_t)0x62a8, (q15_t)0x62a4, (q15_t)0x62a0, (q15_t)0x629c, (q15_t)0x6298, (q15_t)0x6294,\n  (q15_t)0x6290, (q15_t)0x628c, (q15_t)0x6288, (q15_t)0x6284, (q15_t)0x6280, (q15_t)0x627c, (q15_t)0x6278, (q15_t)0x6273,\n  (q15_t)0x626f, (q15_t)0x626b, (q15_t)0x6267, (q15_t)0x6263, (q15_t)0x625f, (q15_t)0x625b, (q15_t)0x6257, (q15_t)0x6253,\n  (q15_t)0x624f, (q15_t)0x624b, (q15_t)0x6247, (q15_t)0x6243, (q15_t)0x623f, (q15_t)0x623b, (q15_t)0x6237, (q15_t)0x6233,\n  (q15_t)0x622f, (q15_t)0x622b, (q15_t)0x6227, (q15_t)0x6223, (q15_t)0x621f, (q15_t)0x621b, (q15_t)0x6217, (q15_t)0x6213,\n  (q15_t)0x620f, (q15_t)0x620b, (q15_t)0x6207, (q15_t)0x6203, (q15_t)0x61ff, (q15_t)0x61fb, (q15_t)0x61f7, (q15_t)0x61f3,\n  (q15_t)0x61ee, (q15_t)0x61ea, (q15_t)0x61e6, (q15_t)0x61e2, (q15_t)0x61de, (q15_t)0x61da, (q15_t)0x61d6, (q15_t)0x61d2,\n  (q15_t)0x61ce, (q15_t)0x61ca, (q15_t)0x61c6, (q15_t)0x61c2, (q15_t)0x61be, (q15_t)0x61ba, (q15_t)0x61b6, (q15_t)0x61b2,\n  (q15_t)0x61ae, (q15_t)0x61aa, (q15_t)0x61a6, (q15_t)0x61a1, (q15_t)0x619d, (q15_t)0x6199, (q15_t)0x6195, (q15_t)0x6191,\n  (q15_t)0x618d, (q15_t)0x6189, (q15_t)0x6185, (q15_t)0x6181, (q15_t)0x617d, (q15_t)0x6179, (q15_t)0x6175, (q15_t)0x6171,\n  (q15_t)0x616d, (q15_t)0x6168, (q15_t)0x6164, (q15_t)0x6160, (q15_t)0x615c, (q15_t)0x6158, (q15_t)0x6154, (q15_t)0x6150,\n  (q15_t)0x614c, (q15_t)0x6148, (q15_t)0x6144, (q15_t)0x6140, (q15_t)0x613c, (q15_t)0x6137, (q15_t)0x6133, (q15_t)0x612f,\n  (q15_t)0x612b, (q15_t)0x6127, (q15_t)0x6123, (q15_t)0x611f, (q15_t)0x611b, (q15_t)0x6117, (q15_t)0x6113, (q15_t)0x610f,\n  (q15_t)0x610a, (q15_t)0x6106, (q15_t)0x6102, (q15_t)0x60fe, (q15_t)0x60fa, (q15_t)0x60f6, (q15_t)0x60f2, (q15_t)0x60ee,\n  (q15_t)0x60ea, (q15_t)0x60e6, (q15_t)0x60e1, (q15_t)0x60dd, (q15_t)0x60d9, (q15_t)0x60d5, (q15_t)0x60d1, (q15_t)0x60cd,\n  (q15_t)0x60c9, (q15_t)0x60c5, (q15_t)0x60c1, (q15_t)0x60bc, (q15_t)0x60b8, (q15_t)0x60b4, (q15_t)0x60b0, (q15_t)0x60ac,\n  (q15_t)0x60a8, (q15_t)0x60a4, (q15_t)0x60a0, (q15_t)0x609c, (q15_t)0x6097, (q15_t)0x6093, (q15_t)0x608f, (q15_t)0x608b,\n  (q15_t)0x6087, (q15_t)0x6083, (q15_t)0x607f, (q15_t)0x607b, (q15_t)0x6076, (q15_t)0x6072, (q15_t)0x606e, (q15_t)0x606a,\n  (q15_t)0x6066, (q15_t)0x6062, (q15_t)0x605e, (q15_t)0x6059, (q15_t)0x6055, (q15_t)0x6051, (q15_t)0x604d, (q15_t)0x6049,\n  (q15_t)0x6045, (q15_t)0x6041, (q15_t)0x603c, (q15_t)0x6038, (q15_t)0x6034, (q15_t)0x6030, (q15_t)0x602c, (q15_t)0x6028,\n  (q15_t)0x6024, (q15_t)0x601f, (q15_t)0x601b, (q15_t)0x6017, (q15_t)0x6013, (q15_t)0x600f, (q15_t)0x600b, (q15_t)0x6007,\n  (q15_t)0x6002, (q15_t)0x5ffe, (q15_t)0x5ffa, (q15_t)0x5ff6, (q15_t)0x5ff2, (q15_t)0x5fee, (q15_t)0x5fe9, (q15_t)0x5fe5,\n  (q15_t)0x5fe1, (q15_t)0x5fdd, (q15_t)0x5fd9, (q15_t)0x5fd5, (q15_t)0x5fd0, (q15_t)0x5fcc, (q15_t)0x5fc8, (q15_t)0x5fc4,\n  (q15_t)0x5fc0, (q15_t)0x5fbc, (q15_t)0x5fb7, (q15_t)0x5fb3, (q15_t)0x5faf, (q15_t)0x5fab, (q15_t)0x5fa7, (q15_t)0x5fa3,\n  (q15_t)0x5f9e, (q15_t)0x5f9a, (q15_t)0x5f96, (q15_t)0x5f92, (q15_t)0x5f8e, (q15_t)0x5f8a, (q15_t)0x5f85, (q15_t)0x5f81,\n  (q15_t)0x5f7d, (q15_t)0x5f79, (q15_t)0x5f75, (q15_t)0x5f70, (q15_t)0x5f6c, (q15_t)0x5f68, (q15_t)0x5f64, (q15_t)0x5f60,\n  (q15_t)0x5f5b, (q15_t)0x5f57, (q15_t)0x5f53, (q15_t)0x5f4f, (q15_t)0x5f4b, (q15_t)0x5f46, (q15_t)0x5f42, (q15_t)0x5f3e,\n  (q15_t)0x5f3a, (q15_t)0x5f36, (q15_t)0x5f31, (q15_t)0x5f2d, (q15_t)0x5f29, (q15_t)0x5f25, (q15_t)0x5f21, (q15_t)0x5f1c,\n  (q15_t)0x5f18, (q15_t)0x5f14, (q15_t)0x5f10, (q15_t)0x5f0c, (q15_t)0x5f07, (q15_t)0x5f03, (q15_t)0x5eff, (q15_t)0x5efb,\n  (q15_t)0x5ef7, (q15_t)0x5ef2, (q15_t)0x5eee, (q15_t)0x5eea, (q15_t)0x5ee6, (q15_t)0x5ee2, (q15_t)0x5edd, (q15_t)0x5ed9,\n  (q15_t)0x5ed5, (q15_t)0x5ed1, (q15_t)0x5ecc, (q15_t)0x5ec8, (q15_t)0x5ec4, (q15_t)0x5ec0, (q15_t)0x5ebc, (q15_t)0x5eb7,\n  (q15_t)0x5eb3, (q15_t)0x5eaf, (q15_t)0x5eab, (q15_t)0x5ea6, (q15_t)0x5ea2, (q15_t)0x5e9e, (q15_t)0x5e9a, (q15_t)0x5e95,\n  (q15_t)0x5e91, (q15_t)0x5e8d, (q15_t)0x5e89, (q15_t)0x5e85, (q15_t)0x5e80, (q15_t)0x5e7c, (q15_t)0x5e78, (q15_t)0x5e74,\n  (q15_t)0x5e6f, (q15_t)0x5e6b, (q15_t)0x5e67, (q15_t)0x5e63, (q15_t)0x5e5e, (q15_t)0x5e5a, (q15_t)0x5e56, (q15_t)0x5e52,\n  (q15_t)0x5e4d, (q15_t)0x5e49, (q15_t)0x5e45, (q15_t)0x5e41, (q15_t)0x5e3c, (q15_t)0x5e38, (q15_t)0x5e34, (q15_t)0x5e30,\n  (q15_t)0x5e2b, (q15_t)0x5e27, (q15_t)0x5e23, (q15_t)0x5e1f, (q15_t)0x5e1a, (q15_t)0x5e16, (q15_t)0x5e12, (q15_t)0x5e0e,\n  (q15_t)0x5e09, (q15_t)0x5e05, (q15_t)0x5e01, (q15_t)0x5dfd, (q15_t)0x5df8, (q15_t)0x5df4, (q15_t)0x5df0, (q15_t)0x5deb,\n  (q15_t)0x5de7, (q15_t)0x5de3, (q15_t)0x5ddf, (q15_t)0x5dda, (q15_t)0x5dd6, (q15_t)0x5dd2, (q15_t)0x5dce, (q15_t)0x5dc9,\n  (q15_t)0x5dc5, (q15_t)0x5dc1, (q15_t)0x5dbc, (q15_t)0x5db8, (q15_t)0x5db4, (q15_t)0x5db0, (q15_t)0x5dab, (q15_t)0x5da7,\n  (q15_t)0x5da3, (q15_t)0x5d9e, (q15_t)0x5d9a, (q15_t)0x5d96, (q15_t)0x5d92, (q15_t)0x5d8d, (q15_t)0x5d89, (q15_t)0x5d85,\n  (q15_t)0x5d80, (q15_t)0x5d7c, (q15_t)0x5d78, (q15_t)0x5d74, (q15_t)0x5d6f, (q15_t)0x5d6b, (q15_t)0x5d67, (q15_t)0x5d62,\n  (q15_t)0x5d5e, (q15_t)0x5d5a, (q15_t)0x5d55, (q15_t)0x5d51, (q15_t)0x5d4d, (q15_t)0x5d49, (q15_t)0x5d44, (q15_t)0x5d40,\n  (q15_t)0x5d3c, (q15_t)0x5d37, (q15_t)0x5d33, (q15_t)0x5d2f, (q15_t)0x5d2a, (q15_t)0x5d26, (q15_t)0x5d22, (q15_t)0x5d1e,\n  (q15_t)0x5d19, (q15_t)0x5d15, (q15_t)0x5d11, (q15_t)0x5d0c, (q15_t)0x5d08, (q15_t)0x5d04, (q15_t)0x5cff, (q15_t)0x5cfb,\n  (q15_t)0x5cf7, (q15_t)0x5cf2, (q15_t)0x5cee, (q15_t)0x5cea, (q15_t)0x5ce5, (q15_t)0x5ce1, (q15_t)0x5cdd, (q15_t)0x5cd8,\n  (q15_t)0x5cd4, (q15_t)0x5cd0, (q15_t)0x5ccb, (q15_t)0x5cc7, (q15_t)0x5cc3, (q15_t)0x5cbe, (q15_t)0x5cba, (q15_t)0x5cb6,\n  (q15_t)0x5cb1, (q15_t)0x5cad, (q15_t)0x5ca9, (q15_t)0x5ca4, (q15_t)0x5ca0, (q15_t)0x5c9c, (q15_t)0x5c97, (q15_t)0x5c93,\n  (q15_t)0x5c8f, (q15_t)0x5c8a, (q15_t)0x5c86, (q15_t)0x5c82, (q15_t)0x5c7d, (q15_t)0x5c79, (q15_t)0x5c75, (q15_t)0x5c70,\n  (q15_t)0x5c6c, (q15_t)0x5c68, (q15_t)0x5c63, (q15_t)0x5c5f, (q15_t)0x5c5b, (q15_t)0x5c56, (q15_t)0x5c52, (q15_t)0x5c4e,\n  (q15_t)0x5c49, (q15_t)0x5c45, (q15_t)0x5c41, (q15_t)0x5c3c, (q15_t)0x5c38, (q15_t)0x5c33, (q15_t)0x5c2f, (q15_t)0x5c2b,\n  (q15_t)0x5c26, (q15_t)0x5c22, (q15_t)0x5c1e, (q15_t)0x5c19, (q15_t)0x5c15, (q15_t)0x5c11, (q15_t)0x5c0c, (q15_t)0x5c08,\n  (q15_t)0x5c03, (q15_t)0x5bff, (q15_t)0x5bfb, (q15_t)0x5bf6, (q15_t)0x5bf2, (q15_t)0x5bee, (q15_t)0x5be9, (q15_t)0x5be5,\n  (q15_t)0x5be0, (q15_t)0x5bdc, (q15_t)0x5bd8, (q15_t)0x5bd3, (q15_t)0x5bcf, (q15_t)0x5bcb, (q15_t)0x5bc6, (q15_t)0x5bc2,\n  (q15_t)0x5bbd, (q15_t)0x5bb9, (q15_t)0x5bb5, (q15_t)0x5bb0, (q15_t)0x5bac, (q15_t)0x5ba8, (q15_t)0x5ba3, (q15_t)0x5b9f,\n  (q15_t)0x5b9a, (q15_t)0x5b96, (q15_t)0x5b92, (q15_t)0x5b8d, (q15_t)0x5b89, (q15_t)0x5b84, (q15_t)0x5b80, (q15_t)0x5b7c,\n  (q15_t)0x5b77, (q15_t)0x5b73, (q15_t)0x5b6e, (q15_t)0x5b6a, (q15_t)0x5b66, (q15_t)0x5b61, (q15_t)0x5b5d, (q15_t)0x5b58,\n  (q15_t)0x5b54, (q15_t)0x5b50, (q15_t)0x5b4b, (q15_t)0x5b47, (q15_t)0x5b42, (q15_t)0x5b3e, (q15_t)0x5b3a, (q15_t)0x5b35,\n  (q15_t)0x5b31, (q15_t)0x5b2c, (q15_t)0x5b28, (q15_t)0x5b24, (q15_t)0x5b1f, (q15_t)0x5b1b, (q15_t)0x5b16, (q15_t)0x5b12,\n  (q15_t)0x5b0e, (q15_t)0x5b09, (q15_t)0x5b05, (q15_t)0x5b00, (q15_t)0x5afc, (q15_t)0x5af7, (q15_t)0x5af3, (q15_t)0x5aef,\n  (q15_t)0x5aea, (q15_t)0x5ae6, (q15_t)0x5ae1, (q15_t)0x5add, (q15_t)0x5ad8, (q15_t)0x5ad4, (q15_t)0x5ad0, (q15_t)0x5acb,\n  (q15_t)0x5ac7, (q15_t)0x5ac2, (q15_t)0x5abe, (q15_t)0x5ab9, (q15_t)0x5ab5, (q15_t)0x5ab1, (q15_t)0x5aac, (q15_t)0x5aa8,\n  (q15_t)0x5aa3, (q15_t)0x5a9f, (q15_t)0x5a9a, (q15_t)0x5a96, (q15_t)0x5a92, (q15_t)0x5a8d, (q15_t)0x5a89, (q15_t)0x5a84,\n  (q15_t)0x5a80, (q15_t)0x5a7b, (q15_t)0x5a77, (q15_t)0x5a72, (q15_t)0x5a6e, (q15_t)0x5a6a, (q15_t)0x5a65, (q15_t)0x5a61,\n  (q15_t)0x5a5c, (q15_t)0x5a58, (q15_t)0x5a53, (q15_t)0x5a4f, (q15_t)0x5a4a, (q15_t)0x5a46, (q15_t)0x5a41, (q15_t)0x5a3d,\n  (q15_t)0x5a39, (q15_t)0x5a34, (q15_t)0x5a30, (q15_t)0x5a2b, (q15_t)0x5a27, (q15_t)0x5a22, (q15_t)0x5a1e, (q15_t)0x5a19,\n  (q15_t)0x5a15, (q15_t)0x5a10, (q15_t)0x5a0c, (q15_t)0x5a07, (q15_t)0x5a03, (q15_t)0x59ff, (q15_t)0x59fa, (q15_t)0x59f6,\n  (q15_t)0x59f1, (q15_t)0x59ed, (q15_t)0x59e8, (q15_t)0x59e4, (q15_t)0x59df, (q15_t)0x59db, (q15_t)0x59d6, (q15_t)0x59d2,\n  (q15_t)0x59cd, (q15_t)0x59c9, (q15_t)0x59c4, (q15_t)0x59c0, (q15_t)0x59bb, (q15_t)0x59b7, (q15_t)0x59b2, (q15_t)0x59ae,\n  (q15_t)0x59a9, (q15_t)0x59a5, (q15_t)0x59a1, (q15_t)0x599c, (q15_t)0x5998, (q15_t)0x5993, (q15_t)0x598f, (q15_t)0x598a,\n  (q15_t)0x5986, (q15_t)0x5981, (q15_t)0x597d, (q15_t)0x5978, (q15_t)0x5974, (q15_t)0x596f, (q15_t)0x596b, (q15_t)0x5966,\n  (q15_t)0x5962, (q15_t)0x595d, (q15_t)0x5959, (q15_t)0x5954, (q15_t)0x5950, (q15_t)0x594b, (q15_t)0x5947, (q15_t)0x5942,\n  (q15_t)0x593e, (q15_t)0x5939, (q15_t)0x5935, (q15_t)0x5930, (q15_t)0x592c, (q15_t)0x5927, (q15_t)0x5923, (q15_t)0x591e,\n  (q15_t)0x591a, (q15_t)0x5915, (q15_t)0x5911, (q15_t)0x590c, (q15_t)0x5908, (q15_t)0x5903, (q15_t)0x58fe, (q15_t)0x58fa,\n  (q15_t)0x58f5, (q15_t)0x58f1, (q15_t)0x58ec, (q15_t)0x58e8, (q15_t)0x58e3, (q15_t)0x58df, (q15_t)0x58da, (q15_t)0x58d6,\n  (q15_t)0x58d1, (q15_t)0x58cd, (q15_t)0x58c8, (q15_t)0x58c4, (q15_t)0x58bf, (q15_t)0x58bb, (q15_t)0x58b6, (q15_t)0x58b2,\n  (q15_t)0x58ad, (q15_t)0x58a9, (q15_t)0x58a4, (q15_t)0x589f, (q15_t)0x589b, (q15_t)0x5896, (q15_t)0x5892, (q15_t)0x588d,\n  (q15_t)0x5889, (q15_t)0x5884, (q15_t)0x5880, (q15_t)0x587b, (q15_t)0x5877, (q15_t)0x5872, (q15_t)0x586e, (q15_t)0x5869,\n  (q15_t)0x5864, (q15_t)0x5860, (q15_t)0x585b, (q15_t)0x5857, (q15_t)0x5852, (q15_t)0x584e, (q15_t)0x5849, (q15_t)0x5845,\n  (q15_t)0x5840, (q15_t)0x583c, (q15_t)0x5837, (q15_t)0x5832, (q15_t)0x582e, (q15_t)0x5829, (q15_t)0x5825, (q15_t)0x5820,\n  (q15_t)0x581c, (q15_t)0x5817, (q15_t)0x5813, (q15_t)0x580e, (q15_t)0x5809, (q15_t)0x5805, (q15_t)0x5800, (q15_t)0x57fc,\n  (q15_t)0x57f7, (q15_t)0x57f3, (q15_t)0x57ee, (q15_t)0x57e9, (q15_t)0x57e5, (q15_t)0x57e0, (q15_t)0x57dc, (q15_t)0x57d7,\n  (q15_t)0x57d3, (q15_t)0x57ce, (q15_t)0x57c9, (q15_t)0x57c5, (q15_t)0x57c0, (q15_t)0x57bc, (q15_t)0x57b7, (q15_t)0x57b3,\n  (q15_t)0x57ae, (q15_t)0x57a9, (q15_t)0x57a5, (q15_t)0x57a0, (q15_t)0x579c, (q15_t)0x5797, (q15_t)0x5793, (q15_t)0x578e,\n  (q15_t)0x5789, (q15_t)0x5785, (q15_t)0x5780, (q15_t)0x577c, (q15_t)0x5777, (q15_t)0x5772, (q15_t)0x576e, (q15_t)0x5769,\n  (q15_t)0x5765, (q15_t)0x5760, (q15_t)0x575c, (q15_t)0x5757, (q15_t)0x5752, (q15_t)0x574e, (q15_t)0x5749, (q15_t)0x5745,\n  (q15_t)0x5740, (q15_t)0x573b, (q15_t)0x5737, (q15_t)0x5732, (q15_t)0x572e, (q15_t)0x5729, (q15_t)0x5724, (q15_t)0x5720,\n  (q15_t)0x571b, (q15_t)0x5717, (q15_t)0x5712, (q15_t)0x570d, (q15_t)0x5709, (q15_t)0x5704, (q15_t)0x56ff, (q15_t)0x56fb,\n  (q15_t)0x56f6, (q15_t)0x56f2, (q15_t)0x56ed, (q15_t)0x56e8, (q15_t)0x56e4, (q15_t)0x56df, (q15_t)0x56db, (q15_t)0x56d6,\n  (q15_t)0x56d1, (q15_t)0x56cd, (q15_t)0x56c8, (q15_t)0x56c4, (q15_t)0x56bf, (q15_t)0x56ba, (q15_t)0x56b6, (q15_t)0x56b1,\n  (q15_t)0x56ac, (q15_t)0x56a8, (q15_t)0x56a3, (q15_t)0x569f, (q15_t)0x569a, (q15_t)0x5695, (q15_t)0x5691, (q15_t)0x568c,\n  (q15_t)0x5687, (q15_t)0x5683, (q15_t)0x567e, (q15_t)0x5679, (q15_t)0x5675, (q15_t)0x5670, (q15_t)0x566c, (q15_t)0x5667,\n  (q15_t)0x5662, (q15_t)0x565e, (q15_t)0x5659, (q15_t)0x5654, (q15_t)0x5650, (q15_t)0x564b, (q15_t)0x5646, (q15_t)0x5642,\n  (q15_t)0x563d, (q15_t)0x5639, (q15_t)0x5634, (q15_t)0x562f, (q15_t)0x562b, (q15_t)0x5626, (q15_t)0x5621, (q15_t)0x561d,\n  (q15_t)0x5618, (q15_t)0x5613, (q15_t)0x560f, (q15_t)0x560a, (q15_t)0x5605, (q15_t)0x5601, (q15_t)0x55fc, (q15_t)0x55f7,\n  (q15_t)0x55f3, (q15_t)0x55ee, (q15_t)0x55ea, (q15_t)0x55e5, (q15_t)0x55e0, (q15_t)0x55dc, (q15_t)0x55d7, (q15_t)0x55d2,\n  (q15_t)0x55ce, (q15_t)0x55c9, (q15_t)0x55c4, (q15_t)0x55c0, (q15_t)0x55bb, (q15_t)0x55b6, (q15_t)0x55b2, (q15_t)0x55ad,\n  (q15_t)0x55a8, (q15_t)0x55a4, (q15_t)0x559f, (q15_t)0x559a, (q15_t)0x5596, (q15_t)0x5591, (q15_t)0x558c, (q15_t)0x5588,\n  (q15_t)0x5583, (q15_t)0x557e, (q15_t)0x5579, (q15_t)0x5575, (q15_t)0x5570, (q15_t)0x556b, (q15_t)0x5567, (q15_t)0x5562,\n  (q15_t)0x555d, (q15_t)0x5559, (q15_t)0x5554, (q15_t)0x554f, (q15_t)0x554b, (q15_t)0x5546, (q15_t)0x5541, (q15_t)0x553d,\n  (q15_t)0x5538, (q15_t)0x5533, (q15_t)0x552f, (q15_t)0x552a, (q15_t)0x5525, (q15_t)0x5520, (q15_t)0x551c, (q15_t)0x5517,\n  (q15_t)0x5512, (q15_t)0x550e, (q15_t)0x5509, (q15_t)0x5504, (q15_t)0x5500, (q15_t)0x54fb, (q15_t)0x54f6, (q15_t)0x54f2,\n  (q15_t)0x54ed, (q15_t)0x54e8, (q15_t)0x54e3, (q15_t)0x54df, (q15_t)0x54da, (q15_t)0x54d5, (q15_t)0x54d1, (q15_t)0x54cc,\n  (q15_t)0x54c7, (q15_t)0x54c2, (q15_t)0x54be, (q15_t)0x54b9, (q15_t)0x54b4, (q15_t)0x54b0, (q15_t)0x54ab, (q15_t)0x54a6,\n  (q15_t)0x54a2, (q15_t)0x549d, (q15_t)0x5498, (q15_t)0x5493, (q15_t)0x548f, (q15_t)0x548a, (q15_t)0x5485, (q15_t)0x5480,\n  (q15_t)0x547c, (q15_t)0x5477, (q15_t)0x5472, (q15_t)0x546e, (q15_t)0x5469, (q15_t)0x5464, (q15_t)0x545f, (q15_t)0x545b,\n  (q15_t)0x5456, (q15_t)0x5451, (q15_t)0x544d, (q15_t)0x5448, (q15_t)0x5443, (q15_t)0x543e, (q15_t)0x543a, (q15_t)0x5435,\n  (q15_t)0x5430, (q15_t)0x542b, (q15_t)0x5427, (q15_t)0x5422, (q15_t)0x541d, (q15_t)0x5418, (q15_t)0x5414, (q15_t)0x540f,\n  (q15_t)0x540a, (q15_t)0x5406, (q15_t)0x5401, (q15_t)0x53fc, (q15_t)0x53f7, (q15_t)0x53f3, (q15_t)0x53ee, (q15_t)0x53e9,\n  (q15_t)0x53e4, (q15_t)0x53e0, (q15_t)0x53db, (q15_t)0x53d6, (q15_t)0x53d1, (q15_t)0x53cd, (q15_t)0x53c8, (q15_t)0x53c3,\n  (q15_t)0x53be, (q15_t)0x53ba, (q15_t)0x53b5, (q15_t)0x53b0, (q15_t)0x53ab, (q15_t)0x53a7, (q15_t)0x53a2, (q15_t)0x539d,\n  (q15_t)0x5398, (q15_t)0x5394, (q15_t)0x538f, (q15_t)0x538a, (q15_t)0x5385, (q15_t)0x5380, (q15_t)0x537c, (q15_t)0x5377,\n  (q15_t)0x5372, (q15_t)0x536d, (q15_t)0x5369, (q15_t)0x5364, (q15_t)0x535f, (q15_t)0x535a, (q15_t)0x5356, (q15_t)0x5351,\n  (q15_t)0x534c, (q15_t)0x5347, (q15_t)0x5343, (q15_t)0x533e, (q15_t)0x5339, (q15_t)0x5334, (q15_t)0x532f, (q15_t)0x532b,\n  (q15_t)0x5326, (q15_t)0x5321, (q15_t)0x531c, (q15_t)0x5318, (q15_t)0x5313, (q15_t)0x530e, (q15_t)0x5309, (q15_t)0x5304,\n  (q15_t)0x5300, (q15_t)0x52fb, (q15_t)0x52f6, (q15_t)0x52f1, (q15_t)0x52ec, (q15_t)0x52e8, (q15_t)0x52e3, (q15_t)0x52de,\n  (q15_t)0x52d9, (q15_t)0x52d5, (q15_t)0x52d0, (q15_t)0x52cb, (q15_t)0x52c6, (q15_t)0x52c1, (q15_t)0x52bd, (q15_t)0x52b8,\n  (q15_t)0x52b3, (q15_t)0x52ae, (q15_t)0x52a9, (q15_t)0x52a5, (q15_t)0x52a0, (q15_t)0x529b, (q15_t)0x5296, (q15_t)0x5291,\n  (q15_t)0x528d, (q15_t)0x5288, (q15_t)0x5283, (q15_t)0x527e, (q15_t)0x5279, (q15_t)0x5275, (q15_t)0x5270, (q15_t)0x526b,\n  (q15_t)0x5266, (q15_t)0x5261, (q15_t)0x525d, (q15_t)0x5258, (q15_t)0x5253, (q15_t)0x524e, (q15_t)0x5249, (q15_t)0x5244,\n  (q15_t)0x5240, (q15_t)0x523b, (q15_t)0x5236, (q15_t)0x5231, (q15_t)0x522c, (q15_t)0x5228, (q15_t)0x5223, (q15_t)0x521e,\n  (q15_t)0x5219, (q15_t)0x5214, (q15_t)0x520f, (q15_t)0x520b, (q15_t)0x5206, (q15_t)0x5201, (q15_t)0x51fc, (q15_t)0x51f7,\n  (q15_t)0x51f3, (q15_t)0x51ee, (q15_t)0x51e9, (q15_t)0x51e4, (q15_t)0x51df, (q15_t)0x51da, (q15_t)0x51d6, (q15_t)0x51d1,\n  (q15_t)0x51cc, (q15_t)0x51c7, (q15_t)0x51c2, (q15_t)0x51bd, (q15_t)0x51b9, (q15_t)0x51b4, (q15_t)0x51af, (q15_t)0x51aa,\n  (q15_t)0x51a5, (q15_t)0x51a0, (q15_t)0x519c, (q15_t)0x5197, (q15_t)0x5192, (q15_t)0x518d, (q15_t)0x5188, (q15_t)0x5183,\n  (q15_t)0x517e, (q15_t)0x517a, (q15_t)0x5175, (q15_t)0x5170, (q15_t)0x516b, (q15_t)0x5166, (q15_t)0x5161, (q15_t)0x515d,\n  (q15_t)0x5158, (q15_t)0x5153, (q15_t)0x514e, (q15_t)0x5149, (q15_t)0x5144, (q15_t)0x513f, (q15_t)0x513b, (q15_t)0x5136,\n  (q15_t)0x5131, (q15_t)0x512c, (q15_t)0x5127, (q15_t)0x5122, (q15_t)0x511d, (q15_t)0x5119, (q15_t)0x5114, (q15_t)0x510f,\n  (q15_t)0x510a, (q15_t)0x5105, (q15_t)0x5100, (q15_t)0x50fb, (q15_t)0x50f7, (q15_t)0x50f2, (q15_t)0x50ed, (q15_t)0x50e8,\n  (q15_t)0x50e3, (q15_t)0x50de, (q15_t)0x50d9, (q15_t)0x50d4, (q15_t)0x50d0, (q15_t)0x50cb, (q15_t)0x50c6, (q15_t)0x50c1,\n  (q15_t)0x50bc, (q15_t)0x50b7, (q15_t)0x50b2, (q15_t)0x50ad, (q15_t)0x50a9, (q15_t)0x50a4, (q15_t)0x509f, (q15_t)0x509a,\n  (q15_t)0x5095, (q15_t)0x5090, (q15_t)0x508b, (q15_t)0x5086, (q15_t)0x5082, (q15_t)0x507d, (q15_t)0x5078, (q15_t)0x5073,\n  (q15_t)0x506e, (q15_t)0x5069, (q15_t)0x5064, (q15_t)0x505f, (q15_t)0x505a, (q15_t)0x5056, (q15_t)0x5051, (q15_t)0x504c,\n  (q15_t)0x5047, (q15_t)0x5042, (q15_t)0x503d, (q15_t)0x5038, (q15_t)0x5033, (q15_t)0x502e, (q15_t)0x5029, (q15_t)0x5025,\n  (q15_t)0x5020, (q15_t)0x501b, (q15_t)0x5016, (q15_t)0x5011, (q15_t)0x500c, (q15_t)0x5007, (q15_t)0x5002, (q15_t)0x4ffd,\n  (q15_t)0x4ff8, (q15_t)0x4ff4, (q15_t)0x4fef, (q15_t)0x4fea, (q15_t)0x4fe5, (q15_t)0x4fe0, (q15_t)0x4fdb, (q15_t)0x4fd6,\n  (q15_t)0x4fd1, (q15_t)0x4fcc, (q15_t)0x4fc7, (q15_t)0x4fc2, (q15_t)0x4fbe, (q15_t)0x4fb9, (q15_t)0x4fb4, (q15_t)0x4faf,\n  (q15_t)0x4faa, (q15_t)0x4fa5, (q15_t)0x4fa0, (q15_t)0x4f9b, (q15_t)0x4f96, (q15_t)0x4f91, (q15_t)0x4f8c, (q15_t)0x4f87,\n  (q15_t)0x4f82, (q15_t)0x4f7e, (q15_t)0x4f79, (q15_t)0x4f74, (q15_t)0x4f6f, (q15_t)0x4f6a, (q15_t)0x4f65, (q15_t)0x4f60,\n  (q15_t)0x4f5b, (q15_t)0x4f56, (q15_t)0x4f51, (q15_t)0x4f4c, (q15_t)0x4f47, (q15_t)0x4f42, (q15_t)0x4f3d, (q15_t)0x4f39,\n  (q15_t)0x4f34, (q15_t)0x4f2f, (q15_t)0x4f2a, (q15_t)0x4f25, (q15_t)0x4f20, (q15_t)0x4f1b, (q15_t)0x4f16, (q15_t)0x4f11,\n  (q15_t)0x4f0c, (q15_t)0x4f07, (q15_t)0x4f02, (q15_t)0x4efd, (q15_t)0x4ef8, (q15_t)0x4ef3, (q15_t)0x4eee, (q15_t)0x4ee9,\n  (q15_t)0x4ee5, (q15_t)0x4ee0, (q15_t)0x4edb, (q15_t)0x4ed6, (q15_t)0x4ed1, (q15_t)0x4ecc, (q15_t)0x4ec7, (q15_t)0x4ec2,\n  (q15_t)0x4ebd, (q15_t)0x4eb8, (q15_t)0x4eb3, (q15_t)0x4eae, (q15_t)0x4ea9, (q15_t)0x4ea4, (q15_t)0x4e9f, (q15_t)0x4e9a,\n  (q15_t)0x4e95, (q15_t)0x4e90, (q15_t)0x4e8b, (q15_t)0x4e86, (q15_t)0x4e81, (q15_t)0x4e7c, (q15_t)0x4e78, (q15_t)0x4e73,\n  (q15_t)0x4e6e, (q15_t)0x4e69, (q15_t)0x4e64, (q15_t)0x4e5f, (q15_t)0x4e5a, (q15_t)0x4e55, (q15_t)0x4e50, (q15_t)0x4e4b,\n  (q15_t)0x4e46, (q15_t)0x4e41, (q15_t)0x4e3c, (q15_t)0x4e37, (q15_t)0x4e32, (q15_t)0x4e2d, (q15_t)0x4e28, (q15_t)0x4e23,\n  (q15_t)0x4e1e, (q15_t)0x4e19, (q15_t)0x4e14, (q15_t)0x4e0f, (q15_t)0x4e0a, (q15_t)0x4e05, (q15_t)0x4e00, (q15_t)0x4dfb,\n  (q15_t)0x4df6, (q15_t)0x4df1, (q15_t)0x4dec, (q15_t)0x4de7, (q15_t)0x4de2, (q15_t)0x4ddd, (q15_t)0x4dd8, (q15_t)0x4dd3,\n  (q15_t)0x4dce, (q15_t)0x4dc9, (q15_t)0x4dc4, (q15_t)0x4dbf, (q15_t)0x4dba, (q15_t)0x4db5, (q15_t)0x4db0, (q15_t)0x4dab,\n  (q15_t)0x4da6, (q15_t)0x4da1, (q15_t)0x4d9c, (q15_t)0x4d97, (q15_t)0x4d92, (q15_t)0x4d8d, (q15_t)0x4d88, (q15_t)0x4d83,\n  (q15_t)0x4d7e, (q15_t)0x4d79, (q15_t)0x4d74, (q15_t)0x4d6f, (q15_t)0x4d6a, (q15_t)0x4d65, (q15_t)0x4d60, (q15_t)0x4d5b,\n  (q15_t)0x4d56, (q15_t)0x4d51, (q15_t)0x4d4c, (q15_t)0x4d47, (q15_t)0x4d42, (q15_t)0x4d3d, (q15_t)0x4d38, (q15_t)0x4d33,\n  (q15_t)0x4d2e, (q15_t)0x4d29, (q15_t)0x4d24, (q15_t)0x4d1f, (q15_t)0x4d1a, (q15_t)0x4d15, (q15_t)0x4d10, (q15_t)0x4d0b,\n  (q15_t)0x4d06, (q15_t)0x4d01, (q15_t)0x4cfc, (q15_t)0x4cf7, (q15_t)0x4cf2, (q15_t)0x4ced, (q15_t)0x4ce8, (q15_t)0x4ce3,\n  (q15_t)0x4cde, (q15_t)0x4cd9, (q15_t)0x4cd4, (q15_t)0x4ccf, (q15_t)0x4cca, (q15_t)0x4cc5, (q15_t)0x4cc0, (q15_t)0x4cbb,\n  (q15_t)0x4cb6, (q15_t)0x4cb1, (q15_t)0x4cac, (q15_t)0x4ca7, (q15_t)0x4ca2, (q15_t)0x4c9d, (q15_t)0x4c98, (q15_t)0x4c93,\n  (q15_t)0x4c8e, (q15_t)0x4c88, (q15_t)0x4c83, (q15_t)0x4c7e, (q15_t)0x4c79, (q15_t)0x4c74, (q15_t)0x4c6f, (q15_t)0x4c6a,\n  (q15_t)0x4c65, (q15_t)0x4c60, (q15_t)0x4c5b, (q15_t)0x4c56, (q15_t)0x4c51, (q15_t)0x4c4c, (q15_t)0x4c47, (q15_t)0x4c42,\n  (q15_t)0x4c3d, (q15_t)0x4c38, (q15_t)0x4c33, (q15_t)0x4c2e, (q15_t)0x4c29, (q15_t)0x4c24, (q15_t)0x4c1f, (q15_t)0x4c1a,\n  (q15_t)0x4c14, (q15_t)0x4c0f, (q15_t)0x4c0a, (q15_t)0x4c05, (q15_t)0x4c00, (q15_t)0x4bfb, (q15_t)0x4bf6, (q15_t)0x4bf1,\n  (q15_t)0x4bec, (q15_t)0x4be7, (q15_t)0x4be2, (q15_t)0x4bdd, (q15_t)0x4bd8, (q15_t)0x4bd3, (q15_t)0x4bce, (q15_t)0x4bc9,\n  (q15_t)0x4bc4, (q15_t)0x4bbe, (q15_t)0x4bb9, (q15_t)0x4bb4, (q15_t)0x4baf, (q15_t)0x4baa, (q15_t)0x4ba5, (q15_t)0x4ba0,\n  (q15_t)0x4b9b, (q15_t)0x4b96, (q15_t)0x4b91, (q15_t)0x4b8c, (q15_t)0x4b87, (q15_t)0x4b82, (q15_t)0x4b7d, (q15_t)0x4b77,\n  (q15_t)0x4b72, (q15_t)0x4b6d, (q15_t)0x4b68, (q15_t)0x4b63, (q15_t)0x4b5e, (q15_t)0x4b59, (q15_t)0x4b54, (q15_t)0x4b4f,\n  (q15_t)0x4b4a, (q15_t)0x4b45, (q15_t)0x4b40, (q15_t)0x4b3b, (q15_t)0x4b35, (q15_t)0x4b30, (q15_t)0x4b2b, (q15_t)0x4b26,\n  (q15_t)0x4b21, (q15_t)0x4b1c, (q15_t)0x4b17, (q15_t)0x4b12, (q15_t)0x4b0d, (q15_t)0x4b08, (q15_t)0x4b03, (q15_t)0x4afd,\n  (q15_t)0x4af8, (q15_t)0x4af3, (q15_t)0x4aee, (q15_t)0x4ae9, (q15_t)0x4ae4, (q15_t)0x4adf, (q15_t)0x4ada, (q15_t)0x4ad5,\n  (q15_t)0x4ad0, (q15_t)0x4acb, (q15_t)0x4ac5, (q15_t)0x4ac0, (q15_t)0x4abb, (q15_t)0x4ab6, (q15_t)0x4ab1, (q15_t)0x4aac,\n  (q15_t)0x4aa7, (q15_t)0x4aa2, (q15_t)0x4a9d, (q15_t)0x4a97, (q15_t)0x4a92, (q15_t)0x4a8d, (q15_t)0x4a88, (q15_t)0x4a83,\n  (q15_t)0x4a7e, (q15_t)0x4a79, (q15_t)0x4a74, (q15_t)0x4a6f, (q15_t)0x4a6a, (q15_t)0x4a64, (q15_t)0x4a5f, (q15_t)0x4a5a,\n  (q15_t)0x4a55, (q15_t)0x4a50, (q15_t)0x4a4b, (q15_t)0x4a46, (q15_t)0x4a41, (q15_t)0x4a3b, (q15_t)0x4a36, (q15_t)0x4a31,\n  (q15_t)0x4a2c, (q15_t)0x4a27, (q15_t)0x4a22, (q15_t)0x4a1d, (q15_t)0x4a18, (q15_t)0x4a12, (q15_t)0x4a0d, (q15_t)0x4a08,\n  (q15_t)0x4a03, (q15_t)0x49fe, (q15_t)0x49f9, (q15_t)0x49f4, (q15_t)0x49ef, (q15_t)0x49e9, (q15_t)0x49e4, (q15_t)0x49df,\n  (q15_t)0x49da, (q15_t)0x49d5, (q15_t)0x49d0, (q15_t)0x49cb, (q15_t)0x49c6, (q15_t)0x49c0, (q15_t)0x49bb, (q15_t)0x49b6,\n  (q15_t)0x49b1, (q15_t)0x49ac, (q15_t)0x49a7, (q15_t)0x49a2, (q15_t)0x499c, (q15_t)0x4997, (q15_t)0x4992, (q15_t)0x498d,\n  (q15_t)0x4988, (q15_t)0x4983, (q15_t)0x497e, (q15_t)0x4978, (q15_t)0x4973, (q15_t)0x496e, (q15_t)0x4969, (q15_t)0x4964,\n  (q15_t)0x495f, (q15_t)0x495a, (q15_t)0x4954, (q15_t)0x494f, (q15_t)0x494a, (q15_t)0x4945, (q15_t)0x4940, (q15_t)0x493b,\n  (q15_t)0x4936, (q15_t)0x4930, (q15_t)0x492b, (q15_t)0x4926, (q15_t)0x4921, (q15_t)0x491c, (q15_t)0x4917, (q15_t)0x4911,\n  (q15_t)0x490c, (q15_t)0x4907, (q15_t)0x4902, (q15_t)0x48fd, (q15_t)0x48f8, (q15_t)0x48f2, (q15_t)0x48ed, (q15_t)0x48e8,\n  (q15_t)0x48e3, (q15_t)0x48de, (q15_t)0x48d9, (q15_t)0x48d3, (q15_t)0x48ce, (q15_t)0x48c9, (q15_t)0x48c4, (q15_t)0x48bf,\n  (q15_t)0x48ba, (q15_t)0x48b4, (q15_t)0x48af, (q15_t)0x48aa, (q15_t)0x48a5, (q15_t)0x48a0, (q15_t)0x489b, (q15_t)0x4895,\n  (q15_t)0x4890, (q15_t)0x488b, (q15_t)0x4886, (q15_t)0x4881, (q15_t)0x487c, (q15_t)0x4876, (q15_t)0x4871, (q15_t)0x486c,\n  (q15_t)0x4867, (q15_t)0x4862, (q15_t)0x485c, (q15_t)0x4857, (q15_t)0x4852, (q15_t)0x484d, (q15_t)0x4848, (q15_t)0x4843,\n  (q15_t)0x483d, (q15_t)0x4838, (q15_t)0x4833, (q15_t)0x482e, (q15_t)0x4829, (q15_t)0x4823, (q15_t)0x481e, (q15_t)0x4819,\n  (q15_t)0x4814, (q15_t)0x480f, (q15_t)0x4809, (q15_t)0x4804, (q15_t)0x47ff, (q15_t)0x47fa, (q15_t)0x47f5, (q15_t)0x47ef,\n  (q15_t)0x47ea, (q15_t)0x47e5, (q15_t)0x47e0, (q15_t)0x47db, (q15_t)0x47d5, (q15_t)0x47d0, (q15_t)0x47cb, (q15_t)0x47c6,\n  (q15_t)0x47c1, (q15_t)0x47bb, (q15_t)0x47b6, (q15_t)0x47b1, (q15_t)0x47ac, (q15_t)0x47a7, (q15_t)0x47a1, (q15_t)0x479c,\n  (q15_t)0x4797, (q15_t)0x4792, (q15_t)0x478d, (q15_t)0x4787, (q15_t)0x4782, (q15_t)0x477d, (q15_t)0x4778, (q15_t)0x4773,\n  (q15_t)0x476d, (q15_t)0x4768, (q15_t)0x4763, (q15_t)0x475e, (q15_t)0x4758, (q15_t)0x4753, (q15_t)0x474e, (q15_t)0x4749,\n  (q15_t)0x4744, (q15_t)0x473e, (q15_t)0x4739, (q15_t)0x4734, (q15_t)0x472f, (q15_t)0x4729, (q15_t)0x4724, (q15_t)0x471f,\n  (q15_t)0x471a, (q15_t)0x4715, (q15_t)0x470f, (q15_t)0x470a, (q15_t)0x4705, (q15_t)0x4700, (q15_t)0x46fa, (q15_t)0x46f5,\n  (q15_t)0x46f0, (q15_t)0x46eb, (q15_t)0x46e6, (q15_t)0x46e0, (q15_t)0x46db, (q15_t)0x46d6, (q15_t)0x46d1, (q15_t)0x46cb,\n  (q15_t)0x46c6, (q15_t)0x46c1, (q15_t)0x46bc, (q15_t)0x46b6, (q15_t)0x46b1, (q15_t)0x46ac, (q15_t)0x46a7, (q15_t)0x46a1,\n  (q15_t)0x469c, (q15_t)0x4697, (q15_t)0x4692, (q15_t)0x468d, (q15_t)0x4687, (q15_t)0x4682, (q15_t)0x467d, (q15_t)0x4678,\n  (q15_t)0x4672, (q15_t)0x466d, (q15_t)0x4668, (q15_t)0x4663, (q15_t)0x465d, (q15_t)0x4658, (q15_t)0x4653, (q15_t)0x464e,\n  (q15_t)0x4648, (q15_t)0x4643, (q15_t)0x463e, (q15_t)0x4639, (q15_t)0x4633, (q15_t)0x462e, (q15_t)0x4629, (q15_t)0x4624,\n  (q15_t)0x461e, (q15_t)0x4619, (q15_t)0x4614, (q15_t)0x460e, (q15_t)0x4609, (q15_t)0x4604, (q15_t)0x45ff, (q15_t)0x45f9,\n  (q15_t)0x45f4, (q15_t)0x45ef, (q15_t)0x45ea, (q15_t)0x45e4, (q15_t)0x45df, (q15_t)0x45da, (q15_t)0x45d5, (q15_t)0x45cf,\n  (q15_t)0x45ca, (q15_t)0x45c5, (q15_t)0x45c0, (q15_t)0x45ba, (q15_t)0x45b5, (q15_t)0x45b0, (q15_t)0x45aa, (q15_t)0x45a5,\n  (q15_t)0x45a0, (q15_t)0x459b, (q15_t)0x4595, (q15_t)0x4590, (q15_t)0x458b, (q15_t)0x4586, (q15_t)0x4580, (q15_t)0x457b,\n  (q15_t)0x4576, (q15_t)0x4570, (q15_t)0x456b, (q15_t)0x4566, (q15_t)0x4561, (q15_t)0x455b, (q15_t)0x4556, (q15_t)0x4551,\n  (q15_t)0x454b, (q15_t)0x4546, (q15_t)0x4541, (q15_t)0x453c, (q15_t)0x4536, (q15_t)0x4531, (q15_t)0x452c, (q15_t)0x4526,\n  (q15_t)0x4521, (q15_t)0x451c, (q15_t)0x4517, (q15_t)0x4511, (q15_t)0x450c, (q15_t)0x4507, (q15_t)0x4501, (q15_t)0x44fc,\n  (q15_t)0x44f7, (q15_t)0x44f2, (q15_t)0x44ec, (q15_t)0x44e7, (q15_t)0x44e2, (q15_t)0x44dc, (q15_t)0x44d7, (q15_t)0x44d2,\n  (q15_t)0x44cd, (q15_t)0x44c7, (q15_t)0x44c2, (q15_t)0x44bd, (q15_t)0x44b7, (q15_t)0x44b2, (q15_t)0x44ad, (q15_t)0x44a7,\n  (q15_t)0x44a2, (q15_t)0x449d, (q15_t)0x4497, (q15_t)0x4492, (q15_t)0x448d, (q15_t)0x4488, (q15_t)0x4482, (q15_t)0x447d,\n  (q15_t)0x4478, (q15_t)0x4472, (q15_t)0x446d, (q15_t)0x4468, (q15_t)0x4462, (q15_t)0x445d, (q15_t)0x4458, (q15_t)0x4452,\n  (q15_t)0x444d, (q15_t)0x4448, (q15_t)0x4443, (q15_t)0x443d, (q15_t)0x4438, (q15_t)0x4433, (q15_t)0x442d, (q15_t)0x4428,\n  (q15_t)0x4423, (q15_t)0x441d, (q15_t)0x4418, (q15_t)0x4413, (q15_t)0x440d, (q15_t)0x4408, (q15_t)0x4403, (q15_t)0x43fd,\n  (q15_t)0x43f8, (q15_t)0x43f3, (q15_t)0x43ed, (q15_t)0x43e8, (q15_t)0x43e3, (q15_t)0x43dd, (q15_t)0x43d8, (q15_t)0x43d3,\n  (q15_t)0x43cd, (q15_t)0x43c8, (q15_t)0x43c3, (q15_t)0x43bd, (q15_t)0x43b8, (q15_t)0x43b3, (q15_t)0x43ad, (q15_t)0x43a8,\n  (q15_t)0x43a3, (q15_t)0x439d, (q15_t)0x4398, (q15_t)0x4393, (q15_t)0x438d, (q15_t)0x4388, (q15_t)0x4383, (q15_t)0x437d,\n  (q15_t)0x4378, (q15_t)0x4373, (q15_t)0x436d, (q15_t)0x4368, (q15_t)0x4363, (q15_t)0x435d, (q15_t)0x4358, (q15_t)0x4353,\n  (q15_t)0x434d, (q15_t)0x4348, (q15_t)0x4343, (q15_t)0x433d, (q15_t)0x4338, (q15_t)0x4333, (q15_t)0x432d, (q15_t)0x4328,\n  (q15_t)0x4323, (q15_t)0x431d, (q15_t)0x4318, (q15_t)0x4313, (q15_t)0x430d, (q15_t)0x4308, (q15_t)0x4302, (q15_t)0x42fd,\n  (q15_t)0x42f8, (q15_t)0x42f2, (q15_t)0x42ed, (q15_t)0x42e8, (q15_t)0x42e2, (q15_t)0x42dd, (q15_t)0x42d8, (q15_t)0x42d2,\n  (q15_t)0x42cd, (q15_t)0x42c8, (q15_t)0x42c2, (q15_t)0x42bd, (q15_t)0x42b7, (q15_t)0x42b2, (q15_t)0x42ad, (q15_t)0x42a7,\n  (q15_t)0x42a2, (q15_t)0x429d, (q15_t)0x4297, (q15_t)0x4292, (q15_t)0x428d, (q15_t)0x4287, (q15_t)0x4282, (q15_t)0x427c,\n  (q15_t)0x4277, (q15_t)0x4272, (q15_t)0x426c, (q15_t)0x4267, (q15_t)0x4262, (q15_t)0x425c, (q15_t)0x4257, (q15_t)0x4251,\n  (q15_t)0x424c, (q15_t)0x4247, (q15_t)0x4241, (q15_t)0x423c, (q15_t)0x4237, (q15_t)0x4231, (q15_t)0x422c, (q15_t)0x4226,\n  (q15_t)0x4221, (q15_t)0x421c, (q15_t)0x4216, (q15_t)0x4211, (q15_t)0x420c, (q15_t)0x4206, (q15_t)0x4201, (q15_t)0x41fb,\n  (q15_t)0x41f6, (q15_t)0x41f1, (q15_t)0x41eb, (q15_t)0x41e6, (q15_t)0x41e0, (q15_t)0x41db, (q15_t)0x41d6, (q15_t)0x41d0,\n  (q15_t)0x41cb, (q15_t)0x41c6, (q15_t)0x41c0, (q15_t)0x41bb, (q15_t)0x41b5, (q15_t)0x41b0, (q15_t)0x41ab, (q15_t)0x41a5,\n  (q15_t)0x41a0, (q15_t)0x419a, (q15_t)0x4195, (q15_t)0x4190, (q15_t)0x418a, (q15_t)0x4185, (q15_t)0x417f, (q15_t)0x417a,\n  (q15_t)0x4175, (q15_t)0x416f, (q15_t)0x416a, (q15_t)0x4164, (q15_t)0x415f, (q15_t)0x415a, (q15_t)0x4154, (q15_t)0x414f,\n  (q15_t)0x4149, (q15_t)0x4144, (q15_t)0x413f, (q15_t)0x4139, (q15_t)0x4134, (q15_t)0x412e, (q15_t)0x4129, (q15_t)0x4124,\n  (q15_t)0x411e, (q15_t)0x4119, (q15_t)0x4113, (q15_t)0x410e, (q15_t)0x4108, (q15_t)0x4103, (q15_t)0x40fe, (q15_t)0x40f8,\n  (q15_t)0x40f3, (q15_t)0x40ed, (q15_t)0x40e8, (q15_t)0x40e3, (q15_t)0x40dd, (q15_t)0x40d8, (q15_t)0x40d2, (q15_t)0x40cd,\n  (q15_t)0x40c8, (q15_t)0x40c2, (q15_t)0x40bd, (q15_t)0x40b7, (q15_t)0x40b2, (q15_t)0x40ac, (q15_t)0x40a7, (q15_t)0x40a2,\n  (q15_t)0x409c, (q15_t)0x4097, (q15_t)0x4091, (q15_t)0x408c, (q15_t)0x4086, (q15_t)0x4081, (q15_t)0x407c, (q15_t)0x4076,\n  (q15_t)0x4071, (q15_t)0x406b, (q15_t)0x4066, (q15_t)0x4060, (q15_t)0x405b, (q15_t)0x4056, (q15_t)0x4050, (q15_t)0x404b,\n  (q15_t)0x4045, (q15_t)0x4040, (q15_t)0x403a, (q15_t)0x4035, (q15_t)0x4030, (q15_t)0x402a, (q15_t)0x4025, (q15_t)0x401f,\n  (q15_t)0x401a, (q15_t)0x4014, (q15_t)0x400f, (q15_t)0x4009, (q15_t)0x4004, (q15_t)0x3fff, (q15_t)0x3ff9, (q15_t)0x3ff4,\n  (q15_t)0x3fee, (q15_t)0x3fe9, (q15_t)0x3fe3, (q15_t)0x3fde, (q15_t)0x3fd8, (q15_t)0x3fd3, (q15_t)0x3fce, (q15_t)0x3fc8,\n  (q15_t)0x3fc3, (q15_t)0x3fbd, (q15_t)0x3fb8, (q15_t)0x3fb2, (q15_t)0x3fad, (q15_t)0x3fa7, (q15_t)0x3fa2, (q15_t)0x3f9d,\n  (q15_t)0x3f97, (q15_t)0x3f92, (q15_t)0x3f8c, (q15_t)0x3f87, (q15_t)0x3f81, (q15_t)0x3f7c, (q15_t)0x3f76, (q15_t)0x3f71,\n  (q15_t)0x3f6b, (q15_t)0x3f66, (q15_t)0x3f61, (q15_t)0x3f5b, (q15_t)0x3f56, (q15_t)0x3f50, (q15_t)0x3f4b, (q15_t)0x3f45,\n  (q15_t)0x3f40, (q15_t)0x3f3a, (q15_t)0x3f35, (q15_t)0x3f2f, (q15_t)0x3f2a, (q15_t)0x3f24, (q15_t)0x3f1f, (q15_t)0x3f1a,\n  (q15_t)0x3f14, (q15_t)0x3f0f, (q15_t)0x3f09, (q15_t)0x3f04, (q15_t)0x3efe, (q15_t)0x3ef9, (q15_t)0x3ef3, (q15_t)0x3eee,\n  (q15_t)0x3ee8, (q15_t)0x3ee3, (q15_t)0x3edd, (q15_t)0x3ed8, (q15_t)0x3ed2, (q15_t)0x3ecd, (q15_t)0x3ec7, (q15_t)0x3ec2,\n  (q15_t)0x3ebd, (q15_t)0x3eb7, (q15_t)0x3eb2, (q15_t)0x3eac, (q15_t)0x3ea7, (q15_t)0x3ea1, (q15_t)0x3e9c, (q15_t)0x3e96,\n  (q15_t)0x3e91, (q15_t)0x3e8b, (q15_t)0x3e86, (q15_t)0x3e80, (q15_t)0x3e7b, (q15_t)0x3e75, (q15_t)0x3e70, (q15_t)0x3e6a,\n  (q15_t)0x3e65, (q15_t)0x3e5f, (q15_t)0x3e5a, (q15_t)0x3e54, (q15_t)0x3e4f, (q15_t)0x3e49, (q15_t)0x3e44, (q15_t)0x3e3e,\n  (q15_t)0x3e39, (q15_t)0x3e33, (q15_t)0x3e2e, (q15_t)0x3e28, (q15_t)0x3e23, (q15_t)0x3e1d, (q15_t)0x3e18, (q15_t)0x3e12,\n  (q15_t)0x3e0d, (q15_t)0x3e07, (q15_t)0x3e02, (q15_t)0x3dfc, (q15_t)0x3df7, (q15_t)0x3df1, (q15_t)0x3dec, (q15_t)0x3de6,\n  (q15_t)0x3de1, (q15_t)0x3ddb, (q15_t)0x3dd6, (q15_t)0x3dd0, (q15_t)0x3dcb, (q15_t)0x3dc5, (q15_t)0x3dc0, (q15_t)0x3dba,\n  (q15_t)0x3db5, (q15_t)0x3daf, (q15_t)0x3daa, (q15_t)0x3da4, (q15_t)0x3d9f, (q15_t)0x3d99, (q15_t)0x3d94, (q15_t)0x3d8e,\n  (q15_t)0x3d89, (q15_t)0x3d83, (q15_t)0x3d7e, (q15_t)0x3d78, (q15_t)0x3d73, (q15_t)0x3d6d, (q15_t)0x3d68, (q15_t)0x3d62,\n  (q15_t)0x3d5d, (q15_t)0x3d57, (q15_t)0x3d52, (q15_t)0x3d4c, (q15_t)0x3d47, (q15_t)0x3d41, (q15_t)0x3d3c, (q15_t)0x3d36,\n  (q15_t)0x3d31, (q15_t)0x3d2b, (q15_t)0x3d26, (q15_t)0x3d20, (q15_t)0x3d1b, (q15_t)0x3d15, (q15_t)0x3d10, (q15_t)0x3d0a,\n  (q15_t)0x3d04, (q15_t)0x3cff, (q15_t)0x3cf9, (q15_t)0x3cf4, (q15_t)0x3cee, (q15_t)0x3ce9, (q15_t)0x3ce3, (q15_t)0x3cde,\n  (q15_t)0x3cd8, (q15_t)0x3cd3, (q15_t)0x3ccd, (q15_t)0x3cc8, (q15_t)0x3cc2, (q15_t)0x3cbd, (q15_t)0x3cb7, (q15_t)0x3cb2,\n  (q15_t)0x3cac, (q15_t)0x3ca7, (q15_t)0x3ca1, (q15_t)0x3c9b, (q15_t)0x3c96, (q15_t)0x3c90, (q15_t)0x3c8b, (q15_t)0x3c85,\n  (q15_t)0x3c80, (q15_t)0x3c7a, (q15_t)0x3c75, (q15_t)0x3c6f, (q15_t)0x3c6a, (q15_t)0x3c64, (q15_t)0x3c5f, (q15_t)0x3c59,\n  (q15_t)0x3c53, (q15_t)0x3c4e, (q15_t)0x3c48, (q15_t)0x3c43, (q15_t)0x3c3d, (q15_t)0x3c38, (q15_t)0x3c32, (q15_t)0x3c2d,\n  (q15_t)0x3c27, (q15_t)0x3c22, (q15_t)0x3c1c, (q15_t)0x3c16, (q15_t)0x3c11, (q15_t)0x3c0b, (q15_t)0x3c06, (q15_t)0x3c00,\n  (q15_t)0x3bfb, (q15_t)0x3bf5, (q15_t)0x3bf0, (q15_t)0x3bea, (q15_t)0x3be5, (q15_t)0x3bdf, (q15_t)0x3bd9, (q15_t)0x3bd4,\n  (q15_t)0x3bce, (q15_t)0x3bc9, (q15_t)0x3bc3, (q15_t)0x3bbe, (q15_t)0x3bb8, (q15_t)0x3bb3, (q15_t)0x3bad, (q15_t)0x3ba7,\n  (q15_t)0x3ba2, (q15_t)0x3b9c, (q15_t)0x3b97, (q15_t)0x3b91, (q15_t)0x3b8c, (q15_t)0x3b86, (q15_t)0x3b80, (q15_t)0x3b7b,\n  (q15_t)0x3b75, (q15_t)0x3b70, (q15_t)0x3b6a, (q15_t)0x3b65, (q15_t)0x3b5f, (q15_t)0x3b5a, (q15_t)0x3b54, (q15_t)0x3b4e,\n  (q15_t)0x3b49, (q15_t)0x3b43, (q15_t)0x3b3e, (q15_t)0x3b38, (q15_t)0x3b33, (q15_t)0x3b2d, (q15_t)0x3b27, (q15_t)0x3b22,\n  (q15_t)0x3b1c, (q15_t)0x3b17, (q15_t)0x3b11, (q15_t)0x3b0c, (q15_t)0x3b06, (q15_t)0x3b00, (q15_t)0x3afb, (q15_t)0x3af5,\n  (q15_t)0x3af0, (q15_t)0x3aea, (q15_t)0x3ae4, (q15_t)0x3adf, (q15_t)0x3ad9, (q15_t)0x3ad4, (q15_t)0x3ace, (q15_t)0x3ac9,\n  (q15_t)0x3ac3, (q15_t)0x3abd, (q15_t)0x3ab8, (q15_t)0x3ab2, (q15_t)0x3aad, (q15_t)0x3aa7, (q15_t)0x3aa2, (q15_t)0x3a9c,\n  (q15_t)0x3a96, (q15_t)0x3a91, (q15_t)0x3a8b, (q15_t)0x3a86, (q15_t)0x3a80, (q15_t)0x3a7a, (q15_t)0x3a75, (q15_t)0x3a6f,\n  (q15_t)0x3a6a, (q15_t)0x3a64, (q15_t)0x3a5e, (q15_t)0x3a59, (q15_t)0x3a53, (q15_t)0x3a4e, (q15_t)0x3a48, (q15_t)0x3a42,\n  (q15_t)0x3a3d, (q15_t)0x3a37, (q15_t)0x3a32, (q15_t)0x3a2c, (q15_t)0x3a26, (q15_t)0x3a21, (q15_t)0x3a1b, (q15_t)0x3a16,\n  (q15_t)0x3a10, (q15_t)0x3a0b, (q15_t)0x3a05, (q15_t)0x39ff, (q15_t)0x39fa, (q15_t)0x39f4, (q15_t)0x39ee, (q15_t)0x39e9,\n  (q15_t)0x39e3, (q15_t)0x39de, (q15_t)0x39d8, (q15_t)0x39d2, (q15_t)0x39cd, (q15_t)0x39c7, (q15_t)0x39c2, (q15_t)0x39bc,\n  (q15_t)0x39b6, (q15_t)0x39b1, (q15_t)0x39ab, (q15_t)0x39a6, (q15_t)0x39a0, (q15_t)0x399a, (q15_t)0x3995, (q15_t)0x398f,\n  (q15_t)0x398a, (q15_t)0x3984, (q15_t)0x397e, (q15_t)0x3979, (q15_t)0x3973, (q15_t)0x396d, (q15_t)0x3968, (q15_t)0x3962,\n  (q15_t)0x395d, (q15_t)0x3957, (q15_t)0x3951, (q15_t)0x394c, (q15_t)0x3946, (q15_t)0x3941, (q15_t)0x393b, (q15_t)0x3935,\n  (q15_t)0x3930, (q15_t)0x392a, (q15_t)0x3924, (q15_t)0x391f, (q15_t)0x3919, (q15_t)0x3914, (q15_t)0x390e, (q15_t)0x3908,\n  (q15_t)0x3903, (q15_t)0x38fd, (q15_t)0x38f7, (q15_t)0x38f2, (q15_t)0x38ec, (q15_t)0x38e7, (q15_t)0x38e1, (q15_t)0x38db,\n  (q15_t)0x38d6, (q15_t)0x38d0, (q15_t)0x38ca, (q15_t)0x38c5, (q15_t)0x38bf, (q15_t)0x38ba, (q15_t)0x38b4, (q15_t)0x38ae,\n  (q15_t)0x38a9, (q15_t)0x38a3, (q15_t)0x389d, (q15_t)0x3898, (q15_t)0x3892, (q15_t)0x388c, (q15_t)0x3887, (q15_t)0x3881,\n  (q15_t)0x387c, (q15_t)0x3876, (q15_t)0x3870, (q15_t)0x386b, (q15_t)0x3865, (q15_t)0x385f, (q15_t)0x385a, (q15_t)0x3854,\n  (q15_t)0x384e, (q15_t)0x3849, (q15_t)0x3843, (q15_t)0x383d, (q15_t)0x3838, (q15_t)0x3832, (q15_t)0x382d, (q15_t)0x3827,\n  (q15_t)0x3821, (q15_t)0x381c, (q15_t)0x3816, (q15_t)0x3810, (q15_t)0x380b, (q15_t)0x3805, (q15_t)0x37ff, (q15_t)0x37fa,\n  (q15_t)0x37f4, (q15_t)0x37ee, (q15_t)0x37e9, (q15_t)0x37e3, (q15_t)0x37dd, (q15_t)0x37d8, (q15_t)0x37d2, (q15_t)0x37cc,\n  (q15_t)0x37c7, (q15_t)0x37c1, (q15_t)0x37bc, (q15_t)0x37b6, (q15_t)0x37b0, (q15_t)0x37ab, (q15_t)0x37a5, (q15_t)0x379f,\n  (q15_t)0x379a, (q15_t)0x3794, (q15_t)0x378e, (q15_t)0x3789, (q15_t)0x3783, (q15_t)0x377d, (q15_t)0x3778, (q15_t)0x3772,\n  (q15_t)0x376c, (q15_t)0x3767, (q15_t)0x3761, (q15_t)0x375b, (q15_t)0x3756, (q15_t)0x3750, (q15_t)0x374a, (q15_t)0x3745,\n  (q15_t)0x373f, (q15_t)0x3739, (q15_t)0x3734, (q15_t)0x372e, (q15_t)0x3728, (q15_t)0x3723, (q15_t)0x371d, (q15_t)0x3717,\n  (q15_t)0x3712, (q15_t)0x370c, (q15_t)0x3706, (q15_t)0x3701, (q15_t)0x36fb, (q15_t)0x36f5, (q15_t)0x36f0, (q15_t)0x36ea,\n  (q15_t)0x36e4, (q15_t)0x36df, (q15_t)0x36d9, (q15_t)0x36d3, (q15_t)0x36ce, (q15_t)0x36c8, (q15_t)0x36c2, (q15_t)0x36bc,\n  (q15_t)0x36b7, (q15_t)0x36b1, (q15_t)0x36ab, (q15_t)0x36a6, (q15_t)0x36a0, (q15_t)0x369a, (q15_t)0x3695, (q15_t)0x368f,\n  (q15_t)0x3689, (q15_t)0x3684, (q15_t)0x367e, (q15_t)0x3678, (q15_t)0x3673, (q15_t)0x366d, (q15_t)0x3667, (q15_t)0x3662,\n  (q15_t)0x365c, (q15_t)0x3656, (q15_t)0x3650, (q15_t)0x364b, (q15_t)0x3645, (q15_t)0x363f, (q15_t)0x363a, (q15_t)0x3634,\n  (q15_t)0x362e, (q15_t)0x3629, (q15_t)0x3623, (q15_t)0x361d, (q15_t)0x3618, (q15_t)0x3612, (q15_t)0x360c, (q15_t)0x3606,\n  (q15_t)0x3601, (q15_t)0x35fb, (q15_t)0x35f5, (q15_t)0x35f0, (q15_t)0x35ea, (q15_t)0x35e4, (q15_t)0x35df, (q15_t)0x35d9,\n  (q15_t)0x35d3, (q15_t)0x35cd, (q15_t)0x35c8, (q15_t)0x35c2, (q15_t)0x35bc, (q15_t)0x35b7, (q15_t)0x35b1, (q15_t)0x35ab,\n  (q15_t)0x35a6, (q15_t)0x35a0, (q15_t)0x359a, (q15_t)0x3594, (q15_t)0x358f, (q15_t)0x3589, (q15_t)0x3583, (q15_t)0x357e,\n  (q15_t)0x3578, (q15_t)0x3572, (q15_t)0x356c, (q15_t)0x3567, (q15_t)0x3561, (q15_t)0x355b, (q15_t)0x3556, (q15_t)0x3550,\n  (q15_t)0x354a, (q15_t)0x3544, (q15_t)0x353f, (q15_t)0x3539, (q15_t)0x3533, (q15_t)0x352e, (q15_t)0x3528, (q15_t)0x3522,\n  (q15_t)0x351c, (q15_t)0x3517, (q15_t)0x3511, (q15_t)0x350b, (q15_t)0x3506, (q15_t)0x3500, (q15_t)0x34fa, (q15_t)0x34f4,\n  (q15_t)0x34ef, (q15_t)0x34e9, (q15_t)0x34e3, (q15_t)0x34de, (q15_t)0x34d8, (q15_t)0x34d2, (q15_t)0x34cc, (q15_t)0x34c7,\n  (q15_t)0x34c1, (q15_t)0x34bb, (q15_t)0x34b6, (q15_t)0x34b0, (q15_t)0x34aa, (q15_t)0x34a4, (q15_t)0x349f, (q15_t)0x3499,\n  (q15_t)0x3493, (q15_t)0x348d, (q15_t)0x3488, (q15_t)0x3482, (q15_t)0x347c, (q15_t)0x3476, (q15_t)0x3471, (q15_t)0x346b,\n  (q15_t)0x3465, (q15_t)0x3460, (q15_t)0x345a, (q15_t)0x3454, (q15_t)0x344e, (q15_t)0x3449, (q15_t)0x3443, (q15_t)0x343d,\n  (q15_t)0x3437, (q15_t)0x3432, (q15_t)0x342c, (q15_t)0x3426, (q15_t)0x3420, (q15_t)0x341b, (q15_t)0x3415, (q15_t)0x340f,\n  (q15_t)0x340a, (q15_t)0x3404, (q15_t)0x33fe, (q15_t)0x33f8, (q15_t)0x33f3, (q15_t)0x33ed, (q15_t)0x33e7, (q15_t)0x33e1,\n  (q15_t)0x33dc, (q15_t)0x33d6, (q15_t)0x33d0, (q15_t)0x33ca, (q15_t)0x33c5, (q15_t)0x33bf, (q15_t)0x33b9, (q15_t)0x33b3,\n  (q15_t)0x33ae, (q15_t)0x33a8, (q15_t)0x33a2, (q15_t)0x339c, (q15_t)0x3397, (q15_t)0x3391, (q15_t)0x338b, (q15_t)0x3385,\n  (q15_t)0x3380, (q15_t)0x337a, (q15_t)0x3374, (q15_t)0x336e, (q15_t)0x3369, (q15_t)0x3363, (q15_t)0x335d, (q15_t)0x3357,\n  (q15_t)0x3352, (q15_t)0x334c, (q15_t)0x3346, (q15_t)0x3340, (q15_t)0x333b, (q15_t)0x3335, (q15_t)0x332f, (q15_t)0x3329,\n  (q15_t)0x3324, (q15_t)0x331e, (q15_t)0x3318, (q15_t)0x3312, (q15_t)0x330c, (q15_t)0x3307, (q15_t)0x3301, (q15_t)0x32fb,\n  (q15_t)0x32f5, (q15_t)0x32f0, (q15_t)0x32ea, (q15_t)0x32e4, (q15_t)0x32de, (q15_t)0x32d9, (q15_t)0x32d3, (q15_t)0x32cd,\n  (q15_t)0x32c7, (q15_t)0x32c2, (q15_t)0x32bc, (q15_t)0x32b6, (q15_t)0x32b0, (q15_t)0x32aa, (q15_t)0x32a5, (q15_t)0x329f,\n  (q15_t)0x3299, (q15_t)0x3293, (q15_t)0x328e, (q15_t)0x3288, (q15_t)0x3282, (q15_t)0x327c, (q15_t)0x3276, (q15_t)0x3271,\n  (q15_t)0x326b, (q15_t)0x3265, (q15_t)0x325f, (q15_t)0x325a, (q15_t)0x3254, (q15_t)0x324e, (q15_t)0x3248, (q15_t)0x3243,\n  (q15_t)0x323d, (q15_t)0x3237, (q15_t)0x3231, (q15_t)0x322b, (q15_t)0x3226, (q15_t)0x3220, (q15_t)0x321a, (q15_t)0x3214,\n  (q15_t)0x320e, (q15_t)0x3209, (q15_t)0x3203, (q15_t)0x31fd, (q15_t)0x31f7, (q15_t)0x31f2, (q15_t)0x31ec, (q15_t)0x31e6,\n  (q15_t)0x31e0, (q15_t)0x31da, (q15_t)0x31d5, (q15_t)0x31cf, (q15_t)0x31c9, (q15_t)0x31c3, (q15_t)0x31bd, (q15_t)0x31b8,\n  (q15_t)0x31b2, (q15_t)0x31ac, (q15_t)0x31a6, (q15_t)0x31a1, (q15_t)0x319b, (q15_t)0x3195, (q15_t)0x318f, (q15_t)0x3189,\n  (q15_t)0x3184, (q15_t)0x317e, (q15_t)0x3178, (q15_t)0x3172, (q15_t)0x316c, (q15_t)0x3167, (q15_t)0x3161, (q15_t)0x315b,\n  (q15_t)0x3155, (q15_t)0x314f, (q15_t)0x314a, (q15_t)0x3144, (q15_t)0x313e, (q15_t)0x3138, (q15_t)0x3132, (q15_t)0x312d,\n  (q15_t)0x3127, (q15_t)0x3121, (q15_t)0x311b, (q15_t)0x3115, (q15_t)0x3110, (q15_t)0x310a, (q15_t)0x3104, (q15_t)0x30fe,\n  (q15_t)0x30f8, (q15_t)0x30f3, (q15_t)0x30ed, (q15_t)0x30e7, (q15_t)0x30e1, (q15_t)0x30db, (q15_t)0x30d6, (q15_t)0x30d0,\n  (q15_t)0x30ca, (q15_t)0x30c4, (q15_t)0x30be, (q15_t)0x30b8, (q15_t)0x30b3, (q15_t)0x30ad, (q15_t)0x30a7, (q15_t)0x30a1,\n  (q15_t)0x309b, (q15_t)0x3096, (q15_t)0x3090, (q15_t)0x308a, (q15_t)0x3084, (q15_t)0x307e, (q15_t)0x3079, (q15_t)0x3073,\n  (q15_t)0x306d, (q15_t)0x3067, (q15_t)0x3061, (q15_t)0x305b, (q15_t)0x3056, (q15_t)0x3050, (q15_t)0x304a, (q15_t)0x3044,\n  (q15_t)0x303e, (q15_t)0x3039, (q15_t)0x3033, (q15_t)0x302d, (q15_t)0x3027, (q15_t)0x3021, (q15_t)0x301b, (q15_t)0x3016,\n  (q15_t)0x3010, (q15_t)0x300a, (q15_t)0x3004, (q15_t)0x2ffe, (q15_t)0x2ff8, (q15_t)0x2ff3, (q15_t)0x2fed, (q15_t)0x2fe7,\n  (q15_t)0x2fe1, (q15_t)0x2fdb, (q15_t)0x2fd6, (q15_t)0x2fd0, (q15_t)0x2fca, (q15_t)0x2fc4, (q15_t)0x2fbe, (q15_t)0x2fb8,\n  (q15_t)0x2fb3, (q15_t)0x2fad, (q15_t)0x2fa7, (q15_t)0x2fa1, (q15_t)0x2f9b, (q15_t)0x2f95, (q15_t)0x2f90, (q15_t)0x2f8a,\n  (q15_t)0x2f84, (q15_t)0x2f7e, (q15_t)0x2f78, (q15_t)0x2f72, (q15_t)0x2f6d, (q15_t)0x2f67, (q15_t)0x2f61, (q15_t)0x2f5b,\n  (q15_t)0x2f55, (q15_t)0x2f4f, (q15_t)0x2f4a, (q15_t)0x2f44, (q15_t)0x2f3e, (q15_t)0x2f38, (q15_t)0x2f32, (q15_t)0x2f2c,\n  (q15_t)0x2f27, (q15_t)0x2f21, (q15_t)0x2f1b, (q15_t)0x2f15, (q15_t)0x2f0f, (q15_t)0x2f09, (q15_t)0x2f03, (q15_t)0x2efe,\n  (q15_t)0x2ef8, (q15_t)0x2ef2, (q15_t)0x2eec, (q15_t)0x2ee6, (q15_t)0x2ee0, (q15_t)0x2edb, (q15_t)0x2ed5, (q15_t)0x2ecf,\n  (q15_t)0x2ec9, (q15_t)0x2ec3, (q15_t)0x2ebd, (q15_t)0x2eb7, (q15_t)0x2eb2, (q15_t)0x2eac, (q15_t)0x2ea6, (q15_t)0x2ea0,\n  (q15_t)0x2e9a, (q15_t)0x2e94, (q15_t)0x2e8e, (q15_t)0x2e89, (q15_t)0x2e83, (q15_t)0x2e7d, (q15_t)0x2e77, (q15_t)0x2e71,\n  (q15_t)0x2e6b, (q15_t)0x2e65, (q15_t)0x2e60, (q15_t)0x2e5a, (q15_t)0x2e54, (q15_t)0x2e4e, (q15_t)0x2e48, (q15_t)0x2e42,\n  (q15_t)0x2e3c, (q15_t)0x2e37, (q15_t)0x2e31, (q15_t)0x2e2b, (q15_t)0x2e25, (q15_t)0x2e1f, (q15_t)0x2e19, (q15_t)0x2e13,\n  (q15_t)0x2e0e, (q15_t)0x2e08, (q15_t)0x2e02, (q15_t)0x2dfc, (q15_t)0x2df6, (q15_t)0x2df0, (q15_t)0x2dea, (q15_t)0x2de5,\n  (q15_t)0x2ddf, (q15_t)0x2dd9, (q15_t)0x2dd3, (q15_t)0x2dcd, (q15_t)0x2dc7, (q15_t)0x2dc1, (q15_t)0x2dbb, (q15_t)0x2db6,\n  (q15_t)0x2db0, (q15_t)0x2daa, (q15_t)0x2da4, (q15_t)0x2d9e, (q15_t)0x2d98, (q15_t)0x2d92, (q15_t)0x2d8d, (q15_t)0x2d87,\n  (q15_t)0x2d81, (q15_t)0x2d7b, (q15_t)0x2d75, (q15_t)0x2d6f, (q15_t)0x2d69, (q15_t)0x2d63, (q15_t)0x2d5e, (q15_t)0x2d58,\n  (q15_t)0x2d52, (q15_t)0x2d4c, (q15_t)0x2d46, (q15_t)0x2d40, (q15_t)0x2d3a, (q15_t)0x2d34, (q15_t)0x2d2f, (q15_t)0x2d29,\n  (q15_t)0x2d23, (q15_t)0x2d1d, (q15_t)0x2d17, (q15_t)0x2d11, (q15_t)0x2d0b, (q15_t)0x2d05, (q15_t)0x2cff, (q15_t)0x2cfa,\n  (q15_t)0x2cf4, (q15_t)0x2cee, (q15_t)0x2ce8, (q15_t)0x2ce2, (q15_t)0x2cdc, (q15_t)0x2cd6, (q15_t)0x2cd0, (q15_t)0x2ccb,\n  (q15_t)0x2cc5, (q15_t)0x2cbf, (q15_t)0x2cb9, (q15_t)0x2cb3, (q15_t)0x2cad, (q15_t)0x2ca7, (q15_t)0x2ca1, (q15_t)0x2c9b,\n  (q15_t)0x2c96, (q15_t)0x2c90, (q15_t)0x2c8a, (q15_t)0x2c84, (q15_t)0x2c7e, (q15_t)0x2c78, (q15_t)0x2c72, (q15_t)0x2c6c,\n  (q15_t)0x2c66, (q15_t)0x2c61, (q15_t)0x2c5b, (q15_t)0x2c55, (q15_t)0x2c4f, (q15_t)0x2c49, (q15_t)0x2c43, (q15_t)0x2c3d,\n  (q15_t)0x2c37, (q15_t)0x2c31, (q15_t)0x2c2b, (q15_t)0x2c26, (q15_t)0x2c20, (q15_t)0x2c1a, (q15_t)0x2c14, (q15_t)0x2c0e,\n  (q15_t)0x2c08, (q15_t)0x2c02, (q15_t)0x2bfc, (q15_t)0x2bf6, (q15_t)0x2bf0, (q15_t)0x2beb, (q15_t)0x2be5, (q15_t)0x2bdf,\n  (q15_t)0x2bd9, (q15_t)0x2bd3, (q15_t)0x2bcd, (q15_t)0x2bc7, (q15_t)0x2bc1, (q15_t)0x2bbb, (q15_t)0x2bb5, (q15_t)0x2bb0,\n  (q15_t)0x2baa, (q15_t)0x2ba4, (q15_t)0x2b9e, (q15_t)0x2b98, (q15_t)0x2b92, (q15_t)0x2b8c, (q15_t)0x2b86, (q15_t)0x2b80,\n  (q15_t)0x2b7a, (q15_t)0x2b74, (q15_t)0x2b6f, (q15_t)0x2b69, (q15_t)0x2b63, (q15_t)0x2b5d, (q15_t)0x2b57, (q15_t)0x2b51,\n  (q15_t)0x2b4b, (q15_t)0x2b45, (q15_t)0x2b3f, (q15_t)0x2b39, (q15_t)0x2b33, (q15_t)0x2b2d, (q15_t)0x2b28, (q15_t)0x2b22,\n  (q15_t)0x2b1c, (q15_t)0x2b16, (q15_t)0x2b10, (q15_t)0x2b0a, (q15_t)0x2b04, (q15_t)0x2afe, (q15_t)0x2af8, (q15_t)0x2af2,\n  (q15_t)0x2aec, (q15_t)0x2ae6, (q15_t)0x2ae1, (q15_t)0x2adb, (q15_t)0x2ad5, (q15_t)0x2acf, (q15_t)0x2ac9, (q15_t)0x2ac3,\n  (q15_t)0x2abd, (q15_t)0x2ab7, (q15_t)0x2ab1, (q15_t)0x2aab, (q15_t)0x2aa5, (q15_t)0x2a9f, (q15_t)0x2a99, (q15_t)0x2a94,\n  (q15_t)0x2a8e, (q15_t)0x2a88, (q15_t)0x2a82, (q15_t)0x2a7c, (q15_t)0x2a76, (q15_t)0x2a70, (q15_t)0x2a6a, (q15_t)0x2a64,\n  (q15_t)0x2a5e, (q15_t)0x2a58, (q15_t)0x2a52, (q15_t)0x2a4c, (q15_t)0x2a47, (q15_t)0x2a41, (q15_t)0x2a3b, (q15_t)0x2a35,\n  (q15_t)0x2a2f, (q15_t)0x2a29, (q15_t)0x2a23, (q15_t)0x2a1d, (q15_t)0x2a17, (q15_t)0x2a11, (q15_t)0x2a0b, (q15_t)0x2a05,\n  (q15_t)0x29ff, (q15_t)0x29f9, (q15_t)0x29f3, (q15_t)0x29ee, (q15_t)0x29e8, (q15_t)0x29e2, (q15_t)0x29dc, (q15_t)0x29d6,\n  (q15_t)0x29d0, (q15_t)0x29ca, (q15_t)0x29c4, (q15_t)0x29be, (q15_t)0x29b8, (q15_t)0x29b2, (q15_t)0x29ac, (q15_t)0x29a6,\n  (q15_t)0x29a0, (q15_t)0x299a, (q15_t)0x2994, (q15_t)0x298e, (q15_t)0x2989, (q15_t)0x2983, (q15_t)0x297d, (q15_t)0x2977,\n  (q15_t)0x2971, (q15_t)0x296b, (q15_t)0x2965, (q15_t)0x295f, (q15_t)0x2959, (q15_t)0x2953, (q15_t)0x294d, (q15_t)0x2947,\n  (q15_t)0x2941, (q15_t)0x293b, (q15_t)0x2935, (q15_t)0x292f, (q15_t)0x2929, (q15_t)0x2923, (q15_t)0x291d, (q15_t)0x2918,\n  (q15_t)0x2912, (q15_t)0x290c, (q15_t)0x2906, (q15_t)0x2900, (q15_t)0x28fa, (q15_t)0x28f4, (q15_t)0x28ee, (q15_t)0x28e8,\n  (q15_t)0x28e2, (q15_t)0x28dc, (q15_t)0x28d6, (q15_t)0x28d0, (q15_t)0x28ca, (q15_t)0x28c4, (q15_t)0x28be, (q15_t)0x28b8,\n  (q15_t)0x28b2, (q15_t)0x28ac, (q15_t)0x28a6, (q15_t)0x28a0, (q15_t)0x289a, (q15_t)0x2895, (q15_t)0x288f, (q15_t)0x2889,\n  (q15_t)0x2883, (q15_t)0x287d, (q15_t)0x2877, (q15_t)0x2871, (q15_t)0x286b, (q15_t)0x2865, (q15_t)0x285f, (q15_t)0x2859,\n  (q15_t)0x2853, (q15_t)0x284d, (q15_t)0x2847, (q15_t)0x2841, (q15_t)0x283b, (q15_t)0x2835, (q15_t)0x282f, (q15_t)0x2829,\n  (q15_t)0x2823, (q15_t)0x281d, (q15_t)0x2817, (q15_t)0x2811, (q15_t)0x280b, (q15_t)0x2805, (q15_t)0x27ff, (q15_t)0x27f9,\n  (q15_t)0x27f3, (q15_t)0x27ee, (q15_t)0x27e8, (q15_t)0x27e2, (q15_t)0x27dc, (q15_t)0x27d6, (q15_t)0x27d0, (q15_t)0x27ca,\n  (q15_t)0x27c4, (q15_t)0x27be, (q15_t)0x27b8, (q15_t)0x27b2, (q15_t)0x27ac, (q15_t)0x27a6, (q15_t)0x27a0, (q15_t)0x279a,\n  (q15_t)0x2794, (q15_t)0x278e, (q15_t)0x2788, (q15_t)0x2782, (q15_t)0x277c, (q15_t)0x2776, (q15_t)0x2770, (q15_t)0x276a,\n  (q15_t)0x2764, (q15_t)0x275e, (q15_t)0x2758, (q15_t)0x2752, (q15_t)0x274c, (q15_t)0x2746, (q15_t)0x2740, (q15_t)0x273a,\n  (q15_t)0x2734, (q15_t)0x272e, (q15_t)0x2728, (q15_t)0x2722, (q15_t)0x271c, (q15_t)0x2716, (q15_t)0x2710, (q15_t)0x270a,\n  (q15_t)0x2704, (q15_t)0x26fe, (q15_t)0x26f8, (q15_t)0x26f2, (q15_t)0x26ec, (q15_t)0x26e7, (q15_t)0x26e1, (q15_t)0x26db,\n  (q15_t)0x26d5, (q15_t)0x26cf, (q15_t)0x26c9, (q15_t)0x26c3, (q15_t)0x26bd, (q15_t)0x26b7, (q15_t)0x26b1, (q15_t)0x26ab,\n  (q15_t)0x26a5, (q15_t)0x269f, (q15_t)0x2699, (q15_t)0x2693, (q15_t)0x268d, (q15_t)0x2687, (q15_t)0x2681, (q15_t)0x267b,\n  (q15_t)0x2675, (q15_t)0x266f, (q15_t)0x2669, (q15_t)0x2663, (q15_t)0x265d, (q15_t)0x2657, (q15_t)0x2651, (q15_t)0x264b,\n  (q15_t)0x2645, (q15_t)0x263f, (q15_t)0x2639, (q15_t)0x2633, (q15_t)0x262d, (q15_t)0x2627, (q15_t)0x2621, (q15_t)0x261b,\n  (q15_t)0x2615, (q15_t)0x260f, (q15_t)0x2609, (q15_t)0x2603, (q15_t)0x25fd, (q15_t)0x25f7, (q15_t)0x25f1, (q15_t)0x25eb,\n  (q15_t)0x25e5, (q15_t)0x25df, (q15_t)0x25d9, (q15_t)0x25d3, (q15_t)0x25cd, (q15_t)0x25c7, (q15_t)0x25c1, (q15_t)0x25bb,\n  (q15_t)0x25b5, (q15_t)0x25af, (q15_t)0x25a9, (q15_t)0x25a3, (q15_t)0x259d, (q15_t)0x2597, (q15_t)0x2591, (q15_t)0x258b,\n  (q15_t)0x2585, (q15_t)0x257f, (q15_t)0x2579, (q15_t)0x2573, (q15_t)0x256d, (q15_t)0x2567, (q15_t)0x2561, (q15_t)0x255b,\n  (q15_t)0x2555, (q15_t)0x254f, (q15_t)0x2549, (q15_t)0x2543, (q15_t)0x253d, (q15_t)0x2537, (q15_t)0x2531, (q15_t)0x252b,\n  (q15_t)0x2525, (q15_t)0x251f, (q15_t)0x2519, (q15_t)0x2513, (q15_t)0x250c, (q15_t)0x2506, (q15_t)0x2500, (q15_t)0x24fa,\n  (q15_t)0x24f4, (q15_t)0x24ee, (q15_t)0x24e8, (q15_t)0x24e2, (q15_t)0x24dc, (q15_t)0x24d6, (q15_t)0x24d0, (q15_t)0x24ca,\n  (q15_t)0x24c4, (q15_t)0x24be, (q15_t)0x24b8, (q15_t)0x24b2, (q15_t)0x24ac, (q15_t)0x24a6, (q15_t)0x24a0, (q15_t)0x249a,\n  (q15_t)0x2494, (q15_t)0x248e, (q15_t)0x2488, (q15_t)0x2482, (q15_t)0x247c, (q15_t)0x2476, (q15_t)0x2470, (q15_t)0x246a,\n  (q15_t)0x2464, (q15_t)0x245e, (q15_t)0x2458, (q15_t)0x2452, (q15_t)0x244c, (q15_t)0x2446, (q15_t)0x2440, (q15_t)0x243a,\n  (q15_t)0x2434, (q15_t)0x242e, (q15_t)0x2428, (q15_t)0x2422, (q15_t)0x241c, (q15_t)0x2416, (q15_t)0x2410, (q15_t)0x240a,\n  (q15_t)0x2404, (q15_t)0x23fd, (q15_t)0x23f7, (q15_t)0x23f1, (q15_t)0x23eb, (q15_t)0x23e5, (q15_t)0x23df, (q15_t)0x23d9,\n  (q15_t)0x23d3, (q15_t)0x23cd, (q15_t)0x23c7, (q15_t)0x23c1, (q15_t)0x23bb, (q15_t)0x23b5, (q15_t)0x23af, (q15_t)0x23a9,\n  (q15_t)0x23a3, (q15_t)0x239d, (q15_t)0x2397, (q15_t)0x2391, (q15_t)0x238b, (q15_t)0x2385, (q15_t)0x237f, (q15_t)0x2379,\n  (q15_t)0x2373, (q15_t)0x236d, (q15_t)0x2367, (q15_t)0x2361, (q15_t)0x235b, (q15_t)0x2355, (q15_t)0x234e, (q15_t)0x2348,\n  (q15_t)0x2342, (q15_t)0x233c, (q15_t)0x2336, (q15_t)0x2330, (q15_t)0x232a, (q15_t)0x2324, (q15_t)0x231e, (q15_t)0x2318,\n  (q15_t)0x2312, (q15_t)0x230c, (q15_t)0x2306, (q15_t)0x2300, (q15_t)0x22fa, (q15_t)0x22f4, (q15_t)0x22ee, (q15_t)0x22e8,\n  (q15_t)0x22e2, (q15_t)0x22dc, (q15_t)0x22d6, (q15_t)0x22d0, (q15_t)0x22ca, (q15_t)0x22c4, (q15_t)0x22bd, (q15_t)0x22b7,\n  (q15_t)0x22b1, (q15_t)0x22ab, (q15_t)0x22a5, (q15_t)0x229f, (q15_t)0x2299, (q15_t)0x2293, (q15_t)0x228d, (q15_t)0x2287,\n  (q15_t)0x2281, (q15_t)0x227b, (q15_t)0x2275, (q15_t)0x226f, (q15_t)0x2269, (q15_t)0x2263, (q15_t)0x225d, (q15_t)0x2257,\n  (q15_t)0x2251, (q15_t)0x224a, (q15_t)0x2244, (q15_t)0x223e, (q15_t)0x2238, (q15_t)0x2232, (q15_t)0x222c, (q15_t)0x2226,\n  (q15_t)0x2220, (q15_t)0x221a, (q15_t)0x2214, (q15_t)0x220e, (q15_t)0x2208, (q15_t)0x2202, (q15_t)0x21fc, (q15_t)0x21f6,\n  (q15_t)0x21f0, (q15_t)0x21ea, (q15_t)0x21e4, (q15_t)0x21dd, (q15_t)0x21d7, (q15_t)0x21d1, (q15_t)0x21cb, (q15_t)0x21c5,\n  (q15_t)0x21bf, (q15_t)0x21b9, (q15_t)0x21b3, (q15_t)0x21ad, (q15_t)0x21a7, (q15_t)0x21a1, (q15_t)0x219b, (q15_t)0x2195,\n  (q15_t)0x218f, (q15_t)0x2189, (q15_t)0x2183, (q15_t)0x217c, (q15_t)0x2176, (q15_t)0x2170, (q15_t)0x216a, (q15_t)0x2164,\n  (q15_t)0x215e, (q15_t)0x2158, (q15_t)0x2152, (q15_t)0x214c, (q15_t)0x2146, (q15_t)0x2140, (q15_t)0x213a, (q15_t)0x2134,\n  (q15_t)0x212e, (q15_t)0x2128, (q15_t)0x2121, (q15_t)0x211b, (q15_t)0x2115, (q15_t)0x210f, (q15_t)0x2109, (q15_t)0x2103,\n  (q15_t)0x20fd, (q15_t)0x20f7, (q15_t)0x20f1, (q15_t)0x20eb, (q15_t)0x20e5, (q15_t)0x20df, (q15_t)0x20d9, (q15_t)0x20d3,\n  (q15_t)0x20cc, (q15_t)0x20c6, (q15_t)0x20c0, (q15_t)0x20ba, (q15_t)0x20b4, (q15_t)0x20ae, (q15_t)0x20a8, (q15_t)0x20a2,\n  (q15_t)0x209c, (q15_t)0x2096, (q15_t)0x2090, (q15_t)0x208a, (q15_t)0x2084, (q15_t)0x207e, (q15_t)0x2077, (q15_t)0x2071,\n  (q15_t)0x206b, (q15_t)0x2065, (q15_t)0x205f, (q15_t)0x2059, (q15_t)0x2053, (q15_t)0x204d, (q15_t)0x2047, (q15_t)0x2041,\n  (q15_t)0x203b, (q15_t)0x2035, (q15_t)0x202e, (q15_t)0x2028, (q15_t)0x2022, (q15_t)0x201c, (q15_t)0x2016, (q15_t)0x2010,\n  (q15_t)0x200a, (q15_t)0x2004, (q15_t)0x1ffe, (q15_t)0x1ff8, (q15_t)0x1ff2, (q15_t)0x1fec, (q15_t)0x1fe5, (q15_t)0x1fdf,\n  (q15_t)0x1fd9, (q15_t)0x1fd3, (q15_t)0x1fcd, (q15_t)0x1fc7, (q15_t)0x1fc1, (q15_t)0x1fbb, (q15_t)0x1fb5, (q15_t)0x1faf,\n  (q15_t)0x1fa9, (q15_t)0x1fa3, (q15_t)0x1f9c, (q15_t)0x1f96, (q15_t)0x1f90, (q15_t)0x1f8a, (q15_t)0x1f84, (q15_t)0x1f7e,\n  (q15_t)0x1f78, (q15_t)0x1f72, (q15_t)0x1f6c, (q15_t)0x1f66, (q15_t)0x1f60, (q15_t)0x1f59, (q15_t)0x1f53, (q15_t)0x1f4d,\n  (q15_t)0x1f47, (q15_t)0x1f41, (q15_t)0x1f3b, (q15_t)0x1f35, (q15_t)0x1f2f, (q15_t)0x1f29, (q15_t)0x1f23, (q15_t)0x1f1d,\n  (q15_t)0x1f16, (q15_t)0x1f10, (q15_t)0x1f0a, (q15_t)0x1f04, (q15_t)0x1efe, (q15_t)0x1ef8, (q15_t)0x1ef2, (q15_t)0x1eec,\n  (q15_t)0x1ee6, (q15_t)0x1ee0, (q15_t)0x1ed9, (q15_t)0x1ed3, (q15_t)0x1ecd, (q15_t)0x1ec7, (q15_t)0x1ec1, (q15_t)0x1ebb,\n  (q15_t)0x1eb5, (q15_t)0x1eaf, (q15_t)0x1ea9, (q15_t)0x1ea3, (q15_t)0x1e9c, (q15_t)0x1e96, (q15_t)0x1e90, (q15_t)0x1e8a,\n  (q15_t)0x1e84, (q15_t)0x1e7e, (q15_t)0x1e78, (q15_t)0x1e72, (q15_t)0x1e6c, (q15_t)0x1e66, (q15_t)0x1e5f, (q15_t)0x1e59,\n  (q15_t)0x1e53, (q15_t)0x1e4d, (q15_t)0x1e47, (q15_t)0x1e41, (q15_t)0x1e3b, (q15_t)0x1e35, (q15_t)0x1e2f, (q15_t)0x1e29,\n  (q15_t)0x1e22, (q15_t)0x1e1c, (q15_t)0x1e16, (q15_t)0x1e10, (q15_t)0x1e0a, (q15_t)0x1e04, (q15_t)0x1dfe, (q15_t)0x1df8,\n  (q15_t)0x1df2, (q15_t)0x1deb, (q15_t)0x1de5, (q15_t)0x1ddf, (q15_t)0x1dd9, (q15_t)0x1dd3, (q15_t)0x1dcd, (q15_t)0x1dc7,\n  (q15_t)0x1dc1, (q15_t)0x1dbb, (q15_t)0x1db4, (q15_t)0x1dae, (q15_t)0x1da8, (q15_t)0x1da2, (q15_t)0x1d9c, (q15_t)0x1d96,\n  (q15_t)0x1d90, (q15_t)0x1d8a, (q15_t)0x1d84, (q15_t)0x1d7d, (q15_t)0x1d77, (q15_t)0x1d71, (q15_t)0x1d6b, (q15_t)0x1d65,\n  (q15_t)0x1d5f, (q15_t)0x1d59, (q15_t)0x1d53, (q15_t)0x1d4c, (q15_t)0x1d46, (q15_t)0x1d40, (q15_t)0x1d3a, (q15_t)0x1d34,\n  (q15_t)0x1d2e, (q15_t)0x1d28, (q15_t)0x1d22, (q15_t)0x1d1c, (q15_t)0x1d15, (q15_t)0x1d0f, (q15_t)0x1d09, (q15_t)0x1d03,\n  (q15_t)0x1cfd, (q15_t)0x1cf7, (q15_t)0x1cf1, (q15_t)0x1ceb, (q15_t)0x1ce4, (q15_t)0x1cde, (q15_t)0x1cd8, (q15_t)0x1cd2,\n  (q15_t)0x1ccc, (q15_t)0x1cc6, (q15_t)0x1cc0, (q15_t)0x1cba, (q15_t)0x1cb3, (q15_t)0x1cad, (q15_t)0x1ca7, (q15_t)0x1ca1,\n  (q15_t)0x1c9b, (q15_t)0x1c95, (q15_t)0x1c8f, (q15_t)0x1c89, (q15_t)0x1c83, (q15_t)0x1c7c, (q15_t)0x1c76, (q15_t)0x1c70,\n  (q15_t)0x1c6a, (q15_t)0x1c64, (q15_t)0x1c5e, (q15_t)0x1c58, (q15_t)0x1c51, (q15_t)0x1c4b, (q15_t)0x1c45, (q15_t)0x1c3f,\n  (q15_t)0x1c39, (q15_t)0x1c33, (q15_t)0x1c2d, (q15_t)0x1c27, (q15_t)0x1c20, (q15_t)0x1c1a, (q15_t)0x1c14, (q15_t)0x1c0e,\n  (q15_t)0x1c08, (q15_t)0x1c02, (q15_t)0x1bfc, (q15_t)0x1bf6, (q15_t)0x1bef, (q15_t)0x1be9, (q15_t)0x1be3, (q15_t)0x1bdd,\n  (q15_t)0x1bd7, (q15_t)0x1bd1, (q15_t)0x1bcb, (q15_t)0x1bc4, (q15_t)0x1bbe, (q15_t)0x1bb8, (q15_t)0x1bb2, (q15_t)0x1bac,\n  (q15_t)0x1ba6, (q15_t)0x1ba0, (q15_t)0x1b9a, (q15_t)0x1b93, (q15_t)0x1b8d, (q15_t)0x1b87, (q15_t)0x1b81, (q15_t)0x1b7b,\n  (q15_t)0x1b75, (q15_t)0x1b6f, (q15_t)0x1b68, (q15_t)0x1b62, (q15_t)0x1b5c, (q15_t)0x1b56, (q15_t)0x1b50, (q15_t)0x1b4a,\n  (q15_t)0x1b44, (q15_t)0x1b3d, (q15_t)0x1b37, (q15_t)0x1b31, (q15_t)0x1b2b, (q15_t)0x1b25, (q15_t)0x1b1f, (q15_t)0x1b19,\n  (q15_t)0x1b13, (q15_t)0x1b0c, (q15_t)0x1b06, (q15_t)0x1b00, (q15_t)0x1afa, (q15_t)0x1af4, (q15_t)0x1aee, (q15_t)0x1ae8,\n  (q15_t)0x1ae1, (q15_t)0x1adb, (q15_t)0x1ad5, (q15_t)0x1acf, (q15_t)0x1ac9, (q15_t)0x1ac3, (q15_t)0x1abd, (q15_t)0x1ab6,\n  (q15_t)0x1ab0, (q15_t)0x1aaa, (q15_t)0x1aa4, (q15_t)0x1a9e, (q15_t)0x1a98, (q15_t)0x1a91, (q15_t)0x1a8b, (q15_t)0x1a85,\n  (q15_t)0x1a7f, (q15_t)0x1a79, (q15_t)0x1a73, (q15_t)0x1a6d, (q15_t)0x1a66, (q15_t)0x1a60, (q15_t)0x1a5a, (q15_t)0x1a54,\n  (q15_t)0x1a4e, (q15_t)0x1a48, (q15_t)0x1a42, (q15_t)0x1a3b, (q15_t)0x1a35, (q15_t)0x1a2f, (q15_t)0x1a29, (q15_t)0x1a23,\n  (q15_t)0x1a1d, (q15_t)0x1a17, (q15_t)0x1a10, (q15_t)0x1a0a, (q15_t)0x1a04, (q15_t)0x19fe, (q15_t)0x19f8, (q15_t)0x19f2,\n  (q15_t)0x19eb, (q15_t)0x19e5, (q15_t)0x19df, (q15_t)0x19d9, (q15_t)0x19d3, (q15_t)0x19cd, (q15_t)0x19c7, (q15_t)0x19c0,\n  (q15_t)0x19ba, (q15_t)0x19b4, (q15_t)0x19ae, (q15_t)0x19a8, (q15_t)0x19a2, (q15_t)0x199b, (q15_t)0x1995, (q15_t)0x198f,\n  (q15_t)0x1989, (q15_t)0x1983, (q15_t)0x197d, (q15_t)0x1977, (q15_t)0x1970, (q15_t)0x196a, (q15_t)0x1964, (q15_t)0x195e,\n  (q15_t)0x1958, (q15_t)0x1952, (q15_t)0x194b, (q15_t)0x1945, (q15_t)0x193f, (q15_t)0x1939, (q15_t)0x1933, (q15_t)0x192d,\n  (q15_t)0x1926, (q15_t)0x1920, (q15_t)0x191a, (q15_t)0x1914, (q15_t)0x190e, (q15_t)0x1908, (q15_t)0x1901, (q15_t)0x18fb,\n  (q15_t)0x18f5, (q15_t)0x18ef, (q15_t)0x18e9, (q15_t)0x18e3, (q15_t)0x18dc, (q15_t)0x18d6, (q15_t)0x18d0, (q15_t)0x18ca,\n  (q15_t)0x18c4, (q15_t)0x18be, (q15_t)0x18b8, (q15_t)0x18b1, (q15_t)0x18ab, (q15_t)0x18a5, (q15_t)0x189f, (q15_t)0x1899,\n  (q15_t)0x1893, (q15_t)0x188c, (q15_t)0x1886, (q15_t)0x1880, (q15_t)0x187a, (q15_t)0x1874, (q15_t)0x186e, (q15_t)0x1867,\n  (q15_t)0x1861, (q15_t)0x185b, (q15_t)0x1855, (q15_t)0x184f, (q15_t)0x1848, (q15_t)0x1842, (q15_t)0x183c, (q15_t)0x1836,\n  (q15_t)0x1830, (q15_t)0x182a, (q15_t)0x1823, (q15_t)0x181d, (q15_t)0x1817, (q15_t)0x1811, (q15_t)0x180b, (q15_t)0x1805,\n  (q15_t)0x17fe, (q15_t)0x17f8, (q15_t)0x17f2, (q15_t)0x17ec, (q15_t)0x17e6, (q15_t)0x17e0, (q15_t)0x17d9, (q15_t)0x17d3,\n  (q15_t)0x17cd, (q15_t)0x17c7, (q15_t)0x17c1, (q15_t)0x17bb, (q15_t)0x17b4, (q15_t)0x17ae, (q15_t)0x17a8, (q15_t)0x17a2,\n  (q15_t)0x179c, (q15_t)0x1795, (q15_t)0x178f, (q15_t)0x1789, (q15_t)0x1783, (q15_t)0x177d, (q15_t)0x1777, (q15_t)0x1770,\n  (q15_t)0x176a, (q15_t)0x1764, (q15_t)0x175e, (q15_t)0x1758, (q15_t)0x1752, (q15_t)0x174b, (q15_t)0x1745, (q15_t)0x173f,\n  (q15_t)0x1739, (q15_t)0x1733, (q15_t)0x172c, (q15_t)0x1726, (q15_t)0x1720, (q15_t)0x171a, (q15_t)0x1714, (q15_t)0x170e,\n  (q15_t)0x1707, (q15_t)0x1701, (q15_t)0x16fb, (q15_t)0x16f5, (q15_t)0x16ef, (q15_t)0x16e8, (q15_t)0x16e2, (q15_t)0x16dc,\n  (q15_t)0x16d6, (q15_t)0x16d0, (q15_t)0x16ca, (q15_t)0x16c3, (q15_t)0x16bd, (q15_t)0x16b7, (q15_t)0x16b1, (q15_t)0x16ab,\n  (q15_t)0x16a4, (q15_t)0x169e, (q15_t)0x1698, (q15_t)0x1692, (q15_t)0x168c, (q15_t)0x1686, (q15_t)0x167f, (q15_t)0x1679,\n  (q15_t)0x1673, (q15_t)0x166d, (q15_t)0x1667, (q15_t)0x1660, (q15_t)0x165a, (q15_t)0x1654, (q15_t)0x164e, (q15_t)0x1648,\n  (q15_t)0x1642, (q15_t)0x163b, (q15_t)0x1635, (q15_t)0x162f, (q15_t)0x1629, (q15_t)0x1623, (q15_t)0x161c, (q15_t)0x1616,\n  (q15_t)0x1610, (q15_t)0x160a, (q15_t)0x1604, (q15_t)0x15fd, (q15_t)0x15f7, (q15_t)0x15f1, (q15_t)0x15eb, (q15_t)0x15e5,\n  (q15_t)0x15de, (q15_t)0x15d8, (q15_t)0x15d2, (q15_t)0x15cc, (q15_t)0x15c6, (q15_t)0x15c0, (q15_t)0x15b9, (q15_t)0x15b3,\n  (q15_t)0x15ad, (q15_t)0x15a7, (q15_t)0x15a1, (q15_t)0x159a, (q15_t)0x1594, (q15_t)0x158e, (q15_t)0x1588, (q15_t)0x1582,\n  (q15_t)0x157b, (q15_t)0x1575, (q15_t)0x156f, (q15_t)0x1569, (q15_t)0x1563, (q15_t)0x155c, (q15_t)0x1556, (q15_t)0x1550,\n  (q15_t)0x154a, (q15_t)0x1544, (q15_t)0x153d, (q15_t)0x1537, (q15_t)0x1531, (q15_t)0x152b, (q15_t)0x1525, (q15_t)0x151e,\n  (q15_t)0x1518, (q15_t)0x1512, (q15_t)0x150c, (q15_t)0x1506, (q15_t)0x14ff, (q15_t)0x14f9, (q15_t)0x14f3, (q15_t)0x14ed,\n  (q15_t)0x14e7, (q15_t)0x14e0, (q15_t)0x14da, (q15_t)0x14d4, (q15_t)0x14ce, (q15_t)0x14c8, (q15_t)0x14c1, (q15_t)0x14bb,\n  (q15_t)0x14b5, (q15_t)0x14af, (q15_t)0x14a9, (q15_t)0x14a2, (q15_t)0x149c, (q15_t)0x1496, (q15_t)0x1490, (q15_t)0x148a,\n  (q15_t)0x1483, (q15_t)0x147d, (q15_t)0x1477, (q15_t)0x1471, (q15_t)0x146b, (q15_t)0x1464, (q15_t)0x145e, (q15_t)0x1458,\n  (q15_t)0x1452, (q15_t)0x144c, (q15_t)0x1445, (q15_t)0x143f, (q15_t)0x1439, (q15_t)0x1433, (q15_t)0x142d, (q15_t)0x1426,\n  (q15_t)0x1420, (q15_t)0x141a, (q15_t)0x1414, (q15_t)0x140e, (q15_t)0x1407, (q15_t)0x1401, (q15_t)0x13fb, (q15_t)0x13f5,\n  (q15_t)0x13ef, (q15_t)0x13e8, (q15_t)0x13e2, (q15_t)0x13dc, (q15_t)0x13d6, (q15_t)0x13d0, (q15_t)0x13c9, (q15_t)0x13c3,\n  (q15_t)0x13bd, (q15_t)0x13b7, (q15_t)0x13b1, (q15_t)0x13aa, (q15_t)0x13a4, (q15_t)0x139e, (q15_t)0x1398, (q15_t)0x1391,\n  (q15_t)0x138b, (q15_t)0x1385, (q15_t)0x137f, (q15_t)0x1379, (q15_t)0x1372, (q15_t)0x136c, (q15_t)0x1366, (q15_t)0x1360,\n  (q15_t)0x135a, (q15_t)0x1353, (q15_t)0x134d, (q15_t)0x1347, (q15_t)0x1341, (q15_t)0x133b, (q15_t)0x1334, (q15_t)0x132e,\n  (q15_t)0x1328, (q15_t)0x1322, (q15_t)0x131b, (q15_t)0x1315, (q15_t)0x130f, (q15_t)0x1309, (q15_t)0x1303, (q15_t)0x12fc,\n  (q15_t)0x12f6, (q15_t)0x12f0, (q15_t)0x12ea, (q15_t)0x12e4, (q15_t)0x12dd, (q15_t)0x12d7, (q15_t)0x12d1, (q15_t)0x12cb,\n  (q15_t)0x12c4, (q15_t)0x12be, (q15_t)0x12b8, (q15_t)0x12b2, (q15_t)0x12ac, (q15_t)0x12a5, (q15_t)0x129f, (q15_t)0x1299,\n  (q15_t)0x1293, (q15_t)0x128d, (q15_t)0x1286, (q15_t)0x1280, (q15_t)0x127a, (q15_t)0x1274, (q15_t)0x126d, (q15_t)0x1267,\n  (q15_t)0x1261, (q15_t)0x125b, (q15_t)0x1255, (q15_t)0x124e, (q15_t)0x1248, (q15_t)0x1242, (q15_t)0x123c, (q15_t)0x1235,\n  (q15_t)0x122f, (q15_t)0x1229, (q15_t)0x1223, (q15_t)0x121d, (q15_t)0x1216, (q15_t)0x1210, (q15_t)0x120a, (q15_t)0x1204,\n  (q15_t)0x11fd, (q15_t)0x11f7, (q15_t)0x11f1, (q15_t)0x11eb, (q15_t)0x11e5, (q15_t)0x11de, (q15_t)0x11d8, (q15_t)0x11d2,\n  (q15_t)0x11cc, (q15_t)0x11c5, (q15_t)0x11bf, (q15_t)0x11b9, (q15_t)0x11b3, (q15_t)0x11ad, (q15_t)0x11a6, (q15_t)0x11a0,\n  (q15_t)0x119a, (q15_t)0x1194, (q15_t)0x118d, (q15_t)0x1187, (q15_t)0x1181, (q15_t)0x117b, (q15_t)0x1175, (q15_t)0x116e,\n  (q15_t)0x1168, (q15_t)0x1162, (q15_t)0x115c, (q15_t)0x1155, (q15_t)0x114f, (q15_t)0x1149, (q15_t)0x1143, (q15_t)0x113d,\n  (q15_t)0x1136, (q15_t)0x1130, (q15_t)0x112a, (q15_t)0x1124, (q15_t)0x111d, (q15_t)0x1117, (q15_t)0x1111, (q15_t)0x110b,\n  (q15_t)0x1105, (q15_t)0x10fe, (q15_t)0x10f8, (q15_t)0x10f2, (q15_t)0x10ec, (q15_t)0x10e5, (q15_t)0x10df, (q15_t)0x10d9,\n  (q15_t)0x10d3, (q15_t)0x10cc, (q15_t)0x10c6, (q15_t)0x10c0, (q15_t)0x10ba, (q15_t)0x10b4, (q15_t)0x10ad, (q15_t)0x10a7,\n  (q15_t)0x10a1, (q15_t)0x109b, (q15_t)0x1094, (q15_t)0x108e, (q15_t)0x1088, (q15_t)0x1082, (q15_t)0x107b, (q15_t)0x1075,\n  (q15_t)0x106f, (q15_t)0x1069, (q15_t)0x1063, (q15_t)0x105c, (q15_t)0x1056, (q15_t)0x1050, (q15_t)0x104a, (q15_t)0x1043,\n  (q15_t)0x103d, (q15_t)0x1037, (q15_t)0x1031, (q15_t)0x102a, (q15_t)0x1024, (q15_t)0x101e, (q15_t)0x1018, (q15_t)0x1012,\n  (q15_t)0x100b, (q15_t)0x1005, (q15_t)0xfff, (q15_t)0xff9, (q15_t)0xff2, (q15_t)0xfec, (q15_t)0xfe6, (q15_t)0xfe0,\n  (q15_t)0xfd9, (q15_t)0xfd3, (q15_t)0xfcd, (q15_t)0xfc7, (q15_t)0xfc0, (q15_t)0xfba, (q15_t)0xfb4, (q15_t)0xfae,\n  (q15_t)0xfa8, (q15_t)0xfa1, (q15_t)0xf9b, (q15_t)0xf95, (q15_t)0xf8f, (q15_t)0xf88, (q15_t)0xf82, (q15_t)0xf7c,\n  (q15_t)0xf76, (q15_t)0xf6f, (q15_t)0xf69, (q15_t)0xf63, (q15_t)0xf5d, (q15_t)0xf56, (q15_t)0xf50, (q15_t)0xf4a,\n  (q15_t)0xf44, (q15_t)0xf3e, (q15_t)0xf37, (q15_t)0xf31, (q15_t)0xf2b, (q15_t)0xf25, (q15_t)0xf1e, (q15_t)0xf18,\n  (q15_t)0xf12, (q15_t)0xf0c, (q15_t)0xf05, (q15_t)0xeff, (q15_t)0xef9, (q15_t)0xef3, (q15_t)0xeec, (q15_t)0xee6,\n  (q15_t)0xee0, (q15_t)0xeda, (q15_t)0xed3, (q15_t)0xecd, (q15_t)0xec7, (q15_t)0xec1, (q15_t)0xeba, (q15_t)0xeb4,\n  (q15_t)0xeae, (q15_t)0xea8, (q15_t)0xea1, (q15_t)0xe9b, (q15_t)0xe95, (q15_t)0xe8f, (q15_t)0xe89, (q15_t)0xe82,\n  (q15_t)0xe7c, (q15_t)0xe76, (q15_t)0xe70, (q15_t)0xe69, (q15_t)0xe63, (q15_t)0xe5d, (q15_t)0xe57, (q15_t)0xe50,\n  (q15_t)0xe4a, (q15_t)0xe44, (q15_t)0xe3e, (q15_t)0xe37, (q15_t)0xe31, (q15_t)0xe2b, (q15_t)0xe25, (q15_t)0xe1e,\n  (q15_t)0xe18, (q15_t)0xe12, (q15_t)0xe0c, (q15_t)0xe05, (q15_t)0xdff, (q15_t)0xdf9, (q15_t)0xdf3, (q15_t)0xdec,\n  (q15_t)0xde6, (q15_t)0xde0, (q15_t)0xdda, (q15_t)0xdd3, (q15_t)0xdcd, (q15_t)0xdc7, (q15_t)0xdc1, (q15_t)0xdba,\n  (q15_t)0xdb4, (q15_t)0xdae, (q15_t)0xda8, (q15_t)0xda1, (q15_t)0xd9b, (q15_t)0xd95, (q15_t)0xd8f, (q15_t)0xd88,\n  (q15_t)0xd82, (q15_t)0xd7c, (q15_t)0xd76, (q15_t)0xd6f, (q15_t)0xd69, (q15_t)0xd63, (q15_t)0xd5d, (q15_t)0xd56,\n  (q15_t)0xd50, (q15_t)0xd4a, (q15_t)0xd44, (q15_t)0xd3d, (q15_t)0xd37, (q15_t)0xd31, (q15_t)0xd2b, (q15_t)0xd24,\n  (q15_t)0xd1e, (q15_t)0xd18, (q15_t)0xd12, (q15_t)0xd0b, (q15_t)0xd05, (q15_t)0xcff, (q15_t)0xcf9, (q15_t)0xcf2,\n  (q15_t)0xcec, (q15_t)0xce6, (q15_t)0xce0, (q15_t)0xcd9, (q15_t)0xcd3, (q15_t)0xccd, (q15_t)0xcc7, (q15_t)0xcc0,\n  (q15_t)0xcba, (q15_t)0xcb4, (q15_t)0xcae, (q15_t)0xca7, (q15_t)0xca1, (q15_t)0xc9b, (q15_t)0xc95, (q15_t)0xc8e,\n  (q15_t)0xc88, (q15_t)0xc82, (q15_t)0xc7c, (q15_t)0xc75, (q15_t)0xc6f, (q15_t)0xc69, (q15_t)0xc63, (q15_t)0xc5c,\n  (q15_t)0xc56, (q15_t)0xc50, (q15_t)0xc4a, (q15_t)0xc43, (q15_t)0xc3d, (q15_t)0xc37, (q15_t)0xc31, (q15_t)0xc2a,\n  (q15_t)0xc24, (q15_t)0xc1e, (q15_t)0xc18, (q15_t)0xc11, (q15_t)0xc0b, (q15_t)0xc05, (q15_t)0xbff, (q15_t)0xbf8,\n  (q15_t)0xbf2, (q15_t)0xbec, (q15_t)0xbe6, (q15_t)0xbdf, (q15_t)0xbd9, (q15_t)0xbd3, (q15_t)0xbcd, (q15_t)0xbc6,\n  (q15_t)0xbc0, (q15_t)0xbba, (q15_t)0xbb4, (q15_t)0xbad, (q15_t)0xba7, (q15_t)0xba1, (q15_t)0xb9b, (q15_t)0xb94,\n  (q15_t)0xb8e, (q15_t)0xb88, (q15_t)0xb81, (q15_t)0xb7b, (q15_t)0xb75, (q15_t)0xb6f, (q15_t)0xb68, (q15_t)0xb62,\n  (q15_t)0xb5c, (q15_t)0xb56, (q15_t)0xb4f, (q15_t)0xb49, (q15_t)0xb43, (q15_t)0xb3d, (q15_t)0xb36, (q15_t)0xb30,\n  (q15_t)0xb2a, (q15_t)0xb24, (q15_t)0xb1d, (q15_t)0xb17, (q15_t)0xb11, (q15_t)0xb0b, (q15_t)0xb04, (q15_t)0xafe,\n  (q15_t)0xaf8, (q15_t)0xaf2, (q15_t)0xaeb, (q15_t)0xae5, (q15_t)0xadf, (q15_t)0xad8, (q15_t)0xad2, (q15_t)0xacc,\n  (q15_t)0xac6, (q15_t)0xabf, (q15_t)0xab9, (q15_t)0xab3, (q15_t)0xaad, (q15_t)0xaa6, (q15_t)0xaa0, (q15_t)0xa9a,\n  (q15_t)0xa94, (q15_t)0xa8d, (q15_t)0xa87, (q15_t)0xa81, (q15_t)0xa7b, (q15_t)0xa74, (q15_t)0xa6e, (q15_t)0xa68,\n  (q15_t)0xa62, (q15_t)0xa5b, (q15_t)0xa55, (q15_t)0xa4f, (q15_t)0xa48, (q15_t)0xa42, (q15_t)0xa3c, (q15_t)0xa36,\n  (q15_t)0xa2f, (q15_t)0xa29, (q15_t)0xa23, (q15_t)0xa1d, (q15_t)0xa16, (q15_t)0xa10, (q15_t)0xa0a, (q15_t)0xa04,\n  (q15_t)0x9fd, (q15_t)0x9f7, (q15_t)0x9f1, (q15_t)0x9eb, (q15_t)0x9e4, (q15_t)0x9de, (q15_t)0x9d8, (q15_t)0x9d1,\n  (q15_t)0x9cb, (q15_t)0x9c5, (q15_t)0x9bf, (q15_t)0x9b8, (q15_t)0x9b2, (q15_t)0x9ac, (q15_t)0x9a6, (q15_t)0x99f,\n  (q15_t)0x999, (q15_t)0x993, (q15_t)0x98d, (q15_t)0x986, (q15_t)0x980, (q15_t)0x97a, (q15_t)0x973, (q15_t)0x96d,\n  (q15_t)0x967, (q15_t)0x961, (q15_t)0x95a, (q15_t)0x954, (q15_t)0x94e, (q15_t)0x948, (q15_t)0x941, (q15_t)0x93b,\n  (q15_t)0x935, (q15_t)0x92f, (q15_t)0x928, (q15_t)0x922, (q15_t)0x91c, (q15_t)0x915, (q15_t)0x90f, (q15_t)0x909,\n  (q15_t)0x903, (q15_t)0x8fc, (q15_t)0x8f6, (q15_t)0x8f0, (q15_t)0x8ea, (q15_t)0x8e3, (q15_t)0x8dd, (q15_t)0x8d7,\n  (q15_t)0x8d1, (q15_t)0x8ca, (q15_t)0x8c4, (q15_t)0x8be, (q15_t)0x8b7, (q15_t)0x8b1, (q15_t)0x8ab, (q15_t)0x8a5,\n  (q15_t)0x89e, (q15_t)0x898, (q15_t)0x892, (q15_t)0x88c, (q15_t)0x885, (q15_t)0x87f, (q15_t)0x879, (q15_t)0x872,\n  (q15_t)0x86c, (q15_t)0x866, (q15_t)0x860, (q15_t)0x859, (q15_t)0x853, (q15_t)0x84d, (q15_t)0x847, (q15_t)0x840,\n  (q15_t)0x83a, (q15_t)0x834, (q15_t)0x82e, (q15_t)0x827, (q15_t)0x821, (q15_t)0x81b, (q15_t)0x814, (q15_t)0x80e,\n  (q15_t)0x808, (q15_t)0x802, (q15_t)0x7fb, (q15_t)0x7f5, (q15_t)0x7ef, (q15_t)0x7e9, (q15_t)0x7e2, (q15_t)0x7dc,\n  (q15_t)0x7d6, (q15_t)0x7cf, (q15_t)0x7c9, (q15_t)0x7c3, (q15_t)0x7bd, (q15_t)0x7b6, (q15_t)0x7b0, (q15_t)0x7aa,\n  (q15_t)0x7a4, (q15_t)0x79d, (q15_t)0x797, (q15_t)0x791, (q15_t)0x78a, (q15_t)0x784, (q15_t)0x77e, (q15_t)0x778,\n  (q15_t)0x771, (q15_t)0x76b, (q15_t)0x765, (q15_t)0x75f, (q15_t)0x758, (q15_t)0x752, (q15_t)0x74c, (q15_t)0x745,\n  (q15_t)0x73f, (q15_t)0x739, (q15_t)0x733, (q15_t)0x72c, (q15_t)0x726, (q15_t)0x720, (q15_t)0x71a, (q15_t)0x713,\n  (q15_t)0x70d, (q15_t)0x707, (q15_t)0x700, (q15_t)0x6fa, (q15_t)0x6f4, (q15_t)0x6ee, (q15_t)0x6e7, (q15_t)0x6e1,\n  (q15_t)0x6db, (q15_t)0x6d5, (q15_t)0x6ce, (q15_t)0x6c8, (q15_t)0x6c2, (q15_t)0x6bb, (q15_t)0x6b5, (q15_t)0x6af,\n  (q15_t)0x6a9, (q15_t)0x6a2, (q15_t)0x69c, (q15_t)0x696, (q15_t)0x690, (q15_t)0x689, (q15_t)0x683, (q15_t)0x67d,\n  (q15_t)0x676, (q15_t)0x670, (q15_t)0x66a, (q15_t)0x664, (q15_t)0x65d, (q15_t)0x657, (q15_t)0x651, (q15_t)0x64a,\n  (q15_t)0x644, (q15_t)0x63e, (q15_t)0x638, (q15_t)0x631, (q15_t)0x62b, (q15_t)0x625, (q15_t)0x61f, (q15_t)0x618,\n  (q15_t)0x612, (q15_t)0x60c, (q15_t)0x605, (q15_t)0x5ff, (q15_t)0x5f9, (q15_t)0x5f3, (q15_t)0x5ec, (q15_t)0x5e6,\n  (q15_t)0x5e0, (q15_t)0x5da, (q15_t)0x5d3, (q15_t)0x5cd, (q15_t)0x5c7, (q15_t)0x5c0, (q15_t)0x5ba, (q15_t)0x5b4,\n  (q15_t)0x5ae, (q15_t)0x5a7, (q15_t)0x5a1, (q15_t)0x59b, (q15_t)0x594, (q15_t)0x58e, (q15_t)0x588, (q15_t)0x582,\n  (q15_t)0x57b, (q15_t)0x575, (q15_t)0x56f, (q15_t)0x569, (q15_t)0x562, (q15_t)0x55c, (q15_t)0x556, (q15_t)0x54f,\n  (q15_t)0x549, (q15_t)0x543, (q15_t)0x53d, (q15_t)0x536, (q15_t)0x530, (q15_t)0x52a, (q15_t)0x523, (q15_t)0x51d,\n  (q15_t)0x517, (q15_t)0x511, (q15_t)0x50a, (q15_t)0x504, (q15_t)0x4fe, (q15_t)0x4f8, (q15_t)0x4f1, (q15_t)0x4eb,\n  (q15_t)0x4e5, (q15_t)0x4de, (q15_t)0x4d8, (q15_t)0x4d2, (q15_t)0x4cc, (q15_t)0x4c5, (q15_t)0x4bf, (q15_t)0x4b9,\n  (q15_t)0x4b2, (q15_t)0x4ac, (q15_t)0x4a6, (q15_t)0x4a0, (q15_t)0x499, (q15_t)0x493, (q15_t)0x48d, (q15_t)0x487,\n  (q15_t)0x480, (q15_t)0x47a, (q15_t)0x474, (q15_t)0x46d, (q15_t)0x467, (q15_t)0x461, (q15_t)0x45b, (q15_t)0x454,\n  (q15_t)0x44e, (q15_t)0x448, (q15_t)0x441, (q15_t)0x43b, (q15_t)0x435, (q15_t)0x42f, (q15_t)0x428, (q15_t)0x422,\n  (q15_t)0x41c, (q15_t)0x415, (q15_t)0x40f, (q15_t)0x409, (q15_t)0x403, (q15_t)0x3fc, (q15_t)0x3f6, (q15_t)0x3f0,\n  (q15_t)0x3ea, (q15_t)0x3e3, (q15_t)0x3dd, (q15_t)0x3d7, (q15_t)0x3d0, (q15_t)0x3ca, (q15_t)0x3c4, (q15_t)0x3be,\n  (q15_t)0x3b7, (q15_t)0x3b1, (q15_t)0x3ab, (q15_t)0x3a4, (q15_t)0x39e, (q15_t)0x398, (q15_t)0x392, (q15_t)0x38b,\n  (q15_t)0x385, (q15_t)0x37f, (q15_t)0x378, (q15_t)0x372, (q15_t)0x36c, (q15_t)0x366, (q15_t)0x35f, (q15_t)0x359,\n  (q15_t)0x353, (q15_t)0x34c, (q15_t)0x346, (q15_t)0x340, (q15_t)0x33a, (q15_t)0x333, (q15_t)0x32d, (q15_t)0x327,\n  (q15_t)0x321, (q15_t)0x31a, (q15_t)0x314, (q15_t)0x30e, (q15_t)0x307, (q15_t)0x301, (q15_t)0x2fb, (q15_t)0x2f5,\n  (q15_t)0x2ee, (q15_t)0x2e8, (q15_t)0x2e2, (q15_t)0x2db, (q15_t)0x2d5, (q15_t)0x2cf, (q15_t)0x2c9, (q15_t)0x2c2,\n  (q15_t)0x2bc, (q15_t)0x2b6, (q15_t)0x2af, (q15_t)0x2a9, (q15_t)0x2a3, (q15_t)0x29d, (q15_t)0x296, (q15_t)0x290,\n  (q15_t)0x28a, (q15_t)0x283, (q15_t)0x27d, (q15_t)0x277, (q15_t)0x271, (q15_t)0x26a, (q15_t)0x264, (q15_t)0x25e,\n  (q15_t)0x258, (q15_t)0x251, (q15_t)0x24b, (q15_t)0x245, (q15_t)0x23e, (q15_t)0x238, (q15_t)0x232, (q15_t)0x22c,\n  (q15_t)0x225, (q15_t)0x21f, (q15_t)0x219, (q15_t)0x212, (q15_t)0x20c, (q15_t)0x206, (q15_t)0x200, (q15_t)0x1f9,\n  (q15_t)0x1f3, (q15_t)0x1ed, (q15_t)0x1e6, (q15_t)0x1e0, (q15_t)0x1da, (q15_t)0x1d4, (q15_t)0x1cd, (q15_t)0x1c7,\n  (q15_t)0x1c1, (q15_t)0x1ba, (q15_t)0x1b4, (q15_t)0x1ae, (q15_t)0x1a8, (q15_t)0x1a1, (q15_t)0x19b, (q15_t)0x195,\n  (q15_t)0x18e, (q15_t)0x188, (q15_t)0x182, (q15_t)0x17c, (q15_t)0x175, (q15_t)0x16f, (q15_t)0x169, (q15_t)0x162,\n  (q15_t)0x15c, (q15_t)0x156, (q15_t)0x150, (q15_t)0x149, (q15_t)0x143, (q15_t)0x13d, (q15_t)0x137, (q15_t)0x130,\n  (q15_t)0x12a, (q15_t)0x124, (q15_t)0x11d, (q15_t)0x117, (q15_t)0x111, (q15_t)0x10b, (q15_t)0x104, (q15_t)0xfe,\n  (q15_t)0xf8, (q15_t)0xf1, (q15_t)0xeb, (q15_t)0xe5, (q15_t)0xdf, (q15_t)0xd8, (q15_t)0xd2, (q15_t)0xcc,\n  (q15_t)0xc5, (q15_t)0xbf, (q15_t)0xb9, (q15_t)0xb3, (q15_t)0xac, (q15_t)0xa6, (q15_t)0xa0, (q15_t)0x99,\n  (q15_t)0x93, (q15_t)0x8d, (q15_t)0x87, (q15_t)0x80, (q15_t)0x7a, (q15_t)0x74, (q15_t)0x6d, (q15_t)0x67,\n  (q15_t)0x61, (q15_t)0x5b, (q15_t)0x54, (q15_t)0x4e, (q15_t)0x48, (q15_t)0x41, (q15_t)0x3b, (q15_t)0x35,\n  (q15_t)0x2f, (q15_t)0x28, (q15_t)0x22, (q15_t)0x1c, (q15_t)0x15, (q15_t)0xf, (q15_t)0x9, (q15_t)0x3\n};\n  #endif\n\n/**\n  @par\n  Weights tables are generated using the formula : <pre>weights[n] = e^(-j*n*pi/(2*N))</pre>\n  @par\n  C command to generate the table\n  <pre>\n  for (i = 0; i< N; i++)\n  {\n    weights[(2*i)]   =  cos(i*c);\n    weights[(2*i)+1] = -sin(i*c);\n  } </pre>\n  @par\n  where <code>N</code> is the Number of weights to be calculated and <code>c</code> is <code>pi/(2*N)</code>\n  @par\n  Convert the output to q31 format by multiplying with 2^31 and saturated if required.\n  @par\n  In the tables below the real and imaginary values are placed alternatively, hence the\n  array length is <code>2*N</code>.\n */\n\n/**\n  @par\n  cosFactor tables are generated using the formula : <pre>cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))</pre>\n  @par\n  C command to generate the table\n  <pre>\n  for (i = 0; i< N; i++)\n  {\n    cos_factors[i] = 2 * cos((2*i+1)*c/2);\n  } </pre>\n  @par\n  where <code>N</code> is the number of factors to generate and <code>c</code> is <code>pi/(2*N)</code>\n  @par\n  Then converted to q31 format by multiplying with 2^31 and saturated if required.\n*/\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_128)  \n    const q31_t WeightsQ31_128[256] = {\n  (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3,\n  (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7f872bf3, (q31_t)0xf50497fb,\n  (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31,\n  (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7dd6668f, (q31_t)0xe8922622,\n  (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7c894bde, (q31_t)0xe26cb01b,\n  (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7aef6323, (q31_t)0xdc597781,\n  (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x7909a92d, (q31_t)0xd65c3b7b,\n  (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x76d94989, (q31_t)0xd078ad9e,\n  (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x745f9dd1, (q31_t)0xcab26fa9,\n  (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x719e2cd2, (q31_t)0xc50d1149,\n  (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3,\n  (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6b4af279, (q31_t)0xba32ca71,\n  (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x67bd0fbd, (q31_t)0xb5049368,\n  (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x63ef3290, (q31_t)0xb0049ab3,\n  (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5,\n  (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5b9d1154, (q31_t)0xa69b9b68,\n  (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x571deefa, (q31_t)0xa2386284,\n  (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x5269126e, (q31_t)0x9e0effc1,\n  (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4d8162c4, (q31_t)0x9a22042d,\n  (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x4869e665, (q31_t)0x9673db94,\n  (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x4325c135, (q31_t)0x9306cb04,\n  (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3db832a6, (q31_t)0x8fdcef66,\n  (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x382493b0, (q31_t)0x8cf83c30,\n  (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x326e54c7, (q31_t)0x8a5a7a31,\n  (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2c98fbba, (q31_t)0x88054677,\n  (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x26a82186, (q31_t)0x85fa1153,\n  (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x209f701c, (q31_t)0x843a1d70,\n  (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1a82a026, (q31_t)0x82c67f14,\n  (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x145576b1, (q31_t)0x81a01b6d,\n  (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x0fab272b, (q31_t)0x80f66e3c, (q31_t)0x0e1bc2e4, (q31_t)0x80c7a80a,\n  (q31_t)0x0c8bd35e, (q31_t)0x809dc971, (q31_t)0x0afb6805, (q31_t)0x8078d40d, (q31_t)0x096a9049, (q31_t)0x8058c94c, (q31_t)0x07d95b9e, (q31_t)0x803daa6a,\n  (q31_t)0x0647d97c, (q31_t)0x80277872, (q31_t)0x04b6195d, (q31_t)0x80163440, (q31_t)0x03242abf, (q31_t)0x8009de7e, (q31_t)0x01921d20, (q31_t)0x800277a6\n};\n    const q31_t cos_factorsQ31_128[128] = {\n  (q31_t)0x7fff6216, (q31_t)0x7ffa72d1, (q31_t)0x7ff09478, (q31_t)0x7fe1c76b, (q31_t)0x7fce0c3e, (q31_t)0x7fb563b3,\n  (q31_t)0x7f97cebd, (q31_t)0x7f754e80,\n  (q31_t)0x7f4de451, (q31_t)0x7f2191b4, (q31_t)0x7ef05860, (q31_t)0x7eba3a39, (q31_t)0x7e7f3957, (q31_t)0x7e3f57ff,\n  (q31_t)0x7dfa98a8, (q31_t)0x7db0fdf8,\n  (q31_t)0x7d628ac6, (q31_t)0x7d0f4218, (q31_t)0x7cb72724, (q31_t)0x7c5a3d50, (q31_t)0x7bf88830, (q31_t)0x7b920b89,\n  (q31_t)0x7b26cb4f, (q31_t)0x7ab6cba4,\n  (q31_t)0x7a4210d8, (q31_t)0x79c89f6e, (q31_t)0x794a7c12, (q31_t)0x78c7aba2, (q31_t)0x78403329, (q31_t)0x77b417df,\n  (q31_t)0x77235f2d, (q31_t)0x768e0ea6,\n  (q31_t)0x75f42c0b, (q31_t)0x7555bd4c, (q31_t)0x74b2c884, (q31_t)0x740b53fb, (q31_t)0x735f6626, (q31_t)0x72af05a7,\n  (q31_t)0x71fa3949, (q31_t)0x71410805,\n  (q31_t)0x708378ff, (q31_t)0x6fc19385, (q31_t)0x6efb5f12, (q31_t)0x6e30e34a, (q31_t)0x6d6227fa, (q31_t)0x6c8f351c,\n  (q31_t)0x6bb812d1, (q31_t)0x6adcc964,\n  (q31_t)0x69fd614a, (q31_t)0x6919e320, (q31_t)0x683257ab, (q31_t)0x6746c7d8, (q31_t)0x66573cbb, (q31_t)0x6563bf92,\n  (q31_t)0x646c59bf, (q31_t)0x637114cc,\n  (q31_t)0x6271fa69, (q31_t)0x616f146c, (q31_t)0x60686ccf, (q31_t)0x5f5e0db3, (q31_t)0x5e50015d, (q31_t)0x5d3e5237,\n  (q31_t)0x5c290acc, (q31_t)0x5b1035cf,\n  (q31_t)0x59f3de12, (q31_t)0x58d40e8c, (q31_t)0x57b0d256, (q31_t)0x568a34a9, (q31_t)0x556040e2, (q31_t)0x5433027d,\n  (q31_t)0x53028518, (q31_t)0x51ced46e,\n  (q31_t)0x5097fc5e, (q31_t)0x4f5e08e3, (q31_t)0x4e210617, (q31_t)0x4ce10034, (q31_t)0x4b9e0390, (q31_t)0x4a581c9e,\n  (q31_t)0x490f57ee, (q31_t)0x47c3c22f,\n  (q31_t)0x46756828, (q31_t)0x452456bd, (q31_t)0x43d09aed, (q31_t)0x427a41d0, (q31_t)0x4121589b, (q31_t)0x3fc5ec98,\n  (q31_t)0x3e680b2c, (q31_t)0x3d07c1d6,\n  (q31_t)0x3ba51e29, (q31_t)0x3a402dd2, (q31_t)0x38d8fe93, (q31_t)0x376f9e46, (q31_t)0x36041ad9, (q31_t)0x34968250,\n  (q31_t)0x3326e2c3, (q31_t)0x31b54a5e,\n  (q31_t)0x3041c761, (q31_t)0x2ecc681e, (q31_t)0x2d553afc, (q31_t)0x2bdc4e6f, (q31_t)0x2a61b101, (q31_t)0x28e5714b,\n  (q31_t)0x27679df4, (q31_t)0x25e845b6,\n  (q31_t)0x24677758, (q31_t)0x22e541af, (q31_t)0x2161b3a0, (q31_t)0x1fdcdc1b, (q31_t)0x1e56ca1e, (q31_t)0x1ccf8cb3,\n  (q31_t)0x1b4732ef, (q31_t)0x19bdcbf3,\n  (q31_t)0x183366e9, (q31_t)0x16a81305, (q31_t)0x151bdf86, (q31_t)0x138edbb1, (q31_t)0x120116d5, (q31_t)0x1072a048,\n  (q31_t)0xee38766, (q31_t)0xd53db92,\n  (q31_t)0xbc3ac35, (q31_t)0xa3308bd, (q31_t)0x8a2009a, (q31_t)0x710a345, (q31_t)0x57f0035, (q31_t)0x3ed26e6, (q31_t)0x25b26d7,\n  (q31_t)0xc90f88\n};\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_512) \n    const q31_t WeightsQ31_512[1024] = {\n  (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f,\n  (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ff871a2, (q31_t)0xfd40565c,\n  (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7fed5791, (q31_t)0xfbae5e89,\n  (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157,\n  (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fc85854, (q31_t)0xf88afe42,\n  (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6,\n  (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b,\n  (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77,\n  (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f434563, (q31_t)0xf2482c8a,\n  (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401,\n  (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7ee34636, (q31_t)0xef29b243,\n  (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eabef2c, (q31_t)0xed9b66b2,\n  (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8,\n  (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a,\n  (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7de8a670, (q31_t)0xe8f50273,\n  (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8,\n  (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5,\n  (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb,\n  (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3,\n  (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c4242f2, (q31_t)0xe14794ba,\n  (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3,\n  (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b77ada8, (q31_t)0xde3d4964,\n  (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008,\n  (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd,\n  (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a24256f, (q31_t)0xd9b7c094,\n  (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79a98715, (q31_t)0xd838c82d,\n  (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x792a37fe, (q31_t)0xd6bb585e,\n  (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78a63d11, (q31_t)0xd53f7fda,\n  (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x781d9b65, (q31_t)0xd3c54d47,\n  (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x7790583e, (q31_t)0xd24ccf39,\n  (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x76fe790e, (q31_t)0xd0d61434,\n  (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x76680376, (q31_t)0xcf612aaa,\n  (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75ccfd42, (q31_t)0xcdee20fc,\n  (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x752d6c6c, (q31_t)0xcc7d0578,\n  (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x7489571c, (q31_t)0xcb0de658,\n  (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5,\n  (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x7333b883, (q31_t)0xc835d5d0,\n  (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72823c67, (q31_t)0xc6cd0079,\n  (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71cc5626, (q31_t)0xc5665fa9,\n  (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x71120cc5, (q31_t)0xc4020133,\n  (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x70536771, (q31_t)0xc29ff2d4,\n  (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6f906d84, (q31_t)0xc1404233,\n  (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf,\n  (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f,\n  (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2,\n  (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd,\n  (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6b81a3cd, (q31_t)0xba87246d,\n  (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6aa551e9, (q31_t)0xb936bfa4,\n  (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69c4e37a, (q31_t)0xb7e9157a,\n  (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x68e06129, (q31_t)0xb69e32cd,\n  (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x67f7d3c5, (q31_t)0xb556245e,\n  (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x670b4444, (q31_t)0xb410f6d3,\n  (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5,\n  (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x6526438f, (q31_t)0xb18f7071,\n  (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x642de50d, (q31_t)0xb0533055,\n  (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x6331a9d4, (q31_t)0xaf1a0293,\n  (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x62319b9d, (q31_t)0xade3f33e,\n  (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x612dc447, (q31_t)0xacb10e4b,\n  (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x60262dd6, (q31_t)0xab815f8d,\n  (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba,\n  (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e0bec6e, (q31_t)0xa92bd367,\n  (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5cf95638, (q31_t)0xa8060d08,\n  (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2,\n  (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5ac973b5, (q31_t)0xa5c4b855,\n  (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59ac3cfd, (q31_t)0xa4a94043,\n  (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x588b9140, (q31_t)0xa3914da8,\n  (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x57677b9d, (q31_t)0xa27ceb4f,\n  (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x56400758, (q31_t)0xa16c23e1,\n  (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x55153fd4, (q31_t)0xa05f01e1,\n  (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x53e73097, (q31_t)0x9f558fb0,\n  (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52b5e546, (q31_t)0x9e4fd78a,\n  (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x518169a5, (q31_t)0x9d4de385,\n  (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x5049c999, (q31_t)0x9c4fbd93,\n  (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f0f1126, (q31_t)0x9b556f81,\n  (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5,\n  (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4c9087b1, (q31_t)0x996c816f,\n  (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b4ccf4d, (q31_t)0x987df449,\n  (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a062fbd, (q31_t)0x979364b5,\n  (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x48bcb599, (q31_t)0x96acdbbe,\n  (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47706d93, (q31_t)0x95ca6247,\n  (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x4621647d, (q31_t)0x94ec010b,\n  (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x44cfa740, (q31_t)0x9411c09e,\n  (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x437b42e1, (q31_t)0x933ba968,\n  (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x42244481, (q31_t)0x9269c3ac,\n  (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x40cab958, (q31_t)0x919c1781,\n  (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4,\n  (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e10320d, (q31_t)0x900d8b69,\n  (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3caf50da, (q31_t)0x8f4cbadb,\n  (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b4c18ba, (q31_t)0x8e904298,\n  (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x39e6975e, (q31_t)0x8dd829e4,\n  (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x387eda8e, (q31_t)0x8d2477d8,\n  (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3714f02a, (q31_t)0x8c753362,\n  (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35a8e625, (q31_t)0x8bca6343,\n  (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x343aca87, (q31_t)0x8b240e11,\n  (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x32caab6f, (q31_t)0x8a823a36,\n  (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x3158970e, (q31_t)0x89e4edef,\n  (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c,\n  (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2e6ec792, (q31_t)0x88b80432,\n  (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2cf72939, (q31_t)0x88287256,\n  (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2b7dcf17, (q31_t)0x879d7f41,\n  (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a02c7b8, (q31_t)0x8717304e,\n  (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x288621b9, (q31_t)0x86958aac,\n  (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x2707ebc7, (q31_t)0x86189359,\n  (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x2588349d, (q31_t)0x85a04f28,\n  (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x24070b08, (q31_t)0x852cc2bb,\n  (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22847de0, (q31_t)0x84bdf286,\n  (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x21009c0c, (q31_t)0x8453e2cf,\n  (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1f7b7481, (q31_t)0x83ee97ad,\n  (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1df5163f, (q31_t)0x838e1507,\n  (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1c6d9053, (q31_t)0x83325e97,\n  (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5,\n  (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x195b49ea, (q31_t)0x8289644b,\n  (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x17d0a7bc, (q31_t)0x823c26f3,\n  (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x16451a83, (q31_t)0x81f3c2d7,\n  (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x14b8b17f, (q31_t)0x81b03ac2,\n  (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x132b7bf9, (q31_t)0x8171914e,\n  (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x119d8941, (q31_t)0x8137c8e6,\n  (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x100ee8ad, (q31_t)0x8102e3c4,\n  (q31_t)0x0fab272b, (q31_t)0x80f66e3c, (q31_t)0x0f475bff, (q31_t)0x80ea4712, (q31_t)0x0ee38766, (q31_t)0x80de6e4c, (q31_t)0x0e7fa99e, (q31_t)0x80d2e3f2,\n  (q31_t)0x0e1bc2e4, (q31_t)0x80c7a80a, (q31_t)0x0db7d376, (q31_t)0x80bcba9d, (q31_t)0x0d53db92, (q31_t)0x80b21baf, (q31_t)0x0cefdb76, (q31_t)0x80a7cb49,\n  (q31_t)0x0c8bd35e, (q31_t)0x809dc971, (q31_t)0x0c27c389, (q31_t)0x8094162c, (q31_t)0x0bc3ac35, (q31_t)0x808ab180, (q31_t)0x0b5f8d9f, (q31_t)0x80819b74,\n  (q31_t)0x0afb6805, (q31_t)0x8078d40d, (q31_t)0x0a973ba5, (q31_t)0x80705b50, (q31_t)0x0a3308bd, (q31_t)0x80683143, (q31_t)0x09cecf89, (q31_t)0x806055eb,\n  (q31_t)0x096a9049, (q31_t)0x8058c94c, (q31_t)0x09064b3a, (q31_t)0x80518b6b, (q31_t)0x08a2009a, (q31_t)0x804a9c4d, (q31_t)0x083db0a7, (q31_t)0x8043fbf6,\n  (q31_t)0x07d95b9e, (q31_t)0x803daa6a, (q31_t)0x077501be, (q31_t)0x8037a7ac, (q31_t)0x0710a345, (q31_t)0x8031f3c2, (q31_t)0x06ac406f, (q31_t)0x802c8ead,\n  (q31_t)0x0647d97c, (q31_t)0x80277872, (q31_t)0x05e36ea9, (q31_t)0x8022b114, (q31_t)0x057f0035, (q31_t)0x801e3895, (q31_t)0x051a8e5c, (q31_t)0x801a0ef8,\n  (q31_t)0x04b6195d, (q31_t)0x80163440, (q31_t)0x0451a177, (q31_t)0x8012a86f, (q31_t)0x03ed26e6, (q31_t)0x800f6b88, (q31_t)0x0388a9ea, (q31_t)0x800c7d8c,\n  (q31_t)0x03242abf, (q31_t)0x8009de7e, (q31_t)0x02bfa9a4, (q31_t)0x80078e5e, (q31_t)0x025b26d7, (q31_t)0x80058d2f, (q31_t)0x01f6a297, (q31_t)0x8003daf1,\n  (q31_t)0x01921d20, (q31_t)0x800277a6, (q31_t)0x012d96b1, (q31_t)0x8001634e, (q31_t)0x00c90f88, (q31_t)0x80009dea, (q31_t)0x006487e3, (q31_t)0x8000277a\n};\n    const q31_t cos_factorsQ31_512[512] = {\n  (q31_t)0x7ffff621, (q31_t)0x7fffa72c, (q31_t)0x7fff0943, (q31_t)0x7ffe1c65, (q31_t)0x7ffce093, (q31_t)0x7ffb55ce,\n  (q31_t)0x7ff97c18, (q31_t)0x7ff75370,\n  (q31_t)0x7ff4dbd9, (q31_t)0x7ff21553, (q31_t)0x7feeffe1, (q31_t)0x7feb9b85, (q31_t)0x7fe7e841, (q31_t)0x7fe3e616,\n  (q31_t)0x7fdf9508, (q31_t)0x7fdaf519,\n  (q31_t)0x7fd6064c, (q31_t)0x7fd0c8a3, (q31_t)0x7fcb3c23, (q31_t)0x7fc560cf, (q31_t)0x7fbf36aa, (q31_t)0x7fb8bdb8,\n  (q31_t)0x7fb1f5fc, (q31_t)0x7faadf7c,\n  (q31_t)0x7fa37a3c, (q31_t)0x7f9bc640, (q31_t)0x7f93c38c, (q31_t)0x7f8b7227, (q31_t)0x7f82d214, (q31_t)0x7f79e35a,\n  (q31_t)0x7f70a5fe, (q31_t)0x7f671a05,\n  (q31_t)0x7f5d3f75, (q31_t)0x7f531655, (q31_t)0x7f489eaa, (q31_t)0x7f3dd87c, (q31_t)0x7f32c3d1, (q31_t)0x7f2760af,\n  (q31_t)0x7f1baf1e, (q31_t)0x7f0faf25,\n  (q31_t)0x7f0360cb, (q31_t)0x7ef6c418, (q31_t)0x7ee9d914, (q31_t)0x7edc9fc6, (q31_t)0x7ecf1837, (q31_t)0x7ec14270,\n  (q31_t)0x7eb31e78, (q31_t)0x7ea4ac58,\n  (q31_t)0x7e95ec1a, (q31_t)0x7e86ddc6, (q31_t)0x7e778166, (q31_t)0x7e67d703, (q31_t)0x7e57dea7, (q31_t)0x7e47985b,\n  (q31_t)0x7e37042a, (q31_t)0x7e26221f,\n  (q31_t)0x7e14f242, (q31_t)0x7e0374a0, (q31_t)0x7df1a942, (q31_t)0x7ddf9034, (q31_t)0x7dcd2981, (q31_t)0x7dba7534,\n  (q31_t)0x7da77359, (q31_t)0x7d9423fc,\n  (q31_t)0x7d808728, (q31_t)0x7d6c9ce9, (q31_t)0x7d58654d, (q31_t)0x7d43e05e, (q31_t)0x7d2f0e2b, (q31_t)0x7d19eebf,\n  (q31_t)0x7d048228, (q31_t)0x7ceec873,\n  (q31_t)0x7cd8c1ae, (q31_t)0x7cc26de5, (q31_t)0x7cabcd28, (q31_t)0x7c94df83, (q31_t)0x7c7da505, (q31_t)0x7c661dbc,\n  (q31_t)0x7c4e49b7, (q31_t)0x7c362904,\n  (q31_t)0x7c1dbbb3, (q31_t)0x7c0501d2, (q31_t)0x7bebfb70, (q31_t)0x7bd2a89e, (q31_t)0x7bb9096b, (q31_t)0x7b9f1de6,\n  (q31_t)0x7b84e61f, (q31_t)0x7b6a6227,\n  (q31_t)0x7b4f920e, (q31_t)0x7b3475e5, (q31_t)0x7b190dbc, (q31_t)0x7afd59a4, (q31_t)0x7ae159ae, (q31_t)0x7ac50dec,\n  (q31_t)0x7aa8766f, (q31_t)0x7a8b9348,\n  (q31_t)0x7a6e648a, (q31_t)0x7a50ea47, (q31_t)0x7a332490, (q31_t)0x7a151378, (q31_t)0x79f6b711, (q31_t)0x79d80f6f,\n  (q31_t)0x79b91ca4, (q31_t)0x7999dec4,\n  (q31_t)0x797a55e0, (q31_t)0x795a820e, (q31_t)0x793a6361, (q31_t)0x7919f9ec, (q31_t)0x78f945c3, (q31_t)0x78d846fb,\n  (q31_t)0x78b6fda8, (q31_t)0x789569df,\n  (q31_t)0x78738bb3, (q31_t)0x7851633b, (q31_t)0x782ef08b, (q31_t)0x780c33b8, (q31_t)0x77e92cd9, (q31_t)0x77c5dc01,\n  (q31_t)0x77a24148, (q31_t)0x777e5cc3,\n  (q31_t)0x775a2e89, (q31_t)0x7735b6af, (q31_t)0x7710f54c, (q31_t)0x76ebea77, (q31_t)0x76c69647, (q31_t)0x76a0f8d2,\n  (q31_t)0x767b1231, (q31_t)0x7654e279,\n  (q31_t)0x762e69c4, (q31_t)0x7607a828, (q31_t)0x75e09dbd, (q31_t)0x75b94a9c, (q31_t)0x7591aedd, (q31_t)0x7569ca99,\n  (q31_t)0x75419de7, (q31_t)0x751928e0,\n  (q31_t)0x74f06b9e, (q31_t)0x74c7663a, (q31_t)0x749e18cd, (q31_t)0x74748371, (q31_t)0x744aa63f, (q31_t)0x74208150,\n  (q31_t)0x73f614c0, (q31_t)0x73cb60a8,\n  (q31_t)0x73a06522, (q31_t)0x73752249, (q31_t)0x73499838, (q31_t)0x731dc70a, (q31_t)0x72f1aed9, (q31_t)0x72c54fc1,\n  (q31_t)0x7298a9dd, (q31_t)0x726bbd48,\n  (q31_t)0x723e8a20, (q31_t)0x7211107e, (q31_t)0x71e35080, (q31_t)0x71b54a41, (q31_t)0x7186fdde, (q31_t)0x71586b74,\n  (q31_t)0x7129931f, (q31_t)0x70fa74fc,\n  (q31_t)0x70cb1128, (q31_t)0x709b67c0, (q31_t)0x706b78e3, (q31_t)0x703b44ad, (q31_t)0x700acb3c, (q31_t)0x6fda0cae,\n  (q31_t)0x6fa90921, (q31_t)0x6f77c0b3,\n  (q31_t)0x6f463383, (q31_t)0x6f1461b0, (q31_t)0x6ee24b57, (q31_t)0x6eaff099, (q31_t)0x6e7d5193, (q31_t)0x6e4a6e66,\n  (q31_t)0x6e174730, (q31_t)0x6de3dc11,\n  (q31_t)0x6db02d29, (q31_t)0x6d7c3a98, (q31_t)0x6d48047e, (q31_t)0x6d138afb, (q31_t)0x6cdece2f, (q31_t)0x6ca9ce3b,\n  (q31_t)0x6c748b3f, (q31_t)0x6c3f055d,\n  (q31_t)0x6c093cb6, (q31_t)0x6bd3316a, (q31_t)0x6b9ce39b, (q31_t)0x6b66536b, (q31_t)0x6b2f80fb, (q31_t)0x6af86c6c,\n  (q31_t)0x6ac115e2, (q31_t)0x6a897d7d,\n  (q31_t)0x6a51a361, (q31_t)0x6a1987b0, (q31_t)0x69e12a8c, (q31_t)0x69a88c19, (q31_t)0x696fac78, (q31_t)0x69368bce,\n  (q31_t)0x68fd2a3d, (q31_t)0x68c387e9,\n  (q31_t)0x6889a4f6, (q31_t)0x684f8186, (q31_t)0x68151dbe, (q31_t)0x67da79c3, (q31_t)0x679f95b7, (q31_t)0x676471c0,\n  (q31_t)0x67290e02, (q31_t)0x66ed6aa1,\n  (q31_t)0x66b187c3, (q31_t)0x6675658c, (q31_t)0x66390422, (q31_t)0x65fc63a9, (q31_t)0x65bf8447, (q31_t)0x65826622,\n  (q31_t)0x6545095f, (q31_t)0x65076e25,\n  (q31_t)0x64c99498, (q31_t)0x648b7ce0, (q31_t)0x644d2722, (q31_t)0x640e9386, (q31_t)0x63cfc231, (q31_t)0x6390b34a,\n  (q31_t)0x635166f9, (q31_t)0x6311dd64,\n  (q31_t)0x62d216b3, (q31_t)0x6292130c, (q31_t)0x6251d298, (q31_t)0x6211557e, (q31_t)0x61d09be5, (q31_t)0x618fa5f7,\n  (q31_t)0x614e73da, (q31_t)0x610d05b7,\n  (q31_t)0x60cb5bb7, (q31_t)0x60897601, (q31_t)0x604754bf, (q31_t)0x6004f819, (q31_t)0x5fc26038, (q31_t)0x5f7f8d46,\n  (q31_t)0x5f3c7f6b, (q31_t)0x5ef936d1,\n  (q31_t)0x5eb5b3a2, (q31_t)0x5e71f606, (q31_t)0x5e2dfe29, (q31_t)0x5de9cc33, (q31_t)0x5da5604f, (q31_t)0x5d60baa7,\n  (q31_t)0x5d1bdb65, (q31_t)0x5cd6c2b5,\n  (q31_t)0x5c9170bf, (q31_t)0x5c4be5b0, (q31_t)0x5c0621b2, (q31_t)0x5bc024f0, (q31_t)0x5b79ef96, (q31_t)0x5b3381ce,\n  (q31_t)0x5aecdbc5, (q31_t)0x5aa5fda5,\n  (q31_t)0x5a5ee79a, (q31_t)0x5a1799d1, (q31_t)0x59d01475, (q31_t)0x598857b2, (q31_t)0x594063b5, (q31_t)0x58f838a9,\n  (q31_t)0x58afd6bd, (q31_t)0x58673e1b,\n  (q31_t)0x581e6ef1, (q31_t)0x57d5696d, (q31_t)0x578c2dba, (q31_t)0x5742bc06, (q31_t)0x56f9147e, (q31_t)0x56af3750,\n  (q31_t)0x566524aa, (q31_t)0x561adcb9,\n  (q31_t)0x55d05faa, (q31_t)0x5585adad, (q31_t)0x553ac6ee, (q31_t)0x54efab9c, (q31_t)0x54a45be6, (q31_t)0x5458d7f9,\n  (q31_t)0x540d2005, (q31_t)0x53c13439,\n  (q31_t)0x537514c2, (q31_t)0x5328c1d0, (q31_t)0x52dc3b92, (q31_t)0x528f8238, (q31_t)0x524295f0, (q31_t)0x51f576ea,\n  (q31_t)0x51a82555, (q31_t)0x515aa162,\n  (q31_t)0x510ceb40, (q31_t)0x50bf031f, (q31_t)0x5070e92f, (q31_t)0x50229da1, (q31_t)0x4fd420a4, (q31_t)0x4f857269,\n  (q31_t)0x4f369320, (q31_t)0x4ee782fb,\n  (q31_t)0x4e984229, (q31_t)0x4e48d0dd, (q31_t)0x4df92f46, (q31_t)0x4da95d96, (q31_t)0x4d595bfe, (q31_t)0x4d092ab0,\n  (q31_t)0x4cb8c9dd, (q31_t)0x4c6839b7,\n  (q31_t)0x4c177a6e, (q31_t)0x4bc68c36, (q31_t)0x4b756f40, (q31_t)0x4b2423be, (q31_t)0x4ad2a9e2, (q31_t)0x4a8101de,\n  (q31_t)0x4a2f2be6, (q31_t)0x49dd282a,\n  (q31_t)0x498af6df, (q31_t)0x49389836, (q31_t)0x48e60c62, (q31_t)0x48935397, (q31_t)0x48406e08, (q31_t)0x47ed5be6,\n  (q31_t)0x479a1d67, (q31_t)0x4746b2bc,\n  (q31_t)0x46f31c1a, (q31_t)0x469f59b4, (q31_t)0x464b6bbe, (q31_t)0x45f7526b, (q31_t)0x45a30df0, (q31_t)0x454e9e80,\n  (q31_t)0x44fa0450, (q31_t)0x44a53f93,\n  (q31_t)0x4450507e, (q31_t)0x43fb3746, (q31_t)0x43a5f41e, (q31_t)0x4350873c, (q31_t)0x42faf0d4, (q31_t)0x42a5311b,\n  (q31_t)0x424f4845, (q31_t)0x41f93689,\n  (q31_t)0x41a2fc1a, (q31_t)0x414c992f, (q31_t)0x40f60dfb, (q31_t)0x409f5ab6, (q31_t)0x40487f94, (q31_t)0x3ff17cca,\n  (q31_t)0x3f9a5290, (q31_t)0x3f430119,\n  (q31_t)0x3eeb889c, (q31_t)0x3e93e950, (q31_t)0x3e3c2369, (q31_t)0x3de4371f, (q31_t)0x3d8c24a8, (q31_t)0x3d33ec39,\n  (q31_t)0x3cdb8e09, (q31_t)0x3c830a50,\n  (q31_t)0x3c2a6142, (q31_t)0x3bd19318, (q31_t)0x3b78a007, (q31_t)0x3b1f8848, (q31_t)0x3ac64c0f, (q31_t)0x3a6ceb96,\n  (q31_t)0x3a136712, (q31_t)0x39b9bebc,\n  (q31_t)0x395ff2c9, (q31_t)0x39060373, (q31_t)0x38abf0ef, (q31_t)0x3851bb77, (q31_t)0x37f76341, (q31_t)0x379ce885,\n  (q31_t)0x37424b7b, (q31_t)0x36e78c5b,\n  (q31_t)0x368cab5c, (q31_t)0x3631a8b8, (q31_t)0x35d684a6, (q31_t)0x357b3f5d, (q31_t)0x351fd918, (q31_t)0x34c4520d,\n  (q31_t)0x3468aa76, (q31_t)0x340ce28b,\n  (q31_t)0x33b0fa84, (q31_t)0x3354f29b, (q31_t)0x32f8cb07, (q31_t)0x329c8402, (q31_t)0x32401dc6, (q31_t)0x31e39889,\n  (q31_t)0x3186f487, (q31_t)0x312a31f8,\n  (q31_t)0x30cd5115, (q31_t)0x30705217, (q31_t)0x30133539, (q31_t)0x2fb5fab2, (q31_t)0x2f58a2be, (q31_t)0x2efb2d95,\n  (q31_t)0x2e9d9b70, (q31_t)0x2e3fec8b,\n  (q31_t)0x2de2211e, (q31_t)0x2d843964, (q31_t)0x2d263596, (q31_t)0x2cc815ee, (q31_t)0x2c69daa6, (q31_t)0x2c0b83fa,\n  (q31_t)0x2bad1221, (q31_t)0x2b4e8558,\n  (q31_t)0x2aefddd8, (q31_t)0x2a911bdc, (q31_t)0x2a323f9e, (q31_t)0x29d34958, (q31_t)0x29743946, (q31_t)0x29150fa1,\n  (q31_t)0x28b5cca5, (q31_t)0x2856708d,\n  (q31_t)0x27f6fb92, (q31_t)0x27976df1, (q31_t)0x2737c7e3, (q31_t)0x26d809a5, (q31_t)0x26783370, (q31_t)0x26184581,\n  (q31_t)0x25b84012, (q31_t)0x2558235f,\n  (q31_t)0x24f7efa2, (q31_t)0x2497a517, (q31_t)0x243743fa, (q31_t)0x23d6cc87, (q31_t)0x23763ef7, (q31_t)0x23159b88,\n  (q31_t)0x22b4e274, (q31_t)0x225413f8,\n  (q31_t)0x21f3304f, (q31_t)0x219237b5, (q31_t)0x21312a65, (q31_t)0x20d0089c, (q31_t)0x206ed295, (q31_t)0x200d888d,\n  (q31_t)0x1fac2abf, (q31_t)0x1f4ab968,\n  (q31_t)0x1ee934c3, (q31_t)0x1e879d0d, (q31_t)0x1e25f282, (q31_t)0x1dc4355e, (q31_t)0x1d6265dd, (q31_t)0x1d00843d,\n  (q31_t)0x1c9e90b8, (q31_t)0x1c3c8b8c,\n  (q31_t)0x1bda74f6, (q31_t)0x1b784d30, (q31_t)0x1b161479, (q31_t)0x1ab3cb0d, (q31_t)0x1a517128, (q31_t)0x19ef0707,\n  (q31_t)0x198c8ce7, (q31_t)0x192a0304,\n  (q31_t)0x18c7699b, (q31_t)0x1864c0ea, (q31_t)0x1802092c, (q31_t)0x179f429f, (q31_t)0x173c6d80, (q31_t)0x16d98a0c,\n  (q31_t)0x1676987f, (q31_t)0x16139918,\n  (q31_t)0x15b08c12, (q31_t)0x154d71aa, (q31_t)0x14ea4a1f, (q31_t)0x148715ae, (q31_t)0x1423d492, (q31_t)0x13c0870a,\n  (q31_t)0x135d2d53, (q31_t)0x12f9c7aa,\n  (q31_t)0x1296564d, (q31_t)0x1232d979, (q31_t)0x11cf516a, (q31_t)0x116bbe60, (q31_t)0x11082096, (q31_t)0x10a4784b,\n  (q31_t)0x1040c5bb, (q31_t)0xfdd0926,\n  (q31_t)0xf7942c7, (q31_t)0xf1572dc, (q31_t)0xeb199a4, (q31_t)0xe4db75b, (q31_t)0xde9cc40, (q31_t)0xd85d88f, (q31_t)0xd21dc87,\n  (q31_t)0xcbdd865,\n  (q31_t)0xc59cc68, (q31_t)0xbf5b8cb, (q31_t)0xb919dcf, (q31_t)0xb2d7baf, (q31_t)0xac952aa, (q31_t)0xa6522fe, (q31_t)0xa00ece8,\n  (q31_t)0x99cb0a7,\n  (q31_t)0x9386e78, (q31_t)0x8d42699, (q31_t)0x86fd947, (q31_t)0x80b86c2, (q31_t)0x7a72f45, (q31_t)0x742d311, (q31_t)0x6de7262,\n  (q31_t)0x67a0d76,\n  (q31_t)0x615a48b, (q31_t)0x5b137df, (q31_t)0x54cc7b1, (q31_t)0x4e8543e, (q31_t)0x483ddc3, (q31_t)0x41f6480, (q31_t)0x3bae8b2,\n  (q31_t)0x3566a96,\n  (q31_t)0x2f1ea6c, (q31_t)0x28d6870, (q31_t)0x228e4e2, (q31_t)0x1c45ffe, (q31_t)0x15fda03, (q31_t)0xfb5330, (q31_t)0x96cbc1,\n  (q31_t)0x3243f5\n};\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_2048) \n    const q31_t WeightsQ31_2048[4096] = {\n  (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7ffffd88, (q31_t)0xffe6de05, (q31_t)0x7ffff621, (q31_t)0xffcdbc0b, (q31_t)0x7fffe9cb, (q31_t)0xffb49a12,\n  (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fffc251, (q31_t)0xff82562c, (q31_t)0x7fffa72c, (q31_t)0xff69343f, (q31_t)0x7fff8719, (q31_t)0xff501258,\n  (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7fff3824, (q31_t)0xff1dcea0, (q31_t)0x7fff0943, (q31_t)0xff04acd0, (q31_t)0x7ffed572, (q31_t)0xfeeb8b0a,\n  (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, (q31_t)0x7ffe5f03, (q31_t)0xfeb947a0, (q31_t)0x7ffe1c65, (q31_t)0xfea025fd, (q31_t)0x7ffdd4d7, (q31_t)0xfe870467,\n  (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffd36ee, (q31_t)0xfe54c169, (q31_t)0x7ffce093, (q31_t)0xfe3ba002, (q31_t)0x7ffc8549, (q31_t)0xfe227eac,\n  (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffbbfe6, (q31_t)0xfdf03c3a, (q31_t)0x7ffb55ce, (q31_t)0xfdd71b1e, (q31_t)0x7ffae6c7, (q31_t)0xfdbdfa18,\n  (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ff9f9ec, (q31_t)0xfd8bb850, (q31_t)0x7ff97c18, (q31_t)0xfd729790, (q31_t)0x7ff8f954, (q31_t)0xfd5976e9,\n  (q31_t)0x7ff871a2, (q31_t)0xfd40565c, (q31_t)0x7ff7e500, (q31_t)0xfd2735ea, (q31_t)0x7ff75370, (q31_t)0xfd0e1594, (q31_t)0x7ff6bcf0, (q31_t)0xfcf4f55c,\n  (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff58125, (q31_t)0xfcc2b545, (q31_t)0x7ff4dbd9, (q31_t)0xfca9956a, (q31_t)0x7ff4319d, (q31_t)0xfc9075af,\n  (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff2ce5b, (q31_t)0xfc5e36a0, (q31_t)0x7ff21553, (q31_t)0xfc45174e, (q31_t)0x7ff1575d, (q31_t)0xfc2bf821,\n  (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7fefcca4, (q31_t)0xfbf9ba39, (q31_t)0x7feeffe1, (q31_t)0xfbe09b80, (q31_t)0x7fee2e30, (q31_t)0xfbc77cf0,\n  (q31_t)0x7fed5791, (q31_t)0xfbae5e89, (q31_t)0x7fec7c02, (q31_t)0xfb95404d, (q31_t)0x7feb9b85, (q31_t)0xfb7c223d, (q31_t)0x7feab61a, (q31_t)0xfb630459,\n  (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe8dc78, (q31_t)0xfb30c91b, (q31_t)0x7fe7e841, (q31_t)0xfb17abc2, (q31_t)0x7fe6ef1c, (q31_t)0xfafe8e9b,\n  (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe4ee06, (q31_t)0xfacc54e0, (q31_t)0x7fe3e616, (q31_t)0xfab3384f, (q31_t)0x7fe2d938, (q31_t)0xfa9a1bf3,\n  (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fe0b0b1, (q31_t)0xfa67e3da, (q31_t)0x7fdf9508, (q31_t)0xfa4ec821, (q31_t)0x7fde7471, (q31_t)0xfa35ac9f,\n  (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, (q31_t)0x7fdc247a, (q31_t)0xfa037648, (q31_t)0x7fdaf519, (q31_t)0xf9ea5b75, (q31_t)0x7fd9c0ca, (q31_t)0xf9d140de,\n  (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd74964, (q31_t)0xf99f0c68, (q31_t)0x7fd6064c, (q31_t)0xf985f28a, (q31_t)0x7fd4be46, (q31_t)0xf96cd8ed,\n  (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fd21f72, (q31_t)0xf93aa676, (q31_t)0x7fd0c8a3, (q31_t)0xf9218d9e, (q31_t)0x7fcf6ce8, (q31_t)0xf908750a,\n  (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fcca6a7, (q31_t)0xf8d644b2, (q31_t)0x7fcb3c23, (q31_t)0xf8bd2cef, (q31_t)0x7fc9ccb2, (q31_t)0xf8a41574,\n  (q31_t)0x7fc85854, (q31_t)0xf88afe42, (q31_t)0x7fc6df08, (q31_t)0xf871e759, (q31_t)0x7fc560cf, (q31_t)0xf858d0bb, (q31_t)0x7fc3dda9, (q31_t)0xf83fba68,\n  (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fc0c896, (q31_t)0xf80d8ea9, (q31_t)0x7fbf36aa, (q31_t)0xf7f4793e, (q31_t)0x7fbd9fd0, (q31_t)0xf7db6423,\n  (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fba6357, (q31_t)0xf7a93ae0, (q31_t)0x7fb8bdb8, (q31_t)0xf79026b9, (q31_t)0x7fb7132b, (q31_t)0xf77712e5,\n  (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fb3af4e, (q31_t)0xf744ec3b, (q31_t)0x7fb1f5fc, (q31_t)0xf72bd967, (q31_t)0x7fb037bf, (q31_t)0xf712c6ea,\n  (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, (q31_t)0x7facac7f, (q31_t)0xf6e0a2fa, (q31_t)0x7faadf7c, (q31_t)0xf6c79188, (q31_t)0x7fa90d8e, (q31_t)0xf6ae8071,\n  (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7fa55aee, (q31_t)0xf67c5f59, (q31_t)0x7fa37a3c, (q31_t)0xf6634f59, (q31_t)0x7fa1949e, (q31_t)0xf64a3fb8,\n  (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f9dbaa0, (q31_t)0xf6182196, (q31_t)0x7f9bc640, (q31_t)0xf5ff1318, (q31_t)0x7f99ccf4, (q31_t)0xf5e604fc,\n  (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f95cb9a, (q31_t)0xf5b3e9f0, (q31_t)0x7f93c38c, (q31_t)0xf59add02, (q31_t)0x7f91b694, (q31_t)0xf581d07b,\n  (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, (q31_t)0x7f8d8de1, (q31_t)0xf54fb8a4, (q31_t)0x7f8b7227, (q31_t)0xf536ad56, (q31_t)0x7f895182, (q31_t)0xf51da273,\n  (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f850179, (q31_t)0xf4eb8def, (q31_t)0x7f82d214, (q31_t)0xf4d28451, (q31_t)0x7f809dc5, (q31_t)0xf4b97b21,\n  (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f7c2668, (q31_t)0xf4876a10, (q31_t)0x7f79e35a, (q31_t)0xf46e6231, (q31_t)0x7f779b62, (q31_t)0xf4555ac5,\n  (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f72fcb4, (q31_t)0xf4234d45, (q31_t)0x7f70a5fe, (q31_t)0xf40a4735, (q31_t)0x7f6e4a5e, (q31_t)0xf3f1419a,\n  (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, (q31_t)0x7f698461, (q31_t)0xf3bf37cb, (q31_t)0x7f671a05, (q31_t)0xf3a63398, (q31_t)0x7f64aabf, (q31_t)0xf38d2fe0,\n  (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f5fbd77, (q31_t)0xf35b29e0, (q31_t)0x7f5d3f75, (q31_t)0xf342279b, (q31_t)0x7f5abc8a, (q31_t)0xf32925d3,\n  (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f55a7fa, (q31_t)0xf2f723c1, (q31_t)0x7f531655, (q31_t)0xf2de2379, (q31_t)0x7f507fc7, (q31_t)0xf2c523b2,\n  (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f4b43f2, (q31_t)0xf29325ad, (q31_t)0x7f489eaa, (q31_t)0xf27a2771, (q31_t)0x7f45f47b, (q31_t)0xf26129ba,\n  (q31_t)0x7f434563, (q31_t)0xf2482c8a, (q31_t)0x7f409164, (q31_t)0xf22f2fe1, (q31_t)0x7f3dd87c, (q31_t)0xf21633c0, (q31_t)0x7f3b1aad, (q31_t)0xf1fd3829,\n  (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f359057, (q31_t)0xf1cb429a, (q31_t)0x7f32c3d1, (q31_t)0xf1b248a5, (q31_t)0x7f2ff263, (q31_t)0xf1994f3d,\n  (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2a40d2, (q31_t)0xf1675e17, (q31_t)0x7f2760af, (q31_t)0xf14e665c, (q31_t)0x7f247ba5, (q31_t)0xf1356f32,\n  (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f1ea2dc, (q31_t)0xf1038295, (q31_t)0x7f1baf1e, (q31_t)0xf0ea8d24, (q31_t)0x7f18b679, (q31_t)0xf0d19848,\n  (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, (q31_t)0x7f12b67c, (q31_t)0xf09fb051, (q31_t)0x7f0faf25, (q31_t)0xf086bd39, (q31_t)0x7f0ca2e7, (q31_t)0xf06dcaba,\n  (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7f067bba, (q31_t)0xf03be78a, (q31_t)0x7f0360cb, (q31_t)0xf022f6da, (q31_t)0x7f0040f6, (q31_t)0xf00a06c8,\n  (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7ef9f29d, (q31_t)0xefd8287c, (q31_t)0x7ef6c418, (q31_t)0xefbf3a45, (q31_t)0x7ef390ae, (q31_t)0xefa64cae,\n  (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7eed1b2c, (q31_t)0xef747365, (q31_t)0x7ee9d914, (q31_t)0xef5b87b5, (q31_t)0x7ee69217, (q31_t)0xef429caa,\n  (q31_t)0x7ee34636, (q31_t)0xef29b243, (q31_t)0x7edff570, (q31_t)0xef10c883, (q31_t)0x7edc9fc6, (q31_t)0xeef7df6a, (q31_t)0x7ed94538, (q31_t)0xeedef6f9,\n  (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ed28171, (q31_t)0xeead2813, (q31_t)0x7ecf1837, (q31_t)0xee9441a0, (q31_t)0x7ecbaa1a, (q31_t)0xee7b5bd9,\n  (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7ec4bf36, (q31_t)0xee499253, (q31_t)0x7ec14270, (q31_t)0xee30ae96, (q31_t)0x7ebdc0c6, (q31_t)0xee17cb88,\n  (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eb6aeca, (q31_t)0xede60780, (q31_t)0x7eb31e78, (q31_t)0xedcd2687, (q31_t)0x7eaf8943, (q31_t)0xedb44642,\n  (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, (q31_t)0x7ea85033, (q31_t)0xed8287d7, (q31_t)0x7ea4ac58, (q31_t)0xed69a9b3, (q31_t)0x7ea1039b, (q31_t)0xed50cc46,\n  (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e99a37c, (q31_t)0xed1f1396, (q31_t)0x7e95ec1a, (q31_t)0xed063856, (q31_t)0x7e922fd6, (q31_t)0xeced5dd0,\n  (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e8aa8ac, (q31_t)0xecbbaafb, (q31_t)0x7e86ddc6, (q31_t)0xeca2d2ad, (q31_t)0x7e830dff, (q31_t)0xec89fb1e,\n  (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e7b5fce, (q31_t)0xec584e41, (q31_t)0x7e778166, (q31_t)0xec3f78f6, (q31_t)0x7e739e1d, (q31_t)0xec26a46d,\n  (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, (q31_t)0x7e6bc8eb, (q31_t)0xebf4fda8, (q31_t)0x7e67d703, (q31_t)0xebdc2b6e, (q31_t)0x7e63e03b, (q31_t)0xebc359fb,\n  (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e5be40c, (q31_t)0xeb91b96c, (q31_t)0x7e57dea7, (q31_t)0xeb78ea52, (q31_t)0x7e53d462, (q31_t)0xeb601c04,\n  (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e4bb13c, (q31_t)0xeb2e81ca, (q31_t)0x7e47985b, (q31_t)0xeb15b5e1, (q31_t)0x7e437a9c, (q31_t)0xeafceac6,\n  (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e3b3083, (q31_t)0xeacb56ff, (q31_t)0x7e37042a, (q31_t)0xeab28e56, (q31_t)0x7e32d2f4, (q31_t)0xea99c67e,\n  (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, (q31_t)0x7e2a61ed, (q31_t)0xea683949, (q31_t)0x7e26221f, (q31_t)0xea4f73ee, (q31_t)0x7e21dd73, (q31_t)0xea36af69,\n  (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e194584, (q31_t)0xea0528e5, (q31_t)0x7e14f242, (q31_t)0xe9ec66e8, (q31_t)0x7e109a24, (q31_t)0xe9d3a5c5,\n  (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7e07db52, (q31_t)0xe9a22610, (q31_t)0x7e0374a0, (q31_t)0xe9896781, (q31_t)0x7dff0911, (q31_t)0xe970a9ce,\n  (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7df62362, (q31_t)0xe93f3107, (q31_t)0x7df1a942, (q31_t)0xe92675f4, (q31_t)0x7ded2a47, (q31_t)0xe90dbbc2,\n  (q31_t)0x7de8a670, (q31_t)0xe8f50273, (q31_t)0x7de41dc0, (q31_t)0xe8dc4a07, (q31_t)0x7ddf9034, (q31_t)0xe8c39280, (q31_t)0x7ddafdce, (q31_t)0xe8aadbde,\n  (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dd1ca75, (q31_t)0xe879714d, (q31_t)0x7dcd2981, (q31_t)0xe860bd61, (q31_t)0x7dc883b4, (q31_t)0xe8480a5d,\n  (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7dbf298d, (q31_t)0xe816a716, (q31_t)0x7dba7534, (q31_t)0xe7fdf6d4, (q31_t)0x7db5bc02, (q31_t)0xe7e5477f,\n  (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7dac3b15, (q31_t)0xe7b3eb9f, (q31_t)0x7da77359, (q31_t)0xe79b3f16, (q31_t)0x7da2a6c6, (q31_t)0xe782937e,\n  (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, (q31_t)0x7d98ff17, (q31_t)0xe7513f25, (q31_t)0x7d9423fc, (q31_t)0xe7389665, (q31_t)0x7d8f4409, (q31_t)0xe71fee99,\n  (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d85759f, (q31_t)0xe6eea1e4, (q31_t)0x7d808728, (q31_t)0xe6d5fcfc, (q31_t)0x7d7b93da, (q31_t)0xe6bd590d,\n  (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d719eba, (q31_t)0xe68c141a, (q31_t)0x7d6c9ce9, (q31_t)0xe6737319, (q31_t)0x7d679642, (q31_t)0xe65ad315,\n  (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d5d7a74, (q31_t)0xe6299604, (q31_t)0x7d58654d, (q31_t)0xe610f8f9, (q31_t)0x7d534b50, (q31_t)0xe5f85cef,\n  (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, (q31_t)0x7d4908d9, (q31_t)0xe5c727dd, (q31_t)0x7d43e05e, (q31_t)0xe5ae8ed8, (q31_t)0x7d3eb30f, (q31_t)0xe595f6d7,\n  (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d3449f5, (q31_t)0xe564c9e3, (q31_t)0x7d2f0e2b, (q31_t)0xe54c34f3, (q31_t)0x7d29cd8c, (q31_t)0xe533a10a,\n  (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d1f3dd6, (q31_t)0xe5027c53, (q31_t)0x7d19eebf, (q31_t)0xe4e9eb87, (q31_t)0x7d149ad5, (q31_t)0xe4d15bc6,\n  (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7d09e489, (q31_t)0xe4a03f69, (q31_t)0x7d048228, (q31_t)0xe487b2d0, (q31_t)0x7cff1af5, (q31_t)0xe46f2745,\n  (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, (q31_t)0x7cf43e1a, (q31_t)0xe43e1362, (q31_t)0x7ceec873, (q31_t)0xe4258b0a, (q31_t)0x7ce94dfb, (q31_t)0xe40d03c6,\n  (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7cde4a98, (q31_t)0xe3dbf87a, (q31_t)0x7cd8c1ae, (q31_t)0xe3c37474, (q31_t)0x7cd333f3, (q31_t)0xe3aaf184,\n  (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7cc80a0f, (q31_t)0xe379eeed, (q31_t)0x7cc26de5, (q31_t)0xe3616f48, (q31_t)0x7cbcccec, (q31_t)0xe348f0bd,\n  (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7cb17c8d, (q31_t)0xe317f6fa, (q31_t)0x7cabcd28, (q31_t)0xe2ff7bc3, (q31_t)0x7ca618f3, (q31_t)0xe2e701ac,\n  (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, (q31_t)0x7c9aa221, (q31_t)0xe2b610da, (q31_t)0x7c94df83, (q31_t)0xe29d9a23, (q31_t)0x7c8f1817, (q31_t)0xe285248d,\n  (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c837ad8, (q31_t)0xe2543ccc, (q31_t)0x7c7da505, (q31_t)0xe23bcaa2, (q31_t)0x7c77ca65, (q31_t)0xe223599e,\n  (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c6c06c0, (q31_t)0xe1f27b0b, (q31_t)0x7c661dbc, (q31_t)0xe1da0d7e, (q31_t)0x7c602fec, (q31_t)0xe1c1a11b,\n  (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c5445e9, (q31_t)0xe190cbd4, (q31_t)0x7c4e49b7, (q31_t)0xe17862f3, (q31_t)0x7c4848ba, (q31_t)0xe15ffb3f,\n  (q31_t)0x7c4242f2, (q31_t)0xe14794ba, (q31_t)0x7c3c3860, (q31_t)0xe12f2f63, (q31_t)0x7c362904, (q31_t)0xe116cb3d, (q31_t)0x7c3014de, (q31_t)0xe0fe6848,\n  (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c23de35, (q31_t)0xe0cda5f5, (q31_t)0x7c1dbbb3, (q31_t)0xe0b54698, (q31_t)0x7c179467, (q31_t)0xe09ce871,\n  (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7c0b3777, (q31_t)0xe06c2fc4, (q31_t)0x7c0501d2, (q31_t)0xe053d541, (q31_t)0x7bfec765, (q31_t)0xe03b7bf6,\n  (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bf24434, (q31_t)0xe00acd0e, (q31_t)0x7bebfb70, (q31_t)0xdff27773, (q31_t)0x7be5ade6, (q31_t)0xdfda2314,\n  (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, (q31_t)0x7bd9047c, (q31_t)0xdfa97e0f, (q31_t)0x7bd2a89e, (q31_t)0xdf912d6b, (q31_t)0x7bcc47fa, (q31_t)0xdf78de07,\n  (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bbf7860, (q31_t)0xdf484302, (q31_t)0x7bb9096b, (q31_t)0xdf2ff764, (q31_t)0x7bb295b0, (q31_t)0xdf17ad0a,\n  (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7ba59fee, (q31_t)0xdee71c24, (q31_t)0x7b9f1de6, (q31_t)0xdeced59b, (q31_t)0x7b989719, (q31_t)0xdeb69059,\n  (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b8b7b36, (q31_t)0xde8609b1, (q31_t)0x7b84e61f, (q31_t)0xde6dc84b, (q31_t)0x7b7e4c45, (q31_t)0xde558831,\n  (q31_t)0x7b77ada8, (q31_t)0xde3d4964, (q31_t)0x7b710a49, (q31_t)0xde250be3, (q31_t)0x7b6a6227, (q31_t)0xde0ccfb1, (q31_t)0x7b63b543, (q31_t)0xddf494ce,\n  (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b564d36, (q31_t)0xddc422f8, (q31_t)0x7b4f920e, (q31_t)0xddabec08, (q31_t)0x7b48d225, (q31_t)0xdd93b66a,\n  (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b3b4410, (q31_t)0xdd634f2b, (q31_t)0x7b3475e5, (q31_t)0xdd4b1d8c, (q31_t)0x7b2da2fa, (q31_t)0xdd32ed43,\n  (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b1feee5, (q31_t)0xdd0290b8, (q31_t)0x7b190dbc, (q31_t)0xdcea6478, (q31_t)0x7b1227d3, (q31_t)0xdcd23993,\n  (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, (q31_t)0x7b044dc7, (q31_t)0xdca1e7da, (q31_t)0x7afd59a4, (q31_t)0xdc89c109, (q31_t)0x7af660c2, (q31_t)0xdc719b96,\n  (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7ae860c7, (q31_t)0xdc4154cd, (q31_t)0x7ae159ae, (q31_t)0xdc293379, (q31_t)0x7ada4dd8, (q31_t)0xdc111388,\n  (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7acc27f7, (q31_t)0xdbe0d7cd, (q31_t)0x7ac50dec, (q31_t)0xdbc8bc06, (q31_t)0x7abdef25, (q31_t)0xdbb0a1a4,\n  (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7aafa367, (q31_t)0xdb807114, (q31_t)0x7aa8766f, (q31_t)0xdb685ae9, (q31_t)0x7aa144bc, (q31_t)0xdb504626,\n  (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, (q31_t)0x7a92d329, (q31_t)0xdb2020e0, (q31_t)0x7a8b9348, (q31_t)0xdb08105e, (q31_t)0x7a844eae, (q31_t)0xdaf00149,\n  (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a75b74f, (q31_t)0xdabfe76a, (q31_t)0x7a6e648a, (q31_t)0xdaa7dca1, (q31_t)0x7a670d0d, (q31_t)0xda8fd349,\n  (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a584feb, (q31_t)0xda5fc4ef, (q31_t)0x7a50ea47, (q31_t)0xda47bfee, (q31_t)0x7a497feb, (q31_t)0xda2fbc61,\n  (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a3a9d0f, (q31_t)0xd9ffb9a9, (q31_t)0x7a332490, (q31_t)0xd9e7ba7f, (q31_t)0x7a2ba75a, (q31_t)0xd9cfbccd,\n  (q31_t)0x7a24256f, (q31_t)0xd9b7c094, (q31_t)0x7a1c9ece, (q31_t)0xd99fc5d4, (q31_t)0x7a151378, (q31_t)0xd987cc90, (q31_t)0x7a0d836d, (q31_t)0xd96fd4c7,\n  (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x79fe5539, (q31_t)0xd93fe9ab, (q31_t)0x79f6b711, (q31_t)0xd927f65b, (q31_t)0x79ef1436, (q31_t)0xd910048a,\n  (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79dfc064, (q31_t)0xd8e0256a, (q31_t)0x79d80f6f, (q31_t)0xd8c8381d, (q31_t)0x79d059c8, (q31_t)0xd8b04c52,\n  (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79c0e062, (q31_t)0xd880794b, (q31_t)0x79b91ca4, (q31_t)0xd868920f, (q31_t)0x79b15435, (q31_t)0xd850ac5a,\n  (q31_t)0x79a98715, (q31_t)0xd838c82d, (q31_t)0x79a1b545, (q31_t)0xd820e589, (q31_t)0x7999dec4, (q31_t)0xd809046e, (q31_t)0x79920392, (q31_t)0xd7f124dd,\n  (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x79823f20, (q31_t)0xd7c16a5f, (q31_t)0x797a55e0, (q31_t)0xd7a98f73, (q31_t)0x797267f2, (q31_t)0xd791b616,\n  (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x79627e08, (q31_t)0xd7620808, (q31_t)0x795a820e, (q31_t)0xd74a335b, (q31_t)0x79528167, (q31_t)0xd732603f,\n  (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x79427210, (q31_t)0xd702bec0, (q31_t)0x793a6361, (q31_t)0xd6eaf05f, (q31_t)0x79325006, (q31_t)0xd6d32393,\n  (q31_t)0x792a37fe, (q31_t)0xd6bb585e, (q31_t)0x79221b4b, (q31_t)0xd6a38ec0, (q31_t)0x7919f9ec, (q31_t)0xd68bc6ba, (q31_t)0x7911d3e2, (q31_t)0xd674004e,\n  (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x790179cd, (q31_t)0xd6447844, (q31_t)0x78f945c3, (q31_t)0xd62cb6a8, (q31_t)0x78f10d0f, (q31_t)0xd614f6a9,\n  (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78e08dab, (q31_t)0xd5e57b85, (q31_t)0x78d846fb, (q31_t)0xd5cdc062, (q31_t)0x78cffba3, (q31_t)0xd5b606e0,\n  (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78bf56f9, (q31_t)0xd58698c0, (q31_t)0x78b6fda8, (q31_t)0xd56ee424, (q31_t)0x78ae9fb0, (q31_t)0xd557312d,\n  (q31_t)0x78a63d11, (q31_t)0xd53f7fda, (q31_t)0x789dd5cb, (q31_t)0xd527d02e, (q31_t)0x789569df, (q31_t)0xd5102228, (q31_t)0x788cf94c, (q31_t)0xd4f875ca,\n  (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x787c0a36, (q31_t)0xd4c92209, (q31_t)0x78738bb3, (q31_t)0xd4b17aa8, (q31_t)0x786b088c, (q31_t)0xd499d4f2,\n  (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x7859f44f, (q31_t)0xd46a8e8d, (q31_t)0x7851633b, (q31_t)0xd452eddf, (q31_t)0x7848cd83, (q31_t)0xd43b4ee0,\n  (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x7837942b, (q31_t)0xd40c15f3, (q31_t)0x782ef08b, (q31_t)0xd3f47c06, (q31_t)0x78264849, (q31_t)0xd3dce3cd,\n  (q31_t)0x781d9b65, (q31_t)0xd3c54d47, (q31_t)0x7814e9df, (q31_t)0xd3adb876, (q31_t)0x780c33b8, (q31_t)0xd396255a, (q31_t)0x780378f1, (q31_t)0xd37e93f4,\n  (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77f1f581, (q31_t)0xd34f764f, (q31_t)0x77e92cd9, (q31_t)0xd337ea12, (q31_t)0x77e05f91, (q31_t)0xd3205f8f,\n  (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77ceb725, (q31_t)0xd2f14fba, (q31_t)0x77c5dc01, (q31_t)0xd2d9ca6a, (q31_t)0x77bcfc3f, (q31_t)0xd2c246d8,\n  (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x77ab2ee2, (q31_t)0xd29344f0, (q31_t)0x77a24148, (q31_t)0xd27bc69c, (q31_t)0x77994f11, (q31_t)0xd2644a0a,\n  (q31_t)0x7790583e, (q31_t)0xd24ccf39, (q31_t)0x77875cce, (q31_t)0xd235562b, (q31_t)0x777e5cc3, (q31_t)0xd21ddee2, (q31_t)0x7775581d, (q31_t)0xd206695d,\n  (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x776340ff, (q31_t)0xd1d783a6, (q31_t)0x775a2e89, (q31_t)0xd1c01375, (q31_t)0x77511778, (q31_t)0xd1a8a50d,\n  (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x773edb8b, (q31_t)0xd179cd99, (q31_t)0x7735b6af, (q31_t)0xd1626490, (q31_t)0x772c8d3a, (q31_t)0xd14afd52,\n  (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x771a2c88, (q31_t)0xd11c343f, (q31_t)0x7710f54c, (q31_t)0xd104d26b, (q31_t)0x7707b979, (q31_t)0xd0ed7267,\n  (q31_t)0x76fe790e, (q31_t)0xd0d61434, (q31_t)0x76f5340e, (q31_t)0xd0beb7d2, (q31_t)0x76ebea77, (q31_t)0xd0a75d42, (q31_t)0x76e29c4b, (q31_t)0xd0900486,\n  (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76cff232, (q31_t)0xd061588b, (q31_t)0x76c69647, (q31_t)0xd04a054e, (q31_t)0x76bd35c7, (q31_t)0xd032b3e7,\n  (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x76aa670d, (q31_t)0xd00416a3, (q31_t)0x76a0f8d2, (q31_t)0xcfeccac7, (q31_t)0x76978605, (q31_t)0xcfd580c6,\n  (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x768492b4, (q31_t)0xcfa6f255, (q31_t)0x767b1231, (q31_t)0xcf8fade9, (q31_t)0x76718d1c, (q31_t)0xcf786b5a,\n  (q31_t)0x76680376, (q31_t)0xcf612aaa, (q31_t)0x765e7540, (q31_t)0xcf49ebda, (q31_t)0x7654e279, (q31_t)0xcf32aeeb, (q31_t)0x764b4b23, (q31_t)0xcf1b73de,\n  (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x76380ec8, (q31_t)0xceed036b, (q31_t)0x762e69c4, (q31_t)0xced5ce08, (q31_t)0x7624c031, (q31_t)0xcebe9a8a,\n  (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x76115f63, (q31_t)0xce903942, (q31_t)0x7607a828, (q31_t)0xce790b79, (q31_t)0x75fdec60, (q31_t)0xce61df99,\n  (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75ea672a, (q31_t)0xce338d97, (q31_t)0x75e09dbd, (q31_t)0xce1c6777, (q31_t)0x75d6cfc5, (q31_t)0xce054343,\n  (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, (q31_t)0x75c32634, (q31_t)0xcdd700a4, (q31_t)0x75b94a9c, (q31_t)0xcdbfe23a, (q31_t)0x75af6a7b, (q31_t)0xcda8c5c1,\n  (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x759b9c9b, (q31_t)0xcd7a92a2, (q31_t)0x7591aedd, (q31_t)0xcd637bfe, (q31_t)0x7587bc98, (q31_t)0xcd4c674d,\n  (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x7573ca75, (q31_t)0xcd1e43ca, (q31_t)0x7569ca99, (q31_t)0xcd0734f9, (q31_t)0x755fc635, (q31_t)0xccf0281f,\n  (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x754bafdc, (q31_t)0xccc21455, (q31_t)0x75419de7, (q31_t)0xccab0d65, (q31_t)0x7537876c, (q31_t)0xcc940871,\n  (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, (q31_t)0x75234ce8, (q31_t)0xcc66047b, (q31_t)0x751928e0, (q31_t)0xcc4f057c, (q31_t)0x750f0054, (q31_t)0xcc38087b,\n  (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x74faa1b3, (q31_t)0xcc0a1477, (q31_t)0x74f06b9e, (q31_t)0xcbf31d75, (q31_t)0x74e63108, (q31_t)0xcbdc2876,\n  (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74d1ae55, (q31_t)0xcbae447f, (q31_t)0x74c7663a, (q31_t)0xcb97558a, (q31_t)0x74bd199f, (q31_t)0xcb80689a,\n  (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x74a872e8, (q31_t)0xcb5294ce, (q31_t)0x749e18cd, (q31_t)0xcb3badf3, (q31_t)0x7493ba34, (q31_t)0xcb24c921,\n  (q31_t)0x7489571c, (q31_t)0xcb0de658, (q31_t)0x747eef85, (q31_t)0xcaf7059a, (q31_t)0x74748371, (q31_t)0xcae026e8, (q31_t)0x746a12df, (q31_t)0xcac94a42,\n  (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x74552446, (q31_t)0xca9b971e, (q31_t)0x744aa63f, (q31_t)0xca84c0a3, (q31_t)0x744023bc, (q31_t)0xca6dec37,\n  (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x742b1144, (q31_t)0xca404992, (q31_t)0x74208150, (q31_t)0xca297b5a, (q31_t)0x7415ece2, (q31_t)0xca12af37,\n  (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x7400b69a, (q31_t)0xc9e51d2d, (q31_t)0x73f614c0, (q31_t)0xc9ce5748, (q31_t)0x73eb6e6e, (q31_t)0xc9b7937a,\n  (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, (q31_t)0x73d61461, (q31_t)0xc98a1227, (q31_t)0x73cb60a8, (q31_t)0xc97354a4, (q31_t)0x73c0a878, (q31_t)0xc95c993a,\n  (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x73ab2ab4, (q31_t)0xc92f28ba, (q31_t)0x73a06522, (q31_t)0xc91873a5, (q31_t)0x73959b1b, (q31_t)0xc901c0ae,\n  (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x737ff9ae, (q31_t)0xc8d4611d, (q31_t)0x73752249, (q31_t)0xc8bdb485, (q31_t)0x736a4671, (q31_t)0xc8a70a0e,\n  (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x73548168, (q31_t)0xc879bb89, (q31_t)0x73499838, (q31_t)0xc863177b, (q31_t)0x733eaa96, (q31_t)0xc84c7593,\n  (q31_t)0x7333b883, (q31_t)0xc835d5d0, (q31_t)0x7328c1ff, (q31_t)0xc81f3834, (q31_t)0x731dc70a, (q31_t)0xc8089cbf, (q31_t)0x7312c7a5, (q31_t)0xc7f20373,\n  (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72fcbb8c, (q31_t)0xc7c4d757, (q31_t)0x72f1aed9, (q31_t)0xc7ae4489, (q31_t)0x72e69db7, (q31_t)0xc797b3e7,\n  (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72d06e2b, (q31_t)0xc76a992a, (q31_t)0x72c54fc1, (q31_t)0xc7540f11, (q31_t)0x72ba2cea, (q31_t)0xc73d8727,\n  (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72a3d9f7, (q31_t)0xc7107de4, (q31_t)0x7298a9dd, (q31_t)0xc6f9fc8d, (q31_t)0x728d7557, (q31_t)0xc6e37d69,\n  (q31_t)0x72823c67, (q31_t)0xc6cd0079, (q31_t)0x7276ff0d, (q31_t)0xc6b685bd, (q31_t)0x726bbd48, (q31_t)0xc6a00d37, (q31_t)0x7260771b, (q31_t)0xc68996e7,\n  (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7249dd86, (q31_t)0xc65cb0ed, (q31_t)0x723e8a20, (q31_t)0xc6464144, (q31_t)0x72333251, (q31_t)0xc62fd3d6,\n  (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x721c7580, (q31_t)0xc602ffaa, (q31_t)0x7211107e, (q31_t)0xc5ec98ee, (q31_t)0x7205a716, (q31_t)0xc5d6346f,\n  (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71eec716, (q31_t)0xc5a9722c, (q31_t)0x71e35080, (q31_t)0xc593146a, (q31_t)0x71d7d585, (q31_t)0xc57cb8e9,\n  (q31_t)0x71cc5626, (q31_t)0xc5665fa9, (q31_t)0x71c0d265, (q31_t)0xc55008ab, (q31_t)0x71b54a41, (q31_t)0xc539b3f1, (q31_t)0x71a9bdba, (q31_t)0xc523617a,\n  (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x71929789, (q31_t)0xc4f6c35d, (q31_t)0x7186fdde, (q31_t)0xc4e077b8, (q31_t)0x717b5fd3, (q31_t)0xc4ca2e5b,\n  (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x7164169d, (q31_t)0xc49da27a, (q31_t)0x71586b74, (q31_t)0xc4875ff9, (q31_t)0x714cbbeb, (q31_t)0xc4711fc2,\n  (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x71354fc0, (q31_t)0xc444a639, (q31_t)0x7129931f, (q31_t)0xc42e6ce8, (q31_t)0x711dd220, (q31_t)0xc41835e6,\n  (q31_t)0x71120cc5, (q31_t)0xc4020133, (q31_t)0x7106430e, (q31_t)0xc3ebced0, (q31_t)0x70fa74fc, (q31_t)0xc3d59ebe, (q31_t)0x70eea28e, (q31_t)0xc3bf70fd,\n  (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70d6f0a4, (q31_t)0xc3931c76, (q31_t)0x70cb1128, (q31_t)0xc37cf5b0, (q31_t)0x70bf2d53, (q31_t)0xc366d140,\n  (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x70a7589f, (q31_t)0xc33a8f62, (q31_t)0x709b67c0, (q31_t)0xc32471f7, (q31_t)0x708f728b, (q31_t)0xc30e56e4,\n  (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x70777b1c, (q31_t)0xc2e227cb, (q31_t)0x706b78e3, (q31_t)0xc2cc13c7, (q31_t)0x705f7255, (q31_t)0xc2b6021f,\n  (q31_t)0x70536771, (q31_t)0xc29ff2d4, (q31_t)0x70475839, (q31_t)0xc289e5e7, (q31_t)0x703b44ad, (q31_t)0xc273db58, (q31_t)0x702f2ccd, (q31_t)0xc25dd329,\n  (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x7016f014, (q31_t)0xc231c9ec, (q31_t)0x700acb3c, (q31_t)0xc21bc8e1, (q31_t)0x6ffea212, (q31_t)0xc205ca38,\n  (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fe642ca, (q31_t)0xc1d9d412, (q31_t)0x6fda0cae, (q31_t)0xc1c3dc97, (q31_t)0x6fcdd241, (q31_t)0xc1ade781,\n  (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6fb5507a, (q31_t)0xc182048d, (q31_t)0x6fa90921, (q31_t)0xc16c16b0, (q31_t)0x6f9cbd79, (q31_t)0xc1562b3d,\n  (q31_t)0x6f906d84, (q31_t)0xc1404233, (q31_t)0x6f841942, (q31_t)0xc12a5b95, (q31_t)0x6f77c0b3, (q31_t)0xc1147764, (q31_t)0x6f6b63d8, (q31_t)0xc0fe959f,\n  (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f529d40, (q31_t)0xc0d2d960, (q31_t)0x6f463383, (q31_t)0xc0bcfee7, (q31_t)0x6f39c57d, (q31_t)0xc0a726df,\n  (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6f20dc92, (q31_t)0xc07b7e23, (q31_t)0x6f1461b0, (q31_t)0xc065ad70, (q31_t)0x6f07e285, (q31_t)0xc04fdf32,\n  (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6eeed758, (q31_t)0xc0244a14, (q31_t)0x6ee24b57, (q31_t)0xc00e8336, (q31_t)0x6ed5bb10, (q31_t)0xbff8bece,\n  (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, (q31_t)0x6ebc8db0, (q31_t)0xbfcd3d69, (q31_t)0x6eaff099, (q31_t)0xbfb7806c, (q31_t)0x6ea34f3d, (q31_t)0xbfa1c5ea,\n  (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e89ffb9, (q31_t)0xbf765858, (q31_t)0x6e7d5193, (q31_t)0xbf60a54a, (q31_t)0x6e709f2a, (q31_t)0xbf4af4ba,\n  (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e572d93, (q31_t)0xbf1f9b16, (q31_t)0x6e4a6e66, (q31_t)0xbf09f205, (q31_t)0x6e3daaf8, (q31_t)0xbef44b74,\n  (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6e24175c, (q31_t)0xbec905d9, (q31_t)0x6e174730, (q31_t)0xbeb366d1, (q31_t)0x6e0a72c5, (q31_t)0xbe9dca4e,\n  (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, (q31_t)0x6df0bd35, (q31_t)0xbe7298d7, (q31_t)0x6de3dc11, (q31_t)0xbe5d03e6, (q31_t)0x6dd6f6b1, (q31_t)0xbe47717c,\n  (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6dbd1f3c, (q31_t)0xbe1c5444, (q31_t)0x6db02d29, (q31_t)0xbe06c977, (q31_t)0x6da336dc, (q31_t)0xbdf14135,\n  (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d893d93, (q31_t)0xbdc63856, (q31_t)0x6d7c3a98, (q31_t)0xbdb0b7bb, (q31_t)0x6d6f3365, (q31_t)0xbd9b39ad,\n  (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d551858, (q31_t)0xbd704542, (q31_t)0x6d48047e, (q31_t)0xbd5acee5, (q31_t)0x6d3aec6e, (q31_t)0xbd455b1a,\n  (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, (q31_t)0x6d20afac, (q31_t)0xbd1a7b3d, (q31_t)0x6d138afb, (q31_t)0xbd050f2c, (q31_t)0x6d066215, (q31_t)0xbcefa5b0,\n  (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cec03af, (q31_t)0xbcc4da7b, (q31_t)0x6cdece2f, (q31_t)0xbcaf78c4, (q31_t)0x6cd1947c, (q31_t)0xbc9a19a5,\n  (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6cb71482, (q31_t)0xbc6f6333, (q31_t)0x6ca9ce3b, (q31_t)0xbc5a0be2, (q31_t)0x6c9c83c3, (q31_t)0xbc44b72c,\n  (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c81e245, (q31_t)0xbc1a1598, (q31_t)0x6c748b3f, (q31_t)0xbc04c8ba, (q31_t)0x6c67300b, (q31_t)0xbbef7e7c,\n  (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, (q31_t)0x6c4c6d1a, (q31_t)0xbbc4f1df, (q31_t)0x6c3f055d, (q31_t)0xbbafaf82, (q31_t)0x6c319975, (q31_t)0xbb9a6fc7,\n  (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6c16b521, (q31_t)0xbb6ff83c, (q31_t)0x6c093cb6, (q31_t)0xbb5ac06d, (q31_t)0x6bfbc021, (q31_t)0xbb458b43,\n  (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6be0ba7b, (q31_t)0xbb1b28e4, (q31_t)0x6bd3316a, (q31_t)0xbb05fbb0, (q31_t)0x6bc5a431, (q31_t)0xbaf0d125,\n  (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6baa7d49, (q31_t)0xbac6840c, (q31_t)0x6b9ce39b, (q31_t)0xbab16180, (q31_t)0x6b8f45c7, (q31_t)0xba9c41a0,\n  (q31_t)0x6b81a3cd, (q31_t)0xba87246d, (q31_t)0x6b73fdae, (q31_t)0xba7209e7, (q31_t)0x6b66536b, (q31_t)0xba5cf210, (q31_t)0x6b58a503, (q31_t)0xba47dce8,\n  (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b3d3bcb, (q31_t)0xba1dbaaa, (q31_t)0x6b2f80fb, (q31_t)0xba08ad95, (q31_t)0x6b21c208, (q31_t)0xb9f3a332,\n  (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6b0637c1, (q31_t)0xb9c99688, (q31_t)0x6af86c6c, (q31_t)0xb9b49442, (q31_t)0x6aea9cf8, (q31_t)0xb99f94b2,\n  (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6acef1b2, (q31_t)0xb9759db6, (q31_t)0x6ac115e2, (q31_t)0xb960a64c, (q31_t)0x6ab335f4, (q31_t)0xb94bb19b,\n  (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, (q31_t)0x6a9769c1, (q31_t)0xb921d067, (q31_t)0x6a897d7d, (q31_t)0xb90ce3e6, (q31_t)0x6a7b8d1e, (q31_t)0xb8f7fa21,\n  (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a5fa010, (q31_t)0xb8ce2ecf, (q31_t)0x6a51a361, (q31_t)0xb8b94d44, (q31_t)0x6a43a29a, (q31_t)0xb8a46e78,\n  (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x6a2794c1, (q31_t)0xb87ab922, (q31_t)0x6a1987b0, (q31_t)0xb865e299, (q31_t)0x6a0b7689, (q31_t)0xb8510ed4,\n  (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69ef47f6, (q31_t)0xb8276f93, (q31_t)0x69e12a8c, (q31_t)0xb812a41a, (q31_t)0x69d3090e, (q31_t)0xb7fddb67,\n  (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, (q31_t)0x69b6b9d3, (q31_t)0xb7d45255, (q31_t)0x69a88c19, (q31_t)0xb7bf91f8, (q31_t)0x699a5a4c, (q31_t)0xb7aad465,\n  (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x697dea7b, (q31_t)0xb781619c, (q31_t)0x696fac78, (q31_t)0xb76cac69, (q31_t)0x69616a65, (q31_t)0xb757fa01,\n  (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x6944da10, (q31_t)0xb72e9d9b, (q31_t)0x69368bce, (q31_t)0xb719f39e, (q31_t)0x6928397e, (q31_t)0xb7054c6f,\n  (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x690b88b5, (q31_t)0xb6dc0685, (q31_t)0x68fd2a3d, (q31_t)0xb6c767ca, (q31_t)0x68eec7b9, (q31_t)0xb6b2cbe2,\n  (q31_t)0x68e06129, (q31_t)0xb69e32cd, (q31_t)0x68d1f68f, (q31_t)0xb6899c8d, (q31_t)0x68c387e9, (q31_t)0xb6750921, (q31_t)0x68b5153a, (q31_t)0xb660788c,\n  (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x689823bf, (q31_t)0xb6375fe5, (q31_t)0x6889a4f6, (q31_t)0xb622d7d6, (q31_t)0x687b2224, (q31_t)0xb60e529f,\n  (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x685e106c, (q31_t)0xb5e550c1, (q31_t)0x684f8186, (q31_t)0xb5d0d41a, (q31_t)0x6840ee9b, (q31_t)0xb5bc5a50,\n  (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x6823bcb7, (q31_t)0xb5936f53, (q31_t)0x68151dbe, (q31_t)0xb57efe22, (q31_t)0x68067ac3, (q31_t)0xb56a8fd0,\n  (q31_t)0x67f7d3c5, (q31_t)0xb556245e, (q31_t)0x67e928c5, (q31_t)0xb541bbcd, (q31_t)0x67da79c3, (q31_t)0xb52d561e, (q31_t)0x67cbc6c0, (q31_t)0xb518f351,\n  (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67ae54ba, (q31_t)0xb4f03663, (q31_t)0x679f95b7, (q31_t)0xb4dbdc42, (q31_t)0x6790d2b6, (q31_t)0xb4c78507,\n  (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x677340ba, (q31_t)0xb49edf45, (q31_t)0x676471c0, (q31_t)0xb48a90c0, (q31_t)0x67559eca, (q31_t)0xb4764523,\n  (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x6737ecea, (q31_t)0xb44db6a8, (q31_t)0x67290e02, (q31_t)0xb43973ca, (q31_t)0x671a2b20, (q31_t)0xb42533d8,\n  (q31_t)0x670b4444, (q31_t)0xb410f6d3, (q31_t)0x66fc596f, (q31_t)0xb3fcbcbb, (q31_t)0x66ed6aa1, (q31_t)0xb3e88592, (q31_t)0x66de77dc, (q31_t)0xb3d45157,\n  (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66c0866d, (q31_t)0xb3abf1b2, (q31_t)0x66b187c3, (q31_t)0xb397c649, (q31_t)0x66a28524, (q31_t)0xb3839dd3,\n  (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x66847408, (q31_t)0xb35b55bf, (q31_t)0x6675658c, (q31_t)0xb3473623, (q31_t)0x6666531d, (q31_t)0xb333197c,\n  (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x66482267, (q31_t)0xb30ae912, (q31_t)0x66390422, (q31_t)0xb2f6d550, (q31_t)0x6629e1ec, (q31_t)0xb2e2c486,\n  (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, (q31_t)0x660b91af, (q31_t)0xb2baabde, (q31_t)0x65fc63a9, (q31_t)0xb2a6a402, (q31_t)0x65ed31b5, (q31_t)0xb2929f21,\n  (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65cec204, (q31_t)0xb26a9e54, (q31_t)0x65bf8447, (q31_t)0xb256a26a, (q31_t)0x65b0429f, (q31_t)0xb242a97e,\n  (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x6591b38c, (q31_t)0xb21ac0a6, (q31_t)0x65826622, (q31_t)0xb206d0ba, (q31_t)0x657314cf, (q31_t)0xb1f2e3d0,\n  (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x6554666d, (q31_t)0xb1cb1304, (q31_t)0x6545095f, (q31_t)0xb1b72f23, (q31_t)0x6535a86b, (q31_t)0xb1a34e47,\n  (q31_t)0x6526438f, (q31_t)0xb18f7071, (q31_t)0x6516dacd, (q31_t)0xb17b95a0, (q31_t)0x65076e25, (q31_t)0xb167bdd7, (q31_t)0x64f7fd98, (q31_t)0xb153e915,\n  (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64d910d1, (q31_t)0xb12c48ab, (q31_t)0x64c99498, (q31_t)0xb1187d05, (q31_t)0x64ba147d, (q31_t)0xb104b46a,\n  (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x649b08a0, (q31_t)0xb0dd2c56, (q31_t)0x648b7ce0, (q31_t)0xb0c96ce0, (q31_t)0x647bed3f, (q31_t)0xb0b5b077,\n  (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x645cc260, (q31_t)0xb08e40d2, (q31_t)0x644d2722, (q31_t)0xb07a8d97, (q31_t)0x643d8806, (q31_t)0xb066dd6d,\n  (q31_t)0x642de50d, (q31_t)0xb0533055, (q31_t)0x641e3e38, (q31_t)0xb03f864f, (q31_t)0x640e9386, (q31_t)0xb02bdf5c, (q31_t)0x63fee4f8, (q31_t)0xb0183b7d,\n  (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63df7c4d, (q31_t)0xaff0fcfe, (q31_t)0x63cfc231, (q31_t)0xafdd625f, (q31_t)0x63c0043b, (q31_t)0xafc9cad7,\n  (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x63a07cc7, (q31_t)0xafa2a50f, (q31_t)0x6390b34a, (q31_t)0xaf8f16d1, (q31_t)0x6380e5f6, (q31_t)0xaf7b8bac,\n  (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x63613fcd, (q31_t)0xaf547eb3, (q31_t)0x635166f9, (q31_t)0xaf40fce1, (q31_t)0x63418a50, (q31_t)0xaf2d7e2b,\n  (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, (q31_t)0x6321c585, (q31_t)0xaf068a1a, (q31_t)0x6311dd64, (q31_t)0xaef314c0, (q31_t)0x6301f171, (q31_t)0xaedfa285,\n  (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62e20e17, (q31_t)0xaeb8c774, (q31_t)0x62d216b3, (q31_t)0xaea55e9e, (q31_t)0x62c21b7e, (q31_t)0xae91f8eb,\n  (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x62a219aa, (q31_t)0xae6b36f0, (q31_t)0x6292130c, (q31_t)0xae57daab, (q31_t)0x628208a1, (q31_t)0xae44818b,\n  (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x6261e866, (q31_t)0xae1dd8c0, (q31_t)0x6251d298, (q31_t)0xae0a8916, (q31_t)0x6241b8ff, (q31_t)0xadf73c96,\n  (q31_t)0x62319b9d, (q31_t)0xade3f33e, (q31_t)0x62217a72, (q31_t)0xadd0ad12, (q31_t)0x6211557e, (q31_t)0xadbd6a10, (q31_t)0x62012cc2, (q31_t)0xadaa2a3b,\n  (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61e0cff5, (q31_t)0xad83b416, (q31_t)0x61d09be5, (q31_t)0xad707dc8, (q31_t)0x61c06410, (q31_t)0xad5d4aaa,\n  (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x619fe918, (q31_t)0xad36edfc, (q31_t)0x618fa5f7, (q31_t)0xad23c46e, (q31_t)0x617f5f12, (q31_t)0xad109e12,\n  (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x615ec603, (q31_t)0xacea5af2, (q31_t)0x614e73da, (q31_t)0xacd73e30, (q31_t)0x613e1df0, (q31_t)0xacc424a3,\n  (q31_t)0x612dc447, (q31_t)0xacb10e4b, (q31_t)0x611d66de, (q31_t)0xac9dfb29, (q31_t)0x610d05b7, (q31_t)0xac8aeb3e, (q31_t)0x60fca0d2, (q31_t)0xac77de8b,\n  (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60dbcbd1, (q31_t)0xac51cecf, (q31_t)0x60cb5bb7, (q31_t)0xac3ecbc7, (q31_t)0x60bae7e1, (q31_t)0xac2bcbfa,\n  (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x6099f505, (q31_t)0xac05d613, (q31_t)0x60897601, (q31_t)0xabf2dffb, (q31_t)0x6078f344, (q31_t)0xabdfed1f,\n  (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x6057e2a2, (q31_t)0xabba1125, (q31_t)0x604754bf, (q31_t)0xaba72807, (q31_t)0x6036c325, (q31_t)0xab944229,\n  (q31_t)0x60262dd6, (q31_t)0xab815f8d, (q31_t)0x601594d1, (q31_t)0xab6e8032, (q31_t)0x6004f819, (q31_t)0xab5ba41a, (q31_t)0x5ff457ad, (q31_t)0xab48cb46,\n  (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fd30bbc, (q31_t)0xab23236a, (q31_t)0x5fc26038, (q31_t)0xab105464, (q31_t)0x5fb1b104, (q31_t)0xaafd88a4,\n  (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f90478a, (q31_t)0xaad7fafb, (q31_t)0x5f7f8d46, (q31_t)0xaac53912, (q31_t)0x5f6ecf53, (q31_t)0xaab27a73,\n  (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f4d4865, (q31_t)0xaa8d0713, (q31_t)0x5f3c7f6b, (q31_t)0xaa7a5253, (q31_t)0x5f2bb2c5, (q31_t)0xaa67a0e0,\n  (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, (q31_t)0x5f0a0e77, (q31_t)0xaa4247e1, (q31_t)0x5ef936d1, (q31_t)0xaa2fa056, (q31_t)0x5ee85b82, (q31_t)0xaa1cfc1a,\n  (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5ec699e9, (q31_t)0xa9f7bd92, (q31_t)0x5eb5b3a2, (q31_t)0xa9e52347, (q31_t)0x5ea4c9b3, (q31_t)0xa9d28c4e,\n  (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e82eae5, (q31_t)0xa9ad6855, (q31_t)0x5e71f606, (q31_t)0xa99adb56, (q31_t)0x5e60fd84, (q31_t)0xa98851ac,\n  (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e3f0194, (q31_t)0xa9634858, (q31_t)0x5e2dfe29, (q31_t)0xa950c8b0, (q31_t)0x5e1cf71c, (q31_t)0xa93e4c5f,\n  (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, (q31_t)0x5dfade20, (q31_t)0xa9195dc7, (q31_t)0x5de9cc33, (q31_t)0xa906eb82, (q31_t)0x5dd8b6a7, (q31_t)0xa8f47c97,\n  (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5db680b4, (q31_t)0xa8cfa8d2, (q31_t)0x5da5604f, (q31_t)0xa8bd43fa, (q31_t)0x5d943c4e, (q31_t)0xa8aae280,\n  (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d71e979, (q31_t)0xa88629a5, (q31_t)0x5d60baa7, (q31_t)0xa873d246, (q31_t)0x5d4f883b, (q31_t)0xa8617e48,\n  (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5d2d189a, (q31_t)0xa83ce06e, (q31_t)0x5d1bdb65, (q31_t)0xa82a9693, (q31_t)0x5d0a9a9a, (q31_t)0xa818501c,\n  (q31_t)0x5cf95638, (q31_t)0xa8060d08, (q31_t)0x5ce80e41, (q31_t)0xa7f3cd59, (q31_t)0x5cd6c2b5, (q31_t)0xa7e1910f, (q31_t)0x5cc57394, (q31_t)0xa7cf582a,\n  (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5ca2ca99, (q31_t)0xa7aaf094, (q31_t)0x5c9170bf, (q31_t)0xa798c1e5, (q31_t)0x5c801354, (q31_t)0xa786969e,\n  (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c5d4dcc, (q31_t)0xa7624a4d, (q31_t)0x5c4be5b0, (q31_t)0xa7502943, (q31_t)0x5c3a7a05, (q31_t)0xa73e0ba5,\n  (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5c179806, (q31_t)0xa719daae, (q31_t)0x5c0621b2, (q31_t)0xa707c757, (q31_t)0x5bf4a7d2, (q31_t)0xa6f5b76d,\n  (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, (q31_t)0x5bd1a971, (q31_t)0xa6d1a1e7, (q31_t)0x5bc024f0, (q31_t)0xa6bf9c4b, (q31_t)0x5bae9ce7, (q31_t)0xa6ad9a21,\n  (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b8b8239, (q31_t)0xa689a022, (q31_t)0x5b79ef96, (q31_t)0xa677a84e, (q31_t)0x5b68596d, (q31_t)0xa665b3ee,\n  (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b452288, (q31_t)0xa641d58c, (q31_t)0x5b3381ce, (q31_t)0xa62feb8b, (q31_t)0x5b21dd90, (q31_t)0xa61e0501,\n  (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5afe8a8b, (q31_t)0xa5fa4252, (q31_t)0x5aecdbc5, (q31_t)0xa5e8662f, (q31_t)0x5adb297d, (q31_t)0xa5d68d85,\n  (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, (q31_t)0x5ab7ba6c, (q31_t)0xa5b2e6a0, (q31_t)0x5aa5fda5, (q31_t)0xa5a11866, (q31_t)0x5a943d5e, (q31_t)0xa58f4da8,\n  (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a70b258, (q31_t)0xa56bc2a2, (q31_t)0x5a5ee79a, (q31_t)0xa55a025b, (q31_t)0x5a4d1960, (q31_t)0xa5484594,\n  (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x5a29727b, (q31_t)0xa524d683, (q31_t)0x5a1799d1, (q31_t)0xa513243b, (q31_t)0x5a05bdae, (q31_t)0xa5017575,\n  (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59e1faff, (q31_t)0xa4de2270, (q31_t)0x59d01475, (q31_t)0xa4cc7e32, (q31_t)0x59be2a74, (q31_t)0xa4badd78,\n  (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, (q31_t)0x599a4c12, (q31_t)0xa497a693, (q31_t)0x598857b2, (q31_t)0xa486106a, (q31_t)0x59765fde, (q31_t)0xa4747dc7,\n  (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x595265df, (q31_t)0xa4516319, (q31_t)0x594063b5, (q31_t)0xa43fdb10, (q31_t)0x592e5e19, (q31_t)0xa42e568f,\n  (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x590a4893, (q31_t)0xa40b582e, (q31_t)0x58f838a9, (q31_t)0xa3f9de4e, (q31_t)0x58e62552, (q31_t)0xa3e867fa,\n  (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x58c1f45b, (q31_t)0xa3c585fb, (q31_t)0x58afd6bd, (q31_t)0xa3b41a50, (q31_t)0x589db5b3, (q31_t)0xa3a2b234,\n  (q31_t)0x588b9140, (q31_t)0xa3914da8, (q31_t)0x58796962, (q31_t)0xa37fecac, (q31_t)0x58673e1b, (q31_t)0xa36e8f41, (q31_t)0x58550f6c, (q31_t)0xa35d3567,\n  (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x5830a7d6, (q31_t)0xa33a8c6c, (q31_t)0x581e6ef1, (q31_t)0xa3293d4b, (q31_t)0x580c32a7, (q31_t)0xa317f1bf,\n  (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57e7afe4, (q31_t)0xa2f56566, (q31_t)0x57d5696d, (q31_t)0xa2e4249b, (q31_t)0x57c31f92, (q31_t)0xa2d2e766,\n  (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x579e81b8, (q31_t)0xa2b077c5, (q31_t)0x578c2dba, (q31_t)0xa29f4559, (q31_t)0x5779d65b, (q31_t)0xa28e1687,\n  (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, (q31_t)0x57551d80, (q31_t)0xa26bc3b2, (q31_t)0x5742bc06, (q31_t)0xa25a9fb1, (q31_t)0x5730572e, (q31_t)0xa2497f4c,\n  (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x570b8369, (q31_t)0xa2274959, (q31_t)0x56f9147e, (q31_t)0xa21633cd, (q31_t)0x56e6a239, (q31_t)0xa20521e0,\n  (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x56c1b3a1, (q31_t)0xa1e308e4, (q31_t)0x56af3750, (q31_t)0xa1d201d7, (q31_t)0x569cb7a8, (q31_t)0xa1c0fe6c,\n  (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x5677ae54, (q31_t)0xa19f027c, (q31_t)0x566524aa, (q31_t)0xa18e09fa, (q31_t)0x565297ab, (q31_t)0xa17d151b,\n  (q31_t)0x56400758, (q31_t)0xa16c23e1, (q31_t)0x562d73b2, (q31_t)0xa15b364d, (q31_t)0x561adcb9, (q31_t)0xa14a4c5e, (q31_t)0x5608426e, (q31_t)0xa1396617,\n  (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55e303e6, (q31_t)0xa117a47e, (q31_t)0x55d05faa, (q31_t)0xa106c92f, (q31_t)0x55bdb81f, (q31_t)0xa0f5f189,\n  (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x55985f20, (q31_t)0xa0d44d3b, (q31_t)0x5585adad, (q31_t)0xa0c38095, (q31_t)0x5572f8ed, (q31_t)0xa0b2b79b,\n  (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x554d858d, (q31_t)0xa09130ad, (q31_t)0x553ac6ee, (q31_t)0xa08072ba, (q31_t)0x55280505, (q31_t)0xa06fb876,\n  (q31_t)0x55153fd4, (q31_t)0xa05f01e1, (q31_t)0x5502775c, (q31_t)0xa04e4efc, (q31_t)0x54efab9c, (q31_t)0xa03d9fc8, (q31_t)0x54dcdc96, (q31_t)0xa02cf444,\n  (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x54b734ba, (q31_t)0xa00ba853, (q31_t)0x54a45be6, (q31_t)0x9ffb07e7, (q31_t)0x54917fce, (q31_t)0x9fea6b2f,\n  (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x546bbdd7, (q31_t)0x9fc93cdb, (q31_t)0x5458d7f9, (q31_t)0x9fb8ab41, (q31_t)0x5445eedb, (q31_t)0x9fa81d5e,\n  (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x542012e1, (q31_t)0x9f870cbc, (q31_t)0x540d2005, (q31_t)0x9f7689ff, (q31_t)0x53fa29ed, (q31_t)0x9f660afb,\n  (q31_t)0x53e73097, (q31_t)0x9f558fb0, (q31_t)0x53d43406, (q31_t)0x9f45181f, (q31_t)0x53c13439, (q31_t)0x9f34a449, (q31_t)0x53ae3131, (q31_t)0x9f24342f,\n  (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x53882175, (q31_t)0x9f035f2e, (q31_t)0x537514c2, (q31_t)0x9ef2fa49, (q31_t)0x536204d7, (q31_t)0x9ee29922,\n  (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x533bdb5d, (q31_t)0x9ec1e210, (q31_t)0x5328c1d0, (q31_t)0x9eb18c26, (q31_t)0x5315a50e, (q31_t)0x9ea139fd,\n  (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52ef61ee, (q31_t)0x9e80a0ee, (q31_t)0x52dc3b92, (q31_t)0x9e705a09, (q31_t)0x52c91204, (q31_t)0x9e6016e8,\n  (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, (q31_t)0x52a2b556, (q31_t)0x9e3f9bf0, (q31_t)0x528f8238, (q31_t)0x9e2f641b, (q31_t)0x527c4bea, (q31_t)0x9e1f300b,\n  (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x5255d5c5, (q31_t)0x9dfed33e, (q31_t)0x524295f0, (q31_t)0x9deeaa82, (q31_t)0x522f52ee, (q31_t)0x9dde858e,\n  (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x5208c36a, (q31_t)0x9dbe4701, (q31_t)0x51f576ea, (q31_t)0x9dae2d68, (q31_t)0x51e22740, (q31_t)0x9d9e179a,\n  (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x51bb7e75, (q31_t)0x9d7df75f, (q31_t)0x51a82555, (q31_t)0x9d6decf4, (q31_t)0x5194c910, (q31_t)0x9d5de656,\n  (q31_t)0x518169a5, (q31_t)0x9d4de385, (q31_t)0x516e0715, (q31_t)0x9d3de482, (q31_t)0x515aa162, (q31_t)0x9d2de94d, (q31_t)0x5147388c, (q31_t)0x9d1df1e9,\n  (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x51205d7b, (q31_t)0x9cfe0e8f, (q31_t)0x510ceb40, (q31_t)0x9cee229c, (q31_t)0x50f975e6, (q31_t)0x9cde3a7b,\n  (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x50d281d5, (q31_t)0x9cbe75b0, (q31_t)0x50bf031f, (q31_t)0x9cae9907, (q31_t)0x50ab814d, (q31_t)0x9c9ec033,\n  (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x50847454, (q31_t)0x9c7f1a0a, (q31_t)0x5070e92f, (q31_t)0x9c6f4cb6, (q31_t)0x505d5af1, (q31_t)0x9c5f8339,\n  (q31_t)0x5049c999, (q31_t)0x9c4fbd93, (q31_t)0x50363529, (q31_t)0x9c3ffbc5, (q31_t)0x50229da1, (q31_t)0x9c303dcf, (q31_t)0x500f0302, (q31_t)0x9c2083b3,\n  (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4fe7c483, (q31_t)0x9c011b08, (q31_t)0x4fd420a4, (q31_t)0x9bf16c7a, (q31_t)0x4fc079b1, (q31_t)0x9be1c1c8,\n  (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4f992293, (q31_t)0x9bc277fa, (q31_t)0x4f857269, (q31_t)0x9bb2d8de, (q31_t)0x4f71bf2e, (q31_t)0x9ba33da0,\n  (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f4a4f89, (q31_t)0x9b8412c1, (q31_t)0x4f369320, (q31_t)0x9b748320, (q31_t)0x4f22d3aa, (q31_t)0x9b64f760,\n  (q31_t)0x4f0f1126, (q31_t)0x9b556f81, (q31_t)0x4efb4b96, (q31_t)0x9b45eb83, (q31_t)0x4ee782fb, (q31_t)0x9b366b68, (q31_t)0x4ed3b755, (q31_t)0x9b26ef2f,\n  (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4eac16eb, (q31_t)0x9b080268, (q31_t)0x4e984229, (q31_t)0x9af891db, (q31_t)0x4e846a60, (q31_t)0x9ae92533,\n  (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e5cb1b9, (q31_t)0x9aca5795, (q31_t)0x4e48d0dd, (q31_t)0x9abaf6a1, (q31_t)0x4e34ecfc, (q31_t)0x9aab9993,\n  (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4e0d1c30, (q31_t)0x9a8ceb31, (q31_t)0x4df92f46, (q31_t)0x9a7d99de, (q31_t)0x4de53f5a, (q31_t)0x9a6e4c74,\n  (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, (q31_t)0x4dbd5682, (q31_t)0x9a4fbd61, (q31_t)0x4da95d96, (q31_t)0x9a407bb9, (q31_t)0x4d9561ac, (q31_t)0x9a313dfc,\n  (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d6d60df, (q31_t)0x9a12ce4b, (q31_t)0x4d595bfe, (q31_t)0x9a039c57, (q31_t)0x4d455422, (q31_t)0x99f46e51,\n  (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4d1d3b7a, (q31_t)0x99d61e14, (q31_t)0x4d092ab0, (q31_t)0x99c6fbde, (q31_t)0x4cf516ee, (q31_t)0x99b7dd99,\n  (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4ccce684, (q31_t)0x9999ace3, (q31_t)0x4cb8c9dd, (q31_t)0x998a9a74, (q31_t)0x4ca4aa41, (q31_t)0x997b8bf8,\n  (q31_t)0x4c9087b1, (q31_t)0x996c816f, (q31_t)0x4c7c622d, (q31_t)0x995d7adc, (q31_t)0x4c6839b7, (q31_t)0x994e783d, (q31_t)0x4c540e4e, (q31_t)0x993f7993,\n  (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4c2baea9, (q31_t)0x99218824, (q31_t)0x4c177a6e, (q31_t)0x9912955f, (q31_t)0x4c034345, (q31_t)0x9903a691,\n  (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4bdacc28, (q31_t)0x98e5d4e0, (q31_t)0x4bc68c36, (q31_t)0x98d6f1fe, (q31_t)0x4bb24958, (q31_t)0x98c81316,\n  (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b89badd, (q31_t)0x98aa6136, (q31_t)0x4b756f40, (q31_t)0x989b8e40, (q31_t)0x4b6120bb, (q31_t)0x988cbf46,\n  (q31_t)0x4b4ccf4d, (q31_t)0x987df449, (q31_t)0x4b387af9, (q31_t)0x986f2d4a, (q31_t)0x4b2423be, (q31_t)0x98606a49, (q31_t)0x4b0fc99d, (q31_t)0x9851ab46,\n  (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4ae70caf, (q31_t)0x98343940, (q31_t)0x4ad2a9e2, (q31_t)0x9825863d, (q31_t)0x4abe4433, (q31_t)0x9816d73b,\n  (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4a957030, (q31_t)0x97f9853d, (q31_t)0x4a8101de, (q31_t)0x97eae242, (q31_t)0x4a6c90ad, (q31_t)0x97dc4349,\n  (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a43a5b0, (q31_t)0x97bf1165, (q31_t)0x4a2f2be6, (q31_t)0x97b07e7a, (q31_t)0x4a1aaf3f, (q31_t)0x97a1ef94,\n  (q31_t)0x4a062fbd, (q31_t)0x979364b5, (q31_t)0x49f1ad61, (q31_t)0x9784dddc, (q31_t)0x49dd282a, (q31_t)0x97765b0a, (q31_t)0x49c8a01b, (q31_t)0x9767dc41,\n  (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x499f8774, (q31_t)0x974aeac6, (q31_t)0x498af6df, (q31_t)0x973c7817, (q31_t)0x49766373, (q31_t)0x972e0971,\n  (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x494d341e, (q31_t)0x97113847, (q31_t)0x49389836, (q31_t)0x9702d5c3, (q31_t)0x4923f97b, (q31_t)0x96f4774b,\n  (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x48fab391, (q31_t)0x96d7c682, (q31_t)0x48e60c62, (q31_t)0x96c97432, (q31_t)0x48d16265, (q31_t)0x96bb25f0,\n  (q31_t)0x48bcb599, (q31_t)0x96acdbbe, (q31_t)0x48a805ff, (q31_t)0x969e959b, (q31_t)0x48935397, (q31_t)0x96905388, (q31_t)0x487e9e64, (q31_t)0x96821585,\n  (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x48552b9b, (q31_t)0x9665a5b4, (q31_t)0x48406e08, (q31_t)0x965773e7, (q31_t)0x482badab, (q31_t)0x9649462d,\n  (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x48022499, (q31_t)0x962cf6f2, (q31_t)0x47ed5be6, (q31_t)0x961ed574, (q31_t)0x47d8906d, (q31_t)0x9610b80a,\n  (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47aef12c, (q31_t)0x95f48977, (q31_t)0x479a1d67, (q31_t)0x95e67850, (q31_t)0x478546de, (q31_t)0x95d86b3f,\n  (q31_t)0x47706d93, (q31_t)0x95ca6247, (q31_t)0x475b9188, (q31_t)0x95bc5d66, (q31_t)0x4746b2bc, (q31_t)0x95ae5c9f, (q31_t)0x4731d131, (q31_t)0x95a05ff0,\n  (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x470805df, (q31_t)0x958472e2, (q31_t)0x46f31c1a, (q31_t)0x95768283, (q31_t)0x46de2f99, (q31_t)0x9568963f,\n  (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46b44e65, (q31_t)0x954cca0c, (q31_t)0x469f59b4, (q31_t)0x953eea1e, (q31_t)0x468a624a, (q31_t)0x95310e4e,\n  (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x46606b4e, (q31_t)0x95156308, (q31_t)0x464b6bbe, (q31_t)0x95079394, (q31_t)0x46366978, (q31_t)0x94f9c83f,\n  (q31_t)0x4621647d, (q31_t)0x94ec010b, (q31_t)0x460c5cce, (q31_t)0x94de3df8, (q31_t)0x45f7526b, (q31_t)0x94d07f05, (q31_t)0x45e24556, (q31_t)0x94c2c435,\n  (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x45b82318, (q31_t)0x94a75afd, (q31_t)0x45a30df0, (q31_t)0x9499ac95, (q31_t)0x458df619, (q31_t)0x948c0252,\n  (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x4563be60, (q31_t)0x9470ba39, (q31_t)0x454e9e80, (q31_t)0x94631c65, (q31_t)0x45397bf4, (q31_t)0x945582b7,\n  (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x450f2edb, (q31_t)0x943a5bcf, (q31_t)0x44fa0450, (q31_t)0x942cce96, (q31_t)0x44e4d71c, (q31_t)0x941f4585,\n  (q31_t)0x44cfa740, (q31_t)0x9411c09e, (q31_t)0x44ba74bd, (q31_t)0x94043fdf, (q31_t)0x44a53f93, (q31_t)0x93f6c34a, (q31_t)0x449007c4, (q31_t)0x93e94adf,\n  (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x44659039, (q31_t)0x93ce668b, (q31_t)0x4450507e, (q31_t)0x93c0faa3, (q31_t)0x443b0e21, (q31_t)0x93b392e6,\n  (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x44108184, (q31_t)0x9398cff5, (q31_t)0x43fb3746, (q31_t)0x938b74c1, (q31_t)0x43e5ea68, (q31_t)0x937e1dbb,\n  (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x43bb48d4, (q31_t)0x93637c3d, (q31_t)0x43a5f41e, (q31_t)0x935631c5, (q31_t)0x43909ccd, (q31_t)0x9348eb7e,\n  (q31_t)0x437b42e1, (q31_t)0x933ba968, (q31_t)0x4365e65b, (q31_t)0x932e6b84, (q31_t)0x4350873c, (q31_t)0x932131d1, (q31_t)0x433b2585, (q31_t)0x9313fc51,\n  (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x43105a50, (q31_t)0x92f99deb, (q31_t)0x42faf0d4, (q31_t)0x92ec7505, (q31_t)0x42e584c3, (q31_t)0x92df5054,\n  (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x42baa4e6, (q31_t)0x92c51392, (q31_t)0x42a5311b, (q31_t)0x92b7fb82, (q31_t)0x428fbabe, (q31_t)0x92aae7a8,\n  (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x4264c653, (q31_t)0x9290cc9b, (q31_t)0x424f4845, (q31_t)0x9283c568, (q31_t)0x4239c7aa, (q31_t)0x9276c26d,\n  (q31_t)0x42244481, (q31_t)0x9269c3ac, (q31_t)0x420ebecb, (q31_t)0x925cc924, (q31_t)0x41f93689, (q31_t)0x924fd2d7, (q31_t)0x41e3abbc, (q31_t)0x9242e0c4,\n  (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x41b88e84, (q31_t)0x9229094f, (q31_t)0x41a2fc1a, (q31_t)0x921c23ef, (q31_t)0x418d6729, (q31_t)0x920f42cb,\n  (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x416235b2, (q31_t)0x91f58d3b, (q31_t)0x414c992f, (q31_t)0x91e8b8d0, (q31_t)0x4136fa27, (q31_t)0x91dbe8a4,\n  (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x410bb48c, (q31_t)0x91c25508, (q31_t)0x40f60dfb, (q31_t)0x91b5919a, (q31_t)0x40e064ea, (q31_t)0x91a8d26d,\n  (q31_t)0x40cab958, (q31_t)0x919c1781, (q31_t)0x40b50b46, (q31_t)0x918f60d6, (q31_t)0x409f5ab6, (q31_t)0x9182ae6d, (q31_t)0x4089a7a8, (q31_t)0x91760047,\n  (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x405e3a16, (q31_t)0x915cb0c3, (q31_t)0x40487f94, (q31_t)0x91500f67, (q31_t)0x4032c297, (q31_t)0x91437250,\n  (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x40074132, (q31_t)0x912a44f0, (q31_t)0x3ff17cca, (q31_t)0x911db4a9, (q31_t)0x3fdbb5ec, (q31_t)0x911128a8,\n  (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3fb020ce, (q31_t)0x90f81d7b, (q31_t)0x3f9a5290, (q31_t)0x90eb9e50, (q31_t)0x3f8481dd, (q31_t)0x90df236e,\n  (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, (q31_t)0x3f58d921, (q31_t)0x90c63a83, (q31_t)0x3f430119, (q31_t)0x90b9cc7d, (q31_t)0x3f2d26a0, (q31_t)0x90ad62c0,\n  (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3f016a61, (q31_t)0x90949c28, (q31_t)0x3eeb889c, (q31_t)0x90883f4d, (q31_t)0x3ed5a46b, (q31_t)0x907be6be,\n  (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3ea9d4c3, (q31_t)0x90634287, (q31_t)0x3e93e950, (q31_t)0x9056f6df, (q31_t)0x3e7dfb73, (q31_t)0x904aaf86,\n  (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e52187f, (q31_t)0x90322dbf, (q31_t)0x3e3c2369, (q31_t)0x9025f352, (q31_t)0x3e262bee, (q31_t)0x9019bd36,\n  (q31_t)0x3e10320d, (q31_t)0x900d8b69, (q31_t)0x3dfa35c8, (q31_t)0x90015dee, (q31_t)0x3de4371f, (q31_t)0x8ff534c4, (q31_t)0x3dce3614, (q31_t)0x8fe90fec,\n  (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3da22cd7, (q31_t)0x8fd0d333, (q31_t)0x3d8c24a8, (q31_t)0x8fc4bb53, (q31_t)0x3d761a19, (q31_t)0x8fb8a7c7,\n  (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d49fde1, (q31_t)0x8fa08dab, (q31_t)0x3d33ec39, (q31_t)0x8f94871d, (q31_t)0x3d1dd835, (q31_t)0x8f8884e4,\n  (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3cf1a91c, (q31_t)0x8f708d75, (q31_t)0x3cdb8e09, (q31_t)0x8f649840, (q31_t)0x3cc5709e, (q31_t)0x8f58a761,\n  (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, (q31_t)0x3c992ec0, (q31_t)0x8f40d2ad, (q31_t)0x3c830a50, (q31_t)0x8f34eed8, (q31_t)0x3c6ce38a, (q31_t)0x8f290f5c,\n  (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3c408f03, (q31_t)0x8f115d72, (q31_t)0x3c2a6142, (q31_t)0x8f058b04, (q31_t)0x3c143130, (q31_t)0x8ef9bcf2,\n  (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3be7ca1a, (q31_t)0x8ee22de0, (q31_t)0x3bd19318, (q31_t)0x8ed66ce1, (q31_t)0x3bbb59c7, (q31_t)0x8ecab040,\n  (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b8ee03e, (q31_t)0x8eb34415, (q31_t)0x3b78a007, (q31_t)0x8ea7948c, (q31_t)0x3b625d86, (q31_t)0x8e9be963,\n  (q31_t)0x3b4c18ba, (q31_t)0x8e904298, (q31_t)0x3b35d1a5, (q31_t)0x8e84a02d, (q31_t)0x3b1f8848, (q31_t)0x8e790222, (q31_t)0x3b093ca3, (q31_t)0x8e6d6877,\n  (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3adc9e86, (q31_t)0x8e564246, (q31_t)0x3ac64c0f, (q31_t)0x8e4ab5bf, (q31_t)0x3aaff755, (q31_t)0x8e3f2d9b,\n  (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a834717, (q31_t)0x8e282a7b, (q31_t)0x3a6ceb96, (q31_t)0x8e1caf80, (q31_t)0x3a568dd4, (q31_t)0x8e1138ea,\n  (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x3a29cb91, (q31_t)0x8dfa58ea, (q31_t)0x3a136712, (q31_t)0x8deeef82, (q31_t)0x39fd0056, (q31_t)0x8de38a80,\n  (q31_t)0x39e6975e, (q31_t)0x8dd829e4, (q31_t)0x39d02c2a, (q31_t)0x8dcccdaf, (q31_t)0x39b9bebc, (q31_t)0x8dc175e0, (q31_t)0x39a34f13, (q31_t)0x8db6227a,\n  (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x39766919, (q31_t)0x8d9f88e5, (q31_t)0x395ff2c9, (q31_t)0x8d9442b8, (q31_t)0x39497a43, (q31_t)0x8d8900f3,\n  (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x391c8297, (q31_t)0x8d728aa9, (q31_t)0x39060373, (q31_t)0x8d675623, (q31_t)0x38ef821c, (q31_t)0x8d5c2609,\n  (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x38c278d9, (q31_t)0x8d45d316, (q31_t)0x38abf0ef, (q31_t)0x8d3ab03f, (q31_t)0x389566d6, (q31_t)0x8d2f91d5,\n  (q31_t)0x387eda8e, (q31_t)0x8d2477d8, (q31_t)0x38684c19, (q31_t)0x8d196249, (q31_t)0x3851bb77, (q31_t)0x8d0e5127, (q31_t)0x383b28a9, (q31_t)0x8d034474,\n  (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x380dfc8d, (q31_t)0x8ced385b, (q31_t)0x37f76341, (q31_t)0x8ce238f6, (q31_t)0x37e0c7cc, (q31_t)0x8cd73e01,\n  (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x37b38a6d, (q31_t)0x8cc1556a, (q31_t)0x379ce885, (q31_t)0x8cb667c8, (q31_t)0x37864477, (q31_t)0x8cab7e98,\n  (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3758f5f2, (q31_t)0x8c95b98f, (q31_t)0x37424b7b, (q31_t)0x8c8addb7, (q31_t)0x372b9ee3, (q31_t)0x8c800652,\n  (q31_t)0x3714f02a, (q31_t)0x8c753362, (q31_t)0x36fe3f52, (q31_t)0x8c6a64e5, (q31_t)0x36e78c5b, (q31_t)0x8c5f9ade, (q31_t)0x36d0d746, (q31_t)0x8c54d54c,\n  (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x36a366c6, (q31_t)0x8c3f5788, (q31_t)0x368cab5c, (q31_t)0x8c349f58, (q31_t)0x3675edd9, (q31_t)0x8c29eb9f,\n  (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36486c86, (q31_t)0x8c149192, (q31_t)0x3631a8b8, (q31_t)0x8c09eb40, (q31_t)0x361ae2d3, (q31_t)0x8bff4966,\n  (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35ed50c9, (q31_t)0x8bea131e, (q31_t)0x35d684a6, (q31_t)0x8bdf7eb0, (q31_t)0x35bfb66e, (q31_t)0x8bd4eebc,\n  (q31_t)0x35a8e625, (q31_t)0x8bca6343, (q31_t)0x359213c9, (q31_t)0x8bbfdc44, (q31_t)0x357b3f5d, (q31_t)0x8bb559c1, (q31_t)0x356468e2, (q31_t)0x8baadbba,\n  (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x3536b5be, (q31_t)0x8b95ed21, (q31_t)0x351fd918, (q31_t)0x8b8b7c8f, (q31_t)0x3508fa66, (q31_t)0x8b81107b,\n  (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34db36df, (q31_t)0x8b6c45cc, (q31_t)0x34c4520d, (q31_t)0x8b61e733, (q31_t)0x34ad6b32, (q31_t)0x8b578d18,\n  (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x347f9766, (q31_t)0x8b42e661, (q31_t)0x3468aa76, (q31_t)0x8b3899c6, (q31_t)0x3451bb81, (q31_t)0x8b2e51ab,\n  (q31_t)0x343aca87, (q31_t)0x8b240e11, (q31_t)0x3423d78a, (q31_t)0x8b19cef8, (q31_t)0x340ce28b, (q31_t)0x8b0f9462, (q31_t)0x33f5eb89, (q31_t)0x8b055e4d,\n  (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x33c7f785, (q31_t)0x8af0ffac, (q31_t)0x33b0fa84, (q31_t)0x8ae6d720, (q31_t)0x3399fb85, (q31_t)0x8adcb318,\n  (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x336bf78f, (q31_t)0x8ac87894, (q31_t)0x3354f29b, (q31_t)0x8abe6219, (q31_t)0x333debab, (q31_t)0x8ab45024,\n  (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x330fd7e1, (q31_t)0x8aa039cb, (q31_t)0x32f8cb07, (q31_t)0x8a963567, (q31_t)0x32e1bc36, (q31_t)0x8a8c358b,\n  (q31_t)0x32caab6f, (q31_t)0x8a823a36, (q31_t)0x32b398b3, (q31_t)0x8a784368, (q31_t)0x329c8402, (q31_t)0x8a6e5123, (q31_t)0x32856d5e, (q31_t)0x8a646365,\n  (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x32573a3f, (q31_t)0x8a509585, (q31_t)0x32401dc6, (q31_t)0x8a46b564, (q31_t)0x3228ff5c, (q31_t)0x8a3cd9cc,\n  (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x31fabcbd, (q31_t)0x8a29303b, (q31_t)0x31e39889, (q31_t)0x8a1f6243, (q31_t)0x31cc7269, (q31_t)0x8a1598d6,\n  (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x319e2067, (q31_t)0x8a0213a0, (q31_t)0x3186f487, (q31_t)0x89f857d8, (q31_t)0x316fc6be, (q31_t)0x89eea09d,\n  (q31_t)0x3158970e, (q31_t)0x89e4edef, (q31_t)0x31416576, (q31_t)0x89db3fcf, (q31_t)0x312a31f8, (q31_t)0x89d1963c, (q31_t)0x3112fc95, (q31_t)0x89c7f138,\n  (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x30e48c22, (q31_t)0x89b4b4dd, (q31_t)0x30cd5115, (q31_t)0x89ab1d87, (q31_t)0x30b61426, (q31_t)0x89a18ac0,\n  (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x308794a6, (q31_t)0x898e72e4, (q31_t)0x30705217, (q31_t)0x8984edcf, (q31_t)0x30590dab, (q31_t)0x897b6d4c,\n  (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x302a7f3a, (q31_t)0x896879fb, (q31_t)0x30133539, (q31_t)0x895f072e, (q31_t)0x2ffbe95d, (q31_t)0x895598f3,\n  (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, (q31_t)0x2fcd4c19, (q31_t)0x8942ca39, (q31_t)0x2fb5fab2, (q31_t)0x893969b9, (q31_t)0x2f9ea775, (q31_t)0x89300dce,\n  (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f6ffb7a, (q31_t)0x891d63b5, (q31_t)0x2f58a2be, (q31_t)0x89141589, (q31_t)0x2f41482e, (q31_t)0x890acbf2,\n  (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2f128d99, (q31_t)0x88f84687, (q31_t)0x2efb2d95, (q31_t)0x88ef0ab4, (q31_t)0x2ee3cbc1, (q31_t)0x88e5d378,\n  (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2eb502ae, (q31_t)0x88d372c6, (q31_t)0x2e9d9b70, (q31_t)0x88ca4951, (q31_t)0x2e863267, (q31_t)0x88c12475,\n  (q31_t)0x2e6ec792, (q31_t)0x88b80432, (q31_t)0x2e575af3, (q31_t)0x88aee888, (q31_t)0x2e3fec8b, (q31_t)0x88a5d177, (q31_t)0x2e287c5a, (q31_t)0x889cbf01,\n  (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2df996a3, (q31_t)0x888aa7e3, (q31_t)0x2de2211e, (q31_t)0x8881a33d, (q31_t)0x2dcaa9d5, (q31_t)0x8878a332,\n  (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2d9bb5f6, (q31_t)0x8866b0ef, (q31_t)0x2d843964, (q31_t)0x885dbeb8, (q31_t)0x2d6cbb10, (q31_t)0x8854d11e,\n  (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2d3db928, (q31_t)0x884303c1, (q31_t)0x2d263596, (q31_t)0x883a23ff, (q31_t)0x2d0eb046, (q31_t)0x883148db,\n  (q31_t)0x2cf72939, (q31_t)0x88287256, (q31_t)0x2cdfa071, (q31_t)0x881fa06f, (q31_t)0x2cc815ee, (q31_t)0x8816d327, (q31_t)0x2cb089b1, (q31_t)0x880e0a7f,\n  (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c816c0c, (q31_t)0x87fc870f, (q31_t)0x2c69daa6, (q31_t)0x87f3cc48, (q31_t)0x2c52478a, (q31_t)0x87eb1621,\n  (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2c231c33, (q31_t)0x87d9b7b7, (q31_t)0x2c0b83fa, (q31_t)0x87d10f75, (q31_t)0x2bf3ea0d, (q31_t)0x87c86bd5,\n  (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2bc4b120, (q31_t)0x87b7327d, (q31_t)0x2bad1221, (q31_t)0x87ae9cc5, (q31_t)0x2b957173, (q31_t)0x87a60bb1,\n  (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, (q31_t)0x2b662b0e, (q31_t)0x8794f774, (q31_t)0x2b4e8558, (q31_t)0x878c744d, (q31_t)0x2b36ddf7, (q31_t)0x8783f5ca,\n  (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2b078a36, (q31_t)0x877306b4, (q31_t)0x2aefddd8, (q31_t)0x876a9621, (q31_t)0x2ad82fd2, (q31_t)0x87622a35,\n  (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2aa8ced3, (q31_t)0x87516050, (q31_t)0x2a911bdc, (q31_t)0x87490258, (q31_t)0x2a796740, (q31_t)0x8740a907,\n  (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a49f920, (q31_t)0x8730045d, (q31_t)0x2a323f9e, (q31_t)0x8727b905, (q31_t)0x2a1a847b, (q31_t)0x871f7255,\n  (q31_t)0x2a02c7b8, (q31_t)0x8717304e, (q31_t)0x29eb0957, (q31_t)0x870ef2f1, (q31_t)0x29d34958, (q31_t)0x8706ba3d, (q31_t)0x29bb87bc, (q31_t)0x86fe8633,\n  (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x298bffb2, (q31_t)0x86ee2c1e, (q31_t)0x29743946, (q31_t)0x86e60614, (q31_t)0x295c7140, (q31_t)0x86dde4b5,\n  (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x292cdc6d, (q31_t)0x86cdaffa, (q31_t)0x29150fa1, (q31_t)0x86c59c9f, (q31_t)0x28fd4140, (q31_t)0x86bd8df0,\n  (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x28cd9fc1, (q31_t)0x86ad7e99, (q31_t)0x28b5cca5, (q31_t)0x86a57df2, (q31_t)0x289df7f8, (q31_t)0x869d81f8,\n  (q31_t)0x288621b9, (q31_t)0x86958aac, (q31_t)0x286e49ea, (q31_t)0x868d980e, (q31_t)0x2856708d, (q31_t)0x8685aa20, (q31_t)0x283e95a1, (q31_t)0x867dc0e0,\n  (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x280edb23, (q31_t)0x866dfc6e, (q31_t)0x27f6fb92, (q31_t)0x8666213c, (q31_t)0x27df1a77, (q31_t)0x865e4abb,\n  (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27af53a6, (q31_t)0x864eabcb, (q31_t)0x27976df1, (q31_t)0x8646e35c, (q31_t)0x277f86b5, (q31_t)0x863f1f9e,\n  (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x274fb3ae, (q31_t)0x862fa638, (q31_t)0x2737c7e3, (q31_t)0x8627f091, (q31_t)0x271fda96, (q31_t)0x86203f9c,\n  (q31_t)0x2707ebc7, (q31_t)0x86189359, (q31_t)0x26effb76, (q31_t)0x8610ebca, (q31_t)0x26d809a5, (q31_t)0x860948ef, (q31_t)0x26c01655, (q31_t)0x8601aac7,\n  (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26902b39, (q31_t)0x85f27c93, (q31_t)0x26783370, (q31_t)0x85eaec88, (q31_t)0x26603a2c, (q31_t)0x85e36132,\n  (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x26304333, (q31_t)0x85d458a6, (q31_t)0x26184581, (q31_t)0x85ccdb70, (q31_t)0x26004657, (q31_t)0x85c562f1,\n  (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x25d0439f, (q31_t)0x85b68015, (q31_t)0x25b84012, (q31_t)0x85af15b9, (q31_t)0x25a03b11, (q31_t)0x85a7b015,\n  (q31_t)0x2588349d, (q31_t)0x85a04f28, (q31_t)0x25702cb7, (q31_t)0x8598f2f3, (q31_t)0x2558235f, (q31_t)0x85919b76, (q31_t)0x25401896, (q31_t)0x858a48b1,\n  (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x250ffeb7, (q31_t)0x857bb152, (q31_t)0x24f7efa2, (q31_t)0x85746cb8, (q31_t)0x24dfdf20, (q31_t)0x856d2cd7,\n  (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24afb9da, (q31_t)0x855ebb44, (q31_t)0x2497a517, (q31_t)0x85578991, (q31_t)0x247f8eec, (q31_t)0x85505c99,\n  (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x244f5e5c, (q31_t)0x854210db, (q31_t)0x243743fa, (q31_t)0x853af214, (q31_t)0x241f2833, (q31_t)0x8533d809,\n  (q31_t)0x24070b08, (q31_t)0x852cc2bb, (q31_t)0x23eeec78, (q31_t)0x8525b228, (q31_t)0x23d6cc87, (q31_t)0x851ea652, (q31_t)0x23beab33, (q31_t)0x85179f39,\n  (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x238e646a, (q31_t)0x85099f3e, (q31_t)0x23763ef7, (q31_t)0x8502a65c, (q31_t)0x235e1826, (q31_t)0x84fbb239,\n  (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x232dc66d, (q31_t)0x84edd82d, (q31_t)0x23159b88, (q31_t)0x84e6f244, (q31_t)0x22fd6f48, (q31_t)0x84e0111b,\n  (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22cd12bd, (q31_t)0x84d25d06, (q31_t)0x22b4e274, (q31_t)0x84cb8a1b, (q31_t)0x229cb0d5, (q31_t)0x84c4bbf0,\n  (q31_t)0x22847de0, (q31_t)0x84bdf286, (q31_t)0x226c4996, (q31_t)0x84b72ddb, (q31_t)0x225413f8, (q31_t)0x84b06df2, (q31_t)0x223bdd08, (q31_t)0x84a9b2ca,\n  (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x220b6b32, (q31_t)0x849c4abd, (q31_t)0x21f3304f, (q31_t)0x84959dd9, (q31_t)0x21daf41d, (q31_t)0x848ef5b7,\n  (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x21aa77cf, (q31_t)0x8481b3bb, (q31_t)0x219237b5, (q31_t)0x847b19e1, (q31_t)0x2179f64f, (q31_t)0x847484ca,\n  (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x21496fa7, (q31_t)0x846768e7, (q31_t)0x21312a65, (q31_t)0x8460e21a, (q31_t)0x2118e3dc, (q31_t)0x845a6012,\n  (q31_t)0x21009c0c, (q31_t)0x8453e2cf, (q31_t)0x20e852f6, (q31_t)0x844d6a50, (q31_t)0x20d0089c, (q31_t)0x8446f695, (q31_t)0x20b7bcfe, (q31_t)0x844087a0,\n  (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x208721f9, (q31_t)0x8433b806, (q31_t)0x206ed295, (q31_t)0x842d5762, (q31_t)0x205681f1, (q31_t)0x8426fb84,\n  (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x2025dcec, (q31_t)0x841a521a, (q31_t)0x200d888d, (q31_t)0x84140490, (q31_t)0x1ff532f2, (q31_t)0x840dbbcc,\n  (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1fc4840a, (q31_t)0x8401389b, (q31_t)0x1fac2abf, (q31_t)0x83fafe2e, (q31_t)0x1f93d03c, (q31_t)0x83f4c889,\n  (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, (q31_t)0x1f63178f, (q31_t)0x83e86b99, (q31_t)0x1f4ab968, (q31_t)0x83e2444d, (q31_t)0x1f325a0b, (q31_t)0x83dc21cb,\n  (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1f0197b8, (q31_t)0x83cfeb22, (q31_t)0x1ee934c3, (q31_t)0x83c9d6fc, (q31_t)0x1ed0d09d, (q31_t)0x83c3c7a0,\n  (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1ea004c1, (q31_t)0x83b7b746, (q31_t)0x1e879d0d, (q31_t)0x83b1b649, (q31_t)0x1e6f342c, (q31_t)0x83abba17,\n  (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1e3e5ee5, (q31_t)0x839fd014, (q31_t)0x1e25f282, (q31_t)0x8399e244, (q31_t)0x1e0d84f5, (q31_t)0x8393f940,\n  (q31_t)0x1df5163f, (q31_t)0x838e1507, (q31_t)0x1ddca662, (q31_t)0x8388359b, (q31_t)0x1dc4355e, (q31_t)0x83825afb, (q31_t)0x1dabc334, (q31_t)0x837c8528,\n  (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d7adb73, (q31_t)0x8370e7e9, (q31_t)0x1d6265dd, (q31_t)0x836b207d, (q31_t)0x1d49ef26, (q31_t)0x83655ddf,\n  (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1d18fe54, (q31_t)0x8359e70d, (q31_t)0x1d00843d, (q31_t)0x835432d8, (q31_t)0x1ce80906, (q31_t)0x834e8373,\n  (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1cb70f43, (q31_t)0x83433314, (q31_t)0x1c9e90b8, (q31_t)0x833d921b, (q31_t)0x1c861113, (q31_t)0x8337f5f1,\n  (q31_t)0x1c6d9053, (q31_t)0x83325e97, (q31_t)0x1c550e7c, (q31_t)0x832ccc0d, (q31_t)0x1c3c8b8c, (q31_t)0x83273e52, (q31_t)0x1c240786, (q31_t)0x8321b568,\n  (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1bf2fc3a, (q31_t)0x8316b205, (q31_t)0x1bda74f6, (q31_t)0x8311378d, (q31_t)0x1bc1ec9e, (q31_t)0x830bc1e6,\n  (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1b90d8bb, (q31_t)0x8300e50b, (q31_t)0x1b784d30, (q31_t)0x82fb7dd8, (q31_t)0x1b5fc097, (q31_t)0x82f61b77,\n  (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1b2ea43a, (q31_t)0x82eb652b, (q31_t)0x1b161479, (q31_t)0x82e61141, (q31_t)0x1afd83ad, (q31_t)0x82e0c22a,\n  (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, (q31_t)0x1acc5ef6, (q31_t)0x82d63274, (q31_t)0x1ab3cb0d, (q31_t)0x82d0f1d5, (q31_t)0x1a9b361d, (q31_t)0x82cbb60b,\n  (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a6a0929, (q31_t)0x82c14cf1, (q31_t)0x1a517128, (q31_t)0x82bc1fa2, (q31_t)0x1a38d823, (q31_t)0x82b6f727,\n  (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x1a07a311, (q31_t)0x82acb4b0, (q31_t)0x19ef0707, (q31_t)0x82a79ab3, (q31_t)0x19d669fc, (q31_t)0x82a2858c,\n  (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x19a52ceb, (q31_t)0x829869be, (q31_t)0x198c8ce7, (q31_t)0x82936317, (q31_t)0x1973ebe6, (q31_t)0x828e6146,\n  (q31_t)0x195b49ea, (q31_t)0x8289644b, (q31_t)0x1942a6f3, (q31_t)0x82846c26, (q31_t)0x192a0304, (q31_t)0x827f78d8, (q31_t)0x19115e1c, (q31_t)0x827a8a61,\n  (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18e01167, (q31_t)0x8270bbf7, (q31_t)0x18c7699b, (q31_t)0x826bdc04, (q31_t)0x18aec0db, (q31_t)0x826700e9,\n  (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x187d6c82, (q31_t)0x825d593a, (q31_t)0x1864c0ea, (q31_t)0x82588ca7, (q31_t)0x184c1461, (q31_t)0x8253c4eb,\n  (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x181ab881, (q31_t)0x824a43fe, (q31_t)0x1802092c, (q31_t)0x82458acc, (q31_t)0x17e958ea, (q31_t)0x8240d673,\n  (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, (q31_t)0x17b7f5a3, (q31_t)0x82377c4c, (q31_t)0x179f429f, (q31_t)0x8232d67f, (q31_t)0x17868eb3, (q31_t)0x822e358b,\n  (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x17552422, (q31_t)0x82250232, (q31_t)0x173c6d80, (q31_t)0x82206fcc, (q31_t)0x1723b5f9, (q31_t)0x821be240,\n  (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x16f2443e, (q31_t)0x8212d5b9, (q31_t)0x16d98a0c, (q31_t)0x820e56be, (q31_t)0x16c0cef9, (q31_t)0x8209dc9e,\n  (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x168f5632, (q31_t)0x8200f6ef, (q31_t)0x1676987f, (q31_t)0x81fc8b60, (q31_t)0x165dd9f0, (q31_t)0x81f824ae,\n  (q31_t)0x16451a83, (q31_t)0x81f3c2d7, (q31_t)0x162c5a3b, (q31_t)0x81ef65dc, (q31_t)0x16139918, (q31_t)0x81eb0dbe, (q31_t)0x15fad71b, (q31_t)0x81e6ba7c,\n  (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x15c95097, (q31_t)0x81de228d, (q31_t)0x15b08c12, (q31_t)0x81d9dde1, (q31_t)0x1597c6b7, (q31_t)0x81d59e13,\n  (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x15663982, (q31_t)0x81cd2d0c, (q31_t)0x154d71aa, (q31_t)0x81c8fbd6, (q31_t)0x1534a901, (q31_t)0x81c4cf7d,\n  (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x1503153a, (q31_t)0x81bc8564, (q31_t)0x14ea4a1f, (q31_t)0x81b867a5, (q31_t)0x14d17e36, (q31_t)0x81b44ec4,\n  (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, (q31_t)0x149fe3fc, (q31_t)0x81ac2b9e, (q31_t)0x148715ae, (q31_t)0x81a82159, (q31_t)0x146e4694, (q31_t)0x81a41bf4,\n  (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x143ca605, (q31_t)0x819c1fc5, (q31_t)0x1423d492, (q31_t)0x819828fd, (q31_t)0x140b0258, (q31_t)0x81943715,\n  (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x13d95b93, (q31_t)0x818c61e3, (q31_t)0x13c0870a, (q31_t)0x81887e9a, (q31_t)0x13a7b1bf, (q31_t)0x8184a032,\n  (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x137604e2, (q31_t)0x817cf201, (q31_t)0x135d2d53, (q31_t)0x8179223a, (q31_t)0x13445505, (q31_t)0x81755754,\n  (q31_t)0x132b7bf9, (q31_t)0x8171914e, (q31_t)0x1312a230, (q31_t)0x816dd02a, (q31_t)0x12f9c7aa, (q31_t)0x816a13e6, (q31_t)0x12e0ec6a, (q31_t)0x81665c84,\n  (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x12af33ba, (q31_t)0x815efc65, (q31_t)0x1296564d, (q31_t)0x815b53a8, (q31_t)0x127d7829, (q31_t)0x8157afcd,\n  (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x124bb9be, (q31_t)0x815076bd, (q31_t)0x1232d979, (q31_t)0x814ce188, (q31_t)0x1219f880, (q31_t)0x81495136,\n  (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x11e83478, (q31_t)0x81423f3a, (q31_t)0x11cf516a, (q31_t)0x813ebd90, (q31_t)0x11b66dad, (q31_t)0x813b40ca,\n  (q31_t)0x119d8941, (q31_t)0x8137c8e6, (q31_t)0x1184a427, (q31_t)0x813455e6, (q31_t)0x116bbe60, (q31_t)0x8130e7c9, (q31_t)0x1152d7ed, (q31_t)0x812d7e8f,\n  (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x11210907, (q31_t)0x8126bac8, (q31_t)0x11082096, (q31_t)0x8123603a, (q31_t)0x10ef377d, (q31_t)0x81200a90,\n  (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x10bd6356, (q31_t)0x81196de9, (q31_t)0x10a4784b, (q31_t)0x811626ec, (q31_t)0x108b8c9b, (q31_t)0x8112e4d4,\n  (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x1059b352, (q31_t)0x810c6f52, (q31_t)0x1040c5bb, (q31_t)0x81093be8, (q31_t)0x1027d784, (q31_t)0x81060d63,\n  (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, (q31_t)0xff5f938, (q31_t)0x80ffbf0a, (q31_t)0xfdd0926, (q31_t)0x80fc9f35, (q31_t)0xfc41876, (q31_t)0x80f98446,\n  (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xf923546, (q31_t)0x80f35d19, (q31_t)0xf7942c7, (q31_t)0x80f050db, (q31_t)0xf604faf, (q31_t)0x80ed4984,\n  (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xf2e67b8, (q31_t)0x80e74987, (q31_t)0xf1572dc, (q31_t)0x80e450e2, (q31_t)0xefc7d6b, (q31_t)0x80e15d24,\n  (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xeca90ce, (q31_t)0x80db845b, (q31_t)0xeb199a4, (q31_t)0x80d89f51, (q31_t)0xe98a1e9, (q31_t)0x80d5bf2e,\n  (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, (q31_t)0xe66b0c3, (q31_t)0x80d00d9d, (q31_t)0xe4db75b, (q31_t)0x80cd3c2f, (q31_t)0xe34bd66, (q31_t)0x80ca6fa9,\n  (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xe02c7d7, (q31_t)0x80c4e553, (q31_t)0xde9cc40, (q31_t)0x80c22784, (q31_t)0xdd0d01f, (q31_t)0x80bf6e9c,\n  (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xd9ed646, (q31_t)0x80ba0b85, (q31_t)0xd85d88f, (q31_t)0x80b76156, (q31_t)0xd6cda53, (q31_t)0x80b4bc0e,\n  (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xd3adc4e, (q31_t)0x80af8039, (q31_t)0xd21dc87, (q31_t)0x80ace9ab, (q31_t)0xd08dc3f, (q31_t)0x80aa5806,\n  (q31_t)0xcefdb76, (q31_t)0x80a7cb49, (q31_t)0xcd6da2d, (q31_t)0x80a54376, (q31_t)0xcbdd865, (q31_t)0x80a2c08b, (q31_t)0xca4d620, (q31_t)0x80a04289,\n  (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc72d020, (q31_t)0x809b5541, (q31_t)0xc59cc68, (q31_t)0x8098e5fb, (q31_t)0xc40c835, (q31_t)0x80967b9f,\n  (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xc0ebe66, (q31_t)0x8091b5a2, (q31_t)0xbf5b8cb, (q31_t)0x808f5a02, (q31_t)0xbdcb2bb, (q31_t)0x808d034c,\n  (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xbaaa53b, (q31_t)0x8088649e, (q31_t)0xb919dcf, (q31_t)0x80861ca6, (q31_t)0xb7895f0, (q31_t)0x8083d998,\n  (q31_t)0xb5f8d9f, (q31_t)0x80819b74, (q31_t)0xb4684df, (q31_t)0x807f623b, (q31_t)0xb2d7baf, (q31_t)0x807d2dec, (q31_t)0xb147211, (q31_t)0x807afe87,\n  (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xae25d8d, (q31_t)0x8076ae7e, (q31_t)0xac952aa, (q31_t)0x80748dd9, (q31_t)0xab0475c, (q31_t)0x8072721f,\n  (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa7e2f85, (q31_t)0x806e496c, (q31_t)0xa6522fe, (q31_t)0x806c3c74, (q31_t)0xa4c1610, (q31_t)0x806a3466,\n  (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0xa19fb04, (q31_t)0x8066330c, (q31_t)0xa00ece8, (q31_t)0x806439c0, (q31_t)0x9e7de6a, (q31_t)0x80624560,\n  (q31_t)0x9cecf89, (q31_t)0x806055eb, (q31_t)0x9b5c048, (q31_t)0x805e6b62, (q31_t)0x99cb0a7, (q31_t)0x805c85c4, (q31_t)0x983a0a7, (q31_t)0x805aa512,\n  (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9517f8f, (q31_t)0x8056f272, (q31_t)0x9386e78, (q31_t)0x80552084, (q31_t)0x91f5d06, (q31_t)0x80535381,\n  (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x8ed3916, (q31_t)0x804fc841, (q31_t)0x8d42699, (q31_t)0x804e0a04, (q31_t)0x8bb13c5, (q31_t)0x804c50b2,\n  (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x888ed1b, (q31_t)0x8048ecd5, (q31_t)0x86fd947, (q31_t)0x80474248, (q31_t)0x856c520, (q31_t)0x80459ca9,\n  (q31_t)0x83db0a7, (q31_t)0x8043fbf6, (q31_t)0x8249bdd, (q31_t)0x80426030, (q31_t)0x80b86c2, (q31_t)0x8040c956, (q31_t)0x7f27157, (q31_t)0x803f376a,\n  (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x7c04598, (q31_t)0x803c2257, (q31_t)0x7a72f45, (q31_t)0x803a9f31, (q31_t)0x78e18a7, (q31_t)0x803920f8,\n  (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x75bea8c, (q31_t)0x8036334e, (q31_t)0x742d311, (q31_t)0x8034c3dd, (q31_t)0x729bb4e, (q31_t)0x80335959,\n  (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x6f78af6, (q31_t)0x80309318, (q31_t)0x6de7262, (q31_t)0x802f375d, (q31_t)0x6c5598a, (q31_t)0x802de08e,\n  (q31_t)0x6ac406f, (q31_t)0x802c8ead, (q31_t)0x6932713, (q31_t)0x802b41ba, (q31_t)0x67a0d76, (q31_t)0x8029f9b4, (q31_t)0x660f398, (q31_t)0x8028b69c,\n  (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x62ebf22, (q31_t)0x80263f36, (q31_t)0x615a48b, (q31_t)0x80250ae7, (q31_t)0x5fc89b8, (q31_t)0x8023db86,\n  (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x5ca5361, (q31_t)0x80218b8f, (q31_t)0x5b137df, (q31_t)0x80206af8, (q31_t)0x5981c26, (q31_t)0x801f4f4f,\n  (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x565e40d, (q31_t)0x801d26c8, (q31_t)0x54cc7b1, (q31_t)0x801c19ea, (q31_t)0x533ab20, (q31_t)0x801b11fa,\n  (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, (q31_t)0x5017165, (q31_t)0x801910e4, (q31_t)0x4e8543e, (q31_t)0x801817bf, (q31_t)0x4cf36e5, (q31_t)0x80172388,\n  (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x49cfba7, (q31_t)0x801549e6, (q31_t)0x483ddc3, (q31_t)0x8014647b, (q31_t)0x46abfb3, (q31_t)0x801383fe,\n  (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x4388310, (q31_t)0x8011d1d0, (q31_t)0x41f6480, (q31_t)0x8011001f, (q31_t)0x40645c7, (q31_t)0x8010335c,\n  (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x3d407df, (q31_t)0x800ea8a3, (q31_t)0x3bae8b2, (q31_t)0x800deaad, (q31_t)0x3a1c960, (q31_t)0x800d31a5,\n  (q31_t)0x388a9ea, (q31_t)0x800c7d8c, (q31_t)0x36f8a51, (q31_t)0x800bce63, (q31_t)0x3566a96, (q31_t)0x800b2427, (q31_t)0x33d4abb, (q31_t)0x800a7edb,\n  (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x30b0aa4, (q31_t)0x80094310, (q31_t)0x2f1ea6c, (q31_t)0x8008ac90, (q31_t)0x2d8ca16, (q31_t)0x80081b00,\n  (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x2a68917, (q31_t)0x800706ac, (q31_t)0x28d6870, (q31_t)0x800683e8, (q31_t)0x27447b0, (q31_t)0x80060614,\n  (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x24205e8, (q31_t)0x80051939, (q31_t)0x228e4e2, (q31_t)0x8004aa32, (q31_t)0x20fc3c6, (q31_t)0x8004401a,\n  (q31_t)0x1f6a297, (q31_t)0x8003daf1, (q31_t)0x1dd8154, (q31_t)0x80037ab7, (q31_t)0x1c45ffe, (q31_t)0x80031f6d, (q31_t)0x1ab3e97, (q31_t)0x8002c912,\n  (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x178fb99, (q31_t)0x80022b29, (q31_t)0x15fda03, (q31_t)0x8001e39b, (q31_t)0x146b860, (q31_t)0x8001a0fd,\n  (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0x11474f6, (q31_t)0x80012a8e, (q31_t)0x0fb5330, (q31_t)0x8000f6bd, (q31_t)0xe23160, (q31_t)0x8000c7dc,\n  (q31_t)0x0c90f88, (q31_t)0x80009dea, (q31_t)0x0afeda8, (q31_t)0x800078e7, (q31_t)0x096cbc1, (q31_t)0x800058d4, (q31_t)0x7da9d4, (q31_t)0x80003daf,\n  (q31_t)0x06487e3, (q31_t)0x8000277a, (q31_t)0x04b65ee, (q31_t)0x80001635, (q31_t)0x03243f5, (q31_t)0x800009df, (q31_t)0x1921fb, (q31_t)0x80000278\n};\n     const q31_t cos_factorsQ31_2048[2048] = {\n  (q31_t)0x7fffff62, (q31_t)0x7ffffa73, (q31_t)0x7ffff094, (q31_t)0x7fffe1c6, (q31_t)0x7fffce09, (q31_t)0x7fffb55c,\n  (q31_t)0x7fff97c1, (q31_t)0x7fff7536,\n  (q31_t)0x7fff4dbb, (q31_t)0x7fff2151, (q31_t)0x7ffeeff8, (q31_t)0x7ffeb9b0, (q31_t)0x7ffe7e79, (q31_t)0x7ffe3e52,\n  (q31_t)0x7ffdf93c, (q31_t)0x7ffdaf37,\n  (q31_t)0x7ffd6042, (q31_t)0x7ffd0c5f, (q31_t)0x7ffcb38c, (q31_t)0x7ffc55ca, (q31_t)0x7ffbf319, (q31_t)0x7ffb8b78,\n  (q31_t)0x7ffb1ee9, (q31_t)0x7ffaad6a,\n  (q31_t)0x7ffa36fc, (q31_t)0x7ff9bba0, (q31_t)0x7ff93b54, (q31_t)0x7ff8b619, (q31_t)0x7ff82bef, (q31_t)0x7ff79cd6,\n  (q31_t)0x7ff708ce, (q31_t)0x7ff66fd7,\n  (q31_t)0x7ff5d1f1, (q31_t)0x7ff52f1d, (q31_t)0x7ff48759, (q31_t)0x7ff3daa6, (q31_t)0x7ff32905, (q31_t)0x7ff27275,\n  (q31_t)0x7ff1b6f6, (q31_t)0x7ff0f688,\n  (q31_t)0x7ff0312c, (q31_t)0x7fef66e1, (q31_t)0x7fee97a7, (q31_t)0x7fedc37e, (q31_t)0x7fecea67, (q31_t)0x7fec0c62,\n  (q31_t)0x7feb296d, (q31_t)0x7fea418b,\n  (q31_t)0x7fe954ba, (q31_t)0x7fe862fa, (q31_t)0x7fe76c4c, (q31_t)0x7fe670b0, (q31_t)0x7fe57025, (q31_t)0x7fe46aac,\n  (q31_t)0x7fe36045, (q31_t)0x7fe250ef,\n  (q31_t)0x7fe13cac, (q31_t)0x7fe0237a, (q31_t)0x7fdf055a, (q31_t)0x7fdde24d, (q31_t)0x7fdcba51, (q31_t)0x7fdb8d67,\n  (q31_t)0x7fda5b8f, (q31_t)0x7fd924ca,\n  (q31_t)0x7fd7e917, (q31_t)0x7fd6a875, (q31_t)0x7fd562e7, (q31_t)0x7fd4186a, (q31_t)0x7fd2c900, (q31_t)0x7fd174a8,\n  (q31_t)0x7fd01b63, (q31_t)0x7fcebd31,\n  (q31_t)0x7fcd5a11, (q31_t)0x7fcbf203, (q31_t)0x7fca8508, (q31_t)0x7fc91320, (q31_t)0x7fc79c4b, (q31_t)0x7fc62089,\n  (q31_t)0x7fc49fda, (q31_t)0x7fc31a3d,\n  (q31_t)0x7fc18fb4, (q31_t)0x7fc0003e, (q31_t)0x7fbe6bdb, (q31_t)0x7fbcd28b, (q31_t)0x7fbb344e, (q31_t)0x7fb99125,\n  (q31_t)0x7fb7e90f, (q31_t)0x7fb63c0d,\n  (q31_t)0x7fb48a1e, (q31_t)0x7fb2d343, (q31_t)0x7fb1177b, (q31_t)0x7faf56c7, (q31_t)0x7fad9127, (q31_t)0x7fabc69b,\n  (q31_t)0x7fa9f723, (q31_t)0x7fa822bf,\n  (q31_t)0x7fa6496e, (q31_t)0x7fa46b32, (q31_t)0x7fa2880b, (q31_t)0x7fa09ff7, (q31_t)0x7f9eb2f8, (q31_t)0x7f9cc10d,\n  (q31_t)0x7f9aca37, (q31_t)0x7f98ce76,\n  (q31_t)0x7f96cdc9, (q31_t)0x7f94c831, (q31_t)0x7f92bdad, (q31_t)0x7f90ae3f, (q31_t)0x7f8e99e6, (q31_t)0x7f8c80a1,\n  (q31_t)0x7f8a6272, (q31_t)0x7f883f58,\n  (q31_t)0x7f861753, (q31_t)0x7f83ea64, (q31_t)0x7f81b88a, (q31_t)0x7f7f81c6, (q31_t)0x7f7d4617, (q31_t)0x7f7b057e,\n  (q31_t)0x7f78bffb, (q31_t)0x7f76758e,\n  (q31_t)0x7f742637, (q31_t)0x7f71d1f6, (q31_t)0x7f6f78cb, (q31_t)0x7f6d1ab6, (q31_t)0x7f6ab7b8, (q31_t)0x7f684fd0,\n  (q31_t)0x7f65e2ff, (q31_t)0x7f637144,\n  (q31_t)0x7f60faa0, (q31_t)0x7f5e7f13, (q31_t)0x7f5bfe9d, (q31_t)0x7f59793e, (q31_t)0x7f56eef5, (q31_t)0x7f545fc5,\n  (q31_t)0x7f51cbab, (q31_t)0x7f4f32a9,\n  (q31_t)0x7f4c94be, (q31_t)0x7f49f1eb, (q31_t)0x7f474a30, (q31_t)0x7f449d8c, (q31_t)0x7f41ec01, (q31_t)0x7f3f358d,\n  (q31_t)0x7f3c7a31, (q31_t)0x7f39b9ee,\n  (q31_t)0x7f36f4c3, (q31_t)0x7f342ab1, (q31_t)0x7f315bb7, (q31_t)0x7f2e87d6, (q31_t)0x7f2baf0d, (q31_t)0x7f28d15d,\n  (q31_t)0x7f25eec7, (q31_t)0x7f230749,\n  (q31_t)0x7f201ae5, (q31_t)0x7f1d299a, (q31_t)0x7f1a3368, (q31_t)0x7f173850, (q31_t)0x7f143852, (q31_t)0x7f11336d,\n  (q31_t)0x7f0e29a3, (q31_t)0x7f0b1af2,\n  (q31_t)0x7f08075c, (q31_t)0x7f04eedf, (q31_t)0x7f01d17d, (q31_t)0x7efeaf36, (q31_t)0x7efb8809, (q31_t)0x7ef85bf7,\n  (q31_t)0x7ef52b00, (q31_t)0x7ef1f524,\n  (q31_t)0x7eeeba62, (q31_t)0x7eeb7abc, (q31_t)0x7ee83632, (q31_t)0x7ee4ecc3, (q31_t)0x7ee19e6f, (q31_t)0x7ede4b38,\n  (q31_t)0x7edaf31c, (q31_t)0x7ed7961c,\n  (q31_t)0x7ed43438, (q31_t)0x7ed0cd70, (q31_t)0x7ecd61c5, (q31_t)0x7ec9f137, (q31_t)0x7ec67bc5, (q31_t)0x7ec3016f,\n  (q31_t)0x7ebf8237, (q31_t)0x7ebbfe1c,\n  (q31_t)0x7eb8751e, (q31_t)0x7eb4e73d, (q31_t)0x7eb1547a, (q31_t)0x7eadbcd4, (q31_t)0x7eaa204c, (q31_t)0x7ea67ee2,\n  (q31_t)0x7ea2d896, (q31_t)0x7e9f2d68,\n  (q31_t)0x7e9b7d58, (q31_t)0x7e97c867, (q31_t)0x7e940e94, (q31_t)0x7e904fe0, (q31_t)0x7e8c8c4b, (q31_t)0x7e88c3d5,\n  (q31_t)0x7e84f67e, (q31_t)0x7e812447,\n  (q31_t)0x7e7d4d2f, (q31_t)0x7e797136, (q31_t)0x7e75905d, (q31_t)0x7e71aaa4, (q31_t)0x7e6dc00c, (q31_t)0x7e69d093,\n  (q31_t)0x7e65dc3b, (q31_t)0x7e61e303,\n  (q31_t)0x7e5de4ec, (q31_t)0x7e59e1f5, (q31_t)0x7e55da20, (q31_t)0x7e51cd6c, (q31_t)0x7e4dbbd9, (q31_t)0x7e49a567,\n  (q31_t)0x7e458a17, (q31_t)0x7e4169e9,\n  (q31_t)0x7e3d44dd, (q31_t)0x7e391af3, (q31_t)0x7e34ec2b, (q31_t)0x7e30b885, (q31_t)0x7e2c8002, (q31_t)0x7e2842a2,\n  (q31_t)0x7e240064, (q31_t)0x7e1fb94a,\n  (q31_t)0x7e1b6d53, (q31_t)0x7e171c7f, (q31_t)0x7e12c6ce, (q31_t)0x7e0e6c42, (q31_t)0x7e0a0cd9, (q31_t)0x7e05a894,\n  (q31_t)0x7e013f74, (q31_t)0x7dfcd178,\n  (q31_t)0x7df85ea0, (q31_t)0x7df3e6ee, (q31_t)0x7def6a60, (q31_t)0x7deae8f7, (q31_t)0x7de662b3, (q31_t)0x7de1d795,\n  (q31_t)0x7ddd479d, (q31_t)0x7dd8b2ca,\n  (q31_t)0x7dd4191d, (q31_t)0x7dcf7a96, (q31_t)0x7dcad736, (q31_t)0x7dc62efc, (q31_t)0x7dc181e8, (q31_t)0x7dbccffc,\n  (q31_t)0x7db81936, (q31_t)0x7db35d98,\n  (q31_t)0x7dae9d21, (q31_t)0x7da9d7d2, (q31_t)0x7da50dab, (q31_t)0x7da03eab, (q31_t)0x7d9b6ad3, (q31_t)0x7d969224,\n  (q31_t)0x7d91b49e, (q31_t)0x7d8cd240,\n  (q31_t)0x7d87eb0a, (q31_t)0x7d82fefe, (q31_t)0x7d7e0e1c, (q31_t)0x7d791862, (q31_t)0x7d741dd2, (q31_t)0x7d6f1e6c,\n  (q31_t)0x7d6a1a31, (q31_t)0x7d65111f,\n  (q31_t)0x7d600338, (q31_t)0x7d5af07b, (q31_t)0x7d55d8e9, (q31_t)0x7d50bc82, (q31_t)0x7d4b9b46, (q31_t)0x7d467536,\n  (q31_t)0x7d414a51, (q31_t)0x7d3c1a98,\n  (q31_t)0x7d36e60b, (q31_t)0x7d31acaa, (q31_t)0x7d2c6e76, (q31_t)0x7d272b6e, (q31_t)0x7d21e393, (q31_t)0x7d1c96e5,\n  (q31_t)0x7d174564, (q31_t)0x7d11ef11,\n  (q31_t)0x7d0c93eb, (q31_t)0x7d0733f3, (q31_t)0x7d01cf29, (q31_t)0x7cfc658d, (q31_t)0x7cf6f720, (q31_t)0x7cf183e1,\n  (q31_t)0x7cec0bd1, (q31_t)0x7ce68ef0,\n  (q31_t)0x7ce10d3f, (q31_t)0x7cdb86bd, (q31_t)0x7cd5fb6a, (q31_t)0x7cd06b48, (q31_t)0x7ccad656, (q31_t)0x7cc53c94,\n  (q31_t)0x7cbf9e03, (q31_t)0x7cb9faa2,\n  (q31_t)0x7cb45272, (q31_t)0x7caea574, (q31_t)0x7ca8f3a7, (q31_t)0x7ca33d0c, (q31_t)0x7c9d81a3, (q31_t)0x7c97c16b,\n  (q31_t)0x7c91fc66, (q31_t)0x7c8c3294,\n  (q31_t)0x7c8663f4, (q31_t)0x7c809088, (q31_t)0x7c7ab84e, (q31_t)0x7c74db48, (q31_t)0x7c6ef976, (q31_t)0x7c6912d7,\n  (q31_t)0x7c63276d, (q31_t)0x7c5d3737,\n  (q31_t)0x7c574236, (q31_t)0x7c514869, (q31_t)0x7c4b49d2, (q31_t)0x7c45466f, (q31_t)0x7c3f3e42, (q31_t)0x7c39314b,\n  (q31_t)0x7c331f8a, (q31_t)0x7c2d08ff,\n  (q31_t)0x7c26edab, (q31_t)0x7c20cd8d, (q31_t)0x7c1aa8a6, (q31_t)0x7c147ef6, (q31_t)0x7c0e507e, (q31_t)0x7c081d3d,\n  (q31_t)0x7c01e534, (q31_t)0x7bfba863,\n  (q31_t)0x7bf566cb, (q31_t)0x7bef206b, (q31_t)0x7be8d544, (q31_t)0x7be28556, (q31_t)0x7bdc30a1, (q31_t)0x7bd5d726,\n  (q31_t)0x7bcf78e5, (q31_t)0x7bc915dd,\n  (q31_t)0x7bc2ae10, (q31_t)0x7bbc417e, (q31_t)0x7bb5d026, (q31_t)0x7baf5a09, (q31_t)0x7ba8df28, (q31_t)0x7ba25f82,\n  (q31_t)0x7b9bdb18, (q31_t)0x7b9551ea,\n  (q31_t)0x7b8ec3f8, (q31_t)0x7b883143, (q31_t)0x7b8199ca, (q31_t)0x7b7afd8f, (q31_t)0x7b745c91, (q31_t)0x7b6db6d0,\n  (q31_t)0x7b670c4d, (q31_t)0x7b605d09,\n  (q31_t)0x7b59a902, (q31_t)0x7b52f03a, (q31_t)0x7b4c32b1, (q31_t)0x7b457068, (q31_t)0x7b3ea95d, (q31_t)0x7b37dd92,\n  (q31_t)0x7b310d07, (q31_t)0x7b2a37bc,\n  (q31_t)0x7b235db2, (q31_t)0x7b1c7ee8, (q31_t)0x7b159b5f, (q31_t)0x7b0eb318, (q31_t)0x7b07c612, (q31_t)0x7b00d44d,\n  (q31_t)0x7af9ddcb, (q31_t)0x7af2e28b,\n  (q31_t)0x7aebe28d, (q31_t)0x7ae4ddd2, (q31_t)0x7addd45b, (q31_t)0x7ad6c626, (q31_t)0x7acfb336, (q31_t)0x7ac89b89,\n  (q31_t)0x7ac17f20, (q31_t)0x7aba5dfc,\n  (q31_t)0x7ab3381d, (q31_t)0x7aac0d82, (q31_t)0x7aa4de2d, (q31_t)0x7a9daa1d, (q31_t)0x7a967153, (q31_t)0x7a8f33d0,\n  (q31_t)0x7a87f192, (q31_t)0x7a80aa9c,\n  (q31_t)0x7a795eec, (q31_t)0x7a720e84, (q31_t)0x7a6ab963, (q31_t)0x7a635f8a, (q31_t)0x7a5c00f9, (q31_t)0x7a549db0,\n  (q31_t)0x7a4d35b0, (q31_t)0x7a45c8f9,\n  (q31_t)0x7a3e578b, (q31_t)0x7a36e166, (q31_t)0x7a2f668c, (q31_t)0x7a27e6fb, (q31_t)0x7a2062b5, (q31_t)0x7a18d9b9,\n  (q31_t)0x7a114c09, (q31_t)0x7a09b9a4,\n  (q31_t)0x7a02228a, (q31_t)0x79fa86bc, (q31_t)0x79f2e63a, (q31_t)0x79eb4105, (q31_t)0x79e3971c, (q31_t)0x79dbe880,\n  (q31_t)0x79d43532, (q31_t)0x79cc7d31,\n  (q31_t)0x79c4c07e, (q31_t)0x79bcff19, (q31_t)0x79b53903, (q31_t)0x79ad6e3c, (q31_t)0x79a59ec3, (q31_t)0x799dca9a,\n  (q31_t)0x7995f1c1, (q31_t)0x798e1438,\n  (q31_t)0x798631ff, (q31_t)0x797e4b16, (q31_t)0x79765f7f, (q31_t)0x796e6f39, (q31_t)0x79667a44, (q31_t)0x795e80a1,\n  (q31_t)0x79568250, (q31_t)0x794e7f52,\n  (q31_t)0x794677a6, (q31_t)0x793e6b4e, (q31_t)0x79365a49, (q31_t)0x792e4497, (q31_t)0x79262a3a, (q31_t)0x791e0b31,\n  (q31_t)0x7915e77c, (q31_t)0x790dbf1d,\n  (q31_t)0x79059212, (q31_t)0x78fd605d, (q31_t)0x78f529fe, (q31_t)0x78eceef6, (q31_t)0x78e4af44, (q31_t)0x78dc6ae8,\n  (q31_t)0x78d421e4, (q31_t)0x78cbd437,\n  (q31_t)0x78c381e2, (q31_t)0x78bb2ae5, (q31_t)0x78b2cf41, (q31_t)0x78aa6ef5, (q31_t)0x78a20a03, (q31_t)0x7899a06a,\n  (q31_t)0x7891322a, (q31_t)0x7888bf45,\n  (q31_t)0x788047ba, (q31_t)0x7877cb89, (q31_t)0x786f4ab4, (q31_t)0x7866c53a, (q31_t)0x785e3b1c, (q31_t)0x7855ac5a,\n  (q31_t)0x784d18f4, (q31_t)0x784480ea,\n  (q31_t)0x783be43e, (q31_t)0x783342ef, (q31_t)0x782a9cfe, (q31_t)0x7821f26b, (q31_t)0x78194336, (q31_t)0x78108f60,\n  (q31_t)0x7807d6e9, (q31_t)0x77ff19d1,\n  (q31_t)0x77f65819, (q31_t)0x77ed91c0, (q31_t)0x77e4c6c9, (q31_t)0x77dbf732, (q31_t)0x77d322fc, (q31_t)0x77ca4a27,\n  (q31_t)0x77c16cb4, (q31_t)0x77b88aa3,\n  (q31_t)0x77afa3f5, (q31_t)0x77a6b8a9, (q31_t)0x779dc8c0, (q31_t)0x7794d43b, (q31_t)0x778bdb19, (q31_t)0x7782dd5c,\n  (q31_t)0x7779db03, (q31_t)0x7770d40f,\n  (q31_t)0x7767c880, (q31_t)0x775eb857, (q31_t)0x7755a394, (q31_t)0x774c8a36, (q31_t)0x77436c40, (q31_t)0x773a49b0,\n  (q31_t)0x77312287, (q31_t)0x7727f6c6,\n  (q31_t)0x771ec66e, (q31_t)0x7715917d, (q31_t)0x770c57f5, (q31_t)0x770319d6, (q31_t)0x76f9d721, (q31_t)0x76f08fd5,\n  (q31_t)0x76e743f4, (q31_t)0x76ddf37c,\n  (q31_t)0x76d49e70, (q31_t)0x76cb44cf, (q31_t)0x76c1e699, (q31_t)0x76b883d0, (q31_t)0x76af1c72, (q31_t)0x76a5b082,\n  (q31_t)0x769c3ffe, (q31_t)0x7692cae8,\n  (q31_t)0x7689513f, (q31_t)0x767fd304, (q31_t)0x76765038, (q31_t)0x766cc8db, (q31_t)0x76633ced, (q31_t)0x7659ac6f,\n  (q31_t)0x76501760, (q31_t)0x76467dc2,\n  (q31_t)0x763cdf94, (q31_t)0x76333cd8, (q31_t)0x7629958c, (q31_t)0x761fe9b3, (q31_t)0x7616394c, (q31_t)0x760c8457,\n  (q31_t)0x7602cad5, (q31_t)0x75f90cc7,\n  (q31_t)0x75ef4a2c, (q31_t)0x75e58305, (q31_t)0x75dbb753, (q31_t)0x75d1e715, (q31_t)0x75c8124d, (q31_t)0x75be38fa,\n  (q31_t)0x75b45b1d, (q31_t)0x75aa78b6,\n  (q31_t)0x75a091c6, (q31_t)0x7596a64d, (q31_t)0x758cb64c, (q31_t)0x7582c1c2, (q31_t)0x7578c8b0, (q31_t)0x756ecb18,\n  (q31_t)0x7564c8f8, (q31_t)0x755ac251,\n  (q31_t)0x7550b725, (q31_t)0x7546a772, (q31_t)0x753c933a, (q31_t)0x75327a7d, (q31_t)0x75285d3b, (q31_t)0x751e3b75,\n  (q31_t)0x7514152b, (q31_t)0x7509ea5d,\n  (q31_t)0x74ffbb0d, (q31_t)0x74f58739, (q31_t)0x74eb4ee3, (q31_t)0x74e1120c, (q31_t)0x74d6d0b2, (q31_t)0x74cc8ad8,\n  (q31_t)0x74c2407d, (q31_t)0x74b7f1a1,\n  (q31_t)0x74ad9e46, (q31_t)0x74a3466b, (q31_t)0x7498ea11, (q31_t)0x748e8938, (q31_t)0x748423e0, (q31_t)0x7479ba0b,\n  (q31_t)0x746f4bb8, (q31_t)0x7464d8e8,\n  (q31_t)0x745a619b, (q31_t)0x744fe5d2, (q31_t)0x7445658d, (q31_t)0x743ae0cc, (q31_t)0x74305790, (q31_t)0x7425c9da,\n  (q31_t)0x741b37a9, (q31_t)0x7410a0fe,\n  (q31_t)0x740605d9, (q31_t)0x73fb663c, (q31_t)0x73f0c226, (q31_t)0x73e61997, (q31_t)0x73db6c91, (q31_t)0x73d0bb13,\n  (q31_t)0x73c6051f, (q31_t)0x73bb4ab3,\n  (q31_t)0x73b08bd1, (q31_t)0x73a5c87a, (q31_t)0x739b00ad, (q31_t)0x7390346b, (q31_t)0x738563b5, (q31_t)0x737a8e8a,\n  (q31_t)0x736fb4ec, (q31_t)0x7364d6da,\n  (q31_t)0x7359f456, (q31_t)0x734f0d5f, (q31_t)0x734421f6, (q31_t)0x7339321b, (q31_t)0x732e3dcf, (q31_t)0x73234512,\n  (q31_t)0x731847e5, (q31_t)0x730d4648,\n  (q31_t)0x7302403c, (q31_t)0x72f735c0, (q31_t)0x72ec26d6, (q31_t)0x72e1137d, (q31_t)0x72d5fbb7, (q31_t)0x72cadf83,\n  (q31_t)0x72bfbee3, (q31_t)0x72b499d6,\n  (q31_t)0x72a9705c, (q31_t)0x729e4277, (q31_t)0x72931027, (q31_t)0x7287d96c, (q31_t)0x727c9e47, (q31_t)0x72715eb8,\n  (q31_t)0x72661abf, (q31_t)0x725ad25d,\n  (q31_t)0x724f8593, (q31_t)0x72443460, (q31_t)0x7238dec5, (q31_t)0x722d84c4, (q31_t)0x7222265b, (q31_t)0x7216c38c,\n  (q31_t)0x720b5c57, (q31_t)0x71fff0bc,\n  (q31_t)0x71f480bc, (q31_t)0x71e90c57, (q31_t)0x71dd938f, (q31_t)0x71d21662, (q31_t)0x71c694d2, (q31_t)0x71bb0edf,\n  (q31_t)0x71af848a, (q31_t)0x71a3f5d2,\n  (q31_t)0x719862b9, (q31_t)0x718ccb3f, (q31_t)0x71812f65, (q31_t)0x71758f29, (q31_t)0x7169ea8f, (q31_t)0x715e4194,\n  (q31_t)0x7152943b, (q31_t)0x7146e284,\n  (q31_t)0x713b2c6e, (q31_t)0x712f71fb, (q31_t)0x7123b32b, (q31_t)0x7117effe, (q31_t)0x710c2875, (q31_t)0x71005c90,\n  (q31_t)0x70f48c50, (q31_t)0x70e8b7b5,\n  (q31_t)0x70dcdec0, (q31_t)0x70d10171, (q31_t)0x70c51fc8, (q31_t)0x70b939c7, (q31_t)0x70ad4f6d, (q31_t)0x70a160ba,\n  (q31_t)0x70956db1, (q31_t)0x70897650,\n  (q31_t)0x707d7a98, (q31_t)0x70717a8a, (q31_t)0x70657626, (q31_t)0x70596d6d, (q31_t)0x704d6060, (q31_t)0x70414efd,\n  (q31_t)0x70353947, (q31_t)0x70291f3e,\n  (q31_t)0x701d00e1, (q31_t)0x7010de32, (q31_t)0x7004b731, (q31_t)0x6ff88bde, (q31_t)0x6fec5c3b, (q31_t)0x6fe02846,\n  (q31_t)0x6fd3f001, (q31_t)0x6fc7b36d,\n  (q31_t)0x6fbb728a, (q31_t)0x6faf2d57, (q31_t)0x6fa2e3d7, (q31_t)0x6f969608, (q31_t)0x6f8a43ed, (q31_t)0x6f7ded84,\n  (q31_t)0x6f7192cf, (q31_t)0x6f6533ce,\n  (q31_t)0x6f58d082, (q31_t)0x6f4c68eb, (q31_t)0x6f3ffd09, (q31_t)0x6f338cde, (q31_t)0x6f271868, (q31_t)0x6f1a9faa,\n  (q31_t)0x6f0e22a3, (q31_t)0x6f01a155,\n  (q31_t)0x6ef51bbe, (q31_t)0x6ee891e1, (q31_t)0x6edc03bc, (q31_t)0x6ecf7152, (q31_t)0x6ec2daa2, (q31_t)0x6eb63fad,\n  (q31_t)0x6ea9a073, (q31_t)0x6e9cfcf5,\n  (q31_t)0x6e905534, (q31_t)0x6e83a92f, (q31_t)0x6e76f8e7, (q31_t)0x6e6a445d, (q31_t)0x6e5d8b91, (q31_t)0x6e50ce84,\n  (q31_t)0x6e440d37, (q31_t)0x6e3747a9,\n  (q31_t)0x6e2a7ddb, (q31_t)0x6e1dafce, (q31_t)0x6e10dd82, (q31_t)0x6e0406f8, (q31_t)0x6df72c30, (q31_t)0x6dea4d2b,\n  (q31_t)0x6ddd69e9, (q31_t)0x6dd0826a,\n  (q31_t)0x6dc396b0, (q31_t)0x6db6a6ba, (q31_t)0x6da9b28a, (q31_t)0x6d9cba1f, (q31_t)0x6d8fbd7a, (q31_t)0x6d82bc9d,\n  (q31_t)0x6d75b786, (q31_t)0x6d68ae37,\n  (q31_t)0x6d5ba0b0, (q31_t)0x6d4e8ef2, (q31_t)0x6d4178fd, (q31_t)0x6d345ed1, (q31_t)0x6d274070, (q31_t)0x6d1a1dda,\n  (q31_t)0x6d0cf70f, (q31_t)0x6cffcc0f,\n  (q31_t)0x6cf29cdc, (q31_t)0x6ce56975, (q31_t)0x6cd831dc, (q31_t)0x6ccaf610, (q31_t)0x6cbdb613, (q31_t)0x6cb071e4,\n  (q31_t)0x6ca32985, (q31_t)0x6c95dcf6,\n  (q31_t)0x6c888c36, (q31_t)0x6c7b3748, (q31_t)0x6c6dde2b, (q31_t)0x6c6080e0, (q31_t)0x6c531f67, (q31_t)0x6c45b9c1,\n  (q31_t)0x6c384fef, (q31_t)0x6c2ae1f0,\n  (q31_t)0x6c1d6fc6, (q31_t)0x6c0ff971, (q31_t)0x6c027ef1, (q31_t)0x6bf50047, (q31_t)0x6be77d74, (q31_t)0x6bd9f677,\n  (q31_t)0x6bcc6b53, (q31_t)0x6bbedc06,\n  (q31_t)0x6bb14892, (q31_t)0x6ba3b0f7, (q31_t)0x6b961536, (q31_t)0x6b88754f, (q31_t)0x6b7ad142, (q31_t)0x6b6d2911,\n  (q31_t)0x6b5f7cbc, (q31_t)0x6b51cc42,\n  (q31_t)0x6b4417a6, (q31_t)0x6b365ee7, (q31_t)0x6b28a206, (q31_t)0x6b1ae103, (q31_t)0x6b0d1bdf, (q31_t)0x6aff529a,\n  (q31_t)0x6af18536, (q31_t)0x6ae3b3b2,\n  (q31_t)0x6ad5de0f, (q31_t)0x6ac8044e, (q31_t)0x6aba266e, (q31_t)0x6aac4472, (q31_t)0x6a9e5e58, (q31_t)0x6a907423,\n  (q31_t)0x6a8285d1, (q31_t)0x6a749365,\n  (q31_t)0x6a669cdd, (q31_t)0x6a58a23c, (q31_t)0x6a4aa381, (q31_t)0x6a3ca0ad, (q31_t)0x6a2e99c0, (q31_t)0x6a208ebb,\n  (q31_t)0x6a127f9f, (q31_t)0x6a046c6c,\n  (q31_t)0x69f65523, (q31_t)0x69e839c4, (q31_t)0x69da1a50, (q31_t)0x69cbf6c7, (q31_t)0x69bdcf29, (q31_t)0x69afa378,\n  (q31_t)0x69a173b5, (q31_t)0x69933fde,\n  (q31_t)0x698507f6, (q31_t)0x6976cbfc, (q31_t)0x69688bf1, (q31_t)0x695a47d6, (q31_t)0x694bffab, (q31_t)0x693db371,\n  (q31_t)0x692f6328, (q31_t)0x69210ed1,\n  (q31_t)0x6912b66c, (q31_t)0x690459fb, (q31_t)0x68f5f97d, (q31_t)0x68e794f3, (q31_t)0x68d92c5d, (q31_t)0x68cabfbd,\n  (q31_t)0x68bc4f13, (q31_t)0x68adda5f,\n  (q31_t)0x689f61a1, (q31_t)0x6890e4dc, (q31_t)0x6882640e, (q31_t)0x6873df38, (q31_t)0x6865565c, (q31_t)0x6856c979,\n  (q31_t)0x68483891, (q31_t)0x6839a3a4,\n  (q31_t)0x682b0ab1, (q31_t)0x681c6dbb, (q31_t)0x680dccc1, (q31_t)0x67ff27c4, (q31_t)0x67f07ec5, (q31_t)0x67e1d1c4,\n  (q31_t)0x67d320c1, (q31_t)0x67c46bbe,\n  (q31_t)0x67b5b2bb, (q31_t)0x67a6f5b8, (q31_t)0x679834b6, (q31_t)0x67896fb6, (q31_t)0x677aa6b8, (q31_t)0x676bd9bd,\n  (q31_t)0x675d08c4, (q31_t)0x674e33d0,\n  (q31_t)0x673f5ae0, (q31_t)0x67307df5, (q31_t)0x67219d10, (q31_t)0x6712b831, (q31_t)0x6703cf58, (q31_t)0x66f4e287,\n  (q31_t)0x66e5f1be, (q31_t)0x66d6fcfd,\n  (q31_t)0x66c80445, (q31_t)0x66b90797, (q31_t)0x66aa06f3, (q31_t)0x669b0259, (q31_t)0x668bf9cb, (q31_t)0x667ced49,\n  (q31_t)0x666ddcd3, (q31_t)0x665ec86b,\n  (q31_t)0x664fb010, (q31_t)0x664093c3, (q31_t)0x66317385, (q31_t)0x66224f56, (q31_t)0x66132738, (q31_t)0x6603fb2a,\n  (q31_t)0x65f4cb2d, (q31_t)0x65e59742,\n  (q31_t)0x65d65f69, (q31_t)0x65c723a3, (q31_t)0x65b7e3f1, (q31_t)0x65a8a052, (q31_t)0x659958c9, (q31_t)0x658a0d54,\n  (q31_t)0x657abdf6, (q31_t)0x656b6aae,\n  (q31_t)0x655c137d, (q31_t)0x654cb863, (q31_t)0x653d5962, (q31_t)0x652df679, (q31_t)0x651e8faa, (q31_t)0x650f24f5,\n  (q31_t)0x64ffb65b, (q31_t)0x64f043dc,\n  (q31_t)0x64e0cd78, (q31_t)0x64d15331, (q31_t)0x64c1d507, (q31_t)0x64b252fa, (q31_t)0x64a2cd0c, (q31_t)0x6493433c,\n  (q31_t)0x6483b58c, (q31_t)0x647423fb,\n  (q31_t)0x64648e8c, (q31_t)0x6454f53d, (q31_t)0x64455810, (q31_t)0x6435b706, (q31_t)0x6426121e, (q31_t)0x6416695a,\n  (q31_t)0x6406bcba, (q31_t)0x63f70c3f,\n  (q31_t)0x63e757ea, (q31_t)0x63d79fba, (q31_t)0x63c7e3b1, (q31_t)0x63b823cf, (q31_t)0x63a86015, (q31_t)0x63989884,\n  (q31_t)0x6388cd1b, (q31_t)0x6378fddc,\n  (q31_t)0x63692ac7, (q31_t)0x635953dd, (q31_t)0x6349791f, (q31_t)0x63399a8d, (q31_t)0x6329b827, (q31_t)0x6319d1ef,\n  (q31_t)0x6309e7e4, (q31_t)0x62f9fa09,\n  (q31_t)0x62ea085c, (q31_t)0x62da12df, (q31_t)0x62ca1992, (q31_t)0x62ba1c77, (q31_t)0x62aa1b8d, (q31_t)0x629a16d5,\n  (q31_t)0x628a0e50, (q31_t)0x627a01fe,\n  (q31_t)0x6269f1e1, (q31_t)0x6259ddf8, (q31_t)0x6249c645, (q31_t)0x6239aac7, (q31_t)0x62298b81, (q31_t)0x62196871,\n  (q31_t)0x62094199, (q31_t)0x61f916f9,\n  (q31_t)0x61e8e893, (q31_t)0x61d8b666, (q31_t)0x61c88074, (q31_t)0x61b846bc, (q31_t)0x61a80940, (q31_t)0x6197c800,\n  (q31_t)0x618782fd, (q31_t)0x61773a37,\n  (q31_t)0x6166edb0, (q31_t)0x61569d67, (q31_t)0x6146495d, (q31_t)0x6135f193, (q31_t)0x6125960a, (q31_t)0x611536c2,\n  (q31_t)0x6104d3bc, (q31_t)0x60f46cf9,\n  (q31_t)0x60e40278, (q31_t)0x60d3943b, (q31_t)0x60c32243, (q31_t)0x60b2ac8f, (q31_t)0x60a23322, (q31_t)0x6091b5fa,\n  (q31_t)0x60813519, (q31_t)0x6070b080,\n  (q31_t)0x6060282f, (q31_t)0x604f9c27, (q31_t)0x603f0c69, (q31_t)0x602e78f4, (q31_t)0x601de1ca, (q31_t)0x600d46ec,\n  (q31_t)0x5ffca859, (q31_t)0x5fec0613,\n  (q31_t)0x5fdb601b, (q31_t)0x5fcab670, (q31_t)0x5fba0914, (q31_t)0x5fa95807, (q31_t)0x5f98a34a, (q31_t)0x5f87eade,\n  (q31_t)0x5f772ec2, (q31_t)0x5f666ef9,\n  (q31_t)0x5f55ab82, (q31_t)0x5f44e45e, (q31_t)0x5f34198e, (q31_t)0x5f234b12, (q31_t)0x5f1278eb, (q31_t)0x5f01a31a,\n  (q31_t)0x5ef0c99f, (q31_t)0x5edfec7b,\n  (q31_t)0x5ecf0baf, (q31_t)0x5ebe273b, (q31_t)0x5ead3f1f, (q31_t)0x5e9c535e, (q31_t)0x5e8b63f7, (q31_t)0x5e7a70ea,\n  (q31_t)0x5e697a39, (q31_t)0x5e587fe5,\n  (q31_t)0x5e4781ed, (q31_t)0x5e368053, (q31_t)0x5e257b17, (q31_t)0x5e147239, (q31_t)0x5e0365bb, (q31_t)0x5df2559e,\n  (q31_t)0x5de141e1, (q31_t)0x5dd02a85,\n  (q31_t)0x5dbf0f8c, (q31_t)0x5dadf0f5, (q31_t)0x5d9ccec2, (q31_t)0x5d8ba8f3, (q31_t)0x5d7a7f88, (q31_t)0x5d695283,\n  (q31_t)0x5d5821e4, (q31_t)0x5d46edac,\n  (q31_t)0x5d35b5db, (q31_t)0x5d247a72, (q31_t)0x5d133b72, (q31_t)0x5d01f8dc, (q31_t)0x5cf0b2af, (q31_t)0x5cdf68ed,\n  (q31_t)0x5cce1b97, (q31_t)0x5cbccaac,\n  (q31_t)0x5cab762f, (q31_t)0x5c9a1e1e, (q31_t)0x5c88c27c, (q31_t)0x5c776348, (q31_t)0x5c660084, (q31_t)0x5c549a30,\n  (q31_t)0x5c43304d, (q31_t)0x5c31c2db,\n  (q31_t)0x5c2051db, (q31_t)0x5c0edd4e, (q31_t)0x5bfd6534, (q31_t)0x5bebe98e, (q31_t)0x5bda6a5d, (q31_t)0x5bc8e7a2,\n  (q31_t)0x5bb7615d, (q31_t)0x5ba5d78e,\n  (q31_t)0x5b944a37, (q31_t)0x5b82b958, (q31_t)0x5b7124f2, (q31_t)0x5b5f8d06, (q31_t)0x5b4df193, (q31_t)0x5b3c529c,\n  (q31_t)0x5b2ab020, (q31_t)0x5b190a20,\n  (q31_t)0x5b07609d, (q31_t)0x5af5b398, (q31_t)0x5ae40311, (q31_t)0x5ad24f09, (q31_t)0x5ac09781, (q31_t)0x5aaedc78,\n  (q31_t)0x5a9d1df1, (q31_t)0x5a8b5bec,\n  (q31_t)0x5a799669, (q31_t)0x5a67cd69, (q31_t)0x5a5600ec, (q31_t)0x5a4430f5, (q31_t)0x5a325d82, (q31_t)0x5a208695,\n  (q31_t)0x5a0eac2e, (q31_t)0x59fcce4f,\n  (q31_t)0x59eaecf8, (q31_t)0x59d90829, (q31_t)0x59c71fe3, (q31_t)0x59b53427, (q31_t)0x59a344f6, (q31_t)0x59915250,\n  (q31_t)0x597f5c36, (q31_t)0x596d62a9,\n  (q31_t)0x595b65aa, (q31_t)0x59496538, (q31_t)0x59376155, (q31_t)0x59255a02, (q31_t)0x59134f3e, (q31_t)0x5901410c,\n  (q31_t)0x58ef2f6b, (q31_t)0x58dd1a5d,\n  (q31_t)0x58cb01e1, (q31_t)0x58b8e5f9, (q31_t)0x58a6c6a5, (q31_t)0x5894a3e7, (q31_t)0x58827dbe, (q31_t)0x5870542c,\n  (q31_t)0x585e2730, (q31_t)0x584bf6cd,\n  (q31_t)0x5839c302, (q31_t)0x58278bd1, (q31_t)0x58155139, (q31_t)0x5803133c, (q31_t)0x57f0d1da, (q31_t)0x57de8d15,\n  (q31_t)0x57cc44ec, (q31_t)0x57b9f960,\n  (q31_t)0x57a7aa73, (q31_t)0x57955825, (q31_t)0x57830276, (q31_t)0x5770a968, (q31_t)0x575e4cfa, (q31_t)0x574bed2f,\n  (q31_t)0x57398a05, (q31_t)0x5727237f,\n  (q31_t)0x5714b99d, (q31_t)0x57024c5f, (q31_t)0x56efdbc7, (q31_t)0x56dd67d4, (q31_t)0x56caf088, (q31_t)0x56b875e4,\n  (q31_t)0x56a5f7e7, (q31_t)0x56937694,\n  (q31_t)0x5680f1ea, (q31_t)0x566e69ea, (q31_t)0x565bde95, (q31_t)0x56494fec, (q31_t)0x5636bdef, (q31_t)0x5624289f,\n  (q31_t)0x56118ffe, (q31_t)0x55fef40a,\n  (q31_t)0x55ec54c6, (q31_t)0x55d9b232, (q31_t)0x55c70c4f, (q31_t)0x55b4631d, (q31_t)0x55a1b69d, (q31_t)0x558f06d0,\n  (q31_t)0x557c53b6, (q31_t)0x55699d51,\n  (q31_t)0x5556e3a1, (q31_t)0x554426a7, (q31_t)0x55316663, (q31_t)0x551ea2d6, (q31_t)0x550bdc01, (q31_t)0x54f911e5,\n  (q31_t)0x54e64482, (q31_t)0x54d373d9,\n  (q31_t)0x54c09feb, (q31_t)0x54adc8b8, (q31_t)0x549aee42, (q31_t)0x54881089, (q31_t)0x54752f8d, (q31_t)0x54624b50,\n  (q31_t)0x544f63d2, (q31_t)0x543c7914,\n  (q31_t)0x54298b17, (q31_t)0x541699db, (q31_t)0x5403a561, (q31_t)0x53f0adaa, (q31_t)0x53ddb2b6, (q31_t)0x53cab486,\n  (q31_t)0x53b7b31c, (q31_t)0x53a4ae77,\n  (q31_t)0x5391a699, (q31_t)0x537e9b82, (q31_t)0x536b8d33, (q31_t)0x53587bad, (q31_t)0x534566f0, (q31_t)0x53324efd,\n  (q31_t)0x531f33d5, (q31_t)0x530c1579,\n  (q31_t)0x52f8f3e9, (q31_t)0x52e5cf27, (q31_t)0x52d2a732, (q31_t)0x52bf7c0b, (q31_t)0x52ac4db4, (q31_t)0x52991c2d,\n  (q31_t)0x5285e777, (q31_t)0x5272af92,\n  (q31_t)0x525f7480, (q31_t)0x524c3640, (q31_t)0x5238f4d4, (q31_t)0x5225b03d, (q31_t)0x5212687b, (q31_t)0x51ff1d8f,\n  (q31_t)0x51ebcf7a, (q31_t)0x51d87e3c,\n  (q31_t)0x51c529d7, (q31_t)0x51b1d24a, (q31_t)0x519e7797, (q31_t)0x518b19bf, (q31_t)0x5177b8c2, (q31_t)0x516454a0,\n  (q31_t)0x5150ed5c, (q31_t)0x513d82f4,\n  (q31_t)0x512a156b, (q31_t)0x5116a4c1, (q31_t)0x510330f7, (q31_t)0x50efba0d, (q31_t)0x50dc4005, (q31_t)0x50c8c2de,\n  (q31_t)0x50b5429a, (q31_t)0x50a1bf39,\n  (q31_t)0x508e38bd, (q31_t)0x507aaf25, (q31_t)0x50672273, (q31_t)0x505392a8, (q31_t)0x503fffc4, (q31_t)0x502c69c8,\n  (q31_t)0x5018d0b4, (q31_t)0x5005348a,\n  (q31_t)0x4ff1954b, (q31_t)0x4fddf2f6, (q31_t)0x4fca4d8d, (q31_t)0x4fb6a510, (q31_t)0x4fa2f981, (q31_t)0x4f8f4ae0,\n  (q31_t)0x4f7b992d, (q31_t)0x4f67e46a,\n  (q31_t)0x4f542c98, (q31_t)0x4f4071b6, (q31_t)0x4f2cb3c7, (q31_t)0x4f18f2c9, (q31_t)0x4f052ec0, (q31_t)0x4ef167aa,\n  (q31_t)0x4edd9d89, (q31_t)0x4ec9d05e,\n  (q31_t)0x4eb60029, (q31_t)0x4ea22ceb, (q31_t)0x4e8e56a5, (q31_t)0x4e7a7d58, (q31_t)0x4e66a105, (q31_t)0x4e52c1ab,\n  (q31_t)0x4e3edf4d, (q31_t)0x4e2af9ea,\n  (q31_t)0x4e171184, (q31_t)0x4e03261b, (q31_t)0x4def37b0, (q31_t)0x4ddb4644, (q31_t)0x4dc751d8, (q31_t)0x4db35a6c,\n  (q31_t)0x4d9f6001, (q31_t)0x4d8b6298,\n  (q31_t)0x4d776231, (q31_t)0x4d635ece, (q31_t)0x4d4f5870, (q31_t)0x4d3b4f16, (q31_t)0x4d2742c2, (q31_t)0x4d133374,\n  (q31_t)0x4cff212e, (q31_t)0x4ceb0bf0,\n  (q31_t)0x4cd6f3bb, (q31_t)0x4cc2d88f, (q31_t)0x4caeba6e, (q31_t)0x4c9a9958, (q31_t)0x4c86754e, (q31_t)0x4c724e50,\n  (q31_t)0x4c5e2460, (q31_t)0x4c49f77f,\n  (q31_t)0x4c35c7ac, (q31_t)0x4c2194e9, (q31_t)0x4c0d5f37, (q31_t)0x4bf92697, (q31_t)0x4be4eb08, (q31_t)0x4bd0ac8d,\n  (q31_t)0x4bbc6b25, (q31_t)0x4ba826d1,\n  (q31_t)0x4b93df93, (q31_t)0x4b7f956b, (q31_t)0x4b6b485a, (q31_t)0x4b56f861, (q31_t)0x4b42a580, (q31_t)0x4b2e4fb8,\n  (q31_t)0x4b19f70a, (q31_t)0x4b059b77,\n  (q31_t)0x4af13d00, (q31_t)0x4adcdba5, (q31_t)0x4ac87767, (q31_t)0x4ab41046, (q31_t)0x4a9fa645, (q31_t)0x4a8b3963,\n  (q31_t)0x4a76c9a2, (q31_t)0x4a625701,\n  (q31_t)0x4a4de182, (q31_t)0x4a396926, (q31_t)0x4a24edee, (q31_t)0x4a106fda, (q31_t)0x49fbeeea, (q31_t)0x49e76b21,\n  (q31_t)0x49d2e47e, (q31_t)0x49be5b02,\n  (q31_t)0x49a9ceaf, (q31_t)0x49953f84, (q31_t)0x4980ad84, (q31_t)0x496c18ae, (q31_t)0x49578103, (q31_t)0x4942e684,\n  (q31_t)0x492e4933, (q31_t)0x4919a90f,\n  (q31_t)0x4905061a, (q31_t)0x48f06054, (q31_t)0x48dbb7be, (q31_t)0x48c70c59, (q31_t)0x48b25e25, (q31_t)0x489dad25,\n  (q31_t)0x4888f957, (q31_t)0x487442be,\n  (q31_t)0x485f8959, (q31_t)0x484acd2a, (q31_t)0x48360e32, (q31_t)0x48214c71, (q31_t)0x480c87e8, (q31_t)0x47f7c099,\n  (q31_t)0x47e2f682, (q31_t)0x47ce29a7,\n  (q31_t)0x47b95a06, (q31_t)0x47a487a2, (q31_t)0x478fb27b, (q31_t)0x477ada91, (q31_t)0x4765ffe6, (q31_t)0x4751227a,\n  (q31_t)0x473c424e, (q31_t)0x47275f63,\n  (q31_t)0x471279ba, (q31_t)0x46fd9154, (q31_t)0x46e8a631, (q31_t)0x46d3b852, (q31_t)0x46bec7b8, (q31_t)0x46a9d464,\n  (q31_t)0x4694de56, (q31_t)0x467fe590,\n  (q31_t)0x466aea12, (q31_t)0x4655ebdd, (q31_t)0x4640eaf2, (q31_t)0x462be751, (q31_t)0x4616e0fc, (q31_t)0x4601d7f3,\n  (q31_t)0x45eccc37, (q31_t)0x45d7bdc9,\n  (q31_t)0x45c2acaa, (q31_t)0x45ad98da, (q31_t)0x4598825a, (q31_t)0x4583692c, (q31_t)0x456e4d4f, (q31_t)0x45592ec6,\n  (q31_t)0x45440d90, (q31_t)0x452ee9ae,\n  (q31_t)0x4519c321, (q31_t)0x450499eb, (q31_t)0x44ef6e0b, (q31_t)0x44da3f83, (q31_t)0x44c50e53, (q31_t)0x44afda7d,\n  (q31_t)0x449aa400, (q31_t)0x44856adf,\n  (q31_t)0x44702f19, (q31_t)0x445af0b0, (q31_t)0x4445afa4, (q31_t)0x44306bf6, (q31_t)0x441b25a8, (q31_t)0x4405dcb9,\n  (q31_t)0x43f0912b, (q31_t)0x43db42fe,\n  (q31_t)0x43c5f234, (q31_t)0x43b09ecc, (q31_t)0x439b48c9, (q31_t)0x4385f02a, (q31_t)0x437094f1, (q31_t)0x435b371f,\n  (q31_t)0x4345d6b3, (q31_t)0x433073b0,\n  (q31_t)0x431b0e15, (q31_t)0x4305a5e5, (q31_t)0x42f03b1e, (q31_t)0x42dacdc3, (q31_t)0x42c55dd4, (q31_t)0x42afeb53,\n  (q31_t)0x429a763f, (q31_t)0x4284fe99,\n  (q31_t)0x426f8463, (q31_t)0x425a079e, (q31_t)0x42448849, (q31_t)0x422f0667, (q31_t)0x421981f7, (q31_t)0x4203fafb,\n  (q31_t)0x41ee7174, (q31_t)0x41d8e561,\n  (q31_t)0x41c356c5, (q31_t)0x41adc5a0, (q31_t)0x419831f3, (q31_t)0x41829bbe, (q31_t)0x416d0302, (q31_t)0x415767c1,\n  (q31_t)0x4141c9fb, (q31_t)0x412c29b1,\n  (q31_t)0x411686e4, (q31_t)0x4100e194, (q31_t)0x40eb39c3, (q31_t)0x40d58f71, (q31_t)0x40bfe29f, (q31_t)0x40aa334e,\n  (q31_t)0x4094817f, (q31_t)0x407ecd32,\n  (q31_t)0x40691669, (q31_t)0x40535d24, (q31_t)0x403da165, (q31_t)0x4027e32b, (q31_t)0x40122278, (q31_t)0x3ffc5f4d,\n  (q31_t)0x3fe699aa, (q31_t)0x3fd0d191,\n  (q31_t)0x3fbb0702, (q31_t)0x3fa539fd, (q31_t)0x3f8f6a85, (q31_t)0x3f799899, (q31_t)0x3f63c43b, (q31_t)0x3f4ded6b,\n  (q31_t)0x3f38142a, (q31_t)0x3f22387a,\n  (q31_t)0x3f0c5a5a, (q31_t)0x3ef679cc, (q31_t)0x3ee096d1, (q31_t)0x3ecab169, (q31_t)0x3eb4c995, (q31_t)0x3e9edf57,\n  (q31_t)0x3e88f2ae, (q31_t)0x3e73039d,\n  (q31_t)0x3e5d1222, (q31_t)0x3e471e41, (q31_t)0x3e3127f9, (q31_t)0x3e1b2f4a, (q31_t)0x3e053437, (q31_t)0x3def36c0,\n  (q31_t)0x3dd936e6, (q31_t)0x3dc334a9,\n  (q31_t)0x3dad300b, (q31_t)0x3d97290b, (q31_t)0x3d811fac, (q31_t)0x3d6b13ee, (q31_t)0x3d5505d2, (q31_t)0x3d3ef559,\n  (q31_t)0x3d28e282, (q31_t)0x3d12cd51,\n  (q31_t)0x3cfcb5c4, (q31_t)0x3ce69bde, (q31_t)0x3cd07f9f, (q31_t)0x3cba6107, (q31_t)0x3ca44018, (q31_t)0x3c8e1cd3,\n  (q31_t)0x3c77f737, (q31_t)0x3c61cf48,\n  (q31_t)0x3c4ba504, (q31_t)0x3c35786d, (q31_t)0x3c1f4983, (q31_t)0x3c091849, (q31_t)0x3bf2e4be, (q31_t)0x3bdcaee3,\n  (q31_t)0x3bc676b9, (q31_t)0x3bb03c42,\n  (q31_t)0x3b99ff7d, (q31_t)0x3b83c06c, (q31_t)0x3b6d7f10, (q31_t)0x3b573b69, (q31_t)0x3b40f579, (q31_t)0x3b2aad3f,\n  (q31_t)0x3b1462be, (q31_t)0x3afe15f6,\n  (q31_t)0x3ae7c6e7, (q31_t)0x3ad17593, (q31_t)0x3abb21fb, (q31_t)0x3aa4cc1e, (q31_t)0x3a8e7400, (q31_t)0x3a78199f,\n  (q31_t)0x3a61bcfd, (q31_t)0x3a4b5e1b,\n  (q31_t)0x3a34fcf9, (q31_t)0x3a1e9999, (q31_t)0x3a0833fc, (q31_t)0x39f1cc21, (q31_t)0x39db620b, (q31_t)0x39c4f5ba,\n  (q31_t)0x39ae872f, (q31_t)0x3998166a,\n  (q31_t)0x3981a36d, (q31_t)0x396b2e38, (q31_t)0x3954b6cd, (q31_t)0x393e3d2c, (q31_t)0x3927c155, (q31_t)0x3911434b,\n  (q31_t)0x38fac30e, (q31_t)0x38e4409e,\n  (q31_t)0x38cdbbfc, (q31_t)0x38b7352a, (q31_t)0x38a0ac29, (q31_t)0x388a20f8, (q31_t)0x38739399, (q31_t)0x385d040d,\n  (q31_t)0x38467255, (q31_t)0x382fde72,\n  (q31_t)0x38194864, (q31_t)0x3802b02c, (q31_t)0x37ec15cb, (q31_t)0x37d57943, (q31_t)0x37beda93, (q31_t)0x37a839be,\n  (q31_t)0x379196c3, (q31_t)0x377af1a3,\n  (q31_t)0x37644a60, (q31_t)0x374da0fa, (q31_t)0x3736f573, (q31_t)0x372047ca, (q31_t)0x37099802, (q31_t)0x36f2e61a,\n  (q31_t)0x36dc3214, (q31_t)0x36c57bf0,\n  (q31_t)0x36aec3b0, (q31_t)0x36980954, (q31_t)0x36814cde, (q31_t)0x366a8e4d, (q31_t)0x3653cda3, (q31_t)0x363d0ae2,\n  (q31_t)0x36264609, (q31_t)0x360f7f19,\n  (q31_t)0x35f8b614, (q31_t)0x35e1eafa, (q31_t)0x35cb1dcc, (q31_t)0x35b44e8c, (q31_t)0x359d7d39, (q31_t)0x3586a9d5,\n  (q31_t)0x356fd461, (q31_t)0x3558fcde,\n  (q31_t)0x3542234c, (q31_t)0x352b47ad, (q31_t)0x35146a00, (q31_t)0x34fd8a48, (q31_t)0x34e6a885, (q31_t)0x34cfc4b7,\n  (q31_t)0x34b8dee1, (q31_t)0x34a1f702,\n  (q31_t)0x348b0d1c, (q31_t)0x3474212f, (q31_t)0x345d333c, (q31_t)0x34464345, (q31_t)0x342f5149, (q31_t)0x34185d4b,\n  (q31_t)0x3401674a, (q31_t)0x33ea6f48,\n  (q31_t)0x33d37546, (q31_t)0x33bc7944, (q31_t)0x33a57b44, (q31_t)0x338e7b46, (q31_t)0x3377794b, (q31_t)0x33607554,\n  (q31_t)0x33496f62, (q31_t)0x33326776,\n  (q31_t)0x331b5d91, (q31_t)0x330451b3, (q31_t)0x32ed43de, (q31_t)0x32d63412, (q31_t)0x32bf2250, (q31_t)0x32a80e99,\n  (q31_t)0x3290f8ef, (q31_t)0x3279e151,\n  (q31_t)0x3262c7c1, (q31_t)0x324bac40, (q31_t)0x32348ecf, (q31_t)0x321d6f6e, (q31_t)0x32064e1e, (q31_t)0x31ef2ae1,\n  (q31_t)0x31d805b7, (q31_t)0x31c0dea1,\n  (q31_t)0x31a9b5a0, (q31_t)0x31928ab4, (q31_t)0x317b5de0, (q31_t)0x31642f23, (q31_t)0x314cfe7f, (q31_t)0x3135cbf4,\n  (q31_t)0x311e9783, (q31_t)0x3107612e,\n  (q31_t)0x30f028f4, (q31_t)0x30d8eed8, (q31_t)0x30c1b2da, (q31_t)0x30aa74fa, (q31_t)0x3093353a, (q31_t)0x307bf39b,\n  (q31_t)0x3064b01d, (q31_t)0x304d6ac1,\n  (q31_t)0x30362389, (q31_t)0x301eda75, (q31_t)0x30078f86, (q31_t)0x2ff042bd, (q31_t)0x2fd8f41b, (q31_t)0x2fc1a3a0,\n  (q31_t)0x2faa514f, (q31_t)0x2f92fd26,\n  (q31_t)0x2f7ba729, (q31_t)0x2f644f56, (q31_t)0x2f4cf5b0, (q31_t)0x2f359a37, (q31_t)0x2f1e3ced, (q31_t)0x2f06ddd1,\n  (q31_t)0x2eef7ce5, (q31_t)0x2ed81a29,\n  (q31_t)0x2ec0b5a0, (q31_t)0x2ea94f49, (q31_t)0x2e91e725, (q31_t)0x2e7a7d36, (q31_t)0x2e63117c, (q31_t)0x2e4ba3f8,\n  (q31_t)0x2e3434ac, (q31_t)0x2e1cc397,\n  (q31_t)0x2e0550bb, (q31_t)0x2deddc19, (q31_t)0x2dd665b2, (q31_t)0x2dbeed86, (q31_t)0x2da77397, (q31_t)0x2d8ff7e5,\n  (q31_t)0x2d787a72, (q31_t)0x2d60fb3e,\n  (q31_t)0x2d497a4a, (q31_t)0x2d31f797, (q31_t)0x2d1a7325, (q31_t)0x2d02ecf7, (q31_t)0x2ceb650d, (q31_t)0x2cd3db67,\n  (q31_t)0x2cbc5006, (q31_t)0x2ca4c2ed,\n  (q31_t)0x2c8d341a, (q31_t)0x2c75a390, (q31_t)0x2c5e114f, (q31_t)0x2c467d58, (q31_t)0x2c2ee7ad, (q31_t)0x2c17504d,\n  (q31_t)0x2bffb73a, (q31_t)0x2be81c74,\n  (q31_t)0x2bd07ffe, (q31_t)0x2bb8e1d7, (q31_t)0x2ba14200, (q31_t)0x2b89a07b, (q31_t)0x2b71fd48, (q31_t)0x2b5a5868,\n  (q31_t)0x2b42b1dd, (q31_t)0x2b2b09a6,\n  (q31_t)0x2b135fc6, (q31_t)0x2afbb43c, (q31_t)0x2ae4070a, (q31_t)0x2acc5831, (q31_t)0x2ab4a7b1, (q31_t)0x2a9cf58c,\n  (q31_t)0x2a8541c3, (q31_t)0x2a6d8c55,\n  (q31_t)0x2a55d545, (q31_t)0x2a3e1c93, (q31_t)0x2a266240, (q31_t)0x2a0ea64d, (q31_t)0x29f6e8bb, (q31_t)0x29df298b,\n  (q31_t)0x29c768be, (q31_t)0x29afa654,\n  (q31_t)0x2997e24f, (q31_t)0x29801caf, (q31_t)0x29685576, (q31_t)0x29508ca4, (q31_t)0x2938c23a, (q31_t)0x2920f63a,\n  (q31_t)0x290928a3, (q31_t)0x28f15978,\n  (q31_t)0x28d988b8, (q31_t)0x28c1b666, (q31_t)0x28a9e281, (q31_t)0x28920d0a, (q31_t)0x287a3604, (q31_t)0x28625d6d,\n  (q31_t)0x284a8349, (q31_t)0x2832a796,\n  (q31_t)0x281aca57, (q31_t)0x2802eb8c, (q31_t)0x27eb0b36, (q31_t)0x27d32956, (q31_t)0x27bb45ed, (q31_t)0x27a360fc,\n  (q31_t)0x278b7a84, (q31_t)0x27739285,\n  (q31_t)0x275ba901, (q31_t)0x2743bdf9, (q31_t)0x272bd16d, (q31_t)0x2713e35f, (q31_t)0x26fbf3ce, (q31_t)0x26e402bd,\n  (q31_t)0x26cc102d, (q31_t)0x26b41c1d,\n  (q31_t)0x269c268f, (q31_t)0x26842f84, (q31_t)0x266c36fe, (q31_t)0x26543cfb, (q31_t)0x263c417f, (q31_t)0x26244489,\n  (q31_t)0x260c461b, (q31_t)0x25f44635,\n  (q31_t)0x25dc44d9, (q31_t)0x25c44207, (q31_t)0x25ac3dc0, (q31_t)0x25943806, (q31_t)0x257c30d8, (q31_t)0x25642839,\n  (q31_t)0x254c1e28, (q31_t)0x253412a8,\n  (q31_t)0x251c05b8, (q31_t)0x2503f75a, (q31_t)0x24ebe78f, (q31_t)0x24d3d657, (q31_t)0x24bbc3b4, (q31_t)0x24a3afa6,\n  (q31_t)0x248b9a2f, (q31_t)0x2473834f,\n  (q31_t)0x245b6b07, (q31_t)0x24435158, (q31_t)0x242b3644, (q31_t)0x241319ca, (q31_t)0x23fafbec, (q31_t)0x23e2dcac,\n  (q31_t)0x23cabc09, (q31_t)0x23b29a05,\n  (q31_t)0x239a76a0, (q31_t)0x238251dd, (q31_t)0x236a2bba, (q31_t)0x2352043b, (q31_t)0x2339db5e, (q31_t)0x2321b126,\n  (q31_t)0x23098593, (q31_t)0x22f158a7,\n  (q31_t)0x22d92a61, (q31_t)0x22c0fac4, (q31_t)0x22a8c9cf, (q31_t)0x22909785, (q31_t)0x227863e5, (q31_t)0x22602ef1,\n  (q31_t)0x2247f8aa, (q31_t)0x222fc111,\n  (q31_t)0x22178826, (q31_t)0x21ff4dea, (q31_t)0x21e71260, (q31_t)0x21ced586, (q31_t)0x21b6975f, (q31_t)0x219e57eb,\n  (q31_t)0x2186172b, (q31_t)0x216dd521,\n  (q31_t)0x215591cc, (q31_t)0x213d4d2f, (q31_t)0x21250749, (q31_t)0x210cc01d, (q31_t)0x20f477aa, (q31_t)0x20dc2df2,\n  (q31_t)0x20c3e2f5, (q31_t)0x20ab96b5,\n  (q31_t)0x20934933, (q31_t)0x207afa6f, (q31_t)0x2062aa6b, (q31_t)0x204a5927, (q31_t)0x203206a4, (q31_t)0x2019b2e4,\n  (q31_t)0x20015de7, (q31_t)0x1fe907ae,\n  (q31_t)0x1fd0b03a, (q31_t)0x1fb8578b, (q31_t)0x1f9ffda4, (q31_t)0x1f87a285, (q31_t)0x1f6f462f, (q31_t)0x1f56e8a2,\n  (q31_t)0x1f3e89e0, (q31_t)0x1f2629ea,\n  (q31_t)0x1f0dc8c0, (q31_t)0x1ef56664, (q31_t)0x1edd02d6, (q31_t)0x1ec49e17, (q31_t)0x1eac3829, (q31_t)0x1e93d10c,\n  (q31_t)0x1e7b68c2, (q31_t)0x1e62ff4a,\n  (q31_t)0x1e4a94a7, (q31_t)0x1e3228d9, (q31_t)0x1e19bbe0, (q31_t)0x1e014dbf, (q31_t)0x1de8de75, (q31_t)0x1dd06e04,\n  (q31_t)0x1db7fc6d, (q31_t)0x1d9f89b1,\n  (q31_t)0x1d8715d0, (q31_t)0x1d6ea0cc, (q31_t)0x1d562aa6, (q31_t)0x1d3db35e, (q31_t)0x1d253af5, (q31_t)0x1d0cc16c,\n  (q31_t)0x1cf446c5, (q31_t)0x1cdbcb00,\n  (q31_t)0x1cc34e1f, (q31_t)0x1caad021, (q31_t)0x1c925109, (q31_t)0x1c79d0d6, (q31_t)0x1c614f8b, (q31_t)0x1c48cd27,\n  (q31_t)0x1c3049ac, (q31_t)0x1c17c51b,\n  (q31_t)0x1bff3f75, (q31_t)0x1be6b8ba, (q31_t)0x1bce30ec, (q31_t)0x1bb5a80c, (q31_t)0x1b9d1e1a, (q31_t)0x1b849317,\n  (q31_t)0x1b6c0705, (q31_t)0x1b5379e5,\n  (q31_t)0x1b3aebb6, (q31_t)0x1b225c7b, (q31_t)0x1b09cc34, (q31_t)0x1af13ae3, (q31_t)0x1ad8a887, (q31_t)0x1ac01522,\n  (q31_t)0x1aa780b6, (q31_t)0x1a8eeb42,\n  (q31_t)0x1a7654c8, (q31_t)0x1a5dbd49, (q31_t)0x1a4524c6, (q31_t)0x1a2c8b3f, (q31_t)0x1a13f0b6, (q31_t)0x19fb552c,\n  (q31_t)0x19e2b8a2, (q31_t)0x19ca1b17,\n  (q31_t)0x19b17c8f, (q31_t)0x1998dd09, (q31_t)0x19803c86, (q31_t)0x19679b07, (q31_t)0x194ef88e, (q31_t)0x1936551b,\n  (q31_t)0x191db0af, (q31_t)0x19050b4b,\n  (q31_t)0x18ec64f0, (q31_t)0x18d3bda0, (q31_t)0x18bb155a, (q31_t)0x18a26c20, (q31_t)0x1889c1f3, (q31_t)0x187116d4,\n  (q31_t)0x18586ac3, (q31_t)0x183fbdc3,\n  (q31_t)0x18270fd3, (q31_t)0x180e60f4, (q31_t)0x17f5b129, (q31_t)0x17dd0070, (q31_t)0x17c44ecd, (q31_t)0x17ab9c3e,\n  (q31_t)0x1792e8c6, (q31_t)0x177a3466,\n  (q31_t)0x17617f1d, (q31_t)0x1748c8ee, (q31_t)0x173011d9, (q31_t)0x171759df, (q31_t)0x16fea102, (q31_t)0x16e5e741,\n  (q31_t)0x16cd2c9f, (q31_t)0x16b4711b,\n  (q31_t)0x169bb4b7, (q31_t)0x1682f774, (q31_t)0x166a3953, (q31_t)0x16517a55, (q31_t)0x1638ba7a, (q31_t)0x161ff9c4,\n  (q31_t)0x16073834, (q31_t)0x15ee75cb,\n  (q31_t)0x15d5b288, (q31_t)0x15bcee6f, (q31_t)0x15a4297f, (q31_t)0x158b63b9, (q31_t)0x15729d1f, (q31_t)0x1559d5b1,\n  (q31_t)0x15410d70, (q31_t)0x1528445d,\n  (q31_t)0x150f7a7a, (q31_t)0x14f6afc7, (q31_t)0x14dde445, (q31_t)0x14c517f4, (q31_t)0x14ac4ad7, (q31_t)0x14937cee,\n  (q31_t)0x147aae3a, (q31_t)0x1461debc,\n  (q31_t)0x14490e74, (q31_t)0x14303d65, (q31_t)0x14176b8e, (q31_t)0x13fe98f1, (q31_t)0x13e5c58e, (q31_t)0x13ccf167,\n  (q31_t)0x13b41c7d, (q31_t)0x139b46d0,\n  (q31_t)0x13827062, (q31_t)0x13699933, (q31_t)0x1350c144, (q31_t)0x1337e897, (q31_t)0x131f0f2c, (q31_t)0x13063505,\n  (q31_t)0x12ed5a21, (q31_t)0x12d47e83,\n  (q31_t)0x12bba22b, (q31_t)0x12a2c51b, (q31_t)0x1289e752, (q31_t)0x127108d2, (q31_t)0x1258299c, (q31_t)0x123f49b2,\n  (q31_t)0x12266913, (q31_t)0x120d87c1,\n  (q31_t)0x11f4a5bd, (q31_t)0x11dbc307, (q31_t)0x11c2dfa2, (q31_t)0x11a9fb8d, (q31_t)0x119116c9, (q31_t)0x11783159,\n  (q31_t)0x115f4b3c, (q31_t)0x11466473,\n  (q31_t)0x112d7d00, (q31_t)0x111494e4, (q31_t)0x10fbac1e, (q31_t)0x10e2c2b2, (q31_t)0x10c9d89e, (q31_t)0x10b0ede5,\n  (q31_t)0x10980287, (q31_t)0x107f1686,\n  (q31_t)0x106629e1, (q31_t)0x104d3c9b, (q31_t)0x10344eb4, (q31_t)0x101b602d, (q31_t)0x10027107, (q31_t)0xfe98143,\n  (q31_t)0xfd090e1, (q31_t)0xfb79fe4,\n  (q31_t)0xf9eae4c, (q31_t)0xf85bc19, (q31_t)0xf6cc94e, (q31_t)0xf53d5ea, (q31_t)0xf3ae1ee, (q31_t)0xf21ed5d, (q31_t)0xf08f836,\n  (q31_t)0xef0027b,\n  (q31_t)0xed70c2c, (q31_t)0xebe154b, (q31_t)0xea51dd8, (q31_t)0xe8c25d5, (q31_t)0xe732d42, (q31_t)0xe5a3421, (q31_t)0xe413a72,\n  (q31_t)0xe284036,\n  (q31_t)0xe0f456f, (q31_t)0xdf64a1c, (q31_t)0xddd4e40, (q31_t)0xdc451dc, (q31_t)0xdab54ef, (q31_t)0xd92577b, (q31_t)0xd795982,\n  (q31_t)0xd605b03,\n  (q31_t)0xd475c00, (q31_t)0xd2e5c7b, (q31_t)0xd155c73, (q31_t)0xcfc5bea, (q31_t)0xce35ae1, (q31_t)0xcca5959, (q31_t)0xcb15752,\n  (q31_t)0xc9854cf,\n  (q31_t)0xc7f51cf, (q31_t)0xc664e53, (q31_t)0xc4d4a5d, (q31_t)0xc3445ee, (q31_t)0xc1b4107, (q31_t)0xc023ba7, (q31_t)0xbe935d2,\n  (q31_t)0xbd02f87,\n  (q31_t)0xbb728c7, (q31_t)0xb9e2193, (q31_t)0xb8519ed, (q31_t)0xb6c11d5, (q31_t)0xb53094d, (q31_t)0xb3a0055, (q31_t)0xb20f6ee,\n  (q31_t)0xb07ed19,\n  (q31_t)0xaeee2d7, (q31_t)0xad5d829, (q31_t)0xabccd11, (q31_t)0xaa3c18e, (q31_t)0xa8ab5a2, (q31_t)0xa71a94f, (q31_t)0xa589c94,\n  (q31_t)0xa3f8f73,\n  (q31_t)0xa2681ed, (q31_t)0xa0d7403, (q31_t)0x9f465b5, (q31_t)0x9db5706, (q31_t)0x9c247f5, (q31_t)0x9a93884, (q31_t)0x99028b3,\n  (q31_t)0x9771884,\n  (q31_t)0x95e07f8, (q31_t)0x944f70f, (q31_t)0x92be5ca, (q31_t)0x912d42c, (q31_t)0x8f9c233, (q31_t)0x8e0afe2, (q31_t)0x8c79d3a,\n  (q31_t)0x8ae8a3a,\n  (q31_t)0x89576e5, (q31_t)0x87c633c, (q31_t)0x8634f3e, (q31_t)0x84a3aee, (q31_t)0x831264c, (q31_t)0x8181159, (q31_t)0x7fefc16,\n  (q31_t)0x7e5e685,\n  (q31_t)0x7ccd0a5, (q31_t)0x7b3ba78, (q31_t)0x79aa400, (q31_t)0x7818d3c, (q31_t)0x768762e, (q31_t)0x74f5ed7, (q31_t)0x7364738,\n  (q31_t)0x71d2f52,\n  (q31_t)0x7041726, (q31_t)0x6eafeb4, (q31_t)0x6d1e5fe, (q31_t)0x6b8cd05, (q31_t)0x69fb3c9, (q31_t)0x6869a4c, (q31_t)0x66d808f,\n  (q31_t)0x6546692,\n  (q31_t)0x63b4c57, (q31_t)0x62231de, (q31_t)0x6091729, (q31_t)0x5effc38, (q31_t)0x5d6e10c, (q31_t)0x5bdc5a7, (q31_t)0x5a4aa09,\n  (q31_t)0x58b8e34,\n  (q31_t)0x5727228, (q31_t)0x55955e6, (q31_t)0x540396f, (q31_t)0x5271cc4, (q31_t)0x50dffe7, (q31_t)0x4f4e2d8, (q31_t)0x4dbc597,\n  (q31_t)0x4c2a827,\n  (q31_t)0x4a98a88, (q31_t)0x4906cbb, (q31_t)0x4774ec1, (q31_t)0x45e309a, (q31_t)0x4451249, (q31_t)0x42bf3cd, (q31_t)0x412d528,\n  (q31_t)0x3f9b65b,\n  (q31_t)0x3e09767, (q31_t)0x3c7784d, (q31_t)0x3ae590d, (q31_t)0x39539a9, (q31_t)0x37c1a22, (q31_t)0x362fa78, (q31_t)0x349daac,\n  (q31_t)0x330bac1,\n  (q31_t)0x3179ab5, (q31_t)0x2fe7a8c, (q31_t)0x2e55a44, (q31_t)0x2cc39e1, (q31_t)0x2b31961, (q31_t)0x299f8c7, (q31_t)0x280d813,\n  (q31_t)0x267b747,\n  (q31_t)0x24e9662, (q31_t)0x2357567, (q31_t)0x21c5457, (q31_t)0x2033331, (q31_t)0x1ea11f7, (q31_t)0x1d0f0ab, (q31_t)0x1b7cf4d,\n  (q31_t)0x19eaddd,\n  (q31_t)0x1858c5e, (q31_t)0x16c6ad0, (q31_t)0x1534934, (q31_t)0x13a278a, (q31_t)0x12105d5, (q31_t)0x107e414, (q31_t)0xeec249,\n  (q31_t)0xd5a075,\n  (q31_t)0xbc7e99, (q31_t)0xa35cb5, (q31_t)0x8a3acb, (q31_t)0x7118dc, (q31_t)0x57f6e9, (q31_t)0x3ed4f2, (q31_t)0x25b2f8,\n  (q31_t)0xc90fe\n};\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_8192) \n    const q31_t WeightsQ31_8192[16384] = {\n  (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7fffffd9, (q31_t)0xfff9b781, (q31_t)0x7fffff62, (q31_t)0xfff36f02, (q31_t)0x7ffffe9d, (q31_t)0xffed2684,\n  (q31_t)0x7ffffd88, (q31_t)0xffe6de05, (q31_t)0x7ffffc25, (q31_t)0xffe09586, (q31_t)0x7ffffa73, (q31_t)0xffda4d08, (q31_t)0x7ffff872, (q31_t)0xffd40489,\n  (q31_t)0x7ffff621, (q31_t)0xffcdbc0b, (q31_t)0x7ffff382, (q31_t)0xffc7738c, (q31_t)0x7ffff094, (q31_t)0xffc12b0e, (q31_t)0x7fffed57, (q31_t)0xffbae290,\n  (q31_t)0x7fffe9cb, (q31_t)0xffb49a12, (q31_t)0x7fffe5f0, (q31_t)0xffae5195, (q31_t)0x7fffe1c6, (q31_t)0xffa80917, (q31_t)0x7fffdd4d, (q31_t)0xffa1c09a,\n  (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fffd36f, (q31_t)0xff952fa0, (q31_t)0x7fffce09, (q31_t)0xff8ee724, (q31_t)0x7fffc854, (q31_t)0xff889ea7,\n  (q31_t)0x7fffc251, (q31_t)0xff82562c, (q31_t)0x7fffbbfe, (q31_t)0xff7c0db0, (q31_t)0x7fffb55c, (q31_t)0xff75c535, (q31_t)0x7fffae6c, (q31_t)0xff6f7cba,\n  (q31_t)0x7fffa72c, (q31_t)0xff69343f, (q31_t)0x7fff9f9e, (q31_t)0xff62ebc5, (q31_t)0x7fff97c1, (q31_t)0xff5ca34b, (q31_t)0x7fff8f94, (q31_t)0xff565ad1,\n  (q31_t)0x7fff8719, (q31_t)0xff501258, (q31_t)0x7fff7e4f, (q31_t)0xff49c9df, (q31_t)0x7fff7536, (q31_t)0xff438167, (q31_t)0x7fff6bcd, (q31_t)0xff3d38ef,\n  (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7fff5810, (q31_t)0xff30a801, (q31_t)0x7fff4dbb, (q31_t)0xff2a5f8b, (q31_t)0x7fff4317, (q31_t)0xff241715,\n  (q31_t)0x7fff3824, (q31_t)0xff1dcea0, (q31_t)0x7fff2ce2, (q31_t)0xff17862b, (q31_t)0x7fff2151, (q31_t)0xff113db7, (q31_t)0x7fff1572, (q31_t)0xff0af543,\n  (q31_t)0x7fff0943, (q31_t)0xff04acd0, (q31_t)0x7ffefcc5, (q31_t)0xfefe645e, (q31_t)0x7ffeeff8, (q31_t)0xfef81bec, (q31_t)0x7ffee2dd, (q31_t)0xfef1d37b,\n  (q31_t)0x7ffed572, (q31_t)0xfeeb8b0a, (q31_t)0x7ffec7b9, (q31_t)0xfee5429a, (q31_t)0x7ffeb9b0, (q31_t)0xfedefa2b, (q31_t)0x7ffeab59, (q31_t)0xfed8b1bd,\n  (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, (q31_t)0x7ffe8dbd, (q31_t)0xfecc20e2, (q31_t)0x7ffe7e79, (q31_t)0xfec5d876, (q31_t)0x7ffe6ee5, (q31_t)0xfebf900a,\n  (q31_t)0x7ffe5f03, (q31_t)0xfeb947a0, (q31_t)0x7ffe4ed2, (q31_t)0xfeb2ff36, (q31_t)0x7ffe3e52, (q31_t)0xfeacb6cc, (q31_t)0x7ffe2d83, (q31_t)0xfea66e64,\n  (q31_t)0x7ffe1c65, (q31_t)0xfea025fd, (q31_t)0x7ffe0af8, (q31_t)0xfe99dd96, (q31_t)0x7ffdf93c, (q31_t)0xfe939530, (q31_t)0x7ffde731, (q31_t)0xfe8d4ccb,\n  (q31_t)0x7ffdd4d7, (q31_t)0xfe870467, (q31_t)0x7ffdc22e, (q31_t)0xfe80bc04, (q31_t)0x7ffdaf37, (q31_t)0xfe7a73a2, (q31_t)0x7ffd9bf0, (q31_t)0xfe742b41,\n  (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffd7476, (q31_t)0xfe679a81, (q31_t)0x7ffd6042, (q31_t)0xfe615223, (q31_t)0x7ffd4bc0, (q31_t)0xfe5b09c5,\n  (q31_t)0x7ffd36ee, (q31_t)0xfe54c169, (q31_t)0x7ffd21ce, (q31_t)0xfe4e790d, (q31_t)0x7ffd0c5f, (q31_t)0xfe4830b3, (q31_t)0x7ffcf6a0, (q31_t)0xfe41e85a,\n  (q31_t)0x7ffce093, (q31_t)0xfe3ba002, (q31_t)0x7ffcca37, (q31_t)0xfe3557ab, (q31_t)0x7ffcb38c, (q31_t)0xfe2f0f55, (q31_t)0x7ffc9c92, (q31_t)0xfe28c700,\n  (q31_t)0x7ffc8549, (q31_t)0xfe227eac, (q31_t)0x7ffc6db1, (q31_t)0xfe1c365a, (q31_t)0x7ffc55ca, (q31_t)0xfe15ee09, (q31_t)0x7ffc3d94, (q31_t)0xfe0fa5b8,\n  (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffc0c3b, (q31_t)0xfe03151c, (q31_t)0x7ffbf319, (q31_t)0xfdfccccf, (q31_t)0x7ffbd9a7, (q31_t)0xfdf68484,\n  (q31_t)0x7ffbbfe6, (q31_t)0xfdf03c3a, (q31_t)0x7ffba5d7, (q31_t)0xfde9f3f1, (q31_t)0x7ffb8b78, (q31_t)0xfde3aba9, (q31_t)0x7ffb70cb, (q31_t)0xfddd6363,\n  (q31_t)0x7ffb55ce, (q31_t)0xfdd71b1e, (q31_t)0x7ffb3a83, (q31_t)0xfdd0d2db, (q31_t)0x7ffb1ee9, (q31_t)0xfdca8a99, (q31_t)0x7ffb0300, (q31_t)0xfdc44258,\n  (q31_t)0x7ffae6c7, (q31_t)0xfdbdfa18, (q31_t)0x7ffaca40, (q31_t)0xfdb7b1da, (q31_t)0x7ffaad6a, (q31_t)0xfdb1699e, (q31_t)0x7ffa9045, (q31_t)0xfdab2162,\n  (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ffa550e, (q31_t)0xfd9e90f0, (q31_t)0x7ffa36fc, (q31_t)0xfd9848b9, (q31_t)0x7ffa189c, (q31_t)0xfd920084,\n  (q31_t)0x7ff9f9ec, (q31_t)0xfd8bb850, (q31_t)0x7ff9daed, (q31_t)0xfd85701e, (q31_t)0x7ff9bba0, (q31_t)0xfd7f27ed, (q31_t)0x7ff99c03, (q31_t)0xfd78dfbd,\n  (q31_t)0x7ff97c18, (q31_t)0xfd729790, (q31_t)0x7ff95bdd, (q31_t)0xfd6c4f64, (q31_t)0x7ff93b54, (q31_t)0xfd660739, (q31_t)0x7ff91a7b, (q31_t)0xfd5fbf10,\n  (q31_t)0x7ff8f954, (q31_t)0xfd5976e9, (q31_t)0x7ff8d7de, (q31_t)0xfd532ec3, (q31_t)0x7ff8b619, (q31_t)0xfd4ce69f, (q31_t)0x7ff89405, (q31_t)0xfd469e7c,\n  (q31_t)0x7ff871a2, (q31_t)0xfd40565c, (q31_t)0x7ff84ef0, (q31_t)0xfd3a0e3d, (q31_t)0x7ff82bef, (q31_t)0xfd33c61f, (q31_t)0x7ff8089f, (q31_t)0xfd2d7e04,\n  (q31_t)0x7ff7e500, (q31_t)0xfd2735ea, (q31_t)0x7ff7c113, (q31_t)0xfd20edd2, (q31_t)0x7ff79cd6, (q31_t)0xfd1aa5bc, (q31_t)0x7ff7784a, (q31_t)0xfd145da7,\n  (q31_t)0x7ff75370, (q31_t)0xfd0e1594, (q31_t)0x7ff72e46, (q31_t)0xfd07cd83, (q31_t)0x7ff708ce, (q31_t)0xfd018574, (q31_t)0x7ff6e307, (q31_t)0xfcfb3d67,\n  (q31_t)0x7ff6bcf0, (q31_t)0xfcf4f55c, (q31_t)0x7ff6968b, (q31_t)0xfceead52, (q31_t)0x7ff66fd7, (q31_t)0xfce8654b, (q31_t)0x7ff648d4, (q31_t)0xfce21d45,\n  (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff5f9e1, (q31_t)0xfcd58d3f, (q31_t)0x7ff5d1f1, (q31_t)0xfccf453f, (q31_t)0x7ff5a9b2, (q31_t)0xfcc8fd41,\n  (q31_t)0x7ff58125, (q31_t)0xfcc2b545, (q31_t)0x7ff55848, (q31_t)0xfcbc6d4c, (q31_t)0x7ff52f1d, (q31_t)0xfcb62554, (q31_t)0x7ff505a2, (q31_t)0xfcafdd5e,\n  (q31_t)0x7ff4dbd9, (q31_t)0xfca9956a, (q31_t)0x7ff4b1c0, (q31_t)0xfca34d78, (q31_t)0x7ff48759, (q31_t)0xfc9d0588, (q31_t)0x7ff45ca3, (q31_t)0xfc96bd9b,\n  (q31_t)0x7ff4319d, (q31_t)0xfc9075af, (q31_t)0x7ff40649, (q31_t)0xfc8a2dc6, (q31_t)0x7ff3daa6, (q31_t)0xfc83e5de, (q31_t)0x7ff3aeb4, (q31_t)0xfc7d9df9,\n  (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff355e4, (q31_t)0xfc710e36, (q31_t)0x7ff32905, (q31_t)0xfc6ac657, (q31_t)0x7ff2fbd7, (q31_t)0xfc647e7b,\n  (q31_t)0x7ff2ce5b, (q31_t)0xfc5e36a0, (q31_t)0x7ff2a08f, (q31_t)0xfc57eec9, (q31_t)0x7ff27275, (q31_t)0xfc51a6f3, (q31_t)0x7ff2440b, (q31_t)0xfc4b5f20,\n  (q31_t)0x7ff21553, (q31_t)0xfc45174e, (q31_t)0x7ff1e64c, (q31_t)0xfc3ecf80, (q31_t)0x7ff1b6f6, (q31_t)0xfc3887b3, (q31_t)0x7ff18751, (q31_t)0xfc323fe9,\n  (q31_t)0x7ff1575d, (q31_t)0xfc2bf821, (q31_t)0x7ff1271a, (q31_t)0xfc25b05c, (q31_t)0x7ff0f688, (q31_t)0xfc1f6899, (q31_t)0x7ff0c5a7, (q31_t)0xfc1920d8,\n  (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7ff062f9, (q31_t)0xfc0c915e, (q31_t)0x7ff0312c, (q31_t)0xfc0649a5, (q31_t)0x7fefff0f, (q31_t)0xfc0001ee,\n  (q31_t)0x7fefcca4, (q31_t)0xfbf9ba39, (q31_t)0x7fef99ea, (q31_t)0xfbf37287, (q31_t)0x7fef66e1, (q31_t)0xfbed2ad8, (q31_t)0x7fef3388, (q31_t)0xfbe6e32b,\n  (q31_t)0x7feeffe1, (q31_t)0xfbe09b80, (q31_t)0x7feecbec, (q31_t)0xfbda53d8, (q31_t)0x7fee97a7, (q31_t)0xfbd40c33, (q31_t)0x7fee6313, (q31_t)0xfbcdc490,\n  (q31_t)0x7fee2e30, (q31_t)0xfbc77cf0, (q31_t)0x7fedf8ff, (q31_t)0xfbc13552, (q31_t)0x7fedc37e, (q31_t)0xfbbaedb7, (q31_t)0x7fed8daf, (q31_t)0xfbb4a61f,\n  (q31_t)0x7fed5791, (q31_t)0xfbae5e89, (q31_t)0x7fed2123, (q31_t)0xfba816f6, (q31_t)0x7fecea67, (q31_t)0xfba1cf66, (q31_t)0x7fecb35c, (q31_t)0xfb9b87d8,\n  (q31_t)0x7fec7c02, (q31_t)0xfb95404d, (q31_t)0x7fec4459, (q31_t)0xfb8ef8c5, (q31_t)0x7fec0c62, (q31_t)0xfb88b13f, (q31_t)0x7febd41b, (q31_t)0xfb8269bd,\n  (q31_t)0x7feb9b85, (q31_t)0xfb7c223d, (q31_t)0x7feb62a1, (q31_t)0xfb75dac0, (q31_t)0x7feb296d, (q31_t)0xfb6f9345, (q31_t)0x7feaefeb, (q31_t)0xfb694bce,\n  (q31_t)0x7feab61a, (q31_t)0xfb630459, (q31_t)0x7fea7bfa, (q31_t)0xfb5cbce7, (q31_t)0x7fea418b, (q31_t)0xfb567578, (q31_t)0x7fea06cd, (q31_t)0xfb502e0c,\n  (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe99064, (q31_t)0xfb439f3c, (q31_t)0x7fe954ba, (q31_t)0xfb3d57d9, (q31_t)0x7fe918c0, (q31_t)0xfb371078,\n  (q31_t)0x7fe8dc78, (q31_t)0xfb30c91b, (q31_t)0x7fe89fe0, (q31_t)0xfb2a81c0, (q31_t)0x7fe862fa, (q31_t)0xfb243a69, (q31_t)0x7fe825c5, (q31_t)0xfb1df314,\n  (q31_t)0x7fe7e841, (q31_t)0xfb17abc2, (q31_t)0x7fe7aa6e, (q31_t)0xfb116474, (q31_t)0x7fe76c4c, (q31_t)0xfb0b1d28, (q31_t)0x7fe72ddb, (q31_t)0xfb04d5e0,\n  (q31_t)0x7fe6ef1c, (q31_t)0xfafe8e9b, (q31_t)0x7fe6b00d, (q31_t)0xfaf84758, (q31_t)0x7fe670b0, (q31_t)0xfaf20019, (q31_t)0x7fe63103, (q31_t)0xfaebb8dd,\n  (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe5b0be, (q31_t)0xfadf2a6e, (q31_t)0x7fe57025, (q31_t)0xfad8e33c, (q31_t)0x7fe52f3d, (q31_t)0xfad29c0c,\n  (q31_t)0x7fe4ee06, (q31_t)0xfacc54e0, (q31_t)0x7fe4ac81, (q31_t)0xfac60db7, (q31_t)0x7fe46aac, (q31_t)0xfabfc691, (q31_t)0x7fe42889, (q31_t)0xfab97f6e,\n  (q31_t)0x7fe3e616, (q31_t)0xfab3384f, (q31_t)0x7fe3a355, (q31_t)0xfaacf133, (q31_t)0x7fe36045, (q31_t)0xfaa6aa1a, (q31_t)0x7fe31ce6, (q31_t)0xfaa06305,\n  (q31_t)0x7fe2d938, (q31_t)0xfa9a1bf3, (q31_t)0x7fe2953b, (q31_t)0xfa93d4e4, (q31_t)0x7fe250ef, (q31_t)0xfa8d8dd8, (q31_t)0x7fe20c55, (q31_t)0xfa8746d0,\n  (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fe18233, (q31_t)0xfa7ab8ca, (q31_t)0x7fe13cac, (q31_t)0xfa7471cc, (q31_t)0x7fe0f6d6, (q31_t)0xfa6e2ad1,\n  (q31_t)0x7fe0b0b1, (q31_t)0xfa67e3da, (q31_t)0x7fe06a3d, (q31_t)0xfa619ce7, (q31_t)0x7fe0237a, (q31_t)0xfa5b55f7, (q31_t)0x7fdfdc69, (q31_t)0xfa550f0a,\n  (q31_t)0x7fdf9508, (q31_t)0xfa4ec821, (q31_t)0x7fdf4d59, (q31_t)0xfa48813b, (q31_t)0x7fdf055a, (q31_t)0xfa423a59, (q31_t)0x7fdebd0d, (q31_t)0xfa3bf37a,\n  (q31_t)0x7fde7471, (q31_t)0xfa35ac9f, (q31_t)0x7fde2b86, (q31_t)0xfa2f65c8, (q31_t)0x7fdde24d, (q31_t)0xfa291ef4, (q31_t)0x7fdd98c4, (q31_t)0xfa22d823,\n  (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, (q31_t)0x7fdd04c6, (q31_t)0xfa164a8e, (q31_t)0x7fdcba51, (q31_t)0xfa1003c8, (q31_t)0x7fdc6f8d, (q31_t)0xfa09bd06,\n  (q31_t)0x7fdc247a, (q31_t)0xfa037648, (q31_t)0x7fdbd918, (q31_t)0xf9fd2f8e, (q31_t)0x7fdb8d67, (q31_t)0xf9f6e8d7, (q31_t)0x7fdb4167, (q31_t)0xf9f0a224,\n  (q31_t)0x7fdaf519, (q31_t)0xf9ea5b75, (q31_t)0x7fdaa87c, (q31_t)0xf9e414ca, (q31_t)0x7fda5b8f, (q31_t)0xf9ddce22, (q31_t)0x7fda0e54, (q31_t)0xf9d7877e,\n  (q31_t)0x7fd9c0ca, (q31_t)0xf9d140de, (q31_t)0x7fd972f2, (q31_t)0xf9cafa42, (q31_t)0x7fd924ca, (q31_t)0xf9c4b3a9, (q31_t)0x7fd8d653, (q31_t)0xf9be6d15,\n  (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd8387a, (q31_t)0xf9b1dff7, (q31_t)0x7fd7e917, (q31_t)0xf9ab996e, (q31_t)0x7fd79965, (q31_t)0xf9a552e9,\n  (q31_t)0x7fd74964, (q31_t)0xf99f0c68, (q31_t)0x7fd6f914, (q31_t)0xf998c5ea, (q31_t)0x7fd6a875, (q31_t)0xf9927f71, (q31_t)0x7fd65788, (q31_t)0xf98c38fc,\n  (q31_t)0x7fd6064c, (q31_t)0xf985f28a, (q31_t)0x7fd5b4c1, (q31_t)0xf97fac1d, (q31_t)0x7fd562e7, (q31_t)0xf97965b4, (q31_t)0x7fd510be, (q31_t)0xf9731f4e,\n  (q31_t)0x7fd4be46, (q31_t)0xf96cd8ed, (q31_t)0x7fd46b80, (q31_t)0xf9669290, (q31_t)0x7fd4186a, (q31_t)0xf9604c37, (q31_t)0x7fd3c506, (q31_t)0xf95a05e2,\n  (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fd31d51, (q31_t)0xf94d7944, (q31_t)0x7fd2c900, (q31_t)0xf94732fb, (q31_t)0x7fd27460, (q31_t)0xf940ecb7,\n  (q31_t)0x7fd21f72, (q31_t)0xf93aa676, (q31_t)0x7fd1ca35, (q31_t)0xf934603a, (q31_t)0x7fd174a8, (q31_t)0xf92e1a02, (q31_t)0x7fd11ecd, (q31_t)0xf927d3ce,\n  (q31_t)0x7fd0c8a3, (q31_t)0xf9218d9e, (q31_t)0x7fd0722b, (q31_t)0xf91b4773, (q31_t)0x7fd01b63, (q31_t)0xf915014c, (q31_t)0x7fcfc44d, (q31_t)0xf90ebb29,\n  (q31_t)0x7fcf6ce8, (q31_t)0xf908750a, (q31_t)0x7fcf1533, (q31_t)0xf9022ef0, (q31_t)0x7fcebd31, (q31_t)0xf8fbe8da, (q31_t)0x7fce64df, (q31_t)0xf8f5a2c9,\n  (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fcdb34f, (q31_t)0xf8e916b2, (q31_t)0x7fcd5a11, (q31_t)0xf8e2d0ae, (q31_t)0x7fcd0083, (q31_t)0xf8dc8aae,\n  (q31_t)0x7fcca6a7, (q31_t)0xf8d644b2, (q31_t)0x7fcc4c7d, (q31_t)0xf8cffebb, (q31_t)0x7fcbf203, (q31_t)0xf8c9b8c8, (q31_t)0x7fcb973b, (q31_t)0xf8c372d9,\n  (q31_t)0x7fcb3c23, (q31_t)0xf8bd2cef, (q31_t)0x7fcae0bd, (q31_t)0xf8b6e70a, (q31_t)0x7fca8508, (q31_t)0xf8b0a129, (q31_t)0x7fca2905, (q31_t)0xf8aa5b4c,\n  (q31_t)0x7fc9ccb2, (q31_t)0xf8a41574, (q31_t)0x7fc97011, (q31_t)0xf89dcfa1, (q31_t)0x7fc91320, (q31_t)0xf89789d2, (q31_t)0x7fc8b5e1, (q31_t)0xf8914407,\n  (q31_t)0x7fc85854, (q31_t)0xf88afe42, (q31_t)0x7fc7fa77, (q31_t)0xf884b880, (q31_t)0x7fc79c4b, (q31_t)0xf87e72c4, (q31_t)0x7fc73dd1, (q31_t)0xf8782d0c,\n  (q31_t)0x7fc6df08, (q31_t)0xf871e759, (q31_t)0x7fc67ff0, (q31_t)0xf86ba1aa, (q31_t)0x7fc62089, (q31_t)0xf8655c00, (q31_t)0x7fc5c0d3, (q31_t)0xf85f165b,\n  (q31_t)0x7fc560cf, (q31_t)0xf858d0bb, (q31_t)0x7fc5007c, (q31_t)0xf8528b1f, (q31_t)0x7fc49fda, (q31_t)0xf84c4588, (q31_t)0x7fc43ee9, (q31_t)0xf845fff5,\n  (q31_t)0x7fc3dda9, (q31_t)0xf83fba68, (q31_t)0x7fc37c1b, (q31_t)0xf83974df, (q31_t)0x7fc31a3d, (q31_t)0xf8332f5b, (q31_t)0x7fc2b811, (q31_t)0xf82ce9dc,\n  (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fc1f2cc, (q31_t)0xf8205eec, (q31_t)0x7fc18fb4, (q31_t)0xf81a197b, (q31_t)0x7fc12c4d, (q31_t)0xf813d410,\n  (q31_t)0x7fc0c896, (q31_t)0xf80d8ea9, (q31_t)0x7fc06491, (q31_t)0xf8074947, (q31_t)0x7fc0003e, (q31_t)0xf80103ea, (q31_t)0x7fbf9b9b, (q31_t)0xf7fabe92,\n  (q31_t)0x7fbf36aa, (q31_t)0xf7f4793e, (q31_t)0x7fbed16a, (q31_t)0xf7ee33f0, (q31_t)0x7fbe6bdb, (q31_t)0xf7e7eea7, (q31_t)0x7fbe05fd, (q31_t)0xf7e1a963,\n  (q31_t)0x7fbd9fd0, (q31_t)0xf7db6423, (q31_t)0x7fbd3955, (q31_t)0xf7d51ee9, (q31_t)0x7fbcd28b, (q31_t)0xf7ced9b4, (q31_t)0x7fbc6b72, (q31_t)0xf7c89484,\n  (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fbb9c53, (q31_t)0xf7bc0a33, (q31_t)0x7fbb344e, (q31_t)0xf7b5c512, (q31_t)0x7fbacbfa, (q31_t)0xf7af7ff6,\n  (q31_t)0x7fba6357, (q31_t)0xf7a93ae0, (q31_t)0x7fb9fa65, (q31_t)0xf7a2f5ce, (q31_t)0x7fb99125, (q31_t)0xf79cb0c2, (q31_t)0x7fb92796, (q31_t)0xf7966bbb,\n  (q31_t)0x7fb8bdb8, (q31_t)0xf79026b9, (q31_t)0x7fb8538b, (q31_t)0xf789e1bc, (q31_t)0x7fb7e90f, (q31_t)0xf7839cc4, (q31_t)0x7fb77e45, (q31_t)0xf77d57d2,\n  (q31_t)0x7fb7132b, (q31_t)0xf77712e5, (q31_t)0x7fb6a7c3, (q31_t)0xf770cdfd, (q31_t)0x7fb63c0d, (q31_t)0xf76a891b, (q31_t)0x7fb5d007, (q31_t)0xf764443d,\n  (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fb4f710, (q31_t)0xf757ba93, (q31_t)0x7fb48a1e, (q31_t)0xf75175c6, (q31_t)0x7fb41cdd, (q31_t)0xf74b30fe,\n  (q31_t)0x7fb3af4e, (q31_t)0xf744ec3b, (q31_t)0x7fb34170, (q31_t)0xf73ea77e, (q31_t)0x7fb2d343, (q31_t)0xf73862c6, (q31_t)0x7fb264c7, (q31_t)0xf7321e14,\n  (q31_t)0x7fb1f5fc, (q31_t)0xf72bd967, (q31_t)0x7fb186e3, (q31_t)0xf72594c0, (q31_t)0x7fb1177b, (q31_t)0xf71f501e, (q31_t)0x7fb0a7c4, (q31_t)0xf7190b81,\n  (q31_t)0x7fb037bf, (q31_t)0xf712c6ea, (q31_t)0x7fafc76a, (q31_t)0xf70c8259, (q31_t)0x7faf56c7, (q31_t)0xf7063dcd, (q31_t)0x7faee5d5, (q31_t)0xf6fff946,\n  (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, (q31_t)0x7fae0305, (q31_t)0xf6f3704a, (q31_t)0x7fad9127, (q31_t)0xf6ed2bd4, (q31_t)0x7fad1efa, (q31_t)0xf6e6e764,\n  (q31_t)0x7facac7f, (q31_t)0xf6e0a2fa, (q31_t)0x7fac39b4, (q31_t)0xf6da5e95, (q31_t)0x7fabc69b, (q31_t)0xf6d41a36, (q31_t)0x7fab5333, (q31_t)0xf6cdd5dc,\n  (q31_t)0x7faadf7c, (q31_t)0xf6c79188, (q31_t)0x7faa6b77, (q31_t)0xf6c14d3a, (q31_t)0x7fa9f723, (q31_t)0xf6bb08f1, (q31_t)0x7fa98280, (q31_t)0xf6b4c4ae,\n  (q31_t)0x7fa90d8e, (q31_t)0xf6ae8071, (q31_t)0x7fa8984e, (q31_t)0xf6a83c3a, (q31_t)0x7fa822bf, (q31_t)0xf6a1f808, (q31_t)0x7fa7ace1, (q31_t)0xf69bb3dd,\n  (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7fa6c039, (q31_t)0xf68f2b96, (q31_t)0x7fa6496e, (q31_t)0xf688e77c, (q31_t)0x7fa5d256, (q31_t)0xf682a367,\n  (q31_t)0x7fa55aee, (q31_t)0xf67c5f59, (q31_t)0x7fa4e338, (q31_t)0xf6761b50, (q31_t)0x7fa46b32, (q31_t)0xf66fd74d, (q31_t)0x7fa3f2df, (q31_t)0xf6699350,\n  (q31_t)0x7fa37a3c, (q31_t)0xf6634f59, (q31_t)0x7fa3014b, (q31_t)0xf65d0b68, (q31_t)0x7fa2880b, (q31_t)0xf656c77c, (q31_t)0x7fa20e7c, (q31_t)0xf6508397,\n  (q31_t)0x7fa1949e, (q31_t)0xf64a3fb8, (q31_t)0x7fa11a72, (q31_t)0xf643fbdf, (q31_t)0x7fa09ff7, (q31_t)0xf63db80b, (q31_t)0x7fa0252e, (q31_t)0xf637743e,\n  (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f9f2eae, (q31_t)0xf62aecb5, (q31_t)0x7f9eb2f8, (q31_t)0xf624a8fa, (q31_t)0x7f9e36f4, (q31_t)0xf61e6545,\n  (q31_t)0x7f9dbaa0, (q31_t)0xf6182196, (q31_t)0x7f9d3dfe, (q31_t)0xf611dded, (q31_t)0x7f9cc10d, (q31_t)0xf60b9a4b, (q31_t)0x7f9c43ce, (q31_t)0xf60556ae,\n  (q31_t)0x7f9bc640, (q31_t)0xf5ff1318, (q31_t)0x7f9b4863, (q31_t)0xf5f8cf87, (q31_t)0x7f9aca37, (q31_t)0xf5f28bfd, (q31_t)0x7f9a4bbd, (q31_t)0xf5ec4879,\n  (q31_t)0x7f99ccf4, (q31_t)0xf5e604fc, (q31_t)0x7f994ddc, (q31_t)0xf5dfc184, (q31_t)0x7f98ce76, (q31_t)0xf5d97e13, (q31_t)0x7f984ec1, (q31_t)0xf5d33aa8,\n  (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f974e6a, (q31_t)0xf5c6b3e5, (q31_t)0x7f96cdc9, (q31_t)0xf5c0708d, (q31_t)0x7f964cd9, (q31_t)0xf5ba2d3b,\n  (q31_t)0x7f95cb9a, (q31_t)0xf5b3e9f0, (q31_t)0x7f954a0d, (q31_t)0xf5ada6ab, (q31_t)0x7f94c831, (q31_t)0xf5a7636c, (q31_t)0x7f944606, (q31_t)0xf5a12034,\n  (q31_t)0x7f93c38c, (q31_t)0xf59add02, (q31_t)0x7f9340c4, (q31_t)0xf59499d6, (q31_t)0x7f92bdad, (q31_t)0xf58e56b1, (q31_t)0x7f923a48, (q31_t)0xf5881393,\n  (q31_t)0x7f91b694, (q31_t)0xf581d07b, (q31_t)0x7f913291, (q31_t)0xf57b8d69, (q31_t)0x7f90ae3f, (q31_t)0xf5754a5e, (q31_t)0x7f90299f, (q31_t)0xf56f0759,\n  (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, (q31_t)0x7f8f1f72, (q31_t)0xf5628163, (q31_t)0x7f8e99e6, (q31_t)0xf55c3e72, (q31_t)0x7f8e140a, (q31_t)0xf555fb88,\n  (q31_t)0x7f8d8de1, (q31_t)0xf54fb8a4, (q31_t)0x7f8d0768, (q31_t)0xf54975c6, (q31_t)0x7f8c80a1, (q31_t)0xf54332ef, (q31_t)0x7f8bf98b, (q31_t)0xf53cf01f,\n  (q31_t)0x7f8b7227, (q31_t)0xf536ad56, (q31_t)0x7f8aea74, (q31_t)0xf5306a93, (q31_t)0x7f8a6272, (q31_t)0xf52a27d7, (q31_t)0x7f89da21, (q31_t)0xf523e521,\n  (q31_t)0x7f895182, (q31_t)0xf51da273, (q31_t)0x7f88c894, (q31_t)0xf5175fca, (q31_t)0x7f883f58, (q31_t)0xf5111d29, (q31_t)0x7f87b5cd, (q31_t)0xf50ada8f,\n  (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f86a1ca, (q31_t)0xf4fe556e, (q31_t)0x7f861753, (q31_t)0xf4f812e7, (q31_t)0x7f858c8d, (q31_t)0xf4f1d068,\n  (q31_t)0x7f850179, (q31_t)0xf4eb8def, (q31_t)0x7f847616, (q31_t)0xf4e54b7d, (q31_t)0x7f83ea64, (q31_t)0xf4df0912, (q31_t)0x7f835e64, (q31_t)0xf4d8c6ae,\n  (q31_t)0x7f82d214, (q31_t)0xf4d28451, (q31_t)0x7f824577, (q31_t)0xf4cc41fb, (q31_t)0x7f81b88a, (q31_t)0xf4c5ffab, (q31_t)0x7f812b4f, (q31_t)0xf4bfbd63,\n  (q31_t)0x7f809dc5, (q31_t)0xf4b97b21, (q31_t)0x7f800fed, (q31_t)0xf4b338e7, (q31_t)0x7f7f81c6, (q31_t)0xf4acf6b3, (q31_t)0x7f7ef350, (q31_t)0xf4a6b486,\n  (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f7dd579, (q31_t)0xf49a3042, (q31_t)0x7f7d4617, (q31_t)0xf493ee2b, (q31_t)0x7f7cb667, (q31_t)0xf48dac1a,\n  (q31_t)0x7f7c2668, (q31_t)0xf4876a10, (q31_t)0x7f7b961b, (q31_t)0xf481280e, (q31_t)0x7f7b057e, (q31_t)0xf47ae613, (q31_t)0x7f7a7494, (q31_t)0xf474a41f,\n  (q31_t)0x7f79e35a, (q31_t)0xf46e6231, (q31_t)0x7f7951d2, (q31_t)0xf468204b, (q31_t)0x7f78bffb, (q31_t)0xf461de6d, (q31_t)0x7f782dd6, (q31_t)0xf45b9c95,\n  (q31_t)0x7f779b62, (q31_t)0xf4555ac5, (q31_t)0x7f77089f, (q31_t)0xf44f18fb, (q31_t)0x7f76758e, (q31_t)0xf448d739, (q31_t)0x7f75e22e, (q31_t)0xf442957e,\n  (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f74ba83, (q31_t)0xf436121e, (q31_t)0x7f742637, (q31_t)0xf42fd079, (q31_t)0x7f73919d, (q31_t)0xf4298edc,\n  (q31_t)0x7f72fcb4, (q31_t)0xf4234d45, (q31_t)0x7f72677c, (q31_t)0xf41d0bb6, (q31_t)0x7f71d1f6, (q31_t)0xf416ca2e, (q31_t)0x7f713c21, (q31_t)0xf41088ae,\n  (q31_t)0x7f70a5fe, (q31_t)0xf40a4735, (q31_t)0x7f700f8c, (q31_t)0xf40405c3, (q31_t)0x7f6f78cb, (q31_t)0xf3fdc459, (q31_t)0x7f6ee1bc, (q31_t)0xf3f782f6,\n  (q31_t)0x7f6e4a5e, (q31_t)0xf3f1419a, (q31_t)0x7f6db2b1, (q31_t)0xf3eb0046, (q31_t)0x7f6d1ab6, (q31_t)0xf3e4bef9, (q31_t)0x7f6c826d, (q31_t)0xf3de7db4,\n  (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, (q31_t)0x7f6b50ed, (q31_t)0xf3d1fb40, (q31_t)0x7f6ab7b8, (q31_t)0xf3cbba12, (q31_t)0x7f6a1e34, (q31_t)0xf3c578eb,\n  (q31_t)0x7f698461, (q31_t)0xf3bf37cb, (q31_t)0x7f68ea40, (q31_t)0xf3b8f6b3, (q31_t)0x7f684fd0, (q31_t)0xf3b2b5a3, (q31_t)0x7f67b512, (q31_t)0xf3ac749a,\n  (q31_t)0x7f671a05, (q31_t)0xf3a63398, (q31_t)0x7f667ea9, (q31_t)0xf39ff29f, (q31_t)0x7f65e2ff, (q31_t)0xf399b1ad, (q31_t)0x7f654706, (q31_t)0xf39370c2,\n  (q31_t)0x7f64aabf, (q31_t)0xf38d2fe0, (q31_t)0x7f640e29, (q31_t)0xf386ef05, (q31_t)0x7f637144, (q31_t)0xf380ae31, (q31_t)0x7f62d411, (q31_t)0xf37a6d66,\n  (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f6198bf, (q31_t)0xf36debe6, (q31_t)0x7f60faa0, (q31_t)0xf367ab31, (q31_t)0x7f605c33, (q31_t)0xf3616a85,\n  (q31_t)0x7f5fbd77, (q31_t)0xf35b29e0, (q31_t)0x7f5f1e6c, (q31_t)0xf354e943, (q31_t)0x7f5e7f13, (q31_t)0xf34ea8ae, (q31_t)0x7f5ddf6b, (q31_t)0xf3486820,\n  (q31_t)0x7f5d3f75, (q31_t)0xf342279b, (q31_t)0x7f5c9f30, (q31_t)0xf33be71d, (q31_t)0x7f5bfe9d, (q31_t)0xf335a6a7, (q31_t)0x7f5b5dbb, (q31_t)0xf32f6639,\n  (q31_t)0x7f5abc8a, (q31_t)0xf32925d3, (q31_t)0x7f5a1b0b, (q31_t)0xf322e575, (q31_t)0x7f59793e, (q31_t)0xf31ca51f, (q31_t)0x7f58d721, (q31_t)0xf31664d1,\n  (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f5791fd, (q31_t)0xf309e44c, (q31_t)0x7f56eef5, (q31_t)0xf303a416, (q31_t)0x7f564b9f, (q31_t)0xf2fd63e8,\n  (q31_t)0x7f55a7fa, (q31_t)0xf2f723c1, (q31_t)0x7f550407, (q31_t)0xf2f0e3a3, (q31_t)0x7f545fc5, (q31_t)0xf2eaa38d, (q31_t)0x7f53bb34, (q31_t)0xf2e4637f,\n  (q31_t)0x7f531655, (q31_t)0xf2de2379, (q31_t)0x7f527127, (q31_t)0xf2d7e37b, (q31_t)0x7f51cbab, (q31_t)0xf2d1a385, (q31_t)0x7f5125e0, (q31_t)0xf2cb6398,\n  (q31_t)0x7f507fc7, (q31_t)0xf2c523b2, (q31_t)0x7f4fd95f, (q31_t)0xf2bee3d5, (q31_t)0x7f4f32a9, (q31_t)0xf2b8a400, (q31_t)0x7f4e8ba4, (q31_t)0xf2b26433,\n  (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f4d3caf, (q31_t)0xf2a5e4b1, (q31_t)0x7f4c94be, (q31_t)0xf29fa4fd, (q31_t)0x7f4bec7f, (q31_t)0xf2996551,\n  (q31_t)0x7f4b43f2, (q31_t)0xf29325ad, (q31_t)0x7f4a9b16, (q31_t)0xf28ce612, (q31_t)0x7f49f1eb, (q31_t)0xf286a67e, (q31_t)0x7f494872, (q31_t)0xf28066f4,\n  (q31_t)0x7f489eaa, (q31_t)0xf27a2771, (q31_t)0x7f47f494, (q31_t)0xf273e7f7, (q31_t)0x7f474a30, (q31_t)0xf26da885, (q31_t)0x7f469f7d, (q31_t)0xf267691b,\n  (q31_t)0x7f45f47b, (q31_t)0xf26129ba, (q31_t)0x7f45492b, (q31_t)0xf25aea61, (q31_t)0x7f449d8c, (q31_t)0xf254ab11, (q31_t)0x7f43f19f, (q31_t)0xf24e6bc9,\n  (q31_t)0x7f434563, (q31_t)0xf2482c8a, (q31_t)0x7f4298d9, (q31_t)0xf241ed53, (q31_t)0x7f41ec01, (q31_t)0xf23bae24, (q31_t)0x7f413ed9, (q31_t)0xf2356efe,\n  (q31_t)0x7f409164, (q31_t)0xf22f2fe1, (q31_t)0x7f3fe3a0, (q31_t)0xf228f0cc, (q31_t)0x7f3f358d, (q31_t)0xf222b1c0, (q31_t)0x7f3e872c, (q31_t)0xf21c72bc,\n  (q31_t)0x7f3dd87c, (q31_t)0xf21633c0, (q31_t)0x7f3d297e, (q31_t)0xf20ff4ce, (q31_t)0x7f3c7a31, (q31_t)0xf209b5e4, (q31_t)0x7f3bca96, (q31_t)0xf2037702,\n  (q31_t)0x7f3b1aad, (q31_t)0xf1fd3829, (q31_t)0x7f3a6a75, (q31_t)0xf1f6f959, (q31_t)0x7f39b9ee, (q31_t)0xf1f0ba91, (q31_t)0x7f390919, (q31_t)0xf1ea7bd2,\n  (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f37a684, (q31_t)0xf1ddfe6f, (q31_t)0x7f36f4c3, (q31_t)0xf1d7bfca, (q31_t)0x7f3642b4, (q31_t)0xf1d1812e,\n  (q31_t)0x7f359057, (q31_t)0xf1cb429a, (q31_t)0x7f34ddab, (q31_t)0xf1c50410, (q31_t)0x7f342ab1, (q31_t)0xf1bec58e, (q31_t)0x7f337768, (q31_t)0xf1b88715,\n  (q31_t)0x7f32c3d1, (q31_t)0xf1b248a5, (q31_t)0x7f320feb, (q31_t)0xf1ac0a3e, (q31_t)0x7f315bb7, (q31_t)0xf1a5cbdf, (q31_t)0x7f30a734, (q31_t)0xf19f8d89,\n  (q31_t)0x7f2ff263, (q31_t)0xf1994f3d, (q31_t)0x7f2f3d44, (q31_t)0xf19310f9, (q31_t)0x7f2e87d6, (q31_t)0xf18cd2be, (q31_t)0x7f2dd219, (q31_t)0xf186948c,\n  (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2c65b5, (q31_t)0xf17a1842, (q31_t)0x7f2baf0d, (q31_t)0xf173da2b, (q31_t)0x7f2af817, (q31_t)0xf16d9c1d,\n  (q31_t)0x7f2a40d2, (q31_t)0xf1675e17, (q31_t)0x7f29893f, (q31_t)0xf161201b, (q31_t)0x7f28d15d, (q31_t)0xf15ae228, (q31_t)0x7f28192d, (q31_t)0xf154a43d,\n  (q31_t)0x7f2760af, (q31_t)0xf14e665c, (q31_t)0x7f26a7e2, (q31_t)0xf1482884, (q31_t)0x7f25eec7, (q31_t)0xf141eab5, (q31_t)0x7f25355d, (q31_t)0xf13bacef,\n  (q31_t)0x7f247ba5, (q31_t)0xf1356f32, (q31_t)0x7f23c19e, (q31_t)0xf12f317e, (q31_t)0x7f230749, (q31_t)0xf128f3d4, (q31_t)0x7f224ca6, (q31_t)0xf122b632,\n  (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f20d674, (q31_t)0xf1163b0b, (q31_t)0x7f201ae5, (q31_t)0xf10ffd85, (q31_t)0x7f1f5f08, (q31_t)0xf109c009,\n  (q31_t)0x7f1ea2dc, (q31_t)0xf1038295, (q31_t)0x7f1de662, (q31_t)0xf0fd452b, (q31_t)0x7f1d299a, (q31_t)0xf0f707ca, (q31_t)0x7f1c6c83, (q31_t)0xf0f0ca72,\n  (q31_t)0x7f1baf1e, (q31_t)0xf0ea8d24, (q31_t)0x7f1af16a, (q31_t)0xf0e44fdf, (q31_t)0x7f1a3368, (q31_t)0xf0de12a3, (q31_t)0x7f197518, (q31_t)0xf0d7d571,\n  (q31_t)0x7f18b679, (q31_t)0xf0d19848, (q31_t)0x7f17f78c, (q31_t)0xf0cb5b28, (q31_t)0x7f173850, (q31_t)0xf0c51e12, (q31_t)0x7f1678c6, (q31_t)0xf0bee105,\n  (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, (q31_t)0x7f14f8c7, (q31_t)0xf0b26707, (q31_t)0x7f143852, (q31_t)0xf0ac2a16, (q31_t)0x7f13778e, (q31_t)0xf0a5ed2f,\n  (q31_t)0x7f12b67c, (q31_t)0xf09fb051, (q31_t)0x7f11f51c, (q31_t)0xf099737d, (q31_t)0x7f11336d, (q31_t)0xf09336b2, (q31_t)0x7f107170, (q31_t)0xf08cf9f1,\n  (q31_t)0x7f0faf25, (q31_t)0xf086bd39, (q31_t)0x7f0eec8b, (q31_t)0xf080808b, (q31_t)0x7f0e29a3, (q31_t)0xf07a43e7, (q31_t)0x7f0d666c, (q31_t)0xf074074c,\n  (q31_t)0x7f0ca2e7, (q31_t)0xf06dcaba, (q31_t)0x7f0bdf14, (q31_t)0xf0678e32, (q31_t)0x7f0b1af2, (q31_t)0xf06151b4, (q31_t)0x7f0a5682, (q31_t)0xf05b1540,\n  (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7f08ccb7, (q31_t)0xf04e9c73, (q31_t)0x7f08075c, (q31_t)0xf048601c, (q31_t)0x7f0741b2, (q31_t)0xf04223ce,\n  (q31_t)0x7f067bba, (q31_t)0xf03be78a, (q31_t)0x7f05b574, (q31_t)0xf035ab4f, (q31_t)0x7f04eedf, (q31_t)0xf02f6f1f, (q31_t)0x7f0427fc, (q31_t)0xf02932f8,\n  (q31_t)0x7f0360cb, (q31_t)0xf022f6da, (q31_t)0x7f02994b, (q31_t)0xf01cbac7, (q31_t)0x7f01d17d, (q31_t)0xf0167ebd, (q31_t)0x7f010961, (q31_t)0xf01042be,\n  (q31_t)0x7f0040f6, (q31_t)0xf00a06c8, (q31_t)0x7eff783d, (q31_t)0xf003cadc, (q31_t)0x7efeaf36, (q31_t)0xeffd8ef9, (q31_t)0x7efde5e0, (q31_t)0xeff75321,\n  (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7efc524a, (q31_t)0xefeadb8e, (q31_t)0x7efb8809, (q31_t)0xefe49fd3, (q31_t)0x7efabd7a, (q31_t)0xefde6423,\n  (q31_t)0x7ef9f29d, (q31_t)0xefd8287c, (q31_t)0x7ef92771, (q31_t)0xefd1ecdf, (q31_t)0x7ef85bf7, (q31_t)0xefcbb14c, (q31_t)0x7ef7902f, (q31_t)0xefc575c3,\n  (q31_t)0x7ef6c418, (q31_t)0xefbf3a45, (q31_t)0x7ef5f7b3, (q31_t)0xefb8fed0, (q31_t)0x7ef52b00, (q31_t)0xefb2c365, (q31_t)0x7ef45dfe, (q31_t)0xefac8804,\n  (q31_t)0x7ef390ae, (q31_t)0xefa64cae, (q31_t)0x7ef2c310, (q31_t)0xefa01161, (q31_t)0x7ef1f524, (q31_t)0xef99d61f, (q31_t)0x7ef126e9, (q31_t)0xef939ae6,\n  (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7eef8988, (q31_t)0xef872494, (q31_t)0x7eeeba62, (q31_t)0xef80e97a, (q31_t)0x7eedeaee, (q31_t)0xef7aae6b,\n  (q31_t)0x7eed1b2c, (q31_t)0xef747365, (q31_t)0x7eec4b1b, (q31_t)0xef6e386a, (q31_t)0x7eeb7abc, (q31_t)0xef67fd79, (q31_t)0x7eeaaa0f, (q31_t)0xef61c292,\n  (q31_t)0x7ee9d914, (q31_t)0xef5b87b5, (q31_t)0x7ee907ca, (q31_t)0xef554ce3, (q31_t)0x7ee83632, (q31_t)0xef4f121b, (q31_t)0x7ee7644c, (q31_t)0xef48d75d,\n  (q31_t)0x7ee69217, (q31_t)0xef429caa, (q31_t)0x7ee5bf94, (q31_t)0xef3c6201, (q31_t)0x7ee4ecc3, (q31_t)0xef362762, (q31_t)0x7ee419a3, (q31_t)0xef2feccd,\n  (q31_t)0x7ee34636, (q31_t)0xef29b243, (q31_t)0x7ee2727a, (q31_t)0xef2377c4, (q31_t)0x7ee19e6f, (q31_t)0xef1d3d4e, (q31_t)0x7ee0ca17, (q31_t)0xef1702e4,\n  (q31_t)0x7edff570, (q31_t)0xef10c883, (q31_t)0x7edf207b, (q31_t)0xef0a8e2d, (q31_t)0x7ede4b38, (q31_t)0xef0453e2, (q31_t)0x7edd75a6, (q31_t)0xeefe19a1,\n  (q31_t)0x7edc9fc6, (q31_t)0xeef7df6a, (q31_t)0x7edbc998, (q31_t)0xeef1a53e, (q31_t)0x7edaf31c, (q31_t)0xeeeb6b1c, (q31_t)0x7eda1c51, (q31_t)0xeee53105,\n  (q31_t)0x7ed94538, (q31_t)0xeedef6f9, (q31_t)0x7ed86dd1, (q31_t)0xeed8bcf7, (q31_t)0x7ed7961c, (q31_t)0xeed28300, (q31_t)0x7ed6be18, (q31_t)0xeecc4913,\n  (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ed50d26, (q31_t)0xeebfd55a, (q31_t)0x7ed43438, (q31_t)0xeeb99b8d, (q31_t)0x7ed35afb, (q31_t)0xeeb361cb,\n  (q31_t)0x7ed28171, (q31_t)0xeead2813, (q31_t)0x7ed1a798, (q31_t)0xeea6ee66, (q31_t)0x7ed0cd70, (q31_t)0xeea0b4c4, (q31_t)0x7ecff2fb, (q31_t)0xee9a7b2d,\n  (q31_t)0x7ecf1837, (q31_t)0xee9441a0, (q31_t)0x7ece3d25, (q31_t)0xee8e081e, (q31_t)0x7ecd61c5, (q31_t)0xee87cea7, (q31_t)0x7ecc8617, (q31_t)0xee81953b,\n  (q31_t)0x7ecbaa1a, (q31_t)0xee7b5bd9, (q31_t)0x7ecacdd0, (q31_t)0xee752283, (q31_t)0x7ec9f137, (q31_t)0xee6ee937, (q31_t)0x7ec9144f, (q31_t)0xee68aff6,\n  (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7ec75996, (q31_t)0xee5c3d94, (q31_t)0x7ec67bc5, (q31_t)0xee560473, (q31_t)0x7ec59da5, (q31_t)0xee4fcb5e,\n  (q31_t)0x7ec4bf36, (q31_t)0xee499253, (q31_t)0x7ec3e07a, (q31_t)0xee435953, (q31_t)0x7ec3016f, (q31_t)0xee3d205e, (q31_t)0x7ec22217, (q31_t)0xee36e775,\n  (q31_t)0x7ec14270, (q31_t)0xee30ae96, (q31_t)0x7ec0627a, (q31_t)0xee2a75c2, (q31_t)0x7ebf8237, (q31_t)0xee243cf9, (q31_t)0x7ebea1a6, (q31_t)0xee1e043b,\n  (q31_t)0x7ebdc0c6, (q31_t)0xee17cb88, (q31_t)0x7ebcdf98, (q31_t)0xee1192e0, (q31_t)0x7ebbfe1c, (q31_t)0xee0b5a43, (q31_t)0x7ebb1c52, (q31_t)0xee0521b2,\n  (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eb957d2, (q31_t)0xedf8b0b0, (q31_t)0x7eb8751e, (q31_t)0xedf2783f, (q31_t)0x7eb7921b, (q31_t)0xedec3fda,\n  (q31_t)0x7eb6aeca, (q31_t)0xede60780, (q31_t)0x7eb5cb2a, (q31_t)0xeddfcf31, (q31_t)0x7eb4e73d, (q31_t)0xedd996ed, (q31_t)0x7eb40301, (q31_t)0xedd35eb5,\n  (q31_t)0x7eb31e78, (q31_t)0xedcd2687, (q31_t)0x7eb239a0, (q31_t)0xedc6ee65, (q31_t)0x7eb1547a, (q31_t)0xedc0b64e, (q31_t)0x7eb06f05, (q31_t)0xedba7e43,\n  (q31_t)0x7eaf8943, (q31_t)0xedb44642, (q31_t)0x7eaea333, (q31_t)0xedae0e4d, (q31_t)0x7eadbcd4, (q31_t)0xeda7d664, (q31_t)0x7eacd627, (q31_t)0xeda19e85,\n  (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, (q31_t)0x7eab07e3, (q31_t)0xed952eea, (q31_t)0x7eaa204c, (q31_t)0xed8ef72e, (q31_t)0x7ea93867, (q31_t)0xed88bf7d,\n  (q31_t)0x7ea85033, (q31_t)0xed8287d7, (q31_t)0x7ea767b2, (q31_t)0xed7c503d, (q31_t)0x7ea67ee2, (q31_t)0xed7618ae, (q31_t)0x7ea595c4, (q31_t)0xed6fe12b,\n  (q31_t)0x7ea4ac58, (q31_t)0xed69a9b3, (q31_t)0x7ea3c29e, (q31_t)0xed637246, (q31_t)0x7ea2d896, (q31_t)0xed5d3ae5, (q31_t)0x7ea1ee3f, (q31_t)0xed570390,\n  (q31_t)0x7ea1039b, (q31_t)0xed50cc46, (q31_t)0x7ea018a8, (q31_t)0xed4a9507, (q31_t)0x7e9f2d68, (q31_t)0xed445dd5, (q31_t)0x7e9e41d9, (q31_t)0xed3e26ad,\n  (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e9c69d1, (q31_t)0xed31b881, (q31_t)0x7e9b7d58, (q31_t)0xed2b817d, (q31_t)0x7e9a9091, (q31_t)0xed254a84,\n  (q31_t)0x7e99a37c, (q31_t)0xed1f1396, (q31_t)0x7e98b618, (q31_t)0xed18dcb5, (q31_t)0x7e97c867, (q31_t)0xed12a5df, (q31_t)0x7e96da67, (q31_t)0xed0c6f14,\n  (q31_t)0x7e95ec1a, (q31_t)0xed063856, (q31_t)0x7e94fd7e, (q31_t)0xed0001a3, (q31_t)0x7e940e94, (q31_t)0xecf9cafb, (q31_t)0x7e931f5c, (q31_t)0xecf39460,\n  (q31_t)0x7e922fd6, (q31_t)0xeced5dd0, (q31_t)0x7e914002, (q31_t)0xece7274c, (q31_t)0x7e904fe0, (q31_t)0xece0f0d4, (q31_t)0x7e8f5f70, (q31_t)0xecdaba67,\n  (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e8d7da6, (q31_t)0xecce4db2, (q31_t)0x7e8c8c4b, (q31_t)0xecc81769, (q31_t)0x7e8b9aa3, (q31_t)0xecc1e12c,\n  (q31_t)0x7e8aa8ac, (q31_t)0xecbbaafb, (q31_t)0x7e89b668, (q31_t)0xecb574d5, (q31_t)0x7e88c3d5, (q31_t)0xecaf3ebc, (q31_t)0x7e87d0f5, (q31_t)0xeca908ae,\n  (q31_t)0x7e86ddc6, (q31_t)0xeca2d2ad, (q31_t)0x7e85ea49, (q31_t)0xec9c9cb7, (q31_t)0x7e84f67e, (q31_t)0xec9666cd, (q31_t)0x7e840265, (q31_t)0xec9030f0,\n  (q31_t)0x7e830dff, (q31_t)0xec89fb1e, (q31_t)0x7e82194a, (q31_t)0xec83c558, (q31_t)0x7e812447, (q31_t)0xec7d8f9e, (q31_t)0x7e802ef6, (q31_t)0xec7759f1,\n  (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e7e436a, (q31_t)0xec6aeeba, (q31_t)0x7e7d4d2f, (q31_t)0xec64b930, (q31_t)0x7e7c56a5, (q31_t)0xec5e83b3,\n  (q31_t)0x7e7b5fce, (q31_t)0xec584e41, (q31_t)0x7e7a68a9, (q31_t)0xec5218dc, (q31_t)0x7e797136, (q31_t)0xec4be383, (q31_t)0x7e787975, (q31_t)0xec45ae36,\n  (q31_t)0x7e778166, (q31_t)0xec3f78f6, (q31_t)0x7e768908, (q31_t)0xec3943c1, (q31_t)0x7e75905d, (q31_t)0xec330e99, (q31_t)0x7e749764, (q31_t)0xec2cd97d,\n  (q31_t)0x7e739e1d, (q31_t)0xec26a46d, (q31_t)0x7e72a488, (q31_t)0xec206f69, (q31_t)0x7e71aaa4, (q31_t)0xec1a3a72, (q31_t)0x7e70b073, (q31_t)0xec140587,\n  (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, (q31_t)0x7e6ebb27, (q31_t)0xec079bd6, (q31_t)0x7e6dc00c, (q31_t)0xec01670f, (q31_t)0x7e6cc4a2, (q31_t)0xebfb3256,\n  (q31_t)0x7e6bc8eb, (q31_t)0xebf4fda8, (q31_t)0x7e6acce6, (q31_t)0xebeec907, (q31_t)0x7e69d093, (q31_t)0xebe89472, (q31_t)0x7e68d3f2, (q31_t)0xebe25fea,\n  (q31_t)0x7e67d703, (q31_t)0xebdc2b6e, (q31_t)0x7e66d9c6, (q31_t)0xebd5f6fe, (q31_t)0x7e65dc3b, (q31_t)0xebcfc29b, (q31_t)0x7e64de62, (q31_t)0xebc98e45,\n  (q31_t)0x7e63e03b, (q31_t)0xebc359fb, (q31_t)0x7e62e1c6, (q31_t)0xebbd25bd, (q31_t)0x7e61e303, (q31_t)0xebb6f18c, (q31_t)0x7e60e3f2, (q31_t)0xebb0bd67,\n  (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e5ee4e6, (q31_t)0xeba45543, (q31_t)0x7e5de4ec, (q31_t)0xeb9e2144, (q31_t)0x7e5ce4a3, (q31_t)0xeb97ed52,\n  (q31_t)0x7e5be40c, (q31_t)0xeb91b96c, (q31_t)0x7e5ae328, (q31_t)0xeb8b8593, (q31_t)0x7e59e1f5, (q31_t)0xeb8551c6, (q31_t)0x7e58e075, (q31_t)0xeb7f1e06,\n  (q31_t)0x7e57dea7, (q31_t)0xeb78ea52, (q31_t)0x7e56dc8a, (q31_t)0xeb72b6ac, (q31_t)0x7e55da20, (q31_t)0xeb6c8312, (q31_t)0x7e54d768, (q31_t)0xeb664f84,\n  (q31_t)0x7e53d462, (q31_t)0xeb601c04, (q31_t)0x7e52d10e, (q31_t)0xeb59e890, (q31_t)0x7e51cd6c, (q31_t)0xeb53b529, (q31_t)0x7e50c97c, (q31_t)0xeb4d81ce,\n  (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e4ec0b2, (q31_t)0xeb411b40, (q31_t)0x7e4dbbd9, (q31_t)0xeb3ae80c, (q31_t)0x7e4cb6b1, (q31_t)0xeb34b4e4,\n  (q31_t)0x7e4bb13c, (q31_t)0xeb2e81ca, (q31_t)0x7e4aab78, (q31_t)0xeb284ebc, (q31_t)0x7e49a567, (q31_t)0xeb221bbb, (q31_t)0x7e489f08, (q31_t)0xeb1be8c8,\n  (q31_t)0x7e47985b, (q31_t)0xeb15b5e1, (q31_t)0x7e469160, (q31_t)0xeb0f8307, (q31_t)0x7e458a17, (q31_t)0xeb095039, (q31_t)0x7e448281, (q31_t)0xeb031d79,\n  (q31_t)0x7e437a9c, (q31_t)0xeafceac6, (q31_t)0x7e427269, (q31_t)0xeaf6b81f, (q31_t)0x7e4169e9, (q31_t)0xeaf08586, (q31_t)0x7e40611b, (q31_t)0xeaea52fa,\n  (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e3e4e95, (q31_t)0xeaddee08, (q31_t)0x7e3d44dd, (q31_t)0xead7bba3, (q31_t)0x7e3c3ad7, (q31_t)0xead1894b,\n  (q31_t)0x7e3b3083, (q31_t)0xeacb56ff, (q31_t)0x7e3a25e2, (q31_t)0xeac524c1, (q31_t)0x7e391af3, (q31_t)0xeabef290, (q31_t)0x7e380fb5, (q31_t)0xeab8c06c,\n  (q31_t)0x7e37042a, (q31_t)0xeab28e56, (q31_t)0x7e35f851, (q31_t)0xeaac5c4c, (q31_t)0x7e34ec2b, (q31_t)0xeaa62a4f, (q31_t)0x7e33dfb6, (q31_t)0xea9ff860,\n  (q31_t)0x7e32d2f4, (q31_t)0xea99c67e, (q31_t)0x7e31c5e3, (q31_t)0xea9394a9, (q31_t)0x7e30b885, (q31_t)0xea8d62e1, (q31_t)0x7e2faad9, (q31_t)0xea873127,\n  (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, (q31_t)0x7e2d8e97, (q31_t)0xea7acdda, (q31_t)0x7e2c8002, (q31_t)0xea749c47, (q31_t)0x7e2b711f, (q31_t)0xea6e6ac2,\n  (q31_t)0x7e2a61ed, (q31_t)0xea683949, (q31_t)0x7e29526e, (q31_t)0xea6207df, (q31_t)0x7e2842a2, (q31_t)0xea5bd681, (q31_t)0x7e273287, (q31_t)0xea55a531,\n  (q31_t)0x7e26221f, (q31_t)0xea4f73ee, (q31_t)0x7e251168, (q31_t)0xea4942b9, (q31_t)0x7e240064, (q31_t)0xea431191, (q31_t)0x7e22ef12, (q31_t)0xea3ce077,\n  (q31_t)0x7e21dd73, (q31_t)0xea36af69, (q31_t)0x7e20cb85, (q31_t)0xea307e6a, (q31_t)0x7e1fb94a, (q31_t)0xea2a4d78, (q31_t)0x7e1ea6c1, (q31_t)0xea241c93,\n  (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e1c80c5, (q31_t)0xea17baf2, (q31_t)0x7e1b6d53, (q31_t)0xea118a35, (q31_t)0x7e1a5992, (q31_t)0xea0b5987,\n  (q31_t)0x7e194584, (q31_t)0xea0528e5, (q31_t)0x7e183128, (q31_t)0xe9fef852, (q31_t)0x7e171c7f, (q31_t)0xe9f8c7cc, (q31_t)0x7e160787, (q31_t)0xe9f29753,\n  (q31_t)0x7e14f242, (q31_t)0xe9ec66e8, (q31_t)0x7e13dcaf, (q31_t)0xe9e6368b, (q31_t)0x7e12c6ce, (q31_t)0xe9e0063c, (q31_t)0x7e11b0a0, (q31_t)0xe9d9d5fa,\n  (q31_t)0x7e109a24, (q31_t)0xe9d3a5c5, (q31_t)0x7e0f835a, (q31_t)0xe9cd759f, (q31_t)0x7e0e6c42, (q31_t)0xe9c74586, (q31_t)0x7e0d54dc, (q31_t)0xe9c1157a,\n  (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7e0b2528, (q31_t)0xe9b4b58d, (q31_t)0x7e0a0cd9, (q31_t)0xe9ae85ab, (q31_t)0x7e08f43d, (q31_t)0xe9a855d7,\n  (q31_t)0x7e07db52, (q31_t)0xe9a22610, (q31_t)0x7e06c21a, (q31_t)0xe99bf658, (q31_t)0x7e05a894, (q31_t)0xe995c6ad, (q31_t)0x7e048ec1, (q31_t)0xe98f9710,\n  (q31_t)0x7e0374a0, (q31_t)0xe9896781, (q31_t)0x7e025a31, (q31_t)0xe98337ff, (q31_t)0x7e013f74, (q31_t)0xe97d088c, (q31_t)0x7e00246a, (q31_t)0xe976d926,\n  (q31_t)0x7dff0911, (q31_t)0xe970a9ce, (q31_t)0x7dfded6c, (q31_t)0xe96a7a85, (q31_t)0x7dfcd178, (q31_t)0xe9644b49, (q31_t)0x7dfbb537, (q31_t)0xe95e1c1b,\n  (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7df97bcb, (q31_t)0xe951bde9, (q31_t)0x7df85ea0, (q31_t)0xe94b8ee5, (q31_t)0x7df74128, (q31_t)0xe9455fef,\n  (q31_t)0x7df62362, (q31_t)0xe93f3107, (q31_t)0x7df5054f, (q31_t)0xe939022d, (q31_t)0x7df3e6ee, (q31_t)0xe932d361, (q31_t)0x7df2c83f, (q31_t)0xe92ca4a4,\n  (q31_t)0x7df1a942, (q31_t)0xe92675f4, (q31_t)0x7df089f8, (q31_t)0xe9204752, (q31_t)0x7def6a60, (q31_t)0xe91a18bf, (q31_t)0x7dee4a7a, (q31_t)0xe913ea39,\n  (q31_t)0x7ded2a47, (q31_t)0xe90dbbc2, (q31_t)0x7dec09c6, (q31_t)0xe9078d59, (q31_t)0x7deae8f7, (q31_t)0xe9015efe, (q31_t)0x7de9c7da, (q31_t)0xe8fb30b1,\n  (q31_t)0x7de8a670, (q31_t)0xe8f50273, (q31_t)0x7de784b9, (q31_t)0xe8eed443, (q31_t)0x7de662b3, (q31_t)0xe8e8a621, (q31_t)0x7de54060, (q31_t)0xe8e2780d,\n  (q31_t)0x7de41dc0, (q31_t)0xe8dc4a07, (q31_t)0x7de2fad1, (q31_t)0xe8d61c10, (q31_t)0x7de1d795, (q31_t)0xe8cfee27, (q31_t)0x7de0b40b, (q31_t)0xe8c9c04c,\n  (q31_t)0x7ddf9034, (q31_t)0xe8c39280, (q31_t)0x7dde6c0f, (q31_t)0xe8bd64c2, (q31_t)0x7ddd479d, (q31_t)0xe8b73712, (q31_t)0x7ddc22dc, (q31_t)0xe8b10971,\n  (q31_t)0x7ddafdce, (q31_t)0xe8aadbde, (q31_t)0x7dd9d873, (q31_t)0xe8a4ae59, (q31_t)0x7dd8b2ca, (q31_t)0xe89e80e3, (q31_t)0x7dd78cd3, (q31_t)0xe898537b,\n  (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dd53ffc, (q31_t)0xe88bf8d7, (q31_t)0x7dd4191d, (q31_t)0xe885cb9a, (q31_t)0x7dd2f1f0, (q31_t)0xe87f9e6c,\n  (q31_t)0x7dd1ca75, (q31_t)0xe879714d, (q31_t)0x7dd0a2ac, (q31_t)0xe873443c, (q31_t)0x7dcf7a96, (q31_t)0xe86d173a, (q31_t)0x7dce5232, (q31_t)0xe866ea46,\n  (q31_t)0x7dcd2981, (q31_t)0xe860bd61, (q31_t)0x7dcc0082, (q31_t)0xe85a908a, (q31_t)0x7dcad736, (q31_t)0xe85463c2, (q31_t)0x7dc9ad9c, (q31_t)0xe84e3708,\n  (q31_t)0x7dc883b4, (q31_t)0xe8480a5d, (q31_t)0x7dc7597f, (q31_t)0xe841ddc1, (q31_t)0x7dc62efc, (q31_t)0xe83bb133, (q31_t)0x7dc5042b, (q31_t)0xe83584b4,\n  (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7dc2ada2, (q31_t)0xe8292be3, (q31_t)0x7dc181e8, (q31_t)0xe822ff90, (q31_t)0x7dc055e2, (q31_t)0xe81cd34b,\n  (q31_t)0x7dbf298d, (q31_t)0xe816a716, (q31_t)0x7dbdfceb, (q31_t)0xe8107aef, (q31_t)0x7dbccffc, (q31_t)0xe80a4ed7, (q31_t)0x7dbba2bf, (q31_t)0xe80422ce,\n  (q31_t)0x7dba7534, (q31_t)0xe7fdf6d4, (q31_t)0x7db9475c, (q31_t)0xe7f7cae8, (q31_t)0x7db81936, (q31_t)0xe7f19f0c, (q31_t)0x7db6eac3, (q31_t)0xe7eb733e,\n  (q31_t)0x7db5bc02, (q31_t)0xe7e5477f, (q31_t)0x7db48cf4, (q31_t)0xe7df1bcf, (q31_t)0x7db35d98, (q31_t)0xe7d8f02d, (q31_t)0x7db22def, (q31_t)0xe7d2c49b,\n  (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7dafcdb3, (q31_t)0xe7c66da3, (q31_t)0x7dae9d21, (q31_t)0xe7c0423d, (q31_t)0x7dad6c42, (q31_t)0xe7ba16e7,\n  (q31_t)0x7dac3b15, (q31_t)0xe7b3eb9f, (q31_t)0x7dab099a, (q31_t)0xe7adc066, (q31_t)0x7da9d7d2, (q31_t)0xe7a7953d, (q31_t)0x7da8a5bc, (q31_t)0xe7a16a22,\n  (q31_t)0x7da77359, (q31_t)0xe79b3f16, (q31_t)0x7da640a9, (q31_t)0xe795141a, (q31_t)0x7da50dab, (q31_t)0xe78ee92c, (q31_t)0x7da3da5f, (q31_t)0xe788be4e,\n  (q31_t)0x7da2a6c6, (q31_t)0xe782937e, (q31_t)0x7da172df, (q31_t)0xe77c68be, (q31_t)0x7da03eab, (q31_t)0xe7763e0d, (q31_t)0x7d9f0a29, (q31_t)0xe770136b,\n  (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, (q31_t)0x7d9ca03e, (q31_t)0xe763be55, (q31_t)0x7d9b6ad3, (q31_t)0xe75d93e0, (q31_t)0x7d9a351c, (q31_t)0xe757697b,\n  (q31_t)0x7d98ff17, (q31_t)0xe7513f25, (q31_t)0x7d97c8c4, (q31_t)0xe74b14de, (q31_t)0x7d969224, (q31_t)0xe744eaa6, (q31_t)0x7d955b37, (q31_t)0xe73ec07e,\n  (q31_t)0x7d9423fc, (q31_t)0xe7389665, (q31_t)0x7d92ec73, (q31_t)0xe7326c5b, (q31_t)0x7d91b49e, (q31_t)0xe72c4260, (q31_t)0x7d907c7a, (q31_t)0xe7261875,\n  (q31_t)0x7d8f4409, (q31_t)0xe71fee99, (q31_t)0x7d8e0b4b, (q31_t)0xe719c4cd, (q31_t)0x7d8cd240, (q31_t)0xe7139b10, (q31_t)0x7d8b98e6, (q31_t)0xe70d7162,\n  (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d89254c, (q31_t)0xe7011e35, (q31_t)0x7d87eb0a, (q31_t)0xe6faf4b5, (q31_t)0x7d86b07c, (q31_t)0xe6f4cb45,\n  (q31_t)0x7d85759f, (q31_t)0xe6eea1e4, (q31_t)0x7d843a76, (q31_t)0xe6e87893, (q31_t)0x7d82fefe, (q31_t)0xe6e24f51, (q31_t)0x7d81c33a, (q31_t)0xe6dc261f,\n  (q31_t)0x7d808728, (q31_t)0xe6d5fcfc, (q31_t)0x7d7f4ac8, (q31_t)0xe6cfd3e9, (q31_t)0x7d7e0e1c, (q31_t)0xe6c9aae5, (q31_t)0x7d7cd121, (q31_t)0xe6c381f1,\n  (q31_t)0x7d7b93da, (q31_t)0xe6bd590d, (q31_t)0x7d7a5645, (q31_t)0xe6b73038, (q31_t)0x7d791862, (q31_t)0xe6b10772, (q31_t)0x7d77da32, (q31_t)0xe6aadebc,\n  (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d755cea, (q31_t)0xe69e8d80, (q31_t)0x7d741dd2, (q31_t)0xe69864f9, (q31_t)0x7d72de6d, (q31_t)0xe6923c82,\n  (q31_t)0x7d719eba, (q31_t)0xe68c141a, (q31_t)0x7d705eba, (q31_t)0xe685ebc2, (q31_t)0x7d6f1e6c, (q31_t)0xe67fc37a, (q31_t)0x7d6dddd2, (q31_t)0xe6799b42,\n  (q31_t)0x7d6c9ce9, (q31_t)0xe6737319, (q31_t)0x7d6b5bb4, (q31_t)0xe66d4b01, (q31_t)0x7d6a1a31, (q31_t)0xe66722f7, (q31_t)0x7d68d860, (q31_t)0xe660fafe,\n  (q31_t)0x7d679642, (q31_t)0xe65ad315, (q31_t)0x7d6653d7, (q31_t)0xe654ab3b, (q31_t)0x7d65111f, (q31_t)0xe64e8371, (q31_t)0x7d63ce19, (q31_t)0xe6485bb7,\n  (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d614725, (q31_t)0xe63c0c73, (q31_t)0x7d600338, (q31_t)0xe635e4e9, (q31_t)0x7d5ebefc, (q31_t)0xe62fbd6e,\n  (q31_t)0x7d5d7a74, (q31_t)0xe6299604, (q31_t)0x7d5c359e, (q31_t)0xe6236ea9, (q31_t)0x7d5af07b, (q31_t)0xe61d475e, (q31_t)0x7d59ab0a, (q31_t)0xe6172024,\n  (q31_t)0x7d58654d, (q31_t)0xe610f8f9, (q31_t)0x7d571f41, (q31_t)0xe60ad1de, (q31_t)0x7d55d8e9, (q31_t)0xe604aad4, (q31_t)0x7d549243, (q31_t)0xe5fe83d9,\n  (q31_t)0x7d534b50, (q31_t)0xe5f85cef, (q31_t)0x7d520410, (q31_t)0xe5f23614, (q31_t)0x7d50bc82, (q31_t)0xe5ec0f4a, (q31_t)0x7d4f74a7, (q31_t)0xe5e5e88f,\n  (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, (q31_t)0x7d4ce409, (q31_t)0xe5d99b4b, (q31_t)0x7d4b9b46, (q31_t)0xe5d374c1, (q31_t)0x7d4a5236, (q31_t)0xe5cd4e47,\n  (q31_t)0x7d4908d9, (q31_t)0xe5c727dd, (q31_t)0x7d47bf2e, (q31_t)0xe5c10184, (q31_t)0x7d467536, (q31_t)0xe5badb3a, (q31_t)0x7d452af1, (q31_t)0xe5b4b501,\n  (q31_t)0x7d43e05e, (q31_t)0xe5ae8ed8, (q31_t)0x7d42957e, (q31_t)0xe5a868bf, (q31_t)0x7d414a51, (q31_t)0xe5a242b7, (q31_t)0x7d3ffed7, (q31_t)0xe59c1cbf,\n  (q31_t)0x7d3eb30f, (q31_t)0xe595f6d7, (q31_t)0x7d3d66fa, (q31_t)0xe58fd0ff, (q31_t)0x7d3c1a98, (q31_t)0xe589ab38, (q31_t)0x7d3acde9, (q31_t)0xe5838581,\n  (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d3833a2, (q31_t)0xe5773a44, (q31_t)0x7d36e60b, (q31_t)0xe57114be, (q31_t)0x7d359827, (q31_t)0xe56aef49,\n  (q31_t)0x7d3449f5, (q31_t)0xe564c9e3, (q31_t)0x7d32fb76, (q31_t)0xe55ea48f, (q31_t)0x7d31acaa, (q31_t)0xe5587f4a, (q31_t)0x7d305d91, (q31_t)0xe5525a17,\n  (q31_t)0x7d2f0e2b, (q31_t)0xe54c34f3, (q31_t)0x7d2dbe77, (q31_t)0xe5460fe0, (q31_t)0x7d2c6e76, (q31_t)0xe53feade, (q31_t)0x7d2b1e28, (q31_t)0xe539c5ec,\n  (q31_t)0x7d29cd8c, (q31_t)0xe533a10a, (q31_t)0x7d287ca4, (q31_t)0xe52d7c39, (q31_t)0x7d272b6e, (q31_t)0xe5275779, (q31_t)0x7d25d9eb, (q31_t)0xe52132c9,\n  (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d2335fe, (q31_t)0xe514e99b, (q31_t)0x7d21e393, (q31_t)0xe50ec51d, (q31_t)0x7d2090db, (q31_t)0xe508a0b0,\n  (q31_t)0x7d1f3dd6, (q31_t)0xe5027c53, (q31_t)0x7d1dea84, (q31_t)0xe4fc5807, (q31_t)0x7d1c96e5, (q31_t)0xe4f633cc, (q31_t)0x7d1b42f9, (q31_t)0xe4f00fa1,\n  (q31_t)0x7d19eebf, (q31_t)0xe4e9eb87, (q31_t)0x7d189a38, (q31_t)0xe4e3c77d, (q31_t)0x7d174564, (q31_t)0xe4dda385, (q31_t)0x7d15f043, (q31_t)0xe4d77f9d,\n  (q31_t)0x7d149ad5, (q31_t)0xe4d15bc6, (q31_t)0x7d134519, (q31_t)0xe4cb37ff, (q31_t)0x7d11ef11, (q31_t)0xe4c5144a, (q31_t)0x7d1098bb, (q31_t)0xe4bef0a5,\n  (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7d0deb28, (q31_t)0xe4b2a98e, (q31_t)0x7d0c93eb, (q31_t)0xe4ac861b, (q31_t)0x7d0b3c60, (q31_t)0xe4a662ba,\n  (q31_t)0x7d09e489, (q31_t)0xe4a03f69, (q31_t)0x7d088c64, (q31_t)0xe49a1c29, (q31_t)0x7d0733f3, (q31_t)0xe493f8fb, (q31_t)0x7d05db34, (q31_t)0xe48dd5dd,\n  (q31_t)0x7d048228, (q31_t)0xe487b2d0, (q31_t)0x7d0328cf, (q31_t)0xe4818fd4, (q31_t)0x7d01cf29, (q31_t)0xe47b6ce9, (q31_t)0x7d007535, (q31_t)0xe4754a0e,\n  (q31_t)0x7cff1af5, (q31_t)0xe46f2745, (q31_t)0x7cfdc068, (q31_t)0xe469048d, (q31_t)0x7cfc658d, (q31_t)0xe462e1e6, (q31_t)0x7cfb0a65, (q31_t)0xe45cbf50,\n  (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, (q31_t)0x7cf8532f, (q31_t)0xe4507a57, (q31_t)0x7cf6f720, (q31_t)0xe44a57f4, (q31_t)0x7cf59ac4, (q31_t)0xe44435a2,\n  (q31_t)0x7cf43e1a, (q31_t)0xe43e1362, (q31_t)0x7cf2e124, (q31_t)0xe437f132, (q31_t)0x7cf183e1, (q31_t)0xe431cf14, (q31_t)0x7cf02651, (q31_t)0xe42bad07,\n  (q31_t)0x7ceec873, (q31_t)0xe4258b0a, (q31_t)0x7ced6a49, (q31_t)0xe41f6920, (q31_t)0x7cec0bd1, (q31_t)0xe4194746, (q31_t)0x7ceaad0c, (q31_t)0xe413257d,\n  (q31_t)0x7ce94dfb, (q31_t)0xe40d03c6, (q31_t)0x7ce7ee9c, (q31_t)0xe406e220, (q31_t)0x7ce68ef0, (q31_t)0xe400c08b, (q31_t)0x7ce52ef7, (q31_t)0xe3fa9f08,\n  (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7ce26e1f, (q31_t)0xe3ee5c35, (q31_t)0x7ce10d3f, (q31_t)0xe3e83ae5, (q31_t)0x7cdfac12, (q31_t)0xe3e219a7,\n  (q31_t)0x7cde4a98, (q31_t)0xe3dbf87a, (q31_t)0x7cdce8d1, (q31_t)0xe3d5d75e, (q31_t)0x7cdb86bd, (q31_t)0xe3cfb654, (q31_t)0x7cda245c, (q31_t)0xe3c9955b,\n  (q31_t)0x7cd8c1ae, (q31_t)0xe3c37474, (q31_t)0x7cd75eb3, (q31_t)0xe3bd539e, (q31_t)0x7cd5fb6a, (q31_t)0xe3b732d9, (q31_t)0x7cd497d5, (q31_t)0xe3b11226,\n  (q31_t)0x7cd333f3, (q31_t)0xe3aaf184, (q31_t)0x7cd1cfc4, (q31_t)0xe3a4d0f4, (q31_t)0x7cd06b48, (q31_t)0xe39eb075, (q31_t)0x7ccf067f, (q31_t)0xe3989008,\n  (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7ccc3c06, (q31_t)0xe38c4f63, (q31_t)0x7ccad656, (q31_t)0xe3862f2a, (q31_t)0x7cc97059, (q31_t)0xe3800f03,\n  (q31_t)0x7cc80a0f, (q31_t)0xe379eeed, (q31_t)0x7cc6a378, (q31_t)0xe373ceea, (q31_t)0x7cc53c94, (q31_t)0xe36daef7, (q31_t)0x7cc3d563, (q31_t)0xe3678f17,\n  (q31_t)0x7cc26de5, (q31_t)0xe3616f48, (q31_t)0x7cc1061a, (q31_t)0xe35b4f8b, (q31_t)0x7cbf9e03, (q31_t)0xe3552fdf, (q31_t)0x7cbe359e, (q31_t)0xe34f1045,\n  (q31_t)0x7cbcccec, (q31_t)0xe348f0bd, (q31_t)0x7cbb63ee, (q31_t)0xe342d146, (q31_t)0x7cb9faa2, (q31_t)0xe33cb1e1, (q31_t)0x7cb8910a, (q31_t)0xe336928e,\n  (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7cb5bcf2, (q31_t)0xe32a541d, (q31_t)0x7cb45272, (q31_t)0xe3243500, (q31_t)0x7cb2e7a6, (q31_t)0xe31e15f4,\n  (q31_t)0x7cb17c8d, (q31_t)0xe317f6fa, (q31_t)0x7cb01127, (q31_t)0xe311d811, (q31_t)0x7caea574, (q31_t)0xe30bb93b, (q31_t)0x7cad3974, (q31_t)0xe3059a76,\n  (q31_t)0x7cabcd28, (q31_t)0xe2ff7bc3, (q31_t)0x7caa608e, (q31_t)0xe2f95d23, (q31_t)0x7ca8f3a7, (q31_t)0xe2f33e94, (q31_t)0x7ca78674, (q31_t)0xe2ed2017,\n  (q31_t)0x7ca618f3, (q31_t)0xe2e701ac, (q31_t)0x7ca4ab26, (q31_t)0xe2e0e352, (q31_t)0x7ca33d0c, (q31_t)0xe2dac50b, (q31_t)0x7ca1cea5, (q31_t)0xe2d4a6d6,\n  (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, (q31_t)0x7c9ef0f0, (q31_t)0xe2c86aa2, (q31_t)0x7c9d81a3, (q31_t)0xe2c24ca2, (q31_t)0x7c9c1208, (q31_t)0xe2bc2eb5,\n  (q31_t)0x7c9aa221, (q31_t)0xe2b610da, (q31_t)0x7c9931ec, (q31_t)0xe2aff311, (q31_t)0x7c97c16b, (q31_t)0xe2a9d55a, (q31_t)0x7c96509d, (q31_t)0xe2a3b7b5,\n  (q31_t)0x7c94df83, (q31_t)0xe29d9a23, (q31_t)0x7c936e1b, (q31_t)0xe2977ca2, (q31_t)0x7c91fc66, (q31_t)0xe2915f34, (q31_t)0x7c908a65, (q31_t)0xe28b41d7,\n  (q31_t)0x7c8f1817, (q31_t)0xe285248d, (q31_t)0x7c8da57c, (q31_t)0xe27f0755, (q31_t)0x7c8c3294, (q31_t)0xe278ea30, (q31_t)0x7c8abf5f, (q31_t)0xe272cd1c,\n  (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c87d810, (q31_t)0xe266932c, (q31_t)0x7c8663f4, (q31_t)0xe260764f, (q31_t)0x7c84ef8c, (q31_t)0xe25a5984,\n  (q31_t)0x7c837ad8, (q31_t)0xe2543ccc, (q31_t)0x7c8205d6, (q31_t)0xe24e2026, (q31_t)0x7c809088, (q31_t)0xe2480393, (q31_t)0x7c7f1aed, (q31_t)0xe241e711,\n  (q31_t)0x7c7da505, (q31_t)0xe23bcaa2, (q31_t)0x7c7c2ed0, (q31_t)0xe235ae46, (q31_t)0x7c7ab84e, (q31_t)0xe22f91fc, (q31_t)0x7c794180, (q31_t)0xe22975c4,\n  (q31_t)0x7c77ca65, (q31_t)0xe223599e, (q31_t)0x7c7652fd, (q31_t)0xe21d3d8b, (q31_t)0x7c74db48, (q31_t)0xe217218b, (q31_t)0x7c736347, (q31_t)0xe211059d,\n  (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c70725e, (q31_t)0xe204cdf8, (q31_t)0x7c6ef976, (q31_t)0xe1feb241, (q31_t)0x7c6d8041, (q31_t)0xe1f8969d,\n  (q31_t)0x7c6c06c0, (q31_t)0xe1f27b0b, (q31_t)0x7c6a8cf2, (q31_t)0xe1ec5f8c, (q31_t)0x7c6912d7, (q31_t)0xe1e64420, (q31_t)0x7c679870, (q31_t)0xe1e028c6,\n  (q31_t)0x7c661dbc, (q31_t)0xe1da0d7e, (q31_t)0x7c64a2bb, (q31_t)0xe1d3f24a, (q31_t)0x7c63276d, (q31_t)0xe1cdd727, (q31_t)0x7c61abd3, (q31_t)0xe1c7bc18,\n  (q31_t)0x7c602fec, (q31_t)0xe1c1a11b, (q31_t)0x7c5eb3b8, (q31_t)0xe1bb8631, (q31_t)0x7c5d3737, (q31_t)0xe1b56b59, (q31_t)0x7c5bba6a, (q31_t)0xe1af5094,\n  (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c58bfe9, (q31_t)0xe1a31b42, (q31_t)0x7c574236, (q31_t)0xe19d00b6, (q31_t)0x7c55c436, (q31_t)0xe196e63c,\n  (q31_t)0x7c5445e9, (q31_t)0xe190cbd4, (q31_t)0x7c52c74f, (q31_t)0xe18ab180, (q31_t)0x7c514869, (q31_t)0xe184973e, (q31_t)0x7c4fc936, (q31_t)0xe17e7d0f,\n  (q31_t)0x7c4e49b7, (q31_t)0xe17862f3, (q31_t)0x7c4cc9ea, (q31_t)0xe17248ea, (q31_t)0x7c4b49d2, (q31_t)0xe16c2ef4, (q31_t)0x7c49c96c, (q31_t)0xe1661510,\n  (q31_t)0x7c4848ba, (q31_t)0xe15ffb3f, (q31_t)0x7c46c7bb, (q31_t)0xe159e182, (q31_t)0x7c45466f, (q31_t)0xe153c7d7, (q31_t)0x7c43c4d7, (q31_t)0xe14dae3f,\n  (q31_t)0x7c4242f2, (q31_t)0xe14794ba, (q31_t)0x7c40c0c1, (q31_t)0xe1417b48, (q31_t)0x7c3f3e42, (q31_t)0xe13b61e9, (q31_t)0x7c3dbb78, (q31_t)0xe135489d,\n  (q31_t)0x7c3c3860, (q31_t)0xe12f2f63, (q31_t)0x7c3ab4fc, (q31_t)0xe129163d, (q31_t)0x7c39314b, (q31_t)0xe122fd2a, (q31_t)0x7c37ad4e, (q31_t)0xe11ce42a,\n  (q31_t)0x7c362904, (q31_t)0xe116cb3d, (q31_t)0x7c34a46d, (q31_t)0xe110b263, (q31_t)0x7c331f8a, (q31_t)0xe10a999c, (q31_t)0x7c319a5a, (q31_t)0xe10480e9,\n  (q31_t)0x7c3014de, (q31_t)0xe0fe6848, (q31_t)0x7c2e8f15, (q31_t)0xe0f84fbb, (q31_t)0x7c2d08ff, (q31_t)0xe0f23740, (q31_t)0x7c2b829d, (q31_t)0xe0ec1ed9,\n  (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c2874f3, (q31_t)0xe0dfee44, (q31_t)0x7c26edab, (q31_t)0xe0d9d616, (q31_t)0x7c256616, (q31_t)0xe0d3bdfc,\n  (q31_t)0x7c23de35, (q31_t)0xe0cda5f5, (q31_t)0x7c225607, (q31_t)0xe0c78e01, (q31_t)0x7c20cd8d, (q31_t)0xe0c17620, (q31_t)0x7c1f44c6, (q31_t)0xe0bb5e53,\n  (q31_t)0x7c1dbbb3, (q31_t)0xe0b54698, (q31_t)0x7c1c3253, (q31_t)0xe0af2ef2, (q31_t)0x7c1aa8a6, (q31_t)0xe0a9175e, (q31_t)0x7c191ead, (q31_t)0xe0a2ffde,\n  (q31_t)0x7c179467, (q31_t)0xe09ce871, (q31_t)0x7c1609d5, (q31_t)0xe096d117, (q31_t)0x7c147ef6, (q31_t)0xe090b9d1, (q31_t)0x7c12f3cb, (q31_t)0xe08aa29f,\n  (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7c0fdc8f, (q31_t)0xe07e7473, (q31_t)0x7c0e507e, (q31_t)0xe0785d7b, (q31_t)0x7c0cc421, (q31_t)0xe0724696,\n  (q31_t)0x7c0b3777, (q31_t)0xe06c2fc4, (q31_t)0x7c09aa80, (q31_t)0xe0661906, (q31_t)0x7c081d3d, (q31_t)0xe060025c, (q31_t)0x7c068fae, (q31_t)0xe059ebc5,\n  (q31_t)0x7c0501d2, (q31_t)0xe053d541, (q31_t)0x7c0373a9, (q31_t)0xe04dbed1, (q31_t)0x7c01e534, (q31_t)0xe047a875, (q31_t)0x7c005673, (q31_t)0xe041922c,\n  (q31_t)0x7bfec765, (q31_t)0xe03b7bf6, (q31_t)0x7bfd380a, (q31_t)0xe03565d5, (q31_t)0x7bfba863, (q31_t)0xe02f4fc6, (q31_t)0x7bfa1870, (q31_t)0xe02939cc,\n  (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bf6f7a4, (q31_t)0xe01d0e12, (q31_t)0x7bf566cb, (q31_t)0xe016f852, (q31_t)0x7bf3d5a6, (q31_t)0xe010e2a7,\n  (q31_t)0x7bf24434, (q31_t)0xe00acd0e, (q31_t)0x7bf0b276, (q31_t)0xe004b78a, (q31_t)0x7bef206b, (q31_t)0xdffea219, (q31_t)0x7bed8e14, (q31_t)0xdff88cbc,\n  (q31_t)0x7bebfb70, (q31_t)0xdff27773, (q31_t)0x7bea6880, (q31_t)0xdfec623e, (q31_t)0x7be8d544, (q31_t)0xdfe64d1c, (q31_t)0x7be741bb, (q31_t)0xdfe0380e,\n  (q31_t)0x7be5ade6, (q31_t)0xdfda2314, (q31_t)0x7be419c4, (q31_t)0xdfd40e2e, (q31_t)0x7be28556, (q31_t)0xdfcdf95c, (q31_t)0x7be0f09b, (q31_t)0xdfc7e49d,\n  (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, (q31_t)0x7bddc641, (q31_t)0xdfbbbb5c, (q31_t)0x7bdc30a1, (q31_t)0xdfb5a6d9, (q31_t)0x7bda9ab5, (q31_t)0xdfaf926a,\n  (q31_t)0x7bd9047c, (q31_t)0xdfa97e0f, (q31_t)0x7bd76df7, (q31_t)0xdfa369c8, (q31_t)0x7bd5d726, (q31_t)0xdf9d5595, (q31_t)0x7bd44008, (q31_t)0xdf974176,\n  (q31_t)0x7bd2a89e, (q31_t)0xdf912d6b, (q31_t)0x7bd110e8, (q31_t)0xdf8b1974, (q31_t)0x7bcf78e5, (q31_t)0xdf850591, (q31_t)0x7bcde095, (q31_t)0xdf7ef1c2,\n  (q31_t)0x7bcc47fa, (q31_t)0xdf78de07, (q31_t)0x7bcaaf12, (q31_t)0xdf72ca60, (q31_t)0x7bc915dd, (q31_t)0xdf6cb6cd, (q31_t)0x7bc77c5d, (q31_t)0xdf66a34e,\n  (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bc44876, (q31_t)0xdf5a7c8d, (q31_t)0x7bc2ae10, (q31_t)0xdf54694b, (q31_t)0x7bc1135e, (q31_t)0xdf4e561c,\n  (q31_t)0x7bbf7860, (q31_t)0xdf484302, (q31_t)0x7bbddd15, (q31_t)0xdf422ffd, (q31_t)0x7bbc417e, (q31_t)0xdf3c1d0b, (q31_t)0x7bbaa59a, (q31_t)0xdf360a2d,\n  (q31_t)0x7bb9096b, (q31_t)0xdf2ff764, (q31_t)0x7bb76cef, (q31_t)0xdf29e4af, (q31_t)0x7bb5d026, (q31_t)0xdf23d20e, (q31_t)0x7bb43311, (q31_t)0xdf1dbf82,\n  (q31_t)0x7bb295b0, (q31_t)0xdf17ad0a, (q31_t)0x7bb0f803, (q31_t)0xdf119aa6, (q31_t)0x7baf5a09, (q31_t)0xdf0b8856, (q31_t)0x7badbbc3, (q31_t)0xdf05761b,\n  (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7baa7e53, (q31_t)0xdef951e2, (q31_t)0x7ba8df28, (q31_t)0xdef33fe3, (q31_t)0x7ba73fb1, (q31_t)0xdeed2dfa,\n  (q31_t)0x7ba59fee, (q31_t)0xdee71c24, (q31_t)0x7ba3ffde, (q31_t)0xdee10a63, (q31_t)0x7ba25f82, (q31_t)0xdedaf8b7, (q31_t)0x7ba0beda, (q31_t)0xded4e71f,\n  (q31_t)0x7b9f1de6, (q31_t)0xdeced59b, (q31_t)0x7b9d7ca5, (q31_t)0xdec8c42c, (q31_t)0x7b9bdb18, (q31_t)0xdec2b2d1, (q31_t)0x7b9a393f, (q31_t)0xdebca18b,\n  (q31_t)0x7b989719, (q31_t)0xdeb69059, (q31_t)0x7b96f4a8, (q31_t)0xdeb07f3c, (q31_t)0x7b9551ea, (q31_t)0xdeaa6e34, (q31_t)0x7b93aee0, (q31_t)0xdea45d40,\n  (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b9067e7, (q31_t)0xde983b95, (q31_t)0x7b8ec3f8, (q31_t)0xde922adf, (q31_t)0x7b8d1fbd, (q31_t)0xde8c1a3e,\n  (q31_t)0x7b8b7b36, (q31_t)0xde8609b1, (q31_t)0x7b89d662, (q31_t)0xde7ff938, (q31_t)0x7b883143, (q31_t)0xde79e8d5, (q31_t)0x7b868bd7, (q31_t)0xde73d886,\n  (q31_t)0x7b84e61f, (q31_t)0xde6dc84b, (q31_t)0x7b83401b, (q31_t)0xde67b826, (q31_t)0x7b8199ca, (q31_t)0xde61a815, (q31_t)0x7b7ff32e, (q31_t)0xde5b9819,\n  (q31_t)0x7b7e4c45, (q31_t)0xde558831, (q31_t)0x7b7ca510, (q31_t)0xde4f785f, (q31_t)0x7b7afd8f, (q31_t)0xde4968a1, (q31_t)0x7b7955c2, (q31_t)0xde4358f8,\n  (q31_t)0x7b77ada8, (q31_t)0xde3d4964, (q31_t)0x7b760542, (q31_t)0xde3739e4, (q31_t)0x7b745c91, (q31_t)0xde312a7a, (q31_t)0x7b72b393, (q31_t)0xde2b1b24,\n  (q31_t)0x7b710a49, (q31_t)0xde250be3, (q31_t)0x7b6f60b2, (q31_t)0xde1efcb7, (q31_t)0x7b6db6d0, (q31_t)0xde18eda0, (q31_t)0x7b6c0ca2, (q31_t)0xde12de9e,\n  (q31_t)0x7b6a6227, (q31_t)0xde0ccfb1, (q31_t)0x7b68b760, (q31_t)0xde06c0d9, (q31_t)0x7b670c4d, (q31_t)0xde00b216, (q31_t)0x7b6560ee, (q31_t)0xddfaa367,\n  (q31_t)0x7b63b543, (q31_t)0xddf494ce, (q31_t)0x7b62094c, (q31_t)0xddee8649, (q31_t)0x7b605d09, (q31_t)0xdde877da, (q31_t)0x7b5eb079, (q31_t)0xdde26980,\n  (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b5b5676, (q31_t)0xddd64d0a, (q31_t)0x7b59a902, (q31_t)0xddd03eef, (q31_t)0x7b57fb42, (q31_t)0xddca30e9,\n  (q31_t)0x7b564d36, (q31_t)0xddc422f8, (q31_t)0x7b549ede, (q31_t)0xddbe151d, (q31_t)0x7b52f03a, (q31_t)0xddb80756, (q31_t)0x7b51414a, (q31_t)0xddb1f9a4,\n  (q31_t)0x7b4f920e, (q31_t)0xddabec08, (q31_t)0x7b4de286, (q31_t)0xdda5de81, (q31_t)0x7b4c32b1, (q31_t)0xdd9fd10f, (q31_t)0x7b4a8291, (q31_t)0xdd99c3b2,\n  (q31_t)0x7b48d225, (q31_t)0xdd93b66a, (q31_t)0x7b47216c, (q31_t)0xdd8da938, (q31_t)0x7b457068, (q31_t)0xdd879c1b, (q31_t)0x7b43bf17, (q31_t)0xdd818f13,\n  (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b405b92, (q31_t)0xdd757543, (q31_t)0x7b3ea95d, (q31_t)0xdd6f687b, (q31_t)0x7b3cf6dc, (q31_t)0xdd695bc9,\n  (q31_t)0x7b3b4410, (q31_t)0xdd634f2b, (q31_t)0x7b3990f7, (q31_t)0xdd5d42a3, (q31_t)0x7b37dd92, (q31_t)0xdd573631, (q31_t)0x7b3629e1, (q31_t)0xdd5129d4,\n  (q31_t)0x7b3475e5, (q31_t)0xdd4b1d8c, (q31_t)0x7b32c19c, (q31_t)0xdd451159, (q31_t)0x7b310d07, (q31_t)0xdd3f053c, (q31_t)0x7b2f5826, (q31_t)0xdd38f935,\n  (q31_t)0x7b2da2fa, (q31_t)0xdd32ed43, (q31_t)0x7b2bed81, (q31_t)0xdd2ce166, (q31_t)0x7b2a37bc, (q31_t)0xdd26d59f, (q31_t)0x7b2881ac, (q31_t)0xdd20c9ed,\n  (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b2514a6, (q31_t)0xdd14b2ca, (q31_t)0x7b235db2, (q31_t)0xdd0ea759, (q31_t)0x7b21a671, (q31_t)0xdd089bfe,\n  (q31_t)0x7b1feee5, (q31_t)0xdd0290b8, (q31_t)0x7b1e370d, (q31_t)0xdcfc8588, (q31_t)0x7b1c7ee8, (q31_t)0xdcf67a6d, (q31_t)0x7b1ac678, (q31_t)0xdcf06f68,\n  (q31_t)0x7b190dbc, (q31_t)0xdcea6478, (q31_t)0x7b1754b3, (q31_t)0xdce4599e, (q31_t)0x7b159b5f, (q31_t)0xdcde4eda, (q31_t)0x7b13e1bf, (q31_t)0xdcd8442b,\n  (q31_t)0x7b1227d3, (q31_t)0xdcd23993, (q31_t)0x7b106d9b, (q31_t)0xdccc2f0f, (q31_t)0x7b0eb318, (q31_t)0xdcc624a2, (q31_t)0x7b0cf848, (q31_t)0xdcc01a4a,\n  (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, (q31_t)0x7b0981c5, (q31_t)0xdcb405dc, (q31_t)0x7b07c612, (q31_t)0xdcadfbc5, (q31_t)0x7b060a12, (q31_t)0xdca7f1c5,\n  (q31_t)0x7b044dc7, (q31_t)0xdca1e7da, (q31_t)0x7b029130, (q31_t)0xdc9bde05, (q31_t)0x7b00d44d, (q31_t)0xdc95d446, (q31_t)0x7aff171e, (q31_t)0xdc8fca9c,\n  (q31_t)0x7afd59a4, (q31_t)0xdc89c109, (q31_t)0x7afb9bdd, (q31_t)0xdc83b78b, (q31_t)0x7af9ddcb, (q31_t)0xdc7dae23, (q31_t)0x7af81f6c, (q31_t)0xdc77a4d2,\n  (q31_t)0x7af660c2, (q31_t)0xdc719b96, (q31_t)0x7af4a1cc, (q31_t)0xdc6b9270, (q31_t)0x7af2e28b, (q31_t)0xdc658960, (q31_t)0x7af122fd, (q31_t)0xdc5f8066,\n  (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7aeda2fe, (q31_t)0xdc536eb3, (q31_t)0x7aebe28d, (q31_t)0xdc4d65fb, (q31_t)0x7aea21d0, (q31_t)0xdc475d59,\n  (q31_t)0x7ae860c7, (q31_t)0xdc4154cd, (q31_t)0x7ae69f73, (q31_t)0xdc3b4c57, (q31_t)0x7ae4ddd2, (q31_t)0xdc3543f7, (q31_t)0x7ae31be6, (q31_t)0xdc2f3bad,\n  (q31_t)0x7ae159ae, (q31_t)0xdc293379, (q31_t)0x7adf972a, (q31_t)0xdc232b5c, (q31_t)0x7addd45b, (q31_t)0xdc1d2354, (q31_t)0x7adc113f, (q31_t)0xdc171b63,\n  (q31_t)0x7ada4dd8, (q31_t)0xdc111388, (q31_t)0x7ad88a25, (q31_t)0xdc0b0bc2, (q31_t)0x7ad6c626, (q31_t)0xdc050414, (q31_t)0x7ad501dc, (q31_t)0xdbfefc7b,\n  (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7ad17863, (q31_t)0xdbf2ed8c, (q31_t)0x7acfb336, (q31_t)0xdbece636, (q31_t)0x7acdedbc, (q31_t)0xdbe6def6,\n  (q31_t)0x7acc27f7, (q31_t)0xdbe0d7cd, (q31_t)0x7aca61e6, (q31_t)0xdbdad0b9, (q31_t)0x7ac89b89, (q31_t)0xdbd4c9bc, (q31_t)0x7ac6d4e0, (q31_t)0xdbcec2d6,\n  (q31_t)0x7ac50dec, (q31_t)0xdbc8bc06, (q31_t)0x7ac346ac, (q31_t)0xdbc2b54c, (q31_t)0x7ac17f20, (q31_t)0xdbbcaea8, (q31_t)0x7abfb749, (q31_t)0xdbb6a81b,\n  (q31_t)0x7abdef25, (q31_t)0xdbb0a1a4, (q31_t)0x7abc26b7, (q31_t)0xdbaa9b43, (q31_t)0x7aba5dfc, (q31_t)0xdba494f9, (q31_t)0x7ab894f6, (q31_t)0xdb9e8ec6,\n  (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7ab50206, (q31_t)0xdb9282a2, (q31_t)0x7ab3381d, (q31_t)0xdb8c7cb1, (q31_t)0x7ab16de7, (q31_t)0xdb8676d8,\n  (q31_t)0x7aafa367, (q31_t)0xdb807114, (q31_t)0x7aadd89a, (q31_t)0xdb7a6b68, (q31_t)0x7aac0d82, (q31_t)0xdb7465d1, (q31_t)0x7aaa421e, (q31_t)0xdb6e6052,\n  (q31_t)0x7aa8766f, (q31_t)0xdb685ae9, (q31_t)0x7aa6aa74, (q31_t)0xdb625596, (q31_t)0x7aa4de2d, (q31_t)0xdb5c505a, (q31_t)0x7aa3119a, (q31_t)0xdb564b35,\n  (q31_t)0x7aa144bc, (q31_t)0xdb504626, (q31_t)0x7a9f7793, (q31_t)0xdb4a412e, (q31_t)0x7a9daa1d, (q31_t)0xdb443c4c, (q31_t)0x7a9bdc5c, (q31_t)0xdb3e3781,\n  (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, (q31_t)0x7a983ff7, (q31_t)0xdb322e30, (q31_t)0x7a967153, (q31_t)0xdb2c29a9, (q31_t)0x7a94a264, (q31_t)0xdb262539,\n  (q31_t)0x7a92d329, (q31_t)0xdb2020e0, (q31_t)0x7a9103a2, (q31_t)0xdb1a1c9d, (q31_t)0x7a8f33d0, (q31_t)0xdb141871, (q31_t)0x7a8d63b2, (q31_t)0xdb0e145c,\n  (q31_t)0x7a8b9348, (q31_t)0xdb08105e, (q31_t)0x7a89c293, (q31_t)0xdb020c77, (q31_t)0x7a87f192, (q31_t)0xdafc08a6, (q31_t)0x7a862046, (q31_t)0xdaf604ec,\n  (q31_t)0x7a844eae, (q31_t)0xdaf00149, (q31_t)0x7a827ccb, (q31_t)0xdae9fdbd, (q31_t)0x7a80aa9c, (q31_t)0xdae3fa48, (q31_t)0x7a7ed821, (q31_t)0xdaddf6ea,\n  (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a7b3249, (q31_t)0xdad1f072, (q31_t)0x7a795eec, (q31_t)0xdacbed58, (q31_t)0x7a778b43, (q31_t)0xdac5ea56,\n  (q31_t)0x7a75b74f, (q31_t)0xdabfe76a, (q31_t)0x7a73e30f, (q31_t)0xdab9e495, (q31_t)0x7a720e84, (q31_t)0xdab3e1d8, (q31_t)0x7a7039ad, (q31_t)0xdaaddf31,\n  (q31_t)0x7a6e648a, (q31_t)0xdaa7dca1, (q31_t)0x7a6c8f1c, (q31_t)0xdaa1da29, (q31_t)0x7a6ab963, (q31_t)0xda9bd7c7, (q31_t)0x7a68e35e, (q31_t)0xda95d57d,\n  (q31_t)0x7a670d0d, (q31_t)0xda8fd349, (q31_t)0x7a653671, (q31_t)0xda89d12d, (q31_t)0x7a635f8a, (q31_t)0xda83cf28, (q31_t)0x7a618857, (q31_t)0xda7dcd3a,\n  (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a5dd90e, (q31_t)0xda71c9a3, (q31_t)0x7a5c00f9, (q31_t)0xda6bc7fa, (q31_t)0x7a5a2898, (q31_t)0xda65c669,\n  (q31_t)0x7a584feb, (q31_t)0xda5fc4ef, (q31_t)0x7a5676f3, (q31_t)0xda59c38c, (q31_t)0x7a549db0, (q31_t)0xda53c240, (q31_t)0x7a52c421, (q31_t)0xda4dc10b,\n  (q31_t)0x7a50ea47, (q31_t)0xda47bfee, (q31_t)0x7a4f1021, (q31_t)0xda41bee8, (q31_t)0x7a4d35b0, (q31_t)0xda3bbdf9, (q31_t)0x7a4b5af3, (q31_t)0xda35bd22,\n  (q31_t)0x7a497feb, (q31_t)0xda2fbc61, (q31_t)0x7a47a498, (q31_t)0xda29bbb9, (q31_t)0x7a45c8f9, (q31_t)0xda23bb27, (q31_t)0x7a43ed0e, (q31_t)0xda1dbaad,\n  (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a403457, (q31_t)0xda11b9ff, (q31_t)0x7a3e578b, (q31_t)0xda0bb9cb, (q31_t)0x7a3c7a73, (q31_t)0xda05b9ae,\n  (q31_t)0x7a3a9d0f, (q31_t)0xd9ffb9a9, (q31_t)0x7a38bf60, (q31_t)0xd9f9b9bb, (q31_t)0x7a36e166, (q31_t)0xd9f3b9e5, (q31_t)0x7a350321, (q31_t)0xd9edba26,\n  (q31_t)0x7a332490, (q31_t)0xd9e7ba7f, (q31_t)0x7a3145b3, (q31_t)0xd9e1baef, (q31_t)0x7a2f668c, (q31_t)0xd9dbbb77, (q31_t)0x7a2d8719, (q31_t)0xd9d5bc16,\n  (q31_t)0x7a2ba75a, (q31_t)0xd9cfbccd, (q31_t)0x7a29c750, (q31_t)0xd9c9bd9b, (q31_t)0x7a27e6fb, (q31_t)0xd9c3be81, (q31_t)0x7a26065b, (q31_t)0xd9bdbf7e,\n  (q31_t)0x7a24256f, (q31_t)0xd9b7c094, (q31_t)0x7a224437, (q31_t)0xd9b1c1c0, (q31_t)0x7a2062b5, (q31_t)0xd9abc305, (q31_t)0x7a1e80e7, (q31_t)0xd9a5c461,\n  (q31_t)0x7a1c9ece, (q31_t)0xd99fc5d4, (q31_t)0x7a1abc69, (q31_t)0xd999c75f, (q31_t)0x7a18d9b9, (q31_t)0xd993c902, (q31_t)0x7a16f6be, (q31_t)0xd98dcabd,\n  (q31_t)0x7a151378, (q31_t)0xd987cc90, (q31_t)0x7a132fe6, (q31_t)0xd981ce7a, (q31_t)0x7a114c09, (q31_t)0xd97bd07c, (q31_t)0x7a0f67e0, (q31_t)0xd975d295,\n  (q31_t)0x7a0d836d, (q31_t)0xd96fd4c7, (q31_t)0x7a0b9eae, (q31_t)0xd969d710, (q31_t)0x7a09b9a4, (q31_t)0xd963d971, (q31_t)0x7a07d44e, (q31_t)0xd95ddbea,\n  (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x7a0408c1, (q31_t)0xd951e123, (q31_t)0x7a02228a, (q31_t)0xd94be3e3, (q31_t)0x7a003c07, (q31_t)0xd945e6bb,\n  (q31_t)0x79fe5539, (q31_t)0xd93fe9ab, (q31_t)0x79fc6e20, (q31_t)0xd939ecb3, (q31_t)0x79fa86bc, (q31_t)0xd933efd3, (q31_t)0x79f89f0c, (q31_t)0xd92df30b,\n  (q31_t)0x79f6b711, (q31_t)0xd927f65b, (q31_t)0x79f4cecb, (q31_t)0xd921f9c3, (q31_t)0x79f2e63a, (q31_t)0xd91bfd43, (q31_t)0x79f0fd5d, (q31_t)0xd91600da,\n  (q31_t)0x79ef1436, (q31_t)0xd910048a, (q31_t)0x79ed2ac3, (q31_t)0xd90a0852, (q31_t)0x79eb4105, (q31_t)0xd9040c32, (q31_t)0x79e956fb, (q31_t)0xd8fe1029,\n  (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79e58207, (q31_t)0xd8f21861, (q31_t)0x79e3971c, (q31_t)0xd8ec1ca1, (q31_t)0x79e1abe6, (q31_t)0xd8e620fa,\n  (q31_t)0x79dfc064, (q31_t)0xd8e0256a, (q31_t)0x79ddd498, (q31_t)0xd8da29f2, (q31_t)0x79dbe880, (q31_t)0xd8d42e93, (q31_t)0x79d9fc1d, (q31_t)0xd8ce334c,\n  (q31_t)0x79d80f6f, (q31_t)0xd8c8381d, (q31_t)0x79d62276, (q31_t)0xd8c23d06, (q31_t)0x79d43532, (q31_t)0xd8bc4207, (q31_t)0x79d247a2, (q31_t)0xd8b64720,\n  (q31_t)0x79d059c8, (q31_t)0xd8b04c52, (q31_t)0x79ce6ba2, (q31_t)0xd8aa519c, (q31_t)0x79cc7d31, (q31_t)0xd8a456ff, (q31_t)0x79ca8e75, (q31_t)0xd89e5c79,\n  (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79c6b01b, (q31_t)0xd89267b7, (q31_t)0x79c4c07e, (q31_t)0xd88c6d7b, (q31_t)0x79c2d095, (q31_t)0xd8867356,\n  (q31_t)0x79c0e062, (q31_t)0xd880794b, (q31_t)0x79beefe3, (q31_t)0xd87a7f57, (q31_t)0x79bcff19, (q31_t)0xd874857c, (q31_t)0x79bb0e04, (q31_t)0xd86e8bb9,\n  (q31_t)0x79b91ca4, (q31_t)0xd868920f, (q31_t)0x79b72af9, (q31_t)0xd862987d, (q31_t)0x79b53903, (q31_t)0xd85c9f04, (q31_t)0x79b346c2, (q31_t)0xd856a5a3,\n  (q31_t)0x79b15435, (q31_t)0xd850ac5a, (q31_t)0x79af615e, (q31_t)0xd84ab32a, (q31_t)0x79ad6e3c, (q31_t)0xd844ba13, (q31_t)0x79ab7ace, (q31_t)0xd83ec114,\n  (q31_t)0x79a98715, (q31_t)0xd838c82d, (q31_t)0x79a79312, (q31_t)0xd832cf5f, (q31_t)0x79a59ec3, (q31_t)0xd82cd6aa, (q31_t)0x79a3aa29, (q31_t)0xd826de0d,\n  (q31_t)0x79a1b545, (q31_t)0xd820e589, (q31_t)0x799fc015, (q31_t)0xd81aed1d, (q31_t)0x799dca9a, (q31_t)0xd814f4ca, (q31_t)0x799bd4d4, (q31_t)0xd80efc8f,\n  (q31_t)0x7999dec4, (q31_t)0xd809046e, (q31_t)0x7997e868, (q31_t)0xd8030c64, (q31_t)0x7995f1c1, (q31_t)0xd7fd1474, (q31_t)0x7993facf, (q31_t)0xd7f71c9c,\n  (q31_t)0x79920392, (q31_t)0xd7f124dd, (q31_t)0x79900c0a, (q31_t)0xd7eb2d37, (q31_t)0x798e1438, (q31_t)0xd7e535a9, (q31_t)0x798c1c1a, (q31_t)0xd7df3e34,\n  (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x79882afd, (q31_t)0xd7d34f94, (q31_t)0x798631ff, (q31_t)0xd7cd586a, (q31_t)0x798438b5, (q31_t)0xd7c76158,\n  (q31_t)0x79823f20, (q31_t)0xd7c16a5f, (q31_t)0x79804541, (q31_t)0xd7bb737f, (q31_t)0x797e4b16, (q31_t)0xd7b57cb7, (q31_t)0x797c50a1, (q31_t)0xd7af8609,\n  (q31_t)0x797a55e0, (q31_t)0xd7a98f73, (q31_t)0x79785ad5, (q31_t)0xd7a398f6, (q31_t)0x79765f7f, (q31_t)0xd79da293, (q31_t)0x797463de, (q31_t)0xd797ac48,\n  (q31_t)0x797267f2, (q31_t)0xd791b616, (q31_t)0x79706bbb, (q31_t)0xd78bbffc, (q31_t)0x796e6f39, (q31_t)0xd785c9fc, (q31_t)0x796c726c, (q31_t)0xd77fd415,\n  (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x796877f1, (q31_t)0xd773e892, (q31_t)0x79667a44, (q31_t)0xd76df2f6, (q31_t)0x79647c4c, (q31_t)0xd767fd72,\n  (q31_t)0x79627e08, (q31_t)0xd7620808, (q31_t)0x79607f7a, (q31_t)0xd75c12b7, (q31_t)0x795e80a1, (q31_t)0xd7561d7f, (q31_t)0x795c817d, (q31_t)0xd7502860,\n  (q31_t)0x795a820e, (q31_t)0xd74a335b, (q31_t)0x79588255, (q31_t)0xd7443e6e, (q31_t)0x79568250, (q31_t)0xd73e499a, (q31_t)0x79548201, (q31_t)0xd73854e0,\n  (q31_t)0x79528167, (q31_t)0xd732603f, (q31_t)0x79508082, (q31_t)0xd72c6bb6, (q31_t)0x794e7f52, (q31_t)0xd7267748, (q31_t)0x794c7dd7, (q31_t)0xd72082f2,\n  (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x79487a01, (q31_t)0xd7149a92, (q31_t)0x794677a6, (q31_t)0xd70ea688, (q31_t)0x79447500, (q31_t)0xd708b297,\n  (q31_t)0x79427210, (q31_t)0xd702bec0, (q31_t)0x79406ed4, (q31_t)0xd6fccb01, (q31_t)0x793e6b4e, (q31_t)0xd6f6d75d, (q31_t)0x793c677d, (q31_t)0xd6f0e3d1,\n  (q31_t)0x793a6361, (q31_t)0xd6eaf05f, (q31_t)0x79385efa, (q31_t)0xd6e4fd06, (q31_t)0x79365a49, (q31_t)0xd6df09c6, (q31_t)0x7934554d, (q31_t)0xd6d916a0,\n  (q31_t)0x79325006, (q31_t)0xd6d32393, (q31_t)0x79304a74, (q31_t)0xd6cd30a0, (q31_t)0x792e4497, (q31_t)0xd6c73dc6, (q31_t)0x792c3e70, (q31_t)0xd6c14b05,\n  (q31_t)0x792a37fe, (q31_t)0xd6bb585e, (q31_t)0x79283141, (q31_t)0xd6b565d0, (q31_t)0x79262a3a, (q31_t)0xd6af735c, (q31_t)0x792422e8, (q31_t)0xd6a98101,\n  (q31_t)0x79221b4b, (q31_t)0xd6a38ec0, (q31_t)0x79201363, (q31_t)0xd69d9c98, (q31_t)0x791e0b31, (q31_t)0xd697aa8a, (q31_t)0x791c02b4, (q31_t)0xd691b895,\n  (q31_t)0x7919f9ec, (q31_t)0xd68bc6ba, (q31_t)0x7917f0d9, (q31_t)0xd685d4f9, (q31_t)0x7915e77c, (q31_t)0xd67fe351, (q31_t)0x7913ddd4, (q31_t)0xd679f1c2,\n  (q31_t)0x7911d3e2, (q31_t)0xd674004e, (q31_t)0x790fc9a4, (q31_t)0xd66e0ef2, (q31_t)0x790dbf1d, (q31_t)0xd6681db1, (q31_t)0x790bb44a, (q31_t)0xd6622c89,\n  (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x79079dc5, (q31_t)0xd6564a87, (q31_t)0x79059212, (q31_t)0xd65059ac, (q31_t)0x79038615, (q31_t)0xd64a68eb,\n  (q31_t)0x790179cd, (q31_t)0xd6447844, (q31_t)0x78ff6d3b, (q31_t)0xd63e87b6, (q31_t)0x78fd605d, (q31_t)0xd6389742, (q31_t)0x78fb5336, (q31_t)0xd632a6e8,\n  (q31_t)0x78f945c3, (q31_t)0xd62cb6a8, (q31_t)0x78f73806, (q31_t)0xd626c681, (q31_t)0x78f529fe, (q31_t)0xd620d675, (q31_t)0x78f31bac, (q31_t)0xd61ae682,\n  (q31_t)0x78f10d0f, (q31_t)0xd614f6a9, (q31_t)0x78eefe28, (q31_t)0xd60f06ea, (q31_t)0x78eceef6, (q31_t)0xd6091745, (q31_t)0x78eadf79, (q31_t)0xd60327b9,\n  (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78e6bfa0, (q31_t)0xd5f748f0, (q31_t)0x78e4af44, (q31_t)0xd5f159b3, (q31_t)0x78e29e9d, (q31_t)0xd5eb6a8f,\n  (q31_t)0x78e08dab, (q31_t)0xd5e57b85, (q31_t)0x78de7c6f, (q31_t)0xd5df8c96, (q31_t)0x78dc6ae8, (q31_t)0xd5d99dc0, (q31_t)0x78da5917, (q31_t)0xd5d3af04,\n  (q31_t)0x78d846fb, (q31_t)0xd5cdc062, (q31_t)0x78d63495, (q31_t)0xd5c7d1db, (q31_t)0x78d421e4, (q31_t)0xd5c1e36d, (q31_t)0x78d20ee9, (q31_t)0xd5bbf519,\n  (q31_t)0x78cffba3, (q31_t)0xd5b606e0, (q31_t)0x78cde812, (q31_t)0xd5b018c0, (q31_t)0x78cbd437, (q31_t)0xd5aa2abb, (q31_t)0x78c9c012, (q31_t)0xd5a43cd0,\n  (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78c596e7, (q31_t)0xd5986148, (q31_t)0x78c381e2, (q31_t)0xd59273ab, (q31_t)0x78c16c93, (q31_t)0xd58c8628,\n  (q31_t)0x78bf56f9, (q31_t)0xd58698c0, (q31_t)0x78bd4114, (q31_t)0xd580ab72, (q31_t)0x78bb2ae5, (q31_t)0xd57abe3d, (q31_t)0x78b9146c, (q31_t)0xd574d124,\n  (q31_t)0x78b6fda8, (q31_t)0xd56ee424, (q31_t)0x78b4e69a, (q31_t)0xd568f73f, (q31_t)0x78b2cf41, (q31_t)0xd5630a74, (q31_t)0x78b0b79e, (q31_t)0xd55d1dc3,\n  (q31_t)0x78ae9fb0, (q31_t)0xd557312d, (q31_t)0x78ac8778, (q31_t)0xd55144b0, (q31_t)0x78aa6ef5, (q31_t)0xd54b584f, (q31_t)0x78a85628, (q31_t)0xd5456c07,\n  (q31_t)0x78a63d11, (q31_t)0xd53f7fda, (q31_t)0x78a423af, (q31_t)0xd53993c7, (q31_t)0x78a20a03, (q31_t)0xd533a7cf, (q31_t)0x789ff00c, (q31_t)0xd52dbbf1,\n  (q31_t)0x789dd5cb, (q31_t)0xd527d02e, (q31_t)0x789bbb3f, (q31_t)0xd521e484, (q31_t)0x7899a06a, (q31_t)0xd51bf8f6, (q31_t)0x78978549, (q31_t)0xd5160d82,\n  (q31_t)0x789569df, (q31_t)0xd5102228, (q31_t)0x78934e2a, (q31_t)0xd50a36e9, (q31_t)0x7891322a, (q31_t)0xd5044bc4, (q31_t)0x788f15e0, (q31_t)0xd4fe60ba,\n  (q31_t)0x788cf94c, (q31_t)0xd4f875ca, (q31_t)0x788adc6e, (q31_t)0xd4f28af5, (q31_t)0x7888bf45, (q31_t)0xd4eca03a, (q31_t)0x7886a1d1, (q31_t)0xd4e6b59a,\n  (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x7882660c, (q31_t)0xd4dae0aa, (q31_t)0x788047ba, (q31_t)0xd4d4f65a, (q31_t)0x787e291d, (q31_t)0xd4cf0c24,\n  (q31_t)0x787c0a36, (q31_t)0xd4c92209, (q31_t)0x7879eb05, (q31_t)0xd4c33809, (q31_t)0x7877cb89, (q31_t)0xd4bd4e23, (q31_t)0x7875abc3, (q31_t)0xd4b76458,\n  (q31_t)0x78738bb3, (q31_t)0xd4b17aa8, (q31_t)0x78716b59, (q31_t)0xd4ab9112, (q31_t)0x786f4ab4, (q31_t)0xd4a5a798, (q31_t)0x786d29c5, (q31_t)0xd49fbe37,\n  (q31_t)0x786b088c, (q31_t)0xd499d4f2, (q31_t)0x7868e708, (q31_t)0xd493ebc8, (q31_t)0x7866c53a, (q31_t)0xd48e02b8, (q31_t)0x7864a322, (q31_t)0xd48819c3,\n  (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x78605e13, (q31_t)0xd47c4829, (q31_t)0x785e3b1c, (q31_t)0xd4765f85, (q31_t)0x785c17db, (q31_t)0xd47076fb,\n  (q31_t)0x7859f44f, (q31_t)0xd46a8e8d, (q31_t)0x7857d079, (q31_t)0xd464a639, (q31_t)0x7855ac5a, (q31_t)0xd45ebe00, (q31_t)0x785387ef, (q31_t)0xd458d5e2,\n  (q31_t)0x7851633b, (q31_t)0xd452eddf, (q31_t)0x784f3e3c, (q31_t)0xd44d05f6, (q31_t)0x784d18f4, (q31_t)0xd4471e29, (q31_t)0x784af361, (q31_t)0xd4413677,\n  (q31_t)0x7848cd83, (q31_t)0xd43b4ee0, (q31_t)0x7846a75c, (q31_t)0xd4356763, (q31_t)0x784480ea, (q31_t)0xd42f8002, (q31_t)0x78425a2f, (q31_t)0xd42998bc,\n  (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x783e0bd9, (q31_t)0xd41dca81, (q31_t)0x783be43e, (q31_t)0xd417e38c, (q31_t)0x7839bc5a, (q31_t)0xd411fcb2,\n  (q31_t)0x7837942b, (q31_t)0xd40c15f3, (q31_t)0x78356bb2, (q31_t)0xd4062f4f, (q31_t)0x783342ef, (q31_t)0xd40048c6, (q31_t)0x783119e2, (q31_t)0xd3fa6259,\n  (q31_t)0x782ef08b, (q31_t)0xd3f47c06, (q31_t)0x782cc6ea, (q31_t)0xd3ee95cf, (q31_t)0x782a9cfe, (q31_t)0xd3e8afb3, (q31_t)0x782872c8, (q31_t)0xd3e2c9b2,\n  (q31_t)0x78264849, (q31_t)0xd3dce3cd, (q31_t)0x78241d7f, (q31_t)0xd3d6fe03, (q31_t)0x7821f26b, (q31_t)0xd3d11853, (q31_t)0x781fc70d, (q31_t)0xd3cb32c0,\n  (q31_t)0x781d9b65, (q31_t)0xd3c54d47, (q31_t)0x781b6f72, (q31_t)0xd3bf67ea, (q31_t)0x78194336, (q31_t)0xd3b982a8, (q31_t)0x781716b0, (q31_t)0xd3b39d81,\n  (q31_t)0x7814e9df, (q31_t)0xd3adb876, (q31_t)0x7812bcc4, (q31_t)0xd3a7d385, (q31_t)0x78108f60, (q31_t)0xd3a1eeb1, (q31_t)0x780e61b1, (q31_t)0xd39c09f7,\n  (q31_t)0x780c33b8, (q31_t)0xd396255a, (q31_t)0x780a0575, (q31_t)0xd39040d7, (q31_t)0x7807d6e9, (q31_t)0xd38a5c70, (q31_t)0x7805a812, (q31_t)0xd3847824,\n  (q31_t)0x780378f1, (q31_t)0xd37e93f4, (q31_t)0x78014986, (q31_t)0xd378afdf, (q31_t)0x77ff19d1, (q31_t)0xd372cbe6, (q31_t)0x77fce9d2, (q31_t)0xd36ce808,\n  (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77f888f6, (q31_t)0xd361209f, (q31_t)0x77f65819, (q31_t)0xd35b3d13, (q31_t)0x77f426f2, (q31_t)0xd35559a4,\n  (q31_t)0x77f1f581, (q31_t)0xd34f764f, (q31_t)0x77efc3c5, (q31_t)0xd3499317, (q31_t)0x77ed91c0, (q31_t)0xd343affa, (q31_t)0x77eb5f71, (q31_t)0xd33dccf8,\n  (q31_t)0x77e92cd9, (q31_t)0xd337ea12, (q31_t)0x77e6f9f6, (q31_t)0xd3320748, (q31_t)0x77e4c6c9, (q31_t)0xd32c2499, (q31_t)0x77e29352, (q31_t)0xd3264206,\n  (q31_t)0x77e05f91, (q31_t)0xd3205f8f, (q31_t)0x77de2b86, (q31_t)0xd31a7d33, (q31_t)0x77dbf732, (q31_t)0xd3149af3, (q31_t)0x77d9c293, (q31_t)0xd30eb8cf,\n  (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77d55878, (q31_t)0xd302f4da, (q31_t)0x77d322fc, (q31_t)0xd2fd1309, (q31_t)0x77d0ed35, (q31_t)0xd2f73154,\n  (q31_t)0x77ceb725, (q31_t)0xd2f14fba, (q31_t)0x77cc80cb, (q31_t)0xd2eb6e3c, (q31_t)0x77ca4a27, (q31_t)0xd2e58cdb, (q31_t)0x77c81339, (q31_t)0xd2dfab95,\n  (q31_t)0x77c5dc01, (q31_t)0xd2d9ca6a, (q31_t)0x77c3a47f, (q31_t)0xd2d3e95c, (q31_t)0x77c16cb4, (q31_t)0xd2ce0869, (q31_t)0x77bf349f, (q31_t)0xd2c82793,\n  (q31_t)0x77bcfc3f, (q31_t)0xd2c246d8, (q31_t)0x77bac396, (q31_t)0xd2bc6639, (q31_t)0x77b88aa3, (q31_t)0xd2b685b6, (q31_t)0x77b65166, (q31_t)0xd2b0a54f,\n  (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x77b1de0f, (q31_t)0xd2a4e4d5, (q31_t)0x77afa3f5, (q31_t)0xd29f04c2, (q31_t)0x77ad6990, (q31_t)0xd29924cb,\n  (q31_t)0x77ab2ee2, (q31_t)0xd29344f0, (q31_t)0x77a8f3ea, (q31_t)0xd28d6531, (q31_t)0x77a6b8a9, (q31_t)0xd287858e, (q31_t)0x77a47d1d, (q31_t)0xd281a607,\n  (q31_t)0x77a24148, (q31_t)0xd27bc69c, (q31_t)0x77a00529, (q31_t)0xd275e74d, (q31_t)0x779dc8c0, (q31_t)0xd270081b, (q31_t)0x779b8c0e, (q31_t)0xd26a2904,\n  (q31_t)0x77994f11, (q31_t)0xd2644a0a, (q31_t)0x779711cb, (q31_t)0xd25e6b2b, (q31_t)0x7794d43b, (q31_t)0xd2588c69, (q31_t)0x77929661, (q31_t)0xd252adc3,\n  (q31_t)0x7790583e, (q31_t)0xd24ccf39, (q31_t)0x778e19d0, (q31_t)0xd246f0cb, (q31_t)0x778bdb19, (q31_t)0xd241127a, (q31_t)0x77899c19, (q31_t)0xd23b3444,\n  (q31_t)0x77875cce, (q31_t)0xd235562b, (q31_t)0x77851d3a, (q31_t)0xd22f782f, (q31_t)0x7782dd5c, (q31_t)0xd2299a4e, (q31_t)0x77809d35, (q31_t)0xd223bc8a,\n  (q31_t)0x777e5cc3, (q31_t)0xd21ddee2, (q31_t)0x777c1c08, (q31_t)0xd2180156, (q31_t)0x7779db03, (q31_t)0xd21223e7, (q31_t)0x777799b5, (q31_t)0xd20c4694,\n  (q31_t)0x7775581d, (q31_t)0xd206695d, (q31_t)0x7773163b, (q31_t)0xd2008c43, (q31_t)0x7770d40f, (q31_t)0xd1faaf45, (q31_t)0x776e919a, (q31_t)0xd1f4d263,\n  (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x776a0bd3, (q31_t)0xd1e918f5, (q31_t)0x7767c880, (q31_t)0xd1e33c69, (q31_t)0x776584e5, (q31_t)0xd1dd5ff9,\n  (q31_t)0x776340ff, (q31_t)0xd1d783a6, (q31_t)0x7760fcd0, (q31_t)0xd1d1a76f, (q31_t)0x775eb857, (q31_t)0xd1cbcb54, (q31_t)0x775c7395, (q31_t)0xd1c5ef56,\n  (q31_t)0x775a2e89, (q31_t)0xd1c01375, (q31_t)0x7757e933, (q31_t)0xd1ba37b0, (q31_t)0x7755a394, (q31_t)0xd1b45c08, (q31_t)0x77535dab, (q31_t)0xd1ae807c,\n  (q31_t)0x77511778, (q31_t)0xd1a8a50d, (q31_t)0x774ed0fc, (q31_t)0xd1a2c9ba, (q31_t)0x774c8a36, (q31_t)0xd19cee84, (q31_t)0x774a4327, (q31_t)0xd197136b,\n  (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x7745b42c, (q31_t)0xd18b5d8e, (q31_t)0x77436c40, (q31_t)0xd18582ca, (q31_t)0x7741240a, (q31_t)0xd17fa823,\n  (q31_t)0x773edb8b, (q31_t)0xd179cd99, (q31_t)0x773c92c2, (q31_t)0xd173f32c, (q31_t)0x773a49b0, (q31_t)0xd16e18db, (q31_t)0x77380054, (q31_t)0xd1683ea7,\n  (q31_t)0x7735b6af, (q31_t)0xd1626490, (q31_t)0x77336cc0, (q31_t)0xd15c8a95, (q31_t)0x77312287, (q31_t)0xd156b0b7, (q31_t)0x772ed805, (q31_t)0xd150d6f6,\n  (q31_t)0x772c8d3a, (q31_t)0xd14afd52, (q31_t)0x772a4225, (q31_t)0xd14523cb, (q31_t)0x7727f6c6, (q31_t)0xd13f4a60, (q31_t)0x7725ab1f, (q31_t)0xd1397113,\n  (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x772112f2, (q31_t)0xd12dbece, (q31_t)0x771ec66e, (q31_t)0xd127e5d7, (q31_t)0x771c79a0, (q31_t)0xd1220cfc,\n  (q31_t)0x771a2c88, (q31_t)0xd11c343f, (q31_t)0x7717df27, (q31_t)0xd1165b9f, (q31_t)0x7715917d, (q31_t)0xd110831b, (q31_t)0x77134389, (q31_t)0xd10aaab5,\n  (q31_t)0x7710f54c, (q31_t)0xd104d26b, (q31_t)0x770ea6c5, (q31_t)0xd0fefa3f, (q31_t)0x770c57f5, (q31_t)0xd0f9222f, (q31_t)0x770a08dc, (q31_t)0xd0f34a3d,\n  (q31_t)0x7707b979, (q31_t)0xd0ed7267, (q31_t)0x770569cc, (q31_t)0xd0e79aaf, (q31_t)0x770319d6, (q31_t)0xd0e1c313, (q31_t)0x7700c997, (q31_t)0xd0dbeb95,\n  (q31_t)0x76fe790e, (q31_t)0xd0d61434, (q31_t)0x76fc283c, (q31_t)0xd0d03cf0, (q31_t)0x76f9d721, (q31_t)0xd0ca65c9, (q31_t)0x76f785bc, (q31_t)0xd0c48ebf,\n  (q31_t)0x76f5340e, (q31_t)0xd0beb7d2, (q31_t)0x76f2e216, (q31_t)0xd0b8e102, (q31_t)0x76f08fd5, (q31_t)0xd0b30a50, (q31_t)0x76ee3d4b, (q31_t)0xd0ad33ba,\n  (q31_t)0x76ebea77, (q31_t)0xd0a75d42, (q31_t)0x76e9975a, (q31_t)0xd0a186e7, (q31_t)0x76e743f4, (q31_t)0xd09bb0aa, (q31_t)0x76e4f044, (q31_t)0xd095da89,\n  (q31_t)0x76e29c4b, (q31_t)0xd0900486, (q31_t)0x76e04808, (q31_t)0xd08a2ea0, (q31_t)0x76ddf37c, (q31_t)0xd08458d7, (q31_t)0x76db9ea7, (q31_t)0xd07e832c,\n  (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76d6f421, (q31_t)0xd072d82d, (q31_t)0x76d49e70, (q31_t)0xd06d02da, (q31_t)0x76d24876, (q31_t)0xd0672da3,\n  (q31_t)0x76cff232, (q31_t)0xd061588b, (q31_t)0x76cd9ba5, (q31_t)0xd05b838f, (q31_t)0x76cb44cf, (q31_t)0xd055aeb1, (q31_t)0x76c8edb0, (q31_t)0xd04fd9f1,\n  (q31_t)0x76c69647, (q31_t)0xd04a054e, (q31_t)0x76c43e95, (q31_t)0xd04430c8, (q31_t)0x76c1e699, (q31_t)0xd03e5c60, (q31_t)0x76bf8e55, (q31_t)0xd0388815,\n  (q31_t)0x76bd35c7, (q31_t)0xd032b3e7, (q31_t)0x76badcf0, (q31_t)0xd02cdfd8, (q31_t)0x76b883d0, (q31_t)0xd0270be5, (q31_t)0x76b62a66, (q31_t)0xd0213810,\n  (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x76b176b8, (q31_t)0xd01590bf, (q31_t)0x76af1c72, (q31_t)0xd00fbd43, (q31_t)0x76acc1e4, (q31_t)0xd009e9e4,\n  (q31_t)0x76aa670d, (q31_t)0xd00416a3, (q31_t)0x76a80bec, (q31_t)0xcffe4380, (q31_t)0x76a5b082, (q31_t)0xcff8707a, (q31_t)0x76a354cf, (q31_t)0xcff29d92,\n  (q31_t)0x76a0f8d2, (q31_t)0xcfeccac7, (q31_t)0x769e9c8d, (q31_t)0xcfe6f81a, (q31_t)0x769c3ffe, (q31_t)0xcfe1258b, (q31_t)0x7699e326, (q31_t)0xcfdb531a,\n  (q31_t)0x76978605, (q31_t)0xcfd580c6, (q31_t)0x7695289b, (q31_t)0xcfcfae8f, (q31_t)0x7692cae8, (q31_t)0xcfc9dc77, (q31_t)0x76906ceb, (q31_t)0xcfc40a7c,\n  (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x768bb017, (q31_t)0xcfb866e0, (q31_t)0x7689513f, (q31_t)0xcfb2953f, (q31_t)0x7686f21e, (q31_t)0xcfacc3bb,\n  (q31_t)0x768492b4, (q31_t)0xcfa6f255, (q31_t)0x76823301, (q31_t)0xcfa1210d, (q31_t)0x767fd304, (q31_t)0xcf9b4fe3, (q31_t)0x767d72bf, (q31_t)0xcf957ed7,\n  (q31_t)0x767b1231, (q31_t)0xcf8fade9, (q31_t)0x7678b159, (q31_t)0xcf89dd18, (q31_t)0x76765038, (q31_t)0xcf840c65, (q31_t)0x7673eecf, (q31_t)0xcf7e3bd1,\n  (q31_t)0x76718d1c, (q31_t)0xcf786b5a, (q31_t)0x766f2b20, (q31_t)0xcf729b01, (q31_t)0x766cc8db, (q31_t)0xcf6ccac6, (q31_t)0x766a664d, (q31_t)0xcf66faa9,\n  (q31_t)0x76680376, (q31_t)0xcf612aaa, (q31_t)0x7665a056, (q31_t)0xcf5b5ac9, (q31_t)0x76633ced, (q31_t)0xcf558b06, (q31_t)0x7660d93b, (q31_t)0xcf4fbb61,\n  (q31_t)0x765e7540, (q31_t)0xcf49ebda, (q31_t)0x765c10fc, (q31_t)0xcf441c71, (q31_t)0x7659ac6f, (q31_t)0xcf3e4d26, (q31_t)0x76574798, (q31_t)0xcf387dfa,\n  (q31_t)0x7654e279, (q31_t)0xcf32aeeb, (q31_t)0x76527d11, (q31_t)0xcf2cdffa, (q31_t)0x76501760, (q31_t)0xcf271128, (q31_t)0x764db166, (q31_t)0xcf214274,\n  (q31_t)0x764b4b23, (q31_t)0xcf1b73de, (q31_t)0x7648e497, (q31_t)0xcf15a566, (q31_t)0x76467dc2, (q31_t)0xcf0fd70c, (q31_t)0x764416a4, (q31_t)0xcf0a08d0,\n  (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x763f478d, (q31_t)0xcefe6cb3, (q31_t)0x763cdf94, (q31_t)0xcef89ed2, (q31_t)0x763a7752, (q31_t)0xcef2d110,\n  (q31_t)0x76380ec8, (q31_t)0xceed036b, (q31_t)0x7635a5f4, (q31_t)0xcee735e5, (q31_t)0x76333cd8, (q31_t)0xcee1687d, (q31_t)0x7630d372, (q31_t)0xcedb9b33,\n  (q31_t)0x762e69c4, (q31_t)0xced5ce08, (q31_t)0x762bffcd, (q31_t)0xced000fb, (q31_t)0x7629958c, (q31_t)0xceca340c, (q31_t)0x76272b03, (q31_t)0xcec4673c,\n  (q31_t)0x7624c031, (q31_t)0xcebe9a8a, (q31_t)0x76225517, (q31_t)0xceb8cdf7, (q31_t)0x761fe9b3, (q31_t)0xceb30181, (q31_t)0x761d7e06, (q31_t)0xcead352b,\n  (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x7618a5d3, (q31_t)0xcea19cd8, (q31_t)0x7616394c, (q31_t)0xce9bd0dd, (q31_t)0x7613cc7c, (q31_t)0xce960500,\n  (q31_t)0x76115f63, (q31_t)0xce903942, (q31_t)0x760ef201, (q31_t)0xce8a6da2, (q31_t)0x760c8457, (q31_t)0xce84a220, (q31_t)0x760a1664, (q31_t)0xce7ed6bd,\n  (q31_t)0x7607a828, (q31_t)0xce790b79, (q31_t)0x760539a3, (q31_t)0xce734053, (q31_t)0x7602cad5, (q31_t)0xce6d754c, (q31_t)0x76005bbf, (q31_t)0xce67aa63,\n  (q31_t)0x75fdec60, (q31_t)0xce61df99, (q31_t)0x75fb7cb8, (q31_t)0xce5c14ed, (q31_t)0x75f90cc7, (q31_t)0xce564a60, (q31_t)0x75f69c8d, (q31_t)0xce507ff2,\n  (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75f1bb40, (q31_t)0xce44eb71, (q31_t)0x75ef4a2c, (q31_t)0xce3f215f, (q31_t)0x75ecd8cf, (q31_t)0xce39576c,\n  (q31_t)0x75ea672a, (q31_t)0xce338d97, (q31_t)0x75e7f53c, (q31_t)0xce2dc3e1, (q31_t)0x75e58305, (q31_t)0xce27fa49, (q31_t)0x75e31086, (q31_t)0xce2230d0,\n  (q31_t)0x75e09dbd, (q31_t)0xce1c6777, (q31_t)0x75de2aac, (q31_t)0xce169e3b, (q31_t)0x75dbb753, (q31_t)0xce10d51f, (q31_t)0x75d943b0, (q31_t)0xce0b0c21,\n  (q31_t)0x75d6cfc5, (q31_t)0xce054343, (q31_t)0x75d45b92, (q31_t)0xcdff7a83, (q31_t)0x75d1e715, (q31_t)0xcdf9b1e2, (q31_t)0x75cf7250, (q31_t)0xcdf3e95f,\n  (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, (q31_t)0x75ca87ec, (q31_t)0xcde858b8, (q31_t)0x75c8124d, (q31_t)0xcde29092, (q31_t)0x75c59c65, (q31_t)0xcddcc88b,\n  (q31_t)0x75c32634, (q31_t)0xcdd700a4, (q31_t)0x75c0afbb, (q31_t)0xcdd138db, (q31_t)0x75be38fa, (q31_t)0xcdcb7131, (q31_t)0x75bbc1ef, (q31_t)0xcdc5a9a6,\n  (q31_t)0x75b94a9c, (q31_t)0xcdbfe23a, (q31_t)0x75b6d301, (q31_t)0xcdba1aee, (q31_t)0x75b45b1d, (q31_t)0xcdb453c0, (q31_t)0x75b1e2f0, (q31_t)0xcdae8cb1,\n  (q31_t)0x75af6a7b, (q31_t)0xcda8c5c1, (q31_t)0x75acf1bd, (q31_t)0xcda2fef0, (q31_t)0x75aa78b6, (q31_t)0xcd9d383f, (q31_t)0x75a7ff67, (q31_t)0xcd9771ac,\n  (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x75a30bef, (q31_t)0xcd8be4e4, (q31_t)0x75a091c6, (q31_t)0xcd861eaf, (q31_t)0x759e1755, (q31_t)0xcd805899,\n  (q31_t)0x759b9c9b, (q31_t)0xcd7a92a2, (q31_t)0x75992198, (q31_t)0xcd74ccca, (q31_t)0x7596a64d, (q31_t)0xcd6f0711, (q31_t)0x75942ab9, (q31_t)0xcd694178,\n  (q31_t)0x7591aedd, (q31_t)0xcd637bfe, (q31_t)0x758f32b9, (q31_t)0xcd5db6a3, (q31_t)0x758cb64c, (q31_t)0xcd57f167, (q31_t)0x758a3996, (q31_t)0xcd522c4a,\n  (q31_t)0x7587bc98, (q31_t)0xcd4c674d, (q31_t)0x75853f51, (q31_t)0xcd46a26f, (q31_t)0x7582c1c2, (q31_t)0xcd40ddb0, (q31_t)0x758043ea, (q31_t)0xcd3b1911,\n  (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x757b4762, (q31_t)0xcd2f9030, (q31_t)0x7578c8b0, (q31_t)0xcd29cbee, (q31_t)0x757649b7, (q31_t)0xcd2407cc,\n  (q31_t)0x7573ca75, (q31_t)0xcd1e43ca, (q31_t)0x75714aea, (q31_t)0xcd187fe6, (q31_t)0x756ecb18, (q31_t)0xcd12bc22, (q31_t)0x756c4afc, (q31_t)0xcd0cf87e,\n  (q31_t)0x7569ca99, (q31_t)0xcd0734f9, (q31_t)0x756749ec, (q31_t)0xcd017193, (q31_t)0x7564c8f8, (q31_t)0xccfbae4d, (q31_t)0x756247bb, (q31_t)0xccf5eb26,\n  (q31_t)0x755fc635, (q31_t)0xccf0281f, (q31_t)0x755d4467, (q31_t)0xccea6538, (q31_t)0x755ac251, (q31_t)0xcce4a26f, (q31_t)0x75583ff3, (q31_t)0xccdedfc7,\n  (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x75533a5c, (q31_t)0xccd35ad4, (q31_t)0x7550b725, (q31_t)0xcccd988a, (q31_t)0x754e33a4, (q31_t)0xccc7d65f,\n  (q31_t)0x754bafdc, (q31_t)0xccc21455, (q31_t)0x75492bcb, (q31_t)0xccbc5269, (q31_t)0x7546a772, (q31_t)0xccb6909e, (q31_t)0x754422d0, (q31_t)0xccb0cef2,\n  (q31_t)0x75419de7, (q31_t)0xccab0d65, (q31_t)0x753f18b4, (q31_t)0xcca54bf9, (q31_t)0x753c933a, (q31_t)0xcc9f8aac, (q31_t)0x753a0d77, (q31_t)0xcc99c97e,\n  (q31_t)0x7537876c, (q31_t)0xcc940871, (q31_t)0x75350118, (q31_t)0xcc8e4783, (q31_t)0x75327a7d, (q31_t)0xcc8886b5, (q31_t)0x752ff399, (q31_t)0xcc82c607,\n  (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, (q31_t)0x752ae4f8, (q31_t)0xcc774509, (q31_t)0x75285d3b, (q31_t)0xcc7184ba, (q31_t)0x7525d536, (q31_t)0xcc6bc48b,\n  (q31_t)0x75234ce8, (q31_t)0xcc66047b, (q31_t)0x7520c453, (q31_t)0xcc60448c, (q31_t)0x751e3b75, (q31_t)0xcc5a84bc, (q31_t)0x751bb24f, (q31_t)0xcc54c50c,\n  (q31_t)0x751928e0, (q31_t)0xcc4f057c, (q31_t)0x75169f2a, (q31_t)0xcc49460c, (q31_t)0x7514152b, (q31_t)0xcc4386bc, (q31_t)0x75118ae4, (q31_t)0xcc3dc78b,\n  (q31_t)0x750f0054, (q31_t)0xcc38087b, (q31_t)0x750c757d, (q31_t)0xcc32498a, (q31_t)0x7509ea5d, (q31_t)0xcc2c8aba, (q31_t)0x75075ef5, (q31_t)0xcc26cc09,\n  (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x7502474d, (q31_t)0xcc1b4f08, (q31_t)0x74ffbb0d, (q31_t)0xcc1590b8, (q31_t)0x74fd2e84, (q31_t)0xcc0fd287,\n  (q31_t)0x74faa1b3, (q31_t)0xcc0a1477, (q31_t)0x74f8149a, (q31_t)0xcc045686, (q31_t)0x74f58739, (q31_t)0xcbfe98b6, (q31_t)0x74f2f990, (q31_t)0xcbf8db05,\n  (q31_t)0x74f06b9e, (q31_t)0xcbf31d75, (q31_t)0x74eddd65, (q31_t)0xcbed6005, (q31_t)0x74eb4ee3, (q31_t)0xcbe7a2b5, (q31_t)0x74e8c01a, (q31_t)0xcbe1e585,\n  (q31_t)0x74e63108, (q31_t)0xcbdc2876, (q31_t)0x74e3a1ae, (q31_t)0xcbd66b86, (q31_t)0x74e1120c, (q31_t)0xcbd0aeb7, (q31_t)0x74de8221, (q31_t)0xcbcaf208,\n  (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74d96175, (q31_t)0xcbbf790a, (q31_t)0x74d6d0b2, (q31_t)0xcbb9bcbb, (q31_t)0x74d43fa8, (q31_t)0xcbb4008d,\n  (q31_t)0x74d1ae55, (q31_t)0xcbae447f, (q31_t)0x74cf1cbb, (q31_t)0xcba88891, (q31_t)0x74cc8ad8, (q31_t)0xcba2ccc4, (q31_t)0x74c9f8ad, (q31_t)0xcb9d1117,\n  (q31_t)0x74c7663a, (q31_t)0xcb97558a, (q31_t)0x74c4d380, (q31_t)0xcb919a1d, (q31_t)0x74c2407d, (q31_t)0xcb8bded1, (q31_t)0x74bfad32, (q31_t)0xcb8623a5,\n  (q31_t)0x74bd199f, (q31_t)0xcb80689a, (q31_t)0x74ba85c4, (q31_t)0xcb7aadaf, (q31_t)0x74b7f1a1, (q31_t)0xcb74f2e4, (q31_t)0x74b55d36, (q31_t)0xcb6f383a,\n  (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x74b03389, (q31_t)0xcb63c347, (q31_t)0x74ad9e46, (q31_t)0xcb5e08fe, (q31_t)0x74ab08bb, (q31_t)0xcb584ed6,\n  (q31_t)0x74a872e8, (q31_t)0xcb5294ce, (q31_t)0x74a5dccd, (q31_t)0xcb4cdae6, (q31_t)0x74a3466b, (q31_t)0xcb47211f, (q31_t)0x74a0afc0, (q31_t)0xcb416779,\n  (q31_t)0x749e18cd, (q31_t)0xcb3badf3, (q31_t)0x749b8193, (q31_t)0xcb35f48d, (q31_t)0x7498ea11, (q31_t)0xcb303b49, (q31_t)0x74965246, (q31_t)0xcb2a8224,\n  (q31_t)0x7493ba34, (q31_t)0xcb24c921, (q31_t)0x749121da, (q31_t)0xcb1f103e, (q31_t)0x748e8938, (q31_t)0xcb19577b, (q31_t)0x748bf04d, (q31_t)0xcb139ed9,\n  (q31_t)0x7489571c, (q31_t)0xcb0de658, (q31_t)0x7486bda2, (q31_t)0xcb082df8, (q31_t)0x748423e0, (q31_t)0xcb0275b8, (q31_t)0x748189d7, (q31_t)0xcafcbd99,\n  (q31_t)0x747eef85, (q31_t)0xcaf7059a, (q31_t)0x747c54ec, (q31_t)0xcaf14dbd, (q31_t)0x7479ba0b, (q31_t)0xcaeb9600, (q31_t)0x74771ee2, (q31_t)0xcae5de64,\n  (q31_t)0x74748371, (q31_t)0xcae026e8, (q31_t)0x7471e7b8, (q31_t)0xcada6f8d, (q31_t)0x746f4bb8, (q31_t)0xcad4b853, (q31_t)0x746caf70, (q31_t)0xcacf013a,\n  (q31_t)0x746a12df, (q31_t)0xcac94a42, (q31_t)0x74677608, (q31_t)0xcac3936b, (q31_t)0x7464d8e8, (q31_t)0xcabddcb4, (q31_t)0x74623b80, (q31_t)0xcab8261e,\n  (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x745cffda, (q31_t)0xcaacb955, (q31_t)0x745a619b, (q31_t)0xcaa70322, (q31_t)0x7457c314, (q31_t)0xcaa14d10,\n  (q31_t)0x74552446, (q31_t)0xca9b971e, (q31_t)0x74528530, (q31_t)0xca95e14e, (q31_t)0x744fe5d2, (q31_t)0xca902b9f, (q31_t)0x744d462c, (q31_t)0xca8a7610,\n  (q31_t)0x744aa63f, (q31_t)0xca84c0a3, (q31_t)0x7448060a, (q31_t)0xca7f0b56, (q31_t)0x7445658d, (q31_t)0xca79562b, (q31_t)0x7442c4c8, (q31_t)0xca73a120,\n  (q31_t)0x744023bc, (q31_t)0xca6dec37, (q31_t)0x743d8268, (q31_t)0xca68376e, (q31_t)0x743ae0cc, (q31_t)0xca6282c7, (q31_t)0x74383ee9, (q31_t)0xca5cce40,\n  (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x7432fa4b, (q31_t)0xca516597, (q31_t)0x74305790, (q31_t)0xca4bb174, (q31_t)0x742db48e, (q31_t)0xca45fd72,\n  (q31_t)0x742b1144, (q31_t)0xca404992, (q31_t)0x74286db3, (q31_t)0xca3a95d2, (q31_t)0x7425c9da, (q31_t)0xca34e234, (q31_t)0x742325b9, (q31_t)0xca2f2eb6,\n  (q31_t)0x74208150, (q31_t)0xca297b5a, (q31_t)0x741ddca0, (q31_t)0xca23c820, (q31_t)0x741b37a9, (q31_t)0xca1e1506, (q31_t)0x74189269, (q31_t)0xca18620e,\n  (q31_t)0x7415ece2, (q31_t)0xca12af37, (q31_t)0x74134714, (q31_t)0xca0cfc81, (q31_t)0x7410a0fe, (q31_t)0xca0749ec, (q31_t)0x740dfaa0, (q31_t)0xca019779,\n  (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x7408ad0e, (q31_t)0xc9f632f6, (q31_t)0x740605d9, (q31_t)0xc9f080e7, (q31_t)0x74035e5d, (q31_t)0xc9eacef9,\n  (q31_t)0x7400b69a, (q31_t)0xc9e51d2d, (q31_t)0x73fe0e8f, (q31_t)0xc9df6b81, (q31_t)0x73fb663c, (q31_t)0xc9d9b9f7, (q31_t)0x73f8bda2, (q31_t)0xc9d4088f,\n  (q31_t)0x73f614c0, (q31_t)0xc9ce5748, (q31_t)0x73f36b97, (q31_t)0xc9c8a622, (q31_t)0x73f0c226, (q31_t)0xc9c2f51e, (q31_t)0x73ee186e, (q31_t)0xc9bd443c,\n  (q31_t)0x73eb6e6e, (q31_t)0xc9b7937a, (q31_t)0x73e8c426, (q31_t)0xc9b1e2db, (q31_t)0x73e61997, (q31_t)0xc9ac325d, (q31_t)0x73e36ec1, (q31_t)0xc9a68200,\n  (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, (q31_t)0x73de183e, (q31_t)0xc99b21ab, (q31_t)0x73db6c91, (q31_t)0xc99571b3, (q31_t)0x73d8c09d, (q31_t)0xc98fc1dc,\n  (q31_t)0x73d61461, (q31_t)0xc98a1227, (q31_t)0x73d367de, (q31_t)0xc9846294, (q31_t)0x73d0bb13, (q31_t)0xc97eb322, (q31_t)0x73ce0e01, (q31_t)0xc97903d2,\n  (q31_t)0x73cb60a8, (q31_t)0xc97354a4, (q31_t)0x73c8b307, (q31_t)0xc96da597, (q31_t)0x73c6051f, (q31_t)0xc967f6ac, (q31_t)0x73c356ef, (q31_t)0xc96247e2,\n  (q31_t)0x73c0a878, (q31_t)0xc95c993a, (q31_t)0x73bdf9b9, (q31_t)0xc956eab4, (q31_t)0x73bb4ab3, (q31_t)0xc9513c50, (q31_t)0x73b89b66, (q31_t)0xc94b8e0d,\n  (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x73b33bf5, (q31_t)0xc94031ed, (q31_t)0x73b08bd1, (q31_t)0xc93a8410, (q31_t)0x73addb67, (q31_t)0xc934d654,\n  (q31_t)0x73ab2ab4, (q31_t)0xc92f28ba, (q31_t)0x73a879bb, (q31_t)0xc9297b42, (q31_t)0x73a5c87a, (q31_t)0xc923cdec, (q31_t)0x73a316f2, (q31_t)0xc91e20b8,\n  (q31_t)0x73a06522, (q31_t)0xc91873a5, (q31_t)0x739db30b, (q31_t)0xc912c6b5, (q31_t)0x739b00ad, (q31_t)0xc90d19e6, (q31_t)0x73984e07, (q31_t)0xc9076d39,\n  (q31_t)0x73959b1b, (q31_t)0xc901c0ae, (q31_t)0x7392e7e6, (q31_t)0xc8fc1445, (q31_t)0x7390346b, (q31_t)0xc8f667fe, (q31_t)0x738d80a8, (q31_t)0xc8f0bbd9,\n  (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x7388184d, (q31_t)0xc8e563f5, (q31_t)0x738563b5, (q31_t)0xc8dfb836, (q31_t)0x7382aed5, (q31_t)0xc8da0c99,\n  (q31_t)0x737ff9ae, (q31_t)0xc8d4611d, (q31_t)0x737d4440, (q31_t)0xc8ceb5c4, (q31_t)0x737a8e8a, (q31_t)0xc8c90a8d, (q31_t)0x7377d88d, (q31_t)0xc8c35f78,\n  (q31_t)0x73752249, (q31_t)0xc8bdb485, (q31_t)0x73726bbe, (q31_t)0xc8b809b4, (q31_t)0x736fb4ec, (q31_t)0xc8b25f06, (q31_t)0x736cfdd2, (q31_t)0xc8acb479,\n  (q31_t)0x736a4671, (q31_t)0xc8a70a0e, (q31_t)0x73678ec9, (q31_t)0xc8a15fc6, (q31_t)0x7364d6da, (q31_t)0xc89bb5a0, (q31_t)0x73621ea4, (q31_t)0xc8960b9c,\n  (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x735cad61, (q31_t)0xc88ab7fa, (q31_t)0x7359f456, (q31_t)0xc8850e5d, (q31_t)0x73573b03, (q31_t)0xc87f64e2,\n  (q31_t)0x73548168, (q31_t)0xc879bb89, (q31_t)0x7351c787, (q31_t)0xc8741252, (q31_t)0x734f0d5f, (q31_t)0xc86e693d, (q31_t)0x734c52ef, (q31_t)0xc868c04b,\n  (q31_t)0x73499838, (q31_t)0xc863177b, (q31_t)0x7346dd3a, (q31_t)0xc85d6ece, (q31_t)0x734421f6, (q31_t)0xc857c642, (q31_t)0x7341666a, (q31_t)0xc8521dd9,\n  (q31_t)0x733eaa96, (q31_t)0xc84c7593, (q31_t)0x733bee7c, (q31_t)0xc846cd6e, (q31_t)0x7339321b, (q31_t)0xc841256d, (q31_t)0x73367572, (q31_t)0xc83b7d8d,\n  (q31_t)0x7333b883, (q31_t)0xc835d5d0, (q31_t)0x7330fb4d, (q31_t)0xc8302e35, (q31_t)0x732e3dcf, (q31_t)0xc82a86bd, (q31_t)0x732b800a, (q31_t)0xc824df67,\n  (q31_t)0x7328c1ff, (q31_t)0xc81f3834, (q31_t)0x732603ac, (q31_t)0xc8199123, (q31_t)0x73234512, (q31_t)0xc813ea35, (q31_t)0x73208632, (q31_t)0xc80e4369,\n  (q31_t)0x731dc70a, (q31_t)0xc8089cbf, (q31_t)0x731b079b, (q31_t)0xc802f638, (q31_t)0x731847e5, (q31_t)0xc7fd4fd4, (q31_t)0x731587e8, (q31_t)0xc7f7a992,\n  (q31_t)0x7312c7a5, (q31_t)0xc7f20373, (q31_t)0x7310071a, (q31_t)0xc7ec5d76, (q31_t)0x730d4648, (q31_t)0xc7e6b79c, (q31_t)0x730a8530, (q31_t)0xc7e111e5,\n  (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x73050229, (q31_t)0xc7d5c6de, (q31_t)0x7302403c, (q31_t)0xc7d0218e, (q31_t)0x72ff7e07, (q31_t)0xc7ca7c61,\n  (q31_t)0x72fcbb8c, (q31_t)0xc7c4d757, (q31_t)0x72f9f8c9, (q31_t)0xc7bf3270, (q31_t)0x72f735c0, (q31_t)0xc7b98dab, (q31_t)0x72f47270, (q31_t)0xc7b3e909,\n  (q31_t)0x72f1aed9, (q31_t)0xc7ae4489, (q31_t)0x72eeeafb, (q31_t)0xc7a8a02c, (q31_t)0x72ec26d6, (q31_t)0xc7a2fbf3, (q31_t)0x72e9626a, (q31_t)0xc79d57db,\n  (q31_t)0x72e69db7, (q31_t)0xc797b3e7, (q31_t)0x72e3d8be, (q31_t)0xc7921015, (q31_t)0x72e1137d, (q31_t)0xc78c6c67, (q31_t)0x72de4df6, (q31_t)0xc786c8db,\n  (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72d8c213, (q31_t)0xc77b822b, (q31_t)0x72d5fbb7, (q31_t)0xc775df08, (q31_t)0x72d33514, (q31_t)0xc7703c08,\n  (q31_t)0x72d06e2b, (q31_t)0xc76a992a, (q31_t)0x72cda6fb, (q31_t)0xc764f66f, (q31_t)0x72cadf83, (q31_t)0xc75f53d7, (q31_t)0x72c817c6, (q31_t)0xc759b163,\n  (q31_t)0x72c54fc1, (q31_t)0xc7540f11, (q31_t)0x72c28775, (q31_t)0xc74e6ce2, (q31_t)0x72bfbee3, (q31_t)0xc748cad6, (q31_t)0x72bcf60a, (q31_t)0xc74328ed,\n  (q31_t)0x72ba2cea, (q31_t)0xc73d8727, (q31_t)0x72b76383, (q31_t)0xc737e584, (q31_t)0x72b499d6, (q31_t)0xc7324404, (q31_t)0x72b1cfe1, (q31_t)0xc72ca2a7,\n  (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72ac3b25, (q31_t)0xc7216056, (q31_t)0x72a9705c, (q31_t)0xc71bbf62, (q31_t)0x72a6a54d, (q31_t)0xc7161e92,\n  (q31_t)0x72a3d9f7, (q31_t)0xc7107de4, (q31_t)0x72a10e5b, (q31_t)0xc70add5a, (q31_t)0x729e4277, (q31_t)0xc7053cf2, (q31_t)0x729b764d, (q31_t)0xc6ff9cae,\n  (q31_t)0x7298a9dd, (q31_t)0xc6f9fc8d, (q31_t)0x7295dd25, (q31_t)0xc6f45c8f, (q31_t)0x72931027, (q31_t)0xc6eebcb5, (q31_t)0x729042e3, (q31_t)0xc6e91cfd,\n  (q31_t)0x728d7557, (q31_t)0xc6e37d69, (q31_t)0x728aa785, (q31_t)0xc6ddddf8, (q31_t)0x7287d96c, (q31_t)0xc6d83eab, (q31_t)0x72850b0d, (q31_t)0xc6d29f80,\n  (q31_t)0x72823c67, (q31_t)0xc6cd0079, (q31_t)0x727f6d7a, (q31_t)0xc6c76195, (q31_t)0x727c9e47, (q31_t)0xc6c1c2d4, (q31_t)0x7279cecd, (q31_t)0xc6bc2437,\n  (q31_t)0x7276ff0d, (q31_t)0xc6b685bd, (q31_t)0x72742f05, (q31_t)0xc6b0e767, (q31_t)0x72715eb8, (q31_t)0xc6ab4933, (q31_t)0x726e8e23, (q31_t)0xc6a5ab23,\n  (q31_t)0x726bbd48, (q31_t)0xc6a00d37, (q31_t)0x7268ec27, (q31_t)0xc69a6f6e, (q31_t)0x72661abf, (q31_t)0xc694d1c8, (q31_t)0x72634910, (q31_t)0xc68f3446,\n  (q31_t)0x7260771b, (q31_t)0xc68996e7, (q31_t)0x725da4df, (q31_t)0xc683f9ab, (q31_t)0x725ad25d, (q31_t)0xc67e5c93, (q31_t)0x7257ff94, (q31_t)0xc678bf9f,\n  (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7252592f, (q31_t)0xc66d8620, (q31_t)0x724f8593, (q31_t)0xc667e996, (q31_t)0x724cb1b0, (q31_t)0xc6624d30,\n  (q31_t)0x7249dd86, (q31_t)0xc65cb0ed, (q31_t)0x72470916, (q31_t)0xc65714cd, (q31_t)0x72443460, (q31_t)0xc65178d1, (q31_t)0x72415f63, (q31_t)0xc64bdcf9,\n  (q31_t)0x723e8a20, (q31_t)0xc6464144, (q31_t)0x723bb496, (q31_t)0xc640a5b3, (q31_t)0x7238dec5, (q31_t)0xc63b0a46, (q31_t)0x723608af, (q31_t)0xc6356efc,\n  (q31_t)0x72333251, (q31_t)0xc62fd3d6, (q31_t)0x72305bae, (q31_t)0xc62a38d4, (q31_t)0x722d84c4, (q31_t)0xc6249df5, (q31_t)0x722aad93, (q31_t)0xc61f033a,\n  (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x7224fe5f, (q31_t)0xc613ce2f, (q31_t)0x7222265b, (q31_t)0xc60e33df, (q31_t)0x721f4e11, (q31_t)0xc60899b2,\n  (q31_t)0x721c7580, (q31_t)0xc602ffaa, (q31_t)0x72199ca9, (q31_t)0xc5fd65c5, (q31_t)0x7216c38c, (q31_t)0xc5f7cc04, (q31_t)0x7213ea28, (q31_t)0xc5f23267,\n  (q31_t)0x7211107e, (q31_t)0xc5ec98ee, (q31_t)0x720e368d, (q31_t)0xc5e6ff98, (q31_t)0x720b5c57, (q31_t)0xc5e16667, (q31_t)0x720881d9, (q31_t)0xc5dbcd59,\n  (q31_t)0x7205a716, (q31_t)0xc5d6346f, (q31_t)0x7202cc0c, (q31_t)0xc5d09ba9, (q31_t)0x71fff0bc, (q31_t)0xc5cb0307, (q31_t)0x71fd1525, (q31_t)0xc5c56a89,\n  (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71f75d25, (q31_t)0xc5ba39f8, (q31_t)0x71f480bc, (q31_t)0xc5b4a1e5, (q31_t)0x71f1a40c, (q31_t)0xc5af09f7,\n  (q31_t)0x71eec716, (q31_t)0xc5a9722c, (q31_t)0x71ebe9da, (q31_t)0xc5a3da86, (q31_t)0x71e90c57, (q31_t)0xc59e4303, (q31_t)0x71e62e8f, (q31_t)0xc598aba5,\n  (q31_t)0x71e35080, (q31_t)0xc593146a, (q31_t)0x71e0722a, (q31_t)0xc58d7d54, (q31_t)0x71dd938f, (q31_t)0xc587e661, (q31_t)0x71dab4ad, (q31_t)0xc5824f93,\n  (q31_t)0x71d7d585, (q31_t)0xc57cb8e9, (q31_t)0x71d4f617, (q31_t)0xc5772263, (q31_t)0x71d21662, (q31_t)0xc5718c00, (q31_t)0x71cf3667, (q31_t)0xc56bf5c2,\n  (q31_t)0x71cc5626, (q31_t)0xc5665fa9, (q31_t)0x71c9759f, (q31_t)0xc560c9b3, (q31_t)0x71c694d2, (q31_t)0xc55b33e2, (q31_t)0x71c3b3bf, (q31_t)0xc5559e34,\n  (q31_t)0x71c0d265, (q31_t)0xc55008ab, (q31_t)0x71bdf0c5, (q31_t)0xc54a7346, (q31_t)0x71bb0edf, (q31_t)0xc544de05, (q31_t)0x71b82cb3, (q31_t)0xc53f48e9,\n  (q31_t)0x71b54a41, (q31_t)0xc539b3f1, (q31_t)0x71b26788, (q31_t)0xc5341f1d, (q31_t)0x71af848a, (q31_t)0xc52e8a6d, (q31_t)0x71aca145, (q31_t)0xc528f5e1,\n  (q31_t)0x71a9bdba, (q31_t)0xc523617a, (q31_t)0x71a6d9e9, (q31_t)0xc51dcd37, (q31_t)0x71a3f5d2, (q31_t)0xc5183919, (q31_t)0x71a11175, (q31_t)0xc512a51f,\n  (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x719b47e9, (q31_t)0xc5077d97, (q31_t)0x719862b9, (q31_t)0xc501ea0a, (q31_t)0x71957d44, (q31_t)0xc4fc56a2,\n  (q31_t)0x71929789, (q31_t)0xc4f6c35d, (q31_t)0x718fb187, (q31_t)0xc4f1303d, (q31_t)0x718ccb3f, (q31_t)0xc4eb9d42, (q31_t)0x7189e4b2, (q31_t)0xc4e60a6b,\n  (q31_t)0x7186fdde, (q31_t)0xc4e077b8, (q31_t)0x718416c4, (q31_t)0xc4dae52a, (q31_t)0x71812f65, (q31_t)0xc4d552c1, (q31_t)0x717e47bf, (q31_t)0xc4cfc07c,\n  (q31_t)0x717b5fd3, (q31_t)0xc4ca2e5b, (q31_t)0x717877a1, (q31_t)0xc4c49c5f, (q31_t)0x71758f29, (q31_t)0xc4bf0a87, (q31_t)0x7172a66c, (q31_t)0xc4b978d4,\n  (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x716cd41e, (q31_t)0xc4ae55dc, (q31_t)0x7169ea8f, (q31_t)0xc4a8c497, (q31_t)0x716700b9, (q31_t)0xc4a33376,\n  (q31_t)0x7164169d, (q31_t)0xc49da27a, (q31_t)0x71612c3c, (q31_t)0xc49811a3, (q31_t)0x715e4194, (q31_t)0xc49280f0, (q31_t)0x715b56a7, (q31_t)0xc48cf062,\n  (q31_t)0x71586b74, (q31_t)0xc4875ff9, (q31_t)0x71557ffa, (q31_t)0xc481cfb4, (q31_t)0x7152943b, (q31_t)0xc47c3f94, (q31_t)0x714fa836, (q31_t)0xc476af98,\n  (q31_t)0x714cbbeb, (q31_t)0xc4711fc2, (q31_t)0x7149cf5a, (q31_t)0xc46b9010, (q31_t)0x7146e284, (q31_t)0xc4660083, (q31_t)0x7143f567, (q31_t)0xc460711b,\n  (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x713e1a5c, (q31_t)0xc45552b8, (q31_t)0x713b2c6e, (q31_t)0xc44fc3be, (q31_t)0x71383e3a, (q31_t)0xc44a34e9,\n  (q31_t)0x71354fc0, (q31_t)0xc444a639, (q31_t)0x71326101, (q31_t)0xc43f17ad, (q31_t)0x712f71fb, (q31_t)0xc4398947, (q31_t)0x712c82b0, (q31_t)0xc433fb05,\n  (q31_t)0x7129931f, (q31_t)0xc42e6ce8, (q31_t)0x7126a348, (q31_t)0xc428def0, (q31_t)0x7123b32b, (q31_t)0xc423511d, (q31_t)0x7120c2c8, (q31_t)0xc41dc36f,\n  (q31_t)0x711dd220, (q31_t)0xc41835e6, (q31_t)0x711ae132, (q31_t)0xc412a882, (q31_t)0x7117effe, (q31_t)0xc40d1b42, (q31_t)0x7114fe84, (q31_t)0xc4078e28,\n  (q31_t)0x71120cc5, (q31_t)0xc4020133, (q31_t)0x710f1ac0, (q31_t)0xc3fc7462, (q31_t)0x710c2875, (q31_t)0xc3f6e7b7, (q31_t)0x710935e4, (q31_t)0xc3f15b31,\n  (q31_t)0x7106430e, (q31_t)0xc3ebced0, (q31_t)0x71034ff2, (q31_t)0xc3e64294, (q31_t)0x71005c90, (q31_t)0xc3e0b67d, (q31_t)0x70fd68e9, (q31_t)0xc3db2a8b,\n  (q31_t)0x70fa74fc, (q31_t)0xc3d59ebe, (q31_t)0x70f780c9, (q31_t)0xc3d01316, (q31_t)0x70f48c50, (q31_t)0xc3ca8793, (q31_t)0x70f19792, (q31_t)0xc3c4fc36,\n  (q31_t)0x70eea28e, (q31_t)0xc3bf70fd, (q31_t)0x70ebad45, (q31_t)0xc3b9e5ea, (q31_t)0x70e8b7b5, (q31_t)0xc3b45afc, (q31_t)0x70e5c1e1, (q31_t)0xc3aed034,\n  (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70dfd566, (q31_t)0xc3a3bb12, (q31_t)0x70dcdec0, (q31_t)0xc39e30b8, (q31_t)0x70d9e7d5, (q31_t)0xc398a685,\n  (q31_t)0x70d6f0a4, (q31_t)0xc3931c76, (q31_t)0x70d3f92d, (q31_t)0xc38d928d, (q31_t)0x70d10171, (q31_t)0xc38808c9, (q31_t)0x70ce096f, (q31_t)0xc3827f2a,\n  (q31_t)0x70cb1128, (q31_t)0xc37cf5b0, (q31_t)0x70c8189b, (q31_t)0xc3776c5c, (q31_t)0x70c51fc8, (q31_t)0xc371e32d, (q31_t)0x70c226b0, (q31_t)0xc36c5a24,\n  (q31_t)0x70bf2d53, (q31_t)0xc366d140, (q31_t)0x70bc33b0, (q31_t)0xc3614881, (q31_t)0x70b939c7, (q31_t)0xc35bbfe8, (q31_t)0x70b63f99, (q31_t)0xc3563774,\n  (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x70b04a6b, (q31_t)0xc34b26fc, (q31_t)0x70ad4f6d, (q31_t)0xc3459ef9, (q31_t)0x70aa5428, (q31_t)0xc340171b,\n  (q31_t)0x70a7589f, (q31_t)0xc33a8f62, (q31_t)0x70a45ccf, (q31_t)0xc33507cf, (q31_t)0x70a160ba, (q31_t)0xc32f8061, (q31_t)0x709e6460, (q31_t)0xc329f919,\n  (q31_t)0x709b67c0, (q31_t)0xc32471f7, (q31_t)0x70986adb, (q31_t)0xc31eeaf9, (q31_t)0x70956db1, (q31_t)0xc3196422, (q31_t)0x70927041, (q31_t)0xc313dd70,\n  (q31_t)0x708f728b, (q31_t)0xc30e56e4, (q31_t)0x708c7490, (q31_t)0xc308d07d, (q31_t)0x70897650, (q31_t)0xc3034a3c, (q31_t)0x708677ca, (q31_t)0xc2fdc420,\n  (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x708079ee, (q31_t)0xc2f2b85a, (q31_t)0x707d7a98, (q31_t)0xc2ed32af, (q31_t)0x707a7afd, (q31_t)0xc2e7ad2a,\n  (q31_t)0x70777b1c, (q31_t)0xc2e227cb, (q31_t)0x70747af6, (q31_t)0xc2dca291, (q31_t)0x70717a8a, (q31_t)0xc2d71d7e, (q31_t)0x706e79d9, (q31_t)0xc2d1988f,\n  (q31_t)0x706b78e3, (q31_t)0xc2cc13c7, (q31_t)0x706877a7, (q31_t)0xc2c68f24, (q31_t)0x70657626, (q31_t)0xc2c10aa7, (q31_t)0x70627460, (q31_t)0xc2bb8650,\n  (q31_t)0x705f7255, (q31_t)0xc2b6021f, (q31_t)0x705c7004, (q31_t)0xc2b07e14, (q31_t)0x70596d6d, (q31_t)0xc2aafa2e, (q31_t)0x70566a92, (q31_t)0xc2a5766e,\n  (q31_t)0x70536771, (q31_t)0xc29ff2d4, (q31_t)0x7050640b, (q31_t)0xc29a6f60, (q31_t)0x704d6060, (q31_t)0xc294ec12, (q31_t)0x704a5c6f, (q31_t)0xc28f68e9,\n  (q31_t)0x70475839, (q31_t)0xc289e5e7, (q31_t)0x704453be, (q31_t)0xc284630a, (q31_t)0x70414efd, (q31_t)0xc27ee054, (q31_t)0x703e49f8, (q31_t)0xc2795dc3,\n  (q31_t)0x703b44ad, (q31_t)0xc273db58, (q31_t)0x70383f1d, (q31_t)0xc26e5913, (q31_t)0x70353947, (q31_t)0xc268d6f5, (q31_t)0x7032332d, (q31_t)0xc26354fc,\n  (q31_t)0x702f2ccd, (q31_t)0xc25dd329, (q31_t)0x702c2628, (q31_t)0xc258517c, (q31_t)0x70291f3e, (q31_t)0xc252cff5, (q31_t)0x7026180e, (q31_t)0xc24d4e95,\n  (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x702008e0, (q31_t)0xc2424c46, (q31_t)0x701d00e1, (q31_t)0xc23ccb57, (q31_t)0x7019f89d, (q31_t)0xc2374a8f,\n  (q31_t)0x7016f014, (q31_t)0xc231c9ec, (q31_t)0x7013e746, (q31_t)0xc22c4970, (q31_t)0x7010de32, (q31_t)0xc226c91a, (q31_t)0x700dd4da, (q31_t)0xc22148ea,\n  (q31_t)0x700acb3c, (q31_t)0xc21bc8e1, (q31_t)0x7007c159, (q31_t)0xc21648fd, (q31_t)0x7004b731, (q31_t)0xc210c940, (q31_t)0x7001acc4, (q31_t)0xc20b49a9,\n  (q31_t)0x6ffea212, (q31_t)0xc205ca38, (q31_t)0x6ffb971b, (q31_t)0xc2004aed, (q31_t)0x6ff88bde, (q31_t)0xc1facbc9, (q31_t)0x6ff5805d, (q31_t)0xc1f54cca,\n  (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fef688b, (q31_t)0xc1ea4f41, (q31_t)0x6fec5c3b, (q31_t)0xc1e4d0b6, (q31_t)0x6fe94fa5, (q31_t)0xc1df5251,\n  (q31_t)0x6fe642ca, (q31_t)0xc1d9d412, (q31_t)0x6fe335ab, (q31_t)0xc1d455f9, (q31_t)0x6fe02846, (q31_t)0xc1ced807, (q31_t)0x6fdd1a9c, (q31_t)0xc1c95a3c,\n  (q31_t)0x6fda0cae, (q31_t)0xc1c3dc97, (q31_t)0x6fd6fe7a, (q31_t)0xc1be5f18, (q31_t)0x6fd3f001, (q31_t)0xc1b8e1bf, (q31_t)0x6fd0e144, (q31_t)0xc1b3648d,\n  (q31_t)0x6fcdd241, (q31_t)0xc1ade781, (q31_t)0x6fcac2fa, (q31_t)0xc1a86a9c, (q31_t)0x6fc7b36d, (q31_t)0xc1a2edde, (q31_t)0x6fc4a39c, (q31_t)0xc19d7145,\n  (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6fbe832a, (q31_t)0xc1927888, (q31_t)0x6fbb728a, (q31_t)0xc18cfc63, (q31_t)0x6fb861a4, (q31_t)0xc1878065,\n  (q31_t)0x6fb5507a, (q31_t)0xc182048d, (q31_t)0x6fb23f0b, (q31_t)0xc17c88dc, (q31_t)0x6faf2d57, (q31_t)0xc1770d52, (q31_t)0x6fac1b5f, (q31_t)0xc17191ee,\n  (q31_t)0x6fa90921, (q31_t)0xc16c16b0, (q31_t)0x6fa5f69e, (q31_t)0xc1669b99, (q31_t)0x6fa2e3d7, (q31_t)0xc16120a9, (q31_t)0x6f9fd0cb, (q31_t)0xc15ba5df,\n  (q31_t)0x6f9cbd79, (q31_t)0xc1562b3d, (q31_t)0x6f99a9e3, (q31_t)0xc150b0c0, (q31_t)0x6f969608, (q31_t)0xc14b366b, (q31_t)0x6f9381e9, (q31_t)0xc145bc3c,\n  (q31_t)0x6f906d84, (q31_t)0xc1404233, (q31_t)0x6f8d58db, (q31_t)0xc13ac852, (q31_t)0x6f8a43ed, (q31_t)0xc1354e97, (q31_t)0x6f872eba, (q31_t)0xc12fd503,\n  (q31_t)0x6f841942, (q31_t)0xc12a5b95, (q31_t)0x6f810386, (q31_t)0xc124e24f, (q31_t)0x6f7ded84, (q31_t)0xc11f692f, (q31_t)0x6f7ad73e, (q31_t)0xc119f036,\n  (q31_t)0x6f77c0b3, (q31_t)0xc1147764, (q31_t)0x6f74a9e4, (q31_t)0xc10efeb8, (q31_t)0x6f7192cf, (q31_t)0xc1098634, (q31_t)0x6f6e7b76, (q31_t)0xc1040dd6,\n  (q31_t)0x6f6b63d8, (q31_t)0xc0fe959f, (q31_t)0x6f684bf6, (q31_t)0xc0f91d8f, (q31_t)0x6f6533ce, (q31_t)0xc0f3a5a6, (q31_t)0x6f621b62, (q31_t)0xc0ee2de3,\n  (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f5be9bc, (q31_t)0xc0e33ed4, (q31_t)0x6f58d082, (q31_t)0xc0ddc786, (q31_t)0x6f55b703, (q31_t)0xc0d8505f,\n  (q31_t)0x6f529d40, (q31_t)0xc0d2d960, (q31_t)0x6f4f8338, (q31_t)0xc0cd6287, (q31_t)0x6f4c68eb, (q31_t)0xc0c7ebd6, (q31_t)0x6f494e5a, (q31_t)0xc0c2754b,\n  (q31_t)0x6f463383, (q31_t)0xc0bcfee7, (q31_t)0x6f431869, (q31_t)0xc0b788ab, (q31_t)0x6f3ffd09, (q31_t)0xc0b21295, (q31_t)0x6f3ce165, (q31_t)0xc0ac9ca6,\n  (q31_t)0x6f39c57d, (q31_t)0xc0a726df, (q31_t)0x6f36a94f, (q31_t)0xc0a1b13e, (q31_t)0x6f338cde, (q31_t)0xc09c3bc5, (q31_t)0x6f307027, (q31_t)0xc096c673,\n  (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6f2a35ed, (q31_t)0xc08bdc44, (q31_t)0x6f271868, (q31_t)0xc0866767, (q31_t)0x6f23faa0, (q31_t)0xc080f2b1,\n  (q31_t)0x6f20dc92, (q31_t)0xc07b7e23, (q31_t)0x6f1dbe41, (q31_t)0xc07609bb, (q31_t)0x6f1a9faa, (q31_t)0xc070957b, (q31_t)0x6f1780cf, (q31_t)0xc06b2162,\n  (q31_t)0x6f1461b0, (q31_t)0xc065ad70, (q31_t)0x6f11424c, (q31_t)0xc06039a6, (q31_t)0x6f0e22a3, (q31_t)0xc05ac603, (q31_t)0x6f0b02b6, (q31_t)0xc0555287,\n  (q31_t)0x6f07e285, (q31_t)0xc04fdf32, (q31_t)0x6f04c20f, (q31_t)0xc04a6c05, (q31_t)0x6f01a155, (q31_t)0xc044f8fe, (q31_t)0x6efe8056, (q31_t)0xc03f8620,\n  (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6ef83d8a, (q31_t)0xc034a0d8, (q31_t)0x6ef51bbe, (q31_t)0xc02f2e6f, (q31_t)0x6ef1f9ad, (q31_t)0xc029bc2e,\n  (q31_t)0x6eeed758, (q31_t)0xc0244a14, (q31_t)0x6eebb4bf, (q31_t)0xc01ed821, (q31_t)0x6ee891e1, (q31_t)0xc0196656, (q31_t)0x6ee56ebe, (q31_t)0xc013f4b2,\n  (q31_t)0x6ee24b57, (q31_t)0xc00e8336, (q31_t)0x6edf27ac, (q31_t)0xc00911e1, (q31_t)0x6edc03bc, (q31_t)0xc003a0b3, (q31_t)0x6ed8df88, (q31_t)0xbffe2fad,\n  (q31_t)0x6ed5bb10, (q31_t)0xbff8bece, (q31_t)0x6ed29653, (q31_t)0xbff34e17, (q31_t)0x6ecf7152, (q31_t)0xbfeddd88, (q31_t)0x6ecc4c0d, (q31_t)0xbfe86d20,\n  (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, (q31_t)0x6ec600b5, (q31_t)0xbfdd8cc6, (q31_t)0x6ec2daa2, (q31_t)0xbfd81cd5, (q31_t)0x6ebfb44b, (q31_t)0xbfd2ad0b,\n  (q31_t)0x6ebc8db0, (q31_t)0xbfcd3d69, (q31_t)0x6eb966d1, (q31_t)0xbfc7cdee, (q31_t)0x6eb63fad, (q31_t)0xbfc25e9b, (q31_t)0x6eb31845, (q31_t)0xbfbcef70,\n  (q31_t)0x6eaff099, (q31_t)0xbfb7806c, (q31_t)0x6eacc8a8, (q31_t)0xbfb21190, (q31_t)0x6ea9a073, (q31_t)0xbfaca2dc, (q31_t)0x6ea677fa, (q31_t)0xbfa7344f,\n  (q31_t)0x6ea34f3d, (q31_t)0xbfa1c5ea, (q31_t)0x6ea0263b, (q31_t)0xbf9c57ac, (q31_t)0x6e9cfcf5, (q31_t)0xbf96e997, (q31_t)0x6e99d36b, (q31_t)0xbf917ba9,\n  (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e937f8a, (q31_t)0xbf86a044, (q31_t)0x6e905534, (q31_t)0xbf8132ce, (q31_t)0x6e8d2a99, (q31_t)0xbf7bc57f,\n  (q31_t)0x6e89ffb9, (q31_t)0xbf765858, (q31_t)0x6e86d496, (q31_t)0xbf70eb59, (q31_t)0x6e83a92f, (q31_t)0xbf6b7e81, (q31_t)0x6e807d83, (q31_t)0xbf6611d2,\n  (q31_t)0x6e7d5193, (q31_t)0xbf60a54a, (q31_t)0x6e7a255f, (q31_t)0xbf5b38ea, (q31_t)0x6e76f8e7, (q31_t)0xbf55ccb2, (q31_t)0x6e73cc2b, (q31_t)0xbf5060a2,\n  (q31_t)0x6e709f2a, (q31_t)0xbf4af4ba, (q31_t)0x6e6d71e6, (q31_t)0xbf4588fa, (q31_t)0x6e6a445d, (q31_t)0xbf401d61, (q31_t)0x6e671690, (q31_t)0xbf3ab1f1,\n  (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e60ba2a, (q31_t)0xbf2fdb88, (q31_t)0x6e5d8b91, (q31_t)0xbf2a708f, (q31_t)0x6e5a5cb4, (q31_t)0xbf2505bf,\n  (q31_t)0x6e572d93, (q31_t)0xbf1f9b16, (q31_t)0x6e53fe2e, (q31_t)0xbf1a3096, (q31_t)0x6e50ce84, (q31_t)0xbf14c63d, (q31_t)0x6e4d9e97, (q31_t)0xbf0f5c0d,\n  (q31_t)0x6e4a6e66, (q31_t)0xbf09f205, (q31_t)0x6e473df0, (q31_t)0xbf048824, (q31_t)0x6e440d37, (q31_t)0xbeff1e6c, (q31_t)0x6e40dc39, (q31_t)0xbef9b4dc,\n  (q31_t)0x6e3daaf8, (q31_t)0xbef44b74, (q31_t)0x6e3a7972, (q31_t)0xbeeee234, (q31_t)0x6e3747a9, (q31_t)0xbee9791c, (q31_t)0x6e34159b, (q31_t)0xbee4102d,\n  (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6e2db0b4, (q31_t)0xbed93ec6, (q31_t)0x6e2a7ddb, (q31_t)0xbed3d64f, (q31_t)0x6e274abe, (q31_t)0xbece6e00,\n  (q31_t)0x6e24175c, (q31_t)0xbec905d9, (q31_t)0x6e20e3b7, (q31_t)0xbec39ddb, (q31_t)0x6e1dafce, (q31_t)0xbebe3605, (q31_t)0x6e1a7ba1, (q31_t)0xbeb8ce57,\n  (q31_t)0x6e174730, (q31_t)0xbeb366d1, (q31_t)0x6e14127b, (q31_t)0xbeadff74, (q31_t)0x6e10dd82, (q31_t)0xbea8983f, (q31_t)0x6e0da845, (q31_t)0xbea33132,\n  (q31_t)0x6e0a72c5, (q31_t)0xbe9dca4e, (q31_t)0x6e073d00, (q31_t)0xbe986391, (q31_t)0x6e0406f8, (q31_t)0xbe92fcfe, (q31_t)0x6e00d0ac, (q31_t)0xbe8d9692,\n  (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, (q31_t)0x6dfa6348, (q31_t)0xbe82ca35, (q31_t)0x6df72c30, (q31_t)0xbe7d6442, (q31_t)0x6df3f4d4, (q31_t)0xbe77fe78,\n  (q31_t)0x6df0bd35, (q31_t)0xbe7298d7, (q31_t)0x6ded8552, (q31_t)0xbe6d335e, (q31_t)0x6dea4d2b, (q31_t)0xbe67ce0d, (q31_t)0x6de714c0, (q31_t)0xbe6268e5,\n  (q31_t)0x6de3dc11, (q31_t)0xbe5d03e6, (q31_t)0x6de0a31f, (q31_t)0xbe579f0f, (q31_t)0x6ddd69e9, (q31_t)0xbe523a60, (q31_t)0x6dda306f, (q31_t)0xbe4cd5da,\n  (q31_t)0x6dd6f6b1, (q31_t)0xbe47717c, (q31_t)0x6dd3bcaf, (q31_t)0xbe420d47, (q31_t)0x6dd0826a, (q31_t)0xbe3ca93b, (q31_t)0x6dcd47e1, (q31_t)0xbe374557,\n  (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6dc6d204, (q31_t)0xbe2c7e09, (q31_t)0x6dc396b0, (q31_t)0xbe271a9f, (q31_t)0x6dc05b18, (q31_t)0xbe21b75d,\n  (q31_t)0x6dbd1f3c, (q31_t)0xbe1c5444, (q31_t)0x6db9e31d, (q31_t)0xbe16f154, (q31_t)0x6db6a6ba, (q31_t)0xbe118e8c, (q31_t)0x6db36a14, (q31_t)0xbe0c2bed,\n  (q31_t)0x6db02d29, (q31_t)0xbe06c977, (q31_t)0x6daceffb, (q31_t)0xbe01672a, (q31_t)0x6da9b28a, (q31_t)0xbdfc0505, (q31_t)0x6da674d5, (q31_t)0xbdf6a309,\n  (q31_t)0x6da336dc, (q31_t)0xbdf14135, (q31_t)0x6d9ff89f, (q31_t)0xbdebdf8b, (q31_t)0x6d9cba1f, (q31_t)0xbde67e09, (q31_t)0x6d997b5b, (q31_t)0xbde11cb0,\n  (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d92fd09, (q31_t)0xbdd65a78, (q31_t)0x6d8fbd7a, (q31_t)0xbdd0f999, (q31_t)0x6d8c7da8, (q31_t)0xbdcb98e3,\n  (q31_t)0x6d893d93, (q31_t)0xbdc63856, (q31_t)0x6d85fd39, (q31_t)0xbdc0d7f2, (q31_t)0x6d82bc9d, (q31_t)0xbdbb77b7, (q31_t)0x6d7f7bbc, (q31_t)0xbdb617a4,\n  (q31_t)0x6d7c3a98, (q31_t)0xbdb0b7bb, (q31_t)0x6d78f931, (q31_t)0xbdab57fa, (q31_t)0x6d75b786, (q31_t)0xbda5f862, (q31_t)0x6d727597, (q31_t)0xbda098f3,\n  (q31_t)0x6d6f3365, (q31_t)0xbd9b39ad, (q31_t)0x6d6bf0f0, (q31_t)0xbd95da91, (q31_t)0x6d68ae37, (q31_t)0xbd907b9d, (q31_t)0x6d656b3a, (q31_t)0xbd8b1cd2,\n  (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d5ee477, (q31_t)0xbd805fb7, (q31_t)0x6d5ba0b0, (q31_t)0xbd7b0167, (q31_t)0x6d585ca6, (q31_t)0xbd75a340,\n  (q31_t)0x6d551858, (q31_t)0xbd704542, (q31_t)0x6d51d3c6, (q31_t)0xbd6ae76d, (q31_t)0x6d4e8ef2, (q31_t)0xbd6589c1, (q31_t)0x6d4b49da, (q31_t)0xbd602c3f,\n  (q31_t)0x6d48047e, (q31_t)0xbd5acee5, (q31_t)0x6d44bedf, (q31_t)0xbd5571b5, (q31_t)0x6d4178fd, (q31_t)0xbd5014ad, (q31_t)0x6d3e32d7, (q31_t)0xbd4ab7cf,\n  (q31_t)0x6d3aec6e, (q31_t)0xbd455b1a, (q31_t)0x6d37a5c1, (q31_t)0xbd3ffe8e, (q31_t)0x6d345ed1, (q31_t)0xbd3aa22c, (q31_t)0x6d31179e, (q31_t)0xbd3545f2,\n  (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, (q31_t)0x6d2a886e, (q31_t)0xbd2a8dfb, (q31_t)0x6d274070, (q31_t)0xbd25323d, (q31_t)0x6d23f830, (q31_t)0xbd1fd6a8,\n  (q31_t)0x6d20afac, (q31_t)0xbd1a7b3d, (q31_t)0x6d1d66e4, (q31_t)0xbd151ffb, (q31_t)0x6d1a1dda, (q31_t)0xbd0fc4e2, (q31_t)0x6d16d48c, (q31_t)0xbd0a69f2,\n  (q31_t)0x6d138afb, (q31_t)0xbd050f2c, (q31_t)0x6d104126, (q31_t)0xbcffb48f, (q31_t)0x6d0cf70f, (q31_t)0xbcfa5a1b, (q31_t)0x6d09acb4, (q31_t)0xbcf4ffd1,\n  (q31_t)0x6d066215, (q31_t)0xbcefa5b0, (q31_t)0x6d031734, (q31_t)0xbcea4bb9, (q31_t)0x6cffcc0f, (q31_t)0xbce4f1eb, (q31_t)0x6cfc80a7, (q31_t)0xbcdf9846,\n  (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cf5e90d, (q31_t)0xbcd4e579, (q31_t)0x6cf29cdc, (q31_t)0xbccf8c50, (q31_t)0x6cef5067, (q31_t)0xbcca3351,\n  (q31_t)0x6cec03af, (q31_t)0xbcc4da7b, (q31_t)0x6ce8b6b4, (q31_t)0xbcbf81cf, (q31_t)0x6ce56975, (q31_t)0xbcba294d, (q31_t)0x6ce21bf4, (q31_t)0xbcb4d0f4,\n  (q31_t)0x6cdece2f, (q31_t)0xbcaf78c4, (q31_t)0x6cdb8027, (q31_t)0xbcaa20be, (q31_t)0x6cd831dc, (q31_t)0xbca4c8e1, (q31_t)0x6cd4e34e, (q31_t)0xbc9f712e,\n  (q31_t)0x6cd1947c, (q31_t)0xbc9a19a5, (q31_t)0x6cce4568, (q31_t)0xbc94c245, (q31_t)0x6ccaf610, (q31_t)0xbc8f6b0f, (q31_t)0x6cc7a676, (q31_t)0xbc8a1402,\n  (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6cc10677, (q31_t)0xbc7f6665, (q31_t)0x6cbdb613, (q31_t)0xbc7a0fd6, (q31_t)0x6cba656c, (q31_t)0xbc74b96f,\n  (q31_t)0x6cb71482, (q31_t)0xbc6f6333, (q31_t)0x6cb3c355, (q31_t)0xbc6a0d20, (q31_t)0x6cb071e4, (q31_t)0xbc64b737, (q31_t)0x6cad2031, (q31_t)0xbc5f6177,\n  (q31_t)0x6ca9ce3b, (q31_t)0xbc5a0be2, (q31_t)0x6ca67c01, (q31_t)0xbc54b676, (q31_t)0x6ca32985, (q31_t)0xbc4f6134, (q31_t)0x6c9fd6c6, (q31_t)0xbc4a0c1b,\n  (q31_t)0x6c9c83c3, (q31_t)0xbc44b72c, (q31_t)0x6c99307e, (q31_t)0xbc3f6267, (q31_t)0x6c95dcf6, (q31_t)0xbc3a0dcc, (q31_t)0x6c92892a, (q31_t)0xbc34b95b,\n  (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c8be0cb, (q31_t)0xbc2a10f6, (q31_t)0x6c888c36, (q31_t)0xbc24bd02, (q31_t)0x6c85375f, (q31_t)0xbc1f6938,\n  (q31_t)0x6c81e245, (q31_t)0xbc1a1598, (q31_t)0x6c7e8ce8, (q31_t)0xbc14c221, (q31_t)0x6c7b3748, (q31_t)0xbc0f6ed5, (q31_t)0x6c77e165, (q31_t)0xbc0a1bb3,\n  (q31_t)0x6c748b3f, (q31_t)0xbc04c8ba, (q31_t)0x6c7134d7, (q31_t)0xbbff75ec, (q31_t)0x6c6dde2b, (q31_t)0xbbfa2347, (q31_t)0x6c6a873d, (q31_t)0xbbf4d0cc,\n  (q31_t)0x6c67300b, (q31_t)0xbbef7e7c, (q31_t)0x6c63d897, (q31_t)0xbbea2c55, (q31_t)0x6c6080e0, (q31_t)0xbbe4da58, (q31_t)0x6c5d28e6, (q31_t)0xbbdf8885,\n  (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, (q31_t)0x6c56782a, (q31_t)0xbbd4e55e, (q31_t)0x6c531f67, (q31_t)0xbbcf940a, (q31_t)0x6c4fc662, (q31_t)0xbbca42df,\n  (q31_t)0x6c4c6d1a, (q31_t)0xbbc4f1df, (q31_t)0x6c49138f, (q31_t)0xbbbfa108, (q31_t)0x6c45b9c1, (q31_t)0xbbba505c, (q31_t)0x6c425fb1, (q31_t)0xbbb4ffda,\n  (q31_t)0x6c3f055d, (q31_t)0xbbafaf82, (q31_t)0x6c3baac7, (q31_t)0xbbaa5f54, (q31_t)0x6c384fef, (q31_t)0xbba50f50, (q31_t)0x6c34f4d3, (q31_t)0xbb9fbf77,\n  (q31_t)0x6c319975, (q31_t)0xbb9a6fc7, (q31_t)0x6c2e3dd4, (q31_t)0xbb952042, (q31_t)0x6c2ae1f0, (q31_t)0xbb8fd0e7, (q31_t)0x6c2785ca, (q31_t)0xbb8a81b6,\n  (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6c20ccb4, (q31_t)0xbb7fe3d3, (q31_t)0x6c1d6fc6, (q31_t)0xbb7a9521, (q31_t)0x6c1a1295, (q31_t)0xbb754699,\n  (q31_t)0x6c16b521, (q31_t)0xbb6ff83c, (q31_t)0x6c13576a, (q31_t)0xbb6aaa09, (q31_t)0x6c0ff971, (q31_t)0xbb655c00, (q31_t)0x6c0c9b35, (q31_t)0xbb600e21,\n  (q31_t)0x6c093cb6, (q31_t)0xbb5ac06d, (q31_t)0x6c05ddf5, (q31_t)0xbb5572e3, (q31_t)0x6c027ef1, (q31_t)0xbb502583, (q31_t)0x6bff1faa, (q31_t)0xbb4ad84e,\n  (q31_t)0x6bfbc021, (q31_t)0xbb458b43, (q31_t)0x6bf86055, (q31_t)0xbb403e63, (q31_t)0x6bf50047, (q31_t)0xbb3af1ad, (q31_t)0x6bf19ff6, (q31_t)0xbb35a521,\n  (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6beade8c, (q31_t)0xbb2b0c8a, (q31_t)0x6be77d74, (q31_t)0xbb25c07d, (q31_t)0x6be41c18, (q31_t)0xbb20749c,\n  (q31_t)0x6be0ba7b, (q31_t)0xbb1b28e4, (q31_t)0x6bdd589a, (q31_t)0xbb15dd57, (q31_t)0x6bd9f677, (q31_t)0xbb1091f5, (q31_t)0x6bd69412, (q31_t)0xbb0b46bd,\n  (q31_t)0x6bd3316a, (q31_t)0xbb05fbb0, (q31_t)0x6bcfce80, (q31_t)0xbb00b0ce, (q31_t)0x6bcc6b53, (q31_t)0xbafb6615, (q31_t)0x6bc907e3, (q31_t)0xbaf61b88,\n  (q31_t)0x6bc5a431, (q31_t)0xbaf0d125, (q31_t)0x6bc2403d, (q31_t)0xbaeb86ed, (q31_t)0x6bbedc06, (q31_t)0xbae63cdf, (q31_t)0x6bbb778d, (q31_t)0xbae0f2fc,\n  (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6bb4add3, (q31_t)0xbad65fb5, (q31_t)0x6bb14892, (q31_t)0xbad11652, (q31_t)0x6bade30f, (q31_t)0xbacbcd1a,\n  (q31_t)0x6baa7d49, (q31_t)0xbac6840c, (q31_t)0x6ba71741, (q31_t)0xbac13b29, (q31_t)0x6ba3b0f7, (q31_t)0xbabbf270, (q31_t)0x6ba04a6a, (q31_t)0xbab6a9e3,\n  (q31_t)0x6b9ce39b, (q31_t)0xbab16180, (q31_t)0x6b997c8a, (q31_t)0xbaac1948, (q31_t)0x6b961536, (q31_t)0xbaa6d13a, (q31_t)0x6b92ada0, (q31_t)0xbaa18958,\n  (q31_t)0x6b8f45c7, (q31_t)0xba9c41a0, (q31_t)0x6b8bddac, (q31_t)0xba96fa13, (q31_t)0x6b88754f, (q31_t)0xba91b2b1, (q31_t)0x6b850caf, (q31_t)0xba8c6b79,\n  (q31_t)0x6b81a3cd, (q31_t)0xba87246d, (q31_t)0x6b7e3aa9, (q31_t)0xba81dd8b, (q31_t)0x6b7ad142, (q31_t)0xba7c96d4, (q31_t)0x6b776799, (q31_t)0xba775048,\n  (q31_t)0x6b73fdae, (q31_t)0xba7209e7, (q31_t)0x6b709381, (q31_t)0xba6cc3b1, (q31_t)0x6b6d2911, (q31_t)0xba677da6, (q31_t)0x6b69be5f, (q31_t)0xba6237c5,\n  (q31_t)0x6b66536b, (q31_t)0xba5cf210, (q31_t)0x6b62e834, (q31_t)0xba57ac86, (q31_t)0x6b5f7cbc, (q31_t)0xba526726, (q31_t)0x6b5c1101, (q31_t)0xba4d21f2,\n  (q31_t)0x6b58a503, (q31_t)0xba47dce8, (q31_t)0x6b5538c4, (q31_t)0xba42980a, (q31_t)0x6b51cc42, (q31_t)0xba3d5356, (q31_t)0x6b4e5f7f, (q31_t)0xba380ece,\n  (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b478530, (q31_t)0xba2d863e, (q31_t)0x6b4417a6, (q31_t)0xba284237, (q31_t)0x6b40a9d9, (q31_t)0xba22fe5b,\n  (q31_t)0x6b3d3bcb, (q31_t)0xba1dbaaa, (q31_t)0x6b39cd7a, (q31_t)0xba187724, (q31_t)0x6b365ee7, (q31_t)0xba1333c9, (q31_t)0x6b32f012, (q31_t)0xba0df099,\n  (q31_t)0x6b2f80fb, (q31_t)0xba08ad95, (q31_t)0x6b2c11a1, (q31_t)0xba036abb, (q31_t)0x6b28a206, (q31_t)0xb9fe280d, (q31_t)0x6b253228, (q31_t)0xb9f8e58a,\n  (q31_t)0x6b21c208, (q31_t)0xb9f3a332, (q31_t)0x6b1e51a7, (q31_t)0xb9ee6106, (q31_t)0x6b1ae103, (q31_t)0xb9e91f04, (q31_t)0x6b17701d, (q31_t)0xb9e3dd2e,\n  (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6b108d8b, (q31_t)0xb9d95a03, (q31_t)0x6b0d1bdf, (q31_t)0xb9d418af, (q31_t)0x6b09a9f1, (q31_t)0xb9ced786,\n  (q31_t)0x6b0637c1, (q31_t)0xb9c99688, (q31_t)0x6b02c54f, (q31_t)0xb9c455b6, (q31_t)0x6aff529a, (q31_t)0xb9bf150e, (q31_t)0x6afbdfa4, (q31_t)0xb9b9d493,\n  (q31_t)0x6af86c6c, (q31_t)0xb9b49442, (q31_t)0x6af4f8f2, (q31_t)0xb9af541d, (q31_t)0x6af18536, (q31_t)0xb9aa1423, (q31_t)0x6aee1138, (q31_t)0xb9a4d455,\n  (q31_t)0x6aea9cf8, (q31_t)0xb99f94b2, (q31_t)0x6ae72876, (q31_t)0xb99a553a, (q31_t)0x6ae3b3b2, (q31_t)0xb99515ee, (q31_t)0x6ae03eac, (q31_t)0xb98fd6cd,\n  (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6ad953db, (q31_t)0xb985590e, (q31_t)0x6ad5de0f, (q31_t)0xb9801a70, (q31_t)0x6ad26802, (q31_t)0xb97adbfd,\n  (q31_t)0x6acef1b2, (q31_t)0xb9759db6, (q31_t)0x6acb7b21, (q31_t)0xb9705f9a, (q31_t)0x6ac8044e, (q31_t)0xb96b21aa, (q31_t)0x6ac48d39, (q31_t)0xb965e3e5,\n  (q31_t)0x6ac115e2, (q31_t)0xb960a64c, (q31_t)0x6abd9e49, (q31_t)0xb95b68de, (q31_t)0x6aba266e, (q31_t)0xb9562b9c, (q31_t)0x6ab6ae52, (q31_t)0xb950ee86,\n  (q31_t)0x6ab335f4, (q31_t)0xb94bb19b, (q31_t)0x6aafbd54, (q31_t)0xb94674dc, (q31_t)0x6aac4472, (q31_t)0xb9413848, (q31_t)0x6aa8cb4e, (q31_t)0xb93bfbe0,\n  (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, (q31_t)0x6aa1d841, (q31_t)0xb9318393, (q31_t)0x6a9e5e58, (q31_t)0xb92c47ae, (q31_t)0x6a9ae42e, (q31_t)0xb9270bf5,\n  (q31_t)0x6a9769c1, (q31_t)0xb921d067, (q31_t)0x6a93ef13, (q31_t)0xb91c9505, (q31_t)0x6a907423, (q31_t)0xb91759cf, (q31_t)0x6a8cf8f1, (q31_t)0xb9121ec5,\n  (q31_t)0x6a897d7d, (q31_t)0xb90ce3e6, (q31_t)0x6a8601c8, (q31_t)0xb907a933, (q31_t)0x6a8285d1, (q31_t)0xb9026eac, (q31_t)0x6a7f0999, (q31_t)0xb8fd3451,\n  (q31_t)0x6a7b8d1e, (q31_t)0xb8f7fa21, (q31_t)0x6a781062, (q31_t)0xb8f2c01d, (q31_t)0x6a749365, (q31_t)0xb8ed8646, (q31_t)0x6a711625, (q31_t)0xb8e84c99,\n  (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a6a1ae2, (q31_t)0xb8ddd9c5, (q31_t)0x6a669cdd, (q31_t)0xb8d8a09d, (q31_t)0x6a631e97, (q31_t)0xb8d367a0,\n  (q31_t)0x6a5fa010, (q31_t)0xb8ce2ecf, (q31_t)0x6a5c2147, (q31_t)0xb8c8f62b, (q31_t)0x6a58a23c, (q31_t)0xb8c3bdb2, (q31_t)0x6a5522ef, (q31_t)0xb8be8565,\n  (q31_t)0x6a51a361, (q31_t)0xb8b94d44, (q31_t)0x6a4e2392, (q31_t)0xb8b4154f, (q31_t)0x6a4aa381, (q31_t)0xb8aedd86, (q31_t)0x6a47232e, (q31_t)0xb8a9a5e9,\n  (q31_t)0x6a43a29a, (q31_t)0xb8a46e78, (q31_t)0x6a4021c4, (q31_t)0xb89f3733, (q31_t)0x6a3ca0ad, (q31_t)0xb89a001a, (q31_t)0x6a391f54, (q31_t)0xb894c92d,\n  (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x6a321bdd, (q31_t)0xb88a5bd8, (q31_t)0x6a2e99c0, (q31_t)0xb885256f, (q31_t)0x6a2b1761, (q31_t)0xb87fef33,\n  (q31_t)0x6a2794c1, (q31_t)0xb87ab922, (q31_t)0x6a2411df, (q31_t)0xb875833e, (q31_t)0x6a208ebb, (q31_t)0xb8704d85, (q31_t)0x6a1d0b57, (q31_t)0xb86b17f9,\n  (q31_t)0x6a1987b0, (q31_t)0xb865e299, (q31_t)0x6a1603c8, (q31_t)0xb860ad66, (q31_t)0x6a127f9f, (q31_t)0xb85b785e, (q31_t)0x6a0efb35, (q31_t)0xb8564383,\n  (q31_t)0x6a0b7689, (q31_t)0xb8510ed4, (q31_t)0x6a07f19b, (q31_t)0xb84bda51, (q31_t)0x6a046c6c, (q31_t)0xb846a5fa, (q31_t)0x6a00e6fc, (q31_t)0xb84171cf,\n  (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69f9db57, (q31_t)0xb83709ff, (q31_t)0x69f65523, (q31_t)0xb831d659, (q31_t)0x69f2cead, (q31_t)0xb82ca2e0,\n  (q31_t)0x69ef47f6, (q31_t)0xb8276f93, (q31_t)0x69ebc0fe, (q31_t)0xb8223c72, (q31_t)0x69e839c4, (q31_t)0xb81d097e, (q31_t)0x69e4b249, (q31_t)0xb817d6b6,\n  (q31_t)0x69e12a8c, (q31_t)0xb812a41a, (q31_t)0x69dda28f, (q31_t)0xb80d71aa, (q31_t)0x69da1a50, (q31_t)0xb8083f67, (q31_t)0x69d691cf, (q31_t)0xb8030d51,\n  (q31_t)0x69d3090e, (q31_t)0xb7fddb67, (q31_t)0x69cf800b, (q31_t)0xb7f8a9a9, (q31_t)0x69cbf6c7, (q31_t)0xb7f37818, (q31_t)0x69c86d41, (q31_t)0xb7ee46b3,\n  (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, (q31_t)0x69c15973, (q31_t)0xb7e3e46e, (q31_t)0x69bdcf29, (q31_t)0xb7deb38f, (q31_t)0x69ba449f, (q31_t)0xb7d982dc,\n  (q31_t)0x69b6b9d3, (q31_t)0xb7d45255, (q31_t)0x69b32ec7, (q31_t)0xb7cf21fb, (q31_t)0x69afa378, (q31_t)0xb7c9f1ce, (q31_t)0x69ac17e9, (q31_t)0xb7c4c1cd,\n  (q31_t)0x69a88c19, (q31_t)0xb7bf91f8, (q31_t)0x69a50007, (q31_t)0xb7ba6251, (q31_t)0x69a173b5, (q31_t)0xb7b532d6, (q31_t)0x699de721, (q31_t)0xb7b00387,\n  (q31_t)0x699a5a4c, (q31_t)0xb7aad465, (q31_t)0x6996cd35, (q31_t)0xb7a5a570, (q31_t)0x69933fde, (q31_t)0xb7a076a7, (q31_t)0x698fb246, (q31_t)0xb79b480b,\n  (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x69889651, (q31_t)0xb790eb58, (q31_t)0x698507f6, (q31_t)0xb78bbd42, (q31_t)0x69817959, (q31_t)0xb7868f59,\n  (q31_t)0x697dea7b, (q31_t)0xb781619c, (q31_t)0x697a5b5c, (q31_t)0xb77c340c, (q31_t)0x6976cbfc, (q31_t)0xb77706a9, (q31_t)0x69733c5b, (q31_t)0xb771d972,\n  (q31_t)0x696fac78, (q31_t)0xb76cac69, (q31_t)0x696c1c55, (q31_t)0xb7677f8c, (q31_t)0x69688bf1, (q31_t)0xb76252db, (q31_t)0x6964fb4c, (q31_t)0xb75d2658,\n  (q31_t)0x69616a65, (q31_t)0xb757fa01, (q31_t)0x695dd93e, (q31_t)0xb752cdd8, (q31_t)0x695a47d6, (q31_t)0xb74da1db, (q31_t)0x6956b62d, (q31_t)0xb748760b,\n  (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x694f9217, (q31_t)0xb73e1ef1, (q31_t)0x694bffab, (q31_t)0xb738f3a7, (q31_t)0x69486cfe, (q31_t)0xb733c88b,\n  (q31_t)0x6944da10, (q31_t)0xb72e9d9b, (q31_t)0x694146e1, (q31_t)0xb72972d8, (q31_t)0x693db371, (q31_t)0xb7244842, (q31_t)0x693a1fc0, (q31_t)0xb71f1dd9,\n  (q31_t)0x69368bce, (q31_t)0xb719f39e, (q31_t)0x6932f79b, (q31_t)0xb714c98e, (q31_t)0x692f6328, (q31_t)0xb70f9fac, (q31_t)0x692bce73, (q31_t)0xb70a75f7,\n  (q31_t)0x6928397e, (q31_t)0xb7054c6f, (q31_t)0x6924a448, (q31_t)0xb7002314, (q31_t)0x69210ed1, (q31_t)0xb6faf9e6, (q31_t)0x691d7919, (q31_t)0xb6f5d0e5,\n  (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x69164ce7, (q31_t)0xb6eb7f6b, (q31_t)0x6912b66c, (q31_t)0xb6e656f1, (q31_t)0x690f1fb1, (q31_t)0xb6e12ea4,\n  (q31_t)0x690b88b5, (q31_t)0xb6dc0685, (q31_t)0x6907f178, (q31_t)0xb6d6de92, (q31_t)0x690459fb, (q31_t)0xb6d1b6cd, (q31_t)0x6900c23c, (q31_t)0xb6cc8f35,\n  (q31_t)0x68fd2a3d, (q31_t)0xb6c767ca, (q31_t)0x68f991fd, (q31_t)0xb6c2408c, (q31_t)0x68f5f97d, (q31_t)0xb6bd197c, (q31_t)0x68f260bb, (q31_t)0xb6b7f298,\n  (q31_t)0x68eec7b9, (q31_t)0xb6b2cbe2, (q31_t)0x68eb2e76, (q31_t)0xb6ada559, (q31_t)0x68e794f3, (q31_t)0xb6a87efd, (q31_t)0x68e3fb2e, (q31_t)0xb6a358ce,\n  (q31_t)0x68e06129, (q31_t)0xb69e32cd, (q31_t)0x68dcc6e4, (q31_t)0xb6990cf9, (q31_t)0x68d92c5d, (q31_t)0xb693e752, (q31_t)0x68d59196, (q31_t)0xb68ec1d9,\n  (q31_t)0x68d1f68f, (q31_t)0xb6899c8d, (q31_t)0x68ce5b46, (q31_t)0xb684776e, (q31_t)0x68cabfbd, (q31_t)0xb67f527c, (q31_t)0x68c723f3, (q31_t)0xb67a2db8,\n  (q31_t)0x68c387e9, (q31_t)0xb6750921, (q31_t)0x68bfeb9e, (q31_t)0xb66fe4b8, (q31_t)0x68bc4f13, (q31_t)0xb66ac07c, (q31_t)0x68b8b247, (q31_t)0xb6659c6d,\n  (q31_t)0x68b5153a, (q31_t)0xb660788c, (q31_t)0x68b177ed, (q31_t)0xb65b54d8, (q31_t)0x68adda5f, (q31_t)0xb6563151, (q31_t)0x68aa3c90, (q31_t)0xb6510df8,\n  (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x68a30031, (q31_t)0xb646c7ce, (q31_t)0x689f61a1, (q31_t)0xb641a4fe, (q31_t)0x689bc2d1, (q31_t)0xb63c825b,\n  (q31_t)0x689823bf, (q31_t)0xb6375fe5, (q31_t)0x6894846e, (q31_t)0xb6323d9d, (q31_t)0x6890e4dc, (q31_t)0xb62d1b82, (q31_t)0x688d4509, (q31_t)0xb627f995,\n  (q31_t)0x6889a4f6, (q31_t)0xb622d7d6, (q31_t)0x688604a2, (q31_t)0xb61db644, (q31_t)0x6882640e, (q31_t)0xb61894df, (q31_t)0x687ec339, (q31_t)0xb61373a9,\n  (q31_t)0x687b2224, (q31_t)0xb60e529f, (q31_t)0x687780ce, (q31_t)0xb60931c4, (q31_t)0x6873df38, (q31_t)0xb6041116, (q31_t)0x68703d62, (q31_t)0xb5fef095,\n  (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x6868f8f4, (q31_t)0xb5f4b01e, (q31_t)0x6865565c, (q31_t)0xb5ef9026, (q31_t)0x6861b384, (q31_t)0xb5ea705d,\n  (q31_t)0x685e106c, (q31_t)0xb5e550c1, (q31_t)0x685a6d13, (q31_t)0xb5e03153, (q31_t)0x6856c979, (q31_t)0xb5db1212, (q31_t)0x685325a0, (q31_t)0xb5d5f2ff,\n  (q31_t)0x684f8186, (q31_t)0xb5d0d41a, (q31_t)0x684bdd2c, (q31_t)0xb5cbb563, (q31_t)0x68483891, (q31_t)0xb5c696da, (q31_t)0x684493b6, (q31_t)0xb5c1787e,\n  (q31_t)0x6840ee9b, (q31_t)0xb5bc5a50, (q31_t)0x683d493f, (q31_t)0xb5b73c50, (q31_t)0x6839a3a4, (q31_t)0xb5b21e7e, (q31_t)0x6835fdc7, (q31_t)0xb5ad00d9,\n  (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x682eb14e, (q31_t)0xb5a2c61a, (q31_t)0x682b0ab1, (q31_t)0xb59da8ff, (q31_t)0x682763d4, (q31_t)0xb5988c12,\n  (q31_t)0x6823bcb7, (q31_t)0xb5936f53, (q31_t)0x68201559, (q31_t)0xb58e52c2, (q31_t)0x681c6dbb, (q31_t)0xb589365e, (q31_t)0x6818c5dd, (q31_t)0xb5841a29,\n  (q31_t)0x68151dbe, (q31_t)0xb57efe22, (q31_t)0x68117560, (q31_t)0xb579e248, (q31_t)0x680dccc1, (q31_t)0xb574c69d, (q31_t)0x680a23e2, (q31_t)0xb56fab1f,\n  (q31_t)0x68067ac3, (q31_t)0xb56a8fd0, (q31_t)0x6802d164, (q31_t)0xb56574ae, (q31_t)0x67ff27c4, (q31_t)0xb56059bb, (q31_t)0x67fb7de5, (q31_t)0xb55b3ef5,\n  (q31_t)0x67f7d3c5, (q31_t)0xb556245e, (q31_t)0x67f42965, (q31_t)0xb55109f5, (q31_t)0x67f07ec5, (q31_t)0xb54befba, (q31_t)0x67ecd3e5, (q31_t)0xb546d5ac,\n  (q31_t)0x67e928c5, (q31_t)0xb541bbcd, (q31_t)0x67e57d64, (q31_t)0xb53ca21c, (q31_t)0x67e1d1c4, (q31_t)0xb5378899, (q31_t)0x67de25e3, (q31_t)0xb5326f45,\n  (q31_t)0x67da79c3, (q31_t)0xb52d561e, (q31_t)0x67d6cd62, (q31_t)0xb5283d26, (q31_t)0x67d320c1, (q31_t)0xb523245b, (q31_t)0x67cf73e1, (q31_t)0xb51e0bbf,\n  (q31_t)0x67cbc6c0, (q31_t)0xb518f351, (q31_t)0x67c8195f, (q31_t)0xb513db12, (q31_t)0x67c46bbe, (q31_t)0xb50ec300, (q31_t)0x67c0bddd, (q31_t)0xb509ab1d,\n  (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67b9615c, (q31_t)0xb4ff7be1, (q31_t)0x67b5b2bb, (q31_t)0xb4fa6489, (q31_t)0x67b203da, (q31_t)0xb4f54d5f,\n  (q31_t)0x67ae54ba, (q31_t)0xb4f03663, (q31_t)0x67aaa559, (q31_t)0xb4eb1f95, (q31_t)0x67a6f5b8, (q31_t)0xb4e608f6, (q31_t)0x67a345d8, (q31_t)0xb4e0f285,\n  (q31_t)0x679f95b7, (q31_t)0xb4dbdc42, (q31_t)0x679be557, (q31_t)0xb4d6c62e, (q31_t)0x679834b6, (q31_t)0xb4d1b048, (q31_t)0x679483d6, (q31_t)0xb4cc9a90,\n  (q31_t)0x6790d2b6, (q31_t)0xb4c78507, (q31_t)0x678d2156, (q31_t)0xb4c26fad, (q31_t)0x67896fb6, (q31_t)0xb4bd5a80, (q31_t)0x6785bdd6, (q31_t)0xb4b84582,\n  (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x677e5957, (q31_t)0xb4ae1c12, (q31_t)0x677aa6b8, (q31_t)0xb4a9079f, (q31_t)0x6776f3d9, (q31_t)0xb4a3f35b,\n  (q31_t)0x677340ba, (q31_t)0xb49edf45, (q31_t)0x676f8d5b, (q31_t)0xb499cb5e, (q31_t)0x676bd9bd, (q31_t)0xb494b7a6, (q31_t)0x676825de, (q31_t)0xb48fa41c,\n  (q31_t)0x676471c0, (q31_t)0xb48a90c0, (q31_t)0x6760bd62, (q31_t)0xb4857d93, (q31_t)0x675d08c4, (q31_t)0xb4806a95, (q31_t)0x675953e7, (q31_t)0xb47b57c5,\n  (q31_t)0x67559eca, (q31_t)0xb4764523, (q31_t)0x6751e96d, (q31_t)0xb47132b1, (q31_t)0x674e33d0, (q31_t)0xb46c206d, (q31_t)0x674a7df4, (q31_t)0xb4670e57,\n  (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x6743117c, (q31_t)0xb45ceab8, (q31_t)0x673f5ae0, (q31_t)0xb457d92f, (q31_t)0x673ba405, (q31_t)0xb452c7d4,\n  (q31_t)0x6737ecea, (q31_t)0xb44db6a8, (q31_t)0x67343590, (q31_t)0xb448a5aa, (q31_t)0x67307df5, (q31_t)0xb44394db, (q31_t)0x672cc61c, (q31_t)0xb43e843b,\n  (q31_t)0x67290e02, (q31_t)0xb43973ca, (q31_t)0x672555a9, (q31_t)0xb4346387, (q31_t)0x67219d10, (q31_t)0xb42f5373, (q31_t)0x671de438, (q31_t)0xb42a438e,\n  (q31_t)0x671a2b20, (q31_t)0xb42533d8, (q31_t)0x671671c8, (q31_t)0xb4202451, (q31_t)0x6712b831, (q31_t)0xb41b14f8, (q31_t)0x670efe5a, (q31_t)0xb41605ce,\n  (q31_t)0x670b4444, (q31_t)0xb410f6d3, (q31_t)0x670789ee, (q31_t)0xb40be807, (q31_t)0x6703cf58, (q31_t)0xb406d969, (q31_t)0x67001483, (q31_t)0xb401cafb,\n  (q31_t)0x66fc596f, (q31_t)0xb3fcbcbb, (q31_t)0x66f89e1b, (q31_t)0xb3f7aeaa, (q31_t)0x66f4e287, (q31_t)0xb3f2a0c9, (q31_t)0x66f126b4, (q31_t)0xb3ed9316,\n  (q31_t)0x66ed6aa1, (q31_t)0xb3e88592, (q31_t)0x66e9ae4f, (q31_t)0xb3e3783d, (q31_t)0x66e5f1be, (q31_t)0xb3de6b17, (q31_t)0x66e234ed, (q31_t)0xb3d95e1f,\n  (q31_t)0x66de77dc, (q31_t)0xb3d45157, (q31_t)0x66daba8c, (q31_t)0xb3cf44be, (q31_t)0x66d6fcfd, (q31_t)0xb3ca3854, (q31_t)0x66d33f2e, (q31_t)0xb3c52c19,\n  (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66cbc2d2, (q31_t)0xb3bb142f, (q31_t)0x66c80445, (q31_t)0xb3b60881, (q31_t)0x66c44579, (q31_t)0xb3b0fd02,\n  (q31_t)0x66c0866d, (q31_t)0xb3abf1b2, (q31_t)0x66bcc721, (q31_t)0xb3a6e691, (q31_t)0x66b90797, (q31_t)0xb3a1dba0, (q31_t)0x66b547cd, (q31_t)0xb39cd0dd,\n  (q31_t)0x66b187c3, (q31_t)0xb397c649, (q31_t)0x66adc77b, (q31_t)0xb392bbe5, (q31_t)0x66aa06f3, (q31_t)0xb38db1b0, (q31_t)0x66a6462b, (q31_t)0xb388a7aa,\n  (q31_t)0x66a28524, (q31_t)0xb3839dd3, (q31_t)0x669ec3de, (q31_t)0xb37e942b, (q31_t)0x669b0259, (q31_t)0xb3798ab2, (q31_t)0x66974095, (q31_t)0xb3748169,\n  (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x668fbc4e, (q31_t)0xb36a6f64, (q31_t)0x668bf9cb, (q31_t)0xb36566a8, (q31_t)0x66883709, (q31_t)0xb3605e1c,\n  (q31_t)0x66847408, (q31_t)0xb35b55bf, (q31_t)0x6680b0c8, (q31_t)0xb3564d91, (q31_t)0x667ced49, (q31_t)0xb3514592, (q31_t)0x6679298a, (q31_t)0xb34c3dc3,\n  (q31_t)0x6675658c, (q31_t)0xb3473623, (q31_t)0x6671a14f, (q31_t)0xb3422eb2, (q31_t)0x666ddcd3, (q31_t)0xb33d2771, (q31_t)0x666a1818, (q31_t)0xb338205f,\n  (q31_t)0x6666531d, (q31_t)0xb333197c, (q31_t)0x66628de4, (q31_t)0xb32e12c9, (q31_t)0x665ec86b, (q31_t)0xb3290c45, (q31_t)0x665b02b3, (q31_t)0xb32405f1,\n  (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x66537685, (q31_t)0xb319f9d6, (q31_t)0x664fb010, (q31_t)0xb314f410, (q31_t)0x664be95b, (q31_t)0xb30fee79,\n  (q31_t)0x66482267, (q31_t)0xb30ae912, (q31_t)0x66445b35, (q31_t)0xb305e3da, (q31_t)0x664093c3, (q31_t)0xb300ded2, (q31_t)0x663ccc12, (q31_t)0xb2fbd9f9,\n  (q31_t)0x66390422, (q31_t)0xb2f6d550, (q31_t)0x66353bf3, (q31_t)0xb2f1d0d6, (q31_t)0x66317385, (q31_t)0xb2eccc8c, (q31_t)0x662daad8, (q31_t)0xb2e7c871,\n  (q31_t)0x6629e1ec, (q31_t)0xb2e2c486, (q31_t)0x662618c1, (q31_t)0xb2ddc0ca, (q31_t)0x66224f56, (q31_t)0xb2d8bd3e, (q31_t)0x661e85ad, (q31_t)0xb2d3b9e2,\n  (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, (q31_t)0x6616f19e, (q31_t)0xb2c9b3b8, (q31_t)0x66132738, (q31_t)0xb2c4b0ea, (q31_t)0x660f5c93, (q31_t)0xb2bfae4c,\n  (q31_t)0x660b91af, (q31_t)0xb2baabde, (q31_t)0x6607c68c, (q31_t)0xb2b5a99f, (q31_t)0x6603fb2a, (q31_t)0xb2b0a790, (q31_t)0x66002f89, (q31_t)0xb2aba5b1,\n  (q31_t)0x65fc63a9, (q31_t)0xb2a6a402, (q31_t)0x65f8978b, (q31_t)0xb2a1a282, (q31_t)0x65f4cb2d, (q31_t)0xb29ca132, (q31_t)0x65f0fe91, (q31_t)0xb297a011,\n  (q31_t)0x65ed31b5, (q31_t)0xb2929f21, (q31_t)0x65e9649b, (q31_t)0xb28d9e60, (q31_t)0x65e59742, (q31_t)0xb2889dcf, (q31_t)0x65e1c9aa, (q31_t)0xb2839d6d,\n  (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65da2dbd, (q31_t)0xb2799d3a, (q31_t)0x65d65f69, (q31_t)0xb2749d68, (q31_t)0x65d290d6, (q31_t)0xb26f9dc6,\n  (q31_t)0x65cec204, (q31_t)0xb26a9e54, (q31_t)0x65caf2f3, (q31_t)0xb2659f12, (q31_t)0x65c723a3, (q31_t)0xb2609fff, (q31_t)0x65c35415, (q31_t)0xb25ba11d,\n  (q31_t)0x65bf8447, (q31_t)0xb256a26a, (q31_t)0x65bbb43b, (q31_t)0xb251a3e7, (q31_t)0x65b7e3f1, (q31_t)0xb24ca594, (q31_t)0x65b41367, (q31_t)0xb247a771,\n  (q31_t)0x65b0429f, (q31_t)0xb242a97e, (q31_t)0x65ac7198, (q31_t)0xb23dabbb, (q31_t)0x65a8a052, (q31_t)0xb238ae28, (q31_t)0x65a4cece, (q31_t)0xb233b0c5,\n  (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x659d2b09, (q31_t)0xb229b68f, (q31_t)0x659958c9, (q31_t)0xb224b9bc, (q31_t)0x6595864a, (q31_t)0xb21fbd19,\n  (q31_t)0x6591b38c, (q31_t)0xb21ac0a6, (q31_t)0x658de08f, (q31_t)0xb215c463, (q31_t)0x658a0d54, (q31_t)0xb210c850, (q31_t)0x658639db, (q31_t)0xb20bcc6d,\n  (q31_t)0x65826622, (q31_t)0xb206d0ba, (q31_t)0x657e922b, (q31_t)0xb201d537, (q31_t)0x657abdf6, (q31_t)0xb1fcd9e5, (q31_t)0x6576e982, (q31_t)0xb1f7dec2,\n  (q31_t)0x657314cf, (q31_t)0xb1f2e3d0, (q31_t)0x656f3fde, (q31_t)0xb1ede90e, (q31_t)0x656b6aae, (q31_t)0xb1e8ee7c, (q31_t)0x6567953f, (q31_t)0xb1e3f41a,\n  (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x655fe9a7, (q31_t)0xb1d9ffe7, (q31_t)0x655c137d, (q31_t)0xb1d50616, (q31_t)0x65583d14, (q31_t)0xb1d00c75,\n  (q31_t)0x6554666d, (q31_t)0xb1cb1304, (q31_t)0x65508f87, (q31_t)0xb1c619c3, (q31_t)0x654cb863, (q31_t)0xb1c120b3, (q31_t)0x6548e101, (q31_t)0xb1bc27d3,\n  (q31_t)0x6545095f, (q31_t)0xb1b72f23, (q31_t)0x65413180, (q31_t)0xb1b236a4, (q31_t)0x653d5962, (q31_t)0xb1ad3e55, (q31_t)0x65398105, (q31_t)0xb1a84636,\n  (q31_t)0x6535a86b, (q31_t)0xb1a34e47, (q31_t)0x6531cf91, (q31_t)0xb19e5689, (q31_t)0x652df679, (q31_t)0xb1995efb, (q31_t)0x652a1d23, (q31_t)0xb194679e,\n  (q31_t)0x6526438f, (q31_t)0xb18f7071, (q31_t)0x652269bc, (q31_t)0xb18a7974, (q31_t)0x651e8faa, (q31_t)0xb18582a8, (q31_t)0x651ab55b, (q31_t)0xb1808c0c,\n  (q31_t)0x6516dacd, (q31_t)0xb17b95a0, (q31_t)0x65130000, (q31_t)0xb1769f65, (q31_t)0x650f24f5, (q31_t)0xb171a95b, (q31_t)0x650b49ac, (q31_t)0xb16cb380,\n  (q31_t)0x65076e25, (q31_t)0xb167bdd7, (q31_t)0x6503925f, (q31_t)0xb162c85d, (q31_t)0x64ffb65b, (q31_t)0xb15dd315, (q31_t)0x64fbda18, (q31_t)0xb158ddfd,\n  (q31_t)0x64f7fd98, (q31_t)0xb153e915, (q31_t)0x64f420d9, (q31_t)0xb14ef45e, (q31_t)0x64f043dc, (q31_t)0xb149ffd7, (q31_t)0x64ec66a0, (q31_t)0xb1450b81,\n  (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64e4ab6e, (q31_t)0xb13b2367, (q31_t)0x64e0cd78, (q31_t)0xb1362fa2, (q31_t)0x64dcef44, (q31_t)0xb1313c0e,\n  (q31_t)0x64d910d1, (q31_t)0xb12c48ab, (q31_t)0x64d53220, (q31_t)0xb1275579, (q31_t)0x64d15331, (q31_t)0xb1226277, (q31_t)0x64cd7404, (q31_t)0xb11d6fa6,\n  (q31_t)0x64c99498, (q31_t)0xb1187d05, (q31_t)0x64c5b4ef, (q31_t)0xb1138a95, (q31_t)0x64c1d507, (q31_t)0xb10e9856, (q31_t)0x64bdf4e1, (q31_t)0xb109a648,\n  (q31_t)0x64ba147d, (q31_t)0xb104b46a, (q31_t)0x64b633da, (q31_t)0xb0ffc2bd, (q31_t)0x64b252fa, (q31_t)0xb0fad140, (q31_t)0x64ae71dc, (q31_t)0xb0f5dff5,\n  (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x64a6aee4, (q31_t)0xb0ebfdf0, (q31_t)0x64a2cd0c, (q31_t)0xb0e70d37, (q31_t)0x649eeaf5, (q31_t)0xb0e21cae,\n  (q31_t)0x649b08a0, (q31_t)0xb0dd2c56, (q31_t)0x6497260d, (q31_t)0xb0d83c2f, (q31_t)0x6493433c, (q31_t)0xb0d34c39, (q31_t)0x648f602d, (q31_t)0xb0ce5c74,\n  (q31_t)0x648b7ce0, (q31_t)0xb0c96ce0, (q31_t)0x64879955, (q31_t)0xb0c47d7c, (q31_t)0x6483b58c, (q31_t)0xb0bf8e4a, (q31_t)0x647fd185, (q31_t)0xb0ba9f48,\n  (q31_t)0x647bed3f, (q31_t)0xb0b5b077, (q31_t)0x647808bc, (q31_t)0xb0b0c1d7, (q31_t)0x647423fb, (q31_t)0xb0abd368, (q31_t)0x64703efc, (q31_t)0xb0a6e52a,\n  (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x64687444, (q31_t)0xb09d0941, (q31_t)0x64648e8c, (q31_t)0xb0981b96, (q31_t)0x6460a895, (q31_t)0xb0932e1b,\n  (q31_t)0x645cc260, (q31_t)0xb08e40d2, (q31_t)0x6458dbed, (q31_t)0xb08953ba, (q31_t)0x6454f53d, (q31_t)0xb08466d3, (q31_t)0x64510e4e, (q31_t)0xb07f7a1c,\n  (q31_t)0x644d2722, (q31_t)0xb07a8d97, (q31_t)0x64493fb8, (q31_t)0xb075a143, (q31_t)0x64455810, (q31_t)0xb070b520, (q31_t)0x6441702a, (q31_t)0xb06bc92e,\n  (q31_t)0x643d8806, (q31_t)0xb066dd6d, (q31_t)0x64399fa5, (q31_t)0xb061f1de, (q31_t)0x6435b706, (q31_t)0xb05d067f, (q31_t)0x6431ce28, (q31_t)0xb0581b51,\n  (q31_t)0x642de50d, (q31_t)0xb0533055, (q31_t)0x6429fbb5, (q31_t)0xb04e458a, (q31_t)0x6426121e, (q31_t)0xb0495af0, (q31_t)0x6422284a, (q31_t)0xb0447087,\n  (q31_t)0x641e3e38, (q31_t)0xb03f864f, (q31_t)0x641a53e8, (q31_t)0xb03a9c49, (q31_t)0x6416695a, (q31_t)0xb035b273, (q31_t)0x64127e8f, (q31_t)0xb030c8cf,\n  (q31_t)0x640e9386, (q31_t)0xb02bdf5c, (q31_t)0x640aa83f, (q31_t)0xb026f61b, (q31_t)0x6406bcba, (q31_t)0xb0220d0a, (q31_t)0x6402d0f8, (q31_t)0xb01d242b,\n  (q31_t)0x63fee4f8, (q31_t)0xb0183b7d, (q31_t)0x63faf8bb, (q31_t)0xb0135301, (q31_t)0x63f70c3f, (q31_t)0xb00e6ab5, (q31_t)0x63f31f86, (q31_t)0xb009829c,\n  (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63eb455c, (q31_t)0xafffb2fc, (q31_t)0x63e757ea, (q31_t)0xaffacb76, (q31_t)0x63e36a3a, (q31_t)0xaff5e421,\n  (q31_t)0x63df7c4d, (q31_t)0xaff0fcfe, (q31_t)0x63db8e22, (q31_t)0xafec160c, (q31_t)0x63d79fba, (q31_t)0xafe72f4c, (q31_t)0x63d3b114, (q31_t)0xafe248bd,\n  (q31_t)0x63cfc231, (q31_t)0xafdd625f, (q31_t)0x63cbd310, (q31_t)0xafd87c33, (q31_t)0x63c7e3b1, (q31_t)0xafd39638, (q31_t)0x63c3f415, (q31_t)0xafceb06f,\n  (q31_t)0x63c0043b, (q31_t)0xafc9cad7, (q31_t)0x63bc1424, (q31_t)0xafc4e571, (q31_t)0x63b823cf, (q31_t)0xafc0003c, (q31_t)0x63b4333d, (q31_t)0xafbb1b39,\n  (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x63ac5160, (q31_t)0xafb151c7, (q31_t)0x63a86015, (q31_t)0xafac6d58, (q31_t)0x63a46e8d, (q31_t)0xafa7891b,\n  (q31_t)0x63a07cc7, (q31_t)0xafa2a50f, (q31_t)0x639c8ac4, (q31_t)0xaf9dc135, (q31_t)0x63989884, (q31_t)0xaf98dd8d, (q31_t)0x6394a606, (q31_t)0xaf93fa16,\n  (q31_t)0x6390b34a, (q31_t)0xaf8f16d1, (q31_t)0x638cc051, (q31_t)0xaf8a33bd, (q31_t)0x6388cd1b, (q31_t)0xaf8550db, (q31_t)0x6384d9a7, (q31_t)0xaf806e2b,\n  (q31_t)0x6380e5f6, (q31_t)0xaf7b8bac, (q31_t)0x637cf208, (q31_t)0xaf76a95f, (q31_t)0x6378fddc, (q31_t)0xaf71c743, (q31_t)0x63750973, (q31_t)0xaf6ce55a,\n  (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x636d1fe9, (q31_t)0xaf63221c, (q31_t)0x63692ac7, (q31_t)0xaf5e40c7, (q31_t)0x63653569, (q31_t)0xaf595fa4,\n  (q31_t)0x63613fcd, (q31_t)0xaf547eb3, (q31_t)0x635d49f4, (q31_t)0xaf4f9df4, (q31_t)0x635953dd, (q31_t)0xaf4abd66, (q31_t)0x63555d8a, (q31_t)0xaf45dd0b,\n  (q31_t)0x635166f9, (q31_t)0xaf40fce1, (q31_t)0x634d702b, (q31_t)0xaf3c1ce9, (q31_t)0x6349791f, (q31_t)0xaf373d22, (q31_t)0x634581d6, (q31_t)0xaf325d8e,\n  (q31_t)0x63418a50, (q31_t)0xaf2d7e2b, (q31_t)0x633d928d, (q31_t)0xaf289efa, (q31_t)0x63399a8d, (q31_t)0xaf23bffb, (q31_t)0x6335a24f, (q31_t)0xaf1ee12e,\n  (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, (q31_t)0x632db11c, (q31_t)0xaf15242a, (q31_t)0x6329b827, (q31_t)0xaf1045f3, (q31_t)0x6325bef5, (q31_t)0xaf0b67ed,\n  (q31_t)0x6321c585, (q31_t)0xaf068a1a, (q31_t)0x631dcbd9, (q31_t)0xaf01ac78, (q31_t)0x6319d1ef, (q31_t)0xaefccf09, (q31_t)0x6315d7c8, (q31_t)0xaef7f1cb,\n  (q31_t)0x6311dd64, (q31_t)0xaef314c0, (q31_t)0x630de2c3, (q31_t)0xaeee37e6, (q31_t)0x6309e7e4, (q31_t)0xaee95b3f, (q31_t)0x6305ecc9, (q31_t)0xaee47ec9,\n  (q31_t)0x6301f171, (q31_t)0xaedfa285, (q31_t)0x62fdf5db, (q31_t)0xaedac674, (q31_t)0x62f9fa09, (q31_t)0xaed5ea95, (q31_t)0x62f5fdf9, (q31_t)0xaed10ee7,\n  (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62ee0523, (q31_t)0xaec75823, (q31_t)0x62ea085c, (q31_t)0xaec27d0c, (q31_t)0x62e60b58, (q31_t)0xaebda227,\n  (q31_t)0x62e20e17, (q31_t)0xaeb8c774, (q31_t)0x62de109a, (q31_t)0xaeb3ecf3, (q31_t)0x62da12df, (q31_t)0xaeaf12a4, (q31_t)0x62d614e7, (q31_t)0xaeaa3888,\n  (q31_t)0x62d216b3, (q31_t)0xaea55e9e, (q31_t)0x62ce1841, (q31_t)0xaea084e6, (q31_t)0x62ca1992, (q31_t)0xae9bab60, (q31_t)0x62c61aa7, (q31_t)0xae96d20c,\n  (q31_t)0x62c21b7e, (q31_t)0xae91f8eb, (q31_t)0x62be1c19, (q31_t)0xae8d1ffb, (q31_t)0x62ba1c77, (q31_t)0xae88473e, (q31_t)0x62b61c98, (q31_t)0xae836eb4,\n  (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x62ae1c23, (q31_t)0xae79be35, (q31_t)0x62aa1b8d, (q31_t)0xae74e641, (q31_t)0x62a61aba, (q31_t)0xae700e80,\n  (q31_t)0x62a219aa, (q31_t)0xae6b36f0, (q31_t)0x629e185e, (q31_t)0xae665f93, (q31_t)0x629a16d5, (q31_t)0xae618869, (q31_t)0x6296150f, (q31_t)0xae5cb171,\n  (q31_t)0x6292130c, (q31_t)0xae57daab, (q31_t)0x628e10cc, (q31_t)0xae530417, (q31_t)0x628a0e50, (q31_t)0xae4e2db6, (q31_t)0x62860b97, (q31_t)0xae495787,\n  (q31_t)0x628208a1, (q31_t)0xae44818b, (q31_t)0x627e056e, (q31_t)0xae3fabc1, (q31_t)0x627a01fe, (q31_t)0xae3ad629, (q31_t)0x6275fe52, (q31_t)0xae3600c4,\n  (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x626df643, (q31_t)0xae2c5691, (q31_t)0x6269f1e1, (q31_t)0xae2781c4, (q31_t)0x6265ed42, (q31_t)0xae22ad29,\n  (q31_t)0x6261e866, (q31_t)0xae1dd8c0, (q31_t)0x625de34e, (q31_t)0xae19048a, (q31_t)0x6259ddf8, (q31_t)0xae143086, (q31_t)0x6255d866, (q31_t)0xae0f5cb5,\n  (q31_t)0x6251d298, (q31_t)0xae0a8916, (q31_t)0x624dcc8d, (q31_t)0xae05b5aa, (q31_t)0x6249c645, (q31_t)0xae00e271, (q31_t)0x6245bfc0, (q31_t)0xadfc0f6a,\n  (q31_t)0x6241b8ff, (q31_t)0xadf73c96, (q31_t)0x623db202, (q31_t)0xadf269f4, (q31_t)0x6239aac7, (q31_t)0xaded9785, (q31_t)0x6235a351, (q31_t)0xade8c548,\n  (q31_t)0x62319b9d, (q31_t)0xade3f33e, (q31_t)0x622d93ad, (q31_t)0xaddf2167, (q31_t)0x62298b81, (q31_t)0xadda4fc3, (q31_t)0x62258317, (q31_t)0xadd57e51,\n  (q31_t)0x62217a72, (q31_t)0xadd0ad12, (q31_t)0x621d7190, (q31_t)0xadcbdc05, (q31_t)0x62196871, (q31_t)0xadc70b2c, (q31_t)0x62155f16, (q31_t)0xadc23a85,\n  (q31_t)0x6211557e, (q31_t)0xadbd6a10, (q31_t)0x620d4baa, (q31_t)0xadb899cf, (q31_t)0x62094199, (q31_t)0xadb3c9c0, (q31_t)0x6205374c, (q31_t)0xadaef9e4,\n  (q31_t)0x62012cc2, (q31_t)0xadaa2a3b, (q31_t)0x61fd21fc, (q31_t)0xada55ac4, (q31_t)0x61f916f9, (q31_t)0xada08b80, (q31_t)0x61f50bba, (q31_t)0xad9bbc70,\n  (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61ecf487, (q31_t)0xad921ee6, (q31_t)0x61e8e893, (q31_t)0xad8d506e, (q31_t)0x61e4dc62, (q31_t)0xad888229,\n  (q31_t)0x61e0cff5, (q31_t)0xad83b416, (q31_t)0x61dcc34c, (q31_t)0xad7ee636, (q31_t)0x61d8b666, (q31_t)0xad7a1889, (q31_t)0x61d4a944, (q31_t)0xad754b0f,\n  (q31_t)0x61d09be5, (q31_t)0xad707dc8, (q31_t)0x61cc8e4b, (q31_t)0xad6bb0b4, (q31_t)0x61c88074, (q31_t)0xad66e3d3, (q31_t)0x61c47260, (q31_t)0xad621725,\n  (q31_t)0x61c06410, (q31_t)0xad5d4aaa, (q31_t)0x61bc5584, (q31_t)0xad587e61, (q31_t)0x61b846bc, (q31_t)0xad53b24c, (q31_t)0x61b437b7, (q31_t)0xad4ee66a,\n  (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x61ac18f9, (q31_t)0xad454f3e, (q31_t)0x61a80940, (q31_t)0xad4083f5, (q31_t)0x61a3f94a, (q31_t)0xad3bb8df,\n  (q31_t)0x619fe918, (q31_t)0xad36edfc, (q31_t)0x619bd8aa, (q31_t)0xad32234b, (q31_t)0x6197c800, (q31_t)0xad2d58ce, (q31_t)0x6193b719, (q31_t)0xad288e85,\n  (q31_t)0x618fa5f7, (q31_t)0xad23c46e, (q31_t)0x618b9498, (q31_t)0xad1efa8a, (q31_t)0x618782fd, (q31_t)0xad1a30d9, (q31_t)0x61837126, (q31_t)0xad15675c,\n  (q31_t)0x617f5f12, (q31_t)0xad109e12, (q31_t)0x617b4cc3, (q31_t)0xad0bd4fb, (q31_t)0x61773a37, (q31_t)0xad070c17, (q31_t)0x61732770, (q31_t)0xad024366,\n  (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x616b012c, (q31_t)0xacf8b29e, (q31_t)0x6166edb0, (q31_t)0xacf3ea87, (q31_t)0x6162d9f8, (q31_t)0xacef22a3,\n  (q31_t)0x615ec603, (q31_t)0xacea5af2, (q31_t)0x615ab1d3, (q31_t)0xace59375, (q31_t)0x61569d67, (q31_t)0xace0cc2b, (q31_t)0x615288be, (q31_t)0xacdc0514,\n  (q31_t)0x614e73da, (q31_t)0xacd73e30, (q31_t)0x614a5eba, (q31_t)0xacd27780, (q31_t)0x6146495d, (q31_t)0xaccdb103, (q31_t)0x614233c5, (q31_t)0xacc8eab9,\n  (q31_t)0x613e1df0, (q31_t)0xacc424a3, (q31_t)0x613a07e0, (q31_t)0xacbf5ec0, (q31_t)0x6135f193, (q31_t)0xacba9910, (q31_t)0x6131db0b, (q31_t)0xacb5d394,\n  (q31_t)0x612dc447, (q31_t)0xacb10e4b, (q31_t)0x6129ad46, (q31_t)0xacac4935, (q31_t)0x6125960a, (q31_t)0xaca78453, (q31_t)0x61217e92, (q31_t)0xaca2bfa4,\n  (q31_t)0x611d66de, (q31_t)0xac9dfb29, (q31_t)0x61194eee, (q31_t)0xac9936e1, (q31_t)0x611536c2, (q31_t)0xac9472cd, (q31_t)0x61111e5b, (q31_t)0xac8faeec,\n  (q31_t)0x610d05b7, (q31_t)0xac8aeb3e, (q31_t)0x6108ecd8, (q31_t)0xac8627c4, (q31_t)0x6104d3bc, (q31_t)0xac81647e, (q31_t)0x6100ba65, (q31_t)0xac7ca16b,\n  (q31_t)0x60fca0d2, (q31_t)0xac77de8b, (q31_t)0x60f88703, (q31_t)0xac731bdf, (q31_t)0x60f46cf9, (q31_t)0xac6e5967, (q31_t)0x60f052b2, (q31_t)0xac699722,\n  (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60e81d72, (q31_t)0xac601333, (q31_t)0x60e40278, (q31_t)0xac5b5189, (q31_t)0x60dfe743, (q31_t)0xac569012,\n  (q31_t)0x60dbcbd1, (q31_t)0xac51cecf, (q31_t)0x60d7b024, (q31_t)0xac4d0dc0, (q31_t)0x60d3943b, (q31_t)0xac484ce4, (q31_t)0x60cf7817, (q31_t)0xac438c3c,\n  (q31_t)0x60cb5bb7, (q31_t)0xac3ecbc7, (q31_t)0x60c73f1b, (q31_t)0xac3a0b87, (q31_t)0x60c32243, (q31_t)0xac354b7a, (q31_t)0x60bf0530, (q31_t)0xac308ba0,\n  (q31_t)0x60bae7e1, (q31_t)0xac2bcbfa, (q31_t)0x60b6ca56, (q31_t)0xac270c88, (q31_t)0x60b2ac8f, (q31_t)0xac224d4a, (q31_t)0x60ae8e8d, (q31_t)0xac1d8e40,\n  (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x60a651d7, (q31_t)0xac1410c6, (q31_t)0x60a23322, (q31_t)0xac0f5256, (q31_t)0x609e1431, (q31_t)0xac0a941b,\n  (q31_t)0x6099f505, (q31_t)0xac05d613, (q31_t)0x6095d59d, (q31_t)0xac01183f, (q31_t)0x6091b5fa, (q31_t)0xabfc5a9f, (q31_t)0x608d961b, (q31_t)0xabf79d33,\n  (q31_t)0x60897601, (q31_t)0xabf2dffb, (q31_t)0x608555ab, (q31_t)0xabee22f6, (q31_t)0x60813519, (q31_t)0xabe96625, (q31_t)0x607d144c, (q31_t)0xabe4a988,\n  (q31_t)0x6078f344, (q31_t)0xabdfed1f, (q31_t)0x6074d200, (q31_t)0xabdb30ea, (q31_t)0x6070b080, (q31_t)0xabd674e9, (q31_t)0x606c8ec5, (q31_t)0xabd1b91c,\n  (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x60644a9d, (q31_t)0xabc8421d, (q31_t)0x6060282f, (q31_t)0xabc386ec, (q31_t)0x605c0587, (q31_t)0xabbecbee,\n  (q31_t)0x6057e2a2, (q31_t)0xabba1125, (q31_t)0x6053bf82, (q31_t)0xabb5568f, (q31_t)0x604f9c27, (q31_t)0xabb09c2e, (q31_t)0x604b7891, (q31_t)0xababe200,\n  (q31_t)0x604754bf, (q31_t)0xaba72807, (q31_t)0x604330b1, (q31_t)0xaba26e41, (q31_t)0x603f0c69, (q31_t)0xab9db4b0, (q31_t)0x603ae7e5, (q31_t)0xab98fb52,\n  (q31_t)0x6036c325, (q31_t)0xab944229, (q31_t)0x60329e2a, (q31_t)0xab8f8934, (q31_t)0x602e78f4, (q31_t)0xab8ad073, (q31_t)0x602a5383, (q31_t)0xab8617e6,\n  (q31_t)0x60262dd6, (q31_t)0xab815f8d, (q31_t)0x602207ee, (q31_t)0xab7ca768, (q31_t)0x601de1ca, (q31_t)0xab77ef77, (q31_t)0x6019bb6b, (q31_t)0xab7337bb,\n  (q31_t)0x601594d1, (q31_t)0xab6e8032, (q31_t)0x60116dfc, (q31_t)0xab69c8de, (q31_t)0x600d46ec, (q31_t)0xab6511be, (q31_t)0x60091fa0, (q31_t)0xab605ad2,\n  (q31_t)0x6004f819, (q31_t)0xab5ba41a, (q31_t)0x6000d057, (q31_t)0xab56ed97, (q31_t)0x5ffca859, (q31_t)0xab523748, (q31_t)0x5ff88021, (q31_t)0xab4d812d,\n  (q31_t)0x5ff457ad, (q31_t)0xab48cb46, (q31_t)0x5ff02efe, (q31_t)0xab441593, (q31_t)0x5fec0613, (q31_t)0xab3f6015, (q31_t)0x5fe7dcee, (q31_t)0xab3aaacb,\n  (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fdf89f2, (q31_t)0xab3140d4, (q31_t)0x5fdb601b, (q31_t)0xab2c8c27, (q31_t)0x5fd73609, (q31_t)0xab27d7ae,\n  (q31_t)0x5fd30bbc, (q31_t)0xab23236a, (q31_t)0x5fcee133, (q31_t)0xab1e6f5a, (q31_t)0x5fcab670, (q31_t)0xab19bb7e, (q31_t)0x5fc68b72, (q31_t)0xab1507d7,\n  (q31_t)0x5fc26038, (q31_t)0xab105464, (q31_t)0x5fbe34c4, (q31_t)0xab0ba125, (q31_t)0x5fba0914, (q31_t)0xab06ee1b, (q31_t)0x5fb5dd29, (q31_t)0xab023b46,\n  (q31_t)0x5fb1b104, (q31_t)0xaafd88a4, (q31_t)0x5fad84a3, (q31_t)0xaaf8d637, (q31_t)0x5fa95807, (q31_t)0xaaf423ff, (q31_t)0x5fa52b31, (q31_t)0xaaef71fb,\n  (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f9cd0d2, (q31_t)0xaae60e91, (q31_t)0x5f98a34a, (q31_t)0xaae15d2a, (q31_t)0x5f947588, (q31_t)0xaadcabf8,\n  (q31_t)0x5f90478a, (q31_t)0xaad7fafb, (q31_t)0x5f8c1951, (q31_t)0xaad34a32, (q31_t)0x5f87eade, (q31_t)0xaace999d, (q31_t)0x5f83bc2f, (q31_t)0xaac9e93e,\n  (q31_t)0x5f7f8d46, (q31_t)0xaac53912, (q31_t)0x5f7b5e22, (q31_t)0xaac0891c, (q31_t)0x5f772ec2, (q31_t)0xaabbd959, (q31_t)0x5f72ff28, (q31_t)0xaab729cc,\n  (q31_t)0x5f6ecf53, (q31_t)0xaab27a73, (q31_t)0x5f6a9f44, (q31_t)0xaaadcb4f, (q31_t)0x5f666ef9, (q31_t)0xaaa91c5f, (q31_t)0x5f623e73, (q31_t)0xaaa46da4,\n  (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f59dcb8, (q31_t)0xaa9b10cc, (q31_t)0x5f55ab82, (q31_t)0xaa9662af, (q31_t)0x5f517a11, (q31_t)0xaa91b4c7,\n  (q31_t)0x5f4d4865, (q31_t)0xaa8d0713, (q31_t)0x5f49167f, (q31_t)0xaa885994, (q31_t)0x5f44e45e, (q31_t)0xaa83ac4a, (q31_t)0x5f40b202, (q31_t)0xaa7eff34,\n  (q31_t)0x5f3c7f6b, (q31_t)0xaa7a5253, (q31_t)0x5f384c9a, (q31_t)0xaa75a5a8, (q31_t)0x5f34198e, (q31_t)0xaa70f930, (q31_t)0x5f2fe647, (q31_t)0xaa6c4cee,\n  (q31_t)0x5f2bb2c5, (q31_t)0xaa67a0e0, (q31_t)0x5f277f09, (q31_t)0xaa62f507, (q31_t)0x5f234b12, (q31_t)0xaa5e4963, (q31_t)0x5f1f16e0, (q31_t)0xaa599df4,\n  (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, (q31_t)0x5f16adcc, (q31_t)0xaa5047b4, (q31_t)0x5f1278eb, (q31_t)0xaa4b9ce3, (q31_t)0x5f0e43ce, (q31_t)0xaa46f248,\n  (q31_t)0x5f0a0e77, (q31_t)0xaa4247e1, (q31_t)0x5f05d8e6, (q31_t)0xaa3d9daf, (q31_t)0x5f01a31a, (q31_t)0xaa38f3b1, (q31_t)0x5efd6d13, (q31_t)0xaa3449e9,\n  (q31_t)0x5ef936d1, (q31_t)0xaa2fa056, (q31_t)0x5ef50055, (q31_t)0xaa2af6f7, (q31_t)0x5ef0c99f, (q31_t)0xaa264dce, (q31_t)0x5eec92ae, (q31_t)0xaa21a4d9,\n  (q31_t)0x5ee85b82, (q31_t)0xaa1cfc1a, (q31_t)0x5ee4241c, (q31_t)0xaa18538f, (q31_t)0x5edfec7b, (q31_t)0xaa13ab3a, (q31_t)0x5edbb49f, (q31_t)0xaa0f0319,\n  (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5ed34439, (q31_t)0xaa05b377, (q31_t)0x5ecf0baf, (q31_t)0xaa010bf6, (q31_t)0x5ecad2e9, (q31_t)0xa9fc64a9,\n  (q31_t)0x5ec699e9, (q31_t)0xa9f7bd92, (q31_t)0x5ec260af, (q31_t)0xa9f316b0, (q31_t)0x5ebe273b, (q31_t)0xa9ee7002, (q31_t)0x5eb9ed8b, (q31_t)0xa9e9c98a,\n  (q31_t)0x5eb5b3a2, (q31_t)0xa9e52347, (q31_t)0x5eb1797e, (q31_t)0xa9e07d39, (q31_t)0x5ead3f1f, (q31_t)0xa9dbd761, (q31_t)0x5ea90487, (q31_t)0xa9d731bd,\n  (q31_t)0x5ea4c9b3, (q31_t)0xa9d28c4e, (q31_t)0x5ea08ea6, (q31_t)0xa9cde715, (q31_t)0x5e9c535e, (q31_t)0xa9c94211, (q31_t)0x5e9817dc, (q31_t)0xa9c49d42,\n  (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e8fa028, (q31_t)0xa9bb5444, (q31_t)0x5e8b63f7, (q31_t)0xa9b6b014, (q31_t)0x5e87278b, (q31_t)0xa9b20c1a,\n  (q31_t)0x5e82eae5, (q31_t)0xa9ad6855, (q31_t)0x5e7eae05, (q31_t)0xa9a8c4c5, (q31_t)0x5e7a70ea, (q31_t)0xa9a4216b, (q31_t)0x5e763395, (q31_t)0xa99f7e46,\n  (q31_t)0x5e71f606, (q31_t)0xa99adb56, (q31_t)0x5e6db83d, (q31_t)0xa996389b, (q31_t)0x5e697a39, (q31_t)0xa9919616, (q31_t)0x5e653bfc, (q31_t)0xa98cf3c6,\n  (q31_t)0x5e60fd84, (q31_t)0xa98851ac, (q31_t)0x5e5cbed1, (q31_t)0xa983afc6, (q31_t)0x5e587fe5, (q31_t)0xa97f0e16, (q31_t)0x5e5440be, (q31_t)0xa97a6c9c,\n  (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e4bc1c2, (q31_t)0xa9712a47, (q31_t)0x5e4781ed, (q31_t)0xa96c896c, (q31_t)0x5e4341de, (q31_t)0xa967e8c7,\n  (q31_t)0x5e3f0194, (q31_t)0xa9634858, (q31_t)0x5e3ac110, (q31_t)0xa95ea81d, (q31_t)0x5e368053, (q31_t)0xa95a0819, (q31_t)0x5e323f5b, (q31_t)0xa9556849,\n  (q31_t)0x5e2dfe29, (q31_t)0xa950c8b0, (q31_t)0x5e29bcbd, (q31_t)0xa94c294b, (q31_t)0x5e257b17, (q31_t)0xa9478a1c, (q31_t)0x5e213936, (q31_t)0xa942eb23,\n  (q31_t)0x5e1cf71c, (q31_t)0xa93e4c5f, (q31_t)0x5e18b4c8, (q31_t)0xa939add1, (q31_t)0x5e147239, (q31_t)0xa9350f78, (q31_t)0x5e102f71, (q31_t)0xa9307155,\n  (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, (q31_t)0x5e07a932, (q31_t)0xa92735af, (q31_t)0x5e0365bb, (q31_t)0xa922982c, (q31_t)0x5dff220b, (q31_t)0xa91dfadf,\n  (q31_t)0x5dfade20, (q31_t)0xa9195dc7, (q31_t)0x5df699fc, (q31_t)0xa914c0e6, (q31_t)0x5df2559e, (q31_t)0xa9102439, (q31_t)0x5dee1105, (q31_t)0xa90b87c3,\n  (q31_t)0x5de9cc33, (q31_t)0xa906eb82, (q31_t)0x5de58727, (q31_t)0xa9024f76, (q31_t)0x5de141e1, (q31_t)0xa8fdb3a1, (q31_t)0x5ddcfc61, (q31_t)0xa8f91801,\n  (q31_t)0x5dd8b6a7, (q31_t)0xa8f47c97, (q31_t)0x5dd470b3, (q31_t)0xa8efe162, (q31_t)0x5dd02a85, (q31_t)0xa8eb4663, (q31_t)0x5dcbe41d, (q31_t)0xa8e6ab9a,\n  (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5dc356a1, (q31_t)0xa8dd76a9, (q31_t)0x5dbf0f8c, (q31_t)0xa8d8dc81, (q31_t)0x5dbac83d, (q31_t)0xa8d4428f,\n  (q31_t)0x5db680b4, (q31_t)0xa8cfa8d2, (q31_t)0x5db238f1, (q31_t)0xa8cb0f4b, (q31_t)0x5dadf0f5, (q31_t)0xa8c675fb, (q31_t)0x5da9a8bf, (q31_t)0xa8c1dce0,\n  (q31_t)0x5da5604f, (q31_t)0xa8bd43fa, (q31_t)0x5da117a5, (q31_t)0xa8b8ab4b, (q31_t)0x5d9ccec2, (q31_t)0xa8b412d1, (q31_t)0x5d9885a5, (q31_t)0xa8af7a8e,\n  (q31_t)0x5d943c4e, (q31_t)0xa8aae280, (q31_t)0x5d8ff2bd, (q31_t)0xa8a64aa8, (q31_t)0x5d8ba8f3, (q31_t)0xa8a1b306, (q31_t)0x5d875eef, (q31_t)0xa89d1b99,\n  (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d7eca39, (q31_t)0xa893ed63, (q31_t)0x5d7a7f88, (q31_t)0xa88f5698, (q31_t)0x5d76349d, (q31_t)0xa88ac004,\n  (q31_t)0x5d71e979, (q31_t)0xa88629a5, (q31_t)0x5d6d9e1b, (q31_t)0xa881937c, (q31_t)0x5d695283, (q31_t)0xa87cfd8a, (q31_t)0x5d6506b2, (q31_t)0xa87867cd,\n  (q31_t)0x5d60baa7, (q31_t)0xa873d246, (q31_t)0x5d5c6e62, (q31_t)0xa86f3cf6, (q31_t)0x5d5821e4, (q31_t)0xa86aa7db, (q31_t)0x5d53d52d, (q31_t)0xa86612f6,\n  (q31_t)0x5d4f883b, (q31_t)0xa8617e48, (q31_t)0x5d4b3b10, (q31_t)0xa85ce9cf, (q31_t)0x5d46edac, (q31_t)0xa858558d, (q31_t)0x5d42a00e, (q31_t)0xa853c180,\n  (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5d3a0426, (q31_t)0xa84a9a0a, (q31_t)0x5d35b5db, (q31_t)0xa84606a0, (q31_t)0x5d316757, (q31_t)0xa841736c,\n  (q31_t)0x5d2d189a, (q31_t)0xa83ce06e, (q31_t)0x5d28c9a3, (q31_t)0xa8384da6, (q31_t)0x5d247a72, (q31_t)0xa833bb14, (q31_t)0x5d202b09, (q31_t)0xa82f28b9,\n  (q31_t)0x5d1bdb65, (q31_t)0xa82a9693, (q31_t)0x5d178b89, (q31_t)0xa82604a4, (q31_t)0x5d133b72, (q31_t)0xa82172eb, (q31_t)0x5d0eeb23, (q31_t)0xa81ce169,\n  (q31_t)0x5d0a9a9a, (q31_t)0xa818501c, (q31_t)0x5d0649d7, (q31_t)0xa813bf06, (q31_t)0x5d01f8dc, (q31_t)0xa80f2e26, (q31_t)0x5cfda7a7, (q31_t)0xa80a9d7c,\n  (q31_t)0x5cf95638, (q31_t)0xa8060d08, (q31_t)0x5cf50490, (q31_t)0xa8017ccb, (q31_t)0x5cf0b2af, (q31_t)0xa7fcecc4, (q31_t)0x5cec6095, (q31_t)0xa7f85cf3,\n  (q31_t)0x5ce80e41, (q31_t)0xa7f3cd59, (q31_t)0x5ce3bbb4, (q31_t)0xa7ef3df5, (q31_t)0x5cdf68ed, (q31_t)0xa7eaaec7, (q31_t)0x5cdb15ed, (q31_t)0xa7e61fd0,\n  (q31_t)0x5cd6c2b5, (q31_t)0xa7e1910f, (q31_t)0x5cd26f42, (q31_t)0xa7dd0284, (q31_t)0x5cce1b97, (q31_t)0xa7d8742f, (q31_t)0x5cc9c7b2, (q31_t)0xa7d3e611,\n  (q31_t)0x5cc57394, (q31_t)0xa7cf582a, (q31_t)0x5cc11f3d, (q31_t)0xa7caca79, (q31_t)0x5cbccaac, (q31_t)0xa7c63cfe, (q31_t)0x5cb875e3, (q31_t)0xa7c1afb9,\n  (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5cafcba4, (q31_t)0xa7b895d4, (q31_t)0x5cab762f, (q31_t)0xa7b40933, (q31_t)0x5ca72080, (q31_t)0xa7af7cc8,\n  (q31_t)0x5ca2ca99, (q31_t)0xa7aaf094, (q31_t)0x5c9e7478, (q31_t)0xa7a66497, (q31_t)0x5c9a1e1e, (q31_t)0xa7a1d8d0, (q31_t)0x5c95c78b, (q31_t)0xa79d4d3f,\n  (q31_t)0x5c9170bf, (q31_t)0xa798c1e5, (q31_t)0x5c8d19ba, (q31_t)0xa79436c1, (q31_t)0x5c88c27c, (q31_t)0xa78fabd4, (q31_t)0x5c846b05, (q31_t)0xa78b211e,\n  (q31_t)0x5c801354, (q31_t)0xa786969e, (q31_t)0x5c7bbb6b, (q31_t)0xa7820c55, (q31_t)0x5c776348, (q31_t)0xa77d8242, (q31_t)0x5c730aed, (q31_t)0xa778f866,\n  (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c6a598b, (q31_t)0xa76fe551, (q31_t)0x5c660084, (q31_t)0xa76b5c19, (q31_t)0x5c61a745, (q31_t)0xa766d317,\n  (q31_t)0x5c5d4dcc, (q31_t)0xa7624a4d, (q31_t)0x5c58f41a, (q31_t)0xa75dc1b8, (q31_t)0x5c549a30, (q31_t)0xa759395b, (q31_t)0x5c50400d, (q31_t)0xa754b134,\n  (q31_t)0x5c4be5b0, (q31_t)0xa7502943, (q31_t)0x5c478b1b, (q31_t)0xa74ba18a, (q31_t)0x5c43304d, (q31_t)0xa7471a07, (q31_t)0x5c3ed545, (q31_t)0xa74292bb,\n  (q31_t)0x5c3a7a05, (q31_t)0xa73e0ba5, (q31_t)0x5c361e8c, (q31_t)0xa73984c7, (q31_t)0x5c31c2db, (q31_t)0xa734fe1f, (q31_t)0x5c2d66f0, (q31_t)0xa73077ae,\n  (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5c24ae70, (q31_t)0xa7276b70, (q31_t)0x5c2051db, (q31_t)0xa722e5a3, (q31_t)0x5c1bf50d, (q31_t)0xa71e600d,\n  (q31_t)0x5c179806, (q31_t)0xa719daae, (q31_t)0x5c133ac6, (q31_t)0xa7155586, (q31_t)0x5c0edd4e, (q31_t)0xa710d095, (q31_t)0x5c0a7f9c, (q31_t)0xa70c4bda,\n  (q31_t)0x5c0621b2, (q31_t)0xa707c757, (q31_t)0x5c01c38f, (q31_t)0xa703430a, (q31_t)0x5bfd6534, (q31_t)0xa6febef4, (q31_t)0x5bf906a0, (q31_t)0xa6fa3b15,\n  (q31_t)0x5bf4a7d2, (q31_t)0xa6f5b76d, (q31_t)0x5bf048cd, (q31_t)0xa6f133fc, (q31_t)0x5bebe98e, (q31_t)0xa6ecb0c2, (q31_t)0x5be78a17, (q31_t)0xa6e82dbe,\n  (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, (q31_t)0x5bdeca7f, (q31_t)0xa6df285d, (q31_t)0x5bda6a5d, (q31_t)0xa6daa5fe, (q31_t)0x5bd60a03, (q31_t)0xa6d623d7,\n  (q31_t)0x5bd1a971, (q31_t)0xa6d1a1e7, (q31_t)0x5bcd48a6, (q31_t)0xa6cd202d, (q31_t)0x5bc8e7a2, (q31_t)0xa6c89eab, (q31_t)0x5bc48666, (q31_t)0xa6c41d60,\n  (q31_t)0x5bc024f0, (q31_t)0xa6bf9c4b, (q31_t)0x5bbbc343, (q31_t)0xa6bb1b6e, (q31_t)0x5bb7615d, (q31_t)0xa6b69ac8, (q31_t)0x5bb2ff3e, (q31_t)0xa6b21a59,\n  (q31_t)0x5bae9ce7, (q31_t)0xa6ad9a21, (q31_t)0x5baa3a57, (q31_t)0xa6a91a20, (q31_t)0x5ba5d78e, (q31_t)0xa6a49a56, (q31_t)0x5ba1748d, (q31_t)0xa6a01ac4,\n  (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b98ade2, (q31_t)0xa6971c44, (q31_t)0x5b944a37, (q31_t)0xa6929d57, (q31_t)0x5b8fe654, (q31_t)0xa68e1ea1,\n  (q31_t)0x5b8b8239, (q31_t)0xa689a022, (q31_t)0x5b871de5, (q31_t)0xa68521da, (q31_t)0x5b82b958, (q31_t)0xa680a3ca, (q31_t)0x5b7e5493, (q31_t)0xa67c25f0,\n  (q31_t)0x5b79ef96, (q31_t)0xa677a84e, (q31_t)0x5b758a60, (q31_t)0xa6732ae3, (q31_t)0x5b7124f2, (q31_t)0xa66eadb0, (q31_t)0x5b6cbf4c, (q31_t)0xa66a30b3,\n  (q31_t)0x5b68596d, (q31_t)0xa665b3ee, (q31_t)0x5b63f355, (q31_t)0xa6613760, (q31_t)0x5b5f8d06, (q31_t)0xa65cbb0a, (q31_t)0x5b5b267e, (q31_t)0xa6583eeb,\n  (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b5258c4, (q31_t)0xa64f4752, (q31_t)0x5b4df193, (q31_t)0xa64acbd9, (q31_t)0x5b498a2a, (q31_t)0xa6465097,\n  (q31_t)0x5b452288, (q31_t)0xa641d58c, (q31_t)0x5b40baae, (q31_t)0xa63d5ab9, (q31_t)0x5b3c529c, (q31_t)0xa638e01d, (q31_t)0x5b37ea51, (q31_t)0xa63465b9,\n  (q31_t)0x5b3381ce, (q31_t)0xa62feb8b, (q31_t)0x5b2f1913, (q31_t)0xa62b7196, (q31_t)0x5b2ab020, (q31_t)0xa626f7d7, (q31_t)0x5b2646f4, (q31_t)0xa6227e50,\n  (q31_t)0x5b21dd90, (q31_t)0xa61e0501, (q31_t)0x5b1d73f4, (q31_t)0xa6198be9, (q31_t)0x5b190a20, (q31_t)0xa6151308, (q31_t)0x5b14a014, (q31_t)0xa6109a5f,\n  (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5b0bcb52, (q31_t)0xa607a9b4, (q31_t)0x5b07609d, (q31_t)0xa60331b1, (q31_t)0x5b02f5b0, (q31_t)0xa5feb9e6,\n  (q31_t)0x5afe8a8b, (q31_t)0xa5fa4252, (q31_t)0x5afa1f2e, (q31_t)0xa5f5caf6, (q31_t)0x5af5b398, (q31_t)0xa5f153d2, (q31_t)0x5af147ca, (q31_t)0xa5ecdce5,\n  (q31_t)0x5aecdbc5, (q31_t)0xa5e8662f, (q31_t)0x5ae86f87, (q31_t)0xa5e3efb1, (q31_t)0x5ae40311, (q31_t)0xa5df796b, (q31_t)0x5adf9663, (q31_t)0xa5db035c,\n  (q31_t)0x5adb297d, (q31_t)0xa5d68d85, (q31_t)0x5ad6bc5f, (q31_t)0xa5d217e6, (q31_t)0x5ad24f09, (q31_t)0xa5cda27e, (q31_t)0x5acde17b, (q31_t)0xa5c92d4e,\n  (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, (q31_t)0x5ac505b7, (q31_t)0xa5c04395, (q31_t)0x5ac09781, (q31_t)0xa5bbcf0b, (q31_t)0x5abc2912, (q31_t)0xa5b75aba,\n  (q31_t)0x5ab7ba6c, (q31_t)0xa5b2e6a0, (q31_t)0x5ab34b8e, (q31_t)0xa5ae72be, (q31_t)0x5aaedc78, (q31_t)0xa5a9ff14, (q31_t)0x5aaa6d2b, (q31_t)0xa5a58ba1,\n  (q31_t)0x5aa5fda5, (q31_t)0xa5a11866, (q31_t)0x5aa18de7, (q31_t)0xa59ca563, (q31_t)0x5a9d1df1, (q31_t)0xa5983297, (q31_t)0x5a98adc4, (q31_t)0xa593c004,\n  (q31_t)0x5a943d5e, (q31_t)0xa58f4da8, (q31_t)0x5a8fccc1, (q31_t)0xa58adb84, (q31_t)0x5a8b5bec, (q31_t)0xa5866997, (q31_t)0x5a86eadf, (q31_t)0xa581f7e3,\n  (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a7e081d, (q31_t)0xa5791521, (q31_t)0x5a799669, (q31_t)0xa574a414, (q31_t)0x5a75247c, (q31_t)0xa570333f,\n  (q31_t)0x5a70b258, (q31_t)0xa56bc2a2, (q31_t)0x5a6c3ffc, (q31_t)0xa567523c, (q31_t)0x5a67cd69, (q31_t)0xa562e20f, (q31_t)0x5a635a9d, (q31_t)0xa55e7219,\n  (q31_t)0x5a5ee79a, (q31_t)0xa55a025b, (q31_t)0x5a5a745f, (q31_t)0xa55592d5, (q31_t)0x5a5600ec, (q31_t)0xa5512388, (q31_t)0x5a518d42, (q31_t)0xa54cb472,\n  (q31_t)0x5a4d1960, (q31_t)0xa5484594, (q31_t)0x5a48a546, (q31_t)0xa543d6ee, (q31_t)0x5a4430f5, (q31_t)0xa53f687f, (q31_t)0x5a3fbc6b, (q31_t)0xa53afa49,\n  (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x5a36d2b2, (q31_t)0xa5321e85, (q31_t)0x5a325d82, (q31_t)0xa52db0f7, (q31_t)0x5a2de81a, (q31_t)0xa52943a1,\n  (q31_t)0x5a29727b, (q31_t)0xa524d683, (q31_t)0x5a24fca4, (q31_t)0xa520699d, (q31_t)0x5a208695, (q31_t)0xa51bfcef, (q31_t)0x5a1c104f, (q31_t)0xa5179079,\n  (q31_t)0x5a1799d1, (q31_t)0xa513243b, (q31_t)0x5a13231b, (q31_t)0xa50eb836, (q31_t)0x5a0eac2e, (q31_t)0xa50a4c68, (q31_t)0x5a0a350a, (q31_t)0xa505e0d2,\n  (q31_t)0x5a05bdae, (q31_t)0xa5017575, (q31_t)0x5a01461a, (q31_t)0xa4fd0a50, (q31_t)0x59fcce4f, (q31_t)0xa4f89f63, (q31_t)0x59f8564c, (q31_t)0xa4f434ae,\n  (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59ef65a1, (q31_t)0xa4eb5fec, (q31_t)0x59eaecf8, (q31_t)0xa4e6f5e0, (q31_t)0x59e67417, (q31_t)0xa4e28c0c,\n  (q31_t)0x59e1faff, (q31_t)0xa4de2270, (q31_t)0x59dd81b0, (q31_t)0xa4d9b90c, (q31_t)0x59d90829, (q31_t)0xa4d54fe0, (q31_t)0x59d48e6a, (q31_t)0xa4d0e6ed,\n  (q31_t)0x59d01475, (q31_t)0xa4cc7e32, (q31_t)0x59cb9a47, (q31_t)0xa4c815af, (q31_t)0x59c71fe3, (q31_t)0xa4c3ad64, (q31_t)0x59c2a547, (q31_t)0xa4bf4552,\n  (q31_t)0x59be2a74, (q31_t)0xa4badd78, (q31_t)0x59b9af69, (q31_t)0xa4b675d6, (q31_t)0x59b53427, (q31_t)0xa4b20e6d, (q31_t)0x59b0b8ae, (q31_t)0xa4ada73c,\n  (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, (q31_t)0x59a7c115, (q31_t)0xa4a4d982, (q31_t)0x59a344f6, (q31_t)0xa4a072fa, (q31_t)0x599ec8a0, (q31_t)0xa49c0cab,\n  (q31_t)0x599a4c12, (q31_t)0xa497a693, (q31_t)0x5995cf4d, (q31_t)0xa49340b4, (q31_t)0x59915250, (q31_t)0xa48edb0e, (q31_t)0x598cd51d, (q31_t)0xa48a75a0,\n  (q31_t)0x598857b2, (q31_t)0xa486106a, (q31_t)0x5983da10, (q31_t)0xa481ab6d, (q31_t)0x597f5c36, (q31_t)0xa47d46a8, (q31_t)0x597ade26, (q31_t)0xa478e21b,\n  (q31_t)0x59765fde, (q31_t)0xa4747dc7, (q31_t)0x5971e15f, (q31_t)0xa47019ac, (q31_t)0x596d62a9, (q31_t)0xa46bb5c9, (q31_t)0x5968e3bc, (q31_t)0xa467521e,\n  (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x595fe53c, (q31_t)0xa45e8b73, (q31_t)0x595b65aa, (q31_t)0xa45a2872, (q31_t)0x5956e5e0, (q31_t)0xa455c5a9,\n  (q31_t)0x595265df, (q31_t)0xa4516319, (q31_t)0x594de5a7, (q31_t)0xa44d00c2, (q31_t)0x59496538, (q31_t)0xa4489ea3, (q31_t)0x5944e492, (q31_t)0xa4443cbd,\n  (q31_t)0x594063b5, (q31_t)0xa43fdb10, (q31_t)0x593be2a0, (q31_t)0xa43b799a, (q31_t)0x59376155, (q31_t)0xa437185e, (q31_t)0x5932dfd3, (q31_t)0xa432b75a,\n  (q31_t)0x592e5e19, (q31_t)0xa42e568f, (q31_t)0x5929dc29, (q31_t)0xa429f5fd, (q31_t)0x59255a02, (q31_t)0xa42595a3, (q31_t)0x5920d7a3, (q31_t)0xa4213581,\n  (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x5917d242, (q31_t)0xa41875e9, (q31_t)0x59134f3e, (q31_t)0xa4141672, (q31_t)0x590ecc04, (q31_t)0xa40fb733,\n  (q31_t)0x590a4893, (q31_t)0xa40b582e, (q31_t)0x5905c4eb, (q31_t)0xa406f960, (q31_t)0x5901410c, (q31_t)0xa4029acc, (q31_t)0x58fcbcf6, (q31_t)0xa3fe3c71,\n  (q31_t)0x58f838a9, (q31_t)0xa3f9de4e, (q31_t)0x58f3b426, (q31_t)0xa3f58064, (q31_t)0x58ef2f6b, (q31_t)0xa3f122b2, (q31_t)0x58eaaa7a, (q31_t)0xa3ecc53a,\n  (q31_t)0x58e62552, (q31_t)0xa3e867fa, (q31_t)0x58e19ff3, (q31_t)0xa3e40af3, (q31_t)0x58dd1a5d, (q31_t)0xa3dfae25, (q31_t)0x58d89490, (q31_t)0xa3db5190,\n  (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x58cf8852, (q31_t)0xa3d29910, (q31_t)0x58cb01e1, (q31_t)0xa3ce3d25, (q31_t)0x58c67b39, (q31_t)0xa3c9e174,\n  (q31_t)0x58c1f45b, (q31_t)0xa3c585fb, (q31_t)0x58bd6d45, (q31_t)0xa3c12abb, (q31_t)0x58b8e5f9, (q31_t)0xa3bccfb3, (q31_t)0x58b45e76, (q31_t)0xa3b874e5,\n  (q31_t)0x58afd6bd, (q31_t)0xa3b41a50, (q31_t)0x58ab4ecc, (q31_t)0xa3afbff3, (q31_t)0x58a6c6a5, (q31_t)0xa3ab65d0, (q31_t)0x58a23e48, (q31_t)0xa3a70be6,\n  (q31_t)0x589db5b3, (q31_t)0xa3a2b234, (q31_t)0x58992ce9, (q31_t)0xa39e58bb, (q31_t)0x5894a3e7, (q31_t)0xa399ff7c, (q31_t)0x58901aaf, (q31_t)0xa395a675,\n  (q31_t)0x588b9140, (q31_t)0xa3914da8, (q31_t)0x5887079a, (q31_t)0xa38cf513, (q31_t)0x58827dbe, (q31_t)0xa3889cb8, (q31_t)0x587df3ab, (q31_t)0xa3844495,\n  (q31_t)0x58796962, (q31_t)0xa37fecac, (q31_t)0x5874dee2, (q31_t)0xa37b94fb, (q31_t)0x5870542c, (q31_t)0xa3773d84, (q31_t)0x586bc93f, (q31_t)0xa372e646,\n  (q31_t)0x58673e1b, (q31_t)0xa36e8f41, (q31_t)0x5862b2c1, (q31_t)0xa36a3875, (q31_t)0x585e2730, (q31_t)0xa365e1e2, (q31_t)0x58599b69, (q31_t)0xa3618b88,\n  (q31_t)0x58550f6c, (q31_t)0xa35d3567, (q31_t)0x58508338, (q31_t)0xa358df80, (q31_t)0x584bf6cd, (q31_t)0xa35489d1, (q31_t)0x58476a2c, (q31_t)0xa350345c,\n  (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x583e5047, (q31_t)0xa3478a1d, (q31_t)0x5839c302, (q31_t)0xa3433554, (q31_t)0x58353587, (q31_t)0xa33ee0c3,\n  (q31_t)0x5830a7d6, (q31_t)0xa33a8c6c, (q31_t)0x582c19ef, (q31_t)0xa336384e, (q31_t)0x58278bd1, (q31_t)0xa331e469, (q31_t)0x5822fd7c, (q31_t)0xa32d90be,\n  (q31_t)0x581e6ef1, (q31_t)0xa3293d4b, (q31_t)0x5819e030, (q31_t)0xa324ea13, (q31_t)0x58155139, (q31_t)0xa3209713, (q31_t)0x5810c20b, (q31_t)0xa31c444c,\n  (q31_t)0x580c32a7, (q31_t)0xa317f1bf, (q31_t)0x5807a30d, (q31_t)0xa3139f6b, (q31_t)0x5803133c, (q31_t)0xa30f4d51, (q31_t)0x57fe8335, (q31_t)0xa30afb70,\n  (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57f56284, (q31_t)0xa3025859, (q31_t)0x57f0d1da, (q31_t)0xa2fe0724, (q31_t)0x57ec40fa, (q31_t)0xa2f9b629,\n  (q31_t)0x57e7afe4, (q31_t)0xa2f56566, (q31_t)0x57e31e97, (q31_t)0xa2f114dd, (q31_t)0x57de8d15, (q31_t)0xa2ecc48e, (q31_t)0x57d9fb5c, (q31_t)0xa2e87477,\n  (q31_t)0x57d5696d, (q31_t)0xa2e4249b, (q31_t)0x57d0d747, (q31_t)0xa2dfd4f7, (q31_t)0x57cc44ec, (q31_t)0xa2db858e, (q31_t)0x57c7b25a, (q31_t)0xa2d7365d,\n  (q31_t)0x57c31f92, (q31_t)0xa2d2e766, (q31_t)0x57be8c94, (q31_t)0xa2ce98a9, (q31_t)0x57b9f960, (q31_t)0xa2ca4a25, (q31_t)0x57b565f6, (q31_t)0xa2c5fbda,\n  (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x57ac3e80, (q31_t)0xa2bd5ff2, (q31_t)0x57a7aa73, (q31_t)0xa2b91254, (q31_t)0x57a31631, (q31_t)0xa2b4c4f0,\n  (q31_t)0x579e81b8, (q31_t)0xa2b077c5, (q31_t)0x5799ed0a, (q31_t)0xa2ac2ad3, (q31_t)0x57955825, (q31_t)0xa2a7de1c, (q31_t)0x5790c30a, (q31_t)0xa2a3919e,\n  (q31_t)0x578c2dba, (q31_t)0xa29f4559, (q31_t)0x57879833, (q31_t)0xa29af94e, (q31_t)0x57830276, (q31_t)0xa296ad7d, (q31_t)0x577e6c84, (q31_t)0xa29261e5,\n  (q31_t)0x5779d65b, (q31_t)0xa28e1687, (q31_t)0x57753ffc, (q31_t)0xa289cb63, (q31_t)0x5770a968, (q31_t)0xa2858078, (q31_t)0x576c129d, (q31_t)0xa28135c7,\n  (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, (q31_t)0x5762e467, (q31_t)0xa278a111, (q31_t)0x575e4cfa, (q31_t)0xa274570d, (q31_t)0x5759b558, (q31_t)0xa2700d43,\n  (q31_t)0x57551d80, (q31_t)0xa26bc3b2, (q31_t)0x57508572, (q31_t)0xa2677a5b, (q31_t)0x574bed2f, (q31_t)0xa263313e, (q31_t)0x574754b5, (q31_t)0xa25ee85b,\n  (q31_t)0x5742bc06, (q31_t)0xa25a9fb1, (q31_t)0x573e2320, (q31_t)0xa2565741, (q31_t)0x57398a05, (q31_t)0xa2520f0b, (q31_t)0x5734f0b5, (q31_t)0xa24dc70f,\n  (q31_t)0x5730572e, (q31_t)0xa2497f4c, (q31_t)0x572bbd71, (q31_t)0xa24537c3, (q31_t)0x5727237f, (q31_t)0xa240f074, (q31_t)0x57228957, (q31_t)0xa23ca95f,\n  (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x57195466, (q31_t)0xa2341be3, (q31_t)0x5714b99d, (q31_t)0xa22fd57b, (q31_t)0x57101e9e, (q31_t)0xa22b8f4d,\n  (q31_t)0x570b8369, (q31_t)0xa2274959, (q31_t)0x5706e7ff, (q31_t)0xa223039f, (q31_t)0x57024c5f, (q31_t)0xa21ebe1f, (q31_t)0x56fdb08a, (q31_t)0xa21a78d9,\n  (q31_t)0x56f9147e, (q31_t)0xa21633cd, (q31_t)0x56f4783d, (q31_t)0xa211eefb, (q31_t)0x56efdbc7, (q31_t)0xa20daa62, (q31_t)0x56eb3f1a, (q31_t)0xa2096604,\n  (q31_t)0x56e6a239, (q31_t)0xa20521e0, (q31_t)0x56e20521, (q31_t)0xa200ddf5, (q31_t)0x56dd67d4, (q31_t)0xa1fc9a45, (q31_t)0x56d8ca51, (q31_t)0xa1f856ce,\n  (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x56cf8eab, (q31_t)0xa1efd08f, (q31_t)0x56caf088, (q31_t)0xa1eb8dc7, (q31_t)0x56c6522f, (q31_t)0xa1e74b38,\n  (q31_t)0x56c1b3a1, (q31_t)0xa1e308e4, (q31_t)0x56bd14dd, (q31_t)0xa1dec6ca, (q31_t)0x56b875e4, (q31_t)0xa1da84e9, (q31_t)0x56b3d6b5, (q31_t)0xa1d64343,\n  (q31_t)0x56af3750, (q31_t)0xa1d201d7, (q31_t)0x56aa97b7, (q31_t)0xa1cdc0a5, (q31_t)0x56a5f7e7, (q31_t)0xa1c97fad, (q31_t)0x56a157e3, (q31_t)0xa1c53ef0,\n  (q31_t)0x569cb7a8, (q31_t)0xa1c0fe6c, (q31_t)0x56981739, (q31_t)0xa1bcbe22, (q31_t)0x56937694, (q31_t)0xa1b87e13, (q31_t)0x568ed5b9, (q31_t)0xa1b43e3e,\n  (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x56859364, (q31_t)0xa1abbf42, (q31_t)0x5680f1ea, (q31_t)0xa1a7801b, (q31_t)0x567c503a, (q31_t)0xa1a3412f,\n  (q31_t)0x5677ae54, (q31_t)0xa19f027c, (q31_t)0x56730c3a, (q31_t)0xa19ac404, (q31_t)0x566e69ea, (q31_t)0xa19685c7, (q31_t)0x5669c765, (q31_t)0xa19247c3,\n  (q31_t)0x566524aa, (q31_t)0xa18e09fa, (q31_t)0x566081ba, (q31_t)0xa189cc6b, (q31_t)0x565bde95, (q31_t)0xa1858f16, (q31_t)0x56573b3b, (q31_t)0xa18151fb,\n  (q31_t)0x565297ab, (q31_t)0xa17d151b, (q31_t)0x564df3e6, (q31_t)0xa178d875, (q31_t)0x56494fec, (q31_t)0xa1749c09, (q31_t)0x5644abbc, (q31_t)0xa1705fd8,\n  (q31_t)0x56400758, (q31_t)0xa16c23e1, (q31_t)0x563b62be, (q31_t)0xa167e824, (q31_t)0x5636bdef, (q31_t)0xa163aca2, (q31_t)0x563218eb, (q31_t)0xa15f715a,\n  (q31_t)0x562d73b2, (q31_t)0xa15b364d, (q31_t)0x5628ce43, (q31_t)0xa156fb79, (q31_t)0x5624289f, (q31_t)0xa152c0e1, (q31_t)0x561f82c7, (q31_t)0xa14e8682,\n  (q31_t)0x561adcb9, (q31_t)0xa14a4c5e, (q31_t)0x56163676, (q31_t)0xa1461275, (q31_t)0x56118ffe, (q31_t)0xa141d8c5, (q31_t)0x560ce950, (q31_t)0xa13d9f51,\n  (q31_t)0x5608426e, (q31_t)0xa1396617, (q31_t)0x56039b57, (q31_t)0xa1352d17, (q31_t)0x55fef40a, (q31_t)0xa130f451, (q31_t)0x55fa4c89, (q31_t)0xa12cbbc7,\n  (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55f0fce7, (q31_t)0xa1244b61, (q31_t)0x55ec54c6, (q31_t)0xa1201385, (q31_t)0x55e7ac71, (q31_t)0xa11bdbe4,\n  (q31_t)0x55e303e6, (q31_t)0xa117a47e, (q31_t)0x55de5b27, (q31_t)0xa1136d52, (q31_t)0x55d9b232, (q31_t)0xa10f3661, (q31_t)0x55d50909, (q31_t)0xa10affab,\n  (q31_t)0x55d05faa, (q31_t)0xa106c92f, (q31_t)0x55cbb617, (q31_t)0xa10292ed, (q31_t)0x55c70c4f, (q31_t)0xa0fe5ce6, (q31_t)0x55c26251, (q31_t)0xa0fa271a,\n  (q31_t)0x55bdb81f, (q31_t)0xa0f5f189, (q31_t)0x55b90db8, (q31_t)0xa0f1bc32, (q31_t)0x55b4631d, (q31_t)0xa0ed8715, (q31_t)0x55afb84c, (q31_t)0xa0e95234,\n  (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x55a6620c, (q31_t)0xa0e0e920, (q31_t)0x55a1b69d, (q31_t)0xa0dcb4ee, (q31_t)0x559d0af9, (q31_t)0xa0d880f7,\n  (q31_t)0x55985f20, (q31_t)0xa0d44d3b, (q31_t)0x5593b312, (q31_t)0xa0d019b9, (q31_t)0x558f06d0, (q31_t)0xa0cbe672, (q31_t)0x558a5a58, (q31_t)0xa0c7b366,\n  (q31_t)0x5585adad, (q31_t)0xa0c38095, (q31_t)0x558100cc, (q31_t)0xa0bf4dfe, (q31_t)0x557c53b6, (q31_t)0xa0bb1ba2, (q31_t)0x5577a66c, (q31_t)0xa0b6e981,\n  (q31_t)0x5572f8ed, (q31_t)0xa0b2b79b, (q31_t)0x556e4b39, (q31_t)0xa0ae85ef, (q31_t)0x55699d51, (q31_t)0xa0aa547e, (q31_t)0x5564ef34, (q31_t)0xa0a62348,\n  (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x555b925c, (q31_t)0xa09dc18d, (q31_t)0x5556e3a1, (q31_t)0xa0999107, (q31_t)0x555234b1, (q31_t)0xa09560bc,\n  (q31_t)0x554d858d, (q31_t)0xa09130ad, (q31_t)0x5548d634, (q31_t)0xa08d00d8, (q31_t)0x554426a7, (q31_t)0xa088d13e, (q31_t)0x553f76e4, (q31_t)0xa084a1de,\n  (q31_t)0x553ac6ee, (q31_t)0xa08072ba, (q31_t)0x553616c2, (q31_t)0xa07c43d1, (q31_t)0x55316663, (q31_t)0xa0781522, (q31_t)0x552cb5ce, (q31_t)0xa073e6af,\n  (q31_t)0x55280505, (q31_t)0xa06fb876, (q31_t)0x55235408, (q31_t)0xa06b8a78, (q31_t)0x551ea2d6, (q31_t)0xa0675cb6, (q31_t)0x5519f16f, (q31_t)0xa0632f2e,\n  (q31_t)0x55153fd4, (q31_t)0xa05f01e1, (q31_t)0x55108e05, (q31_t)0xa05ad4cf, (q31_t)0x550bdc01, (q31_t)0xa056a7f9, (q31_t)0x550729c9, (q31_t)0xa0527b5d,\n  (q31_t)0x5502775c, (q31_t)0xa04e4efc, (q31_t)0x54fdc4ba, (q31_t)0xa04a22d7, (q31_t)0x54f911e5, (q31_t)0xa045f6ec, (q31_t)0x54f45edb, (q31_t)0xa041cb3c,\n  (q31_t)0x54efab9c, (q31_t)0xa03d9fc8, (q31_t)0x54eaf829, (q31_t)0xa039748e, (q31_t)0x54e64482, (q31_t)0xa0354990, (q31_t)0x54e190a6, (q31_t)0xa0311ecd,\n  (q31_t)0x54dcdc96, (q31_t)0xa02cf444, (q31_t)0x54d82852, (q31_t)0xa028c9f7, (q31_t)0x54d373d9, (q31_t)0xa0249fe5, (q31_t)0x54cebf2c, (q31_t)0xa020760e,\n  (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x54c55535, (q31_t)0xa0182312, (q31_t)0x54c09feb, (q31_t)0xa013f9ed, (q31_t)0x54bbea6d, (q31_t)0xa00fd102,\n  (q31_t)0x54b734ba, (q31_t)0xa00ba853, (q31_t)0x54b27ed3, (q31_t)0xa0077fdf, (q31_t)0x54adc8b8, (q31_t)0xa00357a7, (q31_t)0x54a91269, (q31_t)0x9fff2fa9,\n  (q31_t)0x54a45be6, (q31_t)0x9ffb07e7, (q31_t)0x549fa52e, (q31_t)0x9ff6e060, (q31_t)0x549aee42, (q31_t)0x9ff2b914, (q31_t)0x54963722, (q31_t)0x9fee9204,\n  (q31_t)0x54917fce, (q31_t)0x9fea6b2f, (q31_t)0x548cc845, (q31_t)0x9fe64495, (q31_t)0x54881089, (q31_t)0x9fe21e36, (q31_t)0x54835898, (q31_t)0x9fddf812,\n  (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x5479e81a, (q31_t)0x9fd5ac7d, (q31_t)0x54752f8d, (q31_t)0x9fd1870c, (q31_t)0x547076cc, (q31_t)0x9fcd61d6,\n  (q31_t)0x546bbdd7, (q31_t)0x9fc93cdb, (q31_t)0x546704ae, (q31_t)0x9fc5181b, (q31_t)0x54624b50, (q31_t)0x9fc0f397, (q31_t)0x545d91bf, (q31_t)0x9fbccf4f,\n  (q31_t)0x5458d7f9, (q31_t)0x9fb8ab41, (q31_t)0x54541e00, (q31_t)0x9fb4876f, (q31_t)0x544f63d2, (q31_t)0x9fb063d9, (q31_t)0x544aa971, (q31_t)0x9fac407e,\n  (q31_t)0x5445eedb, (q31_t)0x9fa81d5e, (q31_t)0x54413412, (q31_t)0x9fa3fa79, (q31_t)0x543c7914, (q31_t)0x9f9fd7d1, (q31_t)0x5437bde3, (q31_t)0x9f9bb563,\n  (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x542e46e4, (q31_t)0x9f93713b, (q31_t)0x54298b17, (q31_t)0x9f8f4f80, (q31_t)0x5424cf16, (q31_t)0x9f8b2e00,\n  (q31_t)0x542012e1, (q31_t)0x9f870cbc, (q31_t)0x541b5678, (q31_t)0x9f82ebb4, (q31_t)0x541699db, (q31_t)0x9f7ecae7, (q31_t)0x5411dd0a, (q31_t)0x9f7aaa55,\n  (q31_t)0x540d2005, (q31_t)0x9f7689ff, (q31_t)0x540862cd, (q31_t)0x9f7269e5, (q31_t)0x5403a561, (q31_t)0x9f6e4a06, (q31_t)0x53fee7c1, (q31_t)0x9f6a2a63,\n  (q31_t)0x53fa29ed, (q31_t)0x9f660afb, (q31_t)0x53f56be5, (q31_t)0x9f61ebcf, (q31_t)0x53f0adaa, (q31_t)0x9f5dccde, (q31_t)0x53ebef3a, (q31_t)0x9f59ae29,\n  (q31_t)0x53e73097, (q31_t)0x9f558fb0, (q31_t)0x53e271c0, (q31_t)0x9f517173, (q31_t)0x53ddb2b6, (q31_t)0x9f4d5371, (q31_t)0x53d8f378, (q31_t)0x9f4935aa,\n  (q31_t)0x53d43406, (q31_t)0x9f45181f, (q31_t)0x53cf7460, (q31_t)0x9f40fad0, (q31_t)0x53cab486, (q31_t)0x9f3cddbd, (q31_t)0x53c5f479, (q31_t)0x9f38c0e5,\n  (q31_t)0x53c13439, (q31_t)0x9f34a449, (q31_t)0x53bc73c4, (q31_t)0x9f3087e9, (q31_t)0x53b7b31c, (q31_t)0x9f2c6bc5, (q31_t)0x53b2f240, (q31_t)0x9f284fdc,\n  (q31_t)0x53ae3131, (q31_t)0x9f24342f, (q31_t)0x53a96fee, (q31_t)0x9f2018bd, (q31_t)0x53a4ae77, (q31_t)0x9f1bfd88, (q31_t)0x539feccd, (q31_t)0x9f17e28e,\n  (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x539668de, (q31_t)0x9f0fad4e, (q31_t)0x5391a699, (q31_t)0x9f0b9307, (q31_t)0x538ce421, (q31_t)0x9f0778fd,\n  (q31_t)0x53882175, (q31_t)0x9f035f2e, (q31_t)0x53835e95, (q31_t)0x9eff459b, (q31_t)0x537e9b82, (q31_t)0x9efb2c44, (q31_t)0x5379d83c, (q31_t)0x9ef71328,\n  (q31_t)0x537514c2, (q31_t)0x9ef2fa49, (q31_t)0x53705114, (q31_t)0x9eeee1a5, (q31_t)0x536b8d33, (q31_t)0x9eeac93e, (q31_t)0x5366c91f, (q31_t)0x9ee6b112,\n  (q31_t)0x536204d7, (q31_t)0x9ee29922, (q31_t)0x535d405c, (q31_t)0x9ede816e, (q31_t)0x53587bad, (q31_t)0x9eda69f6, (q31_t)0x5353b6cb, (q31_t)0x9ed652ba,\n  (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x534a2c6c, (q31_t)0x9ece24f5, (q31_t)0x534566f0, (q31_t)0x9eca0e6d, (q31_t)0x5340a140, (q31_t)0x9ec5f820,\n  (q31_t)0x533bdb5d, (q31_t)0x9ec1e210, (q31_t)0x53371547, (q31_t)0x9ebdcc3b, (q31_t)0x53324efd, (q31_t)0x9eb9b6a3, (q31_t)0x532d8880, (q31_t)0x9eb5a146,\n  (q31_t)0x5328c1d0, (q31_t)0x9eb18c26, (q31_t)0x5323faec, (q31_t)0x9ead7742, (q31_t)0x531f33d5, (q31_t)0x9ea96299, (q31_t)0x531a6c8b, (q31_t)0x9ea54e2d,\n  (q31_t)0x5315a50e, (q31_t)0x9ea139fd, (q31_t)0x5310dd5d, (q31_t)0x9e9d2608, (q31_t)0x530c1579, (q31_t)0x9e991250, (q31_t)0x53074d62, (q31_t)0x9e94fed4,\n  (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52fdbc9a, (q31_t)0x9e8cd890, (q31_t)0x52f8f3e9, (q31_t)0x9e88c5c9, (q31_t)0x52f42b05, (q31_t)0x9e84b33d,\n  (q31_t)0x52ef61ee, (q31_t)0x9e80a0ee, (q31_t)0x52ea98a4, (q31_t)0x9e7c8eda, (q31_t)0x52e5cf27, (q31_t)0x9e787d03, (q31_t)0x52e10576, (q31_t)0x9e746b68,\n  (q31_t)0x52dc3b92, (q31_t)0x9e705a09, (q31_t)0x52d7717b, (q31_t)0x9e6c48e7, (q31_t)0x52d2a732, (q31_t)0x9e683800, (q31_t)0x52cddcb5, (q31_t)0x9e642756,\n  (q31_t)0x52c91204, (q31_t)0x9e6016e8, (q31_t)0x52c44721, (q31_t)0x9e5c06b6, (q31_t)0x52bf7c0b, (q31_t)0x9e57f6c0, (q31_t)0x52bab0c2, (q31_t)0x9e53e707,\n  (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, (q31_t)0x52b11996, (q31_t)0x9e4bc849, (q31_t)0x52ac4db4, (q31_t)0x9e47b944, (q31_t)0x52a7819f, (q31_t)0x9e43aa7c,\n  (q31_t)0x52a2b556, (q31_t)0x9e3f9bf0, (q31_t)0x529de8db, (q31_t)0x9e3b8da0, (q31_t)0x52991c2d, (q31_t)0x9e377f8c, (q31_t)0x52944f4c, (q31_t)0x9e3371b5,\n  (q31_t)0x528f8238, (q31_t)0x9e2f641b, (q31_t)0x528ab4f1, (q31_t)0x9e2b56bc, (q31_t)0x5285e777, (q31_t)0x9e27499a, (q31_t)0x528119ca, (q31_t)0x9e233cb4,\n  (q31_t)0x527c4bea, (q31_t)0x9e1f300b, (q31_t)0x52777dd7, (q31_t)0x9e1b239e, (q31_t)0x5272af92, (q31_t)0x9e17176d, (q31_t)0x526de11a, (q31_t)0x9e130b79,\n  (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x52644390, (q31_t)0x9e0af446, (q31_t)0x525f7480, (q31_t)0x9e06e907, (q31_t)0x525aa53c, (q31_t)0x9e02de04,\n  (q31_t)0x5255d5c5, (q31_t)0x9dfed33e, (q31_t)0x5251061c, (q31_t)0x9dfac8b4, (q31_t)0x524c3640, (q31_t)0x9df6be67, (q31_t)0x52476631, (q31_t)0x9df2b456,\n  (q31_t)0x524295f0, (q31_t)0x9deeaa82, (q31_t)0x523dc57b, (q31_t)0x9deaa0ea, (q31_t)0x5238f4d4, (q31_t)0x9de6978f, (q31_t)0x523423fb, (q31_t)0x9de28e70,\n  (q31_t)0x522f52ee, (q31_t)0x9dde858e, (q31_t)0x522a81af, (q31_t)0x9dda7ce9, (q31_t)0x5225b03d, (q31_t)0x9dd6747f, (q31_t)0x5220de99, (q31_t)0x9dd26c53,\n  (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x52173ab8, (q31_t)0x9dca5caf, (q31_t)0x5212687b, (q31_t)0x9dc65539, (q31_t)0x520d960c, (q31_t)0x9dc24dfe,\n  (q31_t)0x5208c36a, (q31_t)0x9dbe4701, (q31_t)0x5203f096, (q31_t)0x9dba4040, (q31_t)0x51ff1d8f, (q31_t)0x9db639bb, (q31_t)0x51fa4a56, (q31_t)0x9db23373,\n  (q31_t)0x51f576ea, (q31_t)0x9dae2d68, (q31_t)0x51f0a34b, (q31_t)0x9daa279a, (q31_t)0x51ebcf7a, (q31_t)0x9da62208, (q31_t)0x51e6fb76, (q31_t)0x9da21cb2,\n  (q31_t)0x51e22740, (q31_t)0x9d9e179a, (q31_t)0x51dd52d7, (q31_t)0x9d9a12be, (q31_t)0x51d87e3c, (q31_t)0x9d960e1f, (q31_t)0x51d3a96f, (q31_t)0x9d9209bd,\n  (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x51c9ff3c, (q31_t)0x9d8a01ae, (q31_t)0x51c529d7, (q31_t)0x9d85fe02, (q31_t)0x51c0543f, (q31_t)0x9d81fa92,\n  (q31_t)0x51bb7e75, (q31_t)0x9d7df75f, (q31_t)0x51b6a879, (q31_t)0x9d79f469, (q31_t)0x51b1d24a, (q31_t)0x9d75f1b0, (q31_t)0x51acfbe9, (q31_t)0x9d71ef34,\n  (q31_t)0x51a82555, (q31_t)0x9d6decf4, (q31_t)0x51a34e8f, (q31_t)0x9d69eaf1, (q31_t)0x519e7797, (q31_t)0x9d65e92b, (q31_t)0x5199a06d, (q31_t)0x9d61e7a2,\n  (q31_t)0x5194c910, (q31_t)0x9d5de656, (q31_t)0x518ff180, (q31_t)0x9d59e546, (q31_t)0x518b19bf, (q31_t)0x9d55e473, (q31_t)0x518641cb, (q31_t)0x9d51e3dd,\n  (q31_t)0x518169a5, (q31_t)0x9d4de385, (q31_t)0x517c914c, (q31_t)0x9d49e368, (q31_t)0x5177b8c2, (q31_t)0x9d45e389, (q31_t)0x5172e005, (q31_t)0x9d41e3e7,\n  (q31_t)0x516e0715, (q31_t)0x9d3de482, (q31_t)0x51692df4, (q31_t)0x9d39e559, (q31_t)0x516454a0, (q31_t)0x9d35e66e, (q31_t)0x515f7b1a, (q31_t)0x9d31e7bf,\n  (q31_t)0x515aa162, (q31_t)0x9d2de94d, (q31_t)0x5155c778, (q31_t)0x9d29eb19, (q31_t)0x5150ed5c, (q31_t)0x9d25ed21, (q31_t)0x514c130d, (q31_t)0x9d21ef66,\n  (q31_t)0x5147388c, (q31_t)0x9d1df1e9, (q31_t)0x51425dd9, (q31_t)0x9d19f4a8, (q31_t)0x513d82f4, (q31_t)0x9d15f7a4, (q31_t)0x5138a7dd, (q31_t)0x9d11fadd,\n  (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x512ef119, (q31_t)0x9d0a0207, (q31_t)0x512a156b, (q31_t)0x9d0605f7, (q31_t)0x5125398c, (q31_t)0x9d020a25,\n  (q31_t)0x51205d7b, (q31_t)0x9cfe0e8f, (q31_t)0x511b8137, (q31_t)0x9cfa1337, (q31_t)0x5116a4c1, (q31_t)0x9cf6181c, (q31_t)0x5111c81a, (q31_t)0x9cf21d3d,\n  (q31_t)0x510ceb40, (q31_t)0x9cee229c, (q31_t)0x51080e35, (q31_t)0x9cea2838, (q31_t)0x510330f7, (q31_t)0x9ce62e11, (q31_t)0x50fe5388, (q31_t)0x9ce23427,\n  (q31_t)0x50f975e6, (q31_t)0x9cde3a7b, (q31_t)0x50f49813, (q31_t)0x9cda410b, (q31_t)0x50efba0d, (q31_t)0x9cd647d9, (q31_t)0x50eadbd6, (q31_t)0x9cd24ee4,\n  (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x50e11ed2, (q31_t)0x9cca5db1, (q31_t)0x50dc4005, (q31_t)0x9cc66573, (q31_t)0x50d76106, (q31_t)0x9cc26d73,\n  (q31_t)0x50d281d5, (q31_t)0x9cbe75b0, (q31_t)0x50cda272, (q31_t)0x9cba7e2a, (q31_t)0x50c8c2de, (q31_t)0x9cb686e1, (q31_t)0x50c3e317, (q31_t)0x9cb28fd5,\n  (q31_t)0x50bf031f, (q31_t)0x9cae9907, (q31_t)0x50ba22f5, (q31_t)0x9caaa276, (q31_t)0x50b5429a, (q31_t)0x9ca6ac23, (q31_t)0x50b0620c, (q31_t)0x9ca2b60c,\n  (q31_t)0x50ab814d, (q31_t)0x9c9ec033, (q31_t)0x50a6a05c, (q31_t)0x9c9aca97, (q31_t)0x50a1bf39, (q31_t)0x9c96d539, (q31_t)0x509cdde4, (q31_t)0x9c92e017,\n  (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x50931aa6, (q31_t)0x9c8af68d, (q31_t)0x508e38bd, (q31_t)0x9c870224, (q31_t)0x508956a1, (q31_t)0x9c830df8,\n  (q31_t)0x50847454, (q31_t)0x9c7f1a0a, (q31_t)0x507f91d5, (q31_t)0x9c7b2659, (q31_t)0x507aaf25, (q31_t)0x9c7732e5, (q31_t)0x5075cc43, (q31_t)0x9c733faf,\n  (q31_t)0x5070e92f, (q31_t)0x9c6f4cb6, (q31_t)0x506c05ea, (q31_t)0x9c6b59fa, (q31_t)0x50672273, (q31_t)0x9c67677c, (q31_t)0x50623ecb, (q31_t)0x9c63753c,\n  (q31_t)0x505d5af1, (q31_t)0x9c5f8339, (q31_t)0x505876e5, (q31_t)0x9c5b9173, (q31_t)0x505392a8, (q31_t)0x9c579feb, (q31_t)0x504eae39, (q31_t)0x9c53aea0,\n  (q31_t)0x5049c999, (q31_t)0x9c4fbd93, (q31_t)0x5044e4c7, (q31_t)0x9c4bccc3, (q31_t)0x503fffc4, (q31_t)0x9c47dc31, (q31_t)0x503b1a8f, (q31_t)0x9c43ebdc,\n  (q31_t)0x50363529, (q31_t)0x9c3ffbc5, (q31_t)0x50314f91, (q31_t)0x9c3c0beb, (q31_t)0x502c69c8, (q31_t)0x9c381c4f, (q31_t)0x502783cd, (q31_t)0x9c342cf0,\n  (q31_t)0x50229da1, (q31_t)0x9c303dcf, (q31_t)0x501db743, (q31_t)0x9c2c4eec, (q31_t)0x5018d0b4, (q31_t)0x9c286046, (q31_t)0x5013e9f4, (q31_t)0x9c2471de,\n  (q31_t)0x500f0302, (q31_t)0x9c2083b3, (q31_t)0x500a1bdf, (q31_t)0x9c1c95c6, (q31_t)0x5005348a, (q31_t)0x9c18a816, (q31_t)0x50004d04, (q31_t)0x9c14baa4,\n  (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4ff67d64, (q31_t)0x9c0ce07a, (q31_t)0x4ff1954b, (q31_t)0x9c08f3c1, (q31_t)0x4fecacff, (q31_t)0x9c050745,\n  (q31_t)0x4fe7c483, (q31_t)0x9c011b08, (q31_t)0x4fe2dbd5, (q31_t)0x9bfd2f08, (q31_t)0x4fddf2f6, (q31_t)0x9bf94346, (q31_t)0x4fd909e5, (q31_t)0x9bf557c1,\n  (q31_t)0x4fd420a4, (q31_t)0x9bf16c7a, (q31_t)0x4fcf3731, (q31_t)0x9bed8171, (q31_t)0x4fca4d8d, (q31_t)0x9be996a6, (q31_t)0x4fc563b7, (q31_t)0x9be5ac18,\n  (q31_t)0x4fc079b1, (q31_t)0x9be1c1c8, (q31_t)0x4fbb8f79, (q31_t)0x9bddd7b6, (q31_t)0x4fb6a510, (q31_t)0x9bd9ede2, (q31_t)0x4fb1ba76, (q31_t)0x9bd6044b,\n  (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4fa7e4af, (q31_t)0x9bce31d8, (q31_t)0x4fa2f981, (q31_t)0x9bca48fa, (q31_t)0x4f9e0e22, (q31_t)0x9bc6605b,\n  (q31_t)0x4f992293, (q31_t)0x9bc277fa, (q31_t)0x4f9436d2, (q31_t)0x9bbe8fd6, (q31_t)0x4f8f4ae0, (q31_t)0x9bbaa7f0, (q31_t)0x4f8a5ebd, (q31_t)0x9bb6c048,\n  (q31_t)0x4f857269, (q31_t)0x9bb2d8de, (q31_t)0x4f8085e4, (q31_t)0x9baef1b2, (q31_t)0x4f7b992d, (q31_t)0x9bab0ac3, (q31_t)0x4f76ac46, (q31_t)0x9ba72413,\n  (q31_t)0x4f71bf2e, (q31_t)0x9ba33da0, (q31_t)0x4f6cd1e5, (q31_t)0x9b9f576b, (q31_t)0x4f67e46a, (q31_t)0x9b9b7174, (q31_t)0x4f62f6bf, (q31_t)0x9b978bbc,\n  (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f591ad6, (q31_t)0x9b8fc104, (q31_t)0x4f542c98, (q31_t)0x9b8bdc05, (q31_t)0x4f4f3e29, (q31_t)0x9b87f744,\n  (q31_t)0x4f4a4f89, (q31_t)0x9b8412c1, (q31_t)0x4f4560b8, (q31_t)0x9b802e7b, (q31_t)0x4f4071b6, (q31_t)0x9b7c4a74, (q31_t)0x4f3b8284, (q31_t)0x9b7866ab,\n  (q31_t)0x4f369320, (q31_t)0x9b748320, (q31_t)0x4f31a38c, (q31_t)0x9b709fd3, (q31_t)0x4f2cb3c7, (q31_t)0x9b6cbcc4, (q31_t)0x4f27c3d1, (q31_t)0x9b68d9f3,\n  (q31_t)0x4f22d3aa, (q31_t)0x9b64f760, (q31_t)0x4f1de352, (q31_t)0x9b61150b, (q31_t)0x4f18f2c9, (q31_t)0x9b5d32f4, (q31_t)0x4f140210, (q31_t)0x9b59511c,\n  (q31_t)0x4f0f1126, (q31_t)0x9b556f81, (q31_t)0x4f0a200b, (q31_t)0x9b518e24, (q31_t)0x4f052ec0, (q31_t)0x9b4dad06, (q31_t)0x4f003d43, (q31_t)0x9b49cc26,\n  (q31_t)0x4efb4b96, (q31_t)0x9b45eb83, (q31_t)0x4ef659b8, (q31_t)0x9b420b1f, (q31_t)0x4ef167aa, (q31_t)0x9b3e2af9, (q31_t)0x4eec756b, (q31_t)0x9b3a4b11,\n  (q31_t)0x4ee782fb, (q31_t)0x9b366b68, (q31_t)0x4ee2905a, (q31_t)0x9b328bfc, (q31_t)0x4edd9d89, (q31_t)0x9b2eaccf, (q31_t)0x4ed8aa87, (q31_t)0x9b2acde0,\n  (q31_t)0x4ed3b755, (q31_t)0x9b26ef2f, (q31_t)0x4ecec3f2, (q31_t)0x9b2310bc, (q31_t)0x4ec9d05e, (q31_t)0x9b1f3288, (q31_t)0x4ec4dc99, (q31_t)0x9b1b5492,\n  (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4ebaf47f, (q31_t)0x9b139960, (q31_t)0x4eb60029, (q31_t)0x9b0fbc24, (q31_t)0x4eb10ba2, (q31_t)0x9b0bdf27,\n  (q31_t)0x4eac16eb, (q31_t)0x9b080268, (q31_t)0x4ea72203, (q31_t)0x9b0425e8, (q31_t)0x4ea22ceb, (q31_t)0x9b0049a5, (q31_t)0x4e9d37a3, (q31_t)0x9afc6da1,\n  (q31_t)0x4e984229, (q31_t)0x9af891db, (q31_t)0x4e934c80, (q31_t)0x9af4b654, (q31_t)0x4e8e56a5, (q31_t)0x9af0db0b, (q31_t)0x4e89609b, (q31_t)0x9aed0000,\n  (q31_t)0x4e846a60, (q31_t)0x9ae92533, (q31_t)0x4e7f73f4, (q31_t)0x9ae54aa5, (q31_t)0x4e7a7d58, (q31_t)0x9ae17056, (q31_t)0x4e75868c, (q31_t)0x9add9644,\n  (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e6b9862, (q31_t)0x9ad5e2dd, (q31_t)0x4e66a105, (q31_t)0x9ad20987, (q31_t)0x4e61a977, (q31_t)0x9ace306f,\n  (q31_t)0x4e5cb1b9, (q31_t)0x9aca5795, (q31_t)0x4e57b9ca, (q31_t)0x9ac67efb, (q31_t)0x4e52c1ab, (q31_t)0x9ac2a69e, (q31_t)0x4e4dc95c, (q31_t)0x9abece80,\n  (q31_t)0x4e48d0dd, (q31_t)0x9abaf6a1, (q31_t)0x4e43d82d, (q31_t)0x9ab71eff, (q31_t)0x4e3edf4d, (q31_t)0x9ab3479d, (q31_t)0x4e39e63d, (q31_t)0x9aaf7079,\n  (q31_t)0x4e34ecfc, (q31_t)0x9aab9993, (q31_t)0x4e2ff38b, (q31_t)0x9aa7c2ec, (q31_t)0x4e2af9ea, (q31_t)0x9aa3ec83, (q31_t)0x4e260019, (q31_t)0x9aa01659,\n  (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4e1c0be6, (q31_t)0x9a986ac1, (q31_t)0x4e171184, (q31_t)0x9a949552, (q31_t)0x4e1216f2, (q31_t)0x9a90c022,\n  (q31_t)0x4e0d1c30, (q31_t)0x9a8ceb31, (q31_t)0x4e08213e, (q31_t)0x9a89167e, (q31_t)0x4e03261b, (q31_t)0x9a85420a, (q31_t)0x4dfe2ac9, (q31_t)0x9a816dd5,\n  (q31_t)0x4df92f46, (q31_t)0x9a7d99de, (q31_t)0x4df43393, (q31_t)0x9a79c625, (q31_t)0x4def37b0, (q31_t)0x9a75f2ac, (q31_t)0x4dea3b9d, (q31_t)0x9a721f71,\n  (q31_t)0x4de53f5a, (q31_t)0x9a6e4c74, (q31_t)0x4de042e7, (q31_t)0x9a6a79b6, (q31_t)0x4ddb4644, (q31_t)0x9a66a737, (q31_t)0x4dd64971, (q31_t)0x9a62d4f7,\n  (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, (q31_t)0x4dcc4f3b, (q31_t)0x9a5b3132, (q31_t)0x4dc751d8, (q31_t)0x9a575fae, (q31_t)0x4dc25445, (q31_t)0x9a538e68,\n  (q31_t)0x4dbd5682, (q31_t)0x9a4fbd61, (q31_t)0x4db8588f, (q31_t)0x9a4bec99, (q31_t)0x4db35a6c, (q31_t)0x9a481c0f, (q31_t)0x4dae5c19, (q31_t)0x9a444bc5,\n  (q31_t)0x4da95d96, (q31_t)0x9a407bb9, (q31_t)0x4da45ee3, (q31_t)0x9a3cabeb, (q31_t)0x4d9f6001, (q31_t)0x9a38dc5d, (q31_t)0x4d9a60ee, (q31_t)0x9a350d0d,\n  (q31_t)0x4d9561ac, (q31_t)0x9a313dfc, (q31_t)0x4d90623a, (q31_t)0x9a2d6f2a, (q31_t)0x4d8b6298, (q31_t)0x9a29a097, (q31_t)0x4d8662c6, (q31_t)0x9a25d243,\n  (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d7c6293, (q31_t)0x9a1e3656, (q31_t)0x4d776231, (q31_t)0x9a1a68be, (q31_t)0x4d7261a0, (q31_t)0x9a169b65,\n  (q31_t)0x4d6d60df, (q31_t)0x9a12ce4b, (q31_t)0x4d685fef, (q31_t)0x9a0f016f, (q31_t)0x4d635ece, (q31_t)0x9a0b34d3, (q31_t)0x4d5e5d7e, (q31_t)0x9a076875,\n  (q31_t)0x4d595bfe, (q31_t)0x9a039c57, (q31_t)0x4d545a4f, (q31_t)0x99ffd077, (q31_t)0x4d4f5870, (q31_t)0x99fc04d6, (q31_t)0x4d4a5661, (q31_t)0x99f83974,\n  (q31_t)0x4d455422, (q31_t)0x99f46e51, (q31_t)0x4d4051b4, (q31_t)0x99f0a36d, (q31_t)0x4d3b4f16, (q31_t)0x99ecd8c8, (q31_t)0x4d364c48, (q31_t)0x99e90e62,\n  (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4d2c461e, (q31_t)0x99e17a53, (q31_t)0x4d2742c2, (q31_t)0x99ddb0aa, (q31_t)0x4d223f36, (q31_t)0x99d9e73f,\n  (q31_t)0x4d1d3b7a, (q31_t)0x99d61e14, (q31_t)0x4d18378f, (q31_t)0x99d25528, (q31_t)0x4d133374, (q31_t)0x99ce8c7b, (q31_t)0x4d0e2f2a, (q31_t)0x99cac40d,\n  (q31_t)0x4d092ab0, (q31_t)0x99c6fbde, (q31_t)0x4d042607, (q31_t)0x99c333ee, (q31_t)0x4cff212e, (q31_t)0x99bf6c3d, (q31_t)0x4cfa1c26, (q31_t)0x99bba4cb,\n  (q31_t)0x4cf516ee, (q31_t)0x99b7dd99, (q31_t)0x4cf01187, (q31_t)0x99b416a5, (q31_t)0x4ceb0bf0, (q31_t)0x99b04ff0, (q31_t)0x4ce6062a, (q31_t)0x99ac897b,\n  (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4cdbfa0f, (q31_t)0x99a4fd4d, (q31_t)0x4cd6f3bb, (q31_t)0x99a13795, (q31_t)0x4cd1ed37, (q31_t)0x999d721c,\n  (q31_t)0x4ccce684, (q31_t)0x9999ace3, (q31_t)0x4cc7dfa1, (q31_t)0x9995e7e8, (q31_t)0x4cc2d88f, (q31_t)0x9992232d, (q31_t)0x4cbdd14e, (q31_t)0x998e5eb1,\n  (q31_t)0x4cb8c9dd, (q31_t)0x998a9a74, (q31_t)0x4cb3c23d, (q31_t)0x9986d676, (q31_t)0x4caeba6e, (q31_t)0x998312b7, (q31_t)0x4ca9b26f, (q31_t)0x997f4f38,\n  (q31_t)0x4ca4aa41, (q31_t)0x997b8bf8, (q31_t)0x4c9fa1e4, (q31_t)0x9977c8f7, (q31_t)0x4c9a9958, (q31_t)0x99740635, (q31_t)0x4c95909c, (q31_t)0x997043b2,\n  (q31_t)0x4c9087b1, (q31_t)0x996c816f, (q31_t)0x4c8b7e97, (q31_t)0x9968bf6b, (q31_t)0x4c86754e, (q31_t)0x9964fda7, (q31_t)0x4c816bd5, (q31_t)0x99613c22,\n  (q31_t)0x4c7c622d, (q31_t)0x995d7adc, (q31_t)0x4c775856, (q31_t)0x9959b9d5, (q31_t)0x4c724e50, (q31_t)0x9955f90d, (q31_t)0x4c6d441b, (q31_t)0x99523885,\n  (q31_t)0x4c6839b7, (q31_t)0x994e783d, (q31_t)0x4c632f23, (q31_t)0x994ab833, (q31_t)0x4c5e2460, (q31_t)0x9946f869, (q31_t)0x4c59196f, (q31_t)0x994338df,\n  (q31_t)0x4c540e4e, (q31_t)0x993f7993, (q31_t)0x4c4f02fe, (q31_t)0x993bba87, (q31_t)0x4c49f77f, (q31_t)0x9937fbbb, (q31_t)0x4c44ebd1, (q31_t)0x99343d2e,\n  (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4c3ad3e7, (q31_t)0x992cc0d2, (q31_t)0x4c35c7ac, (q31_t)0x99290303, (q31_t)0x4c30bb42, (q31_t)0x99254574,\n  (q31_t)0x4c2baea9, (q31_t)0x99218824, (q31_t)0x4c26a1e1, (q31_t)0x991dcb13, (q31_t)0x4c2194e9, (q31_t)0x991a0e42, (q31_t)0x4c1c87c3, (q31_t)0x991651b1,\n  (q31_t)0x4c177a6e, (q31_t)0x9912955f, (q31_t)0x4c126cea, (q31_t)0x990ed94c, (q31_t)0x4c0d5f37, (q31_t)0x990b1d79, (q31_t)0x4c085156, (q31_t)0x990761e5,\n  (q31_t)0x4c034345, (q31_t)0x9903a691, (q31_t)0x4bfe3505, (q31_t)0x98ffeb7d, (q31_t)0x4bf92697, (q31_t)0x98fc30a8, (q31_t)0x4bf417f9, (q31_t)0x98f87612,\n  (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4be9fa32, (q31_t)0x98f101a6, (q31_t)0x4be4eb08, (q31_t)0x98ed47cf, (q31_t)0x4bdfdbaf, (q31_t)0x98e98e38,\n  (q31_t)0x4bdacc28, (q31_t)0x98e5d4e0, (q31_t)0x4bd5bc72, (q31_t)0x98e21bc8, (q31_t)0x4bd0ac8d, (q31_t)0x98de62f0, (q31_t)0x4bcb9c79, (q31_t)0x98daaa57,\n  (q31_t)0x4bc68c36, (q31_t)0x98d6f1fe, (q31_t)0x4bc17bc5, (q31_t)0x98d339e4, (q31_t)0x4bbc6b25, (q31_t)0x98cf820b, (q31_t)0x4bb75a56, (q31_t)0x98cbca70,\n  (q31_t)0x4bb24958, (q31_t)0x98c81316, (q31_t)0x4bad382c, (q31_t)0x98c45bfb, (q31_t)0x4ba826d1, (q31_t)0x98c0a520, (q31_t)0x4ba31548, (q31_t)0x98bcee84,\n  (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b98f1a9, (q31_t)0x98b5820c, (q31_t)0x4b93df93, (q31_t)0x98b1cc30, (q31_t)0x4b8ecd4f, (q31_t)0x98ae1693,\n  (q31_t)0x4b89badd, (q31_t)0x98aa6136, (q31_t)0x4b84a83b, (q31_t)0x98a6ac19, (q31_t)0x4b7f956b, (q31_t)0x98a2f73c, (q31_t)0x4b7a826d, (q31_t)0x989f429e,\n  (q31_t)0x4b756f40, (q31_t)0x989b8e40, (q31_t)0x4b705be4, (q31_t)0x9897da22, (q31_t)0x4b6b485a, (q31_t)0x98942643, (q31_t)0x4b6634a2, (q31_t)0x989072a5,\n  (q31_t)0x4b6120bb, (q31_t)0x988cbf46, (q31_t)0x4b5c0ca5, (q31_t)0x98890c27, (q31_t)0x4b56f861, (q31_t)0x98855948, (q31_t)0x4b51e3ee, (q31_t)0x9881a6a9,\n  (q31_t)0x4b4ccf4d, (q31_t)0x987df449, (q31_t)0x4b47ba7e, (q31_t)0x987a422a, (q31_t)0x4b42a580, (q31_t)0x9876904a, (q31_t)0x4b3d9053, (q31_t)0x9872deaa,\n  (q31_t)0x4b387af9, (q31_t)0x986f2d4a, (q31_t)0x4b336570, (q31_t)0x986b7c2a, (q31_t)0x4b2e4fb8, (q31_t)0x9867cb4a, (q31_t)0x4b2939d2, (q31_t)0x98641aa9,\n  (q31_t)0x4b2423be, (q31_t)0x98606a49, (q31_t)0x4b1f0d7b, (q31_t)0x985cba28, (q31_t)0x4b19f70a, (q31_t)0x98590a48, (q31_t)0x4b14e06b, (q31_t)0x98555aa7,\n  (q31_t)0x4b0fc99d, (q31_t)0x9851ab46, (q31_t)0x4b0ab2a1, (q31_t)0x984dfc26, (q31_t)0x4b059b77, (q31_t)0x984a4d45, (q31_t)0x4b00841f, (q31_t)0x98469ea4,\n  (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4af654e3, (q31_t)0x983f4223, (q31_t)0x4af13d00, (q31_t)0x983b9442, (q31_t)0x4aec24ee, (q31_t)0x9837e6a1,\n  (q31_t)0x4ae70caf, (q31_t)0x98343940, (q31_t)0x4ae1f441, (q31_t)0x98308c1f, (q31_t)0x4adcdba5, (q31_t)0x982cdf3f, (q31_t)0x4ad7c2da, (q31_t)0x9829329e,\n  (q31_t)0x4ad2a9e2, (q31_t)0x9825863d, (q31_t)0x4acd90bb, (q31_t)0x9821da1d, (q31_t)0x4ac87767, (q31_t)0x981e2e3c, (q31_t)0x4ac35de4, (q31_t)0x981a829c,\n  (q31_t)0x4abe4433, (q31_t)0x9816d73b, (q31_t)0x4ab92a54, (q31_t)0x98132c1b, (q31_t)0x4ab41046, (q31_t)0x980f813b, (q31_t)0x4aaef60b, (q31_t)0x980bd69b,\n  (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4aa4c10b, (q31_t)0x9804821b, (q31_t)0x4a9fa645, (q31_t)0x9800d83c, (q31_t)0x4a9a8b52, (q31_t)0x97fd2e9c,\n  (q31_t)0x4a957030, (q31_t)0x97f9853d, (q31_t)0x4a9054e1, (q31_t)0x97f5dc1e, (q31_t)0x4a8b3963, (q31_t)0x97f2333f, (q31_t)0x4a861db8, (q31_t)0x97ee8aa0,\n  (q31_t)0x4a8101de, (q31_t)0x97eae242, (q31_t)0x4a7be5d7, (q31_t)0x97e73a23, (q31_t)0x4a76c9a2, (q31_t)0x97e39245, (q31_t)0x4a71ad3e, (q31_t)0x97dfeaa7,\n  (q31_t)0x4a6c90ad, (q31_t)0x97dc4349, (q31_t)0x4a6773ee, (q31_t)0x97d89c2c, (q31_t)0x4a625701, (q31_t)0x97d4f54f, (q31_t)0x4a5d39e6, (q31_t)0x97d14eb2,\n  (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a52ff27, (q31_t)0x97ca0239, (q31_t)0x4a4de182, (q31_t)0x97c65c5c, (q31_t)0x4a48c3b0, (q31_t)0x97c2b6c1,\n  (q31_t)0x4a43a5b0, (q31_t)0x97bf1165, (q31_t)0x4a3e8782, (q31_t)0x97bb6c4a, (q31_t)0x4a396926, (q31_t)0x97b7c76f, (q31_t)0x4a344a9d, (q31_t)0x97b422d4,\n  (q31_t)0x4a2f2be6, (q31_t)0x97b07e7a, (q31_t)0x4a2a0d01, (q31_t)0x97acda60, (q31_t)0x4a24edee, (q31_t)0x97a93687, (q31_t)0x4a1fcead, (q31_t)0x97a592ed,\n  (q31_t)0x4a1aaf3f, (q31_t)0x97a1ef94, (q31_t)0x4a158fa3, (q31_t)0x979e4c7c, (q31_t)0x4a106fda, (q31_t)0x979aa9a4, (q31_t)0x4a0b4fe2, (q31_t)0x9797070c,\n  (q31_t)0x4a062fbd, (q31_t)0x979364b5, (q31_t)0x4a010f6b, (q31_t)0x978fc29e, (q31_t)0x49fbeeea, (q31_t)0x978c20c8, (q31_t)0x49f6ce3c, (q31_t)0x97887f32,\n  (q31_t)0x49f1ad61, (q31_t)0x9784dddc, (q31_t)0x49ec8c57, (q31_t)0x97813cc7, (q31_t)0x49e76b21, (q31_t)0x977d9bf2, (q31_t)0x49e249bc, (q31_t)0x9779fb5e,\n  (q31_t)0x49dd282a, (q31_t)0x97765b0a, (q31_t)0x49d8066b, (q31_t)0x9772baf7, (q31_t)0x49d2e47e, (q31_t)0x976f1b24, (q31_t)0x49cdc263, (q31_t)0x976b7b92,\n  (q31_t)0x49c8a01b, (q31_t)0x9767dc41, (q31_t)0x49c37da5, (q31_t)0x97643d2f, (q31_t)0x49be5b02, (q31_t)0x97609e5f, (q31_t)0x49b93832, (q31_t)0x975cffcf,\n  (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x49aef208, (q31_t)0x9755c370, (q31_t)0x49a9ceaf, (q31_t)0x975225a1, (q31_t)0x49a4ab28, (q31_t)0x974e8813,\n  (q31_t)0x499f8774, (q31_t)0x974aeac6, (q31_t)0x499a6393, (q31_t)0x97474db9, (q31_t)0x49953f84, (q31_t)0x9743b0ed, (q31_t)0x49901b48, (q31_t)0x97401462,\n  (q31_t)0x498af6df, (q31_t)0x973c7817, (q31_t)0x4985d248, (q31_t)0x9738dc0d, (q31_t)0x4980ad84, (q31_t)0x97354043, (q31_t)0x497b8892, (q31_t)0x9731a4ba,\n  (q31_t)0x49766373, (q31_t)0x972e0971, (q31_t)0x49713e27, (q31_t)0x972a6e6a, (q31_t)0x496c18ae, (q31_t)0x9726d3a3, (q31_t)0x4966f307, (q31_t)0x9723391c,\n  (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x495ca732, (q31_t)0x971c04d2, (q31_t)0x49578103, (q31_t)0x97186b0d, (q31_t)0x49525aa7, (q31_t)0x9714d18a,\n  (q31_t)0x494d341e, (q31_t)0x97113847, (q31_t)0x49480d68, (q31_t)0x970d9f45, (q31_t)0x4942e684, (q31_t)0x970a0683, (q31_t)0x493dbf74, (q31_t)0x97066e03,\n  (q31_t)0x49389836, (q31_t)0x9702d5c3, (q31_t)0x493370cb, (q31_t)0x96ff3dc4, (q31_t)0x492e4933, (q31_t)0x96fba605, (q31_t)0x4929216e, (q31_t)0x96f80e88,\n  (q31_t)0x4923f97b, (q31_t)0x96f4774b, (q31_t)0x491ed15c, (q31_t)0x96f0e04f, (q31_t)0x4919a90f, (q31_t)0x96ed4994, (q31_t)0x49148095, (q31_t)0x96e9b319,\n  (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x490a2f1b, (q31_t)0x96e286e7, (q31_t)0x4905061a, (q31_t)0x96def12f, (q31_t)0x48ffdcec, (q31_t)0x96db5bb8,\n  (q31_t)0x48fab391, (q31_t)0x96d7c682, (q31_t)0x48f58a09, (q31_t)0x96d4318d, (q31_t)0x48f06054, (q31_t)0x96d09cd8, (q31_t)0x48eb3672, (q31_t)0x96cd0865,\n  (q31_t)0x48e60c62, (q31_t)0x96c97432, (q31_t)0x48e0e227, (q31_t)0x96c5e040, (q31_t)0x48dbb7be, (q31_t)0x96c24c8f, (q31_t)0x48d68d28, (q31_t)0x96beb91f,\n  (q31_t)0x48d16265, (q31_t)0x96bb25f0, (q31_t)0x48cc3775, (q31_t)0x96b79302, (q31_t)0x48c70c59, (q31_t)0x96b40055, (q31_t)0x48c1e10f, (q31_t)0x96b06de9,\n  (q31_t)0x48bcb599, (q31_t)0x96acdbbe, (q31_t)0x48b789f5, (q31_t)0x96a949d3, (q31_t)0x48b25e25, (q31_t)0x96a5b82a, (q31_t)0x48ad3228, (q31_t)0x96a226c2,\n  (q31_t)0x48a805ff, (q31_t)0x969e959b, (q31_t)0x48a2d9a8, (q31_t)0x969b04b4, (q31_t)0x489dad25, (q31_t)0x9697740f, (q31_t)0x48988074, (q31_t)0x9693e3ab,\n  (q31_t)0x48935397, (q31_t)0x96905388, (q31_t)0x488e268e, (q31_t)0x968cc3a5, (q31_t)0x4888f957, (q31_t)0x96893404, (q31_t)0x4883cbf4, (q31_t)0x9685a4a4,\n  (q31_t)0x487e9e64, (q31_t)0x96821585, (q31_t)0x487970a7, (q31_t)0x967e86a7, (q31_t)0x487442be, (q31_t)0x967af80a, (q31_t)0x486f14a8, (q31_t)0x967769af,\n  (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x4864b7f5, (q31_t)0x96704dba, (q31_t)0x485f8959, (q31_t)0x966cc022, (q31_t)0x485a5a90, (q31_t)0x966932cb,\n  (q31_t)0x48552b9b, (q31_t)0x9665a5b4, (q31_t)0x484ffc79, (q31_t)0x966218df, (q31_t)0x484acd2a, (q31_t)0x965e8c4b, (q31_t)0x48459daf, (q31_t)0x965afff9,\n  (q31_t)0x48406e08, (q31_t)0x965773e7, (q31_t)0x483b3e33, (q31_t)0x9653e817, (q31_t)0x48360e32, (q31_t)0x96505c88, (q31_t)0x4830de05, (q31_t)0x964cd139,\n  (q31_t)0x482badab, (q31_t)0x9649462d, (q31_t)0x48267d24, (q31_t)0x9645bb61, (q31_t)0x48214c71, (q31_t)0x964230d7, (q31_t)0x481c1b92, (q31_t)0x963ea68d,\n  (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x4811b94d, (q31_t)0x963792bf, (q31_t)0x480c87e8, (q31_t)0x96340939, (q31_t)0x48075657, (q31_t)0x96307ff5,\n  (q31_t)0x48022499, (q31_t)0x962cf6f2, (q31_t)0x47fcf2af, (q31_t)0x96296e31, (q31_t)0x47f7c099, (q31_t)0x9625e5b0, (q31_t)0x47f28e56, (q31_t)0x96225d71,\n  (q31_t)0x47ed5be6, (q31_t)0x961ed574, (q31_t)0x47e8294a, (q31_t)0x961b4db7, (q31_t)0x47e2f682, (q31_t)0x9617c63c, (q31_t)0x47ddc38e, (q31_t)0x96143f02,\n  (q31_t)0x47d8906d, (q31_t)0x9610b80a, (q31_t)0x47d35d20, (q31_t)0x960d3153, (q31_t)0x47ce29a7, (q31_t)0x9609aadd, (q31_t)0x47c8f601, (q31_t)0x960624a9,\n  (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47be8e31, (q31_t)0x95ff1904, (q31_t)0x47b95a06, (q31_t)0x95fb9394, (q31_t)0x47b425af, (q31_t)0x95f80e65,\n  (q31_t)0x47aef12c, (q31_t)0x95f48977, (q31_t)0x47a9bc7d, (q31_t)0x95f104cb, (q31_t)0x47a487a2, (q31_t)0x95ed8061, (q31_t)0x479f529a, (q31_t)0x95e9fc38,\n  (q31_t)0x479a1d67, (q31_t)0x95e67850, (q31_t)0x4794e807, (q31_t)0x95e2f4a9, (q31_t)0x478fb27b, (q31_t)0x95df7145, (q31_t)0x478a7cc2, (q31_t)0x95dbee21,\n  (q31_t)0x478546de, (q31_t)0x95d86b3f, (q31_t)0x478010cd, (q31_t)0x95d4e89f, (q31_t)0x477ada91, (q31_t)0x95d16640, (q31_t)0x4775a428, (q31_t)0x95cde423,\n  (q31_t)0x47706d93, (q31_t)0x95ca6247, (q31_t)0x476b36d3, (q31_t)0x95c6e0ac, (q31_t)0x4765ffe6, (q31_t)0x95c35f53, (q31_t)0x4760c8cd, (q31_t)0x95bfde3c,\n  (q31_t)0x475b9188, (q31_t)0x95bc5d66, (q31_t)0x47565a17, (q31_t)0x95b8dcd2, (q31_t)0x4751227a, (q31_t)0x95b55c7f, (q31_t)0x474beab1, (q31_t)0x95b1dc6e,\n  (q31_t)0x4746b2bc, (q31_t)0x95ae5c9f, (q31_t)0x47417a9b, (q31_t)0x95aadd11, (q31_t)0x473c424e, (q31_t)0x95a75dc4, (q31_t)0x473709d5, (q31_t)0x95a3deb9,\n  (q31_t)0x4731d131, (q31_t)0x95a05ff0, (q31_t)0x472c9860, (q31_t)0x959ce169, (q31_t)0x47275f63, (q31_t)0x95996323, (q31_t)0x4722263b, (q31_t)0x9595e51e,\n  (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x4717b367, (q31_t)0x958ee9db, (q31_t)0x471279ba, (q31_t)0x958b6c9b, (q31_t)0x470d3fe3, (q31_t)0x9587ef9e,\n  (q31_t)0x470805df, (q31_t)0x958472e2, (q31_t)0x4702cbaf, (q31_t)0x9580f667, (q31_t)0x46fd9154, (q31_t)0x957d7a2f, (q31_t)0x46f856cd, (q31_t)0x9579fe38,\n  (q31_t)0x46f31c1a, (q31_t)0x95768283, (q31_t)0x46ede13b, (q31_t)0x9573070f, (q31_t)0x46e8a631, (q31_t)0x956f8bdd, (q31_t)0x46e36afb, (q31_t)0x956c10ed,\n  (q31_t)0x46de2f99, (q31_t)0x9568963f, (q31_t)0x46d8f40b, (q31_t)0x95651bd2, (q31_t)0x46d3b852, (q31_t)0x9561a1a8, (q31_t)0x46ce7c6d, (q31_t)0x955e27bf,\n  (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46c40420, (q31_t)0x955734b2, (q31_t)0x46bec7b8, (q31_t)0x9553bb8e, (q31_t)0x46b98b24, (q31_t)0x955042ac,\n  (q31_t)0x46b44e65, (q31_t)0x954cca0c, (q31_t)0x46af117a, (q31_t)0x954951ae, (q31_t)0x46a9d464, (q31_t)0x9545d992, (q31_t)0x46a49722, (q31_t)0x954261b7,\n  (q31_t)0x469f59b4, (q31_t)0x953eea1e, (q31_t)0x469a1c1b, (q31_t)0x953b72c7, (q31_t)0x4694de56, (q31_t)0x9537fbb2, (q31_t)0x468fa066, (q31_t)0x953484df,\n  (q31_t)0x468a624a, (q31_t)0x95310e4e, (q31_t)0x46852403, (q31_t)0x952d97fe, (q31_t)0x467fe590, (q31_t)0x952a21f1, (q31_t)0x467aa6f2, (q31_t)0x9526ac25,\n  (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x46702933, (q31_t)0x951fc154, (q31_t)0x466aea12, (q31_t)0x951c4c4e, (q31_t)0x4665aac6, (q31_t)0x9518d78a,\n  (q31_t)0x46606b4e, (q31_t)0x95156308, (q31_t)0x465b2bab, (q31_t)0x9511eec8, (q31_t)0x4655ebdd, (q31_t)0x950e7aca, (q31_t)0x4650abe3, (q31_t)0x950b070e,\n  (q31_t)0x464b6bbe, (q31_t)0x95079394, (q31_t)0x46462b6d, (q31_t)0x9504205c, (q31_t)0x4640eaf2, (q31_t)0x9500ad66, (q31_t)0x463baa4a, (q31_t)0x94fd3ab1,\n  (q31_t)0x46366978, (q31_t)0x94f9c83f, (q31_t)0x4631287a, (q31_t)0x94f6560f, (q31_t)0x462be751, (q31_t)0x94f2e421, (q31_t)0x4626a5fd, (q31_t)0x94ef7275,\n  (q31_t)0x4621647d, (q31_t)0x94ec010b, (q31_t)0x461c22d2, (q31_t)0x94e88fe3, (q31_t)0x4616e0fc, (q31_t)0x94e51efd, (q31_t)0x46119efa, (q31_t)0x94e1ae59,\n  (q31_t)0x460c5cce, (q31_t)0x94de3df8, (q31_t)0x46071a76, (q31_t)0x94dacdd8, (q31_t)0x4601d7f3, (q31_t)0x94d75dfa, (q31_t)0x45fc9545, (q31_t)0x94d3ee5f,\n  (q31_t)0x45f7526b, (q31_t)0x94d07f05, (q31_t)0x45f20f67, (q31_t)0x94cd0fee, (q31_t)0x45eccc37, (q31_t)0x94c9a119, (q31_t)0x45e788dc, (q31_t)0x94c63286,\n  (q31_t)0x45e24556, (q31_t)0x94c2c435, (q31_t)0x45dd01a5, (q31_t)0x94bf5627, (q31_t)0x45d7bdc9, (q31_t)0x94bbe85a, (q31_t)0x45d279c2, (q31_t)0x94b87ad0,\n  (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x45c7f132, (q31_t)0x94b1a081, (q31_t)0x45c2acaa, (q31_t)0x94ae33be, (q31_t)0x45bd67f6, (q31_t)0x94aac73c,\n  (q31_t)0x45b82318, (q31_t)0x94a75afd, (q31_t)0x45b2de0e, (q31_t)0x94a3eeff, (q31_t)0x45ad98da, (q31_t)0x94a08344, (q31_t)0x45a8537a, (q31_t)0x949d17cc,\n  (q31_t)0x45a30df0, (q31_t)0x9499ac95, (q31_t)0x459dc83b, (q31_t)0x949641a1, (q31_t)0x4598825a, (q31_t)0x9492d6ef, (q31_t)0x45933c4f, (q31_t)0x948f6c7f,\n  (q31_t)0x458df619, (q31_t)0x948c0252, (q31_t)0x4588afb8, (q31_t)0x94889867, (q31_t)0x4583692c, (q31_t)0x94852ebe, (q31_t)0x457e2275, (q31_t)0x9481c557,\n  (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x45739487, (q31_t)0x947af351, (q31_t)0x456e4d4f, (q31_t)0x94778ab1, (q31_t)0x456905ed, (q31_t)0x94742254,\n  (q31_t)0x4563be60, (q31_t)0x9470ba39, (q31_t)0x455e76a8, (q31_t)0x946d5260, (q31_t)0x45592ec6, (q31_t)0x9469eaca, (q31_t)0x4553e6b8, (q31_t)0x94668376,\n  (q31_t)0x454e9e80, (q31_t)0x94631c65, (q31_t)0x4549561d, (q31_t)0x945fb596, (q31_t)0x45440d90, (q31_t)0x945c4f09, (q31_t)0x453ec4d7, (q31_t)0x9458e8bf,\n  (q31_t)0x45397bf4, (q31_t)0x945582b7, (q31_t)0x453432e6, (q31_t)0x94521cf1, (q31_t)0x452ee9ae, (q31_t)0x944eb76e, (q31_t)0x4529a04b, (q31_t)0x944b522d,\n  (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x451f0d04, (q31_t)0x94448873, (q31_t)0x4519c321, (q31_t)0x944123fa, (q31_t)0x45147913, (q31_t)0x943dbfc3,\n  (q31_t)0x450f2edb, (q31_t)0x943a5bcf, (q31_t)0x4509e478, (q31_t)0x9436f81d, (q31_t)0x450499eb, (q31_t)0x943394ad, (q31_t)0x44ff4f32, (q31_t)0x94303180,\n  (q31_t)0x44fa0450, (q31_t)0x942cce96, (q31_t)0x44f4b943, (q31_t)0x94296bee, (q31_t)0x44ef6e0b, (q31_t)0x94260989, (q31_t)0x44ea22a9, (q31_t)0x9422a766,\n  (q31_t)0x44e4d71c, (q31_t)0x941f4585, (q31_t)0x44df8b64, (q31_t)0x941be3e8, (q31_t)0x44da3f83, (q31_t)0x9418828c, (q31_t)0x44d4f376, (q31_t)0x94152174,\n  (q31_t)0x44cfa740, (q31_t)0x9411c09e, (q31_t)0x44ca5adf, (q31_t)0x940e600a, (q31_t)0x44c50e53, (q31_t)0x940affb9, (q31_t)0x44bfc19d, (q31_t)0x94079fab,\n  (q31_t)0x44ba74bd, (q31_t)0x94043fdf, (q31_t)0x44b527b2, (q31_t)0x9400e056, (q31_t)0x44afda7d, (q31_t)0x93fd810f, (q31_t)0x44aa8d1d, (q31_t)0x93fa220b,\n  (q31_t)0x44a53f93, (q31_t)0x93f6c34a, (q31_t)0x449ff1df, (q31_t)0x93f364cb, (q31_t)0x449aa400, (q31_t)0x93f0068f, (q31_t)0x449555f7, (q31_t)0x93eca896,\n  (q31_t)0x449007c4, (q31_t)0x93e94adf, (q31_t)0x448ab967, (q31_t)0x93e5ed6b, (q31_t)0x44856adf, (q31_t)0x93e2903a, (q31_t)0x44801c2d, (q31_t)0x93df334c,\n  (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x44757e4a, (q31_t)0x93d87a36, (q31_t)0x44702f19, (q31_t)0x93d51e10, (q31_t)0x446adfbe, (q31_t)0x93d1c22c,\n  (q31_t)0x44659039, (q31_t)0x93ce668b, (q31_t)0x44604089, (q31_t)0x93cb0b2d, (q31_t)0x445af0b0, (q31_t)0x93c7b011, (q31_t)0x4455a0ac, (q31_t)0x93c45539,\n  (q31_t)0x4450507e, (q31_t)0x93c0faa3, (q31_t)0x444b0026, (q31_t)0x93bda04f, (q31_t)0x4445afa4, (q31_t)0x93ba463f, (q31_t)0x44405ef8, (q31_t)0x93b6ec71,\n  (q31_t)0x443b0e21, (q31_t)0x93b392e6, (q31_t)0x4435bd21, (q31_t)0x93b0399e, (q31_t)0x44306bf6, (q31_t)0x93ace099, (q31_t)0x442b1aa2, (q31_t)0x93a987d6,\n  (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x4420777b, (q31_t)0x93a2d71a, (q31_t)0x441b25a8, (q31_t)0x939f7f20, (q31_t)0x4415d3ab, (q31_t)0x939c2769,\n  (q31_t)0x44108184, (q31_t)0x9398cff5, (q31_t)0x440b2f34, (q31_t)0x939578c3, (q31_t)0x4405dcb9, (q31_t)0x939221d5, (q31_t)0x44008a14, (q31_t)0x938ecb29,\n  (q31_t)0x43fb3746, (q31_t)0x938b74c1, (q31_t)0x43f5e44d, (q31_t)0x93881e9b, (q31_t)0x43f0912b, (q31_t)0x9384c8b8, (q31_t)0x43eb3ddf, (q31_t)0x93817318,\n  (q31_t)0x43e5ea68, (q31_t)0x937e1dbb, (q31_t)0x43e096c8, (q31_t)0x937ac8a1, (q31_t)0x43db42fe, (q31_t)0x937773ca, (q31_t)0x43d5ef0a, (q31_t)0x93741f35,\n  (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x43cb46a5, (q31_t)0x936d76d6, (q31_t)0x43c5f234, (q31_t)0x936a230a, (q31_t)0x43c09d99, (q31_t)0x9366cf82,\n  (q31_t)0x43bb48d4, (q31_t)0x93637c3d, (q31_t)0x43b5f3e5, (q31_t)0x9360293a, (q31_t)0x43b09ecc, (q31_t)0x935cd67b, (q31_t)0x43ab498a, (q31_t)0x935983ff,\n  (q31_t)0x43a5f41e, (q31_t)0x935631c5, (q31_t)0x43a09e89, (q31_t)0x9352dfcf, (q31_t)0x439b48c9, (q31_t)0x934f8e1c, (q31_t)0x4395f2e0, (q31_t)0x934c3cab,\n  (q31_t)0x43909ccd, (q31_t)0x9348eb7e, (q31_t)0x438b4691, (q31_t)0x93459a94, (q31_t)0x4385f02a, (q31_t)0x934249ed, (q31_t)0x4380999b, (q31_t)0x933ef989,\n  (q31_t)0x437b42e1, (q31_t)0x933ba968, (q31_t)0x4375ebfe, (q31_t)0x9338598a, (q31_t)0x437094f1, (q31_t)0x933509f0, (q31_t)0x436b3dbb, (q31_t)0x9331ba98,\n  (q31_t)0x4365e65b, (q31_t)0x932e6b84, (q31_t)0x43608ed2, (q31_t)0x932b1cb2, (q31_t)0x435b371f, (q31_t)0x9327ce24, (q31_t)0x4355df42, (q31_t)0x93247fd9,\n  (q31_t)0x4350873c, (q31_t)0x932131d1, (q31_t)0x434b2f0c, (q31_t)0x931de40c, (q31_t)0x4345d6b3, (q31_t)0x931a968b, (q31_t)0x43407e31, (q31_t)0x9317494c,\n  (q31_t)0x433b2585, (q31_t)0x9313fc51, (q31_t)0x4335ccaf, (q31_t)0x9310af99, (q31_t)0x433073b0, (q31_t)0x930d6324, (q31_t)0x432b1a87, (q31_t)0x930a16f3,\n  (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x432067ba, (q31_t)0x93037f59, (q31_t)0x431b0e15, (q31_t)0x930033f1, (q31_t)0x4315b447, (q31_t)0x92fce8cc,\n  (q31_t)0x43105a50, (q31_t)0x92f99deb, (q31_t)0x430b002f, (q31_t)0x92f6534c, (q31_t)0x4305a5e5, (q31_t)0x92f308f1, (q31_t)0x43004b71, (q31_t)0x92efbeda,\n  (q31_t)0x42faf0d4, (q31_t)0x92ec7505, (q31_t)0x42f5960e, (q31_t)0x92e92b74, (q31_t)0x42f03b1e, (q31_t)0x92e5e226, (q31_t)0x42eae005, (q31_t)0x92e2991c,\n  (q31_t)0x42e584c3, (q31_t)0x92df5054, (q31_t)0x42e02958, (q31_t)0x92dc07d0, (q31_t)0x42dacdc3, (q31_t)0x92d8bf90, (q31_t)0x42d57205, (q31_t)0x92d57792,\n  (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x42caba0e, (q31_t)0x92cee862, (q31_t)0x42c55dd4, (q31_t)0x92cba12f, (q31_t)0x42c00172, (q31_t)0x92c85a3f,\n  (q31_t)0x42baa4e6, (q31_t)0x92c51392, (q31_t)0x42b54831, (q31_t)0x92c1cd29, (q31_t)0x42afeb53, (q31_t)0x92be8703, (q31_t)0x42aa8e4b, (q31_t)0x92bb4121,\n  (q31_t)0x42a5311b, (q31_t)0x92b7fb82, (q31_t)0x429fd3c1, (q31_t)0x92b4b626, (q31_t)0x429a763f, (q31_t)0x92b1710e, (q31_t)0x42951893, (q31_t)0x92ae2c3a,\n  (q31_t)0x428fbabe, (q31_t)0x92aae7a8, (q31_t)0x428a5cc0, (q31_t)0x92a7a35a, (q31_t)0x4284fe99, (q31_t)0x92a45f50, (q31_t)0x427fa049, (q31_t)0x92a11b89,\n  (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x4274e32e, (q31_t)0x929a94c6, (q31_t)0x426f8463, (q31_t)0x929751c9, (q31_t)0x426a256f, (q31_t)0x92940f10,\n  (q31_t)0x4264c653, (q31_t)0x9290cc9b, (q31_t)0x425f670d, (q31_t)0x928d8a69, (q31_t)0x425a079e, (q31_t)0x928a487a, (q31_t)0x4254a806, (q31_t)0x928706cf,\n  (q31_t)0x424f4845, (q31_t)0x9283c568, (q31_t)0x4249e85c, (q31_t)0x92808444, (q31_t)0x42448849, (q31_t)0x927d4363, (q31_t)0x423f280e, (q31_t)0x927a02c7,\n  (q31_t)0x4239c7aa, (q31_t)0x9276c26d, (q31_t)0x4234671d, (q31_t)0x92738258, (q31_t)0x422f0667, (q31_t)0x92704286, (q31_t)0x4229a588, (q31_t)0x926d02f7,\n  (q31_t)0x42244481, (q31_t)0x9269c3ac, (q31_t)0x421ee350, (q31_t)0x926684a5, (q31_t)0x421981f7, (q31_t)0x926345e1, (q31_t)0x42142075, (q31_t)0x92600761,\n  (q31_t)0x420ebecb, (q31_t)0x925cc924, (q31_t)0x42095cf7, (q31_t)0x92598b2b, (q31_t)0x4203fafb, (q31_t)0x92564d76, (q31_t)0x41fe98d6, (q31_t)0x92531005,\n  (q31_t)0x41f93689, (q31_t)0x924fd2d7, (q31_t)0x41f3d413, (q31_t)0x924c95ec, (q31_t)0x41ee7174, (q31_t)0x92495946, (q31_t)0x41e90eac, (q31_t)0x92461ce3,\n  (q31_t)0x41e3abbc, (q31_t)0x9242e0c4, (q31_t)0x41de48a3, (q31_t)0x923fa4e8, (q31_t)0x41d8e561, (q31_t)0x923c6950, (q31_t)0x41d381f7, (q31_t)0x92392dfc,\n  (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x41c8baa9, (q31_t)0x9232b81f, (q31_t)0x41c356c5, (q31_t)0x922f7d96, (q31_t)0x41bdf2b9, (q31_t)0x922c4351,\n  (q31_t)0x41b88e84, (q31_t)0x9229094f, (q31_t)0x41b32a26, (q31_t)0x9225cf91, (q31_t)0x41adc5a0, (q31_t)0x92229617, (q31_t)0x41a860f1, (q31_t)0x921f5ce1,\n  (q31_t)0x41a2fc1a, (q31_t)0x921c23ef, (q31_t)0x419d971b, (q31_t)0x9218eb40, (q31_t)0x419831f3, (q31_t)0x9215b2d5, (q31_t)0x4192cca2, (q31_t)0x92127aae,\n  (q31_t)0x418d6729, (q31_t)0x920f42cb, (q31_t)0x41880188, (q31_t)0x920c0b2c, (q31_t)0x41829bbe, (q31_t)0x9208d3d0, (q31_t)0x417d35cb, (q31_t)0x92059cb8,\n  (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x4172696e, (q31_t)0x91ff2f54, (q31_t)0x416d0302, (q31_t)0x91fbf908, (q31_t)0x41679c6f, (q31_t)0x91f8c300,\n  (q31_t)0x416235b2, (q31_t)0x91f58d3b, (q31_t)0x415ccece, (q31_t)0x91f257bb, (q31_t)0x415767c1, (q31_t)0x91ef227e, (q31_t)0x4152008c, (q31_t)0x91ebed85,\n  (q31_t)0x414c992f, (q31_t)0x91e8b8d0, (q31_t)0x414731a9, (q31_t)0x91e5845f, (q31_t)0x4141c9fb, (q31_t)0x91e25032, (q31_t)0x413c6225, (q31_t)0x91df1c49,\n  (q31_t)0x4136fa27, (q31_t)0x91dbe8a4, (q31_t)0x41319200, (q31_t)0x91d8b542, (q31_t)0x412c29b1, (q31_t)0x91d58225, (q31_t)0x4126c13a, (q31_t)0x91d24f4c,\n  (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x411befd3, (q31_t)0x91cbea65, (q31_t)0x411686e4, (q31_t)0x91c8b857, (q31_t)0x41111dcc, (q31_t)0x91c5868e,\n  (q31_t)0x410bb48c, (q31_t)0x91c25508, (q31_t)0x41064b24, (q31_t)0x91bf23c7, (q31_t)0x4100e194, (q31_t)0x91bbf2c9, (q31_t)0x40fb77dc, (q31_t)0x91b8c210,\n  (q31_t)0x40f60dfb, (q31_t)0x91b5919a, (q31_t)0x40f0a3f3, (q31_t)0x91b26169, (q31_t)0x40eb39c3, (q31_t)0x91af317c, (q31_t)0x40e5cf6a, (q31_t)0x91ac01d2,\n  (q31_t)0x40e064ea, (q31_t)0x91a8d26d, (q31_t)0x40dafa41, (q31_t)0x91a5a34c, (q31_t)0x40d58f71, (q31_t)0x91a2746f, (q31_t)0x40d02478, (q31_t)0x919f45d6,\n  (q31_t)0x40cab958, (q31_t)0x919c1781, (q31_t)0x40c54e0f, (q31_t)0x9198e970, (q31_t)0x40bfe29f, (q31_t)0x9195bba3, (q31_t)0x40ba7706, (q31_t)0x91928e1a,\n  (q31_t)0x40b50b46, (q31_t)0x918f60d6, (q31_t)0x40af9f5e, (q31_t)0x918c33d5, (q31_t)0x40aa334e, (q31_t)0x91890719, (q31_t)0x40a4c716, (q31_t)0x9185daa1,\n  (q31_t)0x409f5ab6, (q31_t)0x9182ae6d, (q31_t)0x4099ee2e, (q31_t)0x917f827d, (q31_t)0x4094817f, (q31_t)0x917c56d1, (q31_t)0x408f14a7, (q31_t)0x91792b6a,\n  (q31_t)0x4089a7a8, (q31_t)0x91760047, (q31_t)0x40843a81, (q31_t)0x9172d567, (q31_t)0x407ecd32, (q31_t)0x916faacc, (q31_t)0x40795fbc, (q31_t)0x916c8076,\n  (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x406e8457, (q31_t)0x91662c95, (q31_t)0x40691669, (q31_t)0x9163030b, (q31_t)0x4063a854, (q31_t)0x915fd9c5,\n  (q31_t)0x405e3a16, (q31_t)0x915cb0c3, (q31_t)0x4058cbb1, (q31_t)0x91598806, (q31_t)0x40535d24, (q31_t)0x91565f8d, (q31_t)0x404dee70, (q31_t)0x91533758,\n  (q31_t)0x40487f94, (q31_t)0x91500f67, (q31_t)0x40431090, (q31_t)0x914ce7bb, (q31_t)0x403da165, (q31_t)0x9149c053, (q31_t)0x40383212, (q31_t)0x9146992f,\n  (q31_t)0x4032c297, (q31_t)0x91437250, (q31_t)0x402d52f5, (q31_t)0x91404bb5, (q31_t)0x4027e32b, (q31_t)0x913d255e, (q31_t)0x4022733a, (q31_t)0x9139ff4b,\n  (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x401792e0, (q31_t)0x9133b3f3, (q31_t)0x40122278, (q31_t)0x91308eae, (q31_t)0x400cb1e9, (q31_t)0x912d69ad,\n  (q31_t)0x40074132, (q31_t)0x912a44f0, (q31_t)0x4001d053, (q31_t)0x91272078, (q31_t)0x3ffc5f4d, (q31_t)0x9123fc44, (q31_t)0x3ff6ee1f, (q31_t)0x9120d854,\n  (q31_t)0x3ff17cca, (q31_t)0x911db4a9, (q31_t)0x3fec0b4e, (q31_t)0x911a9142, (q31_t)0x3fe699aa, (q31_t)0x91176e1f, (q31_t)0x3fe127df, (q31_t)0x91144b41,\n  (q31_t)0x3fdbb5ec, (q31_t)0x911128a8, (q31_t)0x3fd643d2, (q31_t)0x910e0653, (q31_t)0x3fd0d191, (q31_t)0x910ae442, (q31_t)0x3fcb5f28, (q31_t)0x9107c276,\n  (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3fc079e0, (q31_t)0x91017faa, (q31_t)0x3fbb0702, (q31_t)0x90fe5eab, (q31_t)0x3fb593fb, (q31_t)0x90fb3df1,\n  (q31_t)0x3fb020ce, (q31_t)0x90f81d7b, (q31_t)0x3faaad79, (q31_t)0x90f4fd4a, (q31_t)0x3fa539fd, (q31_t)0x90f1dd5d, (q31_t)0x3f9fc65a, (q31_t)0x90eebdb4,\n  (q31_t)0x3f9a5290, (q31_t)0x90eb9e50, (q31_t)0x3f94de9e, (q31_t)0x90e87f31, (q31_t)0x3f8f6a85, (q31_t)0x90e56056, (q31_t)0x3f89f645, (q31_t)0x90e241bf,\n  (q31_t)0x3f8481dd, (q31_t)0x90df236e, (q31_t)0x3f7f0d4f, (q31_t)0x90dc0560, (q31_t)0x3f799899, (q31_t)0x90d8e798, (q31_t)0x3f7423bc, (q31_t)0x90d5ca13,\n  (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, (q31_t)0x3f69398d, (q31_t)0x90cf8fd9, (q31_t)0x3f63c43b, (q31_t)0x90cc7322, (q31_t)0x3f5e4ec2, (q31_t)0x90c956b1,\n  (q31_t)0x3f58d921, (q31_t)0x90c63a83, (q31_t)0x3f53635a, (q31_t)0x90c31e9b, (q31_t)0x3f4ded6b, (q31_t)0x90c002f7, (q31_t)0x3f487755, (q31_t)0x90bce797,\n  (q31_t)0x3f430119, (q31_t)0x90b9cc7d, (q31_t)0x3f3d8ab5, (q31_t)0x90b6b1a6, (q31_t)0x3f38142a, (q31_t)0x90b39715, (q31_t)0x3f329d79, (q31_t)0x90b07cc8,\n  (q31_t)0x3f2d26a0, (q31_t)0x90ad62c0, (q31_t)0x3f27afa1, (q31_t)0x90aa48fd, (q31_t)0x3f22387a, (q31_t)0x90a72f7e, (q31_t)0x3f1cc12c, (q31_t)0x90a41644,\n  (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3f11d21d, (q31_t)0x909de49e, (q31_t)0x3f0c5a5a, (q31_t)0x909acc32, (q31_t)0x3f06e271, (q31_t)0x9097b40a,\n  (q31_t)0x3f016a61, (q31_t)0x90949c28, (q31_t)0x3efbf22a, (q31_t)0x9091848a, (q31_t)0x3ef679cc, (q31_t)0x908e6d31, (q31_t)0x3ef10148, (q31_t)0x908b561c,\n  (q31_t)0x3eeb889c, (q31_t)0x90883f4d, (q31_t)0x3ee60fca, (q31_t)0x908528c2, (q31_t)0x3ee096d1, (q31_t)0x9082127c, (q31_t)0x3edb1db1, (q31_t)0x907efc7a,\n  (q31_t)0x3ed5a46b, (q31_t)0x907be6be, (q31_t)0x3ed02afd, (q31_t)0x9078d146, (q31_t)0x3ecab169, (q31_t)0x9075bc13, (q31_t)0x3ec537ae, (q31_t)0x9072a725,\n  (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3eba43c4, (q31_t)0x906c7e17, (q31_t)0x3eb4c995, (q31_t)0x906969f8, (q31_t)0x3eaf4f40, (q31_t)0x9066561d,\n  (q31_t)0x3ea9d4c3, (q31_t)0x90634287, (q31_t)0x3ea45a21, (q31_t)0x90602f35, (q31_t)0x3e9edf57, (q31_t)0x905d1c29, (q31_t)0x3e996467, (q31_t)0x905a0962,\n  (q31_t)0x3e93e950, (q31_t)0x9056f6df, (q31_t)0x3e8e6e12, (q31_t)0x9053e4a1, (q31_t)0x3e88f2ae, (q31_t)0x9050d2a9, (q31_t)0x3e837724, (q31_t)0x904dc0f5,\n  (q31_t)0x3e7dfb73, (q31_t)0x904aaf86, (q31_t)0x3e787f9b, (q31_t)0x90479e5c, (q31_t)0x3e73039d, (q31_t)0x90448d76, (q31_t)0x3e6d8778, (q31_t)0x90417cd6,\n  (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e628ebb, (q31_t)0x903b5c64, (q31_t)0x3e5d1222, (q31_t)0x90384c93, (q31_t)0x3e579564, (q31_t)0x90353d06,\n  (q31_t)0x3e52187f, (q31_t)0x90322dbf, (q31_t)0x3e4c9b73, (q31_t)0x902f1ebc, (q31_t)0x3e471e41, (q31_t)0x902c0fff, (q31_t)0x3e41a0e8, (q31_t)0x90290186,\n  (q31_t)0x3e3c2369, (q31_t)0x9025f352, (q31_t)0x3e36a5c4, (q31_t)0x9022e564, (q31_t)0x3e3127f9, (q31_t)0x901fd7ba, (q31_t)0x3e2baa07, (q31_t)0x901cca55,\n  (q31_t)0x3e262bee, (q31_t)0x9019bd36, (q31_t)0x3e20adaf, (q31_t)0x9016b05b, (q31_t)0x3e1b2f4a, (q31_t)0x9013a3c5, (q31_t)0x3e15b0bf, (q31_t)0x90109775,\n  (q31_t)0x3e10320d, (q31_t)0x900d8b69, (q31_t)0x3e0ab336, (q31_t)0x900a7fa3, (q31_t)0x3e053437, (q31_t)0x90077422, (q31_t)0x3dffb513, (q31_t)0x900468e5,\n  (q31_t)0x3dfa35c8, (q31_t)0x90015dee, (q31_t)0x3df4b657, (q31_t)0x8ffe533c, (q31_t)0x3def36c0, (q31_t)0x8ffb48cf, (q31_t)0x3de9b703, (q31_t)0x8ff83ea7,\n  (q31_t)0x3de4371f, (q31_t)0x8ff534c4, (q31_t)0x3ddeb716, (q31_t)0x8ff22b26, (q31_t)0x3dd936e6, (q31_t)0x8fef21ce, (q31_t)0x3dd3b690, (q31_t)0x8fec18ba,\n  (q31_t)0x3dce3614, (q31_t)0x8fe90fec, (q31_t)0x3dc8b571, (q31_t)0x8fe60763, (q31_t)0x3dc334a9, (q31_t)0x8fe2ff1f, (q31_t)0x3dbdb3ba, (q31_t)0x8fdff720,\n  (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3db2b16b, (q31_t)0x8fd9e7f2, (q31_t)0x3dad300b, (q31_t)0x8fd6e0c2, (q31_t)0x3da7ae84, (q31_t)0x8fd3d9d8,\n  (q31_t)0x3da22cd7, (q31_t)0x8fd0d333, (q31_t)0x3d9cab04, (q31_t)0x8fcdccd3, (q31_t)0x3d97290b, (q31_t)0x8fcac6b9, (q31_t)0x3d91a6ed, (q31_t)0x8fc7c0e3,\n  (q31_t)0x3d8c24a8, (q31_t)0x8fc4bb53, (q31_t)0x3d86a23d, (q31_t)0x8fc1b608, (q31_t)0x3d811fac, (q31_t)0x8fbeb103, (q31_t)0x3d7b9cf6, (q31_t)0x8fbbac42,\n  (q31_t)0x3d761a19, (q31_t)0x8fb8a7c7, (q31_t)0x3d709717, (q31_t)0x8fb5a391, (q31_t)0x3d6b13ee, (q31_t)0x8fb29fa0, (q31_t)0x3d6590a0, (q31_t)0x8faf9bf5,\n  (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d5a8992, (q31_t)0x8fa9956e, (q31_t)0x3d5505d2, (q31_t)0x8fa69293, (q31_t)0x3d4f81ec, (q31_t)0x8fa38ffc,\n  (q31_t)0x3d49fde1, (q31_t)0x8fa08dab, (q31_t)0x3d4479b0, (q31_t)0x8f9d8ba0, (q31_t)0x3d3ef559, (q31_t)0x8f9a89da, (q31_t)0x3d3970dc, (q31_t)0x8f978859,\n  (q31_t)0x3d33ec39, (q31_t)0x8f94871d, (q31_t)0x3d2e6771, (q31_t)0x8f918627, (q31_t)0x3d28e282, (q31_t)0x8f8e8576, (q31_t)0x3d235d6f, (q31_t)0x8f8b850a,\n  (q31_t)0x3d1dd835, (q31_t)0x8f8884e4, (q31_t)0x3d1852d6, (q31_t)0x8f858503, (q31_t)0x3d12cd51, (q31_t)0x8f828568, (q31_t)0x3d0d47a6, (q31_t)0x8f7f8612,\n  (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3d023be0, (q31_t)0x8f798836, (q31_t)0x3cfcb5c4, (q31_t)0x8f7689b0, (q31_t)0x3cf72f83, (q31_t)0x8f738b70,\n  (q31_t)0x3cf1a91c, (q31_t)0x8f708d75, (q31_t)0x3cec2290, (q31_t)0x8f6d8fbf, (q31_t)0x3ce69bde, (q31_t)0x8f6a924f, (q31_t)0x3ce11507, (q31_t)0x8f679525,\n  (q31_t)0x3cdb8e09, (q31_t)0x8f649840, (q31_t)0x3cd606e7, (q31_t)0x8f619ba0, (q31_t)0x3cd07f9f, (q31_t)0x8f5e9f46, (q31_t)0x3ccaf831, (q31_t)0x8f5ba331,\n  (q31_t)0x3cc5709e, (q31_t)0x8f58a761, (q31_t)0x3cbfe8e5, (q31_t)0x8f55abd8, (q31_t)0x3cba6107, (q31_t)0x8f52b093, (q31_t)0x3cb4d904, (q31_t)0x8f4fb595,\n  (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, (q31_t)0x3ca9c88c, (q31_t)0x8f49c067, (q31_t)0x3ca44018, (q31_t)0x8f46c639, (q31_t)0x3c9eb77f, (q31_t)0x8f43cc50,\n  (q31_t)0x3c992ec0, (q31_t)0x8f40d2ad, (q31_t)0x3c93a5dc, (q31_t)0x8f3dd950, (q31_t)0x3c8e1cd3, (q31_t)0x8f3ae038, (q31_t)0x3c8893a4, (q31_t)0x8f37e765,\n  (q31_t)0x3c830a50, (q31_t)0x8f34eed8, (q31_t)0x3c7d80d6, (q31_t)0x8f31f691, (q31_t)0x3c77f737, (q31_t)0x8f2efe8f, (q31_t)0x3c726d73, (q31_t)0x8f2c06d3,\n  (q31_t)0x3c6ce38a, (q31_t)0x8f290f5c, (q31_t)0x3c67597b, (q31_t)0x8f26182b, (q31_t)0x3c61cf48, (q31_t)0x8f232140, (q31_t)0x3c5c44ee, (q31_t)0x8f202a9a,\n  (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3c512fcc, (q31_t)0x8f1a3e1f, (q31_t)0x3c4ba504, (q31_t)0x8f17484b, (q31_t)0x3c461a16, (q31_t)0x8f1452bb,\n  (q31_t)0x3c408f03, (q31_t)0x8f115d72, (q31_t)0x3c3b03ca, (q31_t)0x8f0e686e, (q31_t)0x3c35786d, (q31_t)0x8f0b73b0, (q31_t)0x3c2fecea, (q31_t)0x8f087f37,\n  (q31_t)0x3c2a6142, (q31_t)0x8f058b04, (q31_t)0x3c24d575, (q31_t)0x8f029717, (q31_t)0x3c1f4983, (q31_t)0x8effa370, (q31_t)0x3c19bd6c, (q31_t)0x8efcb00e,\n  (q31_t)0x3c143130, (q31_t)0x8ef9bcf2, (q31_t)0x3c0ea4cf, (q31_t)0x8ef6ca1c, (q31_t)0x3c091849, (q31_t)0x8ef3d78b, (q31_t)0x3c038b9e, (q31_t)0x8ef0e540,\n  (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3bf871d8, (q31_t)0x8eeb017c, (q31_t)0x3bf2e4be, (q31_t)0x8ee81002, (q31_t)0x3bed577e, (q31_t)0x8ee51ece,\n  (q31_t)0x3be7ca1a, (q31_t)0x8ee22de0, (q31_t)0x3be23c91, (q31_t)0x8edf3d38, (q31_t)0x3bdcaee3, (q31_t)0x8edc4cd5, (q31_t)0x3bd72110, (q31_t)0x8ed95cb8,\n  (q31_t)0x3bd19318, (q31_t)0x8ed66ce1, (q31_t)0x3bcc04fb, (q31_t)0x8ed37d50, (q31_t)0x3bc676b9, (q31_t)0x8ed08e05, (q31_t)0x3bc0e853, (q31_t)0x8ecd9eff,\n  (q31_t)0x3bbb59c7, (q31_t)0x8ecab040, (q31_t)0x3bb5cb17, (q31_t)0x8ec7c1c6, (q31_t)0x3bb03c42, (q31_t)0x8ec4d392, (q31_t)0x3baaad48, (q31_t)0x8ec1e5a4,\n  (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b9f8ee5, (q31_t)0x8ebc0a99, (q31_t)0x3b99ff7d, (q31_t)0x8eb91d7c, (q31_t)0x3b946ff0, (q31_t)0x8eb630a6,\n  (q31_t)0x3b8ee03e, (q31_t)0x8eb34415, (q31_t)0x3b895068, (q31_t)0x8eb057ca, (q31_t)0x3b83c06c, (q31_t)0x8ead6bc5, (q31_t)0x3b7e304c, (q31_t)0x8eaa8006,\n  (q31_t)0x3b78a007, (q31_t)0x8ea7948c, (q31_t)0x3b730f9e, (q31_t)0x8ea4a959, (q31_t)0x3b6d7f10, (q31_t)0x8ea1be6c, (q31_t)0x3b67ee5d, (q31_t)0x8e9ed3c4,\n  (q31_t)0x3b625d86, (q31_t)0x8e9be963, (q31_t)0x3b5ccc8a, (q31_t)0x8e98ff47, (q31_t)0x3b573b69, (q31_t)0x8e961571, (q31_t)0x3b51aa24, (q31_t)0x8e932be2,\n  (q31_t)0x3b4c18ba, (q31_t)0x8e904298, (q31_t)0x3b46872c, (q31_t)0x8e8d5994, (q31_t)0x3b40f579, (q31_t)0x8e8a70d7, (q31_t)0x3b3b63a1, (q31_t)0x8e87885f,\n  (q31_t)0x3b35d1a5, (q31_t)0x8e84a02d, (q31_t)0x3b303f84, (q31_t)0x8e81b841, (q31_t)0x3b2aad3f, (q31_t)0x8e7ed09b, (q31_t)0x3b251ad6, (q31_t)0x8e7be93c,\n  (q31_t)0x3b1f8848, (q31_t)0x8e790222, (q31_t)0x3b19f595, (q31_t)0x8e761b4e, (q31_t)0x3b1462be, (q31_t)0x8e7334c1, (q31_t)0x3b0ecfc3, (q31_t)0x8e704e79,\n  (q31_t)0x3b093ca3, (q31_t)0x8e6d6877, (q31_t)0x3b03a95e, (q31_t)0x8e6a82bc, (q31_t)0x3afe15f6, (q31_t)0x8e679d47, (q31_t)0x3af88269, (q31_t)0x8e64b817,\n  (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3aed5ae1, (q31_t)0x8e5eee8b, (q31_t)0x3ae7c6e7, (q31_t)0x8e5c0a2e, (q31_t)0x3ae232c9, (q31_t)0x8e592617,\n  (q31_t)0x3adc9e86, (q31_t)0x8e564246, (q31_t)0x3ad70a1f, (q31_t)0x8e535ebb, (q31_t)0x3ad17593, (q31_t)0x8e507b76, (q31_t)0x3acbe0e3, (q31_t)0x8e4d9878,\n  (q31_t)0x3ac64c0f, (q31_t)0x8e4ab5bf, (q31_t)0x3ac0b717, (q31_t)0x8e47d34d, (q31_t)0x3abb21fb, (q31_t)0x8e44f121, (q31_t)0x3ab58cba, (q31_t)0x8e420f3b,\n  (q31_t)0x3aaff755, (q31_t)0x8e3f2d9b, (q31_t)0x3aaa61cc, (q31_t)0x8e3c4c41, (q31_t)0x3aa4cc1e, (q31_t)0x8e396b2e, (q31_t)0x3a9f364d, (q31_t)0x8e368a61,\n  (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a940a3e, (q31_t)0x8e30c999, (q31_t)0x3a8e7400, (q31_t)0x8e2de99e, (q31_t)0x3a88dd9d, (q31_t)0x8e2b09e9,\n  (q31_t)0x3a834717, (q31_t)0x8e282a7b, (q31_t)0x3a7db06d, (q31_t)0x8e254b53, (q31_t)0x3a78199f, (q31_t)0x8e226c71, (q31_t)0x3a7282ac, (q31_t)0x8e1f8dd6,\n  (q31_t)0x3a6ceb96, (q31_t)0x8e1caf80, (q31_t)0x3a67545b, (q31_t)0x8e19d171, (q31_t)0x3a61bcfd, (q31_t)0x8e16f3a9, (q31_t)0x3a5c257a, (q31_t)0x8e141626,\n  (q31_t)0x3a568dd4, (q31_t)0x8e1138ea, (q31_t)0x3a50f609, (q31_t)0x8e0e5bf4, (q31_t)0x3a4b5e1b, (q31_t)0x8e0b7f44, (q31_t)0x3a45c608, (q31_t)0x8e08a2db,\n  (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x3a3a9577, (q31_t)0x8e02eadb, (q31_t)0x3a34fcf9, (q31_t)0x8e000f44, (q31_t)0x3a2f6457, (q31_t)0x8dfd33f4,\n  (q31_t)0x3a29cb91, (q31_t)0x8dfa58ea, (q31_t)0x3a2432a7, (q31_t)0x8df77e27, (q31_t)0x3a1e9999, (q31_t)0x8df4a3a9, (q31_t)0x3a190068, (q31_t)0x8df1c973,\n  (q31_t)0x3a136712, (q31_t)0x8deeef82, (q31_t)0x3a0dcd99, (q31_t)0x8dec15d8, (q31_t)0x3a0833fc, (q31_t)0x8de93c74, (q31_t)0x3a029a3b, (q31_t)0x8de66357,\n  (q31_t)0x39fd0056, (q31_t)0x8de38a80, (q31_t)0x39f7664e, (q31_t)0x8de0b1ef, (q31_t)0x39f1cc21, (q31_t)0x8dddd9a5, (q31_t)0x39ec31d1, (q31_t)0x8ddb01a1,\n  (q31_t)0x39e6975e, (q31_t)0x8dd829e4, (q31_t)0x39e0fcc6, (q31_t)0x8dd5526d, (q31_t)0x39db620b, (q31_t)0x8dd27b3c, (q31_t)0x39d5c72c, (q31_t)0x8dcfa452,\n  (q31_t)0x39d02c2a, (q31_t)0x8dcccdaf, (q31_t)0x39ca9104, (q31_t)0x8dc9f751, (q31_t)0x39c4f5ba, (q31_t)0x8dc7213b, (q31_t)0x39bf5a4d, (q31_t)0x8dc44b6a,\n  (q31_t)0x39b9bebc, (q31_t)0x8dc175e0, (q31_t)0x39b42307, (q31_t)0x8dbea09d, (q31_t)0x39ae872f, (q31_t)0x8dbbcba0, (q31_t)0x39a8eb33, (q31_t)0x8db8f6ea,\n  (q31_t)0x39a34f13, (q31_t)0x8db6227a, (q31_t)0x399db2d0, (q31_t)0x8db34e50, (q31_t)0x3998166a, (q31_t)0x8db07a6d, (q31_t)0x399279e0, (q31_t)0x8dada6d1,\n  (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x39874061, (q31_t)0x8da8006c, (q31_t)0x3981a36d, (q31_t)0x8da52da3, (q31_t)0x397c0655, (q31_t)0x8da25b21,\n  (q31_t)0x39766919, (q31_t)0x8d9f88e5, (q31_t)0x3970cbba, (q31_t)0x8d9cb6f0, (q31_t)0x396b2e38, (q31_t)0x8d99e541, (q31_t)0x39659092, (q31_t)0x8d9713d9,\n  (q31_t)0x395ff2c9, (q31_t)0x8d9442b8, (q31_t)0x395a54dd, (q31_t)0x8d9171dd, (q31_t)0x3954b6cd, (q31_t)0x8d8ea148, (q31_t)0x394f1899, (q31_t)0x8d8bd0fb,\n  (q31_t)0x39497a43, (q31_t)0x8d8900f3, (q31_t)0x3943dbc9, (q31_t)0x8d863133, (q31_t)0x393e3d2c, (q31_t)0x8d8361b9, (q31_t)0x39389e6b, (q31_t)0x8d809286,\n  (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x392d6080, (q31_t)0x8d7af4f3, (q31_t)0x3927c155, (q31_t)0x8d782694, (q31_t)0x39222208, (q31_t)0x8d75587b,\n  (q31_t)0x391c8297, (q31_t)0x8d728aa9, (q31_t)0x3916e303, (q31_t)0x8d6fbd1d, (q31_t)0x3911434b, (q31_t)0x8d6cefd9, (q31_t)0x390ba371, (q31_t)0x8d6a22db,\n  (q31_t)0x39060373, (q31_t)0x8d675623, (q31_t)0x39006352, (q31_t)0x8d6489b3, (q31_t)0x38fac30e, (q31_t)0x8d61bd89, (q31_t)0x38f522a6, (q31_t)0x8d5ef1a5,\n  (q31_t)0x38ef821c, (q31_t)0x8d5c2609, (q31_t)0x38e9e16e, (q31_t)0x8d595ab3, (q31_t)0x38e4409e, (q31_t)0x8d568fa4, (q31_t)0x38de9faa, (q31_t)0x8d53c4db,\n  (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x38d35d59, (q31_t)0x8d4e301f, (q31_t)0x38cdbbfc, (q31_t)0x8d4b662a, (q31_t)0x38c81a7c, (q31_t)0x8d489c7d,\n  (q31_t)0x38c278d9, (q31_t)0x8d45d316, (q31_t)0x38bcd713, (q31_t)0x8d4309f6, (q31_t)0x38b7352a, (q31_t)0x8d40411d, (q31_t)0x38b1931e, (q31_t)0x8d3d788b,\n  (q31_t)0x38abf0ef, (q31_t)0x8d3ab03f, (q31_t)0x38a64e9d, (q31_t)0x8d37e83a, (q31_t)0x38a0ac29, (q31_t)0x8d35207d, (q31_t)0x389b0991, (q31_t)0x8d325905,\n  (q31_t)0x389566d6, (q31_t)0x8d2f91d5, (q31_t)0x388fc3f8, (q31_t)0x8d2ccaec, (q31_t)0x388a20f8, (q31_t)0x8d2a0449, (q31_t)0x38847dd5, (q31_t)0x8d273ded,\n  (q31_t)0x387eda8e, (q31_t)0x8d2477d8, (q31_t)0x38793725, (q31_t)0x8d21b20a, (q31_t)0x38739399, (q31_t)0x8d1eec83, (q31_t)0x386defeb, (q31_t)0x8d1c2742,\n  (q31_t)0x38684c19, (q31_t)0x8d196249, (q31_t)0x3862a825, (q31_t)0x8d169d96, (q31_t)0x385d040d, (q31_t)0x8d13d92a, (q31_t)0x38575fd4, (q31_t)0x8d111505,\n  (q31_t)0x3851bb77, (q31_t)0x8d0e5127, (q31_t)0x384c16f7, (q31_t)0x8d0b8d90, (q31_t)0x38467255, (q31_t)0x8d08ca40, (q31_t)0x3840cd90, (q31_t)0x8d060737,\n  (q31_t)0x383b28a9, (q31_t)0x8d034474, (q31_t)0x3835839f, (q31_t)0x8d0081f9, (q31_t)0x382fde72, (q31_t)0x8cfdbfc4, (q31_t)0x382a3922, (q31_t)0x8cfafdd7,\n  (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x381eee1b, (q31_t)0x8cf57ad0, (q31_t)0x38194864, (q31_t)0x8cf2b9b8, (q31_t)0x3813a28a, (q31_t)0x8ceff8e6,\n  (q31_t)0x380dfc8d, (q31_t)0x8ced385b, (q31_t)0x3808566e, (q31_t)0x8cea7818, (q31_t)0x3802b02c, (q31_t)0x8ce7b81b, (q31_t)0x37fd09c8, (q31_t)0x8ce4f865,\n  (q31_t)0x37f76341, (q31_t)0x8ce238f6, (q31_t)0x37f1bc97, (q31_t)0x8cdf79ce, (q31_t)0x37ec15cb, (q31_t)0x8cdcbaee, (q31_t)0x37e66edd, (q31_t)0x8cd9fc54,\n  (q31_t)0x37e0c7cc, (q31_t)0x8cd73e01, (q31_t)0x37db2099, (q31_t)0x8cd47ff6, (q31_t)0x37d57943, (q31_t)0x8cd1c231, (q31_t)0x37cfd1cb, (q31_t)0x8ccf04b3,\n  (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x37c48273, (q31_t)0x8cc98a8e, (q31_t)0x37beda93, (q31_t)0x8cc6cde5, (q31_t)0x37b93292, (q31_t)0x8cc41184,\n  (q31_t)0x37b38a6d, (q31_t)0x8cc1556a, (q31_t)0x37ade227, (q31_t)0x8cbe9996, (q31_t)0x37a839be, (q31_t)0x8cbbde0a, (q31_t)0x37a29132, (q31_t)0x8cb922c6,\n  (q31_t)0x379ce885, (q31_t)0x8cb667c8, (q31_t)0x37973fb5, (q31_t)0x8cb3ad11, (q31_t)0x379196c3, (q31_t)0x8cb0f2a1, (q31_t)0x378bedae, (q31_t)0x8cae3879,\n  (q31_t)0x37864477, (q31_t)0x8cab7e98, (q31_t)0x37809b1e, (q31_t)0x8ca8c4fd, (q31_t)0x377af1a3, (q31_t)0x8ca60baa, (q31_t)0x37754806, (q31_t)0x8ca3529f,\n  (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3769f464, (q31_t)0x8c9de15c, (q31_t)0x37644a60, (q31_t)0x8c9b2926, (q31_t)0x375ea03a, (q31_t)0x8c987137,\n  (q31_t)0x3758f5f2, (q31_t)0x8c95b98f, (q31_t)0x37534b87, (q31_t)0x8c93022e, (q31_t)0x374da0fa, (q31_t)0x8c904b14, (q31_t)0x3747f64c, (q31_t)0x8c8d9442,\n  (q31_t)0x37424b7b, (q31_t)0x8c8addb7, (q31_t)0x373ca088, (q31_t)0x8c882773, (q31_t)0x3736f573, (q31_t)0x8c857176, (q31_t)0x37314a3c, (q31_t)0x8c82bbc0,\n  (q31_t)0x372b9ee3, (q31_t)0x8c800652, (q31_t)0x3725f367, (q31_t)0x8c7d512b, (q31_t)0x372047ca, (q31_t)0x8c7a9c4b, (q31_t)0x371a9c0b, (q31_t)0x8c77e7b3,\n  (q31_t)0x3714f02a, (q31_t)0x8c753362, (q31_t)0x370f4427, (q31_t)0x8c727f58, (q31_t)0x37099802, (q31_t)0x8c6fcb95, (q31_t)0x3703ebbb, (q31_t)0x8c6d181a,\n  (q31_t)0x36fe3f52, (q31_t)0x8c6a64e5, (q31_t)0x36f892c7, (q31_t)0x8c67b1f9, (q31_t)0x36f2e61a, (q31_t)0x8c64ff53, (q31_t)0x36ed394b, (q31_t)0x8c624cf5,\n  (q31_t)0x36e78c5b, (q31_t)0x8c5f9ade, (q31_t)0x36e1df48, (q31_t)0x8c5ce90e, (q31_t)0x36dc3214, (q31_t)0x8c5a3786, (q31_t)0x36d684be, (q31_t)0x8c578645,\n  (q31_t)0x36d0d746, (q31_t)0x8c54d54c, (q31_t)0x36cb29ac, (q31_t)0x8c522499, (q31_t)0x36c57bf0, (q31_t)0x8c4f742f, (q31_t)0x36bfce13, (q31_t)0x8c4cc40b,\n  (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x36b471f3, (q31_t)0x8c47649a, (q31_t)0x36aec3b0, (q31_t)0x8c44b54d, (q31_t)0x36a9154c, (q31_t)0x8c420647,\n  (q31_t)0x36a366c6, (q31_t)0x8c3f5788, (q31_t)0x369db81e, (q31_t)0x8c3ca911, (q31_t)0x36980954, (q31_t)0x8c39fae1, (q31_t)0x36925a69, (q31_t)0x8c374cf9,\n  (q31_t)0x368cab5c, (q31_t)0x8c349f58, (q31_t)0x3686fc2e, (q31_t)0x8c31f1ff, (q31_t)0x36814cde, (q31_t)0x8c2f44ed, (q31_t)0x367b9d6c, (q31_t)0x8c2c9822,\n  (q31_t)0x3675edd9, (q31_t)0x8c29eb9f, (q31_t)0x36703e24, (q31_t)0x8c273f63, (q31_t)0x366a8e4d, (q31_t)0x8c24936f, (q31_t)0x3664de55, (q31_t)0x8c21e7c2,\n  (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36597e00, (q31_t)0x8c1c913f, (q31_t)0x3653cda3, (q31_t)0x8c19e669, (q31_t)0x364e1d25, (q31_t)0x8c173bda,\n  (q31_t)0x36486c86, (q31_t)0x8c149192, (q31_t)0x3642bbc4, (q31_t)0x8c11e792, (q31_t)0x363d0ae2, (q31_t)0x8c0f3dda, (q31_t)0x363759de, (q31_t)0x8c0c9469,\n  (q31_t)0x3631a8b8, (q31_t)0x8c09eb40, (q31_t)0x362bf771, (q31_t)0x8c07425e, (q31_t)0x36264609, (q31_t)0x8c0499c4, (q31_t)0x3620947f, (q31_t)0x8c01f171,\n  (q31_t)0x361ae2d3, (q31_t)0x8bff4966, (q31_t)0x36153107, (q31_t)0x8bfca1a3, (q31_t)0x360f7f19, (q31_t)0x8bf9fa27, (q31_t)0x3609cd0a, (q31_t)0x8bf752f2,\n  (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35fe6887, (q31_t)0x8bf20560, (q31_t)0x35f8b614, (q31_t)0x8bef5f02, (q31_t)0x35f3037f, (q31_t)0x8becb8ec,\n  (q31_t)0x35ed50c9, (q31_t)0x8bea131e, (q31_t)0x35e79df2, (q31_t)0x8be76d97, (q31_t)0x35e1eafa, (q31_t)0x8be4c857, (q31_t)0x35dc37e0, (q31_t)0x8be22360,\n  (q31_t)0x35d684a6, (q31_t)0x8bdf7eb0, (q31_t)0x35d0d14a, (q31_t)0x8bdcda47, (q31_t)0x35cb1dcc, (q31_t)0x8bda3626, (q31_t)0x35c56a2e, (q31_t)0x8bd7924d,\n  (q31_t)0x35bfb66e, (q31_t)0x8bd4eebc, (q31_t)0x35ba028e, (q31_t)0x8bd24b72, (q31_t)0x35b44e8c, (q31_t)0x8bcfa870, (q31_t)0x35ae9a69, (q31_t)0x8bcd05b5,\n  (q31_t)0x35a8e625, (q31_t)0x8bca6343, (q31_t)0x35a331c0, (q31_t)0x8bc7c117, (q31_t)0x359d7d39, (q31_t)0x8bc51f34, (q31_t)0x3597c892, (q31_t)0x8bc27d98,\n  (q31_t)0x359213c9, (q31_t)0x8bbfdc44, (q31_t)0x358c5ee0, (q31_t)0x8bbd3b38, (q31_t)0x3586a9d5, (q31_t)0x8bba9a73, (q31_t)0x3580f4aa, (q31_t)0x8bb7f9f6,\n  (q31_t)0x357b3f5d, (q31_t)0x8bb559c1, (q31_t)0x357589f0, (q31_t)0x8bb2b9d4, (q31_t)0x356fd461, (q31_t)0x8bb01a2e, (q31_t)0x356a1eb2, (q31_t)0x8bad7ad0,\n  (q31_t)0x356468e2, (q31_t)0x8baadbba, (q31_t)0x355eb2f0, (q31_t)0x8ba83cec, (q31_t)0x3558fcde, (q31_t)0x8ba59e65, (q31_t)0x355346ab, (q31_t)0x8ba30026,\n  (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x3547d9e2, (q31_t)0x8b9dc480, (q31_t)0x3542234c, (q31_t)0x8b9b2718, (q31_t)0x353c6c95, (q31_t)0x8b9889f8,\n  (q31_t)0x3536b5be, (q31_t)0x8b95ed21, (q31_t)0x3530fec6, (q31_t)0x8b935090, (q31_t)0x352b47ad, (q31_t)0x8b90b448, (q31_t)0x35259073, (q31_t)0x8b8e1848,\n  (q31_t)0x351fd918, (q31_t)0x8b8b7c8f, (q31_t)0x351a219c, (q31_t)0x8b88e11e, (q31_t)0x35146a00, (q31_t)0x8b8645f5, (q31_t)0x350eb243, (q31_t)0x8b83ab14,\n  (q31_t)0x3508fa66, (q31_t)0x8b81107b, (q31_t)0x35034267, (q31_t)0x8b7e7629, (q31_t)0x34fd8a48, (q31_t)0x8b7bdc20, (q31_t)0x34f7d208, (q31_t)0x8b79425e,\n  (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34ec6127, (q31_t)0x8b740fb3, (q31_t)0x34e6a885, (q31_t)0x8b7176c8, (q31_t)0x34e0efc2, (q31_t)0x8b6ede26,\n  (q31_t)0x34db36df, (q31_t)0x8b6c45cc, (q31_t)0x34d57ddc, (q31_t)0x8b69adba, (q31_t)0x34cfc4b7, (q31_t)0x8b6715ef, (q31_t)0x34ca0b73, (q31_t)0x8b647e6d,\n  (q31_t)0x34c4520d, (q31_t)0x8b61e733, (q31_t)0x34be9887, (q31_t)0x8b5f5040, (q31_t)0x34b8dee1, (q31_t)0x8b5cb995, (q31_t)0x34b3251a, (q31_t)0x8b5a2333,\n  (q31_t)0x34ad6b32, (q31_t)0x8b578d18, (q31_t)0x34a7b12a, (q31_t)0x8b54f745, (q31_t)0x34a1f702, (q31_t)0x8b5261ba, (q31_t)0x349c3cb9, (q31_t)0x8b4fcc77,\n  (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x3490c7c6, (q31_t)0x8b4aa2ca, (q31_t)0x348b0d1c, (q31_t)0x8b480e5f, (q31_t)0x34855251, (q31_t)0x8b457a3c,\n  (q31_t)0x347f9766, (q31_t)0x8b42e661, (q31_t)0x3479dc5b, (q31_t)0x8b4052ce, (q31_t)0x3474212f, (q31_t)0x8b3dbf83, (q31_t)0x346e65e3, (q31_t)0x8b3b2c80,\n  (q31_t)0x3468aa76, (q31_t)0x8b3899c6, (q31_t)0x3462eee9, (q31_t)0x8b360753, (q31_t)0x345d333c, (q31_t)0x8b337528, (q31_t)0x3457776f, (q31_t)0x8b30e345,\n  (q31_t)0x3451bb81, (q31_t)0x8b2e51ab, (q31_t)0x344bff73, (q31_t)0x8b2bc058, (q31_t)0x34464345, (q31_t)0x8b292f4e, (q31_t)0x344086f6, (q31_t)0x8b269e8b,\n  (q31_t)0x343aca87, (q31_t)0x8b240e11, (q31_t)0x34350df8, (q31_t)0x8b217ddf, (q31_t)0x342f5149, (q31_t)0x8b1eedf4, (q31_t)0x3429947a, (q31_t)0x8b1c5e52,\n  (q31_t)0x3423d78a, (q31_t)0x8b19cef8, (q31_t)0x341e1a7b, (q31_t)0x8b173fe6, (q31_t)0x34185d4b, (q31_t)0x8b14b11d, (q31_t)0x34129ffb, (q31_t)0x8b12229b,\n  (q31_t)0x340ce28b, (q31_t)0x8b0f9462, (q31_t)0x340724fb, (q31_t)0x8b0d0670, (q31_t)0x3401674a, (q31_t)0x8b0a78c7, (q31_t)0x33fba97a, (q31_t)0x8b07eb66,\n  (q31_t)0x33f5eb89, (q31_t)0x8b055e4d, (q31_t)0x33f02d79, (q31_t)0x8b02d17c, (q31_t)0x33ea6f48, (q31_t)0x8b0044f3, (q31_t)0x33e4b0f8, (q31_t)0x8afdb8b3,\n  (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x33d933f7, (q31_t)0x8af8a10b, (q31_t)0x33d37546, (q31_t)0x8af615a3, (q31_t)0x33cdb676, (q31_t)0x8af38a83,\n  (q31_t)0x33c7f785, (q31_t)0x8af0ffac, (q31_t)0x33c23875, (q31_t)0x8aee751c, (q31_t)0x33bc7944, (q31_t)0x8aebead5, (q31_t)0x33b6b9f4, (q31_t)0x8ae960d6,\n  (q31_t)0x33b0fa84, (q31_t)0x8ae6d720, (q31_t)0x33ab3af4, (q31_t)0x8ae44db1, (q31_t)0x33a57b44, (q31_t)0x8ae1c48b, (q31_t)0x339fbb74, (q31_t)0x8adf3bad,\n  (q31_t)0x3399fb85, (q31_t)0x8adcb318, (q31_t)0x33943b75, (q31_t)0x8ada2aca, (q31_t)0x338e7b46, (q31_t)0x8ad7a2c5, (q31_t)0x3388baf7, (q31_t)0x8ad51b08,\n  (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x337d39f9, (q31_t)0x8ad00c67, (q31_t)0x3377794b, (q31_t)0x8acd8583, (q31_t)0x3371b87d, (q31_t)0x8acafee8,\n  (q31_t)0x336bf78f, (q31_t)0x8ac87894, (q31_t)0x33663682, (q31_t)0x8ac5f289, (q31_t)0x33607554, (q31_t)0x8ac36cc6, (q31_t)0x335ab407, (q31_t)0x8ac0e74c,\n  (q31_t)0x3354f29b, (q31_t)0x8abe6219, (q31_t)0x334f310e, (q31_t)0x8abbdd30, (q31_t)0x33496f62, (q31_t)0x8ab9588e, (q31_t)0x3343ad97, (q31_t)0x8ab6d435,\n  (q31_t)0x333debab, (q31_t)0x8ab45024, (q31_t)0x333829a1, (q31_t)0x8ab1cc5c, (q31_t)0x33326776, (q31_t)0x8aaf48db, (q31_t)0x332ca52c, (q31_t)0x8aacc5a4,\n  (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x33212039, (q31_t)0x8aa7c00d, (q31_t)0x331b5d91, (q31_t)0x8aa53daf, (q31_t)0x33159ac8, (q31_t)0x8aa2bb99,\n  (q31_t)0x330fd7e1, (q31_t)0x8aa039cb, (q31_t)0x330a14da, (q31_t)0x8a9db845, (q31_t)0x330451b3, (q31_t)0x8a9b3708, (q31_t)0x32fe8e6d, (q31_t)0x8a98b614,\n  (q31_t)0x32f8cb07, (q31_t)0x8a963567, (q31_t)0x32f30782, (q31_t)0x8a93b504, (q31_t)0x32ed43de, (q31_t)0x8a9134e8, (q31_t)0x32e7801a, (q31_t)0x8a8eb516,\n  (q31_t)0x32e1bc36, (q31_t)0x8a8c358b, (q31_t)0x32dbf834, (q31_t)0x8a89b649, (q31_t)0x32d63412, (q31_t)0x8a873750, (q31_t)0x32d06fd0, (q31_t)0x8a84b89e,\n  (q31_t)0x32caab6f, (q31_t)0x8a823a36, (q31_t)0x32c4e6ef, (q31_t)0x8a7fbc16, (q31_t)0x32bf2250, (q31_t)0x8a7d3e3e, (q31_t)0x32b95d91, (q31_t)0x8a7ac0af,\n  (q31_t)0x32b398b3, (q31_t)0x8a784368, (q31_t)0x32add3b6, (q31_t)0x8a75c66a, (q31_t)0x32a80e99, (q31_t)0x8a7349b4, (q31_t)0x32a2495d, (q31_t)0x8a70cd47,\n  (q31_t)0x329c8402, (q31_t)0x8a6e5123, (q31_t)0x3296be88, (q31_t)0x8a6bd547, (q31_t)0x3290f8ef, (q31_t)0x8a6959b3, (q31_t)0x328b3336, (q31_t)0x8a66de68,\n  (q31_t)0x32856d5e, (q31_t)0x8a646365, (q31_t)0x327fa767, (q31_t)0x8a61e8ab, (q31_t)0x3279e151, (q31_t)0x8a5f6e3a, (q31_t)0x32741b1c, (q31_t)0x8a5cf411,\n  (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x32688e54, (q31_t)0x8a580099, (q31_t)0x3262c7c1, (q31_t)0x8a55874a, (q31_t)0x325d0110, (q31_t)0x8a530e43,\n  (q31_t)0x32573a3f, (q31_t)0x8a509585, (q31_t)0x3251734f, (q31_t)0x8a4e1d10, (q31_t)0x324bac40, (q31_t)0x8a4ba4e3, (q31_t)0x3245e512, (q31_t)0x8a492cff,\n  (q31_t)0x32401dc6, (q31_t)0x8a46b564, (q31_t)0x323a565a, (q31_t)0x8a443e11, (q31_t)0x32348ecf, (q31_t)0x8a41c706, (q31_t)0x322ec725, (q31_t)0x8a3f5045,\n  (q31_t)0x3228ff5c, (q31_t)0x8a3cd9cc, (q31_t)0x32233775, (q31_t)0x8a3a639b, (q31_t)0x321d6f6e, (q31_t)0x8a37edb3, (q31_t)0x3217a748, (q31_t)0x8a357814,\n  (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x320c16a1, (q31_t)0x8a308db0, (q31_t)0x32064e1e, (q31_t)0x8a2e18eb, (q31_t)0x3200857d, (q31_t)0x8a2ba46e,\n  (q31_t)0x31fabcbd, (q31_t)0x8a29303b, (q31_t)0x31f4f3df, (q31_t)0x8a26bc50, (q31_t)0x31ef2ae1, (q31_t)0x8a2448ad, (q31_t)0x31e961c5, (q31_t)0x8a21d554,\n  (q31_t)0x31e39889, (q31_t)0x8a1f6243, (q31_t)0x31ddcf30, (q31_t)0x8a1cef7a, (q31_t)0x31d805b7, (q31_t)0x8a1a7cfb, (q31_t)0x31d23c1f, (q31_t)0x8a180ac4,\n  (q31_t)0x31cc7269, (q31_t)0x8a1598d6, (q31_t)0x31c6a894, (q31_t)0x8a132731, (q31_t)0x31c0dea1, (q31_t)0x8a10b5d4, (q31_t)0x31bb148f, (q31_t)0x8a0e44c0,\n  (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x31af800e, (q31_t)0x8a096373, (q31_t)0x31a9b5a0, (q31_t)0x8a06f339, (q31_t)0x31a3eb13, (q31_t)0x8a048348,\n  (q31_t)0x319e2067, (q31_t)0x8a0213a0, (q31_t)0x3198559d, (q31_t)0x89ffa441, (q31_t)0x31928ab4, (q31_t)0x89fd352b, (q31_t)0x318cbfad, (q31_t)0x89fac65d,\n  (q31_t)0x3186f487, (q31_t)0x89f857d8, (q31_t)0x31812943, (q31_t)0x89f5e99c, (q31_t)0x317b5de0, (q31_t)0x89f37ba9, (q31_t)0x3175925e, (q31_t)0x89f10dff,\n  (q31_t)0x316fc6be, (q31_t)0x89eea09d, (q31_t)0x3169fb00, (q31_t)0x89ec3384, (q31_t)0x31642f23, (q31_t)0x89e9c6b4, (q31_t)0x315e6328, (q31_t)0x89e75a2d,\n  (q31_t)0x3158970e, (q31_t)0x89e4edef, (q31_t)0x3152cad5, (q31_t)0x89e281fa, (q31_t)0x314cfe7f, (q31_t)0x89e0164d, (q31_t)0x31473209, (q31_t)0x89ddaae9,\n  (q31_t)0x31416576, (q31_t)0x89db3fcf, (q31_t)0x313b98c4, (q31_t)0x89d8d4fd, (q31_t)0x3135cbf4, (q31_t)0x89d66a74, (q31_t)0x312fff05, (q31_t)0x89d40033,\n  (q31_t)0x312a31f8, (q31_t)0x89d1963c, (q31_t)0x312464cd, (q31_t)0x89cf2c8e, (q31_t)0x311e9783, (q31_t)0x89ccc328, (q31_t)0x3118ca1b, (q31_t)0x89ca5a0c,\n  (q31_t)0x3112fc95, (q31_t)0x89c7f138, (q31_t)0x310d2ef0, (q31_t)0x89c588ae, (q31_t)0x3107612e, (q31_t)0x89c3206c, (q31_t)0x3101934d, (q31_t)0x89c0b873,\n  (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x30f5f730, (q31_t)0x89bbe95c, (q31_t)0x30f028f4, (q31_t)0x89b9823e, (q31_t)0x30ea5a9a, (q31_t)0x89b71b69,\n  (q31_t)0x30e48c22, (q31_t)0x89b4b4dd, (q31_t)0x30debd8c, (q31_t)0x89b24e9a, (q31_t)0x30d8eed8, (q31_t)0x89afe8a0, (q31_t)0x30d32006, (q31_t)0x89ad82ef,\n  (q31_t)0x30cd5115, (q31_t)0x89ab1d87, (q31_t)0x30c78206, (q31_t)0x89a8b868, (q31_t)0x30c1b2da, (q31_t)0x89a65391, (q31_t)0x30bbe38f, (q31_t)0x89a3ef04,\n  (q31_t)0x30b61426, (q31_t)0x89a18ac0, (q31_t)0x30b0449f, (q31_t)0x899f26c5, (q31_t)0x30aa74fa, (q31_t)0x899cc313, (q31_t)0x30a4a537, (q31_t)0x899a5faa,\n  (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x30990557, (q31_t)0x899599b3, (q31_t)0x3093353a, (q31_t)0x89933725, (q31_t)0x308d64ff, (q31_t)0x8990d4e0,\n  (q31_t)0x308794a6, (q31_t)0x898e72e4, (q31_t)0x3081c42f, (q31_t)0x898c1131, (q31_t)0x307bf39b, (q31_t)0x8989afc8, (q31_t)0x307622e8, (q31_t)0x89874ea7,\n  (q31_t)0x30705217, (q31_t)0x8984edcf, (q31_t)0x306a8129, (q31_t)0x89828d41, (q31_t)0x3064b01d, (q31_t)0x89802cfc, (q31_t)0x305edef3, (q31_t)0x897dccff,\n  (q31_t)0x30590dab, (q31_t)0x897b6d4c, (q31_t)0x30533c45, (q31_t)0x89790de2, (q31_t)0x304d6ac1, (q31_t)0x8976aec1, (q31_t)0x30479920, (q31_t)0x89744fe9,\n  (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x303bf584, (q31_t)0x896f9315, (q31_t)0x30362389, (q31_t)0x896d3518, (q31_t)0x30305171, (q31_t)0x896ad765,\n  (q31_t)0x302a7f3a, (q31_t)0x896879fb, (q31_t)0x3024ace6, (q31_t)0x89661cda, (q31_t)0x301eda75, (q31_t)0x8963c002, (q31_t)0x301907e6, (q31_t)0x89616373,\n  (q31_t)0x30133539, (q31_t)0x895f072e, (q31_t)0x300d626e, (q31_t)0x895cab31, (q31_t)0x30078f86, (q31_t)0x895a4f7e, (q31_t)0x3001bc80, (q31_t)0x8957f414,\n  (q31_t)0x2ffbe95d, (q31_t)0x895598f3, (q31_t)0x2ff6161c, (q31_t)0x89533e1c, (q31_t)0x2ff042bd, (q31_t)0x8950e38e, (q31_t)0x2fea6f41, (q31_t)0x894e8948,\n  (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, (q31_t)0x2fdec7f0, (q31_t)0x8949d59a, (q31_t)0x2fd8f41b, (q31_t)0x89477c30, (q31_t)0x2fd32028, (q31_t)0x89452310,\n  (q31_t)0x2fcd4c19, (q31_t)0x8942ca39, (q31_t)0x2fc777eb, (q31_t)0x894071ab, (q31_t)0x2fc1a3a0, (q31_t)0x893e1967, (q31_t)0x2fbbcf38, (q31_t)0x893bc16b,\n  (q31_t)0x2fb5fab2, (q31_t)0x893969b9, (q31_t)0x2fb0260f, (q31_t)0x89371250, (q31_t)0x2faa514f, (q31_t)0x8934bb31, (q31_t)0x2fa47c71, (q31_t)0x8932645b,\n  (q31_t)0x2f9ea775, (q31_t)0x89300dce, (q31_t)0x2f98d25d, (q31_t)0x892db78a, (q31_t)0x2f92fd26, (q31_t)0x892b6190, (q31_t)0x2f8d27d3, (q31_t)0x89290bdf,\n  (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f817cd4, (q31_t)0x89246159, (q31_t)0x2f7ba729, (q31_t)0x89220c84, (q31_t)0x2f75d160, (q31_t)0x891fb7f8,\n  (q31_t)0x2f6ffb7a, (q31_t)0x891d63b5, (q31_t)0x2f6a2577, (q31_t)0x891b0fbc, (q31_t)0x2f644f56, (q31_t)0x8918bc0c, (q31_t)0x2f5e7919, (q31_t)0x891668a6,\n  (q31_t)0x2f58a2be, (q31_t)0x89141589, (q31_t)0x2f52cc46, (q31_t)0x8911c2b5, (q31_t)0x2f4cf5b0, (q31_t)0x890f702b, (q31_t)0x2f471efe, (q31_t)0x890d1dea,\n  (q31_t)0x2f41482e, (q31_t)0x890acbf2, (q31_t)0x2f3b7141, (q31_t)0x89087a44, (q31_t)0x2f359a37, (q31_t)0x890628df, (q31_t)0x2f2fc310, (q31_t)0x8903d7c4,\n  (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2f24146b, (q31_t)0x88ff3669, (q31_t)0x2f1e3ced, (q31_t)0x88fce62a, (q31_t)0x2f186551, (q31_t)0x88fa9634,\n  (q31_t)0x2f128d99, (q31_t)0x88f84687, (q31_t)0x2f0cb5c3, (q31_t)0x88f5f724, (q31_t)0x2f06ddd1, (q31_t)0x88f3a80b, (q31_t)0x2f0105c1, (q31_t)0x88f1593b,\n  (q31_t)0x2efb2d95, (q31_t)0x88ef0ab4, (q31_t)0x2ef5554b, (q31_t)0x88ecbc77, (q31_t)0x2eef7ce5, (q31_t)0x88ea6e83, (q31_t)0x2ee9a461, (q31_t)0x88e820d9,\n  (q31_t)0x2ee3cbc1, (q31_t)0x88e5d378, (q31_t)0x2eddf304, (q31_t)0x88e38660, (q31_t)0x2ed81a29, (q31_t)0x88e13992, (q31_t)0x2ed24132, (q31_t)0x88deed0e,\n  (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2ec68eed, (q31_t)0x88da54e1, (q31_t)0x2ec0b5a0, (q31_t)0x88d8093a, (q31_t)0x2ebadc35, (q31_t)0x88d5bddb,\n  (q31_t)0x2eb502ae, (q31_t)0x88d372c6, (q31_t)0x2eaf290a, (q31_t)0x88d127fb, (q31_t)0x2ea94f49, (q31_t)0x88cedd79, (q31_t)0x2ea3756b, (q31_t)0x88cc9340,\n  (q31_t)0x2e9d9b70, (q31_t)0x88ca4951, (q31_t)0x2e97c159, (q31_t)0x88c7ffac, (q31_t)0x2e91e725, (q31_t)0x88c5b650, (q31_t)0x2e8c0cd4, (q31_t)0x88c36d3e,\n  (q31_t)0x2e863267, (q31_t)0x88c12475, (q31_t)0x2e8057dd, (q31_t)0x88bedbf6, (q31_t)0x2e7a7d36, (q31_t)0x88bc93c0, (q31_t)0x2e74a272, (q31_t)0x88ba4bd4,\n  (q31_t)0x2e6ec792, (q31_t)0x88b80432, (q31_t)0x2e68ec95, (q31_t)0x88b5bcd9, (q31_t)0x2e63117c, (q31_t)0x88b375ca, (q31_t)0x2e5d3646, (q31_t)0x88b12f04,\n  (q31_t)0x2e575af3, (q31_t)0x88aee888, (q31_t)0x2e517f84, (q31_t)0x88aca255, (q31_t)0x2e4ba3f8, (q31_t)0x88aa5c6c, (q31_t)0x2e45c850, (q31_t)0x88a816cd,\n  (q31_t)0x2e3fec8b, (q31_t)0x88a5d177, (q31_t)0x2e3a10aa, (q31_t)0x88a38c6b, (q31_t)0x2e3434ac, (q31_t)0x88a147a9, (q31_t)0x2e2e5891, (q31_t)0x889f0330,\n  (q31_t)0x2e287c5a, (q31_t)0x889cbf01, (q31_t)0x2e22a007, (q31_t)0x889a7b1b, (q31_t)0x2e1cc397, (q31_t)0x88983780, (q31_t)0x2e16e70b, (q31_t)0x8895f42d,\n  (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2e0b2d9d, (q31_t)0x88916e66, (q31_t)0x2e0550bb, (q31_t)0x888f2bf1, (q31_t)0x2dff73bd, (q31_t)0x888ce9c5,\n  (q31_t)0x2df996a3, (q31_t)0x888aa7e3, (q31_t)0x2df3b96c, (q31_t)0x8888664b, (q31_t)0x2deddc19, (q31_t)0x888624fd, (q31_t)0x2de7feaa, (q31_t)0x8883e3f8,\n  (q31_t)0x2de2211e, (q31_t)0x8881a33d, (q31_t)0x2ddc4376, (q31_t)0x887f62cb, (q31_t)0x2dd665b2, (q31_t)0x887d22a4, (q31_t)0x2dd087d1, (q31_t)0x887ae2c6,\n  (q31_t)0x2dcaa9d5, (q31_t)0x8878a332, (q31_t)0x2dc4cbbc, (q31_t)0x887663e7, (q31_t)0x2dbeed86, (q31_t)0x887424e7, (q31_t)0x2db90f35, (q31_t)0x8871e630,\n  (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2dad523d, (q31_t)0x886d699f, (q31_t)0x2da77397, (q31_t)0x886b2bc5, (q31_t)0x2da194d5, (q31_t)0x8868ee35,\n  (q31_t)0x2d9bb5f6, (q31_t)0x8866b0ef, (q31_t)0x2d95d6fc, (q31_t)0x886473f2, (q31_t)0x2d8ff7e5, (q31_t)0x88623740, (q31_t)0x2d8a18b3, (q31_t)0x885ffad7,\n  (q31_t)0x2d843964, (q31_t)0x885dbeb8, (q31_t)0x2d7e59f9, (q31_t)0x885b82e3, (q31_t)0x2d787a72, (q31_t)0x88594757, (q31_t)0x2d729acf, (q31_t)0x88570c16,\n  (q31_t)0x2d6cbb10, (q31_t)0x8854d11e, (q31_t)0x2d66db35, (q31_t)0x88529670, (q31_t)0x2d60fb3e, (q31_t)0x88505c0b, (q31_t)0x2d5b1b2b, (q31_t)0x884e21f1,\n  (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2d4f5ab1, (q31_t)0x8849ae9a, (q31_t)0x2d497a4a, (q31_t)0x8847755d, (q31_t)0x2d4399c7, (q31_t)0x88453c6a,\n  (q31_t)0x2d3db928, (q31_t)0x884303c1, (q31_t)0x2d37d86d, (q31_t)0x8840cb61, (q31_t)0x2d31f797, (q31_t)0x883e934c, (q31_t)0x2d2c16a4, (q31_t)0x883c5b81,\n  (q31_t)0x2d263596, (q31_t)0x883a23ff, (q31_t)0x2d20546b, (q31_t)0x8837ecc7, (q31_t)0x2d1a7325, (q31_t)0x8835b5d9, (q31_t)0x2d1491c4, (q31_t)0x88337f35,\n  (q31_t)0x2d0eb046, (q31_t)0x883148db, (q31_t)0x2d08ceac, (q31_t)0x882f12cb, (q31_t)0x2d02ecf7, (q31_t)0x882cdd04, (q31_t)0x2cfd0b26, (q31_t)0x882aa788,\n  (q31_t)0x2cf72939, (q31_t)0x88287256, (q31_t)0x2cf14731, (q31_t)0x88263d6d, (q31_t)0x2ceb650d, (q31_t)0x882408ce, (q31_t)0x2ce582cd, (q31_t)0x8821d47a,\n  (q31_t)0x2cdfa071, (q31_t)0x881fa06f, (q31_t)0x2cd9bdfa, (q31_t)0x881d6cae, (q31_t)0x2cd3db67, (q31_t)0x881b3937, (q31_t)0x2ccdf8b8, (q31_t)0x8819060a,\n  (q31_t)0x2cc815ee, (q31_t)0x8816d327, (q31_t)0x2cc23308, (q31_t)0x8814a08f, (q31_t)0x2cbc5006, (q31_t)0x88126e40, (q31_t)0x2cb66ce9, (q31_t)0x88103c3b,\n  (q31_t)0x2cb089b1, (q31_t)0x880e0a7f, (q31_t)0x2caaa65c, (q31_t)0x880bd90e, (q31_t)0x2ca4c2ed, (q31_t)0x8809a7e7, (q31_t)0x2c9edf61, (q31_t)0x8807770a,\n  (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c9317f8, (q31_t)0x8803162e, (q31_t)0x2c8d341a, (q31_t)0x8800e62f, (q31_t)0x2c875021, (q31_t)0x87feb67a,\n  (q31_t)0x2c816c0c, (q31_t)0x87fc870f, (q31_t)0x2c7b87dc, (q31_t)0x87fa57ee, (q31_t)0x2c75a390, (q31_t)0x87f82917, (q31_t)0x2c6fbf29, (q31_t)0x87f5fa8b,\n  (q31_t)0x2c69daa6, (q31_t)0x87f3cc48, (q31_t)0x2c63f609, (q31_t)0x87f19e4f, (q31_t)0x2c5e114f, (q31_t)0x87ef70a0, (q31_t)0x2c582c7b, (q31_t)0x87ed433c,\n  (q31_t)0x2c52478a, (q31_t)0x87eb1621, (q31_t)0x2c4c627f, (q31_t)0x87e8e950, (q31_t)0x2c467d58, (q31_t)0x87e6bcca, (q31_t)0x2c409816, (q31_t)0x87e4908e,\n  (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2c34cd40, (q31_t)0x87e038f3, (q31_t)0x2c2ee7ad, (q31_t)0x87de0d95, (q31_t)0x2c2901fd, (q31_t)0x87dbe281,\n  (q31_t)0x2c231c33, (q31_t)0x87d9b7b7, (q31_t)0x2c1d364e, (q31_t)0x87d78d38, (q31_t)0x2c17504d, (q31_t)0x87d56302, (q31_t)0x2c116a31, (q31_t)0x87d33916,\n  (q31_t)0x2c0b83fa, (q31_t)0x87d10f75, (q31_t)0x2c059da7, (q31_t)0x87cee61e, (q31_t)0x2bffb73a, (q31_t)0x87ccbd11, (q31_t)0x2bf9d0b1, (q31_t)0x87ca944e,\n  (q31_t)0x2bf3ea0d, (q31_t)0x87c86bd5, (q31_t)0x2bee034e, (q31_t)0x87c643a6, (q31_t)0x2be81c74, (q31_t)0x87c41bc2, (q31_t)0x2be2357f, (q31_t)0x87c1f427,\n  (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2bd66744, (q31_t)0x87bda5d1, (q31_t)0x2bd07ffe, (q31_t)0x87bb7f16, (q31_t)0x2bca989d, (q31_t)0x87b958a4,\n  (q31_t)0x2bc4b120, (q31_t)0x87b7327d, (q31_t)0x2bbec989, (q31_t)0x87b50c9f, (q31_t)0x2bb8e1d7, (q31_t)0x87b2e70c, (q31_t)0x2bb2fa0a, (q31_t)0x87b0c1c4,\n  (q31_t)0x2bad1221, (q31_t)0x87ae9cc5, (q31_t)0x2ba72a1e, (q31_t)0x87ac7811, (q31_t)0x2ba14200, (q31_t)0x87aa53a6, (q31_t)0x2b9b59c7, (q31_t)0x87a82f87,\n  (q31_t)0x2b957173, (q31_t)0x87a60bb1, (q31_t)0x2b8f8905, (q31_t)0x87a3e825, (q31_t)0x2b89a07b, (q31_t)0x87a1c4e4, (q31_t)0x2b83b7d7, (q31_t)0x879fa1ed,\n  (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, (q31_t)0x2b77e63d, (q31_t)0x879b5cde, (q31_t)0x2b71fd48, (q31_t)0x87993ac6, (q31_t)0x2b6c1438, (q31_t)0x879718f8,\n  (q31_t)0x2b662b0e, (q31_t)0x8794f774, (q31_t)0x2b6041c9, (q31_t)0x8792d63b, (q31_t)0x2b5a5868, (q31_t)0x8790b54c, (q31_t)0x2b546eee, (q31_t)0x878e94a7,\n  (q31_t)0x2b4e8558, (q31_t)0x878c744d, (q31_t)0x2b489ba8, (q31_t)0x878a543d, (q31_t)0x2b42b1dd, (q31_t)0x87883477, (q31_t)0x2b3cc7f7, (q31_t)0x878614fb,\n  (q31_t)0x2b36ddf7, (q31_t)0x8783f5ca, (q31_t)0x2b30f3dc, (q31_t)0x8781d6e3, (q31_t)0x2b2b09a6, (q31_t)0x877fb846, (q31_t)0x2b251f56, (q31_t)0x877d99f4,\n  (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2b194a66, (q31_t)0x87795e2f, (q31_t)0x2b135fc6, (q31_t)0x877740bb, (q31_t)0x2b0d750b, (q31_t)0x87752392,\n  (q31_t)0x2b078a36, (q31_t)0x877306b4, (q31_t)0x2b019f46, (q31_t)0x8770ea20, (q31_t)0x2afbb43c, (q31_t)0x876ecdd6, (q31_t)0x2af5c917, (q31_t)0x876cb1d6,\n  (q31_t)0x2aefddd8, (q31_t)0x876a9621, (q31_t)0x2ae9f27e, (q31_t)0x87687ab7, (q31_t)0x2ae4070a, (q31_t)0x87665f96, (q31_t)0x2ade1b7c, (q31_t)0x876444c1,\n  (q31_t)0x2ad82fd2, (q31_t)0x87622a35, (q31_t)0x2ad2440f, (q31_t)0x87600ff4, (q31_t)0x2acc5831, (q31_t)0x875df5fd, (q31_t)0x2ac66c39, (q31_t)0x875bdc51,\n  (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2aba93f9, (q31_t)0x8757a9d8, (q31_t)0x2ab4a7b1, (q31_t)0x8755910b, (q31_t)0x2aaebb50, (q31_t)0x87537888,\n  (q31_t)0x2aa8ced3, (q31_t)0x87516050, (q31_t)0x2aa2e23d, (q31_t)0x874f4862, (q31_t)0x2a9cf58c, (q31_t)0x874d30bf, (q31_t)0x2a9708c1, (q31_t)0x874b1966,\n  (q31_t)0x2a911bdc, (q31_t)0x87490258, (q31_t)0x2a8b2edc, (q31_t)0x8746eb94, (q31_t)0x2a8541c3, (q31_t)0x8744d51b, (q31_t)0x2a7f548e, (q31_t)0x8742beec,\n  (q31_t)0x2a796740, (q31_t)0x8740a907, (q31_t)0x2a7379d8, (q31_t)0x873e936d, (q31_t)0x2a6d8c55, (q31_t)0x873c7e1e, (q31_t)0x2a679eb8, (q31_t)0x873a6919,\n  (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a5bc330, (q31_t)0x87363fee, (q31_t)0x2a55d545, (q31_t)0x87342bc9, (q31_t)0x2a4fe740, (q31_t)0x873217ee,\n  (q31_t)0x2a49f920, (q31_t)0x8730045d, (q31_t)0x2a440ae7, (q31_t)0x872df117, (q31_t)0x2a3e1c93, (q31_t)0x872bde1c, (q31_t)0x2a382e25, (q31_t)0x8729cb6b,\n  (q31_t)0x2a323f9e, (q31_t)0x8727b905, (q31_t)0x2a2c50fc, (q31_t)0x8725a6e9, (q31_t)0x2a266240, (q31_t)0x87239518, (q31_t)0x2a20736a, (q31_t)0x87218391,\n  (q31_t)0x2a1a847b, (q31_t)0x871f7255, (q31_t)0x2a149571, (q31_t)0x871d6163, (q31_t)0x2a0ea64d, (q31_t)0x871b50bc, (q31_t)0x2a08b710, (q31_t)0x87194060,\n  (q31_t)0x2a02c7b8, (q31_t)0x8717304e, (q31_t)0x29fcd847, (q31_t)0x87152087, (q31_t)0x29f6e8bb, (q31_t)0x8713110a, (q31_t)0x29f0f916, (q31_t)0x871101d8,\n  (q31_t)0x29eb0957, (q31_t)0x870ef2f1, (q31_t)0x29e5197e, (q31_t)0x870ce454, (q31_t)0x29df298b, (q31_t)0x870ad602, (q31_t)0x29d9397f, (q31_t)0x8708c7fa,\n  (q31_t)0x29d34958, (q31_t)0x8706ba3d, (q31_t)0x29cd5918, (q31_t)0x8704acca, (q31_t)0x29c768be, (q31_t)0x87029fa3, (q31_t)0x29c1784a, (q31_t)0x870092c5,\n  (q31_t)0x29bb87bc, (q31_t)0x86fe8633, (q31_t)0x29b59715, (q31_t)0x86fc79eb, (q31_t)0x29afa654, (q31_t)0x86fa6dee, (q31_t)0x29a9b579, (q31_t)0x86f8623b,\n  (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x299dd377, (q31_t)0x86f44bb6, (q31_t)0x2997e24f, (q31_t)0x86f240e3, (q31_t)0x2991f10e, (q31_t)0x86f0365c,\n  (q31_t)0x298bffb2, (q31_t)0x86ee2c1e, (q31_t)0x29860e3e, (q31_t)0x86ec222c, (q31_t)0x29801caf, (q31_t)0x86ea1884, (q31_t)0x297a2b07, (q31_t)0x86e80f27,\n  (q31_t)0x29743946, (q31_t)0x86e60614, (q31_t)0x296e476b, (q31_t)0x86e3fd4c, (q31_t)0x29685576, (q31_t)0x86e1f4cf, (q31_t)0x29626368, (q31_t)0x86dfec9d,\n  (q31_t)0x295c7140, (q31_t)0x86dde4b5, (q31_t)0x29567eff, (q31_t)0x86dbdd18, (q31_t)0x29508ca4, (q31_t)0x86d9d5c6, (q31_t)0x294a9a30, (q31_t)0x86d7cebf,\n  (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x293eb4fb, (q31_t)0x86d3c190, (q31_t)0x2938c23a, (q31_t)0x86d1bb69, (q31_t)0x2932cf60, (q31_t)0x86cfb58c,\n  (q31_t)0x292cdc6d, (q31_t)0x86cdaffa, (q31_t)0x2926e960, (q31_t)0x86cbaab3, (q31_t)0x2920f63a, (q31_t)0x86c9a5b7, (q31_t)0x291b02fa, (q31_t)0x86c7a106,\n  (q31_t)0x29150fa1, (q31_t)0x86c59c9f, (q31_t)0x290f1c2f, (q31_t)0x86c39883, (q31_t)0x290928a3, (q31_t)0x86c194b2, (q31_t)0x290334ff, (q31_t)0x86bf912c,\n  (q31_t)0x28fd4140, (q31_t)0x86bd8df0, (q31_t)0x28f74d69, (q31_t)0x86bb8b00, (q31_t)0x28f15978, (q31_t)0x86b9885a, (q31_t)0x28eb656e, (q31_t)0x86b785ff,\n  (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x28df7d0e, (q31_t)0x86b38229, (q31_t)0x28d988b8, (q31_t)0x86b180ae, (q31_t)0x28d3944a, (q31_t)0x86af7f7e,\n  (q31_t)0x28cd9fc1, (q31_t)0x86ad7e99, (q31_t)0x28c7ab20, (q31_t)0x86ab7dff, (q31_t)0x28c1b666, (q31_t)0x86a97db0, (q31_t)0x28bbc192, (q31_t)0x86a77dab,\n  (q31_t)0x28b5cca5, (q31_t)0x86a57df2, (q31_t)0x28afd7a0, (q31_t)0x86a37e83, (q31_t)0x28a9e281, (q31_t)0x86a17f5f, (q31_t)0x28a3ed49, (q31_t)0x869f8086,\n  (q31_t)0x289df7f8, (q31_t)0x869d81f8, (q31_t)0x2898028e, (q31_t)0x869b83b4, (q31_t)0x28920d0a, (q31_t)0x869985bc, (q31_t)0x288c176e, (q31_t)0x8697880f,\n  (q31_t)0x288621b9, (q31_t)0x86958aac, (q31_t)0x28802beb, (q31_t)0x86938d94, (q31_t)0x287a3604, (q31_t)0x869190c7, (q31_t)0x28744004, (q31_t)0x868f9445,\n  (q31_t)0x286e49ea, (q31_t)0x868d980e, (q31_t)0x286853b8, (q31_t)0x868b9c22, (q31_t)0x28625d6d, (q31_t)0x8689a081, (q31_t)0x285c670a, (q31_t)0x8687a52b,\n  (q31_t)0x2856708d, (q31_t)0x8685aa20, (q31_t)0x285079f7, (q31_t)0x8683af5f, (q31_t)0x284a8349, (q31_t)0x8681b4ea, (q31_t)0x28448c81, (q31_t)0x867fbabf,\n  (q31_t)0x283e95a1, (q31_t)0x867dc0e0, (q31_t)0x28389ea8, (q31_t)0x867bc74b, (q31_t)0x2832a796, (q31_t)0x8679ce01, (q31_t)0x282cb06c, (q31_t)0x8677d503,\n  (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x2820c1cc, (q31_t)0x8673e3e6, (q31_t)0x281aca57, (q31_t)0x8671ebc8, (q31_t)0x2814d2c9, (q31_t)0x866ff3f6,\n  (q31_t)0x280edb23, (q31_t)0x866dfc6e, (q31_t)0x2808e364, (q31_t)0x866c0531, (q31_t)0x2802eb8c, (q31_t)0x866a0e3f, (q31_t)0x27fcf39c, (q31_t)0x86681798,\n  (q31_t)0x27f6fb92, (q31_t)0x8666213c, (q31_t)0x27f10371, (q31_t)0x86642b2c, (q31_t)0x27eb0b36, (q31_t)0x86623566, (q31_t)0x27e512e3, (q31_t)0x86603feb,\n  (q31_t)0x27df1a77, (q31_t)0x865e4abb, (q31_t)0x27d921f3, (q31_t)0x865c55d7, (q31_t)0x27d32956, (q31_t)0x865a613d, (q31_t)0x27cd30a1, (q31_t)0x86586cee,\n  (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27c13eec, (q31_t)0x86548532, (q31_t)0x27bb45ed, (q31_t)0x865291c4, (q31_t)0x27b54cd6, (q31_t)0x86509ea2,\n  (q31_t)0x27af53a6, (q31_t)0x864eabcb, (q31_t)0x27a95a5d, (q31_t)0x864cb93e, (q31_t)0x27a360fc, (q31_t)0x864ac6fd, (q31_t)0x279d6783, (q31_t)0x8648d507,\n  (q31_t)0x27976df1, (q31_t)0x8646e35c, (q31_t)0x27917447, (q31_t)0x8644f1fc, (q31_t)0x278b7a84, (q31_t)0x864300e7, (q31_t)0x278580a9, (q31_t)0x8641101d,\n  (q31_t)0x277f86b5, (q31_t)0x863f1f9e, (q31_t)0x27798caa, (q31_t)0x863d2f6b, (q31_t)0x27739285, (q31_t)0x863b3f82, (q31_t)0x276d9849, (q31_t)0x86394fe5,\n  (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x2761a387, (q31_t)0x8635718b, (q31_t)0x275ba901, (q31_t)0x863382cf, (q31_t)0x2755ae64, (q31_t)0x8631945e,\n  (q31_t)0x274fb3ae, (q31_t)0x862fa638, (q31_t)0x2749b8e0, (q31_t)0x862db85e, (q31_t)0x2743bdf9, (q31_t)0x862bcace, (q31_t)0x273dc2fa, (q31_t)0x8629dd8a,\n  (q31_t)0x2737c7e3, (q31_t)0x8627f091, (q31_t)0x2731ccb4, (q31_t)0x862603e3, (q31_t)0x272bd16d, (q31_t)0x86241780, (q31_t)0x2725d60e, (q31_t)0x86222b68,\n  (q31_t)0x271fda96, (q31_t)0x86203f9c, (q31_t)0x2719df06, (q31_t)0x861e541a, (q31_t)0x2713e35f, (q31_t)0x861c68e4, (q31_t)0x270de79f, (q31_t)0x861a7df9,\n  (q31_t)0x2707ebc7, (q31_t)0x86189359, (q31_t)0x2701efd7, (q31_t)0x8616a905, (q31_t)0x26fbf3ce, (q31_t)0x8614befb, (q31_t)0x26f5f7ae, (q31_t)0x8612d53d,\n  (q31_t)0x26effb76, (q31_t)0x8610ebca, (q31_t)0x26e9ff26, (q31_t)0x860f02a3, (q31_t)0x26e402bd, (q31_t)0x860d19c6, (q31_t)0x26de063d, (q31_t)0x860b3135,\n  (q31_t)0x26d809a5, (q31_t)0x860948ef, (q31_t)0x26d20cf5, (q31_t)0x860760f4, (q31_t)0x26cc102d, (q31_t)0x86057944, (q31_t)0x26c6134d, (q31_t)0x860391e0,\n  (q31_t)0x26c01655, (q31_t)0x8601aac7, (q31_t)0x26ba1945, (q31_t)0x85ffc3f9, (q31_t)0x26b41c1d, (q31_t)0x85fddd76, (q31_t)0x26ae1edd, (q31_t)0x85fbf73f,\n  (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26a22416, (q31_t)0x85f82bb2, (q31_t)0x269c268f, (q31_t)0x85f6465c, (q31_t)0x269628f0, (q31_t)0x85f46152,\n  (q31_t)0x26902b39, (q31_t)0x85f27c93, (q31_t)0x268a2d6b, (q31_t)0x85f09820, (q31_t)0x26842f84, (q31_t)0x85eeb3f7, (q31_t)0x267e3186, (q31_t)0x85ecd01a,\n  (q31_t)0x26783370, (q31_t)0x85eaec88, (q31_t)0x26723543, (q31_t)0x85e90942, (q31_t)0x266c36fe, (q31_t)0x85e72647, (q31_t)0x266638a1, (q31_t)0x85e54397,\n  (q31_t)0x26603a2c, (q31_t)0x85e36132, (q31_t)0x265a3b9f, (q31_t)0x85e17f19, (q31_t)0x26543cfb, (q31_t)0x85df9d4b, (q31_t)0x264e3e40, (q31_t)0x85ddbbc9,\n  (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x26424082, (q31_t)0x85d9f9a5, (q31_t)0x263c417f, (q31_t)0x85d81905, (q31_t)0x26364265, (q31_t)0x85d638b0,\n  (q31_t)0x26304333, (q31_t)0x85d458a6, (q31_t)0x262a43ea, (q31_t)0x85d278e7, (q31_t)0x26244489, (q31_t)0x85d09974, (q31_t)0x261e4511, (q31_t)0x85ceba4d,\n  (q31_t)0x26184581, (q31_t)0x85ccdb70, (q31_t)0x261245da, (q31_t)0x85cafcdf, (q31_t)0x260c461b, (q31_t)0x85c91e9a, (q31_t)0x26064645, (q31_t)0x85c740a0,\n  (q31_t)0x26004657, (q31_t)0x85c562f1, (q31_t)0x25fa4652, (q31_t)0x85c3858d, (q31_t)0x25f44635, (q31_t)0x85c1a875, (q31_t)0x25ee4601, (q31_t)0x85bfcba9,\n  (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x25e24553, (q31_t)0x85bc12f2, (q31_t)0x25dc44d9, (q31_t)0x85ba3707, (q31_t)0x25d64447, (q31_t)0x85b85b68,\n  (q31_t)0x25d0439f, (q31_t)0x85b68015, (q31_t)0x25ca42de, (q31_t)0x85b4a50d, (q31_t)0x25c44207, (q31_t)0x85b2ca50, (q31_t)0x25be4118, (q31_t)0x85b0efdf,\n  (q31_t)0x25b84012, (q31_t)0x85af15b9, (q31_t)0x25b23ef5, (q31_t)0x85ad3bdf, (q31_t)0x25ac3dc0, (q31_t)0x85ab6250, (q31_t)0x25a63c74, (q31_t)0x85a9890d,\n  (q31_t)0x25a03b11, (q31_t)0x85a7b015, (q31_t)0x259a3997, (q31_t)0x85a5d768, (q31_t)0x25943806, (q31_t)0x85a3ff07, (q31_t)0x258e365d, (q31_t)0x85a226f2,\n  (q31_t)0x2588349d, (q31_t)0x85a04f28, (q31_t)0x258232c6, (q31_t)0x859e77a9, (q31_t)0x257c30d8, (q31_t)0x859ca076, (q31_t)0x25762ed3, (q31_t)0x859ac98f,\n  (q31_t)0x25702cb7, (q31_t)0x8598f2f3, (q31_t)0x256a2a83, (q31_t)0x85971ca2, (q31_t)0x25642839, (q31_t)0x8595469d, (q31_t)0x255e25d7, (q31_t)0x859370e4,\n  (q31_t)0x2558235f, (q31_t)0x85919b76, (q31_t)0x255220cf, (q31_t)0x858fc653, (q31_t)0x254c1e28, (q31_t)0x858df17c, (q31_t)0x25461b6b, (q31_t)0x858c1cf1,\n  (q31_t)0x25401896, (q31_t)0x858a48b1, (q31_t)0x253a15aa, (q31_t)0x858874bd, (q31_t)0x253412a8, (q31_t)0x8586a114, (q31_t)0x252e0f8e, (q31_t)0x8584cdb7,\n  (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x25220916, (q31_t)0x858127df, (q31_t)0x251c05b8, (q31_t)0x857f5564, (q31_t)0x25160243, (q31_t)0x857d8335,\n  (q31_t)0x250ffeb7, (q31_t)0x857bb152, (q31_t)0x2509fb14, (q31_t)0x8579dfba, (q31_t)0x2503f75a, (q31_t)0x85780e6e, (q31_t)0x24fdf389, (q31_t)0x85763d6d,\n  (q31_t)0x24f7efa2, (q31_t)0x85746cb8, (q31_t)0x24f1eba4, (q31_t)0x85729c4e, (q31_t)0x24ebe78f, (q31_t)0x8570cc30, (q31_t)0x24e5e363, (q31_t)0x856efc5e,\n  (q31_t)0x24dfdf20, (q31_t)0x856d2cd7, (q31_t)0x24d9dac7, (q31_t)0x856b5d9c, (q31_t)0x24d3d657, (q31_t)0x85698ead, (q31_t)0x24cdd1d0, (q31_t)0x8567c009,\n  (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24c1c87f, (q31_t)0x856423a4, (q31_t)0x24bbc3b4, (q31_t)0x856255e3, (q31_t)0x24b5bed2, (q31_t)0x8560886d,\n  (q31_t)0x24afb9da, (q31_t)0x855ebb44, (q31_t)0x24a9b4cb, (q31_t)0x855cee66, (q31_t)0x24a3afa6, (q31_t)0x855b21d3, (q31_t)0x249daa6a, (q31_t)0x8559558c,\n  (q31_t)0x2497a517, (q31_t)0x85578991, (q31_t)0x24919fae, (q31_t)0x8555bde2, (q31_t)0x248b9a2f, (q31_t)0x8553f27e, (q31_t)0x24859498, (q31_t)0x85522766,\n  (q31_t)0x247f8eec, (q31_t)0x85505c99, (q31_t)0x24798928, (q31_t)0x854e9219, (q31_t)0x2473834f, (q31_t)0x854cc7e3, (q31_t)0x246d7d5e, (q31_t)0x854afdfa,\n  (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x2461713a, (q31_t)0x85476b0a, (q31_t)0x245b6b07, (q31_t)0x8545a204, (q31_t)0x245564bd, (q31_t)0x8543d949,\n  (q31_t)0x244f5e5c, (q31_t)0x854210db, (q31_t)0x244957e5, (q31_t)0x854048b7, (q31_t)0x24435158, (q31_t)0x853e80e0, (q31_t)0x243d4ab4, (q31_t)0x853cb954,\n  (q31_t)0x243743fa, (q31_t)0x853af214, (q31_t)0x24313d2a, (q31_t)0x85392b20, (q31_t)0x242b3644, (q31_t)0x85376477, (q31_t)0x24252f47, (q31_t)0x85359e1a,\n  (q31_t)0x241f2833, (q31_t)0x8533d809, (q31_t)0x2419210a, (q31_t)0x85321244, (q31_t)0x241319ca, (q31_t)0x85304cca, (q31_t)0x240d1274, (q31_t)0x852e879d,\n  (q31_t)0x24070b08, (q31_t)0x852cc2bb, (q31_t)0x24010385, (q31_t)0x852afe24, (q31_t)0x23fafbec, (q31_t)0x852939da, (q31_t)0x23f4f43e, (q31_t)0x852775db,\n  (q31_t)0x23eeec78, (q31_t)0x8525b228, (q31_t)0x23e8e49d, (q31_t)0x8523eec1, (q31_t)0x23e2dcac, (q31_t)0x85222ba5, (q31_t)0x23dcd4a4, (q31_t)0x852068d6,\n  (q31_t)0x23d6cc87, (q31_t)0x851ea652, (q31_t)0x23d0c453, (q31_t)0x851ce41a, (q31_t)0x23cabc09, (q31_t)0x851b222e, (q31_t)0x23c4b3a9, (q31_t)0x8519608d,\n  (q31_t)0x23beab33, (q31_t)0x85179f39, (q31_t)0x23b8a2a7, (q31_t)0x8515de30, (q31_t)0x23b29a05, (q31_t)0x85141d73, (q31_t)0x23ac914d, (q31_t)0x85125d02,\n  (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x23a07f9a, (q31_t)0x850edd03, (q31_t)0x239a76a0, (q31_t)0x850d1d75, (q31_t)0x23946d90, (q31_t)0x850b5e34,\n  (q31_t)0x238e646a, (q31_t)0x85099f3e, (q31_t)0x23885b2e, (q31_t)0x8507e094, (q31_t)0x238251dd, (q31_t)0x85062235, (q31_t)0x237c4875, (q31_t)0x85046423,\n  (q31_t)0x23763ef7, (q31_t)0x8502a65c, (q31_t)0x23703564, (q31_t)0x8500e8e2, (q31_t)0x236a2bba, (q31_t)0x84ff2bb3, (q31_t)0x236421fb, (q31_t)0x84fd6ed0,\n  (q31_t)0x235e1826, (q31_t)0x84fbb239, (q31_t)0x23580e3b, (q31_t)0x84f9f5ee, (q31_t)0x2352043b, (q31_t)0x84f839ee, (q31_t)0x234bfa24, (q31_t)0x84f67e3b,\n  (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x233fe5b6, (q31_t)0x84f307b8, (q31_t)0x2339db5e, (q31_t)0x84f14ce8, (q31_t)0x2333d0f1, (q31_t)0x84ef9265,\n  (q31_t)0x232dc66d, (q31_t)0x84edd82d, (q31_t)0x2327bbd5, (q31_t)0x84ec1e41, (q31_t)0x2321b126, (q31_t)0x84ea64a1, (q31_t)0x231ba662, (q31_t)0x84e8ab4d,\n  (q31_t)0x23159b88, (q31_t)0x84e6f244, (q31_t)0x230f9098, (q31_t)0x84e53988, (q31_t)0x23098593, (q31_t)0x84e38118, (q31_t)0x23037a78, (q31_t)0x84e1c8f3,\n  (q31_t)0x22fd6f48, (q31_t)0x84e0111b, (q31_t)0x22f76402, (q31_t)0x84de598f, (q31_t)0x22f158a7, (q31_t)0x84dca24e, (q31_t)0x22eb4d36, (q31_t)0x84daeb5a,\n  (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22df3613, (q31_t)0x84d77e54, (q31_t)0x22d92a61, (q31_t)0x84d5c844, (q31_t)0x22d31e9a, (q31_t)0x84d4127f,\n  (q31_t)0x22cd12bd, (q31_t)0x84d25d06, (q31_t)0x22c706cb, (q31_t)0x84d0a7da, (q31_t)0x22c0fac4, (q31_t)0x84cef2f9, (q31_t)0x22baeea7, (q31_t)0x84cd3e64,\n  (q31_t)0x22b4e274, (q31_t)0x84cb8a1b, (q31_t)0x22aed62c, (q31_t)0x84c9d61f, (q31_t)0x22a8c9cf, (q31_t)0x84c8226e, (q31_t)0x22a2bd5d, (q31_t)0x84c66f09,\n  (q31_t)0x229cb0d5, (q31_t)0x84c4bbf0, (q31_t)0x2296a437, (q31_t)0x84c30924, (q31_t)0x22909785, (q31_t)0x84c156a3, (q31_t)0x228a8abd, (q31_t)0x84bfa46e,\n  (q31_t)0x22847de0, (q31_t)0x84bdf286, (q31_t)0x227e70ed, (q31_t)0x84bc40e9, (q31_t)0x227863e5, (q31_t)0x84ba8f98, (q31_t)0x227256c8, (q31_t)0x84b8de94,\n  (q31_t)0x226c4996, (q31_t)0x84b72ddb, (q31_t)0x22663c4e, (q31_t)0x84b57d6f, (q31_t)0x22602ef1, (q31_t)0x84b3cd4f, (q31_t)0x225a217f, (q31_t)0x84b21d7a,\n  (q31_t)0x225413f8, (q31_t)0x84b06df2, (q31_t)0x224e065c, (q31_t)0x84aebeb6, (q31_t)0x2247f8aa, (q31_t)0x84ad0fc6, (q31_t)0x2241eae3, (q31_t)0x84ab6122,\n  (q31_t)0x223bdd08, (q31_t)0x84a9b2ca, (q31_t)0x2235cf17, (q31_t)0x84a804be, (q31_t)0x222fc111, (q31_t)0x84a656fe, (q31_t)0x2229b2f6, (q31_t)0x84a4a98a,\n  (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x221d9680, (q31_t)0x84a14f87, (q31_t)0x22178826, (q31_t)0x849fa2f7, (q31_t)0x221179b7, (q31_t)0x849df6b4,\n  (q31_t)0x220b6b32, (q31_t)0x849c4abd, (q31_t)0x22055c99, (q31_t)0x849a9f12, (q31_t)0x21ff4dea, (q31_t)0x8498f3b3, (q31_t)0x21f93f27, (q31_t)0x849748a0,\n  (q31_t)0x21f3304f, (q31_t)0x84959dd9, (q31_t)0x21ed2162, (q31_t)0x8493f35e, (q31_t)0x21e71260, (q31_t)0x84924930, (q31_t)0x21e10349, (q31_t)0x84909f4e,\n  (q31_t)0x21daf41d, (q31_t)0x848ef5b7, (q31_t)0x21d4e4dc, (q31_t)0x848d4c6d, (q31_t)0x21ced586, (q31_t)0x848ba36f, (q31_t)0x21c8c61c, (q31_t)0x8489fabe,\n  (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x21bca708, (q31_t)0x8486aa3e, (q31_t)0x21b6975f, (q31_t)0x84850271, (q31_t)0x21b087a1, (q31_t)0x84835af0,\n  (q31_t)0x21aa77cf, (q31_t)0x8481b3bb, (q31_t)0x21a467e7, (q31_t)0x84800cd2, (q31_t)0x219e57eb, (q31_t)0x847e6636, (q31_t)0x219847da, (q31_t)0x847cbfe5,\n  (q31_t)0x219237b5, (q31_t)0x847b19e1, (q31_t)0x218c277a, (q31_t)0x84797429, (q31_t)0x2186172b, (q31_t)0x8477cebd, (q31_t)0x218006c8, (q31_t)0x8476299e,\n  (q31_t)0x2179f64f, (q31_t)0x847484ca, (q31_t)0x2173e5c2, (q31_t)0x8472e043, (q31_t)0x216dd521, (q31_t)0x84713c08, (q31_t)0x2167c46b, (q31_t)0x846f9819,\n  (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x215ba2c0, (q31_t)0x846c5120, (q31_t)0x215591cc, (q31_t)0x846aae16, (q31_t)0x214f80c4, (q31_t)0x84690b58,\n  (q31_t)0x21496fa7, (q31_t)0x846768e7, (q31_t)0x21435e75, (q31_t)0x8465c6c1, (q31_t)0x213d4d2f, (q31_t)0x846424e8, (q31_t)0x21373bd4, (q31_t)0x8462835b,\n  (q31_t)0x21312a65, (q31_t)0x8460e21a, (q31_t)0x212b18e1, (q31_t)0x845f4126, (q31_t)0x21250749, (q31_t)0x845da07e, (q31_t)0x211ef59d, (q31_t)0x845c0022,\n  (q31_t)0x2118e3dc, (q31_t)0x845a6012, (q31_t)0x2112d206, (q31_t)0x8458c04f, (q31_t)0x210cc01d, (q31_t)0x845720d8, (q31_t)0x2106ae1e, (q31_t)0x845581ad,\n  (q31_t)0x21009c0c, (q31_t)0x8453e2cf, (q31_t)0x20fa89e5, (q31_t)0x8452443d, (q31_t)0x20f477aa, (q31_t)0x8450a5f7, (q31_t)0x20ee655a, (q31_t)0x844f07fd,\n  (q31_t)0x20e852f6, (q31_t)0x844d6a50, (q31_t)0x20e2407e, (q31_t)0x844bccef, (q31_t)0x20dc2df2, (q31_t)0x844a2fda, (q31_t)0x20d61b51, (q31_t)0x84489311,\n  (q31_t)0x20d0089c, (q31_t)0x8446f695, (q31_t)0x20c9f5d3, (q31_t)0x84455a66, (q31_t)0x20c3e2f5, (q31_t)0x8443be82, (q31_t)0x20bdd003, (q31_t)0x844222eb,\n  (q31_t)0x20b7bcfe, (q31_t)0x844087a0, (q31_t)0x20b1a9e4, (q31_t)0x843eeca2, (q31_t)0x20ab96b5, (q31_t)0x843d51f0, (q31_t)0x20a58373, (q31_t)0x843bb78a,\n  (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x20995cb2, (q31_t)0x843883a3, (q31_t)0x20934933, (q31_t)0x8436ea23, (q31_t)0x208d35a0, (q31_t)0x843550ee,\n  (q31_t)0x208721f9, (q31_t)0x8433b806, (q31_t)0x20810e3e, (q31_t)0x84321f6b, (q31_t)0x207afa6f, (q31_t)0x8430871b, (q31_t)0x2074e68c, (q31_t)0x842eef18,\n  (q31_t)0x206ed295, (q31_t)0x842d5762, (q31_t)0x2068be8a, (q31_t)0x842bbff8, (q31_t)0x2062aa6b, (q31_t)0x842a28da, (q31_t)0x205c9638, (q31_t)0x84289209,\n  (q31_t)0x205681f1, (q31_t)0x8426fb84, (q31_t)0x20506d96, (q31_t)0x8425654b, (q31_t)0x204a5927, (q31_t)0x8423cf5f, (q31_t)0x204444a4, (q31_t)0x842239bf,\n  (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x20381b63, (q31_t)0x841f0f65, (q31_t)0x203206a4, (q31_t)0x841d7aaa, (q31_t)0x202bf1d2, (q31_t)0x841be63c,\n  (q31_t)0x2025dcec, (q31_t)0x841a521a, (q31_t)0x201fc7f2, (q31_t)0x8418be45, (q31_t)0x2019b2e4, (q31_t)0x84172abc, (q31_t)0x20139dc2, (q31_t)0x84159780,\n  (q31_t)0x200d888d, (q31_t)0x84140490, (q31_t)0x20077344, (q31_t)0x841271ec, (q31_t)0x20015de7, (q31_t)0x8410df95, (q31_t)0x1ffb4876, (q31_t)0x840f4d8a,\n  (q31_t)0x1ff532f2, (q31_t)0x840dbbcc, (q31_t)0x1fef1d59, (q31_t)0x840c2a5a, (q31_t)0x1fe907ae, (q31_t)0x840a9935, (q31_t)0x1fe2f1ee, (q31_t)0x8409085c,\n  (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1fd6c634, (q31_t)0x8405e790, (q31_t)0x1fd0b03a, (q31_t)0x8404579d, (q31_t)0x1fca9a2b, (q31_t)0x8402c7f6,\n  (q31_t)0x1fc4840a, (q31_t)0x8401389b, (q31_t)0x1fbe6dd4, (q31_t)0x83ffa98d, (q31_t)0x1fb8578b, (q31_t)0x83fe1acc, (q31_t)0x1fb2412f, (q31_t)0x83fc8c57,\n  (q31_t)0x1fac2abf, (q31_t)0x83fafe2e, (q31_t)0x1fa6143b, (q31_t)0x83f97052, (q31_t)0x1f9ffda4, (q31_t)0x83f7e2c3, (q31_t)0x1f99e6fa, (q31_t)0x83f65580,\n  (q31_t)0x1f93d03c, (q31_t)0x83f4c889, (q31_t)0x1f8db96a, (q31_t)0x83f33bdf, (q31_t)0x1f87a285, (q31_t)0x83f1af82, (q31_t)0x1f818b8d, (q31_t)0x83f02371,\n  (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, (q31_t)0x1f755d61, (q31_t)0x83ed0c35, (q31_t)0x1f6f462f, (q31_t)0x83eb810a, (q31_t)0x1f692ee9, (q31_t)0x83e9f62b,\n  (q31_t)0x1f63178f, (q31_t)0x83e86b99, (q31_t)0x1f5d0022, (q31_t)0x83e6e153, (q31_t)0x1f56e8a2, (q31_t)0x83e5575a, (q31_t)0x1f50d10e, (q31_t)0x83e3cdad,\n  (q31_t)0x1f4ab968, (q31_t)0x83e2444d, (q31_t)0x1f44a1ad, (q31_t)0x83e0bb3a, (q31_t)0x1f3e89e0, (q31_t)0x83df3273, (q31_t)0x1f3871ff, (q31_t)0x83dda9f9,\n  (q31_t)0x1f325a0b, (q31_t)0x83dc21cb, (q31_t)0x1f2c4204, (q31_t)0x83da99ea, (q31_t)0x1f2629ea, (q31_t)0x83d91255, (q31_t)0x1f2011bc, (q31_t)0x83d78b0d,\n  (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1f13e127, (q31_t)0x83d47d63, (q31_t)0x1f0dc8c0, (q31_t)0x83d2f701, (q31_t)0x1f07b045, (q31_t)0x83d170eb,\n  (q31_t)0x1f0197b8, (q31_t)0x83cfeb22, (q31_t)0x1efb7f17, (q31_t)0x83ce65a6, (q31_t)0x1ef56664, (q31_t)0x83cce076, (q31_t)0x1eef4d9d, (q31_t)0x83cb5b93,\n  (q31_t)0x1ee934c3, (q31_t)0x83c9d6fc, (q31_t)0x1ee31bd6, (q31_t)0x83c852b2, (q31_t)0x1edd02d6, (q31_t)0x83c6ceb5, (q31_t)0x1ed6e9c3, (q31_t)0x83c54b04,\n  (q31_t)0x1ed0d09d, (q31_t)0x83c3c7a0, (q31_t)0x1ecab763, (q31_t)0x83c24488, (q31_t)0x1ec49e17, (q31_t)0x83c0c1be, (q31_t)0x1ebe84b8, (q31_t)0x83bf3f3f,\n  (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1eb251c1, (q31_t)0x83bc3b29, (q31_t)0x1eac3829, (q31_t)0x83bab991, (q31_t)0x1ea61e7e, (q31_t)0x83b93845,\n  (q31_t)0x1ea004c1, (q31_t)0x83b7b746, (q31_t)0x1e99eaf0, (q31_t)0x83b63694, (q31_t)0x1e93d10c, (q31_t)0x83b4b62e, (q31_t)0x1e8db716, (q31_t)0x83b33616,\n  (q31_t)0x1e879d0d, (q31_t)0x83b1b649, (q31_t)0x1e8182f1, (q31_t)0x83b036ca, (q31_t)0x1e7b68c2, (q31_t)0x83aeb797, (q31_t)0x1e754e80, (q31_t)0x83ad38b1,\n  (q31_t)0x1e6f342c, (q31_t)0x83abba17, (q31_t)0x1e6919c4, (q31_t)0x83aa3bca, (q31_t)0x1e62ff4a, (q31_t)0x83a8bdca, (q31_t)0x1e5ce4be, (q31_t)0x83a74017,\n  (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1e50af6c, (q31_t)0x83a44596, (q31_t)0x1e4a94a7, (q31_t)0x83a2c8c9, (q31_t)0x1e4479cf, (q31_t)0x83a14c48,\n  (q31_t)0x1e3e5ee5, (q31_t)0x839fd014, (q31_t)0x1e3843e8, (q31_t)0x839e542d, (q31_t)0x1e3228d9, (q31_t)0x839cd893, (q31_t)0x1e2c0db6, (q31_t)0x839b5d45,\n  (q31_t)0x1e25f282, (q31_t)0x8399e244, (q31_t)0x1e1fd73a, (q31_t)0x83986790, (q31_t)0x1e19bbe0, (q31_t)0x8396ed29, (q31_t)0x1e13a074, (q31_t)0x8395730e,\n  (q31_t)0x1e0d84f5, (q31_t)0x8393f940, (q31_t)0x1e076963, (q31_t)0x83927fbf, (q31_t)0x1e014dbf, (q31_t)0x8391068a, (q31_t)0x1dfb3208, (q31_t)0x838f8da2,\n  (q31_t)0x1df5163f, (q31_t)0x838e1507, (q31_t)0x1deefa63, (q31_t)0x838c9cb9, (q31_t)0x1de8de75, (q31_t)0x838b24b8, (q31_t)0x1de2c275, (q31_t)0x8389ad03,\n  (q31_t)0x1ddca662, (q31_t)0x8388359b, (q31_t)0x1dd68a3c, (q31_t)0x8386be80, (q31_t)0x1dd06e04, (q31_t)0x838547b2, (q31_t)0x1dca51ba, (q31_t)0x8383d130,\n  (q31_t)0x1dc4355e, (q31_t)0x83825afb, (q31_t)0x1dbe18ef, (q31_t)0x8380e513, (q31_t)0x1db7fc6d, (q31_t)0x837f6f78, (q31_t)0x1db1dfda, (q31_t)0x837dfa2a,\n  (q31_t)0x1dabc334, (q31_t)0x837c8528, (q31_t)0x1da5a67c, (q31_t)0x837b1074, (q31_t)0x1d9f89b1, (q31_t)0x83799c0c, (q31_t)0x1d996cd4, (q31_t)0x837827f0,\n  (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d8d32e4, (q31_t)0x837540a1, (q31_t)0x1d8715d0, (q31_t)0x8373cd6c, (q31_t)0x1d80f8ab, (q31_t)0x83725a84,\n  (q31_t)0x1d7adb73, (q31_t)0x8370e7e9, (q31_t)0x1d74be29, (q31_t)0x836f759b, (q31_t)0x1d6ea0cc, (q31_t)0x836e039a, (q31_t)0x1d68835e, (q31_t)0x836c91e5,\n  (q31_t)0x1d6265dd, (q31_t)0x836b207d, (q31_t)0x1d5c484b, (q31_t)0x8369af63, (q31_t)0x1d562aa6, (q31_t)0x83683e95, (q31_t)0x1d500cef, (q31_t)0x8366ce14,\n  (q31_t)0x1d49ef26, (q31_t)0x83655ddf, (q31_t)0x1d43d14b, (q31_t)0x8363edf8, (q31_t)0x1d3db35e, (q31_t)0x83627e5d, (q31_t)0x1d37955e, (q31_t)0x83610f10,\n  (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1d2b592a, (q31_t)0x835e315b, (q31_t)0x1d253af5, (q31_t)0x835cc2f4, (q31_t)0x1d1f1cae, (q31_t)0x835b54da,\n  (q31_t)0x1d18fe54, (q31_t)0x8359e70d, (q31_t)0x1d12dfe9, (q31_t)0x8358798c, (q31_t)0x1d0cc16c, (q31_t)0x83570c59, (q31_t)0x1d06a2dd, (q31_t)0x83559f72,\n  (q31_t)0x1d00843d, (q31_t)0x835432d8, (q31_t)0x1cfa658a, (q31_t)0x8352c68c, (q31_t)0x1cf446c5, (q31_t)0x83515a8c, (q31_t)0x1cee27ef, (q31_t)0x834feed9,\n  (q31_t)0x1ce80906, (q31_t)0x834e8373, (q31_t)0x1ce1ea0c, (q31_t)0x834d185a, (q31_t)0x1cdbcb00, (q31_t)0x834bad8e, (q31_t)0x1cd5abe3, (q31_t)0x834a430e,\n  (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1cc96d72, (q31_t)0x83476ef6, (q31_t)0x1cc34e1f, (q31_t)0x8346055e, (q31_t)0x1cbd2eba, (q31_t)0x83449c12,\n  (q31_t)0x1cb70f43, (q31_t)0x83433314, (q31_t)0x1cb0efbb, (q31_t)0x8341ca62, (q31_t)0x1caad021, (q31_t)0x834061fd, (q31_t)0x1ca4b075, (q31_t)0x833ef9e6,\n  (q31_t)0x1c9e90b8, (q31_t)0x833d921b, (q31_t)0x1c9870e9, (q31_t)0x833c2a9d, (q31_t)0x1c925109, (q31_t)0x833ac36c, (q31_t)0x1c8c3116, (q31_t)0x83395c88,\n  (q31_t)0x1c861113, (q31_t)0x8337f5f1, (q31_t)0x1c7ff0fd, (q31_t)0x83368fa7, (q31_t)0x1c79d0d6, (q31_t)0x833529aa, (q31_t)0x1c73b09d, (q31_t)0x8333c3fa,\n  (q31_t)0x1c6d9053, (q31_t)0x83325e97, (q31_t)0x1c676ff8, (q31_t)0x8330f981, (q31_t)0x1c614f8b, (q31_t)0x832f94b8, (q31_t)0x1c5b2f0c, (q31_t)0x832e303c,\n  (q31_t)0x1c550e7c, (q31_t)0x832ccc0d, (q31_t)0x1c4eedda, (q31_t)0x832b682b, (q31_t)0x1c48cd27, (q31_t)0x832a0496, (q31_t)0x1c42ac62, (q31_t)0x8328a14d,\n  (q31_t)0x1c3c8b8c, (q31_t)0x83273e52, (q31_t)0x1c366aa5, (q31_t)0x8325dba4, (q31_t)0x1c3049ac, (q31_t)0x83247943, (q31_t)0x1c2a28a2, (q31_t)0x8323172f,\n  (q31_t)0x1c240786, (q31_t)0x8321b568, (q31_t)0x1c1de659, (q31_t)0x832053ee, (q31_t)0x1c17c51b, (q31_t)0x831ef2c1, (q31_t)0x1c11a3cb, (q31_t)0x831d91e1,\n  (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1c0560f8, (q31_t)0x831ad109, (q31_t)0x1bff3f75, (q31_t)0x83197110, (q31_t)0x1bf91de0, (q31_t)0x83181164,\n  (q31_t)0x1bf2fc3a, (q31_t)0x8316b205, (q31_t)0x1becda83, (q31_t)0x831552f4, (q31_t)0x1be6b8ba, (q31_t)0x8313f42f, (q31_t)0x1be096e0, (q31_t)0x831295b7,\n  (q31_t)0x1bda74f6, (q31_t)0x8311378d, (q31_t)0x1bd452f9, (q31_t)0x830fd9af, (q31_t)0x1bce30ec, (q31_t)0x830e7c1f, (q31_t)0x1bc80ece, (q31_t)0x830d1edc,\n  (q31_t)0x1bc1ec9e, (q31_t)0x830bc1e6, (q31_t)0x1bbbca5e, (q31_t)0x830a653c, (q31_t)0x1bb5a80c, (q31_t)0x830908e0, (q31_t)0x1baf85a9, (q31_t)0x8307acd1,\n  (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1ba340b0, (q31_t)0x8304f59b, (q31_t)0x1b9d1e1a, (q31_t)0x83039a73, (q31_t)0x1b96fb73, (q31_t)0x83023f98,\n  (q31_t)0x1b90d8bb, (q31_t)0x8300e50b, (q31_t)0x1b8ab5f2, (q31_t)0x82ff8acb, (q31_t)0x1b849317, (q31_t)0x82fe30d7, (q31_t)0x1b7e702c, (q31_t)0x82fcd731,\n  (q31_t)0x1b784d30, (q31_t)0x82fb7dd8, (q31_t)0x1b722a23, (q31_t)0x82fa24cc, (q31_t)0x1b6c0705, (q31_t)0x82f8cc0d, (q31_t)0x1b65e3d7, (q31_t)0x82f7739c,\n  (q31_t)0x1b5fc097, (q31_t)0x82f61b77, (q31_t)0x1b599d46, (q31_t)0x82f4c3a0, (q31_t)0x1b5379e5, (q31_t)0x82f36c15, (q31_t)0x1b4d5672, (q31_t)0x82f214d8,\n  (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1b410f5b, (q31_t)0x82ef6745, (q31_t)0x1b3aebb6, (q31_t)0x82ee10ef, (q31_t)0x1b34c801, (q31_t)0x82ecbae7,\n  (q31_t)0x1b2ea43a, (q31_t)0x82eb652b, (q31_t)0x1b288063, (q31_t)0x82ea0fbd, (q31_t)0x1b225c7b, (q31_t)0x82e8ba9c, (q31_t)0x1b1c3883, (q31_t)0x82e765c8,\n  (q31_t)0x1b161479, (q31_t)0x82e61141, (q31_t)0x1b0ff05f, (q31_t)0x82e4bd07, (q31_t)0x1b09cc34, (q31_t)0x82e3691b, (q31_t)0x1b03a7f9, (q31_t)0x82e2157c,\n  (q31_t)0x1afd83ad, (q31_t)0x82e0c22a, (q31_t)0x1af75f50, (q31_t)0x82df6f25, (q31_t)0x1af13ae3, (q31_t)0x82de1c6d, (q31_t)0x1aeb1665, (q31_t)0x82dcca02,\n  (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, (q31_t)0x1adecd37, (q31_t)0x82da2615, (q31_t)0x1ad8a887, (q31_t)0x82d8d492, (q31_t)0x1ad283c7, (q31_t)0x82d7835c,\n  (q31_t)0x1acc5ef6, (q31_t)0x82d63274, (q31_t)0x1ac63a14, (q31_t)0x82d4e1d8, (q31_t)0x1ac01522, (q31_t)0x82d3918a, (q31_t)0x1ab9f020, (q31_t)0x82d24189,\n  (q31_t)0x1ab3cb0d, (q31_t)0x82d0f1d5, (q31_t)0x1aada5e9, (q31_t)0x82cfa26f, (q31_t)0x1aa780b6, (q31_t)0x82ce5356, (q31_t)0x1aa15b71, (q31_t)0x82cd048a,\n  (q31_t)0x1a9b361d, (q31_t)0x82cbb60b, (q31_t)0x1a9510b7, (q31_t)0x82ca67d9, (q31_t)0x1a8eeb42, (q31_t)0x82c919f5, (q31_t)0x1a88c5bc, (q31_t)0x82c7cc5e,\n  (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a7c7a7f, (q31_t)0x82c53217, (q31_t)0x1a7654c8, (q31_t)0x82c3e568, (q31_t)0x1a702f01, (q31_t)0x82c29906,\n  (q31_t)0x1a6a0929, (q31_t)0x82c14cf1, (q31_t)0x1a63e341, (q31_t)0x82c00129, (q31_t)0x1a5dbd49, (q31_t)0x82beb5af, (q31_t)0x1a579741, (q31_t)0x82bd6a82,\n  (q31_t)0x1a517128, (q31_t)0x82bc1fa2, (q31_t)0x1a4b4aff, (q31_t)0x82bad50f, (q31_t)0x1a4524c6, (q31_t)0x82b98aca, (q31_t)0x1a3efe7c, (q31_t)0x82b840d2,\n  (q31_t)0x1a38d823, (q31_t)0x82b6f727, (q31_t)0x1a32b1b9, (q31_t)0x82b5adca, (q31_t)0x1a2c8b3f, (q31_t)0x82b464ba, (q31_t)0x1a2664b5, (q31_t)0x82b31bf7,\n  (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x1a1a1771, (q31_t)0x82b08b59, (q31_t)0x1a13f0b6, (q31_t)0x82af437e, (q31_t)0x1a0dc9ec, (q31_t)0x82adfbf0,\n  (q31_t)0x1a07a311, (q31_t)0x82acb4b0, (q31_t)0x1a017c27, (q31_t)0x82ab6dbd, (q31_t)0x19fb552c, (q31_t)0x82aa2717, (q31_t)0x19f52e22, (q31_t)0x82a8e0bf,\n  (q31_t)0x19ef0707, (q31_t)0x82a79ab3, (q31_t)0x19e8dfdc, (q31_t)0x82a654f6, (q31_t)0x19e2b8a2, (q31_t)0x82a50f85, (q31_t)0x19dc9157, (q31_t)0x82a3ca62,\n  (q31_t)0x19d669fc, (q31_t)0x82a2858c, (q31_t)0x19d04292, (q31_t)0x82a14104, (q31_t)0x19ca1b17, (q31_t)0x829ffcc8, (q31_t)0x19c3f38d, (q31_t)0x829eb8db,\n  (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x19b7a449, (q31_t)0x829c31e7, (q31_t)0x19b17c8f, (q31_t)0x829aeee1, (q31_t)0x19ab54c5, (q31_t)0x8299ac29,\n  (q31_t)0x19a52ceb, (q31_t)0x829869be, (q31_t)0x199f0502, (q31_t)0x829727a0, (q31_t)0x1998dd09, (q31_t)0x8295e5cf, (q31_t)0x1992b4ff, (q31_t)0x8294a44c,\n  (q31_t)0x198c8ce7, (q31_t)0x82936317, (q31_t)0x198664be, (q31_t)0x8292222e, (q31_t)0x19803c86, (q31_t)0x8290e194, (q31_t)0x197a143e, (q31_t)0x828fa146,\n  (q31_t)0x1973ebe6, (q31_t)0x828e6146, (q31_t)0x196dc37e, (q31_t)0x828d2193, (q31_t)0x19679b07, (q31_t)0x828be22e, (q31_t)0x19617280, (q31_t)0x828aa316,\n  (q31_t)0x195b49ea, (q31_t)0x8289644b, (q31_t)0x19552144, (q31_t)0x828825ce, (q31_t)0x194ef88e, (q31_t)0x8286e79e, (q31_t)0x1948cfc8, (q31_t)0x8285a9bb,\n  (q31_t)0x1942a6f3, (q31_t)0x82846c26, (q31_t)0x193c7e0f, (q31_t)0x82832edf, (q31_t)0x1936551b, (q31_t)0x8281f1e4, (q31_t)0x19302c17, (q31_t)0x8280b538,\n  (q31_t)0x192a0304, (q31_t)0x827f78d8, (q31_t)0x1923d9e1, (q31_t)0x827e3cc6, (q31_t)0x191db0af, (q31_t)0x827d0102, (q31_t)0x1917876d, (q31_t)0x827bc58a,\n  (q31_t)0x19115e1c, (q31_t)0x827a8a61, (q31_t)0x190b34bb, (q31_t)0x82794f84, (q31_t)0x19050b4b, (q31_t)0x827814f6, (q31_t)0x18fee1cb, (q31_t)0x8276dab4,\n  (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18f28e9e, (q31_t)0x8274671a, (q31_t)0x18ec64f0, (q31_t)0x82732dc0, (q31_t)0x18e63b33, (q31_t)0x8271f4b5,\n  (q31_t)0x18e01167, (q31_t)0x8270bbf7, (q31_t)0x18d9e78b, (q31_t)0x826f8386, (q31_t)0x18d3bda0, (q31_t)0x826e4b62, (q31_t)0x18cd93a5, (q31_t)0x826d138d,\n  (q31_t)0x18c7699b, (q31_t)0x826bdc04, (q31_t)0x18c13f82, (q31_t)0x826aa4c9, (q31_t)0x18bb155a, (q31_t)0x82696ddc, (q31_t)0x18b4eb22, (q31_t)0x8268373c,\n  (q31_t)0x18aec0db, (q31_t)0x826700e9, (q31_t)0x18a89685, (q31_t)0x8265cae4, (q31_t)0x18a26c20, (q31_t)0x8264952d, (q31_t)0x189c41ab, (q31_t)0x82635fc2,\n  (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x188fec95, (q31_t)0x8260f5d7, (q31_t)0x1889c1f3, (q31_t)0x825fc155, (q31_t)0x18839742, (q31_t)0x825e8d21,\n  (q31_t)0x187d6c82, (q31_t)0x825d593a, (q31_t)0x187741b2, (q31_t)0x825c25a1, (q31_t)0x187116d4, (q31_t)0x825af255, (q31_t)0x186aebe6, (q31_t)0x8259bf57,\n  (q31_t)0x1864c0ea, (q31_t)0x82588ca7, (q31_t)0x185e95de, (q31_t)0x82575a44, (q31_t)0x18586ac3, (q31_t)0x8256282e, (q31_t)0x18523f9a, (q31_t)0x8254f666,\n  (q31_t)0x184c1461, (q31_t)0x8253c4eb, (q31_t)0x1845e919, (q31_t)0x825293be, (q31_t)0x183fbdc3, (q31_t)0x825162df, (q31_t)0x1839925d, (q31_t)0x8250324d,\n  (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x182d3b65, (q31_t)0x824dd211, (q31_t)0x18270fd3, (q31_t)0x824ca268, (q31_t)0x1820e431, (q31_t)0x824b730c,\n  (q31_t)0x181ab881, (q31_t)0x824a43fe, (q31_t)0x18148cc2, (q31_t)0x8249153d, (q31_t)0x180e60f4, (q31_t)0x8247e6ca, (q31_t)0x18083518, (q31_t)0x8246b8a4,\n  (q31_t)0x1802092c, (q31_t)0x82458acc, (q31_t)0x17fbdd32, (q31_t)0x82445d41, (q31_t)0x17f5b129, (q31_t)0x82433004, (q31_t)0x17ef8511, (q31_t)0x82420315,\n  (q31_t)0x17e958ea, (q31_t)0x8240d673, (q31_t)0x17e32cb5, (q31_t)0x823faa1e, (q31_t)0x17dd0070, (q31_t)0x823e7e18, (q31_t)0x17d6d41d, (q31_t)0x823d525e,\n  (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, (q31_t)0x17ca7b4c, (q31_t)0x823afbd5, (q31_t)0x17c44ecd, (q31_t)0x8239d104, (q31_t)0x17be223f, (q31_t)0x8238a681,\n  (q31_t)0x17b7f5a3, (q31_t)0x82377c4c, (q31_t)0x17b1c8f8, (q31_t)0x82365264, (q31_t)0x17ab9c3e, (q31_t)0x823528ca, (q31_t)0x17a56f76, (q31_t)0x8233ff7e,\n  (q31_t)0x179f429f, (q31_t)0x8232d67f, (q31_t)0x179915ba, (q31_t)0x8231adce, (q31_t)0x1792e8c6, (q31_t)0x8230856a, (q31_t)0x178cbbc4, (q31_t)0x822f5d54,\n  (q31_t)0x17868eb3, (q31_t)0x822e358b, (q31_t)0x17806194, (q31_t)0x822d0e10, (q31_t)0x177a3466, (q31_t)0x822be6e3, (q31_t)0x17740729, (q31_t)0x822ac004,\n  (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x1767ac85, (q31_t)0x8228732d, (q31_t)0x17617f1d, (q31_t)0x82274d36, (q31_t)0x175b51a7, (q31_t)0x8226278d,\n  (q31_t)0x17552422, (q31_t)0x82250232, (q31_t)0x174ef68f, (q31_t)0x8223dd24, (q31_t)0x1748c8ee, (q31_t)0x8222b863, (q31_t)0x17429b3e, (q31_t)0x822193f1,\n  (q31_t)0x173c6d80, (q31_t)0x82206fcc, (q31_t)0x17363fb4, (q31_t)0x821f4bf5, (q31_t)0x173011d9, (q31_t)0x821e286b, (q31_t)0x1729e3f0, (q31_t)0x821d052f,\n  (q31_t)0x1723b5f9, (q31_t)0x821be240, (q31_t)0x171d87f3, (q31_t)0x821abfa0, (q31_t)0x171759df, (q31_t)0x82199d4d, (q31_t)0x17112bbd, (q31_t)0x82187b47,\n  (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x1704cf4f, (q31_t)0x82163826, (q31_t)0x16fea102, (q31_t)0x82151709, (q31_t)0x16f872a7, (q31_t)0x8213f63a,\n  (q31_t)0x16f2443e, (q31_t)0x8212d5b9, (q31_t)0x16ec15c7, (q31_t)0x8211b586, (q31_t)0x16e5e741, (q31_t)0x821095a0, (q31_t)0x16dfb8ae, (q31_t)0x820f7608,\n  (q31_t)0x16d98a0c, (q31_t)0x820e56be, (q31_t)0x16d35b5c, (q31_t)0x820d37c1, (q31_t)0x16cd2c9f, (q31_t)0x820c1912, (q31_t)0x16c6fdd3, (q31_t)0x820afab1,\n  (q31_t)0x16c0cef9, (q31_t)0x8209dc9e, (q31_t)0x16baa011, (q31_t)0x8208bed8, (q31_t)0x16b4711b, (q31_t)0x8207a160, (q31_t)0x16ae4217, (q31_t)0x82068435,\n  (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x16a1e3e5, (q31_t)0x82044ac9, (q31_t)0x169bb4b7, (q31_t)0x82032e88, (q31_t)0x1695857b, (q31_t)0x82021294,\n  (q31_t)0x168f5632, (q31_t)0x8200f6ef, (q31_t)0x168926da, (q31_t)0x81ffdb96, (q31_t)0x1682f774, (q31_t)0x81fec08c, (q31_t)0x167cc801, (q31_t)0x81fda5cf,\n  (q31_t)0x1676987f, (q31_t)0x81fc8b60, (q31_t)0x167068f0, (q31_t)0x81fb713f, (q31_t)0x166a3953, (q31_t)0x81fa576c, (q31_t)0x166409a8, (q31_t)0x81f93de6,\n  (q31_t)0x165dd9f0, (q31_t)0x81f824ae, (q31_t)0x1657aa29, (q31_t)0x81f70bc3, (q31_t)0x16517a55, (q31_t)0x81f5f327, (q31_t)0x164b4a73, (q31_t)0x81f4dad8,\n  (q31_t)0x16451a83, (q31_t)0x81f3c2d7, (q31_t)0x163eea86, (q31_t)0x81f2ab24, (q31_t)0x1638ba7a, (q31_t)0x81f193be, (q31_t)0x16328a61, (q31_t)0x81f07ca6,\n  (q31_t)0x162c5a3b, (q31_t)0x81ef65dc, (q31_t)0x16262a06, (q31_t)0x81ee4f60, (q31_t)0x161ff9c4, (q31_t)0x81ed3932, (q31_t)0x1619c975, (q31_t)0x81ec2351,\n  (q31_t)0x16139918, (q31_t)0x81eb0dbe, (q31_t)0x160d68ad, (q31_t)0x81e9f879, (q31_t)0x16073834, (q31_t)0x81e8e381, (q31_t)0x160107ae, (q31_t)0x81e7ced8,\n  (q31_t)0x15fad71b, (q31_t)0x81e6ba7c, (q31_t)0x15f4a679, (q31_t)0x81e5a66e, (q31_t)0x15ee75cb, (q31_t)0x81e492ad, (q31_t)0x15e8450e, (q31_t)0x81e37f3b,\n  (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x15dbe36d, (q31_t)0x81e1593f, (q31_t)0x15d5b288, (q31_t)0x81e046b6, (q31_t)0x15cf8196, (q31_t)0x81df347b,\n  (q31_t)0x15c95097, (q31_t)0x81de228d, (q31_t)0x15c31f89, (q31_t)0x81dd10ee, (q31_t)0x15bcee6f, (q31_t)0x81dbff9c, (q31_t)0x15b6bd47, (q31_t)0x81daee98,\n  (q31_t)0x15b08c12, (q31_t)0x81d9dde1, (q31_t)0x15aa5acf, (q31_t)0x81d8cd79, (q31_t)0x15a4297f, (q31_t)0x81d7bd5e, (q31_t)0x159df821, (q31_t)0x81d6ad92,\n  (q31_t)0x1597c6b7, (q31_t)0x81d59e13, (q31_t)0x1591953e, (q31_t)0x81d48ee1, (q31_t)0x158b63b9, (q31_t)0x81d37ffe, (q31_t)0x15853226, (q31_t)0x81d27169,\n  (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x1578ced9, (q31_t)0x81d05527, (q31_t)0x15729d1f, (q31_t)0x81cf477b, (q31_t)0x156c6b57, (q31_t)0x81ce3a1d,\n  (q31_t)0x15663982, (q31_t)0x81cd2d0c, (q31_t)0x156007a0, (q31_t)0x81cc204a, (q31_t)0x1559d5b1, (q31_t)0x81cb13d5, (q31_t)0x1553a3b4, (q31_t)0x81ca07af,\n  (q31_t)0x154d71aa, (q31_t)0x81c8fbd6, (q31_t)0x15473f94, (q31_t)0x81c7f04b, (q31_t)0x15410d70, (q31_t)0x81c6e50d, (q31_t)0x153adb3f, (q31_t)0x81c5da1e,\n  (q31_t)0x1534a901, (q31_t)0x81c4cf7d, (q31_t)0x152e76b5, (q31_t)0x81c3c529, (q31_t)0x1528445d, (q31_t)0x81c2bb23, (q31_t)0x152211f8, (q31_t)0x81c1b16b,\n  (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x1515ad06, (q31_t)0x81bf9ee5, (q31_t)0x150f7a7a, (q31_t)0x81be9617, (q31_t)0x150947e1, (q31_t)0x81bd8d97,\n  (q31_t)0x1503153a, (q31_t)0x81bc8564, (q31_t)0x14fce287, (q31_t)0x81bb7d7f, (q31_t)0x14f6afc7, (q31_t)0x81ba75e9, (q31_t)0x14f07cf9, (q31_t)0x81b96ea0,\n  (q31_t)0x14ea4a1f, (q31_t)0x81b867a5, (q31_t)0x14e41738, (q31_t)0x81b760f8, (q31_t)0x14dde445, (q31_t)0x81b65a99, (q31_t)0x14d7b144, (q31_t)0x81b55488,\n  (q31_t)0x14d17e36, (q31_t)0x81b44ec4, (q31_t)0x14cb4b1c, (q31_t)0x81b3494f, (q31_t)0x14c517f4, (q31_t)0x81b24427, (q31_t)0x14bee4c0, (q31_t)0x81b13f4e,\n  (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, (q31_t)0x14b27e32, (q31_t)0x81af3684, (q31_t)0x14ac4ad7, (q31_t)0x81ae3294, (q31_t)0x14a61770, (q31_t)0x81ad2ef2,\n  (q31_t)0x149fe3fc, (q31_t)0x81ac2b9e, (q31_t)0x1499b07c, (q31_t)0x81ab2898, (q31_t)0x14937cee, (q31_t)0x81aa25e0, (q31_t)0x148d4954, (q31_t)0x81a92376,\n  (q31_t)0x148715ae, (q31_t)0x81a82159, (q31_t)0x1480e1fa, (q31_t)0x81a71f8b, (q31_t)0x147aae3a, (q31_t)0x81a61e0b, (q31_t)0x14747a6d, (q31_t)0x81a51cd8,\n  (q31_t)0x146e4694, (q31_t)0x81a41bf4, (q31_t)0x146812ae, (q31_t)0x81a31b5d, (q31_t)0x1461debc, (q31_t)0x81a21b14, (q31_t)0x145baabd, (q31_t)0x81a11b1a,\n  (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x144f4299, (q31_t)0x819f1c0e, (q31_t)0x14490e74, (q31_t)0x819e1cfd, (q31_t)0x1442da43, (q31_t)0x819d1e3a,\n  (q31_t)0x143ca605, (q31_t)0x819c1fc5, (q31_t)0x143671bb, (q31_t)0x819b219e, (q31_t)0x14303d65, (q31_t)0x819a23c5, (q31_t)0x142a0902, (q31_t)0x8199263a,\n  (q31_t)0x1423d492, (q31_t)0x819828fd, (q31_t)0x141da016, (q31_t)0x81972c0e, (q31_t)0x14176b8e, (q31_t)0x81962f6d, (q31_t)0x141136f9, (q31_t)0x8195331a,\n  (q31_t)0x140b0258, (q31_t)0x81943715, (q31_t)0x1404cdaa, (q31_t)0x81933b5e, (q31_t)0x13fe98f1, (q31_t)0x81923ff4, (q31_t)0x13f8642a, (q31_t)0x819144d9,\n  (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x13ebfa79, (q31_t)0x818f4f8d, (q31_t)0x13e5c58e, (q31_t)0x818e555c, (q31_t)0x13df9097, (q31_t)0x818d5b78,\n  (q31_t)0x13d95b93, (q31_t)0x818c61e3, (q31_t)0x13d32683, (q31_t)0x818b689c, (q31_t)0x13ccf167, (q31_t)0x818a6fa3, (q31_t)0x13c6bc3f, (q31_t)0x818976f8,\n  (q31_t)0x13c0870a, (q31_t)0x81887e9a, (q31_t)0x13ba51ca, (q31_t)0x8187868b, (q31_t)0x13b41c7d, (q31_t)0x81868eca, (q31_t)0x13ade724, (q31_t)0x81859757,\n  (q31_t)0x13a7b1bf, (q31_t)0x8184a032, (q31_t)0x13a17c4d, (q31_t)0x8183a95b, (q31_t)0x139b46d0, (q31_t)0x8182b2d1, (q31_t)0x13951146, (q31_t)0x8181bc96,\n  (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x1388a60f, (q31_t)0x817fd10a, (q31_t)0x13827062, (q31_t)0x817edbb9, (q31_t)0x137c3aa8, (q31_t)0x817de6b6,\n  (q31_t)0x137604e2, (q31_t)0x817cf201, (q31_t)0x136fcf10, (q31_t)0x817bfd9b, (q31_t)0x13699933, (q31_t)0x817b0982, (q31_t)0x13636349, (q31_t)0x817a15b7,\n  (q31_t)0x135d2d53, (q31_t)0x8179223a, (q31_t)0x1356f752, (q31_t)0x81782f0b, (q31_t)0x1350c144, (q31_t)0x81773c2b, (q31_t)0x134a8b2b, (q31_t)0x81764998,\n  (q31_t)0x13445505, (q31_t)0x81755754, (q31_t)0x133e1ed4, (q31_t)0x8174655d, (q31_t)0x1337e897, (q31_t)0x817373b5, (q31_t)0x1331b24e, (q31_t)0x8172825a,\n  (q31_t)0x132b7bf9, (q31_t)0x8171914e, (q31_t)0x13254599, (q31_t)0x8170a090, (q31_t)0x131f0f2c, (q31_t)0x816fb020, (q31_t)0x1318d8b4, (q31_t)0x816ebffe,\n  (q31_t)0x1312a230, (q31_t)0x816dd02a, (q31_t)0x130c6ba0, (q31_t)0x816ce0a4, (q31_t)0x13063505, (q31_t)0x816bf16c, (q31_t)0x12fffe5d, (q31_t)0x816b0282,\n  (q31_t)0x12f9c7aa, (q31_t)0x816a13e6, (q31_t)0x12f390ec, (q31_t)0x81692599, (q31_t)0x12ed5a21, (q31_t)0x81683799, (q31_t)0x12e7234b, (q31_t)0x816749e8,\n  (q31_t)0x12e0ec6a, (q31_t)0x81665c84, (q31_t)0x12dab57c, (q31_t)0x81656f6f, (q31_t)0x12d47e83, (q31_t)0x816482a8, (q31_t)0x12ce477f, (q31_t)0x8163962f,\n  (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x12c1d953, (q31_t)0x8161be27, (q31_t)0x12bba22b, (q31_t)0x8160d298, (q31_t)0x12b56af9, (q31_t)0x815fe758,\n  (q31_t)0x12af33ba, (q31_t)0x815efc65, (q31_t)0x12a8fc70, (q31_t)0x815e11c1, (q31_t)0x12a2c51b, (q31_t)0x815d276a, (q31_t)0x129c8dba, (q31_t)0x815c3d62,\n  (q31_t)0x1296564d, (q31_t)0x815b53a8, (q31_t)0x12901ed5, (q31_t)0x815a6a3c, (q31_t)0x1289e752, (q31_t)0x8159811e, (q31_t)0x1283afc3, (q31_t)0x8158984e,\n  (q31_t)0x127d7829, (q31_t)0x8157afcd, (q31_t)0x12774083, (q31_t)0x8156c799, (q31_t)0x127108d2, (q31_t)0x8155dfb4, (q31_t)0x126ad116, (q31_t)0x8154f81d,\n  (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x125e617b, (q31_t)0x815329d9, (q31_t)0x1258299c, (q31_t)0x8152432c, (q31_t)0x1251f1b3, (q31_t)0x81515ccd,\n  (q31_t)0x124bb9be, (q31_t)0x815076bd, (q31_t)0x124581bd, (q31_t)0x814f90fb, (q31_t)0x123f49b2, (q31_t)0x814eab86, (q31_t)0x1239119b, (q31_t)0x814dc660,\n  (q31_t)0x1232d979, (q31_t)0x814ce188, (q31_t)0x122ca14b, (q31_t)0x814bfcff, (q31_t)0x12266913, (q31_t)0x814b18c3, (q31_t)0x122030cf, (q31_t)0x814a34d6,\n  (q31_t)0x1219f880, (q31_t)0x81495136, (q31_t)0x1213c026, (q31_t)0x81486de5, (q31_t)0x120d87c1, (q31_t)0x81478ae2, (q31_t)0x12074f50, (q31_t)0x8146a82e,\n  (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x11fade4e, (q31_t)0x8144e3ae, (q31_t)0x11f4a5bd, (q31_t)0x814401e4, (q31_t)0x11ee6d20, (q31_t)0x81432068,\n  (q31_t)0x11e83478, (q31_t)0x81423f3a, (q31_t)0x11e1fbc5, (q31_t)0x81415e5a, (q31_t)0x11dbc307, (q31_t)0x81407dc9, (q31_t)0x11d58a3e, (q31_t)0x813f9d86,\n  (q31_t)0x11cf516a, (q31_t)0x813ebd90, (q31_t)0x11c9188b, (q31_t)0x813ddde9, (q31_t)0x11c2dfa2, (q31_t)0x813cfe91, (q31_t)0x11bca6ad, (q31_t)0x813c1f86,\n  (q31_t)0x11b66dad, (q31_t)0x813b40ca, (q31_t)0x11b034a2, (q31_t)0x813a625b, (q31_t)0x11a9fb8d, (q31_t)0x8139843b, (q31_t)0x11a3c26c, (q31_t)0x8138a66a,\n  (q31_t)0x119d8941, (q31_t)0x8137c8e6, (q31_t)0x1197500a, (q31_t)0x8136ebb1, (q31_t)0x119116c9, (q31_t)0x81360ec9, (q31_t)0x118add7d, (q31_t)0x81353230,\n  (q31_t)0x1184a427, (q31_t)0x813455e6, (q31_t)0x117e6ac5, (q31_t)0x813379e9, (q31_t)0x11783159, (q31_t)0x81329e3b, (q31_t)0x1171f7e2, (q31_t)0x8131c2db,\n  (q31_t)0x116bbe60, (q31_t)0x8130e7c9, (q31_t)0x116584d3, (q31_t)0x81300d05, (q31_t)0x115f4b3c, (q31_t)0x812f3290, (q31_t)0x1159119a, (q31_t)0x812e5868,\n  (q31_t)0x1152d7ed, (q31_t)0x812d7e8f, (q31_t)0x114c9e35, (q31_t)0x812ca505, (q31_t)0x11466473, (q31_t)0x812bcbc8, (q31_t)0x11402aa6, (q31_t)0x812af2da,\n  (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x1133b6ed, (q31_t)0x812941e8, (q31_t)0x112d7d00, (q31_t)0x812869e4, (q31_t)0x11274309, (q31_t)0x8127922f,\n  (q31_t)0x11210907, (q31_t)0x8126bac8, (q31_t)0x111acefb, (q31_t)0x8125e3af, (q31_t)0x111494e4, (q31_t)0x81250ce4, (q31_t)0x110e5ac2, (q31_t)0x81243668,\n  (q31_t)0x11082096, (q31_t)0x8123603a, (q31_t)0x1101e65f, (q31_t)0x81228a5a, (q31_t)0x10fbac1e, (q31_t)0x8121b4c8, (q31_t)0x10f571d3, (q31_t)0x8120df85,\n  (q31_t)0x10ef377d, (q31_t)0x81200a90, (q31_t)0x10e8fd1c, (q31_t)0x811f35e9, (q31_t)0x10e2c2b2, (q31_t)0x811e6191, (q31_t)0x10dc883c, (q31_t)0x811d8d86,\n  (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x10d01333, (q31_t)0x811be65d, (q31_t)0x10c9d89e, (q31_t)0x811b133d, (q31_t)0x10c39dff, (q31_t)0x811a406c,\n  (q31_t)0x10bd6356, (q31_t)0x81196de9, (q31_t)0x10b728a3, (q31_t)0x81189bb4, (q31_t)0x10b0ede5, (q31_t)0x8117c9ce, (q31_t)0x10aab31d, (q31_t)0x8116f836,\n  (q31_t)0x10a4784b, (q31_t)0x811626ec, (q31_t)0x109e3d6e, (q31_t)0x811555f1, (q31_t)0x10980287, (q31_t)0x81148544, (q31_t)0x1091c796, (q31_t)0x8113b4e5,\n  (q31_t)0x108b8c9b, (q31_t)0x8112e4d4, (q31_t)0x10855195, (q31_t)0x81121512, (q31_t)0x107f1686, (q31_t)0x8111459e, (q31_t)0x1078db6c, (q31_t)0x81107678,\n  (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x106c651a, (q31_t)0x810ed917, (q31_t)0x106629e1, (q31_t)0x810e0adc, (q31_t)0x105fee9f, (q31_t)0x810d3cf0,\n  (q31_t)0x1059b352, (q31_t)0x810c6f52, (q31_t)0x105377fc, (q31_t)0x810ba202, (q31_t)0x104d3c9b, (q31_t)0x810ad500, (q31_t)0x10470130, (q31_t)0x810a084d,\n  (q31_t)0x1040c5bb, (q31_t)0x81093be8, (q31_t)0x103a8a3d, (q31_t)0x81086fd1, (q31_t)0x10344eb4, (q31_t)0x8107a409, (q31_t)0x102e1321, (q31_t)0x8106d88f,\n  (q31_t)0x1027d784, (q31_t)0x81060d63, (q31_t)0x10219bdd, (q31_t)0x81054286, (q31_t)0x101b602d, (q31_t)0x810477f7, (q31_t)0x10152472, (q31_t)0x8103adb6,\n  (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, (q31_t)0x1008acdf, (q31_t)0x81021a20, (q31_t)0x10027107, (q31_t)0x810150ca, (q31_t)0xffc3524, (q31_t)0x810087c3,\n  (q31_t)0xff5f938, (q31_t)0x80ffbf0a, (q31_t)0xfefbd42, (q31_t)0x80fef69f, (q31_t)0xfe98143, (q31_t)0x80fe2e83, (q31_t)0xfe34539, (q31_t)0x80fd66b5,\n  (q31_t)0xfdd0926, (q31_t)0x80fc9f35, (q31_t)0xfd6cd08, (q31_t)0x80fbd804, (q31_t)0xfd090e1, (q31_t)0x80fb1121, (q31_t)0xfca54b1, (q31_t)0x80fa4a8c,\n  (q31_t)0xfc41876, (q31_t)0x80f98446, (q31_t)0xfbddc32, (q31_t)0x80f8be4e, (q31_t)0xfb79fe4, (q31_t)0x80f7f8a4, (q31_t)0xfb1638d, (q31_t)0x80f73349,\n  (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xfa4eac0, (q31_t)0x80f5a97e, (q31_t)0xf9eae4c, (q31_t)0x80f4e50e, (q31_t)0xf9871ce, (q31_t)0x80f420ec,\n  (q31_t)0xf923546, (q31_t)0x80f35d19, (q31_t)0xf8bf8b4, (q31_t)0x80f29994, (q31_t)0xf85bc19, (q31_t)0x80f1d65d, (q31_t)0xf7f7f75, (q31_t)0x80f11375,\n  (q31_t)0xf7942c7, (q31_t)0x80f050db, (q31_t)0xf73060f, (q31_t)0x80ef8e90, (q31_t)0xf6cc94e, (q31_t)0x80eecc93, (q31_t)0xf668c83, (q31_t)0x80ee0ae4,\n  (q31_t)0xf604faf, (q31_t)0x80ed4984, (q31_t)0xf5a12d1, (q31_t)0x80ec8872, (q31_t)0xf53d5ea, (q31_t)0x80ebc7ae, (q31_t)0xf4d98f9, (q31_t)0x80eb0739,\n  (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xf411efb, (q31_t)0x80e9873a, (q31_t)0xf3ae1ee, (q31_t)0x80e8c7b0, (q31_t)0xf34a4d8, (q31_t)0x80e80874,\n  (q31_t)0xf2e67b8, (q31_t)0x80e74987, (q31_t)0xf282a8f, (q31_t)0x80e68ae8, (q31_t)0xf21ed5d, (q31_t)0x80e5cc98, (q31_t)0xf1bb021, (q31_t)0x80e50e96,\n  (q31_t)0xf1572dc, (q31_t)0x80e450e2, (q31_t)0xf0f358e, (q31_t)0x80e3937d, (q31_t)0xf08f836, (q31_t)0x80e2d666, (q31_t)0xf02bad5, (q31_t)0x80e2199e,\n  (q31_t)0xefc7d6b, (q31_t)0x80e15d24, (q31_t)0xef63ff7, (q31_t)0x80e0a0f8, (q31_t)0xef0027b, (q31_t)0x80dfe51b, (q31_t)0xee9c4f5, (q31_t)0x80df298c,\n  (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xedd49ce, (q31_t)0x80ddb35a, (q31_t)0xed70c2c, (q31_t)0x80dcf8b7, (q31_t)0xed0ce82, (q31_t)0x80dc3e62,\n  (q31_t)0xeca90ce, (q31_t)0x80db845b, (q31_t)0xec45311, (q31_t)0x80dacaa3, (q31_t)0xebe154b, (q31_t)0x80da1139, (q31_t)0xeb7d77c, (q31_t)0x80d9581e,\n  (q31_t)0xeb199a4, (q31_t)0x80d89f51, (q31_t)0xeab5bc3, (q31_t)0x80d7e6d3, (q31_t)0xea51dd8, (q31_t)0x80d72ea3, (q31_t)0xe9edfe5, (q31_t)0x80d676c1,\n  (q31_t)0xe98a1e9, (q31_t)0x80d5bf2e, (q31_t)0xe9263e3, (q31_t)0x80d507e9, (q31_t)0xe8c25d5, (q31_t)0x80d450f3, (q31_t)0xe85e7be, (q31_t)0x80d39a4b,\n  (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, (q31_t)0xe796b74, (q31_t)0x80d22de7, (q31_t)0xe732d42, (q31_t)0x80d1782a, (q31_t)0xe6cef07, (q31_t)0x80d0c2bc,\n  (q31_t)0xe66b0c3, (q31_t)0x80d00d9d, (q31_t)0xe607277, (q31_t)0x80cf58cc, (q31_t)0xe5a3421, (q31_t)0x80cea449, (q31_t)0xe53f5c2, (q31_t)0x80cdf015,\n  (q31_t)0xe4db75b, (q31_t)0x80cd3c2f, (q31_t)0xe4778eb, (q31_t)0x80cc8898, (q31_t)0xe413a72, (q31_t)0x80cbd54f, (q31_t)0xe3afbf0, (q31_t)0x80cb2255,\n  (q31_t)0xe34bd66, (q31_t)0x80ca6fa9, (q31_t)0xe2e7ed2, (q31_t)0x80c9bd4c, (q31_t)0xe284036, (q31_t)0x80c90b3d, (q31_t)0xe220191, (q31_t)0x80c8597c,\n  (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xe15842e, (q31_t)0x80c6f6e7, (q31_t)0xe0f456f, (q31_t)0x80c64612, (q31_t)0xe0906a7, (q31_t)0x80c5958b,\n  (q31_t)0xe02c7d7, (q31_t)0x80c4e553, (q31_t)0xdfc88fe, (q31_t)0x80c4356a, (q31_t)0xdf64a1c, (q31_t)0x80c385cf, (q31_t)0xdf00b32, (q31_t)0x80c2d682,\n  (q31_t)0xde9cc40, (q31_t)0x80c22784, (q31_t)0xde38d44, (q31_t)0x80c178d4, (q31_t)0xddd4e40, (q31_t)0x80c0ca73, (q31_t)0xdd70f34, (q31_t)0x80c01c60,\n  (q31_t)0xdd0d01f, (q31_t)0x80bf6e9c, (q31_t)0xdca9102, (q31_t)0x80bec127, (q31_t)0xdc451dc, (q31_t)0x80be13ff, (q31_t)0xdbe12ad, (q31_t)0x80bd6727,\n  (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xdb19437, (q31_t)0x80bc0e61, (q31_t)0xdab54ef, (q31_t)0x80bb6274, (q31_t)0xda5159f, (q31_t)0x80bab6d5,\n  (q31_t)0xd9ed646, (q31_t)0x80ba0b85, (q31_t)0xd9896e5, (q31_t)0x80b96083, (q31_t)0xd92577b, (q31_t)0x80b8b5d0, (q31_t)0xd8c1809, (q31_t)0x80b80b6c,\n  (q31_t)0xd85d88f, (q31_t)0x80b76156, (q31_t)0xd7f990c, (q31_t)0x80b6b78e, (q31_t)0xd795982, (q31_t)0x80b60e15, (q31_t)0xd7319ee, (q31_t)0x80b564ea,\n  (q31_t)0xd6cda53, (q31_t)0x80b4bc0e, (q31_t)0xd669aaf, (q31_t)0x80b41381, (q31_t)0xd605b03, (q31_t)0x80b36b42, (q31_t)0xd5a1b4f, (q31_t)0x80b2c351,\n  (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xd4d9bcd, (q31_t)0x80b1745c, (q31_t)0xd475c00, (q31_t)0x80b0cd57, (q31_t)0xd411c2b, (q31_t)0x80b026a1,\n  (q31_t)0xd3adc4e, (q31_t)0x80af8039, (q31_t)0xd349c68, (q31_t)0x80aeda20, (q31_t)0xd2e5c7b, (q31_t)0x80ae3455, (q31_t)0xd281c85, (q31_t)0x80ad8ed9,\n  (q31_t)0xd21dc87, (q31_t)0x80ace9ab, (q31_t)0xd1b9c81, (q31_t)0x80ac44cc, (q31_t)0xd155c73, (q31_t)0x80aba03b, (q31_t)0xd0f1c5d, (q31_t)0x80aafbf9,\n  (q31_t)0xd08dc3f, (q31_t)0x80aa5806, (q31_t)0xd029c18, (q31_t)0x80a9b461, (q31_t)0xcfc5bea, (q31_t)0x80a9110b, (q31_t)0xcf61bb4, (q31_t)0x80a86e03,\n  (q31_t)0xcefdb76, (q31_t)0x80a7cb49, (q31_t)0xce99b2f, (q31_t)0x80a728df, (q31_t)0xce35ae1, (q31_t)0x80a686c2, (q31_t)0xcdd1a8b, (q31_t)0x80a5e4f5,\n  (q31_t)0xcd6da2d, (q31_t)0x80a54376, (q31_t)0xcd099c7, (q31_t)0x80a4a245, (q31_t)0xcca5959, (q31_t)0x80a40163, (q31_t)0xcc418e3, (q31_t)0x80a360d0,\n  (q31_t)0xcbdd865, (q31_t)0x80a2c08b, (q31_t)0xcb797e0, (q31_t)0x80a22095, (q31_t)0xcb15752, (q31_t)0x80a180ed, (q31_t)0xcab16bd, (q31_t)0x80a0e194,\n  (q31_t)0xca4d620, (q31_t)0x80a04289, (q31_t)0xc9e957b, (q31_t)0x809fa3cd, (q31_t)0xc9854cf, (q31_t)0x809f0560, (q31_t)0xc92141a, (q31_t)0x809e6741,\n  (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc85929a, (q31_t)0x809d2bef, (q31_t)0xc7f51cf, (q31_t)0x809c8ebc, (q31_t)0xc7910fb, (q31_t)0x809bf1d7,\n  (q31_t)0xc72d020, (q31_t)0x809b5541, (q31_t)0xc6c8f3e, (q31_t)0x809ab8fa, (q31_t)0xc664e53, (q31_t)0x809a1d01, (q31_t)0xc600d61, (q31_t)0x80998157,\n  (q31_t)0xc59cc68, (q31_t)0x8098e5fb, (q31_t)0xc538b66, (q31_t)0x80984aee, (q31_t)0xc4d4a5d, (q31_t)0x8097b030, (q31_t)0xc47094d, (q31_t)0x809715c0,\n  (q31_t)0xc40c835, (q31_t)0x80967b9f, (q31_t)0xc3a8715, (q31_t)0x8095e1cc, (q31_t)0xc3445ee, (q31_t)0x80954848, (q31_t)0xc2e04c0, (q31_t)0x8094af13,\n  (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xc21824c, (q31_t)0x80937d93, (q31_t)0xc1b4107, (q31_t)0x8092e54a, (q31_t)0xc14ffba, (q31_t)0x80924d4f,\n  (q31_t)0xc0ebe66, (q31_t)0x8091b5a2, (q31_t)0xc087d0a, (q31_t)0x80911e44, (q31_t)0xc023ba7, (q31_t)0x80908735, (q31_t)0xbfbfa3d, (q31_t)0x808ff074,\n  (q31_t)0xbf5b8cb, (q31_t)0x808f5a02, (q31_t)0xbef7752, (q31_t)0x808ec3df, (q31_t)0xbe935d2, (q31_t)0x808e2e0a, (q31_t)0xbe2f44a, (q31_t)0x808d9884,\n  (q31_t)0xbdcb2bb, (q31_t)0x808d034c, (q31_t)0xbd67124, (q31_t)0x808c6e63, (q31_t)0xbd02f87, (q31_t)0x808bd9c9, (q31_t)0xbc9ede2, (q31_t)0x808b457d,\n  (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xbbd6a82, (q31_t)0x808a1dd2, (q31_t)0xbb728c7, (q31_t)0x80898a72, (q31_t)0xbb0e705, (q31_t)0x8088f761,\n  (q31_t)0xbaaa53b, (q31_t)0x8088649e, (q31_t)0xba4636b, (q31_t)0x8087d22a, (q31_t)0xb9e2193, (q31_t)0x80874005, (q31_t)0xb97dfb5, (q31_t)0x8086ae2e,\n  (q31_t)0xb919dcf, (q31_t)0x80861ca6, (q31_t)0xb8b5be1, (q31_t)0x80858b6c, (q31_t)0xb8519ed, (q31_t)0x8084fa82, (q31_t)0xb7ed7f2, (q31_t)0x808469e5,\n  (q31_t)0xb7895f0, (q31_t)0x8083d998, (q31_t)0xb7253e6, (q31_t)0x80834999, (q31_t)0xb6c11d5, (q31_t)0x8082b9e9, (q31_t)0xb65cfbe, (q31_t)0x80822a87,\n  (q31_t)0xb5f8d9f, (q31_t)0x80819b74, (q31_t)0xb594b7a, (q31_t)0x80810cb0, (q31_t)0xb53094d, (q31_t)0x80807e3a, (q31_t)0xb4cc719, (q31_t)0x807ff013,\n  (q31_t)0xb4684df, (q31_t)0x807f623b, (q31_t)0xb40429d, (q31_t)0x807ed4b1, (q31_t)0xb3a0055, (q31_t)0x807e4776, (q31_t)0xb33be05, (q31_t)0x807dba89,\n  (q31_t)0xb2d7baf, (q31_t)0x807d2dec, (q31_t)0xb273952, (q31_t)0x807ca19c, (q31_t)0xb20f6ee, (q31_t)0x807c159c, (q31_t)0xb1ab483, (q31_t)0x807b89ea,\n  (q31_t)0xb147211, (q31_t)0x807afe87, (q31_t)0xb0e2f98, (q31_t)0x807a7373, (q31_t)0xb07ed19, (q31_t)0x8079e8ad, (q31_t)0xb01aa92, (q31_t)0x80795e36,\n  (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xaf52571, (q31_t)0x80784a33, (q31_t)0xaeee2d7, (q31_t)0x8077c0a8, (q31_t)0xae8a036, (q31_t)0x8077376c,\n  (q31_t)0xae25d8d, (q31_t)0x8076ae7e, (q31_t)0xadc1adf, (q31_t)0x807625df, (q31_t)0xad5d829, (q31_t)0x80759d8e, (q31_t)0xacf956d, (q31_t)0x8075158c,\n  (q31_t)0xac952aa, (q31_t)0x80748dd9, (q31_t)0xac30fe1, (q31_t)0x80740675, (q31_t)0xabccd11, (q31_t)0x80737f5f, (q31_t)0xab68a3a, (q31_t)0x8072f898,\n  (q31_t)0xab0475c, (q31_t)0x8072721f, (q31_t)0xaaa0478, (q31_t)0x8071ebf6, (q31_t)0xaa3c18e, (q31_t)0x8071661a, (q31_t)0xa9d7e9d, (q31_t)0x8070e08e,\n  (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa90f8a7, (q31_t)0x806fd661, (q31_t)0xa8ab5a2, (q31_t)0x806f51c1, (q31_t)0xa847297, (q31_t)0x806ecd6f,\n  (q31_t)0xa7e2f85, (q31_t)0x806e496c, (q31_t)0xa77ec6d, (q31_t)0x806dc5b8, (q31_t)0xa71a94f, (q31_t)0x806d4253, (q31_t)0xa6b662a, (q31_t)0x806cbf3c,\n  (q31_t)0xa6522fe, (q31_t)0x806c3c74, (q31_t)0xa5edfcc, (q31_t)0x806bb9fa, (q31_t)0xa589c94, (q31_t)0x806b37cf, (q31_t)0xa525955, (q31_t)0x806ab5f3,\n  (q31_t)0xa4c1610, (q31_t)0x806a3466, (q31_t)0xa45d2c5, (q31_t)0x8069b327, (q31_t)0xa3f8f73, (q31_t)0x80693237, (q31_t)0xa394c1b, (q31_t)0x8068b196,\n  (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0xa2cc558, (q31_t)0x8067b13f, (q31_t)0xa2681ed, (q31_t)0x8067318a, (q31_t)0xa203e7c, (q31_t)0x8066b224,\n  (q31_t)0xa19fb04, (q31_t)0x8066330c, (q31_t)0xa13b787, (q31_t)0x8065b443, (q31_t)0xa0d7403, (q31_t)0x806535c9, (q31_t)0xa073079, (q31_t)0x8064b79d,\n  (q31_t)0xa00ece8, (q31_t)0x806439c0, (q31_t)0x9faa952, (q31_t)0x8063bc32, (q31_t)0x9f465b5, (q31_t)0x80633ef3, (q31_t)0x9ee2213, (q31_t)0x8062c202,\n  (q31_t)0x9e7de6a, (q31_t)0x80624560, (q31_t)0x9e19abb, (q31_t)0x8061c90c, (q31_t)0x9db5706, (q31_t)0x80614d08, (q31_t)0x9d5134b, (q31_t)0x8060d152,\n  (q31_t)0x9cecf89, (q31_t)0x806055eb, (q31_t)0x9c88bc2, (q31_t)0x805fdad2, (q31_t)0x9c247f5, (q31_t)0x805f6009, (q31_t)0x9bc0421, (q31_t)0x805ee58e,\n  (q31_t)0x9b5c048, (q31_t)0x805e6b62, (q31_t)0x9af7c69, (q31_t)0x805df184, (q31_t)0x9a93884, (q31_t)0x805d77f5, (q31_t)0x9a2f498, (q31_t)0x805cfeb5,\n  (q31_t)0x99cb0a7, (q31_t)0x805c85c4, (q31_t)0x9966cb0, (q31_t)0x805c0d21, (q31_t)0x99028b3, (q31_t)0x805b94ce, (q31_t)0x989e4b0, (q31_t)0x805b1cc8,\n  (q31_t)0x983a0a7, (q31_t)0x805aa512, (q31_t)0x97d5c99, (q31_t)0x805a2daa, (q31_t)0x9771884, (q31_t)0x8059b692, (q31_t)0x970d46a, (q31_t)0x80593fc7,\n  (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9644c23, (q31_t)0x8058531f, (q31_t)0x95e07f8, (q31_t)0x8057dd41, (q31_t)0x957c3c6, (q31_t)0x805767b2,\n  (q31_t)0x9517f8f, (q31_t)0x8056f272, (q31_t)0x94b3b52, (q31_t)0x80567d80, (q31_t)0x944f70f, (q31_t)0x805608dd, (q31_t)0x93eb2c6, (q31_t)0x80559489,\n  (q31_t)0x9386e78, (q31_t)0x80552084, (q31_t)0x9322a24, (q31_t)0x8054accd, (q31_t)0x92be5ca, (q31_t)0x80543965, (q31_t)0x925a16b, (q31_t)0x8053c64c,\n  (q31_t)0x91f5d06, (q31_t)0x80535381, (q31_t)0x919189c, (q31_t)0x8052e106, (q31_t)0x912d42c, (q31_t)0x80526ed9, (q31_t)0x90c8fb6, (q31_t)0x8051fcfb,\n  (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x90006ba, (q31_t)0x80511a2b, (q31_t)0x8f9c233, (q31_t)0x8050a939, (q31_t)0x8f37da7, (q31_t)0x80503896,\n  (q31_t)0x8ed3916, (q31_t)0x804fc841, (q31_t)0x8e6f47f, (q31_t)0x804f583c, (q31_t)0x8e0afe2, (q31_t)0x804ee885, (q31_t)0x8da6b40, (q31_t)0x804e791d,\n  (q31_t)0x8d42699, (q31_t)0x804e0a04, (q31_t)0x8cde1ec, (q31_t)0x804d9b39, (q31_t)0x8c79d3a, (q31_t)0x804d2cbd, (q31_t)0x8c15882, (q31_t)0x804cbe90,\n  (q31_t)0x8bb13c5, (q31_t)0x804c50b2, (q31_t)0x8b4cf02, (q31_t)0x804be323, (q31_t)0x8ae8a3a, (q31_t)0x804b75e2, (q31_t)0x8a8456d, (q31_t)0x804b08f0,\n  (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x89bbbc3, (q31_t)0x804a2ff9, (q31_t)0x89576e5, (q31_t)0x8049c3f3, (q31_t)0x88f3203, (q31_t)0x8049583d,\n  (q31_t)0x888ed1b, (q31_t)0x8048ecd5, (q31_t)0x882a82e, (q31_t)0x804881bb, (q31_t)0x87c633c, (q31_t)0x804816f1, (q31_t)0x8761e44, (q31_t)0x8047ac75,\n  (q31_t)0x86fd947, (q31_t)0x80474248, (q31_t)0x8699445, (q31_t)0x8046d86a, (q31_t)0x8634f3e, (q31_t)0x80466edb, (q31_t)0x85d0a32, (q31_t)0x8046059b,\n  (q31_t)0x856c520, (q31_t)0x80459ca9, (q31_t)0x850800a, (q31_t)0x80453406, (q31_t)0x84a3aee, (q31_t)0x8044cbb2, (q31_t)0x843f5cd, (q31_t)0x804463ad,\n  (q31_t)0x83db0a7, (q31_t)0x8043fbf6, (q31_t)0x8376b7c, (q31_t)0x8043948e, (q31_t)0x831264c, (q31_t)0x80432d75, (q31_t)0x82ae117, (q31_t)0x8042c6ab,\n  (q31_t)0x8249bdd, (q31_t)0x80426030, (q31_t)0x81e569d, (q31_t)0x8041fa03, (q31_t)0x8181159, (q31_t)0x80419425, (q31_t)0x811cc10, (q31_t)0x80412e96,\n  (q31_t)0x80b86c2, (q31_t)0x8040c956, (q31_t)0x805416e, (q31_t)0x80406465, (q31_t)0x7fefc16, (q31_t)0x803fffc2, (q31_t)0x7f8b6b9, (q31_t)0x803f9b6f,\n  (q31_t)0x7f27157, (q31_t)0x803f376a, (q31_t)0x7ec2bf0, (q31_t)0x803ed3b3, (q31_t)0x7e5e685, (q31_t)0x803e704c, (q31_t)0x7dfa114, (q31_t)0x803e0d34,\n  (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x7d31624, (q31_t)0x803d47ef, (q31_t)0x7ccd0a5, (q31_t)0x803ce5c3, (q31_t)0x7c68b21, (q31_t)0x803c83e5,\n  (q31_t)0x7c04598, (q31_t)0x803c2257, (q31_t)0x7ba000b, (q31_t)0x803bc117, (q31_t)0x7b3ba78, (q31_t)0x803b6026, (q31_t)0x7ad74e1, (q31_t)0x803aff84,\n  (q31_t)0x7a72f45, (q31_t)0x803a9f31, (q31_t)0x7a0e9a5, (q31_t)0x803a3f2d, (q31_t)0x79aa400, (q31_t)0x8039df77, (q31_t)0x7945e56, (q31_t)0x80398010,\n  (q31_t)0x78e18a7, (q31_t)0x803920f8, (q31_t)0x787d2f4, (q31_t)0x8038c22f, (q31_t)0x7818d3c, (q31_t)0x803863b5, (q31_t)0x77b4780, (q31_t)0x80380589,\n  (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x76ebbf9, (q31_t)0x80374a1f, (q31_t)0x768762e, (q31_t)0x8036ece0, (q31_t)0x762305f, (q31_t)0x80368fef,\n  (q31_t)0x75bea8c, (q31_t)0x8036334e, (q31_t)0x755a4b4, (q31_t)0x8035d6fb, (q31_t)0x74f5ed7, (q31_t)0x80357af8, (q31_t)0x74918f6, (q31_t)0x80351f43,\n  (q31_t)0x742d311, (q31_t)0x8034c3dd, (q31_t)0x73c8d27, (q31_t)0x803468c5, (q31_t)0x7364738, (q31_t)0x80340dfd, (q31_t)0x7300145, (q31_t)0x8033b383,\n  (q31_t)0x729bb4e, (q31_t)0x80335959, (q31_t)0x7237552, (q31_t)0x8032ff7d, (q31_t)0x71d2f52, (q31_t)0x8032a5ef, (q31_t)0x716e94e, (q31_t)0x80324cb1,\n  (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x70a5d37, (q31_t)0x80319b21, (q31_t)0x7041726, (q31_t)0x803142cf, (q31_t)0x6fdd110, (q31_t)0x8030eacd,\n  (q31_t)0x6f78af6, (q31_t)0x80309318, (q31_t)0x6f144d7, (q31_t)0x80303bb3, (q31_t)0x6eafeb4, (q31_t)0x802fe49d, (q31_t)0x6e4b88d, (q31_t)0x802f8dd5,\n  (q31_t)0x6de7262, (q31_t)0x802f375d, (q31_t)0x6d82c32, (q31_t)0x802ee133, (q31_t)0x6d1e5fe, (q31_t)0x802e8b58, (q31_t)0x6cb9fc6, (q31_t)0x802e35cb,\n  (q31_t)0x6c5598a, (q31_t)0x802de08e, (q31_t)0x6bf1349, (q31_t)0x802d8ba0, (q31_t)0x6b8cd05, (q31_t)0x802d3700, (q31_t)0x6b286bc, (q31_t)0x802ce2af,\n  (q31_t)0x6ac406f, (q31_t)0x802c8ead, (q31_t)0x6a5fa1e, (q31_t)0x802c3afa, (q31_t)0x69fb3c9, (q31_t)0x802be796, (q31_t)0x6996d70, (q31_t)0x802b9480,\n  (q31_t)0x6932713, (q31_t)0x802b41ba, (q31_t)0x68ce0b2, (q31_t)0x802aef42, (q31_t)0x6869a4c, (q31_t)0x802a9d19, (q31_t)0x68053e3, (q31_t)0x802a4b3f,\n  (q31_t)0x67a0d76, (q31_t)0x8029f9b4, (q31_t)0x673c704, (q31_t)0x8029a878, (q31_t)0x66d808f, (q31_t)0x8029578b, (q31_t)0x6673a16, (q31_t)0x802906ec,\n  (q31_t)0x660f398, (q31_t)0x8028b69c, (q31_t)0x65aad17, (q31_t)0x8028669b, (q31_t)0x6546692, (q31_t)0x802816e9, (q31_t)0x64e2009, (q31_t)0x8027c786,\n  (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x64192eb, (q31_t)0x802729ad, (q31_t)0x63b4c57, (q31_t)0x8026db36, (q31_t)0x63505be, (q31_t)0x80268d0e,\n  (q31_t)0x62ebf22, (q31_t)0x80263f36, (q31_t)0x6287882, (q31_t)0x8025f1ac, (q31_t)0x62231de, (q31_t)0x8025a471, (q31_t)0x61beb36, (q31_t)0x80255784,\n  (q31_t)0x615a48b, (q31_t)0x80250ae7, (q31_t)0x60f5ddc, (q31_t)0x8024be99, (q31_t)0x6091729, (q31_t)0x80247299, (q31_t)0x602d072, (q31_t)0x802426e8,\n  (q31_t)0x5fc89b8, (q31_t)0x8023db86, (q31_t)0x5f642fa, (q31_t)0x80239073, (q31_t)0x5effc38, (q31_t)0x802345af, (q31_t)0x5e9b572, (q31_t)0x8022fb3a,\n  (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x5dd27dd, (q31_t)0x8022673c, (q31_t)0x5d6e10c, (q31_t)0x80221db3, (q31_t)0x5d09a38, (q31_t)0x8021d47a,\n  (q31_t)0x5ca5361, (q31_t)0x80218b8f, (q31_t)0x5c40c86, (q31_t)0x802142f3, (q31_t)0x5bdc5a7, (q31_t)0x8020faa6, (q31_t)0x5b77ec5, (q31_t)0x8020b2a7,\n  (q31_t)0x5b137df, (q31_t)0x80206af8, (q31_t)0x5aaf0f6, (q31_t)0x80202397, (q31_t)0x5a4aa09, (q31_t)0x801fdc86, (q31_t)0x59e6319, (q31_t)0x801f95c3,\n  (q31_t)0x5981c26, (q31_t)0x801f4f4f, (q31_t)0x591d52f, (q31_t)0x801f092a, (q31_t)0x58b8e34, (q31_t)0x801ec354, (q31_t)0x5854736, (q31_t)0x801e7dcd,\n  (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x578b930, (q31_t)0x801df3ab, (q31_t)0x5727228, (q31_t)0x801daf11, (q31_t)0x56c2b1c, (q31_t)0x801d6ac5,\n  (q31_t)0x565e40d, (q31_t)0x801d26c8, (q31_t)0x55f9cfb, (q31_t)0x801ce31a, (q31_t)0x55955e6, (q31_t)0x801c9fbb, (q31_t)0x5530ecd, (q31_t)0x801c5cab,\n  (q31_t)0x54cc7b1, (q31_t)0x801c19ea, (q31_t)0x5468092, (q31_t)0x801bd777, (q31_t)0x540396f, (q31_t)0x801b9554, (q31_t)0x539f249, (q31_t)0x801b537f,\n  (q31_t)0x533ab20, (q31_t)0x801b11fa, (q31_t)0x52d63f4, (q31_t)0x801ad0c3, (q31_t)0x5271cc4, (q31_t)0x801a8fdb, (q31_t)0x520d592, (q31_t)0x801a4f42,\n  (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, (q31_t)0x5144723, (q31_t)0x8019cefd, (q31_t)0x50dffe7, (q31_t)0x80198f50, (q31_t)0x507b8a8, (q31_t)0x80194ff3,\n  (q31_t)0x5017165, (q31_t)0x801910e4, (q31_t)0x4fb2a20, (q31_t)0x8018d225, (q31_t)0x4f4e2d8, (q31_t)0x801893b4, (q31_t)0x4ee9b8c, (q31_t)0x80185592,\n  (q31_t)0x4e8543e, (q31_t)0x801817bf, (q31_t)0x4e20cec, (q31_t)0x8017da3b, (q31_t)0x4dbc597, (q31_t)0x80179d06, (q31_t)0x4d57e40, (q31_t)0x80176020,\n  (q31_t)0x4cf36e5, (q31_t)0x80172388, (q31_t)0x4c8ef88, (q31_t)0x8016e740, (q31_t)0x4c2a827, (q31_t)0x8016ab46, (q31_t)0x4bc60c4, (q31_t)0x80166f9c,\n  (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x4afd1f4, (q31_t)0x8015f933, (q31_t)0x4a98a88, (q31_t)0x8015be75, (q31_t)0x4a34319, (q31_t)0x80158406,\n  (q31_t)0x49cfba7, (q31_t)0x801549e6, (q31_t)0x496b432, (q31_t)0x80151015, (q31_t)0x4906cbb, (q31_t)0x8014d693, (q31_t)0x48a2540, (q31_t)0x80149d5f,\n  (q31_t)0x483ddc3, (q31_t)0x8014647b, (q31_t)0x47d9643, (q31_t)0x80142be5, (q31_t)0x4774ec1, (q31_t)0x8013f39e, (q31_t)0x471073b, (q31_t)0x8013bba7,\n  (q31_t)0x46abfb3, (q31_t)0x801383fe, (q31_t)0x4647828, (q31_t)0x80134ca4, (q31_t)0x45e309a, (q31_t)0x80131599, (q31_t)0x457e90a, (q31_t)0x8012dedd,\n  (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x44b59e1, (q31_t)0x80127251, (q31_t)0x4451249, (q31_t)0x80123c82, (q31_t)0x43ecaae, (q31_t)0x80120701,\n  (q31_t)0x4388310, (q31_t)0x8011d1d0, (q31_t)0x4323b70, (q31_t)0x80119ced, (q31_t)0x42bf3cd, (q31_t)0x80116859, (q31_t)0x425ac28, (q31_t)0x80113414,\n  (q31_t)0x41f6480, (q31_t)0x8011001f, (q31_t)0x4191cd5, (q31_t)0x8010cc78, (q31_t)0x412d528, (q31_t)0x8010991f, (q31_t)0x40c8d79, (q31_t)0x80106616,\n  (q31_t)0x40645c7, (q31_t)0x8010335c, (q31_t)0x3fffe12, (q31_t)0x801000f1, (q31_t)0x3f9b65b, (q31_t)0x800fced4, (q31_t)0x3f36ea2, (q31_t)0x800f9d07,\n  (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x3e6df28, (q31_t)0x800f3a59, (q31_t)0x3e09767, (q31_t)0x800f0978, (q31_t)0x3da4fa4, (q31_t)0x800ed8e6,\n  (q31_t)0x3d407df, (q31_t)0x800ea8a3, (q31_t)0x3cdc017, (q31_t)0x800e78af, (q31_t)0x3c7784d, (q31_t)0x800e490a, (q31_t)0x3c13080, (q31_t)0x800e19b4,\n  (q31_t)0x3bae8b2, (q31_t)0x800deaad, (q31_t)0x3b4a0e0, (q31_t)0x800dbbf5, (q31_t)0x3ae590d, (q31_t)0x800d8d8b, (q31_t)0x3a81137, (q31_t)0x800d5f71,\n  (q31_t)0x3a1c960, (q31_t)0x800d31a5, (q31_t)0x39b8185, (q31_t)0x800d0429, (q31_t)0x39539a9, (q31_t)0x800cd6fb, (q31_t)0x38ef1ca, (q31_t)0x800caa1c,\n  (q31_t)0x388a9ea, (q31_t)0x800c7d8c, (q31_t)0x3826207, (q31_t)0x800c514c, (q31_t)0x37c1a22, (q31_t)0x800c255a, (q31_t)0x375d23a, (q31_t)0x800bf9b7,\n  (q31_t)0x36f8a51, (q31_t)0x800bce63, (q31_t)0x3694265, (q31_t)0x800ba35d, (q31_t)0x362fa78, (q31_t)0x800b78a7, (q31_t)0x35cb288, (q31_t)0x800b4e40,\n  (q31_t)0x3566a96, (q31_t)0x800b2427, (q31_t)0x35022a2, (q31_t)0x800afa5e, (q31_t)0x349daac, (q31_t)0x800ad0e3, (q31_t)0x34392b4, (q31_t)0x800aa7b8,\n  (q31_t)0x33d4abb, (q31_t)0x800a7edb, (q31_t)0x33702bf, (q31_t)0x800a564e, (q31_t)0x330bac1, (q31_t)0x800a2e0f, (q31_t)0x32a72c1, (q31_t)0x800a061f,\n  (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x31de2bb, (q31_t)0x8009b72c, (q31_t)0x3179ab5, (q31_t)0x80099029, (q31_t)0x31152ae, (q31_t)0x80096975,\n  (q31_t)0x30b0aa4, (q31_t)0x80094310, (q31_t)0x304c299, (q31_t)0x80091cf9, (q31_t)0x2fe7a8c, (q31_t)0x8008f732, (q31_t)0x2f8327d, (q31_t)0x8008d1ba,\n  (q31_t)0x2f1ea6c, (q31_t)0x8008ac90, (q31_t)0x2eba259, (q31_t)0x800887b6, (q31_t)0x2e55a44, (q31_t)0x8008632a, (q31_t)0x2df122e, (q31_t)0x80083eed,\n  (q31_t)0x2d8ca16, (q31_t)0x80081b00, (q31_t)0x2d281fc, (q31_t)0x8007f761, (q31_t)0x2cc39e1, (q31_t)0x8007d411, (q31_t)0x2c5f1c3, (q31_t)0x8007b110,\n  (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x2b96184, (q31_t)0x80076bfb, (q31_t)0x2b31961, (q31_t)0x800749e7, (q31_t)0x2acd13d, (q31_t)0x80072822,\n  (q31_t)0x2a68917, (q31_t)0x800706ac, (q31_t)0x2a040f0, (q31_t)0x8006e585, (q31_t)0x299f8c7, (q31_t)0x8006c4ac, (q31_t)0x293b09c, (q31_t)0x8006a423,\n  (q31_t)0x28d6870, (q31_t)0x800683e8, (q31_t)0x2872043, (q31_t)0x800663fd, (q31_t)0x280d813, (q31_t)0x80064460, (q31_t)0x27a8fe2, (q31_t)0x80062513,\n  (q31_t)0x27447b0, (q31_t)0x80060614, (q31_t)0x26dff7c, (q31_t)0x8005e764, (q31_t)0x267b747, (q31_t)0x8005c904, (q31_t)0x2616f10, (q31_t)0x8005aaf2,\n  (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x254de9e, (q31_t)0x80056fbb, (q31_t)0x24e9662, (q31_t)0x80055296, (q31_t)0x2484e26, (q31_t)0x800535c0,\n  (q31_t)0x24205e8, (q31_t)0x80051939, (q31_t)0x23bbda8, (q31_t)0x8004fd00, (q31_t)0x2357567, (q31_t)0x8004e117, (q31_t)0x22f2d25, (q31_t)0x8004c57d,\n  (q31_t)0x228e4e2, (q31_t)0x8004aa32, (q31_t)0x2229c9d, (q31_t)0x80048f35, (q31_t)0x21c5457, (q31_t)0x80047488, (q31_t)0x2160c0f, (q31_t)0x80045a29,\n  (q31_t)0x20fc3c6, (q31_t)0x8004401a, (q31_t)0x2097b7c, (q31_t)0x80042659, (q31_t)0x2033331, (q31_t)0x80040ce7, (q31_t)0x1fceae4, (q31_t)0x8003f3c5,\n  (q31_t)0x1f6a297, (q31_t)0x8003daf1, (q31_t)0x1f05a48, (q31_t)0x8003c26c, (q31_t)0x1ea11f7, (q31_t)0x8003aa36, (q31_t)0x1e3c9a6, (q31_t)0x8003924f,\n  (q31_t)0x1dd8154, (q31_t)0x80037ab7, (q31_t)0x1d73900, (q31_t)0x8003636e, (q31_t)0x1d0f0ab, (q31_t)0x80034c74, (q31_t)0x1caa855, (q31_t)0x800335c9,\n  (q31_t)0x1c45ffe, (q31_t)0x80031f6d, (q31_t)0x1be17a6, (q31_t)0x80030960, (q31_t)0x1b7cf4d, (q31_t)0x8002f3a1, (q31_t)0x1b186f3, (q31_t)0x8002de32,\n  (q31_t)0x1ab3e97, (q31_t)0x8002c912, (q31_t)0x1a4f63b, (q31_t)0x8002b440, (q31_t)0x19eaddd, (q31_t)0x80029fbe, (q31_t)0x198657f, (q31_t)0x80028b8a,\n  (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x18bd4bf, (q31_t)0x80026410, (q31_t)0x1858c5e, (q31_t)0x800250c9, (q31_t)0x17f43fc, (q31_t)0x80023dd2,\n  (q31_t)0x178fb99, (q31_t)0x80022b29, (q31_t)0x172b335, (q31_t)0x800218cf, (q31_t)0x16c6ad0, (q31_t)0x800206c4, (q31_t)0x166226a, (q31_t)0x8001f508,\n  (q31_t)0x15fda03, (q31_t)0x8001e39b, (q31_t)0x159919c, (q31_t)0x8001d27d, (q31_t)0x1534934, (q31_t)0x8001c1ae, (q31_t)0x14d00ca, (q31_t)0x8001b12e,\n  (q31_t)0x146b860, (q31_t)0x8001a0fd, (q31_t)0x1406ff6, (q31_t)0x8001911b, (q31_t)0x13a278a, (q31_t)0x80018187, (q31_t)0x133df1e, (q31_t)0x80017243,\n  (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0x1274e43, (q31_t)0x800154a7, (q31_t)0x12105d5, (q31_t)0x80014650, (q31_t)0x11abd66, (q31_t)0x80013847,\n  (q31_t)0x11474f6, (q31_t)0x80012a8e, (q31_t)0x10e2c85, (q31_t)0x80011d23, (q31_t)0x107e414, (q31_t)0x80011008, (q31_t)0x1019ba2, (q31_t)0x8001033b,\n  (q31_t)0x0fb5330, (q31_t)0x8000f6bd, (q31_t)0x0f50abd, (q31_t)0x8000ea8e, (q31_t)0x0eec249, (q31_t)0x8000deaf, (q31_t)0x0e879d5, (q31_t)0x8000d31e,\n  (q31_t)0x0e23160, (q31_t)0x8000c7dc, (q31_t)0x0dbe8eb, (q31_t)0x8000bce9, (q31_t)0x0d5a075, (q31_t)0x8000b245, (q31_t)0x0cf57ff, (q31_t)0x8000a7f0,\n  (q31_t)0x0c90f88, (q31_t)0x80009dea, (q31_t)0x0c2c711, (q31_t)0x80009433, (q31_t)0x0bc7e99, (q31_t)0x80008aca, (q31_t)0x0b63621, (q31_t)0x800081b1,\n  (q31_t)0x0afeda8, (q31_t)0x800078e7, (q31_t)0x0a9a52f, (q31_t)0x8000706c, (q31_t)0x0a35cb5, (q31_t)0x8000683f, (q31_t)0x09d143b, (q31_t)0x80006062,\n  (q31_t)0x096cbc1, (q31_t)0x800058d4, (q31_t)0x0908346, (q31_t)0x80005194, (q31_t)0x08a3acb, (q31_t)0x80004aa4, (q31_t)0x083f250, (q31_t)0x80004402,\n  (q31_t)0x07da9d4, (q31_t)0x80003daf, (q31_t)0x0776159, (q31_t)0x800037ac, (q31_t)0x07118dc, (q31_t)0x800031f7, (q31_t)0x06ad060, (q31_t)0x80002c91,\n  (q31_t)0x06487e3, (q31_t)0x8000277a, (q31_t)0x05e3f66, (q31_t)0x800022b3, (q31_t)0x057f6e9, (q31_t)0x80001e3a, (q31_t)0x051ae6b, (q31_t)0x80001a10,\n  (q31_t)0x04b65ee, (q31_t)0x80001635, (q31_t)0x0451d70, (q31_t)0x800012a9, (q31_t)0x03ed4f2, (q31_t)0x80000f6c, (q31_t)0x0388c74, (q31_t)0x80000c7e,\n  (q31_t)0x03243f5, (q31_t)0x800009df, (q31_t)0x02bfb77, (q31_t)0x8000078e, (q31_t)0x025b2f8, (q31_t)0x8000058d, (q31_t)0x01f6a7a, (q31_t)0x800003db,\n  (q31_t)0x01921fb, (q31_t)0x80000278, (q31_t)0x012d97c, (q31_t)0x80000163, (q31_t)0x00c90fe, (q31_t)0x8000009e, (q31_t)0x006487f, (q31_t)0x80000027\n};\n    const q31_t cos_factorsQ31_8192[8192] = {\n  (q31_t)0x7ffffff6, (q31_t)0x7fffffa7, (q31_t)0x7fffff09, (q31_t)0x7ffffe1c, (q31_t)0x7ffffce1, (q31_t)0x7ffffb56, (q31_t)0x7ffff97c, (q31_t)0x7ffff753,\n  (q31_t)0x7ffff4dc, (q31_t)0x7ffff215, (q31_t)0x7fffef00, (q31_t)0x7fffeb9b, (q31_t)0x7fffe7e8, (q31_t)0x7fffe3e5, (q31_t)0x7fffdf94, (q31_t)0x7fffdaf3,\n  (q31_t)0x7fffd604, (q31_t)0x7fffd0c6, (q31_t)0x7fffcb39, (q31_t)0x7fffc55c, (q31_t)0x7fffbf31, (q31_t)0x7fffb8b7, (q31_t)0x7fffb1ee, (q31_t)0x7fffaad6,\n  (q31_t)0x7fffa36f, (q31_t)0x7fff9bb9, (q31_t)0x7fff93b4, (q31_t)0x7fff8b61, (q31_t)0x7fff82be, (q31_t)0x7fff79cc, (q31_t)0x7fff708b, (q31_t)0x7fff66fc,\n  (q31_t)0x7fff5d1d, (q31_t)0x7fff52ef, (q31_t)0x7fff4873, (q31_t)0x7fff3da8, (q31_t)0x7fff328d, (q31_t)0x7fff2724, (q31_t)0x7fff1b6b, (q31_t)0x7fff0f64,\n  (q31_t)0x7fff030e, (q31_t)0x7ffef669, (q31_t)0x7ffee975, (q31_t)0x7ffedc31, (q31_t)0x7ffece9f, (q31_t)0x7ffec0be, (q31_t)0x7ffeb28e, (q31_t)0x7ffea40f,\n  (q31_t)0x7ffe9542, (q31_t)0x7ffe8625, (q31_t)0x7ffe76b9, (q31_t)0x7ffe66fe, (q31_t)0x7ffe56f5, (q31_t)0x7ffe469c, (q31_t)0x7ffe35f4, (q31_t)0x7ffe24fe,\n  (q31_t)0x7ffe13b8, (q31_t)0x7ffe0224, (q31_t)0x7ffdf040, (q31_t)0x7ffdde0e, (q31_t)0x7ffdcb8d, (q31_t)0x7ffdb8bc, (q31_t)0x7ffda59d, (q31_t)0x7ffd922f,\n  (q31_t)0x7ffd7e72, (q31_t)0x7ffd6a66, (q31_t)0x7ffd560b, (q31_t)0x7ffd4161, (q31_t)0x7ffd2c68, (q31_t)0x7ffd1720, (q31_t)0x7ffd0189, (q31_t)0x7ffceba4,\n  (q31_t)0x7ffcd56f, (q31_t)0x7ffcbeeb, (q31_t)0x7ffca819, (q31_t)0x7ffc90f7, (q31_t)0x7ffc7987, (q31_t)0x7ffc61c7, (q31_t)0x7ffc49b9, (q31_t)0x7ffc315b,\n  (q31_t)0x7ffc18af, (q31_t)0x7ffbffb4, (q31_t)0x7ffbe66a, (q31_t)0x7ffbccd0, (q31_t)0x7ffbb2e8, (q31_t)0x7ffb98b1, (q31_t)0x7ffb7e2b, (q31_t)0x7ffb6356,\n  (q31_t)0x7ffb4833, (q31_t)0x7ffb2cc0, (q31_t)0x7ffb10fe, (q31_t)0x7ffaf4ed, (q31_t)0x7ffad88e, (q31_t)0x7ffabbdf, (q31_t)0x7ffa9ee2, (q31_t)0x7ffa8195,\n  (q31_t)0x7ffa63fa, (q31_t)0x7ffa460f, (q31_t)0x7ffa27d6, (q31_t)0x7ffa094e, (q31_t)0x7ff9ea76, (q31_t)0x7ff9cb50, (q31_t)0x7ff9abdb, (q31_t)0x7ff98c17,\n  (q31_t)0x7ff96c04, (q31_t)0x7ff94ba2, (q31_t)0x7ff92af1, (q31_t)0x7ff909f2, (q31_t)0x7ff8e8a3, (q31_t)0x7ff8c705, (q31_t)0x7ff8a519, (q31_t)0x7ff882dd,\n  (q31_t)0x7ff86053, (q31_t)0x7ff83d79, (q31_t)0x7ff81a51, (q31_t)0x7ff7f6da, (q31_t)0x7ff7d313, (q31_t)0x7ff7aefe, (q31_t)0x7ff78a9a, (q31_t)0x7ff765e7,\n  (q31_t)0x7ff740e5, (q31_t)0x7ff71b94, (q31_t)0x7ff6f5f4, (q31_t)0x7ff6d005, (q31_t)0x7ff6a9c8, (q31_t)0x7ff6833b, (q31_t)0x7ff65c5f, (q31_t)0x7ff63535,\n  (q31_t)0x7ff60dbb, (q31_t)0x7ff5e5f3, (q31_t)0x7ff5bddc, (q31_t)0x7ff59576, (q31_t)0x7ff56cc0, (q31_t)0x7ff543bc, (q31_t)0x7ff51a69, (q31_t)0x7ff4f0c7,\n  (q31_t)0x7ff4c6d6, (q31_t)0x7ff49c96, (q31_t)0x7ff47208, (q31_t)0x7ff4472a, (q31_t)0x7ff41bfd, (q31_t)0x7ff3f082, (q31_t)0x7ff3c4b7, (q31_t)0x7ff3989e,\n  (q31_t)0x7ff36c36, (q31_t)0x7ff33f7e, (q31_t)0x7ff31278, (q31_t)0x7ff2e523, (q31_t)0x7ff2b77f, (q31_t)0x7ff2898c, (q31_t)0x7ff25b4a, (q31_t)0x7ff22cb9,\n  (q31_t)0x7ff1fdd9, (q31_t)0x7ff1ceab, (q31_t)0x7ff19f2d, (q31_t)0x7ff16f61, (q31_t)0x7ff13f45, (q31_t)0x7ff10edb, (q31_t)0x7ff0de22, (q31_t)0x7ff0ad19,\n  (q31_t)0x7ff07bc2, (q31_t)0x7ff04a1c, (q31_t)0x7ff01827, (q31_t)0x7fefe5e4, (q31_t)0x7fefb351, (q31_t)0x7fef806f, (q31_t)0x7fef4d3e, (q31_t)0x7fef19bf,\n  (q31_t)0x7feee5f0, (q31_t)0x7feeb1d3, (q31_t)0x7fee7d67, (q31_t)0x7fee48ac, (q31_t)0x7fee13a1, (q31_t)0x7fedde48, (q31_t)0x7feda8a0, (q31_t)0x7fed72aa,\n  (q31_t)0x7fed3c64, (q31_t)0x7fed05cf, (q31_t)0x7fecceec, (q31_t)0x7fec97b9, (q31_t)0x7fec6038, (q31_t)0x7fec2867, (q31_t)0x7febf048, (q31_t)0x7febb7da,\n  (q31_t)0x7feb7f1d, (q31_t)0x7feb4611, (q31_t)0x7feb0cb6, (q31_t)0x7fead30c, (q31_t)0x7fea9914, (q31_t)0x7fea5ecc, (q31_t)0x7fea2436, (q31_t)0x7fe9e950,\n  (q31_t)0x7fe9ae1c, (q31_t)0x7fe97299, (q31_t)0x7fe936c7, (q31_t)0x7fe8faa6, (q31_t)0x7fe8be36, (q31_t)0x7fe88177, (q31_t)0x7fe84469, (q31_t)0x7fe8070d,\n  (q31_t)0x7fe7c961, (q31_t)0x7fe78b67, (q31_t)0x7fe74d1e, (q31_t)0x7fe70e85, (q31_t)0x7fe6cf9e, (q31_t)0x7fe69068, (q31_t)0x7fe650e3, (q31_t)0x7fe61110,\n  (q31_t)0x7fe5d0ed, (q31_t)0x7fe5907b, (q31_t)0x7fe54fbb, (q31_t)0x7fe50eac, (q31_t)0x7fe4cd4d, (q31_t)0x7fe48ba0, (q31_t)0x7fe449a4, (q31_t)0x7fe40759,\n  (q31_t)0x7fe3c4bf, (q31_t)0x7fe381d7, (q31_t)0x7fe33e9f, (q31_t)0x7fe2fb19, (q31_t)0x7fe2b743, (q31_t)0x7fe2731f, (q31_t)0x7fe22eac, (q31_t)0x7fe1e9ea,\n  (q31_t)0x7fe1a4d9, (q31_t)0x7fe15f79, (q31_t)0x7fe119cb, (q31_t)0x7fe0d3cd, (q31_t)0x7fe08d81, (q31_t)0x7fe046e5, (q31_t)0x7fdffffb, (q31_t)0x7fdfb8c2,\n  (q31_t)0x7fdf713a, (q31_t)0x7fdf2963, (q31_t)0x7fdee13e, (q31_t)0x7fde98c9, (q31_t)0x7fde5006, (q31_t)0x7fde06f3, (q31_t)0x7fddbd92, (q31_t)0x7fdd73e2,\n  (q31_t)0x7fdd29e3, (q31_t)0x7fdcdf95, (q31_t)0x7fdc94f9, (q31_t)0x7fdc4a0d, (q31_t)0x7fdbfed3, (q31_t)0x7fdbb349, (q31_t)0x7fdb6771, (q31_t)0x7fdb1b4a,\n  (q31_t)0x7fdaced4, (q31_t)0x7fda820f, (q31_t)0x7fda34fc, (q31_t)0x7fd9e799, (q31_t)0x7fd999e8, (q31_t)0x7fd94be8, (q31_t)0x7fd8fd98, (q31_t)0x7fd8aefa,\n  (q31_t)0x7fd8600e, (q31_t)0x7fd810d2, (q31_t)0x7fd7c147, (q31_t)0x7fd7716e, (q31_t)0x7fd72146, (q31_t)0x7fd6d0cf, (q31_t)0x7fd68009, (q31_t)0x7fd62ef4,\n  (q31_t)0x7fd5dd90, (q31_t)0x7fd58bdd, (q31_t)0x7fd539dc, (q31_t)0x7fd4e78c, (q31_t)0x7fd494ed, (q31_t)0x7fd441ff, (q31_t)0x7fd3eec2, (q31_t)0x7fd39b36,\n  (q31_t)0x7fd3475c, (q31_t)0x7fd2f332, (q31_t)0x7fd29eba, (q31_t)0x7fd249f3, (q31_t)0x7fd1f4dd, (q31_t)0x7fd19f78, (q31_t)0x7fd149c5, (q31_t)0x7fd0f3c2,\n  (q31_t)0x7fd09d71, (q31_t)0x7fd046d1, (q31_t)0x7fcfefe2, (q31_t)0x7fcf98a4, (q31_t)0x7fcf4117, (q31_t)0x7fcee93c, (q31_t)0x7fce9112, (q31_t)0x7fce3898,\n  (q31_t)0x7fcddfd0, (q31_t)0x7fcd86b9, (q31_t)0x7fcd2d54, (q31_t)0x7fccd39f, (q31_t)0x7fcc799c, (q31_t)0x7fcc1f4a, (q31_t)0x7fcbc4a9, (q31_t)0x7fcb69b9,\n  (q31_t)0x7fcb0e7a, (q31_t)0x7fcab2ed, (q31_t)0x7fca5710, (q31_t)0x7fc9fae5, (q31_t)0x7fc99e6b, (q31_t)0x7fc941a2, (q31_t)0x7fc8e48b, (q31_t)0x7fc88724,\n  (q31_t)0x7fc8296f, (q31_t)0x7fc7cb6b, (q31_t)0x7fc76d18, (q31_t)0x7fc70e76, (q31_t)0x7fc6af86, (q31_t)0x7fc65046, (q31_t)0x7fc5f0b8, (q31_t)0x7fc590db,\n  (q31_t)0x7fc530af, (q31_t)0x7fc4d035, (q31_t)0x7fc46f6b, (q31_t)0x7fc40e53, (q31_t)0x7fc3acec, (q31_t)0x7fc34b36, (q31_t)0x7fc2e931, (q31_t)0x7fc286de,\n  (q31_t)0x7fc2243b, (q31_t)0x7fc1c14a, (q31_t)0x7fc15e0a, (q31_t)0x7fc0fa7b, (q31_t)0x7fc0969e, (q31_t)0x7fc03271, (q31_t)0x7fbfcdf6, (q31_t)0x7fbf692c,\n  (q31_t)0x7fbf0414, (q31_t)0x7fbe9eac, (q31_t)0x7fbe38f6, (q31_t)0x7fbdd2f0, (q31_t)0x7fbd6c9c, (q31_t)0x7fbd05fa, (q31_t)0x7fbc9f08, (q31_t)0x7fbc37c8,\n  (q31_t)0x7fbbd039, (q31_t)0x7fbb685b, (q31_t)0x7fbb002e, (q31_t)0x7fba97b2, (q31_t)0x7fba2ee8, (q31_t)0x7fb9c5cf, (q31_t)0x7fb95c67, (q31_t)0x7fb8f2b0,\n  (q31_t)0x7fb888ab, (q31_t)0x7fb81e57, (q31_t)0x7fb7b3b4, (q31_t)0x7fb748c2, (q31_t)0x7fb6dd81, (q31_t)0x7fb671f2, (q31_t)0x7fb60614, (q31_t)0x7fb599e7,\n  (q31_t)0x7fb52d6b, (q31_t)0x7fb4c0a1, (q31_t)0x7fb45387, (q31_t)0x7fb3e61f, (q31_t)0x7fb37869, (q31_t)0x7fb30a63, (q31_t)0x7fb29c0f, (q31_t)0x7fb22d6c,\n  (q31_t)0x7fb1be7a, (q31_t)0x7fb14f39, (q31_t)0x7fb0dfaa, (q31_t)0x7fb06fcb, (q31_t)0x7fafff9e, (q31_t)0x7faf8f23, (q31_t)0x7faf1e58, (q31_t)0x7faead3f,\n  (q31_t)0x7fae3bd7, (q31_t)0x7fadca20, (q31_t)0x7fad581b, (q31_t)0x7face5c6, (q31_t)0x7fac7323, (q31_t)0x7fac0031, (q31_t)0x7fab8cf1, (q31_t)0x7fab1962,\n  (q31_t)0x7faaa584, (q31_t)0x7faa3157, (q31_t)0x7fa9bcdb, (q31_t)0x7fa94811, (q31_t)0x7fa8d2f8, (q31_t)0x7fa85d90, (q31_t)0x7fa7e7d9, (q31_t)0x7fa771d4,\n  (q31_t)0x7fa6fb80, (q31_t)0x7fa684dd, (q31_t)0x7fa60dec, (q31_t)0x7fa596ac, (q31_t)0x7fa51f1d, (q31_t)0x7fa4a73f, (q31_t)0x7fa42f12, (q31_t)0x7fa3b697,\n  (q31_t)0x7fa33dcd, (q31_t)0x7fa2c4b5, (q31_t)0x7fa24b4d, (q31_t)0x7fa1d197, (q31_t)0x7fa15792, (q31_t)0x7fa0dd3f, (q31_t)0x7fa0629c, (q31_t)0x7f9fe7ab,\n  (q31_t)0x7f9f6c6b, (q31_t)0x7f9ef0dd, (q31_t)0x7f9e7500, (q31_t)0x7f9df8d4, (q31_t)0x7f9d7c59, (q31_t)0x7f9cff90, (q31_t)0x7f9c8278, (q31_t)0x7f9c0511,\n  (q31_t)0x7f9b875b, (q31_t)0x7f9b0957, (q31_t)0x7f9a8b04, (q31_t)0x7f9a0c62, (q31_t)0x7f998d72, (q31_t)0x7f990e33, (q31_t)0x7f988ea5, (q31_t)0x7f980ec8,\n  (q31_t)0x7f978e9d, (q31_t)0x7f970e23, (q31_t)0x7f968d5b, (q31_t)0x7f960c43, (q31_t)0x7f958add, (q31_t)0x7f950929, (q31_t)0x7f948725, (q31_t)0x7f9404d3,\n  (q31_t)0x7f938232, (q31_t)0x7f92ff43, (q31_t)0x7f927c04, (q31_t)0x7f91f878, (q31_t)0x7f91749c, (q31_t)0x7f90f072, (q31_t)0x7f906bf9, (q31_t)0x7f8fe731,\n  (q31_t)0x7f8f621b, (q31_t)0x7f8edcb6, (q31_t)0x7f8e5702, (q31_t)0x7f8dd0ff, (q31_t)0x7f8d4aae, (q31_t)0x7f8cc40f, (q31_t)0x7f8c3d20, (q31_t)0x7f8bb5e3,\n  (q31_t)0x7f8b2e57, (q31_t)0x7f8aa67d, (q31_t)0x7f8a1e54, (q31_t)0x7f8995dc, (q31_t)0x7f890d15, (q31_t)0x7f888400, (q31_t)0x7f87fa9c, (q31_t)0x7f8770ea,\n  (q31_t)0x7f86e6e9, (q31_t)0x7f865c99, (q31_t)0x7f85d1fa, (q31_t)0x7f85470d, (q31_t)0x7f84bbd1, (q31_t)0x7f843047, (q31_t)0x7f83a46e, (q31_t)0x7f831846,\n  (q31_t)0x7f828bcf, (q31_t)0x7f81ff0a, (q31_t)0x7f8171f6, (q31_t)0x7f80e494, (q31_t)0x7f8056e3, (q31_t)0x7f7fc8e3, (q31_t)0x7f7f3a95, (q31_t)0x7f7eabf8,\n  (q31_t)0x7f7e1d0c, (q31_t)0x7f7d8dd2, (q31_t)0x7f7cfe49, (q31_t)0x7f7c6e71, (q31_t)0x7f7bde4b, (q31_t)0x7f7b4dd6, (q31_t)0x7f7abd13, (q31_t)0x7f7a2c01,\n  (q31_t)0x7f799aa0, (q31_t)0x7f7908f0, (q31_t)0x7f7876f2, (q31_t)0x7f77e4a6, (q31_t)0x7f77520a, (q31_t)0x7f76bf21, (q31_t)0x7f762be8, (q31_t)0x7f759861,\n  (q31_t)0x7f75048b, (q31_t)0x7f747067, (q31_t)0x7f73dbf4, (q31_t)0x7f734732, (q31_t)0x7f72b222, (q31_t)0x7f721cc3, (q31_t)0x7f718715, (q31_t)0x7f70f119,\n  (q31_t)0x7f705ace, (q31_t)0x7f6fc435, (q31_t)0x7f6f2d4d, (q31_t)0x7f6e9617, (q31_t)0x7f6dfe91, (q31_t)0x7f6d66be, (q31_t)0x7f6cce9b, (q31_t)0x7f6c362a,\n  (q31_t)0x7f6b9d6b, (q31_t)0x7f6b045d, (q31_t)0x7f6a6b00, (q31_t)0x7f69d154, (q31_t)0x7f69375a, (q31_t)0x7f689d12, (q31_t)0x7f68027b, (q31_t)0x7f676795,\n  (q31_t)0x7f66cc61, (q31_t)0x7f6630de, (q31_t)0x7f65950c, (q31_t)0x7f64f8ec, (q31_t)0x7f645c7d, (q31_t)0x7f63bfc0, (q31_t)0x7f6322b4, (q31_t)0x7f62855a,\n  (q31_t)0x7f61e7b1, (q31_t)0x7f6149b9, (q31_t)0x7f60ab73, (q31_t)0x7f600cdf, (q31_t)0x7f5f6dfb, (q31_t)0x7f5ecec9, (q31_t)0x7f5e2f49, (q31_t)0x7f5d8f7a,\n  (q31_t)0x7f5cef5c, (q31_t)0x7f5c4ef0, (q31_t)0x7f5bae36, (q31_t)0x7f5b0d2c, (q31_t)0x7f5a6bd5, (q31_t)0x7f59ca2e, (q31_t)0x7f592839, (q31_t)0x7f5885f6,\n  (q31_t)0x7f57e364, (q31_t)0x7f574083, (q31_t)0x7f569d54, (q31_t)0x7f55f9d6, (q31_t)0x7f55560a, (q31_t)0x7f54b1ef, (q31_t)0x7f540d86, (q31_t)0x7f5368ce,\n  (q31_t)0x7f52c3c8, (q31_t)0x7f521e73, (q31_t)0x7f5178cf, (q31_t)0x7f50d2dd, (q31_t)0x7f502c9d, (q31_t)0x7f4f860e, (q31_t)0x7f4edf30, (q31_t)0x7f4e3804,\n  (q31_t)0x7f4d9089, (q31_t)0x7f4ce8c0, (q31_t)0x7f4c40a8, (q31_t)0x7f4b9842, (q31_t)0x7f4aef8d, (q31_t)0x7f4a468a, (q31_t)0x7f499d38, (q31_t)0x7f48f398,\n  (q31_t)0x7f4849a9, (q31_t)0x7f479f6c, (q31_t)0x7f46f4e0, (q31_t)0x7f464a06, (q31_t)0x7f459edd, (q31_t)0x7f44f365, (q31_t)0x7f44479f, (q31_t)0x7f439b8b,\n  (q31_t)0x7f42ef28, (q31_t)0x7f424277, (q31_t)0x7f419577, (q31_t)0x7f40e828, (q31_t)0x7f403a8b, (q31_t)0x7f3f8ca0, (q31_t)0x7f3ede66, (q31_t)0x7f3e2fde,\n  (q31_t)0x7f3d8107, (q31_t)0x7f3cd1e2, (q31_t)0x7f3c226e, (q31_t)0x7f3b72ab, (q31_t)0x7f3ac29b, (q31_t)0x7f3a123b, (q31_t)0x7f39618e, (q31_t)0x7f38b091,\n  (q31_t)0x7f37ff47, (q31_t)0x7f374dad, (q31_t)0x7f369bc6, (q31_t)0x7f35e990, (q31_t)0x7f35370b, (q31_t)0x7f348438, (q31_t)0x7f33d116, (q31_t)0x7f331da6,\n  (q31_t)0x7f3269e8, (q31_t)0x7f31b5db, (q31_t)0x7f31017f, (q31_t)0x7f304cd6, (q31_t)0x7f2f97dd, (q31_t)0x7f2ee296, (q31_t)0x7f2e2d01, (q31_t)0x7f2d771e,\n  (q31_t)0x7f2cc0eb, (q31_t)0x7f2c0a6b, (q31_t)0x7f2b539c, (q31_t)0x7f2a9c7e, (q31_t)0x7f29e512, (q31_t)0x7f292d58, (q31_t)0x7f28754f, (q31_t)0x7f27bcf8,\n  (q31_t)0x7f270452, (q31_t)0x7f264b5e, (q31_t)0x7f25921c, (q31_t)0x7f24d88b, (q31_t)0x7f241eab, (q31_t)0x7f23647e, (q31_t)0x7f22aa01, (q31_t)0x7f21ef37,\n  (q31_t)0x7f21341e, (q31_t)0x7f2078b6, (q31_t)0x7f1fbd00, (q31_t)0x7f1f00fc, (q31_t)0x7f1e44a9, (q31_t)0x7f1d8808, (q31_t)0x7f1ccb18, (q31_t)0x7f1c0dda,\n  (q31_t)0x7f1b504e, (q31_t)0x7f1a9273, (q31_t)0x7f19d44a, (q31_t)0x7f1915d2, (q31_t)0x7f18570c, (q31_t)0x7f1797f8, (q31_t)0x7f16d895, (q31_t)0x7f1618e4,\n  (q31_t)0x7f1558e4, (q31_t)0x7f149896, (q31_t)0x7f13d7fa, (q31_t)0x7f13170f, (q31_t)0x7f1255d6, (q31_t)0x7f11944f, (q31_t)0x7f10d279, (q31_t)0x7f101054,\n  (q31_t)0x7f0f4de2, (q31_t)0x7f0e8b21, (q31_t)0x7f0dc811, (q31_t)0x7f0d04b3, (q31_t)0x7f0c4107, (q31_t)0x7f0b7d0d, (q31_t)0x7f0ab8c4, (q31_t)0x7f09f42d,\n  (q31_t)0x7f092f47, (q31_t)0x7f086a13, (q31_t)0x7f07a491, (q31_t)0x7f06dec0, (q31_t)0x7f0618a1, (q31_t)0x7f055233, (q31_t)0x7f048b78, (q31_t)0x7f03c46d,\n  (q31_t)0x7f02fd15, (q31_t)0x7f02356e, (q31_t)0x7f016d79, (q31_t)0x7f00a535, (q31_t)0x7effdca4, (q31_t)0x7eff13c3, (q31_t)0x7efe4a95, (q31_t)0x7efd8118,\n  (q31_t)0x7efcb74d, (q31_t)0x7efbed33, (q31_t)0x7efb22cb, (q31_t)0x7efa5815, (q31_t)0x7ef98d11, (q31_t)0x7ef8c1be, (q31_t)0x7ef7f61d, (q31_t)0x7ef72a2d,\n  (q31_t)0x7ef65def, (q31_t)0x7ef59163, (q31_t)0x7ef4c489, (q31_t)0x7ef3f760, (q31_t)0x7ef329e9, (q31_t)0x7ef25c24, (q31_t)0x7ef18e10, (q31_t)0x7ef0bfae,\n  (q31_t)0x7eeff0fe, (q31_t)0x7eef21ff, (q31_t)0x7eee52b2, (q31_t)0x7eed8317, (q31_t)0x7eecb32d, (q31_t)0x7eebe2f6, (q31_t)0x7eeb1270, (q31_t)0x7eea419b,\n  (q31_t)0x7ee97079, (q31_t)0x7ee89f08, (q31_t)0x7ee7cd49, (q31_t)0x7ee6fb3b, (q31_t)0x7ee628df, (q31_t)0x7ee55635, (q31_t)0x7ee4833d, (q31_t)0x7ee3aff6,\n  (q31_t)0x7ee2dc61, (q31_t)0x7ee2087e, (q31_t)0x7ee1344d, (q31_t)0x7ee05fcd, (q31_t)0x7edf8aff, (q31_t)0x7edeb5e3, (q31_t)0x7edde079, (q31_t)0x7edd0ac0,\n  (q31_t)0x7edc34b9, (q31_t)0x7edb5e64, (q31_t)0x7eda87c0, (q31_t)0x7ed9b0ce, (q31_t)0x7ed8d98e, (q31_t)0x7ed80200, (q31_t)0x7ed72a24, (q31_t)0x7ed651f9,\n  (q31_t)0x7ed57980, (q31_t)0x7ed4a0b9, (q31_t)0x7ed3c7a3, (q31_t)0x7ed2ee40, (q31_t)0x7ed2148e, (q31_t)0x7ed13a8e, (q31_t)0x7ed0603f, (q31_t)0x7ecf85a3,\n  (q31_t)0x7eceaab8, (q31_t)0x7ecdcf7f, (q31_t)0x7eccf3f8, (q31_t)0x7ecc1822, (q31_t)0x7ecb3bff, (q31_t)0x7eca5f8d, (q31_t)0x7ec982cd, (q31_t)0x7ec8a5bf,\n  (q31_t)0x7ec7c862, (q31_t)0x7ec6eab7, (q31_t)0x7ec60cbe, (q31_t)0x7ec52e77, (q31_t)0x7ec44fe2, (q31_t)0x7ec370fe, (q31_t)0x7ec291cd, (q31_t)0x7ec1b24d,\n  (q31_t)0x7ec0d27f, (q31_t)0x7ebff263, (q31_t)0x7ebf11f8, (q31_t)0x7ebe313f, (q31_t)0x7ebd5039, (q31_t)0x7ebc6ee4, (q31_t)0x7ebb8d40, (q31_t)0x7ebaab4f,\n  (q31_t)0x7eb9c910, (q31_t)0x7eb8e682, (q31_t)0x7eb803a6, (q31_t)0x7eb7207c, (q31_t)0x7eb63d04, (q31_t)0x7eb5593d, (q31_t)0x7eb47529, (q31_t)0x7eb390c6,\n  (q31_t)0x7eb2ac15, (q31_t)0x7eb1c716, (q31_t)0x7eb0e1c9, (q31_t)0x7eaffc2e, (q31_t)0x7eaf1645, (q31_t)0x7eae300d, (q31_t)0x7ead4987, (q31_t)0x7eac62b3,\n  (q31_t)0x7eab7b91, (q31_t)0x7eaa9421, (q31_t)0x7ea9ac63, (q31_t)0x7ea8c457, (q31_t)0x7ea7dbfc, (q31_t)0x7ea6f353, (q31_t)0x7ea60a5d, (q31_t)0x7ea52118,\n  (q31_t)0x7ea43785, (q31_t)0x7ea34da4, (q31_t)0x7ea26374, (q31_t)0x7ea178f7, (q31_t)0x7ea08e2b, (q31_t)0x7e9fa312, (q31_t)0x7e9eb7aa, (q31_t)0x7e9dcbf4,\n  (q31_t)0x7e9cdff0, (q31_t)0x7e9bf39e, (q31_t)0x7e9b06fe, (q31_t)0x7e9a1a10, (q31_t)0x7e992cd4, (q31_t)0x7e983f49, (q31_t)0x7e975171, (q31_t)0x7e96634a,\n  (q31_t)0x7e9574d6, (q31_t)0x7e948613, (q31_t)0x7e939702, (q31_t)0x7e92a7a3, (q31_t)0x7e91b7f6, (q31_t)0x7e90c7fb, (q31_t)0x7e8fd7b2, (q31_t)0x7e8ee71b,\n  (q31_t)0x7e8df636, (q31_t)0x7e8d0502, (q31_t)0x7e8c1381, (q31_t)0x7e8b21b1, (q31_t)0x7e8a2f94, (q31_t)0x7e893d28, (q31_t)0x7e884a6f, (q31_t)0x7e875767,\n  (q31_t)0x7e866411, (q31_t)0x7e85706d, (q31_t)0x7e847c7c, (q31_t)0x7e83883c, (q31_t)0x7e8293ae, (q31_t)0x7e819ed2, (q31_t)0x7e80a9a8, (q31_t)0x7e7fb430,\n  (q31_t)0x7e7ebe6a, (q31_t)0x7e7dc856, (q31_t)0x7e7cd1f4, (q31_t)0x7e7bdb44, (q31_t)0x7e7ae446, (q31_t)0x7e79ecf9, (q31_t)0x7e78f55f, (q31_t)0x7e77fd77,\n  (q31_t)0x7e770541, (q31_t)0x7e760cbd, (q31_t)0x7e7513ea, (q31_t)0x7e741aca, (q31_t)0x7e73215c, (q31_t)0x7e7227a0, (q31_t)0x7e712d96, (q31_t)0x7e70333d,\n  (q31_t)0x7e6f3897, (q31_t)0x7e6e3da3, (q31_t)0x7e6d4261, (q31_t)0x7e6c46d1, (q31_t)0x7e6b4af2, (q31_t)0x7e6a4ec6, (q31_t)0x7e69524c, (q31_t)0x7e685584,\n  (q31_t)0x7e67586e, (q31_t)0x7e665b0a, (q31_t)0x7e655d58, (q31_t)0x7e645f58, (q31_t)0x7e63610a, (q31_t)0x7e62626e, (q31_t)0x7e616384, (q31_t)0x7e60644c,\n  (q31_t)0x7e5f64c7, (q31_t)0x7e5e64f3, (q31_t)0x7e5d64d1, (q31_t)0x7e5c6461, (q31_t)0x7e5b63a4, (q31_t)0x7e5a6298, (q31_t)0x7e59613f, (q31_t)0x7e585f97,\n  (q31_t)0x7e575da2, (q31_t)0x7e565b5f, (q31_t)0x7e5558ce, (q31_t)0x7e5455ef, (q31_t)0x7e5352c1, (q31_t)0x7e524f46, (q31_t)0x7e514b7e, (q31_t)0x7e504767,\n  (q31_t)0x7e4f4302, (q31_t)0x7e4e3e4f, (q31_t)0x7e4d394f, (q31_t)0x7e4c3400, (q31_t)0x7e4b2e64, (q31_t)0x7e4a287a, (q31_t)0x7e492241, (q31_t)0x7e481bbb,\n  (q31_t)0x7e4714e7, (q31_t)0x7e460dc5, (q31_t)0x7e450656, (q31_t)0x7e43fe98, (q31_t)0x7e42f68c, (q31_t)0x7e41ee33, (q31_t)0x7e40e58c, (q31_t)0x7e3fdc97,\n  (q31_t)0x7e3ed353, (q31_t)0x7e3dc9c3, (q31_t)0x7e3cbfe4, (q31_t)0x7e3bb5b7, (q31_t)0x7e3aab3c, (q31_t)0x7e39a074, (q31_t)0x7e38955e, (q31_t)0x7e3789fa,\n  (q31_t)0x7e367e48, (q31_t)0x7e357248, (q31_t)0x7e3465fa, (q31_t)0x7e33595e, (q31_t)0x7e324c75, (q31_t)0x7e313f3e, (q31_t)0x7e3031b9, (q31_t)0x7e2f23e6,\n  (q31_t)0x7e2e15c5, (q31_t)0x7e2d0756, (q31_t)0x7e2bf89a, (q31_t)0x7e2ae990, (q31_t)0x7e29da38, (q31_t)0x7e28ca92, (q31_t)0x7e27ba9e, (q31_t)0x7e26aa5d,\n  (q31_t)0x7e2599cd, (q31_t)0x7e2488f0, (q31_t)0x7e2377c5, (q31_t)0x7e22664c, (q31_t)0x7e215486, (q31_t)0x7e204271, (q31_t)0x7e1f300f, (q31_t)0x7e1e1d5f,\n  (q31_t)0x7e1d0a61, (q31_t)0x7e1bf716, (q31_t)0x7e1ae37c, (q31_t)0x7e19cf95, (q31_t)0x7e18bb60, (q31_t)0x7e17a6dd, (q31_t)0x7e16920d, (q31_t)0x7e157cee,\n  (q31_t)0x7e146782, (q31_t)0x7e1351c9, (q31_t)0x7e123bc1, (q31_t)0x7e11256c, (q31_t)0x7e100ec8, (q31_t)0x7e0ef7d7, (q31_t)0x7e0de099, (q31_t)0x7e0cc90c,\n  (q31_t)0x7e0bb132, (q31_t)0x7e0a990a, (q31_t)0x7e098095, (q31_t)0x7e0867d1, (q31_t)0x7e074ec0, (q31_t)0x7e063561, (q31_t)0x7e051bb4, (q31_t)0x7e0401ba,\n  (q31_t)0x7e02e772, (q31_t)0x7e01ccdc, (q31_t)0x7e00b1f9, (q31_t)0x7dff96c7, (q31_t)0x7dfe7b48, (q31_t)0x7dfd5f7b, (q31_t)0x7dfc4361, (q31_t)0x7dfb26f9,\n  (q31_t)0x7dfa0a43, (q31_t)0x7df8ed3f, (q31_t)0x7df7cfee, (q31_t)0x7df6b24f, (q31_t)0x7df59462, (q31_t)0x7df47628, (q31_t)0x7df357a0, (q31_t)0x7df238ca,\n  (q31_t)0x7df119a7, (q31_t)0x7deffa35, (q31_t)0x7deeda77, (q31_t)0x7dedba6a, (q31_t)0x7dec9a10, (q31_t)0x7deb7968, (q31_t)0x7dea5872, (q31_t)0x7de9372f,\n  (q31_t)0x7de8159e, (q31_t)0x7de6f3c0, (q31_t)0x7de5d193, (q31_t)0x7de4af1a, (q31_t)0x7de38c52, (q31_t)0x7de2693d, (q31_t)0x7de145da, (q31_t)0x7de02229,\n  (q31_t)0x7ddefe2b, (q31_t)0x7dddd9e0, (q31_t)0x7ddcb546, (q31_t)0x7ddb905f, (q31_t)0x7dda6b2a, (q31_t)0x7dd945a8, (q31_t)0x7dd81fd8, (q31_t)0x7dd6f9ba,\n  (q31_t)0x7dd5d34f, (q31_t)0x7dd4ac96, (q31_t)0x7dd38590, (q31_t)0x7dd25e3c, (q31_t)0x7dd1369a, (q31_t)0x7dd00eab, (q31_t)0x7dcee66e, (q31_t)0x7dcdbde3,\n  (q31_t)0x7dcc950b, (q31_t)0x7dcb6be6, (q31_t)0x7dca4272, (q31_t)0x7dc918b1, (q31_t)0x7dc7eea3, (q31_t)0x7dc6c447, (q31_t)0x7dc5999d, (q31_t)0x7dc46ea6,\n  (q31_t)0x7dc34361, (q31_t)0x7dc217cf, (q31_t)0x7dc0ebef, (q31_t)0x7dbfbfc1, (q31_t)0x7dbe9346, (q31_t)0x7dbd667d, (q31_t)0x7dbc3967, (q31_t)0x7dbb0c03,\n  (q31_t)0x7db9de52, (q31_t)0x7db8b053, (q31_t)0x7db78207, (q31_t)0x7db6536d, (q31_t)0x7db52485, (q31_t)0x7db3f550, (q31_t)0x7db2c5cd, (q31_t)0x7db195fd,\n  (q31_t)0x7db065df, (q31_t)0x7daf3574, (q31_t)0x7dae04bb, (q31_t)0x7dacd3b5, (q31_t)0x7daba261, (q31_t)0x7daa70c0, (q31_t)0x7da93ed1, (q31_t)0x7da80c95,\n  (q31_t)0x7da6da0b, (q31_t)0x7da5a733, (q31_t)0x7da4740e, (q31_t)0x7da3409c, (q31_t)0x7da20cdc, (q31_t)0x7da0d8cf, (q31_t)0x7d9fa474, (q31_t)0x7d9e6fcb,\n  (q31_t)0x7d9d3ad6, (q31_t)0x7d9c0592, (q31_t)0x7d9ad001, (q31_t)0x7d999a23, (q31_t)0x7d9863f7, (q31_t)0x7d972d7e, (q31_t)0x7d95f6b7, (q31_t)0x7d94bfa3,\n  (q31_t)0x7d938841, (q31_t)0x7d925092, (q31_t)0x7d911896, (q31_t)0x7d8fe04c, (q31_t)0x7d8ea7b4, (q31_t)0x7d8d6ecf, (q31_t)0x7d8c359d, (q31_t)0x7d8afc1d,\n  (q31_t)0x7d89c250, (q31_t)0x7d888835, (q31_t)0x7d874dcd, (q31_t)0x7d861317, (q31_t)0x7d84d814, (q31_t)0x7d839cc4, (q31_t)0x7d826126, (q31_t)0x7d81253a,\n  (q31_t)0x7d7fe902, (q31_t)0x7d7eac7c, (q31_t)0x7d7d6fa8, (q31_t)0x7d7c3287, (q31_t)0x7d7af519, (q31_t)0x7d79b75d, (q31_t)0x7d787954, (q31_t)0x7d773afd,\n  (q31_t)0x7d75fc59, (q31_t)0x7d74bd68, (q31_t)0x7d737e29, (q31_t)0x7d723e9d, (q31_t)0x7d70fec4, (q31_t)0x7d6fbe9d, (q31_t)0x7d6e7e29, (q31_t)0x7d6d3d67,\n  (q31_t)0x7d6bfc58, (q31_t)0x7d6abafc, (q31_t)0x7d697952, (q31_t)0x7d68375b, (q31_t)0x7d66f517, (q31_t)0x7d65b285, (q31_t)0x7d646fa6, (q31_t)0x7d632c79,\n  (q31_t)0x7d61e8ff, (q31_t)0x7d60a538, (q31_t)0x7d5f6124, (q31_t)0x7d5e1cc2, (q31_t)0x7d5cd813, (q31_t)0x7d5b9316, (q31_t)0x7d5a4dcc, (q31_t)0x7d590835,\n  (q31_t)0x7d57c251, (q31_t)0x7d567c1f, (q31_t)0x7d5535a0, (q31_t)0x7d53eed3, (q31_t)0x7d52a7ba, (q31_t)0x7d516053, (q31_t)0x7d50189e, (q31_t)0x7d4ed09d,\n  (q31_t)0x7d4d884e, (q31_t)0x7d4c3fb1, (q31_t)0x7d4af6c8, (q31_t)0x7d49ad91, (q31_t)0x7d48640d, (q31_t)0x7d471a3c, (q31_t)0x7d45d01d, (q31_t)0x7d4485b1,\n  (q31_t)0x7d433af8, (q31_t)0x7d41eff1, (q31_t)0x7d40a49e, (q31_t)0x7d3f58fd, (q31_t)0x7d3e0d0e, (q31_t)0x7d3cc0d3, (q31_t)0x7d3b744a, (q31_t)0x7d3a2774,\n  (q31_t)0x7d38da51, (q31_t)0x7d378ce0, (q31_t)0x7d363f23, (q31_t)0x7d34f118, (q31_t)0x7d33a2bf, (q31_t)0x7d32541a, (q31_t)0x7d310527, (q31_t)0x7d2fb5e7,\n  (q31_t)0x7d2e665a, (q31_t)0x7d2d1680, (q31_t)0x7d2bc659, (q31_t)0x7d2a75e4, (q31_t)0x7d292522, (q31_t)0x7d27d413, (q31_t)0x7d2682b6, (q31_t)0x7d25310d,\n  (q31_t)0x7d23df16, (q31_t)0x7d228cd2, (q31_t)0x7d213a41, (q31_t)0x7d1fe762, (q31_t)0x7d1e9437, (q31_t)0x7d1d40be, (q31_t)0x7d1becf8, (q31_t)0x7d1a98e5,\n  (q31_t)0x7d194485, (q31_t)0x7d17efd8, (q31_t)0x7d169add, (q31_t)0x7d154595, (q31_t)0x7d13f001, (q31_t)0x7d129a1f, (q31_t)0x7d1143ef, (q31_t)0x7d0fed73,\n  (q31_t)0x7d0e96aa, (q31_t)0x7d0d3f93, (q31_t)0x7d0be82f, (q31_t)0x7d0a907e, (q31_t)0x7d093880, (q31_t)0x7d07e035, (q31_t)0x7d06879d, (q31_t)0x7d052eb8,\n  (q31_t)0x7d03d585, (q31_t)0x7d027c05, (q31_t)0x7d012239, (q31_t)0x7cffc81f, (q31_t)0x7cfe6db8, (q31_t)0x7cfd1304, (q31_t)0x7cfbb803, (q31_t)0x7cfa5cb4,\n  (q31_t)0x7cf90119, (q31_t)0x7cf7a531, (q31_t)0x7cf648fb, (q31_t)0x7cf4ec79, (q31_t)0x7cf38fa9, (q31_t)0x7cf2328c, (q31_t)0x7cf0d522, (q31_t)0x7cef776b,\n  (q31_t)0x7cee1967, (q31_t)0x7cecbb16, (q31_t)0x7ceb5c78, (q31_t)0x7ce9fd8d, (q31_t)0x7ce89e55, (q31_t)0x7ce73ed0, (q31_t)0x7ce5defd, (q31_t)0x7ce47ede,\n  (q31_t)0x7ce31e72, (q31_t)0x7ce1bdb8, (q31_t)0x7ce05cb2, (q31_t)0x7cdefb5e, (q31_t)0x7cdd99be, (q31_t)0x7cdc37d0, (q31_t)0x7cdad596, (q31_t)0x7cd9730e,\n  (q31_t)0x7cd8103a, (q31_t)0x7cd6ad18, (q31_t)0x7cd549aa, (q31_t)0x7cd3e5ee, (q31_t)0x7cd281e5, (q31_t)0x7cd11d90, (q31_t)0x7ccfb8ed, (q31_t)0x7cce53fe,\n  (q31_t)0x7ccceec1, (q31_t)0x7ccb8937, (q31_t)0x7cca2361, (q31_t)0x7cc8bd3d, (q31_t)0x7cc756cd, (q31_t)0x7cc5f010, (q31_t)0x7cc48905, (q31_t)0x7cc321ae,\n  (q31_t)0x7cc1ba09, (q31_t)0x7cc05218, (q31_t)0x7cbee9da, (q31_t)0x7cbd814f, (q31_t)0x7cbc1877, (q31_t)0x7cbaaf51, (q31_t)0x7cb945df, (q31_t)0x7cb7dc20,\n  (q31_t)0x7cb67215, (q31_t)0x7cb507bc, (q31_t)0x7cb39d16, (q31_t)0x7cb23223, (q31_t)0x7cb0c6e4, (q31_t)0x7caf5b57, (q31_t)0x7cadef7e, (q31_t)0x7cac8358,\n  (q31_t)0x7cab16e4, (q31_t)0x7ca9aa24, (q31_t)0x7ca83d17, (q31_t)0x7ca6cfbd, (q31_t)0x7ca56216, (q31_t)0x7ca3f423, (q31_t)0x7ca285e2, (q31_t)0x7ca11755,\n  (q31_t)0x7c9fa87a, (q31_t)0x7c9e3953, (q31_t)0x7c9cc9df, (q31_t)0x7c9b5a1e, (q31_t)0x7c99ea10, (q31_t)0x7c9879b6, (q31_t)0x7c97090e, (q31_t)0x7c95981a,\n  (q31_t)0x7c9426d8, (q31_t)0x7c92b54a, (q31_t)0x7c91436f, (q31_t)0x7c8fd148, (q31_t)0x7c8e5ed3, (q31_t)0x7c8cec12, (q31_t)0x7c8b7903, (q31_t)0x7c8a05a8,\n  (q31_t)0x7c889200, (q31_t)0x7c871e0c, (q31_t)0x7c85a9ca, (q31_t)0x7c84353c, (q31_t)0x7c82c060, (q31_t)0x7c814b39, (q31_t)0x7c7fd5c4, (q31_t)0x7c7e6002,\n  (q31_t)0x7c7ce9f4, (q31_t)0x7c7b7399, (q31_t)0x7c79fcf1, (q31_t)0x7c7885fc, (q31_t)0x7c770eba, (q31_t)0x7c75972c, (q31_t)0x7c741f51, (q31_t)0x7c72a729,\n  (q31_t)0x7c712eb5, (q31_t)0x7c6fb5f3, (q31_t)0x7c6e3ce5, (q31_t)0x7c6cc38a, (q31_t)0x7c6b49e3, (q31_t)0x7c69cfee, (q31_t)0x7c6855ad, (q31_t)0x7c66db1f,\n  (q31_t)0x7c656045, (q31_t)0x7c63e51e, (q31_t)0x7c6269aa, (q31_t)0x7c60ede9, (q31_t)0x7c5f71db, (q31_t)0x7c5df581, (q31_t)0x7c5c78da, (q31_t)0x7c5afbe6,\n  (q31_t)0x7c597ea6, (q31_t)0x7c580119, (q31_t)0x7c56833f, (q31_t)0x7c550519, (q31_t)0x7c5386a6, (q31_t)0x7c5207e6, (q31_t)0x7c5088d9, (q31_t)0x7c4f0980,\n  (q31_t)0x7c4d89da, (q31_t)0x7c4c09e8, (q31_t)0x7c4a89a8, (q31_t)0x7c49091c, (q31_t)0x7c478844, (q31_t)0x7c46071f, (q31_t)0x7c4485ad, (q31_t)0x7c4303ee,\n  (q31_t)0x7c4181e3, (q31_t)0x7c3fff8b, (q31_t)0x7c3e7ce7, (q31_t)0x7c3cf9f5, (q31_t)0x7c3b76b8, (q31_t)0x7c39f32d, (q31_t)0x7c386f56, (q31_t)0x7c36eb33,\n  (q31_t)0x7c3566c2, (q31_t)0x7c33e205, (q31_t)0x7c325cfc, (q31_t)0x7c30d7a6, (q31_t)0x7c2f5203, (q31_t)0x7c2dcc14, (q31_t)0x7c2c45d8, (q31_t)0x7c2abf4f,\n  (q31_t)0x7c29387a, (q31_t)0x7c27b158, (q31_t)0x7c2629ea, (q31_t)0x7c24a22f, (q31_t)0x7c231a28, (q31_t)0x7c2191d4, (q31_t)0x7c200933, (q31_t)0x7c1e8046,\n  (q31_t)0x7c1cf70c, (q31_t)0x7c1b6d86, (q31_t)0x7c19e3b3, (q31_t)0x7c185994, (q31_t)0x7c16cf28, (q31_t)0x7c15446f, (q31_t)0x7c13b96a, (q31_t)0x7c122e19,\n  (q31_t)0x7c10a27b, (q31_t)0x7c0f1690, (q31_t)0x7c0d8a59, (q31_t)0x7c0bfdd5, (q31_t)0x7c0a7105, (q31_t)0x7c08e3e8, (q31_t)0x7c07567f, (q31_t)0x7c05c8c9,\n  (q31_t)0x7c043ac7, (q31_t)0x7c02ac78, (q31_t)0x7c011ddd, (q31_t)0x7bff8ef5, (q31_t)0x7bfdffc1, (q31_t)0x7bfc7041, (q31_t)0x7bfae073, (q31_t)0x7bf9505a,\n  (q31_t)0x7bf7bff4, (q31_t)0x7bf62f41, (q31_t)0x7bf49e42, (q31_t)0x7bf30cf6, (q31_t)0x7bf17b5e, (q31_t)0x7befe97a, (q31_t)0x7bee5749, (q31_t)0x7becc4cc,\n  (q31_t)0x7beb3202, (q31_t)0x7be99eec, (q31_t)0x7be80b89, (q31_t)0x7be677da, (q31_t)0x7be4e3df, (q31_t)0x7be34f97, (q31_t)0x7be1bb02, (q31_t)0x7be02621,\n  (q31_t)0x7bde90f4, (q31_t)0x7bdcfb7b, (q31_t)0x7bdb65b5, (q31_t)0x7bd9cfa2, (q31_t)0x7bd83944, (q31_t)0x7bd6a298, (q31_t)0x7bd50ba1, (q31_t)0x7bd3745d,\n  (q31_t)0x7bd1dccc, (q31_t)0x7bd044f0, (q31_t)0x7bceacc7, (q31_t)0x7bcd1451, (q31_t)0x7bcb7b8f, (q31_t)0x7bc9e281, (q31_t)0x7bc84927, (q31_t)0x7bc6af80,\n  (q31_t)0x7bc5158c, (q31_t)0x7bc37b4d, (q31_t)0x7bc1e0c1, (q31_t)0x7bc045e9, (q31_t)0x7bbeaac4, (q31_t)0x7bbd0f53, (q31_t)0x7bbb7396, (q31_t)0x7bb9d78c,\n  (q31_t)0x7bb83b36, (q31_t)0x7bb69e94, (q31_t)0x7bb501a5, (q31_t)0x7bb3646a, (q31_t)0x7bb1c6e3, (q31_t)0x7bb02910, (q31_t)0x7bae8af0, (q31_t)0x7bacec84,\n  (q31_t)0x7bab4dcc, (q31_t)0x7ba9aec7, (q31_t)0x7ba80f76, (q31_t)0x7ba66fd9, (q31_t)0x7ba4cfef, (q31_t)0x7ba32fba, (q31_t)0x7ba18f38, (q31_t)0x7b9fee69,\n  (q31_t)0x7b9e4d4f, (q31_t)0x7b9cabe8, (q31_t)0x7b9b0a35, (q31_t)0x7b996836, (q31_t)0x7b97c5ea, (q31_t)0x7b962352, (q31_t)0x7b94806e, (q31_t)0x7b92dd3e,\n  (q31_t)0x7b9139c2, (q31_t)0x7b8f95f9, (q31_t)0x7b8df1e4, (q31_t)0x7b8c4d83, (q31_t)0x7b8aa8d6, (q31_t)0x7b8903dc, (q31_t)0x7b875e96, (q31_t)0x7b85b904,\n  (q31_t)0x7b841326, (q31_t)0x7b826cfc, (q31_t)0x7b80c686, (q31_t)0x7b7f1fc3, (q31_t)0x7b7d78b4, (q31_t)0x7b7bd159, (q31_t)0x7b7a29b2, (q31_t)0x7b7881be,\n  (q31_t)0x7b76d97f, (q31_t)0x7b7530f3, (q31_t)0x7b73881b, (q31_t)0x7b71def7, (q31_t)0x7b703587, (q31_t)0x7b6e8bcb, (q31_t)0x7b6ce1c2, (q31_t)0x7b6b376e,\n  (q31_t)0x7b698ccd, (q31_t)0x7b67e1e0, (q31_t)0x7b6636a7, (q31_t)0x7b648b22, (q31_t)0x7b62df51, (q31_t)0x7b613334, (q31_t)0x7b5f86ca, (q31_t)0x7b5dda15,\n  (q31_t)0x7b5c2d13, (q31_t)0x7b5a7fc6, (q31_t)0x7b58d22c, (q31_t)0x7b572446, (q31_t)0x7b557614, (q31_t)0x7b53c796, (q31_t)0x7b5218cc, (q31_t)0x7b5069b6,\n  (q31_t)0x7b4eba53, (q31_t)0x7b4d0aa5, (q31_t)0x7b4b5aab, (q31_t)0x7b49aa64, (q31_t)0x7b47f9d2, (q31_t)0x7b4648f3, (q31_t)0x7b4497c9, (q31_t)0x7b42e652,\n  (q31_t)0x7b413490, (q31_t)0x7b3f8281, (q31_t)0x7b3dd026, (q31_t)0x7b3c1d80, (q31_t)0x7b3a6a8d, (q31_t)0x7b38b74e, (q31_t)0x7b3703c3, (q31_t)0x7b354fed,\n  (q31_t)0x7b339bca, (q31_t)0x7b31e75b, (q31_t)0x7b3032a0, (q31_t)0x7b2e7d9a, (q31_t)0x7b2cc847, (q31_t)0x7b2b12a8, (q31_t)0x7b295cbe, (q31_t)0x7b27a687,\n  (q31_t)0x7b25f004, (q31_t)0x7b243936, (q31_t)0x7b22821b, (q31_t)0x7b20cab5, (q31_t)0x7b1f1302, (q31_t)0x7b1d5b04, (q31_t)0x7b1ba2b9, (q31_t)0x7b19ea23,\n  (q31_t)0x7b183141, (q31_t)0x7b167813, (q31_t)0x7b14be99, (q31_t)0x7b1304d3, (q31_t)0x7b114ac1, (q31_t)0x7b0f9063, (q31_t)0x7b0dd5b9, (q31_t)0x7b0c1ac4,\n  (q31_t)0x7b0a5f82, (q31_t)0x7b08a3f5, (q31_t)0x7b06e81b, (q31_t)0x7b052bf6, (q31_t)0x7b036f85, (q31_t)0x7b01b2c8, (q31_t)0x7afff5bf, (q31_t)0x7afe386a,\n  (q31_t)0x7afc7aca, (q31_t)0x7afabcdd, (q31_t)0x7af8fea5, (q31_t)0x7af74021, (q31_t)0x7af58151, (q31_t)0x7af3c235, (q31_t)0x7af202cd, (q31_t)0x7af0431a,\n  (q31_t)0x7aee831a, (q31_t)0x7aecc2cf, (q31_t)0x7aeb0238, (q31_t)0x7ae94155, (q31_t)0x7ae78026, (q31_t)0x7ae5beac, (q31_t)0x7ae3fce6, (q31_t)0x7ae23ad4,\n  (q31_t)0x7ae07876, (q31_t)0x7adeb5cc, (q31_t)0x7adcf2d6, (q31_t)0x7adb2f95, (q31_t)0x7ad96c08, (q31_t)0x7ad7a82f, (q31_t)0x7ad5e40a, (q31_t)0x7ad41f9a,\n  (q31_t)0x7ad25ade, (q31_t)0x7ad095d6, (q31_t)0x7aced082, (q31_t)0x7acd0ae3, (q31_t)0x7acb44f8, (q31_t)0x7ac97ec1, (q31_t)0x7ac7b83e, (q31_t)0x7ac5f170,\n  (q31_t)0x7ac42a55, (q31_t)0x7ac262ef, (q31_t)0x7ac09b3e, (q31_t)0x7abed341, (q31_t)0x7abd0af7, (q31_t)0x7abb4263, (q31_t)0x7ab97982, (q31_t)0x7ab7b056,\n  (q31_t)0x7ab5e6de, (q31_t)0x7ab41d1b, (q31_t)0x7ab2530b, (q31_t)0x7ab088b0, (q31_t)0x7aaebe0a, (q31_t)0x7aacf318, (q31_t)0x7aab27da, (q31_t)0x7aa95c50,\n  (q31_t)0x7aa7907b, (q31_t)0x7aa5c45a, (q31_t)0x7aa3f7ed, (q31_t)0x7aa22b35, (q31_t)0x7aa05e31, (q31_t)0x7a9e90e1, (q31_t)0x7a9cc346, (q31_t)0x7a9af55f,\n  (q31_t)0x7a99272d, (q31_t)0x7a9758af, (q31_t)0x7a9589e5, (q31_t)0x7a93bad0, (q31_t)0x7a91eb6f, (q31_t)0x7a901bc2, (q31_t)0x7a8e4bca, (q31_t)0x7a8c7b87,\n  (q31_t)0x7a8aaaf7, (q31_t)0x7a88da1c, (q31_t)0x7a8708f6, (q31_t)0x7a853784, (q31_t)0x7a8365c6, (q31_t)0x7a8193bd, (q31_t)0x7a7fc168, (q31_t)0x7a7deec8,\n  (q31_t)0x7a7c1bdc, (q31_t)0x7a7a48a4, (q31_t)0x7a787521, (q31_t)0x7a76a153, (q31_t)0x7a74cd38, (q31_t)0x7a72f8d3, (q31_t)0x7a712422, (q31_t)0x7a6f4f25,\n  (q31_t)0x7a6d79dd, (q31_t)0x7a6ba449, (q31_t)0x7a69ce6a, (q31_t)0x7a67f83f, (q31_t)0x7a6621c9, (q31_t)0x7a644b07, (q31_t)0x7a6273fa, (q31_t)0x7a609ca1,\n  (q31_t)0x7a5ec4fc, (q31_t)0x7a5ced0d, (q31_t)0x7a5b14d1, (q31_t)0x7a593c4b, (q31_t)0x7a576379, (q31_t)0x7a558a5b, (q31_t)0x7a53b0f2, (q31_t)0x7a51d73d,\n  (q31_t)0x7a4ffd3d, (q31_t)0x7a4e22f2, (q31_t)0x7a4c485b, (q31_t)0x7a4a6d78, (q31_t)0x7a48924b, (q31_t)0x7a46b6d1, (q31_t)0x7a44db0d, (q31_t)0x7a42fefd,\n  (q31_t)0x7a4122a1, (q31_t)0x7a3f45fa, (q31_t)0x7a3d6908, (q31_t)0x7a3b8bca, (q31_t)0x7a39ae41, (q31_t)0x7a37d06d, (q31_t)0x7a35f24d, (q31_t)0x7a3413e2,\n  (q31_t)0x7a32352b, (q31_t)0x7a305629, (q31_t)0x7a2e76dc, (q31_t)0x7a2c9743, (q31_t)0x7a2ab75f, (q31_t)0x7a28d72f, (q31_t)0x7a26f6b4, (q31_t)0x7a2515ee,\n  (q31_t)0x7a2334dd, (q31_t)0x7a215380, (q31_t)0x7a1f71d7, (q31_t)0x7a1d8fe4, (q31_t)0x7a1bada5, (q31_t)0x7a19cb1b, (q31_t)0x7a17e845, (q31_t)0x7a160524,\n  (q31_t)0x7a1421b8, (q31_t)0x7a123e01, (q31_t)0x7a1059fe, (q31_t)0x7a0e75b0, (q31_t)0x7a0c9117, (q31_t)0x7a0aac32, (q31_t)0x7a08c702, (q31_t)0x7a06e187,\n  (q31_t)0x7a04fbc1, (q31_t)0x7a0315af, (q31_t)0x7a012f52, (q31_t)0x79ff48aa, (q31_t)0x79fd61b6, (q31_t)0x79fb7a77, (q31_t)0x79f992ed, (q31_t)0x79f7ab18,\n  (q31_t)0x79f5c2f8, (q31_t)0x79f3da8c, (q31_t)0x79f1f1d5, (q31_t)0x79f008d3, (q31_t)0x79ee1f86, (q31_t)0x79ec35ed, (q31_t)0x79ea4c09, (q31_t)0x79e861da,\n  (q31_t)0x79e67760, (q31_t)0x79e48c9b, (q31_t)0x79e2a18a, (q31_t)0x79e0b62e, (q31_t)0x79deca87, (q31_t)0x79dcde95, (q31_t)0x79daf258, (q31_t)0x79d905d0,\n  (q31_t)0x79d718fc, (q31_t)0x79d52bdd, (q31_t)0x79d33e73, (q31_t)0x79d150be, (q31_t)0x79cf62be, (q31_t)0x79cd7473, (q31_t)0x79cb85dc, (q31_t)0x79c996fb,\n  (q31_t)0x79c7a7ce, (q31_t)0x79c5b856, (q31_t)0x79c3c893, (q31_t)0x79c1d885, (q31_t)0x79bfe82c, (q31_t)0x79bdf788, (q31_t)0x79bc0698, (q31_t)0x79ba155e,\n  (q31_t)0x79b823d8, (q31_t)0x79b63207, (q31_t)0x79b43fec, (q31_t)0x79b24d85, (q31_t)0x79b05ad3, (q31_t)0x79ae67d6, (q31_t)0x79ac748e, (q31_t)0x79aa80fb,\n  (q31_t)0x79a88d1d, (q31_t)0x79a698f4, (q31_t)0x79a4a480, (q31_t)0x79a2afc1, (q31_t)0x79a0bab6, (q31_t)0x799ec561, (q31_t)0x799ccfc1, (q31_t)0x799ad9d5,\n  (q31_t)0x7998e39f, (q31_t)0x7996ed1e, (q31_t)0x7994f651, (q31_t)0x7992ff3a, (q31_t)0x799107d8, (q31_t)0x798f102a, (q31_t)0x798d1832, (q31_t)0x798b1fef,\n  (q31_t)0x79892761, (q31_t)0x79872e87, (q31_t)0x79853563, (q31_t)0x79833bf4, (q31_t)0x7981423a, (q31_t)0x797f4835, (q31_t)0x797d4de5, (q31_t)0x797b534a,\n  (q31_t)0x79795864, (q31_t)0x79775d33, (q31_t)0x797561b8, (q31_t)0x797365f1, (q31_t)0x797169df, (q31_t)0x796f6d83, (q31_t)0x796d70dc, (q31_t)0x796b73e9,\n  (q31_t)0x796976ac, (q31_t)0x79677924, (q31_t)0x79657b51, (q31_t)0x79637d33, (q31_t)0x79617eca, (q31_t)0x795f8017, (q31_t)0x795d8118, (q31_t)0x795b81cf,\n  (q31_t)0x7959823b, (q31_t)0x7957825c, (q31_t)0x79558232, (q31_t)0x795381bd, (q31_t)0x795180fe, (q31_t)0x794f7ff3, (q31_t)0x794d7e9e, (q31_t)0x794b7cfe,\n  (q31_t)0x79497b13, (q31_t)0x794778dd, (q31_t)0x7945765d, (q31_t)0x79437391, (q31_t)0x7941707b, (q31_t)0x793f6d1a, (q31_t)0x793d696f, (q31_t)0x793b6578,\n  (q31_t)0x79396137, (q31_t)0x79375cab, (q31_t)0x793557d4, (q31_t)0x793352b2, (q31_t)0x79314d46, (q31_t)0x792f478f, (q31_t)0x792d418d, (q31_t)0x792b3b40,\n  (q31_t)0x792934a9, (q31_t)0x79272dc7, (q31_t)0x7925269a, (q31_t)0x79231f22, (q31_t)0x79211760, (q31_t)0x791f0f53, (q31_t)0x791d06fb, (q31_t)0x791afe59,\n  (q31_t)0x7918f56c, (q31_t)0x7916ec34, (q31_t)0x7914e2b2, (q31_t)0x7912d8e4, (q31_t)0x7910cecc, (q31_t)0x790ec46a, (q31_t)0x790cb9bd, (q31_t)0x790aaec5,\n  (q31_t)0x7908a382, (q31_t)0x790697f5, (q31_t)0x79048c1d, (q31_t)0x79027ffa, (q31_t)0x7900738d, (q31_t)0x78fe66d5, (q31_t)0x78fc59d3, (q31_t)0x78fa4c86,\n  (q31_t)0x78f83eee, (q31_t)0x78f6310c, (q31_t)0x78f422df, (q31_t)0x78f21467, (q31_t)0x78f005a5, (q31_t)0x78edf698, (q31_t)0x78ebe741, (q31_t)0x78e9d79f,\n  (q31_t)0x78e7c7b2, (q31_t)0x78e5b77b, (q31_t)0x78e3a6f9, (q31_t)0x78e1962d, (q31_t)0x78df8516, (q31_t)0x78dd73b5, (q31_t)0x78db6209, (q31_t)0x78d95012,\n  (q31_t)0x78d73dd1, (q31_t)0x78d52b46, (q31_t)0x78d31870, (q31_t)0x78d1054f, (q31_t)0x78cef1e4, (q31_t)0x78ccde2e, (q31_t)0x78caca2e, (q31_t)0x78c8b5e3,\n  (q31_t)0x78c6a14e, (q31_t)0x78c48c6e, (q31_t)0x78c27744, (q31_t)0x78c061cf, (q31_t)0x78be4c10, (q31_t)0x78bc3606, (q31_t)0x78ba1fb2, (q31_t)0x78b80913,\n  (q31_t)0x78b5f22a, (q31_t)0x78b3daf7, (q31_t)0x78b1c379, (q31_t)0x78afabb0, (q31_t)0x78ad939d, (q31_t)0x78ab7b40, (q31_t)0x78a96298, (q31_t)0x78a749a6,\n  (q31_t)0x78a53069, (q31_t)0x78a316e2, (q31_t)0x78a0fd11, (q31_t)0x789ee2f5, (q31_t)0x789cc88f, (q31_t)0x789aadde, (q31_t)0x789892e3, (q31_t)0x7896779d,\n  (q31_t)0x78945c0d, (q31_t)0x78924033, (q31_t)0x7890240e, (q31_t)0x788e07a0, (q31_t)0x788beae6, (q31_t)0x7889cde2, (q31_t)0x7887b094, (q31_t)0x788592fc,\n  (q31_t)0x78837519, (q31_t)0x788156ec, (q31_t)0x787f3875, (q31_t)0x787d19b3, (q31_t)0x787afaa7, (q31_t)0x7878db50, (q31_t)0x7876bbb0, (q31_t)0x78749bc5,\n  (q31_t)0x78727b8f, (q31_t)0x78705b10, (q31_t)0x786e3a46, (q31_t)0x786c1932, (q31_t)0x7869f7d3, (q31_t)0x7867d62a, (q31_t)0x7865b437, (q31_t)0x786391fa,\n  (q31_t)0x78616f72, (q31_t)0x785f4ca1, (q31_t)0x785d2984, (q31_t)0x785b061e, (q31_t)0x7858e26e, (q31_t)0x7856be73, (q31_t)0x78549a2e, (q31_t)0x7852759e,\n  (q31_t)0x785050c5, (q31_t)0x784e2ba1, (q31_t)0x784c0633, (q31_t)0x7849e07b, (q31_t)0x7847ba79, (q31_t)0x7845942c, (q31_t)0x78436d96, (q31_t)0x784146b5,\n  (q31_t)0x783f1f8a, (q31_t)0x783cf815, (q31_t)0x783ad055, (q31_t)0x7838a84c, (q31_t)0x78367ff8, (q31_t)0x7834575a, (q31_t)0x78322e72, (q31_t)0x78300540,\n  (q31_t)0x782ddbc4, (q31_t)0x782bb1fd, (q31_t)0x782987ed, (q31_t)0x78275d92, (q31_t)0x782532ed, (q31_t)0x782307fe, (q31_t)0x7820dcc5, (q31_t)0x781eb142,\n  (q31_t)0x781c8575, (q31_t)0x781a595d, (q31_t)0x78182cfc, (q31_t)0x78160051, (q31_t)0x7813d35b, (q31_t)0x7811a61b, (q31_t)0x780f7892, (q31_t)0x780d4abe,\n  (q31_t)0x780b1ca0, (q31_t)0x7808ee38, (q31_t)0x7806bf86, (q31_t)0x7804908a, (q31_t)0x78026145, (q31_t)0x780031b5, (q31_t)0x77fe01db, (q31_t)0x77fbd1b6,\n  (q31_t)0x77f9a148, (q31_t)0x77f77090, (q31_t)0x77f53f8e, (q31_t)0x77f30e42, (q31_t)0x77f0dcac, (q31_t)0x77eeaacc, (q31_t)0x77ec78a2, (q31_t)0x77ea462e,\n  (q31_t)0x77e81370, (q31_t)0x77e5e068, (q31_t)0x77e3ad17, (q31_t)0x77e1797b, (q31_t)0x77df4595, (q31_t)0x77dd1165, (q31_t)0x77dadcec, (q31_t)0x77d8a828,\n  (q31_t)0x77d6731a, (q31_t)0x77d43dc3, (q31_t)0x77d20822, (q31_t)0x77cfd236, (q31_t)0x77cd9c01, (q31_t)0x77cb6582, (q31_t)0x77c92eb9, (q31_t)0x77c6f7a6,\n  (q31_t)0x77c4c04a, (q31_t)0x77c288a3, (q31_t)0x77c050b2, (q31_t)0x77be1878, (q31_t)0x77bbdff4, (q31_t)0x77b9a726, (q31_t)0x77b76e0e, (q31_t)0x77b534ac,\n  (q31_t)0x77b2fb00, (q31_t)0x77b0c10b, (q31_t)0x77ae86cc, (q31_t)0x77ac4c43, (q31_t)0x77aa1170, (q31_t)0x77a7d653, (q31_t)0x77a59aec, (q31_t)0x77a35f3c,\n  (q31_t)0x77a12342, (q31_t)0x779ee6fe, (q31_t)0x779caa70, (q31_t)0x779a6d99, (q31_t)0x77983077, (q31_t)0x7795f30c, (q31_t)0x7793b557, (q31_t)0x77917759,\n  (q31_t)0x778f3910, (q31_t)0x778cfa7e, (q31_t)0x778abba2, (q31_t)0x77887c7d, (q31_t)0x77863d0d, (q31_t)0x7783fd54, (q31_t)0x7781bd52, (q31_t)0x777f7d05,\n  (q31_t)0x777d3c6f, (q31_t)0x777afb8f, (q31_t)0x7778ba65, (q31_t)0x777678f2, (q31_t)0x77743735, (q31_t)0x7771f52e, (q31_t)0x776fb2de, (q31_t)0x776d7044,\n  (q31_t)0x776b2d60, (q31_t)0x7768ea33, (q31_t)0x7766a6bc, (q31_t)0x776462fb, (q31_t)0x77621ef1, (q31_t)0x775fda9d, (q31_t)0x775d95ff, (q31_t)0x775b5118,\n  (q31_t)0x77590be7, (q31_t)0x7756c66c, (q31_t)0x775480a8, (q31_t)0x77523a9b, (q31_t)0x774ff443, (q31_t)0x774dada2, (q31_t)0x774b66b8, (q31_t)0x77491f84,\n  (q31_t)0x7746d806, (q31_t)0x7744903f, (q31_t)0x7742482e, (q31_t)0x773fffd4, (q31_t)0x773db730, (q31_t)0x773b6e42, (q31_t)0x7739250b, (q31_t)0x7736db8b,\n  (q31_t)0x773491c0, (q31_t)0x773247ad, (q31_t)0x772ffd50, (q31_t)0x772db2a9, (q31_t)0x772b67b9, (q31_t)0x77291c7f, (q31_t)0x7726d0fc, (q31_t)0x7724852f,\n  (q31_t)0x77223919, (q31_t)0x771fecb9, (q31_t)0x771da010, (q31_t)0x771b531d, (q31_t)0x771905e1, (q31_t)0x7716b85b, (q31_t)0x77146a8c, (q31_t)0x77121c74,\n  (q31_t)0x770fce12, (q31_t)0x770d7f66, (q31_t)0x770b3072, (q31_t)0x7708e133, (q31_t)0x770691ab, (q31_t)0x770441da, (q31_t)0x7701f1c0, (q31_t)0x76ffa15c,\n  (q31_t)0x76fd50ae, (q31_t)0x76faffb8, (q31_t)0x76f8ae78, (q31_t)0x76f65cee, (q31_t)0x76f40b1b, (q31_t)0x76f1b8ff, (q31_t)0x76ef6699, (q31_t)0x76ed13ea,\n  (q31_t)0x76eac0f2, (q31_t)0x76e86db0, (q31_t)0x76e61a25, (q31_t)0x76e3c650, (q31_t)0x76e17233, (q31_t)0x76df1dcb, (q31_t)0x76dcc91b, (q31_t)0x76da7421,\n  (q31_t)0x76d81ede, (q31_t)0x76d5c952, (q31_t)0x76d3737c, (q31_t)0x76d11d5d, (q31_t)0x76cec6f5, (q31_t)0x76cc7043, (q31_t)0x76ca1948, (q31_t)0x76c7c204,\n  (q31_t)0x76c56a77, (q31_t)0x76c312a0, (q31_t)0x76c0ba80, (q31_t)0x76be6217, (q31_t)0x76bc0965, (q31_t)0x76b9b069, (q31_t)0x76b75724, (q31_t)0x76b4fd96,\n  (q31_t)0x76b2a3bf, (q31_t)0x76b0499e, (q31_t)0x76adef34, (q31_t)0x76ab9481, (q31_t)0x76a93985, (q31_t)0x76a6de40, (q31_t)0x76a482b1, (q31_t)0x76a226da,\n  (q31_t)0x769fcab9, (q31_t)0x769d6e4f, (q31_t)0x769b119b, (q31_t)0x7698b49f, (q31_t)0x76965759, (q31_t)0x7693f9ca, (q31_t)0x76919bf3, (q31_t)0x768f3dd2,\n  (q31_t)0x768cdf67, (q31_t)0x768a80b4, (q31_t)0x768821b8, (q31_t)0x7685c272, (q31_t)0x768362e4, (q31_t)0x7681030c, (q31_t)0x767ea2eb, (q31_t)0x767c4281,\n  (q31_t)0x7679e1ce, (q31_t)0x767780d2, (q31_t)0x76751f8d, (q31_t)0x7672bdfe, (q31_t)0x76705c27, (q31_t)0x766dfa07, (q31_t)0x766b979d, (q31_t)0x766934eb,\n  (q31_t)0x7666d1ef, (q31_t)0x76646eab, (q31_t)0x76620b1d, (q31_t)0x765fa747, (q31_t)0x765d4327, (q31_t)0x765adebe, (q31_t)0x76587a0d, (q31_t)0x76561512,\n  (q31_t)0x7653afce, (q31_t)0x76514a42, (q31_t)0x764ee46c, (q31_t)0x764c7e4d, (q31_t)0x764a17e6, (q31_t)0x7647b135, (q31_t)0x76454a3c, (q31_t)0x7642e2f9,\n  (q31_t)0x76407b6e, (q31_t)0x763e139a, (q31_t)0x763bab7c, (q31_t)0x76394316, (q31_t)0x7636da67, (q31_t)0x7634716f, (q31_t)0x7632082e, (q31_t)0x762f9ea4,\n  (q31_t)0x762d34d1, (q31_t)0x762acab6, (q31_t)0x76286051, (q31_t)0x7625f5a3, (q31_t)0x76238aad, (q31_t)0x76211f6e, (q31_t)0x761eb3e6, (q31_t)0x761c4815,\n  (q31_t)0x7619dbfb, (q31_t)0x76176f98, (q31_t)0x761502ed, (q31_t)0x761295f9, (q31_t)0x761028bb, (q31_t)0x760dbb35, (q31_t)0x760b4d67, (q31_t)0x7608df4f,\n  (q31_t)0x760670ee, (q31_t)0x76040245, (q31_t)0x76019353, (q31_t)0x75ff2418, (q31_t)0x75fcb495, (q31_t)0x75fa44c8, (q31_t)0x75f7d4b3, (q31_t)0x75f56455,\n  (q31_t)0x75f2f3ae, (q31_t)0x75f082bf, (q31_t)0x75ee1187, (q31_t)0x75eba006, (q31_t)0x75e92e3c, (q31_t)0x75e6bc2a, (q31_t)0x75e449ce, (q31_t)0x75e1d72b,\n  (q31_t)0x75df643e, (q31_t)0x75dcf109, (q31_t)0x75da7d8b, (q31_t)0x75d809c4, (q31_t)0x75d595b4, (q31_t)0x75d3215c, (q31_t)0x75d0acbc, (q31_t)0x75ce37d2,\n  (q31_t)0x75cbc2a0, (q31_t)0x75c94d25, (q31_t)0x75c6d762, (q31_t)0x75c46156, (q31_t)0x75c1eb01, (q31_t)0x75bf7464, (q31_t)0x75bcfd7e, (q31_t)0x75ba864f,\n  (q31_t)0x75b80ed8, (q31_t)0x75b59718, (q31_t)0x75b31f0f, (q31_t)0x75b0a6be, (q31_t)0x75ae2e25, (q31_t)0x75abb542, (q31_t)0x75a93c18, (q31_t)0x75a6c2a4,\n  (q31_t)0x75a448e8, (q31_t)0x75a1cee4, (q31_t)0x759f5496, (q31_t)0x759cda01, (q31_t)0x759a5f22, (q31_t)0x7597e3fc, (q31_t)0x7595688c, (q31_t)0x7592ecd4,\n  (q31_t)0x759070d4, (q31_t)0x758df48b, (q31_t)0x758b77fa, (q31_t)0x7588fb20, (q31_t)0x75867dfd, (q31_t)0x75840093, (q31_t)0x758182df, (q31_t)0x757f04e3,\n  (q31_t)0x757c869f, (q31_t)0x757a0812, (q31_t)0x7577893d, (q31_t)0x75750a1f, (q31_t)0x75728ab9, (q31_t)0x75700b0a, (q31_t)0x756d8b13, (q31_t)0x756b0ad3,\n  (q31_t)0x75688a4b, (q31_t)0x7566097b, (q31_t)0x75638862, (q31_t)0x75610701, (q31_t)0x755e8557, (q31_t)0x755c0365, (q31_t)0x7559812b, (q31_t)0x7556fea8,\n  (q31_t)0x75547bdd, (q31_t)0x7551f8c9, (q31_t)0x754f756e, (q31_t)0x754cf1c9, (q31_t)0x754a6ddd, (q31_t)0x7547e9a8, (q31_t)0x7545652a, (q31_t)0x7542e065,\n  (q31_t)0x75405b57, (q31_t)0x753dd600, (q31_t)0x753b5061, (q31_t)0x7538ca7b, (q31_t)0x7536444b, (q31_t)0x7533bdd4, (q31_t)0x75313714, (q31_t)0x752eb00c,\n  (q31_t)0x752c28bb, (q31_t)0x7529a122, (q31_t)0x75271941, (q31_t)0x75249118, (q31_t)0x752208a7, (q31_t)0x751f7fed, (q31_t)0x751cf6eb, (q31_t)0x751a6da0,\n  (q31_t)0x7517e40e, (q31_t)0x75155a33, (q31_t)0x7512d010, (q31_t)0x751045a5, (q31_t)0x750dbaf2, (q31_t)0x750b2ff6, (q31_t)0x7508a4b2, (q31_t)0x75061926,\n  (q31_t)0x75038d52, (q31_t)0x75010136, (q31_t)0x74fe74d1, (q31_t)0x74fbe825, (q31_t)0x74f95b30, (q31_t)0x74f6cdf3, (q31_t)0x74f4406d, (q31_t)0x74f1b2a0,\n  (q31_t)0x74ef248b, (q31_t)0x74ec962d, (q31_t)0x74ea0787, (q31_t)0x74e7789a, (q31_t)0x74e4e964, (q31_t)0x74e259e6, (q31_t)0x74dfca20, (q31_t)0x74dd3a11,\n  (q31_t)0x74daa9bb, (q31_t)0x74d8191d, (q31_t)0x74d58836, (q31_t)0x74d2f708, (q31_t)0x74d06591, (q31_t)0x74cdd3d2, (q31_t)0x74cb41cc, (q31_t)0x74c8af7d,\n  (q31_t)0x74c61ce6, (q31_t)0x74c38a07, (q31_t)0x74c0f6e0, (q31_t)0x74be6372, (q31_t)0x74bbcfbb, (q31_t)0x74b93bbc, (q31_t)0x74b6a775, (q31_t)0x74b412e6,\n  (q31_t)0x74b17e0f, (q31_t)0x74aee8f0, (q31_t)0x74ac5389, (q31_t)0x74a9bddb, (q31_t)0x74a727e4, (q31_t)0x74a491a5, (q31_t)0x74a1fb1e, (q31_t)0x749f6450,\n  (q31_t)0x749ccd39, (q31_t)0x749a35db, (q31_t)0x74979e34, (q31_t)0x74950646, (q31_t)0x74926e10, (q31_t)0x748fd592, (q31_t)0x748d3ccb, (q31_t)0x748aa3be,\n  (q31_t)0x74880a68, (q31_t)0x748570ca, (q31_t)0x7482d6e4, (q31_t)0x74803cb7, (q31_t)0x747da242, (q31_t)0x747b0784, (q31_t)0x74786c7f, (q31_t)0x7475d132,\n  (q31_t)0x7473359e, (q31_t)0x747099c1, (q31_t)0x746dfd9d, (q31_t)0x746b6131, (q31_t)0x7468c47c, (q31_t)0x74662781, (q31_t)0x74638a3d, (q31_t)0x7460ecb2,\n  (q31_t)0x745e4ede, (q31_t)0x745bb0c3, (q31_t)0x74591261, (q31_t)0x745673b6, (q31_t)0x7453d4c4, (q31_t)0x7451358a, (q31_t)0x744e9608, (q31_t)0x744bf63e,\n  (q31_t)0x7449562d, (q31_t)0x7446b5d4, (q31_t)0x74441533, (q31_t)0x7441744b, (q31_t)0x743ed31b, (q31_t)0x743c31a3, (q31_t)0x74398fe3, (q31_t)0x7436eddc,\n  (q31_t)0x74344b8d, (q31_t)0x7431a8f6, (q31_t)0x742f0618, (q31_t)0x742c62f2, (q31_t)0x7429bf84, (q31_t)0x74271bcf, (q31_t)0x742477d2, (q31_t)0x7421d38e,\n  (q31_t)0x741f2f01, (q31_t)0x741c8a2d, (q31_t)0x7419e512, (q31_t)0x74173faf, (q31_t)0x74149a04, (q31_t)0x7411f412, (q31_t)0x740f4dd8, (q31_t)0x740ca756,\n  (q31_t)0x740a008d, (q31_t)0x7407597d, (q31_t)0x7404b224, (q31_t)0x74020a85, (q31_t)0x73ff629d, (q31_t)0x73fcba6e, (q31_t)0x73fa11f8, (q31_t)0x73f7693a,\n  (q31_t)0x73f4c034, (q31_t)0x73f216e7, (q31_t)0x73ef6d53, (q31_t)0x73ecc377, (q31_t)0x73ea1953, (q31_t)0x73e76ee8, (q31_t)0x73e4c435, (q31_t)0x73e2193b,\n  (q31_t)0x73df6df9, (q31_t)0x73dcc270, (q31_t)0x73da16a0, (q31_t)0x73d76a88, (q31_t)0x73d4be28, (q31_t)0x73d21182, (q31_t)0x73cf6493, (q31_t)0x73ccb75d,\n  (q31_t)0x73ca09e0, (q31_t)0x73c75c1c, (q31_t)0x73c4ae10, (q31_t)0x73c1ffbc, (q31_t)0x73bf5121, (q31_t)0x73bca23f, (q31_t)0x73b9f315, (q31_t)0x73b743a4,\n  (q31_t)0x73b493ec, (q31_t)0x73b1e3ec, (q31_t)0x73af33a5, (q31_t)0x73ac8316, (q31_t)0x73a9d240, (q31_t)0x73a72123, (q31_t)0x73a46fbf, (q31_t)0x73a1be13,\n  (q31_t)0x739f0c20, (q31_t)0x739c59e5, (q31_t)0x7399a763, (q31_t)0x7396f49a, (q31_t)0x73944189, (q31_t)0x73918e32, (q31_t)0x738eda93, (q31_t)0x738c26ac,\n  (q31_t)0x7389727f, (q31_t)0x7386be0a, (q31_t)0x7384094e, (q31_t)0x7381544a, (q31_t)0x737e9f00, (q31_t)0x737be96e, (q31_t)0x73793395, (q31_t)0x73767d74,\n  (q31_t)0x7373c70d, (q31_t)0x7371105e, (q31_t)0x736e5968, (q31_t)0x736ba22b, (q31_t)0x7368eaa6, (q31_t)0x736632db, (q31_t)0x73637ac8, (q31_t)0x7360c26e,\n  (q31_t)0x735e09cd, (q31_t)0x735b50e4, (q31_t)0x735897b5, (q31_t)0x7355de3e, (q31_t)0x73532481, (q31_t)0x73506a7c, (q31_t)0x734db030, (q31_t)0x734af59d,\n  (q31_t)0x73483ac2, (q31_t)0x73457fa1, (q31_t)0x7342c438, (q31_t)0x73400889, (q31_t)0x733d4c92, (q31_t)0x733a9054, (q31_t)0x7337d3d0, (q31_t)0x73351704,\n  (q31_t)0x733259f1, (q31_t)0x732f9c97, (q31_t)0x732cdef6, (q31_t)0x732a210d, (q31_t)0x732762de, (q31_t)0x7324a468, (q31_t)0x7321e5ab, (q31_t)0x731f26a7,\n  (q31_t)0x731c675b, (q31_t)0x7319a7c9, (q31_t)0x7316e7f0, (q31_t)0x731427cf, (q31_t)0x73116768, (q31_t)0x730ea6ba, (q31_t)0x730be5c5, (q31_t)0x73092489,\n  (q31_t)0x73066306, (q31_t)0x7303a13b, (q31_t)0x7300df2a, (q31_t)0x72fe1cd2, (q31_t)0x72fb5a34, (q31_t)0x72f8974e, (q31_t)0x72f5d421, (q31_t)0x72f310ad,\n  (q31_t)0x72f04cf3, (q31_t)0x72ed88f1, (q31_t)0x72eac4a9, (q31_t)0x72e8001a, (q31_t)0x72e53b44, (q31_t)0x72e27627, (q31_t)0x72dfb0c3, (q31_t)0x72dceb18,\n  (q31_t)0x72da2526, (q31_t)0x72d75eee, (q31_t)0x72d4986f, (q31_t)0x72d1d1a9, (q31_t)0x72cf0a9c, (q31_t)0x72cc4348, (q31_t)0x72c97bad, (q31_t)0x72c6b3cc,\n  (q31_t)0x72c3eba4, (q31_t)0x72c12335, (q31_t)0x72be5a7f, (q31_t)0x72bb9183, (q31_t)0x72b8c83f, (q31_t)0x72b5feb5, (q31_t)0x72b334e4, (q31_t)0x72b06acd,\n  (q31_t)0x72ada06f, (q31_t)0x72aad5c9, (q31_t)0x72a80ade, (q31_t)0x72a53fab, (q31_t)0x72a27432, (q31_t)0x729fa872, (q31_t)0x729cdc6b, (q31_t)0x729a101e,\n  (q31_t)0x7297438a, (q31_t)0x729476af, (q31_t)0x7291a98e, (q31_t)0x728edc26, (q31_t)0x728c0e77, (q31_t)0x72894082, (q31_t)0x72867245, (q31_t)0x7283a3c3,\n  (q31_t)0x7280d4f9, (q31_t)0x727e05e9, (q31_t)0x727b3693, (q31_t)0x727866f6, (q31_t)0x72759712, (q31_t)0x7272c6e7, (q31_t)0x726ff676, (q31_t)0x726d25bf,\n  (q31_t)0x726a54c1, (q31_t)0x7267837c, (q31_t)0x7264b1f0, (q31_t)0x7261e01e, (q31_t)0x725f0e06, (q31_t)0x725c3ba7, (q31_t)0x72596901, (q31_t)0x72569615,\n  (q31_t)0x7253c2e3, (q31_t)0x7250ef6a, (q31_t)0x724e1baa, (q31_t)0x724b47a4, (q31_t)0x72487357, (q31_t)0x72459ec4, (q31_t)0x7242c9ea, (q31_t)0x723ff4ca,\n  (q31_t)0x723d1f63, (q31_t)0x723a49b6, (q31_t)0x723773c3, (q31_t)0x72349d89, (q31_t)0x7231c708, (q31_t)0x722ef041, (q31_t)0x722c1934, (q31_t)0x722941e0,\n  (q31_t)0x72266a46, (q31_t)0x72239266, (q31_t)0x7220ba3f, (q31_t)0x721de1d1, (q31_t)0x721b091d, (q31_t)0x72183023, (q31_t)0x721556e3, (q31_t)0x72127d5c,\n  (q31_t)0x720fa38e, (q31_t)0x720cc97b, (q31_t)0x7209ef21, (q31_t)0x72071480, (q31_t)0x7204399a, (q31_t)0x72015e6d, (q31_t)0x71fe82f9, (q31_t)0x71fba740,\n  (q31_t)0x71f8cb40, (q31_t)0x71f5eefa, (q31_t)0x71f3126d, (q31_t)0x71f0359a, (q31_t)0x71ed5881, (q31_t)0x71ea7b22, (q31_t)0x71e79d7c, (q31_t)0x71e4bf90,\n  (q31_t)0x71e1e15e, (q31_t)0x71df02e5, (q31_t)0x71dc2427, (q31_t)0x71d94522, (q31_t)0x71d665d6, (q31_t)0x71d38645, (q31_t)0x71d0a66d, (q31_t)0x71cdc650,\n  (q31_t)0x71cae5ec, (q31_t)0x71c80542, (q31_t)0x71c52451, (q31_t)0x71c2431b, (q31_t)0x71bf619e, (q31_t)0x71bc7fdb, (q31_t)0x71b99dd2, (q31_t)0x71b6bb83,\n  (q31_t)0x71b3d8ed, (q31_t)0x71b0f612, (q31_t)0x71ae12f0, (q31_t)0x71ab2f89, (q31_t)0x71a84bdb, (q31_t)0x71a567e7, (q31_t)0x71a283ad, (q31_t)0x719f9f2c,\n  (q31_t)0x719cba66, (q31_t)0x7199d55a, (q31_t)0x7196f008, (q31_t)0x71940a6f, (q31_t)0x71912490, (q31_t)0x718e3e6c, (q31_t)0x718b5801, (q31_t)0x71887151,\n  (q31_t)0x71858a5a, (q31_t)0x7182a31d, (q31_t)0x717fbb9a, (q31_t)0x717cd3d2, (q31_t)0x7179ebc3, (q31_t)0x7177036e, (q31_t)0x71741ad3, (q31_t)0x717131f3,\n  (q31_t)0x716e48cc, (q31_t)0x716b5f5f, (q31_t)0x716875ad, (q31_t)0x71658bb4, (q31_t)0x7162a175, (q31_t)0x715fb6f1, (q31_t)0x715ccc26, (q31_t)0x7159e116,\n  (q31_t)0x7156f5c0, (q31_t)0x71540a24, (q31_t)0x71511e42, (q31_t)0x714e321a, (q31_t)0x714b45ac, (q31_t)0x714858f8, (q31_t)0x71456bfe, (q31_t)0x71427ebf,\n  (q31_t)0x713f9139, (q31_t)0x713ca36e, (q31_t)0x7139b55d, (q31_t)0x7136c706, (q31_t)0x7133d869, (q31_t)0x7130e987, (q31_t)0x712dfa5e, (q31_t)0x712b0af0,\n  (q31_t)0x71281b3c, (q31_t)0x71252b42, (q31_t)0x71223b02, (q31_t)0x711f4a7d, (q31_t)0x711c59b2, (q31_t)0x711968a1, (q31_t)0x7116774a, (q31_t)0x711385ad,\n  (q31_t)0x711093cb, (q31_t)0x710da1a3, (q31_t)0x710aaf35, (q31_t)0x7107bc82, (q31_t)0x7104c989, (q31_t)0x7101d64a, (q31_t)0x70fee2c5, (q31_t)0x70fbeefb,\n  (q31_t)0x70f8faeb, (q31_t)0x70f60695, (q31_t)0x70f311fa, (q31_t)0x70f01d19, (q31_t)0x70ed27f2, (q31_t)0x70ea3286, (q31_t)0x70e73cd4, (q31_t)0x70e446dc,\n  (q31_t)0x70e1509f, (q31_t)0x70de5a1c, (q31_t)0x70db6353, (q31_t)0x70d86c45, (q31_t)0x70d574f1, (q31_t)0x70d27d58, (q31_t)0x70cf8579, (q31_t)0x70cc8d54,\n  (q31_t)0x70c994ea, (q31_t)0x70c69c3a, (q31_t)0x70c3a345, (q31_t)0x70c0aa0a, (q31_t)0x70bdb08a, (q31_t)0x70bab6c4, (q31_t)0x70b7bcb8, (q31_t)0x70b4c267,\n  (q31_t)0x70b1c7d1, (q31_t)0x70aeccf5, (q31_t)0x70abd1d3, (q31_t)0x70a8d66c, (q31_t)0x70a5dac0, (q31_t)0x70a2dece, (q31_t)0x709fe296, (q31_t)0x709ce619,\n  (q31_t)0x7099e957, (q31_t)0x7096ec4f, (q31_t)0x7093ef01, (q31_t)0x7090f16e, (q31_t)0x708df396, (q31_t)0x708af579, (q31_t)0x7087f715, (q31_t)0x7084f86d,\n  (q31_t)0x7081f97f, (q31_t)0x707efa4c, (q31_t)0x707bfad3, (q31_t)0x7078fb15, (q31_t)0x7075fb11, (q31_t)0x7072fac9, (q31_t)0x706ffa3a, (q31_t)0x706cf967,\n  (q31_t)0x7069f84e, (q31_t)0x7066f6f0, (q31_t)0x7063f54c, (q31_t)0x7060f363, (q31_t)0x705df135, (q31_t)0x705aeec1, (q31_t)0x7057ec08, (q31_t)0x7054e90a,\n  (q31_t)0x7051e5c7, (q31_t)0x704ee23e, (q31_t)0x704bde70, (q31_t)0x7048da5d, (q31_t)0x7045d604, (q31_t)0x7042d166, (q31_t)0x703fcc83, (q31_t)0x703cc75b,\n  (q31_t)0x7039c1ed, (q31_t)0x7036bc3b, (q31_t)0x7033b643, (q31_t)0x7030b005, (q31_t)0x702da983, (q31_t)0x702aa2bb, (q31_t)0x70279baf, (q31_t)0x7024945d,\n  (q31_t)0x70218cc6, (q31_t)0x701e84e9, (q31_t)0x701b7cc8, (q31_t)0x70187461, (q31_t)0x70156bb5, (q31_t)0x701262c4, (q31_t)0x700f598e, (q31_t)0x700c5013,\n  (q31_t)0x70094653, (q31_t)0x70063c4e, (q31_t)0x70033203, (q31_t)0x70002774, (q31_t)0x6ffd1c9f, (q31_t)0x6ffa1185, (q31_t)0x6ff70626, (q31_t)0x6ff3fa82,\n  (q31_t)0x6ff0ee99, (q31_t)0x6fede26b, (q31_t)0x6fead5f8, (q31_t)0x6fe7c940, (q31_t)0x6fe4bc43, (q31_t)0x6fe1af01, (q31_t)0x6fdea17a, (q31_t)0x6fdb93ae,\n  (q31_t)0x6fd8859d, (q31_t)0x6fd57746, (q31_t)0x6fd268ab, (q31_t)0x6fcf59cb, (q31_t)0x6fcc4aa6, (q31_t)0x6fc93b3c, (q31_t)0x6fc62b8d, (q31_t)0x6fc31b99,\n  (q31_t)0x6fc00b60, (q31_t)0x6fbcfae2, (q31_t)0x6fb9ea20, (q31_t)0x6fb6d918, (q31_t)0x6fb3c7cb, (q31_t)0x6fb0b63a, (q31_t)0x6fada464, (q31_t)0x6faa9248,\n  (q31_t)0x6fa77fe8, (q31_t)0x6fa46d43, (q31_t)0x6fa15a59, (q31_t)0x6f9e472b, (q31_t)0x6f9b33b7, (q31_t)0x6f981fff, (q31_t)0x6f950c01, (q31_t)0x6f91f7bf,\n  (q31_t)0x6f8ee338, (q31_t)0x6f8bce6c, (q31_t)0x6f88b95c, (q31_t)0x6f85a407, (q31_t)0x6f828e6c, (q31_t)0x6f7f788d, (q31_t)0x6f7c626a, (q31_t)0x6f794c01,\n  (q31_t)0x6f763554, (q31_t)0x6f731e62, (q31_t)0x6f70072b, (q31_t)0x6f6cefb0, (q31_t)0x6f69d7f0, (q31_t)0x6f66bfeb, (q31_t)0x6f63a7a1, (q31_t)0x6f608f13,\n  (q31_t)0x6f5d7640, (q31_t)0x6f5a5d28, (q31_t)0x6f5743cb, (q31_t)0x6f542a2a, (q31_t)0x6f511044, (q31_t)0x6f4df61a, (q31_t)0x6f4adbab, (q31_t)0x6f47c0f7,\n  (q31_t)0x6f44a5ff, (q31_t)0x6f418ac2, (q31_t)0x6f3e6f40, (q31_t)0x6f3b537a, (q31_t)0x6f38376f, (q31_t)0x6f351b1f, (q31_t)0x6f31fe8b, (q31_t)0x6f2ee1b2,\n  (q31_t)0x6f2bc495, (q31_t)0x6f28a733, (q31_t)0x6f25898d, (q31_t)0x6f226ba2, (q31_t)0x6f1f4d72, (q31_t)0x6f1c2efe, (q31_t)0x6f191045, (q31_t)0x6f15f148,\n  (q31_t)0x6f12d206, (q31_t)0x6f0fb280, (q31_t)0x6f0c92b6, (q31_t)0x6f0972a6, (q31_t)0x6f065253, (q31_t)0x6f0331ba, (q31_t)0x6f0010de, (q31_t)0x6efcefbd,\n  (q31_t)0x6ef9ce57, (q31_t)0x6ef6acad, (q31_t)0x6ef38abe, (q31_t)0x6ef0688b, (q31_t)0x6eed4614, (q31_t)0x6eea2358, (q31_t)0x6ee70058, (q31_t)0x6ee3dd13,\n  (q31_t)0x6ee0b98a, (q31_t)0x6edd95bd, (q31_t)0x6eda71ab, (q31_t)0x6ed74d55, (q31_t)0x6ed428ba, (q31_t)0x6ed103db, (q31_t)0x6ecddeb8, (q31_t)0x6ecab950,\n  (q31_t)0x6ec793a4, (q31_t)0x6ec46db4, (q31_t)0x6ec1477f, (q31_t)0x6ebe2106, (q31_t)0x6ebafa49, (q31_t)0x6eb7d347, (q31_t)0x6eb4ac02, (q31_t)0x6eb18477,\n  (q31_t)0x6eae5ca9, (q31_t)0x6eab3496, (q31_t)0x6ea80c3f, (q31_t)0x6ea4e3a4, (q31_t)0x6ea1bac4, (q31_t)0x6e9e91a1, (q31_t)0x6e9b6839, (q31_t)0x6e983e8d,\n  (q31_t)0x6e95149c, (q31_t)0x6e91ea67, (q31_t)0x6e8ebfef, (q31_t)0x6e8b9532, (q31_t)0x6e886a30, (q31_t)0x6e853eeb, (q31_t)0x6e821361, (q31_t)0x6e7ee794,\n  (q31_t)0x6e7bbb82, (q31_t)0x6e788f2c, (q31_t)0x6e756291, (q31_t)0x6e7235b3, (q31_t)0x6e6f0890, (q31_t)0x6e6bdb2a, (q31_t)0x6e68ad7f, (q31_t)0x6e657f90,\n  (q31_t)0x6e62515d, (q31_t)0x6e5f22e6, (q31_t)0x6e5bf42b, (q31_t)0x6e58c52c, (q31_t)0x6e5595e9, (q31_t)0x6e526662, (q31_t)0x6e4f3696, (q31_t)0x6e4c0687,\n  (q31_t)0x6e48d633, (q31_t)0x6e45a59c, (q31_t)0x6e4274c1, (q31_t)0x6e3f43a1, (q31_t)0x6e3c123e, (q31_t)0x6e38e096, (q31_t)0x6e35aeab, (q31_t)0x6e327c7b,\n  (q31_t)0x6e2f4a08, (q31_t)0x6e2c1750, (q31_t)0x6e28e455, (q31_t)0x6e25b115, (q31_t)0x6e227d92, (q31_t)0x6e1f49cb, (q31_t)0x6e1c15c0, (q31_t)0x6e18e171,\n  (q31_t)0x6e15acde, (q31_t)0x6e127807, (q31_t)0x6e0f42ec, (q31_t)0x6e0c0d8e, (q31_t)0x6e08d7eb, (q31_t)0x6e05a205, (q31_t)0x6e026bda, (q31_t)0x6dff356c,\n  (q31_t)0x6dfbfeba, (q31_t)0x6df8c7c4, (q31_t)0x6df5908b, (q31_t)0x6df2590d, (q31_t)0x6def214c, (q31_t)0x6debe947, (q31_t)0x6de8b0fe, (q31_t)0x6de57871,\n  (q31_t)0x6de23fa0, (q31_t)0x6ddf068c, (q31_t)0x6ddbcd34, (q31_t)0x6dd89398, (q31_t)0x6dd559b9, (q31_t)0x6dd21f95, (q31_t)0x6dcee52e, (q31_t)0x6dcbaa83,\n  (q31_t)0x6dc86f95, (q31_t)0x6dc53462, (q31_t)0x6dc1f8ec, (q31_t)0x6dbebd33, (q31_t)0x6dbb8135, (q31_t)0x6db844f4, (q31_t)0x6db5086f, (q31_t)0x6db1cba7,\n  (q31_t)0x6dae8e9b, (q31_t)0x6dab514b, (q31_t)0x6da813b8, (q31_t)0x6da4d5e1, (q31_t)0x6da197c6, (q31_t)0x6d9e5968, (q31_t)0x6d9b1ac6, (q31_t)0x6d97dbe0,\n  (q31_t)0x6d949cb7, (q31_t)0x6d915d4a, (q31_t)0x6d8e1d9a, (q31_t)0x6d8adda6, (q31_t)0x6d879d6e, (q31_t)0x6d845cf3, (q31_t)0x6d811c35, (q31_t)0x6d7ddb33,\n  (q31_t)0x6d7a99ed, (q31_t)0x6d775864, (q31_t)0x6d741697, (q31_t)0x6d70d487, (q31_t)0x6d6d9233, (q31_t)0x6d6a4f9c, (q31_t)0x6d670cc1, (q31_t)0x6d63c9a3,\n  (q31_t)0x6d608641, (q31_t)0x6d5d429c, (q31_t)0x6d59feb3, (q31_t)0x6d56ba87, (q31_t)0x6d537617, (q31_t)0x6d503164, (q31_t)0x6d4cec6e, (q31_t)0x6d49a734,\n  (q31_t)0x6d4661b7, (q31_t)0x6d431bf6, (q31_t)0x6d3fd5f2, (q31_t)0x6d3c8fab, (q31_t)0x6d394920, (q31_t)0x6d360252, (q31_t)0x6d32bb40, (q31_t)0x6d2f73eb,\n  (q31_t)0x6d2c2c53, (q31_t)0x6d28e477, (q31_t)0x6d259c58, (q31_t)0x6d2253f6, (q31_t)0x6d1f0b50, (q31_t)0x6d1bc267, (q31_t)0x6d18793b, (q31_t)0x6d152fcc,\n  (q31_t)0x6d11e619, (q31_t)0x6d0e9c23, (q31_t)0x6d0b51e9, (q31_t)0x6d08076d, (q31_t)0x6d04bcad, (q31_t)0x6d0171aa, (q31_t)0x6cfe2663, (q31_t)0x6cfadada,\n  (q31_t)0x6cf78f0d, (q31_t)0x6cf442fd, (q31_t)0x6cf0f6aa, (q31_t)0x6cedaa13, (q31_t)0x6cea5d3a, (q31_t)0x6ce7101d, (q31_t)0x6ce3c2bd, (q31_t)0x6ce0751a,\n  (q31_t)0x6cdd2733, (q31_t)0x6cd9d90a, (q31_t)0x6cd68a9d, (q31_t)0x6cd33bed, (q31_t)0x6ccfecfa, (q31_t)0x6ccc9dc4, (q31_t)0x6cc94e4b, (q31_t)0x6cc5fe8f,\n  (q31_t)0x6cc2ae90, (q31_t)0x6cbf5e4d, (q31_t)0x6cbc0dc8, (q31_t)0x6cb8bcff, (q31_t)0x6cb56bf4, (q31_t)0x6cb21aa5, (q31_t)0x6caec913, (q31_t)0x6cab773e,\n  (q31_t)0x6ca82527, (q31_t)0x6ca4d2cc, (q31_t)0x6ca1802e, (q31_t)0x6c9e2d4d, (q31_t)0x6c9ada29, (q31_t)0x6c9786c2, (q31_t)0x6c943318, (q31_t)0x6c90df2c,\n  (q31_t)0x6c8d8afc, (q31_t)0x6c8a3689, (q31_t)0x6c86e1d3, (q31_t)0x6c838cdb, (q31_t)0x6c80379f, (q31_t)0x6c7ce220, (q31_t)0x6c798c5f, (q31_t)0x6c76365b,\n  (q31_t)0x6c72e013, (q31_t)0x6c6f8989, (q31_t)0x6c6c32bc, (q31_t)0x6c68dbac, (q31_t)0x6c658459, (q31_t)0x6c622cc4, (q31_t)0x6c5ed4eb, (q31_t)0x6c5b7cd0,\n  (q31_t)0x6c582472, (q31_t)0x6c54cbd1, (q31_t)0x6c5172ed, (q31_t)0x6c4e19c6, (q31_t)0x6c4ac05d, (q31_t)0x6c4766b0, (q31_t)0x6c440cc1, (q31_t)0x6c40b28f,\n  (q31_t)0x6c3d581b, (q31_t)0x6c39fd63, (q31_t)0x6c36a269, (q31_t)0x6c33472c, (q31_t)0x6c2febad, (q31_t)0x6c2c8fea, (q31_t)0x6c2933e5, (q31_t)0x6c25d79d,\n  (q31_t)0x6c227b13, (q31_t)0x6c1f1e45, (q31_t)0x6c1bc136, (q31_t)0x6c1863e3, (q31_t)0x6c15064e, (q31_t)0x6c11a876, (q31_t)0x6c0e4a5b, (q31_t)0x6c0aebfe,\n  (q31_t)0x6c078d5e, (q31_t)0x6c042e7b, (q31_t)0x6c00cf56, (q31_t)0x6bfd6fee, (q31_t)0x6bfa1044, (q31_t)0x6bf6b056, (q31_t)0x6bf35027, (q31_t)0x6befefb5,\n  (q31_t)0x6bec8f00, (q31_t)0x6be92e08, (q31_t)0x6be5ccce, (q31_t)0x6be26b52, (q31_t)0x6bdf0993, (q31_t)0x6bdba791, (q31_t)0x6bd8454d, (q31_t)0x6bd4e2c6,\n  (q31_t)0x6bd17ffd, (q31_t)0x6bce1cf1, (q31_t)0x6bcab9a3, (q31_t)0x6bc75613, (q31_t)0x6bc3f23f, (q31_t)0x6bc08e2a, (q31_t)0x6bbd29d2, (q31_t)0x6bb9c537,\n  (q31_t)0x6bb6605a, (q31_t)0x6bb2fb3b, (q31_t)0x6baf95d9, (q31_t)0x6bac3034, (q31_t)0x6ba8ca4e, (q31_t)0x6ba56425, (q31_t)0x6ba1fdb9, (q31_t)0x6b9e970b,\n  (q31_t)0x6b9b301b, (q31_t)0x6b97c8e8, (q31_t)0x6b946173, (q31_t)0x6b90f9bc, (q31_t)0x6b8d91c2, (q31_t)0x6b8a2986, (q31_t)0x6b86c107, (q31_t)0x6b835846,\n  (q31_t)0x6b7fef43, (q31_t)0x6b7c85fe, (q31_t)0x6b791c76, (q31_t)0x6b75b2ac, (q31_t)0x6b7248a0, (q31_t)0x6b6ede51, (q31_t)0x6b6b73c0, (q31_t)0x6b6808ed,\n  (q31_t)0x6b649dd8, (q31_t)0x6b613280, (q31_t)0x6b5dc6e6, (q31_t)0x6b5a5b0a, (q31_t)0x6b56eeec, (q31_t)0x6b53828b, (q31_t)0x6b5015e9, (q31_t)0x6b4ca904,\n  (q31_t)0x6b493bdd, (q31_t)0x6b45ce73, (q31_t)0x6b4260c8, (q31_t)0x6b3ef2da, (q31_t)0x6b3b84ab, (q31_t)0x6b381639, (q31_t)0x6b34a785, (q31_t)0x6b31388e,\n  (q31_t)0x6b2dc956, (q31_t)0x6b2a59dc, (q31_t)0x6b26ea1f, (q31_t)0x6b237a21, (q31_t)0x6b2009e0, (q31_t)0x6b1c995d, (q31_t)0x6b192898, (q31_t)0x6b15b791,\n  (q31_t)0x6b124648, (q31_t)0x6b0ed4bd, (q31_t)0x6b0b62f0, (q31_t)0x6b07f0e1, (q31_t)0x6b047e90, (q31_t)0x6b010bfd, (q31_t)0x6afd9928, (q31_t)0x6afa2610,\n  (q31_t)0x6af6b2b7, (q31_t)0x6af33f1c, (q31_t)0x6aefcb3f, (q31_t)0x6aec5720, (q31_t)0x6ae8e2bf, (q31_t)0x6ae56e1c, (q31_t)0x6ae1f937, (q31_t)0x6ade8410,\n  (q31_t)0x6adb0ea8, (q31_t)0x6ad798fd, (q31_t)0x6ad42311, (q31_t)0x6ad0ace2, (q31_t)0x6acd3672, (q31_t)0x6ac9bfc0, (q31_t)0x6ac648cb, (q31_t)0x6ac2d195,\n  (q31_t)0x6abf5a1e, (q31_t)0x6abbe264, (q31_t)0x6ab86a68, (q31_t)0x6ab4f22b, (q31_t)0x6ab179ac, (q31_t)0x6aae00eb, (q31_t)0x6aaa87e8, (q31_t)0x6aa70ea4,\n  (q31_t)0x6aa3951d, (q31_t)0x6aa01b55, (q31_t)0x6a9ca14b, (q31_t)0x6a992700, (q31_t)0x6a95ac72, (q31_t)0x6a9231a3, (q31_t)0x6a8eb692, (q31_t)0x6a8b3b3f,\n  (q31_t)0x6a87bfab, (q31_t)0x6a8443d5, (q31_t)0x6a80c7bd, (q31_t)0x6a7d4b64, (q31_t)0x6a79cec8, (q31_t)0x6a7651ec, (q31_t)0x6a72d4cd, (q31_t)0x6a6f576d,\n  (q31_t)0x6a6bd9cb, (q31_t)0x6a685be8, (q31_t)0x6a64ddc2, (q31_t)0x6a615f5c, (q31_t)0x6a5de0b3, (q31_t)0x6a5a61c9, (q31_t)0x6a56e29e, (q31_t)0x6a536331,\n  (q31_t)0x6a4fe382, (q31_t)0x6a4c6391, (q31_t)0x6a48e360, (q31_t)0x6a4562ec, (q31_t)0x6a41e237, (q31_t)0x6a3e6140, (q31_t)0x6a3ae008, (q31_t)0x6a375e8f,\n  (q31_t)0x6a33dcd4, (q31_t)0x6a305ad7, (q31_t)0x6a2cd899, (q31_t)0x6a295619, (q31_t)0x6a25d358, (q31_t)0x6a225055, (q31_t)0x6a1ecd11, (q31_t)0x6a1b498c,\n  (q31_t)0x6a17c5c5, (q31_t)0x6a1441bc, (q31_t)0x6a10bd72, (q31_t)0x6a0d38e7, (q31_t)0x6a09b41a, (q31_t)0x6a062f0c, (q31_t)0x6a02a9bc, (q31_t)0x69ff242b,\n  (q31_t)0x69fb9e59, (q31_t)0x69f81845, (q31_t)0x69f491f0, (q31_t)0x69f10b5a, (q31_t)0x69ed8482, (q31_t)0x69e9fd69, (q31_t)0x69e6760f, (q31_t)0x69e2ee73,\n  (q31_t)0x69df6696, (q31_t)0x69dbde77, (q31_t)0x69d85618, (q31_t)0x69d4cd77, (q31_t)0x69d14494, (q31_t)0x69cdbb71, (q31_t)0x69ca320c, (q31_t)0x69c6a866,\n  (q31_t)0x69c31e7f, (q31_t)0x69bf9456, (q31_t)0x69bc09ec, (q31_t)0x69b87f41, (q31_t)0x69b4f455, (q31_t)0x69b16928, (q31_t)0x69adddb9, (q31_t)0x69aa5209,\n  (q31_t)0x69a6c618, (q31_t)0x69a339e6, (q31_t)0x699fad73, (q31_t)0x699c20be, (q31_t)0x699893c9, (q31_t)0x69950692, (q31_t)0x6991791a, (q31_t)0x698deb61,\n  (q31_t)0x698a5d67, (q31_t)0x6986cf2c, (q31_t)0x698340af, (q31_t)0x697fb1f2, (q31_t)0x697c22f3, (q31_t)0x697893b4, (q31_t)0x69750433, (q31_t)0x69717472,\n  (q31_t)0x696de46f, (q31_t)0x696a542b, (q31_t)0x6966c3a6, (q31_t)0x696332e1, (q31_t)0x695fa1da, (q31_t)0x695c1092, (q31_t)0x69587f09, (q31_t)0x6954ed40,\n  (q31_t)0x69515b35, (q31_t)0x694dc8e9, (q31_t)0x694a365c, (q31_t)0x6946a38f, (q31_t)0x69431080, (q31_t)0x693f7d31, (q31_t)0x693be9a0, (q31_t)0x693855cf,\n  (q31_t)0x6934c1bd, (q31_t)0x69312d6a, (q31_t)0x692d98d6, (q31_t)0x692a0401, (q31_t)0x69266eeb, (q31_t)0x6922d995, (q31_t)0x691f43fd, (q31_t)0x691bae25,\n  (q31_t)0x6918180c, (q31_t)0x691481b2, (q31_t)0x6910eb17, (q31_t)0x690d543b, (q31_t)0x6909bd1f, (q31_t)0x690625c2, (q31_t)0x69028e24, (q31_t)0x68fef645,\n  (q31_t)0x68fb5e25, (q31_t)0x68f7c5c5, (q31_t)0x68f42d24, (q31_t)0x68f09442, (q31_t)0x68ecfb20, (q31_t)0x68e961bd, (q31_t)0x68e5c819, (q31_t)0x68e22e34,\n  (q31_t)0x68de940f, (q31_t)0x68daf9a9, (q31_t)0x68d75f02, (q31_t)0x68d3c41b, (q31_t)0x68d028f2, (q31_t)0x68cc8d8a, (q31_t)0x68c8f1e0, (q31_t)0x68c555f6,\n  (q31_t)0x68c1b9cc, (q31_t)0x68be1d61, (q31_t)0x68ba80b5, (q31_t)0x68b6e3c8, (q31_t)0x68b3469b, (q31_t)0x68afa92e, (q31_t)0x68ac0b7f, (q31_t)0x68a86d91,\n  (q31_t)0x68a4cf61, (q31_t)0x68a130f1, (q31_t)0x689d9241, (q31_t)0x6899f350, (q31_t)0x6896541f, (q31_t)0x6892b4ad, (q31_t)0x688f14fa, (q31_t)0x688b7507,\n  (q31_t)0x6887d4d4, (q31_t)0x68843460, (q31_t)0x688093ab, (q31_t)0x687cf2b6, (q31_t)0x68795181, (q31_t)0x6875b00b, (q31_t)0x68720e55, (q31_t)0x686e6c5e,\n  (q31_t)0x686aca27, (q31_t)0x686727b0, (q31_t)0x686384f8, (q31_t)0x685fe200, (q31_t)0x685c3ec7, (q31_t)0x68589b4e, (q31_t)0x6854f795, (q31_t)0x6851539b,\n  (q31_t)0x684daf61, (q31_t)0x684a0ae6, (q31_t)0x6846662c, (q31_t)0x6842c131, (q31_t)0x683f1bf5, (q31_t)0x683b7679, (q31_t)0x6837d0bd, (q31_t)0x68342ac1,\n  (q31_t)0x68308485, (q31_t)0x682cde08, (q31_t)0x6829374b, (q31_t)0x6825904d, (q31_t)0x6821e910, (q31_t)0x681e4192, (q31_t)0x681a99d4, (q31_t)0x6816f1d6,\n  (q31_t)0x68134997, (q31_t)0x680fa118, (q31_t)0x680bf85a, (q31_t)0x68084f5a, (q31_t)0x6804a61b, (q31_t)0x6800fc9c, (q31_t)0x67fd52dc, (q31_t)0x67f9a8dd,\n  (q31_t)0x67f5fe9d, (q31_t)0x67f2541d, (q31_t)0x67eea95d, (q31_t)0x67eafe5d, (q31_t)0x67e7531c, (q31_t)0x67e3a79c, (q31_t)0x67dffbdc, (q31_t)0x67dc4fdb,\n  (q31_t)0x67d8a39a, (q31_t)0x67d4f71a, (q31_t)0x67d14a59, (q31_t)0x67cd9d58, (q31_t)0x67c9f017, (q31_t)0x67c64297, (q31_t)0x67c294d6, (q31_t)0x67bee6d5,\n  (q31_t)0x67bb3894, (q31_t)0x67b78a13, (q31_t)0x67b3db53, (q31_t)0x67b02c52, (q31_t)0x67ac7d11, (q31_t)0x67a8cd91, (q31_t)0x67a51dd0, (q31_t)0x67a16dcf,\n  (q31_t)0x679dbd8f, (q31_t)0x679a0d0f, (q31_t)0x67965c4e, (q31_t)0x6792ab4e, (q31_t)0x678efa0e, (q31_t)0x678b488e, (q31_t)0x678796ce, (q31_t)0x6783e4cf,\n  (q31_t)0x6780328f, (q31_t)0x677c8010, (q31_t)0x6778cd50, (q31_t)0x67751a51, (q31_t)0x67716713, (q31_t)0x676db394, (q31_t)0x6769ffd5, (q31_t)0x67664bd7,\n  (q31_t)0x67629799, (q31_t)0x675ee31b, (q31_t)0x675b2e5e, (q31_t)0x67577960, (q31_t)0x6753c423, (q31_t)0x67500ea7, (q31_t)0x674c58ea, (q31_t)0x6748a2ee,\n  (q31_t)0x6744ecb2, (q31_t)0x67413636, (q31_t)0x673d7f7b, (q31_t)0x6739c880, (q31_t)0x67361145, (q31_t)0x673259ca, (q31_t)0x672ea210, (q31_t)0x672aea17,\n  (q31_t)0x672731dd, (q31_t)0x67237964, (q31_t)0x671fc0ac, (q31_t)0x671c07b4, (q31_t)0x67184e7c, (q31_t)0x67149504, (q31_t)0x6710db4d, (q31_t)0x670d2157,\n  (q31_t)0x67096721, (q31_t)0x6705acab, (q31_t)0x6701f1f6, (q31_t)0x66fe3701, (q31_t)0x66fa7bcd, (q31_t)0x66f6c059, (q31_t)0x66f304a6, (q31_t)0x66ef48b3,\n  (q31_t)0x66eb8c80, (q31_t)0x66e7d00f, (q31_t)0x66e4135d, (q31_t)0x66e0566c, (q31_t)0x66dc993c, (q31_t)0x66d8dbcd, (q31_t)0x66d51e1d, (q31_t)0x66d1602f,\n  (q31_t)0x66cda201, (q31_t)0x66c9e393, (q31_t)0x66c624e7, (q31_t)0x66c265fa, (q31_t)0x66bea6cf, (q31_t)0x66bae764, (q31_t)0x66b727ba, (q31_t)0x66b367d0,\n  (q31_t)0x66afa7a7, (q31_t)0x66abe73f, (q31_t)0x66a82697, (q31_t)0x66a465b0, (q31_t)0x66a0a489, (q31_t)0x669ce324, (q31_t)0x6699217f, (q31_t)0x66955f9b,\n  (q31_t)0x66919d77, (q31_t)0x668ddb14, (q31_t)0x668a1872, (q31_t)0x66865591, (q31_t)0x66829270, (q31_t)0x667ecf11, (q31_t)0x667b0b72, (q31_t)0x66774793,\n  (q31_t)0x66738376, (q31_t)0x666fbf19, (q31_t)0x666bfa7d, (q31_t)0x666835a2, (q31_t)0x66647088, (q31_t)0x6660ab2f, (q31_t)0x665ce596, (q31_t)0x66591fbf,\n  (q31_t)0x665559a8, (q31_t)0x66519352, (q31_t)0x664dccbd, (q31_t)0x664a05e9, (q31_t)0x66463ed6, (q31_t)0x66427784, (q31_t)0x663eaff2, (q31_t)0x663ae822,\n  (q31_t)0x66372012, (q31_t)0x663357c4, (q31_t)0x662f8f36, (q31_t)0x662bc66a, (q31_t)0x6627fd5e, (q31_t)0x66243413, (q31_t)0x66206a8a, (q31_t)0x661ca0c1,\n  (q31_t)0x6618d6b9, (q31_t)0x66150c73, (q31_t)0x661141ed, (q31_t)0x660d7729, (q31_t)0x6609ac25, (q31_t)0x6605e0e3, (q31_t)0x66021561, (q31_t)0x65fe49a1,\n  (q31_t)0x65fa7da2, (q31_t)0x65f6b164, (q31_t)0x65f2e4e7, (q31_t)0x65ef182b, (q31_t)0x65eb4b30, (q31_t)0x65e77df6, (q31_t)0x65e3b07e, (q31_t)0x65dfe2c6,\n  (q31_t)0x65dc14d0, (q31_t)0x65d8469b, (q31_t)0x65d47827, (q31_t)0x65d0a975, (q31_t)0x65ccda83, (q31_t)0x65c90b53, (q31_t)0x65c53be4, (q31_t)0x65c16c36,\n  (q31_t)0x65bd9c49, (q31_t)0x65b9cc1e, (q31_t)0x65b5fbb4, (q31_t)0x65b22b0b, (q31_t)0x65ae5a23, (q31_t)0x65aa88fd, (q31_t)0x65a6b798, (q31_t)0x65a2e5f4,\n  (q31_t)0x659f1412, (q31_t)0x659b41f1, (q31_t)0x65976f91, (q31_t)0x65939cf3, (q31_t)0x658fca15, (q31_t)0x658bf6fa, (q31_t)0x6588239f, (q31_t)0x65845006,\n  (q31_t)0x65807c2f, (q31_t)0x657ca818, (q31_t)0x6578d3c4, (q31_t)0x6574ff30, (q31_t)0x65712a5e, (q31_t)0x656d554d, (q31_t)0x65697ffe, (q31_t)0x6565aa71,\n  (q31_t)0x6561d4a4, (q31_t)0x655dfe99, (q31_t)0x655a2850, (q31_t)0x655651c8, (q31_t)0x65527b02, (q31_t)0x654ea3fd, (q31_t)0x654accba, (q31_t)0x6546f538,\n  (q31_t)0x65431d77, (q31_t)0x653f4579, (q31_t)0x653b6d3b, (q31_t)0x653794c0, (q31_t)0x6533bc06, (q31_t)0x652fe30d, (q31_t)0x652c09d6, (q31_t)0x65283061,\n  (q31_t)0x652456ad, (q31_t)0x65207cbb, (q31_t)0x651ca28a, (q31_t)0x6518c81b, (q31_t)0x6514ed6e, (q31_t)0x65111283, (q31_t)0x650d3759, (q31_t)0x65095bf0,\n  (q31_t)0x6505804a, (q31_t)0x6501a465, (q31_t)0x64fdc841, (q31_t)0x64f9ebe0, (q31_t)0x64f60f40, (q31_t)0x64f23262, (q31_t)0x64ee5546, (q31_t)0x64ea77eb,\n  (q31_t)0x64e69a52, (q31_t)0x64e2bc7b, (q31_t)0x64dede66, (q31_t)0x64db0012, (q31_t)0x64d72180, (q31_t)0x64d342b0, (q31_t)0x64cf63a2, (q31_t)0x64cb8456,\n  (q31_t)0x64c7a4cb, (q31_t)0x64c3c502, (q31_t)0x64bfe4fc, (q31_t)0x64bc04b6, (q31_t)0x64b82433, (q31_t)0x64b44372, (q31_t)0x64b06273, (q31_t)0x64ac8135,\n  (q31_t)0x64a89fba, (q31_t)0x64a4be00, (q31_t)0x64a0dc08, (q31_t)0x649cf9d2, (q31_t)0x6499175e, (q31_t)0x649534ac, (q31_t)0x649151bc, (q31_t)0x648d6e8e,\n  (q31_t)0x64898b22, (q31_t)0x6485a778, (q31_t)0x6481c390, (q31_t)0x647ddf6a, (q31_t)0x6479fb06, (q31_t)0x64761664, (q31_t)0x64723184, (q31_t)0x646e4c66,\n  (q31_t)0x646a670a, (q31_t)0x64668170, (q31_t)0x64629b98, (q31_t)0x645eb582, (q31_t)0x645acf2e, (q31_t)0x6456e89d, (q31_t)0x645301cd, (q31_t)0x644f1ac0,\n  (q31_t)0x644b3375, (q31_t)0x64474bec, (q31_t)0x64436425, (q31_t)0x643f7c20, (q31_t)0x643b93dd, (q31_t)0x6437ab5d, (q31_t)0x6433c29f, (q31_t)0x642fd9a3,\n  (q31_t)0x642bf069, (q31_t)0x642806f1, (q31_t)0x64241d3c, (q31_t)0x64203348, (q31_t)0x641c4917, (q31_t)0x64185ea9, (q31_t)0x641473fc, (q31_t)0x64108912,\n  (q31_t)0x640c9dea, (q31_t)0x6408b284, (q31_t)0x6404c6e1, (q31_t)0x6400db00, (q31_t)0x63fceee1, (q31_t)0x63f90285, (q31_t)0x63f515eb, (q31_t)0x63f12913,\n  (q31_t)0x63ed3bfd, (q31_t)0x63e94eaa, (q31_t)0x63e5611a, (q31_t)0x63e1734b, (q31_t)0x63dd853f, (q31_t)0x63d996f6, (q31_t)0x63d5a86f, (q31_t)0x63d1b9aa,\n  (q31_t)0x63cdcaa8, (q31_t)0x63c9db68, (q31_t)0x63c5ebeb, (q31_t)0x63c1fc30, (q31_t)0x63be0c37, (q31_t)0x63ba1c01, (q31_t)0x63b62b8e, (q31_t)0x63b23add,\n  (q31_t)0x63ae49ee, (q31_t)0x63aa58c2, (q31_t)0x63a66759, (q31_t)0x63a275b2, (q31_t)0x639e83cd, (q31_t)0x639a91ac, (q31_t)0x63969f4c, (q31_t)0x6392acaf,\n  (q31_t)0x638eb9d5, (q31_t)0x638ac6be, (q31_t)0x6386d369, (q31_t)0x6382dfd6, (q31_t)0x637eec07, (q31_t)0x637af7fa, (q31_t)0x637703af, (q31_t)0x63730f27,\n  (q31_t)0x636f1a62, (q31_t)0x636b2560, (q31_t)0x63673020, (q31_t)0x63633aa3, (q31_t)0x635f44e8, (q31_t)0x635b4ef0, (q31_t)0x635758bb, (q31_t)0x63536249,\n  (q31_t)0x634f6b99, (q31_t)0x634b74ad, (q31_t)0x63477d82, (q31_t)0x6343861b, (q31_t)0x633f8e76, (q31_t)0x633b9695, (q31_t)0x63379e76, (q31_t)0x6333a619,\n  (q31_t)0x632fad80, (q31_t)0x632bb4a9, (q31_t)0x6327bb96, (q31_t)0x6323c245, (q31_t)0x631fc8b7, (q31_t)0x631bceeb, (q31_t)0x6317d4e3, (q31_t)0x6313da9e,\n  (q31_t)0x630fe01b, (q31_t)0x630be55b, (q31_t)0x6307ea5e, (q31_t)0x6303ef25, (q31_t)0x62fff3ae, (q31_t)0x62fbf7fa, (q31_t)0x62f7fc08, (q31_t)0x62f3ffda,\n  (q31_t)0x62f0036f, (q31_t)0x62ec06c7, (q31_t)0x62e809e2, (q31_t)0x62e40cbf, (q31_t)0x62e00f60, (q31_t)0x62dc11c4, (q31_t)0x62d813eb, (q31_t)0x62d415d4,\n  (q31_t)0x62d01781, (q31_t)0x62cc18f1, (q31_t)0x62c81a24, (q31_t)0x62c41b1a, (q31_t)0x62c01bd3, (q31_t)0x62bc1c4f, (q31_t)0x62b81c8f, (q31_t)0x62b41c91,\n  (q31_t)0x62b01c57, (q31_t)0x62ac1bdf, (q31_t)0x62a81b2b, (q31_t)0x62a41a3a, (q31_t)0x62a0190c, (q31_t)0x629c17a1, (q31_t)0x629815fa, (q31_t)0x62941415,\n  (q31_t)0x629011f4, (q31_t)0x628c0f96, (q31_t)0x62880cfb, (q31_t)0x62840a23, (q31_t)0x6280070f, (q31_t)0x627c03be, (q31_t)0x62780030, (q31_t)0x6273fc65,\n  (q31_t)0x626ff85e, (q31_t)0x626bf41a, (q31_t)0x6267ef99, (q31_t)0x6263eadc, (q31_t)0x625fe5e1, (q31_t)0x625be0ab, (q31_t)0x6257db37, (q31_t)0x6253d587,\n  (q31_t)0x624fcf9a, (q31_t)0x624bc970, (q31_t)0x6247c30a, (q31_t)0x6243bc68, (q31_t)0x623fb588, (q31_t)0x623bae6c, (q31_t)0x6237a714, (q31_t)0x62339f7e,\n  (q31_t)0x622f97ad, (q31_t)0x622b8f9e, (q31_t)0x62278754, (q31_t)0x62237ecc, (q31_t)0x621f7608, (q31_t)0x621b6d08, (q31_t)0x621763cb, (q31_t)0x62135a51,\n  (q31_t)0x620f509b, (q31_t)0x620b46a9, (q31_t)0x62073c7a, (q31_t)0x6203320e, (q31_t)0x61ff2766, (q31_t)0x61fb1c82, (q31_t)0x61f71161, (q31_t)0x61f30604,\n  (q31_t)0x61eefa6b, (q31_t)0x61eaee95, (q31_t)0x61e6e282, (q31_t)0x61e2d633, (q31_t)0x61dec9a8, (q31_t)0x61dabce0, (q31_t)0x61d6afdd, (q31_t)0x61d2a29c,\n  (q31_t)0x61ce9520, (q31_t)0x61ca8767, (q31_t)0x61c67971, (q31_t)0x61c26b40, (q31_t)0x61be5cd2, (q31_t)0x61ba4e28, (q31_t)0x61b63f41, (q31_t)0x61b2301e,\n  (q31_t)0x61ae20bf, (q31_t)0x61aa1124, (q31_t)0x61a6014d, (q31_t)0x61a1f139, (q31_t)0x619de0e9, (q31_t)0x6199d05d, (q31_t)0x6195bf94, (q31_t)0x6191ae90,\n  (q31_t)0x618d9d4f, (q31_t)0x61898bd2, (q31_t)0x61857a19, (q31_t)0x61816824, (q31_t)0x617d55f2, (q31_t)0x61794385, (q31_t)0x617530db, (q31_t)0x61711df5,\n  (q31_t)0x616d0ad3, (q31_t)0x6168f775, (q31_t)0x6164e3db, (q31_t)0x6160d005, (q31_t)0x615cbbf3, (q31_t)0x6158a7a4, (q31_t)0x6154931a, (q31_t)0x61507e54,\n  (q31_t)0x614c6951, (q31_t)0x61485413, (q31_t)0x61443e98, (q31_t)0x614028e2, (q31_t)0x613c12f0, (q31_t)0x6137fcc1, (q31_t)0x6133e657, (q31_t)0x612fcfb0,\n  (q31_t)0x612bb8ce, (q31_t)0x6127a1b0, (q31_t)0x61238a56, (q31_t)0x611f72c0, (q31_t)0x611b5aee, (q31_t)0x611742e0, (q31_t)0x61132a96, (q31_t)0x610f1210,\n  (q31_t)0x610af94f, (q31_t)0x6106e051, (q31_t)0x6102c718, (q31_t)0x60feada3, (q31_t)0x60fa93f2, (q31_t)0x60f67a05, (q31_t)0x60f25fdd, (q31_t)0x60ee4579,\n  (q31_t)0x60ea2ad8, (q31_t)0x60e60ffd, (q31_t)0x60e1f4e5, (q31_t)0x60ddd991, (q31_t)0x60d9be02, (q31_t)0x60d5a237, (q31_t)0x60d18631, (q31_t)0x60cd69ee,\n  (q31_t)0x60c94d70, (q31_t)0x60c530b6, (q31_t)0x60c113c1, (q31_t)0x60bcf690, (q31_t)0x60b8d923, (q31_t)0x60b4bb7a, (q31_t)0x60b09d96, (q31_t)0x60ac7f76,\n  (q31_t)0x60a8611b, (q31_t)0x60a44284, (q31_t)0x60a023b1, (q31_t)0x609c04a3, (q31_t)0x6097e559, (q31_t)0x6093c5d3, (q31_t)0x608fa612, (q31_t)0x608b8616,\n  (q31_t)0x608765dd, (q31_t)0x6083456a, (q31_t)0x607f24ba, (q31_t)0x607b03d0, (q31_t)0x6076e2a9, (q31_t)0x6072c148, (q31_t)0x606e9faa, (q31_t)0x606a7dd2,\n  (q31_t)0x60665bbd, (q31_t)0x6062396e, (q31_t)0x605e16e2, (q31_t)0x6059f41c, (q31_t)0x6055d11a, (q31_t)0x6051addc, (q31_t)0x604d8a63, (q31_t)0x604966af,\n  (q31_t)0x604542bf, (q31_t)0x60411e94, (q31_t)0x603cfa2e, (q31_t)0x6038d58c, (q31_t)0x6034b0af, (q31_t)0x60308b97, (q31_t)0x602c6643, (q31_t)0x602840b4,\n  (q31_t)0x60241ae9, (q31_t)0x601ff4e3, (q31_t)0x601bcea2, (q31_t)0x6017a826, (q31_t)0x6013816e, (q31_t)0x600f5a7b, (q31_t)0x600b334d, (q31_t)0x60070be4,\n  (q31_t)0x6002e43f, (q31_t)0x5ffebc5f, (q31_t)0x5ffa9444, (q31_t)0x5ff66bee, (q31_t)0x5ff2435d, (q31_t)0x5fee1a90, (q31_t)0x5fe9f188, (q31_t)0x5fe5c845,\n  (q31_t)0x5fe19ec7, (q31_t)0x5fdd750e, (q31_t)0x5fd94b19, (q31_t)0x5fd520ea, (q31_t)0x5fd0f67f, (q31_t)0x5fcccbd9, (q31_t)0x5fc8a0f8, (q31_t)0x5fc475dc,\n  (q31_t)0x5fc04a85, (q31_t)0x5fbc1ef3, (q31_t)0x5fb7f326, (q31_t)0x5fb3c71e, (q31_t)0x5faf9adb, (q31_t)0x5fab6e5d, (q31_t)0x5fa741a3, (q31_t)0x5fa314af,\n  (q31_t)0x5f9ee780, (q31_t)0x5f9aba16, (q31_t)0x5f968c70, (q31_t)0x5f925e90, (q31_t)0x5f8e3075, (q31_t)0x5f8a021f, (q31_t)0x5f85d38e, (q31_t)0x5f81a4c2,\n  (q31_t)0x5f7d75bb, (q31_t)0x5f794679, (q31_t)0x5f7516fd, (q31_t)0x5f70e745, (q31_t)0x5f6cb753, (q31_t)0x5f688726, (q31_t)0x5f6456be, (q31_t)0x5f60261b,\n  (q31_t)0x5f5bf53d, (q31_t)0x5f57c424, (q31_t)0x5f5392d1, (q31_t)0x5f4f6143, (q31_t)0x5f4b2f7a, (q31_t)0x5f46fd76, (q31_t)0x5f42cb37, (q31_t)0x5f3e98be,\n  (q31_t)0x5f3a660a, (q31_t)0x5f36331b, (q31_t)0x5f31fff1, (q31_t)0x5f2dcc8d, (q31_t)0x5f2998ee, (q31_t)0x5f256515, (q31_t)0x5f213100, (q31_t)0x5f1cfcb1,\n  (q31_t)0x5f18c827, (q31_t)0x5f149363, (q31_t)0x5f105e64, (q31_t)0x5f0c292a, (q31_t)0x5f07f3b6, (q31_t)0x5f03be07, (q31_t)0x5eff881d, (q31_t)0x5efb51f9,\n  (q31_t)0x5ef71b9b, (q31_t)0x5ef2e501, (q31_t)0x5eeeae2d, (q31_t)0x5eea771f, (q31_t)0x5ee63fd6, (q31_t)0x5ee20853, (q31_t)0x5eddd094, (q31_t)0x5ed9989c,\n  (q31_t)0x5ed56069, (q31_t)0x5ed127fb, (q31_t)0x5eccef53, (q31_t)0x5ec8b671, (q31_t)0x5ec47d54, (q31_t)0x5ec043fc, (q31_t)0x5ebc0a6a, (q31_t)0x5eb7d09e,\n  (q31_t)0x5eb39697, (q31_t)0x5eaf5c56, (q31_t)0x5eab21da, (q31_t)0x5ea6e724, (q31_t)0x5ea2ac34, (q31_t)0x5e9e7109, (q31_t)0x5e9a35a4, (q31_t)0x5e95fa05,\n  (q31_t)0x5e91be2b, (q31_t)0x5e8d8217, (q31_t)0x5e8945c8, (q31_t)0x5e85093f, (q31_t)0x5e80cc7c, (q31_t)0x5e7c8f7f, (q31_t)0x5e785247, (q31_t)0x5e7414d5,\n  (q31_t)0x5e6fd729, (q31_t)0x5e6b9943, (q31_t)0x5e675b22, (q31_t)0x5e631cc7, (q31_t)0x5e5ede32, (q31_t)0x5e5a9f62, (q31_t)0x5e566059, (q31_t)0x5e522115,\n  (q31_t)0x5e4de197, (q31_t)0x5e49a1df, (q31_t)0x5e4561ed, (q31_t)0x5e4121c0, (q31_t)0x5e3ce15a, (q31_t)0x5e38a0b9, (q31_t)0x5e345fde, (q31_t)0x5e301ec9,\n  (q31_t)0x5e2bdd7a, (q31_t)0x5e279bf1, (q31_t)0x5e235a2e, (q31_t)0x5e1f1830, (q31_t)0x5e1ad5f9, (q31_t)0x5e169388, (q31_t)0x5e1250dc, (q31_t)0x5e0e0df7,\n  (q31_t)0x5e09cad7, (q31_t)0x5e05877e, (q31_t)0x5e0143ea, (q31_t)0x5dfd001d, (q31_t)0x5df8bc15, (q31_t)0x5df477d4, (q31_t)0x5df03359, (q31_t)0x5debeea3,\n  (q31_t)0x5de7a9b4, (q31_t)0x5de3648b, (q31_t)0x5ddf1f28, (q31_t)0x5ddad98b, (q31_t)0x5dd693b4, (q31_t)0x5dd24da3, (q31_t)0x5dce0759, (q31_t)0x5dc9c0d4,\n  (q31_t)0x5dc57a16, (q31_t)0x5dc1331d, (q31_t)0x5dbcebeb, (q31_t)0x5db8a480, (q31_t)0x5db45cda, (q31_t)0x5db014fa, (q31_t)0x5dabcce1, (q31_t)0x5da7848e,\n  (q31_t)0x5da33c01, (q31_t)0x5d9ef33b, (q31_t)0x5d9aaa3a, (q31_t)0x5d966100, (q31_t)0x5d92178d, (q31_t)0x5d8dcddf, (q31_t)0x5d8983f8, (q31_t)0x5d8539d7,\n  (q31_t)0x5d80ef7c, (q31_t)0x5d7ca4e8, (q31_t)0x5d785a1a, (q31_t)0x5d740f12, (q31_t)0x5d6fc3d1, (q31_t)0x5d6b7856, (q31_t)0x5d672ca2, (q31_t)0x5d62e0b4,\n  (q31_t)0x5d5e948c, (q31_t)0x5d5a482a, (q31_t)0x5d55fb90, (q31_t)0x5d51aebb, (q31_t)0x5d4d61ad, (q31_t)0x5d491465, (q31_t)0x5d44c6e4, (q31_t)0x5d40792a,\n  (q31_t)0x5d3c2b35, (q31_t)0x5d37dd08, (q31_t)0x5d338ea0, (q31_t)0x5d2f4000, (q31_t)0x5d2af125, (q31_t)0x5d26a212, (q31_t)0x5d2252c5, (q31_t)0x5d1e033e,\n  (q31_t)0x5d19b37e, (q31_t)0x5d156385, (q31_t)0x5d111352, (q31_t)0x5d0cc2e5, (q31_t)0x5d087240, (q31_t)0x5d042161, (q31_t)0x5cffd048, (q31_t)0x5cfb7ef7,\n  (q31_t)0x5cf72d6b, (q31_t)0x5cf2dba7, (q31_t)0x5cee89a9, (q31_t)0x5cea3772, (q31_t)0x5ce5e501, (q31_t)0x5ce19258, (q31_t)0x5cdd3f75, (q31_t)0x5cd8ec58,\n  (q31_t)0x5cd49903, (q31_t)0x5cd04574, (q31_t)0x5ccbf1ab, (q31_t)0x5cc79daa, (q31_t)0x5cc3496f, (q31_t)0x5cbef4fc, (q31_t)0x5cbaa04f, (q31_t)0x5cb64b68,\n  (q31_t)0x5cb1f649, (q31_t)0x5cada0f0, (q31_t)0x5ca94b5e, (q31_t)0x5ca4f594, (q31_t)0x5ca09f8f, (q31_t)0x5c9c4952, (q31_t)0x5c97f2dc, (q31_t)0x5c939c2c,\n  (q31_t)0x5c8f4544, (q31_t)0x5c8aee22, (q31_t)0x5c8696c7, (q31_t)0x5c823f34, (q31_t)0x5c7de767, (q31_t)0x5c798f61, (q31_t)0x5c753722, (q31_t)0x5c70deaa,\n  (q31_t)0x5c6c85f9, (q31_t)0x5c682d0f, (q31_t)0x5c63d3eb, (q31_t)0x5c5f7a8f, (q31_t)0x5c5b20fa, (q31_t)0x5c56c72c, (q31_t)0x5c526d25, (q31_t)0x5c4e12e5,\n  (q31_t)0x5c49b86d, (q31_t)0x5c455dbb, (q31_t)0x5c4102d0, (q31_t)0x5c3ca7ad, (q31_t)0x5c384c50, (q31_t)0x5c33f0bb, (q31_t)0x5c2f94ec, (q31_t)0x5c2b38e5,\n  (q31_t)0x5c26dca5, (q31_t)0x5c22802c, (q31_t)0x5c1e237b, (q31_t)0x5c19c690, (q31_t)0x5c15696d, (q31_t)0x5c110c11, (q31_t)0x5c0cae7c, (q31_t)0x5c0850ae,\n  (q31_t)0x5c03f2a8, (q31_t)0x5bff9469, (q31_t)0x5bfb35f1, (q31_t)0x5bf6d740, (q31_t)0x5bf27857, (q31_t)0x5bee1935, (q31_t)0x5be9b9da, (q31_t)0x5be55a46,\n  (q31_t)0x5be0fa7a, (q31_t)0x5bdc9a75, (q31_t)0x5bd83a37, (q31_t)0x5bd3d9c1, (q31_t)0x5bcf7912, (q31_t)0x5bcb182b, (q31_t)0x5bc6b70b, (q31_t)0x5bc255b2,\n  (q31_t)0x5bbdf421, (q31_t)0x5bb99257, (q31_t)0x5bb53054, (q31_t)0x5bb0ce19, (q31_t)0x5bac6ba6, (q31_t)0x5ba808f9, (q31_t)0x5ba3a615, (q31_t)0x5b9f42f7,\n  (q31_t)0x5b9adfa2, (q31_t)0x5b967c13, (q31_t)0x5b92184d, (q31_t)0x5b8db44d, (q31_t)0x5b895016, (q31_t)0x5b84eba6, (q31_t)0x5b8086fd, (q31_t)0x5b7c221c,\n  (q31_t)0x5b77bd02, (q31_t)0x5b7357b0, (q31_t)0x5b6ef226, (q31_t)0x5b6a8c63, (q31_t)0x5b662668, (q31_t)0x5b61c035, (q31_t)0x5b5d59c9, (q31_t)0x5b58f324,\n  (q31_t)0x5b548c48, (q31_t)0x5b502533, (q31_t)0x5b4bbde6, (q31_t)0x5b475660, (q31_t)0x5b42eea2, (q31_t)0x5b3e86ac, (q31_t)0x5b3a1e7e, (q31_t)0x5b35b617,\n  (q31_t)0x5b314d78, (q31_t)0x5b2ce4a1, (q31_t)0x5b287b91, (q31_t)0x5b241249, (q31_t)0x5b1fa8c9, (q31_t)0x5b1b3f11, (q31_t)0x5b16d521, (q31_t)0x5b126af8,\n  (q31_t)0x5b0e0098, (q31_t)0x5b0995ff, (q31_t)0x5b052b2e, (q31_t)0x5b00c025, (q31_t)0x5afc54e3, (q31_t)0x5af7e96a, (q31_t)0x5af37db8, (q31_t)0x5aef11cf,\n  (q31_t)0x5aeaa5ad, (q31_t)0x5ae63953, (q31_t)0x5ae1ccc1, (q31_t)0x5add5ff7, (q31_t)0x5ad8f2f5, (q31_t)0x5ad485bb, (q31_t)0x5ad01849, (q31_t)0x5acbaa9f,\n  (q31_t)0x5ac73cbd, (q31_t)0x5ac2cea3, (q31_t)0x5abe6050, (q31_t)0x5ab9f1c6, (q31_t)0x5ab58304, (q31_t)0x5ab1140a, (q31_t)0x5aaca4d8, (q31_t)0x5aa8356f,\n  (q31_t)0x5aa3c5cd, (q31_t)0x5a9f55f3, (q31_t)0x5a9ae5e2, (q31_t)0x5a967598, (q31_t)0x5a920517, (q31_t)0x5a8d945d, (q31_t)0x5a89236c, (q31_t)0x5a84b243,\n  (q31_t)0x5a8040e3, (q31_t)0x5a7bcf4a, (q31_t)0x5a775d7a, (q31_t)0x5a72eb71, (q31_t)0x5a6e7931, (q31_t)0x5a6a06ba, (q31_t)0x5a65940a, (q31_t)0x5a612123,\n  (q31_t)0x5a5cae04, (q31_t)0x5a583aad, (q31_t)0x5a53c71e, (q31_t)0x5a4f5358, (q31_t)0x5a4adf5a, (q31_t)0x5a466b24, (q31_t)0x5a41f6b7, (q31_t)0x5a3d8212,\n  (q31_t)0x5a390d35, (q31_t)0x5a349821, (q31_t)0x5a3022d5, (q31_t)0x5a2bad51, (q31_t)0x5a273796, (q31_t)0x5a22c1a3, (q31_t)0x5a1e4b79, (q31_t)0x5a19d517,\n  (q31_t)0x5a155e7d, (q31_t)0x5a10e7ac, (q31_t)0x5a0c70a3, (q31_t)0x5a07f963, (q31_t)0x5a0381eb, (q31_t)0x59ff0a3c, (q31_t)0x59fa9255, (q31_t)0x59f61a36,\n  (q31_t)0x59f1a1e0, (q31_t)0x59ed2953, (q31_t)0x59e8b08e, (q31_t)0x59e43792, (q31_t)0x59dfbe5e, (q31_t)0x59db44f3, (q31_t)0x59d6cb50, (q31_t)0x59d25176,\n  (q31_t)0x59cdd765, (q31_t)0x59c95d1c, (q31_t)0x59c4e29c, (q31_t)0x59c067e4, (q31_t)0x59bbecf5, (q31_t)0x59b771cf, (q31_t)0x59b2f671, (q31_t)0x59ae7add,\n  (q31_t)0x59a9ff10, (q31_t)0x59a5830d, (q31_t)0x59a106d2, (q31_t)0x599c8a60, (q31_t)0x59980db6, (q31_t)0x599390d5, (q31_t)0x598f13bd, (q31_t)0x598a966e,\n  (q31_t)0x598618e8, (q31_t)0x59819b2a, (q31_t)0x597d1d35, (q31_t)0x59789f09, (q31_t)0x597420a6, (q31_t)0x596fa20b, (q31_t)0x596b233a, (q31_t)0x5966a431,\n  (q31_t)0x596224f1, (q31_t)0x595da57a, (q31_t)0x595925cc, (q31_t)0x5954a5e6, (q31_t)0x595025ca, (q31_t)0x594ba576, (q31_t)0x594724ec, (q31_t)0x5942a42a,\n  (q31_t)0x593e2331, (q31_t)0x5939a202, (q31_t)0x5935209b, (q31_t)0x59309efd, (q31_t)0x592c1d28, (q31_t)0x59279b1c, (q31_t)0x592318d9, (q31_t)0x591e9660,\n  (q31_t)0x591a13af, (q31_t)0x591590c7, (q31_t)0x59110da8, (q31_t)0x590c8a53, (q31_t)0x590806c6, (q31_t)0x59038302, (q31_t)0x58feff08, (q31_t)0x58fa7ad7,\n  (q31_t)0x58f5f66e, (q31_t)0x58f171cf, (q31_t)0x58ececf9, (q31_t)0x58e867ed, (q31_t)0x58e3e2a9, (q31_t)0x58df5d2e, (q31_t)0x58dad77d, (q31_t)0x58d65195,\n  (q31_t)0x58d1cb76, (q31_t)0x58cd4520, (q31_t)0x58c8be94, (q31_t)0x58c437d1, (q31_t)0x58bfb0d7, (q31_t)0x58bb29a6, (q31_t)0x58b6a23e, (q31_t)0x58b21aa0,\n  (q31_t)0x58ad92cb, (q31_t)0x58a90ac0, (q31_t)0x58a4827d, (q31_t)0x589ffa04, (q31_t)0x589b7155, (q31_t)0x5896e86f, (q31_t)0x58925f52, (q31_t)0x588dd5fe,\n  (q31_t)0x58894c74, (q31_t)0x5884c2b3, (q31_t)0x588038bb, (q31_t)0x587bae8d, (q31_t)0x58772429, (q31_t)0x5872998e, (q31_t)0x586e0ebc, (q31_t)0x586983b4,\n  (q31_t)0x5864f875, (q31_t)0x58606d00, (q31_t)0x585be154, (q31_t)0x58575571, (q31_t)0x5852c958, (q31_t)0x584e3d09, (q31_t)0x5849b083, (q31_t)0x584523c7,\n  (q31_t)0x584096d4, (q31_t)0x583c09ab, (q31_t)0x58377c4c, (q31_t)0x5832eeb6, (q31_t)0x582e60e9, (q31_t)0x5829d2e6, (q31_t)0x582544ad, (q31_t)0x5820b63e,\n  (q31_t)0x581c2798, (q31_t)0x581798bb, (q31_t)0x581309a9, (q31_t)0x580e7a60, (q31_t)0x5809eae1, (q31_t)0x58055b2b, (q31_t)0x5800cb3f, (q31_t)0x57fc3b1d,\n  (q31_t)0x57f7aac5, (q31_t)0x57f31a36, (q31_t)0x57ee8971, (q31_t)0x57e9f876, (q31_t)0x57e56744, (q31_t)0x57e0d5dd, (q31_t)0x57dc443f, (q31_t)0x57d7b26b,\n  (q31_t)0x57d32061, (q31_t)0x57ce8e20, (q31_t)0x57c9fbaa, (q31_t)0x57c568fd, (q31_t)0x57c0d61a, (q31_t)0x57bc4301, (q31_t)0x57b7afb2, (q31_t)0x57b31c2d,\n  (q31_t)0x57ae8872, (q31_t)0x57a9f480, (q31_t)0x57a56059, (q31_t)0x57a0cbfb, (q31_t)0x579c3768, (q31_t)0x5797a29e, (q31_t)0x57930d9e, (q31_t)0x578e7869,\n  (q31_t)0x5789e2fd, (q31_t)0x57854d5b, (q31_t)0x5780b784, (q31_t)0x577c2176, (q31_t)0x57778b32, (q31_t)0x5772f4b9, (q31_t)0x576e5e09, (q31_t)0x5769c724,\n  (q31_t)0x57653009, (q31_t)0x576098b7, (q31_t)0x575c0130, (q31_t)0x57576973, (q31_t)0x5752d180, (q31_t)0x574e3957, (q31_t)0x5749a0f9, (q31_t)0x57450864,\n  (q31_t)0x57406f9a, (q31_t)0x573bd69a, (q31_t)0x57373d64, (q31_t)0x5732a3f8, (q31_t)0x572e0a56, (q31_t)0x5729707f, (q31_t)0x5724d672, (q31_t)0x57203c2f,\n  (q31_t)0x571ba1b7, (q31_t)0x57170708, (q31_t)0x57126c24, (q31_t)0x570dd10a, (q31_t)0x570935bb, (q31_t)0x57049a36, (q31_t)0x56fffe7b, (q31_t)0x56fb628b,\n  (q31_t)0x56f6c664, (q31_t)0x56f22a09, (q31_t)0x56ed8d77, (q31_t)0x56e8f0b0, (q31_t)0x56e453b4, (q31_t)0x56dfb681, (q31_t)0x56db1919, (q31_t)0x56d67b7c,\n  (q31_t)0x56d1dda9, (q31_t)0x56cd3fa1, (q31_t)0x56c8a162, (q31_t)0x56c402ef, (q31_t)0x56bf6446, (q31_t)0x56bac567, (q31_t)0x56b62653, (q31_t)0x56b18709,\n  (q31_t)0x56ace78a, (q31_t)0x56a847d6, (q31_t)0x56a3a7ec, (q31_t)0x569f07cc, (q31_t)0x569a6777, (q31_t)0x5695c6ed, (q31_t)0x5691262d, (q31_t)0x568c8538,\n  (q31_t)0x5687e40e, (q31_t)0x568342ae, (q31_t)0x567ea118, (q31_t)0x5679ff4e, (q31_t)0x56755d4e, (q31_t)0x5670bb19, (q31_t)0x566c18ae, (q31_t)0x5667760e,\n  (q31_t)0x5662d339, (q31_t)0x565e302e, (q31_t)0x56598cee, (q31_t)0x5654e979, (q31_t)0x565045cf, (q31_t)0x564ba1f0, (q31_t)0x5646fddb, (q31_t)0x56425991,\n  (q31_t)0x563db512, (q31_t)0x5639105d, (q31_t)0x56346b74, (q31_t)0x562fc655, (q31_t)0x562b2101, (q31_t)0x56267b78, (q31_t)0x5621d5ba, (q31_t)0x561d2fc6,\n  (q31_t)0x5618899e, (q31_t)0x5613e340, (q31_t)0x560f3cae, (q31_t)0x560a95e6, (q31_t)0x5605eee9, (q31_t)0x560147b7, (q31_t)0x55fca050, (q31_t)0x55f7f8b4,\n  (q31_t)0x55f350e3, (q31_t)0x55eea8dd, (q31_t)0x55ea00a2, (q31_t)0x55e55832, (q31_t)0x55e0af8d, (q31_t)0x55dc06b3, (q31_t)0x55d75da4, (q31_t)0x55d2b460,\n  (q31_t)0x55ce0ae7, (q31_t)0x55c96139, (q31_t)0x55c4b757, (q31_t)0x55c00d3f, (q31_t)0x55bb62f3, (q31_t)0x55b6b871, (q31_t)0x55b20dbb, (q31_t)0x55ad62d0,\n  (q31_t)0x55a8b7b0, (q31_t)0x55a40c5b, (q31_t)0x559f60d1, (q31_t)0x559ab513, (q31_t)0x55960920, (q31_t)0x55915cf8, (q31_t)0x558cb09b, (q31_t)0x55880409,\n  (q31_t)0x55835743, (q31_t)0x557eaa48, (q31_t)0x5579fd18, (q31_t)0x55754fb3, (q31_t)0x5570a21a, (q31_t)0x556bf44c, (q31_t)0x55674649, (q31_t)0x55629812,\n  (q31_t)0x555de9a6, (q31_t)0x55593b05, (q31_t)0x55548c30, (q31_t)0x554fdd26, (q31_t)0x554b2de7, (q31_t)0x55467e74, (q31_t)0x5541cecc, (q31_t)0x553d1ef0,\n  (q31_t)0x55386edf, (q31_t)0x5533be99, (q31_t)0x552f0e1f, (q31_t)0x552a5d70, (q31_t)0x5525ac8d, (q31_t)0x5520fb75, (q31_t)0x551c4a29, (q31_t)0x551798a8,\n  (q31_t)0x5512e6f3, (q31_t)0x550e3509, (q31_t)0x550982eb, (q31_t)0x5504d099, (q31_t)0x55001e12, (q31_t)0x54fb6b56, (q31_t)0x54f6b866, (q31_t)0x54f20542,\n  (q31_t)0x54ed51e9, (q31_t)0x54e89e5c, (q31_t)0x54e3ea9a, (q31_t)0x54df36a5, (q31_t)0x54da827a, (q31_t)0x54d5ce1c, (q31_t)0x54d11989, (q31_t)0x54cc64c2,\n  (q31_t)0x54c7afc6, (q31_t)0x54c2fa96, (q31_t)0x54be4532, (q31_t)0x54b98f9a, (q31_t)0x54b4d9cd, (q31_t)0x54b023cc, (q31_t)0x54ab6d97, (q31_t)0x54a6b72e,\n  (q31_t)0x54a20090, (q31_t)0x549d49bf, (q31_t)0x549892b9, (q31_t)0x5493db7f, (q31_t)0x548f2410, (q31_t)0x548a6c6e, (q31_t)0x5485b497, (q31_t)0x5480fc8c,\n  (q31_t)0x547c444d, (q31_t)0x54778bda, (q31_t)0x5472d333, (q31_t)0x546e1a58, (q31_t)0x54696149, (q31_t)0x5464a805, (q31_t)0x545fee8e, (q31_t)0x545b34e3,\n  (q31_t)0x54567b03, (q31_t)0x5451c0f0, (q31_t)0x544d06a8, (q31_t)0x54484c2d, (q31_t)0x5443917d, (q31_t)0x543ed699, (q31_t)0x543a1b82, (q31_t)0x54356037,\n  (q31_t)0x5430a4b7, (q31_t)0x542be904, (q31_t)0x54272d1d, (q31_t)0x54227102, (q31_t)0x541db4b3, (q31_t)0x5418f830, (q31_t)0x54143b79, (q31_t)0x540f7e8e,\n  (q31_t)0x540ac170, (q31_t)0x5406041d, (q31_t)0x54014697, (q31_t)0x53fc88dd, (q31_t)0x53f7caef, (q31_t)0x53f30cce, (q31_t)0x53ee4e78, (q31_t)0x53e98fef,\n  (q31_t)0x53e4d132, (q31_t)0x53e01242, (q31_t)0x53db531d, (q31_t)0x53d693c5, (q31_t)0x53d1d439, (q31_t)0x53cd147a, (q31_t)0x53c85486, (q31_t)0x53c3945f,\n  (q31_t)0x53bed405, (q31_t)0x53ba1377, (q31_t)0x53b552b5, (q31_t)0x53b091bf, (q31_t)0x53abd096, (q31_t)0x53a70f39, (q31_t)0x53a24da9, (q31_t)0x539d8be5,\n  (q31_t)0x5398c9ed, (q31_t)0x539407c2, (q31_t)0x538f4564, (q31_t)0x538a82d1, (q31_t)0x5385c00c, (q31_t)0x5380fd12, (q31_t)0x537c39e6, (q31_t)0x53777685,\n  (q31_t)0x5372b2f2, (q31_t)0x536def2a, (q31_t)0x53692b30, (q31_t)0x53646701, (q31_t)0x535fa2a0, (q31_t)0x535ade0b, (q31_t)0x53561942, (q31_t)0x53515447,\n  (q31_t)0x534c8f17, (q31_t)0x5347c9b5, (q31_t)0x5343041f, (q31_t)0x533e3e55, (q31_t)0x53397859, (q31_t)0x5334b229, (q31_t)0x532febc5, (q31_t)0x532b252f,\n  (q31_t)0x53265e65, (q31_t)0x53219767, (q31_t)0x531cd037, (q31_t)0x531808d3, (q31_t)0x5313413c, (q31_t)0x530e7972, (q31_t)0x5309b174, (q31_t)0x5304e943,\n  (q31_t)0x530020df, (q31_t)0x52fb5848, (q31_t)0x52f68f7e, (q31_t)0x52f1c680, (q31_t)0x52ecfd4f, (q31_t)0x52e833ec, (q31_t)0x52e36a55, (q31_t)0x52dea08a,\n  (q31_t)0x52d9d68d, (q31_t)0x52d50c5d, (q31_t)0x52d041f9, (q31_t)0x52cb7763, (q31_t)0x52c6ac99, (q31_t)0x52c1e19d, (q31_t)0x52bd166d, (q31_t)0x52b84b0a,\n  (q31_t)0x52b37f74, (q31_t)0x52aeb3ac, (q31_t)0x52a9e7b0, (q31_t)0x52a51b81, (q31_t)0x52a04f1f, (q31_t)0x529b828a, (q31_t)0x5296b5c3, (q31_t)0x5291e8c8,\n  (q31_t)0x528d1b9b, (q31_t)0x52884e3a, (q31_t)0x528380a7, (q31_t)0x527eb2e0, (q31_t)0x5279e4e7, (q31_t)0x527516bb, (q31_t)0x5270485c, (q31_t)0x526b79ca,\n  (q31_t)0x5266ab06, (q31_t)0x5261dc0e, (q31_t)0x525d0ce4, (q31_t)0x52583d87, (q31_t)0x52536df7, (q31_t)0x524e9e34, (q31_t)0x5249ce3f, (q31_t)0x5244fe17,\n  (q31_t)0x52402dbc, (q31_t)0x523b5d2e, (q31_t)0x52368c6e, (q31_t)0x5231bb7b, (q31_t)0x522cea55, (q31_t)0x522818fc, (q31_t)0x52234771, (q31_t)0x521e75b3,\n  (q31_t)0x5219a3c3, (q31_t)0x5214d1a0, (q31_t)0x520fff4a, (q31_t)0x520b2cc2, (q31_t)0x52065a07, (q31_t)0x52018719, (q31_t)0x51fcb3f9, (q31_t)0x51f7e0a6,\n  (q31_t)0x51f30d21, (q31_t)0x51ee3969, (q31_t)0x51e9657e, (q31_t)0x51e49162, (q31_t)0x51dfbd12, (q31_t)0x51dae890, (q31_t)0x51d613dc, (q31_t)0x51d13ef5,\n  (q31_t)0x51cc69db, (q31_t)0x51c79490, (q31_t)0x51c2bf11, (q31_t)0x51bde960, (q31_t)0x51b9137d, (q31_t)0x51b43d68, (q31_t)0x51af6720, (q31_t)0x51aa90a5,\n  (q31_t)0x51a5b9f9, (q31_t)0x51a0e31a, (q31_t)0x519c0c08, (q31_t)0x519734c4, (q31_t)0x51925d4e, (q31_t)0x518d85a6, (q31_t)0x5188adcb, (q31_t)0x5183d5be,\n  (q31_t)0x517efd7f, (q31_t)0x517a250d, (q31_t)0x51754c69, (q31_t)0x51707393, (q31_t)0x516b9a8b, (q31_t)0x5166c150, (q31_t)0x5161e7e4, (q31_t)0x515d0e45,\n  (q31_t)0x51583473, (q31_t)0x51535a70, (q31_t)0x514e803b, (q31_t)0x5149a5d3, (q31_t)0x5144cb39, (q31_t)0x513ff06d, (q31_t)0x513b156f, (q31_t)0x51363a3f,\n  (q31_t)0x51315edd, (q31_t)0x512c8348, (q31_t)0x5127a782, (q31_t)0x5122cb8a, (q31_t)0x511def5f, (q31_t)0x51191302, (q31_t)0x51143674, (q31_t)0x510f59b3,\n  (q31_t)0x510a7cc1, (q31_t)0x51059f9c, (q31_t)0x5100c246, (q31_t)0x50fbe4bd, (q31_t)0x50f70703, (q31_t)0x50f22916, (q31_t)0x50ed4af8, (q31_t)0x50e86ca8,\n  (q31_t)0x50e38e25, (q31_t)0x50deaf71, (q31_t)0x50d9d08b, (q31_t)0x50d4f173, (q31_t)0x50d0122a, (q31_t)0x50cb32ae, (q31_t)0x50c65301, (q31_t)0x50c17322,\n  (q31_t)0x50bc9311, (q31_t)0x50b7b2ce, (q31_t)0x50b2d259, (q31_t)0x50adf1b3, (q31_t)0x50a910db, (q31_t)0x50a42fd1, (q31_t)0x509f4e95, (q31_t)0x509a6d28,\n  (q31_t)0x50958b88, (q31_t)0x5090a9b8, (q31_t)0x508bc7b5, (q31_t)0x5086e581, (q31_t)0x5082031b, (q31_t)0x507d2083, (q31_t)0x50783dba, (q31_t)0x50735abf,\n  (q31_t)0x506e7793, (q31_t)0x50699435, (q31_t)0x5064b0a5, (q31_t)0x505fcce4, (q31_t)0x505ae8f1, (q31_t)0x505604cd, (q31_t)0x50512077, (q31_t)0x504c3bef,\n  (q31_t)0x50475736, (q31_t)0x5042724c, (q31_t)0x503d8d30, (q31_t)0x5038a7e2, (q31_t)0x5033c263, (q31_t)0x502edcb2, (q31_t)0x5029f6d1, (q31_t)0x502510bd,\n  (q31_t)0x50202a78, (q31_t)0x501b4402, (q31_t)0x50165d5a, (q31_t)0x50117681, (q31_t)0x500c8f77, (q31_t)0x5007a83b, (q31_t)0x5002c0cd, (q31_t)0x4ffdd92f,\n  (q31_t)0x4ff8f15f, (q31_t)0x4ff4095e, (q31_t)0x4fef212b, (q31_t)0x4fea38c7, (q31_t)0x4fe55032, (q31_t)0x4fe0676c, (q31_t)0x4fdb7e74, (q31_t)0x4fd6954b,\n  (q31_t)0x4fd1abf0, (q31_t)0x4fccc265, (q31_t)0x4fc7d8a8, (q31_t)0x4fc2eeba, (q31_t)0x4fbe049b, (q31_t)0x4fb91a4b, (q31_t)0x4fb42fc9, (q31_t)0x4faf4517,\n  (q31_t)0x4faa5a33, (q31_t)0x4fa56f1e, (q31_t)0x4fa083d8, (q31_t)0x4f9b9861, (q31_t)0x4f96acb8, (q31_t)0x4f91c0df, (q31_t)0x4f8cd4d4, (q31_t)0x4f87e899,\n  (q31_t)0x4f82fc2c, (q31_t)0x4f7e0f8f, (q31_t)0x4f7922c0, (q31_t)0x4f7435c0, (q31_t)0x4f6f488f, (q31_t)0x4f6a5b2e, (q31_t)0x4f656d9b, (q31_t)0x4f607fd7,\n  (q31_t)0x4f5b91e3, (q31_t)0x4f56a3bd, (q31_t)0x4f51b566, (q31_t)0x4f4cc6df, (q31_t)0x4f47d827, (q31_t)0x4f42e93d, (q31_t)0x4f3dfa23, (q31_t)0x4f390ad8,\n  (q31_t)0x4f341b5c, (q31_t)0x4f2f2baf, (q31_t)0x4f2a3bd2, (q31_t)0x4f254bc3, (q31_t)0x4f205b84, (q31_t)0x4f1b6b14, (q31_t)0x4f167a73, (q31_t)0x4f1189a1,\n  (q31_t)0x4f0c989f, (q31_t)0x4f07a76b, (q31_t)0x4f02b608, (q31_t)0x4efdc473, (q31_t)0x4ef8d2ad, (q31_t)0x4ef3e0b7, (q31_t)0x4eeeee90, (q31_t)0x4ee9fc39,\n  (q31_t)0x4ee509b1, (q31_t)0x4ee016f8, (q31_t)0x4edb240e, (q31_t)0x4ed630f4, (q31_t)0x4ed13da9, (q31_t)0x4ecc4a2e, (q31_t)0x4ec75682, (q31_t)0x4ec262a5,\n  (q31_t)0x4ebd6e98, (q31_t)0x4eb87a5a, (q31_t)0x4eb385ec, (q31_t)0x4eae914d, (q31_t)0x4ea99c7d, (q31_t)0x4ea4a77d, (q31_t)0x4e9fb24d, (q31_t)0x4e9abcec,\n  (q31_t)0x4e95c75b, (q31_t)0x4e90d199, (q31_t)0x4e8bdba6, (q31_t)0x4e86e583, (q31_t)0x4e81ef30, (q31_t)0x4e7cf8ac, (q31_t)0x4e7801f8, (q31_t)0x4e730b14,\n  (q31_t)0x4e6e13ff, (q31_t)0x4e691cba, (q31_t)0x4e642544, (q31_t)0x4e5f2d9e, (q31_t)0x4e5a35c7, (q31_t)0x4e553dc1, (q31_t)0x4e50458a, (q31_t)0x4e4b4d22,\n  (q31_t)0x4e46548b, (q31_t)0x4e415bc3, (q31_t)0x4e3c62cb, (q31_t)0x4e3769a2, (q31_t)0x4e32704a, (q31_t)0x4e2d76c1, (q31_t)0x4e287d08, (q31_t)0x4e23831e,\n  (q31_t)0x4e1e8905, (q31_t)0x4e198ebb, (q31_t)0x4e149441, (q31_t)0x4e0f9997, (q31_t)0x4e0a9ebd, (q31_t)0x4e05a3b2, (q31_t)0x4e00a878, (q31_t)0x4dfbad0d,\n  (q31_t)0x4df6b173, (q31_t)0x4df1b5a8, (q31_t)0x4decb9ad, (q31_t)0x4de7bd82, (q31_t)0x4de2c127, (q31_t)0x4dddc49c, (q31_t)0x4dd8c7e1, (q31_t)0x4dd3caf6,\n  (q31_t)0x4dcecdda, (q31_t)0x4dc9d08f, (q31_t)0x4dc4d314, (q31_t)0x4dbfd569, (q31_t)0x4dbad78e, (q31_t)0x4db5d983, (q31_t)0x4db0db48, (q31_t)0x4dabdcdd,\n  (q31_t)0x4da6de43, (q31_t)0x4da1df78, (q31_t)0x4d9ce07d, (q31_t)0x4d97e153, (q31_t)0x4d92e1f9, (q31_t)0x4d8de26f, (q31_t)0x4d88e2b5, (q31_t)0x4d83e2cb,\n  (q31_t)0x4d7ee2b1, (q31_t)0x4d79e268, (q31_t)0x4d74e1ef, (q31_t)0x4d6fe146, (q31_t)0x4d6ae06d, (q31_t)0x4d65df64, (q31_t)0x4d60de2c, (q31_t)0x4d5bdcc4,\n  (q31_t)0x4d56db2d, (q31_t)0x4d51d965, (q31_t)0x4d4cd76e, (q31_t)0x4d47d547, (q31_t)0x4d42d2f1, (q31_t)0x4d3dd06b, (q31_t)0x4d38cdb5, (q31_t)0x4d33cad0,\n  (q31_t)0x4d2ec7bb, (q31_t)0x4d29c476, (q31_t)0x4d24c102, (q31_t)0x4d1fbd5e, (q31_t)0x4d1ab98b, (q31_t)0x4d15b588, (q31_t)0x4d10b155, (q31_t)0x4d0bacf3,\n  (q31_t)0x4d06a862, (q31_t)0x4d01a3a0, (q31_t)0x4cfc9eb0, (q31_t)0x4cf79990, (q31_t)0x4cf29440, (q31_t)0x4ced8ec1, (q31_t)0x4ce88913, (q31_t)0x4ce38335,\n  (q31_t)0x4cde7d28, (q31_t)0x4cd976eb, (q31_t)0x4cd4707f, (q31_t)0x4ccf69e3, (q31_t)0x4cca6318, (q31_t)0x4cc55c1e, (q31_t)0x4cc054f4, (q31_t)0x4cbb4d9b,\n  (q31_t)0x4cb64613, (q31_t)0x4cb13e5b, (q31_t)0x4cac3674, (q31_t)0x4ca72e5e, (q31_t)0x4ca22619, (q31_t)0x4c9d1da4, (q31_t)0x4c981500, (q31_t)0x4c930c2d,\n  (q31_t)0x4c8e032a, (q31_t)0x4c88f9f8, (q31_t)0x4c83f097, (q31_t)0x4c7ee707, (q31_t)0x4c79dd48, (q31_t)0x4c74d359, (q31_t)0x4c6fc93b, (q31_t)0x4c6abeef,\n  (q31_t)0x4c65b473, (q31_t)0x4c60a9c8, (q31_t)0x4c5b9eed, (q31_t)0x4c5693e4, (q31_t)0x4c5188ac, (q31_t)0x4c4c7d44, (q31_t)0x4c4771ae, (q31_t)0x4c4265e8,\n  (q31_t)0x4c3d59f3, (q31_t)0x4c384dd0, (q31_t)0x4c33417d, (q31_t)0x4c2e34fb, (q31_t)0x4c29284b, (q31_t)0x4c241b6b, (q31_t)0x4c1f0e5c, (q31_t)0x4c1a011f,\n  (q31_t)0x4c14f3b2, (q31_t)0x4c0fe617, (q31_t)0x4c0ad84c, (q31_t)0x4c05ca53, (q31_t)0x4c00bc2b, (q31_t)0x4bfbadd4, (q31_t)0x4bf69f4e, (q31_t)0x4bf19099,\n  (q31_t)0x4bec81b5, (q31_t)0x4be772a3, (q31_t)0x4be26362, (q31_t)0x4bdd53f2, (q31_t)0x4bd84453, (q31_t)0x4bd33485, (q31_t)0x4bce2488, (q31_t)0x4bc9145d,\n  (q31_t)0x4bc40403, (q31_t)0x4bbef37b, (q31_t)0x4bb9e2c3, (q31_t)0x4bb4d1dd, (q31_t)0x4bafc0c8, (q31_t)0x4baaaf85, (q31_t)0x4ba59e12, (q31_t)0x4ba08c72,\n  (q31_t)0x4b9b7aa2, (q31_t)0x4b9668a4, (q31_t)0x4b915677, (q31_t)0x4b8c441c, (q31_t)0x4b873192, (q31_t)0x4b821ed9, (q31_t)0x4b7d0bf2, (q31_t)0x4b77f8dc,\n  (q31_t)0x4b72e598, (q31_t)0x4b6dd225, (q31_t)0x4b68be84, (q31_t)0x4b63aab4, (q31_t)0x4b5e96b6, (q31_t)0x4b598289, (q31_t)0x4b546e2d, (q31_t)0x4b4f59a4,\n  (q31_t)0x4b4a44eb, (q31_t)0x4b453005, (q31_t)0x4b401aef, (q31_t)0x4b3b05ac, (q31_t)0x4b35f03a, (q31_t)0x4b30da9a, (q31_t)0x4b2bc4cb, (q31_t)0x4b26aece,\n  (q31_t)0x4b2198a2, (q31_t)0x4b1c8248, (q31_t)0x4b176bc0, (q31_t)0x4b12550a, (q31_t)0x4b0d3e25, (q31_t)0x4b082712, (q31_t)0x4b030fd1, (q31_t)0x4afdf861,\n  (q31_t)0x4af8e0c3, (q31_t)0x4af3c8f7, (q31_t)0x4aeeb0fd, (q31_t)0x4ae998d4, (q31_t)0x4ae4807d, (q31_t)0x4adf67f8, (q31_t)0x4ada4f45, (q31_t)0x4ad53664,\n  (q31_t)0x4ad01d54, (q31_t)0x4acb0417, (q31_t)0x4ac5eaab, (q31_t)0x4ac0d111, (q31_t)0x4abbb749, (q31_t)0x4ab69d53, (q31_t)0x4ab1832f, (q31_t)0x4aac68dc,\n  (q31_t)0x4aa74e5c, (q31_t)0x4aa233ae, (q31_t)0x4a9d18d1, (q31_t)0x4a97fdc7, (q31_t)0x4a92e28e, (q31_t)0x4a8dc728, (q31_t)0x4a88ab93, (q31_t)0x4a838fd1,\n  (q31_t)0x4a7e73e0, (q31_t)0x4a7957c2, (q31_t)0x4a743b76, (q31_t)0x4a6f1efc, (q31_t)0x4a6a0253, (q31_t)0x4a64e57d, (q31_t)0x4a5fc879, (q31_t)0x4a5aab48,\n  (q31_t)0x4a558de8, (q31_t)0x4a50705a, (q31_t)0x4a4b529f, (q31_t)0x4a4634b6, (q31_t)0x4a41169f, (q31_t)0x4a3bf85a, (q31_t)0x4a36d9e7, (q31_t)0x4a31bb47,\n  (q31_t)0x4a2c9c79, (q31_t)0x4a277d7d, (q31_t)0x4a225e53, (q31_t)0x4a1d3efc, (q31_t)0x4a181f77, (q31_t)0x4a12ffc4, (q31_t)0x4a0ddfe4, (q31_t)0x4a08bfd5,\n  (q31_t)0x4a039f9a, (q31_t)0x49fe7f30, (q31_t)0x49f95e99, (q31_t)0x49f43dd4, (q31_t)0x49ef1ce2, (q31_t)0x49e9fbc2, (q31_t)0x49e4da74, (q31_t)0x49dfb8f9,\n  (q31_t)0x49da9750, (q31_t)0x49d5757a, (q31_t)0x49d05376, (q31_t)0x49cb3145, (q31_t)0x49c60ee6, (q31_t)0x49c0ec59, (q31_t)0x49bbc9a0, (q31_t)0x49b6a6b8,\n  (q31_t)0x49b183a3, (q31_t)0x49ac6061, (q31_t)0x49a73cf1, (q31_t)0x49a21954, (q31_t)0x499cf589, (q31_t)0x4997d191, (q31_t)0x4992ad6c, (q31_t)0x498d8919,\n  (q31_t)0x49886499, (q31_t)0x49833fec, (q31_t)0x497e1b11, (q31_t)0x4978f609, (q31_t)0x4973d0d3, (q31_t)0x496eab70, (q31_t)0x496985e0, (q31_t)0x49646023,\n  (q31_t)0x495f3a38, (q31_t)0x495a1420, (q31_t)0x4954eddb, (q31_t)0x494fc768, (q31_t)0x494aa0c9, (q31_t)0x494579fc, (q31_t)0x49405302, (q31_t)0x493b2bdb,\n  (q31_t)0x49360486, (q31_t)0x4930dd05, (q31_t)0x492bb556, (q31_t)0x49268d7a, (q31_t)0x49216571, (q31_t)0x491c3d3b, (q31_t)0x491714d8, (q31_t)0x4911ec47,\n  (q31_t)0x490cc38a, (q31_t)0x49079aa0, (q31_t)0x49027188, (q31_t)0x48fd4844, (q31_t)0x48f81ed2, (q31_t)0x48f2f534, (q31_t)0x48edcb68, (q31_t)0x48e8a170,\n  (q31_t)0x48e3774a, (q31_t)0x48de4cf8, (q31_t)0x48d92278, (q31_t)0x48d3f7cc, (q31_t)0x48ceccf3, (q31_t)0x48c9a1ed, (q31_t)0x48c476b9, (q31_t)0x48bf4b59,\n  (q31_t)0x48ba1fcd, (q31_t)0x48b4f413, (q31_t)0x48afc82c, (q31_t)0x48aa9c19, (q31_t)0x48a56fd9, (q31_t)0x48a0436c, (q31_t)0x489b16d2, (q31_t)0x4895ea0b,\n  (q31_t)0x4890bd18, (q31_t)0x488b8ff8, (q31_t)0x488662ab, (q31_t)0x48813531, (q31_t)0x487c078b, (q31_t)0x4876d9b8, (q31_t)0x4871abb8, (q31_t)0x486c7d8c,\n  (q31_t)0x48674f33, (q31_t)0x486220ad, (q31_t)0x485cf1fa, (q31_t)0x4857c31b, (q31_t)0x48529410, (q31_t)0x484d64d7, (q31_t)0x48483572, (q31_t)0x484305e1,\n  (q31_t)0x483dd623, (q31_t)0x4838a638, (q31_t)0x48337621, (q31_t)0x482e45dd, (q31_t)0x4829156d, (q31_t)0x4823e4d0, (q31_t)0x481eb407, (q31_t)0x48198311,\n  (q31_t)0x481451ef, (q31_t)0x480f20a0, (q31_t)0x4809ef25, (q31_t)0x4804bd7e, (q31_t)0x47ff8baa, (q31_t)0x47fa59a9, (q31_t)0x47f5277d, (q31_t)0x47eff523,\n  (q31_t)0x47eac29e, (q31_t)0x47e58fec, (q31_t)0x47e05d0e, (q31_t)0x47db2a03, (q31_t)0x47d5f6cc, (q31_t)0x47d0c369, (q31_t)0x47cb8fd9, (q31_t)0x47c65c1d,\n  (q31_t)0x47c12835, (q31_t)0x47bbf421, (q31_t)0x47b6bfe0, (q31_t)0x47b18b74, (q31_t)0x47ac56da, (q31_t)0x47a72215, (q31_t)0x47a1ed24, (q31_t)0x479cb806,\n  (q31_t)0x479782bc, (q31_t)0x47924d46, (q31_t)0x478d17a4, (q31_t)0x4787e1d6, (q31_t)0x4782abdb, (q31_t)0x477d75b5, (q31_t)0x47783f62, (q31_t)0x477308e3,\n  (q31_t)0x476dd239, (q31_t)0x47689b62, (q31_t)0x4763645f, (q31_t)0x475e2d30, (q31_t)0x4758f5d5, (q31_t)0x4753be4e, (q31_t)0x474e869b, (q31_t)0x47494ebc,\n  (q31_t)0x474416b1, (q31_t)0x473ede7a, (q31_t)0x4739a617, (q31_t)0x47346d89, (q31_t)0x472f34ce, (q31_t)0x4729fbe7, (q31_t)0x4724c2d5, (q31_t)0x471f8996,\n  (q31_t)0x471a502c, (q31_t)0x47151696, (q31_t)0x470fdcd4, (q31_t)0x470aa2e6, (q31_t)0x470568cd, (q31_t)0x47002e87, (q31_t)0x46faf416, (q31_t)0x46f5b979,\n  (q31_t)0x46f07eb0, (q31_t)0x46eb43bc, (q31_t)0x46e6089b, (q31_t)0x46e0cd4f, (q31_t)0x46db91d8, (q31_t)0x46d65634, (q31_t)0x46d11a65, (q31_t)0x46cbde6a,\n  (q31_t)0x46c6a244, (q31_t)0x46c165f1, (q31_t)0x46bc2974, (q31_t)0x46b6ecca, (q31_t)0x46b1aff5, (q31_t)0x46ac72f4, (q31_t)0x46a735c8, (q31_t)0x46a1f870,\n  (q31_t)0x469cbaed, (q31_t)0x46977d3e, (q31_t)0x46923f63, (q31_t)0x468d015d, (q31_t)0x4687c32c, (q31_t)0x468284cf, (q31_t)0x467d4646, (q31_t)0x46780792,\n  (q31_t)0x4672c8b3, (q31_t)0x466d89a8, (q31_t)0x46684a71, (q31_t)0x46630b0f, (q31_t)0x465dcb82, (q31_t)0x46588bc9, (q31_t)0x46534be5, (q31_t)0x464e0bd6,\n  (q31_t)0x4648cb9b, (q31_t)0x46438b35, (q31_t)0x463e4aa3, (q31_t)0x463909e7, (q31_t)0x4633c8fe, (q31_t)0x462e87eb, (q31_t)0x462946ac, (q31_t)0x46240542,\n  (q31_t)0x461ec3ad, (q31_t)0x461981ec, (q31_t)0x46144001, (q31_t)0x460efde9, (q31_t)0x4609bba7, (q31_t)0x4604793a, (q31_t)0x45ff36a1, (q31_t)0x45f9f3dd,\n  (q31_t)0x45f4b0ee, (q31_t)0x45ef6dd4, (q31_t)0x45ea2a8f, (q31_t)0x45e4e71f, (q31_t)0x45dfa383, (q31_t)0x45da5fbc, (q31_t)0x45d51bcb, (q31_t)0x45cfd7ae,\n  (q31_t)0x45ca9366, (q31_t)0x45c54ef3, (q31_t)0x45c00a55, (q31_t)0x45bac58c, (q31_t)0x45b58098, (q31_t)0x45b03b79, (q31_t)0x45aaf630, (q31_t)0x45a5b0bb,\n  (q31_t)0x45a06b1b, (q31_t)0x459b2550, (q31_t)0x4595df5a, (q31_t)0x45909939, (q31_t)0x458b52ee, (q31_t)0x45860c77, (q31_t)0x4580c5d6, (q31_t)0x457b7f0a,\n  (q31_t)0x45763813, (q31_t)0x4570f0f1, (q31_t)0x456ba9a4, (q31_t)0x4566622c, (q31_t)0x45611a8a, (q31_t)0x455bd2bc, (q31_t)0x45568ac4, (q31_t)0x455142a2,\n  (q31_t)0x454bfa54, (q31_t)0x4546b1dc, (q31_t)0x45416939, (q31_t)0x453c206b, (q31_t)0x4536d773, (q31_t)0x45318e4f, (q31_t)0x452c4502, (q31_t)0x4526fb89,\n  (q31_t)0x4521b1e6, (q31_t)0x451c6818, (q31_t)0x45171e20, (q31_t)0x4511d3fd, (q31_t)0x450c89af, (q31_t)0x45073f37, (q31_t)0x4501f494, (q31_t)0x44fca9c6,\n  (q31_t)0x44f75ecf, (q31_t)0x44f213ac, (q31_t)0x44ecc85f, (q31_t)0x44e77ce7, (q31_t)0x44e23145, (q31_t)0x44dce579, (q31_t)0x44d79982, (q31_t)0x44d24d60,\n  (q31_t)0x44cd0114, (q31_t)0x44c7b49e, (q31_t)0x44c267fd, (q31_t)0x44bd1b32, (q31_t)0x44b7ce3c, (q31_t)0x44b2811c, (q31_t)0x44ad33d2, (q31_t)0x44a7e65d,\n  (q31_t)0x44a298be, (q31_t)0x449d4af5, (q31_t)0x4497fd01, (q31_t)0x4492aee3, (q31_t)0x448d609b, (q31_t)0x44881228, (q31_t)0x4482c38b, (q31_t)0x447d74c4,\n  (q31_t)0x447825d2, (q31_t)0x4472d6b7, (q31_t)0x446d8771, (q31_t)0x44683801, (q31_t)0x4462e866, (q31_t)0x445d98a2, (q31_t)0x445848b3, (q31_t)0x4452f89b,\n  (q31_t)0x444da858, (q31_t)0x444857ea, (q31_t)0x44430753, (q31_t)0x443db692, (q31_t)0x443865a7, (q31_t)0x44331491, (q31_t)0x442dc351, (q31_t)0x442871e8,\n  (q31_t)0x44232054, (q31_t)0x441dce96, (q31_t)0x44187caf, (q31_t)0x44132a9d, (q31_t)0x440dd861, (q31_t)0x440885fc, (q31_t)0x4403336c, (q31_t)0x43fde0b2,\n  (q31_t)0x43f88dcf, (q31_t)0x43f33ac1, (q31_t)0x43ede78a, (q31_t)0x43e89429, (q31_t)0x43e3409d, (q31_t)0x43ddece8, (q31_t)0x43d8990a, (q31_t)0x43d34501,\n  (q31_t)0x43cdf0ce, (q31_t)0x43c89c72, (q31_t)0x43c347eb, (q31_t)0x43bdf33b, (q31_t)0x43b89e62, (q31_t)0x43b3495e, (q31_t)0x43adf431, (q31_t)0x43a89ed9,\n  (q31_t)0x43a34959, (q31_t)0x439df3ae, (q31_t)0x43989dda, (q31_t)0x439347dc, (q31_t)0x438df1b4, (q31_t)0x43889b63, (q31_t)0x438344e8, (q31_t)0x437dee43,\n  (q31_t)0x43789775, (q31_t)0x4373407d, (q31_t)0x436de95b, (q31_t)0x43689210, (q31_t)0x43633a9c, (q31_t)0x435de2fd, (q31_t)0x43588b36, (q31_t)0x43533344,\n  (q31_t)0x434ddb29, (q31_t)0x434882e5, (q31_t)0x43432a77, (q31_t)0x433dd1e0, (q31_t)0x4338791f, (q31_t)0x43332035, (q31_t)0x432dc721, (q31_t)0x43286de4,\n  (q31_t)0x4323147d, (q31_t)0x431dbaed, (q31_t)0x43186133, (q31_t)0x43130751, (q31_t)0x430dad44, (q31_t)0x4308530f, (q31_t)0x4302f8b0, (q31_t)0x42fd9e28,\n  (q31_t)0x42f84376, (q31_t)0x42f2e89b, (q31_t)0x42ed8d97, (q31_t)0x42e83269, (q31_t)0x42e2d713, (q31_t)0x42dd7b93, (q31_t)0x42d81fe9, (q31_t)0x42d2c417,\n  (q31_t)0x42cd681b, (q31_t)0x42c80bf6, (q31_t)0x42c2afa8, (q31_t)0x42bd5331, (q31_t)0x42b7f690, (q31_t)0x42b299c7, (q31_t)0x42ad3cd4, (q31_t)0x42a7dfb8,\n  (q31_t)0x42a28273, (q31_t)0x429d2505, (q31_t)0x4297c76e, (q31_t)0x429269ae, (q31_t)0x428d0bc4, (q31_t)0x4287adb2, (q31_t)0x42824f76, (q31_t)0x427cf112,\n  (q31_t)0x42779285, (q31_t)0x427233ce, (q31_t)0x426cd4ef, (q31_t)0x426775e6, (q31_t)0x426216b5, (q31_t)0x425cb75a, (q31_t)0x425757d7, (q31_t)0x4251f82b,\n  (q31_t)0x424c9856, (q31_t)0x42473858, (q31_t)0x4241d831, (q31_t)0x423c77e1, (q31_t)0x42371769, (q31_t)0x4231b6c7, (q31_t)0x422c55fd, (q31_t)0x4226f50a,\n  (q31_t)0x422193ee, (q31_t)0x421c32a9, (q31_t)0x4216d13c, (q31_t)0x42116fa5, (q31_t)0x420c0de6, (q31_t)0x4206abfe, (q31_t)0x420149ee, (q31_t)0x41fbe7b5,\n  (q31_t)0x41f68553, (q31_t)0x41f122c8, (q31_t)0x41ebc015, (q31_t)0x41e65d39, (q31_t)0x41e0fa35, (q31_t)0x41db9707, (q31_t)0x41d633b1, (q31_t)0x41d0d033,\n  (q31_t)0x41cb6c8c, (q31_t)0x41c608bc, (q31_t)0x41c0a4c4, (q31_t)0x41bb40a3, (q31_t)0x41b5dc5a, (q31_t)0x41b077e8, (q31_t)0x41ab134e, (q31_t)0x41a5ae8b,\n  (q31_t)0x41a049a0, (q31_t)0x419ae48c, (q31_t)0x41957f4f, (q31_t)0x419019eb, (q31_t)0x418ab45d, (q31_t)0x41854ea8, (q31_t)0x417fe8ca, (q31_t)0x417a82c3,\n  (q31_t)0x41751c94, (q31_t)0x416fb63d, (q31_t)0x416a4fbd, (q31_t)0x4164e916, (q31_t)0x415f8245, (q31_t)0x415a1b4d, (q31_t)0x4154b42c, (q31_t)0x414f4ce2,\n  (q31_t)0x4149e571, (q31_t)0x41447dd7, (q31_t)0x413f1615, (q31_t)0x4139ae2b, (q31_t)0x41344618, (q31_t)0x412edddd, (q31_t)0x4129757b, (q31_t)0x41240cef,\n  (q31_t)0x411ea43c, (q31_t)0x41193b61, (q31_t)0x4113d25d, (q31_t)0x410e6931, (q31_t)0x4108ffdd, (q31_t)0x41039661, (q31_t)0x40fe2cbd, (q31_t)0x40f8c2f1,\n  (q31_t)0x40f358fc, (q31_t)0x40edeee0, (q31_t)0x40e8849b, (q31_t)0x40e31a2f, (q31_t)0x40ddaf9b, (q31_t)0x40d844de, (q31_t)0x40d2d9f9, (q31_t)0x40cd6eed,\n  (q31_t)0x40c803b8, (q31_t)0x40c2985c, (q31_t)0x40bd2cd8, (q31_t)0x40b7c12b, (q31_t)0x40b25557, (q31_t)0x40ace95b, (q31_t)0x40a77d37, (q31_t)0x40a210eb,\n  (q31_t)0x409ca477, (q31_t)0x409737dc, (q31_t)0x4091cb18, (q31_t)0x408c5e2d, (q31_t)0x4086f11a, (q31_t)0x408183df, (q31_t)0x407c167c, (q31_t)0x4076a8f1,\n  (q31_t)0x40713b3f, (q31_t)0x406bcd65, (q31_t)0x40665f63, (q31_t)0x4060f13a, (q31_t)0x405b82e9, (q31_t)0x40561470, (q31_t)0x4050a5cf, (q31_t)0x404b3707,\n  (q31_t)0x4045c817, (q31_t)0x404058ff, (q31_t)0x403ae9c0, (q31_t)0x40357a59, (q31_t)0x40300acb, (q31_t)0x402a9b15, (q31_t)0x40252b37, (q31_t)0x401fbb32,\n  (q31_t)0x401a4b05, (q31_t)0x4014dab1, (q31_t)0x400f6a35, (q31_t)0x4009f992, (q31_t)0x400488c7, (q31_t)0x3fff17d5, (q31_t)0x3ff9a6bb, (q31_t)0x3ff4357a,\n  (q31_t)0x3feec411, (q31_t)0x3fe95281, (q31_t)0x3fe3e0c9, (q31_t)0x3fde6eeb, (q31_t)0x3fd8fce4, (q31_t)0x3fd38ab6, (q31_t)0x3fce1861, (q31_t)0x3fc8a5e5,\n  (q31_t)0x3fc33341, (q31_t)0x3fbdc076, (q31_t)0x3fb84d83, (q31_t)0x3fb2da6a, (q31_t)0x3fad6729, (q31_t)0x3fa7f3c0, (q31_t)0x3fa28031, (q31_t)0x3f9d0c7a,\n  (q31_t)0x3f97989c, (q31_t)0x3f922496, (q31_t)0x3f8cb06a, (q31_t)0x3f873c16, (q31_t)0x3f81c79b, (q31_t)0x3f7c52f9, (q31_t)0x3f76de30, (q31_t)0x3f71693f,\n  (q31_t)0x3f6bf428, (q31_t)0x3f667ee9, (q31_t)0x3f610983, (q31_t)0x3f5b93f6, (q31_t)0x3f561e42, (q31_t)0x3f50a867, (q31_t)0x3f4b3265, (q31_t)0x3f45bc3c,\n  (q31_t)0x3f4045ec, (q31_t)0x3f3acf75, (q31_t)0x3f3558d7, (q31_t)0x3f2fe211, (q31_t)0x3f2a6b25, (q31_t)0x3f24f412, (q31_t)0x3f1f7cd8, (q31_t)0x3f1a0577,\n  (q31_t)0x3f148def, (q31_t)0x3f0f1640, (q31_t)0x3f099e6b, (q31_t)0x3f04266e, (q31_t)0x3efeae4a, (q31_t)0x3ef93600, (q31_t)0x3ef3bd8f, (q31_t)0x3eee44f7,\n  (q31_t)0x3ee8cc38, (q31_t)0x3ee35352, (q31_t)0x3eddda46, (q31_t)0x3ed86113, (q31_t)0x3ed2e7b9, (q31_t)0x3ecd6e38, (q31_t)0x3ec7f491, (q31_t)0x3ec27ac2,\n  (q31_t)0x3ebd00cd, (q31_t)0x3eb786b2, (q31_t)0x3eb20c6f, (q31_t)0x3eac9206, (q31_t)0x3ea71777, (q31_t)0x3ea19cc1, (q31_t)0x3e9c21e4, (q31_t)0x3e96a6e0,\n  (q31_t)0x3e912bb6, (q31_t)0x3e8bb065, (q31_t)0x3e8634ee, (q31_t)0x3e80b950, (q31_t)0x3e7b3d8c, (q31_t)0x3e75c1a1, (q31_t)0x3e70458f, (q31_t)0x3e6ac957,\n  (q31_t)0x3e654cf8, (q31_t)0x3e5fd073, (q31_t)0x3e5a53c8, (q31_t)0x3e54d6f6, (q31_t)0x3e4f59fe, (q31_t)0x3e49dcdf, (q31_t)0x3e445f99, (q31_t)0x3e3ee22e,\n  (q31_t)0x3e39649c, (q31_t)0x3e33e6e3, (q31_t)0x3e2e6904, (q31_t)0x3e28eaff, (q31_t)0x3e236cd4, (q31_t)0x3e1dee82, (q31_t)0x3e18700a, (q31_t)0x3e12f16b,\n  (q31_t)0x3e0d72a6, (q31_t)0x3e07f3bb, (q31_t)0x3e0274aa, (q31_t)0x3dfcf572, (q31_t)0x3df77615, (q31_t)0x3df1f691, (q31_t)0x3dec76e6, (q31_t)0x3de6f716,\n  (q31_t)0x3de1771f, (q31_t)0x3ddbf703, (q31_t)0x3dd676c0, (q31_t)0x3dd0f656, (q31_t)0x3dcb75c7, (q31_t)0x3dc5f512, (q31_t)0x3dc07436, (q31_t)0x3dbaf335,\n  (q31_t)0x3db5720d, (q31_t)0x3daff0c0, (q31_t)0x3daa6f4c, (q31_t)0x3da4edb2, (q31_t)0x3d9f6bf2, (q31_t)0x3d99ea0d, (q31_t)0x3d946801, (q31_t)0x3d8ee5cf,\n  (q31_t)0x3d896377, (q31_t)0x3d83e0f9, (q31_t)0x3d7e5e56, (q31_t)0x3d78db8c, (q31_t)0x3d73589d, (q31_t)0x3d6dd587, (q31_t)0x3d68524c, (q31_t)0x3d62ceeb,\n  (q31_t)0x3d5d4b64, (q31_t)0x3d57c7b7, (q31_t)0x3d5243e4, (q31_t)0x3d4cbfeb, (q31_t)0x3d473bcd, (q31_t)0x3d41b789, (q31_t)0x3d3c331f, (q31_t)0x3d36ae8f,\n  (q31_t)0x3d3129da, (q31_t)0x3d2ba4fe, (q31_t)0x3d261ffd, (q31_t)0x3d209ad7, (q31_t)0x3d1b158a, (q31_t)0x3d159018, (q31_t)0x3d100a80, (q31_t)0x3d0a84c3,\n  (q31_t)0x3d04fee0, (q31_t)0x3cff78d7, (q31_t)0x3cf9f2a9, (q31_t)0x3cf46c55, (q31_t)0x3ceee5db, (q31_t)0x3ce95f3c, (q31_t)0x3ce3d877, (q31_t)0x3cde518d,\n  (q31_t)0x3cd8ca7d, (q31_t)0x3cd34347, (q31_t)0x3ccdbbed, (q31_t)0x3cc8346c, (q31_t)0x3cc2acc6, (q31_t)0x3cbd24fb, (q31_t)0x3cb79d0a, (q31_t)0x3cb214f4,\n  (q31_t)0x3cac8cb8, (q31_t)0x3ca70457, (q31_t)0x3ca17bd0, (q31_t)0x3c9bf324, (q31_t)0x3c966a53, (q31_t)0x3c90e15c, (q31_t)0x3c8b5840, (q31_t)0x3c85cefe,\n  (q31_t)0x3c804598, (q31_t)0x3c7abc0c, (q31_t)0x3c75325a, (q31_t)0x3c6fa883, (q31_t)0x3c6a1e87, (q31_t)0x3c649466, (q31_t)0x3c5f0a20, (q31_t)0x3c597fb4,\n  (q31_t)0x3c53f523, (q31_t)0x3c4e6a6d, (q31_t)0x3c48df91, (q31_t)0x3c435491, (q31_t)0x3c3dc96b, (q31_t)0x3c383e20, (q31_t)0x3c32b2b0, (q31_t)0x3c2d271b,\n  (q31_t)0x3c279b61, (q31_t)0x3c220f81, (q31_t)0x3c1c837d, (q31_t)0x3c16f753, (q31_t)0x3c116b04, (q31_t)0x3c0bde91, (q31_t)0x3c0651f8, (q31_t)0x3c00c53a,\n  (q31_t)0x3bfb3857, (q31_t)0x3bf5ab50, (q31_t)0x3bf01e23, (q31_t)0x3bea90d1, (q31_t)0x3be5035a, (q31_t)0x3bdf75bf, (q31_t)0x3bd9e7fe, (q31_t)0x3bd45a19,\n  (q31_t)0x3bcecc0e, (q31_t)0x3bc93ddf, (q31_t)0x3bc3af8b, (q31_t)0x3bbe2112, (q31_t)0x3bb89274, (q31_t)0x3bb303b1, (q31_t)0x3bad74c9, (q31_t)0x3ba7e5bd,\n  (q31_t)0x3ba2568c, (q31_t)0x3b9cc736, (q31_t)0x3b9737bb, (q31_t)0x3b91a81c, (q31_t)0x3b8c1857, (q31_t)0x3b86886e, (q31_t)0x3b80f861, (q31_t)0x3b7b682e,\n  (q31_t)0x3b75d7d7, (q31_t)0x3b70475c, (q31_t)0x3b6ab6bb, (q31_t)0x3b6525f6, (q31_t)0x3b5f950c, (q31_t)0x3b5a03fe, (q31_t)0x3b5472cb, (q31_t)0x3b4ee173,\n  (q31_t)0x3b494ff7, (q31_t)0x3b43be57, (q31_t)0x3b3e2c91, (q31_t)0x3b389aa8, (q31_t)0x3b330899, (q31_t)0x3b2d7666, (q31_t)0x3b27e40f, (q31_t)0x3b225193,\n  (q31_t)0x3b1cbef3, (q31_t)0x3b172c2e, (q31_t)0x3b119945, (q31_t)0x3b0c0637, (q31_t)0x3b067305, (q31_t)0x3b00dfaf, (q31_t)0x3afb4c34, (q31_t)0x3af5b894,\n  (q31_t)0x3af024d1, (q31_t)0x3aea90e9, (q31_t)0x3ae4fcdc, (q31_t)0x3adf68ac, (q31_t)0x3ad9d457, (q31_t)0x3ad43fdd, (q31_t)0x3aceab40, (q31_t)0x3ac9167e,\n  (q31_t)0x3ac38198, (q31_t)0x3abdec8d, (q31_t)0x3ab8575f, (q31_t)0x3ab2c20c, (q31_t)0x3aad2c95, (q31_t)0x3aa796fa, (q31_t)0x3aa2013a, (q31_t)0x3a9c6b57,\n  (q31_t)0x3a96d54f, (q31_t)0x3a913f23, (q31_t)0x3a8ba8d3, (q31_t)0x3a86125f, (q31_t)0x3a807bc7, (q31_t)0x3a7ae50a, (q31_t)0x3a754e2a, (q31_t)0x3a6fb726,\n  (q31_t)0x3a6a1ffd, (q31_t)0x3a6488b1, (q31_t)0x3a5ef140, (q31_t)0x3a5959ab, (q31_t)0x3a53c1f3, (q31_t)0x3a4e2a16, (q31_t)0x3a489216, (q31_t)0x3a42f9f2,\n  (q31_t)0x3a3d61a9, (q31_t)0x3a37c93d, (q31_t)0x3a3230ad, (q31_t)0x3a2c97f9, (q31_t)0x3a26ff21, (q31_t)0x3a216625, (q31_t)0x3a1bcd05, (q31_t)0x3a1633c1,\n  (q31_t)0x3a109a5a, (q31_t)0x3a0b00cf, (q31_t)0x3a056720, (q31_t)0x39ffcd4d, (q31_t)0x39fa3356, (q31_t)0x39f4993c, (q31_t)0x39eefefe, (q31_t)0x39e9649c,\n  (q31_t)0x39e3ca17, (q31_t)0x39de2f6d, (q31_t)0x39d894a0, (q31_t)0x39d2f9b0, (q31_t)0x39cd5e9b, (q31_t)0x39c7c363, (q31_t)0x39c22808, (q31_t)0x39bc8c89,\n  (q31_t)0x39b6f0e6, (q31_t)0x39b1551f, (q31_t)0x39abb935, (q31_t)0x39a61d28, (q31_t)0x39a080f6, (q31_t)0x399ae4a2, (q31_t)0x39954829, (q31_t)0x398fab8e,\n  (q31_t)0x398a0ece, (q31_t)0x398471ec, (q31_t)0x397ed4e5, (q31_t)0x397937bc, (q31_t)0x39739a6e, (q31_t)0x396dfcfe, (q31_t)0x39685f6a, (q31_t)0x3962c1b2,\n  (q31_t)0x395d23d7, (q31_t)0x395785d9, (q31_t)0x3951e7b8, (q31_t)0x394c4973, (q31_t)0x3946ab0a, (q31_t)0x39410c7f, (q31_t)0x393b6dd0, (q31_t)0x3935cefd,\n  (q31_t)0x39303008, (q31_t)0x392a90ef, (q31_t)0x3924f1b3, (q31_t)0x391f5254, (q31_t)0x3919b2d1, (q31_t)0x3914132b, (q31_t)0x390e7362, (q31_t)0x3908d376,\n  (q31_t)0x39033367, (q31_t)0x38fd9334, (q31_t)0x38f7f2de, (q31_t)0x38f25266, (q31_t)0x38ecb1ca, (q31_t)0x38e7110a, (q31_t)0x38e17028, (q31_t)0x38dbcf23,\n  (q31_t)0x38d62dfb, (q31_t)0x38d08caf, (q31_t)0x38caeb41, (q31_t)0x38c549af, (q31_t)0x38bfa7fb, (q31_t)0x38ba0623, (q31_t)0x38b46429, (q31_t)0x38aec20b,\n  (q31_t)0x38a91fcb, (q31_t)0x38a37d67, (q31_t)0x389ddae1, (q31_t)0x38983838, (q31_t)0x3892956c, (q31_t)0x388cf27d, (q31_t)0x38874f6b, (q31_t)0x3881ac36,\n  (q31_t)0x387c08de, (q31_t)0x38766564, (q31_t)0x3870c1c6, (q31_t)0x386b1e06, (q31_t)0x38657a23, (q31_t)0x385fd61d, (q31_t)0x385a31f5, (q31_t)0x38548daa,\n  (q31_t)0x384ee93b, (q31_t)0x384944ab, (q31_t)0x38439ff7, (q31_t)0x383dfb21, (q31_t)0x38385628, (q31_t)0x3832b10d, (q31_t)0x382d0bce, (q31_t)0x3827666d,\n  (q31_t)0x3821c0ea, (q31_t)0x381c1b44, (q31_t)0x3816757b, (q31_t)0x3810cf90, (q31_t)0x380b2982, (q31_t)0x38058351, (q31_t)0x37ffdcfe, (q31_t)0x37fa3688,\n  (q31_t)0x37f48ff0, (q31_t)0x37eee936, (q31_t)0x37e94259, (q31_t)0x37e39b59, (q31_t)0x37ddf437, (q31_t)0x37d84cf2, (q31_t)0x37d2a58b, (q31_t)0x37ccfe02,\n  (q31_t)0x37c75656, (q31_t)0x37c1ae87, (q31_t)0x37bc0697, (q31_t)0x37b65e84, (q31_t)0x37b0b64e, (q31_t)0x37ab0df6, (q31_t)0x37a5657c, (q31_t)0x379fbce0,\n  (q31_t)0x379a1421, (q31_t)0x37946b40, (q31_t)0x378ec23d, (q31_t)0x37891917, (q31_t)0x37836fcf, (q31_t)0x377dc665, (q31_t)0x37781cd9, (q31_t)0x3772732a,\n  (q31_t)0x376cc959, (q31_t)0x37671f66, (q31_t)0x37617551, (q31_t)0x375bcb1a, (q31_t)0x375620c1, (q31_t)0x37507645, (q31_t)0x374acba7, (q31_t)0x374520e7,\n  (q31_t)0x373f7606, (q31_t)0x3739cb02, (q31_t)0x37341fdc, (q31_t)0x372e7493, (q31_t)0x3728c929, (q31_t)0x37231d9d, (q31_t)0x371d71ef, (q31_t)0x3717c61f,\n  (q31_t)0x37121a2d, (q31_t)0x370c6e19, (q31_t)0x3706c1e2, (q31_t)0x3701158a, (q31_t)0x36fb6910, (q31_t)0x36f5bc75, (q31_t)0x36f00fb7, (q31_t)0x36ea62d7,\n  (q31_t)0x36e4b5d6, (q31_t)0x36df08b2, (q31_t)0x36d95b6d, (q31_t)0x36d3ae06, (q31_t)0x36ce007d, (q31_t)0x36c852d2, (q31_t)0x36c2a506, (q31_t)0x36bcf718,\n  (q31_t)0x36b74908, (q31_t)0x36b19ad6, (q31_t)0x36abec82, (q31_t)0x36a63e0d, (q31_t)0x36a08f76, (q31_t)0x369ae0bd, (q31_t)0x369531e3, (q31_t)0x368f82e7,\n  (q31_t)0x3689d3c9, (q31_t)0x3684248a, (q31_t)0x367e7529, (q31_t)0x3678c5a7, (q31_t)0x36731602, (q31_t)0x366d663d, (q31_t)0x3667b655, (q31_t)0x3662064c,\n  (q31_t)0x365c5622, (q31_t)0x3656a5d6, (q31_t)0x3650f569, (q31_t)0x364b44da, (q31_t)0x36459429, (q31_t)0x363fe357, (q31_t)0x363a3264, (q31_t)0x3634814f,\n  (q31_t)0x362ed019, (q31_t)0x36291ec1, (q31_t)0x36236d48, (q31_t)0x361dbbad, (q31_t)0x361809f1, (q31_t)0x36125814, (q31_t)0x360ca615, (q31_t)0x3606f3f5,\n  (q31_t)0x360141b4, (q31_t)0x35fb8f52, (q31_t)0x35f5dcce, (q31_t)0x35f02a28, (q31_t)0x35ea7762, (q31_t)0x35e4c47a, (q31_t)0x35df1171, (q31_t)0x35d95e47,\n  (q31_t)0x35d3aafc, (q31_t)0x35cdf78f, (q31_t)0x35c84401, (q31_t)0x35c29052, (q31_t)0x35bcdc82, (q31_t)0x35b72891, (q31_t)0x35b1747e, (q31_t)0x35abc04b,\n  (q31_t)0x35a60bf6, (q31_t)0x35a05781, (q31_t)0x359aa2ea, (q31_t)0x3594ee32, (q31_t)0x358f3959, (q31_t)0x3589845f, (q31_t)0x3583cf44, (q31_t)0x357e1a08,\n  (q31_t)0x357864ab, (q31_t)0x3572af2d, (q31_t)0x356cf98e, (q31_t)0x356743ce, (q31_t)0x35618ded, (q31_t)0x355bd7eb, (q31_t)0x355621c9, (q31_t)0x35506b85,\n  (q31_t)0x354ab520, (q31_t)0x3544fe9b, (q31_t)0x353f47f5, (q31_t)0x3539912e, (q31_t)0x3533da46, (q31_t)0x352e233d, (q31_t)0x35286c14, (q31_t)0x3522b4c9,\n  (q31_t)0x351cfd5e, (q31_t)0x351745d2, (q31_t)0x35118e26, (q31_t)0x350bd658, (q31_t)0x35061e6a, (q31_t)0x3500665c, (q31_t)0x34faae2c, (q31_t)0x34f4f5dc,\n  (q31_t)0x34ef3d6b, (q31_t)0x34e984da, (q31_t)0x34e3cc28, (q31_t)0x34de1355, (q31_t)0x34d85a62, (q31_t)0x34d2a14e, (q31_t)0x34cce819, (q31_t)0x34c72ec4,\n  (q31_t)0x34c1754e, (q31_t)0x34bbbbb8, (q31_t)0x34b60202, (q31_t)0x34b0482a, (q31_t)0x34aa8e33, (q31_t)0x34a4d41a, (q31_t)0x349f19e2, (q31_t)0x34995f88,\n  (q31_t)0x3493a50f, (q31_t)0x348dea75, (q31_t)0x34882fba, (q31_t)0x348274e0, (q31_t)0x347cb9e4, (q31_t)0x3476fec9, (q31_t)0x3471438d, (q31_t)0x346b8830,\n  (q31_t)0x3465ccb4, (q31_t)0x34601117, (q31_t)0x345a5559, (q31_t)0x3454997c, (q31_t)0x344edd7e, (q31_t)0x34492160, (q31_t)0x34436521, (q31_t)0x343da8c3,\n  (q31_t)0x3437ec44, (q31_t)0x34322fa5, (q31_t)0x342c72e6, (q31_t)0x3426b606, (q31_t)0x3420f907, (q31_t)0x341b3be7, (q31_t)0x34157ea7, (q31_t)0x340fc147,\n  (q31_t)0x340a03c7, (q31_t)0x34044626, (q31_t)0x33fe8866, (q31_t)0x33f8ca86, (q31_t)0x33f30c85, (q31_t)0x33ed4e65, (q31_t)0x33e79024, (q31_t)0x33e1d1c4,\n  (q31_t)0x33dc1343, (q31_t)0x33d654a2, (q31_t)0x33d095e2, (q31_t)0x33cad701, (q31_t)0x33c51801, (q31_t)0x33bf58e1, (q31_t)0x33b999a0, (q31_t)0x33b3da40,\n  (q31_t)0x33ae1ac0, (q31_t)0x33a85b20, (q31_t)0x33a29b60, (q31_t)0x339cdb81, (q31_t)0x33971b81, (q31_t)0x33915b62, (q31_t)0x338b9b22, (q31_t)0x3385dac4,\n  (q31_t)0x33801a45, (q31_t)0x337a59a6, (q31_t)0x337498e8, (q31_t)0x336ed80a, (q31_t)0x3369170c, (q31_t)0x336355ef, (q31_t)0x335d94b2, (q31_t)0x3357d355,\n  (q31_t)0x335211d8, (q31_t)0x334c503c, (q31_t)0x33468e80, (q31_t)0x3340cca5, (q31_t)0x333b0aaa, (q31_t)0x3335488f, (q31_t)0x332f8655, (q31_t)0x3329c3fb,\n  (q31_t)0x33240182, (q31_t)0x331e3ee9, (q31_t)0x33187c31, (q31_t)0x3312b959, (q31_t)0x330cf661, (q31_t)0x3307334a, (q31_t)0x33017014, (q31_t)0x32fbacbe,\n  (q31_t)0x32f5e948, (q31_t)0x32f025b4, (q31_t)0x32ea61ff, (q31_t)0x32e49e2c, (q31_t)0x32deda39, (q31_t)0x32d91626, (q31_t)0x32d351f5, (q31_t)0x32cd8da4,\n  (q31_t)0x32c7c933, (q31_t)0x32c204a3, (q31_t)0x32bc3ff4, (q31_t)0x32b67b26, (q31_t)0x32b0b638, (q31_t)0x32aaf12b, (q31_t)0x32a52bff, (q31_t)0x329f66b4,\n  (q31_t)0x3299a149, (q31_t)0x3293dbbf, (q31_t)0x328e1616, (q31_t)0x3288504e, (q31_t)0x32828a67, (q31_t)0x327cc460, (q31_t)0x3276fe3a, (q31_t)0x327137f6,\n  (q31_t)0x326b7192, (q31_t)0x3265ab0f, (q31_t)0x325fe46c, (q31_t)0x325a1dab, (q31_t)0x325456cb, (q31_t)0x324e8fcc, (q31_t)0x3248c8ad, (q31_t)0x32430170,\n  (q31_t)0x323d3a14, (q31_t)0x32377298, (q31_t)0x3231aafe, (q31_t)0x322be345, (q31_t)0x32261b6c, (q31_t)0x32205375, (q31_t)0x321a8b5f, (q31_t)0x3214c32a,\n  (q31_t)0x320efad6, (q31_t)0x32093263, (q31_t)0x320369d2, (q31_t)0x31fda121, (q31_t)0x31f7d852, (q31_t)0x31f20f64, (q31_t)0x31ec4657, (q31_t)0x31e67d2b,\n  (q31_t)0x31e0b3e0, (q31_t)0x31daea77, (q31_t)0x31d520ef, (q31_t)0x31cf5748, (q31_t)0x31c98d83, (q31_t)0x31c3c39e, (q31_t)0x31bdf99b, (q31_t)0x31b82f7a,\n  (q31_t)0x31b2653a, (q31_t)0x31ac9adb, (q31_t)0x31a6d05d, (q31_t)0x31a105c1, (q31_t)0x319b3b06, (q31_t)0x3195702d, (q31_t)0x318fa535, (q31_t)0x3189da1e,\n  (q31_t)0x31840ee9, (q31_t)0x317e4395, (q31_t)0x31787823, (q31_t)0x3172ac92, (q31_t)0x316ce0e3, (q31_t)0x31671515, (q31_t)0x31614929, (q31_t)0x315b7d1e,\n  (q31_t)0x3155b0f5, (q31_t)0x314fe4ae, (q31_t)0x314a1848, (q31_t)0x31444bc3, (q31_t)0x313e7f21, (q31_t)0x3138b260, (q31_t)0x3132e580, (q31_t)0x312d1882,\n  (q31_t)0x31274b66, (q31_t)0x31217e2c, (q31_t)0x311bb0d3, (q31_t)0x3115e35c, (q31_t)0x311015c6, (q31_t)0x310a4813, (q31_t)0x31047a41, (q31_t)0x30feac51,\n  (q31_t)0x30f8de42, (q31_t)0x30f31016, (q31_t)0x30ed41cb, (q31_t)0x30e77362, (q31_t)0x30e1a4db, (q31_t)0x30dbd636, (q31_t)0x30d60772, (q31_t)0x30d03891,\n  (q31_t)0x30ca6991, (q31_t)0x30c49a74, (q31_t)0x30becb38, (q31_t)0x30b8fbde, (q31_t)0x30b32c66, (q31_t)0x30ad5cd0, (q31_t)0x30a78d1c, (q31_t)0x30a1bd4a,\n  (q31_t)0x309bed5a, (q31_t)0x30961d4c, (q31_t)0x30904d20, (q31_t)0x308a7cd6, (q31_t)0x3084ac6e, (q31_t)0x307edbe9, (q31_t)0x30790b45, (q31_t)0x30733a83,\n  (q31_t)0x306d69a4, (q31_t)0x306798a7, (q31_t)0x3061c78b, (q31_t)0x305bf652, (q31_t)0x305624fb, (q31_t)0x30505387, (q31_t)0x304a81f4, (q31_t)0x3044b044,\n  (q31_t)0x303ede76, (q31_t)0x30390c8a, (q31_t)0x30333a80, (q31_t)0x302d6859, (q31_t)0x30279614, (q31_t)0x3021c3b1, (q31_t)0x301bf131, (q31_t)0x30161e93,\n  (q31_t)0x30104bd7, (q31_t)0x300a78fe, (q31_t)0x3004a607, (q31_t)0x2ffed2f2, (q31_t)0x2ff8ffc0, (q31_t)0x2ff32c70, (q31_t)0x2fed5902, (q31_t)0x2fe78577,\n  (q31_t)0x2fe1b1cf, (q31_t)0x2fdbde09, (q31_t)0x2fd60a25, (q31_t)0x2fd03624, (q31_t)0x2fca6206, (q31_t)0x2fc48dc9, (q31_t)0x2fbeb970, (q31_t)0x2fb8e4f9,\n  (q31_t)0x2fb31064, (q31_t)0x2fad3bb3, (q31_t)0x2fa766e3, (q31_t)0x2fa191f7, (q31_t)0x2f9bbced, (q31_t)0x2f95e7c5, (q31_t)0x2f901280, (q31_t)0x2f8a3d1e,\n  (q31_t)0x2f84679f, (q31_t)0x2f7e9202, (q31_t)0x2f78bc48, (q31_t)0x2f72e671, (q31_t)0x2f6d107c, (q31_t)0x2f673a6a, (q31_t)0x2f61643b, (q31_t)0x2f5b8def,\n  (q31_t)0x2f55b785, (q31_t)0x2f4fe0ff, (q31_t)0x2f4a0a5b, (q31_t)0x2f44339a, (q31_t)0x2f3e5cbb, (q31_t)0x2f3885c0, (q31_t)0x2f32aea8, (q31_t)0x2f2cd772,\n  (q31_t)0x2f27001f, (q31_t)0x2f2128af, (q31_t)0x2f1b5122, (q31_t)0x2f157979, (q31_t)0x2f0fa1b2, (q31_t)0x2f09c9ce, (q31_t)0x2f03f1cd, (q31_t)0x2efe19ae,\n  (q31_t)0x2ef84173, (q31_t)0x2ef2691b, (q31_t)0x2eec90a7, (q31_t)0x2ee6b815, (q31_t)0x2ee0df66, (q31_t)0x2edb069a, (q31_t)0x2ed52db1, (q31_t)0x2ecf54ac,\n  (q31_t)0x2ec97b89, (q31_t)0x2ec3a24a, (q31_t)0x2ebdc8ee, (q31_t)0x2eb7ef75, (q31_t)0x2eb215df, (q31_t)0x2eac3c2d, (q31_t)0x2ea6625d, (q31_t)0x2ea08871,\n  (q31_t)0x2e9aae68, (q31_t)0x2e94d443, (q31_t)0x2e8efa00, (q31_t)0x2e891fa1, (q31_t)0x2e834525, (q31_t)0x2e7d6a8d, (q31_t)0x2e778fd8, (q31_t)0x2e71b506,\n  (q31_t)0x2e6bda17, (q31_t)0x2e65ff0c, (q31_t)0x2e6023e5, (q31_t)0x2e5a48a0, (q31_t)0x2e546d3f, (q31_t)0x2e4e91c2, (q31_t)0x2e48b628, (q31_t)0x2e42da71,\n  (q31_t)0x2e3cfe9e, (q31_t)0x2e3722ae, (q31_t)0x2e3146a2, (q31_t)0x2e2b6a79, (q31_t)0x2e258e34, (q31_t)0x2e1fb1d3, (q31_t)0x2e19d554, (q31_t)0x2e13f8ba,\n  (q31_t)0x2e0e1c03, (q31_t)0x2e083f30, (q31_t)0x2e026240, (q31_t)0x2dfc8534, (q31_t)0x2df6a80b, (q31_t)0x2df0cac6, (q31_t)0x2deaed65, (q31_t)0x2de50fe8,\n  (q31_t)0x2ddf324e, (q31_t)0x2dd95498, (q31_t)0x2dd376c5, (q31_t)0x2dcd98d7, (q31_t)0x2dc7bacc, (q31_t)0x2dc1dca4, (q31_t)0x2dbbfe61, (q31_t)0x2db62001,\n  (q31_t)0x2db04186, (q31_t)0x2daa62ee, (q31_t)0x2da4843a, (q31_t)0x2d9ea569, (q31_t)0x2d98c67d, (q31_t)0x2d92e774, (q31_t)0x2d8d084f, (q31_t)0x2d87290f,\n  (q31_t)0x2d8149b2, (q31_t)0x2d7b6a39, (q31_t)0x2d758aa4, (q31_t)0x2d6faaf3, (q31_t)0x2d69cb26, (q31_t)0x2d63eb3d, (q31_t)0x2d5e0b38, (q31_t)0x2d582b17,\n  (q31_t)0x2d524ada, (q31_t)0x2d4c6a81, (q31_t)0x2d468a0c, (q31_t)0x2d40a97b, (q31_t)0x2d3ac8ce, (q31_t)0x2d34e805, (q31_t)0x2d2f0721, (q31_t)0x2d292620,\n  (q31_t)0x2d234504, (q31_t)0x2d1d63cc, (q31_t)0x2d178278, (q31_t)0x2d11a108, (q31_t)0x2d0bbf7d, (q31_t)0x2d05ddd5, (q31_t)0x2cfffc12, (q31_t)0x2cfa1a33,\n  (q31_t)0x2cf43839, (q31_t)0x2cee5622, (q31_t)0x2ce873f0, (q31_t)0x2ce291a2, (q31_t)0x2cdcaf39, (q31_t)0x2cd6ccb4, (q31_t)0x2cd0ea13, (q31_t)0x2ccb0756,\n  (q31_t)0x2cc5247e, (q31_t)0x2cbf418b, (q31_t)0x2cb95e7b, (q31_t)0x2cb37b51, (q31_t)0x2cad980a, (q31_t)0x2ca7b4a8, (q31_t)0x2ca1d12a, (q31_t)0x2c9bed91,\n  (q31_t)0x2c9609dd, (q31_t)0x2c90260d, (q31_t)0x2c8a4221, (q31_t)0x2c845e1a, (q31_t)0x2c7e79f7, (q31_t)0x2c7895b9, (q31_t)0x2c72b160, (q31_t)0x2c6ccceb,\n  (q31_t)0x2c66e85b, (q31_t)0x2c6103af, (q31_t)0x2c5b1ee8, (q31_t)0x2c553a06, (q31_t)0x2c4f5508, (q31_t)0x2c496fef, (q31_t)0x2c438abb, (q31_t)0x2c3da56b,\n  (q31_t)0x2c37c000, (q31_t)0x2c31da7a, (q31_t)0x2c2bf4d8, (q31_t)0x2c260f1c, (q31_t)0x2c202944, (q31_t)0x2c1a4351, (q31_t)0x2c145d42, (q31_t)0x2c0e7719,\n  (q31_t)0x2c0890d4, (q31_t)0x2c02aa74, (q31_t)0x2bfcc3f9, (q31_t)0x2bf6dd63, (q31_t)0x2bf0f6b1, (q31_t)0x2beb0fe5, (q31_t)0x2be528fd, (q31_t)0x2bdf41fb,\n  (q31_t)0x2bd95add, (q31_t)0x2bd373a4, (q31_t)0x2bcd8c51, (q31_t)0x2bc7a4e2, (q31_t)0x2bc1bd58, (q31_t)0x2bbbd5b3, (q31_t)0x2bb5edf4, (q31_t)0x2bb00619,\n  (q31_t)0x2baa1e23, (q31_t)0x2ba43613, (q31_t)0x2b9e4de7, (q31_t)0x2b9865a1, (q31_t)0x2b927d3f, (q31_t)0x2b8c94c3, (q31_t)0x2b86ac2c, (q31_t)0x2b80c37a,\n  (q31_t)0x2b7adaae, (q31_t)0x2b74f1c6, (q31_t)0x2b6f08c4, (q31_t)0x2b691fa6, (q31_t)0x2b63366f, (q31_t)0x2b5d4d1c, (q31_t)0x2b5763ae, (q31_t)0x2b517a26,\n  (q31_t)0x2b4b9083, (q31_t)0x2b45a6c6, (q31_t)0x2b3fbced, (q31_t)0x2b39d2fa, (q31_t)0x2b33e8ed, (q31_t)0x2b2dfec5, (q31_t)0x2b281482, (q31_t)0x2b222a24,\n  (q31_t)0x2b1c3fac, (q31_t)0x2b165519, (q31_t)0x2b106a6c, (q31_t)0x2b0a7fa4, (q31_t)0x2b0494c2, (q31_t)0x2afea9c5, (q31_t)0x2af8bead, (q31_t)0x2af2d37b,\n  (q31_t)0x2aece82f, (q31_t)0x2ae6fcc8, (q31_t)0x2ae11146, (q31_t)0x2adb25aa, (q31_t)0x2ad539f4, (q31_t)0x2acf4e23, (q31_t)0x2ac96238, (q31_t)0x2ac37633,\n  (q31_t)0x2abd8a13, (q31_t)0x2ab79dd8, (q31_t)0x2ab1b184, (q31_t)0x2aabc515, (q31_t)0x2aa5d88b, (q31_t)0x2a9febe8, (q31_t)0x2a99ff2a, (q31_t)0x2a941252,\n  (q31_t)0x2a8e255f, (q31_t)0x2a883853, (q31_t)0x2a824b2c, (q31_t)0x2a7c5deb, (q31_t)0x2a76708f, (q31_t)0x2a70831a, (q31_t)0x2a6a958a, (q31_t)0x2a64a7e0,\n  (q31_t)0x2a5eba1c, (q31_t)0x2a58cc3e, (q31_t)0x2a52de46, (q31_t)0x2a4cf033, (q31_t)0x2a470207, (q31_t)0x2a4113c0, (q31_t)0x2a3b2560, (q31_t)0x2a3536e5,\n  (q31_t)0x2a2f4850, (q31_t)0x2a2959a1, (q31_t)0x2a236ad9, (q31_t)0x2a1d7bf6, (q31_t)0x2a178cf9, (q31_t)0x2a119de2, (q31_t)0x2a0baeb2, (q31_t)0x2a05bf67,\n  (q31_t)0x29ffd003, (q31_t)0x29f9e084, (q31_t)0x29f3f0ec, (q31_t)0x29ee013a, (q31_t)0x29e8116e, (q31_t)0x29e22188, (q31_t)0x29dc3188, (q31_t)0x29d6416f,\n  (q31_t)0x29d0513b, (q31_t)0x29ca60ee, (q31_t)0x29c47087, (q31_t)0x29be8007, (q31_t)0x29b88f6c, (q31_t)0x29b29eb8, (q31_t)0x29acadea, (q31_t)0x29a6bd02,\n  (q31_t)0x29a0cc01, (q31_t)0x299adae6, (q31_t)0x2994e9b1, (q31_t)0x298ef863, (q31_t)0x298906fb, (q31_t)0x2983157a, (q31_t)0x297d23df, (q31_t)0x2977322a,\n  (q31_t)0x2971405b, (q31_t)0x296b4e74, (q31_t)0x29655c72, (q31_t)0x295f6a57, (q31_t)0x29597823, (q31_t)0x295385d5, (q31_t)0x294d936d, (q31_t)0x2947a0ec,\n  (q31_t)0x2941ae52, (q31_t)0x293bbb9e, (q31_t)0x2935c8d1, (q31_t)0x292fd5ea, (q31_t)0x2929e2ea, (q31_t)0x2923efd0, (q31_t)0x291dfc9d, (q31_t)0x29180951,\n  (q31_t)0x291215eb, (q31_t)0x290c226c, (q31_t)0x29062ed4, (q31_t)0x29003b23, (q31_t)0x28fa4758, (q31_t)0x28f45374, (q31_t)0x28ee5f76, (q31_t)0x28e86b5f,\n  (q31_t)0x28e27730, (q31_t)0x28dc82e6, (q31_t)0x28d68e84, (q31_t)0x28d09a09, (q31_t)0x28caa574, (q31_t)0x28c4b0c6, (q31_t)0x28bebbff, (q31_t)0x28b8c71f,\n  (q31_t)0x28b2d226, (q31_t)0x28acdd13, (q31_t)0x28a6e7e8, (q31_t)0x28a0f2a3, (q31_t)0x289afd46, (q31_t)0x289507cf, (q31_t)0x288f123f, (q31_t)0x28891c97,\n  (q31_t)0x288326d5, (q31_t)0x287d30fa, (q31_t)0x28773b07, (q31_t)0x287144fa, (q31_t)0x286b4ed5, (q31_t)0x28655896, (q31_t)0x285f623f, (q31_t)0x28596bce,\n  (q31_t)0x28537545, (q31_t)0x284d7ea3, (q31_t)0x284787e8, (q31_t)0x28419114, (q31_t)0x283b9a28, (q31_t)0x2835a322, (q31_t)0x282fac04, (q31_t)0x2829b4cd,\n  (q31_t)0x2823bd7d, (q31_t)0x281dc615, (q31_t)0x2817ce93, (q31_t)0x2811d6f9, (q31_t)0x280bdf46, (q31_t)0x2805e77b, (q31_t)0x27ffef97, (q31_t)0x27f9f79a,\n  (q31_t)0x27f3ff85, (q31_t)0x27ee0756, (q31_t)0x27e80f10, (q31_t)0x27e216b0, (q31_t)0x27dc1e38, (q31_t)0x27d625a8, (q31_t)0x27d02cff, (q31_t)0x27ca343d,\n  (q31_t)0x27c43b63, (q31_t)0x27be4270, (q31_t)0x27b84965, (q31_t)0x27b25041, (q31_t)0x27ac5705, (q31_t)0x27a65db0, (q31_t)0x27a06443, (q31_t)0x279a6abd,\n  (q31_t)0x2794711f, (q31_t)0x278e7768, (q31_t)0x27887d99, (q31_t)0x278283b2, (q31_t)0x277c89b3, (q31_t)0x27768f9b, (q31_t)0x2770956a, (q31_t)0x276a9b21,\n  (q31_t)0x2764a0c0, (q31_t)0x275ea647, (q31_t)0x2758abb6, (q31_t)0x2752b10c, (q31_t)0x274cb64a, (q31_t)0x2746bb6f, (q31_t)0x2740c07d, (q31_t)0x273ac572,\n  (q31_t)0x2734ca4f, (q31_t)0x272ecf14, (q31_t)0x2728d3c0, (q31_t)0x2722d855, (q31_t)0x271cdcd1, (q31_t)0x2716e136, (q31_t)0x2710e582, (q31_t)0x270ae9b6,\n  (q31_t)0x2704edd2, (q31_t)0x26fef1d5, (q31_t)0x26f8f5c1, (q31_t)0x26f2f995, (q31_t)0x26ecfd51, (q31_t)0x26e700f5, (q31_t)0x26e10480, (q31_t)0x26db07f4,\n  (q31_t)0x26d50b50, (q31_t)0x26cf0e94, (q31_t)0x26c911c0, (q31_t)0x26c314d4, (q31_t)0x26bd17d0, (q31_t)0x26b71ab4, (q31_t)0x26b11d80, (q31_t)0x26ab2034,\n  (q31_t)0x26a522d1, (q31_t)0x269f2556, (q31_t)0x269927c3, (q31_t)0x26932a18, (q31_t)0x268d2c55, (q31_t)0x26872e7b, (q31_t)0x26813088, (q31_t)0x267b327e,\n  (q31_t)0x2675345d, (q31_t)0x266f3623, (q31_t)0x266937d2, (q31_t)0x26633969, (q31_t)0x265d3ae9, (q31_t)0x26573c50, (q31_t)0x26513da1, (q31_t)0x264b3ed9,\n  (q31_t)0x26453ffa, (q31_t)0x263f4103, (q31_t)0x263941f5, (q31_t)0x263342cf, (q31_t)0x262d4392, (q31_t)0x2627443d, (q31_t)0x262144d0, (q31_t)0x261b454c,\n  (q31_t)0x261545b0, (q31_t)0x260f45fd, (q31_t)0x26094633, (q31_t)0x26034651, (q31_t)0x25fd4657, (q31_t)0x25f74646, (q31_t)0x25f1461e, (q31_t)0x25eb45de,\n  (q31_t)0x25e54587, (q31_t)0x25df4519, (q31_t)0x25d94493, (q31_t)0x25d343f6, (q31_t)0x25cd4341, (q31_t)0x25c74276, (q31_t)0x25c14192, (q31_t)0x25bb4098,\n  (q31_t)0x25b53f86, (q31_t)0x25af3e5d, (q31_t)0x25a93d1d, (q31_t)0x25a33bc6, (q31_t)0x259d3a57, (q31_t)0x259738d1, (q31_t)0x25913734, (q31_t)0x258b3580,\n  (q31_t)0x258533b5, (q31_t)0x257f31d2, (q31_t)0x25792fd8, (q31_t)0x25732dc8, (q31_t)0x256d2ba0, (q31_t)0x25672961, (q31_t)0x2561270b, (q31_t)0x255b249e,\n  (q31_t)0x2555221a, (q31_t)0x254f1f7e, (q31_t)0x25491ccc, (q31_t)0x25431a03, (q31_t)0x253d1723, (q31_t)0x2537142c, (q31_t)0x2531111e, (q31_t)0x252b0df9,\n  (q31_t)0x25250abd, (q31_t)0x251f076a, (q31_t)0x25190400, (q31_t)0x25130080, (q31_t)0x250cfce8, (q31_t)0x2506f93a, (q31_t)0x2500f574, (q31_t)0x24faf198,\n  (q31_t)0x24f4eda6, (q31_t)0x24eee99c, (q31_t)0x24e8e57c, (q31_t)0x24e2e144, (q31_t)0x24dcdcf6, (q31_t)0x24d6d892, (q31_t)0x24d0d416, (q31_t)0x24cacf84,\n  (q31_t)0x24c4cadb, (q31_t)0x24bec61c, (q31_t)0x24b8c146, (q31_t)0x24b2bc59, (q31_t)0x24acb756, (q31_t)0x24a6b23b, (q31_t)0x24a0ad0b, (q31_t)0x249aa7c4,\n  (q31_t)0x2494a266, (q31_t)0x248e9cf1, (q31_t)0x24889766, (q31_t)0x248291c5, (q31_t)0x247c8c0d, (q31_t)0x2476863e, (q31_t)0x24708059, (q31_t)0x246a7a5e,\n  (q31_t)0x2464744c, (q31_t)0x245e6e23, (q31_t)0x245867e4, (q31_t)0x2452618f, (q31_t)0x244c5b24, (q31_t)0x244654a1, (q31_t)0x24404e09, (q31_t)0x243a475a,\n  (q31_t)0x24344095, (q31_t)0x242e39ba, (q31_t)0x242832c8, (q31_t)0x24222bc0, (q31_t)0x241c24a1, (q31_t)0x24161d6d, (q31_t)0x24101622, (q31_t)0x240a0ec1,\n  (q31_t)0x24040749, (q31_t)0x23fdffbc, (q31_t)0x23f7f818, (q31_t)0x23f1f05e, (q31_t)0x23ebe88e, (q31_t)0x23e5e0a7, (q31_t)0x23dfd8ab, (q31_t)0x23d9d098,\n  (q31_t)0x23d3c86f, (q31_t)0x23cdc031, (q31_t)0x23c7b7dc, (q31_t)0x23c1af71, (q31_t)0x23bba6f0, (q31_t)0x23b59e59, (q31_t)0x23af95ac, (q31_t)0x23a98ce8,\n  (q31_t)0x23a3840f, (q31_t)0x239d7b20, (q31_t)0x2397721b, (q31_t)0x23916900, (q31_t)0x238b5fcf, (q31_t)0x23855688, (q31_t)0x237f4d2b, (q31_t)0x237943b9,\n  (q31_t)0x23733a30, (q31_t)0x236d3092, (q31_t)0x236726dd, (q31_t)0x23611d13, (q31_t)0x235b1333, (q31_t)0x2355093e, (q31_t)0x234eff32, (q31_t)0x2348f511,\n  (q31_t)0x2342eada, (q31_t)0x233ce08d, (q31_t)0x2336d62a, (q31_t)0x2330cbb2, (q31_t)0x232ac124, (q31_t)0x2324b680, (q31_t)0x231eabc7, (q31_t)0x2318a0f8,\n  (q31_t)0x23129613, (q31_t)0x230c8b19, (q31_t)0x23068009, (q31_t)0x230074e3, (q31_t)0x22fa69a8, (q31_t)0x22f45e57, (q31_t)0x22ee52f1, (q31_t)0x22e84775,\n  (q31_t)0x22e23be4, (q31_t)0x22dc303d, (q31_t)0x22d62480, (q31_t)0x22d018ae, (q31_t)0x22ca0cc7, (q31_t)0x22c400ca, (q31_t)0x22bdf4b8, (q31_t)0x22b7e890,\n  (q31_t)0x22b1dc53, (q31_t)0x22abd001, (q31_t)0x22a5c399, (q31_t)0x229fb71b, (q31_t)0x2299aa89, (q31_t)0x22939de1, (q31_t)0x228d9123, (q31_t)0x22878451,\n  (q31_t)0x22817769, (q31_t)0x227b6a6c, (q31_t)0x22755d59, (q31_t)0x226f5032, (q31_t)0x226942f5, (q31_t)0x226335a2, (q31_t)0x225d283b, (q31_t)0x22571abe,\n  (q31_t)0x22510d2d, (q31_t)0x224aff86, (q31_t)0x2244f1c9, (q31_t)0x223ee3f8, (q31_t)0x2238d612, (q31_t)0x2232c816, (q31_t)0x222cba06, (q31_t)0x2226abe0,\n  (q31_t)0x22209da5, (q31_t)0x221a8f56, (q31_t)0x221480f1, (q31_t)0x220e7277, (q31_t)0x220863e8, (q31_t)0x22025544, (q31_t)0x21fc468b, (q31_t)0x21f637be,\n  (q31_t)0x21f028db, (q31_t)0x21ea19e3, (q31_t)0x21e40ad7, (q31_t)0x21ddfbb5, (q31_t)0x21d7ec7f, (q31_t)0x21d1dd34, (q31_t)0x21cbcdd3, (q31_t)0x21c5be5e,\n  (q31_t)0x21bfaed5, (q31_t)0x21b99f36, (q31_t)0x21b38f83, (q31_t)0x21ad7fba, (q31_t)0x21a76fdd, (q31_t)0x21a15fec, (q31_t)0x219b4fe5, (q31_t)0x21953fca,\n  (q31_t)0x218f2f9a, (q31_t)0x21891f55, (q31_t)0x21830efc, (q31_t)0x217cfe8e, (q31_t)0x2176ee0b, (q31_t)0x2170dd74, (q31_t)0x216accc8, (q31_t)0x2164bc08,\n  (q31_t)0x215eab33, (q31_t)0x21589a49, (q31_t)0x2152894b, (q31_t)0x214c7838, (q31_t)0x21466710, (q31_t)0x214055d4, (q31_t)0x213a4484, (q31_t)0x2134331f,\n  (q31_t)0x212e21a6, (q31_t)0x21281018, (q31_t)0x2121fe76, (q31_t)0x211becbf, (q31_t)0x2115daf4, (q31_t)0x210fc914, (q31_t)0x2109b720, (q31_t)0x2103a518,\n  (q31_t)0x20fd92fb, (q31_t)0x20f780ca, (q31_t)0x20f16e84, (q31_t)0x20eb5c2b, (q31_t)0x20e549bd, (q31_t)0x20df373a, (q31_t)0x20d924a4, (q31_t)0x20d311f9,\n  (q31_t)0x20ccff3a, (q31_t)0x20c6ec66, (q31_t)0x20c0d97f, (q31_t)0x20bac683, (q31_t)0x20b4b373, (q31_t)0x20aea04f, (q31_t)0x20a88d17, (q31_t)0x20a279ca,\n  (q31_t)0x209c666a, (q31_t)0x209652f5, (q31_t)0x20903f6c, (q31_t)0x208a2bcf, (q31_t)0x2084181e, (q31_t)0x207e0459, (q31_t)0x2077f080, (q31_t)0x2071dc93,\n  (q31_t)0x206bc892, (q31_t)0x2065b47d, (q31_t)0x205fa054, (q31_t)0x20598c17, (q31_t)0x205377c6, (q31_t)0x204d6361, (q31_t)0x20474ee8, (q31_t)0x20413a5b,\n  (q31_t)0x203b25bb, (q31_t)0x20351106, (q31_t)0x202efc3e, (q31_t)0x2028e761, (q31_t)0x2022d271, (q31_t)0x201cbd6d, (q31_t)0x2016a856, (q31_t)0x2010932a,\n  (q31_t)0x200a7deb, (q31_t)0x20046898, (q31_t)0x1ffe5331, (q31_t)0x1ff83db6, (q31_t)0x1ff22828, (q31_t)0x1fec1286, (q31_t)0x1fe5fcd0, (q31_t)0x1fdfe707,\n  (q31_t)0x1fd9d12a, (q31_t)0x1fd3bb39, (q31_t)0x1fcda535, (q31_t)0x1fc78f1d, (q31_t)0x1fc178f1, (q31_t)0x1fbb62b2, (q31_t)0x1fb54c60, (q31_t)0x1faf35f9,\n  (q31_t)0x1fa91f80, (q31_t)0x1fa308f2, (q31_t)0x1f9cf252, (q31_t)0x1f96db9d, (q31_t)0x1f90c4d5, (q31_t)0x1f8aadfa, (q31_t)0x1f84970b, (q31_t)0x1f7e8009,\n  (q31_t)0x1f7868f4, (q31_t)0x1f7251ca, (q31_t)0x1f6c3a8e, (q31_t)0x1f66233e, (q31_t)0x1f600bdb, (q31_t)0x1f59f465, (q31_t)0x1f53dcdb, (q31_t)0x1f4dc53d,\n  (q31_t)0x1f47ad8d, (q31_t)0x1f4195c9, (q31_t)0x1f3b7df2, (q31_t)0x1f356608, (q31_t)0x1f2f4e0a, (q31_t)0x1f2935f9, (q31_t)0x1f231dd5, (q31_t)0x1f1d059e,\n  (q31_t)0x1f16ed54, (q31_t)0x1f10d4f6, (q31_t)0x1f0abc85, (q31_t)0x1f04a401, (q31_t)0x1efe8b6a, (q31_t)0x1ef872c0, (q31_t)0x1ef25a03, (q31_t)0x1eec4132,\n  (q31_t)0x1ee6284f, (q31_t)0x1ee00f58, (q31_t)0x1ed9f64f, (q31_t)0x1ed3dd32, (q31_t)0x1ecdc402, (q31_t)0x1ec7aac0, (q31_t)0x1ec1916a, (q31_t)0x1ebb7802,\n  (q31_t)0x1eb55e86, (q31_t)0x1eaf44f8, (q31_t)0x1ea92b56, (q31_t)0x1ea311a2, (q31_t)0x1e9cf7db, (q31_t)0x1e96de01, (q31_t)0x1e90c414, (q31_t)0x1e8aaa14,\n  (q31_t)0x1e849001, (q31_t)0x1e7e75dc, (q31_t)0x1e785ba3, (q31_t)0x1e724158, (q31_t)0x1e6c26fa, (q31_t)0x1e660c8a, (q31_t)0x1e5ff206, (q31_t)0x1e59d770,\n  (q31_t)0x1e53bcc7, (q31_t)0x1e4da20c, (q31_t)0x1e47873d, (q31_t)0x1e416c5d, (q31_t)0x1e3b5169, (q31_t)0x1e353663, (q31_t)0x1e2f1b4a, (q31_t)0x1e29001e,\n  (q31_t)0x1e22e4e0, (q31_t)0x1e1cc990, (q31_t)0x1e16ae2c, (q31_t)0x1e1092b6, (q31_t)0x1e0a772e, (q31_t)0x1e045b93, (q31_t)0x1dfe3fe6, (q31_t)0x1df82426,\n  (q31_t)0x1df20853, (q31_t)0x1debec6f, (q31_t)0x1de5d077, (q31_t)0x1ddfb46e, (q31_t)0x1dd99851, (q31_t)0x1dd37c23, (q31_t)0x1dcd5fe2, (q31_t)0x1dc7438e,\n  (q31_t)0x1dc12729, (q31_t)0x1dbb0ab0, (q31_t)0x1db4ee26, (q31_t)0x1daed189, (q31_t)0x1da8b4da, (q31_t)0x1da29819, (q31_t)0x1d9c7b45, (q31_t)0x1d965e5f,\n  (q31_t)0x1d904167, (q31_t)0x1d8a245c, (q31_t)0x1d840740, (q31_t)0x1d7dea11, (q31_t)0x1d77ccd0, (q31_t)0x1d71af7d, (q31_t)0x1d6b9217, (q31_t)0x1d6574a0,\n  (q31_t)0x1d5f5716, (q31_t)0x1d59397a, (q31_t)0x1d531bcc, (q31_t)0x1d4cfe0d, (q31_t)0x1d46e03a, (q31_t)0x1d40c256, (q31_t)0x1d3aa460, (q31_t)0x1d348658,\n  (q31_t)0x1d2e683e, (q31_t)0x1d284a12, (q31_t)0x1d222bd3, (q31_t)0x1d1c0d83, (q31_t)0x1d15ef21, (q31_t)0x1d0fd0ad, (q31_t)0x1d09b227, (q31_t)0x1d03938f,\n  (q31_t)0x1cfd74e5, (q31_t)0x1cf7562a, (q31_t)0x1cf1375c, (q31_t)0x1ceb187d, (q31_t)0x1ce4f98c, (q31_t)0x1cdeda89, (q31_t)0x1cd8bb74, (q31_t)0x1cd29c4d,\n  (q31_t)0x1ccc7d15, (q31_t)0x1cc65dca, (q31_t)0x1cc03e6e, (q31_t)0x1cba1f01, (q31_t)0x1cb3ff81, (q31_t)0x1caddff0, (q31_t)0x1ca7c04d, (q31_t)0x1ca1a099,\n  (q31_t)0x1c9b80d3, (q31_t)0x1c9560fb, (q31_t)0x1c8f4112, (q31_t)0x1c892117, (q31_t)0x1c83010a, (q31_t)0x1c7ce0ec, (q31_t)0x1c76c0bc, (q31_t)0x1c70a07b,\n  (q31_t)0x1c6a8028, (q31_t)0x1c645fc3, (q31_t)0x1c5e3f4d, (q31_t)0x1c581ec6, (q31_t)0x1c51fe2d, (q31_t)0x1c4bdd83, (q31_t)0x1c45bcc7, (q31_t)0x1c3f9bf9,\n  (q31_t)0x1c397b1b, (q31_t)0x1c335a2b, (q31_t)0x1c2d3929, (q31_t)0x1c271816, (q31_t)0x1c20f6f2, (q31_t)0x1c1ad5bc, (q31_t)0x1c14b475, (q31_t)0x1c0e931d,\n  (q31_t)0x1c0871b4, (q31_t)0x1c025039, (q31_t)0x1bfc2ead, (q31_t)0x1bf60d0f, (q31_t)0x1befeb60, (q31_t)0x1be9c9a1, (q31_t)0x1be3a7cf, (q31_t)0x1bdd85ed,\n  (q31_t)0x1bd763fa, (q31_t)0x1bd141f5, (q31_t)0x1bcb1fdf, (q31_t)0x1bc4fdb8, (q31_t)0x1bbedb80, (q31_t)0x1bb8b937, (q31_t)0x1bb296dc, (q31_t)0x1bac7471,\n  (q31_t)0x1ba651f5, (q31_t)0x1ba02f67, (q31_t)0x1b9a0cc8, (q31_t)0x1b93ea19, (q31_t)0x1b8dc758, (q31_t)0x1b87a487, (q31_t)0x1b8181a4, (q31_t)0x1b7b5eb0,\n  (q31_t)0x1b753bac, (q31_t)0x1b6f1897, (q31_t)0x1b68f570, (q31_t)0x1b62d239, (q31_t)0x1b5caef1, (q31_t)0x1b568b98, (q31_t)0x1b50682e, (q31_t)0x1b4a44b3,\n  (q31_t)0x1b442127, (q31_t)0x1b3dfd8b, (q31_t)0x1b37d9de, (q31_t)0x1b31b620, (q31_t)0x1b2b9251, (q31_t)0x1b256e71, (q31_t)0x1b1f4a81, (q31_t)0x1b192680,\n  (q31_t)0x1b13026e, (q31_t)0x1b0cde4c, (q31_t)0x1b06ba19, (q31_t)0x1b0095d5, (q31_t)0x1afa7180, (q31_t)0x1af44d1b, (q31_t)0x1aee28a6, (q31_t)0x1ae8041f,\n  (q31_t)0x1ae1df88, (q31_t)0x1adbbae1, (q31_t)0x1ad59629, (q31_t)0x1acf7160, (q31_t)0x1ac94c87, (q31_t)0x1ac3279d, (q31_t)0x1abd02a3, (q31_t)0x1ab6dd98,\n  (q31_t)0x1ab0b87d, (q31_t)0x1aaa9352, (q31_t)0x1aa46e16, (q31_t)0x1a9e48c9, (q31_t)0x1a98236c, (q31_t)0x1a91fdff, (q31_t)0x1a8bd881, (q31_t)0x1a85b2f3,\n  (q31_t)0x1a7f8d54, (q31_t)0x1a7967a6, (q31_t)0x1a7341e6, (q31_t)0x1a6d1c17, (q31_t)0x1a66f637, (q31_t)0x1a60d047, (q31_t)0x1a5aaa47, (q31_t)0x1a548436,\n  (q31_t)0x1a4e5e15, (q31_t)0x1a4837e4, (q31_t)0x1a4211a3, (q31_t)0x1a3beb52, (q31_t)0x1a35c4f0, (q31_t)0x1a2f9e7e, (q31_t)0x1a2977fc, (q31_t)0x1a23516a,\n  (q31_t)0x1a1d2ac8, (q31_t)0x1a170416, (q31_t)0x1a10dd53, (q31_t)0x1a0ab681, (q31_t)0x1a048f9e, (q31_t)0x19fe68ac, (q31_t)0x19f841a9, (q31_t)0x19f21a96,\n  (q31_t)0x19ebf374, (q31_t)0x19e5cc41, (q31_t)0x19dfa4fe, (q31_t)0x19d97dac, (q31_t)0x19d35649, (q31_t)0x19cd2ed7, (q31_t)0x19c70754, (q31_t)0x19c0dfc2,\n  (q31_t)0x19bab820, (q31_t)0x19b4906e, (q31_t)0x19ae68ac, (q31_t)0x19a840da, (q31_t)0x19a218f9, (q31_t)0x199bf107, (q31_t)0x1995c906, (q31_t)0x198fa0f5,\n  (q31_t)0x198978d4, (q31_t)0x198350a4, (q31_t)0x197d2864, (q31_t)0x19770014, (q31_t)0x1970d7b4, (q31_t)0x196aaf45, (q31_t)0x196486c6, (q31_t)0x195e5e37,\n  (q31_t)0x19583599, (q31_t)0x19520ceb, (q31_t)0x194be42d, (q31_t)0x1945bb60, (q31_t)0x193f9283, (q31_t)0x19396997, (q31_t)0x1933409b, (q31_t)0x192d178f,\n  (q31_t)0x1926ee74, (q31_t)0x1920c54a, (q31_t)0x191a9c10, (q31_t)0x191472c6, (q31_t)0x190e496d, (q31_t)0x19082005, (q31_t)0x1901f68d, (q31_t)0x18fbcd06,\n  (q31_t)0x18f5a36f, (q31_t)0x18ef79c9, (q31_t)0x18e95014, (q31_t)0x18e3264f, (q31_t)0x18dcfc7b, (q31_t)0x18d6d297, (q31_t)0x18d0a8a4, (q31_t)0x18ca7ea2,\n  (q31_t)0x18c45491, (q31_t)0x18be2a70, (q31_t)0x18b80040, (q31_t)0x18b1d601, (q31_t)0x18ababb2, (q31_t)0x18a58154, (q31_t)0x189f56e8, (q31_t)0x18992c6b,\n  (q31_t)0x189301e0, (q31_t)0x188cd746, (q31_t)0x1886ac9c, (q31_t)0x188081e4, (q31_t)0x187a571c, (q31_t)0x18742c45, (q31_t)0x186e015f, (q31_t)0x1867d66a,\n  (q31_t)0x1861ab66, (q31_t)0x185b8053, (q31_t)0x18555530, (q31_t)0x184f29ff, (q31_t)0x1848febf, (q31_t)0x1842d370, (q31_t)0x183ca812, (q31_t)0x18367ca5,\n  (q31_t)0x18305129, (q31_t)0x182a259e, (q31_t)0x1823fa04, (q31_t)0x181dce5b, (q31_t)0x1817a2a4, (q31_t)0x181176dd, (q31_t)0x180b4b08, (q31_t)0x18051f24,\n  (q31_t)0x17fef331, (q31_t)0x17f8c72f, (q31_t)0x17f29b1e, (q31_t)0x17ec6eff, (q31_t)0x17e642d1, (q31_t)0x17e01694, (q31_t)0x17d9ea49, (q31_t)0x17d3bdee,\n  (q31_t)0x17cd9186, (q31_t)0x17c7650e, (q31_t)0x17c13888, (q31_t)0x17bb0bf3, (q31_t)0x17b4df4f, (q31_t)0x17aeb29d, (q31_t)0x17a885dc, (q31_t)0x17a2590d,\n  (q31_t)0x179c2c2f, (q31_t)0x1795ff42, (q31_t)0x178fd247, (q31_t)0x1789a53d, (q31_t)0x17837825, (q31_t)0x177d4afe, (q31_t)0x17771dc9, (q31_t)0x1770f086,\n  (q31_t)0x176ac333, (q31_t)0x176495d3, (q31_t)0x175e6864, (q31_t)0x17583ae7, (q31_t)0x17520d5b, (q31_t)0x174bdfc1, (q31_t)0x1745b218, (q31_t)0x173f8461,\n  (q31_t)0x1739569c, (q31_t)0x173328c8, (q31_t)0x172cfae6, (q31_t)0x1726ccf6, (q31_t)0x17209ef8, (q31_t)0x171a70eb, (q31_t)0x171442d0, (q31_t)0x170e14a7,\n  (q31_t)0x1707e670, (q31_t)0x1701b82a, (q31_t)0x16fb89d6, (q31_t)0x16f55b74, (q31_t)0x16ef2d04, (q31_t)0x16e8fe86, (q31_t)0x16e2cff9, (q31_t)0x16dca15f,\n  (q31_t)0x16d672b6, (q31_t)0x16d043ff, (q31_t)0x16ca153a, (q31_t)0x16c3e667, (q31_t)0x16bdb787, (q31_t)0x16b78898, (q31_t)0x16b1599b, (q31_t)0x16ab2a90,\n  (q31_t)0x16a4fb77, (q31_t)0x169ecc50, (q31_t)0x16989d1b, (q31_t)0x16926dd8, (q31_t)0x168c3e87, (q31_t)0x16860f29, (q31_t)0x167fdfbc, (q31_t)0x1679b042,\n  (q31_t)0x167380ba, (q31_t)0x166d5123, (q31_t)0x1667217f, (q31_t)0x1660f1ce, (q31_t)0x165ac20e, (q31_t)0x16549241, (q31_t)0x164e6266, (q31_t)0x1648327d,\n  (q31_t)0x16420286, (q31_t)0x163bd282, (q31_t)0x1635a270, (q31_t)0x162f7250, (q31_t)0x16294222, (q31_t)0x162311e7, (q31_t)0x161ce19e, (q31_t)0x1616b148,\n  (q31_t)0x161080e4, (q31_t)0x160a5072, (q31_t)0x16041ff3, (q31_t)0x15fdef66, (q31_t)0x15f7becc, (q31_t)0x15f18e24, (q31_t)0x15eb5d6e, (q31_t)0x15e52cab,\n  (q31_t)0x15defbdb, (q31_t)0x15d8cafd, (q31_t)0x15d29a11, (q31_t)0x15cc6918, (q31_t)0x15c63812, (q31_t)0x15c006fe, (q31_t)0x15b9d5dd, (q31_t)0x15b3a4ae,\n  (q31_t)0x15ad7372, (q31_t)0x15a74228, (q31_t)0x15a110d2, (q31_t)0x159adf6e, (q31_t)0x1594adfc, (q31_t)0x158e7c7d, (q31_t)0x15884af1, (q31_t)0x15821958,\n  (q31_t)0x157be7b1, (q31_t)0x1575b5fe, (q31_t)0x156f843c, (q31_t)0x1569526e, (q31_t)0x15632093, (q31_t)0x155ceeaa, (q31_t)0x1556bcb4, (q31_t)0x15508ab1,\n  (q31_t)0x154a58a1, (q31_t)0x15442683, (q31_t)0x153df459, (q31_t)0x1537c221, (q31_t)0x15318fdd, (q31_t)0x152b5d8b, (q31_t)0x15252b2c, (q31_t)0x151ef8c0,\n  (q31_t)0x1518c648, (q31_t)0x151293c2, (q31_t)0x150c612f, (q31_t)0x15062e8f, (q31_t)0x14fffbe2, (q31_t)0x14f9c928, (q31_t)0x14f39662, (q31_t)0x14ed638e,\n  (q31_t)0x14e730ae, (q31_t)0x14e0fdc0, (q31_t)0x14dacac6, (q31_t)0x14d497bf, (q31_t)0x14ce64ab, (q31_t)0x14c8318a, (q31_t)0x14c1fe5c, (q31_t)0x14bbcb22,\n  (q31_t)0x14b597da, (q31_t)0x14af6486, (q31_t)0x14a93125, (q31_t)0x14a2fdb8, (q31_t)0x149cca3e, (q31_t)0x149696b7, (q31_t)0x14906323, (q31_t)0x148a2f82,\n  (q31_t)0x1483fbd5, (q31_t)0x147dc81c, (q31_t)0x14779455, (q31_t)0x14716082, (q31_t)0x146b2ca3, (q31_t)0x1464f8b7, (q31_t)0x145ec4be, (q31_t)0x145890b9,\n  (q31_t)0x14525ca7, (q31_t)0x144c2888, (q31_t)0x1445f45d, (q31_t)0x143fc026, (q31_t)0x14398be2, (q31_t)0x14335792, (q31_t)0x142d2335, (q31_t)0x1426eecb,\n  (q31_t)0x1420ba56, (q31_t)0x141a85d3, (q31_t)0x14145145, (q31_t)0x140e1caa, (q31_t)0x1407e803, (q31_t)0x1401b34f, (q31_t)0x13fb7e8f, (q31_t)0x13f549c3,\n  (q31_t)0x13ef14ea, (q31_t)0x13e8e005, (q31_t)0x13e2ab14, (q31_t)0x13dc7616, (q31_t)0x13d6410d, (q31_t)0x13d00bf7, (q31_t)0x13c9d6d4, (q31_t)0x13c3a1a6,\n  (q31_t)0x13bd6c6b, (q31_t)0x13b73725, (q31_t)0x13b101d2, (q31_t)0x13aacc73, (q31_t)0x13a49707, (q31_t)0x139e6190, (q31_t)0x13982c0d, (q31_t)0x1391f67d,\n  (q31_t)0x138bc0e1, (q31_t)0x13858b3a, (q31_t)0x137f5586, (q31_t)0x13791fc6, (q31_t)0x1372e9fb, (q31_t)0x136cb423, (q31_t)0x13667e3f, (q31_t)0x13604850,\n  (q31_t)0x135a1254, (q31_t)0x1353dc4c, (q31_t)0x134da639, (q31_t)0x1347701a, (q31_t)0x134139ee, (q31_t)0x133b03b7, (q31_t)0x1334cd74, (q31_t)0x132e9725,\n  (q31_t)0x132860ca, (q31_t)0x13222a64, (q31_t)0x131bf3f2, (q31_t)0x1315bd73, (q31_t)0x130f86ea, (q31_t)0x13095054, (q31_t)0x130319b3, (q31_t)0x12fce305,\n  (q31_t)0x12f6ac4d, (q31_t)0x12f07588, (q31_t)0x12ea3eb8, (q31_t)0x12e407dc, (q31_t)0x12ddd0f4, (q31_t)0x12d79a01, (q31_t)0x12d16303, (q31_t)0x12cb2bf8,\n  (q31_t)0x12c4f4e2, (q31_t)0x12bebdc1, (q31_t)0x12b88693, (q31_t)0x12b24f5b, (q31_t)0x12ac1817, (q31_t)0x12a5e0c7, (q31_t)0x129fa96c, (q31_t)0x12997205,\n  (q31_t)0x12933a93, (q31_t)0x128d0315, (q31_t)0x1286cb8c, (q31_t)0x128093f7, (q31_t)0x127a5c57, (q31_t)0x127424ac, (q31_t)0x126decf5, (q31_t)0x1267b533,\n  (q31_t)0x12617d66, (q31_t)0x125b458d, (q31_t)0x12550da9, (q31_t)0x124ed5ba, (q31_t)0x12489dbf, (q31_t)0x124265b9, (q31_t)0x123c2da8, (q31_t)0x1235f58b,\n  (q31_t)0x122fbd63, (q31_t)0x12298530, (q31_t)0x12234cf2, (q31_t)0x121d14a9, (q31_t)0x1216dc54, (q31_t)0x1210a3f5, (q31_t)0x120a6b8a, (q31_t)0x12043314,\n  (q31_t)0x11fdfa93, (q31_t)0x11f7c207, (q31_t)0x11f18970, (q31_t)0x11eb50cd, (q31_t)0x11e51820, (q31_t)0x11dedf68, (q31_t)0x11d8a6a4, (q31_t)0x11d26dd6,\n  (q31_t)0x11cc34fc, (q31_t)0x11c5fc18, (q31_t)0x11bfc329, (q31_t)0x11b98a2e, (q31_t)0x11b35129, (q31_t)0x11ad1819, (q31_t)0x11a6defe, (q31_t)0x11a0a5d8,\n  (q31_t)0x119a6ca7, (q31_t)0x1194336b, (q31_t)0x118dfa25, (q31_t)0x1187c0d3, (q31_t)0x11818777, (q31_t)0x117b4e10, (q31_t)0x1175149e, (q31_t)0x116edb22,\n  (q31_t)0x1168a19b, (q31_t)0x11626809, (q31_t)0x115c2e6c, (q31_t)0x1155f4c4, (q31_t)0x114fbb12, (q31_t)0x11498156, (q31_t)0x1143478e, (q31_t)0x113d0dbc,\n  (q31_t)0x1136d3df, (q31_t)0x113099f8, (q31_t)0x112a6006, (q31_t)0x11242609, (q31_t)0x111dec02, (q31_t)0x1117b1f0, (q31_t)0x111177d4, (q31_t)0x110b3dad,\n  (q31_t)0x1105037c, (q31_t)0x10fec940, (q31_t)0x10f88efa, (q31_t)0x10f254a9, (q31_t)0x10ec1a4e, (q31_t)0x10e5dfe8, (q31_t)0x10dfa578, (q31_t)0x10d96afe,\n  (q31_t)0x10d33079, (q31_t)0x10ccf5ea, (q31_t)0x10c6bb50, (q31_t)0x10c080ac, (q31_t)0x10ba45fe, (q31_t)0x10b40b45, (q31_t)0x10add082, (q31_t)0x10a795b5,\n  (q31_t)0x10a15ade, (q31_t)0x109b1ffc, (q31_t)0x1094e510, (q31_t)0x108eaa1a, (q31_t)0x10886f19, (q31_t)0x1082340f, (q31_t)0x107bf8fa, (q31_t)0x1075bddb,\n  (q31_t)0x106f82b2, (q31_t)0x1069477f, (q31_t)0x10630c41, (q31_t)0x105cd0fa, (q31_t)0x105695a8, (q31_t)0x10505a4d, (q31_t)0x104a1ee7, (q31_t)0x1043e377,\n  (q31_t)0x103da7fd, (q31_t)0x10376c79, (q31_t)0x103130ec, (q31_t)0x102af554, (q31_t)0x1024b9b2, (q31_t)0x101e7e06, (q31_t)0x10184251, (q31_t)0x10120691,\n  (q31_t)0x100bcac7, (q31_t)0x10058ef4, (q31_t)0xfff5317, (q31_t)0xff91730, (q31_t)0xff2db3e, (q31_t)0xfec9f44, (q31_t)0xfe6633f, (q31_t)0xfe02730,\n  (q31_t)0xfd9eb18, (q31_t)0xfd3aef6, (q31_t)0xfcd72ca, (q31_t)0xfc73695, (q31_t)0xfc0fa55, (q31_t)0xfbabe0c, (q31_t)0xfb481ba, (q31_t)0xfae455d,\n  (q31_t)0xfa808f7, (q31_t)0xfa1cc87, (q31_t)0xf9b900e, (q31_t)0xf95538b, (q31_t)0xf8f16fe, (q31_t)0xf88da68, (q31_t)0xf829dc8, (q31_t)0xf7c611f,\n  (q31_t)0xf76246c, (q31_t)0xf6fe7af, (q31_t)0xf69aae9, (q31_t)0xf636e1a, (q31_t)0xf5d3141, (q31_t)0xf56f45e, (q31_t)0xf50b773, (q31_t)0xf4a7a7d,\n  (q31_t)0xf443d7e, (q31_t)0xf3e0076, (q31_t)0xf37c365, (q31_t)0xf318649, (q31_t)0xf2b4925, (q31_t)0xf250bf7, (q31_t)0xf1ecec0, (q31_t)0xf189180,\n  (q31_t)0xf125436, (q31_t)0xf0c16e3, (q31_t)0xf05d987, (q31_t)0xeff9c21, (q31_t)0xef95eb2, (q31_t)0xef3213a, (q31_t)0xeece3b9, (q31_t)0xee6a62f,\n  (q31_t)0xee0689b, (q31_t)0xeda2afe, (q31_t)0xed3ed58, (q31_t)0xecdafa9, (q31_t)0xec771f1, (q31_t)0xec1342f, (q31_t)0xebaf665, (q31_t)0xeb4b891,\n  (q31_t)0xeae7ab4, (q31_t)0xea83ccf, (q31_t)0xea1fee0, (q31_t)0xe9bc0e8, (q31_t)0xe9582e7, (q31_t)0xe8f44dd, (q31_t)0xe8906cb, (q31_t)0xe82c8af,\n  (q31_t)0xe7c8a8a, (q31_t)0xe764c5c, (q31_t)0xe700e26, (q31_t)0xe69cfe6, (q31_t)0xe63919e, (q31_t)0xe5d534d, (q31_t)0xe5714f3, (q31_t)0xe50d690,\n  (q31_t)0xe4a9824, (q31_t)0xe4459af, (q31_t)0xe3e1b32, (q31_t)0xe37dcac, (q31_t)0xe319e1d, (q31_t)0xe2b5f85, (q31_t)0xe2520e5, (q31_t)0xe1ee23c,\n  (q31_t)0xe18a38a, (q31_t)0xe1264cf, (q31_t)0xe0c260c, (q31_t)0xe05e740, (q31_t)0xdffa86b, (q31_t)0xdf9698e, (q31_t)0xdf32aa8, (q31_t)0xdecebba,\n  (q31_t)0xde6acc3, (q31_t)0xde06dc3, (q31_t)0xdda2ebb, (q31_t)0xdd3efab, (q31_t)0xdcdb091, (q31_t)0xdc77170, (q31_t)0xdc13245, (q31_t)0xdbaf313,\n  (q31_t)0xdb4b3d7, (q31_t)0xdae7494, (q31_t)0xda83548, (q31_t)0xda1f5f3, (q31_t)0xd9bb696, (q31_t)0xd957731, (q31_t)0xd8f37c3, (q31_t)0xd88f84d,\n  (q31_t)0xd82b8cf, (q31_t)0xd7c7948, (q31_t)0xd7639b9, (q31_t)0xd6ffa22, (q31_t)0xd69ba82, (q31_t)0xd637ada, (q31_t)0xd5d3b2a, (q31_t)0xd56fb71,\n  (q31_t)0xd50bbb1, (q31_t)0xd4a7be8, (q31_t)0xd443c17, (q31_t)0xd3dfc3e, (q31_t)0xd37bc5c, (q31_t)0xd317c73, (q31_t)0xd2b3c81, (q31_t)0xd24fc87,\n  (q31_t)0xd1ebc85, (q31_t)0xd187c7b, (q31_t)0xd123c69, (q31_t)0xd0bfc4f, (q31_t)0xd05bc2d, (q31_t)0xcff7c02, (q31_t)0xcf93bd0, (q31_t)0xcf2fb96,\n  (q31_t)0xcecbb53, (q31_t)0xce67b09, (q31_t)0xce03ab7, (q31_t)0xcd9fa5d, (q31_t)0xcd3b9fb, (q31_t)0xccd7991, (q31_t)0xcc7391f, (q31_t)0xcc0f8a5,\n  (q31_t)0xcbab824, (q31_t)0xcb4779a, (q31_t)0xcae3709, (q31_t)0xca7f670, (q31_t)0xca1b5cf, (q31_t)0xc9b7526, (q31_t)0xc953475, (q31_t)0xc8ef3bd,\n  (q31_t)0xc88b2fd, (q31_t)0xc827235, (q31_t)0xc7c3166, (q31_t)0xc75f08f, (q31_t)0xc6fafb0, (q31_t)0xc696ec9, (q31_t)0xc632ddb, (q31_t)0xc5cece5,\n  (q31_t)0xc56abe8, (q31_t)0xc506ae3, (q31_t)0xc4a29d6, (q31_t)0xc43e8c2, (q31_t)0xc3da7a6, (q31_t)0xc376683, (q31_t)0xc312558, (q31_t)0xc2ae425,\n  (q31_t)0xc24a2eb, (q31_t)0xc1e61aa, (q31_t)0xc182061, (q31_t)0xc11df11, (q31_t)0xc0b9db9, (q31_t)0xc055c5a, (q31_t)0xbff1af3, (q31_t)0xbf8d985,\n  (q31_t)0xbf29810, (q31_t)0xbec5693, (q31_t)0xbe6150f, (q31_t)0xbdfd383, (q31_t)0xbd991f0, (q31_t)0xbd35056, (q31_t)0xbcd0eb5, (q31_t)0xbc6cd0c,\n  (q31_t)0xbc08b5c, (q31_t)0xbba49a5, (q31_t)0xbb407e7, (q31_t)0xbadc621, (q31_t)0xba78454, (q31_t)0xba14280, (q31_t)0xb9b00a5, (q31_t)0xb94bec2,\n  (q31_t)0xb8e7cd9, (q31_t)0xb883ae8, (q31_t)0xb81f8f0, (q31_t)0xb7bb6f2, (q31_t)0xb7574ec, (q31_t)0xb6f32df, (q31_t)0xb68f0cb, (q31_t)0xb62aeaf,\n  (q31_t)0xb5c6c8d, (q31_t)0xb562a64, (q31_t)0xb4fe834, (q31_t)0xb49a5fd, (q31_t)0xb4363bf, (q31_t)0xb3d217a, (q31_t)0xb36df2e, (q31_t)0xb309cdb,\n  (q31_t)0xb2a5a81, (q31_t)0xb241820, (q31_t)0xb1dd5b9, (q31_t)0xb17934b, (q31_t)0xb1150d5, (q31_t)0xb0b0e59, (q31_t)0xb04cbd6, (q31_t)0xafe894d,\n  (q31_t)0xaf846bc, (q31_t)0xaf20425, (q31_t)0xaebc187, (q31_t)0xae57ee2, (q31_t)0xadf3c37, (q31_t)0xad8f985, (q31_t)0xad2b6cc, (q31_t)0xacc740c,\n  (q31_t)0xac63146, (q31_t)0xabfee79, (q31_t)0xab9aba6, (q31_t)0xab368cc, (q31_t)0xaad25eb, (q31_t)0xaa6e304, (q31_t)0xaa0a016, (q31_t)0xa9a5d22,\n  (q31_t)0xa941a27, (q31_t)0xa8dd725, (q31_t)0xa87941d, (q31_t)0xa81510f, (q31_t)0xa7b0dfa, (q31_t)0xa74cadf, (q31_t)0xa6e87bd, (q31_t)0xa684495,\n  (q31_t)0xa620166, (q31_t)0xa5bbe31, (q31_t)0xa557af5, (q31_t)0xa4f37b3, (q31_t)0xa48f46b, (q31_t)0xa42b11d, (q31_t)0xa3c6dc8, (q31_t)0xa362a6d,\n  (q31_t)0xa2fe70b, (q31_t)0xa29a3a3, (q31_t)0xa236035, (q31_t)0xa1d1cc1, (q31_t)0xa16d946, (q31_t)0xa1095c6, (q31_t)0xa0a523f, (q31_t)0xa040eb1,\n  (q31_t)0x9fdcb1e, (q31_t)0x9f78784, (q31_t)0x9f143e5, (q31_t)0x9eb003f, (q31_t)0x9e4bc93, (q31_t)0x9de78e1, (q31_t)0x9d83529, (q31_t)0x9d1f16b,\n  (q31_t)0x9cbada7, (q31_t)0x9c569dc, (q31_t)0x9bf260c, (q31_t)0x9b8e236, (q31_t)0x9b29e59, (q31_t)0x9ac5a77, (q31_t)0x9a6168f, (q31_t)0x99fd2a0,\n  (q31_t)0x9998eac, (q31_t)0x9934ab2, (q31_t)0x98d06b2, (q31_t)0x986c2ac, (q31_t)0x9807ea1, (q31_t)0x97a3a8f, (q31_t)0x973f678, (q31_t)0x96db25a,\n  (q31_t)0x9676e37, (q31_t)0x9612a0e, (q31_t)0x95ae5e0, (q31_t)0x954a1ab, (q31_t)0x94e5d71, (q31_t)0x9481931, (q31_t)0x941d4eb, (q31_t)0x93b90a0,\n  (q31_t)0x9354c4f, (q31_t)0x92f07f8, (q31_t)0x928c39b, (q31_t)0x9227f39, (q31_t)0x91c3ad2, (q31_t)0x915f664, (q31_t)0x90fb1f1, (q31_t)0x9096d79,\n  (q31_t)0x90328fb, (q31_t)0x8fce477, (q31_t)0x8f69fee, (q31_t)0x8f05b5f, (q31_t)0x8ea16cb, (q31_t)0x8e3d231, (q31_t)0x8dd8d92, (q31_t)0x8d748ed,\n  (q31_t)0x8d10443, (q31_t)0x8cabf93, (q31_t)0x8c47ade, (q31_t)0x8be3624, (q31_t)0x8b7f164, (q31_t)0x8b1ac9f, (q31_t)0x8ab67d4, (q31_t)0x8a52304,\n  (q31_t)0x89ede2f, (q31_t)0x8989955, (q31_t)0x8925475, (q31_t)0x88c0f90, (q31_t)0x885caa5, (q31_t)0x87f85b5, (q31_t)0x87940c1, (q31_t)0x872fbc6,\n  (q31_t)0x86cb6c7, (q31_t)0x86671c2, (q31_t)0x8602cb9, (q31_t)0x859e7aa, (q31_t)0x853a296, (q31_t)0x84d5d7d, (q31_t)0x847185e, (q31_t)0x840d33b,\n  (q31_t)0x83a8e12, (q31_t)0x83448e5, (q31_t)0x82e03b2, (q31_t)0x827be7a, (q31_t)0x821793e, (q31_t)0x81b33fc, (q31_t)0x814eeb5, (q31_t)0x80ea969,\n  (q31_t)0x8086419, (q31_t)0x8021ec3, (q31_t)0x7fbd968, (q31_t)0x7f59409, (q31_t)0x7ef4ea4, (q31_t)0x7e9093b, (q31_t)0x7e2c3cd, (q31_t)0x7dc7e5a,\n  (q31_t)0x7d638e2, (q31_t)0x7cff365, (q31_t)0x7c9ade4, (q31_t)0x7c3685d, (q31_t)0x7bd22d2, (q31_t)0x7b6dd42, (q31_t)0x7b097ad, (q31_t)0x7aa5214,\n  (q31_t)0x7a40c76, (q31_t)0x79dc6d3, (q31_t)0x797812b, (q31_t)0x7913b7f, (q31_t)0x78af5ce, (q31_t)0x784b019, (q31_t)0x77e6a5e, (q31_t)0x77824a0,\n  (q31_t)0x771dedc, (q31_t)0x76b9914, (q31_t)0x7655347, (q31_t)0x75f0d76, (q31_t)0x758c7a1, (q31_t)0x75281c6, (q31_t)0x74c3be7, (q31_t)0x745f604,\n  (q31_t)0x73fb01c, (q31_t)0x7396a30, (q31_t)0x733243f, (q31_t)0x72cde4a, (q31_t)0x7269851, (q31_t)0x7205253, (q31_t)0x71a0c50, (q31_t)0x713c64a,\n  (q31_t)0x70d803f, (q31_t)0x7073a2f, (q31_t)0x700f41b, (q31_t)0x6faae03, (q31_t)0x6f467e7, (q31_t)0x6ee21c6, (q31_t)0x6e7dba1, (q31_t)0x6e19578,\n  (q31_t)0x6db4f4a, (q31_t)0x6d50919, (q31_t)0x6cec2e3, (q31_t)0x6c87ca9, (q31_t)0x6c2366a, (q31_t)0x6bbf028, (q31_t)0x6b5a9e1, (q31_t)0x6af6396,\n  (q31_t)0x6a91d47, (q31_t)0x6a2d6f4, (q31_t)0x69c909d, (q31_t)0x6964a42, (q31_t)0x69003e3, (q31_t)0x689bd80, (q31_t)0x6837718, (q31_t)0x67d30ad,\n  (q31_t)0x676ea3d, (q31_t)0x670a3ca, (q31_t)0x66a5d53, (q31_t)0x66416d8, (q31_t)0x65dd058, (q31_t)0x65789d5, (q31_t)0x651434e, (q31_t)0x64afcc3,\n  (q31_t)0x644b634, (q31_t)0x63e6fa2, (q31_t)0x638290b, (q31_t)0x631e271, (q31_t)0x62b9bd3, (q31_t)0x6255531, (q31_t)0x61f0e8b, (q31_t)0x618c7e1,\n  (q31_t)0x6128134, (q31_t)0x60c3a83, (q31_t)0x605f3ce, (q31_t)0x5ffad15, (q31_t)0x5f96659, (q31_t)0x5f31f99, (q31_t)0x5ecd8d6, (q31_t)0x5e6920e,\n  (q31_t)0x5e04b43, (q31_t)0x5da0475, (q31_t)0x5d3bda3, (q31_t)0x5cd76cd, (q31_t)0x5c72ff4, (q31_t)0x5c0e917, (q31_t)0x5baa237, (q31_t)0x5b45b53,\n  (q31_t)0x5ae146b, (q31_t)0x5a7cd80, (q31_t)0x5a18692, (q31_t)0x59b3fa0, (q31_t)0x594f8aa, (q31_t)0x58eb1b2, (q31_t)0x5886ab5, (q31_t)0x58223b6,\n  (q31_t)0x57bdcb3, (q31_t)0x57595ac, (q31_t)0x56f4ea2, (q31_t)0x5690795, (q31_t)0x562c085, (q31_t)0x55c7971, (q31_t)0x556325a, (q31_t)0x54feb3f,\n  (q31_t)0x549a422, (q31_t)0x5435d01, (q31_t)0x53d15dd, (q31_t)0x536ceb5, (q31_t)0x530878a, (q31_t)0x52a405d, (q31_t)0x523f92c, (q31_t)0x51db1f7,\n  (q31_t)0x5176ac0, (q31_t)0x5112385, (q31_t)0x50adc48, (q31_t)0x5049507, (q31_t)0x4fe4dc3, (q31_t)0x4f8067c, (q31_t)0x4f1bf32, (q31_t)0x4eb77e5,\n  (q31_t)0x4e53095, (q31_t)0x4dee942, (q31_t)0x4d8a1ec, (q31_t)0x4d25a93, (q31_t)0x4cc1337, (q31_t)0x4c5cbd8, (q31_t)0x4bf8476, (q31_t)0x4b93d11,\n  (q31_t)0x4b2f5a9, (q31_t)0x4acae3e, (q31_t)0x4a666d1, (q31_t)0x4a01f60, (q31_t)0x499d7ed, (q31_t)0x4939077, (q31_t)0x48d48fe, (q31_t)0x4870182,\n  (q31_t)0x480ba04, (q31_t)0x47a7282, (q31_t)0x4742afe, (q31_t)0x46de377, (q31_t)0x4679bee, (q31_t)0x4615461, (q31_t)0x45b0cd2, (q31_t)0x454c541,\n  (q31_t)0x44e7dac, (q31_t)0x4483615, (q31_t)0x441ee7c, (q31_t)0x43ba6df, (q31_t)0x4355f40, (q31_t)0x42f179f, (q31_t)0x428cffb, (q31_t)0x4228854,\n  (q31_t)0x41c40ab, (q31_t)0x415f8ff, (q31_t)0x40fb151, (q31_t)0x40969a0, (q31_t)0x40321ed, (q31_t)0x3fcda37, (q31_t)0x3f6927f, (q31_t)0x3f04ac4,\n  (q31_t)0x3ea0307, (q31_t)0x3e3bb48, (q31_t)0x3dd7386, (q31_t)0x3d72bc2, (q31_t)0x3d0e3fb, (q31_t)0x3ca9c32, (q31_t)0x3c45467, (q31_t)0x3be0c99,\n  (q31_t)0x3b7c4c9, (q31_t)0x3b17cf7, (q31_t)0x3ab3523, (q31_t)0x3a4ed4c, (q31_t)0x39ea573, (q31_t)0x3985d97, (q31_t)0x39215ba, (q31_t)0x38bcdda,\n  (q31_t)0x38585f8, (q31_t)0x37f3e14, (q31_t)0x378f62e, (q31_t)0x372ae46, (q31_t)0x36c665b, (q31_t)0x3661e6f, (q31_t)0x35fd680, (q31_t)0x3598e8f,\n  (q31_t)0x353469c, (q31_t)0x34cfea8, (q31_t)0x346b6b1, (q31_t)0x3406eb8, (q31_t)0x33a26bd, (q31_t)0x333dec0, (q31_t)0x32d96c1, (q31_t)0x3274ec0,\n  (q31_t)0x32106bd, (q31_t)0x31abeb9, (q31_t)0x31476b2, (q31_t)0x30e2ea9, (q31_t)0x307e69f, (q31_t)0x3019e93, (q31_t)0x2fb5684, (q31_t)0x2f50e74,\n  (q31_t)0x2eec663, (q31_t)0x2e87e4f, (q31_t)0x2e2363a, (q31_t)0x2dbee22, (q31_t)0x2d5a609, (q31_t)0x2cf5def, (q31_t)0x2c915d2, (q31_t)0x2c2cdb4,\n  (q31_t)0x2bc8594, (q31_t)0x2b63d73, (q31_t)0x2aff54f, (q31_t)0x2a9ad2a, (q31_t)0x2a36504, (q31_t)0x29d1cdc, (q31_t)0x296d4b2, (q31_t)0x2908c87,\n  (q31_t)0x28a445a, (q31_t)0x283fc2b, (q31_t)0x27db3fb, (q31_t)0x2776bc9, (q31_t)0x2712396, (q31_t)0x26adb62, (q31_t)0x264932b, (q31_t)0x25e4af4,\n  (q31_t)0x25802bb, (q31_t)0x251ba80, (q31_t)0x24b7244, (q31_t)0x2452a07, (q31_t)0x23ee1c8, (q31_t)0x2389988, (q31_t)0x2325147, (q31_t)0x22c0904,\n  (q31_t)0x225c0bf, (q31_t)0x21f787a, (q31_t)0x2193033, (q31_t)0x212e7eb, (q31_t)0x20c9fa1, (q31_t)0x2065757, (q31_t)0x2000f0b, (q31_t)0x1f9c6be,\n  (q31_t)0x1f37e6f, (q31_t)0x1ed3620, (q31_t)0x1e6edcf, (q31_t)0x1e0a57d, (q31_t)0x1da5d2a, (q31_t)0x1d414d6, (q31_t)0x1cdcc80, (q31_t)0x1c7842a,\n  (q31_t)0x1c13bd2, (q31_t)0x1baf37a, (q31_t)0x1b4ab20, (q31_t)0x1ae62c5, (q31_t)0x1a81a69, (q31_t)0x1a1d20c, (q31_t)0x19b89ae, (q31_t)0x1954150,\n  (q31_t)0x18ef8f0, (q31_t)0x188b08f, (q31_t)0x182682d, (q31_t)0x17c1fcb, (q31_t)0x175d767, (q31_t)0x16f8f03, (q31_t)0x169469d, (q31_t)0x162fe37,\n  (q31_t)0x15cb5d0, (q31_t)0x1566d68, (q31_t)0x15024ff, (q31_t)0x149dc96, (q31_t)0x143942b, (q31_t)0x13d4bc0, (q31_t)0x1370354, (q31_t)0x130bae7,\n  (q31_t)0x12a727a, (q31_t)0x1242a0c, (q31_t)0x11de19d, (q31_t)0x117992e, (q31_t)0x11150be, (q31_t)0x10b084d, (q31_t)0x104bfdb, (q31_t)0xfe7769,\n  (q31_t)0xf82ef6, (q31_t)0xf1e683, (q31_t)0xeb9e0f, (q31_t)0xe5559b, (q31_t)0xdf0d26, (q31_t)0xd8c4b0, (q31_t)0xd27c3a, (q31_t)0xcc33c3,\n  (q31_t)0xc5eb4c, (q31_t)0xbfa2d5, (q31_t)0xb95a5d, (q31_t)0xb311e4, (q31_t)0xacc96b, (q31_t)0xa680f2, (q31_t)0xa03878, (q31_t)0x99effe,\n  (q31_t)0x93a784, (q31_t)0x8d5f09, (q31_t)0x87168e, (q31_t)0x80ce12, (q31_t)0x7a8597, (q31_t)0x743d1a, (q31_t)0x6df49e, (q31_t)0x67ac21,\n  (q31_t)0x6163a5, (q31_t)0x5b1b27, (q31_t)0x54d2aa, (q31_t)0x4e8a2c, (q31_t)0x4841af, (q31_t)0x41f931, (q31_t)0x3bb0b3, (q31_t)0x356835,\n  (q31_t)0x2f1fb6, (q31_t)0x28d738, (q31_t)0x228eb9, (q31_t)0x1c463b, (q31_t)0x15fdbc, (q31_t)0xfb53d, (q31_t)0x96cbe, (q31_t)0x3243f\n};\n  #endif\n\n/**\n  @} end of DCT4_IDCT4_Table group\n */\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FAST_ALLOW_TABLES)\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_RECIP_Q15)\n/**\n  @brief  Q15 table for reciprocal\n*/\nconst q15_t __ALIGNED(4) armRecipTableQ15[64] = {\n 0x7F03, 0x7D13, 0x7B31, 0x795E, 0x7798, 0x75E0,\n 0x7434, 0x7294, 0x70FF, 0x6F76, 0x6DF6, 0x6C82,\n 0x6B16, 0x69B5, 0x685C, 0x670C, 0x65C4, 0x6484,\n 0x634C, 0x621C, 0x60F3, 0x5FD0, 0x5EB5, 0x5DA0,\n 0x5C91, 0x5B88, 0x5A85, 0x5988, 0x5890, 0x579E,\n 0x56B0, 0x55C8, 0x54E4, 0x5405, 0x532B, 0x5255,\n 0x5183, 0x50B6, 0x4FEC, 0x4F26, 0x4E64, 0x4DA6,\n 0x4CEC, 0x4C34, 0x4B81, 0x4AD0, 0x4A23, 0x4978,\n 0x48D1, 0x482D, 0x478C, 0x46ED, 0x4651, 0x45B8,\n 0x4521, 0x448D, 0x43FC, 0x436C, 0x42DF, 0x4255,\n 0x41CC, 0x4146, 0x40C2, 0x4040\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_RECIP_Q31)\n\n/**\n  @brief  Q31 table for reciprocal\n*/\nconst q31_t armRecipTableQ31[64] = {\n  0x7F03F03F, 0x7D137420, 0x7B31E739, 0x795E9F94, 0x7798FD29, 0x75E06928,\n  0x7434554D, 0x72943B4B, 0x70FF9C40, 0x6F760031, 0x6DF6F593, 0x6C8210E3,\n  0x6B16EC3A, 0x69B526F6, 0x685C655F, 0x670C505D, 0x65C4952D, 0x6484E519,\n  0x634CF53E, 0x621C7E4F, 0x60F33C61, 0x5FD0EEB3, 0x5EB55785, 0x5DA03BEB,\n  0x5C9163A1, 0x5B8898E6, 0x5A85A85A, 0x598860DF, 0x58909373, 0x579E1318,\n  0x56B0B4B8, 0x55C84F0B, 0x54E4BA80, 0x5405D124, 0x532B6E8F, 0x52556FD0,\n  0x5183B35A, 0x50B618F3, 0x4FEC81A2, 0x4F26CFA2, 0x4E64E64E, 0x4DA6AA1D,\n  0x4CEC008B, 0x4C34D010, 0x4B810016, 0x4AD078EF, 0x4A2323C4, 0x4978EA96,\n  0x48D1B827, 0x482D77FE, 0x478C1657, 0x46ED801D, 0x4651A2E5, 0x45B86CE2,\n  0x4521CCE1, 0x448DB244, 0x43FC0CFA, 0x436CCD78, 0x42DFE4B4, 0x42554426,\n  0x41CCDDB6, 0x4146A3C6, 0x40C28923, 0x40408102\n};\n\n#endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_SIN_F32)\n/**\n  @par\n  Example code for the generation of the floating-point sine table:\n  <pre>\n  tableSize = 512;\n  for (n = 0; n < (tableSize + 1); n++)\n  {\n \tsinTable[n] = sin(2*PI*n/tableSize);\n  }</pre>\n @par\n  where PI value is  3.14159265358979\n */\nconst float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1] = {\n   0.00000000f, 0.01227154f, 0.02454123f, 0.03680722f, 0.04906767f, 0.06132074f,\n   0.07356456f, 0.08579731f, 0.09801714f, 0.11022221f, 0.12241068f, 0.13458071f,\n   0.14673047f, 0.15885814f, 0.17096189f, 0.18303989f, 0.19509032f, 0.20711138f,\n   0.21910124f, 0.23105811f, 0.24298018f, 0.25486566f, 0.26671276f, 0.27851969f,\n   0.29028468f, 0.30200595f, 0.31368174f, 0.32531029f, 0.33688985f, 0.34841868f,\n   0.35989504f, 0.37131719f, 0.38268343f, 0.39399204f, 0.40524131f, 0.41642956f,\n   0.42755509f, 0.43861624f, 0.44961133f, 0.46053871f, 0.47139674f, 0.48218377f,\n   0.49289819f, 0.50353838f, 0.51410274f, 0.52458968f, 0.53499762f, 0.54532499f,\n   0.55557023f, 0.56573181f, 0.57580819f, 0.58579786f, 0.59569930f, 0.60551104f,\n   0.61523159f, 0.62485949f, 0.63439328f, 0.64383154f, 0.65317284f, 0.66241578f,\n   0.67155895f, 0.68060100f, 0.68954054f, 0.69837625f, 0.70710678f, 0.71573083f,\n   0.72424708f, 0.73265427f, 0.74095113f, 0.74913639f, 0.75720885f, 0.76516727f,\n   0.77301045f, 0.78073723f, 0.78834643f, 0.79583690f, 0.80320753f, 0.81045720f,\n   0.81758481f, 0.82458930f, 0.83146961f, 0.83822471f, 0.84485357f, 0.85135519f,\n   0.85772861f, 0.86397286f, 0.87008699f, 0.87607009f, 0.88192126f, 0.88763962f,\n   0.89322430f, 0.89867447f, 0.90398929f, 0.90916798f, 0.91420976f, 0.91911385f,\n   0.92387953f, 0.92850608f, 0.93299280f, 0.93733901f, 0.94154407f, 0.94560733f,\n   0.94952818f, 0.95330604f, 0.95694034f, 0.96043052f, 0.96377607f, 0.96697647f,\n   0.97003125f, 0.97293995f, 0.97570213f, 0.97831737f, 0.98078528f, 0.98310549f,\n   0.98527764f, 0.98730142f, 0.98917651f, 0.99090264f, 0.99247953f, 0.99390697f,\n   0.99518473f, 0.99631261f, 0.99729046f, 0.99811811f, 0.99879546f, 0.99932238f,\n   0.99969882f, 0.99992470f, 1.00000000f, 0.99992470f, 0.99969882f, 0.99932238f,\n   0.99879546f, 0.99811811f, 0.99729046f, 0.99631261f, 0.99518473f, 0.99390697f,\n   0.99247953f, 0.99090264f, 0.98917651f, 0.98730142f, 0.98527764f, 0.98310549f,\n   0.98078528f, 0.97831737f, 0.97570213f, 0.97293995f, 0.97003125f, 0.96697647f,\n   0.96377607f, 0.96043052f, 0.95694034f, 0.95330604f, 0.94952818f, 0.94560733f,\n   0.94154407f, 0.93733901f, 0.93299280f, 0.92850608f, 0.92387953f, 0.91911385f,\n   0.91420976f, 0.90916798f, 0.90398929f, 0.89867447f, 0.89322430f, 0.88763962f,\n   0.88192126f, 0.87607009f, 0.87008699f, 0.86397286f, 0.85772861f, 0.85135519f,\n   0.84485357f, 0.83822471f, 0.83146961f, 0.82458930f, 0.81758481f, 0.81045720f,\n   0.80320753f, 0.79583690f, 0.78834643f, 0.78073723f, 0.77301045f, 0.76516727f,\n   0.75720885f, 0.74913639f, 0.74095113f, 0.73265427f, 0.72424708f, 0.71573083f,\n   0.70710678f, 0.69837625f, 0.68954054f, 0.68060100f, 0.67155895f, 0.66241578f,\n   0.65317284f, 0.64383154f, 0.63439328f, 0.62485949f, 0.61523159f, 0.60551104f,\n   0.59569930f, 0.58579786f, 0.57580819f, 0.56573181f, 0.55557023f, 0.54532499f,\n   0.53499762f, 0.52458968f, 0.51410274f, 0.50353838f, 0.49289819f, 0.48218377f,\n   0.47139674f, 0.46053871f, 0.44961133f, 0.43861624f, 0.42755509f, 0.41642956f,\n   0.40524131f, 0.39399204f, 0.38268343f, 0.37131719f, 0.35989504f, 0.34841868f,\n   0.33688985f, 0.32531029f, 0.31368174f, 0.30200595f, 0.29028468f, 0.27851969f,\n   0.26671276f, 0.25486566f, 0.24298018f, 0.23105811f, 0.21910124f, 0.20711138f,\n   0.19509032f, 0.18303989f, 0.17096189f, 0.15885814f, 0.14673047f, 0.13458071f,\n   0.12241068f, 0.11022221f, 0.09801714f, 0.08579731f, 0.07356456f, 0.06132074f,\n   0.04906767f, 0.03680722f, 0.02454123f, 0.01227154f, 0.00000000f, -0.01227154f,\n   -0.02454123f, -0.03680722f, -0.04906767f, -0.06132074f, -0.07356456f,\n   -0.08579731f, -0.09801714f, -0.11022221f, -0.12241068f, -0.13458071f,\n   -0.14673047f, -0.15885814f, -0.17096189f, -0.18303989f, -0.19509032f,\n   -0.20711138f, -0.21910124f, -0.23105811f, -0.24298018f, -0.25486566f,\n   -0.26671276f, -0.27851969f, -0.29028468f, -0.30200595f, -0.31368174f,\n   -0.32531029f, -0.33688985f, -0.34841868f, -0.35989504f, -0.37131719f,\n   -0.38268343f, -0.39399204f, -0.40524131f, -0.41642956f, -0.42755509f,\n   -0.43861624f, -0.44961133f, -0.46053871f, -0.47139674f, -0.48218377f,\n   -0.49289819f, -0.50353838f, -0.51410274f, -0.52458968f, -0.53499762f,\n   -0.54532499f, -0.55557023f, -0.56573181f, -0.57580819f, -0.58579786f,\n   -0.59569930f, -0.60551104f, -0.61523159f, -0.62485949f, -0.63439328f,\n   -0.64383154f, -0.65317284f, -0.66241578f, -0.67155895f, -0.68060100f,\n   -0.68954054f, -0.69837625f, -0.70710678f, -0.71573083f, -0.72424708f,\n   -0.73265427f, -0.74095113f, -0.74913639f, -0.75720885f, -0.76516727f,\n   -0.77301045f, -0.78073723f, -0.78834643f, -0.79583690f, -0.80320753f,\n   -0.81045720f, -0.81758481f, -0.82458930f, -0.83146961f, -0.83822471f,\n   -0.84485357f, -0.85135519f, -0.85772861f, -0.86397286f, -0.87008699f,\n   -0.87607009f, -0.88192126f, -0.88763962f, -0.89322430f, -0.89867447f,\n   -0.90398929f, -0.90916798f, -0.91420976f, -0.91911385f, -0.92387953f,\n   -0.92850608f, -0.93299280f, -0.93733901f, -0.94154407f, -0.94560733f,\n   -0.94952818f, -0.95330604f, -0.95694034f, -0.96043052f, -0.96377607f,\n   -0.96697647f, -0.97003125f, -0.97293995f, -0.97570213f, -0.97831737f,\n   -0.98078528f, -0.98310549f, -0.98527764f, -0.98730142f, -0.98917651f,\n   -0.99090264f, -0.99247953f, -0.99390697f, -0.99518473f, -0.99631261f,\n   -0.99729046f, -0.99811811f, -0.99879546f, -0.99932238f, -0.99969882f,\n   -0.99992470f, -1.00000000f, -0.99992470f, -0.99969882f, -0.99932238f,\n   -0.99879546f, -0.99811811f, -0.99729046f, -0.99631261f, -0.99518473f,\n   -0.99390697f, -0.99247953f, -0.99090264f, -0.98917651f, -0.98730142f,\n   -0.98527764f, -0.98310549f, -0.98078528f, -0.97831737f, -0.97570213f,\n   -0.97293995f, -0.97003125f, -0.96697647f, -0.96377607f, -0.96043052f,\n   -0.95694034f, -0.95330604f, -0.94952818f, -0.94560733f, -0.94154407f,\n   -0.93733901f, -0.93299280f, -0.92850608f, -0.92387953f, -0.91911385f,\n   -0.91420976f, -0.90916798f, -0.90398929f, -0.89867447f, -0.89322430f,\n   -0.88763962f, -0.88192126f, -0.87607009f, -0.87008699f, -0.86397286f,\n   -0.85772861f, -0.85135519f, -0.84485357f, -0.83822471f, -0.83146961f,\n   -0.82458930f, -0.81758481f, -0.81045720f, -0.80320753f, -0.79583690f,\n   -0.78834643f, -0.78073723f, -0.77301045f, -0.76516727f, -0.75720885f,\n   -0.74913639f, -0.74095113f, -0.73265427f, -0.72424708f, -0.71573083f,\n   -0.70710678f, -0.69837625f, -0.68954054f, -0.68060100f, -0.67155895f,\n   -0.66241578f, -0.65317284f, -0.64383154f, -0.63439328f, -0.62485949f,\n   -0.61523159f, -0.60551104f, -0.59569930f, -0.58579786f, -0.57580819f,\n   -0.56573181f, -0.55557023f, -0.54532499f, -0.53499762f, -0.52458968f,\n   -0.51410274f, -0.50353838f, -0.49289819f, -0.48218377f, -0.47139674f,\n   -0.46053871f, -0.44961133f, -0.43861624f, -0.42755509f, -0.41642956f,\n   -0.40524131f, -0.39399204f, -0.38268343f, -0.37131719f, -0.35989504f,\n   -0.34841868f, -0.33688985f, -0.32531029f, -0.31368174f, -0.30200595f,\n   -0.29028468f, -0.27851969f, -0.26671276f, -0.25486566f, -0.24298018f,\n   -0.23105811f, -0.21910124f, -0.20711138f, -0.19509032f, -0.18303989f,\n   -0.17096189f, -0.15885814f, -0.14673047f, -0.13458071f, -0.12241068f,\n   -0.11022221f, -0.09801714f, -0.08579731f, -0.07356456f, -0.06132074f,\n   -0.04906767f, -0.03680722f, -0.02454123f, -0.01227154f, -0.00000000f\n};\n#endif /* defined(ARM_ALL_FAST_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_SIN_Q31)\n/**\n  @par\n  Table values are in Q31 (1.31 fixed-point format) and generation is done in\n  three steps.  First, generate sin values in floating point:\n  <pre>\n  tableSize = 512;\n  for (n = 0; n < (tableSize + 1); n++)\n  {\n \tsinTable[n] = sin(2*PI*n/tableSize);\n  } </pre>\n  where PI value is 3.14159265358979\n @par\n  Second, convert floating-point to Q31 (Fixed point):\n \t(sinTable[i] * pow(2, 31))\n @par\n  Finally, round to the nearest integer value:\n  \tsinTable[i] += (sinTable[i] > 0 ? 0.5 : -0.5);\n */\nconst q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1] = {\n\t0L, 26352928L, 52701887L, 79042909L, 105372028L, 131685278L, 157978697L,\n\t184248325L, 210490206L, 236700388L, 262874923L, 289009871L, 315101295L,\n\t341145265L, 367137861L, 393075166L, 418953276L, 444768294L, 470516330L,\n\t496193509L, 521795963L, 547319836L, 572761285L, 598116479L, 623381598L,\n\t648552838L, 673626408L, 698598533L, 723465451L, 748223418L, 772868706L,\n\t797397602L, 821806413L, 846091463L, 870249095L, 894275671L, 918167572L,\n\t941921200L, 965532978L, 988999351L, 1012316784L, 1035481766L, 1058490808L,\n\t1081340445L, 1104027237L, 1126547765L, 1148898640L, 1171076495L, 1193077991L,\n\t1214899813L, 1236538675L, 1257991320L, 1279254516L, 1300325060L, 1321199781L,\n\t1341875533L, 1362349204L, 1382617710L, 1402678000L, 1422527051L, 1442161874L,\n\t1461579514L, 1480777044L, 1499751576L, 1518500250L, 1537020244L, 1555308768L,\n\t1573363068L, 1591180426L, 1608758157L, 1626093616L, 1643184191L, 1660027308L,\n\t1676620432L, 1692961062L, 1709046739L, 1724875040L, 1740443581L, 1755750017L,\n\t1770792044L, 1785567396L, 1800073849L, 1814309216L, 1828271356L, 1841958164L,\n\t1855367581L, 1868497586L, 1881346202L, 1893911494L, 1906191570L, 1918184581L,\n\t1929888720L, 1941302225L, 1952423377L, 1963250501L, 1973781967L, 1984016189L,\n\t1993951625L, 2003586779L, 2012920201L, 2021950484L, 2030676269L, 2039096241L,\n\t2047209133L, 2055013723L, 2062508835L, 2069693342L, 2076566160L, 2083126254L,\n\t2089372638L, 2095304370L, 2100920556L, 2106220352L, 2111202959L, 2115867626L,\n\t2120213651L, 2124240380L, 2127947206L, 2131333572L, 2134398966L, 2137142927L,\n\t2139565043L, 2141664948L, 2143442326L, 2144896910L, 2146028480L, 2146836866L,\n\t2147321946L, 2147483647L, 2147321946L, 2146836866L, 2146028480L, 2144896910L,\n\t2143442326L, 2141664948L, 2139565043L, 2137142927L, 2134398966L, 2131333572L,\n\t2127947206L, 2124240380L, 2120213651L, 2115867626L, 2111202959L, 2106220352L,\n\t2100920556L, 2095304370L, 2089372638L, 2083126254L, 2076566160L, 2069693342L,\n\t2062508835L, 2055013723L, 2047209133L, 2039096241L, 2030676269L, 2021950484L,\n\t2012920201L, 2003586779L, 1993951625L, 1984016189L, 1973781967L, 1963250501L,\n\t1952423377L, 1941302225L, 1929888720L, 1918184581L, 1906191570L, 1893911494L,\n\t1881346202L, 1868497586L, 1855367581L, 1841958164L, 1828271356L, 1814309216L,\n\t1800073849L, 1785567396L, 1770792044L, 1755750017L, 1740443581L, 1724875040L,\n\t1709046739L, 1692961062L, 1676620432L, 1660027308L, 1643184191L, 1626093616L,\n\t1608758157L, 1591180426L, 1573363068L, 1555308768L, 1537020244L, 1518500250L,\n\t1499751576L, 1480777044L, 1461579514L, 1442161874L, 1422527051L, 1402678000L,\n\t1382617710L, 1362349204L, 1341875533L, 1321199781L, 1300325060L, 1279254516L,\n\t1257991320L, 1236538675L, 1214899813L, 1193077991L, 1171076495L, 1148898640L,\n\t1126547765L, 1104027237L, 1081340445L, 1058490808L, 1035481766L, 1012316784L,\n\t988999351L, 965532978L, 941921200L, 918167572L, 894275671L, 870249095L,\n\t846091463L, 821806413L, 797397602L, 772868706L, 748223418L, 723465451L,\n\t698598533L, 673626408L, 648552838L, 623381598L, 598116479L, 572761285L,\n\t547319836L, 521795963L, 496193509L, 470516330L, 444768294L, 418953276L,\n\t393075166L, 367137861L, 341145265L, 315101295L, 289009871L, 262874923L,\n\t236700388L, 210490206L, 184248325L, 157978697L, 131685278L, 105372028L,\n\t79042909L, 52701887L, 26352928L, 0L, -26352928L, -52701887L, -79042909L,\n\t-105372028L, -131685278L, -157978697L, -184248325L, -210490206L, -236700388L,\n\t-262874923L, -289009871L, -315101295L, -341145265L, -367137861L, -393075166L,\n\t-418953276L, -444768294L, -470516330L, -496193509L, -521795963L, -547319836L,\n\t-572761285L, -598116479L, -623381598L, -648552838L, -673626408L, -698598533L,\n\t-723465451L, -748223418L, -772868706L, -797397602L, -821806413L, -846091463L,\n\t-870249095L, -894275671L, -918167572L, -941921200L, -965532978L, -988999351L,\n\t-1012316784L, -1035481766L, -1058490808L, -1081340445L, -1104027237L,\n\t-1126547765L, -1148898640L, -1171076495L, -1193077991L, -1214899813L,\n\t-1236538675L, -1257991320L, -1279254516L, -1300325060L, -1321199781L,\n\t-1341875533L, -1362349204L, -1382617710L, -1402678000L, -1422527051L,\n\t-1442161874L, -1461579514L, -1480777044L, -1499751576L, -1518500250L,\n\t-1537020244L, -1555308768L, -1573363068L, -1591180426L, -1608758157L,\n\t-1626093616L, -1643184191L, -1660027308L, -1676620432L, -1692961062L,\n\t-1709046739L, -1724875040L, -1740443581L, -1755750017L, -1770792044L,\n\t-1785567396L, -1800073849L, -1814309216L, -1828271356L, -1841958164L,\n\t-1855367581L, -1868497586L, -1881346202L, -1893911494L, -1906191570L,\n\t-1918184581L, -1929888720L, -1941302225L, -1952423377L, -1963250501L,\n\t-1973781967L, -1984016189L, -1993951625L, -2003586779L, -2012920201L,\n\t-2021950484L, -2030676269L, -2039096241L, -2047209133L, -2055013723L,\n\t-2062508835L, -2069693342L, -2076566160L, -2083126254L, -2089372638L,\n\t-2095304370L, -2100920556L, -2106220352L, -2111202959L, -2115867626L,\n\t-2120213651L, -2124240380L, -2127947206L, -2131333572L, -2134398966L,\n\t-2137142927L, -2139565043L, -2141664948L, -2143442326L, -2144896910L,\n\t-2146028480L, -2146836866L, -2147321946L, (q31_t)0x80000000, -2147321946L,\n\t-2146836866L, -2146028480L, -2144896910L, -2143442326L, -2141664948L,\n\t-2139565043L, -2137142927L, -2134398966L, -2131333572L, -2127947206L,\n\t-2124240380L, -2120213651L, -2115867626L, -2111202959L, -2106220352L,\n\t-2100920556L, -2095304370L, -2089372638L, -2083126254L, -2076566160L,\n\t-2069693342L, -2062508835L, -2055013723L, -2047209133L, -2039096241L,\n\t-2030676269L, -2021950484L, -2012920201L, -2003586779L, -1993951625L,\n\t-1984016189L, -1973781967L, -1963250501L, -1952423377L, -1941302225L,\n\t-1929888720L, -1918184581L, -1906191570L, -1893911494L, -1881346202L,\n\t-1868497586L, -1855367581L, -1841958164L, -1828271356L, -1814309216L,\n\t-1800073849L, -1785567396L, -1770792044L, -1755750017L, -1740443581L,\n\t-1724875040L, -1709046739L, -1692961062L, -1676620432L, -1660027308L,\n\t-1643184191L, -1626093616L, -1608758157L, -1591180426L, -1573363068L,\n\t-1555308768L, -1537020244L, -1518500250L, -1499751576L, -1480777044L,\n\t-1461579514L, -1442161874L, -1422527051L, -1402678000L, -1382617710L,\n\t-1362349204L, -1341875533L, -1321199781L, -1300325060L, -1279254516L,\n\t-1257991320L, -1236538675L, -1214899813L, -1193077991L, -1171076495L,\n\t-1148898640L, -1126547765L, -1104027237L, -1081340445L, -1058490808L,\n\t-1035481766L, -1012316784L, -988999351L, -965532978L, -941921200L,\n\t-918167572L, -894275671L, -870249095L, -846091463L, -821806413L, -797397602L,\n\t-772868706L, -748223418L, -723465451L, -698598533L, -673626408L, -648552838L,\n\t-623381598L, -598116479L, -572761285L, -547319836L, -521795963L, -496193509L,\n\t-470516330L, -444768294L, -418953276L, -393075166L, -367137861L, -341145265L,\n\t-315101295L, -289009871L, -262874923L, -236700388L, -210490206L, -184248325L,\n\t-157978697L, -131685278L, -105372028L, -79042909L, -52701887L, -26352928L, 0\n};\n\n#endif /* defined(ARM_ALL_FAST_TABLES) */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FAST_TABLES) || defined(ARM_TABLE_SIN_Q15)\n/**\n  @par\n  Table values are in Q15 (1.15 fixed-point format) and generation is done in\n  three steps.  First,  generate sin values in floating point:\n  <pre>\n  tableSize = 512;\n  for (n = 0; n < (tableSize + 1); n++)\n  {\n \tsinTable[n] = sin(2*PI*n/tableSize);\n  } </pre>\n  where PI value is  3.14159265358979\n @par\n  Second, convert floating-point to Q15 (Fixed point):\n \t(sinTable[i] * pow(2, 15))\n @par\n  Finally, round to the nearest integer value:\n  \tsinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);\n */\nconst q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1] = {\n\t0, 402, 804, 1206, 1608, 2009, 2411, 2811, 3212, 3612, 4011, 4410, 4808,\n\t5205, 5602, 5998, 6393, 6787, 7180, 7571, 7962, 8351, 8740, 9127, 9512,\n\t9896, 10279, 10660, 11039, 11417, 11793, 12167, 12540, 12910, 13279,\n\t13646, 14010, 14373, 14733, 15091, 15447, 15800, 16151, 16500, 16846,\n\t17190, 17531, 17869, 18205, 18538, 18868, 19195, 19520, 19841, 20160,\n\t20475, 20788, 21097, 21403, 21706, 22006, 22302, 22595, 22884, 23170,\n\t23453, 23732, 24008, 24279, 24548, 24812, 25073, 25330, 25583, 25833,\n\t26078, 26320, 26557, 26791, 27020, 27246, 27467, 27684, 27897, 28106,\n\t28311, 28511, 28707, 28899, 29086, 29269, 29448, 29622, 29792, 29957,\n\t30118, 30274, 30425, 30572, 30715, 30853, 30986, 31114, 31238, 31357,\n\t31471, 31581, 31686, 31786, 31881, 31972, 32058, 32138, 32214, 32286,\n\t32352, 32413, 32470, 32522, 32568, 32610, 32647, 32679, 32706, 32729,\n\t32746, 32758, 32766, 32767, 32766, 32758, 32746, 32729, 32706, 32679,\n\t32647, 32610, 32568, 32522, 32470, 32413, 32352, 32286, 32214, 32138,\n\t32058, 31972, 31881, 31786, 31686, 31581, 31471, 31357, 31238, 31114,\n\t30986, 30853, 30715, 30572, 30425, 30274, 30118, 29957, 29792, 29622,\n\t29448, 29269, 29086, 28899, 28707, 28511, 28311, 28106, 27897, 27684,\n\t27467, 27246, 27020, 26791, 26557, 26320, 26078, 25833, 25583, 25330,\n\t25073, 24812, 24548, 24279, 24008, 23732, 23453, 23170, 22884, 22595,\n\t22302, 22006, 21706, 21403, 21097, 20788, 20475, 20160, 19841, 19520,\n\t19195, 18868, 18538, 18205, 17869, 17531, 17190, 16846, 16500, 16151,\n\t15800, 15447, 15091, 14733, 14373, 14010, 13646, 13279, 12910, 12540,\n\t12167, 11793, 11417, 11039, 10660, 10279, 9896, 9512, 9127, 8740, 8351,\n\t7962, 7571, 7180, 6787, 6393, 5998, 5602, 5205, 4808, 4410, 4011, 3612,\n\t3212, 2811, 2411, 2009, 1608, 1206, 804, 402, 0, -402, -804, -1206,\n\t-1608, -2009, -2411, -2811, -3212, -3612, -4011, -4410, -4808, -5205,\n\t-5602, -5998, -6393, -6787, -7180, -7571, -7962, -8351, -8740, -9127,\n\t-9512, -9896, -10279, -10660, -11039, -11417, -11793, -12167, -12540,\n\t-12910, -13279, -13646, -14010, -14373, -14733, -15091, -15447, -15800,\n\t-16151, -16500, -16846, -17190, -17531, -17869, -18205, -18538, -18868,\n\t-19195, -19520, -19841, -20160, -20475, -20788, -21097, -21403, -21706,\n\t-22006, -22302, -22595, -22884, -23170, -23453, -23732, -24008, -24279,\n\t-24548, -24812, -25073, -25330, -25583, -25833, -26078, -26320, -26557,\n\t-26791, -27020, -27246, -27467, -27684, -27897, -28106, -28311, -28511,\n\t-28707, -28899, -29086, -29269, -29448, -29622, -29792, -29957, -30118,\n\t-30274, -30425, -30572, -30715, -30853, -30986, -31114, -31238, -31357,\n\t-31471, -31581, -31686, -31786, -31881, -31972, -32058, -32138, -32214,\n\t-32286, -32352, -32413, -32470, -32522, -32568, -32610, -32647, -32679,\n\t-32706, -32729, -32746, -32758, -32766, -32768, -32766, -32758, -32746,\n\t-32729, -32706, -32679, -32647, -32610, -32568, -32522, -32470, -32413,\n\t-32352, -32286, -32214, -32138, -32058, -31972, -31881, -31786, -31686,\n\t-31581, -31471, -31357, -31238, -31114, -30986, -30853, -30715, -30572,\n\t-30425, -30274, -30118, -29957, -29792, -29622, -29448, -29269, -29086,\n\t-28899, -28707, -28511, -28311, -28106, -27897, -27684, -27467, -27246,\n\t-27020, -26791, -26557, -26320, -26078, -25833, -25583, -25330, -25073,\n\t-24812, -24548, -24279, -24008, -23732, -23453, -23170, -22884, -22595,\n\t-22302, -22006, -21706, -21403, -21097, -20788, -20475, -20160, -19841,\n\t-19520, -19195, -18868, -18538, -18205, -17869, -17531, -17190, -16846,\n\t-16500, -16151, -15800, -15447, -15091, -14733, -14373, -14010, -13646,\n\t-13279, -12910, -12540, -12167, -11793, -11417, -11039, -10660, -10279,\n\t-9896, -9512, -9127, -8740, -8351, -7962, -7571, -7180, -6787, -6393,\n\t-5998, -5602, -5205, -4808, -4410, -4011, -3612, -3212, -2811, -2411,\n\t-2009, -1608, -1206, -804, -402, 0\n};\n#endif /* defined(ARM_ALL_FAST_TABLES) */\n\n#endif /* if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FAST_TABLES) */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_const_structs.c\n * Description:  Constant structs that are initialized for user convenience.\n *               For example, some can be given as arguments to the arm_cfft_f32() or arm_rfft_f32() functions.\n *\n * $Date:        27. January 2017\n * $Revision:    V.1.5.1\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_const_structs.h\"\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES) \n\n/* Floating-point structs */\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_BITREVIDX_FLT_16))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = {\n  16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = {\n  32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = {\n  64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = {\n  128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = {\n  256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = {\n  512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = {\n  1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = {\n  2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_4096) && defined(ARM_TABLE_BITREVIDX_FLT_4096))\nconst arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = {\n  4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE_4096_TABLE_LENGTH\n};\n#endif\n\n/* Fixed-point structs */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = {\n  16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = {\n  32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = {\n  64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = {\n  128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = {\n  256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = {\n  512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = {\n  1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = {\n  2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))\nconst arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = {\n  4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = {\n  16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = {\n  32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = {\n  64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = {\n  128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = {\n  256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = {\n  512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = {\n  1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = {\n  2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))\nconst arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = {\n  4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH\n};\n#endif\n\n/* Structure for real-value inputs */\n/* Floating-point structs */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_32))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len32 = {\n  { 16, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_16_TABLE_LENGTH },\n  32U,\n  (float32_t *)twiddleCoef_rfft_32\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_64))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len64 = {\n   { 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH },\n  64U,\n  (float32_t *)twiddleCoef_rfft_64\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_128))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len128 = {\n  { 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH },\n  128U,\n  (float32_t *)twiddleCoef_rfft_128\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_256))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len256 = {\n  { 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH },\n  256U,\n  (float32_t *)twiddleCoef_rfft_256\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_512))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len512 = {\n  { 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH },\n  512U,\n  (float32_t *)twiddleCoef_rfft_512\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_1024))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len1024 = {\n  { 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH },\n  1024U,\n  (float32_t *)twiddleCoef_rfft_1024\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_2048))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len2048 = {\n  { 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH },\n  2048U,\n  (float32_t *)twiddleCoef_rfft_2048\n};\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_4096) && defined(ARM_TABLE_BITREVIDX_FLT_4096) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_4096))\nconst arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len4096 = {\n  { 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH },\n  4096U,\n  (float32_t *)twiddleCoef_rfft_4096\n};\n#endif\n\n/* Fixed-point structs */\n/* q31_t */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len32 = {\n  32U,\n  0,\n  1,\n  256U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len16\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len64 = {\n  64U,\n  0,\n  1,\n  128U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len32\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len128 = {\n  128U,\n  0,\n  1,\n  64U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len64\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len256 = {\n  256U,\n  0,\n  1,\n  32U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len128\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len512 = {\n  512U,\n  0,\n  1,\n  16U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len256\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len1024 = {\n  1024U,\n  0,\n  1,\n  8U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len512\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len2048 = {\n  2048U,\n  0,\n  1,\n  4U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len1024\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len4096 = {\n  4096U,\n  0,\n  1,\n  2U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len2048\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))\nconst arm_rfft_instance_q31 arm_rfft_sR_q31_len8192 = {\n  8192U,\n  0,\n  1,\n  1U,\n  (q31_t*)realCoefAQ31,\n  (q31_t*)realCoefBQ31,\n  &arm_cfft_sR_q31_len4096\n};\n#endif\n\n/* q15_t */\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len32 = {\n  32U,\n  0,\n  1,\n  256U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len16\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len64 = {\n  64U,\n  0,\n  1,\n  128U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len32\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len128 = {\n  128U,\n  0,\n  1,\n  64U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len64\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len256 = {\n  256U,\n  0,\n  1,\n  32U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len128\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len512 = {\n  512U,\n  0,\n  1,\n  16U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len256\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len1024 = {\n  1024U,\n  0,\n  1,\n  8U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len512\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len2048 = {\n  2048U,\n  0,\n  1,\n  4U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len1024\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len4096 = {\n  4096U,\n  0,\n  1,\n  2U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len2048\n};\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))\nconst arm_rfft_instance_q15 arm_rfft_sR_q15_len8192 = {\n  8192U,\n  0,\n  1,\n  1U,\n  (q15_t*)realCoefAQ15,\n  (q15_t*)realCoefBQ15,\n  &arm_cfft_sR_q15_len4096\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPComplexMath)\n\n\nfile(GLOB SRC \"./*_*.c\")\n\nadd_library(CMSISDSPComplexMath STATIC ${SRC})\n\nconfigdsp(CMSISDSPComplexMath ..)\n\n### Includes\ntarget_include_directories(CMSISDSPComplexMath PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/ComplexMathFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        CompexMathFunctions.c\n * Description:  Combination of all comlex math function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_cmplx_conj_f32.c\"\n#include \"arm_cmplx_conj_q15.c\"\n#include \"arm_cmplx_conj_q31.c\"\n#include \"arm_cmplx_dot_prod_f32.c\"\n#include \"arm_cmplx_dot_prod_q15.c\"\n#include \"arm_cmplx_dot_prod_q31.c\"\n#include \"arm_cmplx_mag_f32.c\"\n#include \"arm_cmplx_mag_q15.c\"\n#include \"arm_cmplx_mag_q31.c\"\n#include \"arm_cmplx_mag_squared_f32.c\"\n#include \"arm_cmplx_mag_squared_q15.c\"\n#include \"arm_cmplx_mag_squared_q31.c\"\n#include \"arm_cmplx_mult_cmplx_f32.c\"\n#include \"arm_cmplx_mult_cmplx_q15.c\"\n#include \"arm_cmplx_mult_cmplx_q31.c\"\n#include \"arm_cmplx_mult_real_f32.c\"\n#include \"arm_cmplx_mult_real_q15.c\"\n#include \"arm_cmplx_mult_real_q31.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_conj_f32.c\n * Description:  Floating-point complex conjugate\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @defgroup cmplx_conj Complex Conjugate\n\n  Conjugates the elements of a complex data vector.\n\n  The <code>pSrc</code> points to the source data and\n  <code>pDst</code> points to the destination data where the result should be written.\n  <code>numSamples</code> specifies the number of complex samples\n  and the data in each array is stored in an interleaved fashion\n  (real, imag, real, imag, ...).\n  Each array has a total of <code>2*numSamples</code> values.\n\n  The underlying algorithm is used:\n  <pre>\n  for (n = 0; n < numSamples; n++) {\n      pDst[(2*n)  ] =  pSrc[(2*n)  ];    // real part\n      pDst[(2*n)+1] = -pSrc[(2*n)+1];    // imag part\n  }\n  </pre>\n\n  There are separate functions for floating-point, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup cmplx_conj\n  @{\n */\n\n/**\n  @brief         Floating-point complex conjugate.\n  @param[in]     pSrc        points to the input vector\n  @param[out]    pDst        points to the output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n */\n\n\nvoid arm_cmplx_conj_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined(ARM_MATH_NEON)\n   float32x4_t zero;\n   float32x4x2_t vec;\n\n   zero = vdupq_n_f32(0.0);\n\n   /* Compute 4 outputs at a time */\n   blkCnt = numSamples >> 2U;\n\n   while (blkCnt > 0U)\n   {\n     /* C[0]+jC[1] = A[0]+(-1)*jA[1] */\n     /* Calculate Complex Conjugate and then store the results in the destination buffer. */\n     vec = vld2q_f32(pSrc);\n     vec.val[1] = vsubq_f32(zero,vec.val[1]);\n     vst2q_f32(pDst,vec);\n\n     /* Increment pointers */\n     pSrc += 8;\n     pDst += 8;\n        \n     /* Decrement the loop counter */\n     blkCnt--;\n   }\n\n   /* Tail */\n   blkCnt = numSamples & 0x3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] + jC[1] = A[0]+ j(-1)A[1] */\n\n    /* Calculate Complex Conjugate and store result in destination buffer. */\n    *pDst++ =  *pSrc++;\n    *pDst++ = -*pSrc++;\n\n    *pDst++ =  *pSrc++;\n    *pDst++ = -*pSrc++;\n\n    *pDst++ =  *pSrc++;\n    *pDst++ = -*pSrc++;\n\n    *pDst++ =  *pSrc++;\n    *pDst++ = -*pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined (ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] + jC[1] = A[0]+ j(-1)A[1] */\n\n    /* Calculate Complex Conjugate and store result in destination buffer. */\n    *pDst++ =  *pSrc++;\n    *pDst++ = -*pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_conj group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_conj_q15.c\n * Description:  Q15 complex conjugate\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_conj\n  @{\n */\n\n/**\n  @brief         Q15 complex conjugate.\n  @param[in]     pSrc        points to the input vector\n  @param[out]    pDst        points to the output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q15 value -1 (0x8000) is saturated to the maximum allowable positive value 0x7FFF.\n */\n\nvoid arm_cmplx_conj_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t in1;                                     /* Temporary input variable */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in2, in3, in4;                           /* Temporary input variables */\n#endif\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] + jC[1] = A[0]+ j(-1)A[1] */\n\n    /* Calculate Complex Conjugate and store result in destination buffer. */\n\n    #if defined (ARM_MATH_DSP)\n    in1 = read_q15x2_ia ((q15_t **) &pSrc);\n    in2 = read_q15x2_ia ((q15_t **) &pSrc);\n    in3 = read_q15x2_ia ((q15_t **) &pSrc);\n    in4 = read_q15x2_ia ((q15_t **) &pSrc);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    in1 = __QASX(0, in1);\n    in2 = __QASX(0, in2);\n    in3 = __QASX(0, in3);\n    in4 = __QASX(0, in4);\n#else\n    in1 = __QSAX(0, in1);\n    in2 = __QSAX(0, in2);\n    in3 = __QSAX(0, in3);\n    in4 = __QSAX(0, in4);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    in1 = ((uint32_t) in1 >> 16) | ((uint32_t) in1 << 16);\n    in2 = ((uint32_t) in2 >> 16) | ((uint32_t) in2 << 16);\n    in3 = ((uint32_t) in3 >> 16) | ((uint32_t) in3 << 16);\n    in4 = ((uint32_t) in4 >> 16) | ((uint32_t) in4 << 16);\n\n    write_q15x2_ia (&pDst, in1);\n    write_q15x2_ia (&pDst, in2);\n    write_q15x2_ia (&pDst, in3);\n    write_q15x2_ia (&pDst, in4);\n#else\n    *pDst++ =  *pSrc++;\n    in1 = *pSrc++;\n    *pDst++ = (in1 == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in1;\n\n    *pDst++ =  *pSrc++;\n    in1 = *pSrc++;\n    *pDst++ = (in1 == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in1;\n\n    *pDst++ =  *pSrc++;\n    in1 = *pSrc++;\n    *pDst++ = (in1 == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in1;\n\n    *pDst++ =  *pSrc++;\n    in1 = *pSrc++;\n    *pDst++ = (in1 == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in1;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] + jC[1] = A[0]+ j(-1)A[1] */\n\n    /* Calculate Complex Conjugate and store result in destination buffer. */\n    *pDst++ =  *pSrc++;\n    in1 = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __SSAT(-in1, 16);\n#else\n    *pDst++ = (in1 == (q15_t) 0x8000) ? (q15_t) 0x7fff : -in1;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_conj group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_conj_q31.c\n * Description:  Q31 complex conjugate\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_conj\n  @{\n */\n\n/**\n  @brief         Q31 complex conjugate.\n  @param[in]     pSrc        points to the input vector\n  @param[out]    pDst        points to the output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   The Q31 value -1 (0x80000000) is saturated to the maximum allowable positive value 0x7FFFFFFF.\n */\n\nvoid arm_cmplx_conj_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t in;                                      /* Temporary input variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] + jC[1] = A[0]+ j(-1)A[1] */\n\n    /* Calculate Complex Conjugate and store result in destination buffer. */\n    *pDst++ =  *pSrc++;\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    *pDst++ =  *pSrc++;\n    in =  *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    *pDst++ =  *pSrc++;\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    *pDst++ =  *pSrc++;\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] + jC[1] = A[0]+ j(-1)A[1] */\n\n    /* Calculate Complex Conjugate and store result in destination buffer. */\n    *pDst++ =  *pSrc++;\n    in = *pSrc++;\n#if defined (ARM_MATH_DSP)\n    *pDst++ = __QSUB(0, in);\n#else\n    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_conj group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_dot_prod_f32.c\n * Description:  Floating-point complex dot product\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @defgroup cmplx_dot_prod Complex Dot Product\n\n  Computes the dot product of two complex vectors.\n  The vectors are multiplied element-by-element and then summed.\n\n  The <code>pSrcA</code> points to the first complex input vector and\n  <code>pSrcB</code> points to the second complex input vector.\n  <code>numSamples</code> specifies the number of complex samples\n  and the data in each array is stored in an interleaved fashion\n  (real, imag, real, imag, ...).\n  Each array has a total of <code>2*numSamples</code> values.\n\n  The underlying algorithm is used:\n\n  <pre>\n  realResult = 0;\n  imagResult = 0;\n  for (n = 0; n < numSamples; n++) {\n      realResult += pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];\n      imagResult += pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];\n  }\n  </pre>\n\n  There are separate functions for floating-point, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup cmplx_dot_prod\n  @{\n */\n\n/**\n  @brief         Floating-point complex dot product.\n  @param[in]     pSrcA       points to the first input vector\n  @param[in]     pSrcB       points to the second input vector\n  @param[in]     numSamples  number of samples in each vector\n  @param[out]    realResult  real part of the result returned here\n  @param[out]    imagResult  imaginary part of the result returned here\n  @return        none\n */\n\nvoid arm_cmplx_dot_prod_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        uint32_t numSamples,\n        float32_t * realResult,\n        float32_t * imagResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t real_sum = 0.0f, imag_sum = 0.0f;    /* Temporary result variables */\n        float32_t a0,b0,c0,d0;\n\n#if defined(ARM_MATH_NEON)\n    float32x4x2_t vec1,vec2,vec3,vec4;\n    float32x4_t accR,accI;\n    float32x2_t accum = vdup_n_f32(0);\n\n    accR = vdupq_n_f32(0.0);\n    accI = vdupq_n_f32(0.0);\n\n    /* Loop unrolling: Compute 8 outputs at a time */\n    blkCnt = numSamples >> 3U;\n\n    while (blkCnt > 0U)\n    {\n\t/* C = (A[0]+jA[1])*(B[0]+jB[1]) + ...  */\n        /* Calculate dot product and then store the result in a temporary buffer. */\n\n\tvec1 = vld2q_f32(pSrcA);\n        vec2 = vld2q_f32(pSrcB);\n\n\t/* Increment pointers */\n        pSrcA += 8;\n        pSrcB += 8;\n\n\t/* Re{C} = Re{A}*Re{B} - Im{A}*Im{B} */\n        accR = vmlaq_f32(accR,vec1.val[0],vec2.val[0]);\n        accR = vmlsq_f32(accR,vec1.val[1],vec2.val[1]);\n\n\t/* Im{C} = Re{A}*Im{B} + Im{A}*Re{B} */\n        accI = vmlaq_f32(accI,vec1.val[1],vec2.val[0]);\n        accI = vmlaq_f32(accI,vec1.val[0],vec2.val[1]);\n\n        vec3 = vld2q_f32(pSrcA);\n        vec4 = vld2q_f32(pSrcB);\n\t\n\t/* Increment pointers */\n        pSrcA += 8;\n        pSrcB += 8;\n\n\t/* Re{C} = Re{A}*Re{B} - Im{A}*Im{B} */\n        accR = vmlaq_f32(accR,vec3.val[0],vec4.val[0]);\n        accR = vmlsq_f32(accR,vec3.val[1],vec4.val[1]);\n\n\t/* Im{C} = Re{A}*Im{B} + Im{A}*Re{B} */\n        accI = vmlaq_f32(accI,vec3.val[1],vec4.val[0]);\n        accI = vmlaq_f32(accI,vec3.val[0],vec4.val[1]);\n\n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    accum = vpadd_f32(vget_low_f32(accR), vget_high_f32(accR));\n    real_sum += accum[0] + accum[1];\n\n    accum = vpadd_f32(vget_low_f32(accI), vget_high_f32(accI));\n    imag_sum += accum[0] + accum[1];\n\n    /* Tail */\n    blkCnt = numSamples & 0x7;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += a0 * c0;\n    imag_sum += a0 * d0;\n    real_sum -= b0 * d0;\n    imag_sum += b0 * c0;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += a0 * c0;\n    imag_sum += a0 * d0;\n    real_sum -= b0 * d0;\n    imag_sum += b0 * c0;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += a0 * c0;\n    imag_sum += a0 * d0;\n    real_sum -= b0 * d0;\n    imag_sum += b0 * c0;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += a0 * c0;\n    imag_sum += a0 * d0;\n    real_sum -= b0 * d0;\n    imag_sum += b0 * c0;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += a0 * c0;\n    imag_sum += a0 * d0;\n    real_sum -= b0 * d0;\n    imag_sum += b0 * c0;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store real and imaginary result in destination buffer. */\n  *realResult = real_sum;\n  *imagResult = imag_sum;\n}\n\n/**\n  @} end of cmplx_dot_prod group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_dot_prod_q15.c\n * Description:  Processing function for the Q15 Complex Dot product\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_dot_prod\n  @{\n */\n\n/**\n  @brief         Q15 complex dot product.\n  @param[in]     pSrcA       points to the first input vector\n  @param[in]     pSrcB       points to the second input vector\n  @param[in]     numSamples  number of samples in each vector\n  @param[out]    realResult  real part of the result returned here\n  @param[out]    imagResult  imaginary part of the result returned her\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The intermediate 1.15 by 1.15 multiplications are performed with full precision and yield a 2.30 result.\n                   These are accumulated in a 64-bit accumulator with 34.30 precision.\n                   As a final step, the accumulators are converted to 8.24 format.\n                   The return results <code>realResult</code> and <code>imagResult</code> are in 8.24 format.\n */\n\nvoid arm_cmplx_dot_prod_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        uint32_t numSamples,\n        q31_t * realResult,\n        q31_t * imagResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t real_sum = 0, imag_sum = 0;              /* Temporary result variables */\n        q15_t a0,b0,c0,d0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += (q31_t)a0 * c0;\n    imag_sum += (q31_t)a0 * d0;\n    real_sum -= (q31_t)b0 * d0;\n    imag_sum += (q31_t)b0 * c0;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += (q31_t)a0 * c0;\n    imag_sum += (q31_t)a0 * d0;\n    real_sum -= (q31_t)b0 * d0;\n    imag_sum += (q31_t)b0 * c0;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += (q31_t)a0 * c0;\n    imag_sum += (q31_t)a0 * d0;\n    real_sum -= (q31_t)b0 * d0;\n    imag_sum += (q31_t)b0 * c0;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += (q31_t)a0 * c0;\n    imag_sum += (q31_t)a0 * d0;\n    real_sum -= (q31_t)b0 * d0;\n    imag_sum += (q31_t)b0 * c0;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += (q31_t)a0 * c0;\n    imag_sum += (q31_t)a0 * d0;\n    real_sum -= (q31_t)b0 * d0;\n    imag_sum += (q31_t)b0 * c0;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store real and imaginary result in 8.24 format  */\n  /* Convert real data in 34.30 to 8.24 by 6 right shifts */\n  *realResult = (q31_t) (real_sum >> 6);\n  /* Convert imaginary data in 34.30 to 8.24 by 6 right shifts */\n  *imagResult = (q31_t) (imag_sum >> 6);\n}\n\n/**\n  @} end of cmplx_dot_prod group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_dot_prod_q31.c\n * Description:  Q31 complex dot product\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_dot_prod\n  @{\n */\n\n/**\n  @brief         Q31 complex dot product.\n  @param[in]     pSrcA       points to the first input vector\n  @param[in]     pSrcB       points to the second input vector\n  @param[in]     numSamples  number of samples in each vector\n  @param[out]    realResult  real part of the result returned here\n  @param[out]    imagResult  imaginary part of the result returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The intermediate 1.31 by 1.31 multiplications are performed with 64-bit precision and then shifted to 16.48 format.\n                   The internal real and imaginary accumulators are in 16.48 format and provide 15 guard bits.\n                   Additions are nonsaturating and no overflow will occur as long as <code>numSamples</code> is less than 32768.\n                   The return results <code>realResult</code> and <code>imagResult</code> are in 16.48 format.\n                   Input down scaling is not required.\n */\n\nvoid arm_cmplx_dot_prod_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        uint32_t numSamples,\n        q63_t * realResult,\n        q63_t * imagResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t real_sum = 0, imag_sum = 0;              /* Temporary result variables */\n        q31_t a0,b0,c0,d0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += ((q63_t)a0 * c0) >> 14;\n    imag_sum += ((q63_t)a0 * d0) >> 14;\n    real_sum -= ((q63_t)b0 * d0) >> 14;\n    imag_sum += ((q63_t)b0 * c0) >> 14;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += ((q63_t)a0 * c0) >> 14;\n    imag_sum += ((q63_t)a0 * d0) >> 14;\n    real_sum -= ((q63_t)b0 * d0) >> 14;\n    imag_sum += ((q63_t)b0 * c0) >> 14;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += ((q63_t)a0 * c0) >> 14;\n    imag_sum += ((q63_t)a0 * d0) >> 14;\n    real_sum -= ((q63_t)b0 * d0) >> 14;\n    imag_sum += ((q63_t)b0 * c0) >> 14;\n\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += ((q63_t)a0 * c0) >> 14;\n    imag_sum += ((q63_t)a0 * d0) >> 14;\n    real_sum -= ((q63_t)b0 * d0) >> 14;\n    imag_sum += ((q63_t)b0 * c0) >> 14;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    a0 = *pSrcA++;\n    b0 = *pSrcA++;\n    c0 = *pSrcB++;\n    d0 = *pSrcB++;\n\n    real_sum += ((q63_t)a0 * c0) >> 14;\n    imag_sum += ((q63_t)a0 * d0) >> 14;\n    real_sum -= ((q63_t)b0 * d0) >> 14;\n    imag_sum += ((q63_t)b0 * c0) >> 14;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store real and imaginary result in 16.48 format  */\n  *realResult = real_sum;\n  *imagResult = imag_sum;\n}\n\n/**\n  @} end of cmplx_dot_prod group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mag_f32.c\n * Description:  Floating-point complex magnitude\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @defgroup cmplx_mag Complex Magnitude\n\n  Computes the magnitude of the elements of a complex data vector.\n\n  The <code>pSrc</code> points to the source data and\n  <code>pDst</code> points to the where the result should be written.\n  <code>numSamples</code> specifies the number of complex samples\n  in the input array and the data is stored in an interleaved fashion\n  (real, imag, real, imag, ...).\n  The input array has a total of <code>2*numSamples</code> values;\n  the output array has a total of <code>numSamples</code> values.\n\n  The underlying algorithm is used:\n\n  <pre>\n  for (n = 0; n < numSamples; n++) {\n      pDst[n] = sqrt(pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2);\n  }\n  </pre>\n\n  There are separate functions for floating-point, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup cmplx_mag\n  @{\n */\n\n/**\n  @brief         Floating-point complex magnitude.\n  @param[in]     pSrc        points to input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n */\n\nvoid arm_cmplx_mag_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t numSamples)\n{\n  uint32_t blkCnt;                               /* loop counter */\n  float32_t real, imag;                      /* Temporary variables to hold input values */\n\n#if defined(ARM_MATH_NEON)\n\n  float32x4x2_t vecA;\n  float32x4_t vRealA;\n  float32x4_t vImagA;\n  float32x4_t vMagSqA;\n\n  float32x4x2_t vecB;\n  float32x4_t vRealB;\n  float32x4_t vImagB;\n  float32x4_t vMagSqB;\n\n  /* Loop unrolling: Compute 8 outputs at a time */\n  blkCnt = numSamples >> 3;\n\n  while (blkCnt > 0U)\n  {\n    /* out = sqrt((real * real) + (imag * imag)) */\n\n    vecA = vld2q_f32(pSrc);\n    pSrc += 8;\n\n    vecB = vld2q_f32(pSrc);\n    pSrc += 8;\n\n    vRealA = vmulq_f32(vecA.val[0], vecA.val[0]);\n    vImagA = vmulq_f32(vecA.val[1], vecA.val[1]);\n    vMagSqA = vaddq_f32(vRealA, vImagA);\n\n    vRealB = vmulq_f32(vecB.val[0], vecB.val[0]);\n    vImagB = vmulq_f32(vecB.val[1], vecB.val[1]);\n    vMagSqB = vaddq_f32(vRealB, vImagB);\n\n    /* Store the result in the destination buffer. */\n    vst1q_f32(pDst, __arm_vec_sqrt_f32_neon(vMagSqA));\n    pDst += 4;\n\n    vst1q_f32(pDst, __arm_vec_sqrt_f32_neon(vMagSqB));\n    pDst += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  blkCnt = numSamples & 7;\n\n#else\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n\n    /* store result in destination buffer. */\n    arm_sqrt_f32((real * real) + (imag * imag), pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    arm_sqrt_f32((real * real) + (imag * imag), pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    arm_sqrt_f32((real * real) + (imag * imag), pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    arm_sqrt_f32((real * real) + (imag * imag), pDst++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n\n    /* store result in destination buffer. */\n    arm_sqrt_f32((real * real) + (imag * imag), pDst++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_mag group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mag_q15.c\n * Description:  Q15 complex magnitude\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_mag\n  @{\n */\n\n/**\n  @brief         Q15 complex magnitude.\n  @param[in]     pSrc        points to input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function implements 1.15 by 1.15 multiplications and finally output is converted into 2.14 format.\n */\n\nvoid arm_cmplx_mag_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_DSP)\n        q31_t in;\n        q31_t acc0;                                    /* Accumulators */\n#else\n       q15_t real, imag;                              /* Temporary input variables */\n       q31_t acc0, acc1;                              /* Accumulators */\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */\n\n#if defined (ARM_MATH_DSP)\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    /* store result in 2.14 format in destination buffer. */\n    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);\n\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);\n\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);\n\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);\n#else\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n\n    /* store result in 2.14 format in destination buffer. */\n    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */\n\n#if defined (ARM_MATH_DSP)\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n\n    /* store result in 2.14 format in destination buffer. */\n    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);\n#else\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n\n    /* store result in 2.14 format in destination buffer. */\n    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_mag group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mag_q31.c\n * Description:  Q31 complex magnitude\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_mag\n  @{\n */\n\n/**\n  @brief         Q31 complex magnitude.\n  @param[in]     pSrc        points to input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function implements 1.31 by 1.31 multiplications and finally output is converted into 2.30 format.\n                   Input down scaling is not required.\n */\n\nvoid arm_cmplx_mag_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t real, imag;                              /* Temporary input variables */\n        q31_t acc0, acc1;                              /* Accumulators */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n\n    /* store result in 2.30 format in destination buffer. */\n    arm_sqrt_q31(acc0 + acc1, pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n    arm_sqrt_q31(acc0 + acc1, pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n    arm_sqrt_q31(acc0 + acc1, pDst++);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n    arm_sqrt_q31(acc0 + acc1, pDst++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n\n    /* store result in 2.30 format in destination buffer. */\n    arm_sqrt_q31(acc0 + acc1, pDst++);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_mag group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mag_squared_f32.c\n * Description:  Floating-point complex magnitude squared\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @defgroup cmplx_mag_squared Complex Magnitude Squared\n\n  Computes the magnitude squared of the elements of a complex data vector.\n\n  The <code>pSrc</code> points to the source data and\n  <code>pDst</code> points to the where the result should be written.\n  <code>numSamples</code> specifies the number of complex samples\n  in the input array and the data is stored in an interleaved fashion\n  (real, imag, real, imag, ...).\n  The input array has a total of <code>2*numSamples</code> values;\n  the output array has a total of <code>numSamples</code> values.\n\n  The underlying algorithm is used:\n\n  <pre>\n  for (n = 0; n < numSamples; n++) {\n      pDst[n] = pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2;\n  }\n  </pre>\n\n  There are separate functions for floating-point, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup cmplx_mag_squared\n  @{\n */\n\n/**\n  @brief         Floating-point complex magnitude squared.\n  @param[in]     pSrc        points to input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n */\n\nvoid arm_cmplx_mag_squared_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t real, imag;                          /* Temporary input variables */\n\n#if defined(ARM_MATH_NEON)\n  float32x4x2_t vecA;\n  float32x4_t vRealA;\n  float32x4_t vImagA;\n  float32x4_t vMagSqA;\n\n  float32x4x2_t vecB;\n  float32x4_t vRealB;\n  float32x4_t vImagB;\n  float32x4_t vMagSqB;\n\n  /* Loop unrolling: Compute 8 outputs at a time */\n  blkCnt = numSamples >> 3;\n\n  while (blkCnt > 0U)\n  {\n    /* out = sqrt((real * real) + (imag * imag)) */\n\n    vecA = vld2q_f32(pSrc);\n    pSrc += 8;\n\n    vRealA = vmulq_f32(vecA.val[0], vecA.val[0]);\n    vImagA = vmulq_f32(vecA.val[1], vecA.val[1]);\n    vMagSqA = vaddq_f32(vRealA, vImagA);\n\n    vecB = vld2q_f32(pSrc);\n    pSrc += 8;\n\n    vRealB = vmulq_f32(vecB.val[0], vecB.val[0]);\n    vImagB = vmulq_f32(vecB.val[1], vecB.val[1]);\n    vMagSqB = vaddq_f32(vRealB, vImagB);\n\n    /* Store the result in the destination buffer. */\n    vst1q_f32(pDst, vMagSqA);\n    pDst += 4;\n\n    vst1q_f32(pDst, vMagSqB);\n    pDst += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  blkCnt = numSamples & 7;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    *pDst++ = (real * real) + (imag * imag);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    *pDst++ = (real * real) + (imag * imag);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    *pDst++ = (real * real) + (imag * imag);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    *pDst++ = (real * real) + (imag * imag);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n\n    /* store result in destination buffer. */\n    *pDst++ = (real * real) + (imag * imag);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_mag_squared group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mag_squared_q15.c\n * Description:  Q15 complex magnitude squared\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_mag_squared\n  @{\n */\n\n/**\n  @brief         Q15 complex magnitude squared.\n  @param[in]     pSrc        points to input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.\n */\n\nvoid arm_cmplx_mag_squared_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_DSP)\n        q31_t in;\n        q31_t acc0;                                    /* Accumulators */\n#else\n        q15_t real, imag;                              /* Temporary input variables */\n        q31_t acc0, acc1;                              /* Accumulators */\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */\n\n#if defined (ARM_MATH_DSP)\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    /* store result in 3.13 format in destination buffer. */\n    *pDst++ = (q15_t) (acc0 >> 17);\n\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    *pDst++ = (q15_t) (acc0 >> 17);\n\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    *pDst++ = (q15_t) (acc0 >> 17);\n\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n    *pDst++ = (q15_t) (acc0 >> 17);\n#else\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n    /* store result in 3.13 format in destination buffer. */\n    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */\n\n#if defined (ARM_MATH_DSP)\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    acc0 = __SMUAD(in, in);\n\n    /* store result in 3.13 format in destination buffer. */\n    *pDst++ = (q15_t) (acc0 >> 17);\n#else\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = ((q31_t) real * real);\n    acc1 = ((q31_t) imag * imag);\n\n    /* store result in 3.13 format in destination buffer. */\n    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_mag_squared group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mag_squared_q31.c\n * Description:  Q31 complex magnitude squared\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup cmplx_mag_squared\n  @{\n */\n\n/**\n  @brief         Q31 complex magnitude squared.\n  @param[in]     pSrc        points to input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.\n                   Input down scaling is not required.\n */\n\nvoid arm_cmplx_mag_squared_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t real, imag;                              /* Temporary input variables */\n        q31_t acc0, acc1;                              /* Accumulators */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n    /* store the result in 3.29 format in the destination buffer. */\n    *pDst++ = acc0 + acc1;\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n    *pDst++ = acc0 + acc1;\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n    *pDst++ = acc0 + acc1;\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n    *pDst++ = acc0 + acc1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */\n\n    real = *pSrc++;\n    imag = *pSrc++;\n    acc0 = (q31_t) (((q63_t) real * real) >> 33);\n    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);\n\n    /* store result in 3.29 format in destination buffer. */\n    *pDst++ = acc0 + acc1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of cmplx_mag_squared group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mult_cmplx_f32.c\n * Description:  Floating-point complex-by-complex multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @defgroup CmplxByCmplxMult Complex-by-Complex Multiplication\n\n  Multiplies a complex vector by another complex vector and generates a complex result.\n  The data in the complex arrays is stored in an interleaved fashion\n  (real, imag, real, imag, ...).\n  The parameter <code>numSamples</code> represents the number of complex\n  samples processed.  The complex arrays have a total of <code>2*numSamples</code>\n  real values.\n\n  The underlying algorithm is used:\n\n  <pre>\n  for (n = 0; n < numSamples; n++) {\n      pDst[(2*n)+0] = pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];\n      pDst[(2*n)+1] = pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];\n  }\n  </pre>\n\n  There are separate functions for floating-point, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup CmplxByCmplxMult\n  @{\n */\n\n/**\n  @brief         Floating-point complex-by-complex multiplication.\n  @param[in]     pSrcA       points to first input vector\n  @param[in]     pSrcB       points to second input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n */\n\nvoid arm_cmplx_mult_cmplx_f32(\n  const float32_t * pSrcA,\n  const float32_t * pSrcB,\n        float32_t * pDst,\n        uint32_t numSamples)\n{\n    uint32_t blkCnt;                               /* Loop counter */\n    float32_t a, b, c, d;  /* Temporary variables to store real and imaginary values */\n\n#if defined(ARM_MATH_NEON)\n    float32x4x2_t va, vb;\n    float32x4_t real, imag;\n    float32x4x2_t outCplx;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        va = vld2q_f32(pSrcA);  // load & separate real/imag pSrcA (de-interleave 2)\n        vb = vld2q_f32(pSrcB);  // load & separate real/imag pSrcB\n\n\t/* Increment pointers */\n        pSrcA += 8;\n        pSrcB += 8;\n\t\n\t/* Re{C} = Re{A}*Re{B} - Im{A}*Im{B} */\n        outCplx.val[0] = vmulq_f32(va.val[0], vb.val[0]);\n        outCplx.val[0] = vmlsq_f32(outCplx.val[0], va.val[1], vb.val[1]);\n\n\t/* Im{C} = Re{A}*Im{B} + Im{A}*Re{B} */\n        outCplx.val[1] = vmulq_f32(va.val[0], vb.val[1]);\n        outCplx.val[1] = vmlaq_f32(outCplx.val[1], va.val[1], vb.val[0]);\n\n        vst2q_f32(pDst, outCplx);\n\n\t/* Increment pointer */\n        pDst += 8;\n\n\t/* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = numSamples & 3;\n\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i] * B[2 * i    ] - A[2 * i + 1] * B[2 * i + 1]. */\n    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i    ]. */\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    /* store result in destination buffer. */\n    *pDst++ = (a * c) - (b * d);\n    *pDst++ = (a * d) + (b * c);\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (a * c) - (b * d);\n    *pDst++ = (a * d) + (b * c);\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (a * c) - (b * d);\n    *pDst++ = (a * d) + (b * c);\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (a * c) - (b * d);\n    *pDst++ = (a * d) + (b * c);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i] * B[2 * i    ] - A[2 * i + 1] * B[2 * i + 1]. */\n    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i    ]. */\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n\n    /* store result in destination buffer. */\n    *pDst++ = (a * c) - (b * d);\n    *pDst++ = (a * d) + (b * c);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of CmplxByCmplxMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mult_cmplx_q15.c\n * Description:  Q15 complex-by-complex multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup CmplxByCmplxMult\n  @{\n */\n\n/**\n  @brief         Q15 complex-by-complex multiplication.\n  @param[in]     pSrcA       points to first input vector\n  @param[in]     pSrcB       points to second input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.\n */\n\nvoid arm_cmplx_mult_cmplx_q15(\n  const q15_t * pSrcA,\n  const q15_t * pSrcB,\n        q15_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q15_t a, b, c, d;                              /* Temporary variables */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i] * B[2 * i    ] - A[2 * i + 1] * B[2 * i + 1]. */\n    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i    ]. */\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    /* store result in 3.13 format in destination buffer. */\n    *pDst++ = (q15_t) ( (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17) );\n    *pDst++ = (q15_t) ( (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17) );\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (q15_t) ( (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17) );\n    *pDst++ = (q15_t) ( (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17) );\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (q15_t) ( (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17) );\n    *pDst++ = (q15_t) ( (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17) );\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (q15_t) ( (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17) );\n    *pDst++ = (q15_t) ( (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17) );\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i] * B[2 * i    ] - A[2 * i + 1] * B[2 * i + 1]. */\n    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i    ]. */\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n\n    /* store result in 3.13 format in destination buffer. */\n    *pDst++ = (q15_t) ( (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17) );\n    *pDst++ = (q15_t) ( (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17) );\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of CmplxByCmplxMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mult_cmplx_q31.c\n * Description:  Q31 complex-by-complex multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup CmplxByCmplxMult\n  @{\n */\n\n/**\n  @brief         Q31 complex-by-complex multiplication.\n  @param[in]     pSrcA       points to first input vector\n  @param[in]     pSrcB       points to second input vector\n  @param[out]    pDst        points to output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.\n                   Input down scaling is not required.\n */\n\nvoid arm_cmplx_mult_cmplx_q31(\n  const q31_t * pSrcA,\n  const q31_t * pSrcB,\n        q31_t * pDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t a, b, c, d;                              /* Temporary variables */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i] * B[2 * i    ] - A[2 * i + 1] * B[2 * i + 1]. */\n    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i    ]. */\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    /* store result in 3.29 format in destination buffer. */\n    *pDst++ = (q31_t) ( (((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33) );\n    *pDst++ = (q31_t) ( (((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33) );\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (q31_t) ( (((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33) );\n    *pDst++ = (q31_t) ( (((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33) );\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (q31_t) ( (((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33) );\n    *pDst++ = (q31_t) ( (((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33) );\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n    *pDst++ = (q31_t) ( (((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33) );\n    *pDst++ = (q31_t) ( (((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33) );\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i] * B[2 * i    ] - A[2 * i + 1] * B[2 * i + 1]. */\n    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i    ]. */\n\n    a = *pSrcA++;\n    b = *pSrcA++;\n    c = *pSrcB++;\n    d = *pSrcB++;\n\n    /* store result in 3.29 format in destination buffer. */\n    *pDst++ = (q31_t) ( (((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33) );\n    *pDst++ = (q31_t) ( (((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33) );\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of CmplxByCmplxMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mult_real_f32.c\n * Description:  Floating-point complex by real multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @defgroup CmplxByRealMult Complex-by-Real Multiplication\n\n  Multiplies a complex vector by a real vector and generates a complex result.\n  The data in the complex arrays is stored in an interleaved fashion\n  (real, imag, real, imag, ...).\n  The parameter <code>numSamples</code> represents the number of complex\n  samples processed.  The complex arrays have a total of <code>2*numSamples</code>\n  real values while the real array has a total of <code>numSamples</code>\n  real values.\n\n  The underlying algorithm is used:\n\n  <pre>\n  for (n = 0; n < numSamples; n++) {\n      pCmplxDst[(2*n)+0] = pSrcCmplx[(2*n)+0] * pSrcReal[n];\n      pCmplxDst[(2*n)+1] = pSrcCmplx[(2*n)+1] * pSrcReal[n];\n  }\n  </pre>\n\n  There are separate functions for floating-point, Q15, and Q31 data types.\n */\n\n/**\n  @addtogroup CmplxByRealMult\n  @{\n */\n\n/**\n  @brief         Floating-point complex-by-real multiplication.\n  @param[in]     pSrcCmplx   points to complex input vector\n  @param[in]     pSrcReal    points to real input vector\n  @param[out]    pCmplxDst   points to complex output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n */\n\nvoid arm_cmplx_mult_real_f32(\n  const float32_t * pSrcCmplx,\n  const float32_t * pSrcReal,\n        float32_t * pCmplxDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t in;                                  /* Temporary variable */\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t r;\n    float32x4x2_t ab,outCplx;\n\n    /* Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n        ab = vld2q_f32(pSrcCmplx);  // load & separate real/imag pSrcA (de-interleave 2)\n        r = vld1q_f32(pSrcReal);  // load & separate real/imag pSrcB\n\n\t/* Increment pointers */\n        pSrcCmplx += 8;\n        pSrcReal += 4;\n\n        outCplx.val[0] = vmulq_f32(ab.val[0], r);\n        outCplx.val[1] = vmulq_f32(ab.val[1], r);\n\n        vst2q_f32(pCmplxDst, outCplx);\n        pCmplxDst += 8;\n\n        blkCnt--;\n    }\n\n    /* Tail */\n    blkCnt = numSamples & 3;\n#else\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i    ] * B[i]. */\n    /* C[2 * i + 1] = A[2 * i + 1] * B[i]. */\n\n    in = *pSrcReal++;\n    /* store result in destination buffer. */\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n\n    in = *pSrcReal++;\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n\n    in = *pSrcReal++;\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n\n    in = *pSrcReal++;\n    *pCmplxDst++ = *pSrcCmplx++* in;\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i    ] * B[i]. */\n    /* C[2 * i + 1] = A[2 * i + 1] * B[i]. */\n\n    in = *pSrcReal++;\n    /* store result in destination buffer. */\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n    *pCmplxDst++ = *pSrcCmplx++ * in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of CmplxByRealMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mult_real_q15.c\n * Description:  Q15 complex by real multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup CmplxByRealMult\n  @{\n */\n\n/**\n  @brief         Q15 complex-by-real multiplication.\n  @param[in]     pSrcCmplx   points to complex input vector\n  @param[in]     pSrcReal    points to real input vector\n  @param[out]    pCmplxDst   points to complex output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\nvoid arm_cmplx_mult_real_q15(\n  const q15_t * pSrcCmplx,\n  const q15_t * pSrcReal,\n        q15_t * pCmplxDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q15_t in;                                      /* Temporary variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n#if defined (ARM_MATH_DSP)\n        q31_t inA1, inA2;                              /* Temporary variables to hold input data */\n        q31_t inB1;                                    /* Temporary variables to hold input data */\n        q15_t out1, out2, out3, out4;                  /* Temporary variables to hold output data */\n        q31_t mul1, mul2, mul3, mul4;                  /* Temporary variables to hold intermediate data */\n#endif\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i    ] * B[i]. */\n    /* C[2 * i + 1] = A[2 * i + 1] * B[i]. */\n\n#if defined (ARM_MATH_DSP)\n    /* read 2 complex numbers both real and imaginary from complex input buffer */\n    inA1 = read_q15x2_ia ((q15_t **) &pSrcCmplx);\n    inA2 = read_q15x2_ia ((q15_t **) &pSrcCmplx);\n    /* read 2 real values at a time from real input buffer */\n    inB1 = read_q15x2_ia ((q15_t **) &pSrcReal);\n\n    /* multiply complex number with real numbers */\n#ifndef ARM_MATH_BIG_ENDIAN\n    mul1 = (q31_t) ((q15_t) (inA1)       * (q15_t) (inB1));\n    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));\n    mul3 = (q31_t) ((q15_t) (inA2)       * (q15_t) (inB1 >> 16));\n    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));\n#else\n    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));\n    mul1 = (q31_t) ((q15_t) inA1         * (q15_t) (inB1 >> 16));\n    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);\n    mul3 = (q31_t) ((q15_t) inA2         * (q15_t) inB1);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* saturate the result */\n    out1 = (q15_t) __SSAT(mul1 >> 15U, 16);\n    out2 = (q15_t) __SSAT(mul2 >> 15U, 16);\n    out3 = (q15_t) __SSAT(mul3 >> 15U, 16);\n    out4 = (q15_t) __SSAT(mul4 >> 15U, 16);\n\n    /* pack real and imaginary outputs and store them to destination */\n    write_q15x2_ia (&pCmplxDst, __PKHBT(out1, out2, 16));\n    write_q15x2_ia (&pCmplxDst, __PKHBT(out3, out4, 16));\n\n    inA1 = read_q15x2_ia ((q15_t **) &pSrcCmplx);\n    inA2 = read_q15x2_ia ((q15_t **) &pSrcCmplx);\n    inB1 = read_q15x2_ia ((q15_t **) &pSrcReal);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    mul1 = (q31_t) ((q15_t) (inA1)       * (q15_t) (inB1));\n    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));\n    mul3 = (q31_t) ((q15_t) (inA2)       * (q15_t) (inB1 >> 16));\n    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));\n#else\n    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));\n    mul1 = (q31_t) ((q15_t) inA1         * (q15_t) (inB1 >> 16));\n    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);\n    mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    out1 = (q15_t) __SSAT(mul1 >> 15U, 16);\n    out2 = (q15_t) __SSAT(mul2 >> 15U, 16);\n    out3 = (q15_t) __SSAT(mul3 >> 15U, 16);\n    out4 = (q15_t) __SSAT(mul4 >> 15U, 16);\n\n    write_q15x2_ia (&pCmplxDst, __PKHBT(out1, out2, 16));\n    write_q15x2_ia (&pCmplxDst, __PKHBT(out3, out4, 16));\n#else\n    in = *pSrcReal++;\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n\n    in = *pSrcReal++;\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n\n    in = *pSrcReal++;\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n\n    in = *pSrcReal++;\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i    ] * B[i]. */\n    /* C[2 * i + 1] = A[2 * i + 1] * B[i]. */\n\n    in = *pSrcReal++;\n    /* store the result in the destination buffer. */\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n    *pCmplxDst++ = (q15_t) __SSAT((((q31_t) *pSrcCmplx++ * in) >> 15), 16);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of CmplxByRealMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mult_real_q31.c\n * Description:  Q31 complex by real multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupCmplxMath\n */\n\n/**\n  @addtogroup CmplxByRealMult\n  @{\n */\n\n/**\n  @brief         Q31 complex-by-real multiplication.\n  @param[in]     pSrcCmplx   points to complex input vector\n  @param[in]     pSrcReal    points to real input vector\n  @param[out]    pCmplxDst   points to complex output vector\n  @param[in]     numSamples  number of samples in each vector\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] are saturated.\n */\n\nvoid arm_cmplx_mult_real_q31(\n  const q31_t * pSrcCmplx,\n  const q31_t * pSrcReal,\n        q31_t * pCmplxDst,\n        uint32_t numSamples)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t in;                                      /* Temporary variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = numSamples >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i    ] * B[i]. */\n    /* C[2 * i + 1] = A[2 * i + 1] * B[i]. */\n\n    in = *pSrcReal++;\n#if defined (ARM_MATH_DSP)\n    /* store saturated result in 1.31 format to destination buffer */\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n#else\n    /* store result in destination buffer. */\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n#endif\n\n    in = *pSrcReal++;\n#if defined (ARM_MATH_DSP)\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n#else\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n#endif\n\n    in = *pSrcReal++;\n#if defined (ARM_MATH_DSP)\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n#else\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n#endif\n\n    in = *pSrcReal++;\n#if defined (ARM_MATH_DSP)\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n#else\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = numSamples % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C[2 * i    ] = A[2 * i    ] * B[i]. */\n    /* C[2 * i + 1] = A[2 * i + 1] * B[i]. */\n\n    in = *pSrcReal++;\n#if defined (ARM_MATH_DSP)\n    /* store saturated result in 1.31 format to destination buffer */\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n    *pCmplxDst++ = (__SSAT((q31_t) (((q63_t) *pSrcCmplx++ * in) >> 32), 31) << 1);\n#else\n    /* store result in destination buffer. */\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n    *pCmplxDst++ = (q31_t) clip_q63_to_q31(((q63_t) *pSrcCmplx++ * in) >> 31);\n#endif\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of CmplxByRealMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPController)\n\nadd_library(CMSISDSPController STATIC)\n\nconfigdsp(CMSISDSPController ..)\n\ninclude(interpol)\ninterpol(CMSISDSPController)\n\nif (CONFIGTABLE AND ALLFAST)\n    target_compile_definitions(CMSISDSPController PUBLIC ARM_ALL_FAST_TABLES)  \nendif()\n\ntarget_sources(CMSISDSPController PRIVATE arm_pid_init_f32.c)\ntarget_sources(CMSISDSPController PRIVATE arm_pid_init_q15.c)\ntarget_sources(CMSISDSPController PRIVATE arm_pid_init_q31.c)\ntarget_sources(CMSISDSPController PRIVATE arm_pid_reset_f32.c)\ntarget_sources(CMSISDSPController PRIVATE arm_pid_reset_q15.c)\ntarget_sources(CMSISDSPController PRIVATE arm_pid_reset_q31.c)\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_SIN_COS_F32)\ntarget_sources(CMSISDSPController PRIVATE arm_sin_cos_f32.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_SIN_COS_Q31)\ntarget_sources(CMSISDSPController PRIVATE arm_sin_cos_q31.c)\nendif()\n\n\n\n### Includes\ntarget_include_directories(CMSISDSPController PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/ControllerFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        ControllerFunctions.c\n * Description:  Combination of all controller function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_pid_init_f32.c\"\n#include \"arm_pid_init_q15.c\"\n#include \"arm_pid_init_q31.c\"\n#include \"arm_pid_reset_f32.c\"\n#include \"arm_pid_reset_q15.c\"\n#include \"arm_pid_reset_q31.c\"\n#include \"arm_sin_cos_f32.c\"\n#include \"arm_sin_cos_q31.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_pid_init_f32.c\n * Description:  Floating-point PID Control initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup PID\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point PID Control.\n  @param[in,out] S               points to an instance of the PID structure\n  @param[in]     resetStateFlag\n                   - value = 0: no change in state\n                   - value = 1: reset state\n  @return        none\n\n  @par           Details\n                   The <code>resetStateFlag</code> specifies whether to set state to zero or not. \\n\n                   The function computes the structure fields: <code>A0</code>, <code>A1</code> <code>A2</code>\n                   using the proportional gain( \\c Kp), integral gain( \\c Ki) and derivative gain( \\c Kd)\n                   also sets the state variables to all zeros.\n */\n\nvoid arm_pid_init_f32(\n  arm_pid_instance_f32 * S,\n  int32_t resetStateFlag)\n{\n  /* Derived coefficient A0 */\n  S->A0 = S->Kp + S->Ki + S->Kd;\n\n  /* Derived coefficient A1 */\n  S->A1 = (-S->Kp) - ((float32_t) 2.0 * S->Kd);\n\n  /* Derived coefficient A2 */\n  S->A2 = S->Kd;\n\n  /* Check whether state needs reset or not */\n  if (resetStateFlag)\n  {\n    /* Reset state to zero, The size will be always 3 samples */\n    memset(S->state, 0, 3U * sizeof(float32_t));\n  }\n\n}\n\n/**\n  @} end of PID group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_pid_init_q15.c\n * Description:  Q15 PID Control initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup PID\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 PID Control.\n  @param[in,out] S               points to an instance of the Q15 PID structure\n  @param[in]     resetStateFlag\n                   - value = 0: no change in state\n                   - value = 1: reset state\n  @return        none\n\n  @par           Details\n                   The <code>resetStateFlag</code> specifies whether to set state to zero or not. \\n\n                   The function computes the structure fields: <code>A0</code>, <code>A1</code> <code>A2</code>\n                   using the proportional gain( \\c Kp), integral gain( \\c Ki) and derivative gain( \\c Kd)\n                   also sets the state variables to all zeros.\n */\n\nvoid arm_pid_init_q15(\n  arm_pid_instance_q15 * S,\n  int32_t resetStateFlag)\n{\n\n#if defined (ARM_MATH_DSP)\n\n  /* Derived coefficient A0 */\n  S->A0 = __QADD16(__QADD16(S->Kp, S->Ki), S->Kd);\n\n  /* Derived coefficients and pack into A1 */\n\n#ifndef  ARM_MATH_BIG_ENDIAN\n  S->A1 = __PKHBT(-__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), S->Kd, 16);\n#else\n  S->A1 = __PKHBT(S->Kd, -__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), 16);\n#endif\n\n#else\n\n  q31_t temp;                                    /* to store the sum */\n\n  /* Derived coefficient A0 */\n  temp = S->Kp + S->Ki + S->Kd;\n  S->A0 = (q15_t) __SSAT(temp, 16);\n\n  /* Derived coefficients and pack into A1 */\n  temp = -(S->Kd + S->Kd + S->Kp);\n  S->A1 = (q15_t) __SSAT(temp, 16);\n  S->A2 = S->Kd;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n  /* Check whether state needs reset or not */\n  if (resetStateFlag)\n  {\n    /* Reset state to zero, The size will be always 3 samples */\n    memset(S->state, 0, 3U * sizeof(q15_t));\n  }\n\n}\n\n/**\n  @} end of PID group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_pid_init_q31.c\n * Description:  Q31 PID Control initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup PID\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 PID Control.\n  @param[in,out] S               points to an instance of the Q31 PID structure\n  @param[in]     resetStateFlag\n                   - value = 0: no change in state\n                   - value = 1: reset state\n  @return        none\n\n  @par           Details\n                   The <code>resetStateFlag</code> specifies whether to set state to zero or not. \\n\n                   The function computes the structure fields: <code>A0</code>, <code>A1</code> <code>A2</code>\n                   using the proportional gain( \\c Kp), integral gain( \\c Ki) and derivative gain( \\c Kd)\n                   also sets the state variables to all zeros.\n */\n\nvoid arm_pid_init_q31(\n  arm_pid_instance_q31 * S,\n  int32_t resetStateFlag)\n{\n\n#if defined (ARM_MATH_DSP)\n\n  /* Derived coefficient A0 */\n  S->A0 = __QADD(__QADD(S->Kp, S->Ki), S->Kd);\n\n  /* Derived coefficient A1 */\n  S->A1 = -__QADD(__QADD(S->Kd, S->Kd), S->Kp);\n\n#else\n\n  q31_t temp;                                    /* to store the sum */\n\n  /* Derived coefficient A0 */\n  temp = clip_q63_to_q31((q63_t) S->Kp + S->Ki);\n  S->A0 = clip_q63_to_q31((q63_t) temp + S->Kd);\n\n  /* Derived coefficient A1 */\n  temp = clip_q63_to_q31((q63_t) S->Kd + S->Kd);\n  S->A1 = -clip_q63_to_q31((q63_t) temp + S->Kp);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n  /* Derived coefficient A2 */\n  S->A2 = S->Kd;\n\n  /* Check whether state needs reset or not */\n  if (resetStateFlag)\n  {\n    /* Reset state to zero, The size will be always 3 samples */\n    memset(S->state, 0, 3U * sizeof(q31_t));\n  }\n\n}\n\n/**\n  @} end of PID group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_pid_reset_f32.c\n * Description:  Floating-point PID Control reset function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup PID\n  @{\n */\n\n/**\n  @brief         Reset function for the floating-point PID Control.\n  @param[in,out] S  points to an instance of the floating-point PID structure\n  @return        none\n\n  @par           Details\n                   The function resets the state buffer to zeros.\n */\n\nvoid arm_pid_reset_f32(\n  arm_pid_instance_f32 * S)\n{\n  /* Reset state to zero, The size will be always 3 samples */\n  memset(S->state, 0, 3U * sizeof(float32_t));\n}\n\n/**\n  @} end of PID group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_pid_reset_q15.c\n * Description:  Q15 PID Control reset function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup PID\n  @{\n */\n\n/**\n  @brief         Reset function for the Q15 PID Control.\n  @param[in,out] S  points to an instance of the Q15 PID structure\n  @return        none\n\n  @par           Details\n                   The function resets the state buffer to zeros.\n */\n\nvoid arm_pid_reset_q15(\n  arm_pid_instance_q15 * S)\n{\n  /* Reset state to zero, The size will be always 3 samples */\n  memset(S->state, 0, 3U * sizeof(q15_t));\n}\n\n/**\n  @} end of PID group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_pid_reset_q31.c\n * Description:  Q31 PID Control reset function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup PID\n  @{\n */\n\n/**\n  @brief         Reset function for the Q31 PID Control.\n  @param[in,out] S  points to an instance of the Q31 PID structure\n  @return        none\n\n  @par           Details\n                   The function resets the state buffer to zeros.\n */\n\nvoid arm_pid_reset_q31(\n  arm_pid_instance_q31 * S)\n{\n  /* Reset state to zero, The size will be always 3 samples */\n  memset(S->state, 0, 3U * sizeof(q31_t));\n}\n\n/**\n  @} end of PID group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sin_cos_f32.c\n * Description:  Sine and Cosine calculation for floating-point values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupController\n */\n\n/**\n  @defgroup SinCos Sine Cosine\n\n  Computes the trigonometric sine and cosine values using a combination of table lookup\n  and linear interpolation.\n  There are separate functions for Q31 and floating-point data types.\n  The input to the floating-point version is in degrees while the\n  fixed-point Q31 have a scaled input with the range\n  [-1 0.9999] mapping to [-180 +180] degrees.\n\n  The floating point function also allows values that are out of the usual range. When this happens, the function will\n  take extra time to adjust the input value to the range of [-180 180].\n\n  The result is accurate to 5 digits after the decimal point.\n\n  The implementation is based on table lookup using 360 values together with linear interpolation.\n  The steps used are:\n   -# Calculation of the nearest integer table index.\n   -# Compute the fractional portion (fract) of the input.\n   -# Fetch the value corresponding to \\c index from sine table to \\c y0 and also value from \\c index+1 to \\c y1.\n   -# Sine value is computed as <code> *psinVal = y0 + (fract * (y1 - y0))</code>.\n   -# Fetch the value corresponding to \\c index from cosine table to \\c y0 and also value from \\c index+1 to \\c y1.\n   -# Cosine value is computed as <code> *pcosVal = y0 + (fract * (y1 - y0))</code>.\n */\n\n/**\n  @addtogroup SinCos\n  @{\n */\n\n/**\n  @brief         Floating-point sin_cos function.\n  @param[in]     theta    input value in degrees\n  @param[out]    pSinVal  points to processed sine output\n  @param[out]    pCosVal  points to processed cosine output\n  @return        none\n */\n\nvoid arm_sin_cos_f32(\n  float32_t theta,\n  float32_t * pSinVal,\n  float32_t * pCosVal)\n{\n  float32_t fract, in;                             /* Temporary input, output variables */\n  uint16_t indexS, indexC;                         /* Index variable */\n  float32_t f1, f2, d1, d2;                        /* Two nearest output values */\n  float32_t Dn, Df;\n  float32_t temp, findex;\n\n  /* input x is in degrees */\n  /* Scale input, divide input by 360, for cosine add 0.25 (pi/2) to read sine table */\n  in = theta * 0.00277777777778f;\n\n  if (in < 0.0f)\n  {\n    in = -in;\n  }\n\n  in = in - (int32_t)in;\n\n  /* Calculate the nearest index */\n  findex = (float32_t)FAST_MATH_TABLE_SIZE * in;\n  indexS = ((uint16_t)findex) & 0x1ff;\n  indexC = (indexS + (FAST_MATH_TABLE_SIZE / 4)) & 0x1ff;\n\n  /* Calculation of fractional value */\n  fract = findex - (float32_t) indexS;\n\n  /* Read two nearest values of input value from the cos & sin tables */\n  f1 =  sinTable_f32[indexC  ];\n  f2 =  sinTable_f32[indexC+1];\n  d1 = -sinTable_f32[indexS  ];\n  d2 = -sinTable_f32[indexS+1];\n\n  temp = (1.0f - fract) * f1 + fract * f2;\n\n  Dn = 0.0122718463030f; /* delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE */\n  Df = f2 - f1;          /* delta between the values of the functions */\n\n  temp = Dn * (d1 + d2) - 2 * Df;\n  temp = fract * temp + (3 * Df - (d2 + 2 * d1) * Dn);\n  temp = fract * temp + d1 * Dn;\n\n  /* Calculation of cosine value */\n  *pCosVal = fract * temp + f1;\n\n  /* Read two nearest values of input value from the cos & sin tables */\n  f1 = sinTable_f32[indexS  ];\n  f2 = sinTable_f32[indexS+1];\n  d1 = sinTable_f32[indexC  ];\n  d2 = sinTable_f32[indexC+1];\n\n  temp = (1.0f - fract) * f1 + fract * f2;\n\n  Df = f2 - f1; // delta between the values of the functions\n  temp = Dn * (d1 + d2) - 2 * Df;\n  temp = fract * temp + (3 * Df - (d2 + 2 * d1) * Dn);\n  temp = fract * temp + d1 * Dn;\n\n  /* Calculation of sine value */\n  *pSinVal = fract * temp + f1;\n\n  if (theta < 0.0f)\n  {\n    *pSinVal = -*pSinVal;\n  }\n}\n\n/**\n  @} end of SinCos group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sin_cos_q31.c\n * Description:  Cosine & Sine calculation for Q31 values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupController\n */\n\n/**\n  @addtogroup SinCos\n  @{\n */\n\n/**\n  @brief         Q31 sin_cos function.\n  @param[in]     theta    scaled input value in degrees\n  @param[out]    pSinVal  points to processed sine output\n  @param[out]    pCosVal  points to processed cosine output\n  @return        none\n\n  The Q31 input value is in the range [-1 0.999999] and is mapped to a degree value in the range [-180 179].\n */\n\nvoid arm_sin_cos_q31(\n  q31_t theta,\n  q31_t * pSinVal,\n  q31_t * pCosVal)\n{\n  q31_t fract;                                     /* Temporary input, output variables */\n  uint16_t indexS, indexC;                         /* Index variable */\n  q31_t f1, f2, d1, d2;                            /* Two nearest output values */\n  q31_t Dn, Df;\n  q63_t temp;\n\n  /* Calculate the nearest index */\n  indexS = (uint32_t)theta >> CONTROLLER_Q31_SHIFT;\n  indexC = (indexS + 128) & 0x1ff;\n\n  /* Calculation of fractional value */\n  fract = (theta - (indexS << CONTROLLER_Q31_SHIFT)) << 8;\n\n  /* Read two nearest values of input value from the cos & sin tables */\n  f1 =  sinTable_q31[indexC  ];\n  f2 =  sinTable_q31[indexC+1];\n  d1 = -sinTable_q31[indexS  ];\n  d2 = -sinTable_q31[indexS+1];\n\n  Dn = 0x1921FB5; /* delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE */\n  Df = f2 - f1;   /* delta between the values of the functions */\n\n  temp = Dn * ((q63_t)d1 + d2);\n  temp = temp - ((q63_t)Df << 32);\n  temp = (q63_t)fract * (temp >> 31);\n  temp = temp + ((3 * (q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1)) * Dn);\n  temp = (q63_t)fract * (temp >> 31);\n  temp = temp + (q63_t)d1 * Dn;\n  temp = (q63_t)fract * (temp >> 31);\n\n  /* Calculation of cosine value */\n  *pCosVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);\n\n  /* Read two nearest values of input value from the cos & sin tables */\n  f1 = sinTable_q31[indexS ];\n  f2 = sinTable_q31[indexS+1];\n  d1 = sinTable_q31[indexC ];\n  d2 = sinTable_q31[indexC+1];\n\n  Df = f2 - f1; // delta between the values of the functions\n  temp = Dn * ((q63_t)d1 + d2);\n  temp = temp - ((q63_t)Df << 32);\n  temp = (q63_t)fract * (temp >> 31);\n  temp = temp + ((3 * (q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1)) * Dn);\n  temp = (q63_t)fract * (temp >> 31);\n  temp = temp + (q63_t)d1 * Dn;\n  temp = (q63_t)fract * (temp >> 31);\n\n  /* Calculation of sine value */\n  *pSinVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);\n}\n\n/**\n  @} end of SinCos group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPFastMath)\n\n\nfile(GLOB SRC \"./*_*.c\")\n\nadd_library(CMSISDSPFastMath STATIC)\n\ninclude(interpol)\ninterpol(CMSISDSPFastMath)\n\nif (CONFIGTABLE AND ALLFAST)\n    target_compile_definitions(CMSISDSPFastMath PUBLIC ARM_ALL_FAST_TABLES)  \nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_COS_F32)\ntarget_sources(CMSISDSPFastMath PRIVATE arm_cos_f32.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_COS_Q15)\ntarget_sources(CMSISDSPFastMath PRIVATE arm_cos_q15.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_COS_Q31)\ntarget_sources(CMSISDSPFastMath PRIVATE arm_cos_q31.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_SIN_F32)\ntarget_sources(CMSISDSPFastMath PRIVATE arm_sin_f32.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_SIN_Q15)\ntarget_sources(CMSISDSPFastMath PRIVATE arm_sin_q15.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_SIN_Q31)\ntarget_sources(CMSISDSPFastMath PRIVATE arm_sin_q31.c)\nendif()\n\ntarget_sources(CMSISDSPFastMath PRIVATE arm_sqrt_q15.c)\ntarget_sources(CMSISDSPFastMath PRIVATE arm_sqrt_q31.c)\n\n\nconfigdsp(CMSISDSPFastMath ..)\n\n### Includes\ntarget_include_directories(CMSISDSPFastMath PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/FastMathFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        FastMathFunctions.c\n * Description:  Combination of all fast math function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_cos_f32.c\"\n#include \"arm_cos_q15.c\"\n#include \"arm_cos_q31.c\"\n#include \"arm_sin_f32.c\"\n#include \"arm_sin_q15.c\"\n#include \"arm_sin_q31.c\"\n#include \"arm_sqrt_q15.c\"\n#include \"arm_sqrt_q31.c\"\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cos_f32.c\n * Description:  Fast cosine calculation for floating-point values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @defgroup cos Cosine\n\n  Computes the trigonometric cosine function using a combination of table lookup\n  and linear interpolation.  There are separate functions for\n  Q15, Q31, and floating-point data types.\n  The input to the floating-point version is in radians while the\n  fixed-point Q15 and Q31 have a scaled input with the range\n  [0 +0.9999] mapping to [0 2*pi).  The fixed-point range is chosen so that a\n  value of 2*pi wraps around to 0.\n\n  The implementation is based on table lookup using 256 values together with linear interpolation.\n  The steps used are:\n   -# Calculation of the nearest integer table index\n   -# Compute the fractional portion (fract) of the table index.\n   -# The final result equals <code>(1.0f-fract)*a + fract*b;</code>\n\n  where\n  <pre>\n     b = Table[index];\n     c = Table[index+1];\n  </pre>\n */\n\n/**\n  @addtogroup cos\n  @{\n */\n\n/**\n  @brief         Fast approximation to the trigonometric cosine function for floating-point data.\n  @param[in]     x  input value in radians\n  @return        cos(x)\n */\n\nfloat32_t arm_cos_f32(\n  float32_t x)\n{\n  float32_t cosVal, fract, in;                   /* Temporary input, output variables */\n  uint16_t index;                                /* Index variable */\n  float32_t a, b;                                /* Two nearest output values */\n  int32_t n;\n  float32_t findex;\n\n  /* input x is in radians */\n  /* Scale input to [0 1] range from [0 2*PI] , divide input by 2*pi, add 0.25 (pi/2) to read sine table */\n  in = x * 0.159154943092f + 0.25f;\n\n  /* Calculation of floor value of input */\n  n = (int32_t) in;\n\n  /* Make negative values towards -infinity */\n  if (in < 0.0f)\n  {\n    n--;\n  }\n\n  /* Map input value to [0 1] */\n  in = in - (float32_t) n;\n\n  /* Calculation of index of the table */\n  findex = (float32_t)FAST_MATH_TABLE_SIZE * in;\n  index = (uint16_t)findex;\n\n  /* when \"in\" is exactly 1, we need to rotate the index down to 0 */\n  if (index >= FAST_MATH_TABLE_SIZE) {\n    index = 0;\n    findex -= (float32_t)FAST_MATH_TABLE_SIZE;\n  }\n\n  /* fractional value calculation */\n  fract = findex - (float32_t) index;\n\n  /* Read two nearest values of input value from the cos table */\n  a = sinTable_f32[index];\n  b = sinTable_f32[index+1];\n\n  /* Linear interpolation process */\n  cosVal = (1.0f - fract) * a + fract * b;\n\n  /* Return output value */\n  return (cosVal);\n}\n\n/**\n  @} end of cos group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cos_q15.c\n * Description:  Fast cosine calculation for Q15 values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @addtogroup cos\n  @{\n */\n\n/**\n  @brief         Fast approximation to the trigonometric cosine function for Q15 data.\n  @param[in]     x  Scaled input value in radians\n  @return        cos(x)\n\n  The Q15 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*PI).\n */\n\nq15_t arm_cos_q15(\n  q15_t x)\n{\n  q15_t cosVal;                                  /* Temporary input, output variables */\n  int32_t index;                                 /* Index variable */\n  q15_t a, b;                                    /* Two nearest output values */\n  q15_t fract;                                   /* Temporary values for fractional values */\n\n  /* add 0.25 (pi/2) to read sine table */\n  x = (uint16_t)x + 0x2000;\n  if (x < 0)\n  { /* convert negative numbers to corresponding positive ones */\n    x = (uint16_t)x + 0x8000;\n  }\n\n  /* Calculate the nearest index */\n  index = (uint32_t)x >> FAST_MATH_Q15_SHIFT;\n\n  /* Calculation of fractional value */\n  fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9;\n\n  /* Read two nearest values of input value from the sin table */\n  a = sinTable_q15[index];\n  b = sinTable_q15[index+1];\n\n  /* Linear interpolation process */\n  cosVal = (q31_t) (0x8000 - fract) * a >> 16;\n  cosVal = (q15_t) ((((q31_t) cosVal << 16) + ((q31_t) fract * b)) >> 16);\n\n  /* Return output value */\n  return (cosVal << 1);\n}\n\n/**\n  @} end of cos group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cos_q31.c\n * Description:  Fast cosine calculation for Q31 values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @addtogroup cos\n  @{\n */\n\n/**\n  @brief         Fast approximation to the trigonometric cosine function for Q31 data.\n  @param[in]     x  Scaled input value in radians\n  @return        cos(x)\n\n  The Q31 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*PI).\n */\n\nq31_t arm_cos_q31(\n  q31_t x)\n{\n  q31_t cosVal;                                  /* Temporary input, output variables */\n  int32_t index;                                 /* Index variable */\n  q31_t a, b;                                    /* Two nearest output values */\n  q31_t fract;                                   /* Temporary values for fractional values */\n\n  /* add 0.25 (pi/2) to read sine table */\n  x = (uint32_t)x + 0x20000000;\n  if (x < 0)\n  { /* convert negative numbers to corresponding positive ones */\n    x = (uint32_t)x + 0x80000000;\n  }\n\n  /* Calculate the nearest index */\n  index = (uint32_t)x >> FAST_MATH_Q31_SHIFT;\n\n  /* Calculation of fractional value */\n  fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9;\n\n  /* Read two nearest values of input value from the sin table */\n  a = sinTable_q31[index];\n  b = sinTable_q31[index+1];\n\n  /* Linear interpolation process */\n  cosVal = (q63_t) (0x80000000 - fract) * a >> 32;\n  cosVal = (q31_t) ((((q63_t) cosVal << 32) + ((q63_t) fract * b)) >> 32);\n\n  /* Return output value */\n  return (cosVal << 1);\n}\n\n/**\n  @} end of cos group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sin_f32.c\n * Description:  Fast sine calculation for floating-point values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @defgroup sin Sine\n\n  Computes the trigonometric sine function using a combination of table lookup\n  and linear interpolation.  There are separate functions for\n  Q15, Q31, and floating-point data types.\n  The input to the floating-point version is in radians while the\n  fixed-point Q15 and Q31 have a scaled input with the range\n  [0 +0.9999] mapping to [0 2*pi).  The fixed-point range is chosen so that a\n  value of 2*pi wraps around to 0.\n\n  The implementation is based on table lookup using 256 values together with linear interpolation.\n  The steps used are:\n   -# Calculation of the nearest integer table index\n   -# Compute the fractional portion (fract) of the table index.\n   -# The final result equals <code>(1.0f-fract)*a + fract*b;</code>\n\n  where\n  <pre>\n     b = Table[index];\n     c = Table[index+1];\n  </pre>\n */\n\n/**\n  @addtogroup sin\n  @{\n */\n\n/**\n  @brief         Fast approximation to the trigonometric sine function for floating-point data.\n  @param[in]     x  input value in radians.\n  @return        sin(x)\n */\n\nfloat32_t arm_sin_f32(\n  float32_t x)\n{\n  float32_t sinVal, fract, in;                   /* Temporary input, output variables */\n  uint16_t index;                                /* Index variable */\n  float32_t a, b;                                /* Two nearest output values */\n  int32_t n;\n  float32_t findex;\n\n  /* input x is in radians */\n  /* Scale input to [0 1] range from [0 2*PI] , divide input by 2*pi */\n  in = x * 0.159154943092f;\n\n  /* Calculation of floor value of input */\n  n = (int32_t) in;\n\n  /* Make negative values towards -infinity */\n  if (in < 0.0f)\n  {\n    n--;\n  }\n\n  /* Map input value to [0 1] */\n  in = in - (float32_t) n;\n\n  /* Calculation of index of the table */\n  findex = (float32_t)FAST_MATH_TABLE_SIZE * in;\n  index = (uint16_t)findex;\n\n  /* when \"in\" is exactly 1, we need to rotate the index down to 0 */\n  if (index >= FAST_MATH_TABLE_SIZE) {\n    index = 0;\n    findex -= (float32_t)FAST_MATH_TABLE_SIZE;\n  }\n\n  /* fractional value calculation */\n  fract = findex - (float32_t) index;\n\n  /* Read two nearest values of input value from the sin table */\n  a = sinTable_f32[index];\n  b = sinTable_f32[index+1];\n\n  /* Linear interpolation process */\n  sinVal = (1.0f - fract) * a + fract * b;\n\n  /* Return output value */\n  return (sinVal);\n}\n\n/**\n  @} end of sin group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sin_q15.c\n * Description:  Fast sine calculation for Q15 values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @addtogroup sin\n  @{\n */\n\n/**\n  @brief         Fast approximation to the trigonometric sine function for Q15 data.\n  @param[in]     x  Scaled input value in radians\n  @return        sin(x)\n\n  The Q15 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*PI).\n */\n\nq15_t arm_sin_q15(\n  q15_t x)\n{\n  q15_t sinVal;                                  /* Temporary input, output variables */\n  int32_t index;                                 /* Index variable */\n  q15_t a, b;                                    /* Two nearest output values */\n  q15_t fract;                                   /* Temporary values for fractional values */\n\n  /* Calculate the nearest index */\n  index = (uint32_t)x >> FAST_MATH_Q15_SHIFT;\n\n  /* Calculation of fractional value */\n  fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9;\n\n  /* Read two nearest values of input value from the sin table */\n  a = sinTable_q15[index];\n  b = sinTable_q15[index+1];\n\n  /* Linear interpolation process */\n  sinVal = (q31_t) (0x8000 - fract) * a >> 16;\n  sinVal = (q15_t) ((((q31_t) sinVal << 16) + ((q31_t) fract * b)) >> 16);\n\n  /* Return output value */\n  return (sinVal << 1);\n}\n\n/**\n  @} end of sin group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sin_q31.c\n * Description:  Fast sine calculation for Q31 values\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @addtogroup sin\n  @{\n */\n\n/**\n  @brief         Fast approximation to the trigonometric sine function for Q31 data.\n  @param[in]     x  Scaled input value in radians\n  @return        sin(x)\n\n  The Q31 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*PI).\n */\n\nq31_t arm_sin_q31(\n  q31_t x)\n{\n  q31_t sinVal;                                  /* Temporary variables for input, output */\n  int32_t index;                                 /* Index variable */\n  q31_t a, b;                                    /* Two nearest output values */\n  q31_t fract;                                   /* Temporary values for fractional values */\n\n  /* Calculate the nearest index */\n  index = (uint32_t)x >> FAST_MATH_Q31_SHIFT;\n\n  /* Calculation of fractional value */\n  fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9;\n\n  /* Read two nearest values of input value from the sin table */\n  a = sinTable_q31[index];\n  b = sinTable_q31[index+1];\n\n  /* Linear interpolation process */\n  sinVal = (q63_t) (0x80000000 - fract) * a >> 32;\n  sinVal = (q31_t) ((((q63_t) sinVal << 32) + ((q63_t) fract * b)) >> 32);\n\n  /* Return output value */\n  return (sinVal << 1);\n}\n\n/**\n  @} end of sin group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sqrt_q15.c\n * Description:  Q15 square root function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @addtogroup SQRT\n  @{\n */\n\n/**\n  @brief         Q15 square root function.\n  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF\n  @param[out]    pOut  points to square root of input value\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : input value is positive\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0\n */\n\narm_status arm_sqrt_q15(\n  q15_t in,\n  q15_t * pOut)\n{\n  q31_t bits_val1;\n  q15_t number, temp1, var1, signBits1, half;\n  float32_t temp_float1;\n  union\n  {\n    q31_t fracval;\n    float32_t floatval;\n  } tempconv;\n\n  number = in;\n\n  /* If the input is a positive number then compute the signBits. */\n  if (number > 0)\n  {\n    signBits1 = __CLZ(number) - 17;\n\n    /* Shift by the number of signBits1 */\n    if ((signBits1 % 2) == 0)\n    {\n      number = number << signBits1;\n    }\n    else\n    {\n      number = number << (signBits1 - 1);\n    }\n\n    /* Calculate half value of the number */\n    half = number >> 1;\n    /* Store the number for later use */\n    temp1 = number;\n\n    /* Convert to float */\n    temp_float1 = number * 3.051757812500000e-005f;\n    /* Store as integer */\n    tempconv.floatval = temp_float1;\n    bits_val1 = tempconv.fracval;\n    /* Subtract the shifted value from the magic number to give intial guess */\n    bits_val1 = 0x5f3759df - (bits_val1 >> 1);  /* gives initial guess */\n    /* Store as float */\n    tempconv.fracval = bits_val1;\n    temp_float1 = tempconv.floatval;\n    /* Convert to integer format */\n    var1 = (q31_t) (temp_float1 * 16384);\n\n    /* 1st iteration */\n    var1 = ((q15_t) ((q31_t) var1 * (0x3000 -\n                                     ((q15_t)\n                                      ((((q15_t)\n                                         (((q31_t) var1 * var1) >> 15)) *\n                                        (q31_t) half) >> 15))) >> 15)) << 2;\n    /* 2nd iteration */\n    var1 = ((q15_t) ((q31_t) var1 * (0x3000 -\n                                     ((q15_t)\n                                      ((((q15_t)\n                                         (((q31_t) var1 * var1) >> 15)) *\n                                        (q31_t) half) >> 15))) >> 15)) << 2;\n    /* 3rd iteration */\n    var1 = ((q15_t) ((q31_t) var1 * (0x3000 -\n                                     ((q15_t)\n                                      ((((q15_t)\n                                         (((q31_t) var1 * var1) >> 15)) *\n                                        (q31_t) half) >> 15))) >> 15)) << 2;\n\n    /* Multiply the inverse square root with the original value */\n    var1 = ((q15_t) (((q31_t) temp1 * var1) >> 15)) << 1;\n\n    /* Shift the output down accordingly */\n    if ((signBits1 % 2) == 0)\n    {\n      var1 = var1 >> (signBits1 / 2);\n    }\n    else\n    {\n      var1 = var1 >> ((signBits1 - 1) / 2);\n    }\n    *pOut = var1;\n\n    return (ARM_MATH_SUCCESS);\n  }\n  /* If the number is a negative number then store zero as its square root value */\n  else\n  {\n    *pOut = 0;\n\n    return (ARM_MATH_ARGUMENT_ERROR);\n  }\n}\n\n/**\n  @} end of SQRT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_sqrt_q31.c\n * Description:  Q31 square root function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupFastMath\n */\n\n/**\n  @addtogroup SQRT\n  @{\n */\n\n/**\n  @brief         Q31 square root function.\n  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF\n  @param[out]    pOut  points to square root of input value\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : input value is positive\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0\n */\n\narm_status arm_sqrt_q31(\n  q31_t in,\n  q31_t * pOut)\n{\n  q31_t bits_val1;\n  q31_t number, temp1, var1, signBits1, half;\n  float32_t temp_float1;\n  union\n  {\n    q31_t fracval;\n    float32_t floatval;\n  } tempconv;\n\n  number = in;\n\n  /* If the input is a positive number then compute the signBits. */\n  if (number > 0)\n  {\n    signBits1 = __CLZ(number) - 1;\n\n    /* Shift by the number of signBits1 */\n    if ((signBits1 % 2) == 0)\n    {\n      number = number << signBits1;\n    }\n    else\n    {\n      number = number << (signBits1 - 1);\n    }\n\n    /* Calculate half value of the number */\n    half = number >> 1;\n    /* Store the number for later use */\n    temp1 = number;\n\n    /* Convert to float */\n    temp_float1 = number * 4.6566128731e-010f;\n    /* Store as integer */\n    tempconv.floatval = temp_float1;\n    bits_val1 = tempconv.fracval;\n    /* Subtract the shifted value from the magic number to give intial guess */\n    bits_val1 = 0x5f3759df - (bits_val1 >> 1);  /* gives initial guess */\n    /* Store as float */\n    tempconv.fracval = bits_val1;\n    temp_float1 = tempconv.floatval;\n    /* Convert to integer format */\n    var1 = (q31_t) (temp_float1 * 1073741824);\n\n    /* 1st iteration */\n    var1 = ((q31_t) ((q63_t) var1 * (0x30000000 -\n                                     ((q31_t)\n                                      ((((q31_t)\n                                         (((q63_t) var1 * var1) >> 31)) *\n                                        (q63_t) half) >> 31))) >> 31)) << 2;\n    /* 2nd iteration */\n    var1 = ((q31_t) ((q63_t) var1 * (0x30000000 -\n                                     ((q31_t)\n                                      ((((q31_t)\n                                         (((q63_t) var1 * var1) >> 31)) *\n                                        (q63_t) half) >> 31))) >> 31)) << 2;\n    /* 3rd iteration */\n    var1 = ((q31_t) ((q63_t) var1 * (0x30000000 -\n                                     ((q31_t)\n                                      ((((q31_t)\n                                         (((q63_t) var1 * var1) >> 31)) *\n                                        (q63_t) half) >> 31))) >> 31)) << 2;\n\n    /* Multiply the inverse square root with the original value */\n    var1 = ((q31_t) (((q63_t) temp1 * var1) >> 31)) << 1;\n\n    /* Shift the output down accordingly */\n    if ((signBits1 % 2) == 0)\n    {\n      var1 = var1 >> (signBits1 / 2);\n    }\n    else\n    {\n      var1 = var1 >> ((signBits1 - 1) / 2);\n    }\n    *pOut = var1;\n\n    return (ARM_MATH_SUCCESS);\n  }\n  /* If the number is a negative number then store zero as its square root value */\n  else\n  {\n    *pOut = 0;\n\n    return (ARM_MATH_ARGUMENT_ERROR);\n  }\n}\n\n/**\n  @} end of SQRT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPFiltering)\n\n\nadd_library(CMSISDSPFiltering STATIC)\n\ninclude(interpol)\ninterpol(CMSISDSPFiltering)\n\nconfigdsp(CMSISDSPFiltering ..)\n\nif (CONFIGTABLE AND ALLFAST)\ntarget_compile_definitions(CMSISDSPFiltering PUBLIC ARM_ALL_FAST_TABLES)  \nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_LMS_NORM_Q31)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_norm_init_q31.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFAST OR ARM_LMS_NORM_Q15)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_norm_init_q15.c)\nendif()\n\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_32x64_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_32x64_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_fast_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_fast_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df1_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df2T_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df2T_f64.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df2T_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df2T_init_f64.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_stereo_df2T_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_stereo_df2T_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_fast_opt_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_fast_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_fast_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_opt_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_opt_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_fast_opt_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_fast_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_fast_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_opt_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_opt_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_partial_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_conv_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_fast_opt_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_fast_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_fast_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_opt_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_opt_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_correlate_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_fast_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_fast_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_decimate_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_fast_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_fast_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_init_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_interpolate_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_interpolate_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_interpolate_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_interpolate_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_interpolate_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_interpolate_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_lattice_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_lattice_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_lattice_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_lattice_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_lattice_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_lattice_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_init_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_fir_sparse_q7.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_iir_lattice_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_iir_lattice_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_iir_lattice_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_iir_lattice_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_iir_lattice_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_iir_lattice_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_init_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_init_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_norm_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_norm_init_f32.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_norm_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_norm_q31.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_q15.c)\ntarget_sources(CMSISDSPFiltering PRIVATE arm_lms_q31.c)\n\n\n### Includes\ntarget_include_directories(CMSISDSPFiltering PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/FilteringFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        FilteringFunctions.c\n * Description:  Combination of all filtering function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_biquad_cascade_df1_32x64_init_q31.c\"\n#include \"arm_biquad_cascade_df1_32x64_q31.c\"\n#include \"arm_biquad_cascade_df1_f32.c\"\n#include \"arm_biquad_cascade_df1_fast_q15.c\"\n#include \"arm_biquad_cascade_df1_fast_q31.c\"\n#include \"arm_biquad_cascade_df1_init_f32.c\"\n#include \"arm_biquad_cascade_df1_init_q15.c\"\n#include \"arm_biquad_cascade_df1_init_q31.c\"\n#include \"arm_biquad_cascade_df1_q15.c\"\n#include \"arm_biquad_cascade_df1_q31.c\"\n#include \"arm_biquad_cascade_df2T_f32.c\"\n#include \"arm_biquad_cascade_df2T_f64.c\"\n#include \"arm_biquad_cascade_df2T_init_f32.c\"\n#include \"arm_biquad_cascade_df2T_init_f64.c\"\n#include \"arm_biquad_cascade_stereo_df2T_f32.c\"\n#include \"arm_biquad_cascade_stereo_df2T_init_f32.c\"\n#include \"arm_conv_f32.c\"\n#include \"arm_conv_fast_opt_q15.c\"\n#include \"arm_conv_fast_q15.c\"\n#include \"arm_conv_fast_q31.c\"\n#include \"arm_conv_opt_q15.c\"\n#include \"arm_conv_opt_q7.c\"\n#include \"arm_conv_partial_f32.c\"\n#include \"arm_conv_partial_fast_opt_q15.c\"\n#include \"arm_conv_partial_fast_q15.c\"\n#include \"arm_conv_partial_fast_q31.c\"\n#include \"arm_conv_partial_opt_q15.c\"\n#include \"arm_conv_partial_opt_q7.c\"\n#include \"arm_conv_partial_q15.c\"\n#include \"arm_conv_partial_q31.c\"\n#include \"arm_conv_partial_q7.c\"\n#include \"arm_conv_q15.c\"\n#include \"arm_conv_q31.c\"\n#include \"arm_conv_q7.c\"\n#include \"arm_correlate_f32.c\"\n#include \"arm_correlate_fast_opt_q15.c\"\n#include \"arm_correlate_fast_q15.c\"\n#include \"arm_correlate_fast_q31.c\"\n#include \"arm_correlate_opt_q15.c\"\n#include \"arm_correlate_opt_q7.c\"\n#include \"arm_correlate_q15.c\"\n#include \"arm_correlate_q31.c\"\n#include \"arm_correlate_q7.c\"\n#include \"arm_fir_decimate_f32.c\"\n#include \"arm_fir_decimate_fast_q15.c\"\n#include \"arm_fir_decimate_fast_q31.c\"\n#include \"arm_fir_decimate_init_f32.c\"\n#include \"arm_fir_decimate_init_q15.c\"\n#include \"arm_fir_decimate_init_q31.c\"\n#include \"arm_fir_decimate_q15.c\"\n#include \"arm_fir_decimate_q31.c\"\n#include \"arm_fir_f32.c\"\n#include \"arm_fir_fast_q15.c\"\n#include \"arm_fir_fast_q31.c\"\n#include \"arm_fir_init_f32.c\"\n#include \"arm_fir_init_q15.c\"\n#include \"arm_fir_init_q31.c\"\n#include \"arm_fir_init_q7.c\"\n#include \"arm_fir_interpolate_f32.c\"\n#include \"arm_fir_interpolate_init_f32.c\"\n#include \"arm_fir_interpolate_init_q15.c\"\n#include \"arm_fir_interpolate_init_q31.c\"\n#include \"arm_fir_interpolate_q15.c\"\n#include \"arm_fir_interpolate_q31.c\"\n#include \"arm_fir_lattice_f32.c\"\n#include \"arm_fir_lattice_init_f32.c\"\n#include \"arm_fir_lattice_init_q15.c\"\n#include \"arm_fir_lattice_init_q31.c\"\n#include \"arm_fir_lattice_q15.c\"\n#include \"arm_fir_lattice_q31.c\"\n#include \"arm_fir_q15.c\"\n#include \"arm_fir_q31.c\"\n#include \"arm_fir_q7.c\"\n#include \"arm_fir_sparse_f32.c\"\n#include \"arm_fir_sparse_init_f32.c\"\n#include \"arm_fir_sparse_init_q15.c\"\n#include \"arm_fir_sparse_init_q31.c\"\n#include \"arm_fir_sparse_init_q7.c\"\n#include \"arm_fir_sparse_q15.c\"\n#include \"arm_fir_sparse_q31.c\"\n#include \"arm_fir_sparse_q7.c\"\n#include \"arm_iir_lattice_f32.c\"\n#include \"arm_iir_lattice_init_f32.c\"\n#include \"arm_iir_lattice_init_q15.c\"\n#include \"arm_iir_lattice_init_q31.c\"\n#include \"arm_iir_lattice_q15.c\"\n#include \"arm_iir_lattice_q31.c\"\n#include \"arm_lms_f32.c\"\n#include \"arm_lms_init_f32.c\"\n#include \"arm_lms_init_q15.c\"\n#include \"arm_lms_init_q31.c\"\n#include \"arm_lms_norm_f32.c\"\n#include \"arm_lms_norm_init_f32.c\"\n#include \"arm_lms_norm_init_q15.c\"\n#include \"arm_lms_norm_init_q31.c\"\n#include \"arm_lms_norm_q15.c\"\n#include \"arm_lms_norm_q31.c\"\n#include \"arm_lms_q15.c\"\n#include \"arm_lms_q31.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_32x64_init_q31.c\n * Description:  High precision Q31 Biquad cascade filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1_32x64\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 Biquad cascade 32x64 filter.\n  @param[in,out] S           points to an instance of the high precision Q31 Biquad cascade filter structure\n  @param[in]     numStages    number of 2nd order stages in the filter\n  @param[in]     pCoeffs      points to the filter coefficients\n  @param[in]     pState       points to the state buffer\n  @param[in]     postShift    Shift to be applied after the accumulator.  Varies according to the coefficients format\n  @return        none\n\n  @par           Coefficient and State Ordering\n                   The coefficients are stored in the array <code>pCoeffs</code> in the following order:\n  <pre>\n      {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}\n  </pre>\n                   where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,\n                   <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,\n                   and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.\n  @par\n                   The <code>pState</code> points to state variables array and size of each state variable is 1.63 format.\n                   Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.\n                   The state variables are arranged in the state array as:\n  <pre>\n      {x[n-1], x[n-2], y[n-1], y[n-2]}\n  </pre>\n                   The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.\n                   The state array has a total length of <code>4*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n */\n\nvoid arm_biquad_cas_df1_32x64_init_q31(\n        arm_biquad_cas_df1_32x64_ins_q31 * S,\n        uint8_t numStages,\n  const q31_t * pCoeffs,\n        q63_t * pState,\n        uint8_t postShift)\n{\n  /* Assign filter stages */\n  S->numStages = numStages;\n\n  /* Assign postShift to be applied to the output */\n  S->postShift = postShift;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always 4 * numStages */\n  memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q63_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of BiquadCascadeDF1_32x64 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_32x64_q31.c\n * Description:  High precision Q31 Biquad cascade filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup BiquadCascadeDF1_32x64 High Precision Q31 Biquad Cascade Filter\n\n  This function implements a high precision Biquad cascade filter which operates on\n  Q31 data values.  The filter coefficients are in 1.31 format and the state variables\n  are in 1.63 format.  The double precision state variables reduce quantization noise\n  in the filter and provide a cleaner output.\n  These filters are particularly useful when implementing filters in which the\n  singularities are close to the unit circle.  This is common for low pass or high\n  pass filters with very low cutoff frequencies.\n\n  The function operates on blocks of input and output data\n  and each call to the function processes <code>blockSize</code> samples through\n  the filter. <code>pSrc</code> and <code>pDst</code> points to input and output arrays\n  containing <code>blockSize</code> Q31 values.\n\n  @par           Algorithm\n                   Each Biquad stage implements a second order filter using the difference equation:\n  <pre>\n      y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n  </pre>\n                   A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage.\n                   \\image html Biquad.gif \"Single Biquad filter stage\"\n                   Coefficients <code>b0, b1 and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.\n                   Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.\n                   Pay careful attention to the sign of the feedback coefficients.\n                   Some design tools use the difference equation\n  <pre>\n      y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]\n  </pre>\n                   In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.\n  @par\n                   Higher order filters are realized as a cascade of second order sections.\n                   <code>numStages</code> refers to the number of second order stages used.\n                   For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.\n                   \\image html BiquadCascade.gif \"8th order filter using a cascade of Biquad stages\"\n                   A 9th order filter would be realized with <code>numStages=5</code> second order stages\n                   with the coefficients for one of the stages configured as a first order filter\n                   (<code>b2=0</code> and <code>a2=0</code>).\n  @par\n                   The <code>pState</code> points to state variables array.\n                   Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code> and each state variable in 1.63 format to improve precision.\n                   The state variables are arranged in the array as:\n  <pre>\n      {x[n-1], x[n-2], y[n-1], y[n-2]}\n  </pre>\n  @par\n                   The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.\n                   The state array has a total length of <code>4*numStages</code> values of data in 1.63 format.\n                   The state variables are updated after each block of data is processed, the coefficients are untouched.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.\n\n  @par           Init Function\n                   There is also an associated initialization function which performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numStages, pCoeffs, postShift, pState. Also set all of the values in pState to zero.\n\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Set the values in the state buffer to zeros before static initialization.\n                   For example, to statically initialize the filter instance structure use\n  <pre>\n      arm_biquad_cas_df1_32x64_ins_q31 S1 = {numStages, pState, pCoeffs, postShift};\n  </pre>\n                   where <code>numStages</code> is the number of Biquad stages in the filter;\n                   <code>pState</code> is the address of the state buffer;\n                   <code>pCoeffs</code> is the address of the coefficient buffer;\n                   <code>postShift</code> shift to be applied which is described in detail below.\n  @par           Fixed-Point Behavior\n                   Care must be taken while using Biquad Cascade 32x64 filter function.\n                   Following issues must be considered:\n                   - Scaling of coefficients\n                   - Filter gain\n                   - Overflow and saturation\n\n  @par\n                   Filter coefficients are represented as fractional values and\n                   restricted to lie in the range <code>[-1 +1)</code>.\n                   The processing function has an additional scaling parameter <code>postShift</code>\n                   which allows the filter coefficients to exceed the range <code>[+1 -1)</code>.\n                   At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.\n                   \\image html BiquadPostshift.gif \"Fixed-point Biquad with shift by postShift bits after accumulator\"\n                   This essentially scales the filter coefficients by <code>2^postShift</code>.\n                   For example, to realize the coefficients\n  <pre>\n     {1.5, -0.8, 1.2, 1.6, -0.9}\n  </pre>\n                   set the Coefficient array to:\n  <pre>\n     {0.75, -0.4, 0.6, 0.8, -0.45}\n  </pre>\n                   and set <code>postShift=1</code>\n  @par\n                   The second thing to keep in mind is the gain through the filter.\n                   The frequency response of a Biquad filter is a function of its coefficients.\n                   It is possible for the gain through the filter to exceed 1.0 meaning that the\n                   filter increases the amplitude of certain frequencies.\n                   This means that an input signal with amplitude < 1.0 may result in an output > 1.0\n                   and these are saturated or overflowed based on the implementation of the filter.\n                   To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0\n                   or the input signal must be scaled down so that the combination of input and filter are never overflowed.\n  @par\n                   The third item to consider is the overflow and saturation behavior of the fixed-point Q31 version.\n                   This is described in the function specific documentation below.\n */\n\n/**\n  @addtogroup BiquadCascadeDF1_32x64\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 Biquad cascade 32x64 filter.\n  @param[in]     S         points to an instance of the high precision Q31 Biquad cascade filter\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process\n  @return        none\n\n  @par           Details\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clip.\n                   In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25).\n                   After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by <code>postShift</code> bits and the result truncated to\n                   1.31 format by discarding the low 32 bits.\n  @par\n                   Two related functions are provided in the CMSIS DSP library.\n                   - \\ref arm_biquad_cascade_df1_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q63 accumulator.\n                   - \\ref arm_biquad_cascade_df1_fast_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q31 accumulator.\n */\n\nvoid arm_biquad_cas_df1_32x64_q31(\n  const arm_biquad_cas_df1_32x64_ins_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pIn = pSrc;                             /* input pointer initialization */\n        q31_t *pOut = pDst;                            /* output pointer initialization */\n        q63_t *pState = S->pState;                     /* state pointer initialization */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* coeff pointer initialization */\n        q63_t acc;                                     /* accumulator */\n        q31_t Xn1, Xn2;                                /* Input Filter state variables */\n        q63_t Yn1, Yn2;                                /* Output Filter state variables */\n        q31_t b0, b1, b2, a1, a2;                      /* Filter coefficients */\n        q31_t Xn;                                      /* temporary input */\n        int32_t shift = (int32_t) S->postShift + 1;    /* Shift to be applied to the output */\n        uint32_t sample, stage = S->numStages;         /* loop counters */\n        q31_t acc_l, acc_h;                            /* temporary output */\n        uint32_t uShift = ((uint32_t) S->postShift + 1U);\n        uint32_t lShift = 32U - uShift;                /* Shift to be applied to the output */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the state values */\n    Xn1 = (q31_t) (pState[0]);\n    Xn2 = (q31_t) (pState[1]);\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Apply loop unrolling and compute 4 output values simultaneously. */\n    /* Variable acc hold output value that is being computed and stored in destination buffer\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    sample = blockSize >> 2U;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n\n      /* acc =  b0 * x[n] */\n      acc = (q63_t) Xn * b0;\n\n      /* acc +=  b1 * x[n-1] */\n      acc += (q63_t) Xn1 * b1;\n\n      /* acc +=  b[2] * x[n-2] */\n      acc += (q63_t) Xn2 * b2;\n\n      /* acc +=  a1 * y[n-1] */\n      acc += mult32x64(Yn1, a1);\n\n      /* acc +=  a2 * y[n-2] */\n      acc += mult32x64(Yn2, a2);\n\n      /* The result is converted to 1.63 , Yn2 variable is reused */\n      Yn2 = acc << shift;\n\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store the output in the destination buffer in 1.31 format. */\n      *pOut = acc_h;\n\n      /* Read the second input into Xn2, to reuse the value */\n      Xn2 = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n\n      /* acc +=  b1 * x[n-1] */\n      acc = (q63_t) Xn * b1;\n\n      /* acc =  b0 * x[n] */\n      acc += (q63_t) Xn2 * b0;\n\n      /* acc +=  b[2] * x[n-2] */\n      acc += (q63_t) Xn1 * b2;\n\n      /* acc +=  a1 * y[n-1] */\n      acc += mult32x64(Yn2, a1);\n\n      /* acc +=  a2 * y[n-2] */\n      acc += mult32x64(Yn1, a2);\n\n      /* The result is converted to 1.63, Yn1 variable is reused */\n      Yn1 = acc << shift;\n\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Read the third input into Xn1, to reuse the value */\n      Xn1 = *pIn++;\n\n      /* The result is converted to 1.31 */\n      /* Store the output in the destination buffer. */\n      *(pOut + 1U) = acc_h;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n\n      /* acc =  b0 * x[n] */\n      acc = (q63_t) Xn1 * b0;\n\n      /* acc +=  b1 * x[n-1] */\n      acc += (q63_t) Xn2 * b1;\n\n      /* acc +=  b[2] * x[n-2] */\n      acc += (q63_t) Xn * b2;\n\n      /* acc +=  a1 * y[n-1] */\n      acc += mult32x64(Yn1, a1);\n\n      /* acc +=  a2 * y[n-2] */\n      acc += mult32x64(Yn2, a2);\n\n      /* The result is converted to 1.63, Yn2 variable is reused  */\n      Yn2 = acc << shift;\n\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store the output in the destination buffer in 1.31 format. */\n      *(pOut + 2U) = acc_h;\n\n      /* Read the fourth input into Xn, to reuse the value */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      acc = (q63_t) Xn * b0;\n\n      /* acc +=  b1 * x[n-1] */\n      acc += (q63_t) Xn1 * b1;\n\n      /* acc +=  b[2] * x[n-2] */\n      acc += (q63_t) Xn2 * b2;\n\n      /* acc +=  a1 * y[n-1] */\n      acc += mult32x64(Yn2, a1);\n\n      /* acc +=  a2 * y[n-2] */\n      acc += mult32x64(Yn1, a2);\n\n      /* The result is converted to 1.63, Yn1 variable is reused  */\n      Yn1 = acc << shift;\n\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store the output in the destination buffer in 1.31 format. */\n      *(pOut + 3U) = acc_h;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n\n      /* update output pointer */\n      pOut += 4U;\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    sample = blockSize & 0x3U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n\n      /* acc =  b0 * x[n] */\n      acc = (q63_t) Xn * b0;\n      /* acc +=  b1 * x[n-1] */\n      acc += (q63_t) Xn1 * b1;\n      /* acc +=  b[2] * x[n-2] */\n      acc += (q63_t) Xn2 * b2;\n      /* acc +=  a1 * y[n-1] */\n      acc += mult32x64(Yn1, a1);\n      /* acc +=  a2 * y[n-2] */\n      acc += mult32x64(Yn2, a2);\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n\n      /* The result is converted to 1.63, Yn1 variable is reused  */\n      Yn1 = acc << shift;\n\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store the output in the destination buffer in 1.31 format. */\n      *pOut++ = acc_h;\n      /* Yn1 = acc << shift; */\n\n      /* Store the output in the destination buffer in 1.31 format. */\n/*    *pOut++ = (q31_t) (acc >> (32 - shift));  */\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* The first stage output is given as input to the second stage. */\n    pIn = pDst;\n\n    /* Reset to destination buffer working pointer */\n    pOut = pDst;\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = (q63_t) Xn1;\n    *pState++ = (q63_t) Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n\n}\n\n/**\n  @} end of BiquadCascadeDF1_32x64 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_f32.c\n * Description:  Processing function for the floating-point Biquad cascade DirectFormI(DF1) filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup BiquadCascadeDF1 Biquad Cascade IIR Filters Using Direct Form I Structure\n\n  This set of functions implements arbitrary order recursive (IIR) filters.\n  The filters are implemented as a cascade of second order Biquad sections.\n  The functions support Q15, Q31 and floating-point data types.\n  Fast version of Q15 and Q31 also available.\n\n  The functions operate on blocks of input and output data and each call to the function\n  processes <code>blockSize</code> samples through the filter.\n  <code>pSrc</code> points to the array of input data and\n  <code>pDst</code> points to the array of output data.\n  Both arrays contain <code>blockSize</code> values.\n\n  @par           Algorithm\n                   Each Biquad stage implements a second order filter using the difference equation:\n  <pre>\n      y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n  </pre>\n                  A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage.\n                  \\image html Biquad.gif \"Single Biquad filter stage\"\n                  Coefficients <code>b0, b1 and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.\n                  Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.\n                  Pay careful attention to the sign of the feedback coefficients.\n                  Some design tools use the difference equation\n  <pre>\n      y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]\n  </pre>\n                  In this case the feedback coefficients <code>a1</code> and <code>a2</code>\n                  must be negated when used with the CMSIS DSP Library.\n\n  @par\n                   Higher order filters are realized as a cascade of second order sections.\n                   <code>numStages</code> refers to the number of second order stages used.\n                   For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.\n                   \\image html BiquadCascade.gif \"8th order filter using a cascade of Biquad stages\"\n                   A 9th order filter would be realized with <code>numStages=5</code> second order stages with the coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).\n\n  @par\n                   The <code>pState</code> points to state variables array.\n                   Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.\n                   The state variables are arranged in the <code>pState</code> array as:\n  <pre>\n      {x[n-1], x[n-2], y[n-1], y[n-2]}\n  </pre>\n\n  @par\n                   The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.\n                   The state array has a total length of <code>4*numStages</code> values.\n                   The state variables are updated after each block of data is processed, the coefficients are untouched.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n\n  @par           Init Function\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numStages, pCoeffs, pState. Also set all of the values in pState to zero.\n\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Set the values in the state buffer to zeros before static initialization.\n                   The code below statically initializes each of the 3 different data type filter instance structures\n  <pre>\n      arm_biquad_casd_df1_inst_f32 S1 = {numStages, pState, pCoeffs};\n      arm_biquad_casd_df1_inst_q15 S2 = {numStages, pState, pCoeffs, postShift};\n      arm_biquad_casd_df1_inst_q31 S3 = {numStages, pState, pCoeffs, postShift};\n  </pre>\n                   where <code>numStages</code> is the number of Biquad stages in the filter;\n                   <code>pState</code> is the address of the state buffer;\n                   <code>pCoeffs</code> is the address of the coefficient buffer;\n                   <code>postShift</code> shift to be applied.\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the Q15 and Q31 versions of the Biquad Cascade filter functions.\n                   Following issues must be considered:\n                   - Scaling of coefficients\n                   - Filter gain\n                   - Overflow and saturation\n\n  @par           Scaling of coefficients\n                   Filter coefficients are represented as fractional values and\n                   coefficients are restricted to lie in the range <code>[-1 +1)</code>.\n                   The fixed-point functions have an additional scaling parameter <code>postShift</code>\n                   which allow the filter coefficients to exceed the range <code>[+1 -1)</code>.\n                   At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.\n                   \\image html BiquadPostshift.gif \"Fixed-point Biquad with shift by postShift bits after accumulator\"\n                   This essentially scales the filter coefficients by <code>2^postShift</code>.\n                   For example, to realize the coefficients\n  <pre>\n     {1.5, -0.8, 1.2, 1.6, -0.9}\n  </pre>\n                   set the pCoeffs array to:\n  <pre>\n     {0.75, -0.4, 0.6, 0.8, -0.45}\n  </pre>\n                   and set <code>postShift=1</code>\n\n  @par           Filter gain\n                   The frequency response of a Biquad filter is a function of its coefficients.\n                   It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies.\n                   This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter.\n                   To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed.\n\n  @par           Overflow and saturation\n                   For Q15 and Q31 versions, it is described separately as part of the function specific documentation below.\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point Biquad cascade filter.\n  @param[in]     S         points to an instance of the floating-point Biquad cascade structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n\n#if defined(ARM_MATH_NEON) \nvoid arm_biquad_cascade_df1_f32(\n  const arm_biquad_casd_df1_inst_f32 * S,\n  const float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n\n  const float32_t *pIn = pSrc;                         /*  source pointer            */\n  float32_t *pOut = pDst;                        /*  destination pointer       */\n  float32_t *pState = S->pState;                 /*  pState pointer            */\n  const float32_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */\n  float32_t acc;                                 /*  Simulates the accumulator */\n  \n  uint32_t sample, stage = S->numStages;         /*  loop counters             */\n\n  float32x4_t Xn;\n  float32x2_t Yn;\n  float32x2_t a;\n  float32x4_t b;\n  \n  float32x4_t x,tmp;\n  float32x2_t t;\n  float32x2x2_t y;\n\n  float32_t Xns;\n\n  while (stage > 0U)\n  {\n    /* Reading the coefficients */\n    Xn = vld1q_f32(pState);\n    Yn = vld1_f32(pState + 2);\n\n    b = vld1q_f32(pCoeffs);\n    b = vrev64q_f32(b);  \n    b = vcombine_f32(vget_high_f32(b), vget_low_f32(b));\n\n    a = vld1_f32(pCoeffs + 3);\n    a = vrev64_f32(a);\n    b[0] = 0.0;\n    pCoeffs += 5;\n    \n    /* Reading the pState values */\n   \n    /* Apply loop unrolling and compute 4 output values simultaneously. */\n    /*      The variable acc hold output values that are being computed:\n     *\n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n\n    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n     ** a second loop below computes the remaining 1 to 3 samples. */\n    sample = blockSize >> 2U;\n\n    while (sample > 0U)\n    {\n      /* Read the first 4 inputs */\n      x = vld1q_f32(pIn);\n\n      pIn += 4;\n\n      tmp = vextq_f32(Xn, x, 1);\n      t = vmul_f32(vget_high_f32(b), vget_high_f32(tmp));\n      t = vmla_f32(t, vget_low_f32(b), vget_low_f32(tmp));\n      t = vmla_f32(t, a, Yn);\n      t = vpadd_f32(t, t);\n      Yn = vext_f32(Yn, t, 1);\n\n      tmp = vextq_f32(Xn, x, 2);\n      t = vmul_f32(vget_high_f32(b), vget_high_f32(tmp));\n      t = vmla_f32(t, vget_low_f32(b), vget_low_f32(tmp));\n      t = vmla_f32(t, a, Yn);\n      t = vpadd_f32(t, t);\n      Yn = vext_f32(Yn, t, 1);\n\n      y.val[0] = Yn;\n\n      tmp = vextq_f32(Xn, x, 3);\n      t = vmul_f32(vget_high_f32(b), vget_high_f32(tmp));\n      t = vmla_f32(t, vget_low_f32(b), vget_low_f32(tmp));\n      t = vmla_f32(t, a, Yn);\n      t = vpadd_f32(t, t);\n      Yn = vext_f32(Yn, t, 1);\n\n      Xn = x;\n      t = vmul_f32(vget_high_f32(b), vget_high_f32(Xn));\n      t = vmla_f32(t, vget_low_f32(b), vget_low_f32(Xn));\n      t = vmla_f32(t, a, Yn);\n      t = vpadd_f32(t, t);\n      Yn = vext_f32(Yn, t, 1);\n      \n      y.val[1] = Yn;\n\n      tmp = vcombine_f32(y.val[0], y.val[1]);\n\n      /* Store the 4 outputs and increment the pointer */\n      vst1q_f32(pOut, tmp);\n      pOut += 4;\n\n      /* Decrement the loop counter */\n      sample--;\n    }\n\n    /* If the block size is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    sample = blockSize & 0x3U;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xns = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc =  (b[1] * Xn[2]) + (b[2] * Xn[3]) + (b[3] * Xns) + (a[0] * Yn[0]) + (a[1] * Yn[1]);\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = acc;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:    */\n      /* Xn2 = Xn1   */\n      /* Xn1 = Xn    */\n      /* Yn2 = Yn1   */\n      /* Yn1 = acc   */\n      Xn[2] = Xn[3];\n      Xn[3] = Xns;\n      Yn[0] = Yn[1];\n      Yn[1] = acc;\n\n      /* Decrement the loop counter */\n      sample--;\n\n    }\n\n    vst1q_f32(pState,vcombine_f32(vrev64_f32(vget_high_f32(Xn)),vrev64_f32(Yn)));\n    pState += 4;\n    /*  Store the updated state variables back into the pState array */\n   \n    /*  The first stage goes from the input buffer to the output buffer. */\n    /*  Subsequent numStages  occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset the output pointer */\n    pOut = pDst;\n\n    /* Decrement the loop counter */\n    stage--;\n  }\n}\n\n#else\nvoid arm_biquad_cascade_df1_f32(\n  const arm_biquad_casd_df1_inst_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n  const float32_t *pIn = pSrc;                         /* Source pointer */\n        float32_t *pOut = pDst;                        /* Destination pointer */\n        float32_t *pState = S->pState;                 /* pState pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t acc;                                 /* Accumulator */\n        float32_t b0, b1, b2, a1, a2;                  /* Filter coefficients */\n        float32_t Xn1, Xn2, Yn1, Yn2;                  /* Filter pState variables */\n        float32_t Xn;                                  /* Temporary input */\n        uint32_t sample, stage = S->numStages;         /* Loop counters */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the pState values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Apply loop unrolling and compute 4 output values simultaneously. */\n    /* Variable acc hold output values that are being computed:\n     *\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    sample = blockSize >> 2U;\n\n    while (sample > 0U)\n    {\n      /* Read the first input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      Yn2 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2);\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn2;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n\n      /* Read the second input */\n      Xn2 = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      Yn1 = (b0 * Xn2) + (b1 * Xn) + (b2 * Xn1) + (a1 * Yn2) + (a2 * Yn1);\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn1;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n\n      /* Read the third input */\n      Xn1 = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      Yn2 = (b0 * Xn1) + (b1 * Xn2) + (b2 * Xn) + (a1 * Yn1) + (a2 * Yn2);\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn2;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n\n      /* Read the forth input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      Yn1 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn2) + (a2 * Yn1);\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn1;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    sample = blockSize & 0x3U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2);\n\n      /* Store output in destination buffer. */\n      *pOut++ = acc;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = acc;\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n    /* The first stage goes from the input buffer to the output buffer. */\n    /* Subsequent numStages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset output pointer */\n    pOut = pDst;\n\n    /* decrement loop counter */\n    stage--;\n\n  } while (stage > 0U);\n\n}\n\n#endif /* #if defined(ARM_MATH_NEON) */\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_fast_q15.c\n * Description:  Fast processing function for the Q15 Biquad cascade filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 Biquad cascade filter (fast variant).\n  @param[in]     S         points to an instance of the Q15 Biquad cascade structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process per call\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This fast version uses a 32-bit accumulator with 2.30 format.\n                   The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around and distorts the result.\n                   In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25).\n                   The 2.30 accumulator is then shifted by <code>postShift</code> bits and the result truncated to 1.15 format by discarding the low 16 bits.\n @remark\n                   Refer to \\ref arm_biquad_cascade_df1_q15() for a slower implementation of this function\n                   which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure.\n                   Use the function \\ref arm_biquad_cascade_df1_init_q15() to initialize the filter structure.\n */\n\nvoid arm_biquad_cascade_df1_fast_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n  const q15_t *pIn = pSrc;                             /* Source pointer */\n        q15_t *pOut = pDst;                            /* Destination pointer */\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t acc;                                     /* Accumulator */\n        q31_t in;                                      /* Temporary variable to hold input value */\n        q31_t out;                                     /* Temporary variable to hold output value */\n        q31_t b0;                                      /* Temporary variable to hold bo value */\n        q31_t b1, a1;                                  /* Filter coefficients */\n        q31_t state_in, state_out;                     /* Filter state variables */\n        int32_t shift = (int32_t) (15 - S->postShift); /* Post shift */\n        uint32_t sample, stage = S->numStages;         /* Loop counters */\n\n  do\n  {\n    /* Read the b0 and 0 coefficients using SIMD  */\n    b0 = read_q15x2_ia ((q15_t **) &pCoeffs);\n\n    /* Read the b1 and b2 coefficients using SIMD */\n    b1 = read_q15x2_ia ((q15_t **) &pCoeffs);\n\n    /* Read the a1 and a2 coefficients using SIMD */\n    a1 = read_q15x2_ia ((q15_t **) &pCoeffs);\n\n    /* Read the input state values from the state buffer:  x[n-1], x[n-2] */\n    state_in = read_q15x2_ia (&pState);\n\n    /* Read the output state values from the state buffer:  y[n-1], y[n-2] */\n    state_out = read_q15x2_da (&pState);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Apply loop unrolling and compute 2 output values simultaneously. */\n    /* Variable acc hold output values that are being computed:\n     *\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n\n    /* Loop unrolling: Compute 2 outputs at a time */\n    sample = blockSize >> 1U;\n\n    while (sample > 0U)\n    {\n\n      /* Read the input */\n      in = read_q15x2_ia ((q15_t **) &pIn);\n\n      /* out =  b0 * x[n] + 0 * 0 */\n      out = __SMUAD(b0, in);\n      /* acc =  b1 * x[n-1] + acc +=  b2 * x[n-2] + out */\n      acc = __SMLAD(b1, state_in, out);\n      /* acc +=  a1 * y[n-1] + acc +=  a2 * y[n-2] */\n      acc = __SMLAD(a1, state_out, acc);\n\n      /* The result is converted from 3.29 to 1.31 and then saturation is applied */\n      out = __SSAT((acc >> shift), 16);\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */\n      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */\n\n#ifndef  ARM_MATH_BIG_ENDIAN\n      state_in  = __PKHBT(in, state_in, 16);\n      state_out = __PKHBT(out, state_out, 16);\n#else\n      state_in  = __PKHBT(state_in >> 16, (in >> 16), 16);\n      state_out = __PKHBT(state_out >> 16, (out), 16);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* out =  b0 * x[n] + 0 * 0 */\n      out = __SMUADX(b0, in);\n      /* acc0 =  b1 * x[n-1] , acc0 +=  b2 * x[n-2] + out */\n      acc = __SMLAD(b1, state_in, out);\n      /* acc +=  a1 * y[n-1] + acc +=  a2 * y[n-2] */\n      acc = __SMLAD(a1, state_out, acc);\n\n      /* The result is converted from 3.29 to 1.31 and then saturation is applied */\n      out = __SSAT((acc >> shift), 16);\n\n      /* Store the output in the destination buffer. */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pOut, __PKHBT(state_out, out, 16));\n#else\n      write_q15x2_ia (&pOut, __PKHBT(out, state_out >> 16, 16));\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */\n      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      state_in  = __PKHBT(in >> 16, state_in, 16);\n      state_out = __PKHBT(out, state_out, 16);\n#else\n      state_in  = __PKHBT(state_in >> 16, in, 16);\n      state_out = __PKHBT(state_out >> 16, out, 16);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* Decrement loop counter */\n      sample--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    sample = (blockSize & 0x1U);\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      in = *pIn++;\n\n      /* out =  b0 * x[n] + 0 * 0 */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      out = __SMUAD(b0, in);\n#else\n      out = __SMUADX(b0, in);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* acc =  b1 * x[n-1], acc +=  b2 * x[n-2] + out */\n      acc = __SMLAD(b1, state_in, out);\n      /* acc +=  a1 * y[n-1] + acc +=  a2 * y[n-2] */\n      acc = __SMLAD(a1, state_out, acc);\n\n      /* The result is converted from 3.29 to 1.31 and then saturation is applied */\n      out = __SSAT((acc >> shift), 16);\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = (q15_t) out;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */\n      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      state_in = __PKHBT(in, state_in, 16);\n      state_out = __PKHBT(out, state_out, 16);\n#else\n      state_in = __PKHBT(state_in >> 16, in, 16);\n      state_out = __PKHBT(state_out >> 16, out, 16);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* The first stage goes from the input buffer to the output buffer. */\n    /* Subsequent (numStages - 1) occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset the output pointer */\n    pOut = pDst;\n\n    /* Store the updated state variables back into the state array */\n    write_q15x2_ia(&pState, state_in);\n    write_q15x2_ia(&pState, state_out);\n\n    /* Decrement loop counter */\n    stage--;\n\n  } while (stage > 0U);\n}\n\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_fast_q31.c\n * Description:  Processing function for the Q31 Fast Biquad cascade DirectFormI(DF1) filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 Biquad cascade filter (fast variant).\n  @param[in]     S         points to an instance of the Q31 Biquad cascade structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process per call\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This function is optimized for speed at the expense of fixed-point precision and overflow protection.\n                   The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.\n                   These intermediate results are added to a 2.30 accumulator.\n                   Finally, the accumulator is saturated and converted to a 1.31 result.\n                   The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result.\n                   In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). Use the intialization function\n                   arm_biquad_cascade_df1_init_q31() to initialize filter structure.\n  @remark\n                   Refer to \\ref arm_biquad_cascade_df1_q31() for a slower implementation of this function\n                   which uses 64-bit accumulation to provide higher precision. Both the slow and the fast versions use the same instance structure.\n                   Use the function \\ref arm_biquad_cascade_df1_init_q31() to initialize the filter structure.\n */\n\nvoid arm_biquad_cascade_df1_fast_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n  const q31_t *pIn = pSrc;                             /* Source pointer */\n        q31_t *pOut = pDst;                            /* Destination pointer */\n        q31_t *pState = S->pState;                     /* pState pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t acc = 0;                                 /* Accumulator */\n        q31_t b0, b1, b2, a1, a2;                      /* Filter coefficients */\n        q31_t Xn1, Xn2, Yn1, Yn2;                      /* Filter pState variables */\n        q31_t Xn;                                      /* Temporary input */\n        int32_t shift = (int32_t) S->postShift + 1;    /* Shift to be applied to the output */\n        uint32_t sample, stage = S->numStages;         /* Loop counters */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the pState values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Apply loop unrolling and compute 4 output values simultaneously. */\n    /* Variables acc ... acc3 hold output values that are being computed:\n     *\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    sample = blockSize >> 2U;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      /* acc = (q31_t) (((q63_t) b1 * Xn1) >> 32);*/\n      mult_32x32_keep32_R(acc, b1, Xn1);\n      /* acc +=  b1 * x[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b0 * (Xn))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b0, Xn);\n      /* acc +=  b[2] * x[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b2, Xn2);\n      /* acc +=  a1 * y[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a1, Yn1);\n      /* acc +=  a2 * y[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a2, Yn2);\n\n      /* The result is converted to 1.31 , Yn2 variable is reused */\n      Yn2 = acc << shift;\n\n      /* Read the second input */\n      Xn2 = *(pIn + 1U);\n\n      /* Store the output in the destination buffer. */\n      *pOut = Yn2;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      /* acc = (q31_t) (((q63_t) b0 * (Xn2)) >> 32);*/\n      mult_32x32_keep32_R(acc, b0, Xn2);\n      /* acc +=  b1 * x[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b1, Xn);\n      /* acc +=  b[2] * x[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b2, Xn1);\n      /* acc +=  a1 * y[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a1, Yn2);\n      /* acc +=  a2 * y[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a2, Yn1);\n\n      /* The result is converted to 1.31, Yn1 variable is reused  */\n      Yn1 = acc << shift;\n\n      /* Read the third input  */\n      Xn1 = *(pIn + 2U);\n\n      /* Store the output in the destination buffer. */\n      *(pOut + 1U) = Yn1;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      /* acc = (q31_t) (((q63_t) b0 * (Xn1)) >> 32);*/\n      mult_32x32_keep32_R(acc, b0, Xn1);\n      /* acc +=  b1 * x[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b1, Xn2);\n      /* acc +=  b[2] * x[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b2, Xn);\n      /* acc +=  a1 * y[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a1, Yn1);\n      /* acc +=  a2 * y[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a2, Yn2);\n\n      /* The result is converted to 1.31, Yn2 variable is reused  */\n      Yn2 = acc << shift;\n\n      /* Read the forth input */\n      Xn = *(pIn + 3U);\n\n      /* Store the output in the destination buffer. */\n      *(pOut + 2U) = Yn2;\n      pIn += 4U;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      /* acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/\n      mult_32x32_keep32_R(acc, b0, Xn);\n      /* acc +=  b1 * x[n-1] */\n      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b1, Xn1);\n      /* acc +=  b[2] * x[n-2] */\n      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b2, Xn2);\n      /* acc +=  a1 * y[n-1] */\n      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a1, Yn2);\n      /* acc +=  a2 * y[n-2] */\n      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a2, Yn1);\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      Xn2 = Xn1;\n\n      /* The result is converted to 1.31, Yn1 variable is reused  */\n      Yn1 = acc << shift;\n\n      /* Xn1 = Xn */\n      Xn1 = Xn;\n\n      /* Store the output in the destination buffer. */\n      *(pOut + 3U) = Yn1;\n      pOut += 4U;\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    sample = (blockSize & 0x3U);\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      /* acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/\n      mult_32x32_keep32_R(acc, b0, Xn);\n      /* acc +=  b1 * x[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b1, Xn1);\n      /* acc +=  b[2] * x[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, b2, Xn2);\n      /* acc +=  a1 * y[n-1] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a1, Yn1);\n      /* acc +=  a2 * y[n-2] */\n      /* acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/\n      multAcc_32x32_keep32_R(acc, a2, Yn2);\n\n      /* The result is converted to 1.31  */\n      acc = acc << shift;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = acc;\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = acc;\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* The first stage goes from the input buffer to the output buffer. */\n    /* Subsequent stages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset to destination pointer */\n    pOut = pDst;\n\n    /* Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n}\n\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_init_f32.c\n * Description:  Floating-point Biquad cascade DirectFormI(DF1) filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point Biquad cascade filter.\n  @param[in,out] S           points to an instance of the floating-point Biquad cascade structure.\n  @param[in]     numStages   number of 2nd order stages in the filter.\n  @param[in]     pCoeffs     points to the filter coefficients.\n  @param[in]     pState      points to the state buffer.\n  @return        none\n\n  @par           Coefficient and State Ordering\n                   The coefficients are stored in the array <code>pCoeffs</code> in the following order:\n  <pre>\n      {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}\n  </pre>\n\n  @par\n                   where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,\n                   <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,\n                   and so on. The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.\n  @par\n                   The <code>pState</code> is a pointer to state array.\n                   Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.\n                   The state variables are arranged in the <code>pState</code> array as:\n  <pre>\n      {x[n-1], x[n-2], y[n-1], y[n-2]}\n  </pre>\n                   The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.\n                   The state array has a total length of <code>4*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n */\n\nvoid arm_biquad_cascade_df1_init_f32(\n        arm_biquad_casd_df1_inst_f32 * S,\n        uint8_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState)\n{\n  /* Assign filter stages */\n  S->numStages = numStages;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always 4 * numStages */\n  memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_init_q15.c\n * Description:  Q15 Biquad cascade DirectFormI(DF1) filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 Biquad cascade filter.\n  @param[in,out] S           points to an instance of the Q15 Biquad cascade structure.\n  @param[in]     numStages   number of 2nd order stages in the filter.\n  @param[in]     pCoeffs     points to the filter coefficients.\n  @param[in]     pState      points to the state buffer.\n  @param[in]     postShift   Shift to be applied to the accumulator result. Varies according to the coefficients format\n  @return        none\n\n  @par           Coefficient and State Ordering\n                   The coefficients are stored in the array <code>pCoeffs</code> in the following order:\n  <pre>\n      {b10, 0, b11, b12, a11, a12, b20, 0, b21, b22, a21, a22, ...}\n  </pre>\n  @par\n                   where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,\n                   <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,\n                   and so on.  The <code>pCoeffs</code> array contains a total of <code>6*numStages</code> values.\n                   The zero coefficient between <code>b1</code> and <code>b2</code> facilities  use of 16-bit SIMD instructions on the Cortex-M4.\n  @par\n                   The state variables are stored in the array <code>pState</code>.\n                   Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.\n                   The state variables are arranged in the <code>pState</code> array as:\n  <pre>\n      {x[n-1], x[n-2], y[n-1], y[n-2]}\n  </pre>\n                   The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.\n                   The state array has a total length of <code>4*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n */\n\nvoid arm_biquad_cascade_df1_init_q15(\n        arm_biquad_casd_df1_inst_q15 * S,\n        uint8_t numStages,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        int8_t postShift)\n{\n  /* Assign filter stages */\n  S->numStages = numStages;\n\n  /* Assign postShift to be applied to the output */\n  S->postShift = postShift;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always 4 * numStages */\n  memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q15_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_init_q31.c\n * Description:  Q31 Biquad cascade DirectFormI(DF1) filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 Biquad cascade filter.\n  @param[in,out] S           points to an instance of the Q31 Biquad cascade structure.\n  @param[in]     numStages   number of 2nd order stages in the filter.\n  @param[in]     pCoeffs     points to the filter coefficients.\n  @param[in]     pState      points to the state buffer.\n  @param[in]     postShift   Shift to be applied after the accumulator.  Varies according to the coefficients format\n  @return        none\n\n  @par           Coefficient and State Ordering\n                   The coefficients are stored in the array <code>pCoeffs</code> in the following order:\n  <pre>\n      {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}\n  </pre>\n  @par\n                   where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,\n                   <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,\n                   and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.\n  @par\n                   The <code>pState</code> points to state variables array.\n                   Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.\n                   The state variables are arranged in the <code>pState</code> array as:\n  <pre>\n      {x[n-1], x[n-2], y[n-1], y[n-2]}\n  </pre>\n                   The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.\n                   The state array has a total length of <code>4*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n */\n\nvoid arm_biquad_cascade_df1_init_q31(\n        arm_biquad_casd_df1_inst_q31 * S,\n        uint8_t numStages,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        int8_t postShift)\n{\n  /* Assign filter stages */\n  S->numStages = numStages;\n\n  /* Assign postShift to be applied to the output */\n  S->postShift = postShift;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always 4 * numStages */\n  memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q31_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_q15.c\n * Description:  Processing function for the Q15 Biquad cascade DirectFormI(DF1) filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 Biquad cascade filter.\n  @param[in]     S         points to an instance of the Q15 Biquad cascade structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the location where the output result is written\n  @param[in]     blockSize number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   The accumulator is then shifted by <code>postShift</code> bits to truncate the result to 1.15 format by discarding the low 16 bits.\n                   Finally, the result is saturated to 1.15 format.\n  @remark\n                   Refer to \\ref arm_biquad_cascade_df1_fast_q15() for a faster but less precise implementation of this filter.\n */\n\nvoid arm_biquad_cascade_df1_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n\n\n#if defined (ARM_MATH_DSP)\n\n  const q15_t *pIn = pSrc;                             /* Source pointer */\n        q15_t *pOut = pDst;                            /* Destination pointer */\n        q31_t in;                                      /* Temporary variable to hold input value */\n        q31_t out;                                     /* Temporary variable to hold output value */\n        q31_t b0;                                      /* Temporary variable to hold bo value */\n        q31_t b1, a1;                                  /* Filter coefficients */\n        q31_t state_in, state_out;                     /* Filter state variables */\n        q31_t acc_l, acc_h;\n        q63_t acc;                                     /* Accumulator */\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        int32_t lShift = (15 - (int32_t) S->postShift);       /* Post shift */\n        uint32_t sample, stage = (uint32_t) S->numStages;     /* Stage loop counter */\n        int32_t uShift = (32 - lShift);\n\n  do\n  {\n    /* Read the b0 and 0 coefficients using SIMD  */\n    b0 = read_q15x2_ia ((q15_t **) &pCoeffs);\n\n    /* Read the b1 and b2 coefficients using SIMD */\n    b1 = read_q15x2_ia ((q15_t **) &pCoeffs);\n\n    /* Read the a1 and a2 coefficients using SIMD */\n    a1 = read_q15x2_ia ((q15_t **) &pCoeffs);\n\n    /* Read the input state values from the state buffer:  x[n-1], x[n-2] */\n    state_in = read_q15x2_ia (&pState);\n\n    /* Read the output state values from the state buffer:  y[n-1], y[n-2] */\n    state_out = read_q15x2_da (&pState);\n\n    /* Apply loop unrolling and compute 2 output values simultaneously. */\n    /*      The variable acc hold output values that are being computed:\n     *\n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n    sample = blockSize >> 1U;\n\n    /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.\n     ** a second loop below computes the remaining 1 sample. */\n    while (sample > 0U)\n    {\n\n      /* Read the input */\n      in = read_q15x2_ia ((q15_t **) &pIn);\n\n      /* out =  b0 * x[n] + 0 * 0 */\n      out = __SMUAD(b0, in);\n\n      /* acc +=  b1 * x[n-1] +  b2 * x[n-2] + out */\n      acc = __SMLALD(b1, state_in, out);\n      /* acc +=  a1 * y[n-1] +  a2 * y[n-2] */\n      acc = __SMLALD(a1, state_out, acc);\n\n      /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      out = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      out = __SSAT(out, 16);\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */\n      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */\n\n#ifndef  ARM_MATH_BIG_ENDIAN\n      state_in  = __PKHBT(in, state_in, 16);\n      state_out = __PKHBT(out, state_out, 16);\n#else\n      state_in  = __PKHBT(state_in >> 16, (in >> 16), 16);\n      state_out = __PKHBT(state_out >> 16, (out), 16);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* out =  b0 * x[n] + 0 * 0 */\n      out = __SMUADX(b0, in);\n      /* acc +=  b1 * x[n-1] +  b2 * x[n-2] + out */\n      acc = __SMLALD(b1, state_in, out);\n      /* acc +=  a1 * y[n-1] + a2 * y[n-2] */\n      acc = __SMLALD(a1, state_out, acc);\n\n      /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      out = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      out = __SSAT(out, 16);\n\n      /* Store the output in the destination buffer. */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pOut, __PKHBT(state_out, out, 16));\n#else\n      write_q15x2_ia (&pOut, __PKHBT(out, state_out >> 16, 16));\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */\n      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      state_in  = __PKHBT(in >> 16, state_in, 16);\n      state_out = __PKHBT(out, state_out, 16);\n#else\n      state_in  = __PKHBT(state_in >> 16, in, 16);\n      state_out = __PKHBT(state_out >> 16, out, 16);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* Decrement loop counter */\n      sample--;\n    }\n\n    /* If the blockSize is not a multiple of 2, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n\n    if ((blockSize & 0x1U) != 0U)\n    {\n      /* Read the input */\n      in = *pIn++;\n\n      /* out =  b0 * x[n] + 0 * 0 */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      out = __SMUAD(b0, in);\n#else\n      out = __SMUADX(b0, in);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* acc =  b1 * x[n-1] + b2 * x[n-2] + out */\n      acc = __SMLALD(b1, state_in, out);\n      /* acc +=  a1 * y[n-1] + a2 * y[n-2] */\n      acc = __SMLALD(a1, state_out, acc);\n\n      /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */\n      /* Calc lower part of acc */\n      acc_l = acc & 0xffffffff;\n\n      /* Calc upper part of acc */\n      acc_h = (acc >> 32) & 0xffffffff;\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      out = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      out = __SSAT(out, 16);\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = (q15_t) out;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */\n      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      state_in = __PKHBT(in, state_in, 16);\n      state_out = __PKHBT(out, state_out, 16);\n#else\n      state_in = __PKHBT(state_in >> 16, in, 16);\n      state_out = __PKHBT(state_out >> 16, out, 16);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n    }\n\n    /* The first stage goes from the input wire to the output wire.  */\n    /* Subsequent numStages occur in-place in the output wire  */\n    pIn = pDst;\n\n    /* Reset the output pointer */\n    pOut = pDst;\n\n    /* Store the updated state variables back into the state array */\n    write_q15x2_ia (&pState, state_in);\n    write_q15x2_ia (&pState, state_out);\n\n    /* Decrement loop counter */\n    stage--;\n\n  } while (stage > 0U);\n\n#else\n\n  const q15_t *pIn = pSrc;                             /* Source pointer */\n        q15_t *pOut = pDst;                            /* Destination pointer */\n        q15_t b0, b1, b2, a1, a2;                      /* Filter coefficients */\n        q15_t Xn1, Xn2, Yn1, Yn2;                      /* Filter state variables */\n        q15_t Xn;                                      /* temporary input */\n        q63_t acc;                                     /* Accumulator */\n        int32_t shift = (15 - (int32_t) S->postShift); /* Post shift */\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        uint32_t sample, stage = (uint32_t) S->numStages;     /* Stage loop counter */\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    pCoeffs++;  // skip the 0 coefficient\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the state values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n    /* The variables acc holds the output value that is computed:\n     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n\n    sample = blockSize;\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      /* acc =  b0 * x[n] */\n      acc = (q31_t) b0 *Xn;\n\n      /* acc +=  b1 * x[n-1] */\n      acc += (q31_t) b1 *Xn1;\n      /* acc +=  b[2] * x[n-2] */\n      acc += (q31_t) b2 *Xn2;\n      /* acc +=  a1 * y[n-1] */\n      acc += (q31_t) a1 *Yn1;\n      /* acc +=  a2 * y[n-2] */\n      acc += (q31_t) a2 *Yn2;\n\n      /* The result is converted to 1.31  */\n      acc = __SSAT((acc >> shift), 16);\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as:  */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = (q15_t) acc;\n\n      /* Store the output in the destination buffer. */\n      *pOut++ = (q15_t) acc;\n\n      /* decrement the loop counter */\n      sample--;\n    }\n\n    /*  The first stage goes from the input buffer to the output buffer. */\n    /*  Subsequent stages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset to destination pointer */\n    pOut = pDst;\n\n    /*  Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n  } while (--stage);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df1_q31.c\n * Description:  Processing function for the Q31 Biquad cascade filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF1\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 Biquad cascade filter.\n  @param[in]     S         points to an instance of the Q31 Biquad cascade structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clip.\n                   In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25).\n                   After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by <code>postShift</code> bits and the result truncated to\n                   1.31 format by discarding the low 32 bits.\n  @remark\n                   Refer to \\ref arm_biquad_cascade_df1_fast_q31() for a faster but less precise implementation of this filter.\n */\n\nvoid arm_biquad_cascade_df1_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n  const q31_t *pIn = pSrc;                             /* Source pointer */\n        q31_t *pOut = pDst;                            /* Destination pointer */\n        q31_t *pState = S->pState;                     /* pState pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q63_t acc;                                     /* Accumulator */\n        q31_t b0, b1, b2, a1, a2;                      /* Filter coefficients */\n        q31_t Xn1, Xn2, Yn1, Yn2;                      /* Filter pState variables */\n        q31_t Xn;                                      /* Temporary input */\n        uint32_t uShift = ((uint32_t) S->postShift + 1U);\n        uint32_t lShift = 32U - uShift;                /* Shift to be applied to the output */\n        uint32_t sample, stage = S->numStages;         /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc_l, acc_h;                            /* temporary output variables */\n#endif\n\n  do\n  {\n    /* Reading the coefficients */\n    b0 = *pCoeffs++;\n    b1 = *pCoeffs++;\n    b2 = *pCoeffs++;\n    a1 = *pCoeffs++;\n    a2 = *pCoeffs++;\n\n    /* Reading the pState values */\n    Xn1 = pState[0];\n    Xn2 = pState[1];\n    Yn1 = pState[2];\n    Yn2 = pState[3];\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Apply loop unrolling and compute 4 output values simultaneously. */\n    /* Variable acc hold output values that are being computed:\n     *\n     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]\n     */\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    sample = blockSize >> 2U;\n\n    while (sample > 0U)\n    {\n      /* Read the first input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = ((q63_t) b0 * Xn) + ((q63_t) b1 * Xn1) + ((q63_t) b2 * Xn2) + ((q63_t) a1 * Yn1) + ((q63_t) a2 * Yn2);\n\n      /* The result is converted to 1.31 , Yn2 variable is reused */\n      acc_l = (acc      ) & 0xffffffff; /* Calc lower part of acc */\n      acc_h = (acc >> 32) & 0xffffffff; /* Calc upper part of acc */\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn2;\n\n      /* Read the second input */\n      Xn2 = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = ((q63_t) b0 * Xn2) + ((q63_t) b1 * Xn) + ((q63_t) b2 * Xn1) + ((q63_t) a1 * Yn2) + ((q63_t) a2 * Yn1);\n\n      /* The result is converted to 1.31, Yn1 variable is reused  */\n      acc_l = (acc      ) & 0xffffffff; /* Calc lower part of acc */\n      acc_h = (acc >> 32) & 0xffffffff; /* Calc upper part of acc */\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn1;\n\n      /* Read the third input */\n      Xn1 = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = ((q63_t) b0 * Xn1) + ((q63_t) b1 * Xn2) + ((q63_t) b2 * Xn) + ((q63_t) a1 * Yn1) + ((q63_t) a2 * Yn2);\n\n      /* The result is converted to 1.31, Yn2 variable is reused  */\n      acc_l = (acc      ) & 0xffffffff; /* Calc lower part of acc */\n      acc_h = (acc >> 32) & 0xffffffff; /* Calc upper part of acc */\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn2;\n\n      /* Read the forth input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = ((q63_t) b0 * Xn) + ((q63_t) b1 * Xn1) + ((q63_t) b2 * Xn2) + ((q63_t) a1 * Yn2) + ((q63_t) a2 * Yn1);\n\n      /* The result is converted to 1.31, Yn1 variable is reused  */\n      acc_l = (acc      ) & 0xffffffff; /* Calc lower part of acc */\n      acc_h = (acc >> 32) & 0xffffffff; /* Calc upper part of acc */\n\n      /* Apply shift for lower part of acc and upper part of acc */\n      Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n      /* Store output in destination buffer. */\n      *pOut++ = Yn1;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    sample = blockSize & 0x3U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (sample > 0U)\n    {\n      /* Read the input */\n      Xn = *pIn++;\n\n      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */\n      acc = ((q63_t) b0 * Xn) + ((q63_t) b1 * Xn1) + ((q63_t) b2 * Xn2) + ((q63_t) a1 * Yn1) + ((q63_t) a2 * Yn2);\n\n      /* The result is converted to 1.31  */\n      acc = acc >> lShift;\n\n      /* Store output in destination buffer. */\n      *pOut++ = (q31_t) acc;\n\n      /* Every time after the output is computed state should be updated. */\n      /* The states should be updated as: */\n      /* Xn2 = Xn1 */\n      /* Xn1 = Xn  */\n      /* Yn2 = Yn1 */\n      /* Yn1 = acc */\n      Xn2 = Xn1;\n      Xn1 = Xn;\n      Yn2 = Yn1;\n      Yn1 = (q31_t) acc;\n\n      /* decrement loop counter */\n      sample--;\n    }\n\n    /* Store the updated state variables back into the pState array */\n    *pState++ = Xn1;\n    *pState++ = Xn2;\n    *pState++ = Yn1;\n    *pState++ = Yn2;\n\n    /* The first stage goes from the input buffer to the output buffer. */\n    /* Subsequent numStages occur in-place in the output buffer */\n    pIn = pDst;\n\n    /* Reset output pointer */\n    pOut = pDst;\n\n    /* decrement loop counter */\n    stage--;\n\n  } while (stage > 0U);\n\n}\n\n/**\n  @} end of BiquadCascadeDF1 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df2T_f32.c\n * Description:  Processing function for floating-point transposed direct form II Biquad cascade filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n*/\n\n/**\n  @addtogroup BiquadCascadeDF2T\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point transposed direct form II Biquad cascade filter.\n  @param[in]     S         points to an instance of the filter data structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process\n  @return        none\n */\n\n#if defined(ARM_MATH_NEON) \n\nvoid arm_biquad_cascade_df2T_f32(\n  const arm_biquad_cascade_df2T_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n   const float32_t *pIn = pSrc;                   /*  source pointer            */\n   float32_t *pOut = pDst;                        /*  destination pointer       */\n   float32_t *pState = S->pState;                 /*  State pointer             */\n   const float32_t *pCoeffs = S->pCoeffs;         /*  coefficient pointer       */\n   float32_t acc1;                                /*  accumulator               */\n   float32_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */\n   float32_t Xn1;                                 /*  temporary input           */\n   float32_t d1, d2;                              /*  state variables           */\n   uint32_t sample, stageCnt,stage = S->numStages;         /*   loop counters   */\n\n\n   float32_t Xn2, Xn3, Xn4;                       /*  Input State variables     */\n   float32_t acc2, acc3, acc4;                    /*  accumulator               */\n\n\n   float32_t p0, p1, p2, p3, p4, A1;\n\n   float32x4_t XnV, YnV;\n   float32x4x2_t dV;\n   float32x4_t zeroV = vdupq_n_f32(0.0);\n   float32x4_t t1,t2,t3,t4,b1V,b2V,a1V,a2V,s;\n\n   /* Loop unrolling. Compute 4 outputs at a time */\n   stageCnt = stage >> 2;\n\n   while (stageCnt > 0U)\n   {\n      /* Reading the coefficients */\n      t1 = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      t2 = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      t3 = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      t4 = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      b1V = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      b2V = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      a1V = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      a2V = vld1q_f32(pCoeffs);\n      pCoeffs += 4;\n\n      /* Reading the state values */\n      dV = vld2q_f32(pState);\n\n      sample = blockSize;\n      \n      while (sample > 0U) {\n         /* y[n] = b0 * x[n] + d1 */\n         /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n         /* d2 = b2 * x[n] + a2 * y[n] */\n\n         XnV = vdupq_n_f32(*pIn++);\n\n         s = dV.val[0];\n         YnV = s;\n\n         s = vextq_f32(zeroV,dV.val[0],3);\n         YnV = vmlaq_f32(YnV, t1, s);\n\n         s = vextq_f32(zeroV,dV.val[0],2);\n         YnV = vmlaq_f32(YnV, t2, s);\n\n         s = vextq_f32(zeroV,dV.val[0],1);\n         YnV = vmlaq_f32(YnV, t3, s);\n\n         YnV = vmlaq_f32(YnV, t4, XnV);\n\n         s = vextq_f32(XnV,YnV,3);\n\n         dV.val[0] = vmlaq_f32(dV.val[1], s, b1V);\n         dV.val[0] = vmlaq_f32(dV.val[0], YnV, a1V);\n\n         dV.val[1] = vmulq_f32(s, b2V);\n         dV.val[1] = vmlaq_f32(dV.val[1], YnV, a2V);\n\n         *pOut++ = YnV[3];\n\n         sample--;\n      }\n     \n      /* Store the updated state variables back into the state array */\n      vst2q_f32(pState,dV);\n      pState += 8;\n\n      /* The current stage input is given as the output to the next stage */\n      pIn = pDst;\n\n      /*Reset the output working pointer */\n      pOut = pDst;\n\n      /* decrement the loop counter */\n      stageCnt--;\n\n   } \n\n   /* Tail */\n   stageCnt = stage & 3;\n   \n   while (stageCnt > 0U)\n   {\n      /* Reading the coefficients */\n      b0 = *pCoeffs++;\n      b1 = *pCoeffs++;\n      b2 = *pCoeffs++;\n      a1 = *pCoeffs++;\n      a2 = *pCoeffs++;\n\n      /*Reading the state values */\n      d1 = pState[0];\n      d2 = pState[1];\n\n      sample = blockSize;\n\n      while (sample > 0U)\n      {\n         /* Read the input */\n         Xn1 = *pIn++;\n\n         /* y[n] = b0 * x[n] + d1 */\n         acc1 = (b0 * Xn1) + d1;\n\n         /* Store the result in the accumulator in the destination buffer. */\n         *pOut++ = acc1;\n\n         /* Every time after the output is computed state should be updated. */\n         /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n         d1 = ((b1 * Xn1) + (a1 * acc1)) + d2;\n\n         /* d2 = b2 * x[n] + a2 * y[n] */\n         d2 = (b2 * Xn1) + (a2 * acc1);\n\n         /* decrement the loop counter */\n         sample--;\n      }\n\n      /* Store the updated state variables back into the state array */\n      *pState++ = d1;\n      *pState++ = d2;\n\n      /* The current stage input is given as the output to the next stage */\n      pIn = pDst;\n\n      /*Reset the output working pointer */\n      pOut = pDst;\n\n      /* decrement the loop counter */\n      stageCnt--;\n   }\n}\n#else\nLOW_OPTIMIZATION_ENTER\nvoid arm_biquad_cascade_df2T_f32(\n  const arm_biquad_cascade_df2T_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n  const float32_t *pIn = pSrc;                         /* Source pointer */\n        float32_t *pOut = pDst;                        /* Destination pointer */\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t acc1;                                /* Accumulator */\n        float32_t b0, b1, b2, a1, a2;                  /* Filter coefficients */\n        float32_t Xn1;                                 /* Temporary input */\n        float32_t d1, d2;                              /* State variables */\n        uint32_t sample, stage = S->numStages;         /* Loop counters */\n\n  do\n  {\n     /* Reading the coefficients */\n     b0 = pCoeffs[0];\n     b1 = pCoeffs[1];\n     b2 = pCoeffs[2];\n     a1 = pCoeffs[3];\n     a2 = pCoeffs[4];\n\n     /* Reading the state values */\n     d1 = pState[0];\n     d2 = pState[1];\n\n     pCoeffs += 5U;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n     /* Loop unrolling: Compute 16 outputs at a time */\n     sample = blockSize >> 4U;\n\n     while (sample > 0U) {\n\n       /* y[n] = b0 * x[n] + d1 */\n       /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n       /* d2 = b2 * x[n] + a2 * y[n] */\n\n/*  1 */\n       Xn1 = *pIn++;\n\n       acc1 = b0 * Xn1 + d1;\n\n       d1 = b1 * Xn1 + d2;\n       d1 += a1 * acc1;\n\n       d2 = b2 * Xn1;\n       d2 += a2 * acc1;\n\n       *pOut++ = acc1;\n\n/*  2 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/*  3 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/*  4 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/*  5 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/*  6 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/*  7 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/*  8 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/*  9 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/* 10 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/* 11 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/* 12 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/* 13 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/* 14 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/* 15 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n/* 16 */\n         Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n        /* decrement loop counter */\n        sample--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      sample = blockSize & 0xFU;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (sample > 0U) {\n        Xn1 = *pIn++;\n\n        acc1 = b0 * Xn1 + d1;\n\n        d1 = b1 * Xn1 + d2;\n        d1 += a1 * acc1;\n\n        d2 = b2 * Xn1;\n        d2 += a2 * acc1;\n\n        *pOut++ = acc1;\n\n        /* decrement loop counter */\n        sample--;\n      }\n\n      /* Store the updated state variables back into the state array */\n      pState[0] = d1;\n      pState[1] = d2;\n\n      pState += 2U;\n\n      /* The current stage input is given as the output to the next stage */\n      pIn = pDst;\n\n      /* Reset the output working pointer */\n      pOut = pDst;\n\n      /* decrement loop counter */\n      stage--;\n\n   } while (stage > 0U);\n\n}\nLOW_OPTIMIZATION_EXIT\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of BiquadCascadeDF2T group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df2T_f64.c\n * Description:  Processing function for floating-point transposed direct form II Biquad cascade filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n*/\n\n/**\n  @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure\n\n  This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure.\n  The filters are implemented as a cascade of second order Biquad sections.\n  These functions provide a slight memory savings as compared to the direct form I Biquad filter functions.\n  Only floating-point data is supported.\n\n  This function operate on blocks of input and output data and each call to the function\n  processes <code>blockSize</code> samples through the filter.\n  <code>pSrc</code> points to the array of input data and\n  <code>pDst</code> points to the array of output data.\n  Both arrays contain <code>blockSize</code> values.\n\n  @par           Algorithm\n                   Each Biquad stage implements a second order filter using the difference equation:\n  <pre>\n     y[n] = b0 * x[n] + d1\n     d1 = b1 * x[n] + a1 * y[n] + d2\n     d2 = b2 * x[n] + a2 * y[n]\n  </pre>\n                   where d1 and d2 represent the two state values.\n  @par\n                   A Biquad filter using a transposed Direct Form II structure is shown below.\n                   \\image html BiquadDF2Transposed.gif \"Single transposed Direct Form II Biquad\"\n                   Coefficients <code>b0, b1, and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.\n                   Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.\n                   Pay careful attention to the sign of the feedback coefficients.\n                   Some design tools flip the sign of the feedback coefficients:\n  <pre>\n     y[n] = b0 * x[n] + d1;\n     d1 = b1 * x[n] - a1 * y[n] + d2;\n     d2 = b2 * x[n] - a2 * y[n];\n  </pre>\n                   In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.\n  @par\n                   Higher order filters are realized as a cascade of second order sections.\n                   <code>numStages</code> refers to the number of second order stages used.\n                   For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.\n                   A 9th order filter would be realized with <code>numStages=5</code> second order stages with the\n                   coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).\n  @par\n                   <code>pState</code> points to the state variable array.\n                   Each Biquad stage has 2 state variables <code>d1</code> and <code>d2</code>.\n                   The state variables are arranged in the <code>pState</code> array as:\n  <pre>\n      {d11, d12, d21, d22, ...}\n  </pre>\n                   where <code>d1x</code> refers to the state variables for the first Biquad and\n                   <code>d2x</code> refers to the state variables for the second Biquad.\n                   The state array has a total length of <code>2*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n  @par\n                   The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II.\n                   The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types.\n                   That is why the Direct Form I structure supports Q15 and Q31 data types.\n                   The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables <code>d1</code> and <code>d2</code>.\n                   Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad.\n                   The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.\n\n  @par           Init Functions\n                   There is also an associated initialization function.\n                   The initialization function performs following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numStages, pCoeffs, pState. Also set all of the values in pState to zero.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Set the values in the state buffer to zeros before static initialization.\n                   For example, to statically initialize the instance structure use\n  <pre>\n      arm_biquad_cascade_df2T_instance_f64 S1 = {numStages, pState, pCoeffs};\n      arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};\n  </pre>\n                   where <code>numStages</code> is the number of Biquad stages in the filter;\n                   <code>pState</code> is the address of the state buffer.\n                   <code>pCoeffs</code> is the address of the coefficient buffer;\n*/\n\n/**\n  @addtogroup BiquadCascadeDF2T\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point transposed direct form II Biquad cascade filter.\n  @param[in]     S         points to an instance of the filter data structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process\n  @return        none\n */\n\nLOW_OPTIMIZATION_ENTER\nvoid arm_biquad_cascade_df2T_f64(\n  const arm_biquad_cascade_df2T_instance_f64 * S,\n        float64_t * pSrc,\n        float64_t * pDst,\n        uint32_t blockSize)\n{\n\n        float64_t *pIn = pSrc;                         /* Source pointer */\n        float64_t *pOut = pDst;                        /* Destination pointer */\n        float64_t *pState = S->pState;                 /* State pointer */\n        float64_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float64_t acc1;                                /* Accumulator */\n        float64_t b0, b1, b2, a1, a2;                  /* Filter coefficients */\n        float64_t Xn1;                                 /* Temporary input */\n        float64_t d1, d2;                              /* State variables */\n        uint32_t sample, stage = S->numStages;         /* Loop counters */\n\n\n   do\n   {\n      /* Reading the coefficients */\n      b0 = pCoeffs[0];\n      b1 = pCoeffs[1];\n      b2 = pCoeffs[2];\n      a1 = pCoeffs[3];\n      a2 = pCoeffs[4];\n\n      /* Reading the state values */\n      d1 = pState[0];\n      d2 = pState[1];\n\n      pCoeffs += 5U;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 16 outputs at a time */\n      sample = blockSize >> 4U;\n\n      while (sample > 0U) {\n\n         /* y[n] = b0 * x[n] + d1 */\n         /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n         /* d2 = b2 * x[n] + a2 * y[n] */\n\n/*  1 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n\n/*  2 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/*  3 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/*  4 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/*  5 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/*  6 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/*  7 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/*  8 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/*  9 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/* 10 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/* 11 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/* 12 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/* 13 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/* 14 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/* 15 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n/* 16 */\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n         /* decrement loop counter */\n         sample--;\n      }\n\n    /* Loop unrolling: Compute remaining outputs */\n      sample = blockSize & 0xFU;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (sample > 0U) {\n         Xn1 = *pIn++;\n\n         acc1 = b0 * Xn1 + d1;\n\n         d1 = b1 * Xn1 + d2;\n         d1 += a1 * acc1;\n\n         d2 = b2 * Xn1;\n         d2 += a2 * acc1;\n\n         *pOut++ = acc1;\n\n         /* decrement loop counter */\n         sample--;\n      }\n\n      /* Store the updated state variables back into the state array */\n      pState[0] = d1;\n      pState[1] = d2;\n\n      pState += 2U;\n\n      /* The current stage input is given as the output to the next stage */\n      pIn = pDst;\n\n      /* Reset the output working pointer */\n      pOut = pDst;\n\n      /* decrement loop counter */\n      stage--;\n\n   } while (stage > 0U);\n\n}\nLOW_OPTIMIZATION_EXIT\n\n/**\n  @} end of BiquadCascadeDF2T group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df2T_init_f32.c\n * Description:  Initialization function for floating-point transposed direct form II Biquad cascade filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF2T\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n  @param[in,out] S           points to an instance of the filter data structure.\n  @param[in]     numStages   number of 2nd order stages in the filter.\n  @param[in]     pCoeffs     points to the filter coefficients.\n  @param[in]     pState      points to the state buffer.\n  @return        none\n\n  @par           Coefficient and State Ordering\n                   The coefficients are stored in the array <code>pCoeffs</code> in the following order\n                   in the not Neon version.\n  <pre>\n      {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}\n  </pre>\n                   \n  @par\n                   where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,\n                   <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,\n                   and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.\n\n                   For Neon version, this array is bigger. If numstages = 4x + y, then the array has size:\n                   32*x + 5*y\n                   and it must be initialized using the function\n                   arm_biquad_cascade_df2T_compute_coefs_f32 which is taking the\n                   standard array coefficient as parameters.\n\n                   But, an array of 8*numstages is a good approximation.\n\n                   Then, the initialization can be done with:\n  <pre>\n                   arm_biquad_cascade_df2T_init_f32(&SNeon, nbCascade, neonCoefs, stateNeon);\n                   arm_biquad_cascade_df2T_compute_coefs_f32(&SNeon,nbCascade,coefs);\n  </pre>\n\n  @par             In this example, neonCoefs is a bigger array of size 8 * numStages.\n                   coefs is the standard array:\n\n  <pre>\n      {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}\n  </pre>\n\n\n  @par\n                   The <code>pState</code> is a pointer to state array.\n                   Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code>.\n                   The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.\n                   The state array has a total length of <code>2*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n */\n\n#if defined(ARM_MATH_NEON) \n/*\n\nMust be called after initializing the biquad instance.\npCoeffs has size 5 * nbCascade\nWhereas the pCoeffs for the init has size (4*4 + 4*4)* nbCascade \n\nSo this pCoeffs is the one which would be used for the not Neon version.\nThe pCoeffs passed in init is bigger than the one for the not Neon version.\n\n*/\nvoid arm_biquad_cascade_df2T_compute_coefs_f32(\n  arm_biquad_cascade_df2T_instance_f32 * S,\n  uint8_t numStages,\n  float32_t * pCoeffs)\n{\n   uint8_t cnt;\n   float32_t *pDstCoeffs;\n   float32_t b0[4],b1[4],b2[4],a1[4],a2[4];\n\n   pDstCoeffs = S->pCoeffs;\n\n   cnt = numStages >> 2; \n   while(cnt > 0)\n   {\n      for(int i=0;i<4;i++)\n      {\n        b0[i] = pCoeffs[0];\n        b1[i] = pCoeffs[1];\n        b2[i] = pCoeffs[2];\n        a1[i] = pCoeffs[3];\n        a2[i] = pCoeffs[4];\n        pCoeffs += 5;\n      }\n\n      /* Vec 1 */\n      *pDstCoeffs++ = 0;\n      *pDstCoeffs++ = b0[1];\n      *pDstCoeffs++ = b0[2];\n      *pDstCoeffs++ = b0[3];\n\n      /* Vec 2 */\n      *pDstCoeffs++ = 0;\n      *pDstCoeffs++ = 0;\n      *pDstCoeffs++ = b0[1] * b0[2];\n      *pDstCoeffs++ = b0[2] * b0[3];\n\n      /* Vec 3 */\n      *pDstCoeffs++ = 0;\n      *pDstCoeffs++ = 0;\n      *pDstCoeffs++ = 0;\n      *pDstCoeffs++ = b0[1] * b0[2] * b0[3];\n      \n      /* Vec 4 */\n      *pDstCoeffs++ = b0[0];\n      *pDstCoeffs++ = b0[0] * b0[1];\n      *pDstCoeffs++ = b0[0] * b0[1] * b0[2];\n      *pDstCoeffs++ = b0[0] * b0[1] * b0[2] * b0[3];\n\n      /* Vec 5 */\n      *pDstCoeffs++ = b1[0];\n      *pDstCoeffs++ = b1[1];\n      *pDstCoeffs++ = b1[2];\n      *pDstCoeffs++ = b1[3];\n\n      /* Vec 6 */\n      *pDstCoeffs++ = b2[0];\n      *pDstCoeffs++ = b2[1];\n      *pDstCoeffs++ = b2[2];\n      *pDstCoeffs++ = b2[3];\n\n      /* Vec 7 */\n      *pDstCoeffs++ = a1[0];\n      *pDstCoeffs++ = a1[1];\n      *pDstCoeffs++ = a1[2];\n      *pDstCoeffs++ = a1[3];\n\n      /* Vec 8 */\n      *pDstCoeffs++ = a2[0];\n      *pDstCoeffs++ = a2[1];\n      *pDstCoeffs++ = a2[2];\n      *pDstCoeffs++ = a2[3];\n\n      cnt--;\n   }\n\n   cnt = numStages & 0x3;\n   while(cnt > 0)\n   {\n      *pDstCoeffs++ = *pCoeffs++;\n      *pDstCoeffs++ = *pCoeffs++;\n      *pDstCoeffs++ = *pCoeffs++;\n      *pDstCoeffs++ = *pCoeffs++;\n      *pDstCoeffs++ = *pCoeffs++;\n      cnt--;\n   }\n\n}\n#endif \n\nvoid arm_biquad_cascade_df2T_init_f32(\n        arm_biquad_cascade_df2T_instance_f32 * S,\n        uint8_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState)\n{\n  /* Assign filter stages */\n  S->numStages = numStages;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always 2 * numStages */\n  memset(pState, 0, (2U * (uint32_t) numStages) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of BiquadCascadeDF2T group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_df2T_init_f64.c\n * Description:  Initialization function for floating-point transposed direct form II Biquad cascade filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF2T\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n  @param[in,out] S           points to an instance of the filter data structure\n  @param[in]     numStages   number of 2nd order stages in the filter\n  @param[in]     pCoeffs     points to the filter coefficients\n  @param[in]     pState      points to the state buffer\n  @return        none\n\n  @par           Coefficient and State Ordering\n                   The coefficients are stored in the array <code>pCoeffs</code> in the following order:\n  <pre>\n      {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}\n  </pre>\n  @par\n                   where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,\n                   <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,\n                   and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.\n  @par\n                   The <code>pState</code> is a pointer to state array.\n                   Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code>.\n                   The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.\n                   The state array has a total length of <code>2*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n */\n\nvoid arm_biquad_cascade_df2T_init_f64(\n        arm_biquad_cascade_df2T_instance_f64 * S,\n        uint8_t numStages,\n        float64_t * pCoeffs,\n        float64_t * pState)\n{\n  /* Assign filter stages */\n  S->numStages = numStages;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always 2 * numStages */\n  memset(pState, 0, (2U * (uint32_t) numStages) * sizeof(float64_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of BiquadCascadeDF2T group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_stereo_df2T_f32.c\n * Description:  Processing function for floating-point transposed direct form II Biquad cascade filter. 2 channels\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n*/\n\n/**\n  @addtogroup BiquadCascadeDF2T\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point transposed direct form II Biquad cascade filter.\n  @param[in]     S         points to an instance of the filter data structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process\n  @return        none\n */\n\nLOW_OPTIMIZATION_ENTER\nvoid arm_biquad_cascade_stereo_df2T_f32(\n  const arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n  const float32_t *pIn = pSrc;                         /* Source pointer */\n        float32_t *pOut = pDst;                        /* Destination pointer */\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t acc1a, acc1b;                        /* Accumulator */\n        float32_t b0, b1, b2, a1, a2;                  /* Filter coefficients */\n        float32_t Xn1a, Xn1b;                          /* Temporary input */\n        float32_t d1a, d2a, d1b, d2b;                  /* State variables */\n        uint32_t sample, stage = S->numStages;         /* Loop counters */\n\n    do\n    {\n        /* Reading the coefficients */\n        b0 = pCoeffs[0];\n        b1 = pCoeffs[1];\n        b2 = pCoeffs[2];\n        a1 = pCoeffs[3];\n        a2 = pCoeffs[4];\n\n        /* Reading the state values */\n        d1a = pState[0];\n        d2a = pState[1];\n        d1b = pState[2];\n        d2b = pState[3];\n\n        pCoeffs += 5U;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 8 outputs at a time */\n        sample = blockSize >> 3U;\n\n        while (sample > 0U) {\n          /* y[n] = b0 * x[n] + d1 */\n          /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n          /* d2 = b2 * x[n] + a2 * y[n] */\n\n/*  1 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n/*  2 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n/*  3 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n/*  4 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n/*  5 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n/*  6 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n/*  7 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n/*  8 */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n          /* decrement loop counter */\n          sample--;\n        }\n\n        /* Loop unrolling: Compute remaining outputs */\n        sample = blockSize & 0x7U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        sample = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (sample > 0U) {\n          /* Read the input */\n          Xn1a = *pIn++; /* Channel a */\n          Xn1b = *pIn++; /* Channel b */\n\n          /* y[n] = b0 * x[n] + d1 */\n          acc1a = (b0 * Xn1a) + d1a;\n          acc1b = (b0 * Xn1b) + d1b;\n\n          /* Store the result in the accumulator in the destination buffer. */\n          *pOut++ = acc1a;\n          *pOut++ = acc1b;\n\n          /* Every time after the output is computed state should be updated. */\n          /* d1 = b1 * x[n] + a1 * y[n] + d2 */\n          d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;\n          d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;\n\n          /* d2 = b2 * x[n] + a2 * y[n] */\n          d2a = (b2 * Xn1a) + (a2 * acc1a);\n          d2b = (b2 * Xn1b) + (a2 * acc1b);\n\n          /* decrement loop counter */\n          sample--;\n        }\n\n        /* Store the updated state variables back into the state array */\n        pState[0] = d1a;\n        pState[1] = d2a;\n\n        pState[2] = d1b;\n        pState[3] = d2b;\n\n        pState += 4U;\n\n        /* The current stage input is given as the output to the next stage */\n        pIn = pDst;\n\n        /* Reset the output working pointer */\n        pOut = pDst;\n\n        /* Decrement the loop counter */\n        stage--;\n\n    } while (stage > 0U);\n\n}\nLOW_OPTIMIZATION_EXIT\n/**\n  @} end of BiquadCascadeDF2T group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_biquad_cascade_stereo_df2T_init_f32.c\n * Description:  Initialization function for floating-point transposed direct form II Biquad cascade filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup BiquadCascadeDF2T\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n  @param[in,out] S           points to an instance of the filter data structure.\n  @param[in]     numStages   number of 2nd order stages in the filter.\n  @param[in]     pCoeffs     points to the filter coefficients.\n  @param[in]     pState      points to the state buffer.\n  @return        none\n\n  @par           Coefficient and State Ordering\n                   The coefficients are stored in the array <code>pCoeffs</code> in the following order:\n  <pre>\n      {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}\n  </pre>\n  @par\n                   where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,\n                   <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,\n                   and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.\n  @par\n                   The <code>pState</code> is a pointer to state array.\n                   Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code> for each channel.\n                   The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.\n                   The state array has a total length of <code>2*numStages</code> values.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n */\n\nvoid arm_biquad_cascade_stereo_df2T_init_f32(\n        arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n        uint8_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState)\n{\n  /* Assign filter stages */\n  S->numStages = numStages;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always 4 * numStages */\n  memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of BiquadCascadeDF2T group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_f32.c\n * Description:  Convolution of floating-point sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup Conv Convolution\n\n  Convolution is a mathematical operation that operates on two finite length vectors to generate a finite length output vector.\n  Convolution is similar to correlation and is frequently used in filtering and data analysis.\n  The CMSIS DSP library contains functions for convolving Q7, Q15, Q31, and floating-point data types.\n  The library also provides fast versions of the Q15 and Q31 functions.\n\n @par            Algorithm\n                   Let <code>a[n]</code> and <code>b[n]</code> be sequences of length <code>srcALen</code> and\n                   <code>srcBLen</code> samples respectively. Then the convolution\n  <pre>\n     c[n] = a[n] * b[n]\n  </pre>\n  @par\n                   is defined as\n                   \\image html ConvolutionEquation.gif\n  @par\n                   Note that <code>c[n]</code> is of length <code>srcALen + srcBLen - 1</code> and is defined over the interval <code>n=0, 1, 2, ..., srcALen + srcBLen - 2</code>.\n                   <code>pSrcA</code> points to the first input vector of length <code>srcALen</code> and\n                   <code>pSrcB</code> points to the second input vector of length <code>srcBLen</code>.\n                   The output result is written to <code>pDst</code> and the calling function must allocate <code>srcALen+srcBLen-1</code> words for the result.\n  @par\n                   Conceptually, when two signals <code>a[n]</code> and <code>b[n]</code> are convolved,\n                   the signal <code>b[n]</code> slides over <code>a[n]</code>.\n                   For each offset \\c n, the overlapping portions of a[n] and b[n] are multiplied and summed together.\n  @par\n                   Note that convolution is a commutative operation:\n  <pre>\n     a[n] * b[n] = b[n] * a[n].\n  </pre>\n  @par\n                   This means that switching the A and B arguments to the convolution functions has no effect.\n\n  @par           Fixed-Point Behavior\n                   Convolution requires summing up a large number of intermediate products.\n                   As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation.\n                   Refer to the function specific documentation below for further details of the particular algorithm used.\n\n  @par           Fast Versions\n                   Fast versions are supported for Q31 and Q15. Cycles for Fast versions are less compared to Q31 and Q15 of conv and the design requires\n                   the input signals should be scaled down to avoid intermediate overflows.\n\n  @par           Opt Versions\n                   Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation.\n                   These versions are optimised in cycles and consumes more memory (Scratch memory) compared to Q15 and Q7 versions\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of floating-point sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1.\n  @return        none\n */\n\nvoid arm_conv_f32(\n  const float32_t * pSrcA,\n        uint32_t srcALen,\n  const float32_t * pSrcB,\n        uint32_t srcBLen,\n        float32_t * pDst)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const float32_t *pIn1;                               /* InputA pointer */\n  const float32_t *pIn2;                               /* InputB pointer */\n        float32_t *pOut = pDst;                        /* Output pointer */\n  const float32_t *px;                                 /* Intermediate inputA pointer */\n  const float32_t *py;                                 /* Intermediate inputB pointer */\n  const float32_t *pSrc1, *pSrc2;                      /* Intermediate pointers */\n        float32_t sum;                                 /* Accumulators */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n        float32_t acc0, acc1, acc2, acc3;              /* Accumulators */\n        float32_t x0, x1, x2, x3, c0;                  /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[0]\n   * sum = x[0] * y[1] + x[1] * y[0]\n   * ....\n   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n#if defined(ARM_MATH_NEON)\n    float32x4_t vec1;\n    float32x4_t vec2;\n    float32x4_t res = vdupq_n_f32(0) ;\n    float32x2_t accum = vdup_n_f32(0);\n#endif /* #if defined(ARM_MATH_NEON) */\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n#if defined(ARM_MATH_NEON)\n    res = vdupq_n_f32(0) ;\n    accum = vdup_n_f32(0);\n\n    /* Compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n\n    while (k > 0U)\n    {\n      vec1 = vld1q_f32(px);\n      vec2 = vld1q_f32(py-3);\n      vec2 = vrev64q_f32(vec2);\n      vec2 = vcombine_f32(vget_high_f32(vec2), vget_low_f32(vec2));\n\n      res = vmlaq_f32(res,vec1, vec2);\n\n      /* Increment pointers */\n      px += 4;\n      py -= 4; \n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    accum = vpadd_f32(vget_low_f32(res), vget_high_f32(res));\n    sum += accum[0] + accum[1];\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count & 3;\n#else\n    while (k > 0U)\n    {\n      /* x[0] * y[srcBLen - 1] */\n      sum += *px++ * *py--;\n\n      /* x[1] * y[srcBLen - 2] */\n      sum += *px++ * *py--;\n\n      /* x[2] * y[srcBLen - 3] */\n      sum += *px++ * *py--;\n\n      /* x[3] * y[srcBLen - 4] */\n      sum += *px++ * *py--;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#endif /* #if defined(ARM_MATH_NEON) */\n\n#else\n    /* Initialize k with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += *px++ * *py--;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = sum;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen]   * y[0]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n   \n#if defined(ARM_MATH_NEON)\n      float32x4_t c;\n      float32x4_t x1v;\n      float32x4_t x2v;\n      uint32x4_t x1v_u;\n      uint32x4_t x2v_u;\n      uint32x4_t x_u;\n      float32x4_t x;\n      float32x4_t res = vdupq_n_f32(0) ;\n#endif /* #if defined(ARM_MATH_NEON) */\n   \n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0.0f;\n      acc1 = 0.0f;\n      acc2 = 0.0f;\n      acc3 = 0.0f;\n\n       /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n#if defined(ARM_MATH_NEON)\n      res = vdupq_n_f32(0) ;\n\n      x1v = vld1q_f32(px);\n      x2v = vld1q_f32(px+4);\n\n      do\n      {\n        c = vld1q_f32(py-3);\n\n        px += 4;\n        x = x1v;\n        res = vmlaq_n_f32(res,x,c[3]);\n\n\tx = vextq_f32(x1v,x2v,1);\n\n        res = vmlaq_n_f32(res,x,c[2]);\n\n        x = vextq_f32(x1v,x2v,2);\n\n\tres = vmlaq_n_f32(res,x,c[1]);\n\n\tx = vextq_f32(x1v,x2v,3);\n\n\tres = vmlaq_n_f32(res,x,c[0]);\n\n        py -= 4; \n\n        x1v = x2v ;\n        x2v = vld1q_f32(px+4);\n\n      } while (--k);\n      \n      \n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen & 0x3;\n\n      x1v = vld1q_f32(px);\n      px += 4;\n\n      while (k > 0U)\n      {\n        /* Read y[srcBLen - 5] sample */\n        c0 = *(py--);\n\n        res = vmlaq_n_f32(res,x1v,c0);\n\n        /* Reuse the present samples for the next MAC */\n        x1v[0] = x1v[1];\n        x1v[1] = x1v[2];\n        x1v[2] = x1v[3];\n\n        x1v[3] = *(px++);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      acc0 = res[0];\n      acc1 = res[1];\n      acc2 = res[2];\n      acc3 = res[3];\n\n#else\n      /* read x[0], x[1], x[2] samples */\n      x0 = *px++;\n      x1 = *px++;\n      x2 = *px++;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read y[srcBLen - 1] sample */\n        c0 = *py--;\n        /* Read x[3] sample */\n        x3 = *(px);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[0] * y[srcBLen - 1] */\n        acc0 += x0 * c0;\n        /* acc1 +=  x[1] * y[srcBLen - 1] */\n        acc1 += x1 * c0;\n        /* acc2 +=  x[2] * y[srcBLen - 1] */\n        acc2 += x2 * c0;\n        /* acc3 +=  x[3] * y[srcBLen - 1] */\n        acc3 += x3 * c0;\n\n        /* Read y[srcBLen - 2] sample */\n        c0 = *py--;\n        /* Read x[4] sample */\n        x0 = *(px + 1U);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[1] * y[srcBLen - 2] */\n        acc0 += x1 * c0;\n        /* acc1 +=  x[2] * y[srcBLen - 2] */\n        acc1 += x2 * c0;\n        /* acc2 +=  x[3] * y[srcBLen - 2] */\n        acc2 += x3 * c0;\n        /* acc3 +=  x[4] * y[srcBLen - 2] */\n        acc3 += x0 * c0;\n\n        /* Read y[srcBLen - 3] sample */\n        c0 = *py--;\n        /* Read x[5] sample */\n        x1 = *(px + 2U);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[2] * y[srcBLen - 3] */\n        acc0 += x2 * c0;\n        /* acc1 +=  x[3] * y[srcBLen - 2] */\n        acc1 += x3 * c0;\n        /* acc2 +=  x[4] * y[srcBLen - 2] */\n        acc2 += x0 * c0;\n        /* acc3 +=  x[5] * y[srcBLen - 2] */\n        acc3 += x1 * c0;\n\n        /* Read y[srcBLen - 4] sample */\n        c0 = *py--;\n        /* Read x[6] sample */\n        x2 = *(px + 3U);\n        px += 4U;\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[3] * y[srcBLen - 4] */\n        acc0 += x3 * c0;\n        /* acc1 +=  x[4] * y[srcBLen - 4] */\n        acc1 += x0 * c0;\n        /* acc2 +=  x[5] * y[srcBLen - 4] */\n        acc2 += x1 * c0;\n        /* acc3 +=  x[6] * y[srcBLen - 4] */\n        acc3 += x2 * c0;\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Read y[srcBLen - 5] sample */\n        c0 = *py--;\n        /* Read x[7] sample */\n        x3 = *px++;\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[4] * y[srcBLen - 5] */\n        acc0 += x0 * c0;\n        /* acc1 +=  x[5] * y[srcBLen - 5] */\n        acc1 += x1 * c0;\n        /* acc2 +=  x[6] * y[srcBLen - 5] */\n        acc2 += x2 * c0;\n        /* acc3 +=  x[7] * y[srcBLen - 5] */\n        acc3 += x3 * c0;\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n#endif /* #if defined(ARM_MATH_NEON) */\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = acc0;\n      *pOut++ = acc1;\n      *pOut++ = acc2;\n      *pOut++ = acc3;\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = blockSize2 % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) || defined (ARM_MATH_NEON)*/\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0.0f;\n\n#if defined(ARM_MATH_NEON) || defined (ARM_MATH_LOOPUNROLL)\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = srcBLen >> 2U;\n\n#if defined (ARM_MATH_NEON)\n      float32x4_t res = vdupq_n_f32(0) ;\n      float32x4_t x = vdupq_n_f32(0) ;\n      float32x4_t y = vdupq_n_f32(0) ;\n      float32x2_t accum = vdup_n_f32(0) ;\n\n      /* First part of the processing.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        x = vld1q_f32(px);\n        y = vld1q_f32(py-3);\n\n        y = vrev64q_f32(y);\n        y = vcombine_f32(vget_high_f32(y), vget_low_f32(y));\n\n        res = vmlaq_f32(res,x,y);\n\n        px += 4 ;\n        py -= 4 ;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      accum = vpadd_f32(vget_low_f32(res), vget_high_f32(res));\n      sum += accum[0] + accum[1]; \n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen & 0x3U;\n\n#else\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *px++ * *py--;\n        sum += *px++ * *py--;\n        sum += *px++ * *py--;\n        sum += *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = srcBLen % 0x4U;\n\n#endif /* if defined (ARM_MATH_NEON) */\n#else\n      /* Initialize blkCnt with number of samples */\n      k = srcBLen;\n\n#endif /* #if defined(ARM_MATH_NEON) || defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *px++ * *py--;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum;\n\n      /* Increment the MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0.0f;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *px++ * *py--;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum;\n\n      /* Increment the MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n   * ....\n   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n   * sum +=  x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The blockSize3 variable holds the number of MAC operations performed */\n\n  /* Working pointer of inputA */\n  pSrc1 = pIn1 + (srcALen - (srcBLen - 1U));\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = blockSize3 >> 2U;\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t res = vdupq_n_f32(0) ;\n    float32x4_t x = vdupq_n_f32(0) ;\n    float32x4_t y = vdupq_n_f32(0) ;\n    float32x2_t accum = vdup_n_f32(0) ;\n\n    while (k > 0U)\n    {\n      x = vld1q_f32(px);\n      y = vld1q_f32(py-3);\n\n      y = vrev64q_f32(y);\n      y = vcombine_f32(vget_high_f32(y), vget_low_f32(y));\n\n      res = vmlaq_f32(res,x,y);\n\n      px += 4 ;\n      py -= 4 ;\n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    accum = vpadd_f32(vget_low_f32(res), vget_high_f32(res));\n    sum += accum[0] + accum[1]; \n\n#else\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n      sum += *px++ * *py--;\n\n      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n      sum += *px++ * *py--;\n\n      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n      sum += *px++ * *py--;\n\n      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n      sum += *px++ * *py--;\n\n      /* Decrement loop counter */\n      k--;\n    }\n#endif /* #if defined (ARM_MATH_NEON) */\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = blockSize3 % 0x4U;\n#else\n\n    /* Initialize blkCnt with number of samples */\n    k = blockSize3;\n\n#endif /* #if defined (ARM_MATH_NEON) || defined (ARM_MATH_LOOPUNROLL)*/\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n      sum += *px++ * *py--;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = sum;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pSrc2;\n\n    /* Decrement the loop counter */\n    blockSize3--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const float32_t *pIn1 = pSrcA;                       /* InputA pointer */\n  const float32_t *pIn2 = pSrcB;                       /* InputB pointer */\n        float32_t sum;                                 /* Accumulator */\n        uint32_t i, j;                                 /* Loop counters */\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i < (srcALen + srcBLen - 1U); i++)\n  {\n    /* Initialize sum with zero to carry out MAC operations */\n    sum = 0.0f;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if (((i - j) < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ( pIn1[j] * pIn2[i - j]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = sum;\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_fast_opt_q15.c\n * Description:  Fast Q15 Convolution\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q15 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1\n  @param[in]     pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2\n  @param[in]     pScratch2  points to scratch buffer of size min(srcALen, srcBLen\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This fast version uses a 32-bit accumulator with 2.30 format.\n                   The accumulator maintains full precision of the intermediate multiplication results\n                   but provides only a single guard bit. There is no saturation on intermediate additions.\n                   Thus, if the accumulator overflows it wraps around and distorts the result.\n                   The input signals should be scaled down to avoid intermediate overflows.\n                   Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,\n                   as maximum of min(srcALen, srcBLen) number of additions are carried internally.\n                   The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.\n\n  @remark\n                   Refer to \\ref arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.\n */\n\nvoid arm_conv_fast_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2)\n{\n        q31_t acc0;                                    /* Accumulators */\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */\n        q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n        q15_t *py;                                     /* Intermediate inputB pointer */\n        uint32_t j, k, blkCnt;                         /* Loop counter */\n        uint32_t tapCnt;                               /* Loop count */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc1, acc2, acc3;                        /* Accumulators */\n        q31_t x1, x2, x3;                              /* Temporary variables to hold state and coefficient values */\n        q31_t y1, y2;                                  /* State variables */\n#endif\n\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* Pointer to take end of scratch2 buffer */\n  pScr2 = pScratch2 + srcBLen - 1;\n\n  /* points to smaller length sequence */\n  px = pIn2;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  k = srcBLen >> 2U;\n\n  /* Copy smaller length input sequence in reverse order into second scratch buffer */\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner */\n    *pScr2-- = *px++;\n    *pScr2-- = *px++;\n    *pScr2-- = *px++;\n    *pScr2-- = *px++;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  k = srcBLen % 0x4U;\n\n#else\n\n  /* Initialize k with number of samples */\n  k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner for remaining samples */\n    *pScr2-- = *px++;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* Initialze temporary scratch pointer */\n  pScr1 = pScratch1;\n\n  /* Assuming scratch1 buffer is aligned by 32-bit */\n  /* Fill (srcBLen - 1U) zeros in scratch1 buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update temporary scratch pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */\n\n  /* Copy (srcALen) samples in scratch buffer */\n  arm_copy_q15(pIn1, pScr1, srcALen);\n\n  /* Update pointers */\n  pScr1 += srcALen;\n\n\n  /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Temporary pointer for scratch2 */\n  py = pScratch2;\n\n\n  /* Initialization of pIn2 pointer */\n  pIn2 = py;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (srcALen + srcBLen - 1U) >> 2;\n\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Read two samples from scratch1 buffer */\n    x1 = read_q15x2_ia (&pScr1);\n\n    /* Read next two samples from scratch1 buffer */\n    x2 = read_q15x2_ia (&pScr1);\n\n    tapCnt = (srcBLen) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia ((q15_t **) &pIn2);\n      y2 = read_q15x2_ia ((q15_t **) &pIn2);\n\n      /* multiply and accumlate */\n      acc0 = __SMLAD(x1, y1, acc0);\n      acc2 = __SMLAD(x2, y1, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      /* multiply and accumlate */\n      acc1 = __SMLADX(x3, y1, acc1);\n\n      /* Read next two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* multiply and accumlate */\n      acc0 = __SMLAD(x2, y2, acc0);\n      acc2 = __SMLAD(x1, y2, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x1, x2, 0);\n#else\n      x3 = __PKHBT(x2, x1, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y1, acc3);\n      acc1 = __SMLADX(x3, y2, acc1);\n\n      x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y2, acc3);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Update scratch pointer for remaining samples of smaller length sequence */\n    pScr1 -= 4U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    tapCnt = (srcBLen) & 3U;\n\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2);\n      acc1 += (*pScr1++ * *pIn2);\n      acc2 += (*pScr1++ * *pIn2);\n      acc3 += (*pScr1++ * *pIn2++);\n\n      pScr1 -= 3U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* Store the results in the accumulators in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch1 += 4U;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (srcALen + srcBLen - 1U) & 0x3;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (srcALen + srcBLen - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Calculate convolution for remaining samples of Bigger length sequence */\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n\n    tapCnt = (srcBLen) >> 1U;\n\n    while (tapCnt > 0U)\n    {\n\n      /* Read next two samples from scratch1 buffer */\n      acc0 += (*pScr1++ * *pIn2++);\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    tapCnt = (srcBLen) & 1U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    while (tapCnt > 0U)\n    {\n\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* The result is in 2.30 format.  Convert to 1.15 with saturation.\n       Then store the output in the destination buffer. */\n    *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch1 += 1U;\n  }\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_fast_q15.c\n * Description:  Fast Q15 Convolution\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q15 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This fast version uses a 32-bit accumulator with 2.30 format.\n                   The accumulator maintains full precision of the intermediate multiplication results\n                   but provides only a single guard bit. There is no saturation on intermediate additions.\n                   Thus, if the accumulator overflows it wraps around and distorts the result.\n                   The input signals should be scaled down to avoid intermediate overflows.\n                   Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,\n                   as maximum of min(srcALen, srcBLen) number of additions are carried internally.\n                   The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.\n\n  @remark\n                   Refer to \\ref arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.\n */\n\nvoid arm_conv_fast_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst)\n{\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n  const q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold state and coefficient values */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[0]\n   * sum = x[0] * y[1] + x[1] * y[0]\n   * ....\n   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* For loop unrolling by 4, this stage is divided into two. */\n  /* First part of this stage computes the MAC operations less than 4 */\n  /* Second part of this stage computes the MAC operations greater than or equal to 4 */\n\n  /* The first part of the stage starts here */\n  while ((count < 4U) && (blockSize1 > 0U))\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Loop over number of MAC operations between\n     * inputA samples and inputB samples */\n    k = count;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      sum = __SMLAD(*px++, *py--, sum);\n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (sum >> 15);\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* The second part of the stage starts here */\n  /* The internal loop, over count, is unrolled by 4 */\n  /* To, read the last two inputB samples using SIMD:\n   * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */\n  py = py - 1;\n\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */\n      sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n      /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */\n      sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* For the next MAC operations, the pointer py is used without SIMD\n     * So, py is incremented by 1 */\n    py = py + 1U;\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      sum = __SMLAD(*px++, *py--, sum);\n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (sum >> 15);\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + (count - 1U);\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* count is the index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* --------------------\n   * Stage2 process\n   * -------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n    /* Loop unroll over blockSize2, by 4 */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      py = py - 1U;\n\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1] samples */\n      x0 = read_q15x2 ((q15_t *) px);\n      /* read x[1], x[2] samples */\n      x1 = read_q15x2 ((q15_t *) px + 1);\n\t  px += 2U;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read the last two inputB samples using SIMD:\n         * y[srcBLen - 1] and y[srcBLen - 2] */\n        c0 = read_q15x2_da ((q15_t **) &py);\n\n        /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */\n        acc0 = __SMLADX(x0, c0, acc0);\n\n        /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */\n        acc1 = __SMLADX(x1, c0, acc1);\n\n        /* Read x[2], x[3] */\n        x2 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[3], x[4] */\n        x3 = read_q15x2 ((q15_t *) px + 1);\n\n        /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */\n        acc2 = __SMLADX(x2, c0, acc2);\n\n        /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */\n        acc3 = __SMLADX(x3, c0, acc3);\n\n        /* Read y[srcBLen - 3] and y[srcBLen - 4] */\n        c0 = read_q15x2_da ((q15_t **) &py);\n\n        /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */\n        acc0 = __SMLADX(x2, c0, acc0);\n\n        /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */\n        acc1 = __SMLADX(x3, c0, acc1);\n\n        /* Read x[4], x[5] */\n        x0 = read_q15x2 ((q15_t *) px + 2);\n\n        /* Read x[5], x[6] */\n        x1 = read_q15x2 ((q15_t *) px + 3);\n\t\tpx += 4U;\n\n        /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */\n        acc2 = __SMLADX(x0, c0, acc2);\n\n        /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */\n        acc3 = __SMLADX(x1, c0, acc3);\n\n      } while (--k);\n\n      /* For the next MAC operations, SIMD is not used\n       * So, the 16 bit pointer if inputB, py is updated */\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      if (k == 1U)\n      {\n        /* Read y[srcBLen - 5] */\n        c0 = *(py+1);\n\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[7] */\n        x3 = read_q15x2 ((q15_t *) px);\n\t\tpx++;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLAD(x0, c0, acc0);\n        acc1 = __SMLAD(x1, c0, acc1);\n        acc2 = __SMLADX(x1, c0, acc2);\n        acc3 = __SMLADX(x3, c0, acc3);\n      }\n\n      if (k == 2U)\n      {\n        /* Read y[srcBLen - 5], y[srcBLen - 6] */\n        c0 = read_q15x2 ((q15_t *) py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n\t\tpx += 2U;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLADX(x0, c0, acc0);\n        acc1 = __SMLADX(x1, c0, acc1);\n        acc2 = __SMLADX(x3, c0, acc2);\n        acc3 = __SMLADX(x2, c0, acc3);\n      }\n\n      if (k == 3U)\n      {\n        /* Read y[srcBLen - 5], y[srcBLen - 6] */\n        c0 = read_q15x2 ((q15_t *) py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLADX(x0, c0, acc0);\n        acc1 = __SMLADX(x1, c0, acc1);\n        acc2 = __SMLADX(x3, c0, acc2);\n        acc3 = __SMLADX(x2, c0, acc3);\n\n        /* Read y[srcBLen - 7] */\n\t\tc0 = *(py-1);\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[10] */\n        x3 =  read_q15x2 ((q15_t *) px + 2);\n\t\tpx += 3U;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLADX(x1, c0, acc0);\n        acc1 = __SMLAD(x2, c0, acc1);\n        acc2 = __SMLADX(x2, c0, acc2);\n        acc3 = __SMLADX(x3, c0, acc3);\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pOut, __PKHBT((acc0 >> 15), (acc1 >> 15), 16));\n      write_q15x2_ia (&pOut, __PKHBT((acc2 >> 15), (acc3 >> 15), 16));\n#else\n      write_q15x2_ia (&pOut, __PKHBT((acc1 >> 15), (acc0 >> 15), 16));\n      write_q15x2_ia (&pOut, __PKHBT((acc3 >> 15), (acc2 >> 15), 16));\n#endif /*#ifndef  ARM_MATH_BIG_ENDIAN*/\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = blockSize2 % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += ((q31_t) *px++ * *py--);\n        sum += ((q31_t) *px++ * *py--);\n        sum += ((q31_t) *px++ * *py--);\n        sum += ((q31_t) *px++ * *py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += ((q31_t) *px++ * *py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (sum >> 15);\n\n      /* Increment the pointer pIn1 index, count by 1 */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q31_t) *px++ * *py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (sum >> 15);\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n   * ....\n   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n   * sum +=  x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The blockSize3 variable holds the number of MAC operations performed */\n\n  /* Working pointer of inputA */\n  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  pIn2 = pSrc2 - 1U;\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  /* For loop unrolling by 4, this stage is divided into two. */\n  /* First part of this stage computes the MAC operations greater than 4 */\n  /* Second part of this stage computes the MAC operations less than or equal to 4 */\n\n  /* The first part of the stage starts here */\n  j = blockSize3 >> 2U;\n\n  while ((j > 0U) && (blockSize3 > 0U))\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = blockSize3 >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied\n       * with y[srcBLen - 1], y[srcBLen - 2] respectively */\n      sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n      /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied\n       * with y[srcBLen - 3], y[srcBLen - 4] respectively */\n      sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* For the next MAC operations, the pointer py is used without SIMD\n     * So, py is incremented by 1 */\n    py = py + 1U;\n\n    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = blockSize3 % 0x4U;\n\n    while (k > 0U)\n    {\n      /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */\n      sum = __SMLAD(*px++, *py--, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (sum >> 15);\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement  loop counter */\n    blockSize3--;\n\n    j--;\n  }\n\n  /* The second part of the stage starts here */\n  /* SIMD is not used for the next MAC operations,\n   * so pointer py is updated to read only one sample at a time */\n  py = py + 1U;\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = blockSize3;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n      sum = __SMLAD(*px++, *py--, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (sum >> 15);\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pSrc2;\n\n    /* Decrement the loop counter */\n    blockSize3--;\n  }\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_fast_q31.c\n * Description:  Fast Q31 Convolution\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q31 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence.\n  @param[in]     srcALen    length of the first input sequence.\n  @param[in]     pSrcB      points to the second input sequence.\n  @param[in]     srcBLen    length of the second input sequence.\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This function is optimized for speed at the expense of fixed-point precision and overflow protection.\n                   The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.\n                   These intermediate results are accumulated in a 32-bit register in 2.30 format.\n                   Finally, the accumulator is saturated and converted to a 1.31 result.\n  @par\n                   The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result.\n                   In order to avoid overflows completely the input signals must be scaled down.\n                   Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,\n                   as maximum of min(srcALen, srcBLen) number of additions are carried internally.\n  @remark\n                   Refer to \\ref arm_conv_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.\n */\n\nvoid arm_conv_fast_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst)\n{\n  const q31_t *pIn1;                                   /* InputA pointer */\n  const q31_t *pIn2;                                   /* InputB pointer */\n        q31_t *pOut = pDst;                            /* Output pointer */\n  const q31_t *px;                                     /* Intermediate inputA pointer */\n  const q31_t *py;                                     /* Intermediate inputB pointer */\n  const q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold state and coefficient values */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[0]\n   * sum = x[0] * y[1] + x[1] * y[0]\n   * ....\n   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* x[0] * y[srcBLen - 1] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* x[1] * y[srcBLen - 2] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* x[2] * y[srcBLen - 3] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* x[3] * y[srcBLen - 4] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = sum << 1;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n    /* Loop unroll over blockSize2, by 4 */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1], x[2] samples */\n      x0 = *px++;\n      x1 = *px++;\n      x2 = *px++;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read y[srcBLen - 1] sample */\n        c0 = *py--;\n        /* Read x[3] sample */\n        x3 = *px++;\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[0] * y[srcBLen - 1] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc1 +=  x[1] * y[srcBLen - 1] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc2 +=  x[2] * y[srcBLen - 1] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc3 +=  x[3] * y[srcBLen - 1] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n\n        /* Read y[srcBLen - 2] sample */\n        c0 = *py--;\n        /* Read x[4] sample */\n        x0 = *px++;\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[1] * y[srcBLen - 2] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc1 +=  x[2] * y[srcBLen - 2] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc2 +=  x[3] * y[srcBLen - 2] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32);\n        /* acc3 +=  x[4] * y[srcBLen - 2] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n\n        /* Read y[srcBLen - 3] sample */\n        c0 = *py--;\n        /* Read x[5] sample */\n        x1 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[2] * y[srcBLen - 3] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc1 +=  x[3] * y[srcBLen - 3] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32);\n        /* acc2 +=  x[4] * y[srcBLen - 3] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc3 +=  x[5] * y[srcBLen - 3] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32);\n\n\n        /* Read y[srcBLen - 4] sample */\n        c0 = *py--;\n        /* Read x[6] sample */\n        x2 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[3] * y[srcBLen - 4] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32);\n        /* acc1 +=  x[4] * y[srcBLen - 4] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc2 +=  x[5] * y[srcBLen - 4] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc3 +=  x[6] * y[srcBLen - 4] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32);\n\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Read y[srcBLen - 5] sample */\n        c0 = *py--;\n        /* Read x[7] sample */\n        x3 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[4] * y[srcBLen - 5] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc1 +=  x[5] * y[srcBLen - 5] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc2 +=  x[6] * y[srcBLen - 5] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc3 +=  x[7] * y[srcBLen - 5] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q31_t) (acc0 << 1);\n      *pOut++ = (q31_t) (acc1 << 1);\n      *pOut++ = (q31_t) (acc2 << 1);\n      *pOut++ = (q31_t) (acc3 << 1);\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = blockSize2 % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum << 1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum << 1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n   * ....\n   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n   * sum +=  x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The blockSize3 variable holds the number of MAC operations performed */\n\n  /* Working pointer of inputA */\n  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = blockSize3 >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = blockSize3 % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py--))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = sum << 1;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pSrc2;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_opt_q15.c\n * Description:  Convolution of Q15 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q15 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1.\n  @param[in]     pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n  @param[in]     pScratch2  points to scratch buffer of size min(srcALen, srcBLen).\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both inputs are in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   This approach provides 33 guard bits and there is no risk of overflow.\n                   The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.\n  @remark\n                   Refer to \\ref arm_conv_fast_q15() for a faster but less precise version of this function.\n */\n\nvoid arm_conv_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2)\n{\n        q63_t acc0;                                    /* Accumulators */\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */\n        q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n        q15_t *py;                                     /* Intermediate inputB pointer */\n        uint32_t j, k, blkCnt;                         /* Loop counter */\n        uint32_t tapCnt;                               /* Loop count */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc1, acc2, acc3;                        /* Accumulators */\n        q31_t x1, x2, x3;                              /* Temporary variables to hold state and coefficient values */\n        q31_t y1, y2;                                  /* State variables */\n#endif\n\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* Pointer to take end of scratch2 buffer */\n  pScr2 = pScratch2 + srcBLen - 1;\n\n  /* points to smaller length sequence */\n  px = pIn2;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  k = srcBLen >> 2U;\n\n  /* Copy smaller length input sequence in reverse order into second scratch buffer */\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner */\n    *pScr2-- = *px++;\n    *pScr2-- = *px++;\n    *pScr2-- = *px++;\n    *pScr2-- = *px++;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  k = srcBLen % 0x4U;\n\n#else\n\n  /* Initialize k with number of samples */\n  k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner for remaining samples */\n    *pScr2-- = *px++;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* Initialze temporary scratch pointer */\n  pScr1 = pScratch1;\n\n  /* Assuming scratch1 buffer is aligned by 32-bit */\n  /* Fill (srcBLen - 1U) zeros in scratch1 buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update temporary scratch pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */\n\n  /* Copy (srcALen) samples in scratch buffer */\n  arm_copy_q15(pIn1, pScr1, srcALen);\n\n  /* Update pointers */\n  pScr1 += srcALen;\n\n\n  /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Temporary pointer for scratch2 */\n  py = pScratch2;\n\n\n  /* Initialization of pIn2 pointer */\n  pIn2 = py;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (srcALen + srcBLen - 1U) >> 2;\n\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Read two samples from scratch1 buffer */\n    x1 = read_q15x2_ia (&pScr1);\n\n    /* Read next two samples from scratch1 buffer */\n    x2 = read_q15x2_ia (&pScr1);\n\n    tapCnt = (srcBLen) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia ((q15_t **) &pIn2);\n      y2 = read_q15x2_ia ((q15_t **) &pIn2);\n\n      /* multiply and accumlate */\n      acc0 = __SMLALD(x1, y1, acc0);\n      acc2 = __SMLALD(x2, y1, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      /* multiply and accumlate */\n      acc1 = __SMLALDX(x3, y1, acc1);\n\n      /* Read next two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* multiply and accumlate */\n      acc0 = __SMLALD(x2, y2, acc0);\n      acc2 = __SMLALD(x1, y2, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x1, x2, 0);\n#else\n      x3 = __PKHBT(x2, x1, 0);\n#endif\n\n      acc3 = __SMLALDX(x3, y1, acc3);\n      acc1 = __SMLALDX(x3, y2, acc1);\n\n      x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      acc3 = __SMLALDX(x3, y2, acc3);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Update scratch pointer for remaining samples of smaller length sequence */\n    pScr1 -= 4U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    tapCnt = (srcBLen) & 3U;\n\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2);\n      acc1 += (*pScr1++ * *pIn2);\n      acc2 += (*pScr1++ * *pIn2);\n      acc3 += (*pScr1++ * *pIn2++);\n\n      pScr1 -= 3U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* Store the results in the accumulators in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n    write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch1 += 4U;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (srcALen + srcBLen - 1U) & 0x3;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (srcALen + srcBLen - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Calculate convolution for remaining samples of Bigger length sequence */\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n\n    tapCnt = (srcBLen) >> 1U;\n\n    while (tapCnt > 0U)\n    {\n\n      /* Read next two samples from scratch1 buffer */\n      acc0 += (*pScr1++ * *pIn2++);\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    tapCnt = (srcBLen) & 1U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    while (tapCnt > 0U)\n    {\n\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* The result is in 2.30 format.  Convert to 1.15 with saturation.\n       Then store the output in the destination buffer. */\n    *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch1 += 1U;\n  }\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_opt_q7.c\n * Description:  Convolution of Q7 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q7 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1.\n  @param[in]     pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n  @param[in]     pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.\n                   The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.\n                   This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.\n                   The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format.\n */\n\nvoid arm_conv_opt_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2)\n{\n        q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch */\n        q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch */\n        q15_t x4;                                      /* Temporary input variable */\n        q15_t *py;                                     /* Temporary input2 pointer */\n        q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */\n  const q7_t *pIn1, *pIn2;                             /* InputA and inputB pointer */\n        uint32_t j, k, blkCnt, tapCnt;                 /* Loop counter */\n        q31_t x1, x2, x3, y1;                          /* Temporary input variables */\n  const q7_t *px;                                      /* Temporary input1 pointer */\n        q7_t *pOut = pDst;                             /* Output pointer */\n        q7_t out0, out1, out2, out3;                   /* Temporary variables */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* points to smaller length sequence */\n  px = pIn2 + srcBLen - 1;\n\n  /* Apply loop unrolling and do 4 Copies simultaneously. */\n  k = srcBLen >> 2U;\n\n  /* First part of the processing with loop unrolling copies 4 data points at a time.\n   ** a second loop below copies for the remaining 1 to 3 samples. */\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner */\n    x4 = (q15_t) *px--;\n    *pScr2++ = x4;\n    x4 = (q15_t) *px--;\n    *pScr2++ = x4;\n    x4 = (q15_t) *px--;\n    *pScr2++ = x4;\n    x4 = (q15_t) *px--;\n    *pScr2++ = x4;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* If the count is not a multiple of 4, copy remaining samples here.\n   ** No loop unrolling is used. */\n  k = srcBLen % 0x4U;\n\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner for remaining samples */\n    x4 = (q15_t) *px--;\n    *pScr2++ = x4;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* Fill (srcBLen - 1U) zeros in scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update temporary scratch pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Copy (srcALen) samples in scratch buffer */\n  /* Apply loop unrolling and do 4 Copies simultaneously. */\n  k = srcALen >> 2U;\n\n  /* First part of the processing with loop unrolling copies 4 data points at a time.\n   ** a second loop below copies for the remaining 1 to 3 samples. */\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner */\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* If the count is not a multiple of 4, copy remaining samples here.\n   ** No loop unrolling is used. */\n  k = srcALen % 0x4U;\n\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner for remaining samples */\n    x4 = (q15_t) * pIn1++;\n    *pScr1++ = x4;\n\n    /* Decrement the loop counter */\n    k--;\n  }\n\n  /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Temporary pointer for scratch2 */\n  py = pScratch2;\n\n  /* Initialization of pIn2 pointer */\n  pIn2 = (q7_t *) py;\n\n  pScr2 = py;\n\n  /* Actual convolution process starts here */\n  blkCnt = (srcALen + srcBLen - 1U) >> 2U;\n\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Read two samples from scratch1 buffer */\n    x1 = read_q15x2_ia (&pScr1);\n\n    /* Read next two samples from scratch1 buffer */\n    x2 = read_q15x2_ia (&pScr1);\n\n    tapCnt = (srcBLen) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia (&pScr2);\n\n      /* multiply and accumlate */\n      acc0 = __SMLAD(x1, y1, acc0);\n      acc2 = __SMLAD(x2, y1, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      /* multiply and accumlate */\n      acc1 = __SMLADX(x3, y1, acc1);\n\n      /* Read next two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x1, x2, 0);\n#else\n      x3 = __PKHBT(x2, x1, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y1, acc3);\n\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia (&pScr2);\n\n      acc0 = __SMLAD(x2, y1, acc0);\n\n      acc2 = __SMLAD(x1, y1, acc2);\n\n      acc1 = __SMLADX(x3, y1, acc1);\n\n      x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y1, acc3);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Update scratch pointer for remaining samples of smaller length sequence */\n    pScr1 -= 4U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    tapCnt = (srcBLen) & 3U;\n\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pScr2);\n      acc1 += (*pScr1++ * *pScr2);\n      acc2 += (*pScr1++ * *pScr2);\n      acc3 += (*pScr1++ * *pScr2++);\n\n      pScr1 -= 3U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* Store the result in the accumulator in the destination buffer. */\n    out0 = (q7_t) (__SSAT(acc0 >> 7U, 8));\n    out1 = (q7_t) (__SSAT(acc1 >> 7U, 8));\n    out2 = (q7_t) (__SSAT(acc2 >> 7U, 8));\n    out3 = (q7_t) (__SSAT(acc3 >> 7U, 8));\n\n    write_q7x4_ia (&pOut, __PACKq7(out0, out1, out2, out3));\n\n    /* Initialization of inputB pointer */\n    pScr2 = py;\n\n    pScratch1 += 4U;\n  }\n\n  blkCnt = (srcALen + srcBLen - 1U) & 0x3;\n\n  /* Calculate convolution for remaining samples of Bigger length sequence */\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n\n    tapCnt = (srcBLen) >> 1U;\n\n    while (tapCnt > 0U)\n    {\n      acc0 += (*pScr1++ * *pScr2++);\n      acc0 += (*pScr1++ * *pScr2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    tapCnt = (srcBLen) & 1U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pScr2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8));\n\n    /* Initialization of inputB pointer */\n    pScr2 = py;\n\n    pScratch1 += 1U;\n  }\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_f32.c\n * Description:  Partial convolution of floating-point sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup PartialConv Partial Convolution\n\n  Partial Convolution is equivalent to Convolution except that a subset of the output samples is generated.\n  Each function has two additional arguments.\n  <code>firstIndex</code> specifies the starting index of the subset of output samples.\n  <code>numPoints</code> is the number of output samples to compute.\n  The function computes the output in the range\n  <code>[firstIndex, ..., firstIndex+numPoints-1]</code>.\n  The output array <code>pDst</code> contains <code>numPoints</code> values.\n\n  The allowable range of output indices is [0 srcALen+srcBLen-2].\n  If the requested subset does not fall in this range then the functions return ARM_MATH_ARGUMENT_ERROR.\n  Otherwise the functions return ARM_MATH_SUCCESS.\n  \\note Refer to \\ref arm_conv_f32() for details on fixed point behavior.\n\n  @par           Fast Versions\n                   Fast versions are supported for Q31 and Q15 of partial convolution.\n                   Cycles for Fast versions are less compared to Q31 and Q15 of partial conv and the design requires\n                   the input signals should be scaled down to avoid intermediate overflows.\n\n  @par           Opt Versions\n                   Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation.\n                   These versions are optimised in cycles and consumes more memory (Scratch memory) compared to Q15 and Q7 versions of partial convolution\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of floating-point sequences.\n  @param[in]     pSrcA       points to the first input sequence\n  @param[in]     srcALen     length of the first input sequence\n  @param[in]     pSrcB       points to the second input sequence\n  @param[in]     srcBLen     length of the second input sequence\n  @param[out]    pDst        points to the location where the output result is written\n  @param[in]     firstIndex  is the first output sample to start with\n  @param[in]     numPoints   is the number of output points to be computed\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n */\n\narm_status arm_conv_partial_f32(\n  const float32_t * pSrcA,\n        uint32_t srcALen,\n  const float32_t * pSrcB,\n        uint32_t srcBLen,\n        float32_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const float32_t *pIn1 = pSrcA;                       /* InputA pointer */\n  const float32_t *pIn2 = pSrcB;                       /* InputB pointer */\n        float32_t *pOut = pDst;                        /* Output pointer */\n  const float32_t *px;                                 /* Intermediate inputA pointer */\n  const float32_t *py;                                 /* Intermediate inputB pointer */\n  const float32_t *pSrc1, *pSrc2;                      /* Intermediate pointers */\n        float32_t sum;                                 /* Accumulator */\n        uint32_t j, k, count, blkCnt, check;\n        int32_t blockSize1, blockSize2, blockSize3;    /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        float32_t acc0, acc1, acc2, acc3;              /* Accumulator */\n        float32_t x0, x1, x2, x3, c0;                  /* Temporary variables */\n#endif\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Conditions to check which loopCounter holds\n     * the first and last indices of the output samples to be calculated. */\n    check = firstIndex + numPoints;\n    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;\n    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;\n    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;\n    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t) numPoints) : 0;\n    blockSize2 = ((int32_t) check - blockSize3) - (blockSize1 + (int32_t) firstIndex);\n    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;\n\n    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n    /* The function is internally\n     * divided into three stages according to the number of multiplications that has to be\n     * taken place between inputA samples and inputB samples. In the first stage of the\n     * algorithm, the multiplications increase by one for every iteration.\n     * In the second stage of the algorithm, srcBLen number of multiplications are done.\n     * In the third stage of the algorithm, the multiplications decrease by one\n     * for every iteration. */\n\n    /* Set the output pointer to point to the firstIndex\n     * of the output sample to be calculated. */\n    pOut = pDst + firstIndex;\n\n    /* --------------------------\n     * Initializations of stage1\n     * -------------------------*/\n\n    /* sum = x[0] * y[0]\n     * sum = x[0] * y[1] + x[1] * y[0]\n     * ....\n     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n     */\n\n    /* In this stage the MAC operations are increased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed.\n       Since the partial convolution starts from firstIndex\n       Number of Macs to be performed is firstIndex + 1 */\n    count = 1U + firstIndex;\n\n    /* Working pointer of inputA */\n    px = pIn1;\n\n    /* Working pointer of inputB */\n    pSrc1 = pIn2 + firstIndex;\n    py = pSrc1;\n\n    /* ------------------------\n     * Stage1 process\n     * ----------------------*/\n\n    /* The first stage starts here */\n    while (blockSize1 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* x[0] * y[srcBLen - 1] */\n        sum += *px++ * *py--;\n\n        /* x[1] * y[srcBLen - 2] */\n        sum += *px++ * *py--;\n\n        /* x[2] * y[srcBLen - 3] */\n        sum += *px++ * *py--;\n\n        /* x[3] * y[srcBLen - 4] */\n        sum += *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize k with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc1;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* --------------------------\n     * Initializations of stage2\n     * ------------------------*/\n\n    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n     * ....\n     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n     */\n\n    /* Working pointer of inputA */\n    if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)\n    {\n      pSrc1 = pIn1 + firstIndex - srcBLen + 1;\n    }\n    else\n    {\n      pSrc1 = pIn1;\n    }\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* count is index by which the pointer pIn1 to be incremented */\n    count = 0U;\n\n    /* -------------------\n     * Stage2 process\n     * ------------------*/\n\n    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n     * So, to loop unroll over blockSize2,\n     * srcBLen should be greater than or equal to 4 */\n    if (srcBLen >= 4U)\n    {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      blkCnt = ((uint32_t) blockSize2 >> 2U);\n\n      while (blkCnt > 0U)\n      {\n        /* Set all accumulators to zero */\n        acc0 = 0.0f;\n        acc1 = 0.0f;\n        acc2 = 0.0f;\n        acc3 = 0.0f;\n\n        /* read x[0], x[1], x[2] samples */\n        x0 = *px++;\n        x1 = *px++;\n        x2 = *px++;\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        k = srcBLen >> 2U;\n\n        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n         ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n        do\n        {\n          /* Read y[srcBLen - 1] sample */\n          c0 = *py--;\n          /* Read x[3] sample */\n          x3 = *px++;\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[0] * y[srcBLen - 1] */\n          acc0 += x0 * c0;\n          /* acc1 +=  x[1] * y[srcBLen - 1] */\n          acc1 += x1 * c0;\n          /* acc2 +=  x[2] * y[srcBLen - 1] */\n          acc2 += x2 * c0;\n          /* acc3 +=  x[3] * y[srcBLen - 1] */\n          acc3 += x3 * c0;\n\n          /* Read y[srcBLen - 2] sample */\n          c0 = *py--;\n          /* Read x[4] sample */\n          x0 = *px++;\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[1] * y[srcBLen - 2] */\n          acc0 += x1 * c0;\n          /* acc1 +=  x[2] * y[srcBLen - 2] */\n          acc1 += x2 * c0;\n          /* acc2 +=  x[3] * y[srcBLen - 2] */\n          acc2 += x3 * c0;\n          /* acc3 +=  x[4] * y[srcBLen - 2] */\n          acc3 += x0 * c0;\n\n          /* Read y[srcBLen - 3] sample */\n          c0 = *py--;\n          /* Read x[5] sample */\n          x1 = *px++;\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[2] * y[srcBLen - 3] */\n          acc0 += x2 * c0;\n          /* acc1 +=  x[3] * y[srcBLen - 2] */\n          acc1 += x3 * c0;\n          /* acc2 +=  x[4] * y[srcBLen - 2] */\n          acc2 += x0 * c0;\n          /* acc3 +=  x[5] * y[srcBLen - 2] */\n          acc3 += x1 * c0;\n\n          /* Read y[srcBLen - 4] sample */\n          c0 = *py--;\n          /* Read x[6] sample */\n          x2 = *px++;\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[3] * y[srcBLen - 4] */\n          acc0 += x3 * c0;\n          /* acc1 +=  x[4] * y[srcBLen - 4] */\n          acc1 += x0 * c0;\n          /* acc2 +=  x[5] * y[srcBLen - 4] */\n          acc2 += x1 * c0;\n          /* acc3 +=  x[6] * y[srcBLen - 4] */\n          acc3 += x2 * c0;\n\n        } while (--k);\n\n        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        k = srcBLen % 0x4U;\n\n        while (k > 0U)\n        {\n          /* Read y[srcBLen - 5] sample */\n          c0 = *py--;\n          /* Read x[7] sample */\n          x3 = *px++;\n\n          /* Perform the multiply-accumulates */\n          /* acc0 +=  x[4] * y[srcBLen - 5] */\n          acc0 += x0 * c0;\n          /* acc1 +=  x[5] * y[srcBLen - 5] */\n          acc1 += x1 * c0;\n          /* acc2 +=  x[6] * y[srcBLen - 5] */\n          acc2 += x2 * c0;\n          /* acc3 +=  x[7] * y[srcBLen - 5] */\n          acc3 += x3 * c0;\n\n          /* Reuse the present samples for the next MAC */\n          x0 = x1;\n          x1 = x2;\n          x2 = x3;\n\n          /* Decrement the loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = acc0;\n        *pOut++ = acc1;\n        *pOut++ = acc2;\n        *pOut++ = acc3;\n\n        /* Increment the pointer pIn1 index, count by 4 */\n        count += 4U;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      blkCnt = (uint32_t) blockSize2 % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 outputs at a time */\n        k = srcBLen >> 2U;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulates */\n          sum += *px++ * *py--;\n          sum += *px++ * *py--;\n          sum += *px++ * *py--;\n          sum += *px++ * *py--;\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Loop unrolling: Compute remaining outputs */\n        k = srcBLen % 0x4U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += *px++ * *py--;\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = sum;\n\n        /* Increment MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n    }\n    else\n    {\n      /* If the srcBLen is not a multiple of 4,\n       * the blockSize2 loop cannot be unrolled by 4 */\n      blkCnt = (uint32_t) blockSize2;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0.0f;\n\n        /* srcBLen number of MACS should be performed */\n        k = srcBLen;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += *px++ * *py--;\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = sum;\n\n        /* Increment the MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    }\n\n\n    /* --------------------------\n     * Initializations of stage3\n     * -------------------------*/\n\n    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n     * ....\n     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n     * sum +=  x[srcALen-1] * y[srcBLen-1]\n     */\n\n    /* In this stage the MAC operations are decreased by 1 for every iteration.\n       The blockSize3 variable holds the number of MAC operations performed */\n    count = srcBLen - 1U;\n\n    /* Working pointer of inputA */\n    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* -------------------\n     * Stage3 process\n     * ------------------*/\n\n    while (blockSize3 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n        sum += *px++ * *py--;\n\n        /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n        sum += *px++ * *py--;\n\n        /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n        sum += *px++ * *py--;\n\n        /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n        sum += *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n        sum += *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pSrc2;\n\n      /* Decrement MAC count */\n      count--;\n\n      /* Decrement the loop counter */\n      blockSize3--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const float32_t *pIn1 = pSrcA;                       /* InputA pointer */\n  const float32_t *pIn2 = pSrcB;                       /* InputB pointer */\n        float32_t sum;                                 /* Accumulator */\n        uint32_t i, j;                                 /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* Loop to calculate convolution for output length number of values */\n    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)\n    {\n      /* Initialize sum with zero to carry on MAC operations */\n      sum = 0.0f;\n\n      /* Loop to perform MAC operations according to convolution equation */\n      for (j = 0U; j <= i; j++)\n      {\n        /* Check the array limitations */\n        if (((i - j) < srcBLen) && (j < srcALen))\n        {\n          /* z[i] += x[i-j] * y[j] */\n          sum += ( pIn1[j] * pIn2[i - j]);\n        }\n      }\n\n      /* Store the output in the destination buffer */\n      pDst[i] = sum;\n    }\n\n    /* Set status as ARM_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_fast_opt_q15.c\n * Description:  Fast Q15 Partial convolution\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q15 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @param[in]     pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2\n  @param[in]     pScratch2  points to scratch buffer of size min(srcALen, srcBLen)\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n\n  @remark\n                   Refer to \\ref arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.\n */\n\narm_status arm_conv_partial_fast_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints,\n        q15_t * pScratch1,\n        q15_t * pScratch2)\n{\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */\n        q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */\n        q31_t acc0;                                    /* Accumulator */\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n        q15_t *py;                                     /* Intermediate inputB pointer */\n        uint32_t j, k, blkCnt;                         /* Loop counter */\n        uint32_t tapCnt;                               /* Loop count */\n        arm_status status;                             /* Status variable */\n        q31_t x1;                                      /* Temporary variables to hold state and coefficient values */\n        q31_t y1;                                      /* State variables */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc1, acc2, acc3;                        /* Accumulator */\n        q31_t x2, x3;                                  /* Temporary variables to hold state and coefficient values */\n        q31_t y2;                                      /* State variables */\n#endif\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Temporary pointer for scratch2 */\n    py = pScratch2;\n\n    /* pointer to take end of scratch2 buffer */\n    pScr2 = pScratch2 + srcBLen - 1;\n\n    /* points to smaller length sequence */\n    px = pIn2;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = srcBLen >> 2U;\n\n    /* Copy smaller length input sequence in reverse order into second scratch buffer */\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner */\n      *pScr2-- = *px++;\n      *pScr2-- = *px++;\n      *pScr2-- = *px++;\n      *pScr2-- = *px++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = srcBLen % 0x4U;\n\n#else\n\n    /* Initialize k with number of samples */\n    k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner for remaining samples */\n      *pScr2-- = *px++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Initialze temporary scratch pointer */\n    pScr1 = pScratch1;\n\n    /* Assuming scratch1 buffer is aligned by 32-bit */\n    /* Fill (srcBLen - 1U) zeros in scratch buffer */\n    arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n    /* Update temporary scratch pointer */\n    pScr1 += (srcBLen - 1U);\n\n    /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */\n\n    /* Copy (srcALen) samples in scratch buffer */\n    arm_copy_q15(pIn1, pScr1, srcALen);\n\n    /* Update pointers */\n    pScr1 += srcALen;\n\n    /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n    arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n    /* Update pointer */\n    pScr1 += (srcBLen - 1U);\n\n    /* Initialization of pIn2 pointer */\n    pIn2 = py;\n\n    pScratch1 += firstIndex;\n\n    pOut = pDst + firstIndex;\n\n    /* Actual convolution process starts here */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = (numPoints) >> 2;\n\n    while (blkCnt > 0)\n    {\n      /* Initialze temporary scratch pointer as scratch1 */\n      pScr1 = pScratch1;\n\n      /* Clear Accumlators */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* Read two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* Read next two samples from scratch1 buffer */\n      x2 = read_q15x2_ia (&pScr1);\n\n      tapCnt = (srcBLen) >> 2U;\n\n      while (tapCnt > 0U)\n      {\n\n        /* Read four samples from smaller buffer */\n        y1 = read_q15x2_ia ((q15_t **) &pIn2);\n        y2 = read_q15x2_ia ((q15_t **) &pIn2);\n\n        /* multiply and accumlate */\n        acc0 = __SMLAD(x1, y1, acc0);\n        acc2 = __SMLAD(x2, y1, acc2);\n\n        /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x2, x1, 0);\n#else\n        x3 = __PKHBT(x1, x2, 0);\n#endif\n\n        /* multiply and accumlate */\n        acc1 = __SMLADX(x3, y1, acc1);\n\n        /* Read next two samples from scratch1 buffer */\n        x1 = read_q15x2_ia (&pScr1);\n\n        /* multiply and accumlate */\n        acc0 = __SMLAD(x2, y2, acc0);\n        acc2 = __SMLAD(x1, y2, acc2);\n\n        /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x1, x2, 0);\n#else\n        x3 = __PKHBT(x2, x1, 0);\n#endif\n\n        acc3 = __SMLADX(x3, y1, acc3);\n        acc1 = __SMLADX(x3, y2, acc1);\n\n        x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x2, x1, 0);\n#else\n        x3 = __PKHBT(x1, x2, 0);\n#endif\n\n        /* multiply and accumlate */\n        acc3 = __SMLADX(x3, y2, acc3);\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* Update scratch pointer for remaining samples of smaller length sequence */\n      pScr1 -= 4U;\n\n      /* apply same above for remaining samples of smaller length sequence */\n      tapCnt = (srcBLen) & 3U;\n\n      while (tapCnt > 0U)\n      {\n        /* accumlate the results */\n        acc0 += (*pScr1++ * *pIn2);\n        acc1 += (*pScr1++ * *pIn2);\n        acc2 += (*pScr1++ * *pIn2);\n        acc3 += (*pScr1++ * *pIn2++);\n\n        pScr1 -= 3U;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      blkCnt--;\n\n      /* Store the results in the accumulators in the destination buffer. */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* Initialization of inputB pointer */\n      pIn2 = py;\n\n      pScratch1 += 4U;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numPoints & 0x3;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numPoints;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    /* Calculate convolution for remaining samples of Bigger length sequence */\n    while (blkCnt > 0)\n    {\n      /* Initialze temporary scratch pointer as scratch1 */\n      pScr1 = pScratch1;\n\n      /* Clear Accumlators */\n      acc0 = 0;\n\n      tapCnt = (srcBLen) >> 1U;\n\n      while (tapCnt > 0U)\n      {\n        /* Read next two samples from scratch1 buffer */\n        x1 = read_q15x2_ia (&pScr1);\n\n        /* Read two samples from smaller buffer */\n        y1 = read_q15x2_ia ((q15_t **) &pIn2);\n\n        /* multiply and accumlate */\n        acc0 = __SMLAD(x1, y1, acc0);\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      tapCnt = (srcBLen) & 1U;\n\n      /* apply same above for remaining samples of smaller length sequence */\n      while (tapCnt > 0U)\n      {\n        /* accumlate the results */\n        acc0 += (*pScr1++ * *pIn2++);\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      blkCnt--;\n\n      /* The result is in 2.30 format.  Convert to 1.15 with saturation.\n       ** Then store the output in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n\n      /* Initialization of inputB pointer */\n      pIn2 = py;\n\n      pScratch1 += 1U;\n\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_fast_q15.c\n * Description:  Fast Q15 Partial convolution\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q15 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n  @remark\n                   Refer to \\ref arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.\n */\n\narm_status arm_conv_partial_fast_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints)\n{\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n  const q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary input variables */\n        uint32_t j, k, count, blkCnt, check;\n        int32_t blockSize1, blockSize2, blockSize3;    /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Conditions to check which loopCounter holds\n     * the first and last indices of the output samples to be calculated. */\n    check = firstIndex + numPoints;\n    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;\n    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;\n    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;\n    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t) numPoints) : 0;\n    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);\n    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;\n\n    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n    /* The function is internally\n     * divided into three stages according to the number of multiplications that has to be\n     * taken place between inputA samples and inputB samples. In the first stage of the\n     * algorithm, the multiplications increase by one for every iteration.\n     * In the second stage of the algorithm, srcBLen number of multiplications are done.\n     * In the third stage of the algorithm, the multiplications decrease by one\n     * for every iteration. */\n\n    /* Set the output pointer to point to the firstIndex\n     * of the output sample to be calculated. */\n    pOut = pDst + firstIndex;\n\n    /* --------------------------\n     * Initializations of stage1\n     * -------------------------*/\n\n    /* sum = x[0] * y[0]\n     * sum = x[0] * y[1] + x[1] * y[0]\n     * ....\n     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n     */\n\n    /* In this stage the MAC operations are increased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed.\n       Since the partial convolution starts from firstIndex\n       Number of Macs to be performed is firstIndex + 1 */\n    count = 1U + firstIndex;\n\n    /* Working pointer of inputA */\n    px = pIn1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + firstIndex;\n    py = pSrc2;\n\n    /* ------------------------\n     * Stage1 process\n     * ----------------------*/\n\n    /* For loop unrolling by 4, this stage is divided into two. */\n    /* First part of this stage computes the MAC operations less than 4 */\n    /* Second part of this stage computes the MAC operations greater than or equal to 4 */\n\n    /* The first part of the stage starts here */\n    while ((count < 4U) && (blockSize1 > 0))\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Loop over number of MAC operations between\n       * inputA samples and inputB samples */\n      k = count;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum = __SMLAD(*px++, *py--, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (sum >> 15);\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc2;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* The second part of the stage starts here */\n    /* The internal loop, over count, is unrolled by 4 */\n    /* To, read the last two inputB samples using SIMD:\n     * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */\n    py = py - 1;\n\n    while (blockSize1 > 0)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = count >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n         a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */\n        sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n        /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */\n        sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* For the next MAC operations, the pointer py is used without SIMD\n         So, py is incremented by 1 */\n      py = py + 1U;\n\n      /* If the count is not a multiple of 4, compute any remaining MACs here.\n         No loop unrolling is used. */\n      k = count % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum = __SMLAD(*px++, *py--, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (sum >> 15);\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc2 - 1U;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* --------------------------\n     * Initializations of stage2\n     * ------------------------*/\n\n    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n     * ....\n     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n     */\n\n    /* Working pointer of inputA */\n    if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)\n    {\n      pSrc1 = pIn1 + firstIndex - srcBLen + 1;\n    }\n    else\n    {\n      pSrc1 = pIn1;\n    }\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* count is the index by which the pointer pIn1 to be incremented */\n    count = 0U;\n\n    /* -------------------\n     * Stage2 process\n     * ------------------*/\n\n    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n     * So, to loop unroll over blockSize2,\n     * srcBLen should be greater than or equal to 4 */\n    if (srcBLen >= 4U)\n    {\n      /* Loop unrolling: Compute 4 outputs at a time */\n      blkCnt = ((uint32_t) blockSize2 >> 2U);\n\n      while (blkCnt > 0U)\n      {\n        py = py - 1U;\n\n        /* Set all accumulators to zero */\n        acc0 = 0;\n        acc1 = 0;\n        acc2 = 0;\n        acc3 = 0;\n\n\n        /* read x[0], x[1] samples */\n        x0 = read_q15x2 ((q15_t *) px);\n        /* read x[1], x[2] samples */\n        x1 = read_q15x2 ((q15_t *) px + 1);\n        px += 2U;\n\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        k = srcBLen >> 2U;\n\n        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n         ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n        do\n        {\n          /* Read the last two inputB samples using SIMD:\n           * y[srcBLen - 1] and y[srcBLen - 2] */\n          c0 = read_q15x2_da ((q15_t **) &py);\n\n          /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */\n          acc0 = __SMLADX(x0, c0, acc0);\n\n          /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */\n          acc1 = __SMLADX(x1, c0, acc1);\n\n          /* Read x[2], x[3] */\n          x2 = read_q15x2 ((q15_t *) px);\n\n          /* Read x[3], x[4] */\n          x3 = read_q15x2 ((q15_t *) px + 1);\n\n          /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */\n          acc2 = __SMLADX(x2, c0, acc2);\n\n          /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */\n          acc3 = __SMLADX(x3, c0, acc3);\n\n          /* Read y[srcBLen - 3] and y[srcBLen - 4] */\n          c0 = read_q15x2_da ((q15_t **) &py);\n\n          /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */\n          acc0 = __SMLADX(x2, c0, acc0);\n\n          /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */\n          acc1 = __SMLADX(x3, c0, acc1);\n\n          /* Read x[4], x[5] */\n          x0 = read_q15x2 ((q15_t *) px + 2);\n\n          /* Read x[5], x[6] */\n          x1 = read_q15x2 ((q15_t *) px + 3);\n          px += 4U;\n\n          /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */\n          acc2 = __SMLADX(x0, c0, acc2);\n\n          /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */\n          acc3 = __SMLADX(x1, c0, acc3);\n\n        } while (--k);\n\n        /* For the next MAC operations, SIMD is not used\n           So, the 16 bit pointer if inputB, py is updated */\n\n        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n           No loop unrolling is used. */\n        k = srcBLen % 0x4U;\n\n        if (k == 1U)\n        {\n          /* Read y[srcBLen - 5] */\n          c0 = *(py + 1);\n#ifdef  ARM_MATH_BIG_ENDIAN\n          c0 = c0 << 16U;\n#else\n          c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n          /* Read x[7] */\n          x3 = read_q15x2 ((q15_t *) px);\n          px++;\n\n          /* Perform the multiply-accumulate */\n          acc0 = __SMLAD (x0, c0, acc0);\n          acc1 = __SMLAD (x1, c0, acc1);\n          acc2 = __SMLADX(x1, c0, acc2);\n          acc3 = __SMLADX(x3, c0, acc3);\n        }\n\n        if (k == 2U)\n        {\n          /* Read y[srcBLen - 5], y[srcBLen - 6] */\n          c0 = read_q15x2 ((q15_t *) py);\n\n          /* Read x[7], x[8] */\n          x3 = read_q15x2 ((q15_t *) px);\n\n          /* Read x[9] */\n          x2 = read_q15x2 ((q15_t *) px + 1);\n          px += 2U;\n\n          /* Perform the multiply-accumulate */\n          acc0 = __SMLADX(x0, c0, acc0);\n          acc1 = __SMLADX(x1, c0, acc1);\n          acc2 = __SMLADX(x3, c0, acc2);\n          acc3 = __SMLADX(x2, c0, acc3);\n        }\n\n        if (k == 3U)\n        {\n          /* Read y[srcBLen - 5], y[srcBLen - 6] */\n          c0 = read_q15x2 ((q15_t *) py);\n\n          /* Read x[7], x[8] */\n          x3 = read_q15x2 ((q15_t *) px);\n\n          /* Read x[9] */\n          x2 = read_q15x2 ((q15_t *) px + 1);\n\n          /* Perform the multiply-accumulate */\n          acc0 = __SMLADX(x0, c0, acc0);\n          acc1 = __SMLADX(x1, c0, acc1);\n          acc2 = __SMLADX(x3, c0, acc2);\n          acc3 = __SMLADX(x2, c0, acc3);\n\n          c0 = *(py-1);\n#ifdef  ARM_MATH_BIG_ENDIAN\n          c0 = c0 << 16U;\n#else\n          c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n          /* Read x[10] */\n          x3 =  read_q15x2 ((q15_t *) px + 2);\n          px += 3U;\n\n          /* Perform the multiply-accumulates */\n          acc0 = __SMLADX(x1, c0, acc0);\n          acc1 = __SMLAD (x2, c0, acc1);\n          acc2 = __SMLADX(x2, c0, acc2);\n          acc3 = __SMLADX(x3, c0, acc3);\n        }\n\n        /* Store the results in the accumulators in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n        write_q15x2_ia (&pOut, __PKHBT(acc0 >> 15, acc1 >> 15, 16));\n        write_q15x2_ia (&pOut, __PKHBT(acc2 >> 15, acc3 >> 15, 16));\n#else\n        write_q15x2_ia (&pOut, __PKHBT(acc1 >> 15, acc0 >> 15, 16));\n        write_q15x2_ia (&pOut, __PKHBT(acc3 >> 15, acc2 >> 15, 16));\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n        /* Increment the pointer pIn1 index, count by 4 */\n        count += 4U;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n\n      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n         No loop unrolling is used. */\n      blkCnt = (uint32_t) blockSize2 % 0x4U;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        k = srcBLen >> 2U;\n\n        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n           a second loop below computes MACs for the remaining 1 to 3 samples. */\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulates */\n          sum += ((q31_t) *px++ * *py--);\n          sum += ((q31_t) *px++ * *py--);\n          sum += ((q31_t) *px++ * *py--);\n          sum += ((q31_t) *px++ * *py--);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        k = srcBLen % 0x4U;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulates */\n          sum += ((q31_t) *px++ * *py--);\n\n          /* Decrement the loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q15_t) (sum >> 15);\n\n        /* Increment the pointer pIn1 index, count by 1 */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n    }\n    else\n    {\n      /* If the srcBLen is not a multiple of 4,\n       * the blockSize2 loop cannot be unrolled by 4 */\n      blkCnt = (uint32_t) blockSize2;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n        /* srcBLen number of MACS should be performed */\n        k = srcBLen;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += ((q31_t) *px++ * *py--);\n\n          /* Decrement the loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q15_t) (sum >> 15);\n\n        /* Increment the MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    }\n\n\n    /* --------------------------\n     * Initializations of stage3\n     * -------------------------*/\n\n    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n     * ....\n     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n     * sum +=  x[srcALen-1] * y[srcBLen-1]\n     */\n\n    /* In this stage the MAC operations are decreased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed */\n    count = srcBLen - 1U;\n\n    /* Working pointer of inputA */\n    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    pIn2 = pSrc2 - 1U;\n    py = pIn2;\n\n    /* -------------------\n     * Stage3 process\n     * ------------------*/\n\n    /* For loop unrolling by 4, this stage is divided into two. */\n    /* First part of this stage computes the MAC operations greater than 4 */\n    /* Second part of this stage computes the MAC operations less than or equal to 4 */\n\n    /* The first part of the stage starts here */\n    j = count >> 2U;\n\n    while ((j > 0U) && (blockSize3 > 0))\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = count >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied\n         * with y[srcBLen - 1], y[srcBLen - 2] respectively */\n        sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n        /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied\n         * with y[srcBLen - 3], y[srcBLen - 4] respectively */\n        sum = __SMLADX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* For the next MAC operations, the pointer py is used without SIMD\n         So, py is incremented by 1 */\n      py = py + 1U;\n\n      /* If the count is not a multiple of 4, compute any remaining MACs here.\n         No loop unrolling is used. */\n      k = count % 0x4U;\n\n      while (k > 0U)\n      {\n        /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */\n        sum = __SMLAD(*px++, *py--, sum);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (sum >> 15);\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pIn2;\n\n      /* Decrement the MAC count */\n      count--;\n\n      /* Decrement the loop counter */\n      blockSize3--;\n\n      j--;\n    }\n\n    /* The second part of the stage starts here */\n    /* SIMD is not used for the next MAC operations,\n     * so pointer py is updated to read only one sample at a time */\n    py = py + 1U;\n\n    while (blockSize3 > 0)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = count;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n        sum = __SMLAD(*px++, *py--, sum);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (sum >> 15);\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pSrc2;\n\n      /* Decrement the MAC count */\n      count--;\n\n      /* Decrement the loop counter */\n      blockSize3--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_fast_q31.c\n * Description:  Fast Q31 Partial convolution\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q31 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n\n  @remark\n                   Refer to \\ref arm_conv_partial_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision.\n */\n\narm_status arm_conv_partial_fast_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints)\n{\n  const q31_t *pIn1;                                   /* InputA pointer */\n  const q31_t *pIn2;                                   /* InputB pointer */\n        q31_t *pOut = pDst;                            /* Output pointer */\n  const q31_t *px;                                     /* Intermediate inputA pointer */\n  const q31_t *py;                                     /* Intermediate inputB pointer */\n  const q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q31_t sum;                                     /* Accumulators */\n        uint32_t j, k, count, check, blkCnt;\n        int32_t blockSize1, blockSize2, blockSize3;    /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */\n        q31_t x0, x1, x2, x3, c0;\n#endif\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Conditions to check which loopCounter holds\n     * the first and last indices of the output samples to be calculated. */\n    check = firstIndex + numPoints;\n    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;\n    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;\n    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;\n    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t) numPoints) : 0;\n    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);\n    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;\n\n    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n    /* The function is internally\n     * divided into three stages according to the number of multiplications that has to be\n     * taken place between inputA samples and inputB samples. In the first stage of the\n     * algorithm, the multiplications increase by one for every iteration.\n     * In the second stage of the algorithm, srcBLen number of multiplications are done.\n     * In the third stage of the algorithm, the multiplications decrease by one\n     * for every iteration. */\n\n    /* Set the output pointer to point to the firstIndex\n     * of the output sample to be calculated. */\n    pOut = pDst + firstIndex;\n\n    /* --------------------------\n     * Initializations of stage1\n     * -------------------------*/\n\n    /* sum = x[0] * y[0]\n     * sum = x[0] * y[1] + x[1] * y[0]\n     * ....\n     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n     */\n\n    /* In this stage the MAC operations are increased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed.\n       Since the partial convolution starts from firstIndex\n       Number of Macs to be performed is firstIndex + 1 */\n    count = 1U + firstIndex;\n\n    /* Working pointer of inputA */\n    px = pIn1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + firstIndex;\n    py = pSrc2;\n\n    /* ------------------------\n     * Stage1 process\n     * ----------------------*/\n\n    /* The first stage starts here */\n    while (blockSize1 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* x[0] * y[srcBLen - 1] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* x[1] * y[srcBLen - 2] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* x[2] * y[srcBLen - 3] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* x[3] * y[srcBLen - 4] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize k with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum << 1;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc2;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* --------------------------\n     * Initializations of stage2\n     * ------------------------*/\n\n    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n     * ....\n     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n     */\n\n    /* Working pointer of inputA */\n    if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)\n    {\n      pSrc1 = pIn1 + firstIndex - srcBLen + 1;\n    }\n    else\n    {\n      pSrc1 = pIn1;\n    }\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* count is index by which the pointer pIn1 to be incremented */\n    count = 0U;\n\n    /* -------------------\n     * Stage2 process\n     * ------------------*/\n\n    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n     * So, to loop unroll over blockSize2,\n     * srcBLen should be greater than or equal to 4 */\n    if (srcBLen >= 4U)\n    {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n      blkCnt = ((uint32_t) blockSize2 >> 2U);\n\n      while (blkCnt > 0U)\n      {\n        /* Set all accumulators to zero */\n        acc0 = 0;\n        acc1 = 0;\n        acc2 = 0;\n        acc3 = 0;\n\n        /* read x[0], x[1], x[2] samples */\n        x0 = *px++;\n        x1 = *px++;\n        x2 = *px++;\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        k = srcBLen >> 2U;\n\n        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n         ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n        do\n        {\n          /* Read y[srcBLen - 1] sample */\n          c0 = *py--;\n          /* Read x[3] sample */\n          x3 = *px++;\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[0] * y[srcBLen - 1] */\n          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n          /* acc1 +=  x[1] * y[srcBLen - 1] */\n          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n          /* acc2 +=  x[2] * y[srcBLen - 1] */\n          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n          /* acc3 +=  x[3] * y[srcBLen - 1] */\n          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n          /* Read y[srcBLen - 2] sample */\n          c0 = *py--;\n          /* Read x[4] sample */\n          x0 = *px++;\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[1] * y[srcBLen - 2] */\n          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32);\n          /* acc1 +=  x[2] * y[srcBLen - 2] */\n          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32);\n          /* acc2 +=  x[3] * y[srcBLen - 2] */\n          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32);\n          /* acc3 +=  x[4] * y[srcBLen - 2] */\n          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n          /* Read y[srcBLen - 3] sample */\n          c0 = *py--;\n          /* Read x[5] sample */\n          x1 = *px++;\n\n          /* Perform the multiply-accumulates */\n          /* acc0 +=  x[2] * y[srcBLen - 3] */\n          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32);\n          /* acc1 +=  x[3] * y[srcBLen - 2] */\n          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32);\n          /* acc2 +=  x[4] * y[srcBLen - 2] */\n          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32);\n          /* acc3 +=  x[5] * y[srcBLen - 2] */\n          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32);\n\n          /* Read y[srcBLen - 4] sample */\n          c0 = *py--;\n          /* Read x[6] sample */\n          x2 = *px++;\n\n          /* Perform the multiply-accumulates */\n          /* acc0 +=  x[3] * y[srcBLen - 4] */\n          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32);\n          /* acc1 +=  x[4] * y[srcBLen - 4] */\n          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32);\n          /* acc2 +=  x[5] * y[srcBLen - 4] */\n          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32);\n          /* acc3 +=  x[6] * y[srcBLen - 4] */\n          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32);\n\n        } while (--k);\n\n        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        k = srcBLen % 0x4U;\n\n        while (k > 0U)\n        {\n          /* Read y[srcBLen - 5] sample */\n          c0 = *py--;\n          /* Read x[7] sample */\n          x3 = *px++;\n\n          /* Perform the multiply-accumulates */\n          /* acc0 +=  x[4] * y[srcBLen - 5] */\n          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n          /* acc1 +=  x[5] * y[srcBLen - 5] */\n          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n          /* acc2 +=  x[6] * y[srcBLen - 5] */\n          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n          /* acc3 +=  x[7] * y[srcBLen - 5] */\n          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n          /* Reuse the present samples for the next MAC */\n          x0 = x1;\n          x1 = x2;\n          x2 = x3;\n\n          /* Decrement the loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q31_t) (acc0 << 1);\n        *pOut++ = (q31_t) (acc1 << 1);\n        *pOut++ = (q31_t) (acc2 << 1);\n        *pOut++ = (q31_t) (acc3 << 1);\n\n        /* Increment the pointer pIn1 index, count by 4 */\n        count += 4U;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      blkCnt = (uint32_t) blockSize2 % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 outputs at a time */\n        k = srcBLen >> 2U;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulates */\n          sum = (q31_t) ((((q63_t) sum << 32) +\n                          ((q63_t) * px++ * (*py--))) >> 32);\n          sum = (q31_t) ((((q63_t) sum << 32) +\n                          ((q63_t) * px++ * (*py--))) >> 32);\n          sum = (q31_t) ((((q63_t) sum << 32) +\n                          ((q63_t) * px++ * (*py--))) >> 32);\n          sum = (q31_t) ((((q63_t) sum << 32) +\n                          ((q63_t) * px++ * (*py--))) >> 32);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Loop unrolling: Compute remaining outputs */\n        k = srcBLen % 0x4U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum = (q31_t) ((((q63_t) sum << 32) +\n                          ((q63_t) *px++ * (*py--))) >> 32);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = sum << 1;\n\n        /* Increment MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n    }\n    else\n    {\n      /* If the srcBLen is not a multiple of 4,\n       * the blockSize2 loop cannot be unrolled by 4 */\n      blkCnt = (uint32_t) blockSize2;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n        /* srcBLen number of MACS should be performed */\n        k = srcBLen;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum = (q31_t) ((((q63_t) sum << 32) +\n                          ((q63_t) *px++ * (*py--))) >> 32);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = sum << 1;\n\n        /* Increment the MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    }\n\n\n    /* --------------------------\n     * Initializations of stage3\n     * -------------------------*/\n\n    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n     * ....\n     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n     * sum +=  x[srcALen-1] * y[srcBLen-1]\n     */\n\n    /* In this stage the MAC operations are decreased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed */\n    count = srcBLen - 1U;\n\n    /* Working pointer of inputA */\n    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* -------------------\n     * Stage3 process\n     * ------------------*/\n\n    while (blockSize3 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py--))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = sum << 1;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pSrc2;\n\n      /* Decrement MAC count */\n      count--;\n\n      /* Decrement the loop counter */\n      blockSize3--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_opt_q15.c\n * Description:  Partial convolution of Q15 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q15 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @param[in]     pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n  @param[in]     pScratch2  points to scratch buffer of size min(srcALen, srcBLen).\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n\n  @remark\n                   Refer to \\ref arm_conv_partial_fast_q15() for a faster but less precise version of this function.\n */\n\narm_status arm_conv_partial_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints,\n        q15_t * pScratch1,\n        q15_t * pScratch2)\n{\n\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */\n        q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */\n        q63_t acc0;                                    /* Accumulator */\n        q31_t x1;                                      /* Temporary variables to hold state and coefficient values */\n        q31_t y1;                                      /* State variables */\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n        q15_t *py;                                     /* Intermediate inputB pointer */\n        uint32_t j, k, blkCnt;                         /* Loop counter */\n        uint32_t tapCnt;                               /* Loop count */\n        arm_status status;                             /* Status variable */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc1, acc2, acc3;                        /* Accumulator */\n        q31_t x2, x3;                                  /* Temporary variables to hold state and coefficient values */\n        q31_t y2;                                      /* State variables */\n#endif\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Temporary pointer for scratch2 */\n    py = pScratch2;\n\n    /* pointer to take end of scratch2 buffer */\n    pScr2 = pScratch2 + srcBLen - 1;\n\n    /* points to smaller length sequence */\n    px = pIn2;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = srcBLen >> 2U;\n\n    /* Copy smaller length input sequence in reverse order into second scratch buffer */\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner */\n      *pScr2-- = *px++;\n      *pScr2-- = *px++;\n      *pScr2-- = *px++;\n      *pScr2-- = *px++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = srcBLen % 0x4U;\n\n#else\n\n    /* Initialize k with number of samples */\n    k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner for remaining samples */\n      *pScr2-- = *px++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Initialze temporary scratch pointer */\n    pScr1 = pScratch1;\n\n    /* Assuming scratch1 buffer is aligned by 32-bit */\n    /* Fill (srcBLen - 1U) zeros in scratch buffer */\n    arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n    /* Update temporary scratch pointer */\n    pScr1 += (srcBLen - 1U);\n\n    /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */\n\n    /* Copy (srcALen) samples in scratch buffer */\n    arm_copy_q15(pIn1, pScr1, srcALen);\n\n    /* Update pointers */\n    pScr1 += srcALen;\n\n    /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n    arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n    /* Update pointer */\n    pScr1 += (srcBLen - 1U);\n\n    /* Initialization of pIn2 pointer */\n    pIn2 = py;\n\n    pScratch1 += firstIndex;\n\n    pOut = pDst + firstIndex;\n\n    /* Actual convolution process starts here */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = (numPoints) >> 2;\n\n    while (blkCnt > 0)\n    {\n      /* Initialze temporary scratch pointer as scratch1 */\n      pScr1 = pScratch1;\n\n      /* Clear Accumlators */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* Read two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* Read next two samples from scratch1 buffer */\n      x2 = read_q15x2_ia (&pScr1);\n\n      tapCnt = (srcBLen) >> 2U;\n\n      while (tapCnt > 0U)\n      {\n\n        /* Read four samples from smaller buffer */\n        y1 = read_q15x2_ia ((q15_t **) &pIn2);\n        y2 = read_q15x2_ia ((q15_t **) &pIn2);\n\n        /* multiply and accumlate */\n        acc0 = __SMLALD(x1, y1, acc0);\n        acc2 = __SMLALD(x2, y1, acc2);\n\n        /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x2, x1, 0);\n#else\n        x3 = __PKHBT(x1, x2, 0);\n#endif\n\n        /* multiply and accumlate */\n        acc1 = __SMLALDX(x3, y1, acc1);\n\n        /* Read next two samples from scratch1 buffer */\n        x1 = read_q15x2_ia (&pScr1);\n\n        /* multiply and accumlate */\n        acc0 = __SMLALD(x2, y2, acc0);\n        acc2 = __SMLALD(x1, y2, acc2);\n\n        /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x1, x2, 0);\n#else\n        x3 = __PKHBT(x2, x1, 0);\n#endif\n\n        acc3 = __SMLALDX(x3, y1, acc3);\n        acc1 = __SMLALDX(x3, y2, acc1);\n\n        x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x2, x1, 0);\n#else\n        x3 = __PKHBT(x1, x2, 0);\n#endif\n\n        acc3 = __SMLALDX(x3, y2, acc3);\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* Update scratch pointer for remaining samples of smaller length sequence */\n      pScr1 -= 4U;\n\n      /* apply same above for remaining samples of smaller length sequence */\n      tapCnt = (srcBLen) & 3U;\n\n      while (tapCnt > 0U)\n      {\n        /* accumlate the results */\n        acc0 += (*pScr1++ * *pIn2);\n        acc1 += (*pScr1++ * *pIn2);\n        acc2 += (*pScr1++ * *pIn2);\n        acc3 += (*pScr1++ * *pIn2++);\n\n        pScr1 -= 3U;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      blkCnt--;\n\n      /* Store the results in the accumulators in the destination buffer. */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* Initialization of inputB pointer */\n      pIn2 = py;\n\n      pScratch1 += 4U;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numPoints & 0x3;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numPoints;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    /* Calculate convolution for remaining samples of Bigger length sequence */\n    while (blkCnt > 0)\n    {\n      /* Initialze temporary scratch pointer as scratch1 */\n      pScr1 = pScratch1;\n\n      /* Clear Accumlators */\n      acc0 = 0;\n\n      tapCnt = (srcBLen) >> 1U;\n\n      while (tapCnt > 0U)\n      {\n        /* Read next two samples from scratch1 buffer */\n        x1 = read_q15x2_ia (&pScr1);\n\n        /* Read two samples from smaller buffer */\n        y1 = read_q15x2_ia ((q15_t **) &pIn2);\n\n        acc0 = __SMLALD(x1, y1, acc0);\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      tapCnt = (srcBLen) & 1U;\n\n      /* apply same above for remaining samples of smaller length sequence */\n      while (tapCnt > 0U)\n      {\n        /* accumlate the results */\n        acc0 += (*pScr1++ * *pIn2++);\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      blkCnt--;\n\n      /* The result is in 2.30 format.  Convert to 1.15 with saturation.\n       ** Then store the output in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n\n      /* Initialization of inputB pointer */\n      pIn2 = py;\n\n      pScratch1 += 1U;\n\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_opt_q7.c\n * Description:  Partial convolution of Q7 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q7 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @param[in]     pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n  @param[in]     pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n */\n\narm_status arm_conv_partial_opt_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints,\n        q15_t * pScratch1,\n        q15_t * pScratch2)\n{\n        q15_t *pScr2, *pScr1;                          /* Intermediate pointers for scratch pointers */\n        q15_t x4;                                      /* Temporary input variable */\n  const q7_t *pIn1, *pIn2;                             /* InputA and inputB pointer */\n        uint32_t j, k, blkCnt, tapCnt;                 /* Loop counter */\n  const q7_t *px;                                      /* Temporary input1 pointer */\n        q15_t *py;                                     /* Temporary input2 pointer */\n        q31_t acc0, acc1, acc2, acc3;                  /* Accumulator */\n        q31_t x1, x2, x3, y1;                          /* Temporary input variables */\n        arm_status status;\n        q7_t *pOut = pDst;                             /* Output pointer */\n        q7_t out0, out1, out2, out3;                   /* Temporary variables */\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* pointer to take end of scratch2 buffer */\n    pScr2 = pScratch2;\n\n    /* points to smaller length sequence */\n    px = pIn2 + srcBLen - 1;\n\n    /* Apply loop unrolling and do 4 Copies simultaneously. */\n    k = srcBLen >> 2U;\n\n    /* First part of the processing with loop unrolling copies 4 data points at a time.\n     ** a second loop below copies for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner */\n      x4 = (q15_t) *px--;\n      *pScr2++ = x4;\n      x4 = (q15_t) *px--;\n      *pScr2++ = x4;\n      x4 = (q15_t) *px--;\n      *pScr2++ = x4;\n      x4 = (q15_t) *px--;\n      *pScr2++ = x4;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, copy remaining samples here.\n     ** No loop unrolling is used. */\n    k = srcBLen % 0x4U;\n\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner for remaining samples */\n      x4 = (q15_t) *px--;\n      *pScr2++ = x4;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Initialze temporary scratch pointer */\n    pScr1 = pScratch1;\n\n    /* Fill (srcBLen - 1U) zeros in scratch buffer */\n    arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n    /* Update temporary scratch pointer */\n    pScr1 += (srcBLen - 1U);\n\n    /* Copy (srcALen) samples in scratch buffer */\n    /* Apply loop unrolling and do 4 Copies simultaneously. */\n    k = srcALen >> 2U;\n\n    /* First part of the processing with loop unrolling copies 4 data points at a time.\n     ** a second loop below copies for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner */\n      x4 = (q15_t) *pIn1++;\n      *pScr1++ = x4;\n      x4 = (q15_t) *pIn1++;\n      *pScr1++ = x4;\n      x4 = (q15_t) *pIn1++;\n      *pScr1++ = x4;\n      x4 = (q15_t) *pIn1++;\n      *pScr1++ = x4;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, copy remaining samples here.\n     ** No loop unrolling is used. */\n    k = srcALen % 0x4U;\n\n    while (k > 0U)\n    {\n      /* copy second buffer in reversal manner for remaining samples */\n      x4 = (q15_t) *pIn1++;\n      *pScr1++ = x4;\n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n    arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n    /* Update pointer */\n    pScr1 += (srcBLen - 1U);\n\n\n    /* Temporary pointer for scratch2 */\n    py = pScratch2;\n\n    /* Initialization of pIn2 pointer */\n    pIn2 = (q7_t *) py;\n\n    pScr2 = py;\n\n    pOut = pDst + firstIndex;\n\n    pScratch1 += firstIndex;\n\n    /* Actual convolution process starts here */\n    blkCnt = (numPoints) >> 2;\n\n    while (blkCnt > 0)\n    {\n      /* Initialize temporary scratch pointer as scratch1 */\n      pScr1 = pScratch1;\n\n      /* Clear Accumulators */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* Read two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* Read next two samples from scratch1 buffer */\n      x2 = read_q15x2_ia (&pScr1);\n\n      tapCnt = (srcBLen) >> 2U;\n\n      while (tapCnt > 0U)\n      {\n        /* Read four samples from smaller buffer */\n        y1 = read_q15x2_ia (&pScr2);\n\n        /* multiply and accumlate */\n        acc0 = __SMLAD(x1, y1, acc0);\n        acc2 = __SMLAD(x2, y1, acc2);\n\n        /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x2, x1, 0);\n#else\n        x3 = __PKHBT(x1, x2, 0);\n#endif\n\n        /* multiply and accumlate */\n        acc1 = __SMLADX(x3, y1, acc1);\n\n        /* Read next two samples from scratch1 buffer */\n        x1 = read_q15x2_ia (&pScr1);\n\n        /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x1, x2, 0);\n#else\n        x3 = __PKHBT(x2, x1, 0);\n#endif\n\n        acc3 = __SMLADX(x3, y1, acc3);\n\n        /* Read four samples from smaller buffer */\n        y1 = read_q15x2_ia (&pScr2);\n\n        acc0 = __SMLAD(x2, y1, acc0);\n\n        acc2 = __SMLAD(x1, y1, acc2);\n\n        acc1 = __SMLADX(x3, y1, acc1);\n\n        x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        x3 = __PKHBT(x2, x1, 0);\n#else\n        x3 = __PKHBT(x1, x2, 0);\n#endif\n\n        acc3 = __SMLADX(x3, y1, acc3);\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* Update scratch pointer for remaining samples of smaller length sequence */\n      pScr1 -= 4U;\n\n      /* apply same above for remaining samples of smaller length sequence */\n      tapCnt = (srcBLen) & 3U;\n\n      while (tapCnt > 0U)\n      {\n        /* accumlate the results */\n        acc0 += (*pScr1++ * *pScr2);\n        acc1 += (*pScr1++ * *pScr2);\n        acc2 += (*pScr1++ * *pScr2);\n        acc3 += (*pScr1++ * *pScr2++);\n\n        pScr1 -= 3U;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      blkCnt--;\n\n      /* Store the result in the accumulator in the destination buffer. */\n      out0 = (q7_t) (__SSAT(acc0 >> 7U, 8));\n      out1 = (q7_t) (__SSAT(acc1 >> 7U, 8));\n      out2 = (q7_t) (__SSAT(acc2 >> 7U, 8));\n      out3 = (q7_t) (__SSAT(acc3 >> 7U, 8));\n\n      write_q7x4_ia (&pOut, __PACKq7(out0, out1, out2, out3));\n\n      /* Initialization of inputB pointer */\n      pScr2 = py;\n\n      pScratch1 += 4U;\n    }\n\n    blkCnt = (numPoints) & 0x3;\n\n    /* Calculate convolution for remaining samples of Bigger length sequence */\n    while (blkCnt > 0)\n    {\n      /* Initialze temporary scratch pointer as scratch1 */\n      pScr1 = pScratch1;\n\n      /* Clear Accumlators */\n      acc0 = 0;\n\n      tapCnt = (srcBLen) >> 1U;\n\n      while (tapCnt > 0U)\n      {\n\n        /* Read next two samples from scratch1 buffer */\n        x1 = read_q15x2_ia (&pScr1);\n\n        /* Read two samples from smaller buffer */\n        y1 = read_q15x2_ia (&pScr2);\n\n        acc0 = __SMLAD(x1, y1, acc0);\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      tapCnt = (srcBLen) & 1U;\n\n      /* apply same above for remaining samples of smaller length sequence */\n      while (tapCnt > 0U)\n      {\n\n        /* accumlate the results */\n        acc0 += (*pScr1++ * *pScr2++);\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      blkCnt--;\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8));\n\n      /* Initialization of inputB pointer */\n      pScr2 = py;\n\n      pScratch1 += 1U;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_q15.c\n * Description:  Partial convolution of Q15 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q15 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n\n  @remark\n                   Refer to \\ref arm_conv_partial_fast_q15() for a faster but less precise version of this function.\n  @remark\n                   Refer to \\ref arm_conv_partial_opt_q15() for a faster implementation of this function using scratch buffers.\n */\n\narm_status arm_conv_partial_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints)\n{\n\n#if defined (ARM_MATH_DSP)\n\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q63_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n  const q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary input variables to hold state and coefficient values */\n        int32_t blockSize1, blockSize2, blockSize3;    /* Loop counters */\n        uint32_t j, k, count, blkCnt, check;\n        arm_status status;                             /* Status of Partial convolution */\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Conditions to check which loopCounter holds\n     * the first and last indices of the output samples to be calculated. */\n    check = firstIndex + numPoints;\n    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;\n    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;\n    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;\n    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t) numPoints) : 0;\n    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);\n    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;\n\n    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n    /* The function is internally\n     * divided into three stages according to the number of multiplications that has to be\n     * taken place between inputA samples and inputB samples. In the first stage of the\n     * algorithm, the multiplications increase by one for every iteration.\n     * In the second stage of the algorithm, srcBLen number of multiplications are done.\n     * In the third stage of the algorithm, the multiplications decrease by one\n     * for every iteration. */\n\n    /* Set the output pointer to point to the firstIndex\n     * of the output sample to be calculated. */\n    pOut = pDst + firstIndex;\n\n    /* --------------------------\n     * Initializations of stage1\n     * -------------------------*/\n\n    /* sum = x[0] * y[0]\n     * sum = x[0] * y[1] + x[1] * y[0]\n     * ....\n     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n     */\n\n    /* In this stage the MAC operations are increased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed.\n       Since the partial convolution starts from firstIndex\n       Number of Macs to be performed is firstIndex + 1 */\n    count = 1U + firstIndex;\n\n    /* Working pointer of inputA */\n    px = pIn1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + firstIndex;\n    py = pSrc2;\n\n    /* ------------------------\n     * Stage1 process\n     * ----------------------*/\n\n    /* For loop unrolling by 4, this stage is divided into two. */\n    /* First part of this stage computes the MAC operations less than 4 */\n    /* Second part of this stage computes the MAC operations greater than or equal to 4 */\n\n    /* The first part of the stage starts here */\n    while ((count < 4U) && (blockSize1 > 0U))\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Loop over number of MAC operations between\n       * inputA samples and inputB samples */\n      k = count;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum = __SMLALD(*px++, *py--, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc2;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* The second part of the stage starts here */\n    /* The internal loop, over count, is unrolled by 4 */\n    /* To, read the last two inputB samples using SIMD:\n     * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */\n    py = py - 1;\n\n    while (blockSize1 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = count >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n         a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */\n        sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n        /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */\n        sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* For the next MAC operations, the pointer py is used without SIMD\n       * So, py is incremented by 1 */\n      py = py + 1U;\n\n      /* If the count is not a multiple of 4, compute any remaining MACs here.\n         No loop unrolling is used. */\n      k = count % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum = __SMLALD(*px++, *py--, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc2 - 1U;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* --------------------------\n     * Initializations of stage2\n     * ------------------------*/\n\n    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n     * ....\n     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n     */\n\n    /* Working pointer of inputA */\n    if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)\n    {\n      pSrc1 = pIn1 + firstIndex - srcBLen + 1;\n    }\n    else\n    {\n      pSrc1 = pIn1;\n    }\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* count is the index by which the pointer pIn1 to be incremented */\n    count = 0U;\n\n    /* -------------------\n     * Stage2 process\n     * ------------------*/\n\n    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n     * So, to loop unroll over blockSize2,\n     * srcBLen should be greater than or equal to 4 */\n    if (srcBLen >= 4U)\n    {\n      /* Loop unrolling: Compute 4 outputs at a time */\n      blkCnt = ((uint32_t) blockSize2 >> 2U);\n\n      while (blkCnt > 0U)\n      {\n        py = py - 1U;\n\n        /* Set all accumulators to zero */\n        acc0 = 0;\n        acc1 = 0;\n        acc2 = 0;\n        acc3 = 0;\n\n\n        /* read x[0], x[1] samples */\n        x0 = read_q15x2 ((q15_t *) px);\n        /* read x[1], x[2] samples */\n        x1 = read_q15x2 ((q15_t *) px + 1);\n        px += 2U;\n\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        k = srcBLen >> 2U;\n\n        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n         ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n        do\n        {\n          /* Read the last two inputB samples using SIMD:\n           * y[srcBLen - 1] and y[srcBLen - 2] */\n          c0 = read_q15x2_da ((q15_t **) &py);\n\n          /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */\n          acc0 = __SMLALDX(x0, c0, acc0);\n\n          /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */\n          acc1 = __SMLALDX(x1, c0, acc1);\n\n          /* Read x[2], x[3] */\n          x2 = read_q15x2 ((q15_t *) px);\n\n          /* Read x[3], x[4] */\n          x3 = read_q15x2 ((q15_t *) px + 1);\n\n          /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */\n          acc2 = __SMLALDX(x2, c0, acc2);\n\n          /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */\n          acc3 = __SMLALDX(x3, c0, acc3);\n\n          /* Read y[srcBLen - 3] and y[srcBLen - 4] */\n          c0 = read_q15x2_da ((q15_t **) &py);\n\n          /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */\n          acc0 = __SMLALDX(x2, c0, acc0);\n\n          /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */\n          acc1 = __SMLALDX(x3, c0, acc1);\n\n          /* Read x[4], x[5] */\n          x0 = read_q15x2 ((q15_t *) px + 2);\n\n          /* Read x[5], x[6] */\n          x1 = read_q15x2 ((q15_t *) px + 3);\n          px += 4U;\n\n          /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */\n          acc2 = __SMLALDX(x0, c0, acc2);\n\n          /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */\n          acc3 = __SMLALDX(x1, c0, acc3);\n\n        } while (--k);\n\n        /* For the next MAC operations, SIMD is not used\n         * So, the 16 bit pointer if inputB, py is updated */\n\n        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        k = srcBLen % 0x4U;\n\n        if (k == 1U)\n        {\n          /* Read y[srcBLen - 5] */\n          c0 = *(py+1);\n#ifdef  ARM_MATH_BIG_ENDIAN\n          c0 = c0 << 16U;\n#else\n          c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n          /* Read x[7] */\n          x3 = read_q15x2 ((q15_t *) px);\n          px++;\n\n          /* Perform the multiply-accumulate */\n          acc0 = __SMLALD (x0, c0, acc0);\n          acc1 = __SMLALD (x1, c0, acc1);\n          acc2 = __SMLALDX(x1, c0, acc2);\n          acc3 = __SMLALDX(x3, c0, acc3);\n        }\n\n        if (k == 2U)\n        {\n          /* Read y[srcBLen - 5], y[srcBLen - 6] */\n          c0 = read_q15x2 ((q15_t *) py);\n\n          /* Read x[7], x[8] */\n          x3 = read_q15x2 ((q15_t *) px);\n\n          /* Read x[9] */\n          x2 = read_q15x2 ((q15_t *) px + 1);\n          px += 2U;\n\n          /* Perform the multiply-accumulate */\n          acc0 = __SMLALDX(x0, c0, acc0);\n          acc1 = __SMLALDX(x1, c0, acc1);\n          acc2 = __SMLALDX(x3, c0, acc2);\n          acc3 = __SMLALDX(x2, c0, acc3);\n        }\n\n        if (k == 3U)\n        {\n          /* Read y[srcBLen - 5], y[srcBLen - 6] */\n          c0 = read_q15x2 ((q15_t *) py);\n\n          /* Read x[7], x[8] */\n          x3 = read_q15x2 ((q15_t *) px);\n\n          /* Read x[9] */\n          x2 = read_q15x2 ((q15_t *) px + 1);\n\n          /* Perform the multiply-accumulate */\n          acc0 = __SMLALDX(x0, c0, acc0);\n          acc1 = __SMLALDX(x1, c0, acc1);\n          acc2 = __SMLALDX(x3, c0, acc2);\n          acc3 = __SMLALDX(x2, c0, acc3);\n\n          c0 = *(py-1);\n#ifdef  ARM_MATH_BIG_ENDIAN\n          c0 = c0 << 16U;\n#else\n          c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n          /* Read x[10] */\n          x3 =  read_q15x2 ((q15_t *) px + 2);\n          px += 3U;\n\n          /* Perform the multiply-accumulates */\n          acc0 = __SMLALDX(x1, c0, acc0);\n          acc1 = __SMLALD (x2, c0, acc1);\n          acc2 = __SMLALDX(x2, c0, acc2);\n          acc3 = __SMLALDX(x3, c0, acc3);\n        }\n\n        /* Store the results in the accumulators in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n        write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n        write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n        write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n        write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n        /* Increment the pointer pIn1 index, count by 4 */\n        count += 4U;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n\n      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n         No loop unrolling is used. */\n      blkCnt = (uint32_t) blockSize2 % 0x4U;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        k = srcBLen >> 2U;\n\n        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n           a second loop below computes MACs for the remaining 1 to 3 samples. */\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulates */\n          sum += (q63_t) ((q31_t) *px++ * *py--);\n          sum += (q63_t) ((q31_t) *px++ * *py--);\n          sum += (q63_t) ((q31_t) *px++ * *py--);\n          sum += (q63_t) ((q31_t) *px++ * *py--);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        k = srcBLen % 0x4U;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += (q63_t) ((q31_t) *px++ * *py--);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));\n\n        /* Increment the pointer pIn1 index, count by 1 */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n    }\n    else\n    {\n      /* If the srcBLen is not a multiple of 4,\n       * the blockSize2 loop cannot be unrolled by 4 */\n      blkCnt = (uint32_t) blockSize2;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n        /* srcBLen number of MACS should be performed */\n        k = srcBLen;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += (q63_t) ((q31_t) *px++ * *py--);\n\n          /* Decrement the loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));\n\n        /* Increment the MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    }\n\n\n    /* --------------------------\n     * Initializations of stage3\n     * -------------------------*/\n\n    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n     * ....\n     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n     * sum +=  x[srcALen-1] * y[srcBLen-1]\n     */\n\n    /* In this stage the MAC operations are decreased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed */\n    count = srcBLen - 1U;\n\n    /* Working pointer of inputA */\n    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    pIn2 = pSrc2 - 1U;\n    py = pIn2;\n\n    /* -------------------\n     * Stage3 process\n     * ------------------*/\n\n    /* For loop unrolling by 4, this stage is divided into two. */\n    /* First part of this stage computes the MAC operations greater than 4 */\n    /* Second part of this stage computes the MAC operations less than or equal to 4 */\n\n    /* The first part of the stage starts here */\n    j = count >> 2U;\n\n    while ((j > 0U) && (blockSize3 > 0U))\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = count >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied\n         * with y[srcBLen - 1], y[srcBLen - 2] respectively */\n        sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n        /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied\n         * with y[srcBLen - 3], y[srcBLen - 4] respectively */\n        sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* For the next MAC operations, the pointer py is used without SIMD\n       * So, py is incremented by 1 */\n      py = py + 1U;\n\n      /* If the count is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = count % 0x4U;\n\n      while (k > 0U)\n      {\n        /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */\n        sum = __SMLALD(*px++, *py--, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pIn2;\n\n      /* Decrement MAC count */\n      count--;\n\n      /* Decrement loop counter */\n      blockSize3--;\n\n      j--;\n    }\n\n    /* The second part of the stage starts here */\n    /* SIMD is not used for the next MAC operations,\n     * so pointer py is updated to read only one sample at a time */\n    py = py + 1U;\n\n    while (blockSize3 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = count;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n        sum = __SMLALD(*px++, *py--, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pSrc2;\n\n      /* Decrement MAC count */\n      count--;\n\n      /* Decrement the loop counter */\n      blockSize3--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  const q15_t *pIn1 = pSrcA;                           /* InputA pointer */\n  const q15_t *pIn2 = pSrcB;                           /* InputB pointer */\n        q63_t sum;                                     /* Accumulator */\n        uint32_t i, j;                                 /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* Loop to calculate convolution for output length number of values */\n    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)\n    {\n      /* Initialize sum with zero to carry on MAC operations */\n      sum = 0;\n\n      /* Loop to perform MAC operations according to convolution equation */\n      for (j = 0U; j <= i; j++)\n      {\n        /* Check the array limitations */\n        if (((i - j) < srcBLen) && (j < srcALen))\n        {\n          /* z[i] += x[i-j] * y[j] */\n          sum += ((q31_t) pIn1[j] * pIn2[i - j]);\n        }\n      }\n\n      /* Store the output in the destination buffer */\n      pDst[i] = (q15_t) __SSAT((sum >> 15U), 16U);\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_q31.c\n * Description:  Partial convolution of Q31 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q31 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n\n  @remark\n                   Refer to \\ref arm_conv_partial_fast_q31() for a faster but less precise implementation of this function.\n */\n\narm_status arm_conv_partial_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const q31_t *pIn1;                                   /* InputA pointer */\n  const q31_t *pIn2;                                   /* InputB pointer */\n        q31_t *pOut = pDst;                            /* Output pointer */\n  const q31_t *px;                                     /* Intermediate inputA pointer */\n  const q31_t *py;                                     /* Intermediate inputB pointer */\n  const q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q63_t sum;                                     /* Accumulator */\n        uint32_t j, k, count, blkCnt, check;\n        int32_t blockSize1, blockSize2, blockSize3;    /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc0, acc1, acc2;                        /* Accumulator */\n        q31_t x0, x1, x2, c0;                          /* Temporary variables */\n#endif\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Conditions to check which loopCounter holds\n     * the first and last indices of the output samples to be calculated. */\n    check = firstIndex + numPoints;\n    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;\n    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;\n    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;\n    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t) numPoints) : 0;\n    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);\n    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;\n\n    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n    /* The function is internally\n     * divided into three stages according to the number of multiplications that has to be\n     * taken place between inputA samples and inputB samples. In the first stage of the\n     * algorithm, the multiplications increase by one for every iteration.\n     * In the second stage of the algorithm, srcBLen number of multiplications are done.\n     * In the third stage of the algorithm, the multiplications decrease by one\n     * for every iteration. */\n\n    /* Set the output pointer to point to the firstIndex\n     * of the output sample to be calculated. */\n    pOut = pDst + firstIndex;\n\n    /* --------------------------\n     * Initializations of stage1\n     * -------------------------*/\n\n    /* sum = x[0] * y[0]\n     * sum = x[0] * y[1] + x[1] * y[0]\n     * ....\n     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n     */\n\n    /* In this stage the MAC operations are increased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed.\n       Since the partial convolution starts from firstIndex\n       Number of Macs to be performed is firstIndex + 1 */\n    count = 1U + firstIndex;\n\n    /* Working pointer of inputA */\n    px = pIn1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + firstIndex;\n    py = pSrc2;\n\n    /* ------------------------\n     * Stage1 process\n     * ----------------------*/\n\n    /* The first stage starts here */\n    while (blockSize1 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* x[0] * y[srcBLen - 1] */\n        sum += (q63_t) *px++ * (*py--);\n\n        /* x[1] * y[srcBLen - 2] */\n        sum += (q63_t) *px++ * (*py--);\n\n        /* x[2] * y[srcBLen - 3] */\n        sum += (q63_t) *px++ * (*py--);\n\n        /* x[3] * y[srcBLen - 4] */\n        sum += (q63_t) *px++ * (*py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize k with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += (q63_t) *px++ * (*py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q31_t) (sum >> 31);\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc2;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* --------------------------\n     * Initializations of stage2\n     * ------------------------*/\n\n    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n     * ....\n     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n     */\n\n    /* Working pointer of inputA */\n    if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)\n    {\n      pSrc1 = pIn1 + firstIndex - srcBLen + 1;\n    }\n    else\n    {\n      pSrc1 = pIn1;\n    }\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* count is index by which the pointer pIn1 to be incremented */\n    count = 0U;\n\n    /* -------------------\n     * Stage2 process\n     * ------------------*/\n\n    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n     * So, to loop unroll over blockSize2,\n     * srcBLen should be greater than or equal to 4 */\n    if (srcBLen >= 4U)\n    {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unroll over blkCnt */\n      blkCnt = blockSize2 / 3;\n\n      while (blkCnt > 0U)\n      {\n        /* Set all accumulators to zero */\n        acc0 = 0;\n        acc1 = 0;\n        acc2 = 0;\n\n        /* read x[0], x[1] samples */\n        x0 = *px++;\n        x1 = *px++;\n\n        /* Apply loop unrolling and compute 3 MACs simultaneously. */\n        k = srcBLen / 3;\n\n        /* First part of the processing with loop unrolling.  Compute 3 MACs at a time.\n         ** a second loop below computes MACs for the remaining 1 to 2 samples. */\n        do\n        {\n          /* Read y[srcBLen - 1] sample */\n          c0 = *(py);\n\n          /* Read x[2] sample */\n          x2 = *(px);\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[0] * y[srcBLen - 1] */\n          acc0 += (q63_t) x0 * c0;\n          /* acc1 +=  x[1] * y[srcBLen - 1] */\n          acc1 += (q63_t) x1 * c0;\n          /* acc2 +=  x[2] * y[srcBLen - 1] */\n          acc2 += (q63_t) x2 * c0;\n\n          /* Read y[srcBLen - 2] sample */\n          c0 = *(py - 1U);\n\n          /* Read x[3] sample */\n          x0 = *(px + 1U);\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[1] * y[srcBLen - 2] */\n          acc0 += (q63_t) x1 * c0;\n          /* acc1 +=  x[2] * y[srcBLen - 2] */\n          acc1 += (q63_t) x2 * c0;\n          /* acc2 +=  x[3] * y[srcBLen - 2] */\n          acc2 += (q63_t) x0 * c0;\n\n          /* Read y[srcBLen - 3] sample */\n          c0 = *(py - 2U);\n\n          /* Read x[4] sample */\n          x1 = *(px + 2U);\n\n          /* Perform the multiply-accumulate */\n          /* acc0 +=  x[2] * y[srcBLen - 3] */\n          acc0 += (q63_t) x2 * c0;\n          /* acc1 +=  x[3] * y[srcBLen - 2] */\n          acc1 += (q63_t) x0 * c0;\n          /* acc2 +=  x[4] * y[srcBLen - 2] */\n          acc2 += (q63_t) x1 * c0;\n\n\n          px += 3U;\n\n          py -= 3U;\n\n        } while (--k);\n\n        /* If the srcBLen is not a multiple of 3, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        k = srcBLen - (3 * (srcBLen / 3));\n\n        while (k > 0U)\n        {\n          /* Read y[srcBLen - 5] sample */\n          c0 = *py--;\n          /* Read x[7] sample */\n          x2 = *px++;\n\n          /* Perform the multiply-accumulates */\n          /* acc0 +=  x[4] * y[srcBLen - 5] */\n          acc0 += (q63_t) x0 * c0;\n          /* acc1 +=  x[5] * y[srcBLen - 5] */\n          acc1 += (q63_t) x1 * c0;\n          /* acc2 +=  x[6] * y[srcBLen - 5] */\n          acc2 += (q63_t) x2 * c0;\n\n          /* Reuse the present samples for the next MAC */\n          x0 = x1;\n          x1 = x2;\n\n          /* Decrement the loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q31_t) (acc0 >> 31);\n        *pOut++ = (q31_t) (acc1 >> 31);\n        *pOut++ = (q31_t) (acc2 >> 31);\n\n        /* Increment the pointer pIn1 index, count by 3 */\n        count += 3U;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      blkCnt = blockSize2 - 3 * (blockSize2 / 3);\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 outputs at a time */\n        k = srcBLen >> 2U;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulates */\n          sum += (q63_t) *px++ * (*py--);\n          sum += (q63_t) *px++ * (*py--);\n          sum += (q63_t) *px++ * (*py--);\n          sum += (q63_t) *px++ * (*py--);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Loop unrolling: Compute remaining outputs */\n        k = srcBLen % 0x4U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += (q63_t) *px++ * *py--;\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q31_t) (sum >> 31);\n\n        /* Increment MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n    }\n    else\n    {\n      /* If the srcBLen is not a multiple of 4,\n       * the blockSize2 loop cannot be unrolled by 4 */\n      blkCnt = (uint32_t) blockSize2;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n        /* srcBLen number of MACS should be performed */\n        k = srcBLen;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += (q63_t) *px++ * *py--;\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q31_t) (sum >> 31);\n\n        /* Increment the MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    }\n\n\n    /* --------------------------\n     * Initializations of stage3\n     * -------------------------*/\n\n    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n     * ....\n     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n     * sum +=  x[srcALen-1] * y[srcBLen-1]\n     */\n\n    /* In this stage the MAC operations are decreased by 1 for every iteration.\n       The blockSize3 variable holds the number of MAC operations performed */\n    count = srcBLen - 1U;\n\n    /* Working pointer of inputA */\n    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* -------------------\n     * Stage3 process\n     * ------------------*/\n\n    while (blockSize3 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n        sum += (q63_t) *px++ * *py--;\n\n        /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n        sum += (q63_t) *px++ * *py--;\n\n        /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n        sum += (q63_t) *px++ * *py--;\n\n        /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n        sum += (q63_t) *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n        sum += (q63_t) *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q31_t) (sum >> 31);\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pSrc2;\n\n      /* Decrement MAC count */\n      count--;\n\n      /* Decrement the loop counter */\n      blockSize3--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const q31_t *pIn1 = pSrcA;                           /* InputA pointer */\n  const q31_t *pIn2 = pSrcB;                           /* InputB pointer */\n        q63_t sum;                                     /* Accumulator */\n        uint32_t i, j;                                 /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* Loop to calculate convolution for output length number of values */\n    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)\n    {\n      /* Initialize sum with zero to carry on MAC operations */\n      sum = 0;\n\n      /* Loop to perform MAC operations according to convolution equation */\n      for (j = 0U; j <= i; j++)\n      {\n        /* Check the array limitations */\n        if (((i - j) < srcBLen) && (j < srcALen))\n        {\n          /* z[i] += x[i-j] * y[j] */\n          sum += ((q63_t) pIn1[j] * pIn2[i - j]);\n        }\n      }\n\n      /* Store the output in the destination buffer */\n      pDst[i] = (q31_t) (sum >> 31U);\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_partial_q7.c\n * Description:  Partial convolution of Q7 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup PartialConv\n  @{\n */\n\n/**\n  @brief         Partial convolution of Q7 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written\n  @param[in]     firstIndex is the first output sample to start with\n  @param[in]     numPoints  is the number of output points to be computed\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : requested subset is not in the range [0 srcALen+srcBLen-2]\n\n  @remark\n                   Refer to \\ref arm_conv_partial_opt_q7() for a faster implementation of this function.\n */\n\narm_status arm_conv_partial_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        uint32_t firstIndex,\n        uint32_t numPoints)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const q7_t *pIn1;                                    /* InputA pointer */\n  const q7_t *pIn2;                                    /* InputB pointer */\n        q7_t *pOut = pDst;                             /* Output pointer */\n  const q7_t *px;                                      /* Intermediate inputA pointer */\n  const q7_t *py;                                      /* Intermediate inputB pointer */\n  const q7_t *pSrc1, *pSrc2;                           /* Intermediate pointers */\n        q31_t sum;                                     /* Accumulator */\n        uint32_t j, k, count, blkCnt, check;           /* Loop counters */\n        int32_t blockSize1, blockSize2, blockSize3;    /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc0, acc1, acc2, acc3;                  /* Accumulator */\n        q31_t input1, input2;                          /* Temporary input variables */\n        q15_t in1, in2;                                /* Temporary input variables */\n        q7_t x0, x1, x2, x3, c0, c1;                   /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* The algorithm implementation is based on the lengths of the inputs. */\n    /* srcB is always made to slide across srcA. */\n    /* So srcBLen is always considered as shorter or equal to srcALen */\n    if (srcALen >= srcBLen)\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcA;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcB;\n    }\n    else\n    {\n      /* Initialization of inputA pointer */\n      pIn1 = pSrcB;\n\n      /* Initialization of inputB pointer */\n      pIn2 = pSrcA;\n\n      /* srcBLen is always considered as shorter or equal to srcALen */\n      j = srcBLen;\n      srcBLen = srcALen;\n      srcALen = j;\n    }\n\n    /* Conditions to check which loopCounter holds\n     * the first and last indices of the output samples to be calculated. */\n    check = firstIndex + numPoints;\n    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;\n    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;\n    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;\n    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t) numPoints) : 0;\n    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);\n    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;\n\n    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n    /* The function is internally\n     * divided into three stages according to the number of multiplications that has to be\n     * taken place between inputA samples and inputB samples. In the first stage of the\n     * algorithm, the multiplications increase by one for every iteration.\n     * In the second stage of the algorithm, srcBLen number of multiplications are done.\n     * In the third stage of the algorithm, the multiplications decrease by one\n     * for every iteration. */\n\n    /* Set the output pointer to point to the firstIndex\n     * of the output sample to be calculated. */\n    pOut = pDst + firstIndex;\n\n    /* --------------------------\n     * Initializations of stage1\n     * -------------------------*/\n\n    /* sum = x[0] * y[0]\n     * sum = x[0] * y[1] + x[1] * y[0]\n     * ....\n     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n     */\n\n    /* In this stage the MAC operations are increased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed.\n       Since the partial convolution starts from firstIndex\n       Number of Macs to be performed is firstIndex + 1 */\n    count = 1U + firstIndex;\n\n    /* Working pointer of inputA */\n    px = pIn1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + firstIndex;\n    py = pSrc2;\n\n    /* ------------------------\n     * Stage1 process\n     * ----------------------*/\n\n    /* The first stage starts here */\n    while (blockSize1 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* x[0] , x[1] */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* y[srcBLen - 1] , y[srcBLen - 2] */\n        in1 = (q15_t) *py--;\n        in2 = (q15_t) *py--;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* x[0] * y[srcBLen - 1] */\n        /* x[1] * y[srcBLen - 2] */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* x[2] , x[3] */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* y[srcBLen - 3] , y[srcBLen - 4] */\n        in1 = (q15_t) *py--;\n        in2 = (q15_t) *py--;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* x[2] * y[srcBLen - 3] */\n        /* x[3] * y[srcBLen - 4] */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize k with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q31_t) * px++ * *py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      py = ++pSrc2;\n      px = pIn1;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Decrement loop counter */\n      blockSize1--;\n    }\n\n    /* --------------------------\n     * Initializations of stage2\n     * ------------------------*/\n\n    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n     * ....\n     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n     */\n\n    /* Working pointer of inputA */\n    if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)\n    {\n      pSrc1 = pIn1 + firstIndex - srcBLen + 1;\n    }\n    else\n    {\n      pSrc1 = pIn1;\n    }\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* count is the index by which the pointer pIn1 to be incremented */\n    count = 0U;\n\n    /* -------------------\n     * Stage2 process\n     * ------------------*/\n\n    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n     * So, to loop unroll over blockSize2,\n     * srcBLen should be greater than or equal to 4 */\n    if (srcBLen >= 4U)\n    {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      blkCnt = ((uint32_t) blockSize2 >> 2U);\n\n      while (blkCnt > 0U)\n      {\n        /* Set all accumulators to zero */\n        acc0 = 0;\n        acc1 = 0;\n        acc2 = 0;\n        acc3 = 0;\n\n        /* read x[0], x[1], x[2] samples */\n        x0 = *px++;\n        x1 = *px++;\n        x2 = *px++;\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        k = srcBLen >> 2U;\n\n        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n         ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n        do\n        {\n          /* Read y[srcBLen - 1] sample */\n          c0 = *py--;\n          /* Read y[srcBLen - 2] sample */\n          c1 = *py--;\n\n          /* Read x[3] sample */\n          x3 = *px++;\n\n          /* x[0] and x[1] are packed */\n          in1 = (q15_t) x0;\n          in2 = (q15_t) x1;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* y[srcBLen - 1]   and y[srcBLen - 2] are packed */\n          in1 = (q15_t) c0;\n          in2 = (q15_t) c1;\n\n          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2]  */\n          acc0 = __SMLAD(input1, input2, acc0);\n\n          /* x[1] and x[2] are packed */\n          in1 = (q15_t) x1;\n          in2 = (q15_t) x2;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2]  */\n          acc1 = __SMLAD(input1, input2, acc1);\n\n          /* x[2] and x[3] are packed */\n          in1 = (q15_t) x2;\n          in2 = (q15_t) x3;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2]  */\n          acc2 = __SMLAD(input1, input2, acc2);\n\n          /* Read x[4] sample */\n          x0 = *px++;\n\n          /* x[3] and x[4] are packed */\n          in1 = (q15_t) x3;\n          in2 = (q15_t) x0;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2]  */\n          acc3 = __SMLAD(input1, input2, acc3);\n\n          /* Read y[srcBLen - 3] sample */\n          c0 = *py--;\n          /* Read y[srcBLen - 4] sample */\n          c1 = *py--;\n\n          /* Read x[5] sample */\n          x1 = *px++;\n\n          /* x[2] and x[3] are packed */\n          in1 = (q15_t) x2;\n          in2 = (q15_t) x3;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* y[srcBLen - 3] and y[srcBLen - 4] are packed */\n          in1 = (q15_t) c0;\n          in2 = (q15_t) c1;\n\n          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4]  */\n          acc0 = __SMLAD(input1, input2, acc0);\n\n          /* x[3] and x[4] are packed */\n          in1 = (q15_t) x3;\n          in2 = (q15_t) x0;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4]  */\n          acc1 = __SMLAD(input1, input2, acc1);\n\n          /* x[4] and x[5] are packed */\n          in1 = (q15_t) x0;\n          in2 = (q15_t) x1;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4]  */\n          acc2 = __SMLAD(input1, input2, acc2);\n\n          /* Read x[6] sample */\n          x2 = *px++;\n\n          /* x[5] and x[6] are packed */\n          in1 = (q15_t) x1;\n          in2 = (q15_t) x2;\n\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4]  */\n          acc3 = __SMLAD(input1, input2, acc3);\n\n        } while (--k);\n\n        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        k = srcBLen % 0x4U;\n\n        while (k > 0U)\n        {\n          /* Read y[srcBLen - 5] sample */\n          c0 = *py--;\n          /* Read x[7] sample */\n          x3 = *px++;\n\n          /* Perform the multiply-accumulates */\n          /* acc0 +=  x[4] * y[srcBLen - 5] */\n          acc0 += ((q31_t) x0 * c0);\n          /* acc1 +=  x[5] * y[srcBLen - 5] */\n          acc1 += ((q31_t) x1 * c0);\n          /* acc2 +=  x[6] * y[srcBLen - 5] */\n          acc2 += ((q31_t) x2 * c0);\n          /* acc3 +=  x[7] * y[srcBLen - 5] */\n          acc3 += ((q31_t) x3 * c0);\n\n          /* Reuse the present samples for the next MAC */\n          x0 = x1;\n          x1 = x2;\n          x2 = x3;\n\n          /* Decrement the loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q7_t) (__SSAT(acc0 >> 7, 8));\n        *pOut++ = (q7_t) (__SSAT(acc1 >> 7, 8));\n        *pOut++ = (q7_t) (__SSAT(acc2 >> 7, 8));\n        *pOut++ = (q7_t) (__SSAT(acc3 >> 7, 8));\n\n        /* Increment the pointer pIn1 index, count by 4 */\n        count += 4U;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      blkCnt = (uint32_t) blockSize2 % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 outputs at a time */\n        k = srcBLen >> 2U;\n\n        while (k > 0U)\n        {\n          /* Reading two inputs of SrcA buffer and packing */\n          in1 = (q15_t) *px++;\n          in2 = (q15_t) *px++;\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* Reading two inputs of SrcB buffer and packing */\n          in1 = (q15_t) *py--;\n          in2 = (q15_t) *py--;\n          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* Perform the multiply-accumulate */\n          sum = __SMLAD(input1, input2, sum);\n\n          /* Reading two inputs of SrcA buffer and packing */\n          in1 = (q15_t) *px++;\n          in2 = (q15_t) *px++;\n          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* Reading two inputs of SrcB buffer and packing */\n          in1 = (q15_t) *py--;\n          in2 = (q15_t) *py--;\n          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n          /* Perform the multiply-accumulate */\n          sum = __SMLAD(input1, input2, sum);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Loop unrolling: Compute remaining outputs */\n        k = srcBLen % 0x4U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += ((q31_t) * px++ * *py--);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));\n\n        /* Increment the pointer pIn1 index, count by 1 */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement loop counter */\n        blkCnt--;\n      }\n    }\n    else\n    {\n      /* If the srcBLen is not a multiple of 4,\n       * the blockSize2 loop cannot be unrolled by 4 */\n      blkCnt = (uint32_t) blockSize2;\n\n      while (blkCnt > 0U)\n      {\n        /* Accumulator is made zero for every iteration */\n        sum = 0;\n\n        /* srcBLen number of MACS should be performed */\n        k = srcBLen;\n\n        while (k > 0U)\n        {\n          /* Perform the multiply-accumulate */\n          sum += ((q31_t) * px++ * *py--);\n\n          /* Decrement loop counter */\n          k--;\n        }\n\n        /* Store the result in the accumulator in the destination buffer. */\n        *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));\n\n        /* Increment the MAC count */\n        count++;\n\n        /* Update the inputA and inputB pointers for next MAC calculation */\n        px = pSrc1 + count;\n        py = pSrc2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    }\n\n\n    /* --------------------------\n     * Initializations of stage3\n     * -------------------------*/\n\n    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n     * ....\n     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n     * sum +=  x[srcALen-1] * y[srcBLen-1]\n     */\n\n    /* In this stage the MAC operations are decreased by 1 for every iteration.\n       The count variable holds the number of MAC operations performed */\n    count = srcBLen - 1U;\n\n    /* Working pointer of inputA */\n    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n    px = pSrc1;\n\n    /* Working pointer of inputB */\n    pSrc2 = pIn2 + (srcBLen - 1U);\n    py = pSrc2;\n\n    /* -------------------\n     * Stage3 process\n     * ------------------*/\n\n    while (blockSize3 > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      k = count >> 2U;\n\n      while (k > 0U)\n      {\n        /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */\n        in1 = (q15_t) *py--;\n        in2 = (q15_t) *py--;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n        /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */\n        in1 = (q15_t) *py--;\n        in2 = (q15_t) *py--;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n        /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n        /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = count % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n        sum += ((q31_t) * px++ * *py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = ++pSrc1;\n      py = pSrc2;\n\n      /* Decrement MAC count */\n      count--;\n\n      /* Decrement the loop counter */\n      blockSize3--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const q7_t *pIn1 = pSrcA;                            /* InputA pointer */\n  const q7_t *pIn2 = pSrcB;                            /* InputB pointer */\n        q31_t sum;                                     /* Accumulator */\n        uint32_t i, j;                                 /* Loop counters */\n        arm_status status;                             /* Status of Partial convolution */\n\n  /* Check for range of output samples to be calculated */\n  if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U))))\n  {\n    /* Set status as ARM_MATH_ARGUMENT_ERROR */\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* Loop to calculate convolution for output length number of values */\n    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)\n    {\n      /* Initialize sum with zero to carry on MAC operations */\n      sum = 0;\n\n      /* Loop to perform MAC operations according to convolution equation */\n      for (j = 0U; j <= i; j++)\n      {\n        /* Check the array limitations */\n        if (((i - j) < srcBLen) && (j < srcALen))\n        {\n          /* z[i] += x[i-j] * y[j] */\n          sum += ((q15_t) pIn1[j] * (pIn2[i - j]));\n        }\n      }\n\n      /* Store the output in the destination buffer */\n      pDst[i] = (q7_t) __SSAT((sum >> 7U), 8U);\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of PartialConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_q15.c\n * Description:  Convolution of Q15 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q15 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both inputs are in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   This approach provides 33 guard bits and there is no risk of overflow.\n                   The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.\n\n  @remark\n                   Refer to \\ref arm_conv_fast_q15() for a faster but less precise version of this function.\n  @remark\n                   Refer to \\ref arm_conv_opt_q15() for a faster implementation of this function using scratch buffers.\n */\n\nvoid arm_conv_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst)\n{\n\n#if defined (ARM_MATH_DSP)\n\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q63_t sum, acc0, acc1, acc2, acc3;             /* Accumulators */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n  const q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary input variables to hold state and coefficient values */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[0]\n   * sum = x[0] * y[1] + x[1] * y[0]\n   * ....\n   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* For loop unrolling by 4, this stage is divided into two. */\n  /* First part of this stage computes the MAC operations less than 4 */\n  /* Second part of this stage computes the MAC operations greater than or equal to 4 */\n\n  /* The first part of the stage starts here */\n  while ((count < 4U) && (blockSize1 > 0U))\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Loop over number of MAC operations between\n     * inputA samples and inputB samples */\n    k = count;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      sum = __SMLALD(*px++, *py--, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* The second part of the stage starts here */\n  /* The internal loop, over count, is unrolled by 4 */\n  /* To, read the last two inputB samples using SIMD:\n   * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */\n  py = py - 1;\n\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */\n      sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n      /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */\n      sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* For the next MAC operations, the pointer py is used without SIMD\n     * So, py is incremented by 1 */\n    py = py + 1U;\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum = __SMLALD(*px++, *py--, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + (count - 1U);\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* count is the index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      py = py - 1U;\n\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1] samples */\n      x0 = read_q15x2 ((q15_t *) px);\n\n      /* read x[1], x[2] samples */\n      x1 = read_q15x2 ((q15_t *) px + 1);\n      px += 2U;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read the last two inputB samples using SIMD:\n         * y[srcBLen - 1] and y[srcBLen - 2] */\n        c0 = read_q15x2_da ((q15_t **) &py);\n\n        /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */\n        acc0 = __SMLALDX(x0, c0, acc0);\n\n        /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */\n        acc1 = __SMLALDX(x1, c0, acc1);\n\n        /* Read x[2], x[3] */\n        x2 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[3], x[4] */\n        x3 = read_q15x2 ((q15_t *) px + 1);\n\n        /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */\n        acc2 = __SMLALDX(x2, c0, acc2);\n\n        /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */\n        acc3 = __SMLALDX(x3, c0, acc3);\n\n        /* Read y[srcBLen - 3] and y[srcBLen - 4] */\n        c0 = read_q15x2_da ((q15_t **) &py);\n\n        /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */\n        acc0 = __SMLALDX(x2, c0, acc0);\n\n        /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */\n        acc1 = __SMLALDX(x3, c0, acc1);\n\n        /* Read x[4], x[5] */\n        x0 = read_q15x2 ((q15_t *) px + 2);\n\n        /* Read x[5], x[6] */\n        x1 = read_q15x2 ((q15_t *) px + 3);\n\n        px += 4U;\n\n        /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */\n        acc2 = __SMLALDX(x0, c0, acc2);\n\n        /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */\n        acc3 = __SMLALDX(x1, c0, acc3);\n\n      } while (--k);\n\n      /* For the next MAC operations, SIMD is not used\n       * So, the 16 bit pointer if inputB, py is updated */\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      if (k == 1U)\n      {\n        /* Read y[srcBLen - 5] */\n        c0 = *(py + 1);\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[7] */\n        x3 = read_q15x2 ((q15_t *) px);\n        px++;\n\n        /* Perform the multiply-accumulate */\n        acc0 = __SMLALD(x0, c0, acc0);\n        acc1 = __SMLALD(x1, c0, acc1);\n        acc2 = __SMLALDX(x1, c0, acc2);\n        acc3 = __SMLALDX(x3, c0, acc3);\n      }\n\n      if (k == 2U)\n      {\n        /* Read y[srcBLen - 5], y[srcBLen - 6] */\n        c0 = read_q15x2 ((q15_t *) py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n        px += 2U;\n\n        /* Perform the multiply-accumulate */\n        acc0 = __SMLALDX(x0, c0, acc0);\n        acc1 = __SMLALDX(x1, c0, acc1);\n        acc2 = __SMLALDX(x3, c0, acc2);\n        acc3 = __SMLALDX(x2, c0, acc3);\n      }\n\n      if (k == 3U)\n      {\n        /* Read y[srcBLen - 5], y[srcBLen - 6] */\n        c0 = read_q15x2 ((q15_t *) py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n\n        /* Perform the multiply-accumulate */\n        acc0 = __SMLALDX(x0, c0, acc0);\n        acc1 = __SMLALDX(x1, c0, acc1);\n        acc2 = __SMLALDX(x3, c0, acc2);\n        acc3 = __SMLALDX(x2, c0, acc3);\n\n        c0 = *(py-1);\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[10] */\n        x3 =  read_q15x2 ((q15_t *) px + 2);\n        px += 3U;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLALDX(x1, c0, acc0);\n        acc1 = __SMLALD(x2, c0, acc1);\n        acc2 = __SMLALDX(x2, c0, acc2);\n        acc3 = __SMLALDX(x3, c0, acc3);\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n#ifndef  ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n      write_q15x2_ia (&pOut, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = blockSize2 % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += (q63_t) ((q31_t) *px++ * *py--);\n        sum += (q63_t) ((q31_t) *px++ * *py--);\n        sum += (q63_t) ((q31_t) *px++ * *py--);\n        sum += (q63_t) ((q31_t) *px++ * *py--);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += (q63_t) ((q31_t) *px++ * *py--);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));\n\n      /* Increment the pointer pIn1 index, count by 1 */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += (q63_t) ((q31_t) *px++ * *py--);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));\n\n      /* Increment the MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n   * ....\n   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n   * sum +=  x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The blockSize3 variable holds the number of MAC operations performed */\n  blockSize3 = srcBLen - 1U;\n\n  /* Working pointer of inputA */\n  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  pIn2 = pSrc2 - 1U;\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  /* For loop unrolling by 4, this stage is divided into two. */\n  /* First part of this stage computes the MAC operations greater than 4 */\n  /* Second part of this stage computes the MAC operations less than or equal to 4 */\n\n  /* The first part of the stage starts here */\n  j = blockSize3 >> 2U;\n\n  while ((j > 0U) && (blockSize3 > 0U))\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = blockSize3 >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied\n       * with y[srcBLen - 1], y[srcBLen - 2] respectively */\n      sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n      /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied\n       * with y[srcBLen - 3], y[srcBLen - 4] respectively */\n      sum = __SMLALDX(read_q15x2_ia ((q15_t **) &px), read_q15x2_da ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* For the next MAC operations, the pointer py is used without SIMD\n     * So, py is incremented by 1 */\n    py = py + 1U;\n\n    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = blockSize3 % 0x4U;\n\n    while (k > 0U)\n    {\n      /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */\n      sum = __SMLALD(*px++, *py--, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement loop counter */\n    blockSize3--;\n\n    j--;\n  }\n\n  /* The second part of the stage starts here */\n  /* SIMD is not used for the next MAC operations,\n   * so pointer py is updated to read only one sample at a time */\n  py = py + 1U;\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = blockSize3;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n      sum = __SMLALD(*px++, *py--, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pSrc2;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  const q15_t *pIn1 = pSrcA;                           /* InputA pointer */\n  const q15_t *pIn2 = pSrcB;                           /* InputB pointer */\n        q63_t sum;                                     /* Accumulator */\n        uint32_t i, j;                                 /* Loop counters */\n\n  /* Loop to calculate convolution for output length number of values */\n  for (i = 0; i < (srcALen + srcBLen - 1); i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if (((i - j) < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q31_t) pIn1[j] * pIn2[i - j]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = (q15_t) __SSAT((sum >> 15U), 16U);\n  }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_q31.c\n * Description:  Convolution of Q31 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q31 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   There is no saturation on intermediate additions.\n                   Thus, if the accumulator overflows it wraps around and distorts the result.\n                   The input signals should be scaled down to avoid intermediate overflows.\n                   Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,\n                   as maximum of min(srcALen, srcBLen) number of additions are carried internally.\n                   The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.\n\n  @remark\n                   Refer to \\ref arm_conv_fast_q31() for a faster but less precise implementation of this function.\n */\n\nvoid arm_conv_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const q31_t *pIn1;                                   /* InputA pointer */\n  const q31_t *pIn2;                                   /* InputB pointer */\n        q31_t *pOut = pDst;                            /* Output pointer */\n  const q31_t *px;                                     /* Intermediate inputA pointer */\n  const q31_t *py;                                     /* Intermediate inputB pointer */\n  const q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers */\n        q63_t sum;                                     /* Accumulators */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc0, acc1, acc2;                        /* Accumulators */\n        q31_t x0, x1, x2, c0;                          /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[0]\n   * sum = x[0] * y[1] + x[1] * y[0]\n   * ....\n   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n    while (k > 0U)\n    {\n      /* x[0] * y[srcBLen - 1] */\n      sum += (q63_t) *px++ * (*py--);\n\n      /* x[1] * y[srcBLen - 2] */\n      sum += (q63_t) *px++ * (*py--);\n\n      /* x[2] * y[srcBLen - 3] */\n      sum += (q63_t) *px++ * (*py--);\n\n      /* x[3] * y[srcBLen - 4] */\n      sum += (q63_t) *px++ * (*py--);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#else\n\n    /* Initialize k with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += (q63_t) *px++ * *py--;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q31_t) (sum >> 31);\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen]   * y[0]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unroll by 3 */\n    blkCnt = blockSize2 / 3;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n\n      /* read x[0], x[1], x[2] samples */\n      x0 = *px++;\n      x1 = *px++;\n\n      /* Apply loop unrolling and compute 3 MACs simultaneously. */\n      k = srcBLen / 3;\n\n      /* First part of the processing with loop unrolling.  Compute 3 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 2 samples. */\n      do\n      {\n        /* Read y[srcBLen - 1] sample */\n        c0 = *(py);\n        /* Read x[3] sample */\n        x2 = *(px);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[0] * y[srcBLen - 1] */\n        acc0 += ((q63_t) x0 * c0);\n        /* acc1 +=  x[1] * y[srcBLen - 1] */\n        acc1 += ((q63_t) x1 * c0);\n        /* acc2 +=  x[2] * y[srcBLen - 1] */\n        acc2 += ((q63_t) x2 * c0);\n\n        /* Read y[srcBLen - 2] sample */\n        c0 = *(py - 1U);\n        /* Read x[4] sample */\n        x0 = *(px + 1U);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[1] * y[srcBLen - 2] */\n        acc0 += ((q63_t) x1 * c0);\n        /* acc1 +=  x[2] * y[srcBLen - 2] */\n        acc1 += ((q63_t) x2 * c0);\n        /* acc2 +=  x[3] * y[srcBLen - 2] */\n        acc2 += ((q63_t) x0 * c0);\n\n        /* Read y[srcBLen - 3] sample */\n        c0 = *(py - 2U);\n        /* Read x[5] sample */\n        x1 = *(px + 2U);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[2] * y[srcBLen - 3] */\n        acc0 += ((q63_t) x2 * c0);\n        /* acc1 +=  x[3] * y[srcBLen - 2] */\n        acc1 += ((q63_t) x0 * c0);\n        /* acc2 +=  x[4] * y[srcBLen - 2] */\n        acc2 += ((q63_t) x1 * c0);\n\n        /* update scratch pointers */\n        px += 3U;\n        py -= 3U;\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 3, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen - (3 * (srcBLen / 3));\n\n      while (k > 0U)\n      {\n        /* Read y[srcBLen - 5] sample */\n        c0 = *py--;\n        /* Read x[7] sample */\n        x2 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[4] * y[srcBLen - 5] */\n        acc0 += ((q63_t) x0 * c0);\n        /* acc1 +=  x[5] * y[srcBLen - 5] */\n        acc1 += ((q63_t) x1 * c0);\n        /* acc2 +=  x[6] * y[srcBLen - 5] */\n        acc2 += ((q63_t) x2 * c0);\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q31_t) (acc0 >> 31);\n      *pOut++ = (q31_t) (acc1 >> 31);\n      *pOut++ = (q31_t) (acc2 >> 31);\n\n      /* Increment the pointer pIn1 index, count by 3 */\n      count += 3U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize2 - 3 * (blockSize2 / 3);\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n      k = srcBLen >> 2U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += (q63_t) *px++ * *py--;\n        sum += (q63_t) *px++ * *py--;\n        sum += (q63_t) *px++ * *py--;\n        sum += (q63_t) *px++ * *py--;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = srcBLen % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += (q63_t) *px++ * *py--;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q31_t) (sum >> 31);\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += (q63_t) *px++ * *py--;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q31_t) (sum >> 31);\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n   * ....\n   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n   * sum +=  x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The blockSize3 variable holds the number of MAC operations performed */\n\n  /* Working pointer of inputA */\n  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = blockSize3 >> 2U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n      sum += (q63_t) *px++ * *py--;\n\n      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n      sum += (q63_t) *px++ * *py--;\n\n      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n      sum += (q63_t) *px++ * *py--;\n\n      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n      sum += (q63_t) *px++ * *py--;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = blockSize3 % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    k = blockSize3;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n      sum += (q63_t) *px++ * *py--;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q31_t) (sum >> 31);\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pSrc2;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const q31_t *pIn1 = pSrcA;                           /* InputA pointer */\n  const q31_t *pIn2 = pSrcB;                           /* InputB pointer */\n        q63_t sum;                                     /* Accumulators */\n        uint32_t i, j;                                 /* Loop counters */\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i < (srcALen + srcBLen - 1U); i++)\n  {\n    /* Initialize sum with zero to carry out MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if (((i - j) < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q63_t) pIn1[j] * pIn2[i - j]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = (q31_t) (sum >> 31U);\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_conv_q7.c\n * Description:  Convolution of Q7 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Conv\n  @{\n */\n\n/**\n  @brief         Convolution of Q7 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length srcALen+srcBLen-1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.\n                   The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.\n                   This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.\n                   The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format.\n  @remark\n                   Refer to \\ref arm_conv_opt_q7() for a faster implementation of this function.\n */\n\nvoid arm_conv_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const q7_t *pIn1;                                    /* InputA pointer */\n  const q7_t *pIn2;                                    /* InputB pointer */\n        q7_t *pOut = pDst;                             /* Output pointer */\n  const q7_t *px;                                      /* Intermediate inputA pointer */\n  const q7_t *py;                                      /* Intermediate inputB pointer */\n  const q7_t *pSrc1, *pSrc2;                           /* Intermediate pointers */\n        q31_t sum;                                     /* Accumulators */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */\n        q31_t input1, input2;                          /* Temporary input variables */\n        q15_t in1, in2;                                /* Temporary input variables */\n        q7_t x0, x1, x2, x3, c0, c1;                   /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n  }\n\n  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[0]\n   * sum = x[0] * y[1] + x[1] * y[0]\n   * ....\n   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n    while (k > 0U)\n    {\n      /* x[0] , x[1] */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* y[srcBLen - 1] , y[srcBLen - 2] */\n      in1 = (q15_t) *py--;\n      in2 = (q15_t) *py--;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* x[0] * y[srcBLen - 1] */\n      /* x[1] * y[srcBLen - 2] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* x[2] , x[3] */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* y[srcBLen - 3] , y[srcBLen - 4] */\n      in1 = (q15_t) *py--;\n      in2 = (q15_t) *py--;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* x[2] * y[srcBLen - 3] */\n      /* x[3] * y[srcBLen - 4] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#else\n\n    /* Initialize k with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += ((q15_t) *px++ * *py--);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8));\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pIn2 + count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]\n   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen]   * y[0]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1], x[2] samples */\n      x0 = *px++;\n      x1 = *px++;\n      x2 = *px++;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read y[srcBLen - 1] sample */\n        c0 = *py--;\n        /* Read y[srcBLen - 2] sample */\n        c1 = *py--;\n\n        /* Read x[3] sample */\n        x3 = *px++;\n\n        /* x[0] and x[1] are packed */\n        in1 = (q15_t) x0;\n        in2 = (q15_t) x1;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* y[srcBLen - 1]   and y[srcBLen - 2] are packed */\n        in1 = (q15_t) c0;\n        in2 = (q15_t) c1;\n\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2]  */\n        acc0 = __SMLAD(input1, input2, acc0);\n\n        /* x[1] and x[2] are packed */\n        in1 = (q15_t) x1;\n        in2 = (q15_t) x2;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2]  */\n        acc1 = __SMLAD(input1, input2, acc1);\n\n        /* x[2] and x[3] are packed */\n        in1 = (q15_t) x2;\n        in2 = (q15_t) x3;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2]  */\n        acc2 = __SMLAD(input1, input2, acc2);\n\n        /* Read x[4] sample */\n        x0 = *px++;\n\n        /* x[3] and x[4] are packed */\n        in1 = (q15_t) x3;\n        in2 = (q15_t) x0;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2]  */\n        acc3 = __SMLAD(input1, input2, acc3);\n\n        /* Read y[srcBLen - 3] sample */\n        c0 = *py--;\n        /* Read y[srcBLen - 4] sample */\n        c1 = *py--;\n\n        /* Read x[5] sample */\n        x1 = *px++;\n\n        /* x[2] and x[3] are packed */\n        in1 = (q15_t) x2;\n        in2 = (q15_t) x3;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* y[srcBLen - 3] and y[srcBLen - 4] are packed */\n        in1 = (q15_t) c0;\n        in2 = (q15_t) c1;\n\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4]  */\n        acc0 = __SMLAD(input1, input2, acc0);\n\n        /* x[3] and x[4] are packed */\n        in1 = (q15_t) x3;\n        in2 = (q15_t) x0;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4]  */\n        acc1 = __SMLAD(input1, input2, acc1);\n\n        /* x[4] and x[5] are packed */\n        in1 = (q15_t) x0;\n        in2 = (q15_t) x1;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4]  */\n        acc2 = __SMLAD(input1, input2, acc2);\n\n        /* Read x[6] sample */\n        x2 = *px++;\n\n        /* x[5] and x[6] are packed */\n        in1 = (q15_t) x1;\n        in2 = (q15_t) x2;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4]  */\n        acc3 = __SMLAD(input1, input2, acc3);\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Read y[srcBLen - 5] sample */\n        c0 = *py--;\n        /* Read x[7] sample */\n        x3 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[4] * y[srcBLen - 5] */\n        acc0 += ((q15_t) x0 * c0);\n        /* acc1 +=  x[5] * y[srcBLen - 5] */\n        acc1 += ((q15_t) x1 * c0);\n        /* acc2 +=  x[6] * y[srcBLen - 5] */\n        acc2 += ((q15_t) x2 * c0);\n        /* acc3 +=  x[7] * y[srcBLen - 5] */\n        acc3 += ((q15_t) x3 * c0);\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8));\n      *pOut++ = (q7_t) (__SSAT(acc1 >> 7U, 8));\n      *pOut++ = (q7_t) (__SSAT(acc2 >> 7U, 8));\n      *pOut++ = (q7_t) (__SSAT(acc3 >> 7U, 8));\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize2 % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n      k = srcBLen >> 2U;\n\n      while (k > 0U)\n      {\n\n        /* Reading two inputs of SrcA buffer and packing */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Reading two inputs of SrcB buffer and packing */\n        in1 = (q15_t) *py--;\n        in2 = (q15_t) *py--;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Perform the multiply-accumulate */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* Reading two inputs of SrcA buffer and packing */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Reading two inputs of SrcB buffer and packing */\n        in1 = (q15_t) *py--;\n        in2 = (q15_t) *py--;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Perform the multiply-accumulate */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = srcBLen % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q15_t) *px++ * *py--);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8));\n\n      /* Increment the pointer pIn1 index, count by 1 */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q15_t) *px++ * *py--);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8));\n\n      /* Increment the MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pSrc2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]\n   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]\n   * ....\n   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]\n   * sum +=  x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The blockSize3 variable holds the number of MAC operations performed */\n\n  /* Working pointer of inputA */\n  pSrc1 = pIn1 + (srcALen - (srcBLen - 1U));\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  pSrc2 = pIn2 + (srcBLen - 1U);\n  py = pSrc2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = blockSize3 >> 2U;\n\n    while (k > 0U)\n    {\n      /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */\n      in1 = (q15_t) *py--;\n      in2 = (q15_t) *py--;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */\n      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */\n      in1 = (q15_t) *py--;\n      in2 = (q15_t) *py--;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */\n      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = blockSize3 % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    k = blockSize3;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum +=  x[srcALen-1] * y[srcBLen-1] */\n      sum += ((q15_t) *px++ * *py--);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8));\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pSrc2;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const q7_t *pIn1 = pSrcA;                            /* InputA pointer */\n  const q7_t *pIn2 = pSrcB;                            /* InputB pointer */\n        q31_t sum;                                     /* Accumulator */\n        uint32_t i, j;                                 /* Loop counters */\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i < (srcALen + srcBLen - 1U); i++)\n  {\n    /* Initialize sum with zero to carry out MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if (((i - j) < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q15_t) pIn1[j] * pIn2[i - j]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    pDst[i] = (q7_t) __SSAT((sum >> 7U), 8U);\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of Conv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_f32.c\n * Description:  Correlation of floating-point sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup Corr Correlation\n\n  Correlation is a mathematical operation that is similar to convolution.\n  As with convolution, correlation uses two signals to produce a third signal.\n  The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution.\n  Correlation is commonly used to measure the similarity between two signals.\n  It has applications in pattern recognition, cryptanalysis, and searching.\n  The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types.\n  Fast versions of the Q15 and Q31 functions are also provided.\n\n  @par           Algorithm\n                   Let <code>a[n]</code> and <code>b[n]</code> be sequences of length <code>srcALen</code> and <code>srcBLen</code> samples respectively.\n                   The convolution of the two signals is denoted by\n  <pre>\n      c[n] = a[n] * b[n]\n  </pre>\n                   In correlation, one of the signals is flipped in time\n  <pre>\n       c[n] = a[n] * b[-n]\n  </pre>\n  @par\n                   and this is mathematically defined as\n                   \\image html CorrelateEquation.gif\n  @par\n                   The <code>pSrcA</code> points to the first input vector of length <code>srcALen</code> and <code>pSrcB</code> points to the second input vector of length <code>srcBLen</code>.\n                   The result <code>c[n]</code> is of length <code>2 * max(srcALen, srcBLen) - 1</code> and is defined over the interval <code>n=0, 1, 2, ..., (2 * max(srcALen, srcBLen) - 2)</code>.\n                   The output result is written to <code>pDst</code> and the calling function must allocate <code>2 * max(srcALen, srcBLen) - 1</code> words for the result.\n\n  @note\n                   The <code>pDst</code> should be initialized to all zeros before being used.\n\n  @par           Fixed-Point Behavior\n                   Correlation requires summing up a large number of intermediate products.\n                   As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation.\n                   Refer to the function specific documentation below for further details of the particular algorithm used.\n\n  @par           Fast Versions\n                   Fast versions are supported for Q31 and Q15.  Cycles for Fast versions are less compared to Q31 and Q15 of correlate and the design requires\n                   the input signals should be scaled down to avoid intermediate overflows.\n\n  @par           Opt Versions\n                   Opt versions are supported for Q15 and Q7.  Design uses internal scratch buffer for getting good optimisation.\n                   These versions are optimised in cycles and consumes more memory (Scratch memory) compared to Q15 and Q7 versions of correlate\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of floating-point sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @return        none\n */\n\nvoid arm_correlate_f32(\n  const float32_t * pSrcA,\n        uint32_t srcALen,\n  const float32_t * pSrcB,\n        uint32_t srcBLen,\n        float32_t * pDst)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n  \n  const float32_t *pIn1;                               /* InputA pointer */\n  const float32_t *pIn2;                               /* InputB pointer */\n        float32_t *pOut = pDst;                        /* Output pointer */\n  const float32_t *px;                                 /* Intermediate inputA pointer */\n  const float32_t *py;                                 /* Intermediate inputB pointer */\n  const float32_t *pSrc1;\n        float32_t sum;\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n        uint32_t outBlockSize;                         /* Loop counter */\n        int32_t inc = 1;                               /* Destination address modifier */\n\n#if defined (ARM_MATH_LOOPUNROLL) || defined (ARM_MATH_NEON)\n  float32_t acc0, acc1, acc2, acc3;                    /* Accumulators */\n  float32_t x0, x1, x2, x3, c0;                        /* temporary variables for holding input and coefficient values */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we assume zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (2U * srcALen) - 1U;\n\n    /* When srcALen > srcBLen, zero padding has to be done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n  }\n\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[srcBlen - 1]\n   * sum = x[0] * y[srcBlen-2] + x[1] * y[srcBlen - 1]\n   * ....\n   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc1 = pIn2 + (srcBLen - 1U);\n  py = pSrc1;\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t x,y;\n    float32x4_t res = vdupq_n_f32(0) ;\n    float32x2_t accum = vdup_n_f32(0);\n\n    while (k > 0U)\n    {\n      x = vld1q_f32(px);\n      y = vld1q_f32(py);\n\n      res = vmlaq_f32(res,x, y);\n\n      px += 4;\n      py += 4;\n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    accum = vpadd_f32(vget_low_f32(res), vget_high_f32(res));\n    sum += accum[0] + accum[1];\n\n    k = count & 0x3;\n#else\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* x[0] * y[srcBLen - 4] */\n      sum += *px++ * *py++;\n\n      /* x[1] * y[srcBLen - 3] */\n      sum += *px++ * *py++;\n\n      /* x[2] * y[srcBLen - 2] */\n      sum += *px++ * *py++;\n\n      /* x[3] * y[srcBLen - 1] */\n      sum += *px++ * *py++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#endif /* #if defined(ARM_MATH_NEON) */\n#else\n\n    /* Initialize k with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[0] * y[srcBLen - 1] */\n      sum += *px++ * *py++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = sum;\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pSrc1 - count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]\n   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen]   * y[srcBLen-1]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = blockSize2 >> 2U;\n\n#if defined(ARM_MATH_NEON)\n      float32x4_t c;\n      float32x4_t x1v;\n      float32x4_t x2v;\n      uint32x4_t x1v_u;\n      uint32x4_t x2v_u;\n      float32x4_t x;\n      uint32x4_t x_u;\n      float32x4_t res = vdupq_n_f32(0) ;\n#endif /* #if defined(ARM_MATH_NEON) */\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0.0f;\n      acc1 = 0.0f;\n      acc2 = 0.0f;\n      acc3 = 0.0f;\n\n#if defined(ARM_MATH_NEON)\n      /* Compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      res = vdupq_n_f32(0) ;\n\n      x1v = vld1q_f32(px);\n      px += 4;\n      do\n      {\n        x2v = vld1q_f32(px);\n        c = vld1q_f32(py);\n\n        py += 4;\n\n        x = x1v;\n        res = vmlaq_n_f32(res,x,c[0]);\n\n        x = vextq_f32(x1v,x2v,1);\n\n        res = vmlaq_n_f32(res,x,c[1]);\n\n        x = vextq_f32(x1v,x2v,2);\n\n\tres = vmlaq_n_f32(res,x,c[2]);\n\n        x = vextq_f32(x1v,x2v,3);\n\n\tres = vmlaq_n_f32(res,x,c[3]);\n\n        x1v = x2v;\n        px+=4;\n        x2v = vld1q_f32(px);\n\n      } while (--k);\n      \n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen & 0x3;\n\n      while (k > 0U)\n      {\n        /* Read y[srcBLen - 5] sample */\n        c0 = *(py++);\n\n        res = vmlaq_n_f32(res,x1v,c0);\n\n        /* Reuse the present samples for the next MAC */\n        x1v[0] = x1v[1];\n        x1v[1] = x1v[2];\n        x1v[2] = x1v[3];\n\n        x1v[3] = *(px++);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      px-=1;\n\n      acc0 = res[0];\n      acc1 = res[1];\n      acc2 = res[2];\n      acc3 = res[3];\n#else\n      /* read x[0], x[1], x[2] samples */\n      x0 = *px++;\n      x1 = *px++;\n      x2 = *px++;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read y[0] sample */\n        c0 = *(py++);\n        /* Read x[3] sample */\n        x3 = *(px++);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[0] * y[0] */\n        acc0 += x0 * c0;\n        /* acc1 +=  x[1] * y[0] */\n        acc1 += x1 * c0;\n        /* acc2 +=  x[2] * y[0] */\n        acc2 += x2 * c0;\n        /* acc3 +=  x[3] * y[0] */\n        acc3 += x3 * c0;\n\n        /* Read y[1] sample */\n        c0 = *(py++);\n        /* Read x[4] sample */\n        x0 = *(px++);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[1] * y[1] */\n        acc0 += x1 * c0;\n        /* acc1 +=  x[2] * y[1] */\n        acc1 += x2 * c0;\n        /* acc2 +=  x[3] * y[1] */\n        acc2 += x3 * c0;\n        /* acc3 +=  x[4] * y[1] */\n        acc3 += x0 * c0;\n\n        /* Read y[2] sample */\n        c0 = *(py++);\n        /* Read x[5] sample */\n        x1 = *(px++);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[2] * y[2] */\n        acc0 += x2 * c0;\n        /* acc1 +=  x[3] * y[2] */\n        acc1 += x3 * c0;\n        /* acc2 +=  x[4] * y[2] */\n        acc2 += x0 * c0;\n        /* acc3 +=  x[5] * y[2] */\n        acc3 += x1 * c0;\n\n        /* Read y[3] sample */\n        c0 = *(py++);\n        /* Read x[6] sample */\n        x2 = *(px++);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[3] * y[3] */\n        acc0 += x3 * c0;\n        /* acc1 +=  x[4] * y[3] */\n        acc1 += x0 * c0;\n        /* acc2 +=  x[5] * y[3] */\n        acc2 += x1 * c0;\n        /* acc3 +=  x[6] * y[3] */\n        acc3 += x2 * c0;\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Read y[4] sample */\n        c0 = *(py++);\n        /* Read x[7] sample */\n        x3 = *(px++);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[4] * y[4] */\n        acc0 += x0 * c0;\n        /* acc1 +=  x[5] * y[4] */\n        acc1 += x1 * c0;\n        /* acc2 +=  x[6] * y[4] */\n        acc2 += x2 * c0;\n        /* acc3 +=  x[7] * y[4] */\n        acc3 += x3 * c0;\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n#endif /* #if defined(ARM_MATH_NEON) */\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = acc0;\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      *pOut = acc1;\n      pOut += inc;\n\n      *pOut = acc2;\n      pOut += inc;\n\n      *pOut = acc3;\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize2 % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON) */\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n      k = srcBLen >> 2U;\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t x,y;\n    float32x4_t res = vdupq_n_f32(0) ;\n    float32x2_t accum = vdup_n_f32(0);\n\n    while (k > 0U)\n    {\n      x = vld1q_f32(px);\n      y = vld1q_f32(py);\n\n      res = vmlaq_f32(res,x, y);\n\n      px += 4;\n      py += 4;\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    accum = vpadd_f32(vget_low_f32(res), vget_high_f32(res));\n    sum += accum[0] + accum[1];\n#else\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *px++ * *py++;\n        sum += *px++ * *py++;\n        sum += *px++ * *py++;\n        sum += *px++ * *py++;\n\n        /* Decrement loop counter */\n        k--;\n      }\n#endif /* #if defined(ARM_MATH_NEON) */\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *px++ * *py++;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = sum;\n\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 1 */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0.0f;\n\n      /* Loop over srcBLen */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += *px++ * *py++;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = sum;\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 1 */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * ....\n   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]\n   * sum +=  x[srcALen-1] * y[0]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = srcBLen - 1U;\n\n  /* Working pointer of inputA */\n  pSrc1 = pIn1 + (srcALen - (srcBLen - 1U));\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n#if defined(ARM_MATH_NEON)\n    float32x4_t x,y;\n    float32x4_t res = vdupq_n_f32(0) ;\n    float32x2_t accum = vdup_n_f32(0);\n\n    while (k > 0U)\n    {\n      x = vld1q_f32(px);\n      y = vld1q_f32(py);\n\n      res = vmlaq_f32(res,x, y);\n\n      px += 4;\n      py += 4;\n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    accum = vpadd_f32(vget_low_f32(res), vget_high_f32(res));\n    sum += accum[0] + accum[1];\n#else\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum += x[srcALen - srcBLen + 4] * y[3] */\n      sum += *px++ * *py++;\n\n      /* sum += x[srcALen - srcBLen + 3] * y[2] */\n      sum += *px++ * *py++;\n\n      /* sum += x[srcALen - srcBLen + 2] * y[1] */\n      sum += *px++ * *py++;\n\n      /* sum += x[srcALen - srcBLen + 1] * y[0] */\n      sum += *px++ * *py++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n#endif /* #if defined (ARM_MATH_NEON) */\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) || defined(ARM_MATH_NEON) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += *px++ * *py++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = sum;\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement MAC count */\n    count--;\n\n    /* Decrement the loop counter */\n    blockSize3--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const float32_t *pIn1 = pSrcA;                       /* inputA pointer */\n  const float32_t *pIn2 = pSrcB + (srcBLen - 1U);      /* inputB pointer */\n        float32_t sum;                                 /* Accumulator */\n        uint32_t i = 0U, j;                            /* Loop counters */\n        uint32_t inv = 0U;                             /* Reverse order flag */\n        uint32_t tot = 0U;                             /* Length */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and a varaible, inv is set to 1 */\n  /* If lengths are not equal then zero pad has to be done to  make the two\n   * inputs of same length. But to improve the performance, we assume zeroes\n   * in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * starting of the output buffer */\n  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * ending of the output buffer */\n  /* Once the zero padding is done the remaining of the output is calcualted\n   * using convolution but with the shorter signal time shifted. */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n\n  }\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry out MAC operations */\n    sum = 0.0f;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if ((((i - j) < srcBLen) && (j < srcALen)))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += pIn1[j] * pIn2[-((int32_t) i - j)];\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = sum;\n    else\n      *pDst++ = sum;\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_fast_opt_q15.c\n * Description:  Fast Q15 Correlation\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q15 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence.\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @param[in]     pScratch   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This fast version uses a 32-bit accumulator with 2.30 format.\n                   The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   There is no saturation on intermediate additions.\n                   Thus, if the accumulator overflows it wraps around and distorts the result.\n                   The input signals should be scaled down to avoid intermediate overflows.\n                   Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a\n                   maximum of min(srcALen, srcBLen) number of additions is carried internally.\n                   The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.\n\n  @remark\n                   Refer to \\ref arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.\n */\n\nvoid arm_correlate_fast_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch)\n{\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q31_t acc0;                                    /* Accumulators */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q15_t *pScr1 = pScratch;                       /* Temporary pointer for scratch */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n        uint32_t j, blkCnt, outBlockSize;              /* Loop counter */\n        int32_t inc = 1;                               /* Destination address modifier */\n        uint32_t tapCnt;                               /* Loop count */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc1, acc2, acc3;                        /* Accumulators */\n        q31_t x1, x2, x3;                              /* Temporary variables for holding input and coefficient values */\n        q31_t y1, y2;                                  /* State variables */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we include zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (2U * srcALen) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n  }\n\n  pScr1 = pScratch;\n\n  /* Fill (srcBLen - 1U) zeros in scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update temporary scratch pointer */\n  pScr1 += (srcBLen - 1U);\n\n\n  /* Copy (srcALen) samples in scratch buffer */\n  arm_copy_q15(pIn1, pScr1, srcALen);\n\n  /* Update pointers */\n  pScr1 += srcALen;\n\n\n  /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Temporary pointer for scratch2 */\n  py = pIn2;\n\n\n  /* Actual correlation process starts here */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (srcALen + srcBLen - 1U) >> 2;\n\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Read two samples from scratch buffer */\n    x1 = read_q15x2_ia (&pScr1);\n\n    /* Read next two samples from scratch buffer */\n    x2 = read_q15x2_ia (&pScr1);\n\n    tapCnt = (srcBLen) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia ((q15_t **) &pIn2);\n      y2 = read_q15x2_ia ((q15_t **) &pIn2);\n\n      /* multiply and accumlate */\n      acc0 = __SMLAD(x1, y1, acc0);\n      acc2 = __SMLAD(x2, y1, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      /* multiply and accumlate */\n      acc1 = __SMLADX(x3, y1, acc1);\n\n      /* Read next two samples from scratch buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* multiply and accumlate */\n      acc0 = __SMLAD(x2, y2, acc0);\n      acc2 = __SMLAD(x1, y2, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x1, x2, 0);\n#else\n      x3 = __PKHBT(x2, x1, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y1, acc3);\n      acc1 = __SMLADX(x3, y2, acc1);\n\n      x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y2, acc3);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Update scratch pointer for remaining samples of smaller length sequence */\n    pScr1 -= 4U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    tapCnt = (srcBLen) & 3U;\n\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2);\n      acc1 += (*pScr1++ * *pIn2);\n      acc2 += (*pScr1++ * *pIn2);\n      acc3 += (*pScr1++ * *pIn2++);\n\n      pScr1 -= 3U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* Store the results in the accumulators in the destination buffer. */\n    *pOut = (__SSAT(acc0 >> 15U, 16));\n    pOut += inc;\n    *pOut = (__SSAT(acc1 >> 15U, 16));\n    pOut += inc;\n    *pOut = (__SSAT(acc2 >> 15U, 16));\n    pOut += inc;\n    *pOut = (__SSAT(acc3 >> 15U, 16));\n    pOut += inc;\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch += 4U;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (srcALen + srcBLen - 1U) & 0x3;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (srcALen + srcBLen - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Calculate correlation for remaining samples of Bigger length sequence */\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n\n    tapCnt = (srcBLen) >> 1U;\n\n    while (tapCnt > 0U)\n    {\n\n      /* Read next two samples from scratch buffer */\n      acc0 += (*pScr1++ * *pIn2++);\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    tapCnt = (srcBLen) & 1U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    while (tapCnt > 0U)\n    {\n\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* The result is in 2.30 format.  Convert to 1.15 with saturation.\n     ** Then store the output in the destination buffer. */\n    *pOut = (q15_t) (__SSAT((acc0 >> 15), 16));\n    pOut += inc;\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch += 1U;\n  }\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_fast_q15.c\n * Description:  Fast Q15 Correlation\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q15 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This fast version uses a 32-bit accumulator with 2.30 format.\n                   The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   There is no saturation on intermediate additions.\n                   Thus, if the accumulator overflows it wraps around and distorts the result.\n                   The input signals should be scaled down to avoid intermediate overflows.\n                   Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a\n                   maximum of min(srcALen, srcBLen) number of additions is carried internally.\n                   The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.\n\n  @remark\n                   Refer to \\ref arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.\n */\n\nvoid arm_correlate_fast_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst)\n{\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n  const q15_t *pSrc1;                                  /* Intermediate pointers */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary variables for holding input and coefficient values */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n        uint32_t outBlockSize;\n        int32_t inc = 1;                               /* Destination address modifier */\n\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we include zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (2U * srcALen) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n\n  }\n\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[srcBlen - 1]\n   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]\n   * ....\n   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc1 = pIn2 + (srcBLen - 1U);\n  py = pSrc1;\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first loop starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */\n      sum = __SMLAD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n      /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */\n      sum = __SMLAD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n       No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      /* x[0] * y[srcBLen - 1] */\n      sum = __SMLAD(*px++, *py++, sum);\n\n      /* Decrement the loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q15_t) (sum >> 15);\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pSrc1 - count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]\n   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* count is the index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* --------------------\n   * Stage2 process\n   * -------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n    /* Loop unroll over blockSize2, by 4 */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1] samples */\n      x0 = read_q15x2 ((q15_t *) px);\n      /* read x[1], x[2] samples */\n      x1 = read_q15x2 ((q15_t *) px + 1);\n\t  px += 2U;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read the first two inputB samples using SIMD:\n         * y[0] and y[1] */\n        c0 = read_q15x2_ia ((q15_t **) &py);\n\n        /* acc0 +=  x[0] * y[0] + x[1] * y[1] */\n        acc0 = __SMLAD(x0, c0, acc0);\n\n        /* acc1 +=  x[1] * y[0] + x[2] * y[1] */\n        acc1 = __SMLAD(x1, c0, acc1);\n\n        /* Read x[2], x[3] */\n        x2 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[3], x[4] */\n        x3 = read_q15x2 ((q15_t *) px + 1);\n\n        /* acc2 +=  x[2] * y[0] + x[3] * y[1] */\n        acc2 = __SMLAD(x2, c0, acc2);\n\n        /* acc3 +=  x[3] * y[0] + x[4] * y[1] */\n        acc3 = __SMLAD(x3, c0, acc3);\n\n        /* Read y[2] and y[3] */\n        c0 = read_q15x2_ia ((q15_t **) &py);\n\n        /* acc0 +=  x[2] * y[2] + x[3] * y[3] */\n        acc0 = __SMLAD(x2, c0, acc0);\n\n        /* acc1 +=  x[3] * y[2] + x[4] * y[3] */\n        acc1 = __SMLAD(x3, c0, acc1);\n\n        /* Read x[4], x[5] */\n        x0 = read_q15x2 ((q15_t *) px + 2);\n\n        /* Read x[5], x[6] */\n        x1 = read_q15x2 ((q15_t *) px + 3);\n\t\tpx += 4U;\n\n        /* acc2 +=  x[4] * y[2] + x[5] * y[3] */\n        acc2 = __SMLAD(x0, c0, acc2);\n\n        /* acc3 +=  x[5] * y[2] + x[6] * y[3] */\n        acc3 = __SMLAD(x1, c0, acc3);\n\n      } while (--k);\n\n      /* For the next MAC operations, SIMD is not used\n       * So, the 16 bit pointer if inputB, py is updated */\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      if (k == 1U)\n      {\n        /* Read y[4] */\n        c0 = *py;\n\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[7] */\n        x3 = read_q15x2 ((q15_t *) px);\n\t\tpx++;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLAD (x0, c0, acc0);\n        acc1 = __SMLAD (x1, c0, acc1);\n        acc2 = __SMLADX(x1, c0, acc2);\n        acc3 = __SMLADX(x3, c0, acc3);\n      }\n\n      if (k == 2U)\n      {\n        /* Read y[4], y[5] */\n        c0 = read_q15x2 ((q15_t *) py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n\t\tpx += 2U;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLAD(x0, c0, acc0);\n        acc1 = __SMLAD(x1, c0, acc1);\n        acc2 = __SMLAD(x3, c0, acc2);\n        acc3 = __SMLAD(x2, c0, acc3);\n      }\n\n      if (k == 3U)\n      {\n        /* Read y[4], y[5] */\n        c0 = read_q15x2_ia ((q15_t **) &py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLAD(x0, c0, acc0);\n        acc1 = __SMLAD(x1, c0, acc1);\n        acc2 = __SMLAD(x3, c0, acc2);\n        acc3 = __SMLAD(x2, c0, acc3);\n\n        c0 = (*py);\n        /* Read y[6] */\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[10] */\n        x3 = read_q15x2 ((q15_t *) px + 2);\n\t\tpx += 3U;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLADX(x1, c0, acc0);\n        acc1 = __SMLAD (x2, c0, acc1);\n        acc2 = __SMLADX(x2, c0, acc2);\n        acc3 = __SMLADX(x3, c0, acc3);\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q15_t) (acc0 >> 15);\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      *pOut = (q15_t) (acc1 >> 15);\n      pOut += inc;\n\n      *pOut = (q15_t) (acc2 >> 15);\n      pOut += inc;\n\n      *pOut = (q15_t) (acc3 >> 15);\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = blockSize2 % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += ((q31_t) *px++ * *py++);\n        sum += ((q31_t) *px++ * *py++);\n        sum += ((q31_t) *px++ * *py++);\n        sum += ((q31_t) *px++ * *py++);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += ((q31_t) * px++ * *py++);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q15_t) (sum >> 15);\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 1 */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q31_t) *px++ * *py++);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q15_t) (sum >> 15);\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * ....\n   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]\n   * sum +=  x[srcALen-1] * y[0]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = srcBLen - 1U;\n\n  /* Working pointer of inputA */\n  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */\n      sum = __SMLAD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n      /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */\n      sum = __SMLAD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulates */\n      sum = __SMLAD(*px++, *py++, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q15_t) (sum >> 15);\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement the MAC count */\n    count--;\n\n    /* Decrement the loop counter */\n    blockSize3--;\n  }\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_fast_q31.c\n * Description:  Fast Q31 Correlation\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q31 sequences (fast version).\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This function is optimized for speed at the expense of fixed-point precision and overflow protection.\n                   The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.\n                   These intermediate results are accumulated in a 32-bit register in 2.30 format.\n                   Finally, the accumulator is saturated and converted to a 1.31 result.\n  @par\n                   The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result.\n                   In order to avoid overflows completely the input signals must be scaled down.\n                   The input signals should be scaled down to avoid intermediate overflows.\n                   Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a\n                   maximum of min(srcALen, srcBLen) number of additions is carried internally.\n\n @remark\n                   Refer to \\ref arm_correlate_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.\n */\n\nvoid arm_correlate_fast_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst)\n{\n  const q31_t *pIn1;                                   /* InputA pointer */\n  const q31_t *pIn2;                                   /* InputB pointer */\n        q31_t *pOut = pDst;                            /* Output pointer */\n  const q31_t *px;                                     /* Intermediate inputA pointer */\n  const q31_t *py;                                     /* Intermediate inputB pointer */\n  const q31_t *pSrc1;                                  /* Intermediate pointers */\n        q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary variables for holding input and coefficient values */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n        uint32_t outBlockSize;\n        int32_t inc = 1;                               /* Destination address modifier */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (2U * srcALen) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n\n  }\n\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[srcBlen - 1]\n   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]\n   * ....\n   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc1 = pIn2 + (srcBLen - 1U);\n  py = pSrc1;\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* x[0] * y[srcBLen - 4] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* x[1] * y[srcBLen - 3] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* x[2] * y[srcBLen - 2] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* x[3] * y[srcBLen - 1] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[0] * y[srcBLen - 1] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = sum << 1;\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pSrc1 - count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]\n   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n    /* Loop unroll over blockSize2, by 4 */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1], x[2] samples */\n      x0 = *px++;\n      x1 = *px++;\n      x2 = *px++;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read y[0] sample */\n        c0 = *py++;\n        /* Read x[3] sample */\n        x3 = *px++;\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[0] * y[0] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc1 +=  x[1] * y[0] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc2 +=  x[2] * y[0] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc3 +=  x[3] * y[0] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n\n        /* Read y[1] sample */\n        c0 = *py++;\n        /* Read x[4] sample */\n        x0 = *px++;\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[1] * y[1] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc1 +=  x[2] * y[1] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc2 +=  x[3] * y[1] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32);\n        /* acc3 +=  x[4] * y[1] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n\n        /* Read y[2] sample */\n        c0 = *py++;\n        /* Read x[5] sample */\n        x1 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[2] * y[2] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc1 +=  x[3] * y[2] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32);\n        /* acc2 +=  x[4] * y[2] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc3 +=  x[5] * y[2] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32);\n\n\n        /* Read y[3] sample */\n        c0 = *py++;\n        /* Read x[6] sample */\n        x2 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[3] * y[3] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32);\n        /* acc1 +=  x[4] * y[3] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc2 +=  x[5] * y[3] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc3 +=  x[6] * y[3] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32);\n\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Read y[4] sample */\n        c0 = *py++;\n        /* Read x[7] sample */\n        x3 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[4] * y[4] */\n        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n        /* acc1 +=  x[5] * y[4] */\n        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n        /* acc2 +=  x[6] * y[4] */\n        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n        /* acc3 +=  x[7] * y[4] */\n        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q31_t) (acc0 << 1);\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      *pOut = (q31_t) (acc1 << 1);\n      pOut += inc;\n\n      *pOut = (q31_t) (acc2 << 1);\n      pOut += inc;\n\n      *pOut = (q31_t) (acc3 << 1);\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 4 */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = blockSize2 % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py++))) >> 32);\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py++))) >> 32);\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py++))) >> 32);\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py++))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py++))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = sum << 1;\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum = (q31_t) ((((q63_t) sum << 32) +\n                        ((q63_t) *px++ * (*py++))) >> 32);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = sum << 1;\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * ....\n   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]\n   * sum +=  x[srcALen-1] * y[0]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = srcBLen - 1U;\n\n  /* Working pointer of inputA */\n  pSrc1 = ((pIn1 + srcALen) - srcBLen) + 1U;\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum += x[srcALen - srcBLen + 4] * y[3] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* sum += x[srcALen - srcBLen + 3] * y[2] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* sum += x[srcALen - srcBLen + 2] * y[1] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* sum += x[srcALen - srcBLen + 1] * y[0] */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum = (q31_t) ((((q63_t) sum << 32) +\n                      ((q63_t) *px++ * (*py++))) >> 32);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = sum << 1;\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement MAC count */\n    count--;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_opt_q15.c\n * Description:  Correlation of Q15 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q15 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @param[in]     pScratch   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both inputs are in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   This approach provides 33 guard bits and there is no risk of overflow.\n                   The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.\n\n @remark\n                   Refer to \\ref arm_correlate_fast_q15() for a faster but less precise version of this function.\n */\n\nvoid arm_correlate_opt_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst,\n        q15_t * pScratch)\n{\n        q63_t acc0;                                    /* Accumulators */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q15_t *pScr1;                                  /* Temporary pointer for scratch1 */\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n        uint32_t j, blkCnt, outBlockSize;              /* Loop counter */\n        int32_t inc = 1;                               /* Output pointer increment */\n        uint32_t tapCnt;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc1, acc2, acc3;                        /* Accumulators */\n        q31_t x1, x2, x3;                              /* Temporary variables for holding input1 and input2 values */\n        q31_t y1, y2;                                  /* State variables */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we include zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (srcALen * 2U) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n  }\n\n  pScr1 = pScratch;\n\n  /* Fill (srcBLen - 1U) zeros in scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update temporary scratch pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Copy (srcALen) samples in scratch buffer */\n  arm_copy_q15(pIn1, pScr1, srcALen);\n\n  /* Update pointers */\n  pScr1 += srcALen;\n\n\n  /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Temporary pointer for scratch2 */\n  py = pIn2;\n\n\n  /* Actual correlation process starts here */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (srcALen + srcBLen - 1U) >> 2;\n\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Read two samples from scratch1 buffer */\n    x1 = read_q15x2_ia (&pScr1);\n\n    /* Read next two samples from scratch1 buffer */\n    x2 = read_q15x2_ia (&pScr1);\n\n    tapCnt = (srcBLen) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia ((q15_t **) &pIn2);\n      y2 = read_q15x2_ia ((q15_t **) &pIn2);\n\n      /* multiply and accumlate */\n      acc0 = __SMLALD(x1, y1, acc0);\n      acc2 = __SMLALD(x2, y1, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      /* multiply and accumlate */\n      acc1 = __SMLALDX(x3, y1, acc1);\n\n      /* Read next two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* multiply and accumlate */\n      acc0 = __SMLALD(x2, y2, acc0);\n      acc2 = __SMLALD(x1, y2, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x1, x2, 0);\n#else\n      x3 = __PKHBT(x2, x1, 0);\n#endif\n\n      acc3 = __SMLALDX(x3, y1, acc3);\n      acc1 = __SMLALDX(x3, y2, acc1);\n\n      x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      acc3 = __SMLALDX(x3, y2, acc3);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Update scratch pointer for remaining samples of smaller length sequence */\n    pScr1 -= 4U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    tapCnt = (srcBLen) & 3U;\n\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2);\n      acc1 += (*pScr1++ * *pIn2);\n      acc2 += (*pScr1++ * *pIn2);\n      acc3 += (*pScr1++ * *pIn2++);\n\n      pScr1 -= 3U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n\n    /* Store the results in the accumulators in the destination buffer. */\n    *pOut = (__SSAT(acc0 >> 15U, 16));\n    pOut += inc;\n    *pOut = (__SSAT(acc1 >> 15U, 16));\n    pOut += inc;\n    *pOut = (__SSAT(acc2 >> 15U, 16));\n    pOut += inc;\n    *pOut = (__SSAT(acc3 >> 15U, 16));\n    pOut += inc;\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch += 4U;\n  }\n\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (srcALen + srcBLen - 1U) & 0x3;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (srcALen + srcBLen - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Calculate correlation for remaining samples of Bigger length sequence */\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n\n    tapCnt = (srcBLen) >> 1U;\n\n    while (tapCnt > 0U)\n    {\n\n      /* Read next two samples from scratch1 buffer */\n      acc0 += (*pScr1++ * *pIn2++);\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    tapCnt = (srcBLen) & 1U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pIn2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* The result is in 2.30 format.  Convert to 1.15 with saturation.\n       Then store the output in the destination buffer. */\n    *pOut = (q15_t) (__SSAT((acc0 >> 15), 16));\n    pOut += inc;\n\n    /* Initialization of inputB pointer */\n    pIn2 = py;\n\n    pScratch += 1U;\n  }\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_opt_q7.c\n * Description:  Correlation of Q7 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q7 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @param[in]     pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n  @param[in]     pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.\n                   The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.\n                   This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.\n                   The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format.\n */\n\nvoid arm_correlate_opt_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst,\n        q15_t * pScratch1,\n        q15_t * pScratch2)\n{\n        q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch */\n        q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch */\n        q15_t x4;                                      /* Temporary input variable */\n        q15_t *py;                                     /* Temporary input2 pointer */\n        q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */\n  const q7_t *pIn1, *pIn2;                             /* InputA and inputB pointer */\n        uint32_t j, k, blkCnt, tapCnt;                 /* Loop counter */\n        int32_t inc = 1;                               /* Output pointer increment */\n        uint32_t outBlockSize;                         /* Loop counter */\n        q31_t x1, x2, x3, y1;                          /* Temporary input variables */\n        q7_t *pOut = pDst;                             /* Output pointer */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we include zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (srcALen * 2U) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n  }\n\n\n  /* Copy (srcBLen) samples in scratch buffer */\n  k = srcBLen >> 2U;\n\n  /* First part of the processing with loop unrolling copies 4 data points at a time.\n     a second loop below copies for the remaining 1 to 3 samples. */\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner */\n    x4 = (q15_t) *pIn2++;\n    *pScr2++ = x4;\n    x4 = (q15_t) *pIn2++;\n    *pScr2++ = x4;\n    x4 = (q15_t) *pIn2++;\n    *pScr2++ = x4;\n    x4 = (q15_t) *pIn2++;\n    *pScr2++ = x4;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* If the count is not a multiple of 4, copy remaining samples here.\n     No loop unrolling is used. */\n  k = srcBLen % 0x4U;\n\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner for remaining samples */\n    x4 = (q15_t) *pIn2++;\n    *pScr2++ = x4;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* Fill (srcBLen - 1U) zeros in scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update temporary scratch pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Copy (srcALen) samples in scratch buffer */\n  /* Apply loop unrolling and do 4 Copies simultaneously. */\n  k = srcALen >> 2U;\n\n  /* First part of the processing with loop unrolling copies 4 data points at a time.\n     a second loop below copies for the remaining 1 to 3 samples. */\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner */\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n    x4 = (q15_t) *pIn1++;\n    *pScr1++ = x4;\n\n    /* Decrement loop counter */\n    k--;\n  }\n\n  /* If the count is not a multiple of 4, copy remaining samples here.\n     No loop unrolling is used. */\n  k = srcALen % 0x4U;\n\n  while (k > 0U)\n  {\n    /* copy second buffer in reversal manner for remaining samples */\n    x4 = (q15_t) * pIn1++;\n    *pScr1++ = x4;\n\n    /* Decrement the loop counter */\n    k--;\n  }\n\n  /* Fill (srcBLen - 1U) zeros at end of scratch buffer */\n  arm_fill_q15(0, pScr1, (srcBLen - 1U));\n\n  /* Update pointer */\n  pScr1 += (srcBLen - 1U);\n\n  /* Temporary pointer for scratch2 */\n  py = pScratch2;\n\n  /* Initialization of pScr2 pointer */\n  pScr2 = pScratch2;\n\n  /* Actual correlation process starts here */\n  blkCnt = (srcALen + srcBLen - 1U) >> 2;\n\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Read two samples from scratch1 buffer */\n    x1 = read_q15x2_ia (&pScr1);\n\n    /* Read next two samples from scratch1 buffer */\n    x2 = read_q15x2_ia (&pScr1);\n\n    tapCnt = (srcBLen) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia (&pScr2);\n\n      /* multiply and accumlate */\n      acc0 = __SMLAD(x1, y1, acc0);\n      acc2 = __SMLAD(x2, y1, acc2);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      /* multiply and accumlate */\n      acc1 = __SMLADX(x3, y1, acc1);\n\n      /* Read next two samples from scratch1 buffer */\n      x1 = read_q15x2_ia (&pScr1);\n\n      /* pack input data */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x1, x2, 0);\n#else\n      x3 = __PKHBT(x2, x1, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y1, acc3);\n\n      /* Read four samples from smaller buffer */\n      y1 = read_q15x2_ia (&pScr2);\n\n      acc0 = __SMLAD(x2, y1, acc0);\n\n      acc2 = __SMLAD(x1, y1, acc2);\n\n      acc1 = __SMLADX(x3, y1, acc1);\n\n      x2 = read_q15x2_ia (&pScr1);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      x3 = __PKHBT(x2, x1, 0);\n#else\n      x3 = __PKHBT(x1, x2, 0);\n#endif\n\n      acc3 = __SMLADX(x3, y1, acc3);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Update scratch pointer for remaining samples of smaller length sequence */\n    pScr1 -= 4U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    tapCnt = (srcBLen) & 3U;\n\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pScr2);\n      acc1 += (*pScr1++ * *pScr2);\n      acc2 += (*pScr1++ * *pScr2);\n      acc3 += (*pScr1++ * *pScr2++);\n\n      pScr1 -= 3U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q7_t) (__SSAT(acc0 >> 7U, 8));\n    pOut += inc;\n    *pOut = (q7_t) (__SSAT(acc1 >> 7U, 8));\n    pOut += inc;\n    *pOut = (q7_t) (__SSAT(acc2 >> 7U, 8));\n    pOut += inc;\n    *pOut = (q7_t) (__SSAT(acc3 >> 7U, 8));\n    pOut += inc;\n\n    /* Initialization of inputB pointer */\n    pScr2 = py;\n\n    pScratch1 += 4U;\n  }\n\n  blkCnt = (srcALen + srcBLen - 1U) & 0x3;\n\n  /* Calculate correlation for remaining samples of Bigger length sequence */\n  while (blkCnt > 0)\n  {\n    /* Initialze temporary scratch pointer as scratch1 */\n    pScr1 = pScratch1;\n\n    /* Clear Accumlators */\n    acc0 = 0;\n\n    tapCnt = (srcBLen) >> 1U;\n\n    while (tapCnt > 0U)\n    {\n      acc0 += (*pScr1++ * *pScr2++);\n      acc0 += (*pScr1++ * *pScr2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    tapCnt = (srcBLen) & 1U;\n\n    /* apply same above for remaining samples of smaller length sequence */\n    while (tapCnt > 0U)\n    {\n      /* accumlate the results */\n      acc0 += (*pScr1++ * *pScr2++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    blkCnt--;\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q7_t) (__SSAT(acc0 >> 7U, 8));\n    pOut += inc;\n\n    /* Initialization of inputB pointer */\n    pScr2 = py;\n\n    pScratch1 += 1U;\n  }\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_q15.c\n * Description:  Correlation of Q15 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q15 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both inputs are in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   This approach provides 33 guard bits and there is no risk of overflow.\n                   The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.\n\n  @remark\n                   Refer to \\ref arm_correlate_fast_q15() for a faster but less precise version of this function.\n  @remark\n                   Refer to \\ref arm_correlate_opt_q15() for a faster implementation of this function using scratch buffers.\n */\n\nvoid arm_correlate_q15(\n  const q15_t * pSrcA,\n        uint32_t srcALen,\n  const q15_t * pSrcB,\n        uint32_t srcBLen,\n        q15_t * pDst)\n{\n\n#if defined (ARM_MATH_DSP)\n\n  const q15_t *pIn1;                                   /* InputA pointer */\n  const q15_t *pIn2;                                   /* InputB pointer */\n        q15_t *pOut = pDst;                            /* Output pointer */\n        q63_t sum, acc0, acc1, acc2, acc3;             /* Accumulators */\n  const q15_t *px;                                     /* Intermediate inputA pointer */\n  const q15_t *py;                                     /* Intermediate inputB pointer */\n  const q15_t *pSrc1;                                  /* Intermediate pointers */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary input variables for holding input and coefficient values */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n        uint32_t outBlockSize;\n        int32_t inc = 1;                               /* Destination address modifier */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we include zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (srcALen * 2U) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n  }\n\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[srcBlen - 1]\n   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]\n   * ....\n   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc1 = pIn2 + (srcBLen - 1U);\n  py = pSrc1;\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first loop starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */\n      sum = __SMLALD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n      /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */\n      sum = __SMLALD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[0] * y[srcBLen - 1] */\n      sum = __SMLALD(*px++, *py++, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q15_t) (__SSAT((sum >> 15), 16));\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pSrc1 - count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]\n   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* count is the index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1] samples */\n      x0 = read_q15x2 ((q15_t *) px);\n\n      /* read x[1], x[2] samples */\n      x1 = read_q15x2 ((q15_t *) px + 1);\n      px += 2U;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read the first two inputB samples using SIMD:\n         * y[0] and y[1] */\n        c0 = read_q15x2_ia ((q15_t **) &py);\n\n        /* acc0 +=  x[0] * y[0] + x[1] * y[1] */\n        acc0 = __SMLALD(x0, c0, acc0);\n\n        /* acc1 +=  x[1] * y[0] + x[2] * y[1] */\n        acc1 = __SMLALD(x1, c0, acc1);\n\n        /* Read x[2], x[3] */\n        x2 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[3], x[4] */\n        x3 = read_q15x2 ((q15_t *) px + 1);\n\n        /* acc2 +=  x[2] * y[0] + x[3] * y[1] */\n        acc2 = __SMLALD(x2, c0, acc2);\n\n        /* acc3 +=  x[3] * y[0] + x[4] * y[1] */\n        acc3 = __SMLALD(x3, c0, acc3);\n\n        /* Read y[2] and y[3] */\n        c0 = read_q15x2_ia ((q15_t **) &py);\n\n        /* acc0 +=  x[2] * y[2] + x[3] * y[3] */\n        acc0 = __SMLALD(x2, c0, acc0);\n\n        /* acc1 +=  x[3] * y[2] + x[4] * y[3] */\n        acc1 = __SMLALD(x3, c0, acc1);\n\n        /* Read x[4], x[5] */\n        x0 = read_q15x2 ((q15_t *) px + 2);\n\n        /* Read x[5], x[6] */\n        x1 = read_q15x2 ((q15_t *) px + 3);\n        px += 4U;\n\n        /* acc2 +=  x[4] * y[2] + x[5] * y[3] */\n        acc2 = __SMLALD(x0, c0, acc2);\n\n        /* acc3 +=  x[5] * y[2] + x[6] * y[3] */\n        acc3 = __SMLALD(x1, c0, acc3);\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      if (k == 1U)\n      {\n        /* Read y[4] */\n        c0 = *py;\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[7] */\n        x3 = read_q15x2 ((q15_t *) px);\n        px++;\n\n        /* Perform the multiply-accumulate */\n        acc0 = __SMLALD (x0, c0, acc0);\n        acc1 = __SMLALD (x1, c0, acc1);\n        acc2 = __SMLALDX(x1, c0, acc2);\n        acc3 = __SMLALDX(x3, c0, acc3);\n      }\n\n      if (k == 2U)\n      {\n        /* Read y[4], y[5] */\n        c0 = read_q15x2 ((q15_t *) py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n        px += 2U;\n\n        /* Perform the multiply-accumulate */\n        acc0 = __SMLALD(x0, c0, acc0);\n        acc1 = __SMLALD(x1, c0, acc1);\n        acc2 = __SMLALD(x3, c0, acc2);\n        acc3 = __SMLALD(x2, c0, acc3);\n      }\n\n      if (k == 3U)\n      {\n        /* Read y[4], y[5] */\n        c0 = read_q15x2_ia ((q15_t **) &py);\n\n        /* Read x[7], x[8] */\n        x3 = read_q15x2 ((q15_t *) px);\n\n        /* Read x[9] */\n        x2 = read_q15x2 ((q15_t *) px + 1);\n\n        /* Perform the multiply-accumulate */\n        acc0 = __SMLALD(x0, c0, acc0);\n        acc1 = __SMLALD(x1, c0, acc1);\n        acc2 = __SMLALD(x3, c0, acc2);\n        acc3 = __SMLALD(x2, c0, acc3);\n\n        c0 = (*py);\n\n        /* Read y[6] */\n#ifdef  ARM_MATH_BIG_ENDIAN\n        c0 = c0 << 16U;\n#else\n        c0 = c0 & 0x0000FFFF;\n#endif /* #ifdef  ARM_MATH_BIG_ENDIAN */\n\n        /* Read x[10] */\n        x3 = read_q15x2 ((q15_t *) px + 2);\n        px += 3U;\n\n        /* Perform the multiply-accumulates */\n        acc0 = __SMLALDX(x1, c0, acc0);\n        acc1 = __SMLALD (x2, c0, acc1);\n        acc2 = __SMLALDX(x2, c0, acc2);\n        acc3 = __SMLALDX(x3, c0, acc3);\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q15_t) (__SSAT(acc0 >> 15, 16));\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      *pOut = (q15_t) (__SSAT(acc1 >> 15, 16));\n      pOut += inc;\n\n      *pOut = (q15_t) (__SSAT(acc2 >> 15, 16));\n      pOut += inc;\n\n      *pOut = (q15_t) (__SSAT(acc3 >> 15, 16));\n      pOut += inc;\n\n      /* Increment the count by 4 as 4 output values are computed */\n      count += 4U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = blockSize2 % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += ((q63_t) *px++ * *py++);\n        sum += ((q63_t) *px++ * *py++);\n        sum += ((q63_t) *px++ * *py++);\n        sum += ((q63_t) *px++ * *py++);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += ((q63_t) *px++ * *py++);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q15_t) (__SSAT(sum >> 15, 16));\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment count by 1, as one output value is computed */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q63_t) *px++ * *py++);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q15_t) (__SSAT(sum >> 15, 16));\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment the MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * ....\n   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]\n   * sum +=  x[srcALen-1] * y[0]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = srcBLen - 1U;\n\n  /* Working pointer of inputA */\n  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U);\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n    /* Apply loop unrolling and compute 4 MACs simultaneously. */\n    k = count >> 2U;\n\n    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n     ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */\n      sum = __SMLALD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n      /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */\n      sum = __SMLALD(read_q15x2_ia ((q15_t **) &px), read_q15x2_ia ((q15_t **) &py), sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* If the count is not a multiple of 4, compute any remaining MACs here.\n     ** No loop unrolling is used. */\n    k = count % 0x4U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum = __SMLALD(*px++, *py++, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q15_t) (__SSAT((sum >> 15), 16));\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement MAC count */\n    count--;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  const q15_t *pIn1 = pSrcA;                           /* InputA pointer */\n  const q15_t *pIn2 = pSrcB + (srcBLen - 1U);          /* InputB pointer */\n        q63_t sum;                                     /* Accumulators */\n        uint32_t i = 0U, j;                            /* Loop counters */\n        uint32_t inv = 0U;                             /* Reverse order flag */\n        uint32_t tot = 0U;                             /* Length */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and a varaible, inv is set to 1 */\n  /* If lengths are not equal then zero pad has to be done to  make the two\n   * inputs of same length. But to improve the performance, we include zeroes\n   * in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * starting of the output buffer */\n  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * ending of the output buffer */\n  /* Once the zero padding is done the remaining of the output is calcualted\n   * using convolution but with the shorter signal time shifted. */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n  }\n\n  /* Loop to calculate convolution for output length number of values */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry on MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if (((i - j) < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q15_t) __SSAT((sum >> 15U), 16U);\n    else\n      *pDst++ = (q15_t) __SSAT((sum >> 15U), 16U);\n  }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_q31.c\n * Description:  Correlation of Q31 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q31 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   There is no saturation on intermediate additions.\n                   Thus, if the accumulator overflows it wraps around and distorts the result.\n                   The input signals should be scaled down to avoid intermediate overflows.\n                   Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a\n                   maximum of min(srcALen, srcBLen) number of additions is carried internally.\n                   The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.\n\n  @remark\n                   Refer to \\ref arm_correlate_fast_q31() for a faster but less precise implementation of this function.\n */\n\nvoid arm_correlate_q31(\n  const q31_t * pSrcA,\n        uint32_t srcALen,\n  const q31_t * pSrcB,\n        uint32_t srcBLen,\n        q31_t * pDst)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const q31_t *pIn1;                                   /* InputA pointer */\n  const q31_t *pIn2;                                   /* InputB pointer */\n        q31_t *pOut = pDst;                            /* Output pointer */\n  const q31_t *px;                                     /* Intermediate inputA pointer */\n  const q31_t *py;                                     /* Intermediate inputB pointer */\n  const q31_t *pSrc1;                                  /* Intermediate pointers */\n        q63_t sum;                                     /* Accumulators */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n        uint32_t outBlockSize;\n        int32_t inc = 1;                               /* Destination address modifier */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc0, acc1, acc2;                        /* Accumulators */\n        q31_t x0, x1, x2, c0;                          /* Temporary variables for holding input and coefficient values */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we include zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (2U * srcALen) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n  }\n\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[srcBlen - 1]\n   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]\n   * ....\n   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc1 = pIn2 + (srcBLen - 1U);\n  py = pSrc1;\n\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n    while (k > 0U)\n    {\n      /* x[0] * y[srcBLen - 4] */\n      sum += (q63_t) *px++ * (*py++);\n\n      /* x[1] * y[srcBLen - 3] */\n      sum += (q63_t) *px++ * (*py++);\n\n      /* x[2] * y[srcBLen - 2] */\n      sum += (q63_t) *px++ * (*py++);\n\n      /* x[3] * y[srcBLen - 1] */\n      sum += (q63_t) *px++ * (*py++);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#else\n\n    /* Initialize k with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[0] * y[srcBLen - 1] */\n      sum += (q63_t) *px++ * (*py++);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q31_t) (sum >> 31);\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pSrc1 - count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]\n   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unroll by 3 */\n    blkCnt = blockSize2 / 3;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n\n      /* read x[0], x[1] samples */\n      x0 = *px++;\n      x1 = *px++;\n\n      /* Apply loop unrolling and compute 3 MACs simultaneously. */\n      k = srcBLen / 3;\n\n      /* First part of the processing with loop unrolling.  Compute 3 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 2 samples. */\n      do\n      {\n        /* Read y[0] sample */\n        c0 = *(py);\n        /* Read x[2] sample */\n        x2 = *(px);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[0] * y[0] */\n        acc0 += ((q63_t) x0 * c0);\n        /* acc1 +=  x[1] * y[0] */\n        acc1 += ((q63_t) x1 * c0);\n        /* acc2 +=  x[2] * y[0] */\n        acc2 += ((q63_t) x2 * c0);\n\n        /* Read y[1] sample */\n        c0 = *(py + 1U);\n        /* Read x[3] sample */\n        x0 = *(px + 1U);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[1] * y[1] */\n        acc0 += ((q63_t) x1 * c0);\n        /* acc1 +=  x[2] * y[1] */\n        acc1 += ((q63_t) x2 * c0);\n        /* acc2 +=  x[3] * y[1] */\n        acc2 += ((q63_t) x0 * c0);\n\n        /* Read y[2] sample */\n        c0 = *(py + 2U);\n        /* Read x[4] sample */\n        x1 = *(px + 2U);\n\n        /* Perform the multiply-accumulate */\n        /* acc0 +=  x[2] * y[2] */\n        acc0 += ((q63_t) x2 * c0);\n        /* acc1 +=  x[3] * y[2] */\n        acc1 += ((q63_t) x0 * c0);\n        /* acc2 +=  x[4] * y[2] */\n        acc2 += ((q63_t) x1 * c0);\n\n        /* update scratch pointers */\n        px += 3U;\n        py += 3U;\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 3, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen - (3 * (srcBLen / 3));\n\n      while (k > 0U)\n      {\n        /* Read y[4] sample */\n        c0 = *(py++);\n\n        /* Read x[7] sample */\n        x2 = *(px++);\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[4] * y[4] */\n        acc0 += ((q63_t) x0 * c0);\n        /* acc1 +=  x[5] * y[4] */\n        acc1 += ((q63_t) x1 * c0);\n        /* acc2 +=  x[6] * y[4] */\n        acc2 += ((q63_t) x2 * c0);\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q31_t) (acc0 >> 31);\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      *pOut = (q31_t) (acc1 >> 31);\n      pOut += inc;\n\n      *pOut = (q31_t) (acc2 >> 31);\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 3 */\n      count += 3U;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize2 - 3 * (blockSize2 / 3);\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n      k = srcBLen >> 2U;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulates */\n        sum += (q63_t) *px++ * *py++;\n        sum += (q63_t) *px++ * *py++;\n        sum += (q63_t) *px++ * *py++;\n        sum += (q63_t) *px++ * *py++;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = srcBLen % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += (q63_t) *px++ * *py++;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q31_t) (sum >> 31);\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += (q63_t) *px++ * *py++;\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q31_t) (sum >> 31);\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * ....\n   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]\n   * sum +=  x[srcALen-1] * y[0]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = srcBLen - 1U;\n\n  /* Working pointer of inputA */\n  pSrc1 = pIn1 + (srcALen - (srcBLen - 1U));\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* sum += x[srcALen - srcBLen + 4] * y[3] */\n      sum += (q63_t) *px++ * *py++;\n\n      /* sum += x[srcALen - srcBLen + 3] * y[2] */\n      sum += (q63_t) *px++ * *py++;\n\n      /* sum += x[srcALen - srcBLen + 2] * y[1] */\n      sum += (q63_t) *px++ * *py++;\n\n      /* sum += x[srcALen - srcBLen + 1] * y[0] */\n      sum += (q63_t) *px++ * *py++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += (q63_t) *px++ * *py++;\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q31_t) (sum >> 31);\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement MAC count */\n    count--;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const q31_t *pIn1 = pSrcA;                           /* InputA pointer */\n  const q31_t *pIn2 = pSrcB + (srcBLen - 1U);          /* InputB pointer */\n        q63_t sum;                                     /* Accumulators */\n        uint32_t i = 0U, j;                            /* Loop counters */\n        uint32_t inv = 0U;                             /* Reverse order flag */\n        uint32_t tot = 0U;                             /* Length */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and a varaible, inv is set to 1 */\n  /* If lengths are not equal then zero pad has to be done to  make the two\n   * inputs of same length. But to improve the performance, we include zeroes\n   * in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * starting of the output buffer */\n  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * ending of the output buffer */\n  /* Once the zero padding is done the remaining of the output is calcualted\n   * using correlation but with the shorter signal time shifted. */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n  }\n\n  /* Loop to calculate correlation for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry out MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to correlation equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if (((i - j) < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q31_t) (sum >> 31U);\n    else\n      *pDst++ = (q31_t) (sum >> 31U);\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_correlate_q7.c\n * Description:  Correlation of Q7 sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup Corr\n  @{\n */\n\n/**\n  @brief         Correlation of Q7 sequences.\n  @param[in]     pSrcA      points to the first input sequence\n  @param[in]     srcALen    length of the first input sequence\n  @param[in]     pSrcB      points to the second input sequence\n  @param[in]     srcBLen    length of the second input sequence\n  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.\n                   The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.\n                   This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.\n                   The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format.\n\n @remark\n                   Refer to \\ref arm_correlate_opt_q7() for a faster implementation of this function.\n */\n\nvoid arm_correlate_q7(\n  const q7_t * pSrcA,\n        uint32_t srcALen,\n  const q7_t * pSrcB,\n        uint32_t srcBLen,\n        q7_t * pDst)\n{\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n  const q7_t *pIn1;                                    /* InputA pointer */\n  const q7_t *pIn2;                                    /* InputB pointer */\n        q7_t *pOut = pDst;                             /* Output pointer */\n  const q7_t *px;                                      /* Intermediate inputA pointer */\n  const q7_t *py;                                      /* Intermediate inputB pointer */\n  const q7_t *pSrc1;                                   /* Intermediate pointers */\n        q31_t sum;                                     /* Accumulators */\n        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */\n        uint32_t j, k, count, blkCnt;                  /* Loop counters */\n        uint32_t outBlockSize;\n        int32_t inc = 1;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */\n        q31_t input1, input2;                          /* Temporary input variables */\n        q15_t in1, in2;                                /* Temporary input variables */\n        q7_t x0, x1, x2, x3, c0, c1;                   /* Temporary variables for holding input and coefficient values */\n#endif\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and the destination pointer modifier, inc is set to -1 */\n  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */\n  /* But to improve the performance,\n   * we include zeroes in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */\n  /* If srcALen < srcBLen,\n   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */\n  if (srcALen >= srcBLen)\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcA;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcB;\n\n    /* Number of output samples is calculated */\n    outBlockSize = (2U * srcALen) - 1U;\n\n    /* When srcALen > srcBLen, zero padding is done to srcB\n     * to make their lengths equal.\n     * Instead, (outBlockSize - (srcALen + srcBLen - 1))\n     * number of output samples are made zero */\n    j = outBlockSize - (srcALen + (srcBLen - 1U));\n\n    /* Updating the pointer position to non zero value */\n    pOut += j;\n  }\n  else\n  {\n    /* Initialization of inputA pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization of inputB pointer */\n    pIn2 = pSrcA;\n\n    /* srcBLen is always considered as shorter or equal to srcALen */\n    j = srcBLen;\n    srcBLen = srcALen;\n    srcALen = j;\n\n    /* CORR(x, y) = Reverse order(CORR(y, x)) */\n    /* Hence set the destination pointer to point to the last output sample */\n    pOut = pDst + ((srcALen + srcBLen) - 2U);\n\n    /* Destination address modifier is set to -1 */\n    inc = -1;\n  }\n\n  /* The function is internally\n   * divided into three stages according to the number of multiplications that has to be\n   * taken place between inputA samples and inputB samples. In the first stage of the\n   * algorithm, the multiplications increase by one for every iteration.\n   * In the second stage of the algorithm, srcBLen number of multiplications are done.\n   * In the third stage of the algorithm, the multiplications decrease by one\n   * for every iteration. */\n\n  /* The algorithm is implemented in three stages.\n     The loop counters of each stage is initiated here. */\n  blockSize1 = srcBLen - 1U;\n  blockSize2 = srcALen - (srcBLen - 1U);\n  blockSize3 = blockSize1;\n\n  /* --------------------------\n   * Initializations of stage1\n   * -------------------------*/\n\n  /* sum = x[0] * y[srcBlen - 1]\n   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]\n   * ....\n   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]\n   */\n\n  /* In this stage the MAC operations are increased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = 1U;\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  pSrc1 = pIn2 + (srcBLen - 1U);\n  py = pSrc1;\n\n  /* ------------------------\n   * Stage1 process\n   * ----------------------*/\n\n  /* The first stage starts here */\n  while (blockSize1 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n    while (k > 0U)\n    {\n      /* x[0] , x[1] */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n      /* y[srcBLen - 4] , y[srcBLen - 3] */\n      in1 = (q15_t) *py++;\n      in2 = (q15_t) *py++;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n      /* x[0] * y[srcBLen - 4] */\n      /* x[1] * y[srcBLen - 3] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* x[2] , x[3] */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n      /* y[srcBLen - 2] , y[srcBLen - 1] */\n      in1 = (q15_t) *py++;\n      in2 = (q15_t) *py++;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);\n\n      /* x[2] * y[srcBLen - 2] */\n      /* x[3] * y[srcBLen - 1] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#else\n\n    /* Initialize k with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* x[0] * y[srcBLen - 1] */\n      sum += (q31_t) ((q15_t) *px++ * *py++);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q7_t) (__SSAT(sum >> 7U, 8));\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    py = pSrc1 - count;\n    px = pIn1;\n\n    /* Increment MAC count */\n    count++;\n\n    /* Decrement loop counter */\n    blockSize1--;\n  }\n\n  /* --------------------------\n   * Initializations of stage2\n   * ------------------------*/\n\n  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]\n   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]\n   * ....\n   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   */\n\n  /* Working pointer of inputA */\n  px = pIn1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* count is index by which the pointer pIn1 to be incremented */\n  count = 0U;\n\n  /* -------------------\n   * Stage2 process\n   * ------------------*/\n\n  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.\n   * So, to loop unroll over blockSize2,\n   * srcBLen should be greater than or equal to 4 */\n  if (srcBLen >= 4U)\n  {\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = blockSize2 >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Set all accumulators to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* read x[0], x[1], x[2] samples */\n      x0 = *px++;\n      x1 = *px++;\n      x2 = *px++;\n\n      /* Apply loop unrolling and compute 4 MACs simultaneously. */\n      k = srcBLen >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.\n       ** a second loop below computes MACs for the remaining 1 to 3 samples. */\n      do\n      {\n        /* Read y[0] sample */\n        c0 = *py++;\n        /* Read y[1] sample */\n        c1 = *py++;\n\n        /* Read x[3] sample */\n        x3 = *px++;\n\n        /* x[0] and x[1] are packed */\n        in1 = (q15_t) x0;\n        in2 = (q15_t) x1;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* y[0] and y[1] are packed */\n        in1 = (q15_t) c0;\n        in2 = (q15_t) c1;\n\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc0 += x[0] * y[0] + x[1] * y[1]  */\n        acc0 = __SMLAD(input1, input2, acc0);\n\n        /* x[1] and x[2] are packed */\n        in1 = (q15_t) x1;\n        in2 = (q15_t) x2;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc1 += x[1] * y[0] + x[2] * y[1] */\n        acc1 = __SMLAD(input1, input2, acc1);\n\n        /* x[2] and x[3] are packed */\n        in1 = (q15_t) x2;\n        in2 = (q15_t) x3;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc2 += x[2] * y[0] + x[3] * y[1]  */\n        acc2 = __SMLAD(input1, input2, acc2);\n\n        /* Read x[4] sample */\n        x0 = *px++;\n\n        /* x[3] and x[4] are packed */\n        in1 = (q15_t) x3;\n        in2 = (q15_t) x0;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc3 += x[3] * y[0] + x[4] * y[1]  */\n        acc3 = __SMLAD(input1, input2, acc3);\n\n        /* Read y[2] sample */\n        c0 = *py++;\n        /* Read y[3] sample */\n        c1 = *py++;\n\n        /* Read x[5] sample */\n        x1 = *px++;\n\n        /* x[2] and x[3] are packed */\n        in1 = (q15_t) x2;\n        in2 = (q15_t) x3;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* y[2] and y[3] are packed */\n        in1 = (q15_t) c0;\n        in2 = (q15_t) c1;\n\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc0 += x[2] * y[2] + x[3] * y[3]  */\n        acc0 = __SMLAD(input1, input2, acc0);\n\n        /* x[3] and x[4] are packed */\n        in1 = (q15_t) x3;\n        in2 = (q15_t) x0;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc1 += x[3] * y[2] + x[4] * y[3]  */\n        acc1 = __SMLAD(input1, input2, acc1);\n\n        /* x[4] and x[5] are packed */\n        in1 = (q15_t) x0;\n        in2 = (q15_t) x1;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc2 += x[4] * y[2] + x[5] * y[3]  */\n        acc2 = __SMLAD(input1, input2, acc2);\n\n        /* Read x[6] sample */\n        x2 = *px++;\n\n        /* x[5] and x[6] are packed */\n        in1 = (q15_t) x1;\n        in2 = (q15_t) x2;\n\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* acc3 += x[5] * y[2] + x[6] * y[3]  */\n        acc3 = __SMLAD(input1, input2, acc3);\n\n      } while (--k);\n\n      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.\n       ** No loop unrolling is used. */\n      k = srcBLen % 0x4U;\n\n      while (k > 0U)\n      {\n        /* Read y[4] sample */\n        c0 = *py++;\n        /* Read x[7] sample */\n        x3 = *px++;\n\n        /* Perform the multiply-accumulates */\n        /* acc0 +=  x[4] * y[4] */\n        acc0 += ((q15_t) x0 * c0);\n        /* acc1 +=  x[5] * y[4] */\n        acc1 += ((q15_t) x1 * c0);\n        /* acc2 +=  x[6] * y[4] */\n        acc2 += ((q15_t) x2 * c0);\n        /* acc3 +=  x[7] * y[4] */\n        acc3 += ((q15_t) x3 * c0);\n\n        /* Reuse the present samples for the next MAC */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q7_t) (__SSAT(acc0 >> 7, 8));\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      *pOut = (q7_t) (__SSAT(acc1 >> 7, 8));\n      pOut += inc;\n\n      *pOut = (q7_t) (__SSAT(acc2 >> 7, 8));\n      pOut += inc;\n\n      *pOut = (q7_t) (__SSAT(acc3 >> 7, 8));\n      pOut += inc;\n\n\t  count += 4U;\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize2 % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize2;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n      k = srcBLen >> 2U;\n\n      while (k > 0U)\n      {\n\n        /* Reading two inputs of SrcA buffer and packing */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Reading two inputs of SrcB buffer and packing */\n        in1 = (q15_t) *py++;\n        in2 = (q15_t) *py++;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Perform the multiply-accumulate */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* Reading two inputs of SrcA buffer and packing */\n        in1 = (q15_t) *px++;\n        in2 = (q15_t) *px++;\n        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Reading two inputs of SrcB buffer and packing */\n        in1 = (q15_t) *py++;\n        in2 = (q15_t) *py++;\n        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n        /* Perform the multiply-accumulate */\n        sum = __SMLAD(input1, input2, sum);\n\n        /* Decrement loop counter */\n        k--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      k = srcBLen % 0x4U;\n\n#else\n\n      /* Initialize blkCnt with number of samples */\n      k = srcBLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q15_t) *px++ * *py++);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q7_t) (__SSAT(sum >> 7U, 8));\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment the pointer pIn1 index, count by 1 */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n  }\n  else\n  {\n    /* If the srcBLen is not a multiple of 4,\n     * the blockSize2 loop cannot be unrolled by 4 */\n    blkCnt = blockSize2;\n\n    while (blkCnt > 0U)\n    {\n      /* Accumulator is made zero for every iteration */\n      sum = 0;\n\n      /* srcBLen number of MACS should be performed */\n      k = srcBLen;\n\n      while (k > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum += ((q15_t) *px++ * *py++);\n\n        /* Decrement the loop counter */\n        k--;\n      }\n\n      /* Store the result in the accumulator in the destination buffer. */\n      *pOut = (q7_t) (__SSAT(sum >> 7U, 8));\n      /* Destination pointer is updated according to the address modifier, inc */\n      pOut += inc;\n\n      /* Increment the MAC count */\n      count++;\n\n      /* Update the inputA and inputB pointers for next MAC calculation */\n      px = pIn1 + count;\n      py = pIn2;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n  }\n\n\n  /* --------------------------\n   * Initializations of stage3\n   * -------------------------*/\n\n  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]\n   * ....\n   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]\n   * sum +=  x[srcALen-1] * y[0]\n   */\n\n  /* In this stage the MAC operations are decreased by 1 for every iteration.\n     The count variable holds the number of MAC operations performed */\n  count = srcBLen - 1U;\n\n  /* Working pointer of inputA */\n  pSrc1 = pIn1 + (srcALen - (srcBLen - 1U));\n  px = pSrc1;\n\n  /* Working pointer of inputB */\n  py = pIn2;\n\n  /* -------------------\n   * Stage3 process\n   * ------------------*/\n\n  while (blockSize3 > 0U)\n  {\n    /* Accumulator is made zero for every iteration */\n    sum = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    k = count >> 2U;\n\n    while (k > 0U)\n    {\n      /* x[srcALen - srcBLen + 1] , x[srcALen - srcBLen + 2]  */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* y[0] , y[1] */\n      in1 = (q15_t) *py++;\n      in2 = (q15_t) *py++;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* sum += x[srcALen - srcBLen + 1] * y[0] */\n      /* sum += x[srcALen - srcBLen + 2] * y[1] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* x[srcALen - srcBLen + 3] , x[srcALen - srcBLen + 4] */\n      in1 = (q15_t) *px++;\n      in2 = (q15_t) *px++;\n      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* y[2] , y[3] */\n      in1 = (q15_t) *py++;\n      in2 = (q15_t) *py++;\n      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U);\n\n      /* sum += x[srcALen - srcBLen + 3] * y[2] */\n      /* sum += x[srcALen - srcBLen + 4] * y[3] */\n      sum = __SMLAD(input1, input2, sum);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    k = count % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    k = count;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (k > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += ((q15_t) *px++ * *py++);\n\n      /* Decrement loop counter */\n      k--;\n    }\n\n    /* Store the result in the accumulator in the destination buffer. */\n    *pOut = (q7_t) (__SSAT(sum >> 7U, 8));\n    /* Destination pointer is updated according to the address modifier, inc */\n    pOut += inc;\n\n    /* Update the inputA and inputB pointers for next MAC calculation */\n    px = ++pSrc1;\n    py = pIn2;\n\n    /* Decrement MAC count */\n    count--;\n\n    /* Decrement loop counter */\n    blockSize3--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  const q7_t *pIn1 = pSrcA;                            /* InputA pointer */\n  const q7_t *pIn2 = pSrcB + (srcBLen - 1U);           /* InputB pointer */\n        q31_t sum;                                     /* Accumulator */\n        uint32_t i = 0U, j;                            /* Loop counters */\n        uint32_t inv = 0U;                             /* Reverse order flag */\n        uint32_t tot = 0U;                             /* Length */\n\n  /* The algorithm implementation is based on the lengths of the inputs. */\n  /* srcB is always made to slide across srcA. */\n  /* So srcBLen is always considered as shorter or equal to srcALen */\n  /* But CORR(x, y) is reverse of CORR(y, x) */\n  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */\n  /* and a varaible, inv is set to 1 */\n  /* If lengths are not equal then zero pad has to be done to  make the two\n   * inputs of same length. But to improve the performance, we include zeroes\n   * in the output instead of zero padding either of the the inputs*/\n  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * starting of the output buffer */\n  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the\n   * ending of the output buffer */\n  /* Once the zero padding is done the remaining of the output is calcualted\n   * using convolution but with the shorter signal time shifted. */\n\n  /* Calculate the length of the remaining sequence */\n  tot = ((srcALen + srcBLen) - 2U);\n\n  if (srcALen > srcBLen)\n  {\n    /* Calculating the number of zeros to be padded to the output */\n    j = srcALen - srcBLen;\n\n    /* Initialise the pointer after zero padding */\n    pDst += j;\n  }\n\n  else if (srcALen < srcBLen)\n  {\n    /* Initialization to inputB pointer */\n    pIn1 = pSrcB;\n\n    /* Initialization to the end of inputA pointer */\n    pIn2 = pSrcA + (srcALen - 1U);\n\n    /* Initialisation of the pointer after zero padding */\n    pDst = pDst + tot;\n\n    /* Swapping the lengths */\n    j = srcALen;\n    srcALen = srcBLen;\n    srcBLen = j;\n\n    /* Setting the reverse flag */\n    inv = 1;\n  }\n\n  /* Loop to calculate convolution for output length number of times */\n  for (i = 0U; i <= tot; i++)\n  {\n    /* Initialize sum with zero to carry out MAC operations */\n    sum = 0;\n\n    /* Loop to perform MAC operations according to convolution equation */\n    for (j = 0U; j <= i; j++)\n    {\n      /* Check the array limitations */\n      if (((i - j) < srcBLen) && (j < srcALen))\n      {\n        /* z[i] += x[i-j] * y[j] */\n        sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]);\n      }\n    }\n\n    /* Store the output in the destination buffer */\n    if (inv == 1)\n      *pDst-- = (q7_t) __SSAT((sum >> 7U), 8U);\n    else\n      *pDst++ = (q7_t) __SSAT((sum >> 7U), 8U);\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of Corr group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_f32.c\n * Description:  FIR decimation for floating-point sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup FIR_decimate Finite Impulse Response (FIR) Decimator\n\n  These functions combine an FIR filter together with a decimator.\n  They are used in multirate systems for reducing the sample rate of a signal without introducing aliasing distortion.\n  Conceptually, the functions are equivalent to the block diagram below:\n  \\image html FIRDecimator.gif \"Components included in the FIR Decimator functions\"\n  When decimating by a factor of <code>M</code>, the signal should be prefiltered by a lowpass filter with a normalized\n  cutoff frequency of <code>1/M</code> in order to prevent aliasing distortion.\n  The user of the function is responsible for providing the filter coefficients.\n\n  The FIR decimator functions provided in the CMSIS DSP Library combine the FIR filter and the decimator in an efficient manner.\n  Instead of calculating all of the FIR filter outputs and discarding <code>M-1</code> out of every <code>M</code>, only the\n  samples output by the decimator are computed.\n  The functions operate on blocks of input and output data.\n  <code>pSrc</code> points to an array of <code>blockSize</code> input values and\n  <code>pDst</code> points to an array of <code>blockSize/M</code> output values.\n  In order to have an integer number of output samples <code>blockSize</code>\n  must always be a multiple of the decimation factor <code>M</code>.\n\n  The library provides separate functions for Q15, Q31 and floating-point data types.\n\n  @par           Algorithm:\n                   The FIR portion of the algorithm uses the standard form filter:\n  <pre>\n      y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]\n  </pre>\n                   where, <code>b[n]</code> are the filter coefficients.\n  @par\n                   The <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.\n                   Coefficients are stored in time reversed order.\n  @par\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.\n                   Samples in the state buffer are stored in the order:\n  @par\n  <pre>\n      {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}\n  </pre>\n                   The state variables are updated after each block of data is processed, the coefficients are untouched.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable array should be allocated separately.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n\n @par            Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   - Checks to make sure that the size of the input is a multiple of the decimation factor.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numTaps, pCoeffs, M (decimation factor), pState. Also set all of the values in pState to zero.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   The code below statically initializes each of the 3 different data type filter instance structures\n  <pre>\n      arm_fir_decimate_instance_f32 S = {M, numTaps, pCoeffs, pState};\n      arm_fir_decimate_instance_q31 S = {M, numTaps, pCoeffs, pState};\n      arm_fir_decimate_instance_q15 S = {M, numTaps, pCoeffs, pState};\n  </pre>\n                   where <code>M</code> is the decimation factor; <code>numTaps</code> is the number of filter coefficients in the filter;\n                   <code>pCoeffs</code> is the address of the coefficient buffer;\n                   <code>pState</code> is the address of the state buffer.\n                   Be sure to set the values in the state buffer to zeros when doing static initialization.\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the fixed-point versions of the FIR decimate filter functions.\n                   In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n                   Refer to the function specific documentation below for usage guidelines.\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Processing function for floating-point FIR decimator.\n  @param[in]     S         points to an instance of the floating-point FIR decimator structure\n  @param[in]     pSrc      points to the block of input data\n  @param[out]    pDst      points to the block of output data\n  @param[in]     blockSize number of samples to process\n  @return        none\n */\n\n#if defined(ARM_MATH_NEON)\nvoid arm_fir_decimate_f32(\n  const arm_fir_decimate_instance_f32 * S,\n  const float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;         /* Coefficient pointer */\n  float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n  float32_t *px;                                 /* Temporary pointer for state buffer */\n  const float32_t *pb;                           /* Temporary pointer for coefficient buffer */\n  float32_t sum0;                                /* Accumulator */\n  float32_t x0, c0;                              /* Temporary variables to hold state and coefficient values */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n  uint32_t blkCntN4;\n  float32_t *px0, *px1, *px2, *px3;\n  float32_t acc0, acc1, acc2, acc3;\n  float32_t x1, x2, x3;\n\n  float32x4_t accv,acc0v,acc1v,acc2v,acc3v;\n  float32x4_t x0v, x1v, x2v, x3v;\n  float32x4_t c0v;\n  float32x2_t temp;\n  float32x4_t sum0v;\n \n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + (numTaps - 1U);\n\n  /* Total number of output samples to be computed */\n  blkCnt = outBlockSize / 4;\n  blkCntN4 = outBlockSize - (4 * blkCnt);\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 * decimation factor number of new input samples into the state buffer */\n    i = 4 * S->M;\n\n    do\n    {\n      *pStateCurnt++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulators to zero */\n    acc0v = vdupq_n_f32(0.0);\n    acc1v = vdupq_n_f32(0.0);\n    acc2v = vdupq_n_f32(0.0);\n    acc3v = vdupq_n_f32(0.0);\n\n    /* Initialize state pointer for all the samples */\n    px0 = pState;\n    px1 = pState + S->M;\n    px2 = pState + 2 * S->M;\n    px3 = pState + 3 * S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n    /* Process 4 taps at a time. */\n    tapCnt = numTaps >> 2;\n\n    /* Loop over the number of taps. \n     ** Repeat until we've computed numTaps-4 coefficients. */\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0v = vld1q_f32(pb);\n      pb += 4;\n\n      /* Read x[n-numTaps-1] sample for acc0 */\n      x0v = vld1q_f32(px0);\n      x1v = vld1q_f32(px1);\n      x2v = vld1q_f32(px2);\n      x3v = vld1q_f32(px3);\n\n      px0 += 4;\n      px1 += 4;\n      px2 += 4;\n      px3 += 4;\n     \n      acc0v = vmlaq_f32(acc0v, x0v, c0v);\n      acc1v = vmlaq_f32(acc1v, x1v, c0v);\n      acc2v = vmlaq_f32(acc2v, x2v, c0v);\n      acc3v = vmlaq_f32(acc3v, x3v, c0v);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    temp = vpadd_f32(vget_low_f32(acc0v),vget_high_f32(acc0v));\n    accv[0] = temp[0] + temp[1];\n\n    temp = vpadd_f32(vget_low_f32(acc1v),vget_high_f32(acc1v));\n    accv[1] = temp[0] + temp[1];\n\n    temp = vpadd_f32(vget_low_f32(acc2v),vget_high_f32(acc2v));\n    accv[2] = temp[0] + temp[1];\n\n    temp = vpadd_f32(vget_low_f32(acc3v),vget_high_f32(acc3v));\n    accv[3] = temp[0] + temp[1];\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch  state variables for acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      accv[0] += x0 * c0;\n      accv[1] += x1 * c0;\n      accv[2] += x2 * c0;\n      accv[3] += x3 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + 4 * S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    vst1q_f32(pDst,accv);\n    pDst += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  while (blkCntN4 > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCurnt++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0v =  vdupq_n_f32(0.0);\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n    /* Process 4 taps at a time. */\n    tapCnt = numTaps >> 2;\n\n    /* Loop over the number of taps.\n     ** Repeat until we've computed numTaps-4 coefficients. */\n    while (tapCnt > 0U)\n    {\n      c0v = vld1q_f32(pb);\n      pb += 4;\n\n      x0v = vld1q_f32(px);\n      px += 4;\n\n      sum0v = vmlaq_f32(sum0v, x0v, c0v);\n      \n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    temp = vpadd_f32(vget_low_f32(sum0v),vget_high_f32(sum0v));\n    sum0 = temp[0] + temp[1];\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch 1 state variable */\n      x0 = *(px++);\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = sum0;\n\n    /* Decrement the loop counter */\n    blkCntN4--;\n  }\n\n  /* Processing is complete.\n   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  i = (numTaps - 1U) >> 2;\n\n  /* Copy data */\n  while (i > 0U)\n  {\n    sum0v = vld1q_f32(pState);\n    vst1q_f32(pStateCurnt,sum0v);\n    pState += 4;\n    pStateCurnt += 4;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n\n  i = (numTaps - 1U) % 0x04U;\n\n  /* Copy data */\n  while (i > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n}\n#else\nvoid arm_fir_decimate_f32(\n  const arm_fir_decimate_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCur;                          /* Points to the current sample of the state */\n        float32_t *px0;                                /* Temporary pointer for state buffer */\n  const float32_t *pb;                                 /* Temporary pointer for coefficient buffer */\n        float32_t x0, c0;                              /* Temporary variables to hold state and coefficient values */\n        float32_t acc0;                                /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        float32_t *px1, *px2, *px3;\n        float32_t x1, x2, x3;\n        float32_t acc1, acc2, acc3;\n#endif\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (numTaps - 1U);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 samples at a time */\n  blkCnt = outBlockSize >> 2U;\n\n  /* Samples loop unrolled by 4 */\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 * decimation factor number of new input samples into the state buffer */\n    i = S->M * 4;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulators to zero */\n    acc0 = 0.0f;\n    acc1 = 0.0f;\n    acc2 = 0.0f;\n    acc3 = 0.0f;\n\n    /* Initialize state pointer for all the samples */\n    px0 = pState;\n    px1 = pState + S->M;\n    px2 = pState + 2 * S->M;\n    px3 = pState + 3 * S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-1] sample for acc0 */\n      x0 = *(px0++);\n      /* Read x[n-numTaps-1] sample for acc1 */\n      x1 = *(px1++);\n      /* Read x[n-numTaps-1] sample for acc2 */\n      x2 = *(px2++);\n      /* Read x[n-numTaps-1] sample for acc3 */\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n      acc2 += x2 * c0;\n      acc3 += x3 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-2] sample for acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n      acc2 += x2 * c0;\n      acc3 += x3 * c0;\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-3] sample acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n      acc2 += x2 * c0;\n      acc3 += x3 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-4] sample acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n      acc2 += x2 * c0;\n      acc3 += x3 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch state variables for acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n      acc2 += x2 * c0;\n      acc3 += x3 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M * 4;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = acc0;\n    *pDst++ = acc1;\n    *pDst++ = acc2;\n    *pDst++ = acc3;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining samples */\n  blkCnt = outBlockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = outBlockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    acc0 = 0.0f;\n\n    /* Initialize state pointer */\n    px0 = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-1] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-2] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-3] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = acc0;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x04U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_fast_q15.c\n * Description:  Fast Q15 FIR Decimator\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 FIR decimator (fast variant).\n  @param[in]     S          points to an instance of the Q15 FIR decimator structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of input samples to process per call\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This fast version uses a 32-bit accumulator with 2.30 format.\n                   The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around and distorts the result.\n                   In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (log2 is read as log to the base 2).\n                   The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result.\n  @remark\n                   Refer to \\ref arm_fir_decimate_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.\n                   Both the slow and the fast versions use the same instance structure.\n                   Use function \\ref arm_fir_decimate_init_q15() to initialize the filter structure.\n */\n\n#if defined (ARM_MATH_DSP)\n\nvoid arm_fir_decimate_fast_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCur;                              /* Points to the current sample of the state */\n        q15_t *px;                                     /* Temporary pointer for state buffer */\n  const q15_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q31_t x0, x1, c0;                              /* Temporary variables to hold state and coefficient values */\n        q31_t sum0;                                    /* Accumulators */\n        q31_t acc0, acc1;\n        q15_t *px0, *px1;\n        uint32_t blkCntN3;\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t c1;                                      /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (numTaps - 1U);\n\n  /* Total number of output samples to be computed */\n  blkCnt = outBlockSize / 2;\n  blkCntN3 = outBlockSize - (2 * blkCnt);\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 2 * decimation factor number of new input samples into the state buffer */\n    i = S->M * 2;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    acc0 = 0;\n    acc1 = 0;\n\n    /* Initialize state pointer for all the samples */\n    px0 = pState;\n    px1 = pState + S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] and b[numTaps-2] coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */\n      x0 = read_q15x2_ia (&px0);\n      x1 = read_q15x2_ia (&px1);\n\n      /* Perform the multiply-accumulate */\n      acc0 = __SMLAD(x0, c0, acc0);\n      acc1 = __SMLAD(x1, c0, acc1);\n\n      /* Read the b[numTaps-3] and b[numTaps-4] coefficient */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */\n      x0 = read_q15x2_ia (&px0);\n      x1 = read_q15x2_ia (&px1);\n\n      /* Perform the multiply-accumulate */\n      acc0 = __SMLAD(x0, c0, acc0);\n      acc1 = __SMLAD(x1, c0, acc1);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch state variables for acc0, acc1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 = __SMLAD(x0, c0, acc0);\n      acc1 = __SMLAD(x1, c0, acc1);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M * 2;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  while (blkCntN3 > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] and b[numTaps-2] coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Read x[n-numTaps-1] and x[n-numTaps-2] sample */\n      x0 = read_q15x2_ia (&px);\n\n      /* Read the b[numTaps-3] and b[numTaps-4] coefficients */\n      c1 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Perform the multiply-accumulate */\n      sum0 = __SMLAD(x0, c0, sum0);\n\n      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */\n      x0 = read_q15x2_ia (&px);\n\n      /* Perform the multiply-accumulate */\n      sum0 = __SMLAD(x0, c1, sum0);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 = __SMLAD(x0, c0, sum0);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCntN3--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n  i = (numTaps - 1U) >> 2U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n  i = (numTaps - 1U) % 0x04U;\n\n  /* Copy data */\n  while (i > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n}\n\n#else /* #if defined (ARM_MATH_DSP) */\n\nvoid arm_fir_decimate_fast_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCur;                              /* Points to the current sample of the state */\n        q15_t *px;                                     /* Temporary pointer for state buffer */\n  const q15_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q15_t x0, x1, c0;                              /* Temporary variables to hold state and coefficient values */\n        q31_t sum0;                                    /* Accumulators */\n        q31_t acc0, acc1;\n        q15_t *px0, *px1;\n        uint32_t blkCntN3;\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (numTaps - 1U);\n\n  /* Total number of output samples to be computed */\n  blkCnt = outBlockSize / 2;\n  blkCntN3 = outBlockSize - (2 * blkCnt);\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 2 * decimation factor number of new input samples into the state buffer */\n    i = S->M * 2;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    acc0 = 0;\n    acc1 = 0;\n\n    /* Initialize state pointer */\n    px0 = pState;\n    px1 = pState + S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the Read b[numTaps-1] coefficients */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-1] for sample 0 and for sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-2] for sample 0 and sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Read the b[numTaps-3] coefficients */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-3] for sample 0 and sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-4] for sample 0 and sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M * 2;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n\n    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  while (blkCntN3 > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-1] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-2] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-3] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCntN3--;\n  }\n\n  /* Processing is complete.\n   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n  i = (numTaps - 1U) >> 2U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n  i = (numTaps - 1U) % 0x04U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n}\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_fast_q31.c\n * Description:  Fast Q31 FIR Decimator\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 FIR decimator (fast variant).\n  @param[in]     S          points to an instance of the Q31 FIR decimator structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This function is optimized for speed at the expense of fixed-point precision and overflow protection.\n                   The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.\n                   These intermediate results are added to a 2.30 accumulator.\n                   Finally, the accumulator is saturated and converted to a 1.31 result.\n                   The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result.\n                   In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2).\n\n  @remark\n                   Refer to \\ref arm_fir_decimate_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision.\n                   Both the slow and the fast versions use the same instance structure.\n                   Use function \\ref arm_fir_decimate_init_q31() to initialize the filter structure.\n */\n\nvoid arm_fir_decimate_fast_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCur;                              /* Points to the current sample of the state */\n        q31_t *px0;                                    /* Temporary pointer for state buffer */\n  const q31_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        q63_t acc0;                                    /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t *px1, *px2, *px3;\n        q31_t x1, x2, x3;\n        q63_t acc1, acc2, acc3;\n#endif\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (numTaps - 1U);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 samples at a time */\n  blkCnt = outBlockSize >> 2U;\n\n  /* Samples loop unrolled by 4 */\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 * decimation factor number of new input samples into the state buffer */\n    i = S->M * 4;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulators to zero */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Initialize state pointer for all the samples */\n    px0 = pState;\n    px1 = pState + S->M;\n    px2 = pState + 2 * S->M;\n    px3 = pState + 3 * S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-1] sample for acc0 */\n      x0 = *(px0++);\n      /* Read x[n-numTaps-1] sample for acc1 */\n      x1 = *(px1++);\n      /* Read x[n-numTaps-1] sample for acc2 */\n      x2 = *(px2++);\n      /* Read x[n-numTaps-1] sample for acc3 */\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n      acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n      acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-2] sample for acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n      acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n      acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-3] sample acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n      acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n      acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-4] sample acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n      acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n      acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch state variables for acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);\n      acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);\n      acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M * 4;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = (q31_t) (acc0 << 1);\n    *pDst++ = (q31_t) (acc1 << 1);\n    *pDst++ = (q31_t) (acc2 << 1);\n    *pDst++ = (q31_t) (acc3 << 1);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining samples */\n  blkCnt = outBlockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = outBlockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    acc0 = 0;\n\n    /* Initialize state pointer */\n    px0 = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-1] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-2] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-3] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = (q31_t) (acc0 << 1);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x04U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_init_f32.c\n * Description:  Floating-point FIR Decimator initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point FIR decimator.\n  @param[in,out] S          points to an instance of the floating-point FIR decimator structure\n  @param[in]     numTaps    number of coefficients in the filter\n  @param[in]     M          decimation factor\n  @param[in]     pCoeffs    points to the filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     blockSize  number of input samples to process per call\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS      : Operation successful\n                   - \\ref ARM_MATH_LENGTH_ERROR : <code>blockSize</code> is not a multiple of <code>M</code>\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>numTaps+blockSize-1</code> words where <code>blockSize</code> is the number of input samples passed to <code>arm_fir_decimate_f32()</code>.\n                   <code>M</code> is the decimation factor.\n */\n\narm_status arm_fir_decimate_init_f32(\n        arm_fir_decimate_instance_f32 * S,\n        uint16_t numTaps,\n        uint8_t M,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        uint32_t blockSize)\n{\n  arm_status status;\n\n  /* The size of the input block must be a multiple of the decimation factor */\n  if ((blockSize % M) != 0U)\n  {\n    /* Set status as ARM_MATH_LENGTH_ERROR */\n    status = ARM_MATH_LENGTH_ERROR;\n  }\n  else\n  {\n    /* Assign filter taps */\n    S->numTaps = numTaps;\n\n    /* Assign coefficient pointer */\n    S->pCoeffs = pCoeffs;\n\n    /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */\n    memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t));\n\n    /* Assign state pointer */\n    S->pState = pState;\n\n    /* Assign Decimation Factor */\n    S->M = M;\n\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n\n}\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_init_q15.c\n * Description:  Initialization function for the Q15 FIR Decimator\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 FIR decimator.\n  @param[in,out] S          points to an instance of the Q15 FIR decimator structure\n  @param[in]     numTaps    number of coefficients in the filter\n  @param[in]     M          decimation factor\n  @param[in]     pCoeffs    points to the filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     blockSize  number of input samples to process\n  @return        execution  status\n                   - \\ref ARM_MATH_SUCCESS      : Operation successful\n                   - \\ref ARM_MATH_LENGTH_ERROR : <code>blockSize</code> is not a multiple of <code>M</code>\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>numTaps+blockSize-1</code> words where <code>blockSize</code> is the number of input samples\n                   to the call <code>arm_fir_decimate_q15()</code>.\n                   <code>M</code> is the decimation factor.\n */\n\narm_status arm_fir_decimate_init_q15(\n        arm_fir_decimate_instance_q15 * S,\n        uint16_t numTaps,\n        uint8_t M,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        uint32_t blockSize)\n{\n  arm_status status;\n\n  /* The size of the input block must be a multiple of the decimation factor */\n  if ((blockSize % M) != 0U)\n  {\n    /* Set status as ARM_MATH_LENGTH_ERROR */\n    status = ARM_MATH_LENGTH_ERROR;\n  }\n  else\n  {\n    /* Assign filter taps */\n    S->numTaps = numTaps;\n\n    /* Assign coefficient pointer */\n    S->pCoeffs = pCoeffs;\n\n    /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */\n    memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t));\n\n    /* Assign state pointer */\n    S->pState = pState;\n\n    /* Assign Decimation Factor */\n    S->M = M;\n\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n\n}\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_init_q31.c\n * Description:  Initialization function for Q31 FIR Decimation filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 FIR decimator.\n  @param[in,out] S          points to an instance of the Q31 FIR decimator structure\n  @param[in]     numTaps    number of coefficients in the filter\n  @param[in]     M          decimation factor\n  @param[in]     pCoeffs    points to the filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     blockSize  number of input samples to process\n  @return        execution  status\n                   - \\ref ARM_MATH_SUCCESS      : Operation successful\n                   - \\ref ARM_MATH_LENGTH_ERROR : <code>blockSize</code> is not a multiple of <code>M</code>\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>numTaps+blockSize-1</code> words where <code>blockSize</code> is the number of input samples passed to <code>arm_fir_decimate_q31()</code>.\n                   <code>M</code> is the decimation factor.\n */\n\narm_status arm_fir_decimate_init_q31(\n        arm_fir_decimate_instance_q31 * S,\n        uint16_t numTaps,\n        uint8_t M,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        uint32_t blockSize)\n{\n  arm_status status;\n\n  /* The size of the input block must be a multiple of the decimation factor */\n  if ((blockSize % M) != 0U)\n  {\n    /* Set status as ARM_MATH_LENGTH_ERROR */\n    status = ARM_MATH_LENGTH_ERROR;\n  }\n  else\n  {\n    /* Assign filter taps */\n    S->numTaps = numTaps;\n\n    /* Assign coefficient pointer */\n    S->pCoeffs = pCoeffs;\n\n    /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */\n    memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q31_t));\n\n    /* Assign state pointer */\n    S->pState = pState;\n\n    /* Assign Decimation Factor */\n    S->M = M;\n\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n\n}\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_q15.c\n * Description:  Q15 FIR Decimator\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 FIR decimator.\n  @param[in]     S          points to an instance of the Q15 FIR decimator structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of input samples to process per call\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\n                   Lastly, the accumulator is saturated to yield a result in 1.15 format.\n\n @remark\n                   Refer to \\ref arm_fir_decimate_fast_q15() for a faster but less precise implementation of this function.\n */\n\n#if defined (ARM_MATH_DSP)\n\nvoid arm_fir_decimate_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCur;                              /* Points to the current sample of the state */\n        q15_t *px;                                     /* Temporary pointer for state buffer */\n  const q15_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q31_t x0, x1, c0;                              /* Temporary variables to hold state and coefficient values */\n        q63_t sum0;                                    /* Accumulators */\n        q63_t acc0, acc1;\n        q15_t *px0, *px1;\n        uint32_t blkCntN3;\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t c1;                                      /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (numTaps - 1U);\n\n  /* Total number of output samples to be computed */\n  blkCnt = outBlockSize / 2;\n  blkCntN3 = outBlockSize - (2 * blkCnt);\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 2 * decimation factor number of new input samples into the state buffer */\n    i = S->M * 2;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    acc0 = 0;\n    acc1 = 0;\n\n    /* Initialize state pointer for all the samples */\n    px0 = pState;\n    px1 = pState + S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] and b[numTaps-2] coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */\n      x0 = read_q15x2_ia (&px0);\n      x1 = read_q15x2_ia (&px1);\n\n      /* Perform the multiply-accumulate */\n      acc0 = __SMLALD(x0, c0, acc0);\n      acc1 = __SMLALD(x1, c0, acc1);\n\n      /* Read the b[numTaps-3] and b[numTaps-4] coefficient */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */\n      x0 = read_q15x2_ia (&px0);\n      x1 = read_q15x2_ia (&px1);\n\n      /* Perform the multiply-accumulate */\n      acc0 = __SMLALD(x0, c0, acc0);\n      acc1 = __SMLALD(x1, c0, acc1);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch state variables for acc0, acc1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 = __SMLALD(x0, c0, acc0);\n      acc1 = __SMLALD(x1, c0, acc1);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M * 2;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  while (blkCntN3 > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] and b[numTaps-2] coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Read x[n-numTaps-1] and x[n-numTaps-2] sample */\n      x0 = read_q15x2_ia (&px);\n\n      /* Read the b[numTaps-3] and b[numTaps-4] coefficients */\n      c1 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Perform the multiply-accumulate */\n      sum0 = __SMLALD(x0, c0, sum0);\n\n      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */\n      x0 = read_q15x2_ia (&px);\n\n      /* Perform the multiply-accumulate */\n      sum0 = __SMLALD(x0, c1, sum0);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 = __SMLALD(x0, c0, sum0);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCntN3--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n  i = (numTaps - 1U) >> 2U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n  i = (numTaps - 1U) % 0x04U;\n\n  /* Copy data */\n  while (i > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n}\n\n#else /* #if defined (ARM_MATH_DSP) */\n\nvoid arm_fir_decimate_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCur;                              /* Points to the current sample of the state */\n        q15_t *px;                                     /* Temporary pointer for state buffer */\n  const q15_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q15_t x0, x1, c0;                              /* Temporary variables to hold state and coefficient values */\n        q63_t sum0;                                    /* Accumulators */\n        q63_t acc0, acc1;\n        q15_t *px0, *px1;\n        uint32_t blkCntN3;\n        uint32_t numTaps = S->numTaps;                 /* Number of taps */\n        uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (numTaps - 1U);\n\n  /* Total number of output samples to be computed */\n  blkCnt = outBlockSize / 2;\n  blkCntN3 = outBlockSize - (2 * blkCnt);\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 2 * decimation factor number of new input samples into the state buffer */\n    i = S->M * 2;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    acc0 = 0;\n    acc1 = 0;\n\n    /* Initialize state pointer */\n    px0 = pState;\n    px1 = pState + S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the Read b[numTaps-1] coefficients */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-1] for sample 0 and for sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-2] for sample 0 and sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Read the b[numTaps-3] coefficients */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-3] for sample 0 and sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-4] for sample 0 and sample 1 */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px0++;\n      x1 = *px1++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M * 2;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n\n    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  while (blkCntN3 > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    sum0 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-1] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-2] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-3] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px++;\n\n      /* Perform the multiply-accumulate */\n      sum0 += x0 * c0;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* Store filter output, smlad returns the values in 2.14 format */\n    /* so downsacle by 15 to get output in 1.15 */\n    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));\n\n    /* Decrement loop counter */\n    blkCntN3--;\n  }\n\n  /* Processing is complete.\n   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n  i = (numTaps - 1U) >> 2U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n  i = (numTaps - 1U) % 0x04U;\n\n  /* copy data */\n  while (i > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n}\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_decimate_q31.c\n * Description:  Q31 FIR Decimator\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_decimate\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 FIR decimator.\n  @param[in]     S          points to an instance of the Q31 FIR decimator structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clip.\n                   In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2).\n                   After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.\n\n @remark\n                   Refer to \\ref arm_fir_decimate_fast_q31() for a faster but less precise implementation of this function.\n */\n\nvoid arm_fir_decimate_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCur;                              /* Points to the current sample of the state */\n        q31_t *px0;                                    /* Temporary pointer for state buffer */\n  const q31_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */\n        q63_t acc0;                                    /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M;  /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t *px1, *px2, *px3;\n        q31_t x1, x2, x3;\n        q63_t acc1, acc2, acc3;\n#endif\n\n  /* S->pState buffer contains previous frame (numTaps - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (numTaps - 1U);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 samples at a time */\n  blkCnt = outBlockSize >> 2U;\n\n  /* Samples loop unrolled by 4 */\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 * decimation factor number of new input samples into the state buffer */\n    i = S->M * 4;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulators to zero */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Initialize state pointer for all the samples */\n    px0 = pState;\n    px1 = pState + S->M;\n    px2 = pState + 2 * S->M;\n    px3 = pState + 3 * S->M;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-1] sample for acc0 */\n      x0 = *(px0++);\n      /* Read x[n-numTaps-1] sample for acc1 */\n      x1 = *(px1++);\n      /* Read x[n-numTaps-1] sample for acc2 */\n      x2 = *(px2++);\n      /* Read x[n-numTaps-1] sample for acc3 */\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n      acc1 += (q63_t) x1 * c0;\n      acc2 += (q63_t) x2 * c0;\n      acc3 += (q63_t) x3 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-2] sample for acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n      acc1 += (q63_t) x1 * c0;\n      acc2 += (q63_t) x2 * c0;\n      acc3 += (q63_t) x3 * c0;\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-3] sample acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n      acc1 += (q63_t) x1 * c0;\n      acc2 += (q63_t) x2 * c0;\n      acc3 += (q63_t) x3 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-4] sample acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n      acc1 += (q63_t) x1 * c0;\n      acc2 += (q63_t) x2 * c0;\n      acc3 += (q63_t) x3 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch state variables for acc0, acc1, acc2, acc3 */\n      x0 = *(px0++);\n      x1 = *(px1++);\n      x2 = *(px2++);\n      x3 = *(px3++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n      acc1 += (q63_t) x1 * c0;\n      acc2 += (q63_t) x2 * c0;\n      acc3 += (q63_t) x3 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M * 4;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = (q31_t) (acc0 >> 31);\n    *pDst++ = (q31_t) (acc1 >> 31);\n    *pDst++ = (q31_t) (acc2 >> 31);\n    *pDst++ = (q31_t) (acc3 >> 31);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining samples */\n  blkCnt = outBlockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = outBlockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy decimation factor number of new input samples into the state buffer */\n    i = S->M;\n\n    do\n    {\n      *pStateCur++ = *pSrc++;\n\n    } while (--i);\n\n    /* Set accumulator to zero */\n    acc0 = 0;\n\n    /* Initialize state pointer */\n    px0 = pState;\n\n    /* Initialize coeff pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-1] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-2] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-3] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *pb++;\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of taps */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *pb++;\n\n      /* Fetch 1 state variable */\n      x0 = *px0++;\n\n      /* Perform the multiply-accumulate */\n      acc0 += (q63_t) x0 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by the decimation factor\n     * to process the next group of decimation factor number samples */\n    pState = pState + S->M;\n\n    /* The result is in the accumulator, store in the destination buffer. */\n    *pDst++ = (q31_t) (acc0 >> 31);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x04U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR_decimate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_f32.c\n * Description:  Floating-point FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup FIR Finite Impulse Response (FIR) Filters\n\n  This set of functions implements Finite Impulse Response (FIR) filters\n  for Q7, Q15, Q31, and floating-point data types.  Fast versions of Q15 and Q31 are also provided.\n  The functions operate on blocks of input and output data and each call to the function processes\n  <code>blockSize</code> samples through the filter.  <code>pSrc</code> and\n  <code>pDst</code> points to input and output arrays containing <code>blockSize</code> values.\n\n  @par           Algorithm\n                   The FIR filter algorithm is based upon a sequence of multiply-accumulate (MAC) operations.\n                   Each filter coefficient <code>b[n]</code> is multiplied by a state variable which equals a previous input sample <code>x[n]</code>.\n  <pre>\n      y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]\n  </pre>\n  @par\n                   \\image html FIR.GIF \"Finite Impulse Response filter\"\n  @par\n                   <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.\n                   Coefficients are stored in time reversed order.\n  @par\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.\n                   Samples in the state buffer are stored in the following order.\n  @par\n  <pre>\n      {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}\n  </pre>\n  @par\n                   Note that the length of the state buffer exceeds the length of the coefficient array by <code>blockSize-1</code>.\n                   The increased state buffer length allows circular addressing, which is traditionally used in the FIR filters,\n                   to be avoided and yields a significant speed improvement.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.\n                   There are separate instance structure declarations for each of the 4 supported data types.\n\n  @par           Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numTaps, pCoeffs, pState. Also set all of the values in pState to zero.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Set the values in the state buffer to zeros before static initialization.\n                   The code below statically initializes each of the 4 different data type filter instance structures\n  <pre>\n      arm_fir_instance_f32 S = {numTaps, pState, pCoeffs};\n      arm_fir_instance_q31 S = {numTaps, pState, pCoeffs};\n      arm_fir_instance_q15 S = {numTaps, pState, pCoeffs};\n      arm_fir_instance_q7 S =  {numTaps, pState, pCoeffs};\n  </pre>\n                   where <code>numTaps</code> is the number of filter coefficients in the filter; <code>pState</code> is the address of the state buffer;\n                   <code>pCoeffs</code> is the address of the coefficient buffer.\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the fixed-point versions of the FIR filter functions.\n                   In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n                   Refer to the function specific documentation below for usage guidelines.\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Processing function for floating-point FIR filter.\n  @param[in]     S          points to an instance of the floating-point FIR filter structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n#if defined(ARM_MATH_NEON)\n\nvoid arm_fir_f32(\nconst arm_fir_instance_f32 * S,\nconst float32_t * pSrc,\nfloat32_t * pDst,\nuint32_t blockSize)\n{\n   float32_t *pState = S->pState;                 /* State pointer */\n   const float32_t *pCoeffs = S->pCoeffs;         /* Coefficient pointer */\n   float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n   float32_t *px;                                 /* Temporary pointers for state buffer */\n   const float32_t *pb;                           /* Temporary pointers for coefficient buffer */\n   uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n   uint32_t i, tapCnt, blkCnt;                    /* Loop counters */\n\n   float32x4_t accv0,accv1,samples0,samples1,x0,x1,x2,xa,xb,x,b,accv;\n   uint32x4_t x0_u,x1_u,x2_u,xa_u,xb_u;\n   float32_t acc;\n\n   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n   /* pStateCurnt points to the location where the new input data should be written */\n   pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n   /* Loop unrolling */\n   blkCnt = blockSize >> 3;\n\n   while (blkCnt > 0U)\n   {\n      /* Copy 8 samples at a time into state buffers */\n      samples0 = vld1q_f32(pSrc);\n      vst1q_f32(pStateCurnt,samples0);\n\n      pStateCurnt += 4;\n      pSrc += 4 ;\n\n      samples1 = vld1q_f32(pSrc);\n      vst1q_f32(pStateCurnt,samples1);\n\n      pStateCurnt += 4;\n      pSrc += 4 ;\n\n      /* Set the accumulators to zero */\n      accv0 = vdupq_n_f32(0);\n      accv1 = vdupq_n_f32(0);\n\n      /* Initialize state pointer */\n      px = pState;\n\n      /* Initialize coefficient pointer */\n      pb = pCoeffs;\n\n      /* Loop unroling */\n      i = numTaps >> 2;\n\n      /* Perform the multiply-accumulates */\n      x0 = vld1q_f32(px);\n      x1 = vld1q_f32(px + 4);\n\n      while(i > 0)\n      {\n         /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */\n         x2 = vld1q_f32(px + 8);\n         b = vld1q_f32(pb);\n         xa = x0;\n         xb = x1;\n         accv0 = vmlaq_n_f32(accv0,xa,b[0]);\n         accv1 = vmlaq_n_f32(accv1,xb,b[0]);\n\n         xa = vextq_f32(x0,x1,1);\n         xb = vextq_f32(x1,x2,1);\n         \n\t accv0 = vmlaq_n_f32(accv0,xa,b[1]);\n         accv1 = vmlaq_n_f32(accv1,xb,b[1]);\n\n\t xa = vextq_f32(x0,x1,2);\n         xb = vextq_f32(x1,x2,2);\n\n         accv0 = vmlaq_n_f32(accv0,xa,b[2]);\n         accv1 = vmlaq_n_f32(accv1,xb,b[2]);\n\n\t xa = vextq_f32(x0,x1,3);\n\t xb = vextq_f32(x1,x2,3);\n         \n \t accv0 = vmlaq_n_f32(accv0,xa,b[3]);\n         accv1 = vmlaq_n_f32(accv1,xb,b[3]);\n\n         pb += 4;\n         x0 = x1;\n         x1 = x2;\n         px += 4;\n         i--;\n\n      }\n\n      /* Tail */\n      i = numTaps & 3;\n      x2 = vld1q_f32(px + 8);\n\n      /* Perform the multiply-accumulates */\n      switch(i)\n      {\n         case 3:\n         {\n           accv0 = vmlaq_n_f32(accv0,x0,*pb);\n           accv1 = vmlaq_n_f32(accv1,x1,*pb);\n\n           pb++;\n\n\t   xa = vextq_f32(x0,x1,1);\n\t   xb = vextq_f32(x1,x2,1);\n\n           accv0 = vmlaq_n_f32(accv0,xa,*pb);\n           accv1 = vmlaq_n_f32(accv1,xb,*pb);\n\n           pb++;\n\n           xa = vextq_f32(x0,x1,2);\n           xb = vextq_f32(x1,x2,2);\n           \n\t   accv0 = vmlaq_n_f32(accv0,xa,*pb);\n           accv1 = vmlaq_n_f32(accv1,xb,*pb);\n\n         }\n         break;\n         case 2:\n         {\n           accv0 = vmlaq_n_f32(accv0,x0,*pb);\n           accv1 = vmlaq_n_f32(accv1,x1,*pb);\n\n           pb++;\n\n           xa = vextq_f32(x0,x1,1);\n           xb = vextq_f32(x1,x2,1);\n           \n\t   accv0 = vmlaq_n_f32(accv0,xa,*pb);\n           accv1 = vmlaq_n_f32(accv1,xb,*pb);\n\n         }\n         break;\n         case 1:\n         {\n           \n           accv0 = vmlaq_n_f32(accv0,x0,*pb);\n           accv1 = vmlaq_n_f32(accv1,x1,*pb);\n\n         }\n         break;\n         default:\n         break;\n      }\n\n      /* The result is stored in the destination buffer. */\n      vst1q_f32(pDst,accv0);\n      pDst += 4;\n      vst1q_f32(pDst,accv1);\n      pDst += 4;\n\n      /* Advance state pointer by 8 for the next 8 samples */\n      pState = pState + 8;\n\n      blkCnt--;\n   }\n\n   /* Tail */\n   blkCnt = blockSize & 0x7;\n\n   while (blkCnt > 0U)\n   {\n      /* Copy one sample at a time into state buffer */\n      *pStateCurnt++ = *pSrc++;\n\n      /* Set the accumulator to zero */\n      acc = 0.0f;\n\n      /* Initialize state pointer */\n      px = pState;\n\n      /* Initialize Coefficient pointer */\n      pb = pCoeffs;\n\n      i = numTaps;\n\n      /* Perform the multiply-accumulates */\n      do\n      {\n         /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */\n         acc += *px++ * *pb++;\n         i--;\n\n      } while (i > 0U);\n\n      /* The result is stored in the destination buffer. */\n      *pDst++ = acc;\n\n      /* Advance state pointer by 1 for the next sample */\n      pState = pState + 1;\n\n      blkCnt--;\n   }\n\n   /* Processing is complete.\n   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n   /* Points to the start of the state buffer */\n   pStateCurnt = S->pState;\n\n   /* Copy numTaps number of values */\n   tapCnt = numTaps - 1U;\n\n   /* Copy data */\n   while (tapCnt > 0U)\n   {\n      *pStateCurnt++ = *pState++;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n   }\n\n}\n#else\nvoid arm_fir_f32(\n  const arm_fir_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n        float32_t *px;                                 /* Temporary pointer for state buffer */\n  const float32_t *pb;                                 /* Temporary pointer for coefficient buffer */\n        float32_t acc0;                                /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, tapCnt, blkCnt;                    /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        float32_t acc1, acc2, acc3, acc4, acc5, acc6, acc7;     /* Accumulators */\n        float32_t x0, x1, x2, x3, x4, x5, x6, x7;               /* Temporary variables to hold state values */\n        float32_t c0;                                           /* Temporary variable to hold coefficient value */\n#endif\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 8 output values simultaneously.\n   * The variables acc0 ... acc7 hold output values that are being computed:\n   *\n   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]\n   *    acc1 =  b[numTaps-1] * x[n-numTaps]   + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]\n   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps]   + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]\n   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]\n   */\n\n  blkCnt = blockSize >> 3U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 new input samples into the state buffer. */\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set all accumulators to zero */\n    acc0 = 0.0f;\n    acc1 = 0.0f;\n    acc2 = 0.0f;\n    acc3 = 0.0f;\n    acc4 = 0.0f;\n    acc5 = 0.0f;\n    acc6 = 0.0f;\n    acc7 = 0.0f;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* This is separated from the others to avoid\n     * a call to __aeabi_memmove which would be slower\n     */\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n\n    /* Read the first 7 samples from the state buffer:  x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */\n    x0 = *px++;\n    x1 = *px++;\n    x2 = *px++;\n    x3 = *px++;\n    x4 = *px++;\n    x5 = *px++;\n    x6 = *px++;\n\n    /* Loop unrolling: process 8 taps at a time. */\n    tapCnt = numTaps >> 3U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-3] sample */\n      x7 = *(px++);\n\n      /* acc0 +=  b[numTaps-1] * x[n-numTaps] */\n      acc0 += x0 * c0;\n\n      /* acc1 +=  b[numTaps-1] * x[n-numTaps-1] */\n      acc1 += x1 * c0;\n\n      /* acc2 +=  b[numTaps-1] * x[n-numTaps-2] */\n      acc2 += x2 * c0;\n\n      /* acc3 +=  b[numTaps-1] * x[n-numTaps-3] */\n      acc3 += x3 * c0;\n\n      /* acc4 +=  b[numTaps-1] * x[n-numTaps-4] */\n      acc4 += x4 * c0;\n\n      /* acc1 +=  b[numTaps-1] * x[n-numTaps-5] */\n      acc5 += x5 * c0;\n\n      /* acc2 +=  b[numTaps-1] * x[n-numTaps-6] */\n      acc6 += x6 * c0;\n\n      /* acc3 +=  b[numTaps-1] * x[n-numTaps-7] */\n      acc7 += x7 * c0;\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *(px++);\n\n      /* Perform the multiply-accumulate */\n      acc0 += x1 * c0;\n      acc1 += x2 * c0;\n      acc2 += x3 * c0;\n      acc3 += x4 * c0;\n      acc4 += x5 * c0;\n      acc5 += x6 * c0;\n      acc6 += x7 * c0;\n      acc7 += x0 * c0;\n\n      /* Read the b[numTaps-3] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-5] sample */\n      x1 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += x2 * c0;\n      acc1 += x3 * c0;\n      acc2 += x4 * c0;\n      acc3 += x5 * c0;\n      acc4 += x6 * c0;\n      acc5 += x7 * c0;\n      acc6 += x0 * c0;\n      acc7 += x1 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-6] sample */\n      x2 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += x3 * c0;\n      acc1 += x4 * c0;\n      acc2 += x5 * c0;\n      acc3 += x6 * c0;\n      acc4 += x7 * c0;\n      acc5 += x0 * c0;\n      acc6 += x1 * c0;\n      acc7 += x2 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-6] sample */\n      x3 = *(px++);\n      /* Perform the multiply-accumulates */\n      acc0 += x4 * c0;\n      acc1 += x5 * c0;\n      acc2 += x6 * c0;\n      acc3 += x7 * c0;\n      acc4 += x0 * c0;\n      acc5 += x1 * c0;\n      acc6 += x2 * c0;\n      acc7 += x3 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-6] sample */\n      x4 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += x5 * c0;\n      acc1 += x6 * c0;\n      acc2 += x7 * c0;\n      acc3 += x0 * c0;\n      acc4 += x1 * c0;\n      acc5 += x2 * c0;\n      acc6 += x3 * c0;\n      acc7 += x4 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-6] sample */\n      x5 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += x6 * c0;\n      acc1 += x7 * c0;\n      acc2 += x0 * c0;\n      acc3 += x1 * c0;\n      acc4 += x2 * c0;\n      acc5 += x3 * c0;\n      acc6 += x4 * c0;\n      acc7 += x5 * c0;\n\n      /* Read the b[numTaps-4] coefficient */\n      c0 = *(pb++);\n\n      /* Read x[n-numTaps-6] sample */\n      x6 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += x7 * c0;\n      acc1 += x0 * c0;\n      acc2 += x1 * c0;\n      acc3 += x2 * c0;\n      acc4 += x3 * c0;\n      acc5 += x4 * c0;\n      acc6 += x5 * c0;\n      acc7 += x6 * c0;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    tapCnt = numTaps % 0x8U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch 1 state variable */\n      x7 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += x0 * c0;\n      acc1 += x1 * c0;\n      acc2 += x2 * c0;\n      acc3 += x3 * c0;\n      acc4 += x4 * c0;\n      acc5 += x5 * c0;\n      acc6 += x6 * c0;\n      acc7 += x7 * c0;\n\n      /* Reuse the present sample states for next sample */\n      x0 = x1;\n      x1 = x2;\n      x2 = x3;\n      x3 = x4;\n      x4 = x5;\n      x5 = x6;\n      x6 = x7;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by 8 to process the next group of 8 samples */\n    pState = pState + 8;\n\n    /* The results in the 8 accumulators, store in the destination buffer. */\n    *pDst++ = acc0;\n    *pDst++ = acc1;\n    *pDst++ = acc2;\n    *pDst++ = acc3;\n    *pDst++ = acc4;\n    *pDst++ = acc5;\n    *pDst++ = acc6;\n    *pDst++ = acc7;\n\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining output samples */\n  blkCnt = blockSize % 0x8U;\n\n#else\n\n  /* Initialize blkCnt with number of taps */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy one sample at a time into state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set the accumulator to zero */\n    acc0 = 0.0f;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize Coefficient pointer */\n    pb = pCoeffs;\n\n    i = numTaps;\n\n    /* Perform the multiply-accumulates */\n    do\n    {\n      /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */\n      acc0 += *px++ * *pb++;\n\n      i--;\n    } while (i > 0U);\n\n    /* Store result in destination buffer. */\n    *pDst++ = acc0;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy remaining data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n#endif /* #if defined(ARM_MATH_NEON) */\n/**\n* @} end of FIR group\n*/\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_fast_q15.c\n * Description:  Q15 Fast FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 FIR filter (fast version).\n  @param[in]     S          points to an instance of the Q15 FIR filter structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This fast version uses a 32-bit accumulator with 2.30 format.\n                   The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around and distorts the result.\n                   In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits.\n                   The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result.\n\n  @remark\n                   Refer to \\ref arm_fir_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.  Both the slow and the fast versions use the same instance structure.\n                   Use function \\ref arm_fir_init_q15() to initialize the filter structure.\n */\n\nvoid arm_fir_fast_q15(\n  const arm_fir_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q15_t *px;                                     /* Temporary pointer for state buffer */\n  const q15_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q31_t acc0;                                    /* Accumulators */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc1, acc2, acc3;                        /* Accumulators */\n        q31_t x0, x1, x2, c0;                          /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 output values simultaneously.\n   * The variables acc0 ... acc3 hold output values that are being computed:\n   *\n   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]\n   *    acc1 =  b[numTaps-1] * x[n-numTaps]   + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]\n   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps]   + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]\n   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]\n   */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 new input samples into the state buffer. */\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set all accumulators to zero */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */\n    px = pState;\n\n    /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */\n    pb = pCoeffs;\n\n    /* Read the first two samples from the state buffer:  x[n-N], x[n-N-1] */\n    x0 = read_q15x2_ia (&px);\n\n    /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */\n    x2 = read_q15x2_ia (&px);\n\n    /* Loop over the number of taps.  Unroll by a factor of 4.\n       Repeat until we've computed numTaps-(numTaps%4) coefficients. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the first two coefficients using SIMD:  b[N] and b[N-1] coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* acc0 +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */\n      acc0 = __SMLAD(x0, c0, acc0);\n\n      /* acc2 +=  b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */\n      acc2 = __SMLAD(x2, c0, acc2);\n\n      /* pack  x[n-N-1] and x[n-N-2] */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x2, x0, 0);\n#else\n      x1 = __PKHBT(x0, x2, 0);\n#endif\n\n      /* Read state x[n-N-4], x[n-N-5] */\n      x0 = read_q15x2_ia (&px);\n\n      /* acc1 +=  b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */\n      acc1 = __SMLADX(x1, c0, acc1);\n\n      /* pack  x[n-N-3] and x[n-N-4] */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x0, x2, 0);\n#else\n      x1 = __PKHBT(x2, x0, 0);\n#endif\n\n      /* acc3 +=  b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */\n      acc3 = __SMLADX(x1, c0, acc3);\n\n      /* Read coefficients b[N-2], b[N-3] */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* acc0 +=  b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */\n      acc0 = __SMLAD(x2, c0, acc0);\n\n      /* Read state x[n-N-6], x[n-N-7] with offset */\n      x2 = read_q15x2_ia (&px);\n\n      /* acc2 +=  b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */\n      acc2 = __SMLAD(x0, c0, acc2);\n\n      /* acc1 +=  b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */\n      acc1 = __SMLADX(x1, c0, acc1);\n\n      /* pack  x[n-N-5] and x[n-N-6] */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x2, x0, 0);\n#else\n      x1 = __PKHBT(x0, x2, 0);\n#endif\n\n      /* acc3 +=  b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */\n      acc3 = __SMLADX(x1, c0, acc3);\n\n      /* Decrement tap count */\n      tapCnt--;\n    }\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps.\n       This is always be 2 taps since the filter length is even. */\n    if ((numTaps & 0x3U) != 0U)\n    {\n      /* Read last two coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Perform the multiply-accumulates */\n      acc0 = __SMLAD(x0, c0, acc0);\n      acc2 = __SMLAD(x2, c0, acc2);\n\n      /* pack state variables */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x2, x0, 0);\n#else\n      x1 = __PKHBT(x0, x2, 0);\n#endif\n\n      /* Read last state variables */\n      x0 = read_q15x2 (px);\n\n      /* Perform the multiply-accumulates */\n      acc1 = __SMLADX(x1, c0, acc1);\n\n      /* pack state variables */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x0, x2, 0);\n#else\n      x1 = __PKHBT(x2, x0, 0);\n#endif\n\n      /* Perform the multiply-accumulates */\n      acc3 = __SMLADX(x1, c0, acc3);\n    }\n\n    /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation.\n       Then store the 4 outputs in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* Advance the state pointer by 4 to process the next group of 4 samples */\n    pState = pState + 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining output samples */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of taps */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy two samples into state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set the accumulator to zero */\n    acc0 = 0;\n\n    /* Use SIMD to hold states and coefficients */\n    px = pState;\n    pb = pCoeffs;\n\n    tapCnt = numTaps >> 1U;\n\n    do\n    {\n      acc0 += (q31_t) *px++ * *pb++;\n\t  acc0 += (q31_t) *px++ * *pb++;\n\n      tapCnt--;\n    }\n    while (tapCnt > 0U);\n\n    /* The result is in 2.30 format. Convert to 1.15 with saturation.\n       Then store the output in the destination buffer. */\n    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy remaining data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_fast_q31.c\n * Description:  Processing function for the Q31 Fast FIR filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 FIR filter (fast version).\n  @param[in]     S          points to an instance of the Q31 structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   This function is optimized for speed at the expense of fixed-point precision and overflow protection.\n                   The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.\n                   These intermediate results are added to a 2.30 accumulator.\n                   Finally, the accumulator is saturated and converted to a 1.31 result.\n                   The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result.\n                   In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits.\n\n @remark\n                   Refer to \\ref arm_fir_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision.  Both the slow and the fast versions use the same instance structure.\n                   Use function \\ref arm_fir_init_q31() to initialize the filter structure.\n */\n\nIAR_ONLY_LOW_OPTIMIZATION_ENTER\nvoid arm_fir_fast_q31(\n  const arm_fir_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t *px;                                     /* Temporary pointer for state buffer */\n  const q31_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q31_t acc0;                                    /* Accumulators */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, tapCnt, blkCnt;                    /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc1, acc2, acc3;                        /* Accumulators */\n        q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 output values simultaneously.\n   * The variables acc0 ... acc3 hold output values that are being computed:\n   *\n   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]\n   *    acc1 =  b[numTaps-1] * x[n-numTaps]   + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]\n   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps]   + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]\n   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]\n   */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 new input samples into the state buffer. */\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set all accumulators to zero */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Read the first 3 samples from the state buffer:\n     *  x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */\n    x0 = *px++;\n    x1 = *px++;\n    x2 = *px++;\n\n    /* Loop unrolling. Process 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Loop over the number of taps.  Unroll by a factor of 4.\n       Repeat until we've computed numTaps-4 coefficients. */\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps] coefficient */\n      c0 = *pb;\n\n      /* Read x[n-numTaps-3] sample */\n      x3 = *px;\n\n      /* acc0 +=  b[numTaps] * x[n-numTaps] */\n      multAcc_32x32_keep32_R(acc0, x0, c0);\n\n      /* acc1 +=  b[numTaps] * x[n-numTaps-1] */\n      multAcc_32x32_keep32_R(acc1, x1, c0);\n\n      /* acc2 +=  b[numTaps] * x[n-numTaps-2] */\n      multAcc_32x32_keep32_R(acc2, x2, c0);\n\n      /* acc3 +=  b[numTaps] * x[n-numTaps-3] */\n      multAcc_32x32_keep32_R(acc3, x3, c0);\n\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *(pb + 1U);\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *(px + 1U);\n\n      /* Perform the multiply-accumulates */\n      multAcc_32x32_keep32_R(acc0, x1, c0);\n      multAcc_32x32_keep32_R(acc1, x2, c0);\n      multAcc_32x32_keep32_R(acc2, x3, c0);\n      multAcc_32x32_keep32_R(acc3, x0, c0);\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *(pb + 2U);\n\n      /* Read x[n-numTaps-5] sample */\n      x1 = *(px + 2U);\n\n      /* Perform the multiply-accumulates */\n      multAcc_32x32_keep32_R(acc0, x2, c0);\n      multAcc_32x32_keep32_R(acc1, x3, c0);\n      multAcc_32x32_keep32_R(acc2, x0, c0);\n      multAcc_32x32_keep32_R(acc3, x1, c0);\n\n      /* Read the b[numTaps-3] coefficients */\n      c0 = *(pb + 3U);\n\n      /* Read x[n-numTaps-6] sample */\n      x2 = *(px + 3U);\n\n      /* Perform the multiply-accumulates */\n      multAcc_32x32_keep32_R(acc0, x3, c0);\n      multAcc_32x32_keep32_R(acc1, x0, c0);\n      multAcc_32x32_keep32_R(acc2, x1, c0);\n      multAcc_32x32_keep32_R(acc3, x2, c0);\n\n      /* update coefficient pointer */\n      pb += 4U;\n      px += 4U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch 1 state variable */\n      x3 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      multAcc_32x32_keep32_R(acc0, x0, c0);\n      multAcc_32x32_keep32_R(acc1, x1, c0);\n      multAcc_32x32_keep32_R(acc2, x2, c0);\n      multAcc_32x32_keep32_R(acc3, x3, c0);\n\n      /* Reuse the present sample states for next sample */\n      x0 = x1;\n      x1 = x2;\n      x2 = x3;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* The results in the 4 accumulators are in 2.30 format. Convert to 1.31\n       Then store the 4 outputs in the destination buffer. */\n    *pDst++ = (q31_t) (acc0 << 1);\n    *pDst++ = (q31_t) (acc1 << 1);\n    *pDst++ = (q31_t) (acc2 << 1);\n    *pDst++ = (q31_t) (acc3 << 1);\n\n    /* Advance the state pointer by 4 to process the next group of 4 samples */\n    pState = pState + 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining output samples */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of taps */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy one sample at a time into state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set the accumulator to zero */\n    acc0 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize Coefficient pointer */\n    pb = pCoeffs;\n\n    i = numTaps;\n\n    /* Perform the multiply-accumulates */\n    do\n    {\n      multAcc_32x32_keep32_R(acc0, (*px++), (*pb++));\n      i--;\n    } while (i > 0U);\n\n    /* The result is in 2.30 format. Convert to 1.31\n       Then store the output in the destination buffer. */\n    *pDst++ = (q31_t) (acc0 << 1);\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy remaining data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n}\nIAR_ONLY_LOW_OPTIMIZATION_EXIT\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_init_f32.c\n * Description:  Floating-point FIR filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point FIR filter.\n  @param[in,out] S          points to an instance of the floating-point FIR filter structure\n  @param[in] \t numTaps    number of filter coefficients in the filter\n  @param[in]     pCoeffs    points to the filter coefficients buffer\n  @param[in]     pState     points to the state buffer\n  @param[in]     blockSize  number of samples processed per call\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_f32()</code>.\n */\n\nvoid arm_fir_init_f32(\n        arm_fir_instance_f32 * S,\n        uint16_t numTaps,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer. The size is always (blockSize + numTaps - 1) */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_init_q15.c\n * Description:  Q15 FIR filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 FIR filter.\n  @param[in,out] S          points to an instance of the Q15 FIR filter structure.\n  @param[in] \t numTaps    number of filter coefficients in the filter. Must be even and greater than or equal to 4.\n  @param[in]     pCoeffs    points to the filter coefficients buffer.\n  @param[in]     pState     points to the state buffer.\n  @param[in]     blockSize  number of samples processed per call.\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>numTaps</code> is not greater than or equal to 4 and even\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   Note that <code>numTaps</code> must be even and greater than or equal to 4.\n                   To implement an odd length filter simply increase <code>numTaps</code> by 1 and set the last coefficient to zero.\n                   For example, to implement a filter with <code>numTaps=3</code> and coefficients\n  <pre>\n      {0.3, -0.8, 0.3}\n  </pre>\n                   set <code>numTaps=4</code> and use the coefficients:\n  <pre>\n      {0.3, -0.8, 0.3, 0}.\n  </pre>\n                   Similarly, to implement a two point filter\n  <pre>\n      {0.3, -0.3}\n  </pre>\n                   set <code>numTaps=4</code> and use the coefficients:\n  <pre>\n      {0.3, -0.3, 0, 0}.\n  </pre>\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>numTaps+blockSize</code>, when running on Cortex-M4 and Cortex-M3  and is of length <code>numTaps+blockSize-1</code>, when running on Cortex-M0 where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_q15()</code>.\n */\n\narm_status arm_fir_init_q15(\n        arm_fir_instance_q15 * S,\n        uint16_t numTaps,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        uint32_t blockSize)\n{\n  arm_status status;\n\n#if defined (ARM_MATH_DSP)\n\n  /* The Number of filter coefficients in the filter must be even and at least 4 */\n  if (numTaps & 0x1U)\n  {\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n  else\n  {\n    /* Assign filter taps */\n    S->numTaps = numTaps;\n\n    /* Assign coefficient pointer */\n    S->pCoeffs = pCoeffs;\n\n    /* Clear the state buffer.  The size is always (blockSize + numTaps ) */\n    memset(pState, 0, (numTaps + (blockSize)) * sizeof(q15_t));\n\n    /* Assign state pointer */\n    S->pState = pState;\n\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n\n#else\n\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer. The size is always (blockSize + numTaps - 1) */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n\n  status = ARM_MATH_SUCCESS;\n\n  return (status);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_init_q31.c\n * Description:  Q31 FIR filter initialization function.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 FIR filter.\n  @param[in,out] S          points to an instance of the Q31 FIR filter structure\n  @param[in] \t numTaps    number of filter coefficients in the filter\n  @param[in]     pCoeffs    points to the filter coefficients buffer\n  @param[in]     pState     points to the state buffer\n  @param[in]     blockSize  number of samples processed\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_q31()</code>.\n */\n\nvoid arm_fir_init_q31(\n        arm_fir_instance_q31 * S,\n        uint16_t numTaps,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer. The size is always (blockSize + numTaps - 1) */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q31_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_init_q7.c\n * Description:  Q7 FIR filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q7 FIR filter.\n  @param[in,out] S          points to an instance of the Q7 FIR filter structure\n  @param[in] \t numTaps    number of filter coefficients in the filter\n  @param[in]     pCoeffs    points to the filter coefficients buffer\n  @param[in]     pState     points to the state buffer\n  @param[in]     blockSize  number of samples processed\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_q7()</code>.\n */\n\nvoid arm_fir_init_q7(\n        arm_fir_instance_q7 * S,\n        uint16_t numTaps,\n  const q7_t * pCoeffs,\n        q7_t * pState,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer. The size is always (blockSize + numTaps - 1) */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q7_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_interpolate_f32.c\n * Description:  Floating-point FIR interpolation sequences\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @defgroup FIR_Interpolate Finite Impulse Response (FIR) Interpolator\n\n  These functions combine an upsampler (zero stuffer) and an FIR filter.\n  They are used in multirate systems for increasing the sample rate of a signal without introducing high frequency images.\n  Conceptually, the functions are equivalent to the block diagram below:\n  \\image html FIRInterpolator.gif \"Components included in the FIR Interpolator functions\"\n  After upsampling by a factor of <code>L</code>, the signal should be filtered by a lowpass filter with a normalized\n  cutoff frequency of <code>1/L</code> in order to eliminate high frequency copies of the spectrum.\n  The user of the function is responsible for providing the filter coefficients.\n\n  The FIR interpolator functions provided in the CMSIS DSP Library combine the upsampler and FIR filter in an efficient manner.\n  The upsampler inserts <code>L-1</code> zeros between each sample.\n  Instead of multiplying by these zero values, the FIR filter is designed to skip them.\n  This leads to an efficient implementation without any wasted effort.\n  The functions operate on blocks of input and output data.\n  <code>pSrc</code> points to an array of <code>blockSize</code> input values and\n  <code>pDst</code> points to an array of <code>blockSize*L</code> output values.\n\n  The library provides separate functions for Q15, Q31, and floating-point data types.\n\n  @par           Algorithm\n                   The functions use a polyphase filter structure:\n  <pre>\n      y[n] = b[0] * x[n] + b[L]   * x[n-1] + ... + b[L*(phaseLength-1)] * x[n-phaseLength+1]\n      y[n+1] = b[1] * x[n] + b[L+1] * x[n-1] + ... + b[L*(phaseLength-1)+1] * x[n-phaseLength+1]\n      ...\n      y[n+(L-1)] = b[L-1] * x[n] + b[2*L-1] * x[n-1] + ....+ b[L*(phaseLength-1)+(L-1)] * x[n-phaseLength+1]\n  </pre>\n                   This approach is more efficient than straightforward upsample-then-filter algorithms.\n                   With this method the computation is reduced by a factor of <code>1/L</code> when compared to using a standard FIR filter.\n  @par\n                   <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.\n                   <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code> and this is checked by the\n                   initialization functions.\n                   Internally, the function divides the FIR filter's impulse response into shorter filters of length\n                   <code>phaseLength=numTaps/L</code>.\n                   Coefficients are stored in time reversed order.\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to a state array of size <code>blockSize + phaseLength - 1</code>.\n                   Samples in the state buffer are stored in the order:\n  <pre>\n     {x[n-phaseLength+1], x[n-phaseLength], x[n-phaseLength-1], x[n-phaseLength-2]....x[0], x[1], ..., x[blockSize-1]}\n  </pre>\n  @par\n                   The state variables are updated after each block of data is processed, the coefficients are untouched.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable array should be allocated separately.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n\n  @par           Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   - Checks to make sure that the length of the filter is a multiple of the interpolation factor.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   L (interpolation factor), pCoeffs, phaseLength (numTaps / L), pState. Also set all of the values in pState to zero.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   The code below statically initializes each of the 3 different data type filter instance structures\n  <pre>\n      arm_fir_interpolate_instance_f32 S = {L, phaseLength, pCoeffs, pState};\n      arm_fir_interpolate_instance_q31 S = {L, phaseLength, pCoeffs, pState};\n      arm_fir_interpolate_instance_q15 S = {L, phaseLength, pCoeffs, pState};\n  </pre>\n  @par\n                   where <code>L</code> is the interpolation factor; <code>phaseLength=numTaps/L</code> is the\n                   length of each of the shorter FIR filters used internally,\n                   <code>pCoeffs</code> is the address of the coefficient buffer;\n                   <code>pState</code> is the address of the state buffer.\n                   Be sure to set the values in the state buffer to zeros when doing static initialization.\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the fixed-point versions of the FIR interpolate filter functions.\n                   In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n                   Refer to the function specific documentation below for usage guidelines.\n */\n\n/**\n  @addtogroup FIR_Interpolate\n  @{\n */\n\n/**\n  @brief         Processing function for floating-point FIR interpolator.\n  @param[in]     S          points to an instance of the floating-point FIR interpolator structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n#if defined(ARM_MATH_NEON)\nvoid arm_fir_interpolate_f32(\n  const arm_fir_interpolate_instance_f32 * S,\n  const float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;         /* Coefficient pointer */\n  float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n  float32_t *ptr1;                               /* Temporary pointers for state buffer */\n  const float32_t *ptr2;                         /* Temporary pointers for coefficient buffer */\n  float32_t sum0;                                /* Accumulators */\n  float32_t x0, c0;                              /* Temporary variables to hold state and coefficient values */\n  uint32_t i, blkCnt, j;                         /* Loop counters */\n  uint16_t phaseLen = S->phaseLength, tapCnt;    /* Length of each polyphase filter component */\n  float32_t acc0, acc1, acc2, acc3;\n  float32_t x1, x2, x3;\n  uint32_t blkCntN4;\n  float32_t c1, c2, c3;\n\n  float32x4_t sum0v;\n  float32x4_t accV,accV0,accV1;\n  float32x4_t x0v,x1v,x2v,xa,xb;\n  uint32x4_t x0v_u,x1v_u,x2v_u,xa_u,xb_u;\n  float32x2_t tempV;\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = S->pState + (phaseLen - 1U);\n\n  /* Initialise  blkCnt */\n  blkCnt = blockSize >> 3;\n  blkCntN4 = blockSize & 7;\n\n  /* Loop unrolling */\n  while (blkCnt > 0U)\n  {\n    /* Copy new input samples into the state buffer */\n    sum0v = vld1q_f32(pSrc);\n    vst1q_f32(pStateCurnt,sum0v);\n    pSrc += 4;\n    pStateCurnt += 4;\n\n    sum0v = vld1q_f32(pSrc);\n    vst1q_f32(pStateCurnt,sum0v);\n    pSrc += 4;\n    pStateCurnt += 4;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = (S->L);\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      accV0 = vdupq_n_f32(0.0);\n      accV1 = vdupq_n_f32(0.0);\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length. Unroll by a factor of 4.\n       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */\n      tapCnt = phaseLen >> 2U;\n     \n      x0v = vld1q_f32(ptr1);\n      x1v = vld1q_f32(ptr1 + 4);\n\t\n      while (tapCnt > 0U)\n      {\n        /* Read the input samples */\n        x2v = vld1q_f32(ptr1 + 8);\n\n        /* Read the coefficients */\n        c0 = *(ptr2);\n\n        /* Perform the multiply-accumulate */\n        accV0 = vmlaq_n_f32(accV0,x0v,c0);\n        accV1 = vmlaq_n_f32(accV1,x1v,c0);\n       \n        /* Read the coefficients, inputs and perform multiply-accumulate */\n        c1 = *(ptr2 + S->L);\n\t\n        xa = vextq_f32(x0v,x1v,1);\n        xb = vextq_f32(x1v,x2v,1);\n\n        accV0 = vmlaq_n_f32(accV0,xa,c1);\n        accV1 = vmlaq_n_f32(accV1,xb,c1);\n\n        /* Read the coefficients, inputs and perform multiply-accumulate */\n        c2 = *(ptr2 + S->L * 2);\n\t\n        xa = vextq_f32(x0v,x1v,2);\n        xb = vextq_f32(x1v,x2v,2);\n        \n\taccV0 = vmlaq_n_f32(accV0,xa,c2);\n        accV1 = vmlaq_n_f32(accV1,xb,c2);\n\n        /* Read the coefficients, inputs and perform multiply-accumulate */\n        c3 = *(ptr2 + S->L * 3);\n\n        xa = vextq_f32(x0v,x1v,3);\n        xb = vextq_f32(x1v,x2v,3);\n        \n\taccV0 = vmlaq_n_f32(accV0,xa,c3);\n        accV1 = vmlaq_n_f32(accV1,xb,c3);\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += 4 * S->L;\n        ptr1 += 4;\n        x0v = x1v;\n        x1v = x2v;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */\n      tapCnt = phaseLen % 0x4U;\n\n      x2v = vld1q_f32(ptr1 + 8);\n\n      switch (tapCnt)\n      {\n        case 3:\n             c0 = *(ptr2);\n             accV0 = vmlaq_n_f32(accV0,x0v,c0);\n             accV1 = vmlaq_n_f32(accV1,x1v,c0);\n             ptr2 += S->L;\n\n             c0 = *(ptr2);\n\n             xa = vextq_f32(x0v,x1v,1);\n             xb = vextq_f32(x1v,x2v,1);\n\n             accV0 = vmlaq_n_f32(accV0,xa,c0);\n             accV1 = vmlaq_n_f32(accV1,xb,c0);\n             ptr2 += S->L;\n\n             c0 = *(ptr2);\n\n             xa = vextq_f32(x0v,x1v,2);\n             xb = vextq_f32(x1v,x2v,2);\n             \n\t     accV0 = vmlaq_n_f32(accV0,xa,c0);\n             accV1 = vmlaq_n_f32(accV1,xb,c0);\n             ptr2 += S->L;\n\n        break;\n\n        case 2:\n             c0 = *(ptr2);\n             accV0 = vmlaq_n_f32(accV0,x0v,c0);\n             accV1 = vmlaq_n_f32(accV1,x1v,c0);\n             ptr2 += S->L;\n\n             c0 = *(ptr2);\n\n             xa = vextq_f32(x0v,x1v,1);\n             xb = vextq_f32(x1v,x2v,1);\n             \n\t     accV0 = vmlaq_n_f32(accV0,xa,c0);\n             accV1 = vmlaq_n_f32(accV1,xb,c0);\n             ptr2 += S->L;\n\n        break;\n\n        case 1:\n             c0 = *(ptr2);\n             accV0 = vmlaq_n_f32(accV0,x0v,c0);\n             accV1 = vmlaq_n_f32(accV1,x1v,c0);\n             ptr2 += S->L;\n\n        break;\n\n        default:\n        break;\n        \n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst = accV0[0];\n      *(pDst + S->L) = accV0[1];\n      *(pDst + 2 * S->L) = accV0[2];\n      *(pDst + 3 * S->L) = accV0[3];\n\n      *(pDst + 4 * S->L) = accV1[0];\n      *(pDst + 5 * S->L) = accV1[1];\n      *(pDst + 6 * S->L) = accV1[2];\n      *(pDst + 7 * S->L) = accV1[3];\n\n      pDst++;\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 8;\n\n    pDst += S->L * 7;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n\n  while (blkCntN4 > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum0v = vdupq_n_f32(0.0);\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length. Unroll by a factor of 4.\n       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */\n      tapCnt = phaseLen >> 2U;\n\n      while (tapCnt > 0U)\n      {\n        /* Read the coefficient */\n        x1v[0] = *(ptr2);\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Read the input sample */\n        x0v = vld1q_f32(ptr1);\n        ptr1 += 4;\n\n        /* Read the coefficient */\n        x1v[1] = *(ptr2);\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Read the coefficient */\n        x1v[2] = *(ptr2);\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Read the coefficient */\n        x1v[3] = *(ptr2);\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        sum0v = vmlaq_f32(sum0v,x0v,x1v);\n       \n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      tempV = vpadd_f32(vget_low_f32(sum0v),vget_high_f32(sum0v));\n      sum0 = tempV[0] + tempV[1];\n\n      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */\n      tapCnt = phaseLen % 0x4U;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += *(ptr1++) * (*ptr2);\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = sum0;\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCntN4--;\n  }\n\n  /* Processing is complete.\n   ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n  tapCnt = (phaseLen - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    sum0v = vld1q_f32(pState);\n    vst1q_f32(pStateCurnt,sum0v);\n    pState += 4;\n    pStateCurnt += 4;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n  tapCnt = (phaseLen - 1U) % 0x04U;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n}\n#else\n\nvoid arm_fir_interpolate_f32(\n  const arm_fir_interpolate_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCur;                          /* Points to the current sample of the state */\n        float32_t *ptr1;                               /* Temporary pointer for state buffer */\n  const float32_t *ptr2;                               /* Temporary pointer for coefficient buffer */\n        float32_t sum0;                                /* Accumulators */\n        uint32_t i, blkCnt, tapCnt;                    /* Loop counters */\n        uint32_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */\n        uint32_t j;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        float32_t acc0, acc1, acc2, acc3;\n        float32_t x0, x1, x2, x3;\n        float32_t c0, c1, c2, c3;\n#endif\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (phaseLen - 1U);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = (S->L);\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      acc0 = 0.0f;\n      acc1 = 0.0f;\n      acc2 = 0.0f;\n      acc3 = 0.0f;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length. Unroll by a factor of 4.\n         Repeat until we've computed numTaps-(4*S->L) coefficients. */\n      tapCnt = phaseLen >> 2U;\n\n      x0 = *(ptr1++);\n      x1 = *(ptr1++);\n      x2 = *(ptr1++);\n\n      while (tapCnt > 0U)\n      {\n        /* Read the input sample */\n        x3 = *(ptr1++);\n\n        /* Read the coefficient */\n        c0 = *(ptr2);\n\n        /* Perform the multiply-accumulate */\n        acc0 += x0 * c0;\n        acc1 += x1 * c0;\n        acc2 += x2 * c0;\n        acc3 += x3 * c0;\n\n        /* Read the coefficient */\n        c1 = *(ptr2 + S->L);\n\n        /* Read the input sample */\n        x0 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += x1 * c1;\n        acc1 += x2 * c1;\n        acc2 += x3 * c1;\n        acc3 += x0 * c1;\n\n        /* Read the coefficient */\n        c2 = *(ptr2 + S->L * 2);\n\n        /* Read the input sample */\n        x1 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += x2 * c2;\n        acc1 += x3 * c2;\n        acc2 += x0 * c2;\n        acc3 += x1 * c2;\n\n        /* Read the coefficient */\n        c3 = *(ptr2 + S->L * 3);\n\n        /* Read the input sample */\n        x2 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += x3 * c3;\n        acc1 += x0 * c3;\n        acc2 += x1 * c3;\n        acc3 += x2 * c3;\n\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += 4 * S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */\n      tapCnt = phaseLen % 0x4U;\n\n      while (tapCnt > 0U)\n      {\n        /* Read the input sample */\n        x3 = *(ptr1++);\n\n        /* Read the coefficient */\n        c0 = *(ptr2);\n\n        /* Perform the multiply-accumulate */\n        acc0 += x0 * c0;\n        acc1 += x1 * c0;\n        acc2 += x2 * c0;\n        acc3 += x3 * c0;\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* update states for next sample processing */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *(pDst           ) = acc0;\n      *(pDst +     S->L) = acc1;\n      *(pDst + 2 * S->L) = acc2;\n      *(pDst + 3 * S->L) = acc3;\n\n      pDst++;\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 4;\n\n    pDst += S->L * 3;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum0 = 0.0f;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length.\n         Repeat until we've computed numTaps-(4*S->L) coefficients. */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n     /* Loop unrolling: Compute 4 outputs at a time */\n      tapCnt = phaseLen >> 2U;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += *ptr1++ * *ptr2;\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        sum0 += *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        sum0 += *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        sum0 += *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      tapCnt = phaseLen % 0x4U;\n\n#else\n\n      /* Initialize tapCnt with number of samples */\n      tapCnt = phaseLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += *ptr1++ * *ptr2;\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = sum0;\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last phaseLen - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  tapCnt = (phaseLen - 1U) >> 2U;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  tapCnt = (phaseLen - 1U) % 0x04U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = (phaseLen - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCur;                        /* Points to the current sample of the state */\n        float32_t *ptr1;                               /* Temporary pointer for state buffer */\n  const float32_t *ptr2;                               /* Temporary pointer for coefficient buffer */\n        float32_t sum0;                                /* Accumulators */\n        uint32_t i, blkCnt, tapCnt;                    /* Loop counters */\n        uint32_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (phaseLen - 1U);\n\n  /* Total number of intput samples */\n  blkCnt = blockSize;\n\n  /* Loop over the blockSize. */\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum0 = 0.0f;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (i - 1U);\n\n      /* Loop over the polyPhase length */\n      tapCnt = phaseLen;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += *ptr1++ * *ptr2;\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = sum0;\n\n      /* Decrement loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n   ** Now copy the last phaseLen - 1 samples to the start of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n  tapCnt = phaseLen - 1U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of FIR_Interpolate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_interpolate_init_f32.c\n * Description:  Floating-point FIR interpolator initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Interpolate\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point FIR interpolator.\n  @param[in,out] S         points to an instance of the floating-point FIR interpolator structure\n  @param[in]     L         upsample factor\n  @param[in]     numTaps   number of filter coefficients in the filter\n  @param[in]     pCoeffs   points to the filter coefficient buffer\n  @param[in]     pState    points to the state buffer\n  @param[in]     blockSize number of input samples to process per call\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   The length of the filter <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code>.\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>(numTaps/L)+blockSize-1</code> words\n                   where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_interpolate_f32()</code>.\n */\n\narm_status arm_fir_interpolate_init_f32(\n        arm_fir_interpolate_instance_f32 * S,\n        uint8_t L,\n        uint16_t numTaps,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        uint32_t blockSize)\n{\n  arm_status status;\n\n  /* The filter length must be a multiple of the interpolation factor */\n  if ((numTaps % L) != 0U)\n  {\n    /* Set status as ARM_MATH_LENGTH_ERROR */\n    status = ARM_MATH_LENGTH_ERROR;\n  }\n  else\n  {\n    /* Assign coefficient pointer */\n    S->pCoeffs = pCoeffs;\n\n    /* Assign Interpolation factor */\n    S->L = L;\n\n    /* Assign polyPhaseLength */\n    S->phaseLength = numTaps / L;\n\n    /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */\n    memset(pState, 0, (blockSize + ((uint32_t) S->phaseLength - 1U)) * sizeof(float32_t));\n\n    /* Assign state pointer */\n    S->pState = pState;\n\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of FIR_Interpolate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_interpolate_init_q15.c\n * Description:  Q15 FIR interpolator initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Interpolate\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 FIR interpolator.\n  @param[in,out] S         points to an instance of the Q15 FIR interpolator structure\n  @param[in]     L         upsample factor\n  @param[in]     numTaps   number of filter coefficients in the filter\n  @param[in]     pCoeffs   points to the filter coefficient buffer\n  @param[in]     pState    points to the state buffer\n  @param[in]     blockSize number of input samples to process per call\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>\n\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}\n  </pre>\n                   The length of the filter <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code>.\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>(numTaps/L)+blockSize-1</code> words\n                   where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_interpolate_q15()</code>.\n */\n\narm_status arm_fir_interpolate_init_q15(\n        arm_fir_interpolate_instance_q15 * S,\n        uint8_t L,\n        uint16_t numTaps,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        uint32_t blockSize)\n{\n  arm_status status;\n\n  /* The filter length must be a multiple of the interpolation factor */\n  if ((numTaps % L) != 0U)\n  {\n    /* Set status as ARM_MATH_LENGTH_ERROR */\n    status = ARM_MATH_LENGTH_ERROR;\n  }\n  else\n  {\n    /* Assign coefficient pointer */\n    S->pCoeffs = pCoeffs;\n\n    /* Assign Interpolation factor */\n    S->L = L;\n\n    /* Assign polyPhaseLength */\n    S->phaseLength = numTaps / L;\n\n    /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */\n    memset(pState, 0, (blockSize + ((uint32_t) S->phaseLength - 1U)) * sizeof(q15_t));\n\n    /* Assign state pointer */\n    S->pState = pState;\n\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of FIR_Interpolate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_interpolate_init_q31.c\n * Description:  Q31 FIR interpolator initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Interpolate\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 FIR interpolator.\n  @param[in,out] S         points to an instance of the Q31 FIR interpolator structure\n  @param[in]     L         upsample factor\n  @param[in]     numTaps   number of filter coefficients in the filter\n  @param[in]     pCoeffs   points to the filter coefficient buffer\n  @param[in]     pState    points to the state buffer\n  @param[in]     blockSize number of input samples to process per call\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>\n \n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n      {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}\n  </pre>\n                   The length of the filter <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code>.\n  @par\n                   <code>pState</code> points to the array of state variables.\n                   <code>pState</code> is of length <code>(numTaps/L)+blockSize-1</code> words\n                   where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_interpolate_q31()</code>.\n */\n\narm_status arm_fir_interpolate_init_q31(\n        arm_fir_interpolate_instance_q31 * S,\n        uint8_t L,\n        uint16_t numTaps,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        uint32_t blockSize)\n{\n  arm_status status;\n\n  /* The filter length must be a multiple of the interpolation factor */\n  if ((numTaps % L) != 0U)\n  {\n    /* Set status as ARM_MATH_LENGTH_ERROR */\n    status = ARM_MATH_LENGTH_ERROR;\n  }\n  else\n  {\n    /* Assign coefficient pointer */\n    S->pCoeffs = pCoeffs;\n\n    /* Assign Interpolation factor */\n    S->L = L;\n\n    /* Assign polyPhaseLength */\n    S->phaseLength = numTaps / L;\n\n    /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */\n    memset(pState, 0, (blockSize + ((uint32_t) S->phaseLength - 1U)) * sizeof(q31_t));\n\n    /* Assign state pointer */\n    S->pState = pState;\n\n    status = ARM_MATH_SUCCESS;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of FIR_Interpolate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_interpolate_q15.c\n * Description:  Q15 FIR interpolation\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Interpolate\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 FIR interpolator.\n  @param[in]     S          points to an instance of the Q15 FIR interpolator structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\n                   Lastly, the accumulator is saturated to yield a result in 1.15 format.\n */\n\nvoid arm_fir_interpolate_q15(\n  const arm_fir_interpolate_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCur;                              /* Points to the current sample of the state */\n        q15_t *ptr1;                                   /* Temporary pointer for state buffer */\n  const q15_t *ptr2;                                   /* Temporary pointer for coefficient buffer */\n        q63_t sum0;                                    /* Accumulators */\n        uint32_t i, blkCnt, tapCnt;                    /* Loop counters */\n        uint32_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */\n        uint32_t j;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc0, acc1, acc2, acc3;\n        q15_t x0, x1, x2, x3;\n        q15_t c0, c1, c2, c3;\n#endif\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (phaseLen - 1U);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = (S->L);\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length. Unroll by a factor of 4.\n         Repeat until we've computed numTaps-(4*S->L) coefficients. */\n      tapCnt = phaseLen >> 2U;\n\n      x0 = *(ptr1++);\n      x1 = *(ptr1++);\n      x2 = *(ptr1++);\n\n      while (tapCnt > 0U)\n      {\n        /* Read the input sample */\n        x3 = *(ptr1++);\n\n        /* Read the coefficient */\n        c0 = *(ptr2);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x0 * c0;\n        acc1 += (q63_t) x1 * c0;\n        acc2 += (q63_t) x2 * c0;\n        acc3 += (q63_t) x3 * c0;\n\n        /* Read the coefficient */\n        c1 = *(ptr2 + S->L);\n\n        /* Read the input sample */\n        x0 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x1 * c1;\n        acc1 += (q63_t) x2 * c1;\n        acc2 += (q63_t) x3 * c1;\n        acc3 += (q63_t) x0 * c1;\n\n        /* Read the coefficient */\n        c2 = *(ptr2 + S->L * 2);\n\n        /* Read the input sample */\n        x1 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x2 * c2;\n        acc1 += (q63_t) x3 * c2;\n        acc2 += (q63_t) x0 * c2;\n        acc3 += (q63_t) x1 * c2;\n\n        /* Read the coefficient */\n        c3 = *(ptr2 + S->L * 3);\n\n        /* Read the input sample */\n        x2 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x3 * c3;\n        acc1 += (q63_t) x0 * c3;\n        acc2 += (q63_t) x1 * c3;\n        acc3 += (q63_t) x2 * c3;\n\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += 4 * S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */\n      tapCnt = phaseLen % 0x4U;\n\n      while (tapCnt > 0U)\n      {\n        /* Read the input sample */\n        x3 = *(ptr1++);\n\n        /* Read the coefficient */\n        c0 = *(ptr2);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x0 * c0;\n        acc1 += (q63_t) x1 * c0;\n        acc2 += (q63_t) x2 * c0;\n        acc3 += (q63_t) x3 * c0;\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* update states for next sample processing */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *(pDst           ) = (q15_t) (__SSAT((acc0 >> 15), 16));\n      *(pDst +     S->L) = (q15_t) (__SSAT((acc1 >> 15), 16));\n      *(pDst + 2 * S->L) = (q15_t) (__SSAT((acc2 >> 15), 16));\n      *(pDst + 3 * S->L) = (q15_t) (__SSAT((acc3 >> 15), 16));\n\n      pDst++;\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 4;\n\n    pDst += S->L * 3;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum0 = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length.\n         Repeat until we've computed numTaps-(4*S->L) coefficients. */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n     /* Loop unrolling: Compute 4 outputs at a time */\n      tapCnt = phaseLen >> 2U;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      tapCnt = phaseLen % 0x4U;\n\n#else\n\n      /* Initialize tapCnt with number of samples */\n      tapCnt = phaseLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last phaseLen - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  tapCnt = (phaseLen - 1U) >> 2U;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  tapCnt = (phaseLen - 1U) % 0x04U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = (phaseLen - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCur;                              /* Points to the current sample of the state */\n        q15_t *ptr1;                                   /* Temporary pointer for state buffer */\n  const q15_t *ptr2;                                   /* Temporary pointer for coefficient buffer */\n        q63_t sum0;                                    /* Accumulators */\n        uint32_t i, blkCnt, tapCnt;                    /* Loop counters */\n        uint32_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (phaseLen - 1U);\n\n  /* Total number of intput samples */\n  blkCnt = blockSize;\n\n  /* Loop over the blockSize. */\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum0 = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (i - 1U);\n\n      /* Loop over the polyPhase length */\n      tapCnt = phaseLen;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += ((q63_t) *ptr1++ * *ptr2);\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* Store the result after converting to 1.15 format in the destination buffer. */\n      *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));\n\n      /* Decrement loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n   ** Now copy the last phaseLen - 1 samples to the start of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n  tapCnt = phaseLen - 1U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of FIR_Interpolate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_interpolate_q31.c\n * Description:  Q31 FIR interpolation\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Interpolate\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 FIR interpolator.\n  @param[in]     S          points to an instance of the Q31 FIR interpolator structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clip.\n                   In order to avoid overflows completely the input signal must be scaled down by <code>1/(numTaps/L)</code>.\n                   since <code>numTaps/L</code> additions occur per output sample.\n                   After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.\n */\n\nvoid arm_fir_interpolate_q31(\n  const arm_fir_interpolate_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCur;                              /* Points to the current sample of the state */\n        q31_t *ptr1;                                   /* Temporary pointer for state buffer */\n  const q31_t *ptr2;                                   /* Temporary pointer for coefficient buffer */\n        q63_t sum0;                                    /* Accumulators */\n        uint32_t i, blkCnt, tapCnt;                    /* Loop counters */\n        uint32_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */\n        uint32_t j;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc0, acc1, acc2, acc3;\n        q31_t x0, x1, x2, x3;\n        q31_t c0, c1, c2, c3;\n#endif\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (phaseLen - 1U);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n    *pStateCur++ = *pSrc++;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = (S->L);\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      acc0 = 0;\n      acc1 = 0;\n      acc2 = 0;\n      acc3 = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length. Unroll by a factor of 4.\n         Repeat until we've computed numTaps-(4*S->L) coefficients. */\n      tapCnt = phaseLen >> 2U;\n\n      x0 = *(ptr1++);\n      x1 = *(ptr1++);\n      x2 = *(ptr1++);\n\n      while (tapCnt > 0U)\n      {\n        /* Read the input sample */\n        x3 = *(ptr1++);\n\n        /* Read the coefficient */\n        c0 = *(ptr2);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x0 * c0;\n        acc1 += (q63_t) x1 * c0;\n        acc2 += (q63_t) x2 * c0;\n        acc3 += (q63_t) x3 * c0;\n\n        /* Read the coefficient */\n        c1 = *(ptr2 + S->L);\n\n        /* Read the input sample */\n        x0 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x1 * c1;\n        acc1 += (q63_t) x2 * c1;\n        acc2 += (q63_t) x3 * c1;\n        acc3 += (q63_t) x0 * c1;\n\n        /* Read the coefficient */\n        c2 = *(ptr2 + S->L * 2);\n\n        /* Read the input sample */\n        x1 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x2 * c2;\n        acc1 += (q63_t) x3 * c2;\n        acc2 += (q63_t) x0 * c2;\n        acc3 += (q63_t) x1 * c2;\n\n        /* Read the coefficient */\n        c3 = *(ptr2 + S->L * 3);\n\n        /* Read the input sample */\n        x2 = *(ptr1++);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x3 * c3;\n        acc1 += (q63_t) x0 * c3;\n        acc2 += (q63_t) x1 * c3;\n        acc3 += (q63_t) x2 * c3;\n\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += 4 * S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */\n      tapCnt = phaseLen % 0x4U;\n\n      while (tapCnt > 0U)\n      {\n        /* Read the input sample */\n        x3 = *(ptr1++);\n\n        /* Read the coefficient */\n        c0 = *(ptr2);\n\n        /* Perform the multiply-accumulate */\n        acc0 += (q63_t) x0 * c0;\n        acc1 += (q63_t) x1 * c0;\n        acc2 += (q63_t) x2 * c0;\n        acc3 += (q63_t) x3 * c0;\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* update states for next sample processing */\n        x0 = x1;\n        x1 = x2;\n        x2 = x3;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *(pDst           ) = (q31_t) (acc0 >> 31);\n      *(pDst +     S->L) = (q31_t) (acc1 >> 31);\n      *(pDst + 2 * S->L) = (q31_t) (acc2 >> 31);\n      *(pDst + 3 * S->L) = (q31_t) (acc3 >> 31);\n\n      pDst++;\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 4;\n\n    pDst += S->L * 3;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n\n    /* Address modifier index of coefficient buffer */\n    j = 1U;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum0 = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (S->L - j);\n\n      /* Loop over the polyPhase length.\n         Repeat until we've computed numTaps-(4*S->L) coefficients. */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n     /* Loop unrolling: Compute 4 outputs at a time */\n      tapCnt = phaseLen >> 2U;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n        ptr2 += S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      tapCnt = phaseLen % 0x4U;\n\n#else\n\n      /* Initialize tapCnt with number of samples */\n      tapCnt = phaseLen;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += (q63_t) *ptr1++ * *ptr2;\n\n        /* Upsampling is done by stuffing L-1 zeros between each sample.\n         * So instead of multiplying zeros with coefficients,\n         * Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = (q31_t) (sum0 >> 31);\n\n      /* Increment the address modifier index of coefficient buffer */\n      j++;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last phaseLen - 1 samples to the satrt of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  tapCnt = (phaseLen - 1U) >> 2U;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  tapCnt = (phaseLen - 1U) % 0x04U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = (phaseLen - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCur;                              /* Points to the current sample of the state */\n        q31_t *ptr1;                                   /* Temporary pointer for state buffer */\n  const q31_t *ptr2;                                   /* Temporary pointer for coefficient buffer */\n        q63_t sum0;                                    /* Accumulators */\n        uint32_t i, blkCnt, tapCnt;                    /* Loop counters */\n        uint32_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */\n\n  /* S->pState buffer contains previous frame (phaseLen - 1) samples */\n  /* pStateCur points to the location where the new input data should be written */\n  pStateCur = S->pState + (phaseLen - 1U);\n\n  /* Total number of intput samples */\n  blkCnt = blockSize;\n\n  /* Loop over the blockSize. */\n  while (blkCnt > 0U)\n  {\n    /* Copy new input sample into the state buffer */\n    *pStateCur++ = *pSrc++;\n\n    /* Loop over the Interpolation factor. */\n    i = S->L;\n\n    while (i > 0U)\n    {\n      /* Set accumulator to zero */\n      sum0 = 0;\n\n      /* Initialize state pointer */\n      ptr1 = pState;\n\n      /* Initialize coefficient pointer */\n      ptr2 = pCoeffs + (i - 1U);\n\n      /* Loop over the polyPhase length */\n      tapCnt = phaseLen;\n\n      while (tapCnt > 0U)\n      {\n        /* Perform the multiply-accumulate */\n        sum0 += ((q63_t) *ptr1++ * *ptr2);\n\n        /* Increment the coefficient pointer by interpolation factor times. */\n        ptr2 += S->L;\n\n        /* Decrement the loop counter */\n        tapCnt--;\n      }\n\n      /* The result is in the accumulator, store in the destination buffer. */\n      *pDst++ = (q31_t) (sum0 >> 31);\n\n      /* Decrement loop counter */\n      i--;\n    }\n\n    /* Advance the state pointer by 1\n     * to process the next group of interpolation factor number samples */\n    pState = pState + 1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n   ** Now copy the last phaseLen - 1 samples to the start of the state buffer.\n   ** This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCur = S->pState;\n\n  tapCnt = phaseLen - 1U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of FIR_Interpolate group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_lattice_f32.c\n * Description:  Processing function for floating-point FIR Lattice filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup FIR_Lattice Finite Impulse Response (FIR) Lattice Filters\n\n  This set of functions implements Finite Impulse Response (FIR) lattice filters\n  for Q15, Q31 and floating-point data types.  Lattice filters are used in a\n  variety of adaptive filter applications. The filter structure is feedforward and\n  the net impulse response is finite length.\n  The functions operate on blocks\n  of input and output data and each call to the function processes\n  <code>blockSize</code> samples through the filter.  <code>pSrc</code> and\n  <code>pDst</code> point to input and output arrays containing <code>blockSize</code> values.\n\n  @par           Algorithm\n                   \\image html FIRLattice.gif \"Finite Impulse Response Lattice filter\"\n                   The following difference equation is implemented:\n  @par\n  <pre>\n      f0[n] = g0[n] = x[n]\n      fm[n] = fm-1[n] + km * gm-1[n-1] for m = 1, 2, ...M\n      gm[n] = km * fm-1[n] + gm-1[n-1] for m = 1, 2, ...M\n      y[n] = fM[n]\n  </pre>\n  @par\n                   <code>pCoeffs</code> points to tha array of reflection coefficients of size <code>numStages</code>.\n                   Reflection Coefficients are stored in the following order.\n  @par\n  <pre>\n      {k1, k2, ..., kM}\n  </pre>\n                   where M is number of stages\n  @par\n                   <code>pState</code> points to a state array of size <code>numStages</code>.\n                   The state variables (g values) hold previous inputs and are stored in the following order.\n  <pre>\n    {g0[n], g1[n], g2[n] ...gM-1[n]}\n  </pre>\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n\n  @par           Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numStages, pCoeffs, pState. Also set all of the values in pState to zero.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Set the values in the state buffer to zeros and then manually initialize the instance structure as follows:\n  <pre>\n      arm_fir_lattice_instance_f32 S = {numStages, pState, pCoeffs};\n      arm_fir_lattice_instance_q31 S = {numStages, pState, pCoeffs};\n      arm_fir_lattice_instance_q15 S = {numStages, pState, pCoeffs};\n  </pre>\n  @par\n                   where <code>numStages</code> is the number of stages in the filter;\n                   <code>pState</code> is the address of the state buffer;\n                   <code>pCoeffs</code> is the address of the coefficient buffer.\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the fixed-point versions of the FIR Lattice filter functions.\n                   In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n                   Refer to the function specific documentation below for usage guidelines.\n */\n\n/**\n  @addtogroup FIR_Lattice\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point FIR lattice filter.\n  @param[in]     S          points to an instance of the floating-point FIR lattice structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n\nvoid arm_fir_lattice_f32(\n  const arm_fir_lattice_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *px;                                 /* Temporary state pointer */\n  const float32_t *pk;                                 /* Temporary coefficient pointer */\n        uint32_t numStages = S->numStages;             /* Number of stages in the filter */\n        uint32_t blkCnt, stageCnt;                     /* Loop counters */\n        float32_t fcurr0, fnext0, gnext0, gcurr0;      /* Temporary variables */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        float32_t fcurr1, fnext1, gnext1;              /* Temporary variables for second sample in loop unrolling */\n        float32_t fcurr2, fnext2, gnext2;              /* Temporary variables for third sample in loop unrolling */\n        float32_t fcurr3, fnext3, gnext3;              /* Temporary variables for fourth sample in loop unrolling */\n#endif\n\n  gcurr0 = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Read two samples from input buffer */\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n    fcurr1 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* Read g0(n-1) from state buffer */\n    gcurr0 = *px;\n\n    /* Process first sample for first tap */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = (gcurr0 * (*pk)) + fcurr0;\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = (fcurr0 * (*pk)) + gcurr0;\n\n    /* Process second sample for first tap */\n    fnext1 = (fcurr0 * (*pk)) + fcurr1;\n    gnext1 = (fcurr1 * (*pk)) + fcurr0;\n\n    /* Read next two samples from input buffer */\n    /* f0(n+2) = x(n+2) */\n    fcurr2 = *pSrc++;\n    fcurr3 = *pSrc++;\n\n    /* Process third sample for first tap */\n    fnext2 = (fcurr1 * (*pk)) + fcurr2;\n    gnext2 = (fcurr2 * (*pk)) + fcurr1;\n\n    /* Process fourth sample for first tap */\n    fnext3 = (fcurr2 * (*pk  )) + fcurr3;\n    gnext3 = (fcurr3 * (*pk++)) + fcurr2;\n\n    /* Copy only last input sample into the state buffer\n       which will be used for next samples processing */\n    *px++ = fcurr3;\n\n    /* Update of f values for next coefficient set processing */\n    fcurr0 = fnext0;\n    fcurr1 = fnext1;\n    fcurr2 = fnext2;\n    fcurr3 = fnext3;\n\n    /* Loop unrolling.  Process 4 taps at a time . */\n    stageCnt = (numStages - 1U) >> 2U;\n\n    /* Loop over the number of taps.  Unroll by a factor of 4.\n       Repeat until we've computed numStages-3 coefficients. */\n\n    /* Process 2nd, 3rd, 4th and 5th taps ... here */\n    while (stageCnt > 0U)\n    {\n      /* Read g1(n-1), g3(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Process first sample for 2nd, 6th .. tap */\n      /* Sample processing for K2, K6.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext0 = (gcurr0 * (*pk)) + fcurr0;\n\n      /* Process second sample for 2nd, 6th .. tap */\n      /* for sample 2 processing */\n      fnext1 = (gnext0 * (*pk)) + fcurr1;\n\n      /* Process third sample for 2nd, 6th .. tap */\n      fnext2 = (gnext1 * (*pk)) + fcurr2;\n\n      /* Process fourth sample for 2nd, 6th .. tap */\n      fnext3 = (gnext2 * (*pk)) + fcurr3;\n\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      /* Calculation of state values for next stage */\n      gnext3 = (fcurr3 * (*pk)) + gnext2;\n\n      gnext2 = (fcurr2 * (*pk)) + gnext1;\n\n      gnext1 = (fcurr1 * (*pk)) + gnext0;\n\n      gnext0 = (fcurr0 * (*pk++)) + gcurr0;\n\n\n      /* Read g2(n-1), g4(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g2(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Sample processing for K3, K7.... */\n      /* Process first sample for 3rd, 7th .. tap */\n      /* f3(n) = f2(n) +  K3 * g2(n-1) */\n      fcurr0 = (gcurr0 * (*pk)) + fnext0;\n\n      /* Process second sample for 3rd, 7th .. tap */\n      fcurr1 = (gnext0 * (*pk)) + fnext1;\n\n      /* Process third sample for 3rd, 7th .. tap */\n      fcurr2 = (gnext1 * (*pk)) + fnext2;\n\n      /* Process fourth sample for 3rd, 7th .. tap */\n      fcurr3 = (gnext2 * (*pk)) + fnext3;\n\n      /* Calculation of state values for next stage */\n      /* g3(n) = f2(n) * K3  +  g2(n-1) */\n      gnext3 = (fnext3 * (*pk)) + gnext2;\n\n      gnext2 = (fnext2 * (*pk)) + gnext1;\n\n      gnext1 = (fnext1 * (*pk)) + gnext0;\n\n      gnext0 = (fnext0 * (*pk++)) + gcurr0;\n\n\n      /* Read g1(n-1), g3(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g3(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Sample processing for K4, K8.... */\n      /* Process first sample for 4th, 8th .. tap */\n      /* f4(n) = f3(n) +  K4 * g3(n-1) */\n      fnext0 = (gcurr0 * (*pk)) + fcurr0;\n\n      /* Process second sample for 4th, 8th .. tap */\n      /* for sample 2 processing */\n      fnext1 = (gnext0 * (*pk)) + fcurr1;\n\n      /* Process third sample for 4th, 8th .. tap */\n      fnext2 = (gnext1 * (*pk)) + fcurr2;\n\n      /* Process fourth sample for 4th, 8th .. tap */\n      fnext3 = (gnext2 * (*pk)) + fcurr3;\n\n      /* g4(n) = f3(n) * K4  +  g3(n-1) */\n      /* Calculation of state values for next stage */\n      gnext3 = (fcurr3 * (*pk)) + gnext2;\n\n      gnext2 = (fcurr2 * (*pk)) + gnext1;\n\n      gnext1 = (fcurr1 * (*pk)) + gnext0;\n\n      gnext0 = (fcurr0 * (*pk++)) + gcurr0;\n\n\n      /* Read g2(n-1), g4(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g4(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Sample processing for K5, K9.... */\n      /* Process first sample for 5th, 9th .. tap */\n      /* f5(n) = f4(n) +  K5 * g4(n-1) */\n      fcurr0 = (gcurr0 * (*pk)) + fnext0;\n\n      /* Process second sample for 5th, 9th .. tap */\n      fcurr1 = (gnext0 * (*pk)) + fnext1;\n\n      /* Process third sample for 5th, 9th .. tap */\n      fcurr2 = (gnext1 * (*pk)) + fnext2;\n\n      /* Process fourth sample for 5th, 9th .. tap */\n      fcurr3 = (gnext2 * (*pk)) + fnext3;\n\n      /* Calculation of state values for next stage */\n      /* g5(n) = f4(n) * K5  +  g4(n-1) */\n      gnext3 = (fnext3 * (*pk)) + gnext2;\n\n      gnext2 = (fnext2 * (*pk)) + gnext1;\n\n      gnext1 = (fnext1 * (*pk)) + gnext0;\n\n      gnext0 = (fnext0 * (*pk++)) + gcurr0;\n\n      stageCnt--;\n    }\n\n    /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */\n    stageCnt = (numStages - 1U) % 0x4U;\n\n    while (stageCnt > 0U)\n    {\n      gcurr0 = *px;\n\n      /* save g value in state buffer */\n      *px++ = gnext3;\n\n      /* Process four samples for last three taps here */\n      fnext0 = (gcurr0 * (*pk)) + fcurr0;\n\n      fnext1 = (gnext0 * (*pk)) + fcurr1;\n\n      fnext2 = (gnext1 * (*pk)) + fcurr2;\n\n      fnext3 = (gnext2 * (*pk)) + fcurr3;\n\n      /* g1(n) = f0(n) * K1  +  g0(n-1) */\n      gnext3 = (fcurr3 * (*pk)) + gnext2;\n\n      gnext2 = (fcurr2 * (*pk)) + gnext1;\n\n      gnext1 = (fcurr1 * (*pk)) + gnext0;\n\n      gnext0 = (fcurr0 * (*pk++)) + gcurr0;\n\n      /* Update of f values for next coefficient set processing */\n      fcurr0 = fnext0;\n      fcurr1 = fnext1;\n      fcurr2 = fnext2;\n      fcurr3 = fnext3;\n\n      stageCnt--;\n    }\n\n    /* The results in the 4 accumulators, store in the destination buffer. */\n    /* y(n) = fN(n) */\n    *pDst++ = fcurr0;\n    *pDst++ = fcurr1;\n    *pDst++ = fcurr2;\n    *pDst++ = fcurr3;\n\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* read g2(n) from state buffer */\n    gcurr0 = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = (gcurr0 * (*pk)) + fcurr0;\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = (fcurr0 * (*pk++)) + gcurr0;\n\n    /* save g1(n) in state buffer */\n    *px++ = fcurr0;\n\n    /* f1(n) is saved in fcurr0 for next stage processing */\n    fcurr0 = fnext0;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g2(n) from state buffer */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext0;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext0 = (gcurr0 * (*pk)) + fcurr0;\n\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext0 = (fcurr0 * (*pk++)) + gcurr0;\n\n      /* f1(n) is saved in fcurr0 for next stage processing */\n      fcurr0 = fnext0;\n\n      stageCnt--;\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = fcurr0;\n\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_lattice_init_f32.c\n * Description:  Floating-point FIR Lattice filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Lattice\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point FIR lattice filter.\n  @param[in]     S          points to an instance of the floating-point FIR lattice structure\n  @param[in]     numStages  number of filter stages\n  @param[in]     pCoeffs    points to the coefficient buffer.  The array is of length numStages\n  @param[in]     pState     points to the state buffer.  The array is of length numStages\n  @return        none\n */\n\nvoid arm_fir_lattice_init_f32(\n        arm_fir_lattice_instance_f32 * S,\n        uint16_t numStages,\n  const float32_t * pCoeffs,\n        float32_t * pState)\n{\n  /* Assign filter taps */\n  S->numStages = numStages;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always numStages */\n  memset(pState, 0, (numStages) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_lattice_init_q15.c\n * Description:  Q15 FIR Lattice filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Lattice\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 FIR lattice filter.\n  @param[in]     S          points to an instance of the Q15 FIR lattice structure\n  @param[in]     numStages  number of filter stages\n  @param[in]     pCoeffs    points to the coefficient buffer.  The array is of length numStages\n  @param[in]     pState     points to the state buffer.  The array is of length numStages\n  @return        none\n */\n\nvoid arm_fir_lattice_init_q15(\n        arm_fir_lattice_instance_q15 * S,\n        uint16_t numStages,\n  const q15_t * pCoeffs,\n        q15_t * pState)\n{\n  /* Assign filter taps */\n  S->numStages = numStages;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always numStages */\n  memset(pState, 0, (numStages) * sizeof(q15_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_lattice_init_q31.c\n * Description:  Q31 FIR lattice filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Lattice\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 FIR lattice filter.\n  @param[in]     S          points to an instance of the Q31 FIR lattice structure\n  @param[in]     numStages  number of filter stages\n  @param[in]     pCoeffs    points to the coefficient buffer.  The array is of length numStages\n  @param[in]     pState     points to the state buffer.  The array is of length numStages\n  @return        none\n */\n\nvoid arm_fir_lattice_init_q31(\n        arm_fir_lattice_instance_q31 * S,\n        uint16_t numStages,\n  const q31_t * pCoeffs,\n        q31_t * pState)\n{\n  /* Assign filter taps */\n  S->numStages = numStages;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always numStages */\n  memset(pState, 0, (numStages) * sizeof(q31_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_lattice_q15.c\n * Description:  Q15 FIR lattice filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Lattice\n  @{\n */\n\n/**\n  @brief         Processing function for Q15 FIR lattice filter.\n  @param[in]     S          points to an instance of the Q15 FIR lattice structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n\nvoid arm_fir_lattice_q15(\n  const arm_fir_lattice_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *px;                                     /* Temporary state pointer */\n  const q15_t *pk;                                     /* Temporary coefficient pointer */\n        uint32_t numStages = S->numStages;             /* Number of stages in the filter */\n        uint32_t blkCnt, stageCnt;                     /* Loop counters */\n        q31_t fcurr0, fnext0, gnext0, gcurr0;          /* Temporary variables */\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  q31_t fcurr1, fnext1, gnext1;                  /* Temporary variables for second sample in loop unrolling */\n  q31_t fcurr2, fnext2, gnext2;                  /* Temporary variables for third sample in loop unrolling */\n  q31_t fcurr3, fnext3, gnext3;                  /* Temporary variables for fourth sample in loop unrolling */\n#endif\n\n  gcurr0 = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Read two samples from input buffer */\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n    fcurr1 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* Read g0(n-1) from state buffer */\n    gcurr0 = *px;\n\n    /* Process first sample for first tap */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = (q31_t) ((gcurr0 * (*pk)) >> 15U) + fcurr0;\n    fnext0 = __SSAT(fnext0, 16);\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = (q31_t) ((fcurr0 * (*pk)) >> 15U) + gcurr0;\n    gnext0 = __SSAT(gnext0, 16);\n\n    /* Process second sample for first tap */\n    fnext1 = (q31_t) ((fcurr0 * (*pk)) >> 15U) + fcurr1;\n    fnext1 = __SSAT(fnext1, 16);\n    gnext1 = (q31_t) ((fcurr1 * (*pk)) >> 15U) + fcurr0;\n    gnext1 = __SSAT(gnext1, 16);\n\n    /* Read next two samples from input buffer */\n    /* f0(n+2) = x(n+2) */\n    fcurr2 = *pSrc++;\n    fcurr3 = *pSrc++;\n\n    /* Process third sample for first tap */\n    fnext2 = (q31_t) ((fcurr1 * (*pk)) >> 15U) + fcurr2;\n    fnext2 = __SSAT(fnext2, 16);\n    gnext2 = (q31_t) ((fcurr2 * (*pk)) >> 15U) + fcurr1;\n    gnext2 = __SSAT(gnext2, 16);\n\n    /* Process fourth sample for first tap */\n    fnext3 = (q31_t) ((fcurr2 * (*pk  )) >> 15U) + fcurr3;\n    fnext3 = __SSAT(fnext3, 16);\n    gnext3 = (q31_t) ((fcurr3 * (*pk++)) >> 15U) + fcurr2;\n    gnext3 = __SSAT(gnext3, 16);\n\n    /* Copy only last input sample into the state buffer\n       which will be used for next samples processing */\n    *px++ = (q15_t) fcurr3;\n\n    /* Update of f values for next coefficient set processing */\n    fcurr0 = fnext0;\n    fcurr1 = fnext1;\n    fcurr2 = fnext2;\n    fcurr3 = fnext3;\n\n    /* Loop unrolling.  Process 4 taps at a time . */\n    stageCnt = (numStages - 1U) >> 2U;\n\n    /* Loop over the number of taps.  Unroll by a factor of 4.\n       Repeat until we've computed numStages-3 coefficients. */\n\n    /* Process 2nd, 3rd, 4th and 5th taps ... here */\n    while (stageCnt > 0U)\n    {\n      /* Read g1(n-1), g3(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = (q15_t) gnext3;\n\n      /* Process first sample for 2nd, 6th .. tap */\n      /* Sample processing for K2, K6.... */\n      /* f1(n) = f0(n) +  K1 * g0(n-1) */\n      fnext0 = (q31_t) ((gcurr0 * (*pk)) >> 15U) + fcurr0;\n      fnext0 = __SSAT(fnext0, 16);\n\n      /* Process second sample for 2nd, 6th .. tap */\n      /* for sample 2 processing */\n      fnext1 = (q31_t) ((gnext0 * (*pk)) >> 15U) + fcurr1;\n      fnext1 = __SSAT(fnext1, 16);\n\n      /* Process third sample for 2nd, 6th .. tap */\n      fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurr2;\n      fnext2 = __SSAT(fnext2, 16);\n\n      /* Process fourth sample for 2nd, 6th .. tap */\n      fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurr3;\n      fnext3 = __SSAT(fnext3, 16);\n\n      /* g1(n) = f0(n) * K1  +  g0(n-1) */\n      /* Calculation of state values for next stage */\n      gnext3 = (q31_t) ((fcurr3 * (*pk)) >> 15U) + gnext2;\n      gnext3 = __SSAT(gnext3, 16);\n\n      gnext2 = (q31_t) ((fcurr2 * (*pk)) >> 15U) + gnext1;\n      gnext2 = __SSAT(gnext2, 16);\n\n      gnext1 = (q31_t) ((fcurr1 * (*pk)) >> 15U) + gnext0;\n      gnext1 = __SSAT(gnext1, 16);\n\n      gnext0 = (q31_t) ((fcurr0 * (*pk++)) >> 15U) + gcurr0;\n      gnext0 = __SSAT(gnext0, 16);\n\n\n      /* Read g2(n-1), g4(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = (q15_t) gnext3;\n\n      /* Sample processing for K3, K7.... */\n      /* Process first sample for 3rd, 7th .. tap */\n      /* f3(n) = f2(n) +  K3 * g2(n-1) */\n      fcurr0 = (q31_t) ((gcurr0 * (*pk)) >> 15U) + fnext0;\n      fcurr0 = __SSAT(fcurr0, 16);\n\n      /* Process second sample for 3rd, 7th .. tap */\n      fcurr1 = (q31_t) ((gnext0 * (*pk)) >> 15U) + fnext1;\n      fcurr1 = __SSAT(fcurr1, 16);\n\n      /* Process third sample for 3rd, 7th .. tap */\n      fcurr2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fnext2;\n      fcurr2 = __SSAT(fcurr2, 16);\n\n      /* Process fourth sample for 3rd, 7th .. tap */\n      fcurr3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fnext3;\n      fcurr3 = __SSAT(fcurr3, 16);\n\n      /* Calculation of state values for next stage */\n      /* g3(n) = f2(n) * K3  +  g2(n-1) */\n      gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15U) + gnext2;\n      gnext3 = __SSAT(gnext3, 16);\n\n      gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15U) + gnext1;\n      gnext2 = __SSAT(gnext2, 16);\n\n      gnext1 = (q31_t) ((fnext1 * (*pk)) >> 15U) + gnext0;\n      gnext1 = __SSAT(gnext1, 16);\n\n      gnext0 = (q31_t) ((fnext0 * (*pk++)) >> 15U) + gcurr0;\n      gnext0 = __SSAT(gnext0, 16);\n\n      /* Read g1(n-1), g3(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = (q15_t) gnext3;\n\n      /* Sample processing for K4, K8.... */\n      /* Process first sample for 4th, 8th .. tap */\n      /* f4(n) = f3(n) +  K4 * g3(n-1) */\n      fnext0 = (q31_t) ((gcurr0 * (*pk)) >> 15U) + fcurr0;\n      fnext0 = __SSAT(fnext0, 16);\n\n      /* Process second sample for 4th, 8th .. tap */\n      /* for sample 2 processing */\n      fnext1 = (q31_t) ((gnext0 * (*pk)) >> 15U) + fcurr1;\n      fnext1 = __SSAT(fnext1, 16);\n\n      /* Process third sample for 4th, 8th .. tap */\n      fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurr2;\n      fnext2 = __SSAT(fnext2, 16);\n\n      /* Process fourth sample for 4th, 8th .. tap */\n      fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurr3;\n      fnext3 = __SSAT(fnext3, 16);\n\n      /* g4(n) = f3(n) * K4  +  g3(n-1) */\n      /* Calculation of state values for next stage */\n      gnext3 = (q31_t) ((fcurr3 * (*pk)) >> 15U) + gnext2;\n      gnext3 = __SSAT(gnext3, 16);\n\n      gnext2 = (q31_t) ((fcurr2 * (*pk)) >> 15U) + gnext1;\n      gnext2 = __SSAT(gnext2, 16);\n\n      gnext1 = (q31_t) ((fcurr1 * (*pk)) >> 15U) + gnext0;\n      gnext1 = __SSAT(gnext1, 16);\n\n      gnext0 = (q31_t) ((fcurr0 * (*pk++)) >> 15U) + gcurr0;\n      gnext0 = __SSAT(gnext0, 16);\n\n      /* Read g2(n-1), g4(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g4(n) in state buffer */\n      *px++ = (q15_t) gnext3;\n\n      /* Sample processing for K5, K9.... */\n      /* Process first sample for 5th, 9th .. tap */\n      /* f5(n) = f4(n) +  K5 * g4(n-1) */\n      fcurr0 = (q31_t) ((gcurr0 * (*pk)) >> 15U) + fnext0;\n      fcurr0 = __SSAT(fcurr0, 16);\n\n      /* Process second sample for 5th, 9th .. tap */\n      fcurr1 = (q31_t) ((gnext0 * (*pk)) >> 15U) + fnext1;\n      fcurr1 = __SSAT(fcurr1, 16);\n\n      /* Process third sample for 5th, 9th .. tap */\n      fcurr2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fnext2;\n      fcurr2 = __SSAT(fcurr2, 16);\n\n      /* Process fourth sample for 5th, 9th .. tap */\n      fcurr3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fnext3;\n      fcurr3 = __SSAT(fcurr3, 16);\n\n      /* Calculation of state values for next stage */\n      /* g5(n) = f4(n) * K5  +  g4(n-1) */\n      gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15U) + gnext2;\n      gnext3 = __SSAT(gnext3, 16);\n\n      gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15U) + gnext1;\n      gnext2 = __SSAT(gnext2, 16);\n\n      gnext1 = (q31_t) ((fnext1 * (*pk)) >> 15U) + gnext0;\n      gnext1 = __SSAT(gnext1, 16);\n\n      gnext0 = (q31_t) ((fnext0 * (*pk++)) >> 15U) + gcurr0;\n      gnext0 = __SSAT(gnext0, 16);\n\n      stageCnt--;\n    }\n\n    /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */\n    stageCnt = (numStages - 1U) % 0x4U;\n\n    while (stageCnt > 0U)\n    {\n      gcurr0 = *px;\n\n      /* save g value in state buffer */\n      *px++ = (q15_t) gnext3;\n\n      /* Process four samples for last three taps here */\n      fnext0 = (q31_t) ((gcurr0 * (*pk)) >> 15U) + fcurr0;\n      fnext0 = __SSAT(fnext0, 16);\n\n      fnext1 = (q31_t) ((gnext0 * (*pk)) >> 15U) + fcurr1;\n      fnext1 = __SSAT(fnext1, 16);\n\n      fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurr2;\n      fnext2 = __SSAT(fnext2, 16);\n\n      fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurr3;\n      fnext3 = __SSAT(fnext3, 16);\n\n      /* g1(n) = f0(n) * K1  +  g0(n-1) */\n      gnext3 = (q31_t) ((fcurr3 * (*pk)) >> 15U) + gnext2;\n      gnext3 = __SSAT(gnext3, 16);\n\n      gnext2 = (q31_t) ((fcurr2 * (*pk)) >> 15U) + gnext1;\n      gnext2 = __SSAT(gnext2, 16);\n\n      gnext1 = (q31_t) ((fcurr1 * (*pk)) >> 15U) + gnext0;\n      gnext1 = __SSAT(gnext1, 16);\n\n      gnext0 = (q31_t) ((fcurr0 * (*pk++)) >> 15U) + gcurr0;\n      gnext0 = __SSAT(gnext0, 16);\n\n      /* Update of f values for next coefficient set processing */\n      fcurr0 = fnext0;\n      fcurr1 = fnext1;\n      fcurr2 = fnext2;\n      fcurr3 = fnext3;\n\n      stageCnt--;\n    }\n\n    /* The results in the 4 accumulators, store in the destination buffer. */\n    /* y(n) = fN(n) */\n\n#ifndef  ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pDst, __PKHBT(fcurr0, fcurr1, 16));\n    write_q15x2_ia (&pDst, __PKHBT(fcurr2, fcurr3, 16));\n#else\n    write_q15x2_ia (&pDst, __PKHBT(fcurr1, fcurr0, 16));\n    write_q15x2_ia (&pDst, __PKHBT(fcurr3, fcurr2, 16));\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* read g2(n) from state buffer */\n    gcurr0 = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = (((q31_t) gcurr0 * (*pk)) >> 15U) + fcurr0;\n    fnext0 = __SSAT(fnext0, 16);\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = (((q31_t) fcurr0 * (*pk++)) >> 15U) + gcurr0;\n    gnext0 = __SSAT(gnext0, 16);\n\n    /* save g1(n) in state buffer */\n    *px++ = (q15_t) fcurr0;\n\n    /* f1(n) is saved in fcurr0 for next stage processing */\n    fcurr0 = fnext0;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g2(n) from state buffer */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = (q15_t) gnext0;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext0 = (((q31_t) gcurr0 * (*pk)) >> 15U) + fcurr0;\n      fnext0 = __SSAT(fnext0, 16);\n\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext0 = (((q31_t) fcurr0 * (*pk++)) >> 15U) + gcurr0;\n      gnext0 = __SSAT(gnext0, 16);\n\n      /* f1(n) is saved in fcurr0 for next stage processing */\n      fcurr0 = fnext0;\n\n      stageCnt--;\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = __SSAT(fcurr0, 16);\n\n    blkCnt--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* read g0(n-1) from state buffer */\n    gcurr0 = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = ((gcurr0 * (*pk)) >> 15U) + fcurr0;\n    fnext0 = __SSAT(fnext, 16);\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = ((fcurr0 * (*pk++)) >> 15U) + gcurr0;\n    gnext0 = __SSAT(gnext0, 16);\n\n    /* save f0(n) in state buffer */\n    *px++ = (q15_t) fcurr0;\n\n    /* f1(n) is saved in fcurr for next stage processing */\n    fcurr0 = fnext0;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g1(n-1) from state buffer */\n      gcurr0 = *px;\n\n      /* save g0(n-1) in state buffer */\n      *px++ = (q15_t) gnext0;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext0 = ((gcurr0 * (*pk)) >> 15U) + fcurr0;\n      fnext0 = __SSAT(fnext0, 16);\n\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext0 = ((fcurr0 * (*pk++)) >> 15U) + gcurr0;\n      gnext0 = __SSAT(gnext0, 16);\n\n      /* f1(n) is saved in fcurr0 for next stage processing */\n      fcurr0 = fnext0;\n\n      stageCnt--;\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = __SSAT(fcurr0, 16);\n\n    blkCnt--;\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of FIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_lattice_q31.c\n * Description:  Q31 FIR lattice filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Lattice\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 FIR lattice filter.\n  @param[in]     S          points to an instance of the Q31 FIR lattice structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   In order to avoid overflows the input signal must be scaled down by 2*log2(numStages) bits.\n */\n\nvoid arm_fir_lattice_q31(\n  const arm_fir_lattice_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *px;                                     /* Temporary state pointer */\n  const q31_t *pk;                                     /* Temporary coefficient pointer */\n        uint32_t numStages = S->numStages;             /* Number of stages in the filter */\n        uint32_t blkCnt, stageCnt;                     /* Loop counters */\n        q31_t fcurr0, fnext0, gnext0, gcurr0;          /* Temporary variables */\n\n#if (1)\n//#if !defined(ARM_MATH_CM0_FAMILY)\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t fcurr1, fnext1, gnext1;                  /* Temporary variables for second sample in loop unrolling */\n        q31_t fcurr2, fnext2, gnext2;                  /* Temporary variables for third sample in loop unrolling */\n        q31_t fcurr3, fnext3, gnext3;                  /* Temporary variables for fourth sample in loop unrolling */\n#endif\n\n  gcurr0 = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Read two samples from input buffer */\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n    fcurr1 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* Read g0(n-1) from state buffer */\n    gcurr0 = *px;\n\n    /* Process first sample for first tap */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n    fnext0 = (fnext0 << 1U) + fcurr0;\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk)) >> 32U);\n    gnext0 = (gnext0 << 1U) + gcurr0;\n\n    /* Process second sample for first tap */\n    fnext1 = (q31_t) (((q63_t) fcurr0 * (*pk)) >> 32U);\n    fnext1 = (fnext1 << 1U) + fcurr1;\n    gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk)) >> 32U);\n    gnext1 = (gnext1 << 1U) + fcurr0;\n\n    /* Read next two samples from input buffer */\n    /* f0(n+2) = x(n+2) */\n    fcurr2 = *pSrc++;\n    fcurr3 = *pSrc++;\n\n    /* Process third sample for first tap */\n    fnext2 = (q31_t) (((q63_t) fcurr1 * (*pk)) >> 32U);\n    fnext2 = (fnext2 << 1U) + fcurr2;\n    gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 32U);\n    gnext2 = (gnext2 << 1U) + fcurr1;\n\n    /* Process fourth sample for first tap */\n    fnext3 = (q31_t) (((q63_t) fcurr2 * (*pk  )) >> 32U);\n    fnext3 = (fnext3 << 1U) + fcurr3;\n    gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk++)) >> 32U);\n    gnext3 = (gnext3 << 1U) + fcurr2;\n\n    /* Copy only last input sample into the state buffer\n       which will be used for next samples processing */\n    *px++ = fcurr3;\n\n    /* Update of f values for next coefficient set processing */\n    fcurr0 = fnext0;\n    fcurr1 = fnext1;\n    fcurr2 = fnext2;\n    fcurr3 = fnext3;\n\n    /* Loop unrolling.  Process 4 taps at a time . */\n    stageCnt = (numStages - 1U) >> 2U;\n\n    /* Loop over the number of taps.  Unroll by a factor of 4.\n       Repeat until we've computed numStages-3 coefficients. */\n\n    /* Process 2nd, 3rd, 4th and 5th taps ... here */\n    while (stageCnt > 0U)\n    {\n      /* Read g1(n-1), g3(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Process first sample for 2nd, 6th .. tap */\n      /* Sample processing for K2, K6.... */\n      /* f1(n) = f0(n) +  K1 * g0(n-1) */\n      fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n      fnext0 = (fnext0 << 1U) + fcurr0;\n\n      /* Process second sample for 2nd, 6th .. tap */\n      /* for sample 2 processing */\n      fnext1 = (q31_t) (((q63_t) gnext0 * (*pk)) >> 32U);\n      fnext1 = (fnext1 << 1U) + fcurr1;\n\n      /* Process third sample for 2nd, 6th .. tap */\n      fnext2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 32U);\n      fnext2 = (fnext2 << 1U) + fcurr2;\n\n      /* Process fourth sample for 2nd, 6th .. tap */\n      fnext3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 32U);\n      fnext3 = (fnext3 << 1U) + fcurr3;\n\n      /* g1(n) = f0(n) * K1  +  g0(n-1) */\n      /* Calculation of state values for next stage */\n      gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 32U);\n      gnext3 = (gnext3 << 1U) + gnext2;\n\n      gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 32U);\n      gnext2 = (gnext2 << 1U) + gnext1;\n\n      gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk)) >> 32U);\n      gnext1 = (gnext1 << 1U) + gnext0;\n\n      gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk++)) >> 32U);\n      gnext0 = (gnext0 << 1U) + gcurr0;\n\n\n      /* Read g2(n-1), g4(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Sample processing for K3, K7.... */\n      /* Process first sample for 3rd, 7th .. tap */\n      /* f3(n) = f2(n) +  K3 * g2(n-1) */\n      fcurr0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n      fcurr0 = (fcurr0 << 1U) + fnext0;\n\n      /* Process second sample for 3rd, 7th .. tap */\n      fcurr1 = (q31_t) (((q63_t) gnext0 * (*pk)) >> 32U);\n      fcurr1 = (fcurr1 << 1U) + fnext1;\n\n      /* Process third sample for 3rd, 7th .. tap */\n      fcurr2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 32U);\n      fcurr2 = (fcurr2 << 1U) + fnext2;\n\n      /* Process fourth sample for 3rd, 7th .. tap */\n      fcurr3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 32U);\n      fcurr3 = (fcurr3 << 1U) + fnext3;\n\n      /* Calculation of state values for next stage */\n      /* g3(n) = f2(n) * K3  +  g2(n-1) */\n      gnext3 = (q31_t) (((q63_t) fnext3 * (*pk)) >> 32U);\n      gnext3 = (gnext3 << 1U) + gnext2;\n\n      gnext2 = (q31_t) (((q63_t) fnext2 * (*pk)) >> 32U);\n      gnext2 = (gnext2 << 1U) + gnext1;\n\n      gnext1 = (q31_t) (((q63_t) fnext1 * (*pk)) >> 32U);\n      gnext1 = (gnext1 << 1U) + gnext0;\n\n      gnext0 = (q31_t) (((q63_t) fnext0 * (*pk++)) >> 32U);\n      gnext0 = (gnext0 << 1U) + gcurr0;\n\n      /* Read g1(n-1), g3(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Sample processing for K4, K8.... */\n      /* Process first sample for 4th, 8th .. tap */\n      /* f4(n) = f3(n) +  K4 * g3(n-1) */\n      fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n      fnext0 = (fnext0 << 1U) + fcurr0;\n\n      /* Process second sample for 4th, 8th .. tap */\n      /* for sample 2 processing */\n      fnext1 = (q31_t) (((q63_t) gnext0 * (*pk)) >> 32U);\n      fnext1 = (fnext1 << 1U) + fcurr1;\n\n      /* Process third sample for 4th, 8th .. tap */\n      fnext2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 32U);\n      fnext2 = (fnext2 << 1U) + fcurr2;\n\n      /* Process fourth sample for 4th, 8th .. tap */\n      fnext3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 32U);\n      fnext3 = (fnext3 << 1U) + fcurr3;\n\n      /* g4(n) = f3(n) * K4  +  g3(n-1) */\n      /* Calculation of state values for next stage */\n      gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 32U);\n      gnext3 = (gnext3 << 1U) + gnext2;\n\n      gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 32U);\n      gnext2 = (gnext2 << 1U) + gnext1;\n\n      gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk)) >> 32U);\n      gnext1 = (gnext1 << 1U) + gnext0;\n\n      gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk++)) >> 32U);\n      gnext0 = (gnext0 << 1U) + gcurr0;\n\n      /* Read g2(n-1), g4(n-1) .... from state */\n      gcurr0 = *px;\n\n      /* save g4(n) in state buffer */\n      *px++ = gnext3;\n\n      /* Sample processing for K5, K9.... */\n      /* Process first sample for 5th, 9th .. tap */\n      /* f5(n) = f4(n) +  K5 * g4(n-1) */\n      fcurr0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n      fcurr0 = (fcurr0 << 1U) + fnext0;\n\n      /* Process second sample for 5th, 9th .. tap */\n      fcurr1 = (q31_t) (((q63_t) gnext0 * (*pk)) >> 32U);\n      fcurr1 = (fcurr1 << 1U) + fnext1;\n\n      /* Process third sample for 5th, 9th .. tap */\n      fcurr2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 32U);\n      fcurr2 = (fcurr2 << 1U) + fnext2;\n\n      /* Process fourth sample for 5th, 9th .. tap */\n      fcurr3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 32U);\n      fcurr3 = (fcurr3 << 1U) + fnext3;\n\n      /* Calculation of state values for next stage */\n      /* g5(n) = f4(n) * K5  +  g4(n-1) */\n      gnext3 = (q31_t) (((q63_t) fnext3 * (*pk)) >> 32U);\n      gnext3 = (gnext3 << 1U) + gnext2;\n\n      gnext2 = (q31_t) (((q63_t) fnext2 * (*pk)) >> 32U);\n      gnext2 = (gnext2 << 1U) + gnext1;\n\n      gnext1 = (q31_t) (((q63_t) fnext1 * (*pk)) >> 32U);\n      gnext1 = (gnext1 << 1U) + gnext0;\n\n      gnext0 = (q31_t) (((q63_t) fnext0 * (*pk++)) >> 32U);\n      gnext0 = (gnext0 << 1U) + gcurr0;\n\n      stageCnt--;\n    }\n\n    /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */\n    stageCnt = (numStages - 1U) % 0x4U;\n\n    while (stageCnt > 0U)\n    {\n      gcurr0 = *px;\n\n      /* save g value in state buffer */\n      *px++ = gnext3;\n\n      /* Process four samples for last three taps here */\n      fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n      fnext0 = (fnext0 << 1U) + fcurr0;\n\n      fnext1 = (q31_t) (((q63_t) gnext0 * (*pk)) >> 32U);\n      fnext1 = (fnext1 << 1U) + fcurr1;\n\n      fnext2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 32U);\n      fnext2 = (fnext2 << 1U) + fcurr2;\n\n      fnext3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 32U);\n      fnext3 = (fnext3 << 1U) + fcurr3;\n\n      /* g1(n) = f0(n) * K1  +  g0(n-1) */\n      gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 32U);\n      gnext3 = (gnext3 << 1U) + gnext2;\n\n      gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 32U);\n      gnext2 = (gnext2 << 1U) + gnext1;\n\n      gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk)) >> 32U);\n      gnext1 = (gnext1 << 1U) + gnext0;\n\n      gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk++)) >> 32U);\n      gnext0 = (gnext0 << 1U) + gcurr0;\n\n      /* Update of f values for next coefficient set processing */\n      fcurr0 = fnext0;\n      fcurr1 = fnext1;\n      fcurr2 = fnext2;\n      fcurr3 = fnext3;\n\n      stageCnt--;\n    }\n\n    /* The results in the 4 accumulators, store in the destination buffer. */\n    /* y(n) = fN(n) */\n    *pDst++ = fcurr0;\n    *pDst++ = fcurr1;\n    *pDst++ = fcurr2;\n    *pDst++ = fcurr3;\n\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* read g2(n) from state buffer */\n    gcurr0 = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n    fnext0 = (fnext0 << 1U) + fcurr0;\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk++)) >> 32U);\n    gnext0 = (gnext0 << 1U) + gcurr0;\n\n    /* save g1(n) in state buffer */\n    *px++ = fcurr0;\n\n    /* f1(n) is saved in fcurr0 for next stage processing */\n    fcurr0 = fnext0;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g2(n) from state buffer */\n      gcurr0 = *px;\n\n      /* save g1(n) in state buffer */\n      *px++ = gnext0;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n      fnext0 = (fnext0 << 1U) + fcurr0;\n\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk++)) >> 32U);\n      gnext0 = (gnext0 << 1U) + gcurr0;\n\n      /* f1(n) is saved in fcurr0 for next stage processing */\n      fcurr0 = fnext0;\n\n      stageCnt--;\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = fcurr0;\n\n    blkCnt--;\n  }\n\n#else\n/* alternate version for CM0_FAMILY */\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* f0(n) = x(n) */\n    fcurr0 = *pSrc++;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pk = pCoeffs;\n\n    /* read g0(n-1) from state buffer */\n    gcurr0 = *px;\n\n    /* for sample 1 processing */\n    /* f1(n) = f0(n) +  K1 * g0(n-1) */\n    fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n    fnext0 = (fnext << 1U) + fcurr0;\n\n    /* g1(n) = f0(n) * K1  +  g0(n-1) */\n    gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk++)) >> 32U);\n    gnext0 = (gnext0 << 1U) + gcurr0;\n\n    /* save f0(n) in state buffer */\n    *px++ = fcurr0;\n\n    /* f1(n) is saved in fcurr for next stage processing */\n    fcurr0 = fnext0;\n\n    stageCnt = (numStages - 1U);\n\n    /* stage loop */\n    while (stageCnt > 0U)\n    {\n      /* read g1(n-1) from state buffer */\n      gcurr0 = *px;\n\n      /* save g0(n-1) in state buffer */\n      *px++ = gnext0;\n\n      /* Sample processing for K2, K3.... */\n      /* f2(n) = f1(n) +  K2 * g1(n-1) */\n      fnext0 = (q31_t) (((q63_t) gcurr0 * (*pk)) >> 32U);\n      fnext0 = (fnext0 << 1U) + fcurr0;\n\n      /* g2(n) = f1(n) * K2  +  g1(n-1) */\n      gnext0 = (q31_t) (((q63_t) fcurr0 * (*pk++)) >> 32U);\n      gnext0 = (gnext0 << 1U) + gcurr0;\n\n      /* f1(n) is saved in fcurr0 for next stage processing */\n      fcurr0 = fnext0;\n\n      stageCnt--;\n    }\n\n    /* y(n) = fN(n) */\n    *pDst++ = fcurr0;\n\n    blkCnt--;\n  }\n\n#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */\n\n}\n\n/**\n  @} end of FIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_q15.c\n * Description:  Q15 FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 FIR filter.\n  @param[in]     S          points to an instance of the Q15 FIR filter structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\n                   Lastly, the accumulator is saturated to yield a result in 1.15 format.\n\n  @remark\n                   Refer to \\ref arm_fir_fast_q15() for a faster but less precise implementation of this function.\n */\n\nvoid arm_fir_q15(\n  const arm_fir_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q15_t *px;                                     /* Temporary pointer for state buffer */\n  const q15_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q63_t acc0;                                    /* Accumulators */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc1, acc2, acc3;                        /* Accumulators */\n        q31_t x0, x1, x2, c0;                          /* Temporary variables to hold state and coefficient values */\n#endif\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 output values simultaneously.\n   * The variables acc0 ... acc3 hold output values that are being computed:\n   *\n   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]\n   *    acc1 =  b[numTaps-1] * x[n-numTaps]   + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]\n   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps]   + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]\n   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]\n   */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 new input samples into the state buffer. */\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set all accumulators to zero */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */\n    px = pState;\n\n    /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */\n    pb = pCoeffs;\n\n    /* Read the first two samples from the state buffer:  x[n-N], x[n-N-1] */\n    x0 = read_q15x2_ia (&px);\n\n    /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */\n    x2 = read_q15x2_ia (&px);\n\n    /* Loop over the number of taps.  Unroll by a factor of 4.\n       Repeat until we've computed numTaps-(numTaps%4) coefficients. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the first two coefficients using SIMD:  b[N] and b[N-1] coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* acc0 +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */\n      acc0 = __SMLALD(x0, c0, acc0);\n\n      /* acc2 +=  b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */\n      acc2 = __SMLALD(x2, c0, acc2);\n\n      /* pack  x[n-N-1] and x[n-N-2] */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x2, x0, 0);\n#else\n      x1 = __PKHBT(x0, x2, 0);\n#endif\n\n      /* Read state x[n-N-4], x[n-N-5] */\n      x0 = read_q15x2_ia (&px);\n\n      /* acc1 +=  b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */\n      acc1 = __SMLALDX(x1, c0, acc1);\n\n      /* pack  x[n-N-3] and x[n-N-4] */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x0, x2, 0);\n#else\n      x1 = __PKHBT(x2, x0, 0);\n#endif\n\n      /* acc3 +=  b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */\n      acc3 = __SMLALDX(x1, c0, acc3);\n\n      /* Read coefficients b[N-2], b[N-3] */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* acc0 +=  b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */\n      acc0 = __SMLALD(x2, c0, acc0);\n\n      /* Read state x[n-N-6], x[n-N-7] with offset */\n      x2 = read_q15x2_ia (&px);\n\n      /* acc2 +=  b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */\n      acc2 = __SMLALD(x0, c0, acc2);\n\n      /* acc1 +=  b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */\n      acc1 = __SMLALDX(x1, c0, acc1);\n\n      /* pack  x[n-N-5] and x[n-N-6] */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x2, x0, 0);\n#else\n      x1 = __PKHBT(x0, x2, 0);\n#endif\n\n      /* acc3 +=  b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */\n      acc3 = __SMLALDX(x1, c0, acc3);\n\n      /* Decrement tap count */\n      tapCnt--;\n    }\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps.\n       This is always be 2 taps since the filter length is even. */\n    if ((numTaps & 0x3U) != 0U)\n    {\n      /* Read last two coefficients */\n      c0 = read_q15x2_ia ((q15_t **) &pb);\n\n      /* Perform the multiply-accumulates */\n      acc0 = __SMLALD(x0, c0, acc0);\n      acc2 = __SMLALD(x2, c0, acc2);\n\n      /* pack state variables */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x2, x0, 0);\n#else\n      x1 = __PKHBT(x0, x2, 0);\n#endif\n\n      /* Read last state variables */\n      x0 = read_q15x2 (px);\n\n      /* Perform the multiply-accumulates */\n      acc1 = __SMLALDX(x1, c0, acc1);\n\n      /* pack state variables */\n#ifndef ARM_MATH_BIG_ENDIAN\n      x1 = __PKHBT(x0, x2, 0);\n#else\n      x1 = __PKHBT(x2, x0, 0);\n#endif\n\n      /* Perform the multiply-accumulates */\n      acc3 = __SMLALDX(x1, c0, acc3);\n    }\n\n    /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation.\n       Then store the 4 outputs in the destination buffer. */\n#ifndef ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16));\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16));\n#else\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16));\n    write_q15x2_ia (&pDst, __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* Advance the state pointer by 4 to process the next group of 4 samples */\n    pState = pState + 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining output samples */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of taps */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy two samples into state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set the accumulator to zero */\n    acc0 = 0;\n\n    /* Use SIMD to hold states and coefficients */\n    px = pState;\n    pb = pCoeffs;\n\n    tapCnt = numTaps >> 1U;\n\n    do\n    {\n      acc0 += (q31_t) *px++ * *pb++;\n\t  acc0 += (q31_t) *px++ * *pb++;\n\n      tapCnt--;\n    }\n    while (tapCnt > 0U);\n\n    /* The result is in 2.30 format. Convert to 1.15 with saturation.\n       Then store the output in the destination buffer. */\n    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy remaining data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_q31.c\n * Description:  Q31 FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Processing function for Q31 FIR filter.\n  @param[in]     S          points to an instance of the Q31 FIR filter structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clip.\n                   In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits.\n                   After all multiply-accumulates are performed, the 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.\n\n @remark\n                   Refer to \\ref arm_fir_fast_q31() for a faster but less precise implementation of this filter.\n */\n\nvoid arm_fir_q31(\n  const arm_fir_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t *px;                                     /* Temporary pointer for state buffer */\n  const q31_t *pb;                                     /* Temporary pointer for coefficient buffer */\n        q63_t acc0;                                    /* Accumulator */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, tapCnt, blkCnt;                    /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q63_t acc1, acc2;                              /* Accumulators */\n        q31_t x0, x1, x2;                              /* Temporary variables to hold state values */\n        q31_t c0;                                      /* Temporary variable to hold coefficient value */\n#endif\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 output values simultaneously.\n   * The variables acc0 ... acc3 hold output values that are being computed:\n   *\n   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]\n   *    acc1 =  b[numTaps-1] * x[n-numTaps]   + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]\n   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps]   + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]\n   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]\n   */\n\n  blkCnt = blockSize / 3;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 3 new input samples into the state buffer. */\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set all accumulators to zero */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Read the first 2 samples from the state buffer: x[n-numTaps], x[n-numTaps-1] */\n    x0 = *px++;\n    x1 = *px++;\n\n    /* Loop unrolling: process 3 taps at a time. */\n    tapCnt = numTaps / 3;\n\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps] coefficient */\n      c0 = *pb;\n\n      /* Read x[n-numTaps-2] sample */\n      x2 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q63_t) x0 * c0);\n      acc1 += ((q63_t) x1 * c0);\n      acc2 += ((q63_t) x2 * c0);\n\n      /* Read the coefficient and state */\n      c0 = *(pb + 1U);\n      x0 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q63_t) x1 * c0);\n      acc1 += ((q63_t) x2 * c0);\n      acc2 += ((q63_t) x0 * c0);\n\n      /* Read the coefficient and state */\n      c0 = *(pb + 2U);\n      x1 = *(px++);\n\n      /* update coefficient pointer */\n      pb += 3U;\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q63_t) x2 * c0);\n      acc1 += ((q63_t) x0 * c0);\n      acc2 += ((q63_t) x1 * c0);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    tapCnt = numTaps % 0x3U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch 1 state variable */\n      x2 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q63_t) x0 * c0);\n      acc1 += ((q63_t) x1 * c0);\n      acc2 += ((q63_t) x2 * c0);\n\n      /* Reuse the present sample states for next sample */\n      x0 = x1;\n      x1 = x2;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Advance the state pointer by 3 to process the next group of 3 samples */\n    pState = pState + 3;\n\n    /* The result is in 2.30 format. Convert to 1.31 and store in destination buffer. */\n    *pDst++ = (q31_t) (acc0 >> 31U);\n    *pDst++ = (q31_t) (acc1 >> 31U);\n    *pDst++ = (q31_t) (acc2 >> 31U);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining output samples */\n  blkCnt = blockSize % 0x3U;\n\n#else\n\n  /* Initialize blkCnt with number of taps */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy one sample at a time into state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set the accumulator to zero */\n    acc0 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize Coefficient pointer */\n    pb = pCoeffs;\n\n    i = numTaps;\n\n    /* Perform the multiply-accumulates */\n    do\n    {\n      /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */\n      acc0 += (q63_t) *px++ * *pb++;\n\n      i--;\n    } while (i > 0U);\n\n    /* Result is in 2.62 format. Convert to 1.31 and store in destination buffer. */\n    *pDst++ = (q31_t) (acc0 >> 31U);\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy remaining data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_q7.c\n * Description:  Q7 FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR\n  @{\n */\n\n/**\n  @brief         Processing function for Q7 FIR filter.\n  @param[in]     S          points to an instance of the Q7 FIR filter structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result.\n                   The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   The accumulator is converted to 18.7 format by discarding the low 7 bits.\n                   Finally, the result is truncated to 1.7 format.\n */\n\nvoid arm_fir_q7(\n  const arm_fir_instance_q7 * S,\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        q7_t *pState = S->pState;                      /* State pointer */\n  const q7_t *pCoeffs = S->pCoeffs;                    /* Coefficient pointer */\n        q7_t *pStateCurnt;                             /* Points to the current sample of the state */\n        q7_t *px;                                      /* Temporary pointer for state buffer */\n  const q7_t *pb;                                      /* Temporary pointer for coefficient buffer */\n        q31_t acc0;                                    /* Accumulators */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t i, tapCnt, blkCnt;                    /* Loop counters */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t acc1, acc2, acc3;                        /* Accumulators */\n        q7_t x0, x1, x2, x3, c0;                       /* Temporary variables to hold state */\n#endif\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 output values simultaneously.\n   * The variables acc0 ... acc3 hold output values that are being computed:\n   *\n   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]\n   *    acc1 =  b[numTaps-1] * x[n-numTaps]   + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]\n   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps]   + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]\n   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]\n   */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy 4 new input samples into the state buffer. */\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set all accumulators to zero */\n    acc0 = 0;\n    acc1 = 0;\n    acc2 = 0;\n    acc3 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Read the first 3 samples from the state buffer:\n     *  x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */\n    x0 = *px++;\n    x1 = *px++;\n    x2 = *px++;\n\n    /* Loop unrolling. Process 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Loop over the number of taps.  Unroll by a factor of 4.\n       Repeat until we've computed numTaps-4 coefficients. */\n    while (tapCnt > 0U)\n    {\n      /* Read the b[numTaps] coefficient */\n      c0 = *pb;\n\n      /* Read x[n-numTaps-3] sample */\n      x3 = *px;\n\n      /* acc0 +=  b[numTaps] * x[n-numTaps] */\n      acc0 += ((q15_t) x0 * c0);\n\n      /* acc1 +=  b[numTaps] * x[n-numTaps-1] */\n      acc1 += ((q15_t) x1 * c0);\n\n      /* acc2 +=  b[numTaps] * x[n-numTaps-2] */\n      acc2 += ((q15_t) x2 * c0);\n\n      /* acc3 +=  b[numTaps] * x[n-numTaps-3] */\n      acc3 += ((q15_t) x3 * c0);\n\n      /* Read the b[numTaps-1] coefficient */\n      c0 = *(pb + 1U);\n\n      /* Read x[n-numTaps-4] sample */\n      x0 = *(px + 1U);\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q15_t) x1 * c0);\n      acc1 += ((q15_t) x2 * c0);\n      acc2 += ((q15_t) x3 * c0);\n      acc3 += ((q15_t) x0 * c0);\n\n      /* Read the b[numTaps-2] coefficient */\n      c0 = *(pb + 2U);\n\n      /* Read x[n-numTaps-5] sample */\n      x1 = *(px + 2U);\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q15_t) x2 * c0);\n      acc1 += ((q15_t) x3 * c0);\n      acc2 += ((q15_t) x0 * c0);\n      acc3 += ((q15_t) x1 * c0);\n\n      /* Read the b[numTaps-3] coefficients */\n      c0 = *(pb + 3U);\n\n      /* Read x[n-numTaps-6] sample */\n      x2 = *(px + 3U);\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q15_t) x3 * c0);\n      acc1 += ((q15_t) x0 * c0);\n      acc2 += ((q15_t) x1 * c0);\n      acc3 += ((q15_t) x2 * c0);\n\n      /* update coefficient pointer */\n      pb += 4U;\n      px += 4U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read coefficients */\n      c0 = *(pb++);\n\n      /* Fetch 1 state variable */\n      x3 = *(px++);\n\n      /* Perform the multiply-accumulates */\n      acc0 += ((q15_t) x0 * c0);\n      acc1 += ((q15_t) x1 * c0);\n      acc2 += ((q15_t) x2 * c0);\n      acc3 += ((q15_t) x3 * c0);\n\n      /* Reuse the present sample states for next sample */\n      x0 = x1;\n      x1 = x2;\n      x2 = x3;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* The results in the 4 accumulators are in 2.62 format. Convert to 1.31\n       Then store the 4 outputs in the destination buffer. */\n    acc0 = __SSAT((acc0 >> 7U), 8);\n    *pDst++ = acc0;\n    acc1 = __SSAT((acc1 >> 7U), 8);\n    *pDst++ = acc1;\n    acc2 = __SSAT((acc2 >> 7U), 8);\n    *pDst++ = acc2;\n    acc3 = __SSAT((acc3 >> 7U), 8);\n    *pDst++ = acc3;\n\n    /* Advance the state pointer by 4 to process the next group of 4 samples */\n    pState = pState + 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining output samples */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of taps */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Copy one sample at a time into state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Set the accumulator to zero */\n    acc0 = 0;\n\n    /* Initialize state pointer */\n    px = pState;\n\n    /* Initialize Coefficient pointer */\n    pb = pCoeffs;\n\n    i = numTaps;\n\n    /* Perform the multiply-accumulates */\n    do\n    {\n      acc0 += (q15_t) * (px++) * (*(pb++));\n      i--;\n    } while (i > 0U);\n\n    /* The result is in 2.14 format. Convert to 1.7\n       Then store the output in the destination buffer. */\n    *pDst++ = __SSAT((acc0 >> 7U), 8);\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the state buffer */\n  pStateCurnt = S->pState;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of taps */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  /* Copy remaining data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_f32.c\n * Description:  Floating-point sparse FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup FIR_Sparse Finite Impulse Response (FIR) Sparse Filters\n\n  This group of functions implements sparse FIR filters.\n  Sparse FIR filters are equivalent to standard FIR filters except that most of the coefficients are equal to zero.\n  Sparse filters are used for simulating reflections in communications and audio applications.\n\n  There are separate functions for Q7, Q15, Q31, and floating-point data types.\n  The functions operate on blocks  of input and output data and each call to the function processes\n  <code>blockSize</code> samples through the filter.  <code>pSrc</code> and\n  <code>pDst</code> points to input and output arrays respectively containing <code>blockSize</code> values.\n\n  @par           Algorithm\n                   The sparse filter instant structure contains an array of tap indices <code>pTapDelay</code> which specifies the locations of the non-zero coefficients.\n                   This is in addition to the coefficient array <code>b</code>.\n                   The implementation essentially skips the multiplications by zero and leads to an efficient realization.\n  <pre>\n      y[n] = b[0] * x[n-pTapDelay[0]] + b[1] * x[n-pTapDelay[1]] + b[2] * x[n-pTapDelay[2]] + ...+ b[numTaps-1] * x[n-pTapDelay[numTaps-1]]\n  </pre>\n  @par\n                   \\image html FIRSparse.gif \"Sparse FIR filter.  b[n] represents the filter coefficients\"\n  @par\n                   <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>;\n                   <code>pTapDelay</code> points to an array of nonzero indices and is also of size <code>numTaps</code>;\n                   <code>pState</code> points to a state array of size <code>maxDelay + blockSize</code>, where\n                   <code>maxDelay</code> is the largest offset value that is ever used in the <code>pTapDelay</code> array.\n                   Some of the processing functions also require temporary working buffers.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient and offset arrays may be shared among several instances while state variable arrays cannot be shared.\n                   There are separate instance structure declarations for each of the 4 supported data types.\n\n  @par           Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numTaps, pCoeffs, pTapDelay, maxDelay, stateIndex, pState. Also set all of the values in pState to zero.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Set the values in the state buffer to zeros before static initialization.\n                   The code below statically initializes each of the 4 different data type filter instance structures\n  <pre>\n      arm_fir_sparse_instance_f32 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};\n      arm_fir_sparse_instance_q31 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};\n      arm_fir_sparse_instance_q15 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};\n      arm_fir_sparse_instance_q7 S =  {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};\n  </pre>\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the fixed-point versions of the sparse FIR filter functions.\n                   In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n                   Refer to the function specific documentation below for usage guidelines.\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point sparse FIR filter.\n  @param[in]     S           points to an instance of the floating-point sparse FIR structure\n  @param[in]     pSrc        points to the block of input data\n  @param[out]    pDst        points to the block of output data\n  @param[in]     pScratchIn  points to a temporary buffer of size blockSize\n  @param[in]     blockSize   number of input samples to process\n  @return        none\n */\n\nvoid arm_fir_sparse_f32(\n        arm_fir_sparse_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        float32_t * pScratchIn,\n        uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n  const float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *px;                                 /* Scratch buffer pointer */\n        float32_t *py = pState;                        /* Temporary pointers for state buffer */\n        float32_t *pb = pScratchIn;                    /* Temporary pointers for scratch buffer */\n        float32_t *pOut;                               /* Destination pointer */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter  */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        float32_t coeff = *pCoeffs++;                  /* Read the first coefficient value */\n\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, (int32_t *) pSrc, 1, blockSize);\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                       (int32_t *) pb, (int32_t *) pb, blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pOut = pDst;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplications and store in destination buffer */\n    *pOut++ = *px++ * coeff;\n\n    *pOut++ = *px++ * coeff;\n\n    *pOut++ = *px++ * coeff;\n\n    *pOut++ = *px++ * coeff;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplication and store in destination buffer */\n    *pOut++ = *px++ * coeff;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Load the coefficient value and\n   * increment the coefficient buffer for the next set of state values */\n  coeff = *pCoeffs++;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 2U;\n\n  while (tapCnt > 0U)\n  {\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                         (int32_t *) pb, (int32_t *) pb, blockSize, 1, blockSize);\n\n    /* Working pointer for the scratch buffer of state values */\n    px = pb;\n\n    /* Working pointer for scratch buffer of output values */\n    pOut = pDst;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time. */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      *pOut++ += *px++ * coeff;\n\n      *pOut++ += *px++ * coeff;\n\n      *pOut++ += *px++ * coeff;\n\n      *pOut++ += *px++ * coeff;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      *pOut++ += *px++ * coeff;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Load the coefficient value and\n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Decrement tap loop counter */\n    tapCnt--;\n  }\n\n  /* Compute last tap without the final read of pTapDelay */\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                       (int32_t *) pb, (int32_t *) pb, blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pOut = pDst;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    *pOut++ += *px++ * coeff;\n    *pOut++ += *px++ * coeff;\n    *pOut++ += *px++ * coeff;\n    *pOut++ += *px++ * coeff;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    *pOut++ += *px++ * coeff;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_init_f32.c\n * Description:  Floating-point sparse FIR filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point sparse FIR filter.\n  @param[in,out] S          points to an instance of the floating-point sparse FIR structure\n  @param[in]     numTaps    number of nonzero coefficients in the filter\n  @param[in]     pCoeffs    points to the array of filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     pTapDelay  points to the array of offset times\n  @param[in]     maxDelay   maximum offset time supported\n  @param[in]     blockSize  number of samples that will be processed per block\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.\n                   <code>pState</code> holds the filter's state variables and must be of length\n                   <code>maxDelay + blockSize</code>, where <code>maxDelay</code>\n                   is the maximum number of delay line values.\n                   <code>blockSize</code> is the \n                   number of samples processed by the <code>arm_fir_sparse_f32()</code> function.\n */\n\nvoid arm_fir_sparse_init_f32(\n        arm_fir_sparse_instance_f32 * S,\n        uint16_t numTaps,\n  const float32_t * pCoeffs,\n        float32_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Assign TapDelay pointer */\n  S->pTapDelay = pTapDelay;\n\n  /* Assign MaxDelay */\n  S->maxDelay = maxDelay;\n\n  /* reset the stateIndex to 0 */\n  S->stateIndex = 0U;\n\n  /* Clear state buffer and size is always maxDelay + blockSize */\n  memset(pState, 0, (maxDelay + blockSize) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_init_q15.c\n * Description:  Q15 sparse FIR filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 sparse FIR filter.\n  @param[in,out] S          points to an instance of the Q15 sparse FIR structure\n  @param[in]     numTaps    number of nonzero coefficients in the filter\n  @param[in]     pCoeffs    points to the array of filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     pTapDelay  points to the array of offset times\n  @param[in]     maxDelay   maximum offset time supported\n  @param[in]     blockSize  number of samples that will be processed per block\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.\n                   <code>pState</code> holds the filter's state variables and must be of length\n                   <code>maxDelay + blockSize</code>, where <code>maxDelay</code>\n                   is the maximum number of delay line values.\n                   <code>blockSize</code> is the\n                   number of words processed by <code>arm_fir_sparse_q15()</code> function.\n */\n\nvoid arm_fir_sparse_init_q15(\n        arm_fir_sparse_instance_q15 * S,\n        uint16_t numTaps,\n  const q15_t * pCoeffs,\n        q15_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Assign TapDelay pointer */\n  S->pTapDelay = pTapDelay;\n\n  /* Assign MaxDelay */\n  S->maxDelay = maxDelay;\n\n  /* reset the stateIndex to 0 */\n  S->stateIndex = 0U;\n\n  /* Clear state buffer and size is always maxDelay + blockSize */\n  memset(pState, 0, (maxDelay + blockSize) * sizeof(q15_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_init_q31.c\n * Description:  Q31 sparse FIR filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 sparse FIR filter.\n  @param[in,out] S          points to an instance of the Q31 sparse FIR structure\n  @param[in]     numTaps    number of nonzero coefficients in the filter\n  @param[in]     pCoeffs    points to the array of filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     pTapDelay  points to the array of offset times\n  @param[in]     maxDelay   maximum offset time supported\n  @param[in]     blockSize  number of samples that will be processed per block\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.\n                   <code>pState</code> holds the filter's state variables and must be of length\n                   <code>maxDelay + blockSize</code>, where <code>maxDelay</code>\n                   is the maximum number of delay line values.\n                   <code>blockSize</code> is the number of words processed by <code>arm_fir_sparse_q31()</code> function.\n */\n\nvoid arm_fir_sparse_init_q31(\n        arm_fir_sparse_instance_q31 * S,\n        uint16_t numTaps,\n  const q31_t * pCoeffs,\n        q31_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Assign TapDelay pointer */\n  S->pTapDelay = pTapDelay;\n\n  /* Assign MaxDelay */\n  S->maxDelay = maxDelay;\n\n  /* reset the stateIndex to 0 */\n  S->stateIndex = 0U;\n\n  /* Clear state buffer and size is always maxDelay + blockSize */\n  memset(pState, 0, (maxDelay + blockSize) * sizeof(q31_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_init_q7.c\n * Description:  Q7 sparse FIR filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q7 sparse FIR filter.\n  @param[in,out] S          points to an instance of the Q7 sparse FIR structure\n  @param[in]     numTaps    number of nonzero coefficients in the filter\n  @param[in]     pCoeffs    points to the array of filter coefficients\n  @param[in]     pState     points to the state buffer\n  @param[in]     pTapDelay  points to the array of offset times\n  @param[in]     maxDelay   maximum offset time supported\n  @param[in]     blockSize  number of samples that will be processed per block\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.\n                   <code>pState</code> holds the filter's state variables and must be of length\n                   <code>maxDelay + blockSize</code>, where <code>maxDelay</code>\n                   is the maximum number of delay line values.\n                   <code>blockSize</code> is the\n                   number of samples processed by the <code>arm_fir_sparse_q7()</code> function.\n */\n\nvoid arm_fir_sparse_init_q7(\n        arm_fir_sparse_instance_q7 * S,\n        uint16_t numTaps,\n  const q7_t * pCoeffs,\n        q7_t * pState,\n        int32_t * pTapDelay,\n        uint16_t maxDelay,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Assign TapDelay pointer */\n  S->pTapDelay = pTapDelay;\n\n  /* Assign MaxDelay */\n  S->maxDelay = maxDelay;\n\n  /* reset the stateIndex to 0 */\n  S->stateIndex = 0U;\n\n  /* Clear state buffer and size is always maxDelay + blockSize */\n  memset(pState, 0, (maxDelay + blockSize) * sizeof(q7_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_q15.c\n * Description:  Q15 sparse FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 sparse FIR filter.\n  @param[in]     S           points to an instance of the Q15 sparse FIR structure\n  @param[in]     pSrc        points to the block of input data\n  @param[out]    pDst        points to the block of output data\n  @param[in]     pScratchIn  points to a temporary buffer of size blockSize\n  @param[in]     pScratchOut points to a temporary buffer of size blockSize\n  @param[in]     blockSize   number of input samples to process per call\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 32-bit accumulator.\n                   The 1.15 x 1.15 multiplications yield a 2.30 result and these are added to a 2.30 accumulator.\n                   Thus the full precision of the multiplications is maintained but there is only a single guard bit in the accumulator.\n                   If the accumulator result overflows it will wrap around rather than saturate.\n                   After all multiply-accumulates are performed, the 2.30 accumulator is truncated to 2.15 format and then saturated to 1.15 format.\n                   In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits.\n */\n\nvoid arm_fir_sparse_q15(\n        arm_fir_sparse_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        q15_t * pScratchIn,\n        q31_t * pScratchOut,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n  const q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *px;                                     /* Temporary pointers for scratch buffer */\n        q15_t *py = pState;                            /* Temporary pointers for state buffer */\n        q15_t *pb = pScratchIn;                        /* Temporary pointers for scratch buffer */\n        q15_t *pOut = pDst;                            /* Working pointer for output */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter  */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        q31_t *pScr2 = pScratchOut;                    /* Working pointer for scratch buffer of output values */\n        q15_t coeff = *pCoeffs++;                      /* Read the first coefficient value */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t in1, in2;                                /* Temporary variables */\n#endif\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_q15(py, (int32_t) delaySize, &S->stateIndex, 1,pSrc, 1, blockSize);\n\n  /* Loop over the number of taps. */\n  tapCnt = numTaps;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_q15(py, (int32_t) delaySize, &readIndex, 1,\n                       pb, pb, (int32_t) blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pScratchOut = pScr2;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform multiplication and store in the scratch buffer */\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplication and store in the scratch buffer */\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Load the coefficient value and\n   * increment the coefficient buffer for the next set of state values */\n  coeff = *pCoeffs++;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 2U;\n\n  while (tapCnt > 0U)\n  {\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_q15(py, (int32_t) delaySize, &readIndex, 1,\n                         pb, pb, (int32_t) blockSize, 1, blockSize);\n\n    /* Working pointer for the scratch buffer of state values */\n    px = pb;\n\n    /* Working pointer for scratch buffer of output values */\n    pScratchOut = pScr2;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time. */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      *pScratchOut++ += (q31_t) *px++ * coeff;\n      *pScratchOut++ += (q31_t) *px++ * coeff;\n      *pScratchOut++ += (q31_t) *px++ * coeff;\n      *pScratchOut++ += (q31_t) *px++ * coeff;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      *pScratchOut++ += (q31_t) *px++ * coeff;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Load the coefficient value and\n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Compute last tap without the final read of pTapDelay */\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_q15(py, (int32_t) delaySize, &readIndex, 1,\n                       pb, pb, (int32_t) blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pScratchOut = pScr2;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    *pScratchOut++ += (q31_t) *px++ * coeff;\n    *pScratchOut++ += (q31_t) *px++ * coeff;\n    *pScratchOut++ += (q31_t) *px++ * coeff;\n    *pScratchOut++ += (q31_t) *px++ * coeff;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    *pScratchOut++ += (q31_t) *px++ * coeff;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* All the output values are in pScratchOut buffer.\n     Convert them into 1.15 format, saturate and store in the destination buffer. */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    in1 = *pScr2++;\n    in2 = *pScr2++;\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pOut, __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), 16));\n#else\n    write_q15x2_ia (&pOut, __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    in1 = *pScr2++;\n    in2 = *pScr2++;\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    write_q15x2_ia (&pOut, __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), 16));\n#else\n    write_q15x2_ia (&pOut, __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_q31.c\n * Description:  Q31 sparse FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 sparse FIR filter.\n  @param[in]     S           points to an instance of the Q31 sparse FIR structure\n  @param[in]     pSrc        points to the block of input data\n  @param[out]    pDst        points to the block of output data\n  @param[in]     pScratchIn  points to a temporary buffer of size blockSize\n  @param[in]     blockSize   number of input samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 32-bit accumulator.\n                   The 1.31 x 1.31 multiplications are truncated to 2.30 format.\n                   This leads to loss of precision on the intermediate multiplications and provides only a single guard bit.\n                   If the accumulator result overflows, it wraps around rather than saturate.\n                   In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits.\n */\n\nvoid arm_fir_sparse_q31(\n        arm_fir_sparse_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        q31_t * pScratchIn,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n  const q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *px;                                     /* Scratch buffer pointer */\n        q31_t *py = pState;                            /* Temporary pointers for state buffer */\n        q31_t *pb = pScratchIn;                        /* Temporary pointers for scratch buffer */\n        q31_t *pOut;                                   /* Destination pointer */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter  */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        q31_t coeff = *pCoeffs++;                      /* Read the first coefficient value */\n        q31_t in;\n        q63_t out;                                     /* Temporary output variable */\n\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1,\n                        (int32_t *) pSrc, 1, blockSize);\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                       (int32_t *) pb, (int32_t *) pb, blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pOut = pDst;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplications and store in destination buffer */\n    *pOut++ = (q31_t) (((q63_t) *px++ * coeff) >> 32);\n\n    *pOut++ = (q31_t) (((q63_t) *px++ * coeff) >> 32);\n\n    *pOut++ = (q31_t) (((q63_t) *px++ * coeff) >> 32);\n\n    *pOut++ = (q31_t) (((q63_t) *px++ * coeff) >> 32);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplication and store in destination buffer */\n    *pOut++ = (q31_t) (((q63_t) *px++ * coeff) >> 32);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Load the coefficient value and\n   * increment the coefficient buffer for the next set of state values */\n  coeff = *pCoeffs++;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 2U;\n\n  while (tapCnt > 0U)\n  {\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                         (int32_t *) pb, (int32_t *) pb, blockSize, 1, blockSize);\n\n    /* Working pointer for the scratch buffer of state values */\n    px = pb;\n\n    /* Working pointer for scratch buffer of output values */\n    pOut = pDst;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time. */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      out = *pOut;\n      out += ((q63_t) *px++ * coeff) >> 32;\n      *pOut++ = (q31_t) (out);\n\n      out = *pOut;\n      out += ((q63_t) *px++ * coeff) >> 32;\n      *pOut++ = (q31_t) (out);\n\n      out = *pOut;\n      out += ((q63_t) *px++ * coeff) >> 32;\n      *pOut++ = (q31_t) (out);\n\n      out = *pOut;\n      out += ((q63_t) *px++ * coeff) >> 32;\n      *pOut++ = (q31_t) (out);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      out = *pOut;\n      out += ((q63_t) *px++ * coeff) >> 32;\n      *pOut++ = (q31_t) (out);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Load the coefficient value and\n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Decrement tap loop counter */\n    tapCnt--;\n  }\n\n  /* Compute last tap without the final read of pTapDelay */\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,\n                       (int32_t *) pb, (int32_t *) pb, blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pOut = pDst;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    out = *pOut;\n    out += ((q63_t) * px++ * coeff) >> 32;\n    *pOut++ = (q31_t) (out);\n\n    out = *pOut;\n    out += ((q63_t) * px++ * coeff) >> 32;\n    *pOut++ = (q31_t) (out);\n\n    out = *pOut;\n    out += ((q63_t) * px++ * coeff) >> 32;\n    *pOut++ = (q31_t) (out);\n\n    out = *pOut;\n    out += ((q63_t) * px++ * coeff) >> 32;\n    *pOut++ = (q31_t) (out);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    out = *pOut;\n    out += ((q63_t) *px++ * coeff) >> 32;\n    *pOut++ = (q31_t) (out);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Working output pointer is updated */\n  pOut = pDst;\n\n  /* Output is converted into 1.31 format. */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    in = *pOut << 1;\n    *pOut++ = in;\n    in = *pOut << 1;\n    *pOut++ = in;\n    in = *pOut << 1;\n    *pOut++ = in;\n    in = *pOut << 1;\n    *pOut++ = in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    in = *pOut << 1;\n    *pOut++ = in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fir_sparse_q7.c\n * Description:  Q7 sparse FIR filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup FIR_Sparse\n  @{\n */\n\n/**\n  @brief         Processing function for the Q7 sparse FIR filter.\n  @param[in]     S           points to an instance of the Q7 sparse FIR structure\n  @param[in]     pSrc        points to the block of input data\n  @param[out]    pDst        points to the block of output data\n  @param[in]     pScratchIn  points to a temporary buffer of size blockSize\n  @param[in]     pScratchOut points to a temporary buffer of size blockSize\n  @param[in]     blockSize   number of input samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result.\n                   The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   The accumulator is then converted to 18.7 format by discarding the low 7 bits.\n                   Finally, the result is truncated to 1.7 format.\n */\n\nvoid arm_fir_sparse_q7(\n        arm_fir_sparse_instance_q7 * S,\n  const q7_t * pSrc,\n        q7_t * pDst,\n        q7_t * pScratchIn,\n        q31_t * pScratchOut,\n        uint32_t blockSize)\n{\n        q7_t *pState = S->pState;                      /* State pointer */\n  const q7_t *pCoeffs = S->pCoeffs;                    /* Coefficient pointer */\n        q7_t *px;                                      /* Scratch buffer pointer */\n        q7_t *py = pState;                             /* Temporary pointers for state buffer */\n        q7_t *pb = pScratchIn;                         /* Temporary pointers for scratch buffer */\n        q7_t *pOut = pDst;                             /* Destination pointer */\n        int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */\n        uint32_t delaySize = S->maxDelay + blockSize;  /* state length */\n        uint16_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter  */\n        int32_t readIndex;                             /* Read index of the state buffer */\n        uint32_t tapCnt, blkCnt;                       /* loop counters */\n        q31_t *pScr2 = pScratchOut;                    /* Working pointer for scratch buffer of output values */\n        q31_t in;\n        q7_t coeff = *pCoeffs++;                       /* Read the coefficient value */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q7_t in1, in2, in3, in4;\n#endif\n\n  /* BlockSize of Input samples are copied into the state buffer */\n  /* StateIndex points to the starting position to write in the state buffer */\n  arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, blockSize);\n\n  /* Loop over the number of taps. */\n  tapCnt = numTaps;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1,\n                   pb, pb, (int32_t) blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pScratchOut = pScr2;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform multiplication and store in the scratch buffer */\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiplication and store in the scratch buffer */\n    *pScratchOut++ = ((q31_t) *px++ * coeff);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Load the coefficient value and\n   * increment the coefficient buffer for the next set of state values */\n  coeff = *pCoeffs++;\n\n  /* Read Index, from where the state buffer should be read, is calculated. */\n  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n  /* Wraparound of readIndex */\n  if (readIndex < 0)\n  {\n    readIndex += (int32_t) delaySize;\n  }\n\n  /* Loop over the number of taps. */\n  tapCnt = (uint32_t) numTaps - 2U;\n\n  while (tapCnt > 0U)\n  {\n    /* Working pointer for state buffer is updated */\n    py = pState;\n\n    /* blockSize samples are read from the state buffer */\n    arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1,\n                        pb, pb, (int32_t) blockSize, 1, blockSize);\n\n    /* Working pointer for the scratch buffer of state values */\n    px = pb;\n\n    /* Working pointer for scratch buffer of output values */\n    pScratchOut = pScr2;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time. */\n    blkCnt = blockSize >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      in = *pScratchOut + ((q31_t) * px++ * coeff);\n      *pScratchOut++ = in;\n      in = *pScratchOut + ((q31_t) * px++ * coeff);\n      *pScratchOut++ = in;\n      in = *pScratchOut + ((q31_t) * px++ * coeff);\n      *pScratchOut++ = in;\n      in = *pScratchOut + ((q31_t) * px++ * coeff);\n      *pScratchOut++ = in;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = blockSize % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* Perform Multiply-Accumulate */\n      in = *pScratchOut + ((q31_t) *px++ * coeff);\n      *pScratchOut++ = in;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Load the coefficient value and\n     * increment the coefficient buffer for the next set of state values */\n    coeff = *pCoeffs++;\n\n    /* Read Index, from where the state buffer should be read, is calculated. */\n    readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;\n\n    /* Wraparound of readIndex */\n    if (readIndex < 0)\n    {\n      readIndex += (int32_t) delaySize;\n    }\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Compute last tap without the final read of pTapDelay */\n\n  /* Working pointer for state buffer is updated */\n  py = pState;\n\n  /* blockSize samples are read from the state buffer */\n  arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1,\n                      pb, pb, (int32_t) blockSize, 1, blockSize);\n\n  /* Working pointer for the scratch buffer of state values */\n  px = pb;\n\n  /* Working pointer for scratch buffer of output values */\n  pScratchOut = pScr2;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    in = *pScratchOut + ((q31_t) *px++ * coeff);\n    *pScratchOut++ = in;\n    in = *pScratchOut + ((q31_t) *px++ * coeff);\n    *pScratchOut++ = in;\n    in = *pScratchOut + ((q31_t) *px++ * coeff);\n    *pScratchOut++ = in;\n    in = *pScratchOut + ((q31_t) *px++ * coeff);\n    *pScratchOut++ = in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Perform Multiply-Accumulate */\n    in = *pScratchOut + ((q31_t) *px++ * coeff);\n    *pScratchOut++ = in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* All the output values are in pScratchOut buffer.\n     Convert them into 1.15 format, saturate and store in the destination buffer. */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time. */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    in1 = (q7_t) __SSAT(*pScr2++ >> 7, 8);\n    in2 = (q7_t) __SSAT(*pScr2++ >> 7, 8);\n    in3 = (q7_t) __SSAT(*pScr2++ >> 7, 8);\n    in4 = (q7_t) __SSAT(*pScr2++ >> 7, 8);\n\n    write_q7x4_ia (&pOut, __PACKq7(in1, in2, in3, in4));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of FIR_Sparse group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_iir_lattice_f32.c\n * Description:  Floating-point IIR Lattice filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup IIR_Lattice Infinite Impulse Response (IIR) Lattice Filters\n\n  This set of functions implements lattice filters\n  for Q15, Q31 and floating-point data types.  Lattice filters are used in a\n  variety of adaptive filter applications. The filter structure has feedforward and\n  feedback components and the net impulse response is infinite length.\n  The functions operate on blocks\n  of input and output data and each call to the function processes\n  <code>blockSize</code> samples through the filter.  <code>pSrc</code> and\n  <code>pDst</code> point to input and output arrays containing <code>blockSize</code> values.\n\n  @par           Algorithm\n                   \\image html IIRLattice.gif \"Infinite Impulse Response Lattice filter\"\n  @par\n  <pre>\n      fN(n)   = x(n)\n      fm-1(n) = fm(n) - km * gm-1(n-1)   for m = N, N-1, ..., 1\n      gm(n)   = km * fm-1(n) + gm-1(n-1) for m = N, N-1, ..., 1\n      y(n)    = vN * gN(n) + vN-1 * gN-1(n) + ...+ v0 * g0(n)\n  </pre>\n  @par\n                   <code>pkCoeffs</code> points to array of reflection coefficients of size <code>numStages</code>.\n                   Reflection Coefficients are stored in time-reversed order.\n  @par\n  <pre>\n     {kN, kN-1, ..., k1}\n  </pre>\n  @par\n                  <code>pvCoeffs</code> points to the array of ladder coefficients of size <code>(numStages+1)</code>.\n                  Ladder coefficients are stored in time-reversed order.\n  <pre>\n      {vN, vN-1, ..., v0}\n  </pre>\n  @par\n                   <code>pState</code> points to a state array of size <code>numStages + blockSize</code>.\n                   The state variables shown in the figure above (the g values) are stored in the <code>pState</code> array.\n                   The state variables are updated after each block of data is processed; the coefficients are untouched.\n\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter.\n                   Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n\n  @par           Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numStages, pkCoeffs, pvCoeffs, pState. Also set all of the values in pState to zero.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Set the values in the state buffer to zeros and then manually initialize the instance structure as follows:\n  <pre>\n      arm_iir_lattice_instance_f32 S = {numStages, pState, pkCoeffs, pvCoeffs};\n      arm_iir_lattice_instance_q31 S = {numStages, pState, pkCoeffs, pvCoeffs};\n      arm_iir_lattice_instance_q15 S = {numStages, pState, pkCoeffs, pvCoeffs};\n  </pre>\n  @par\n                   where <code>numStages</code> is the number of stages in the filter; <code>pState</code> points to the state buffer array;\n                   <code>pkCoeffs</code> points to array of the reflection coefficients; <code>pvCoeffs</code> points to the array of ladder coefficients.\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the fixed-point versions of the IIR lattice filter functions.\n                   In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n                   Refer to the function specific documentation below for usage guidelines.\n */\n\n/**\n  @addtogroup IIR_Lattice\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point IIR lattice filter.\n  @param[in]     S          points to an instance of the floating-point IIR lattice structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n\nvoid arm_iir_lattice_f32(\n  const arm_iir_lattice_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{       \n        float32_t *pState = S->pState;                   /* State pointer */\n        float32_t *pStateCur;                            /* State current pointer */\n        float32_t acc;                                   /* Accumlator */\n        float32_t fnext1, fnext2, gcurr1, gnext;         /* Temporary variables for lattice stages */\n        float32_t *px1, *px2, *pk, *pv;                  /* Temporary pointers for state and coef */\n        uint32_t numStages = S->numStages;               /* Number of stages */\n        uint32_t blkCnt, tapCnt;                         /* Temporary variables for counts */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        float32_t gcurr2;                                /* Temporary variables for lattice stages */\n        float32_t k1, k2;\n        float32_t v1, v2, v3, v4;\n#endif\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fnext2 = *pSrc++;\n\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    /* Initialize state read pointer */\n    px1 = pState;\n\n    /* Initialize state write pointer */\n    px2 = pState;\n\n    /* Set accumulator to zero */\n    acc = 0.0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = (numStages) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Read gN-1(n-1) from state buffer */\n      gcurr1 = *px1;\n\n      /* read reflection coefficient kN */\n      k1 = *pk;\n\n      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */\n      fnext1 = fnext2 - (k1 * gcurr1);\n\n      /* read ladder coefficient vN */\n      v1 = *pv;\n\n      /* read next reflection coefficient kN-1 */\n      k2 = *(pk + 1U);\n\n      /* Read gN-2(n-1) from state buffer */\n      gcurr2 = *(px1 + 1U);\n\n      /* read next ladder coefficient vN-1 */\n      v2 = *(pv + 1U);\n\n      /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */\n      fnext2 = fnext1 - (k2 * gcurr2);\n\n      /* gN(n)   = kN * fN-1(n) + gN-1(n-1) */\n      gnext = gcurr1 + (k1 * fnext1);\n\n      /* read reflection coefficient kN-2 */\n      k1 = *(pk + 2U);\n\n      /* write gN(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* Read gN-3(n-1) from state buffer */\n      gcurr1 = *(px1 + 2U);\n\n      /* y(n) += gN(n) * vN  */\n      acc += (gnext * v1);\n\n      /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */\n      fnext1 = fnext2 - (k1 * gcurr1);\n\n      /* gN-1(n)   = kN-1 * fN-2(n) + gN-2(n-1) */\n      gnext = gcurr2 + (k2 * fnext2);\n\n      /* Read gN-4(n-1) from state buffer */\n      gcurr2 = *(px1 + 3U);\n\n      /* y(n) += gN-1(n) * vN-1  */\n      acc += (gnext * v2);\n\n      /* read reflection coefficient kN-3 */\n      k2 = *(pk + 3U);\n\n      /* write gN-1(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */\n      fnext2 = fnext1 - (k2 * gcurr2);\n\n      /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */\n      gnext = gcurr1 + (k1 * fnext1);\n\n      /* read ladder coefficient vN-2 */\n      v3 = *(pv + 2U);\n\n      /* y(n) += gN-2(n) * vN-2  */\n      acc += (gnext * v3);\n\n      /* write gN-2(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* update pointer */\n      pk += 4U;\n\n      /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */\n      gnext = (fnext2 * k2) + gcurr2;\n\n      /* read next ladder coefficient vN-3 */\n      v4 = *(pv + 3U);\n\n      /* y(n) += gN-4(n) * vN-4  */\n      acc += (gnext * v4);\n\n      /* write gN-3(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* update pointers */\n      px1 += 4U;\n      pv += 4U;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numStages % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numStages;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      gcurr1 = *px1++;\n      /* Process sample for last taps */\n      fnext1 = fnext2 - ((*pk) * gcurr1);\n      gnext = (fnext1 * (*pk++)) + gcurr1;\n      /* Output samples for last taps */\n      acc += (gnext * (*pv++));\n      *px2++ = gnext;\n      fnext2 = fnext1;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += (fnext2 * (*pv));\n\n    *px2++ = fnext2;\n\n    /* write out into pDst */\n    *pDst++ = acc;\n\n    /* Advance the state pointer by 4 to process the next group of 4 samples */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer\n     for the preperation of next frame process */\n\n  /* Points to the start of the state buffer */\n  pStateCur = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  /* Copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = numStages >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = numStages % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  tapCnt = numStages;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of IIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_iir_lattice_init_f32.c\n * Description:  Floating-point IIR lattice filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup IIR_Lattice\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point IIR lattice filter.\n  @param[in]     S          points to an instance of the floating-point IIR lattice structure\n  @param[in]     numStages  number of stages in the filter\n  @param[in]     pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages\n  @param[in]     pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1\n  @param[in]     pState     points to state buffer.  The array is of length numStages+blockSize\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n\nvoid arm_iir_lattice_init_f32(\n  arm_iir_lattice_instance_f32 * S,\n  uint16_t numStages,\n  float32_t * pkCoeffs,\n  float32_t * pvCoeffs,\n  float32_t * pState,\n  uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numStages = numStages;\n\n  /* Assign reflection coefficient pointer */\n  S->pkCoeffs = pkCoeffs;\n\n  /* Assign ladder coefficient pointer */\n  S->pvCoeffs = pvCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numStages */\n  memset(pState, 0, (numStages + blockSize) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of IIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_iir_lattice_init_q15.c\n * Description:  Q15 IIR lattice filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup IIR_Lattice\n  @{\n */\n\n/**\n  @brief     Initialization function for the Q15 IIR lattice filter.\n  @param[in] S          points to an instance of the Q15 IIR lattice structure\n  @param[in] numStages  number of stages in the filter\n  @param[in] pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages\n  @param[in] pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1\n  @param[in] pState     points to state buffer.  The array is of length numStages+blockSize\n  @param[in] blockSize  number of samples to process\n  @return        none\n */\n\nvoid arm_iir_lattice_init_q15(\n  arm_iir_lattice_instance_q15 * S,\n  uint16_t numStages,\n  q15_t * pkCoeffs,\n  q15_t * pvCoeffs,\n  q15_t * pState,\n  uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numStages = numStages;\n\n  /* Assign reflection coefficient pointer */\n  S->pkCoeffs = pkCoeffs;\n\n  /* Assign ladder coefficient pointer */\n  S->pvCoeffs = pvCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numStages */\n  memset(pState, 0, (numStages + blockSize) * sizeof(q15_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of IIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_iir_lattice_init_q31.c\n * Description:  Initialization function for the Q31 IIR lattice filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup IIR_Lattice\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 IIR lattice filter.\n  @param[in]     S          points to an instance of the Q31 IIR lattice structure\n  @param[in]     numStages  number of stages in the filter\n  @param[in]     pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages\n  @param[in]     pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1\n  @param[in]     pState     points to state buffer.  The array is of length numStages+blockSize\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n\nvoid arm_iir_lattice_init_q31(\n  arm_iir_lattice_instance_q31 * S,\n  uint16_t numStages,\n  q31_t * pkCoeffs,\n  q31_t * pvCoeffs,\n  q31_t * pState,\n  uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numStages = numStages;\n\n  /* Assign reflection coefficient pointer */\n  S->pkCoeffs = pkCoeffs;\n\n  /* Assign ladder coefficient pointer */\n  S->pvCoeffs = pvCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numStages */\n  memset(pState, 0, (numStages + blockSize) * sizeof(q31_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n}\n\n/**\n  @} end of IIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_iir_lattice_q15.c\n * Description:  Q15 IIR Lattice filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup IIR_Lattice\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 IIR lattice filter.\n  @param[in]     S          points to an instance of the Q15 IIR lattice structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\n                   Lastly, the accumulator is saturated to yield a result in 1.15 format.\n */\n\nvoid arm_iir_lattice_q15(\n  const arm_iir_lattice_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n        q15_t *pStateCur;                              /* State current pointer */\n        q31_t fcurr, fnext = 0, gcurr = 0, gnext;      /* Temporary variables for lattice stages */\n        q63_t acc;                                     /* Accumlator */\n        q15_t *px1, *px2, *pk, *pv;                    /* Temporary pointers for state and coef */\n        uint32_t numStages = S->numStages;             /* Number of stages */\n        uint32_t blkCnt, tapCnt;                       /* Temporary variables for counts */\n        q15_t out;                                     /* Temporary variable for output */\n\n#if defined (ARM_MATH_DSP) && defined (ARM_MATH_LOOPUNROLL)\n        q15_t gnext1, gnext2;                          /* Temporary variables for lattice stages */\n        q31_t v;                                       /* Temporary variable for ladder coefficient */\n#endif\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n#if defined (ARM_MATH_DSP)\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    /* Initialize state read pointer */\n    px1 = pState;\n\n    /* Initialize state write pointer */\n    px2 = pState;\n\n    /* Set accumulator to zero */\n    acc = 0;\n\n    /* Process sample for first tap */\n    gcurr = *px1++;\n    /* fN-1(n) = fN(n) - kN * gN-1(n-1) */\n    fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);\n    fnext = __SSAT(fnext, 16);\n\n    /* gN(n) = kN * fN-1(n) + gN-1(n-1) */\n    gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;\n    gnext = __SSAT(gnext, 16);\n\n    /* write gN(n) into state for next sample processing */\n    *px2++ = (q15_t) gnext;\n\n    /* y(n) += gN(n) * vN */\n    acc += (q31_t) ((gnext * (*pv++)));\n\n    /* Update f values for next coefficient processing */\n    fcurr = fnext;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = (numStages - 1U) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Process sample for 2nd, 6th ...taps */\n      /* Read gN-2(n-1) from state buffer */\n      gcurr = *px1++;\n      /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */\n      fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);\n      fnext = __SSAT(fnext, 16);\n      /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */\n      gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;\n      gnext1 = (q15_t) __SSAT(gnext, 16);\n      /* write gN-1(n) into state for next sample processing */\n      *px2++ = (q15_t) gnext1;\n\n      /* Process sample for 3nd, 7th ...taps */\n      /* Read gN-3(n-1) from state buffer */\n      gcurr = *px1++;\n      /* Process sample for 3rd, 7th .. taps */\n      /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */\n      fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15);\n      fcurr = __SSAT(fcurr, 16);\n      /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */\n      gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr;\n      gnext2 = (q15_t) __SSAT(gnext, 16);\n      /* write gN-2(n) into state */\n      *px2++ = (q15_t) gnext2;\n\n      /* Read vN-1 and vN-2 at a time */\n      v = read_q15x2_ia (&pv);\n\n      /* Pack gN-1(n) and gN-2(n) */\n\n#ifndef  ARM_MATH_BIG_ENDIAN\n      gnext = __PKHBT(gnext1, gnext2, 16);\n#else\n      gnext = __PKHBT(gnext2, gnext1, 16);\n#endif /* #ifndef  ARM_MATH_BIG_ENDIAN */\n\n      /* y(n) += gN-1(n) * vN-1  */\n      /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */\n      /* y(n) += gN-2(n) * vN-2  */\n      /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */\n      acc = __SMLALD(gnext, v, acc);\n\n      /* Process sample for 4th, 8th ...taps */\n      /* Read gN-4(n-1) from state buffer */\n      gcurr = *px1++;\n      /* Process sample for 4th, 8th .. taps */\n      /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */\n      fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);\n      fnext = __SSAT(fnext, 16);\n      /* gN-3(n) = kN-3 * fN-1(n) + gN-1(n-1) */\n      gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;\n      gnext1 = (q15_t) __SSAT(gnext, 16);\n      /* write  gN-3(n) for the next sample process */\n      *px2++ = (q15_t) gnext1;\n\n      /* Process sample for 5th, 9th ...taps */\n      /* Read gN-5(n-1) from state buffer */\n      gcurr = *px1++;\n      /* Process sample for 5th, 9th .. taps */\n      /* fN-5(n) = fN-4(n) - kN-4 * gN-5(n-1) */\n      fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15);\n      fcurr = __SSAT(fcurr, 16);\n      /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */\n      gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr;\n      gnext2 = (q15_t) __SSAT(gnext, 16);\n      /* write      gN-4(n) for the next sample process */\n      *px2++ = (q15_t) gnext2;\n\n      /* Read vN-3 and vN-4 at a time */\n      v = read_q15x2_ia (&pv);\n\n      /* Pack gN-3(n) and gN-4(n) */\n#ifndef ARM_MATH_BIG_ENDIAN\n      gnext = __PKHBT(gnext1, gnext2, 16);\n#else\n      gnext = __PKHBT(gnext2, gnext1, 16);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n      /* y(n) += gN-4(n) * vN-4  */\n      /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */\n      /* y(n) += gN-3(n) * vN-3  */\n      /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */\n      acc = __SMLALD(gnext, v, acc);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    fnext = fcurr;\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = (numStages - 1U) % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    tapCnt = (numStages - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      gcurr = *px1++;\n      /* Process sample for last taps */\n      fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);\n      fnext = __SSAT(fnext, 16);\n      gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;\n      gnext = __SSAT(gnext, 16);\n\n      /* Output samples for last taps */\n      acc += (q31_t) (((q31_t) gnext * (*pv++)));\n      *px2++ = (q15_t) gnext;\n      fcurr = fnext;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += (q31_t) (((q31_t) fnext * (*pv++)));\n\n    out = (q15_t) __SSAT(acc >> 15, 16);\n    *px2++ = (q15_t) fnext;\n\n    /* write out into pDst */\n    *pDst++ = out;\n\n    /* Advance the state pointer by 4 to process the next group of 4 samples */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer\n     for the preperation of next frame process */\n\n  /* Points to the start of the state buffer */\n  pStateCur = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  /* copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = numStages >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n    write_q15x2_ia (&pStateCur, read_q15x2_ia (&pState));\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = numStages % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  tapCnt = (numStages - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    /* Initialize state read pointer */\n    px1 = pState;\n\n    /* Initialize state write pointer */\n    px2 = pState;\n\n    /* Set accumulator to zero */\n    acc = 0;\n\n    tapCnt = numStages;\n\n    while (tapCnt > 0U)\n    {\n      gcurr = *px1++;\n      /* Process sample */\n      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */\n      fnext = fcurr - ((gcurr * (*pk)) >> 15);\n      fnext = __SSAT(fnext, 16);\n\n      /* gN(n) = kN * fN-1(n) + gN-1(n-1) */\n      gnext = ((fnext * (*pk++)) >> 15) + gcurr;\n      gnext = __SSAT(gnext, 16);\n\n      /* Output samples */\n      /* y(n) += gN(n) * vN */\n      acc += (q31_t) ((gnext * (*pv++)));\n\n      /* write gN(n) into state for next sample processing */\n      *px2++ = (q15_t) gnext;\n\n      /* Update f values for next coefficient processing */\n      fcurr = fnext;\n\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += (q31_t) ((fnext * (*pv++)));\n\n    out = (q15_t) __SSAT(acc >> 15, 16);\n    *px2++ = (q15_t) fnext;\n\n    /* write out into pDst */\n    *pDst++ = out;\n\n    /* Advance the state pointer by 1 to process the next group of samples */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer\n     for the preperation of next frame process */\n\n  /* Points to the start of the state buffer */\n  pStateCur = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  tapCnt = numStages;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n/**\n  @} end of IIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_iir_lattice_q31.c\n * Description:  Q31 IIR Lattice filter processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup IIR_Lattice\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 IIR lattice filter.\n  @param[in]     S          points to an instance of the Q31 IIR lattice structure\n  @param[in]     pSrc       points to the block of input data\n  @param[out]    pDst       points to the block of output data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clip.\n                   In order to avoid overflows completely the input signal must be scaled down by 2*log2(numStages) bits.\n                   After all multiply-accumulates are performed, the 2.62 accumulator is saturated to 1.32 format and then truncated to 1.31 format.\n */\n\nvoid arm_iir_lattice_q31(\n  const arm_iir_lattice_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{       \n        q31_t *pState = S->pState;                       /* State pointer */\n        q31_t *pStateCur;                                /* State current pointer */\n        q31_t fcurr, fnext = 0, gcurr = 0, gnext;        /* Temporary variables for lattice stages */\n        q63_t acc;                                       /* Accumlator */\n        q31_t *px1, *px2, *pk, *pv;                      /* Temporary pointers for state and coef */\n        uint32_t numStages = S->numStages;               /* Number of stages */\n        uint32_t blkCnt, tapCnt;                         /* Temporary variables for counts */\n\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n#if defined (ARM_MATH_DSP)\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    /* Initialize state read pointer */\n    px1 = pState;\n\n    /* Initialize state write pointer */\n    px2 = pState;\n\n    /* Set accumulator to zero */\n    acc = 0;\n\n    /* Process sample for first tap */\n    gcurr = *px1++;\n    /* fN-1(n) = fN(n) - kN * gN-1(n-1) */\n    fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk  )) >> 31));\n\n    /* gN(n) = kN * fN-1(n) + gN-1(n-1) */\n    gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));\n\n    /* write gN-1(n-1) into state for next sample processing */\n    *px2++ = gnext;\n\n    /* y(n) += gN(n) * vN */\n    acc += ((q63_t) gnext * *pv++);\n\n    /* Update f values for next coefficient processing */\n    fcurr = fnext;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = (numStages - 1U) >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Process sample for 2nd, 6th ...taps */\n      /* Read gN-2(n-1) from state buffer */\n      gcurr = *px1++;\n      /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */\n      fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk  )) >> 31));\n      /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */\n      gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));\n      /* y(n) += gN-1(n) * vN-1  */\n      /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */\n      acc += ((q63_t) gnext * *pv++);\n      /* write gN-1(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* Process sample for 3nd, 7th ...taps */\n      /* Read gN-3(n-1) from state buffer */\n      gcurr = *px1++;\n      /* Process sample for 3rd, 7th .. taps */\n      /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */\n      fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk  )) >> 31));\n      /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */\n      gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31));\n      /* y(n) += gN-2(n) * vN-2  */\n      /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */\n      acc += ((q63_t) gnext * *pv++);\n      /* write gN-2(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* Process sample for 4th, 8th ...taps */\n      /* Read gN-4(n-1) from state buffer */\n      gcurr = *px1++;\n      /* Process sample for 4th, 8th .. taps */\n      /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */\n      fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk  )) >> 31));\n      /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */\n      gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));\n      /* y(n) += gN-3(n) * vN-3  */\n      /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */\n      acc += ((q63_t) gnext * *pv++);\n      /* write gN-3(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* Process sample for 5th, 9th ...taps */\n      /* Read gN-5(n-1) from state buffer */\n      gcurr = *px1++;\n      /* Process sample for 5th, 9th .. taps */\n      /* fN-5(n) = fN-4(n) - kN-4 * gN-1(n-1) */\n      fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk  )) >> 31));\n      /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */\n      gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31));\n      /* y(n) += gN-4(n) * vN-4  */\n      /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */\n      acc += ((q63_t) gnext * *pv++);\n\n      /* write gN-4(n) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    fnext = fcurr;\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = (numStages - 1U) % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    tapCnt = (numStages - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      gcurr = *px1++;\n      /* Process sample for last taps */\n      fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk  )) >> 31));\n      gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));\n\n      /* Output samples for last taps */\n      acc += ((q63_t) gnext * *pv++);\n      *px2++ = gnext;\n      fcurr = fnext;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += ((q63_t) fnext * *pv++);\n\n    *px2++ = fnext;\n\n    /* write out into pDst */\n    *pDst++ = (q31_t) (acc >> 31U);\n\n    /* Advance the state pointer by 4 to process the next group of 4 samples */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer\n     for the preperation of next frame process */\n\n  /* Points to the start of the state buffer */\n  pStateCur = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  /* Copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = numStages >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = numStages % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  tapCnt = (numStages - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  /* Sample processing */\n  while (blkCnt > 0U)\n  {\n    /* Read Sample from input buffer */\n    /* fN(n) = x(n) */\n    fcurr = *pSrc++;\n\n    /* Initialize Ladder coeff pointer */\n    pv = &S->pvCoeffs[0];\n\n    /* Initialize Reflection coeff pointer */\n    pk = &S->pkCoeffs[0];\n\n    /* Initialize state read pointer */\n    px1 = pState;\n\n    /* Initialize state write pointer */\n    px2 = pState;\n\n    /* Set accumulator to zero */\n    acc = 0;\n\n    tapCnt = numStages;\n\n    while (tapCnt > 0U)\n    {\n      gcurr = *px1++;\n      /* Process sample */\n      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */\n      fnext = clip_q63_to_q31(((q63_t) fcurr - ((q31_t) (((q63_t) gcurr * (*pk  )) >> 31))));\n\n      /* gN(n) = kN * fN-1(n) + gN-1(n-1) */\n      gnext = clip_q63_to_q31(((q63_t) gcurr + ((q31_t) (((q63_t) fnext * (*pk++)) >> 31))));\n\n      /* Output samples */\n      /* y(n) += gN(n) * vN */\n      acc += ((q63_t) gnext * *pv++);\n\n      /* write gN-1(n-1) into state for next sample processing */\n      *px2++ = gnext;\n\n      /* Update f values for next coefficient processing */\n      fcurr = fnext;\n\n      tapCnt--;\n    }\n\n    /* y(n) += g0(n) * v0 */\n    acc += ((q63_t) fnext * *pv++);\n\n    *px2++ = fnext;\n\n    /* write out into pDst */\n    *pDst++ = (q31_t) (acc >> 31U);\n\n    /* Advance the state pointer by 1 to process the next group of samples */\n    pState = pState + 1U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete. Now copy last S->numStages samples to start of the buffer\n     for the preperation of next frame process */\n\n  /* Points to the start of the state buffer */\n  pStateCur = &S->pState[0];\n  pState = &S->pState[blockSize];\n\n  tapCnt = numStages;\n\n  /* Copy data */\n  while (tapCnt > 0U)\n  {\n    *pStateCur++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n/**\n  @} end of IIR_Lattice group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_f32.c\n * Description:  Processing function for the floating-point LMS filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup LMS Least Mean Square (LMS) Filters\n\n  LMS filters are a class of adaptive filters that are able to \"learn\" an unknown transfer functions.\n  LMS filters use a gradient descent method in which the filter coefficients are updated based on the instantaneous error signal.\n  Adaptive filters are often used in communication systems, equalizers, and noise removal.\n  The CMSIS DSP Library contains LMS filter functions that operate on Q15, Q31, and floating-point data types.\n  The library also contains normalized LMS filters in which the filter coefficient adaptation is indepedent of the level of the input signal.\n\n  An LMS filter consists of two components as shown below.\n  The first component is a standard transversal or FIR filter.\n  The second component is a coefficient update mechanism.\n  The LMS filter has two input signals.\n  The \"input\" feeds the FIR filter while the \"reference input\" corresponds to the desired output of the FIR filter.\n  That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input.\n  The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input.\n  This \"error signal\" tends towards zero as the filter adapts.\n  The LMS processing functions accept the input and reference input signals and generate the filter output and error signal.\n  \\image html LMS.gif \"Internal structure of the Least Mean Square filter\"\n\n  The functions operate on blocks of data and each call to the function processes\n  <code>blockSize</code> samples through the filter.\n  <code>pSrc</code> points to input signal, <code>pRef</code> points to reference signal,\n  <code>pOut</code> points to output signal and <code>pErr</code> points to error signal.\n  All arrays contain <code>blockSize</code> values.\n\n  The functions operate on a block-by-block basis.\n  Internally, the filter coefficients <code>b[n]</code> are updated on a sample-by-sample basis.\n  The convergence of the LMS filter is slower compared to the normalized LMS algorithm.\n\n  @par           Algorithm\n                   The output signal <code>y[n]</code> is computed by a standard FIR filter:\n  <pre>\n      y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]\n  </pre>\n\n  @par\n                   The error signal equals the difference between the reference signal <code>d[n]</code> and the filter output:\n  <pre>\n      e[n] = d[n] - y[n].\n  </pre>\n\n  @par\n                   After each sample of the error signal is computed, the filter coefficients <code>b[k]</code> are updated on a sample-by-sample basis:\n  <pre>\n      b[k] = b[k] + e[n] * mu * x[n-k],  for k=0, 1, ..., numTaps-1\n  </pre>\n                   where <code>mu</code> is the step size and controls the rate of coefficient convergence.\n  @par\n                   In the APIs, <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.\n                   Coefficients are stored in time reversed order.\n  @par\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n  @par\n                   <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.\n                   Samples in the state buffer are stored in the order:\n  @par\n  <pre>\n     {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}\n  </pre>\n  @par\n                   Note that the length of the state buffer exceeds the length of the coefficient array by <code>blockSize-1</code> samples.\n                   The increased state buffer length allows circular addressing, which is traditionally used in FIR filters,\n                   to be avoided and yields a significant speed improvement.\n                   The state variables are updated after each block of data is processed.\n  @par           Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter and\n                   coefficient and state arrays cannot be shared among instances.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n\n  @par           Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numTaps, pCoeffs, mu, postShift (not for f32), pState. Also set all of the values in pState to zero.\n\n  @par\n                 Use of the initialization function is optional.\n                 However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                 To place an instance structure into a const data section, the instance structure must be manually initialized.\n                 Set the values in the state buffer to zeros before static initialization.\n                 The code below statically initializes each of the 3 different data type filter instance structures\n  <pre>\n     arm_lms_instance_f32 S = {numTaps, pState, pCoeffs, mu};\n     arm_lms_instance_q31 S = {numTaps, pState, pCoeffs, mu, postShift};\n     arm_lms_instance_q15 S = {numTaps, pState, pCoeffs, mu, postShift};\n  </pre>\n                 where <code>numTaps</code> is the number of filter coefficients in the filter; <code>pState</code> is the address of the state buffer;\n                 <code>pCoeffs</code> is the address of the coefficient buffer; <code>mu</code> is the step size parameter; and <code>postShift</code> is the shift applied to coefficients.\n\n  @par           Fixed-Point Behavior\n                   Care must be taken when using the Q15 and Q31 versions of the LMS filter.\n                   The following issues must be considered:\n                   - Scaling of coefficients\n                   - Overflow and saturation\n\n  @par           Scaling of Coefficients\n                   Filter coefficients are represented as fractional values and\n                   coefficients are restricted to lie in the range <code>[-1 +1)</code>.\n                   The fixed-point functions have an additional scaling parameter <code>postShift</code>.\n                   At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.\n                   This essentially scales the filter coefficients by <code>2^postShift</code> and\n                   allows the filter coefficients to exceed the range <code>[+1 -1)</code>.\n                   The value of <code>postShift</code> is set by the user based on the expected gain through the system being modeled.\n\n  @par           Overflow and Saturation\n                   Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are\n                   described separately as part of the function specific documentation below.\n */\n\n/**\n  @addtogroup LMS\n  @{\n */\n\n/**\n  @brief         Processing function for floating-point LMS filter.\n  @param[in]     S          points to an instance of the floating-point LMS filter structure\n  @param[in]     pSrc       points to the block of input data\n  @param[in]     pRef       points to the block of reference data\n  @param[out]    pOut       points to the block of output data\n  @param[out]    pErr       points to the block of error data\n  @param[in]     blockSize  number of samples to process\n  @return        none\n */\n#if defined(ARM_MATH_NEON)\nvoid arm_lms_f32(\n  const arm_lms_instance_f32 * S,\n  const float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize)\n{\n  float32_t *pState = S->pState;                 /* State pointer */\n  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n  float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n  float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */\n  float32_t mu = S->mu;                          /* Adaptive factor */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  uint32_t tapCnt, blkCnt;                       /* Loop counters */\n  float32_t sum, e, d;                           /* accumulator, error, reference data sample */\n  float32_t w = 0.0f;                            /* weight factor */\n\n  float32x4_t tempV, sumV, xV, bV;\n  float32x2_t tempV2;\n\n  e = 0.0f;\n  d = 0.0f;\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = (pCoeffs);\n\n    /* Set the accumulator to zero */\n    sum = 0.0f;\n    sumV = vdupq_n_f32(0.0);\n\n    /* Process 4 taps at a time. */\n    tapCnt = numTaps >> 2;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      xV = vld1q_f32(px);\n      bV = vld1q_f32(pb);\n      sumV = vmlaq_f32(sumV, xV, bV);\n\n      px += 4; \n      pb += 4;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n    tempV2 = vpadd_f32(vget_low_f32(sumV),vget_high_f32(sumV));\n    sum = tempV2[0] + tempV2[1];\n\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += (*px++) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* The result in the accumulator, store in the destination buffer. */\n    *pOut++ = sum;\n\n    /* Compute and store error */\n    d = (float32_t) (*pRef++);\n    e = d - sum;\n    *pErr++ = e;\n\n    /* Calculation of Weighting factor for the updating filter coefficients */\n    w = e * mu;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = (pCoeffs);\n\n    /* Process 4 taps at a time. */\n    tapCnt = numTaps >> 2;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      xV = vld1q_f32(px);\n      bV = vld1q_f32(pb);\n      px += 4;\n      bV = vmlaq_n_f32(bV,xV,w);\n\n      vst1q_f32(pb,bV); \n      pb += 4;\n\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      *pb = *pb + (w * (*px++));\n      pb++;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the\n     satrt of the state buffer. This prepares the state buffer for the\n     next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* Process 4 taps at a time for (numTaps - 1U) samples copy */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    tempV = vld1q_f32(pState);\n    vst1q_f32(pStateCurnt,tempV); \n    pState += 4;\n    pStateCurnt += 4;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n  /* Copy the remaining q31_t data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n\n}\n#else\nvoid arm_lms_f32(\n  const arm_lms_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pRef,\n        float32_t * pOut,\n        float32_t * pErr,\n        uint32_t blockSize)\n{       \n        float32_t *pState = S->pState;                 /* State pointer */\n        float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n        float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */\n        float32_t mu = S->mu;                          /* Adaptive factor */\n        float32_t acc, e;                              /* Accumulator, error */\n        float32_t w;                                   /* Weight factor */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n\n  /* Initializations of error,  difference, Coefficient update */\n  e = 0.0f;\n  w = 0.0f;\n\n  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Set the accumulator to zero */\n    acc = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (*px++) * (*pb++);\n\n      acc += (*px++) * (*pb++);\n\n      acc += (*px++) * (*pb++);\n\n      acc += (*px++) * (*pb++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (*px++) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = acc;\n\n    /* Compute and store error */\n    e = (float32_t) *pRef++ - acc;\n    *pErr++ = e;\n\n    /* Calculation of Weighting factor for updating filter coefficients */\n    w = e * mu;\n\n    /* Initialize pState pointer */\n    /* Advance state pointer by 1 for the next sample */\n    px = pState++;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      *pb += w * (*px++);\n      pb++;\n\n      *pb += w * (*px++);\n      pb++;\n\n      *pb += w * (*px++);\n      pb++;\n\n      *pb += w * (*px++);\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      *pb += w * (*px++);\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of samples */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of LMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_init_f32.c\n * Description:  Floating-point LMS filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup LMS\n  @{\n */\n\n/**\n  @brief         Initialization function for floating-point LMS filter.\n  @param[in]     S          points to an instance of the floating-point LMS filter structure\n  @param[in]     numTaps    number of filter coefficients\n  @param[in]     pCoeffs    points to coefficient buffer\n  @param[in]     pState     points to state buffer\n  @param[in]     mu         step size that controls filter coefficient updates\n  @param[in]     blockSize  number of samples to process\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   The initial filter coefficients serve as a starting point for the adaptive filter.\n                   <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_lms_f32()</code>.\n */\n\nvoid arm_lms_init_f32(\n  arm_lms_instance_f32 * S,\n  uint16_t numTaps,\n  float32_t * pCoeffs,\n  float32_t * pState,\n  float32_t mu,\n  uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numTaps */\n  memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n\n  /* Assign Step size value */\n  S->mu = mu;\n}\n\n/**\n  @} end of LMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_init_q15.c\n * Description:  Q15 LMS filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup LMS\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 LMS filter.\n  @param[in]     S          points to an instance of the Q15 LMS filter structure.\n  @param[in]     numTaps    number of filter coefficients.\n  @param[in]     pCoeffs    points to coefficient buffer.\n  @param[in]     pState     points to state buffer.\n  @param[in]     mu         step size that controls filter coefficient updates.\n  @param[in]     blockSize  number of samples to process.\n  @param[in]     postShift  bit shift applied to coefficients.\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   The initial filter coefficients serve as a starting point for the adaptive filter.\n                   <code>pState</code> points to the array of state variables and size of array is\n                   <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of\n                   input samples processed by each call to <code>arm_lms_q15()</code>.\n */\n\nvoid arm_lms_init_q15(\n  arm_lms_instance_q15 * S,\n  uint16_t numTaps,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  q15_t mu,\n  uint32_t blockSize,\n  uint32_t postShift)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numTaps - 1 */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n\n  /* Assign Step size value */\n  S->mu = mu;\n\n  /* Assign postShift value to be applied */\n  S->postShift = postShift;\n}\n\n/**\n  @} end of LMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_init_q31.c\n * Description:  Q31 LMS filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup LMS\n  @{\n */\n\n/**\n  @brief         Initialization function for Q31 LMS filter.\n  @param[in]     S          points to an instance of the Q31 LMS filter structure\n  @param[in]     numTaps    number of filter coefficients\n  @param[in]     pCoeffs    points to coefficient buffer\n  @param[in]     pState     points to state buffer\n  @param[in]     mu         step size that controls filter coefficient updates\n  @param[in]     blockSize  number of samples to process\n  @param[in]     postShift  bit shift applied to coefficients\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   The initial filter coefficients serve as a starting point for the adaptive filter.\n                   <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples,\n                   where <code>blockSize</code> is the number of input samples processed by each call to\n                   <code>arm_lms_q31()</code>.\n */\n\nvoid arm_lms_init_q31(\n  arm_lms_instance_q31 * S,\n  uint16_t numTaps,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  q31_t mu,\n  uint32_t blockSize,\n  uint32_t postShift)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numTaps - 1 */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q31_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n\n  /* Assign Step size value */\n  S->mu = mu;\n\n  /* Assign postShift value to be applied */\n  S->postShift = postShift;\n}\n\n/**\n  @} end of LMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_norm_f32.c\n * Description:  Processing function for the floating-point NLMS filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @defgroup LMS_NORM Normalized LMS Filters\n\n  This set of functions implements a commonly used adaptive filter.\n  It is related to the Least Mean Square (LMS) adaptive filter and includes an additional normalization\n  factor which increases the adaptation rate of the filter.\n  The CMSIS DSP Library contains normalized LMS filter functions that operate on Q15, Q31, and floating-point data types.\n\n  A normalized least mean square (NLMS) filter consists of two components as shown below.\n  The first component is a standard transversal or FIR filter.\n  The second component is a coefficient update mechanism.\n  The NLMS filter has two input signals.\n  The \"input\" feeds the FIR filter while the \"reference input\" corresponds to the desired output of the FIR filter.\n  That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input.\n  The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input.\n  This \"error signal\" tends towards zero as the filter adapts.\n  The NLMS processing functions accept the input and reference input signals and generate the filter output and error signal.\n  \\image html LMS.gif \"Internal structure of the NLMS adaptive filter\"\n\n  The functions operate on blocks of data and each call to the function processes\n  <code>blockSize</code> samples through the filter.\n  <code>pSrc</code> points to input signal, <code>pRef</code> points to reference signal,\n  <code>pOut</code> points to output signal and <code>pErr</code> points to error signal.\n  All arrays contain <code>blockSize</code> values.\n\n  The functions operate on a block-by-block basis.\n  Internally, the filter coefficients <code>b[n]</code> are updated on a sample-by-sample basis.\n  The convergence of the LMS filter is slower compared to the normalized LMS algorithm.\n\n @par            Algorithm\n                   The output signal <code>y[n]</code> is computed by a standard FIR filter:\n  <pre>\n      y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]\n  </pre>\n\n @par\n                   The error signal equals the difference between the reference signal <code>d[n]</code> and the filter output:\n  <pre>\n      e[n] = d[n] - y[n].\n  </pre>\n\n @par\n                   After each sample of the error signal is computed the instanteous energy of the filter state variables is calculated:\n  <pre>\n     E = x[n]^2 + x[n-1]^2 + ... + x[n-numTaps+1]^2.\n  </pre>\n                   The filter coefficients <code>b[k]</code> are then updated on a sample-by-sample basis:\n  <pre>\n      b[k] = b[k] + e[n] * (mu/E) * x[n-k],  for k=0, 1, ..., numTaps-1\n  </pre>\n                   where <code>mu</code> is the step size and controls the rate of coefficient convergence.\n @par\n                   In the APIs, <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.\n                   Coefficients are stored in time reversed order.\n @par\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n @par\n                   <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.\n                   Samples in the state buffer are stored in the order:\n @par\n  <pre>\n     {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}\n  </pre>\n @par\n                   Note that the length of the state buffer exceeds the length of the coefficient array by <code>blockSize-1</code> samples.\n                   The increased state buffer length allows circular addressing, which is traditionally used in FIR filters,\n                   to be avoided and yields a significant speed improvement.\n                   The state variables are updated after each block of data is processed.\n\n @par            Instance Structure\n                   The coefficients and state variables for a filter are stored together in an instance data structure.\n                   A separate instance structure must be defined for each filter and\n                   coefficient and state arrays cannot be shared among instances.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n\n @par            Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Zeros out the values in the state buffer.\n                   To do this manually without calling the init function, assign the follow subfields of the instance structure:\n                   numTaps, pCoeffs, mu, energy, x0, pState. Also set all of the values in pState to zero.\n                   For Q7, Q15, and Q31 the following fields must also be initialized;\n                   recipTable, postShift\n @par\n                   Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.\n @par            Fixed-Point Behavior\n                   Care must be taken when using the Q15 and Q31 versions of the normalised LMS filter.\n                   The following issues must be considered:\n                   - Scaling of coefficients\n                   - Overflow and saturation\n\n @par            Scaling of Coefficients\n                   Filter coefficients are represented as fractional values and\n                   coefficients are restricted to lie in the range <code>[-1 +1)</code>.\n                   The fixed-point functions have an additional scaling parameter <code>postShift</code>.\n                   At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.\n                   This essentially scales the filter coefficients by <code>2^postShift</code> and\n                   allows the filter coefficients to exceed the range <code>[+1 -1)</code>.\n                   The value of <code>postShift</code> is set by the user based on the expected gain through the system being modeled.\n\n @par            Overflow and Saturation\n                   Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are\n                   described separately as part of the function specific documentation below.\n */\n\n/**\n  @addtogroup LMS_NORM\n  @{\n */\n\n/**\n  @brief         Processing function for floating-point normalized LMS filter.\n  @param[in]     S         points to an instance of the floating-point normalized LMS filter structure\n  @param[in]     pSrc      points to the block of input data\n  @param[in]     pRef      points to the block of reference data\n  @param[out]    pOut      points to the block of output data\n  @param[out]    pErr      points to the block of error data\n  @param[in]     blockSize number of samples to process\n  @return        none\n */\n\n#if defined(ARM_MATH_NEON)\nvoid arm_lms_norm_f32(\n  arm_lms_norm_instance_f32 * S,\n  const float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize)\n{\n  float32_t *pState = S->pState;                 /* State pointer */\n  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n  float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n  float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */\n  float32_t mu = S->mu;                          /* Adaptive factor */\n  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n  uint32_t tapCnt, blkCnt;                       /* Loop counters */\n  float32_t energy;                              /* Energy of the input */\n  float32_t sum, e, d;                           /* accumulator, error, reference data sample */\n  float32_t w, x0, in;                           /* weight factor, temporary variable to hold input sample and state */\n\n  float32x4_t tempV, sumV, xV, bV;\n  float32x2_t tempV2;\n\n  /* Initializations of error,  difference, Coefficient update */\n  e = 0.0f;\n  d = 0.0f;\n  w = 0.0f;\n\n  energy = S->energy;\n  x0 = S->x0;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  /* Loop over blockSize number of values */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = (pCoeffs);\n\n    /* Read the sample from input buffer */\n    in = *pSrc++;\n\n    /* Update the energy calculation */\n    energy -= x0 * x0;\n    energy += in * in;\n\n    /* Set the accumulator to zero */\n    sum = 0.0f;\n    sumV = vdupq_n_f32(0.0);\n\n    /* Process 4 taps at a time. */\n    tapCnt = numTaps >> 2;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      xV = vld1q_f32(px);\n      bV = vld1q_f32(pb);\n      sumV = vmlaq_f32(sumV, xV, bV);\n\n      px += 4; \n      pb += 4;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n    tempV2 = vpadd_f32(vget_low_f32(sumV),vget_high_f32(sumV));\n    sum = tempV2[0] + tempV2[1];\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      sum += (*px++) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* The result in the accumulator, store in the destination buffer. */\n    *pOut++ = sum;\n\n    /* Compute and store error */\n    d = (float32_t) (*pRef++);\n    e = d - sum;\n    *pErr++ = e;\n\n    /* Calculation of Weighting factor for updating filter coefficients */\n    /* epsilon value 0.000000119209289f */\n    w = (e * mu) / (energy + 0.000000119209289f);\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coeff pointer */\n    pb = (pCoeffs);\n\n    /* Process 4 taps at a time. */\n    tapCnt = numTaps >> 2;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      xV = vld1q_f32(px);\n      bV = vld1q_f32(pb);\n      px += 4;\n      bV = vmlaq_n_f32(bV,xV,w);\n\n      vst1q_f32(pb,bV); \n      pb += 4;\n\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* If the filter length is not a multiple of 4, compute the remaining filter taps */\n    tapCnt = numTaps % 0x4U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      *pb += w * (*px++);\n      pb++;\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    x0 = *pState;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  S->energy = energy;\n  S->x0 = x0;\n\n  /* Processing is complete. Now copy the last numTaps - 1 samples to the\n     satrt of the state buffer. This prepares the state buffer for the\n     next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* Process 4 taps at a time for (numTaps - 1U)/4 samples copy */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  /* copy data */\n  while (tapCnt > 0U)\n  {\n    tempV = vld1q_f32(pState);\n    vst1q_f32(pStateCurnt,tempV); \n    pState += 4;\n    pStateCurnt += 4;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n  /* Calculate remaining number of copies */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n  /* Copy the remaining q31_t data */\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement the loop counter */\n    tapCnt--;\n  }\n\n}\n#else\nvoid arm_lms_norm_f32(\n        arm_lms_norm_instance_f32 * S,\n  const float32_t * pSrc,\n        float32_t * pRef,\n        float32_t * pOut,\n        float32_t * pErr,\n        uint32_t blockSize)\n{\n        float32_t *pState = S->pState;                 /* State pointer */\n        float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */\n        float32_t *pStateCurnt;                        /* Points to the current sample of the state */\n        float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */\n        float32_t mu = S->mu;                          /* Adaptive factor */\n        float32_t acc, e;                              /* Accumulator, error */\n        float32_t w;                                   /* Weight factor */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n        float32_t energy;                              /* Energy of the input */\n        float32_t x0, in;                              /* Temporary variable to hold input sample and state */\n\n  /* Initializations of error,  difference, Coefficient update */\n  e = 0.0f;\n  w = 0.0f;\n\n  energy = S->energy;\n  x0 = S->x0;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Read the sample from input buffer */\n    in = *pSrc++;\n\n    /* Update the energy calculation */\n    energy -= x0 * x0;\n    energy += in * in;\n\n    /* Set the accumulator to zero */\n    acc = 0.0f;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (*px++) * (*pb++);\n\n      acc += (*px++) * (*pb++);\n\n      acc += (*px++) * (*pb++);\n\n      acc += (*px++) * (*pb++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (*px++) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = acc;\n\n    /* Compute and store error */\n    e = (float32_t) *pRef++ - acc;\n    *pErr++ = e;\n\n    /* Calculation of Weighting factor for updating filter coefficients */\n    /* epsilon value 0.000000119209289f */\n    w = (e * mu) / (energy + 0.000000119209289f);\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      *pb += w * (*px++);\n      pb++;\n\n      *pb += w * (*px++);\n      pb++;\n\n      *pb += w * (*px++);\n      pb++;\n\n      *pb += w * (*px++);\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      *pb += w * (*px++);\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    x0 = *pState;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Save energy and x0 values for the next frame */\n  S->energy = energy;\n  S->x0 = x0;\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of samples */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n/**\n  @} end of LMS_NORM group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_norm_init_f32.c\n * Description:  Floating-point NLMS filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup LMS_NORM\n  @{\n */\n\n/**\n  @brief         Initialization function for floating-point normalized LMS filter.\n  @param[in]     S         points to an instance of the floating-point LMS filter structure\n  @param[in]     numTaps   number of filter coefficients\n  @param[in]     pCoeffs   points to coefficient buffer\n  @param[in]     pState    points to state buffer\n  @param[in]     mu        step size that controls filter coefficient updates\n  @param[in]     blockSize number of samples to process\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   The initial filter coefficients serve as a starting point for the adaptive filter.\n                   <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples,\n                   where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_lms_norm_f32()</code>.\n */\n\nvoid arm_lms_norm_init_f32(\n        arm_lms_norm_instance_f32 * S,\n        uint16_t numTaps,\n        float32_t * pCoeffs,\n        float32_t * pState,\n        float32_t mu,\n        uint32_t blockSize)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numTaps - 1 */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t));\n\n  /* Assign state pointer */\n  S->pState = pState;\n\n  /* Assign Step size value */\n  S->mu = mu;\n\n  /* Initialise Energy to zero */\n  S->energy = 0.0f;\n\n  /* Initialise x0 to zero */\n  S->x0 = 0.0f;\n}\n\n/**\n  @} end of LMS_NORM group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_norm_init_q15.c\n * Description:  Q15 NLMS filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @addtogroup LMS_NORM\n  @{\n */\n\n/**\n  @brief         Initialization function for Q15 normalized LMS filter.\n  @param[in]     S         points to an instance of the Q15 normalized LMS filter structure.\n  @param[in]     numTaps   number of filter coefficients.\n  @param[in]     pCoeffs   points to coefficient buffer.\n  @param[in]     pState    points to state buffer.\n  @param[in]     mu        step size that controls filter coefficient updates.\n  @param[in]     blockSize number of samples to process.\n  @param[in]     postShift bit shift applied to coefficients.\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   The initial filter coefficients serve as a starting point for the adaptive filter.\n                   <code>pState</code> points to the array of state variables and size of array is\n                   <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed\n                   by each call to <code>arm_lms_norm_q15()</code>.\n */\n\nvoid arm_lms_norm_init_q15(\n        arm_lms_norm_instance_q15 * S,\n        uint16_t numTaps,\n        q15_t * pCoeffs,\n        q15_t * pState,\n        q15_t mu,\n        uint32_t blockSize,\n        uint8_t postShift)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numTaps - 1 */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t));\n\n  /* Assign post Shift value applied to coefficients */\n  S->postShift = postShift;\n\n  /* Assign state pointer */\n  S->pState = pState;\n\n  /* Assign Step size value */\n  S->mu = mu;\n\n  /* Initialize reciprocal pointer table */\n  S->recipTable = (q15_t *) armRecipTableQ15;\n\n  /* Initialise Energy to zero */\n  S->energy = 0;\n\n  /* Initialise x0 to zero */\n  S->x0 = 0;\n}\n\n/**\n  @} end of LMS_NORM group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_norm_init_q31.c\n * Description:  Q31 NLMS filter initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @addtogroup LMS_NORM\n  @{\n */\n\n/**\n  @brief         Initialization function for Q31 normalized LMS filter.\n  @param[in]     S         points to an instance of the Q31 normalized LMS filter structure.\n  @param[in]     numTaps   number of filter coefficients.\n  @param[in]     pCoeffs   points to coefficient buffer.\n  @param[in]     pState    points to state buffer.\n  @param[in]     mu        step size that controls filter coefficient updates.\n  @param[in]     blockSize number of samples to process.\n  @param[in]     postShift bit shift applied to coefficients.\n  @return        none\n\n  @par           Details\n                   <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:\n  <pre>\n     {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}\n  </pre>\n                   The initial filter coefficients serve as a starting point for the adaptive filter.\n                   <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples,\n                   where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_lms_norm_q31()</code>.\n */\n\nvoid arm_lms_norm_init_q31(\n        arm_lms_norm_instance_q31 * S,\n        uint16_t numTaps,\n        q31_t * pCoeffs,\n        q31_t * pState,\n        q31_t mu,\n        uint32_t blockSize,\n        uint8_t postShift)\n{\n  /* Assign filter taps */\n  S->numTaps = numTaps;\n\n  /* Assign coefficient pointer */\n  S->pCoeffs = pCoeffs;\n\n  /* Clear state buffer and size is always blockSize + numTaps - 1 */\n  memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q31_t));\n\n  /* Assign post Shift value applied to coefficients */\n  S->postShift = postShift;\n\n  /* Assign state pointer */\n  S->pState = pState;\n\n  /* Assign Step size value */\n  S->mu = mu;\n\n  /* Initialize reciprocal pointer table */\n  S->recipTable = (q31_t *) armRecipTableQ31;\n\n  /* Initialise Energy to zero */\n  S->energy = 0;\n\n  /* Initialise x0 to zero */\n  S->x0 = 0;\n}\n\n/**\n  @} end of LMS_NORM group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_norm_q15.c\n * Description:  Processing function for Q15 normalized LMS filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup LMS_NORM\n  @{\n */\n\n/**\n  @brief         Processing function for Q15 normalized LMS filter.\n  @param[in]     S         points to an instance of the Q15 normalized LMS filter structure\n  @param[in]     pSrc      points to the block of input data\n  @param[in]     pRef      points to the block of reference data\n  @param[out]    pOut      points to the block of output data\n  @param[out]    pErr      points to the block of error data\n  @param[in]     blockSize number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   Both coefficients and state variables are represented in 1.15 format and\n                   multiplications yield a 2.30 result. The 2.30 intermediate results are\n                   accumulated in a 64-bit accumulator in 34.30 format.\n                   There is no risk of internal overflow with this approach and the full\n                   precision of intermediate multiplications is preserved. After all additions\n                   have been performed, the accumulator is truncated to 34.15 format by\n                   discarding low 15 bits. Lastly, the accumulator is saturated to yield a\n                   result in 1.15 format.\n @par\n  \t               In this filter, filter coefficients are updated for each sample and the\n                   updation of filter cofficients are saturted.\n */\n\nvoid arm_lms_norm_q15(\n        arm_lms_norm_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pRef,\n        q15_t * pOut,\n        q15_t * pErr,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n        q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q15_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */\n        q15_t mu = S->mu;                              /* Adaptive factor */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n        q63_t acc;                                     /* Accumulator */\n        q31_t energy;                                  /* Energy of the input */\n        q15_t e = 0, d = 0;                            /* Error, reference data sample */\n        q15_t w = 0, in;                               /* Weight factor and state */\n        q15_t x0;                                      /* Temporary variable to hold input sample */\n        q15_t errorXmu, oneByEnergy;                   /* Temporary variables to store error and mu product and reciprocal of energy */\n        q15_t postShift;                               /* Post shift to be applied to weight after reciprocal calculation */\n        q31_t coef;                                    /* Temporary variable for coefficient */\n        q31_t acc_l, acc_h;                            /* Temporary input */\n        int32_t lShift = (15 - (int32_t) S->postShift);       /*  Post shift  */\n        int32_t uShift = (32 - lShift);\n\n  energy = S->energy;\n  x0 = S->x0;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Read the sample from input buffer */\n    in = *pSrc++;\n\n    /* Update the energy calculation */\n    energy -= (((q31_t) x0 * (x0)) >> 15);\n    energy += (((q31_t) in * (in)) >> 15);\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* acc +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */\n      acc = __SMLALD(read_q15x2_ia (&px), read_q15x2_ia (&pb), acc);\n      acc = __SMLALD(read_q15x2_ia (&px), read_q15x2_ia (&pb), acc);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (q63_t) (((q31_t) (*px++) * (*pb++)));\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    /* Apply shift for lower part of acc and upper part of acc */\n    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n    /* Converting the result to 1.15 format and saturate the output */\n    acc = __SSAT(acc, 16U);\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = (q15_t) acc;\n\n    /* Compute and store error */\n    d = *pRef++;\n    e = d - (q15_t) acc;\n    *pErr++ = e;\n\n    /* Calculation of 1/energy */\n    postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, &oneByEnergy, S->recipTable);\n\n    /* Calculation of e * mu value */\n    errorXmu = (q15_t) (((q31_t) e * mu) >> 15);\n\n    /* Calculation of (e * mu) * (1/energy) value */\n    acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift));\n\n    /* Weighting factor for the normalized version */\n    w = (q15_t) __SSAT((q31_t) acc, 16);\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      coef = (q31_t) *pb + (((q31_t) w * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT(coef, 16);\n\n      coef = (q31_t) *pb + (((q31_t) w * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT(coef, 16);\n\n      coef = (q31_t) *pb + (((q31_t) w * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT(coef, 16);\n\n      coef = (q31_t) *pb + (((q31_t) w * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT(coef, 16);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      coef = (q31_t) *pb + (((q31_t) w * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT(coef, 16);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    x0 = *pState;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Save energy and x0 values for the next frame */\n  S->energy = (q15_t) energy;\n  S->x0 = x0;\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    write_q15x2_ia (&pStateCurnt, read_q15x2_ia (&pState));\n    write_q15x2_ia (&pStateCurnt, read_q15x2_ia (&pState));\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of samples */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of LMS_NORM group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_norm_q31.c\n * Description:  Processing function for the Q31 NLMS filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup LMS_NORM\n  @{\n */\n\n/**\n  @brief         Processing function for Q31 normalized LMS filter.\n  @param[in]     S         points to an instance of the Q31 normalized LMS filter structure\n  @param[in]     pSrc      points to the block of input data\n  @param[in]     pRef      points to the block of reference data\n  @param[out]    pOut      points to the block of output data\n  @param[out]    pErr      points to the block of error data\n  @param[in]     blockSize number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate\n                   multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clip.\n                   In order to avoid overflows completely the input signal must be scaled down by\n                   log2(numTaps) bits. The reference signal should not be scaled down.\n                   After all multiply-accumulates are performed, the 2.62 accumulator is shifted\n                   and saturated to 1.31 format to yield the final result.\n                   The output signal and error signal are in 1.31 format.\n @par\n  \t               In this filter, filter coefficients are updated for each sample and the\n                   updation of filter cofficients are saturted.\n */\n\nvoid arm_lms_norm_q31(\n        arm_lms_norm_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pRef,\n        q31_t * pOut,\n        q31_t * pErr,\n        uint32_t blockSize)\n{\n        q31_t *pState = S->pState;                     /* State pointer */\n        q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */\n        q31_t mu = S->mu;                              /* Adaptive factor */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n        q63_t acc;                                     /* Accumulator */\n        q63_t energy;                                  /* Energy of the input */\n        q31_t e = 0;                                   /* Error data sample */\n        q31_t w = 0, in;                               /* Weight factor and state */\n        q31_t x0;                                      /* Temporary variable to hold input sample */\n        q31_t errorXmu, oneByEnergy;                   /* Temporary variables to store error and mu product and reciprocal of energy */\n        q31_t postShift;                               /* Post shift to be applied to weight after reciprocal calculation */\n        q31_t coef;                                    /* Temporary variable for coef */\n        q31_t acc_l, acc_h;                            /* Temporary input */\n        uint32_t uShift = ((uint32_t) S->postShift + 1U);\n        uint32_t lShift = 32U - uShift;                /*  Shift to be applied to the output */\n\n  energy = S->energy;\n  x0 = S->x0;\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Read the sample from input buffer */\n    in = *pSrc++;\n\n    /* Update the energy calculation */\n    energy = (q31_t) ((((q63_t) energy << 32) - (((q63_t) x0 * x0) << 1)) >> 32);\n    energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32);\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* acc +=  b[N] * x[n-N] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* acc +=  b[N-1] * x[n-N-1] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* acc +=  b[N-2] * x[n-N-2] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* acc +=  b[N-3] * x[n-N-3] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Converting the result to 1.31 format */\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = (q31_t) acc;\n\n    /* Compute and store error */\n    e = *pRef++ - (q31_t) acc;\n    *pErr++ = e;\n\n    /* Calculates the reciprocal of energy */\n    postShift = arm_recip_q31(energy + DELTA_Q31, &oneByEnergy, &S->recipTable[0]);\n\n    /* Calculation of product of (e * mu) */\n    errorXmu = (q31_t) (((q63_t) e * mu) >> 31);\n\n    /* Weighting factor for the normalized version */\n    w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift));\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n\n      /* coef is in 2.30 format */\n      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));\n      /* get coef in 1.31 format by left shifting */\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      /* update coefficient buffer to next coefficient */\n      pb++;\n\n      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Read the sample from state buffer */\n    x0 = *pState;\n\n    /* Advance state pointer by 1 for the next sample */\n    pState = pState + 1;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Save energy and x0 values for the next frame */\n  S->energy = (q31_t) energy;\n  S->x0 = x0;\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of samples */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of LMS_NORM group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_q15.c\n * Description:  Processing function for Q15 LMS filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup LMS\n  @{\n */\n\n/**\n  @brief         Processing function for Q15 LMS filter.\n  @param[in]     S         points to an instance of the Q15 LMS filter structure\n  @param[in]     pSrc      points to the block of input data\n  @param[in]     pRef      points to the block of reference data\n  @param[out]    pOut      points to the block of output data\n  @param[out]    pErr      points to the block of error data\n  @param[in]     blockSize number of samples to process\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n                   After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\n                   Lastly, the accumulator is saturated to yield a result in 1.15 format.\n  @par\n                   In this filter, filter coefficients are updated for each sample and\n                   the updation of filter cofficients are saturted.\n */\n\nvoid arm_lms_q15(\n  const arm_lms_instance_q15 * S,\n  const q15_t * pSrc,\n        q15_t * pRef,\n        q15_t * pOut,\n        q15_t * pErr,\n        uint32_t blockSize)\n{\n        q15_t *pState = S->pState;                     /* State pointer */\n        q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q15_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q15_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */\n        q15_t mu = S->mu;                              /* Adaptive factor */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n        q63_t acc;                                     /* Accumulator */\n        q15_t e = 0;                                   /* Error of data sample */\n        q15_t alpha;                                   /* Intermediate constant for taps update */\n        q31_t coef;                                    /* Temporary variable for coefficient */\n        q31_t acc_l, acc_h;                            /* Temporary input */\n        int32_t lShift = (15 - (int32_t) S->postShift);       /*  Post shift  */\n        int32_t uShift = (32 - lShift);\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* acc +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */\n      acc = __SMLALD(read_q15x2_ia (&px), read_q15x2_ia (&pb), acc);\n      acc = __SMLALD(read_q15x2_ia (&px), read_q15x2_ia (&pb), acc);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += (q63_t) (((q31_t) (*px++) * (*pb++)));\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    /* Apply shift for lower part of acc and upper part of acc */\n    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n    /* Converting the result to 1.15 format and saturate the output */\n    acc = __SSAT(acc, 16U);\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = (q15_t) acc;\n\n    /* Compute and store error */\n    e = *pRef++ - (q15_t) acc;\n    *pErr++ = (q15_t) e;\n\n    /* Compute alpha i.e. intermediate constant for taps update */\n    alpha = (q15_t) (((q31_t) e * (mu)) >> 15);\n\n    /* Initialize pState pointer */\n    /* Advance state pointer by 1 for the next sample */\n    px = pState++;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      coef = (q31_t) *pb + (((q31_t) alpha * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT((coef), 16);\n\n      coef = (q31_t) *pb + (((q31_t) alpha * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT((coef), 16);\n\n      coef = (q31_t) *pb + (((q31_t) alpha * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT((coef), 16);\n\n      coef = (q31_t) *pb + (((q31_t) alpha * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT((coef), 16);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      coef = (q31_t) *pb + (((q31_t) alpha * (*px++)) >> 15);\n      *pb++ = (q15_t) __SSAT((coef), 16);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    write_q15x2_ia (&pStateCurnt, read_q15x2_ia (&pState));\n    write_q15x2_ia (&pStateCurnt, read_q15x2_ia (&pState));\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of samples */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of LMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_lms_q31.c\n * Description:  Processing function for the Q31 LMS filter\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupFilters\n */\n\n/**\n  @addtogroup LMS\n  @{\n */\n\n/**\n  @brief         Processing function for Q31 LMS filter.\n  @param[in]     S         points to an instance of the Q31 LMS filter structure.\n  @param[in]     pSrc      points to the block of input data.\n  @param[in]     pRef      points to the block of reference data.\n  @param[out]    pOut      points to the block of output data.\n  @param[out]    pErr      points to the block of error data.\n  @param[in]     blockSize number of samples to process.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate\n                   multiplication results but provides only a single guard bit.\n                   Thus, if the accumulator result overflows it wraps around rather than clips.\n                   In order to avoid overflows completely the input signal must be scaled down by\n                   log2(numTaps) bits.\n                   The reference signal should not be scaled down.\n                   After all multiply-accumulates are performed, the 2.62 accumulator is shifted\n                   and saturated to 1.31 format to yield the final result.\n                   The output signal and error signal are in 1.31 format.\n @par\n                   In this filter, filter coefficients are updated for each sample and\n                   the updation of filter cofficients are saturted.\n */\n\nvoid arm_lms_q31(\n  const arm_lms_instance_q31 * S,\n  const q31_t * pSrc,\n        q31_t * pRef,\n        q31_t * pOut,\n        q31_t * pErr,\n        uint32_t blockSize)\n{       \n        q31_t *pState = S->pState;                     /* State pointer */\n        q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */\n        q31_t *pStateCurnt;                            /* Points to the current sample of the state */\n        q31_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */\n        q31_t mu = S->mu;                              /* Adaptive factor */\n        uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */\n        uint32_t tapCnt, blkCnt;                       /* Loop counters */\n        q63_t acc;                                     /* Accumulator */\n        q31_t e = 0;                                   /* Error of data sample */\n        q31_t alpha;                                   /* Intermediate constant for taps update */\n        q31_t coef;                                    /* Temporary variable for coef */\n        q31_t acc_l, acc_h;                            /* Temporary input */\n        uint32_t uShift = ((uint32_t) S->postShift + 1U);\n        uint32_t lShift = 32U - uShift;                /*  Shift to be applied to the output */\n\n  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */\n  /* pStateCurnt points to the location where the new input data should be written */\n  pStateCurnt = &(S->pState[(numTaps - 1U)]);\n\n  /* initialise loop count */\n  blkCnt = blockSize;\n\n  while (blkCnt > 0U)\n  {\n    /* Copy the new input sample into the state buffer */\n    *pStateCurnt++ = *pSrc++;\n\n    /* Initialize pState pointer */\n    px = pState;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n    /* Set the accumulator to zero */\n    acc = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      /* acc +=  b[N] * x[n-N] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* acc +=  b[N-1] * x[n-N-1] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* acc +=  b[N-2] * x[n-N-2] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* acc +=  b[N-3] * x[n-N-3] */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      acc += ((q63_t) (*px++)) * (*pb++);\n\n      /* Decrement the loop counter */\n      tapCnt--;\n    }\n\n    /* Converting the result to 1.31 format */\n    /* Calc lower part of acc */\n    acc_l = acc & 0xffffffff;\n\n    /* Calc upper part of acc */\n    acc_h = (acc >> 32) & 0xffffffff;\n\n    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;\n\n    /* Store the result from accumulator into the destination buffer. */\n    *pOut++ = (q31_t) acc;\n\n    /* Compute and store error */\n    e = *pRef++ - (q31_t) acc;\n    *pErr++ = e;\n\n    /* Compute alpha i.e. intermediate constant for taps update */\n    alpha = (q31_t) (((q63_t) e * mu) >> 31);\n\n    /* Initialize pState pointer */\n    /* Advance state pointer by 1 for the next sample */\n    px = pState++;\n\n    /* Initialize coefficient pointer */\n    pb = pCoeffs;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 taps at a time. */\n    tapCnt = numTaps >> 2U;\n\n    /* Update filter coefficients */\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n\n      /* coef is in 2.30 format */\n      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));\n      /* get coef in 1.31 format by left shifting */\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      /* update coefficient buffer to next coefficient */\n      pb++;\n\n      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining taps */\n    tapCnt = numTaps % 0x4U;\n\n#else\n\n    /* Initialize tapCnt with number of samples */\n    tapCnt = numTaps;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (tapCnt > 0U)\n    {\n      /* Perform the multiply-accumulate */\n      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));\n      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U));\n      pb++;\n\n      /* Decrement loop counter */\n      tapCnt--;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Processing is complete.\n     Now copy the last numTaps - 1 samples to the start of the state buffer.\n     This prepares the state buffer for the next function call. */\n\n  /* Points to the start of the pState buffer */\n  pStateCurnt = S->pState;\n\n  /* copy data */\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 taps at a time. */\n  tapCnt = (numTaps - 1U) >> 2U;\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining taps */\n  tapCnt = (numTaps - 1U) % 0x4U;\n\n#else\n\n  /* Initialize tapCnt with number of samples */\n  tapCnt = (numTaps - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (tapCnt > 0U)\n  {\n    *pStateCurnt++ = *pState++;\n\n    /* Decrement loop counter */\n    tapCnt--;\n  }\n\n}\n\n/**\n  @} end of LMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPMatrix)\n\n\nfile(GLOB SRC \"./*_*.c\")\n\nadd_library(CMSISDSPMatrix STATIC ${SRC})\n\nconfigdsp(CMSISDSPMatrix ..)\n\n### Includes\ntarget_include_directories(CMSISDSPMatrix PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/MatrixFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        MatrixFunctions.c\n * Description:  Combination of all matrix function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_mat_add_f32.c\"\n#include \"arm_mat_add_q15.c\"\n#include \"arm_mat_add_q31.c\"\n#include \"arm_mat_cmplx_mult_f32.c\"\n#include \"arm_mat_cmplx_mult_q15.c\"\n#include \"arm_mat_cmplx_mult_q31.c\"\n#include \"arm_mat_init_f32.c\"\n#include \"arm_mat_init_q15.c\"\n#include \"arm_mat_init_q31.c\"\n#include \"arm_mat_inverse_f32.c\"\n#include \"arm_mat_inverse_f64.c\"\n#include \"arm_mat_mult_f32.c\"\n#include \"arm_mat_mult_fast_q15.c\"\n#include \"arm_mat_mult_fast_q31.c\"\n#include \"arm_mat_mult_q15.c\"\n#include \"arm_mat_mult_q31.c\"\n#include \"arm_mat_scale_f32.c\"\n#include \"arm_mat_scale_q15.c\"\n#include \"arm_mat_scale_q31.c\"\n#include \"arm_mat_sub_f32.c\"\n#include \"arm_mat_sub_q15.c\"\n#include \"arm_mat_sub_q31.c\"\n#include \"arm_mat_trans_f32.c\"\n#include \"arm_mat_trans_q15.c\"\n#include \"arm_mat_trans_q31.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_add_f32.c\n * Description:  Floating-point matrix addition\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup MatrixAdd Matrix Addition\n\n  Adds two matrices.\n  \\image html MatrixAddition.gif \"Addition of two 3 x 3 matrices\"\n\n  The functions check to make sure that\n  <code>pSrcA</code>, <code>pSrcB</code>, and <code>pDst</code> have the same\n  number of rows and columns.\n */\n\n/**\n  @addtogroup MatrixAdd\n  @{\n */\n\n\n/**\n  @brief         Floating-point matrix addition.\n  @param[in]     pSrcA      points to first input matrix structure\n  @param[in]     pSrcB      points to second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n */\n#if defined(ARM_MATH_NEON)\n/*\n\nNeon version is assuming the matrix is small enough.\nSo no blocking is used for taking into account cache effects.\nFor big matrix, there exist better libraries for Neon.\n\n*/\narm_status arm_mat_add_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A  */\n  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B  */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer   */\n\n  float32_t inA1, inA2, inB1, inB2, out1, out2;  /* temporary variables */\n\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n  uint32_t blkCnt;                               /* loop counters */\n  arm_status status;                             /* status of matrix addition */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n     (pSrcA->numCols != pSrcB->numCols) ||\n     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif\n  {\n    float32x4_t vec1;\n    float32x4_t vec2;\n    float32x4_t res;\n\n    /* Total number of samples in the input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n    blkCnt = numSamples >> 2U;\n\n    /* Compute 4 outputs at a time.\n     ** a second loop below computes the remaining 1 to 3 samples. */\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n      /* Add and then store the results in the destination buffer. */\n      vec1 = vld1q_f32(pIn1);\n      vec2 = vld1q_f32(pIn2);\n      res = vaddq_f32(vec1, vec2);\n      vst1q_f32(pOut, res);\n\n      /* update pointers to process next samples */\n      pIn1 += 4U;\n      pIn2 += 4U;\n      pOut += 4U;\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = numSamples % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n      /* Add and then store the results in the destination buffer. */\n      *pOut++ = (*pIn1++) + (*pIn2++);\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#else\narm_status arm_mat_add_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pInA = pSrcA->pData;                /* input data matrix pointer A */\n  float32_t *pInB = pSrcB->pData;                /* input data matrix pointer B */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n\n  uint32_t numSamples;                           /* total number of elements in the matrix */\n  uint32_t blkCnt;                               /* loop counters */\n  arm_status status;                             /* status of matrix addition */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n      (pSrcA->numCols != pSrcB->numCols) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcA->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n\n      /* Add and store result in destination buffer. */\n      *pOut++ = *pInA++ + *pInB++;\n\n      *pOut++ = *pInA++ + *pInB++;\n\n      *pOut++ = *pInA++ + *pInB++;\n\n      *pOut++ = *pInA++ + *pInB++;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n\n      /* Add and store result in destination buffer. */\n      *pOut++ = *pInA++ + *pInB++;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of MatrixAdd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_add_q15.c\n * Description:  Q15 matrix addition\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixAdd\n  @{\n */\n\n/**\n  @brief         Q15 matrix addition.\n  @param[in]     pSrcA      points to first input matrix structure\n  @param[in]     pSrcB      points to second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\narm_status arm_mat_add_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst)\n{\n        q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A */\n        q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B */\n        q15_t *pOut = pDst->pData;                     /* output data matrix pointer */\n        \n        uint32_t numSamples;                           /* total number of elements in the matrix */\n        uint32_t blkCnt;                               /* loop counters */\n        arm_status status;                             /* status of matrix addition */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n      (pSrcA->numCols != pSrcB->numCols) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcA->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n\n      /* Add, saturate and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n      write_q15x2_ia (&pOut, __QADD16(read_q15x2_ia (&pInA), read_q15x2_ia (&pInB)));\n\n      write_q15x2_ia (&pOut, __QADD16(read_q15x2_ia (&pInA), read_q15x2_ia (&pInB)));\n#else\n      *pOut++ = (q15_t) __SSAT(((q31_t) *pInA++ + *pInB++), 16);\n\n      *pOut++ = (q15_t) __SSAT(((q31_t) *pInA++ + *pInB++), 16);\n\n      *pOut++ = (q15_t) __SSAT(((q31_t) *pInA++ + *pInB++), 16);\n\n      *pOut++ = (q15_t) __SSAT(((q31_t) *pInA++ + *pInB++), 16);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n\n      /* Add, saturate and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n      *pOut++ = (q15_t) __QADD16(*pInA++, *pInB++);\n#else\n      *pOut++ = (q15_t) __SSAT(((q31_t) *pInA++ + *pInB++), 16);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixAdd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_add_q31.c\n * Description:  Q31 matrix addition\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixAdd\n  @{\n */\n\n/**\n  @brief         Q31 matrix addition.\n  @param[in]     pSrcA      points to first input matrix structure\n  @param[in]     pSrcB      points to second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.\n */\n\narm_status arm_mat_add_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst)\n{\n  q31_t *pInA = pSrcA->pData;                    /* input data matrix pointer A */\n  q31_t *pInB = pSrcB->pData;                    /* input data matrix pointer B */\n  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */\n\n  uint32_t numSamples;                           /* total number of elements in the matrix */\n  uint32_t blkCnt;                               /* loop counters */\n  arm_status status;                             /* status of matrix addition */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n      (pSrcA->numCols != pSrcB->numCols) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcA->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n\n      /* Add, saturate and store result in destination buffer. */\n      *pOut++ = __QADD(*pInA++, *pInB++);\n\n      *pOut++ = __QADD(*pInA++, *pInB++);\n\n      *pOut++ = __QADD(*pInA++, *pInB++);\n\n      *pOut++ = __QADD(*pInA++, *pInB++);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) + B(m,n) */\n\n      /* Add, saturate and store result in destination buffer. */\n      *pOut++ = __QADD(*pInA++, *pInB++);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixAdd group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_cmplx_mult_f32.c\n * Description:  Floating-point matrix multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup CmplxMatrixMult  Complex Matrix Multiplication\n\n  Complex Matrix multiplication is only defined if the number of columns of the\n  first matrix equals the number of rows of the second matrix.\n  Multiplying an <code>M x N</code> matrix with an <code>N x P</code> matrix results\n  in an <code>M x P</code> matrix.\n  @par\n  When matrix size checking is enabled, the functions check:\n   - that the inner dimensions of <code>pSrcA</code> and <code>pSrcB</code> are equal;\n   - that the size of the output matrix equals the outer dimensions of <code>pSrcA</code> and <code>pSrcB</code>.\n */\n\n\n/**\n  @addtogroup CmplxMatrixMult\n  @{\n */\n\n/**\n  @brief         Floating-point Complex matrix multiplication.\n  @param[in]     pSrcA      points to first input complex matrix structure\n  @param[in]     pSrcB      points to second input complex matrix structure\n  @param[out]    pDst       points to output complex matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n */\n#if defined(ARM_MATH_NEON)\narm_status arm_mat_cmplx_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A */\n  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B */\n  float32_t *pInA = pSrcA->pData;                /* input data matrix pointer A  */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  float32_t *px;                                 /* Temporary output data matrix pointer */\n  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A */\n  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */\n  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */\n  float32_t sumReal1, sumImag1;                  /* accumulator */\n  float32_t a0, b0, c0, d0;\n  float32_t a1, a1B,b1, b1B, c1, d1;\n  float32_t sumReal2, sumImag2;                  /* accumulator */\n\n\n  float32x4x2_t a0V, a1V;\n  float32x4_t accR0,accI0, accR1,accI1,tempR, tempI;\n  float32x2_t accum = vdup_n_f32(0);\n  float32_t *pIn1B = pSrcA->pData;    \n\n  uint16_t col, i = 0U, j, rowCnt, row = numRowsA, colCnt;      /* loop counters */\n  arm_status status;                             /* status of matrix multiplication */\n  float32_t sumReal1B, sumImag1B; \n  float32_t sumReal2B, sumImag2B; \n  float32_t *pxB;  \n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))\n  {\n\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */\n\n  {\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n\n    rowCnt = row >> 1;\n\n    /* Row loop */\n    while (rowCnt > 0U)\n    {\n      /* Output pointer is set to starting address of the row being processed */\n      px = pOut + 2 * i;\n      pxB = px + 2 * numColsB;\n\n      /* For every row wise process, the column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, the pIn2 pointer is set\n       ** to the starting address of the pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      j = 0U;\n\n      /* Column loop */\n      while (col > 0U)\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sumReal1 = 0.0f;\n        sumImag1 = 0.0f;\n        sumReal1B = 0.0f;\n        sumImag1B = 0.0f;\n\n        sumReal2 = 0.0f;\n        sumImag2 = 0.0f;\n        sumReal2B = 0.0f;\n        sumImag2B = 0.0f;\n\n        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */\n        pIn1 = pInA;\n        pIn1B = pIn1 + 2*numColsA;\n\n        accR0 = vdupq_n_f32(0.0);\n        accI0 = vdupq_n_f32(0.0);\n        accR1 = vdupq_n_f32(0.0);\n        accI1 = vdupq_n_f32(0.0);\n\n        /* Compute 4 MACs simultaneously. */\n        colCnt = numColsA >> 2;\n\n        /* Matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* Reading real part of complex matrix A */\n          a0V = vld2q_f32(pIn1);  // load & separate real/imag pSrcA (de-interleave 2)\n          a1V = vld2q_f32(pIn1B);  // load & separate real/imag pSrcA (de-interleave 2)\n\n          pIn1 += 8;\n          pIn1B += 8;\n\n          tempR[0] = *pIn2;\n          tempI[0] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          tempR[1] = *pIn2;\n          tempI[1] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          tempR[2] = *pIn2;\n          tempI[2] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          tempR[3] = *pIn2;\n          tempI[3] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          accR0 = vmlaq_f32(accR0,a0V.val[0],tempR);\n          accR0 = vmlsq_f32(accR0,a0V.val[1],tempI);\n\n          accI0 = vmlaq_f32(accI0,a0V.val[1],tempR);\n          accI0 = vmlaq_f32(accI0,a0V.val[0],tempI);\n\n          accR1 = vmlaq_f32(accR1,a1V.val[0],tempR);\n          accR1 = vmlsq_f32(accR1,a1V.val[1],tempI);\n\n          accI1 = vmlaq_f32(accI1,a1V.val[1],tempR);\n          accI1 = vmlaq_f32(accI1,a1V.val[0],tempI);\n\n          /* Decrement the loop count */\n          colCnt--;\n        }\n\n        accum = vpadd_f32(vget_low_f32(accR0), vget_high_f32(accR0));\n        sumReal1 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(accI0), vget_high_f32(accI0));\n        sumImag1 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(accR1), vget_high_f32(accR1));\n        sumReal1B += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(accI1), vget_high_f32(accI1));\n        sumImag1B += accum[0] + accum[1];\n\n        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        colCnt = numColsA & 3;\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1)*b(1,1) + a(1,2)*b(2,1) + ... + a(m,p)*b(p,n) */\n          a1 = *pIn1;\n          a1B = *pIn1B;\n\n          c1 = *pIn2;\n\n          b1 = *(pIn1 + 1U);\n          b1B = *(pIn1B + 1U);\n\n          d1 = *(pIn2 + 1U);\n\n          sumReal1 += a1 * c1;\n          sumImag1 += b1 * c1;\n\n          sumReal1B += a1B * c1;\n          sumImag1B += b1B * c1;\n\n          pIn1 += 2U;\n          pIn1B += 2U;\n          pIn2 += 2 * numColsB;\n\n          sumReal2 -= b1 * d1;\n          sumImag2 += a1 * d1;\n\n          sumReal2B -= b1B * d1;\n          sumImag2B += a1B * d1;\n\n          /* Decrement the loop counter */\n          colCnt--;\n        }\n\n        sumReal1 += sumReal2;\n        sumImag1 += sumImag2;\n\n        sumReal1B += sumReal2B;\n        sumImag1B += sumImag2B;\n\n        /* Store the result in the destination buffer */\n        *px++ = sumReal1;\n        *px++ = sumImag1;\n        *pxB++ = sumReal1B;\n        *pxB++ = sumImag1B;\n\n        /* Update the pointer pIn2 to point to the  starting address of the next column */\n        j++;\n        pIn2 = pSrcB->pData + 2U * j;\n\n        /* Decrement the column loop counter */\n        col--;\n      } \n\n      /* Update the pointer pInA to point to the  starting address of the next 2 row */\n      i = i + 2*numColsB;\n      pInA = pInA + 4 * numColsA;\n\n      /* Decrement the row loop counter */\n      rowCnt--;\n    }\n\n    rowCnt = row & 1;\n    while (rowCnt > 0U)\n    {\n      /* Output pointer is set to starting address of the row being processed */\n      px = pOut + 2 * i;\n\n      /* For every row wise process, the column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, the pIn2 pointer is set\n       ** to the starting address of the pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      j = 0U;\n\n      /* Column loop */\n      while (col > 0U)\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sumReal1 = 0.0f;\n        sumImag1 = 0.0f;\n\n        sumReal2 = 0.0f;\n        sumImag2 = 0.0f;\n\n        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */\n        pIn1 = pInA;\n\n        accR0 = vdupq_n_f32(0.0);\n        accI0 = vdupq_n_f32(0.0);\n\n        /* Compute 4 MACs simultaneously. */\n        colCnt = numColsA >> 2;\n\n        /* Matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* Reading real part of complex matrix A */\n          a0V = vld2q_f32(pIn1);  // load & separate real/imag pSrcA (de-interleave 2)\n          pIn1 += 8;\n\n          tempR[0] = *pIn2;\n          tempI[0] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          tempR[1] = *pIn2;\n          tempI[1] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          tempR[2] = *pIn2;\n          tempI[2] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          tempR[3] = *pIn2;\n          tempI[3] = *(pIn2 + 1U);\n          pIn2 += 2 * numColsB;\n\n          accR0 = vmlaq_f32(accR0,a0V.val[0],tempR);\n          accR0 = vmlsq_f32(accR0,a0V.val[1],tempI);\n\n          accI0 = vmlaq_f32(accI0,a0V.val[1],tempR);\n          accI0 = vmlaq_f32(accI0,a0V.val[0],tempI);\n\n          /* Decrement the loop count */\n          colCnt--;\n        }\n\n        accum = vpadd_f32(vget_low_f32(accR0), vget_high_f32(accR0));\n        sumReal1 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(accI0), vget_high_f32(accI0));\n        sumImag1 += accum[0] + accum[1];\n\n        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        colCnt = numColsA & 3;\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1)*b(1,1) + a(1,2)*b(2,1) + ... + a(m,p)*b(p,n) */\n          a1 = *pIn1;\n          c1 = *pIn2;\n\n          b1 = *(pIn1 + 1U);\n          d1 = *(pIn2 + 1U);\n\n          sumReal1 += a1 * c1;\n          sumImag1 += b1 * c1;\n\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          sumReal2 -= b1 * d1;\n          sumImag2 += a1 * d1;\n\n          /* Decrement the loop counter */\n          colCnt--;\n        }\n\n        sumReal1 += sumReal2;\n        sumImag1 += sumImag2;\n\n        /* Store the result in the destination buffer */\n        *px++ = sumReal1;\n        *px++ = sumImag1;\n\n        /* Update the pointer pIn2 to point to the  starting address of the next column */\n        j++;\n        pIn2 = pSrcB->pData + 2U * j;\n\n        /* Decrement the column loop counter */\n        col--;\n\n      } \n\n      /* Update the pointer pInA to point to the  starting address of the next row */\n      i = i + numColsB;\n      pInA = pInA + 2 * numColsA;\n\n      /* Decrement the row loop counter */\n      rowCnt--;\n\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#else\narm_status arm_mat_cmplx_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn1 = pSrcA->pData;                /* Input data matrix pointer A */\n  float32_t *pIn2 = pSrcB->pData;                /* Input data matrix pointer B */\n  float32_t *pInA = pSrcA->pData;                /* Input data matrix pointer A */\n  float32_t *pOut = pDst->pData;                 /* Output data matrix pointer */\n  float32_t *px;                                 /* Temporary output data matrix pointer */\n  uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A */\n  uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n  uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n  float32_t sumReal, sumImag;                    /* Accumulator */\n  float32_t a1, b1, c1, d1;\n  uint32_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */\n  arm_status status;                             /* status of matrix multiplication */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  float32_t a0, b0, c0, d0;\n#endif\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    do\n    {\n      /* Output pointer is set to starting address of the row being processed */\n      px = pOut + 2 * i;\n\n      /* For every row wise process, the column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, the pIn2 pointer is set\n       ** to the starting address of the pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      j = 0U;\n\n      /* column loop */\n      do\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sumReal = 0.0f;\n        sumImag = 0.0f;\n\n        /* Initiate pointer pIn1 to point to starting address of column being processed */\n        pIn1 = pInA;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n\n          /* Reading real part of complex matrix A */\n          a0 = *pIn1;\n\n          /* Reading real part of complex matrix B */\n          c0 = *pIn2;\n\n          /* Reading imaginary part of complex matrix A */\n          b0 = *(pIn1 + 1U);\n\n          /* Reading imaginary part of complex matrix B */\n          d0 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += a0 * c0;\n          sumImag += b0 * c0;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= b0 * d0;\n          sumImag += a0 * d0;\n\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          a1 = *(pIn1     );\n          c1 = *(pIn2     );\n          b1 = *(pIn1 + 1U);\n          d1 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += a1 * c1;\n          sumImag += b1 * c1;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= b1 * d1;\n          sumImag += a1 * d1;\n\n          a0 = *(pIn1     );\n          c0 = *(pIn2     );\n          b0 = *(pIn1 + 1U);\n          d0 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += a0 * c0;\n          sumImag += b0 * c0;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= b0 * d0;\n          sumImag += a0 * d0;\n\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          a1 = *(pIn1     );\n          c1 = *(pIn2     );\n          b1 = *(pIn1 + 1U);\n          d1 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += a1 * c1;\n          sumImag += b1 * c1;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= b1 * d1;\n          sumImag += a1 * d1;\n\n          /* Decrement loop count */\n          colCnt--;\n        }\n\n        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        colCnt = numColsA % 0x4U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        colCnt = numColsA;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n          a1 = *(pIn1     );\n          c1 = *(pIn2     );\n          b1 = *(pIn1 + 1U);\n          d1 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += a1 * c1;\n          sumImag += b1 * c1;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= b1 * d1;\n          sumImag += a1 * d1;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Store result in destination buffer */\n        *px++ = sumReal;\n        *px++ = sumImag;\n\n        /* Update pointer pIn2 to point to starting address of next column */\n        j++;\n        pIn2 = pSrcB->pData + 2U * j;\n\n        /* Decrement column loop counter */\n        col--;\n\n      } while (col > 0U);\n\n      /* Update pointer pInA to point to starting address of next row */\n      i = i + numColsB;\n      pInA = pInA + 2 * numColsA;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cmplx_mat_mult_q15.c\n * Description:  Q15 complex matrix multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup CmplxMatrixMult\n  @{\n */\n\n/**\n  @brief         Q15 Complex matrix multiplication.\n  @param[in]     pSrcA      points to first input complex matrix structure\n  @param[in]     pSrcB      points to second input complex matrix structure\n  @param[out]    pDst       points to output complex matrix structure\n  @param[in]     pScratch   points to an array for storing intermediate results\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Conditions for optimum performance\n                   Input, output and state buffers should be aligned by 32-bit\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator. The inputs to the\n                   multiplications are in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   This approach provides 33 guard bits and there is no risk of overflow. The 34.30 result is then\n                   truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.\n */\n\narm_status arm_mat_cmplx_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst,\n        q15_t                   * pScratch)\n{\n        q15_t *pSrcBT = pScratch;                      /* input data matrix pointer for transpose */\n        q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A of Q15 type */\n        q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B of Q15 type */\n        q15_t *px;                                     /* Temporary output data matrix pointer */\n        uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A */\n        uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */\n        uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */\n        uint16_t numRowsB = pSrcB->numRows;            /* number of rows of input matrix A */\n        q63_t sumReal, sumImag;                        /* accumulator */\n        uint32_t col, i = 0U, row = numRowsB, colCnt;  /* Loop counters */\n        arm_status status;                             /* Status of matrix multiplication */\n\n#if defined (ARM_MATH_DSP)\n        q31_t prod1, prod2;\n        q31_t pSourceA, pSourceB;\n#else\n        q15_t a, b, c, d;\n#endif /* #if defined (ARM_MATH_DSP) */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Matrix transpose */\n    do\n    {\n      /* The pointer px is set to starting address of column being processed */\n      px = pSrcBT + i;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Apply loop unrolling and exchange the columns with row elements */\n      col = numColsB >> 2;\n\n      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n         a second loop below computes the remaining 1 to 3 samples. */\n      while (col > 0U)\n      {\n        /* Read two elements from row */\n        write_q15x2 (px, read_q15x2_ia (&pInB));\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB * 2;\n\n        /* Read two elements from row */\n        write_q15x2 (px, read_q15x2_ia (&pInB));\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB * 2;\n\n        /* Read two elements from row */\n        write_q15x2 (px, read_q15x2_ia (&pInB));\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB * 2;\n\n        /* Read two elements from row */\n        write_q15x2 (px, read_q15x2_ia (&pInB));\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB * 2;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.\n       ** No loop unrolling is used. */\n      col = numColsB % 0x4U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        col = numColsB;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (col > 0U)\n      {\n        /* Read two elements from row */\n        write_q15x2 (px, read_q15x2_ia (&pInB));\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB * 2;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      i = i + 2U;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Reset variables for usage in following multiplication process */\n    row = numRowsA;\n    i = 0U;\n    px = pDst->pData;\n\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    do\n    {\n      /* For every row wise process, column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, pIn2 pointer is set to starting address of transposed pSrcB data */\n      pInB = pSrcBT;\n\n      /* column loop */\n      do\n      {\n        /* Set variable sum, that acts as accumulator, to zero */\n        sumReal = 0;\n        sumImag = 0;\n\n        /* Initiate pointer pInA to point to starting address of column being processed */\n        pInA = pSrcA->pData + i * 2;\n\n        /* Apply loop unrolling and compute 2 MACs simultaneously. */\n        colCnt = numColsA >> 1U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n#if defined (ARM_MATH_DSP)\n\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          pSourceA = read_q15x2_ia ((q15_t **) &pInA);\n          pSourceB = read_q15x2_ia ((q15_t **) &pInB);\n\n          /* Multiply and Accumlates */\n#ifdef ARM_MATH_BIG_ENDIAN\n          prod1 = -__SMUSD(pSourceA, pSourceB);\n#else\n          prod1 = __SMUSD(pSourceA, pSourceB);\n#endif\n          prod2 = __SMUADX(pSourceA, pSourceB);\n          sumReal += (q63_t) prod1;\n          sumImag += (q63_t) prod2;\n\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          pSourceA = read_q15x2_ia ((q15_t **) &pInA);\n          pSourceB = read_q15x2_ia ((q15_t **) &pInB);\n\n          /* Multiply and Accumlates */\n#ifdef ARM_MATH_BIG_ENDIAN\n          prod1 = -__SMUSD(pSourceA, pSourceB);\n#else\n          prod1 = __SMUSD(pSourceA, pSourceB);\n#endif\n          prod2 = __SMUADX(pSourceA, pSourceB);\n          sumReal += (q63_t) prod1;\n          sumImag += (q63_t) prod2;\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n          /* read real and imag values from pSrcA buffer */\n          a = *pInA;\n          b = *(pInA + 1U);\n          /* read real and imag values from pSrcB buffer */\n          c = *pInB;\n          d = *(pInB + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += (q31_t) a *c;\n          sumImag += (q31_t) a *d;\n          sumReal -= (q31_t) b *d;\n          sumImag += (q31_t) b *c;\n\n          /* read next real and imag values from pSrcA buffer */\n          a = *(pInA + 2U);\n          b = *(pInA + 3U);\n          /* read next real and imag values from pSrcB buffer */\n          c = *(pInB + 2U);\n          d = *(pInB + 3U);\n\n          /* update pointer */\n          pInA += 4U;\n\n          /* Multiply and Accumlates */\n          sumReal += (q31_t) a * c;\n          sumImag += (q31_t) a * d;\n          sumReal -= (q31_t) b * d;\n          sumImag += (q31_t) b * c;\n          /* update pointer */\n          pInB += 4U;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* process odd column samples */\n        if ((numColsA & 0x1U) > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n#if defined (ARM_MATH_DSP)\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          pSourceA = read_q15x2_ia ((q15_t **) &pInA);\n          pSourceB = read_q15x2_ia ((q15_t **) &pInB);\n\n          /* Multiply and Accumlates */\n#ifdef ARM_MATH_BIG_ENDIAN\n          prod1 = -__SMUSD(pSourceA, pSourceB);\n#else\n          prod1 = __SMUSD(pSourceA, pSourceB);\n#endif\n          prod2 = __SMUADX(pSourceA, pSourceB);\n          sumReal += (q63_t) prod1;\n          sumImag += (q63_t) prod2;\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          a = *pInA++;\n          b = *pInA++;\n          c = *pInB++;\n          d = *pInB++;\n\n          /* Multiply and Accumlates */\n          sumReal += (q31_t) a * c;\n          sumImag += (q31_t) a * d;\n          sumReal -= (q31_t) b * d;\n          sumImag += (q31_t) b * c;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n        }\n\n        /* Saturate and store result in destination buffer */\n        *px++ = (q15_t) (__SSAT(sumReal >> 15, 16));\n        *px++ = (q15_t) (__SSAT(sumImag >> 15, 16));\n\n        /* Decrement column loop counter */\n        col--;\n\n      } while (col > 0U);\n\n      i = i + numColsA;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_cmplx_mult_q31.c\n * Description:  Floating-point matrix multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup CmplxMatrixMult\n  @{\n */\n\n/**\n  @brief         Q31 Complex matrix multiplication.\n  @param[in]     pSrcA      points to first input complex matrix structure\n  @param[in]     pSrcB      points to second input complex matrix structure\n  @param[out]    pDst       points to output complex matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate\n                   multiplication results but provides only a single guard bit. There is no saturation\n                   on intermediate additions. Thus, if the accumulator overflows it wraps around and\n                   distorts the result. The input signals should be scaled down to avoid intermediate\n                   overflows. The input is thus scaled down by log2(numColsA) bits\n                   to avoid overflows, as a total of numColsA additions are performed internally.\n                   The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.\n */\n\narm_status arm_mat_cmplx_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst)\n{\n  q31_t *pIn1 = pSrcA->pData;                    /* Input data matrix pointer A */\n  q31_t *pIn2 = pSrcB->pData;                    /* Input data matrix pointer B */\n  q31_t *pInA = pSrcA->pData;                    /* Input data matrix pointer A */\n  q31_t *pOut = pDst->pData;                     /* Output data matrix pointer */\n  q31_t *px;                                     /* Temporary output data matrix pointer */\n  uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A */\n  uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n  uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n  q63_t sumReal, sumImag;                        /* Accumulator */\n  q31_t a1, b1, c1, d1;\n  uint32_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */\n  arm_status status;                             /* status of matrix multiplication */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  q31_t a0, b0, c0, d0;\n#endif\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    do\n    {\n      /* Output pointer is set to starting address of the row being processed */\n      px = pOut + 2 * i;\n\n      /* For every row wise process, the column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, the pIn2 pointer is set\n       ** to the starting address of the pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      j = 0U;\n\n      /* column loop */\n      do\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sumReal = 0.0;\n        sumImag = 0.0;\n\n        /* Initiate pointer pIn1 to point to starting address of column being processed */\n        pIn1 = pInA;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Apply loop unrolling and compute 4 MACs simultaneously. */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n\n          /* Reading real part of complex matrix A */\n          a0 = *pIn1;\n\n          /* Reading real part of complex matrix B */\n          c0 = *pIn2;\n\n          /* Reading imaginary part of complex matrix A */\n          b0 = *(pIn1 + 1U);\n\n          /* Reading imaginary part of complex matrix B */\n          d0 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += (q63_t) a0 * c0;\n          sumImag += (q63_t) b0 * c0;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= (q63_t) b0 * d0;\n          sumImag += (q63_t) a0 * d0;\n\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          a1 = *(pIn1     );\n          c1 = *(pIn2     );\n          b1 = *(pIn1 + 1U);\n          d1 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += (q63_t) a1 * c1;\n          sumImag += (q63_t) b1 * c1;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= (q63_t) b1 * d1;\n          sumImag += (q63_t) a1 * d1;\n\n          a0 = *(pIn1     );\n          c0 = *(pIn2     );\n          b0 = *(pIn1 + 1U);\n          d0 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += (q63_t) a0 * c0;\n          sumImag += (q63_t) b0 * c0;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= (q63_t) b0 * d0;\n          sumImag += (q63_t) a0 * d0;\n\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          a1 = *(pIn1     );\n          c1 = *(pIn2     );\n          b1 = *(pIn1 + 1U);\n          d1 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += (q63_t) a1 * c1;\n          sumImag += (q63_t) b1 * c1;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= (q63_t) b1 * d1;\n          sumImag += (q63_t) a1 * d1;\n\n          /* Decrement loop count */\n          colCnt--;\n        }\n\n        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        colCnt = numColsA % 0x4U;\n\n#else\n\n        /* Initialize blkCnt with number of samples */\n        colCnt = numColsA;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n          a1 = *(pIn1     );\n          c1 = *(pIn2     );\n          b1 = *(pIn1 + 1U);\n          d1 = *(pIn2 + 1U);\n\n          /* Multiply and Accumlates */\n          sumReal += (q63_t) a1 * c1;\n          sumImag += (q63_t) b1 * c1;\n\n          /* update pointers */\n          pIn1 += 2U;\n          pIn2 += 2 * numColsB;\n\n          /* Multiply and Accumlates */\n          sumReal -= (q63_t) b1 * d1;\n          sumImag += (q63_t) a1 * d1;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Store result in destination buffer */\n        *px++ = (q31_t) clip_q63_to_q31(sumReal >> 31);\n        *px++ = (q31_t) clip_q63_to_q31(sumImag >> 31);\n\n        /* Update pointer pIn2 to point to starting address of next column */\n        j++;\n        pIn2 = pSrcB->pData + 2U * j;\n\n        /* Decrement column loop counter */\n        col--;\n\n      } while (col > 0U);\n\n      /* Update pointer pInA to point to starting address of next row */\n      i = i + numColsB;\n      pInA = pInA + 2 * numColsA;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_init_f32.c\n * Description:  Floating-point matrix initialization\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup MatrixInit Matrix Initialization\n \n  Initializes the underlying matrix data structure.\n  The functions set the <code>numRows</code>,\n  <code>numCols</code>, and <code>pData</code> fields\n  of the matrix data structure.\n */\n\n/**\n  @addtogroup MatrixInit\n  @{\n */\n\n/**\n  @brief         Floating-point matrix initialization.\n  @param[in,out] S         points to an instance of the floating-point matrix structure\n  @param[in]     nRows     number of rows in the matrix\n  @param[in]     nColumns  number of columns in the matrix\n  @param[in]     pData     points to the matrix data array\n  @return        none\n */\n\nvoid arm_mat_init_f32(\n  arm_matrix_instance_f32 * S,\n  uint16_t nRows,\n  uint16_t nColumns,\n  float32_t * pData)\n{\n  /* Assign Number of Rows */\n  S->numRows = nRows;\n\n  /* Assign Number of Columns */\n  S->numCols = nColumns;\n\n  /* Assign Data pointer */\n  S->pData = pData;\n}\n\n/**\n  @} end of MatrixInit group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_init_q15.c\n * Description:  Q15 matrix initialization\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixInit\n  @{\n */\n\n/**\n  @brief         Q15 matrix initialization.\n  @param[in,out] S         points to an instance of the floating-point matrix structure\n  @param[in]     nRows     number of rows in the matrix\n  @param[in]     nColumns  number of columns in the matrix\n  @param[in]     pData     points to the matrix data array\n  @return        none\n */\n\nvoid arm_mat_init_q15(\n  arm_matrix_instance_q15 * S,\n  uint16_t nRows,\n  uint16_t nColumns,\n  q15_t * pData)\n{\n  /* Assign Number of Rows */\n  S->numRows = nRows;\n\n  /* Assign Number of Columns */\n  S->numCols = nColumns;\n\n  /* Assign Data pointer */\n  S->pData = pData;\n}\n\n/**\n  @} end of MatrixInit group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_init_q31.c\n * Description:  Q31 matrix initialization\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup MatrixInit Matrix Initialization\n \n */\n\n/**\n  @addtogroup MatrixInit\n  @{\n */\n\n/**\n  @brief         Q31 matrix initialization.\n  @param[in,out] S         points to an instance of the Q31 matrix structure\n  @param[in]     nRows     number of rows in the matrix\n  @param[in]     nColumns  number of columns in the matrix\n  @param[in]     pData     points to the matrix data array\n  @return        none\n */\n\nvoid arm_mat_init_q31(\n  arm_matrix_instance_q31 * S,\n  uint16_t nRows,\n  uint16_t nColumns,\n  q31_t * pData)\n{\n  /* Assign Number of Rows */\n  S->numRows = nRows;\n\n  /* Assign Number of Columns */\n  S->numCols = nColumns;\n\n  /* Assign Data pointer */\n  S->pData = pData;\n}\n\n/**\n  @} end of MatrixInit group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_inverse_f32.c\n * Description:  Floating-point matrix inverse\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup MatrixInv Matrix Inverse\n\n  Computes the inverse of a matrix.\n\n  The inverse is defined only if the input matrix is square and non-singular (the determinant is non-zero).\n  The function checks that the input and output matrices are square and of the same size.\n\n  Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix\n  inversion of floating-point matrices.\n\n  @par Algorithm\n  The Gauss-Jordan method is used to find the inverse.\n  The algorithm performs a sequence of elementary row-operations until it\n  reduces the input matrix to an identity matrix. Applying the same sequence\n  of elementary row-operations to an identity matrix yields the inverse matrix.\n  If the input matrix is singular, then the algorithm terminates and returns error status\n  <code>ARM_MATH_SINGULAR</code>.\n  \\image html MatrixInverse.gif \"Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method\"\n */\n\n/**\n  @addtogroup MatrixInv\n  @{\n */\n\n/**\n  @brief         Floating-point matrix inverse.\n  @param[in]     pSrc      points to input matrix structure\n  @param[out]    pDst      points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n                   - \\ref ARM_MATH_SINGULAR      : Input matrix is found to be singular (non-invertible)\n */\n#if defined(ARM_MATH_NEON)\narm_status arm_mat_inverse_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  float32_t *pInT1, *pInT2;                      /* Temporary input data matrix pointer */\n  float32_t *pOutT1, *pOutT2;                    /* Temporary output data matrix pointer */\n  float32_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst;  /* Temporary input and output data matrix pointer */\n  uint32_t numRows = pSrc->numRows;              /* Number of rows in the matrix  */\n  uint32_t numCols = pSrc->numCols;              /* Number of Cols in the matrix  */\n\n  float32_t maxC;                                /* maximum value in the column */\n\n  float32_t Xchg, in = 0.0f, in1;                /* Temporary input values  */\n  uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l;      /* loop counters */\n  arm_status status;                             /* status of matrix inverse */\n  float32x4_t vec1;\n  float32x4_t vec2;\n  float32x4_t tmpV;\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols)\n     || (pSrc->numRows != pDst->numRows))\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */\n\n  {\n   /*--------------------------------------------------------------------------------------------------------------\n   * Matrix Inverse can be solved using elementary row operations.\n   *\n   *  Gauss-Jordan Method:\n   *\n   *     1. First combine the identity matrix and the input matrix separated by a bar to form an\n   *        augmented matrix as follows:\n   *              _                  _         _         _\n   *             |  a11  a12 | 1   0  |       |  X11 X12  |\n   *             |           |        |   =   |           |\n   *             |_ a21  a22 | 0   1 _|       |_ X21 X21 _|\n   *\n   *    2. In our implementation, pDst Matrix is used as identity matrix.\n   *\n   *    3. Begin with the first row. Let i = 1.\n   *\n   *      4. Check to see if the pivot for column i is the greatest of the column.\n   *       The pivot is the element of the main diagonal that is on the current row.\n   *       For instance, if working with row i, then the pivot element is aii.\n   *       If the pivot is not the most significant of the columns, exchange that row with a row\n   *       below it that does contain the most significant value in column i. If the most\n   *         significant value of the column is zero, then an inverse to that matrix does not exist.\n   *       The most significant value of the column is the absolute maximum.\n   *\n   *      5. Divide every element of row i by the pivot.\n   *\n   *      6. For every row below and  row i, replace that row with the sum of that row and\n   *       a multiple of row i so that each new element in column i below row i is zero.\n   *\n   *      7. Move to the next row and column and repeat steps 2 through 5 until you have zeros\n   *       for every element below and above the main diagonal.\n   *\n   *    8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc).\n   *       Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst).\n   *----------------------------------------------------------------------------------------------------------------*/\n\n    /* Working pointer for destination matrix */\n    pOutT1 = pOut;\n\n    /* Loop over the number of rows */\n    rowCnt = numRows;\n\n    /* Making the destination matrix as identity matrix */\n    while (rowCnt > 0U)\n    {\n      /* Writing all zeroes in lower triangle of the destination matrix */\n      j = numRows - rowCnt;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0f;\n        j--;\n      }\n\n      /* Writing all ones in the diagonal of the destination matrix */\n      *pOutT1++ = 1.0f;\n\n      /* Writing all zeroes in upper triangle of the destination matrix */\n      j = rowCnt - 1U;\n\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0f;\n        j--;\n      }\n\n      /* Decrement the loop counter */\n      rowCnt--;\n    }\n\n    /* Loop over the number of columns of the input matrix.\n       All the elements in each column are processed by the row operations */\n    loopCnt = numCols;\n\n    /* Index modifier to navigate through the columns */\n    l = 0U;\n\n    while (loopCnt > 0U)\n    {\n      /* Check if the pivot element is zero..\n       * If it is zero then interchange the row with non zero row below.\n       * If there is no non zero element to replace in the rows below,\n       * then the matrix is Singular. */\n\n      /* Working pointer for the input matrix that points\n       * to the pivot element of the particular row  */\n      pInT1 = pIn + (l * numCols);\n\n      /* Working pointer for the destination matrix that points\n       * to the pivot element of the particular row  */\n      pOutT1 = pOut + (l * numCols);\n\n      /* Temporary variable to hold the pivot value */\n      in = *pInT1;\n\n      /* Grab the most significant value from column l */\n      maxC = 0;\n\n      for (i = l; i < numRows; i++)\n      {\n        maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC);\n        pInT1 += numCols;\n      }\n\n      /* Update the status if the matrix is singular */\n      if (maxC == 0.0f)\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Restore pInT1 */\n      pInT1 = pIn;\n\n      /* Destination pointer modifier */\n      k = 1U;\n\n      /* Check if the pivot element is the most significant of the column */\n      if ( (in > 0.0f ? in : -in) != maxC)\n      {\n        /* Loop over the number rows present below */\n        i = numRows - (l + 1U);\n\n        while (i > 0U)\n        {\n          /* Update the input and destination pointers */\n          pInT2 = pInT1 + (numCols * l);\n          pOutT2 = pOutT1 + (numCols * k);\n\n          /* Look for the most significant element to\n           * replace in the rows below */\n          if ((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC)\n          {\n            /* Loop over number of columns\n             * to the right of the pilot element */\n            j = numCols - l;\n\n            while (j > 0U)\n            {\n              /* Exchange the row elements of the input matrix */\n              Xchg = *pInT2;\n              *pInT2++ = *pInT1;\n              *pInT1++ = Xchg;\n\n              /* Decrement the loop counter */\n              j--;\n            }\n\n            /* Loop over number of columns of the destination matrix */\n            j = numCols;\n\n            while (j > 0U)\n            {\n              /* Exchange the row elements of the destination matrix */\n              Xchg = *pOutT2;\n              *pOutT2++ = *pOutT1;\n              *pOutT1++ = Xchg;\n\n              /* Decrement the loop counter */\n              j--;\n            }\n\n            /* Flag to indicate whether exchange is done or not */\n            flag = 1U;\n\n            /* Break after exchange is done */\n            break;\n          }\n\n          /* Update the destination pointer modifier */\n          k++;\n\n          /* Decrement the loop counter */\n          i--;\n        }\n      }\n\n      /* Update the status if the matrix is singular */\n      if ((flag != 1U) && (in == 0.0f))\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Points to the pivot row of input and destination matrices */\n      pPivotRowIn = pIn + (l * numCols);\n      pPivotRowDst = pOut + (l * numCols);\n\n      /* Temporary pointers to the pivot row pointers */\n      pInT1 = pPivotRowIn;\n      pInT2 = pPivotRowDst;\n\n      /* Pivot element of the row */\n      in = *pPivotRowIn;\n      tmpV = vdupq_n_f32(1.0/in);\n\n      /* Loop over number of columns\n       * to the right of the pilot element */\n      j = (numCols - l) >> 2;\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the input matrix\n         * by the pivot element */\n        vec1 = vld1q_f32(pInT1);\n\n        vec1 = vmulq_f32(vec1, tmpV);\n        vst1q_f32(pInT1, vec1);\n        pInT1 += 4;\n\n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Tail */\n      j = (numCols - l) & 3;\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the input matrix\n         * by the pivot element */\n        in1 = *pInT1;\n        *pInT1++ = in1 / in;\n\n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Loop over number of columns of the destination matrix */\n      j = numCols >> 2;\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the destination matrix\n         * by the pivot element */\n        vec1 = vld1q_f32(pInT2);\n\n        vec1 = vmulq_f32(vec1, tmpV);\n        vst1q_f32(pInT2, vec1);\n        pInT2 += 4;\n      \n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Tail */\n      j = numCols & 3;\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the destination matrix\n         * by the pivot element */\n        in1 = *pInT2;\n        *pInT2++ = in1 / in;\n\n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Replace the rows with the sum of that row and a multiple of row i\n       * so that each new element in column i above row i is zero.*/\n\n      /* Temporary pointers for input and destination matrices */\n      pInT1 = pIn;\n      pInT2 = pOut;\n\n      /* index used to check for pivot element */\n      i = 0U;\n\n      /* Loop over number of rows */\n      /*  to be replaced by the sum of that row and a multiple of row i */\n      k = numRows;\n\n      while (k > 0U)\n      {\n        /* Check for the pivot element */\n        if (i == l)\n        {\n          /* If the processing element is the pivot element,\n             only the columns to the right are to be processed */\n          pInT1 += numCols - l;\n\n          pInT2 += numCols;\n        }\n        else\n        {\n          /* Element of the reference row */\n          in = *pInT1;\n          tmpV = vdupq_n_f32(in);\n\n          /* Working pointers for input and destination pivot rows */\n          pPRT_in = pPivotRowIn;\n          pPRT_pDst = pPivotRowDst;\n\n          /* Loop over the number of columns to the right of the pivot element,\n             to replace the elements in the input matrix */\n          j = (numCols - l) >> 2;\n\t  \n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            vec1 = vld1q_f32(pInT1);\n            vec2 = vld1q_f32(pPRT_in);\n            vec1 = vmlsq_f32(vec1, tmpV, vec2);\n            vst1q_f32(pInT1, vec1);\n            pPRT_in += 4;\n            pInT1 += 4;\n\n            /* Decrement the loop counter */\n            j--;\n          }\n\n\t  /* Tail */\n          j = (numCols - l) & 3;\n\n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            in1 = *pInT1;\n            *pInT1++ = in1 - (in * *pPRT_in++);\n\n            /* Decrement the loop counter */\n            j--;\n          }\n\n          /* Loop over the number of columns to\n             replace the elements in the destination matrix */\n          j = numCols >> 2;\n\n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            vec1 = vld1q_f32(pInT2);\n            vec2 = vld1q_f32(pPRT_pDst);\n            vec1 = vmlsq_f32(vec1, tmpV, vec2);\n            vst1q_f32(pInT2, vec1);\n            pPRT_pDst += 4;\n            pInT2 += 4;\n\n            /* Decrement the loop counter */\n            j--;\n          }\n\n\t  /* Tail */\n          j = numCols & 3;\n\n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            in1 = *pInT2;\n            *pInT2++ = in1 - (in * *pPRT_pDst++);\n\n            /* Decrement the loop counter */\n            j--;\n          }\n\n        }\n\n        /* Increment the temporary input pointer */\n        pInT1 = pInT1 + l;\n\n        /* Decrement the loop counter */\n        k--;\n\n        /* Increment the pivot index */\n        i++;\n      }\n\n      /* Increment the input pointer */\n      pIn++;\n\n      /* Decrement the loop counter */\n      loopCnt--;\n\n      /* Increment the index modifier */\n      l++;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n\n    if ((flag != 1U) && (in == 0.0f))\n    {\n      pIn = pSrc->pData;\n      for (i = 0; i < numRows * numCols; i++)\n      {\n        if (pIn[i] != 0.0f)\n            break;\n      }\n\n      if (i == numRows * numCols)\n        status = ARM_MATH_SINGULAR;\n    }\n  }\n  /* Return to application */\n  return (status);\n}\n#else\narm_status arm_mat_inverse_f32(\n  const arm_matrix_instance_f32 * pSrc,\n        arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  float32_t *pInT1, *pInT2;                      /* Temporary input data matrix pointer */\n  float32_t *pOutT1, *pOutT2;                    /* Temporary output data matrix pointer */\n  float32_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst;  /* Temporary input and output data matrix pointer */\n  uint32_t numRows = pSrc->numRows;              /* Number of rows in the matrix  */\n  uint32_t numCols = pSrc->numCols;              /* Number of Cols in the matrix  */\n\n#if defined (ARM_MATH_DSP)\n  float32_t maxC;                                /* maximum value in the column */\n\n  float32_t Xchg, in = 0.0f, in1;                /* Temporary input values  */\n  uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l;      /* loop counters */\n  arm_status status;                             /* status of matrix inverse */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pSrc->numCols) ||\n      (pDst->numRows != pDst->numCols) ||\n      (pSrc->numRows != pDst->numRows)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n\n    /*--------------------------------------------------------------------------------------------------------------\n     * Matrix Inverse can be solved using elementary row operations.\n     *\n     *  Gauss-Jordan Method:\n     *\n     *      1. First combine the identity matrix and the input matrix separated by a bar to form an\n     *        augmented matrix as follows:\n     *                      _                  _         _         _\n     *                     |  a11  a12 | 1   0  |       |  X11 X12  |\n     *                     |           |        |   =   |           |\n     *                     |_ a21  a22 | 0   1 _|       |_ X21 X21 _|\n     *\n     *      2. In our implementation, pDst Matrix is used as identity matrix.\n     *\n     *      3. Begin with the first row. Let i = 1.\n     *\n     *      4. Check to see if the pivot for column i is the greatest of the column.\n     *         The pivot is the element of the main diagonal that is on the current row.\n     *         For instance, if working with row i, then the pivot element is aii.\n     *         If the pivot is not the most significant of the columns, exchange that row with a row\n     *         below it that does contain the most significant value in column i. If the most\n     *         significant value of the column is zero, then an inverse to that matrix does not exist.\n     *         The most significant value of the column is the absolute maximum.\n     *\n     *      5. Divide every element of row i by the pivot.\n     *\n     *      6. For every row below and  row i, replace that row with the sum of that row and\n     *         a multiple of row i so that each new element in column i below row i is zero.\n     *\n     *      7. Move to the next row and column and repeat steps 2 through 5 until you have zeros\n     *         for every element below and above the main diagonal.\n     *\n     *      8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc).\n     *         Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst).\n     *----------------------------------------------------------------------------------------------------------------*/\n\n    /* Working pointer for destination matrix */\n    pOutT1 = pOut;\n\n    /* Loop over the number of rows */\n    rowCnt = numRows;\n\n    /* Making the destination matrix as identity matrix */\n    while (rowCnt > 0U)\n    {\n      /* Writing all zeroes in lower triangle of the destination matrix */\n      j = numRows - rowCnt;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0f;\n        j--;\n      }\n\n      /* Writing all ones in the diagonal of the destination matrix */\n      *pOutT1++ = 1.0f;\n\n      /* Writing all zeroes in upper triangle of the destination matrix */\n      j = rowCnt - 1U;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0f;\n        j--;\n      }\n\n      /* Decrement loop counter */\n      rowCnt--;\n    }\n\n    /* Loop over the number of columns of the input matrix.\n       All the elements in each column are processed by the row operations */\n    loopCnt = numCols;\n\n    /* Index modifier to navigate through the columns */\n    l = 0U;\n\n    while (loopCnt > 0U)\n    {\n      /* Check if the pivot element is zero..\n       * If it is zero then interchange the row with non zero row below.\n       * If there is no non zero element to replace in the rows below,\n       * then the matrix is Singular. */\n\n      /* Working pointer for the input matrix that points\n       * to the pivot element of the particular row  */\n      pInT1 = pIn + (l * numCols);\n\n      /* Working pointer for the destination matrix that points\n       * to the pivot element of the particular row  */\n      pOutT1 = pOut + (l * numCols);\n\n      /* Temporary variable to hold the pivot value */\n      in = *pInT1;\n\n      /* Grab the most significant value from column l */\n      maxC = 0;\n      for (i = l; i < numRows; i++)\n      {\n        maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC);\n        pInT1 += numCols;\n      }\n\n      /* Update the status if the matrix is singular */\n      if (maxC == 0.0f)\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Restore pInT1  */\n      pInT1 = pIn;\n\n      /* Destination pointer modifier */\n      k = 1U;\n\n      /* Check if the pivot element is the most significant of the column */\n      if ( (in > 0.0f ? in : -in) != maxC)\n      {\n        /* Loop over the number rows present below */\n        i = numRows - (l + 1U);\n\n        while (i > 0U)\n        {\n          /* Update the input and destination pointers */\n          pInT2 = pInT1 + (numCols * l);\n          pOutT2 = pOutT1 + (numCols * k);\n\n          /* Look for the most significant element to\n           * replace in the rows below */\n          if ((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC)\n          {\n            /* Loop over number of columns\n             * to the right of the pilot element */\n            j = numCols - l;\n\n            while (j > 0U)\n            {\n              /* Exchange the row elements of the input matrix */\n              Xchg = *pInT2;\n              *pInT2++ = *pInT1;\n              *pInT1++ = Xchg;\n\n              /* Decrement the loop counter */\n              j--;\n            }\n\n            /* Loop over number of columns of the destination matrix */\n            j = numCols;\n\n            while (j > 0U)\n            {\n              /* Exchange the row elements of the destination matrix */\n              Xchg = *pOutT2;\n              *pOutT2++ = *pOutT1;\n              *pOutT1++ = Xchg;\n\n              /* Decrement loop counter */\n              j--;\n            }\n\n            /* Flag to indicate whether exchange is done or not */\n            flag = 1U;\n\n            /* Break after exchange is done */\n            break;\n          }\n\n          /* Update the destination pointer modifier */\n          k++;\n\n          /* Decrement loop counter */\n          i--;\n        }\n      }\n\n      /* Update the status if the matrix is singular */\n      if ((flag != 1U) && (in == 0.0f))\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Points to the pivot row of input and destination matrices */\n      pPivotRowIn = pIn + (l * numCols);\n      pPivotRowDst = pOut + (l * numCols);\n\n      /* Temporary pointers to the pivot row pointers */\n      pInT1 = pPivotRowIn;\n      pInT2 = pPivotRowDst;\n\n      /* Pivot element of the row */\n      in = *pPivotRowIn;\n\n      /* Loop over number of columns\n       * to the right of the pilot element */\n      j = (numCols - l);\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the input matrix\n         * by the pivot element */\n        in1 = *pInT1;\n        *pInT1++ = in1 / in;\n\n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Loop over number of columns of the destination matrix */\n      j = numCols;\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the destination matrix\n         * by the pivot element */\n        in1 = *pInT2;\n        *pInT2++ = in1 / in;\n\n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Replace the rows with the sum of that row and a multiple of row i\n       * so that each new element in column i above row i is zero.*/\n\n      /* Temporary pointers for input and destination matrices */\n      pInT1 = pIn;\n      pInT2 = pOut;\n\n      /* index used to check for pivot element */\n      i = 0U;\n\n      /* Loop over number of rows */\n      /*  to be replaced by the sum of that row and a multiple of row i */\n      k = numRows;\n\n      while (k > 0U)\n      {\n        /* Check for the pivot element */\n        if (i == l)\n        {\n          /* If the processing element is the pivot element,\n             only the columns to the right are to be processed */\n          pInT1 += numCols - l;\n\n          pInT2 += numCols;\n        }\n        else\n        {\n          /* Element of the reference row */\n          in = *pInT1;\n\n          /* Working pointers for input and destination pivot rows */\n          pPRT_in = pPivotRowIn;\n          pPRT_pDst = pPivotRowDst;\n\n          /* Loop over the number of columns to the right of the pivot element,\n             to replace the elements in the input matrix */\n          j = (numCols - l);\n\n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            in1 = *pInT1;\n            *pInT1++ = in1 - (in * *pPRT_in++);\n\n            /* Decrement the loop counter */\n            j--;\n          }\n\n          /* Loop over the number of columns to\n             replace the elements in the destination matrix */\n          j = numCols;\n\n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            in1 = *pInT2;\n            *pInT2++ = in1 - (in * *pPRT_pDst++);\n\n            /* Decrement loop counter */\n            j--;\n          }\n\n        }\n\n        /* Increment temporary input pointer */\n        pInT1 = pInT1 + l;\n\n        /* Decrement loop counter */\n        k--;\n\n        /* Increment pivot index */\n        i++;\n      }\n\n      /* Increment the input pointer */\n      pIn++;\n\n      /* Decrement the loop counter */\n      loopCnt--;\n\n      /* Increment the index modifier */\n      l++;\n    }\n\n\n#else\n\n  float32_t Xchg, in = 0.0f;                     /* Temporary input values  */\n  uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l;      /* loop counters */\n  arm_status status;                             /* status of matrix inverse */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pSrc->numCols) ||\n      (pDst->numRows != pDst->numCols) ||\n      (pSrc->numRows != pDst->numRows)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n\n    /*--------------------------------------------------------------------------------------------------------------\n     * Matrix Inverse can be solved using elementary row operations.\n     *\n     *  Gauss-Jordan Method:\n     *\n     *      1. First combine the identity matrix and the input matrix separated by a bar to form an\n     *        augmented matrix as follows:\n     *                      _  _          _     _      _   _         _         _\n     *                     |  |  a11  a12  | | | 1   0  |   |       |  X11 X12  |\n     *                     |  |            | | |        |   |   =   |           |\n     *                     |_ |_ a21  a22 _| | |_0   1 _|  _|       |_ X21 X21 _|\n     *\n     *      2. In our implementation, pDst Matrix is used as identity matrix.\n     *\n     *      3. Begin with the first row. Let i = 1.\n     *\n     *      4. Check to see if the pivot for row i is zero.\n     *         The pivot is the element of the main diagonal that is on the current row.\n     *         For instance, if working with row i, then the pivot element is aii.\n     *         If the pivot is zero, exchange that row with a row below it that does not\n     *         contain a zero in column i. If this is not possible, then an inverse\n     *         to that matrix does not exist.\n     *\n     *      5. Divide every element of row i by the pivot.\n     *\n     *      6. For every row below and  row i, replace that row with the sum of that row and\n     *         a multiple of row i so that each new element in column i below row i is zero.\n     *\n     *      7. Move to the next row and column and repeat steps 2 through 5 until you have zeros\n     *         for every element below and above the main diagonal.\n     *\n     *      8. Now an identical matrix is formed to the left of the bar(input matrix, src).\n     *         Therefore, the matrix to the right of the bar is our solution(dst matrix, dst).\n     *----------------------------------------------------------------------------------------------------------------*/\n\n    /* Working pointer for destination matrix */\n    pOutT1 = pOut;\n\n    /* Loop over the number of rows */\n    rowCnt = numRows;\n\n    /* Making the destination matrix as identity matrix */\n    while (rowCnt > 0U)\n    {\n      /* Writing all zeroes in lower triangle of the destination matrix */\n      j = numRows - rowCnt;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0f;\n        j--;\n      }\n\n      /* Writing all ones in the diagonal of the destination matrix */\n      *pOutT1++ = 1.0f;\n\n      /* Writing all zeroes in upper triangle of the destination matrix */\n      j = rowCnt - 1U;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0f;\n        j--;\n      }\n\n      /* Decrement loop counter */\n      rowCnt--;\n    }\n\n    /* Loop over the number of columns of the input matrix.\n       All the elements in each column are processed by the row operations */\n    loopCnt = numCols;\n\n    /* Index modifier to navigate through the columns */\n    l = 0U;\n\n    while (loopCnt > 0U)\n    {\n      /* Check if the pivot element is zero..\n       * If it is zero then interchange the row with non zero row below.\n       * If there is no non zero element to replace in the rows below,\n       * then the matrix is Singular. */\n\n      /* Working pointer for the input matrix that points\n       * to the pivot element of the particular row  */\n      pInT1 = pIn + (l * numCols);\n\n      /* Working pointer for the destination matrix that points\n       * to the pivot element of the particular row  */\n      pOutT1 = pOut + (l * numCols);\n\n      /* Temporary variable to hold the pivot value */\n      in = *pInT1;\n\n      /* Destination pointer modifier */\n      k = 1U;\n\n      /* Check if the pivot element is zero */\n      if (*pInT1 == 0.0f)\n      {\n        /* Loop over the number rows present below */\n        for (i = (l + 1U); i < numRows; i++)\n        {\n          /* Update the input and destination pointers */\n          pInT2 = pInT1 + (numCols * l);\n          pOutT2 = pOutT1 + (numCols * k);\n\n          /* Check if there is a non zero pivot element to\n           * replace in the rows below */\n          if (*pInT2 != 0.0f)\n          {\n            /* Loop over number of columns\n             * to the right of the pilot element */\n            for (j = 0U; j < (numCols - l); j++)\n            {\n              /* Exchange the row elements of the input matrix */\n              Xchg = *pInT2;\n              *pInT2++ = *pInT1;\n              *pInT1++ = Xchg;\n            }\n\n            for (j = 0U; j < numCols; j++)\n            {\n              Xchg = *pOutT2;\n              *pOutT2++ = *pOutT1;\n              *pOutT1++ = Xchg;\n            }\n\n            /* Flag to indicate whether exchange is done or not */\n            flag = 1U;\n\n            /* Break after exchange is done */\n            break;\n          }\n\n          /* Update the destination pointer modifier */\n          k++;\n        }\n      }\n\n      /* Update the status if the matrix is singular */\n      if ((flag != 1U) && (in == 0.0f))\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Points to the pivot row of input and destination matrices */\n      pPivotRowIn = pIn + (l * numCols);\n      pPivotRowDst = pOut + (l * numCols);\n\n      /* Temporary pointers to the pivot row pointers */\n      pInT1 = pPivotRowIn;\n      pOutT1 = pPivotRowDst;\n\n      /* Pivot element of the row */\n      in = *(pIn + (l * numCols));\n\n      /* Loop over number of columns\n       * to the right of the pilot element */\n      for (j = 0U; j < (numCols - l); j++)\n      {\n        /* Divide each element of the row of the input matrix\n         * by the pivot element */\n        *pInT1 = *pInT1 / in;\n        pInT1++;\n      }\n      for (j = 0U; j < numCols; j++)\n      {\n        /* Divide each element of the row of the destination matrix\n         * by the pivot element */\n        *pOutT1 = *pOutT1 / in;\n        pOutT1++;\n      }\n\n      /* Replace the rows with the sum of that row and a multiple of row i\n       * so that each new element in column i above row i is zero.*/\n\n      /* Temporary pointers for input and destination matrices */\n      pInT1 = pIn;\n      pOutT1 = pOut;\n\n      for (i = 0U; i < numRows; i++)\n      {\n        /* Check for the pivot element */\n        if (i == l)\n        {\n          /* If the processing element is the pivot element,\n             only the columns to the right are to be processed */\n          pInT1 += numCols - l;\n          pOutT1 += numCols;\n        }\n        else\n        {\n          /* Element of the reference row */\n          in = *pInT1;\n\n          /* Working pointers for input and destination pivot rows */\n          pPRT_in = pPivotRowIn;\n          pPRT_pDst = pPivotRowDst;\n\n          /* Loop over the number of columns to the right of the pivot element,\n             to replace the elements in the input matrix */\n          for (j = 0U; j < (numCols - l); j++)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            *pInT1 = *pInT1 - (in * *pPRT_in++);\n            pInT1++;\n          }\n\n          /* Loop over the number of columns to\n             replace the elements in the destination matrix */\n          for (j = 0U; j < numCols; j++)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            *pOutT1 = *pOutT1 - (in * *pPRT_pDst++);\n            pOutT1++;\n          }\n\n        }\n\n        /* Increment temporary input pointer */\n        pInT1 = pInT1 + l;\n      }\n\n      /* Increment the input pointer */\n      pIn++;\n\n      /* Decrement the loop counter */\n      loopCnt--;\n\n      /* Increment the index modifier */\n      l++;\n    }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n\n    if ((flag != 1U) && (in == 0.0f))\n    {\n      pIn = pSrc->pData;\n      for (i = 0; i < numRows * numCols; i++)\n      {\n        if (pIn[i] != 0.0f)\n            break;\n      }\n\n      if (i == numRows * numCols)\n        status = ARM_MATH_SINGULAR;\n    }\n  }\n\n  /* Return to application */\n  return (status);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of MatrixInv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_inverse_f64.c\n * Description:  Floating-point matrix inverse\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n\n/**\n  @addtogroup MatrixInv\n  @{\n */\n\n/**\n  @brief         Floating-point (64 bit) matrix inverse.\n  @param[in]     pSrc      points to input matrix structure\n  @param[out]    pDst      points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n                   - \\ref ARM_MATH_SINGULAR      : Input matrix is found to be singular (non-invertible)\n */\n\narm_status arm_mat_inverse_f64(\n  const arm_matrix_instance_f64 * pSrc,\n        arm_matrix_instance_f64 * pDst)\n{\n  float64_t *pIn = pSrc->pData;                  /* input data matrix pointer */\n  float64_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  float64_t *pInT1, *pInT2;                      /* Temporary input data matrix pointer */\n  float64_t *pOutT1, *pOutT2;                    /* Temporary output data matrix pointer */\n  float64_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst;  /* Temporary input and output data matrix pointer */\n  uint32_t numRows = pSrc->numRows;              /* Number of rows in the matrix  */\n  uint32_t numCols = pSrc->numCols;              /* Number of Cols in the matrix  */\n\n#if defined (ARM_MATH_DSP)\n  float64_t maxC;                                /* maximum value in the column */\n\n  float64_t Xchg, in = 0.0, in1;                /* Temporary input values  */\n  uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l;      /* loop counters */\n  arm_status status;                             /* status of matrix inverse */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pSrc->numCols) ||\n      (pDst->numRows != pDst->numCols) ||\n      (pSrc->numRows != pDst->numRows)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n\n    /*--------------------------------------------------------------------------------------------------------------\n     * Matrix Inverse can be solved using elementary row operations.\n     *\n     *  Gauss-Jordan Method:\n     *\n     *      1. First combine the identity matrix and the input matrix separated by a bar to form an\n     *        augmented matrix as follows:\n     *                      _                  _         _         _\n     *                     |  a11  a12 | 1   0  |       |  X11 X12  |\n     *                     |           |        |   =   |           |\n     *                     |_ a21  a22 | 0   1 _|       |_ X21 X21 _|\n     *\n     *      2. In our implementation, pDst Matrix is used as identity matrix.\n     *\n     *      3. Begin with the first row. Let i = 1.\n     *\n     *      4. Check to see if the pivot for column i is the greatest of the column.\n     *         The pivot is the element of the main diagonal that is on the current row.\n     *         For instance, if working with row i, then the pivot element is aii.\n     *         If the pivot is not the most significant of the columns, exchange that row with a row\n     *         below it that does contain the most significant value in column i. If the most\n     *         significant value of the column is zero, then an inverse to that matrix does not exist.\n     *         The most significant value of the column is the absolute maximum.\n     *\n     *      5. Divide every element of row i by the pivot.\n     *\n     *      6. For every row below and  row i, replace that row with the sum of that row and\n     *         a multiple of row i so that each new element in column i below row i is zero.\n     *\n     *      7. Move to the next row and column and repeat steps 2 through 5 until you have zeros\n     *         for every element below and above the main diagonal.\n     *\n     *      8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc).\n     *         Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst).\n     *----------------------------------------------------------------------------------------------------------------*/\n\n    /* Working pointer for destination matrix */\n    pOutT1 = pOut;\n\n    /* Loop over the number of rows */\n    rowCnt = numRows;\n\n    /* Making the destination matrix as identity matrix */\n    while (rowCnt > 0U)\n    {\n      /* Writing all zeroes in lower triangle of the destination matrix */\n      j = numRows - rowCnt;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0;\n        j--;\n      }\n\n      /* Writing all ones in the diagonal of the destination matrix */\n      *pOutT1++ = 1.0;\n\n      /* Writing all zeroes in upper triangle of the destination matrix */\n      j = rowCnt - 1U;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0;\n        j--;\n      }\n\n      /* Decrement loop counter */\n      rowCnt--;\n    }\n\n    /* Loop over the number of columns of the input matrix.\n       All the elements in each column are processed by the row operations */\n    loopCnt = numCols;\n\n    /* Index modifier to navigate through the columns */\n    l = 0U;\n\n    while (loopCnt > 0U)\n    {\n      /* Check if the pivot element is zero..\n       * If it is zero then interchange the row with non zero row below.\n       * If there is no non zero element to replace in the rows below,\n       * then the matrix is Singular. */\n\n      /* Working pointer for the input matrix that points\n       * to the pivot element of the particular row  */\n      pInT1 = pIn + (l * numCols);\n\n      /* Working pointer for the destination matrix that points\n       * to the pivot element of the particular row  */\n      pOutT1 = pOut + (l * numCols);\n\n      /* Temporary variable to hold the pivot value */\n      in = *pInT1;\n\n      /* Grab the most significant value from column l */\n      maxC = 0;\n      for (i = l; i < numRows; i++)\n      {\n        maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC);\n        pInT1 += numCols;\n      }\n\n      /* Update the status if the matrix is singular */\n      if (maxC == 0.0)\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Restore pInT1  */\n      pInT1 = pIn;\n\n      /* Destination pointer modifier */\n      k = 1U;\n\n      /* Check if the pivot element is the most significant of the column */\n      if ( (in > 0.0 ? in : -in) != maxC)\n      {\n        /* Loop over the number rows present below */\n        i = numRows - (l + 1U);\n\n        while (i > 0U)\n        {\n          /* Update the input and destination pointers */\n          pInT2 = pInT1 + (numCols * l);\n          pOutT2 = pOutT1 + (numCols * k);\n\n          /* Look for the most significant element to\n           * replace in the rows below */\n          if ((*pInT2 > 0.0 ? *pInT2: -*pInT2) == maxC)\n          {\n            /* Loop over number of columns\n             * to the right of the pilot element */\n            j = numCols - l;\n\n            while (j > 0U)\n            {\n              /* Exchange the row elements of the input matrix */\n              Xchg = *pInT2;\n              *pInT2++ = *pInT1;\n              *pInT1++ = Xchg;\n\n              /* Decrement the loop counter */\n              j--;\n            }\n\n            /* Loop over number of columns of the destination matrix */\n            j = numCols;\n\n            while (j > 0U)\n            {\n              /* Exchange the row elements of the destination matrix */\n              Xchg = *pOutT2;\n              *pOutT2++ = *pOutT1;\n              *pOutT1++ = Xchg;\n\n              /* Decrement loop counter */\n              j--;\n            }\n\n            /* Flag to indicate whether exchange is done or not */\n            flag = 1U;\n\n            /* Break after exchange is done */\n            break;\n          }\n\n          /* Update the destination pointer modifier */\n          k++;\n\n          /* Decrement loop counter */\n          i--;\n        }\n      }\n\n      /* Update the status if the matrix is singular */\n      if ((flag != 1U) && (in == 0.0))\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Points to the pivot row of input and destination matrices */\n      pPivotRowIn = pIn + (l * numCols);\n      pPivotRowDst = pOut + (l * numCols);\n\n      /* Temporary pointers to the pivot row pointers */\n      pInT1 = pPivotRowIn;\n      pInT2 = pPivotRowDst;\n\n      /* Pivot element of the row */\n      in = *pPivotRowIn;\n\n      /* Loop over number of columns\n       * to the right of the pilot element */\n      j = (numCols - l);\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the input matrix\n         * by the pivot element */\n        in1 = *pInT1;\n        *pInT1++ = in1 / in;\n\n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Loop over number of columns of the destination matrix */\n      j = numCols;\n\n      while (j > 0U)\n      {\n        /* Divide each element of the row of the destination matrix\n         * by the pivot element */\n        in1 = *pInT2;\n        *pInT2++ = in1 / in;\n\n        /* Decrement the loop counter */\n        j--;\n      }\n\n      /* Replace the rows with the sum of that row and a multiple of row i\n       * so that each new element in column i above row i is zero.*/\n\n      /* Temporary pointers for input and destination matrices */\n      pInT1 = pIn;\n      pInT2 = pOut;\n\n      /* index used to check for pivot element */\n      i = 0U;\n\n      /* Loop over number of rows */\n      /*  to be replaced by the sum of that row and a multiple of row i */\n      k = numRows;\n\n      while (k > 0U)\n      {\n        /* Check for the pivot element */\n        if (i == l)\n        {\n          /* If the processing element is the pivot element,\n             only the columns to the right are to be processed */\n          pInT1 += numCols - l;\n\n          pInT2 += numCols;\n        }\n        else\n        {\n          /* Element of the reference row */\n          in = *pInT1;\n\n          /* Working pointers for input and destination pivot rows */\n          pPRT_in = pPivotRowIn;\n          pPRT_pDst = pPivotRowDst;\n\n          /* Loop over the number of columns to the right of the pivot element,\n             to replace the elements in the input matrix */\n          j = (numCols - l);\n\n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            in1 = *pInT1;\n            *pInT1++ = in1 - (in * *pPRT_in++);\n\n            /* Decrement the loop counter */\n            j--;\n          }\n\n          /* Loop over the number of columns to\n             replace the elements in the destination matrix */\n          j = numCols;\n\n          while (j > 0U)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            in1 = *pInT2;\n            *pInT2++ = in1 - (in * *pPRT_pDst++);\n\n            /* Decrement loop counter */\n            j--;\n          }\n\n        }\n\n        /* Increment temporary input pointer */\n        pInT1 = pInT1 + l;\n\n        /* Decrement loop counter */\n        k--;\n\n        /* Increment pivot index */\n        i++;\n      }\n\n      /* Increment the input pointer */\n      pIn++;\n\n      /* Decrement the loop counter */\n      loopCnt--;\n\n      /* Increment the index modifier */\n      l++;\n    }\n\n\n#else\n\n  float64_t Xchg, in = 0.0;                     /* Temporary input values  */\n  uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l;      /* loop counters */\n  arm_status status;                             /* status of matrix inverse */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pSrc->numCols) ||\n      (pDst->numRows != pDst->numCols) ||\n      (pSrc->numRows != pDst->numRows)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n\n    /*--------------------------------------------------------------------------------------------------------------\n     * Matrix Inverse can be solved using elementary row operations.\n     *\n     *  Gauss-Jordan Method:\n     *\n     *      1. First combine the identity matrix and the input matrix separated by a bar to form an\n     *        augmented matrix as follows:\n     *                      _  _          _     _      _   _         _         _\n     *                     |  |  a11  a12  | | | 1   0  |   |       |  X11 X12  |\n     *                     |  |            | | |        |   |   =   |           |\n     *                     |_ |_ a21  a22 _| | |_0   1 _|  _|       |_ X21 X21 _|\n     *\n     *      2. In our implementation, pDst Matrix is used as identity matrix.\n     *\n     *      3. Begin with the first row. Let i = 1.\n     *\n     *      4. Check to see if the pivot for row i is zero.\n     *         The pivot is the element of the main diagonal that is on the current row.\n     *         For instance, if working with row i, then the pivot element is aii.\n     *         If the pivot is zero, exchange that row with a row below it that does not\n     *         contain a zero in column i. If this is not possible, then an inverse\n     *         to that matrix does not exist.\n     *\n     *      5. Divide every element of row i by the pivot.\n     *\n     *      6. For every row below and  row i, replace that row with the sum of that row and\n     *         a multiple of row i so that each new element in column i below row i is zero.\n     *\n     *      7. Move to the next row and column and repeat steps 2 through 5 until you have zeros\n     *         for every element below and above the main diagonal.\n     *\n     *      8. Now an identical matrix is formed to the left of the bar(input matrix, src).\n     *         Therefore, the matrix to the right of the bar is our solution(dst matrix, dst).\n     *----------------------------------------------------------------------------------------------------------------*/\n\n    /* Working pointer for destination matrix */\n    pOutT1 = pOut;\n\n    /* Loop over the number of rows */\n    rowCnt = numRows;\n\n    /* Making the destination matrix as identity matrix */\n    while (rowCnt > 0U)\n    {\n      /* Writing all zeroes in lower triangle of the destination matrix */\n      j = numRows - rowCnt;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0;\n        j--;\n      }\n\n      /* Writing all ones in the diagonal of the destination matrix */\n      *pOutT1++ = 1.0;\n\n      /* Writing all zeroes in upper triangle of the destination matrix */\n      j = rowCnt - 1U;\n      while (j > 0U)\n      {\n        *pOutT1++ = 0.0;\n        j--;\n      }\n\n      /* Decrement loop counter */\n      rowCnt--;\n    }\n\n    /* Loop over the number of columns of the input matrix.\n       All the elements in each column are processed by the row operations */\n    loopCnt = numCols;\n\n    /* Index modifier to navigate through the columns */\n    l = 0U;\n\n    while (loopCnt > 0U)\n    {\n      /* Check if the pivot element is zero..\n       * If it is zero then interchange the row with non zero row below.\n       * If there is no non zero element to replace in the rows below,\n       * then the matrix is Singular. */\n\n      /* Working pointer for the input matrix that points\n       * to the pivot element of the particular row  */\n      pInT1 = pIn + (l * numCols);\n\n      /* Working pointer for the destination matrix that points\n       * to the pivot element of the particular row  */\n      pOutT1 = pOut + (l * numCols);\n\n      /* Temporary variable to hold the pivot value */\n      in = *pInT1;\n\n      /* Destination pointer modifier */\n      k = 1U;\n\n      /* Check if the pivot element is zero */\n      if (*pInT1 == 0.0)\n      {\n        /* Loop over the number rows present below */\n        for (i = (l + 1U); i < numRows; i++)\n        {\n          /* Update the input and destination pointers */\n          pInT2 = pInT1 + (numCols * l);\n          pOutT2 = pOutT1 + (numCols * k);\n\n          /* Check if there is a non zero pivot element to\n           * replace in the rows below */\n          if (*pInT2 != 0.0)\n          {\n            /* Loop over number of columns\n             * to the right of the pilot element */\n            for (j = 0U; j < (numCols - l); j++)\n            {\n              /* Exchange the row elements of the input matrix */\n              Xchg = *pInT2;\n              *pInT2++ = *pInT1;\n              *pInT1++ = Xchg;\n            }\n\n            for (j = 0U; j < numCols; j++)\n            {\n              Xchg = *pOutT2;\n              *pOutT2++ = *pOutT1;\n              *pOutT1++ = Xchg;\n            }\n\n            /* Flag to indicate whether exchange is done or not */\n            flag = 1U;\n\n            /* Break after exchange is done */\n            break;\n          }\n\n          /* Update the destination pointer modifier */\n          k++;\n        }\n      }\n\n      /* Update the status if the matrix is singular */\n      if ((flag != 1U) && (in == 0.0))\n      {\n        return ARM_MATH_SINGULAR;\n      }\n\n      /* Points to the pivot row of input and destination matrices */\n      pPivotRowIn = pIn + (l * numCols);\n      pPivotRowDst = pOut + (l * numCols);\n\n      /* Temporary pointers to the pivot row pointers */\n      pInT1 = pPivotRowIn;\n      pOutT1 = pPivotRowDst;\n\n      /* Pivot element of the row */\n      in = *(pIn + (l * numCols));\n\n      /* Loop over number of columns\n       * to the right of the pilot element */\n      for (j = 0U; j < (numCols - l); j++)\n      {\n        /* Divide each element of the row of the input matrix\n         * by the pivot element */\n        *pInT1 = *pInT1 / in;\n        pInT1++;\n      }\n      for (j = 0U; j < numCols; j++)\n      {\n        /* Divide each element of the row of the destination matrix\n         * by the pivot element */\n        *pOutT1 = *pOutT1 / in;\n        pOutT1++;\n      }\n\n      /* Replace the rows with the sum of that row and a multiple of row i\n       * so that each new element in column i above row i is zero.*/\n\n      /* Temporary pointers for input and destination matrices */\n      pInT1 = pIn;\n      pOutT1 = pOut;\n\n      for (i = 0U; i < numRows; i++)\n      {\n        /* Check for the pivot element */\n        if (i == l)\n        {\n          /* If the processing element is the pivot element,\n             only the columns to the right are to be processed */\n          pInT1 += numCols - l;\n          pOutT1 += numCols;\n        }\n        else\n        {\n          /* Element of the reference row */\n          in = *pInT1;\n\n          /* Working pointers for input and destination pivot rows */\n          pPRT_in = pPivotRowIn;\n          pPRT_pDst = pPivotRowDst;\n\n          /* Loop over the number of columns to the right of the pivot element,\n             to replace the elements in the input matrix */\n          for (j = 0U; j < (numCols - l); j++)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            *pInT1 = *pInT1 - (in * *pPRT_in++);\n            pInT1++;\n          }\n\n          /* Loop over the number of columns to\n             replace the elements in the destination matrix */\n          for (j = 0U; j < numCols; j++)\n          {\n            /* Replace the element by the sum of that row\n               and a multiple of the reference row  */\n            *pOutT1 = *pOutT1 - (in * *pPRT_pDst++);\n            pOutT1++;\n          }\n\n        }\n\n        /* Increment temporary input pointer */\n        pInT1 = pInT1 + l;\n      }\n\n      /* Increment the input pointer */\n      pIn++;\n\n      /* Decrement the loop counter */\n      loopCnt--;\n\n      /* Increment the index modifier */\n      l++;\n    }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n\n    if ((flag != 1U) && (in == 0.0))\n    {\n      pIn = pSrc->pData;\n      for (i = 0; i < numRows * numCols; i++)\n      {\n        if (pIn[i] != 0.0)\n            break;\n      }\n\n      if (i == numRows * numCols)\n        status = ARM_MATH_SINGULAR;\n    }\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixInv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_mult_f32.c\n * Description:  Floating-point matrix multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n * @ingroup groupMatrix\n */\n\n/**\n * @defgroup MatrixMult Matrix Multiplication\n *\n * Multiplies two matrices.\n *\n * \\image html MatrixMultiplication.gif \"Multiplication of two 3 x 3 matrices\"\n\n * Matrix multiplication is only defined if the number of columns of the\n * first matrix equals the number of rows of the second matrix.\n * Multiplying an <code>M x N</code> matrix with an <code>N x P</code> matrix results\n * in an <code>M x P</code> matrix.\n * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of\n * <code>pSrcA</code> and <code>pSrcB</code> are equal; and (2) that the size of the output\n * matrix equals the outer dimensions of <code>pSrcA</code> and <code>pSrcB</code>.\n */\n\n\n/**\n * @addtogroup MatrixMult\n * @{\n */\n\n/**\n * @brief Floating-point matrix multiplication.\n * @param[in]       *pSrcA points to the first input matrix structure\n * @param[in]       *pSrcB points to the second input matrix structure\n * @param[out]      *pDst points to output matrix structure\n * @return     \t\tThe function returns either\n * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n */\n#if defined(ARM_MATH_NEON)\n\n#define GROUPOFROWS 8\n\narm_status arm_mat_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A */\n  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B */\n  float32_t *pInA = pSrcA->pData;                /* input data matrix pointer A  */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  float32_t *px;                                 /* Temporary output data matrix pointer */\n  float32_t sum;                                 /* Accumulator */\n  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A */\n  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */\n  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */\n\n\n  float32_t in1, in2, in3, in4;\n  uint16_t col, i = 0U, j, row = numRowsA, rowCnt, colCnt;      /* loop counters */\n  arm_status status;                             /* status of matrix multiplication */\n\n  float32x4_t a0V, a1V, a2V, a3V, a4V, a5V, a6V, a7V;\n  float32x4_t acc0,acc1,acc2,acc3,acc4,acc5,acc6,acc7,temp;\n  float32x2_t accum = vdup_n_f32(0);\n  float32_t *pIn1B = pSrcA->pData;    \n  float32_t *pIn1C = pSrcA->pData;    \n  float32_t *pIn1D = pSrcA->pData;  \n  float32_t *pIn1E = pSrcA->pData; \n  float32_t *pIn1F = pSrcA->pData; \n  float32_t *pIn1G = pSrcA->pData; \n  float32_t *pIn1H = pSrcA->pData;   \n\n  float32_t *pxB,*pxC, *pxD, *pxE, *pxF, *pxG, *pxH;                                 /* Temporary output data matrix pointer */\n  float32_t sum0,sum1, sum2,sum3, sum4, sum5 , sum6, sum7;\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */\n  {\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* Row loop */\n    rowCnt = row >> 3;\n\n    while(rowCnt > 0)\n    {\n      /* Output pointer is set to starting address of the row being processed */\n      px = pOut + GROUPOFROWS*i;\n      pxB = px + numColsB;\n      pxC = px + 2*numColsB;\n      pxD = px + 3*numColsB;\n      pxE = px + 4*numColsB;\n      pxF = px + 5*numColsB;\n      pxG = px + 6*numColsB;\n      pxH = px + 7*numColsB;\n\n      /* For every row wise process, the column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, the pIn2 pointer is set\n       ** to the starting address of the pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      j = 0U;\n\n      /* Column loop */\n      do\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sum0 = 0.0f;\n        sum1 = 0.0f;\n        sum2 = 0.0f;\n        sum3 = 0.0f;\n        sum4 = 0.0f;\n        sum5 = 0.0f;\n        sum6 = 0.0f;\n        sum7 = 0.0f;\n\n        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */\n        pIn1 = pInA;\n        pIn1B = pIn1 + numColsA;\n        pIn1C = pIn1 + 2*numColsA;\n        pIn1D = pIn1 + 3*numColsA;\n        pIn1E = pIn1 + 4*numColsA;\n        pIn1F = pIn1 + 5*numColsA;\n        pIn1G = pIn1 + 6*numColsA;\n        pIn1H = pIn1 + 7*numColsA;\n\n        acc0 = vdupq_n_f32(0.0);\n        acc1 = vdupq_n_f32(0.0);\n        acc2 = vdupq_n_f32(0.0);\n        acc3 = vdupq_n_f32(0.0);\n        acc4 = vdupq_n_f32(0.0);\n        acc5 = vdupq_n_f32(0.0);\n        acc6 = vdupq_n_f32(0.0);\n        acc7 = vdupq_n_f32(0.0);\n\n        /* Compute 4 MACs simultaneously. */\n        colCnt = numColsA >> 2U;\n\n        /* Matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1)*b(1,1) + a(1,2)*b(2,1) + ... + a(m,p)*b(p,n) */\n          a0V = vld1q_f32(pIn1);  \n          a1V = vld1q_f32(pIn1B);  \n          a2V = vld1q_f32(pIn1C); \n          a3V = vld1q_f32(pIn1D); \n          a4V = vld1q_f32(pIn1E); \n          a5V = vld1q_f32(pIn1F); \n          a6V = vld1q_f32(pIn1G); \n          a7V = vld1q_f32(pIn1H); \n\n\t  pIn1 += 4;\n          pIn1B += 4;\n          pIn1C += 4;\n          pIn1D += 4;\n          pIn1E += 4;\n          pIn1F += 4;\n          pIn1G += 4;\n          pIn1H += 4;\n          \n          temp[0] = *pIn2;\n          pIn2 += numColsB;\n          temp[1] = *pIn2;\n          pIn2 += numColsB;\n          temp[2] = *pIn2;\n          pIn2 += numColsB;\n          temp[3] = *pIn2;\n          pIn2 += numColsB;\n\n          acc0 = vmlaq_f32(acc0,a0V,temp);\n          acc1 = vmlaq_f32(acc1,a1V,temp);\n          acc2 = vmlaq_f32(acc2,a2V,temp);\n          acc3 = vmlaq_f32(acc3,a3V,temp);\n          acc4 = vmlaq_f32(acc4,a4V,temp);\n          acc5 = vmlaq_f32(acc5,a5V,temp);\n          acc6 = vmlaq_f32(acc6,a6V,temp);\n          acc7 = vmlaq_f32(acc7,a7V,temp);\n\n          /* Decrement the loop count */\n          colCnt--;\n        }\n\n        accum = vpadd_f32(vget_low_f32(acc0), vget_high_f32(acc0));\n        sum0 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(acc1), vget_high_f32(acc1));\n        sum1 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(acc2), vget_high_f32(acc2));\n        sum2 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(acc3), vget_high_f32(acc3));\n        sum3 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(acc4), vget_high_f32(acc4));\n        sum4 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(acc5), vget_high_f32(acc5));\n        sum5 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(acc6), vget_high_f32(acc6));\n        sum6 += accum[0] + accum[1];\n\n        accum = vpadd_f32(vget_low_f32(acc7), vget_high_f32(acc7));\n        sum7 += accum[0] + accum[1];\n\n        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        colCnt = numColsA & 3;\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1)*b(1,1) + a(1,2)*b(2,1) + ... + a(m,p)*b(p,n) */\n          sum0 += *pIn1++ * (*pIn2);\n          sum1 += *pIn1B++ * (*pIn2);\n          sum2 += *pIn1C++ * (*pIn2);\n          sum3 += *pIn1D++ * (*pIn2);\n          sum4 += *pIn1E++ * (*pIn2);\n          sum5 += *pIn1F++ * (*pIn2);\n          sum6 += *pIn1G++ * (*pIn2);\n          sum7 += *pIn1H++ * (*pIn2);\n          pIn2 += numColsB;\n\n          /* Decrement the loop counter */\n          colCnt--;\n        }\n\n        /* Store the result in the destination buffer */\n        *px++ = sum0;\n        *pxB++ = sum1;\n        *pxC++ = sum2;\n        *pxD++ = sum3;\n        *pxE++ = sum4;\n        *pxF++ = sum5;\n        *pxG++ = sum6;\n        *pxH++ = sum7;\n\n        /* Update the pointer pIn2 to point to the  starting address of the next column */\n        j++;\n        pIn2 = pSrcB->pData + j;\n\n        /* Decrement the column loop counter */\n        col--;\n\n      } while (col > 0U);\n\n      /* Update the pointer pInA to point to the  starting address of the next row */\n      i = i + numColsB;\n      pInA = pInA + GROUPOFROWS*numColsA;\n\n      /* Decrement the row loop counter */\n      rowCnt--;\n    } \n\n    /*\n\n    i was the index of a group of rows computed by previous loop.\n    Now i is the index of a row since below code is computing row per row\n    and no more group of row per group of rows.\n\n    */\n\n    i = GROUPOFROWS*i;\n    rowCnt = row & 7;\n\n    while(rowCnt > 0)\n    {\n      /* Output pointer is set to starting address of the row being processed */\n      px = pOut + i;\n\n      /* For every row wise process, the column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, the pIn2 pointer is set\n       ** to the starting address of the pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      j = 0U;\n\n      /* Column loop */\n      do\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sum = 0.0f;\n\n        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */\n        pIn1 = pInA;\n\n        acc0 = vdupq_n_f32(0.0);\n\n        /* Compute 4 MACs simultaneously. */\n        colCnt = numColsA >> 2U;\n\n        /* Matrix multiplication   */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1)*b(1,1) + a(1,2)*b(2,1) + ... + a(m,p)*b(p,n) */\n          a0V = vld1q_f32(pIn1);  // load & separate real/imag pSrcA (de-interleave 2)\n          pIn1 += 4;\n          \n          temp[0] = *pIn2;\n          pIn2 += numColsB;\n          temp[1] = *pIn2;\n          pIn2 += numColsB;\n          temp[2] = *pIn2;\n          pIn2 += numColsB;\n          temp[3] = *pIn2;\n          pIn2 += numColsB;\n\n          acc0 = vmlaq_f32(acc0,a0V,temp);\n\n          /* Decrement the loop count */\n          colCnt--;\n        }\n\n        accum = vpadd_f32(vget_low_f32(acc0), vget_high_f32(acc0));\n        sum += accum[0] + accum[1];\n\n        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.\n         ** No loop unrolling is used. */\n        colCnt = numColsA % 0x4U;\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1)*b(1,1) + a(1,2)*b(2,1) + ... + a(m,p)*b(p,n) */\n          sum += *pIn1++ * (*pIn2);\n          pIn2 += numColsB;\n\n          /* Decrement the loop counter */\n          colCnt--;\n        }\n\n        /* Store the result in the destination buffer */\n        *px++ = sum;\n\n        /* Update the pointer pIn2 to point to the  starting address of the next column */\n        j++;\n        pIn2 = pSrcB->pData + j;\n\n        /* Decrement the column loop counter */\n        col--;\n\n      } while (col > 0U);\n\n\n      /* Update the pointer pInA to point to the  starting address of the next row */\n      i = i + numColsB;\n      pInA = pInA + numColsA;\n\n      /* Decrement the row loop counter */\n      rowCnt--;\n\n    } \n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#else\narm_status arm_mat_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn1 = pSrcA->pData;                /* Input data matrix pointer A */\n  float32_t *pIn2 = pSrcB->pData;                /* Input data matrix pointer B */\n  float32_t *pInA = pSrcA->pData;                /* Input data matrix pointer A */\n  float32_t *pInB = pSrcB->pData;                /* Input data matrix pointer B */\n  float32_t *pOut = pDst->pData;                 /* Output data matrix pointer */\n  float32_t *px;                                 /* Temporary output data matrix pointer */\n  float32_t sum;                                 /* Accumulator */\n  uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A */\n  uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n  uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n  uint32_t col, i = 0U, row = numRowsA, colCnt;  /* Loop counters */\n  arm_status status;                             /* Status of matrix multiplication */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    do\n    {\n      /* Output pointer is set to starting address of row being processed */\n      px = pOut + i;\n\n      /* For every row wise process, column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, pIn2 pointer is set to starting address of pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      /* column loop */\n      do\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sum = 0.0f;\n\n        /* Initialize pointer pIn1 to point to starting address of column being processed */\n        pIn1 = pInA;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 MACs at a time. */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* Perform the multiply-accumulates */\n          sum += *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          sum += *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          sum += *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          sum += *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Loop unrolling: Compute remaining MACs */\n        colCnt = numColsA % 0x4U;\n\n#else\n\n        /* Initialize cntCnt with number of columns */\n        colCnt = numColsA;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* Perform the multiply-accumulates */\n          sum += *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Store result in destination buffer */\n        *px++ = sum;\n\n        /* Decrement column loop counter */\n        col--;\n\n        /* Update pointer pIn2 to point to starting address of next column */\n        pIn2 = pInB + (numColsB - col);\n\n      } while (col > 0U);\n\n      /* Update pointer pInA to point to starting address of next row */\n      i = i + numColsB;\n      pInA = pInA + numColsA;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n * @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_mult_fast_q15.c\n * Description:  Q15 matrix multiplication (fast variant)\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixMult\n  @{\n */\n\n/**\n  @brief         Q15 matrix multiplication (fast variant).\n  @param[in]     pSrcA      points to the first input matrix structure\n  @param[in]     pSrcB      points to the second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @param[in]     pState     points to the array for storing intermediate results\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The difference between the function \\ref arm_mat_mult_q15() and this fast variant is that\n                   the fast variant use a 32-bit rather than a 64-bit accumulator.\n                   The result of each 1.15 x 1.15 multiplication is truncated to\n                   2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30\n                   format. Finally, the accumulator is saturated and converted to a 1.15 result.\n  @par\n                   The fast version has the same overflow behavior as the standard version but provides\n                   less precision since it discards the low 16 bits of each multiplication result.\n                   In order to avoid overflows completely the input signals must be scaled down.\n                   Scale down one of the input matrices by log2(numColsA) bits to avoid overflows,\n                   as a total of numColsA additions are computed internally for each output element.\n  @remark\n                   Refer to \\ref arm_mat_mult_q15() for a slower implementation of this function\n                   which uses 64-bit accumulation to provide higher precision.\n */\n\narm_status arm_mat_mult_fast_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst,\n        q15_t                   * pState)\n{\n        q31_t sum;                                     /* Accumulator */\n        q15_t *pSrcBT = pState;                        /* Input data matrix pointer for transpose */\n        q15_t *pInA = pSrcA->pData;                    /* Input data matrix pointer A of Q15 type */\n        q15_t *pInB = pSrcB->pData;                    /* Input data matrix pointer B of Q15 type */\n        q15_t *px;                                     /* Temporary output data matrix pointer */\n        uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A */\n        uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n        uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n        uint16_t numRowsB = pSrcB->numRows;            /* Number of rows of input matrix A */\n        uint32_t col, i = 0U, row = numRowsB, colCnt;  /* Loop counters */\n        arm_status status;                             /* Status of matrix multiplication */\n\n#if defined (ARM_MATH_DSP)\n        q31_t in;                                      /* Temporary variable to hold the input value */\n        q31_t inA1, inB1, inA2, inB2;\n        q31_t sum2, sum3, sum4;\n        q15_t *pInA2, *pInB2, *px2;\n        uint32_t j = 0;\n#else\n        q15_t in;                                      /* Temporary variable to hold the input value */\n        q15_t inA1, inB1, inA2, inB2;\n#endif /* #if defined (ARM_MATH_DSP) */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Matrix transpose */\n    do\n    {\n      /* The pointer px is set to starting address of column being processed */\n      px = pSrcBT + i;\n\n      /* Apply loop unrolling and exchange columns with row elements */\n      col = numColsB >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n       ** a second loop below computes the remaining 1 to 3 samples. */\n      while (col > 0U)\n      {\n\n#if defined (ARM_MATH_DSP)\n\n        /* Read two elements from row */\n        in = read_q15x2_ia ((q15_t **) &pInB);\n\n        /* Unpack and store one element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) in;\n#else\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB;\n\n        /* Unpack and store second element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#else\n        *px = (q15_t) in;\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB;\n\n        in = read_q15x2_ia ((q15_t **) &pInB);\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) in;\n#else\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n        px += numRowsB;\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#else\n        *px = (q15_t) in;\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n        px += numRowsB;\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n        /* Read one element from row */\n        in = *pInB++;\n\n        /* Store one element in destination */\n        *px = in;\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB;\n\n        in = *pInB++;\n        *px = in;\n        px += numRowsB;\n\n        in = *pInB++;\n        *px = in;\n        px += numRowsB;\n\n        in = *pInB++;\n        *px = in;\n        px += numRowsB;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.\n       ** No loop unrolling is used. */\n      col = numColsB % 0x4U;\n\n      while (col > 0U)\n      {\n        /* Read and store input element in destination */\n        *px = *pInB++;\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      i++;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Reset variables for usage in following multiplication process */\n    row = numRowsA;\n    i = 0U;\n    px = pDst->pData;\n\n#if defined (ARM_MATH_DSP)\n    /* Process two rows from matrix A at a time and output two rows at a time */\n    row = row >> 1U;\n    px2 = px + numColsB;\n#endif\n\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    while (row > 0U)\n    {\n      /* For every row wise process, column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, pIn2 pointer is set to starting address of transposed pSrcB data */\n      pInB = pSrcBT;\n\n#if defined (ARM_MATH_DSP)\n      /* Process two (transposed) columns from matrix B at a time */\n      col = col >> 1U;\n      j = 0;\n#endif\n\n      /* column loop */\n      while (col > 0U)\n      {\n        /* Set variable sum, that acts as accumulator, to zero */\n        sum = 0;\n\n        /* Initiate pointer pInA to point to starting address of column being processed */\n        pInA = pSrcA->pData + i;\n\n#if defined (ARM_MATH_DSP)\n        sum2 = 0;\n        sum3 = 0;\n        sum4 = 0;\n        pInB  = pSrcBT + j;\n        pInA2 = pInA + numColsA;\n        pInB2 = pInB + numRowsB;\n\n        /* Read in two elements at once - alows dual MAC instruction */\n        colCnt = numColsA >> 1U;\n#else\n        colCnt = numColsA >> 2U;\n#endif\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n#if defined (ARM_MATH_DSP)\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          inA1 = read_q15x2_ia ((q15_t **) &pInA);\n          inB1 = read_q15x2_ia ((q15_t **) &pInB);\n\n          inA2 = read_q15x2_ia ((q15_t **) &pInA2);\n          inB2 = read_q15x2_ia ((q15_t **) &pInB2);\n\n          /* Multiply and Accumlates */\n          sum  = __SMLAD(inA1, inB1, sum);\n          sum2 = __SMLAD(inA1, inB2, sum2);\n          sum3 = __SMLAD(inA2, inB1, sum3);\n          sum4 = __SMLAD(inA2, inB2, sum4);\n#else\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          inA1 = *pInA++;\n          inB1 = *pInB++;\n          /* Multiply and Accumlates */\n          sum += inA1 * inB1;\n\n          inA2 = *pInA++;\n          inB2 = *pInB++;\n          sum += inA2 * inB2;\n\n          inA1 = *pInA++;\n          inB1 = *pInB++;\n          sum += inA1 * inB1;\n\n          inA2 = *pInA++;\n          inB2 = *pInB++;\n          sum += inA2 * inB2;\n#endif /* #if defined (ARM_MATH_DSP) */\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* process odd column samples */\n#if defined (ARM_MATH_DSP)\n        if (numColsA & 1U) {\n          inA1 = *pInA++;\n          inB1 = *pInB++;\n          inA2 = *pInA2++;\n          inB2 = *pInB2++;\n          sum  += inA1 * inB1;\n          sum2 += inA1 * inB2;\n          sum3 += inA2 * inB1;\n          sum4 += inA2 * inB2;\n        }\n#else\n        colCnt = numColsA % 0x4U;\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n          sum += (q31_t) *pInA++ * *pInB++;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n#endif /* #if defined (ARM_MATH_DSP) */\n\n        /* Saturate and store result in destination buffer */\n        *px++  = (q15_t) (sum >> 15);\n\n#if defined (ARM_MATH_DSP)\n        *px++  = (q15_t) (sum2 >> 15);\n        *px2++ = (q15_t) (sum3 >> 15);\n        *px2++ = (q15_t) (sum4 >> 15);\n        j += numRowsB * 2;\n#endif\n\n        /* Decrement column loop counter */\n        col--;\n\n      }\n\n      i = i + numColsA;\n\n#if defined (ARM_MATH_DSP)\n      i = i + numColsA;\n      px = px2 + (numColsB & 1U);\n      px2 = px + numColsB;\n#endif\n\n      /* Decrement row loop counter */\n      row--;\n\n    }\n\n    /* Compute any remaining odd row/column below */\n\n#if defined (ARM_MATH_DSP)\n\n    /* Compute remaining output column */\n    if (numColsB & 1U) {\n\n      /* Avoid redundant computation of last element */\n      row = numRowsA & (~0x1);\n\n      /* Point to remaining unfilled column in output matrix */\n      px = pDst->pData + numColsB-1;\n      pInA = pSrcA->pData;\n\n      /* row loop */\n      while (row > 0)\n      {\n\n        /* point to last column in matrix B */\n        pInB  = pSrcBT + numRowsB * (numColsB-1);\n\n        /* Set variable sum, that acts as accumulator, to zero */\n        sum  = 0;\n\n        /* Compute 4 columns at once */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          inA1 = read_q15x2_ia ((q15_t **) &pInA);\n          inA2 = read_q15x2_ia ((q15_t **) &pInA);\n          inB1 = read_q15x2_ia ((q15_t **) &pInB);\n          inB2 = read_q15x2_ia ((q15_t **) &pInB);\n\n          sum  = __SMLAD(inA1, inB1, sum);\n          sum  = __SMLAD(inA2, inB2, sum);\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        colCnt = numColsA & 3U;\n        while (colCnt > 0U) {\n          sum += (q31_t) (*pInA++) * (*pInB++);\n          colCnt--;\n        }\n\n        /* Store result in destination buffer */\n        *px = (q15_t) (sum  >> 15);\n        px += numColsB;\n\n        /* Decrement row loop counter */\n        row--;\n      }\n    }\n\n    /* Compute remaining output row */\n    if (numRowsA & 1U) {\n\n      /* point to last row in output matrix */\n      px = pDst->pData + (numColsB) * (numRowsA-1);\n\n      pInB  = pSrcBT;\n      col = numColsB;\n      i = 0U;\n\n      /* col loop */\n      while (col > 0)\n      {\n        /* point to last row in matrix A */\n        pInA = pSrcA->pData + (numRowsA-1) * numColsA;\n\n        /* Set variable sum, that acts as accumulator, to zero */\n        sum  = 0;\n\n        /* Compute 4 columns at once */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          inA1 = read_q15x2_ia ((q15_t **) &pInA);\n          inA2 = read_q15x2_ia ((q15_t **) &pInA);\n          inB1 = read_q15x2_ia ((q15_t **) &pInB);\n          inB2 = read_q15x2_ia ((q15_t **) &pInB);\n\n          sum  = __SMLAD(inA1, inB1, sum);\n          sum  = __SMLAD(inA2, inB2, sum);\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        colCnt = numColsA % 4U;\n        while (colCnt > 0U) {\n          sum += (q31_t) (*pInA++) * (*pInB++);\n\n          colCnt--;\n        }\n\n        /* Store result in destination buffer */\n        *px++ = (q15_t) (sum  >> 15);\n\n        /* Decrement column loop counter */\n        col--;\n      }\n    }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_mult_fast_q31.c\n * Description:  Q31 matrix multiplication (fast variant)\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixMult\n  @{\n */\n\n/**\n  @brief         Q31 matrix multiplication (fast variant).\n  @param[in]     pSrcA      points to the first input matrix structure\n  @param[in]     pSrcB      points to the second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The difference between the function \\ref arm_mat_mult_q31() and this fast variant is that\n                   the fast variant use a 32-bit rather than a 64-bit accumulator.\n                   The result of each 1.31 x 1.31 multiplication is truncated to\n                   2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30\n                   format. Finally, the accumulator is saturated and converted to a 1.31 result.\n  @par\n                   The fast version has the same overflow behavior as the standard version but provides\n                   less precision since it discards the low 32 bits of each multiplication result.\n                   In order to avoid overflows completely the input signals must be scaled down.\n                   Scale down one of the input matrices by log2(numColsA) bits to avoid overflows,\n                   as a total of numColsA additions are computed internally for each output element.\n  @remark\n                   Refer to \\ref arm_mat_mult_q31() for a slower implementation of this function\n                   which uses 64-bit accumulation to provide higher precision.\n */\n\narm_status arm_mat_mult_fast_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst)\n{\n  q31_t *pInA = pSrcA->pData;                    /* Input data matrix pointer A */\n  q31_t *pInB = pSrcB->pData;                    /* Input data matrix pointer B */\n  q31_t *pInA2;\n  q31_t *px;                                     /* Temporary output data matrix pointer */\n  q31_t *px2;\n  q31_t sum1, sum2, sum3, sum4;                  /* Accumulator */\n  q31_t inA1, inA2, inB1, inB2;\n  uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A */\n  uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n  uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n  uint32_t col, i = 0U, j, row = numRowsA, colCnt;  /* Loop counters */\n  arm_status status;                             /* Status of matrix multiplication */\n\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    px = pDst->pData;\n\n    row = row >> 1U;\n    px2 = px + numColsB;\n\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    while (row > 0U)\n    {\n      /* For every row wise process, column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, pIn2 pointer is set to starting address of pSrcB data */\n      pInB = pSrcB->pData;\n\n      j = 0U;\n\n      col = col >> 1U;\n\n      /* column loop */\n      while (col > 0U)\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sum1 = 0;\n        sum2 = 0;\n        sum3 = 0;\n        sum4 = 0;\n        \n        /* Initiate data pointers */\n        pInA = pSrcA->pData + i;\n        pInB = pSrcB->pData + j;\n        pInA2 = pInA + numColsA;\n        \n        colCnt = numColsA;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          inA1 = *pInA++;\n          inB1 = pInB[0];\n          inA2 = *pInA2++;\n          inB2 = pInB[1];\n          pInB += numColsB;\n\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(inA1, inB1, sum1);\n          sum2 = __SMMLA(inA1, inB2, sum2);\n          sum3 = __SMMLA(inA2, inB1, sum3);\n          sum4 = __SMMLA(inA2, inB2, sum4);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) inA1 * inB1)) >> 32);\n          sum2 = (q31_t) ((((q63_t) sum2 << 32) + ((q63_t) inA1 * inB2)) >> 32);\n          sum3 = (q31_t) ((((q63_t) sum3 << 32) + ((q63_t) inA2 * inB1)) >> 32);\n          sum4 = (q31_t) ((((q63_t) sum4 << 32) + ((q63_t) inA2 * inB2)) >> 32);\n#endif\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Convert the result from 2.30 to 1.31 format and store in destination buffer */\n        *px++  = sum1 << 1;\n        *px++  = sum2 << 1;\n        *px2++ = sum3 << 1;\n        *px2++ = sum4 << 1;\n\n        j += 2;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      i = i + (numColsA << 1U);\n      px  = px2 + (numColsB & 1U);\n      px2 = px  +  numColsB;\n\n      /* Decrement row loop counter */\n      row--;\n    }\n\n    /* Compute any remaining odd row/column below */\n\n    /* Compute remaining output column */\n    if (numColsB & 1U) {\n\n      /* Avoid redundant computation of last element */\n      row = numRowsA & (~1U);\n\n      /* Point to remaining unfilled column in output matrix */\n      px = pDst->pData + numColsB-1;\n      pInA = pSrcA->pData;\n\n      /* row loop */\n      while (row > 0)\n      {\n\n        /* point to last column in matrix B */\n        pInB  = pSrcB->pData + numColsB-1;\n\n        /* Set variable sum1, that acts as accumulator, to zero */\n        sum1  = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 columns at a time. */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(*pInA++, *pInB, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) *pInA++ * *pInB)) >> 32);\n#endif\n          pInB += numColsB;\n\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(*pInA++, *pInB, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) *pInA++ * *pInB)) >> 32);\n#endif\n          pInB += numColsB;\n\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(*pInA++, *pInB, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) *pInA++ * *pInB)) >> 32);\n#endif\n          pInB += numColsB;\n\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(*pInA++, *pInB, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) *pInA++ * *pInB)) >> 32);\n#endif\n          pInB += numColsB;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Loop unrolling: Compute remaining column */\n        colCnt = numColsA % 4U;\n\n#else\n\n        /* Initialize colCnt with number of columns */\n        colCnt = numColsA;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (colCnt > 0U) {\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(*pInA++, *pInB, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) *pInA++ * *pInB)) >> 32);\n#endif\n          pInB += numColsB;\n          \n          colCnt--;\n        }\n\n        /* Convert the result from 2.30 to 1.31 format and store in destination buffer */\n        *px = sum1 << 1;\n        px += numColsB;\n\n        /* Decrement row loop counter */\n        row--;\n      }\n    }\n\n    /* Compute remaining output row */\n    if (numRowsA & 1U) {\n\n      /* point to last row in output matrix */\n      px = pDst->pData + (numColsB) * (numRowsA-1);\n\n      col = numColsB;\n      i = 0U;\n\n      /* col loop */\n      while (col > 0)\n      {\n\n        /* point to last row in matrix A */\n        pInA = pSrcA->pData + (numRowsA-1) * numColsA;\n        pInB  = pSrcB->pData + i;\n\n        /* Set variable sum1, that acts as accumulator, to zero */\n        sum1  = 0;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 columns at a time. */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          inA1 = *pInA++;\n          inA2 = *pInA++;\n          inB1 = *pInB;\n          pInB += numColsB;\n          inB2 = *pInB;\n          pInB += numColsB;\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(inA1, inB1, sum1);\n          sum1 = __SMMLA(inA2, inB2, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) inA1 * inB1)) >> 32);\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) inA2 * inB2)) >> 32);\n#endif\n\n          inA1 = *pInA++;\n          inA2 = *pInA++;\n          inB1 = *pInB;\n          pInB += numColsB;\n          inB2 = *pInB;\n          pInB += numColsB;\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(inA1, inB1, sum1);\n          sum1 = __SMMLA(inA2, inB2, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) inA1 * inB1)) >> 32);\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) inA2 * inB2)) >> 32);\n#endif\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Loop unrolling: Compute remaining column */\n        colCnt = numColsA % 4U;\n\n#else\n\n        /* Initialize colCnt with number of columns */\n        colCnt = numColsA;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (colCnt > 0U) {\n#if defined (ARM_MATH_DSP)\n          sum1 = __SMMLA(*pInA++, *pInB, sum1);\n#else\n          sum1 = (q31_t) ((((q63_t) sum1 << 32) + ((q63_t) *pInA++ * *pInB)) >> 32);\n#endif\n          pInB += numColsB;\n\n          colCnt--;\n        }\n\n        /* Saturate and store the result in the destination buffer */\n        *px++ = sum1 << 1;\n        i++;\n\n        /* Decrement col loop counter */\n        col--;\n      }\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_mult_q15.c\n * Description:  Q15 matrix multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixMult\n  @{\n */\n\n/**\n  @brief         Q15 matrix multiplication.\n  @param[in]     pSrcA      points to the first input matrix structure\n  @param[in]     pSrcB      points to the second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @param[in]     pState     points to the array for storing intermediate results (Unused)\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator. The inputs to the\n                   multiplications are in 1.15 format and multiplications yield a 2.30 result.\n                   The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n                   This approach provides 33 guard bits and there is no risk of overflow.\n                   The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits\n                   and then saturated to 1.15 format.\n  @par\n                   Refer to \\ref arm_mat_mult_fast_q15() for a faster but less precise version of this function.\n */\n\narm_status arm_mat_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst,\n        q15_t                   * pState)\n{\n        q63_t sum;                                     /* Accumulator */\n\n#if defined (ARM_MATH_DSP)                             /* != CM0 */\n\n        q15_t *pSrcBT = pState;                        /* Input data matrix pointer for transpose */\n        q15_t *pInA = pSrcA->pData;                    /* Input data matrix pointer A of Q15 type */\n        q15_t *pInB = pSrcB->pData;                    /* Input data matrix pointer B of Q15 type */\n        q15_t *px;                                     /* Temporary output data matrix pointer */\n        uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A */\n        uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n        uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n        uint16_t numRowsB = pSrcB->numRows;            /* Number of rows of input matrix A */\n        uint32_t col, i = 0U, row = numRowsB, colCnt;  /* Loop counters */\n        arm_status status;                             /* Status of matrix multiplication */\n        \n        q31_t in;                                      /* Temporary variable to hold the input value */\n        q31_t inA1, inB1, inA2, inB2;\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Matrix transpose */\n    do\n    {\n      /* The pointer px is set to starting address of column being processed */\n      px = pSrcBT + i;\n\n      /* Apply loop unrolling and exchange columns with row elements */\n      col = numColsB >> 2U;\n\n      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n       ** a second loop below computes the remaining 1 to 3 samples. */\n      while (col > 0U)\n      {\n        /* Read two elements from row */\n        in = read_q15x2_ia ((q15_t **) &pInB);\n\n        /* Unpack and store one element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) in;\n#else\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB;\n\n        /* Unpack and store second element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#else\n        *px = (q15_t) in;\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB;\n\n        /* Read two elements from row */\n        in = read_q15x2_ia ((q15_t **) &pInB);\n\n        /* Unpack and store one element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) in;\n#else\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n        px += numRowsB;\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#else\n        *px = (q15_t) in;\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n        px += numRowsB;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.\n       ** No loop unrolling is used. */\n      col = numColsB % 0x4U;\n\n      while (col > 0U)\n      {\n        /* Read and store input element in destination */\n        *px = *pInB++;\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += numRowsB;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      i++;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Reset variables for usage in following multiplication process */\n    row = numRowsA;\n    i = 0U;\n    px = pDst->pData;\n\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    do\n    {\n      /* For every row wise process, column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, pIn2 pointer is set to starting address of transposed pSrcB data */\n      pInB = pSrcBT;\n\n      /* column loop */\n      do\n      {\n        /* Set variable sum, that acts as accumulator, to zero */\n        sum = 0;\n\n        /* Initiate pointer pInA to point to starting address of column being processed */\n        pInA = pSrcA->pData + i;\n\n        /* Apply loop unrolling and compute 2 MACs simultaneously. */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* read real and imag values from pSrcA and pSrcB buffer */\n          inA1 = read_q15x2_ia ((q15_t **) &pInA);\n          inB1 = read_q15x2_ia ((q15_t **) &pInB);\n\n          inA2 = read_q15x2_ia ((q15_t **) &pInA);\n          inB2 = read_q15x2_ia ((q15_t **) &pInB);\n\n          /* Multiply and Accumlates */\n          sum = __SMLALD(inA1, inB1, sum);\n          sum = __SMLALD(inA2, inB2, sum);\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* process remaining column samples */\n        colCnt = numColsA % 0x4U;\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n          sum += *pInA++ * *pInB++;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Saturate and store result in destination buffer */\n        *px = (q15_t) (__SSAT((sum >> 15), 16));\n        px++;\n\n        /* Decrement column loop counter */\n        col--;\n\n      } while (col > 0U);\n\n      i = i + numColsA;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n        q15_t *pIn1 = pSrcA->pData;                    /* Input data matrix pointer A */\n        q15_t *pIn2 = pSrcB->pData;                    /* Input data matrix pointer B */\n        q15_t *pInA = pSrcA->pData;                    /* Input data matrix pointer A of Q15 type */\n        q15_t *pInB = pSrcB->pData;                    /* Input data matrix pointer B of Q15 type */\n        q15_t *pOut = pDst->pData;                     /* Output data matrix pointer */\n        q15_t *px;                                     /* Temporary output data matrix pointer */\n        uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n        uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n        uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A    */\n        uint32_t col, i = 0U, row = numRowsA, colCnt;  /* Loop counters */\n        arm_status status;                             /* Status of matrix multiplication */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    do\n    {\n      /* Output pointer is set to starting address of the row being processed */\n      px = pOut + i;\n\n      /* For every row wise process, column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, pIn2 pointer is set to starting address of pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      /* column loop */\n      do\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sum = 0;\n\n        /* Initiate pointer pIn1 to point to starting address of pSrcA */\n        pIn1 = pInA;\n\n        /* Matrix A columns number of MAC operations are to be performed */\n        colCnt = numColsA;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* Perform multiply-accumulates */\n          sum += (q31_t) * pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Convert result from 34.30 to 1.15 format and store saturated value in destination buffer */\n\n        /* Saturate and store result in destination buffer */\n        *px++ = (q15_t) __SSAT((sum >> 15), 16);\n\n        /* Decrement column loop counter */\n        col--;\n\n        /* Update pointer pIn2 to point to starting address of next column */\n        pIn2 = pInB + (numColsB - col);\n\n      } while (col > 0U);\n\n      /* Update pointer pSrcA to point to starting address of next row */\n      i = i + numColsB;\n      pInA = pInA + numColsA;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_mult_q31.c\n * Description:  Q31 matrix multiplication\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixMult\n  @{\n */\n\n/**\n  @brief         Q31 matrix multiplication.\n  @param[in]     pSrcA      points to the first input matrix structure\n  @param[in]     pSrcB      points to the second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The accumulator has a 2.62 format and maintains full precision of the intermediate\n                   multiplication results but provides only a single guard bit. There is no saturation\n                   on intermediate additions. Thus, if the accumulator overflows it wraps around and\n                   distorts the result. The input signals should be scaled down to avoid intermediate\n                   overflows. The input is thus scaled down by log2(numColsA) bits\n                   to avoid overflows, as a total of numColsA additions are performed internally.\n                   The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.\n  @remark\n                   Refer to \\ref arm_mat_mult_fast_q31() for a faster but less precise implementation of this function.\n */\n\narm_status arm_mat_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst)\n{\n  q31_t *pIn1 = pSrcA->pData;                    /* Input data matrix pointer A */\n  q31_t *pIn2 = pSrcB->pData;                    /* Input data matrix pointer B */\n  q31_t *pInA = pSrcA->pData;                    /* Input data matrix pointer A */\n  q31_t *pInB = pSrcB->pData;                    /* Input data matrix pointer B */\n  q31_t *pOut = pDst->pData;                     /* Output data matrix pointer */\n  q31_t *px;                                     /* Temporary output data matrix pointer */\n  q63_t sum;                                     /* Accumulator */\n  uint16_t numRowsA = pSrcA->numRows;            /* Number of rows of input matrix A */\n  uint16_t numColsB = pSrcB->numCols;            /* Number of columns of input matrix B */\n  uint16_t numColsA = pSrcA->numCols;            /* Number of columns of input matrix A */\n  uint32_t col, i = 0U, row = numRowsA, colCnt;  /* Loop counters */\n  arm_status status;                             /* Status of matrix multiplication */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numCols != pSrcB->numRows) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcB->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */\n    /* row loop */\n    do\n    {\n      /* Output pointer is set to starting address of row being processed */\n      px = pOut + i;\n\n      /* For every row wise process, column loop counter is to be initiated */\n      col = numColsB;\n\n      /* For every row wise process, pIn2 pointer is set to starting address of pSrcB data */\n      pIn2 = pSrcB->pData;\n\n      /* column loop */\n      do\n      {\n        /* Set the variable sum, that acts as accumulator, to zero */\n        sum = 0;\n\n        /* Initialize pointer pIn1 to point to starting address of column being processed */\n        pIn1 = pInA;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        /* Loop unrolling: Compute 4 MACs at a time. */\n        colCnt = numColsA >> 2U;\n\n        /* matrix multiplication */\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* Perform the multiply-accumulates */\n          sum += (q63_t) *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          sum += (q63_t) *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          sum += (q63_t) *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          sum += (q63_t) *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Loop unrolling: Compute remaining MACs */\n        colCnt = numColsA % 0x4U;\n\n#else\n\n        /* Initialize cntCnt with number of columns */\n        colCnt = numColsA;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n        while (colCnt > 0U)\n        {\n          /* c(m,n) = a(1,1) * b(1,1) + a(1,2) * b(2,1) + .... + a(m,p) * b(p,n) */\n\n          /* Perform the multiply-accumulates */\n          sum += (q63_t) *pIn1++ * *pIn2;\n          pIn2 += numColsB;\n\n          /* Decrement loop counter */\n          colCnt--;\n        }\n\n        /* Convert result from 2.62 to 1.31 format and store in destination buffer */\n        *px++ = (q31_t) (sum >> 31);\n\n        /* Decrement column loop counter */\n        col--;\n\n        /* Update pointer pIn2 to point to starting address of next column */\n        pIn2 = pInB + (numColsB - col);\n\n      } while (col > 0U);\n\n      /* Update pointer pInA to point to starting address of next row */\n      i = i + numColsB;\n      pInA = pInA + numColsA;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixMult group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_scale_f32.c\n * Description:  Multiplies a floating-point matrix by a scalar\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup MatrixScale Matrix Scale\n\n  Multiplies a matrix by a scalar.  This is accomplished by multiplying each element in the\n  matrix by the scalar.  For example:\n  \\image html MatrixScale.gif \"Matrix Scaling of a 3 x 3 matrix\"\n\n  The function checks to make sure that the input and output matrices are of the same size.\n\n  In the fixed-point Q15 and Q31 functions, <code>scale</code> is represented by\n  a fractional multiplication <code>scaleFract</code> and an arithmetic shift <code>shift</code>.\n  The shift allows the gain of the scaling operation to exceed 1.0.\n  The overall scale factor applied to the fixed-point data is\n  <pre>\n      scale = scaleFract * 2^shift.\n  </pre>\n */\n\n/**\n  @addtogroup MatrixScale\n  @{\n */\n\n/**\n  @brief         Floating-point matrix scaling.\n  @param[in]     pSrc       points to input matrix\n  @param[in]     scale      scale factor to be applied\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n */\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\narm_status arm_mat_scale_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  float32_t scale,\n  arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  uint32_t numSamples;                           /* total number of elements in the matrix */\n  uint32_t blkCnt;                               /* loop counters */\n  arm_status status;                             /* status of matrix scaling     */\n\n\n  float32_t in1, in2, in3, in4;                  /* temporary variables */\n  float32_t out1, out2, out3, out4;              /* temporary variables */\n\n\n#ifdef ARM_MATH_MATRIX_CHECK\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols))\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */\n  {\n    float32x4_t vec1;\n    float32x4_t res;\n\n    /* Total number of samples in the input matrix */\n    numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;\n\n    blkCnt = numSamples >> 2;\n\n    /* Compute 4 outputs at a time.\n     ** a second loop below computes the remaining 1 to 3 samples. */\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * scale */\n      /* Scaling and results are stored in the destination buffer. */\n      vec1 = vld1q_f32(pIn);\n      res = vmulq_f32(vec1, vdupq_n_f32(scale));\n      vst1q_f32(pOut, res);\n\n      /* update pointers to process next sampels */\n      pIn += 4U;\n      pOut += 4U;\n\n      /* Decrement the numSamples loop counter */\n      blkCnt--;\n    }\n\n    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = numSamples % 0x4U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * scale */\n      /* The results are stored in the destination buffer. */\n      *pOut++ = (*pIn++) * scale;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#else\narm_status arm_mat_scale_f32(\n  const arm_matrix_instance_f32 * pSrc,\n        float32_t                 scale,\n        arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn = pSrc->pData;                  /* Input data matrix pointer */\n  float32_t *pOut = pDst->pData;                 /* Output data matrix pointer */\n  uint32_t numSamples;                           /* Total number of elements in the matrix */\n  uint32_t blkCnt;                               /* Loop counters */\n  arm_status status;                             /* Status of matrix scaling */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numRows) ||\n      (pSrc->numCols != pDst->numCols)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * scale */\n\n      /* Scale and store result in destination buffer. */\n      *pOut++ = (*pIn++) * scale;\n      *pOut++ = (*pIn++) * scale;\n      *pOut++ = (*pIn++) * scale;\n      *pOut++ = (*pIn++) * scale;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * scale */\n\n      /* Scale and store result in destination buffer. */\n      *pOut++ = (*pIn++) * scale;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of MatrixScale group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_scale_q15.c\n * Description:  Multiplies a Q15 matrix by a scalar\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixScale\n  @{\n */\n\n/**\n  @brief         Q15 matrix scaling.\n  @param[in]     pSrc        points to input matrix\n  @param[in]     scaleFract  fractional portion of the scale factor\n  @param[in]     shift       number of bits to shift the result by\n  @param[out]    pDst        points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.15 format.\n                   These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format.\n */\n\narm_status arm_mat_scale_q15(\n  const arm_matrix_instance_q15 * pSrc,\n        q15_t                     scaleFract,\n        int32_t                   shift,\n        arm_matrix_instance_q15 * pDst)\n{\n        q15_t *pIn = pSrc->pData;                      /* Input data matrix pointer */\n        q15_t *pOut = pDst->pData;                     /* Output data matrix pointer */\n        uint32_t numSamples;                           /* Total number of elements in the matrix */\n        uint32_t blkCnt;                               /* Loop counter */\n        arm_status status;                             /* Status of matrix scaling */\n        int32_t kShift = 15 - shift;                   /* Total shift to apply after scaling */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t inA1, inA2;\n        q31_t out1, out2, out3, out4;                  /* Temporary output variables */\n        q15_t in1, in2, in3, in4;                      /* Temporary input variables */\n#endif\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numRows) ||\n      (pSrc->numCols != pDst->numCols)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * k */\n\n#if defined (ARM_MATH_DSP)\n      /* read 2 times 2 samples at a time from source */\n      inA1 = read_q15x2_ia ((q15_t **) &pIn);\n      inA2 = read_q15x2_ia ((q15_t **) &pIn);\n\n      /* Scale inputs and store result in temporary variables\n       * in single cycle by packing the outputs */\n      out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract);\n      out2 = (q31_t) ((q15_t) (inA1      ) * scaleFract);\n      out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract);\n      out4 = (q31_t) ((q15_t) (inA2      ) * scaleFract);\n\n      /* apply shifting */\n      out1 = out1 >> kShift;\n      out2 = out2 >> kShift;\n      out3 = out3 >> kShift;\n      out4 = out4 >> kShift;\n\n      /* saturate the output */\n      in1 = (q15_t) (__SSAT(out1, 16));\n      in2 = (q15_t) (__SSAT(out2, 16));\n      in3 = (q15_t) (__SSAT(out3, 16));\n      in4 = (q15_t) (__SSAT(out4, 16));\n\n      /* store result to destination */\n      write_q15x2_ia (&pOut, __PKHBT(in2, in1, 16));\n      write_q15x2_ia (&pOut, __PKHBT(in4, in3, 16));\n\n#else\n      *pOut++ = (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> kShift, 16));\n      *pOut++ = (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> kShift, 16));\n      *pOut++ = (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> kShift, 16));\n      *pOut++ = (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> kShift, 16));\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * k */\n\n      /* Scale, saturate and store result in destination buffer. */\n      *pOut++ = (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> kShift, 16));\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixScale group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_scale_q31.c\n * Description:  Multiplies a Q31 matrix by a scalar\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixScale\n  @{\n */\n\n/**\n  @brief         Q31 matrix scaling.\n  @param[in]     pSrc        points to input matrix\n  @param[in]     scaleFract  fractional portion of the scale factor\n  @param[in]     shift       number of bits to shift the result by\n  @param[out]    pDst        points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.31 format.\n                   These are multiplied to yield a 2.62 intermediate result which is shifted with saturation to 1.31 format.\n */\n\narm_status arm_mat_scale_q31(\n  const arm_matrix_instance_q31 * pSrc,\n        q31_t                     scaleFract,\n        int32_t                   shift,\n        arm_matrix_instance_q31 * pDst)\n{\n  q31_t *pIn = pSrc->pData;                      /* Input data matrix pointer */\n  q31_t *pOut = pDst->pData;                     /* Output data matrix pointer */\n  uint32_t numSamples;                           /* Total number of elements in the matrix */\n  uint32_t blkCnt;                               /* Loop counter */\n  arm_status status;                             /* Status of matrix scaling */\n  int32_t kShift = shift + 1;                    /* Shift to apply after scaling */\n  q31_t in, out;                                 /* Temporary variabels */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numRows) ||\n      (pSrc->numCols != pDst->numCols)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * k */\n\n      /* Scale, saturate and store result in destination buffer. */\n      in = *pIn++;                                 /* read four inputs from source */\n      in = ((q63_t) in * scaleFract) >> 32;        /* multiply input with scaler value */\n      out = in << kShift;                          /* apply shifting */\n      if (in != (out >> kShift))                   /* saturate the results. */\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pOut++ = out;                               /* Store result destination */\n\n      in = *pIn++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pOut++ = out;\n\n      in = *pIn++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pOut++ = out;\n\n      in = *pIn++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pOut++ = out;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) * k */\n\n      /* Scale, saturate and store result in destination buffer. */\n      in = *pIn++;\n      in = ((q63_t) in * scaleFract) >> 32;\n      out = in << kShift;\n      if (in != (out >> kShift))\n        out = 0x7FFFFFFF ^ (in >> 31);\n      *pOut++ = out;\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixScale group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_sub_f32.c\n * Description:  Floating-point matrix subtraction\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup MatrixSub Matrix Subtraction\n\n  Subtract two matrices.\n  \\image html MatrixSubtraction.gif \"Subraction of two 3 x 3 matrices\"\n\n  The functions check to make sure that\n  <code>pSrcA</code>, <code>pSrcB</code>, and <code>pDst</code> have the same\n  number of rows and columns.\n */\n\n/**\n  @addtogroup MatrixSub\n  @{\n */\n\n/**\n  @brief         Floating-point matrix subtraction.\n  @param[in]     pSrcA      points to the first input matrix structure\n  @param[in]     pSrcB      points to the second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n */\n\n#if defined(ARM_MATH_NEON)\narm_status arm_mat_sub_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A */\n  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer  */\n\n\n  float32_t inA1, inA2, inB1, inB2, out1, out2;  /* temporary variables */\n\n\n  uint32_t numSamples;                           /* total number of elements in the matrix  */\n  uint32_t blkCnt;                               /* loop counters */\n  arm_status status;                             /* status of matrix subtraction */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n     (pSrcA->numCols != pSrcB->numCols) ||\n     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */\n  {\n    float32x4_t vec1;\n    float32x4_t vec2;\n    float32x4_t res;\n\n    /* Total number of samples in the input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n    blkCnt = numSamples >> 2U;\n\n    /* Compute 4 outputs at a time.\n     ** a second loop below computes the remaining 1 to 3 samples. */\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n      /* Subtract and then store the results in the destination buffer. */\n      /* Read values from source A */\n      vec1 = vld1q_f32(pIn1);\n      vec2 = vld1q_f32(pIn2);\n      res = vsubq_f32(vec1, vec2);\n      vst1q_f32(pOut, res);\n\n      /* Update pointers to process next samples */\n      pIn1 += 4U;\n      pIn2 += 4U;\n      pOut += 4U;\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.\n     ** No loop unrolling is used. */\n    blkCnt = numSamples % 0x4U;\n\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n      /* Subtract and then store the results in the destination buffer. */\n      *pOut++ = (*pIn1++) - (*pIn2++);\n\n      /* Decrement the loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#else\narm_status arm_mat_sub_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n        arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pInA = pSrcA->pData;                /* input data matrix pointer A */\n  float32_t *pInB = pSrcB->pData;                /* input data matrix pointer B */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n\n  uint32_t numSamples;                           /* total number of elements in the matrix */\n  uint32_t blkCnt;                               /* loop counters */\n  arm_status status;                             /* status of matrix subtraction */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n      (pSrcA->numCols != pSrcB->numCols) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcA->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n\n      /* Subtract and store result in destination buffer. */\n      *pOut++ = (*pInA++) - (*pInB++);\n      *pOut++ = (*pInA++) - (*pInB++);\n      *pOut++ = (*pInA++) - (*pInB++);\n      *pOut++ = (*pInA++) - (*pInB++);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n\n      /* Subtract and store result in destination buffer. */\n      *pOut++ = (*pInA++) - (*pInB++);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n/**\n  @} end of MatrixSub group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_sub_q15.c\n * Description:  Q15 Matrix subtraction\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixSub\n  @{\n */\n\n/**\n  @brief         Q15 matrix subtraction.\n  @param[in]     pSrcA      points to the first input matrix structure\n  @param[in]     pSrcB      points to the second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n */\n\narm_status arm_mat_sub_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n        arm_matrix_instance_q15 * pDst)\n{\n        q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A */\n        q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B */\n        q15_t *pOut = pDst->pData;                     /* output data matrix pointer */\n\n        uint32_t numSamples;                           /* total number of elements in the matrix */\n        uint32_t blkCnt;                               /* loop counters  */\n        arm_status status;                             /* status of matrix subtraction  */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n      (pSrcA->numCols != pSrcB->numCols) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcA->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n\n      /* Subtract, Saturate and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n      write_q15x2_ia (&pOut, __QSUB16(read_q15x2_ia ((q15_t **) &pInA), read_q15x2_ia ((q15_t **) &pInB)));\n      write_q15x2_ia (&pOut, __QSUB16(read_q15x2_ia ((q15_t **) &pInA), read_q15x2_ia ((q15_t **) &pInB)));\n#else\n      *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16);\n      *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16);\n      *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16);\n      *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n\n      /* Subtract and store result in destination buffer. */\n#if defined (ARM_MATH_DSP)\n      *pOut++ = (q15_t) __QSUB16(*pInA++, *pInB++);\n#else\n      *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16);\n#endif\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixSub group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_sub_q31.c\n * Description:  Q31 matrix subtraction\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixSub\n  @{\n */\n\n/**\n  @brief         Q31 matrix subtraction.\n  @param[in]     pSrcA      points to the first input matrix structure\n  @param[in]     pSrcB      points to the second input matrix structure\n  @param[out]    pDst       points to output matrix structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.\n */\n\narm_status arm_mat_sub_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n        arm_matrix_instance_q31 * pDst)\n{\n  q31_t *pInA = pSrcA->pData;                    /* input data matrix pointer A */\n  q31_t *pInB = pSrcB->pData;                    /* input data matrix pointer B */\n  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */\n\n  uint32_t numSamples;                           /* total number of elements in the matrix */\n  uint32_t blkCnt;                               /* loop counters */\n  arm_status status;                             /* status of matrix subtraction */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrcA->numRows != pSrcB->numRows) ||\n      (pSrcA->numCols != pSrcB->numCols) ||\n      (pSrcA->numRows != pDst->numRows)  ||\n      (pSrcA->numCols != pDst->numCols)    )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Total number of samples in input matrix */\n    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n    /* Loop unrolling: Compute 4 outputs at a time */\n    blkCnt = numSamples >> 2U;\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n\n      /* Subtract, saturate and then store the results in the destination buffer. */\n      *pOut++ = __QSUB(*pInA++, *pInB++);\n\n      *pOut++ = __QSUB(*pInA++, *pInB++);\n\n      *pOut++ = __QSUB(*pInA++, *pInB++);\n\n      *pOut++ = __QSUB(*pInA++, *pInB++);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Loop unrolling: Compute remaining outputs */\n    blkCnt = numSamples % 0x4U;\n\n#else\n\n    /* Initialize blkCnt with number of samples */\n    blkCnt = numSamples;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n    while (blkCnt > 0U)\n    {\n      /* C(m,n) = A(m,n) - B(m,n) */\n\n      /* Subtract, saturate and store result in destination buffer. */\n      *pOut++ = __QSUB(*pInA++, *pInB++);\n\n      /* Decrement loop counter */\n      blkCnt--;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixSub group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_trans_f32.c\n * Description:  Floating-point matrix transpose\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @defgroup MatrixTrans Matrix Transpose\n\n  Tranposes a matrix.\n\n  Transposing an <code>M x N</code> matrix flips it around the center diagonal and results in an <code>N x M</code> matrix.\n  \\image html MatrixTranspose.gif \"Transpose of a 3 x 3 matrix\"\n */\n\n/**\n  @addtogroup MatrixTrans\n  @{\n */\n\n/**\n  @brief         Floating-point matrix transpose.\n  @param[in]     pSrc      points to input matrix\n  @param[out]    pDst      points to output matrix\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n */\n\n#if defined(ARM_MATH_NEON)\n\narm_status arm_mat_trans_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  float32_t *px;                                 /* Temporary output data matrix pointer */\n  uint16_t nRows = pSrc->numRows;                /* number of rows */\n  uint16_t nColumns = pSrc->numCols;             /* number of columns */\n\n  uint16_t blkCnt, rowCnt, i = 0U, row = nRows;          /* loop counters */\n  arm_status status;                             /* status of matrix transpose  */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows))\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */\n\n  {\n    /* Matrix transpose by exchanging the rows with columns */\n    /* Row loop */\n    rowCnt = row >> 2;\n    while (rowCnt > 0U)\n    {\n      float32x4_t row0V,row1V,row2V,row3V;\n      float32x4x2_t ra0,ra1,rb0,rb1;\n\n      blkCnt = nColumns >> 2;\n\n      /* The pointer px is set to starting address of the column being processed */\n      px = pOut + i;\n\n      /* Compute 4 outputs at a time.\n       ** a second loop below computes the remaining 1 to 3 samples. */\n      while (blkCnt > 0U)        /* Column loop */\n      {\n        row0V = vld1q_f32(pIn);\n        row1V = vld1q_f32(pIn + 1 * nColumns);\n        row2V = vld1q_f32(pIn + 2 * nColumns);\n        row3V = vld1q_f32(pIn + 3 * nColumns);\n        pIn += 4;\n\n        ra0 = vzipq_f32(row0V,row2V);\n        ra1 = vzipq_f32(row1V,row3V);\n\n        rb0 = vzipq_f32(ra0.val[0],ra1.val[0]);\n        rb1 = vzipq_f32(ra0.val[1],ra1.val[1]);\n\n        vst1q_f32(px,rb0.val[0]);\n        px += nRows;\n\n        vst1q_f32(px,rb0.val[1]);\n        px += nRows;\n\n        vst1q_f32(px,rb1.val[0]);\n        px += nRows;\n\n        vst1q_f32(px,rb1.val[1]);\n        px += nRows;\n\n        /* Decrement the column loop counter */\n        blkCnt--;\n      }\n\n      /* Perform matrix transpose for last 3 samples here. */\n      blkCnt = nColumns % 0x4U;\n\n      while (blkCnt > 0U)\n      {\n        /* Read and store the input element in the destination */\n        *px++ = *pIn;\n        *px++ = *(pIn + 1 * nColumns);\n        *px++ = *(pIn + 2 * nColumns);\n        *px++ = *(pIn + 3 * nColumns);\n        \n        px += (nRows - 4);\n        pIn++;\n\n        /* Decrement the column loop counter */\n        blkCnt--;\n      }\n\n      i += 4;\n      pIn += 3 * nColumns;\n\n      /* Decrement the row loop counter */\n      rowCnt--;\n\n    }         /* Row loop end  */\n\n    rowCnt = row & 3;\n    while (rowCnt > 0U)\n    {\n      blkCnt = nColumns ;\n      /* The pointer px is set to starting address of the column being processed */\n      px = pOut + i;\n\n      while (blkCnt > 0U)\n      {\n        /* Read and store the input element in the destination */\n        *px = *pIn++;\n\n        /* Update the pointer px to point to the next row of the transposed matrix */\n        px += nRows;\n\n        /* Decrement the column loop counter */\n        blkCnt--;\n      }\n      i++;\n      rowCnt -- ;\n    }\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#else\narm_status arm_mat_trans_f32(\n  const arm_matrix_instance_f32 * pSrc,\n        arm_matrix_instance_f32 * pDst)\n{\n  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */\n  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */\n  float32_t *px;                                 /* Temporary output data matrix pointer */\n  uint16_t nRows = pSrc->numRows;                /* number of rows */\n  uint16_t nCols = pSrc->numCols;                /* number of columns */\n  uint32_t col, row = nRows, i = 0U;             /* Loop counters */\n  arm_status status;                             /* status of matrix transpose */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numCols) ||\n      (pSrc->numCols != pDst->numRows)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Matrix transpose by exchanging the rows with columns */\n    /* row loop */\n    do\n    {\n      /* Pointer px is set to starting address of column being processed */\n      px = pOut + i;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      col = nCols >> 2U;\n\n      while (col > 0U)        /* column loop */\n      {\n        /* Read and store input element in destination */\n        *px = *pIn++;\n        /* Update pointer px to point to next row of transposed matrix */\n        px += nRows;\n\n        *px = *pIn++;\n        px += nRows;\n\n        *px = *pIn++;\n        px += nRows;\n\n        *px = *pIn++;\n        px += nRows;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      col = nCols % 0x4U;\n\n#else\n\n      /* Initialize col with number of samples */\n      col = nCols;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (col > 0U)\n      {\n        /* Read and store input element in destination */\n        *px = *pIn++;\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += nRows;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      i++;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);          /* row loop end */\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n * @} end of MatrixTrans group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_trans_q15.c\n * Description:  Q15 matrix transpose\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixTrans\n  @{\n */\n\n/**\n  @brief         Q15 matrix transpose.\n  @param[in]     pSrc      points to input matrix\n  @param[out]    pDst      points to output matrix\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n */\n\narm_status arm_mat_trans_q15(\n  const arm_matrix_instance_q15 * pSrc,\n        arm_matrix_instance_q15 * pDst)\n{\n        q15_t *pIn = pSrc->pData;                      /* input data matrix pointer */\n        q15_t *pOut = pDst->pData;                     /* output data matrix pointer */\n        uint16_t nRows = pSrc->numRows;                /* number of rows */\n        uint16_t nCols = pSrc->numCols;                /* number of columns */\n        uint32_t col, row = nRows, i = 0U;             /* Loop counters */\n        arm_status status;                             /* status of matrix transpose */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t in;                                      /* variable to hold temporary output  */\n#endif\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numCols) ||\n      (pSrc->numCols != pDst->numRows)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Matrix transpose by exchanging the rows with columns */\n    /* row loop */\n    do\n    {\n      /* Pointer pOut is set to starting address of column being processed */\n      pOut = pDst->pData + i;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      col = nCols >> 2U;\n\n      while (col > 0U)        /* column loop */\n      {\n        /* Read two elements from row */\n        in = read_q15x2_ia ((q15_t **) &pIn);\n\n        /* Unpack and store one element in  destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *pOut = (q15_t) in;\n#else\n        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update pointer pOut to point to next row of transposed matrix */\n        pOut += nRows;\n\n        /* Unpack and store second element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#else\n        *pOut = (q15_t) in;\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update  pointer pOut to point to next row of transposed matrix */\n        pOut += nRows;\n\n        /* Read two elements from row */\n        in = read_q15x2_ia ((q15_t **) &pIn);\n\n        /* Unpack and store one element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *pOut = (q15_t) in;\n#else\n        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update pointer pOut to point to next row of transposed matrix */\n        pOut += nRows;\n\n        /* Unpack and store second element in destination */\n#ifndef ARM_MATH_BIG_ENDIAN\n        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);\n#else\n        *pOut = (q15_t) in;\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* Update pointer pOut to point to next row of transposed matrix */\n        pOut += nRows;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      col = nCols % 0x4U;\n\n#else\n\n      /* Initialize col with number of samples */\n      col = nCols;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (col > 0U)\n      {\n        /* Read and store input element in destination */\n        *pOut = *pIn++;\n\n        /* Update pointer pOut to point to next row of transposed matrix */\n        pOut += nRows;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      i++;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);          /* row loop end */\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixTrans group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mat_trans_q31.c\n * Description:  Q31 matrix transpose\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupMatrix\n */\n\n/**\n  @addtogroup MatrixTrans\n  @{\n */\n\n/**\n  @brief         Q31 matrix transpose.\n  @param[in]     pSrc      points to input matrix\n  @param[out]    pDst      points to output matrix\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS       : Operation successful\n                   - \\ref ARM_MATH_SIZE_MISMATCH : Matrix size check failed\n */\n\narm_status arm_mat_trans_q31(\n  const arm_matrix_instance_q31 * pSrc,\n        arm_matrix_instance_q31 * pDst)\n{\n  q31_t *pIn = pSrc->pData;                      /* input data matrix pointer */\n  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */\n  q31_t *px;                                     /* Temporary output data matrix pointer */\n  uint16_t nRows = pSrc->numRows;                /* number of rows */\n  uint16_t nCols = pSrc->numCols;                /* number of columns */\n  uint32_t col, row = nRows, i = 0U;             /* Loop counters */\n  arm_status status;                             /* status of matrix transpose */\n\n#ifdef ARM_MATH_MATRIX_CHECK\n\n  /* Check for matrix mismatch condition */\n  if ((pSrc->numRows != pDst->numCols) ||\n      (pSrc->numCols != pDst->numRows)   )\n  {\n    /* Set status as ARM_MATH_SIZE_MISMATCH */\n    status = ARM_MATH_SIZE_MISMATCH;\n  }\n  else\n\n#endif /* #ifdef ARM_MATH_MATRIX_CHECK */\n\n  {\n    /* Matrix transpose by exchanging the rows with columns */\n    /* row loop */\n    do\n    {\n      /* Pointer px is set to starting address of column being processed */\n      px = pOut + i;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n      /* Loop unrolling: Compute 4 outputs at a time */\n      col = nCols >> 2U;\n\n      while (col > 0U)        /* column loop */\n      {\n        /* Read and store input element in destination */\n        *px = *pIn++;\n        /* Update pointer px to point to next row of transposed matrix */\n        px += nRows;\n\n        *px = *pIn++;\n        px += nRows;\n\n        *px = *pIn++;\n        px += nRows;\n\n        *px = *pIn++;\n        px += nRows;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      /* Loop unrolling: Compute remaining outputs */\n      col = nCols % 0x4U;\n\n#else\n\n      /* Initialize col with number of samples */\n      col = nCols;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n      while (col > 0U)\n      {\n        /* Read and store input element in destination */\n        *px = *pIn++;\n\n        /* Update pointer px to point to next row of transposed matrix */\n        px += nRows;\n\n        /* Decrement column loop counter */\n        col--;\n      }\n\n      i++;\n\n      /* Decrement row loop counter */\n      row--;\n\n    } while (row > 0U);          /* row loop end */\n\n    /* Set status as ARM_MATH_SUCCESS */\n    status = ARM_MATH_SUCCESS;\n  }\n\n  /* Return to application */\n  return (status);\n}\n\n/**\n  @} end of MatrixTrans group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPStatistics)\n\n\nfile(GLOB SRC \"./*_*.c\")\n\nadd_library(CMSISDSPStatistics STATIC ${SRC})\n\nconfigdsp(CMSISDSPStatistics ..)\n\n### Includes\ntarget_include_directories(CMSISDSPStatistics PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/StatisticsFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        StatisticsFunctions.c\n * Description:  Combination of all statistics function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_max_f32.c\"\n#include \"arm_max_q15.c\"\n#include \"arm_max_q31.c\"\n#include \"arm_max_q7.c\"\n#include \"arm_mean_f32.c\"\n#include \"arm_mean_q15.c\"\n#include \"arm_mean_q31.c\"\n#include \"arm_mean_q7.c\"\n#include \"arm_min_f32.c\"\n#include \"arm_min_q15.c\"\n#include \"arm_min_q31.c\"\n#include \"arm_min_q7.c\"\n#include \"arm_power_f32.c\"\n#include \"arm_power_q15.c\"\n#include \"arm_power_q31.c\"\n#include \"arm_power_q7.c\"\n#include \"arm_rms_f32.c\"\n#include \"arm_rms_q15.c\"\n#include \"arm_rms_q31.c\"\n#include \"arm_std_f32.c\"\n#include \"arm_std_q15.c\"\n#include \"arm_std_q31.c\"\n#include \"arm_var_f32.c\"\n#include \"arm_var_q15.c\"\n#include \"arm_var_q31.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_max_f32.c\n * Description:  Maximum value of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#if defined(ARM_MATH_NEON)\n#include <limits.h>\n#endif\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @defgroup Max Maximum\n\n  Computes the maximum value of an array of data.\n  The function returns both the maximum value and its position within the array.\n  There are separate functions for floating-point, Q31, Q15, and Q7 data types.\n */\n\n/**\n  @addtogroup Max\n  @{\n */\n\n/**\n  @brief         Maximum value of a floating-point vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    maximum value returned here\n  @param[out]    pIndex     index of maximum value returned here\n  @return        none\n */\n#if defined(ARM_MATH_NEON)\nvoid arm_max_f32(\n  const float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex)\n{\n  float32_t maxVal1, maxVal2, out;               /* Temporary variables to store the output value. */\n  uint32_t blkCnt, outIndex, count;              /* loop counter */\n\n  float32x4_t outV, srcV;\n  float32x2_t outV2;\n\n  uint32x4_t idxV;\n  uint32x4_t maxIdx={ULONG_MAX,ULONG_MAX,ULONG_MAX,ULONG_MAX};\n  uint32x4_t index={4,5,6,7};\n  uint32x4_t delta={4,4,4,4};\n  uint32x4_t countV={0,1,2,3};\n  uint32x2_t countV2;\n\n  /* Initialise the count value. */\n  count = 0U;\n\n  /* Initialise the index value to zero. */\n  outIndex = 0U;\n\n  /* Load first input value that act as reference value for comparison */\n  if (blockSize <= 3)\n  {\n      out = *pSrc++;\n\n      blkCnt = blockSize - 1;\n\n      while (blkCnt > 0U)\n      {\n        /* Initialize maxVal to the next consecutive values one by one */\n        maxVal1 = *pSrc++;\n    \n        /* compare for the maximum value */\n        if (out < maxVal1)\n        {\n          /* Update the maximum value and it's index */\n          out = maxVal1;\n          outIndex = blockSize - blkCnt;\n        }\n    \n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n  }\n  else\n  {\n      outV = vld1q_f32(pSrc);\n      pSrc += 4;\n \n      /* Compute 4 outputs at a time */\n      blkCnt = (blockSize - 4 ) >> 2U;\n    \n      while (blkCnt > 0U)\n      {\n        srcV = vld1q_f32(pSrc);\n        pSrc += 4;\n    \n        idxV = vcgtq_f32(srcV, outV);\n        outV = vbslq_f32(idxV, srcV, outV );\n        countV = vbslq_u32(idxV, index,countV );\n    \n        index = vaddq_u32(index,delta);\n    \n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    \n      outV2 = vpmax_f32(vget_low_f32(outV),vget_high_f32(outV));\n      outV2 = vpmax_f32(outV2,outV2);\n      out = outV2[0];\n    \n      idxV = vceqq_f32(outV, vdupq_n_f32(out));\n      countV = vbslq_u32(idxV, countV,maxIdx);\n      \n      countV2 = vpmin_u32(vget_low_u32(countV),vget_high_u32(countV));\n      countV2 = vpmin_u32(countV2,countV2);\n      outIndex = countV2[0];\n    \n      /* if (blockSize - 1U) is not multiple of 4 */\n      blkCnt = (blockSize - 4 ) % 4U;\n    \n      while (blkCnt > 0U)\n      {\n        /* Initialize maxVal to the next consecutive values one by one */\n        maxVal1 = *pSrc++;\n    \n        /* compare for the maximum value */\n        if (out < maxVal1)\n        {\n          /* Update the maximum value and it's index */\n          out = maxVal1;\n          outIndex = blockSize - blkCnt ;\n        }\n    \n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    \n      \n  }\n\n  /* Store the maximum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n#else\nvoid arm_max_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult,\n        uint32_t * pIndex)\n{\n        float32_t maxVal, out;                         /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = index + 1U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 2U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 3U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to the next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the maximum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n/**\n  @} end of Max group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_max_q15.c\n * Description:  Maximum value of a Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup Max\n  @{\n */\n\n/**\n  @brief         Maximum value of a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    maximum value returned here\n  @param[out]    pIndex     index of maximum value returned here\n  @return        none\n */\n\nvoid arm_max_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult,\n        uint32_t * pIndex)\n{\n        q15_t maxVal, out;                             /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = index + 1U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 2U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 3U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to the next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the maximum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n\n/**\n  @} end of Max group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_max_q31.c\n * Description:  Maximum value of a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup Max\n  @{\n */\n\n/**\n  @brief         Maximum value of a Q31 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    maximum value returned here\n  @param[out]    pIndex     index of maximum value returned here\n  @return        none\n */\n\nvoid arm_max_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult,\n        uint32_t * pIndex)\n{\n        q31_t maxVal, out;                             /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = index + 1U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 2U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 3U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to the next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the maximum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n\n/**\n  @} end of Max group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_max_q7.c\n * Description:  Maximum value of a Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup Max\n  @{\n */\n\n/**\n  @brief         Maximum value of a Q7 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    maximum value returned here\n  @param[out]    pIndex     index of maximum value returned here\n  @return        none\n */\n\nvoid arm_max_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q7_t * pResult,\n        uint32_t * pIndex)\n{\n        q7_t maxVal, out;                              /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = index + 1U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 2U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 3U;\n    }\n\n    maxVal = *pSrc++;\n    if (out < maxVal)\n    {\n      out = maxVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize maxVal to the next consecutive values one by one */\n    maxVal = *pSrc++;\n\n    /* compare for the maximum value */\n    if (out < maxVal)\n    {\n      /* Update the maximum value and it's index */\n      out = maxVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the maximum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n\n/**\n  @} end of Max group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mean_f32.c\n * Description:  Mean value of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @defgroup mean Mean\n\n  Calculates the mean of the input vector. Mean is defined as the average of the elements in the vector.\n  The underlying algorithm is used:\n\n  <pre>\n      Result = (pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]) / blockSize;\n  </pre>\n\n  There are separate functions for floating-point, Q31, Q15, and Q7 data types.\n */\n\n/**\n  @addtogroup mean\n  @{\n */\n\n/**\n  @brief         Mean value of a floating-point vector.\n  @param[in]     pSrc       points to the input vector.\n  @param[in]     blockSize  number of samples in input vector.\n  @param[out]    pResult    mean value returned here.\n  @return        none\n */\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_mean_f32(\n  const float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n  float32_t sum = 0.0f;                          /* Temporary result storage */\n  float32x4_t sumV = vdupq_n_f32(0.0f);                          /* Temporary result storage */\n  float32x2_t sumV2;\n\n  uint32_t blkCnt;                               /* Loop counter */\n\n  float32_t in1, in2, in3, in4;\n  float32x4_t inV;\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    inV = vld1q_f32(pSrc);\n    sumV = vaddq_f32(sumV, inV);\n    \n    pSrc += 4;\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  sumV2 = vpadd_f32(vget_low_f32(sumV),vget_high_f32(sumV));\n  sum = sumV2[0] + sumV2[1];\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 3;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    sum += *pSrc++;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */\n  /* Store the result to the destination */\n  *pResult = sum / (float32_t) blockSize;\n}\n#else\nvoid arm_mean_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t sum = 0.0f;                          /* Temporary result storage */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    sum += *pSrc++;\n\n    sum += *pSrc++;\n\n    sum += *pSrc++;\n\n    sum += *pSrc++;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    sum += *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */\n  /* Store result to destination */\n  *pResult = (sum / blockSize);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of mean group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mean_q15.c\n * Description:  Mean value of a Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup mean\n  @{\n */\n\n/**\n  @brief         Mean value of a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    mean value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   The input is represented in 1.15 format and is accumulated in a 32-bit\n                   accumulator in 17.15 format.\n                   There is no risk of internal overflow with this approach, and the\n                   full precision of intermediate result is preserved.\n                   Finally, the accumulator is truncated to yield a result of 1.15 format.\n */\n\nvoid arm_mean_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t sum = 0;                                 /* Temporary result storage */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t in;\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    sum += ((in << 16U) >> 16U);\n    sum +=  (in >> 16U);\n\n    in = read_q15x2_ia ((q15_t **) &pSrc);\n    sum += ((in << 16U) >> 16U);\n    sum +=  (in >> 16U);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    sum += *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */\n  /* Store result to destination */\n  *pResult = (q15_t) (sum / (int32_t) blockSize);\n}\n\n/**\n  @} end of mean group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mean_q31.c\n * Description:  Mean value of a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup mean\n  @{\n */\n\n/**\n  @brief         Mean value of a Q31 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    mean value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   The input is represented in 1.31 format and is accumulated in a 64-bit\n                   accumulator in 33.31 format.\n                   There is no risk of internal overflow with this approach, and the\n                   full precision of intermediate result is preserved.\n                   Finally, the accumulator is truncated to yield a result of 1.31 format.\n */\n\nvoid arm_mean_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Temporary result storage */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    sum += *pSrc++;\n\n    sum += *pSrc++;\n\n    sum += *pSrc++;\n\n    sum += *pSrc++;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    sum += *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */\n  /* Store result to destination */\n  *pResult = (q31_t) (sum / blockSize);\n}\n\n/**\n  @} end of mean group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_mean_q7.c\n * Description:  Mean value of a Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup mean\n  @{\n */\n\n/**\n  @brief         Mean value of a Q7 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    mean value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   The input is represented in 1.7 format and is accumulated in a 32-bit\n                   accumulator in 25.7 format.\n                   There is no risk of internal overflow with this approach, and the\n                   full precision of intermediate result is preserved.\n                   Finally, the accumulator is truncated to yield a result of 1.7 format.\n */\n\nvoid arm_mean_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q7_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t sum = 0;                                 /* Temporary result storage */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t in;\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    in = read_q7x4_ia ((q7_t **) &pSrc);\n    sum += ((in << 24U) >> 24U);\n    sum += ((in << 16U) >> 24U);\n    sum += ((in <<  8U) >> 24U);\n    sum +=  (in >> 24U);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n    sum += *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */\n  /* Store result to destination */\n  *pResult = (q7_t) (sum / (int32_t) blockSize);\n}\n\n/**\n  @} end of mean group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_min_f32.c\n * Description:  Minimum value of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include <limits.h>\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @defgroup Min Minimum\n\n  Computes the minimum value of an array of data.\n  The function returns both the minimum value and its position within the array.\n  There are separate functions for floating-point, Q31, Q15, and Q7 data types.\n */\n\n/**\n  @addtogroup Min\n  @{\n */\n\n/**\n  @brief         Minimum value of a floating-point vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    minimum value returned here\n  @param[out]    pIndex     index of minimum value returned here\n  @return        none\n */\n#if defined(ARM_MATH_NEON)\nvoid arm_min_f32(\n  const float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex)\n{\n  float32_t maxVal1, maxVal2, out;               /* Temporary variables to store the output value. */\n  uint32_t blkCnt, outIndex, count;              /* loop counter */\n\n  float32x4_t outV, srcV;\n  float32x2_t outV2;\n\n  uint32x4_t idxV;\n  uint32x4_t maxIdx={ULONG_MAX,ULONG_MAX,ULONG_MAX,ULONG_MAX};\n  uint32x4_t index={4,5,6,7};\n  uint32x4_t delta={4,4,4,4};\n  uint32x4_t countV={0,1,2,3};\n  uint32x2_t countV2;\n\n  /* Initialise the count value. */\n  count = 0U;\n\n  /* Initialise the index value to zero. */\n  outIndex = 0U;\n\n  /* Load first input value that act as reference value for comparison */\n  if (blockSize <= 3)\n  {\n      out = *pSrc++;\n\n      blkCnt = blockSize - 1;\n\n      while (blkCnt > 0U)\n      {\n        /* Initialize maxVal to the next consecutive values one by one */\n        maxVal1 = *pSrc++;\n    \n        /* compare for the maximum value */\n        if (out > maxVal1)\n        {\n          /* Update the maximum value and it's index */\n          out = maxVal1;\n          outIndex = blockSize - blkCnt;\n        }\n    \n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n  }\n  else\n  {\n      outV = vld1q_f32(pSrc);\n      pSrc += 4;\n    \n      /* Compute 4 outputs at a time */\n      blkCnt = (blockSize - 4 ) >> 2U;\n    \n      while (blkCnt > 0U)\n      {\n        srcV = vld1q_f32(pSrc);\n        pSrc += 4;\n    \n        idxV = vcltq_f32(srcV, outV);\n        outV = vbslq_f32(idxV, srcV, outV );\n        countV = vbslq_u32(idxV, index,countV );\n    \n        index = vaddq_u32(index,delta);\n    \n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n    \n      outV2 = vpmin_f32(vget_low_f32(outV),vget_high_f32(outV));\n      outV2 = vpmin_f32(outV2,outV2);\n      out = outV2[0];\n    \n      idxV = vceqq_f32(outV, vdupq_n_f32(out));\n      countV = vbslq_u32(idxV, countV,maxIdx);\n      \n      countV2 = vpmin_u32(vget_low_u32(countV),vget_high_u32(countV));\n      countV2 = vpmin_u32(countV2,countV2);\n      outIndex = countV2[0];\n    \n      /* if (blockSize - 1U) is not multiple of 4 */\n      blkCnt = (blockSize - 4 ) % 4U;\n    \n      while (blkCnt > 0U)\n      {\n        /* Initialize maxVal to the next consecutive values one by one */\n        maxVal1 = *pSrc++;\n    \n        /* compare for the maximum value */\n        if (out > maxVal1)\n        {\n          /* Update the maximum value and it's index */\n          out = maxVal1;\n          outIndex = blockSize - blkCnt ;\n        }\n    \n        /* Decrement the loop counter */\n        blkCnt--;\n      }\n  }\n\n  /* Store the maximum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n#else\nvoid arm_min_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult,\n        uint32_t * pIndex)\n{\n        float32_t minVal, out;                         /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = index + 1U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 2U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 3U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to the next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the minimum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of Min group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_min_q15.c\n * Description:  Minimum value of a Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n\n/**\n  @addtogroup Min\n  @{\n */\n\n/**\n  @brief         Minimum value of a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    minimum value returned here\n  @param[out]    pIndex     index of minimum value returned here\n  @return        none\n */\n\nvoid arm_min_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult,\n        uint32_t * pIndex)\n{\n        q15_t minVal, out;                             /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = index + 1U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 2U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 3U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to the next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the minimum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n\n/**\n  @} end of Min group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_min_q31.c\n * Description:  Minimum value of a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n\n/**\n  @addtogroup Min\n  @{\n */\n\n/**\n  @brief         Minimum value of a Q31 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    minimum value returned here\n  @param[out]    pIndex     index of minimum value returned here\n  @return        none\n */\n\nvoid arm_min_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult,\n        uint32_t * pIndex)\n{\n        q31_t minVal, out;                             /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = index + 1U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 2U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 3U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to the next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the minimum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n\n/**\n  @} end of Min group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_min_q7.c\n * Description:  Minimum value of a Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n\n/**\n  @addtogroup Min\n  @{\n */\n\n/**\n  @brief         Minimum value of a Q7 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    minimum value returned here\n  @param[out]    pIndex     index of minimum value returned here\n  @return        none\n */\n\nvoid arm_min_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q7_t * pResult,\n        uint32_t * pIndex)\n{\n        q7_t minVal, out;                              /* Temporary variables to store the output value. */\n        uint32_t blkCnt, outIndex;                     /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        uint32_t index;                                /* index of maximum value */\n#endif\n\n  /* Initialise index value to zero. */\n  outIndex = 0U;\n  /* Load first input value that act as reference value for comparision */\n  out = *pSrc++;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  /* Initialise index of maximum value. */\n  index = 0U;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = (blockSize - 1U) >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = index + 1U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 2U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 3U;\n    }\n\n    minVal = *pSrc++;\n    if (out > minVal)\n    {\n      out = minVal;\n      outIndex = index + 4U;\n    }\n\n    index += 4U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = (blockSize - 1U) % 4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = (blockSize - 1U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* Initialize minVal to the next consecutive values one by one */\n    minVal = *pSrc++;\n\n    /* compare for the minimum value */\n    if (out > minVal)\n    {\n      /* Update the minimum value and it's index */\n      out = minVal;\n      outIndex = blockSize - blkCnt;\n    }\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store the minimum value and it's index into destination pointers */\n  *pResult = out;\n  *pIndex = outIndex;\n}\n\n/**\n  @} end of Min group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_power_f32.c\n * Description:  Sum of the squares of the elements of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @defgroup power Power\n\n  Calculates the sum of the squares of the elements in the input vector.\n  The underlying algorithm is used:\n\n  <pre>\n      Result = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + pSrc[2] * pSrc[2] + ... + pSrc[blockSize-1] * pSrc[blockSize-1];\n  </pre>\n\n  There are separate functions for floating point, Q31, Q15, and Q7 data types.\n */\n\n/**\n  @addtogroup power\n  @{\n */\n\n/**\n  @brief         Sum of the squares of the elements of a floating-point vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    sum of the squares value returned here\n  @return        none\n */\n#if defined(ARM_MATH_NEON)\nvoid arm_power_f32(\n  const float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n  float32_t sum = 0.0f;                          /* accumulator */\n  float32_t in;                                  /* Temporary variable to store input value */\n  uint32_t blkCnt;                               /* loop counter */\n\n  float32x4_t sumV = vdupq_n_f32(0.0f);                          /* Temporary result storage */\n  float32x2_t sumV2;\n  float32x4_t inV;\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* Compute Power and then store the result in a temporary variable, sum. */\n    inV = vld1q_f32(pSrc);\n    sumV = vmlaq_f32(sumV, inV, inV);\n    pSrc += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n  sumV2 = vpadd_f32(vget_low_f32(sumV),vget_high_f32(sumV));\n  sum = sumV2[0] + sumV2[1];\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize % 0x4U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* compute power and then store the result in a temporary variable, sum. */\n    in = *pSrc++;\n    sum += in * in;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Store the result to the destination */\n  *pResult = sum;\n}\n#else\nvoid arm_power_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t sum = 0.0f;                          /* Temporary result storage */\n        float32_t in;                                  /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power and store result in a temporary variable, sum. */\n    in = *pSrc++;\n    sum += in * in;\n\n    in = *pSrc++;\n    sum += in * in;\n\n    in = *pSrc++;\n    sum += in * in;\n\n    in = *pSrc++;\n    sum += in * in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power and store result in a temporary variable, sum. */\n    in = *pSrc++;\n    sum += in * in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store result to destination */\n  *pResult = sum;\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of power group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_power_q15.c\n * Description:  Sum of the squares of the elements of a Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup power\n  @{\n */\n\n/**\n  @brief         Sum of the squares of the elements of a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    sum of the squares value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   The input is represented in 1.15 format.\n                   Intermediate multiplication yields a 2.30 format, and this\n                   result is added without saturation to a 64-bit accumulator in 34.30 format.\n                   With 33 guard bits in the accumulator, there is no risk of overflow, and the\n                   full precision of the intermediate multiplication is preserved.\n                   Finally, the return result is in 34.30 format.\n */\n\nvoid arm_power_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q63_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Temporary result storage */\n        q15_t in;                                      /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in32;                                    /* Temporary variable to store packed input value */\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power and store result in a temporary variable, sum. */\n#if defined (ARM_MATH_DSP)\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sum = __SMLALD(in32, in32, sum);\n\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sum = __SMLALD(in32, in32, sum);\n#else\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power and store result in a temporary variable, sum. */\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store result in 34.30 format */\n  *pResult = sum;\n}\n\n/**\n  @} end of power group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_power_q31.c\n * Description:  Sum of the squares of the elements of a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup power\n  @{\n */\n\n/**\n  @brief         Sum of the squares of the elements of a Q31 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    sum of the squares value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   The input is represented in 1.31 format.\n                   Intermediate multiplication yields a 2.62 format, and this\n                   result is truncated to 2.48 format by discarding the lower 14 bits.\n                   The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format.\n                   With 15 guard bits in the accumulator, there is no risk of overflow, and the\n                   full precision of the intermediate multiplication is preserved.\n                   Finally, the return result is in 16.48 format.\n */\n\nvoid arm_power_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q63_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Temporary result storage */\n        q31_t in;                                      /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power then shift intermediate results by 14 bits to maintain 16.48 format and store result in a temporary variable sum, providing 15 guard bits. */\n    in = *pSrc++;\n    sum += ((q63_t) in * in) >> 14U;\n\n    in = *pSrc++;\n    sum += ((q63_t) in * in) >> 14U;\n\n    in = *pSrc++;\n    sum += ((q63_t) in * in) >> 14U;\n\n    in = *pSrc++;\n    sum += ((q63_t) in * in) >> 14U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power and store result in a temporary variable, sum. */\n    in = *pSrc++;\n    sum += ((q63_t) in * in) >> 14U;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store results in 16.48 format */\n  *pResult = sum;\n}\n\n/**\n  @} end of power group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_power_q7.c\n * Description:  Sum of the squares of the elements of a Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup power\n  @{\n */\n\n/**\n  @brief         Sum of the squares of the elements of a Q7 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    sum of the squares value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 32-bit internal accumulator.\n                   The input is represented in 1.7 format.\n                   Intermediate multiplication yields a 2.14 format, and this\n                   result is added without saturation to an accumulator in 18.14 format.\n                   With 17 guard bits in the accumulator, there is no risk of overflow, and the\n                   full precision of the intermediate multiplication is preserved.\n                   Finally, the return result is in 18.14 format.\n */\n\nvoid arm_power_q7(\n  const q7_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t sum = 0;                                 /* Temporary result storage */\n        q7_t in;                                       /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in32;                                    /* Temporary variable to store packed input value */\n        q31_t in1, in2;                                /* Temporary variables to store input value */\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power and store result in a temporary variable, sum. */\n#if defined (ARM_MATH_DSP)\n    in32 = read_q7x4_ia ((q7_t **) &pSrc);\n\n    in1 = __SXTB16(__ROR(in32, 8));\n    in2 = __SXTB16(in32);\n\n    /* calculate power and accumulate to accumulator */\n    sum = __SMLAD(in1, in1, sum);\n    sum = __SMLAD(in2, in2, sum);\n#else\n    in = *pSrc++;\n    sum += ((q15_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q15_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q15_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q15_t) in * in);\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute Power and store result in a temporary variable, sum. */\n    in = *pSrc++;\n    sum += ((q15_t) in * in);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Store result in 18.14 format */\n  *pResult = sum;\n}\n\n/**\n  @} end of power group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rms_f32.c\n * Description:  Root mean square value of the elements of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @defgroup RMS Root mean square (RMS)\n\n  Calculates the Root Mean Square of the elements in the input vector.\n  The underlying algorithm is used:\n\n  <pre>\n      Result = sqrt(((pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]) / blockSize));\n  </pre>\n\n  There are separate functions for floating point, Q31, and Q15 data types.\n */\n\n/**\n  @addtogroup RMS\n  @{\n */\n\n/**\n  @brief         Root Mean Square of the elements of a floating-point vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    root mean square value returned here\n  @return        none\n */\n#if defined(ARM_MATH_NEON)\nvoid arm_rms_f32(\n  const float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult)\n{\n  float32_t sum = 0.0f;                          /* accumulator */\n  float32_t in;                                  /* Temporary variable to store input value */\n  uint32_t blkCnt;                               /* loop counter */\n\n  float32x4_t sumV = vdupq_n_f32(0.0f);                          /* Temporary result storage */\n  float32x2_t sumV2;\n  float32x4_t inV;\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* Compute Power and then store the result in a temporary variable, sum. */\n    inV = vld1q_f32(pSrc);\n    sumV = vmlaq_f32(sumV, inV, inV);\n    pSrc += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  sumV2 = vpadd_f32(vget_low_f32(sumV),vget_high_f32(sumV));\n  sum = sumV2[0] + sumV2[1];\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize % 0x4U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* compute power and then store the result in a temporary variable, sum. */\n    in = *pSrc++;\n    sum += in * in;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Compute Rms and store the result in the destination */\n  arm_sqrt_f32(sum / (float32_t) blockSize, pResult);\n}\n#else\nvoid arm_rms_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t sum = 0.0f;                          /* Temporary result storage */\n        float32_t in;                                  /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable, sum. */\n    sum += in * in;\n\n    in = *pSrc++;\n    sum += in * in;\n\n    in = *pSrc++;\n    sum += in * in;\n\n    in = *pSrc++;\n    sum += in * in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable. */\n    sum += ( in * in);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Compute Rms and store result in destination */\n  arm_sqrt_f32(sum / (float32_t) blockSize, pResult);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of RMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rms_q15.c\n * Description:  Root Mean Square of the elements of a Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup RMS\n  @{\n */\n\n/**\n  @brief         Root Mean Square of the elements of a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    root mean square value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   The input is represented in 1.15 format.\n                   Intermediate multiplication yields a 2.30 format, and this\n                   result is added without saturation to a 64-bit accumulator in 34.30 format.\n                   With 33 guard bits in the accumulator, there is no risk of overflow, and the\n                   full precision of the intermediate multiplication is preserved.\n                   Finally, the 34.30 result is truncated to 34.15 format by discarding the lower\n                   15 bits, and then saturated to yield a result in 1.15 format.\n */\n\nvoid arm_rms_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Temporary result storage */\n        q15_t in;                                      /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in32;                                    /* Temporary variable to store input value */\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    /* Compute sum of squares and store result in a temporary variable. */\n#if defined (ARM_MATH_DSP)\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sum = __SMLALD(in32, in32, sum);\n\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sum = __SMLALD(in32, in32, sum);\n#else\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q31_t) in * in);\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable. */\n    sum += ((q31_t) in * in);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Truncating and saturating the accumulator to 1.15 format */\n  /* Store result in destination */\n  arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult);\n}\n\n/**\n  @} end of RMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rms_q31.c\n * Description:  Root Mean Square of the elements of a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup RMS\n  @{\n */\n\n/**\n  @brief         Root Mean Square of the elements of a Q31 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    root mean square value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The input is represented in 1.31 format, and intermediate multiplication\n                   yields a 2.62 format.\n                   The accumulator maintains full precision of the intermediate multiplication results,\n                   but provides only a single guard bit.\n                   There is no saturation on intermediate additions.\n                   If the accumulator overflows, it wraps around and distorts the result.\n                   In order to avoid overflows completely, the input signal must be scaled down by\n                   log2(blockSize) bits, as a total of blockSize additions are performed internally.\n                   Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value.\n */\n\nvoid arm_rms_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        uint64_t sum = 0;                              /* Temporary result storage (can get never negative. changed type from q63 to uint64 */\n        q31_t in;                                      /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable, sum. */\n    sum += ((q63_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q63_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q63_t) in * in);\n\n    in = *pSrc++;\n    sum += ((q63_t) in * in);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable. */\n    sum += ((q63_t) in * in);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Convert data in 2.62 to 1.31 by 31 right shifts and saturate */\n  /* Compute Rms and store result in destination vector */\n  arm_sqrt_q31(clip_q63_to_q31((sum / (q63_t) blockSize) >> 31), pResult);\n}\n\n/**\n  @} end of RMS group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_std_f32.c\n * Description:  Standard deviation of the elements of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @defgroup STD Standard deviation\n\n  Calculates the standard deviation of the elements in the input vector.\n  The underlying algorithm is used:\n\n  <pre>\n      Result = sqrt((sumOfSquares - sum<sup>2</sup> / blockSize) / (blockSize - 1))\n\n      sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]\n      sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]\n  </pre>\n\n  There are separate functions for floating point, Q31, and Q15 data types.\n */\n\n/**\n  @addtogroup STD\n  @{\n */\n\n/**\n  @brief         Standard deviation of the elements of a floating-point vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    standard deviation value returned here\n  @return        none\n */\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_std_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult)\n{\n  float32_t var;\n  arm_var_f32(pSrc,blockSize,&var);\n  arm_sqrt_f32(var, pResult);\n}\n#else\nvoid arm_std_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t sum = 0.0f;                          /* Temporary result storage */\n        float32_t sumOfSquares = 0.0f;                 /* Sum of squares */\n        float32_t in;                                  /* Temporary variable to store input value */\n\n#ifndef ARM_MATH_CM0_FAMILY\n        float32_t meanOfSquares, mean, squareOfMean;   /* Temporary variables */\n#else\n        float32_t squareOfSum;                         /* Square of Sum */\n        float32_t var;                                 /* Temporary varaince storage */\n#endif\n\n  if (blockSize <= 1U)\n  {\n    *pResult = 0;\n    return;\n  }\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    sumOfSquares += in * in;\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += in * in;\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += in * in;\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += in * in;\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    sumOfSquares += ( in * in);\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n#ifndef ARM_MATH_CM0_FAMILY\n\n  /* Compute Mean of squares and store result in a temporary variable, meanOfSquares. */\n  meanOfSquares = sumOfSquares / ((float32_t) blockSize - 1.0f);\n\n  /* Compute mean of all input values */\n  mean = sum / (float32_t) blockSize;\n\n  /* Compute square of mean */\n  squareOfMean = (mean * mean) * (((float32_t) blockSize) /\n                                  ((float32_t) blockSize - 1.0f));\n\n  /* Compute standard deviation and store result to destination */\n  arm_sqrt_f32((meanOfSquares - squareOfMean), pResult);\n\n#else\n  /* Run the below code for Cortex-M0 */\n\n  /* Compute square of sum */\n  squareOfSum = ((sum * sum) / (float32_t) blockSize);\n\n  /* Compute variance */\n  var = ((sumOfSquares - squareOfSum) / (float32_t) (blockSize - 1.0f));\n\n  /* Compute standard deviation and store result in destination */\n  arm_sqrt_f32(var, pResult);\n\n#endif /* #ifndef ARM_MATH_CM0_FAMILY */\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of STD group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_std_q15.c\n * Description:  Standard deviation of an array of Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup STD\n  @{\n */\n\n/**\n  @brief         Standard deviation of the elements of a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    standard deviation value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   The input is represented in 1.15 format.\n                   Intermediate multiplication yields a 2.30 format, and this\n                   result is added without saturation to a 64-bit accumulator in 34.30 format.\n                   With 33 guard bits in the accumulator, there is no risk of overflow, and the\n                   full precision of the intermediate multiplication is preserved.\n                   Finally, the 34.30 result is truncated to 34.15 format by discarding the lower\n                   15 bits, and then saturated to yield a result in 1.15 format.\n */\n\nvoid arm_std_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t sum = 0;                                 /* Accumulator */\n        q31_t meanOfSquares, squareOfMean;             /* Square of mean and mean of square */\n        q63_t sumOfSquares = 0;                        /* Sum of squares */\n        q15_t in;                                      /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n  q31_t in32;                                    /* Temporary variable to store input value */\n#endif\n\n  if (blockSize <= 1U)\n  {\n    *pResult = 0;\n    return;\n  }\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    /* Compute sum and store result in a temporary variable, sum. */\n#if defined (ARM_MATH_DSP)\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sumOfSquares = __SMLALD(in32, in32, sumOfSquares);\n    sum += ((in32 << 16U) >> 16U);\n    sum +=  (in32 >> 16U);\n\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sumOfSquares = __SMLALD(in32, in32, sumOfSquares);\n    sum += ((in32 << 16U) >> 16U);\n    sum +=  (in32 >> 16U);\n#else\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    sumOfSquares += (in * in);\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Compute Mean of squares and store result in a temporary variable, meanOfSquares. */\n  meanOfSquares = (q31_t) (sumOfSquares / (q63_t)(blockSize - 1U));\n\n  /* Compute square of mean */\n  squareOfMean = (q31_t) ((q63_t) sum * sum / (q63_t)(blockSize * (blockSize - 1U)));\n\n  /* mean of squares minus the square of mean. */\n  /* Compute standard deviation and store result in destination */\n  arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15U, 16U), pResult);\n}\n\n/**\n  @} end of STD group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_std_q31.c\n * Description:  Standard deviation of the elements of a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup STD\n  @{\n */\n\n/**\n  @brief         Standard deviation of the elements of a Q31 vector.\n  @param[in]     pSrc       points to the input vector.\n  @param[in]     blockSize  number of samples in input vector.\n  @param[out]    pResult    standard deviation value returned here.\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The input is represented in 1.31 format, which is then downshifted by 8 bits\n                   which yields 1.23, and intermediate multiplication yields a 2.46 format.\n                   The accumulator maintains full precision of the intermediate multiplication results,\n                   but provides only a 16 guard bits.\n                   There is no saturation on intermediate additions.\n                   If the accumulator overflows it wraps around and distorts the result.\n                   In order to avoid overflows completely the input signal must be scaled down by\n                   log2(blockSize)-8 bits, as a total of blockSize additions are performed internally.\n                   After division, internal variables should be Q18.46\n                   Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value.\n */\n\nvoid arm_std_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Accumulator */\n        q63_t meanOfSquares, squareOfMean;             /* Square of mean and mean of square */\n        q63_t sumOfSquares = 0;                        /* Sum of squares */\n        q31_t in;                                      /* Temporary variable to store input value */\n\n  if (blockSize <= 1U)\n  {\n    *pResult = 0;\n    return;\n  }\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++ >> 8U;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    sumOfSquares += ((q63_t) (in) * (in));\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    in = *pSrc++ >> 8U;\n    sumOfSquares += ((q63_t) (in) * (in));\n    sum += in;\n\n    in = *pSrc++ >> 8U;\n    sumOfSquares += ((q63_t) (in) * (in));\n    sum += in;\n\n    in = *pSrc++ >> 8U;\n    sumOfSquares += ((q63_t) (in) * (in));\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++ >> 8U;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    sumOfSquares += ((q63_t) (in) * (in));\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Compute Mean of squares and store result in a temporary variable, meanOfSquares. */\n  meanOfSquares = (sumOfSquares / (q63_t)(blockSize - 1U));\n\n  /* Compute square of mean */\n  squareOfMean = ( sum * sum / (q63_t)(blockSize * (blockSize - 1U)));\n\n  /* Compute standard deviation and store result in destination */\n  arm_sqrt_q31((meanOfSquares - squareOfMean) >> 15U, pResult);\n}\n\n/**\n  @} end of STD group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_var_f32.c\n * Description:  Variance of the elements of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @defgroup variance  Variance\n\n  Calculates the variance of the elements in the input vector.\n  The underlying algorithm used is the direct method sometimes referred to as the two-pass method:\n\n  <pre>\n      Result = sum(element - meanOfElements)^2) / numElement - 1\n\n      meanOfElements = ( pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] ) / blockSize\n  </pre>\n\n  There are separate functions for floating point, Q31, and Q15 data types.\n */\n\n/**\n  @addtogroup variance\n  @{\n */\n\n/**\n  @brief         Variance of the elements of a floating-point vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    variance value returned here\n  @return        none\n */\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_var_f32(\n           const float32_t * pSrc,\n                 uint32_t blockSize,\n                 float32_t * pResult)\n{\n  float32_t mean;\n\n  float32_t sum = 0.0f;                          /* accumulator */\n  float32_t in;                                  /* Temporary variable to store input value */\n  uint32_t blkCnt;                               /* loop counter */\n\n  float32x4_t sumV = vdupq_n_f32(0.0f);                          /* Temporary result storage */\n  float32x2_t sumV2;\n  float32x4_t inV;\n  float32x4_t avg;\n\n  arm_mean_f32(pSrc,blockSize,&mean);\n  avg = vdupq_n_f32(mean);\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* Compute Power and then store the result in a temporary variable, sum. */\n    inV = vld1q_f32(pSrc);\n    inV = vsubq_f32(inV, avg);\n    sumV = vmlaq_f32(sumV, inV, inV);\n    pSrc += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  sumV2 = vpadd_f32(vget_low_f32(sumV),vget_high_f32(sumV));\n  sum = sumV2[0] + sumV2[1];\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize % 0x4U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* compute power and then store the result in a temporary variable, sum. */\n    in = *pSrc++;\n    in = in - mean;\n    sum += in * in;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* Variance */\n  *pResult = sum / (float32_t)(blockSize - 1.0f);\n\n}\n\n#else\nvoid arm_var_f32(\n  const float32_t * pSrc,\n        uint32_t blockSize,\n        float32_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        float32_t sum = 0.0f;                          /* Temporary result storage */\n        float32_t fSum = 0.0f;\n        float32_t fMean, fValue;\n  const float32_t * pInput = pSrc;\n\n  if (blockSize <= 1U)\n  {\n    *pResult = 0;\n    return;\n  }\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n\n    sum += *pInput++;\n    sum += *pInput++;\n    sum += *pInput++;\n    sum += *pInput++;\n\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */\n\n    sum += *pInput++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */\n  fMean = sum / (float32_t) blockSize;\n\n  pInput = pSrc;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    fValue = *pInput++ - fMean;\n    fSum += fValue * fValue;\n\n    fValue = *pInput++ - fMean;\n    fSum += fValue * fValue;\n\n    fValue = *pInput++ - fMean;\n    fSum += fValue * fValue;\n\n    fValue = *pInput++ - fMean;\n    fSum += fValue * fValue;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    fValue = *pInput++ - fMean;\n    fSum += fValue * fValue;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Variance */\n  *pResult = fSum / (float32_t)(blockSize - 1.0f);\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of variance group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_var_q15.c\n * Description:  Variance of an array of Q15 type\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup variance\n  @{\n */\n\n/**\n  @brief         Variance of the elements of a Q15 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    variance value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using a 64-bit internal accumulator.\n                   The input is represented in 1.15 format.\n                   Intermediate multiplication yields a 2.30 format, and this\n                   result is added without saturation to a 64-bit accumulator in 34.30 format.\n                   With 33 guard bits in the accumulator, there is no risk of overflow, and the\n                   full precision of the intermediate multiplication is preserved.\n                   Finally, the 34.30 result is truncated to 34.15 format by discarding the lower\n                   15 bits, and then saturated to yield a result in 1.15 format.\n */\n\nvoid arm_var_q15(\n  const q15_t * pSrc,\n        uint32_t blockSize,\n        q15_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q31_t sum = 0;                                 /* Accumulator */\n        q31_t meanOfSquares, squareOfMean;             /* Square of mean and mean of square */\n        q63_t sumOfSquares = 0;                        /* Sum of squares */\n        q15_t in;                                      /* Temporary variable to store input value */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in32;                                    /* Temporary variable to store input value */\n#endif\n\n  if (blockSize <= 1U)\n  {\n    *pResult = 0;\n    return;\n  }\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    /* Compute sum and store result in a temporary variable, sum. */\n#if defined (ARM_MATH_DSP)\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sumOfSquares = __SMLALD(in32, in32, sumOfSquares);\n    sum += ((in32 << 16U) >> 16U);\n    sum +=  (in32 >> 16U);\n\n    in32 = read_q15x2_ia ((q15_t **) &pSrc);\n    sumOfSquares = __SMLALD(in32, in32, sumOfSquares);\n    sum += ((in32 << 16U) >> 16U);\n    sum +=  (in32 >> 16U);\n#else\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n\n    in = *pSrc++;\n    sumOfSquares += (in * in);\n    sum += in;\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n#if defined (ARM_MATH_DSP)\n    sumOfSquares = __SMLALD(in, in, sumOfSquares);\n#else\n    sumOfSquares += (in * in);\n#endif /* #if defined (ARM_MATH_DSP) */\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Compute Mean of squares and store result in a temporary variable, meanOfSquares. */\n  meanOfSquares = (q31_t) (sumOfSquares / (q63_t)(blockSize - 1U));\n\n  /* Compute square of mean */\n  squareOfMean = (q31_t) ((q63_t) sum * sum / (q63_t)(blockSize * (blockSize - 1U)));\n\n  /* mean of squares minus the square of mean. */\n  *pResult = (meanOfSquares - squareOfMean) >> 15U;\n}\n\n/**\n  @} end of variance group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_var_q31.c\n * Description:  Variance of an array of Q31 type\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupStats\n */\n\n/**\n  @addtogroup variance\n  @{\n */\n\n/**\n  @brief         Variance of the elements of a Q31 vector.\n  @param[in]     pSrc       points to the input vector\n  @param[in]     blockSize  number of samples in input vector\n  @param[out]    pResult    variance value returned here\n  @return        none\n\n  @par           Scaling and Overflow Behavior\n                   The function is implemented using an internal 64-bit accumulator.\n                   The input is represented in 1.31 format, which is then downshifted by 8 bits\n                   which yields 1.23, and intermediate multiplication yields a 2.46 format.\n                   The accumulator maintains full precision of the intermediate multiplication results,\n                   but provides only a 16 guard bits.\n                   There is no saturation on intermediate additions.\n                   If the accumulator overflows it wraps around and distorts the result.\n                   In order to avoid overflows completely the input signal must be scaled down by\n                   log2(blockSize)-8 bits, as a total of blockSize additions are performed internally.\n                   After division, internal variables should be Q18.46\n                   Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value.\n */\n\nvoid arm_var_q31(\n  const q31_t * pSrc,\n        uint32_t blockSize,\n        q31_t * pResult)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n        q63_t sum = 0;                                 /* Temporary result storage */\n        q63_t meanOfSquares, squareOfMean;             /* Square of mean and mean of square */\n        q63_t sumOfSquares = 0;                        /* Sum of squares */\n        q31_t in;                                      /* Temporary variable to store input value */\n\n  if (blockSize <= 1U)\n  {\n    *pResult = 0;\n    return;\n  }\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++ >> 8U;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    sumOfSquares += ((q63_t) (in) * (in));\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    in = *pSrc++ >> 8U;\n    sumOfSquares += ((q63_t) (in) * (in));\n    sum += in;\n\n    in = *pSrc++ >> 8U;\n    sumOfSquares += ((q63_t) (in) * (in));\n    sum += in;\n\n    in = *pSrc++ >> 8U;\n    sumOfSquares += ((q63_t) (in) * (in));\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */\n    /* C = A[0] + A[1] + ... + A[blockSize-1] */\n\n    in = *pSrc++ >> 8U;\n    /* Compute sum of squares and store result in a temporary variable, sumOfSquares. */\n    sumOfSquares += ((q63_t) (in) * (in));\n    /* Compute sum and store result in a temporary variable, sum. */\n    sum += in;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Compute Mean of squares and store result in a temporary variable, meanOfSquares. */\n  meanOfSquares = (sumOfSquares / (q63_t)(blockSize - 1U));\n\n  /* Compute square of mean */\n  squareOfMean = ( sum * sum / (q63_t)(blockSize * (blockSize - 1U)));\n\n  /* Compute variance and store result in destination */\n  *pResult = (meanOfSquares - squareOfMean) >> 15U;\n}\n\n/**\n  @} end of variance group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPSupport)\n\n\nfile(GLOB SRC \"./*_*.c\")\n\nadd_library(CMSISDSPSupport STATIC ${SRC})\n\nconfigdsp(CMSISDSPSupport ..)\n\n### Includes\ntarget_include_directories(CMSISDSPSupport PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/SupportFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        SupportFunctions.c\n * Description:  Combination of all support function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_copy_f32.c\"\n#include \"arm_copy_q15.c\"\n#include \"arm_copy_q31.c\"\n#include \"arm_copy_q7.c\"\n#include \"arm_fill_f32.c\"\n#include \"arm_fill_q15.c\"\n#include \"arm_fill_q31.c\"\n#include \"arm_fill_q7.c\"\n#include \"arm_float_to_q15.c\"\n#include \"arm_float_to_q31.c\"\n#include \"arm_float_to_q7.c\"\n#include \"arm_q15_to_float.c\"\n#include \"arm_q15_to_q31.c\"\n#include \"arm_q15_to_q7.c\"\n#include \"arm_q31_to_float.c\"\n#include \"arm_q31_to_q15.c\"\n#include \"arm_q31_to_q7.c\"\n#include \"arm_q7_to_float.c\"\n#include \"arm_q7_to_q15.c\"\n#include \"arm_q7_to_q31.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_copy_f32.c\n * Description:  Copies the elements of a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @defgroup copy Vector Copy\n\n  Copies sample by sample from source vector to destination vector.\n\n  <pre>\n      pDst[n] = pSrc[n];   0 <= n < blockSize.\n  </pre>\n\n  There are separate functions for floating point, Q31, Q15, and Q7 data types.\n */\n\n/**\n  @addtogroup copy\n  @{\n */\n\n/**\n  @brief         Copies the elements of a floating-point vector.\n  @param[in]     pSrc       points to input vector\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_copy_f32(\n  const float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* loop counter */\n\n  float32x4_t inV;\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n    /* Copy and then store the results in the destination buffer */\n    inV = vld1q_f32(pSrc);\n    vst1q_f32(pDst, inV);\n    pSrc += 4;\n    pDst += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 3;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n    /* Copy and then store the results in the destination buffer */\n    *pDst++ = *pSrc++;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n}\n#else\nvoid arm_copy_f32(\n  const float32_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* Copy and store result in destination buffer */\n    *pDst++ = *pSrc++;\n    *pDst++ = *pSrc++;\n    *pDst++ = *pSrc++;\n    *pDst++ = *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* Copy and store result in destination buffer */\n    *pDst++ = *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n/**\n  @} end of BasicCopy group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_copy_q15.c\n * Description:  Copies the elements of a Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup copy\n  @{\n */\n\n/**\n  @brief         Copies the elements of a Q15 vector.\n  @param[in]     pSrc       points to input vector\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_copy_q15(\n  const q15_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* read 2 times 2 samples at a time */\n    write_q15x2_ia (&pDst, read_q15x2_ia ((q15_t **) &pSrc));\n    write_q15x2_ia (&pDst, read_q15x2_ia ((q15_t **) &pSrc));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* Copy and store result in destination buffer */\n    *pDst++ = *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n  @} end of BasicCopy group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_copy_q31.c\n * Description:  Copies the elements of a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup copy\n  @{\n */\n\n/**\n  @brief         Copies the elements of a Q31 vector.\n  @param[in]     pSrc       points to input vector\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_copy_q31(\n  const q31_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* Copy and store result in destination buffer */\n    *pDst++ = *pSrc++;\n    *pDst++ = *pSrc++;\n    *pDst++ = *pSrc++;\n    *pDst++ = *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* Copy and store result in destination buffer */\n    *pDst++ = *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n  @} end of BasicCopy group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_copy_q7.c\n * Description:  Copies the elements of a Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup copy\n  @{\n */\n\n/**\n  @brief         Copies the elements of a Q7 vector.\n  @param[in]     pSrc       points to input vector\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_copy_q7(\n  const q7_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* read 4 samples at a time */\n    write_q7x4_ia (&pDst, read_q7x4_ia ((q7_t **) &pSrc));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A */\n\n    /* Copy and store result in destination buffer */\n    *pDst++ = *pSrc++;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n  @} end of BasicCopy group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fill_f32.c\n * Description:  Fills a constant value into a floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @defgroup Fill Vector Fill\n\n  Fills the destination vector with a constant value.\n\n  <pre>\n      pDst[n] = value;   0 <= n < blockSize.\n  </pre>\n\n  There are separate functions for floating point, Q31, Q15, and Q7 data types.\n */\n\n/**\n  @addtogroup Fill\n  @{\n */\n\n/**\n  @brief         Fills a constant value into a floating-point vector.\n  @param[in]     value      input value to be filled\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_fill_f32(\n  float32_t value,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* loop counter */\n\n\n  float32x4_t inV = vdupq_n_f32(value);\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n    /* Fill the value in the destination buffer */\n    vst1q_f32(pDst, inV);\n    pDst += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 3;\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n    /* Fill the value in the destination buffer */\n    *pDst++ = value;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n}\n#else\nvoid arm_fill_f32(\n  float32_t value,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* Fill value in destination buffer */\n    *pDst++ = value;\n    *pDst++ = value;\n    *pDst++ = value;\n    *pDst++ = value;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* Fill value in destination buffer */\n    *pDst++ = value;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n/**\n  @} end of Fill group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fill_q15.c\n * Description:  Fills a constant value into a Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup Fill\n  @{\n */\n\n/**\n  @brief         Fills a constant value into a Q15 vector.\n  @param[in]     value      input value to be filled\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_fill_q15(\n  q15_t value,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  q31_t packedValue;                             /* value packed to 32 bits */\n\n  /* Packing two 16 bit values to 32 bit value in order to use SIMD */\n  packedValue = __PKHBT(value, value, 16U);\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* fill 2 times 2 samples at a time */\n    write_q15x2_ia (&pDst, packedValue);\n    write_q15x2_ia (&pDst, packedValue);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* Fill value in destination buffer */\n    *pDst++ = value;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n  @} end of Fill group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fill_q31.c\n * Description:  Fills a constant value into a Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup Fill\n  @{\n */\n\n/**\n  @brief         Fills a constant value into a Q31 vector.\n  @param[in]     value      input value to be filled\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_fill_q31(\n  q31_t value,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* Fill value in destination buffer */\n    *pDst++ = value;\n    *pDst++ = value;\n    *pDst++ = value;\n    *pDst++ = value;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* Fill value in destination buffer */\n    *pDst++ = value;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n  @} end of Fill group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_fill_q7.c\n * Description:  Fills a constant value into a Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup Fill\n  @{\n */\n\n/**\n  @brief         Fills a constant value into a Q7 vector.\n  @param[in]     value      input value to be filled\n  @param[out]    pDst       points to output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n */\n\nvoid arm_fill_q7(\n  q7_t value,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* Loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n  q31_t packedValue;                             /* value packed to 32 bits */\n\n  /* Packing four 8 bit values to 32 bit value in order to use SIMD */\n  packedValue = __PACKq7(value, value, value, value);\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* fill 4 samples at a time */\n    write_q7x4_ia (&pDst, packedValue);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = value */\n\n    /* Fill value in destination buffer */\n    *pDst++ = value;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n  @} end of Fill group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_float_to_q15.c\n * Description:  Converts the elements of the floating-point vector to Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup float_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the floating-point vector to Q15 vector.\n  @param[in]     pSrc       points to the floating-point input vector\n  @param[out]    pDst       points to the Q15 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q15_t)(pSrc[n] * 32768);   0 <= n < blockSize.\n  </pre>\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.\n\n  @note\n                   In order to apply rounding, the library should be rebuilt with the ROUNDING macro\n                   defined in the preprocessor section of project options.\n */\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_float_to_q15(\n  const float32_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize)\n{\n  const float32_t *pIn = pSrc;                         /* Src pointer */\n  uint32_t blkCnt;                               /* loop counter */\n\n  float32_t in;\n  float32x4_t inV;\n  #ifdef ARM_MATH_ROUNDING\n  float32x4_t zeroV = vdupq_n_f32(0.0f);\n  float32x4_t pHalf = vdupq_n_f32(0.5f / 32768.0f);\n  float32x4_t mHalf = vdupq_n_f32(-0.5f / 32768.0f);\n  float32x4_t r;\n  uint32x4_t cmp;\n  #endif\n\n  int32x4_t cvt;\n  int16x4_t outV;\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n\n#ifdef ARM_MATH_ROUNDING\n    /* C = A * 32768 */\n    /* Convert from float to q15 and then store the results in the destination buffer */\n    inV = vld1q_f32(pIn);\n    cmp = vcgtq_f32(inV,zeroV);\n    r = vbslq_f32(cmp,pHalf,mHalf);\n    inV = vaddq_f32(inV, r);\n\n    pIn += 4;\n\n    cvt = vcvtq_n_s32_f32(inV,15);\n    outV = vqmovn_s32(cvt);\n\n    vst1_s16(pDst, outV);\n    pDst += 4;\n\n#else\n\n    /* C = A * 32768 */\n    /* Convert from float to q15 and then store the results in the destination buffer */\n    inV = vld1q_f32(pIn);\n\n    cvt = vcvtq_n_s32_f32(inV,15);\n    outV = vqmovn_s32(cvt);\n\n    vst1_s16(pDst, outV);\n    pDst += 4;\n    pIn += 4;\n\n#endif /*      #ifdef ARM_MATH_ROUNDING        */\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 3;\n\n  while (blkCnt > 0U)\n  {\n\n#ifdef ARM_MATH_ROUNDING\n    /* C = A * 32768 */\n    /* Convert from float to q15 and then store the results in the destination buffer */\n    in = *pIn++;\n    in = (in * 32768.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));\n\n#else\n\n    /* C = A * 32768 */\n    /* Convert from float to q15 and then store the results in the destination buffer */\n    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);\n\n#endif /*      #ifdef ARM_MATH_ROUNDING        */\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n}\n#else\nvoid arm_float_to_q15(\n  const float32_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const float32_t *pIn = pSrc;                         /* Source pointer */\n\n#ifdef ARM_MATH_ROUNDING\n        float32_t in;\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * 32768 */\n\n    /* convert from float to Q15 and store result in destination buffer */\n#ifdef ARM_MATH_ROUNDING\n\n    in = (*pIn++ * 32768.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));\n\n    in = (*pIn++ * 32768.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));\n\n    in = (*pIn++ * 32768.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));\n\n    in = (*pIn++ * 32768.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));\n\n#else\n\n    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);\n    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);\n    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);\n    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);\n\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * 32768 */\n\n    /* convert from float to Q15 and store result in destination buffer */\n#ifdef ARM_MATH_ROUNDING\n\n    in = (*pIn++ * 32768.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));\n\n#else\n\n    /* C = A * 32768 */\n    /* Convert from float to q15 and then store the results in the destination buffer */\n    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);\n\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of float_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_float_to_q31.c\n * Description:  Converts the elements of the floating-point vector to Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n * @defgroup float_to_x  Convert 32-bit floating point value\n */\n\n/**\n  @addtogroup float_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the floating-point vector to Q31 vector.\n  @param[in]     pSrc       points to the floating-point input vector\n  @param[out]    pDst       points to the Q31 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q31_t)(pSrc[n] * 2147483648);   0 <= n < blockSize.\n  </pre>\n\n  @par           Scaling and Overflow Behavior\n                   The function uses saturating arithmetic.\n                   Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] are saturated.\n\n  @note\n                   In order to apply rounding, the library should be rebuilt with the ROUNDING macro\n                   defined in the preprocessor section of project options.\n */\n\n#if defined(ARM_MATH_NEON)\nvoid arm_float_to_q31(\n  const float32_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize)\n{\n  const float32_t *pIn = pSrc;                         /* Src pointer */\n  uint32_t blkCnt;                               /* loop counter */\n\n  float32_t in;\n  float32x4_t inV;\n  #ifdef ARM_MATH_ROUNDING\n  float32x4_t zeroV = vdupq_n_f32(0.0f);\n  float32x4_t pHalf = vdupq_n_f32(0.5f / 2147483648.0f);\n  float32x4_t mHalf = vdupq_n_f32(-0.5f / 2147483648.0f);\n  float32x4_t r;\n  uint32x4_t cmp;\n  #endif\n\n  int32x4_t outV;\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n\n#ifdef ARM_MATH_ROUNDING\n\n    /* C = A * 32768 */\n    /* Convert from float to Q31 and then store the results in the destination buffer */\n    inV = vld1q_f32(pIn);\n    cmp = vcgtq_f32(inV,zeroV);\n    r = vbslq_f32(cmp,pHalf,mHalf);\n    inV = vaddq_f32(inV, r);\n\n    pIn += 4;\n\n    outV = vcvtq_n_s32_f32(inV,31);\n\n    vst1q_s32(pDst, outV);\n    pDst += 4;\n\n#else\n\n    /* C = A * 2147483648 */\n    /* Convert from float to Q31 and then store the results in the destination buffer */\n    inV = vld1q_f32(pIn);\n\n    outV = vcvtq_n_s32_f32(inV,31);\n\n    vst1q_s32(pDst, outV);\n    pDst += 4;\n    pIn += 4;\n\n#endif /*      #ifdef ARM_MATH_ROUNDING        */\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 3;\n\n  while (blkCnt > 0U)\n  {\n\n#ifdef ARM_MATH_ROUNDING\n\n    /* C = A * 2147483648 */\n    /* Convert from float to Q31 and then store the results in the destination buffer */\n    in = *pIn++;\n    in = (in * 2147483648.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = clip_q63_to_q31((q63_t) (in));\n\n#else\n\n    /* C = A * 2147483648 */\n    /* Convert from float to Q31 and then store the results in the destination buffer */\n    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));\n\n#endif /*      #ifdef ARM_MATH_ROUNDING        */\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n\n}\n#else\nvoid arm_float_to_q31(\n  const float32_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const float32_t *pIn = pSrc;                         /* Source pointer */\n\n#ifdef ARM_MATH_ROUNDING\n        float32_t in;\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * 2147483648 */\n\n    /* convert from float to Q31 and store result in destination buffer */\n#ifdef ARM_MATH_ROUNDING\n\n    in = (*pIn++ * 2147483648.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = clip_q63_to_q31((q63_t) (in));\n\n    in = (*pIn++ * 2147483648.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = clip_q63_to_q31((q63_t) (in));\n\n    in = (*pIn++ * 2147483648.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = clip_q63_to_q31((q63_t) (in));\n\n    in = (*pIn++ * 2147483648.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = clip_q63_to_q31((q63_t) (in));\n\n#else\n\n    /* C = A * 2147483648 */\n    /* Convert from float to Q31 and then store the results in the destination buffer */\n    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));\n    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));\n    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));\n    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));\n\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * 2147483648 */\n\n    /* convert from float to Q31 and store result in destination buffer */\n#ifdef ARM_MATH_ROUNDING\n\n    in = (*pIn++ * 2147483648.0f);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = clip_q63_to_q31((q63_t) (in));\n\n#else\n\n    /* C = A * 2147483648 */\n    /* Convert from float to Q31 and then store the results in the destination buffer */\n    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));\n\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of float_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_float_to_q7.c\n * Description:  Converts the elements of the floating-point vector to Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup float_to_x\n  @{\n */\n\n/**\n * @brief Converts the elements of the floating-point vector to Q7 vector.\n * @param[in]       *pSrc points to the floating-point input vector\n * @param[out]      *pDst points to the Q7 output vector\n * @param[in]       blockSize length of the input vector\n * @return none.\n *\n *\\par Description:\n * \\par\n * The equation used for the conversion process is:\n * <pre>\n * \tpDst[n] = (q7_t)(pSrc[n] * 128);   0 <= n < blockSize.\n * </pre>\n * \\par Scaling and Overflow Behavior:\n * \\par\n * The function uses saturating arithmetic.\n * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.\n * \\note\n * In order to apply rounding, the library should be rebuilt with the ROUNDING macro\n * defined in the preprocessor section of project options.\n */\n\n#if defined(ARM_MATH_NEON)\nvoid arm_float_to_q7(\n  const float32_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize)\n{\n  const float32_t *pIn = pSrc;                         /* Src pointer */\n  uint32_t blkCnt;                               /* loop counter */\n\n  float32_t in;\n  float32x4_t inV;\n  #ifdef ARM_MATH_ROUNDING\n  float32x4_t zeroV = vdupq_n_f32(0.0f);\n  float32x4_t pHalf = vdupq_n_f32(0.5f / 128.0f);\n  float32x4_t mHalf = vdupq_n_f32(-0.5f / 128.0f);\n  float32x4_t r;\n  uint32x4_t cmp;\n  #endif\n\n  int32x4_t cvt;\n  int16x4_t cvt1,cvt2;\n  int8x8_t outV;\n\n  blkCnt = blockSize >> 3U;\n\n  /* Compute 8 outputs at a time.\n   ** a second loop below computes the remaining 1 to 7 samples. */\n  while (blkCnt > 0U)\n  {\n\n#ifdef ARM_MATH_ROUNDING\n    /* C = A * 128 */\n    /* Convert from float to q7 and then store the results in the destination buffer */\n    inV = vld1q_f32(pIn);\n    cmp = vcgtq_f32(inV,zeroV);\n    r = vbslq_f32(cmp,pHalf,mHalf);\n    inV = vaddq_f32(inV, r);\n    cvt1 = vqmovn_s32(vcvtq_n_s32_f32(inV,7));\n    pIn += 4;\n\n    inV = vld1q_f32(pIn);\n    cmp = vcgtq_f32(inV,zeroV);\n    r = vbslq_f32(cmp,pHalf,mHalf);\n    inV = vaddq_f32(inV, r);\n    cvt2 = vqmovn_s32(vcvtq_n_s32_f32(inV,7));\n    pIn += 4;\n    \n    outV = vqmovn_s16(vcombine_s16(cvt1,cvt2));\n    vst1_s8(pDst, outV);\n    pDst += 8;\n\n#else\n\n    /* C = A * 128 */\n    /* Convert from float to q7 and then store the results in the destination buffer */\n    inV = vld1q_f32(pIn);\n    cvt1 = vqmovn_s32(vcvtq_n_s32_f32(inV,7));\n    pIn += 4;\n\n    inV = vld1q_f32(pIn);\n    cvt2 = vqmovn_s32(vcvtq_n_s32_f32(inV,7));\n    pIn += 4;\n\n    outV = vqmovn_s16(vcombine_s16(cvt1,cvt2));\n\n    vst1_s8(pDst, outV);\n    pDst += 8;\n#endif /*      #ifdef ARM_MATH_ROUNDING        */\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 7;\n\n  while (blkCnt > 0U)\n  {\n\n#ifdef ARM_MATH_ROUNDING\n    /* C = A * 128 */\n    /* Convert from float to q7 and then store the results in the destination buffer */\n    in = *pIn++;\n    in = (in * 128);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));\n\n#else\n\n    /* C = A * 128 */\n    /* Convert from float to q7 and then store the results in the destination buffer */\n    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);\n\n#endif /*      #ifdef ARM_MATH_ROUNDING        */\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n}\n#else\nvoid arm_float_to_q7(\n  const float32_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const float32_t *pIn = pSrc;                         /* Source pointer */\n\n#ifdef ARM_MATH_ROUNDING\n        float32_t in;\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * 128 */\n\n    /* Convert from float to q7 and store result in destination buffer */\n#ifdef ARM_MATH_ROUNDING\n\n    in = (*pIn++ * 128);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));\n\n    in = (*pIn++ * 128);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));\n\n    in = (*pIn++ * 128);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));\n\n    in = (*pIn++ * 128);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));\n\n#else\n\n    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);\n    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);\n    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);\n    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);\n\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * 128 */\n\n    /* Convert from float to q7 and store result in destination buffer */\n#ifdef ARM_MATH_ROUNDING\n\n    in = (*pIn++ * 128);\n    in += in > 0.0f ? 0.5f : -0.5f;\n    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));\n\n#else\n\n    *pDst++ = (q7_t) __SSAT((q31_t) (*pIn++ * 128.0f), 8);\n\n#endif /* #ifdef ARM_MATH_ROUNDING */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of float_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q15_to_float.c\n * Description:  Converts the elements of the Q15 vector to floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n * @defgroup q15_to_x  Convert 16-bit Integer value\n */\n\n/**\n  @addtogroup q15_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q15 vector to floating-point vector.\n  @param[in]     pSrc       points to the Q15 input vector\n  @param[out]    pDst       points to the floating-point output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (float32_t) pSrc[n] / 32768;   0 <= n < blockSize.\n  </pre>\n */\n\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_q15_to_float(\n  const q15_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  const q15_t *pIn = pSrc;                             /* Src pointer */\n  uint32_t blkCnt;                               /* loop counter */\n\n  int16x8_t inV;\n  int32x4_t inV0, inV1;\n  float32x4_t outV;\n\n  blkCnt = blockSize >> 3U;\n\n  /* Compute 8 outputs at a time.\n   ** a second loop below computes the remaining 1 to 7 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 32768 */\n    /* convert from q15 to float and then store the results in the destination buffer */\n    inV = vld1q_s16(pIn);\n    pIn += 8;\n\n    inV0 = vmovl_s16(vget_low_s16(inV));\n    inV1 = vmovl_s16(vget_high_s16(inV));\n\n    outV = vcvtq_n_f32_s32(inV0,15);\n    vst1q_f32(pDst, outV);\n    pDst += 4;\n\n    outV = vcvtq_n_f32_s32(inV1,15);\n    vst1q_f32(pDst, outV);\n    pDst += 4;\n  \n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 8, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 7;\n\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 32768 */\n    /* convert from q15 to float and then store the results in the destination buffer */\n    *pDst++ = ((float32_t) * pIn++ / 32768.0f);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n}\n#else\nvoid arm_q15_to_float(\n  const q15_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q15_t *pIn = pSrc;                             /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 32768 */\n\n    /* Convert from q15 to float and store result in destination buffer */\n    *pDst++ = ((float32_t) * pIn++ / 32768.0f);\n    *pDst++ = ((float32_t) * pIn++ / 32768.0f);\n    *pDst++ = ((float32_t) * pIn++ / 32768.0f);\n    *pDst++ = ((float32_t) * pIn++ / 32768.0f);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 32768 */\n\n    /* Convert from q15 to float and store result in destination buffer */\n    *pDst++ = ((float32_t) *pIn++ / 32768.0f);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of q15_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q15_to_q31.c\n * Description:  Converts the elements of the Q15 vector to Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup q15_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q15 vector to Q31 vector.\n  @param[in]     pSrc       points to the Q15 input vector\n  @param[out]    pDst       points to the Q31 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q31_t) pSrc[n] << 16;   0 <= n < blockSize.\n  </pre>\n */\n\nvoid arm_q15_to_q31(\n  const q15_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q15_t *pIn = pSrc;                             /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n        q31_t in1, in2;\n        q31_t out1, out2, out3, out4;\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q31_t)A << 16 */\n\n    /* Convert from q15 to q31 and store result in destination buffer */\n    in1 = read_q15x2_ia ((q15_t **) &pIn);\n    in2 = read_q15x2_ia ((q15_t **) &pIn);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n\n    /* extract lower 16 bits to 32 bit result */\n    out1 = in1 << 16U;\n    /* extract upper 16 bits to 32 bit result */\n    out2 = in1 & 0xFFFF0000;\n    /* extract lower 16 bits to 32 bit result */\n    out3 = in2 << 16U;\n    /* extract upper 16 bits to 32 bit result */\n    out4 = in2 & 0xFFFF0000;\n\n#else\n\n    /* extract upper 16 bits to 32 bit result */\n    out1 = in1 & 0xFFFF0000;\n    /* extract lower 16 bits to 32 bit result */\n    out2 = in1 << 16U;\n    /* extract upper 16 bits to 32 bit result */\n    out3 = in2 & 0xFFFF0000;\n    /* extract lower 16 bits to 32 bit result */\n    out4 = in2 << 16U;\n\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    *pDst++ = out1;\n    *pDst++ = out2;\n    *pDst++ = out3;\n    *pDst++ = out4;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q31_t) A << 16 */\n\n    /* Convert from q15 to q31 and store result in destination buffer */\n    *pDst++ = (q31_t) *pIn++ << 16;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of q15_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q15_to_q7.c\n * Description:  Converts the elements of the Q15 vector to Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup q15_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q15 vector to Q7 vector.\n  @param[in]     pSrc       points to the Q15 input vector\n  @param[out]    pDst       points to the Q7 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q7_t) pSrc[n] >> 8;   0 <= n < blockSize.\n  </pre>\n */\n\nvoid arm_q15_to_q7(\n  const q15_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q15_t *pIn = pSrc;                             /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in1, in2;\n        q31_t out1, out2;\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q7_t) A >> 8 */\n\n    /* Convert from q15 to q7 and store result in destination buffer */\n#if defined (ARM_MATH_DSP)\n\n    in1 = read_q15x2_ia ((q15_t **) &pIn);\n    in2 = read_q15x2_ia ((q15_t **) &pIn);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n\n    out1 = __PKHTB(in2, in1, 16);\n    out2 = __PKHBT(in2, in1, 16);\n\n#else\n\n    out1 = __PKHTB(in1, in2, 16);\n    out2 = __PKHBT(in1, in2, 16);\n\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* rotate packed value by 24 */\n    out2 = ((uint32_t) out2 << 8) | ((uint32_t) out2 >> 24);\n\n    /* anding with 0xff00ff00 to get two 8 bit values */\n    out1 = out1 & 0xFF00FF00;\n    /* anding with 0x00ff00ff to get two 8 bit values */\n    out2 = out2 & 0x00FF00FF;\n\n    /* oring two values(contains two 8 bit values) to get four packed 8 bit values */\n    out1 = out1 | out2;\n\n    /* store 4 samples at a time to destiantion buffer */\n    write_q7x4_ia (&pDst, out1);\n\n#else\n\n    *pDst++ = (q7_t) (*pIn++ >> 8);\n    *pDst++ = (q7_t) (*pIn++ >> 8);\n    *pDst++ = (q7_t) (*pIn++ >> 8);\n    *pDst++ = (q7_t) (*pIn++ >> 8);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q7_t) A >> 8 */\n\n    /* Convert from q15 to q7 and store result in destination buffer */\n    *pDst++ = (q7_t) (*pIn++ >> 8);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of q15_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q31_to_float.c\n * Description:  Converts the elements of the Q31 vector to floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n * @defgroup q31_to_x  Convert 32-bit Integer value\n */\n\n/**\n  @addtogroup q31_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q31 vector to floating-point vector.\n  @param[in]     pSrc       points to the Q31 input vector\n  @param[out]    pDst       points to the floating-point output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (float32_t) pSrc[n] / 2147483648;   0 <= n < blockSize.\n  </pre>\n */\n\n#if defined(ARM_MATH_NEON_EXPERIMENTAL)\nvoid arm_q31_to_float(\n  const q31_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n  const q31_t *pIn = pSrc;                             /* Src pointer */\n  uint32_t blkCnt;                               /* loop counter */\n\n  int32x4_t inV;\n  float32x4_t outV;\n\n  blkCnt = blockSize >> 2U;\n\n  /* Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 2147483648 */\n    /* Convert from q31 to float and then store the results in the destination buffer */\n    inV = vld1q_s32(pIn);\n    pIn += 4;\n\n    outV = vcvtq_n_f32_s32(inV,31);\n\n    vst1q_f32(pDst, outV);\n    pDst += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 3;\n\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 2147483648 */\n    /* Convert from q31 to float and then store the results in the destination buffer */\n    *pDst++ = ((float32_t) * pIn++ / 2147483648.0f);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n}\n#else\nvoid arm_q31_to_float(\n  const q31_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  const q31_t *pIn = pSrc;                             /* Src pointer */\n  uint32_t blkCnt;                               /* loop counter */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 2147483648 */\n\n    /* Convert from q31 to float and store result in destination buffer */\n    *pDst++ = ((float32_t) *pIn++ / 2147483648.0f);\n    *pDst++ = ((float32_t) *pIn++ / 2147483648.0f);\n    *pDst++ = ((float32_t) *pIn++ / 2147483648.0f);\n    *pDst++ = ((float32_t) *pIn++ / 2147483648.0f);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 2147483648 */\n\n    /* Convert from q31 to float and store result in destination buffer */\n    *pDst++ = ((float32_t) *pIn++ / 2147483648.0f);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of q31_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q31_to_q15.c\n * Description:  Converts the elements of the Q31 vector to Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup q31_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q31 vector to Q15 vector.\n  @param[in]     pSrc       points to the Q31 input vector\n  @param[out]    pDst       points to the Q15 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q15_t) pSrc[n] >> 16;   0 <= n < blockSize.\n  </pre>\n */\n\nvoid arm_q31_to_q15(\n  const q31_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q31_t *pIn = pSrc;                             /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in1, in2, in3, in4;\n        q31_t out1, out2;\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q15_t) (A >> 16) */\n\n    /* Convert from q31 to q15 and store result in destination buffer */\n#if defined (ARM_MATH_DSP)\n\n    in1 = *pIn++;\n    in2 = *pIn++;\n    in3 = *pIn++;\n    in4 = *pIn++;\n\n    /* pack two higher 16-bit values from two 32-bit values */\n#ifndef ARM_MATH_BIG_ENDIAN\n    out1 = __PKHTB(in2, in1, 16);\n    out2 = __PKHTB(in4, in3, 16);\n#else\n    out1 = __PKHTB(in1, in2, 16);\n    out2 = __PKHTB(in3, in4, 16);\n#endif /* #ifdef ARM_MATH_BIG_ENDIAN */\n\n    write_q15x2_ia (&pDst, out1);\n    write_q15x2_ia (&pDst, out2);\n\n#else\n\n    *pDst++ = (q15_t) (*pIn++ >> 16);\n    *pDst++ = (q15_t) (*pIn++ >> 16);\n    *pDst++ = (q15_t) (*pIn++ >> 16);\n    *pDst++ = (q15_t) (*pIn++ >> 16);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q15_t) (A >> 16) */\n\n    /* Convert from q31 to q15 and store result in destination buffer */\n    *pDst++ = (q15_t) (*pIn++ >> 16);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of q31_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q31_to_q7.c\n * Description:  Converts the elements of the Q31 vector to Q7 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup q31_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q31 vector to Q7 vector.\n  @param[in]     pSrc       points to the Q31 input vector\n  @param[out]    pDst       points to the Q7 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q7_t) pSrc[n] >> 24;   0 <= n < blockSize.\n  </pre>\n */\n\nvoid arm_q31_to_q7(\n  const q31_t * pSrc,\n        q7_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q31_t *pIn = pSrc;                             /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  q7_t out1, out2, out3, out4;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q7_t) (A >> 24) */\n\n    /* Convert from q31 to q7 and store result in destination buffer */\n\n    out1 = (q7_t) (*pIn++ >> 24);\n    out2 = (q7_t) (*pIn++ >> 24);\n    out3 = (q7_t) (*pIn++ >> 24);\n    out4 = (q7_t) (*pIn++ >> 24);\n    write_q7x4_ia (&pDst, __PACKq7(out1, out2, out3, out4));\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q7_t) (A >> 24) */\n\n    /* Convert from q31 to q7 and store result in destination buffer */\n    *pDst++ = (q7_t) (*pIn++ >> 24);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of q31_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q7_to_float.c\n * Description:  Converts the elements of the Q7 vector to floating-point vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n * @defgroup q7_to_x  Convert 8-bit Integer value\n */\n\n/**\n  @addtogroup q7_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q7 vector to floating-point vector.\n  @param[in]     pSrc       points to the Q7 input vector\n  @param[out]    pDst       points to the floating-point output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n @par            Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (float32_t) pSrc[n] / 128;   0 <= n < blockSize.\n  </pre>\n */\n\n#if defined(ARM_MATH_NEON)\nvoid arm_q7_to_float(\n  const q7_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize)\n{\n  const q7_t *pIn = pSrc;                              /* Src pointer */\n  uint32_t blkCnt;                               /* loop counter */\n\n  int8x16_t inV;\n  int16x8_t inVLO, inVHI;\n  int32x4_t inVLL, inVLH, inVHL, inVHH;\n  float32x4_t outV;\n\n  blkCnt = blockSize >> 4U;\n\n  /* Compute 16 outputs at a time.\n   ** a second loop below computes the remaining 1 to 15 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 128 */\n    /* Convert from q7 to float and then store the results in the destination buffer */\n    inV = vld1q_s8(pIn);\n    pIn += 16;\n\n    inVLO = vmovl_s8(vget_low_s8(inV));\n    inVHI = vmovl_s8(vget_high_s8(inV));\n\n    inVLL = vmovl_s16(vget_low_s16(inVLO));\n    inVLH = vmovl_s16(vget_high_s16(inVLO));\n    inVHL = vmovl_s16(vget_low_s16(inVHI));\n    inVHH = vmovl_s16(vget_high_s16(inVHI));\n\n    outV = vcvtq_n_f32_s32(inVLL,7);\n    vst1q_f32(pDst, outV);\n    pDst += 4;\n\n    outV = vcvtq_n_f32_s32(inVLH,7);\n    vst1q_f32(pDst, outV);\n    pDst += 4;\n\n    outV = vcvtq_n_f32_s32(inVHL,7);\n    vst1q_f32(pDst, outV);\n    pDst += 4;\n\n    outV = vcvtq_n_f32_s32(inVHH,7);\n    vst1q_f32(pDst, outV);\n    pDst += 4;\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 16, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize & 0xF;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 128 */\n    /* Convert from q7 to float and then store the results in the destination buffer */\n    *pDst++ = ((float32_t) * pIn++ / 128.0f);\n\n    /* Decrement the loop counter */\n    blkCnt--;\n  }\n}\n#else\nvoid arm_q7_to_float(\n  const q7_t * pSrc,\n        float32_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q7_t *pIn = pSrc;                              /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 128 */\n\n    /* Convert from q7 to float and store result in destination buffer */\n    *pDst++ = ((float32_t) * pIn++ / 128.0f);\n    *pDst++ = ((float32_t) * pIn++ / 128.0f);\n    *pDst++ = ((float32_t) * pIn++ / 128.0f);\n    *pDst++ = ((float32_t) * pIn++ / 128.0f);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (float32_t) A / 128 */\n\n    /* Convert from q7 to float and store result in destination buffer */\n    *pDst++ = ((float32_t) * pIn++ / 128.0f);\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n#endif /* #if defined(ARM_MATH_NEON) */\n\n/**\n  @} end of q7_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q7_to_q15.c\n * Description:  Converts the elements of the Q7 vector to Q15 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup q7_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q7 vector to Q15 vector.\n  @param[in]     pSrc       points to the Q7 input vector\n  @param[out]    pDst       points to the Q15 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q15_t) pSrc[n] << 8;   0 <= n < blockSize.\n  </pre>\n */\n\nvoid arm_q7_to_q15(\n  const q7_t * pSrc,\n        q15_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q7_t *pIn = pSrc;                              /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)\n        q31_t in;\n        q31_t in1, in2;\n        q31_t out1, out2;\n#endif\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q15_t) A << 8 */\n\n    /* Convert from q7 to q15 and store result in destination buffer */\n#if defined (ARM_MATH_DSP)\n\n    in = read_q7x4_ia ((q7_t **) &pIn);\n\n    /* rotatate in by 8 and extend two q7_t values to q15_t values */\n    in1 = __SXTB16(__ROR(in, 8));\n\n    /* extend remainig two q7_t values to q15_t values */\n    in2 = __SXTB16(in);\n\n    in1 = in1 << 8U;\n    in2 = in2 << 8U;\n\n    in1 = in1 & 0xFF00FF00;\n    in2 = in2 & 0xFF00FF00;\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    out2 = __PKHTB(in1, in2, 16);\n    out1 = __PKHBT(in2, in1, 16);\n#else\n    out1 = __PKHTB(in1, in2, 16);\n    out2 = __PKHBT(in2, in1, 16);\n#endif\n\n    write_q15x2_ia (&pDst, out1);\n    write_q15x2_ia (&pDst, out2);\n\n#else\n\n    *pDst++ = (q15_t) *pIn++ << 8;\n    *pDst++ = (q15_t) *pIn++ << 8;\n    *pDst++ = (q15_t) *pIn++ << 8;\n    *pDst++ = (q15_t) *pIn++ << 8;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q15_t) A << 8 */\n\n    /* Convert from q7 to q15 and store result in destination buffer */\n    *pDst++ = (q15_t) * pIn++ << 8;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of q7_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_q7_to_q31.c\n * Description:  Converts the elements of the Q7 vector to Q31 vector\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupSupport\n */\n\n/**\n  @addtogroup q7_to_x\n  @{\n */\n\n/**\n  @brief         Converts the elements of the Q7 vector to Q31 vector.\n  @param[in]     pSrc       points to the Q7 input vector\n  @param[out]    pDst       points to the Q31 output vector\n  @param[in]     blockSize  number of samples in each vector\n  @return        none\n\n  @par           Details\n                   The equation used for the conversion process is:\n  <pre>\n      pDst[n] = (q31_t) pSrc[n] << 24;   0 <= n < blockSize.\n  </pre>\n */\n\nvoid arm_q7_to_q31(\n  const q7_t * pSrc,\n        q31_t * pDst,\n        uint32_t blockSize)\n{\n        uint32_t blkCnt;                               /* Loop counter */\n  const q7_t *pIn = pSrc;                              /* Source pointer */\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        q31_t in;\n\n  /* Loop unrolling: Compute 4 outputs at a time */\n  blkCnt = blockSize >> 2U;\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q31_t) A << 24 */\n\n    /* Convert from q7 to q31 and store result in destination buffer */\n    in = read_q7x4_ia ((q7_t **) &pIn);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n\n    *pDst++ = (__ROR(in, 8)) & 0xFF000000;\n    *pDst++ = (__ROR(in, 16)) & 0xFF000000;\n    *pDst++ = (__ROR(in, 24)) & 0xFF000000;\n    *pDst++ = (in & 0xFF000000);\n\n#else\n\n    *pDst++ = (in & 0xFF000000);\n    *pDst++ = (__ROR(in, 24)) & 0xFF000000;\n    *pDst++ = (__ROR(in, 16)) & 0xFF000000;\n    *pDst++ = (__ROR(in, 8)) & 0xFF000000;\n\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n  /* Loop unrolling: Compute remaining outputs */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n  while (blkCnt > 0U)\n  {\n    /* C = (q31_t) A << 24 */\n\n    /* Convert from q7 to q31 and store result in destination buffer */\n    *pDst++ = (q31_t) * pIn++ << 24;\n\n    /* Decrement loop counter */\n    blkCnt--;\n  }\n\n}\n\n/**\n  @} end of q7_to_x group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/CMakeLists.txt",
    "content": "cmake_minimum_required (VERSION 3.6)\n\nproject(CMSISDSPTransform)\n\n\n\nadd_library(CMSISDSPTransform STATIC)\n\ninclude(fft)\nfft(CMSISDSPTransform)\n\nif (CONFIGTABLE AND ALLFFT)\ntarget_compile_definitions(CMSISDSPTransform PUBLIC ARM_ALL_FFT_TABLES) \nendif() \n\ntarget_sources(CMSISDSPTransform PRIVATE arm_bitreversal.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_bitreversal2.c)\n\nif (NOT CONFIGTABLE OR ALLFFT OR CFFT_F32_16 OR CFFT_F32_32 OR CFFT_F32_64 OR CFFT_F32_128 OR CFFT_F32_256 OR CFFT_F32_512 \n    OR CFFT_F32_1024 OR CFFT_F32_2048 OR CFFT_F32_4096)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix2_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix8_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_f32.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR CFFT_Q15_16 OR CFFT_Q15_32 OR CFFT_Q15_64 OR CFFT_Q15_128 OR CFFT_Q15_256 OR CFFT_Q15_512 \n    OR CFFT_Q15_1024 OR CFFT_Q15_2048 OR CFFT_Q15_4096)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix2_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_q15.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR CFFT_Q31_16 OR CFFT_Q31_32 OR CFFT_Q31_64 OR CFFT_Q31_128 OR CFFT_Q31_256 OR CFFT_Q31_512 \n    OR CFFT_Q31_1024 OR CFFT_Q31_2048 OR CFFT_Q31_4096)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix2_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_q31.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix2_init_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix2_init_q31.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR DCT4_F32_128 OR DCT4_F32_512 OR DCT4_F32_2048 OR DCT4_F32_8192)\ntarget_sources(CMSISDSPTransform PRIVATE arm_dct4_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_dct4_init_f32.c)\n\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_init_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_init_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_f32.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR DCT4_Q31_128 OR DCT4_Q31_512 OR DCT4_Q31_2048 OR DCT4_Q31_8192)\ntarget_sources(CMSISDSPTransform PRIVATE arm_dct4_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_dct4_init_q31.c)\n\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_init_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_init_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_q31.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR ALLFFT OR DCT4_Q15_128 OR DCT4_Q15_512 OR DCT4_Q15_2048 OR DCT4_Q15_8192)\ntarget_sources(CMSISDSPTransform PRIVATE arm_dct4_init_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_dct4_q15.c)\n\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_init_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_init_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_q15.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR RFFT_FAST_F32_32 OR RFFT_FAST_F32_64 OR RFFT_FAST_F32_128\n   OR RFFT_FAST_F32_256 OR RFFT_FAST_F32_512 OR RFFT_FAST_F32_1024 OR RFFT_FAST_F32_2048\n   OR RFFT_FAST_F32_4096 )\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_fast_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_fast_init_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix8_f32.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR RFFT_F32_128 OR RFFT_F32_512 OR RFFT_F32_2048 OR RFFT_F32_8192)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_init_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_init_f32.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_f32.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR RFFT_Q15_32 OR RFFT_Q15_64 OR RFFT_Q15_128 OR RFFT_Q15_256\n     OR RFFT_Q15_512 OR RFFT_Q15_1024 OR RFFT_Q15_2048 OR RFFT_Q15_4096 OR RFFT_Q15_8192)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_init_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_q15.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_q15.c)\nendif()\n\nif (NOT CONFIGTABLE OR ALLFFT OR RFFT_Q31_32 OR RFFT_Q31_64 OR RFFT_Q31_128 OR RFFT_Q31_256\n     OR RFFT_Q31_512 OR RFFT_Q31_1024 OR RFFT_Q31_2048 OR RFFT_Q31_4096 OR RFFT_Q31_8192)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_init_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_rfft_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_q31.c)\ntarget_sources(CMSISDSPTransform PRIVATE arm_cfft_radix4_q31.c)\nendif()\n\nconfigdsp(CMSISDSPTransform ..)\n\n### Includes\ntarget_include_directories(CMSISDSPTransform PUBLIC \"${DSP}/../../Include\")\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/TransformFunctions.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        TransformFunctions.c\n * Description:  Combination of all transform function source files.\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_bitreversal.c\"\n#include \"arm_bitreversal2.c\"\n#include \"arm_cfft_f32.c\"\n#include \"arm_cfft_q15.c\"\n#include \"arm_cfft_q31.c\"\n#include \"arm_cfft_radix2_f32.c\"\n#include \"arm_cfft_radix2_init_f32.c\"\n#include \"arm_cfft_radix2_init_q15.c\"\n#include \"arm_cfft_radix2_init_q31.c\"\n#include \"arm_cfft_radix2_q15.c\"\n#include \"arm_cfft_radix2_q31.c\"\n#include \"arm_cfft_radix4_f32.c\"\n#include \"arm_cfft_radix4_init_f32.c\"\n#include \"arm_cfft_radix4_init_q15.c\"\n#include \"arm_cfft_radix4_init_q31.c\"\n#include \"arm_cfft_radix4_q15.c\"\n#include \"arm_cfft_radix4_q31.c\"\n#include \"arm_cfft_radix8_f32.c\"\n#include \"arm_dct4_f32.c\"\n#include \"arm_dct4_init_f32.c\"\n#include \"arm_dct4_init_q15.c\"\n#include \"arm_dct4_init_q31.c\"\n#include \"arm_dct4_q15.c\"\n#include \"arm_dct4_q31.c\"\n#include \"arm_rfft_f32.c\"\n#include \"arm_rfft_fast_f32.c\"\n#include \"arm_rfft_fast_init_f32.c\"\n#include \"arm_rfft_init_f32.c\"\n#include \"arm_rfft_init_q15.c\"\n#include \"arm_rfft_init_q31.c\"\n#include \"arm_rfft_q15.c\"\n#include \"arm_rfft_q31.c\"\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_bitreversal.c\n * Description:  Bitreversal functions\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @brief         In-place floating-point bit reversal function.\n  @param[in,out] pSrc         points to in-place floating-point data buffer\n  @param[in]     fftSize      length of FFT\n  @param[in]     bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table\n  @param[in]     pBitRevTab   points to bit reversal table\n  @return        none\n */\n\nvoid arm_bitreversal_f32(\n        float32_t * pSrc,\n        uint16_t fftSize,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab)\n{\n   uint16_t fftLenBy2, fftLenBy2p1;\n   uint16_t i, j;\n   float32_t in;\n\n   /*  Initializations */\n   j = 0U;\n   fftLenBy2 = fftSize >> 1U;\n   fftLenBy2p1 = (fftSize >> 1U) + 1U;\n\n   /* Bit Reversal Implementation */\n   for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U)\n   {\n      if (i < j)\n      {\n         /*  pSrc[i] <-> pSrc[j]; */\n         in = pSrc[2U * i];\n         pSrc[2U * i] = pSrc[2U * j];\n         pSrc[2U * j] = in;\n\n         /*  pSrc[i+1U] <-> pSrc[j+1U] */\n         in = pSrc[(2U * i) + 1U];\n         pSrc[(2U * i) + 1U] = pSrc[(2U * j) + 1U];\n         pSrc[(2U * j) + 1U] = in;\n\n         /*  pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */\n         in = pSrc[2U * (i + fftLenBy2p1)];\n         pSrc[2U * (i + fftLenBy2p1)] = pSrc[2U * (j + fftLenBy2p1)];\n         pSrc[2U * (j + fftLenBy2p1)] = in;\n\n         /*  pSrc[i+fftLenBy2p1+1U] <-> pSrc[j+fftLenBy2p1+1U] */\n         in = pSrc[(2U * (i + fftLenBy2p1)) + 1U];\n         pSrc[(2U * (i + fftLenBy2p1)) + 1U] =\n         pSrc[(2U * (j + fftLenBy2p1)) + 1U];\n         pSrc[(2U * (j + fftLenBy2p1)) + 1U] = in;\n\n      }\n\n      /*  pSrc[i+1U] <-> pSrc[j+1U] */\n      in = pSrc[2U * (i + 1U)];\n      pSrc[2U * (i + 1U)] = pSrc[2U * (j + fftLenBy2)];\n      pSrc[2U * (j + fftLenBy2)] = in;\n\n      /*  pSrc[i+2U] <-> pSrc[j+2U] */\n      in = pSrc[(2U * (i + 1U)) + 1U];\n      pSrc[(2U * (i + 1U)) + 1U] = pSrc[(2U * (j + fftLenBy2)) + 1U];\n      pSrc[(2U * (j + fftLenBy2)) + 1U] = in;\n\n      /*  Reading the index for the bit reversal */\n      j = *pBitRevTab;\n\n      /*  Updating the bit reversal index depending on the fft length  */\n      pBitRevTab += bitRevFactor;\n   }\n}\n\n\n/**\n  @brief         In-place Q31 bit reversal function.\n  @param[in,out] pSrc         points to in-place Q31 data buffer.\n  @param[in]     fftLen       length of FFT.\n  @param[in]     bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table\n  @param[in]     pBitRevTab   points to bit reversal table\n  @return        none\n*/\n\nvoid arm_bitreversal_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab)\n{\n   uint32_t fftLenBy2, fftLenBy2p1, i, j;\n   q31_t in;\n\n   /*  Initializations      */\n   j = 0U;\n   fftLenBy2 = fftLen / 2U;\n   fftLenBy2p1 = (fftLen / 2U) + 1U;\n\n   /* Bit Reversal Implementation */\n   for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U)\n   {\n      if (i < j)\n      {\n         /*  pSrc[i] <-> pSrc[j]; */\n         in = pSrc[2U * i];\n         pSrc[2U * i] = pSrc[2U * j];\n         pSrc[2U * j] = in;\n\n         /*  pSrc[i+1U] <-> pSrc[j+1U] */\n         in = pSrc[(2U * i) + 1U];\n         pSrc[(2U * i) + 1U] = pSrc[(2U * j) + 1U];\n         pSrc[(2U * j) + 1U] = in;\n\n         /*  pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */\n         in = pSrc[2U * (i + fftLenBy2p1)];\n         pSrc[2U * (i + fftLenBy2p1)] = pSrc[2U * (j + fftLenBy2p1)];\n         pSrc[2U * (j + fftLenBy2p1)] = in;\n\n         /*  pSrc[i+fftLenBy2p1+1U] <-> pSrc[j+fftLenBy2p1+1U] */\n         in = pSrc[(2U * (i + fftLenBy2p1)) + 1U];\n         pSrc[(2U * (i + fftLenBy2p1)) + 1U] =\n         pSrc[(2U * (j + fftLenBy2p1)) + 1U];\n         pSrc[(2U * (j + fftLenBy2p1)) + 1U] = in;\n\n      }\n\n      /*  pSrc[i+1U] <-> pSrc[j+1U] */\n      in = pSrc[2U * (i + 1U)];\n      pSrc[2U * (i + 1U)] = pSrc[2U * (j + fftLenBy2)];\n      pSrc[2U * (j + fftLenBy2)] = in;\n\n      /*  pSrc[i+2U] <-> pSrc[j+2U] */\n      in = pSrc[(2U * (i + 1U)) + 1U];\n      pSrc[(2U * (i + 1U)) + 1U] = pSrc[(2U * (j + fftLenBy2)) + 1U];\n      pSrc[(2U * (j + fftLenBy2)) + 1U] = in;\n\n      /*  Reading the index for the bit reversal */\n      j = *pBitRevTab;\n\n      /*  Updating the bit reversal index depending on the fft length */\n      pBitRevTab += bitRevFactor;\n   }\n}\n\n\n\n/**\n  @brief         In-place Q15 bit reversal function.\n  @param[in,out] pSrc16       points to in-place Q15 data buffer\n  @param[in]     fftLen       length of FFT\n  @param[in]     bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table\n  @param[in]     pBitRevTab   points to bit reversal table\n  @return        none\n*/\n\nvoid arm_bitreversal_q15(\n        q15_t * pSrc16,\n        uint32_t fftLen,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab)\n{\n   q31_t *pSrc = (q31_t *) pSrc16;\n   q31_t in;\n   uint32_t fftLenBy2, fftLenBy2p1;\n   uint32_t i, j;\n\n   /*  Initializations */\n   j = 0U;\n   fftLenBy2 = fftLen / 2U;\n   fftLenBy2p1 = (fftLen / 2U) + 1U;\n\n   /* Bit Reversal Implementation */\n   for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U)\n   {\n      if (i < j)\n      {\n         /*  pSrc[i] <-> pSrc[j]; */\n         /*  pSrc[i+1U] <-> pSrc[j+1U] */\n         in = pSrc[i];\n         pSrc[i] = pSrc[j];\n         pSrc[j] = in;\n\n         /*  pSrc[i + fftLenBy2p1] <-> pSrc[j + fftLenBy2p1];  */\n         /*  pSrc[i + fftLenBy2p1+1U] <-> pSrc[j + fftLenBy2p1+1U] */\n         in = pSrc[i + fftLenBy2p1];\n         pSrc[i + fftLenBy2p1] = pSrc[j + fftLenBy2p1];\n         pSrc[j + fftLenBy2p1] = in;\n      }\n\n      /*  pSrc[i+1U] <-> pSrc[j+fftLenBy2];         */\n      /*  pSrc[i+2] <-> pSrc[j+fftLenBy2+1U]  */\n      in = pSrc[i + 1U];\n      pSrc[i + 1U] = pSrc[j + fftLenBy2];\n      pSrc[j + fftLenBy2] = in;\n\n      /*  Reading the index for the bit reversal */\n      j = *pBitRevTab;\n\n      /*  Updating the bit reversal index depending on the fft length  */\n      pBitRevTab += bitRevFactor;\n   }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S",
    "content": ";/* ----------------------------------------------------------------------\n; * Project:      CMSIS DSP Library\n; * Title:        arm_bitreversal2.S\n; * Description:  arm_bitreversal_32 function done in assembly for maximum speed.\n; *               Called after doing an fft to reorder the output.\n; *               The function is loop unrolled by 2. arm_bitreversal_16 as well.\n; *\n; * $Date:        18. March 2019\n; * $Revision:    V1.5.2\n; *\n; * Target Processor: Cortex-M cores\n; * -------------------------------------------------------------------- */\n;/*\n; * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n#if   defined ( __CC_ARM )     /* Keil */\n    #define CODESECT AREA     ||.text||, CODE, READONLY, ALIGN=2\n    #define LABEL\n#elif defined ( __IASMARM__ )  /* IAR */\n    #define CODESECT SECTION `.text`:CODE\n    #define PROC\n    #define LABEL\n    #define ENDP\n    #define EXPORT PUBLIC\n#elif defined ( __CSMC__ )\t   /* Cosmic */\n\t#define\tCODESECT\tswitch .text\n\t#define THUMB\n\t#define EXPORT\txdef\n\t#define PROC\t:\n\t#define LABEL\t:\n\t#define ENDP\n\t#define arm_bitreversal_32 _arm_bitreversal_32\n#elif defined ( __TI_ARM__ )   /* TI ARM */\n    #define THUMB    .thumb\n    #define CODESECT .text\n    #define EXPORT   .global\n    #define PROC     : .asmfunc\n    #define LABEL    :\n    #define ENDP     .endasmfunc\n    #define END\n#elif defined ( __GNUC__ )     /* GCC */\n    #define THUMB .thumb\n    #define CODESECT .section .text\n    #define EXPORT .global\n    #define PROC :\n    #define LABEL :\n    #define ENDP\n    #define END\n\n    .syntax unified\n#endif\n\n\tCODESECT\n\tTHUMB\n\n;/**\n;  @brief         In-place bit reversal function.\n;  @param[in,out] pSrc        points to the in-place buffer of unknown 32-bit data type\n;  @param[in]     bitRevLen   bit reversal table length\n;  @param[in]     pBitRevTab  points to bit reversal table\n;  @return        none\n; */\n\tEXPORT arm_bitreversal_32\n\tEXPORT arm_bitreversal_16\n\n#if   defined ( __CC_ARM )     /* Keil */\n#elif defined ( __IASMARM__ )  /* IAR */\n#elif defined ( __CSMC__ )\t   /* Cosmic */\n#elif defined ( __TI_ARM__ )   /* TI ARM */\n#elif defined ( __GNUC__ )     /* GCC */\n\t.type   arm_bitreversal_16, %function\n\t.type   arm_bitreversal_32, %function\n#endif\n\n#if defined (ARM_MATH_CM0_FAMILY)\n\narm_bitreversal_32 PROC\n\tADDS     r3,r1,#1\n\tPUSH     {r4-r6}\n\tADDS     r1,r2,#0\n\tLSRS     r3,r3,#1\narm_bitreversal_32_0 LABEL\n\tLDRH     r2,[r1,#2]\n\tLDRH     r6,[r1,#0]\n\tADD      r2,r0,r2\n\tADD      r6,r0,r6\n\tLDR      r5,[r2,#0]\n\tLDR      r4,[r6,#0]\n\tSTR      r5,[r6,#0]\n\tSTR      r4,[r2,#0]\n\tLDR      r5,[r2,#4]\n\tLDR      r4,[r6,#4]\n\tSTR      r5,[r6,#4]\n\tSTR      r4,[r2,#4]\n\tADDS     r1,r1,#4\n\tSUBS     r3,r3,#1\n\tBNE      arm_bitreversal_32_0\n\tPOP      {r4-r6}\n\tBX       lr\n\tENDP\n\narm_bitreversal_16 PROC\n\tADDS     r3,r1,#1\n\tPUSH     {r4-r6}\n\tADDS     r1,r2,#0\n\tLSRS     r3,r3,#1\narm_bitreversal_16_0 LABEL\n\tLDRH     r2,[r1,#2]\n\tLDRH     r6,[r1,#0]\n    LSRS     r2,r2,#1\n    LSRS     r6,r6,#1\n\tADD      r2,r0,r2\n\tADD      r6,r0,r6\n\tLDR      r5,[r2,#0]\n\tLDR      r4,[r6,#0]\n\tSTR      r5,[r6,#0]\n\tSTR      r4,[r2,#0]\n\tADDS     r1,r1,#4\n\tSUBS     r3,r3,#1\n\tBNE      arm_bitreversal_16_0\n\tPOP      {r4-r6}\n\tBX       lr\n\tENDP\n\n#else\n\narm_bitreversal_32 PROC\n\tADDS     r3,r1,#1\n\tCMP      r3,#1\n\tIT       LS\n\tBXLS     lr\n\tPUSH     {r4-r9}\n\tADDS     r1,r2,#2\n\tLSRS     r3,r3,#2\narm_bitreversal_32_0 LABEL       ;/* loop unrolled by 2 */\n\tLDRH     r8,[r1,#4]\n\tLDRH     r9,[r1,#2]\n\tLDRH     r2,[r1,#0]\n\tLDRH     r12,[r1,#-2]\n\tADD      r8,r0,r8\n\tADD      r9,r0,r9\n\tADD      r2,r0,r2\n\tADD      r12,r0,r12\n\tLDR      r7,[r9,#0]\n\tLDR      r6,[r8,#0]\n\tLDR      r5,[r2,#0]\n\tLDR      r4,[r12,#0]\n\tSTR      r6,[r9,#0]\n\tSTR      r7,[r8,#0]\n\tSTR      r5,[r12,#0]\n\tSTR      r4,[r2,#0]\n\tLDR      r7,[r9,#4]\n\tLDR      r6,[r8,#4]\n\tLDR      r5,[r2,#4]\n\tLDR      r4,[r12,#4]\n\tSTR      r6,[r9,#4]\n\tSTR      r7,[r8,#4]\n\tSTR      r5,[r12,#4]\n\tSTR      r4,[r2,#4]\n\tADDS     r1,r1,#8\n\tSUBS     r3,r3,#1\n\tBNE      arm_bitreversal_32_0\n\tPOP      {r4-r9}\n\tBX       lr\n\tENDP\n\narm_bitreversal_16 PROC\n\tADDS     r3,r1,#1\n\tCMP      r3,#1\n\tIT       LS\n\tBXLS     lr\n\tPUSH     {r4-r9}\n\tADDS     r1,r2,#2\n\tLSRS     r3,r3,#2\narm_bitreversal_16_0 LABEL       ;/* loop unrolled by 2 */\n\tLDRH     r8,[r1,#4]\n\tLDRH     r9,[r1,#2]\n\tLDRH     r2,[r1,#0]\n\tLDRH     r12,[r1,#-2]\n\tADD      r8,r0,r8,LSR #1\n\tADD      r9,r0,r9,LSR #1\n\tADD      r2,r0,r2,LSR #1\n\tADD      r12,r0,r12,LSR #1\n\tLDR      r7,[r9,#0]\n\tLDR      r6,[r8,#0]\n\tLDR      r5,[r2,#0]\n\tLDR      r4,[r12,#0]\n\tSTR      r6,[r9,#0]\n\tSTR      r7,[r8,#0]\n\tSTR      r5,[r12,#0]\n\tSTR      r4,[r2,#0]\n\tADDS     r1,r1,#8\n\tSUBS     r3,r3,#1\n\tBNE      arm_bitreversal_16_0\n\tPOP      {r4-r9}\n\tBX       lr\n\tENDP\n\n#endif\n\n\tEND\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_bitreversal2.c\n * Description:  Bitreversal functions\n *\n * $Date:        18. March 2019\n * $Revision:    V1.0.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @brief         In-place 32 bit reversal function.\n  @param[in,out] pSrc        points to in-place buffer of unknown 32-bit data type\n  @param[in]     bitRevLen   bit reversal table length\n  @param[in]     pBitRevTab  points to bit reversal table\n  @return        none\n*/\n\nvoid arm_bitreversal_32(\n        uint32_t *pSrc, \n  const uint16_t bitRevLen, \n  const uint16_t *pBitRevTab)\n{\n  uint32_t a, b, i, tmp;\n\n  for (i = 0; i < bitRevLen; )\n  {\n     a = pBitRevTab[i    ] >> 2;\n     b = pBitRevTab[i + 1] >> 2;\n\n     //real\n     tmp = pSrc[a];\n     pSrc[a] = pSrc[b];\n     pSrc[b] = tmp;\n\n     //complex\n     tmp = pSrc[a+1];\n     pSrc[a+1] = pSrc[b+1];\n     pSrc[b+1] = tmp;\n\n    i += 2;\n  }\n}\n\n\n/**\n  @brief         In-place 16 bit reversal function.\n  @param[in,out] pSrc        points to in-place buffer of unknown 16-bit data type\n  @param[in]     bitRevLen   bit reversal table length\n  @param[in]     pBitRevTab  points to bit reversal table\n  @return        none\n*/\n\nvoid arm_bitreversal_16(\n        uint16_t *pSrc, \n  const uint16_t bitRevLen, \n  const uint16_t *pBitRevTab)\n{\n  uint16_t a, b, i, tmp;\n\n  for (i = 0; i < bitRevLen; )\n  {\n     a = pBitRevTab[i    ] >> 2;\n     b = pBitRevTab[i + 1] >> 2;\n\n     //real\n     tmp = pSrc[a];\n     pSrc[a] = pSrc[b];\n     pSrc[b] = tmp;\n\n     //complex\n     tmp = pSrc[a+1];\n     pSrc[a+1] = pSrc[b+1];\n     pSrc[b+1] = tmp;\n\n    i += 2;\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_f32.c\n * Description:  Combined Radix Decimation in Frequency CFFT Floating point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\nextern void arm_radix8_butterfly_f32(\n        float32_t * pSrc,\n        uint16_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier);\n\nextern void arm_bitreversal_32(\n        uint32_t * pSrc,\n  const uint16_t bitRevLen,\n  const uint16_t * pBitRevTable);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @defgroup ComplexFFT Complex FFT Functions\n \n  @par\n                   The Fast Fourier Transform (FFT) is an efficient algorithm for computing the\n                   Discrete Fourier Transform (DFT).  The FFT can be orders of magnitude faster\n                   than the DFT, especially for long lengths.\n                   The algorithms described in this section\n                   operate on complex data.  A separate set of functions is devoted to handling\n                   of real sequences.\n  @par\n                   There are separate algorithms for handling floating-point, Q15, and Q31 data\n                   types.  The algorithms available for each data type are described next.\n  @par\n                   The FFT functions operate in-place.  That is, the array holding the input data\n                   will also be used to hold the corresponding result.  The input data is complex\n                   and contains <code>2*fftLen</code> interleaved values as shown below.\n                   <pre>{real[0], imag[0], real[1], imag[1], ...} </pre>\n                   The FFT result will be contained in the same array and the frequency domain\n                   values will have the same interleaving.\n \n  @par Floating-point\n                   The floating-point complex FFT uses a mixed-radix algorithm.  Multiple radix-8\n                   stages are performed along with a single radix-2 or radix-4 stage, as needed.\n                   The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses\n                   a different twiddle factor table.\n  @par\n                   The function uses the standard FFT definition and output values may grow by a\n                   factor of <code>fftLen</code> when computing the forward transform.  The\n                   inverse transform includes a scale of <code>1/fftLen</code> as part of the\n                   calculation and this matches the textbook definition of the inverse FFT.\n  @par\n                   Pre-initialized data structures containing twiddle factors and bit reversal\n                   tables are provided and defined in <code>arm_const_structs.h</code>.  Include\n                   this header in your function and then pass one of the constant structures as\n                   an argument to arm_cfft_f32.  For example:\n  @par\n                   <code>arm_cfft_f32(arm_cfft_sR_f32_len64, pSrc, 1, 1)</code>\n  @par\n                   computes a 64-point inverse complex FFT including bit reversal.\n                   The data structures are treated as constant data and not modified during the\n                   calculation.  The same data structure can be reused for multiple transforms\n                   including mixing forward and inverse transforms.\n  @par\n                   Earlier releases of the library provided separate radix-2 and radix-4\n                   algorithms that operated on floating-point data.  These functions are still\n                   provided but are deprecated.  The older functions are slower and less general\n                   than the new functions.\n  @par\n                   An example of initialization of the constants for the arm_cfft_f32 function follows:\n  @code\n                   const static arm_cfft_instance_f32 *S;\n                   ...\n                     switch (length) {\n                       case 16:\n                         S = &arm_cfft_sR_f32_len16;\n                         break;\n                       case 32:\n                         S = &arm_cfft_sR_f32_len32;\n                         break;\n                       case 64:\n                         S = &arm_cfft_sR_f32_len64;\n                         break;\n                       case 128:\n                         S = &arm_cfft_sR_f32_len128;\n                         break;\n                       case 256:\n                         S = &arm_cfft_sR_f32_len256;\n                         break;\n                       case 512:\n                         S = &arm_cfft_sR_f32_len512;\n                         break;\n                       case 1024:\n                         S = &arm_cfft_sR_f32_len1024;\n                         break;\n                       case 2048:\n                         S = &arm_cfft_sR_f32_len2048;\n                         break;\n                       case 4096:\n                         S = &arm_cfft_sR_f32_len4096;\n                         break;\n                     }\n  @endcode\n  @par Q15 and Q31\n                   The floating-point complex FFT uses a mixed-radix algorithm.  Multiple radix-4\n                   stages are performed along with a single radix-2 stage, as needed.\n                   The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses\n                   a different twiddle factor table.\n  @par\n                   The function uses the standard FFT definition and output values may grow by a\n                   factor of <code>fftLen</code> when computing the forward transform.  The\n                   inverse transform includes a scale of <code>1/fftLen</code> as part of the\n                   calculation and this matches the textbook definition of the inverse FFT.\n  @par\n                   Pre-initialized data structures containing twiddle factors and bit reversal\n                   tables are provided and defined in <code>arm_const_structs.h</code>.  Include\n                   this header in your function and then pass one of the constant structures as\n                   an argument to arm_cfft_q31. For example:\n  @par\n                   <code>arm_cfft_q31(arm_cfft_sR_q31_len64, pSrc, 1, 1)</code>\n  @par\n                   computes a 64-point inverse complex FFT including bit reversal.\n                   The data structures are treated as constant data and not modified during the\n                   calculation.  The same data structure can be reused for multiple transforms\n                   including mixing forward and inverse transforms.\n  @par\n                   Earlier releases of the library provided separate radix-2 and radix-4\n                   algorithms that operated on floating-point data.  These functions are still\n                   provided but are deprecated.  The older functions are slower and less general\n                   than the new functions.\n  @par\n                   An example of initialization of the constants for the arm_cfft_q31 function follows:\n  @code\n                   const static arm_cfft_instance_q31 *S;\n                   ...\n                     switch (length) {\n                       case 16:\n                         S = &arm_cfft_sR_q31_len16;\n                         break;\n                       case 32:\n                         S = &arm_cfft_sR_q31_len32;\n                         break;\n                       case 64:\n                         S = &arm_cfft_sR_q31_len64;\n                         break;\n                       case 128:\n                         S = &arm_cfft_sR_q31_len128;\n                         break;\n                       case 256:\n                         S = &arm_cfft_sR_q31_len256;\n                         break;\n                       case 512:\n                         S = &arm_cfft_sR_q31_len512;\n                         break;\n                       case 1024:\n                         S = &arm_cfft_sR_q31_len1024;\n                         break;\n                       case 2048:\n                         S = &arm_cfft_sR_q31_len2048;\n                         break;\n                       case 4096:\n                         S = &arm_cfft_sR_q31_len4096;\n                         break;\n                     }\n  @endcode\n \n */\n\nvoid arm_cfft_radix8by2_f32 (arm_cfft_instance_f32 * S, float32_t * p1)\n{\n  uint32_t    L  = S->fftLen;\n  float32_t * pCol1, * pCol2, * pMid1, * pMid2;\n  float32_t * p2 = p1 + L;\n  const float32_t * tw = (float32_t *) S->pTwiddle;\n  float32_t t1[4], t2[4], t3[4], t4[4], twR, twI;\n  float32_t m0, m1, m2, m3;\n  uint32_t l;\n\n  pCol1 = p1;\n  pCol2 = p2;\n\n  /* Define new length */\n  L >>= 1;\n\n  /* Initialize mid pointers */\n  pMid1 = p1 + L;\n  pMid2 = p2 + L;\n\n  /* do two dot Fourier transform */\n  for (l = L >> 2; l > 0; l-- )\n  {\n    t1[0] = p1[0];\n    t1[1] = p1[1];\n    t1[2] = p1[2];\n    t1[3] = p1[3];\n\n    t2[0] = p2[0];\n    t2[1] = p2[1];\n    t2[2] = p2[2];\n    t2[3] = p2[3];\n\n    t3[0] = pMid1[0];\n    t3[1] = pMid1[1];\n    t3[2] = pMid1[2];\n    t3[3] = pMid1[3];\n\n    t4[0] = pMid2[0];\n    t4[1] = pMid2[1];\n    t4[2] = pMid2[2];\n    t4[3] = pMid2[3];\n\n    *p1++ = t1[0] + t2[0];\n    *p1++ = t1[1] + t2[1];\n    *p1++ = t1[2] + t2[2];\n    *p1++ = t1[3] + t2[3];    /* col 1 */\n\n    t2[0] = t1[0] - t2[0];\n    t2[1] = t1[1] - t2[1];\n    t2[2] = t1[2] - t2[2];\n    t2[3] = t1[3] - t2[3];    /* for col 2 */\n\n    *pMid1++ = t3[0] + t4[0];\n    *pMid1++ = t3[1] + t4[1];\n    *pMid1++ = t3[2] + t4[2];\n    *pMid1++ = t3[3] + t4[3]; /* col 1 */\n\n    t4[0] = t4[0] - t3[0];\n    t4[1] = t4[1] - t3[1];\n    t4[2] = t4[2] - t3[2];\n    t4[3] = t4[3] - t3[3];    /* for col 2 */\n\n    twR = *tw++;\n    twI = *tw++;\n\n    /* multiply by twiddle factors */\n    m0 = t2[0] * twR;\n    m1 = t2[1] * twI;\n    m2 = t2[1] * twR;\n    m3 = t2[0] * twI;\n\n    /* R  =  R  *  Tr - I * Ti */\n    *p2++ = m0 + m1;\n    /* I  =  I  *  Tr + R * Ti */\n    *p2++ = m2 - m3;\n\n    /* use vertical symmetry */\n    /*  0.9988 - 0.0491i <==> -0.0491 - 0.9988i */\n    m0 = t4[0] * twI;\n    m1 = t4[1] * twR;\n    m2 = t4[1] * twI;\n    m3 = t4[0] * twR;\n\n    *pMid2++ = m0 - m1;\n    *pMid2++ = m2 + m3;\n\n    twR = *tw++;\n    twI = *tw++;\n\n    m0 = t2[2] * twR;\n    m1 = t2[3] * twI;\n    m2 = t2[3] * twR;\n    m3 = t2[2] * twI;\n\n    *p2++ = m0 + m1;\n    *p2++ = m2 - m3;\n\n    m0 = t4[2] * twI;\n    m1 = t4[3] * twR;\n    m2 = t4[3] * twI;\n    m3 = t4[2] * twR;\n\n    *pMid2++ = m0 - m1;\n    *pMid2++ = m2 + m3;\n  }\n\n  /* first col */\n  arm_radix8_butterfly_f32 (pCol1, L, (float32_t *) S->pTwiddle, 2U);\n\n  /* second col */\n  arm_radix8_butterfly_f32 (pCol2, L, (float32_t *) S->pTwiddle, 2U);\n}\n\nvoid arm_cfft_radix8by4_f32 (arm_cfft_instance_f32 * S, float32_t * p1)\n{\n    uint32_t    L  = S->fftLen >> 1;\n    float32_t * pCol1, *pCol2, *pCol3, *pCol4, *pEnd1, *pEnd2, *pEnd3, *pEnd4;\n    const float32_t *tw2, *tw3, *tw4;\n    float32_t * p2 = p1 + L;\n    float32_t * p3 = p2 + L;\n    float32_t * p4 = p3 + L;\n    float32_t t2[4], t3[4], t4[4], twR, twI;\n    float32_t p1ap3_0, p1sp3_0, p1ap3_1, p1sp3_1;\n    float32_t m0, m1, m2, m3;\n    uint32_t l, twMod2, twMod3, twMod4;\n\n    pCol1 = p1;         /* points to real values by default */\n    pCol2 = p2;\n    pCol3 = p3;\n    pCol4 = p4;\n    pEnd1 = p2 - 1;     /* points to imaginary values by default */\n    pEnd2 = p3 - 1;\n    pEnd3 = p4 - 1;\n    pEnd4 = pEnd3 + L;\n\n    tw2 = tw3 = tw4 = (float32_t *) S->pTwiddle;\n\n    L >>= 1;\n\n    /* do four dot Fourier transform */\n\n    twMod2 = 2;\n    twMod3 = 4;\n    twMod4 = 6;\n\n    /* TOP */\n    p1ap3_0 = p1[0] + p3[0];\n    p1sp3_0 = p1[0] - p3[0];\n    p1ap3_1 = p1[1] + p3[1];\n    p1sp3_1 = p1[1] - p3[1];\n\n    /* col 2 */\n    t2[0] = p1sp3_0 + p2[1] - p4[1];\n    t2[1] = p1sp3_1 - p2[0] + p4[0];\n    /* col 3 */\n    t3[0] = p1ap3_0 - p2[0] - p4[0];\n    t3[1] = p1ap3_1 - p2[1] - p4[1];\n    /* col 4 */\n    t4[0] = p1sp3_0 - p2[1] + p4[1];\n    t4[1] = p1sp3_1 + p2[0] - p4[0];\n    /* col 1 */\n    *p1++ = p1ap3_0 + p2[0] + p4[0];\n    *p1++ = p1ap3_1 + p2[1] + p4[1];\n\n    /* Twiddle factors are ones */\n    *p2++ = t2[0];\n    *p2++ = t2[1];\n    *p3++ = t3[0];\n    *p3++ = t3[1];\n    *p4++ = t4[0];\n    *p4++ = t4[1];\n\n    tw2 += twMod2;\n    tw3 += twMod3;\n    tw4 += twMod4;\n\n    for (l = (L - 2) >> 1; l > 0; l-- )\n    {\n      /* TOP */\n      p1ap3_0 = p1[0] + p3[0];\n      p1sp3_0 = p1[0] - p3[0];\n      p1ap3_1 = p1[1] + p3[1];\n      p1sp3_1 = p1[1] - p3[1];\n      /* col 2 */\n      t2[0] = p1sp3_0 + p2[1] - p4[1];\n      t2[1] = p1sp3_1 - p2[0] + p4[0];\n      /* col 3 */\n      t3[0] = p1ap3_0 - p2[0] - p4[0];\n      t3[1] = p1ap3_1 - p2[1] - p4[1];\n      /* col 4 */\n      t4[0] = p1sp3_0 - p2[1] + p4[1];\n      t4[1] = p1sp3_1 + p2[0] - p4[0];\n      /* col 1 - top */\n      *p1++ = p1ap3_0 + p2[0] + p4[0];\n      *p1++ = p1ap3_1 + p2[1] + p4[1];\n\n      /* BOTTOM */\n      p1ap3_1 = pEnd1[-1] + pEnd3[-1];\n      p1sp3_1 = pEnd1[-1] - pEnd3[-1];\n      p1ap3_0 = pEnd1[ 0] + pEnd3[0];\n      p1sp3_0 = pEnd1[ 0] - pEnd3[0];\n      /* col 2 */\n      t2[2] = pEnd2[0] - pEnd4[0] + p1sp3_1;\n      t2[3] = pEnd1[0] - pEnd3[0] - pEnd2[-1] + pEnd4[-1];\n      /* col 3 */\n      t3[2] = p1ap3_1 - pEnd2[-1] - pEnd4[-1];\n      t3[3] = p1ap3_0 - pEnd2[ 0] - pEnd4[ 0];\n      /* col 4 */\n      t4[2] = pEnd2[ 0] - pEnd4[ 0] - p1sp3_1;\n      t4[3] = pEnd4[-1] - pEnd2[-1] - p1sp3_0;\n      /* col 1 - Bottom */\n      *pEnd1-- = p1ap3_0 + pEnd2[ 0] + pEnd4[ 0];\n      *pEnd1-- = p1ap3_1 + pEnd2[-1] + pEnd4[-1];\n\n      /* COL 2 */\n      /* read twiddle factors */\n      twR = *tw2++;\n      twI = *tw2++;\n      /* multiply by twiddle factors */\n      /*  let    Z1 = a + i(b),   Z2 = c + i(d) */\n      /*   =>  Z1 * Z2  =  (a*c - b*d) + i(b*c + a*d) */\n\n      /* Top */\n      m0 = t2[0] * twR;\n      m1 = t2[1] * twI;\n      m2 = t2[1] * twR;\n      m3 = t2[0] * twI;\n\n      *p2++ = m0 + m1;\n      *p2++ = m2 - m3;\n      /* use vertical symmetry col 2 */\n      /* 0.9997 - 0.0245i  <==>  0.0245 - 0.9997i */\n      /* Bottom */\n      m0 = t2[3] * twI;\n      m1 = t2[2] * twR;\n      m2 = t2[2] * twI;\n      m3 = t2[3] * twR;\n\n      *pEnd2-- = m0 - m1;\n      *pEnd2-- = m2 + m3;\n\n      /* COL 3 */\n      twR = tw3[0];\n      twI = tw3[1];\n      tw3 += twMod3;\n      /* Top */\n      m0 = t3[0] * twR;\n      m1 = t3[1] * twI;\n      m2 = t3[1] * twR;\n      m3 = t3[0] * twI;\n\n      *p3++ = m0 + m1;\n      *p3++ = m2 - m3;\n      /* use vertical symmetry col 3 */\n      /* 0.9988 - 0.0491i  <==>  -0.9988 - 0.0491i */\n      /* Bottom */\n      m0 = -t3[3] * twR;\n      m1 =  t3[2] * twI;\n      m2 =  t3[2] * twR;\n      m3 =  t3[3] * twI;\n\n      *pEnd3-- = m0 - m1;\n      *pEnd3-- = m3 - m2;\n\n      /* COL 4 */\n      twR = tw4[0];\n      twI = tw4[1];\n      tw4 += twMod4;\n      /* Top */\n      m0 = t4[0] * twR;\n      m1 = t4[1] * twI;\n      m2 = t4[1] * twR;\n      m3 = t4[0] * twI;\n\n      *p4++ = m0 + m1;\n      *p4++ = m2 - m3;\n      /* use vertical symmetry col 4 */\n      /* 0.9973 - 0.0736i  <==>  -0.0736 + 0.9973i */\n      /* Bottom */\n      m0 = t4[3] * twI;\n      m1 = t4[2] * twR;\n      m2 = t4[2] * twI;\n      m3 = t4[3] * twR;\n\n      *pEnd4-- = m0 - m1;\n      *pEnd4-- = m2 + m3;\n    }\n\n    /* MIDDLE */\n    /* Twiddle factors are */\n    /*  1.0000  0.7071-0.7071i  -1.0000i  -0.7071-0.7071i */\n    p1ap3_0 = p1[0] + p3[0];\n    p1sp3_0 = p1[0] - p3[0];\n    p1ap3_1 = p1[1] + p3[1];\n    p1sp3_1 = p1[1] - p3[1];\n\n    /* col 2 */\n    t2[0] = p1sp3_0 + p2[1] - p4[1];\n    t2[1] = p1sp3_1 - p2[0] + p4[0];\n    /* col 3 */\n    t3[0] = p1ap3_0 - p2[0] - p4[0];\n    t3[1] = p1ap3_1 - p2[1] - p4[1];\n    /* col 4 */\n    t4[0] = p1sp3_0 - p2[1] + p4[1];\n    t4[1] = p1sp3_1 + p2[0] - p4[0];\n    /* col 1 - Top */\n    *p1++ = p1ap3_0 + p2[0] + p4[0];\n    *p1++ = p1ap3_1 + p2[1] + p4[1];\n\n    /* COL 2 */\n    twR = tw2[0];\n    twI = tw2[1];\n\n    m0 = t2[0] * twR;\n    m1 = t2[1] * twI;\n    m2 = t2[1] * twR;\n    m3 = t2[0] * twI;\n\n    *p2++ = m0 + m1;\n    *p2++ = m2 - m3;\n    /* COL 3 */\n    twR = tw3[0];\n    twI = tw3[1];\n\n    m0 = t3[0] * twR;\n    m1 = t3[1] * twI;\n    m2 = t3[1] * twR;\n    m3 = t3[0] * twI;\n\n    *p3++ = m0 + m1;\n    *p3++ = m2 - m3;\n    /* COL 4 */\n    twR = tw4[0];\n    twI = tw4[1];\n\n    m0 = t4[0] * twR;\n    m1 = t4[1] * twI;\n    m2 = t4[1] * twR;\n    m3 = t4[0] * twI;\n\n    *p4++ = m0 + m1;\n    *p4++ = m2 - m3;\n\n    /* first col */\n    arm_radix8_butterfly_f32 (pCol1, L, (float32_t *) S->pTwiddle, 4U);\n\n    /* second col */\n    arm_radix8_butterfly_f32 (pCol2, L, (float32_t *) S->pTwiddle, 4U);\n\n    /* third col */\n    arm_radix8_butterfly_f32 (pCol3, L, (float32_t *) S->pTwiddle, 4U);\n\n    /* fourth col */\n    arm_radix8_butterfly_f32 (pCol4, L, (float32_t *) S->pTwiddle, 4U);\n}\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point complex FFT.\n  @param[in]     S              points to an instance of the floating-point CFFT structure\n  @param[in,out] p1             points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        none\n */\n\nvoid arm_cfft_f32(\n  const arm_cfft_instance_f32 * S,\n        float32_t * p1,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag)\n{\n  uint32_t  L = S->fftLen, l;\n  float32_t invL, * pSrc;\n\n  if (ifftFlag == 1U)\n  {\n    /* Conjugate input data */\n    pSrc = p1 + 1;\n    for (l = 0; l < L; l++)\n    {\n      *pSrc = -*pSrc;\n      pSrc += 2;\n    }\n  }\n\n  switch (L)\n  {\n  case 16:\n  case 128:\n  case 1024:\n    arm_cfft_radix8by2_f32 ( (arm_cfft_instance_f32 *) S, p1);\n    break;\n  case 32:\n  case 256:\n  case 2048:\n    arm_cfft_radix8by4_f32 ( (arm_cfft_instance_f32 *) S, p1);\n    break;\n  case 64:\n  case 512:\n  case 4096:\n    arm_radix8_butterfly_f32 ( p1, L, (float32_t *) S->pTwiddle, 1);\n    break;\n  }\n\n  if ( bitReverseFlag )\n    arm_bitreversal_32 ((uint32_t*) p1, S->bitRevLength, S->pBitRevTable);\n\n  if (ifftFlag == 1U)\n  {\n    invL = 1.0f / (float32_t)L;\n\n    /* Conjugate and scale output data */\n    pSrc = p1;\n    for (l= 0; l < L; l++)\n    {\n      *pSrc++ *=   invL ;\n      *pSrc    = -(*pSrc) * invL;\n      pSrc++;\n    }\n  }\n}\n\n/**\n  @} end of ComplexFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_q15.c\n * Description:  Combined Radix Decimation in Q15 Frequency CFFT processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nextern void arm_radix4_butterfly_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef,\n        uint32_t twidCoefModifier);\n\nextern void arm_radix4_butterfly_inverse_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef,\n        uint32_t twidCoefModifier);\n\nextern void arm_bitreversal_16(\n        uint16_t * pSrc,\n  const uint16_t bitRevLen,\n  const uint16_t * pBitRevTable);\n\nvoid arm_cfft_radix4by2_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef);\n\nvoid arm_cfft_radix4by2_inverse_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Processing function for Q15 complex FFT.\n  @param[in]     S               points to an instance of Q15 CFFT structure\n  @param[in,out] p1              points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        none\n */\n\nvoid arm_cfft_q15(\n  const arm_cfft_instance_q15 * S,\n        q15_t * p1,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag)\n{\n  uint32_t L = S->fftLen;\n\n  if (ifftFlag == 1U)\n  {\n     switch (L)\n     {\n     case 16:\n     case 64:\n     case 256:\n     case 1024:\n     case 4096:\n       arm_radix4_butterfly_inverse_q15 ( p1, L, (q15_t*)S->pTwiddle, 1 );\n       break;\n\n     case 32:\n     case 128:\n     case 512:\n     case 2048:\n       arm_cfft_radix4by2_inverse_q15 ( p1, L, S->pTwiddle );\n       break;\n     }\n  }\n  else\n  {\n     switch (L)\n     {\n     case 16:\n     case 64:\n     case 256:\n     case 1024:\n     case 4096:\n       arm_radix4_butterfly_q15  ( p1, L, (q15_t*)S->pTwiddle, 1 );\n       break;\n\n     case 32:\n     case 128:\n     case 512:\n     case 2048:\n       arm_cfft_radix4by2_q15  ( p1, L, S->pTwiddle );\n       break;\n     }\n  }\n\n  if ( bitReverseFlag )\n    arm_bitreversal_16 ((uint16_t*) p1, S->bitRevLength, S->pBitRevTable);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n\nvoid arm_cfft_radix4by2_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef)\n{\n        uint32_t i;\n        uint32_t n2;\n        q15_t p0, p1, p2, p3;\n#if defined (ARM_MATH_DSP)\n        q31_t T, S, R;\n        q31_t coeff, out1, out2;\n  const q15_t *pC = pCoef;\n        q15_t *pSi = pSrc;\n        q15_t *pSl = pSrc + fftLen;\n#else\n        uint32_t l;\n        q15_t xt, yt, cosVal, sinVal;\n#endif\n\n  n2 = fftLen >> 1U;\n\n#if defined (ARM_MATH_DSP)\n\n  for (i = n2; i > 0; i--)\n  {\n      coeff = read_q15x2_ia ((q15_t **) &pC);\n\n      T = read_q15x2 (pSi);\n      T = __SHADD16(T, 0); /* this is just a SIMD arithmetic shift right by 1 */\n\n      S = read_q15x2 (pSl);\n      S = __SHADD16(S, 0); /* this is just a SIMD arithmetic shift right by 1 */\n\n      R = __QSUB16(T, S);\n\n      write_q15x2_ia (&pSi, __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      out1 = __SMUAD(coeff, R) >> 16U;\n      out2 = __SMUSDX(coeff, R);\n#else\n      out1 = __SMUSDX(R, coeff) >> 16U;\n      out2 = __SMUAD(coeff, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n      write_q15x2_ia (&pSl, (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n  }\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  for (i = 0; i < n2; i++)\n  {\n     cosVal = pCoef[2 * i];\n     sinVal = pCoef[2 * i + 1];\n\n     l = i + n2;\n\n     xt =           (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U);\n     pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U;\n\n     yt =               (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U);\n     pSrc[2 * i + 1] = ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U;\n\n     pSrc[2 * l]     = (((int16_t) (((q31_t) xt * cosVal) >> 16U)) +\n                        ((int16_t) (((q31_t) yt * sinVal) >> 16U))  );\n\n     pSrc[2 * l + 1] = (((int16_t) (((q31_t) yt * cosVal) >> 16U)) -\n                        ((int16_t) (((q31_t) xt * sinVal) >> 16U))   );\n  }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n  /* first col */\n  arm_radix4_butterfly_q15( pSrc,          n2, (q15_t*)pCoef, 2U);\n\n  /* second col */\n  arm_radix4_butterfly_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2U);\n\n  n2 = fftLen >> 1U;\n  for (i = 0; i < n2; i++)\n  {\n     p0 = pSrc[4 * i + 0];\n     p1 = pSrc[4 * i + 1];\n     p2 = pSrc[4 * i + 2];\n     p3 = pSrc[4 * i + 3];\n\n     p0 <<= 1U;\n     p1 <<= 1U;\n     p2 <<= 1U;\n     p3 <<= 1U;\n\n     pSrc[4 * i + 0] = p0;\n     pSrc[4 * i + 1] = p1;\n     pSrc[4 * i + 2] = p2;\n     pSrc[4 * i + 3] = p3;\n  }\n\n}\n\nvoid arm_cfft_radix4by2_inverse_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef)\n{\n        uint32_t i;\n        uint32_t n2;\n        q15_t p0, p1, p2, p3;\n#if defined (ARM_MATH_DSP)\n        q31_t T, S, R;\n        q31_t coeff, out1, out2;\n  const q15_t *pC = pCoef;\n        q15_t *pSi = pSrc;\n        q15_t *pSl = pSrc + fftLen;\n#else\n        uint32_t l;\n        q15_t xt, yt, cosVal, sinVal;\n#endif\n\n  n2 = fftLen >> 1U;\n\n#if defined (ARM_MATH_DSP)\n\n  for (i = n2; i > 0; i--)\n  {\n     coeff = read_q15x2_ia ((q15_t **) &pC);\n\n     T = read_q15x2 (pSi);\n     T = __SHADD16(T, 0); /* this is just a SIMD arithmetic shift right by 1 */\n\n     S = read_q15x2 (pSl);\n     S = __SHADD16(S, 0); /* this is just a SIMD arithmetic shift right by 1 */\n\n     R = __QSUB16(T, S);\n\n     write_q15x2_ia (&pSi, __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n     out1 = __SMUSD(coeff, R) >> 16U;\n     out2 = __SMUADX(coeff, R);\n#else\n     out1 = __SMUADX(R, coeff) >> 16U;\n     out2 = __SMUSD(__QSUB(0, coeff), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n     write_q15x2_ia (&pSl, (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n  }\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  for (i = 0; i < n2; i++)\n  {\n     cosVal = pCoef[2 * i];\n     sinVal = pCoef[2 * i + 1];\n\n     l = i + n2;\n\n     xt =           (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U);\n     pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U;\n\n     yt =               (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U);\n     pSrc[2 * i + 1] = ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U;\n\n     pSrc[2 * l]      = (((int16_t) (((q31_t) xt * cosVal) >> 16U)) -\n                         ((int16_t) (((q31_t) yt * sinVal) >> 16U))  );\n\n     pSrc[2 * l + 1] = (((int16_t) (((q31_t) yt * cosVal) >> 16U)) +\n                        ((int16_t) (((q31_t) xt * sinVal) >> 16U))  );\n  }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n  /* first col */\n  arm_radix4_butterfly_inverse_q15( pSrc,          n2, (q15_t*)pCoef, 2U);\n\n  /* second col */\n  arm_radix4_butterfly_inverse_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2U);\n\n  n2 = fftLen >> 1U;\n  for (i = 0; i < n2; i++)\n  {\n     p0 = pSrc[4 * i + 0];\n     p1 = pSrc[4 * i + 1];\n     p2 = pSrc[4 * i + 2];\n     p3 = pSrc[4 * i + 3];\n\n     p0 <<= 1U;\n     p1 <<= 1U;\n     p2 <<= 1U;\n     p3 <<= 1U;\n\n     pSrc[4 * i + 0] = p0;\n     pSrc[4 * i + 1] = p1;\n     pSrc[4 * i + 2] = p2;\n     pSrc[4 * i + 3] = p3;\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_q31.c\n * Description:  Combined Radix Decimation in Frequency CFFT fixed point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nextern void arm_radix4_butterfly_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint32_t twidCoefModifier);\n\nextern void arm_radix4_butterfly_inverse_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint32_t twidCoefModifier);\n\nextern void arm_bitreversal_32(\n        uint32_t * pSrc,\n  const uint16_t bitRevLen,\n  const uint16_t * pBitRevTable);\n\nvoid arm_cfft_radix4by2_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef);\n\nvoid arm_cfft_radix4by2_inverse_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 complex FFT.\n  @param[in]     S               points to an instance of the fixed-point CFFT structure\n  @param[in,out] p1              points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        none\n */\n\nvoid arm_cfft_q31(\n  const arm_cfft_instance_q31 * S,\n        q31_t * p1,\n        uint8_t ifftFlag,\n        uint8_t bitReverseFlag)\n{\n  uint32_t L = S->fftLen;\n\n  if (ifftFlag == 1U)\n  {\n     switch (L)\n     {\n     case 16:\n     case 64:\n     case 256:\n     case 1024:\n     case 4096:\n       arm_radix4_butterfly_inverse_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 );\n       break;\n\n     case 32:\n     case 128:\n     case 512:\n     case 2048:\n       arm_cfft_radix4by2_inverse_q31 ( p1, L, S->pTwiddle );\n       break;\n     }\n  }\n  else\n  {\n     switch (L)\n     {\n     case 16:\n     case 64:\n     case 256:\n     case 1024:\n     case 4096:\n       arm_radix4_butterfly_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 );\n       break;\n\n     case 32:\n     case 128:\n     case 512:\n     case 2048:\n       arm_cfft_radix4by2_q31 ( p1, L, S->pTwiddle );\n       break;\n     }\n  }\n\n  if ( bitReverseFlag )\n    arm_bitreversal_32 ((uint32_t*) p1, S->bitRevLength, S->pBitRevTable);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n\nvoid arm_cfft_radix4by2_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef)\n{\n        uint32_t i, l;\n        uint32_t n2;\n        q31_t xt, yt, cosVal, sinVal;\n        q31_t p0, p1;\n\n  n2 = fftLen >> 1U;\n  for (i = 0; i < n2; i++)\n  {\n     cosVal = pCoef[2 * i];\n     sinVal = pCoef[2 * i + 1];\n\n     l = i + n2;\n\n     xt =          (pSrc[2 * i] >> 2U) - (pSrc[2 * l] >> 2U);\n     pSrc[2 * i] = (pSrc[2 * i] >> 2U) + (pSrc[2 * l] >> 2U);\n\n     yt =              (pSrc[2 * i + 1] >> 2U) - (pSrc[2 * l + 1] >> 2U);\n     pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2U) + (pSrc[2 * i + 1] >> 2U);\n\n     mult_32x32_keep32_R(p0, xt, cosVal);\n     mult_32x32_keep32_R(p1, yt, cosVal);\n     multAcc_32x32_keep32_R(p0, yt, sinVal);\n     multSub_32x32_keep32_R(p1, xt, sinVal);\n\n     pSrc[2 * l]     = p0 << 1;\n     pSrc[2 * l + 1] = p1 << 1;\n  }\n\n  /* first col */\n  arm_radix4_butterfly_q31 (pSrc,          n2, (q31_t*)pCoef, 2U);\n\n  /* second col */\n  arm_radix4_butterfly_q31 (pSrc + fftLen, n2, (q31_t*)pCoef, 2U);\n\n  n2 = fftLen >> 1U;\n  for (i = 0; i < n2; i++)\n  {\n     p0 = pSrc[4 * i + 0];\n     p1 = pSrc[4 * i + 1];\n     xt = pSrc[4 * i + 2];\n     yt = pSrc[4 * i + 3];\n\n     p0 <<= 1U;\n     p1 <<= 1U;\n     xt <<= 1U;\n     yt <<= 1U;\n\n     pSrc[4 * i + 0] = p0;\n     pSrc[4 * i + 1] = p1;\n     pSrc[4 * i + 2] = xt;\n     pSrc[4 * i + 3] = yt;\n  }\n\n}\n\nvoid arm_cfft_radix4by2_inverse_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef)\n{\n  uint32_t i, l;\n  uint32_t n2;\n  q31_t xt, yt, cosVal, sinVal;\n  q31_t p0, p1;\n\n  n2 = fftLen >> 1U;\n  for (i = 0; i < n2; i++)\n  {\n     cosVal = pCoef[2 * i];\n     sinVal = pCoef[2 * i + 1];\n\n     l = i + n2;\n\n     xt =          (pSrc[2 * i] >> 2U) - (pSrc[2 * l] >> 2U);\n     pSrc[2 * i] = (pSrc[2 * i] >> 2U) + (pSrc[2 * l] >> 2U);\n\n     yt =              (pSrc[2 * i + 1] >> 2U) - (pSrc[2 * l + 1] >> 2U);\n     pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2U) + (pSrc[2 * i + 1] >> 2U);\n\n     mult_32x32_keep32_R(p0, xt, cosVal);\n     mult_32x32_keep32_R(p1, yt, cosVal);\n     multSub_32x32_keep32_R(p0, yt, sinVal);\n     multAcc_32x32_keep32_R(p1, xt, sinVal);\n\n     pSrc[2 * l]     = p0 << 1U;\n     pSrc[2 * l + 1] = p1 << 1U;\n  }\n\n  /* first col */\n  arm_radix4_butterfly_inverse_q31( pSrc,          n2, (q31_t*)pCoef, 2U);\n\n  /* second col */\n  arm_radix4_butterfly_inverse_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2U);\n\n  n2 = fftLen >> 1U;\n  for (i = 0; i < n2; i++)\n  {\n     p0 = pSrc[4 * i + 0];\n     p1 = pSrc[4 * i + 1];\n     xt = pSrc[4 * i + 2];\n     yt = pSrc[4 * i + 3];\n\n     p0 <<= 1U;\n     p1 <<= 1U;\n     xt <<= 1U;\n     yt <<= 1U;\n\n     pSrc[4 * i + 0] = p0;\n     pSrc[4 * i + 1] = p1;\n     pSrc[4 * i + 2] = xt;\n     pSrc[4 * i + 3] = yt;\n  }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix2_f32.c\n * Description:  Radix-2 Decimation in Frequency CFFT & CIFFT Floating point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nvoid arm_radix2_butterfly_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier);\n\nvoid arm_radix2_butterfly_inverse_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier,\n        float32_t onebyfftLen);\n\nextern void arm_bitreversal_f32(\n        float32_t * pSrc,\n        uint16_t fftSize,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Radix-2 CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_f32 and will be removed in the future\n  @param[in]     S    points to an instance of the floating-point Radix-2 CFFT/CIFFT structure\n  @param[in,out] pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @return        none\n */\n\nvoid arm_cfft_radix2_f32(\nconst arm_cfft_radix2_instance_f32 * S,\n      float32_t * pSrc)\n{\n\n   if (S->ifftFlag == 1U)\n   {\n      /* Complex IFFT radix-2 */\n      arm_radix2_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle,\n      S->twidCoefModifier, S->onebyfftLen);\n   }\n   else\n   {\n      /* Complex FFT radix-2 */\n      arm_radix2_butterfly_f32(pSrc, S->fftLen, S->pTwiddle,\n      S->twidCoefModifier);\n   }\n\n   if (S->bitReverseFlag == 1U)\n   {\n      /* Bit Reversal */\n      arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);\n   }\n\n}\n\n\n/**\n  @} end of ComplexFFT group\n */\n\n\n\n/* ----------------------------------------------------------------------\n ** Internal helper function used by the FFTs\n ** ------------------------------------------------------------------- */\n\n/**\n  brief  Core function for the floating-point CFFT butterfly process.\n  param[in,out] pSrc             points to in-place buffer of floating-point data type\n  param[in]     fftLen           length of the FFT\n  param[in]     pCoef            points to twiddle coefficient buffer\n  param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  return        none\n */\n\nvoid arm_radix2_butterfly_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier)\n{\n\n        uint32_t i, j, k, l;\n        uint32_t n1, n2, ia;\n        float32_t xt, yt, cosVal, sinVal;\n        float32_t p0, p1, p2, p3;\n        float32_t a0, a1;\n\n#if defined (ARM_MATH_DSP)\n\n   /*  Initializations for the first stage */\n   n2 = fftLen >> 1;\n   ia = 0;\n   i = 0;\n\n   // loop for groups\n   for (k = n2; k > 0; k--)\n   {\n      cosVal = pCoef[ia * 2];\n      sinVal = pCoef[(ia * 2) + 1];\n\n      /*  Twiddle coefficients index modifier */\n      ia += twidCoefModifier;\n\n      /*  index calculation for the input as, */\n      /*  pSrc[i + 0], pSrc[i + fftLen/1] */\n      l = i + n2;\n\n      /*  Butterfly implementation */\n      a0 = pSrc[2 * i] + pSrc[2 * l];\n      xt = pSrc[2 * i] - pSrc[2 * l];\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n      a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];\n\n      p0 = xt * cosVal;\n      p1 = yt * sinVal;\n      p2 = yt * cosVal;\n      p3 = xt * sinVal;\n\n      pSrc[2 * i]     = a0;\n      pSrc[2 * i + 1] = a1;\n\n      pSrc[2 * l]     = p0 + p1;\n      pSrc[2 * l + 1] = p2 - p3;\n\n      i++;\n   }                             // groups loop end\n\n   twidCoefModifier <<= 1U;\n\n   // loop for stage\n   for (k = n2; k > 2; k = k >> 1)\n   {\n      n1 = n2;\n      n2 = n2 >> 1;\n      ia = 0;\n\n      // loop for groups\n      j = 0;\n      do\n      {\n         cosVal = pCoef[ia * 2];\n         sinVal = pCoef[(ia * 2) + 1];\n         ia += twidCoefModifier;\n\n         // loop for butterfly\n         i = j;\n         do\n         {\n            l = i + n2;\n            a0 = pSrc[2 * i] + pSrc[2 * l];\n            xt = pSrc[2 * i] - pSrc[2 * l];\n\n            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];\n\n            p0 = xt * cosVal;\n            p1 = yt * sinVal;\n            p2 = yt * cosVal;\n            p3 = xt * sinVal;\n\n            pSrc[2 * i] = a0;\n            pSrc[2 * i + 1] = a1;\n\n            pSrc[2 * l]     = p0 + p1;\n            pSrc[2 * l + 1] = p2 - p3;\n\n            i += n1;\n         } while ( i < fftLen );                        // butterfly loop end\n         j++;\n      } while ( j < n2);                          // groups loop end\n      twidCoefModifier <<= 1U;\n   }                             // stages loop end\n\n   // loop for butterfly\n   for (i = 0; i < fftLen; i += 2)\n   {\n      a0 = pSrc[2 * i] + pSrc[2 * i + 2];\n      xt = pSrc[2 * i] - pSrc[2 * i + 2];\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * i + 3];\n      a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1];\n\n      pSrc[2 * i] = a0;\n      pSrc[2 * i + 1] = a1;\n      pSrc[2 * i + 2] = xt;\n      pSrc[2 * i + 3] = yt;\n   }                             // groups loop end\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n   n2 = fftLen;\n\n   // loop for stage\n   for (k = fftLen; k > 1; k = k >> 1)\n   {\n      n1 = n2;\n      n2 = n2 >> 1;\n      ia = 0;\n\n      // loop for groups\n      j = 0;\n      do\n      {\n         cosVal = pCoef[ia * 2];\n         sinVal = pCoef[(ia * 2) + 1];\n         ia += twidCoefModifier;\n\n         // loop for butterfly\n         i = j;\n         do\n         {\n            l = i + n2;\n            a0 = pSrc[2 * i] + pSrc[2 * l];\n            xt = pSrc[2 * i] - pSrc[2 * l];\n\n            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];\n\n            p0 = xt * cosVal;\n            p1 = yt * sinVal;\n            p2 = yt * cosVal;\n            p3 = xt * sinVal;\n\n            pSrc[2 * i] = a0;\n            pSrc[2 * i + 1] = a1;\n\n            pSrc[2 * l]     = p0 + p1;\n            pSrc[2 * l + 1] = p2 - p3;\n\n            i += n1;\n         } while (i < fftLen);\n         j++;\n      } while (j < n2);\n      twidCoefModifier <<= 1U;\n   }\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n\nvoid arm_radix2_butterfly_inverse_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier,\n        float32_t onebyfftLen)\n{\n\n        uint32_t i, j, k, l;\n        uint32_t n1, n2, ia;\n        float32_t xt, yt, cosVal, sinVal;\n        float32_t p0, p1, p2, p3;\n        float32_t a0, a1;\n\n#if defined (ARM_MATH_DSP)\n\n   n2 = fftLen >> 1;\n   ia = 0;\n\n   // loop for groups\n   for (i = 0; i < n2; i++)\n   {\n      cosVal = pCoef[ia * 2];\n      sinVal = pCoef[(ia * 2) + 1];\n      ia += twidCoefModifier;\n\n      l = i + n2;\n      a0 = pSrc[2 * i] + pSrc[2 * l];\n      xt = pSrc[2 * i] - pSrc[2 * l];\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n      a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];\n\n      p0 = xt * cosVal;\n      p1 = yt * sinVal;\n      p2 = yt * cosVal;\n      p3 = xt * sinVal;\n\n      pSrc[2 * i] = a0;\n      pSrc[2 * i + 1] = a1;\n\n      pSrc[2 * l]     = p0 - p1;\n      pSrc[2 * l + 1] = p2 + p3;\n   }                             // groups loop end\n\n   twidCoefModifier <<= 1U;\n\n   // loop for stage\n   for (k = fftLen / 2; k > 2; k = k >> 1)\n   {\n      n1 = n2;\n      n2 = n2 >> 1;\n      ia = 0;\n\n      // loop for groups\n      j = 0;\n      do\n      {\n         cosVal = pCoef[ia * 2];\n         sinVal = pCoef[(ia * 2) + 1];\n         ia += twidCoefModifier;\n\n         // loop for butterfly\n         i = j;\n         do\n         {\n            l = i + n2;\n            a0 = pSrc[2 * i] + pSrc[2 * l];\n            xt = pSrc[2 * i] - pSrc[2 * l];\n\n            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];\n\n            p0 = xt * cosVal;\n            p1 = yt * sinVal;\n            p2 = yt * cosVal;\n            p3 = xt * sinVal;\n\n            pSrc[2 * i] = a0;\n            pSrc[2 * i + 1] = a1;\n\n            pSrc[2 * l]     = p0 - p1;\n            pSrc[2 * l + 1] = p2 + p3;\n\n            i += n1;\n         } while ( i < fftLen );                 // butterfly loop end\n         j++;\n      } while (j < n2);                      // groups loop end\n\n      twidCoefModifier <<= 1U;\n   }                             // stages loop end\n\n   // loop for butterfly\n   for (i = 0; i < fftLen; i += 2)\n   {\n      a0 = pSrc[2 * i] + pSrc[2 * i + 2];\n      xt = pSrc[2 * i] - pSrc[2 * i + 2];\n\n      a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1];\n      yt = pSrc[2 * i + 1] - pSrc[2 * i + 3];\n\n      p0 = a0 * onebyfftLen;\n      p2 = xt * onebyfftLen;\n      p1 = a1 * onebyfftLen;\n      p3 = yt * onebyfftLen;\n\n      pSrc[2 * i] = p0;\n      pSrc[2 * i + 1] = p1;\n      pSrc[2 * i + 2] = p2;\n      pSrc[2 * i + 3] = p3;\n   }                             // butterfly loop end\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n   n2 = fftLen;\n\n   // loop for stage\n   for (k = fftLen; k > 2; k = k >> 1)\n   {\n      n1 = n2;\n      n2 = n2 >> 1;\n      ia = 0;\n\n      // loop for groups\n      j = 0;\n      do\n      {\n         cosVal = pCoef[ia * 2];\n         sinVal = pCoef[(ia * 2) + 1];\n         ia = ia + twidCoefModifier;\n\n         // loop for butterfly\n         i = j;\n         do\n         {\n            l = i + n2;\n            a0 = pSrc[2 * i] + pSrc[2 * l];\n            xt = pSrc[2 * i] - pSrc[2 * l];\n\n            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];\n\n            p0 = xt * cosVal;\n            p1 = yt * sinVal;\n            p2 = yt * cosVal;\n            p3 = xt * sinVal;\n\n            pSrc[2 * i] = a0;\n            pSrc[2 * i + 1] = a1;\n\n            pSrc[2 * l]     = p0 - p1;\n            pSrc[2 * l + 1] = p2 + p3;\n\n            i += n1;\n         } while ( i < fftLen );                    // butterfly loop end\n         j++;\n      } while ( j < n2 );                      // groups loop end\n\n      twidCoefModifier = twidCoefModifier << 1U;\n   }                             // stages loop end\n\n   n1 = n2;\n   n2 = n2 >> 1;\n\n   // loop for butterfly\n   for (i = 0; i < fftLen; i += n1)\n   {\n      l = i + n2;\n\n      a0 = pSrc[2 * i] + pSrc[2 * l];\n      xt = pSrc[2 * i] - pSrc[2 * l];\n\n      a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n\n      p0 = a0 * onebyfftLen;\n      p2 = xt * onebyfftLen;\n      p1 = a1 * onebyfftLen;\n      p3 = yt * onebyfftLen;\n\n      pSrc[2 * i] = p0;\n      pSrc[2 * l] = p2;\n\n      pSrc[2 * i + 1] = p1;\n      pSrc[2 * l + 1] = p3;\n   }                             // butterfly loop end\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix2_init_f32.c\n * Description:  Radix-2 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_f32 and will be removed in the future.\n  @param[in,out] S              points to an instance of the floating-point CFFT/CIFFT structure\n  @param[in]     fftLen         length of the FFT\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLen</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   The parameter <code>fftLen</code> Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.\n  @par\n                   This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.\n*/\n\narm_status arm_cfft_radix2_init_f32(\n  arm_cfft_radix2_instance_f32 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag)\n{\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n  /*  Initialise the FFT length */\n  S->fftLen = fftLen;\n\n  /*  Initialise the Twiddle coefficient pointer */\n  S->pTwiddle = (float32_t *) twiddleCoef;\n\n  /*  Initialise the Flag for selection of CFFT or CIFFT */\n  S->ifftFlag = ifftFlag;\n\n  /*  Initialise the Flag for calculation Bit reversal or not */\n  S->bitReverseFlag = bitReverseFlag;\n\n  /*  Initializations of structure parameters depending on the FFT length */\n  switch (S->fftLen)\n  {\n\n  case 4096U:\n    /*  Initializations of structure parameters for 4096 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 1U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 1U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) armBitRevTable;\n    /*  Initialise the 1/fftLen Value */\n    S->onebyfftLen = 0.000244140625;\n    break;\n\n  case 2048U:\n    /*  Initializations of structure parameters for 2048 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 2U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 2U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[1];\n    /*  Initialise the 1/fftLen Value */\n    S->onebyfftLen = 0.00048828125;\n    break;\n\n  case 1024U:\n    /*  Initializations of structure parameters for 1024 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 4U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 4U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];\n    /*  Initialise the 1/fftLen Value */\n    S->onebyfftLen = 0.0009765625f;\n    break;\n\n  case 512U:\n    /*  Initializations of structure parameters for 512 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 8U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 8U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[7];\n    /*  Initialise the 1/fftLen Value */\n    S->onebyfftLen = 0.001953125;\n    break;\n\n  case 256U:\n    /*  Initializations of structure parameters for 256 point FFT */\n    S->twidCoefModifier = 16U;\n    S->bitRevFactor = 16U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];\n    S->onebyfftLen = 0.00390625f;\n    break;\n\n  case 128U:\n    /*  Initializations of structure parameters for 128 point FFT */\n    S->twidCoefModifier = 32U;\n    S->bitRevFactor = 32U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[31];\n    S->onebyfftLen = 0.0078125;\n    break;\n\n  case 64U:\n    /*  Initializations of structure parameters for 64 point FFT */\n    S->twidCoefModifier = 64U;\n    S->bitRevFactor = 64U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];\n    S->onebyfftLen = 0.015625f;\n    break;\n\n  case 32U:\n    /*  Initializations of structure parameters for 64 point FFT */\n    S->twidCoefModifier = 128U;\n    S->bitRevFactor = 128U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[127];\n    S->onebyfftLen = 0.03125;\n    break;\n\n  case 16U:\n    /*  Initializations of structure parameters for 16 point FFT */\n    S->twidCoefModifier = 256U;\n    S->bitRevFactor = 256U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];\n    S->onebyfftLen = 0.0625f;\n    break;\n\n\n  default:\n    /*  Reporting argument error if fftSize is not valid value */\n    status = ARM_MATH_ARGUMENT_ERROR;\n    break;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix2_init_q15.c\n * Description:  Radix-2 Decimation in Frequency Q15 FFT & IFFT initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief                        Initialization function for the Q15 CFFT/CIFFT.\n  @deprecated                   Do not use this function. It has been superseded by \\ref arm_cfft_q15 and will be removed\n  @param[in,out] S              points to an instance of the Q15 CFFT/CIFFT structure.\n  @param[in]     fftLen         length of the FFT.\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLen</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   The parameter <code>fftLen</code> Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.\n  @par\n                   This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.\n*/\n\narm_status arm_cfft_radix2_init_q15(\n  arm_cfft_radix2_instance_q15 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag)\n{\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n  /*  Initialise the FFT length */\n  S->fftLen = fftLen;\n\n  /*  Initialise the Twiddle coefficient pointer */\n  S->pTwiddle = (q15_t *) twiddleCoef_4096_q15;\n  /*  Initialise the Flag for selection of CFFT or CIFFT */\n  S->ifftFlag = ifftFlag;\n  /*  Initialise the Flag for calculation Bit reversal or not */\n  S->bitReverseFlag = bitReverseFlag;\n\n  /*  Initializations of structure parameters depending on the FFT length */\n  switch (S->fftLen)\n  {\n  case 4096U:\n    /*  Initializations of structure parameters for 4096 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 1U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 1U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) armBitRevTable;\n\n    break;\n\n  case 2048U:\n    /*  Initializations of structure parameters for 2048 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 2U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 2U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[1];\n\n    break;\n\n  case 1024U:\n    /*  Initializations of structure parameters for 1024 point FFT */\n    S->twidCoefModifier = 4U;\n    S->bitRevFactor = 4U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];\n\n    break;\n\n  case 512U:\n    /*  Initializations of structure parameters for 512 point FFT */\n    S->twidCoefModifier = 8U;\n    S->bitRevFactor = 8U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[7];\n\n    break;\n\n  case 256U:\n    /*  Initializations of structure parameters for 256 point FFT */\n    S->twidCoefModifier = 16U;\n    S->bitRevFactor = 16U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];\n\n    break;\n\n  case 128U:\n    /*  Initializations of structure parameters for 128 point FFT */\n    S->twidCoefModifier = 32U;\n    S->bitRevFactor = 32U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[31];\n\n    break;\n\n  case 64U:\n    /*  Initializations of structure parameters for 64 point FFT */\n    S->twidCoefModifier = 64U;\n    S->bitRevFactor = 64U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];\n\n    break;\n\n  case 32U:\n    /*  Initializations of structure parameters for 32 point FFT */\n    S->twidCoefModifier = 128U;\n    S->bitRevFactor = 128U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[127];\n\n    break;\n\n  case 16U:\n    /*  Initializations of structure parameters for 16 point FFT */\n    S->twidCoefModifier = 256U;\n    S->bitRevFactor = 256U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];\n\n    break;\n\n  default:\n    /*  Reporting argument error if fftSize is not valid value */\n    status = ARM_MATH_ARGUMENT_ERROR;\n    break;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix2_init_q31.c\n * Description:  Radix-2 Decimation in Frequency Fixed-point CFFT & CIFFT Initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_q31 and will be removed in the future.\n  @param[in,out] S              points to an instance of the Q31 CFFT/CIFFT structure\n  @param[in]     fftLen         length of the FFT\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLen</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   The parameter <code>fftLen</code> Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.\n  @par\n                   This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.\n*/\n\narm_status arm_cfft_radix2_init_q31(\n  arm_cfft_radix2_instance_q31 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag)\n{\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n  /*  Initialise the FFT length */\n  S->fftLen = fftLen;\n\n  /*  Initialise the Twiddle coefficient pointer */\n  S->pTwiddle = (q31_t *) twiddleCoef_4096_q31;\n\n  /*  Initialise the Flag for selection of CFFT or CIFFT */\n  S->ifftFlag = ifftFlag;\n\n  /*  Initialise the Flag for calculation Bit reversal or not */\n  S->bitReverseFlag = bitReverseFlag;\n\n  /*  Initializations of Instance structure depending on the FFT length */\n  switch (S->fftLen)\n  {\n    /*  Initializations of structure parameters for 4096 point FFT */\n  case 4096U:\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 1U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 1U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) armBitRevTable;\n    break;\n\n    /*  Initializations of structure parameters for 2048 point FFT */\n  case 2048U:\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 2U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 2U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[1];\n    break;\n\n    /*  Initializations of structure parameters for 1024 point FFT */\n  case 1024U:\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 4U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 4U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];\n    break;\n\n    /*  Initializations of structure parameters for 512 point FFT */\n  case 512U:\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 8U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 8U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[7];\n    break;\n\n  case 256U:\n    /*  Initializations of structure parameters for 256 point FFT */\n    S->twidCoefModifier = 16U;\n    S->bitRevFactor = 16U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];\n    break;\n\n  case 128U:\n    /*  Initializations of structure parameters for 128 point FFT */\n    S->twidCoefModifier = 32U;\n    S->bitRevFactor = 32U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[31];\n    break;\n\n  case 64U:\n    /*  Initializations of structure parameters for 64 point FFT */\n    S->twidCoefModifier = 64U;\n    S->bitRevFactor = 64U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];\n    break;\n\n  case 32U:\n    /*  Initializations of structure parameters for 32 point FFT */\n    S->twidCoefModifier = 128U;\n    S->bitRevFactor = 128U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[127];\n    break;\n\n  case 16U:\n    /*  Initializations of structure parameters for 16 point FFT */\n    S->twidCoefModifier = 256U;\n    S->bitRevFactor = 256U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];\n    break;\n\n\n  default:\n    /*  Reporting argument error if fftSize is not valid value */\n    status = ARM_MATH_ARGUMENT_ERROR;\n    break;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix2_q15.c\n * Description:  Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nvoid arm_radix2_butterfly_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef,\n        uint16_t twidCoefModifier);\n\nvoid arm_radix2_butterfly_inverse_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef,\n        uint16_t twidCoefModifier);\n\nvoid arm_bitreversal_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the fixed-point CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_q15 and will be removed in the future.\n  @param[in]     S    points to an instance of the fixed-point CFFT/CIFFT structure\n  @param[in,out] pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @return        none\n */\n\nvoid arm_cfft_radix2_q15(\n  const arm_cfft_radix2_instance_q15 * S,\n        q15_t * pSrc)\n{\n\n  if (S->ifftFlag == 1U)\n  {\n    arm_radix2_butterfly_inverse_q15 (pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier);\n  }\n  else\n  {\n    arm_radix2_butterfly_q15 (pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier);\n  }\n\n  arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n\nvoid arm_radix2_butterfly_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef,\n        uint16_t twidCoefModifier)\n{\n#if defined (ARM_MATH_DSP)\n\n  uint32_t i, j, k, l;\n  uint32_t n1, n2, ia;\n  q15_t in;\n  q31_t T, S, R;\n  q31_t coeff, out1, out2;\n\n  //N = fftLen;\n  n2 = fftLen;\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  // loop for groups\n  for (i = 0; i < n2; i++)\n  {\n    coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n    ia = ia + twidCoefModifier;\n\n    l = i + n2;\n\n    T = read_q15x2 (pSrc + (2 * i));\n    in = ((int16_t) (T & 0xFFFF)) >> 1;\n    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    S = read_q15x2 (pSrc + (2 * l));\n    in = ((int16_t) (S & 0xFFFF)) >> 1;\n    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    R = __QSUB16(T, S);\n\n    write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    out1 = __SMUAD(coeff, R) >> 16;\n    out2 = __SMUSDX(coeff, R);\n#else\n    out1 = __SMUSDX(R, coeff) >> 16U;\n    out2 = __SMUAD(coeff, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    write_q15x2 (pSrc + (2U * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n    coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n    ia = ia + twidCoefModifier;\n\n    /* loop for butterfly */\n    i++;\n    l++;\n\n    T = read_q15x2 (pSrc + (2 * i));\n    in = ((int16_t) (T & 0xFFFF)) >> 1;\n    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    S = read_q15x2 (pSrc + (2 * l));\n    in = ((int16_t) (S & 0xFFFF)) >> 1;\n    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    R = __QSUB16(T, S);\n\n    write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    out1 = __SMUAD(coeff, R) >> 16;\n    out2 = __SMUSDX(coeff, R);\n#else\n\n    out1 = __SMUSDX(R, coeff) >> 16U;\n    out2 = __SMUAD(coeff, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    write_q15x2 (pSrc + (2U * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n  } /* groups loop end */\n\n  twidCoefModifier = twidCoefModifier << 1U;\n\n  /* loop for stage */\n  for (k = fftLen / 2; k > 2; k = k >> 1)\n  {\n    n1 = n2;\n    n2 = n2 >> 1;\n    ia = 0;\n\n    /* loop for groups */\n    for (j = 0; j < n2; j++)\n    {\n      coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n      ia = ia + twidCoefModifier;\n\n      /* loop for butterfly */\n      for (i = j; i < fftLen; i += n1)\n      {\n        l = i + n2;\n\n        T = read_q15x2 (pSrc + (2 * i));\n\n        S = read_q15x2 (pSrc + (2 * l));\n\n        R = __QSUB16(T, S);\n\n        write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        out1 = __SMUAD(coeff, R) >> 16;\n        out2 = __SMUSDX(coeff, R);\n#else\n        out1 = __SMUSDX(R, coeff) >> 16U;\n        out2 = __SMUAD(coeff, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        write_q15x2 (pSrc + (2U * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n        i += n1;\n\n        l = i + n2;\n\n        T = read_q15x2 (pSrc + (2 * i));\n\n        S = read_q15x2 (pSrc + (2 * l));\n\n        R = __QSUB16(T, S);\n\n        write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        out1 = __SMUAD(coeff, R) >> 16;\n        out2 = __SMUSDX(coeff, R);\n#else\n        out1 = __SMUSDX(R, coeff) >> 16U;\n        out2 = __SMUAD(coeff, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        write_q15x2 (pSrc + (2U * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n      } /* butterfly loop end */\n\n    } /* groups loop end */\n\n    twidCoefModifier = twidCoefModifier << 1U;\n  } /* stages loop end */\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n  ia = ia + twidCoefModifier;\n\n  /* loop for butterfly */\n  for (i = 0; i < fftLen; i += n1)\n  {\n    l = i + n2;\n\n    T = read_q15x2 (pSrc + (2 * i));\n\n    S = read_q15x2 (pSrc + (2 * l));\n\n    R = __QSUB16(T, S);\n\n    write_q15x2 (pSrc + (2 * i), __QADD16(T, S));\n\n    write_q15x2 (pSrc + (2 * l), R);\n\n    i += n1;\n    l = i + n2;\n\n    T = read_q15x2 (pSrc + (2 * i));\n\n    S = read_q15x2 (pSrc + (2 * l));\n\n    R = __QSUB16(T, S);\n\n    write_q15x2 (pSrc + (2 * i), __QADD16(T, S));\n\n    write_q15x2 (pSrc + (2 * l), R);\n\n  } /* groups loop end */\n\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n  uint32_t i, j, k, l;\n  uint32_t n1, n2, ia;\n  q15_t xt, yt, cosVal, sinVal;\n\n\n  // N = fftLen;\n  n2 = fftLen;\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  /* loop for groups */\n  for (j = 0; j < n2; j++)\n  {\n    cosVal = pCoef[(ia * 2)];\n    sinVal = pCoef[(ia * 2) + 1];\n    ia = ia + twidCoefModifier;\n\n    /* loop for butterfly */\n    for (i = j; i < fftLen; i += n1)\n    {\n      l = i + n2;\n      xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U);\n      pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U;\n\n      yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U);\n      pSrc[2 * i + 1] = ((pSrc[2 * l + 1] >> 1U) +\n                         (pSrc[2 * i + 1] >> 1U)  ) >> 1U;\n\n      pSrc[2 * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) +\n                     ((int16_t) (((q31_t) yt * sinVal) >> 16)));\n\n      pSrc[2U * l + 1] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) -\n                          ((int16_t) (((q31_t) xt * sinVal) >> 16)));\n\n    } /* butterfly loop end */\n\n  } /* groups loop end */\n\n  twidCoefModifier = twidCoefModifier << 1U;\n\n  /* loop for stage */\n  for (k = fftLen / 2; k > 2; k = k >> 1)\n  {\n    n1 = n2;\n    n2 = n2 >> 1;\n    ia = 0;\n\n    /* loop for groups */\n    for (j = 0; j < n2; j++)\n    {\n      cosVal = pCoef[ia * 2];\n      sinVal = pCoef[(ia * 2) + 1];\n      ia = ia + twidCoefModifier;\n\n      /* loop for butterfly */\n      for (i = j; i < fftLen; i += n1)\n      {\n        l = i + n2;\n        xt = pSrc[2 * i] - pSrc[2 * l];\n        pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U;\n\n        yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n        pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U;\n\n        pSrc[2 * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) +\n                       ((int16_t) (((q31_t) yt * sinVal) >> 16)));\n\n        pSrc[2U * l + 1] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) -\n                            ((int16_t) (((q31_t) xt * sinVal) >> 16)));\n\n      } /* butterfly loop end */\n\n    } /* groups loop end */\n\n    twidCoefModifier = twidCoefModifier << 1U;\n  } /* stages loop end */\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  /* loop for groups */\n  for (j = 0; j < n2; j++)\n  {\n    cosVal = pCoef[ia * 2];\n    sinVal = pCoef[(ia * 2) + 1];\n\n    ia = ia + twidCoefModifier;\n\n    /* loop for butterfly */\n    for (i = j; i < fftLen; i += n1)\n    {\n      l = i + n2;\n      xt = pSrc[2 * i] - pSrc[2 * l];\n      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);\n\n      pSrc[2 * l] = xt;\n\n      pSrc[2 * l + 1] = yt;\n\n    } /* butterfly loop end */\n\n  } /* groups loop end */\n\n  twidCoefModifier = twidCoefModifier << 1U;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n\nvoid arm_radix2_butterfly_inverse_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pCoef,\n        uint16_t twidCoefModifier)\n{\n#if defined (ARM_MATH_DSP)\n\n        uint32_t i, j, k, l;\n        uint32_t n1, n2, ia;\n        q15_t in;\n        q31_t T, S, R;\n        q31_t coeff, out1, out2;\n\n  // N = fftLen;\n  n2 = fftLen;\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  /* loop for groups */\n  for (i = 0; i < n2; i++)\n  {\n    coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n    ia = ia + twidCoefModifier;\n\n    l = i + n2;\n\n    T = read_q15x2 (pSrc + (2 * i));\n    in = ((int16_t) (T & 0xFFFF)) >> 1;\n    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    S = read_q15x2 (pSrc + (2 * l));\n    in = ((int16_t) (S & 0xFFFF)) >> 1;\n    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    R = __QSUB16(T, S);\n\n    write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    out1 = __SMUSD(coeff, R) >> 16;\n    out2 = __SMUADX(coeff, R);\n#else\n    out1 = __SMUADX(R, coeff) >> 16U;\n    out2 = __SMUSD(__QSUB(0, coeff), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    write_q15x2 (pSrc + (2 * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n    coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n    ia = ia + twidCoefModifier;\n\n    /* loop for butterfly */\n    i++;\n    l++;\n\n    T = read_q15x2 (pSrc + (2 * i));\n    in = ((int16_t) (T & 0xFFFF)) >> 1;\n    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    S = read_q15x2 (pSrc + (2 * l));\n    in = ((int16_t) (S & 0xFFFF)) >> 1;\n    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);\n\n    R = __QSUB16(T, S);\n\n    write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    out1 = __SMUSD(coeff, R) >> 16;\n    out2 = __SMUADX(coeff, R);\n#else\n    out1 = __SMUADX(R, coeff) >> 16U;\n    out2 = __SMUSD(__QSUB(0, coeff), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    write_q15x2 (pSrc + (2 * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n  } /* groups loop end */\n\n  twidCoefModifier = twidCoefModifier << 1U;\n\n  /* loop for stage */\n  for (k = fftLen / 2; k > 2; k = k >> 1)\n  {\n    n1 = n2;\n    n2 = n2 >> 1;\n    ia = 0;\n\n    /* loop for groups */\n    for (j = 0; j < n2; j++)\n    {\n      coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n      ia = ia + twidCoefModifier;\n\n      /* loop for butterfly */\n      for (i = j; i < fftLen; i += n1)\n      {\n        l = i + n2;\n\n        T = read_q15x2 (pSrc + (2 * i));\n\n        S = read_q15x2 (pSrc + (2 * l));\n\n        R = __QSUB16(T, S);\n\n        write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        out1 = __SMUSD(coeff, R) >> 16;\n        out2 = __SMUADX(coeff, R);\n#else\n        out1 = __SMUADX(R, coeff) >> 16U;\n        out2 = __SMUSD(__QSUB(0, coeff), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        write_q15x2 (pSrc + (2 * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n        i += n1;\n\n        l = i + n2;\n\n        T = read_q15x2 (pSrc + (2 * i));\n\n        S = read_q15x2 (pSrc + (2 * l));\n\n        R = __QSUB16(T, S);\n\n        write_q15x2 (pSrc + (2 * i), __SHADD16(T, S));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        out1 = __SMUSD(coeff, R) >> 16;\n        out2 = __SMUADX(coeff, R);\n#else\n        out1 = __SMUADX(R, coeff) >> 16U;\n        out2 = __SMUSD(__QSUB(0, coeff), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        write_q15x2 (pSrc + (2 * l), (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n      } /* butterfly loop end */\n\n    } /* groups loop end */\n\n    twidCoefModifier = twidCoefModifier << 1U;\n  } /* stages loop end */\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  /* loop for groups */\n  for (j = 0; j < n2; j++)\n  {\n    coeff = read_q15x2 ((q15_t *)pCoef + (ia * 2U));\n\n    ia = ia + twidCoefModifier;\n\n    /* loop for butterfly */\n    for (i = j; i < fftLen; i += n1)\n    {\n      l = i + n2;\n\n      T = read_q15x2 (pSrc + (2 * i));\n\n      S = read_q15x2 (pSrc + (2 * l));\n\n      R = __QSUB16(T, S);\n\n      write_q15x2 (pSrc + (2 * i), __QADD16(T, S));\n\n      write_q15x2 (pSrc + (2 * l), R);\n\n    } /* butterfly loop end */\n\n  } /* groups loop end */\n\n  twidCoefModifier = twidCoefModifier << 1U;\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n        uint32_t i, j, k, l;\n        uint32_t n1, n2, ia;\n        q15_t xt, yt, cosVal, sinVal;\n\n  // N = fftLen;\n  n2 = fftLen;\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  /* loop for groups */\n  for (j = 0; j < n2; j++)\n  {\n    cosVal = pCoef[(ia * 2)];\n    sinVal = pCoef[(ia * 2) + 1];\n    ia = ia + twidCoefModifier;\n\n    /* loop for butterfly */\n    for (i = j; i < fftLen; i += n1)\n    {\n      l = i + n2;\n      xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U);\n      pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U;\n\n      yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U);\n      pSrc[2 * i + 1] = ((pSrc[2 * l + 1] >> 1U) +\n                         (pSrc[2 * i + 1] >> 1U)  ) >> 1U;\n\n      pSrc[2 * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) -\n                     ((int16_t) (((q31_t) yt * sinVal) >> 16)));\n\n      pSrc[2 * l + 1] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) +\n                         ((int16_t) (((q31_t) xt * sinVal) >> 16)));\n\n    } /* butterfly loop end */\n\n  } /* groups loop end */\n\n  twidCoefModifier = twidCoefModifier << 1U;\n\n  /* loop for stage */\n  for (k = fftLen / 2; k > 2; k = k >> 1)\n  {\n    n1 = n2;\n    n2 = n2 >> 1;\n    ia = 0;\n\n    /* loop for groups */\n    for (j = 0; j < n2; j++)\n    {\n      cosVal = pCoef[(ia * 2)];\n      sinVal = pCoef[(ia * 2) + 1];\n      ia = ia + twidCoefModifier;\n\n      /* loop for butterfly */\n      for (i = j; i < fftLen; i += n1)\n      {\n        l = i + n2;\n        xt = pSrc[2 * i] - pSrc[2 * l];\n        pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U;\n\n        yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n        pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U;\n\n        pSrc[2 * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) -\n                       ((int16_t) (((q31_t) yt * sinVal) >> 16))  );\n\n        pSrc[2 * l + 1] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) +\n                           ((int16_t) (((q31_t) xt * sinVal) >> 16))  );\n\n      } /* butterfly loop end */\n\n    } /* groups loop end */\n\n    twidCoefModifier = twidCoefModifier << 1U;\n  } /* stages loop end */\n\n  n1 = n2;\n  n2 = n2 >> 1;\n  ia = 0;\n\n  cosVal = pCoef[(ia * 2)];\n  sinVal = pCoef[(ia * 2) + 1];\n\n  ia = ia + twidCoefModifier;\n\n  /* loop for butterfly */\n  for (i = 0; i < fftLen; i += n1)\n  {\n    l = i + n2;\n    xt = pSrc[2 * i] - pSrc[2 * l];\n    pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);\n\n    yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n    pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);\n\n    pSrc[2 * l] = xt;\n\n    pSrc[2 * l + 1] = yt;\n\n  } /* groups loop end */\n\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix2_q31.c\n * Description:  Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nvoid arm_radix2_butterfly_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint16_t twidCoefModifier);\n\nvoid arm_radix2_butterfly_inverse_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint16_t twidCoefModifier);\n\nvoid arm_bitreversal_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the fixed-point CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_q31 and will be removed in the future.\n  @param[in]     S    points to an instance of the fixed-point CFFT/CIFFT structure\n  @param[in,out] pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @return        none\n */\n\nvoid arm_cfft_radix2_q31(\n  const arm_cfft_radix2_instance_q31 * S,\n        q31_t * pSrc)\n{\n\n   if (S->ifftFlag == 1U)\n   {\n      arm_radix2_butterfly_inverse_q31(pSrc, S->fftLen,\n      S->pTwiddle, S->twidCoefModifier);\n   }\n   else\n   {\n      arm_radix2_butterfly_q31(pSrc, S->fftLen,\n      S->pTwiddle, S->twidCoefModifier);\n   }\n\n   arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n\nvoid arm_radix2_butterfly_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint16_t twidCoefModifier)\n{\n\n   unsigned i, j, k, l, m;\n   unsigned n1, n2, ia;\n   q31_t xt, yt, cosVal, sinVal;\n   q31_t p0, p1;\n\n   //N = fftLen;\n   n2 = fftLen;\n\n   n1 = n2;\n   n2 = n2 >> 1;\n   ia = 0;\n\n   // loop for groups\n   for (i = 0; i < n2; i++)\n   {\n      cosVal = pCoef[ia * 2];\n      sinVal = pCoef[(ia * 2) + 1];\n      ia = ia + twidCoefModifier;\n\n      l = i + n2;\n      xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U);\n      pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U;\n\n      yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U);\n      pSrc[2 * i + 1] =\n        ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U;\n\n      mult_32x32_keep32_R(p0, xt, cosVal);\n      mult_32x32_keep32_R(p1, yt, cosVal);\n      multAcc_32x32_keep32_R(p0, yt, sinVal);\n      multSub_32x32_keep32_R(p1, xt, sinVal);\n\n      pSrc[2U * l] = p0;\n      pSrc[2U * l + 1U] = p1;\n\n   }                             // groups loop end\n\n   twidCoefModifier <<= 1U;\n\n   // loop for stage\n   for (k = fftLen / 2; k > 2; k = k >> 1)\n   {\n      n1 = n2;\n      n2 = n2 >> 1;\n      ia = 0;\n\n      // loop for groups\n      for (j = 0; j < n2; j++)\n      {\n         cosVal = pCoef[ia * 2];\n         sinVal = pCoef[(ia * 2) + 1];\n         ia = ia + twidCoefModifier;\n\n         // loop for butterfly\n         i = j;\n         m = fftLen / n1;\n         do\n         {\n            l = i + n2;\n            xt = pSrc[2 * i] - pSrc[2 * l];\n            pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U;\n\n            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n            pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U;\n\n            mult_32x32_keep32_R(p0, xt, cosVal);\n            mult_32x32_keep32_R(p1, yt, cosVal);\n            multAcc_32x32_keep32_R(p0, yt, sinVal);\n            multSub_32x32_keep32_R(p1, xt, sinVal);\n\n            pSrc[2U * l] = p0;\n            pSrc[2U * l + 1U] = p1;\n            i += n1;\n            m--;\n         } while ( m > 0);                   // butterfly loop end\n\n      }                           // groups loop end\n\n      twidCoefModifier <<= 1U;\n   }                             // stages loop end\n\n   n1 = n2;\n   n2 = n2 >> 1;\n   ia = 0;\n\n   cosVal = pCoef[ia * 2];\n   sinVal = pCoef[(ia * 2) + 1];\n   ia = ia + twidCoefModifier;\n\n   // loop for butterfly\n   for (i = 0; i < fftLen; i += n1)\n   {\n      l = i + n2;\n      xt = pSrc[2 * i] - pSrc[2 * l];\n      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);\n\n      pSrc[2U * l] = xt;\n\n      pSrc[2U * l + 1U] = yt;\n\n      i += n1;\n      l = i + n2;\n\n      xt = pSrc[2 * i] - pSrc[2 * l];\n      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);\n\n      pSrc[2U * l] = xt;\n\n      pSrc[2U * l + 1U] = yt;\n\n   }                             // butterfly loop end\n\n}\n\n\nvoid arm_radix2_butterfly_inverse_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint16_t twidCoefModifier)\n{\n\n   unsigned i, j, k, l;\n   unsigned n1, n2, ia;\n   q31_t xt, yt, cosVal, sinVal;\n   q31_t p0, p1;\n\n   //N = fftLen;\n   n2 = fftLen;\n\n   n1 = n2;\n   n2 = n2 >> 1;\n   ia = 0;\n\n   // loop for groups\n   for (i = 0; i < n2; i++)\n   {\n      cosVal = pCoef[ia * 2];\n      sinVal = pCoef[(ia * 2) + 1];\n      ia = ia + twidCoefModifier;\n\n      l = i + n2;\n      xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U);\n      pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U;\n\n      yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U);\n      pSrc[2 * i + 1] =\n        ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U;\n\n      mult_32x32_keep32_R(p0, xt, cosVal);\n      mult_32x32_keep32_R(p1, yt, cosVal);\n      multSub_32x32_keep32_R(p0, yt, sinVal);\n      multAcc_32x32_keep32_R(p1, xt, sinVal);\n\n      pSrc[2U * l] = p0;\n      pSrc[2U * l + 1U] = p1;\n   }                             // groups loop end\n\n   twidCoefModifier = twidCoefModifier << 1U;\n\n   // loop for stage\n   for (k = fftLen / 2; k > 2; k = k >> 1)\n   {\n      n1 = n2;\n      n2 = n2 >> 1;\n      ia = 0;\n\n      // loop for groups\n      for (j = 0; j < n2; j++)\n      {\n         cosVal = pCoef[ia * 2];\n         sinVal = pCoef[(ia * 2) + 1];\n         ia = ia + twidCoefModifier;\n\n         // loop for butterfly\n         for (i = j; i < fftLen; i += n1)\n         {\n            l = i + n2;\n            xt = pSrc[2 * i] - pSrc[2 * l];\n            pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U;\n\n            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n            pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U;\n\n            mult_32x32_keep32_R(p0, xt, cosVal);\n            mult_32x32_keep32_R(p1, yt, cosVal);\n            multSub_32x32_keep32_R(p0, yt, sinVal);\n            multAcc_32x32_keep32_R(p1, xt, sinVal);\n\n            pSrc[2U * l] = p0;\n            pSrc[2U * l + 1U] = p1;\n         }                         // butterfly loop end\n\n      }                           // groups loop end\n\n      twidCoefModifier = twidCoefModifier << 1U;\n   }                             // stages loop end\n\n   n1 = n2;\n   n2 = n2 >> 1;\n   ia = 0;\n\n   cosVal = pCoef[ia * 2];\n   sinVal = pCoef[(ia * 2) + 1];\n   ia = ia + twidCoefModifier;\n\n   // loop for butterfly\n   for (i = 0; i < fftLen; i += n1)\n   {\n      l = i + n2;\n      xt = pSrc[2 * i] - pSrc[2 * l];\n      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);\n\n      pSrc[2U * l] = xt;\n\n      pSrc[2U * l + 1U] = yt;\n\n      i += n1;\n      l = i + n2;\n\n      xt = pSrc[2 * i] - pSrc[2 * l];\n      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);\n\n      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];\n      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);\n\n      pSrc[2U * l] = xt;\n\n      pSrc[2U * l + 1U] = yt;\n\n   }                             // butterfly loop end\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix4_f32.c\n * Description:  Radix-4 Decimation in Frequency CFFT & CIFFT Floating point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nextern void arm_bitreversal_f32(\n        float32_t * pSrc,\n        uint16_t fftSize,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab);\n\nvoid arm_radix4_butterfly_f32(\n        float32_t * pSrc,\n        uint16_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier);\n\nvoid arm_radix4_butterfly_inverse_f32(\n        float32_t * pSrc,\n        uint16_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier,\n        float32_t onebyfftLen);\n\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point Radix-4 CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_f32 and will be removed in the future.\n  @param[in]     S    points to an instance of the floating-point Radix-4 CFFT/CIFFT structure\n  @param[in,out] pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @return        none\n */\n\nvoid arm_cfft_radix4_f32(\n  const arm_cfft_radix4_instance_f32 * S,\n        float32_t * pSrc)\n{\n   if (S->ifftFlag == 1U)\n   {\n      /*  Complex IFFT radix-4  */\n      arm_radix4_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier, S->onebyfftLen);\n   }\n   else\n   {\n      /*  Complex FFT radix-4  */\n      arm_radix4_butterfly_f32(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier);\n   }\n\n   if (S->bitReverseFlag == 1U)\n   {\n      /*  Bit Reversal */\n      arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);\n   }\n\n}\n\n/**\n  @} end of ComplexFFT group\n */\n\n/* ----------------------------------------------------------------------\n * Internal helper function used by the FFTs\n * ---------------------------------------------------------------------- */\n\n/**\n  brief         Core function for the floating-point CFFT butterfly process.\n  param[in,out] pSrc             points to the in-place buffer of floating-point data type\n  param[in]     fftLen           length of the FFT\n  param[in]     pCoef            points to the twiddle coefficient buffer\n  param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  return        none\n */\n\nvoid arm_radix4_butterfly_f32(\n        float32_t * pSrc,\n        uint16_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier)\n{\n        float32_t co1, co2, co3, si1, si2, si3;\n        uint32_t ia1, ia2, ia3;\n        uint32_t i0, i1, i2, i3;\n        uint32_t n1, n2, j, k;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn;\n        float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc,\n        Ybminusd;\n        float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out;\n        float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out;\n        float32_t *ptr1;\n        float32_t p0,p1,p2,p3,p4,p5;\n        float32_t a0,a1,a2,a3,a4,a5,a6,a7;\n\n   /*  Initializations for the first stage */\n   n2 = fftLen;\n   n1 = n2;\n\n   /* n2 = fftLen/4 */\n   n2 >>= 2U;\n   i0 = 0U;\n   ia1 = 0U;\n\n   j = n2;\n\n   /*  Calculation of first stage */\n   do\n   {\n      /*  index calculation for the input as, */\n      /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */\n      i1 = i0 + n2;\n      i2 = i1 + n2;\n      i3 = i2 + n2;\n\n      xaIn = pSrc[(2U * i0)];\n      yaIn = pSrc[(2U * i0) + 1U];\n\n      xbIn = pSrc[(2U * i1)];\n      ybIn = pSrc[(2U * i1) + 1U];\n\n      xcIn = pSrc[(2U * i2)];\n      ycIn = pSrc[(2U * i2) + 1U];\n\n      xdIn = pSrc[(2U * i3)];\n      ydIn = pSrc[(2U * i3) + 1U];\n\n      /* xa + xc */\n      Xaplusc = xaIn + xcIn;\n      /* xb + xd */\n      Xbplusd = xbIn + xdIn;\n      /* ya + yc */\n      Yaplusc = yaIn + ycIn;\n      /* yb + yd */\n      Ybplusd = ybIn + ydIn;\n\n      /*  index calculation for the coefficients */\n      ia2 = ia1 + ia1;\n      co2 = pCoef[ia2 * 2U];\n      si2 = pCoef[(ia2 * 2U) + 1U];\n\n      /* xa - xc */\n      Xaminusc = xaIn - xcIn;\n      /* xb - xd */\n      Xbminusd = xbIn - xdIn;\n      /* ya - yc */\n      Yaminusc = yaIn - ycIn;\n      /* yb - yd */\n      Ybminusd = ybIn - ydIn;\n\n      /* xa' = xa + xb + xc + xd */\n      pSrc[(2U * i0)] = Xaplusc + Xbplusd;\n      /* ya' = ya + yb + yc + yd */\n      pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd;\n\n      /* (xa - xc) + (yb - yd) */\n      Xb12C_out = (Xaminusc + Ybminusd);\n      /* (ya - yc) + (xb - xd) */\n      Yb12C_out = (Yaminusc - Xbminusd);\n      /* (xa + xc) - (xb + xd) */\n      Xc12C_out = (Xaplusc - Xbplusd);\n      /* (ya + yc) - (yb + yd) */\n      Yc12C_out = (Yaplusc - Ybplusd);\n      /* (xa - xc) - (yb - yd) */\n      Xd12C_out = (Xaminusc - Ybminusd);\n      /* (ya - yc) + (xb - xd) */\n      Yd12C_out = (Xbminusd + Yaminusc);\n\n      co1 = pCoef[ia1 * 2U];\n      si1 = pCoef[(ia1 * 2U) + 1U];\n\n      /*  index calculation for the coefficients */\n      ia3 = ia2 + ia1;\n      co3 = pCoef[ia3 * 2U];\n      si3 = pCoef[(ia3 * 2U) + 1U];\n\n      Xb12_out = Xb12C_out * co1;\n      Yb12_out = Yb12C_out * co1;\n      Xc12_out = Xc12C_out * co2;\n      Yc12_out = Yc12C_out * co2;\n      Xd12_out = Xd12C_out * co3;\n      Yd12_out = Yd12C_out * co3;\n\n      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n      //Xb12_out -= Yb12C_out * si1;\n      p0 = Yb12C_out * si1;\n      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n      //Yb12_out += Xb12C_out * si1;\n      p1 = Xb12C_out * si1;\n      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n      //Xc12_out -= Yc12C_out * si2;\n      p2 = Yc12C_out * si2;\n      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n      //Yc12_out += Xc12C_out * si2;\n      p3 = Xc12C_out * si2;\n      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n      //Xd12_out -= Yd12C_out * si3;\n      p4 = Yd12C_out * si3;\n      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n      //Yd12_out += Xd12C_out * si3;\n      p5 = Xd12C_out * si3;\n\n      Xb12_out += p0;\n      Yb12_out -= p1;\n      Xc12_out += p2;\n      Yc12_out -= p3;\n      Xd12_out += p4;\n      Yd12_out -= p5;\n\n      /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */\n      pSrc[2U * i1] = Xc12_out;\n\n      /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */\n      pSrc[(2U * i1) + 1U] = Yc12_out;\n\n      /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */\n      pSrc[2U * i2] = Xb12_out;\n\n      /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */\n      pSrc[(2U * i2) + 1U] = Yb12_out;\n\n      /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */\n      pSrc[2U * i3] = Xd12_out;\n\n      /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */\n      pSrc[(2U * i3) + 1U] = Yd12_out;\n\n      /*  Twiddle coefficients index modifier */\n      ia1 += twidCoefModifier;\n\n      /*  Updating input index */\n      i0++;\n\n   }\n   while (--j);\n\n   twidCoefModifier <<= 2U;\n\n   /*  Calculation of second stage to excluding last stage */\n   for (k = fftLen >> 2U; k > 4U; k >>= 2U)\n   {\n      /*  Initializations for the first stage */\n      n1 = n2;\n      n2 >>= 2U;\n      ia1 = 0U;\n\n      /*  Calculation of first stage */\n      j = 0;\n      do\n      {\n         /*  index calculation for the coefficients */\n         ia2 = ia1 + ia1;\n         ia3 = ia2 + ia1;\n         co1 = pCoef[(ia1 * 2U)];\n         si1 = pCoef[(ia1 * 2U) + 1U];\n         co2 = pCoef[(ia2 * 2U)];\n         si2 = pCoef[(ia2 * 2U) + 1U];\n         co3 = pCoef[(ia3 * 2U)];\n         si3 = pCoef[(ia3 * 2U) + 1U];\n\n         /*  Twiddle coefficients index modifier */\n         ia1 += twidCoefModifier;\n\n         i0 = j;\n         do\n         {\n            /*  index calculation for the input as, */\n            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */\n            i1 = i0 + n2;\n            i2 = i1 + n2;\n            i3 = i2 + n2;\n\n            xaIn = pSrc[(2U * i0)];\n            yaIn = pSrc[(2U * i0) + 1U];\n\n            xbIn = pSrc[(2U * i1)];\n            ybIn = pSrc[(2U * i1) + 1U];\n\n            xcIn = pSrc[(2U * i2)];\n            ycIn = pSrc[(2U * i2) + 1U];\n\n            xdIn = pSrc[(2U * i3)];\n            ydIn = pSrc[(2U * i3) + 1U];\n\n            /* xa - xc */\n            Xaminusc = xaIn - xcIn;\n            /* (xb - xd) */\n            Xbminusd = xbIn - xdIn;\n            /* ya - yc */\n            Yaminusc = yaIn - ycIn;\n            /* (yb - yd) */\n            Ybminusd = ybIn - ydIn;\n\n            /* xa + xc */\n            Xaplusc = xaIn + xcIn;\n            /* xb + xd */\n            Xbplusd = xbIn + xdIn;\n            /* ya + yc */\n            Yaplusc = yaIn + ycIn;\n            /* yb + yd */\n            Ybplusd = ybIn + ydIn;\n\n            /* (xa - xc) + (yb - yd) */\n            Xb12C_out = (Xaminusc + Ybminusd);\n            /* (ya - yc) -  (xb - xd) */\n            Yb12C_out = (Yaminusc - Xbminusd);\n            /* xa + xc -(xb + xd) */\n            Xc12C_out = (Xaplusc - Xbplusd);\n            /* (ya + yc) - (yb + yd) */\n            Yc12C_out = (Yaplusc - Ybplusd);\n            /* (xa - xc) - (yb - yd) */\n            Xd12C_out = (Xaminusc - Ybminusd);\n            /* (ya - yc) +  (xb - xd) */\n            Yd12C_out = (Xbminusd + Yaminusc);\n\n            pSrc[(2U * i0)] = Xaplusc + Xbplusd;\n            pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd;\n\n            Xb12_out = Xb12C_out * co1;\n            Yb12_out = Yb12C_out * co1;\n            Xc12_out = Xc12C_out * co2;\n            Yc12_out = Yc12C_out * co2;\n            Xd12_out = Xd12C_out * co3;\n            Yd12_out = Yd12C_out * co3;\n\n            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n            //Xb12_out -= Yb12C_out * si1;\n            p0 = Yb12C_out * si1;\n            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n            //Yb12_out += Xb12C_out * si1;\n            p1 = Xb12C_out * si1;\n            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n            //Xc12_out -= Yc12C_out * si2;\n            p2 = Yc12C_out * si2;\n            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n            //Yc12_out += Xc12C_out * si2;\n            p3 = Xc12C_out * si2;\n            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n            //Xd12_out -= Yd12C_out * si3;\n            p4 = Yd12C_out * si3;\n            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n            //Yd12_out += Xd12C_out * si3;\n            p5 = Xd12C_out * si3;\n\n            Xb12_out += p0;\n            Yb12_out -= p1;\n            Xc12_out += p2;\n            Yc12_out -= p3;\n            Xd12_out += p4;\n            Yd12_out -= p5;\n\n            /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */\n            pSrc[2U * i1] = Xc12_out;\n\n            /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */\n            pSrc[(2U * i1) + 1U] = Yc12_out;\n\n            /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */\n            pSrc[2U * i2] = Xb12_out;\n\n            /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */\n            pSrc[(2U * i2) + 1U] = Yb12_out;\n\n            /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */\n            pSrc[2U * i3] = Xd12_out;\n\n            /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */\n            pSrc[(2U * i3) + 1U] = Yd12_out;\n\n            i0 += n1;\n         } while (i0 < fftLen);\n         j++;\n      } while (j <= (n2 - 1U));\n      twidCoefModifier <<= 2U;\n   }\n\n   j = fftLen >> 2;\n   ptr1 = &pSrc[0];\n\n   /*  Calculations of last stage */\n   do\n   {\n      xaIn = ptr1[0];\n      yaIn = ptr1[1];\n      xbIn = ptr1[2];\n      ybIn = ptr1[3];\n      xcIn = ptr1[4];\n      ycIn = ptr1[5];\n      xdIn = ptr1[6];\n      ydIn = ptr1[7];\n\n      /* xa + xc */\n      Xaplusc = xaIn + xcIn;\n\n      /* xa - xc */\n      Xaminusc = xaIn - xcIn;\n\n      /* ya + yc */\n      Yaplusc = yaIn + ycIn;\n\n      /* ya - yc */\n      Yaminusc = yaIn - ycIn;\n\n      /* xb + xd */\n      Xbplusd = xbIn + xdIn;\n\n      /* yb + yd */\n      Ybplusd = ybIn + ydIn;\n\n      /* (xb-xd) */\n      Xbminusd = xbIn - xdIn;\n\n      /* (yb-yd) */\n      Ybminusd = ybIn - ydIn;\n\n      /* xa' = xa + xb + xc + xd */\n      a0 = (Xaplusc + Xbplusd);\n      /* ya' = ya + yb + yc + yd */\n      a1 = (Yaplusc + Ybplusd);\n      /* xc' = (xa-xb+xc-xd) */\n      a2 = (Xaplusc - Xbplusd);\n      /* yc' = (ya-yb+yc-yd) */\n      a3 = (Yaplusc - Ybplusd);\n      /* xb' = (xa+yb-xc-yd) */\n      a4 = (Xaminusc + Ybminusd);\n      /* yb' = (ya-xb-yc+xd) */\n      a5 = (Yaminusc - Xbminusd);\n      /* xd' = (xa-yb-xc+yd)) */\n      a6 = (Xaminusc - Ybminusd);\n      /* yd' = (ya+xb-yc-xd) */\n      a7 = (Xbminusd + Yaminusc);\n\n      ptr1[0] = a0;\n      ptr1[1] = a1;\n      ptr1[2] = a2;\n      ptr1[3] = a3;\n      ptr1[4] = a4;\n      ptr1[5] = a5;\n      ptr1[6] = a6;\n      ptr1[7] = a7;\n\n      /* increment pointer by 8 */\n      ptr1 += 8U;\n   } while (--j);\n\n#else\n\n        float32_t t1, t2, r1, r2, s1, s2;\n\n   /* Initializations for the fft calculation */\n   n2 = fftLen;\n   n1 = n2;\n   for (k = fftLen; k > 1U; k >>= 2U)\n   {\n      /*  Initializations for the fft calculation */\n      n1 = n2;\n      n2 >>= 2U;\n      ia1 = 0U;\n\n      /*  FFT Calculation */\n      j = 0;\n      do\n      {\n         /*  index calculation for the coefficients */\n         ia2 = ia1 + ia1;\n         ia3 = ia2 + ia1;\n         co1 = pCoef[ia1 * 2U];\n         si1 = pCoef[(ia1 * 2U) + 1U];\n         co2 = pCoef[ia2 * 2U];\n         si2 = pCoef[(ia2 * 2U) + 1U];\n         co3 = pCoef[ia3 * 2U];\n         si3 = pCoef[(ia3 * 2U) + 1U];\n\n         /*  Twiddle coefficients index modifier */\n         ia1 = ia1 + twidCoefModifier;\n\n         i0 = j;\n         do\n         {\n            /*  index calculation for the input as, */\n            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */\n            i1 = i0 + n2;\n            i2 = i1 + n2;\n            i3 = i2 + n2;\n\n            /* xa + xc */\n            r1 = pSrc[(2U * i0)] + pSrc[(2U * i2)];\n\n            /* xa - xc */\n            r2 = pSrc[(2U * i0)] - pSrc[(2U * i2)];\n\n            /* ya + yc */\n            s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U];\n\n            /* ya - yc */\n            s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U];\n\n            /* xb + xd */\n            t1 = pSrc[2U * i1] + pSrc[2U * i3];\n\n            /* xa' = xa + xb + xc + xd */\n            pSrc[2U * i0] = r1 + t1;\n\n            /* xa + xc -(xb + xd) */\n            r1 = r1 - t1;\n\n            /* yb + yd */\n            t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U];\n\n            /* ya' = ya + yb + yc + yd */\n            pSrc[(2U * i0) + 1U] = s1 + t2;\n\n            /* (ya + yc) - (yb + yd) */\n            s1 = s1 - t2;\n\n            /* (yb - yd) */\n            t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U];\n\n            /* (xb - xd) */\n            t2 = pSrc[2U * i1] - pSrc[2U * i3];\n\n            /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */\n            pSrc[2U * i1] = (r1 * co2) + (s1 * si2);\n\n            /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */\n            pSrc[(2U * i1) + 1U] = (s1 * co2) - (r1 * si2);\n\n            /* (xa - xc) + (yb - yd) */\n            r1 = r2 + t1;\n\n            /* (xa - xc) - (yb - yd) */\n            r2 = r2 - t1;\n\n            /* (ya - yc) -  (xb - xd) */\n            s1 = s2 - t2;\n\n            /* (ya - yc) +  (xb - xd) */\n            s2 = s2 + t2;\n\n            /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */\n            pSrc[2U * i2] = (r1 * co1) + (s1 * si1);\n\n            /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */\n            pSrc[(2U * i2) + 1U] = (s1 * co1) - (r1 * si1);\n\n            /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */\n            pSrc[2U * i3] = (r2 * co3) + (s2 * si3);\n\n            /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */\n            pSrc[(2U * i3) + 1U] = (s2 * co3) - (r2 * si3);\n\n            i0 += n1;\n         } while ( i0 < fftLen);\n         j++;\n      } while (j <= (n2 - 1U));\n      twidCoefModifier <<= 2U;\n   }\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n}\n\n/**\n  brief         Core function for the floating-point CIFFT butterfly process.\n  param[in,out] pSrc             points to the in-place buffer of floating-point data type\n  param[in]     fftLen           length of the FFT\n  param[in]     pCoef            points to twiddle coefficient buffer\n  param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\n  param[in]     onebyfftLen      value of 1/fftLen\n  return        none\n */\n\nvoid arm_radix4_butterfly_inverse_f32(\n        float32_t * pSrc,\n        uint16_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier,\n        float32_t onebyfftLen)\n{\n        float32_t co1, co2, co3, si1, si2, si3;\n        uint32_t ia1, ia2, ia3;\n        uint32_t i0, i1, i2, i3;\n        uint32_t n1, n2, j, k;\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n        float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn;\n        float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc,\n        Ybminusd;\n        float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out;\n        float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out;\n        float32_t *ptr1;\n        float32_t p0,p1,p2,p3,p4,p5,p6,p7;\n        float32_t a0,a1,a2,a3,a4,a5,a6,a7;\n\n\n   /*  Initializations for the first stage */\n   n2 = fftLen;\n   n1 = n2;\n\n   /* n2 = fftLen/4 */\n   n2 >>= 2U;\n   i0 = 0U;\n   ia1 = 0U;\n\n   j = n2;\n\n   /*  Calculation of first stage */\n   do\n   {\n      /*  index calculation for the input as, */\n      /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */\n      i1 = i0 + n2;\n      i2 = i1 + n2;\n      i3 = i2 + n2;\n\n      /*  Butterfly implementation */\n      xaIn = pSrc[(2U * i0)];\n      yaIn = pSrc[(2U * i0) + 1U];\n\n      xcIn = pSrc[(2U * i2)];\n      ycIn = pSrc[(2U * i2) + 1U];\n\n      xbIn = pSrc[(2U * i1)];\n      ybIn = pSrc[(2U * i1) + 1U];\n\n      xdIn = pSrc[(2U * i3)];\n      ydIn = pSrc[(2U * i3) + 1U];\n\n      /* xa + xc */\n      Xaplusc = xaIn + xcIn;\n      /* xb + xd */\n      Xbplusd = xbIn + xdIn;\n      /* ya + yc */\n      Yaplusc = yaIn + ycIn;\n      /* yb + yd */\n      Ybplusd = ybIn + ydIn;\n\n      /*  index calculation for the coefficients */\n      ia2 = ia1 + ia1;\n      co2 = pCoef[ia2 * 2U];\n      si2 = pCoef[(ia2 * 2U) + 1U];\n\n      /* xa - xc */\n      Xaminusc = xaIn - xcIn;\n      /* xb - xd */\n      Xbminusd = xbIn - xdIn;\n      /* ya - yc */\n      Yaminusc = yaIn - ycIn;\n      /* yb - yd */\n      Ybminusd = ybIn - ydIn;\n\n      /* xa' = xa + xb + xc + xd */\n      pSrc[(2U * i0)] = Xaplusc + Xbplusd;\n\n      /* ya' = ya + yb + yc + yd */\n      pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd;\n\n      /* (xa - xc) - (yb - yd) */\n      Xb12C_out = (Xaminusc - Ybminusd);\n      /* (ya - yc) + (xb - xd) */\n      Yb12C_out = (Yaminusc + Xbminusd);\n      /* (xa + xc) - (xb + xd) */\n      Xc12C_out = (Xaplusc - Xbplusd);\n      /* (ya + yc) - (yb + yd) */\n      Yc12C_out = (Yaplusc - Ybplusd);\n      /* (xa - xc) + (yb - yd) */\n      Xd12C_out = (Xaminusc + Ybminusd);\n      /* (ya - yc) - (xb - xd) */\n      Yd12C_out = (Yaminusc - Xbminusd);\n\n      co1 = pCoef[ia1 * 2U];\n      si1 = pCoef[(ia1 * 2U) + 1U];\n\n      /*  index calculation for the coefficients */\n      ia3 = ia2 + ia1;\n      co3 = pCoef[ia3 * 2U];\n      si3 = pCoef[(ia3 * 2U) + 1U];\n\n      Xb12_out = Xb12C_out * co1;\n      Yb12_out = Yb12C_out * co1;\n      Xc12_out = Xc12C_out * co2;\n      Yc12_out = Yc12C_out * co2;\n      Xd12_out = Xd12C_out * co3;\n      Yd12_out = Yd12C_out * co3;\n\n      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n      //Xb12_out -= Yb12C_out * si1;\n      p0 = Yb12C_out * si1;\n      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n      //Yb12_out += Xb12C_out * si1;\n      p1 = Xb12C_out * si1;\n      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n      //Xc12_out -= Yc12C_out * si2;\n      p2 = Yc12C_out * si2;\n      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n      //Yc12_out += Xc12C_out * si2;\n      p3 = Xc12C_out * si2;\n      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n      //Xd12_out -= Yd12C_out * si3;\n      p4 = Yd12C_out * si3;\n      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n      //Yd12_out += Xd12C_out * si3;\n      p5 = Xd12C_out * si3;\n\n      Xb12_out -= p0;\n      Yb12_out += p1;\n      Xc12_out -= p2;\n      Yc12_out += p3;\n      Xd12_out -= p4;\n      Yd12_out += p5;\n\n      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n      pSrc[2U * i1] = Xc12_out;\n\n      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n      pSrc[(2U * i1) + 1U] = Yc12_out;\n\n      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n      pSrc[2U * i2] = Xb12_out;\n\n      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n      pSrc[(2U * i2) + 1U] = Yb12_out;\n\n      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n      pSrc[2U * i3] = Xd12_out;\n\n      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n      pSrc[(2U * i3) + 1U] = Yd12_out;\n\n      /*  Twiddle coefficients index modifier */\n      ia1 = ia1 + twidCoefModifier;\n\n      /*  Updating input index */\n      i0 = i0 + 1U;\n\n   } while (--j);\n\n   twidCoefModifier <<= 2U;\n\n   /*  Calculation of second stage to excluding last stage */\n   for (k = fftLen >> 2U; k > 4U; k >>= 2U)\n   {\n      /*  Initializations for the first stage */\n      n1 = n2;\n      n2 >>= 2U;\n      ia1 = 0U;\n\n      /*  Calculation of first stage */\n      j = 0;\n      do\n      {\n         /*  index calculation for the coefficients */\n         ia2 = ia1 + ia1;\n         ia3 = ia2 + ia1;\n         co1 = pCoef[ia1 * 2U];\n         si1 = pCoef[(ia1 * 2U) + 1U];\n         co2 = pCoef[ia2 * 2U];\n         si2 = pCoef[(ia2 * 2U) + 1U];\n         co3 = pCoef[ia3 * 2U];\n         si3 = pCoef[(ia3 * 2U) + 1U];\n\n         /*  Twiddle coefficients index modifier */\n         ia1 = ia1 + twidCoefModifier;\n\n         i0 = j;\n         do\n         {\n            /*  index calculation for the input as, */\n            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */\n            i1 = i0 + n2;\n            i2 = i1 + n2;\n            i3 = i2 + n2;\n\n            xaIn = pSrc[(2U * i0)];\n            yaIn = pSrc[(2U * i0) + 1U];\n\n            xbIn = pSrc[(2U * i1)];\n            ybIn = pSrc[(2U * i1) + 1U];\n\n            xcIn = pSrc[(2U * i2)];\n            ycIn = pSrc[(2U * i2) + 1U];\n\n            xdIn = pSrc[(2U * i3)];\n            ydIn = pSrc[(2U * i3) + 1U];\n\n            /* xa - xc */\n            Xaminusc = xaIn - xcIn;\n            /* (xb - xd) */\n            Xbminusd = xbIn - xdIn;\n            /* ya - yc */\n            Yaminusc = yaIn - ycIn;\n            /* (yb - yd) */\n            Ybminusd = ybIn - ydIn;\n\n            /* xa + xc */\n            Xaplusc = xaIn + xcIn;\n            /* xb + xd */\n            Xbplusd = xbIn + xdIn;\n            /* ya + yc */\n            Yaplusc = yaIn + ycIn;\n            /* yb + yd */\n            Ybplusd = ybIn + ydIn;\n\n            /* (xa - xc) - (yb - yd) */\n            Xb12C_out = (Xaminusc - Ybminusd);\n            /* (ya - yc) +  (xb - xd) */\n            Yb12C_out = (Yaminusc + Xbminusd);\n            /* xa + xc -(xb + xd) */\n            Xc12C_out = (Xaplusc - Xbplusd);\n            /* (ya + yc) - (yb + yd) */\n            Yc12C_out = (Yaplusc - Ybplusd);\n            /* (xa - xc) + (yb - yd) */\n            Xd12C_out = (Xaminusc + Ybminusd);\n            /* (ya - yc) -  (xb - xd) */\n            Yd12C_out = (Yaminusc - Xbminusd);\n\n            pSrc[(2U * i0)] = Xaplusc + Xbplusd;\n            pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd;\n\n            Xb12_out = Xb12C_out * co1;\n            Yb12_out = Yb12C_out * co1;\n            Xc12_out = Xc12C_out * co2;\n            Yc12_out = Yc12C_out * co2;\n            Xd12_out = Xd12C_out * co3;\n            Yd12_out = Yd12C_out * co3;\n\n            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n            //Xb12_out -= Yb12C_out * si1;\n            p0 = Yb12C_out * si1;\n            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n            //Yb12_out += Xb12C_out * si1;\n            p1 = Xb12C_out * si1;\n            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n            //Xc12_out -= Yc12C_out * si2;\n            p2 = Yc12C_out * si2;\n            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n            //Yc12_out += Xc12C_out * si2;\n            p3 = Xc12C_out * si2;\n            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n            //Xd12_out -= Yd12C_out * si3;\n            p4 = Yd12C_out * si3;\n            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n            //Yd12_out += Xd12C_out * si3;\n            p5 = Xd12C_out * si3;\n\n            Xb12_out -= p0;\n            Yb12_out += p1;\n            Xc12_out -= p2;\n            Yc12_out += p3;\n            Xd12_out -= p4;\n            Yd12_out += p5;\n\n            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n            pSrc[2U * i1] = Xc12_out;\n\n            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n            pSrc[(2U * i1) + 1U] = Yc12_out;\n\n            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n            pSrc[2U * i2] = Xb12_out;\n\n            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n            pSrc[(2U * i2) + 1U] = Yb12_out;\n\n            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n            pSrc[2U * i3] = Xd12_out;\n\n            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n            pSrc[(2U * i3) + 1U] = Yd12_out;\n\n            i0 += n1;\n         } while (i0 < fftLen);\n         j++;\n      } while (j <= (n2 - 1U));\n      twidCoefModifier <<= 2U;\n   }\n   /*  Initializations of last stage */\n\n   j = fftLen >> 2;\n   ptr1 = &pSrc[0];\n\n   /*  Calculations of last stage */\n   do\n   {\n      xaIn = ptr1[0];\n      yaIn = ptr1[1];\n      xbIn = ptr1[2];\n      ybIn = ptr1[3];\n      xcIn = ptr1[4];\n      ycIn = ptr1[5];\n      xdIn = ptr1[6];\n      ydIn = ptr1[7];\n\n      /*  Butterfly implementation */\n      /* xa + xc */\n      Xaplusc = xaIn + xcIn;\n\n      /* xa - xc */\n      Xaminusc = xaIn - xcIn;\n\n      /* ya + yc */\n      Yaplusc = yaIn + ycIn;\n\n      /* ya - yc */\n      Yaminusc = yaIn - ycIn;\n\n      /* xb + xd */\n      Xbplusd = xbIn + xdIn;\n\n      /* yb + yd */\n      Ybplusd = ybIn + ydIn;\n\n      /* (xb-xd) */\n      Xbminusd = xbIn - xdIn;\n\n      /* (yb-yd) */\n      Ybminusd = ybIn - ydIn;\n\n      /* xa' = (xa+xb+xc+xd) * onebyfftLen */\n      a0 = (Xaplusc + Xbplusd);\n      /* ya' = (ya+yb+yc+yd) * onebyfftLen */\n      a1 = (Yaplusc + Ybplusd);\n      /* xc' = (xa-xb+xc-xd) * onebyfftLen */\n      a2 = (Xaplusc - Xbplusd);\n      /* yc' = (ya-yb+yc-yd) * onebyfftLen  */\n      a3 = (Yaplusc - Ybplusd);\n      /* xb' = (xa-yb-xc+yd) * onebyfftLen */\n      a4 = (Xaminusc - Ybminusd);\n      /* yb' = (ya+xb-yc-xd) * onebyfftLen */\n      a5 = (Yaminusc + Xbminusd);\n      /* xd' = (xa-yb-xc+yd) * onebyfftLen */\n      a6 = (Xaminusc + Ybminusd);\n      /* yd' = (ya-xb-yc+xd) * onebyfftLen */\n      a7 = (Yaminusc - Xbminusd);\n\n      p0 = a0 * onebyfftLen;\n      p1 = a1 * onebyfftLen;\n      p2 = a2 * onebyfftLen;\n      p3 = a3 * onebyfftLen;\n      p4 = a4 * onebyfftLen;\n      p5 = a5 * onebyfftLen;\n      p6 = a6 * onebyfftLen;\n      p7 = a7 * onebyfftLen;\n\n      /* xa' = (xa+xb+xc+xd) * onebyfftLen */\n      ptr1[0] = p0;\n      /* ya' = (ya+yb+yc+yd) * onebyfftLen */\n      ptr1[1] = p1;\n      /* xc' = (xa-xb+xc-xd) * onebyfftLen */\n      ptr1[2] = p2;\n      /* yc' = (ya-yb+yc-yd) * onebyfftLen  */\n      ptr1[3] = p3;\n      /* xb' = (xa-yb-xc+yd) * onebyfftLen */\n      ptr1[4] = p4;\n      /* yb' = (ya+xb-yc-xd) * onebyfftLen */\n      ptr1[5] = p5;\n      /* xd' = (xa-yb-xc+yd) * onebyfftLen */\n      ptr1[6] = p6;\n      /* yd' = (ya-xb-yc+xd) * onebyfftLen */\n      ptr1[7] = p7;\n\n      /* increment source pointer by 8 for next calculations */\n      ptr1 = ptr1 + 8U;\n\n   } while (--j);\n\n#else\n\n        float32_t t1, t2, r1, r2, s1, s2;\n\n   /*  Initializations for the first stage */\n   n2 = fftLen;\n   n1 = n2;\n\n   /*  Calculation of first stage */\n   for (k = fftLen; k > 4U; k >>= 2U)\n   {\n      /*  Initializations for the first stage */\n      n1 = n2;\n      n2 >>= 2U;\n      ia1 = 0U;\n\n      /*  Calculation of first stage */\n      j = 0;\n      do\n      {\n         /*  index calculation for the coefficients */\n         ia2 = ia1 + ia1;\n         ia3 = ia2 + ia1;\n         co1 = pCoef[ia1 * 2U];\n         si1 = pCoef[(ia1 * 2U) + 1U];\n         co2 = pCoef[ia2 * 2U];\n         si2 = pCoef[(ia2 * 2U) + 1U];\n         co3 = pCoef[ia3 * 2U];\n         si3 = pCoef[(ia3 * 2U) + 1U];\n\n         /*  Twiddle coefficients index modifier */\n         ia1 = ia1 + twidCoefModifier;\n\n         i0 = j;\n         do\n         {\n            /*  index calculation for the input as, */\n            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */\n            i1 = i0 + n2;\n            i2 = i1 + n2;\n            i3 = i2 + n2;\n\n            /* xa + xc */\n            r1 = pSrc[(2U * i0)] + pSrc[(2U * i2)];\n\n            /* xa - xc */\n            r2 = pSrc[(2U * i0)] - pSrc[(2U * i2)];\n\n            /* ya + yc */\n            s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U];\n\n            /* ya - yc */\n            s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U];\n\n            /* xb + xd */\n            t1 = pSrc[2U * i1] + pSrc[2U * i3];\n\n            /* xa' = xa + xb + xc + xd */\n            pSrc[2U * i0] = r1 + t1;\n\n            /* xa + xc -(xb + xd) */\n            r1 = r1 - t1;\n\n            /* yb + yd */\n            t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U];\n\n            /* ya' = ya + yb + yc + yd */\n            pSrc[(2U * i0) + 1U] = s1 + t2;\n\n            /* (ya + yc) - (yb + yd) */\n            s1 = s1 - t2;\n\n            /* (yb - yd) */\n            t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U];\n\n            /* (xb - xd) */\n            t2 = pSrc[2U * i1] - pSrc[2U * i3];\n\n            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n            pSrc[2U * i1] = (r1 * co2) - (s1 * si2);\n\n            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n            pSrc[(2U * i1) + 1U] = (s1 * co2) + (r1 * si2);\n\n            /* (xa - xc) - (yb - yd) */\n            r1 = r2 - t1;\n\n            /* (xa - xc) + (yb - yd) */\n            r2 = r2 + t1;\n\n            /* (ya - yc) +  (xb - xd) */\n            s1 = s2 + t2;\n\n            /* (ya - yc) -  (xb - xd) */\n            s2 = s2 - t2;\n\n            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n            pSrc[2U * i2] = (r1 * co1) - (s1 * si1);\n\n            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n            pSrc[(2U * i2) + 1U] = (s1 * co1) + (r1 * si1);\n\n            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n            pSrc[2U * i3] = (r2 * co3) - (s2 * si3);\n\n            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n            pSrc[(2U * i3) + 1U] = (s2 * co3) + (r2 * si3);\n\n            i0 += n1;\n         } while ( i0 < fftLen);\n         j++;\n      } while (j <= (n2 - 1U));\n      twidCoefModifier <<= 2U;\n   }\n   /*  Initializations of last stage */\n   n1 = n2;\n   n2 >>= 2U;\n\n   /*  Calculations of last stage */\n   for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1)\n   {\n      /*  index calculation for the input as, */\n      /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */\n      i1 = i0 + n2;\n      i2 = i1 + n2;\n      i3 = i2 + n2;\n\n      /*  Butterfly implementation */\n      /* xa + xc */\n      r1 = pSrc[2U * i0] + pSrc[2U * i2];\n\n      /* xa - xc */\n      r2 = pSrc[2U * i0] - pSrc[2U * i2];\n\n      /* ya + yc */\n      s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U];\n\n      /* ya - yc */\n      s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U];\n\n      /* xc + xd */\n      t1 = pSrc[2U * i1] + pSrc[2U * i3];\n\n      /* xa' = xa + xb + xc + xd */\n      pSrc[2U * i0] = (r1 + t1) * onebyfftLen;\n\n      /* (xa + xb) - (xc + xd) */\n      r1 = r1 - t1;\n\n      /* yb + yd */\n      t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U];\n\n      /* ya' = ya + yb + yc + yd */\n      pSrc[(2U * i0) + 1U] = (s1 + t2) * onebyfftLen;\n\n      /* (ya + yc) - (yb + yd) */\n      s1 = s1 - t2;\n\n      /* (yb-yd) */\n      t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U];\n\n      /* (xb-xd) */\n      t2 = pSrc[2U * i1] - pSrc[2U * i3];\n\n      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n      pSrc[2U * i1] = r1 * onebyfftLen;\n\n      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n      pSrc[(2U * i1) + 1U] = s1 * onebyfftLen;\n\n      /* (xa - xc) - (yb-yd) */\n      r1 = r2 - t1;\n\n      /* (xa - xc) + (yb-yd) */\n      r2 = r2 + t1;\n\n      /* (ya - yc) + (xb-xd) */\n      s1 = s2 + t2;\n\n      /* (ya - yc) - (xb-xd) */\n      s2 = s2 - t2;\n\n      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n      pSrc[2U * i2] = r1 * onebyfftLen;\n\n      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n      pSrc[(2U * i2) + 1U] = s1 * onebyfftLen;\n\n      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n      pSrc[2U * i3] = r2 * onebyfftLen;\n\n      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n      pSrc[(2U * i3) + 1U] = s2 * onebyfftLen;\n   }\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n}\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix4_init_f32.c\n * Description:  Radix-4 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superceded by \\ref arm_cfft_f32 and will be removed in the future.\n  @param[in,out] S              points to an instance of the floating-point CFFT/CIFFT structure\n  @param[in]     fftLen         length of the FFT\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLen</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   The parameter <code>fftLen</code> Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.\n  @par\n                   This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.\n */\n\narm_status arm_cfft_radix4_init_f32(\n  arm_cfft_radix4_instance_f32 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag)\n{\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n  /*  Initialise the FFT length */\n  S->fftLen = fftLen;\n\n  /*  Initialise the Twiddle coefficient pointer */\n  S->pTwiddle = (float32_t *) twiddleCoef;\n\n  /*  Initialise the Flag for selection of CFFT or CIFFT */\n  S->ifftFlag = ifftFlag;\n\n  /*  Initialise the Flag for calculation Bit reversal or not */\n  S->bitReverseFlag = bitReverseFlag;\n\n  /*  Initializations of structure parameters depending on the FFT length */\n  switch (S->fftLen)\n  {\n\n  case 4096U:\n    /*  Initializations of structure parameters for 4096 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 1U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 1U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) armBitRevTable;\n    /*  Initialise the 1/fftLen Value */\n    S->onebyfftLen = 0.000244140625;\n    break;\n\n  case 1024U:\n    /*  Initializations of structure parameters for 1024 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 4U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 4U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];\n    /*  Initialise the 1/fftLen Value */\n    S->onebyfftLen = 0.0009765625f;\n    break;\n\n\n  case 256U:\n    /*  Initializations of structure parameters for 256 point FFT */\n    S->twidCoefModifier = 16U;\n    S->bitRevFactor = 16U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];\n    S->onebyfftLen = 0.00390625f;\n    break;\n\n  case 64U:\n    /*  Initializations of structure parameters for 64 point FFT */\n    S->twidCoefModifier = 64U;\n    S->bitRevFactor = 64U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];\n    S->onebyfftLen = 0.015625f;\n    break;\n\n  case 16U:\n    /*  Initializations of structure parameters for 16 point FFT */\n    S->twidCoefModifier = 256U;\n    S->bitRevFactor = 256U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];\n    S->onebyfftLen = 0.0625f;\n    break;\n\n\n  default:\n    /*  Reporting argument error if fftSize is not valid value */\n    status = ARM_MATH_ARGUMENT_ERROR;\n    break;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix4_init_q15.c\n * Description:  Radix-4 Decimation in Frequency Q15 FFT & IFFT initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n\n/**\n  @brief Initialization function for the Q15 CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_q15 and will be removed in the future.\n  @param[in,out] S              points to an instance of the Q15 CFFT/CIFFT structure\n  @param[in]     fftLen         length of the FFT\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLen</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   The parameter <code>fftLen</code> Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.\n  @par\n                   This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.\n */\n\narm_status arm_cfft_radix4_init_q15(\n  arm_cfft_radix4_instance_q15 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag)\n{\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n  /*  Initialise the FFT length */\n  S->fftLen = fftLen;\n  /*  Initialise the Twiddle coefficient pointer */\n  S->pTwiddle = (q15_t *) twiddleCoef_4096_q15;\n  /*  Initialise the Flag for selection of CFFT or CIFFT */\n  S->ifftFlag = ifftFlag;\n  /*  Initialise the Flag for calculation Bit reversal or not */\n  S->bitReverseFlag = bitReverseFlag;\n\n  /*  Initializations of structure parameters depending on the FFT length */\n  switch (S->fftLen)\n  {\n  case 4096U:\n    /*  Initializations of structure parameters for 4096 point FFT */\n\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 1U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 1U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) armBitRevTable;\n\n    break;\n\n  case 1024U:\n    /*  Initializations of structure parameters for 1024 point FFT */\n    S->twidCoefModifier = 4U;\n    S->bitRevFactor = 4U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];\n\n    break;\n\n  case 256U:\n    /*  Initializations of structure parameters for 256 point FFT */\n    S->twidCoefModifier = 16U;\n    S->bitRevFactor = 16U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];\n\n    break;\n\n  case 64U:\n    /*  Initializations of structure parameters for 64 point FFT */\n    S->twidCoefModifier = 64U;\n    S->bitRevFactor = 64U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];\n\n    break;\n\n  case 16U:\n    /*  Initializations of structure parameters for 16 point FFT */\n    S->twidCoefModifier = 256U;\n    S->bitRevFactor = 256U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];\n\n    break;\n\n  default:\n    /*  Reporting argument error if fftSize is not valid value */\n    status = ARM_MATH_ARGUMENT_ERROR;\n    break;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix4_init_q31.c\n * Description:  Radix-4 Decimation in Frequency Q31 FFT & IFFT initialization function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n\n  @brief         Initialization function for the Q31 CFFT/CIFFT.\n  @deprecated    Do not use this function. It has been superseded by \\ref arm_cfft_q31 and will be removed in the future.\n  @param[in,out] S              points to an instance of the Q31 CFFT/CIFFT structure.\n  @param[in]     fftLen         length of the FFT.\n  @param[in]     ifftFlag       flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLen</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   The parameter <code>fftLen</code> Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.\n  @par\n                   This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.\n*/\n\narm_status arm_cfft_radix4_init_q31(\n  arm_cfft_radix4_instance_q31 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag)\n{\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n  /*  Initialise the FFT length */\n  S->fftLen = fftLen;\n  /*  Initialise the Twiddle coefficient pointer */\n  S->pTwiddle = (q31_t *) twiddleCoef_4096_q31;\n  /*  Initialise the Flag for selection of CFFT or CIFFT */\n  S->ifftFlag = ifftFlag;\n  /*  Initialise the Flag for calculation Bit reversal or not */\n  S->bitReverseFlag = bitReverseFlag;\n\n  /*  Initializations of Instance structure depending on the FFT length */\n  switch (S->fftLen)\n  {\n    /*  Initializations of structure parameters for 4096 point FFT */\n  case 4096U:\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 1U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 1U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) armBitRevTable;\n    break;\n\n    /*  Initializations of structure parameters for 1024 point FFT */\n  case 1024U:\n    /*  Initialise the twiddle coef modifier value */\n    S->twidCoefModifier = 4U;\n    /*  Initialise the bit reversal table modifier */\n    S->bitRevFactor = 4U;\n    /*  Initialise the bit reversal table pointer */\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];\n    break;\n\n  case 256U:\n    /*  Initializations of structure parameters for 256 point FFT */\n    S->twidCoefModifier = 16U;\n    S->bitRevFactor = 16U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];\n    break;\n\n  case 64U:\n    /*  Initializations of structure parameters for 64 point FFT */\n    S->twidCoefModifier = 64U;\n    S->bitRevFactor = 64U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];\n    break;\n\n  case 16U:\n    /*  Initializations of structure parameters for 16 point FFT */\n    S->twidCoefModifier = 256U;\n    S->bitRevFactor = 256U;\n    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];\n    break;\n\n  default:\n    /*  Reporting argument error if fftSize is not valid value */\n    status = ARM_MATH_ARGUMENT_ERROR;\n    break;\n  }\n\n  return (status);\n}\n\n/**\n  @} end of ComplexFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix4_q15.c\n * Description:  This file has function definition of Radix-4 FFT & IFFT function and\n *               In-place bit reversal using bit reversal table\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n\nvoid arm_radix4_butterfly_q15(\n        q15_t * pSrc16,\n        uint32_t fftLen,\n  const q15_t * pCoef16,\n        uint32_t twidCoefModifier);\n\nvoid arm_radix4_butterfly_inverse_q15(\n        q15_t * pSrc16,\n        uint32_t fftLen,\n  const q15_t * pCoef16,\n        uint32_t twidCoefModifier);\n\nvoid arm_bitreversal_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n\n/**\n  @brief               Processing function for the Q15 CFFT/CIFFT.\n  @deprecated          Do not use this function.  It has been superseded by \\ref arm_cfft_q15 and will be removed in the future.\n  @param[in]     S     points to an instance of the Q15 CFFT/CIFFT structure.\n  @param[in,out] pSrc  points to the complex data buffer. Processing occurs in-place.\n  @return        none\n \n  @par Input and output formats:\n                 Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.\n                 Hence the output format is different for different FFT sizes.\n                 The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT:\n  @par\n                 \\image html CFFTQ15.gif \"Input and Output Formats for Q15 CFFT\"\n                 \\image html CIFFTQ15.gif \"Input and Output Formats for Q15 CIFFT\"\n */\n\nvoid arm_cfft_radix4_q15(\n  const arm_cfft_radix4_instance_q15 * S,\n        q15_t * pSrc)\n{\n  if (S->ifftFlag == 1U)\n  {\n    /*  Complex IFFT radix-4  */\n    arm_radix4_butterfly_inverse_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier);\n  }\n  else\n  {\n    /*  Complex FFT radix-4  */\n    arm_radix4_butterfly_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier);\n  }\n\n  if (S->bitReverseFlag == 1U)\n  {\n    /*  Bit Reversal */\n    arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);\n  }\n\n}\n\n/**\n  @} end of ComplexFFT group\n */\n\n/*\n * Radix-4 FFT algorithm used is :\n *\n * Input real and imaginary data:\n * x(n) = xa + j * ya\n * x(n+N/4 ) = xb + j * yb\n * x(n+N/2 ) = xc + j * yc\n * x(n+3N 4) = xd + j * yd\n *\n *\n * Output real and imaginary data:\n * x(4r) = xa'+ j * ya'\n * x(4r+1) = xb'+ j * yb'\n * x(4r+2) = xc'+ j * yc'\n * x(4r+3) = xd'+ j * yd'\n *\n *\n * Twiddle factors for radix-4 FFT:\n * Wn = co1 + j * (- si1)\n * W2n = co2 + j * (- si2)\n * W3n = co3 + j * (- si3)\n \n * The real and imaginary output values for the radix-4 butterfly are\n * xa' = xa + xb + xc + xd\n * ya' = ya + yb + yc + yd\n * xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)\n * yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)\n * xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)\n * yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)\n * xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)\n * yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)\n *\n */\n\n/**\n  @brief         Core function for the Q15 CFFT butterfly process.\n  @param[in,out] pSrc16          points to the in-place buffer of Q15 data type\n  @param[in]     fftLen           length of the FFT\n  @param[in]     pCoef16         points to twiddle coefficient buffer\n  @param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  @return        none\n */\n\nvoid arm_radix4_butterfly_q15(\n        q15_t * pSrc16,\n        uint32_t fftLen,\n  const q15_t * pCoef16,\n        uint32_t twidCoefModifier)\n{\n\n#if defined (ARM_MATH_DSP)\n\n        q31_t R, S, T, U;\n        q31_t C1, C2, C3, out1, out2;\n        uint32_t n1, n2, ic, i0, j, k;\n\n        q15_t *ptr1;\n        q15_t *pSi0;\n        q15_t *pSi1;\n        q15_t *pSi2;\n        q15_t *pSi3;\n\n        q31_t xaya, xbyb, xcyc, xdyd;\n\n  /* Total process is divided into three stages */\n\n  /* process first stage, middle stages, & last stage */\n\n  /*  Initializations for the first stage */\n  n2 = fftLen;\n  n1 = n2;\n\n  /* n2 = fftLen/4 */\n  n2 >>= 2U;\n\n  /* Index for twiddle coefficient */\n  ic = 0U;\n\n  /* Index for input read and output write */\n  j = n2;\n\n  pSi0 = pSrc16;\n  pSi1 = pSi0 + 2 * n2;\n  pSi2 = pSi1 + 2 * n2;\n  pSi3 = pSi2 + 2 * n2;\n\n  /* Input is in 1.15(q15) format */\n\n  /*  start of first stage process */\n  do\n  {\n    /*  Butterfly implementation */\n\n    /* Reading i0, i0+fftLen/2 inputs */\n    /* Read ya (real), xa(imag) input */\n    T = read_q15x2 (pSi0);\n    T = __SHADD16(T, 0); /* this is just a SIMD arithmetic shift right by 1 */\n    T = __SHADD16(T, 0); /* it turns out doing this twice is 2 cycles, the alternative takes 3 cycles */\n/*\n    in = ((int16_t) (T & 0xFFFF)) >> 2;       // alternative code that takes 3 cycles\n     T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);\n*/\n\n    /* Read yc (real), xc(imag) input */\n    S = read_q15x2 (pSi2);\n    S = __SHADD16(S, 0);\n    S = __SHADD16(S, 0);\n\n    /* R = packed((ya + yc), (xa + xc) ) */\n    R = __QADD16(T, S);\n\n    /* S = packed((ya - yc), (xa - xc) ) */\n    S = __QSUB16(T, S);\n\n    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n    /* Read yb (real), xb(imag) input */\n    T = read_q15x2 (pSi1);\n    T = __SHADD16(T, 0);\n    T = __SHADD16(T, 0);\n\n    /* Read yd (real), xd(imag) input */\n    U = read_q15x2 (pSi3);\n    U = __SHADD16(U, 0);\n    U = __SHADD16(U, 0);\n\n    /* T = packed((yb + yd), (xb + xd) ) */\n    T = __QADD16(T, U);\n\n    /*  writing the butterfly processed i0 sample */\n    /* xa' = xa + xb + xc + xd */\n    /* ya' = ya + yb + yc + yd */\n    write_q15x2_ia (&pSi0, __SHADD16(R, T));\n\n    /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */\n    R = __QSUB16(R, T);\n\n    /* co2 & si2 are read from SIMD Coefficient pointer */\n    C2 = read_q15x2 ((q15_t *) pCoef16 + (4U * ic));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n    out1 = __SMUAD(C2, R) >> 16U;\n    /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n    out2 = __SMUSDX(C2, R);\n#else\n    /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n    out1 = __SMUSDX(R, C2) >> 16U;\n    /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n    out2 = __SMUAD(C2, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /*  Reading i0+fftLen/4 */\n    /* T = packed(yb, xb) */\n    T = read_q15x2 (pSi1);\n    T = __SHADD16(T, 0);\n    T = __SHADD16(T, 0);\n\n    /* writing the butterfly processed i0 + fftLen/4 sample */\n    /* writing output(xc', yc') in little endian format */\n    write_q15x2_ia (&pSi1, (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n    /*  Butterfly calculations */\n    /* U = packed(yd, xd) */\n    U = read_q15x2 (pSi3);\n    U = __SHADD16(U, 0);\n    U = __SHADD16(U, 0);\n\n    /* T = packed(yb-yd, xb-xd) */\n    T = __QSUB16(T, U);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n    R = __QASX(S, T);\n    /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */\n    S = __QSAX(S, T);\n#else\n    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n    R = __QSAX(S, T);\n    /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */\n    S = __QASX(S, T);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* co1 & si1 are read from SIMD Coefficient pointer */\n    C1 = read_q15x2 ((q15_t *) pCoef16 + (2U * ic));\n    /*  Butterfly process for the i0+fftLen/2 sample */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n    out1 = __SMUAD(C1, S) >> 16U;\n    /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n    out2 = __SMUSDX(C1, S);\n#else\n    /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n    out1 = __SMUSDX(S, C1) >> 16U;\n    /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n    out2 = __SMUAD(C1, S);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* writing output(xb', yb') in little endian format */\n    write_q15x2_ia (&pSi2, ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF));\n\n    /* co3 & si3 are read from SIMD Coefficient pointer */\n    C3 = read_q15x2 ((q15_t *) pCoef16 + (6U * ic));\n    /*  Butterfly process for the i0+3fftLen/4 sample */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */\n    out1 = __SMUAD(C3, R) >> 16U;\n    /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */\n    out2 = __SMUSDX(C3, R);\n#else\n    /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */\n    out1 = __SMUSDX(R, C3) >> 16U;\n    /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */\n    out2 = __SMUAD(C3, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* writing output(xd', yd') in little endian format */\n    write_q15x2_ia (&pSi3, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n    /*  Twiddle coefficients index modifier */\n    ic = ic + twidCoefModifier;\n\n  } while (--j);\n  /* data is in 4.11(q11) format */\n\n  /* end of first stage process */\n\n\n  /* start of middle stage process */\n\n  /*  Twiddle coefficients index modifier */\n  twidCoefModifier <<= 2U;\n\n  /*  Calculation of Middle stage */\n  for (k = fftLen / 4U; k > 4U; k >>= 2U)\n  {\n    /*  Initializations for the middle stage */\n    n1 = n2;\n    n2 >>= 2U;\n    ic = 0U;\n\n    for (j = 0U; j <= (n2 - 1U); j++)\n    {\n      /*  index calculation for the coefficients */\n      C1 = read_q15x2 ((q15_t *) pCoef16 + (2U * ic));\n      C2 = read_q15x2 ((q15_t *) pCoef16 + (4U * ic));\n      C3 = read_q15x2 ((q15_t *) pCoef16 + (6U * ic));\n\n      /*  Twiddle coefficients index modifier */\n      ic = ic + twidCoefModifier;\n\n      pSi0 = pSrc16 + 2 * j;\n      pSi1 = pSi0 + 2 * n2;\n      pSi2 = pSi1 + 2 * n2;\n      pSi3 = pSi2 + 2 * n2;\n\n      /*  Butterfly implementation */\n      for (i0 = j; i0 < fftLen; i0 += n1)\n      {\n        /*  Reading i0, i0+fftLen/2 inputs */\n        /* Read ya (real), xa(imag) input */\n        T = read_q15x2 (pSi0);\n\n        /* Read yc (real), xc(imag) input */\n        S = read_q15x2 (pSi2);\n\n        /* R = packed( (ya + yc), (xa + xc)) */\n        R = __QADD16(T, S);\n\n        /* S = packed((ya - yc), (xa - xc)) */\n        S = __QSUB16(T, S);\n\n        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n        /* Read yb (real), xb(imag) input */\n        T = read_q15x2 (pSi1);\n\n        /* Read yd (real), xd(imag) input */\n        U = read_q15x2 (pSi3);\n\n        /* T = packed( (yb + yd), (xb + xd)) */\n        T = __QADD16(T, U);\n\n        /*  writing the butterfly processed i0 sample */\n\n        /* xa' = xa + xb + xc + xd */\n        /* ya' = ya + yb + yc + yd */\n        out1 = __SHADD16(R, T);\n        out1 = __SHADD16(out1, 0);\n        write_q15x2 (pSi0, out1);\n        pSi0 += 2 * n1;\n\n        /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */\n        R = __SHSUB16(R, T);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */\n        out1 = __SMUAD(C2, R) >> 16U;\n\n        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        out2 = __SMUSDX(C2, R);\n#else\n        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        out1 = __SMUSDX(R, C2) >> 16U;\n\n        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */\n        out2 = __SMUAD(C2, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /*  Reading i0+3fftLen/4 */\n        /* Read yb (real), xb(imag) input */\n        T = read_q15x2 (pSi1);\n\n        /*  writing the butterfly processed i0 + fftLen/4 sample */\n        /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n        /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        write_q15x2 (pSi1, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n        pSi1 += 2 * n1;\n\n        /*  Butterfly calculations */\n\n        /* Read yd (real), xd(imag) input */\n        U = read_q15x2 (pSi3);\n\n        /* T = packed(yb-yd, xb-xd) */\n        T = __QSUB16(T, U);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n        R = __SHASX(S, T);\n\n        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */\n        S = __SHSAX(S, T);\n\n\n        /*  Butterfly process for the i0+fftLen/2 sample */\n        out1 = __SMUAD(C1, S) >> 16U;\n        out2 = __SMUSDX(C1, S);\n#else\n        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n        R = __SHSAX(S, T);\n\n        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */\n        S = __SHASX(S, T);\n\n\n        /*  Butterfly process for the i0+fftLen/2 sample */\n        out1 = __SMUSDX(S, C1) >> 16U;\n        out2 = __SMUAD(C1, S);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n        /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n        write_q15x2 (pSi2, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n        pSi2 += 2 * n1;\n\n        /*  Butterfly process for the i0+3fftLen/4 sample */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        out1 = __SMUAD(C3, R) >> 16U;\n        out2 = __SMUSDX(C3, R);\n#else\n        out1 = __SMUSDX(R, C3) >> 16U;\n        out2 = __SMUAD(C3, R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */\n        /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */\n        write_q15x2 (pSi3, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n        pSi3 += 2 * n1;\n      }\n    }\n    /*  Twiddle coefficients index modifier */\n    twidCoefModifier <<= 2U;\n  }\n  /* end of middle stage process */\n\n\n  /* data is in 10.6(q6) format for the 1024 point */\n  /* data is in 8.8(q8) format for the 256 point */\n  /* data is in 6.10(q10) format for the 64 point */\n  /* data is in 4.12(q12) format for the 16 point */\n\n  /*  Initializations for the last stage */\n  j = fftLen >> 2;\n\n  ptr1 = &pSrc16[0];\n\n  /* start of last stage process */\n\n  /*  Butterfly implementation */\n  do\n  {\n    /* Read xa (real), ya(imag) input */\n    xaya = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* Read xb (real), yb(imag) input */\n    xbyb = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* Read xc (real), yc(imag) input */\n    xcyc = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* Read xd (real), yd(imag) input */\n    xdyd = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* R = packed((ya + yc), (xa + xc)) */\n    R = __QADD16(xaya, xcyc);\n\n    /* T = packed((yb + yd), (xb + xd)) */\n    T = __QADD16(xbyb, xdyd);\n\n    /* pointer updation for writing */\n    ptr1 = ptr1 - 8U;\n\n\n    /* xa' = xa + xb + xc + xd */\n    /* ya' = ya + yb + yc + yd */\n    write_q15x2_ia (&ptr1, __SHADD16(R, T));\n\n    /* T = packed((yb + yd), (xb + xd)) */\n    T = __QADD16(xbyb, xdyd);\n\n    /* xc' = (xa-xb+xc-xd) */\n    /* yc' = (ya-yb+yc-yd) */\n    write_q15x2_ia (&ptr1, __SHSUB16(R, T));\n\n    /* S = packed((ya - yc), (xa - xc)) */\n    S = __QSUB16(xaya, xcyc);\n\n    /* Read yd (real), xd(imag) input */\n    /* T = packed( (yb - yd), (xb - xd))  */\n    U = __QSUB16(xbyb, xdyd);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xb' = (xa+yb-xc-yd) */\n    /* yb' = (ya-xb-yc+xd) */\n    write_q15x2_ia (&ptr1, __SHSAX(S, U));\n\n    /* xd' = (xa-yb-xc+yd) */\n    /* yd' = (ya+xb-yc-xd) */\n    write_q15x2_ia (&ptr1, __SHASX(S, U));\n#else\n    /* xb' = (xa+yb-xc-yd) */\n    /* yb' = (ya-xb-yc+xd) */\n    write_q15x2_ia (&ptr1, __SHASX(S, U));\n\n    /* xd' = (xa-yb-xc+yd) */\n    /* yd' = (ya+xb-yc-xd) */\n    write_q15x2_ia (&ptr1, __SHSAX(S, U));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n  } while (--j);\n\n  /* end of last stage process */\n\n  /* output is in 11.5(q5) format for the 1024 point */\n  /* output is in 9.7(q7) format for the 256 point   */\n  /* output is in 7.9(q9) format for the 64 point  */\n  /* output is in 5.11(q11) format for the 16 point  */\n\n\n#else /* #if defined (ARM_MATH_DSP) */\n\n        q15_t R0, R1, S0, S1, T0, T1, U0, U1;\n        q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2;\n        uint32_t n1, n2, ic, i0, i1, i2, i3, j, k;\n\n  /* Total process is divided into three stages */\n\n  /* process first stage, middle stages, & last stage */\n\n  /*  Initializations for the first stage */\n  n2 = fftLen;\n  n1 = n2;\n\n  /* n2 = fftLen/4 */\n  n2 >>= 2U;\n\n  /* Index for twiddle coefficient */\n  ic = 0U;\n\n  /* Index for input read and output write */\n  i0 = 0U;\n  j = n2;\n\n  /* Input is in 1.15(q15) format */\n\n  /*  start of first stage process */\n  do\n  {\n    /*  Butterfly implementation */\n\n    /*  index calculation for the input as, */\n    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */\n    i1 = i0 + n2;\n    i2 = i1 + n2;\n    i3 = i2 + n2;\n\n    /*  Reading i0, i0+fftLen/2 inputs */\n\n    /* input is down scale by 4 to avoid overflow */\n    /* Read ya (real), xa(imag) input */\n    T0 = pSrc16[i0 * 2U] >> 2U;\n    T1 = pSrc16[(i0 * 2U) + 1U] >> 2U;\n\n    /* input is down scale by 4 to avoid overflow */\n    /* Read yc (real), xc(imag) input */\n    S0 = pSrc16[i2 * 2U] >> 2U;\n    S1 = pSrc16[(i2 * 2U) + 1U] >> 2U;\n\n    /* R0 = (ya + yc) */\n    R0 = __SSAT(T0 + S0, 16U);\n    /* R1 = (xa + xc) */\n    R1 = __SSAT(T1 + S1, 16U);\n\n    /* S0 = (ya - yc) */\n    S0 = __SSAT(T0 - S0, 16);\n    /* S1 = (xa - xc) */\n    S1 = __SSAT(T1 - S1, 16);\n\n    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n    /* input is down scale by 4 to avoid overflow */\n    /* Read yb (real), xb(imag) input */\n    T0 = pSrc16[i1 * 2U] >> 2U;\n    T1 = pSrc16[(i1 * 2U) + 1U] >> 2U;\n\n    /* input is down scale by 4 to avoid overflow */\n    /* Read yd (real), xd(imag) input */\n    U0 = pSrc16[i3 * 2U] >> 2U;\n    U1 = pSrc16[(i3 * 2U) + 1] >> 2U;\n\n    /* T0 = (yb + yd) */\n    T0 = __SSAT(T0 + U0, 16U);\n    /* T1 = (xb + xd) */\n    T1 = __SSAT(T1 + U1, 16U);\n\n    /*  writing the butterfly processed i0 sample */\n    /* ya' = ya + yb + yc + yd */\n    /* xa' = xa + xb + xc + xd */\n    pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U);\n    pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U);\n\n    /* R0 = (ya + yc) - (yb + yd) */\n    /* R1 = (xa + xc) - (xb + xd) */\n    R0 = __SSAT(R0 - T0, 16U);\n    R1 = __SSAT(R1 - T1, 16U);\n\n    /* co2 & si2 are read from Coefficient pointer */\n    Co2 = pCoef16[2U * ic * 2U];\n    Si2 = pCoef16[(2U * ic * 2U) + 1];\n\n    /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n    out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16U);\n    /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n    out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U);\n\n    /*  Reading i0+fftLen/4 */\n    /* input is down scale by 4 to avoid overflow */\n    /* T0 = yb, T1 =  xb */\n    T0 = pSrc16[i1 * 2U] >> 2;\n    T1 = pSrc16[(i1 * 2U) + 1] >> 2;\n\n    /* writing the butterfly processed i0 + fftLen/4 sample */\n    /* writing output(xc', yc') in little endian format */\n    pSrc16[i1 * 2U] = out1;\n    pSrc16[(i1 * 2U) + 1] = out2;\n\n    /*  Butterfly calculations */\n    /* input is down scale by 4 to avoid overflow */\n    /* U0 = yd, U1 = xd */\n    U0 = pSrc16[i3 * 2U] >> 2;\n    U1 = pSrc16[(i3 * 2U) + 1] >> 2;\n    /* T0 = yb-yd */\n    T0 = __SSAT(T0 - U0, 16);\n    /* T1 = xb-xd */\n    T1 = __SSAT(T1 - U1, 16);\n\n    /* R1 = (ya-yc) + (xb- xd),  R0 = (xa-xc) - (yb-yd)) */\n    R0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16);\n    R1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16);\n\n    /* S1 = (ya-yc) - (xb- xd), S0 = (xa-xc) + (yb-yd)) */\n    S0 = (q15_t) __SSAT(((q31_t) S0 + T1), 16U);\n    S1 = (q15_t) __SSAT(((q31_t) S1 - T0), 16U);\n\n    /* co1 & si1 are read from Coefficient pointer */\n    Co1 = pCoef16[ic * 2U];\n    Si1 = pCoef16[(ic * 2U) + 1];\n    /*  Butterfly process for the i0+fftLen/2 sample */\n    /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n    out1 = (q15_t) ((Si1 * S1 + Co1 * S0) >> 16);\n    /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n    out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16);\n\n    /* writing output(xb', yb') in little endian format */\n    pSrc16[i2 * 2U] = out1;\n    pSrc16[(i2 * 2U) + 1] = out2;\n\n    /* Co3 & si3 are read from Coefficient pointer */\n    Co3 = pCoef16[3U * (ic * 2U)];\n    Si3 = pCoef16[(3U * (ic * 2U)) + 1];\n    /*  Butterfly process for the i0+3fftLen/4 sample */\n    /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */\n    out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16U);\n    /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */\n    out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U);\n    /* writing output(xd', yd') in little endian format */\n    pSrc16[i3 * 2U] = out1;\n    pSrc16[(i3 * 2U) + 1] = out2;\n\n    /*  Twiddle coefficients index modifier */\n    ic = ic + twidCoefModifier;\n\n    /*  Updating input index */\n    i0 = i0 + 1U;\n\n  } while (--j);\n  /* data is in 4.11(q11) format */\n\n  /* end of first stage process */\n\n\n  /* start of middle stage process */\n\n  /*  Twiddle coefficients index modifier */\n  twidCoefModifier <<= 2U;\n\n  /*  Calculation of Middle stage */\n  for (k = fftLen / 4U; k > 4U; k >>= 2U)\n  {\n    /*  Initializations for the middle stage */\n    n1 = n2;\n    n2 >>= 2U;\n    ic = 0U;\n\n    for (j = 0U; j <= (n2 - 1U); j++)\n    {\n      /*  index calculation for the coefficients */\n      Co1 = pCoef16[ic * 2U];\n      Si1 = pCoef16[(ic * 2U) + 1U];\n      Co2 = pCoef16[2U * (ic * 2U)];\n      Si2 = pCoef16[(2U * (ic * 2U)) + 1U];\n      Co3 = pCoef16[3U * (ic * 2U)];\n      Si3 = pCoef16[(3U * (ic * 2U)) + 1U];\n\n      /*  Twiddle coefficients index modifier */\n      ic = ic + twidCoefModifier;\n\n      /*  Butterfly implementation */\n      for (i0 = j; i0 < fftLen; i0 += n1)\n      {\n        /*  index calculation for the input as, */\n        /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */\n        i1 = i0 + n2;\n        i2 = i1 + n2;\n        i3 = i2 + n2;\n\n        /*  Reading i0, i0+fftLen/2 inputs */\n        /* Read ya (real), xa(imag) input */\n        T0 = pSrc16[i0 * 2U];\n        T1 = pSrc16[(i0 * 2U) + 1U];\n\n        /* Read yc (real), xc(imag) input */\n        S0 = pSrc16[i2 * 2U];\n        S1 = pSrc16[(i2 * 2U) + 1U];\n\n        /* R0 = (ya + yc), R1 = (xa + xc) */\n        R0 = __SSAT(T0 + S0, 16);\n        R1 = __SSAT(T1 + S1, 16);\n\n        /* S0 = (ya - yc), S1 =(xa - xc) */\n        S0 = __SSAT(T0 - S0, 16);\n        S1 = __SSAT(T1 - S1, 16);\n\n        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n        /* Read yb (real), xb(imag) input */\n        T0 = pSrc16[i1 * 2U];\n        T1 = pSrc16[(i1 * 2U) + 1U];\n\n        /* Read yd (real), xd(imag) input */\n        U0 = pSrc16[i3 * 2U];\n        U1 = pSrc16[(i3 * 2U) + 1U];\n\n\n        /* T0 = (yb + yd), T1 = (xb + xd) */\n        T0 = __SSAT(T0 + U0, 16);\n        T1 = __SSAT(T1 + U1, 16);\n\n        /*  writing the butterfly processed i0 sample */\n\n        /* xa' = xa + xb + xc + xd */\n        /* ya' = ya + yb + yc + yd */\n        out1 = ((R0 >> 1U) + (T0 >> 1U)) >> 1U;\n        out2 = ((R1 >> 1U) + (T1 >> 1U)) >> 1U;\n\n        pSrc16[i0 * 2U] = out1;\n        pSrc16[(2U * i0) + 1U] = out2;\n\n        /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */\n        R0 = (R0 >> 1U) - (T0 >> 1U);\n        R1 = (R1 >> 1U) - (T1 >> 1U);\n\n        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */\n        out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16U);\n\n        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U);\n\n        /*  Reading i0+3fftLen/4 */\n        /* Read yb (real), xb(imag) input */\n        T0 = pSrc16[i1 * 2U];\n        T1 = pSrc16[(i1 * 2U) + 1U];\n\n        /*  writing the butterfly processed i0 + fftLen/4 sample */\n        /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n        /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        pSrc16[i1 * 2U] = out1;\n        pSrc16[(i1 * 2U) + 1U] = out2;\n\n        /*  Butterfly calculations */\n\n        /* Read yd (real), xd(imag) input */\n        U0 = pSrc16[i3 * 2U];\n        U1 = pSrc16[(i3 * 2U) + 1U];\n\n        /* T0 = yb-yd, T1 = xb-xd */\n        T0 = __SSAT(T0 - U0, 16);\n        T1 = __SSAT(T1 - U1, 16);\n\n        /* R0 = (ya-yc) + (xb- xd), R1 = (xa-xc) - (yb-yd)) */\n        R0 = (S0 >> 1U) - (T1 >> 1U);\n        R1 = (S1 >> 1U) + (T0 >> 1U);\n\n        /* S0 = (ya-yc) - (xb- xd), S1 = (xa-xc) + (yb-yd)) */\n        S0 = (S0 >> 1U) + (T1 >> 1U);\n        S1 = (S1 >> 1U) - (T0 >> 1U);\n\n        /*  Butterfly process for the i0+fftLen/2 sample */\n        out1 = (q15_t) ((Co1 * S0 + Si1 * S1) >> 16U);\n\n        out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16U);\n\n        /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n        /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n        pSrc16[i2 * 2U] = out1;\n        pSrc16[(i2 * 2U) + 1U] = out2;\n\n        /*  Butterfly process for the i0+3fftLen/4 sample */\n        out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16U);\n\n        out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U);\n        /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */\n        /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */\n        pSrc16[i3 * 2U] = out1;\n        pSrc16[(i3 * 2U) + 1U] = out2;\n      }\n    }\n    /*  Twiddle coefficients index modifier */\n    twidCoefModifier <<= 2U;\n  }\n  /* end of middle stage process */\n\n\n  /* data is in 10.6(q6) format for the 1024 point */\n  /* data is in 8.8(q8) format for the 256 point */\n  /* data is in 6.10(q10) format for the 64 point */\n  /* data is in 4.12(q12) format for the 16 point */\n\n  /*  Initializations for the last stage */\n  n1 = n2;\n  n2 >>= 2U;\n\n  /* start of last stage process */\n\n  /*  Butterfly implementation */\n  for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1)\n  {\n    /*  index calculation for the input as, */\n    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */\n    i1 = i0 + n2;\n    i2 = i1 + n2;\n    i3 = i2 + n2;\n\n    /*  Reading i0, i0+fftLen/2 inputs */\n    /* Read ya (real), xa(imag) input */\n    T0 = pSrc16[i0 * 2U];\n    T1 = pSrc16[(i0 * 2U) + 1U];\n\n    /* Read yc (real), xc(imag) input */\n    S0 = pSrc16[i2 * 2U];\n    S1 = pSrc16[(i2 * 2U) + 1U];\n\n    /* R0 = (ya + yc), R1 = (xa + xc) */\n    R0 = __SSAT(T0 + S0, 16U);\n    R1 = __SSAT(T1 + S1, 16U);\n\n    /* S0 = (ya - yc), S1 = (xa - xc) */\n    S0 = __SSAT(T0 - S0, 16U);\n    S1 = __SSAT(T1 - S1, 16U);\n\n    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n    /* Read yb (real), xb(imag) input */\n    T0 = pSrc16[i1 * 2U];\n    T1 = pSrc16[(i1 * 2U) + 1U];\n    /* Read yd (real), xd(imag) input */\n    U0 = pSrc16[i3 * 2U];\n    U1 = pSrc16[(i3 * 2U) + 1U];\n\n    /* T0 = (yb + yd), T1 = (xb + xd)) */\n    T0 = __SSAT(T0 + U0, 16U);\n    T1 = __SSAT(T1 + U1, 16U);\n\n    /*  writing the butterfly processed i0 sample */\n    /* xa' = xa + xb + xc + xd */\n    /* ya' = ya + yb + yc + yd */\n    pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U);\n    pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U);\n\n    /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */\n    R0 = (R0 >> 1U) - (T0 >> 1U);\n    R1 = (R1 >> 1U) - (T1 >> 1U);\n    /* Read yb (real), xb(imag) input */\n    T0 = pSrc16[i1 * 2U];\n    T1 = pSrc16[(i1 * 2U) + 1U];\n\n    /*  writing the butterfly processed i0 + fftLen/4 sample */\n    /* xc' = (xa-xb+xc-xd) */\n    /* yc' = (ya-yb+yc-yd) */\n    pSrc16[i1 * 2U] = R0;\n    pSrc16[(i1 * 2U) + 1U] = R1;\n\n    /* Read yd (real), xd(imag) input */\n    U0 = pSrc16[i3 * 2U];\n    U1 = pSrc16[(i3 * 2U) + 1U];\n    /* T0 = (yb - yd), T1 = (xb - xd)  */\n    T0 = __SSAT(T0 - U0, 16U);\n    T1 = __SSAT(T1 - U1, 16U);\n\n    /*  writing the butterfly processed i0 + fftLen/2 sample */\n    /* xb' = (xa+yb-xc-yd) */\n    /* yb' = (ya-xb-yc+xd) */\n    pSrc16[i2 * 2U] = (S0 >> 1U) + (T1 >> 1U);\n    pSrc16[(i2 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U);\n\n    /*  writing the butterfly processed i0 + 3fftLen/4 sample */\n    /* xd' = (xa-yb-xc+yd) */\n    /* yd' = (ya+xb-yc-xd) */\n    pSrc16[i3 * 2U] = (S0 >> 1U) - (T1 >> 1U);\n    pSrc16[(i3 * 2U) + 1U] = (S1 >> 1U) + (T0 >> 1U);\n\n  }\n\n  /* end of last stage process */\n\n  /* output is in 11.5(q5) format for the 1024 point */\n  /* output is in 9.7(q7) format for the 256 point   */\n  /* output is in 7.9(q9) format for the 64 point  */\n  /* output is in 5.11(q11) format for the 16 point  */\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n\n\n/**\n  @brief         Core function for the Q15 CIFFT butterfly process.\n  @param[in,out] pSrc16           points to the in-place buffer of Q15 data type\n  @param[in]     fftLen           length of the FFT\n  @param[in]     pCoef16          points to twiddle coefficient buffer\n  @param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\n  @return        none\n */\n\n/*\n * Radix-4 IFFT algorithm used is :\n *\n * CIFFT uses same twiddle coefficients as CFFT function\n *  x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4]\n *\n *\n * IFFT is implemented with following changes in equations from FFT\n *\n * Input real and imaginary data:\n * x(n) = xa + j * ya\n * x(n+N/4 ) = xb + j * yb\n * x(n+N/2 ) = xc + j * yc\n * x(n+3N 4) = xd + j * yd\n *\n *\n * Output real and imaginary data:\n * x(4r) = xa'+ j * ya'\n * x(4r+1) = xb'+ j * yb'\n * x(4r+2) = xc'+ j * yc'\n * x(4r+3) = xd'+ j * yd'\n *\n *\n * Twiddle factors for radix-4 IFFT:\n * Wn = co1 + j * (si1)\n * W2n = co2 + j * (si2)\n * W3n = co3 + j * (si3)\n \n * The real and imaginary output values for the radix-4 butterfly are\n * xa' = xa + xb + xc + xd\n * ya' = ya + yb + yc + yd\n * xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1)\n * yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1)\n * xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2)\n * yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2)\n * xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3)\n * yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3)\n *\n */\n\nvoid arm_radix4_butterfly_inverse_q15(\n        q15_t * pSrc16,\n        uint32_t fftLen,\n  const q15_t * pCoef16,\n        uint32_t twidCoefModifier)\n{\n\n#if defined (ARM_MATH_DSP)\n\n        q31_t R, S, T, U;\n        q31_t C1, C2, C3, out1, out2;\n        uint32_t n1, n2, ic, i0, j, k;\n        \n        q15_t *ptr1;\n        q15_t *pSi0;\n        q15_t *pSi1;\n        q15_t *pSi2;\n        q15_t *pSi3;\n        \n        q31_t xaya, xbyb, xcyc, xdyd;\n\n  /* Total process is divided into three stages */\n\n  /* process first stage, middle stages, & last stage */\n\n  /*  Initializations for the first stage */\n  n2 = fftLen;\n  n1 = n2;\n\n  /* n2 = fftLen/4 */\n  n2 >>= 2U;\n\n  /* Index for twiddle coefficient */\n  ic = 0U;\n\n  /* Index for input read and output write */\n  j = n2;\n\n  pSi0 = pSrc16;\n  pSi1 = pSi0 + 2 * n2;\n  pSi2 = pSi1 + 2 * n2;\n  pSi3 = pSi2 + 2 * n2;\n\n  /* Input is in 1.15(q15) format */\n\n  /*  start of first stage process */\n  do\n  {\n    /*  Butterfly implementation */\n\n    /*  Reading i0, i0+fftLen/2 inputs */\n    /* Read ya (real), xa(imag) input */\n    T = read_q15x2 (pSi0);\n    T = __SHADD16(T, 0);\n    T = __SHADD16(T, 0);\n\n    /* Read yc (real), xc(imag) input */\n    S = read_q15x2 (pSi2);\n    S = __SHADD16(S, 0);\n    S = __SHADD16(S, 0);\n\n    /* R = packed((ya + yc), (xa + xc) ) */\n    R = __QADD16(T, S);\n\n    /* S = packed((ya - yc), (xa - xc) ) */\n    S = __QSUB16(T, S);\n\n    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n    /* Read yb (real), xb(imag) input */\n    T = read_q15x2 (pSi1);\n    T = __SHADD16(T, 0);\n    T = __SHADD16(T, 0);\n\n    /* Read yd (real), xd(imag) input */\n    U = read_q15x2 (pSi3);\n    U = __SHADD16(U, 0);\n    U = __SHADD16(U, 0);\n\n    /* T = packed((yb + yd), (xb + xd) ) */\n    T = __QADD16(T, U);\n\n    /*  writing the butterfly processed i0 sample */\n    /* xa' = xa + xb + xc + xd */\n    /* ya' = ya + yb + yc + yd */\n    write_q15x2_ia (&pSi0, __SHADD16(R, T));\n\n    /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */\n    R = __QSUB16(R, T);\n\n    /* co2 & si2 are read from SIMD Coefficient pointer */\n    C2 = read_q15x2 ((q15_t *) pCoef16 + (4U * ic));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n    out1 = __SMUSD(C2, R) >> 16U;\n    /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n    out2 = __SMUADX(C2, R);\n#else\n    /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n    out1 = __SMUADX(C2, R) >> 16U;\n    /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n    out2 = __SMUSD(__QSUB16(0, C2), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /*  Reading i0+fftLen/4 */\n    /* T = packed(yb, xb) */\n    T = read_q15x2 (pSi1);\n    T = __SHADD16(T, 0);\n    T = __SHADD16(T, 0);\n\n    /* writing the butterfly processed i0 + fftLen/4 sample */\n    /* writing output(xc', yc') in little endian format */\n    write_q15x2_ia (&pSi1, (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n    /*  Butterfly calculations */\n    /* U = packed(yd, xd) */\n    U = read_q15x2 (pSi3);\n    U = __SHADD16(U, 0);\n    U = __SHADD16(U, 0);\n\n    /* T = packed(yb-yd, xb-xd) */\n    T = __QSUB16(T, U);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n    R = __QSAX(S, T);\n    /* S = packed((ya-yc) + (xb- xd),  (xa-xc) - (yb-yd)) */\n    S = __QASX(S, T);\n#else\n    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n    R = __QASX(S, T);\n    /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */\n    S = __QSAX(S, T);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* co1 & si1 are read from SIMD Coefficient pointer */\n    C1 = read_q15x2 ((q15_t *) pCoef16 + (2U * ic));\n    /*  Butterfly process for the i0+fftLen/2 sample */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n    out1 = __SMUSD(C1, S) >> 16U;\n    /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n    out2 = __SMUADX(C1, S);\n#else\n    /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n    out1 = __SMUADX(C1, S) >> 16U;\n    /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n    out2 = __SMUSD(__QSUB16(0, C1), S);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* writing output(xb', yb') in little endian format */\n    write_q15x2_ia (&pSi2, ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF));\n\n    /* co3 & si3 are read from SIMD Coefficient pointer */\n    C3 = read_q15x2 ((q15_t *) pCoef16 + (6U * ic));\n    /*  Butterfly process for the i0+3fftLen/4 sample */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */\n    out1 = __SMUSD(C3, R) >> 16U;\n    /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */\n    out2 = __SMUADX(C3, R);\n#else\n    /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */\n    out1 = __SMUADX(C3, R) >> 16U;\n    /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */\n    out2 = __SMUSD(__QSUB16(0, C3), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* writing output(xd', yd') in little endian format */\n    write_q15x2_ia (&pSi3, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n\n    /*  Twiddle coefficients index modifier */\n    ic = ic + twidCoefModifier;\n\n  } while (--j);\n  /* data is in 4.11(q11) format */\n\n  /* end of first stage process */\n\n\n  /* start of middle stage process */\n\n  /*  Twiddle coefficients index modifier */\n  twidCoefModifier <<= 2U;\n\n  /*  Calculation of Middle stage */\n  for (k = fftLen / 4U; k > 4U; k >>= 2U)\n  {\n    /*  Initializations for the middle stage */\n    n1 = n2;\n    n2 >>= 2U;\n    ic = 0U;\n\n    for (j = 0U; j <= (n2 - 1U); j++)\n    {\n      /*  index calculation for the coefficients */\n      C1 = read_q15x2 ((q15_t *) pCoef16 + (2U * ic));\n      C2 = read_q15x2 ((q15_t *) pCoef16 + (4U * ic));\n      C3 = read_q15x2 ((q15_t *) pCoef16 + (6U * ic));\n\n      /*  Twiddle coefficients index modifier */\n      ic = ic + twidCoefModifier;\n\n      pSi0 = pSrc16 + 2 * j;\n      pSi1 = pSi0 + 2 * n2;\n      pSi2 = pSi1 + 2 * n2;\n      pSi3 = pSi2 + 2 * n2;\n\n      /*  Butterfly implementation */\n      for (i0 = j; i0 < fftLen; i0 += n1)\n      {\n        /*  Reading i0, i0+fftLen/2 inputs */\n        /* Read ya (real), xa(imag) input */\n        T = read_q15x2 (pSi0);\n\n        /* Read yc (real), xc(imag) input */\n        S = read_q15x2 (pSi2);\n\n        /* R = packed( (ya + yc), (xa + xc)) */\n        R = __QADD16(T, S);\n\n        /* S = packed((ya - yc), (xa - xc)) */\n        S = __QSUB16(T, S);\n\n        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n        /* Read yb (real), xb(imag) input */\n        T = read_q15x2 (pSi1);\n\n        /* Read yd (real), xd(imag) input */\n        U = read_q15x2 (pSi3);\n\n        /* T = packed( (yb + yd), (xb + xd)) */\n        T = __QADD16(T, U);\n\n        /*  writing the butterfly processed i0 sample */\n\n        /* xa' = xa + xb + xc + xd */\n        /* ya' = ya + yb + yc + yd */\n        out1 = __SHADD16(R, T);\n        out1 = __SHADD16(out1, 0);\n        write_q15x2 (pSi0, out1);\n        pSi0 += 2 * n1;\n\n        /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */\n        R = __SHSUB16(R, T);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */\n        out1 = __SMUSD(C2, R) >> 16U;\n\n        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        out2 = __SMUADX(C2, R);\n#else\n        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        out1 = __SMUADX(R, C2) >> 16U;\n\n        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */\n        out2 = __SMUSD(__QSUB16(0, C2), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /*  Reading i0+3fftLen/4 */\n        /* Read yb (real), xb(imag) input */\n        T = read_q15x2 (pSi1);\n\n        /*  writing the butterfly processed i0 + fftLen/4 sample */\n        /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */\n        /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */\n        write_q15x2 (pSi1, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n        pSi1 += 2 * n1;\n\n        /*  Butterfly calculations */\n\n        /* Read yd (real), xd(imag) input */\n        U = read_q15x2 (pSi3);\n\n        /* T = packed(yb-yd, xb-xd) */\n        T = __QSUB16(T, U);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n        R = __SHSAX(S, T);\n\n        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */\n        S = __SHASX(S, T);\n\n        /*  Butterfly process for the i0+fftLen/2 sample */\n        out1 = __SMUSD(C1, S) >> 16U;\n        out2 = __SMUADX(C1, S);\n#else\n        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */\n        R = __SHASX(S, T);\n\n        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */\n        S = __SHSAX(S, T);\n\n        /*  Butterfly process for the i0+fftLen/2 sample */\n        out1 = __SMUADX(S, C1) >> 16U;\n        out2 = __SMUSD(__QSUB16(0, C1), S);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */\n        /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */\n        write_q15x2 (pSi2, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n        pSi2 += 2 * n1;\n\n        /*  Butterfly process for the i0+3fftLen/4 sample */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        out1 = __SMUSD(C3, R) >> 16U;\n        out2 = __SMUADX(C3, R);\n#else\n        out1 = __SMUADX(C3, R) >> 16U;\n        out2 = __SMUSD(__QSUB16(0, C3), R);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */\n        /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */\n        write_q15x2 (pSi3, ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF));\n        pSi3 += 2 * n1;\n      }\n    }\n    /*  Twiddle coefficients index modifier */\n    twidCoefModifier <<= 2U;\n  }\n  /* end of middle stage process */\n\n  /* data is in 10.6(q6) format for the 1024 point */\n  /* data is in 8.8(q8) format for the 256 point */\n  /* data is in 6.10(q10) format for the 64 point */\n  /* data is in 4.12(q12) format for the 16 point */\n\n  /*  Initializations for the last stage */\n  j = fftLen >> 2;\n\n  ptr1 = &pSrc16[0];\n\n  /* start of last stage process */\n\n  /*  Butterfly implementation */\n  do\n  {\n    /* Read xa (real), ya(imag) input */\n    xaya = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* Read xb (real), yb(imag) input */\n    xbyb = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* Read xc (real), yc(imag) input */\n    xcyc = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* Read xd (real), yd(imag) input */\n    xdyd = read_q15x2_ia ((q15_t **) &ptr1);\n\n    /* R = packed((ya + yc), (xa + xc)) */\n    R = __QADD16(xaya, xcyc);\n\n    /* T = packed((yb + yd), (xb + xd)) */\n    T = __QADD16(xbyb, xdyd);\n\n    /* pointer updation for writing */\n    ptr1 = ptr1 - 8U;\n\n\n    /* xa' = xa + xb + xc + xd */\n    /* ya' = ya + yb + yc + yd */\n    write_q15x2_ia (&ptr1, __SHADD16(R, T));\n\n    /* T = packed((yb + yd), (xb + xd)) */\n    T = __QADD16(xbyb, xdyd);\n\n    /* xc' = (xa-xb+xc-xd) */\n    /* yc' = (ya-yb+yc-yd) */\n    write_q15x2_ia (&ptr1, __SHSUB16(R, T));\n\n    /* S = packed((ya - yc), (xa - xc)) */\n    S = __QSUB16(xaya, xcyc);\n\n    /* Read yd (real), xd(imag) input */\n    /* T = packed( (yb - yd), (xb - xd))  */\n    U = __QSUB16(xbyb, xdyd);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n    /* xb' = (xa+yb-xc-yd) */\n    /* yb' = (ya-xb-yc+xd) */\n    write_q15x2_ia (&ptr1, __SHASX(S, U));\n\n    /* xd' = (xa-yb-xc+yd) */\n    /* yd' = (ya+xb-yc-xd) */\n    write_q15x2_ia (&ptr1, __SHSAX(S, U));\n#else\n    /* xb' = (xa+yb-xc-yd) */\n    /* yb' = (ya-xb-yc+xd) */\n    write_q15x2_ia (&ptr1, __SHSAX(S, U));\n\n    /* xd' = (xa-yb-xc+yd) */\n    /* yd' = (ya+xb-yc-xd) */\n    write_q15x2_ia (&ptr1, __SHASX(S, U));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n  } while (--j);\n\n  /* end of last stage  process */\n\n  /* output is in 11.5(q5) format for the 1024 point */\n  /* output is in 9.7(q7) format for the 256 point   */\n  /* output is in 7.9(q9) format for the 64 point  */\n  /* output is in 5.11(q11) format for the 16 point  */\n\n\n#else /* arm_radix4_butterfly_inverse_q15 */\n\n        q15_t R0, R1, S0, S1, T0, T1, U0, U1;\n        q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2;\n        uint32_t n1, n2, ic, i0, i1, i2, i3, j, k;\n\n  /* Total process is divided into three stages */\n\n  /* process first stage, middle stages, & last stage */\n\n  /*  Initializations for the first stage */\n  n2 = fftLen;\n  n1 = n2;\n\n  /* n2 = fftLen/4 */\n  n2 >>= 2U;\n\n  /* Index for twiddle coefficient */\n  ic = 0U;\n\n  /* Index for input read and output write */\n  i0 = 0U;\n\n  j = n2;\n\n  /* Input is in 1.15(q15) format */\n\n  /*  Start of first stage process */\n  do\n  {\n    /*  Butterfly implementation */\n\n    /*  index calculation for the input as, */\n    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */\n    i1 = i0 + n2;\n    i2 = i1 + n2;\n    i3 = i2 + n2;\n\n    /*  Reading i0, i0+fftLen/2 inputs */\n    /* input is down scale by 4 to avoid overflow */\n    /* Read ya (real), xa(imag) input */\n    T0 = pSrc16[i0 * 2U] >> 2U;\n    T1 = pSrc16[(i0 * 2U) + 1U] >> 2U;\n    /* input is down scale by 4 to avoid overflow */\n    /* Read yc (real), xc(imag) input */\n    S0 = pSrc16[i2 * 2U] >> 2U;\n    S1 = pSrc16[(i2 * 2U) + 1U] >> 2U;\n\n    /* R0 = (ya + yc), R1 = (xa + xc) */\n    R0 = __SSAT(T0 + S0, 16U);\n    R1 = __SSAT(T1 + S1, 16U);\n    /* S0 = (ya - yc), S1 = (xa - xc) */\n    S0 = __SSAT(T0 - S0, 16U);\n    S1 = __SSAT(T1 - S1, 16U);\n\n    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n    /* input is down scale by 4 to avoid overflow */\n    /* Read yb (real), xb(imag) input */\n    T0 = pSrc16[i1 * 2U] >> 2U;\n    T1 = pSrc16[(i1 * 2U) + 1U] >> 2U;\n    /* Read yd (real), xd(imag) input */\n    /* input is down scale by 4 to avoid overflow */\n    U0 = pSrc16[i3 * 2U] >> 2U;\n    U1 = pSrc16[(i3 * 2U) + 1U] >> 2U;\n\n    /* T0 = (yb + yd), T1 = (xb + xd) */\n    T0 = __SSAT(T0 + U0, 16U);\n    T1 = __SSAT(T1 + U1, 16U);\n\n    /*  writing the butterfly processed i0 sample */\n    /* xa' = xa + xb + xc + xd */\n    /* ya' = ya + yb + yc + yd */\n    pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U);\n    pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U);\n\n    /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc)- (xb + xd) */\n    R0 = __SSAT(R0 - T0, 16U);\n    R1 = __SSAT(R1 - T1, 16U);\n    /* co2 & si2 are read from Coefficient pointer */\n    Co2 = pCoef16[2U * ic * 2U];\n    Si2 = pCoef16[(2U * ic * 2U) + 1U];\n    /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */\n    out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16U);\n    /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */\n    out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16U);\n\n    /*  Reading i0+fftLen/4 */\n    /* input is down scale by 4 to avoid overflow */\n    /* T0 = yb, T1 = xb */\n    T0 = pSrc16[i1 * 2U] >> 2U;\n    T1 = pSrc16[(i1 * 2U) + 1U] >> 2U;\n\n    /* writing the butterfly processed i0 + fftLen/4 sample */\n    /* writing output(xc', yc') in little endian format */\n    pSrc16[i1 * 2U] = out1;\n    pSrc16[(i1 * 2U) + 1U] = out2;\n\n    /*  Butterfly calculations */\n    /* input is down scale by 4 to avoid overflow */\n    /* U0 = yd, U1 = xd) */\n    U0 = pSrc16[i3 * 2U] >> 2U;\n    U1 = pSrc16[(i3 * 2U) + 1U] >> 2U;\n\n    /* T0 = yb-yd, T1 = xb-xd) */\n    T0 = __SSAT(T0 - U0, 16U);\n    T1 = __SSAT(T1 - U1, 16U);\n    /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */\n    R0 = (q15_t) __SSAT((q31_t) (S0 + T1), 16);\n    R1 = (q15_t) __SSAT((q31_t) (S1 - T0), 16);\n    /* S = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */\n    S0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16);\n    S1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16);\n\n    /* co1 & si1 are read from Coefficient pointer */\n    Co1 = pCoef16[ic * 2U];\n    Si1 = pCoef16[(ic * 2U) + 1U];\n    /*  Butterfly process for the i0+fftLen/2 sample */\n    /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */\n    out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U);\n    /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */\n    out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16U);\n    /* writing output(xb', yb') in little endian format */\n    pSrc16[i2 * 2U] = out1;\n    pSrc16[(i2 * 2U) + 1U] = out2;\n\n    /* Co3 & si3 are read from Coefficient pointer */\n    Co3 = pCoef16[3U * ic * 2U];\n    Si3 = pCoef16[(3U * ic * 2U) + 1U];\n    /*  Butterfly process for the i0+3fftLen/4 sample */\n    /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */\n    out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U);\n    /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */\n    out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16U);\n    /* writing output(xd', yd') in little endian format */\n    pSrc16[i3 * 2U] = out1;\n    pSrc16[(i3 * 2U) + 1U] = out2;\n\n    /*  Twiddle coefficients index modifier */\n    ic = ic + twidCoefModifier;\n\n    /*  Updating input index */\n    i0 = i0 + 1U;\n\n  } while (--j);\n\n  /*  End of first stage process */\n\n  /* data is in 4.11(q11) format */\n\n\n  /*  Start of Middle stage process */\n\n  /*  Twiddle coefficients index modifier */\n  twidCoefModifier <<= 2U;\n\n  /*  Calculation of Middle stage */\n  for (k = fftLen / 4U; k > 4U; k >>= 2U)\n  {\n    /*  Initializations for the middle stage */\n    n1 = n2;\n    n2 >>= 2U;\n    ic = 0U;\n\n    for (j = 0U; j <= (n2 - 1U); j++)\n    {\n      /*  index calculation for the coefficients */\n      Co1 = pCoef16[ic * 2U];\n      Si1 = pCoef16[(ic * 2U) + 1U];\n      Co2 = pCoef16[2U * ic * 2U];\n      Si2 = pCoef16[2U * ic * 2U + 1U];\n      Co3 = pCoef16[3U * ic * 2U];\n      Si3 = pCoef16[(3U * ic * 2U) + 1U];\n\n      /*  Twiddle coefficients index modifier */\n      ic = ic + twidCoefModifier;\n\n      /*  Butterfly implementation */\n      for (i0 = j; i0 < fftLen; i0 += n1)\n      {\n        /*  index calculation for the input as, */\n        /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */\n        i1 = i0 + n2;\n        i2 = i1 + n2;\n        i3 = i2 + n2;\n\n        /*  Reading i0, i0+fftLen/2 inputs */\n        /* Read ya (real), xa(imag) input */\n        T0 = pSrc16[i0 * 2U];\n        T1 = pSrc16[(i0 * 2U) + 1U];\n\n        /* Read yc (real), xc(imag) input */\n        S0 = pSrc16[i2 * 2U];\n        S1 = pSrc16[(i2 * 2U) + 1U];\n\n\n        /* R0 = (ya + yc), R1 = (xa + xc) */\n        R0 = __SSAT(T0 + S0, 16U);\n        R1 = __SSAT(T1 + S1, 16U);\n        /* S0 = (ya - yc), S1 = (xa - xc) */\n        S0 = __SSAT(T0 - S0, 16U);\n        S1 = __SSAT(T1 - S1, 16U);\n\n        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n        /* Read yb (real), xb(imag) input */\n        T0 = pSrc16[i1 * 2U];\n        T1 = pSrc16[(i1 * 2U) + 1U];\n\n        /* Read yd (real), xd(imag) input */\n        U0 = pSrc16[i3 * 2U];\n        U1 = pSrc16[(i3 * 2U) + 1U];\n\n        /* T0 = (yb + yd), T1 = (xb + xd) */\n        T0 = __SSAT(T0 + U0, 16U);\n        T1 = __SSAT(T1 + U1, 16U);\n\n        /*  writing the butterfly processed i0 sample */\n        /* xa' = xa + xb + xc + xd */\n        /* ya' = ya + yb + yc + yd */\n        pSrc16[i0 * 2U] = ((R0 >> 1U) + (T0 >> 1U)) >> 1U;\n        pSrc16[(i0 * 2U) + 1U] = ((R1 >> 1U) + (T1 >> 1U)) >> 1U;\n\n        /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */\n        R0 = (R0 >> 1U) - (T0 >> 1U);\n        R1 = (R1 >> 1U) - (T1 >> 1U);\n\n        /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */\n        out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16);\n        /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */\n        out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16);\n\n        /*  Reading i0+3fftLen/4 */\n        /* Read yb (real), xb(imag) input */\n        T0 = pSrc16[i1 * 2U];\n        T1 = pSrc16[(i1 * 2U) + 1U];\n\n        /*  writing the butterfly processed i0 + fftLen/4 sample */\n        /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */\n        /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */\n        pSrc16[i1 * 2U] = out1;\n        pSrc16[(i1 * 2U) + 1U] = out2;\n\n        /*  Butterfly calculations */\n        /* Read yd (real), xd(imag) input */\n        U0 = pSrc16[i3 * 2U];\n        U1 = pSrc16[(i3 * 2U) + 1U];\n\n        /* T0 = yb-yd, T1 = xb-xd) */\n        T0 = __SSAT(T0 - U0, 16U);\n        T1 = __SSAT(T1 - U1, 16U);\n\n        /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */\n        R0 = (S0 >> 1U) + (T1 >> 1U);\n        R1 = (S1 >> 1U) - (T0 >> 1U);\n\n        /* S1 = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */\n        S0 = (S0 >> 1U) - (T1 >> 1U);\n        S1 = (S1 >> 1U) + (T0 >> 1U);\n\n        /*  Butterfly process for the i0+fftLen/2 sample */\n        out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U);\n        out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16U);\n        /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */\n        /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */\n        pSrc16[i2 * 2U] = out1;\n        pSrc16[(i2 * 2U) + 1U] = out2;\n\n        /*  Butterfly process for the i0+3fftLen/4 sample */\n        out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U);\n\n        out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16U);\n        /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */\n        /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */\n        pSrc16[i3 * 2U] = out1;\n        pSrc16[(i3 * 2U) + 1U] = out2;\n\n\n      }\n    }\n    /*  Twiddle coefficients index modifier */\n    twidCoefModifier <<= 2U;\n  }\n  /*  End of Middle stages process */\n\n\n  /* data is in 10.6(q6) format for the 1024 point */\n  /* data is in 8.8(q8) format for the 256 point   */\n  /* data is in 6.10(q10) format for the 64 point  */\n  /* data is in 4.12(q12) format for the 16 point  */\n\n  /* start of last stage process */\n\n\n  /*  Initializations for the last stage */\n  n1 = n2;\n  n2 >>= 2U;\n\n  /*  Butterfly implementation */\n  for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1)\n  {\n    /*  index calculation for the input as, */\n    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */\n    i1 = i0 + n2;\n    i2 = i1 + n2;\n    i3 = i2 + n2;\n\n    /*  Reading i0, i0+fftLen/2 inputs */\n    /* Read ya (real), xa(imag) input */\n    T0 = pSrc16[i0 * 2U];\n    T1 = pSrc16[(i0 * 2U) + 1U];\n    /* Read yc (real), xc(imag) input */\n    S0 = pSrc16[i2 * 2U];\n    S1 = pSrc16[(i2 * 2U) + 1U];\n\n    /* R0 = (ya + yc), R1 = (xa + xc) */\n    R0 = __SSAT(T0 + S0, 16U);\n    R1 = __SSAT(T1 + S1, 16U);\n    /* S0 = (ya - yc), S1 = (xa - xc) */\n    S0 = __SSAT(T0 - S0, 16U);\n    S1 = __SSAT(T1 - S1, 16U);\n\n    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */\n    /* Read yb (real), xb(imag) input */\n    T0 = pSrc16[i1 * 2U];\n    T1 = pSrc16[(i1 * 2U) + 1U];\n    /* Read yd (real), xd(imag) input */\n    U0 = pSrc16[i3 * 2U];\n    U1 = pSrc16[(i3 * 2U) + 1U];\n\n    /* T0 = (yb + yd), T1 = (xb + xd) */\n    T0 = __SSAT(T0 + U0, 16U);\n    T1 = __SSAT(T1 + U1, 16U);\n\n    /*  writing the butterfly processed i0 sample */\n    /* xa' = xa + xb + xc + xd */\n    /* ya' = ya + yb + yc + yd */\n    pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U);\n    pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U);\n\n    /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */\n    R0 = (R0 >> 1U) - (T0 >> 1U);\n    R1 = (R1 >> 1U) - (T1 >> 1U);\n\n    /* Read yb (real), xb(imag) input */\n    T0 = pSrc16[i1 * 2U];\n    T1 = pSrc16[(i1 * 2U) + 1U];\n\n    /*  writing the butterfly processed i0 + fftLen/4 sample */\n    /* xc' = (xa-xb+xc-xd) */\n    /* yc' = (ya-yb+yc-yd) */\n    pSrc16[i1 * 2U] = R0;\n    pSrc16[(i1 * 2U) + 1U] = R1;\n\n    /* Read yd (real), xd(imag) input */\n    U0 = pSrc16[i3 * 2U];\n    U1 = pSrc16[(i3 * 2U) + 1U];\n    /* T0 = (yb - yd), T1 = (xb - xd) */\n    T0 = __SSAT(T0 - U0, 16U);\n    T1 = __SSAT(T1 - U1, 16U);\n\n    /*  writing the butterfly processed i0 + fftLen/2 sample */\n    /* xb' = (xa-yb-xc+yd) */\n    /* yb' = (ya+xb-yc-xd) */\n    pSrc16[i2 * 2U] = (S0 >> 1U) - (T1 >> 1U);\n    pSrc16[(i2 * 2U) + 1U] = (S1 >> 1U) + (T0 >> 1U);\n\n\n    /*  writing the butterfly processed i0 + 3fftLen/4 sample */\n    /* xd' = (xa+yb-xc-yd) */\n    /* yd' = (ya-xb-yc+xd) */\n    pSrc16[i3 * 2U] = (S0 >> 1U) + (T1 >> 1U);\n    pSrc16[(i3 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U);\n  }\n  /* end of last stage  process */\n\n  /* output is in 11.5(q5) format for the 1024 point */\n  /* output is in 9.7(q7) format for the 256 point   */\n  /* output is in 7.9(q9) format for the 64 point  */\n  /* output is in 5.11(q11) format for the 16 point  */\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix4_q31.c\n * Description:  This file has function definition of Radix-4 FFT & IFFT function and\n *               In-place bit reversal using bit reversal table\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nvoid arm_radix4_butterfly_inverse_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint32_t twidCoefModifier);\n\nvoid arm_radix4_butterfly_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint32_t twidCoefModifier);\n\nvoid arm_bitreversal_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup ComplexFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 CFFT/CIFFT.\n  @deprecated    Do not use this function.  It has been superseded by \\ref arm_cfft_q31 and will be removed in the future.\n  @param[in]     S    points to an instance of the Q31 CFFT/CIFFT structure\n  @param[in,out] pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place\n  @return        none\n \n  @par Input and output formats:\n                 Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.\n                 Hence the output format is different for different FFT sizes.\n                 The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT:\n  @par\n                 \\image html CFFTQ31.gif \"Input and Output Formats for Q31 CFFT\"\n                 \\image html CIFFTQ31.gif \"Input and Output Formats for Q31 CIFFT\"\n */\n\nvoid arm_cfft_radix4_q31(\n  const arm_cfft_radix4_instance_q31 * S,\n        q31_t * pSrc)\n{\n  if (S->ifftFlag == 1U)\n  {\n    /* Complex IFFT radix-4 */\n    arm_radix4_butterfly_inverse_q31(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier);\n  }\n  else\n  {\n    /* Complex FFT radix-4 */\n    arm_radix4_butterfly_q31(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier);\n  }\n\n  if (S->bitReverseFlag == 1U)\n  {\n    /*  Bit Reversal */\n    arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);\n  }\n\n}\n\n/**\n  @} end of ComplexFFT group\n */\n\n/*\n * Radix-4 FFT algorithm used is :\n *\n * Input real and imaginary data:\n * x(n) = xa + j * ya\n * x(n+N/4 ) = xb + j * yb\n * x(n+N/2 ) = xc + j * yc\n * x(n+3N 4) = xd + j * yd\n *\n *\n * Output real and imaginary data:\n * x(4r) = xa'+ j * ya'\n * x(4r+1) = xb'+ j * yb'\n * x(4r+2) = xc'+ j * yc'\n * x(4r+3) = xd'+ j * yd'\n *\n *\n * Twiddle factors for radix-4 FFT:\n * Wn = co1 + j * (- si1)\n * W2n = co2 + j * (- si2)\n * W3n = co3 + j * (- si3)\n *\n *  Butterfly implementation:\n * xa' = xa + xb + xc + xd\n * ya' = ya + yb + yc + yd\n * xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)\n * yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)\n * xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)\n * yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)\n * xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)\n * yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)\n *\n */\n\n/**\n  @brief         Core function for the Q31 CFFT butterfly process.\n  @param[in,out] pSrc             points to the in-place buffer of Q31 data type.\n  @param[in]     fftLen           length of the FFT.\n  @param[in]     pCoef            points to twiddle coefficient buffer.\n  @param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\n  @return        none\n */\n\nvoid arm_radix4_butterfly_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint32_t twidCoefModifier)\n{\n        uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k;\n        q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;\n        \n        q31_t xa, xb, xc, xd;\n        q31_t ya, yb, yc, yd;\n        q31_t xa_out, xb_out, xc_out, xd_out;\n        q31_t ya_out, yb_out, yc_out, yd_out;\n        \n        q31_t *ptr1;\n\n  /* Total process is divided into three stages */\n\n  /* process first stage, middle stages, & last stage */\n\n\n  /* start of first stage process */\n\n  /*  Initializations for the first stage */\n  n2 = fftLen;\n  n1 = n2;\n  /* n2 = fftLen/4 */\n  n2 >>= 2U;\n  i0 = 0U;\n  ia1 = 0U;\n\n  j = n2;\n\n  /*  Calculation of first stage */\n  do\n  {\n    /*  index calculation for the input as, */\n    /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */\n    i1 = i0 + n2;\n    i2 = i1 + n2;\n    i3 = i2 + n2;\n\n    /* input is in 1.31(q31) format and provide 4 guard bits for the input */\n\n    /*  Butterfly implementation */\n    /* xa + xc */\n    r1 = (pSrc[(2U * i0)] >> 4U) + (pSrc[(2U * i2)] >> 4U);\n    /* xa - xc */\n    r2 = (pSrc[(2U * i0)] >> 4U) - (pSrc[(2U * i2)] >> 4U);\n\n    /* xb + xd */\n    t1 = (pSrc[(2U * i1)] >> 4U) + (pSrc[(2U * i3)] >> 4U);\n\n    /* ya + yc */\n    s1 = (pSrc[(2U * i0) + 1U] >> 4U) + (pSrc[(2U * i2) + 1U] >> 4U);\n    /* ya - yc */\n    s2 = (pSrc[(2U * i0) + 1U] >> 4U) - (pSrc[(2U * i2) + 1U] >> 4U);\n\n    /* xa' = xa + xb + xc + xd */\n    pSrc[2U * i0] = (r1 + t1);\n    /* (xa + xc) - (xb + xd) */\n    r1 = r1 - t1;\n    /* yb + yd */\n    t2 = (pSrc[(2U * i1) + 1U] >> 4U) + (pSrc[(2U * i3) + 1U] >> 4U);\n\n    /* ya' = ya + yb + yc + yd */\n    pSrc[(2U * i0) + 1U] = (s1 + t2);\n\n    /* (ya + yc) - (yb + yd) */\n    s1 = s1 - t2;\n\n    /* yb - yd */\n    t1 = (pSrc[(2U * i1) + 1U] >> 4U) - (pSrc[(2U * i3) + 1U] >> 4U);\n    /* xb - xd */\n    t2 = (pSrc[(2U * i1)] >> 4U) - (pSrc[(2U * i3)] >> 4U);\n\n    /*  index calculation for the coefficients */\n    ia2 = 2U * ia1;\n    co2 = pCoef[(ia2 * 2U)];\n    si2 = pCoef[(ia2 * 2U) + 1U];\n\n    /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */\n    pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) +\n                     ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U;\n\n    /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */\n    pSrc[(2U * i1) + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) -\n                            ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U;\n\n    /* (xa - xc) + (yb - yd) */\n    r1 = r2 + t1;\n    /* (xa - xc) - (yb - yd) */\n    r2 = r2 - t1;\n\n    /* (ya - yc) - (xb - xd) */\n    s1 = s2 - t2;\n    /* (ya - yc) + (xb - xd) */\n    s2 = s2 + t2;\n\n    co1 = pCoef[(ia1 * 2U)];\n    si1 = pCoef[(ia1 * 2U) + 1U];\n\n    /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */\n    pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) +\n                     ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U;\n\n    /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */\n    pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) -\n                            ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U;\n\n    /*  index calculation for the coefficients */\n    ia3 = 3U * ia1;\n    co3 = pCoef[(ia3 * 2U)];\n    si3 = pCoef[(ia3 * 2U) + 1U];\n\n    /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */\n    pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) +\n                     ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U;\n\n    /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */\n    pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) -\n                            ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U;\n\n    /*  Twiddle coefficients index modifier */\n    ia1 = ia1 + twidCoefModifier;\n\n    /*  Updating input index */\n    i0 = i0 + 1U;\n\n  } while (--j);\n\n  /* end of first stage process */\n\n  /* data is in 5.27(q27) format */\n\n\n  /* start of Middle stages process */\n\n\n  /* each stage in middle stages provides two down scaling of the input */\n\n  twidCoefModifier <<= 2U;\n\n\n  for (k = fftLen / 4U; k > 4U; k >>= 2U)\n  {\n    /*  Initializations for the first stage */\n    n1 = n2;\n    n2 >>= 2U;\n    ia1 = 0U;\n\n    /*  Calculation of first stage */\n    for (j = 0U; j <= (n2 - 1U); j++)\n    {\n      /*  index calculation for the coefficients */\n      ia2 = ia1 + ia1;\n      ia3 = ia2 + ia1;\n      co1 = pCoef[(ia1 * 2U)];\n      si1 = pCoef[(ia1 * 2U) + 1U];\n      co2 = pCoef[(ia2 * 2U)];\n      si2 = pCoef[(ia2 * 2U) + 1U];\n      co3 = pCoef[(ia3 * 2U)];\n      si3 = pCoef[(ia3 * 2U) + 1U];\n      /*  Twiddle coefficients index modifier */\n      ia1 = ia1 + twidCoefModifier;\n\n      for (i0 = j; i0 < fftLen; i0 += n1)\n      {\n        /*  index calculation for the input as, */\n        /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */\n        i1 = i0 + n2;\n        i2 = i1 + n2;\n        i3 = i2 + n2;\n\n        /*  Butterfly implementation */\n        /* xa + xc */\n        r1 = pSrc[2U * i0] + pSrc[2U * i2];\n        /* xa - xc */\n        r2 = pSrc[2U * i0] - pSrc[2U * i2];\n\n        /* ya + yc */\n        s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U];\n        /* ya - yc */\n        s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U];\n\n        /* xb + xd */\n        t1 = pSrc[2U * i1] + pSrc[2U * i3];\n\n        /* xa' = xa + xb + xc + xd */\n        pSrc[2U * i0] = (r1 + t1) >> 2U;\n        /* xa + xc -(xb + xd) */\n        r1 = r1 - t1;\n\n        /* yb + yd */\n        t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U];\n        /* ya' = ya + yb + yc + yd */\n        pSrc[(2U * i0) + 1U] = (s1 + t2) >> 2U;\n\n        /* (ya + yc) - (yb + yd) */\n        s1 = s1 - t2;\n\n        /* (yb - yd) */\n        t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U];\n        /* (xb - xd) */\n        t2 = pSrc[2U * i1] - pSrc[2U * i3];\n\n        /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */\n        pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) +\n                         ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1U;\n\n        /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */\n        pSrc[(2U * i1) + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) -\n                                ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1U;\n\n        /* (xa - xc) + (yb - yd) */\n        r1 = r2 + t1;\n        /* (xa - xc) - (yb - yd) */\n        r2 = r2 - t1;\n\n        /* (ya - yc) -  (xb - xd) */\n        s1 = s2 - t2;\n        /* (ya - yc) +  (xb - xd) */\n        s2 = s2 + t2;\n\n        /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */\n        pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) +\n                         ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U;\n\n        /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */\n        pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) -\n                                ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U;\n\n        /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */\n        pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) +\n                         ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U;\n\n        /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */\n        pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) -\n                                ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U;\n      }\n    }\n    twidCoefModifier <<= 2U;\n  }\n\n  /* End of Middle stages process */\n\n  /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */\n  /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */\n  /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */\n  /* data is in 5.27(q27) format for the 16 point as there are no middle stages */\n\n\n  /* start of Last stage process */\n  /*  Initializations for the last stage */\n  j = fftLen >> 2;\n  ptr1 = &pSrc[0];\n\n  /*  Calculations of last stage */\n  do\n  {\n    /* Read xa (real), ya(imag) input */\n    xa = *ptr1++;\n    ya = *ptr1++;\n\n    /* Read xb (real), yb(imag) input */\n    xb = *ptr1++;\n    yb = *ptr1++;\n\n    /* Read xc (real), yc(imag) input */\n    xc = *ptr1++;\n    yc = *ptr1++;\n\n    /* Read xc (real), yc(imag) input */\n    xd = *ptr1++;\n    yd = *ptr1++;\n\n    /* xa' = xa + xb + xc + xd */\n    xa_out = xa + xb + xc + xd;\n\n    /* ya' = ya + yb + yc + yd */\n    ya_out = ya + yb + yc + yd;\n\n    /* pointer updation for writing */\n    ptr1 = ptr1 - 8U;\n\n    /* writing xa' and ya' */\n    *ptr1++ = xa_out;\n    *ptr1++ = ya_out;\n\n    xc_out = (xa - xb + xc - xd);\n    yc_out = (ya - yb + yc - yd);\n\n    /* writing xc' and yc' */\n    *ptr1++ = xc_out;\n    *ptr1++ = yc_out;\n\n    xb_out = (xa + yb - xc - yd);\n    yb_out = (ya - xb - yc + xd);\n\n    /* writing xb' and yb' */\n    *ptr1++ = xb_out;\n    *ptr1++ = yb_out;\n\n    xd_out = (xa - yb - xc + yd);\n    yd_out = (ya + xb - yc - xd);\n\n    /* writing xd' and yd' */\n    *ptr1++ = xd_out;\n    *ptr1++ = yd_out;\n\n\n  } while (--j);\n\n  /* output is in 11.21(q21) format for the 1024 point */\n  /* output is in 9.23(q23) format for the 256 point */\n  /* output is in 7.25(q25) format for the 64 point */\n  /* output is in 5.27(q27) format for the 16 point */\n\n  /* End of last stage process */\n\n}\n\n\n/**\n  @brief         Core function for the Q31 CIFFT butterfly process.\n  @param[in,out] pSrc             points to the in-place buffer of Q31 data type.\n  @param[in]     fftLen           length of the FFT.\n  @param[in]     pCoef            points to twiddle coefficient buffer.\n  @param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\n  @return        none\n */\n\n/*\n * Radix-4 IFFT algorithm used is :\n *\n * CIFFT uses same twiddle coefficients as CFFT Function\n *  x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4]\n *\n *\n * IFFT is implemented with following changes in equations from FFT\n *\n * Input real and imaginary data:\n * x(n) = xa + j * ya\n * x(n+N/4 ) = xb + j * yb\n * x(n+N/2 ) = xc + j * yc\n * x(n+3N 4) = xd + j * yd\n *\n *\n * Output real and imaginary data:\n * x(4r) = xa'+ j * ya'\n * x(4r+1) = xb'+ j * yb'\n * x(4r+2) = xc'+ j * yc'\n * x(4r+3) = xd'+ j * yd'\n *\n *\n * Twiddle factors for radix-4 IFFT:\n * Wn = co1 + j * (si1)\n * W2n = co2 + j * (si2)\n * W3n = co3 + j * (si3)\n \n * The real and imaginary output values for the radix-4 butterfly are\n * xa' = xa + xb + xc + xd\n * ya' = ya + yb + yc + yd\n * xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1)\n * yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1)\n * xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2)\n * yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2)\n * xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3)\n * yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3)\n *\n */\n\nvoid arm_radix4_butterfly_inverse_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pCoef,\n        uint32_t twidCoefModifier)\n{\n        uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k;\n        q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;\n        q31_t xa, xb, xc, xd;\n        q31_t ya, yb, yc, yd;\n        q31_t xa_out, xb_out, xc_out, xd_out;\n        q31_t ya_out, yb_out, yc_out, yd_out;\n        \n        q31_t *ptr1;\n\n  /* input is be 1.31(q31) format for all FFT sizes */\n  /* Total process is divided into three stages */\n  /* process first stage, middle stages, & last stage */\n\n  /* Start of first stage process */\n\n  /* Initializations for the first stage */\n  n2 = fftLen;\n  n1 = n2;\n  /* n2 = fftLen/4 */\n  n2 >>= 2U;\n  i0 = 0U;\n  ia1 = 0U;\n\n  j = n2;\n\n  do\n  {\n    /* input is in 1.31(q31) format and provide 4 guard bits for the input */\n\n    /*  index calculation for the input as, */\n    /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */\n    i1 = i0 + n2;\n    i2 = i1 + n2;\n    i3 = i2 + n2;\n\n    /*  Butterfly implementation */\n    /* xa + xc */\n    r1 = (pSrc[2U * i0] >> 4U) + (pSrc[2U * i2] >> 4U);\n    /* xa - xc */\n    r2 = (pSrc[2U * i0] >> 4U) - (pSrc[2U * i2] >> 4U);\n\n    /* xb + xd */\n    t1 = (pSrc[2U * i1] >> 4U) + (pSrc[2U * i3] >> 4U);\n\n    /* ya + yc */\n    s1 = (pSrc[(2U * i0) + 1U] >> 4U) + (pSrc[(2U * i2) + 1U] >> 4U);\n    /* ya - yc */\n    s2 = (pSrc[(2U * i0) + 1U] >> 4U) - (pSrc[(2U * i2) + 1U] >> 4U);\n\n    /* xa' = xa + xb + xc + xd */\n    pSrc[2U * i0] = (r1 + t1);\n    /* (xa + xc) - (xb + xd) */\n    r1 = r1 - t1;\n    /* yb + yd */\n    t2 = (pSrc[(2U * i1) + 1U] >> 4U) + (pSrc[(2U * i3) + 1U] >> 4U);\n    /* ya' = ya + yb + yc + yd */\n    pSrc[(2U * i0) + 1U] = (s1 + t2);\n\n    /* (ya + yc) - (yb + yd) */\n    s1 = s1 - t2;\n\n    /* yb - yd */\n    t1 = (pSrc[(2U * i1) + 1U] >> 4U) - (pSrc[(2U * i3) + 1U] >> 4U);\n    /* xb - xd */\n    t2 = (pSrc[2U * i1] >> 4U) - (pSrc[2U * i3] >> 4U);\n\n    /*  index calculation for the coefficients */\n    ia2 = 2U * ia1;\n    co2 = pCoef[ia2 * 2U];\n    si2 = pCoef[(ia2 * 2U) + 1U];\n\n    /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n    pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) -\n                     ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U;\n\n    /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n    pSrc[2U * i1 + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) +\n                          ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U;\n\n    /* (xa - xc) - (yb - yd) */\n    r1 = r2 - t1;\n    /* (xa - xc) + (yb - yd) */\n    r2 = r2 + t1;\n\n    /* (ya - yc) + (xb - xd) */\n    s1 = s2 + t2;\n    /* (ya - yc) - (xb - xd) */\n    s2 = s2 - t2;\n\n    co1 = pCoef[ia1 * 2U];\n    si1 = pCoef[(ia1 * 2U) + 1U];\n\n    /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n    pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) -\n                     ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U;\n\n    /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n    pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) +\n                            ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U;\n\n    /*  index calculation for the coefficients */\n    ia3 = 3U * ia1;\n    co3 = pCoef[ia3 * 2U];\n    si3 = pCoef[(ia3 * 2U) + 1U];\n\n    /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n    pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) -\n                     ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U;\n\n    /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n    pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) +\n                            ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U;\n\n    /*  Twiddle coefficients index modifier */\n    ia1 = ia1 + twidCoefModifier;\n\n    /*  Updating input index */\n    i0 = i0 + 1U;\n\n  } while (--j);\n\n  /* data is in 5.27(q27) format */\n  /* each stage provides two down scaling of the input */\n\n\n  /* Start of Middle stages process */\n\n  twidCoefModifier <<= 2U;\n\n  /*  Calculation of second stage to excluding last stage */\n  for (k = fftLen / 4U; k > 4U; k >>= 2U)\n  {\n    /*  Initializations for the first stage */\n    n1 = n2;\n    n2 >>= 2U;\n    ia1 = 0U;\n\n    for (j = 0; j <= (n2 - 1U); j++)\n    {\n      /*  index calculation for the coefficients */\n      ia2 = ia1 + ia1;\n      ia3 = ia2 + ia1;\n      co1 = pCoef[(ia1 * 2U)];\n      si1 = pCoef[(ia1 * 2U) + 1U];\n      co2 = pCoef[(ia2 * 2U)];\n      si2 = pCoef[(ia2 * 2U) + 1U];\n      co3 = pCoef[(ia3 * 2U)];\n      si3 = pCoef[(ia3 * 2U) + 1U];\n      /*  Twiddle coefficients index modifier */\n      ia1 = ia1 + twidCoefModifier;\n\n      for (i0 = j; i0 < fftLen; i0 += n1)\n      {\n        /*  index calculation for the input as, */\n        /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */\n        i1 = i0 + n2;\n        i2 = i1 + n2;\n        i3 = i2 + n2;\n\n        /*  Butterfly implementation */\n        /* xa + xc */\n        r1 = pSrc[2U * i0] + pSrc[2U * i2];\n        /* xa - xc */\n        r2 = pSrc[2U * i0] - pSrc[2U * i2];\n\n        /* ya + yc */\n        s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U];\n        /* ya - yc */\n        s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U];\n\n        /* xb + xd */\n        t1 = pSrc[2U * i1] + pSrc[2U * i3];\n\n        /* xa' = xa + xb + xc + xd */\n        pSrc[2U * i0] = (r1 + t1) >> 2U;\n        /* xa + xc -(xb + xd) */\n        r1 = r1 - t1;\n        /* yb + yd */\n        t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U];\n        /* ya' = ya + yb + yc + yd */\n        pSrc[(2U * i0) + 1U] = (s1 + t2) >> 2U;\n\n        /* (ya + yc) - (yb + yd) */\n        s1 = s1 - t2;\n\n        /* (yb - yd) */\n        t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U];\n        /* (xb - xd) */\n        t2 = pSrc[2U * i1] - pSrc[2U * i3];\n\n        /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */\n        pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32U)) -\n                         ((int32_t) (((q63_t) s1 * si2) >> 32U))) >> 1U;\n\n        /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */\n        pSrc[(2U * i1) + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32U)) +\n                                ((int32_t) (((q63_t) r1 * si2) >> 32U))) >> 1U;\n\n        /* (xa - xc) - (yb - yd) */\n        r1 = r2 - t1;\n        /* (xa - xc) + (yb - yd) */\n        r2 = r2 + t1;\n\n        /* (ya - yc) +  (xb - xd) */\n        s1 = s2 + t2;\n        /* (ya - yc) -  (xb - xd) */\n        s2 = s2 - t2;\n\n        /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */\n        pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) -\n                         ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U;\n\n        /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */\n        pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) +\n                                ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U;\n\n        /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */\n        pSrc[(2U * i3)] = (((int32_t) (((q63_t) r2 * co3) >> 32)) -\n                           ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U;\n\n        /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */\n        pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) +\n                                ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U;\n      }\n    }\n    twidCoefModifier <<= 2U;\n  }\n\n  /* End of Middle stages process */\n\n  /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */\n  /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */\n  /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */\n  /* data is in 5.27(q27) format for the 16 point as there are no middle stages */\n\n\n  /* Start of last stage process */\n\n\n  /*  Initializations for the last stage */\n  j = fftLen >> 2;\n  ptr1 = &pSrc[0];\n\n  /*  Calculations of last stage */\n  do\n  {\n    /* Read xa (real), ya(imag) input */\n    xa = *ptr1++;\n    ya = *ptr1++;\n\n    /* Read xb (real), yb(imag) input */\n    xb = *ptr1++;\n    yb = *ptr1++;\n\n    /* Read xc (real), yc(imag) input */\n    xc = *ptr1++;\n    yc = *ptr1++;\n\n    /* Read xc (real), yc(imag) input */\n    xd = *ptr1++;\n    yd = *ptr1++;\n\n    /* xa' = xa + xb + xc + xd */\n    xa_out = xa + xb + xc + xd;\n\n    /* ya' = ya + yb + yc + yd */\n    ya_out = ya + yb + yc + yd;\n\n    /* pointer updation for writing */\n    ptr1 = ptr1 - 8U;\n\n    /* writing xa' and ya' */\n    *ptr1++ = xa_out;\n    *ptr1++ = ya_out;\n\n    xc_out = (xa - xb + xc - xd);\n    yc_out = (ya - yb + yc - yd);\n\n    /* writing xc' and yc' */\n    *ptr1++ = xc_out;\n    *ptr1++ = yc_out;\n\n    xb_out = (xa - yb - xc + yd);\n    yb_out = (ya + xb - yc - xd);\n\n    /* writing xb' and yb' */\n    *ptr1++ = xb_out;\n    *ptr1++ = yb_out;\n\n    xd_out = (xa + yb - xc - yd);\n    yd_out = (ya - xb - yc + xd);\n\n    /* writing xd' and yd' */\n    *ptr1++ = xd_out;\n    *ptr1++ = yd_out;\n\n  } while (--j);\n\n  /* output is in 11.21(q21) format for the 1024 point */\n  /* output is in 9.23(q23) format for the 256 point */\n  /* output is in 7.25(q25) format for the 64 point */\n  /* output is in 5.27(q27) format for the 16 point */\n\n  /* End of last stage process */\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_radix8_f32.c\n * Description:  Radix-8 Decimation in Frequency CFFT & CIFFT Floating point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n\n/* ----------------------------------------------------------------------\n * Internal helper function used by the FFTs\n * -------------------------------------------------------------------- */\n\n/**\n  brief         Core function for the floating-point CFFT butterfly process.\n  param[in,out] pSrc             points to the in-place buffer of floating-point data type.\n  param[in]     fftLen           length of the FFT.\n  param[in]     pCoef            points to the twiddle coefficient buffer.\n  param[in]     twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\n  return        none\n*/\n\nvoid arm_radix8_butterfly_f32(\n  float32_t * pSrc,\n  uint16_t fftLen,\n  const float32_t * pCoef,\n  uint16_t twidCoefModifier)\n{\n   uint32_t ia1, ia2, ia3, ia4, ia5, ia6, ia7;\n   uint32_t i1, i2, i3, i4, i5, i6, i7, i8;\n   uint32_t id;\n   uint32_t n1, n2, j;\n\n   float32_t r1, r2, r3, r4, r5, r6, r7, r8;\n   float32_t t1, t2;\n   float32_t s1, s2, s3, s4, s5, s6, s7, s8;\n   float32_t p1, p2, p3, p4;\n   float32_t co2, co3, co4, co5, co6, co7, co8;\n   float32_t si2, si3, si4, si5, si6, si7, si8;\n   const float32_t C81 = 0.70710678118f;\n\n   n2 = fftLen;\n\n   do\n   {\n      n1 = n2;\n      n2 = n2 >> 3;\n      i1 = 0;\n\n      do\n      {\n         i2 = i1 + n2;\n         i3 = i2 + n2;\n         i4 = i3 + n2;\n         i5 = i4 + n2;\n         i6 = i5 + n2;\n         i7 = i6 + n2;\n         i8 = i7 + n2;\n         r1 = pSrc[2 * i1] + pSrc[2 * i5];\n         r5 = pSrc[2 * i1] - pSrc[2 * i5];\n         r2 = pSrc[2 * i2] + pSrc[2 * i6];\n         r6 = pSrc[2 * i2] - pSrc[2 * i6];\n         r3 = pSrc[2 * i3] + pSrc[2 * i7];\n         r7 = pSrc[2 * i3] - pSrc[2 * i7];\n         r4 = pSrc[2 * i4] + pSrc[2 * i8];\n         r8 = pSrc[2 * i4] - pSrc[2 * i8];\n         t1 = r1 - r3;\n         r1 = r1 + r3;\n         r3 = r2 - r4;\n         r2 = r2 + r4;\n         pSrc[2 * i1] = r1 + r2;\n         pSrc[2 * i5] = r1 - r2;\n         r1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1];\n         s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1];\n         r2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1];\n         s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1];\n         s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1];\n         s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1];\n         r4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1];\n         s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1];\n         t2 = r1 - s3;\n         r1 = r1 + s3;\n         s3 = r2 - r4;\n         r2 = r2 + r4;\n         pSrc[2 * i1 + 1] = r1 + r2;\n         pSrc[2 * i5 + 1] = r1 - r2;\n         pSrc[2 * i3]     = t1 + s3;\n         pSrc[2 * i7]     = t1 - s3;\n         pSrc[2 * i3 + 1] = t2 - r3;\n         pSrc[2 * i7 + 1] = t2 + r3;\n         r1 = (r6 - r8) * C81;\n         r6 = (r6 + r8) * C81;\n         r2 = (s6 - s8) * C81;\n         s6 = (s6 + s8) * C81;\n         t1 = r5 - r1;\n         r5 = r5 + r1;\n         r8 = r7 - r6;\n         r7 = r7 + r6;\n         t2 = s5 - r2;\n         s5 = s5 + r2;\n         s8 = s7 - s6;\n         s7 = s7 + s6;\n         pSrc[2 * i2]     = r5 + s7;\n         pSrc[2 * i8]     = r5 - s7;\n         pSrc[2 * i6]     = t1 + s8;\n         pSrc[2 * i4]     = t1 - s8;\n         pSrc[2 * i2 + 1] = s5 - r7;\n         pSrc[2 * i8 + 1] = s5 + r7;\n         pSrc[2 * i6 + 1] = t2 - r8;\n         pSrc[2 * i4 + 1] = t2 + r8;\n\n         i1 += n1;\n      } while (i1 < fftLen);\n\n      if (n2 < 8)\n         break;\n\n      ia1 = 0;\n      j = 1;\n\n      do\n      {\n         /*  index calculation for the coefficients */\n         id  = ia1 + twidCoefModifier;\n         ia1 = id;\n         ia2 = ia1 + id;\n         ia3 = ia2 + id;\n         ia4 = ia3 + id;\n         ia5 = ia4 + id;\n         ia6 = ia5 + id;\n         ia7 = ia6 + id;\n\n         co2 = pCoef[2 * ia1];\n         co3 = pCoef[2 * ia2];\n         co4 = pCoef[2 * ia3];\n         co5 = pCoef[2 * ia4];\n         co6 = pCoef[2 * ia5];\n         co7 = pCoef[2 * ia6];\n         co8 = pCoef[2 * ia7];\n         si2 = pCoef[2 * ia1 + 1];\n         si3 = pCoef[2 * ia2 + 1];\n         si4 = pCoef[2 * ia3 + 1];\n         si5 = pCoef[2 * ia4 + 1];\n         si6 = pCoef[2 * ia5 + 1];\n         si7 = pCoef[2 * ia6 + 1];\n         si8 = pCoef[2 * ia7 + 1];\n\n         i1 = j;\n\n         do\n         {\n            /*  index calculation for the input */\n            i2 = i1 + n2;\n            i3 = i2 + n2;\n            i4 = i3 + n2;\n            i5 = i4 + n2;\n            i6 = i5 + n2;\n            i7 = i6 + n2;\n            i8 = i7 + n2;\n            r1 = pSrc[2 * i1] + pSrc[2 * i5];\n            r5 = pSrc[2 * i1] - pSrc[2 * i5];\n            r2 = pSrc[2 * i2] + pSrc[2 * i6];\n            r6 = pSrc[2 * i2] - pSrc[2 * i6];\n            r3 = pSrc[2 * i3] + pSrc[2 * i7];\n            r7 = pSrc[2 * i3] - pSrc[2 * i7];\n            r4 = pSrc[2 * i4] + pSrc[2 * i8];\n            r8 = pSrc[2 * i4] - pSrc[2 * i8];\n            t1 = r1 - r3;\n            r1 = r1 + r3;\n            r3 = r2 - r4;\n            r2 = r2 + r4;\n            pSrc[2 * i1] = r1 + r2;\n            r2 = r1 - r2;\n            s1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1];\n            s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1];\n            s2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1];\n            s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1];\n            s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1];\n            s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1];\n            s4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1];\n            s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1];\n            t2 = s1 - s3;\n            s1 = s1 + s3;\n            s3 = s2 - s4;\n            s2 = s2 + s4;\n            r1 = t1 + s3;\n            t1 = t1 - s3;\n            pSrc[2 * i1 + 1] = s1 + s2;\n            s2 = s1 - s2;\n            s1 = t2 - r3;\n            t2 = t2 + r3;\n            p1 = co5 * r2;\n            p2 = si5 * s2;\n            p3 = co5 * s2;\n            p4 = si5 * r2;\n            pSrc[2 * i5]     = p1 + p2;\n            pSrc[2 * i5 + 1] = p3 - p4;\n            p1 = co3 * r1;\n            p2 = si3 * s1;\n            p3 = co3 * s1;\n            p4 = si3 * r1;\n            pSrc[2 * i3]     = p1 + p2;\n            pSrc[2 * i3 + 1] = p3 - p4;\n            p1 = co7 * t1;\n            p2 = si7 * t2;\n            p3 = co7 * t2;\n            p4 = si7 * t1;\n            pSrc[2 * i7]     = p1 + p2;\n            pSrc[2 * i7 + 1] = p3 - p4;\n            r1 = (r6 - r8) * C81;\n            r6 = (r6 + r8) * C81;\n            s1 = (s6 - s8) * C81;\n            s6 = (s6 + s8) * C81;\n            t1 = r5 - r1;\n            r5 = r5 + r1;\n            r8 = r7 - r6;\n            r7 = r7 + r6;\n            t2 = s5 - s1;\n            s5 = s5 + s1;\n            s8 = s7 - s6;\n            s7 = s7 + s6;\n            r1 = r5 + s7;\n            r5 = r5 - s7;\n            r6 = t1 + s8;\n            t1 = t1 - s8;\n            s1 = s5 - r7;\n            s5 = s5 + r7;\n            s6 = t2 - r8;\n            t2 = t2 + r8;\n            p1 = co2 * r1;\n            p2 = si2 * s1;\n            p3 = co2 * s1;\n            p4 = si2 * r1;\n            pSrc[2 * i2]     = p1 + p2;\n            pSrc[2 * i2 + 1] = p3 - p4;\n            p1 = co8 * r5;\n            p2 = si8 * s5;\n            p3 = co8 * s5;\n            p4 = si8 * r5;\n            pSrc[2 * i8]     = p1 + p2;\n            pSrc[2 * i8 + 1] = p3 - p4;\n            p1 = co6 * r6;\n            p2 = si6 * s6;\n            p3 = co6 * s6;\n            p4 = si6 * r6;\n            pSrc[2 * i6]     = p1 + p2;\n            pSrc[2 * i6 + 1] = p3 - p4;\n            p1 = co4 * t1;\n            p2 = si4 * t2;\n            p3 = co4 * t2;\n            p4 = si4 * t1;\n            pSrc[2 * i4]     = p1 + p2;\n            pSrc[2 * i4 + 1] = p3 - p4;\n\n            i1 += n1;\n         } while (i1 < fftLen);\n\n         j++;\n      } while (j < n2);\n\n      twidCoefModifier <<= 3;\n   } while (n2 > 7);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dct4_f32.c\n * Description:  Processing function of DCT4 & IDCT4 F32\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @defgroup DCT4_IDCT4 DCT Type IV Functions\n\n  Representation of signals by minimum number of values is important for storage and transmission.\n  The possibility of large discontinuity between the beginning and end of a period of a signal\n  in DFT can be avoided by extending the signal so that it is even-symmetric.\n  Discrete Cosine Transform (DCT) is constructed such that its energy is heavily concentrated in the lower part of the\n  spectrum and is very widely used in signal and image coding applications.\n  The family of DCTs (DCT type- 1,2,3,4) is the outcome of different combinations of homogeneous boundary conditions.\n  DCT has an excellent energy-packing capability, hence has many applications and in data compression in particular.\n  \n  DCT is essentially the Discrete Fourier Transform(DFT) of an even-extended real signal.\n  Reordering of the input data makes the computation of DCT just a problem of\n  computing the DFT of a real signal with a few additional operations.\n  This approach provides regular, simple, and very efficient DCT algorithms for practical hardware and software implementations.\n  \n  DCT type-II can be implemented using Fast fourier transform (FFT) internally, as the transform is applied on real values, Real FFT can be used.\n  DCT4 is implemented using DCT2 as their implementations are similar except with some added pre-processing and post-processing.\n  DCT2 implementation can be described in the following steps:\n  - Re-ordering input\n  - Calculating Real FFT\n  - Multiplication of weights and Real FFT output and getting real part from the product.\n  \n  This process is explained by the block diagram below:\n  \\image html DCT4.gif \"Discrete Cosine Transform - type-IV\"\n \n  @par           Algorithm\n                   The N-point type-IV DCT is defined as a real, linear transformation by the formula:\n                   \\image html DCT4Equation.gif\n                   where <code>k = 0, 1, 2, ..., N-1</code>\n  @par\n                   Its inverse is defined as follows:\n                   \\image html IDCT4Equation.gif\n                   where <code>n = 0, 1, 2, ..., N-1</code>\n  @par\n                   The DCT4 matrices become involutory (i.e. they are self-inverse) by multiplying with an overall scale factor of sqrt(2/N).\n                   The symmetry of the transform matrix indicates that the fast algorithms for the forward\n                   and inverse transform computation are identical.\n                   Note that the implementation of Inverse DCT4 and DCT4 is same, hence same process function can be used for both.\n \n  @par           Lengths supported by the transform:\n                   As DCT4 internally uses Real FFT, it supports all the lengths 128, 512, 2048 and 8192.\n                   The library provides separate functions for Q15, Q31, and floating-point data types.\n\n  @par           Instance Structure\n                   The instances for Real FFT and FFT, cosine values table and twiddle factor table are stored in an instance data structure.\n                   A separate instance structure must be defined for each transform.\n                   There are separate instance structure declarations for each of the 3 supported data types.\n                 \n  @par           Initialization Functions\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                   - Sets the values of the internal structure fields.\n                   - Initializes Real FFT as its process function is used internally in DCT4, by calling \\ref arm_rfft_init_f32().\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure cannot be placed into a const data section.\n                   To place an instance structure into a const data section, the instance structure must be manually initialized.\n                   Manually initialize the instance structure as follows:\n  <pre>\n      arm_dct4_instance_f32 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};\n      arm_dct4_instance_q31 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};\n      arm_dct4_instance_q15 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};\n  </pre>\n                   where \\c N is the length of the DCT4; \\c Nby2 is half of the length of the DCT4;\n                   \\c normalize is normalizing factor used and is equal to <code>sqrt(2/N)</code>;\n                   \\c pTwiddle points to the twiddle factor table;\n                   \\c pCosFactor points to the cosFactor table;\n                   \\c pRfft points to the real FFT instance;\n                   \\c pCfft points to the complex FFT instance;\n                   The CFFT and RFFT structures also needs to be initialized, refer to arm_cfft_radix4_f32()\n                   and arm_rfft_f32() respectively for details regarding static initialization.\n \n  @par           Fixed-Point Behavior\n                   Care must be taken when using the fixed-point versions of the DCT4 transform functions.\n                   In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n                   Refer to the function specific documentation below for usage guidelines.\n */\n\n /**\n  @addtogroup DCT4_IDCT4\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point DCT4/IDCT4.\n  @param[in]     S             points to an instance of the floating-point DCT4/IDCT4 structure\n  @param[in]     pState        points to state buffer\n  @param[in,out] pInlineBuffer points to the in-place input and output buffer\n  @return        none\n */\n\nvoid arm_dct4_f32(\n  const arm_dct4_instance_f32 * S,\n        float32_t * pState,\n        float32_t * pInlineBuffer)\n{\n  const float32_t *weights = S->pTwiddle;              /* Pointer to the Weights table */\n  const float32_t *cosFact = S->pCosFactor;            /* Pointer to the cos factors table */\n        float32_t *pS1, *pS2, *pbuff;                  /* Temporary pointers for input buffer and pState buffer */\n        float32_t in;                                  /* Temporary variable */\n        uint32_t i;                                    /* Loop counter */\n\n\n  /* DCT4 computation involves DCT2 (which is calculated using RFFT)\n   * along with some pre-processing and post-processing.\n   * Computational procedure is explained as follows:\n   * (a) Pre-processing involves multiplying input with cos factor,\n   *     r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n))\n   *              where,\n   *                 r(n) -- output of preprocessing\n   *                 u(n) -- input to preprocessing(actual Source buffer)\n   * (b) Calculation of DCT2 using FFT is divided into three steps:\n   *                  Step1: Re-ordering of even and odd elements of input.\n   *                  Step2: Calculating FFT of the re-ordered input.\n   *                  Step3: Taking the real part of the product of FFT output and weights.\n   * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation:\n   *                   Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *                        where,\n   *                           Y4 -- DCT4 output,   Y2 -- DCT2 output\n   * (d) Multiplying the output with the normalizing factor sqrt(2/N).\n   */\n\n  /*-------- Pre-processing ------------*/\n  /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */\n  arm_scale_f32(pInlineBuffer, 2.0f, pInlineBuffer, S->N);\n  arm_mult_f32(pInlineBuffer, cosFact, pInlineBuffer, S->N);\n\n  /* ----------------------------------------------------------------\n   * Step1: Re-ordering of even and odd elements as\n   *             pState[i] =  pInlineBuffer[2*i] and\n   *             pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2\n   ---------------------------------------------------------------------*/\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */\n  pS2 = pState + (S->N - 1U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */\n  i = S->Nby2 >> 2U;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  do\n  {\n    /* Re-ordering of even and odd elements */\n    /* pState[i] =  pInlineBuffer[2*i] */\n    *pS1++ = *pbuff++;\n    /* pState[N-i-1] = pInlineBuffer[2*i+1] */\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Initializing the loop counter to N/4 instead of N for loop unrolling */\n  i = S->N >> 2U;\n\n  /* Processing with loop unrolling 4 times as N is always multiple of 4.\n   * Compute 4 outputs at a time */\n  do\n  {\n    /* Writing the re-ordered output back to inplace input buffer */\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n\n  /* ---------------------------------------------------------\n   *     Step2: Calculate RFFT for N-point input\n   * ---------------------------------------------------------- */\n  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */\n  arm_rfft_f32 (S->pRfft, pInlineBuffer, pState);\n\n  /*----------------------------------------------------------------------\n   *  Step3: Multiply the FFT output with the weights.\n   *----------------------------------------------------------------------*/\n  arm_cmplx_mult_cmplx_f32 (pState, weights, pState, S->N);\n\n  /* ----------- Post-processing ---------- */\n  /* DCT-IV can be obtained from DCT-II by the equation,\n   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *       Hence, Y4(0) = Y2(0)/2  */\n  /* Getting only real part from the output and Converting to DCT-IV */\n\n  /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */\n  i = (S->N - 1U) >> 2U;\n\n  /* pbuff initialized to input buffer. */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */\n  in = *pS1++ * (float32_t) 0.5;\n  /* input buffer acts as inplace, so output values are stored in the input itself. */\n  *pbuff++ = in;\n\n  /* pState pointer is incremented twice as the real values are located alternatively in the array */\n  pS1++;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  do\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    /* points to the next real value */\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  i = (S->N - 1U) % 0x4U;\n\n  while (i > 0U)\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n\n    /* points to the next real value */\n    pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  }\n\n\n  /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/\n\n  /* Initializing the loop counter to N/4 instead of N for loop unrolling */\n  i = S->N >> 2U;\n\n  /* pbuff initialized to the pInlineBuffer(now contains the output values) */\n  pbuff = pInlineBuffer;\n\n  /* Processing with loop unrolling 4 times as N is always multiple of 4.  Compute 4 outputs at a time */\n  do\n  {\n    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */\n    in = *pbuff;\n    *pbuff++ = in * S->normalize;\n\n    in = *pbuff;\n    *pbuff++ = in * S->normalize;\n\n    in = *pbuff;\n    *pbuff++ = in * S->normalize;\n\n    in = *pbuff;\n    *pbuff++ = in * S->normalize;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n\n#else\n\n  /* Initializing the loop counter to N/2 */\n  i = S->Nby2;\n\n  do\n  {\n    /* Re-ordering of even and odd elements */\n    /* pState[i] =  pInlineBuffer[2*i] */\n    *pS1++ = *pbuff++;\n    /* pState[N-i-1] = pInlineBuffer[2*i+1] */\n    *pS2-- = *pbuff++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Initializing the loop counter */\n  i = S->N;\n\n  do\n  {\n    /* Writing the re-ordered output back to inplace input buffer */\n    *pbuff++ = *pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n\n  /* ---------------------------------------------------------\n   *     Step2: Calculate RFFT for N-point input\n   * ---------------------------------------------------------- */\n  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */\n  arm_rfft_f32 (S->pRfft, pInlineBuffer, pState);\n\n  /*----------------------------------------------------------------------\n   *  Step3: Multiply the FFT output with the weights.\n   *----------------------------------------------------------------------*/\n  arm_cmplx_mult_cmplx_f32 (pState, weights, pState, S->N);\n\n  /* ----------- Post-processing ---------- */\n  /* DCT-IV can be obtained from DCT-II by the equation,\n   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *       Hence, Y4(0) = Y2(0)/2  */\n  /* Getting only real part from the output and Converting to DCT-IV */\n\n  /* pbuff initialized to input buffer. */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */\n  in = *pS1++ * (float32_t) 0.5;\n  /* input buffer acts as inplace, so output values are stored in the input itself. */\n  *pbuff++ = in;\n\n  /* pState pointer is incremented twice as the real values are located alternatively in the array */\n  pS1++;\n\n  /* Initializing the loop counter */\n  i = (S->N - 1U);\n\n  do\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n\n    /* points to the next real value */\n    pS1++;\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n  /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/\n\n  /* Initializing loop counter */\n  i = S->N;\n\n  /* pbuff initialized to the pInlineBuffer (now contains the output values) */\n  pbuff = pInlineBuffer;\n\n  do\n  {\n    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */\n    in = *pbuff;\n    *pbuff++ = in * S->normalize;\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n}\n\n/**\n  @} end of DCT4_IDCT4 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dct4_init_f32.c\n * Description:  Initialization function of DCT-4 & IDCT4 F32\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup DCT4_IDCT4\n */\n\n\n/**\n  @addtogroup DCT4_IDCT4\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point DCT4/IDCT4.\n  @param[in,out] S          points to an instance of floating-point DCT4/IDCT4 structure\n  @param[in]     S_RFFT     points to an instance of floating-point RFFT/RIFFT structure\n  @param[in]     S_CFFT     points to an instance of floating-point CFFT/CIFFT structure\n  @param[in]     N\t\t\tlength of the DCT4\n  @param[in]     Nby2       half of the length of the DCT4\n  @param[in]     normalize  normalizing factor.\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>N</code> is not a supported transform length\n\n  @par           Normalizing factor\n                   The normalizing factor is <code>sqrt(2/N)</code>, which depends on the size of transform <code>N</code>.\n                   Floating-point normalizing factors are mentioned in the table below for different DCT sizes:\n\n                   \\image html dct4NormalizingF32Table.gif\n */\n\narm_status arm_dct4_init_f32(\n  arm_dct4_instance_f32 * S,\n  arm_rfft_instance_f32 * S_RFFT,\n  arm_cfft_radix4_instance_f32 * S_CFFT,\n  uint16_t N,\n  uint16_t Nby2,\n  float32_t normalize)\n{\n  /* Initialize the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n\n  /* Initialize the DCT4 length */\n  S->N = N;\n\n  /* Initialize the half of DCT4 length */\n  S->Nby2 = Nby2;\n\n  /* Initialize the DCT4 Normalizing factor */\n  S->normalize = normalize;\n\n  /* Initialize Real FFT Instance */\n  S->pRfft = S_RFFT;\n\n  /* Initialize Complex FFT Instance */\n  S->pCfft = S_CFFT;\n\n  switch (N)\n  {\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_8192)\n    /* Initialize the table modifier values */\n  case 8192U:\n    S->pTwiddle = Weights_8192;\n    S->pCosFactor = cos_factors_8192;\n    break;\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_2048)\n  case 2048U:\n    S->pTwiddle = Weights_2048;\n    S->pCosFactor = cos_factors_2048;\n    break;\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_512)\n  case 512U:\n    S->pTwiddle = Weights_512;\n    S->pCosFactor = cos_factors_512;\n    break;\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_F32_128)\n  case 128U:\n    S->pTwiddle = Weights_128;\n    S->pCosFactor = cos_factors_128;\n    break;\n  #endif\n  default:\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n\n  /* Initialize the RFFT/RIFFT Function */\n  arm_rfft_init_f32(S->pRfft, S->pCfft, S->N, 0U, 1U);\n\n  /* return the status of DCT4 Init function */\n  return (status);\n}\n\n/**\n  @} end of DCT4_IDCT4 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dct4_init_q15.c\n * Description:  Initialization function of DCT-4 & IDCT4 Q15\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup DCT4_IDCT4\n */\n\n/**\n  @addtogroup DCT4_IDCT4\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 DCT4/IDCT4.\n  @param[in,out] S         points to an instance of Q15 DCT4/IDCT4 structure\n  @param[in]     S_RFFT    points to an instance of Q15 RFFT/RIFFT structure\n  @param[in]     S_CFFT    points to an instance of Q15 CFFT/CIFFT structure\n  @param[in]     N          length of the DCT4\n  @param[in]     Nby2       half of the length of the DCT4\n  @param[in]     normalize  normalizing factor\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>N</code> is not a supported transform length\n\n  @par           Normalizing factor\n                   The normalizing factor is <code>sqrt(2/N)</code>, which depends on the size of transform <code>N</code>.\n                   Normalizing factors in 1.15 format are mentioned in the table below for different DCT sizes:\n\n                   \\image html dct4NormalizingQ15Table.gif\n */\n\narm_status arm_dct4_init_q15(\n  arm_dct4_instance_q15 * S,\n  arm_rfft_instance_q15 * S_RFFT,\n  arm_cfft_radix4_instance_q15 * S_CFFT,\n  uint16_t N,\n  uint16_t Nby2,\n  q15_t normalize)\n{\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n  /* Initialize the DCT4 length */\n  S->N = N;\n\n  /* Initialize the half of DCT4 length */\n  S->Nby2 = Nby2;\n\n  /* Initialize the DCT4 Normalizing factor */\n  S->normalize = normalize;\n\n  /* Initialize Real FFT Instance */\n  S->pRfft = S_RFFT;\n\n  /* Initialize Complex FFT Instance */\n  S->pCfft = S_CFFT;\n\n  switch (N)\n  {\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_8192)\n    /* Initialize the table modifier values */\n  case 8192U:\n    S->pTwiddle = WeightsQ15_8192;\n    S->pCosFactor = cos_factorsQ15_8192;\n    break;\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_2048)\n  case 2048U:\n    S->pTwiddle = WeightsQ15_2048;\n    S->pCosFactor = cos_factorsQ15_2048;\n    break;\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_512)\n  case 512U:\n    S->pTwiddle = WeightsQ15_512;\n    S->pCosFactor = cos_factorsQ15_512;\n    break;\n  #endif \n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q15_128)\n  case 128U:\n    S->pTwiddle = WeightsQ15_128;\n    S->pCosFactor = cos_factorsQ15_128;\n    break;\n  #endif \n\n  default:\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n\n  /* Initialize the RFFT/RIFFT */\n  arm_rfft_init_q15(S->pRfft, S->N, 0U, 1U);\n\n  /* return the status of DCT4 Init function */\n  return (status);\n}\n\n/**\n  @} end of DCT4_IDCT4 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dct4_init_q31.c\n * Description:  Initialization function of DCT-4 & IDCT4 Q31\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup DCT4_IDCT4\n */\n\n\n/**\n  @addtogroup DCT4_IDCT4\n  @{\n */\n\n/**\n  @brief  Initialization function for the Q31 DCT4/IDCT4.\n  @param[in,out] S          points to an instance of Q31 DCT4/IDCT4 structure.\n  @param[in]     S_RFFT     points to an instance of Q31 RFFT/RIFFT structure\n  @param[in]     S_CFFT     points to an instance of Q31 CFFT/CIFFT structure\n  @param[in]     N          length of the DCT4.\n  @param[in]     Nby2       half of the length of the DCT4.\n  @param[in]     normalize  normalizing factor.\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>N</code> is not a supported transform length\n\n  @par           Normalizing factor:\n                   The normalizing factor is <code>sqrt(2/N)</code>, which depends on the size of transform <code>N</code>.\n                   Normalizing factors in 1.31 format are mentioned in the table below for different DCT sizes:\n\n                   \\image html dct4NormalizingQ31Table.gif\n */\n\narm_status arm_dct4_init_q31(\n  arm_dct4_instance_q31 * S,\n  arm_rfft_instance_q31 * S_RFFT,\n  arm_cfft_radix4_instance_q31 * S_CFFT,\n  uint16_t N,\n  uint16_t Nby2,\n  q31_t normalize)\n{\n  /* Initialize the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n  /* Initialize the DCT4 length */\n  S->N = N;\n\n  /* Initialize the half of DCT4 length */\n  S->Nby2 = Nby2;\n\n  /* Initialize the DCT4 Normalizing factor */\n  S->normalize = normalize;\n\n  /* Initialize Real FFT Instance */\n  S->pRfft = S_RFFT;\n\n  /* Initialize Complex FFT Instance */\n  S->pCfft = S_CFFT;\n\n  switch (N)\n  {\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_8192)\n    /* Initialize the table modifier values */\n  case 8192U:\n    S->pTwiddle = WeightsQ31_8192;\n    S->pCosFactor = cos_factorsQ31_8192;\n    break;\n  #endif\n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_2048)\n  case 2048U:\n    S->pTwiddle = WeightsQ31_2048;\n    S->pCosFactor = cos_factorsQ31_2048;\n    break;\n  #endif \n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_512)\n  case 512U:\n    S->pTwiddle = WeightsQ31_512;\n    S->pCosFactor = cos_factorsQ31_512;\n    break;\n  #endif \n\n  #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_DCT4_Q31_128)\n  case 128U:\n    S->pTwiddle = WeightsQ31_128;\n    S->pCosFactor = cos_factorsQ31_128;\n    break;\n  #endif\n  default:\n    status = ARM_MATH_ARGUMENT_ERROR;\n  }\n\n  /* Initialize the RFFT/RIFFT Function */\n  arm_rfft_init_q31(S->pRfft,  S->N, 0U, 1U);\n\n  /* return the status of DCT4 Init function */\n  return (status);\n}\n\n/**\n  @} end of DCT4_IDCT4 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dct4_q15.c\n * Description:  Processing function of DCT4 & IDCT4 Q15\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup DCT4_IDCT4\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 DCT4/IDCT4.\n  @param[in]     S             points to an instance of the Q15 DCT4 structure.\n  @param[in]     pState        points to state buffer.\n  @param[in,out] pInlineBuffer points to the in-place input and output buffer.\n  @return        none\n \n  @par           Input an output formats\n                   Internally inputs are downscaled in the RFFT process function to avoid overflows.\n                   Number of bits downscaled, depends on the size of the transform. The input and output\n                   formats for different DCT sizes and number of bits to upscale are mentioned in the table below:\n\n                   \\image html dct4FormatsQ15Table.gif\n */\n\nvoid arm_dct4_q15(\n  const arm_dct4_instance_q15 * S,\n        q15_t * pState,\n        q15_t * pInlineBuffer)\n{\n  const q15_t *weights = S->pTwiddle;                  /* Pointer to the Weights table */\n  const q15_t *cosFact = S->pCosFactor;                /* Pointer to the cos factors table */\n        q15_t *pS1, *pS2, *pbuff;                      /* Temporary pointers for input buffer and pState buffer */\n        q15_t in;                                      /* Temporary variable */\n        uint32_t i;                                    /* Loop counter */\n\n\n  /* DCT4 computation involves DCT2 (which is calculated using RFFT)\n   * along with some pre-processing and post-processing.\n   * Computational procedure is explained as follows:\n   * (a) Pre-processing involves multiplying input with cos factor,\n   *     r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n))\n   *              where,\n   *                 r(n) -- output of preprocessing\n   *                 u(n) -- input to preprocessing(actual Source buffer)\n   * (b) Calculation of DCT2 using FFT is divided into three steps:\n   *                  Step1: Re-ordering of even and odd elements of input.\n   *                  Step2: Calculating FFT of the re-ordered input.\n   *                  Step3: Taking the real part of the product of FFT output and weights.\n   * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation:\n   *                   Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *                        where,\n   *                           Y4 -- DCT4 output,   Y2 -- DCT2 output\n   * (d) Multiplying the output with the normalizing factor sqrt(2/N).\n   */\n\n  /*-------- Pre-processing ------------*/\n  /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */\n  arm_mult_q15 (pInlineBuffer, cosFact, pInlineBuffer, S->N);\n  arm_shift_q15 (pInlineBuffer, 1, pInlineBuffer, S->N);\n\n  /* ----------------------------------------------------------------\n   * Step1: Re-ordering of even and odd elements as\n   *             pState[i] =  pInlineBuffer[2*i] and\n   *             pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2\n   ---------------------------------------------------------------------*/\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */\n  pS2 = pState + (S->N - 1U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */\n  i = S->Nby2 >> 2U;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  do\n  {\n    /* Re-ordering of even and odd elements */\n    /* pState[i] =  pInlineBuffer[2*i] */\n    *pS1++ = *pbuff++;\n    /* pState[N-i-1] = pInlineBuffer[2*i+1] */\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Initializing the loop counter to N/4 instead of N for loop unrolling */\n  i = S->N >> 2U;\n\n  /* Processing with loop unrolling 4 times as N is always multiple of 4.\n   * Compute 4 outputs at a time */\n  do\n  {\n    /* Writing the re-ordered output back to inplace input buffer */\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n\n  /* ---------------------------------------------------------\n   *     Step2: Calculate RFFT for N-point input\n   * ---------------------------------------------------------- */\n  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */\n  arm_rfft_q15 (S->pRfft, pInlineBuffer, pState);\n\n  /*----------------------------------------------------------------------\n   *  Step3: Multiply the FFT output with the weights.\n   *----------------------------------------------------------------------*/\n  arm_cmplx_mult_cmplx_q15 (pState, weights, pState, S->N);\n\n  /* The output of complex multiplication is in 3.13 format.\n   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */\n  arm_shift_q15 (pState, 2, pState, S->N * 2);\n\n  /* ----------- Post-processing ---------- */\n  /* DCT-IV can be obtained from DCT-II by the equation,\n   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *       Hence, Y4(0) = Y2(0)/2  */\n  /* Getting only real part from the output and Converting to DCT-IV */\n\n  /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */\n  i = (S->N - 1U) >> 2U;\n\n  /* pbuff initialized to input buffer. */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */\n  in = *pS1++ >> 1U;\n  /* input buffer acts as inplace, so output values are stored in the input itself. */\n  *pbuff++ = in;\n\n  /* pState pointer is incremented twice as the real values are located alternatively in the array */\n  pS1++;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  do\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    /* points to the next real value */\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  i = (S->N - 1U) % 0x4U;\n\n  while (i > 0U)\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n\n    /* points to the next real value */\n    pS1++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n\n  /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/\n\n  /* Initializing the loop counter to N/4 instead of N for loop unrolling */\n  i = S->N >> 2U;\n\n  /* pbuff initialized to the pInlineBuffer(now contains the output values) */\n  pbuff = pInlineBuffer;\n\n  /* Processing with loop unrolling 4 times as N is always multiple of 4.  Compute 4 outputs at a time */\n  do\n  {\n    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */\n    in = *pbuff;\n    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));\n\n    in = *pbuff;\n    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));\n\n    in = *pbuff;\n    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));\n\n    in = *pbuff;\n    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n\n#else\n\n  /* Initializing the loop counter to N/2 */\n  i = S->Nby2;\n\n  do\n  {\n    /* Re-ordering of even and odd elements */\n    /* pState[i] =  pInlineBuffer[2*i] */\n    *pS1++ = *pbuff++;\n    /* pState[N-i-1] = pInlineBuffer[2*i+1] */\n    *pS2-- = *pbuff++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Initializing the loop counter */\n  i = S->N;\n\n  do\n  {\n    /* Writing the re-ordered output back to inplace input buffer */\n    *pbuff++ = *pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n\n  /* ---------------------------------------------------------\n   *     Step2: Calculate RFFT for N-point input\n   * ---------------------------------------------------------- */\n  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */\n  arm_rfft_q15 (S->pRfft, pInlineBuffer, pState);\n\n  /*----------------------------------------------------------------------\n   *  Step3: Multiply the FFT output with the weights.\n   *----------------------------------------------------------------------*/\n  arm_cmplx_mult_cmplx_q15 (pState, weights, pState, S->N);\n\n  /* The output of complex multiplication is in 3.13 format.\n   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */\n  arm_shift_q15 (pState, 2, pState, S->N * 2);\n\n  /* ----------- Post-processing ---------- */\n  /* DCT-IV can be obtained from DCT-II by the equation,\n   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *       Hence, Y4(0) = Y2(0)/2  */\n  /* Getting only real part from the output and Converting to DCT-IV */\n\n  /* pbuff initialized to input buffer. */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */\n  in = *pS1++ >> 1U;\n  /* input buffer acts as inplace, so output values are stored in the input itself. */\n  *pbuff++ = in;\n\n  /* pState pointer is incremented twice as the real values are located alternatively in the array */\n  pS1++;\n\n  /* Initializing the loop counter */\n  i = (S->N - 1U);\n\n  do\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n\n    /* points to the next real value */\n    pS1++;\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n  /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/\n\n  /* Initializing loop counter */\n  i = S->N;\n\n  /* pbuff initialized to the pInlineBuffer (now contains the output values) */\n  pbuff = pInlineBuffer;\n\n  do\n  {\n    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */\n    in = *pbuff;\n    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));\n\n    /* Decrement loop counter */\n    i--;\n\n  } while (i > 0U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n}\n\n/**\n  @} end of DCT4_IDCT4 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_dct4_q31.c\n * Description:  Processing function of DCT4 & IDCT4 Q31\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/**\n  @addtogroup DCT4_IDCT4\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 DCT4/IDCT4.\n  @param[in]     S             points to an instance of the Q31 DCT4 structure.\n  @param[in]     pState        points to state buffer.\n  @param[in,out] pInlineBuffer points to the in-place input and output buffer.\n  @return        none\n\n  @par           Input an output formats\n                   Input samples need to be downscaled by 1 bit to avoid saturations in the Q31 DCT process,\n                   as the conversion from DCT2 to DCT4 involves one subtraction.\n                   Internally inputs are downscaled in the RFFT process function to avoid overflows.\n                   Number of bits downscaled, depends on the size of the transform.\n                   The input and output formats for different DCT sizes and number of bits to upscale are\n                   mentioned in the table below:\n\n                   \\image html dct4FormatsQ31Table.gif\n */\n\nvoid arm_dct4_q31(\n  const arm_dct4_instance_q31 * S,\n        q31_t * pState,\n        q31_t * pInlineBuffer)\n{\n  const q31_t *weights = S->pTwiddle;                  /* Pointer to the Weights table */\n  const q31_t *cosFact = S->pCosFactor;                /* Pointer to the cos factors table */\n        q31_t *pS1, *pS2, *pbuff;                      /* Temporary pointers for input buffer and pState buffer */\n        q31_t in;                                      /* Temporary variable */\n        uint32_t i;                                    /* Loop counter */\n\n\n  /* DCT4 computation involves DCT2 (which is calculated using RFFT)\n   * along with some pre-processing and post-processing.\n   * Computational procedure is explained as follows:\n   * (a) Pre-processing involves multiplying input with cos factor,\n   *     r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n))\n   *              where,\n   *                 r(n) -- output of preprocessing\n   *                 u(n) -- input to preprocessing(actual Source buffer)\n   * (b) Calculation of DCT2 using FFT is divided into three steps:\n   *                  Step1: Re-ordering of even and odd elements of input.\n   *                  Step2: Calculating FFT of the re-ordered input.\n   *                  Step3: Taking the real part of the product of FFT output and weights.\n   * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation:\n   *                   Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *                        where,\n   *                           Y4 -- DCT4 output,   Y2 -- DCT2 output\n   * (d) Multiplying the output with the normalizing factor sqrt(2/N).\n   */\n\n  /*-------- Pre-processing ------------*/\n  /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */\n  arm_mult_q31 (pInlineBuffer, cosFact, pInlineBuffer, S->N);\n  arm_shift_q31 (pInlineBuffer, 1, pInlineBuffer, S->N);\n\n  /* ----------------------------------------------------------------\n   * Step1: Re-ordering of even and odd elements as\n   *             pState[i] =  pInlineBuffer[2*i] and\n   *             pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2\n   ---------------------------------------------------------------------*/\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */\n  pS2 = pState + (S->N - 1U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n\n#if defined (ARM_MATH_LOOPUNROLL)\n\n  /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */\n  i = S->Nby2 >> 2U;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  do\n  {\n    /* Re-ordering of even and odd elements */\n    /* pState[i] =  pInlineBuffer[2*i] */\n    *pS1++ = *pbuff++;\n    /* pState[N-i-1] = pInlineBuffer[2*i+1] */\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    *pS1++ = *pbuff++;\n    *pS2-- = *pbuff++;\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Initializing the loop counter to N/4 instead of N for loop unrolling */\n  i = S->N >> 2U;\n\n  /* Processing with loop unrolling 4 times as N is always multiple of 4.\n   * Compute 4 outputs at a time */\n  do\n  {\n    /* Writing the re-ordered output back to inplace input buffer */\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n    *pbuff++ = *pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n\n  /* ---------------------------------------------------------\n   *     Step2: Calculate RFFT for N-point input\n   * ---------------------------------------------------------- */\n  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */\n  arm_rfft_q31 (S->pRfft, pInlineBuffer, pState);\n\n  /*----------------------------------------------------------------------\n   *  Step3: Multiply the FFT output with the weights.\n   *----------------------------------------------------------------------*/\n  arm_cmplx_mult_cmplx_q31 (pState, weights, pState, S->N);\n\n  /* The output of complex multiplication is in 3.29 format.\n   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */\n  arm_shift_q31 (pState, 2, pState, S->N * 2);\n\n  /* ----------- Post-processing ---------- */\n  /* DCT-IV can be obtained from DCT-II by the equation,\n   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *       Hence, Y4(0) = Y2(0)/2  */\n  /* Getting only real part from the output and Converting to DCT-IV */\n\n  /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */\n  i = (S->N - 1U) >> 2U;\n\n  /* pbuff initialized to input buffer. */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */\n  in = *pS1++ >> 1U;\n  /* input buffer acts as inplace, so output values are stored in the input itself. */\n  *pbuff++ = in;\n\n  /* pState pointer is incremented twice as the real values are located alternatively in the array */\n  pS1++;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  do\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    /* points to the next real value */\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    in = *pS1++ - in;\n    *pbuff++ = in;\n    pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  i = (S->N - 1U) % 0x4U;\n\n  while (i > 0U)\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n\n    /* points to the next real value */\n    pS1++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n\n  /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/\n\n  /* Initializing the loop counter to N/4 instead of N for loop unrolling */\n  i = S->N >> 2U;\n\n  /* pbuff initialized to the pInlineBuffer(now contains the output values) */\n  pbuff = pInlineBuffer;\n\n  /* Processing with loop unrolling 4 times as N is always multiple of 4.  Compute 4 outputs at a time */\n  do\n  {\n    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */\n    in = *pbuff;\n    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));\n\n    in = *pbuff;\n    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));\n\n    in = *pbuff;\n    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));\n\n    in = *pbuff;\n    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n\n#else\n\n  /* Initializing the loop counter to N/2 */\n  i = S->Nby2;\n\n  do\n  {\n    /* Re-ordering of even and odd elements */\n    /* pState[i] =  pInlineBuffer[2*i] */\n    *pS1++ = *pbuff++;\n    /* pState[N-i-1] = pInlineBuffer[2*i+1] */\n    *pS2-- = *pbuff++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n  /* pbuff initialized to input buffer */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Initializing the loop counter */\n  i = S->N;\n\n  do\n  {\n    /* Writing the re-ordered output back to inplace input buffer */\n    *pbuff++ = *pS1++;\n\n    /* Decrement the loop counter */\n    i--;\n  } while (i > 0U);\n\n\n  /* ---------------------------------------------------------\n   *     Step2: Calculate RFFT for N-point input\n   * ---------------------------------------------------------- */\n  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */\n  arm_rfft_q31 (S->pRfft, pInlineBuffer, pState);\n\n  /*----------------------------------------------------------------------\n   *  Step3: Multiply the FFT output with the weights.\n   *----------------------------------------------------------------------*/\n  arm_cmplx_mult_cmplx_q31 (pState, weights, pState, S->N);\n\n  /* The output of complex multiplication is in 3.29 format.\n   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */\n  arm_shift_q31(pState, 2, pState, S->N * 2);\n\n  /* ----------- Post-processing ---------- */\n  /* DCT-IV can be obtained from DCT-II by the equation,\n   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)\n   *       Hence, Y4(0) = Y2(0)/2  */\n  /* Getting only real part from the output and Converting to DCT-IV */\n\n  /* pbuff initialized to input buffer. */\n  pbuff = pInlineBuffer;\n\n  /* pS1 initialized to pState */\n  pS1 = pState;\n\n  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */\n  in = *pS1++ >> 1U;\n  /* input buffer acts as inplace, so output values are stored in the input itself. */\n  *pbuff++ = in;\n\n  /* pState pointer is incremented twice as the real values are located alternatively in the array */\n  pS1++;\n\n  /* Initializing the loop counter */\n  i = (S->N - 1U);\n\n  while (i > 0U)\n  {\n    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */\n    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */\n    in = *pS1++ - in;\n    *pbuff++ = in;\n\n    /* points to the next real value */\n    pS1++;\n\n    /* Decrement loop counter */\n    i--;\n  }\n\n  /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/\n\n  /* Initializing loop counter */\n  i = S->N;\n\n  /* pbuff initialized to the pInlineBuffer (now contains the output values) */\n  pbuff = pInlineBuffer;\n\n  do\n  {\n    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */\n    in = *pbuff;\n    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));\n\n    /* Decrement loop counter */\n    i--;\n  } while (i > 0U);\n\n#endif /* #if defined (ARM_MATH_LOOPUNROLL) */\n\n}\n\n/**\n  @} end of DCT4_IDCT4 group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rfft_f32.c\n * Description:  RFFT & RIFFT Floating point process function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n * Internal functions prototypes\n * -------------------------------------------------------------------- */\n\nextern void arm_radix4_butterfly_f32(\n        float32_t * pSrc,\n        uint16_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier);\n\nextern void arm_radix4_butterfly_inverse_f32(\n        float32_t * pSrc,\n        uint16_t fftLen,\n  const float32_t * pCoef,\n        uint16_t twidCoefModifier,\n        float32_t onebyfftLen);\n\nextern void arm_bitreversal_f32(\n        float32_t * pSrc,\n        uint16_t fftSize,\n        uint16_t bitRevFactor,\n  const uint16_t * pBitRevTab);\n\nvoid arm_split_rfft_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pATable,\n  const float32_t * pBTable,\n        float32_t * pDst,\n        uint32_t modifier);\n\nvoid arm_split_rifft_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pATable,\n  const float32_t * pBTable,\n        float32_t * pDst,\n        uint32_t modifier);\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup RealFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the floating-point RFFT/RIFFT.\n  @deprecated    Do not use this function.  It has been superceded by \\ref arm_rfft_fast_f32 and will be removed in the future.\n  @param[in]     S    points to an instance of the floating-point RFFT/RIFFT structure\n  @param[in]     pSrc points to the input buffer\n  @param[out]    pDst points to the output buffer\n  @return        none\n */\n\nvoid arm_rfft_f32(\n  const arm_rfft_instance_f32 * S,\n        float32_t * pSrc,\n        float32_t * pDst)\n{\n  const arm_cfft_radix4_instance_f32 *S_CFFT = S->pCfft;\n\n  /* Calculation of Real IFFT of input */\n  if (S->ifftFlagR == 1U)\n  {\n     /*  Real IFFT core process */\n     arm_split_rifft_f32 (pSrc, S->fftLenBy2, S->pTwiddleAReal, S->pTwiddleBReal, pDst, S->twidCoefRModifier);\n\n\n     /* Complex radix-4 IFFT process */\n     arm_radix4_butterfly_inverse_f32 (pDst, S_CFFT->fftLen, S_CFFT->pTwiddle, S_CFFT->twidCoefModifier, S_CFFT->onebyfftLen);\n\n    /* Bit reversal process */\n    if (S->bitReverseFlagR == 1U)\n    {\n      arm_bitreversal_f32 (pDst, S_CFFT->fftLen, S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);\n    }\n  }\n  else\n  {\n    /* Calculation of RFFT of input */\n\n    /* Complex radix-4 FFT process */\n    arm_radix4_butterfly_f32 (pSrc, S_CFFT->fftLen, S_CFFT->pTwiddle, S_CFFT->twidCoefModifier);\n\n    /* Bit reversal process */\n    if (S->bitReverseFlagR == 1U)\n    {\n      arm_bitreversal_f32 (pSrc, S_CFFT->fftLen, S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);\n    }\n\n    /*  Real FFT core process */\n    arm_split_rfft_f32 (pSrc, S->fftLenBy2, S->pTwiddleAReal, S->pTwiddleBReal, pDst, S->twidCoefRModifier);\n  }\n\n}\n\n/**\n  @} end of RealFFT group\n */\n\n/**\n  @brief         Core Real FFT process\n  @param[in]     pSrc      points to input buffer\n  @param[in]     fftLen    length of FFT\n  @param[in]     pATable   points to twiddle Coef A buffer\n  @param[in]     pBTable   points to twiddle Coef B buffer\n  @param[out]    pDst      points to output buffer\n  @param[in]     modifier  twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  @return        none\n */\n\nvoid arm_split_rfft_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pATable,\n  const float32_t * pBTable,\n        float32_t * pDst,\n        uint32_t modifier)\n{\n        uint32_t i;                                    /* Loop Counter */\n        float32_t outR, outI;                          /* Temporary variables for output */\n  const float32_t *pCoefA, *pCoefB;                    /* Temporary pointers for twiddle factors */\n        float32_t CoefA1, CoefA2, CoefB1;              /* Temporary variables for twiddle coefficients */\n        float32_t *pDst1 = &pDst[2], *pDst2 = &pDst[(4U * fftLen) - 1U];      /* temp pointers for output buffer */\n        float32_t *pSrc1 = &pSrc[2], *pSrc2 = &pSrc[(2U * fftLen) - 1U];      /* temp pointers for input buffer */\n\n  /* Init coefficient pointers */\n  pCoefA = &pATable[modifier * 2];\n  pCoefB = &pBTable[modifier * 2];\n\n  i = fftLen - 1U;\n\n  while (i > 0U)\n  {\n     /*\n       outR = (  pSrc[2 * i]             * pATable[2 * i]\n               - pSrc[2 * i + 1]         * pATable[2 * i + 1]\n               + pSrc[2 * n - 2 * i]     * pBTable[2 * i]\n               + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);\n\n       outI = (  pIn[2 * i + 1]         * pATable[2 * i]\n               + pIn[2 * i]             * pATable[2 * i + 1]\n               + pIn[2 * n - 2 * i]     * pBTable[2 * i + 1]\n               - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);\n      */\n\n    /* read pATable[2 * i] */\n    CoefA1 = *pCoefA++;\n    /* pATable[2 * i + 1] */\n    CoefA2 = *pCoefA;\n\n    /* pSrc[2 * i] * pATable[2 * i] */\n    outR = *pSrc1 * CoefA1;\n    /* pSrc[2 * i] * CoefA2 */\n    outI = *pSrc1++ * CoefA2;\n\n    /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */\n    outR -= (*pSrc1 + *pSrc2) * CoefA2;\n    /* pSrc[2 * i + 1] * CoefA1 */\n    outI += *pSrc1++ * CoefA1;\n\n    CoefB1 = *pCoefB;\n\n    /* pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */\n    outI -= *pSrc2-- * CoefB1;\n    /* pSrc[2 * fftLen - 2 * i] * CoefA2 */\n    outI -= *pSrc2 * CoefA2;\n\n    /* pSrc[2 * fftLen - 2 * i] * CoefB1 */\n    outR += *pSrc2-- * CoefB1;\n\n    /* write output */\n    *pDst1++ = outR;\n    *pDst1++ = outI;\n\n    /* write complex conjugate output */\n    *pDst2-- = -outI;\n    *pDst2-- = outR;\n\n    /* update coefficient pointer */\n    pCoefB = pCoefB + (modifier * 2U);\n    pCoefA = pCoefA + ((modifier * 2U) - 1U);\n\n    i--;\n\n  }\n\n  pDst[2U * fftLen] = pSrc[0] - pSrc[1];\n  pDst[(2U * fftLen) + 1U] = 0.0f;\n\n  pDst[0] = pSrc[0] + pSrc[1];\n  pDst[1] = 0.0f;\n\n}\n\n\n/**\n  @brief         Core Real IFFT process\n  @param[in]     pSrc      points to input buffer\n  @param[in]     fftLen    length of FFT\n  @param[in]     pATable   points to twiddle Coef A buffer\n  @param[in]     pBTable   points to twiddle Coef B buffer\n  @param[out]    pDst      points to output buffer\n  @param[in]     modifier  twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  @return        none\n */\n\nvoid arm_split_rifft_f32(\n        float32_t * pSrc,\n        uint32_t fftLen,\n  const float32_t * pATable,\n  const float32_t * pBTable,\n        float32_t * pDst,\n        uint32_t modifier)\n{\n        float32_t outR, outI;                          /* Temporary variables for output */\n  const float32_t *pCoefA, *pCoefB;                    /* Temporary pointers for twiddle factors */\n        float32_t CoefA1, CoefA2, CoefB1;              /* Temporary variables for twiddle coefficients */\n        float32_t *pSrc1 = &pSrc[0], *pSrc2 = &pSrc[(2U * fftLen) + 1U];\n\n  pCoefA = &pATable[0];\n  pCoefB = &pBTable[0];\n\n  while (fftLen > 0U)\n  {\n     /*\n       outR = (  pIn[2 * i]             * pATable[2 * i]\n               + pIn[2 * i + 1]         * pATable[2 * i + 1]\n               + pIn[2 * n - 2 * i]     * pBTable[2 * i]\n               - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);\n\n       outI = (  pIn[2 * i + 1]         * pATable[2 * i]\n               - pIn[2 * i]             * pATable[2 * i + 1]\n               - pIn[2 * n - 2 * i]     * pBTable[2 * i + 1]\n               - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);\n      */\n\n     CoefA1 = *pCoefA++;\n     CoefA2 = *pCoefA;\n\n     /* outR = (pSrc[2 * i] * CoefA1 */\n     outR = *pSrc1 * CoefA1;\n\n     /* - pSrc[2 * i] * CoefA2 */\n     outI = -(*pSrc1++) * CoefA2;\n\n     /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */\n     outR += (*pSrc1 + *pSrc2) * CoefA2;\n\n     /* pSrc[2 * i + 1] * CoefA1 */\n     outI += (*pSrc1++) * CoefA1;\n\n     CoefB1 = *pCoefB;\n\n     /* - pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */\n     outI -= *pSrc2-- * CoefB1;\n\n     /* pSrc[2 * fftLen - 2 * i] * CoefB1 */\n     outR += *pSrc2 * CoefB1;\n\n     /* pSrc[2 * fftLen - 2 * i] * CoefA2 */\n     outI += *pSrc2-- * CoefA2;\n\n     /* write output */\n     *pDst++ = outR;\n     *pDst++ = outI;\n\n     /* update coefficient pointer */\n     pCoefB = pCoefB + (modifier * 2);\n     pCoefA = pCoefA + (modifier * 2 - 1);\n\n     /* Decrement loop count */\n     fftLen--;\n  }\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rfft_f32.c\n * Description:  RFFT & RIFFT Floating point process function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\nvoid stage_rfft_f32(\n  const arm_rfft_fast_instance_f32 * S,\n        float32_t * p,\n        float32_t * pOut)\n{\n        uint32_t  k;                                /* Loop Counter */\n        float32_t twR, twI;                         /* RFFT Twiddle coefficients */\n  const float32_t * pCoeff = S->pTwiddleRFFT;       /* Points to RFFT Twiddle factors */\n        float32_t *pA = p;                          /* increasing pointer */\n        float32_t *pB = p;                          /* decreasing pointer */\n        float32_t xAR, xAI, xBR, xBI;               /* temporary variables */\n        float32_t t1a, t1b;                         /* temporary variables */\n        float32_t p0, p1, p2, p3;                   /* temporary variables */\n\n\n   k = (S->Sint).fftLen - 1;\n\n   /* Pack first and last sample of the frequency domain together */\n\n   xBR = pB[0];\n   xBI = pB[1];\n   xAR = pA[0];\n   xAI = pA[1];\n\n   twR = *pCoeff++ ;\n   twI = *pCoeff++ ;\n\n   // U1 = XA(1) + XB(1); % It is real\n   t1a = xBR + xAR  ;\n\n   // U2 = XB(1) - XA(1); % It is imaginary\n   t1b = xBI + xAI  ;\n\n   // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI);\n   // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI);\n   *pOut++ = 0.5f * ( t1a + t1b );\n   *pOut++ = 0.5f * ( t1a - t1b );\n\n   // XA(1) = 1/2*( U1 - imag(U2) +  i*( U1 +imag(U2) ));\n   pB  = p + 2*k;\n   pA += 2;\n\n   do\n   {\n      /*\n         function X = my_split_rfft(X, ifftFlag)\n         % X is a series of real numbers\n         L  = length(X);\n         XC = X(1:2:end) +i*X(2:2:end);\n         XA = fft(XC);\n         XB = conj(XA([1 end:-1:2]));\n         TW = i*exp(-2*pi*i*[0:L/2-1]/L).';\n         for l = 2:L/2\n            XA(l) = 1/2 * (XA(l) + XB(l) + TW(l) * (XB(l) - XA(l)));\n         end\n         XA(1) = 1/2* (XA(1) + XB(1) + TW(1) * (XB(1) - XA(1))) + i*( 1/2*( XA(1) + XB(1) + i*( XA(1) - XB(1))));\n         X = XA;\n      */\n\n      xBI = pB[1];\n      xBR = pB[0];\n      xAR = pA[0];\n      xAI = pA[1];\n\n      twR = *pCoeff++;\n      twI = *pCoeff++;\n\n      t1a = xBR - xAR ;\n      t1b = xBI + xAI ;\n\n      // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI);\n      // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI);\n      p0 = twR * t1a;\n      p1 = twI * t1a;\n      p2 = twR * t1b;\n      p3 = twI * t1b;\n\n      *pOut++ = 0.5f * (xAR + xBR + p0 + p3 ); //xAR\n      *pOut++ = 0.5f * (xAI - xBI + p1 - p2 ); //xAI\n\n      pA += 2;\n      pB -= 2;\n      k--;\n   } while (k > 0U);\n}\n\n/* Prepares data for inverse cfft */\nvoid merge_rfft_f32(\n  const arm_rfft_fast_instance_f32 * S,\n        float32_t * p,\n        float32_t * pOut)\n{\n        uint32_t  k;                                /* Loop Counter */\n        float32_t twR, twI;                         /* RFFT Twiddle coefficients */\n  const float32_t *pCoeff = S->pTwiddleRFFT;        /* Points to RFFT Twiddle factors */\n        float32_t *pA = p;                          /* increasing pointer */\n        float32_t *pB = p;                          /* decreasing pointer */\n        float32_t xAR, xAI, xBR, xBI;               /* temporary variables */\n        float32_t t1a, t1b, r, s, t, u;             /* temporary variables */\n\n   k = (S->Sint).fftLen - 1;\n\n   xAR = pA[0];\n   xAI = pA[1];\n\n   pCoeff += 2 ;\n\n   *pOut++ = 0.5f * ( xAR + xAI );\n   *pOut++ = 0.5f * ( xAR - xAI );\n\n   pB  =  p + 2*k ;\n   pA +=  2\t   ;\n\n   while (k > 0U)\n   {\n      /* G is half of the frequency complex spectrum */\n      //for k = 2:N\n      //    Xk(k) = 1/2 * (G(k) + conj(G(N-k+2)) + Tw(k)*( G(k) - conj(G(N-k+2))));\n      xBI =   pB[1]    ;\n      xBR =   pB[0]    ;\n      xAR =  pA[0];\n      xAI =  pA[1];\n\n      twR = *pCoeff++;\n      twI = *pCoeff++;\n\n      t1a = xAR - xBR ;\n      t1b = xAI + xBI ;\n\n      r = twR * t1a;\n      s = twI * t1b;\n      t = twI * t1a;\n      u = twR * t1b;\n\n      // real(tw * (xA - xB)) = twR * (xAR - xBR) - twI * (xAI - xBI);\n      // imag(tw * (xA - xB)) = twI * (xAR - xBR) + twR * (xAI - xBI);\n      *pOut++ = 0.5f * (xAR + xBR - r - s ); //xAR\n      *pOut++ = 0.5f * (xAI - xBI + t - u ); //xAI\n\n      pA += 2;\n      pB -= 2;\n      k--;\n   }\n\n}\n\n/**\n  @ingroup groupTransforms\n*/\n\n/**\n  @defgroup RealFFT Real FFT Functions\n \n  @par\n                   The CMSIS DSP library includes specialized algorithms for computing the\n                   FFT of real data sequences.  The FFT is defined over complex data but\n                   in many applications the input is real.  Real FFT algorithms take advantage\n                   of the symmetry properties of the FFT and have a speed advantage over complex\n                   algorithms of the same length.\n  @par\n                   The Fast RFFT algorith relays on the mixed radix CFFT that save processor usage.\n  @par\n                   The real length N forward FFT of a sequence is computed using the steps shown below.\n  @par\n                   \\image html RFFT.gif \"Real Fast Fourier Transform\"\n  @par\n                   The real sequence is initially treated as if it were complex to perform a CFFT.\n                   Later, a processing stage reshapes the data to obtain half of the frequency spectrum\n                   in complex format. Except the first complex number that contains the two real numbers\n                   X[0] and X[N/2] all the data is complex. In other words, the first complex sample\n                   contains two real values packed.\n  @par\n                   The input for the inverse RFFT should keep the same format as the output of the\n                   forward RFFT. A first processing stage pre-process the data to later perform an\n                   inverse CFFT.\n  @par\n                   \\image html RIFFT.gif \"Real Inverse Fast Fourier Transform\"\n  @par\n                   The algorithms for floating-point, Q15, and Q31 data are slightly different\n                   and we describe each algorithm in turn.\n  @par           Floating-point\n                   The main functions are \\ref arm_rfft_fast_f32() and \\ref arm_rfft_fast_init_f32().\n                   The older functions \\ref arm_rfft_f32() and \\ref arm_rfft_init_f32() have been deprecated\n                   but are still documented.\n  @par\n                   The FFT of a real N-point sequence has even symmetry in the frequency domain. \n                   The second half of the data equals the conjugate of the first half flipped in frequency. \n                   Looking at the data, we see that we can uniquely represent the FFT using only N/2 complex numbers.\n                   These are packed into the output array in alternating real and imaginary components:\n  @par\n                   X = { real[0], imag[0], real[1], imag[1], real[2], imag[2] ...\n                   real[(N/2)-1], imag[(N/2)-1 }\n  @par\n                   It happens that the first complex number (real[0], imag[0]) is actually\n                   all real. real[0] represents the DC offset, and imag[0] should be 0.\n                   (real[1], imag[1]) is the fundamental frequency, (real[2], imag[2]) is\n                   the first harmonic and so on.\n  @par\n                   The real FFT functions pack the frequency domain data in this fashion.\n                   The forward transform outputs the data in this form and the inverse\n                   transform expects input data in this form. The function always performs\n                   the needed bitreversal so that the input and output data is always in\n                   normal order. The functions support lengths of [32, 64, 128, ..., 4096]\n                   samples.\n  @par           Q15 and Q31\n                   The real algorithms are defined in a similar manner and utilize N/2 complex\n                   transforms behind the scenes.\n  @par\n                   The complex transforms used internally include scaling to prevent fixed-point\n                   overflows.  The overall scaling equals 1/(fftLen/2).\n  @par\n                   A separate instance structure must be defined for each transform used but\n                   twiddle factor and bit reversal tables can be reused.\n  @par\n                   There is also an associated initialization function for each data type.\n                   The initialization function performs the following operations:\n                    - Sets the values of the internal structure fields.\n                    - Initializes twiddle factor table and bit reversal table pointers.\n                    - Initializes the internal complex FFT data structure.\n  @par\n                   Use of the initialization function is optional.\n                   However, if the initialization function is used, then the instance structure\n                   cannot be placed into a const data section. To place an instance structure\n                   into a const data section, the instance structure should be manually\n                   initialized as follows:\n  <pre>\n      arm_rfft_instance_q31 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};\n      arm_rfft_instance_q15 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};\n  </pre>\n                   where <code>fftLenReal</code> is the length of the real transform;\n                   <code>fftLenBy2</code> length of  the internal complex transform.\n                   <code>ifftFlagR</code> Selects forward (=0) or inverse (=1) transform.\n                   <code>bitReverseFlagR</code> Selects bit reversed output (=0) or normal order\n                   output (=1).\n                   <code>twidCoefRModifier</code> stride modifier for the twiddle factor table.\n                   The value is based on the FFT length;\n                   <code>pTwiddleAReal</code>points to the A array of twiddle coefficients;\n                   <code>pTwiddleBReal</code>points to the B array of twiddle coefficients;\n                   <code>pCfft</code> points to the CFFT Instance structure. The CFFT structure\n                   must also be initialized.  Refer to arm_cfft_radix4_f32() for details regarding\n                   static initialization of the complex FFT instance structure.\n */\n\n/**\n  @addtogroup RealFFT\n  @{\n*/\n\n/**\n  @brief         Processing function for the floating-point real FFT.\n  @param[in]     S         points to an arm_rfft_fast_instance_f32 structure\n  @param[in]     p         points to input buffer\n  @param[in]     pOut      points to output buffer\n  @param[in]     ifftFlag\n                   - value = 0: RFFT\n                   - value = 1: RIFFT\n  @return        none\n*/\n\nvoid arm_rfft_fast_f32(\n  arm_rfft_fast_instance_f32 * S,\n  float32_t * p,\n  float32_t * pOut,\n  uint8_t ifftFlag)\n{\n   arm_cfft_instance_f32 * Sint = &(S->Sint);\n   Sint->fftLen = S->fftLenRFFT / 2;\n\n   /* Calculation of Real FFT */\n   if (ifftFlag)\n   {\n      /*  Real FFT compression */\n      merge_rfft_f32(S, p, pOut);\n\n      /* Complex radix-4 IFFT process */\n      arm_cfft_f32( Sint, pOut, ifftFlag, 1);\n   }\n   else\n   {\n      /* Calculation of RFFT of input */\n      arm_cfft_f32( Sint, p, ifftFlag, 1);\n\n      /*  Real FFT extraction */\n      stage_rfft_f32(S, p, pOut);\n   }\n}\n\n/**\n* @} end of RealFFT group\n*/\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_cfft_init_f32.c\n * Description:  Split Radix Decimation in Frequency CFFT Floating point processing function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n/**\n  @ingroup groupTransforms\n */\n\n/**\n  @addtogroup RealFFT\n  @{\n */\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_BITREVIDX_FLT_16) && defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_32))\n\n/**\n  @brief         Initialization function for the 32pt floating-point real FFT.\n  @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n */\n\narm_status arm_rfft_32_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 16U;\n  S->fftLenRFFT = 32U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_16_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable16;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_16;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_32;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32) && defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_64))\n\n/**\n  @brief         Initialization function for the 64pt floating-point real FFT.\n  @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n */\n\narm_status arm_rfft_64_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 32U;\n  S->fftLenRFFT = 64U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_32_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable32;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_32;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_64;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64) && defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_128))\n\n/**\n  @brief         Initialization function for the 128pt floating-point real FFT.\n  @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n */\n\narm_status arm_rfft_128_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 64U;\n  S->fftLenRFFT = 128U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_64_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable64;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_64;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_128;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128) && defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_256))\n\n/**\n  @brief         Initialization function for the 256pt floating-point real FFT.\n  @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n*/\n\narm_status arm_rfft_256_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 128U;\n  S->fftLenRFFT = 256U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_128_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable128;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_128;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_256;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256) && defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_512))\n\n/**\n  @brief         Initialization function for the 512pt floating-point real FFT.\n  @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n */\n\narm_status arm_rfft_512_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 256U;\n  S->fftLenRFFT = 512U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_256_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable256;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_256;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_512;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif \n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512) && defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_1024))\n/**\n  @brief         Initialization function for the 1024pt floating-point real FFT.\n  @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n */\n\narm_status arm_rfft_1024_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 512U;\n  S->fftLenRFFT = 1024U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_512_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable512;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_512;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_1024;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024) && defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_2048))\n/**\n  @brief         Initialization function for the 2048pt floating-point real FFT.\n  @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n */\narm_status arm_rfft_2048_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 1024U;\n  S->fftLenRFFT = 2048U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_1024_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable1024;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_1024;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_2048;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif\n\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048) && defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_4096))\n/**\n* @brief         Initialization function for the 4096pt floating-point real FFT.\n* @param[in,out] S  points to an arm_rfft_fast_instance_f32 structure\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : an error is detected\n */\n\narm_status arm_rfft_4096_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {\n\n  arm_cfft_instance_f32 * Sint;\n\n  if( !S ) return ARM_MATH_ARGUMENT_ERROR;\n\n  Sint = &(S->Sint);\n  Sint->fftLen = 2048U;\n  S->fftLenRFFT = 4096U;\n\n  Sint->bitRevLength = ARMBITREVINDEXTABLE_2048_TABLE_LENGTH;\n  Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable2048;\n  Sint->pTwiddle     = (float32_t *) twiddleCoef_2048;\n  S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_4096;\n\n  return ARM_MATH_SUCCESS;\n}\n#endif \n\n/**\n  @brief         Initialization function for the floating-point real FFT.\n  @param[in,out] S       points to an arm_rfft_fast_instance_f32 structure\n  @param[in]     fftLen  length of the Real Sequence\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLen</code> is not a supported length\n\n  @par           Description\n                   The parameter <code>fftLen</code> specifies the length of RFFT/CIFFT process.\n                   Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096.\n  @par\n                   This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.\n */\n\narm_status arm_rfft_fast_init_f32(\n  arm_rfft_fast_instance_f32 * S,\n  uint16_t fftLen)\n{\n  typedef arm_status(*fft_init_ptr)( arm_rfft_fast_instance_f32 *);\n  fft_init_ptr fptr = 0x0;\n\n  switch (fftLen)\n  {\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048) && defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_4096))\n  case 4096U:\n    fptr = arm_rfft_4096_fast_init_f32;\n    break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024) && defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_2048))\n  case 2048U:\n    fptr = arm_rfft_2048_fast_init_f32;\n    break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512) && defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_1024))\n  case 1024U:\n    fptr = arm_rfft_1024_fast_init_f32;\n    break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256) && defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_512))\n  case 512U:\n    fptr = arm_rfft_512_fast_init_f32;\n    break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128) && defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_256))\n  case 256U:\n    fptr = arm_rfft_256_fast_init_f32;\n    break;\n#endif\n#if (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64) && defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_128))\n  case 128U:\n    fptr = arm_rfft_128_fast_init_f32;\n    break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32) && defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_64))\n  case 64U:\n    fptr = arm_rfft_64_fast_init_f32;\n    break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_BITREVIDX_FLT_16) && defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_32))\n  case 32U:\n    fptr = arm_rfft_32_fast_init_f32;\n    break;\n#endif\n  default:\n    return ARM_MATH_ARGUMENT_ERROR;\n  }\n\n  if( ! fptr ) return ARM_MATH_ARGUMENT_ERROR;\n  return fptr( S );\n\n}\n\n/**\n  @} end of RealFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rfft_init_f32.c\n * Description:  RFFT & RIFFT Floating point initialisation function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n\n/**\n  @addtogroup RealFFT\n  @{\n */\n\n/**\n  @brief         Initialization function for the floating-point RFFT/RIFFT.\n  @deprecated    Do not use this function. It has been superceded by \\ref arm_rfft_fast_init_f32 and will be removed in the future.\n  @param[in,out] S             points to an instance of the floating-point RFFT/RIFFT structure\n  @param[in,out] S_CFFT        points to an instance of the floating-point CFFT/CIFFT structure\n  @param[in]     fftLenReal     length of the FFT.\n  @param[in]     ifftFlagR      flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLenReal</code> is not a supported length\n\n  @par Description\n                   The parameter <code>fftLenReal</code>specifies length of RFFT/RIFFT Process.\n                   Supported FFT Lengths are 128, 512, 2048.\n  @par\n                   The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   This function also initializes Twiddle factor table.\n */\n\narm_status arm_rfft_init_f32(\n  arm_rfft_instance_f32 * S,\n  arm_cfft_radix4_instance_f32 * S_CFFT,\n  uint32_t fftLenReal,\n  uint32_t ifftFlagR,\n  uint32_t bitReverseFlag)\n{\n\n  /*  Initialise the default arm status */\n  arm_status status = ARM_MATH_SUCCESS;\n\n  /*  Initialize the Real FFT length */\n  S->fftLenReal = (uint16_t) fftLenReal;\n\n  /*  Initialize the Complex FFT length */\n  S->fftLenBy2 = (uint16_t) fftLenReal / 2U;\n\n  /*  Initialize the Twiddle coefficientA pointer */\n  S->pTwiddleAReal = (float32_t *) realCoefA;\n\n  /*  Initialize the Twiddle coefficientB pointer */\n  S->pTwiddleBReal = (float32_t *) realCoefB;\n\n  /*  Initialize the Flag for selection of RFFT or RIFFT */\n  S->ifftFlagR = (uint8_t) ifftFlagR;\n\n  /*  Initialize the Flag for calculation Bit reversal or not */\n  S->bitReverseFlagR = (uint8_t) bitReverseFlag;\n\n  /*  Initializations of structure parameters depending on the FFT length */\n  switch (S->fftLenReal)\n  {\n    /* Init table modifier value */\n  case 8192U:\n    S->twidCoefRModifier = 1U;\n    break;\n  case 2048U:\n    S->twidCoefRModifier = 4U;\n    break;\n  case 512U:\n    S->twidCoefRModifier = 16U;\n    break;\n  case 128U:\n    S->twidCoefRModifier = 64U;\n    break;\n  default:\n    /*  Reporting argument error if rfftSize is not valid value */\n    status = ARM_MATH_ARGUMENT_ERROR;\n    break;\n  }\n\n  /* Init Complex FFT Instance */\n  S->pCfft = S_CFFT;\n\n  if (S->ifftFlagR)\n  {\n    /* Initializes the CIFFT Module for fftLenreal/2 length */\n    arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 1U, 0U);\n  }\n  else\n  {\n    /* Initializes the CFFT Module for fftLenreal/2 length */\n    arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 0U, 0U);\n  }\n\n  /* return the status of RFFT Init function */\n  return (status);\n\n}\n\n/**\n  @} end of RealFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rfft_init_q15.c\n * Description:  RFFT & RIFFT Q15 initialisation function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n#include \"arm_const_structs.h\"\n\n/**\n  @addtogroup RealFFT\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q15 RFFT/RIFFT.\n  @param[in,out] S              points to an instance of the Q15 RFFT/RIFFT structure\n  @param[in]     fftLenReal     length of the FFT\n  @param[in]     ifftFlagR      flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLenReal</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>fftLenReal</code> specifies length of RFFT/RIFFT Process.\n                   Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192.\n  @par\n                   The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   This function also initializes Twiddle factor table.\n */\n\narm_status arm_rfft_init_q15(\n    arm_rfft_instance_q15 * S,\n    uint32_t fftLenReal,\n    uint32_t ifftFlagR,\n    uint32_t bitReverseFlag)\n{\n    /*  Initialise the default arm status */\n    arm_status status = ARM_MATH_SUCCESS;\n\n    /*  Initialize the Real FFT length */\n    S->fftLenReal = (uint16_t) fftLenReal;\n\n    /*  Initialize the Twiddle coefficientA pointer */\n    S->pTwiddleAReal = (q15_t *) realCoefAQ15;\n\n    /*  Initialize the Twiddle coefficientB pointer */\n    S->pTwiddleBReal = (q15_t *) realCoefBQ15;\n\n    /*  Initialize the Flag for selection of RFFT or RIFFT */\n    S->ifftFlagR = (uint8_t) ifftFlagR;\n\n    /*  Initialize the Flag for calculation Bit reversal or not */\n    S->bitReverseFlagR = (uint8_t) bitReverseFlag;\n\n    /*  Initialization of coef modifier depending on the FFT length */\n    switch (S->fftLenReal)\n    {\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))\n    case 8192U:\n        S->twidCoefRModifier = 1U;\n        S->pCfft = &arm_cfft_sR_q15_len4096;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))\n    case 4096U:\n        S->twidCoefRModifier = 2U;\n        S->pCfft = &arm_cfft_sR_q15_len2048;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))\n    case 2048U:\n        S->twidCoefRModifier = 4U;\n        S->pCfft = &arm_cfft_sR_q15_len1024;\n        break;\n#endif \n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))\n    case 1024U:\n        S->twidCoefRModifier = 8U;\n        S->pCfft = &arm_cfft_sR_q15_len512;\n        break;\n#endif \n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))\n    case 512U:\n        S->twidCoefRModifier = 16U;\n        S->pCfft = &arm_cfft_sR_q15_len256;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))\n    case 256U:\n        S->twidCoefRModifier = 32U;\n        S->pCfft = &arm_cfft_sR_q15_len128;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))\n    case 128U:\n        S->twidCoefRModifier = 64U;\n        S->pCfft = &arm_cfft_sR_q15_len64;\n        break;\n#endif \n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))\n    case 64U:\n        S->twidCoefRModifier = 128U;\n        S->pCfft = &arm_cfft_sR_q15_len32;\n        break;\n#endif \n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))\n    case 32U:\n        S->twidCoefRModifier = 256U;\n        S->pCfft = &arm_cfft_sR_q15_len16;\n        break;\n#endif\n    default:\n        /*  Reporting argument error if rfftSize is not valid value */\n        status = ARM_MATH_ARGUMENT_ERROR;\n        break;\n    }\n\n    /* return the status of RFFT Init function */\n    return (status);\n}\n\n/**\n  @} end of RealFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rfft_init_q31.c\n * Description:  RFFT & RIFFT Q31 initialisation function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n#include \"arm_const_structs.h\"\n\n\n\n/**\n  @addtogroup RealFFT\n  @{\n */\n\n/**\n  @brief         Initialization function for the Q31 RFFT/RIFFT.\n  @param[in,out] S              points to an instance of the Q31 RFFT/RIFFT structure\n  @param[in]     fftLenReal     length of the FFT\n  @param[in]     ifftFlagR      flag that selects transform direction\n                   - value = 0: forward transform\n                   - value = 1: inverse transform\n  @param[in]     bitReverseFlag flag that enables / disables bit reversal of output\n                   - value = 0: disables bit reversal of output\n                   - value = 1: enables bit reversal of output\n  @return        execution status\n                   - \\ref ARM_MATH_SUCCESS        : Operation successful\n                   - \\ref ARM_MATH_ARGUMENT_ERROR : <code>fftLenReal</code> is not a supported length\n\n  @par           Details\n                   The parameter <code>fftLenReal</code> specifies length of RFFT/RIFFT Process.\n                   Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192.\n  @par\n                   The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.\n                   Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.\n  @par\n                   The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.\n                   Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.\n  @par\n                   This function also initializes Twiddle factor table.\n*/\n\narm_status arm_rfft_init_q31(\n    arm_rfft_instance_q31 * S,\n    uint32_t fftLenReal,\n    uint32_t ifftFlagR,\n    uint32_t bitReverseFlag)\n{\n    /*  Initialise the default arm status */\n    arm_status status = ARM_MATH_SUCCESS;\n\n    /*  Initialize the Real FFT length */\n    S->fftLenReal = (uint16_t) fftLenReal;\n\n    /*  Initialize the Twiddle coefficientA pointer */\n    S->pTwiddleAReal = (q31_t *) realCoefAQ31;\n\n    /*  Initialize the Twiddle coefficientB pointer */\n    S->pTwiddleBReal = (q31_t *) realCoefBQ31;\n\n    /*  Initialize the Flag for selection of RFFT or RIFFT */\n    S->ifftFlagR = (uint8_t) ifftFlagR;\n\n    /*  Initialize the Flag for calculation Bit reversal or not */\n    S->bitReverseFlagR = (uint8_t) bitReverseFlag;\n\n    /*  Initialization of coef modifier depending on the FFT length */\n    switch (S->fftLenReal)\n    {\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))\n    case 8192U:\n        S->twidCoefRModifier = 1U;\n        S->pCfft = &arm_cfft_sR_q31_len4096;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))\n    case 4096U:\n        S->twidCoefRModifier = 2U;\n        S->pCfft = &arm_cfft_sR_q31_len2048;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))\n    case 2048U:\n        S->twidCoefRModifier = 4U;\n        S->pCfft = &arm_cfft_sR_q31_len1024;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))\n    case 1024U:\n        S->twidCoefRModifier = 8U;\n        S->pCfft = &arm_cfft_sR_q31_len512;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))\n    case 512U:\n        S->twidCoefRModifier = 16U;\n        S->pCfft = &arm_cfft_sR_q31_len256;\n        break;\n#endif \n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))\n    case 256U:\n        S->twidCoefRModifier = 32U;\n        S->pCfft = &arm_cfft_sR_q31_len128;\n        break;\n#endif \n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))\n    case 128U:\n        S->twidCoefRModifier = 64U;\n        S->pCfft = &arm_cfft_sR_q31_len64;\n        break;\n#endif\n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))\n    case 64U:\n        S->twidCoefRModifier = 128U;\n        S->pCfft = &arm_cfft_sR_q31_len32;\n        break;\n#endif \n#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))\n    case 32U:\n        S->twidCoefRModifier = 256U;\n        S->pCfft = &arm_cfft_sR_q31_len16;\n        break;\n#endif\n    default:\n        /*  Reporting argument error if rfftSize is not valid value */\n        status = ARM_MATH_ARGUMENT_ERROR;\n        break;\n    }\n\n    /* return the status of RFFT Init function */\n    return (status);\n}\n\n/**\n  @} end of RealFFT group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rfft_q15.c\n * Description:  RFFT & RIFFT Q15 process function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n * Internal functions prototypes\n * -------------------------------------------------------------------- */\n\nvoid arm_split_rfft_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pATable,\n  const q15_t * pBTable,\n        q15_t * pDst,\n        uint32_t modifier);\n\nvoid arm_split_rifft_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pATable,\n  const q15_t * pBTable,\n        q15_t * pDst,\n        uint32_t modifier);\n\n/**\n  @addtogroup RealFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the Q15 RFFT/RIFFT.\n  @param[in]     S     points to an instance of the Q15 RFFT/RIFFT structure\n  @param[in]     pSrc  points to input buffer\n  @param[out]    pDst  points to output buffer\n  @return        none\n\n  @par           Input an output formats\n                   Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.\n                   Hence the output format is different for different RFFT sizes.\n                   The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:\n  @par\n                   \\image html RFFTQ15.gif \"Input and Output Formats for Q15 RFFT\"\n  @par\n                   \\image html RIFFTQ15.gif \"Input and Output Formats for Q15 RIFFT\"\n */\n\nvoid arm_rfft_q15(\n  const arm_rfft_instance_q15 * S,\n        q15_t * pSrc,\n        q15_t * pDst)\n{\n  const arm_cfft_instance_q15 *S_CFFT = S->pCfft;\n        uint32_t L2 = S->fftLenReal >> 1U;\n        uint32_t i;\n\n  /* Calculation of RIFFT of input */\n  if (S->ifftFlagR == 1U)\n  {\n     /*  Real IFFT core process */\n     arm_split_rifft_q15 (pSrc, L2, S->pTwiddleAReal, S->pTwiddleBReal, pDst, S->twidCoefRModifier);\n\n     /* Complex IFFT process */\n     arm_cfft_q15 (S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR);\n\n     for(i = 0; i < S->fftLenReal; i++)\n     {\n        pDst[i] = pDst[i] << 1U;\n     }\n  }\n  else\n  {\n     /* Calculation of RFFT of input */\n\n     /* Complex FFT process */\n     arm_cfft_q15 (S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR);\n\n     /*  Real FFT core process */\n     arm_split_rfft_q15 (pSrc, L2, S->pTwiddleAReal, S->pTwiddleBReal, pDst, S->twidCoefRModifier);\n  }\n\n}\n\n/**\n  @} end of RealFFT group\n */\n\n/**\n  @brief         Core Real FFT process\n  @param[in]     pSrc      points to input buffer\n  @param[in]     fftLen    length of FFT\n  @param[in]     pATable   points to twiddle Coef A buffer\n  @param[in]     pBTable   points to twiddle Coef B buffer\n  @param[out]    pDst      points to output buffer\n  @param[in]     modifier  twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  @return        none\n\n  @par\n                   The function implements a Real FFT\n */\n\nvoid arm_split_rfft_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pATable,\n  const q15_t * pBTable,\n        q15_t * pDst,\n        uint32_t modifier)\n{       \n        uint32_t i;                                    /* Loop Counter */\n        q31_t outR, outI;                              /* Temporary variables for output */\n  const q15_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */\n        q15_t *pSrc1, *pSrc2;\n#if defined (ARM_MATH_DSP)\n        q15_t *pD1, *pD2;\n#endif\n\n  /* Init coefficient pointers */\n  pCoefA = &pATable[modifier * 2];\n  pCoefB = &pBTable[modifier * 2];\n\n  pSrc1 = &pSrc[2];\n  pSrc2 = &pSrc[(2U * fftLen) - 2U];\n\n#if defined (ARM_MATH_DSP)\n\n    i = 1U;\n    pD1 = pDst + 2;\n    pD2 = pDst + (4U * fftLen) - 2;\n\n    for (i = fftLen - 1; i > 0; i--)\n    {\n        /*\n          outR = (  pSrc[2 * i]             * pATable[2 * i]\n                  - pSrc[2 * i + 1]         * pATable[2 * i + 1]\n                  + pSrc[2 * n - 2 * i]     * pBTable[2 * i]\n                  + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);\n\n          outI = (  pIn[2 * i + 1]         * pATable[2 * i]\n                  + pIn[2 * i]             * pATable[2 * i + 1]\n                  + pIn[2 * n - 2 * i]     * pBTable[2 * i + 1]\n                  - pIn[2 * n - 2 * i + 1] * pBTable[2 * i])\n         */\n\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        /* pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] */\n        outR = __SMUSD(read_q15x2 (pSrc1), read_q15x2((q15_t *) pCoefA));\n#else\n        /* -(pSrc[2 * i + 1] * pATable[2 * i + 1] - pSrc[2 * i] * pATable[2 * i]) */\n        outR = -(__SMUSD(read_q15x2 (pSrc1), read_q15x2((q15_t *) pCoefA)));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* pSrc[2 * n - 2 * i] * pBTable[2 * i] + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */\n        outR = __SMLAD(read_q15x2 (pSrc2), read_q15x2((q15_t *) pCoefB), outR) >> 16U;\n\n        /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */\n#ifndef ARM_MATH_BIG_ENDIAN\n        outI = __SMUSDX(read_q15x2_da (&pSrc2), read_q15x2((q15_t *) pCoefB));\n#else\n        outI = __SMUSDX(read_q15x2 ((q15_t *) pCoefB), read_q15x2_da (&pSrc2));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n        /* (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] */\n        outI = __SMLADX(read_q15x2_ia (&pSrc1), read_q15x2 ((q15_t *) pCoefA), outI);\n\n        /* write output */\n        *pD1++ = (q15_t) outR;\n        *pD1++ = outI >> 16U;\n\n        /* write complex conjugate output */\n        pD2[0] = (q15_t) outR;\n        pD2[1] = -(outI >> 16U);\n        pD2 -= 2;\n\n        /* update coefficient pointer */\n        pCoefB = pCoefB + (2U * modifier);\n        pCoefA = pCoefA + (2U * modifier);\n    }\n\n    pDst[2U * fftLen]      = (pSrc[0] - pSrc[1]) >> 1U;\n    pDst[2U * fftLen + 1U] = 0;\n\n    pDst[0] = (pSrc[0] + pSrc[1]) >> 1U;\n    pDst[1] = 0;\n\n#else\n\n    i = 1U;\n\n    while (i < fftLen)\n    {\n        /*\n          outR = (  pSrc[2 * i]             * pATable[2 * i]\n                  - pSrc[2 * i + 1]         * pATable[2 * i + 1]\n                  + pSrc[2 * n - 2 * i]     * pBTable[2 * i]\n                  + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);\n        */\n\n        outR = *pSrc1 * *pCoefA;\n        outR = outR - (*(pSrc1 + 1) * *(pCoefA + 1));\n        outR = outR + (*pSrc2 * *pCoefB);\n        outR = (outR + (*(pSrc2 + 1) * *(pCoefB + 1))) >> 16;\n\n        /*\n          outI = (  pIn[2 * i + 1]         * pATable[2 * i]\n                  + pIn[2 * i]             * pATable[2 * i + 1]\n                  + pIn[2 * n - 2 * i]     * pBTable[2 * i + 1]\n                  - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);\n        */\n\n        outI = *pSrc2 * *(pCoefB + 1);\n        outI = outI - (*(pSrc2 + 1) * *pCoefB);\n        outI = outI + (*(pSrc1 + 1) * *pCoefA);\n        outI = outI + (*pSrc1 * *(pCoefA + 1));\n\n        /* update input pointers */\n        pSrc1 += 2U;\n        pSrc2 -= 2U;\n\n        /* write output */\n        pDst[2U * i] = (q15_t) outR;\n        pDst[2U * i + 1U] = outI >> 16U;\n\n        /* write complex conjugate output */\n        pDst[(4U * fftLen) - (2U * i)] = (q15_t) outR;\n        pDst[((4U * fftLen) - (2U * i)) + 1U] = -(outI >> 16U);\n\n        /* update coefficient pointer */\n        pCoefB = pCoefB + (2U * modifier);\n        pCoefA = pCoefA + (2U * modifier);\n\n        i++;\n    }\n\n    pDst[2U * fftLen] = (pSrc[0] - pSrc[1]) >> 1;\n    pDst[2U * fftLen + 1U] = 0;\n\n    pDst[0] = (pSrc[0] + pSrc[1]) >> 1;\n    pDst[1] = 0;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n}\n\n\n/**\n  @brief         Core Real IFFT process\n  @param[in]     pSrc      points to input buffer\n  @param[in]     fftLen    length of FFT\n  @param[in]     pATable   points to twiddle Coef A buffer\n  @param[in]     pBTable   points to twiddle Coef B buffer\n  @param[out]    pDst      points to output buffer\n  @param[in]     modifier  twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  @return        none\n\n  @par\n                   The function implements a Real IFFT\n */\n\nvoid arm_split_rifft_q15(\n        q15_t * pSrc,\n        uint32_t fftLen,\n  const q15_t * pATable,\n  const q15_t * pBTable,\n        q15_t * pDst,\n        uint32_t modifier)\n{\n        uint32_t i;                                    /* Loop Counter */\n        q31_t outR, outI;                              /* Temporary variables for output */\n  const q15_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */\n        q15_t *pSrc1, *pSrc2;\n        q15_t *pDst1 = &pDst[0];\n\n  pCoefA = &pATable[0];\n  pCoefB = &pBTable[0];\n\n  pSrc1 = &pSrc[0];\n  pSrc2 = &pSrc[2 * fftLen];\n\n  i = fftLen;\n  while (i > 0U)\n  {\n      /*\n        outR = (  pIn[2 * i]             * pATable[2 * i]\n                + pIn[2 * i + 1]         * pATable[2 * i + 1]\n                + pIn[2 * n - 2 * i]     * pBTable[2 * i]\n                - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);\n\n        outI = (  pIn[2 * i + 1]         * pATable[2 * i]\n                - pIn[2 * i]             * pATable[2 * i + 1]\n                - pIn[2 * n - 2 * i]     * pBTable[2 * i + 1]\n                - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);\n       */\n\n#if defined (ARM_MATH_DSP)\n\n#ifndef ARM_MATH_BIG_ENDIAN\n      /* pIn[2 * n - 2 * i] * pBTable[2 * i] - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */\n      outR = __SMUSD(read_q15x2(pSrc2), read_q15x2((q15_t *) pCoefB));\n#else\n      /* -(-pIn[2 * n - 2 * i] * pBTable[2 * i] + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1])) */\n      outR = -(__SMUSD(read_q15x2(pSrc2), read_q15x2((q15_t *) pCoefB)));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n      /* pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + pIn[2 * n - 2 * i] * pBTable[2 * i] */\n      outR = __SMLAD(read_q15x2(pSrc1), read_q15x2 ((q15_t *) pCoefA), outR) >> 16U;\n\n      /* -pIn[2 * n - 2 * i] * pBTable[2 * i + 1] + pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */\n      outI = __SMUADX(read_q15x2_da (&pSrc2), read_q15x2((q15_t *) pCoefB));\n\n      /* pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] */\n#ifndef ARM_MATH_BIG_ENDIAN\n      outI = __SMLSDX(read_q15x2 ((q15_t *) pCoefA), read_q15x2_ia (&pSrc1), -outI);\n#else\n      outI = __SMLSDX(read_q15x2_ia (&pSrc1), read_q15x2 ((q15_t *) pCoefA), -outI);\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n      /* write output */\n#ifndef ARM_MATH_BIG_ENDIAN\n      write_q15x2_ia (&pDst1, __PKHBT(outR, (outI >> 16U), 16));\n#else\n      write_q15x2_ia (&pDst1, __PKHBT((outI >> 16U), outR, 16));\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n\n#else  /* #if defined (ARM_MATH_DSP) */\n\n      outR = *pSrc2 * *pCoefB;\n      outR = outR - (*(pSrc2 + 1) * *(pCoefB + 1));\n      outR = outR + (*pSrc1 * *pCoefA);\n      outR = (outR + (*(pSrc1 + 1) * *(pCoefA + 1))) >> 16;\n\n      outI = *(pSrc1 + 1) * *pCoefA;\n      outI = outI - (*pSrc1 * *(pCoefA + 1));\n      outI = outI - (*pSrc2 * *(pCoefB + 1));\n      outI = outI - (*(pSrc2 + 1) * *(pCoefB));\n\n      /* update input pointers */\n      pSrc1 += 2U;\n      pSrc2 -= 2U;\n\n      /* write output */\n      *pDst1++ = (q15_t) outR;\n      *pDst1++ = (q15_t) (outI >> 16);\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n      /* update coefficient pointer */\n      pCoefB = pCoefB + (2 * modifier);\n      pCoefA = pCoefA + (2 * modifier);\n\n      i--;\n  }\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS DSP Library\n * Title:        arm_rfft_q31.c\n * Description:  FFT & RIFFT Q31 process function\n *\n * $Date:        18. March 2019\n * $Revision:    V1.6.0\n *\n * Target Processor: Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n\n/* ----------------------------------------------------------------------\n * Internal functions prototypes\n * -------------------------------------------------------------------- */\n\nvoid arm_split_rfft_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pATable,\n  const q31_t * pBTable,\n        q31_t * pDst,\n        uint32_t modifier);\n\nvoid arm_split_rifft_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pATable,\n  const q31_t * pBTable,\n        q31_t * pDst,\n        uint32_t modifier);\n\n/**\n  @addtogroup RealFFT\n  @{\n */\n\n/**\n  @brief         Processing function for the Q31 RFFT/RIFFT.\n  @param[in]     S     points to an instance of the Q31 RFFT/RIFFT structure\n  @param[in]     pSrc  points to input buffer\n  @param[out]    pDst  points to output buffer\n  @return        none\n\n  @par           Input an output formats\n                   Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.\n                   Hence the output format is different for different RFFT sizes.\n                   The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:\n  @par\n                   \\image html RFFTQ31.gif \"Input and Output Formats for Q31 RFFT\"\n  @par\n                   \\image html RIFFTQ31.gif \"Input and Output Formats for Q31 RIFFT\"\n */\n\nvoid arm_rfft_q31(\n  const arm_rfft_instance_q31 * S,\n        q31_t * pSrc,\n        q31_t * pDst)\n{\n  const arm_cfft_instance_q31 *S_CFFT = S->pCfft;\n        uint32_t L2 = S->fftLenReal >> 1U;\n        uint32_t i;\n\n  /* Calculation of RIFFT of input */\n  if (S->ifftFlagR == 1U)\n  {\n     /*  Real IFFT core process */\n     arm_split_rifft_q31 (pSrc, L2, S->pTwiddleAReal, S->pTwiddleBReal, pDst, S->twidCoefRModifier);\n\n     /* Complex IFFT process */\n     arm_cfft_q31 (S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR);\n\n     for(i = 0; i < S->fftLenReal; i++)\n     {\n        pDst[i] = pDst[i] << 1U;\n     }\n  }\n  else\n  {\n     /* Calculation of RFFT of input */\n\n     /* Complex FFT process */\n     arm_cfft_q31 (S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR);\n\n     /*  Real FFT core process */\n     arm_split_rfft_q31 (pSrc, L2, S->pTwiddleAReal, S->pTwiddleBReal, pDst, S->twidCoefRModifier);\n  }\n\n}\n\n/**\n  @} end of RealFFT group\n */\n\n/**\n  @brief         Core Real FFT process\n  @param[in]     pSrc      points to input buffer\n  @param[in]     fftLen    length of FFT\n  @param[in]     pATable   points to twiddle Coef A buffer\n  @param[in]     pBTable   points to twiddle Coef B buffer\n  @param[out]    pDst      points to output buffer\n  @param[in]     modifier  twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  @return        none\n */\n\nvoid arm_split_rfft_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pATable,\n  const q31_t * pBTable,\n        q31_t * pDst,\n        uint32_t modifier)\n{\n        uint32_t i;                                    /* Loop Counter */\n        q31_t outR, outI;                              /* Temporary variables for output */\n  const q31_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */\n        q31_t CoefA1, CoefA2, CoefB1;                  /* Temporary variables for twiddle coefficients */\n        q31_t *pOut1 = &pDst[2], *pOut2 = &pDst[4 * fftLen - 1];\n        q31_t *pIn1 =  &pSrc[2], *pIn2 =  &pSrc[2 * fftLen - 1];\n\n  /* Init coefficient pointers */\n  pCoefA = &pATable[modifier * 2];\n  pCoefB = &pBTable[modifier * 2];\n\n  i = fftLen - 1U;\n\n  while (i > 0U)\n  {\n     /*\n       outR = (  pSrc[2 * i]             * pATable[2 * i]\n               - pSrc[2 * i + 1]         * pATable[2 * i + 1]\n               + pSrc[2 * n - 2 * i]     * pBTable[2 * i]\n               + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);\n\n       outI = (  pIn[2 * i + 1]         * pATable[2 * i]\n               + pIn[2 * i]             * pATable[2 * i + 1]\n               + pIn[2 * n - 2 * i]     * pBTable[2 * i + 1]\n               - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);\n      */\n\n     CoefA1 = *pCoefA++;\n     CoefA2 = *pCoefA;\n\n     /* outR = (pSrc[2 * i] * pATable[2 * i] */\n     mult_32x32_keep32_R (outR, *pIn1, CoefA1);\n\n     /* outI = pIn[2 * i] * pATable[2 * i + 1] */\n     mult_32x32_keep32_R (outI, *pIn1++, CoefA2);\n\n     /* - pSrc[2 * i + 1] * pATable[2 * i + 1] */\n     multSub_32x32_keep32_R (outR, *pIn1, CoefA2);\n\n     /* (pIn[2 * i + 1] * pATable[2 * i] */\n     multAcc_32x32_keep32_R (outI, *pIn1++, CoefA1);\n\n     /* pSrc[2 * n - 2 * i] * pBTable[2 * i]  */\n     multSub_32x32_keep32_R (outR, *pIn2, CoefA2);\n     CoefB1 = *pCoefB;\n\n     /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */\n     multSub_32x32_keep32_R (outI, *pIn2--, CoefB1);\n\n     /* pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */\n     multAcc_32x32_keep32_R (outR, *pIn2, CoefB1);\n\n     /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */\n     multSub_32x32_keep32_R (outI, *pIn2--, CoefA2);\n\n     /* write output */\n     *pOut1++ = outR;\n     *pOut1++ = outI;\n\n     /* write complex conjugate output */\n     *pOut2-- = -outI;\n     *pOut2-- = outR;\n\n     /* update coefficient pointer */\n     pCoefB = pCoefB + (2 * modifier);\n     pCoefA = pCoefA + (2 * modifier - 1);\n\n     /* Decrement loop count */\n     i--;\n  }\n\n  pDst[2 * fftLen]     = (pSrc[0] - pSrc[1]) >> 1U;\n  pDst[2 * fftLen + 1] = 0;\n\n  pDst[0] = (pSrc[0] + pSrc[1]) >> 1U;\n  pDst[1] = 0;\n}\n\n\n/**\n  @brief         Core Real IFFT process\n  @param[in]     pSrc      points to input buffer\n  @param[in]     fftLen    length of FFT\n  @param[in]     pATable   points to twiddle Coef A buffer\n  @param[in]     pBTable   points to twiddle Coef B buffer\n  @param[out]    pDst      points to output buffer\n  @param[in]     modifier  twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table\n  @return        none\n */\n\nvoid arm_split_rifft_q31(\n        q31_t * pSrc,\n        uint32_t fftLen,\n  const q31_t * pATable,\n  const q31_t * pBTable,\n        q31_t * pDst,\n        uint32_t modifier)\n{       \n        q31_t outR, outI;                              /* Temporary variables for output */\n  const q31_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */\n        q31_t CoefA1, CoefA2, CoefB1;                  /* Temporary variables for twiddle coefficients */\n        q31_t *pIn1 = &pSrc[0], *pIn2 = &pSrc[2 * fftLen + 1];\n\n  pCoefA = &pATable[0];\n  pCoefB = &pBTable[0];\n\n  while (fftLen > 0U)\n  {\n     /*\n       outR = (  pIn[2 * i]             * pATable[2 * i]\n               + pIn[2 * i + 1]         * pATable[2 * i + 1]\n               + pIn[2 * n - 2 * i]     * pBTable[2 * i]\n               - pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);\n\n       outI = (  pIn[2 * i + 1]         * pATable[2 * i]\n               - pIn[2 * i]             * pATable[2 * i + 1]\n               - pIn[2 * n - 2 * i]     * pBTable[2 * i + 1]\n               - pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);\n      */\n\n     CoefA1 = *pCoefA++;\n     CoefA2 = *pCoefA;\n\n     /* outR = (pIn[2 * i] * pATable[2 * i] */\n     mult_32x32_keep32_R (outR, *pIn1, CoefA1);\n\n     /* - pIn[2 * i] * pATable[2 * i + 1] */\n     mult_32x32_keep32_R (outI, *pIn1++, -CoefA2);\n\n     /* pIn[2 * i + 1] * pATable[2 * i + 1] */\n     multAcc_32x32_keep32_R (outR, *pIn1, CoefA2);\n\n     /* pIn[2 * i + 1] * pATable[2 * i] */\n     multAcc_32x32_keep32_R (outI, *pIn1++, CoefA1);\n\n     /* pIn[2 * n - 2 * i] * pBTable[2 * i] */\n     multAcc_32x32_keep32_R (outR, *pIn2, CoefA2);\n     CoefB1 = *pCoefB;\n\n     /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */\n     multSub_32x32_keep32_R (outI, *pIn2--, CoefB1);\n\n     /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */\n     multAcc_32x32_keep32_R (outR, *pIn2, CoefB1);\n\n     /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */\n     multAcc_32x32_keep32_R (outI, *pIn2--, CoefA2);\n\n     /* write output */\n     *pDst++ = outR;\n     *pDst++ = outI;\n\n     /* update coefficient pointer */\n     pCoefB = pCoefB + (modifier * 2);\n     pCoefA = pCoefA + (modifier * 2 - 1);\n\n     /* Decrement loop count */\n     fftLen--;\n  }\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h750xx.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h750xx.h\n  * @author  MCD Application Team\n  * @brief   CMSIS STM32H750xx Device Peripheral Access Layer Header File.\n  *\n  *          This file contains:\n  *           - Data structures and the address mapping for all peripherals\n  *           - Peripheral's registers declarations and bits definition\n  *           - Macros to access peripheral's registers hardware\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2019 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/** @addtogroup CMSIS_Device\n  * @{\n  */\n\n/** @addtogroup stm32h750xx\n  * @{\n  */\n\n#ifndef STM32H750xx_H\n#define STM32H750xx_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif /* __cplusplus */\n\n/** @addtogroup Peripheral_interrupt_number_definition\n  * @{\n  */\n\n/**\n * @brief STM32H7XX Interrupt Number Definition, according to the selected device\n *        in @ref Library_configuration_section\n */\ntypedef enum\n{\n/******  Cortex-M Processor Exceptions Numbers *****************************************************************/\n  NonMaskableInt_IRQn         = -14,    /*!< 2 Non Maskable Interrupt                                          */\n  HardFault_IRQn              = -13,    /*!< 3 Cortex-M Hard Fault Interrupt                                   */\n  MemoryManagement_IRQn       = -12,    /*!< 4 Cortex-M Memory Management Interrupt                            */\n  BusFault_IRQn               = -11,    /*!< 5 Cortex-M Bus Fault Interrupt                                    */\n  UsageFault_IRQn             = -10,    /*!< 6 Cortex-M Usage Fault Interrupt                                  */\n  SVCall_IRQn                 = -5,     /*!< 11 Cortex-M SV Call Interrupt                                     */\n  DebugMonitor_IRQn           = -4,     /*!< 12 Cortex-M Debug Monitor Interrupt                               */\n  PendSV_IRQn                 = -2,     /*!< 14 Cortex-M Pend SV Interrupt                                     */\n  SysTick_IRQn                = -1,     /*!< 15 Cortex-M System Tick Interrupt                                 */\n/******  STM32 specific Interrupt Numbers **********************************************************************/\n  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt ( wwdg1_it, wwdg2_it)                   */\n  PVD_AVD_IRQn                = 1,      /*!< PVD/AVD through EXTI Line detection Interrupt                     */\n  TAMP_STAMP_IRQn             = 2,      /*!< Tamper and TimeStamp interrupts through the EXTI line             */\n  RTC_WKUP_IRQn               = 3,      /*!< RTC Wakeup interrupt through the EXTI line                        */\n  FLASH_IRQn                  = 4,      /*!< FLASH global Interrupt                                            */\n  RCC_IRQn                    = 5,      /*!< RCC global Interrupt                                              */\n  EXTI0_IRQn                  = 6,      /*!< EXTI Line0 Interrupt                                              */\n  EXTI1_IRQn                  = 7,      /*!< EXTI Line1 Interrupt                                              */\n  EXTI2_IRQn                  = 8,      /*!< EXTI Line2 Interrupt                                              */\n  EXTI3_IRQn                  = 9,      /*!< EXTI Line3 Interrupt                                              */\n  EXTI4_IRQn                  = 10,     /*!< EXTI Line4 Interrupt                                              */\n  DMA1_Stream0_IRQn           = 11,     /*!< DMA1 Stream 0 global Interrupt                                    */\n  DMA1_Stream1_IRQn           = 12,     /*!< DMA1 Stream 1 global Interrupt                                    */\n  DMA1_Stream2_IRQn           = 13,     /*!< DMA1 Stream 2 global Interrupt                                    */\n  DMA1_Stream3_IRQn           = 14,     /*!< DMA1 Stream 3 global Interrupt                                    */\n  DMA1_Stream4_IRQn           = 15,     /*!< DMA1 Stream 4 global Interrupt                                    */\n  DMA1_Stream5_IRQn           = 16,     /*!< DMA1 Stream 5 global Interrupt                                    */\n  DMA1_Stream6_IRQn           = 17,     /*!< DMA1 Stream 6 global Interrupt                                    */\n  ADC_IRQn                    = 18,     /*!< ADC1 and  ADC2 global Interrupts                                  */\n  FDCAN1_IT0_IRQn             = 19,     /*!< FDCAN1 Interrupt line 0                                           */\n  FDCAN2_IT0_IRQn             = 20,     /*!< FDCAN2 Interrupt line 0                                           */\n  FDCAN1_IT1_IRQn             = 21,     /*!< FDCAN1 Interrupt line 1                                           */\n  FDCAN2_IT1_IRQn             = 22,     /*!< FDCAN2 Interrupt line 1                                           */\n  EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                                     */\n  TIM1_BRK_IRQn               = 24,     /*!< TIM1 Break Interrupt                                              */\n  TIM1_UP_IRQn                = 25,     /*!< TIM1 Update Interrupt                                             */\n  TIM1_TRG_COM_IRQn           = 26,     /*!< TIM1 Trigger and Commutation Interrupt                            */\n  TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                                    */\n  TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                             */\n  TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                             */\n  TIM4_IRQn                   = 30,     /*!< TIM4 global Interrupt                                             */\n  I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                              */\n  I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                              */\n  I2C2_EV_IRQn                = 33,     /*!< I2C2 Event Interrupt                                              */\n  I2C2_ER_IRQn                = 34,     /*!< I2C2 Error Interrupt                                              */\n  SPI1_IRQn                   = 35,     /*!< SPI1 global Interrupt                                             */\n  SPI2_IRQn                   = 36,     /*!< SPI2 global Interrupt                                             */\n  USART1_IRQn                 = 37,     /*!< USART1 global Interrupt                                           */\n  USART2_IRQn                 = 38,     /*!< USART2 global Interrupt                                           */\n  USART3_IRQn                 = 39,     /*!< USART3 global Interrupt                                           */\n  EXTI15_10_IRQn              = 40,     /*!< External Line[15:10] Interrupts                                   */\n  RTC_Alarm_IRQn              = 41,     /*!< RTC Alarm (A and B) through EXTI Line Interrupt                   */\n  TIM8_BRK_TIM12_IRQn         = 43,     /*!< TIM8 Break Interrupt and TIM12 global interrupt                   */\n  TIM8_UP_TIM13_IRQn          = 44,     /*!< TIM8 Update Interrupt and TIM13 global interrupt                  */\n  TIM8_TRG_COM_TIM14_IRQn     = 45,     /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */\n  TIM8_CC_IRQn                = 46,     /*!< TIM8 Capture Compare Interrupt                                    */\n  DMA1_Stream7_IRQn           = 47,     /*!< DMA1 Stream7 Interrupt                                            */\n  FMC_IRQn                    = 48,     /*!< FMC global Interrupt                                              */\n  SDMMC1_IRQn                 = 49,     /*!< SDMMC1 global Interrupt                                           */\n  TIM5_IRQn                   = 50,     /*!< TIM5 global Interrupt                                             */\n  SPI3_IRQn                   = 51,     /*!< SPI3 global Interrupt                                             */\n  UART4_IRQn                  = 52,     /*!< UART4 global Interrupt                                            */\n  UART5_IRQn                  = 53,     /*!< UART5 global Interrupt                                            */\n  TIM6_DAC_IRQn               = 54,     /*!< TIM6 global and DAC1&2 underrun error  interrupts                 */\n  TIM7_IRQn                   = 55,     /*!< TIM7 global interrupt                                             */\n  DMA2_Stream0_IRQn           = 56,     /*!<   DMA2 Stream 0 global Interrupt                                  */\n  DMA2_Stream1_IRQn           = 57,     /*!<   DMA2 Stream 1 global Interrupt                                  */\n  DMA2_Stream2_IRQn           = 58,     /*!<   DMA2 Stream 2 global Interrupt                                  */\n  DMA2_Stream3_IRQn           = 59,     /*!<   DMA2 Stream 3 global Interrupt                                  */\n  DMA2_Stream4_IRQn           = 60,     /*!<   DMA2 Stream 4 global Interrupt                                  */\n  ETH_IRQn                    = 61,     /*!< Ethernet global Interrupt                                         */\n  ETH_WKUP_IRQn               = 62,     /*!< Ethernet Wakeup through EXTI line Interrupt                       */\n  FDCAN_CAL_IRQn              = 63,     /*!< FDCAN Calibration unit Interrupt                                  */\n  DMA2_Stream5_IRQn           = 68,     /*!< DMA2 Stream 5 global interrupt                                    */\n  DMA2_Stream6_IRQn           = 69,     /*!< DMA2 Stream 6 global interrupt                                    */\n  DMA2_Stream7_IRQn           = 70,     /*!< DMA2 Stream 7 global interrupt                                    */\n  USART6_IRQn                 = 71,     /*!< USART6 global interrupt                                           */\n  I2C3_EV_IRQn                = 72,     /*!< I2C3 event interrupt                                              */\n  I2C3_ER_IRQn                = 73,     /*!< I2C3 error interrupt                                              */\n  OTG_HS_EP1_OUT_IRQn         = 74,     /*!< USB OTG HS End Point 1 Out global interrupt                       */\n  OTG_HS_EP1_IN_IRQn          = 75,     /*!< USB OTG HS End Point 1 In global interrupt                        */\n  OTG_HS_WKUP_IRQn            = 76,     /*!< USB OTG HS Wakeup through EXTI interrupt                          */\n  OTG_HS_IRQn                 = 77,     /*!< USB OTG HS global interrupt                                       */\n  DCMI_IRQn                   = 78,     /*!< DCMI global interrupt                                             */\n  CRYP_IRQn                   = 79,     /*!< CRYP crypto global interrupt                                      */\n  HASH_RNG_IRQn               = 80,     /*!< HASH and RNG global interrupt                                     */\n  FPU_IRQn                    = 81,     /*!< FPU global interrupt                                              */\n  UART7_IRQn                  = 82,     /*!< UART7 global interrupt                                            */\n  UART8_IRQn                  = 83,     /*!< UART8 global interrupt                                            */\n  SPI4_IRQn                   = 84,     /*!< SPI4 global Interrupt                                             */\n  SPI5_IRQn                   = 85,     /*!< SPI5 global Interrupt                                             */\n  SPI6_IRQn                   = 86,     /*!< SPI6 global Interrupt                                             */\n  SAI1_IRQn                   = 87,     /*!< SAI1 global Interrupt                                             */\n  LTDC_IRQn                   = 88,     /*!< LTDC global Interrupt                                             */\n  LTDC_ER_IRQn                = 89,     /*!< LTDC Error global Interrupt                                       */\n  DMA2D_IRQn                  = 90,     /*!< DMA2D global Interrupt                                            */\n  SAI2_IRQn                   = 91,     /*!< SAI2 global Interrupt                                             */\n  QUADSPI_IRQn                = 92,     /*!< Quad SPI global interrupt                                         */\n  LPTIM1_IRQn                 = 93,     /*!< LP TIM1 interrupt                                                 */\n  CEC_IRQn                    = 94,     /*!< HDMI-CEC global Interrupt                                         */\n  I2C4_EV_IRQn                = 95,     /*!< I2C4 Event Interrupt                                              */\n  I2C4_ER_IRQn                = 96,     /*!< I2C4 Error Interrupt                                              */\n  SPDIF_RX_IRQn               = 97,     /*!< SPDIF-RX global Interrupt                                         */\n  OTG_FS_EP1_OUT_IRQn         = 98,     /*!< USB OTG HS2 global interrupt                                      */\n  OTG_FS_EP1_IN_IRQn          = 99,     /*!< USB OTG HS2 End Point 1 Out global interrupt                      */\n  OTG_FS_WKUP_IRQn            = 100,    /*!< USB OTG HS2 End Point 1 In global interrupt                       */\n  OTG_FS_IRQn                 = 101,    /*!< USB OTG HS2 Wakeup through EXTI interrupt                         */\n  DMAMUX1_OVR_IRQn            = 102,    /*!<DMAMUX1 Overrun interrupt                                          */\n  HRTIM1_Master_IRQn          = 103,    /*!< HRTIM Master Timer global Interrupts                              */\n  HRTIM1_TIMA_IRQn            = 104,    /*!< HRTIM Timer A global Interrupt                                    */\n  HRTIM1_TIMB_IRQn            = 105,    /*!< HRTIM Timer B global Interrupt                                    */\n  HRTIM1_TIMC_IRQn            = 106,    /*!< HRTIM Timer C global Interrupt                                    */\n  HRTIM1_TIMD_IRQn            = 107,    /*!< HRTIM Timer D global Interrupt                                    */\n  HRTIM1_TIME_IRQn            = 108,    /*!< HRTIM Timer E global Interrupt                                    */\n  HRTIM1_FLT_IRQn             = 109,    /*!< HRTIM Fault global Interrupt                                      */\n  DFSDM1_FLT0_IRQn            = 110,    /*!<DFSDM Filter1 Interrupt                                            */\n  DFSDM1_FLT1_IRQn            = 111,    /*!<DFSDM Filter2 Interrupt                                            */\n  DFSDM1_FLT2_IRQn            = 112,    /*!<DFSDM Filter3 Interrupt                                            */\n  DFSDM1_FLT3_IRQn            = 113,    /*!<DFSDM Filter4 Interrupt                                            */\n  SAI3_IRQn                   = 114,    /*!< SAI3 global Interrupt                                             */\n  SWPMI1_IRQn                 = 115,    /*!< Serial Wire Interface 1 global interrupt                          */\n  TIM15_IRQn                  = 116,    /*!< TIM15 global Interrupt                                            */\n  TIM16_IRQn                  = 117,    /*!< TIM16 global Interrupt                                            */\n  TIM17_IRQn                  = 118,    /*!< TIM17 global Interrupt                                            */\n  MDIOS_WKUP_IRQn             = 119,    /*!< MDIOS Wakeup  Interrupt                                           */\n  MDIOS_IRQn                  = 120,    /*!< MDIOS global Interrupt                                            */\n  JPEG_IRQn                   = 121,    /*!< JPEG global Interrupt                                             */\n  MDMA_IRQn                   = 122,    /*!< MDMA global Interrupt                                             */\n  SDMMC2_IRQn                 = 124,    /*!< SDMMC2 global Interrupt                                           */\n  HSEM1_IRQn                  = 125,    /*!< HSEM1 global Interrupt                                            */\n  ADC3_IRQn                   = 127,    /*!< ADC3 global Interrupt                                             */\n  DMAMUX2_OVR_IRQn            = 128,    /*!<DMAMUX2 Overrun interrupt                                          */\n  BDMA_Channel0_IRQn          = 129,    /*!< BDMA Channel 0 global Interrupt                                   */\n  BDMA_Channel1_IRQn          = 130,    /*!< BDMA Channel 1 global Interrupt                                   */\n  BDMA_Channel2_IRQn          = 131,    /*!< BDMA Channel 2 global Interrupt                                   */\n  BDMA_Channel3_IRQn          = 132,    /*!< BDMA Channel 3 global Interrupt                                   */\n  BDMA_Channel4_IRQn          = 133,    /*!< BDMA Channel 4 global Interrupt                                   */\n  BDMA_Channel5_IRQn          = 134,    /*!< BDMA Channel 5 global Interrupt                                   */\n  BDMA_Channel6_IRQn          = 135,    /*!< BDMA Channel 6 global Interrupt                                   */\n  BDMA_Channel7_IRQn          = 136,    /*!< BDMA Channel 7 global Interrupt                                   */\n  COMP_IRQn                   = 137 ,   /*!< COMP global Interrupt                                             */\n  LPTIM2_IRQn                 = 138,    /*!< LP TIM2 global interrupt                                          */\n  LPTIM3_IRQn                 = 139,    /*!< LP TIM3 global interrupt                                          */\n  LPTIM4_IRQn                 = 140,    /*!< LP TIM4 global interrupt                                          */\n  LPTIM5_IRQn                 = 141,    /*!< LP TIM5 global interrupt                                          */\n  LPUART1_IRQn                = 142,    /*!< LP UART1 interrupt                                                */\n  CRS_IRQn                    = 144,    /*!< Clock Recovery Global Interrupt                                   */\n  ECC_IRQn                    = 145,    /*!< ECC diagnostic Global Interrupt                                   */\n  SAI4_IRQn                   = 146,    /*!< SAI4 global interrupt                                             */\n  WAKEUP_PIN_IRQn             = 149,    /*!< Interrupt for all 6 wake-up pins                                  */\n} IRQn_Type;\n\n/**\n  * @}\n  */\n\n/** @addtogroup Configuration_section_for_CMSIS\n  * @{\n  */\n\n\n\n\n/**\n  * @brief Configuration of the Cortex-M7 Processor and Core Peripherals\n   */\n#define __CM7_REV               0x0100U   /*!< Cortex-M7 revision r1p0                       */\n#define __MPU_PRESENT             1U       /*!< CM7 provides an MPU                           */\n#define __NVIC_PRIO_BITS          4U       /*!< CM7 uses 4 Bits for the Priority Levels       */\n#define __Vendor_SysTickConfig    0U       /*!< Set to 1 if different SysTick Config is used  */\n#define __FPU_PRESENT             1U       /*!< FPU present                                   */\n#define __ICACHE_PRESENT          1U       /*!< CM7 instruction cache present                 */\n#define __DCACHE_PRESENT          1U       /*!< CM7 data cache present                        */\n#include \"core_cm7.h\"                     /*!< Cortex-M7 processor and core peripherals      */\n\n/**\n  * @}\n  */\n\n\n\n\n#include \"system_stm32h7xx.h\"\n#include <stdint.h>\n\n/** @addtogroup Peripheral_registers_structures\n  * @{\n  */\n\n/**\n  * @brief Analog to Digital Converter\n  */\n\ntypedef struct\n{\n  __IO uint32_t ISR;              /*!< ADC Interrupt and Status Register,                          Address offset: 0x00 */\n  __IO uint32_t IER;              /*!< ADC Interrupt Enable Register,                              Address offset: 0x04 */\n  __IO uint32_t CR;               /*!< ADC control register,                                       Address offset: 0x08 */\n  __IO uint32_t CFGR;             /*!< ADC Configuration register,                                 Address offset: 0x0C */\n  __IO uint32_t CFGR2;            /*!< ADC Configuration register 2,                               Address offset: 0x10 */\n  __IO uint32_t SMPR1;            /*!< ADC sample time register 1,                                 Address offset: 0x14 */\n  __IO uint32_t SMPR2;            /*!< ADC sample time register 2,                                 Address offset: 0x18 */\n  __IO uint32_t PCSEL;            /*!< ADC pre-channel selection,                                  Address offset: 0x1C */\n  __IO uint32_t LTR1;             /*!< ADC watchdog Lower threshold register 1,                    Address offset: 0x20 */\n  __IO uint32_t HTR1;             /*!< ADC watchdog higher threshold register 1,                   Address offset: 0x24 */\n  uint32_t      RESERVED1;        /*!< Reserved, 0x028                                                                  */\n  uint32_t      RESERVED2;        /*!< Reserved, 0x02C                                                                  */\n  __IO uint32_t SQR1;             /*!< ADC regular sequence register 1,                            Address offset: 0x30 */\n  __IO uint32_t SQR2;             /*!< ADC regular sequence register 2,                            Address offset: 0x34 */\n  __IO uint32_t SQR3;             /*!< ADC regular sequence register 3,                            Address offset: 0x38 */\n  __IO uint32_t SQR4;             /*!< ADC regular sequence register 4,                            Address offset: 0x3C */\n  __IO uint32_t DR;               /*!< ADC regular data register,                                  Address offset: 0x40 */\n  uint32_t      RESERVED3;        /*!< Reserved, 0x044                                                                  */\n  uint32_t      RESERVED4;        /*!< Reserved, 0x048                                                                  */\n  __IO uint32_t JSQR;             /*!< ADC injected sequence register,                             Address offset: 0x4C */\n  uint32_t      RESERVED5[4];     /*!< Reserved, 0x050 - 0x05C                                                          */\n  __IO uint32_t OFR1;             /*!< ADC offset register 1,                                      Address offset: 0x60 */\n  __IO uint32_t OFR2;             /*!< ADC offset register 2,                                      Address offset: 0x64 */\n  __IO uint32_t OFR3;             /*!< ADC offset register 3,                                      Address offset: 0x68 */\n  __IO uint32_t OFR4;             /*!< ADC offset register 4,                                      Address offset: 0x6C */\n  uint32_t      RESERVED6[4];     /*!< Reserved, 0x070 - 0x07C                                                          */\n  __IO uint32_t JDR1;             /*!< ADC injected data register 1,                               Address offset: 0x80 */\n  __IO uint32_t JDR2;             /*!< ADC injected data register 2,                               Address offset: 0x84 */\n  __IO uint32_t JDR3;             /*!< ADC injected data register 3,                               Address offset: 0x88 */\n  __IO uint32_t JDR4;             /*!< ADC injected data register 4,                               Address offset: 0x8C */\n  uint32_t      RESERVED7[4];     /*!< Reserved, 0x090 - 0x09C                                                          */\n  __IO uint32_t AWD2CR;           /*!< ADC  Analog Watchdog 2 Configuration Register,              Address offset: 0xA0 */\n  __IO uint32_t AWD3CR;           /*!< ADC  Analog Watchdog 3 Configuration Register,              Address offset: 0xA4 */\n  uint32_t      RESERVED8;        /*!< Reserved, 0x0A8                                                                  */\n  uint32_t      RESERVED9;        /*!< Reserved, 0x0AC                                                                  */\n  __IO uint32_t LTR2;             /*!< ADC watchdog Lower threshold register 2,                    Address offset: 0xB0 */\n  __IO uint32_t HTR2;             /*!< ADC watchdog Higher threshold register 2,                   Address offset: 0xB4 */\n  __IO uint32_t LTR3;             /*!< ADC watchdog Lower threshold register 3,                    Address offset: 0xB8 */\n  __IO uint32_t HTR3;             /*!< ADC watchdog Higher threshold register 3,                   Address offset: 0xBC */\n  __IO uint32_t DIFSEL;           /*!< ADC  Differential Mode Selection Register,                  Address offset: 0xC0 */\n  __IO uint32_t CALFACT;          /*!< ADC  Calibration Factors,                                   Address offset: 0xC4 */\n  __IO uint32_t CALFACT2;         /*!< ADC  Linearity Calibration Factors,                         Address offset: 0xC8 */\n} ADC_TypeDef;\n\n\ntypedef struct\n{\n__IO uint32_t CSR; /*!< ADC Common status register, Address offset: ADC1/3 base address + 0x300 */\nuint32_t RESERVED; /*!< Reserved, ADC1/3 base address + 0x304 */\n__IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1/3 base address + 0x308 */\n__IO uint32_t CDR; /*!< ADC common regular data register for dual Address offset: ADC1/3 base address + 0x30C */\n__IO uint32_t CDR2; /*!< ADC common regular data register for 32-bit dual mode Address offset: ADC1/3 base address + 0x310 */\n\n} ADC_Common_TypeDef;\n\n\n/**\n  * @brief VREFBUF\n  */\n\ntypedef struct\n{\n  __IO uint32_t CSR;         /*!< VREFBUF control and status register,         Address offset: 0x00 */\n  __IO uint32_t CCR;         /*!< VREFBUF calibration and control register,    Address offset: 0x04 */\n} VREFBUF_TypeDef;\n\n\n/**\n  * @brief FD Controller Area Network\n  */\n\ntypedef struct\n{\n  __IO uint32_t CREL;         /*!< FDCAN Core Release register,                                     Address offset: 0x000 */\n  __IO uint32_t ENDN;         /*!< FDCAN Endian register,                                           Address offset: 0x004 */\n  __IO uint32_t RESERVED1;    /*!< Reserved,                                                                        0x008 */\n  __IO uint32_t DBTP;         /*!< FDCAN Data Bit Timing & Prescaler register,                      Address offset: 0x00C */\n  __IO uint32_t TEST;         /*!< FDCAN Test register,                                             Address offset: 0x010 */\n  __IO uint32_t RWD;          /*!< FDCAN RAM Watchdog register,                                     Address offset: 0x014 */\n  __IO uint32_t CCCR;         /*!< FDCAN CC Control register,                                       Address offset: 0x018 */\n  __IO uint32_t NBTP;         /*!< FDCAN Nominal Bit Timing & Prescaler register,                   Address offset: 0x01C */\n  __IO uint32_t TSCC;         /*!< FDCAN Timestamp Counter Configuration register,                  Address offset: 0x020 */\n  __IO uint32_t TSCV;         /*!< FDCAN Timestamp Counter Value register,                          Address offset: 0x024 */\n  __IO uint32_t TOCC;         /*!< FDCAN Timeout Counter Configuration register,                    Address offset: 0x028 */\n  __IO uint32_t TOCV;         /*!< FDCAN Timeout Counter Value register,                            Address offset: 0x02C */\n  __IO uint32_t RESERVED2[4]; /*!< Reserved,                                                                0x030 - 0x03C */\n  __IO uint32_t ECR;          /*!< FDCAN Error Counter register,                                    Address offset: 0x040 */\n  __IO uint32_t PSR;          /*!< FDCAN Protocol Status register,                                  Address offset: 0x044 */\n  __IO uint32_t TDCR;         /*!< FDCAN Transmitter Delay Compensation register,                   Address offset: 0x048 */\n  __IO uint32_t RESERVED3;    /*!< Reserved,                                                                        0x04C */\n  __IO uint32_t IR;           /*!< FDCAN Interrupt register,                                        Address offset: 0x050 */\n  __IO uint32_t IE;           /*!< FDCAN Interrupt Enable register,                                 Address offset: 0x054 */\n  __IO uint32_t ILS;          /*!< FDCAN Interrupt Line Select register,                            Address offset: 0x058 */\n  __IO uint32_t ILE;          /*!< FDCAN Interrupt Line Enable register,                            Address offset: 0x05C */\n  __IO uint32_t RESERVED4[8]; /*!< Reserved,                                                                0x060 - 0x07C */\n  __IO uint32_t GFC;          /*!< FDCAN Global Filter Configuration register,                      Address offset: 0x080 */\n  __IO uint32_t SIDFC;        /*!< FDCAN Standard ID Filter Configuration register,                 Address offset: 0x084 */\n  __IO uint32_t XIDFC;        /*!< FDCAN Extended ID Filter Configuration register,                 Address offset: 0x088 */\n  __IO uint32_t RESERVED5;    /*!< Reserved,                                                                        0x08C */\n  __IO uint32_t XIDAM;        /*!< FDCAN Extended ID AND Mask register,                             Address offset: 0x090 */\n  __IO uint32_t HPMS;         /*!< FDCAN High Priority Message Status register,                     Address offset: 0x094 */\n  __IO uint32_t NDAT1;        /*!< FDCAN New Data 1 register,                                       Address offset: 0x098 */\n  __IO uint32_t NDAT2;        /*!< FDCAN New Data 2 register,                                       Address offset: 0x09C */\n  __IO uint32_t RXF0C;        /*!< FDCAN Rx FIFO 0 Configuration register,                          Address offset: 0x0A0 */\n  __IO uint32_t RXF0S;        /*!< FDCAN Rx FIFO 0 Status register,                                 Address offset: 0x0A4 */\n  __IO uint32_t RXF0A;        /*!< FDCAN Rx FIFO 0 Acknowledge register,                            Address offset: 0x0A8 */\n  __IO uint32_t RXBC;         /*!< FDCAN Rx Buffer Configuration register,                          Address offset: 0x0AC */\n  __IO uint32_t RXF1C;        /*!< FDCAN Rx FIFO 1 Configuration register,                          Address offset: 0x0B0 */\n  __IO uint32_t RXF1S;        /*!< FDCAN Rx FIFO 1 Status register,                                 Address offset: 0x0B4 */\n  __IO uint32_t RXF1A;        /*!< FDCAN Rx FIFO 1 Acknowledge register,                            Address offset: 0x0B8 */\n  __IO uint32_t RXESC;        /*!< FDCAN Rx Buffer/FIFO Element Size Configuration register,        Address offset: 0x0BC */\n  __IO uint32_t TXBC;         /*!< FDCAN Tx Buffer Configuration register,                          Address offset: 0x0C0 */\n  __IO uint32_t TXFQS;        /*!< FDCAN Tx FIFO/Queue Status register,                             Address offset: 0x0C4 */\n  __IO uint32_t TXESC;        /*!< FDCAN Tx Buffer Element Size Configuration register,             Address offset: 0x0C8 */\n  __IO uint32_t TXBRP;        /*!< FDCAN Tx Buffer Request Pending register,                        Address offset: 0x0CC */\n  __IO uint32_t TXBAR;        /*!< FDCAN Tx Buffer Add Request register,                            Address offset: 0x0D0 */\n  __IO uint32_t TXBCR;        /*!< FDCAN Tx Buffer Cancellation Request register,                   Address offset: 0x0D4 */\n  __IO uint32_t TXBTO;        /*!< FDCAN Tx Buffer Transmission Occurred register,                  Address offset: 0x0D8 */\n  __IO uint32_t TXBCF;        /*!< FDCAN Tx Buffer Cancellation Finished register,                  Address offset: 0x0DC */\n  __IO uint32_t TXBTIE;       /*!< FDCAN Tx Buffer Transmission Interrupt Enable register,          Address offset: 0x0E0 */\n  __IO uint32_t TXBCIE;       /*!< FDCAN Tx Buffer Cancellation Finished Interrupt Enable register, Address offset: 0x0E4 */\n  __IO uint32_t RESERVED6[2]; /*!< Reserved,                                                                0x0E8 - 0x0EC */\n  __IO uint32_t TXEFC;        /*!< FDCAN Tx Event FIFO Configuration register,                      Address offset: 0x0F0 */\n  __IO uint32_t TXEFS;        /*!< FDCAN Tx Event FIFO Status register,                             Address offset: 0x0F4 */\n  __IO uint32_t TXEFA;        /*!< FDCAN Tx Event FIFO Acknowledge register,                        Address offset: 0x0F8 */\n  __IO uint32_t RESERVED7;    /*!< Reserved,                                                                        0x0FC */\n} FDCAN_GlobalTypeDef;\n\n/**\n  * @brief TTFD Controller Area Network\n  */\n\ntypedef struct\n{\n  __IO uint32_t TTTMC;          /*!< TT Trigger Memory Configuration register,    Address offset: 0x100 */\n  __IO uint32_t TTRMC;          /*!< TT Reference Message Configuration register, Address offset: 0x104 */\n  __IO uint32_t TTOCF;          /*!< TT Operation Configuration register,         Address offset: 0x108 */\n  __IO uint32_t TTMLM;          /*!< TT Matrix Limits register,                   Address offset: 0x10C */\n  __IO uint32_t TURCF;          /*!< TUR Configuration register,                  Address offset: 0x110 */\n  __IO uint32_t TTOCN;          /*!< TT Operation Control register,               Address offset: 0x114 */\n  __IO uint32_t TTGTP;          /*!< TT Global Time Preset register,              Address offset: 0x118 */\n  __IO uint32_t TTTMK;          /*!< TT Time Mark register,                       Address offset: 0x11C */\n  __IO uint32_t TTIR;           /*!< TT Interrupt register,                       Address offset: 0x120 */\n  __IO uint32_t TTIE;           /*!< TT Interrupt Enable register,                Address offset: 0x124 */\n  __IO uint32_t TTILS;          /*!< TT Interrupt Line Select register,           Address offset: 0x128 */\n  __IO uint32_t TTOST;          /*!< TT Operation Status register,                Address offset: 0x12C */\n  __IO uint32_t TURNA;          /*!< TT TUR Numerator Actual register,            Address offset: 0x130 */\n  __IO uint32_t TTLGT;          /*!< TT Local and Global Time register,           Address offset: 0x134 */\n  __IO uint32_t TTCTC;          /*!< TT Cycle Time and Count register,            Address offset: 0x138 */\n  __IO uint32_t TTCPT;          /*!< TT Capture Time register,                    Address offset: 0x13C */\n  __IO uint32_t TTCSM;          /*!< TT Cycle Sync Mark register,                 Address offset: 0x140 */\n  __IO uint32_t RESERVED1[111]; /*!< Reserved,                                            0x144 - 0x2FC */\n  __IO uint32_t TTTS;           /*!< TT Trigger Select register,                  Address offset: 0x300 */\n} TTCAN_TypeDef;\n\n/**\n  * @brief FD Controller Area Network\n  */\n\ntypedef struct\n{\n  __IO uint32_t CREL;  /*!< Clock Calibration Unit Core Release register, Address offset: 0x00 */\n  __IO uint32_t CCFG;  /*!< Calibration Configuration register,           Address offset: 0x04 */\n  __IO uint32_t CSTAT; /*!< Calibration Status register,                  Address offset: 0x08 */\n  __IO uint32_t CWD;   /*!< Calibration Watchdog register,                Address offset: 0x0C */\n  __IO uint32_t IR;    /*!< CCU Interrupt register,                       Address offset: 0x10 */\n  __IO uint32_t IE;    /*!< CCU Interrupt Enable register,                Address offset: 0x14 */\n} FDCAN_ClockCalibrationUnit_TypeDef;\n\n\n/**\n  * @brief Consumer Electronics Control\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;           /*!< CEC control register,              Address offset:0x00 */\n  __IO uint32_t CFGR;         /*!< CEC configuration register,        Address offset:0x04 */\n  __IO uint32_t TXDR;         /*!< CEC Tx data register ,             Address offset:0x08 */\n  __IO uint32_t RXDR;         /*!< CEC Rx Data Register,              Address offset:0x0C */\n  __IO uint32_t ISR;          /*!< CEC Interrupt and Status Register, Address offset:0x10 */\n  __IO uint32_t IER;          /*!< CEC interrupt enable register,     Address offset:0x14 */\n}CEC_TypeDef;\n\n/**\n  * @brief CRC calculation unit\n  */\n\ntypedef struct\n{\n  __IO uint32_t DR;          /*!< CRC Data register,                           Address offset: 0x00 */\n  __IO uint32_t IDR;         /*!< CRC Independent data register,               Address offset: 0x04 */\n  __IO uint32_t CR;          /*!< CRC Control register,                        Address offset: 0x08 */\n  uint32_t      RESERVED2;   /*!< Reserved,                                                    0x0C */\n  __IO uint32_t INIT;        /*!< Initial CRC value register,                  Address offset: 0x10 */\n  __IO uint32_t POL;         /*!< CRC polynomial register,                     Address offset: 0x14 */\n} CRC_TypeDef;\n\n\n/**\n  * @brief Clock Recovery System\n  */\ntypedef struct\n{\n__IO uint32_t CR;            /*!< CRS ccontrol register,              Address offset: 0x00 */\n__IO uint32_t CFGR;          /*!< CRS configuration register,         Address offset: 0x04 */\n__IO uint32_t ISR;           /*!< CRS interrupt and status register,  Address offset: 0x08 */\n__IO uint32_t ICR;           /*!< CRS interrupt flag clear register,  Address offset: 0x0C */\n} CRS_TypeDef;\n\n\n/**\n  * @brief Digital to Analog Converter\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;       /*!< DAC control register,                                    Address offset: 0x00 */\n  __IO uint32_t SWTRIGR;  /*!< DAC software trigger register,                           Address offset: 0x04 */\n  __IO uint32_t DHR12R1;  /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */\n  __IO uint32_t DHR12L1;  /*!< DAC channel1 12-bit left aligned data holding register,  Address offset: 0x0C */\n  __IO uint32_t DHR8R1;   /*!< DAC channel1 8-bit right aligned data holding register,  Address offset: 0x10 */\n  __IO uint32_t DHR12R2;  /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */\n  __IO uint32_t DHR12L2;  /*!< DAC channel2 12-bit left aligned data holding register,  Address offset: 0x18 */\n  __IO uint32_t DHR8R2;   /*!< DAC channel2 8-bit right-aligned data holding register,  Address offset: 0x1C */\n  __IO uint32_t DHR12RD;  /*!< Dual DAC 12-bit right-aligned data holding register,     Address offset: 0x20 */\n  __IO uint32_t DHR12LD;  /*!< DUAL DAC 12-bit left aligned data holding register,      Address offset: 0x24 */\n  __IO uint32_t DHR8RD;   /*!< DUAL DAC 8-bit right aligned data holding register,      Address offset: 0x28 */\n  __IO uint32_t DOR1;     /*!< DAC channel1 data output register,                       Address offset: 0x2C */\n  __IO uint32_t DOR2;     /*!< DAC channel2 data output register,                       Address offset: 0x30 */\n  __IO uint32_t SR;       /*!< DAC status register,                                     Address offset: 0x34 */\n  __IO uint32_t CCR;      /*!< DAC calibration control register,                        Address offset: 0x38 */\n  __IO uint32_t MCR;      /*!< DAC mode control register,                               Address offset: 0x3C */\n  __IO uint32_t SHSR1;    /*!< DAC Sample and Hold sample time register 1,              Address offset: 0x40 */\n  __IO uint32_t SHSR2;    /*!< DAC Sample and Hold sample time register 2,              Address offset: 0x44 */\n  __IO uint32_t SHHR;     /*!< DAC Sample and Hold hold time register,                  Address offset: 0x48 */\n  __IO uint32_t SHRR;     /*!< DAC Sample and Hold refresh time register,               Address offset: 0x4C */\n} DAC_TypeDef;\n\n/**\n  * @brief DFSDM module registers\n  */\ntypedef struct\n{\n  __IO uint32_t FLTCR1;          /*!< DFSDM control register1,                          Address offset: 0x100 */\n  __IO uint32_t FLTCR2;          /*!< DFSDM control register2,                          Address offset: 0x104 */\n  __IO uint32_t FLTISR;          /*!< DFSDM interrupt and status register,              Address offset: 0x108 */\n  __IO uint32_t FLTICR;          /*!< DFSDM interrupt flag clear register,              Address offset: 0x10C */\n  __IO uint32_t FLTJCHGR;        /*!< DFSDM injected channel group selection register,  Address offset: 0x110 */\n  __IO uint32_t FLTFCR;          /*!< DFSDM filter control register,                    Address offset: 0x114 */\n  __IO uint32_t FLTJDATAR;       /*!< DFSDM data register for injected group,           Address offset: 0x118 */\n  __IO uint32_t FLTRDATAR;       /*!< DFSDM data register for regular group,            Address offset: 0x11C */\n  __IO uint32_t FLTAWHTR;        /*!< DFSDM analog watchdog high threshold register,    Address offset: 0x120 */\n  __IO uint32_t FLTAWLTR;        /*!< DFSDM analog watchdog low threshold register,     Address offset: 0x124 */\n  __IO uint32_t FLTAWSR;         /*!< DFSDM analog watchdog status register             Address offset: 0x128 */\n  __IO uint32_t FLTAWCFR;        /*!< DFSDM analog watchdog clear flag register         Address offset: 0x12C */\n  __IO uint32_t FLTEXMAX;        /*!< DFSDM extreme detector maximum register,          Address offset: 0x130 */\n  __IO uint32_t FLTEXMIN;        /*!< DFSDM extreme detector minimum register           Address offset: 0x134 */\n  __IO uint32_t FLTCNVTIMR;      /*!< DFSDM conversion timer,                           Address offset: 0x138 */\n} DFSDM_Filter_TypeDef;\n\n/**\n  * @brief DFSDM channel configuration registers\n  */\ntypedef struct\n{\n  __IO uint32_t CHCFGR1;      /*!< DFSDM channel configuration register1,            Address offset: 0x00 */\n  __IO uint32_t CHCFGR2;      /*!< DFSDM channel configuration register2,            Address offset: 0x04 */\n  __IO uint32_t CHAWSCDR;     /*!< DFSDM channel analog watchdog and\n                                   short circuit detector register,                  Address offset: 0x08 */\n  __IO uint32_t CHWDATAR;     /*!< DFSDM channel watchdog filter data register,      Address offset: 0x0C */\n  __IO uint32_t CHDATINR;     /*!< DFSDM channel data input register,                Address offset: 0x10 */\n} DFSDM_Channel_TypeDef;\n\n/**\n  * @brief Debug MCU\n  */\ntypedef struct\n{\n  __IO uint32_t IDCODE;        /*!< MCU device ID code,                     Address offset: 0x00 */\n  __IO uint32_t CR;            /*!< Debug MCU configuration register,       Address offset: 0x04 */\n  uint32_t RESERVED4[11];      /*!< Reserved,                             Address offset: 0x08 */\n  __IO uint32_t APB3FZ1;     /*!< Debug MCU APB3FZ1 freeze register,    Address offset: 0x34 */\n  uint32_t RESERVED5;          /*!< Reserved,                             Address offset: 0x38 */\n  __IO uint32_t APB1LFZ1;    /*!< Debug MCU APB1LFZ1 freeze register,   Address offset: 0x3C */\n  uint32_t RESERVED6;          /*!< Reserved,                             Address offset: 0x40 */\n  __IO uint32_t APB1HFZ1;    /*!< Debug MCU APB1LFZ1 freeze register,   Address offset: 0x44 */\n  uint32_t RESERVED7;          /*!< Reserved,                             Address offset: 0x48 */\n  __IO uint32_t APB2FZ1;     /*!< Debug MCU APB2FZ1 freeze register,    Address offset: 0x4C */\n  uint32_t RESERVED8;          /*!< Reserved,                             Address offset: 0x50 */\n  __IO uint32_t APB4FZ1;     /*!< Debug MCU APB4FZ1 freeze register,    Address offset: 0x54 */\n}DBGMCU_TypeDef;\n/**\n  * @brief DCMI\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;       /*!< DCMI control register 1,                       Address offset: 0x00 */\n  __IO uint32_t SR;       /*!< DCMI status register,                          Address offset: 0x04 */\n  __IO uint32_t RISR;     /*!< DCMI raw interrupt status register,            Address offset: 0x08 */\n  __IO uint32_t IER;      /*!< DCMI interrupt enable register,                Address offset: 0x0C */\n  __IO uint32_t MISR;     /*!< DCMI masked interrupt status register,         Address offset: 0x10 */\n  __IO uint32_t ICR;      /*!< DCMI interrupt clear register,                 Address offset: 0x14 */\n  __IO uint32_t ESCR;     /*!< DCMI embedded synchronization code register,   Address offset: 0x18 */\n  __IO uint32_t ESUR;     /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */\n  __IO uint32_t CWSTRTR;  /*!< DCMI crop window start,                        Address offset: 0x20 */\n  __IO uint32_t CWSIZER;  /*!< DCMI crop window size,                         Address offset: 0x24 */\n  __IO uint32_t DR;       /*!< DCMI data register,                            Address offset: 0x28 */\n} DCMI_TypeDef;\n\n/**\n  * @brief DMA Controller\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;     /*!< DMA stream x configuration register      */\n  __IO uint32_t NDTR;   /*!< DMA stream x number of data register     */\n  __IO uint32_t PAR;    /*!< DMA stream x peripheral address register */\n  __IO uint32_t M0AR;   /*!< DMA stream x memory 0 address register   */\n  __IO uint32_t M1AR;   /*!< DMA stream x memory 1 address register   */\n  __IO uint32_t FCR;    /*!< DMA stream x FIFO control register       */\n} DMA_Stream_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t LISR;   /*!< DMA low interrupt status register,      Address offset: 0x00 */\n  __IO uint32_t HISR;   /*!< DMA high interrupt status register,     Address offset: 0x04 */\n  __IO uint32_t LIFCR;  /*!< DMA low interrupt flag clear register,  Address offset: 0x08 */\n  __IO uint32_t HIFCR;  /*!< DMA high interrupt flag clear register, Address offset: 0x0C */\n} DMA_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t CCR;          /*!< DMA channel x configuration register          */\n  __IO uint32_t CNDTR;        /*!< DMA channel x number of data register         */\n  __IO uint32_t CPAR;         /*!< DMA channel x peripheral address register     */\n  __IO uint32_t CM0AR;        /*!< DMA channel x memory 0 address register       */\n  __IO uint32_t CM1AR;        /*!< DMA channel x memory 1 address register       */\n} BDMA_Channel_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t ISR;          /*!< DMA interrupt status register,               Address offset: 0x00 */\n  __IO uint32_t IFCR;         /*!< DMA interrupt flag clear register,           Address offset: 0x04 */\n} BDMA_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t  CCR;        /*!< DMA Multiplexer Channel x Control Register   */\n}DMAMUX_Channel_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t  CSR;      /*!< DMA Channel Status Register     */\n  __IO uint32_t  CFR;      /*!< DMA Channel Clear Flag Register */\n}DMAMUX_ChannelStatus_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t  RGCR;        /*!< DMA Request Generator x Control Register   */\n}DMAMUX_RequestGen_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t  RGSR;        /*!< DMA Request Generator Status Register       */\n  __IO uint32_t  RGCFR;       /*!< DMA Request Generator Clear Flag Register   */\n}DMAMUX_RequestGenStatus_TypeDef;\n\n/**\n  * @brief MDMA Controller\n  */\ntypedef struct\n{\n  __IO uint32_t  GISR0;   /*!< MDMA Global Interrupt/Status Register 0,          Address offset: 0x00 */\n}MDMA_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t  CISR;      /*!< MDMA channel x interrupt/status register,             Address offset: 0x40 */\n  __IO uint32_t  CIFCR;     /*!< MDMA channel x interrupt flag clear register,         Address offset: 0x44 */\n  __IO uint32_t  CESR;      /*!< MDMA Channel x error status register,                 Address offset: 0x48 */\n  __IO uint32_t  CCR;       /*!< MDMA channel x control register,                      Address offset: 0x4C */\n  __IO uint32_t  CTCR;      /*!< MDMA channel x Transfer Configuration register,       Address offset: 0x50 */\n  __IO uint32_t  CBNDTR;    /*!< MDMA Channel x block number of data register,         Address offset: 0x54 */\n  __IO uint32_t  CSAR;      /*!< MDMA channel x source address register,               Address offset: 0x58 */\n  __IO uint32_t  CDAR;      /*!< MDMA channel x destination address register,          Address offset: 0x5C */\n  __IO uint32_t  CBRUR;     /*!< MDMA channel x Block Repeat address Update register,  Address offset: 0x60 */\n  __IO uint32_t  CLAR;      /*!< MDMA channel x Link Address register,                 Address offset: 0x64 */\n  __IO uint32_t  CTBR;      /*!< MDMA channel x Trigger and Bus selection Register,    Address offset: 0x68 */\n  uint32_t       RESERVED0; /*!< Reserved, 0x6C                                                             */\n  __IO uint32_t  CMAR;      /*!< MDMA channel x Mask address register,                 Address offset: 0x70 */\n  __IO uint32_t  CMDR;      /*!< MDMA channel x Mask Data register,                    Address offset: 0x74 */\n}MDMA_Channel_TypeDef;\n\n/**\n  * @brief DMA2D Controller\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;            /*!< DMA2D Control Register,                         Address offset: 0x00 */\n  __IO uint32_t ISR;           /*!< DMA2D Interrupt Status Register,                Address offset: 0x04 */\n  __IO uint32_t IFCR;          /*!< DMA2D Interrupt Flag Clear Register,            Address offset: 0x08 */\n  __IO uint32_t FGMAR;         /*!< DMA2D Foreground Memory Address Register,       Address offset: 0x0C */\n  __IO uint32_t FGOR;          /*!< DMA2D Foreground Offset Register,               Address offset: 0x10 */\n  __IO uint32_t BGMAR;         /*!< DMA2D Background Memory Address Register,       Address offset: 0x14 */\n  __IO uint32_t BGOR;          /*!< DMA2D Background Offset Register,               Address offset: 0x18 */\n  __IO uint32_t FGPFCCR;       /*!< DMA2D Foreground PFC Control Register,          Address offset: 0x1C */\n  __IO uint32_t FGCOLR;        /*!< DMA2D Foreground Color Register,                Address offset: 0x20 */\n  __IO uint32_t BGPFCCR;       /*!< DMA2D Background PFC Control Register,          Address offset: 0x24 */\n  __IO uint32_t BGCOLR;        /*!< DMA2D Background Color Register,                Address offset: 0x28 */\n  __IO uint32_t FGCMAR;        /*!< DMA2D Foreground CLUT Memory Address Register,  Address offset: 0x2C */\n  __IO uint32_t BGCMAR;        /*!< DMA2D Background CLUT Memory Address Register,  Address offset: 0x30 */\n  __IO uint32_t OPFCCR;        /*!< DMA2D Output PFC Control Register,              Address offset: 0x34 */\n  __IO uint32_t OCOLR;         /*!< DMA2D Output Color Register,                    Address offset: 0x38 */\n  __IO uint32_t OMAR;          /*!< DMA2D Output Memory Address Register,           Address offset: 0x3C */\n  __IO uint32_t OOR;           /*!< DMA2D Output Offset Register,                   Address offset: 0x40 */\n  __IO uint32_t NLR;           /*!< DMA2D Number of Line Register,                  Address offset: 0x44 */\n  __IO uint32_t LWR;           /*!< DMA2D Line Watermark Register,                  Address offset: 0x48 */\n  __IO uint32_t AMTCR;         /*!< DMA2D AHB Master Timer Configuration Register,  Address offset: 0x4C */\n  uint32_t      RESERVED[236]; /*!< Reserved, 0x50-0x3FF */\n  __IO uint32_t FGCLUT[256];   /*!< DMA2D Foreground CLUT,                          Address offset:400-7FF */\n  __IO uint32_t BGCLUT[256];   /*!< DMA2D Background CLUT,                          Address offset:800-BFF */\n} DMA2D_TypeDef;\n\n\n/**\n  * @brief Ethernet MAC\n  */\ntypedef struct\n{\n  __IO uint32_t MACCR;\n  __IO uint32_t MACECR;\n  __IO uint32_t MACPFR;\n  __IO uint32_t MACWTR;\n  __IO uint32_t MACHT0R;\n  __IO uint32_t MACHT1R;\n  uint32_t      RESERVED1[14];\n  __IO uint32_t MACVTR;\n  uint32_t      RESERVED2;\n  __IO uint32_t MACVHTR;\n  uint32_t      RESERVED3;\n  __IO uint32_t MACVIR;\n  __IO uint32_t MACIVIR;\n  uint32_t      RESERVED4[2];\n  __IO uint32_t MACTFCR;\n  uint32_t      RESERVED5[7];\n  __IO uint32_t MACRFCR;\n  uint32_t      RESERVED6[7];\n  __IO uint32_t MACISR;\n  __IO uint32_t MACIER;\n  __IO uint32_t MACRXTXSR;\n  uint32_t      RESERVED7;\n  __IO uint32_t MACPCSR;\n  __IO uint32_t MACRWKPFR;\n  uint32_t      RESERVED8[2];\n  __IO uint32_t MACLCSR;\n  __IO uint32_t MACLTCR;\n  __IO uint32_t MACLETR;\n  __IO uint32_t MAC1USTCR;\n  uint32_t      RESERVED9[12];\n  __IO uint32_t MACVR;\n  __IO uint32_t MACDR;\n  uint32_t      RESERVED10;\n  __IO uint32_t MACHWF0R;\n  __IO uint32_t MACHWF1R;\n  __IO uint32_t MACHWF2R;\n  uint32_t      RESERVED11[54];\n  __IO uint32_t MACMDIOAR;\n  __IO uint32_t MACMDIODR;\n  uint32_t      RESERVED12[2];\n  __IO uint32_t MACARPAR;\n  uint32_t      RESERVED13[59];\n  __IO uint32_t MACA0HR;\n  __IO uint32_t MACA0LR;\n  __IO uint32_t MACA1HR;\n  __IO uint32_t MACA1LR;\n  __IO uint32_t MACA2HR;\n  __IO uint32_t MACA2LR;\n  __IO uint32_t MACA3HR;\n  __IO uint32_t MACA3LR;\n  uint32_t      RESERVED14[248];\n  __IO uint32_t MMCCR;\n  __IO uint32_t MMCRIR;\n  __IO uint32_t MMCTIR;\n  __IO uint32_t MMCRIMR;\n  __IO uint32_t MMCTIMR;\n  uint32_t      RESERVED15[14];\n  __IO uint32_t MMCTSCGPR;\n  __IO uint32_t MMCTMCGPR;\n  uint32_t      RESERVED16[5];\n  __IO uint32_t MMCTPCGR;\n  uint32_t      RESERVED17[10];\n  __IO uint32_t MMCRCRCEPR;\n  __IO uint32_t MMCRAEPR;\n  uint32_t      RESERVED18[10];\n  __IO uint32_t MMCRUPGR;\n  uint32_t      RESERVED19[9];\n  __IO uint32_t MMCTLPIMSTR;\n  __IO uint32_t MMCTLPITCR;\n  __IO uint32_t MMCRLPIMSTR;\n  __IO uint32_t MMCRLPITCR;\n  uint32_t      RESERVED20[65];\n  __IO uint32_t MACL3L4C0R;\n  __IO uint32_t MACL4A0R;\n  uint32_t      RESERVED21[2];\n  __IO uint32_t MACL3A0R0R;\n  __IO uint32_t MACL3A1R0R;\n  __IO uint32_t MACL3A2R0R;\n  __IO uint32_t MACL3A3R0R;\n  uint32_t      RESERVED22[4];\n  __IO uint32_t MACL3L4C1R;\n  __IO uint32_t MACL4A1R;\n  uint32_t      RESERVED23[2];\n  __IO uint32_t MACL3A0R1R;\n  __IO uint32_t MACL3A1R1R;\n  __IO uint32_t MACL3A2R1R;\n  __IO uint32_t MACL3A3R1R;\n  uint32_t      RESERVED24[108];\n  __IO uint32_t MACTSCR;\n  __IO uint32_t MACSSIR;\n  __IO uint32_t MACSTSR;\n  __IO uint32_t MACSTNR;\n  __IO uint32_t MACSTSUR;\n  __IO uint32_t MACSTNUR;\n  __IO uint32_t MACTSAR;\n  uint32_t      RESERVED25;\n  __IO uint32_t MACTSSR;\n  uint32_t      RESERVED26[3];\n  __IO uint32_t MACTTSSNR;\n  __IO uint32_t MACTTSSSR;\n  uint32_t      RESERVED27[2];\n  __IO uint32_t MACACR;\n  uint32_t      RESERVED28;\n  __IO uint32_t MACATSNR;\n  __IO uint32_t MACATSSR;\n  __IO uint32_t MACTSIACR;\n  __IO uint32_t MACTSEACR;\n  __IO uint32_t MACTSICNR;\n  __IO uint32_t MACTSECNR;\n  uint32_t      RESERVED29[4];\n  __IO uint32_t MACPPSCR;\n  uint32_t      RESERVED30[3];\n  __IO uint32_t MACPPSTTSR;\n  __IO uint32_t MACPPSTTNR;\n  __IO uint32_t MACPPSIR;\n  __IO uint32_t MACPPSWR;\n  uint32_t      RESERVED31[12];\n  __IO uint32_t MACPOCR;\n  __IO uint32_t MACSPI0R;\n  __IO uint32_t MACSPI1R;\n  __IO uint32_t MACSPI2R;\n  __IO uint32_t MACLMIR;\n  uint32_t      RESERVED32[11];\n  __IO uint32_t MTLOMR;\n  uint32_t      RESERVED33[7];\n  __IO uint32_t MTLISR;\n  uint32_t      RESERVED34[55];\n  __IO uint32_t MTLTQOMR;\n  __IO uint32_t MTLTQUR;\n  __IO uint32_t MTLTQDR;\n  uint32_t      RESERVED35[8];\n  __IO uint32_t MTLQICSR;\n  __IO uint32_t MTLRQOMR;\n  __IO uint32_t MTLRQMPOCR;\n  __IO uint32_t MTLRQDR;\n  uint32_t      RESERVED36[177];\n  __IO uint32_t DMAMR;\n  __IO uint32_t DMASBMR;\n  __IO uint32_t DMAISR;\n  __IO uint32_t DMADSR;\n  uint32_t      RESERVED37[60];\n  __IO uint32_t DMACCR;\n  __IO uint32_t DMACTCR;\n  __IO uint32_t DMACRCR;\n  uint32_t      RESERVED38[2];\n  __IO uint32_t DMACTDLAR;\n  uint32_t      RESERVED39;\n  __IO uint32_t DMACRDLAR;\n  __IO uint32_t DMACTDTPR;\n  uint32_t      RESERVED40;\n  __IO uint32_t DMACRDTPR;\n  __IO uint32_t DMACTDRLR;\n  __IO uint32_t DMACRDRLR;\n  __IO uint32_t DMACIER;\n  __IO uint32_t DMACRIWTR;\n__IO uint32_t DMACSFCSR;\n  uint32_t      RESERVED41;\n  __IO uint32_t DMACCATDR;\n  uint32_t      RESERVED42;\n  __IO uint32_t DMACCARDR;\n  uint32_t      RESERVED43;\n  __IO uint32_t DMACCATBR;\n  uint32_t      RESERVED44;\n  __IO uint32_t DMACCARBR;\n  __IO uint32_t DMACSR;\nuint32_t      RESERVED45[2];\n__IO uint32_t DMACMFCR;\n}ETH_TypeDef;\n/**\n  * @brief External Interrupt/Event Controller\n  */\n\ntypedef struct\n{\n__IO uint32_t RTSR1;               /*!< EXTI Rising trigger selection register,          Address offset: 0x00 */\n__IO uint32_t FTSR1;               /*!< EXTI Falling trigger selection register,         Address offset: 0x04 */\n__IO uint32_t SWIER1;              /*!< EXTI Software interrupt event register,          Address offset: 0x08 */\n__IO uint32_t D3PMR1;              /*!< EXTI D3 Pending mask register, (same register as to SRDPMR1) Address offset: 0x0C */\n__IO uint32_t D3PCR1L;             /*!< EXTI D3 Pending clear selection register low, (same register as to SRDPCR1L)     Address offset: 0x10 */\n__IO uint32_t D3PCR1H;             /*!< EXTI D3 Pending clear selection register High, (same register as to SRDPCR1H)   Address offset: 0x14 */\nuint32_t      RESERVED1[2];        /*!< Reserved,                                        0x18 to 0x1C         */\n__IO uint32_t RTSR2;               /*!< EXTI Rising trigger selection register,          Address offset: 0x20 */\n__IO uint32_t FTSR2;               /*!< EXTI Falling trigger selection register,         Address offset: 0x24 */\n__IO uint32_t SWIER2;              /*!< EXTI Software interrupt event register,          Address offset: 0x28 */\n__IO uint32_t D3PMR2;              /*!< EXTI D3 Pending mask register, (same register as to SRDPMR2) Address offset: 0x2C */\n__IO uint32_t D3PCR2L;             /*!< EXTI D3 Pending clear selection register low, (same register as to SRDPCR2L)  Address offset: 0x30 */\n__IO uint32_t D3PCR2H;             /*!< EXTI D3 Pending clear selection register High, (same register as to SRDPCR2H) Address offset: 0x34 */\nuint32_t      RESERVED2[2];        /*!< Reserved,                                        0x38 to 0x3C         */\n__IO uint32_t RTSR3;               /*!< EXTI Rising trigger selection register,          Address offset: 0x40 */\n__IO uint32_t FTSR3;               /*!< EXTI Falling trigger selection register,         Address offset: 0x44 */\n__IO uint32_t SWIER3;              /*!< EXTI Software interrupt event register,          Address offset: 0x48 */\n__IO uint32_t D3PMR3;              /*!< EXTI D3 Pending mask register, (same register as to SRDPMR3) Address offset: 0x4C */\n__IO uint32_t D3PCR3L;             /*!< EXTI D3 Pending clear selection register low, (same register as to SRDPCR3L) Address offset: 0x50 */\n__IO uint32_t D3PCR3H;             /*!< EXTI D3 Pending clear selection register High, (same register as to SRDPCR3H) Address offset: 0x54 */\nuint32_t      RESERVED3[10];       /*!< Reserved,                                        0x58 to 0x7C         */\n__IO uint32_t IMR1;                /*!< EXTI Interrupt mask register,                    Address offset: 0x80 */\n__IO uint32_t EMR1;                /*!< EXTI Event mask register,                        Address offset: 0x84 */\n__IO uint32_t PR1;                 /*!< EXTI Pending register,                           Address offset: 0x88 */\nuint32_t      RESERVED4;           /*!< Reserved,                                        0x8C                 */\n__IO uint32_t IMR2;                /*!< EXTI Interrupt mask register,                    Address offset: 0x90 */\n__IO uint32_t EMR2;                /*!< EXTI Event mask register,                        Address offset: 0x94 */\n__IO uint32_t PR2;                 /*!< EXTI Pending register,                           Address offset: 0x98 */\nuint32_t      RESERVED5;           /*!< Reserved,                                        0x9C                 */\n__IO uint32_t IMR3;                /*!< EXTI Interrupt mask register,                    Address offset: 0xA0 */\n__IO uint32_t EMR3;                /*!< EXTI Event mask register,                        Address offset: 0xA4 */\n__IO uint32_t PR3;                 /*!< EXTI Pending register,                           Address offset: 0xA8 */\n}EXTI_TypeDef;\n\n/**\n  * @brief This structure registers corresponds to EXTI_Typdef CPU1/CPU2 registers subset (IMRx, EMRx and PRx), allowing to define EXTI_D1/EXTI_D2\n  *        with rapid/common access to these IMRx, EMRx, PRx registers for CPU1 and CPU2.\n  *        Note that EXTI_D1 and EXTI_D2 bases addresses are calculated to point to CPUx first register:\n  *           IMR1   in case of EXTI_D1 that is addressing CPU1 (Cortex-M7)\n  *           C2IMR1 in case of EXTI_D2 that is addressing CPU2 (Cortex-M4)\n  *        Note: EXTI_D2 and corresponding C2IMRx, C2EMRx and C2PRx registers are available for Dual Core devices only\n  */\n\ntypedef struct\n{\n__IO uint32_t IMR1;                /*!< EXTI Interrupt mask register,                Address offset: 0x00 */\n__IO uint32_t EMR1;                /*!< EXTI Event mask register,                    Address offset: 0x04 */\n__IO uint32_t PR1;                 /*!< EXTI Pending register,                       Address offset: 0x08 */\nuint32_t      RESERVED1;           /*!< Reserved, 0x0C                                                    */\n__IO uint32_t IMR2;                /*!< EXTI Interrupt mask register,                Address offset: 0x10 */\n__IO uint32_t EMR2;                /*!< EXTI Event mask register,                    Address offset: 0x14 */\n__IO uint32_t PR2;                 /*!< EXTI Pending register,                       Address offset: 0x18 */\nuint32_t      RESERVED2;           /*!< Reserved, 0x1C                                                    */\n__IO uint32_t IMR3;                /*!< EXTI Interrupt mask register,                Address offset: 0x20 */\n__IO uint32_t EMR3;                /*!< EXTI Event mask register,                    Address offset: 0x24 */\n__IO uint32_t PR3;                 /*!< EXTI Pending register,                       Address offset: 0x28 */\n}EXTI_Core_TypeDef;\n\n\n/**\n  * @brief FLASH Registers\n  */\n\ntypedef struct\n{\n  __IO uint32_t ACR;             /*!< FLASH access control register,                            Address offset: 0x00  */\n  __IO uint32_t KEYR1;           /*!< Flash Key Register for bank1,                             Address offset: 0x04  */\n  __IO uint32_t OPTKEYR;         /*!< Flash Option Key Register,                                Address offset: 0x08  */\n  __IO uint32_t CR1;             /*!< Flash Control Register for bank1,                         Address offset: 0x0C  */\n  __IO uint32_t SR1;             /*!< Flash Status Register for bank1,                          Address offset: 0x10  */\n  __IO uint32_t CCR1;            /*!< Flash Control Register for bank1,                         Address offset: 0x14  */\n  __IO uint32_t OPTCR;           /*!< Flash Option Control Register,                            Address offset: 0x18  */\n  __IO uint32_t OPTSR_CUR;       /*!< Flash Option Status Current Register,                     Address offset: 0x1C  */\n  __IO uint32_t OPTSR_PRG;       /*!< Flash Option Status to Program Register,                  Address offset: 0x20  */\n  __IO uint32_t OPTCCR;          /*!< Flash Option Clear Control Register,                      Address offset: 0x24  */\n  __IO uint32_t PRAR_CUR1;       /*!< Flash Current Protection Address Register for bank1,      Address offset: 0x28  */\n  __IO uint32_t PRAR_PRG1;       /*!< Flash Protection Address to Program Register for bank1,   Address offset: 0x2C  */\n  __IO uint32_t SCAR_CUR1;       /*!< Flash Current Secure Address Register for bank1,          Address offset: 0x30  */\n  __IO uint32_t SCAR_PRG1;       /*!< Flash Secure Address to Program Register for bank1,       Address offset: 0x34  */\n  __IO uint32_t WPSN_CUR1;       /*!< Flash Current Write Protection Register on bank1,         Address offset: 0x38  */\n  __IO uint32_t WPSN_PRG1;       /*!< Flash Write Protection to Program Register on bank1,      Address offset: 0x3C  */\n  __IO uint32_t BOOT_CUR;        /*!< Flash Current Boot Address for Pelican Core Register,     Address offset: 0x40  */\n  __IO uint32_t BOOT_PRG;        /*!< Flash Boot Address to Program for Pelican Core Register,  Address offset: 0x44  */\n  uint32_t      RESERVED0[2];    /*!< Reserved, 0x48 to 0x4C                                                          */\n  __IO uint32_t CRCCR1;          /*!< Flash CRC Control register For Bank1 Register ,           Address offset: 0x50  */\n  __IO uint32_t CRCSADD1;        /*!< Flash CRC Start Address Register for Bank1 ,              Address offset: 0x54  */\n  __IO uint32_t CRCEADD1;        /*!< Flash CRC End Address Register for Bank1 ,                Address offset: 0x58  */\n  __IO uint32_t CRCDATA;         /*!< Flash CRC Data Register for Bank1 ,                       Address offset: 0x5C  */\n  __IO uint32_t ECC_FA1;         /*!< Flash ECC Fail Address For Bank1 Register ,               Address offset: 0x60  */\n  uint32_t      RESERVED1[40];   /*!< Reserved, 0x64 to 0x100                                                         */\n  __IO uint32_t KEYR2;           /*!< Flash Key Register for bank2,                             Address offset: 0x104 */\n  uint32_t      RESERVED2;       /*!< Reserved, 0x108                                                                 */\n  __IO uint32_t CR2;             /*!< Flash Control Register for bank2,                         Address offset: 0x10C */\n  __IO uint32_t SR2;             /*!< Flash Status Register for bank2,                          Address offset: 0x110 */\n  __IO uint32_t CCR2;            /*!< Flash Status Register for bank2,                          Address offset: 0x114 */\n  uint32_t      RESERVED3[4];    /*!< Reserved, 0x118 to 0x124                                                        */\n  __IO uint32_t PRAR_CUR2;       /*!< Flash Current Protection Address Register for bank2,      Address offset: 0x128 */\n  __IO uint32_t PRAR_PRG2;       /*!< Flash Protection Address to Program Register for bank2,   Address offset: 0x12C */\n  __IO uint32_t SCAR_CUR2;       /*!< Flash Current Secure Address Register for bank2,          Address offset: 0x130 */\n  __IO uint32_t SCAR_PRG2;       /*!< Flash Secure Address Register for bank2,                  Address offset: 0x134 */\n  __IO uint32_t WPSN_CUR2;       /*!< Flash Current Write Protection Register on bank2,         Address offset: 0x138 */\n  __IO uint32_t WPSN_PRG2;       /*!< Flash Write Protection to Program Register on bank2,      Address offset: 0x13C */\n  uint32_t      RESERVED4[4];    /*!< Reserved, 0x140 to 0x14C                                                        */\n  __IO uint32_t CRCCR2;          /*!< Flash CRC Control register For Bank2 Register ,           Address offset: 0x150 */\n  __IO uint32_t CRCSADD2;        /*!< Flash CRC Start Address Register for Bank2 ,              Address offset: 0x154 */\n  __IO uint32_t CRCEADD2;        /*!< Flash CRC End Address Register for Bank2 ,                Address offset: 0x158 */\n  __IO uint32_t CRCDATA2;        /*!< Flash CRC Data Register for Bank2 ,                       Address offset: 0x15C */\n  __IO uint32_t ECC_FA2;         /*!< Flash ECC Fail Address For Bank2 Register ,               Address offset: 0x160 */\n} FLASH_TypeDef;\n\n/**\n  * @brief Flexible Memory Controller\n  */\n\ntypedef struct\n{\n  __IO uint32_t BTCR[8];    /*!< NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */\n} FMC_Bank1_TypeDef;\n\n/**\n  * @brief Flexible Memory Controller Bank1E\n  */\n\ntypedef struct\n{\n  __IO uint32_t BWTR[7];    /*!< NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */\n} FMC_Bank1E_TypeDef;\n\n/**\n  * @brief Flexible Memory Controller Bank2\n  */\n\ntypedef struct\n{\n  __IO uint32_t PCR2;       /*!< NAND Flash control register 2,                       Address offset: 0x60 */\n  __IO uint32_t SR2;        /*!< NAND Flash FIFO status and interrupt register 2,     Address offset: 0x64 */\n  __IO uint32_t PMEM2;      /*!< NAND Flash Common memory space timing register 2,    Address offset: 0x68 */\n  __IO uint32_t PATT2;      /*!< NAND Flash Attribute memory space timing register 2, Address offset: 0x6C */\n  uint32_t      RESERVED0;  /*!< Reserved, 0x70                                                            */\n  __IO uint32_t ECCR2;      /*!< NAND Flash ECC result registers 2,                   Address offset: 0x74 */\n} FMC_Bank2_TypeDef;\n\n/**\n  * @brief Flexible Memory Controller Bank3\n  */\n\ntypedef struct\n{\n  __IO uint32_t PCR;       /*!< NAND Flash control register 3,                       Address offset: 0x80 */\n  __IO uint32_t SR;        /*!< NAND Flash FIFO status and interrupt register 3,     Address offset: 0x84 */\n  __IO uint32_t PMEM;      /*!< NAND Flash Common memory space timing register 3,    Address offset: 0x88 */\n  __IO uint32_t PATT;      /*!< NAND Flash Attribute memory space timing register 3, Address offset: 0x8C */\n  uint32_t      RESERVED;  /*!< Reserved, 0x90                                                            */\n  __IO uint32_t ECCR;      /*!< NAND Flash ECC result registers 3,                   Address offset: 0x94 */\n} FMC_Bank3_TypeDef;\n\n/**\n  * @brief Flexible Memory Controller Bank5 and 6\n  */\n\n\ntypedef struct\n{\n  __IO uint32_t SDCR[2];        /*!< SDRAM Control registers ,      Address offset: 0x140-0x144  */\n  __IO uint32_t SDTR[2];        /*!< SDRAM Timing registers ,       Address offset: 0x148-0x14C  */\n  __IO uint32_t SDCMR;       /*!< SDRAM Command Mode register,    Address offset: 0x150  */\n  __IO uint32_t SDRTR;       /*!< SDRAM Refresh Timer register,   Address offset: 0x154  */\n  __IO uint32_t SDSR;        /*!< SDRAM Status register,          Address offset: 0x158  */\n} FMC_Bank5_6_TypeDef;\n\n/**\n  * @brief General Purpose I/O\n  */\n\ntypedef struct\n{\n  __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */\n  __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */\n  __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */\n  __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */\n  __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */\n  __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */\n  __IO uint32_t BSRR;     /*!< GPIO port bit set/reset,               Address offset: 0x18      */\n  __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */\n  __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */\n} GPIO_TypeDef;\n\n/**\n  * @brief Operational Amplifier (OPAMP)\n  */\n\ntypedef struct\n{\n  __IO uint32_t CSR;          /*!< OPAMP control/status register,                      Address offset: 0x00 */\n  __IO uint32_t OTR;          /*!< OPAMP offset trimming register for normal mode,     Address offset: 0x04 */\n  __IO uint32_t HSOTR;        /*!< OPAMP offset trimming register for high speed mode, Address offset: 0x08 */\n} OPAMP_TypeDef;\n\n/**\n  * @brief System configuration controller\n  */\n\ntypedef struct\n{\n uint32_t RESERVED1;           /*!< Reserved,                                           Address offset: 0x00        */\n __IO uint32_t PMCR;           /*!< SYSCFG peripheral mode configuration register,      Address offset: 0x04        */\n __IO uint32_t EXTICR[4];      /*!< SYSCFG external interrupt configuration registers,  Address offset: 0x08-0x14   */\n __IO uint32_t CFGR;           /*!< SYSCFG configuration registers,                     Address offset: 0x18        */\n uint32_t RESERVED2;           /*!< Reserved,                                           Address offset: 0x1C        */\n __IO uint32_t CCCSR;          /*!< SYSCFG compensation cell control/status register,   Address offset: 0x20        */\n __IO uint32_t CCVR;           /*!< SYSCFG compensation cell value register,            Address offset: 0x24        */\n __IO uint32_t CCCR;           /*!< SYSCFG compensation cell code register,             Address offset: 0x28        */\n __IO uint32_t PWRCR;          /*!< PWR control register,                               Address offset: 0x2C        */\n  uint32_t     RESERVED3[61];  /*!< Reserved, 0x30-0x120                                                            */\n  __IO uint32_t PKGR;          /*!< SYSCFG package register,                            Address offset: 0x124       */\n  uint32_t     RESERVED4[118]; /*!< Reserved, 0x128-0x2FC                                                           */\n __IO uint32_t UR0;            /*!< SYSCFG user register 0,                             Address offset: 0x300       */\n __IO uint32_t UR1;            /*!< SYSCFG user register 1,                             Address offset: 0x304       */\n __IO uint32_t UR2;            /*!< SYSCFG user register 2,                             Address offset: 0x308       */\n __IO uint32_t UR3;            /*!< SYSCFG user register 3,                             Address offset: 0x30C       */\n __IO uint32_t UR4;            /*!< SYSCFG user register 4,                             Address offset: 0x310       */\n __IO uint32_t UR5;            /*!< SYSCFG user register 5,                             Address offset: 0x314       */\n __IO uint32_t UR6;            /*!< SYSCFG user register 6,                             Address offset: 0x318       */\n __IO uint32_t UR7;            /*!< SYSCFG user register 7,                             Address offset: 0x31C       */\n __IO uint32_t UR8;            /*!< SYSCFG user register 8,                             Address offset: 0x320       */\n __IO uint32_t UR9;            /*!< SYSCFG user register 9,                             Address offset: 0x324       */\n __IO uint32_t UR10;           /*!< SYSCFG user register 10,                            Address offset: 0x328       */\n __IO uint32_t UR11;           /*!< SYSCFG user register 11,                            Address offset: 0x32C       */\n __IO uint32_t UR12;           /*!< SYSCFG user register 12,                            Address offset: 0x330       */\n __IO uint32_t UR13;           /*!< SYSCFG user register 13,                            Address offset: 0x334       */\n __IO uint32_t UR14;           /*!< SYSCFG user register 14,                            Address offset: 0x338       */\n __IO uint32_t UR15;           /*!< SYSCFG user register 15,                            Address offset: 0x33C       */\n __IO uint32_t UR16;           /*!< SYSCFG user register 16,                            Address offset: 0x340       */\n __IO uint32_t UR17;           /*!< SYSCFG user register 17,                            Address offset: 0x344       */\n\n} SYSCFG_TypeDef;\n\n/**\n  * @brief Inter-integrated Circuit Interface\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR1;      /*!< I2C Control register 1,            Address offset: 0x00 */\n  __IO uint32_t CR2;      /*!< I2C Control register 2,            Address offset: 0x04 */\n  __IO uint32_t OAR1;     /*!< I2C Own address 1 register,        Address offset: 0x08 */\n  __IO uint32_t OAR2;     /*!< I2C Own address 2 register,        Address offset: 0x0C */\n  __IO uint32_t TIMINGR;  /*!< I2C Timing register,               Address offset: 0x10 */\n  __IO uint32_t TIMEOUTR; /*!< I2C Timeout register,              Address offset: 0x14 */\n  __IO uint32_t ISR;      /*!< I2C Interrupt and status register, Address offset: 0x18 */\n  __IO uint32_t ICR;      /*!< I2C Interrupt clear register,      Address offset: 0x1C */\n  __IO uint32_t PECR;     /*!< I2C PEC register,                  Address offset: 0x20 */\n  __IO uint32_t RXDR;     /*!< I2C Receive data register,         Address offset: 0x24 */\n  __IO uint32_t TXDR;     /*!< I2C Transmit data register,        Address offset: 0x28 */\n} I2C_TypeDef;\n\n/**\n  * @brief Independent WATCHDOG\n  */\n\ntypedef struct\n{\n  __IO uint32_t KR;   /*!< IWDG Key register,       Address offset: 0x00 */\n  __IO uint32_t PR;   /*!< IWDG Prescaler register, Address offset: 0x04 */\n  __IO uint32_t RLR;  /*!< IWDG Reload register,    Address offset: 0x08 */\n  __IO uint32_t SR;   /*!< IWDG Status register,    Address offset: 0x0C */\n  __IO uint32_t WINR; /*!< IWDG Window register,    Address offset: 0x10 */\n} IWDG_TypeDef;\n\n\n/**\n  * @brief JPEG Codec\n  */\ntypedef struct\n{\n  __IO uint32_t CONFR0;          /*!< JPEG Codec Control Register (JPEG_CONFR0),        Address offset: 00h       */\n  __IO uint32_t CONFR1;          /*!< JPEG Codec Control Register (JPEG_CONFR1),        Address offset: 04h       */\n  __IO uint32_t CONFR2;          /*!< JPEG Codec Control Register (JPEG_CONFR2),        Address offset: 08h       */\n  __IO uint32_t CONFR3;          /*!< JPEG Codec Control Register (JPEG_CONFR3),        Address offset: 0Ch       */\n  __IO uint32_t CONFR4;          /*!< JPEG Codec Control Register (JPEG_CONFR4),        Address offset: 10h       */\n  __IO uint32_t CONFR5;          /*!< JPEG Codec Control Register (JPEG_CONFR5),        Address offset: 14h       */\n  __IO uint32_t CONFR6;          /*!< JPEG Codec Control Register (JPEG_CONFR6),        Address offset: 18h       */\n  __IO uint32_t CONFR7;          /*!< JPEG Codec Control Register (JPEG_CONFR7),        Address offset: 1Ch       */\n  uint32_t  Reserved20[4];       /* Reserved                                            Address offset: 20h-2Ch   */\n  __IO uint32_t CR;              /*!< JPEG Control Register (JPEG_CR),                  Address offset: 30h       */\n  __IO uint32_t SR;              /*!< JPEG Status Register (JPEG_SR),                   Address offset: 34h       */\n  __IO uint32_t CFR;             /*!< JPEG Clear Flag Register (JPEG_CFR),              Address offset: 38h       */\n  uint32_t  Reserved3c;          /* Reserved                                            Address offset: 3Ch       */\n  __IO uint32_t DIR;             /*!< JPEG Data Input Register (JPEG_DIR),              Address offset: 40h       */\n  __IO uint32_t DOR;             /*!< JPEG Data Output Register (JPEG_DOR),             Address offset: 44h       */\n  uint32_t  Reserved48[2];       /* Reserved                                            Address offset: 48h-4Ch   */\n  __IO uint32_t QMEM0[16];       /*!< JPEG quantization tables 0,                       Address offset: 50h-8Ch   */\n  __IO uint32_t QMEM1[16];       /*!< JPEG quantization tables 1,                       Address offset: 90h-CCh   */\n  __IO uint32_t QMEM2[16];       /*!< JPEG quantization tables 2,                       Address offset: D0h-10Ch  */\n  __IO uint32_t QMEM3[16];       /*!< JPEG quantization tables 3,                       Address offset: 110h-14Ch */\n  __IO uint32_t HUFFMIN[16];     /*!< JPEG HuffMin tables,                              Address offset: 150h-18Ch */\n  __IO uint32_t HUFFBASE[32];    /*!< JPEG HuffSymb tables,                             Address offset: 190h-20Ch */\n  __IO uint32_t HUFFSYMB[84];    /*!< JPEG HUFFSYMB tables,                             Address offset: 210h-35Ch */\n  __IO uint32_t DHTMEM[103];     /*!< JPEG DHTMem tables,                               Address offset: 360h-4F8h */\n  uint32_t  Reserved4FC;         /* Reserved                                            Address offset: 4FCh      */\n  __IO uint32_t HUFFENC_AC0[88]; /*!< JPEG encodor, AC Huffman table 0,                 Address offset: 500h-65Ch */\n  __IO uint32_t HUFFENC_AC1[88]; /*!< JPEG encodor, AC Huffman table 1,                 Address offset: 660h-7BCh */\n  __IO uint32_t HUFFENC_DC0[8];  /*!< JPEG encodor, DC Huffman table 0,                 Address offset: 7C0h-7DCh */\n  __IO uint32_t HUFFENC_DC1[8];  /*!< JPEG encodor, DC Huffman table 1,                 Address offset: 7E0h-7FCh */\n\n} JPEG_TypeDef;\n\n/**\n  * @brief LCD-TFT Display Controller\n  */\n\ntypedef struct\n{\n  uint32_t      RESERVED0[2];  /*!< Reserved, 0x00-0x04                                                       */\n  __IO uint32_t SSCR;          /*!< LTDC Synchronization Size Configuration Register,    Address offset: 0x08 */\n  __IO uint32_t BPCR;          /*!< LTDC Back Porch Configuration Register,              Address offset: 0x0C */\n  __IO uint32_t AWCR;          /*!< LTDC Active Width Configuration Register,            Address offset: 0x10 */\n  __IO uint32_t TWCR;          /*!< LTDC Total Width Configuration Register,             Address offset: 0x14 */\n  __IO uint32_t GCR;           /*!< LTDC Global Control Register,                        Address offset: 0x18 */\n  uint32_t      RESERVED1[2];  /*!< Reserved, 0x1C-0x20                                                       */\n  __IO uint32_t SRCR;          /*!< LTDC Shadow Reload Configuration Register,           Address offset: 0x24 */\n  uint32_t      RESERVED2[1];  /*!< Reserved, 0x28                                                            */\n  __IO uint32_t BCCR;          /*!< LTDC Background Color Configuration Register,        Address offset: 0x2C */\n  uint32_t      RESERVED3[1];  /*!< Reserved, 0x30                                                            */\n  __IO uint32_t IER;           /*!< LTDC Interrupt Enable Register,                      Address offset: 0x34 */\n  __IO uint32_t ISR;           /*!< LTDC Interrupt Status Register,                      Address offset: 0x38 */\n  __IO uint32_t ICR;           /*!< LTDC Interrupt Clear Register,                       Address offset: 0x3C */\n  __IO uint32_t LIPCR;         /*!< LTDC Line Interrupt Position Configuration Register, Address offset: 0x40 */\n  __IO uint32_t CPSR;          /*!< LTDC Current Position Status Register,               Address offset: 0x44 */\n  __IO uint32_t CDSR;         /*!< LTDC Current Display Status Register,                 Address offset: 0x48 */\n} LTDC_TypeDef;\n\n/**\n  * @brief LCD-TFT Display layer x Controller\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;            /*!< LTDC Layerx Control Register                                  Address offset: 0x84 */\n  __IO uint32_t WHPCR;         /*!< LTDC Layerx Window Horizontal Position Configuration Register Address offset: 0x88 */\n  __IO uint32_t WVPCR;         /*!< LTDC Layerx Window Vertical Position Configuration Register   Address offset: 0x8C */\n  __IO uint32_t CKCR;          /*!< LTDC Layerx Color Keying Configuration Register               Address offset: 0x90 */\n  __IO uint32_t PFCR;          /*!< LTDC Layerx Pixel Format Configuration Register               Address offset: 0x94 */\n  __IO uint32_t CACR;          /*!< LTDC Layerx Constant Alpha Configuration Register             Address offset: 0x98 */\n  __IO uint32_t DCCR;          /*!< LTDC Layerx Default Color Configuration Register              Address offset: 0x9C */\n  __IO uint32_t BFCR;          /*!< LTDC Layerx Blending Factors Configuration Register           Address offset: 0xA0 */\n  uint32_t      RESERVED0[2];  /*!< Reserved */\n  __IO uint32_t CFBAR;         /*!< LTDC Layerx Color Frame Buffer Address Register               Address offset: 0xAC */\n  __IO uint32_t CFBLR;         /*!< LTDC Layerx Color Frame Buffer Length Register                Address offset: 0xB0 */\n  __IO uint32_t CFBLNR;        /*!< LTDC Layerx ColorFrame Buffer Line Number Register            Address offset: 0xB4 */\n  uint32_t      RESERVED1[3];  /*!< Reserved */\n  __IO uint32_t CLUTWR;         /*!< LTDC Layerx CLUT Write Register                               Address offset: 0x144 */\n\n} LTDC_Layer_TypeDef;\n\n/**\n  * @brief Power Control\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR1;       /*!< PWR power control register 1,            Address offset: 0x00 */\n  __IO uint32_t CSR1;      /*!< PWR power control status register 1,     Address offset: 0x04 */\n  __IO uint32_t CR2;       /*!< PWR power control register 2,            Address offset: 0x08 */\n  __IO uint32_t CR3;       /*!< PWR power control register 3,            Address offset: 0x0C */\n  __IO uint32_t CPUCR;     /*!< PWR CPU control register,                Address offset: 0x10 */\n       uint32_t RESERVED0; /*!< Reserved,                                Address offset: 0x14 */\n  __IO uint32_t D3CR;      /*!< PWR D3 domain control register,          Address offset: 0x18 */\n       uint32_t RESERVED1; /*!< Reserved,                                Address offset: 0x1C */\n  __IO uint32_t WKUPCR;    /*!< PWR wakeup clear register,               Address offset: 0x20 */\n  __IO uint32_t WKUPFR;    /*!< PWR wakeup flag register,                Address offset: 0x24 */\n  __IO uint32_t WKUPEPR;   /*!< PWR wakeup enable and polarity register, Address offset: 0x28 */\n} PWR_TypeDef;\n\n/**\n  * @brief Reset and Clock Control\n  */\n\ntypedef struct\n{\n __IO uint32_t CR;             /*!< RCC clock control register,                                              Address offset: 0x00  */\n __IO uint32_t HSICFGR;        /*!< HSI Clock Calibration Register,                                          Address offset: 0x04  */\n __IO uint32_t CRRCR;          /*!< Clock Recovery RC  Register,                                             Address offset: 0x08  */\n __IO uint32_t CSICFGR;        /*!< CSI Clock Calibration Register,                                          Address offset: 0x0C  */\n __IO uint32_t CFGR;           /*!< RCC clock configuration register,                                        Address offset: 0x10  */\n uint32_t     RESERVED1;       /*!< Reserved,                                                                Address offset: 0x14  */\n __IO uint32_t D1CFGR;         /*!< RCC Domain 1 configuration register,                                     Address offset: 0x18  */\n __IO uint32_t D2CFGR;         /*!< RCC Domain 2 configuration register,                                     Address offset: 0x1C  */\n __IO uint32_t D3CFGR;         /*!< RCC Domain 3 configuration register,                                     Address offset: 0x20  */\n uint32_t     RESERVED2;       /*!< Reserved,                                                                Address offset: 0x24  */\n __IO uint32_t PLLCKSELR;      /*!< RCC PLLs Clock Source Selection Register,                                Address offset: 0x28  */\n __IO uint32_t PLLCFGR;        /*!< RCC PLLs  Configuration Register,                                        Address offset: 0x2C  */\n __IO uint32_t PLL1DIVR;       /*!< RCC PLL1 Dividers Configuration Register,                                Address offset: 0x30  */\n __IO uint32_t PLL1FRACR;      /*!< RCC PLL1 Fractional Divider Configuration Register,                      Address offset: 0x34  */\n __IO uint32_t PLL2DIVR;       /*!< RCC PLL2 Dividers Configuration Register,                                Address offset: 0x38  */\n __IO uint32_t PLL2FRACR;      /*!< RCC PLL2 Fractional Divider Configuration Register,                      Address offset: 0x3C  */\n __IO uint32_t PLL3DIVR;       /*!< RCC PLL3 Dividers Configuration Register,                                Address offset: 0x40  */\n __IO uint32_t PLL3FRACR;      /*!< RCC PLL3 Fractional Divider Configuration Register,                      Address offset: 0x44  */\n uint32_t      RESERVED3;      /*!< Reserved,                                                                Address offset: 0x48  */\n __IO uint32_t  D1CCIPR;       /*!< RCC Domain 1 Kernel Clock Configuration Register                         Address offset: 0x4C  */\n __IO uint32_t  D2CCIP1R;      /*!< RCC Domain 2 Kernel Clock Configuration Register                         Address offset: 0x50  */\n __IO uint32_t  D2CCIP2R;      /*!< RCC Domain 2 Kernel Clock Configuration Register                         Address offset: 0x54  */\n __IO uint32_t  D3CCIPR;       /*!< RCC Domain 3 Kernel Clock Configuration Register                         Address offset: 0x58  */\n uint32_t      RESERVED4;      /*!< Reserved,                                                                Address offset: 0x5C  */\n __IO uint32_t  CIER;          /*!< RCC Clock Source Interrupt Enable Register                               Address offset: 0x60  */\n __IO uint32_t  CIFR;          /*!< RCC Clock Source Interrupt Flag Register                                 Address offset: 0x64  */\n __IO uint32_t  CICR;          /*!< RCC Clock Source Interrupt Clear Register                                Address offset: 0x68  */\n uint32_t     RESERVED5;       /*!< Reserved,                                                                Address offset: 0x6C  */\n __IO uint32_t  BDCR;          /*!< RCC Vswitch Backup Domain Control Register,                              Address offset: 0x70  */\n __IO uint32_t  CSR;           /*!< RCC clock control & status register,                                     Address offset: 0x74  */\n uint32_t     RESERVED6;       /*!< Reserved,                                                                Address offset: 0x78  */\n __IO uint32_t AHB3RSTR;       /*!< RCC AHB3 peripheral reset register,                                      Address offset: 0x7C  */\n __IO uint32_t AHB1RSTR;       /*!< RCC AHB1 peripheral reset register,                                      Address offset: 0x80  */\n __IO uint32_t AHB2RSTR;       /*!< RCC AHB2 peripheral reset register,                                      Address offset: 0x84  */\n __IO uint32_t AHB4RSTR;       /*!< RCC AHB4 peripheral reset register,                                      Address offset: 0x88  */\n __IO uint32_t APB3RSTR;       /*!< RCC APB3 peripheral reset register,                                      Address offset: 0x8C  */\n __IO uint32_t APB1LRSTR;      /*!< RCC APB1 peripheral reset Low Word register,                             Address offset: 0x90  */\n __IO uint32_t APB1HRSTR;      /*!< RCC APB1 peripheral reset High Word register,                            Address offset: 0x94  */\n __IO uint32_t APB2RSTR;       /*!< RCC APB2 peripheral reset register,                                      Address offset: 0x98  */\n __IO uint32_t APB4RSTR;       /*!< RCC APB4 peripheral reset register,                                      Address offset: 0x9C  */\n __IO uint32_t GCR;            /*!< RCC RCC Global Control  Register,                                        Address offset: 0xA0  */\n uint32_t     RESERVED8;       /*!< Reserved,                                                                Address offset: 0xA4  */\n __IO uint32_t D3AMR;          /*!< RCC Domain 3 Autonomous Mode Register,                                   Address offset: 0xA8  */\n uint32_t     RESERVED11[9];    /*!< Reserved, 0xAC-0xCC                                                      Address offset: 0xAC  */\n __IO uint32_t RSR;            /*!< RCC Reset status register,                                               Address offset: 0xD0  */\n __IO uint32_t AHB3ENR;        /*!< RCC AHB3 peripheral clock  register,                                     Address offset: 0xD4  */\n __IO uint32_t AHB1ENR;        /*!< RCC AHB1 peripheral clock  register,                                     Address offset: 0xD8  */\n __IO uint32_t AHB2ENR;        /*!< RCC AHB2 peripheral clock  register,                                     Address offset: 0xDC  */\n __IO uint32_t AHB4ENR;        /*!< RCC AHB4 peripheral clock  register,                                     Address offset: 0xE0  */\n __IO uint32_t APB3ENR;        /*!< RCC APB3 peripheral clock  register,                                     Address offset: 0xE4  */\n __IO uint32_t APB1LENR;       /*!< RCC APB1 peripheral clock  Low Word register,                            Address offset: 0xE8  */\n __IO uint32_t APB1HENR;       /*!< RCC APB1 peripheral clock  High Word register,                           Address offset: 0xEC  */\n __IO uint32_t APB2ENR;        /*!< RCC APB2 peripheral clock  register,                                     Address offset: 0xF0  */\n __IO uint32_t APB4ENR;        /*!< RCC APB4 peripheral clock  register,                                     Address offset: 0xF4  */\n uint32_t      RESERVED12;      /*!< Reserved,                                                                Address offset: 0xF8  */\n __IO uint32_t AHB3LPENR;      /*!< RCC AHB3 peripheral sleep clock  register,                               Address offset: 0xFC  */\n __IO uint32_t AHB1LPENR;      /*!< RCC AHB1 peripheral sleep clock  register,                               Address offset: 0x100 */\n __IO uint32_t AHB2LPENR;      /*!< RCC AHB2 peripheral sleep clock  register,                               Address offset: 0x104 */\n __IO uint32_t AHB4LPENR;      /*!< RCC AHB4 peripheral sleep clock  register,                               Address offset: 0x108 */\n __IO uint32_t APB3LPENR;      /*!< RCC APB3 peripheral sleep clock  register,                               Address offset: 0x10C */\n __IO uint32_t APB1LLPENR;     /*!< RCC APB1 peripheral sleep clock  Low Word register,                      Address offset: 0x110 */\n __IO uint32_t APB1HLPENR;     /*!< RCC APB1 peripheral sleep clock  High Word register,                     Address offset: 0x114 */\n __IO uint32_t APB2LPENR;      /*!< RCC APB2 peripheral sleep clock  register,                               Address offset: 0x118 */\n __IO uint32_t APB4LPENR;      /*!< RCC APB4 peripheral sleep clock  register,                               Address offset: 0x11C */\n uint32_t     RESERVED13[4];   /*!< Reserved, 0x120-0x12C                                                    Address offset: 0x120 */\n\n} RCC_TypeDef;\n\n\n/**\n  * @brief Real-Time Clock\n  */\ntypedef struct\n{\n  __IO uint32_t TR;         /*!< RTC time register,                                         Address offset: 0x00 */\n  __IO uint32_t DR;         /*!< RTC date register,                                         Address offset: 0x04 */\n  __IO uint32_t CR;         /*!< RTC control register,                                      Address offset: 0x08 */\n  __IO uint32_t ISR;        /*!< RTC initialization and status register,                    Address offset: 0x0C */\n  __IO uint32_t PRER;       /*!< RTC prescaler register,                                    Address offset: 0x10 */\n  __IO uint32_t WUTR;       /*!< RTC wakeup timer register,                                 Address offset: 0x14 */\n       uint32_t RESERVED;   /*!< Reserved,                                                  Address offset: 0x18 */\n  __IO uint32_t ALRMAR;     /*!< RTC alarm A register,                                      Address offset: 0x1C */\n  __IO uint32_t ALRMBR;     /*!< RTC alarm B register,                                      Address offset: 0x20 */\n  __IO uint32_t WPR;        /*!< RTC write protection register,                             Address offset: 0x24 */\n  __IO uint32_t SSR;        /*!< RTC sub second register,                                   Address offset: 0x28 */\n  __IO uint32_t SHIFTR;     /*!< RTC shift control register,                                Address offset: 0x2C */\n  __IO uint32_t TSTR;       /*!< RTC time stamp time register,                              Address offset: 0x30 */\n  __IO uint32_t TSDR;       /*!< RTC time stamp date register,                              Address offset: 0x34 */\n  __IO uint32_t TSSSR;      /*!< RTC time-stamp sub second register,                        Address offset: 0x38 */\n  __IO uint32_t CALR;       /*!< RTC calibration register,                                  Address offset: 0x3C */\n  __IO uint32_t TAMPCR;     /*!< RTC tamper configuration register,                         Address offset: 0x40 */\n  __IO uint32_t ALRMASSR;   /*!< RTC alarm A sub second register,                           Address offset: 0x44 */\n  __IO uint32_t ALRMBSSR;   /*!< RTC alarm B sub second register,                           Address offset: 0x48 */\n  __IO uint32_t OR;         /*!< RTC option register,                                       Address offset: 0x4C */\n  __IO uint32_t BKP0R;      /*!< RTC backup register 0,                                     Address offset: 0x50 */\n  __IO uint32_t BKP1R;      /*!< RTC backup register 1,                                     Address offset: 0x54 */\n  __IO uint32_t BKP2R;      /*!< RTC backup register 2,                                     Address offset: 0x58 */\n  __IO uint32_t BKP3R;      /*!< RTC backup register 3,                                     Address offset: 0x5C */\n  __IO uint32_t BKP4R;      /*!< RTC backup register 4,                                     Address offset: 0x60 */\n  __IO uint32_t BKP5R;      /*!< RTC backup register 5,                                     Address offset: 0x64 */\n  __IO uint32_t BKP6R;      /*!< RTC backup register 6,                                     Address offset: 0x68 */\n  __IO uint32_t BKP7R;      /*!< RTC backup register 7,                                     Address offset: 0x6C */\n  __IO uint32_t BKP8R;      /*!< RTC backup register 8,                                     Address offset: 0x70 */\n  __IO uint32_t BKP9R;      /*!< RTC backup register 9,                                     Address offset: 0x74 */\n  __IO uint32_t BKP10R;     /*!< RTC backup register 10,                                    Address offset: 0x78 */\n  __IO uint32_t BKP11R;     /*!< RTC backup register 11,                                    Address offset: 0x7C */\n  __IO uint32_t BKP12R;     /*!< RTC backup register 12,                                    Address offset: 0x80 */\n  __IO uint32_t BKP13R;     /*!< RTC backup register 13,                                    Address offset: 0x84 */\n  __IO uint32_t BKP14R;     /*!< RTC backup register 14,                                    Address offset: 0x88 */\n  __IO uint32_t BKP15R;     /*!< RTC backup register 15,                                    Address offset: 0x8C */\n  __IO uint32_t BKP16R;     /*!< RTC backup register 16,                                    Address offset: 0x90 */\n  __IO uint32_t BKP17R;     /*!< RTC backup register 17,                                    Address offset: 0x94 */\n  __IO uint32_t BKP18R;     /*!< RTC backup register 18,                                    Address offset: 0x98 */\n  __IO uint32_t BKP19R;     /*!< RTC backup register 19,                                    Address offset: 0x9C */\n  __IO uint32_t BKP20R;     /*!< RTC backup register 20,                                    Address offset: 0xA0 */\n  __IO uint32_t BKP21R;     /*!< RTC backup register 21,                                    Address offset: 0xA4 */\n  __IO uint32_t BKP22R;     /*!< RTC backup register 22,                                    Address offset: 0xA8 */\n  __IO uint32_t BKP23R;     /*!< RTC backup register 23,                                    Address offset: 0xAC */\n  __IO uint32_t BKP24R;     /*!< RTC backup register 24,                                    Address offset: 0xB0 */\n  __IO uint32_t BKP25R;     /*!< RTC backup register 25,                                    Address offset: 0xB4 */\n  __IO uint32_t BKP26R;     /*!< RTC backup register 26,                                    Address offset: 0xB8 */\n  __IO uint32_t BKP27R;     /*!< RTC backup register 27,                                    Address offset: 0xBC */\n  __IO uint32_t BKP28R;     /*!< RTC backup register 28,                                    Address offset: 0xC0 */\n  __IO uint32_t BKP29R;     /*!< RTC backup register 29,                                    Address offset: 0xC4 */\n  __IO uint32_t BKP30R;     /*!< RTC backup register 30,                                    Address offset: 0xC8 */\n  __IO uint32_t BKP31R;     /*!< RTC backup register 31,                                    Address offset: 0xCC */\n} RTC_TypeDef;\n\n/**\n  * @brief Serial Audio Interface\n  */\n\ntypedef struct\n{\n  __IO uint32_t GCR;           /*!< SAI global configuration register, Address offset: 0x00 */\n  uint32_t      RESERVED0[16]; /*!< Reserved, 0x04 - 0x43                                   */\n  __IO uint32_t PDMCR;         /*!< SAI PDM control register,          Address offset: 0x44 */\n  __IO uint32_t PDMDLY;        /*!< SAI PDM delay register,            Address offset: 0x48 */\n} SAI_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t CR1;      /*!< SAI block x configuration register 1,     Address offset: 0x04 */\n  __IO uint32_t CR2;      /*!< SAI block x configuration register 2,     Address offset: 0x08 */\n  __IO uint32_t FRCR;     /*!< SAI block x frame configuration register, Address offset: 0x0C */\n  __IO uint32_t SLOTR;    /*!< SAI block x slot register,                Address offset: 0x10 */\n  __IO uint32_t IMR;      /*!< SAI block x interrupt mask register,      Address offset: 0x14 */\n  __IO uint32_t SR;       /*!< SAI block x status register,              Address offset: 0x18 */\n  __IO uint32_t CLRFR;    /*!< SAI block x clear flag register,          Address offset: 0x1C */\n  __IO uint32_t DR;       /*!< SAI block x data register,                Address offset: 0x20 */\n} SAI_Block_TypeDef;\n\n/**\n  * @brief SPDIF-RX Interface\n  */\n\ntypedef struct\n{\n  __IO uint32_t   CR;           /*!< Control register,                   Address offset: 0x00 */\n  __IO uint32_t   IMR;          /*!< Interrupt mask register,            Address offset: 0x04 */\n  __IO uint32_t   SR;           /*!< Status register,                    Address offset: 0x08 */\n  __IO uint32_t   IFCR;         /*!< Interrupt Flag Clear register,      Address offset: 0x0C */\n  __IO uint32_t   DR;           /*!< Data input register,                Address offset: 0x10 */\n  __IO uint32_t   CSR;          /*!< Channel Status register,            Address offset: 0x14 */\n  __IO uint32_t   DIR;          /*!< Debug Information register,         Address offset: 0x18 */\n  uint32_t        RESERVED2;    /*!< Reserved,  0x1A                                          */\n} SPDIFRX_TypeDef;\n\n\n/**\n  * @brief Secure digital input/output Interface\n  */\n\ntypedef struct\n{\n  __IO uint32_t POWER;          /*!< SDMMC power control register,             Address offset: 0x00  */\n  __IO uint32_t CLKCR;          /*!< SDMMC clock control register,             Address offset: 0x04  */\n  __IO uint32_t ARG;            /*!< SDMMC argument register,                  Address offset: 0x08  */\n  __IO uint32_t CMD;            /*!< SDMMC command register,                   Address offset: 0x0C  */\n  __I uint32_t  RESPCMD;        /*!< SDMMC command response register,          Address offset: 0x10  */\n  __I uint32_t  RESP1;          /*!< SDMMC response 1 register,                Address offset: 0x14  */\n  __I uint32_t  RESP2;          /*!< SDMMC response 2 register,                Address offset: 0x18  */\n  __I uint32_t  RESP3;          /*!< SDMMC response 3 register,                Address offset: 0x1C  */\n  __I uint32_t  RESP4;          /*!< SDMMC response 4 register,                Address offset: 0x20  */\n  __IO uint32_t DTIMER;         /*!< SDMMC data timer register,                Address offset: 0x24  */\n  __IO uint32_t DLEN;           /*!< SDMMC data length register,               Address offset: 0x28  */\n  __IO uint32_t DCTRL;          /*!< SDMMC data control register,              Address offset: 0x2C  */\n  __I uint32_t  DCOUNT;         /*!< SDMMC data counter register,              Address offset: 0x30  */\n  __I uint32_t  STA;            /*!< SDMMC status register,                    Address offset: 0x34  */\n  __IO uint32_t ICR;            /*!< SDMMC interrupt clear register,           Address offset: 0x38  */\n  __IO uint32_t MASK;           /*!< SDMMC mask register,                      Address offset: 0x3C  */\n  __IO uint32_t ACKTIME;        /*!< SDMMC Acknowledgement timer register,     Address offset: 0x40  */\n  uint32_t      RESERVED0[3];   /*!< Reserved, 0x44 - 0x4C - 0x4C                                    */\n  __IO uint32_t IDMACTRL;       /*!< SDMMC DMA control register,               Address offset: 0x50  */\n  __IO uint32_t IDMABSIZE;      /*!< SDMMC DMA buffer size register,           Address offset: 0x54  */\n  __IO uint32_t IDMABASE0;      /*!< SDMMC DMA buffer 0 base address register, Address offset: 0x58  */\n  __IO uint32_t IDMABASE1;      /*!< SDMMC DMA buffer 1 base address register, Address offset: 0x5C  */\n  uint32_t      RESERVED1[8];   /*!< Reserved, 0x60-0x7C                                             */\n  __IO uint32_t FIFO;           /*!< SDMMC data FIFO register,                 Address offset: 0x80  */\n  uint32_t      RESERVED2[222]; /*!< Reserved, 0x84-0x3F8                                            */\n  __IO uint32_t IPVR;           /*!< SDMMC data FIFO register,                 Address offset: 0x3FC */\n} SDMMC_TypeDef;\n\n\n/**\n  * @brief Delay Block DLYB\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;          /*!< DELAY BLOCK control register,  Address offset: 0x00 */\n  __IO uint32_t CFGR;        /*!< DELAY BLOCK configuration register,  Address offset: 0x04 */\n} DLYB_TypeDef;\n\n/**\n  * @brief HW Semaphore HSEM\n  */\n\ntypedef struct\n{\n  __IO uint32_t R[32];      /*!< 2-step write lock and read back registers,     Address offset: 00h-7Ch  */\n  __IO uint32_t RLR[32];    /*!< 1-step read lock registers,                    Address offset: 80h-FCh  */\n  __IO uint32_t C1IER;      /*!< HSEM Interrupt enable register ,             Address offset: 100h     */\n  __IO uint32_t C1ICR;      /*!< HSEM Interrupt clear register ,              Address offset: 104h     */\n  __IO uint32_t C1ISR;      /*!< HSEM Interrupt Status register ,             Address offset: 108h     */\n  __IO uint32_t C1MISR;     /*!< HSEM Interrupt Masked Status register ,      Address offset: 10Ch     */\n  uint32_t  Reserved[12];   /* Reserved                                       Address offset: 110h-13Ch  */\n  __IO uint32_t CR;         /*!< HSEM Semaphore clear register ,                Address offset: 140h      */\n  __IO uint32_t KEYR;       /*!< HSEM Semaphore clear key register ,            Address offset: 144h      */\n\n} HSEM_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t IER;        /*!< HSEM interrupt enable register ,                Address offset:   0h     */\n  __IO uint32_t ICR;        /*!< HSEM interrupt clear register ,                 Address offset:   4h     */\n  __IO uint32_t ISR;        /*!< HSEM interrupt status register ,                Address offset:   8h     */\n  __IO uint32_t MISR;       /*!< HSEM masked interrupt status register ,         Address offset:   Ch     */\n} HSEM_Common_TypeDef;\n\n/**\n  * @brief Serial Peripheral Interface\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR1;           /*!< SPI/I2S Control register 1,                      Address offset: 0x00 */\n  __IO uint32_t CR2;           /*!< SPI Control register 2,                          Address offset: 0x04 */\n  __IO uint32_t CFG1;          /*!< SPI Configuration register 1,                    Address offset: 0x08 */\n  __IO uint32_t CFG2;          /*!< SPI Configuration register 2,                    Address offset: 0x0C */\n  __IO uint32_t IER;           /*!< SPI/I2S Interrupt Enable register,               Address offset: 0x10 */\n  __IO uint32_t SR;            /*!< SPI/I2S Status register,                         Address offset: 0x14 */\n  __IO uint32_t IFCR;          /*!< SPI/I2S Interrupt/Status flags clear register,   Address offset: 0x18 */\n  uint32_t      RESERVED0;     /*!< Reserved, 0x1C                                                        */\n  __IO uint32_t TXDR;          /*!< SPI/I2S Transmit data register,                  Address offset: 0x20 */\n  uint32_t      RESERVED1[3];  /*!< Reserved, 0x24-0x2C                                                   */\n  __IO uint32_t RXDR;          /*!< SPI/I2S Receive data register,                   Address offset: 0x30 */\n  uint32_t      RESERVED2[3];  /*!< Reserved, 0x34-0x3C                                                   */\n  __IO uint32_t CRCPOLY;       /*!< SPI CRC Polynomial register,                     Address offset: 0x40 */\n  __IO uint32_t TXCRC;         /*!< SPI Transmitter CRC register,                    Address offset: 0x44 */\n  __IO uint32_t RXCRC;         /*!< SPI Receiver CRC register,                       Address offset: 0x48 */\n  __IO uint32_t UDRDR;         /*!< SPI Underrun data register,                      Address offset: 0x4C */\n  __IO uint32_t I2SCFGR;       /*!< I2S Configuration register,                      Address offset: 0x50 */\n\n} SPI_TypeDef;\n/**\n  * @brief QUAD Serial Peripheral Interface\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;       /*!< QUADSPI Control register,                           Address offset: 0x00 */\n  __IO uint32_t DCR;      /*!< QUADSPI Device Configuration register,              Address offset: 0x04 */\n  __IO uint32_t SR;       /*!< QUADSPI Status register,                            Address offset: 0x08 */\n  __IO uint32_t FCR;      /*!< QUADSPI Flag Clear register,                        Address offset: 0x0C */\n  __IO uint32_t DLR;      /*!< QUADSPI Data Length register,                       Address offset: 0x10 */\n  __IO uint32_t CCR;      /*!< QUADSPI Communication Configuration register,       Address offset: 0x14 */\n  __IO uint32_t AR;       /*!< QUADSPI Address register,                           Address offset: 0x18 */\n  __IO uint32_t ABR;      /*!< QUADSPI Alternate Bytes register,                   Address offset: 0x1C */\n  __IO uint32_t DR;       /*!< QUADSPI Data register,                              Address offset: 0x20 */\n  __IO uint32_t PSMKR;    /*!< QUADSPI Polling Status Mask register,               Address offset: 0x24 */\n  __IO uint32_t PSMAR;    /*!< QUADSPI Polling Status Match register,              Address offset: 0x28 */\n  __IO uint32_t PIR;      /*!< QUADSPI Polling Interval register,                  Address offset: 0x2C */\n  __IO uint32_t LPTR;     /*!< QUADSPI Low Power Timeout register,                 Address offset: 0x30 */\n} QUADSPI_TypeDef;\n\n/**\n  * @brief TIM\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR1;         /*!< TIM control register 1,                   Address offset: 0x00 */\n  __IO uint32_t CR2;         /*!< TIM control register 2,                   Address offset: 0x04 */\n  __IO uint32_t SMCR;        /*!< TIM slave mode control register,          Address offset: 0x08 */\n  __IO uint32_t DIER;        /*!< TIM DMA/interrupt enable register,        Address offset: 0x0C */\n  __IO uint32_t SR;          /*!< TIM status register,                      Address offset: 0x10 */\n  __IO uint32_t EGR;         /*!< TIM event generation register,            Address offset: 0x14 */\n  __IO uint32_t CCMR1;       /*!< TIM capture/compare mode register 1,      Address offset: 0x18 */\n  __IO uint32_t CCMR2;       /*!< TIM capture/compare mode register 2,      Address offset: 0x1C */\n  __IO uint32_t CCER;        /*!< TIM capture/compare enable register,      Address offset: 0x20 */\n  __IO uint32_t CNT;         /*!< TIM counter register,                     Address offset: 0x24 */\n  __IO uint32_t PSC;         /*!< TIM prescaler,                            Address offset: 0x28 */\n  __IO uint32_t ARR;         /*!< TIM auto-reload register,                 Address offset: 0x2C */\n  __IO uint32_t RCR;         /*!< TIM repetition counter register,          Address offset: 0x30 */\n  __IO uint32_t CCR1;        /*!< TIM capture/compare register 1,           Address offset: 0x34 */\n  __IO uint32_t CCR2;        /*!< TIM capture/compare register 2,           Address offset: 0x38 */\n  __IO uint32_t CCR3;        /*!< TIM capture/compare register 3,           Address offset: 0x3C */\n  __IO uint32_t CCR4;        /*!< TIM capture/compare register 4,           Address offset: 0x40 */\n  __IO uint32_t BDTR;        /*!< TIM break and dead-time register,         Address offset: 0x44 */\n  __IO uint32_t DCR;         /*!< TIM DMA control register,                 Address offset: 0x48 */\n  __IO uint32_t DMAR;        /*!< TIM DMA address for full transfer,        Address offset: 0x4C */\n  uint32_t      RESERVED1;   /*!< Reserved, 0x50                                                 */\n  __IO uint32_t CCMR3;       /*!< TIM capture/compare mode register 3,      Address offset: 0x54 */\n  __IO uint32_t CCR5;        /*!< TIM capture/compare register5,            Address offset: 0x58 */\n  __IO uint32_t CCR6;        /*!< TIM capture/compare register6,            Address offset: 0x5C */\n  __IO uint32_t AF1;         /*!< TIM alternate function option register 1, Address offset: 0x60 */\n  __IO uint32_t AF2;         /*!< TIM alternate function option register 2, Address offset: 0x64 */\n  __IO uint32_t TISEL;       /*!< TIM Input Selection register,             Address offset: 0x68 */\n} TIM_TypeDef;\n\n/**\n  * @brief LPTIMIMER\n  */\ntypedef struct\n{\n  __IO uint32_t ISR;      /*!< LPTIM Interrupt and Status register,         Address offset: 0x00 */\n  __IO uint32_t ICR;      /*!< LPTIM Interrupt Clear register,              Address offset: 0x04 */\n  __IO uint32_t IER;      /*!< LPTIM Interrupt Enable register,             Address offset: 0x08 */\n  __IO uint32_t CFGR;     /*!< LPTIM Configuration register,                Address offset: 0x0C */\n  __IO uint32_t CR;       /*!< LPTIM Control register,                      Address offset: 0x10 */\n  __IO uint32_t CMP;      /*!< LPTIM Compare register,                      Address offset: 0x14 */\n  __IO uint32_t ARR;      /*!< LPTIM Autoreload register,                   Address offset: 0x18 */\n  __IO uint32_t CNT;      /*!< LPTIM Counter register,                      Address offset: 0x1C */\n  uint32_t  RESERVED1;    /*!< Reserved, 0x20                                                    */\n  __IO uint32_t CFGR2;    /*!< LPTIM Configuration register,                Address offset: 0x24 */\n} LPTIM_TypeDef;\n\n/**\n  * @brief Comparator\n  */\ntypedef struct\n{\n  __IO uint32_t SR;        /*!< Comparator status register,                    Address offset: 0x00 */\n  __IO uint32_t ICFR;      /*!< Comparator interrupt clear flag register,       Address offset: 0x04 */\n  __IO uint32_t OR;        /*!< Comparator option register,                  Address offset: 0x08 */\n} COMPOPT_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t CFGR;      /*!< Comparator configuration register  ,           Address offset: 0x00 */\n} COMP_TypeDef;\n\ntypedef struct\n{\n  __IO uint32_t CFGR;       /*!< COMP control and status register, used for bits common to several COMP instances, Address offset: 0x00 */\n} COMP_Common_TypeDef;\n/**\n  * @brief Universal Synchronous Asynchronous Receiver Transmitter\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR1;    /*!< USART Control register 1,                 Address offset: 0x00 */\n  __IO uint32_t CR2;    /*!< USART Control register 2,                 Address offset: 0x04 */\n  __IO uint32_t CR3;    /*!< USART Control register 3,                 Address offset: 0x08 */\n  __IO uint32_t BRR;    /*!< USART Baud rate register,                 Address offset: 0x0C */\n  __IO uint32_t GTPR;   /*!< USART Guard time and prescaler register,  Address offset: 0x10 */\n  __IO uint32_t RTOR;   /*!< USART Receiver Time Out register,         Address offset: 0x14 */\n  __IO uint32_t RQR;    /*!< USART Request register,                   Address offset: 0x18 */\n  __IO uint32_t ISR;    /*!< USART Interrupt and status register,      Address offset: 0x1C */\n  __IO uint32_t ICR;    /*!< USART Interrupt flag Clear register,      Address offset: 0x20 */\n  __IO uint32_t RDR;    /*!< USART Receive Data register,              Address offset: 0x24 */\n  __IO uint32_t TDR;    /*!< USART Transmit Data register,             Address offset: 0x28 */\n  __IO uint32_t PRESC;  /*!< USART clock Prescaler register,           Address offset: 0x2C */\n} USART_TypeDef;\n\n/**\n  * @brief Single Wire Protocol Master Interface SPWMI\n  */\ntypedef struct\n{\n  __IO uint32_t CR;          /*!< SWPMI Configuration/Control register,     Address offset: 0x00 */\n  __IO uint32_t BRR;         /*!< SWPMI bitrate register,                   Address offset: 0x04 */\n    uint32_t  RESERVED1;     /*!< Reserved, 0x08                                                 */\n  __IO uint32_t ISR;         /*!< SWPMI Interrupt and Status register,      Address offset: 0x0C */\n  __IO uint32_t ICR;         /*!< SWPMI Interrupt Flag Clear register,      Address offset: 0x10 */\n  __IO uint32_t IER;         /*!< SWPMI Interrupt Enable register,          Address offset: 0x14 */\n  __IO uint32_t RFL;         /*!< SWPMI Receive Frame Length register,      Address offset: 0x18 */\n  __IO uint32_t TDR;         /*!< SWPMI Transmit data register,             Address offset: 0x1C */\n  __IO uint32_t RDR;         /*!< SWPMI Receive data register,              Address offset: 0x20 */\n  __IO uint32_t OR;          /*!< SWPMI Option register,                    Address offset: 0x24 */\n} SWPMI_TypeDef;\n\n/**\n  * @brief Window WATCHDOG\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;   /*!< WWDG Control register,       Address offset: 0x00 */\n  __IO uint32_t CFR;  /*!< WWDG Configuration register, Address offset: 0x04 */\n  __IO uint32_t SR;   /*!< WWDG Status register,        Address offset: 0x08 */\n} WWDG_TypeDef;\n\n\n/**\n  * @brief RAM_ECC_Specific_Registers\n  */\ntypedef struct\n{\n  __IO uint32_t CR;           /*!< RAMECC monitor configuration register          */\n  __IO uint32_t SR;           /*!< RAMECC monitor status register                 */\n  __IO uint32_t FAR;          /*!< RAMECC monitor failing address register        */\n  __IO uint32_t FDRL;         /*!< RAMECC monitor failing data low register       */\n  __IO uint32_t FDRH;         /*!< RAMECC monitor failing data high register      */\n  __IO uint32_t FECR;         /*!< RAMECC monitor failing ECC error code register */\n} RAMECC_MonitorTypeDef;\n\ntypedef struct\n{\n  __IO uint32_t IER;          /*!< RAMECC interrupt enable register */\n} RAMECC_TypeDef;\n/**\n  * @}\n  */\n\n\n/**\n  * @brief Crypto Processor\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;         /*!< CRYP control register,                                    Address offset: 0x00 */\n  __IO uint32_t SR;         /*!< CRYP status register,                                     Address offset: 0x04 */\n  __IO uint32_t DIN;         /*!< CRYP data input register,                                Address offset: 0x08 */\n  __IO uint32_t DOUT;       /*!< CRYP data output register,                                Address offset: 0x0C */\n  __IO uint32_t DMACR;      /*!< CRYP DMA control register,                                Address offset: 0x10 */\n  __IO uint32_t IMSCR;      /*!< CRYP interrupt mask set/clear register,                   Address offset: 0x14 */\n  __IO uint32_t RISR;       /*!< CRYP raw interrupt status register,                       Address offset: 0x18 */\n  __IO uint32_t MISR;       /*!< CRYP masked interrupt status register,                    Address offset: 0x1C */\n  __IO uint32_t K0LR;       /*!< CRYP key left  register 0,                                Address offset: 0x20 */\n  __IO uint32_t K0RR;       /*!< CRYP key right register 0,                                Address offset: 0x24 */\n  __IO uint32_t K1LR;       /*!< CRYP key left  register 1,                                Address offset: 0x28 */\n  __IO uint32_t K1RR;       /*!< CRYP key right register 1,                                Address offset: 0x2C */\n  __IO uint32_t K2LR;       /*!< CRYP key left  register 2,                                Address offset: 0x30 */\n  __IO uint32_t K2RR;       /*!< CRYP key right register 2,                                Address offset: 0x34 */\n  __IO uint32_t K3LR;       /*!< CRYP key left  register 3,                                Address offset: 0x38 */\n  __IO uint32_t K3RR;       /*!< CRYP key right register 3,                                Address offset: 0x3C */\n  __IO uint32_t IV0LR;      /*!< CRYP initialization vector left-word  register 0,         Address offset: 0x40 */\n  __IO uint32_t IV0RR;      /*!< CRYP initialization vector right-word register 0,         Address offset: 0x44 */\n  __IO uint32_t IV1LR;      /*!< CRYP initialization vector left-word  register 1,         Address offset: 0x48 */\n  __IO uint32_t IV1RR;      /*!< CRYP initialization vector right-word register 1,         Address offset: 0x4C */\n  __IO uint32_t CSGCMCCM0R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 0,        Address offset: 0x50 */\n  __IO uint32_t CSGCMCCM1R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 1,        Address offset: 0x54 */\n  __IO uint32_t CSGCMCCM2R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 2,        Address offset: 0x58 */\n  __IO uint32_t CSGCMCCM3R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 3,        Address offset: 0x5C */\n  __IO uint32_t CSGCMCCM4R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 4,        Address offset: 0x60 */\n  __IO uint32_t CSGCMCCM5R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 5,        Address offset: 0x64 */\n  __IO uint32_t CSGCMCCM6R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 6,        Address offset: 0x68 */\n  __IO uint32_t CSGCMCCM7R; /*!< CRYP GCM/GMAC or CCM/CMAC context swap register 7,        Address offset: 0x6C */\n  __IO uint32_t CSGCM0R;    /*!< CRYP GCM/GMAC context swap register 0,                    Address offset: 0x70 */\n  __IO uint32_t CSGCM1R;    /*!< CRYP GCM/GMAC context swap register 1,                    Address offset: 0x74 */\n  __IO uint32_t CSGCM2R;    /*!< CRYP GCM/GMAC context swap register 2,                    Address offset: 0x78 */\n  __IO uint32_t CSGCM3R;    /*!< CRYP GCM/GMAC context swap register 3,                    Address offset: 0x7C */\n  __IO uint32_t CSGCM4R;    /*!< CRYP GCM/GMAC context swap register 4,                    Address offset: 0x80 */\n  __IO uint32_t CSGCM5R;    /*!< CRYP GCM/GMAC context swap register 5,                    Address offset: 0x84 */\n  __IO uint32_t CSGCM6R;    /*!< CRYP GCM/GMAC context swap register 6,                    Address offset: 0x88 */\n  __IO uint32_t CSGCM7R;    /*!< CRYP GCM/GMAC context swap register 7,                    Address offset: 0x8C */\n} CRYP_TypeDef;\n\n/**\n  * @brief HASH\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;               /*!< HASH control register,          Address offset: 0x00        */\n  __IO uint32_t DIN;              /*!< HASH data input register,       Address offset: 0x04        */\n  __IO uint32_t STR;              /*!< HASH start register,            Address offset: 0x08        */\n  __IO uint32_t HR[5];            /*!< HASH digest registers,          Address offset: 0x0C-0x1C   */\n  __IO uint32_t IMR;              /*!< HASH interrupt enable register, Address offset: 0x20        */\n  __IO uint32_t SR;               /*!< HASH status register,           Address offset: 0x24        */\n       uint32_t RESERVED[52];     /*!< Reserved, 0x28-0xF4                                         */\n  __IO uint32_t CSR[54];          /*!< HASH context swap registers,    Address offset: 0x0F8-0x1CC */\n} HASH_TypeDef;\n\n/**\n  * @brief HASH_DIGEST\n  */\n\ntypedef struct\n{\n  __IO uint32_t HR[8];     /*!< HASH digest registers,          Address offset: 0x310-0x32C */\n} HASH_DIGEST_TypeDef;\n\n\n/**\n  * @brief High resolution Timer (HRTIM)\n  */\n/* HRTIM master registers definition */\ntypedef struct\n{\n  __IO uint32_t MCR;            /*!< HRTIM Master Timer control register,                     Address offset: 0x00 */\n  __IO uint32_t MISR;           /*!< HRTIM Master Timer interrupt status register,            Address offset: 0x04 */\n  __IO uint32_t MICR;           /*!< HRTIM Master Timer interrupt clear register,             Address offset: 0x08 */\n  __IO uint32_t MDIER;          /*!< HRTIM Master Timer DMA/interrupt enable register         Address offset: 0x0C */\n  __IO uint32_t MCNTR;          /*!< HRTIM Master Timer counter register,                     Address offset: 0x10 */\n  __IO uint32_t MPER;           /*!< HRTIM Master Timer period register,                      Address offset: 0x14 */\n  __IO uint32_t MREP;           /*!< HRTIM Master Timer repetition register,                  Address offset: 0x18 */\n  __IO uint32_t MCMP1R;         /*!< HRTIM Master Timer compare 1 register,                   Address offset: 0x1C */\n  uint32_t      RESERVED0;     /*!< Reserved,                                                                 0x20 */\n  __IO uint32_t MCMP2R;         /*!< HRTIM Master Timer compare 2 register,                   Address offset: 0x24 */\n  __IO uint32_t MCMP3R;         /*!< HRTIM Master Timer compare 3 register,                   Address offset: 0x28 */\n  __IO uint32_t MCMP4R;         /*!< HRTIM Master Timer compare 4 register,                   Address offset: 0x2C */\n  uint32_t      RESERVED1[20];  /*!< Reserved,                                                          0x30..0x7C */\n}HRTIM_Master_TypeDef;\n\n/* HRTIM Timer A to E registers definition */\ntypedef struct\n{\n  __IO uint32_t TIMxCR;     /*!< HRTIM Timerx control register,                              Address offset: 0x00 */\n  __IO uint32_t TIMxISR;    /*!< HRTIM Timerx interrupt status register,                     Address offset: 0x04 */\n  __IO uint32_t TIMxICR;    /*!< HRTIM Timerx interrupt clear register,                      Address offset: 0x08 */\n  __IO uint32_t TIMxDIER;   /*!< HRTIM Timerx DMA/interrupt enable register,                 Address offset: 0x0C */\n  __IO uint32_t CNTxR;      /*!< HRTIM Timerx counter register,                              Address offset: 0x10 */\n  __IO uint32_t PERxR;      /*!< HRTIM Timerx period register,                               Address offset: 0x14 */\n  __IO uint32_t REPxR;      /*!< HRTIM Timerx repetition register,                           Address offset: 0x18 */\n  __IO uint32_t CMP1xR;     /*!< HRTIM Timerx compare 1 register,                            Address offset: 0x1C */\n  __IO uint32_t CMP1CxR;    /*!< HRTIM Timerx compare 1 compound register,                   Address offset: 0x20 */\n  __IO uint32_t CMP2xR;     /*!< HRTIM Timerx compare 2 register,                            Address offset: 0x24 */\n  __IO uint32_t CMP3xR;     /*!< HRTIM Timerx compare 3 register,                            Address offset: 0x28 */\n  __IO uint32_t CMP4xR;     /*!< HRTIM Timerx compare 4 register,                            Address offset: 0x2C */\n  __IO uint32_t CPT1xR;     /*!< HRTIM Timerx capture 1 register,                            Address offset: 0x30 */\n  __IO uint32_t CPT2xR;     /*!< HRTIM Timerx capture 2 register,                            Address offset: 0x34 */\n  __IO uint32_t DTxR;       /*!< HRTIM Timerx dead time register,                            Address offset: 0x38 */\n  __IO uint32_t SETx1R;     /*!< HRTIM Timerx output 1 set register,                         Address offset: 0x3C */\n  __IO uint32_t RSTx1R;     /*!< HRTIM Timerx output 1 reset register,                       Address offset: 0x40 */\n  __IO uint32_t SETx2R;     /*!< HRTIM Timerx output 2 set register,                         Address offset: 0x44 */\n  __IO uint32_t RSTx2R;     /*!< HRTIM Timerx output 2 reset register,                       Address offset: 0x48 */\n  __IO uint32_t EEFxR1;     /*!< HRTIM Timerx external event filtering 1 register,           Address offset: 0x4C */\n  __IO uint32_t EEFxR2;     /*!< HRTIM Timerx external event filtering 2 register,           Address offset: 0x50 */\n  __IO uint32_t RSTxR;      /*!< HRTIM Timerx Reset register,                                Address offset: 0x54 */\n  __IO uint32_t CHPxR;      /*!< HRTIM Timerx Chopper register,                              Address offset: 0x58 */\n  __IO uint32_t CPT1xCR;    /*!< HRTIM Timerx Capture 1 register,                            Address offset: 0x5C */\n  __IO uint32_t CPT2xCR;    /*!< HRTIM Timerx Capture 2 register,                            Address offset: 0x60 */\n  __IO uint32_t OUTxR;      /*!< HRTIM Timerx Output register,                               Address offset: 0x64 */\n  __IO uint32_t FLTxR;      /*!< HRTIM Timerx Fault register,                                Address offset: 0x68 */\n  uint32_t      RESERVED0[5];  /*!< Reserved,                                                          0x6C..0x7C */\n}HRTIM_Timerx_TypeDef;\n\n/* HRTIM common register definition */\ntypedef struct\n{\n  __IO uint32_t CR1;        /*!< HRTIM control register1,                                    Address offset: 0x00 */\n  __IO uint32_t CR2;        /*!< HRTIM control register2,                                    Address offset: 0x04 */\n  __IO uint32_t ISR;        /*!< HRTIM interrupt status register,                            Address offset: 0x08 */\n  __IO uint32_t ICR;        /*!< HRTIM interrupt clear register,                             Address offset: 0x0C */\n  __IO uint32_t IER;        /*!< HRTIM interrupt enable register,                            Address offset: 0x10 */\n  __IO uint32_t OENR;       /*!< HRTIM Output enable register,                               Address offset: 0x14 */\n  __IO uint32_t ODISR;      /*!< HRTIM Output disable register,                              Address offset: 0x18 */\n  __IO uint32_t ODSR;       /*!< HRTIM Output disable status register,                       Address offset: 0x1C */\n  __IO uint32_t BMCR;       /*!< HRTIM Burst mode control register,                          Address offset: 0x20 */\n  __IO uint32_t BMTRGR;     /*!< HRTIM Burst mode trigger register,                          Address offset: 0x24 */\n  __IO uint32_t BMCMPR;     /*!< HRTIM Burst mode compare register,                          Address offset: 0x28 */\n  __IO uint32_t BMPER;      /*!< HRTIM Burst mode period register,                           Address offset: 0x2C */\n  __IO uint32_t EECR1;      /*!< HRTIM Timer external event control register1,               Address offset: 0x30 */\n  __IO uint32_t EECR2;      /*!< HRTIM Timer external event control register2,               Address offset: 0x34 */\n  __IO uint32_t EECR3;      /*!< HRTIM Timer external event control register3,               Address offset: 0x38 */\n  __IO uint32_t ADC1R;      /*!< HRTIM ADC Trigger 1 register,                               Address offset: 0x3C */\n  __IO uint32_t ADC2R;      /*!< HRTIM ADC Trigger 2 register,                               Address offset: 0x40 */\n  __IO uint32_t ADC3R;      /*!< HRTIM ADC Trigger 3 register,                               Address offset: 0x44 */\n  __IO uint32_t ADC4R;      /*!< HRTIM ADC Trigger 4 register,                               Address offset: 0x48 */\n  __IO uint32_t RESERVED0;  /*!< Reserved,                                                   Address offset: 0x4C */\n  __IO uint32_t FLTINR1;    /*!< HRTIM Fault input register1,                                Address offset: 0x50 */\n  __IO uint32_t FLTINR2;    /*!< HRTIM Fault input register2,                                Address offset: 0x54 */\n  __IO uint32_t BDMUPR;     /*!< HRTIM Burst DMA Master Timer update register,               Address offset: 0x58 */\n  __IO uint32_t BDTAUPR;    /*!< HRTIM Burst DMA Timerx update register,                     Address offset: 0x5C */\n  __IO uint32_t BDTBUPR;    /*!< HRTIM Burst DMA Timerx update register,                     Address offset: 0x60 */\n  __IO uint32_t BDTCUPR;    /*!< HRTIM Burst DMA Timerx update register,                     Address offset: 0x64 */\n  __IO uint32_t BDTDUPR;    /*!< HRTIM Burst DMA Timerx update register,                     Address offset: 0x68 */\n  __IO uint32_t BDTEUPR;    /*!< HRTIM Burst DMA Timerx update register,                     Address offset: 0x6C */\n  __IO uint32_t BDMADR;     /*!< HRTIM Burst DMA Master Data register,                       Address offset: 0x70 */\n}HRTIM_Common_TypeDef;\n\n/* HRTIM  register definition */\ntypedef struct {\n  HRTIM_Master_TypeDef sMasterRegs;\n  HRTIM_Timerx_TypeDef sTimerxRegs[5];\n  uint32_t             RESERVED0[32];\n  HRTIM_Common_TypeDef sCommonRegs;\n}HRTIM_TypeDef;\n/**\n  * @brief RNG\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;  /*!< RNG control register, Address offset: 0x00 */\n  __IO uint32_t SR;  /*!< RNG status register,  Address offset: 0x04 */\n  __IO uint32_t DR;  /*!< RNG data register,    Address offset: 0x08 */\n} RNG_TypeDef;\n\n/**\n  * @brief MDIOS\n  */\n\ntypedef struct\n{\n  __IO uint32_t CR;\n  __IO uint32_t WRFR;\n  __IO uint32_t CWRFR;\n  __IO uint32_t RDFR;\n  __IO uint32_t CRDFR;\n  __IO uint32_t SR;\n  __IO uint32_t CLRFR;\n  uint32_t RESERVED[57];\n  __IO uint32_t DINR0;\n  __IO uint32_t DINR1;\n  __IO uint32_t DINR2;\n  __IO uint32_t DINR3;\n  __IO uint32_t DINR4;\n  __IO uint32_t DINR5;\n  __IO uint32_t DINR6;\n  __IO uint32_t DINR7;\n  __IO uint32_t DINR8;\n  __IO uint32_t DINR9;\n  __IO uint32_t DINR10;\n  __IO uint32_t DINR11;\n  __IO uint32_t DINR12;\n  __IO uint32_t DINR13;\n  __IO uint32_t DINR14;\n  __IO uint32_t DINR15;\n  __IO uint32_t DINR16;\n  __IO uint32_t DINR17;\n  __IO uint32_t DINR18;\n  __IO uint32_t DINR19;\n  __IO uint32_t DINR20;\n  __IO uint32_t DINR21;\n  __IO uint32_t DINR22;\n  __IO uint32_t DINR23;\n  __IO uint32_t DINR24;\n  __IO uint32_t DINR25;\n  __IO uint32_t DINR26;\n  __IO uint32_t DINR27;\n  __IO uint32_t DINR28;\n  __IO uint32_t DINR29;\n  __IO uint32_t DINR30;\n  __IO uint32_t DINR31;\n  __IO uint32_t DOUTR0;\n  __IO uint32_t DOUTR1;\n  __IO uint32_t DOUTR2;\n  __IO uint32_t DOUTR3;\n  __IO uint32_t DOUTR4;\n  __IO uint32_t DOUTR5;\n  __IO uint32_t DOUTR6;\n  __IO uint32_t DOUTR7;\n  __IO uint32_t DOUTR8;\n  __IO uint32_t DOUTR9;\n  __IO uint32_t DOUTR10;\n  __IO uint32_t DOUTR11;\n  __IO uint32_t DOUTR12;\n  __IO uint32_t DOUTR13;\n  __IO uint32_t DOUTR14;\n  __IO uint32_t DOUTR15;\n  __IO uint32_t DOUTR16;\n  __IO uint32_t DOUTR17;\n  __IO uint32_t DOUTR18;\n  __IO uint32_t DOUTR19;\n  __IO uint32_t DOUTR20;\n  __IO uint32_t DOUTR21;\n  __IO uint32_t DOUTR22;\n  __IO uint32_t DOUTR23;\n  __IO uint32_t DOUTR24;\n  __IO uint32_t DOUTR25;\n  __IO uint32_t DOUTR26;\n  __IO uint32_t DOUTR27;\n  __IO uint32_t DOUTR28;\n  __IO uint32_t DOUTR29;\n  __IO uint32_t DOUTR30;\n  __IO uint32_t DOUTR31;\n} MDIOS_TypeDef;\n\n\n/**\n  * @brief USB_OTG_Core_Registers\n  */\ntypedef struct\n{\n __IO uint32_t GOTGCTL;               /*!< USB_OTG Control and Status Register          000h */\n  __IO uint32_t GOTGINT;              /*!< USB_OTG Interrupt Register                   004h */\n  __IO uint32_t GAHBCFG;              /*!< Core AHB Configuration Register              008h */\n  __IO uint32_t GUSBCFG;              /*!< Core USB Configuration Register              00Ch */\n  __IO uint32_t GRSTCTL;              /*!< Core Reset Register                          010h */\n  __IO uint32_t GINTSTS;              /*!< Core Interrupt Register                      014h */\n  __IO uint32_t GINTMSK;              /*!< Core Interrupt Mask Register                 018h */\n  __IO uint32_t GRXSTSR;              /*!< Receive Sts Q Read Register                  01Ch */\n  __IO uint32_t GRXSTSP;              /*!< Receive Sts Q Read & POP Register            020h */\n  __IO uint32_t GRXFSIZ;              /*!< Receive FIFO Size Register                   024h */\n  __IO uint32_t DIEPTXF0_HNPTXFSIZ;   /*!< EP0 / Non Periodic Tx FIFO Size Register     028h */\n  __IO uint32_t HNPTXSTS;             /*!< Non Periodic Tx FIFO/Queue Sts reg           02Ch */\n  uint32_t Reserved30[2];             /*!< Reserved                                     030h */\n  __IO uint32_t GCCFG;                /*!< General Purpose IO Register                  038h */\n  __IO uint32_t CID;                  /*!< User ID Register                             03Ch */\n  __IO uint32_t GSNPSID;              /* USB_OTG core ID                                040h*/\n  __IO uint32_t GHWCFG1;              /* User HW config1                                044h*/\n  __IO uint32_t GHWCFG2;              /* User HW config2                                048h*/\n  __IO uint32_t GHWCFG3;              /*!< User HW config3                              04Ch */\n  uint32_t  Reserved6;                /*!< Reserved                                     050h */\n  __IO uint32_t GLPMCFG;              /*!< LPM Register                                 054h */\n  __IO uint32_t GPWRDN;               /*!< Power Down Register                          058h */\n  __IO uint32_t GDFIFOCFG;            /*!< DFIFO Software Config Register               05Ch */\n   __IO uint32_t GADPCTL;             /*!< ADP Timer, Control and Status Register       60Ch */\n    uint32_t  Reserved43[39];         /*!< Reserved                                058h-0FFh */\n  __IO uint32_t HPTXFSIZ;             /*!< Host Periodic Tx FIFO Size Reg               100h */\n  __IO uint32_t DIEPTXF[0x0F];        /*!< dev Periodic Transmit FIFO */\n} USB_OTG_GlobalTypeDef;\n\n\n/**\n  * @brief USB_OTG_device_Registers\n  */\ntypedef struct\n{\n  __IO uint32_t DCFG;            /*!< dev Configuration Register   800h */\n  __IO uint32_t DCTL;            /*!< dev Control Register         804h */\n  __IO uint32_t DSTS;            /*!< dev Status Register (RO)     808h */\n  uint32_t Reserved0C;           /*!< Reserved                     80Ch */\n  __IO uint32_t DIEPMSK;         /*!< dev IN Endpoint Mask         810h */\n  __IO uint32_t DOEPMSK;         /*!< dev OUT Endpoint Mask        814h */\n  __IO uint32_t DAINT;           /*!< dev All Endpoints Itr Reg    818h */\n  __IO uint32_t DAINTMSK;        /*!< dev All Endpoints Itr Mask   81Ch */\n  uint32_t  Reserved20;          /*!< Reserved                     820h */\n  uint32_t Reserved9;            /*!< Reserved                     824h */\n  __IO uint32_t DVBUSDIS;        /*!< dev VBUS discharge Register  828h */\n  __IO uint32_t DVBUSPULSE;      /*!< dev VBUS Pulse Register      82Ch */\n  __IO uint32_t DTHRCTL;         /*!< dev threshold                830h */\n  __IO uint32_t DIEPEMPMSK;      /*!< dev empty msk                834h */\n  __IO uint32_t DEACHINT;        /*!< dedicated EP interrupt       838h */\n  __IO uint32_t DEACHMSK;        /*!< dedicated EP msk             83Ch */\n  uint32_t Reserved40;           /*!< dedicated EP mask            840h */\n  __IO uint32_t DINEP1MSK;       /*!< dedicated EP mask            844h */\n  uint32_t  Reserved44[15];      /*!< Reserved                 844-87Ch */\n  __IO uint32_t DOUTEP1MSK;      /*!< dedicated EP msk             884h */\n} USB_OTG_DeviceTypeDef;\n\n\n/**\n  * @brief USB_OTG_IN_Endpoint-Specific_Register\n  */\ntypedef struct\n{\n  __IO uint32_t DIEPCTL;           /*!< dev IN Endpoint Control Reg    900h + (ep_num * 20h) + 00h */\n  uint32_t Reserved04;             /*!< Reserved                       900h + (ep_num * 20h) + 04h */\n  __IO uint32_t DIEPINT;           /*!< dev IN Endpoint Itr Reg        900h + (ep_num * 20h) + 08h */\n  uint32_t Reserved0C;             /*!< Reserved                       900h + (ep_num * 20h) + 0Ch */\n  __IO uint32_t DIEPTSIZ;          /*!< IN Endpoint Txfer Size         900h + (ep_num * 20h) + 10h */\n  __IO uint32_t DIEPDMA;           /*!< IN Endpoint DMA Address Reg    900h + (ep_num * 20h) + 14h */\n  __IO uint32_t DTXFSTS;           /*!< IN Endpoint Tx FIFO Status Reg 900h + (ep_num * 20h) + 18h */\n  uint32_t Reserved18;             /*!< Reserved  900h+(ep_num*20h)+1Ch-900h+ (ep_num * 20h) + 1Ch */\n} USB_OTG_INEndpointTypeDef;\n\n\n/**\n  * @brief USB_OTG_OUT_Endpoint-Specific_Registers\n  */\ntypedef struct\n{\n  __IO uint32_t DOEPCTL;       /*!< dev OUT Endpoint Control Reg           B00h + (ep_num * 20h) + 00h */\n  uint32_t Reserved04;         /*!< Reserved                               B00h + (ep_num * 20h) + 04h */\n  __IO uint32_t DOEPINT;       /*!< dev OUT Endpoint Itr Reg               B00h + (ep_num * 20h) + 08h */\n  uint32_t Reserved0C;         /*!< Reserved                               B00h + (ep_num * 20h) + 0Ch */\n  __IO uint32_t DOEPTSIZ;      /*!< dev OUT Endpoint Txfer Size            B00h + (ep_num * 20h) + 10h */\n  __IO uint32_t DOEPDMA;       /*!< dev OUT Endpoint DMA Address           B00h + (ep_num * 20h) + 14h */\n  uint32_t Reserved18[2];      /*!< Reserved B00h + (ep_num * 20h) + 18h - B00h + (ep_num * 20h) + 1Ch */\n} USB_OTG_OUTEndpointTypeDef;\n\n\n/**\n  * @brief USB_OTG_Host_Mode_Register_Structures\n  */\ntypedef struct\n{\n  __IO uint32_t HCFG;             /*!< Host Configuration Register          400h */\n  __IO uint32_t HFIR;             /*!< Host Frame Interval Register         404h */\n  __IO uint32_t HFNUM;            /*!< Host Frame Nbr/Frame Remaining       408h */\n  uint32_t Reserved40C;           /*!< Reserved                             40Ch */\n  __IO uint32_t HPTXSTS;          /*!< Host Periodic Tx FIFO/ Queue Status  410h */\n  __IO uint32_t HAINT;            /*!< Host All Channels Interrupt Register 414h */\n  __IO uint32_t HAINTMSK;         /*!< Host All Channels Interrupt Mask     418h */\n} USB_OTG_HostTypeDef;\n\n/**\n  * @brief USB_OTG_Host_Channel_Specific_Registers\n  */\ntypedef struct\n{\n  __IO uint32_t HCCHAR;           /*!< Host Channel Characteristics Register    500h */\n  __IO uint32_t HCSPLT;           /*!< Host Channel Split Control Register      504h */\n  __IO uint32_t HCINT;            /*!< Host Channel Interrupt Register          508h */\n  __IO uint32_t HCINTMSK;         /*!< Host Channel Interrupt Mask Register     50Ch */\n  __IO uint32_t HCTSIZ;           /*!< Host Channel Transfer Size Register      510h */\n  __IO uint32_t HCDMA;            /*!< Host Channel DMA Address Register        514h */\n  uint32_t Reserved[2];           /*!< Reserved                                      */\n} USB_OTG_HostChannelTypeDef;\n/**\n  * @}\n  */\n\n\n/**\n  * @brief Global Programmer View\n  */\n\ntypedef struct\n{\n  uint32_t      RESERVED0[2036];     /*!< Reserved,                                                                           Address offset: 0x00-0x1FCC     */\n  __IO uint32_t AXI_PERIPH_ID_4;     /*!< AXI interconnect - peripheral ID4 register,                                         Address offset: 0x1FD0          */\n  uint32_t      AXI_PERIPH_ID_5;     /*!< Reserved,                                                                           Address offset: 0x1FD4          */\n  uint32_t      AXI_PERIPH_ID_6;     /*!< Reserved,                                                                           Address offset: 0x1FD8          */\n  uint32_t      AXI_PERIPH_ID_7;     /*!< Reserved,                                                                           Address offset: 0x1FDC          */\n  __IO uint32_t AXI_PERIPH_ID_0;     /*!< AXI interconnect - peripheral ID0 register,                                         Address offset: 0x1FE0          */\n  __IO uint32_t AXI_PERIPH_ID_1;     /*!< AXI interconnect - peripheral ID1 register,                                         Address offset: 0x1FE4          */\n  __IO uint32_t AXI_PERIPH_ID_2;     /*!< AXI interconnect - peripheral ID2 register,                                         Address offset: 0x1FE8          */\n  __IO uint32_t AXI_PERIPH_ID_3;     /*!< AXI interconnect - peripheral ID3 register,                                         Address offset: 0x1FEC          */\n  __IO uint32_t AXI_COMP_ID_0;       /*!< AXI interconnect - component ID0 register,                                          Address offset: 0x1FF0          */\n  __IO uint32_t AXI_COMP_ID_1;       /*!< AXI interconnect - component ID1 register,                                          Address offset: 0x1FF4          */\n  __IO uint32_t AXI_COMP_ID_2;       /*!< AXI interconnect - component ID2 register,                                          Address offset: 0x1FF8          */\n  __IO uint32_t AXI_COMP_ID_3;       /*!< AXI interconnect - component ID3 register,                                          Address offset: 0x1FFC          */\n  uint32_t      RESERVED1[2];        /*!< Reserved,                                                                           Address offset: 0x2000-0x2004   */\n  __IO uint32_t AXI_TARG1_FN_MOD_ISS_BM;  /*!< AXI interconnect - TARG 1 bus matrix issuing functionality register,           Address offset: 0x2008          */\n  uint32_t      RESERVED2[6];        /*!< Reserved,                                                                           Address offset: 0x200C-0x2020   */\n  __IO uint32_t AXI_TARG1_FN_MOD2;   /*!< AXI interconnect - TARG 1 bus matrix functionality 2 register,                      Address offset: 0x2024          */\n  uint32_t      RESERVED3;           /*!< Reserved,                                                                           Address offset: 0x2028          */\n  __IO uint32_t AXI_TARG1_FN_MOD_LB; /*!< AXI interconnect - TARG 1 long burst functionality modification register,           Address offset: 0x202C          */\n  uint32_t      RESERVED4[54];       /*!< Reserved,                                                                           Address offset: 0x2030-0x2104   */\n  __IO uint32_t AXI_TARG1_FN_MOD;    /*!< AXI interconnect - TARG 1 issuing functionality modification register,              Address offset: 0x2108          */\n  uint32_t      RESERVED5[959];      /*!< Reserved,                                                                           Address offset: 0x210C-0x3004   */\n  __IO uint32_t AXI_TARG2_FN_MOD_ISS_BM;  /*!< AXI interconnect - TARG 2 bus matrix issuing functionality register,           Address offset: 0x3008          */\n  uint32_t      RESERVED6[6];        /*!< Reserved,                                                                           Address offset: 0x300C-0x3020   */\n  __IO uint32_t AXI_TARG2_FN_MOD2;   /*!< AXI interconnect - TARG 2 bus matrix functionality 2 register,                      Address offset: 0x3024          */\n  uint32_t      RESERVED7;           /*!< Reserved,                                                                           Address offset: 0x3028          */\n  __IO uint32_t AXI_TARG2_FN_MOD_LB; /*!< AXI interconnect - TARG 2 long burst functionality modification register,           Address offset: 0x302C          */\n  uint32_t      RESERVED8[54];       /*!< Reserved,                                                                           Address offset: 0x3030-0x3104   */\n  __IO uint32_t AXI_TARG2_FN_MOD;    /*!< AXI interconnect - TARG 2 issuing functionality modification register,              Address offset: 0x3108          */\n  uint32_t      RESERVED9[959];      /*!< Reserved,                                                                           Address offset: 0x310C-0x4004   */\n  __IO uint32_t AXI_TARG3_FN_MOD_ISS_BM;   /*!< AXI interconnect - TARG 3 bus matrix issuing functionality register,          Address offset: 0x4008          */\n  uint32_t      RESERVED10[1023];    /*!< Reserved,                                                                           Address offset: 0x400C-0x5004   */\n  __IO uint32_t AXI_TARG4_FN_MOD_ISS_BM;  /*!< AXI interconnect - TARG 4 bus matrix issuing functionality register,           Address offset: 0x5008          */\n  uint32_t      RESERVED11[1023];    /*!< Reserved,                                                                           Address offset: 0x500C-0x6004   */\n  __IO uint32_t AXI_TARG5_FN_MOD_ISS_BM;  /*!< AXI interconnect - TARG 5 bus matrix issuing functionality register,           Address offset: 0x6008          */\n  uint32_t      RESERVED12[1023];    /*!< Reserved,                                                                           Address offset: 0x600C-0x7004   */\n  __IO uint32_t AXI_TARG6_FN_MOD_ISS_BM;  /*!< AXI interconnect - TARG 6 bus matrix issuing functionality register,           Address offset: 0x7008          */\n  uint32_t      RESERVED13[1023];    /*!< Reserved,                                                                           Address offset: 0x700C-0x8004   */\n  __IO uint32_t AXI_TARG7_FN_MOD_ISS_BM;  /*!< AXI interconnect - TARG 7 bus matrix issuing functionality register,           Address offset: 0x8008          */\n  uint32_t      RESERVED14[6];       /*!< Reserved,                                                                           Address offset: 0x800C-0x8020   */\n  __IO uint32_t AXI_TARG7_FN_MOD2;   /*!< AXI interconnect - TARG 7 bus matrix functionality 2 register,                      Address offset: 0x8024          */\n  uint32_t      RESERVED15;          /*!< Reserved,                                                                           Address offset: 0x8028          */\n  __IO uint32_t AXI_TARG7_FN_MOD_LB; /*!< AXI interconnect - TARG 7 long burst functionality modification register,           Address offset: 0x802C          */\n  uint32_t      RESERVED16[54];      /*!< Reserved,                                                                           Address offset: 0x8030-0x8104   */\n  __IO uint32_t AXI_TARG7_FN_MOD;    /*!< AXI interconnect - TARG 7 issuing functionality modification register,              Address offset: 0x8108          */\n  uint32_t      RESERVED17[59334];    /*!< Reserved,                                                                          Address offset: 0x810C-0x42020  */\n  __IO uint32_t AXI_INI1_FN_MOD2;    /*!< AXI interconnect - INI 1 functionality modification 2 register,                     Address offset: 0x42024         */\n  __IO uint32_t AXI_INI1_FN_MOD_AHB; /*!< AXI interconnect - INI 1 AHB functionality modification register,                   Address offset: 0x42028         */\n  uint32_t      RESERVED18[53];      /*!< Reserved,                                                                           Address offset: 0x4202C-0x420FC */\n  __IO uint32_t AXI_INI1_READ_QOS;   /*!< AXI interconnect - INI 1 read QoS register,                                         Address offset: 0x42100         */\n  __IO uint32_t AXI_INI1_WRITE_QOS;  /*!< AXI interconnect - INI 1 write QoS register,                                        Address offset: 0x42104         */\n  __IO uint32_t AXI_INI1_FN_MOD;     /*!< AXI interconnect - INI 1 issuing functionality modification register,               Address offset: 0x42108         */\n  uint32_t      RESERVED19[1021];    /*!< Reserved,                                                                           Address offset: 0x4210C-0x430FC */\n  __IO uint32_t AXI_INI2_READ_QOS;   /*!< AXI interconnect - INI 2 read QoS register,                                         Address offset: 0x43100         */\n  __IO uint32_t AXI_INI2_WRITE_QOS;  /*!< AXI interconnect - INI 2 write QoS register,                                        Address offset: 0x43104         */\n  __IO uint32_t AXI_INI2_FN_MOD;     /*!< AXI interconnect - INI 2 issuing functionality modification register,               Address offset: 0x43108         */\n  uint32_t      RESERVED20[966];     /*!< Reserved,                                                                           Address offset: 0x4310C-0x44020 */\n  __IO uint32_t AXI_INI3_FN_MOD2;    /*!< AXI interconnect - INI 3 functionality modification 2 register,                     Address offset: 0x44024         */\n  __IO uint32_t AXI_INI3_FN_MOD_AHB; /*!< AXI interconnect - INI 3 AHB functionality modification register,                   Address offset: 0x44028         */\n  uint32_t      RESERVED21[53];      /*!< Reserved,                                                                           Address offset: 0x4402C-0x440FC */\n  __IO uint32_t AXI_INI3_READ_QOS;   /*!< AXI interconnect - INI 3 read QoS register,                                         Address offset: 0x44100         */\n  __IO uint32_t AXI_INI3_WRITE_QOS;  /*!< AXI interconnect - INI 3 write QoS register,                                        Address offset: 0x44104         */\n  __IO uint32_t AXI_INI3_FN_MOD;     /*!< AXI interconnect - INI 3 issuing functionality modification register,               Address offset: 0x44108         */\n  uint32_t      RESERVED22[1021];    /*!< Reserved,                                                                           Address offset: 0x4410C-0x450FC */\n  __IO uint32_t AXI_INI4_READ_QOS;   /*!< AXI interconnect - INI 4 read QoS register,                                         Address offset: 0x45100         */\n  __IO uint32_t AXI_INI4_WRITE_QOS;  /*!< AXI interconnect - INI 4 write QoS register,                                        Address offset: 0x45104         */\n  __IO uint32_t AXI_INI4_FN_MOD;     /*!< AXI interconnect - INI 4 issuing functionality modification register,               Address offset: 0x45108         */\n  uint32_t      RESERVED23[1021];    /*!< Reserved,                                                                           Address offset: 0x4510C-0x460FC */\n  __IO uint32_t AXI_INI5_READ_QOS;   /*!< AXI interconnect - INI 5 read QoS register,                                         Address offset: 0x46100         */\n  __IO uint32_t AXI_INI5_WRITE_QOS;  /*!< AXI interconnect - INI 5 write QoS register,                                        Address offset: 0x46104         */\n  __IO uint32_t AXI_INI5_FN_MOD;     /*!< AXI interconnect - INI 5 issuing functionality modification register,               Address offset: 0x46108         */\n  uint32_t      RESERVED24[1021];    /*!< Reserved,                                                                           Address offset: 0x4610C-0x470FC */\n  __IO uint32_t AXI_INI6_READ_QOS;   /*!< AXI interconnect - INI 6 read QoS register,                                         Address offset: 0x47100         */\n  __IO uint32_t AXI_INI6_WRITE_QOS;  /*!< AXI interconnect - INI 6 write QoS register,                                        Address offset: 0x47104         */\n  __IO uint32_t AXI_INI6_FN_MOD;     /*!< AXI interconnect - INI 6 issuing functionality modification register,               Address offset: 0x47108         */\n\n} GPV_TypeDef;\n\n/** @addtogroup Peripheral_memory_map\n  * @{\n  */\n#define D1_ITCMRAM_BASE           (0x00000000UL) /*!< Base address of : 64KB RAM reserved for CPU execution/instruction accessible over ITCM  */\n#define D1_ITCMICP_BASE           (0x00100000UL) /*!< Base address of : (up to 128KB) embedded Test FLASH memory accessible over ITCM         */\n#define D1_DTCMRAM_BASE           (0x20000000UL) /*!< Base address of : 128KB system data RAM accessible over DTCM                            */\n#define D1_AXIFLASH_BASE          (0x08000000UL) /*!< Base address of : (up to 128 KB) embedded FLASH memory accessible over AXI      */\n#define D1_AXIICP_BASE            (0x1FF00000UL) /*!< Base address of : (up to 128KB) embedded Test FLASH memory accessible over AXI          */\n#define D1_AXISRAM_BASE           (0x24000000UL) /*!< Base address of : (up to 512KB) system data RAM accessible over over AXI                */\n\n#define D2_AXISRAM_BASE           (0x10000000UL) /*!< Base address of : (up to 288KB) system data RAM accessible over over AXI                */\n#define D2_AHBSRAM_BASE           (0x30000000UL) /*!< Base address of : (up to 288KB) system data RAM accessible over over AXI->AHB Bridge    */\n\n#define D3_BKPSRAM_BASE           (0x38800000UL) /*!< Base address of : Backup SRAM(4 KB) over AXI->AHB Bridge                                */\n#define D3_SRAM_BASE              (0x38000000UL) /*!< Base address of : Backup SRAM(64 KB) over AXI->AHB Bridge                               */\n\n#define PERIPH_BASE               (0x40000000UL) /*!< Base address of : AHB/APB Peripherals                                                   */\n#define QSPI_BASE                 (0x90000000UL) /*!< Base address of : QSPI memories  accessible over AXI                                    */\n\n#define FLASH_BANK1_BASE          (0x08000000UL) /*!< Base address of : (up to 128 KB) Flash Bank1 accessible over AXI                        */\n#define FLASH_BANK2_BASE          (0x08100000UL) /*!< For legacy only , Flash bank 2 not available on STM32H750xx value line          */\n#define FLASH_END                 (0x0801FFFFUL) /*!< FLASH end address                                                                       */\n\n/* Legacy define */\n#define FLASH_BASE                FLASH_BANK1_BASE\n\n/*!< Device electronic signature memory map */\n#define UID_BASE                  (0x1FF1E800UL)            /*!< Unique device ID register base address */\n#define FLASHSIZE_BASE            (0x1FF1E880UL)            /*!< FLASH Size register base address */\n\n\n/*!< Peripheral memory map */\n#define D2_APB1PERIPH_BASE        PERIPH_BASE\n#define D2_APB2PERIPH_BASE       (PERIPH_BASE + 0x00010000UL)\n#define D2_AHB1PERIPH_BASE       (PERIPH_BASE + 0x00020000UL)\n#define D2_AHB2PERIPH_BASE       (PERIPH_BASE + 0x08020000UL)\n\n#define D1_APB1PERIPH_BASE       (PERIPH_BASE + 0x10000000UL)\n#define D1_AHB1PERIPH_BASE       (PERIPH_BASE + 0x12000000UL)\n\n#define D3_APB1PERIPH_BASE       (PERIPH_BASE + 0x18000000UL)\n#define D3_AHB1PERIPH_BASE       (PERIPH_BASE + 0x18020000UL)\n\n/*!< Legacy Peripheral memory map */\n#define APB1PERIPH_BASE        PERIPH_BASE\n#define APB2PERIPH_BASE       (PERIPH_BASE + 0x00010000UL)\n#define AHB1PERIPH_BASE       (PERIPH_BASE + 0x00020000UL)\n#define AHB2PERIPH_BASE       (PERIPH_BASE + 0x08000000UL)\n\n\n/*!< D1_AHB1PERIPH peripherals */\n\n#define MDMA_BASE             (D1_AHB1PERIPH_BASE + 0x0000UL)\n#define DMA2D_BASE            (D1_AHB1PERIPH_BASE + 0x1000UL)\n#define JPGDEC_BASE           (D1_AHB1PERIPH_BASE + 0x3000UL)\n#define FLASH_R_BASE          (D1_AHB1PERIPH_BASE + 0x2000UL)\n#define FMC_R_BASE            (D1_AHB1PERIPH_BASE + 0x4000UL)\n#define QSPI_R_BASE           (D1_AHB1PERIPH_BASE + 0x5000UL)\n#define DLYB_QSPI_BASE        (D1_AHB1PERIPH_BASE + 0x6000UL)\n#define SDMMC1_BASE           (D1_AHB1PERIPH_BASE + 0x7000UL)\n#define DLYB_SDMMC1_BASE      (D1_AHB1PERIPH_BASE + 0x8000UL)\n#define RAMECC1_BASE          (D1_AHB1PERIPH_BASE + 0x9000UL)\n\n/*!< D2_AHB1PERIPH peripherals */\n\n#define DMA1_BASE               (D2_AHB1PERIPH_BASE + 0x0000UL)\n#define DMA2_BASE               (D2_AHB1PERIPH_BASE + 0x0400UL)\n#define DMAMUX1_BASE            (D2_AHB1PERIPH_BASE + 0x0800UL)\n#define ADC1_BASE               (D2_AHB1PERIPH_BASE + 0x2000UL)\n#define ADC2_BASE               (D2_AHB1PERIPH_BASE + 0x2100UL)\n#define ADC12_COMMON_BASE       (D2_AHB1PERIPH_BASE + 0x2300UL)\n#define ETH_BASE                (D2_AHB1PERIPH_BASE + 0x8000UL)\n#define ETH_MAC_BASE            (ETH_BASE)\n\n/*!< USB registers base address */\n#define USB1_OTG_HS_PERIPH_BASE              (0x40040000UL)\n#define USB2_OTG_FS_PERIPH_BASE              (0x40080000UL)\n#define USB_OTG_GLOBAL_BASE                  (0x000UL)\n#define USB_OTG_DEVICE_BASE                  (0x800UL)\n#define USB_OTG_IN_ENDPOINT_BASE             (0x900UL)\n#define USB_OTG_OUT_ENDPOINT_BASE            (0xB00UL)\n#define USB_OTG_EP_REG_SIZE                  (0x20UL)\n#define USB_OTG_HOST_BASE                    (0x400UL)\n#define USB_OTG_HOST_PORT_BASE               (0x440UL)\n#define USB_OTG_HOST_CHANNEL_BASE            (0x500UL)\n#define USB_OTG_HOST_CHANNEL_SIZE            (0x20UL)\n#define USB_OTG_PCGCCTL_BASE                 (0xE00UL)\n#define USB_OTG_FIFO_BASE                    (0x1000UL)\n#define USB_OTG_FIFO_SIZE                    (0x1000UL)\n\n/*!< D2_AHB2PERIPH peripherals */\n\n#define DCMI_BASE              (D2_AHB2PERIPH_BASE + 0x0000UL)\n#define CRYP_BASE              (D2_AHB2PERIPH_BASE + 0x1000UL)\n#define HASH_BASE              (D2_AHB2PERIPH_BASE + 0x1400UL)\n#define HASH_DIGEST_BASE       (D2_AHB2PERIPH_BASE + 0x1710UL)\n#define RNG_BASE               (D2_AHB2PERIPH_BASE + 0x1800UL)\n#define SDMMC2_BASE            (D2_AHB2PERIPH_BASE + 0x2400UL)\n#define DLYB_SDMMC2_BASE       (D2_AHB2PERIPH_BASE + 0x2800UL)\n#define RAMECC2_BASE           (D2_AHB2PERIPH_BASE + 0x3000UL)\n\n/*!< D3_AHB1PERIPH peripherals */\n#define GPIOA_BASE            (D3_AHB1PERIPH_BASE + 0x0000UL)\n#define GPIOB_BASE            (D3_AHB1PERIPH_BASE + 0x0400UL)\n#define GPIOC_BASE            (D3_AHB1PERIPH_BASE + 0x0800UL)\n#define GPIOD_BASE            (D3_AHB1PERIPH_BASE + 0x0C00UL)\n#define GPIOE_BASE            (D3_AHB1PERIPH_BASE + 0x1000UL)\n#define GPIOF_BASE            (D3_AHB1PERIPH_BASE + 0x1400UL)\n#define GPIOG_BASE            (D3_AHB1PERIPH_BASE + 0x1800UL)\n#define GPIOH_BASE            (D3_AHB1PERIPH_BASE + 0x1C00UL)\n#define GPIOI_BASE            (D3_AHB1PERIPH_BASE + 0x2000UL)\n#define GPIOJ_BASE            (D3_AHB1PERIPH_BASE + 0x2400UL)\n#define GPIOK_BASE            (D3_AHB1PERIPH_BASE + 0x2800UL)\n#define RCC_BASE              (D3_AHB1PERIPH_BASE + 0x4400UL)\n#define PWR_BASE              (D3_AHB1PERIPH_BASE + 0x4800UL)\n#define CRC_BASE              (D3_AHB1PERIPH_BASE + 0x4C00UL)\n#define BDMA_BASE             (D3_AHB1PERIPH_BASE + 0x5400UL)\n#define DMAMUX2_BASE          (D3_AHB1PERIPH_BASE + 0x5800UL)\n#define ADC3_BASE             (D3_AHB1PERIPH_BASE + 0x6000UL)\n#define ADC3_COMMON_BASE      (D3_AHB1PERIPH_BASE + 0x6300UL)\n#define HSEM_BASE             (D3_AHB1PERIPH_BASE + 0x6400UL)\n#define RAMECC3_BASE          (D3_AHB1PERIPH_BASE + 0x7000UL)\n\n/*!< D1_APB1PERIPH peripherals */\n#define LTDC_BASE             (D1_APB1PERIPH_BASE + 0x1000UL)\n#define LTDC_Layer1_BASE      (LTDC_BASE + 0x84UL)\n#define LTDC_Layer2_BASE      (LTDC_BASE + 0x104UL)\n#define WWDG1_BASE            (D1_APB1PERIPH_BASE + 0x3000UL)\n\n/*!< D2_APB1PERIPH peripherals */\n#define TIM2_BASE             (D2_APB1PERIPH_BASE + 0x0000UL)\n#define TIM3_BASE             (D2_APB1PERIPH_BASE + 0x0400UL)\n#define TIM4_BASE             (D2_APB1PERIPH_BASE + 0x0800UL)\n#define TIM5_BASE             (D2_APB1PERIPH_BASE + 0x0C00UL)\n#define TIM6_BASE             (D2_APB1PERIPH_BASE + 0x1000UL)\n#define TIM7_BASE             (D2_APB1PERIPH_BASE + 0x1400UL)\n#define TIM12_BASE            (D2_APB1PERIPH_BASE + 0x1800UL)\n#define TIM13_BASE            (D2_APB1PERIPH_BASE + 0x1C00UL)\n#define TIM14_BASE            (D2_APB1PERIPH_BASE + 0x2000UL)\n#define LPTIM1_BASE           (D2_APB1PERIPH_BASE + 0x2400UL)\n\n\n#define SPI2_BASE             (D2_APB1PERIPH_BASE + 0x3800UL)\n#define SPI3_BASE             (D2_APB1PERIPH_BASE + 0x3C00UL)\n#define SPDIFRX_BASE          (D2_APB1PERIPH_BASE + 0x4000UL)\n#define USART2_BASE           (D2_APB1PERIPH_BASE + 0x4400UL)\n#define USART3_BASE           (D2_APB1PERIPH_BASE + 0x4800UL)\n#define UART4_BASE            (D2_APB1PERIPH_BASE + 0x4C00UL)\n#define UART5_BASE            (D2_APB1PERIPH_BASE + 0x5000UL)\n#define I2C1_BASE             (D2_APB1PERIPH_BASE + 0x5400UL)\n#define I2C2_BASE             (D2_APB1PERIPH_BASE + 0x5800UL)\n#define I2C3_BASE             (D2_APB1PERIPH_BASE + 0x5C00UL)\n#define CEC_BASE              (D2_APB1PERIPH_BASE + 0x6C00UL)\n#define DAC1_BASE             (D2_APB1PERIPH_BASE + 0x7400UL)\n#define UART7_BASE            (D2_APB1PERIPH_BASE + 0x7800UL)\n#define UART8_BASE            (D2_APB1PERIPH_BASE + 0x7C00UL)\n#define CRS_BASE              (D2_APB1PERIPH_BASE + 0x8400UL)\n#define SWPMI1_BASE           (D2_APB1PERIPH_BASE + 0x8800UL)\n#define OPAMP_BASE            (D2_APB1PERIPH_BASE + 0x9000UL)\n#define OPAMP1_BASE           (D2_APB1PERIPH_BASE + 0x9000UL)\n#define OPAMP2_BASE           (D2_APB1PERIPH_BASE + 0x9010UL)\n#define MDIOS_BASE            (D2_APB1PERIPH_BASE + 0x9400UL)\n#define FDCAN1_BASE           (D2_APB1PERIPH_BASE + 0xA000UL)\n#define FDCAN2_BASE           (D2_APB1PERIPH_BASE + 0xA400UL)\n#define FDCAN_CCU_BASE        (D2_APB1PERIPH_BASE + 0xA800UL)\n#define SRAMCAN_BASE          (D2_APB1PERIPH_BASE + 0xAC00UL)\n\n/*!< D2_APB2PERIPH peripherals */\n\n#define TIM1_BASE             (D2_APB2PERIPH_BASE + 0x0000UL)\n#define TIM8_BASE             (D2_APB2PERIPH_BASE + 0x0400UL)\n#define USART1_BASE           (D2_APB2PERIPH_BASE + 0x1000UL)\n#define USART6_BASE           (D2_APB2PERIPH_BASE + 0x1400UL)\n#define SPI1_BASE             (D2_APB2PERIPH_BASE + 0x3000UL)\n#define SPI4_BASE             (D2_APB2PERIPH_BASE + 0x3400UL)\n#define TIM15_BASE            (D2_APB2PERIPH_BASE + 0x4000UL)\n#define TIM16_BASE            (D2_APB2PERIPH_BASE + 0x4400UL)\n#define TIM17_BASE            (D2_APB2PERIPH_BASE + 0x4800UL)\n#define SPI5_BASE             (D2_APB2PERIPH_BASE + 0x5000UL)\n#define SAI1_BASE             (D2_APB2PERIPH_BASE + 0x5800UL)\n#define SAI1_Block_A_BASE     (SAI1_BASE + 0x004UL)\n#define SAI1_Block_B_BASE     (SAI1_BASE + 0x024UL)\n#define SAI2_BASE             (D2_APB2PERIPH_BASE + 0x5C00UL)\n#define SAI2_Block_A_BASE     (SAI2_BASE + 0x004UL)\n#define SAI2_Block_B_BASE     (SAI2_BASE + 0x024UL)\n#define SAI3_BASE             (D2_APB2PERIPH_BASE + 0x6000UL)\n#define SAI3_Block_A_BASE     (SAI3_BASE + 0x004UL)\n#define SAI3_Block_B_BASE     (SAI3_BASE + 0x024UL)\n#define DFSDM1_BASE           (D2_APB2PERIPH_BASE + 0x7000UL)\n#define DFSDM1_Channel0_BASE  (DFSDM1_BASE + 0x00UL)\n#define DFSDM1_Channel1_BASE  (DFSDM1_BASE + 0x20UL)\n#define DFSDM1_Channel2_BASE  (DFSDM1_BASE + 0x40UL)\n#define DFSDM1_Channel3_BASE  (DFSDM1_BASE + 0x60UL)\n#define DFSDM1_Channel4_BASE  (DFSDM1_BASE + 0x80UL)\n#define DFSDM1_Channel5_BASE  (DFSDM1_BASE + 0xA0UL)\n#define DFSDM1_Channel6_BASE  (DFSDM1_BASE + 0xC0UL)\n#define DFSDM1_Channel7_BASE  (DFSDM1_BASE + 0xE0UL)\n#define DFSDM1_Filter0_BASE   (DFSDM1_BASE + 0x100UL)\n#define DFSDM1_Filter1_BASE   (DFSDM1_BASE + 0x180UL)\n#define DFSDM1_Filter2_BASE   (DFSDM1_BASE + 0x200UL)\n#define DFSDM1_Filter3_BASE   (DFSDM1_BASE + 0x280UL)\n#define HRTIM1_BASE           (D2_APB2PERIPH_BASE + 0x7400UL)\n#define HRTIM1_TIMA_BASE      (HRTIM1_BASE + 0x00000080UL)\n#define HRTIM1_TIMB_BASE      (HRTIM1_BASE + 0x00000100UL)\n#define HRTIM1_TIMC_BASE      (HRTIM1_BASE + 0x00000180UL)\n#define HRTIM1_TIMD_BASE      (HRTIM1_BASE + 0x00000200UL)\n#define HRTIM1_TIME_BASE      (HRTIM1_BASE + 0x00000280UL)\n#define HRTIM1_COMMON_BASE    (HRTIM1_BASE + 0x00000380UL)\n\n\n/*!< D3_APB1PERIPH peripherals */\n#define EXTI_BASE             (D3_APB1PERIPH_BASE + 0x0000UL)\n#define EXTI_D1_BASE          (EXTI_BASE + 0x0080UL)\n#define EXTI_D2_BASE          (EXTI_BASE + 0x00C0UL)\n#define SYSCFG_BASE           (D3_APB1PERIPH_BASE + 0x0400UL)\n#define LPUART1_BASE          (D3_APB1PERIPH_BASE + 0x0C00UL)\n#define SPI6_BASE             (D3_APB1PERIPH_BASE + 0x1400UL)\n#define I2C4_BASE             (D3_APB1PERIPH_BASE + 0x1C00UL)\n#define LPTIM2_BASE           (D3_APB1PERIPH_BASE + 0x2400UL)\n#define LPTIM3_BASE           (D3_APB1PERIPH_BASE + 0x2800UL)\n#define LPTIM4_BASE           (D3_APB1PERIPH_BASE + 0x2C00UL)\n#define LPTIM5_BASE           (D3_APB1PERIPH_BASE + 0x3000UL)\n#define COMP12_BASE           (D3_APB1PERIPH_BASE + 0x3800UL)\n#define COMP1_BASE            (COMP12_BASE + 0x0CUL)\n#define COMP2_BASE            (COMP12_BASE + 0x10UL)\n#define VREFBUF_BASE          (D3_APB1PERIPH_BASE + 0x3C00UL)\n#define RTC_BASE              (D3_APB1PERIPH_BASE + 0x4000UL)\n#define IWDG1_BASE            (D3_APB1PERIPH_BASE + 0x4800UL)\n\n\n#define SAI4_BASE             (D3_APB1PERIPH_BASE + 0x5400UL)\n#define SAI4_Block_A_BASE     (SAI4_BASE + 0x004UL)\n#define SAI4_Block_B_BASE     (SAI4_BASE + 0x024UL)\n\n\n\n\n#define BDMA_Channel0_BASE    (BDMA_BASE + 0x0008UL)\n#define BDMA_Channel1_BASE    (BDMA_BASE + 0x001CUL)\n#define BDMA_Channel2_BASE    (BDMA_BASE + 0x0030UL)\n#define BDMA_Channel3_BASE    (BDMA_BASE + 0x0044UL)\n#define BDMA_Channel4_BASE    (BDMA_BASE + 0x0058UL)\n#define BDMA_Channel5_BASE    (BDMA_BASE + 0x006CUL)\n#define BDMA_Channel6_BASE    (BDMA_BASE + 0x0080UL)\n#define BDMA_Channel7_BASE    (BDMA_BASE + 0x0094UL)\n\n#define DMAMUX2_Channel0_BASE    (DMAMUX2_BASE)\n#define DMAMUX2_Channel1_BASE    (DMAMUX2_BASE + 0x0004UL)\n#define DMAMUX2_Channel2_BASE    (DMAMUX2_BASE + 0x0008UL)\n#define DMAMUX2_Channel3_BASE    (DMAMUX2_BASE + 0x000CUL)\n#define DMAMUX2_Channel4_BASE    (DMAMUX2_BASE + 0x0010UL)\n#define DMAMUX2_Channel5_BASE    (DMAMUX2_BASE + 0x0014UL)\n#define DMAMUX2_Channel6_BASE    (DMAMUX2_BASE + 0x0018UL)\n#define DMAMUX2_Channel7_BASE    (DMAMUX2_BASE + 0x001CUL)\n\n#define DMAMUX2_RequestGenerator0_BASE  (DMAMUX2_BASE + 0x0100UL)\n#define DMAMUX2_RequestGenerator1_BASE  (DMAMUX2_BASE + 0x0104UL)\n#define DMAMUX2_RequestGenerator2_BASE  (DMAMUX2_BASE + 0x0108UL)\n#define DMAMUX2_RequestGenerator3_BASE  (DMAMUX2_BASE + 0x010CUL)\n#define DMAMUX2_RequestGenerator4_BASE  (DMAMUX2_BASE + 0x0110UL)\n#define DMAMUX2_RequestGenerator5_BASE  (DMAMUX2_BASE + 0x0114UL)\n#define DMAMUX2_RequestGenerator6_BASE  (DMAMUX2_BASE + 0x0118UL)\n#define DMAMUX2_RequestGenerator7_BASE  (DMAMUX2_BASE + 0x011CUL)\n\n#define DMAMUX2_ChannelStatus_BASE      (DMAMUX2_BASE + 0x0080UL)\n#define DMAMUX2_RequestGenStatus_BASE   (DMAMUX2_BASE + 0x0140UL)\n\n#define DMA1_Stream0_BASE     (DMA1_BASE + 0x010UL)\n#define DMA1_Stream1_BASE     (DMA1_BASE + 0x028UL)\n#define DMA1_Stream2_BASE     (DMA1_BASE + 0x040UL)\n#define DMA1_Stream3_BASE     (DMA1_BASE + 0x058UL)\n#define DMA1_Stream4_BASE     (DMA1_BASE + 0x070UL)\n#define DMA1_Stream5_BASE     (DMA1_BASE + 0x088UL)\n#define DMA1_Stream6_BASE     (DMA1_BASE + 0x0A0UL)\n#define DMA1_Stream7_BASE     (DMA1_BASE + 0x0B8UL)\n\n#define DMA2_Stream0_BASE     (DMA2_BASE + 0x010UL)\n#define DMA2_Stream1_BASE     (DMA2_BASE + 0x028UL)\n#define DMA2_Stream2_BASE     (DMA2_BASE + 0x040UL)\n#define DMA2_Stream3_BASE     (DMA2_BASE + 0x058UL)\n#define DMA2_Stream4_BASE     (DMA2_BASE + 0x070UL)\n#define DMA2_Stream5_BASE     (DMA2_BASE + 0x088UL)\n#define DMA2_Stream6_BASE     (DMA2_BASE + 0x0A0UL)\n#define DMA2_Stream7_BASE     (DMA2_BASE + 0x0B8UL)\n\n#define DMAMUX1_Channel0_BASE    (DMAMUX1_BASE)\n#define DMAMUX1_Channel1_BASE    (DMAMUX1_BASE + 0x0004UL)\n#define DMAMUX1_Channel2_BASE    (DMAMUX1_BASE + 0x0008UL)\n#define DMAMUX1_Channel3_BASE    (DMAMUX1_BASE + 0x000CUL)\n#define DMAMUX1_Channel4_BASE    (DMAMUX1_BASE + 0x0010UL)\n#define DMAMUX1_Channel5_BASE    (DMAMUX1_BASE + 0x0014UL)\n#define DMAMUX1_Channel6_BASE    (DMAMUX1_BASE + 0x0018UL)\n#define DMAMUX1_Channel7_BASE    (DMAMUX1_BASE + 0x001CUL)\n#define DMAMUX1_Channel8_BASE    (DMAMUX1_BASE + 0x0020UL)\n#define DMAMUX1_Channel9_BASE    (DMAMUX1_BASE + 0x0024UL)\n#define DMAMUX1_Channel10_BASE   (DMAMUX1_BASE + 0x0028UL)\n#define DMAMUX1_Channel11_BASE   (DMAMUX1_BASE + 0x002CUL)\n#define DMAMUX1_Channel12_BASE   (DMAMUX1_BASE + 0x0030UL)\n#define DMAMUX1_Channel13_BASE   (DMAMUX1_BASE + 0x0034UL)\n#define DMAMUX1_Channel14_BASE   (DMAMUX1_BASE + 0x0038UL)\n#define DMAMUX1_Channel15_BASE   (DMAMUX1_BASE + 0x003CUL)\n\n#define DMAMUX1_RequestGenerator0_BASE  (DMAMUX1_BASE + 0x0100UL)\n#define DMAMUX1_RequestGenerator1_BASE  (DMAMUX1_BASE + 0x0104UL)\n#define DMAMUX1_RequestGenerator2_BASE  (DMAMUX1_BASE + 0x0108UL)\n#define DMAMUX1_RequestGenerator3_BASE  (DMAMUX1_BASE + 0x010CUL)\n#define DMAMUX1_RequestGenerator4_BASE  (DMAMUX1_BASE + 0x0110UL)\n#define DMAMUX1_RequestGenerator5_BASE  (DMAMUX1_BASE + 0x0114UL)\n#define DMAMUX1_RequestGenerator6_BASE  (DMAMUX1_BASE + 0x0118UL)\n#define DMAMUX1_RequestGenerator7_BASE  (DMAMUX1_BASE + 0x011CUL)\n\n#define DMAMUX1_ChannelStatus_BASE      (DMAMUX1_BASE + 0x0080UL)\n#define DMAMUX1_RequestGenStatus_BASE   (DMAMUX1_BASE + 0x0140UL)\n\n/*!< FMC Banks registers base  address */\n#define FMC_Bank1_R_BASE      (FMC_R_BASE + 0x0000UL)\n#define FMC_Bank1E_R_BASE     (FMC_R_BASE + 0x0104UL)\n#define FMC_Bank2_R_BASE      (FMC_R_BASE + 0x0060UL)\n#define FMC_Bank3_R_BASE      (FMC_R_BASE + 0x0080UL)\n#define FMC_Bank5_6_R_BASE    (FMC_R_BASE + 0x0140UL)\n\n/* Debug MCU registers base address */\n#define DBGMCU_BASE           (0x5C001000UL)\n\n#define MDMA_Channel0_BASE    (MDMA_BASE + 0x00000040UL)\n#define MDMA_Channel1_BASE    (MDMA_BASE + 0x00000080UL)\n#define MDMA_Channel2_BASE    (MDMA_BASE + 0x000000C0UL)\n#define MDMA_Channel3_BASE    (MDMA_BASE + 0x00000100UL)\n#define MDMA_Channel4_BASE    (MDMA_BASE + 0x00000140UL)\n#define MDMA_Channel5_BASE    (MDMA_BASE + 0x00000180UL)\n#define MDMA_Channel6_BASE    (MDMA_BASE + 0x000001C0UL)\n#define MDMA_Channel7_BASE    (MDMA_BASE + 0x00000200UL)\n#define MDMA_Channel8_BASE    (MDMA_BASE + 0x00000240UL)\n#define MDMA_Channel9_BASE    (MDMA_BASE + 0x00000280UL)\n#define MDMA_Channel10_BASE   (MDMA_BASE + 0x000002C0UL)\n#define MDMA_Channel11_BASE   (MDMA_BASE + 0x00000300UL)\n#define MDMA_Channel12_BASE   (MDMA_BASE + 0x00000340UL)\n#define MDMA_Channel13_BASE   (MDMA_BASE + 0x00000380UL)\n#define MDMA_Channel14_BASE   (MDMA_BASE + 0x000003C0UL)\n#define MDMA_Channel15_BASE   (MDMA_BASE + 0x00000400UL)\n\n#define RAMECC1_Monitor1_BASE (RAMECC1_BASE + 0x20UL)\n#define RAMECC1_Monitor2_BASE (RAMECC1_BASE + 0x40UL)\n#define RAMECC1_Monitor3_BASE (RAMECC1_BASE + 0x60UL)\n#define RAMECC1_Monitor4_BASE (RAMECC1_BASE + 0x80UL)\n#define RAMECC1_Monitor5_BASE (RAMECC1_BASE + 0xA0UL)\n\n#define RAMECC2_Monitor1_BASE (RAMECC2_BASE + 0x20UL)\n#define RAMECC2_Monitor2_BASE (RAMECC2_BASE + 0x40UL)\n#define RAMECC2_Monitor3_BASE (RAMECC2_BASE + 0x60UL)\n#define RAMECC2_Monitor4_BASE (RAMECC2_BASE + 0x80UL)\n#define RAMECC2_Monitor5_BASE (RAMECC2_BASE + 0xA0UL)\n\n#define RAMECC3_Monitor1_BASE (RAMECC3_BASE + 0x20UL)\n#define RAMECC3_Monitor2_BASE (RAMECC3_BASE + 0x40UL)\n\n\n\n#define GPV_BASE       (PERIPH_BASE + 0x11000000UL)   /*!<  GPV_BASE       (PERIPH_BASE + 0x11000000UL)                    */\n\n/**\n  * @}\n  */\n\n/** @addtogroup Peripheral_declaration\n  * @{\n  */\n#define TIM2                ((TIM_TypeDef *) TIM2_BASE)\n#define TIM3                ((TIM_TypeDef *) TIM3_BASE)\n#define TIM4                ((TIM_TypeDef *) TIM4_BASE)\n#define TIM5                ((TIM_TypeDef *) TIM5_BASE)\n#define TIM6                ((TIM_TypeDef *) TIM6_BASE)\n#define TIM7                ((TIM_TypeDef *) TIM7_BASE)\n#define TIM13               ((TIM_TypeDef *) TIM13_BASE)\n#define TIM14               ((TIM_TypeDef *) TIM14_BASE)\n#define VREFBUF             ((VREFBUF_TypeDef *) VREFBUF_BASE)\n#define RTC                 ((RTC_TypeDef *) RTC_BASE)\n#define WWDG1               ((WWDG_TypeDef *) WWDG1_BASE)\n\n\n#define IWDG1               ((IWDG_TypeDef *) IWDG1_BASE)\n#define SPI2                ((SPI_TypeDef *) SPI2_BASE)\n#define SPI3                ((SPI_TypeDef *) SPI3_BASE)\n#define SPI4                ((SPI_TypeDef *) SPI4_BASE)\n#define SPI5                ((SPI_TypeDef *) SPI5_BASE)\n#define SPI6                ((SPI_TypeDef *) SPI6_BASE)\n#define USART2              ((USART_TypeDef *) USART2_BASE)\n#define USART3              ((USART_TypeDef *) USART3_BASE)\n#define USART6              ((USART_TypeDef *) USART6_BASE)\n#define UART7               ((USART_TypeDef *) UART7_BASE)\n#define UART8               ((USART_TypeDef *) UART8_BASE)\n#define CRS                 ((CRS_TypeDef *) CRS_BASE)\n#define UART4               ((USART_TypeDef *) UART4_BASE)\n#define UART5               ((USART_TypeDef *) UART5_BASE)\n#define I2C1                ((I2C_TypeDef *) I2C1_BASE)\n#define I2C2                ((I2C_TypeDef *) I2C2_BASE)\n#define I2C3                ((I2C_TypeDef *) I2C3_BASE)\n#define I2C4                ((I2C_TypeDef *) I2C4_BASE)\n#define FDCAN1              ((FDCAN_GlobalTypeDef *) FDCAN1_BASE)\n#define FDCAN2              ((FDCAN_GlobalTypeDef *) FDCAN2_BASE)\n#define FDCAN_CCU           ((FDCAN_ClockCalibrationUnit_TypeDef *) FDCAN_CCU_BASE)\n#define CEC                 ((CEC_TypeDef *) CEC_BASE)\n#define LPTIM1              ((LPTIM_TypeDef *) LPTIM1_BASE)\n#define PWR                 ((PWR_TypeDef *) PWR_BASE)\n#define DAC1                ((DAC_TypeDef *) DAC1_BASE)\n#define LPUART1             ((USART_TypeDef *) LPUART1_BASE)\n#define SWPMI1              ((SWPMI_TypeDef *) SWPMI1_BASE)\n#define LPTIM2              ((LPTIM_TypeDef *) LPTIM2_BASE)\n#define LPTIM3              ((LPTIM_TypeDef *) LPTIM3_BASE)\n#define LPTIM4              ((LPTIM_TypeDef *) LPTIM4_BASE)\n#define LPTIM5              ((LPTIM_TypeDef *) LPTIM5_BASE)\n\n#define SYSCFG              ((SYSCFG_TypeDef *) SYSCFG_BASE)\n#define COMP12              ((COMPOPT_TypeDef *) COMP12_BASE)\n#define COMP1               ((COMP_TypeDef *) COMP1_BASE)\n#define COMP2               ((COMP_TypeDef *) COMP2_BASE)\n#define COMP12_COMMON       ((COMP_Common_TypeDef *) COMP2_BASE)\n#define OPAMP               ((OPAMP_TypeDef *) OPAMP_BASE)\n#define OPAMP1              ((OPAMP_TypeDef *) OPAMP1_BASE)\n#define OPAMP2              ((OPAMP_TypeDef *) OPAMP2_BASE)\n\n\n#define EXTI                ((EXTI_TypeDef *) EXTI_BASE)\n#define EXTI_D1             ((EXTI_Core_TypeDef *) EXTI_D1_BASE)\n#define EXTI_D2             ((EXTI_Core_TypeDef *) EXTI_D2_BASE)\n#define TIM1                ((TIM_TypeDef *) TIM1_BASE)\n#define SPI1                ((SPI_TypeDef *) SPI1_BASE)\n#define TIM8                ((TIM_TypeDef *) TIM8_BASE)\n#define USART1              ((USART_TypeDef *) USART1_BASE)\n#define TIM12               ((TIM_TypeDef *) TIM12_BASE)\n#define TIM15               ((TIM_TypeDef *) TIM15_BASE)\n#define TIM16               ((TIM_TypeDef *) TIM16_BASE)\n#define TIM17               ((TIM_TypeDef *) TIM17_BASE)\n#define HRTIM1              ((HRTIM_TypeDef *) HRTIM1_BASE)\n#define HRTIM1_TIMA         ((HRTIM_Timerx_TypeDef *) HRTIM1_TIMA_BASE)\n#define HRTIM1_TIMB         ((HRTIM_Timerx_TypeDef *) HRTIM1_TIMB_BASE)\n#define HRTIM1_TIMC         ((HRTIM_Timerx_TypeDef *) HRTIM1_TIMC_BASE)\n#define HRTIM1_TIMD         ((HRTIM_Timerx_TypeDef *) HRTIM1_TIMD_BASE)\n#define HRTIM1_TIME         ((HRTIM_Timerx_TypeDef *) HRTIM1_TIME_BASE)\n#define HRTIM1_COMMON       ((HRTIM_Common_TypeDef *) HRTIM1_COMMON_BASE)\n#define SAI1                ((SAI_TypeDef *) SAI1_BASE)\n#define SAI1_Block_A        ((SAI_Block_TypeDef *)SAI1_Block_A_BASE)\n#define SAI1_Block_B        ((SAI_Block_TypeDef *)SAI1_Block_B_BASE)\n#define SAI2                ((SAI_TypeDef *) SAI2_BASE)\n#define SAI2_Block_A        ((SAI_Block_TypeDef *)SAI2_Block_A_BASE)\n#define SAI2_Block_B        ((SAI_Block_TypeDef *)SAI2_Block_B_BASE)\n#define SAI3                ((SAI_TypeDef *) SAI3_BASE)\n#define SAI3_Block_A        ((SAI_Block_TypeDef *)SAI3_Block_A_BASE)\n#define SAI3_Block_B        ((SAI_Block_TypeDef *)SAI3_Block_B_BASE)\n#define SAI4                ((SAI_TypeDef *) SAI4_BASE)\n#define SAI4_Block_A        ((SAI_Block_TypeDef *)SAI4_Block_A_BASE)\n#define SAI4_Block_B        ((SAI_Block_TypeDef *)SAI4_Block_B_BASE)\n\n#define SPDIFRX             ((SPDIFRX_TypeDef *) SPDIFRX_BASE)\n#define DFSDM1_Channel0     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel0_BASE)\n#define DFSDM1_Channel1     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel1_BASE)\n#define DFSDM1_Channel2     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel2_BASE)\n#define DFSDM1_Channel3     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel3_BASE)\n#define DFSDM1_Channel4     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel4_BASE)\n#define DFSDM1_Channel5     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel5_BASE)\n#define DFSDM1_Channel6     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel6_BASE)\n#define DFSDM1_Channel7     ((DFSDM_Channel_TypeDef *) DFSDM1_Channel7_BASE)\n#define DFSDM1_Filter0      ((DFSDM_Filter_TypeDef *) DFSDM1_Filter0_BASE)\n#define DFSDM1_Filter1      ((DFSDM_Filter_TypeDef *) DFSDM1_Filter1_BASE)\n#define DFSDM1_Filter2      ((DFSDM_Filter_TypeDef *) DFSDM1_Filter2_BASE)\n#define DFSDM1_Filter3      ((DFSDM_Filter_TypeDef *) DFSDM1_Filter3_BASE)\n#define DMA2D               ((DMA2D_TypeDef *) DMA2D_BASE)\n#define DCMI                ((DCMI_TypeDef *) DCMI_BASE)\n#define RCC                 ((RCC_TypeDef *) RCC_BASE)\n#define FLASH               ((FLASH_TypeDef *) FLASH_R_BASE)\n#define CRC                 ((CRC_TypeDef *) CRC_BASE)\n\n#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)\n#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)\n#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)\n#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)\n#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)\n#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)\n#define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)\n#define GPIOH               ((GPIO_TypeDef *) GPIOH_BASE)\n#define GPIOI               ((GPIO_TypeDef *) GPIOI_BASE)\n#define GPIOJ               ((GPIO_TypeDef *) GPIOJ_BASE)\n#define GPIOK               ((GPIO_TypeDef *) GPIOK_BASE)\n\n#define ADC1                ((ADC_TypeDef *) ADC1_BASE)\n#define ADC2                ((ADC_TypeDef *) ADC2_BASE)\n#define ADC3                ((ADC_TypeDef *) ADC3_BASE)\n#define ADC3_COMMON         ((ADC_Common_TypeDef *) ADC3_COMMON_BASE)\n#define ADC12_COMMON        ((ADC_Common_TypeDef *) ADC12_COMMON_BASE)\n\n#define CRYP                ((CRYP_TypeDef *) CRYP_BASE)\n#define HASH                ((HASH_TypeDef *) HASH_BASE)\n#define HASH_DIGEST         ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE)\n#define RNG                 ((RNG_TypeDef *) RNG_BASE)\n#define SDMMC2              ((SDMMC_TypeDef *) SDMMC2_BASE)\n#define DLYB_SDMMC2         ((DLYB_TypeDef *) DLYB_SDMMC2_BASE)\n\n#define BDMA                ((BDMA_TypeDef *) BDMA_BASE)\n#define BDMA_Channel0       ((BDMA_Channel_TypeDef *) BDMA_Channel0_BASE)\n#define BDMA_Channel1       ((BDMA_Channel_TypeDef *) BDMA_Channel1_BASE)\n#define BDMA_Channel2       ((BDMA_Channel_TypeDef *) BDMA_Channel2_BASE)\n#define BDMA_Channel3       ((BDMA_Channel_TypeDef *) BDMA_Channel3_BASE)\n#define BDMA_Channel4       ((BDMA_Channel_TypeDef *) BDMA_Channel4_BASE)\n#define BDMA_Channel5       ((BDMA_Channel_TypeDef *) BDMA_Channel5_BASE)\n#define BDMA_Channel6       ((BDMA_Channel_TypeDef *) BDMA_Channel6_BASE)\n#define BDMA_Channel7       ((BDMA_Channel_TypeDef *) BDMA_Channel7_BASE)\n\n#define RAMECC1              ((RAMECC_TypeDef *)RAMECC1_BASE)\n#define RAMECC1_Monitor1     ((RAMECC_MonitorTypeDef *)RAMECC1_Monitor1_BASE)\n#define RAMECC1_Monitor2     ((RAMECC_MonitorTypeDef *)RAMECC1_Monitor2_BASE)\n#define RAMECC1_Monitor3     ((RAMECC_MonitorTypeDef *)RAMECC1_Monitor3_BASE)\n#define RAMECC1_Monitor4     ((RAMECC_MonitorTypeDef *)RAMECC1_Monitor4_BASE)\n#define RAMECC1_Monitor5     ((RAMECC_MonitorTypeDef *)RAMECC1_Monitor5_BASE)\n\n#define RAMECC2              ((RAMECC_TypeDef *)RAMECC2_BASE)\n#define RAMECC2_Monitor1     ((RAMECC_MonitorTypeDef *)RAMECC2_Monitor1_BASE)\n#define RAMECC2_Monitor2     ((RAMECC_MonitorTypeDef *)RAMECC2_Monitor2_BASE)\n#define RAMECC2_Monitor3     ((RAMECC_MonitorTypeDef *)RAMECC2_Monitor3_BASE)\n#define RAMECC2_Monitor4     ((RAMECC_MonitorTypeDef *)RAMECC2_Monitor4_BASE)\n#define RAMECC2_Monitor5     ((RAMECC_MonitorTypeDef *)RAMECC2_Monitor5_BASE)\n\n#define RAMECC3              ((RAMECC_TypeDef *)RAMECC3_BASE)\n#define RAMECC3_Monitor1     ((RAMECC_MonitorTypeDef *)RAMECC3_Monitor1_BASE)\n#define RAMECC3_Monitor2     ((RAMECC_MonitorTypeDef *)RAMECC3_Monitor2_BASE)\n\n#define DMAMUX2                ((DMAMUX_Channel_TypeDef *) DMAMUX2_BASE)\n#define DMAMUX2_Channel0       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel0_BASE)\n#define DMAMUX2_Channel1       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel1_BASE)\n#define DMAMUX2_Channel2       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel2_BASE)\n#define DMAMUX2_Channel3       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel3_BASE)\n#define DMAMUX2_Channel4       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel4_BASE)\n#define DMAMUX2_Channel5       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel5_BASE)\n#define DMAMUX2_Channel6       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel6_BASE)\n#define DMAMUX2_Channel7       ((DMAMUX_Channel_TypeDef *) DMAMUX2_Channel7_BASE)\n\n\n#define DMAMUX2_RequestGenerator0  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator0_BASE)\n#define DMAMUX2_RequestGenerator1  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator1_BASE)\n#define DMAMUX2_RequestGenerator2  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator2_BASE)\n#define DMAMUX2_RequestGenerator3  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator3_BASE)\n#define DMAMUX2_RequestGenerator4  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator4_BASE)\n#define DMAMUX2_RequestGenerator5  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator5_BASE)\n#define DMAMUX2_RequestGenerator6  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator6_BASE)\n#define DMAMUX2_RequestGenerator7  ((DMAMUX_RequestGen_TypeDef *) DMAMUX2_RequestGenerator7_BASE)\n\n#define DMAMUX2_ChannelStatus      ((DMAMUX_ChannelStatus_TypeDef *) DMAMUX2_ChannelStatus_BASE)\n#define DMAMUX2_RequestGenStatus   ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX2_RequestGenStatus_BASE)\n\n#define DMA2                ((DMA_TypeDef *) DMA2_BASE)\n#define DMA2_Stream0        ((DMA_Stream_TypeDef *) DMA2_Stream0_BASE)\n#define DMA2_Stream1        ((DMA_Stream_TypeDef *) DMA2_Stream1_BASE)\n#define DMA2_Stream2        ((DMA_Stream_TypeDef *) DMA2_Stream2_BASE)\n#define DMA2_Stream3        ((DMA_Stream_TypeDef *) DMA2_Stream3_BASE)\n#define DMA2_Stream4        ((DMA_Stream_TypeDef *) DMA2_Stream4_BASE)\n#define DMA2_Stream5        ((DMA_Stream_TypeDef *) DMA2_Stream5_BASE)\n#define DMA2_Stream6        ((DMA_Stream_TypeDef *) DMA2_Stream6_BASE)\n#define DMA2_Stream7        ((DMA_Stream_TypeDef *) DMA2_Stream7_BASE)\n\n#define DMA1                ((DMA_TypeDef *) DMA1_BASE)\n#define DMA1_Stream0        ((DMA_Stream_TypeDef *) DMA1_Stream0_BASE)\n#define DMA1_Stream1        ((DMA_Stream_TypeDef *) DMA1_Stream1_BASE)\n#define DMA1_Stream2        ((DMA_Stream_TypeDef *) DMA1_Stream2_BASE)\n#define DMA1_Stream3        ((DMA_Stream_TypeDef *) DMA1_Stream3_BASE)\n#define DMA1_Stream4        ((DMA_Stream_TypeDef *) DMA1_Stream4_BASE)\n#define DMA1_Stream5        ((DMA_Stream_TypeDef *) DMA1_Stream5_BASE)\n#define DMA1_Stream6        ((DMA_Stream_TypeDef *) DMA1_Stream6_BASE)\n#define DMA1_Stream7        ((DMA_Stream_TypeDef *) DMA1_Stream7_BASE)\n\n\n#define DMAMUX1              ((DMAMUX_Channel_TypeDef *) DMAMUX1_BASE)\n#define DMAMUX1_Channel0     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel0_BASE)\n#define DMAMUX1_Channel1     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel1_BASE)\n#define DMAMUX1_Channel2     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel2_BASE)\n#define DMAMUX1_Channel3     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel3_BASE)\n#define DMAMUX1_Channel4     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel4_BASE)\n#define DMAMUX1_Channel5     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel5_BASE)\n#define DMAMUX1_Channel6     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel6_BASE)\n#define DMAMUX1_Channel7     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel7_BASE)\n#define DMAMUX1_Channel8     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel8_BASE)\n#define DMAMUX1_Channel9     ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel9_BASE)\n#define DMAMUX1_Channel10    ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel10_BASE)\n#define DMAMUX1_Channel11    ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel11_BASE)\n#define DMAMUX1_Channel12    ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel12_BASE)\n#define DMAMUX1_Channel13    ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel13_BASE)\n#define DMAMUX1_Channel14    ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel14_BASE)\n#define DMAMUX1_Channel15    ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel15_BASE)\n\n#define DMAMUX1_RequestGenerator0  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator0_BASE)\n#define DMAMUX1_RequestGenerator1  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator1_BASE)\n#define DMAMUX1_RequestGenerator2  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator2_BASE)\n#define DMAMUX1_RequestGenerator3  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator3_BASE)\n#define DMAMUX1_RequestGenerator4  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator4_BASE)\n#define DMAMUX1_RequestGenerator5  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator5_BASE)\n#define DMAMUX1_RequestGenerator6  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator6_BASE)\n#define DMAMUX1_RequestGenerator7  ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator7_BASE)\n\n#define DMAMUX1_ChannelStatus      ((DMAMUX_ChannelStatus_TypeDef *)    DMAMUX1_ChannelStatus_BASE)\n#define DMAMUX1_RequestGenStatus   ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX1_RequestGenStatus_BASE)\n\n\n#define FMC_Bank1_R           ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE)\n#define FMC_Bank1E_R          ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE)\n#define FMC_Bank2_R           ((FMC_Bank2_TypeDef *) FMC_Bank2_R_BASE)\n#define FMC_Bank3_R           ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE)\n#define FMC_Bank5_6_R         ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_R_BASE)\n\n\n#define QUADSPI               ((QUADSPI_TypeDef *) QSPI_R_BASE)\n#define DLYB_QUADSPI          ((DLYB_TypeDef *) DLYB_QSPI_BASE)\n#define SDMMC1                ((SDMMC_TypeDef *) SDMMC1_BASE)\n#define DLYB_SDMMC1           ((DLYB_TypeDef *) DLYB_SDMMC1_BASE)\n\n#define DBGMCU              ((DBGMCU_TypeDef *) DBGMCU_BASE)\n\n#define JPEG                ((JPEG_TypeDef *) JPGDEC_BASE)\n#define HSEM                ((HSEM_TypeDef *) HSEM_BASE)\n#define HSEM_COMMON         ((HSEM_Common_TypeDef *) (HSEM_BASE + 0x100UL))\n\n#define LTDC                ((LTDC_TypeDef *)LTDC_BASE)\n#define LTDC_Layer1         ((LTDC_Layer_TypeDef *)LTDC_Layer1_BASE)\n#define LTDC_Layer2         ((LTDC_Layer_TypeDef *)LTDC_Layer2_BASE)\n\n#define MDIOS               ((MDIOS_TypeDef *) MDIOS_BASE)\n\n#define ETH                 ((ETH_TypeDef *)ETH_BASE)\n#define MDMA                ((MDMA_TypeDef *)MDMA_BASE)\n#define MDMA_Channel0       ((MDMA_Channel_TypeDef *)MDMA_Channel0_BASE)\n#define MDMA_Channel1       ((MDMA_Channel_TypeDef *)MDMA_Channel1_BASE)\n#define MDMA_Channel2       ((MDMA_Channel_TypeDef *)MDMA_Channel2_BASE)\n#define MDMA_Channel3       ((MDMA_Channel_TypeDef *)MDMA_Channel3_BASE)\n#define MDMA_Channel4       ((MDMA_Channel_TypeDef *)MDMA_Channel4_BASE)\n#define MDMA_Channel5       ((MDMA_Channel_TypeDef *)MDMA_Channel5_BASE)\n#define MDMA_Channel6       ((MDMA_Channel_TypeDef *)MDMA_Channel6_BASE)\n#define MDMA_Channel7       ((MDMA_Channel_TypeDef *)MDMA_Channel7_BASE)\n#define MDMA_Channel8       ((MDMA_Channel_TypeDef *)MDMA_Channel8_BASE)\n#define MDMA_Channel9       ((MDMA_Channel_TypeDef *)MDMA_Channel9_BASE)\n#define MDMA_Channel10      ((MDMA_Channel_TypeDef *)MDMA_Channel10_BASE)\n#define MDMA_Channel11      ((MDMA_Channel_TypeDef *)MDMA_Channel11_BASE)\n#define MDMA_Channel12      ((MDMA_Channel_TypeDef *)MDMA_Channel12_BASE)\n#define MDMA_Channel13      ((MDMA_Channel_TypeDef *)MDMA_Channel13_BASE)\n#define MDMA_Channel14      ((MDMA_Channel_TypeDef *)MDMA_Channel14_BASE)\n#define MDMA_Channel15      ((MDMA_Channel_TypeDef *)MDMA_Channel15_BASE)\n\n\n#define USB1_OTG_HS         ((USB_OTG_GlobalTypeDef *) USB1_OTG_HS_PERIPH_BASE)\n#define USB2_OTG_FS         ((USB_OTG_GlobalTypeDef *) USB2_OTG_FS_PERIPH_BASE)\n\n/* Legacy defines */\n#define USB_OTG_HS                   USB1_OTG_HS\n#define USB_OTG_HS_PERIPH_BASE       USB1_OTG_HS_PERIPH_BASE\n#define USB_OTG_FS                   USB2_OTG_FS\n#define USB_OTG_FS_PERIPH_BASE       USB2_OTG_FS_PERIPH_BASE\n\n#define GPV                ((GPV_TypeDef *) GPV_BASE)\n\n/**\n  * @}\n  */\n\n/** @addtogroup Exported_constants\n  * @{\n  */\n\n  /** @addtogroup Hardware_Constant_Definition\n    * @{\n    */\n#define LSI_STARTUP_TIME 130U /*!< LSI Maximum startup time in us */\n\n  /**\n    * @}\n    */\n\n  /** @addtogroup Peripheral_Registers_Bits_Definition\n  * @{\n  */\n\n/******************************************************************************/\n/*                         Peripheral Registers_Bits_Definition               */\n/******************************************************************************/\n\n/******************************************************************************/\n/*                                                                            */\n/*                        Analog to Digital Converter                         */\n/*                                                                            */\n/******************************************************************************/\n/*******************************  ADC VERSION  ********************************/\n#define ADC_VER_V5_X\n/********************  Bit definition for ADC_ISR register  ********************/\n#define ADC_ISR_ADRDY_Pos                 (0U)\n#define ADC_ISR_ADRDY_Msk                 (0x1UL << ADC_ISR_ADRDY_Pos)         /*!< 0x00000001 */\n#define ADC_ISR_ADRDY                     ADC_ISR_ADRDY_Msk                    /*!< ADC Ready (ADRDY) flag  */\n#define ADC_ISR_EOSMP_Pos                 (1U)\n#define ADC_ISR_EOSMP_Msk                 (0x1UL << ADC_ISR_EOSMP_Pos)         /*!< 0x00000002 */\n#define ADC_ISR_EOSMP                     ADC_ISR_EOSMP_Msk                    /*!< ADC End of Sampling flag */\n#define ADC_ISR_EOC_Pos                   (2U)\n#define ADC_ISR_EOC_Msk                   (0x1UL << ADC_ISR_EOC_Pos)           /*!< 0x00000004 */\n#define ADC_ISR_EOC                       ADC_ISR_EOC_Msk                      /*!< ADC End of Regular Conversion flag */\n#define ADC_ISR_EOS_Pos                   (3U)\n#define ADC_ISR_EOS_Msk                   (0x1UL << ADC_ISR_EOS_Pos)           /*!< 0x00000008 */\n#define ADC_ISR_EOS                       ADC_ISR_EOS_Msk                      /*!< ADC End of Regular sequence of Conversions flag */\n#define ADC_ISR_OVR_Pos                   (4U)\n#define ADC_ISR_OVR_Msk                   (0x1UL << ADC_ISR_OVR_Pos)           /*!< 0x00000010 */\n#define ADC_ISR_OVR                       ADC_ISR_OVR_Msk                      /*!< ADC overrun flag */\n#define ADC_ISR_JEOC_Pos                  (5U)\n#define ADC_ISR_JEOC_Msk                  (0x1UL << ADC_ISR_JEOC_Pos)          /*!< 0x00000020 */\n#define ADC_ISR_JEOC                      ADC_ISR_JEOC_Msk                     /*!< ADC End of Injected Conversion flag */\n#define ADC_ISR_JEOS_Pos                  (6U)\n#define ADC_ISR_JEOS_Msk                  (0x1UL << ADC_ISR_JEOS_Pos)          /*!< 0x00000040 */\n#define ADC_ISR_JEOS                      ADC_ISR_JEOS_Msk                     /*!< ADC End of Injected sequence of Conversions flag */\n#define ADC_ISR_AWD1_Pos                  (7U)\n#define ADC_ISR_AWD1_Msk                  (0x1UL << ADC_ISR_AWD1_Pos)          /*!< 0x00000080 */\n#define ADC_ISR_AWD1                      ADC_ISR_AWD1_Msk                     /*!< ADC Analog watchdog 1 flag */\n#define ADC_ISR_AWD2_Pos                  (8U)\n#define ADC_ISR_AWD2_Msk                  (0x1UL << ADC_ISR_AWD2_Pos)          /*!< 0x00000100 */\n#define ADC_ISR_AWD2                      ADC_ISR_AWD2_Msk                     /*!< ADC Analog watchdog 2 flag */\n#define ADC_ISR_AWD3_Pos                  (9U)\n#define ADC_ISR_AWD3_Msk                  (0x1UL << ADC_ISR_AWD3_Pos)          /*!< 0x00000200 */\n#define ADC_ISR_AWD3                      ADC_ISR_AWD3_Msk                     /*!< ADC Analog watchdog 3 flag */\n#define ADC_ISR_JQOVF_Pos                 (10U)\n#define ADC_ISR_JQOVF_Msk                 (0x1UL << ADC_ISR_JQOVF_Pos)         /*!< 0x00000400 */\n#define ADC_ISR_JQOVF                     ADC_ISR_JQOVF_Msk                    /*!< ADC Injected Context Queue Overflow flag */\n#define ADC_ISR_LDORDY_Pos                (12U)\n#define ADC_ISR_LDORDY_Msk                (0x1UL << ADC_ISR_LDORDY_Pos)        /*!< 0x00001000 */\n#define ADC_ISR_LDORDY                    ADC_ISR_LDORDY_Msk                   /*!< ADC LDO output voltage ready bit */\n\n/********************  Bit definition for ADC_IER register  ********************/\n#define ADC_IER_ADRDYIE_Pos               (0U)\n#define ADC_IER_ADRDYIE_Msk               (0x1UL << ADC_IER_ADRDYIE_Pos)       /*!< 0x00000001 */\n#define ADC_IER_ADRDYIE                   ADC_IER_ADRDYIE_Msk                  /*!< ADC Ready (ADRDY) interrupt source */\n#define ADC_IER_EOSMPIE_Pos               (1U)\n#define ADC_IER_EOSMPIE_Msk               (0x1UL << ADC_IER_EOSMPIE_Pos)       /*!< 0x00000002 */\n#define ADC_IER_EOSMPIE                   ADC_IER_EOSMPIE_Msk                  /*!< ADC End of Sampling interrupt source */\n#define ADC_IER_EOCIE_Pos                 (2U)\n#define ADC_IER_EOCIE_Msk                 (0x1UL << ADC_IER_EOCIE_Pos)         /*!< 0x00000004 */\n#define ADC_IER_EOCIE                     ADC_IER_EOCIE_Msk                    /*!< ADC End of Regular Conversion interrupt source */\n#define ADC_IER_EOSIE_Pos                 (3U)\n#define ADC_IER_EOSIE_Msk                 (0x1UL << ADC_IER_EOSIE_Pos)         /*!< 0x00000008 */\n#define ADC_IER_EOSIE                     ADC_IER_EOSIE_Msk                    /*!< ADC End of Regular sequence of Conversions interrupt source */\n#define ADC_IER_OVRIE_Pos                 (4U)\n#define ADC_IER_OVRIE_Msk                 (0x1UL << ADC_IER_OVRIE_Pos)         /*!< 0x00000010 */\n#define ADC_IER_OVRIE                     ADC_IER_OVRIE_Msk                    /*!< ADC overrun interrupt source */\n#define ADC_IER_JEOCIE_Pos                (5U)\n#define ADC_IER_JEOCIE_Msk                (0x1UL << ADC_IER_JEOCIE_Pos)        /*!< 0x00000020 */\n#define ADC_IER_JEOCIE                    ADC_IER_JEOCIE_Msk                   /*!< ADC End of Injected Conversion interrupt source */\n#define ADC_IER_JEOSIE_Pos                (6U)\n#define ADC_IER_JEOSIE_Msk                (0x1UL << ADC_IER_JEOSIE_Pos)        /*!< 0x00000040 */\n#define ADC_IER_JEOSIE                    ADC_IER_JEOSIE_Msk                   /*!< ADC End of Injected sequence of Conversions interrupt source */\n#define ADC_IER_AWD1IE_Pos                (7U)\n#define ADC_IER_AWD1IE_Msk                (0x1UL << ADC_IER_AWD1IE_Pos)        /*!< 0x00000080 */\n#define ADC_IER_AWD1IE                    ADC_IER_AWD1IE_Msk                   /*!< ADC Analog watchdog 1 interrupt source */\n#define ADC_IER_AWD2IE_Pos                (8U)\n#define ADC_IER_AWD2IE_Msk                (0x1UL << ADC_IER_AWD2IE_Pos)        /*!< 0x00000100 */\n#define ADC_IER_AWD2IE                    ADC_IER_AWD2IE_Msk                   /*!< ADC Analog watchdog 2 interrupt source */\n#define ADC_IER_AWD3IE_Pos                (9U)\n#define ADC_IER_AWD3IE_Msk                (0x1UL << ADC_IER_AWD3IE_Pos)        /*!< 0x00000200 */\n#define ADC_IER_AWD3IE                    ADC_IER_AWD3IE_Msk                   /*!< ADC Analog watchdog 3 interrupt source */\n#define ADC_IER_JQOVFIE_Pos               (10U)\n#define ADC_IER_JQOVFIE_Msk               (0x1UL << ADC_IER_JQOVFIE_Pos)       /*!< 0x00000400 */\n#define ADC_IER_JQOVFIE                   ADC_IER_JQOVFIE_Msk                  /*!< ADC Injected Context Queue Overflow interrupt source */\n\n/********************  Bit definition for ADC_CR register  ********************/\n#define ADC_CR_ADEN_Pos                   (0U)\n#define ADC_CR_ADEN_Msk                   (0x1UL << ADC_CR_ADEN_Pos)           /*!< 0x00000001 */\n#define ADC_CR_ADEN                       ADC_CR_ADEN_Msk                      /*!< ADC Enable control */\n#define ADC_CR_ADDIS_Pos                  (1U)\n#define ADC_CR_ADDIS_Msk                  (0x1UL << ADC_CR_ADDIS_Pos)          /*!< 0x00000002 */\n#define ADC_CR_ADDIS                      ADC_CR_ADDIS_Msk                     /*!< ADC Disable command */\n#define ADC_CR_ADSTART_Pos                (2U)\n#define ADC_CR_ADSTART_Msk                (0x1UL << ADC_CR_ADSTART_Pos)        /*!< 0x00000004 */\n#define ADC_CR_ADSTART                    ADC_CR_ADSTART_Msk                   /*!< ADC Start of Regular conversion */\n#define ADC_CR_JADSTART_Pos               (3U)\n#define ADC_CR_JADSTART_Msk               (0x1UL << ADC_CR_JADSTART_Pos)       /*!< 0x00000008 */\n#define ADC_CR_JADSTART                   ADC_CR_JADSTART_Msk                  /*!< ADC Start of injected conversion */\n#define ADC_CR_ADSTP_Pos                  (4U)\n#define ADC_CR_ADSTP_Msk                  (0x1UL << ADC_CR_ADSTP_Pos)          /*!< 0x00000010 */\n#define ADC_CR_ADSTP                      ADC_CR_ADSTP_Msk                     /*!< ADC Stop of Regular conversion */\n#define ADC_CR_JADSTP_Pos                 (5U)\n#define ADC_CR_JADSTP_Msk                 (0x1UL << ADC_CR_JADSTP_Pos)         /*!< 0x00000020 */\n#define ADC_CR_JADSTP                     ADC_CR_JADSTP_Msk                    /*!< ADC Stop of injected conversion */\n#define ADC_CR_BOOST_Pos                  (8U)\n#define ADC_CR_BOOST_Msk                  (0x3UL << ADC_CR_BOOST_Pos)          /*!< 0x00000300 */\n#define ADC_CR_BOOST                      ADC_CR_BOOST_Msk                     /*!< ADC Boost Mode configuration */\n#define ADC_CR_BOOST_0                    (0x1UL << ADC_CR_BOOST_Pos)           /*!< 0x00000100 */\n#define ADC_CR_BOOST_1                    (0x2UL << ADC_CR_BOOST_Pos)           /*!< 0x00000200 */\n#define ADC_CR_ADCALLIN_Pos               (16U)\n#define ADC_CR_ADCALLIN_Msk               (0x1UL << ADC_CR_ADCALLIN_Pos)       /*!< 0x00010000 */\n#define ADC_CR_ADCALLIN                   ADC_CR_ADCALLIN_Msk                  /*!< ADC Linearity calibration */\n#define ADC_CR_LINCALRDYW1_Pos            (22U)\n#define ADC_CR_LINCALRDYW1_Msk            (0x1UL << ADC_CR_LINCALRDYW1_Pos)    /*!< 0x00400000 */\n#define ADC_CR_LINCALRDYW1                ADC_CR_LINCALRDYW1_Msk               /*!< ADC Linearity calibration ready Word 1 */\n#define ADC_CR_LINCALRDYW2_Pos            (23U)\n#define ADC_CR_LINCALRDYW2_Msk            (0x1UL << ADC_CR_LINCALRDYW2_Pos)    /*!< 0x00800000 */\n#define ADC_CR_LINCALRDYW2                ADC_CR_LINCALRDYW2_Msk               /*!< ADC Linearity calibration ready Word 2 */\n#define ADC_CR_LINCALRDYW3_Pos            (24U)\n#define ADC_CR_LINCALRDYW3_Msk            (0x1UL << ADC_CR_LINCALRDYW3_Pos)    /*!< 0x01000000 */\n#define ADC_CR_LINCALRDYW3                ADC_CR_LINCALRDYW3_Msk               /*!< ADC Linearity calibration ready Word 3 */\n#define ADC_CR_LINCALRDYW4_Pos            (25U)\n#define ADC_CR_LINCALRDYW4_Msk            (0x1UL << ADC_CR_LINCALRDYW4_Pos)    /*!< 0x02000000 */\n#define ADC_CR_LINCALRDYW4                ADC_CR_LINCALRDYW4_Msk               /*!< ADC Linearity calibration ready Word 4 */\n#define ADC_CR_LINCALRDYW5_Pos            (26U)\n#define ADC_CR_LINCALRDYW5_Msk            (0x1UL << ADC_CR_LINCALRDYW5_Pos)    /*!< 0x04000000 */\n#define ADC_CR_LINCALRDYW5                ADC_CR_LINCALRDYW5_Msk               /*!< ADC Linearity calibration ready Word 5 */\n#define ADC_CR_LINCALRDYW6_Pos            (27U)\n#define ADC_CR_LINCALRDYW6_Msk            (0x1UL << ADC_CR_LINCALRDYW6_Pos)    /*!< 0x08000000 */\n#define ADC_CR_LINCALRDYW6                ADC_CR_LINCALRDYW6_Msk               /*!< ADC Linearity calibration ready Word 6 */\n#define ADC_CR_ADVREGEN_Pos               (28U)\n#define ADC_CR_ADVREGEN_Msk               (0x1UL << ADC_CR_ADVREGEN_Pos)       /*!< 0x10000000 */\n#define ADC_CR_ADVREGEN                   ADC_CR_ADVREGEN_Msk                  /*!< ADC Voltage regulator Enable */\n#define ADC_CR_DEEPPWD_Pos                (29U)\n#define ADC_CR_DEEPPWD_Msk                (0x1UL << ADC_CR_DEEPPWD_Pos)        /*!< 0x20000000 */\n#define ADC_CR_DEEPPWD                    ADC_CR_DEEPPWD_Msk                   /*!< ADC Deep power down Enable */\n#define ADC_CR_ADCALDIF_Pos               (30U)\n#define ADC_CR_ADCALDIF_Msk               (0x1UL << ADC_CR_ADCALDIF_Pos)       /*!< 0x40000000 */\n#define ADC_CR_ADCALDIF                   ADC_CR_ADCALDIF_Msk                  /*!< ADC Differential Mode for calibration */\n#define ADC_CR_ADCAL_Pos                  (31U)\n#define ADC_CR_ADCAL_Msk                  (0x1UL << ADC_CR_ADCAL_Pos)          /*!< 0x80000000 */\n#define ADC_CR_ADCAL                      ADC_CR_ADCAL_Msk                     /*!< ADC Calibration */\n\n/********************  Bit definition for ADC_CFGR register  ********************/\n#define ADC_CFGR_DMNGT_Pos                (0U)\n#define ADC_CFGR_DMNGT_Msk                (0x3UL << ADC_CFGR_DMNGT_Pos)        /*!< 0x00000003 */\n#define ADC_CFGR_DMNGT                    ADC_CFGR_DMNGT_Msk                   /*!< ADC Data Management configuration */\n#define ADC_CFGR_DMNGT_0                  (0x1UL << ADC_CFGR_DMNGT_Pos)         /*!< 0x00000001 */\n#define ADC_CFGR_DMNGT_1                  (0x2UL << ADC_CFGR_DMNGT_Pos)         /*!< 0x00000002 */\n\n#define ADC_CFGR_RES_Pos                  (2U)\n#define ADC_CFGR_RES_Msk                  (0x7UL << ADC_CFGR_RES_Pos)          /*!< 0x0000001C */\n#define ADC_CFGR_RES                      ADC_CFGR_RES_Msk                     /*!< ADC Data resolution */\n#define ADC_CFGR_RES_0                    (0x1UL << ADC_CFGR_RES_Pos)           /*!< 0x00000004 */\n#define ADC_CFGR_RES_1                    (0x2UL << ADC_CFGR_RES_Pos)           /*!< 0x00000008 */\n#define ADC_CFGR_RES_2                    (0x4UL << ADC_CFGR_RES_Pos)           /*!< 0x00000010 */\n\n#define ADC_CFGR_EXTSEL_Pos               (5U)\n#define ADC_CFGR_EXTSEL_Msk               (0x1FUL << ADC_CFGR_EXTSEL_Pos)      /*!< 0x000003E0 */\n#define ADC_CFGR_EXTSEL                   ADC_CFGR_EXTSEL_Msk                  /*!< ADC External trigger selection for regular group */\n#define ADC_CFGR_EXTSEL_0                 (0x01UL << ADC_CFGR_EXTSEL_Pos)       /*!< 0x00000020 */\n#define ADC_CFGR_EXTSEL_1                 (0x02UL << ADC_CFGR_EXTSEL_Pos)       /*!< 0x00000040 */\n#define ADC_CFGR_EXTSEL_2                 (0x04UL << ADC_CFGR_EXTSEL_Pos)       /*!< 0x00000080 */\n#define ADC_CFGR_EXTSEL_3                 (0x08UL << ADC_CFGR_EXTSEL_Pos)       /*!< 0x00000100 */\n#define ADC_CFGR_EXTSEL_4                 (0x10UL << ADC_CFGR_EXTSEL_Pos)       /*!< 0x00000200 */\n\n#define ADC_CFGR_EXTEN_Pos                (10U)\n#define ADC_CFGR_EXTEN_Msk                (0x3UL << ADC_CFGR_EXTEN_Pos)        /*!< 0x00000C00 */\n#define ADC_CFGR_EXTEN                    ADC_CFGR_EXTEN_Msk                   /*!< ADC External trigger enable and polarity selection for regular channels */\n#define ADC_CFGR_EXTEN_0                  (0x1UL << ADC_CFGR_EXTEN_Pos)         /*!< 0x00000400 */\n#define ADC_CFGR_EXTEN_1                  (0x2UL << ADC_CFGR_EXTEN_Pos)         /*!< 0x00000800 */\n\n#define ADC_CFGR_OVRMOD_Pos               (12U)\n#define ADC_CFGR_OVRMOD_Msk               (0x1UL << ADC_CFGR_OVRMOD_Pos)       /*!< 0x00001000 */\n#define ADC_CFGR_OVRMOD                   ADC_CFGR_OVRMOD_Msk                  /*!< ADC overrun mode */\n#define ADC_CFGR_CONT_Pos                 (13U)\n#define ADC_CFGR_CONT_Msk                 (0x1UL << ADC_CFGR_CONT_Pos)         /*!< 0x00002000 */\n#define ADC_CFGR_CONT                     ADC_CFGR_CONT_Msk                    /*!< ADC Single/continuous conversion mode for regular conversion */\n#define ADC_CFGR_AUTDLY_Pos               (14U)\n#define ADC_CFGR_AUTDLY_Msk               (0x1UL << ADC_CFGR_AUTDLY_Pos)       /*!< 0x00004000 */\n#define ADC_CFGR_AUTDLY                   ADC_CFGR_AUTDLY_Msk                  /*!< ADC Delayed conversion mode */\n\n#define ADC_CFGR_DISCEN_Pos               (16U)\n#define ADC_CFGR_DISCEN_Msk               (0x1UL << ADC_CFGR_DISCEN_Pos)       /*!< 0x00010000 */\n#define ADC_CFGR_DISCEN                   ADC_CFGR_DISCEN_Msk                  /*!< ADC Discontinuous mode for regular channels */\n\n#define ADC_CFGR_DISCNUM_Pos              (17U)\n#define ADC_CFGR_DISCNUM_Msk              (0x7UL << ADC_CFGR_DISCNUM_Pos)      /*!< 0x000E0000 */\n#define ADC_CFGR_DISCNUM                  ADC_CFGR_DISCNUM_Msk                 /*!< ADC Discontinuous mode channel count */\n#define ADC_CFGR_DISCNUM_0                (0x1UL << ADC_CFGR_DISCNUM_Pos)       /*!< 0x00020000 */\n#define ADC_CFGR_DISCNUM_1                (0x2UL << ADC_CFGR_DISCNUM_Pos)       /*!< 0x00040000 */\n#define ADC_CFGR_DISCNUM_2                (0x4UL << ADC_CFGR_DISCNUM_Pos)       /*!< 0x00080000 */\n\n#define ADC_CFGR_JDISCEN_Pos              (20U)\n#define ADC_CFGR_JDISCEN_Msk              (0x1UL << ADC_CFGR_JDISCEN_Pos)      /*!< 0x00100000 */\n#define ADC_CFGR_JDISCEN                  ADC_CFGR_JDISCEN_Msk                 /*!< ADC Discontinuous mode on injected channels */\n#define ADC_CFGR_JQM_Pos                  (21U)\n#define ADC_CFGR_JQM_Msk                  (0x1UL << ADC_CFGR_JQM_Pos)          /*!< 0x00200000 */\n#define ADC_CFGR_JQM                      ADC_CFGR_JQM_Msk                     /*!< ADC JSQR Queue mode */\n#define ADC_CFGR_AWD1SGL_Pos              (22U)\n#define ADC_CFGR_AWD1SGL_Msk              (0x1UL << ADC_CFGR_AWD1SGL_Pos)      /*!< 0x00400000 */\n#define ADC_CFGR_AWD1SGL                  ADC_CFGR_AWD1SGL_Msk                 /*!< Enable the watchdog 1 on a single channel or on all channels */\n#define ADC_CFGR_AWD1EN_Pos               (23U)\n#define ADC_CFGR_AWD1EN_Msk               (0x1UL << ADC_CFGR_AWD1EN_Pos)       /*!< 0x00800000 */\n#define ADC_CFGR_AWD1EN                   ADC_CFGR_AWD1EN_Msk                  /*!< ADC Analog watchdog 1 enable on regular Channels */\n#define ADC_CFGR_JAWD1EN_Pos              (24U)\n#define ADC_CFGR_JAWD1EN_Msk              (0x1UL << ADC_CFGR_JAWD1EN_Pos)      /*!< 0x01000000 */\n#define ADC_CFGR_JAWD1EN                  ADC_CFGR_JAWD1EN_Msk                 /*!< ADC Analog watchdog 1 enable on injected Channels */\n#define ADC_CFGR_JAUTO_Pos                (25U)\n#define ADC_CFGR_JAUTO_Msk                (0x1UL << ADC_CFGR_JAUTO_Pos)        /*!< 0x02000000 */\n#define ADC_CFGR_JAUTO                    ADC_CFGR_JAUTO_Msk                   /*!< ADC Automatic injected group conversion */\n\n#define ADC_CFGR_AWD1CH_Pos               (26U)\n#define ADC_CFGR_AWD1CH_Msk               (0x1FUL << ADC_CFGR_AWD1CH_Pos)      /*!< 0x7C000000 */\n#define ADC_CFGR_AWD1CH                   ADC_CFGR_AWD1CH_Msk                  /*!< ADC Analog watchdog 1 Channel selection */\n#define ADC_CFGR_AWD1CH_0                 (0x01UL << ADC_CFGR_AWD1CH_Pos)       /*!< 0x04000000 */\n#define ADC_CFGR_AWD1CH_1                 (0x02UL << ADC_CFGR_AWD1CH_Pos)       /*!< 0x08000000 */\n#define ADC_CFGR_AWD1CH_2                 (0x04UL << ADC_CFGR_AWD1CH_Pos)       /*!< 0x10000000 */\n#define ADC_CFGR_AWD1CH_3                 (0x08UL << ADC_CFGR_AWD1CH_Pos)       /*!< 0x20000000 */\n#define ADC_CFGR_AWD1CH_4                 (0x10UL << ADC_CFGR_AWD1CH_Pos)       /*!< 0x40000000 */\n\n#define ADC_CFGR_JQDIS_Pos                (31U)\n#define ADC_CFGR_JQDIS_Msk                (0x1UL << ADC_CFGR_JQDIS_Pos)        /*!< 0x80000000 */\n#define ADC_CFGR_JQDIS                    ADC_CFGR_JQDIS_Msk                   /*!< ADC Injected queue disable */\n\n/********************  Bit definition for ADC_CFGR2 register  ********************/\n#define ADC_CFGR2_ROVSE_Pos               (0U)\n#define ADC_CFGR2_ROVSE_Msk               (0x1UL << ADC_CFGR2_ROVSE_Pos)       /*!< 0x00000001 */\n#define ADC_CFGR2_ROVSE                   ADC_CFGR2_ROVSE_Msk                  /*!< ADC Regular group oversampler enable */\n#define ADC_CFGR2_JOVSE_Pos               (1U)\n#define ADC_CFGR2_JOVSE_Msk               (0x1UL << ADC_CFGR2_JOVSE_Pos)       /*!< 0x00000002 */\n#define ADC_CFGR2_JOVSE                   ADC_CFGR2_JOVSE_Msk                  /*!< ADC Injected group oversampler enable */\n\n#define ADC_CFGR2_OVSS_Pos                (5U)\n#define ADC_CFGR2_OVSS_Msk                (0xFUL << ADC_CFGR2_OVSS_Pos)        /*!< 0x000001E0 */\n#define ADC_CFGR2_OVSS                    ADC_CFGR2_OVSS_Msk                   /*!< ADC Regular Oversampling shift */\n#define ADC_CFGR2_OVSS_0                  (0x1UL << ADC_CFGR2_OVSS_Pos)         /*!< 0x00000020 */\n#define ADC_CFGR2_OVSS_1                  (0x2UL << ADC_CFGR2_OVSS_Pos)         /*!< 0x00000040 */\n#define ADC_CFGR2_OVSS_2                  (0x4UL << ADC_CFGR2_OVSS_Pos)         /*!< 0x00000080 */\n#define ADC_CFGR2_OVSS_3                  (0x8UL << ADC_CFGR2_OVSS_Pos)         /*!< 0x00000100 */\n\n#define ADC_CFGR2_TROVS_Pos               (9U)\n#define ADC_CFGR2_TROVS_Msk               (0x1UL << ADC_CFGR2_TROVS_Pos)       /*!< 0x00000200 */\n#define ADC_CFGR2_TROVS                   ADC_CFGR2_TROVS_Msk                  /*!< ADC Triggered regular Oversampling */\n#define ADC_CFGR2_ROVSM_Pos               (10U)\n#define ADC_CFGR2_ROVSM_Msk               (0x1UL << ADC_CFGR2_ROVSM_Pos)       /*!< 0x00000400 */\n#define ADC_CFGR2_ROVSM                   ADC_CFGR2_ROVSM_Msk                  /*!< ADC Regular oversampling mode */\n\n#define ADC_CFGR2_RSHIFT1_Pos             (11U)\n#define ADC_CFGR2_RSHIFT1_Msk             (0x1UL << ADC_CFGR2_RSHIFT1_Pos)     /*!< 0x00000800 */\n#define ADC_CFGR2_RSHIFT1                 ADC_CFGR2_RSHIFT1_Msk                /*!< ADC Right-shift data after Offset 1 correction */\n#define ADC_CFGR2_RSHIFT2_Pos             (12U)\n#define ADC_CFGR2_RSHIFT2_Msk             (0x1UL << ADC_CFGR2_RSHIFT2_Pos)     /*!< 0x00001000 */\n#define ADC_CFGR2_RSHIFT2                 ADC_CFGR2_RSHIFT2_Msk                /*!< ADC Right-shift data after Offset 2 correction */\n#define ADC_CFGR2_RSHIFT3_Pos             (13U)\n#define ADC_CFGR2_RSHIFT3_Msk             (0x1UL << ADC_CFGR2_RSHIFT3_Pos)     /*!< 0x00002000 */\n#define ADC_CFGR2_RSHIFT3                 ADC_CFGR2_RSHIFT3_Msk                /*!< ADC Right-shift data after Offset 3 correction */\n#define ADC_CFGR2_RSHIFT4_Pos             (14U)\n#define ADC_CFGR2_RSHIFT4_Msk             (0x1UL << ADC_CFGR2_RSHIFT4_Pos)     /*!< 0x00004000 */\n#define ADC_CFGR2_RSHIFT4                 ADC_CFGR2_RSHIFT4_Msk                /*!< ADC Right-shift data after Offset 4 correction */\n\n#define ADC_CFGR2_OVSR_Pos                (16U)\n#define ADC_CFGR2_OVSR_Msk                (0x3FFUL << ADC_CFGR2_OVSR_Pos)      /*!< 0x03FF0000 */\n#define ADC_CFGR2_OVSR                    ADC_CFGR2_OVSR_Msk                   /*!< ADC oversampling Ratio */\n#define ADC_CFGR2_OVSR_0                  (0x001UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00010000 */\n#define ADC_CFGR2_OVSR_1                  (0x002UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00020000 */\n#define ADC_CFGR2_OVSR_2                  (0x004UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00040000 */\n#define ADC_CFGR2_OVSR_3                  (0x008UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00080000 */\n#define ADC_CFGR2_OVSR_4                  (0x010UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00100000 */\n#define ADC_CFGR2_OVSR_5                  (0x020UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00200000 */\n#define ADC_CFGR2_OVSR_6                  (0x040UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00400000 */\n#define ADC_CFGR2_OVSR_7                  (0x080UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x00800000 */\n#define ADC_CFGR2_OVSR_8                  (0x100UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x01000000 */\n#define ADC_CFGR2_OVSR_9                  (0x200UL << ADC_CFGR2_OVSR_Pos)       /*!< 0x02000000 */\n\n#define ADC_CFGR2_LSHIFT_Pos              (28U)\n#define ADC_CFGR2_LSHIFT_Msk              (0xFUL << ADC_CFGR2_LSHIFT_Pos)      /*!< 0xF0000000 */\n#define ADC_CFGR2_LSHIFT                  ADC_CFGR2_LSHIFT_Msk                 /*!< ADC Left shift factor */\n#define ADC_CFGR2_LSHIFT_0                (0x1UL << ADC_CFGR2_LSHIFT_Pos)       /*!< 0x10000000 */\n#define ADC_CFGR2_LSHIFT_1                (0x2UL << ADC_CFGR2_LSHIFT_Pos)       /*!< 0x20000000 */\n#define ADC_CFGR2_LSHIFT_2                (0x4UL << ADC_CFGR2_LSHIFT_Pos)       /*!< 0x40000000 */\n#define ADC_CFGR2_LSHIFT_3                (0x8UL << ADC_CFGR2_LSHIFT_Pos)       /*!< 0x80000000 */\n\n/********************  Bit definition for ADC_SMPR1 register  ********************/\n#define ADC_SMPR1_SMP0_Pos                (0U)\n#define ADC_SMPR1_SMP0_Msk                (0x7UL << ADC_SMPR1_SMP0_Pos)        /*!< 0x00000007 */\n#define ADC_SMPR1_SMP0                    ADC_SMPR1_SMP0_Msk                   /*!< ADC Channel 0 Sampling time selection  */\n#define ADC_SMPR1_SMP0_0                  (0x1UL << ADC_SMPR1_SMP0_Pos)         /*!< 0x00000001 */\n#define ADC_SMPR1_SMP0_1                  (0x2UL << ADC_SMPR1_SMP0_Pos)         /*!< 0x00000002 */\n#define ADC_SMPR1_SMP0_2                  (0x4UL << ADC_SMPR1_SMP0_Pos)         /*!< 0x00000004 */\n\n#define ADC_SMPR1_SMP1_Pos                (3U)\n#define ADC_SMPR1_SMP1_Msk                (0x7UL << ADC_SMPR1_SMP1_Pos)        /*!< 0x00000038 */\n#define ADC_SMPR1_SMP1                    ADC_SMPR1_SMP1_Msk                   /*!< ADC Channel 1 Sampling time selection  */\n#define ADC_SMPR1_SMP1_0                  (0x1UL << ADC_SMPR1_SMP1_Pos)         /*!< 0x00000008 */\n#define ADC_SMPR1_SMP1_1                  (0x2UL << ADC_SMPR1_SMP1_Pos)         /*!< 0x00000010 */\n#define ADC_SMPR1_SMP1_2                  (0x4UL << ADC_SMPR1_SMP1_Pos)         /*!< 0x00000020 */\n\n#define ADC_SMPR1_SMP2_Pos                (6U)\n#define ADC_SMPR1_SMP2_Msk                (0x7UL << ADC_SMPR1_SMP2_Pos)        /*!< 0x000001C0 */\n#define ADC_SMPR1_SMP2                    ADC_SMPR1_SMP2_Msk                   /*!< ADC Channel 2 Sampling time selection  */\n#define ADC_SMPR1_SMP2_0                  (0x1UL << ADC_SMPR1_SMP2_Pos)         /*!< 0x00000040 */\n#define ADC_SMPR1_SMP2_1                  (0x2UL << ADC_SMPR1_SMP2_Pos)         /*!< 0x00000080 */\n#define ADC_SMPR1_SMP2_2                  (0x4UL << ADC_SMPR1_SMP2_Pos)         /*!< 0x00000100 */\n\n#define ADC_SMPR1_SMP3_Pos                (9U)\n#define ADC_SMPR1_SMP3_Msk                (0x7UL << ADC_SMPR1_SMP3_Pos)        /*!< 0x00000E00 */\n#define ADC_SMPR1_SMP3                    ADC_SMPR1_SMP3_Msk                   /*!< ADC Channel 3 Sampling time selection  */\n#define ADC_SMPR1_SMP3_0                  (0x1UL << ADC_SMPR1_SMP3_Pos)         /*!< 0x00000200 */\n#define ADC_SMPR1_SMP3_1                  (0x2UL << ADC_SMPR1_SMP3_Pos)         /*!< 0x00000400 */\n#define ADC_SMPR1_SMP3_2                  (0x4UL << ADC_SMPR1_SMP3_Pos)         /*!< 0x00000800 */\n\n#define ADC_SMPR1_SMP4_Pos                (12U)\n#define ADC_SMPR1_SMP4_Msk                (0x7UL << ADC_SMPR1_SMP4_Pos)        /*!< 0x00007000 */\n#define ADC_SMPR1_SMP4                    ADC_SMPR1_SMP4_Msk                   /*!< ADC Channel 4 Sampling time selection  */\n#define ADC_SMPR1_SMP4_0                  (0x1UL << ADC_SMPR1_SMP4_Pos)         /*!< 0x00001000 */\n#define ADC_SMPR1_SMP4_1                  (0x2UL << ADC_SMPR1_SMP4_Pos)         /*!< 0x00002000 */\n#define ADC_SMPR1_SMP4_2                  (0x4UL << ADC_SMPR1_SMP4_Pos)         /*!< 0x00004000 */\n\n#define ADC_SMPR1_SMP5_Pos                (15U)\n#define ADC_SMPR1_SMP5_Msk                (0x7UL << ADC_SMPR1_SMP5_Pos)        /*!< 0x00038000 */\n#define ADC_SMPR1_SMP5                    ADC_SMPR1_SMP5_Msk                   /*!< ADC Channel 5 Sampling time selection  */\n#define ADC_SMPR1_SMP5_0                  (0x1UL << ADC_SMPR1_SMP5_Pos)         /*!< 0x00008000 */\n#define ADC_SMPR1_SMP5_1                  (0x2UL << ADC_SMPR1_SMP5_Pos)         /*!< 0x00010000 */\n#define ADC_SMPR1_SMP5_2                  (0x4UL << ADC_SMPR1_SMP5_Pos)         /*!< 0x00020000 */\n\n#define ADC_SMPR1_SMP6_Pos                (18U)\n#define ADC_SMPR1_SMP6_Msk                (0x7UL << ADC_SMPR1_SMP6_Pos)        /*!< 0x001C0000 */\n#define ADC_SMPR1_SMP6                    ADC_SMPR1_SMP6_Msk                   /*!< ADC Channel 6 Sampling time selection  */\n#define ADC_SMPR1_SMP6_0                  (0x1UL << ADC_SMPR1_SMP6_Pos)         /*!< 0x00040000 */\n#define ADC_SMPR1_SMP6_1                  (0x2UL << ADC_SMPR1_SMP6_Pos)         /*!< 0x00080000 */\n#define ADC_SMPR1_SMP6_2                  (0x4UL << ADC_SMPR1_SMP6_Pos)         /*!< 0x00100000 */\n\n#define ADC_SMPR1_SMP7_Pos                (21U)\n#define ADC_SMPR1_SMP7_Msk                (0x7UL << ADC_SMPR1_SMP7_Pos)        /*!< 0x00E00000 */\n#define ADC_SMPR1_SMP7                    ADC_SMPR1_SMP7_Msk                   /*!< ADC Channel 7 Sampling time selection  */\n#define ADC_SMPR1_SMP7_0                  (0x1UL << ADC_SMPR1_SMP7_Pos)         /*!< 0x00200000 */\n#define ADC_SMPR1_SMP7_1                  (0x2UL << ADC_SMPR1_SMP7_Pos)         /*!< 0x00400000 */\n#define ADC_SMPR1_SMP7_2                  (0x4UL << ADC_SMPR1_SMP7_Pos)         /*!< 0x00800000 */\n\n#define ADC_SMPR1_SMP8_Pos                (24U)\n#define ADC_SMPR1_SMP8_Msk                (0x7UL << ADC_SMPR1_SMP8_Pos)        /*!< 0x07000000 */\n#define ADC_SMPR1_SMP8                    ADC_SMPR1_SMP8_Msk                   /*!< ADC Channel 8 Sampling time selection  */\n#define ADC_SMPR1_SMP8_0                  (0x1UL << ADC_SMPR1_SMP8_Pos)         /*!< 0x01000000 */\n#define ADC_SMPR1_SMP8_1                  (0x2UL << ADC_SMPR1_SMP8_Pos)         /*!< 0x02000000 */\n#define ADC_SMPR1_SMP8_2                  (0x4UL << ADC_SMPR1_SMP8_Pos)         /*!< 0x04000000 */\n\n#define ADC_SMPR1_SMP9_Pos                (27U)\n#define ADC_SMPR1_SMP9_Msk                (0x7UL << ADC_SMPR1_SMP9_Pos)        /*!< 0x38000000 */\n#define ADC_SMPR1_SMP9                    ADC_SMPR1_SMP9_Msk                   /*!< ADC Channel 9 Sampling time selection  */\n#define ADC_SMPR1_SMP9_0                  (0x1UL << ADC_SMPR1_SMP9_Pos)         /*!< 0x08000000 */\n#define ADC_SMPR1_SMP9_1                  (0x2UL << ADC_SMPR1_SMP9_Pos)         /*!< 0x10000000 */\n#define ADC_SMPR1_SMP9_2                  (0x4UL << ADC_SMPR1_SMP9_Pos)         /*!< 0x20000000 */\n\n/********************  Bit definition for ADC_SMPR2 register  ********************/\n#define ADC_SMPR2_SMP10_Pos               (0U)\n#define ADC_SMPR2_SMP10_Msk               (0x7UL << ADC_SMPR2_SMP10_Pos)       /*!< 0x00000007 */\n#define ADC_SMPR2_SMP10                   ADC_SMPR2_SMP10_Msk                  /*!< ADC Channel 10 Sampling time selection  */\n#define ADC_SMPR2_SMP10_0                 (0x1UL << ADC_SMPR2_SMP10_Pos)        /*!< 0x00000001 */\n#define ADC_SMPR2_SMP10_1                 (0x2UL << ADC_SMPR2_SMP10_Pos)        /*!< 0x00000002 */\n#define ADC_SMPR2_SMP10_2                 (0x4UL << ADC_SMPR2_SMP10_Pos)        /*!< 0x00000004 */\n\n#define ADC_SMPR2_SMP11_Pos               (3U)\n#define ADC_SMPR2_SMP11_Msk               (0x7UL << ADC_SMPR2_SMP11_Pos)       /*!< 0x00000038 */\n#define ADC_SMPR2_SMP11                   ADC_SMPR2_SMP11_Msk                  /*!< ADC Channel 11 Sampling time selection  */\n#define ADC_SMPR2_SMP11_0                 (0x1UL << ADC_SMPR2_SMP11_Pos)        /*!< 0x00000008 */\n#define ADC_SMPR2_SMP11_1                 (0x2UL << ADC_SMPR2_SMP11_Pos)        /*!< 0x00000010 */\n#define ADC_SMPR2_SMP11_2                 (0x4UL << ADC_SMPR2_SMP11_Pos)        /*!< 0x00000020 */\n\n#define ADC_SMPR2_SMP12_Pos               (6U)\n#define ADC_SMPR2_SMP12_Msk               (0x7UL << ADC_SMPR2_SMP12_Pos)       /*!< 0x000001C0 */\n#define ADC_SMPR2_SMP12                   ADC_SMPR2_SMP12_Msk                  /*!< ADC Channel 12 Sampling time selection  */\n#define ADC_SMPR2_SMP12_0                 (0x1UL << ADC_SMPR2_SMP12_Pos)        /*!< 0x00000040 */\n#define ADC_SMPR2_SMP12_1                 (0x2UL << ADC_SMPR2_SMP12_Pos)        /*!< 0x00000080 */\n#define ADC_SMPR2_SMP12_2                 (0x4UL << ADC_SMPR2_SMP12_Pos)        /*!< 0x00000100 */\n\n#define ADC_SMPR2_SMP13_Pos               (9U)\n#define ADC_SMPR2_SMP13_Msk               (0x7UL << ADC_SMPR2_SMP13_Pos)       /*!< 0x00000E00 */\n#define ADC_SMPR2_SMP13                   ADC_SMPR2_SMP13_Msk                  /*!< ADC Channel 13 Sampling time selection  */\n#define ADC_SMPR2_SMP13_0                 (0x1UL << ADC_SMPR2_SMP13_Pos)        /*!< 0x00000200 */\n#define ADC_SMPR2_SMP13_1                 (0x2UL << ADC_SMPR2_SMP13_Pos)        /*!< 0x00000400 */\n#define ADC_SMPR2_SMP13_2                 (0x4UL << ADC_SMPR2_SMP13_Pos)        /*!< 0x00000800 */\n\n#define ADC_SMPR2_SMP14_Pos               (12U)\n#define ADC_SMPR2_SMP14_Msk               (0x7UL << ADC_SMPR2_SMP14_Pos)       /*!< 0x00007000 */\n#define ADC_SMPR2_SMP14                   ADC_SMPR2_SMP14_Msk                  /*!< ADC Channel 14 Sampling time selection  */\n#define ADC_SMPR2_SMP14_0                 (0x1UL << ADC_SMPR2_SMP14_Pos)        /*!< 0x00001000 */\n#define ADC_SMPR2_SMP14_1                 (0x2UL << ADC_SMPR2_SMP14_Pos)        /*!< 0x00002000 */\n#define ADC_SMPR2_SMP14_2                 (0x4UL << ADC_SMPR2_SMP14_Pos)        /*!< 0x00004000 */\n\n#define ADC_SMPR2_SMP15_Pos               (15U)\n#define ADC_SMPR2_SMP15_Msk               (0x7UL << ADC_SMPR2_SMP15_Pos)       /*!< 0x00038000 */\n#define ADC_SMPR2_SMP15                   ADC_SMPR2_SMP15_Msk                  /*!< ADC Channel 15 Sampling time selection  */\n#define ADC_SMPR2_SMP15_0                 (0x1UL << ADC_SMPR2_SMP15_Pos)        /*!< 0x00008000 */\n#define ADC_SMPR2_SMP15_1                 (0x2UL << ADC_SMPR2_SMP15_Pos)        /*!< 0x00010000 */\n#define ADC_SMPR2_SMP15_2                 (0x4UL << ADC_SMPR2_SMP15_Pos)        /*!< 0x00020000 */\n\n#define ADC_SMPR2_SMP16_Pos               (18U)\n#define ADC_SMPR2_SMP16_Msk               (0x7UL << ADC_SMPR2_SMP16_Pos)       /*!< 0x001C0000 */\n#define ADC_SMPR2_SMP16                   ADC_SMPR2_SMP16_Msk                  /*!< ADC Channel 16 Sampling time selection  */\n#define ADC_SMPR2_SMP16_0                 (0x1UL << ADC_SMPR2_SMP16_Pos)        /*!< 0x00040000 */\n#define ADC_SMPR2_SMP16_1                 (0x2UL << ADC_SMPR2_SMP16_Pos)        /*!< 0x00080000 */\n#define ADC_SMPR2_SMP16_2                 (0x4UL << ADC_SMPR2_SMP16_Pos)        /*!< 0x00100000 */\n\n#define ADC_SMPR2_SMP17_Pos               (21U)\n#define ADC_SMPR2_SMP17_Msk               (0x7UL << ADC_SMPR2_SMP17_Pos)       /*!< 0x00E00000 */\n#define ADC_SMPR2_SMP17                   ADC_SMPR2_SMP17_Msk                  /*!< ADC Channel 17 Sampling time selection  */\n#define ADC_SMPR2_SMP17_0                 (0x1UL << ADC_SMPR2_SMP17_Pos)        /*!< 0x00200000 */\n#define ADC_SMPR2_SMP17_1                 (0x2UL << ADC_SMPR2_SMP17_Pos)        /*!< 0x00400000 */\n#define ADC_SMPR2_SMP17_2                 (0x4UL << ADC_SMPR2_SMP17_Pos)        /*!< 0x00800000 */\n\n#define ADC_SMPR2_SMP18_Pos               (24U)\n#define ADC_SMPR2_SMP18_Msk               (0x7UL << ADC_SMPR2_SMP18_Pos)       /*!< 0x07000000 */\n#define ADC_SMPR2_SMP18                   ADC_SMPR2_SMP18_Msk                  /*!< ADC Channel 18 Sampling time selection  */\n#define ADC_SMPR2_SMP18_0                 (0x1UL << ADC_SMPR2_SMP18_Pos)        /*!< 0x01000000 */\n#define ADC_SMPR2_SMP18_1                 (0x2UL << ADC_SMPR2_SMP18_Pos)        /*!< 0x02000000 */\n#define ADC_SMPR2_SMP18_2                 (0x4UL << ADC_SMPR2_SMP18_Pos)        /*!< 0x04000000 */\n\n#define ADC_SMPR2_SMP19_Pos               (27U)\n#define ADC_SMPR2_SMP19_Msk               (0x7UL << ADC_SMPR2_SMP19_Pos)       /*!< 0x38000000 */\n#define ADC_SMPR2_SMP19                   ADC_SMPR2_SMP19_Msk                  /*!< ADC Channel 19 Sampling time selection  */\n#define ADC_SMPR2_SMP19_0                 (0x1UL << ADC_SMPR2_SMP19_Pos)        /*!< 0x08000000 */\n#define ADC_SMPR2_SMP19_1                 (0x2UL << ADC_SMPR2_SMP19_Pos)        /*!< 0x10000000 */\n#define ADC_SMPR2_SMP19_2                 (0x4UL << ADC_SMPR2_SMP19_Pos)        /*!< 0x20000000 */\n\n/********************  Bit definition for ADC_PCSEL register  ********************/\n#define ADC_PCSEL_PCSEL_Pos               (0U)\n#define ADC_PCSEL_PCSEL_Msk               (0xFFFFFUL << ADC_PCSEL_PCSEL_Pos)   /*!< 0x000FFFFF */\n#define ADC_PCSEL_PCSEL                   ADC_PCSEL_PCSEL_Msk                  /*!< ADC pre channel selection */\n#define ADC_PCSEL_PCSEL_0                 (0x00001UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000001 */\n#define ADC_PCSEL_PCSEL_1                 (0x00002UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000002 */\n#define ADC_PCSEL_PCSEL_2                 (0x00004UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000004 */\n#define ADC_PCSEL_PCSEL_3                 (0x00008UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000008 */\n#define ADC_PCSEL_PCSEL_4                 (0x00010UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000010 */\n#define ADC_PCSEL_PCSEL_5                 (0x00020UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000020 */\n#define ADC_PCSEL_PCSEL_6                 (0x00040UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000040 */\n#define ADC_PCSEL_PCSEL_7                 (0x00080UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000080 */\n#define ADC_PCSEL_PCSEL_8                 (0x00100UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000100 */\n#define ADC_PCSEL_PCSEL_9                 (0x00200UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000200 */\n#define ADC_PCSEL_PCSEL_10                (0x00400UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000400 */\n#define ADC_PCSEL_PCSEL_11                (0x00800UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00000800 */\n#define ADC_PCSEL_PCSEL_12                (0x01000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00001000 */\n#define ADC_PCSEL_PCSEL_13                (0x02000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00002000 */\n#define ADC_PCSEL_PCSEL_14                (0x04000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00004000 */\n#define ADC_PCSEL_PCSEL_15                (0x08000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00008000 */\n#define ADC_PCSEL_PCSEL_16                (0x10000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00010000 */\n#define ADC_PCSEL_PCSEL_17                (0x20000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00020000 */\n#define ADC_PCSEL_PCSEL_18                (0x40000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00040000 */\n#define ADC_PCSEL_PCSEL_19                (0x80000UL << ADC_PCSEL_PCSEL_Pos)    /*!< 0x00080000 */\n\n/*****************  Bit definition for ADC_LTR1, 2, 3 registers *****************/\n#define ADC_LTR_LT_Pos                    (0U)\n#define ADC_LTR_LT_Msk                    (0x3FFFFFFUL << ADC_LTR_LT_Pos)      /*!< 0x03FFFFFF */\n#define ADC_LTR_LT                        ADC_LTR_LT_Msk                       /*!< ADC Analog watchdog 1, 2 and 3 lower threshold */\n\n/*****************  Bit definition for ADC_HTR1, 2, 3 registers  ****************/\n#define ADC_HTR_HT_Pos                    (0U)\n#define ADC_HTR_HT_Msk                    (0x3FFFFFFUL << ADC_HTR_HT_Pos)      /*!< 0x03FFFFFF */\n#define ADC_HTR_HT                        ADC_HTR_HT_Msk                       /*!< ADC Analog watchdog 1,2 and 3 higher threshold */\n\n\n/********************  Bit definition for ADC_SQR1 register  ********************/\n#define ADC_SQR1_L_Pos                    (0U)\n#define ADC_SQR1_L_Msk                    (0xFUL << ADC_SQR1_L_Pos)            /*!< 0x0000000F */\n#define ADC_SQR1_L                        ADC_SQR1_L_Msk                       /*!< ADC regular channel sequence length */\n#define ADC_SQR1_L_0                      (0x1UL << ADC_SQR1_L_Pos)             /*!< 0x00000001 */\n#define ADC_SQR1_L_1                      (0x2UL << ADC_SQR1_L_Pos)             /*!< 0x00000002 */\n#define ADC_SQR1_L_2                      (0x4UL << ADC_SQR1_L_Pos)             /*!< 0x00000004 */\n#define ADC_SQR1_L_3                      (0x8UL << ADC_SQR1_L_Pos)             /*!< 0x00000008 */\n\n#define ADC_SQR1_SQ1_Pos                  (6U)\n#define ADC_SQR1_SQ1_Msk                  (0x1FUL << ADC_SQR1_SQ1_Pos)         /*!< 0x000007C0 */\n#define ADC_SQR1_SQ1                      ADC_SQR1_SQ1_Msk                     /*!< ADC 1st conversion in regular sequence */\n#define ADC_SQR1_SQ1_0                    (0x01UL << ADC_SQR1_SQ1_Pos)          /*!< 0x00000040 */\n#define ADC_SQR1_SQ1_1                    (0x02UL << ADC_SQR1_SQ1_Pos)          /*!< 0x00000080 */\n#define ADC_SQR1_SQ1_2                    (0x04UL << ADC_SQR1_SQ1_Pos)          /*!< 0x00000100 */\n#define ADC_SQR1_SQ1_3                    (0x08UL << ADC_SQR1_SQ1_Pos)          /*!< 0x00000200 */\n#define ADC_SQR1_SQ1_4                    (0x10UL << ADC_SQR1_SQ1_Pos)          /*!< 0x00000400 */\n\n#define ADC_SQR1_SQ2_Pos                  (12U)\n#define ADC_SQR1_SQ2_Msk                  (0x1FUL << ADC_SQR1_SQ2_Pos)         /*!< 0x0001F000 */\n#define ADC_SQR1_SQ2                      ADC_SQR1_SQ2_Msk                     /*!< ADC 2nd conversion in regular sequence */\n#define ADC_SQR1_SQ2_0                    (0x01UL << ADC_SQR1_SQ2_Pos)          /*!< 0x00001000 */\n#define ADC_SQR1_SQ2_1                    (0x02UL << ADC_SQR1_SQ2_Pos)          /*!< 0x00002000 */\n#define ADC_SQR1_SQ2_2                    (0x04UL << ADC_SQR1_SQ2_Pos)          /*!< 0x00004000 */\n#define ADC_SQR1_SQ2_3                    (0x08UL << ADC_SQR1_SQ2_Pos)          /*!< 0x00008000 */\n#define ADC_SQR1_SQ2_4                    (0x10UL << ADC_SQR1_SQ2_Pos)          /*!< 0x00010000 */\n\n#define ADC_SQR1_SQ3_Pos                  (18U)\n#define ADC_SQR1_SQ3_Msk                  (0x1FUL << ADC_SQR1_SQ3_Pos)         /*!< 0x007C0000 */\n#define ADC_SQR1_SQ3                      ADC_SQR1_SQ3_Msk                     /*!< ADC 3rd conversion in regular sequence */\n#define ADC_SQR1_SQ3_0                    (0x01UL << ADC_SQR1_SQ3_Pos)          /*!< 0x00040000 */\n#define ADC_SQR1_SQ3_1                    (0x02UL << ADC_SQR1_SQ3_Pos)          /*!< 0x00080000 */\n#define ADC_SQR1_SQ3_2                    (0x04UL << ADC_SQR1_SQ3_Pos)          /*!< 0x00100000 */\n#define ADC_SQR1_SQ3_3                    (0x08UL << ADC_SQR1_SQ3_Pos)          /*!< 0x00200000 */\n#define ADC_SQR1_SQ3_4                    (0x10UL << ADC_SQR1_SQ3_Pos)          /*!< 0x00400000 */\n\n#define ADC_SQR1_SQ4_Pos                  (24U)\n#define ADC_SQR1_SQ4_Msk                  (0x1FUL << ADC_SQR1_SQ4_Pos)         /*!< 0x1F000000 */\n#define ADC_SQR1_SQ4                      ADC_SQR1_SQ4_Msk                     /*!< ADC 4th conversion in regular sequence */\n#define ADC_SQR1_SQ4_0                    (0x01UL << ADC_SQR1_SQ4_Pos)          /*!< 0x01000000 */\n#define ADC_SQR1_SQ4_1                    (0x02UL << ADC_SQR1_SQ4_Pos)          /*!< 0x02000000 */\n#define ADC_SQR1_SQ4_2                    (0x04UL << ADC_SQR1_SQ4_Pos)          /*!< 0x04000000 */\n#define ADC_SQR1_SQ4_3                    (0x08UL << ADC_SQR1_SQ4_Pos)          /*!< 0x08000000 */\n#define ADC_SQR1_SQ4_4                    (0x10UL << ADC_SQR1_SQ4_Pos)          /*!< 0x10000000 */\n\n/********************  Bit definition for ADC_SQR2 register  ********************/\n#define ADC_SQR2_SQ5_Pos                  (0U)\n#define ADC_SQR2_SQ5_Msk                  (0x1FUL << ADC_SQR2_SQ5_Pos)         /*!< 0x0000001F */\n#define ADC_SQR2_SQ5                      ADC_SQR2_SQ5_Msk                     /*!< ADC 5th conversion in regular sequence */\n#define ADC_SQR2_SQ5_0                    (0x01UL << ADC_SQR2_SQ5_Pos)          /*!< 0x00000001 */\n#define ADC_SQR2_SQ5_1                    (0x02UL << ADC_SQR2_SQ5_Pos)          /*!< 0x00000002 */\n#define ADC_SQR2_SQ5_2                    (0x04UL << ADC_SQR2_SQ5_Pos)          /*!< 0x00000004 */\n#define ADC_SQR2_SQ5_3                    (0x08UL << ADC_SQR2_SQ5_Pos)          /*!< 0x00000008 */\n#define ADC_SQR2_SQ5_4                    (0x10UL << ADC_SQR2_SQ5_Pos)          /*!< 0x00000010 */\n\n#define ADC_SQR2_SQ6_Pos                  (6U)\n#define ADC_SQR2_SQ6_Msk                  (0x1FUL << ADC_SQR2_SQ6_Pos)         /*!< 0x000007C0 */\n#define ADC_SQR2_SQ6                      ADC_SQR2_SQ6_Msk                     /*!< ADC 6th conversion in regular sequence */\n#define ADC_SQR2_SQ6_0                    (0x01UL << ADC_SQR2_SQ6_Pos)          /*!< 0x00000040 */\n#define ADC_SQR2_SQ6_1                    (0x02UL << ADC_SQR2_SQ6_Pos)          /*!< 0x00000080 */\n#define ADC_SQR2_SQ6_2                    (0x04UL << ADC_SQR2_SQ6_Pos)          /*!< 0x00000100 */\n#define ADC_SQR2_SQ6_3                    (0x08UL << ADC_SQR2_SQ6_Pos)          /*!< 0x00000200 */\n#define ADC_SQR2_SQ6_4                    (0x10UL << ADC_SQR2_SQ6_Pos)          /*!< 0x00000400 */\n\n#define ADC_SQR2_SQ7_Pos                  (12U)\n#define ADC_SQR2_SQ7_Msk                  (0x1FUL << ADC_SQR2_SQ7_Pos)         /*!< 0x0001F000 */\n#define ADC_SQR2_SQ7                      ADC_SQR2_SQ7_Msk                     /*!< ADC 7th conversion in regular sequence */\n#define ADC_SQR2_SQ7_0                    (0x01UL << ADC_SQR2_SQ7_Pos)          /*!< 0x00001000 */\n#define ADC_SQR2_SQ7_1                    (0x02UL << ADC_SQR2_SQ7_Pos)          /*!< 0x00002000 */\n#define ADC_SQR2_SQ7_2                    (0x04UL << ADC_SQR2_SQ7_Pos)          /*!< 0x00004000 */\n#define ADC_SQR2_SQ7_3                    (0x08UL << ADC_SQR2_SQ7_Pos)          /*!< 0x00008000 */\n#define ADC_SQR2_SQ7_4                    (0x10UL << ADC_SQR2_SQ7_Pos)          /*!< 0x00010000 */\n\n#define ADC_SQR2_SQ8_Pos                  (18U)\n#define ADC_SQR2_SQ8_Msk                  (0x1FUL << ADC_SQR2_SQ8_Pos)         /*!< 0x007C0000 */\n#define ADC_SQR2_SQ8                      ADC_SQR2_SQ8_Msk                     /*!< ADC 8th conversion in regular sequence */\n#define ADC_SQR2_SQ8_0                    (0x01UL << ADC_SQR2_SQ8_Pos)          /*!< 0x00040000 */\n#define ADC_SQR2_SQ8_1                    (0x02UL << ADC_SQR2_SQ8_Pos)          /*!< 0x00080000 */\n#define ADC_SQR2_SQ8_2                    (0x04UL << ADC_SQR2_SQ8_Pos)          /*!< 0x00100000 */\n#define ADC_SQR2_SQ8_3                    (0x08UL << ADC_SQR2_SQ8_Pos)          /*!< 0x00200000 */\n#define ADC_SQR2_SQ8_4                    (0x10UL << ADC_SQR2_SQ8_Pos)          /*!< 0x00400000 */\n\n#define ADC_SQR2_SQ9_Pos                  (24U)\n#define ADC_SQR2_SQ9_Msk                  (0x1FUL << ADC_SQR2_SQ9_Pos)         /*!< 0x1F000000 */\n#define ADC_SQR2_SQ9                      ADC_SQR2_SQ9_Msk                     /*!< ADC 9th conversion in regular sequence */\n#define ADC_SQR2_SQ9_0                    (0x01UL << ADC_SQR2_SQ9_Pos)          /*!< 0x01000000 */\n#define ADC_SQR2_SQ9_1                    (0x02UL << ADC_SQR2_SQ9_Pos)          /*!< 0x02000000 */\n#define ADC_SQR2_SQ9_2                    (0x04UL << ADC_SQR2_SQ9_Pos)          /*!< 0x04000000 */\n#define ADC_SQR2_SQ9_3                    (0x08UL << ADC_SQR2_SQ9_Pos)          /*!< 0x08000000 */\n#define ADC_SQR2_SQ9_4                    (0x10UL << ADC_SQR2_SQ9_Pos)          /*!< 0x10000000 */\n\n/********************  Bit definition for ADC_SQR3 register  ********************/\n#define ADC_SQR3_SQ10_Pos                 (0U)\n#define ADC_SQR3_SQ10_Msk                 (0x1FUL << ADC_SQR3_SQ10_Pos)        /*!< 0x0000001F */\n#define ADC_SQR3_SQ10                     ADC_SQR3_SQ10_Msk                    /*!< ADC 10th conversion in regular sequence */\n#define ADC_SQR3_SQ10_0                   (0x01UL << ADC_SQR3_SQ10_Pos)         /*!< 0x00000001 */\n#define ADC_SQR3_SQ10_1                   (0x02UL << ADC_SQR3_SQ10_Pos)         /*!< 0x00000002 */\n#define ADC_SQR3_SQ10_2                   (0x04UL << ADC_SQR3_SQ10_Pos)         /*!< 0x00000004 */\n#define ADC_SQR3_SQ10_3                   (0x08UL << ADC_SQR3_SQ10_Pos)         /*!< 0x00000008 */\n#define ADC_SQR3_SQ10_4                   (0x10UL << ADC_SQR3_SQ10_Pos)         /*!< 0x00000010 */\n\n#define ADC_SQR3_SQ11_Pos                 (6U)\n#define ADC_SQR3_SQ11_Msk                 (0x1FUL << ADC_SQR3_SQ11_Pos)        /*!< 0x000007C0 */\n#define ADC_SQR3_SQ11                     ADC_SQR3_SQ11_Msk                    /*!< ADC 11th conversion in regular sequence */\n#define ADC_SQR3_SQ11_0                   (0x01UL << ADC_SQR3_SQ11_Pos)         /*!< 0x00000040 */\n#define ADC_SQR3_SQ11_1                   (0x02UL << ADC_SQR3_SQ11_Pos)         /*!< 0x00000080 */\n#define ADC_SQR3_SQ11_2                   (0x04UL << ADC_SQR3_SQ11_Pos)         /*!< 0x00000100 */\n#define ADC_SQR3_SQ11_3                   (0x08UL << ADC_SQR3_SQ11_Pos)         /*!< 0x00000200 */\n#define ADC_SQR3_SQ11_4                   (0x10UL << ADC_SQR3_SQ11_Pos)         /*!< 0x00000400 */\n\n#define ADC_SQR3_SQ12_Pos                 (12U)\n#define ADC_SQR3_SQ12_Msk                 (0x1FUL << ADC_SQR3_SQ12_Pos)        /*!< 0x0001F000 */\n#define ADC_SQR3_SQ12                     ADC_SQR3_SQ12_Msk                    /*!< ADC 12th conversion in regular sequence */\n#define ADC_SQR3_SQ12_0                   (0x01UL << ADC_SQR3_SQ12_Pos)         /*!< 0x00001000 */\n#define ADC_SQR3_SQ12_1                   (0x02UL << ADC_SQR3_SQ12_Pos)         /*!< 0x00002000 */\n#define ADC_SQR3_SQ12_2                   (0x04UL << ADC_SQR3_SQ12_Pos)         /*!< 0x00004000 */\n#define ADC_SQR3_SQ12_3                   (0x08UL << ADC_SQR3_SQ12_Pos)         /*!< 0x00008000 */\n#define ADC_SQR3_SQ12_4                   (0x10UL << ADC_SQR3_SQ12_Pos)         /*!< 0x00010000 */\n\n#define ADC_SQR3_SQ13_Pos                 (18U)\n#define ADC_SQR3_SQ13_Msk                 (0x1FUL << ADC_SQR3_SQ13_Pos)        /*!< 0x007C0000 */\n#define ADC_SQR3_SQ13                     ADC_SQR3_SQ13_Msk                    /*!< ADC 13th conversion in regular sequence */\n#define ADC_SQR3_SQ13_0                   (0x01UL << ADC_SQR3_SQ13_Pos)         /*!< 0x00040000 */\n#define ADC_SQR3_SQ13_1                   (0x02UL << ADC_SQR3_SQ13_Pos)         /*!< 0x00080000 */\n#define ADC_SQR3_SQ13_2                   (0x04UL << ADC_SQR3_SQ13_Pos)         /*!< 0x00100000 */\n#define ADC_SQR3_SQ13_3                   (0x08UL << ADC_SQR3_SQ13_Pos)         /*!< 0x00200000 */\n#define ADC_SQR3_SQ13_4                   (0x10UL << ADC_SQR3_SQ13_Pos)         /*!< 0x00400000 */\n\n#define ADC_SQR3_SQ14_Pos                 (24U)\n#define ADC_SQR3_SQ14_Msk                 (0x1FUL << ADC_SQR3_SQ14_Pos)        /*!< 0x1F000000 */\n#define ADC_SQR3_SQ14                     ADC_SQR3_SQ14_Msk                    /*!< ADC 14th conversion in regular sequence */\n#define ADC_SQR3_SQ14_0                   (0x01UL << ADC_SQR3_SQ14_Pos)         /*!< 0x01000000 */\n#define ADC_SQR3_SQ14_1                   (0x02UL << ADC_SQR3_SQ14_Pos)         /*!< 0x02000000 */\n#define ADC_SQR3_SQ14_2                   (0x04UL << ADC_SQR3_SQ14_Pos)         /*!< 0x04000000 */\n#define ADC_SQR3_SQ14_3                   (0x08UL << ADC_SQR3_SQ14_Pos)         /*!< 0x08000000 */\n#define ADC_SQR3_SQ14_4                   (0x10UL << ADC_SQR3_SQ14_Pos)         /*!< 0x10000000 */\n\n/********************  Bit definition for ADC_SQR4 register  ********************/\n#define ADC_SQR4_SQ15_Pos                 (0U)\n#define ADC_SQR4_SQ15_Msk                 (0x1FUL << ADC_SQR4_SQ15_Pos)        /*!< 0x0000001F */\n#define ADC_SQR4_SQ15                     ADC_SQR4_SQ15_Msk                    /*!< ADC 15th conversion in regular sequence */\n#define ADC_SQR4_SQ15_0                   (0x01UL << ADC_SQR4_SQ15_Pos)         /*!< 0x00000001 */\n#define ADC_SQR4_SQ15_1                   (0x02UL << ADC_SQR4_SQ15_Pos)         /*!< 0x00000002 */\n#define ADC_SQR4_SQ15_2                   (0x04UL << ADC_SQR4_SQ15_Pos)         /*!< 0x00000004 */\n#define ADC_SQR4_SQ15_3                   (0x08UL << ADC_SQR4_SQ15_Pos)         /*!< 0x00000008 */\n#define ADC_SQR4_SQ15_4                   (0x10UL << ADC_SQR4_SQ15_Pos)         /*!< 0x00000010 */\n\n#define ADC_SQR4_SQ16_Pos                 (6U)\n#define ADC_SQR4_SQ16_Msk                 (0x1FUL << ADC_SQR4_SQ16_Pos)        /*!< 0x000007C0 */\n#define ADC_SQR4_SQ16                     ADC_SQR4_SQ16_Msk                    /*!< ADC 16th conversion in regular sequence */\n#define ADC_SQR4_SQ16_0                   (0x01UL << ADC_SQR4_SQ16_Pos)         /*!< 0x00000040 */\n#define ADC_SQR4_SQ16_1                   (0x02UL << ADC_SQR4_SQ16_Pos)         /*!< 0x00000080 */\n#define ADC_SQR4_SQ16_2                   (0x04UL << ADC_SQR4_SQ16_Pos)         /*!< 0x00000100 */\n#define ADC_SQR4_SQ16_3                   (0x08UL << ADC_SQR4_SQ16_Pos)         /*!< 0x00000200 */\n#define ADC_SQR4_SQ16_4                   (0x10UL << ADC_SQR4_SQ16_Pos)         /*!< 0x00000400 */\n/********************  Bit definition for ADC_DR register  ********************/\n#define ADC_DR_RDATA_Pos                  (0U)\n#define ADC_DR_RDATA_Msk                  (0xFFFFFFFFUL << ADC_DR_RDATA_Pos)   /*!< 0xFFFFFFFF */\n#define ADC_DR_RDATA                      ADC_DR_RDATA_Msk                     /*!< ADC regular Data converted */\n\n/********************  Bit definition for ADC_JSQR register  ********************/\n#define ADC_JSQR_JL_Pos                   (0U)\n#define ADC_JSQR_JL_Msk                   (0x3UL << ADC_JSQR_JL_Pos)           /*!< 0x00000003 */\n#define ADC_JSQR_JL                       ADC_JSQR_JL_Msk                      /*!< ADC injected channel sequence length */\n#define ADC_JSQR_JL_0                     (0x1UL << ADC_JSQR_JL_Pos)           /*!< 0x00000001 */\n#define ADC_JSQR_JL_1                     (0x2UL << ADC_JSQR_JL_Pos)           /*!< 0x00000002 */\n\n#define ADC_JSQR_JEXTSEL_Pos              (2U)\n#define ADC_JSQR_JEXTSEL_Msk              (0x1FUL << ADC_JSQR_JEXTSEL_Pos)     /*!< 0x0000007C */\n#define ADC_JSQR_JEXTSEL                  ADC_JSQR_JEXTSEL_Msk                 /*!< ADC external trigger selection for injected group */\n#define ADC_JSQR_JEXTSEL_0                (0x01UL << ADC_JSQR_JEXTSEL_Pos)     /*!< 0x00000004 */\n#define ADC_JSQR_JEXTSEL_1                (0x02UL << ADC_JSQR_JEXTSEL_Pos)     /*!< 0x00000008 */\n#define ADC_JSQR_JEXTSEL_2                (0x04UL << ADC_JSQR_JEXTSEL_Pos)     /*!< 0x00000010 */\n#define ADC_JSQR_JEXTSEL_3                (0x08UL << ADC_JSQR_JEXTSEL_Pos)     /*!< 0x00000020 */\n#define ADC_JSQR_JEXTSEL_4                (0x10UL << ADC_JSQR_JEXTSEL_Pos)     /*!< 0x00000040 */\n\n#define ADC_JSQR_JEXTEN_Pos               (7U)\n#define ADC_JSQR_JEXTEN_Msk               (0x3UL << ADC_JSQR_JEXTEN_Pos)       /*!< 0x00000180 */\n#define ADC_JSQR_JEXTEN                   ADC_JSQR_JEXTEN_Msk                  /*!< ADC external trigger enable and polarity selection for injected channels */\n#define ADC_JSQR_JEXTEN_0                 (0x1UL << ADC_JSQR_JEXTEN_Pos)       /*!< 0x00000080 */\n#define ADC_JSQR_JEXTEN_1                 (0x2UL << ADC_JSQR_JEXTEN_Pos)       /*!< 0x00000100 */\n\n#define ADC_JSQR_JSQ1_Pos                 (9U)\n#define ADC_JSQR_JSQ1_Msk                 (0x1FUL << ADC_JSQR_JSQ1_Pos)        /*!< 0x00003E00 */\n#define ADC_JSQR_JSQ1                     ADC_JSQR_JSQ1_Msk                    /*!< ADC 1st conversion in injected sequence */\n#define ADC_JSQR_JSQ1_0                   (0x01UL << ADC_JSQR_JSQ1_Pos)        /*!< 0x00000200 */\n#define ADC_JSQR_JSQ1_1                   (0x02UL << ADC_JSQR_JSQ1_Pos)        /*!< 0x00000400 */\n#define ADC_JSQR_JSQ1_2                   (0x04UL << ADC_JSQR_JSQ1_Pos)        /*!< 0x00000800 */\n#define ADC_JSQR_JSQ1_3                   (0x08UL << ADC_JSQR_JSQ1_Pos)        /*!< 0x00001000 */\n#define ADC_JSQR_JSQ1_4                   (0x10UL << ADC_JSQR_JSQ1_Pos)        /*!< 0x00002000 */\n\n#define ADC_JSQR_JSQ2_Pos                 (15U)\n#define ADC_JSQR_JSQ2_Msk                 (0x1FUL << ADC_JSQR_JSQ2_Pos)        /*!< 0x000F8000 */\n#define ADC_JSQR_JSQ2                     ADC_JSQR_JSQ2_Msk                    /*!< ADC 2nd conversion in injected sequence */\n#define ADC_JSQR_JSQ2_0                   (0x01UL << ADC_JSQR_JSQ2_Pos)        /*!< 0x00008000 */\n#define ADC_JSQR_JSQ2_1                   (0x02UL << ADC_JSQR_JSQ2_Pos)        /*!< 0x00010000 */\n#define ADC_JSQR_JSQ2_2                   (0x04UL << ADC_JSQR_JSQ2_Pos)        /*!< 0x00020000 */\n#define ADC_JSQR_JSQ2_3                   (0x08UL << ADC_JSQR_JSQ2_Pos)        /*!< 0x00040000 */\n#define ADC_JSQR_JSQ2_4                   (0x10UL << ADC_JSQR_JSQ2_Pos)        /*!< 0x00080000 */\n\n#define ADC_JSQR_JSQ3_Pos                 (21U)\n#define ADC_JSQR_JSQ3_Msk                 (0x1FUL << ADC_JSQR_JSQ3_Pos)        /*!< 0x03E00000 */\n#define ADC_JSQR_JSQ3                     ADC_JSQR_JSQ3_Msk                    /*!< ADC 3rd conversion in injected sequence */\n#define ADC_JSQR_JSQ3_0                   (0x01UL << ADC_JSQR_JSQ3_Pos)        /*!< 0x00200000 */\n#define ADC_JSQR_JSQ3_1                   (0x02UL << ADC_JSQR_JSQ3_Pos)        /*!< 0x00400000 */\n#define ADC_JSQR_JSQ3_2                   (0x04UL << ADC_JSQR_JSQ3_Pos)        /*!< 0x00800000 */\n#define ADC_JSQR_JSQ3_3                   (0x08UL << ADC_JSQR_JSQ3_Pos)        /*!< 0x01000000 */\n#define ADC_JSQR_JSQ3_4                   (0x10UL << ADC_JSQR_JSQ3_Pos)        /*!< 0x02000000 */\n\n#define ADC_JSQR_JSQ4_Pos                 (27U)\n#define ADC_JSQR_JSQ4_Msk                 (0x1FUL << ADC_JSQR_JSQ4_Pos)        /*!< 0xF8000000 */\n#define ADC_JSQR_JSQ4                     ADC_JSQR_JSQ4_Msk                    /*!< ADC 4th conversion in injected sequence */\n#define ADC_JSQR_JSQ4_0                   (0x01UL << ADC_JSQR_JSQ4_Pos)        /*!< 0x08000000 */\n#define ADC_JSQR_JSQ4_1                   (0x02UL << ADC_JSQR_JSQ4_Pos)        /*!< 0x10000000 */\n#define ADC_JSQR_JSQ4_2                   (0x04UL << ADC_JSQR_JSQ4_Pos)        /*!< 0x20000000 */\n#define ADC_JSQR_JSQ4_3                   (0x08UL << ADC_JSQR_JSQ4_Pos)        /*!< 0x40000000 */\n#define ADC_JSQR_JSQ4_4                   (0x10UL << ADC_JSQR_JSQ4_Pos)        /*!< 0x80000000 */\n\n/********************  Bit definition for ADC_OFR1 register  ********************/\n#define ADC_OFR1_OFFSET1_Pos              (0U)\n#define ADC_OFR1_OFFSET1_Msk              (0x3FFFFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x03FFFFFF */\n#define ADC_OFR1_OFFSET1                  ADC_OFR1_OFFSET1_Msk                  /*!< ADC data offset 1 for channel programmed into bits OFFSET1_CH[4:0] */\n#define ADC_OFR1_OFFSET1_0                (0x0000001UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000001 */\n#define ADC_OFR1_OFFSET1_1                (0x0000002UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000002 */\n#define ADC_OFR1_OFFSET1_2                (0x0000004UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000004 */\n#define ADC_OFR1_OFFSET1_3                (0x0000008UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000008 */\n#define ADC_OFR1_OFFSET1_4                (0x0000010UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000010 */\n#define ADC_OFR1_OFFSET1_5                (0x0000020UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000020 */\n#define ADC_OFR1_OFFSET1_6                (0x0000040UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000040 */\n#define ADC_OFR1_OFFSET1_7                (0x0000080UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000080 */\n#define ADC_OFR1_OFFSET1_8                (0x0000100UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000100 */\n#define ADC_OFR1_OFFSET1_9                (0x0000200UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000200 */\n#define ADC_OFR1_OFFSET1_10               (0x0000400UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000400 */\n#define ADC_OFR1_OFFSET1_11               (0x0000800UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000800 */\n#define ADC_OFR1_OFFSET1_12               (0x0001000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00001000 */\n#define ADC_OFR1_OFFSET1_13               (0x0002000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00002000 */\n#define ADC_OFR1_OFFSET1_14               (0x0004000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00004000 */\n#define ADC_OFR1_OFFSET1_15               (0x0008000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00008000 */\n#define ADC_OFR1_OFFSET1_16               (0x0010000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00010000 */\n#define ADC_OFR1_OFFSET1_17               (0x0020000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00020000 */\n#define ADC_OFR1_OFFSET1_18               (0x0040000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00040000 */\n#define ADC_OFR1_OFFSET1_19               (0x0080000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00080000 */\n#define ADC_OFR1_OFFSET1_20               (0x0100000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00100000 */\n#define ADC_OFR1_OFFSET1_21               (0x0200000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00200000 */\n#define ADC_OFR1_OFFSET1_22               (0x0400000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00400000 */\n#define ADC_OFR1_OFFSET1_23               (0x0800000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00800000 */\n#define ADC_OFR1_OFFSET1_24               (0x1000000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x01000000 */\n#define ADC_OFR1_OFFSET1_25               (0x2000000UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x02000000 */\n\n#define ADC_OFR1_OFFSET1_CH_Pos           (26U)\n#define ADC_OFR1_OFFSET1_CH_Msk           (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos)   /*!< 0x7C000000 */\n#define ADC_OFR1_OFFSET1_CH               ADC_OFR1_OFFSET1_CH_Msk               /*!< ADC Channel selection for the data offset 1 */\n#define ADC_OFR1_OFFSET1_CH_0             (0x01UL << ADC_OFR1_OFFSET1_CH_Pos)   /*!< 0x04000000 */\n#define ADC_OFR1_OFFSET1_CH_1             (0x02UL << ADC_OFR1_OFFSET1_CH_Pos)   /*!< 0x08000000 */\n#define ADC_OFR1_OFFSET1_CH_2             (0x04UL << ADC_OFR1_OFFSET1_CH_Pos)   /*!< 0x10000000 */\n#define ADC_OFR1_OFFSET1_CH_3             (0x08UL << ADC_OFR1_OFFSET1_CH_Pos)   /*!< 0x20000000 */\n#define ADC_OFR1_OFFSET1_CH_4             (0x10UL << ADC_OFR1_OFFSET1_CH_Pos)   /*!< 0x40000000 */\n\n#define ADC_OFR1_SSATE_Pos                (31U)\n#define ADC_OFR1_SSATE_Msk                (0x1UL << ADC_OFR1_SSATE_Pos)         /*!< 0x80000000 */\n#define ADC_OFR1_SSATE                    ADC_OFR1_SSATE_Msk                    /*!< ADC Signed saturation Enable */\n\n\n/********************  Bit definition for ADC_OFR2 register  ********************/\n#define ADC_OFR2_OFFSET2_Pos              (0U)\n#define ADC_OFR2_OFFSET2_Msk              (0x3FFFFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x03FFFFFF */\n#define ADC_OFR2_OFFSET2                  ADC_OFR2_OFFSET2_Msk                  /*!< ADC data offset 2 for channel programmed into bits OFFSET2_CH[4:0] */\n#define ADC_OFR2_OFFSET2_0                (0x0000001UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000001 */\n#define ADC_OFR2_OFFSET2_1                (0x0000002UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000002 */\n#define ADC_OFR2_OFFSET2_2                (0x0000004UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000004 */\n#define ADC_OFR2_OFFSET2_3                (0x0000008UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000008 */\n#define ADC_OFR2_OFFSET2_4                (0x0000010UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000010 */\n#define ADC_OFR2_OFFSET2_5                (0x0000020UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000020 */\n#define ADC_OFR2_OFFSET2_6                (0x0000040UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000040 */\n#define ADC_OFR2_OFFSET2_7                (0x0000080UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000080 */\n#define ADC_OFR2_OFFSET2_8                (0x0000100UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000100 */\n#define ADC_OFR2_OFFSET2_9                (0x0000200UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000200 */\n#define ADC_OFR2_OFFSET2_10               (0x0000400UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000400 */\n#define ADC_OFR2_OFFSET2_11               (0x0000800UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000800 */\n#define ADC_OFR2_OFFSET2_12               (0x0001000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00001000 */\n#define ADC_OFR2_OFFSET2_13               (0x0002000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00002000 */\n#define ADC_OFR2_OFFSET2_14               (0x0004000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00004000 */\n#define ADC_OFR2_OFFSET2_15               (0x0008000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00008000 */\n#define ADC_OFR2_OFFSET2_16               (0x0010000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00010000 */\n#define ADC_OFR2_OFFSET2_17               (0x0020000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00020000 */\n#define ADC_OFR2_OFFSET2_18               (0x0040000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00040000 */\n#define ADC_OFR2_OFFSET2_19               (0x0080000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00080000 */\n#define ADC_OFR2_OFFSET2_20               (0x0100000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00100000 */\n#define ADC_OFR2_OFFSET2_21               (0x0200000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00200000 */\n#define ADC_OFR2_OFFSET2_22               (0x0400000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00400000 */\n#define ADC_OFR2_OFFSET2_23               (0x0800000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00800000 */\n#define ADC_OFR2_OFFSET2_24               (0x1000000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x01000000 */\n#define ADC_OFR2_OFFSET2_25               (0x2000000UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x02000000 */\n\n#define ADC_OFR2_OFFSET2_CH_Pos           (26U)\n#define ADC_OFR2_OFFSET2_CH_Msk           (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos)   /*!< 0x7C000000 */\n#define ADC_OFR2_OFFSET2_CH               ADC_OFR2_OFFSET2_CH_Msk               /*!< ADC Channel selection for the data offset 2 */\n#define ADC_OFR2_OFFSET2_CH_0             (0x01UL << ADC_OFR2_OFFSET2_CH_Pos)   /*!< 0x04000000 */\n#define ADC_OFR2_OFFSET2_CH_1             (0x02UL << ADC_OFR2_OFFSET2_CH_Pos)   /*!< 0x08000000 */\n#define ADC_OFR2_OFFSET2_CH_2             (0x04UL << ADC_OFR2_OFFSET2_CH_Pos)   /*!< 0x10000000 */\n#define ADC_OFR2_OFFSET2_CH_3             (0x08UL << ADC_OFR2_OFFSET2_CH_Pos)   /*!< 0x20000000 */\n#define ADC_OFR2_OFFSET2_CH_4             (0x10UL << ADC_OFR2_OFFSET2_CH_Pos)   /*!< 0x40000000 */\n\n#define ADC_OFR2_SSATE_Pos                (31U)\n#define ADC_OFR2_SSATE_Msk                (0x1UL << ADC_OFR2_SSATE_Pos)         /*!< 0x80000000 */\n#define ADC_OFR2_SSATE                    ADC_OFR2_SSATE_Msk                    /*!< ADC Signed saturation Enable */\n\n\n/********************  Bit definition for ADC_OFR3 register  ********************/\n#define ADC_OFR3_OFFSET3_Pos              (0U)\n#define ADC_OFR3_OFFSET3_Msk              (0x3FFFFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x03FFFFFF */\n#define ADC_OFR3_OFFSET3                  ADC_OFR3_OFFSET3_Msk                  /*!< ADC data offset 3 for channel programmed into bits OFFSET3_CH[4:0] */\n#define ADC_OFR3_OFFSET3_0                (0x0000001UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000001 */\n#define ADC_OFR3_OFFSET3_1                (0x0000002UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000002 */\n#define ADC_OFR3_OFFSET3_2                (0x0000004UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000004 */\n#define ADC_OFR3_OFFSET3_3                (0x0000008UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000008 */\n#define ADC_OFR3_OFFSET3_4                (0x0000010UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000010 */\n#define ADC_OFR3_OFFSET3_5                (0x0000020UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000020 */\n#define ADC_OFR3_OFFSET3_6                (0x0000040UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000040 */\n#define ADC_OFR3_OFFSET3_7                (0x0000080UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000080 */\n#define ADC_OFR3_OFFSET3_8                (0x0000100UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000100 */\n#define ADC_OFR3_OFFSET3_9                (0x0000200UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000200 */\n#define ADC_OFR3_OFFSET3_10               (0x0000400UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000400 */\n#define ADC_OFR3_OFFSET3_11               (0x0000800UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000800 */\n#define ADC_OFR3_OFFSET3_12               (0x0001000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00001000 */\n#define ADC_OFR3_OFFSET3_13               (0x0002000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00002000 */\n#define ADC_OFR3_OFFSET3_14               (0x0004000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00004000 */\n#define ADC_OFR3_OFFSET3_15               (0x0008000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00008000 */\n#define ADC_OFR3_OFFSET3_16               (0x0010000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00010000 */\n#define ADC_OFR3_OFFSET3_17               (0x0020000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00020000 */\n#define ADC_OFR3_OFFSET3_18               (0x0040000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00040000 */\n#define ADC_OFR3_OFFSET3_19               (0x0080000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00080000 */\n#define ADC_OFR3_OFFSET3_20               (0x0100000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00100000 */\n#define ADC_OFR3_OFFSET3_21               (0x0200000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00200000 */\n#define ADC_OFR3_OFFSET3_22               (0x0400000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00400000 */\n#define ADC_OFR3_OFFSET3_23               (0x0800000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00800000 */\n#define ADC_OFR3_OFFSET3_24               (0x1000000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x01000000 */\n#define ADC_OFR3_OFFSET3_25               (0x2000000UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x02000000 */\n\n#define ADC_OFR3_OFFSET3_CH_Pos           (26U)\n#define ADC_OFR3_OFFSET3_CH_Msk           (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos)   /*!< 0x7C000000 */\n#define ADC_OFR3_OFFSET3_CH               ADC_OFR3_OFFSET3_CH_Msk               /*!< ADC Channel selection for the data offset 3 */\n#define ADC_OFR3_OFFSET3_CH_0             (0x01UL << ADC_OFR3_OFFSET3_CH_Pos)   /*!< 0x04000000 */\n#define ADC_OFR3_OFFSET3_CH_1             (0x02UL << ADC_OFR3_OFFSET3_CH_Pos)   /*!< 0x08000000 */\n#define ADC_OFR3_OFFSET3_CH_2             (0x04UL << ADC_OFR3_OFFSET3_CH_Pos)   /*!< 0x10000000 */\n#define ADC_OFR3_OFFSET3_CH_3             (0x08UL << ADC_OFR3_OFFSET3_CH_Pos)   /*!< 0x20000000 */\n#define ADC_OFR3_OFFSET3_CH_4             (0x10UL << ADC_OFR3_OFFSET3_CH_Pos)   /*!< 0x40000000 */\n\n#define ADC_OFR3_SSATE_Pos                (31U)\n#define ADC_OFR3_SSATE_Msk                (0x1UL << ADC_OFR3_SSATE_Pos)         /*!< 0x80000000 */\n#define ADC_OFR3_SSATE                    ADC_OFR3_SSATE_Msk                    /*!< ADC Signed saturation Enable */\n\n\n/********************  Bit definition for ADC_OFR4 register  ********************/\n#define ADC_OFR4_OFFSET4_Pos              (0U)\n#define ADC_OFR4_OFFSET4_Msk              (0x3FFFFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x03FFFFFF */\n#define ADC_OFR4_OFFSET4                  ADC_OFR4_OFFSET4_Msk                  /*!< ADC data offset 4 for channel programmed into bits OFFSET4_CH[4:0] */\n#define ADC_OFR4_OFFSET4_0                (0x0000001UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000001 */\n#define ADC_OFR4_OFFSET4_1                (0x0000002UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000002 */\n#define ADC_OFR4_OFFSET4_2                (0x0000004UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000004 */\n#define ADC_OFR4_OFFSET4_3                (0x0000008UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000008 */\n#define ADC_OFR4_OFFSET4_4                (0x0000010UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000010 */\n#define ADC_OFR4_OFFSET4_5                (0x0000020UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000020 */\n#define ADC_OFR4_OFFSET4_6                (0x0000040UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000040 */\n#define ADC_OFR4_OFFSET4_7                (0x0000080UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000080 */\n#define ADC_OFR4_OFFSET4_8                (0x0000100UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000100 */\n#define ADC_OFR4_OFFSET4_9                (0x0000200UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000200 */\n#define ADC_OFR4_OFFSET4_10               (0x0000400UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000400 */\n#define ADC_OFR4_OFFSET4_11               (0x0000800UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000800 */\n#define ADC_OFR4_OFFSET4_12               (0x0001000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00001000 */\n#define ADC_OFR4_OFFSET4_13               (0x0002000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00002000 */\n#define ADC_OFR4_OFFSET4_14               (0x0004000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00004000 */\n#define ADC_OFR4_OFFSET4_15               (0x0008000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00008000 */\n#define ADC_OFR4_OFFSET4_16               (0x0010000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00010000 */\n#define ADC_OFR4_OFFSET4_17               (0x0020000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00020000 */\n#define ADC_OFR4_OFFSET4_18               (0x0040000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00040000 */\n#define ADC_OFR4_OFFSET4_19               (0x0080000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00080000 */\n#define ADC_OFR4_OFFSET4_20               (0x0100000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00100000 */\n#define ADC_OFR4_OFFSET4_21               (0x0200000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00200000 */\n#define ADC_OFR4_OFFSET4_22               (0x0400000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00400000 */\n#define ADC_OFR4_OFFSET4_23               (0x0800000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00800000 */\n#define ADC_OFR4_OFFSET4_24               (0x1000000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x01000000 */\n#define ADC_OFR4_OFFSET4_25               (0x2000000UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x02000000 */\n\n#define ADC_OFR4_OFFSET4_CH_Pos           (26U)\n#define ADC_OFR4_OFFSET4_CH_Msk           (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos)   /*!< 0x7C000000 */\n#define ADC_OFR4_OFFSET4_CH               ADC_OFR4_OFFSET4_CH_Msk               /*!< ADC Channel selection for the data offset 4 */\n#define ADC_OFR4_OFFSET4_CH_0             (0x01UL << ADC_OFR4_OFFSET4_CH_Pos)   /*!< 0x04000000 */\n#define ADC_OFR4_OFFSET4_CH_1             (0x02UL << ADC_OFR4_OFFSET4_CH_Pos)   /*!< 0x08000000 */\n#define ADC_OFR4_OFFSET4_CH_2             (0x04UL << ADC_OFR4_OFFSET4_CH_Pos)   /*!< 0x10000000 */\n#define ADC_OFR4_OFFSET4_CH_3             (0x08UL << ADC_OFR4_OFFSET4_CH_Pos)   /*!< 0x20000000 */\n#define ADC_OFR4_OFFSET4_CH_4             (0x10UL << ADC_OFR4_OFFSET4_CH_Pos)   /*!< 0x40000000 */\n\n#define ADC_OFR4_SSATE_Pos                (31U)\n#define ADC_OFR4_SSATE_Msk                (0x1UL << ADC_OFR4_SSATE_Pos)         /*!< 0x80000000 */\n#define ADC_OFR4_SSATE                    ADC_OFR4_SSATE_Msk                    /*!< ADC Signed saturation Enable */\n\n\n/********************  Bit definition for ADC_JDR1 register  ********************/\n#define ADC_JDR1_JDATA_Pos                (0U)\n#define ADC_JDR1_JDATA_Msk                (0xFFFFFFFFUL << ADC_JDR1_JDATA_Pos)  /*!< 0xFFFFFFFF */\n#define ADC_JDR1_JDATA                    ADC_JDR1_JDATA_Msk                    /*!< ADC Injected DATA */\n#define ADC_JDR1_JDATA_0                  (0x00000001UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000001 */\n#define ADC_JDR1_JDATA_1                  (0x00000002UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000002 */\n#define ADC_JDR1_JDATA_2                  (0x00000004UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000004 */\n#define ADC_JDR1_JDATA_3                  (0x00000008UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000008 */\n#define ADC_JDR1_JDATA_4                  (0x00000010UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000010 */\n#define ADC_JDR1_JDATA_5                  (0x00000020UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000020 */\n#define ADC_JDR1_JDATA_6                  (0x00000040UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000040 */\n#define ADC_JDR1_JDATA_7                  (0x00000080UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000080 */\n#define ADC_JDR1_JDATA_8                  (0x00000100UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000100 */\n#define ADC_JDR1_JDATA_9                  (0x00000200UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000200 */\n#define ADC_JDR1_JDATA_10                 (0x00000400UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000400 */\n#define ADC_JDR1_JDATA_11                 (0x00000800UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00000800 */\n#define ADC_JDR1_JDATA_12                 (0x00001000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00001000 */\n#define ADC_JDR1_JDATA_13                 (0x00002000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00002000 */\n#define ADC_JDR1_JDATA_14                 (0x00004000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00004000 */\n#define ADC_JDR1_JDATA_15                 (0x00008000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00008000 */\n#define ADC_JDR1_JDATA_16                 (0x00010000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00010000 */\n#define ADC_JDR1_JDATA_17                 (0x00020000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00020000 */\n#define ADC_JDR1_JDATA_18                 (0x00040000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00040000 */\n#define ADC_JDR1_JDATA_19                 (0x00080000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00080000 */\n#define ADC_JDR1_JDATA_20                 (0x00100000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00100000 */\n#define ADC_JDR1_JDATA_21                 (0x00200000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00200000 */\n#define ADC_JDR1_JDATA_22                 (0x00400000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00400000 */\n#define ADC_JDR1_JDATA_23                 (0x00800000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x00800000 */\n#define ADC_JDR1_JDATA_24                 (0x01000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x01000000 */\n#define ADC_JDR1_JDATA_25                 (0x02000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x02000000 */\n#define ADC_JDR1_JDATA_26                 (0x04000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x04000000 */\n#define ADC_JDR1_JDATA_27                 (0x08000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x08000000 */\n#define ADC_JDR1_JDATA_28                 (0x10000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x10000000 */\n#define ADC_JDR1_JDATA_29                 (0x20000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x20000000 */\n#define ADC_JDR1_JDATA_30                 (0x40000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x40000000 */\n#define ADC_JDR1_JDATA_31                 (0x80000000UL << ADC_JDR1_JDATA_Pos)  /*!< 0x80000000 */\n\n/********************  Bit definition for ADC_JDR2 register  ********************/\n#define ADC_JDR2_JDATA_Pos                (0U)\n#define ADC_JDR2_JDATA_Msk                (0xFFFFFFFFUL << ADC_JDR2_JDATA_Pos)  /*!< 0xFFFFFFFF */\n#define ADC_JDR2_JDATA                    ADC_JDR2_JDATA_Msk                    /*!< ADC Injected DATA */\n#define ADC_JDR2_JDATA_0                  (0x00000001UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000001 */\n#define ADC_JDR2_JDATA_1                  (0x00000002UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000002 */\n#define ADC_JDR2_JDATA_2                  (0x00000004UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000004 */\n#define ADC_JDR2_JDATA_3                  (0x00000008UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000008 */\n#define ADC_JDR2_JDATA_4                  (0x00000010UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000010 */\n#define ADC_JDR2_JDATA_5                  (0x00000020UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000020 */\n#define ADC_JDR2_JDATA_6                  (0x00000040UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000040 */\n#define ADC_JDR2_JDATA_7                  (0x00000080UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000080 */\n#define ADC_JDR2_JDATA_8                  (0x00000100UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000100 */\n#define ADC_JDR2_JDATA_9                  (0x00000200UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000200 */\n#define ADC_JDR2_JDATA_10                 (0x00000400UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000400 */\n#define ADC_JDR2_JDATA_11                 (0x00000800UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00000800 */\n#define ADC_JDR2_JDATA_12                 (0x00001000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00001000 */\n#define ADC_JDR2_JDATA_13                 (0x00002000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00002000 */\n#define ADC_JDR2_JDATA_14                 (0x00004000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00004000 */\n#define ADC_JDR2_JDATA_15                 (0x00008000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00008000 */\n#define ADC_JDR2_JDATA_16                 (0x00010000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00010000 */\n#define ADC_JDR2_JDATA_17                 (0x00020000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00020000 */\n#define ADC_JDR2_JDATA_18                 (0x00040000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00040000 */\n#define ADC_JDR2_JDATA_19                 (0x00080000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00080000 */\n#define ADC_JDR2_JDATA_20                 (0x00100000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00100000 */\n#define ADC_JDR2_JDATA_21                 (0x00200000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00200000 */\n#define ADC_JDR2_JDATA_22                 (0x00400000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00400000 */\n#define ADC_JDR2_JDATA_23                 (0x00800000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x00800000 */\n#define ADC_JDR2_JDATA_24                 (0x01000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x01000000 */\n#define ADC_JDR2_JDATA_25                 (0x02000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x02000000 */\n#define ADC_JDR2_JDATA_26                 (0x04000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x04000000 */\n#define ADC_JDR2_JDATA_27                 (0x08000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x08000000 */\n#define ADC_JDR2_JDATA_28                 (0x10000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x10000000 */\n#define ADC_JDR2_JDATA_29                 (0x20000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x20000000 */\n#define ADC_JDR2_JDATA_30                 (0x40000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x40000000 */\n#define ADC_JDR2_JDATA_31                 (0x80000000UL << ADC_JDR2_JDATA_Pos)  /*!< 0x80000000 */\n\n/********************  Bit definition for ADC_JDR3 register  ********************/\n#define ADC_JDR3_JDATA_Pos                (0U)\n#define ADC_JDR3_JDATA_Msk                (0xFFFFFFFFUL << ADC_JDR3_JDATA_Pos)  /*!< 0xFFFFFFFF */\n#define ADC_JDR3_JDATA                    ADC_JDR3_JDATA_Msk                    /*!< ADC Injected DATA */\n#define ADC_JDR3_JDATA_0                  (0x00000001UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000001 */\n#define ADC_JDR3_JDATA_1                  (0x00000002UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000002 */\n#define ADC_JDR3_JDATA_2                  (0x00000004UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000004 */\n#define ADC_JDR3_JDATA_3                  (0x00000008UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000008 */\n#define ADC_JDR3_JDATA_4                  (0x00000010UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000010 */\n#define ADC_JDR3_JDATA_5                  (0x00000020UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000020 */\n#define ADC_JDR3_JDATA_6                  (0x00000040UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000040 */\n#define ADC_JDR3_JDATA_7                  (0x00000080UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000080 */\n#define ADC_JDR3_JDATA_8                  (0x00000100UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000100 */\n#define ADC_JDR3_JDATA_9                  (0x00000200UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000200 */\n#define ADC_JDR3_JDATA_10                 (0x00000400UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000400 */\n#define ADC_JDR3_JDATA_11                 (0x00000800UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00000800 */\n#define ADC_JDR3_JDATA_12                 (0x00001000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00001000 */\n#define ADC_JDR3_JDATA_13                 (0x00002000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00002000 */\n#define ADC_JDR3_JDATA_14                 (0x00004000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00004000 */\n#define ADC_JDR3_JDATA_15                 (0x00008000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00008000 */\n#define ADC_JDR3_JDATA_16                 (0x00010000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00010000 */\n#define ADC_JDR3_JDATA_17                 (0x00020000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00020000 */\n#define ADC_JDR3_JDATA_18                 (0x00040000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00040000 */\n#define ADC_JDR3_JDATA_19                 (0x00080000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00080000 */\n#define ADC_JDR3_JDATA_20                 (0x00100000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00100000 */\n#define ADC_JDR3_JDATA_21                 (0x00200000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00200000 */\n#define ADC_JDR3_JDATA_22                 (0x00400000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00400000 */\n#define ADC_JDR3_JDATA_23                 (0x00800000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x00800000 */\n#define ADC_JDR3_JDATA_24                 (0x01000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x01000000 */\n#define ADC_JDR3_JDATA_25                 (0x02000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x02000000 */\n#define ADC_JDR3_JDATA_26                 (0x04000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x04000000 */\n#define ADC_JDR3_JDATA_27                 (0x08000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x08000000 */\n#define ADC_JDR3_JDATA_28                 (0x10000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x10000000 */\n#define ADC_JDR3_JDATA_29                 (0x20000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x20000000 */\n#define ADC_JDR3_JDATA_30                 (0x40000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x40000000 */\n#define ADC_JDR3_JDATA_31                 (0x80000000UL << ADC_JDR3_JDATA_Pos)  /*!< 0x80000000 */\n\n/********************  Bit definition for ADC_JDR4 register  ********************/\n#define ADC_JDR4_JDATA_Pos                (0U)\n#define ADC_JDR4_JDATA_Msk                (0xFFFFFFFFUL << ADC_JDR4_JDATA_Pos)  /*!< 0xFFFFFFFF */\n#define ADC_JDR4_JDATA                    ADC_JDR4_JDATA_Msk                    /*!< ADC Injected DATA */\n#define ADC_JDR4_JDATA_0                  (0x00000001UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000001 */\n#define ADC_JDR4_JDATA_1                  (0x00000002UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000002 */\n#define ADC_JDR4_JDATA_2                  (0x00000004UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000004 */\n#define ADC_JDR4_JDATA_3                  (0x00000008UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000008 */\n#define ADC_JDR4_JDATA_4                  (0x00000010UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000010 */\n#define ADC_JDR4_JDATA_5                  (0x00000020UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000020 */\n#define ADC_JDR4_JDATA_6                  (0x00000040UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000040 */\n#define ADC_JDR4_JDATA_7                  (0x00000080UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000080 */\n#define ADC_JDR4_JDATA_8                  (0x00000100UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000100 */\n#define ADC_JDR4_JDATA_9                  (0x00000200UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000200 */\n#define ADC_JDR4_JDATA_10                 (0x00000400UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000400 */\n#define ADC_JDR4_JDATA_11                 (0x00000800UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00000800 */\n#define ADC_JDR4_JDATA_12                 (0x00001000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00001000 */\n#define ADC_JDR4_JDATA_13                 (0x00002000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00002000 */\n#define ADC_JDR4_JDATA_14                 (0x00004000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00004000 */\n#define ADC_JDR4_JDATA_15                 (0x00008000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00008000 */\n#define ADC_JDR4_JDATA_16                 (0x00010000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00010000 */\n#define ADC_JDR4_JDATA_17                 (0x00020000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00020000 */\n#define ADC_JDR4_JDATA_18                 (0x00040000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00040000 */\n#define ADC_JDR4_JDATA_19                 (0x00080000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00080000 */\n#define ADC_JDR4_JDATA_20                 (0x00100000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00100000 */\n#define ADC_JDR4_JDATA_21                 (0x00200000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00200000 */\n#define ADC_JDR4_JDATA_22                 (0x00400000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00400000 */\n#define ADC_JDR4_JDATA_23                 (0x00800000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x00800000 */\n#define ADC_JDR4_JDATA_24                 (0x01000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x01000000 */\n#define ADC_JDR4_JDATA_25                 (0x02000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x02000000 */\n#define ADC_JDR4_JDATA_26                 (0x04000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x04000000 */\n#define ADC_JDR4_JDATA_27                 (0x08000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x08000000 */\n#define ADC_JDR4_JDATA_28                 (0x10000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x10000000 */\n#define ADC_JDR4_JDATA_29                 (0x20000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x20000000 */\n#define ADC_JDR4_JDATA_30                 (0x40000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x40000000 */\n#define ADC_JDR4_JDATA_31                 (0x80000000UL << ADC_JDR4_JDATA_Pos)  /*!< 0x80000000 */\n\n/********************  Bit definition for ADC_AWD2CR register  ********************/\n#define ADC_AWD2CR_AWD2CH_Pos             (0U)\n#define ADC_AWD2CR_AWD2CH_Msk             (0xFFFFFUL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x000FFFFF */\n#define ADC_AWD2CR_AWD2CH                 ADC_AWD2CR_AWD2CH_Msk                 /*!< ADC Analog watchdog 2 channel selection */\n#define ADC_AWD2CR_AWD2CH_0               (0x00001UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000001 */\n#define ADC_AWD2CR_AWD2CH_1               (0x00002UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000002 */\n#define ADC_AWD2CR_AWD2CH_2               (0x00004UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000004 */\n#define ADC_AWD2CR_AWD2CH_3               (0x00008UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000008 */\n#define ADC_AWD2CR_AWD2CH_4               (0x00010UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000010 */\n#define ADC_AWD2CR_AWD2CH_5               (0x00020UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000020 */\n#define ADC_AWD2CR_AWD2CH_6               (0x00040UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000040 */\n#define ADC_AWD2CR_AWD2CH_7               (0x00080UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000080 */\n#define ADC_AWD2CR_AWD2CH_8               (0x00100UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000100 */\n#define ADC_AWD2CR_AWD2CH_9               (0x00200UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000200 */\n#define ADC_AWD2CR_AWD2CH_10              (0x00400UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000400 */\n#define ADC_AWD2CR_AWD2CH_11              (0x00800UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00000800 */\n#define ADC_AWD2CR_AWD2CH_12              (0x01000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00001000 */\n#define ADC_AWD2CR_AWD2CH_13              (0x02000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00002000 */\n#define ADC_AWD2CR_AWD2CH_14              (0x04000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00004000 */\n#define ADC_AWD2CR_AWD2CH_15              (0x08000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00008000 */\n#define ADC_AWD2CR_AWD2CH_16              (0x10000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00010000 */\n#define ADC_AWD2CR_AWD2CH_17              (0x20000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00020000 */\n#define ADC_AWD2CR_AWD2CH_18              (0x40000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00040000 */\n#define ADC_AWD2CR_AWD2CH_19              (0x80000UL << ADC_AWD2CR_AWD2CH_Pos)  /*!< 0x00080000 */\n\n/********************  Bit definition for ADC_AWD3CR register  ********************/\n#define ADC_AWD3CR_AWD3CH_Pos             (0U)\n#define ADC_AWD3CR_AWD3CH_Msk             (0xFFFFFUL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x000FFFFF */\n#define ADC_AWD3CR_AWD3CH                 ADC_AWD3CR_AWD3CH_Msk                 /*!< ADC Analog watchdog 2 channel selection */\n#define ADC_AWD3CR_AWD3CH_0               (0x00001UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000001 */\n#define ADC_AWD3CR_AWD3CH_1               (0x00002UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000002 */\n#define ADC_AWD3CR_AWD3CH_2               (0x00004UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000004 */\n#define ADC_AWD3CR_AWD3CH_3               (0x00008UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000008 */\n#define ADC_AWD3CR_AWD3CH_4               (0x00010UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000010 */\n#define ADC_AWD3CR_AWD3CH_5               (0x00020UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000020 */\n#define ADC_AWD3CR_AWD3CH_6               (0x00040UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000040 */\n#define ADC_AWD3CR_AWD3CH_7               (0x00080UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000080 */\n#define ADC_AWD3CR_AWD3CH_8               (0x00100UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000100 */\n#define ADC_AWD3CR_AWD3CH_9               (0x00200UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000200 */\n#define ADC_AWD3CR_AWD3CH_10              (0x00400UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000400 */\n#define ADC_AWD3CR_AWD3CH_11              (0x00800UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00000800 */\n#define ADC_AWD3CR_AWD3CH_12              (0x01000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00001000 */\n#define ADC_AWD3CR_AWD3CH_13              (0x02000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00002000 */\n#define ADC_AWD3CR_AWD3CH_14              (0x04000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00004000 */\n#define ADC_AWD3CR_AWD3CH_15              (0x08000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00008000 */\n#define ADC_AWD3CR_AWD3CH_16              (0x10000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00010000 */\n#define ADC_AWD3CR_AWD3CH_17              (0x20000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00020000 */\n#define ADC_AWD3CR_AWD3CH_18              (0x40000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00040000 */\n#define ADC_AWD3CR_AWD3CH_19              (0x80000UL << ADC_AWD3CR_AWD3CH_Pos)  /*!< 0x00080000 */\n\n/********************  Bit definition for ADC_DIFSEL register  ********************/\n#define ADC_DIFSEL_DIFSEL_Pos             (0U)\n#define ADC_DIFSEL_DIFSEL_Msk             (0xFFFFFUL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x000FFFFF */\n#define ADC_DIFSEL_DIFSEL                 ADC_DIFSEL_DIFSEL_Msk                 /*!< ADC differential modes for channels 1 to 18 */\n#define ADC_DIFSEL_DIFSEL_0               (0x00001UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000001 */\n#define ADC_DIFSEL_DIFSEL_1               (0x00002UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000002 */\n#define ADC_DIFSEL_DIFSEL_2               (0x00004UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000004 */\n#define ADC_DIFSEL_DIFSEL_3               (0x00008UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000008 */\n#define ADC_DIFSEL_DIFSEL_4               (0x00010UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000010 */\n#define ADC_DIFSEL_DIFSEL_5               (0x00020UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000020 */\n#define ADC_DIFSEL_DIFSEL_6               (0x00040UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000040 */\n#define ADC_DIFSEL_DIFSEL_7               (0x00080UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000080 */\n#define ADC_DIFSEL_DIFSEL_8               (0x00100UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000100 */\n#define ADC_DIFSEL_DIFSEL_9               (0x00200UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000200 */\n#define ADC_DIFSEL_DIFSEL_10              (0x00400UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000400 */\n#define ADC_DIFSEL_DIFSEL_11              (0x00800UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00000800 */\n#define ADC_DIFSEL_DIFSEL_12              (0x01000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00001000 */\n#define ADC_DIFSEL_DIFSEL_13              (0x02000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00002000 */\n#define ADC_DIFSEL_DIFSEL_14              (0x04000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00004000 */\n#define ADC_DIFSEL_DIFSEL_15              (0x08000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00008000 */\n#define ADC_DIFSEL_DIFSEL_16              (0x10000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00010000 */\n#define ADC_DIFSEL_DIFSEL_17              (0x20000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00020000 */\n#define ADC_DIFSEL_DIFSEL_18              (0x40000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00040000 */\n#define ADC_DIFSEL_DIFSEL_19              (0x80000UL << ADC_DIFSEL_DIFSEL_Pos)  /*!< 0x00080000 */\n\n/********************  Bit definition for ADC_CALFACT register  ********************/\n#define ADC_CALFACT_CALFACT_S_Pos         (0U)\n#define ADC_CALFACT_CALFACT_S_Msk         (0x7FFUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x000007FF */\n#define ADC_CALFACT_CALFACT_S             ADC_CALFACT_CALFACT_S_Msk              /*!< ADC calibration factors in single-ended mode */\n#define ADC_CALFACT_CALFACT_S_0           (0x001UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */\n#define ADC_CALFACT_CALFACT_S_1           (0x002UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */\n#define ADC_CALFACT_CALFACT_S_2           (0x004UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */\n#define ADC_CALFACT_CALFACT_S_3           (0x008UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */\n#define ADC_CALFACT_CALFACT_S_4           (0x010UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */\n#define ADC_CALFACT_CALFACT_S_5           (0x020UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */\n#define ADC_CALFACT_CALFACT_S_6           (0x040UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000040 */\n#define ADC_CALFACT_CALFACT_S_7           (0x080UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000080 */\n#define ADC_CALFACT_CALFACT_S_8           (0x100UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000100 */\n#define ADC_CALFACT_CALFACT_S_9           (0x200UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000200 */\n#define ADC_CALFACT_CALFACT_S_10          (0x400UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000400 */\n#define ADC_CALFACT_CALFACT_D_Pos         (16U)\n#define ADC_CALFACT_CALFACT_D_Msk         (0x7FFUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x07FF0000 */\n#define ADC_CALFACT_CALFACT_D             ADC_CALFACT_CALFACT_D_Msk              /*!< ADC calibration factors in differential mode */\n#define ADC_CALFACT_CALFACT_D_0           (0x001UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */\n#define ADC_CALFACT_CALFACT_D_1           (0x002UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */\n#define ADC_CALFACT_CALFACT_D_2           (0x004UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */\n#define ADC_CALFACT_CALFACT_D_3           (0x008UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */\n#define ADC_CALFACT_CALFACT_D_4           (0x010UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */\n#define ADC_CALFACT_CALFACT_D_5           (0x020UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */\n#define ADC_CALFACT_CALFACT_D_6           (0x040UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00400000 */\n#define ADC_CALFACT_CALFACT_D_7           (0x080UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00800000 */\n#define ADC_CALFACT_CALFACT_D_8           (0x100UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x01000000 */\n#define ADC_CALFACT_CALFACT_D_9           (0x200UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x02000000 */\n#define ADC_CALFACT_CALFACT_D_10          (0x400UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x04000000 */\n\n/********************  Bit definition for ADC_CALFACT2 register  ********************/\n#define ADC_CALFACT2_LINCALFACT_Pos       (0U)\n#define ADC_CALFACT2_LINCALFACT_Msk       (0x3FFFFFFFUL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x3FFFFFFF */\n#define ADC_CALFACT2_LINCALFACT           ADC_CALFACT2_LINCALFACT_Msk                   /*!< ADC Linearity calibration factors */\n#define ADC_CALFACT2_LINCALFACT_0         (0x00000001UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000001 */\n#define ADC_CALFACT2_LINCALFACT_1         (0x00000002UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000002 */\n#define ADC_CALFACT2_LINCALFACT_2         (0x00000004UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000004 */\n#define ADC_CALFACT2_LINCALFACT_3         (0x00000008UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000008 */\n#define ADC_CALFACT2_LINCALFACT_4         (0x00000010UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000010 */\n#define ADC_CALFACT2_LINCALFACT_5         (0x00000020UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000020 */\n#define ADC_CALFACT2_LINCALFACT_6         (0x00000040UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000040 */\n#define ADC_CALFACT2_LINCALFACT_7         (0x00000080UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000080 */\n#define ADC_CALFACT2_LINCALFACT_8         (0x00000100UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000100 */\n#define ADC_CALFACT2_LINCALFACT_9         (0x00000200UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000200 */\n#define ADC_CALFACT2_LINCALFACT_10        (0x00000400UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000400 */\n#define ADC_CALFACT2_LINCALFACT_11        (0x00000800UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00000800 */\n#define ADC_CALFACT2_LINCALFACT_12        (0x00001000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00001000 */\n#define ADC_CALFACT2_LINCALFACT_13        (0x00002000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00002000 */\n#define ADC_CALFACT2_LINCALFACT_14        (0x00004000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00004000 */\n#define ADC_CALFACT2_LINCALFACT_15        (0x00008000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00008000 */\n#define ADC_CALFACT2_LINCALFACT_16        (0x00010000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00010000 */\n#define ADC_CALFACT2_LINCALFACT_17        (0x00020000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00020000 */\n#define ADC_CALFACT2_LINCALFACT_18        (0x00040000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00040000 */\n#define ADC_CALFACT2_LINCALFACT_19        (0x00080000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00080000 */\n#define ADC_CALFACT2_LINCALFACT_20        (0x00100000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00100000 */\n#define ADC_CALFACT2_LINCALFACT_21        (0x00200000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00200000 */\n#define ADC_CALFACT2_LINCALFACT_22        (0x00400000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00400000 */\n#define ADC_CALFACT2_LINCALFACT_23        (0x00800000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x00800000 */\n#define ADC_CALFACT2_LINCALFACT_24        (0x01000000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x01000000 */\n#define ADC_CALFACT2_LINCALFACT_25        (0x02000000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x02000000 */\n#define ADC_CALFACT2_LINCALFACT_26        (0x04000000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x04000000 */\n#define ADC_CALFACT2_LINCALFACT_27        (0x08000000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x08000000 */\n#define ADC_CALFACT2_LINCALFACT_28        (0x10000000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x10000000 */\n#define ADC_CALFACT2_LINCALFACT_29        (0x20000000UL << ADC_CALFACT2_LINCALFACT_Pos) /*!< 0x20000000 */\n\n/*************************  ADC Common registers  *****************************/\n/********************  Bit definition for ADC_CSR register  ********************/\n#define ADC_CSR_ADRDY_MST_Pos             (0U)\n#define ADC_CSR_ADRDY_MST_Msk             (0x1UL << ADC_CSR_ADRDY_MST_Pos)     /*!< 0x00000001 */\n#define ADC_CSR_ADRDY_MST                 ADC_CSR_ADRDY_MST_Msk                /*!< Master ADC ready */\n#define ADC_CSR_EOSMP_MST_Pos             (1U)\n#define ADC_CSR_EOSMP_MST_Msk             (0x1UL << ADC_CSR_EOSMP_MST_Pos)     /*!< 0x00000002 */\n#define ADC_CSR_EOSMP_MST                 ADC_CSR_EOSMP_MST_Msk                /*!< End of sampling phase flag of the master ADC */\n#define ADC_CSR_EOC_MST_Pos               (2U)\n#define ADC_CSR_EOC_MST_Msk               (0x1UL << ADC_CSR_EOC_MST_Pos)       /*!< 0x00000004 */\n#define ADC_CSR_EOC_MST                   ADC_CSR_EOC_MST_Msk                  /*!< End of regular conversion of the master ADC */\n#define ADC_CSR_EOS_MST_Pos               (3U)\n#define ADC_CSR_EOS_MST_Msk               (0x1UL << ADC_CSR_EOS_MST_Pos)       /*!< 0x00000008 */\n#define ADC_CSR_EOS_MST                   ADC_CSR_EOS_MST_Msk                  /*!< End of regular sequence flag of the master ADC */\n#define ADC_CSR_OVR_MST_Pos               (4U)\n#define ADC_CSR_OVR_MST_Msk               (0x1UL << ADC_CSR_OVR_MST_Pos)       /*!< 0x00000010 */\n#define ADC_CSR_OVR_MST                   ADC_CSR_OVR_MST_Msk                  /*!< Overrun flag of the master ADC */\n#define ADC_CSR_JEOC_MST_Pos              (5U)\n#define ADC_CSR_JEOC_MST_Msk              (0x1UL << ADC_CSR_JEOC_MST_Pos)      /*!< 0x00000020 */\n#define ADC_CSR_JEOC_MST                  ADC_CSR_JEOC_MST_Msk                 /*!< End of injected conversion of the master ADC */\n#define ADC_CSR_JEOS_MST_Pos              (6U)\n#define ADC_CSR_JEOS_MST_Msk              (0x1UL << ADC_CSR_JEOS_MST_Pos)      /*!< 0x00000040 */\n#define ADC_CSR_JEOS_MST                  ADC_CSR_JEOS_MST_Msk                 /*!< End of injected sequence flag of the master ADC */\n#define ADC_CSR_AWD1_MST_Pos              (7U)\n#define ADC_CSR_AWD1_MST_Msk              (0x1UL << ADC_CSR_AWD1_MST_Pos)      /*!< 0x00000080 */\n#define ADC_CSR_AWD1_MST                  ADC_CSR_AWD1_MST_Msk                 /*!< Analog watchdog 1 flag of the master ADC */\n#define ADC_CSR_AWD2_MST_Pos              (8U)\n#define ADC_CSR_AWD2_MST_Msk              (0x1UL << ADC_CSR_AWD2_MST_Pos)      /*!< 0x00000100 */\n#define ADC_CSR_AWD2_MST                  ADC_CSR_AWD2_MST_Msk                 /*!< Analog watchdog 2 flag of the master ADC */\n#define ADC_CSR_AWD3_MST_Pos              (9U)\n#define ADC_CSR_AWD3_MST_Msk              (0x1UL << ADC_CSR_AWD3_MST_Pos)      /*!< 0x00000200 */\n#define ADC_CSR_AWD3_MST                  ADC_CSR_AWD3_MST_Msk                 /*!< Analog watchdog 3 flag of the master ADC */\n#define ADC_CSR_JQOVF_MST_Pos             (10U)\n#define ADC_CSR_JQOVF_MST_Msk             (0x1UL << ADC_CSR_JQOVF_MST_Pos)     /*!< 0x00000400 */\n#define ADC_CSR_JQOVF_MST                 ADC_CSR_JQOVF_MST_Msk                /*!< Injected context queue overflow flag of the master ADC */\n#define ADC_CSR_ADRDY_SLV_Pos             (16U)\n#define ADC_CSR_ADRDY_SLV_Msk             (0x1UL << ADC_CSR_ADRDY_SLV_Pos)     /*!< 0x00010000 */\n#define ADC_CSR_ADRDY_SLV                 ADC_CSR_ADRDY_SLV_Msk                /*!< Slave ADC ready */\n#define ADC_CSR_EOSMP_SLV_Pos             (17U)\n#define ADC_CSR_EOSMP_SLV_Msk             (0x1UL << ADC_CSR_EOSMP_SLV_Pos)     /*!< 0x00020000 */\n#define ADC_CSR_EOSMP_SLV                 ADC_CSR_EOSMP_SLV_Msk                /*!< End of sampling phase flag of the slave ADC */\n#define ADC_CSR_EOC_SLV_Pos               (18U)\n#define ADC_CSR_EOC_SLV_Msk               (0x1UL << ADC_CSR_EOC_SLV_Pos)       /*!< 0x00040000 */\n#define ADC_CSR_EOC_SLV                   ADC_CSR_EOC_SLV_Msk                  /*!< End of regular conversion of the slave ADC */\n#define ADC_CSR_EOS_SLV_Pos               (19U)\n#define ADC_CSR_EOS_SLV_Msk               (0x1UL << ADC_CSR_EOS_SLV_Pos)       /*!< 0x00080000 */\n#define ADC_CSR_EOS_SLV                   ADC_CSR_EOS_SLV_Msk                  /*!< End of regular sequence flag of the slave ADC */\n#define ADC_CSR_OVR_SLV_Pos               (20U)\n#define ADC_CSR_OVR_SLV_Msk               (0x1UL << ADC_CSR_OVR_SLV_Pos)       /*!< 0x00100000 */\n#define ADC_CSR_OVR_SLV                   ADC_CSR_OVR_SLV_Msk                  /*!< Overrun flag of the slave ADC */\n#define ADC_CSR_JEOC_SLV_Pos              (21U)\n#define ADC_CSR_JEOC_SLV_Msk              (0x1UL << ADC_CSR_JEOC_SLV_Pos)      /*!< 0x00200000 */\n#define ADC_CSR_JEOC_SLV                  ADC_CSR_JEOC_SLV_Msk                 /*!< End of injected conversion of the slave ADC */\n#define ADC_CSR_JEOS_SLV_Pos              (22U)\n#define ADC_CSR_JEOS_SLV_Msk              (0x1UL << ADC_CSR_JEOS_SLV_Pos)      /*!< 0x00400000 */\n#define ADC_CSR_JEOS_SLV                  ADC_CSR_JEOS_SLV_Msk                 /*!< End of injected sequence flag of the slave ADC */\n#define ADC_CSR_AWD1_SLV_Pos              (23U)\n#define ADC_CSR_AWD1_SLV_Msk              (0x1UL << ADC_CSR_AWD1_SLV_Pos)      /*!< 0x00800000 */\n#define ADC_CSR_AWD1_SLV                  ADC_CSR_AWD1_SLV_Msk                 /*!< Analog watchdog 1 flag of the slave ADC */\n#define ADC_CSR_AWD2_SLV_Pos              (24U)\n#define ADC_CSR_AWD2_SLV_Msk              (0x1UL << ADC_CSR_AWD2_SLV_Pos)      /*!< 0x01000000 */\n#define ADC_CSR_AWD2_SLV                  ADC_CSR_AWD2_SLV_Msk                 /*!< Analog watchdog 2 flag of the slave ADC */\n#define ADC_CSR_AWD3_SLV_Pos              (25U)\n#define ADC_CSR_AWD3_SLV_Msk              (0x1UL << ADC_CSR_AWD3_SLV_Pos)      /*!< 0x02000000 */\n#define ADC_CSR_AWD3_SLV                  ADC_CSR_AWD3_SLV_Msk                 /*!< Analog watchdog 3 flag of the slave ADC */\n#define ADC_CSR_JQOVF_SLV_Pos             (26U)\n#define ADC_CSR_JQOVF_SLV_Msk             (0x1UL << ADC_CSR_JQOVF_SLV_Pos)     /*!< 0x04000000 */\n#define ADC_CSR_JQOVF_SLV                 ADC_CSR_JQOVF_SLV_Msk                /*!< Injected context queue overflow flag of the slave ADC */\n\n/********************  Bit definition for ADC_CCR register  ********************/\n#define ADC_CCR_DUAL_Pos                  (0U)\n#define ADC_CCR_DUAL_Msk                  (0x1FUL << ADC_CCR_DUAL_Pos)          /*!< 0x0000001F */\n#define ADC_CCR_DUAL                      ADC_CCR_DUAL_Msk                      /*!< Dual ADC mode selection */\n#define ADC_CCR_DUAL_0                    (0x01UL << ADC_CCR_DUAL_Pos)          /*!< 0x00000001 */\n#define ADC_CCR_DUAL_1                    (0x02UL << ADC_CCR_DUAL_Pos)          /*!< 0x00000002 */\n#define ADC_CCR_DUAL_2                    (0x04UL << ADC_CCR_DUAL_Pos)          /*!< 0x00000004 */\n#define ADC_CCR_DUAL_3                    (0x08UL << ADC_CCR_DUAL_Pos)          /*!< 0x00000008 */\n#define ADC_CCR_DUAL_4                    (0x10UL << ADC_CCR_DUAL_Pos)          /*!< 0x00000010 */\n\n#define ADC_CCR_DELAY_Pos                 (8U)\n#define ADC_CCR_DELAY_Msk                 (0xFUL << ADC_CCR_DELAY_Pos)          /*!< 0x00000F00 */\n#define ADC_CCR_DELAY                     ADC_CCR_DELAY_Msk                     /*!< Delay between 2 sampling phases */\n#define ADC_CCR_DELAY_0                   (0x1UL << ADC_CCR_DELAY_Pos)          /*!< 0x00000100 */\n#define ADC_CCR_DELAY_1                   (0x2UL << ADC_CCR_DELAY_Pos)          /*!< 0x00000200 */\n#define ADC_CCR_DELAY_2                   (0x4UL << ADC_CCR_DELAY_Pos)          /*!< 0x00000400 */\n#define ADC_CCR_DELAY_3                   (0x8UL << ADC_CCR_DELAY_Pos)          /*!< 0x00000800 */\n\n\n#define ADC_CCR_DAMDF_Pos                 (14U)\n#define ADC_CCR_DAMDF_Msk                 (0x3UL << ADC_CCR_DAMDF_Pos)          /*!< 0x0000C000 */\n#define ADC_CCR_DAMDF                     ADC_CCR_DAMDF_Msk                     /*!< Dual ADC mode Data format */\n#define ADC_CCR_DAMDF_0                   (0x1UL << ADC_CCR_DAMDF_Pos)          /*!< 0x00004000 */\n#define ADC_CCR_DAMDF_1                   (0x2UL << ADC_CCR_DAMDF_Pos)          /*!< 0x00008000 */\n\n#define ADC_CCR_CKMODE_Pos                (16U)\n#define ADC_CCR_CKMODE_Msk                (0x3UL << ADC_CCR_CKMODE_Pos)         /*!< 0x00030000 */\n#define ADC_CCR_CKMODE                    ADC_CCR_CKMODE_Msk                    /*!< ADC clock mode */\n#define ADC_CCR_CKMODE_0                  (0x1UL << ADC_CCR_CKMODE_Pos)         /*!< 0x00010000 */\n#define ADC_CCR_CKMODE_1                  (0x2UL << ADC_CCR_CKMODE_Pos)         /*!< 0x00020000 */\n\n#define ADC_CCR_PRESC_Pos                 (18U)\n#define ADC_CCR_PRESC_Msk                 (0xFUL << ADC_CCR_PRESC_Pos)          /*!< 0x003C0000 */\n#define ADC_CCR_PRESC                     ADC_CCR_PRESC_Msk                     /*!< ADC prescaler */\n#define ADC_CCR_PRESC_0                   (0x1UL << ADC_CCR_PRESC_Pos)          /*!< 0x00040000 */\n#define ADC_CCR_PRESC_1                   (0x2UL << ADC_CCR_PRESC_Pos)          /*!< 0x00080000 */\n#define ADC_CCR_PRESC_2                   (0x4UL << ADC_CCR_PRESC_Pos)          /*!< 0x00100000 */\n#define ADC_CCR_PRESC_3                   (0x8UL << ADC_CCR_PRESC_Pos)          /*!< 0x00200000 */\n\n#define ADC_CCR_VREFEN_Pos                (22U)\n#define ADC_CCR_VREFEN_Msk                (0x1UL << ADC_CCR_VREFEN_Pos)         /*!< 0x00400000 */\n#define ADC_CCR_VREFEN                    ADC_CCR_VREFEN_Msk                    /*!< VREFINT enable */\n#define ADC_CCR_TSEN_Pos                  (23U)\n#define ADC_CCR_TSEN_Msk                  (0x1UL << ADC_CCR_TSEN_Pos)           /*!< 0x00800000 */\n#define ADC_CCR_TSEN                      ADC_CCR_TSEN_Msk                      /*!< Temperature sensor enable */\n#define ADC_CCR_VBATEN_Pos                (24U)\n#define ADC_CCR_VBATEN_Msk                (0x1UL << ADC_CCR_VBATEN_Pos)         /*!< 0x01000000 */\n#define ADC_CCR_VBATEN                    ADC_CCR_VBATEN_Msk                    /*!< VBAT enable */\n\n/********************  Bit definition for ADC_CDR register  *******************/\n#define ADC_CDR_RDATA_MST_Pos             (0U)\n#define ADC_CDR_RDATA_MST_Msk             (0xFFFFUL << ADC_CDR_RDATA_MST_Pos)   /*!< 0x0000FFFF */\n#define ADC_CDR_RDATA_MST                 ADC_CDR_RDATA_MST_Msk                 /*!< ADC multimode master group regular conversion data */\n\n#define ADC_CDR_RDATA_SLV_Pos             (16U)\n#define ADC_CDR_RDATA_SLV_Msk             (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos)   /*!< 0xFFFF0000 */\n#define ADC_CDR_RDATA_SLV                 ADC_CDR_RDATA_SLV_Msk                 /*!< ADC multimode slave group regular conversion data */\n\n/********************  Bit definition for ADC_CDR2 register  ******************/\n#define ADC_CDR2_RDATA_ALT_Pos            (0U)\n#define ADC_CDR2_RDATA_ALT_Msk            (0xFFFFFFFFUL << ADC_CDR2_RDATA_ALT_Pos) /*!< 0xFFFFFFFF */\n#define ADC_CDR2_RDATA_ALT                ADC_CDR2_RDATA_ALT_Msk                   /*!< Regular data of the master/slave alternated ADCs */\n\n\n/******************************************************************************/\n/*                                                                            */\n/*                                   VREFBUF                                  */\n/*                                                                            */\n/******************************************************************************/\n/*******************  Bit definition for VREFBUF_CSR register  ****************/\n#define VREFBUF_CSR_ENVR_Pos        (0U)\n#define VREFBUF_CSR_ENVR_Msk        (0x1UL << VREFBUF_CSR_ENVR_Pos)            /*!< 0x00000001 */\n#define VREFBUF_CSR_ENVR            VREFBUF_CSR_ENVR_Msk                       /*!<Voltage reference buffer enable */\n#define VREFBUF_CSR_HIZ_Pos         (1U)\n#define VREFBUF_CSR_HIZ_Msk         (0x1UL << VREFBUF_CSR_HIZ_Pos)             /*!< 0x00000002 */\n#define VREFBUF_CSR_HIZ             VREFBUF_CSR_HIZ_Msk                        /*!<High impedance mode             */\n#define VREFBUF_CSR_VRR_Pos         (3U)\n#define VREFBUF_CSR_VRR_Msk         (0x1UL << VREFBUF_CSR_VRR_Pos)             /*!< 0x00000008 */\n#define VREFBUF_CSR_VRR             VREFBUF_CSR_VRR_Msk                        /*!<Voltage reference buffer ready  */\n#define VREFBUF_CSR_VRS_Pos         (4U)\n#define VREFBUF_CSR_VRS_Msk         (0x7UL << VREFBUF_CSR_VRS_Pos)             /*!< 0x00000070 */\n#define VREFBUF_CSR_VRS             VREFBUF_CSR_VRS_Msk                        /*!<Voltage reference scale         */\n\n#define VREFBUF_CSR_VRS_OUT1        ((uint32_t)0x00000000)                     /*!<Voltage reference VREF_OUT1     */\n#define VREFBUF_CSR_VRS_OUT2_Pos    (4U)\n#define VREFBUF_CSR_VRS_OUT2_Msk    (0x1UL << VREFBUF_CSR_VRS_OUT2_Pos)        /*!< 0x00000010 */\n#define VREFBUF_CSR_VRS_OUT2        VREFBUF_CSR_VRS_OUT2_Msk                   /*!<Voltage reference VREF_OUT2     */\n#define VREFBUF_CSR_VRS_OUT3_Pos    (5U)\n#define VREFBUF_CSR_VRS_OUT3_Msk    (0x1UL << VREFBUF_CSR_VRS_OUT3_Pos)        /*!< 0x00000020 */\n#define VREFBUF_CSR_VRS_OUT3        VREFBUF_CSR_VRS_OUT3_Msk                   /*!<Voltage reference VREF_OUT3     */\n#define VREFBUF_CSR_VRS_OUT4_Pos    (4U)\n#define VREFBUF_CSR_VRS_OUT4_Msk    (0x3UL << VREFBUF_CSR_VRS_OUT4_Pos)        /*!< 0x00000030 */\n#define VREFBUF_CSR_VRS_OUT4        VREFBUF_CSR_VRS_OUT4_Msk                   /*!<Voltage reference VREF_OUT4     */\n\n/*******************  Bit definition for VREFBUF_CCR register  ****************/\n#define VREFBUF_CCR_TRIM_Pos        (0U)\n#define VREFBUF_CCR_TRIM_Msk        (0x3FUL << VREFBUF_CCR_TRIM_Pos)           /*!< 0x0000003F */\n#define VREFBUF_CCR_TRIM            VREFBUF_CCR_TRIM_Msk                       /*!<TRIM[5:0] bits (Trimming code)  */\n\n/******************************************************************************/\n/*                                                                            */\n/*                 Flexible Datarate Controller Area Network                  */\n/*                                                                            */\n/******************************************************************************/\n/*!<FDCAN control and status registers */\n/*****************  Bit definition for FDCAN_CREL register  *******************/\n#define FDCAN_CREL_DAY_Pos        (0U)\n#define FDCAN_CREL_DAY_Msk        (0xFFUL << FDCAN_CREL_DAY_Pos)               /*!< 0x000000FF */\n#define FDCAN_CREL_DAY            FDCAN_CREL_DAY_Msk                           /*!<Timestamp Day                           */\n#define FDCAN_CREL_MON_Pos        (8U)\n#define FDCAN_CREL_MON_Msk        (0xFFUL << FDCAN_CREL_MON_Pos)               /*!< 0x0000FF00 */\n#define FDCAN_CREL_MON            FDCAN_CREL_MON_Msk                           /*!<Timestamp Month                         */\n#define FDCAN_CREL_YEAR_Pos       (16U)\n#define FDCAN_CREL_YEAR_Msk       (0xFUL << FDCAN_CREL_YEAR_Pos)               /*!< 0x000F0000 */\n#define FDCAN_CREL_YEAR           FDCAN_CREL_YEAR_Msk                          /*!<Timestamp Year                          */\n#define FDCAN_CREL_SUBSTEP_Pos    (20U)\n#define FDCAN_CREL_SUBSTEP_Msk    (0xFUL << FDCAN_CREL_SUBSTEP_Pos)            /*!< 0x00F00000 */\n#define FDCAN_CREL_SUBSTEP        FDCAN_CREL_SUBSTEP_Msk                       /*!<Sub-step of Core release                */\n#define FDCAN_CREL_STEP_Pos       (24U)\n#define FDCAN_CREL_STEP_Msk       (0xFUL << FDCAN_CREL_STEP_Pos)               /*!< 0x0F000000 */\n#define FDCAN_CREL_STEP           FDCAN_CREL_STEP_Msk                          /*!<Step of Core release                    */\n#define FDCAN_CREL_REL_Pos        (28U)\n#define FDCAN_CREL_REL_Msk        (0xFUL << FDCAN_CREL_REL_Pos)                /*!< 0xF0000000 */\n#define FDCAN_CREL_REL            FDCAN_CREL_REL_Msk                           /*!<Core release                            */\n\n/*****************  Bit definition for FDCAN_ENDN register  *******************/\n#define FDCAN_ENDN_ETV_Pos        (0U)\n#define FDCAN_ENDN_ETV_Msk        (0xFFFFFFFFUL << FDCAN_ENDN_ETV_Pos)         /*!< 0xFFFFFFFF */\n#define FDCAN_ENDN_ETV            FDCAN_ENDN_ETV_Msk                           /*!<Endianness Test Value                   */\n\n/*****************  Bit definition for FDCAN_DBTP register  *******************/\n#define FDCAN_DBTP_DSJW_Pos       (0U)\n#define FDCAN_DBTP_DSJW_Msk       (0xFUL << FDCAN_DBTP_DSJW_Pos)               /*!< 0x0000000F */\n#define FDCAN_DBTP_DSJW           FDCAN_DBTP_DSJW_Msk                          /*!<Synchronization Jump Width              */\n#define FDCAN_DBTP_DTSEG2_Pos     (4U)\n#define FDCAN_DBTP_DTSEG2_Msk     (0xFUL << FDCAN_DBTP_DTSEG2_Pos)             /*!< 0x000000F0 */\n#define FDCAN_DBTP_DTSEG2         FDCAN_DBTP_DTSEG2_Msk                        /*!<Data time segment after sample point    */\n#define FDCAN_DBTP_DTSEG1_Pos     (8U)\n#define FDCAN_DBTP_DTSEG1_Msk     (0x1FUL << FDCAN_DBTP_DTSEG1_Pos)            /*!< 0x00001F00 */\n#define FDCAN_DBTP_DTSEG1         FDCAN_DBTP_DTSEG1_Msk                        /*!<Data time segment before sample point   */\n#define FDCAN_DBTP_DBRP_Pos       (16U)\n#define FDCAN_DBTP_DBRP_Msk       (0x1FUL << FDCAN_DBTP_DBRP_Pos)              /*!< 0x001F0000 */\n#define FDCAN_DBTP_DBRP           FDCAN_DBTP_DBRP_Msk                          /*!<Data BIt Rate Prescaler                 */\n#define FDCAN_DBTP_TDC_Pos        (23U)\n#define FDCAN_DBTP_TDC_Msk        (0x1UL << FDCAN_DBTP_TDC_Pos)                /*!< 0x00800000 */\n#define FDCAN_DBTP_TDC            FDCAN_DBTP_TDC_Msk                           /*!<Transceiver Delay Compensation          */\n\n/*****************  Bit definition for FDCAN_TEST register  *******************/\n#define FDCAN_TEST_LBCK_Pos       (4U)\n#define FDCAN_TEST_LBCK_Msk       (0x1UL << FDCAN_TEST_LBCK_Pos)               /*!< 0x00000010 */\n#define FDCAN_TEST_LBCK           FDCAN_TEST_LBCK_Msk                          /*!<Loop Back mode                           */\n#define FDCAN_TEST_TX_Pos         (5U)\n#define FDCAN_TEST_TX_Msk         (0x3UL << FDCAN_TEST_TX_Pos)                 /*!< 0x00000060 */\n#define FDCAN_TEST_TX             FDCAN_TEST_TX_Msk                            /*!<Control of Transmit Pin                  */\n#define FDCAN_TEST_RX_Pos         (7U)\n#define FDCAN_TEST_RX_Msk         (0x1UL << FDCAN_TEST_RX_Pos)                 /*!< 0x00000080 */\n#define FDCAN_TEST_RX             FDCAN_TEST_RX_Msk                            /*!<Receive Pin                              */\n\n/*****************  Bit definition for FDCAN_RWD register  ********************/\n#define FDCAN_RWD_WDC_Pos         (0U)\n#define FDCAN_RWD_WDC_Msk         (0xFFUL << FDCAN_RWD_WDC_Pos)                /*!< 0x000000FF */\n#define FDCAN_RWD_WDC             FDCAN_RWD_WDC_Msk                            /*!<Watchdog configuration                   */\n#define FDCAN_RWD_WDV_Pos         (8U)\n#define FDCAN_RWD_WDV_Msk         (0xFFUL << FDCAN_RWD_WDV_Pos)                /*!< 0x0000FF00 */\n#define FDCAN_RWD_WDV             FDCAN_RWD_WDV_Msk                            /*!<Watchdog value                           */\n\n/*****************  Bit definition for FDCAN_CCCR register  ********************/\n#define FDCAN_CCCR_INIT_Pos       (0U)\n#define FDCAN_CCCR_INIT_Msk       (0x1UL << FDCAN_CCCR_INIT_Pos)               /*!< 0x00000001 */\n#define FDCAN_CCCR_INIT           FDCAN_CCCR_INIT_Msk                          /*!<Initialization                           */\n#define FDCAN_CCCR_CCE_Pos        (1U)\n#define FDCAN_CCCR_CCE_Msk        (0x1UL << FDCAN_CCCR_CCE_Pos)                /*!< 0x00000002 */\n#define FDCAN_CCCR_CCE            FDCAN_CCCR_CCE_Msk                           /*!<Configuration Change Enable              */\n#define FDCAN_CCCR_ASM_Pos        (2U)\n#define FDCAN_CCCR_ASM_Msk        (0x1UL << FDCAN_CCCR_ASM_Pos)                /*!< 0x00000004 */\n#define FDCAN_CCCR_ASM            FDCAN_CCCR_ASM_Msk                           /*!<ASM Restricted Operation Mode            */\n#define FDCAN_CCCR_CSA_Pos        (3U)\n#define FDCAN_CCCR_CSA_Msk        (0x1UL << FDCAN_CCCR_CSA_Pos)                /*!< 0x00000008 */\n#define FDCAN_CCCR_CSA            FDCAN_CCCR_CSA_Msk                           /*!<Clock Stop Acknowledge                   */\n#define FDCAN_CCCR_CSR_Pos        (4U)\n#define FDCAN_CCCR_CSR_Msk        (0x1UL << FDCAN_CCCR_CSR_Pos)                /*!< 0x00000010 */\n#define FDCAN_CCCR_CSR            FDCAN_CCCR_CSR_Msk                           /*!<Clock Stop Request                       */\n#define FDCAN_CCCR_MON_Pos        (5U)\n#define FDCAN_CCCR_MON_Msk        (0x1UL << FDCAN_CCCR_MON_Pos)                /*!< 0x00000020 */\n#define FDCAN_CCCR_MON            FDCAN_CCCR_MON_Msk                           /*!<Bus Monitoring Mode                      */\n#define FDCAN_CCCR_DAR_Pos        (6U)\n#define FDCAN_CCCR_DAR_Msk        (0x1UL << FDCAN_CCCR_DAR_Pos)                /*!< 0x00000040 */\n#define FDCAN_CCCR_DAR            FDCAN_CCCR_DAR_Msk                           /*!<Disable Automatic Retransmission         */\n#define FDCAN_CCCR_TEST_Pos       (7U)\n#define FDCAN_CCCR_TEST_Msk       (0x1UL << FDCAN_CCCR_TEST_Pos)               /*!< 0x00000080 */\n#define FDCAN_CCCR_TEST           FDCAN_CCCR_TEST_Msk                          /*!<Test Mode Enable                         */\n#define FDCAN_CCCR_FDOE_Pos       (8U)\n#define FDCAN_CCCR_FDOE_Msk       (0x1UL << FDCAN_CCCR_FDOE_Pos)               /*!< 0x00000100 */\n#define FDCAN_CCCR_FDOE           FDCAN_CCCR_FDOE_Msk                          /*!<FD Operation Enable                      */\n#define FDCAN_CCCR_BRSE_Pos       (9U)\n#define FDCAN_CCCR_BRSE_Msk       (0x1UL << FDCAN_CCCR_BRSE_Pos)               /*!< 0x00000200 */\n#define FDCAN_CCCR_BRSE           FDCAN_CCCR_BRSE_Msk                          /*!<FDCAN Bit Rate Switching                 */\n#define FDCAN_CCCR_PXHD_Pos       (12U)\n#define FDCAN_CCCR_PXHD_Msk       (0x1UL << FDCAN_CCCR_PXHD_Pos)               /*!< 0x00001000 */\n#define FDCAN_CCCR_PXHD           FDCAN_CCCR_PXHD_Msk                          /*!<Protocol Exception Handling Disable      */\n#define FDCAN_CCCR_EFBI_Pos       (13U)\n#define FDCAN_CCCR_EFBI_Msk       (0x1UL << FDCAN_CCCR_EFBI_Pos)               /*!< 0x00002000 */\n#define FDCAN_CCCR_EFBI           FDCAN_CCCR_EFBI_Msk                          /*!<Edge Filtering during Bus Integration    */\n#define FDCAN_CCCR_TXP_Pos        (14U)\n#define FDCAN_CCCR_TXP_Msk        (0x1UL << FDCAN_CCCR_TXP_Pos)                /*!< 0x00004000 */\n#define FDCAN_CCCR_TXP            FDCAN_CCCR_TXP_Msk                           /*!<Two CAN bit times Pause                  */\n#define FDCAN_CCCR_NISO_Pos       (15U)\n#define FDCAN_CCCR_NISO_Msk       (0x1UL << FDCAN_CCCR_NISO_Pos)               /*!< 0x00008000 */\n#define FDCAN_CCCR_NISO           FDCAN_CCCR_NISO_Msk                          /*!<Non ISO Operation                        */\n\n/*****************  Bit definition for FDCAN_NBTP register  ********************/\n#define FDCAN_NBTP_NTSEG2_Pos     (0U)\n#define FDCAN_NBTP_NTSEG2_Msk     (0x7FUL << FDCAN_NBTP_NTSEG2_Pos)            /*!< 0x0000007F */\n#define FDCAN_NBTP_NTSEG2         FDCAN_NBTP_NTSEG2_Msk                        /*!<Nominal Time segment after sample point  */\n#define FDCAN_NBTP_NTSEG1_Pos     (8U)\n#define FDCAN_NBTP_NTSEG1_Msk     (0xFFUL << FDCAN_NBTP_NTSEG1_Pos)            /*!< 0x0000FF00 */\n#define FDCAN_NBTP_NTSEG1         FDCAN_NBTP_NTSEG1_Msk                        /*!<Nominal Time segment before sample point */\n#define FDCAN_NBTP_NBRP_Pos       (16U)\n#define FDCAN_NBTP_NBRP_Msk       (0x1FFUL << FDCAN_NBTP_NBRP_Pos)             /*!< 0x01FF0000 */\n#define FDCAN_NBTP_NBRP           FDCAN_NBTP_NBRP_Msk                          /*!<Bit Rate Prescaler                       */\n#define FDCAN_NBTP_NSJW_Pos       (25U)\n#define FDCAN_NBTP_NSJW_Msk       (0x7FUL << FDCAN_NBTP_NSJW_Pos)              /*!< 0xFE000000 */\n#define FDCAN_NBTP_NSJW           FDCAN_NBTP_NSJW_Msk                          /*!<Nominal (Re)Synchronization Jump Width   */\n\n/*****************  Bit definition for FDCAN_TSCC register  ********************/\n#define FDCAN_TSCC_TSS_Pos        (0U)\n#define FDCAN_TSCC_TSS_Msk        (0x3UL << FDCAN_TSCC_TSS_Pos)                /*!< 0x00000003 */\n#define FDCAN_TSCC_TSS            FDCAN_TSCC_TSS_Msk                           /*!<Timestamp Select                         */\n#define FDCAN_TSCC_TCP_Pos        (16U)\n#define FDCAN_TSCC_TCP_Msk        (0xFUL << FDCAN_TSCC_TCP_Pos)                /*!< 0x000F0000 */\n#define FDCAN_TSCC_TCP            FDCAN_TSCC_TCP_Msk                           /*!<Timestamp Counter Prescaler              */\n\n/*****************  Bit definition for FDCAN_TSCV register  ********************/\n#define FDCAN_TSCV_TSC_Pos        (0U)\n#define FDCAN_TSCV_TSC_Msk        (0xFFFFUL << FDCAN_TSCV_TSC_Pos)             /*!< 0x0000FFFF */\n#define FDCAN_TSCV_TSC            FDCAN_TSCV_TSC_Msk                           /*!<Timestamp Counter                        */\n\n/*****************  Bit definition for FDCAN_TOCC register  ********************/\n#define FDCAN_TOCC_ETOC_Pos       (0U)\n#define FDCAN_TOCC_ETOC_Msk       (0x1UL << FDCAN_TOCC_ETOC_Pos)               /*!< 0x00000001 */\n#define FDCAN_TOCC_ETOC           FDCAN_TOCC_ETOC_Msk                          /*!<Enable Timeout Counter                   */\n#define FDCAN_TOCC_TOS_Pos        (1U)\n#define FDCAN_TOCC_TOS_Msk        (0x3UL << FDCAN_TOCC_TOS_Pos)                /*!< 0x00000006 */\n#define FDCAN_TOCC_TOS            FDCAN_TOCC_TOS_Msk                           /*!<Timeout Select                           */\n#define FDCAN_TOCC_TOP_Pos        (16U)\n#define FDCAN_TOCC_TOP_Msk        (0xFFFFUL << FDCAN_TOCC_TOP_Pos)             /*!< 0xFFFF0000 */\n#define FDCAN_TOCC_TOP            FDCAN_TOCC_TOP_Msk                           /*!<Timeout Period                           */\n\n/*****************  Bit definition for FDCAN_TOCV register  ********************/\n#define FDCAN_TOCV_TOC_Pos        (0U)\n#define FDCAN_TOCV_TOC_Msk        (0xFFFFUL << FDCAN_TOCV_TOC_Pos)             /*!< 0x0000FFFF */\n#define FDCAN_TOCV_TOC            FDCAN_TOCV_TOC_Msk                           /*!<Timeout Counter                          */\n\n/*****************  Bit definition for FDCAN_ECR register  *********************/\n#define FDCAN_ECR_TEC_Pos         (0U)\n#define FDCAN_ECR_TEC_Msk         (0xFFUL << FDCAN_ECR_TEC_Pos)                 /*!< 0x000000FF */\n#define FDCAN_ECR_TEC             FDCAN_ECR_TEC_Msk                            /*!<Transmit Error Counter                   */\n#define FDCAN_ECR_REC_Pos         (8U)\n#define FDCAN_ECR_REC_Msk         (0x7FUL << FDCAN_ECR_REC_Pos)                /*!< 0x00007F00 */\n#define FDCAN_ECR_REC             FDCAN_ECR_REC_Msk                            /*!<Receive Error Counter                    */\n#define FDCAN_ECR_RP_Pos          (15U)\n#define FDCAN_ECR_RP_Msk          (0x1UL << FDCAN_ECR_RP_Pos)                  /*!< 0x00008000 */\n#define FDCAN_ECR_RP              FDCAN_ECR_RP_Msk                             /*!<Receive Error Passive                    */\n#define FDCAN_ECR_CEL_Pos         (16U)\n#define FDCAN_ECR_CEL_Msk         (0xFFUL << FDCAN_ECR_CEL_Pos)                /*!< 0x00FF0000 */\n#define FDCAN_ECR_CEL             FDCAN_ECR_CEL_Msk                            /*!<CAN Error Logging                        */\n\n/*****************  Bit definition for FDCAN_PSR register  *********************/\n#define FDCAN_PSR_LEC_Pos         (0U)\n#define FDCAN_PSR_LEC_Msk         (0x7UL << FDCAN_PSR_LEC_Pos)                 /*!< 0x00000007 */\n#define FDCAN_PSR_LEC             FDCAN_PSR_LEC_Msk                            /*!<Last Error Code                          */\n#define FDCAN_PSR_ACT_Pos         (3U)\n#define FDCAN_PSR_ACT_Msk         (0x3UL << FDCAN_PSR_ACT_Pos)                 /*!< 0x00000018 */\n#define FDCAN_PSR_ACT             FDCAN_PSR_ACT_Msk                            /*!<Activity                                 */\n#define FDCAN_PSR_EP_Pos          (5U)\n#define FDCAN_PSR_EP_Msk          (0x1UL << FDCAN_PSR_EP_Pos)                  /*!< 0x00000020 */\n#define FDCAN_PSR_EP              FDCAN_PSR_EP_Msk                             /*!<Error Passive                            */\n#define FDCAN_PSR_EW_Pos          (6U)\n#define FDCAN_PSR_EW_Msk          (0x1UL << FDCAN_PSR_EW_Pos)                  /*!< 0x00000040 */\n#define FDCAN_PSR_EW              FDCAN_PSR_EW_Msk                             /*!<Warning Status                           */\n#define FDCAN_PSR_BO_Pos          (7U)\n#define FDCAN_PSR_BO_Msk          (0x1UL << FDCAN_PSR_BO_Pos)                  /*!< 0x00000080 */\n#define FDCAN_PSR_BO              FDCAN_PSR_BO_Msk                             /*!<Bus_Off Status                           */\n#define FDCAN_PSR_DLEC_Pos        (8U)\n#define FDCAN_PSR_DLEC_Msk        (0x7UL << FDCAN_PSR_DLEC_Pos)                /*!< 0x00000700 */\n#define FDCAN_PSR_DLEC            FDCAN_PSR_DLEC_Msk                           /*!<Data Last Error Code                     */\n#define FDCAN_PSR_RESI_Pos        (11U)\n#define FDCAN_PSR_RESI_Msk        (0x1UL << FDCAN_PSR_RESI_Pos)                /*!< 0x00000800 */\n#define FDCAN_PSR_RESI            FDCAN_PSR_RESI_Msk                           /*!<ESI flag of last received FDCAN Message  */\n#define FDCAN_PSR_RBRS_Pos        (12U)\n#define FDCAN_PSR_RBRS_Msk        (0x1UL << FDCAN_PSR_RBRS_Pos)                /*!< 0x00001000 */\n#define FDCAN_PSR_RBRS            FDCAN_PSR_RBRS_Msk                           /*!<BRS flag of last received FDCAN Message  */\n#define FDCAN_PSR_REDL_Pos        (13U)\n#define FDCAN_PSR_REDL_Msk        (0x1UL << FDCAN_PSR_REDL_Pos)                /*!< 0x00002000 */\n#define FDCAN_PSR_REDL            FDCAN_PSR_REDL_Msk                           /*!<Received FDCAN Message                   */\n#define FDCAN_PSR_PXE_Pos         (14U)\n#define FDCAN_PSR_PXE_Msk         (0x1UL << FDCAN_PSR_PXE_Pos)                 /*!< 0x00004000 */\n#define FDCAN_PSR_PXE             FDCAN_PSR_PXE_Msk                            /*!<Protocol Exception Event                 */\n#define FDCAN_PSR_TDCV_Pos        (16U)\n#define FDCAN_PSR_TDCV_Msk        (0x7FUL << FDCAN_PSR_TDCV_Pos)               /*!< 0x007F0000 */\n#define FDCAN_PSR_TDCV            FDCAN_PSR_TDCV_Msk                           /*!<Transmitter Delay Compensation Value     */\n\n/*****************  Bit definition for FDCAN_TDCR register  ********************/\n#define FDCAN_TDCR_TDCF_Pos       (0U)\n#define FDCAN_TDCR_TDCF_Msk       (0x7FUL << FDCAN_TDCR_TDCF_Pos)              /*!< 0x0000007F */\n#define FDCAN_TDCR_TDCF           FDCAN_TDCR_TDCF_Msk                          /*!<Transmitter Delay Compensation Filter    */\n#define FDCAN_TDCR_TDCO_Pos       (8U)\n#define FDCAN_TDCR_TDCO_Msk       (0x7FUL << FDCAN_TDCR_TDCO_Pos)              /*!< 0x00007F00 */\n#define FDCAN_TDCR_TDCO           FDCAN_TDCR_TDCO_Msk                          /*!<Transmitter Delay Compensation Offset    */\n\n/*****************  Bit definition for FDCAN_IR register  **********************/\n#define FDCAN_IR_RF0N_Pos         (0U)\n#define FDCAN_IR_RF0N_Msk         (0x1UL << FDCAN_IR_RF0N_Pos)                 /*!< 0x00000001 */\n#define FDCAN_IR_RF0N             FDCAN_IR_RF0N_Msk                            /*!<Rx FIFO 0 New Message                    */\n#define FDCAN_IR_RF0W_Pos         (1U)\n#define FDCAN_IR_RF0W_Msk         (0x1UL << FDCAN_IR_RF0W_Pos)                 /*!< 0x00000002 */\n#define FDCAN_IR_RF0W             FDCAN_IR_RF0W_Msk                            /*!<Rx FIFO 0 Watermark Reached              */\n#define FDCAN_IR_RF0F_Pos         (2U)\n#define FDCAN_IR_RF0F_Msk         (0x1UL << FDCAN_IR_RF0F_Pos)                 /*!< 0x00000004 */\n#define FDCAN_IR_RF0F             FDCAN_IR_RF0F_Msk                            /*!<Rx FIFO 0 Full                           */\n#define FDCAN_IR_RF0L_Pos         (3U)\n#define FDCAN_IR_RF0L_Msk         (0x1UL << FDCAN_IR_RF0L_Pos)                 /*!< 0x00000008 */\n#define FDCAN_IR_RF0L             FDCAN_IR_RF0L_Msk                            /*!<Rx FIFO 0 Message Lost                   */\n#define FDCAN_IR_RF1N_Pos         (4U)\n#define FDCAN_IR_RF1N_Msk         (0x1UL << FDCAN_IR_RF1N_Pos)                 /*!< 0x00000010 */\n#define FDCAN_IR_RF1N             FDCAN_IR_RF1N_Msk                            /*!<Rx FIFO 1 New Message                    */\n#define FDCAN_IR_RF1W_Pos         (5U)\n#define FDCAN_IR_RF1W_Msk         (0x1UL << FDCAN_IR_RF1W_Pos)                 /*!< 0x00000020 */\n#define FDCAN_IR_RF1W             FDCAN_IR_RF1W_Msk                            /*!<Rx FIFO 1 Watermark Reached              */\n#define FDCAN_IR_RF1F_Pos         (6U)\n#define FDCAN_IR_RF1F_Msk         (0x1UL << FDCAN_IR_RF1F_Pos)                 /*!< 0x00000040 */\n#define FDCAN_IR_RF1F             FDCAN_IR_RF1F_Msk                            /*!<Rx FIFO 1 Full                           */\n#define FDCAN_IR_RF1L_Pos         (7U)\n#define FDCAN_IR_RF1L_Msk         (0x1UL << FDCAN_IR_RF1L_Pos)                 /*!< 0x00000080 */\n#define FDCAN_IR_RF1L             FDCAN_IR_RF1L_Msk                            /*!<Rx FIFO 1 Message Lost                   */\n#define FDCAN_IR_HPM_Pos          (8U)\n#define FDCAN_IR_HPM_Msk          (0x1UL << FDCAN_IR_HPM_Pos)                  /*!< 0x00000100 */\n#define FDCAN_IR_HPM              FDCAN_IR_HPM_Msk                             /*!<High Priority Message                    */\n#define FDCAN_IR_TC_Pos           (9U)\n#define FDCAN_IR_TC_Msk           (0x1UL << FDCAN_IR_TC_Pos)                   /*!< 0x00000200 */\n#define FDCAN_IR_TC               FDCAN_IR_TC_Msk                              /*!<Transmission Completed                   */\n#define FDCAN_IR_TCF_Pos          (10U)\n#define FDCAN_IR_TCF_Msk          (0x1UL << FDCAN_IR_TCF_Pos)                  /*!< 0x00000400 */\n#define FDCAN_IR_TCF              FDCAN_IR_TCF_Msk                             /*!<Transmission Cancellation Finished       */\n#define FDCAN_IR_TFE_Pos          (11U)\n#define FDCAN_IR_TFE_Msk          (0x1UL << FDCAN_IR_TFE_Pos)                  /*!< 0x00000800 */\n#define FDCAN_IR_TFE              FDCAN_IR_TFE_Msk                             /*!<Tx FIFO Empty                            */\n#define FDCAN_IR_TEFN_Pos         (12U)\n#define FDCAN_IR_TEFN_Msk         (0x1UL << FDCAN_IR_TEFN_Pos)                 /*!< 0x00001000 */\n#define FDCAN_IR_TEFN             FDCAN_IR_TEFN_Msk                            /*!<Tx Event FIFO New Entry                  */\n#define FDCAN_IR_TEFW_Pos         (13U)\n#define FDCAN_IR_TEFW_Msk         (0x1UL << FDCAN_IR_TEFW_Pos)                 /*!< 0x00002000 */\n#define FDCAN_IR_TEFW             FDCAN_IR_TEFW_Msk                            /*!<Tx Event FIFO Watermark Reached          */\n#define FDCAN_IR_TEFF_Pos         (14U)\n#define FDCAN_IR_TEFF_Msk         (0x1UL << FDCAN_IR_TEFF_Pos)                 /*!< 0x00004000 */\n#define FDCAN_IR_TEFF             FDCAN_IR_TEFF_Msk                            /*!<Tx Event FIFO Full                       */\n#define FDCAN_IR_TEFL_Pos         (15U)\n#define FDCAN_IR_TEFL_Msk         (0x1UL << FDCAN_IR_TEFL_Pos)                 /*!< 0x00008000 */\n#define FDCAN_IR_TEFL             FDCAN_IR_TEFL_Msk                            /*!<Tx Event FIFO Element Lost               */\n#define FDCAN_IR_TSW_Pos          (16U)\n#define FDCAN_IR_TSW_Msk          (0x1UL << FDCAN_IR_TSW_Pos)                  /*!< 0x00010000 */\n#define FDCAN_IR_TSW              FDCAN_IR_TSW_Msk                             /*!<Timestamp Wraparound                     */\n#define FDCAN_IR_MRAF_Pos         (17U)\n#define FDCAN_IR_MRAF_Msk         (0x1UL << FDCAN_IR_MRAF_Pos)                 /*!< 0x00020000 */\n#define FDCAN_IR_MRAF             FDCAN_IR_MRAF_Msk                            /*!<Message RAM Access Failure               */\n#define FDCAN_IR_TOO_Pos          (18U)\n#define FDCAN_IR_TOO_Msk          (0x1UL << FDCAN_IR_TOO_Pos)                  /*!< 0x00040000 */\n#define FDCAN_IR_TOO              FDCAN_IR_TOO_Msk                             /*!<Timeout Occurred                         */\n#define FDCAN_IR_DRX_Pos          (19U)\n#define FDCAN_IR_DRX_Msk          (0x1UL << FDCAN_IR_DRX_Pos)                  /*!< 0x00080000 */\n#define FDCAN_IR_DRX              FDCAN_IR_DRX_Msk                             /*!<Message stored to Dedicated Rx Buffer    */\n#define FDCAN_IR_ELO_Pos          (22U)\n#define FDCAN_IR_ELO_Msk          (0x1UL << FDCAN_IR_ELO_Pos)                  /*!< 0x00400000 */\n#define FDCAN_IR_ELO              FDCAN_IR_ELO_Msk                             /*!<Error Logging Overflow                   */\n#define FDCAN_IR_EP_Pos           (23U)\n#define FDCAN_IR_EP_Msk           (0x1UL << FDCAN_IR_EP_Pos)                   /*!< 0x00800000 */\n#define FDCAN_IR_EP               FDCAN_IR_EP_Msk                              /*!<Error Passive                            */\n#define FDCAN_IR_EW_Pos           (24U)\n#define FDCAN_IR_EW_Msk           (0x1UL << FDCAN_IR_EW_Pos)                   /*!< 0x01000000 */\n#define FDCAN_IR_EW               FDCAN_IR_EW_Msk                              /*!<Warning Status                           */\n#define FDCAN_IR_BO_Pos           (25U)\n#define FDCAN_IR_BO_Msk           (0x1UL << FDCAN_IR_BO_Pos)                   /*!< 0x02000000 */\n#define FDCAN_IR_BO               FDCAN_IR_BO_Msk                              /*!<Bus_Off Status                           */\n#define FDCAN_IR_WDI_Pos          (26U)\n#define FDCAN_IR_WDI_Msk          (0x1UL << FDCAN_IR_WDI_Pos)                  /*!< 0x04000000 */\n#define FDCAN_IR_WDI              FDCAN_IR_WDI_Msk                             /*!<Watchdog Interrupt                       */\n#define FDCAN_IR_PEA_Pos          (27U)\n#define FDCAN_IR_PEA_Msk          (0x1UL << FDCAN_IR_PEA_Pos)                  /*!< 0x08000000 */\n#define FDCAN_IR_PEA              FDCAN_IR_PEA_Msk                             /*!<Protocol Error in Arbitration Phase      */\n#define FDCAN_IR_PED_Pos          (28U)\n#define FDCAN_IR_PED_Msk          (0x1UL << FDCAN_IR_PED_Pos)                  /*!< 0x10000000 */\n#define FDCAN_IR_PED              FDCAN_IR_PED_Msk                             /*!<Protocol Error in Data Phase             */\n#define FDCAN_IR_ARA_Pos          (29U)\n#define FDCAN_IR_ARA_Msk          (0x1UL << FDCAN_IR_ARA_Pos)                  /*!< 0x20000000 */\n#define FDCAN_IR_ARA              FDCAN_IR_ARA_Msk                             /*!<Access to Reserved Address               */\n\n/*****************  Bit definition for FDCAN_IE register  **********************/\n#define FDCAN_IE_RF0NE_Pos        (0U)\n#define FDCAN_IE_RF0NE_Msk        (0x1UL << FDCAN_IE_RF0NE_Pos)                /*!< 0x00000001 */\n#define FDCAN_IE_RF0NE            FDCAN_IE_RF0NE_Msk                           /*!<Rx FIFO 0 New Message Enable                 */\n#define FDCAN_IE_RF0WE_Pos        (1U)\n#define FDCAN_IE_RF0WE_Msk        (0x1UL << FDCAN_IE_RF0WE_Pos)                /*!< 0x00000002 */\n#define FDCAN_IE_RF0WE            FDCAN_IE_RF0WE_Msk                           /*!<Rx FIFO 0 Watermark Reached Enable           */\n#define FDCAN_IE_RF0FE_Pos        (2U)\n#define FDCAN_IE_RF0FE_Msk        (0x1UL << FDCAN_IE_RF0FE_Pos)                /*!< 0x00000004 */\n#define FDCAN_IE_RF0FE            FDCAN_IE_RF0FE_Msk                           /*!<Rx FIFO 0 Full Enable                        */\n#define FDCAN_IE_RF0LE_Pos        (3U)\n#define FDCAN_IE_RF0LE_Msk        (0x1UL << FDCAN_IE_RF0LE_Pos)                /*!< 0x00000008 */\n#define FDCAN_IE_RF0LE            FDCAN_IE_RF0LE_Msk                           /*!<Rx FIFO 0 Message Lost Enable                */\n#define FDCAN_IE_RF1NE_Pos        (4U)\n#define FDCAN_IE_RF1NE_Msk        (0x1UL << FDCAN_IE_RF1NE_Pos)                /*!< 0x00000010 */\n#define FDCAN_IE_RF1NE            FDCAN_IE_RF1NE_Msk                           /*!<Rx FIFO 1 New Message Enable                 */\n#define FDCAN_IE_RF1WE_Pos        (5U)\n#define FDCAN_IE_RF1WE_Msk        (0x1UL << FDCAN_IE_RF1WE_Pos)                /*!< 0x00000020 */\n#define FDCAN_IE_RF1WE            FDCAN_IE_RF1WE_Msk                           /*!<Rx FIFO 1 Watermark Reached Enable           */\n#define FDCAN_IE_RF1FE_Pos        (6U)\n#define FDCAN_IE_RF1FE_Msk        (0x1UL << FDCAN_IE_RF1FE_Pos)                /*!< 0x00000040 */\n#define FDCAN_IE_RF1FE            FDCAN_IE_RF1FE_Msk                           /*!<Rx FIFO 1 Full Enable                        */\n#define FDCAN_IE_RF1LE_Pos        (7U)\n#define FDCAN_IE_RF1LE_Msk        (0x1UL << FDCAN_IE_RF1LE_Pos)                /*!< 0x00000080 */\n#define FDCAN_IE_RF1LE            FDCAN_IE_RF1LE_Msk                           /*!<Rx FIFO 1 Message Lost Enable                */\n#define FDCAN_IE_HPME_Pos         (8U)\n#define FDCAN_IE_HPME_Msk         (0x1UL << FDCAN_IE_HPME_Pos)                 /*!< 0x00000100 */\n#define FDCAN_IE_HPME             FDCAN_IE_HPME_Msk                            /*!<High Priority Message Enable                 */\n#define FDCAN_IE_TCE_Pos          (9U)\n#define FDCAN_IE_TCE_Msk          (0x1UL << FDCAN_IE_TCE_Pos)                  /*!< 0x00000200 */\n#define FDCAN_IE_TCE              FDCAN_IE_TCE_Msk                             /*!<Transmission Completed Enable                */\n#define FDCAN_IE_TCFE_Pos         (10U)\n#define FDCAN_IE_TCFE_Msk         (0x1UL << FDCAN_IE_TCFE_Pos)                 /*!< 0x00000400 */\n#define FDCAN_IE_TCFE             FDCAN_IE_TCFE_Msk                            /*!<Transmission Cancellation Finished Enable    */\n#define FDCAN_IE_TFEE_Pos         (11U)\n#define FDCAN_IE_TFEE_Msk         (0x1UL << FDCAN_IE_TFEE_Pos)                 /*!< 0x00000800 */\n#define FDCAN_IE_TFEE             FDCAN_IE_TFEE_Msk                            /*!<Tx FIFO Empty Enable                         */\n#define FDCAN_IE_TEFNE_Pos        (12U)\n#define FDCAN_IE_TEFNE_Msk        (0x1UL << FDCAN_IE_TEFNE_Pos)                /*!< 0x00001000 */\n#define FDCAN_IE_TEFNE            FDCAN_IE_TEFNE_Msk                           /*!<Tx Event FIFO New Entry Enable               */\n#define FDCAN_IE_TEFWE_Pos        (13U)\n#define FDCAN_IE_TEFWE_Msk        (0x1UL << FDCAN_IE_TEFWE_Pos)                /*!< 0x00002000 */\n#define FDCAN_IE_TEFWE            FDCAN_IE_TEFWE_Msk                           /*!<Tx Event FIFO Watermark Reached Enable       */\n#define FDCAN_IE_TEFFE_Pos        (14U)\n#define FDCAN_IE_TEFFE_Msk        (0x1UL << FDCAN_IE_TEFFE_Pos)                /*!< 0x00004000 */\n#define FDCAN_IE_TEFFE            FDCAN_IE_TEFFE_Msk                           /*!<Tx Event FIFO Full Enable                    */\n#define FDCAN_IE_TEFLE_Pos        (15U)\n#define FDCAN_IE_TEFLE_Msk        (0x1UL << FDCAN_IE_TEFLE_Pos)                /*!< 0x00008000 */\n#define FDCAN_IE_TEFLE            FDCAN_IE_TEFLE_Msk                           /*!<Tx Event FIFO Element Lost Enable            */\n#define FDCAN_IE_TSWE_Pos         (16U)\n#define FDCAN_IE_TSWE_Msk         (0x1UL << FDCAN_IE_TSWE_Pos)                 /*!< 0x00010000 */\n#define FDCAN_IE_TSWE             FDCAN_IE_TSWE_Msk                            /*!<Timestamp Wraparound Enable                  */\n#define FDCAN_IE_MRAFE_Pos        (17U)\n#define FDCAN_IE_MRAFE_Msk        (0x1UL << FDCAN_IE_MRAFE_Pos)                /*!< 0x00020000 */\n#define FDCAN_IE_MRAFE            FDCAN_IE_MRAFE_Msk                           /*!<Message RAM Access Failure Enable            */\n#define FDCAN_IE_TOOE_Pos         (18U)\n#define FDCAN_IE_TOOE_Msk         (0x1UL << FDCAN_IE_TOOE_Pos)                 /*!< 0x00040000 */\n#define FDCAN_IE_TOOE             FDCAN_IE_TOOE_Msk                            /*!<Timeout Occurred Enable                      */\n#define FDCAN_IE_DRXE_Pos         (19U)\n#define FDCAN_IE_DRXE_Msk         (0x1UL << FDCAN_IE_DRXE_Pos)                 /*!< 0x00080000 */\n#define FDCAN_IE_DRXE             FDCAN_IE_DRXE_Msk                            /*!<Message stored to Dedicated Rx Buffer Enable */\n#define FDCAN_IE_BECE_Pos         (20U)\n#define FDCAN_IE_BECE_Msk         (0x1UL << FDCAN_IE_BECE_Pos)                 /*!< 0x00100000 */\n#define FDCAN_IE_BECE             FDCAN_IE_BECE_Msk                            /*!<Bit Error Corrected Interrupt Enable         */\n#define FDCAN_IE_BEUE_Pos         (21U)\n#define FDCAN_IE_BEUE_Msk         (0x1UL << FDCAN_IE_BEUE_Pos)                 /*!< 0x00200000 */\n#define FDCAN_IE_BEUE             FDCAN_IE_BEUE_Msk                            /*!<Bit Error Uncorrected Interrupt Enable       */\n#define FDCAN_IE_ELOE_Pos         (22U)\n#define FDCAN_IE_ELOE_Msk         (0x1UL << FDCAN_IE_ELOE_Pos)                 /*!< 0x00400000 */\n#define FDCAN_IE_ELOE             FDCAN_IE_ELOE_Msk                            /*!<Error Logging Overflow Enable                */\n#define FDCAN_IE_EPE_Pos          (23U)\n#define FDCAN_IE_EPE_Msk          (0x1UL << FDCAN_IE_EPE_Pos)                  /*!< 0x00800000 */\n#define FDCAN_IE_EPE              FDCAN_IE_EPE_Msk                             /*!<Error Passive Enable                         */\n#define FDCAN_IE_EWE_Pos          (24U)\n#define FDCAN_IE_EWE_Msk          (0x1UL << FDCAN_IE_EWE_Pos)                  /*!< 0x01000000 */\n#define FDCAN_IE_EWE              FDCAN_IE_EWE_Msk                             /*!<Warning Status Enable                        */\n#define FDCAN_IE_BOE_Pos          (25U)\n#define FDCAN_IE_BOE_Msk          (0x1UL << FDCAN_IE_BOE_Pos)                  /*!< 0x02000000 */\n#define FDCAN_IE_BOE              FDCAN_IE_BOE_Msk                             /*!<Bus_Off Status Enable                        */\n#define FDCAN_IE_WDIE_Pos         (26U)\n#define FDCAN_IE_WDIE_Msk         (0x1UL << FDCAN_IE_WDIE_Pos)                 /*!< 0x04000000 */\n#define FDCAN_IE_WDIE             FDCAN_IE_WDIE_Msk                            /*!<Watchdog Interrupt Enable                    */\n#define FDCAN_IE_PEAE_Pos         (27U)\n#define FDCAN_IE_PEAE_Msk         (0x1UL << FDCAN_IE_PEAE_Pos)                 /*!< 0x08000000 */\n#define FDCAN_IE_PEAE             FDCAN_IE_PEAE_Msk                            /*!<Protocol Error in Arbitration Phase Enable   */\n#define FDCAN_IE_PEDE_Pos         (28U)\n#define FDCAN_IE_PEDE_Msk         (0x1UL << FDCAN_IE_PEDE_Pos)                 /*!< 0x10000000 */\n#define FDCAN_IE_PEDE             FDCAN_IE_PEDE_Msk                            /*!<Protocol Error in Data Phase Enable          */\n#define FDCAN_IE_ARAE_Pos         (29U)\n#define FDCAN_IE_ARAE_Msk         (0x1UL << FDCAN_IE_ARAE_Pos)                 /*!< 0x20000000 */\n#define FDCAN_IE_ARAE             FDCAN_IE_ARAE_Msk                            /*!<Access to Reserved Address Enable            */\n\n/*****************  Bit definition for FDCAN_ILS register  **********************/\n#define FDCAN_ILS_RF0NL_Pos       (0U)\n#define FDCAN_ILS_RF0NL_Msk       (0x1UL << FDCAN_ILS_RF0NL_Pos)               /*!< 0x00000001 */\n#define FDCAN_ILS_RF0NL           FDCAN_ILS_RF0NL_Msk                          /*!<Rx FIFO 0 New Message Line                  */\n#define FDCAN_ILS_RF0WL_Pos       (1U)\n#define FDCAN_ILS_RF0WL_Msk       (0x1UL << FDCAN_ILS_RF0WL_Pos)               /*!< 0x00000002 */\n#define FDCAN_ILS_RF0WL           FDCAN_ILS_RF0WL_Msk                          /*!<Rx FIFO 0 Watermark Reached Line            */\n#define FDCAN_ILS_RF0FL_Pos       (2U)\n#define FDCAN_ILS_RF0FL_Msk       (0x1UL << FDCAN_ILS_RF0FL_Pos)               /*!< 0x00000004 */\n#define FDCAN_ILS_RF0FL           FDCAN_ILS_RF0FL_Msk                          /*!<Rx FIFO 0 Full Line                         */\n#define FDCAN_ILS_RF0LL_Pos       (3U)\n#define FDCAN_ILS_RF0LL_Msk       (0x1UL << FDCAN_ILS_RF0LL_Pos)               /*!< 0x00000008 */\n#define FDCAN_ILS_RF0LL           FDCAN_ILS_RF0LL_Msk                          /*!<Rx FIFO 0 Message Lost Line                 */\n#define FDCAN_ILS_RF1NL_Pos       (4U)\n#define FDCAN_ILS_RF1NL_Msk       (0x1UL << FDCAN_ILS_RF1NL_Pos)               /*!< 0x00000010 */\n#define FDCAN_ILS_RF1NL           FDCAN_ILS_RF1NL_Msk                          /*!<Rx FIFO 1 New Message Line                  */\n#define FDCAN_ILS_RF1WL_Pos       (5U)\n#define FDCAN_ILS_RF1WL_Msk       (0x1UL << FDCAN_ILS_RF1WL_Pos)               /*!< 0x00000020 */\n#define FDCAN_ILS_RF1WL           FDCAN_ILS_RF1WL_Msk                          /*!<Rx FIFO 1 Watermark Reached Line            */\n#define FDCAN_ILS_RF1FL_Pos       (6U)\n#define FDCAN_ILS_RF1FL_Msk       (0x1UL << FDCAN_ILS_RF1FL_Pos)               /*!< 0x00000040 */\n#define FDCAN_ILS_RF1FL           FDCAN_ILS_RF1FL_Msk                          /*!<Rx FIFO 1 Full Line                         */\n#define FDCAN_ILS_RF1LL_Pos       (7U)\n#define FDCAN_ILS_RF1LL_Msk       (0x1UL << FDCAN_ILS_RF1LL_Pos)               /*!< 0x00000080 */\n#define FDCAN_ILS_RF1LL           FDCAN_ILS_RF1LL_Msk                          /*!<Rx FIFO 1 Message Lost Line                 */\n#define FDCAN_ILS_HPML_Pos        (8U)\n#define FDCAN_ILS_HPML_Msk        (0x1UL << FDCAN_ILS_HPML_Pos)                /*!< 0x00000100 */\n#define FDCAN_ILS_HPML            FDCAN_ILS_HPML_Msk                           /*!<High Priority Message Line                  */\n#define FDCAN_ILS_TCL_Pos         (9U)\n#define FDCAN_ILS_TCL_Msk         (0x1UL << FDCAN_ILS_TCL_Pos)                 /*!< 0x00000200 */\n#define FDCAN_ILS_TCL             FDCAN_ILS_TCL_Msk                            /*!<Transmission Completed Line                 */\n#define FDCAN_ILS_TCFL_Pos        (10U)\n#define FDCAN_ILS_TCFL_Msk        (0x1UL << FDCAN_ILS_TCFL_Pos)                /*!< 0x00000400 */\n#define FDCAN_ILS_TCFL            FDCAN_ILS_TCFL_Msk                           /*!<Transmission Cancellation Finished Line     */\n#define FDCAN_ILS_TFEL_Pos        (11U)\n#define FDCAN_ILS_TFEL_Msk        (0x1UL << FDCAN_ILS_TFEL_Pos)                /*!< 0x00000800 */\n#define FDCAN_ILS_TFEL            FDCAN_ILS_TFEL_Msk                           /*!<Tx FIFO Empty Line                          */\n#define FDCAN_ILS_TEFNL_Pos       (12U)\n#define FDCAN_ILS_TEFNL_Msk       (0x1UL << FDCAN_ILS_TEFNL_Pos)               /*!< 0x00001000 */\n#define FDCAN_ILS_TEFNL           FDCAN_ILS_TEFNL_Msk                          /*!<Tx Event FIFO New Entry Line                */\n#define FDCAN_ILS_TEFWL_Pos       (13U)\n#define FDCAN_ILS_TEFWL_Msk       (0x1UL << FDCAN_ILS_TEFWL_Pos)               /*!< 0x00002000 */\n#define FDCAN_ILS_TEFWL           FDCAN_ILS_TEFWL_Msk                          /*!<Tx Event FIFO Watermark Reached Line        */\n#define FDCAN_ILS_TEFFL_Pos       (14U)\n#define FDCAN_ILS_TEFFL_Msk       (0x1UL << FDCAN_ILS_TEFFL_Pos)               /*!< 0x00004000 */\n#define FDCAN_ILS_TEFFL           FDCAN_ILS_TEFFL_Msk                          /*!<Tx Event FIFO Full Line                     */\n#define FDCAN_ILS_TEFLL_Pos       (15U)\n#define FDCAN_ILS_TEFLL_Msk       (0x1UL << FDCAN_ILS_TEFLL_Pos)               /*!< 0x00008000 */\n#define FDCAN_ILS_TEFLL           FDCAN_ILS_TEFLL_Msk                          /*!<Tx Event FIFO Element Lost Line             */\n#define FDCAN_ILS_TSWL_Pos        (16U)\n#define FDCAN_ILS_TSWL_Msk        (0x1UL << FDCAN_ILS_TSWL_Pos)                /*!< 0x00010000 */\n#define FDCAN_ILS_TSWL            FDCAN_ILS_TSWL_Msk                           /*!<Timestamp Wraparound Line                   */\n#define FDCAN_ILS_MRAFE_Pos       (17U)\n#define FDCAN_ILS_MRAFE_Msk       (0x1UL << FDCAN_ILS_MRAFE_Pos)               /*!< 0x00020000 */\n#define FDCAN_ILS_MRAFE           FDCAN_ILS_MRAFE_Msk                          /*!<Message RAM Access Failure Line             */\n#define FDCAN_ILS_TOOE_Pos        (18U)\n#define FDCAN_ILS_TOOE_Msk        (0x1UL << FDCAN_ILS_TOOE_Pos)                /*!< 0x00040000 */\n#define FDCAN_ILS_TOOE            FDCAN_ILS_TOOE_Msk                           /*!<Timeout Occurred Line                       */\n#define FDCAN_ILS_DRXE_Pos        (19U)\n#define FDCAN_ILS_DRXE_Msk        (0x1UL << FDCAN_ILS_DRXE_Pos)                /*!< 0x00080000 */\n#define FDCAN_ILS_DRXE            FDCAN_ILS_DRXE_Msk                           /*!<Message stored to Dedicated Rx Buffer Line  */\n#define FDCAN_ILS_BECE_Pos        (20U)\n#define FDCAN_ILS_BECE_Msk        (0x1UL << FDCAN_ILS_BECE_Pos)                /*!< 0x00100000 */\n#define FDCAN_ILS_BECE            FDCAN_ILS_BECE_Msk                           /*!<Bit Error Corrected Interrupt Line          */\n#define FDCAN_ILS_BEUE_Pos        (21U)\n#define FDCAN_ILS_BEUE_Msk        (0x1UL << FDCAN_ILS_BEUE_Pos)                /*!< 0x00200000 */\n#define FDCAN_ILS_BEUE            FDCAN_ILS_BEUE_Msk                           /*!<Bit Error Uncorrected Interrupt Line        */\n#define FDCAN_ILS_ELOE_Pos        (22U)\n#define FDCAN_ILS_ELOE_Msk        (0x1UL << FDCAN_ILS_ELOE_Pos)                /*!< 0x00400000 */\n#define FDCAN_ILS_ELOE            FDCAN_ILS_ELOE_Msk                           /*!<Error Logging Overflow Line                 */\n#define FDCAN_ILS_EPE_Pos         (23U)\n#define FDCAN_ILS_EPE_Msk         (0x1UL << FDCAN_ILS_EPE_Pos)                 /*!< 0x00800000 */\n#define FDCAN_ILS_EPE             FDCAN_ILS_EPE_Msk                            /*!<Error Passive Line                          */\n#define FDCAN_ILS_EWE_Pos         (24U)\n#define FDCAN_ILS_EWE_Msk         (0x1UL << FDCAN_ILS_EWE_Pos)                 /*!< 0x01000000 */\n#define FDCAN_ILS_EWE             FDCAN_ILS_EWE_Msk                            /*!<Warning Status Line                         */\n#define FDCAN_ILS_BOE_Pos         (25U)\n#define FDCAN_ILS_BOE_Msk         (0x1UL << FDCAN_ILS_BOE_Pos)                 /*!< 0x02000000 */\n#define FDCAN_ILS_BOE             FDCAN_ILS_BOE_Msk                            /*!<Bus_Off Status Line                         */\n#define FDCAN_ILS_WDIE_Pos        (26U)\n#define FDCAN_ILS_WDIE_Msk        (0x1UL << FDCAN_ILS_WDIE_Pos)                /*!< 0x04000000 */\n#define FDCAN_ILS_WDIE            FDCAN_ILS_WDIE_Msk                           /*!<Watchdog Interrupt Line                     */\n#define FDCAN_ILS_PEAE_Pos        (27U)\n#define FDCAN_ILS_PEAE_Msk        (0x1UL << FDCAN_ILS_PEAE_Pos)                /*!< 0x08000000 */\n#define FDCAN_ILS_PEAE            FDCAN_ILS_PEAE_Msk                           /*!<Protocol Error in Arbitration Phase Line    */\n#define FDCAN_ILS_PEDE_Pos        (28U)\n#define FDCAN_ILS_PEDE_Msk        (0x1UL << FDCAN_ILS_PEDE_Pos)                /*!< 0x10000000 */\n#define FDCAN_ILS_PEDE            FDCAN_ILS_PEDE_Msk                           /*!<Protocol Error in Data Phase Line           */\n#define FDCAN_ILS_ARAE_Pos        (29U)\n#define FDCAN_ILS_ARAE_Msk        (0x1UL << FDCAN_ILS_ARAE_Pos)                /*!< 0x20000000 */\n#define FDCAN_ILS_ARAE            FDCAN_ILS_ARAE_Msk                           /*!<Access to Reserved Address Line             */\n\n/*****************  Bit definition for FDCAN_ILE register  **********************/\n#define FDCAN_ILE_EINT0_Pos       (0U)\n#define FDCAN_ILE_EINT0_Msk       (0x1UL << FDCAN_ILE_EINT0_Pos)               /*!< 0x00000001 */\n#define FDCAN_ILE_EINT0           FDCAN_ILE_EINT0_Msk                          /*!<Enable Interrupt Line 0                   */\n#define FDCAN_ILE_EINT1_Pos       (1U)\n#define FDCAN_ILE_EINT1_Msk       (0x1UL << FDCAN_ILE_EINT1_Pos)               /*!< 0x00000002 */\n#define FDCAN_ILE_EINT1           FDCAN_ILE_EINT1_Msk                          /*!<Enable Interrupt Line 1                   */\n\n/*****************  Bit definition for FDCAN_GFC register  **********************/\n#define FDCAN_GFC_RRFE_Pos        (0U)\n#define FDCAN_GFC_RRFE_Msk        (0x1UL << FDCAN_GFC_RRFE_Pos)                /*!< 0x00000001 */\n#define FDCAN_GFC_RRFE            FDCAN_GFC_RRFE_Msk                           /*!<Reject Remote Frames Extended             */\n#define FDCAN_GFC_RRFS_Pos        (1U)\n#define FDCAN_GFC_RRFS_Msk        (0x1UL << FDCAN_GFC_RRFS_Pos)                /*!< 0x00000002 */\n#define FDCAN_GFC_RRFS            FDCAN_GFC_RRFS_Msk                           /*!<Reject Remote Frames Standard             */\n#define FDCAN_GFC_ANFE_Pos        (2U)\n#define FDCAN_GFC_ANFE_Msk        (0x3UL << FDCAN_GFC_ANFE_Pos)                /*!< 0x0000000C */\n#define FDCAN_GFC_ANFE            FDCAN_GFC_ANFE_Msk                           /*!<Accept Non-matching Frames Extended       */\n#define FDCAN_GFC_ANFS_Pos        (4U)\n#define FDCAN_GFC_ANFS_Msk        (0x3UL << FDCAN_GFC_ANFS_Pos)                /*!< 0x00000030 */\n#define FDCAN_GFC_ANFS            FDCAN_GFC_ANFS_Msk                           /*!<Accept Non-matching Frames Standard       */\n\n/*****************  Bit definition for FDCAN_SIDFC register  ********************/\n#define FDCAN_SIDFC_FLSSA_Pos     (2U)\n#define FDCAN_SIDFC_FLSSA_Msk     (0x3FFFUL << FDCAN_SIDFC_FLSSA_Pos)          /*!< 0x0000FFFC */\n#define FDCAN_SIDFC_FLSSA         FDCAN_SIDFC_FLSSA_Msk                        /*!<Filter List Standard Start Address        */\n#define FDCAN_SIDFC_LSS_Pos       (16U)\n#define FDCAN_SIDFC_LSS_Msk       (0xFFUL << FDCAN_SIDFC_LSS_Pos)              /*!< 0x00FF0000 */\n#define FDCAN_SIDFC_LSS           FDCAN_SIDFC_LSS_Msk                          /*!<List Size Standard                        */\n\n/*****************  Bit definition for FDCAN_XIDFC register  ********************/\n#define FDCAN_XIDFC_FLESA_Pos     (2U)\n#define FDCAN_XIDFC_FLESA_Msk     (0x3FFFUL << FDCAN_XIDFC_FLESA_Pos)          /*!< 0x0000FFFC */\n#define FDCAN_XIDFC_FLESA         FDCAN_XIDFC_FLESA_Msk                        /*!<Filter List Standard Start Address        */\n#define FDCAN_XIDFC_LSE_Pos       (16U)\n#define FDCAN_XIDFC_LSE_Msk       (0x7FUL << FDCAN_XIDFC_LSE_Pos)              /*!< 0x007F0000 */\n#define FDCAN_XIDFC_LSE           FDCAN_XIDFC_LSE_Msk                          /*!<List Size Extended                        */\n\n/*****************  Bit definition for FDCAN_XIDAM register  ********************/\n#define FDCAN_XIDAM_EIDM_Pos      (0U)\n#define FDCAN_XIDAM_EIDM_Msk      (0x1FFFFFFFUL << FDCAN_XIDAM_EIDM_Pos)       /*!< 0x1FFFFFFF */\n#define FDCAN_XIDAM_EIDM          FDCAN_XIDAM_EIDM_Msk                         /*!<Extended ID Mask                          */\n\n/*****************  Bit definition for FDCAN_HPMS register  *********************/\n#define FDCAN_HPMS_BIDX_Pos       (0U)\n#define FDCAN_HPMS_BIDX_Msk       (0x3FUL << FDCAN_HPMS_BIDX_Pos)              /*!< 0x0000003F */\n#define FDCAN_HPMS_BIDX           FDCAN_HPMS_BIDX_Msk                          /*!<Buffer Index                              */\n#define FDCAN_HPMS_MSI_Pos        (6U)\n#define FDCAN_HPMS_MSI_Msk        (0x3UL << FDCAN_HPMS_MSI_Pos)                /*!< 0x000000C0 */\n#define FDCAN_HPMS_MSI            FDCAN_HPMS_MSI_Msk                           /*!<Message Storage Indicator                 */\n#define FDCAN_HPMS_FIDX_Pos       (8U)\n#define FDCAN_HPMS_FIDX_Msk       (0x7FUL << FDCAN_HPMS_FIDX_Pos)              /*!< 0x00007F00 */\n#define FDCAN_HPMS_FIDX           FDCAN_HPMS_FIDX_Msk                          /*!<Filter Index                              */\n#define FDCAN_HPMS_FLST_Pos       (15U)\n#define FDCAN_HPMS_FLST_Msk       (0x1UL << FDCAN_HPMS_FLST_Pos)               /*!< 0x00008000 */\n#define FDCAN_HPMS_FLST           FDCAN_HPMS_FLST_Msk                          /*!<Filter List                               */\n\n/*****************  Bit definition for FDCAN_NDAT1 register  ********************/\n#define FDCAN_NDAT1_ND0_Pos       (0U)\n#define FDCAN_NDAT1_ND0_Msk       (0x1UL << FDCAN_NDAT1_ND0_Pos)               /*!< 0x00000001 */\n#define FDCAN_NDAT1_ND0           FDCAN_NDAT1_ND0_Msk                          /*!<New Data flag of Rx Buffer 0              */\n#define FDCAN_NDAT1_ND1_Pos       (1U)\n#define FDCAN_NDAT1_ND1_Msk       (0x1UL << FDCAN_NDAT1_ND1_Pos)               /*!< 0x00000002 */\n#define FDCAN_NDAT1_ND1           FDCAN_NDAT1_ND1_Msk                          /*!<New Data flag of Rx Buffer 1              */\n#define FDCAN_NDAT1_ND2_Pos       (2U)\n#define FDCAN_NDAT1_ND2_Msk       (0x1UL << FDCAN_NDAT1_ND2_Pos)               /*!< 0x00000004 */\n#define FDCAN_NDAT1_ND2           FDCAN_NDAT1_ND2_Msk                          /*!<New Data flag of Rx Buffer 2              */\n#define FDCAN_NDAT1_ND3_Pos       (3U)\n#define FDCAN_NDAT1_ND3_Msk       (0x1UL << FDCAN_NDAT1_ND3_Pos)               /*!< 0x00000008 */\n#define FDCAN_NDAT1_ND3           FDCAN_NDAT1_ND3_Msk                          /*!<New Data flag of Rx Buffer 3              */\n#define FDCAN_NDAT1_ND4_Pos       (4U)\n#define FDCAN_NDAT1_ND4_Msk       (0x1UL << FDCAN_NDAT1_ND4_Pos)               /*!< 0x00000010 */\n#define FDCAN_NDAT1_ND4           FDCAN_NDAT1_ND4_Msk                          /*!<New Data flag of Rx Buffer 4              */\n#define FDCAN_NDAT1_ND5_Pos       (5U)\n#define FDCAN_NDAT1_ND5_Msk       (0x1UL << FDCAN_NDAT1_ND5_Pos)               /*!< 0x00000020 */\n#define FDCAN_NDAT1_ND5           FDCAN_NDAT1_ND5_Msk                          /*!<New Data flag of Rx Buffer 5              */\n#define FDCAN_NDAT1_ND6_Pos       (6U)\n#define FDCAN_NDAT1_ND6_Msk       (0x1UL << FDCAN_NDAT1_ND6_Pos)               /*!< 0x00000040 */\n#define FDCAN_NDAT1_ND6           FDCAN_NDAT1_ND6_Msk                          /*!<New Data flag of Rx Buffer 6              */\n#define FDCAN_NDAT1_ND7_Pos       (7U)\n#define FDCAN_NDAT1_ND7_Msk       (0x1UL << FDCAN_NDAT1_ND7_Pos)               /*!< 0x00000080 */\n#define FDCAN_NDAT1_ND7           FDCAN_NDAT1_ND7_Msk                          /*!<New Data flag of Rx Buffer 7              */\n#define FDCAN_NDAT1_ND8_Pos       (8U)\n#define FDCAN_NDAT1_ND8_Msk       (0x1UL << FDCAN_NDAT1_ND8_Pos)               /*!< 0x00000100 */\n#define FDCAN_NDAT1_ND8           FDCAN_NDAT1_ND8_Msk                          /*!<New Data flag of Rx Buffer 8              */\n#define FDCAN_NDAT1_ND9_Pos       (9U)\n#define FDCAN_NDAT1_ND9_Msk       (0x1UL << FDCAN_NDAT1_ND9_Pos)               /*!< 0x00000200 */\n#define FDCAN_NDAT1_ND9           FDCAN_NDAT1_ND9_Msk                          /*!<New Data flag of Rx Buffer 9              */\n#define FDCAN_NDAT1_ND10_Pos      (10U)\n#define FDCAN_NDAT1_ND10_Msk      (0x1UL << FDCAN_NDAT1_ND10_Pos)              /*!< 0x00000400 */\n#define FDCAN_NDAT1_ND10          FDCAN_NDAT1_ND10_Msk                         /*!<New Data flag of Rx Buffer 10             */\n#define FDCAN_NDAT1_ND11_Pos      (11U)\n#define FDCAN_NDAT1_ND11_Msk      (0x1UL << FDCAN_NDAT1_ND11_Pos)              /*!< 0x00000800 */\n#define FDCAN_NDAT1_ND11          FDCAN_NDAT1_ND11_Msk                         /*!<New Data flag of Rx Buffer 11             */\n#define FDCAN_NDAT1_ND12_Pos      (12U)\n#define FDCAN_NDAT1_ND12_Msk      (0x1UL << FDCAN_NDAT1_ND12_Pos)              /*!< 0x00001000 */\n#define FDCAN_NDAT1_ND12          FDCAN_NDAT1_ND12_Msk                         /*!<New Data flag of Rx Buffer 12             */\n#define FDCAN_NDAT1_ND13_Pos      (13U)\n#define FDCAN_NDAT1_ND13_Msk      (0x1UL << FDCAN_NDAT1_ND13_Pos)              /*!< 0x00002000 */\n#define FDCAN_NDAT1_ND13          FDCAN_NDAT1_ND13_Msk                         /*!<New Data flag of Rx Buffer 13             */\n#define FDCAN_NDAT1_ND14_Pos      (14U)\n#define FDCAN_NDAT1_ND14_Msk      (0x1UL << FDCAN_NDAT1_ND14_Pos)              /*!< 0x00004000 */\n#define FDCAN_NDAT1_ND14          FDCAN_NDAT1_ND14_Msk                         /*!<New Data flag of Rx Buffer 14             */\n#define FDCAN_NDAT1_ND15_Pos      (15U)\n#define FDCAN_NDAT1_ND15_Msk      (0x1UL << FDCAN_NDAT1_ND15_Pos)              /*!< 0x00008000 */\n#define FDCAN_NDAT1_ND15          FDCAN_NDAT1_ND15_Msk                         /*!<New Data flag of Rx Buffer 15             */\n#define FDCAN_NDAT1_ND16_Pos      (16U)\n#define FDCAN_NDAT1_ND16_Msk      (0x1UL << FDCAN_NDAT1_ND16_Pos)              /*!< 0x00010000 */\n#define FDCAN_NDAT1_ND16          FDCAN_NDAT1_ND16_Msk                         /*!<New Data flag of Rx Buffer 16             */\n#define FDCAN_NDAT1_ND17_Pos      (17U)\n#define FDCAN_NDAT1_ND17_Msk      (0x1UL << FDCAN_NDAT1_ND17_Pos)              /*!< 0x00020000 */\n#define FDCAN_NDAT1_ND17          FDCAN_NDAT1_ND17_Msk                         /*!<New Data flag of Rx Buffer 17             */\n#define FDCAN_NDAT1_ND18_Pos      (18U)\n#define FDCAN_NDAT1_ND18_Msk      (0x1UL << FDCAN_NDAT1_ND18_Pos)              /*!< 0x00040000 */\n#define FDCAN_NDAT1_ND18          FDCAN_NDAT1_ND18_Msk                         /*!<New Data flag of Rx Buffer 18             */\n#define FDCAN_NDAT1_ND19_Pos      (19U)\n#define FDCAN_NDAT1_ND19_Msk      (0x1UL << FDCAN_NDAT1_ND19_Pos)              /*!< 0x00080000 */\n#define FDCAN_NDAT1_ND19          FDCAN_NDAT1_ND19_Msk                         /*!<New Data flag of Rx Buffer 19             */\n#define FDCAN_NDAT1_ND20_Pos      (20U)\n#define FDCAN_NDAT1_ND20_Msk      (0x1UL << FDCAN_NDAT1_ND20_Pos)              /*!< 0x00100000 */\n#define FDCAN_NDAT1_ND20          FDCAN_NDAT1_ND20_Msk                         /*!<New Data flag of Rx Buffer 20             */\n#define FDCAN_NDAT1_ND21_Pos      (21U)\n#define FDCAN_NDAT1_ND21_Msk      (0x1UL << FDCAN_NDAT1_ND21_Pos)              /*!< 0x00200000 */\n#define FDCAN_NDAT1_ND21          FDCAN_NDAT1_ND21_Msk                         /*!<New Data flag of Rx Buffer 21             */\n#define FDCAN_NDAT1_ND22_Pos      (22U)\n#define FDCAN_NDAT1_ND22_Msk      (0x1UL << FDCAN_NDAT1_ND22_Pos)              /*!< 0x00400000 */\n#define FDCAN_NDAT1_ND22          FDCAN_NDAT1_ND22_Msk                         /*!<New Data flag of Rx Buffer 22             */\n#define FDCAN_NDAT1_ND23_Pos      (23U)\n#define FDCAN_NDAT1_ND23_Msk      (0x1UL << FDCAN_NDAT1_ND23_Pos)              /*!< 0x00800000 */\n#define FDCAN_NDAT1_ND23          FDCAN_NDAT1_ND23_Msk                         /*!<New Data flag of Rx Buffer 23             */\n#define FDCAN_NDAT1_ND24_Pos      (24U)\n#define FDCAN_NDAT1_ND24_Msk      (0x1UL << FDCAN_NDAT1_ND24_Pos)              /*!< 0x01000000 */\n#define FDCAN_NDAT1_ND24          FDCAN_NDAT1_ND24_Msk                         /*!<New Data flag of Rx Buffer 24             */\n#define FDCAN_NDAT1_ND25_Pos      (25U)\n#define FDCAN_NDAT1_ND25_Msk      (0x1UL << FDCAN_NDAT1_ND25_Pos)              /*!< 0x02000000 */\n#define FDCAN_NDAT1_ND25          FDCAN_NDAT1_ND25_Msk                         /*!<New Data flag of Rx Buffer 25             */\n#define FDCAN_NDAT1_ND26_Pos      (26U)\n#define FDCAN_NDAT1_ND26_Msk      (0x1UL << FDCAN_NDAT1_ND26_Pos)              /*!< 0x04000000 */\n#define FDCAN_NDAT1_ND26          FDCAN_NDAT1_ND26_Msk                         /*!<New Data flag of Rx Buffer 26             */\n#define FDCAN_NDAT1_ND27_Pos      (27U)\n#define FDCAN_NDAT1_ND27_Msk      (0x1UL << FDCAN_NDAT1_ND27_Pos)              /*!< 0x08000000 */\n#define FDCAN_NDAT1_ND27          FDCAN_NDAT1_ND27_Msk                         /*!<New Data flag of Rx Buffer 27             */\n#define FDCAN_NDAT1_ND28_Pos      (28U)\n#define FDCAN_NDAT1_ND28_Msk      (0x1UL << FDCAN_NDAT1_ND28_Pos)              /*!< 0x10000000 */\n#define FDCAN_NDAT1_ND28          FDCAN_NDAT1_ND28_Msk                         /*!<New Data flag of Rx Buffer 28             */\n#define FDCAN_NDAT1_ND29_Pos      (29U)\n#define FDCAN_NDAT1_ND29_Msk      (0x1UL << FDCAN_NDAT1_ND29_Pos)              /*!< 0x20000000 */\n#define FDCAN_NDAT1_ND29          FDCAN_NDAT1_ND29_Msk                         /*!<New Data flag of Rx Buffer 29             */\n#define FDCAN_NDAT1_ND30_Pos      (30U)\n#define FDCAN_NDAT1_ND30_Msk      (0x1UL << FDCAN_NDAT1_ND30_Pos)              /*!< 0x40000000 */\n#define FDCAN_NDAT1_ND30          FDCAN_NDAT1_ND30_Msk                         /*!<New Data flag of Rx Buffer 30             */\n#define FDCAN_NDAT1_ND31_Pos      (31U)\n#define FDCAN_NDAT1_ND31_Msk      (0x1UL << FDCAN_NDAT1_ND31_Pos)              /*!< 0x80000000 */\n#define FDCAN_NDAT1_ND31          FDCAN_NDAT1_ND31_Msk                         /*!<New Data flag of Rx Buffer 31             */\n\n/*****************  Bit definition for FDCAN_NDAT2 register  ********************/\n#define FDCAN_NDAT2_ND32_Pos      (0U)\n#define FDCAN_NDAT2_ND32_Msk      (0x1UL << FDCAN_NDAT2_ND32_Pos)              /*!< 0x00000001 */\n#define FDCAN_NDAT2_ND32          FDCAN_NDAT2_ND32_Msk                         /*!<New Data flag of Rx Buffer 32             */\n#define FDCAN_NDAT2_ND33_Pos      (1U)\n#define FDCAN_NDAT2_ND33_Msk      (0x1UL << FDCAN_NDAT2_ND33_Pos)              /*!< 0x00000002 */\n#define FDCAN_NDAT2_ND33          FDCAN_NDAT2_ND33_Msk                         /*!<New Data flag of Rx Buffer 33             */\n#define FDCAN_NDAT2_ND34_Pos      (2U)\n#define FDCAN_NDAT2_ND34_Msk      (0x1UL << FDCAN_NDAT2_ND34_Pos)              /*!< 0x00000004 */\n#define FDCAN_NDAT2_ND34          FDCAN_NDAT2_ND34_Msk                         /*!<New Data flag of Rx Buffer 34             */\n#define FDCAN_NDAT2_ND35_Pos      (3U)\n#define FDCAN_NDAT2_ND35_Msk      (0x1UL << FDCAN_NDAT2_ND35_Pos)              /*!< 0x00000008 */\n#define FDCAN_NDAT2_ND35          FDCAN_NDAT2_ND35_Msk                         /*!<New Data flag of Rx Buffer 35             */\n#define FDCAN_NDAT2_ND36_Pos      (4U)\n#define FDCAN_NDAT2_ND36_Msk      (0x1UL << FDCAN_NDAT2_ND36_Pos)              /*!< 0x00000010 */\n#define FDCAN_NDAT2_ND36          FDCAN_NDAT2_ND36_Msk                         /*!<New Data flag of Rx Buffer 36             */\n#define FDCAN_NDAT2_ND37_Pos      (5U)\n#define FDCAN_NDAT2_ND37_Msk      (0x1UL << FDCAN_NDAT2_ND37_Pos)              /*!< 0x00000020 */\n#define FDCAN_NDAT2_ND37          FDCAN_NDAT2_ND37_Msk                         /*!<New Data flag of Rx Buffer 37             */\n#define FDCAN_NDAT2_ND38_Pos      (6U)\n#define FDCAN_NDAT2_ND38_Msk      (0x1UL << FDCAN_NDAT2_ND38_Pos)              /*!< 0x00000040 */\n#define FDCAN_NDAT2_ND38          FDCAN_NDAT2_ND38_Msk                         /*!<New Data flag of Rx Buffer 38             */\n#define FDCAN_NDAT2_ND39_Pos      (7U)\n#define FDCAN_NDAT2_ND39_Msk      (0x1UL << FDCAN_NDAT2_ND39_Pos)              /*!< 0x00000080 */\n#define FDCAN_NDAT2_ND39          FDCAN_NDAT2_ND39_Msk                         /*!<New Data flag of Rx Buffer 39             */\n#define FDCAN_NDAT2_ND40_Pos      (8U)\n#define FDCAN_NDAT2_ND40_Msk      (0x1UL << FDCAN_NDAT2_ND40_Pos)              /*!< 0x00000100 */\n#define FDCAN_NDAT2_ND40          FDCAN_NDAT2_ND40_Msk                         /*!<New Data flag of Rx Buffer 40             */\n#define FDCAN_NDAT2_ND41_Pos      (9U)\n#define FDCAN_NDAT2_ND41_Msk      (0x1UL << FDCAN_NDAT2_ND41_Pos)              /*!< 0x00000200 */\n#define FDCAN_NDAT2_ND41          FDCAN_NDAT2_ND41_Msk                         /*!<New Data flag of Rx Buffer 41             */\n#define FDCAN_NDAT2_ND42_Pos      (10U)\n#define FDCAN_NDAT2_ND42_Msk      (0x1UL << FDCAN_NDAT2_ND42_Pos)              /*!< 0x00000400 */\n#define FDCAN_NDAT2_ND42          FDCAN_NDAT2_ND42_Msk                         /*!<New Data flag of Rx Buffer 42             */\n#define FDCAN_NDAT2_ND43_Pos      (11U)\n#define FDCAN_NDAT2_ND43_Msk      (0x1UL << FDCAN_NDAT2_ND43_Pos)              /*!< 0x00000800 */\n#define FDCAN_NDAT2_ND43          FDCAN_NDAT2_ND43_Msk                         /*!<New Data flag of Rx Buffer 43             */\n#define FDCAN_NDAT2_ND44_Pos      (12U)\n#define FDCAN_NDAT2_ND44_Msk      (0x1UL << FDCAN_NDAT2_ND44_Pos)              /*!< 0x00001000 */\n#define FDCAN_NDAT2_ND44          FDCAN_NDAT2_ND44_Msk                         /*!<New Data flag of Rx Buffer 44             */\n#define FDCAN_NDAT2_ND45_Pos      (13U)\n#define FDCAN_NDAT2_ND45_Msk      (0x1UL << FDCAN_NDAT2_ND45_Pos)              /*!< 0x00002000 */\n#define FDCAN_NDAT2_ND45          FDCAN_NDAT2_ND45_Msk                         /*!<New Data flag of Rx Buffer 45             */\n#define FDCAN_NDAT2_ND46_Pos      (14U)\n#define FDCAN_NDAT2_ND46_Msk      (0x1UL << FDCAN_NDAT2_ND46_Pos)              /*!< 0x00004000 */\n#define FDCAN_NDAT2_ND46          FDCAN_NDAT2_ND46_Msk                         /*!<New Data flag of Rx Buffer 46             */\n#define FDCAN_NDAT2_ND47_Pos      (15U)\n#define FDCAN_NDAT2_ND47_Msk      (0x1UL << FDCAN_NDAT2_ND47_Pos)              /*!< 0x00008000 */\n#define FDCAN_NDAT2_ND47          FDCAN_NDAT2_ND47_Msk                         /*!<New Data flag of Rx Buffer 47             */\n#define FDCAN_NDAT2_ND48_Pos      (16U)\n#define FDCAN_NDAT2_ND48_Msk      (0x1UL << FDCAN_NDAT2_ND48_Pos)              /*!< 0x00010000 */\n#define FDCAN_NDAT2_ND48          FDCAN_NDAT2_ND48_Msk                         /*!<New Data flag of Rx Buffer 48             */\n#define FDCAN_NDAT2_ND49_Pos      (17U)\n#define FDCAN_NDAT2_ND49_Msk      (0x1UL << FDCAN_NDAT2_ND49_Pos)              /*!< 0x00020000 */\n#define FDCAN_NDAT2_ND49          FDCAN_NDAT2_ND49_Msk                         /*!<New Data flag of Rx Buffer 49             */\n#define FDCAN_NDAT2_ND50_Pos      (18U)\n#define FDCAN_NDAT2_ND50_Msk      (0x1UL << FDCAN_NDAT2_ND50_Pos)              /*!< 0x00040000 */\n#define FDCAN_NDAT2_ND50          FDCAN_NDAT2_ND50_Msk                         /*!<New Data flag of Rx Buffer 50             */\n#define FDCAN_NDAT2_ND51_Pos      (19U)\n#define FDCAN_NDAT2_ND51_Msk      (0x1UL << FDCAN_NDAT2_ND51_Pos)              /*!< 0x00080000 */\n#define FDCAN_NDAT2_ND51          FDCAN_NDAT2_ND51_Msk                         /*!<New Data flag of Rx Buffer 51             */\n#define FDCAN_NDAT2_ND52_Pos      (20U)\n#define FDCAN_NDAT2_ND52_Msk      (0x1UL << FDCAN_NDAT2_ND52_Pos)              /*!< 0x00100000 */\n#define FDCAN_NDAT2_ND52          FDCAN_NDAT2_ND52_Msk                         /*!<New Data flag of Rx Buffer 52             */\n#define FDCAN_NDAT2_ND53_Pos      (21U)\n#define FDCAN_NDAT2_ND53_Msk      (0x1UL << FDCAN_NDAT2_ND53_Pos)              /*!< 0x00200000 */\n#define FDCAN_NDAT2_ND53          FDCAN_NDAT2_ND53_Msk                         /*!<New Data flag of Rx Buffer 53             */\n#define FDCAN_NDAT2_ND54_Pos      (22U)\n#define FDCAN_NDAT2_ND54_Msk      (0x1UL << FDCAN_NDAT2_ND54_Pos)              /*!< 0x00400000 */\n#define FDCAN_NDAT2_ND54          FDCAN_NDAT2_ND54_Msk                         /*!<New Data flag of Rx Buffer 54             */\n#define FDCAN_NDAT2_ND55_Pos      (23U)\n#define FDCAN_NDAT2_ND55_Msk      (0x1UL << FDCAN_NDAT2_ND55_Pos)              /*!< 0x00800000 */\n#define FDCAN_NDAT2_ND55          FDCAN_NDAT2_ND55_Msk                         /*!<New Data flag of Rx Buffer 55             */\n#define FDCAN_NDAT2_ND56_Pos      (24U)\n#define FDCAN_NDAT2_ND56_Msk      (0x1UL << FDCAN_NDAT2_ND56_Pos)              /*!< 0x01000000 */\n#define FDCAN_NDAT2_ND56          FDCAN_NDAT2_ND56_Msk                         /*!<New Data flag of Rx Buffer 56             */\n#define FDCAN_NDAT2_ND57_Pos      (25U)\n#define FDCAN_NDAT2_ND57_Msk      (0x1UL << FDCAN_NDAT2_ND57_Pos)              /*!< 0x02000000 */\n#define FDCAN_NDAT2_ND57          FDCAN_NDAT2_ND57_Msk                         /*!<New Data flag of Rx Buffer 57             */\n#define FDCAN_NDAT2_ND58_Pos      (26U)\n#define FDCAN_NDAT2_ND58_Msk      (0x1UL << FDCAN_NDAT2_ND58_Pos)              /*!< 0x04000000 */\n#define FDCAN_NDAT2_ND58          FDCAN_NDAT2_ND58_Msk                         /*!<New Data flag of Rx Buffer 58             */\n#define FDCAN_NDAT2_ND59_Pos      (27U)\n#define FDCAN_NDAT2_ND59_Msk      (0x1UL << FDCAN_NDAT2_ND59_Pos)              /*!< 0x08000000 */\n#define FDCAN_NDAT2_ND59          FDCAN_NDAT2_ND59_Msk                         /*!<New Data flag of Rx Buffer 59             */\n#define FDCAN_NDAT2_ND60_Pos      (28U)\n#define FDCAN_NDAT2_ND60_Msk      (0x1UL << FDCAN_NDAT2_ND60_Pos)              /*!< 0x10000000 */\n#define FDCAN_NDAT2_ND60          FDCAN_NDAT2_ND60_Msk                         /*!<New Data flag of Rx Buffer 60             */\n#define FDCAN_NDAT2_ND61_Pos      (29U)\n#define FDCAN_NDAT2_ND61_Msk      (0x1UL << FDCAN_NDAT2_ND61_Pos)              /*!< 0x20000000 */\n#define FDCAN_NDAT2_ND61          FDCAN_NDAT2_ND61_Msk                         /*!<New Data flag of Rx Buffer 61             */\n#define FDCAN_NDAT2_ND62_Pos      (30U)\n#define FDCAN_NDAT2_ND62_Msk      (0x1UL << FDCAN_NDAT2_ND62_Pos)              /*!< 0x40000000 */\n#define FDCAN_NDAT2_ND62          FDCAN_NDAT2_ND62_Msk                         /*!<New Data flag of Rx Buffer 62             */\n#define FDCAN_NDAT2_ND63_Pos      (31U)\n#define FDCAN_NDAT2_ND63_Msk      (0x1UL << FDCAN_NDAT2_ND63_Pos)              /*!< 0x80000000 */\n#define FDCAN_NDAT2_ND63          FDCAN_NDAT2_ND63_Msk                         /*!<New Data flag of Rx Buffer 63             */\n\n/*****************  Bit definition for FDCAN_RXF0C register  ********************/\n#define FDCAN_RXF0C_F0SA_Pos      (2U)\n#define FDCAN_RXF0C_F0SA_Msk      (0x3FFFUL << FDCAN_RXF0C_F0SA_Pos)           /*!< 0x0000FFFC */\n#define FDCAN_RXF0C_F0SA          FDCAN_RXF0C_F0SA_Msk                         /*!<Rx FIFO 0 Start Address                   */\n#define FDCAN_RXF0C_F0S_Pos       (16U)\n#define FDCAN_RXF0C_F0S_Msk       (0x7FUL << FDCAN_RXF0C_F0S_Pos)              /*!< 0x007F0000 */\n#define FDCAN_RXF0C_F0S           FDCAN_RXF0C_F0S_Msk                          /*!<Number of Rx FIFO 0 elements              */\n#define FDCAN_RXF0C_F0WM_Pos      (24U)\n#define FDCAN_RXF0C_F0WM_Msk      (0x7FUL << FDCAN_RXF0C_F0WM_Pos)             /*!< 0x7F000000 */\n#define FDCAN_RXF0C_F0WM          FDCAN_RXF0C_F0WM_Msk                         /*!<FIFO 0 Watermark                          */\n#define FDCAN_RXF0C_F0OM_Pos      (31U)\n#define FDCAN_RXF0C_F0OM_Msk      (0x1UL << FDCAN_RXF0C_F0OM_Pos)              /*!< 0x80000000 */\n#define FDCAN_RXF0C_F0OM          FDCAN_RXF0C_F0OM_Msk                         /*!<FIFO 0 Operation Mode                     */\n\n/*****************  Bit definition for FDCAN_RXF0S register  ********************/\n#define FDCAN_RXF0S_F0FL_Pos      (0U)\n#define FDCAN_RXF0S_F0FL_Msk      (0x7FUL << FDCAN_RXF0S_F0FL_Pos)             /*!< 0x0000007F */\n#define FDCAN_RXF0S_F0FL          FDCAN_RXF0S_F0FL_Msk                         /*!<Rx FIFO 0 Fill Level                      */\n#define FDCAN_RXF0S_F0GI_Pos      (8U)\n#define FDCAN_RXF0S_F0GI_Msk      (0x3FUL << FDCAN_RXF0S_F0GI_Pos)             /*!< 0x00003F00 */\n#define FDCAN_RXF0S_F0GI          FDCAN_RXF0S_F0GI_Msk                         /*!<Rx FIFO 0 Get Index                       */\n#define FDCAN_RXF0S_F0PI_Pos      (16U)\n#define FDCAN_RXF0S_F0PI_Msk      (0x3FUL << FDCAN_RXF0S_F0PI_Pos)             /*!< 0x003F0000 */\n#define FDCAN_RXF0S_F0PI          FDCAN_RXF0S_F0PI_Msk                         /*!<Rx FIFO 0 Put Index                       */\n#define FDCAN_RXF0S_F0F_Pos       (24U)\n#define FDCAN_RXF0S_F0F_Msk       (0x1UL << FDCAN_RXF0S_F0F_Pos)               /*!< 0x01000000 */\n#define FDCAN_RXF0S_F0F           FDCAN_RXF0S_F0F_Msk                          /*!<Rx FIFO 0 Full                            */\n#define FDCAN_RXF0S_RF0L_Pos      (25U)\n#define FDCAN_RXF0S_RF0L_Msk      (0x1UL << FDCAN_RXF0S_RF0L_Pos)              /*!< 0x02000000 */\n#define FDCAN_RXF0S_RF0L          FDCAN_RXF0S_RF0L_Msk                         /*!<Rx FIFO 0 Message Lost                    */\n\n/*****************  Bit definition for FDCAN_RXF0A register  ********************/\n#define FDCAN_RXF0A_F0AI_Pos      (0U)\n#define FDCAN_RXF0A_F0AI_Msk      (0x3FUL << FDCAN_RXF0A_F0AI_Pos)             /*!< 0x0000003F */\n#define FDCAN_RXF0A_F0AI          FDCAN_RXF0A_F0AI_Msk                         /*!<Rx FIFO 0 Acknowledge Index               */\n\n/*****************  Bit definition for FDCAN_RXBC register  ********************/\n#define FDCAN_RXBC_RBSA_Pos       (2U)\n#define FDCAN_RXBC_RBSA_Msk       (0x3FFFUL << FDCAN_RXBC_RBSA_Pos)            /*!< 0x0000FFFC */\n#define FDCAN_RXBC_RBSA           FDCAN_RXBC_RBSA_Msk                          /*!<Rx Buffer Start Address                   */\n\n/*****************  Bit definition for FDCAN_RXF1C register  ********************/\n#define FDCAN_RXF1C_F1SA_Pos      (2U)\n#define FDCAN_RXF1C_F1SA_Msk      (0x3FFFUL << FDCAN_RXF1C_F1SA_Pos)           /*!< 0x0000FFFC */\n#define FDCAN_RXF1C_F1SA          FDCAN_RXF1C_F1SA_Msk                         /*!<Rx FIFO 1 Start Address                   */\n#define FDCAN_RXF1C_F1S_Pos       (16U)\n#define FDCAN_RXF1C_F1S_Msk       (0x7FUL << FDCAN_RXF1C_F1S_Pos)              /*!< 0x007F0000 */\n#define FDCAN_RXF1C_F1S           FDCAN_RXF1C_F1S_Msk                          /*!<Number of Rx FIFO 1 elements              */\n#define FDCAN_RXF1C_F1WM_Pos      (24U)\n#define FDCAN_RXF1C_F1WM_Msk      (0x7FUL << FDCAN_RXF1C_F1WM_Pos)             /*!< 0x7F000000 */\n#define FDCAN_RXF1C_F1WM          FDCAN_RXF1C_F1WM_Msk                         /*!<Rx FIFO 1 Watermark                       */\n#define FDCAN_RXF1C_F1OM_Pos      (31U)\n#define FDCAN_RXF1C_F1OM_Msk      (0x1UL << FDCAN_RXF1C_F1OM_Pos)              /*!< 0x80000000 */\n#define FDCAN_RXF1C_F1OM          FDCAN_RXF1C_F1OM_Msk                         /*!<FIFO 1 Operation Mode                     */\n\n/*****************  Bit definition for FDCAN_RXF1S register  ********************/\n#define FDCAN_RXF1S_F1FL_Pos      (0U)\n#define FDCAN_RXF1S_F1FL_Msk      (0x7FUL << FDCAN_RXF1S_F1FL_Pos)             /*!< 0x0000007F */\n#define FDCAN_RXF1S_F1FL          FDCAN_RXF1S_F1FL_Msk                         /*!<Rx FIFO 1 Fill Level                      */\n#define FDCAN_RXF1S_F1GI_Pos      (8U)\n#define FDCAN_RXF1S_F1GI_Msk      (0x3FUL << FDCAN_RXF1S_F1GI_Pos)             /*!< 0x00003F00 */\n#define FDCAN_RXF1S_F1GI          FDCAN_RXF1S_F1GI_Msk                         /*!<Rx FIFO 1 Get Index                       */\n#define FDCAN_RXF1S_F1PI_Pos      (16U)\n#define FDCAN_RXF1S_F1PI_Msk      (0x3FUL << FDCAN_RXF1S_F1PI_Pos)             /*!< 0x003F0000 */\n#define FDCAN_RXF1S_F1PI          FDCAN_RXF1S_F1PI_Msk                         /*!<Rx FIFO 1 Put Index                       */\n#define FDCAN_RXF1S_F1F_Pos       (24U)\n#define FDCAN_RXF1S_F1F_Msk       (0x1UL << FDCAN_RXF1S_F1F_Pos)               /*!< 0x01000000 */\n#define FDCAN_RXF1S_F1F           FDCAN_RXF1S_F1F_Msk                          /*!<Rx FIFO 1 Full                            */\n#define FDCAN_RXF1S_RF1L_Pos      (25U)\n#define FDCAN_RXF1S_RF1L_Msk      (0x1UL << FDCAN_RXF1S_RF1L_Pos)              /*!< 0x02000000 */\n#define FDCAN_RXF1S_RF1L          FDCAN_RXF1S_RF1L_Msk                         /*!<Rx FIFO 1 Message Lost                    */\n\n/*****************  Bit definition for FDCAN_RXF1A register  ********************/\n#define FDCAN_RXF1A_F1AI_Pos      (0U)\n#define FDCAN_RXF1A_F1AI_Msk      (0x3FUL << FDCAN_RXF1A_F1AI_Pos)             /*!< 0x0000003F */\n#define FDCAN_RXF1A_F1AI          FDCAN_RXF1A_F1AI_Msk                         /*!<Rx FIFO 1 Acknowledge Index               */\n\n/*****************  Bit definition for FDCAN_RXESC register  ********************/\n#define FDCAN_RXESC_F0DS_Pos      (0U)\n#define FDCAN_RXESC_F0DS_Msk      (0x7UL << FDCAN_RXESC_F0DS_Pos)              /*!< 0x00000007 */\n#define FDCAN_RXESC_F0DS          FDCAN_RXESC_F0DS_Msk                         /*!<Rx FIFO 1 Data Field Size                 */\n#define FDCAN_RXESC_F1DS_Pos      (4U)\n#define FDCAN_RXESC_F1DS_Msk      (0x7UL << FDCAN_RXESC_F1DS_Pos)              /*!< 0x00000070 */\n#define FDCAN_RXESC_F1DS          FDCAN_RXESC_F1DS_Msk                         /*!<Rx FIFO 0 Data Field Size                 */\n#define FDCAN_RXESC_RBDS_Pos      (8U)\n#define FDCAN_RXESC_RBDS_Msk      (0x7UL << FDCAN_RXESC_RBDS_Pos)              /*!< 0x00000700 */\n#define FDCAN_RXESC_RBDS          FDCAN_RXESC_RBDS_Msk                         /*!<Rx Buffer Data Field Size                 */\n\n/*****************  Bit definition for FDCAN_TXBC register  *********************/\n#define FDCAN_TXBC_TBSA_Pos       (2U)\n#define FDCAN_TXBC_TBSA_Msk       (0x3FFFUL << FDCAN_TXBC_TBSA_Pos)            /*!< 0x0000FFFC */\n#define FDCAN_TXBC_TBSA           FDCAN_TXBC_TBSA_Msk                          /*!<Tx Buffers Start Address                  */\n#define FDCAN_TXBC_NDTB_Pos       (16U)\n#define FDCAN_TXBC_NDTB_Msk       (0x3FUL << FDCAN_TXBC_NDTB_Pos)              /*!< 0x003F0000 */\n#define FDCAN_TXBC_NDTB           FDCAN_TXBC_NDTB_Msk                          /*!<Number of Dedicated Transmit Buffers      */\n#define FDCAN_TXBC_TFQS_Pos       (24U)\n#define FDCAN_TXBC_TFQS_Msk       (0x3FUL << FDCAN_TXBC_TFQS_Pos)              /*!< 0x3F000000 */\n#define FDCAN_TXBC_TFQS           FDCAN_TXBC_TFQS_Msk                          /*!<Transmit FIFO/Queue Size                  */\n#define FDCAN_TXBC_TFQM_Pos       (30U)\n#define FDCAN_TXBC_TFQM_Msk       (0x1UL << FDCAN_TXBC_TFQM_Pos)               /*!< 0x40000000 */\n#define FDCAN_TXBC_TFQM           FDCAN_TXBC_TFQM_Msk                          /*!<Tx FIFO/Queue Mode                        */\n\n/*****************  Bit definition for FDCAN_TXFQS register  *********************/\n#define FDCAN_TXFQS_TFFL_Pos      (0U)\n#define FDCAN_TXFQS_TFFL_Msk      (0x3FUL << FDCAN_TXFQS_TFFL_Pos)             /*!< 0x0000003F */\n#define FDCAN_TXFQS_TFFL          FDCAN_TXFQS_TFFL_Msk                         /*!<Tx FIFO Free Level                        */\n#define FDCAN_TXFQS_TFGI_Pos      (8U)\n#define FDCAN_TXFQS_TFGI_Msk      (0x1FUL << FDCAN_TXFQS_TFGI_Pos)             /*!< 0x00001F00 */\n#define FDCAN_TXFQS_TFGI          FDCAN_TXFQS_TFGI_Msk                         /*!<Tx FIFO Get Index                         */\n#define FDCAN_TXFQS_TFQPI_Pos     (16U)\n#define FDCAN_TXFQS_TFQPI_Msk     (0x1FUL << FDCAN_TXFQS_TFQPI_Pos)            /*!< 0x001F0000 */\n#define FDCAN_TXFQS_TFQPI         FDCAN_TXFQS_TFQPI_Msk                        /*!<Tx FIFO/Queue Put Index                   */\n#define FDCAN_TXFQS_TFQF_Pos      (21U)\n#define FDCAN_TXFQS_TFQF_Msk      (0x1UL << FDCAN_TXFQS_TFQF_Pos)              /*!< 0x00200000 */\n#define FDCAN_TXFQS_TFQF          FDCAN_TXFQS_TFQF_Msk                         /*!<Tx FIFO/Queue Full                        */\n\n/*****************  Bit definition for FDCAN_TXESC register  *********************/\n#define FDCAN_TXESC_TBDS_Pos      (0U)\n#define FDCAN_TXESC_TBDS_Msk      (0x7UL << FDCAN_TXESC_TBDS_Pos)              /*!< 0x00000007 */\n#define FDCAN_TXESC_TBDS          FDCAN_TXESC_TBDS_Msk                         /*!<Tx Buffer Data Field Size                 */\n\n/*****************  Bit definition for FDCAN_TXBRP register  *********************/\n#define FDCAN_TXBRP_TRP_Pos       (0U)\n#define FDCAN_TXBRP_TRP_Msk       (0xFFFFFFFFUL << FDCAN_TXBRP_TRP_Pos)        /*!< 0xFFFFFFFF */\n#define FDCAN_TXBRP_TRP           FDCAN_TXBRP_TRP_Msk                          /*!<Transmission Request Pending              */\n\n/*****************  Bit definition for FDCAN_TXBAR register  *********************/\n#define FDCAN_TXBAR_AR_Pos        (0U)\n#define FDCAN_TXBAR_AR_Msk        (0xFFFFFFFFUL << FDCAN_TXBAR_AR_Pos)         /*!< 0xFFFFFFFF */\n#define FDCAN_TXBAR_AR            FDCAN_TXBAR_AR_Msk                           /*!<Add Request                               */\n\n/*****************  Bit definition for FDCAN_TXBCR register  *********************/\n#define FDCAN_TXBCR_CR_Pos        (0U)\n#define FDCAN_TXBCR_CR_Msk        (0xFFFFFFFFUL << FDCAN_TXBCR_CR_Pos)         /*!< 0xFFFFFFFF */\n#define FDCAN_TXBCR_CR            FDCAN_TXBCR_CR_Msk                           /*!<Cancellation Request                      */\n\n/*****************  Bit definition for FDCAN_TXBTO register  *********************/\n#define FDCAN_TXBTO_TO_Pos        (0U)\n#define FDCAN_TXBTO_TO_Msk        (0xFFFFFFFFUL << FDCAN_TXBTO_TO_Pos)         /*!< 0xFFFFFFFF */\n#define FDCAN_TXBTO_TO            FDCAN_TXBTO_TO_Msk                           /*!<Transmission Occurred                     */\n\n/*****************  Bit definition for FDCAN_TXBCF register  *********************/\n#define FDCAN_TXBCF_CF_Pos        (0U)\n#define FDCAN_TXBCF_CF_Msk        (0xFFFFFFFFUL << FDCAN_TXBCF_CF_Pos)         /*!< 0xFFFFFFFF */\n#define FDCAN_TXBCF_CF            FDCAN_TXBCF_CF_Msk                           /*!<Cancellation Finished                     */\n\n/*****************  Bit definition for FDCAN_TXBTIE register  ********************/\n#define FDCAN_TXBTIE_TIE_Pos      (0U)\n#define FDCAN_TXBTIE_TIE_Msk      (0xFFFFFFFFUL << FDCAN_TXBTIE_TIE_Pos)       /*!< 0xFFFFFFFF */\n#define FDCAN_TXBTIE_TIE          FDCAN_TXBTIE_TIE_Msk                         /*!<Transmission Interrupt Enable             */\n\n/*****************  Bit definition for FDCAN_ TXBCIE register  *******************/\n#define FDCAN_TXBCIE_CFIE_Pos     (0U)\n#define FDCAN_TXBCIE_CFIE_Msk     (0xFFFFFFFFUL << FDCAN_TXBCIE_CFIE_Pos)      /*!< 0xFFFFFFFF */\n#define FDCAN_TXBCIE_CFIE         FDCAN_TXBCIE_CFIE_Msk                        /*!<Cancellation Finished Interrupt Enable    */\n\n/*****************  Bit definition for FDCAN_TXEFC register  *********************/\n#define FDCAN_TXEFC_EFSA_Pos      (2U)\n#define FDCAN_TXEFC_EFSA_Msk      (0x3FFFUL << FDCAN_TXEFC_EFSA_Pos)           /*!< 0x0000FFFC */\n#define FDCAN_TXEFC_EFSA          FDCAN_TXEFC_EFSA_Msk                         /*!<Event FIFO Start Address                  */\n#define FDCAN_TXEFC_EFS_Pos       (16U)\n#define FDCAN_TXEFC_EFS_Msk       (0x3FUL << FDCAN_TXEFC_EFS_Pos)              /*!< 0x003F0000 */\n#define FDCAN_TXEFC_EFS           FDCAN_TXEFC_EFS_Msk                          /*!<Event FIFO Size                           */\n#define FDCAN_TXEFC_EFWM_Pos      (24U)\n#define FDCAN_TXEFC_EFWM_Msk      (0x3FUL << FDCAN_TXEFC_EFWM_Pos)             /*!< 0x3F000000 */\n#define FDCAN_TXEFC_EFWM          FDCAN_TXEFC_EFWM_Msk                         /*!<Event FIFO Watermark                      */\n\n/*****************  Bit definition for FDCAN_TXEFS register  *********************/\n#define FDCAN_TXEFS_EFFL_Pos      (0U)\n#define FDCAN_TXEFS_EFFL_Msk      (0x3FUL << FDCAN_TXEFS_EFFL_Pos)             /*!< 0x0000003F */\n#define FDCAN_TXEFS_EFFL          FDCAN_TXEFS_EFFL_Msk                         /*!<Event FIFO Fill Level                     */\n#define FDCAN_TXEFS_EFGI_Pos      (8U)\n#define FDCAN_TXEFS_EFGI_Msk      (0x1FUL << FDCAN_TXEFS_EFGI_Pos)             /*!< 0x00001F00 */\n#define FDCAN_TXEFS_EFGI          FDCAN_TXEFS_EFGI_Msk                         /*!<Event FIFO Get Index                      */\n#define FDCAN_TXEFS_EFPI_Pos      (16U)\n#define FDCAN_TXEFS_EFPI_Msk      (0x1FUL << FDCAN_TXEFS_EFPI_Pos)             /*!< 0x001F0000 */\n#define FDCAN_TXEFS_EFPI          FDCAN_TXEFS_EFPI_Msk                         /*!<Event FIFO Put Index                      */\n#define FDCAN_TXEFS_EFF_Pos       (24U)\n#define FDCAN_TXEFS_EFF_Msk       (0x1UL << FDCAN_TXEFS_EFF_Pos)               /*!< 0x01000000 */\n#define FDCAN_TXEFS_EFF           FDCAN_TXEFS_EFF_Msk                          /*!<Event FIFO Full                           */\n#define FDCAN_TXEFS_TEFL_Pos      (25U)\n#define FDCAN_TXEFS_TEFL_Msk      (0x1UL << FDCAN_TXEFS_TEFL_Pos)              /*!< 0x02000000 */\n#define FDCAN_TXEFS_TEFL          FDCAN_TXEFS_TEFL_Msk                         /*!<Tx Event FIFO Element Lost                */\n\n/*****************  Bit definition for FDCAN_TXEFA register  *********************/\n#define FDCAN_TXEFA_EFAI_Pos      (0U)\n#define FDCAN_TXEFA_EFAI_Msk      (0x1FUL << FDCAN_TXEFA_EFAI_Pos)             /*!< 0x0000001F */\n#define FDCAN_TXEFA_EFAI          FDCAN_TXEFA_EFAI_Msk                         /*!<Event FIFO Acknowledge Index              */\n\n/*****************  Bit definition for FDCAN_TTTMC register  *********************/\n#define FDCAN_TTTMC_TMSA_Pos      (2U)\n#define FDCAN_TTTMC_TMSA_Msk      (0x3FFFUL << FDCAN_TTTMC_TMSA_Pos)           /*!< 0x0000FFFC */\n#define FDCAN_TTTMC_TMSA          FDCAN_TTTMC_TMSA_Msk                         /*!<Trigger Memory Start Address              */\n#define FDCAN_TTTMC_TME_Pos       (16U)\n#define FDCAN_TTTMC_TME_Msk       (0x7FUL << FDCAN_TTTMC_TME_Pos)              /*!< 0x007F0000 */\n#define FDCAN_TTTMC_TME           FDCAN_TTTMC_TME_Msk                          /*!<Trigger Memory Elements                   */\n\n/*****************  Bit definition for FDCAN_TTRMC register  *********************/\n#define FDCAN_TTRMC_RID_Pos       (0U)\n#define FDCAN_TTRMC_RID_Msk       (0x1FFFFFFFUL << FDCAN_TTRMC_RID_Pos)        /*!< 0x1FFFFFFF */\n#define FDCAN_TTRMC_RID           FDCAN_TTRMC_RID_Msk                          /*!<Reference Identifier                      */\n#define FDCAN_TTRMC_XTD_Pos       (30U)\n#define FDCAN_TTRMC_XTD_Msk       (0x1UL << FDCAN_TTRMC_XTD_Pos)               /*!< 0x40000000 */\n#define FDCAN_TTRMC_XTD           FDCAN_TTRMC_XTD_Msk                          /*!< Extended Identifier                      */\n#define FDCAN_TTRMC_RMPS_Pos      (31U)\n#define FDCAN_TTRMC_RMPS_Msk      (0x1UL << FDCAN_TTRMC_RMPS_Pos)              /*!< 0x80000000 */\n#define FDCAN_TTRMC_RMPS          FDCAN_TTRMC_RMPS_Msk                         /*!<Reference Message Payload Select          */\n\n/*****************  Bit definition for FDCAN_TTOCF register  *********************/\n#define FDCAN_TTOCF_OM_Pos        (0U)\n#define FDCAN_TTOCF_OM_Msk        (0x3UL << FDCAN_TTOCF_OM_Pos)                /*!< 0x00000003 */\n#define FDCAN_TTOCF_OM            FDCAN_TTOCF_OM_Msk                           /*!<Operation Mode                            */\n#define FDCAN_TTOCF_GEN_Pos       (3U)\n#define FDCAN_TTOCF_GEN_Msk       (0x1UL << FDCAN_TTOCF_GEN_Pos)               /*!< 0x00000008 */\n#define FDCAN_TTOCF_GEN           FDCAN_TTOCF_GEN_Msk                          /*!<Gap Enable                                */\n#define FDCAN_TTOCF_TM_Pos        (4U)\n#define FDCAN_TTOCF_TM_Msk        (0x1UL << FDCAN_TTOCF_TM_Pos)                /*!< 0x00000010 */\n#define FDCAN_TTOCF_TM            FDCAN_TTOCF_TM_Msk                           /*!<Time Master                               */\n#define FDCAN_TTOCF_LDSDL_Pos     (5U)\n#define FDCAN_TTOCF_LDSDL_Msk     (0x7UL << FDCAN_TTOCF_LDSDL_Pos)             /*!< 0x000000E0 */\n#define FDCAN_TTOCF_LDSDL         FDCAN_TTOCF_LDSDL_Msk                        /*!<LD of Synchronization Deviation Limit     */\n#define FDCAN_TTOCF_IRTO_Pos      (8U)\n#define FDCAN_TTOCF_IRTO_Msk      (0x7FUL << FDCAN_TTOCF_IRTO_Pos)             /*!< 0x00007F00 */\n#define FDCAN_TTOCF_IRTO          FDCAN_TTOCF_IRTO_Msk                         /*!<Initial Reference Trigger Offset          */\n#define FDCAN_TTOCF_EECS_Pos      (15U)\n#define FDCAN_TTOCF_EECS_Msk      (0x1UL << FDCAN_TTOCF_EECS_Pos)              /*!< 0x00008000 */\n#define FDCAN_TTOCF_EECS          FDCAN_TTOCF_EECS_Msk                         /*!<Enable External Clock Synchronization     */\n#define FDCAN_TTOCF_AWL_Pos       (16U)\n#define FDCAN_TTOCF_AWL_Msk       (0xFFUL << FDCAN_TTOCF_AWL_Pos)              /*!< 0x00FF0000 */\n#define FDCAN_TTOCF_AWL           FDCAN_TTOCF_AWL_Msk                          /*!<Application Watchdog Limit                */\n#define FDCAN_TTOCF_EGTF_Pos      (24U)\n#define FDCAN_TTOCF_EGTF_Msk      (0x1UL << FDCAN_TTOCF_EGTF_Pos)              /*!< 0x01000000 */\n#define FDCAN_TTOCF_EGTF          FDCAN_TTOCF_EGTF_Msk                         /*!<Enable Global Time Filtering              */\n#define FDCAN_TTOCF_ECC_Pos       (25U)\n#define FDCAN_TTOCF_ECC_Msk       (0x1UL << FDCAN_TTOCF_ECC_Pos)               /*!< 0x02000000 */\n#define FDCAN_TTOCF_ECC           FDCAN_TTOCF_ECC_Msk                          /*!<Enable Clock Calibration                  */\n#define FDCAN_TTOCF_EVTP_Pos      (26U)\n#define FDCAN_TTOCF_EVTP_Msk      (0x1UL << FDCAN_TTOCF_EVTP_Pos)              /*!< 0x04000000 */\n#define FDCAN_TTOCF_EVTP          FDCAN_TTOCF_EVTP_Msk                         /*!<Event Trigger Polarity                    */\n\n/*****************  Bit definition for FDCAN_TTMLM register  *********************/\n#define FDCAN_TTMLM_CCM_Pos       (0U)\n#define FDCAN_TTMLM_CCM_Msk       (0x3FUL << FDCAN_TTMLM_CCM_Pos)              /*!< 0x0000003F */\n#define FDCAN_TTMLM_CCM           FDCAN_TTMLM_CCM_Msk                          /*!<Cycle Count Max                           */\n#define FDCAN_TTMLM_CSS_Pos       (6U)\n#define FDCAN_TTMLM_CSS_Msk       (0x3UL << FDCAN_TTMLM_CSS_Pos)               /*!< 0x000000C0 */\n#define FDCAN_TTMLM_CSS           FDCAN_TTMLM_CSS_Msk                          /*!<Cycle Start Synchronization               */\n#define FDCAN_TTMLM_TXEW_Pos      (8U)\n#define FDCAN_TTMLM_TXEW_Msk      (0xFUL << FDCAN_TTMLM_TXEW_Pos)              /*!< 0x00000F00 */\n#define FDCAN_TTMLM_TXEW          FDCAN_TTMLM_TXEW_Msk                         /*!<Tx Enable Window                          */\n#define FDCAN_TTMLM_ENTT_Pos      (16U)\n#define FDCAN_TTMLM_ENTT_Msk      (0xFFFUL << FDCAN_TTMLM_ENTT_Pos)            /*!< 0x0FFF0000 */\n#define FDCAN_TTMLM_ENTT          FDCAN_TTMLM_ENTT_Msk                         /*!<Expected Number of Tx Triggers            */\n\n/*****************  Bit definition for FDCAN_TURCF register  *********************/\n#define FDCAN_TURCF_NCL_Pos       (0U)\n#define FDCAN_TURCF_NCL_Msk       (0xFFFFUL << FDCAN_TURCF_NCL_Pos)            /*!< 0x0000FFFF */\n#define FDCAN_TURCF_NCL           FDCAN_TURCF_NCL_Msk                          /*!<Numerator Configuration Low               */\n#define FDCAN_TURCF_DC_Pos        (16U)\n#define FDCAN_TURCF_DC_Msk        (0x3FFFUL << FDCAN_TURCF_DC_Pos)             /*!< 0x3FFF0000 */\n#define FDCAN_TURCF_DC            FDCAN_TURCF_DC_Msk                           /*!<Denominator Configuration                 */\n#define FDCAN_TURCF_ELT_Pos       (31U)\n#define FDCAN_TURCF_ELT_Msk       (0x1UL << FDCAN_TURCF_ELT_Pos)               /*!< 0x80000000 */\n#define FDCAN_TURCF_ELT           FDCAN_TURCF_ELT_Msk                          /*!<Enable Local Time                         */\n\n/*****************  Bit definition for FDCAN_TTOCN register  ********************/\n#define FDCAN_TTOCN_SGT_Pos       (0U)\n#define FDCAN_TTOCN_SGT_Msk       (0x1UL << FDCAN_TTOCN_SGT_Pos)               /*!< 0x00000001 */\n#define FDCAN_TTOCN_SGT           FDCAN_TTOCN_SGT_Msk                          /*!<Set Global time                           */\n#define FDCAN_TTOCN_ECS_Pos       (1U)\n#define FDCAN_TTOCN_ECS_Msk       (0x1UL << FDCAN_TTOCN_ECS_Pos)               /*!< 0x00000002 */\n#define FDCAN_TTOCN_ECS           FDCAN_TTOCN_ECS_Msk                          /*!<External Clock Synchronization            */\n#define FDCAN_TTOCN_SWP_Pos       (2U)\n#define FDCAN_TTOCN_SWP_Msk       (0x1UL << FDCAN_TTOCN_SWP_Pos)               /*!< 0x00000004 */\n#define FDCAN_TTOCN_SWP           FDCAN_TTOCN_SWP_Msk                          /*!<Stop Watch Polarity                       */\n#define FDCAN_TTOCN_SWS_Pos       (3U)\n#define FDCAN_TTOCN_SWS_Msk       (0x3UL << FDCAN_TTOCN_SWS_Pos)               /*!< 0x00000018 */\n#define FDCAN_TTOCN_SWS           FDCAN_TTOCN_SWS_Msk                          /*!<Stop Watch Source                         */\n#define FDCAN_TTOCN_RTIE_Pos      (5U)\n#define FDCAN_TTOCN_RTIE_Msk      (0x1UL << FDCAN_TTOCN_RTIE_Pos)              /*!< 0x00000020 */\n#define FDCAN_TTOCN_RTIE          FDCAN_TTOCN_RTIE_Msk                         /*!<Register Time Mark Interrupt Pulse Enable */\n#define FDCAN_TTOCN_TMC_Pos       (6U)\n#define FDCAN_TTOCN_TMC_Msk       (0x3UL << FDCAN_TTOCN_TMC_Pos)               /*!< 0x000000C0 */\n#define FDCAN_TTOCN_TMC           FDCAN_TTOCN_TMC_Msk                          /*!<Register Time Mark Compare                */\n#define FDCAN_TTOCN_TTIE_Pos      (8U)\n#define FDCAN_TTOCN_TTIE_Msk      (0x1UL << FDCAN_TTOCN_TTIE_Pos)              /*!< 0x00000100 */\n#define FDCAN_TTOCN_TTIE          FDCAN_TTOCN_TTIE_Msk                         /*!<Trigger Time Mark Interrupt Pulse Enable  */\n#define FDCAN_TTOCN_GCS_Pos       (9U)\n#define FDCAN_TTOCN_GCS_Msk       (0x1UL << FDCAN_TTOCN_GCS_Pos)               /*!< 0x00000200 */\n#define FDCAN_TTOCN_GCS           FDCAN_TTOCN_GCS_Msk                          /*!<Gap Control Select                        */\n#define FDCAN_TTOCN_FGP_Pos       (10U)\n#define FDCAN_TTOCN_FGP_Msk       (0x1UL << FDCAN_TTOCN_FGP_Pos)               /*!< 0x00000400 */\n#define FDCAN_TTOCN_FGP           FDCAN_TTOCN_FGP_Msk                          /*!<Finish Gap                                */\n#define FDCAN_TTOCN_TMG_Pos       (11U)\n#define FDCAN_TTOCN_TMG_Msk       (0x1UL << FDCAN_TTOCN_TMG_Pos)               /*!< 0x00000800 */\n#define FDCAN_TTOCN_TMG           FDCAN_TTOCN_TMG_Msk                          /*!<Time Mark Gap                             */\n#define FDCAN_TTOCN_NIG_Pos       (12U)\n#define FDCAN_TTOCN_NIG_Msk       (0x1UL << FDCAN_TTOCN_NIG_Pos)               /*!< 0x00001000 */\n#define FDCAN_TTOCN_NIG           FDCAN_TTOCN_NIG_Msk                          /*!<Next is Gap                               */\n#define FDCAN_TTOCN_ESCN_Pos      (13U)\n#define FDCAN_TTOCN_ESCN_Msk      (0x1UL << FDCAN_TTOCN_ESCN_Pos)              /*!< 0x00002000 */\n#define FDCAN_TTOCN_ESCN          FDCAN_TTOCN_ESCN_Msk                         /*!<External Synchronization Control          */\n#define FDCAN_TTOCN_LCKC_Pos      (15U)\n#define FDCAN_TTOCN_LCKC_Msk      (0x1UL << FDCAN_TTOCN_LCKC_Pos)              /*!< 0x00008000 */\n#define FDCAN_TTOCN_LCKC          FDCAN_TTOCN_LCKC_Msk                         /*!<TT Operation Control Register Locked      */\n\n/*****************  Bit definition for FDCAN_TTGTP register  ********************/\n#define FDCAN_TTGTP_TP_Pos        (0U)\n#define FDCAN_TTGTP_TP_Msk        (0xFFFFUL << FDCAN_TTGTP_TP_Pos)             /*!< 0x0000FFFF */\n#define FDCAN_TTGTP_TP            FDCAN_TTGTP_TP_Msk                           /*!<Time Preset                               */\n#define FDCAN_TTGTP_CTP_Pos       (16U)\n#define FDCAN_TTGTP_CTP_Msk       (0xFFFFUL << FDCAN_TTGTP_CTP_Pos)            /*!< 0xFFFF0000 */\n#define FDCAN_TTGTP_CTP           FDCAN_TTGTP_CTP_Msk                          /*!<Cycle Time Target Phase                   */\n\n/*****************  Bit definition for FDCAN_TTTMK register  ********************/\n#define FDCAN_TTTMK_TM_Pos        (0U)\n#define FDCAN_TTTMK_TM_Msk        (0xFFFFUL << FDCAN_TTTMK_TM_Pos)             /*!< 0x0000FFFF */\n#define FDCAN_TTTMK_TM            FDCAN_TTTMK_TM_Msk                           /*!<Time Mark                                 */\n#define FDCAN_TTTMK_TICC_Pos      (16U)\n#define FDCAN_TTTMK_TICC_Msk      (0x7FUL << FDCAN_TTTMK_TICC_Pos)             /*!< 0x007F0000 */\n#define FDCAN_TTTMK_TICC          FDCAN_TTTMK_TICC_Msk                         /*!<Time Mark Cycle Code                      */\n#define FDCAN_TTTMK_LCKM_Pos      (31U)\n#define FDCAN_TTTMK_LCKM_Msk      (0x1UL << FDCAN_TTTMK_LCKM_Pos)              /*!< 0x80000000 */\n#define FDCAN_TTTMK_LCKM          FDCAN_TTTMK_LCKM_Msk                         /*!<TT Time Mark Register Locked              */\n\n/*****************  Bit definition for FDCAN_TTIR register  ********************/\n#define FDCAN_TTIR_SBC_Pos        (0U)\n#define FDCAN_TTIR_SBC_Msk        (0x1UL << FDCAN_TTIR_SBC_Pos)                /*!< 0x00000001 */\n#define FDCAN_TTIR_SBC            FDCAN_TTIR_SBC_Msk                           /*!<Start of Basic Cycle                      */\n#define FDCAN_TTIR_SMC_Pos        (1U)\n#define FDCAN_TTIR_SMC_Msk        (0x1UL << FDCAN_TTIR_SMC_Pos)                /*!< 0x00000002 */\n#define FDCAN_TTIR_SMC            FDCAN_TTIR_SMC_Msk                           /*!<Start of Matrix Cycle                     */\n#define FDCAN_TTIR_CSM_Pos        (2U)\n#define FDCAN_TTIR_CSM_Msk        (0x1UL << FDCAN_TTIR_CSM_Pos)                /*!< 0x00000004 */\n#define FDCAN_TTIR_CSM            FDCAN_TTIR_CSM_Msk                           /*!<Change of Synchronization Mode            */\n#define FDCAN_TTIR_SOG_Pos        (3U)\n#define FDCAN_TTIR_SOG_Msk        (0x1UL << FDCAN_TTIR_SOG_Pos)                /*!< 0x00000008 */\n#define FDCAN_TTIR_SOG            FDCAN_TTIR_SOG_Msk                           /*!<Start of Gap                              */\n#define FDCAN_TTIR_RTMI_Pos       (4U)\n#define FDCAN_TTIR_RTMI_Msk       (0x1UL << FDCAN_TTIR_RTMI_Pos)               /*!< 0x00000010 */\n#define FDCAN_TTIR_RTMI           FDCAN_TTIR_RTMI_Msk                          /*!<Register Time Mark Interrupt              */\n#define FDCAN_TTIR_TTMI_Pos       (5U)\n#define FDCAN_TTIR_TTMI_Msk       (0x1UL << FDCAN_TTIR_TTMI_Pos)               /*!< 0x00000020 */\n#define FDCAN_TTIR_TTMI           FDCAN_TTIR_TTMI_Msk                          /*!<Trigger Time Mark Event Internal          */\n#define FDCAN_TTIR_SWE_Pos        (6U)\n#define FDCAN_TTIR_SWE_Msk        (0x1UL << FDCAN_TTIR_SWE_Pos)                /*!< 0x00000040 */\n#define FDCAN_TTIR_SWE            FDCAN_TTIR_SWE_Msk                           /*!<Stop Watch Event                          */\n#define FDCAN_TTIR_GTW_Pos        (7U)\n#define FDCAN_TTIR_GTW_Msk        (0x1UL << FDCAN_TTIR_GTW_Pos)                /*!< 0x00000080 */\n#define FDCAN_TTIR_GTW            FDCAN_TTIR_GTW_Msk                           /*!<Global Time Wrap                          */\n#define FDCAN_TTIR_GTD_Pos        (8U)\n#define FDCAN_TTIR_GTD_Msk        (0x1UL << FDCAN_TTIR_GTD_Pos)                /*!< 0x00000100 */\n#define FDCAN_TTIR_GTD            FDCAN_TTIR_GTD_Msk                           /*!<Global Time Discontinuity                 */\n#define FDCAN_TTIR_GTE_Pos        (9U)\n#define FDCAN_TTIR_GTE_Msk        (0x1UL << FDCAN_TTIR_GTE_Pos)                /*!< 0x00000200 */\n#define FDCAN_TTIR_GTE            FDCAN_TTIR_GTE_Msk                           /*!<Global Time Error                         */\n#define FDCAN_TTIR_TXU_Pos        (10U)\n#define FDCAN_TTIR_TXU_Msk        (0x1UL << FDCAN_TTIR_TXU_Pos)                /*!< 0x00000400 */\n#define FDCAN_TTIR_TXU            FDCAN_TTIR_TXU_Msk                           /*!<Tx Count Underflow                        */\n#define FDCAN_TTIR_TXO_Pos        (11U)\n#define FDCAN_TTIR_TXO_Msk        (0x1UL << FDCAN_TTIR_TXO_Pos)                /*!< 0x00000800 */\n#define FDCAN_TTIR_TXO            FDCAN_TTIR_TXO_Msk                           /*!<Tx Count Overflow                         */\n#define FDCAN_TTIR_SE1_Pos        (12U)\n#define FDCAN_TTIR_SE1_Msk        (0x1UL << FDCAN_TTIR_SE1_Pos)                /*!< 0x00001000 */\n#define FDCAN_TTIR_SE1            FDCAN_TTIR_SE1_Msk                           /*!<Scheduling Error 1                        */\n#define FDCAN_TTIR_SE2_Pos        (13U)\n#define FDCAN_TTIR_SE2_Msk        (0x1UL << FDCAN_TTIR_SE2_Pos)                /*!< 0x00002000 */\n#define FDCAN_TTIR_SE2            FDCAN_TTIR_SE2_Msk                           /*!<Scheduling Error 2                        */\n#define FDCAN_TTIR_ELC_Pos        (14U)\n#define FDCAN_TTIR_ELC_Msk        (0x1UL << FDCAN_TTIR_ELC_Pos)                /*!< 0x00004000 */\n#define FDCAN_TTIR_ELC            FDCAN_TTIR_ELC_Msk                           /*!<Error Level Changed                       */\n#define FDCAN_TTIR_IWT_Pos        (15U)\n#define FDCAN_TTIR_IWT_Msk        (0x1UL << FDCAN_TTIR_IWT_Pos)                /*!< 0x00008000 */\n#define FDCAN_TTIR_IWT            FDCAN_TTIR_IWT_Msk                           /*!<Initialization Watch Trigger              */\n#define FDCAN_TTIR_WT_Pos         (16U)\n#define FDCAN_TTIR_WT_Msk         (0x1UL << FDCAN_TTIR_WT_Pos)                 /*!< 0x00010000 */\n#define FDCAN_TTIR_WT             FDCAN_TTIR_WT_Msk                            /*!<Watch Trigger                             */\n#define FDCAN_TTIR_AW_Pos         (17U)\n#define FDCAN_TTIR_AW_Msk         (0x1UL << FDCAN_TTIR_AW_Pos)                 /*!< 0x00020000 */\n#define FDCAN_TTIR_AW             FDCAN_TTIR_AW_Msk                            /*!<Application Watchdog                      */\n#define FDCAN_TTIR_CER_Pos        (18U)\n#define FDCAN_TTIR_CER_Msk        (0x1UL << FDCAN_TTIR_CER_Pos)                /*!< 0x00040000 */\n#define FDCAN_TTIR_CER            FDCAN_TTIR_CER_Msk                           /*!<Configuration Error                       */\n\n/*****************  Bit definition for FDCAN_TTIE register  ********************/\n#define FDCAN_TTIE_SBCE_Pos       (0U)\n#define FDCAN_TTIE_SBCE_Msk       (0x1UL << FDCAN_TTIE_SBCE_Pos)               /*!< 0x00000001 */\n#define FDCAN_TTIE_SBCE           FDCAN_TTIE_SBCE_Msk                          /*!<Start of Basic Cycle Interrupt Enable             */\n#define FDCAN_TTIE_SMCE_Pos       (1U)\n#define FDCAN_TTIE_SMCE_Msk       (0x1UL << FDCAN_TTIE_SMCE_Pos)               /*!< 0x00000002 */\n#define FDCAN_TTIE_SMCE           FDCAN_TTIE_SMCE_Msk                          /*!<Start of Matrix Cycle Interrupt Enable            */\n#define FDCAN_TTIE_CSME_Pos       (2U)\n#define FDCAN_TTIE_CSME_Msk       (0x1UL << FDCAN_TTIE_CSME_Pos)               /*!< 0x00000004 */\n#define FDCAN_TTIE_CSME           FDCAN_TTIE_CSME_Msk                          /*!<Change of Synchronization Mode Interrupt Enable   */\n#define FDCAN_TTIE_SOGE_Pos       (3U)\n#define FDCAN_TTIE_SOGE_Msk       (0x1UL << FDCAN_TTIE_SOGE_Pos)               /*!< 0x00000008 */\n#define FDCAN_TTIE_SOGE           FDCAN_TTIE_SOGE_Msk                          /*!<Start of Gap Interrupt Enable                     */\n#define FDCAN_TTIE_RTMIE_Pos      (4U)\n#define FDCAN_TTIE_RTMIE_Msk      (0x1UL << FDCAN_TTIE_RTMIE_Pos)              /*!< 0x00000010 */\n#define FDCAN_TTIE_RTMIE          FDCAN_TTIE_RTMIE_Msk                         /*!<Register Time Mark Interrupt Interrupt Enable     */\n#define FDCAN_TTIE_TTMIE_Pos      (5U)\n#define FDCAN_TTIE_TTMIE_Msk      (0x1UL << FDCAN_TTIE_TTMIE_Pos)              /*!< 0x00000020 */\n#define FDCAN_TTIE_TTMIE          FDCAN_TTIE_TTMIE_Msk                         /*!<Trigger Time Mark Event Internal Interrupt Enable */\n#define FDCAN_TTIE_SWEE_Pos       (6U)\n#define FDCAN_TTIE_SWEE_Msk       (0x1UL << FDCAN_TTIE_SWEE_Pos)               /*!< 0x00000040 */\n#define FDCAN_TTIE_SWEE           FDCAN_TTIE_SWEE_Msk                          /*!<Stop Watch Event Interrupt Enable                 */\n#define FDCAN_TTIE_GTWE_Pos       (7U)\n#define FDCAN_TTIE_GTWE_Msk       (0x1UL << FDCAN_TTIE_GTWE_Pos)               /*!< 0x00000080 */\n#define FDCAN_TTIE_GTWE           FDCAN_TTIE_GTWE_Msk                          /*!<Global Time Wrap Interrupt Enable                 */\n#define FDCAN_TTIE_GTDE_Pos       (8U)\n#define FDCAN_TTIE_GTDE_Msk       (0x1UL << FDCAN_TTIE_GTDE_Pos)               /*!< 0x00000100 */\n#define FDCAN_TTIE_GTDE           FDCAN_TTIE_GTDE_Msk                          /*!<Global Time Discontinuity Interrupt Enable        */\n#define FDCAN_TTIE_GTEE_Pos       (9U)\n#define FDCAN_TTIE_GTEE_Msk       (0x1UL << FDCAN_TTIE_GTEE_Pos)               /*!< 0x00000200 */\n#define FDCAN_TTIE_GTEE           FDCAN_TTIE_GTEE_Msk                          /*!<Global Time Error Interrupt Enable                */\n#define FDCAN_TTIE_TXUE_Pos       (10U)\n#define FDCAN_TTIE_TXUE_Msk       (0x1UL << FDCAN_TTIE_TXUE_Pos)               /*!< 0x00000400 */\n#define FDCAN_TTIE_TXUE           FDCAN_TTIE_TXUE_Msk                          /*!<Tx Count Underflow Interrupt Enable               */\n#define FDCAN_TTIE_TXOE_Pos       (11U)\n#define FDCAN_TTIE_TXOE_Msk       (0x1UL << FDCAN_TTIE_TXOE_Pos)               /*!< 0x00000800 */\n#define FDCAN_TTIE_TXOE           FDCAN_TTIE_TXOE_Msk                          /*!<Tx Count Overflow Interrupt Enable                */\n#define FDCAN_TTIE_SE1E_Pos       (12U)\n#define FDCAN_TTIE_SE1E_Msk       (0x1UL << FDCAN_TTIE_SE1E_Pos)               /*!< 0x00001000 */\n#define FDCAN_TTIE_SE1E           FDCAN_TTIE_SE1E_Msk                          /*!<Scheduling Error 1 Interrupt Enable               */\n#define FDCAN_TTIE_SE2E_Pos       (13U)\n#define FDCAN_TTIE_SE2E_Msk       (0x1UL << FDCAN_TTIE_SE2E_Pos)               /*!< 0x00002000 */\n#define FDCAN_TTIE_SE2E           FDCAN_TTIE_SE2E_Msk                          /*!<Scheduling Error 2 Interrupt Enable               */\n#define FDCAN_TTIE_ELCE_Pos       (14U)\n#define FDCAN_TTIE_ELCE_Msk       (0x1UL << FDCAN_TTIE_ELCE_Pos)               /*!< 0x00004000 */\n#define FDCAN_TTIE_ELCE           FDCAN_TTIE_ELCE_Msk                          /*!<Error Level Changed Interrupt Enable              */\n#define FDCAN_TTIE_IWTE_Pos       (15U)\n#define FDCAN_TTIE_IWTE_Msk       (0x1UL << FDCAN_TTIE_IWTE_Pos)               /*!< 0x00008000 */\n#define FDCAN_TTIE_IWTE           FDCAN_TTIE_IWTE_Msk                          /*!<Initialization Watch Trigger Interrupt Enable     */\n#define FDCAN_TTIE_WTE_Pos        (16U)\n#define FDCAN_TTIE_WTE_Msk        (0x1UL << FDCAN_TTIE_WTE_Pos)                /*!< 0x00010000 */\n#define FDCAN_TTIE_WTE            FDCAN_TTIE_WTE_Msk                           /*!<Watch Trigger Interrupt Enable                    */\n#define FDCAN_TTIE_AWE_Pos        (17U)\n#define FDCAN_TTIE_AWE_Msk        (0x1UL << FDCAN_TTIE_AWE_Pos)                /*!< 0x00020000 */\n#define FDCAN_TTIE_AWE            FDCAN_TTIE_AWE_Msk                           /*!<Application Watchdog Interrupt Enable             */\n#define FDCAN_TTIE_CERE_Pos       (18U)\n#define FDCAN_TTIE_CERE_Msk       (0x1UL << FDCAN_TTIE_CERE_Pos)               /*!< 0x00040000 */\n#define FDCAN_TTIE_CERE           FDCAN_TTIE_CERE_Msk                          /*!<Configuration Error Interrupt Enable              */\n\n/*****************  Bit definition for FDCAN_TTILS register  ********************/\n#define FDCAN_TTILS_SBCS_Pos      (0U)\n#define FDCAN_TTILS_SBCS_Msk      (0x1UL << FDCAN_TTILS_SBCS_Pos)              /*!< 0x00000001 */\n#define FDCAN_TTILS_SBCS          FDCAN_TTILS_SBCS_Msk                         /*!<Start of Basic Cycle Interrupt Line               */\n#define FDCAN_TTILS_SMCS_Pos      (1U)\n#define FDCAN_TTILS_SMCS_Msk      (0x1UL << FDCAN_TTILS_SMCS_Pos)              /*!< 0x00000002 */\n#define FDCAN_TTILS_SMCS          FDCAN_TTILS_SMCS_Msk                         /*!<Start of Matrix Cycle Interrupt Line              */\n#define FDCAN_TTILS_CSMS_Pos      (2U)\n#define FDCAN_TTILS_CSMS_Msk      (0x1UL << FDCAN_TTILS_CSMS_Pos)              /*!< 0x00000004 */\n#define FDCAN_TTILS_CSMS          FDCAN_TTILS_CSMS_Msk                         /*!<Change of Synchronization Mode Interrupt Line     */\n#define FDCAN_TTILS_SOGS_Pos      (3U)\n#define FDCAN_TTILS_SOGS_Msk      (0x1UL << FDCAN_TTILS_SOGS_Pos)              /*!< 0x00000008 */\n#define FDCAN_TTILS_SOGS          FDCAN_TTILS_SOGS_Msk                         /*!<Start of Gap Interrupt Line                       */\n#define FDCAN_TTILS_RTMIS_Pos     (4U)\n#define FDCAN_TTILS_RTMIS_Msk     (0x1UL << FDCAN_TTILS_RTMIS_Pos)             /*!< 0x00000010 */\n#define FDCAN_TTILS_RTMIS         FDCAN_TTILS_RTMIS_Msk                        /*!<Register Time Mark Interrupt Interrupt Line       */\n#define FDCAN_TTILS_TTMIS_Pos     (5U)\n#define FDCAN_TTILS_TTMIS_Msk     (0x1UL << FDCAN_TTILS_TTMIS_Pos)             /*!< 0x00000020 */\n#define FDCAN_TTILS_TTMIS         FDCAN_TTILS_TTMIS_Msk                        /*!<Trigger Time Mark Event Internal Interrupt Line   */\n#define FDCAN_TTILS_SWES_Pos      (6U)\n#define FDCAN_TTILS_SWES_Msk      (0x1UL << FDCAN_TTILS_SWES_Pos)              /*!< 0x00000040 */\n#define FDCAN_TTILS_SWES          FDCAN_TTILS_SWES_Msk                         /*!<Stop Watch Event Interrupt Line                   */\n#define FDCAN_TTILS_GTWS_Pos      (7U)\n#define FDCAN_TTILS_GTWS_Msk      (0x1UL << FDCAN_TTILS_GTWS_Pos)              /*!< 0x00000080 */\n#define FDCAN_TTILS_GTWS          FDCAN_TTILS_GTWS_Msk                         /*!<Global Time Wrap Interrupt Line                   */\n#define FDCAN_TTILS_GTDS_Pos      (8U)\n#define FDCAN_TTILS_GTDS_Msk      (0x1UL << FDCAN_TTILS_GTDS_Pos)              /*!< 0x00000100 */\n#define FDCAN_TTILS_GTDS          FDCAN_TTILS_GTDS_Msk                         /*!<Global Time Discontinuity Interrupt Line          */\n#define FDCAN_TTILS_GTES_Pos      (9U)\n#define FDCAN_TTILS_GTES_Msk      (0x1UL << FDCAN_TTILS_GTES_Pos)              /*!< 0x00000200 */\n#define FDCAN_TTILS_GTES          FDCAN_TTILS_GTES_Msk                         /*!<Global Time Error Interrupt Line                  */\n#define FDCAN_TTILS_TXUS_Pos      (10U)\n#define FDCAN_TTILS_TXUS_Msk      (0x1UL << FDCAN_TTILS_TXUS_Pos)              /*!< 0x00000400 */\n#define FDCAN_TTILS_TXUS          FDCAN_TTILS_TXUS_Msk                         /*!<Tx Count Underflow Interrupt Line                 */\n#define FDCAN_TTILS_TXOS_Pos      (11U)\n#define FDCAN_TTILS_TXOS_Msk      (0x1UL << FDCAN_TTILS_TXOS_Pos)              /*!< 0x00000800 */\n#define FDCAN_TTILS_TXOS          FDCAN_TTILS_TXOS_Msk                         /*!<Tx Count Overflow Interrupt Line                  */\n#define FDCAN_TTILS_SE1S_Pos      (12U)\n#define FDCAN_TTILS_SE1S_Msk      (0x1UL << FDCAN_TTILS_SE1S_Pos)              /*!< 0x00001000 */\n#define FDCAN_TTILS_SE1S          FDCAN_TTILS_SE1S_Msk                         /*!<Scheduling Error 1 Interrupt Line                 */\n#define FDCAN_TTILS_SE2S_Pos      (13U)\n#define FDCAN_TTILS_SE2S_Msk      (0x1UL << FDCAN_TTILS_SE2S_Pos)              /*!< 0x00002000 */\n#define FDCAN_TTILS_SE2S          FDCAN_TTILS_SE2S_Msk                         /*!<Scheduling Error 2 Interrupt Line                 */\n#define FDCAN_TTILS_ELCS_Pos      (14U)\n#define FDCAN_TTILS_ELCS_Msk      (0x1UL << FDCAN_TTILS_ELCS_Pos)              /*!< 0x00004000 */\n#define FDCAN_TTILS_ELCS          FDCAN_TTILS_ELCS_Msk                         /*!<Error Level Changed Interrupt Line                */\n#define FDCAN_TTILS_IWTS_Pos      (15U)\n#define FDCAN_TTILS_IWTS_Msk      (0x1UL << FDCAN_TTILS_IWTS_Pos)              /*!< 0x00008000 */\n#define FDCAN_TTILS_IWTS          FDCAN_TTILS_IWTS_Msk                         /*!<Initialization Watch Trigger Interrupt Line       */\n#define FDCAN_TTILS_WTS_Pos       (16U)\n#define FDCAN_TTILS_WTS_Msk       (0x1UL << FDCAN_TTILS_WTS_Pos)               /*!< 0x00010000 */\n#define FDCAN_TTILS_WTS           FDCAN_TTILS_WTS_Msk                          /*!<Watch Trigger Interrupt Line                      */\n#define FDCAN_TTILS_AWS_Pos       (17U)\n#define FDCAN_TTILS_AWS_Msk       (0x1UL << FDCAN_TTILS_AWS_Pos)               /*!< 0x00020000 */\n#define FDCAN_TTILS_AWS           FDCAN_TTILS_AWS_Msk                          /*!<Application Watchdog Interrupt Line               */\n#define FDCAN_TTILS_CERS_Pos      (18U)\n#define FDCAN_TTILS_CERS_Msk      (0x1UL << FDCAN_TTILS_CERS_Pos)              /*!< 0x00040000 */\n#define FDCAN_TTILS_CERS          FDCAN_TTILS_CERS_Msk                         /*!<Configuration Error Interrupt Line                */\n\n/*****************  Bit definition for FDCAN_TTOST register  ********************/\n#define FDCAN_TTOST_EL_Pos        (0U)\n#define FDCAN_TTOST_EL_Msk        (0x3UL << FDCAN_TTOST_EL_Pos)                /*!< 0x00000003 */\n#define FDCAN_TTOST_EL            FDCAN_TTOST_EL_Msk                           /*!<Error Level                              */\n#define FDCAN_TTOST_MS_Pos        (2U)\n#define FDCAN_TTOST_MS_Msk        (0x3UL << FDCAN_TTOST_MS_Pos)                /*!< 0x0000000C */\n#define FDCAN_TTOST_MS            FDCAN_TTOST_MS_Msk                           /*!<Master State                             */\n#define FDCAN_TTOST_SYS_Pos       (4U)\n#define FDCAN_TTOST_SYS_Msk       (0x3UL << FDCAN_TTOST_SYS_Pos)               /*!< 0x00000030 */\n#define FDCAN_TTOST_SYS           FDCAN_TTOST_SYS_Msk                          /*!<Synchronization State                    */\n#define FDCAN_TTOST_QGTP_Pos      (6U)\n#define FDCAN_TTOST_QGTP_Msk      (0x1UL << FDCAN_TTOST_QGTP_Pos)              /*!< 0x00000040 */\n#define FDCAN_TTOST_QGTP          FDCAN_TTOST_QGTP_Msk                         /*!<Quality of Global Time Phase             */\n#define FDCAN_TTOST_QCS_Pos       (7U)\n#define FDCAN_TTOST_QCS_Msk       (0x1UL << FDCAN_TTOST_QCS_Pos)               /*!< 0x00000080 */\n#define FDCAN_TTOST_QCS           FDCAN_TTOST_QCS_Msk                          /*!<Quality of Clock Speed                   */\n#define FDCAN_TTOST_RTO_Pos       (8U)\n#define FDCAN_TTOST_RTO_Msk       (0xFFUL << FDCAN_TTOST_RTO_Pos)              /*!< 0x0000FF00 */\n#define FDCAN_TTOST_RTO           FDCAN_TTOST_RTO_Msk                          /*!<Reference Trigger Offset                 */\n#define FDCAN_TTOST_WGTD_Pos      (22U)\n#define FDCAN_TTOST_WGTD_Msk      (0x1UL << FDCAN_TTOST_WGTD_Pos)              /*!< 0x00400000 */\n#define FDCAN_TTOST_WGTD          FDCAN_TTOST_WGTD_Msk                         /*!<Wait for Global Time Discontinuity       */\n#define FDCAN_TTOST_GFI_Pos       (23U)\n#define FDCAN_TTOST_GFI_Msk       (0x1UL << FDCAN_TTOST_GFI_Pos)               /*!< 0x00800000 */\n#define FDCAN_TTOST_GFI           FDCAN_TTOST_GFI_Msk                          /*!<Gap Finished Indicator                   */\n#define FDCAN_TTOST_TMP_Pos       (24U)\n#define FDCAN_TTOST_TMP_Msk       (0x7UL << FDCAN_TTOST_TMP_Pos)               /*!< 0x07000000 */\n#define FDCAN_TTOST_TMP           FDCAN_TTOST_TMP_Msk                          /*!<Time Master Priority                     */\n#define FDCAN_TTOST_GSI_Pos       (27U)\n#define FDCAN_TTOST_GSI_Msk       (0x1UL << FDCAN_TTOST_GSI_Pos)               /*!< 0x08000000 */\n#define FDCAN_TTOST_GSI           FDCAN_TTOST_GSI_Msk                          /*!<Gap Started Indicator                    */\n#define FDCAN_TTOST_WFE_Pos       (28U)\n#define FDCAN_TTOST_WFE_Msk       (0x1UL << FDCAN_TTOST_WFE_Pos)               /*!< 0x10000000 */\n#define FDCAN_TTOST_WFE           FDCAN_TTOST_WFE_Msk                          /*!<Wait for Event                           */\n#define FDCAN_TTOST_AWE_Pos       (29U)\n#define FDCAN_TTOST_AWE_Msk       (0x1UL << FDCAN_TTOST_AWE_Pos)               /*!< 0x20000000 */\n#define FDCAN_TTOST_AWE           FDCAN_TTOST_AWE_Msk                          /*!<Application Watchdog Event               */\n#define FDCAN_TTOST_WECS_Pos      (30U)\n#define FDCAN_TTOST_WECS_Msk      (0x1UL << FDCAN_TTOST_WECS_Pos)              /*!< 0x40000000 */\n#define FDCAN_TTOST_WECS          FDCAN_TTOST_WECS_Msk                         /*!<Wait for External Clock Synchronization  */\n#define FDCAN_TTOST_SPL_Pos       (31U)\n#define FDCAN_TTOST_SPL_Msk       (0x1UL << FDCAN_TTOST_SPL_Pos)               /*!< 0x80000000 */\n#define FDCAN_TTOST_SPL           FDCAN_TTOST_SPL_Msk                          /*!<Schedule Phase Lock                      */\n\n/*****************  Bit definition for FDCAN_TURNA register  ********************/\n#define FDCAN_TURNA_NAV_Pos       (0U)\n#define FDCAN_TURNA_NAV_Msk       (0x3FFFFUL << FDCAN_TURNA_NAV_Pos)           /*!< 0x0003FFFF */\n#define FDCAN_TURNA_NAV           FDCAN_TURNA_NAV_Msk                          /*!<Numerator Actual Value                   */\n\n/*****************  Bit definition for FDCAN_TTLGT register  ********************/\n#define FDCAN_TTLGT_LT_Pos        (0U)\n#define FDCAN_TTLGT_LT_Msk        (0xFFFFUL << FDCAN_TTLGT_LT_Pos)             /*!< 0x0000FFFF */\n#define FDCAN_TTLGT_LT            FDCAN_TTLGT_LT_Msk                           /*!<Local Time                               */\n#define FDCAN_TTLGT_GT_Pos        (16U)\n#define FDCAN_TTLGT_GT_Msk        (0xFFFFUL << FDCAN_TTLGT_GT_Pos)             /*!< 0xFFFF0000 */\n#define FDCAN_TTLGT_GT            FDCAN_TTLGT_GT_Msk                           /*!<Global Time                              */\n\n/*****************  Bit definition for FDCAN_TTCTC register  ********************/\n#define FDCAN_TTCTC_CT_Pos        (0U)\n#define FDCAN_TTCTC_CT_Msk        (0xFFFFUL << FDCAN_TTCTC_CT_Pos)             /*!< 0x0000FFFF */\n#define FDCAN_TTCTC_CT            FDCAN_TTCTC_CT_Msk                           /*!<Cycle Time                               */\n#define FDCAN_TTCTC_CC_Pos        (16U)\n#define FDCAN_TTCTC_CC_Msk        (0x3FUL << FDCAN_TTCTC_CC_Pos)               /*!< 0x003F0000 */\n#define FDCAN_TTCTC_CC            FDCAN_TTCTC_CC_Msk                           /*!<Cycle Count                              */\n\n/*****************  Bit definition for FDCAN_TTCPT register  ********************/\n#define FDCAN_TTCPT_CCV_Pos       (0U)\n#define FDCAN_TTCPT_CCV_Msk       (0x3FUL << FDCAN_TTCPT_CCV_Pos)              /*!< 0x0000003F */\n#define FDCAN_TTCPT_CCV           FDCAN_TTCPT_CCV_Msk                          /*!<Cycle Count Value                        */\n#define FDCAN_TTCPT_SWV_Pos       (16U)\n#define FDCAN_TTCPT_SWV_Msk       (0xFFFFUL << FDCAN_TTCPT_SWV_Pos)            /*!< 0xFFFF0000 */\n#define FDCAN_TTCPT_SWV           FDCAN_TTCPT_SWV_Msk                          /*!<Stop Watch Value                         */\n\n/*****************  Bit definition for FDCAN_TTCSM register  ********************/\n#define FDCAN_TTCSM_CSM_Pos       (0U)\n#define FDCAN_TTCSM_CSM_Msk       (0xFFFFUL << FDCAN_TTCSM_CSM_Pos)            /*!< 0x0000FFFF */\n#define FDCAN_TTCSM_CSM           FDCAN_TTCSM_CSM_Msk                          /*!<Cycle Sync Mark                          */\n\n/*****************  Bit definition for FDCAN_TTTS register  *********************/\n#define FDCAN_TTTS_SWTSEL_Pos     (0U)\n#define FDCAN_TTTS_SWTSEL_Msk     (0x3UL << FDCAN_TTTS_SWTSEL_Pos)             /*!< 0x00000003 */\n#define FDCAN_TTTS_SWTSEL         FDCAN_TTTS_SWTSEL_Msk                        /*!<Stop watch trigger input selection       */\n#define FDCAN_TTTS_EVTSEL_Pos     (4U)\n#define FDCAN_TTTS_EVTSEL_Msk     (0x3UL << FDCAN_TTTS_EVTSEL_Pos)             /*!< 0x00000030 */\n#define FDCAN_TTTS_EVTSEL         FDCAN_TTTS_EVTSEL_Msk                        /*!<Event trigger input selection            */\n\n/********************************************************************************/\n/*                                                                              */\n/*                      FDCANCCU (Clock Calibration unit)                       */\n/*                                                                              */\n/********************************************************************************/\n\n/*****************  Bit definition for FDCANCCU_CREL register  ******************/\n#define FDCANCCU_CREL_DAY_Pos        (0U)\n#define FDCANCCU_CREL_DAY_Msk        (0xFFUL << FDCANCCU_CREL_DAY_Pos)         /*!< 0x000000FF */\n#define FDCANCCU_CREL_DAY            FDCANCCU_CREL_DAY_Msk                     /*!<Timestamp Day                           */\n#define FDCANCCU_CREL_MON_Pos        (8U)\n#define FDCANCCU_CREL_MON_Msk        (0xFFUL << FDCANCCU_CREL_MON_Pos)         /*!< 0x0000FF00 */\n#define FDCANCCU_CREL_MON            FDCANCCU_CREL_MON_Msk                     /*!<Timestamp Month                         */\n#define FDCANCCU_CREL_YEAR_Pos       (16U)\n#define FDCANCCU_CREL_YEAR_Msk       (0xFUL << FDCANCCU_CREL_YEAR_Pos)         /*!< 0x000F0000 */\n#define FDCANCCU_CREL_YEAR           FDCANCCU_CREL_YEAR_Msk                    /*!<Timestamp Year                          */\n#define FDCANCCU_CREL_SUBSTEP_Pos    (20U)\n#define FDCANCCU_CREL_SUBSTEP_Msk    (0xFUL << FDCANCCU_CREL_SUBSTEP_Pos)      /*!< 0x00F00000 */\n#define FDCANCCU_CREL_SUBSTEP        FDCANCCU_CREL_SUBSTEP_Msk                 /*!<Sub-step of Core release                */\n#define FDCANCCU_CREL_STEP_Pos       (24U)\n#define FDCANCCU_CREL_STEP_Msk       (0xFUL << FDCANCCU_CREL_STEP_Pos)         /*!< 0x0F000000 */\n#define FDCANCCU_CREL_STEP           FDCANCCU_CREL_STEP_Msk                    /*!<Step of Core release                    */\n#define FDCANCCU_CREL_REL_Pos        (28U)\n#define FDCANCCU_CREL_REL_Msk        (0xFUL << FDCANCCU_CREL_REL_Pos)          /*!< 0xF0000000 */\n#define FDCANCCU_CREL_REL            FDCANCCU_CREL_REL_Msk                     /*!<Core release                            */\n\n/*****************  Bit definition for FDCANCCU_CCFG register  ******************/\n#define FDCANCCU_CCFG_TQBT_Pos       (0U)\n#define FDCANCCU_CCFG_TQBT_Msk       (0x1FUL << FDCANCCU_CCFG_TQBT_Pos)        /*!< 0x0000001F */\n#define FDCANCCU_CCFG_TQBT           FDCANCCU_CCFG_TQBT_Msk                    /*!<Time Quanta per Bit Time                */\n#define FDCANCCU_CCFG_BCC_Pos        (6U)\n#define FDCANCCU_CCFG_BCC_Msk        (0x1UL << FDCANCCU_CCFG_BCC_Pos)          /*!< 0x00000040 */\n#define FDCANCCU_CCFG_BCC            FDCANCCU_CCFG_BCC_Msk                     /*!<Bypass Clock Calibration                */\n#define FDCANCCU_CCFG_CFL_Pos        (7U)\n#define FDCANCCU_CCFG_CFL_Msk        (0x1UL << FDCANCCU_CCFG_CFL_Pos)          /*!< 0x00000080 */\n#define FDCANCCU_CCFG_CFL            FDCANCCU_CCFG_CFL_Msk                     /*!<Calibration Field Length                */\n#define FDCANCCU_CCFG_OCPM_Pos       (8U)\n#define FDCANCCU_CCFG_OCPM_Msk       (0xFFUL << FDCANCCU_CCFG_OCPM_Pos)        /*!< 0x0000FF00 */\n#define FDCANCCU_CCFG_OCPM           FDCANCCU_CCFG_OCPM_Msk                    /*!<Oscillator Clock Periods Minimum        */\n#define FDCANCCU_CCFG_CDIV_Pos       (16U)\n#define FDCANCCU_CCFG_CDIV_Msk       (0xFUL << FDCANCCU_CCFG_CDIV_Pos)         /*!< 0x000F0000 */\n#define FDCANCCU_CCFG_CDIV           FDCANCCU_CCFG_CDIV_Msk                    /*!<Clock Divider                           */\n#define FDCANCCU_CCFG_SWR_Pos        (31U)\n#define FDCANCCU_CCFG_SWR_Msk        (0x1UL << FDCANCCU_CCFG_SWR_Pos)          /*!< 0x80000000 */\n#define FDCANCCU_CCFG_SWR            FDCANCCU_CCFG_SWR_Msk                     /*!<Software Reset                          */\n\n/*****************  Bit definition for FDCANCCU_CSTAT register  *****************/\n#define FDCANCCU_CSTAT_OCPC_Pos      (0U)\n#define FDCANCCU_CSTAT_OCPC_Msk      (0x3FFFFUL << FDCANCCU_CSTAT_OCPC_Pos)    /*!< 0x0003FFFF */\n#define FDCANCCU_CSTAT_OCPC          FDCANCCU_CSTAT_OCPC_Msk                   /*!<Oscillator Clock Period Counter        */\n#define FDCANCCU_CSTAT_TQC_Pos       (18U)\n#define FDCANCCU_CSTAT_TQC_Msk       (0x7FFUL << FDCANCCU_CSTAT_TQC_Pos)       /*!< 0x1FFC0000 */\n#define FDCANCCU_CSTAT_TQC           FDCANCCU_CSTAT_TQC_Msk                    /*!<Time Quanta Counter                    */\n#define FDCANCCU_CSTAT_CALS_Pos      (30U)\n#define FDCANCCU_CSTAT_CALS_Msk      (0x3UL << FDCANCCU_CSTAT_CALS_Pos)        /*!< 0xC0000000 */\n#define FDCANCCU_CSTAT_CALS          FDCANCCU_CSTAT_CALS_Msk                   /*!<Calibration State                      */\n\n/******************  Bit definition for FDCANCCU_CWD register  ******************/\n#define FDCANCCU_CWD_WDC_Pos         (0U)\n#define FDCANCCU_CWD_WDC_Msk         (0xFFFFUL << FDCANCCU_CWD_WDC_Pos)        /*!< 0x0000FFFF */\n#define FDCANCCU_CWD_WDC             FDCANCCU_CWD_WDC_Msk                      /*!<Watchdog Configuration                 */\n#define FDCANCCU_CWD_WDV_Pos         (16U)\n#define FDCANCCU_CWD_WDV_Msk         (0xFFFFUL << FDCANCCU_CWD_WDV_Pos)        /*!< 0xFFFF0000 */\n#define FDCANCCU_CWD_WDV             FDCANCCU_CWD_WDV_Msk                      /*!<Watchdog Value                         */\n\n/******************  Bit definition for FDCANCCU_IR register  *******************/\n#define FDCANCCU_IR_CWE_Pos          (0U)\n#define FDCANCCU_IR_CWE_Msk          (0x1UL << FDCANCCU_IR_CWE_Pos)            /*!< 0x00000001 */\n#define FDCANCCU_IR_CWE              FDCANCCU_IR_CWE_Msk                       /*!<Calibration Watchdog Event             */\n#define FDCANCCU_IR_CSC_Pos          (1U)\n#define FDCANCCU_IR_CSC_Msk          (0x1UL << FDCANCCU_IR_CSC_Pos)            /*!< 0x00000002 */\n#define FDCANCCU_IR_CSC              FDCANCCU_IR_CSC_Msk                       /*!<Calibration State Changed              */\n\n/******************  Bit definition for FDCANCCU_IE register  *******************/\n#define FDCANCCU_IE_CWEE_Pos         (0U)\n#define FDCANCCU_IE_CWEE_Msk         (0x1UL << FDCANCCU_IE_CWEE_Pos)           /*!< 0x00000001 */\n#define FDCANCCU_IE_CWEE             FDCANCCU_IE_CWEE_Msk                      /*!<Calibration Watchdog Event Enable      */\n#define FDCANCCU_IE_CSCE_Pos         (1U)\n#define FDCANCCU_IE_CSCE_Msk         (0x1UL << FDCANCCU_IE_CSCE_Pos)           /*!< 0x00000002 */\n#define FDCANCCU_IE_CSCE             FDCANCCU_IE_CSCE_Msk                      /*!<Calibration State Changed Enable       */\n\n/******************************************************************************/\n/*                                                                            */\n/*                          HDMI-CEC (CEC)                                    */\n/*                                                                            */\n/******************************************************************************/\n\n/*******************  Bit definition for CEC_CR register  *********************/\n#define CEC_CR_CECEN_Pos         (0U)\n#define CEC_CR_CECEN_Msk         (0x1UL << CEC_CR_CECEN_Pos)                   /*!< 0x00000001 */\n#define CEC_CR_CECEN             CEC_CR_CECEN_Msk                              /*!< CEC Enable                                */\n#define CEC_CR_TXSOM_Pos         (1U)\n#define CEC_CR_TXSOM_Msk         (0x1UL << CEC_CR_TXSOM_Pos)                   /*!< 0x00000002 */\n#define CEC_CR_TXSOM             CEC_CR_TXSOM_Msk                              /*!< CEC Tx Start Of Message                   */\n#define CEC_CR_TXEOM_Pos         (2U)\n#define CEC_CR_TXEOM_Msk         (0x1UL << CEC_CR_TXEOM_Pos)                   /*!< 0x00000004 */\n#define CEC_CR_TXEOM             CEC_CR_TXEOM_Msk                              /*!< CEC Tx End Of Message                     */\n\n/*******************  Bit definition for CEC_CFGR register  *******************/\n#define CEC_CFGR_SFT_Pos         (0U)\n#define CEC_CFGR_SFT_Msk         (0x7UL << CEC_CFGR_SFT_Pos)                   /*!< 0x00000007 */\n#define CEC_CFGR_SFT             CEC_CFGR_SFT_Msk                              /*!< CEC Signal Free Time                      */\n#define CEC_CFGR_RXTOL_Pos       (3U)\n#define CEC_CFGR_RXTOL_Msk       (0x1UL << CEC_CFGR_RXTOL_Pos)                 /*!< 0x00000008 */\n#define CEC_CFGR_RXTOL           CEC_CFGR_RXTOL_Msk                            /*!< CEC Tolerance                             */\n#define CEC_CFGR_BRESTP_Pos      (4U)\n#define CEC_CFGR_BRESTP_Msk      (0x1UL << CEC_CFGR_BRESTP_Pos)                /*!< 0x00000010 */\n#define CEC_CFGR_BRESTP          CEC_CFGR_BRESTP_Msk                           /*!< CEC Rx Stop                               */\n#define CEC_CFGR_BREGEN_Pos      (5U)\n#define CEC_CFGR_BREGEN_Msk      (0x1UL << CEC_CFGR_BREGEN_Pos)                /*!< 0x00000020 */\n#define CEC_CFGR_BREGEN          CEC_CFGR_BREGEN_Msk                           /*!< CEC Bit Rising Error generation           */\n#define CEC_CFGR_LBPEGEN_Pos     (6U)\n#define CEC_CFGR_LBPEGEN_Msk     (0x1UL << CEC_CFGR_LBPEGEN_Pos)               /*!< 0x00000040 */\n#define CEC_CFGR_LBPEGEN         CEC_CFGR_LBPEGEN_Msk                          /*!< CEC Long Bit Period Error generation      */\n#define CEC_CFGR_SFTOPT_Pos      (8U)\n#define CEC_CFGR_SFTOPT_Msk      (0x1UL << CEC_CFGR_SFTOPT_Pos)                /*!< 0x00000100 */\n#define CEC_CFGR_SFTOPT          CEC_CFGR_SFTOPT_Msk                           /*!< CEC Signal Free Time optional             */\n#define CEC_CFGR_BRDNOGEN_Pos    (7U)\n#define CEC_CFGR_BRDNOGEN_Msk    (0x1UL << CEC_CFGR_BRDNOGEN_Pos)              /*!< 0x00000080 */\n#define CEC_CFGR_BRDNOGEN        CEC_CFGR_BRDNOGEN_Msk                         /*!< CEC Broadcast No error generation         */\n#define CEC_CFGR_OAR_Pos         (16U)\n#define CEC_CFGR_OAR_Msk         (0x7FFFUL << CEC_CFGR_OAR_Pos)                /*!< 0x7FFF0000 */\n#define CEC_CFGR_OAR             CEC_CFGR_OAR_Msk                              /*!< CEC Own Address                           */\n#define CEC_CFGR_LSTN_Pos        (31U)\n#define CEC_CFGR_LSTN_Msk        (0x1UL << CEC_CFGR_LSTN_Pos)                  /*!< 0x80000000 */\n#define CEC_CFGR_LSTN            CEC_CFGR_LSTN_Msk                             /*!< CEC Listen mode                           */\n\n/*******************  Bit definition for CEC_TXDR register  *******************/\n#define CEC_TXDR_TXD_Pos         (0U)\n#define CEC_TXDR_TXD_Msk         (0xFFUL << CEC_TXDR_TXD_Pos)                  /*!< 0x000000FF */\n#define CEC_TXDR_TXD             CEC_TXDR_TXD_Msk                              /*!< CEC Tx Data                               */\n\n/*******************  Bit definition for CEC_RXDR register  *******************/\n#define CEC_RXDR_RXD_Pos         (0U)\n#define CEC_RXDR_RXD_Msk         (0xFFUL << CEC_RXDR_RXD_Pos)                  /*!< 0x000000FF */\n#define CEC_RXDR_RXD             CEC_RXDR_RXD_Msk                              /*!< CEC Rx Data                               */\n\n/*******************  Bit definition for CEC_ISR register  ********************/\n#define CEC_ISR_RXBR_Pos         (0U)\n#define CEC_ISR_RXBR_Msk         (0x1UL << CEC_ISR_RXBR_Pos)                   /*!< 0x00000001 */\n#define CEC_ISR_RXBR             CEC_ISR_RXBR_Msk                              /*!< CEC Rx-Byte Received                      */\n#define CEC_ISR_RXEND_Pos        (1U)\n#define CEC_ISR_RXEND_Msk        (0x1UL << CEC_ISR_RXEND_Pos)                  /*!< 0x00000002 */\n#define CEC_ISR_RXEND            CEC_ISR_RXEND_Msk                             /*!< CEC End Of Reception                      */\n#define CEC_ISR_RXOVR_Pos        (2U)\n#define CEC_ISR_RXOVR_Msk        (0x1UL << CEC_ISR_RXOVR_Pos)                  /*!< 0x00000004 */\n#define CEC_ISR_RXOVR            CEC_ISR_RXOVR_Msk                             /*!< CEC Rx-Overrun                            */\n#define CEC_ISR_BRE_Pos          (3U)\n#define CEC_ISR_BRE_Msk          (0x1UL << CEC_ISR_BRE_Pos)                    /*!< 0x00000008 */\n#define CEC_ISR_BRE              CEC_ISR_BRE_Msk                               /*!< CEC Rx Bit Rising Error                   */\n#define CEC_ISR_SBPE_Pos         (4U)\n#define CEC_ISR_SBPE_Msk         (0x1UL << CEC_ISR_SBPE_Pos)                   /*!< 0x00000010 */\n#define CEC_ISR_SBPE             CEC_ISR_SBPE_Msk                              /*!< CEC Rx Short Bit period Error             */\n#define CEC_ISR_LBPE_Pos         (5U)\n#define CEC_ISR_LBPE_Msk         (0x1UL << CEC_ISR_LBPE_Pos)                   /*!< 0x00000020 */\n#define CEC_ISR_LBPE             CEC_ISR_LBPE_Msk                              /*!< CEC Rx Long Bit period Error              */\n#define CEC_ISR_RXACKE_Pos       (6U)\n#define CEC_ISR_RXACKE_Msk       (0x1UL << CEC_ISR_RXACKE_Pos)                 /*!< 0x00000040 */\n#define CEC_ISR_RXACKE           CEC_ISR_RXACKE_Msk                            /*!< CEC Rx Missing Acknowledge                */\n#define CEC_ISR_ARBLST_Pos       (7U)\n#define CEC_ISR_ARBLST_Msk       (0x1UL << CEC_ISR_ARBLST_Pos)                 /*!< 0x00000080 */\n#define CEC_ISR_ARBLST           CEC_ISR_ARBLST_Msk                            /*!< CEC Arbitration Lost                      */\n#define CEC_ISR_TXBR_Pos         (8U)\n#define CEC_ISR_TXBR_Msk         (0x1UL << CEC_ISR_TXBR_Pos)                   /*!< 0x00000100 */\n#define CEC_ISR_TXBR             CEC_ISR_TXBR_Msk                              /*!< CEC Tx Byte Request                       */\n#define CEC_ISR_TXEND_Pos        (9U)\n#define CEC_ISR_TXEND_Msk        (0x1UL << CEC_ISR_TXEND_Pos)                  /*!< 0x00000200 */\n#define CEC_ISR_TXEND            CEC_ISR_TXEND_Msk                             /*!< CEC End of Transmission                   */\n#define CEC_ISR_TXUDR_Pos        (10U)\n#define CEC_ISR_TXUDR_Msk        (0x1UL << CEC_ISR_TXUDR_Pos)                  /*!< 0x00000400 */\n#define CEC_ISR_TXUDR            CEC_ISR_TXUDR_Msk                             /*!< CEC Tx-Buffer Underrun                    */\n#define CEC_ISR_TXERR_Pos        (11U)\n#define CEC_ISR_TXERR_Msk        (0x1UL << CEC_ISR_TXERR_Pos)                  /*!< 0x00000800 */\n#define CEC_ISR_TXERR            CEC_ISR_TXERR_Msk                             /*!< CEC Tx-Error                              */\n#define CEC_ISR_TXACKE_Pos       (12U)\n#define CEC_ISR_TXACKE_Msk       (0x1UL << CEC_ISR_TXACKE_Pos)                 /*!< 0x00001000 */\n#define CEC_ISR_TXACKE           CEC_ISR_TXACKE_Msk                            /*!< CEC Tx Missing Acknowledge                */\n\n/*******************  Bit definition for CEC_IER register  ********************/\n#define CEC_IER_RXBRIE_Pos       (0U)\n#define CEC_IER_RXBRIE_Msk       (0x1UL << CEC_IER_RXBRIE_Pos)                 /*!< 0x00000001 */\n#define CEC_IER_RXBRIE           CEC_IER_RXBRIE_Msk                            /*!< CEC Rx-Byte Received IT Enable            */\n#define CEC_IER_RXENDIE_Pos      (1U)\n#define CEC_IER_RXENDIE_Msk      (0x1UL << CEC_IER_RXENDIE_Pos)                /*!< 0x00000002 */\n#define CEC_IER_RXENDIE          CEC_IER_RXENDIE_Msk                           /*!< CEC End Of Reception IT Enable            */\n#define CEC_IER_RXOVRIE_Pos      (2U)\n#define CEC_IER_RXOVRIE_Msk      (0x1UL << CEC_IER_RXOVRIE_Pos)                /*!< 0x00000004 */\n#define CEC_IER_RXOVRIE          CEC_IER_RXOVRIE_Msk                           /*!< CEC Rx-Overrun IT Enable                  */\n#define CEC_IER_BREIE_Pos        (3U)\n#define CEC_IER_BREIE_Msk        (0x1UL << CEC_IER_BREIE_Pos)                  /*!< 0x00000008 */\n#define CEC_IER_BREIE            CEC_IER_BREIE_Msk                             /*!< CEC Rx Bit Rising Error IT Enable         */\n#define CEC_IER_SBPEIE_Pos       (4U)\n#define CEC_IER_SBPEIE_Msk       (0x1UL << CEC_IER_SBPEIE_Pos)                 /*!< 0x00000010 */\n#define CEC_IER_SBPEIE           CEC_IER_SBPEIE_Msk                            /*!< CEC Rx Short Bit period Error IT Enable   */\n#define CEC_IER_LBPEIE_Pos       (5U)\n#define CEC_IER_LBPEIE_Msk       (0x1UL << CEC_IER_LBPEIE_Pos)                 /*!< 0x00000020 */\n#define CEC_IER_LBPEIE           CEC_IER_LBPEIE_Msk                            /*!< CEC Rx Long Bit period Error IT Enable    */\n#define CEC_IER_RXACKEIE_Pos     (6U)\n#define CEC_IER_RXACKEIE_Msk     (0x1UL << CEC_IER_RXACKEIE_Pos)               /*!< 0x00000040 */\n#define CEC_IER_RXACKEIE         CEC_IER_RXACKEIE_Msk                          /*!< CEC Rx Missing Acknowledge IT Enable      */\n#define CEC_IER_ARBLSTIE_Pos     (7U)\n#define CEC_IER_ARBLSTIE_Msk     (0x1UL << CEC_IER_ARBLSTIE_Pos)               /*!< 0x00000080 */\n#define CEC_IER_ARBLSTIE         CEC_IER_ARBLSTIE_Msk                          /*!< CEC Arbitration Lost IT Enable            */\n#define CEC_IER_TXBRIE_Pos       (8U)\n#define CEC_IER_TXBRIE_Msk       (0x1UL << CEC_IER_TXBRIE_Pos)                 /*!< 0x00000100 */\n#define CEC_IER_TXBRIE           CEC_IER_TXBRIE_Msk                            /*!< CEC Tx Byte Request  IT Enable            */\n#define CEC_IER_TXENDIE_Pos      (9U)\n#define CEC_IER_TXENDIE_Msk      (0x1UL << CEC_IER_TXENDIE_Pos)                /*!< 0x00000200 */\n#define CEC_IER_TXENDIE          CEC_IER_TXENDIE_Msk                           /*!< CEC End of Transmission IT Enable         */\n#define CEC_IER_TXUDRIE_Pos      (10U)\n#define CEC_IER_TXUDRIE_Msk      (0x1UL << CEC_IER_TXUDRIE_Pos)                /*!< 0x00000400 */\n#define CEC_IER_TXUDRIE          CEC_IER_TXUDRIE_Msk                           /*!< CEC Tx-Buffer Underrun IT Enable          */\n#define CEC_IER_TXERRIE_Pos      (11U)\n#define CEC_IER_TXERRIE_Msk      (0x1UL << CEC_IER_TXERRIE_Pos)                /*!< 0x00000800 */\n#define CEC_IER_TXERRIE          CEC_IER_TXERRIE_Msk                           /*!< CEC Tx-Error IT Enable                    */\n#define CEC_IER_TXACKEIE_Pos     (12U)\n#define CEC_IER_TXACKEIE_Msk     (0x1UL << CEC_IER_TXACKEIE_Pos)               /*!< 0x00001000 */\n#define CEC_IER_TXACKEIE         CEC_IER_TXACKEIE_Msk                          /*!< CEC Tx Missing Acknowledge IT Enable      */\n\n/******************************************************************************/\n/*                                                                            */\n/*                          CRC calculation unit                              */\n/*                                                                            */\n/******************************************************************************/\n/*******************  Bit definition for CRC_DR register  *********************/\n#define CRC_DR_DR_Pos            (0U)\n#define CRC_DR_DR_Msk            (0xFFFFFFFFUL << CRC_DR_DR_Pos)               /*!< 0xFFFFFFFF */\n#define CRC_DR_DR                CRC_DR_DR_Msk                                 /*!< Data register bits */\n\n/*******************  Bit definition for CRC_IDR register  ********************/\n#define CRC_IDR_IDR_Pos          (0U)\n#define CRC_IDR_IDR_Msk          (0xFFFFFFFFUL << CRC_IDR_IDR_Pos)             /*!< 0xFFFFFFFF */\n#define CRC_IDR_IDR              CRC_IDR_IDR_Msk                               /*!< General-purpose 32-bit data register bits */\n\n/********************  Bit definition for CRC_CR register  ********************/\n#define CRC_CR_RESET_Pos         (0U)\n#define CRC_CR_RESET_Msk         (0x1UL << CRC_CR_RESET_Pos)                   /*!< 0x00000001 */\n#define CRC_CR_RESET             CRC_CR_RESET_Msk                              /*!< RESET the CRC computation unit bit */\n#define CRC_CR_POLYSIZE_Pos      (3U)\n#define CRC_CR_POLYSIZE_Msk      (0x3UL << CRC_CR_POLYSIZE_Pos)                /*!< 0x00000018 */\n#define CRC_CR_POLYSIZE          CRC_CR_POLYSIZE_Msk                           /*!< Polynomial size bits */\n#define CRC_CR_POLYSIZE_0        (0x1UL << CRC_CR_POLYSIZE_Pos)                 /*!< 0x00000008 */\n#define CRC_CR_POLYSIZE_1        (0x2UL << CRC_CR_POLYSIZE_Pos)                 /*!< 0x00000010 */\n#define CRC_CR_REV_IN_Pos        (5U)\n#define CRC_CR_REV_IN_Msk        (0x3UL << CRC_CR_REV_IN_Pos)                  /*!< 0x00000060 */\n#define CRC_CR_REV_IN            CRC_CR_REV_IN_Msk                             /*!< REV_IN Reverse Input Data bits */\n#define CRC_CR_REV_IN_0          (0x1UL << CRC_CR_REV_IN_Pos)                   /*!< 0x00000020 */\n#define CRC_CR_REV_IN_1          (0x2UL << CRC_CR_REV_IN_Pos)                   /*!< 0x00000040 */\n#define CRC_CR_REV_OUT_Pos       (7U)\n#define CRC_CR_REV_OUT_Msk       (0x1UL << CRC_CR_REV_OUT_Pos)                 /*!< 0x00000080 */\n#define CRC_CR_REV_OUT           CRC_CR_REV_OUT_Msk                            /*!< REV_OUT Reverse Output Data bits */\n\n/*******************  Bit definition for CRC_INIT register  *******************/\n#define CRC_INIT_INIT_Pos        (0U)\n#define CRC_INIT_INIT_Msk        (0xFFFFFFFFUL << CRC_INIT_INIT_Pos)           /*!< 0xFFFFFFFF */\n#define CRC_INIT_INIT            CRC_INIT_INIT_Msk                             /*!< Initial CRC value bits */\n\n/*******************  Bit definition for CRC_POL register  ********************/\n#define CRC_POL_POL_Pos          (0U)\n#define CRC_POL_POL_Msk          (0xFFFFFFFFUL << CRC_POL_POL_Pos)             /*!< 0xFFFFFFFF */\n#define CRC_POL_POL              CRC_POL_POL_Msk                               /*!< Coefficients of the polynomial */\n\n/******************************************************************************/\n/*                                                                            */\n/*                          CRS Clock Recovery System                         */\n/******************************************************************************/\n\n/*******************  Bit definition for CRS_CR register  *********************/\n#define CRS_CR_SYNCOKIE_Pos       (0U)\n#define CRS_CR_SYNCOKIE_Msk       (0x1UL << CRS_CR_SYNCOKIE_Pos)               /*!< 0x00000001 */\n#define CRS_CR_SYNCOKIE           CRS_CR_SYNCOKIE_Msk                          /*!< SYNC event OK interrupt enable */\n#define CRS_CR_SYNCWARNIE_Pos     (1U)\n#define CRS_CR_SYNCWARNIE_Msk     (0x1UL << CRS_CR_SYNCWARNIE_Pos)             /*!< 0x00000002 */\n#define CRS_CR_SYNCWARNIE         CRS_CR_SYNCWARNIE_Msk                        /*!< SYNC warning interrupt enable */\n#define CRS_CR_ERRIE_Pos          (2U)\n#define CRS_CR_ERRIE_Msk          (0x1UL << CRS_CR_ERRIE_Pos)                  /*!< 0x00000004 */\n#define CRS_CR_ERRIE              CRS_CR_ERRIE_Msk                             /*!< SYNC error or trimming error interrupt enable */\n#define CRS_CR_ESYNCIE_Pos        (3U)\n#define CRS_CR_ESYNCIE_Msk        (0x1UL << CRS_CR_ESYNCIE_Pos)                /*!< 0x00000008 */\n#define CRS_CR_ESYNCIE            CRS_CR_ESYNCIE_Msk                           /*!< Expected SYNC interrupt enable */\n#define CRS_CR_CEN_Pos            (5U)\n#define CRS_CR_CEN_Msk            (0x1UL << CRS_CR_CEN_Pos)                    /*!< 0x00000020 */\n#define CRS_CR_CEN                CRS_CR_CEN_Msk                               /*!< Frequency error counter enable */\n#define CRS_CR_AUTOTRIMEN_Pos     (6U)\n#define CRS_CR_AUTOTRIMEN_Msk     (0x1UL << CRS_CR_AUTOTRIMEN_Pos)             /*!< 0x00000040 */\n#define CRS_CR_AUTOTRIMEN         CRS_CR_AUTOTRIMEN_Msk                        /*!< Automatic trimming enable */\n#define CRS_CR_SWSYNC_Pos         (7U)\n#define CRS_CR_SWSYNC_Msk         (0x1UL << CRS_CR_SWSYNC_Pos)                 /*!< 0x00000080 */\n#define CRS_CR_SWSYNC             CRS_CR_SWSYNC_Msk                            /*!< Generate software SYNC event */\n#define CRS_CR_TRIM_Pos           (8U)\n#define CRS_CR_TRIM_Msk           (0x3FUL << CRS_CR_TRIM_Pos)                  /*!< 0x00003F00 */\n#define CRS_CR_TRIM               CRS_CR_TRIM_Msk                              /*!< HSI48 oscillator smooth trimming */\n\n/*******************  Bit definition for CRS_CFGR register  *********************/\n#define CRS_CFGR_RELOAD_Pos       (0U)\n#define CRS_CFGR_RELOAD_Msk       (0xFFFFUL << CRS_CFGR_RELOAD_Pos)            /*!< 0x0000FFFF */\n#define CRS_CFGR_RELOAD           CRS_CFGR_RELOAD_Msk                          /*!< Counter reload value */\n#define CRS_CFGR_FELIM_Pos        (16U)\n#define CRS_CFGR_FELIM_Msk        (0xFFUL << CRS_CFGR_FELIM_Pos)               /*!< 0x00FF0000 */\n#define CRS_CFGR_FELIM            CRS_CFGR_FELIM_Msk                           /*!< Frequency error limit */\n\n#define CRS_CFGR_SYNCDIV_Pos      (24U)\n#define CRS_CFGR_SYNCDIV_Msk      (0x7UL << CRS_CFGR_SYNCDIV_Pos)              /*!< 0x07000000 */\n#define CRS_CFGR_SYNCDIV          CRS_CFGR_SYNCDIV_Msk                         /*!< SYNC divider */\n#define CRS_CFGR_SYNCDIV_0        (0x1UL << CRS_CFGR_SYNCDIV_Pos)               /*!< 0x01000000 */\n#define CRS_CFGR_SYNCDIV_1        (0x2UL << CRS_CFGR_SYNCDIV_Pos)               /*!< 0x02000000 */\n#define CRS_CFGR_SYNCDIV_2        (0x4UL << CRS_CFGR_SYNCDIV_Pos)               /*!< 0x04000000 */\n\n#define CRS_CFGR_SYNCSRC_Pos      (28U)\n#define CRS_CFGR_SYNCSRC_Msk      (0x3UL << CRS_CFGR_SYNCSRC_Pos)              /*!< 0x30000000 */\n#define CRS_CFGR_SYNCSRC          CRS_CFGR_SYNCSRC_Msk                         /*!< SYNC signal source selection */\n#define CRS_CFGR_SYNCSRC_0        (0x1UL << CRS_CFGR_SYNCSRC_Pos)               /*!< 0x10000000 */\n#define CRS_CFGR_SYNCSRC_1        (0x2UL << CRS_CFGR_SYNCSRC_Pos)               /*!< 0x20000000 */\n\n#define CRS_CFGR_SYNCPOL_Pos      (31U)\n#define CRS_CFGR_SYNCPOL_Msk      (0x1UL << CRS_CFGR_SYNCPOL_Pos)              /*!< 0x80000000 */\n#define CRS_CFGR_SYNCPOL          CRS_CFGR_SYNCPOL_Msk                         /*!< SYNC polarity selection */\n\n/*******************  Bit definition for CRS_ISR register  *********************/\n#define CRS_ISR_SYNCOKF_Pos       (0U)\n#define CRS_ISR_SYNCOKF_Msk       (0x1UL << CRS_ISR_SYNCOKF_Pos)               /*!< 0x00000001 */\n#define CRS_ISR_SYNCOKF           CRS_ISR_SYNCOKF_Msk                          /*!< SYNC event OK flag */\n#define CRS_ISR_SYNCWARNF_Pos     (1U)\n#define CRS_ISR_SYNCWARNF_Msk     (0x1UL << CRS_ISR_SYNCWARNF_Pos)             /*!< 0x00000002 */\n#define CRS_ISR_SYNCWARNF         CRS_ISR_SYNCWARNF_Msk                        /*!< SYNC warning flag */\n#define CRS_ISR_ERRF_Pos          (2U)\n#define CRS_ISR_ERRF_Msk          (0x1UL << CRS_ISR_ERRF_Pos)                  /*!< 0x00000004 */\n#define CRS_ISR_ERRF              CRS_ISR_ERRF_Msk                             /*!< Error flag */\n#define CRS_ISR_ESYNCF_Pos        (3U)\n#define CRS_ISR_ESYNCF_Msk        (0x1UL << CRS_ISR_ESYNCF_Pos)                /*!< 0x00000008 */\n#define CRS_ISR_ESYNCF            CRS_ISR_ESYNCF_Msk                           /*!< Expected SYNC flag */\n#define CRS_ISR_SYNCERR_Pos       (8U)\n#define CRS_ISR_SYNCERR_Msk       (0x1UL << CRS_ISR_SYNCERR_Pos)               /*!< 0x00000100 */\n#define CRS_ISR_SYNCERR           CRS_ISR_SYNCERR_Msk                          /*!< SYNC error */\n#define CRS_ISR_SYNCMISS_Pos      (9U)\n#define CRS_ISR_SYNCMISS_Msk      (0x1UL << CRS_ISR_SYNCMISS_Pos)              /*!< 0x00000200 */\n#define CRS_ISR_SYNCMISS          CRS_ISR_SYNCMISS_Msk                         /*!< SYNC missed */\n#define CRS_ISR_TRIMOVF_Pos       (10U)\n#define CRS_ISR_TRIMOVF_Msk       (0x1UL << CRS_ISR_TRIMOVF_Pos)               /*!< 0x00000400 */\n#define CRS_ISR_TRIMOVF           CRS_ISR_TRIMOVF_Msk                          /*!< Trimming overflow or underflow */\n#define CRS_ISR_FEDIR_Pos         (15U)\n#define CRS_ISR_FEDIR_Msk         (0x1UL << CRS_ISR_FEDIR_Pos)                 /*!< 0x00008000 */\n#define CRS_ISR_FEDIR             CRS_ISR_FEDIR_Msk                            /*!< Frequency error direction */\n#define CRS_ISR_FECAP_Pos         (16U)\n#define CRS_ISR_FECAP_Msk         (0xFFFFUL << CRS_ISR_FECAP_Pos)              /*!< 0xFFFF0000 */\n#define CRS_ISR_FECAP             CRS_ISR_FECAP_Msk                            /*!< Frequency error capture */\n\n/*******************  Bit definition for CRS_ICR register  *********************/\n#define CRS_ICR_SYNCOKC_Pos       (0U)\n#define CRS_ICR_SYNCOKC_Msk       (0x1UL << CRS_ICR_SYNCOKC_Pos)               /*!< 0x00000001 */\n#define CRS_ICR_SYNCOKC           CRS_ICR_SYNCOKC_Msk                          /*!< SYNC event OK clear flag */\n#define CRS_ICR_SYNCWARNC_Pos     (1U)\n#define CRS_ICR_SYNCWARNC_Msk     (0x1UL << CRS_ICR_SYNCWARNC_Pos)             /*!< 0x00000002 */\n#define CRS_ICR_SYNCWARNC         CRS_ICR_SYNCWARNC_Msk                        /*!< SYNC warning clear flag */\n#define CRS_ICR_ERRC_Pos          (2U)\n#define CRS_ICR_ERRC_Msk          (0x1UL << CRS_ICR_ERRC_Pos)                  /*!< 0x00000004 */\n#define CRS_ICR_ERRC              CRS_ICR_ERRC_Msk                             /*!< Error clear flag */\n#define CRS_ICR_ESYNCC_Pos        (3U)\n#define CRS_ICR_ESYNCC_Msk        (0x1UL << CRS_ICR_ESYNCC_Pos)                /*!< 0x00000008 */\n#define CRS_ICR_ESYNCC            CRS_ICR_ESYNCC_Msk                           /*!< Expected SYNC clear flag */\n\n/******************************************************************************/\n/*                                                                            */\n/*                            Crypto Processor                                */\n/*                                                                            */\n/******************************************************************************/\n/******************* Bits definition for CRYP_CR register  ********************/\n#define CRYP_CR_ALGODIR_Pos              (2U)\n#define CRYP_CR_ALGODIR_Msk              (0x1UL << CRYP_CR_ALGODIR_Pos)        /*!< 0x00000004 */\n#define CRYP_CR_ALGODIR                  CRYP_CR_ALGODIR_Msk\n\n#define CRYP_CR_ALGOMODE_Pos             (3U)\n#define CRYP_CR_ALGOMODE_Msk             (0x10007UL << CRYP_CR_ALGOMODE_Pos)   /*!< 0x00080038 */\n#define CRYP_CR_ALGOMODE                 CRYP_CR_ALGOMODE_Msk\n#define CRYP_CR_ALGOMODE_0               (0x00001UL << CRYP_CR_ALGOMODE_Pos)    /*!< 0x00000008 */\n#define CRYP_CR_ALGOMODE_1               (0x00002UL << CRYP_CR_ALGOMODE_Pos)    /*!< 0x00000010 */\n#define CRYP_CR_ALGOMODE_2               (0x00004UL << CRYP_CR_ALGOMODE_Pos)    /*!< 0x00000020 */\n#define CRYP_CR_ALGOMODE_TDES_ECB        ((uint32_t)0x00000000)\n#define CRYP_CR_ALGOMODE_TDES_CBC_Pos    (3U)\n#define CRYP_CR_ALGOMODE_TDES_CBC_Msk    (0x1UL << CRYP_CR_ALGOMODE_TDES_CBC_Pos) /*!< 0x00000008 */\n#define CRYP_CR_ALGOMODE_TDES_CBC        CRYP_CR_ALGOMODE_TDES_CBC_Msk\n#define CRYP_CR_ALGOMODE_DES_ECB_Pos     (4U)\n#define CRYP_CR_ALGOMODE_DES_ECB_Msk     (0x1UL << CRYP_CR_ALGOMODE_DES_ECB_Pos) /*!< 0x00000010 */\n#define CRYP_CR_ALGOMODE_DES_ECB         CRYP_CR_ALGOMODE_DES_ECB_Msk\n#define CRYP_CR_ALGOMODE_DES_CBC_Pos     (3U)\n#define CRYP_CR_ALGOMODE_DES_CBC_Msk     (0x3UL << CRYP_CR_ALGOMODE_DES_CBC_Pos) /*!< 0x00000018 */\n#define CRYP_CR_ALGOMODE_DES_CBC         CRYP_CR_ALGOMODE_DES_CBC_Msk\n#define CRYP_CR_ALGOMODE_AES_ECB_Pos     (5U)\n#define CRYP_CR_ALGOMODE_AES_ECB_Msk     (0x1UL << CRYP_CR_ALGOMODE_AES_ECB_Pos) /*!< 0x00000020 */\n#define CRYP_CR_ALGOMODE_AES_ECB         CRYP_CR_ALGOMODE_AES_ECB_Msk\n#define CRYP_CR_ALGOMODE_AES_CBC_Pos     (3U)\n#define CRYP_CR_ALGOMODE_AES_CBC_Msk     (0x5UL << CRYP_CR_ALGOMODE_AES_CBC_Pos) /*!< 0x00000028 */\n#define CRYP_CR_ALGOMODE_AES_CBC         CRYP_CR_ALGOMODE_AES_CBC_Msk\n#define CRYP_CR_ALGOMODE_AES_CTR_Pos     (4U)\n#define CRYP_CR_ALGOMODE_AES_CTR_Msk     (0x3UL << CRYP_CR_ALGOMODE_AES_CTR_Pos) /*!< 0x00000030 */\n#define CRYP_CR_ALGOMODE_AES_CTR         CRYP_CR_ALGOMODE_AES_CTR_Msk\n#define CRYP_CR_ALGOMODE_AES_KEY_Pos     (3U)\n#define CRYP_CR_ALGOMODE_AES_KEY_Msk     (0x7UL << CRYP_CR_ALGOMODE_AES_KEY_Pos) /*!< 0x00000038 */\n#define CRYP_CR_ALGOMODE_AES_KEY         CRYP_CR_ALGOMODE_AES_KEY_Msk\n#define CRYP_CR_ALGOMODE_AES_GCM_Pos     (19U)\n#define CRYP_CR_ALGOMODE_AES_GCM_Msk     (0x1UL << CRYP_CR_ALGOMODE_AES_GCM_Pos) /*!< 0x00080000 */\n#define CRYP_CR_ALGOMODE_AES_GCM         CRYP_CR_ALGOMODE_AES_GCM_Msk\n#define CRYP_CR_ALGOMODE_AES_CCM_Pos     (3U)\n#define CRYP_CR_ALGOMODE_AES_CCM_Msk     (0x10001UL << CRYP_CR_ALGOMODE_AES_CCM_Pos) /*!< 0x00080008 */\n#define CRYP_CR_ALGOMODE_AES_CCM         CRYP_CR_ALGOMODE_AES_CCM_Msk\n\n#define CRYP_CR_DATATYPE_Pos             (6U)\n#define CRYP_CR_DATATYPE_Msk             (0x3UL << CRYP_CR_DATATYPE_Pos)       /*!< 0x000000C0 */\n#define CRYP_CR_DATATYPE                 CRYP_CR_DATATYPE_Msk\n#define CRYP_CR_DATATYPE_0               (0x1UL << CRYP_CR_DATATYPE_Pos)        /*!< 0x00000040 */\n#define CRYP_CR_DATATYPE_1               (0x2UL << CRYP_CR_DATATYPE_Pos)        /*!< 0x00000080 */\n#define CRYP_CR_KEYSIZE_Pos              (8U)\n#define CRYP_CR_KEYSIZE_Msk              (0x3UL << CRYP_CR_KEYSIZE_Pos)        /*!< 0x00000300 */\n#define CRYP_CR_KEYSIZE                  CRYP_CR_KEYSIZE_Msk\n#define CRYP_CR_KEYSIZE_0                (0x1UL << CRYP_CR_KEYSIZE_Pos)         /*!< 0x00000100 */\n#define CRYP_CR_KEYSIZE_1                (0x2UL << CRYP_CR_KEYSIZE_Pos)         /*!< 0x00000200 */\n#define CRYP_CR_FFLUSH_Pos               (14U)\n#define CRYP_CR_FFLUSH_Msk               (0x1UL << CRYP_CR_FFLUSH_Pos)         /*!< 0x00004000 */\n#define CRYP_CR_FFLUSH                   CRYP_CR_FFLUSH_Msk\n#define CRYP_CR_CRYPEN_Pos               (15U)\n#define CRYP_CR_CRYPEN_Msk               (0x1UL << CRYP_CR_CRYPEN_Pos)         /*!< 0x00008000 */\n#define CRYP_CR_CRYPEN                   CRYP_CR_CRYPEN_Msk\n\n#define CRYP_CR_GCM_CCMPH_Pos            (16U)\n#define CRYP_CR_GCM_CCMPH_Msk            (0x3UL << CRYP_CR_GCM_CCMPH_Pos)      /*!< 0x00030000 */\n#define CRYP_CR_GCM_CCMPH                CRYP_CR_GCM_CCMPH_Msk\n#define CRYP_CR_GCM_CCMPH_0              (0x1UL << CRYP_CR_GCM_CCMPH_Pos)       /*!< 0x00010000 */\n#define CRYP_CR_GCM_CCMPH_1              (0x2UL << CRYP_CR_GCM_CCMPH_Pos)       /*!< 0x00020000 */\n#define CRYP_CR_ALGOMODE_3               ((uint32_t)0x00080000)\n#define CRYP_CR_NPBLB_Pos                (20U)\n#define CRYP_CR_NPBLB_Msk                (0xFUL << CRYP_CR_NPBLB_Pos)          /*!< 0x00F00000 */\n#define CRYP_CR_NPBLB                    CRYP_CR_NPBLB_Msk\n\n/****************** Bits definition for CRYP_SR register  *********************/\n#define CRYP_SR_IFEM_Pos                 (0U)\n#define CRYP_SR_IFEM_Msk                 (0x1UL << CRYP_SR_IFEM_Pos)           /*!< 0x00000001 */\n#define CRYP_SR_IFEM                     CRYP_SR_IFEM_Msk\n#define CRYP_SR_IFNF_Pos                 (1U)\n#define CRYP_SR_IFNF_Msk                 (0x1UL << CRYP_SR_IFNF_Pos)           /*!< 0x00000002 */\n#define CRYP_SR_IFNF                     CRYP_SR_IFNF_Msk\n#define CRYP_SR_OFNE_Pos                 (2U)\n#define CRYP_SR_OFNE_Msk                 (0x1UL << CRYP_SR_OFNE_Pos)           /*!< 0x00000004 */\n#define CRYP_SR_OFNE                     CRYP_SR_OFNE_Msk\n#define CRYP_SR_OFFU_Pos                 (3U)\n#define CRYP_SR_OFFU_Msk                 (0x1UL << CRYP_SR_OFFU_Pos)           /*!< 0x00000008 */\n#define CRYP_SR_OFFU                     CRYP_SR_OFFU_Msk\n#define CRYP_SR_BUSY_Pos                 (4U)\n#define CRYP_SR_BUSY_Msk                 (0x1UL << CRYP_SR_BUSY_Pos)           /*!< 0x00000010 */\n#define CRYP_SR_BUSY                     CRYP_SR_BUSY_Msk\n/****************** Bits definition for CRYP_DMACR register  ******************/\n#define CRYP_DMACR_DIEN_Pos              (0U)\n#define CRYP_DMACR_DIEN_Msk              (0x1UL << CRYP_DMACR_DIEN_Pos)        /*!< 0x00000001 */\n#define CRYP_DMACR_DIEN                  CRYP_DMACR_DIEN_Msk\n#define CRYP_DMACR_DOEN_Pos              (1U)\n#define CRYP_DMACR_DOEN_Msk              (0x1UL << CRYP_DMACR_DOEN_Pos)        /*!< 0x00000002 */\n#define CRYP_DMACR_DOEN                  CRYP_DMACR_DOEN_Msk\n/*****************  Bits definition for CRYP_IMSCR register  ******************/\n#define CRYP_IMSCR_INIM_Pos              (0U)\n#define CRYP_IMSCR_INIM_Msk              (0x1UL << CRYP_IMSCR_INIM_Pos)        /*!< 0x00000001 */\n#define CRYP_IMSCR_INIM                  CRYP_IMSCR_INIM_Msk\n#define CRYP_IMSCR_OUTIM_Pos             (1U)\n#define CRYP_IMSCR_OUTIM_Msk             (0x1UL << CRYP_IMSCR_OUTIM_Pos)       /*!< 0x00000002 */\n#define CRYP_IMSCR_OUTIM                 CRYP_IMSCR_OUTIM_Msk\n/****************** Bits definition for CRYP_RISR register  *******************/\n#define CRYP_RISR_INRIS_Pos              (0U)\n#define CRYP_RISR_INRIS_Msk              (0x1UL << CRYP_RISR_INRIS_Pos)        /*!< 0x00000001 */\n#define CRYP_RISR_INRIS                  CRYP_RISR_INRIS_Msk\n#define CRYP_RISR_OUTRIS_Pos             (1U)\n#define CRYP_RISR_OUTRIS_Msk             (0x1UL << CRYP_RISR_OUTRIS_Pos)       /*!< 0x00000002 */\n#define CRYP_RISR_OUTRIS                 CRYP_RISR_OUTRIS_Msk\n/****************** Bits definition for CRYP_MISR register  *******************/\n#define CRYP_MISR_INMIS_Pos              (0U)\n#define CRYP_MISR_INMIS_Msk              (0x1UL << CRYP_MISR_INMIS_Pos)        /*!< 0x00000001 */\n#define CRYP_MISR_INMIS                  CRYP_MISR_INMIS_Msk\n#define CRYP_MISR_OUTMIS_Pos             (1U)\n#define CRYP_MISR_OUTMIS_Msk             (0x1UL << CRYP_MISR_OUTMIS_Pos)       /*!< 0x00000002 */\n#define CRYP_MISR_OUTMIS                 CRYP_MISR_OUTMIS_Msk\n\n/******************************************************************************/\n/*                                                                            */\n/*                      Digital to Analog Converter                           */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bit definition for DAC_CR register  ********************/\n#define DAC_CR_EN1_Pos              (0U)\n#define DAC_CR_EN1_Msk              (0x1UL << DAC_CR_EN1_Pos)                  /*!< 0x00000001 */\n#define DAC_CR_EN1                  DAC_CR_EN1_Msk                             /*!<DAC channel1 enable */\n#define DAC_CR_TEN1_Pos             (1U)\n#define DAC_CR_TEN1_Msk             (0x1UL << DAC_CR_TEN1_Pos)                 /*!< 0x00000002 */\n#define DAC_CR_TEN1                 DAC_CR_TEN1_Msk                            /*!<DAC channel1 Trigger enable */\n\n#define DAC_CR_TSEL1_Pos            (2U)\n#define DAC_CR_TSEL1_Msk            (0xFUL << DAC_CR_TSEL1_Pos)                /*!< 0x0000003C */\n#define DAC_CR_TSEL1                DAC_CR_TSEL1_Msk                           /*!<TSEL1[2:0] (DAC channel1 Trigger selection) */\n#define DAC_CR_TSEL1_0              (0x1UL << DAC_CR_TSEL1_Pos)                 /*!< 0x00000004 */\n#define DAC_CR_TSEL1_1              (0x2UL << DAC_CR_TSEL1_Pos)                 /*!< 0x00000008 */\n#define DAC_CR_TSEL1_2              (0x4UL << DAC_CR_TSEL1_Pos)                 /*!< 0x00000010 */\n#define DAC_CR_TSEL1_3              (0x8UL << DAC_CR_TSEL1_Pos)                 /*!< 0x00000020 */\n\n\n#define DAC_CR_WAVE1_Pos            (6U)\n#define DAC_CR_WAVE1_Msk            (0x3UL << DAC_CR_WAVE1_Pos)                /*!< 0x000000C0 */\n#define DAC_CR_WAVE1                DAC_CR_WAVE1_Msk                           /*!<WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable) */\n#define DAC_CR_WAVE1_0              (0x1UL << DAC_CR_WAVE1_Pos)                 /*!< 0x00000040 */\n#define DAC_CR_WAVE1_1              (0x2UL << DAC_CR_WAVE1_Pos)                 /*!< 0x00000080 */\n\n#define DAC_CR_MAMP1_Pos            (8U)\n#define DAC_CR_MAMP1_Msk            (0xFUL << DAC_CR_MAMP1_Pos)                /*!< 0x00000F00 */\n#define DAC_CR_MAMP1                DAC_CR_MAMP1_Msk                           /*!<MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) */\n#define DAC_CR_MAMP1_0              (0x1UL << DAC_CR_MAMP1_Pos)                 /*!< 0x00000100 */\n#define DAC_CR_MAMP1_1              (0x2UL << DAC_CR_MAMP1_Pos)                 /*!< 0x00000200 */\n#define DAC_CR_MAMP1_2              (0x4UL << DAC_CR_MAMP1_Pos)                 /*!< 0x00000400 */\n#define DAC_CR_MAMP1_3              (0x8UL << DAC_CR_MAMP1_Pos)                 /*!< 0x00000800 */\n\n#define DAC_CR_DMAEN1_Pos           (12U)\n#define DAC_CR_DMAEN1_Msk           (0x1UL << DAC_CR_DMAEN1_Pos)               /*!< 0x00001000 */\n#define DAC_CR_DMAEN1               DAC_CR_DMAEN1_Msk                          /*!<DAC channel1 DMA enable */\n#define DAC_CR_DMAUDRIE1_Pos        (13U)\n#define DAC_CR_DMAUDRIE1_Msk        (0x1UL << DAC_CR_DMAUDRIE1_Pos)            /*!< 0x00002000 */\n#define DAC_CR_DMAUDRIE1            DAC_CR_DMAUDRIE1_Msk                       /*!<DAC channel 1 DMA underrun interrupt enable  >*/\n#define DAC_CR_CEN1_Pos             (14U)\n#define DAC_CR_CEN1_Msk             (0x1UL << DAC_CR_CEN1_Pos)                 /*!< 0x00004000 */\n#define DAC_CR_CEN1                 DAC_CR_CEN1_Msk                            /*!<DAC channel 1 calibration enable >*/\n\n#define DAC_CR_EN2_Pos              (16U)\n#define DAC_CR_EN2_Msk              (0x1UL << DAC_CR_EN2_Pos)                  /*!< 0x00010000 */\n#define DAC_CR_EN2                  DAC_CR_EN2_Msk                             /*!<DAC channel2 enable */\n#define DAC_CR_TEN2_Pos             (17U)\n#define DAC_CR_TEN2_Msk             (0x1UL << DAC_CR_TEN2_Pos)                 /*!< 0x00020000 */\n#define DAC_CR_TEN2                 DAC_CR_TEN2_Msk                            /*!<DAC channel2 Trigger enable */\n\n#define DAC_CR_TSEL2_Pos            (18U)\n#define DAC_CR_TSEL2_Msk            (0xFUL << DAC_CR_TSEL2_Pos)                /*!< 0x003C0000 */\n#define DAC_CR_TSEL2                DAC_CR_TSEL2_Msk                           /*!<TSEL2[2:0] (DAC channel2 Trigger selection) */\n#define DAC_CR_TSEL2_0              (0x1UL << DAC_CR_TSEL2_Pos)                 /*!< 0x00040000 */\n#define DAC_CR_TSEL2_1              (0x2UL << DAC_CR_TSEL2_Pos)                 /*!< 0x00080000 */\n#define DAC_CR_TSEL2_2              (0x4UL << DAC_CR_TSEL2_Pos)                 /*!< 0x00100000 */\n#define DAC_CR_TSEL2_3              (0x8UL << DAC_CR_TSEL2_Pos)                 /*!< 0x00200000 */\n\n\n#define DAC_CR_WAVE2_Pos            (22U)\n#define DAC_CR_WAVE2_Msk            (0x3UL << DAC_CR_WAVE2_Pos)                /*!< 0x00C00000 */\n#define DAC_CR_WAVE2                DAC_CR_WAVE2_Msk                           /*!<WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */\n#define DAC_CR_WAVE2_0              (0x1UL << DAC_CR_WAVE2_Pos)                 /*!< 0x00400000 */\n#define DAC_CR_WAVE2_1              (0x2UL << DAC_CR_WAVE2_Pos)                 /*!< 0x00800000 */\n\n#define DAC_CR_MAMP2_Pos            (24U)\n#define DAC_CR_MAMP2_Msk            (0xFUL << DAC_CR_MAMP2_Pos)                /*!< 0x0F000000 */\n#define DAC_CR_MAMP2                DAC_CR_MAMP2_Msk                           /*!<MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */\n#define DAC_CR_MAMP2_0              (0x1UL << DAC_CR_MAMP2_Pos)                 /*!< 0x01000000 */\n#define DAC_CR_MAMP2_1              (0x2UL << DAC_CR_MAMP2_Pos)                 /*!< 0x02000000 */\n#define DAC_CR_MAMP2_2              (0x4UL << DAC_CR_MAMP2_Pos)                 /*!< 0x04000000 */\n#define DAC_CR_MAMP2_3              (0x8UL << DAC_CR_MAMP2_Pos)                 /*!< 0x08000000 */\n\n#define DAC_CR_DMAEN2_Pos           (28U)\n#define DAC_CR_DMAEN2_Msk           (0x1UL << DAC_CR_DMAEN2_Pos)               /*!< 0x10000000 */\n#define DAC_CR_DMAEN2               DAC_CR_DMAEN2_Msk                          /*!<DAC channel2 DMA enabled */\n#define DAC_CR_DMAUDRIE2_Pos        (29U)\n#define DAC_CR_DMAUDRIE2_Msk        (0x1UL << DAC_CR_DMAUDRIE2_Pos)            /*!< 0x20000000 */\n#define DAC_CR_DMAUDRIE2            DAC_CR_DMAUDRIE2_Msk                       /*!<DAC channel2 DMA underrun interrupt enable  >*/\n#define DAC_CR_CEN2_Pos             (30U)\n#define DAC_CR_CEN2_Msk             (0x1UL << DAC_CR_CEN2_Pos)                 /*!< 0x40000000 */\n#define DAC_CR_CEN2                 DAC_CR_CEN2_Msk                            /*!<DAC channel2 calibration enable >*/\n\n/*****************  Bit definition for DAC_SWTRIGR register  ******************/\n#define DAC_SWTRIGR_SWTRIG1_Pos     (0U)\n#define DAC_SWTRIGR_SWTRIG1_Msk     (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos)         /*!< 0x00000001 */\n#define DAC_SWTRIGR_SWTRIG1         DAC_SWTRIGR_SWTRIG1_Msk                    /*!<DAC channel1 software trigger */\n#define DAC_SWTRIGR_SWTRIG2_Pos     (1U)\n#define DAC_SWTRIGR_SWTRIG2_Msk     (0x1UL << DAC_SWTRIGR_SWTRIG2_Pos)         /*!< 0x00000002 */\n#define DAC_SWTRIGR_SWTRIG2         DAC_SWTRIGR_SWTRIG2_Msk                    /*!<DAC channel2 software trigger */\n\n/*****************  Bit definition for DAC_DHR12R1 register  ******************/\n#define DAC_DHR12R1_DACC1DHR_Pos    (0U)\n#define DAC_DHR12R1_DACC1DHR_Msk    (0xFFFUL << DAC_DHR12R1_DACC1DHR_Pos)      /*!< 0x00000FFF */\n#define DAC_DHR12R1_DACC1DHR        DAC_DHR12R1_DACC1DHR_Msk                   /*!<DAC channel1 12-bit Right aligned data */\n\n/*****************  Bit definition for DAC_DHR12L1 register  ******************/\n#define DAC_DHR12L1_DACC1DHR_Pos    (4U)\n#define DAC_DHR12L1_DACC1DHR_Msk    (0xFFFUL << DAC_DHR12L1_DACC1DHR_Pos)      /*!< 0x0000FFF0 */\n#define DAC_DHR12L1_DACC1DHR        DAC_DHR12L1_DACC1DHR_Msk                   /*!<DAC channel1 12-bit Left aligned data */\n\n/******************  Bit definition for DAC_DHR8R1 register  ******************/\n#define DAC_DHR8R1_DACC1DHR_Pos     (0U)\n#define DAC_DHR8R1_DACC1DHR_Msk     (0xFFUL << DAC_DHR8R1_DACC1DHR_Pos)        /*!< 0x000000FF */\n#define DAC_DHR8R1_DACC1DHR         DAC_DHR8R1_DACC1DHR_Msk                    /*!<DAC channel1 8-bit Right aligned data */\n\n/*****************  Bit definition for DAC_DHR12R2 register  ******************/\n#define DAC_DHR12R2_DACC2DHR_Pos    (0U)\n#define DAC_DHR12R2_DACC2DHR_Msk    (0xFFFUL << DAC_DHR12R2_DACC2DHR_Pos)      /*!< 0x00000FFF */\n#define DAC_DHR12R2_DACC2DHR        DAC_DHR12R2_DACC2DHR_Msk                   /*!<DAC channel2 12-bit Right aligned data */\n\n/*****************  Bit definition for DAC_DHR12L2 register  ******************/\n#define DAC_DHR12L2_DACC2DHR_Pos    (4U)\n#define DAC_DHR12L2_DACC2DHR_Msk    (0xFFFUL << DAC_DHR12L2_DACC2DHR_Pos)      /*!< 0x0000FFF0 */\n#define DAC_DHR12L2_DACC2DHR        DAC_DHR12L2_DACC2DHR_Msk                   /*!<DAC channel2 12-bit Left aligned data */\n\n/******************  Bit definition for DAC_DHR8R2 register  ******************/\n#define DAC_DHR8R2_DACC2DHR_Pos     (0U)\n#define DAC_DHR8R2_DACC2DHR_Msk     (0xFFUL << DAC_DHR8R2_DACC2DHR_Pos)        /*!< 0x000000FF */\n#define DAC_DHR8R2_DACC2DHR         DAC_DHR8R2_DACC2DHR_Msk                    /*!<DAC channel2 8-bit Right aligned data */\n\n/*****************  Bit definition for DAC_DHR12RD register  ******************/\n#define DAC_DHR12RD_DACC1DHR_Pos    (0U)\n#define DAC_DHR12RD_DACC1DHR_Msk    (0xFFFUL << DAC_DHR12RD_DACC1DHR_Pos)      /*!< 0x00000FFF */\n#define DAC_DHR12RD_DACC1DHR        DAC_DHR12RD_DACC1DHR_Msk                   /*!<DAC channel1 12-bit Right aligned data */\n#define DAC_DHR12RD_DACC2DHR_Pos    (16U)\n#define DAC_DHR12RD_DACC2DHR_Msk    (0xFFFUL << DAC_DHR12RD_DACC2DHR_Pos)      /*!< 0x0FFF0000 */\n#define DAC_DHR12RD_DACC2DHR        DAC_DHR12RD_DACC2DHR_Msk                   /*!<DAC channel2 12-bit Right aligned data */\n\n/*****************  Bit definition for DAC_DHR12LD register  ******************/\n#define DAC_DHR12LD_DACC1DHR_Pos    (4U)\n#define DAC_DHR12LD_DACC1DHR_Msk    (0xFFFUL << DAC_DHR12LD_DACC1DHR_Pos)      /*!< 0x0000FFF0 */\n#define DAC_DHR12LD_DACC1DHR        DAC_DHR12LD_DACC1DHR_Msk                   /*!<DAC channel1 12-bit Left aligned data */\n#define DAC_DHR12LD_DACC2DHR_Pos    (20U)\n#define DAC_DHR12LD_DACC2DHR_Msk    (0xFFFUL << DAC_DHR12LD_DACC2DHR_Pos)      /*!< 0xFFF00000 */\n#define DAC_DHR12LD_DACC2DHR        DAC_DHR12LD_DACC2DHR_Msk                   /*!<DAC channel2 12-bit Left aligned data */\n\n/******************  Bit definition for DAC_DHR8RD register  ******************/\n#define DAC_DHR8RD_DACC1DHR_Pos     (0U)\n#define DAC_DHR8RD_DACC1DHR_Msk     (0xFFUL << DAC_DHR8RD_DACC1DHR_Pos)        /*!< 0x000000FF */\n#define DAC_DHR8RD_DACC1DHR         DAC_DHR8RD_DACC1DHR_Msk                    /*!<DAC channel1 8-bit Right aligned data */\n#define DAC_DHR8RD_DACC2DHR_Pos     (8U)\n#define DAC_DHR8RD_DACC2DHR_Msk     (0xFFUL << DAC_DHR8RD_DACC2DHR_Pos)        /*!< 0x0000FF00 */\n#define DAC_DHR8RD_DACC2DHR         DAC_DHR8RD_DACC2DHR_Msk                    /*!<DAC channel2 8-bit Right aligned data */\n\n/*******************  Bit definition for DAC_DOR1 register  *******************/\n#define DAC_DOR1_DACC1DOR_Pos       (0U)\n#define DAC_DOR1_DACC1DOR_Msk       (0xFFFUL << DAC_DOR1_DACC1DOR_Pos)         /*!< 0x00000FFF */\n#define DAC_DOR1_DACC1DOR           DAC_DOR1_DACC1DOR_Msk                      /*!<DAC channel1 data output */\n\n/*******************  Bit definition for DAC_DOR2 register  *******************/\n#define DAC_DOR2_DACC2DOR_Pos       (0U)\n#define DAC_DOR2_DACC2DOR_Msk       (0xFFFUL << DAC_DOR2_DACC2DOR_Pos)         /*!< 0x00000FFF */\n#define DAC_DOR2_DACC2DOR           DAC_DOR2_DACC2DOR_Msk                      /*!<DAC channel2 data output */\n\n/********************  Bit definition for DAC_SR register  ********************/\n#define DAC_SR_DMAUDR1_Pos          (13U)\n#define DAC_SR_DMAUDR1_Msk          (0x1UL << DAC_SR_DMAUDR1_Pos)              /*!< 0x00002000 */\n#define DAC_SR_DMAUDR1              DAC_SR_DMAUDR1_Msk                         /*!<DAC channel1 DMA underrun flag */\n#define DAC_SR_CAL_FLAG1_Pos        (14U)\n#define DAC_SR_CAL_FLAG1_Msk        (0x1UL << DAC_SR_CAL_FLAG1_Pos)            /*!< 0x00004000 */\n#define DAC_SR_CAL_FLAG1            DAC_SR_CAL_FLAG1_Msk                       /*!<DAC channel1 calibration offset status */\n#define DAC_SR_BWST1_Pos            (15U)\n#define DAC_SR_BWST1_Msk            (0x4001UL << DAC_SR_BWST1_Pos)             /*!< 0x20008000 */\n#define DAC_SR_BWST1                DAC_SR_BWST1_Msk                           /*!<DAC channel1 busy writing sample time flag */\n\n#define DAC_SR_DMAUDR2_Pos          (29U)\n#define DAC_SR_DMAUDR2_Msk          (0x1UL << DAC_SR_DMAUDR2_Pos)              /*!< 0x20000000 */\n#define DAC_SR_DMAUDR2              DAC_SR_DMAUDR2_Msk                         /*!<DAC channel2 DMA underrun flag */\n#define DAC_SR_CAL_FLAG2_Pos        (30U)\n#define DAC_SR_CAL_FLAG2_Msk        (0x1UL << DAC_SR_CAL_FLAG2_Pos)            /*!< 0x40000000 */\n#define DAC_SR_CAL_FLAG2            DAC_SR_CAL_FLAG2_Msk                       /*!<DAC channel2 calibration offset status */\n#define DAC_SR_BWST2_Pos            (31U)\n#define DAC_SR_BWST2_Msk            (0x1UL << DAC_SR_BWST2_Pos)                /*!< 0x80000000 */\n#define DAC_SR_BWST2                DAC_SR_BWST2_Msk                           /*!<DAC channel2 busy writing sample time flag */\n\n/*******************  Bit definition for DAC_CCR register  ********************/\n#define DAC_CCR_OTRIM1_Pos          (0U)\n#define DAC_CCR_OTRIM1_Msk          (0x1FUL << DAC_CCR_OTRIM1_Pos)             /*!< 0x0000001F */\n#define DAC_CCR_OTRIM1              DAC_CCR_OTRIM1_Msk                         /*!<DAC channel1 offset trimming value */\n#define DAC_CCR_OTRIM2_Pos          (16U)\n#define DAC_CCR_OTRIM2_Msk          (0x1FUL << DAC_CCR_OTRIM2_Pos)             /*!< 0x001F0000 */\n#define DAC_CCR_OTRIM2              DAC_CCR_OTRIM2_Msk                         /*!<DAC channel2 offset trimming value */\n\n/*******************  Bit definition for DAC_MCR register  *******************/\n#define DAC_MCR_MODE1_Pos           (0U)\n#define DAC_MCR_MODE1_Msk           (0x7UL << DAC_MCR_MODE1_Pos)               /*!< 0x00000007 */\n#define DAC_MCR_MODE1               DAC_MCR_MODE1_Msk                          /*!<MODE1[2:0] (DAC channel1 mode) */\n#define DAC_MCR_MODE1_0             (0x1UL << DAC_MCR_MODE1_Pos)                /*!< 0x00000001 */\n#define DAC_MCR_MODE1_1             (0x2UL << DAC_MCR_MODE1_Pos)                /*!< 0x00000002 */\n#define DAC_MCR_MODE1_2             (0x4UL << DAC_MCR_MODE1_Pos)                /*!< 0x00000004 */\n\n#define DAC_MCR_MODE2_Pos           (16U)\n#define DAC_MCR_MODE2_Msk           (0x7UL << DAC_MCR_MODE2_Pos)               /*!< 0x00070000 */\n#define DAC_MCR_MODE2               DAC_MCR_MODE2_Msk                          /*!<MODE2[2:0] (DAC channel2 mode) */\n#define DAC_MCR_MODE2_0             (0x1UL << DAC_MCR_MODE2_Pos)                /*!< 0x00010000 */\n#define DAC_MCR_MODE2_1             (0x2UL << DAC_MCR_MODE2_Pos)                /*!< 0x00020000 */\n#define DAC_MCR_MODE2_2             (0x4UL << DAC_MCR_MODE2_Pos)                /*!< 0x00040000 */\n\n/******************  Bit definition for DAC_SHSR1 register  ******************/\n#define DAC_SHSR1_TSAMPLE1_Pos      (0U)\n#define DAC_SHSR1_TSAMPLE1_Msk      (0x3FFUL << DAC_SHSR1_TSAMPLE1_Pos)        /*!< 0x000003FF */\n#define DAC_SHSR1_TSAMPLE1          DAC_SHSR1_TSAMPLE1_Msk                     /*!<DAC channel1 sample time */\n\n/******************  Bit definition for DAC_SHSR2 register  ******************/\n#define DAC_SHSR2_TSAMPLE2_Pos      (0U)\n#define DAC_SHSR2_TSAMPLE2_Msk      (0x3FFUL << DAC_SHSR2_TSAMPLE2_Pos)        /*!< 0x000003FF */\n#define DAC_SHSR2_TSAMPLE2          DAC_SHSR2_TSAMPLE2_Msk                     /*!<DAC channel2 sample time */\n\n/******************  Bit definition for DAC_SHHR register  ******************/\n#define DAC_SHHR_THOLD1_Pos         (0U)\n#define DAC_SHHR_THOLD1_Msk         (0x3FFUL << DAC_SHHR_THOLD1_Pos)           /*!< 0x000003FF */\n#define DAC_SHHR_THOLD1             DAC_SHHR_THOLD1_Msk                        /*!<DAC channel1 hold time */\n#define DAC_SHHR_THOLD2_Pos         (16U)\n#define DAC_SHHR_THOLD2_Msk         (0x3FFUL << DAC_SHHR_THOLD2_Pos)           /*!< 0x03FF0000 */\n#define DAC_SHHR_THOLD2             DAC_SHHR_THOLD2_Msk                        /*!<DAC channel2 hold time */\n\n/******************  Bit definition for DAC_SHRR register  ******************/\n#define DAC_SHRR_TREFRESH1_Pos      (0U)\n#define DAC_SHRR_TREFRESH1_Msk      (0xFFUL << DAC_SHRR_TREFRESH1_Pos)         /*!< 0x000000FF */\n#define DAC_SHRR_TREFRESH1          DAC_SHRR_TREFRESH1_Msk                     /*!<DAC channel1 refresh time */\n#define DAC_SHRR_TREFRESH2_Pos      (16U)\n#define DAC_SHRR_TREFRESH2_Msk      (0xFFUL << DAC_SHRR_TREFRESH2_Pos)         /*!< 0x00FF0000 */\n#define DAC_SHRR_TREFRESH2          DAC_SHRR_TREFRESH2_Msk                     /*!<DAC channel2 refresh time */\n\n/******************************************************************************/\n/*                                                                            */\n/*                                    DCMI                                    */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bits definition for DCMI_CR register  ******************/\n#define DCMI_CR_CAPTURE_Pos        (0U)\n#define DCMI_CR_CAPTURE_Msk        (0x1UL << DCMI_CR_CAPTURE_Pos)              /*!< 0x00000001 */\n#define DCMI_CR_CAPTURE            DCMI_CR_CAPTURE_Msk\n#define DCMI_CR_CM_Pos             (1U)\n#define DCMI_CR_CM_Msk             (0x1UL << DCMI_CR_CM_Pos)                   /*!< 0x00000002 */\n#define DCMI_CR_CM                 DCMI_CR_CM_Msk\n#define DCMI_CR_CROP_Pos           (2U)\n#define DCMI_CR_CROP_Msk           (0x1UL << DCMI_CR_CROP_Pos)                 /*!< 0x00000004 */\n#define DCMI_CR_CROP               DCMI_CR_CROP_Msk\n#define DCMI_CR_JPEG_Pos           (3U)\n#define DCMI_CR_JPEG_Msk           (0x1UL << DCMI_CR_JPEG_Pos)                 /*!< 0x00000008 */\n#define DCMI_CR_JPEG               DCMI_CR_JPEG_Msk\n#define DCMI_CR_ESS_Pos            (4U)\n#define DCMI_CR_ESS_Msk            (0x1UL << DCMI_CR_ESS_Pos)                  /*!< 0x00000010 */\n#define DCMI_CR_ESS                DCMI_CR_ESS_Msk\n#define DCMI_CR_PCKPOL_Pos         (5U)\n#define DCMI_CR_PCKPOL_Msk         (0x1UL << DCMI_CR_PCKPOL_Pos)               /*!< 0x00000020 */\n#define DCMI_CR_PCKPOL             DCMI_CR_PCKPOL_Msk\n#define DCMI_CR_HSPOL_Pos          (6U)\n#define DCMI_CR_HSPOL_Msk          (0x1UL << DCMI_CR_HSPOL_Pos)                /*!< 0x00000040 */\n#define DCMI_CR_HSPOL              DCMI_CR_HSPOL_Msk\n#define DCMI_CR_VSPOL_Pos          (7U)\n#define DCMI_CR_VSPOL_Msk          (0x1UL << DCMI_CR_VSPOL_Pos)                /*!< 0x00000080 */\n#define DCMI_CR_VSPOL              DCMI_CR_VSPOL_Msk\n#define DCMI_CR_FCRC_0             ((uint32_t)0x00000100U)\n#define DCMI_CR_FCRC_1             ((uint32_t)0x00000200U)\n#define DCMI_CR_EDM_0              ((uint32_t)0x00000400U)\n#define DCMI_CR_EDM_1              ((uint32_t)0x00000800U)\n#define DCMI_CR_CRE_Pos            (12U)\n#define DCMI_CR_CRE_Msk            (0x1UL << DCMI_CR_CRE_Pos)                  /*!< 0x00001000 */\n#define DCMI_CR_CRE                DCMI_CR_CRE_Msk\n#define DCMI_CR_ENABLE_Pos         (14U)\n#define DCMI_CR_ENABLE_Msk         (0x1UL << DCMI_CR_ENABLE_Pos)               /*!< 0x00004000 */\n#define DCMI_CR_ENABLE             DCMI_CR_ENABLE_Msk\n#define DCMI_CR_BSM_Pos            (16U)\n#define DCMI_CR_BSM_Msk            (0x3UL << DCMI_CR_BSM_Pos)                  /*!< 0x00030000 */\n#define DCMI_CR_BSM                DCMI_CR_BSM_Msk\n#define DCMI_CR_BSM_0              (0x1UL << DCMI_CR_BSM_Pos)                   /*!< 0x00010000 */\n#define DCMI_CR_BSM_1              (0x2UL << DCMI_CR_BSM_Pos)                   /*!< 0x00020000 */\n#define DCMI_CR_OEBS_Pos           (18U)\n#define DCMI_CR_OEBS_Msk           (0x1UL << DCMI_CR_OEBS_Pos)                 /*!< 0x00040000 */\n#define DCMI_CR_OEBS               DCMI_CR_OEBS_Msk\n#define DCMI_CR_LSM_Pos            (19U)\n#define DCMI_CR_LSM_Msk            (0x1UL << DCMI_CR_LSM_Pos)                  /*!< 0x00080000 */\n#define DCMI_CR_LSM                DCMI_CR_LSM_Msk\n#define DCMI_CR_OELS_Pos           (20U)\n#define DCMI_CR_OELS_Msk           (0x1UL << DCMI_CR_OELS_Pos)                 /*!< 0x00100000 */\n#define DCMI_CR_OELS               DCMI_CR_OELS_Msk\n\n/********************  Bits definition for DCMI_SR register  ******************/\n#define DCMI_SR_HSYNC_Pos          (0U)\n#define DCMI_SR_HSYNC_Msk          (0x1UL << DCMI_SR_HSYNC_Pos)                /*!< 0x00000001 */\n#define DCMI_SR_HSYNC              DCMI_SR_HSYNC_Msk\n#define DCMI_SR_VSYNC_Pos          (1U)\n#define DCMI_SR_VSYNC_Msk          (0x1UL << DCMI_SR_VSYNC_Pos)                /*!< 0x00000002 */\n#define DCMI_SR_VSYNC              DCMI_SR_VSYNC_Msk\n#define DCMI_SR_FNE_Pos            (2U)\n#define DCMI_SR_FNE_Msk            (0x1UL << DCMI_SR_FNE_Pos)                  /*!< 0x00000004 */\n#define DCMI_SR_FNE                DCMI_SR_FNE_Msk\n\n/********************  Bits definition for DCMI_RIS register   ****************/\n#define DCMI_RIS_FRAME_RIS_Pos     (0U)\n#define DCMI_RIS_FRAME_RIS_Msk     (0x1UL << DCMI_RIS_FRAME_RIS_Pos)           /*!< 0x00000001 */\n#define DCMI_RIS_FRAME_RIS         DCMI_RIS_FRAME_RIS_Msk\n#define DCMI_RIS_OVR_RIS_Pos       (1U)\n#define DCMI_RIS_OVR_RIS_Msk       (0x1UL << DCMI_RIS_OVR_RIS_Pos)             /*!< 0x00000002 */\n#define DCMI_RIS_OVR_RIS           DCMI_RIS_OVR_RIS_Msk\n#define DCMI_RIS_ERR_RIS_Pos       (2U)\n#define DCMI_RIS_ERR_RIS_Msk       (0x1UL << DCMI_RIS_ERR_RIS_Pos)             /*!< 0x00000004 */\n#define DCMI_RIS_ERR_RIS           DCMI_RIS_ERR_RIS_Msk\n#define DCMI_RIS_VSYNC_RIS_Pos     (3U)\n#define DCMI_RIS_VSYNC_RIS_Msk     (0x1UL << DCMI_RIS_VSYNC_RIS_Pos)           /*!< 0x00000008 */\n#define DCMI_RIS_VSYNC_RIS         DCMI_RIS_VSYNC_RIS_Msk\n#define DCMI_RIS_LINE_RIS_Pos      (4U)\n#define DCMI_RIS_LINE_RIS_Msk      (0x1UL << DCMI_RIS_LINE_RIS_Pos)            /*!< 0x00000010 */\n#define DCMI_RIS_LINE_RIS          DCMI_RIS_LINE_RIS_Msk\n\n/********************  Bits definition for DCMI_IER register  *****************/\n#define DCMI_IER_FRAME_IE_Pos      (0U)\n#define DCMI_IER_FRAME_IE_Msk      (0x1UL << DCMI_IER_FRAME_IE_Pos)            /*!< 0x00000001 */\n#define DCMI_IER_FRAME_IE          DCMI_IER_FRAME_IE_Msk\n#define DCMI_IER_OVR_IE_Pos        (1U)\n#define DCMI_IER_OVR_IE_Msk        (0x1UL << DCMI_IER_OVR_IE_Pos)              /*!< 0x00000002 */\n#define DCMI_IER_OVR_IE            DCMI_IER_OVR_IE_Msk\n#define DCMI_IER_ERR_IE_Pos        (2U)\n#define DCMI_IER_ERR_IE_Msk        (0x1UL << DCMI_IER_ERR_IE_Pos)              /*!< 0x00000004 */\n#define DCMI_IER_ERR_IE            DCMI_IER_ERR_IE_Msk\n#define DCMI_IER_VSYNC_IE_Pos      (3U)\n#define DCMI_IER_VSYNC_IE_Msk      (0x1UL << DCMI_IER_VSYNC_IE_Pos)            /*!< 0x00000008 */\n#define DCMI_IER_VSYNC_IE          DCMI_IER_VSYNC_IE_Msk\n#define DCMI_IER_LINE_IE_Pos       (4U)\n#define DCMI_IER_LINE_IE_Msk       (0x1UL << DCMI_IER_LINE_IE_Pos)             /*!< 0x00000010 */\n#define DCMI_IER_LINE_IE           DCMI_IER_LINE_IE_Msk\n\n\n/********************  Bits definition for DCMI_MIS register  *****************/\n#define DCMI_MIS_FRAME_MIS_Pos     (0U)\n#define DCMI_MIS_FRAME_MIS_Msk     (0x1UL << DCMI_MIS_FRAME_MIS_Pos)           /*!< 0x00000001 */\n#define DCMI_MIS_FRAME_MIS         DCMI_MIS_FRAME_MIS_Msk\n#define DCMI_MIS_OVR_MIS_Pos       (1U)\n#define DCMI_MIS_OVR_MIS_Msk       (0x1UL << DCMI_MIS_OVR_MIS_Pos)             /*!< 0x00000002 */\n#define DCMI_MIS_OVR_MIS           DCMI_MIS_OVR_MIS_Msk\n#define DCMI_MIS_ERR_MIS_Pos       (2U)\n#define DCMI_MIS_ERR_MIS_Msk       (0x1UL << DCMI_MIS_ERR_MIS_Pos)             /*!< 0x00000004 */\n#define DCMI_MIS_ERR_MIS           DCMI_MIS_ERR_MIS_Msk\n#define DCMI_MIS_VSYNC_MIS_Pos     (3U)\n#define DCMI_MIS_VSYNC_MIS_Msk     (0x1UL << DCMI_MIS_VSYNC_MIS_Pos)           /*!< 0x00000008 */\n#define DCMI_MIS_VSYNC_MIS         DCMI_MIS_VSYNC_MIS_Msk\n#define DCMI_MIS_LINE_MIS_Pos      (4U)\n#define DCMI_MIS_LINE_MIS_Msk      (0x1UL << DCMI_MIS_LINE_MIS_Pos)            /*!< 0x00000010 */\n#define DCMI_MIS_LINE_MIS          DCMI_MIS_LINE_MIS_Msk\n\n\n/********************  Bits definition for DCMI_ICR register  *****************/\n#define DCMI_ICR_FRAME_ISC_Pos     (0U)\n#define DCMI_ICR_FRAME_ISC_Msk     (0x1UL << DCMI_ICR_FRAME_ISC_Pos)           /*!< 0x00000001 */\n#define DCMI_ICR_FRAME_ISC         DCMI_ICR_FRAME_ISC_Msk\n#define DCMI_ICR_OVR_ISC_Pos       (1U)\n#define DCMI_ICR_OVR_ISC_Msk       (0x1UL << DCMI_ICR_OVR_ISC_Pos)             /*!< 0x00000002 */\n#define DCMI_ICR_OVR_ISC           DCMI_ICR_OVR_ISC_Msk\n#define DCMI_ICR_ERR_ISC_Pos       (2U)\n#define DCMI_ICR_ERR_ISC_Msk       (0x1UL << DCMI_ICR_ERR_ISC_Pos)             /*!< 0x00000004 */\n#define DCMI_ICR_ERR_ISC           DCMI_ICR_ERR_ISC_Msk\n#define DCMI_ICR_VSYNC_ISC_Pos     (3U)\n#define DCMI_ICR_VSYNC_ISC_Msk     (0x1UL << DCMI_ICR_VSYNC_ISC_Pos)           /*!< 0x00000008 */\n#define DCMI_ICR_VSYNC_ISC         DCMI_ICR_VSYNC_ISC_Msk\n#define DCMI_ICR_LINE_ISC_Pos      (4U)\n#define DCMI_ICR_LINE_ISC_Msk      (0x1UL << DCMI_ICR_LINE_ISC_Pos)            /*!< 0x00000010 */\n#define DCMI_ICR_LINE_ISC          DCMI_ICR_LINE_ISC_Msk\n\n\n/********************  Bits definition for DCMI_ESCR register  ******************/\n#define DCMI_ESCR_FSC_Pos          (0U)\n#define DCMI_ESCR_FSC_Msk          (0xFFUL << DCMI_ESCR_FSC_Pos)               /*!< 0x000000FF */\n#define DCMI_ESCR_FSC              DCMI_ESCR_FSC_Msk\n#define DCMI_ESCR_LSC_Pos          (8U)\n#define DCMI_ESCR_LSC_Msk          (0xFFUL << DCMI_ESCR_LSC_Pos)               /*!< 0x0000FF00 */\n#define DCMI_ESCR_LSC              DCMI_ESCR_LSC_Msk\n#define DCMI_ESCR_LEC_Pos          (16U)\n#define DCMI_ESCR_LEC_Msk          (0xFFUL << DCMI_ESCR_LEC_Pos)               /*!< 0x00FF0000 */\n#define DCMI_ESCR_LEC              DCMI_ESCR_LEC_Msk\n#define DCMI_ESCR_FEC_Pos          (24U)\n#define DCMI_ESCR_FEC_Msk          (0xFFUL << DCMI_ESCR_FEC_Pos)               /*!< 0xFF000000 */\n#define DCMI_ESCR_FEC              DCMI_ESCR_FEC_Msk\n\n/********************  Bits definition for DCMI_ESUR register  ******************/\n#define DCMI_ESUR_FSU_Pos          (0U)\n#define DCMI_ESUR_FSU_Msk          (0xFFUL << DCMI_ESUR_FSU_Pos)               /*!< 0x000000FF */\n#define DCMI_ESUR_FSU              DCMI_ESUR_FSU_Msk\n#define DCMI_ESUR_LSU_Pos          (8U)\n#define DCMI_ESUR_LSU_Msk          (0xFFUL << DCMI_ESUR_LSU_Pos)               /*!< 0x0000FF00 */\n#define DCMI_ESUR_LSU              DCMI_ESUR_LSU_Msk\n#define DCMI_ESUR_LEU_Pos          (16U)\n#define DCMI_ESUR_LEU_Msk          (0xFFUL << DCMI_ESUR_LEU_Pos)               /*!< 0x00FF0000 */\n#define DCMI_ESUR_LEU              DCMI_ESUR_LEU_Msk\n#define DCMI_ESUR_FEU_Pos          (24U)\n#define DCMI_ESUR_FEU_Msk          (0xFFUL << DCMI_ESUR_FEU_Pos)               /*!< 0xFF000000 */\n#define DCMI_ESUR_FEU              DCMI_ESUR_FEU_Msk\n\n/********************  Bits definition for DCMI_CWSTRT register  ******************/\n#define DCMI_CWSTRT_HOFFCNT_Pos    (0U)\n#define DCMI_CWSTRT_HOFFCNT_Msk    (0x3FFFUL << DCMI_CWSTRT_HOFFCNT_Pos)       /*!< 0x00003FFF */\n#define DCMI_CWSTRT_HOFFCNT        DCMI_CWSTRT_HOFFCNT_Msk\n#define DCMI_CWSTRT_VST_Pos        (16U)\n#define DCMI_CWSTRT_VST_Msk        (0x1FFFUL << DCMI_CWSTRT_VST_Pos)           /*!< 0x1FFF0000 */\n#define DCMI_CWSTRT_VST            DCMI_CWSTRT_VST_Msk\n\n/********************  Bits definition for DCMI_CWSIZE register  ******************/\n#define DCMI_CWSIZE_CAPCNT_Pos     (0U)\n#define DCMI_CWSIZE_CAPCNT_Msk     (0x3FFFUL << DCMI_CWSIZE_CAPCNT_Pos)        /*!< 0x00003FFF */\n#define DCMI_CWSIZE_CAPCNT         DCMI_CWSIZE_CAPCNT_Msk\n#define DCMI_CWSIZE_VLINE_Pos      (16U)\n#define DCMI_CWSIZE_VLINE_Msk      (0x3FFFUL << DCMI_CWSIZE_VLINE_Pos)         /*!< 0x3FFF0000 */\n#define DCMI_CWSIZE_VLINE          DCMI_CWSIZE_VLINE_Msk\n\n/********************  Bits definition for DCMI_DR register  ******************/\n#define DCMI_DR_BYTE0_Pos          (0U)\n#define DCMI_DR_BYTE0_Msk          (0xFFUL << DCMI_DR_BYTE0_Pos)               /*!< 0x000000FF */\n#define DCMI_DR_BYTE0              DCMI_DR_BYTE0_Msk\n#define DCMI_DR_BYTE1_Pos          (8U)\n#define DCMI_DR_BYTE1_Msk          (0xFFUL << DCMI_DR_BYTE1_Pos)               /*!< 0x0000FF00 */\n#define DCMI_DR_BYTE1              DCMI_DR_BYTE1_Msk\n#define DCMI_DR_BYTE2_Pos          (16U)\n#define DCMI_DR_BYTE2_Msk          (0xFFUL << DCMI_DR_BYTE2_Pos)               /*!< 0x00FF0000 */\n#define DCMI_DR_BYTE2              DCMI_DR_BYTE2_Msk\n#define DCMI_DR_BYTE3_Pos          (24U)\n#define DCMI_DR_BYTE3_Msk          (0xFFUL << DCMI_DR_BYTE3_Pos)               /*!< 0xFF000000 */\n#define DCMI_DR_BYTE3              DCMI_DR_BYTE3_Msk\n\n/******************************************************************************/\n/*                                                                            */\n/*                 Digital Filter for Sigma Delta Modulators                  */\n/*                                                                            */\n/******************************************************************************/\n\n/****************   DFSDM channel configuration registers  ********************/\n\n/***************  Bit definition for DFSDM_CHCFGR1 register  ******************/\n#define DFSDM_CHCFGR1_DFSDMEN_Pos       (31U)\n#define DFSDM_CHCFGR1_DFSDMEN_Msk       (0x1UL << DFSDM_CHCFGR1_DFSDMEN_Pos)   /*!< 0x80000000 */\n#define DFSDM_CHCFGR1_DFSDMEN           DFSDM_CHCFGR1_DFSDMEN_Msk              /*!< Global enable for DFSDM interface */\n#define DFSDM_CHCFGR1_CKOUTSRC_Pos      (30U)\n#define DFSDM_CHCFGR1_CKOUTSRC_Msk      (0x1UL << DFSDM_CHCFGR1_CKOUTSRC_Pos)  /*!< 0x40000000 */\n#define DFSDM_CHCFGR1_CKOUTSRC          DFSDM_CHCFGR1_CKOUTSRC_Msk             /*!< Output serial clock source selection */\n#define DFSDM_CHCFGR1_CKOUTDIV_Pos      (16U)\n#define DFSDM_CHCFGR1_CKOUTDIV_Msk      (0xFFUL << DFSDM_CHCFGR1_CKOUTDIV_Pos) /*!< 0x00FF0000 */\n#define DFSDM_CHCFGR1_CKOUTDIV          DFSDM_CHCFGR1_CKOUTDIV_Msk             /*!< CKOUTDIV[7:0] output serial clock divider */\n#define DFSDM_CHCFGR1_DATPACK_Pos       (14U)\n#define DFSDM_CHCFGR1_DATPACK_Msk       (0x3UL << DFSDM_CHCFGR1_DATPACK_Pos)   /*!< 0x0000C000 */\n#define DFSDM_CHCFGR1_DATPACK           DFSDM_CHCFGR1_DATPACK_Msk              /*!< DATPACK[1:0] Data packing mode */\n#define DFSDM_CHCFGR1_DATPACK_1         (0x2UL << DFSDM_CHCFGR1_DATPACK_Pos)    /*!< 0x00008000 */\n#define DFSDM_CHCFGR1_DATPACK_0         (0x1UL << DFSDM_CHCFGR1_DATPACK_Pos)    /*!< 0x00004000 */\n#define DFSDM_CHCFGR1_DATMPX_Pos        (12U)\n#define DFSDM_CHCFGR1_DATMPX_Msk        (0x3UL << DFSDM_CHCFGR1_DATMPX_Pos)    /*!< 0x00003000 */\n#define DFSDM_CHCFGR1_DATMPX            DFSDM_CHCFGR1_DATMPX_Msk               /*!< DATMPX[1:0] Input data multiplexer for channel y */\n#define DFSDM_CHCFGR1_DATMPX_1          (0x2UL << DFSDM_CHCFGR1_DATMPX_Pos)     /*!< 0x00002000 */\n#define DFSDM_CHCFGR1_DATMPX_0          (0x1UL << DFSDM_CHCFGR1_DATMPX_Pos)     /*!< 0x00001000 */\n#define DFSDM_CHCFGR1_CHINSEL_Pos       (8U)\n#define DFSDM_CHCFGR1_CHINSEL_Msk       (0x1UL << DFSDM_CHCFGR1_CHINSEL_Pos)   /*!< 0x00000100 */\n#define DFSDM_CHCFGR1_CHINSEL           DFSDM_CHCFGR1_CHINSEL_Msk              /*!< Serial inputs selection for channel y */\n#define DFSDM_CHCFGR1_CHEN_Pos          (7U)\n#define DFSDM_CHCFGR1_CHEN_Msk          (0x1UL << DFSDM_CHCFGR1_CHEN_Pos)      /*!< 0x00000080 */\n#define DFSDM_CHCFGR1_CHEN              DFSDM_CHCFGR1_CHEN_Msk                 /*!< Channel y enable */\n#define DFSDM_CHCFGR1_CKABEN_Pos        (6U)\n#define DFSDM_CHCFGR1_CKABEN_Msk        (0x1UL << DFSDM_CHCFGR1_CKABEN_Pos)    /*!< 0x00000040 */\n#define DFSDM_CHCFGR1_CKABEN            DFSDM_CHCFGR1_CKABEN_Msk               /*!< Clock absence detector enable on channel y */\n#define DFSDM_CHCFGR1_SCDEN_Pos         (5U)\n#define DFSDM_CHCFGR1_SCDEN_Msk         (0x1UL << DFSDM_CHCFGR1_SCDEN_Pos)     /*!< 0x00000020 */\n#define DFSDM_CHCFGR1_SCDEN             DFSDM_CHCFGR1_SCDEN_Msk                /*!< Short circuit detector enable on channel y */\n#define DFSDM_CHCFGR1_SPICKSEL_Pos      (2U)\n#define DFSDM_CHCFGR1_SPICKSEL_Msk      (0x3UL << DFSDM_CHCFGR1_SPICKSEL_Pos)  /*!< 0x0000000C */\n#define DFSDM_CHCFGR1_SPICKSEL          DFSDM_CHCFGR1_SPICKSEL_Msk             /*!< SPICKSEL[1:0] SPI clock select for channel y */\n#define DFSDM_CHCFGR1_SPICKSEL_1        (0x2UL << DFSDM_CHCFGR1_SPICKSEL_Pos)   /*!< 0x00000008 */\n#define DFSDM_CHCFGR1_SPICKSEL_0        (0x1UL << DFSDM_CHCFGR1_SPICKSEL_Pos)   /*!< 0x00000004 */\n#define DFSDM_CHCFGR1_SITP_Pos          (0U)\n#define DFSDM_CHCFGR1_SITP_Msk          (0x3UL << DFSDM_CHCFGR1_SITP_Pos)      /*!< 0x00000003 */\n#define DFSDM_CHCFGR1_SITP              DFSDM_CHCFGR1_SITP_Msk                 /*!< SITP[1:0] Serial interface type for channel y */\n#define DFSDM_CHCFGR1_SITP_1            (0x2UL << DFSDM_CHCFGR1_SITP_Pos)       /*!< 0x00000002 */\n#define DFSDM_CHCFGR1_SITP_0            (0x1UL << DFSDM_CHCFGR1_SITP_Pos)       /*!< 0x00000001 */\n\n/***************  Bit definition for DFSDM_CHCFGR2 register  ******************/\n#define DFSDM_CHCFGR2_OFFSET_Pos        (8U)\n#define DFSDM_CHCFGR2_OFFSET_Msk        (0xFFFFFFUL << DFSDM_CHCFGR2_OFFSET_Pos) /*!< 0xFFFFFF00 */\n#define DFSDM_CHCFGR2_OFFSET            DFSDM_CHCFGR2_OFFSET_Msk               /*!< OFFSET[23:0] 24-bit calibration offset for channel y */\n#define DFSDM_CHCFGR2_DTRBS_Pos         (3U)\n#define DFSDM_CHCFGR2_DTRBS_Msk         (0x1FUL << DFSDM_CHCFGR2_DTRBS_Pos)    /*!< 0x000000F8 */\n#define DFSDM_CHCFGR2_DTRBS             DFSDM_CHCFGR2_DTRBS_Msk                /*!< DTRBS[4:0] Data right bit-shift for channel y */\n\n/******************  Bit definition for DFSDM_CHAWSCDR register *****************/\n#define DFSDM_CHAWSCDR_AWFORD_Pos       (22U)\n#define DFSDM_CHAWSCDR_AWFORD_Msk       (0x3UL << DFSDM_CHAWSCDR_AWFORD_Pos)   /*!< 0x00C00000 */\n#define DFSDM_CHAWSCDR_AWFORD           DFSDM_CHAWSCDR_AWFORD_Msk              /*!< AWFORD[1:0] Analog watchdog Sinc filter order on channel y */\n#define DFSDM_CHAWSCDR_AWFORD_1         (0x2UL << DFSDM_CHAWSCDR_AWFORD_Pos)    /*!< 0x00800000 */\n#define DFSDM_CHAWSCDR_AWFORD_0         (0x1UL << DFSDM_CHAWSCDR_AWFORD_Pos)    /*!< 0x00400000 */\n#define DFSDM_CHAWSCDR_AWFOSR_Pos       (16U)\n#define DFSDM_CHAWSCDR_AWFOSR_Msk       (0x1FUL << DFSDM_CHAWSCDR_AWFOSR_Pos)  /*!< 0x001F0000 */\n#define DFSDM_CHAWSCDR_AWFOSR           DFSDM_CHAWSCDR_AWFOSR_Msk              /*!< AWFOSR[4:0] Analog watchdog filter oversampling ratio on channel y */\n#define DFSDM_CHAWSCDR_BKSCD_Pos        (12U)\n#define DFSDM_CHAWSCDR_BKSCD_Msk        (0xFUL << DFSDM_CHAWSCDR_BKSCD_Pos)    /*!< 0x0000F000 */\n#define DFSDM_CHAWSCDR_BKSCD            DFSDM_CHAWSCDR_BKSCD_Msk               /*!< BKSCD[3:0] Break signal assignment for short circuit detector on channel y */\n#define DFSDM_CHAWSCDR_SCDT_Pos         (0U)\n#define DFSDM_CHAWSCDR_SCDT_Msk         (0xFFUL << DFSDM_CHAWSCDR_SCDT_Pos)    /*!< 0x000000FF */\n#define DFSDM_CHAWSCDR_SCDT             DFSDM_CHAWSCDR_SCDT_Msk                /*!< SCDT[7:0] Short circuit detector threshold for channel y */\n\n/****************  Bit definition for DFSDM_CHWDATR register *******************/\n#define DFSDM_CHWDATR_WDATA_Pos         (0U)\n#define DFSDM_CHWDATR_WDATA_Msk         (0xFFFFUL << DFSDM_CHWDATR_WDATA_Pos)  /*!< 0x0000FFFF */\n#define DFSDM_CHWDATR_WDATA             DFSDM_CHWDATR_WDATA_Msk                /*!< WDATA[15:0] Input channel y watchdog data */\n\n/****************  Bit definition for DFSDM_CHDATINR register *****************/\n#define DFSDM_CHDATINR_INDAT0_Pos       (0U)\n#define DFSDM_CHDATINR_INDAT0_Msk       (0xFFFFUL << DFSDM_CHDATINR_INDAT0_Pos) /*!< 0x0000FFFF */\n#define DFSDM_CHDATINR_INDAT0           DFSDM_CHDATINR_INDAT0_Msk              /*!< INDAT0[31:16] Input data for channel y or channel (y+1) */\n#define DFSDM_CHDATINR_INDAT1_Pos       (16U)\n#define DFSDM_CHDATINR_INDAT1_Msk       (0xFFFFUL << DFSDM_CHDATINR_INDAT1_Pos) /*!< 0xFFFF0000 */\n#define DFSDM_CHDATINR_INDAT1           DFSDM_CHDATINR_INDAT1_Msk              /*!< INDAT0[15:0] Input data for channel y */\n\n/************************   DFSDM module registers  ****************************/\n\n/********************  Bit definition for DFSDM_FLTCR1 register *******************/\n#define DFSDM_FLTCR1_AWFSEL_Pos         (30U)\n#define DFSDM_FLTCR1_AWFSEL_Msk         (0x1UL << DFSDM_FLTCR1_AWFSEL_Pos)     /*!< 0x40000000 */\n#define DFSDM_FLTCR1_AWFSEL             DFSDM_FLTCR1_AWFSEL_Msk                /*!< Analog watchdog fast mode select */\n#define DFSDM_FLTCR1_FAST_Pos           (29U)\n#define DFSDM_FLTCR1_FAST_Msk           (0x1UL << DFSDM_FLTCR1_FAST_Pos)       /*!< 0x20000000 */\n#define DFSDM_FLTCR1_FAST               DFSDM_FLTCR1_FAST_Msk                  /*!< Fast conversion mode selection */\n#define DFSDM_FLTCR1_RCH_Pos            (24U)\n#define DFSDM_FLTCR1_RCH_Msk            (0x7UL << DFSDM_FLTCR1_RCH_Pos)        /*!< 0x07000000 */\n#define DFSDM_FLTCR1_RCH                DFSDM_FLTCR1_RCH_Msk                   /*!< RCH[2:0] Regular channel selection */\n#define DFSDM_FLTCR1_RDMAEN_Pos         (21U)\n#define DFSDM_FLTCR1_RDMAEN_Msk         (0x1UL << DFSDM_FLTCR1_RDMAEN_Pos)     /*!< 0x00200000 */\n#define DFSDM_FLTCR1_RDMAEN             DFSDM_FLTCR1_RDMAEN_Msk                /*!< DMA channel enabled to read data for the regular conversion */\n#define DFSDM_FLTCR1_RSYNC_Pos          (19U)\n#define DFSDM_FLTCR1_RSYNC_Msk          (0x1UL << DFSDM_FLTCR1_RSYNC_Pos)      /*!< 0x00080000 */\n#define DFSDM_FLTCR1_RSYNC              DFSDM_FLTCR1_RSYNC_Msk                 /*!< Launch regular conversion synchronously with DFSDMx */\n#define DFSDM_FLTCR1_RCONT_Pos          (18U)\n#define DFSDM_FLTCR1_RCONT_Msk          (0x1UL << DFSDM_FLTCR1_RCONT_Pos)      /*!< 0x00040000 */\n#define DFSDM_FLTCR1_RCONT              DFSDM_FLTCR1_RCONT_Msk                 /*!< Continuous mode selection for regular conversions */\n#define DFSDM_FLTCR1_RSWSTART_Pos       (17U)\n#define DFSDM_FLTCR1_RSWSTART_Msk       (0x1UL << DFSDM_FLTCR1_RSWSTART_Pos)   /*!< 0x00020000 */\n#define DFSDM_FLTCR1_RSWSTART           DFSDM_FLTCR1_RSWSTART_Msk              /*!< Software start of a conversion on the regular channel */\n#define DFSDM_FLTCR1_JEXTEN_Pos         (13U)\n#define DFSDM_FLTCR1_JEXTEN_Msk         (0x3UL << DFSDM_FLTCR1_JEXTEN_Pos)     /*!< 0x00006000 */\n#define DFSDM_FLTCR1_JEXTEN             DFSDM_FLTCR1_JEXTEN_Msk                /*!< JEXTEN[1:0] Trigger enable and trigger edge selection for injected conversions */\n#define DFSDM_FLTCR1_JEXTEN_1           (0x2UL << DFSDM_FLTCR1_JEXTEN_Pos)      /*!< 0x00004000 */\n#define DFSDM_FLTCR1_JEXTEN_0           (0x1UL << DFSDM_FLTCR1_JEXTEN_Pos)      /*!< 0x00002000 */\n#define DFSDM_FLTCR1_JEXTSEL_Pos        (8U)\n#define DFSDM_FLTCR1_JEXTSEL_Msk        (0x1FUL << DFSDM_FLTCR1_JEXTSEL_Pos)   /*!< 0x00001F00 */\n#define DFSDM_FLTCR1_JEXTSEL            DFSDM_FLTCR1_JEXTSEL_Msk               /*!< JEXTSEL[4:0]Trigger signal selection for launching injected conversions */\n#define DFSDM_FLTCR1_JEXTSEL_0          (0x01UL << DFSDM_FLTCR1_JEXTSEL_Pos)    /*!< 0x00000100 */\n#define DFSDM_FLTCR1_JEXTSEL_1          (0x02UL << DFSDM_FLTCR1_JEXTSEL_Pos)    /*!< 0x00000200 */\n#define DFSDM_FLTCR1_JEXTSEL_2          (0x04UL << DFSDM_FLTCR1_JEXTSEL_Pos)    /*!< 0x00000400 */\n#define DFSDM_FLTCR1_JEXTSEL_3          (0x08UL << DFSDM_FLTCR1_JEXTSEL_Pos)    /*!< 0x00000800 */\n#define DFSDM_FLTCR1_JEXTSEL_4          (0x10UL << DFSDM_FLTCR1_JEXTSEL_Pos)    /*!< 0x00001000 */\n\n#define DFSDM_FLTCR1_JDMAEN_Pos         (5U)\n#define DFSDM_FLTCR1_JDMAEN_Msk         (0x1UL << DFSDM_FLTCR1_JDMAEN_Pos)     /*!< 0x00000020 */\n#define DFSDM_FLTCR1_JDMAEN             DFSDM_FLTCR1_JDMAEN_Msk                /*!< DMA channel enabled to read data for the injected channel group */\n#define DFSDM_FLTCR1_JSCAN_Pos          (4U)\n#define DFSDM_FLTCR1_JSCAN_Msk          (0x1UL << DFSDM_FLTCR1_JSCAN_Pos)      /*!< 0x00000010 */\n#define DFSDM_FLTCR1_JSCAN              DFSDM_FLTCR1_JSCAN_Msk                 /*!< Scanning conversion in continuous mode selection for injected conversions */\n#define DFSDM_FLTCR1_JSYNC_Pos          (3U)\n#define DFSDM_FLTCR1_JSYNC_Msk          (0x1UL << DFSDM_FLTCR1_JSYNC_Pos)      /*!< 0x00000008 */\n#define DFSDM_FLTCR1_JSYNC              DFSDM_FLTCR1_JSYNC_Msk                 /*!< Launch an injected conversion synchronously with DFSDMx JSWSTART trigger  */\n#define DFSDM_FLTCR1_JSWSTART_Pos       (1U)\n#define DFSDM_FLTCR1_JSWSTART_Msk       (0x1UL << DFSDM_FLTCR1_JSWSTART_Pos)   /*!< 0x00000002 */\n#define DFSDM_FLTCR1_JSWSTART           DFSDM_FLTCR1_JSWSTART_Msk              /*!< Start the conversion of the injected group of channels */\n#define DFSDM_FLTCR1_DFEN_Pos           (0U)\n#define DFSDM_FLTCR1_DFEN_Msk           (0x1UL << DFSDM_FLTCR1_DFEN_Pos)       /*!< 0x00000001 */\n#define DFSDM_FLTCR1_DFEN               DFSDM_FLTCR1_DFEN_Msk                  /*!< DFSDM enable */\n\n/********************  Bit definition for DFSDM_FLTCR2 register *******************/\n#define DFSDM_FLTCR2_AWDCH_Pos          (16U)\n#define DFSDM_FLTCR2_AWDCH_Msk          (0xFFUL << DFSDM_FLTCR2_AWDCH_Pos)     /*!< 0x00FF0000 */\n#define DFSDM_FLTCR2_AWDCH              DFSDM_FLTCR2_AWDCH_Msk                 /*!< AWDCH[7:0] Analog watchdog channel selection */\n#define DFSDM_FLTCR2_EXCH_Pos           (8U)\n#define DFSDM_FLTCR2_EXCH_Msk           (0xFFUL << DFSDM_FLTCR2_EXCH_Pos)      /*!< 0x0000FF00 */\n#define DFSDM_FLTCR2_EXCH               DFSDM_FLTCR2_EXCH_Msk                  /*!< EXCH[7:0] Extreme detector channel selection */\n#define DFSDM_FLTCR2_CKABIE_Pos         (6U)\n#define DFSDM_FLTCR2_CKABIE_Msk         (0x1UL << DFSDM_FLTCR2_CKABIE_Pos)     /*!< 0x00000040 */\n#define DFSDM_FLTCR2_CKABIE             DFSDM_FLTCR2_CKABIE_Msk                /*!< Clock absence interrupt enable */\n#define DFSDM_FLTCR2_SCDIE_Pos          (5U)\n#define DFSDM_FLTCR2_SCDIE_Msk          (0x1UL << DFSDM_FLTCR2_SCDIE_Pos)      /*!< 0x00000020 */\n#define DFSDM_FLTCR2_SCDIE              DFSDM_FLTCR2_SCDIE_Msk                 /*!< Short circuit detector interrupt enable */\n#define DFSDM_FLTCR2_AWDIE_Pos          (4U)\n#define DFSDM_FLTCR2_AWDIE_Msk          (0x1UL << DFSDM_FLTCR2_AWDIE_Pos)      /*!< 0x00000010 */\n#define DFSDM_FLTCR2_AWDIE              DFSDM_FLTCR2_AWDIE_Msk                 /*!< Analog watchdog interrupt enable */\n#define DFSDM_FLTCR2_ROVRIE_Pos         (3U)\n#define DFSDM_FLTCR2_ROVRIE_Msk         (0x1UL << DFSDM_FLTCR2_ROVRIE_Pos)     /*!< 0x00000008 */\n#define DFSDM_FLTCR2_ROVRIE             DFSDM_FLTCR2_ROVRIE_Msk                /*!< Regular data overrun interrupt enable */\n#define DFSDM_FLTCR2_JOVRIE_Pos         (2U)\n#define DFSDM_FLTCR2_JOVRIE_Msk         (0x1UL << DFSDM_FLTCR2_JOVRIE_Pos)     /*!< 0x00000004 */\n#define DFSDM_FLTCR2_JOVRIE             DFSDM_FLTCR2_JOVRIE_Msk                /*!< Injected data overrun interrupt enable */\n#define DFSDM_FLTCR2_REOCIE_Pos         (1U)\n#define DFSDM_FLTCR2_REOCIE_Msk         (0x1UL << DFSDM_FLTCR2_REOCIE_Pos)     /*!< 0x00000002 */\n#define DFSDM_FLTCR2_REOCIE             DFSDM_FLTCR2_REOCIE_Msk                /*!< Regular end of conversion interrupt enable */\n#define DFSDM_FLTCR2_JEOCIE_Pos         (0U)\n#define DFSDM_FLTCR2_JEOCIE_Msk         (0x1UL << DFSDM_FLTCR2_JEOCIE_Pos)     /*!< 0x00000001 */\n#define DFSDM_FLTCR2_JEOCIE             DFSDM_FLTCR2_JEOCIE_Msk                /*!< Injected end of conversion interrupt enable */\n\n/********************  Bit definition for DFSDM_FLTISR register *******************/\n#define DFSDM_FLTISR_SCDF_Pos           (24U)\n#define DFSDM_FLTISR_SCDF_Msk           (0xFFUL << DFSDM_FLTISR_SCDF_Pos)      /*!< 0xFF000000 */\n#define DFSDM_FLTISR_SCDF               DFSDM_FLTISR_SCDF_Msk                  /*!< SCDF[7:0] Short circuit detector flag */\n#define DFSDM_FLTISR_CKABF_Pos          (16U)\n#define DFSDM_FLTISR_CKABF_Msk          (0xFFUL << DFSDM_FLTISR_CKABF_Pos)     /*!< 0x00FF0000 */\n#define DFSDM_FLTISR_CKABF              DFSDM_FLTISR_CKABF_Msk                 /*!< CKABF[7:0] Clock absence flag */\n#define DFSDM_FLTISR_RCIP_Pos           (14U)\n#define DFSDM_FLTISR_RCIP_Msk           (0x1UL << DFSDM_FLTISR_RCIP_Pos)       /*!< 0x00004000 */\n#define DFSDM_FLTISR_RCIP               DFSDM_FLTISR_RCIP_Msk                  /*!< Regular conversion in progress status */\n#define DFSDM_FLTISR_JCIP_Pos           (13U)\n#define DFSDM_FLTISR_JCIP_Msk           (0x1UL << DFSDM_FLTISR_JCIP_Pos)       /*!< 0x00002000 */\n#define DFSDM_FLTISR_JCIP               DFSDM_FLTISR_JCIP_Msk                  /*!< Injected conversion in progress status */\n#define DFSDM_FLTISR_AWDF_Pos           (4U)\n#define DFSDM_FLTISR_AWDF_Msk           (0x1UL << DFSDM_FLTISR_AWDF_Pos)       /*!< 0x00000010 */\n#define DFSDM_FLTISR_AWDF               DFSDM_FLTISR_AWDF_Msk                  /*!< Analog watchdog */\n#define DFSDM_FLTISR_ROVRF_Pos          (3U)\n#define DFSDM_FLTISR_ROVRF_Msk          (0x1UL << DFSDM_FLTISR_ROVRF_Pos)      /*!< 0x00000008 */\n#define DFSDM_FLTISR_ROVRF              DFSDM_FLTISR_ROVRF_Msk                 /*!< Regular conversion overrun flag */\n#define DFSDM_FLTISR_JOVRF_Pos          (2U)\n#define DFSDM_FLTISR_JOVRF_Msk          (0x1UL << DFSDM_FLTISR_JOVRF_Pos)      /*!< 0x00000004 */\n#define DFSDM_FLTISR_JOVRF              DFSDM_FLTISR_JOVRF_Msk                 /*!< Injected conversion overrun flag */\n#define DFSDM_FLTISR_REOCF_Pos          (1U)\n#define DFSDM_FLTISR_REOCF_Msk          (0x1UL << DFSDM_FLTISR_REOCF_Pos)      /*!< 0x00000002 */\n#define DFSDM_FLTISR_REOCF              DFSDM_FLTISR_REOCF_Msk                 /*!< End of regular conversion flag */\n#define DFSDM_FLTISR_JEOCF_Pos          (0U)\n#define DFSDM_FLTISR_JEOCF_Msk          (0x1UL << DFSDM_FLTISR_JEOCF_Pos)      /*!< 0x00000001 */\n#define DFSDM_FLTISR_JEOCF              DFSDM_FLTISR_JEOCF_Msk                 /*!< End of injected conversion flag */\n\n/********************  Bit definition for DFSDM_FLTICR register *******************/\n#define DFSDM_FLTICR_CLRSCDF_Pos        (24U)\n#define DFSDM_FLTICR_CLRSCDF_Msk        (0xFFUL << DFSDM_FLTICR_CLRSCDF_Pos)   /*!< 0xFF000000 */\n#define DFSDM_FLTICR_CLRSCDF            DFSDM_FLTICR_CLRSCDF_Msk               /*!< CLRSCSDF[7:0] Clear the short circuit detector flag */\n#define DFSDM_FLTICR_CLRCKABF_Pos       (16U)\n#define DFSDM_FLTICR_CLRCKABF_Msk       (0xFFUL << DFSDM_FLTICR_CLRCKABF_Pos)  /*!< 0x00FF0000 */\n#define DFSDM_FLTICR_CLRCKABF           DFSDM_FLTICR_CLRCKABF_Msk              /*!< CLRCKABF[7:0] Clear the clock absence flag */\n#define DFSDM_FLTICR_CLRROVRF_Pos       (3U)\n#define DFSDM_FLTICR_CLRROVRF_Msk       (0x1UL << DFSDM_FLTICR_CLRROVRF_Pos)   /*!< 0x00000008 */\n#define DFSDM_FLTICR_CLRROVRF           DFSDM_FLTICR_CLRROVRF_Msk              /*!< Clear the regular conversion overrun flag */\n#define DFSDM_FLTICR_CLRJOVRF_Pos       (2U)\n#define DFSDM_FLTICR_CLRJOVRF_Msk       (0x1UL << DFSDM_FLTICR_CLRJOVRF_Pos)   /*!< 0x00000004 */\n#define DFSDM_FLTICR_CLRJOVRF           DFSDM_FLTICR_CLRJOVRF_Msk              /*!< Clear the injected conversion overrun flag */\n\n/*******************  Bit definition for DFSDM_FLTJCHGR register ******************/\n#define DFSDM_FLTJCHGR_JCHG_Pos         (0U)\n#define DFSDM_FLTJCHGR_JCHG_Msk         (0xFFUL << DFSDM_FLTJCHGR_JCHG_Pos)    /*!< 0x000000FF */\n#define DFSDM_FLTJCHGR_JCHG             DFSDM_FLTJCHGR_JCHG_Msk                /*!< JCHG[7:0] Injected channel group selection */\n\n/********************  Bit definition for DFSDM_FLTFCR register *******************/\n#define DFSDM_FLTFCR_FORD_Pos           (29U)\n#define DFSDM_FLTFCR_FORD_Msk           (0x7UL << DFSDM_FLTFCR_FORD_Pos)       /*!< 0xE0000000 */\n#define DFSDM_FLTFCR_FORD               DFSDM_FLTFCR_FORD_Msk                  /*!< FORD[2:0] Sinc filter order */\n#define DFSDM_FLTFCR_FORD_2             (0x4UL << DFSDM_FLTFCR_FORD_Pos)        /*!< 0x80000000 */\n#define DFSDM_FLTFCR_FORD_1             (0x2UL << DFSDM_FLTFCR_FORD_Pos)        /*!< 0x40000000 */\n#define DFSDM_FLTFCR_FORD_0             (0x1UL << DFSDM_FLTFCR_FORD_Pos)        /*!< 0x20000000 */\n#define DFSDM_FLTFCR_FOSR_Pos           (16U)\n#define DFSDM_FLTFCR_FOSR_Msk           (0x3FFUL << DFSDM_FLTFCR_FOSR_Pos)     /*!< 0x03FF0000 */\n#define DFSDM_FLTFCR_FOSR               DFSDM_FLTFCR_FOSR_Msk                  /*!< FOSR[9:0] Sinc filter oversampling ratio (decimation rate) */\n#define DFSDM_FLTFCR_IOSR_Pos           (0U)\n#define DFSDM_FLTFCR_IOSR_Msk           (0xFFUL << DFSDM_FLTFCR_IOSR_Pos)      /*!< 0x000000FF */\n#define DFSDM_FLTFCR_IOSR               DFSDM_FLTFCR_IOSR_Msk                  /*!< IOSR[7:0] Integrator oversampling ratio (averaging length) */\n\n/******************  Bit definition for DFSDM_FLTJDATAR register *****************/\n#define DFSDM_FLTJDATAR_JDATA_Pos       (8U)\n#define DFSDM_FLTJDATAR_JDATA_Msk       (0xFFFFFFUL << DFSDM_FLTJDATAR_JDATA_Pos) /*!< 0xFFFFFF00 */\n#define DFSDM_FLTJDATAR_JDATA           DFSDM_FLTJDATAR_JDATA_Msk              /*!< JDATA[23:0] Injected group conversion data */\n#define DFSDM_FLTJDATAR_JDATACH_Pos     (0U)\n#define DFSDM_FLTJDATAR_JDATACH_Msk     (0x7UL << DFSDM_FLTJDATAR_JDATACH_Pos) /*!< 0x00000007 */\n#define DFSDM_FLTJDATAR_JDATACH         DFSDM_FLTJDATAR_JDATACH_Msk            /*!< JDATACH[2:0] Injected channel most recently converted */\n\n/******************  Bit definition for DFSDM_FLTRDATAR register *****************/\n#define DFSDM_FLTRDATAR_RDATA_Pos       (8U)\n#define DFSDM_FLTRDATAR_RDATA_Msk       (0xFFFFFFUL << DFSDM_FLTRDATAR_RDATA_Pos) /*!< 0xFFFFFF00 */\n#define DFSDM_FLTRDATAR_RDATA           DFSDM_FLTRDATAR_RDATA_Msk              /*!< RDATA[23:0] Regular channel conversion data */\n#define DFSDM_FLTRDATAR_RPEND_Pos       (4U)\n#define DFSDM_FLTRDATAR_RPEND_Msk       (0x1UL << DFSDM_FLTRDATAR_RPEND_Pos)   /*!< 0x00000010 */\n#define DFSDM_FLTRDATAR_RPEND           DFSDM_FLTRDATAR_RPEND_Msk              /*!< RPEND Regular channel pending data */\n#define DFSDM_FLTRDATAR_RDATACH_Pos     (0U)\n#define DFSDM_FLTRDATAR_RDATACH_Msk     (0x7UL << DFSDM_FLTRDATAR_RDATACH_Pos) /*!< 0x00000007 */\n#define DFSDM_FLTRDATAR_RDATACH         DFSDM_FLTRDATAR_RDATACH_Msk            /*!< RDATACH[2:0] Regular channel most recently converted */\n\n/******************  Bit definition for DFSDM_FLTAWHTR register ******************/\n#define DFSDM_FLTAWHTR_AWHT_Pos         (8U)\n#define DFSDM_FLTAWHTR_AWHT_Msk         (0xFFFFFFUL << DFSDM_FLTAWHTR_AWHT_Pos) /*!< 0xFFFFFF00 */\n#define DFSDM_FLTAWHTR_AWHT             DFSDM_FLTAWHTR_AWHT_Msk                /*!< AWHT[23:0] Analog watchdog high threshold */\n#define DFSDM_FLTAWHTR_BKAWH_Pos        (0U)\n#define DFSDM_FLTAWHTR_BKAWH_Msk        (0xFUL << DFSDM_FLTAWHTR_BKAWH_Pos)    /*!< 0x0000000F */\n#define DFSDM_FLTAWHTR_BKAWH            DFSDM_FLTAWHTR_BKAWH_Msk               /*!< BKAWH[3:0] Break signal assignment to analog watchdog high threshold event */\n\n/******************  Bit definition for DFSDM_FLTAWLTR register ******************/\n#define DFSDM_FLTAWLTR_AWLT_Pos         (8U)\n#define DFSDM_FLTAWLTR_AWLT_Msk         (0xFFFFFFUL << DFSDM_FLTAWLTR_AWLT_Pos) /*!< 0xFFFFFF00 */\n#define DFSDM_FLTAWLTR_AWLT             DFSDM_FLTAWLTR_AWLT_Msk                /*!< AWHT[23:0] Analog watchdog low threshold */\n#define DFSDM_FLTAWLTR_BKAWL_Pos        (0U)\n#define DFSDM_FLTAWLTR_BKAWL_Msk        (0xFUL << DFSDM_FLTAWLTR_BKAWL_Pos)    /*!< 0x0000000F */\n#define DFSDM_FLTAWLTR_BKAWL            DFSDM_FLTAWLTR_BKAWL_Msk               /*!< BKAWL[3:0] Break signal assignment to analog watchdog low threshold event */\n\n/******************  Bit definition for DFSDM_FLTAWSR register ******************/\n#define DFSDM_FLTAWSR_AWHTF_Pos         (8U)\n#define DFSDM_FLTAWSR_AWHTF_Msk         (0xFFUL << DFSDM_FLTAWSR_AWHTF_Pos)    /*!< 0x0000FF00 */\n#define DFSDM_FLTAWSR_AWHTF             DFSDM_FLTAWSR_AWHTF_Msk                /*!< AWHTF[15:8] Analog watchdog high threshold error on given channels */\n#define DFSDM_FLTAWSR_AWLTF_Pos         (0U)\n#define DFSDM_FLTAWSR_AWLTF_Msk         (0xFFUL << DFSDM_FLTAWSR_AWLTF_Pos)    /*!< 0x000000FF */\n#define DFSDM_FLTAWSR_AWLTF             DFSDM_FLTAWSR_AWLTF_Msk                /*!< AWLTF[7:0] Analog watchdog low threshold error on given channels */\n\n/******************  Bit definition for DFSDM_FLTAWCFR) register *****************/\n#define DFSDM_FLTAWCFR_CLRAWHTF_Pos     (8U)\n#define DFSDM_FLTAWCFR_CLRAWHTF_Msk     (0xFFUL << DFSDM_FLTAWCFR_CLRAWHTF_Pos) /*!< 0x0000FF00 */\n#define DFSDM_FLTAWCFR_CLRAWHTF         DFSDM_FLTAWCFR_CLRAWHTF_Msk            /*!< CLRAWHTF[15:8] Clear the Analog watchdog high threshold flag */\n#define DFSDM_FLTAWCFR_CLRAWLTF_Pos     (0U)\n#define DFSDM_FLTAWCFR_CLRAWLTF_Msk     (0xFFUL << DFSDM_FLTAWCFR_CLRAWLTF_Pos) /*!< 0x000000FF */\n#define DFSDM_FLTAWCFR_CLRAWLTF         DFSDM_FLTAWCFR_CLRAWLTF_Msk            /*!< CLRAWLTF[7:0] Clear the Analog watchdog low threshold flag */\n\n/******************  Bit definition for DFSDM_FLTEXMAX register ******************/\n#define DFSDM_FLTEXMAX_EXMAX_Pos        (8U)\n#define DFSDM_FLTEXMAX_EXMAX_Msk        (0xFFFFFFUL << DFSDM_FLTEXMAX_EXMAX_Pos) /*!< 0xFFFFFF00 */\n#define DFSDM_FLTEXMAX_EXMAX            DFSDM_FLTEXMAX_EXMAX_Msk               /*!< EXMAX[23:0] Extreme detector maximum value */\n#define DFSDM_FLTEXMAX_EXMAXCH_Pos      (0U)\n#define DFSDM_FLTEXMAX_EXMAXCH_Msk      (0x7UL << DFSDM_FLTEXMAX_EXMAXCH_Pos)  /*!< 0x00000007 */\n#define DFSDM_FLTEXMAX_EXMAXCH          DFSDM_FLTEXMAX_EXMAXCH_Msk             /*!< EXMAXCH[2:0] Extreme detector maximum data channel */\n\n/******************  Bit definition for DFSDM_FLTEXMIN register ******************/\n#define DFSDM_FLTEXMIN_EXMIN_Pos        (8U)\n#define DFSDM_FLTEXMIN_EXMIN_Msk        (0xFFFFFFUL << DFSDM_FLTEXMIN_EXMIN_Pos) /*!< 0xFFFFFF00 */\n#define DFSDM_FLTEXMIN_EXMIN            DFSDM_FLTEXMIN_EXMIN_Msk               /*!< EXMIN[23:0] Extreme detector minimum value */\n#define DFSDM_FLTEXMIN_EXMINCH_Pos      (0U)\n#define DFSDM_FLTEXMIN_EXMINCH_Msk      (0x7UL << DFSDM_FLTEXMIN_EXMINCH_Pos)  /*!< 0x00000007 */\n#define DFSDM_FLTEXMIN_EXMINCH          DFSDM_FLTEXMIN_EXMINCH_Msk             /*!< EXMINCH[2:0] Extreme detector minimum data channel */\n\n/******************  Bit definition for DFSDM_FLTCNVTIMR register ******************/\n#define DFSDM_FLTCNVTIMR_CNVCNT_Pos     (4U)\n#define DFSDM_FLTCNVTIMR_CNVCNT_Msk     (0xFFFFFFFUL << DFSDM_FLTCNVTIMR_CNVCNT_Pos) /*!< 0xFFFFFFF0 */\n#define DFSDM_FLTCNVTIMR_CNVCNT         DFSDM_FLTCNVTIMR_CNVCNT_Msk            /*!< CNVCNT[27:0]: 28-bit timer counting conversion time */\n\n/******************************************************************************/\n/*                                                                            */\n/*                           BDMA Controller                                  */\n/*                                                                            */\n/******************************************************************************/\n\n/*******************  Bit definition for BDMA_ISR register  ********************/\n#define BDMA_ISR_GIF0_Pos       (0U)\n#define BDMA_ISR_GIF0_Msk       (0x1UL << BDMA_ISR_GIF0_Pos)                   /*!< 0x00000001 */\n#define BDMA_ISR_GIF0           BDMA_ISR_GIF0_Msk                              /*!< Channel 0 Global interrupt flag */\n#define BDMA_ISR_TCIF0_Pos      (1U)\n#define BDMA_ISR_TCIF0_Msk      (0x1UL << BDMA_ISR_TCIF0_Pos)                  /*!< 0x00000002 */\n#define BDMA_ISR_TCIF0          BDMA_ISR_TCIF0_Msk                             /*!< Channel 0 Transfer Complete flag */\n#define BDMA_ISR_HTIF0_Pos      (2U)\n#define BDMA_ISR_HTIF0_Msk      (0x1UL << BDMA_ISR_HTIF0_Pos)                  /*!< 0x00000004 */\n#define BDMA_ISR_HTIF0          BDMA_ISR_HTIF0_Msk                             /*!< Channel 0 Half Transfer flag */\n#define BDMA_ISR_TEIF0_Pos      (3U)\n#define BDMA_ISR_TEIF0_Msk      (0x1UL << BDMA_ISR_TEIF0_Pos)                  /*!< 0x00000008 */\n#define BDMA_ISR_TEIF0          BDMA_ISR_TEIF0_Msk                             /*!< Channel 0 Transfer Error flag */\n#define BDMA_ISR_GIF1_Pos       (4U)\n#define BDMA_ISR_GIF1_Msk       (0x1UL << BDMA_ISR_GIF1_Pos)                   /*!< 0x00000010 */\n#define BDMA_ISR_GIF1           BDMA_ISR_GIF1_Msk                              /*!< Channel 1 Global interrupt flag */\n#define BDMA_ISR_TCIF1_Pos      (5U)\n#define BDMA_ISR_TCIF1_Msk      (0x1UL << BDMA_ISR_TCIF1_Pos)                  /*!< 0x00000020 */\n#define BDMA_ISR_TCIF1          BDMA_ISR_TCIF1_Msk                             /*!< Channel 1 Transfer Complete flag */\n#define BDMA_ISR_HTIF1_Pos      (6U)\n#define BDMA_ISR_HTIF1_Msk      (0x1UL << BDMA_ISR_HTIF1_Pos)                  /*!< 0x00000040 */\n#define BDMA_ISR_HTIF1          BDMA_ISR_HTIF1_Msk                             /*!< Channel 1 Half Transfer flag */\n#define BDMA_ISR_TEIF1_Pos      (7U)\n#define BDMA_ISR_TEIF1_Msk      (0x1UL << BDMA_ISR_TEIF1_Pos)                  /*!< 0x00000080 */\n#define BDMA_ISR_TEIF1          BDMA_ISR_TEIF1_Msk                             /*!< Channel 1 Transfer Error flag */\n#define BDMA_ISR_GIF2_Pos       (8U)\n#define BDMA_ISR_GIF2_Msk       (0x1UL << BDMA_ISR_GIF2_Pos)                   /*!< 0x00000100 */\n#define BDMA_ISR_GIF2           BDMA_ISR_GIF2_Msk                              /*!< Channel 2 Global interrupt flag */\n#define BDMA_ISR_TCIF2_Pos      (9U)\n#define BDMA_ISR_TCIF2_Msk      (0x1UL << BDMA_ISR_TCIF2_Pos)                  /*!< 0x00000200 */\n#define BDMA_ISR_TCIF2          BDMA_ISR_TCIF2_Msk                             /*!< Channel 2 Transfer Complete flag */\n#define BDMA_ISR_HTIF2_Pos      (10U)\n#define BDMA_ISR_HTIF2_Msk      (0x1UL << BDMA_ISR_HTIF2_Pos)                  /*!< 0x00000400 */\n#define BDMA_ISR_HTIF2          BDMA_ISR_HTIF2_Msk                             /*!< Channel 2 Half Transfer flag */\n#define BDMA_ISR_TEIF2_Pos      (11U)\n#define BDMA_ISR_TEIF2_Msk      (0x1UL << BDMA_ISR_TEIF2_Pos)                  /*!< 0x00000800 */\n#define BDMA_ISR_TEIF2          BDMA_ISR_TEIF2_Msk                             /*!< Channel 2 Transfer Error flag */\n#define BDMA_ISR_GIF3_Pos       (12U)\n#define BDMA_ISR_GIF3_Msk       (0x1UL << BDMA_ISR_GIF3_Pos)                   /*!< 0x00001000 */\n#define BDMA_ISR_GIF3           BDMA_ISR_GIF3_Msk                              /*!< Channel 3 Global interrupt flag */\n#define BDMA_ISR_TCIF3_Pos      (13U)\n#define BDMA_ISR_TCIF3_Msk      (0x1UL << BDMA_ISR_TCIF3_Pos)                  /*!< 0x00002000 */\n#define BDMA_ISR_TCIF3          BDMA_ISR_TCIF3_Msk                             /*!< Channel 3 Transfer Complete flag */\n#define BDMA_ISR_HTIF3_Pos      (14U)\n#define BDMA_ISR_HTIF3_Msk      (0x1UL << BDMA_ISR_HTIF3_Pos)                  /*!< 0x00004000 */\n#define BDMA_ISR_HTIF3          BDMA_ISR_HTIF3_Msk                             /*!< Channel 3 Half Transfer flag */\n#define BDMA_ISR_TEIF3_Pos      (15U)\n#define BDMA_ISR_TEIF3_Msk      (0x1UL << BDMA_ISR_TEIF3_Pos)                  /*!< 0x00008000 */\n#define BDMA_ISR_TEIF3          BDMA_ISR_TEIF3_Msk                             /*!< Channel 3 Transfer Error flag */\n#define BDMA_ISR_GIF4_Pos       (16U)\n#define BDMA_ISR_GIF4_Msk       (0x1UL << BDMA_ISR_GIF4_Pos)                   /*!< 0x00010000 */\n#define BDMA_ISR_GIF4           BDMA_ISR_GIF4_Msk                              /*!< Channel 4 Global interrupt flag */\n#define BDMA_ISR_TCIF4_Pos      (17U)\n#define BDMA_ISR_TCIF4_Msk      (0x1UL << BDMA_ISR_TCIF4_Pos)                  /*!< 0x00020000 */\n#define BDMA_ISR_TCIF4          BDMA_ISR_TCIF4_Msk                             /*!< Channel 4 Transfer Complete flag */\n#define BDMA_ISR_HTIF4_Pos      (18U)\n#define BDMA_ISR_HTIF4_Msk      (0x1UL << BDMA_ISR_HTIF4_Pos)                  /*!< 0x00040000 */\n#define BDMA_ISR_HTIF4          BDMA_ISR_HTIF4_Msk                             /*!< Channel 4 Half Transfer flag */\n#define BDMA_ISR_TEIF4_Pos      (19U)\n#define BDMA_ISR_TEIF4_Msk      (0x1UL << BDMA_ISR_TEIF4_Pos)                  /*!< 0x00080000 */\n#define BDMA_ISR_TEIF4          BDMA_ISR_TEIF4_Msk                             /*!< Channel 4 Transfer Error flag */\n#define BDMA_ISR_GIF5_Pos       (20U)\n#define BDMA_ISR_GIF5_Msk       (0x1UL << BDMA_ISR_GIF5_Pos)                   /*!< 0x00100000 */\n#define BDMA_ISR_GIF5           BDMA_ISR_GIF5_Msk                              /*!< Channel 5 Global interrupt flag */\n#define BDMA_ISR_TCIF5_Pos      (21U)\n#define BDMA_ISR_TCIF5_Msk      (0x1UL << BDMA_ISR_TCIF5_Pos)                  /*!< 0x00200000 */\n#define BDMA_ISR_TCIF5          BDMA_ISR_TCIF5_Msk                             /*!< Channel 5 Transfer Complete flag */\n#define BDMA_ISR_HTIF5_Pos      (22U)\n#define BDMA_ISR_HTIF5_Msk      (0x1UL << BDMA_ISR_HTIF5_Pos)                  /*!< 0x00400000 */\n#define BDMA_ISR_HTIF5          BDMA_ISR_HTIF5_Msk                             /*!< Channel 5 Half Transfer flag */\n#define BDMA_ISR_TEIF5_Pos      (23U)\n#define BDMA_ISR_TEIF5_Msk      (0x1UL << BDMA_ISR_TEIF5_Pos)                  /*!< 0x00800000 */\n#define BDMA_ISR_TEIF5          BDMA_ISR_TEIF5_Msk                             /*!< Channel 5 Transfer Error flag */\n#define BDMA_ISR_GIF6_Pos       (24U)\n#define BDMA_ISR_GIF6_Msk       (0x1UL << BDMA_ISR_GIF6_Pos)                   /*!< 0x01000000 */\n#define BDMA_ISR_GIF6           BDMA_ISR_GIF6_Msk                              /*!< Channel 6 Global interrupt flag */\n#define BDMA_ISR_TCIF6_Pos      (25U)\n#define BDMA_ISR_TCIF6_Msk      (0x1UL << BDMA_ISR_TCIF6_Pos)                  /*!< 0x02000000 */\n#define BDMA_ISR_TCIF6          BDMA_ISR_TCIF6_Msk                             /*!< Channel 6 Transfer Complete flag */\n#define BDMA_ISR_HTIF6_Pos      (26U)\n#define BDMA_ISR_HTIF6_Msk      (0x1UL << BDMA_ISR_HTIF6_Pos)                  /*!< 0x04000000 */\n#define BDMA_ISR_HTIF6          BDMA_ISR_HTIF6_Msk                             /*!< Channel 6 Half Transfer flag */\n#define BDMA_ISR_TEIF6_Pos      (27U)\n#define BDMA_ISR_TEIF6_Msk      (0x1UL << BDMA_ISR_TEIF6_Pos)                  /*!< 0x08000000 */\n#define BDMA_ISR_TEIF6          BDMA_ISR_TEIF6_Msk                             /*!< Channel 6 Transfer Error flag */\n#define BDMA_ISR_GIF7_Pos       (28U)\n#define BDMA_ISR_GIF7_Msk       (0x1UL << BDMA_ISR_GIF7_Pos)                   /*!< 0x10000000 */\n#define BDMA_ISR_GIF7           BDMA_ISR_GIF7_Msk                              /*!< Channel 7 Global interrupt flag */\n#define BDMA_ISR_TCIF7_Pos      (29U)\n#define BDMA_ISR_TCIF7_Msk      (0x1UL << BDMA_ISR_TCIF7_Pos)                  /*!< 0x20000000 */\n#define BDMA_ISR_TCIF7          BDMA_ISR_TCIF7_Msk                             /*!< Channel 7 Transfer Complete flag */\n#define BDMA_ISR_HTIF7_Pos      (30U)\n#define BDMA_ISR_HTIF7_Msk      (0x1UL << BDMA_ISR_HTIF7_Pos)                  /*!< 0x40000000 */\n#define BDMA_ISR_HTIF7          BDMA_ISR_HTIF7_Msk                             /*!< Channel 7 Half Transfer flag */\n#define BDMA_ISR_TEIF7_Pos      (31U)\n#define BDMA_ISR_TEIF7_Msk      (0x1UL << BDMA_ISR_TEIF7_Pos)                  /*!< 0x80000000 */\n#define BDMA_ISR_TEIF7          BDMA_ISR_TEIF7_Msk                             /*!< Channel 7 Transfer Error flag */\n\n/*******************  Bit definition for BDMA_IFCR register  *******************/\n#define BDMA_IFCR_CGIF0_Pos     (0U)\n#define BDMA_IFCR_CGIF0_Msk     (0x1UL << BDMA_IFCR_CGIF0_Pos)                 /*!< 0x00000001 */\n#define BDMA_IFCR_CGIF0         BDMA_IFCR_CGIF0_Msk                            /*!< Channel 0 Global interrupt clearr */\n#define BDMA_IFCR_CTCIF0_Pos    (1U)\n#define BDMA_IFCR_CTCIF0_Msk    (0x1UL << BDMA_IFCR_CTCIF0_Pos)                /*!< 0x00000002 */\n#define BDMA_IFCR_CTCIF0        BDMA_IFCR_CTCIF0_Msk                           /*!< Channel 0 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF0_Pos    (2U)\n#define BDMA_IFCR_CHTIF0_Msk    (0x1UL << BDMA_IFCR_CHTIF0_Pos)                /*!< 0x00000004 */\n#define BDMA_IFCR_CHTIF0        BDMA_IFCR_CHTIF0_Msk                           /*!< Channel 0 Half Transfer clear */\n#define BDMA_IFCR_CTEIF0_Pos    (3U)\n#define BDMA_IFCR_CTEIF0_Msk    (0x1UL << BDMA_IFCR_CTEIF0_Pos)                /*!< 0x00000008 */\n#define BDMA_IFCR_CTEIF0        BDMA_IFCR_CTEIF0_Msk                           /*!< Channel 0 Transfer Error clear */\n#define BDMA_IFCR_CGIF1_Pos     (4U)\n#define BDMA_IFCR_CGIF1_Msk     (0x1UL << BDMA_IFCR_CGIF1_Pos)                 /*!< 0x00000010 */\n#define BDMA_IFCR_CGIF1         BDMA_IFCR_CGIF1_Msk                            /*!< Channel 1 Global interrupt clear */\n#define BDMA_IFCR_CTCIF1_Pos    (5U)\n#define BDMA_IFCR_CTCIF1_Msk    (0x1UL << BDMA_IFCR_CTCIF1_Pos)                /*!< 0x00000020 */\n#define BDMA_IFCR_CTCIF1        BDMA_IFCR_CTCIF1_Msk                           /*!< Channel 1 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF1_Pos    (6U)\n#define BDMA_IFCR_CHTIF1_Msk    (0x1UL << BDMA_IFCR_CHTIF1_Pos)                /*!< 0x00000040 */\n#define BDMA_IFCR_CHTIF1        BDMA_IFCR_CHTIF1_Msk                           /*!< Channel 1 Half Transfer clear */\n#define BDMA_IFCR_CTEIF1_Pos    (7U)\n#define BDMA_IFCR_CTEIF1_Msk    (0x1UL << BDMA_IFCR_CTEIF1_Pos)                /*!< 0x00000080 */\n#define BDMA_IFCR_CTEIF1        BDMA_IFCR_CTEIF1_Msk                           /*!< Channel 1 Transfer Error clear */\n#define BDMA_IFCR_CGIF2_Pos     (8U)\n#define BDMA_IFCR_CGIF2_Msk     (0x1UL << BDMA_IFCR_CGIF2_Pos)                 /*!< 0x00000100 */\n#define BDMA_IFCR_CGIF2         BDMA_IFCR_CGIF2_Msk                            /*!< Channel 2 Global interrupt clear */\n#define BDMA_IFCR_CTCIF2_Pos    (9U)\n#define BDMA_IFCR_CTCIF2_Msk    (0x1UL << BDMA_IFCR_CTCIF2_Pos)                /*!< 0x00000200 */\n#define BDMA_IFCR_CTCIF2        BDMA_IFCR_CTCIF2_Msk                           /*!< Channel 2 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF2_Pos    (10U)\n#define BDMA_IFCR_CHTIF2_Msk    (0x1UL << BDMA_IFCR_CHTIF2_Pos)                /*!< 0x00000400 */\n#define BDMA_IFCR_CHTIF2        BDMA_IFCR_CHTIF2_Msk                           /*!< Channel 2 Half Transfer clear */\n#define BDMA_IFCR_CTEIF2_Pos    (11U)\n#define BDMA_IFCR_CTEIF2_Msk    (0x1UL << BDMA_IFCR_CTEIF2_Pos)                /*!< 0x00000800 */\n#define BDMA_IFCR_CTEIF2        BDMA_IFCR_CTEIF2_Msk                           /*!< Channel 2 Transfer Error clear */\n#define BDMA_IFCR_CGIF3_Pos     (12U)\n#define BDMA_IFCR_CGIF3_Msk     (0x1UL << BDMA_IFCR_CGIF3_Pos)                 /*!< 0x00001000 */\n#define BDMA_IFCR_CGIF3         BDMA_IFCR_CGIF3_Msk                            /*!< Channel 3 Global interrupt clear */\n#define BDMA_IFCR_CTCIF3_Pos    (13U)\n#define BDMA_IFCR_CTCIF3_Msk    (0x1UL << BDMA_IFCR_CTCIF3_Pos)                /*!< 0x00002000 */\n#define BDMA_IFCR_CTCIF3        BDMA_IFCR_CTCIF3_Msk                           /*!< Channel 3 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF3_Pos    (14U)\n#define BDMA_IFCR_CHTIF3_Msk    (0x1UL << BDMA_IFCR_CHTIF3_Pos)                /*!< 0x00004000 */\n#define BDMA_IFCR_CHTIF3        BDMA_IFCR_CHTIF3_Msk                           /*!< Channel 3 Half Transfer clear */\n#define BDMA_IFCR_CTEIF3_Pos    (15U)\n#define BDMA_IFCR_CTEIF3_Msk    (0x1UL << BDMA_IFCR_CTEIF3_Pos)                /*!< 0x00008000 */\n#define BDMA_IFCR_CTEIF3        BDMA_IFCR_CTEIF3_Msk                           /*!< Channel 3 Transfer Error clear */\n#define BDMA_IFCR_CGIF4_Pos     (16U)\n#define BDMA_IFCR_CGIF4_Msk     (0x1UL << BDMA_IFCR_CGIF4_Pos)                 /*!< 0x00010000 */\n#define BDMA_IFCR_CGIF4         BDMA_IFCR_CGIF4_Msk                            /*!< Channel 4 Global interrupt clear */\n#define BDMA_IFCR_CTCIF4_Pos    (17U)\n#define BDMA_IFCR_CTCIF4_Msk    (0x1UL << BDMA_IFCR_CTCIF4_Pos)                /*!< 0x00020000 */\n#define BDMA_IFCR_CTCIF4        BDMA_IFCR_CTCIF4_Msk                           /*!< Channel 4 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF4_Pos    (18U)\n#define BDMA_IFCR_CHTIF4_Msk    (0x1UL << BDMA_IFCR_CHTIF4_Pos)                /*!< 0x00040000 */\n#define BDMA_IFCR_CHTIF4        BDMA_IFCR_CHTIF4_Msk                           /*!< Channel 4 Half Transfer clear */\n#define BDMA_IFCR_CTEIF4_Pos    (19U)\n#define BDMA_IFCR_CTEIF4_Msk    (0x1UL << BDMA_IFCR_CTEIF4_Pos)                /*!< 0x00080000 */\n#define BDMA_IFCR_CTEIF4        BDMA_IFCR_CTEIF4_Msk                           /*!< Channel 4 Transfer Error clear */\n#define BDMA_IFCR_CGIF5_Pos     (20U)\n#define BDMA_IFCR_CGIF5_Msk     (0x1UL << BDMA_IFCR_CGIF5_Pos)                 /*!< 0x00100000 */\n#define BDMA_IFCR_CGIF5         BDMA_IFCR_CGIF5_Msk                            /*!< Channel 5 Global interrupt clear */\n#define BDMA_IFCR_CTCIF5_Pos    (21U)\n#define BDMA_IFCR_CTCIF5_Msk    (0x1UL << BDMA_IFCR_CTCIF5_Pos)                /*!< 0x00200000 */\n#define BDMA_IFCR_CTCIF5        BDMA_IFCR_CTCIF5_Msk                           /*!< Channel 5 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF5_Pos    (22U)\n#define BDMA_IFCR_CHTIF5_Msk    (0x1UL << BDMA_IFCR_CHTIF5_Pos)                /*!< 0x00400000 */\n#define BDMA_IFCR_CHTIF5        BDMA_IFCR_CHTIF5_Msk                           /*!< Channel 5 Half Transfer clear */\n#define BDMA_IFCR_CTEIF5_Pos    (23U)\n#define BDMA_IFCR_CTEIF5_Msk    (0x1UL << BDMA_IFCR_CTEIF5_Pos)                /*!< 0x00800000 */\n#define BDMA_IFCR_CTEIF5        BDMA_IFCR_CTEIF5_Msk                           /*!< Channel 5 Transfer Error clear */\n#define BDMA_IFCR_CGIF6_Pos     (24U)\n#define BDMA_IFCR_CGIF6_Msk     (0x1UL << BDMA_IFCR_CGIF6_Pos)                 /*!< 0x01000000 */\n#define BDMA_IFCR_CGIF6         BDMA_IFCR_CGIF6_Msk                            /*!< Channel 6 Global interrupt clear */\n#define BDMA_IFCR_CTCIF6_Pos    (25U)\n#define BDMA_IFCR_CTCIF6_Msk    (0x1UL << BDMA_IFCR_CTCIF6_Pos)                /*!< 0x02000000 */\n#define BDMA_IFCR_CTCIF6        BDMA_IFCR_CTCIF6_Msk                           /*!< Channel 6 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF6_Pos    (26U)\n#define BDMA_IFCR_CHTIF6_Msk    (0x1UL << BDMA_IFCR_CHTIF6_Pos)                /*!< 0x04000000 */\n#define BDMA_IFCR_CHTIF6        BDMA_IFCR_CHTIF6_Msk                           /*!< Channel 6 Half Transfer clear */\n#define BDMA_IFCR_CTEIF6_Pos    (27U)\n#define BDMA_IFCR_CTEIF6_Msk    (0x1UL << BDMA_IFCR_CTEIF6_Pos)                /*!< 0x08000000 */\n#define BDMA_IFCR_CTEIF6        BDMA_IFCR_CTEIF6_Msk                           /*!< Channel 6 Transfer Error clear */\n#define BDMA_IFCR_CGIF7_Pos     (28U)\n#define BDMA_IFCR_CGIF7_Msk     (0x1UL << BDMA_IFCR_CGIF7_Pos)                 /*!< 0x10000000 */\n#define BDMA_IFCR_CGIF7         BDMA_IFCR_CGIF7_Msk                            /*!< Channel 7 Global interrupt clear */\n#define BDMA_IFCR_CTCIF7_Pos    (29U)\n#define BDMA_IFCR_CTCIF7_Msk    (0x1UL << BDMA_IFCR_CTCIF7_Pos)                /*!< 0x20000000 */\n#define BDMA_IFCR_CTCIF7        BDMA_IFCR_CTCIF7_Msk                           /*!< Channel 7 Transfer Complete clear */\n#define BDMA_IFCR_CHTIF7_Pos    (30U)\n#define BDMA_IFCR_CHTIF7_Msk    (0x1UL << BDMA_IFCR_CHTIF7_Pos)                /*!< 0x40000000 */\n#define BDMA_IFCR_CHTIF7        BDMA_IFCR_CHTIF7_Msk                           /*!< Channel 7 Half Transfer clear */\n#define BDMA_IFCR_CTEIF7_Pos    (31U)\n#define BDMA_IFCR_CTEIF7_Msk    (0x1UL << BDMA_IFCR_CTEIF7_Pos)                /*!< 0x80000000 */\n#define BDMA_IFCR_CTEIF7        BDMA_IFCR_CTEIF7_Msk                           /*!< Channel 7 Transfer Error clear */\n\n/*******************  Bit definition for BDMA_CCR register  ********************/\n#define BDMA_CCR_EN_Pos         (0U)\n#define BDMA_CCR_EN_Msk         (0x1UL << BDMA_CCR_EN_Pos)                     /*!< 0x00000001 */\n#define BDMA_CCR_EN             BDMA_CCR_EN_Msk                                /*!< Channel enable                      */\n#define BDMA_CCR_TCIE_Pos       (1U)\n#define BDMA_CCR_TCIE_Msk       (0x1UL << BDMA_CCR_TCIE_Pos)                   /*!< 0x00000002 */\n#define BDMA_CCR_TCIE           BDMA_CCR_TCIE_Msk                              /*!< Transfer complete interrupt enable  */\n#define BDMA_CCR_HTIE_Pos       (2U)\n#define BDMA_CCR_HTIE_Msk       (0x1UL << BDMA_CCR_HTIE_Pos)                   /*!< 0x00000004 */\n#define BDMA_CCR_HTIE           BDMA_CCR_HTIE_Msk                              /*!< Half Transfer interrupt enable      */\n#define BDMA_CCR_TEIE_Pos       (3U)\n#define BDMA_CCR_TEIE_Msk       (0x1UL << BDMA_CCR_TEIE_Pos)                   /*!< 0x00000008 */\n#define BDMA_CCR_TEIE           BDMA_CCR_TEIE_Msk                              /*!< Transfer error interrupt enable     */\n#define BDMA_CCR_DIR_Pos        (4U)\n#define BDMA_CCR_DIR_Msk        (0x1UL << BDMA_CCR_DIR_Pos)                    /*!< 0x00000010 */\n#define BDMA_CCR_DIR            BDMA_CCR_DIR_Msk                               /*!< Data transfer direction             */\n#define BDMA_CCR_CIRC_Pos       (5U)\n#define BDMA_CCR_CIRC_Msk       (0x1UL << BDMA_CCR_CIRC_Pos)                   /*!< 0x00000020 */\n#define BDMA_CCR_CIRC           BDMA_CCR_CIRC_Msk                              /*!< Circular mode                       */\n#define BDMA_CCR_PINC_Pos       (6U)\n#define BDMA_CCR_PINC_Msk       (0x1UL << BDMA_CCR_PINC_Pos)                   /*!< 0x00000040 */\n#define BDMA_CCR_PINC           BDMA_CCR_PINC_Msk                              /*!< Peripheral increment mode           */\n#define BDMA_CCR_MINC_Pos       (7U)\n#define BDMA_CCR_MINC_Msk       (0x1UL << BDMA_CCR_MINC_Pos)                   /*!< 0x00000080 */\n#define BDMA_CCR_MINC           BDMA_CCR_MINC_Msk                              /*!< Memory increment mode               */\n\n#define BDMA_CCR_PSIZE_Pos      (8U)\n#define BDMA_CCR_PSIZE_Msk      (0x3UL << BDMA_CCR_PSIZE_Pos)                  /*!< 0x00000300 */\n#define BDMA_CCR_PSIZE          BDMA_CCR_PSIZE_Msk                             /*!< PSIZE[1:0] bits (Peripheral size)   */\n#define BDMA_CCR_PSIZE_0        (0x1UL << BDMA_CCR_PSIZE_Pos)                   /*!< 0x00000100 */\n#define BDMA_CCR_PSIZE_1        (0x2UL << BDMA_CCR_PSIZE_Pos)                   /*!< 0x00000200 */\n\n#define BDMA_CCR_MSIZE_Pos      (10U)\n#define BDMA_CCR_MSIZE_Msk      (0x3UL << BDMA_CCR_MSIZE_Pos)                  /*!< 0x00000C00 */\n#define BDMA_CCR_MSIZE          BDMA_CCR_MSIZE_Msk                             /*!< MSIZE[1:0] bits (Memory size)       */\n#define BDMA_CCR_MSIZE_0        (0x1UL << BDMA_CCR_MSIZE_Pos)                   /*!< 0x00000400 */\n#define BDMA_CCR_MSIZE_1        (0x2UL << BDMA_CCR_MSIZE_Pos)                   /*!< 0x00000800 */\n\n#define BDMA_CCR_PL_Pos         (12U)\n#define BDMA_CCR_PL_Msk         (0x3UL << BDMA_CCR_PL_Pos)                     /*!< 0x00003000 */\n#define BDMA_CCR_PL             BDMA_CCR_PL_Msk                                /*!< PL[1:0] bits(Channel Priority level)*/\n#define BDMA_CCR_PL_0           (0x1UL << BDMA_CCR_PL_Pos)                      /*!< 0x00001000 */\n#define BDMA_CCR_PL_1           (0x2UL << BDMA_CCR_PL_Pos)                      /*!< 0x00002000 */\n\n#define BDMA_CCR_MEM2MEM_Pos    (14U)\n#define BDMA_CCR_MEM2MEM_Msk    (0x1UL << BDMA_CCR_MEM2MEM_Pos)                /*!< 0x00004000 */\n#define BDMA_CCR_MEM2MEM        BDMA_CCR_MEM2MEM_Msk                           /*!< Memory to memory mode               */\n#define BDMA_CCR_DBM_Pos        (15U)\n#define BDMA_CCR_DBM_Msk        (0x1UL << BDMA_CCR_DBM_Pos)                    /*!< 0x0000A000 */\n#define BDMA_CCR_DBM            BDMA_CCR_DBM_Msk                               /*!< Memory to memory mode               */\n#define BDMA_CCR_CT_Pos         (16U)\n#define BDMA_CCR_CT_Msk         (0x1UL << BDMA_CCR_CT_Pos)                     /*!< 0x00010000 */\n#define BDMA_CCR_CT             BDMA_CCR_CT_Msk                                /*!< Memory to memory mode               */\n\n/******************  Bit definition for BDMA_CNDTR register  *******************/\n#define BDMA_CNDTR_NDT_Pos      (0U)\n#define BDMA_CNDTR_NDT_Msk      (0xFFFFUL << BDMA_CNDTR_NDT_Pos)               /*!< 0x0000FFFF */\n#define BDMA_CNDTR_NDT          BDMA_CNDTR_NDT_Msk                             /*!< Number of data to Transfer          */\n\n/******************  Bit definition for BDMA_CPAR register  ********************/\n#define BDMA_CPAR_PA_Pos        (0U)\n#define BDMA_CPAR_PA_Msk        (0xFFFFFFFFUL << BDMA_CPAR_PA_Pos)             /*!< 0xFFFFFFFF */\n#define BDMA_CPAR_PA            BDMA_CPAR_PA_Msk                               /*!< Peripheral Address                  */\n\n/******************  Bit definition for BDMA_CM0AR register  ********************/\n#define BDMA_CM0AR_MA_Pos        (0U)\n#define BDMA_CM0AR_MA_Msk        (0xFFFFFFFFUL << BDMA_CM0AR_MA_Pos)             /*!< 0xFFFFFFFF */\n#define BDMA_CM0AR_MA            BDMA_CM0AR_MA_Msk                               /*!< Memory Address                      */\n\n/******************  Bit definition for BDMA_CM1AR register  ********************/\n#define BDMA_CM1AR_MA_Pos        (0U)\n#define BDMA_CM1AR_MA_Msk        (0xFFFFFFFFUL << BDMA_CM1AR_MA_Pos)             /*!< 0xFFFFFFFF */\n#define BDMA_CM1AR_MA            BDMA_CM1AR_MA_Msk                               /*!< Memory Address                      */\n\n/******************************************************************************/\n/*                                                                            */\n/*                Ethernet MAC Registers bits definitions                     */\n/*                                                                            */\n/******************************************************************************/\n/* Bit definition for Ethernet MAC Configuration Register register */\n#define ETH_MACCR_ARP_Pos                             (31U)\n#define ETH_MACCR_ARP_Msk                             (0x1UL << ETH_MACCR_ARP_Pos) /*!< 0x80000000 */\n#define ETH_MACCR_ARP                                 ETH_MACCR_ARP_Msk        /* ARP Offload Enable */\n#define ETH_MACCR_SARC_Pos                            (28U)\n#define ETH_MACCR_SARC_Msk                            (0x7UL << ETH_MACCR_SARC_Pos) /*!< 0x70000000 */\n#define ETH_MACCR_SARC                                ETH_MACCR_SARC_Msk       /* Source Address Insertion or Replacement Control */\n#define ETH_MACCR_SARC_MTIATI                         ((uint32_t)0x00000000)   /* The mti_sa_ctrl_i and ati_sa_ctrl_i input signals control the SA field generation. */\n#define ETH_MACCR_SARC_INSADDR0_Pos                   (29U)\n#define ETH_MACCR_SARC_INSADDR0_Msk                   (0x1UL << ETH_MACCR_SARC_INSADDR0_Pos) /*!< 0x20000000 */\n#define ETH_MACCR_SARC_INSADDR0                       ETH_MACCR_SARC_INSADDR0_Msk /* Insert MAC Address0 in the SA field of all transmitted packets. */\n#define ETH_MACCR_SARC_INSADDR1_Pos                   (29U)\n#define ETH_MACCR_SARC_INSADDR1_Msk                   (0x3UL << ETH_MACCR_SARC_INSADDR1_Pos) /*!< 0x60000000 */\n#define ETH_MACCR_SARC_INSADDR1                       ETH_MACCR_SARC_INSADDR1_Msk /* Insert MAC Address1 in the SA field of all transmitted packets. */\n#define ETH_MACCR_SARC_REPADDR0_Pos                   (28U)\n#define ETH_MACCR_SARC_REPADDR0_Msk                   (0x3UL << ETH_MACCR_SARC_REPADDR0_Pos) /*!< 0x30000000 */\n#define ETH_MACCR_SARC_REPADDR0                       ETH_MACCR_SARC_REPADDR0_Msk /* Replace MAC Address0 in the SA field of all transmitted packets. */\n#define ETH_MACCR_SARC_REPADDR1_Pos                   (28U)\n#define ETH_MACCR_SARC_REPADDR1_Msk                   (0x7UL << ETH_MACCR_SARC_REPADDR1_Pos) /*!< 0x70000000 */\n#define ETH_MACCR_SARC_REPADDR1                       ETH_MACCR_SARC_REPADDR1_Msk /* Replace MAC Address1 in the SA field of all transmitted packets. */\n#define ETH_MACCR_IPC_Pos                             (27U)\n#define ETH_MACCR_IPC_Msk                             (0x1UL << ETH_MACCR_IPC_Pos) /*!< 0x08000000 */\n#define ETH_MACCR_IPC                                 ETH_MACCR_IPC_Msk        /* Checksum Offload */\n#define ETH_MACCR_IPG_Pos                             (24U)\n#define ETH_MACCR_IPG_Msk                             (0x7UL << ETH_MACCR_IPG_Pos) /*!< 0x07000000 */\n#define ETH_MACCR_IPG                                 ETH_MACCR_IPG_Msk        /* Inter-Packet Gap */\n#define ETH_MACCR_IPG_96BIT                           ((uint32_t)0x00000000)   /* Minimum IFG between Packets during transmission is 96Bit */\n#define ETH_MACCR_IPG_88BIT                           ((uint32_t)0x01000000)   /* Minimum IFG between Packets during transmission is 88Bit */\n#define ETH_MACCR_IPG_80BIT                           ((uint32_t)0x02000000)   /* Minimum IFG between Packets during transmission is 80Bit */\n#define ETH_MACCR_IPG_72BIT                           ((uint32_t)0x03000000)   /* Minimum IFG between Packets during transmission is 72Bit */\n#define ETH_MACCR_IPG_64BIT                           ((uint32_t)0x04000000)   /* Minimum IFG between Packets during transmission is 64Bit */\n#define ETH_MACCR_IPG_56BIT                           ((uint32_t)0x05000000)   /* Minimum IFG between Packets during transmission is 56Bit */\n#define ETH_MACCR_IPG_48BIT                           ((uint32_t)0x06000000)   /* Minimum IFG between Packets during transmission is 48Bit */\n#define ETH_MACCR_IPG_40BIT                           ((uint32_t)0x07000000)   /* Minimum IFG between Packets during transmission is 40Bit */\n#define ETH_MACCR_GPSLCE_Pos                          (23U)\n#define ETH_MACCR_GPSLCE_Msk                          (0x1UL << ETH_MACCR_GPSLCE_Pos) /*!< 0x00800000 */\n#define ETH_MACCR_GPSLCE                              ETH_MACCR_GPSLCE_Msk     /* Giant Packet Size Limit Control Enable */\n#define ETH_MACCR_S2KP_Pos                            (22U)\n#define ETH_MACCR_S2KP_Msk                            (0x1UL << ETH_MACCR_S2KP_Pos) /*!< 0x00400000 */\n#define ETH_MACCR_S2KP                                ETH_MACCR_S2KP_Msk       /* IEEE 802.3as Support for 2K Packets */\n#define ETH_MACCR_CST_Pos                             (21U)\n#define ETH_MACCR_CST_Msk                             (0x1UL << ETH_MACCR_CST_Pos) /*!< 0x00200000 */\n#define ETH_MACCR_CST                                 ETH_MACCR_CST_Msk        /* CRC stripping for Type packets */\n#define ETH_MACCR_ACS_Pos                             (20U)\n#define ETH_MACCR_ACS_Msk                             (0x1UL << ETH_MACCR_ACS_Pos) /*!< 0x00100000 */\n#define ETH_MACCR_ACS                                 ETH_MACCR_ACS_Msk        /* Automatic Pad or CRC Stripping */\n#define ETH_MACCR_WD_Pos                              (19U)\n#define ETH_MACCR_WD_Msk                              (0x1UL << ETH_MACCR_WD_Pos) /*!< 0x00080000 */\n#define ETH_MACCR_WD                                  ETH_MACCR_WD_Msk         /* Watchdog disable */\n#define ETH_MACCR_JD_Pos                              (17U)\n#define ETH_MACCR_JD_Msk                              (0x1UL << ETH_MACCR_JD_Pos) /*!< 0x00020000 */\n#define ETH_MACCR_JD                                  ETH_MACCR_JD_Msk         /* Jabber disable */\n#define ETH_MACCR_JE_Pos                              (16U)\n#define ETH_MACCR_JE_Msk                              (0x1UL << ETH_MACCR_JE_Pos) /*!< 0x00010000 */\n#define ETH_MACCR_JE                                  ETH_MACCR_JE_Msk         /* Jumbo Packet Enable */\n#define ETH_MACCR_FES_Pos                             (14U)\n#define ETH_MACCR_FES_Msk                             (0x1UL << ETH_MACCR_FES_Pos) /*!< 0x00004000 */\n#define ETH_MACCR_FES                                 ETH_MACCR_FES_Msk        /* Fast ethernet speed */\n#define ETH_MACCR_DM_Pos                              (13U)\n#define ETH_MACCR_DM_Msk                              (0x1UL << ETH_MACCR_DM_Pos) /*!< 0x00002000 */\n#define ETH_MACCR_DM                                  ETH_MACCR_DM_Msk         /* Duplex mode */\n#define ETH_MACCR_LM_Pos                              (12U)\n#define ETH_MACCR_LM_Msk                              (0x1UL << ETH_MACCR_LM_Pos) /*!< 0x00001000 */\n#define ETH_MACCR_LM                                  ETH_MACCR_LM_Msk         /* loopback mode */\n#define ETH_MACCR_ECRSFD_Pos                          (11U)\n#define ETH_MACCR_ECRSFD_Msk                          (0x1UL << ETH_MACCR_ECRSFD_Pos) /*!< 0x00000800 */\n#define ETH_MACCR_ECRSFD                              ETH_MACCR_ECRSFD_Msk     /* Enable Carrier Sense Before Transmission in Full-Duplex Mode */\n#define ETH_MACCR_DO_Pos                              (10U)\n#define ETH_MACCR_DO_Msk                              (0x1UL << ETH_MACCR_DO_Pos) /*!< 0x00000400 */\n#define ETH_MACCR_DO                                  ETH_MACCR_DO_Msk         /* Disable Receive own  */\n#define ETH_MACCR_DCRS_Pos                            (9U)\n#define ETH_MACCR_DCRS_Msk                            (0x1UL << ETH_MACCR_DCRS_Pos) /*!< 0x00000200 */\n#define ETH_MACCR_DCRS                                ETH_MACCR_DCRS_Msk       /* Disable Carrier Sense During Transmission */\n#define ETH_MACCR_DR_Pos                              (8U)\n#define ETH_MACCR_DR_Msk                              (0x1UL << ETH_MACCR_DR_Pos) /*!< 0x00000100 */\n#define ETH_MACCR_DR                                  ETH_MACCR_DR_Msk         /* Disable Retry */\n#define ETH_MACCR_BL_Pos                              (5U)\n#define ETH_MACCR_BL_Msk                              (0x3UL << ETH_MACCR_BL_Pos) /*!< 0x00000060 */\n#define ETH_MACCR_BL                                  ETH_MACCR_BL_Msk         /* Back-off limit mask */\n#define ETH_MACCR_BL_10                               (0x0UL << ETH_MACCR_BL_Pos) /*!< 0x00000000 */\n#define ETH_MACCR_BL_8                                (0x1UL << ETH_MACCR_BL_Pos) /*!< 0x00000020 */\n#define ETH_MACCR_BL_4                                (0x2UL << ETH_MACCR_BL_Pos) /*!< 0x00000040 */\n#define ETH_MACCR_BL_1                                (0x3UL << ETH_MACCR_BL_Pos) /*!< 0x00000060 */\n#define ETH_MACCR_DC_Pos                              (4U)\n#define ETH_MACCR_DC_Msk                              (0x1UL << ETH_MACCR_DC_Pos) /*!< 0x00000010 */\n#define ETH_MACCR_DC                                  ETH_MACCR_DC_Msk         /* Defferal check */\n#define ETH_MACCR_PRELEN_Pos                          (2U)\n#define ETH_MACCR_PRELEN_Msk                          (0x3UL << ETH_MACCR_PRELEN_Pos) /*!< 0x0000000C */\n#define ETH_MACCR_PRELEN                              ETH_MACCR_PRELEN_Msk     /* Preamble Length for Transmit packets */\n#define ETH_MACCR_PRELEN_7                            (0x0UL << ETH_MACCR_PRELEN_Pos) /*!< 0x00000000 */\n#define ETH_MACCR_PRELEN_5                            (0x1UL << ETH_MACCR_PRELEN_Pos) /*!< 0x00000004 */\n#define ETH_MACCR_PRELEN_3                            (0x2UL << ETH_MACCR_PRELEN_Pos) /*!< 0x00000008 */\n#define ETH_MACCR_TE_Pos                              (1U)\n#define ETH_MACCR_TE_Msk                              (0x1UL << ETH_MACCR_TE_Pos) /*!< 0x00000002 */\n#define ETH_MACCR_TE                                  ETH_MACCR_TE_Msk         /* Transmitter enable */\n#define ETH_MACCR_RE_Pos                              (0U)\n#define ETH_MACCR_RE_Msk                              (0x1UL << ETH_MACCR_RE_Pos) /*!< 0x00000001 */\n#define ETH_MACCR_RE                                  ETH_MACCR_RE_Msk         /* Receiver enable */\n\n/* Bit definition for Ethernet MAC Extended Configuration Register register */\n#define ETH_MACECR_EIPG_Pos                           (25U)\n#define ETH_MACECR_EIPG_Msk                           (0x1FUL << ETH_MACECR_EIPG_Pos) /*!< 0x3E000000 */\n#define ETH_MACECR_EIPG                               ETH_MACECR_EIPG_Msk      /* Extended Inter-Packet Gap */\n#define ETH_MACECR_EIPGEN_Pos                         (24U)\n#define ETH_MACECR_EIPGEN_Msk                         (0x1UL << ETH_MACECR_EIPGEN_Pos) /*!< 0x01000000 */\n#define ETH_MACECR_EIPGEN                             ETH_MACECR_EIPGEN_Msk    /* Extended Inter-Packet Gap Enable */\n#define ETH_MACECR_USP_Pos                            (18U)\n#define ETH_MACECR_USP_Msk                            (0x1UL << ETH_MACECR_USP_Pos) /*!< 0x00040000 */\n#define ETH_MACECR_USP                                ETH_MACECR_USP_Msk       /* Unicast Slow Protocol Packet Detect */\n#define ETH_MACECR_SPEN_Pos                           (17U)\n#define ETH_MACECR_SPEN_Msk                           (0x1UL << ETH_MACECR_SPEN_Pos) /*!< 0x00020000 */\n#define ETH_MACECR_SPEN                               ETH_MACECR_SPEN_Msk      /* Slow Protocol Detection Enable */\n#define ETH_MACECR_DCRCC_Pos                          (16U)\n#define ETH_MACECR_DCRCC_Msk                          (0x1UL << ETH_MACECR_DCRCC_Pos) /*!< 0x00010000 */\n#define ETH_MACECR_DCRCC                              ETH_MACECR_DCRCC_Msk     /* Disable CRC Checking for Received Packets */\n#define ETH_MACECR_GPSL_Pos                           (0U)\n#define ETH_MACECR_GPSL_Msk                           (0x3FFFUL << ETH_MACECR_GPSL_Pos) /*!< 0x00003FFF */\n#define ETH_MACECR_GPSL                               ETH_MACECR_GPSL_Msk      /* Giant Packet Size Limit */\n\n/* Bit definition for Ethernet MAC Packet Filter Register */\n#define ETH_MACPFR_RA_Pos                             (31U)\n#define ETH_MACPFR_RA_Msk                             (0x1UL << ETH_MACPFR_RA_Pos) /*!< 0x80000000 */\n#define ETH_MACPFR_RA                                 ETH_MACPFR_RA_Msk        /* Receive all */\n#define ETH_MACPFR_DNTU_Pos                           (21U)\n#define ETH_MACPFR_DNTU_Msk                           (0x1UL << ETH_MACPFR_DNTU_Pos) /*!< 0x00200000 */\n#define ETH_MACPFR_DNTU                               ETH_MACPFR_DNTU_Msk      /* Drop Non-TCP/UDP over IP Packets */\n#define ETH_MACPFR_IPFE_Pos                           (20U)\n#define ETH_MACPFR_IPFE_Msk                           (0x1UL << ETH_MACPFR_IPFE_Pos) /*!< 0x00100000 */\n#define ETH_MACPFR_IPFE                               ETH_MACPFR_IPFE_Msk      /* Layer 3 and Layer 4 Filter Enable */\n#define ETH_MACPFR_VTFE_Pos                           (16U)\n#define ETH_MACPFR_VTFE_Msk                           (0x1UL << ETH_MACPFR_VTFE_Pos) /*!< 0x00010000 */\n#define ETH_MACPFR_VTFE                               ETH_MACPFR_VTFE_Msk      /* VLAN Tag Filter Enable */\n#define ETH_MACPFR_HPF_Pos                            (10U)\n#define ETH_MACPFR_HPF_Msk                            (0x1UL << ETH_MACPFR_HPF_Pos) /*!< 0x00000400 */\n#define ETH_MACPFR_HPF                                ETH_MACPFR_HPF_Msk       /* Hash or perfect filter */\n#define ETH_MACPFR_SAF_Pos                            (9U)\n#define ETH_MACPFR_SAF_Msk                            (0x1UL << ETH_MACPFR_SAF_Pos) /*!< 0x00000200 */\n#define ETH_MACPFR_SAF                                ETH_MACPFR_SAF_Msk       /* Source address filter enable */\n#define ETH_MACPFR_SAIF_Pos                           (8U)\n#define ETH_MACPFR_SAIF_Msk                           (0x1UL << ETH_MACPFR_SAIF_Pos) /*!< 0x00000100 */\n#define ETH_MACPFR_SAIF                               ETH_MACPFR_SAIF_Msk      /* SA inverse filtering */\n#define ETH_MACPFR_PCF_Pos                            (6U)\n#define ETH_MACPFR_PCF_Msk                            (0x3UL << ETH_MACPFR_PCF_Pos) /*!< 0x000000C0 */\n#define ETH_MACPFR_PCF                                ETH_MACPFR_PCF_Msk       /* Pass control frames: 4 cases */\n#define ETH_MACPFR_PCF_BLOCKALL                       ((uint32_t)0x00000000)   /* MAC filters all control frames from reaching the application */\n#define ETH_MACPFR_PCF_FORWARDALLEXCEPTPA_Pos         (6U)\n#define ETH_MACPFR_PCF_FORWARDALLEXCEPTPA_Msk         (0x1UL << ETH_MACPFR_PCF_FORWARDALLEXCEPTPA_Pos) /*!< 0x00000040 */\n#define ETH_MACPFR_PCF_FORWARDALLEXCEPTPA             ETH_MACPFR_PCF_FORWARDALLEXCEPTPA_Msk /* MAC forwards all control frames except Pause packets to application even if they fail the Address Filter */\n#define ETH_MACPFR_PCF_FORWARDALL_Pos                 (7U)\n#define ETH_MACPFR_PCF_FORWARDALL_Msk                 (0x1UL << ETH_MACPFR_PCF_FORWARDALL_Pos) /*!< 0x00000080 */\n#define ETH_MACPFR_PCF_FORWARDALL                     ETH_MACPFR_PCF_FORWARDALL_Msk /* MAC forwards all control frames to application even if they fail the Address Filter */\n#define ETH_MACPFR_PCF_FORWARDPASSEDADDRFILTER_Pos    (6U)\n#define ETH_MACPFR_PCF_FORWARDPASSEDADDRFILTER_Msk    (0x3UL << ETH_MACPFR_PCF_FORWARDPASSEDADDRFILTER_Pos) /*!< 0x000000C0 */\n#define ETH_MACPFR_PCF_FORWARDPASSEDADDRFILTER        ETH_MACPFR_PCF_FORWARDPASSEDADDRFILTER_Msk /* MAC forwards control frames that pass the Address Filter. */\n#define ETH_MACPFR_DBF_Pos                            (5U)\n#define ETH_MACPFR_DBF_Msk                            (0x1UL << ETH_MACPFR_DBF_Pos) /*!< 0x00000020 */\n#define ETH_MACPFR_DBF                                ETH_MACPFR_DBF_Msk       /* Disable Broadcast Packets */\n#define ETH_MACPFR_PM_Pos                             (4U)\n#define ETH_MACPFR_PM_Msk                             (0x1UL << ETH_MACPFR_PM_Pos) /*!< 0x00000010 */\n#define ETH_MACPFR_PM                                 ETH_MACPFR_PM_Msk        /* Pass all mutlicast */\n#define ETH_MACPFR_DAIF_Pos                           (3U)\n#define ETH_MACPFR_DAIF_Msk                           (0x1UL << ETH_MACPFR_DAIF_Pos) /*!< 0x00000008 */\n#define ETH_MACPFR_DAIF                               ETH_MACPFR_DAIF_Msk      /* DA Inverse filtering */\n#define ETH_MACPFR_HMC_Pos                            (2U)\n#define ETH_MACPFR_HMC_Msk                            (0x1UL << ETH_MACPFR_HMC_Pos) /*!< 0x00000004 */\n#define ETH_MACPFR_HMC                                ETH_MACPFR_HMC_Msk       /* Hash multicast */\n#define ETH_MACPFR_HUC_Pos                            (1U)\n#define ETH_MACPFR_HUC_Msk                            (0x1UL << ETH_MACPFR_HUC_Pos) /*!< 0x00000002 */\n#define ETH_MACPFR_HUC                                ETH_MACPFR_HUC_Msk       /* Hash unicast */\n#define ETH_MACPFR_PR_Pos                             (0U)\n#define ETH_MACPFR_PR_Msk                             (0x1UL << ETH_MACPFR_PR_Pos) /*!< 0x00000001 */\n#define ETH_MACPFR_PR                                 ETH_MACPFR_PR_Msk        /* Promiscuous mode */\n\n/* Bit definition for Ethernet MAC Watchdog Timeout Register */\n#define ETH_MACWTR_PWE_Pos                            (8U)\n#define ETH_MACWTR_PWE_Msk                            (0x1UL << ETH_MACWTR_PWE_Pos) /*!< 0x00000100 */\n#define ETH_MACWTR_PWE                                ETH_MACWTR_PWE_Msk       /* Programmable Watchdog Enable */\n#define ETH_MACWTR_WTO_Pos                            (0U)\n#define ETH_MACWTR_WTO_Msk                            (0xFUL << ETH_MACWTR_WTO_Pos) /*!< 0x0000000F */\n#define ETH_MACWTR_WTO                                ETH_MACWTR_WTO_Msk       /* Watchdog Timeout */\n#define ETH_MACWTR_WTO_2KB                            ((uint32_t)0x00000000)   /* Maximum received packet length 2KB*/\n#define ETH_MACWTR_WTO_3KB                            ((uint32_t)0x00000001)   /* Maximum received packet length 3KB */\n#define ETH_MACWTR_WTO_4KB                            ((uint32_t)0x00000002)   /* Maximum received packet length 4KB */\n#define ETH_MACWTR_WTO_5KB                            ((uint32_t)0x00000003)   /* Maximum received packet length 5KB */\n#define ETH_MACWTR_WTO_6KB                            ((uint32_t)0x00000004)   /* Maximum received packet length 6KB */\n#define ETH_MACWTR_WTO_7KB                            ((uint32_t)0x00000005)   /* Maximum received packet length 7KB */\n#define ETH_MACWTR_WTO_8KB                            ((uint32_t)0x00000006)   /* Maximum received packet length 8KB */\n#define ETH_MACWTR_WTO_9KB                            ((uint32_t)0x00000007)   /* Maximum received packet length 9KB */\n#define ETH_MACWTR_WTO_10KB                           ((uint32_t)0x00000008)   /* Maximum received packet length 10KB */\n#define ETH_MACWTR_WTO_11KB                           ((uint32_t)0x00000009)   /* Maximum received packet length 11KB */\n#define ETH_MACWTR_WTO_12KB                           ((uint32_t)0x0000000A)   /* Maximum received packet length 12KB */\n#define ETH_MACWTR_WTO_13KB                           ((uint32_t)0x0000000B)   /* Maximum received packet length 13KB */\n#define ETH_MACWTR_WTO_14KB                           ((uint32_t)0x0000000C)   /* Maximum received packet length 14KB */\n#define ETH_MACWTR_WTO_15KB                           ((uint32_t)0x0000000D)   /* Maximum received packet length 15KB */\n#define ETH_MACWTR_WTO_16KB                           ((uint32_t)0x0000000E)   /* Maximum received packet length 16KB */\n\n/* Bit definition for Ethernet MAC Hash Table High Register */\n#define ETH_MACHTHR_HTH_Pos                           (0U)\n#define ETH_MACHTHR_HTH_Msk                           (0xFFFFFFFFUL << ETH_MACHTHR_HTH_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACHTHR_HTH                               ETH_MACHTHR_HTH_Msk      /* Hash table high */\n\n/* Bit definition for Ethernet MAC Hash Table Low Register */\n#define ETH_MACHTLR_HTL_Pos                           (0U)\n#define ETH_MACHTLR_HTL_Msk                           (0xFFFFFFFFUL << ETH_MACHTLR_HTL_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACHTLR_HTL                               ETH_MACHTLR_HTL_Msk      /* Hash table low */\n\n/* Bit definition for Ethernet MAC VLAN Tag Register */\n#define ETH_MACVTR_EIVLRXS_Pos                        (31U)\n#define ETH_MACVTR_EIVLRXS_Msk                        (0x1UL << ETH_MACVTR_EIVLRXS_Pos) /*!< 0x80000000 */\n#define ETH_MACVTR_EIVLRXS                            ETH_MACVTR_EIVLRXS_Msk   /* Enable Inner VLAN Tag in Rx Status */\n#define ETH_MACVTR_EIVLS_Pos                          (28U)\n#define ETH_MACVTR_EIVLS_Msk                          (0x3UL << ETH_MACVTR_EIVLS_Pos) /*!< 0x30000000 */\n#define ETH_MACVTR_EIVLS                              ETH_MACVTR_EIVLS_Msk     /* Enable Inner VLAN Tag Stripping on Receive */\n#define ETH_MACVTR_EIVLS_DONOTSTRIP                   ((uint32_t)0x00000000)   /* Do not strip */\n#define ETH_MACVTR_EIVLS_STRIPIFPASS_Pos              (28U)\n#define ETH_MACVTR_EIVLS_STRIPIFPASS_Msk              (0x1UL << ETH_MACVTR_EIVLS_STRIPIFPASS_Pos) /*!< 0x10000000 */\n#define ETH_MACVTR_EIVLS_STRIPIFPASS                  ETH_MACVTR_EIVLS_STRIPIFPASS_Msk /* Strip if VLAN filter passes */\n#define ETH_MACVTR_EIVLS_STRIPIFFAILS_Pos             (29U)\n#define ETH_MACVTR_EIVLS_STRIPIFFAILS_Msk             (0x1UL << ETH_MACVTR_EIVLS_STRIPIFFAILS_Pos) /*!< 0x20000000 */\n#define ETH_MACVTR_EIVLS_STRIPIFFAILS                 ETH_MACVTR_EIVLS_STRIPIFFAILS_Msk /* Strip if VLAN filter fails */\n#define ETH_MACVTR_EIVLS_ALWAYSSTRIP_Pos              (28U)\n#define ETH_MACVTR_EIVLS_ALWAYSSTRIP_Msk              (0x3UL << ETH_MACVTR_EIVLS_ALWAYSSTRIP_Pos) /*!< 0x30000000 */\n#define ETH_MACVTR_EIVLS_ALWAYSSTRIP                  ETH_MACVTR_EIVLS_ALWAYSSTRIP_Msk /* Always strip */\n#define ETH_MACVTR_ERIVLT_Pos                         (27U)\n#define ETH_MACVTR_ERIVLT_Msk                         (0x1UL << ETH_MACVTR_ERIVLT_Pos) /*!< 0x08000000 */\n#define ETH_MACVTR_ERIVLT                             ETH_MACVTR_ERIVLT_Msk    /* Enable Inner VLAN Tag */\n#define ETH_MACVTR_EDVLP_Pos                          (26U)\n#define ETH_MACVTR_EDVLP_Msk                          (0x1UL << ETH_MACVTR_EDVLP_Pos) /*!< 0x04000000 */\n#define ETH_MACVTR_EDVLP                              ETH_MACVTR_EDVLP_Msk     /* Enable Double VLAN Processing */\n#define ETH_MACVTR_VTHM_Pos                           (25U)\n#define ETH_MACVTR_VTHM_Msk                           (0x1UL << ETH_MACVTR_VTHM_Pos) /*!< 0x02000000 */\n#define ETH_MACVTR_VTHM                               ETH_MACVTR_VTHM_Msk      /* VLAN Tag Hash Table Match Enable */\n#define ETH_MACVTR_EVLRXS_Pos                         (24U)\n#define ETH_MACVTR_EVLRXS_Msk                         (0x1UL << ETH_MACVTR_EVLRXS_Pos) /*!< 0x01000000 */\n#define ETH_MACVTR_EVLRXS                             ETH_MACVTR_EVLRXS_Msk    /* Enable VLAN Tag in Rx status */\n#define ETH_MACVTR_EVLS_Pos                           (21U)\n#define ETH_MACVTR_EVLS_Msk                           (0x3UL << ETH_MACVTR_EVLS_Pos) /*!< 0x00600000 */\n#define ETH_MACVTR_EVLS                               ETH_MACVTR_EVLS_Msk      /* Enable VLAN Tag Stripping on Receive */\n#define ETH_MACVTR_EVLS_DONOTSTRIP                    ((uint32_t)0x00000000)   /* Do not strip */\n#define ETH_MACVTR_EVLS_STRIPIFPASS_Pos               (21U)\n#define ETH_MACVTR_EVLS_STRIPIFPASS_Msk               (0x1UL << ETH_MACVTR_EVLS_STRIPIFPASS_Pos) /*!< 0x00200000 */\n#define ETH_MACVTR_EVLS_STRIPIFPASS                   ETH_MACVTR_EVLS_STRIPIFPASS_Msk /* Strip if VLAN filter passes */\n#define ETH_MACVTR_EVLS_STRIPIFFAILS_Pos              (22U)\n#define ETH_MACVTR_EVLS_STRIPIFFAILS_Msk              (0x1UL << ETH_MACVTR_EVLS_STRIPIFFAILS_Pos) /*!< 0x00400000 */\n#define ETH_MACVTR_EVLS_STRIPIFFAILS                  ETH_MACVTR_EVLS_STRIPIFFAILS_Msk /* Strip if VLAN filter fails */\n#define ETH_MACVTR_EVLS_ALWAYSSTRIP_Pos               (21U)\n#define ETH_MACVTR_EVLS_ALWAYSSTRIP_Msk               (0x3UL << ETH_MACVTR_EVLS_ALWAYSSTRIP_Pos) /*!< 0x00600000 */\n#define ETH_MACVTR_EVLS_ALWAYSSTRIP                   ETH_MACVTR_EVLS_ALWAYSSTRIP_Msk /* Always strip */\n#define ETH_MACVTR_DOVLTC_Pos                         (20U)\n#define ETH_MACVTR_DOVLTC_Msk                         (0x1UL << ETH_MACVTR_DOVLTC_Pos) /*!< 0x00100000 */\n#define ETH_MACVTR_DOVLTC                             ETH_MACVTR_DOVLTC_Msk    /* Disable VLAN Type Check */\n#define ETH_MACVTR_ERSVLM_Pos                         (19U)\n#define ETH_MACVTR_ERSVLM_Msk                         (0x1UL << ETH_MACVTR_ERSVLM_Pos) /*!< 0x00080000 */\n#define ETH_MACVTR_ERSVLM                             ETH_MACVTR_ERSVLM_Msk    /* Enable Receive S-VLAN Match */\n#define ETH_MACVTR_ESVL_Pos                           (18U)\n#define ETH_MACVTR_ESVL_Msk                           (0x1UL << ETH_MACVTR_ESVL_Pos) /*!< 0x00040000 */\n#define ETH_MACVTR_ESVL                               ETH_MACVTR_ESVL_Msk      /* Enable S-VLAN */\n#define ETH_MACVTR_VTIM_Pos                           (17U)\n#define ETH_MACVTR_VTIM_Msk                           (0x1UL << ETH_MACVTR_VTIM_Pos) /*!< 0x00020000 */\n#define ETH_MACVTR_VTIM                               ETH_MACVTR_VTIM_Msk      /* VLAN Tag Inverse Match Enable */\n#define ETH_MACVTR_ETV_Pos                            (16U)\n#define ETH_MACVTR_ETV_Msk                            (0x1UL << ETH_MACVTR_ETV_Pos) /*!< 0x00010000 */\n#define ETH_MACVTR_ETV                                ETH_MACVTR_ETV_Msk       /* Enable 12-Bit VLAN Tag Comparison */\n#define ETH_MACVTR_VL_Pos                             (0U)\n#define ETH_MACVTR_VL_Msk                             (0xFFFFUL << ETH_MACVTR_VL_Pos) /*!< 0x0000FFFF */\n#define ETH_MACVTR_VL                                 ETH_MACVTR_VL_Msk        /* VLAN Tag Identifier for Receive Packets */\n#define ETH_MACVTR_VL_UP_Pos                          (13U)\n#define ETH_MACVTR_VL_UP_Msk                          (0x7UL << ETH_MACVTR_VL_UP_Pos) /*!< 0x0000E000 */\n#define ETH_MACVTR_VL_UP                              ETH_MACVTR_VL_UP_Msk     /* User Priority */\n#define ETH_MACVTR_VL_CFIDEI_Pos                      (12U)\n#define ETH_MACVTR_VL_CFIDEI_Msk                      (0x1UL << ETH_MACVTR_VL_CFIDEI_Pos) /*!< 0x00001000 */\n#define ETH_MACVTR_VL_CFIDEI                          ETH_MACVTR_VL_CFIDEI_Msk /* Canonical Format Indicator or Drop Eligible Indicator */\n#define ETH_MACVTR_VL_VID_Pos                         (0U)\n#define ETH_MACVTR_VL_VID_Msk                         (0xFFFUL << ETH_MACVTR_VL_VID_Pos) /*!< 0x00000FFF */\n#define ETH_MACVTR_VL_VID                             ETH_MACVTR_VL_VID_Msk    /* VLAN Identifier field of VLAN tag */\n\n/* Bit definition for Ethernet MAC VLAN Hash Table Register */\n#define ETH_MACVHTR_VLHT_Pos                          (0U)\n#define ETH_MACVHTR_VLHT_Msk                          (0xFFFFUL << ETH_MACVHTR_VLHT_Pos) /*!< 0x0000FFFF */\n#define ETH_MACVHTR_VLHT                              ETH_MACVHTR_VLHT_Msk     /* VLAN Hash Table */\n\n/* Bit definition for Ethernet MAC VLAN Incl Register */\n#define ETH_MACVIR_VLTI_Pos                           (20U)\n#define ETH_MACVIR_VLTI_Msk                           (0x1UL << ETH_MACVIR_VLTI_Pos) /*!< 0x00100000 */\n#define ETH_MACVIR_VLTI                               ETH_MACVIR_VLTI_Msk      /* VLAN Tag Input */\n#define ETH_MACVIR_CSVL_Pos                           (19U)\n#define ETH_MACVIR_CSVL_Msk                           (0x1UL << ETH_MACVIR_CSVL_Pos) /*!< 0x00080000 */\n#define ETH_MACVIR_CSVL                               ETH_MACVIR_CSVL_Msk      /* C-VLAN or S-VLAN */\n#define ETH_MACVIR_VLP_Pos                            (18U)\n#define ETH_MACVIR_VLP_Msk                            (0x1UL << ETH_MACVIR_VLP_Pos) /*!< 0x00040000 */\n#define ETH_MACVIR_VLP                                ETH_MACVIR_VLP_Msk       /* VLAN Priority Control */\n#define ETH_MACVIR_VLC_Pos                            (16U)\n#define ETH_MACVIR_VLC_Msk                            (0x3UL << ETH_MACVIR_VLC_Pos) /*!< 0x00030000 */\n#define ETH_MACVIR_VLC                                ETH_MACVIR_VLC_Msk       /* VLAN Tag Control in Transmit Packets */\n#define ETH_MACVIR_VLC_NOVLANTAG                      ((uint32_t)0x00000000)   /* No VLAN tag deletion, insertion, or replacement */\n#define ETH_MACVIR_VLC_VLANTAGDELETE_Pos              (16U)\n#define ETH_MACVIR_VLC_VLANTAGDELETE_Msk              (0x1UL << ETH_MACVIR_VLC_VLANTAGDELETE_Pos) /*!< 0x00010000 */\n#define ETH_MACVIR_VLC_VLANTAGDELETE                  ETH_MACVIR_VLC_VLANTAGDELETE_Msk /* VLAN tag deletion */\n#define ETH_MACVIR_VLC_VLANTAGINSERT_Pos              (17U)\n#define ETH_MACVIR_VLC_VLANTAGINSERT_Msk              (0x1UL << ETH_MACVIR_VLC_VLANTAGINSERT_Pos) /*!< 0x00020000 */\n#define ETH_MACVIR_VLC_VLANTAGINSERT                  ETH_MACVIR_VLC_VLANTAGINSERT_Msk /* VLAN tag insertion */\n#define ETH_MACVIR_VLC_VLANTAGREPLACE_Pos             (16U)\n#define ETH_MACVIR_VLC_VLANTAGREPLACE_Msk             (0x3UL << ETH_MACVIR_VLC_VLANTAGREPLACE_Pos) /*!< 0x00030000 */\n#define ETH_MACVIR_VLC_VLANTAGREPLACE                 ETH_MACVIR_VLC_VLANTAGREPLACE_Msk /* VLAN tag replacement */\n#define ETH_MACVIR_VLT_Pos                            (0U)\n#define ETH_MACVIR_VLT_Msk                            (0xFFFFUL << ETH_MACVIR_VLT_Pos) /*!< 0x0000FFFF */\n#define ETH_MACVIR_VLT                                ETH_MACVIR_VLT_Msk       /* VLAN Tag for Transmit Packets */\n#define ETH_MACVIR_VLT_UP_Pos                         (13U)\n#define ETH_MACVIR_VLT_UP_Msk                         (0x7UL << ETH_MACVIR_VLT_UP_Pos) /*!< 0x0000E000 */\n#define ETH_MACVIR_VLT_UP                             ETH_MACVIR_VLT_UP_Msk    /* User Priority */\n#define ETH_MACVIR_VLT_CFIDEI_Pos                     (12U)\n#define ETH_MACVIR_VLT_CFIDEI_Msk                     (0x1UL << ETH_MACVIR_VLT_CFIDEI_Pos) /*!< 0x00001000 */\n#define ETH_MACVIR_VLT_CFIDEI                         ETH_MACVIR_VLT_CFIDEI_Msk /* Canonical Format Indicator or Drop Eligible Indicator */\n#define ETH_MACVIR_VLT_VID_Pos                        (0U)\n#define ETH_MACVIR_VLT_VID_Msk                        (0xFFFUL << ETH_MACVIR_VLT_VID_Pos) /*!< 0x00000FFF */\n#define ETH_MACVIR_VLT_VID                            ETH_MACVIR_VLT_VID_Msk   /* VLAN Identifier field of VLAN tag */\n\n/* Bit definition for Ethernet MAC Inner_VLAN Incl Register */\n#define ETH_MACIVIR_VLTI_Pos                          (20U)\n#define ETH_MACIVIR_VLTI_Msk                          (0x1UL << ETH_MACIVIR_VLTI_Pos) /*!< 0x00100000 */\n#define ETH_MACIVIR_VLTI                              ETH_MACIVIR_VLTI_Msk     /* VLAN Tag Input */\n#define ETH_MACIVIR_CSVL_Pos                          (19U)\n#define ETH_MACIVIR_CSVL_Msk                          (0x1UL << ETH_MACIVIR_CSVL_Pos) /*!< 0x00080000 */\n#define ETH_MACIVIR_CSVL                              ETH_MACIVIR_CSVL_Msk     /* C-VLAN or S-VLAN */\n#define ETH_MACIVIR_VLP_Pos                           (18U)\n#define ETH_MACIVIR_VLP_Msk                           (0x1UL << ETH_MACIVIR_VLP_Pos) /*!< 0x00040000 */\n#define ETH_MACIVIR_VLP                               ETH_MACIVIR_VLP_Msk      /* VLAN Priority Control */\n#define ETH_MACIVIR_VLC_Pos                           (16U)\n#define ETH_MACIVIR_VLC_Msk                           (0x3UL << ETH_MACIVIR_VLC_Pos) /*!< 0x00030000 */\n#define ETH_MACIVIR_VLC                               ETH_MACIVIR_VLC_Msk      /* VLAN Tag Control in Transmit Packets */\n#define ETH_MACIVIR_VLC_NOVLANTAG                     ((uint32_t)0x00000000)   /* No VLAN tag deletion, insertion, or replacement */\n#define ETH_MACIVIR_VLC_VLANTAGDELETE_Pos             (16U)\n#define ETH_MACIVIR_VLC_VLANTAGDELETE_Msk             (0x1UL << ETH_MACIVIR_VLC_VLANTAGDELETE_Pos) /*!< 0x00010000 */\n#define ETH_MACIVIR_VLC_VLANTAGDELETE                 ETH_MACIVIR_VLC_VLANTAGDELETE_Msk /* VLAN tag deletion */\n#define ETH_MACIVIR_VLC_VLANTAGINSERT_Pos             (17U)\n#define ETH_MACIVIR_VLC_VLANTAGINSERT_Msk             (0x1UL << ETH_MACIVIR_VLC_VLANTAGINSERT_Pos) /*!< 0x00020000 */\n#define ETH_MACIVIR_VLC_VLANTAGINSERT                 ETH_MACIVIR_VLC_VLANTAGINSERT_Msk /* VLAN tag insertion */\n#define ETH_MACIVIR_VLC_VLANTAGREPLACE_Pos            (16U)\n#define ETH_MACIVIR_VLC_VLANTAGREPLACE_Msk            (0x3UL << ETH_MACIVIR_VLC_VLANTAGREPLACE_Pos) /*!< 0x00030000 */\n#define ETH_MACIVIR_VLC_VLANTAGREPLACE                ETH_MACIVIR_VLC_VLANTAGREPLACE_Msk /* VLAN tag replacement */\n#define ETH_MACIVIR_VLT_Pos                           (0U)\n#define ETH_MACIVIR_VLT_Msk                           (0xFFFFUL << ETH_MACIVIR_VLT_Pos) /*!< 0x0000FFFF */\n#define ETH_MACIVIR_VLT                               ETH_MACIVIR_VLT_Msk      /* VLAN Tag for Transmit Packets */\n#define ETH_MACIVIR_VLT_UP_Pos                        (13U)\n#define ETH_MACIVIR_VLT_UP_Msk                        (0x7UL << ETH_MACIVIR_VLT_UP_Pos) /*!< 0x0000E000 */\n#define ETH_MACIVIR_VLT_UP                            ETH_MACIVIR_VLT_UP_Msk   /* User Priority */\n#define ETH_MACIVIR_VLT_CFIDEI_Pos                    (12U)\n#define ETH_MACIVIR_VLT_CFIDEI_Msk                    (0x1UL << ETH_MACIVIR_VLT_CFIDEI_Pos) /*!< 0x00001000 */\n#define ETH_MACIVIR_VLT_CFIDEI                        ETH_MACIVIR_VLT_CFIDEI_Msk /* Canonical Format Indicator or Drop Eligible Indicator */\n#define ETH_MACIVIR_VLT_VID_Pos                       (0U)\n#define ETH_MACIVIR_VLT_VID_Msk                       (0xFFFUL << ETH_MACIVIR_VLT_VID_Pos) /*!< 0x00000FFF */\n#define ETH_MACIVIR_VLT_VID                           ETH_MACIVIR_VLT_VID_Msk  /* VLAN Identifier field of VLAN tag */\n\n/* Bit definition for Ethernet MAC Tx Flow Ctrl Register */\n#define ETH_MACTFCR_PT_Pos                            (16U)\n#define ETH_MACTFCR_PT_Msk                            (0xFFFFUL << ETH_MACTFCR_PT_Pos) /*!< 0xFFFF0000 */\n#define ETH_MACTFCR_PT                                ETH_MACTFCR_PT_Msk       /* Pause Time */\n#define ETH_MACTFCR_DZPQ_Pos                          (7U)\n#define ETH_MACTFCR_DZPQ_Msk                          (0x1UL << ETH_MACTFCR_DZPQ_Pos) /*!< 0x00000080 */\n#define ETH_MACTFCR_DZPQ                              ETH_MACTFCR_DZPQ_Msk     /* Disable Zero-Quanta Pause */\n#define ETH_MACTFCR_PLT_Pos                           (4U)\n#define ETH_MACTFCR_PLT_Msk                           (0x7UL << ETH_MACTFCR_PLT_Pos) /*!< 0x00000070 */\n#define ETH_MACTFCR_PLT                               ETH_MACTFCR_PLT_Msk      /* Pause Low Threshold */\n#define ETH_MACTFCR_PLT_MINUS4                        ((uint32_t)0x00000000)   /* Pause time minus 4 slot times */\n#define ETH_MACTFCR_PLT_MINUS28_Pos                   (4U)\n#define ETH_MACTFCR_PLT_MINUS28_Msk                   (0x1UL << ETH_MACTFCR_PLT_MINUS28_Pos) /*!< 0x00000010 */\n#define ETH_MACTFCR_PLT_MINUS28                       ETH_MACTFCR_PLT_MINUS28_Msk /* Pause time minus 28 slot times */\n#define ETH_MACTFCR_PLT_MINUS36_Pos                   (5U)\n#define ETH_MACTFCR_PLT_MINUS36_Msk                   (0x1UL << ETH_MACTFCR_PLT_MINUS36_Pos) /*!< 0x00000020 */\n#define ETH_MACTFCR_PLT_MINUS36                       ETH_MACTFCR_PLT_MINUS36_Msk /* Pause time minus 36 slot times */\n#define ETH_MACTFCR_PLT_MINUS144_Pos                  (4U)\n#define ETH_MACTFCR_PLT_MINUS144_Msk                  (0x3UL << ETH_MACTFCR_PLT_MINUS144_Pos) /*!< 0x00000030 */\n#define ETH_MACTFCR_PLT_MINUS144                      ETH_MACTFCR_PLT_MINUS144_Msk /* Pause time minus 144 slot times */\n#define ETH_MACTFCR_PLT_MINUS256_Pos                  (6U)\n#define ETH_MACTFCR_PLT_MINUS256_Msk                  (0x1UL << ETH_MACTFCR_PLT_MINUS256_Pos) /*!< 0x00000040 */\n#define ETH_MACTFCR_PLT_MINUS256                      ETH_MACTFCR_PLT_MINUS256_Msk /* Pause time minus 256 slot times */\n#define ETH_MACTFCR_PLT_MINUS512_Pos                  (4U)\n#define ETH_MACTFCR_PLT_MINUS512_Msk                  (0x5UL << ETH_MACTFCR_PLT_MINUS512_Pos) /*!< 0x00000050 */\n#define ETH_MACTFCR_PLT_MINUS512                      ETH_MACTFCR_PLT_MINUS512_Msk /* Pause time minus 512 slot times */\n#define ETH_MACTFCR_TFE_Pos                           (1U)\n#define ETH_MACTFCR_TFE_Msk                           (0x1UL << ETH_MACTFCR_TFE_Pos) /*!< 0x00000002 */\n#define ETH_MACTFCR_TFE                               ETH_MACTFCR_TFE_Msk      /* Transmit Flow Control Enable */\n#define ETH_MACTFCR_FCB_Pos                           (0U)\n#define ETH_MACTFCR_FCB_Msk                           (0x1UL << ETH_MACTFCR_FCB_Pos) /*!< 0x00000001 */\n#define ETH_MACTFCR_FCB                               ETH_MACTFCR_FCB_Msk      /* Flow Control Busy or Backpressure Activate */\n\n/* Bit definition for Ethernet MAC Rx Flow Ctrl Register */\n#define ETH_MACRFCR_UP_Pos                            (1U)\n#define ETH_MACRFCR_UP_Msk                            (0x1UL << ETH_MACRFCR_UP_Pos) /*!< 0x00000002 */\n#define ETH_MACRFCR_UP                                ETH_MACRFCR_UP_Msk       /* Unicast Pause Packet Detect */\n#define ETH_MACRFCR_RFE_Pos                           (0U)\n#define ETH_MACRFCR_RFE_Msk                           (0x1UL << ETH_MACRFCR_RFE_Pos) /*!< 0x00000001 */\n#define ETH_MACRFCR_RFE                               ETH_MACRFCR_RFE_Msk      /* Receive Flow Control Enable */\n\n/* Bit definition for Ethernet MAC Interrupt Status Register */\n#define ETH_MACISR_RXSTSIS_Pos                        (14U)\n#define ETH_MACISR_RXSTSIS_Msk                        (0x1UL << ETH_MACISR_RXSTSIS_Pos) /*!< 0x00004000 */\n#define ETH_MACISR_RXSTSIS                            ETH_MACISR_RXSTSIS_Msk   /* Receive Status Interrupt */\n#define ETH_MACISR_TXSTSIS_Pos                        (13U)\n#define ETH_MACISR_TXSTSIS_Msk                        (0x1UL << ETH_MACISR_TXSTSIS_Pos) /*!< 0x00002000 */\n#define ETH_MACISR_TXSTSIS                            ETH_MACISR_TXSTSIS_Msk   /* Transmit Status Interrupt */\n#define ETH_MACISR_TSIS_Pos                           (12U)\n#define ETH_MACISR_TSIS_Msk                           (0x1UL << ETH_MACISR_TSIS_Pos) /*!< 0x00001000 */\n#define ETH_MACISR_TSIS                               ETH_MACISR_TSIS_Msk      /* Timestamp Interrupt Status */\n#define ETH_MACISR_MMCTXIS_Pos                        (10U)\n#define ETH_MACISR_MMCTXIS_Msk                        (0x1UL << ETH_MACISR_MMCTXIS_Pos) /*!< 0x00000400 */\n#define ETH_MACISR_MMCTXIS                            ETH_MACISR_MMCTXIS_Msk   /* MMC Transmit Interrupt Status */\n#define ETH_MACISR_MMCRXIS_Pos                        (9U)\n#define ETH_MACISR_MMCRXIS_Msk                        (0x1UL << ETH_MACISR_MMCRXIS_Pos) /*!< 0x00000200 */\n#define ETH_MACISR_MMCRXIS                            ETH_MACISR_MMCRXIS_Msk   /* MMC Receive Interrupt Status */\n#define ETH_MACISR_MMCIS_Pos                          (8U)\n#define ETH_MACISR_MMCIS_Msk                          (0x1UL << ETH_MACISR_MMCIS_Pos) /*!< 0x00000100 */\n#define ETH_MACISR_MMCIS                              ETH_MACISR_MMCIS_Msk     /* MMC Interrupt Status */\n#define ETH_MACISR_LPIIS_Pos                          (5U)\n#define ETH_MACISR_LPIIS_Msk                          (0x1UL << ETH_MACISR_LPIIS_Pos) /*!< 0x00000020 */\n#define ETH_MACISR_LPIIS                              ETH_MACISR_LPIIS_Msk     /* LPI Interrupt Status */\n#define ETH_MACISR_PMTIS_Pos                          (4U)\n#define ETH_MACISR_PMTIS_Msk                          (0x1UL << ETH_MACISR_PMTIS_Pos) /*!< 0x00000010 */\n#define ETH_MACISR_PMTIS                              ETH_MACISR_PMTIS_Msk     /* PMT Interrupt Status */\n#define ETH_MACISR_PHYIS_Pos                          (3U)\n#define ETH_MACISR_PHYIS_Msk                          (0x1UL << ETH_MACISR_PHYIS_Pos) /*!< 0x00000008 */\n#define ETH_MACISR_PHYIS                              ETH_MACISR_PHYIS_Msk     /* PHY Interrupt */\n\n/* Bit definition for Ethernet MAC Interrupt Enable Register */\n#define ETH_MACIER_RXSTSIE_Pos                        (14U)\n#define ETH_MACIER_RXSTSIE_Msk                        (0x1UL << ETH_MACIER_RXSTSIE_Pos) /*!< 0x00004000 */\n#define ETH_MACIER_RXSTSIE                            ETH_MACIER_RXSTSIE_Msk   /* Receive Status Interrupt Enable */\n#define ETH_MACIER_TXSTSIE_Pos                        (13U)\n#define ETH_MACIER_TXSTSIE_Msk                        (0x1UL << ETH_MACIER_TXSTSIE_Pos) /*!< 0x00002000 */\n#define ETH_MACIER_TXSTSIE                            ETH_MACIER_TXSTSIE_Msk   /* Transmit Status Interrupt Enable */\n#define ETH_MACIER_TSIE_Pos                           (12U)\n#define ETH_MACIER_TSIE_Msk                           (0x1UL << ETH_MACIER_TSIE_Pos) /*!< 0x00001000 */\n#define ETH_MACIER_TSIE                               ETH_MACIER_TSIE_Msk      /* Timestamp Interrupt Enable */\n#define ETH_MACIER_LPIIE_Pos                          (5U)\n#define ETH_MACIER_LPIIE_Msk                          (0x1UL << ETH_MACIER_LPIIE_Pos) /*!< 0x00000020 */\n#define ETH_MACIER_LPIIE                              ETH_MACIER_LPIIE_Msk     /* LPI Interrupt Enable */\n#define ETH_MACIER_PMTIE_Pos                          (4U)\n#define ETH_MACIER_PMTIE_Msk                          (0x1UL << ETH_MACIER_PMTIE_Pos) /*!< 0x00000010 */\n#define ETH_MACIER_PMTIE                              ETH_MACIER_PMTIE_Msk     /* PMT Interrupt Enable */\n#define ETH_MACIER_PHYIE_Pos                          (3U)\n#define ETH_MACIER_PHYIE_Msk                          (0x1UL << ETH_MACIER_PHYIE_Pos) /*!< 0x00000008 */\n#define ETH_MACIER_PHYIE                              ETH_MACIER_PHYIE_Msk     /* PHY Interrupt Enable */\n\n/* Bit definition for Ethernet MAC Rx Tx Status Register */\n#define ETH_MACRXTXSR_RWT_Pos                         (8U)\n#define ETH_MACRXTXSR_RWT_Msk                         (0x1UL << ETH_MACRXTXSR_RWT_Pos) /*!< 0x00000100 */\n#define ETH_MACRXTXSR_RWT                             ETH_MACRXTXSR_RWT_Msk    /* Receive Watchdog Timeout */\n#define ETH_MACRXTXSR_EXCOL_Pos                       (5U)\n#define ETH_MACRXTXSR_EXCOL_Msk                       (0x1UL << ETH_MACRXTXSR_EXCOL_Pos) /*!< 0x00000020 */\n#define ETH_MACRXTXSR_EXCOL                           ETH_MACRXTXSR_EXCOL_Msk  /* Excessive Collisions */\n#define ETH_MACRXTXSR_LCOL_Pos                        (4U)\n#define ETH_MACRXTXSR_LCOL_Msk                        (0x1UL << ETH_MACRXTXSR_LCOL_Pos) /*!< 0x00000010 */\n#define ETH_MACRXTXSR_LCOL                            ETH_MACRXTXSR_LCOL_Msk   /* Late Collision */\n#define ETH_MACRXTXSR_EXDEF_Pos                       (3U)\n#define ETH_MACRXTXSR_EXDEF_Msk                       (0x1UL << ETH_MACRXTXSR_EXDEF_Pos) /*!< 0x00000008 */\n#define ETH_MACRXTXSR_EXDEF                           ETH_MACRXTXSR_EXDEF_Msk  /* Excessive Deferral */\n#define ETH_MACRXTXSR_LCARR_Pos                       (2U)\n#define ETH_MACRXTXSR_LCARR_Msk                       (0x1UL << ETH_MACRXTXSR_LCARR_Pos) /*!< 0x00000004 */\n#define ETH_MACRXTXSR_LCARR                           ETH_MACRXTXSR_LCARR_Msk  /* Loss of Carrier */\n#define ETH_MACRXTXSR_NCARR_Pos                       (1U)\n#define ETH_MACRXTXSR_NCARR_Msk                       (0x1UL << ETH_MACRXTXSR_NCARR_Pos) /*!< 0x00000002 */\n#define ETH_MACRXTXSR_NCARR                           ETH_MACRXTXSR_NCARR_Msk  /* No Carrier */\n#define ETH_MACRXTXSR_TJT_Pos                         (0U)\n#define ETH_MACRXTXSR_TJT_Msk                         (0x1UL << ETH_MACRXTXSR_TJT_Pos) /*!< 0x00000001 */\n#define ETH_MACRXTXSR_TJT                             ETH_MACRXTXSR_TJT_Msk    /* Transmit Jabber Timeout */\n\n/* Bit definition for Ethernet MAC PMT Control Status Register */\n#define ETH_MACPCSR_RWKFILTRST_Pos                    (31U)\n#define ETH_MACPCSR_RWKFILTRST_Msk                    (0x1UL << ETH_MACPCSR_RWKFILTRST_Pos) /*!< 0x80000000 */\n#define ETH_MACPCSR_RWKFILTRST                        ETH_MACPCSR_RWKFILTRST_Msk /* Remote Wake-Up Packet Filter Register Pointer Reset */\n#define ETH_MACPCSR_RWKPTR_Pos                        (24U)\n#define ETH_MACPCSR_RWKPTR_Msk                        (0x1FUL << ETH_MACPCSR_RWKPTR_Pos) /*!< 0x1F000000 */\n#define ETH_MACPCSR_RWKPTR                            ETH_MACPCSR_RWKPTR_Msk   /* Remote Wake-up FIFO Pointer */\n#define ETH_MACPCSR_RWKPFE_Pos                        (10U)\n#define ETH_MACPCSR_RWKPFE_Msk                        (0x1UL << ETH_MACPCSR_RWKPFE_Pos) /*!< 0x00000400 */\n#define ETH_MACPCSR_RWKPFE                            ETH_MACPCSR_RWKPFE_Msk   /* Remote Wake-up Packet Forwarding Enable */\n#define ETH_MACPCSR_GLBLUCAST_Pos                     (9U)\n#define ETH_MACPCSR_GLBLUCAST_Msk                     (0x1UL << ETH_MACPCSR_GLBLUCAST_Pos) /*!< 0x00000200 */\n#define ETH_MACPCSR_GLBLUCAST                         ETH_MACPCSR_GLBLUCAST_Msk /* Global Unicast */\n#define ETH_MACPCSR_RWKPRCVD_Pos                      (6U)\n#define ETH_MACPCSR_RWKPRCVD_Msk                      (0x1UL << ETH_MACPCSR_RWKPRCVD_Pos) /*!< 0x00000040 */\n#define ETH_MACPCSR_RWKPRCVD                          ETH_MACPCSR_RWKPRCVD_Msk /* Remote Wake-Up Packet Received */\n#define ETH_MACPCSR_MGKPRCVD_Pos                      (5U)\n#define ETH_MACPCSR_MGKPRCVD_Msk                      (0x1UL << ETH_MACPCSR_MGKPRCVD_Pos) /*!< 0x00000020 */\n#define ETH_MACPCSR_MGKPRCVD                          ETH_MACPCSR_MGKPRCVD_Msk /* Magic Packet Received */\n#define ETH_MACPCSR_RWKPKTEN_Pos                      (2U)\n#define ETH_MACPCSR_RWKPKTEN_Msk                      (0x1UL << ETH_MACPCSR_RWKPKTEN_Pos) /*!< 0x00000004 */\n#define ETH_MACPCSR_RWKPKTEN                          ETH_MACPCSR_RWKPKTEN_Msk /* Remote Wake-Up Packet Enable */\n#define ETH_MACPCSR_MGKPKTEN_Pos                      (1U)\n#define ETH_MACPCSR_MGKPKTEN_Msk                      (0x1UL << ETH_MACPCSR_MGKPKTEN_Pos) /*!< 0x00000002 */\n#define ETH_MACPCSR_MGKPKTEN                          ETH_MACPCSR_MGKPKTEN_Msk /* Magic Packet Enable */\n#define ETH_MACPCSR_PWRDWN_Pos                        (0U)\n#define ETH_MACPCSR_PWRDWN_Msk                        (0x1UL << ETH_MACPCSR_PWRDWN_Pos) /*!< 0x00000001 */\n#define ETH_MACPCSR_PWRDWN                            ETH_MACPCSR_PWRDWN_Msk   /* Power Down */\n\n/* Bit definition for Ethernet MAC Remote Wake-Up Packet Filter Register */\n#define ETH_MACRWUPFR_D_Pos                           (0U)\n#define ETH_MACRWUPFR_D_Msk                           (0xFFFFFFFFUL << ETH_MACRWUPFR_D_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACRWUPFR_D                               ETH_MACRWUPFR_D_Msk      /* Wake-up Packet filter register data */\n\n/* Bit definition for Ethernet MAC LPI Control Status Register */\n#define ETH_MACLCSR_LPITCSE_Pos                       (21U)\n#define ETH_MACLCSR_LPITCSE_Msk                       (0x1UL << ETH_MACLCSR_LPITCSE_Pos) /*!< 0x00200000 */\n#define ETH_MACLCSR_LPITCSE                           ETH_MACLCSR_LPITCSE_Msk  /* LPI Tx Clock Stop Enable */\n#define ETH_MACLCSR_LPITE_Pos                         (20U)\n#define ETH_MACLCSR_LPITE_Msk                         (0x1UL << ETH_MACLCSR_LPITE_Pos) /*!< 0x00100000 */\n#define ETH_MACLCSR_LPITE                             ETH_MACLCSR_LPITE_Msk    /* LPI Timer Enable */\n#define ETH_MACLCSR_LPITXA_Pos                        (19U)\n#define ETH_MACLCSR_LPITXA_Msk                        (0x1UL << ETH_MACLCSR_LPITXA_Pos) /*!< 0x00080000 */\n#define ETH_MACLCSR_LPITXA                            ETH_MACLCSR_LPITXA_Msk   /* LPI Tx Automate */\n#define ETH_MACLCSR_PLS_Pos                           (17U)\n#define ETH_MACLCSR_PLS_Msk                           (0x1UL << ETH_MACLCSR_PLS_Pos) /*!< 0x00020000 */\n#define ETH_MACLCSR_PLS                               ETH_MACLCSR_PLS_Msk      /* PHY Link Status */\n#define ETH_MACLCSR_LPIEN_Pos                         (16U)\n#define ETH_MACLCSR_LPIEN_Msk                         (0x1UL << ETH_MACLCSR_LPIEN_Pos) /*!< 0x00010000 */\n#define ETH_MACLCSR_LPIEN                             ETH_MACLCSR_LPIEN_Msk    /* LPI Enable */\n#define ETH_MACLCSR_RLPIST_Pos                        (9U)\n#define ETH_MACLCSR_RLPIST_Msk                        (0x1UL << ETH_MACLCSR_RLPIST_Pos) /*!< 0x00000200 */\n#define ETH_MACLCSR_RLPIST                            ETH_MACLCSR_RLPIST_Msk   /* Receive LPI State */\n#define ETH_MACLCSR_TLPIST_Pos                        (8U)\n#define ETH_MACLCSR_TLPIST_Msk                        (0x1UL << ETH_MACLCSR_TLPIST_Pos) /*!< 0x00000100 */\n#define ETH_MACLCSR_TLPIST                            ETH_MACLCSR_TLPIST_Msk   /* Transmit LPI State */\n#define ETH_MACLCSR_RLPIEX_Pos                        (3U)\n#define ETH_MACLCSR_RLPIEX_Msk                        (0x1UL << ETH_MACLCSR_RLPIEX_Pos) /*!< 0x00000008 */\n#define ETH_MACLCSR_RLPIEX                            ETH_MACLCSR_RLPIEX_Msk   /* Receive LPI Exit */\n#define ETH_MACLCSR_RLPIEN_Pos                        (2U)\n#define ETH_MACLCSR_RLPIEN_Msk                        (0x1UL << ETH_MACLCSR_RLPIEN_Pos) /*!< 0x00000004 */\n#define ETH_MACLCSR_RLPIEN                            ETH_MACLCSR_RLPIEN_Msk   /* Receive LPI Entry */\n#define ETH_MACLCSR_TLPIEX_Pos                        (1U)\n#define ETH_MACLCSR_TLPIEX_Msk                        (0x1UL << ETH_MACLCSR_TLPIEX_Pos) /*!< 0x00000002 */\n#define ETH_MACLCSR_TLPIEX                            ETH_MACLCSR_TLPIEX_Msk   /* Transmit LPI Exit */\n#define ETH_MACLCSR_TLPIEN_Pos                        (0U)\n#define ETH_MACLCSR_TLPIEN_Msk                        (0x1UL << ETH_MACLCSR_TLPIEN_Pos) /*!< 0x00000001 */\n#define ETH_MACLCSR_TLPIEN                            ETH_MACLCSR_TLPIEN_Msk   /* Transmit LPI Entry */\n\n/* Bit definition for Ethernet MAC LPI Timers Control Register */\n#define ETH_MACLTCR_LST_Pos                           (16U)\n#define ETH_MACLTCR_LST_Msk                           (0x3FFUL << ETH_MACLTCR_LST_Pos) /*!< 0x03FF0000 */\n#define ETH_MACLTCR_LST                               ETH_MACLTCR_LST_Msk      /* LPI LS TIMER */\n#define ETH_MACLTCR_TWT_Pos                           (0U)\n#define ETH_MACLTCR_TWT_Msk                           (0xFFFFUL << ETH_MACLTCR_TWT_Pos) /*!< 0x0000FFFF */\n#define ETH_MACLTCR_TWT                               ETH_MACLTCR_TWT_Msk      /* LPI TW TIMER */\n\n/* Bit definition for Ethernet MAC LPI Entry Timer Register */\n#define ETH_MACLETR_LPIET_Pos                         (0U)\n#define ETH_MACLETR_LPIET_Msk                         (0xFFFFFUL << ETH_MACLETR_LPIET_Pos) /*!< 0x000FFFFF */\n#define ETH_MACLETR_LPIET                             ETH_MACLETR_LPIET_Msk    /* LPI Entry Timer */\n\n/* Bit definition for Ethernet MAC 1US Tic Counter Register */\n#define ETH_MAC1USTCR_TIC1USCNTR_Pos                  (0U)\n#define ETH_MAC1USTCR_TIC1USCNTR_Msk                  (0xFFFUL << ETH_MAC1USTCR_TIC1USCNTR_Pos) /*!< 0x00000FFF */\n#define ETH_MAC1USTCR_TIC1USCNTR                      ETH_MAC1USTCR_TIC1USCNTR_Msk /* 1US TIC Counter */\n\n/* Bit definition for Ethernet MAC Version Register */\n#define ETH_MACVR_USERVER_Pos                         (8U)\n#define ETH_MACVR_USERVER_Msk                         (0xFFUL << ETH_MACVR_USERVER_Pos) /*!< 0x0000FF00 */\n#define ETH_MACVR_USERVER                             ETH_MACVR_USERVER_Msk    /* User-defined Version */\n#define ETH_MACVR_SNPSVER_Pos                         (0U)\n#define ETH_MACVR_SNPSVER_Msk                         (0xFFUL << ETH_MACVR_SNPSVER_Pos) /*!< 0x000000FF */\n#define ETH_MACVR_SNPSVER                             ETH_MACVR_SNPSVER_Msk    /* Synopsys-defined Version */\n\n/* Bit definition for Ethernet MAC Debug Register */\n#define ETH_MACDR_TFCSTS_Pos                          (17U)\n#define ETH_MACDR_TFCSTS_Msk                          (0x3UL << ETH_MACDR_TFCSTS_Pos) /*!< 0x00060000 */\n#define ETH_MACDR_TFCSTS                              ETH_MACDR_TFCSTS_Msk     /* MAC Transmit Packet Controller Status */\n#define ETH_MACDR_TFCSTS_IDLE                         ((uint32_t)0x00000000)   /* Idle state */\n#define ETH_MACDR_TFCSTS_WAIT_Pos                     (17U)\n#define ETH_MACDR_TFCSTS_WAIT_Msk                     (0x1UL << ETH_MACDR_TFCSTS_WAIT_Pos) /*!< 0x00020000 */\n#define ETH_MACDR_TFCSTS_WAIT                         ETH_MACDR_TFCSTS_WAIT_Msk /* Waiting for status of the previous packet, IPG or backoff period to be over */\n#define ETH_MACDR_TFCSTS_GENERATEPCP_Pos              (18U)\n#define ETH_MACDR_TFCSTS_GENERATEPCP_Msk              (0x1UL << ETH_MACDR_TFCSTS_GENERATEPCP_Pos) /*!< 0x00040000 */\n#define ETH_MACDR_TFCSTS_GENERATEPCP                  ETH_MACDR_TFCSTS_GENERATEPCP_Msk /* Generating and transmitting a Pause control packet */\n#define ETH_MACDR_TFCSTS_TRASFERIP_Pos                (17U)\n#define ETH_MACDR_TFCSTS_TRASFERIP_Msk                (0x3UL << ETH_MACDR_TFCSTS_TRASFERIP_Pos) /*!< 0x00060000 */\n#define ETH_MACDR_TFCSTS_TRASFERIP                    ETH_MACDR_TFCSTS_TRASFERIP_Msk /* Transferring input packet for transmission */\n#define ETH_MACDR_TPESTS_Pos                          (16U)\n#define ETH_MACDR_TPESTS_Msk                          (0x1UL << ETH_MACDR_TPESTS_Pos) /*!< 0x00010000 */\n#define ETH_MACDR_TPESTS                              ETH_MACDR_TPESTS_Msk     /* MAC Receive Packet Controller FIFO Status */\n#define ETH_MACDR_RFCFCSTS_Pos                        (1U)\n#define ETH_MACDR_RFCFCSTS_Msk                        (0x3UL << ETH_MACDR_RFCFCSTS_Pos) /*!< 0x00000006 */\n#define ETH_MACDR_RFCFCSTS                            ETH_MACDR_RFCFCSTS_Msk   /* MAC MII Transmit Protocol Engine Status */\n#define ETH_MACDR_RPESTS_Pos                          (0U)\n#define ETH_MACDR_RPESTS_Msk                          (0x1UL << ETH_MACDR_RPESTS_Pos) /*!< 0x00000001 */\n#define ETH_MACDR_RPESTS                              ETH_MACDR_RPESTS_Msk     /* MAC MII Receive Protocol Engine Status */\n\n/* Bit definition for Ethernet MAC HW Feature0 Register */\n#define ETH_MACHWF0R_ACTPHYSEL_Pos                    (28U)\n#define ETH_MACHWF0R_ACTPHYSEL_Msk                    (0x7UL << ETH_MACHWF0R_ACTPHYSEL_Pos) /*!< 0x70000000 */\n#define ETH_MACHWF0R_ACTPHYSEL                        ETH_MACHWF0R_ACTPHYSEL_Msk /* Active PHY Selected */\n#define ETH_MACHWF0R_ACTPHYSEL_MII                    ((uint32_t)0x00000000)   /* MII */\n#define ETH_MACHWF0R_ACTPHYSEL_RMII_Pos               (30U)\n#define ETH_MACHWF0R_ACTPHYSEL_RMII_Msk               (0x1UL << ETH_MACHWF0R_ACTPHYSEL_RMII_Pos) /*!< 0x40000000 */\n#define ETH_MACHWF0R_ACTPHYSEL_RMII                   ETH_MACHWF0R_ACTPHYSEL_RMII_Msk /* RMII */\n#define ETH_MACHWF0R_ACTPHYSEL_REVMII_Pos             (28U)\n#define ETH_MACHWF0R_ACTPHYSEL_REVMII_Msk             (0x7UL << ETH_MACHWF0R_ACTPHYSEL_REVMII_Pos) /*!< 0x70000000 */\n#define ETH_MACHWF0R_ACTPHYSEL_REVMII                 ETH_MACHWF0R_ACTPHYSEL_REVMII_Msk /* RevMII */\n#define ETH_MACHWF0R_SAVLANINS_Pos                    (27U)\n#define ETH_MACHWF0R_SAVLANINS_Msk                    (0x1UL << ETH_MACHWF0R_SAVLANINS_Pos) /*!< 0x08000000 */\n#define ETH_MACHWF0R_SAVLANINS                        ETH_MACHWF0R_SAVLANINS_Msk /* Source Address or VLAN Insertion Enable */\n#define ETH_MACHWF0R_TSSTSSEL_Pos                     (25U)\n#define ETH_MACHWF0R_TSSTSSEL_Msk                     (0x3UL << ETH_MACHWF0R_TSSTSSEL_Pos) /*!< 0x06000000 */\n#define ETH_MACHWF0R_TSSTSSEL                         ETH_MACHWF0R_TSSTSSEL_Msk /* Timestamp System Time Source */\n#define ETH_MACHWF0R_TSSTSSEL_INTERNAL_Pos            (25U)\n#define ETH_MACHWF0R_TSSTSSEL_INTERNAL_Msk            (0x1UL << ETH_MACHWF0R_TSSTSSEL_INTERNAL_Pos) /*!< 0x02000000 */\n#define ETH_MACHWF0R_TSSTSSEL_INTERNAL                ETH_MACHWF0R_TSSTSSEL_INTERNAL_Msk /* Timestamp System Time Source: Internal */\n#define ETH_MACHWF0R_TSSTSSEL_EXTERNAL_Pos            (26U)\n#define ETH_MACHWF0R_TSSTSSEL_EXTERNAL_Msk            (0x1UL << ETH_MACHWF0R_TSSTSSEL_EXTERNAL_Pos) /*!< 0x04000000 */\n#define ETH_MACHWF0R_TSSTSSEL_EXTERNAL                ETH_MACHWF0R_TSSTSSEL_EXTERNAL_Msk /* Timestamp System Time Source: External */\n#define ETH_MACHWF0R_TSSTSSEL_BOTH_Pos                (25U)\n#define ETH_MACHWF0R_TSSTSSEL_BOTH_Msk                (0x3UL << ETH_MACHWF0R_TSSTSSEL_BOTH_Pos) /*!< 0x06000000 */\n#define ETH_MACHWF0R_TSSTSSEL_BOTH                    ETH_MACHWF0R_TSSTSSEL_BOTH_Msk /* Timestamp System Time Source: Internal & External */\n#define ETH_MACHWF0R_MACADR64SEL_Pos                  (24U)\n#define ETH_MACHWF0R_MACADR64SEL_Msk                  (0x1UL << ETH_MACHWF0R_MACADR64SEL_Pos) /*!< 0x01000000 */\n#define ETH_MACHWF0R_MACADR64SEL                      ETH_MACHWF0R_MACADR64SEL_Msk /* MAC Addresses 64-127 Selected */\n#define ETH_MACHWF0R_MACADR32SEL_Pos                  (23U)\n#define ETH_MACHWF0R_MACADR32SEL_Msk                  (0x1UL << ETH_MACHWF0R_MACADR32SEL_Pos) /*!< 0x00800000 */\n#define ETH_MACHWF0R_MACADR32SEL                      ETH_MACHWF0R_MACADR32SEL_Msk /* MAC Addresses 32-63 Selected */\n#define ETH_MACHWF0R_ADDMACADRSEL_Pos                 (18U)\n#define ETH_MACHWF0R_ADDMACADRSEL_Msk                 (0x1FUL << ETH_MACHWF0R_ADDMACADRSEL_Pos) /*!< 0x007C0000 */\n#define ETH_MACHWF0R_ADDMACADRSEL                     ETH_MACHWF0R_ADDMACADRSEL_Msk /* MAC Addresses 1- 31 Selected */\n#define ETH_MACHWF0R_RXCOESEL_Pos                     (16U)\n#define ETH_MACHWF0R_RXCOESEL_Msk                     (0x1UL << ETH_MACHWF0R_RXCOESEL_Pos) /*!< 0x00010000 */\n#define ETH_MACHWF0R_RXCOESEL                         ETH_MACHWF0R_RXCOESEL_Msk /* Receive Checksum Offload Enabled */\n#define ETH_MACHWF0R_TXCOESEL_Pos                     (14U)\n#define ETH_MACHWF0R_TXCOESEL_Msk                     (0x1UL << ETH_MACHWF0R_TXCOESEL_Pos) /*!< 0x00004000 */\n#define ETH_MACHWF0R_TXCOESEL                         ETH_MACHWF0R_TXCOESEL_Msk /* Transmit Checksum Offload Enabled */\n#define ETH_MACHWF0R_EEESEL_Pos                       (13U)\n#define ETH_MACHWF0R_EEESEL_Msk                       (0x1UL << ETH_MACHWF0R_EEESEL_Pos) /*!< 0x00002000 */\n#define ETH_MACHWF0R_EEESEL                           ETH_MACHWF0R_EEESEL_Msk  /* Energy Efficient Ethernet Enabled */\n#define ETH_MACHWF0R_TSSEL_Pos                        (12U)\n#define ETH_MACHWF0R_TSSEL_Msk                        (0x1UL << ETH_MACHWF0R_TSSEL_Pos) /*!< 0x00001000 */\n#define ETH_MACHWF0R_TSSEL                            ETH_MACHWF0R_TSSEL_Msk   /* IEEE 1588-2008 Timestamp Enabled */\n#define ETH_MACHWF0R_ARPOFFSEL_Pos                    (9U)\n#define ETH_MACHWF0R_ARPOFFSEL_Msk                    (0x1UL << ETH_MACHWF0R_ARPOFFSEL_Pos) /*!< 0x00000200 */\n#define ETH_MACHWF0R_ARPOFFSEL                        ETH_MACHWF0R_ARPOFFSEL_Msk /* ARP Offload Enabled */\n#define ETH_MACHWF0R_MMCSEL_Pos                       (8U)\n#define ETH_MACHWF0R_MMCSEL_Msk                       (0x1UL << ETH_MACHWF0R_MMCSEL_Pos) /*!< 0x00000100 */\n#define ETH_MACHWF0R_MMCSEL                           ETH_MACHWF0R_MMCSEL_Msk  /* RMON Module Enable */\n#define ETH_MACHWF0R_MGKSEL_Pos                       (7U)\n#define ETH_MACHWF0R_MGKSEL_Msk                       (0x1UL << ETH_MACHWF0R_MGKSEL_Pos) /*!< 0x00000080 */\n#define ETH_MACHWF0R_MGKSEL                           ETH_MACHWF0R_MGKSEL_Msk  /* PMT Magic Packet Enable */\n#define ETH_MACHWF0R_RWKSEL_Pos                       (6U)\n#define ETH_MACHWF0R_RWKSEL_Msk                       (0x1UL << ETH_MACHWF0R_RWKSEL_Pos) /*!< 0x00000040 */\n#define ETH_MACHWF0R_RWKSEL                           ETH_MACHWF0R_RWKSEL_Msk  /* PMT Remote Wake-up Packet Enable */\n#define ETH_MACHWF0R_SMASEL_Pos                       (5U)\n#define ETH_MACHWF0R_SMASEL_Msk                       (0x1UL << ETH_MACHWF0R_SMASEL_Pos) /*!< 0x00000020 */\n#define ETH_MACHWF0R_SMASEL                           ETH_MACHWF0R_SMASEL_Msk  /* SMA (MDIO) Interface */\n#define ETH_MACHWF0R_VLHASH_Pos                       (4U)\n#define ETH_MACHWF0R_VLHASH_Msk                       (0x1UL << ETH_MACHWF0R_VLHASH_Pos) /*!< 0x00000010 */\n#define ETH_MACHWF0R_VLHASH                           ETH_MACHWF0R_VLHASH_Msk  /* VLAN Hash Filter Selected */\n#define ETH_MACHWF0R_PCSSEL_Pos                       (3U)\n#define ETH_MACHWF0R_PCSSEL_Msk                       (0x1UL << ETH_MACHWF0R_PCSSEL_Pos) /*!< 0x00000008 */\n#define ETH_MACHWF0R_PCSSEL                           ETH_MACHWF0R_PCSSEL_Msk  /* PCS Registers (TBI, SGMII, or RTBI PHY interface) */\n#define ETH_MACHWF0R_HDSEL_Pos                        (2U)\n#define ETH_MACHWF0R_HDSEL_Msk                        (0x1UL << ETH_MACHWF0R_HDSEL_Pos) /*!< 0x00000004 */\n#define ETH_MACHWF0R_HDSEL                            ETH_MACHWF0R_HDSEL_Msk   /* Half-duplex Support */\n#define ETH_MACHWF0R_GMIISEL_Pos                      (1U)\n#define ETH_MACHWF0R_GMIISEL_Msk                      (0x1UL << ETH_MACHWF0R_GMIISEL_Pos) /*!< 0x00000002 */\n#define ETH_MACHWF0R_GMIISEL                          ETH_MACHWF0R_GMIISEL_Msk /* 1000 Mbps Support */\n#define ETH_MACHWF0R_MIISEL_Pos                       (0U)\n#define ETH_MACHWF0R_MIISEL_Msk                       (0x1UL << ETH_MACHWF0R_MIISEL_Pos) /*!< 0x00000001 */\n#define ETH_MACHWF0R_MIISEL                           ETH_MACHWF0R_MIISEL_Msk  /* 10 or 100 Mbps Support */\n\n/* Bit definition for Ethernet MAC HW Feature1 Register */\n#define ETH_MACHWF1R_L3L4FNUM_Pos                     (27U)\n#define ETH_MACHWF1R_L3L4FNUM_Msk                     (0xFUL << ETH_MACHWF1R_L3L4FNUM_Pos) /*!< 0x78000000 */\n#define ETH_MACHWF1R_L3L4FNUM                         ETH_MACHWF1R_L3L4FNUM_Msk /* Total number of L3 or L4 Filters */\n#define ETH_MACHWF1R_HASHTBLSZ_Pos                    (24U)\n#define ETH_MACHWF1R_HASHTBLSZ_Msk                    (0x3UL << ETH_MACHWF1R_HASHTBLSZ_Pos) /*!< 0x03000000 */\n#define ETH_MACHWF1R_HASHTBLSZ                        ETH_MACHWF1R_HASHTBLSZ_Msk /* Hash Table Size */\n#define ETH_MACHWF1R_AVSEL_Pos                        (20U)\n#define ETH_MACHWF1R_AVSEL_Msk                        (0x1UL << ETH_MACHWF1R_AVSEL_Pos) /*!< 0x00100000 */\n#define ETH_MACHWF1R_AVSEL                            ETH_MACHWF1R_AVSEL_Msk   /* AV Feature Enabled */\n#define ETH_MACHWF1R_DBGMEMA_Pos                      (19U)\n#define ETH_MACHWF1R_DBGMEMA_Msk                      (0x1UL << ETH_MACHWF1R_DBGMEMA_Pos) /*!< 0x00080000 */\n#define ETH_MACHWF1R_DBGMEMA                          ETH_MACHWF1R_DBGMEMA_Msk /* Debug Memory Interface Enabled */\n#define ETH_MACHWF1R_TSOEN_Pos                        (18U)\n#define ETH_MACHWF1R_TSOEN_Msk                        (0x1UL << ETH_MACHWF1R_TSOEN_Pos) /*!< 0x00040000 */\n#define ETH_MACHWF1R_TSOEN                            ETH_MACHWF1R_TSOEN_Msk   /* TCP Segmentation Offload Enable */\n#define ETH_MACHWF1R_SPHEN_Pos                        (17U)\n#define ETH_MACHWF1R_SPHEN_Msk                        (0x1UL << ETH_MACHWF1R_SPHEN_Pos) /*!< 0x00020000 */\n#define ETH_MACHWF1R_SPHEN                            ETH_MACHWF1R_SPHEN_Msk   /* Split Header Feature Enable */\n#define ETH_MACHWF1R_DCBEN_Pos                        (16U)\n#define ETH_MACHWF1R_DCBEN_Msk                        (0x1UL << ETH_MACHWF1R_DCBEN_Pos) /*!< 0x00010000 */\n#define ETH_MACHWF1R_DCBEN                            ETH_MACHWF1R_DCBEN_Msk   /* DCB Feature Enable */\n#define ETH_MACHWF1R_ADDR64_Pos                       (14U)\n#define ETH_MACHWF1R_ADDR64_Msk                       (0x3UL << ETH_MACHWF1R_ADDR64_Pos) /*!< 0x0000C000 */\n#define ETH_MACHWF1R_ADDR64                           ETH_MACHWF1R_ADDR64_Msk  /* Address Width */\n#define ETH_MACHWF1R_ADDR64_32                        (0x0UL << ETH_MACHWF1R_ADDR64_Pos) /*!< 0x00000000 */\n#define ETH_MACHWF1R_ADDR64_40                        (0x1UL << ETH_MACHWF1R_ADDR64_Pos) /*!< 0x00004000 */\n#define ETH_MACHWF1R_ADDR64_48                        (0x2UL << ETH_MACHWF1R_ADDR64_Pos) /*!< 0x00008000 */\n#define ETH_MACHWF1R_ADVTHWORD_Pos                    (13U)\n#define ETH_MACHWF1R_ADVTHWORD_Msk                    (0x1UL << ETH_MACHWF1R_ADVTHWORD_Pos) /*!< 0x00002000 */\n#define ETH_MACHWF1R_ADVTHWORD                        ETH_MACHWF1R_ADVTHWORD_Msk /* IEEE 1588 High Word Register Enable */\n#define ETH_MACHWF1R_PTOEN_Pos                        (12U)\n#define ETH_MACHWF1R_PTOEN_Msk                        (0x1UL << ETH_MACHWF1R_PTOEN_Pos) /*!< 0x00001000 */\n#define ETH_MACHWF1R_PTOEN                            ETH_MACHWF1R_PTOEN_Msk   /* PTP Offload Enable */\n#define ETH_MACHWF1R_OSTEN_Pos                        (11U)\n#define ETH_MACHWF1R_OSTEN_Msk                        (0x1UL << ETH_MACHWF1R_OSTEN_Pos) /*!< 0x00000800 */\n#define ETH_MACHWF1R_OSTEN                            ETH_MACHWF1R_OSTEN_Msk   /* One-Step Timestamping Enable */\n#define ETH_MACHWF1R_TXFIFOSIZE_Pos                   (6U)\n#define ETH_MACHWF1R_TXFIFOSIZE_Msk                   (0x1FUL << ETH_MACHWF1R_TXFIFOSIZE_Pos) /*!< 0x000007C0 */\n#define ETH_MACHWF1R_TXFIFOSIZE                       ETH_MACHWF1R_TXFIFOSIZE_Msk /* MTL Transmit FIFO Size */\n#define ETH_MACHWF1R_RXFIFOSIZE_Pos                   (0U)\n#define ETH_MACHWF1R_RXFIFOSIZE_Msk                   (0x1FUL << ETH_MACHWF1R_RXFIFOSIZE_Pos) /*!< 0x0000001F */\n#define ETH_MACHWF1R_RXFIFOSIZE                       ETH_MACHWF1R_RXFIFOSIZE_Msk /* MTL Receive FIFO Size */\n\n/* Bit definition for Ethernet MAC HW Feature2 Register */\n#define ETH_MACHWF2R_AUXSNAPNUM_Pos                   (28U)\n#define ETH_MACHWF2R_AUXSNAPNUM_Msk                   (0x7UL << ETH_MACHWF2R_AUXSNAPNUM_Pos) /*!< 0x70000000 */\n#define ETH_MACHWF2R_AUXSNAPNUM                       ETH_MACHWF2R_AUXSNAPNUM_Msk /* Number of Auxiliary Snapshot Inputs */\n#define ETH_MACHWF2R_PPSOUTNUM_Pos                    (24U)\n#define ETH_MACHWF2R_PPSOUTNUM_Msk                    (0x7UL << ETH_MACHWF2R_PPSOUTNUM_Pos) /*!< 0x07000000 */\n#define ETH_MACHWF2R_PPSOUTNUM                        ETH_MACHWF2R_PPSOUTNUM_Msk /*  Number of PPS Outputs */\n#define ETH_MACHWF2R_TXCHCNT_Pos                      (18U)\n#define ETH_MACHWF2R_TXCHCNT_Msk                      (0xFUL << ETH_MACHWF2R_TXCHCNT_Pos) /*!< 0x003C0000 */\n#define ETH_MACHWF2R_TXCHCNT                          ETH_MACHWF2R_TXCHCNT_Msk /* Number of DMA Transmit Channels */\n#define ETH_MACHWF2R_RXCHCNT_Pos                      (13U)\n#define ETH_MACHWF2R_RXCHCNT_Msk                      (0x7UL << ETH_MACHWF2R_RXCHCNT_Pos) /*!< 0x0000E000 */\n#define ETH_MACHWF2R_RXCHCNT                          ETH_MACHWF2R_RXCHCNT_Msk /* Number of DMA Receive Channels */\n#define ETH_MACHWF2R_TXQCNT_Pos                       (6U)\n#define ETH_MACHWF2R_TXQCNT_Msk                       (0xFUL << ETH_MACHWF2R_TXQCNT_Pos) /*!< 0x000003C0 */\n#define ETH_MACHWF2R_TXQCNT                           ETH_MACHWF2R_TXQCNT_Msk  /* Number of MTL Transmit Queues */\n#define ETH_MACHWF2R_RXQCNT_Pos                       (0U)\n#define ETH_MACHWF2R_RXQCNT_Msk                       (0xFUL << ETH_MACHWF2R_RXQCNT_Pos) /*!< 0x0000000F */\n#define ETH_MACHWF2R_RXQCNT                           ETH_MACHWF2R_RXQCNT_Msk  /* Number of MTL Receive Queues */\n\n/* Bit definition for Ethernet MAC MDIO Address Register */\n#define ETH_MACMDIOAR_PSE_Pos                         (27U)\n#define ETH_MACMDIOAR_PSE_Msk                         (0x1UL << ETH_MACMDIOAR_PSE_Pos) /*!< 0x08000000 */\n#define ETH_MACMDIOAR_PSE                             ETH_MACMDIOAR_PSE_Msk    /* Preamble Suppression Enable */\n#define ETH_MACMDIOAR_BTB_Pos                         (26U)\n#define ETH_MACMDIOAR_BTB_Msk                         (0x1UL << ETH_MACMDIOAR_BTB_Pos) /*!< 0x04000000 */\n#define ETH_MACMDIOAR_BTB                             ETH_MACMDIOAR_BTB_Msk    /* Back to Back transactions */\n#define ETH_MACMDIOAR_PA_Pos                          (21U)\n#define ETH_MACMDIOAR_PA_Msk                          (0x1FUL << ETH_MACMDIOAR_PA_Pos) /*!< 0x03E00000 */\n#define ETH_MACMDIOAR_PA                              ETH_MACMDIOAR_PA_Msk     /* Physical Layer Address */\n#define ETH_MACMDIOAR_RDA_Pos                         (16U)\n#define ETH_MACMDIOAR_RDA_Msk                         (0x1FUL << ETH_MACMDIOAR_RDA_Pos) /*!< 0x001F0000 */\n#define ETH_MACMDIOAR_RDA                             ETH_MACMDIOAR_RDA_Msk    /* Register/Device Address */\n#define ETH_MACMDIOAR_NTC_Pos                         (12U)\n#define ETH_MACMDIOAR_NTC_Msk                         (0x7UL << ETH_MACMDIOAR_NTC_Pos) /*!< 0x00007000 */\n#define ETH_MACMDIOAR_NTC                             ETH_MACMDIOAR_NTC_Msk    /* Number of Trailing Clocks */\n#define ETH_MACMDIOAR_CR_Pos                          (8U)\n#define ETH_MACMDIOAR_CR_Msk                          (0xFUL << ETH_MACMDIOAR_CR_Pos) /*!< 0x00000F00 */\n#define ETH_MACMDIOAR_CR                              ETH_MACMDIOAR_CR_Msk     /* CSR Clock Range */\n#define ETH_MACMDIOAR_CR_DIV42                        ((uint32_t)0x00000000)   /* CSR clock/42 */\n#define ETH_MACMDIOAR_CR_DIV62_Pos                    (8U)\n#define ETH_MACMDIOAR_CR_DIV62_Msk                    (0x1UL << ETH_MACMDIOAR_CR_DIV62_Pos) /*!< 0x00000100 */\n#define ETH_MACMDIOAR_CR_DIV62                        ETH_MACMDIOAR_CR_DIV62_Msk /* CSR clock/62 */\n#define ETH_MACMDIOAR_CR_DIV16_Pos                    (9U)\n#define ETH_MACMDIOAR_CR_DIV16_Msk                    (0x1UL << ETH_MACMDIOAR_CR_DIV16_Pos) /*!< 0x00000200 */\n#define ETH_MACMDIOAR_CR_DIV16                        ETH_MACMDIOAR_CR_DIV16_Msk /* CSR clock/16 */\n#define ETH_MACMDIOAR_CR_DIV26_Pos                    (8U)\n#define ETH_MACMDIOAR_CR_DIV26_Msk                    (0x3UL << ETH_MACMDIOAR_CR_DIV26_Pos) /*!< 0x00000300 */\n#define ETH_MACMDIOAR_CR_DIV26                        ETH_MACMDIOAR_CR_DIV26_Msk /* CSR clock/26 */\n#define ETH_MACMDIOAR_CR_DIV102_Pos                   (10U)\n#define ETH_MACMDIOAR_CR_DIV102_Msk                   (0x1UL << ETH_MACMDIOAR_CR_DIV102_Pos) /*!< 0x00000400 */\n#define ETH_MACMDIOAR_CR_DIV102                       ETH_MACMDIOAR_CR_DIV102_Msk /* CSR clock/102 */\n#define ETH_MACMDIOAR_CR_DIV124_Pos                   (8U)\n#define ETH_MACMDIOAR_CR_DIV124_Msk                   (0x5UL << ETH_MACMDIOAR_CR_DIV124_Pos) /*!< 0x00000500 */\n#define ETH_MACMDIOAR_CR_DIV124                       ETH_MACMDIOAR_CR_DIV124_Msk /* CSR clock/124 */\n#define ETH_MACMDIOAR_CR_DIV4AR_Pos                   (11U)\n#define ETH_MACMDIOAR_CR_DIV4AR_Msk                   (0x1UL << ETH_MACMDIOAR_CR_DIV4AR_Pos) /*!< 0x00000800 */\n#define ETH_MACMDIOAR_CR_DIV4AR                       ETH_MACMDIOAR_CR_DIV4AR_Msk /* CSR clock/4: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_CR_DIV6AR_Pos                   (8U)\n#define ETH_MACMDIOAR_CR_DIV6AR_Msk                   (0x9UL << ETH_MACMDIOAR_CR_DIV6AR_Pos) /*!< 0x00000900 */\n#define ETH_MACMDIOAR_CR_DIV6AR                       ETH_MACMDIOAR_CR_DIV6AR_Msk /* CSR clock/6: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_CR_DIV8AR_Pos                   (9U)\n#define ETH_MACMDIOAR_CR_DIV8AR_Msk                   (0x5UL << ETH_MACMDIOAR_CR_DIV8AR_Pos) /*!< 0x00000A00 */\n#define ETH_MACMDIOAR_CR_DIV8AR                       ETH_MACMDIOAR_CR_DIV8AR_Msk /* CSR clock/8: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_CR_DIV10AR_Pos                  (8U)\n#define ETH_MACMDIOAR_CR_DIV10AR_Msk                  (0xBUL << ETH_MACMDIOAR_CR_DIV10AR_Pos) /*!< 0x00000B00 */\n#define ETH_MACMDIOAR_CR_DIV10AR                      ETH_MACMDIOAR_CR_DIV10AR_Msk /* CSR clock/10: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_CR_DIV12AR_Pos                  (10U)\n#define ETH_MACMDIOAR_CR_DIV12AR_Msk                  (0x3UL << ETH_MACMDIOAR_CR_DIV12AR_Pos) /*!< 0x00000C00 */\n#define ETH_MACMDIOAR_CR_DIV12AR                      ETH_MACMDIOAR_CR_DIV12AR_Msk /* CSR clock/12: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_CR_DIV14AR_Pos                  (8U)\n#define ETH_MACMDIOAR_CR_DIV14AR_Msk                  (0xDUL << ETH_MACMDIOAR_CR_DIV14AR_Pos) /*!< 0x00000D00 */\n#define ETH_MACMDIOAR_CR_DIV14AR                      ETH_MACMDIOAR_CR_DIV14AR_Msk /* CSR clock/14: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_CR_DIV16AR_Pos                  (9U)\n#define ETH_MACMDIOAR_CR_DIV16AR_Msk                  (0x7UL << ETH_MACMDIOAR_CR_DIV16AR_Pos) /*!< 0x00000E00 */\n#define ETH_MACMDIOAR_CR_DIV16AR                      ETH_MACMDIOAR_CR_DIV16AR_Msk /* CSR clock/16: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_CR_DIV18AR_Pos                  (8U)\n#define ETH_MACMDIOAR_CR_DIV18AR_Msk                  (0xFUL << ETH_MACMDIOAR_CR_DIV18AR_Pos) /*!< 0x00000F00 */\n#define ETH_MACMDIOAR_CR_DIV18AR                      ETH_MACMDIOAR_CR_DIV18AR_Msk /* CSR clock/18: MDC clock above range specified in IEEE */\n#define ETH_MACMDIOAR_SKAP_Pos                        (4U)\n#define ETH_MACMDIOAR_SKAP_Msk                        (0x1UL << ETH_MACMDIOAR_SKAP_Pos) /*!< 0x00000010 */\n#define ETH_MACMDIOAR_SKAP                            ETH_MACMDIOAR_SKAP_Msk   /* Skip Address Packet */\n#define ETH_MACMDIOAR_MOC_Pos                         (2U)\n#define ETH_MACMDIOAR_MOC_Msk                         (0x3UL << ETH_MACMDIOAR_MOC_Pos) /*!< 0x0000000C */\n#define ETH_MACMDIOAR_MOC                             ETH_MACMDIOAR_MOC_Msk    /* MII Operation Command */\n#define ETH_MACMDIOAR_MOC_WR_Pos                      (2U)\n#define ETH_MACMDIOAR_MOC_WR_Msk                      (0x1UL << ETH_MACMDIOAR_MOC_WR_Pos) /*!< 0x00000004 */\n#define ETH_MACMDIOAR_MOC_WR                          ETH_MACMDIOAR_MOC_WR_Msk /* Write */\n#define ETH_MACMDIOAR_MOC_PRDIA_Pos                   (3U)\n#define ETH_MACMDIOAR_MOC_PRDIA_Msk                   (0x1UL << ETH_MACMDIOAR_MOC_PRDIA_Pos) /*!< 0x00000008 */\n#define ETH_MACMDIOAR_MOC_PRDIA                       ETH_MACMDIOAR_MOC_PRDIA_Msk /* Post Read Increment Address for Clause 45 PHY */\n#define ETH_MACMDIOAR_MOC_RD_Pos                      (2U)\n#define ETH_MACMDIOAR_MOC_RD_Msk                      (0x3UL << ETH_MACMDIOAR_MOC_RD_Pos) /*!< 0x0000000C */\n#define ETH_MACMDIOAR_MOC_RD                          ETH_MACMDIOAR_MOC_RD_Msk /* Read */\n#define ETH_MACMDIOAR_C45E_Pos                        (1U)\n#define ETH_MACMDIOAR_C45E_Msk                        (0x1UL << ETH_MACMDIOAR_C45E_Pos) /*!< 0x00000002 */\n#define ETH_MACMDIOAR_C45E                            ETH_MACMDIOAR_C45E_Msk   /* Clause 45 PHY Enable */\n#define ETH_MACMDIOAR_MB_Pos                          (0U)\n#define ETH_MACMDIOAR_MB_Msk                          (0x1UL << ETH_MACMDIOAR_MB_Pos) /*!< 0x00000001 */\n#define ETH_MACMDIOAR_MB                              ETH_MACMDIOAR_MB_Msk     /* MII Busy */\n\n/* Bit definition for Ethernet MAC MDIO Data Register */\n#define ETH_MACMDIODR_RA_Pos                          (16U)\n#define ETH_MACMDIODR_RA_Msk                          (0xFFFFUL << ETH_MACMDIODR_RA_Pos) /*!< 0xFFFF0000 */\n#define ETH_MACMDIODR_RA                              ETH_MACMDIODR_RA_Msk     /* Register Address */\n#define ETH_MACMDIODR_MD_Pos                          (0U)\n#define ETH_MACMDIODR_MD_Msk                          (0xFFFFUL << ETH_MACMDIODR_MD_Pos) /*!< 0x0000FFFF */\n#define ETH_MACMDIODR_MD                              ETH_MACMDIODR_MD_Msk     /* MII Data */\n\n/* Bit definition for Ethernet ARP Address Register */\n#define ETH_MACARPAR_ARPPA_Pos                         (0U)\n#define ETH_MACARPAR_ARPPA_Msk                         (0xFFFFFFFFUL << ETH_MACARPAR_ARPPA_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACARPAR_ARPPA                             ETH_MACARPAR_ARPPA_Msk     /* ARP Protocol Address */\n\n/* Bit definition for Ethernet MAC Address 0 High Register */\n#define ETH_MACA0HR_AE_Pos                            (31U)\n#define ETH_MACA0HR_AE_Msk                            (0x1UL << ETH_MACA0HR_AE_Pos) /*!< 0x80000000 */\n#define ETH_MACA0HR_AE                                ETH_MACA0HR_AE_Msk /* Address Enable*/\n#define ETH_MACA0HR_ADDRHI_Pos                        (0U)\n#define ETH_MACA0HR_ADDRHI_Msk                        (0xFFFFUL << ETH_MACA0HR_ADDRHI_Pos) /*!< 0x0000FFFF */\n#define ETH_MACA0HR_ADDRHI                            ETH_MACA0HR_ADDRHI_Msk   /* MAC Address 0*/\n\n/* Bit definition for Ethernet MAC Address 0 Low Register */\n#define ETH_MACA0LR_ADDRLO_Pos                        (0U)\n#define ETH_MACA0LR_ADDRLO_Msk                        (0xFFFFFFFFUL << ETH_MACA0LR_ADDRLO_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACA0LR_ADDRLO                            ETH_MACA0LR_ADDRLO_Msk   /* MAC Address 0*/\n\n/* Bit definition for Ethernet MAC Address 1 High Register */\n#define ETH_MACA1HR_AE_Pos                            (31U)\n#define ETH_MACA1HR_AE_Msk                            (0x1UL << ETH_MACA1HR_AE_Pos) /*!< 0x80000000 */\n#define ETH_MACA1HR_AE                                ETH_MACA1HR_AE_Msk /* Address Enable*/\n#define ETH_MACA1HR_SA_Pos                            (30U)\n#define ETH_MACA1HR_SA_Msk                            (0x1UL << ETH_MACA1HR_SA_Pos) /*!< 0x40000000 */\n#define ETH_MACA1HR_SA                                ETH_MACA1HR_SA_Msk /* Source Address */\n#define ETH_MACA1HR_MBC_Pos                           (24U)\n#define ETH_MACA1HR_MBC_Msk                           (0x3FUL << ETH_MACA1HR_MBC_Pos) /*!< 0x3F000000 */\n#define ETH_MACA1HR_MBC                               ETH_MACA1HR_MBC_Msk /* Mask Byte Control */\n#define ETH_MACA1HR_ADDRHI_Pos                        (0U)\n#define ETH_MACA1HR_ADDRHI_Msk                        (0xFFFFUL << ETH_MACA1HR_ADDRHI_Pos) /*!< 0x0000FFFF */\n#define ETH_MACA1HR_ADDRHI                            ETH_MACA1HR_ADDRHI_Msk   /* MAC Address 1*/\n\n/* Bit definition for Ethernet MAC Address 1 Low Register */\n#define ETH_MACA1LR_ADDRLO_Pos                        (0U)\n#define ETH_MACA1LR_ADDRLO_Msk                        (0xFFFFFFFFUL << ETH_MACA1LR_ADDRLO_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACA1LR_ADDRLO                            ETH_MACA1LR_ADDRLO_Msk   /* MAC Address 1*/\n\n/* Bit definition for Ethernet MAC Address 2 High Register */\n#define ETH_MACA2HR_AE_Pos                            (31U)\n#define ETH_MACA2HR_AE_Msk                            (0x1UL << ETH_MACA2HR_AE_Pos) /*!< 0x80000000 */\n#define ETH_MACA2HR_AE                                ETH_MACA2HR_AE_Msk /* Address Enable*/\n#define ETH_MACA2HR_SA_Pos                            (30U)\n#define ETH_MACA2HR_SA_Msk                            (0x1UL << ETH_MACA2HR_SA_Pos) /*!< 0x40000000 */\n#define ETH_MACA2HR_SA                                ETH_MACA2HR_SA_Msk /* Source Address */\n#define ETH_MACA2HR_MBC_Pos                           (24U)\n#define ETH_MACA2HR_MBC_Msk                           (0x3FUL << ETH_MACA2HR_MBC_Pos) /*!< 0x3F000000 */\n#define ETH_MACA2HR_MBC                               ETH_MACA2HR_MBC_Msk /* Mask Byte Control */\n#define ETH_MACA2HR_ADDRHI_Pos                        (0U)\n#define ETH_MACA2HR_ADDRHI_Msk                        (0xFFFFUL << ETH_MACA2HR_ADDRHI_Pos) /*!< 0x0000FFFF */\n#define ETH_MACA2HR_ADDRHI                            ETH_MACA2HR_ADDRHI_Msk   /* MAC Address 1*/\n\n/* Bit definition for Ethernet MAC Address 2 Low Register */\n#define ETH_MACA2LR_ADDRLO_Pos                        (0U)\n#define ETH_MACA2LR_ADDRLO_Msk                        (0xFFFFFFFFUL << ETH_MACA2LR_ADDRLO_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACA2LR_ADDRLO                            ETH_MACA2LR_ADDRLO_Msk   /* MAC Address 2*/\n\n/* Bit definition for Ethernet MAC Address 3 High Register */\n#define ETH_MACA3HR_AE_Pos                            (31U)\n#define ETH_MACA3HR_AE_Msk                            (0x1UL << ETH_MACA3HR_AE_Pos) /*!< 0x80000000 */\n#define ETH_MACA3HR_AE                                ETH_MACA3HR_AE_Msk /* Address Enable*/\n#define ETH_MACA3HR_SA_Pos                            (30U)\n#define ETH_MACA3HR_SA_Msk                            (0x1UL << ETH_MACA3HR_SA_Pos) /*!< 0x40000000 */\n#define ETH_MACA3HR_SA                                ETH_MACA3HR_SA_Msk /* Source Address */\n#define ETH_MACA3HR_MBC_Pos                           (24U)\n#define ETH_MACA3HR_MBC_Msk                           (0x3FUL << ETH_MACA3HR_MBC_Pos) /*!< 0x3F000000 */\n#define ETH_MACA3HR_MBC                               ETH_MACA3HR_MBC_Msk /* Mask Byte Control */\n#define ETH_MACA3HR_ADDRHI_Pos                        (0U)\n#define ETH_MACA3HR_ADDRHI_Msk                        (0xFFFFUL << ETH_MACA3HR_ADDRHI_Pos) /*!< 0x0000FFFF */\n#define ETH_MACA3HR_ADDRHI                            ETH_MACA3HR_ADDRHI_Msk   /* MAC Address 1*/\n\n/* Bit definition for Ethernet MAC Address 3 Low Register */\n#define ETH_MACA3LR_ADDRLO_Pos                        (0U)\n#define ETH_MACA3LR_ADDRLO_Msk                        (0xFFFFFFFFUL << ETH_MACA3LR_ADDRLO_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACA3LR_ADDRLO                            ETH_MACA3LR_ADDRLO_Msk   /* MAC Address 3*/\n\n/* Bit definition for Ethernet MAC Address High Register */\n#define ETH_MACAHR_AE_Pos                             (31U)\n#define ETH_MACAHR_AE_Msk                             (0x1UL << ETH_MACAHR_AE_Pos) /*!< 0x80000000 */\n#define ETH_MACAHR_AE                                 ETH_MACAHR_AE_Msk        /* Address enable */\n#define ETH_MACAHR_SA_Pos                             (30U)\n#define ETH_MACAHR_SA_Msk                             (0x1UL << ETH_MACAHR_SA_Pos) /*!< 0x40000000 */\n#define ETH_MACAHR_SA                                 ETH_MACAHR_SA_Msk        /* Source address */\n#define ETH_MACAHR_MBC_Pos                            (24U)\n#define ETH_MACAHR_MBC_Msk                            (0x3FUL << ETH_MACAHR_MBC_Pos) /*!< 0x3F000000 */\n#define ETH_MACAHR_MBC                                ETH_MACAHR_MBC_Msk       /* Mask byte control: bits to mask for comparison of the MAC Address bytes */\n#define ETH_MACAHR_MBC_HBITS15_8                      ((uint32_t)0x20000000)   /* Mask MAC Address high reg bits [15:8] */\n#define ETH_MACAHR_MBC_HBITS7_0                       ((uint32_t)0x10000000)   /* Mask MAC Address high reg bits [7:0] */\n#define ETH_MACAHR_MBC_LBITS31_24                     ((uint32_t)0x08000000)   /* Mask MAC Address low reg bits [31:24] */\n#define ETH_MACAHR_MBC_LBITS23_16                     ((uint32_t)0x04000000)   /* Mask MAC Address low reg bits [23:16] */\n#define ETH_MACAHR_MBC_LBITS15_8                      ((uint32_t)0x02000000)   /* Mask MAC Address low reg bits [15:8] */\n#define ETH_MACAHR_MBC_LBITS7_0                       ((uint32_t)0x01000000)   /* Mask MAC Address low reg bits [7:0] */\n#define ETH_MACAHR_MACAH_Pos                          (0U)\n#define ETH_MACAHR_MACAH_Msk                          (0xFFFFUL << ETH_MACAHR_MACAH_Pos) /*!< 0x0000FFFF */\n#define ETH_MACAHR_MACAH                              ETH_MACAHR_MACAH_Msk     /* MAC address high */\n\n/* Bit definition for Ethernet MAC Address Low Register */\n#define ETH_MACALR_MACAL_Pos                          (0U)\n#define ETH_MACALR_MACAL_Msk                          (0xFFFFFFFFUL << ETH_MACALR_MACAL_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACALR_MACAL                              ETH_MACALR_MACAL_Msk     /* MAC address low */\n\n/* Bit definition for Ethernet MMC Control Register */\n#define ETH_MMCCR_UCDBC_Pos                           (8U)\n#define ETH_MMCCR_UCDBC_Msk                           (0x1UL << ETH_MMCCR_UCDBC_Pos) /*!< 0x00000100 */\n#define ETH_MMCCR_UCDBC                               ETH_MMCCR_UCDBC_Msk  /* Update MMC Counters for Dropped Broadcast Packets */\n#define ETH_MMCCR_CNTPRSTLVL_Pos                      (5U)\n#define ETH_MMCCR_CNTPRSTLVL_Msk                      (0x1UL << ETH_MMCCR_CNTPRSTLVL_Pos) /*!< 0x00000020 */\n#define ETH_MMCCR_CNTPRSTLVL                          ETH_MMCCR_CNTPRSTLVL_Msk  /* Full-Half Preset */\n#define ETH_MMCCR_CNTPRST_Pos                         (4U)\n#define ETH_MMCCR_CNTPRST_Msk                         (0x1UL << ETH_MMCCR_CNTPRST_Pos) /*!< 0x00000010 */\n#define ETH_MMCCR_CNTPRST                             ETH_MMCCR_CNTPRST_Msk  /* Counters Reset */\n#define ETH_MMCCR_CNTFREEZ_Pos                        (3U)\n#define ETH_MMCCR_CNTFREEZ_Msk                        (0x1UL << ETH_MMCCR_CNTFREEZ_Pos) /*!< 0x00000008 */\n#define ETH_MMCCR_CNTFREEZ                            ETH_MMCCR_CNTFREEZ_Msk  /* MMC Counter Freeze */\n#define ETH_MMCCR_RSTONRD_Pos                         (2U)\n#define ETH_MMCCR_RSTONRD_Msk                         (0x1UL << ETH_MMCCR_RSTONRD_Pos) /*!< 0x00000004 */\n#define ETH_MMCCR_RSTONRD                             ETH_MMCCR_RSTONRD_Msk  /* Reset On Read */\n#define ETH_MMCCR_CNTSTOPRO_Pos                       (1U)\n#define ETH_MMCCR_CNTSTOPRO_Msk                       (0x1UL << ETH_MMCCR_CNTSTOPRO_Pos) /*!< 0x00000002 */\n#define ETH_MMCCR_CNTSTOPRO                           ETH_MMCCR_CNTSTOPRO_Msk  /* Counter Stop Rollover */\n#define ETH_MMCCR_CNTRST_Pos                          (0U)\n#define ETH_MMCCR_CNTRST_Msk                          (0x1UL << ETH_MMCCR_CNTRST_Pos) /*!< 0x00000001 */\n#define ETH_MMCCR_CNTRST                              ETH_MMCCR_CNTRST_Msk  /* Counters Reset */\n\n/* Bit definition for Ethernet MMC Rx Interrupt Register */\n#define ETH_MMCRIR_RXLPITRCIS_Pos                     (27U)\n#define ETH_MMCRIR_RXLPITRCIS_Msk                     (0x1UL << ETH_MMCRIR_RXLPITRCIS_Pos) /*!< 0x08000000 */\n#define ETH_MMCRIR_RXLPITRCIS                         ETH_MMCRIR_RXLPITRCIS_Msk  /* MMC Receive LPI transition counter interrupt status */\n#define ETH_MMCRIR_RXLPIUSCIS_Pos                     (26U)\n#define ETH_MMCRIR_RXLPIUSCIS_Msk                     (0x1UL << ETH_MMCRIR_RXLPIUSCIS_Pos) /*!< 0x04000000 */\n#define ETH_MMCRIR_RXLPIUSCIS                         ETH_MMCRIR_RXLPIUSCIS_Msk  /* MMC Receive LPI microsecond counter interrupt status */\n#define ETH_MMCRIR_RXUCGPIS_Pos                       (17U)\n#define ETH_MMCRIR_RXUCGPIS_Msk                       (0x1UL << ETH_MMCRIR_RXUCGPIS_Pos) /*!< 0x00020000 */\n#define ETH_MMCRIR_RXUCGPIS                           ETH_MMCRIR_RXUCGPIS_Msk  /* MMC Receive Unicast Good Packet Counter Interrupt Status */\n#define ETH_MMCRIR_RXALGNERPIS_Pos                    (6U)\n#define ETH_MMCRIR_RXALGNERPIS_Msk                    (0x1UL << ETH_MMCRIR_RXALGNERPIS_Pos) /*!< 0x00000040 */\n#define ETH_MMCRIR_RXALGNERPIS                        ETH_MMCRIR_RXALGNERPIS_Msk  /* MMC Receive Alignment Error Packet Counter Interrupt Status */\n#define ETH_MMCRIR_RXCRCERPIS_Pos                     (5U)\n#define ETH_MMCRIR_RXCRCERPIS_Msk                     (0x1UL << ETH_MMCRIR_RXCRCERPIS_Pos) /*!< 0x00000020 */\n#define ETH_MMCRIR_RXCRCERPIS                         ETH_MMCRIR_RXCRCERPIS_Msk  /* MMC Receive CRC Error Packet Counter Interrupt Status */\n\n/* Bit definition for Ethernet MMC Tx Interrupt Register */\n#define ETH_MMCTIR_TXLPITRCIS_Pos                     (27U)\n#define ETH_MMCTIR_TXLPITRCIS_Msk                     (0x1UL << ETH_MMCTIR_TXLPITRCIS_Pos) /*!< 0x08000000 */\n#define ETH_MMCTIR_TXLPITRCIS                         ETH_MMCTIR_TXLPITRCIS_Msk  /* MMC Transmit LPI transition counter interrupt status */\n#define ETH_MMCTIR_TXLPIUSCIS_Pos                     (26U)\n#define ETH_MMCTIR_TXLPIUSCIS_Msk                     (0x1UL << ETH_MMCTIR_TXLPIUSCIS_Pos) /*!< 0x04000000 */\n#define ETH_MMCTIR_TXLPIUSCIS                         ETH_MMCTIR_TXLPIUSCIS_Msk  /* MMC Transmit LPI microsecond counter interrupt status */\n#define ETH_MMCTIR_TXGPKTIS_Pos                       (21U)\n#define ETH_MMCTIR_TXGPKTIS_Msk                       (0x1UL << ETH_MMCTIR_TXGPKTIS_Pos) /*!< 0x00200000 */\n#define ETH_MMCTIR_TXGPKTIS                           ETH_MMCTIR_TXGPKTIS_Msk  /* MMC Transmit Good Packet Counter Interrupt Status */\n#define ETH_MMCTIR_TXMCOLGPIS_Pos                     (15U)\n#define ETH_MMCTIR_TXMCOLGPIS_Msk                     (0x1UL << ETH_MMCTIR_TXMCOLGPIS_Pos) /*!< 0x00008000 */\n#define ETH_MMCTIR_TXMCOLGPIS                         ETH_MMCTIR_TXMCOLGPIS_Msk  /* MMC Transmit Multiple Collision Good Packet Counter Interrupt Status */\n#define ETH_MMCTIR_TXSCOLGPIS_Pos                     (14U)\n#define ETH_MMCTIR_TXSCOLGPIS_Msk                     (0x1UL << ETH_MMCTIR_TXSCOLGPIS_Pos) /*!< 0x00004000 */\n#define ETH_MMCTIR_TXSCOLGPIS                         ETH_MMCTIR_TXSCOLGPIS_Msk  /* MMC Transmit Single Collision Good Packet Counter Interrupt Status */\n\n/* Bit definition for Ethernet MMC Rx interrupt Mask register */\n#define ETH_MMCRIMR_RXLPITRCIM_Pos                    (27U)\n#define ETH_MMCRIMR_RXLPITRCIM_Msk                    (0x1UL << ETH_MMCRIMR_RXLPITRCIM_Pos) /*!< 0x08000000 */\n#define ETH_MMCRIMR_RXLPITRCIM                        ETH_MMCRIMR_RXLPITRCIM_Msk  /* MMC Receive LPI transition counter interrupt Mask */\n#define ETH_MMCRIMR_RXLPIUSCIM_Pos                    (26U)\n#define ETH_MMCRIMR_RXLPIUSCIM_Msk                    (0x1UL << ETH_MMCRIMR_RXLPIUSCIM_Pos) /*!< 0x04000000 */\n#define ETH_MMCRIMR_RXLPIUSCIM                        ETH_MMCRIMR_RXLPIUSCIM_Msk  /* MMC Receive LPI microsecond counter interrupt Mask */\n#define ETH_MMCRIMR_RXUCGPIM_Pos                      (17U)\n#define ETH_MMCRIMR_RXUCGPIM_Msk                      (0x1UL << ETH_MMCRIMR_RXUCGPIM_Pos) /*!< 0x00020000 */\n#define ETH_MMCRIMR_RXUCGPIM                          ETH_MMCRIMR_RXUCGPIM_Msk  /* MMC Receive Unicast Good Packet Counter Interrupt Mask */\n#define ETH_MMCRIMR_RXALGNERPIM_Pos                   (6U)\n#define ETH_MMCRIMR_RXALGNERPIM_Msk                   (0x1UL << ETH_MMCRIMR_RXALGNERPIM_Pos) /*!< 0x00000040 */\n#define ETH_MMCRIMR_RXALGNERPIM                       ETH_MMCRIMR_RXALGNERPIM_Msk  /* MMC Receive Alignment Error Packet Counter Interrupt Mask */\n#define ETH_MMCRIMR_RXCRCERPIM_Pos                    (5U)\n#define ETH_MMCRIMR_RXCRCERPIM_Msk                    (0x1UL << ETH_MMCRIMR_RXCRCERPIM_Pos) /*!< 0x00000020 */\n#define ETH_MMCRIMR_RXCRCERPIM                        ETH_MMCRIMR_RXCRCERPIM_Msk  /* MMC Receive CRC Error Packet Counter Interrupt Mask */\n\n/* Bit definition for Ethernet MMC Tx Interrupt Mask Register */\n#define ETH_MMCTIMR_TXLPITRCIM_Pos                    (27U)\n#define ETH_MMCTIMR_TXLPITRCIM_Msk                    (0x1UL << ETH_MMCTIMR_TXLPITRCIM_Pos) /*!< 0x08000000 */\n#define ETH_MMCTIMR_TXLPITRCIM                        ETH_MMCTIMR_TXLPITRCIM_Msk  /* MMC Transmit LPI transition counter interrupt Mask*/\n#define ETH_MMCTIMR_TXLPIUSCIM_Pos                    (26U)\n#define ETH_MMCTIMR_TXLPIUSCIM_Msk                    (0x1UL << ETH_MMCTIMR_TXLPIUSCIM_Pos) /*!< 0x04000000 */\n#define ETH_MMCTIMR_TXLPIUSCIM                        ETH_MMCTIMR_TXLPIUSCIM_Msk  /* MMC Transmit LPI microsecond counter interrupt Mask*/\n#define ETH_MMCTIMR_TXGPKTIM_Pos                      (21U)\n#define ETH_MMCTIMR_TXGPKTIM_Msk                      (0x1UL << ETH_MMCTIMR_TXGPKTIM_Pos) /*!< 0x00200000 */\n#define ETH_MMCTIMR_TXGPKTIM                          ETH_MMCTIMR_TXGPKTIM_Msk  /* MMC Transmit Good Packet Counter Interrupt Mask*/\n#define ETH_MMCTIMR_TXMCOLGPIM_Pos                    (15U)\n#define ETH_MMCTIMR_TXMCOLGPIM_Msk                    (0x1UL << ETH_MMCTIMR_TXMCOLGPIM_Pos) /*!< 0x00008000 */\n#define ETH_MMCTIMR_TXMCOLGPIM                        ETH_MMCTIMR_TXMCOLGPIM_Msk  /* MMC Transmit Multiple Collision Good Packet Counter Interrupt Mask */\n#define ETH_MMCTIMR_TXSCOLGPIM_Pos                    (14U)\n#define ETH_MMCTIMR_TXSCOLGPIM_Msk                    (0x1UL << ETH_MMCTIMR_TXSCOLGPIM_Pos) /*!< 0x00004000 */\n#define ETH_MMCTIMR_TXSCOLGPIM                        ETH_MMCTIMR_TXSCOLGPIM_Msk  /* MMC Transmit Single Collision Good Packet Counter Interrupt Mask */\n\n/* Bit definition for Ethernet MMC Tx Single Collision Good Packets Register */\n#define ETH_MMCTSCGPR_TXSNGLCOLG_Pos                  (0U)\n#define ETH_MMCTSCGPR_TXSNGLCOLG_msk                  (0xFFFFFFFFUL <<  ETH_MMCTSCGPR_TXSNGLCOLG_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCTSCGPR_TXSNGLCOLG                      ETH_MMCTSCGPR_TXSNGLCOLG_msk /* Tx Single Collision Good Packets */\n\n/* Bit definition for Ethernet MMC Tx Multiple Collision Good Packets Register */\n#define ETH_MMCTMCGPR_TXMULTCOLG_Pos                  (0U)\n#define ETH_MMCTMCGPR_TXMULTCOLG_msk                  (0xFFFFFFFFUL <<  ETH_MMCTMCGPR_TXMULTCOLG_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCTMCGPR_TXMULTCOLG                      ETH_MMCTMCGPR_TXMULTCOLG_msk /* Tx Multiple Collision Good Packets */\n\n/* Bit definition for Ethernet MMC Tx Packet Count Good Register */\n#define ETH_MMCTPCGR_TXPKTG_Pos                       (0U)\n#define ETH_MMCTPCGR_TXPKTG_msk                       (0xFFFFFFFFUL <<  ETH_MMCTPCGR_TXPKTG_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCTPCGR_TXPKTG                           ETH_MMCTPCGR_TXPKTG_msk /* Tx Packet Count Good */\n\n/* Bit definition for Ethernet MMC Rx CRC Error Packets Register */\n#define ETH_MMCRCRCEPR_RXCRCERR_Pos                   (0U)\n#define ETH_MMCRCRCEPR_RXCRCERR_msk                   (0xFFFFFFFFUL <<  ETH_MMCRCRCEPR_RXCRCERR_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCRCRCEPR_RXCRCERR                       ETH_MMCRCRCEPR_RXCRCERR_msk /* Rx CRC Error Packets */\n\n/* Bit definition for Ethernet MMC Rx alignment error packets register */\n#define ETH_MMCRAEPR_RXALGNERR_Pos                    (0U)\n#define ETH_MMCRAEPR_RXALGNERR_msk                    (0xFFFFFFFFUL <<  ETH_MMCRAEPR_RXALGNERR_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCRAEPR_RXALGNERR                        ETH_MMCRAEPR_RXALGNERR_msk /* Rx Alignment Error Packets */\n\n/* Bit definition for Ethernet MMC Rx Unicast Packets Good Register */\n#define ETH_MMCRUPGR_RXUCASTG_Pos                     (0U)\n#define ETH_MMCRUPGR_RXUCASTG_msk                     (0xFFFFFFFFUL <<  ETH_MMCRUPGR_RXUCASTG_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCRUPGR_RXUCASTG                         ETH_MMCRUPGR_RXUCASTG_msk /* Rx Unicast Packets Good */\n\n/* Bit definition for Ethernet MMC Tx LPI Microsecond Timer Register */\n#define ETH_MMCTLPIMSTR_TXLPIUSC_Pos                  (0U)\n#define ETH_MMCTLPIMSTR_TXLPIUSC_msk                  (0xFFFFFFFFUL <<  ETH_MMCTLPIMSTR_TXLPIUSC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCTLPIMSTR_TXLPIUSC                      ETH_MMCTLPIMSTR_TXLPIUSC_msk /* Tx LPI Microseconds Counter */\n\n/* Bit definition for Ethernet MMC Tx LPI Transition Counter Register */\n#define ETH_MMCTLPITCR_TXLPITRC_Pos                   (0U)\n#define ETH_MMCTLPITCR_TXLPITRC_msk                   (0xFFFFFFFFUL <<  ETH_MMCTLPITCR_TXLPITRC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCTLPITCR_TXLPITRC                       ETH_MMCTLPITCR_TXLPITRC_msk /* Tx LPI Transition counter */\n\n/* Bit definition for Ethernet MMC Rx LPI Microsecond Counter Register */\n#define ETH_MMCRLPIMSTR_RXLPIUSC_Pos                  (0U)\n#define ETH_MMCRLPIMSTR_RXLPIUSC_msk                  (0xFFFFFFFFUL <<  ETH_MMCRLPIMSTR_RXLPIUSC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCRLPIMSTR_RXLPIUSC                      ETH_MMCRLPIMSTR_RXLPIUSC_msk /* Rx LPI Microseconds Counter */\n\n/* Bit definition for Ethernet MMC Rx LPI Transition Counter Register */\n#define ETH_MMCRLPITCR_RXLPITRC_Pos                   (0U)\n#define ETH_MMCRLPITCR_RXLPITRC_msk                   (0xFFFFFFFFUL <<  ETH_MMCRLPITCR_RXLPITRC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MMCRLPITCR_RXLPITRC                       ETH_MMCRLPITCR_RXLPITRC_msk /* Rx LPI Transition counter */\n\n/* Bit definition for Ethernet MAC L3 L4 Control Register */\n#define ETH_MACL3L4CR_L4DPIM_Pos                      (21U)\n#define ETH_MACL3L4CR_L4DPIM_Msk                      (0x1UL << ETH_MACL3L4CR_L4DPIM_Pos) /*!< 0x00200000 */\n#define ETH_MACL3L4CR_L4DPIM                          ETH_MACL3L4CR_L4DPIM_Msk /* Layer 4 Destination Port Inverse Match Enable */\n#define ETH_MACL3L4CR_L4DPM_Pos                       (20U)\n#define ETH_MACL3L4CR_L4DPM_Msk                       (0x1UL << ETH_MACL3L4CR_L4DPM_Pos) /*!< 0x00100000 */\n#define ETH_MACL3L4CR_L4DPM                           ETH_MACL3L4CR_L4DPM_Msk  /* Layer 4 Destination Port Match Enable */\n#define ETH_MACL3L4CR_L4SPIM_Pos                      (19U)\n#define ETH_MACL3L4CR_L4SPIM_Msk                      (0x1UL << ETH_MACL3L4CR_L4SPIM_Pos) /*!< 0x00080000 */\n#define ETH_MACL3L4CR_L4SPIM                          ETH_MACL3L4CR_L4SPIM_Msk /* Layer 4 Source Port Inverse Match Enable */\n#define ETH_MACL3L4CR_L4SPM_Pos                       (18U)\n#define ETH_MACL3L4CR_L4SPM_Msk                       (0x1UL << ETH_MACL3L4CR_L4SPM_Pos) /*!< 0x00040000 */\n#define ETH_MACL3L4CR_L4SPM                           ETH_MACL3L4CR_L4SPM_Msk  /* Layer 4 Source Port Match Enable */\n#define ETH_MACL3L4CR_L4PEN_Pos                       (16U)\n#define ETH_MACL3L4CR_L4PEN_Msk                       (0x1UL << ETH_MACL3L4CR_L4PEN_Pos) /*!< 0x00010000 */\n#define ETH_MACL3L4CR_L4PEN                           ETH_MACL3L4CR_L4PEN_Msk  /* Layer 4 Protocol Enable */\n#define ETH_MACL3L4CR_L3HDBM_Pos                      (11U)\n#define ETH_MACL3L4CR_L3HDBM_Msk                      (0x1FUL << ETH_MACL3L4CR_L3HDBM_Pos) /*!< 0x0000F800 */\n#define ETH_MACL3L4CR_L3HDBM                          ETH_MACL3L4CR_L3HDBM_Msk /* Layer 3 IP DA Higher Bits Match */\n#define ETH_MACL3L4CR_L3HSBM_Pos                      (6U)\n#define ETH_MACL3L4CR_L3HSBM_Msk                      (0x1FUL << ETH_MACL3L4CR_L3HSBM_Pos) /*!< 0x000007C0 */\n#define ETH_MACL3L4CR_L3HSBM                          ETH_MACL3L4CR_L3HSBM_Msk /* Layer 3 IP SA Higher Bits Match */\n#define ETH_MACL3L4CR_L3DAIM_Pos                      (5U)\n#define ETH_MACL3L4CR_L3DAIM_Msk                      (0x1UL << ETH_MACL3L4CR_L3DAIM_Pos) /*!< 0x00000020 */\n#define ETH_MACL3L4CR_L3DAIM                          ETH_MACL3L4CR_L3DAIM_Msk /* Layer 3 IP DA Inverse Match Enable */\n#define ETH_MACL3L4CR_L3DAM_Pos                       (4U)\n#define ETH_MACL3L4CR_L3DAM_Msk                       (0x1UL << ETH_MACL3L4CR_L3DAM_Pos) /*!< 0x00000010 */\n#define ETH_MACL3L4CR_L3DAM                           ETH_MACL3L4CR_L3DAM_Msk  /* Layer 3 IP DA Match Enable */\n#define ETH_MACL3L4CR_L3SAIM_Pos                      (3U)\n#define ETH_MACL3L4CR_L3SAIM_Msk                      (0x1UL << ETH_MACL3L4CR_L3SAIM_Pos) /*!< 0x00000008 */\n#define ETH_MACL3L4CR_L3SAIM                          ETH_MACL3L4CR_L3SAIM_Msk /* Layer 3 IP SA Inverse Match Enable */\n#define ETH_MACL3L4CR_L3SAM_Pos                       (2U)\n#define ETH_MACL3L4CR_L3SAM_Msk                       (0x1UL << ETH_MACL3L4CR_L3SAM_Pos) /*!< 0x00000004 */\n#define ETH_MACL3L4CR_L3SAM                           ETH_MACL3L4CR_L3SAM_Msk  /* Layer 3 IP SA Match Enable*/\n#define ETH_MACL3L4CR_L3PEN_Pos                       (0U)\n#define ETH_MACL3L4CR_L3PEN_Msk                       (0x1UL << ETH_MACL3L4CR_L3PEN_Pos) /*!< 0x00000001 */\n#define ETH_MACL3L4CR_L3PEN                           ETH_MACL3L4CR_L3PEN_Msk  /* Layer 3 Protocol Enable */\n\n/* Bit definition for Ethernet MAC L4 Address Register */\n#define ETH_MACL4AR_L4DP_Pos                          (16U)\n#define ETH_MACL4AR_L4DP_Msk                          (0xFFFFUL << ETH_MACL4AR_L4DP_Pos) /*!< 0xFFFF0000 */\n#define ETH_MACL4AR_L4DP                              ETH_MACL4AR_L4DP_Msk     /* Layer 4 Destination Port Number Field */\n#define ETH_MACL4AR_L4SP_Pos                          (0U)\n#define ETH_MACL4AR_L4SP_Msk                          (0xFFFFUL << ETH_MACL4AR_L4SP_Pos) /*!< 0x0000FFFF */\n#define ETH_MACL4AR_L4SP                              ETH_MACL4AR_L4SP_Msk     /* Layer 4 Source Port Number Field */\n\n/* Bit definition for Ethernet MAC L3 Address0 Register */\n#define ETH_MACL3A0R_L3A0_Pos                         (0U)\n#define ETH_MACL3A0R_L3A0_Msk                         (0xFFFFFFFFUL << ETH_MACL3A0R_L3A0_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACL3A0R_L3A0                             ETH_MACL3A0R_L3A0_Msk    /* Layer 3 Address 0 Field */\n\n/* Bit definition for Ethernet MAC L4 Address1 Register */\n#define ETH_MACL3A1R_L3A1_Pos                         (0U)\n#define ETH_MACL3A1R_L3A1_Msk                         (0xFFFFFFFFUL << ETH_MACL3A1R_L3A1_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACL3A1R_L3A1                             ETH_MACL3A1R_L3A1_Msk    /* Layer 3 Address 1 Field */\n\n/* Bit definition for Ethernet MAC L4 Address2 Register */\n#define ETH_MACL3A2R_L3A2_Pos                         (0U)\n#define ETH_MACL3A2R_L3A2_Msk                         (0xFFFFFFFFUL << ETH_MACL3A2R_L3A2_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACL3A2R_L3A2                             ETH_MACL3A2R_L3A2_Msk    /* Layer 3 Address 2 Field */\n\n/* Bit definition for Ethernet MAC L4 Address3 Register */\n#define ETH_MACL3A3R_L3A3_Pos                         (0U)\n#define ETH_MACL3A3R_L3A3_Msk                         (0xFFFFFFFFUL << ETH_MACL3A3R_L3A3_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACL3A3R_L3A3                             ETH_MACL3A3R_L3A3_Msk    /* Layer 3 Address 3 Field */\n\n/* Bit definition for Ethernet MAC Timestamp Control Register */\n#define ETH_MACTSCR_TXTSSTSM_Pos                      (24U)\n#define ETH_MACTSCR_TXTSSTSM_Msk                      (0x1UL << ETH_MACTSCR_TXTSSTSM_Pos) /*!< 0x01000000 */\n#define ETH_MACTSCR_TXTSSTSM                          ETH_MACTSCR_TXTSSTSM_Msk  /* Transmit Timestamp Status Mode */\n#define ETH_MACTSCR_CSC_Pos                           (19U)\n#define ETH_MACTSCR_CSC_Msk                           (0x1UL << ETH_MACTSCR_CSC_Pos) /*!< 0x00080000 */\n#define ETH_MACTSCR_CSC                               ETH_MACTSCR_CSC_Msk  /* Enable checksum correction during OST for PTP over UDP/IPv4 packets */\n#define ETH_MACTSCR_TSENMACADDR_Pos                   (18U)\n#define ETH_MACTSCR_TSENMACADDR_Msk                   (0x1UL << ETH_MACTSCR_TSENMACADDR_Pos) /*!< 0x00040000 */\n#define ETH_MACTSCR_TSENMACADDR                       ETH_MACTSCR_TSENMACADDR_Msk  /* Enable MAC Address for PTP Packet Filtering */\n#define ETH_MACTSCR_SNAPTYPSEL_Pos                    (16U)\n#define ETH_MACTSCR_SNAPTYPSEL_Msk                    (0x3UL << ETH_MACTSCR_SNAPTYPSEL_Pos) /*!< 0x00030000 */\n#define ETH_MACTSCR_SNAPTYPSEL                        ETH_MACTSCR_SNAPTYPSEL_Msk  /* Select PTP packets for Taking Snapshots */\n#define ETH_MACTSCR_TSMSTRENA_Pos                     (15U)\n#define ETH_MACTSCR_TSMSTRENA_Msk                     (0x1UL << ETH_MACTSCR_TSMSTRENA_Pos) /*!< 0x00008000 */\n#define ETH_MACTSCR_TSMSTRENA                         ETH_MACTSCR_TSMSTRENA_Msk  /* Enable Snapshot for Messages Relevant to Master */\n#define ETH_MACTSCR_TSEVNTENA_Pos                     (14U)\n#define ETH_MACTSCR_TSEVNTENA_Msk                     (0x1UL << ETH_MACTSCR_TSEVNTENA_Pos) /*!< 0x00004000 */\n#define ETH_MACTSCR_TSEVNTENA                         ETH_MACTSCR_TSEVNTENA_Msk  /* Enable Timestamp Snapshot for Event Messages */\n#define ETH_MACTSCR_TSIPV4ENA_Pos                     (13U)\n#define ETH_MACTSCR_TSIPV4ENA_Msk                     (0x1UL << ETH_MACTSCR_TSIPV4ENA_Pos) /*!< 0x00002000 */\n#define ETH_MACTSCR_TSIPV4ENA                         ETH_MACTSCR_TSIPV4ENA_Msk  /* Enable Processing of PTP Packets Sent over IPv4-UDP */\n#define ETH_MACTSCR_TSIPV6ENA_Pos                     (12U)\n#define ETH_MACTSCR_TSIPV6ENA_Msk                     (0x1UL << ETH_MACTSCR_TSIPV6ENA_Pos) /*!< 0x00001000 */\n#define ETH_MACTSCR_TSIPV6ENA                         ETH_MACTSCR_TSIPV6ENA_Msk  /* Enable Processing of PTP Packets Sent over IPv6-UDP */\n#define ETH_MACTSCR_TSIPENA_Pos                       (11U)\n#define ETH_MACTSCR_TSIPENA_Msk                       (0x1UL << ETH_MACTSCR_TSIPENA_Pos) /*!< 0x00000800 */\n#define ETH_MACTSCR_TSIPENA                           ETH_MACTSCR_TSIPENA_Msk  /* Enable Processing of PTP over Ethernet Packets */\n#define ETH_MACTSCR_TSVER2ENA_Pos                     (10U)\n#define ETH_MACTSCR_TSVER2ENA_Msk                     (0x1UL << ETH_MACTSCR_TSVER2ENA_Pos) /*!< 0x00000400 */\n#define ETH_MACTSCR_TSVER2ENA                         ETH_MACTSCR_TSVER2ENA_Msk  /* Enable PTP Packet Processing for Version 2 Format */\n#define ETH_MACTSCR_TSCTRLSSR_Pos                     (9U)\n#define ETH_MACTSCR_TSCTRLSSR_Msk                     (0x1UL << ETH_MACTSCR_TSCTRLSSR_Pos) /*!< 0x00000200 */\n#define ETH_MACTSCR_TSCTRLSSR                         ETH_MACTSCR_TSCTRLSSR_Msk  /* Timestamp Digital or Binary Rollover Control */\n#define ETH_MACTSCR_TSENALL_Pos                       (8U)\n#define ETH_MACTSCR_TSENALL_Msk                       (0x1UL << ETH_MACTSCR_TSENALL_Pos) /*!< 0x00000100 */\n#define ETH_MACTSCR_TSENALL                           ETH_MACTSCR_TSENALL_Msk  /* Enable Timestamp for All Packets */\n#define ETH_MACTSCR_TSADDREG_Pos                      (5U)\n#define ETH_MACTSCR_TSADDREG_Msk                      (0x1UL << ETH_MACTSCR_TSADDREG_Pos) /*!< 0x00000020 */\n#define ETH_MACTSCR_TSADDREG                          ETH_MACTSCR_TSADDREG_Msk  /* Update Addend Register */\n#define ETH_MACTSCR_TSUPDT_Pos                        (3U)\n#define ETH_MACTSCR_TSUPDT_Msk                        (0x1UL << ETH_MACTSCR_TSUPDT_Pos) /*!< 0x00000008 */\n#define ETH_MACTSCR_TSUPDT                            ETH_MACTSCR_TSUPDT_Msk  /* Update Timestamp */\n#define ETH_MACTSCR_TSINIT_Pos                        (2U)\n#define ETH_MACTSCR_TSINIT_Msk                        (0x1UL << ETH_MACTSCR_TSINIT_Pos) /*!< 0x00000004 */\n#define ETH_MACTSCR_TSINIT                             ETH_MACTSCR_TSINIT_Msk  /* Initialize Timestamp */\n#define ETH_MACTSCR_TSCFUPDT_Pos                      (1U)\n#define ETH_MACTSCR_TSCFUPDT_Msk                      (0x1UL << ETH_MACTSCR_TSCFUPDT_Pos) /*!< 0x00000002 */\n#define ETH_MACTSCR_TSCFUPDT                          ETH_MACTSCR_TSCFUPDT_Msk  /* Fine or Coarse Timestamp Update*/\n#define ETH_MACTSCR_TSENA_Pos                         (0U)\n#define ETH_MACTSCR_TSENA_Msk                         (0x1UL << ETH_MACTSCR_TSENA_Pos) /*!< 0x00000001 */\n#define ETH_MACTSCR_TSENA                             ETH_MACTSCR_TSENA_Msk  /* Enable Timestamp */\n\n/* Bit definition for Ethernet MAC Sub-second Increment Register */\n#define ETH_MACMACSSIR_SSINC_Pos                      (16U)\n#define ETH_MACMACSSIR_SSINC_Msk                      (0xFFUL << ETH_MACMACSSIR_SSINC_Pos) /*!< 0x0000FF00 */\n#define ETH_MACMACSSIR_SSINC                          ETH_MACMACSSIR_SSINC_Msk  /* Sub-second Increment Value */\n#define ETH_MACMACSSIR_SNSINC_Pos                     (8U)\n#define ETH_MACMACSSIR_SNSINC_Msk                     (0xFFUL << ETH_MACMACSSIR_SNSINC_Pos) /*!< 0x000000FF */\n#define ETH_MACMACSSIR_SNSINC                         ETH_MACMACSSIR_SNSINC_Msk  /* Sub-nanosecond Increment Value */\n\n/* Bit definition for Ethernet MAC System Time Seconds Register */\n#define ETH_MACSTSR_TSS_Pos                           (0U)\n#define ETH_MACSTSR_TSS_Msk                           (0xFFFFFFFFUL << ETH_MACSTSR_TSS_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACSTSR_TSS                               ETH_MACSTSR_TSS_Msk  /* Timestamp Second */\n\n/* Bit definition for Ethernet MAC System Time Nanoseconds Register */\n#define ETH_MACSTNR_TSSS_Pos                          (0U)\n#define ETH_MACSTNR_TSSS_Msk                          (0x7FFFFFFFUL << ETH_MACSTNR_TSSS_Pos) /*!< 0x7FFFFFFF */\n#define ETH_MACSTNR_TSSS                              ETH_MACSTNR_TSSS_Msk  /* Timestamp Sub-seconds */\n\n/* Bit definition for Ethernet MAC System Time Seconds Update Register */\n#define ETH_MACSTSUR_TSS_Pos                          (0U)\n#define ETH_MACSTSUR_TSS_Msk                          (0xFFFFFFFFUL << ETH_MACSTSUR_TSS_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACSTSUR_TSS                              ETH_MACSTSUR_TSS_Msk  /* Timestamp Seconds */\n\n/* Bit definition for Ethernet MAC System Time Nanoseconds Update Register */\n#define ETH_MACSTNUR_ADDSUB_Pos                       (31U)\n#define ETH_MACSTNUR_ADDSUB_Msk                       (0x1UL << ETH_MACSTNUR_ADDSUB_Pos) /*!< 0x80000000 */\n#define ETH_MACSTNUR_ADDSUB                           ETH_MACSTNUR_ADDSUB_Msk  /* Add or Subtract Time */\n#define ETH_MACSTNUR_TSSS_Pos                         (0U)\n#define ETH_MACSTNUR_TSSS_Msk                         (0x7FFFFFFFUL << ETH_MACSTNUR_TSSS_Pos) /*!< 0x7FFFFFFF */\n#define ETH_MACSTNUR_TSSS                             ETH_MACSTNUR_TSSS_Msk  /* Timestamp Sub-seconds */\n\n/* Bit definition for Ethernet MAC Timestamp Addend Register */\n#define ETH_MACTSAR_TSAR_Pos                          (0U)\n#define ETH_MACTSAR_TSAR_Msk                          (0xFFFFFFFFUL << ETH_MACTSAR_TSAR_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACTSAR_TSAR                              ETH_MACTSAR_TSAR_Msk  /* Timestamp Addend Register */\n\n/* Bit definition for Ethernet MAC Timestamp Status Register */\n#define ETH_MACTSSR_ATSNS_Pos                         (25U)\n#define ETH_MACTSSR_ATSNS_Msk                         (0x1FUL << ETH_MACTSSR_ATSNS_Pos) /*!< 0x3E000000 */\n#define ETH_MACTSSR_ATSNS                             ETH_MACTSSR_ATSNS_Msk  /* Number of Auxiliary Timestamp Snapshots */\n#define ETH_MACTSSR_ATSSTM_Pos                        (24U)\n#define ETH_MACTSSR_ATSSTM_Msk                        (0x1UL << ETH_MACTSSR_ATSSTM_Pos) /*!< 0x01000000 */\n#define ETH_MACTSSR_ATSSTM                            ETH_MACTSSR_ATSSTM_Msk  /* Auxiliary Timestamp Snapshot Trigger Missed */\n#define ETH_MACTSSR_ATSSTN_Pos                        (16U)\n#define ETH_MACTSSR_ATSSTN_Msk                        (0xFUL << ETH_MACTSSR_ATSSTN_Pos) /*!< 0x000F0000 */\n#define ETH_MACTSSR_ATSSTN                            ETH_MACTSSR_ATSSTN_Msk  /* Auxiliary Timestamp Snapshot Trigger Identifier */\n#define ETH_MACTSSR_TXTSSIS_Pos                       (15U)\n#define ETH_MACTSSR_TXTSSIS_Msk                       (0x1UL << ETH_MACTSSR_TXTSSIS_Pos) /*!< 0x00008000 */\n#define ETH_MACTSSR_TXTSSIS                           ETH_MACTSSR_TXTSSIS_Msk  /* Tx Timestamp Status Interrupt Status */\n#define ETH_MACTSSR_TSTRGTERR0_Pos                    (3U)\n#define ETH_MACTSSR_TSTRGTERR0_Msk                    (0x1UL << ETH_MACTSSR_TSTRGTERR0_Pos) /*!< 0x00000008 */\n#define ETH_MACTSSR_TSTRGTERR0                        ETH_MACTSSR_TSTRGTERR0_Msk  /* Timestamp Target Time Error */\n#define ETH_MACTSSR_AUXTSTRIG_Pos                     (2U)\n#define ETH_MACTSSR_AUXTSTRIG_Msk                     (0x1UL << ETH_MACTSSR_AUXTSTRIG_Pos) /*!< 0x00000004 */\n#define ETH_MACTSSR_AUXTSTRIG                         ETH_MACTSSR_AUXTSTRIG_Msk  /* Auxiliary Timestamp Trigger Snapshot*/\n#define ETH_MACTSSR_TSTARGT0_Pos                      (1U)\n#define ETH_MACTSSR_TSTARGT0_Msk                      (0x1UL << ETH_MACTSSR_TSTARGT0_Pos) /*!< 0x00000002 */\n#define ETH_MACTSSR_TSTARGT0                          ETH_MACTSSR_TSTARGT0_Msk  /* Timestamp Target Time Reached */\n#define ETH_MACTSSR_TSSOVF_Pos                        (0U)\n#define ETH_MACTSSR_TSSOVF_Msk                        (0x1UL << ETH_MACTSSR_TSSOVF_Pos) /*!< 0x00000001 */\n#define ETH_MACTSSR_TSSOVF                            ETH_MACTSSR_TSSOVF_Msk  /* Timestamp Seconds Overflow */\n\n/* Bit definition for Ethernet MAC Tx Timestamp Status Nanoseconds Register */\n#define ETH_MACTTSSNR_TXTSSMIS_Pos                    (31U)\n#define ETH_MACTTSSNR_TXTSSMIS_Msk                    (0x1UL << ETH_MACTTSSNR_TXTSSMIS_Pos) /*!< 0x80000000 */\n#define ETH_MACTTSSNR_TXTSSMIS                        ETH_MACTTSSNR_TXTSSMIS_Msk  /* Transmit Timestamp Status Missed */\n#define ETH_MACTTSSNR_TXTSSLO_Pos                     (0U)\n#define ETH_MACTTSSNR_TXTSSLO_Msk                     (0x7FFFFFFFUL << ETH_MACTTSSNR_TXTSSLO_Pos) /*!< 0x7FFFFFFF */\n#define ETH_MACTTSSNR_TXTSSLO                         ETH_MACTTSSNR_TXTSSLO_Msk  /* Transmit Timestamp Status Low */\n\n/* Bit definition for Ethernet MAC Tx Timestamp Status Seconds Register */\n#define ETH_MACTTSSSR_TXTSSHI_Pos                     (0U)\n#define ETH_MACTTSSSR_TXTSSHI_Msk                     (0xFFFFFFFFUL << ETH_MACTTSSSR_TXTSSHI_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACTTSSSR_TXTSSHI                         ETH_MACTTSSSR_TXTSSHI_Msk  /* Transmit Timestamp Status High */\n\n/* Bit definition for Ethernet MAC Auxiliary Control Register*/\n#define ETH_MACACR_ATSEN3_Pos                         (7U)\n#define ETH_MACACR_ATSEN3_Msk                         (0x1UL << ETH_MACACR_ATSEN3_Pos) /*!< 0x00000080 */\n#define ETH_MACACR_ATSEN3                             ETH_MACACR_ATSEN3_Msk  /* Auxiliary Snapshot 3 Enable */\n#define ETH_MACACR_ATSEN2_Pos                         (6U)\n#define ETH_MACACR_ATSEN2_Msk                         (0x1UL << ETH_MACACR_ATSEN2_Pos) /*!< 0x00000040 */\n#define ETH_MACACR_ATSEN2                             ETH_MACACR_ATSEN2_Msk  /* Auxiliary Snapshot 2 Enable */\n#define ETH_MACACR_ATSEN1_Pos                         (5U)\n#define ETH_MACACR_ATSEN1_Msk                         (0x1UL << ETH_MACACR_ATSEN1_Pos) /*!< 0x00000020 */\n#define ETH_MACACR_ATSEN1                             ETH_MACACR_ATSEN1_Msk  /* Auxiliary Snapshot 1 Enable */\n#define ETH_MACACR_ATSEN0_Pos                         (4U)\n#define ETH_MACACR_ATSEN0_Msk                         (0x1UL << ETH_MACACR_ATSEN0_Pos) /*!< 0x00000010 */\n#define ETH_MACACR_ATSEN0                             ETH_MACACR_ATSEN0_Msk  /* Auxiliary Snapshot 0 Enable */\n#define ETH_MACACR_ATSFC_Pos                          (0U)\n#define ETH_MACACR_ATSFC_Msk                          (0x1UL << ETH_MACACR_ATSFC_Pos) /*!< 0x00000001 */\n#define ETH_MACACR_ATSFC                              ETH_MACACR_ATSFC_Msk  /* Auxiliary Snapshot FIFO Clear */\n\n/* Bit definition for Ethernet MAC Auxiliary Timestamp Nanoseconds Register */\n#define ETH_MACATSNR_AUXTSLO_Pos                      (0U)\n#define ETH_MACATSNR_AUXTSLO_Msk                      (0x7FFFFFFFUL << ETH_MACATSNR_AUXTSLO_Pos) /*!< 0x7FFFFFFF */\n#define ETH_MACATSNR_AUXTSLO                          ETH_MACATSNR_AUXTSLO_Msk  /* Auxiliary Timestamp */\n\n/* Bit definition for Ethernet MAC Auxiliary Timestamp Seconds Register */\n#define ETH_MACATSSR_AUXTSHI_Pos                      (0U)\n#define ETH_MACATSSR_AUXTSHI_Msk                      (0xFFFFFFFFUL << ETH_MACATSSR_AUXTSHI_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACATSSR_AUXTSHI                          ETH_MACATSSR_AUXTSHI_Msk  /* Auxiliary Timestamp */\n\n/* Bit definition for Ethernet MAC Timestamp Ingress Asymmetric Correction Register */\n#define ETH_MACTSIACR_OSTIAC_Pos                      (0U)\n#define ETH_MACTSIACR_OSTIAC_Msk                      (0xFFFFFFFFUL << ETH_MACTSIACR_OSTIAC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACTSIACR_OSTIAC                          ETH_MACTSIACR_OSTIAC_Msk  /* One-Step Timestamp Ingress Asymmetry Correction */\n\n/* Bit definition for Ethernet MAC Timestamp Egress Asymmetric Correction Register */\n#define ETH_MACTSEACR_OSTEAC_Pos                      (0U)\n#define ETH_MACTSEACR_OSTEAC_Msk                      (0xFFFFFFFFUL << ETH_MACTSEACR_OSTEAC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACTSEACR_OSTEAC                          ETH_MACTSEACR_OSTEAC_Msk  /* One-Step Timestamp Egress Asymmetry Correction */\n\n/* Bit definition for Ethernet MAC Timestamp Ingress Correction Nanosecond Register */\n#define ETH_MACTSICNR_TSIC_Pos                        (0U)\n#define ETH_MACTSICNR_TSIC_Msk                        (0xFFFFFFFFUL << ETH_MACTSICNR_TSIC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACTSICNR_TSIC                            ETH_MACTSICNR_TSIC_Msk  /* Timestamp Ingress Correction */\n\n/* Bit definition for Ethernet MAC Timestamp Egress correction Nanosecond Register */\n#define ETH_MACTSECNR_TSEC_Pos                        (0U)\n#define ETH_MACTSECNR_TSEC_Msk                        (0xFFFFFFFFUL << ETH_MACTSECNR_TSEC_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACTSECNR_TSEC                            ETH_MACTSECNR_TSEC_Msk  /* Timestamp Egress Correction */\n\n/* Bit definition for Ethernet MAC PPS Control Register */\n#define ETH_MACPPSCR_TRGTMODSEL0_Pos                  (5U)\n#define ETH_MACPPSCR_TRGTMODSEL0_Msk                  (0x3UL << ETH_MACPPSCR_TRGTMODSEL0_Pos) /*!< 0x00000060 */\n#define ETH_MACPPSCR_TRGTMODSEL0                      ETH_MACPPSCR_TRGTMODSEL0_Msk  /* Target Time Register Mode for PPS Output */\n#define ETH_MACPPSCR_PPSEN0_Pos                       (4U)\n#define ETH_MACPPSCR_PPSEN0_Msk                       (0x1UL << ETH_MACPPSCR_PPSEN0_Pos) /*!< 0x00000010 */\n#define ETH_MACPPSCR_PPSEN0                           ETH_MACPPSCR_PPSEN0_Msk  /* Flexible PPS Output Mode Enable */\n#define ETH_MACPPSCR_PPSCTRL_Pos                      (0U)\n#define ETH_MACPPSCR_PPSCTRL_Msk                      (0xFUL << ETH_MACPPSCR_PPSCTRL_Pos) /*!< 0x0000000F */\n#define ETH_MACPPSCR_PPSCTRL                          ETH_MACPPSCR_PPSCTRL_Msk  /* PPS Output Frequency Control */\n\n/* Bit definition for Ethernet MAC PPS Target Time Seconds Register */\n#define ETH_MACPPSTTSR_TSTRH0_Pos                     (0U)\n#define ETH_MACPPSTTSR_TSTRH0_Msk                     (0xFFFFFFFFUL << ETH_MACPPSTTSR_TSTRH0_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACPPSTTSR_TSTRH0                         ETH_MACPPSTTSR_TSTRH0_Msk  /* PPS Target Time Seconds Register */\n\n/* Bit definition for Ethernet MAC PPS Target Time Nanoseconds Register */\n#define ETH_MACPPSTTNR_TRGTBUSY0_Pos                  (31U)\n#define ETH_MACPPSTTNR_TRGTBUSY0_Msk                  (0x1UL << ETH_MACPPSTTNR_TRGTBUSY0_Pos) /*!< 0x80000000 */\n#define ETH_MACPPSTTNR_TRGTBUSY0                      ETH_MACPPSTTNR_TRGTBUSY0_Msk  /* PPS Target Time Register Busy */\n#define ETH_MACPPSTTNR_TTSL0_Pos                      (0U)\n#define ETH_MACPPSTTNR_TTSL0_Msk                      (0x7FFFFFFFUL << ETH_MACPPSTTNR_TTSL0_Pos) /*!< 0x7FFFFFFF */\n#define ETH_MACPPSTTNR_TTSL0                          ETH_MACPPSTTNR_TTSL0_Msk  /* Target Time Low for PPS Register */\n\n/* Bit definition for Ethernet MAC PPS Interval Register */\n#define ETH_MACPPSIR_PPSINT0_Pos                      (0U)\n#define ETH_MACPPSIR_PPSINT0_Msk                      (0xFFFFFFFFUL << ETH_MACPPSIR_PPSINT0_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACPPSIR_PPSINT0                          ETH_MACPPSIR_PPSINT0_Msk  /* PPS Output Signal Interval */\n\n/* Bit definition for Ethernet MAC PPS Width Register */\n#define ETH_MACPPSWR_PPSWIDTH0_Pos                    (0U)\n#define ETH_MACPPSWR_PPSWIDTH0_Msk                    (0xFFFFFFFFUL << ETH_MACPPSWR_PPSWIDTH0_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACPPSWR_PPSWIDTH0                        ETH_MACPPSWR_PPSWIDTH0_Msk  /* PPS Output Signal Width */\n\n/* Bit definition for Ethernet MAC PTP Offload Control Register */\n#define ETH_MACPOCR_DN_Pos                            (8U)\n#define ETH_MACPOCR_DN_Msk                            (0xFFUL << ETH_MACPOCR_DN_Pos) /*!< 0x0000FF00 */\n#define ETH_MACPOCR_DN                                ETH_MACPOCR_DN_Msk  /* Domain Number */\n#define ETH_MACPOCR_DRRDIS_Pos                        (6U)\n#define ETH_MACPOCR_DRRDIS_Msk                        (0x1UL << ETH_MACPOCR_DRRDIS_Pos) /*!< 0x00000040 */\n#define ETH_MACPOCR_DRRDIS                            ETH_MACPOCR_DRRDIS_Msk  /* Disable PTO Delay Request/Response response generation */\n#define ETH_MACPOCR_APDREQTRIG_Pos                    (5U)\n#define ETH_MACPOCR_APDREQTRIG_Msk                    (0x1UL << ETH_MACPOCR_APDREQTRIG_Pos) /*!< 0x00000020 */\n#define ETH_MACPOCR_APDREQTRIG                        ETH_MACPOCR_APDREQTRIG_Msk  /* Automatic PTP Pdelay_Req message Trigger */\n#define ETH_MACPOCR_ASYNCTRIG_Pos                     (4U)\n#define ETH_MACPOCR_ASYNCTRIG_Msk                     (0x1UL << ETH_MACPOCR_ASYNCTRIG_Pos) /*!< 0x00000010 */\n#define ETH_MACPOCR_ASYNCTRIG                         ETH_MACPOCR_ASYNCTRIG_Msk  /* Automatic PTP SYNC message Trigger */\n#define ETH_MACPOCR_APDREQEN_Pos                      (2U)\n#define ETH_MACPOCR_APDREQEN_Msk                      (0x1UL << ETH_MACPOCR_APDREQEN_Pos) /*!< 0x00000004 */\n#define ETH_MACPOCR_APDREQEN                          ETH_MACPOCR_APDREQEN_Msk  /* Automatic PTP Pdelay_Req message Enable */\n#define ETH_MACPOCR_ASYNCEN_Pos                       (1U)\n#define ETH_MACPOCR_ASYNCEN_Msk                       (0x1UL << ETH_MACPOCR_ASYNCEN_Pos) /*!< 0x00000002 */\n#define ETH_MACPOCR_ASYNCEN                           ETH_MACPOCR_ASYNCEN_Msk  /* Automatic PTP SYNC message Enable */\n#define ETH_MACPOCR_PTOEN_Pos                         (0U)\n#define ETH_MACPOCR_PTOEN_Msk                         (0x1UL << ETH_MACPOCR_PTOEN_Pos) /*!< 0x00000001 */\n#define ETH_MACPOCR_PTOEN                             ETH_MACPOCR_PTOEN_Msk  /* PTP Offload Enable */\n\n/* Bit definition for Ethernet MAC PTP Source Port Identity 0 Register */\n#define ETH_MACSPI0R_SPI0_Pos                         (0U)\n#define ETH_MACSPI0R_SPI0_Msk                         (0xFFFFFFFFUL << ETH_MACSPI0R_SPI0_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACSPI0R_SPI0                             ETH_MACSPI0R_SPI0_Msk  /* Source Port Identity 0 */\n\n/* Bit definition for Ethernet MAC PTP Source Port Identity 1 Register */\n#define ETH_MACSPI1R_SPI1_Pos                         (0U)\n#define ETH_MACSPI1R_SPI1_Msk                         (0xFFFFFFFFUL << ETH_MACSPI1R_SPI1_Pos) /*!< 0xFFFFFFFF */\n#define ETH_MACSPI1R_SPI1                             ETH_MACSPI1R_SPI1_Msk  /* Source Port Identity 1 */\n\n/* Bit definition for Ethernet MAC PTP Source Port Identity 2 Register */\n#define ETH_MACSPI2R_SPI2_Pos                         (0U)\n#define ETH_MACSPI2R_SPI2_Msk                         (0xFFFFUL << ETH_MACSPI2R_SPI2_Pos) /*!< 0x0000FFFF */\n#define ETH_MACSPI2R_SPI2                             ETH_MACSPI2R_SPI2_Msk  /* Source Port Identity 2 */\n\n/* Bit definition for Ethernet MAC Log Message Interval Register */\n#define ETH_MACLMIR_LMPDRI_Pos                        (24U)\n#define ETH_MACLMIR_LMPDRI_Msk                        (0xFFUL << ETH_MACLMIR_LMPDRI_Pos) /*!< 0xFF000000 */\n#define ETH_MACLMIR_LMPDRI                             ETH_MACLMIR_LMPDRI_Msk  /* Log Min Pdelay_Req Interval */\n#define ETH_MACLMIR_DRSYNCR_Pos                       (8U)\n#define ETH_MACLMIR_DRSYNCR_Msk                       (0x7UL << ETH_MACLMIR_DRSYNCR_Pos) /*!< 0x00000700 */\n#define ETH_MACLMIR_DRSYNCR                           ETH_MACLMIR_DRSYNCR_Msk  /* Delay_Req to SYNC Ratio */\n#define ETH_MACLMIR_LSI_Pos                           (0U)\n#define ETH_MACLMIR_LSI_Msk                           (0xFFUL << ETH_MACLMIR_LSI_Pos) /*!< 0x000000FF */\n#define ETH_MACLMIR_LSI                               ETH_MACLMIR_LSI_Msk  /* Log Sync Interval */\n\n/* Bit definition for Ethernet MTL Operation Mode Register */\n#define ETH_MTLOMR_CNTCLR_Pos                         (9U)\n#define ETH_MTLOMR_CNTCLR_Msk                         (0x1UL << ETH_MTLOMR_CNTCLR_Pos) /*!< 0x00000200 */\n#define ETH_MTLOMR_CNTCLR                             ETH_MTLOMR_CNTCLR_Msk    /* Counters Reset */\n#define ETH_MTLOMR_CNTPRST_Pos                        (8U)\n#define ETH_MTLOMR_CNTPRST_Msk                        (0x1UL << ETH_MTLOMR_CNTPRST_Pos) /*!< 0x00000100 */\n#define ETH_MTLOMR_CNTPRST                            ETH_MTLOMR_CNTPRST_Msk   /* Counters Preset */\n#define ETH_MTLOMR_DTXSTS_Pos                         (1U)\n#define ETH_MTLOMR_DTXSTS_Msk                         (0x1UL << ETH_MTLOMR_DTXSTS_Pos) /*!< 0x00000002 */\n#define ETH_MTLOMR_DTXSTS                             ETH_MTLOMR_DTXSTS_Msk  /* Drop Transmit Status */\n\n/* Bit definition for Ethernet MTL Interrupt Status Register */\n#define ETH_MTLISR_MACIS_Pos                          (16U)\n#define ETH_MTLISR_MACIS_Msk                          (0x1UL << ETH_MTLISR_MACIS_Pos) /*!< 0x00010000 */\n#define ETH_MTLISR_MACIS                              ETH_MTLISR_MACIS_Msk     /* MAC Interrupt Status */\n#define ETH_MTLISR_QIS_Pos                            (0U)\n#define ETH_MTLISR_QIS_Msk                            (0x1UL << ETH_MTLISR_QIS_Pos) /*!< 0x00000001 */\n#define ETH_MTLISR_QIS                                ETH_MTLISR_QIS_Msk       /* Queue Interrupt status */\n\n/* Bit definition for Ethernet MTL Tx Queue Operation Mode Register */\n#define ETH_MTLTQOMR_TTC_Pos                          (4U)\n#define ETH_MTLTQOMR_TTC_Msk                          (0x7UL << ETH_MTLTQOMR_TTC_Pos) /*!< 0x00000070 */\n#define ETH_MTLTQOMR_TTC                              ETH_MTLTQOMR_TTC_Msk     /* Transmit Threshold Control */\n#define ETH_MTLTQOMR_TTC_32BITS                       ((uint32_t)0x00000000)   /* 32 bits Threshold */\n#define ETH_MTLTQOMR_TTC_64BITS                       ((uint32_t)0x00000010)   /* 64  bits Threshold */\n#define ETH_MTLTQOMR_TTC_96BITS                       ((uint32_t)0x00000020)   /* 96 bits Threshold */\n#define ETH_MTLTQOMR_TTC_128BITS                      ((uint32_t)0x00000030)   /* 128 bits Threshold */\n#define ETH_MTLTQOMR_TTC_192BITS                      ((uint32_t)0x00000040)   /* 192 bits Threshold */\n#define ETH_MTLTQOMR_TTC_256BITS                      ((uint32_t)0x00000050)   /* 256 bits Threshold */\n#define ETH_MTLTQOMR_TTC_384BITS                      ((uint32_t)0x00000060)   /* 384 bits Threshold */\n#define ETH_MTLTQOMR_TTC_512BITS                      ((uint32_t)0x00000070)   /* 512 bits Threshold */\n#define ETH_MTLTQOMR_TSF_Pos                          (1U)\n#define ETH_MTLTQOMR_TSF_Msk                          (0x1UL << ETH_MTLTQOMR_TSF_Pos) /*!< 0x00000002 */\n#define ETH_MTLTQOMR_TSF                              ETH_MTLTQOMR_TSF_Msk     /* Transmit Store and Forward */\n#define ETH_MTLTQOMR_FTQ_Pos                          (0U)\n#define ETH_MTLTQOMR_FTQ_Msk                          (0x1UL << ETH_MTLTQOMR_FTQ_Pos) /*!< 0x00000001 */\n#define ETH_MTLTQOMR_FTQ                              ETH_MTLTQOMR_FTQ_Msk     /* Flush Transmit Queue */\n\n/* Bit definition for Ethernet MTL Tx Queue Underflow Register */\n#define ETH_MTLTQUR_UFCNTOVF_Pos                      (11U)\n#define ETH_MTLTQUR_UFCNTOVF_Msk                      (0x1UL << ETH_MTLTQUR_UFCNTOVF_Pos) /*!< 0x00000800 */\n#define ETH_MTLTQUR_UFCNTOVF                          ETH_MTLTQUR_UFCNTOVF_Msk /* Overflow Bit for Underflow Packet Counter */\n#define ETH_MTLTQUR_UFPKTCNT_Pos                      (0U)\n#define ETH_MTLTQUR_UFPKTCNT_Msk                      (0x7FFUL << ETH_MTLTQUR_UFPKTCNT_Pos) /*!< 0x000007FF */\n#define ETH_MTLTQUR_UFPKTCNT                          ETH_MTLTQUR_UFPKTCNT_Msk /* Underflow Packet Counter */\n\n/* Bit definition for Ethernet MTL Tx Queue Debug Register */\n#define ETH_MTLTQDR_STXSTSF_Pos                       (20U)\n#define ETH_MTLTQDR_STXSTSF_Msk                       (0x7UL << ETH_MTLTQDR_STXSTSF_Pos) /*!< 0x00700000 */\n#define ETH_MTLTQDR_STXSTSF                           ETH_MTLTQDR_STXSTSF_Msk  /* Number of Status Words in the Tx Status FIFO of Queue */\n#define ETH_MTLTQDR_PTXQ_Pos                          (16U)\n#define ETH_MTLTQDR_PTXQ_Msk                          (0x7UL << ETH_MTLTQDR_PTXQ_Pos) /*!< 0x00070000 */\n#define ETH_MTLTQDR_PTXQ                              ETH_MTLTQDR_PTXQ_Msk     /* Number of Packets in the Transmit Queue */\n#define ETH_MTLTQDR_TXSTSFSTS_Pos                     (5U)\n#define ETH_MTLTQDR_TXSTSFSTS_Msk                     (0x1UL << ETH_MTLTQDR_TXSTSFSTS_Pos) /*!< 0x00000020 */\n#define ETH_MTLTQDR_TXSTSFSTS                         ETH_MTLTQDR_TXSTSFSTS_Msk /* MTL Tx Status FIFO Full Status */\n#define ETH_MTLTQDR_TXQSTS_Pos                        (4U)\n#define ETH_MTLTQDR_TXQSTS_Msk                        (0x1UL << ETH_MTLTQDR_TXQSTS_Pos) /*!< 0x00000010 */\n#define ETH_MTLTQDR_TXQSTS                            ETH_MTLTQDR_TXQSTS_Msk   /* MTL Tx Queue Not Empty Status */\n#define ETH_MTLTQDR_TWCSTS_Pos                        (3U)\n#define ETH_MTLTQDR_TWCSTS_Msk                        (0x1UL << ETH_MTLTQDR_TWCSTS_Pos) /*!< 0x00000008 */\n#define ETH_MTLTQDR_TWCSTS                            ETH_MTLTQDR_TWCSTS_Msk   /* MTL Tx Queue Write Controller Status */\n#define ETH_MTLTQDR_TRCSTS_Pos                        (1U)\n#define ETH_MTLTQDR_TRCSTS_Msk                        (0x3UL << ETH_MTLTQDR_TRCSTS_Pos) /*!< 0x00000006 */\n#define ETH_MTLTQDR_TRCSTS                            ETH_MTLTQDR_TRCSTS_Msk  /* MTL Tx Queue Read Controller Status */\n#define ETH_MTLTQDR_TRCSTS_IDLE                       ((uint32_t)0x00000000)  /* Idle state */\n#define ETH_MTLTQDR_TRCSTS_READ                       ((uint32_t)0x00000002)  /* Read state (transferring data to the MAC transmitter) */\n#define ETH_MTLTQDR_TRCSTS_WAITING                    ((uint32_t)0x00000004)  /* Waiting for pending Tx Status from the MAC transmitter */\n#define ETH_MTLTQDR_TRCSTS_FLUSHING                   ((uint32_t)0x00000006)  /* Flushing the Tx queue because of the Packet Abort request from the MAC */\n#define ETH_MTLTQDR_TXQPAUSED_Pos                     (0U)\n#define ETH_MTLTQDR_TXQPAUSED_Msk                     (0x1UL << ETH_MTLTQDR_TXQPAUSED_Pos) /*!< 0x00000001 */\n#define ETH_MTLTQDR_TXQPAUSED                         ETH_MTLTQDR_TXQPAUSED_Msk /* Transmit Queue in Pause */\n\n/* Bit definition for Ethernet MTL Queue Interrupt Control Status Register */\n#define ETH_MTLQICSR_RXOIE_Pos                        (24U)\n#define ETH_MTLQICSR_RXOIE_Msk                        (0x1UL << ETH_MTLQICSR_RXOIE_Pos) /*!< 0x01000000 */\n#define ETH_MTLQICSR_RXOIE                            ETH_MTLQICSR_RXOIE_Msk   /* Receive Queue Overflow Interrupt Enable */\n#define ETH_MTLQICSR_RXOVFIS_Pos                      (16U)\n#define ETH_MTLQICSR_RXOVFIS_Msk                      (0x1UL << ETH_MTLQICSR_RXOVFIS_Pos) /*!< 0x00010000 */\n#define ETH_MTLQICSR_RXOVFIS                          ETH_MTLQICSR_RXOVFIS_Msk /* Receive Queue Overflow Interrupt Status */\n#define ETH_MTLQICSR_TXUIE_Pos                        (8U)\n#define ETH_MTLQICSR_TXUIE_Msk                        (0x1UL << ETH_MTLQICSR_TXUIE_Pos) /*!< 0x00000100 */\n#define ETH_MTLQICSR_TXUIE                            ETH_MTLQICSR_TXUIE_Msk   /* Transmit Queue Underflow Interrupt Enable */\n#define ETH_MTLQICSR_TXUNFIS_Pos                      (0U)\n#define ETH_MTLQICSR_TXUNFIS_Msk                      (0x1UL << ETH_MTLQICSR_TXUNFIS_Pos) /*!< 0x00000001 */\n#define ETH_MTLQICSR_TXUNFIS                          ETH_MTLQICSR_TXUNFIS_Msk /* Transmit Queue Underflow Interrupt Status */\n\n/* Bit definition for Ethernet MTL Rx Queue Operation Mode Register */\n#define ETH_MTLRQOMR_RQS_Pos                          (20U)\n#define ETH_MTLRQOMR_RQS_Msk                          (0x7UL << ETH_MTLRQOMR_RQS_Pos) /*!< 0x00700000 */\n#define ETH_MTLRQOMR_RQS                              ETH_MTLRQOMR_RQS_Msk /* Receive Queue Size */\n#define ETH_MTLRQOMR_RFD_Pos                          (14U)\n#define ETH_MTLRQOMR_RFD_Msk                          (0x7UL << ETH_MTLRQOMR_RFD_Pos) /*!< 0x0001C000 */\n#define ETH_MTLRQOMR_RFD                              ETH_MTLRQOMR_RFD_Msk /* Threshold for Deactivating Flow Control (in half-duplex and full-duplex modes) */\n#define ETH_MTLRQOMR_RFA_Pos                          (8U)\n#define ETH_MTLRQOMR_RFA_Msk                          (0x7UL << ETH_MTLRQOMR_RFA_Pos) /*!< 0x00000700 */\n#define ETH_MTLRQOMR_RFA                              ETH_MTLRQOMR_RFA_Msk /* Threshold for Activating Flow Control (in half-duplex and full-duplex */\n#define ETH_MTLRQOMR_EHFC_Pos                         (7U)\n#define ETH_MTLRQOMR_EHFC_Msk                         (0x1UL << ETH_MTLRQOMR_EHFC_Pos) /*!< 0x00000080 */\n#define ETH_MTLRQOMR_EHFC                             ETH_MTLRQOMR_EHFC_Msk /* DEnable Hardware Flow Control */\n#define ETH_MTLRQOMR_DISTCPEF_Pos                     (6U)\n#define ETH_MTLRQOMR_DISTCPEF_Msk                     (0x1UL << ETH_MTLRQOMR_DISTCPEF_Pos) /*!< 0x00000040 */\n#define ETH_MTLRQOMR_DISTCPEF                         ETH_MTLRQOMR_DISTCPEF_Msk /* Disable Dropping of TCP/IP Checksum Error Packets */\n#define ETH_MTLRQOMR_RSF_Pos                          (5U)\n#define ETH_MTLRQOMR_RSF_Msk                          (0x1UL << ETH_MTLRQOMR_RSF_Pos) /*!< 0x00000020 */\n#define ETH_MTLRQOMR_RSF                              ETH_MTLRQOMR_RSF_Msk     /* Receive Queue Store and Forward */\n#define ETH_MTLRQOMR_FEP_Pos                          (4U)\n#define ETH_MTLRQOMR_FEP_Msk                          (0x1UL << ETH_MTLRQOMR_FEP_Pos) /*!< 0x00000010 */\n#define ETH_MTLRQOMR_FEP                              ETH_MTLRQOMR_FEP_Msk     /* Forward Error Packets */\n#define ETH_MTLRQOMR_FUP_Pos                          (3U)\n#define ETH_MTLRQOMR_FUP_Msk                          (0x1UL << ETH_MTLRQOMR_FUP_Pos) /*!< 0x00000008 */\n#define ETH_MTLRQOMR_FUP                              ETH_MTLRQOMR_FUP_Msk     /* Forward Undersized Good Packets */\n#define ETH_MTLRQOMR_RTC_Pos                          (0U)\n#define ETH_MTLRQOMR_RTC_Msk                          (0x3UL << ETH_MTLRQOMR_RTC_Pos) /*!< 0x00000003 */\n#define ETH_MTLRQOMR_RTC                              ETH_MTLRQOMR_RTC_Msk     /* Receive Queue Threshold Control */\n#define ETH_MTLRQOMR_RTC_64BITS                       ((uint32_t)0x00000000)   /* 64 bits Threshold */\n#define ETH_MTLRQOMR_RTC_32BITS                       ((uint32_t)0x00000001)   /* 32 bits Threshold */\n#define ETH_MTLRQOMR_RTC_96BITS                       ((uint32_t)0x00000002)   /* 96 bits Threshold */\n#define ETH_MTLRQOMR_RTC_128BITS                      ((uint32_t)0x00000003)   /* 128 bits Threshold */\n\n/* Bit definition for Ethernet MTL Rx Queue Missed Packet Overflow Cnt Register */\n#define ETH_MTLRQMPOCR_MISCNTOVF_Pos                  (27U)\n#define ETH_MTLRQMPOCR_MISCNTOVF_Msk                  (0x1UL << ETH_MTLRQMPOCR_MISCNTOVF_Pos) /*!< 0x08000000 */\n#define ETH_MTLRQMPOCR_MISCNTOVF                      ETH_MTLRQMPOCR_MISCNTOVF_Msk /* Missed Packet Counter Overflow Bit */\n#define ETH_MTLRQMPOCR_MISPKTCNT_Pos                  (16U)\n#define ETH_MTLRQMPOCR_MISPKTCNT_Msk                  (0x7FFUL << ETH_MTLRQMPOCR_MISPKTCNT_Pos) /*!< 0x07FF0000 */\n#define ETH_MTLRQMPOCR_MISPKTCNT                      ETH_MTLRQMPOCR_MISPKTCNT_Msk /* Missed Packet Counter */\n#define ETH_MTLRQMPOCR_OVFCNTOVF_Pos                  (11U)\n#define ETH_MTLRQMPOCR_OVFCNTOVF_Msk                  (0x1UL << ETH_MTLRQMPOCR_OVFCNTOVF_Pos) /*!< 0x00000800 */\n#define ETH_MTLRQMPOCR_OVFCNTOVF                      ETH_MTLRQMPOCR_OVFCNTOVF_Msk /* Overflow Counter Overflow Bit */\n#define ETH_MTLRQMPOCR_OVFPKTCNT_Pos                  (0U)\n#define ETH_MTLRQMPOCR_OVFPKTCNT_Msk                  (0x7FFUL << ETH_MTLRQMPOCR_OVFPKTCNT_Pos) /*!< 0x000007FF */\n#define ETH_MTLRQMPOCR_OVFPKTCNT                      ETH_MTLRQMPOCR_OVFPKTCNT_Msk /* Overflow Packet Counter */\n\n/* Bit definition for Ethernet MTL Rx Queue Debug Register */\n#define ETH_MTLRQDR_PRXQ_Pos                          (16U)\n#define ETH_MTLRQDR_PRXQ_Msk                          (0x3FFFUL << ETH_MTLRQDR_PRXQ_Pos) /*!< 0x3FFF0000 */\n#define ETH_MTLRQDR_PRXQ                              ETH_MTLRQDR_PRXQ_Msk     /* Number of Packets in Receive Queue */\n#define ETH_MTLRQDR_RXQSTS_Pos                        (4U)\n#define ETH_MTLRQDR_RXQSTS_Msk                        (0x3UL << ETH_MTLRQDR_RXQSTS_Pos) /*!< 0x00000030 */\n#define ETH_MTLRQDR_RXQSTS                            ETH_MTLRQDR_RXQSTS_Msk   /* MTL Rx Queue Fill-Level Status */\n#define ETH_MTLRQDR_RXQSTS_EMPTY                      ((uint32_t)0x00000000)   /* Rx Queue empty */\n#define ETH_MTLRQDR_RXQSTS_BELOWTHRESHOLD_Pos         (4U)\n#define ETH_MTLRQDR_RXQSTS_BELOWTHRESHOLD_Msk         (0x1UL << ETH_MTLRQDR_RXQSTS_BELOWTHRESHOLD_Pos) /*!< 0x00000010 */\n#define ETH_MTLRQDR_RXQSTS_BELOWTHRESHOLD             ETH_MTLRQDR_RXQSTS_BELOWTHRESHOLD_Msk /* Rx Queue fill-level below flow-control deactivate threshold */\n#define ETH_MTLRQDR_RXQSTS_ABOVETHRESHOLD_Pos         (5U)\n#define ETH_MTLRQDR_RXQSTS_ABOVETHRESHOLD_Msk         (0x1UL << ETH_MTLRQDR_RXQSTS_ABOVETHRESHOLD_Pos) /*!< 0x00000020 */\n#define ETH_MTLRQDR_RXQSTS_ABOVETHRESHOLD             ETH_MTLRQDR_RXQSTS_ABOVETHRESHOLD_Msk /* Rx Queue fill-level above flow-control activate threshold */\n#define ETH_MTLRQDR_RXQSTS_FULL_Pos                   (4U)\n#define ETH_MTLRQDR_RXQSTS_FULL_Msk                   (0x3UL << ETH_MTLRQDR_RXQSTS_FULL_Pos) /*!< 0x00000030 */\n#define ETH_MTLRQDR_RXQSTS_FULL                       ETH_MTLRQDR_RXQSTS_FULL_Msk /* Rx Queue full */\n#define ETH_MTLRQDR_RRCSTS_Pos                        (1U)\n#define ETH_MTLRQDR_RRCSTS_Msk                        (0x3UL << ETH_MTLRQDR_RRCSTS_Pos) /*!< 0x00000006 */\n#define ETH_MTLRQDR_RRCSTS                            ETH_MTLRQDR_RRCSTS_Msk   /* MTL Rx Queue Read Controller State */\n#define ETH_MTLRQDR_RRCSTS_IDLE                       ((uint32_t)0x00000000)   /* Idle state */\n#define ETH_MTLRQDR_RRCSTS_READINGDATA_Pos            (1U)\n#define ETH_MTLRQDR_RRCSTS_READINGDATA_Msk            (0x1UL << ETH_MTLRQDR_RRCSTS_READINGDATA_Pos) /*!< 0x00000002 */\n#define ETH_MTLRQDR_RRCSTS_READINGDATA                ETH_MTLRQDR_RRCSTS_READINGDATA_Msk /* Reading packet data */\n#define ETH_MTLRQDR_RRCSTS_READINGSTATUS_Pos          (2U)\n#define ETH_MTLRQDR_RRCSTS_READINGSTATUS_Msk          (0x1UL << ETH_MTLRQDR_RRCSTS_READINGSTATUS_Pos) /*!< 0x00000004 */\n#define ETH_MTLRQDR_RRCSTS_READINGSTATUS              ETH_MTLRQDR_RRCSTS_READINGSTATUS_Msk /* Reading packet status (or timestamp) */\n#define ETH_MTLRQDR_RRCSTS_FLUSHING_Pos               (1U)\n#define ETH_MTLRQDR_RRCSTS_FLUSHING_Msk               (0x3UL << ETH_MTLRQDR_RRCSTS_FLUSHING_Pos) /*!< 0x00000006 */\n#define ETH_MTLRQDR_RRCSTS_FLUSHING                   ETH_MTLRQDR_RRCSTS_FLUSHING_Msk /* Flushing the packet data and status */\n#define ETH_MTLRQDR_RWCSTS_Pos                        (0U)\n#define ETH_MTLRQDR_RWCSTS_Msk                        (0x1UL << ETH_MTLRQDR_RWCSTS_Pos) /*!< 0x00000001 */\n#define ETH_MTLRQDR_RWCSTS                            ETH_MTLRQDR_RWCSTS_Msk   /* MTL Rx Queue Write Controller Active Status */\n\n/* Bit definition for Ethernet MTL Rx Queue Control Register */\n#define ETH_MTLRQCR_RQPA_Pos                          (3U)\n#define ETH_MTLRQCR_RQPA_Msk                          (0x1UL << ETH_MTLRQCR_RQPA_Pos) /*!< 0x00000008 */\n#define ETH_MTLRQCR_RQPA                              ETH_MTLRQCR_RQPA_Msk     /* Receive Queue Packet Arbitration */\n#define ETH_MTLRQCR_RQW_Pos                           (0U)\n#define ETH_MTLRQCR_RQW_Msk                           (0x7UL << ETH_MTLRQCR_RQW_Pos) /*!< 0x00000007 */\n#define ETH_MTLRQCR_RQW                               ETH_MTLRQCR_RQW_Msk      /* Receive Queue Weight */\n\n/* Bit definition for Ethernet DMA Mode Register */\n#define ETH_DMAMR_INTM_Pos                            (16U)\n#define ETH_DMAMR_INTM_Msk                            (0x3UL << ETH_DMAMR_INTM_Pos) /*!< 0x00030000 */\n#define ETH_DMAMR_INTM                                ETH_DMAMR_INTM_Msk       /* This field defines the interrupt mode */\n#define ETH_DMAMR_INTM_0                              (0x0UL << ETH_DMAMR_INTM_Pos) /*!< 0x00000000 */\n#define ETH_DMAMR_INTM_1                              (0x1UL << ETH_DMAMR_INTM_Pos) /*!< 0x00010000 */\n#define ETH_DMAMR_INTM_2                              (0x2UL << ETH_DMAMR_INTM_Pos) /*!< 0x00020000 */\n#define ETH_DMAMR_PR_Pos                              (12U)\n#define ETH_DMAMR_PR_Msk                              (0x7UL << ETH_DMAMR_PR_Pos) /*!< 0x00007000 */\n#define ETH_DMAMR_PR                                  ETH_DMAMR_PR_Msk         /* Priority Ratio */\n#define ETH_DMAMR_PR_1_1                              ((uint32_t)0x00000000)   /* The priority ratio is 1:1 */\n#define ETH_DMAMR_PR_2_1                              ((uint32_t)0x00001000)   /* The priority ratio is 2:1 */\n#define ETH_DMAMR_PR_3_1                              ((uint32_t)0x00002000)   /* The priority ratio is 3:1 */\n#define ETH_DMAMR_PR_4_1                              ((uint32_t)0x00003000)   /* The priority ratio is 4:1 */\n#define ETH_DMAMR_PR_5_1                              ((uint32_t)0x00004000)   /* The priority ratio is 5:1 */\n#define ETH_DMAMR_PR_6_1                              ((uint32_t)0x00005000)   /* The priority ratio is 6:1 */\n#define ETH_DMAMR_PR_7_1                              ((uint32_t)0x00006000)   /* The priority ratio is 7:1 */\n#define ETH_DMAMR_PR_8_1                              ((uint32_t)0x00007000)   /* The priority ratio is 8:1 */\n#define ETH_DMAMR_TXPR_Pos                            (11U)\n#define ETH_DMAMR_TXPR_Msk                            (0x1UL << ETH_DMAMR_TXPR_Pos) /*!< 0x00000800 */\n#define ETH_DMAMR_TXPR                                ETH_DMAMR_TXPR_Msk       /* Transmit Priority */\n#define ETH_DMAMR_DA_Pos                              (1U)\n#define ETH_DMAMR_DA_Msk                              (0x1UL << ETH_DMAMR_DA_Pos) /*!< 0x00000002 */\n#define ETH_DMAMR_DA                                  ETH_DMAMR_DA_Msk         /* DMA Tx or Rx Arbitration Scheme */\n#define ETH_DMAMR_SWR_Pos                             (0U)\n#define ETH_DMAMR_SWR_Msk                             (0x1UL << ETH_DMAMR_SWR_Pos) /*!< 0x00000001 */\n#define ETH_DMAMR_SWR                                 ETH_DMAMR_SWR_Msk        /* Software Reset */\n\n/* Bit definition for Ethernet DMA SysBus Mode Register */\n#define ETH_DMASBMR_RB_Pos                            (15U)\n#define ETH_DMASBMR_RB_Msk                            (0x1UL << ETH_DMASBMR_RB_Pos) /*!< 0x00008000 */\n#define ETH_DMASBMR_RB                                ETH_DMASBMR_RB_Msk       /* Rebuild INCRx Burst */\n#define ETH_DMASBMR_MB_Pos                            (14U)\n#define ETH_DMASBMR_MB_Msk                            (0x1UL << ETH_DMASBMR_MB_Pos) /*!< 0x00004000 */\n#define ETH_DMASBMR_MB                                ETH_DMASBMR_MB_Msk       /* Mixed Burst */\n#define ETH_DMASBMR_AAL_Pos                           (12U)\n#define ETH_DMASBMR_AAL_Msk                           (0x1UL << ETH_DMASBMR_AAL_Pos) /*!< 0x00001000 */\n#define ETH_DMASBMR_AAL                               ETH_DMASBMR_AAL_Msk      /* Address-Aligned Beats */\n#define ETH_DMASBMR_FB_Pos                            (0U)\n#define ETH_DMASBMR_FB_Msk                            (0x1UL << ETH_DMASBMR_FB_Pos) /*!< 0x00000001 */\n#define ETH_DMASBMR_FB                                ETH_DMASBMR_FB_Msk       /* Fixed Burst Length */\n\n/* Bit definition for Ethernet DMA Interrupt Status Register */\n#define ETH_DMAISR_MACIS_Pos                          (17U)\n#define ETH_DMAISR_MACIS_Msk                          (0x1UL << ETH_DMAISR_MACIS_Pos) /*!< 0x00020000 */\n#define ETH_DMAISR_MACIS                              ETH_DMAISR_MACIS_Msk     /* MAC Interrupt Status */\n#define ETH_DMAISR_MTLIS_Pos                          (16U)\n#define ETH_DMAISR_MTLIS_Msk                          (0x1UL << ETH_DMAISR_MTLIS_Pos) /*!< 0x00010000 */\n#define ETH_DMAISR_MTLIS                              ETH_DMAISR_MTLIS_Msk     /* MAC Interrupt Status */\n#define ETH_DMAISR_DMACIS_Pos                         (0U)\n#define ETH_DMAISR_DMACIS_Msk                         (0x1UL << ETH_DMAISR_DMACIS_Pos) /*!< 0x00000001 */\n#define ETH_DMAISR_DMACIS                             ETH_DMAISR_DMACIS_Msk    /* DMA Channel Interrupt Status */\n\n/* Bit definition for Ethernet DMA Debug Status Register */\n#define ETH_DMADSR_TPS_Pos                            (12U)\n#define ETH_DMADSR_TPS_Msk                            (0xFUL << ETH_DMADSR_TPS_Pos) /*!< 0x0000F000 */\n#define ETH_DMADSR_TPS                                ETH_DMADSR_TPS_Msk       /* DMA Channel Transmit Process State */\n#define ETH_DMADSR_TPS_STOPPED                        ((uint32_t)0x00000000)   /* Stopped (Reset or Stop Transmit Command issued) */\n#define ETH_DMADSR_TPS_FETCHING_Pos                   (12U)\n#define ETH_DMADSR_TPS_FETCHING_Msk                   (0x1UL << ETH_DMADSR_TPS_FETCHING_Pos) /*!< 0x00001000 */\n#define ETH_DMADSR_TPS_FETCHING                       ETH_DMADSR_TPS_FETCHING_Msk /* Running (Fetching Tx Transfer Descriptor) */\n#define ETH_DMADSR_TPS_WAITING_Pos                    (13U)\n#define ETH_DMADSR_TPS_WAITING_Msk                    (0x1UL << ETH_DMADSR_TPS_WAITING_Pos) /*!< 0x00002000 */\n#define ETH_DMADSR_TPS_WAITING                        ETH_DMADSR_TPS_WAITING_Msk /* Running (Waiting for status) */\n#define ETH_DMADSR_TPS_READING_Pos                    (12U)\n#define ETH_DMADSR_TPS_READING_Msk                    (0x3UL << ETH_DMADSR_TPS_READING_Pos) /*!< 0x00003000 */\n#define ETH_DMADSR_TPS_READING                        ETH_DMADSR_TPS_READING_Msk /* Running (Reading Data from system memory buffer and queuing it to the Tx buffer (Tx FIFO)) */\n#define ETH_DMADSR_TPS_TIMESTAMP_WR_Pos               (14U)\n#define ETH_DMADSR_TPS_TIMESTAMP_WR_Msk               (0x1UL << ETH_DMADSR_TPS_TIMESTAMP_WR_Pos) /*!< 0x00004000 */\n#define ETH_DMADSR_TPS_TIMESTAMP_WR                   ETH_DMADSR_TPS_TIMESTAMP_WR_Msk /* Timestamp write state */\n#define ETH_DMADSR_TPS_SUSPENDED_Pos                  (13U)\n#define ETH_DMADSR_TPS_SUSPENDED_Msk                  (0x3UL << ETH_DMADSR_TPS_SUSPENDED_Pos) /*!< 0x00006000 */\n#define ETH_DMADSR_TPS_SUSPENDED                      ETH_DMADSR_TPS_SUSPENDED_Msk /* Suspended (Tx Descriptor Unavailable or Tx Buffer Underflow) */\n#define ETH_DMADSR_TPS_CLOSING_Pos                    (12U)\n#define ETH_DMADSR_TPS_CLOSING_Msk                    (0x7UL << ETH_DMADSR_TPS_CLOSING_Pos) /*!< 0x00007000 */\n#define ETH_DMADSR_TPS_CLOSING                        ETH_DMADSR_TPS_CLOSING_Msk /* Running (Closing Tx Descriptor) */\n#define ETH_DMADSR_RPS_Pos                            (8U)\n#define ETH_DMADSR_RPS_Msk                            (0xFUL << ETH_DMADSR_RPS_Pos) /*!< 0x00000F00 */\n#define ETH_DMADSR_RPS                                ETH_DMADSR_RPS_Msk       /* DMA Channel Receive Process State */\n#define ETH_DMADSR_RPS_STOPPED                        ((uint32_t)0x00000000)   /* Stopped (Reset or Stop Receive Command issued) */\n#define ETH_DMADSR_RPS_FETCHING_Pos                   (12U)\n#define ETH_DMADSR_RPS_FETCHING_Msk                   (0x1UL << ETH_DMADSR_RPS_FETCHING_Pos) /*!< 0x00001000 */\n#define ETH_DMADSR_RPS_FETCHING                       ETH_DMADSR_RPS_FETCHING_Msk /* Running (Fetching Rx Transfer Descriptor) */\n#define ETH_DMADSR_RPS_WAITING_Pos                    (12U)\n#define ETH_DMADSR_RPS_WAITING_Msk                    (0x3UL << ETH_DMADSR_RPS_WAITING_Pos) /*!< 0x00003000 */\n#define ETH_DMADSR_RPS_WAITING                        ETH_DMADSR_RPS_WAITING_Msk /* Running (Waiting for status) */\n#define ETH_DMADSR_RPS_SUSPENDED_Pos                  (14U)\n#define ETH_DMADSR_RPS_SUSPENDED_Msk                  (0x1UL << ETH_DMADSR_RPS_SUSPENDED_Pos) /*!< 0x00004000 */\n#define ETH_DMADSR_RPS_SUSPENDED                      ETH_DMADSR_RPS_SUSPENDED_Msk /* Suspended (Rx Descriptor Unavailable) */\n#define ETH_DMADSR_RPS_CLOSING_Pos                    (12U)\n#define ETH_DMADSR_RPS_CLOSING_Msk                    (0x5UL << ETH_DMADSR_RPS_CLOSING_Pos) /*!< 0x00005000 */\n#define ETH_DMADSR_RPS_CLOSING                        ETH_DMADSR_RPS_CLOSING_Msk /* Running (Closing the Rx Descriptor) */\n#define ETH_DMADSR_RPS_TIMESTAMP_WR_Pos               (13U)\n#define ETH_DMADSR_RPS_TIMESTAMP_WR_Msk               (0x3UL << ETH_DMADSR_RPS_TIMESTAMP_WR_Pos) /*!< 0x00006000 */\n#define ETH_DMADSR_RPS_TIMESTAMP_WR                   ETH_DMADSR_RPS_TIMESTAMP_WR_Msk /* Timestamp write state */\n#define ETH_DMADSR_RPS_TRANSFERRING_Pos               (12U)\n#define ETH_DMADSR_RPS_TRANSFERRING_Msk               (0x7UL << ETH_DMADSR_RPS_TRANSFERRING_Pos) /*!< 0x00007000 */\n#define ETH_DMADSR_RPS_TRANSFERRING                   ETH_DMADSR_RPS_TRANSFERRING_Msk /* Running (Transferring the received packet data from the Rx buffer to the system memory) */\n\n/* Bit definition for Ethernet DMA Channel Control Register */\n#define ETH_DMACCR_DSL_Pos                            (18U)\n#define ETH_DMACCR_DSL_Msk                            (0x7UL << ETH_DMACCR_DSL_Pos) /*!< 0x001C0000 */\n#define ETH_DMACCR_DSL                                ETH_DMACCR_DSL_Msk       /* Descriptor Skip Length */\n#define ETH_DMACCR_DSL_0BIT                           ((uint32_t)0x00000000)\n#define ETH_DMACCR_DSL_32BIT                          ((uint32_t)0x00040000)\n#define ETH_DMACCR_DSL_64BIT                          ((uint32_t)0x00080000)\n#define ETH_DMACCR_DSL_128BIT                         ((uint32_t)0x00100000)\n#define ETH_DMACCR_8PBL                               ((uint32_t)0x00010000)   /* 8xPBL mode */\n#define ETH_DMACCR_MSS_Pos                            (0U)\n#define ETH_DMACCR_MSS_Msk                            (0x3FFFUL << ETH_DMACCR_MSS_Pos) /*!< 0x00003FFF */\n#define ETH_DMACCR_MSS                                ETH_DMACCR_MSS_Msk       /* Maximum Segment Size */\n\n/* Bit definition for Ethernet DMA Channel Tx Control Register */\n#define ETH_DMACTCR_TPBL_Pos                          (16U)\n#define ETH_DMACTCR_TPBL_Msk                          (0x3FUL << ETH_DMACTCR_TPBL_Pos) /*!< 0x003F0000 */\n#define ETH_DMACTCR_TPBL                              ETH_DMACTCR_TPBL_Msk     /* Transmit Programmable Burst Length */\n#define ETH_DMACTCR_TPBL_1PBL                         ((uint32_t)0x00010000)   /* Transmit Programmable Burst Length 1 */\n#define ETH_DMACTCR_TPBL_2PBL                         ((uint32_t)0x00020000)   /* Transmit Programmable Burst Length 2 */\n#define ETH_DMACTCR_TPBL_4PBL                         ((uint32_t)0x00040000)   /* Transmit Programmable Burst Length 4 */\n#define ETH_DMACTCR_TPBL_8PBL                         ((uint32_t)0x00080000)   /* Transmit Programmable Burst Length 8 */\n#define ETH_DMACTCR_TPBL_16PBL                        ((uint32_t)0x00100000)   /* Transmit Programmable Burst Length 16 */\n#define ETH_DMACTCR_TPBL_32PBL                        ((uint32_t)0x00200000)   /* Transmit Programmable Burst Length 32 */\n#define ETH_DMACTCR_TSE_Pos                           (12U)\n#define ETH_DMACTCR_TSE_Msk                           (0x1UL << ETH_DMACTCR_TSE_Pos) /*!< 0x00001000 */\n#define ETH_DMACTCR_TSE                               ETH_DMACTCR_TSE_Msk      /* TCP Segmentation Enabled */\n#define ETH_DMACTCR_OSP_Pos                           (4U)\n#define ETH_DMACTCR_OSP_Msk                           (0x1UL << ETH_DMACTCR_OSP_Pos) /*!< 0x00000010 */\n#define ETH_DMACTCR_OSP                               ETH_DMACTCR_OSP_Msk      /* Operate on Second Packet */\n#define ETH_DMACTCR_ST_Pos                            (0U)\n#define ETH_DMACTCR_ST_Msk                            (0x1UL << ETH_DMACTCR_ST_Pos) /*!< 0x00000001 */\n#define ETH_DMACTCR_ST                                ETH_DMACTCR_ST_Msk       /* Start or Stop Transmission Command */\n\n/* Bit definition for Ethernet DMA Channel Rx Control Register */\n#define ETH_DMACRCR_RPF_Pos                           (31U)\n#define ETH_DMACRCR_RPF_Msk                           (0x1UL << ETH_DMACRCR_RPF_Pos) /*!< 0x80000000 */\n#define ETH_DMACRCR_RPF                               ETH_DMACRCR_RPF_Msk      /* Rx Packet Flush */\n#define ETH_DMACRCR_RPBL_Pos                          (16U)\n#define ETH_DMACRCR_RPBL_Msk                          (0x3FUL << ETH_DMACRCR_RPBL_Pos) /*!< 0x003F0000 */\n#define ETH_DMACRCR_RPBL                              ETH_DMACRCR_RPBL_Msk     /* Receive Programmable Burst Length */\n#define ETH_DMACRCR_RPBL_1PBL                         ((uint32_t)0x00010000)   /* Receive Programmable Burst Length 1 */\n#define ETH_DMACRCR_RPBL_2PBL                         ((uint32_t)0x00020000)   /* Receive Programmable Burst Length 2 */\n#define ETH_DMACRCR_RPBL_4PBL                         ((uint32_t)0x00040000)   /* Receive Programmable Burst Length 4 */\n#define ETH_DMACRCR_RPBL_8PBL                         ((uint32_t)0x00080000)   /* Receive Programmable Burst Length 8 */\n#define ETH_DMACRCR_RPBL_16PBL                        ((uint32_t)0x00100000)   /* Receive Programmable Burst Length 16 */\n#define ETH_DMACRCR_RPBL_32PBL                        ((uint32_t)0x00200000)   /* Receive Programmable Burst Length 32 */\n#define ETH_DMACRCR_RBSZ_Pos                          (1U)\n#define ETH_DMACRCR_RBSZ_Msk                          (0x3FFFUL << ETH_DMACRCR_RBSZ_Pos) /*!< 0x00007FFE */\n#define ETH_DMACRCR_RBSZ                              ETH_DMACRCR_RBSZ_Msk     /* Receive Buffer size */\n#define ETH_DMACRCR_SR_Pos                            (0U)\n#define ETH_DMACRCR_SR_Msk                            (0x1UL << ETH_DMACRCR_SR_Pos) /*!< 0x00000001 */\n#define ETH_DMACRCR_SR                                ETH_DMACRCR_SR_Msk       /* Start or Stop Receive */\n\n/* Bit definition for Ethernet DMA CH Tx Desc List Address Register */\n#define ETH_DMACTDLAR_TDESLA_Pos                      (2U)\n#define ETH_DMACTDLAR_TDESLA_Msk                      (0x3FFFFFFFUL << ETH_DMACTDLAR_TDESLA_Pos) /*!< 0xFFFFFFFC */\n#define ETH_DMACTDLAR_TDESLA                          ETH_DMACTDLAR_TDESLA_Msk /* Start of Transmit List */\n\n/* Bit definition for Ethernet DMA CH Rx Desc List Address Register */\n#define ETH_DMACRDLAR_RDESLA_Pos                      (2U)\n#define ETH_DMACRDLAR_RDESLA_Msk                      (0x3FFFFFFFUL << ETH_DMACRDLAR_RDESLA_Pos) /*!< 0xFFFFFFFC */\n#define ETH_DMACRDLAR_RDESLA                          ETH_DMACRDLAR_RDESLA_Msk /* Start of Receive List */\n\n/* Bit definition for Ethernet DMA CH Tx Desc Tail Pointer Register */\n#define ETH_DMACTDTPR_TDT_Pos                         (2U)\n#define ETH_DMACTDTPR_TDT_Msk                         (0x3FFFFFFFUL << ETH_DMACTDTPR_TDT_Pos) /*!< 0xFFFFFFFC */\n#define ETH_DMACTDTPR_TDT                             ETH_DMACTDTPR_TDT_Msk    /* Transmit Descriptor Tail Pointer */\n\n/* Bit definition for Ethernet DMA CH Rx Desc Tail Pointer Register */\n#define ETH_DMACRDTPR_RDT_Pos                         (2U)\n#define ETH_DMACRDTPR_RDT_Msk                         (0x3FFFFFFFUL << ETH_DMACRDTPR_RDT_Pos) /*!< 0xFFFFFFFC */\n#define ETH_DMACRDTPR_RDT                             ETH_DMACRDTPR_RDT_Msk    /* Receive Descriptor Tail Pointer */\n\n/* Bit definition for Ethernet DMA CH Tx Desc Ring Length Register */\n#define ETH_DMACTDRLR_TDRL_Pos                        (0U)\n#define ETH_DMACTDRLR_TDRL_Msk                        (0x3FFUL << ETH_DMACTDRLR_TDRL_Pos) /*!< 0x000003FF */\n#define ETH_DMACTDRLR_TDRL                            ETH_DMACTDRLR_TDRL_Msk   /* Transmit Descriptor Ring Length */\n\n/* Bit definition for Ethernet DMA CH Rx Desc Ring Length Register */\n#define ETH_DMACRDRLR_RDRL_Pos                        (0U)\n#define ETH_DMACRDRLR_RDRL_Msk                        (0x3FFUL << ETH_DMACRDRLR_RDRL_Pos) /*!< 0x000003FF */\n#define ETH_DMACRDRLR_RDRL                            ETH_DMACRDRLR_RDRL_Msk   /* Receive Descriptor Ring Length */\n\n/* Bit definition for Ethernet DMA Channel Interrupt Enable Register */\n#define ETH_DMACIER_NIE_Pos                           (15U)\n#define ETH_DMACIER_NIE_Msk                           (0x1UL << ETH_DMACIER_NIE_Pos) /*!< 0x00008000 */\n#define ETH_DMACIER_NIE                               ETH_DMACIER_NIE_Msk      /* Normal Interrupt Summary Enable */\n#define ETH_DMACIER_AIE_Pos                           (14U)\n#define ETH_DMACIER_AIE_Msk                           (0x1UL << ETH_DMACIER_AIE_Pos) /*!< 0x00004000 */\n#define ETH_DMACIER_AIE                               ETH_DMACIER_AIE_Msk      /* Abnormal Interrupt Summary Enable */\n#define ETH_DMACIER_CDEE_Pos                          (13U)\n#define ETH_DMACIER_CDEE_Msk                          (0x1UL << ETH_DMACIER_CDEE_Pos) /*!< 0x00002000 */\n#define ETH_DMACIER_CDEE                              ETH_DMACIER_CDEE_Msk     /* Context Descriptor Error Enable */\n#define ETH_DMACIER_FBEE_Pos                          (12U)\n#define ETH_DMACIER_FBEE_Msk                          (0x1UL << ETH_DMACIER_FBEE_Pos) /*!< 0x00001000 */\n#define ETH_DMACIER_FBEE                              ETH_DMACIER_FBEE_Msk     /* Fatal Bus Error Enable */\n#define ETH_DMACIER_ERIE_Pos                          (11U)\n#define ETH_DMACIER_ERIE_Msk                          (0x1UL << ETH_DMACIER_ERIE_Pos) /*!< 0x00000800 */\n#define ETH_DMACIER_ERIE                              ETH_DMACIER_ERIE_Msk     /* Early Receive Interrupt Enable */\n#define ETH_DMACIER_ETIE_Pos                          (10U)\n#define ETH_DMACIER_ETIE_Msk                          (0x1UL << ETH_DMACIER_ETIE_Pos) /*!< 0x00000400 */\n#define ETH_DMACIER_ETIE                              ETH_DMACIER_ETIE_Msk     /* Early Transmit Interrupt Enable */\n#define ETH_DMACIER_RWTE_Pos                          (9U)\n#define ETH_DMACIER_RWTE_Msk                          (0x1UL << ETH_DMACIER_RWTE_Pos) /*!< 0x00000200 */\n#define ETH_DMACIER_RWTE                              ETH_DMACIER_RWTE_Msk     /* Receive Watchdog Timeout Enable */\n#define ETH_DMACIER_RSE_Pos                           (8U)\n#define ETH_DMACIER_RSE_Msk                           (0x1UL << ETH_DMACIER_RSE_Pos) /*!< 0x00000100 */\n#define ETH_DMACIER_RSE                               ETH_DMACIER_RSE_Msk      /* Receive Stopped Enable */\n#define ETH_DMACIER_RBUE_Pos                          (7U)\n#define ETH_DMACIER_RBUE_Msk                          (0x1UL << ETH_DMACIER_RBUE_Pos) /*!< 0x00000080 */\n#define ETH_DMACIER_RBUE                              ETH_DMACIER_RBUE_Msk     /* Receive Buffer Unavailable Enable */\n#define ETH_DMACIER_RIE_Pos                           (6U)\n#define ETH_DMACIER_RIE_Msk                           (0x1UL << ETH_DMACIER_RIE_Pos) /*!< 0x00000040 */\n#define ETH_DMACIER_RIE                               ETH_DMACIER_RIE_Msk      /* Receive Interrupt Enable */\n#define ETH_DMACIER_TBUE_Pos                          (2U)\n#define ETH_DMACIER_TBUE_Msk                          (0x1UL << ETH_DMACIER_TBUE_Pos) /*!< 0x00000004 */\n#define ETH_DMACIER_TBUE                              ETH_DMACIER_TBUE_Msk     /* Transmit Buffer Unavailable Enable */\n#define ETH_DMACIER_TXSE_Pos                          (1U)\n#define ETH_DMACIER_TXSE_Msk                          (0x1UL << ETH_DMACIER_TXSE_Pos) /*!< 0x00000002 */\n#define ETH_DMACIER_TXSE                              ETH_DMACIER_TXSE_Msk     /* Transmit Stopped Enable */\n#define ETH_DMACIER_TIE_Pos                           (0U)\n#define ETH_DMACIER_TIE_Msk                           (0x1UL << ETH_DMACIER_TIE_Pos) /*!< 0x00000001 */\n#define ETH_DMACIER_TIE                               ETH_DMACIER_TIE_Msk      /* Transmit Interrupt Enable */\n\n/* Bit definition for Ethernet DMA Channel Rx Interrupt Watchdog Timer Register */\n#define ETH_DMACRIWTR_RWT_Pos                         (0U)\n#define ETH_DMACRIWTR_RWT_Msk                         (0xFFUL << ETH_DMACRIWTR_RWT_Pos) /*!< 0x000000FF */\n#define ETH_DMACRIWTR_RWT                             ETH_DMACRIWTR_RWT_Msk    /* Receive Interrupt Watchdog Timer Count */\n\n/* Bit definition for Ethernet DMA Channel Current App Tx Desc Register */\n#define ETH_DMACCATDR_CURTDESAPTR_Pos                 (0U)\n#define ETH_DMACCATDR_CURTDESAPTR_Msk                 (0xFFFFFFFFUL << ETH_DMACCATDR_CURTDESAPTR_Pos) /*!< 0xFFFFFFFF */\n#define ETH_DMACCATDR_CURTDESAPTR                     ETH_DMACCATDR_CURTDESAPTR_Msk /* Application Transmit Descriptor Address Pointer */\n\n/* Bit definition for Ethernet DMA Channel Current App Rx Desc Register */\n#define ETH_DMACCARDR_CURRDESAPTR_Pos                 (0U)\n#define ETH_DMACCARDR_CURRDESAPTR_Msk                 (0xFFFFFFFFUL << ETH_DMACCARDR_CURRDESAPTR_Pos) /*!< 0xFFFFFFFF */\n#define ETH_DMACCARDR_CURRDESAPTR                     ETH_DMACCARDR_CURRDESAPTR_Msk /* Application Receive Descriptor Address Pointer */\n\n/* Bit definition for Ethernet DMA Channel Current App Tx Buffer Register */\n#define ETH_DMACCATBR_CURTBUFAPTR_Pos                 (0U)\n#define ETH_DMACCATBR_CURTBUFAPTR_Msk                 (0xFFFFFFFFUL << ETH_DMACCATBR_CURTBUFAPTR_Pos) /*!< 0xFFFFFFFF */\n#define ETH_DMACCATBR_CURTBUFAPTR                     ETH_DMACCATBR_CURTBUFAPTR_Msk /* Application Transmit Buffer Address Pointer */\n\n/* Bit definition for Ethernet DMA Channel Current App Rx Buffer Register */\n#define ETH_DMACCARBR_CURRBUFAPTR_Pos                 (0U)\n#define ETH_DMACCARBR_CURRBUFAPTR_Msk                 (0xFFFFFFFFUL << ETH_DMACCARBR_CURRBUFAPTR_Pos) /*!< 0xFFFFFFFF */\n#define ETH_DMACCARBR_CURRBUFAPTR                     ETH_DMACCARBR_CURRBUFAPTR_Msk /* Application Receive Buffer Address Pointer */\n\n/* Bit definition for Ethernet DMA Channel Status Register */\n#define ETH_DMACSR_REB_Pos                            (19U)\n#define ETH_DMACSR_REB_Msk                            (0x7UL << ETH_DMACSR_REB_Pos) /*!< 0x00380000 */\n#define ETH_DMACSR_REB                                ETH_DMACSR_REB_Msk       /* Rx DMA Error Bits */\n#define ETH_DMACSR_TEB_Pos                            (16U)\n#define ETH_DMACSR_TEB_Msk                            (0x7UL << ETH_DMACSR_TEB_Pos) /*!< 0x00070000 */\n#define ETH_DMACSR_TEB                                ETH_DMACSR_TEB_Msk       /* Tx DMA Error Bits */\n#define ETH_DMACSR_NIS_Pos                            (15U)\n#define ETH_DMACSR_NIS_Msk                            (0x1UL << ETH_DMACSR_NIS_Pos) /*!< 0x00008000 */\n#define ETH_DMACSR_NIS                                ETH_DMACSR_NIS_Msk       /* Normal Interrupt Summary */\n#define ETH_DMACSR_AIS_Pos                            (14U)\n#define ETH_DMACSR_AIS_Msk                            (0x1UL << ETH_DMACSR_AIS_Pos) /*!< 0x00004000 */\n#define ETH_DMACSR_AIS                                ETH_DMACSR_AIS_Msk       /* Abnormal Interrupt Summary */\n#define ETH_DMACSR_CDE_Pos                            (13U)\n#define ETH_DMACSR_CDE_Msk                            (0x1UL << ETH_DMACSR_CDE_Pos) /*!< 0x00002000 */\n#define ETH_DMACSR_CDE                                ETH_DMACSR_CDE_Msk       /* Context Descriptor Error */\n#define ETH_DMACSR_FBE_Pos                            (12U)\n#define ETH_DMACSR_FBE_Msk                            (0x1UL << ETH_DMACSR_FBE_Pos) /*!< 0x00001000 */\n#define ETH_DMACSR_FBE                                ETH_DMACSR_FBE_Msk       /* Fatal Bus Error */\n#define ETH_DMACSR_ERI_Pos                            (11U)\n#define ETH_DMACSR_ERI_Msk                            (0x1UL << ETH_DMACSR_ERI_Pos) /*!< 0x00000800 */\n#define ETH_DMACSR_ERI                                ETH_DMACSR_ERI_Msk       /* Early Receive Interrupt */\n#define ETH_DMACSR_ETI_Pos                            (10U)\n#define ETH_DMACSR_ETI_Msk                            (0x1UL << ETH_DMACSR_ETI_Pos) /*!< 0x00000400 */\n#define ETH_DMACSR_ETI                                ETH_DMACSR_ETI_Msk       /* Early Transmit Interrupt */\n#define ETH_DMACSR_RWT_Pos                            (9U)\n#define ETH_DMACSR_RWT_Msk                            (0x1UL << ETH_DMACSR_RWT_Pos) /*!< 0x00000200 */\n#define ETH_DMACSR_RWT                                ETH_DMACSR_RWT_Msk       /* Receive Watchdog Timeout */\n#define ETH_DMACSR_RPS_Pos                            (8U)\n#define ETH_DMACSR_RPS_Msk                            (0x1UL << ETH_DMACSR_RPS_Pos) /*!< 0x00000100 */\n#define ETH_DMACSR_RPS                                ETH_DMACSR_RPS_Msk       /* Receive Process Stopped */\n#define ETH_DMACSR_RBU_Pos                            (7U)\n#define ETH_DMACSR_RBU_Msk                            (0x1UL << ETH_DMACSR_RBU_Pos) /*!< 0x00000080 */\n#define ETH_DMACSR_RBU                                ETH_DMACSR_RBU_Msk       /* Receive Buffer Unavailable */\n#define ETH_DMACSR_RI_Pos                             (6U)\n#define ETH_DMACSR_RI_Msk                             (0x1UL << ETH_DMACSR_RI_Pos) /*!< 0x00000040 */\n#define ETH_DMACSR_RI                                 ETH_DMACSR_RI_Msk        /* Receive Interrupt */\n#define ETH_DMACSR_TBU_Pos                            (2U)\n#define ETH_DMACSR_TBU_Msk                            (0x1UL << ETH_DMACSR_TBU_Pos) /*!< 0x00000004 */\n#define ETH_DMACSR_TBU                                ETH_DMACSR_TBU_Msk       /* Transmit Buffer Unavailable */\n#define ETH_DMACSR_TPS_Pos                            (1U)\n#define ETH_DMACSR_TPS_Msk                            (0x1UL << ETH_DMACSR_TPS_Pos) /*!< 0x00000002 */\n#define ETH_DMACSR_TPS                                ETH_DMACSR_TPS_Msk       /* Transmit Process Stopped */\n#define ETH_DMACSR_TI_Pos                             (0U)\n#define ETH_DMACSR_TI_Msk                             (0x1UL << ETH_DMACSR_TI_Pos) /*!< 0x00000001 */\n#define ETH_DMACSR_TI                                 ETH_DMACSR_TI_Msk        /* Transmit Interrupt */\n\n/* Bit definition for Ethernet DMA Channel missed frame count register */\n#define ETH_DMACMFCR_MFCO_Pos                         (15U)\n#define ETH_DMACMFCR_MFCO_Msk                         (0x1UL << ETH_DMACMFCR_MFCO_Pos) /*!< 0x00008000 */\n#define ETH_DMACMFCR_MFCO                             ETH_DMACMFCR_MFCO_Msk    /* Overflow status of the MFC Counter */\n#define ETH_DMACMFCR_MFC_Pos                          (0U)\n#define ETH_DMACMFCR_MFC_Msk                          (0x7FFUL << ETH_DMACMFCR_MFC_Pos) /*!< 0x000007FF */\n#define ETH_DMACMFCR_MFC                              ETH_DMACMFCR_MFC_Msk     /* The number of packet counters dropped by the DMA */\n\n/******************************************************************************/\n/*                                                                            */\n/*                             DMA Controller                                 */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bits definition for DMA_SxCR register  *****************/\n#define DMA_SxCR_MBURST_Pos      (23U)\n#define DMA_SxCR_MBURST_Msk      (0x3UL << DMA_SxCR_MBURST_Pos)                /*!< 0x01800000 */\n#define DMA_SxCR_MBURST          DMA_SxCR_MBURST_Msk                           /*!< Memory burst transfer configuration */\n#define DMA_SxCR_MBURST_0        (0x1UL << DMA_SxCR_MBURST_Pos)                 /*!< 0x00800000 */\n#define DMA_SxCR_MBURST_1        (0x2UL << DMA_SxCR_MBURST_Pos)                 /*!< 0x01000000 */\n#define DMA_SxCR_PBURST_Pos      (21U)\n#define DMA_SxCR_PBURST_Msk      (0x3UL << DMA_SxCR_PBURST_Pos)                /*!< 0x00600000 */\n#define DMA_SxCR_PBURST          DMA_SxCR_PBURST_Msk                           /*!< Peripheral burst transfer configuration */\n#define DMA_SxCR_PBURST_0        (0x1UL << DMA_SxCR_PBURST_Pos)                 /*!< 0x00200000 */\n#define DMA_SxCR_PBURST_1        (0x2UL << DMA_SxCR_PBURST_Pos)                 /*!< 0x00400000 */\n#define DMA_SxCR_TRBUFF_Pos      (20U)\n#define DMA_SxCR_TRBUFF_Msk      (0x1UL << DMA_SxCR_TRBUFF_Pos)                 /*!< 0x00100000 */\n#define DMA_SxCR_TRBUFF          DMA_SxCR_TRBUFF_Msk                            /*!< bufferable transfers enabled/disable */\n#define DMA_SxCR_CT_Pos          (19U)\n#define DMA_SxCR_CT_Msk          (0x1UL << DMA_SxCR_CT_Pos)                    /*!< 0x00080000 */\n#define DMA_SxCR_CT              DMA_SxCR_CT_Msk                               /*!< Current target (only in double buffer mode) */\n#define DMA_SxCR_DBM_Pos         (18U)\n#define DMA_SxCR_DBM_Msk         (0x1UL << DMA_SxCR_DBM_Pos)                   /*!< 0x00040000 */\n#define DMA_SxCR_DBM             DMA_SxCR_DBM_Msk                              /*!< Double buffer mode */\n#define DMA_SxCR_PL_Pos          (16U)\n#define DMA_SxCR_PL_Msk          (0x3UL << DMA_SxCR_PL_Pos)                    /*!< 0x00030000 */\n#define DMA_SxCR_PL              DMA_SxCR_PL_Msk                               /*!< Priority level */\n#define DMA_SxCR_PL_0            (0x1UL << DMA_SxCR_PL_Pos)                     /*!< 0x00010000 */\n#define DMA_SxCR_PL_1            (0x2UL << DMA_SxCR_PL_Pos)                     /*!< 0x00020000 */\n#define DMA_SxCR_PINCOS_Pos      (15U)\n#define DMA_SxCR_PINCOS_Msk      (0x1UL << DMA_SxCR_PINCOS_Pos)                /*!< 0x00008000 */\n#define DMA_SxCR_PINCOS          DMA_SxCR_PINCOS_Msk                           /*!< Peripheral increment offset size */\n#define DMA_SxCR_MSIZE_Pos       (13U)\n#define DMA_SxCR_MSIZE_Msk       (0x3UL << DMA_SxCR_MSIZE_Pos)                 /*!< 0x00006000 */\n#define DMA_SxCR_MSIZE           DMA_SxCR_MSIZE_Msk                            /*!< Memory data size */\n#define DMA_SxCR_MSIZE_0         (0x1UL << DMA_SxCR_MSIZE_Pos)                  /*!< 0x00002000 */\n#define DMA_SxCR_MSIZE_1         (0x2UL << DMA_SxCR_MSIZE_Pos)                  /*!< 0x00004000 */\n#define DMA_SxCR_PSIZE_Pos       (11U)\n#define DMA_SxCR_PSIZE_Msk       (0x3UL << DMA_SxCR_PSIZE_Pos)                 /*!< 0x00001800 */\n#define DMA_SxCR_PSIZE           DMA_SxCR_PSIZE_Msk                            /*< Peripheral data size */\n#define DMA_SxCR_PSIZE_0         (0x1UL << DMA_SxCR_PSIZE_Pos)                  /*!< 0x00000800 */\n#define DMA_SxCR_PSIZE_1         (0x2UL << DMA_SxCR_PSIZE_Pos)                  /*!< 0x00001000 */\n#define DMA_SxCR_MINC_Pos        (10U)\n#define DMA_SxCR_MINC_Msk        (0x1UL << DMA_SxCR_MINC_Pos)                  /*!< 0x00000400 */\n#define DMA_SxCR_MINC            DMA_SxCR_MINC_Msk                             /*!< Memory increment mode */\n#define DMA_SxCR_PINC_Pos        (9U)\n#define DMA_SxCR_PINC_Msk        (0x1UL << DMA_SxCR_PINC_Pos)                  /*!< 0x00000200 */\n#define DMA_SxCR_PINC            DMA_SxCR_PINC_Msk                             /*!< Peripheral increment mode */\n#define DMA_SxCR_CIRC_Pos        (8U)\n#define DMA_SxCR_CIRC_Msk        (0x1UL << DMA_SxCR_CIRC_Pos)                  /*!< 0x00000100 */\n#define DMA_SxCR_CIRC            DMA_SxCR_CIRC_Msk                             /*!< Circular mode */\n#define DMA_SxCR_DIR_Pos         (6U)\n#define DMA_SxCR_DIR_Msk         (0x3UL << DMA_SxCR_DIR_Pos)                   /*!< 0x000000C0 */\n#define DMA_SxCR_DIR             DMA_SxCR_DIR_Msk                              /*!< Data transfer direction */\n#define DMA_SxCR_DIR_0           (0x1UL << DMA_SxCR_DIR_Pos)                    /*!< 0x00000040 */\n#define DMA_SxCR_DIR_1           (0x2UL << DMA_SxCR_DIR_Pos)                    /*!< 0x00000080 */\n#define DMA_SxCR_PFCTRL_Pos      (5U)\n#define DMA_SxCR_PFCTRL_Msk      (0x1UL << DMA_SxCR_PFCTRL_Pos)                /*!< 0x00000020 */\n#define DMA_SxCR_PFCTRL          DMA_SxCR_PFCTRL_Msk                           /*!< Peripheral flow controller */\n#define DMA_SxCR_TCIE_Pos        (4U)\n#define DMA_SxCR_TCIE_Msk        (0x1UL << DMA_SxCR_TCIE_Pos)                  /*!< 0x00000010 */\n#define DMA_SxCR_TCIE            DMA_SxCR_TCIE_Msk                             /*!< Transfer complete interrupt enable */\n#define DMA_SxCR_HTIE_Pos        (3U)\n#define DMA_SxCR_HTIE_Msk        (0x1UL << DMA_SxCR_HTIE_Pos)                  /*!< 0x00000008 */\n#define DMA_SxCR_HTIE            DMA_SxCR_HTIE_Msk                             /*!< Half transfer interrupt enable */\n#define DMA_SxCR_TEIE_Pos        (2U)\n#define DMA_SxCR_TEIE_Msk        (0x1UL << DMA_SxCR_TEIE_Pos)                  /*!< 0x00000004 */\n#define DMA_SxCR_TEIE            DMA_SxCR_TEIE_Msk                             /*!< Transfer error interrupt enable */\n#define DMA_SxCR_DMEIE_Pos       (1U)\n#define DMA_SxCR_DMEIE_Msk       (0x1UL << DMA_SxCR_DMEIE_Pos)                 /*!< 0x00000002 */\n#define DMA_SxCR_DMEIE           DMA_SxCR_DMEIE_Msk                            /*!< Direct mode error interrupt enable */\n#define DMA_SxCR_EN_Pos          (0U)\n#define DMA_SxCR_EN_Msk          (0x1UL << DMA_SxCR_EN_Pos)                    /*!< 0x00000001 */\n#define DMA_SxCR_EN              DMA_SxCR_EN_Msk                               /*!< Stream enable / flag stream ready when read low */\n\n/********************  Bits definition for DMA_SxCNDTR register  **************/\n#define DMA_SxNDT_Pos            (0U)\n#define DMA_SxNDT_Msk            (0xFFFFUL << DMA_SxNDT_Pos)                   /*!< 0x0000FFFF */\n#define DMA_SxNDT                DMA_SxNDT_Msk                                 /*!< Number of data items to transfer */\n#define DMA_SxNDT_0              (0x0001UL << DMA_SxNDT_Pos)                    /*!< 0x00000001 */\n#define DMA_SxNDT_1              (0x0002UL << DMA_SxNDT_Pos)                    /*!< 0x00000002 */\n#define DMA_SxNDT_2              (0x0004UL << DMA_SxNDT_Pos)                    /*!< 0x00000004 */\n#define DMA_SxNDT_3              (0x0008UL << DMA_SxNDT_Pos)                    /*!< 0x00000008 */\n#define DMA_SxNDT_4              (0x0010UL << DMA_SxNDT_Pos)                    /*!< 0x00000010 */\n#define DMA_SxNDT_5              (0x0020UL << DMA_SxNDT_Pos)                    /*!< 0x00000020 */\n#define DMA_SxNDT_6              (0x0040UL << DMA_SxNDT_Pos)                    /*!< 0x00000040 */\n#define DMA_SxNDT_7              (0x0080UL << DMA_SxNDT_Pos)                    /*!< 0x00000080 */\n#define DMA_SxNDT_8              (0x0100UL << DMA_SxNDT_Pos)                    /*!< 0x00000100 */\n#define DMA_SxNDT_9              (0x0200UL << DMA_SxNDT_Pos)                    /*!< 0x00000200 */\n#define DMA_SxNDT_10             (0x0400UL << DMA_SxNDT_Pos)                    /*!< 0x00000400 */\n#define DMA_SxNDT_11             (0x0800UL << DMA_SxNDT_Pos)                    /*!< 0x00000800 */\n#define DMA_SxNDT_12             (0x1000UL << DMA_SxNDT_Pos)                    /*!< 0x00001000 */\n#define DMA_SxNDT_13             (0x2000UL << DMA_SxNDT_Pos)                    /*!< 0x00002000 */\n#define DMA_SxNDT_14             (0x4000UL << DMA_SxNDT_Pos)                    /*!< 0x00004000 */\n#define DMA_SxNDT_15             (0x8000UL << DMA_SxNDT_Pos)                    /*!< 0x00008000 */\n\n/********************  Bits definition for DMA_SxFCR register  ****************/\n#define DMA_SxFCR_FEIE_Pos       (7U)\n#define DMA_SxFCR_FEIE_Msk       (0x1UL << DMA_SxFCR_FEIE_Pos)                 /*!< 0x00000080 */\n#define DMA_SxFCR_FEIE           DMA_SxFCR_FEIE_Msk                            /*!< FIFO error interrupt enable */\n#define DMA_SxFCR_FS_Pos         (3U)\n#define DMA_SxFCR_FS_Msk         (0x7UL << DMA_SxFCR_FS_Pos)                   /*!< 0x00000038 */\n#define DMA_SxFCR_FS             DMA_SxFCR_FS_Msk                              /*!< FIFO status */\n#define DMA_SxFCR_FS_0           (0x1UL << DMA_SxFCR_FS_Pos)                    /*!< 0x00000008 */\n#define DMA_SxFCR_FS_1           (0x2UL << DMA_SxFCR_FS_Pos)                    /*!< 0x00000010 */\n#define DMA_SxFCR_FS_2           (0x4UL << DMA_SxFCR_FS_Pos)                    /*!< 0x00000020 */\n#define DMA_SxFCR_DMDIS_Pos      (2U)\n#define DMA_SxFCR_DMDIS_Msk      (0x1UL << DMA_SxFCR_DMDIS_Pos)                /*!< 0x00000004 */\n#define DMA_SxFCR_DMDIS          DMA_SxFCR_DMDIS_Msk                           /*!< Direct mode disable */\n#define DMA_SxFCR_FTH_Pos        (0U)\n#define DMA_SxFCR_FTH_Msk        (0x3UL << DMA_SxFCR_FTH_Pos)                  /*!< 0x00000003 */\n#define DMA_SxFCR_FTH            DMA_SxFCR_FTH_Msk                             /*!< FIFO threshold selection */\n#define DMA_SxFCR_FTH_0          (0x1UL << DMA_SxFCR_FTH_Pos)                   /*!< 0x00000001 */\n#define DMA_SxFCR_FTH_1          (0x2UL << DMA_SxFCR_FTH_Pos)                   /*!< 0x00000002 */\n\n/********************  Bits definition for DMA_LISR register  *****************/\n#define DMA_LISR_TCIF3_Pos       (27U)\n#define DMA_LISR_TCIF3_Msk       (0x1UL << DMA_LISR_TCIF3_Pos)                 /*!< 0x08000000 */\n#define DMA_LISR_TCIF3           DMA_LISR_TCIF3_Msk                            /*!<  Stream 3 transfer complete interrupt flag */\n#define DMA_LISR_HTIF3_Pos       (26U)\n#define DMA_LISR_HTIF3_Msk       (0x1UL << DMA_LISR_HTIF3_Pos)                 /*!< 0x04000000 */\n#define DMA_LISR_HTIF3           DMA_LISR_HTIF3_Msk                            /*!<  Stream 3 half transfer interrupt flag */\n#define DMA_LISR_TEIF3_Pos       (25U)\n#define DMA_LISR_TEIF3_Msk       (0x1UL << DMA_LISR_TEIF3_Pos)                 /*!< 0x02000000 */\n#define DMA_LISR_TEIF3           DMA_LISR_TEIF3_Msk                            /*!<  Stream 3 transfer error interrupt flag */\n#define DMA_LISR_DMEIF3_Pos      (24U)\n#define DMA_LISR_DMEIF3_Msk      (0x1UL << DMA_LISR_DMEIF3_Pos)                /*!< 0x01000000 */\n#define DMA_LISR_DMEIF3          DMA_LISR_DMEIF3_Msk                           /*!<  Stream 3 direct mode error interrupt flag */\n#define DMA_LISR_FEIF3_Pos       (22U)\n#define DMA_LISR_FEIF3_Msk       (0x1UL << DMA_LISR_FEIF3_Pos)                 /*!< 0x00400000 */\n#define DMA_LISR_FEIF3           DMA_LISR_FEIF3_Msk                            /*!<  Stream 3 FIFO error interrupt flag */\n#define DMA_LISR_TCIF2_Pos       (21U)\n#define DMA_LISR_TCIF2_Msk       (0x1UL << DMA_LISR_TCIF2_Pos)                 /*!< 0x00200000 */\n#define DMA_LISR_TCIF2           DMA_LISR_TCIF2_Msk                            /*!<  Stream 2 transfer complete interrupt flag */\n#define DMA_LISR_HTIF2_Pos       (20U)\n#define DMA_LISR_HTIF2_Msk       (0x1UL << DMA_LISR_HTIF2_Pos)                 /*!< 0x00100000 */\n#define DMA_LISR_HTIF2           DMA_LISR_HTIF2_Msk                            /*!<  Stream 2 half transfer interrupt flag */\n#define DMA_LISR_TEIF2_Pos       (19U)\n#define DMA_LISR_TEIF2_Msk       (0x1UL << DMA_LISR_TEIF2_Pos)                 /*!< 0x00080000 */\n#define DMA_LISR_TEIF2           DMA_LISR_TEIF2_Msk                            /*!<  Stream 2 transfer error interrupt flag */\n#define DMA_LISR_DMEIF2_Pos      (18U)\n#define DMA_LISR_DMEIF2_Msk      (0x1UL << DMA_LISR_DMEIF2_Pos)                /*!< 0x00040000 */\n#define DMA_LISR_DMEIF2          DMA_LISR_DMEIF2_Msk                           /*!<  Stream 2 direct mode error interrupt flag */\n#define DMA_LISR_FEIF2_Pos       (16U)\n#define DMA_LISR_FEIF2_Msk       (0x1UL << DMA_LISR_FEIF2_Pos)                 /*!< 0x00010000 */\n#define DMA_LISR_FEIF2           DMA_LISR_FEIF2_Msk                            /*!<  Stream 2 FIFO error interrupt flag */\n#define DMA_LISR_TCIF1_Pos       (11U)\n#define DMA_LISR_TCIF1_Msk       (0x1UL << DMA_LISR_TCIF1_Pos)                 /*!< 0x00000800 */\n#define DMA_LISR_TCIF1           DMA_LISR_TCIF1_Msk                            /*!<  Stream 1 transfer complete interrupt flag */\n#define DMA_LISR_HTIF1_Pos       (10U)\n#define DMA_LISR_HTIF1_Msk       (0x1UL << DMA_LISR_HTIF1_Pos)                 /*!< 0x00000400 */\n#define DMA_LISR_HTIF1           DMA_LISR_HTIF1_Msk                            /*!<  Stream 1 half transfer interrupt flag */\n#define DMA_LISR_TEIF1_Pos       (9U)\n#define DMA_LISR_TEIF1_Msk       (0x1UL << DMA_LISR_TEIF1_Pos)                 /*!< 0x00000200 */\n#define DMA_LISR_TEIF1           DMA_LISR_TEIF1_Msk                            /*!<  Stream 1 transfer error interrupt flag */\n#define DMA_LISR_DMEIF1_Pos      (8U)\n#define DMA_LISR_DMEIF1_Msk      (0x1UL << DMA_LISR_DMEIF1_Pos)                /*!< 0x00000100 */\n#define DMA_LISR_DMEIF1          DMA_LISR_DMEIF1_Msk                           /*!<  Stream 1 direct mode error interrupt flag */\n#define DMA_LISR_FEIF1_Pos       (6U)\n#define DMA_LISR_FEIF1_Msk       (0x1UL << DMA_LISR_FEIF1_Pos)                 /*!< 0x00000040 */\n#define DMA_LISR_FEIF1           DMA_LISR_FEIF1_Msk                            /*!<  Stream 1 FIFO error interrupt flag */\n#define DMA_LISR_TCIF0_Pos       (5U)\n#define DMA_LISR_TCIF0_Msk       (0x1UL << DMA_LISR_TCIF0_Pos)                 /*!< 0x00000020 */\n#define DMA_LISR_TCIF0           DMA_LISR_TCIF0_Msk                            /*!<  Stream 0 transfer complete interrupt flag */\n#define DMA_LISR_HTIF0_Pos       (4U)\n#define DMA_LISR_HTIF0_Msk       (0x1UL << DMA_LISR_HTIF0_Pos)                 /*!< 0x00000010 */\n#define DMA_LISR_HTIF0           DMA_LISR_HTIF0_Msk                            /*!<  Stream 0 half transfer interrupt flag */\n#define DMA_LISR_TEIF0_Pos       (3U)\n#define DMA_LISR_TEIF0_Msk       (0x1UL << DMA_LISR_TEIF0_Pos)                 /*!< 0x00000008 */\n#define DMA_LISR_TEIF0           DMA_LISR_TEIF0_Msk                            /*!<  Stream 0 transfer error interrupt flag */\n#define DMA_LISR_DMEIF0_Pos      (2U)\n#define DMA_LISR_DMEIF0_Msk      (0x1UL << DMA_LISR_DMEIF0_Pos)                /*!< 0x00000004 */\n#define DMA_LISR_DMEIF0          DMA_LISR_DMEIF0_Msk                           /*!<  Stream 0 direct mode error interrupt flag */\n#define DMA_LISR_FEIF0_Pos       (0U)\n#define DMA_LISR_FEIF0_Msk       (0x1UL << DMA_LISR_FEIF0_Pos)                 /*!< 0x00000001 */\n#define DMA_LISR_FEIF0           DMA_LISR_FEIF0_Msk                            /*!<  Stream 0 FIFO error interrupt flag */\n\n/********************  Bits definition for DMA_HISR register  *****************/\n#define DMA_HISR_TCIF7_Pos       (27U)\n#define DMA_HISR_TCIF7_Msk       (0x1UL << DMA_HISR_TCIF7_Pos)                 /*!< 0x08000000 */\n#define DMA_HISR_TCIF7           DMA_HISR_TCIF7_Msk                            /*!<  Stream 7 transfer complete interrupt flag */\n#define DMA_HISR_HTIF7_Pos       (26U)\n#define DMA_HISR_HTIF7_Msk       (0x1UL << DMA_HISR_HTIF7_Pos)                 /*!< 0x04000000 */\n#define DMA_HISR_HTIF7           DMA_HISR_HTIF7_Msk                            /*!<  Stream 7 half transfer interrupt flag */\n#define DMA_HISR_TEIF7_Pos       (25U)\n#define DMA_HISR_TEIF7_Msk       (0x1UL << DMA_HISR_TEIF7_Pos)                 /*!< 0x02000000 */\n#define DMA_HISR_TEIF7           DMA_HISR_TEIF7_Msk                            /*!<  Stream 7 transfer error interrupt flag */\n#define DMA_HISR_DMEIF7_Pos      (24U)\n#define DMA_HISR_DMEIF7_Msk      (0x1UL << DMA_HISR_DMEIF7_Pos)                /*!< 0x01000000 */\n#define DMA_HISR_DMEIF7          DMA_HISR_DMEIF7_Msk                           /*!<  Stream 7 direct mode error interrupt flag */\n#define DMA_HISR_FEIF7_Pos       (22U)\n#define DMA_HISR_FEIF7_Msk       (0x1UL << DMA_HISR_FEIF7_Pos)                 /*!< 0x00400000 */\n#define DMA_HISR_FEIF7           DMA_HISR_FEIF7_Msk                            /*!<  Stream 7 FIFO error interrupt flag */\n#define DMA_HISR_TCIF6_Pos       (21U)\n#define DMA_HISR_TCIF6_Msk       (0x1UL << DMA_HISR_TCIF6_Pos)                 /*!< 0x00200000 */\n#define DMA_HISR_TCIF6           DMA_HISR_TCIF6_Msk                            /*!<  Stream 6 transfer complete interrupt flag */\n#define DMA_HISR_HTIF6_Pos       (20U)\n#define DMA_HISR_HTIF6_Msk       (0x1UL << DMA_HISR_HTIF6_Pos)                 /*!< 0x00100000 */\n#define DMA_HISR_HTIF6           DMA_HISR_HTIF6_Msk                            /*!<  Stream 6 half transfer interrupt flag */\n#define DMA_HISR_TEIF6_Pos       (19U)\n#define DMA_HISR_TEIF6_Msk       (0x1UL << DMA_HISR_TEIF6_Pos)                 /*!< 0x00080000 */\n#define DMA_HISR_TEIF6           DMA_HISR_TEIF6_Msk                            /*!<  Stream 6 transfer error interrupt flag */\n#define DMA_HISR_DMEIF6_Pos      (18U)\n#define DMA_HISR_DMEIF6_Msk      (0x1UL << DMA_HISR_DMEIF6_Pos)                /*!< 0x00040000 */\n#define DMA_HISR_DMEIF6          DMA_HISR_DMEIF6_Msk                           /*!<  Stream 6 direct mode error interrupt flag */\n#define DMA_HISR_FEIF6_Pos       (16U)\n#define DMA_HISR_FEIF6_Msk       (0x1UL << DMA_HISR_FEIF6_Pos)                 /*!< 0x00010000 */\n#define DMA_HISR_FEIF6           DMA_HISR_FEIF6_Msk                            /*!<  Stream 6 FIFO error interrupt flag */\n#define DMA_HISR_TCIF5_Pos       (11U)\n#define DMA_HISR_TCIF5_Msk       (0x1UL << DMA_HISR_TCIF5_Pos)                 /*!< 0x00000800 */\n#define DMA_HISR_TCIF5           DMA_HISR_TCIF5_Msk                            /*!<  Stream 5 transfer complete interrupt flag */\n#define DMA_HISR_HTIF5_Pos       (10U)\n#define DMA_HISR_HTIF5_Msk       (0x1UL << DMA_HISR_HTIF5_Pos)                 /*!< 0x00000400 */\n#define DMA_HISR_HTIF5           DMA_HISR_HTIF5_Msk                            /*!<  Stream 5 half transfer interrupt flag */\n#define DMA_HISR_TEIF5_Pos       (9U)\n#define DMA_HISR_TEIF5_Msk       (0x1UL << DMA_HISR_TEIF5_Pos)                 /*!< 0x00000200 */\n#define DMA_HISR_TEIF5           DMA_HISR_TEIF5_Msk                            /*!<  Stream 5 transfer error interrupt flag */\n#define DMA_HISR_DMEIF5_Pos      (8U)\n#define DMA_HISR_DMEIF5_Msk      (0x1UL << DMA_HISR_DMEIF5_Pos)                /*!< 0x00000100 */\n#define DMA_HISR_DMEIF5          DMA_HISR_DMEIF5_Msk                           /*!<  Stream 5 direct mode error interrupt flag */\n#define DMA_HISR_FEIF5_Pos       (6U)\n#define DMA_HISR_FEIF5_Msk       (0x1UL << DMA_HISR_FEIF5_Pos)                 /*!< 0x00000040 */\n#define DMA_HISR_FEIF5           DMA_HISR_FEIF5_Msk                            /*!<  Stream 5 FIFO error interrupt flag */\n#define DMA_HISR_TCIF4_Pos       (5U)\n#define DMA_HISR_TCIF4_Msk       (0x1UL << DMA_HISR_TCIF4_Pos)                 /*!< 0x00000020 */\n#define DMA_HISR_TCIF4           DMA_HISR_TCIF4_Msk                            /*!<  Stream 4 transfer complete interrupt flag */\n#define DMA_HISR_HTIF4_Pos       (4U)\n#define DMA_HISR_HTIF4_Msk       (0x1UL << DMA_HISR_HTIF4_Pos)                 /*!< 0x00000010 */\n#define DMA_HISR_HTIF4           DMA_HISR_HTIF4_Msk                            /*!<  Stream 4 half transfer interrupt flag */\n#define DMA_HISR_TEIF4_Pos       (3U)\n#define DMA_HISR_TEIF4_Msk       (0x1UL << DMA_HISR_TEIF4_Pos)                 /*!< 0x00000008 */\n#define DMA_HISR_TEIF4           DMA_HISR_TEIF4_Msk                            /*!<  Stream 4 transfer error interrupt flag */\n#define DMA_HISR_DMEIF4_Pos      (2U)\n#define DMA_HISR_DMEIF4_Msk      (0x1UL << DMA_HISR_DMEIF4_Pos)                /*!< 0x00000004 */\n#define DMA_HISR_DMEIF4          DMA_HISR_DMEIF4_Msk                           /*!<  Stream 4 direct mode error interrupt flag */\n#define DMA_HISR_FEIF4_Pos       (0U)\n#define DMA_HISR_FEIF4_Msk       (0x1UL << DMA_HISR_FEIF4_Pos)                 /*!< 0x00000001 */\n#define DMA_HISR_FEIF4           DMA_HISR_FEIF4_Msk                            /*!<  Stream 4 FIFO error interrupt flag */\n\n/********************  Bits definition for DMA_LIFCR register  ****************/\n#define DMA_LIFCR_CTCIF3_Pos     (27U)\n#define DMA_LIFCR_CTCIF3_Msk     (0x1UL << DMA_LIFCR_CTCIF3_Pos)               /*!< 0x08000000 */\n#define DMA_LIFCR_CTCIF3         DMA_LIFCR_CTCIF3_Msk                          /*!<  Stream 3 clear transfer complete interrupt flag */\n#define DMA_LIFCR_CHTIF3_Pos     (26U)\n#define DMA_LIFCR_CHTIF3_Msk     (0x1UL << DMA_LIFCR_CHTIF3_Pos)               /*!< 0x04000000 */\n#define DMA_LIFCR_CHTIF3         DMA_LIFCR_CHTIF3_Msk                          /*!<  Stream 3 clear half transfer interrupt flag */\n#define DMA_LIFCR_CTEIF3_Pos     (25U)\n#define DMA_LIFCR_CTEIF3_Msk     (0x1UL << DMA_LIFCR_CTEIF3_Pos)               /*!< 0x02000000 */\n#define DMA_LIFCR_CTEIF3         DMA_LIFCR_CTEIF3_Msk                          /*!<  Stream 3 clear transfer error interrupt flag */\n#define DMA_LIFCR_CDMEIF3_Pos    (24U)\n#define DMA_LIFCR_CDMEIF3_Msk    (0x1UL << DMA_LIFCR_CDMEIF3_Pos)              /*!< 0x01000000 */\n#define DMA_LIFCR_CDMEIF3        DMA_LIFCR_CDMEIF3_Msk                         /*!<  Stream 3 clear direct mode error interrupt flag */\n#define DMA_LIFCR_CFEIF3_Pos     (22U)\n#define DMA_LIFCR_CFEIF3_Msk     (0x1UL << DMA_LIFCR_CFEIF3_Pos)               /*!< 0x00400000 */\n#define DMA_LIFCR_CFEIF3         DMA_LIFCR_CFEIF3_Msk                          /*!<  Stream 3 clear FIFO error interrupt flag */\n#define DMA_LIFCR_CTCIF2_Pos     (21U)\n#define DMA_LIFCR_CTCIF2_Msk     (0x1UL << DMA_LIFCR_CTCIF2_Pos)               /*!< 0x00200000 */\n#define DMA_LIFCR_CTCIF2         DMA_LIFCR_CTCIF2_Msk                          /*!<  Stream 2 clear transfer complete interrupt flag */\n#define DMA_LIFCR_CHTIF2_Pos     (20U)\n#define DMA_LIFCR_CHTIF2_Msk     (0x1UL << DMA_LIFCR_CHTIF2_Pos)               /*!< 0x00100000 */\n#define DMA_LIFCR_CHTIF2         DMA_LIFCR_CHTIF2_Msk                          /*!<  Stream 2 clear half transfer interrupt flag */\n#define DMA_LIFCR_CTEIF2_Pos     (19U)\n#define DMA_LIFCR_CTEIF2_Msk     (0x1UL << DMA_LIFCR_CTEIF2_Pos)               /*!< 0x00080000 */\n#define DMA_LIFCR_CTEIF2         DMA_LIFCR_CTEIF2_Msk                          /*!<  Stream 2 clear transfer error interrupt flag */\n#define DMA_LIFCR_CDMEIF2_Pos    (18U)\n#define DMA_LIFCR_CDMEIF2_Msk    (0x1UL << DMA_LIFCR_CDMEIF2_Pos)              /*!< 0x00040000 */\n#define DMA_LIFCR_CDMEIF2        DMA_LIFCR_CDMEIF2_Msk                         /*!<  Stream 2 clear direct mode error interrupt flag */\n#define DMA_LIFCR_CFEIF2_Pos     (16U)\n#define DMA_LIFCR_CFEIF2_Msk     (0x1UL << DMA_LIFCR_CFEIF2_Pos)               /*!< 0x00010000 */\n#define DMA_LIFCR_CFEIF2         DMA_LIFCR_CFEIF2_Msk                          /*!<  Stream 2 clear FIFO error interrupt flag */\n#define DMA_LIFCR_CTCIF1_Pos     (11U)\n#define DMA_LIFCR_CTCIF1_Msk     (0x1UL << DMA_LIFCR_CTCIF1_Pos)               /*!< 0x00000800 */\n#define DMA_LIFCR_CTCIF1         DMA_LIFCR_CTCIF1_Msk                          /*!<  Stream 1 clear transfer complete interrupt flag */\n#define DMA_LIFCR_CHTIF1_Pos     (10U)\n#define DMA_LIFCR_CHTIF1_Msk     (0x1UL << DMA_LIFCR_CHTIF1_Pos)               /*!< 0x00000400 */\n#define DMA_LIFCR_CHTIF1         DMA_LIFCR_CHTIF1_Msk                          /*!<  Stream 1 clear half transfer interrupt flag */\n#define DMA_LIFCR_CTEIF1_Pos     (9U)\n#define DMA_LIFCR_CTEIF1_Msk     (0x1UL << DMA_LIFCR_CTEIF1_Pos)               /*!< 0x00000200 */\n#define DMA_LIFCR_CTEIF1         DMA_LIFCR_CTEIF1_Msk                          /*!<  Stream 1 clear transfer error interrupt flag */\n#define DMA_LIFCR_CDMEIF1_Pos    (8U)\n#define DMA_LIFCR_CDMEIF1_Msk    (0x1UL << DMA_LIFCR_CDMEIF1_Pos)              /*!< 0x00000100 */\n#define DMA_LIFCR_CDMEIF1        DMA_LIFCR_CDMEIF1_Msk                         /*!<  Stream 1 clear direct mode error interrupt flag */\n#define DMA_LIFCR_CFEIF1_Pos     (6U)\n#define DMA_LIFCR_CFEIF1_Msk     (0x1UL << DMA_LIFCR_CFEIF1_Pos)               /*!< 0x00000040 */\n#define DMA_LIFCR_CFEIF1         DMA_LIFCR_CFEIF1_Msk                          /*!<  Stream 1 clear FIFO error interrupt flag */\n#define DMA_LIFCR_CTCIF0_Pos     (5U)\n#define DMA_LIFCR_CTCIF0_Msk     (0x1UL << DMA_LIFCR_CTCIF0_Pos)               /*!< 0x00000020 */\n#define DMA_LIFCR_CTCIF0         DMA_LIFCR_CTCIF0_Msk                          /*!<  Stream 0 clear transfer complete interrupt flag */\n#define DMA_LIFCR_CHTIF0_Pos     (4U)\n#define DMA_LIFCR_CHTIF0_Msk     (0x1UL << DMA_LIFCR_CHTIF0_Pos)               /*!< 0x00000010 */\n#define DMA_LIFCR_CHTIF0         DMA_LIFCR_CHTIF0_Msk                          /*!<  Stream 0 clear half transfer interrupt flag */\n#define DMA_LIFCR_CTEIF0_Pos     (3U)\n#define DMA_LIFCR_CTEIF0_Msk     (0x1UL << DMA_LIFCR_CTEIF0_Pos)               /*!< 0x00000008 */\n#define DMA_LIFCR_CTEIF0         DMA_LIFCR_CTEIF0_Msk                          /*!<  Stream 0 clear transfer error interrupt flag */\n#define DMA_LIFCR_CDMEIF0_Pos    (2U)\n#define DMA_LIFCR_CDMEIF0_Msk    (0x1UL << DMA_LIFCR_CDMEIF0_Pos)              /*!< 0x00000004 */\n#define DMA_LIFCR_CDMEIF0        DMA_LIFCR_CDMEIF0_Msk                         /*!<  Stream 0 clear direct mode error interrupt flag */\n#define DMA_LIFCR_CFEIF0_Pos     (0U)\n#define DMA_LIFCR_CFEIF0_Msk     (0x1UL << DMA_LIFCR_CFEIF0_Pos)               /*!< 0x00000001 */\n#define DMA_LIFCR_CFEIF0         DMA_LIFCR_CFEIF0_Msk                          /*!<  Stream 0 clear FIFO error interrupt flag */\n\n/********************  Bits definition for DMA_HIFCR  register  ****************/\n#define DMA_HIFCR_CTCIF7_Pos     (27U)\n#define DMA_HIFCR_CTCIF7_Msk     (0x1UL << DMA_HIFCR_CTCIF7_Pos)               /*!< 0x08000000 */\n#define DMA_HIFCR_CTCIF7         DMA_HIFCR_CTCIF7_Msk                          /*!<  Stream 7 clear transfer complete interrupt flag */\n#define DMA_HIFCR_CHTIF7_Pos     (26U)\n#define DMA_HIFCR_CHTIF7_Msk     (0x1UL << DMA_HIFCR_CHTIF7_Pos)               /*!< 0x04000000 */\n#define DMA_HIFCR_CHTIF7         DMA_HIFCR_CHTIF7_Msk                          /*!<  Stream 7 clear half transfer interrupt flag */\n#define DMA_HIFCR_CTEIF7_Pos     (25U)\n#define DMA_HIFCR_CTEIF7_Msk     (0x1UL << DMA_HIFCR_CTEIF7_Pos)               /*!< 0x02000000 */\n#define DMA_HIFCR_CTEIF7         DMA_HIFCR_CTEIF7_Msk                          /*!<  Stream 7 clear transfer error interrupt flag */\n#define DMA_HIFCR_CDMEIF7_Pos    (24U)\n#define DMA_HIFCR_CDMEIF7_Msk    (0x1UL << DMA_HIFCR_CDMEIF7_Pos)              /*!< 0x01000000 */\n#define DMA_HIFCR_CDMEIF7        DMA_HIFCR_CDMEIF7_Msk                         /*!<  Stream 7 clear direct mode error interrupt flag */\n#define DMA_HIFCR_CFEIF7_Pos     (22U)\n#define DMA_HIFCR_CFEIF7_Msk     (0x1UL << DMA_HIFCR_CFEIF7_Pos)               /*!< 0x00400000 */\n#define DMA_HIFCR_CFEIF7         DMA_HIFCR_CFEIF7_Msk                          /*!<  Stream 7 clear FIFO error interrupt flag */\n#define DMA_HIFCR_CTCIF6_Pos     (21U)\n#define DMA_HIFCR_CTCIF6_Msk     (0x1UL << DMA_HIFCR_CTCIF6_Pos)               /*!< 0x00200000 */\n#define DMA_HIFCR_CTCIF6         DMA_HIFCR_CTCIF6_Msk                          /*!<  Stream 6 clear transfer complete interrupt flag */\n#define DMA_HIFCR_CHTIF6_Pos     (20U)\n#define DMA_HIFCR_CHTIF6_Msk     (0x1UL << DMA_HIFCR_CHTIF6_Pos)               /*!< 0x00100000 */\n#define DMA_HIFCR_CHTIF6         DMA_HIFCR_CHTIF6_Msk                          /*!<  Stream 6 clear half transfer interrupt flag */\n#define DMA_HIFCR_CTEIF6_Pos     (19U)\n#define DMA_HIFCR_CTEIF6_Msk     (0x1UL << DMA_HIFCR_CTEIF6_Pos)               /*!< 0x00080000 */\n#define DMA_HIFCR_CTEIF6         DMA_HIFCR_CTEIF6_Msk                          /*!<  Stream 6 clear transfer error interrupt flag */\n#define DMA_HIFCR_CDMEIF6_Pos    (18U)\n#define DMA_HIFCR_CDMEIF6_Msk    (0x1UL << DMA_HIFCR_CDMEIF6_Pos)              /*!< 0x00040000 */\n#define DMA_HIFCR_CDMEIF6        DMA_HIFCR_CDMEIF6_Msk                         /*!<  Stream 6 clear direct mode error interrupt flag */\n#define DMA_HIFCR_CFEIF6_Pos     (16U)\n#define DMA_HIFCR_CFEIF6_Msk     (0x1UL << DMA_HIFCR_CFEIF6_Pos)               /*!< 0x00010000 */\n#define DMA_HIFCR_CFEIF6         DMA_HIFCR_CFEIF6_Msk                          /*!<  Stream 6 clear FIFO error interrupt flag */\n#define DMA_HIFCR_CTCIF5_Pos     (11U)\n#define DMA_HIFCR_CTCIF5_Msk     (0x1UL << DMA_HIFCR_CTCIF5_Pos)               /*!< 0x00000800 */\n#define DMA_HIFCR_CTCIF5         DMA_HIFCR_CTCIF5_Msk                          /*!<  Stream 5 clear transfer complete interrupt flag */\n#define DMA_HIFCR_CHTIF5_Pos     (10U)\n#define DMA_HIFCR_CHTIF5_Msk     (0x1UL << DMA_HIFCR_CHTIF5_Pos)               /*!< 0x00000400 */\n#define DMA_HIFCR_CHTIF5         DMA_HIFCR_CHTIF5_Msk                          /*!<  Stream 5 clear half transfer interrupt flag */\n#define DMA_HIFCR_CTEIF5_Pos     (9U)\n#define DMA_HIFCR_CTEIF5_Msk     (0x1UL << DMA_HIFCR_CTEIF5_Pos)               /*!< 0x00000200 */\n#define DMA_HIFCR_CTEIF5         DMA_HIFCR_CTEIF5_Msk                          /*!<  Stream 5 clear transfer error interrupt flag */\n#define DMA_HIFCR_CDMEIF5_Pos    (8U)\n#define DMA_HIFCR_CDMEIF5_Msk    (0x1UL << DMA_HIFCR_CDMEIF5_Pos)              /*!< 0x00000100 */\n#define DMA_HIFCR_CDMEIF5        DMA_HIFCR_CDMEIF5_Msk                         /*!<  Stream 5 clear direct mode error interrupt flag */\n#define DMA_HIFCR_CFEIF5_Pos     (6U)\n#define DMA_HIFCR_CFEIF5_Msk     (0x1UL << DMA_HIFCR_CFEIF5_Pos)               /*!< 0x00000040 */\n#define DMA_HIFCR_CFEIF5         DMA_HIFCR_CFEIF5_Msk                          /*!<  Stream 5 clear FIFO error interrupt flag */\n#define DMA_HIFCR_CTCIF4_Pos     (5U)\n#define DMA_HIFCR_CTCIF4_Msk     (0x1UL << DMA_HIFCR_CTCIF4_Pos)               /*!< 0x00000020 */\n#define DMA_HIFCR_CTCIF4         DMA_HIFCR_CTCIF4_Msk                          /*!<  Stream 4 clear transfer complete interrupt flag */\n#define DMA_HIFCR_CHTIF4_Pos     (4U)\n#define DMA_HIFCR_CHTIF4_Msk     (0x1UL << DMA_HIFCR_CHTIF4_Pos)               /*!< 0x00000010 */\n#define DMA_HIFCR_CHTIF4         DMA_HIFCR_CHTIF4_Msk                          /*!<  Stream 4 clear half transfer interrupt flag */\n#define DMA_HIFCR_CTEIF4_Pos     (3U)\n#define DMA_HIFCR_CTEIF4_Msk     (0x1UL << DMA_HIFCR_CTEIF4_Pos)               /*!< 0x00000008 */\n#define DMA_HIFCR_CTEIF4         DMA_HIFCR_CTEIF4_Msk                          /*!<  Stream 4 clear transfer error interrupt flag */\n#define DMA_HIFCR_CDMEIF4_Pos    (2U)\n#define DMA_HIFCR_CDMEIF4_Msk    (0x1UL << DMA_HIFCR_CDMEIF4_Pos)              /*!< 0x00000004 */\n#define DMA_HIFCR_CDMEIF4        DMA_HIFCR_CDMEIF4_Msk                         /*!<  Stream 4 clear direct mode error interrupt flag */\n#define DMA_HIFCR_CFEIF4_Pos     (0U)\n#define DMA_HIFCR_CFEIF4_Msk     (0x1UL << DMA_HIFCR_CFEIF4_Pos)               /*!< 0x00000001 */\n#define DMA_HIFCR_CFEIF4         DMA_HIFCR_CFEIF4_Msk                          /*!<  Stream 4 clear FIFO error interrupt flag */\n\n/******************  Bit definition for DMA_SxPAR register  ********************/\n#define DMA_SxPAR_PA_Pos         (0U)\n#define DMA_SxPAR_PA_Msk         (0xFFFFFFFFUL << DMA_SxPAR_PA_Pos)            /*!< 0xFFFFFFFF */\n#define DMA_SxPAR_PA             DMA_SxPAR_PA_Msk                              /*!< Peripheral Address */\n\n/******************  Bit definition for DMA_SxM0AR register  ********************/\n#define DMA_SxM0AR_M0A_Pos       (0U)\n#define DMA_SxM0AR_M0A_Msk       (0xFFFFFFFFUL << DMA_SxM0AR_M0A_Pos)          /*!< 0xFFFFFFFF */\n#define DMA_SxM0AR_M0A           DMA_SxM0AR_M0A_Msk                            /*!< Memory 0 Address */\n\n/******************  Bit definition for DMA_SxM1AR register  ********************/\n#define DMA_SxM1AR_M1A_Pos       (0U)\n#define DMA_SxM1AR_M1A_Msk       (0xFFFFFFFFUL << DMA_SxM1AR_M1A_Pos)          /*!< 0xFFFFFFFF */\n#define DMA_SxM1AR_M1A           DMA_SxM1AR_M1A_Msk                            /*!< Memory 1 Address */\n\n/******************************************************************************/\n/*                                                                            */\n/*                             DMAMUX Controller                              */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bits definition for DMAMUX_CxCR register  **************/\n#define DMAMUX_CxCR_DMAREQ_ID_Pos      (0U)\n#define DMAMUX_CxCR_DMAREQ_ID_Msk      (0xFFUL << DMAMUX_CxCR_DMAREQ_ID_Pos)   /*!< 0x000000FF */\n#define DMAMUX_CxCR_DMAREQ_ID          DMAMUX_CxCR_DMAREQ_ID_Msk               /*!<  DMA request identification */\n#define DMAMUX_CxCR_DMAREQ_ID_0        (0x01UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000001 */\n#define DMAMUX_CxCR_DMAREQ_ID_1        (0x02UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000002 */\n#define DMAMUX_CxCR_DMAREQ_ID_2        (0x04UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000004 */\n#define DMAMUX_CxCR_DMAREQ_ID_3        (0x08UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000008 */\n#define DMAMUX_CxCR_DMAREQ_ID_4        (0x10UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000010 */\n#define DMAMUX_CxCR_DMAREQ_ID_5        (0x20UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000020 */\n#define DMAMUX_CxCR_DMAREQ_ID_6        (0x40UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000040 */\n#define DMAMUX_CxCR_DMAREQ_ID_7        (0x80UL << DMAMUX_CxCR_DMAREQ_ID_Pos)    /*!< 0x00000080 */\n#define DMAMUX_CxCR_SOIE_Pos           (8U)\n#define DMAMUX_CxCR_SOIE_Msk           (0x1UL << DMAMUX_CxCR_SOIE_Pos)         /*!< 0x00000100 */\n#define DMAMUX_CxCR_SOIE               DMAMUX_CxCR_SOIE_Msk                    /*!<  Synchronization overrun interrupt enable */\n#define DMAMUX_CxCR_EGE_Pos            (9U)\n#define DMAMUX_CxCR_EGE_Msk            (0x1UL << DMAMUX_CxCR_EGE_Pos)          /*!< 0x00000200 */\n#define DMAMUX_CxCR_EGE                DMAMUX_CxCR_EGE_Msk                     /*!<  Event generation enable */\n#define DMAMUX_CxCR_SE_Pos             (16U)\n#define DMAMUX_CxCR_SE_Msk             (0x1UL << DMAMUX_CxCR_SE_Pos)           /*!< 0x00010000 */\n#define DMAMUX_CxCR_SE                 DMAMUX_CxCR_SE_Msk                      /*!<  Synchronization enable */\n#define DMAMUX_CxCR_SPOL_Pos           (17U)\n#define DMAMUX_CxCR_SPOL_Msk           (0x3UL << DMAMUX_CxCR_SPOL_Pos)         /*!< 0x00060000 */\n#define DMAMUX_CxCR_SPOL               DMAMUX_CxCR_SPOL_Msk                    /*!<  Synchronization polarity */\n#define DMAMUX_CxCR_SPOL_0             (0x1UL << DMAMUX_CxCR_SPOL_Pos)          /*!< 0x00020000 */\n#define DMAMUX_CxCR_SPOL_1             (0x2UL << DMAMUX_CxCR_SPOL_Pos)          /*!< 0x00040000 */\n#define DMAMUX_CxCR_NBREQ_Pos          (19U)\n#define DMAMUX_CxCR_NBREQ_Msk          (0x1FUL << DMAMUX_CxCR_NBREQ_Pos)       /*!< 0x00F80000 */\n#define DMAMUX_CxCR_NBREQ              DMAMUX_CxCR_NBREQ_Msk                   /*!<  Number of DMA requests minus 1 to forward */\n#define DMAMUX_CxCR_NBREQ_0            (0x01UL << DMAMUX_CxCR_NBREQ_Pos)        /*!< 0x00080000 */\n#define DMAMUX_CxCR_NBREQ_1            (0x02UL << DMAMUX_CxCR_NBREQ_Pos)        /*!< 0x00100000 */\n#define DMAMUX_CxCR_NBREQ_2            (0x04UL << DMAMUX_CxCR_NBREQ_Pos)        /*!< 0x00200000 */\n#define DMAMUX_CxCR_NBREQ_3            (0x08UL << DMAMUX_CxCR_NBREQ_Pos)        /*!< 0x00400000 */\n#define DMAMUX_CxCR_NBREQ_4            (0x10UL << DMAMUX_CxCR_NBREQ_Pos)        /*!< 0x00800000 */\n#define DMAMUX_CxCR_SYNC_ID_Pos        (24U)\n#define DMAMUX_CxCR_SYNC_ID_Msk        (0x1FUL << DMAMUX_CxCR_SYNC_ID_Pos)     /*!< 0x1F000000 */\n#define DMAMUX_CxCR_SYNC_ID            DMAMUX_CxCR_SYNC_ID_Msk                 /*!<  Synchronization identification */\n#define DMAMUX_CxCR_SYNC_ID_0          (0x01UL << DMAMUX_CxCR_SYNC_ID_Pos)      /*!< 0x01000000 */\n#define DMAMUX_CxCR_SYNC_ID_1          (0x02UL << DMAMUX_CxCR_SYNC_ID_Pos)      /*!< 0x02000000 */\n#define DMAMUX_CxCR_SYNC_ID_2          (0x04UL << DMAMUX_CxCR_SYNC_ID_Pos)      /*!< 0x04000000 */\n#define DMAMUX_CxCR_SYNC_ID_3          (0x08UL << DMAMUX_CxCR_SYNC_ID_Pos)      /*!< 0x08000000 */\n#define DMAMUX_CxCR_SYNC_ID_4          (0x10UL << DMAMUX_CxCR_SYNC_ID_Pos)      /*!< 0x10000000 */\n\n/********************  Bits definition for DMAMUX_CSR register  **************/\n#define DMAMUX_CSR_SOF0_Pos            (0U)\n#define DMAMUX_CSR_SOF0_Msk            (0x1UL << DMAMUX_CSR_SOF0_Pos)          /*!< 0x00000001 */\n#define DMAMUX_CSR_SOF0                DMAMUX_CSR_SOF0_Msk                     /*!< Channel 0 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF1_Pos            (1U)\n#define DMAMUX_CSR_SOF1_Msk            (0x1UL << DMAMUX_CSR_SOF1_Pos)          /*!< 0x00000002 */\n#define DMAMUX_CSR_SOF1                DMAMUX_CSR_SOF1_Msk                     /*!< Channel 1 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF2_Pos            (2U)\n#define DMAMUX_CSR_SOF2_Msk            (0x1UL << DMAMUX_CSR_SOF2_Pos)          /*!< 0x00000004 */\n#define DMAMUX_CSR_SOF2                DMAMUX_CSR_SOF2_Msk                     /*!< Channel 2 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF3_Pos            (3U)\n#define DMAMUX_CSR_SOF3_Msk            (0x1UL << DMAMUX_CSR_SOF3_Pos)          /*!< 0x00000008 */\n#define DMAMUX_CSR_SOF3                DMAMUX_CSR_SOF3_Msk                     /*!< Channel 3 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF4_Pos            (4U)\n#define DMAMUX_CSR_SOF4_Msk            (0x1UL << DMAMUX_CSR_SOF4_Pos)          /*!< 0x00000010 */\n#define DMAMUX_CSR_SOF4                DMAMUX_CSR_SOF4_Msk                     /*!< Channel 4 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF5_Pos            (5U)\n#define DMAMUX_CSR_SOF5_Msk            (0x1UL << DMAMUX_CSR_SOF5_Pos)          /*!< 0x00000020 */\n#define DMAMUX_CSR_SOF5                DMAMUX_CSR_SOF5_Msk                     /*!< Channel 5 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF6_Pos            (6U)\n#define DMAMUX_CSR_SOF6_Msk            (0x1UL << DMAMUX_CSR_SOF6_Pos)          /*!< 0x00000040 */\n#define DMAMUX_CSR_SOF6                DMAMUX_CSR_SOF6_Msk                     /*!< Channel 6 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF7_Pos            (7U)\n#define DMAMUX_CSR_SOF7_Msk            (0x1UL << DMAMUX_CSR_SOF7_Pos)          /*!< 0x00000080 */\n#define DMAMUX_CSR_SOF7                DMAMUX_CSR_SOF7_Msk                     /*!< Channel 7 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF8_Pos            (8U)\n#define DMAMUX_CSR_SOF8_Msk            (0x1UL << DMAMUX_CSR_SOF8_Pos)          /*!< 0x00000100 */\n#define DMAMUX_CSR_SOF8                DMAMUX_CSR_SOF8_Msk                     /*!< Channel 8 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF9_Pos            (9U)\n#define DMAMUX_CSR_SOF9_Msk            (0x1UL << DMAMUX_CSR_SOF9_Pos)          /*!< 0x00000200 */\n#define DMAMUX_CSR_SOF9                DMAMUX_CSR_SOF9_Msk                     /*!< Channel 9 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF10_Pos           (10U)\n#define DMAMUX_CSR_SOF10_Msk           (0x1UL << DMAMUX_CSR_SOF10_Pos)         /*!< 0x00000400 */\n#define DMAMUX_CSR_SOF10               DMAMUX_CSR_SOF10_Msk                    /*!< Channel 10 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF11_Pos           (11U)\n#define DMAMUX_CSR_SOF11_Msk           (0x1UL << DMAMUX_CSR_SOF11_Pos)         /*!< 0x00000800 */\n#define DMAMUX_CSR_SOF11               DMAMUX_CSR_SOF11_Msk                    /*!< Channel 11 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF12_Pos           (12U)\n#define DMAMUX_CSR_SOF12_Msk           (0x1UL << DMAMUX_CSR_SOF12_Pos)         /*!< 0x00001000 */\n#define DMAMUX_CSR_SOF12               DMAMUX_CSR_SOF12_Msk                    /*!< Channel 12 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF13_Pos           (13U)\n#define DMAMUX_CSR_SOF13_Msk           (0x1UL << DMAMUX_CSR_SOF13_Pos)         /*!< 0x00002000 */\n#define DMAMUX_CSR_SOF13               DMAMUX_CSR_SOF13_Msk                    /*!< Channel 13 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF14_Pos           (14U)\n#define DMAMUX_CSR_SOF14_Msk           (0x1UL << DMAMUX_CSR_SOF14_Pos)         /*!< 0x00004000 */\n#define DMAMUX_CSR_SOF14               DMAMUX_CSR_SOF14_Msk                    /*!< Channel 14 Synchronization overrun event flag */\n#define DMAMUX_CSR_SOF15_Pos           (15U)\n#define DMAMUX_CSR_SOF15_Msk           (0x1UL << DMAMUX_CSR_SOF15_Pos)         /*!< 0x00008000 */\n#define DMAMUX_CSR_SOF15               DMAMUX_CSR_SOF15_Msk                    /*!< Channel 15 Synchronization overrun event flag */\n\n/********************  Bits definition for DMAMUX_CFR register  **************/\n#define DMAMUX_CFR_CSOF0_Pos           (0U)\n#define DMAMUX_CFR_CSOF0_Msk           (0x1UL << DMAMUX_CFR_CSOF0_Pos)         /*!< 0x00000001 */\n#define DMAMUX_CFR_CSOF0               DMAMUX_CFR_CSOF0_Msk                    /*!< Channel 0 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF1_Pos           (1U)\n#define DMAMUX_CFR_CSOF1_Msk           (0x1UL << DMAMUX_CFR_CSOF1_Pos)         /*!< 0x00000002 */\n#define DMAMUX_CFR_CSOF1               DMAMUX_CFR_CSOF1_Msk                    /*!< Channel 1 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF2_Pos           (2U)\n#define DMAMUX_CFR_CSOF2_Msk           (0x1UL << DMAMUX_CFR_CSOF2_Pos)         /*!< 0x00000004 */\n#define DMAMUX_CFR_CSOF2               DMAMUX_CFR_CSOF2_Msk                    /*!< Channel 2 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF3_Pos           (3U)\n#define DMAMUX_CFR_CSOF3_Msk           (0x1UL << DMAMUX_CFR_CSOF3_Pos)         /*!< 0x00000008 */\n#define DMAMUX_CFR_CSOF3               DMAMUX_CFR_CSOF3_Msk                    /*!< Channel 3 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF4_Pos           (4U)\n#define DMAMUX_CFR_CSOF4_Msk           (0x1UL << DMAMUX_CFR_CSOF4_Pos)         /*!< 0x00000010 */\n#define DMAMUX_CFR_CSOF4               DMAMUX_CFR_CSOF4_Msk                    /*!< Channel 4 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF5_Pos           (5U)\n#define DMAMUX_CFR_CSOF5_Msk           (0x1UL << DMAMUX_CFR_CSOF5_Pos)         /*!< 0x00000020 */\n#define DMAMUX_CFR_CSOF5               DMAMUX_CFR_CSOF5_Msk                    /*!< Channel 5 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF6_Pos           (6U)\n#define DMAMUX_CFR_CSOF6_Msk           (0x1UL << DMAMUX_CFR_CSOF6_Pos)         /*!< 0x00000040 */\n#define DMAMUX_CFR_CSOF6               DMAMUX_CFR_CSOF6_Msk                    /*!< Channel 6 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF7_Pos           (7U)\n#define DMAMUX_CFR_CSOF7_Msk           (0x1UL << DMAMUX_CFR_CSOF7_Pos)         /*!< 0x00000080 */\n#define DMAMUX_CFR_CSOF7               DMAMUX_CFR_CSOF7_Msk                    /*!< Channel 7 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF8_Pos           (8U)\n#define DMAMUX_CFR_CSOF8_Msk           (0x1UL << DMAMUX_CFR_CSOF8_Pos)         /*!< 0x00000100 */\n#define DMAMUX_CFR_CSOF8               DMAMUX_CFR_CSOF8_Msk                    /*!< Channel 8 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF9_Pos           (9U)\n#define DMAMUX_CFR_CSOF9_Msk           (0x1UL << DMAMUX_CFR_CSOF9_Pos)         /*!< 0x00000200 */\n#define DMAMUX_CFR_CSOF9               DMAMUX_CFR_CSOF9_Msk                    /*!< Channel 9 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF10_Pos          (10U)\n#define DMAMUX_CFR_CSOF10_Msk          (0x1UL << DMAMUX_CFR_CSOF10_Pos)        /*!< 0x00000400 */\n#define DMAMUX_CFR_CSOF10              DMAMUX_CFR_CSOF10_Msk                   /*!< Channel 10 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF11_Pos          (11U)\n#define DMAMUX_CFR_CSOF11_Msk          (0x1UL << DMAMUX_CFR_CSOF11_Pos)        /*!< 0x00000800 */\n#define DMAMUX_CFR_CSOF11              DMAMUX_CFR_CSOF11_Msk                   /*!< Channel 11 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF12_Pos          (12U)\n#define DMAMUX_CFR_CSOF12_Msk          (0x1UL << DMAMUX_CFR_CSOF12_Pos)        /*!< 0x00001000 */\n#define DMAMUX_CFR_CSOF12              DMAMUX_CFR_CSOF12_Msk                   /*!< Channel 12 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF13_Pos          (13U)\n#define DMAMUX_CFR_CSOF13_Msk          (0x1UL << DMAMUX_CFR_CSOF13_Pos)        /*!< 0x00002000 */\n#define DMAMUX_CFR_CSOF13              DMAMUX_CFR_CSOF13_Msk                   /*!< Channel 13 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF14_Pos          (14U)\n#define DMAMUX_CFR_CSOF14_Msk          (0x1UL << DMAMUX_CFR_CSOF14_Pos)        /*!< 0x00004000 */\n#define DMAMUX_CFR_CSOF14              DMAMUX_CFR_CSOF14_Msk                   /*!< Channel 14 Clear synchronization overrun event flag */\n#define DMAMUX_CFR_CSOF15_Pos          (15U)\n#define DMAMUX_CFR_CSOF15_Msk          (0x1UL << DMAMUX_CFR_CSOF15_Pos)        /*!< 0x00008000 */\n#define DMAMUX_CFR_CSOF15              DMAMUX_CFR_CSOF15_Msk                   /*!< Channel 15 Clear synchronization overrun event flag */\n\n/********************  Bits definition for DMAMUX_RGxCR register  ************/\n#define DMAMUX_RGxCR_SIG_ID_Pos        (0U)\n#define DMAMUX_RGxCR_SIG_ID_Msk        (0x1FUL << DMAMUX_RGxCR_SIG_ID_Pos)     /*!< 0x0000001F */\n#define DMAMUX_RGxCR_SIG_ID            DMAMUX_RGxCR_SIG_ID_Msk                 /*!< Signal identification */\n#define DMAMUX_RGxCR_SIG_ID_0          (0x01UL << DMAMUX_RGxCR_SIG_ID_Pos)      /*!< 0x00000001 */\n#define DMAMUX_RGxCR_SIG_ID_1          (0x02UL << DMAMUX_RGxCR_SIG_ID_Pos)      /*!< 0x00000002 */\n#define DMAMUX_RGxCR_SIG_ID_2          (0x04UL << DMAMUX_RGxCR_SIG_ID_Pos)      /*!< 0x00000004 */\n#define DMAMUX_RGxCR_SIG_ID_3          (0x08UL << DMAMUX_RGxCR_SIG_ID_Pos)      /*!< 0x00000008 */\n#define DMAMUX_RGxCR_SIG_ID_4          (0x10UL << DMAMUX_RGxCR_SIG_ID_Pos)      /*!< 0x00000010 */\n#define DMAMUX_RGxCR_OIE_Pos           (8U)\n#define DMAMUX_RGxCR_OIE_Msk           (0x1UL << DMAMUX_RGxCR_OIE_Pos)         /*!< 0x00000100 */\n#define DMAMUX_RGxCR_OIE               DMAMUX_RGxCR_OIE_Msk                    /*!< Trigger overrun interrupt enable */\n#define DMAMUX_RGxCR_GE_Pos            (16U)\n#define DMAMUX_RGxCR_GE_Msk            (0x1UL << DMAMUX_RGxCR_GE_Pos)          /*!< 0x00010000 */\n#define DMAMUX_RGxCR_GE                DMAMUX_RGxCR_GE_Msk                     /*!< DMA request generator enable */\n#define DMAMUX_RGxCR_GPOL_Pos          (17U)\n#define DMAMUX_RGxCR_GPOL_Msk          (0x3UL << DMAMUX_RGxCR_GPOL_Pos)        /*!< 0x00060000 */\n#define DMAMUX_RGxCR_GPOL              DMAMUX_RGxCR_GPOL_Msk                   /*!< DMA request generator trigger polarity */\n#define DMAMUX_RGxCR_GPOL_0            (0x1UL << DMAMUX_RGxCR_GPOL_Pos)         /*!< 0x00020000 */\n#define DMAMUX_RGxCR_GPOL_1            (0x2UL << DMAMUX_RGxCR_GPOL_Pos)         /*!< 0x00040000 */\n#define DMAMUX_RGxCR_GNBREQ_Pos        (19U)\n#define DMAMUX_RGxCR_GNBREQ_Msk        (0x1FUL << DMAMUX_RGxCR_GNBREQ_Pos)     /*!< 0x00F80000 */\n#define DMAMUX_RGxCR_GNBREQ            DMAMUX_RGxCR_GNBREQ_Msk                 /*!< Number of DMA requests to be generated */\n#define DMAMUX_RGxCR_GNBREQ_0          (0x01UL << DMAMUX_RGxCR_GNBREQ_Pos)      /*!< 0x00080000 */\n#define DMAMUX_RGxCR_GNBREQ_1          (0x02UL << DMAMUX_RGxCR_GNBREQ_Pos)      /*!< 0x00100000 */\n#define DMAMUX_RGxCR_GNBREQ_2          (0x04UL << DMAMUX_RGxCR_GNBREQ_Pos)      /*!< 0x00200000 */\n#define DMAMUX_RGxCR_GNBREQ_3          (0x08UL << DMAMUX_RGxCR_GNBREQ_Pos)      /*!< 0x00400000 */\n#define DMAMUX_RGxCR_GNBREQ_4          (0x10UL << DMAMUX_RGxCR_GNBREQ_Pos)      /*!< 0x00800000 */\n\n/********************  Bits definition for DMAMUX_RGSR register  **************/\n#define DMAMUX_RGSR_OF0_Pos            (0U)\n#define DMAMUX_RGSR_OF0_Msk            (0x1UL << DMAMUX_RGSR_OF0_Pos)          /*!< 0x00000001 */\n#define DMAMUX_RGSR_OF0                DMAMUX_RGSR_OF0_Msk                     /*!< Request generator channel 0 Trigger overrun event flag */\n#define DMAMUX_RGSR_OF1_Pos            (1U)\n#define DMAMUX_RGSR_OF1_Msk            (0x1UL << DMAMUX_RGSR_OF1_Pos)          /*!< 0x00000002 */\n#define DMAMUX_RGSR_OF1                DMAMUX_RGSR_OF1_Msk                     /*!< Request generator channel 1 Trigger overrun event flag */\n#define DMAMUX_RGSR_OF2_Pos            (2U)\n#define DMAMUX_RGSR_OF2_Msk            (0x1UL << DMAMUX_RGSR_OF2_Pos)          /*!< 0x00000004 */\n#define DMAMUX_RGSR_OF2                DMAMUX_RGSR_OF2_Msk                     /*!< Request generator channel 2 Trigger overrun event flag */\n#define DMAMUX_RGSR_OF3_Pos            (3U)\n#define DMAMUX_RGSR_OF3_Msk            (0x1UL << DMAMUX_RGSR_OF3_Pos)          /*!< 0x00000008 */\n#define DMAMUX_RGSR_OF3                DMAMUX_RGSR_OF3_Msk                     /*!< Request generator channel 3 Trigger overrun event flag */\n#define DMAMUX_RGSR_OF4_Pos            (4U)\n#define DMAMUX_RGSR_OF4_Msk            (0x1UL << DMAMUX_RGSR_OF4_Pos)          /*!< 0x00000010 */\n#define DMAMUX_RGSR_OF4                DMAMUX_RGSR_OF4_Msk                     /*!< Request generator channel 4 Trigger overrun event flag */\n#define DMAMUX_RGSR_OF5_Pos            (5U)\n#define DMAMUX_RGSR_OF5_Msk            (0x1UL << DMAMUX_RGSR_OF5_Pos)          /*!< 0x00000020 */\n#define DMAMUX_RGSR_OF5                DMAMUX_RGSR_OF5_Msk                     /*!< Request generator channel 5 Trigger overrun event flag */\n#define DMAMUX_RGSR_OF6_Pos            (6U)\n#define DMAMUX_RGSR_OF6_Msk            (0x1UL << DMAMUX_RGSR_OF6_Pos)          /*!< 0x00000040 */\n#define DMAMUX_RGSR_OF6                DMAMUX_RGSR_OF6_Msk                     /*!< Request generator channel 6 Trigger overrun event flag */\n#define DMAMUX_RGSR_OF7_Pos            (7U)\n#define DMAMUX_RGSR_OF7_Msk            (0x1UL << DMAMUX_RGSR_OF7_Pos)          /*!< 0x00000080 */\n#define DMAMUX_RGSR_OF7                DMAMUX_RGSR_OF7_Msk                     /*!< Request generator channel 7 Trigger overrun event flag */\n\n/********************  Bits definition for DMAMUX_RGCFR register  **************/\n#define DMAMUX_RGCFR_COF0_Pos          (0U)\n#define DMAMUX_RGCFR_COF0_Msk          (0x1UL << DMAMUX_RGCFR_COF0_Pos)        /*!< 0x00000001 */\n#define DMAMUX_RGCFR_COF0              DMAMUX_RGCFR_COF0_Msk                   /*!< Request generator channel 0 Clear trigger overrun event flag */\n#define DMAMUX_RGCFR_COF1_Pos          (1U)\n#define DMAMUX_RGCFR_COF1_Msk          (0x1UL << DMAMUX_RGCFR_COF1_Pos)        /*!< 0x00000002 */\n#define DMAMUX_RGCFR_COF1              DMAMUX_RGCFR_COF1_Msk                   /*!< Request generator channel 1 Clear trigger overrun event flag */\n#define DMAMUX_RGCFR_COF2_Pos          (2U)\n#define DMAMUX_RGCFR_COF2_Msk          (0x1UL << DMAMUX_RGCFR_COF2_Pos)        /*!< 0x00000004 */\n#define DMAMUX_RGCFR_COF2              DMAMUX_RGCFR_COF2_Msk                   /*!< Request generator channel 2 Clear trigger overrun event flag */\n#define DMAMUX_RGCFR_COF3_Pos          (3U)\n#define DMAMUX_RGCFR_COF3_Msk          (0x1UL << DMAMUX_RGCFR_COF3_Pos)        /*!< 0x00000008 */\n#define DMAMUX_RGCFR_COF3              DMAMUX_RGCFR_COF3_Msk                   /*!< Request generator channel 3 Clear trigger overrun event flag */\n#define DMAMUX_RGCFR_COF4_Pos          (4U)\n#define DMAMUX_RGCFR_COF4_Msk          (0x1UL << DMAMUX_RGCFR_COF4_Pos)        /*!< 0x00000010 */\n#define DMAMUX_RGCFR_COF4              DMAMUX_RGCFR_COF4_Msk                   /*!< Request generator channel 4 Clear trigger overrun event flag */\n#define DMAMUX_RGCFR_COF5_Pos          (5U)\n#define DMAMUX_RGCFR_COF5_Msk          (0x1UL << DMAMUX_RGCFR_COF5_Pos)        /*!< 0x00000020 */\n#define DMAMUX_RGCFR_COF5              DMAMUX_RGCFR_COF5_Msk                   /*!< Request generator channel 5 Clear trigger overrun event flag */\n#define DMAMUX_RGCFR_COF6_Pos          (6U)\n#define DMAMUX_RGCFR_COF6_Msk          (0x1UL << DMAMUX_RGCFR_COF6_Pos)        /*!< 0x00000040 */\n#define DMAMUX_RGCFR_COF6              DMAMUX_RGCFR_COF6_Msk                   /*!< Request generator channel 6 Clear trigger overrun event flag */\n#define DMAMUX_RGCFR_COF7_Pos          (7U)\n#define DMAMUX_RGCFR_COF7_Msk          (0x1UL << DMAMUX_RGCFR_COF7_Pos)        /*!< 0x00000080 */\n#define DMAMUX_RGCFR_COF7              DMAMUX_RGCFR_COF7_Msk                   /*!< Request generator channel 7 Clear trigger overrun event flag */\n\n/******************************************************************************/\n/*                                                                            */\n/*                         AHB Master DMA2D Controller (DMA2D)                */\n/*                                                                            */\n/******************************************************************************/\n\n/********************  Bit definition for DMA2D_CR register  ******************/\n\n#define DMA2D_CR_START_Pos         (0U)\n#define DMA2D_CR_START_Msk         (0x1UL << DMA2D_CR_START_Pos)               /*!< 0x00000001 */\n#define DMA2D_CR_START             DMA2D_CR_START_Msk                          /*!< Start transfer                          */\n#define DMA2D_CR_SUSP_Pos          (1U)\n#define DMA2D_CR_SUSP_Msk          (0x1UL << DMA2D_CR_SUSP_Pos)                /*!< 0x00000002 */\n#define DMA2D_CR_SUSP              DMA2D_CR_SUSP_Msk                           /*!< Suspend transfer                        */\n#define DMA2D_CR_ABORT_Pos         (2U)\n#define DMA2D_CR_ABORT_Msk         (0x1UL << DMA2D_CR_ABORT_Pos)               /*!< 0x00000004 */\n#define DMA2D_CR_ABORT             DMA2D_CR_ABORT_Msk                          /*!< Abort transfer                          */\n#define DMA2D_CR_LOM_Pos           (6U)\n#define DMA2D_CR_LOM_Msk           (0x1UL << DMA2D_CR_LOM_Pos)                 /*!< 0x00000040 */\n#define DMA2D_CR_LOM               DMA2D_CR_LOM_Msk                            /*!< Line Offset Mode                         */\n#define DMA2D_CR_TEIE_Pos          (8U)\n#define DMA2D_CR_TEIE_Msk          (0x1UL << DMA2D_CR_TEIE_Pos)                /*!< 0x00000100 */\n#define DMA2D_CR_TEIE              DMA2D_CR_TEIE_Msk                           /*!< Transfer Error Interrupt Enable         */\n#define DMA2D_CR_TCIE_Pos          (9U)\n#define DMA2D_CR_TCIE_Msk          (0x1UL << DMA2D_CR_TCIE_Pos)                /*!< 0x00000200 */\n#define DMA2D_CR_TCIE              DMA2D_CR_TCIE_Msk                           /*!< Transfer Complete Interrupt Enable      */\n#define DMA2D_CR_TWIE_Pos          (10U)\n#define DMA2D_CR_TWIE_Msk          (0x1UL << DMA2D_CR_TWIE_Pos)                /*!< 0x00000400 */\n#define DMA2D_CR_TWIE              DMA2D_CR_TWIE_Msk                           /*!< Transfer Watermark Interrupt Enable     */\n#define DMA2D_CR_CAEIE_Pos         (11U)\n#define DMA2D_CR_CAEIE_Msk         (0x1UL << DMA2D_CR_CAEIE_Pos)               /*!< 0x00000800 */\n#define DMA2D_CR_CAEIE             DMA2D_CR_CAEIE_Msk                          /*!< CLUT Access Error Interrupt Enable      */\n#define DMA2D_CR_CTCIE_Pos         (12U)\n#define DMA2D_CR_CTCIE_Msk         (0x1UL << DMA2D_CR_CTCIE_Pos)               /*!< 0x00001000 */\n#define DMA2D_CR_CTCIE             DMA2D_CR_CTCIE_Msk                          /*!< CLUT Transfer Complete Interrupt Enable */\n#define DMA2D_CR_CEIE_Pos          (13U)\n#define DMA2D_CR_CEIE_Msk          (0x1UL << DMA2D_CR_CEIE_Pos)                /*!< 0x00002000 */\n#define DMA2D_CR_CEIE              DMA2D_CR_CEIE_Msk                           /*!< Configuration Error Interrupt Enable    */\n#define DMA2D_CR_MODE_Pos          (16U)\n#define DMA2D_CR_MODE_Msk          (0x7UL << DMA2D_CR_MODE_Pos)                /*!< 0x00070000 */\n#define DMA2D_CR_MODE              DMA2D_CR_MODE_Msk                           /*!< DMA2D Mode[2:0]                         */\n#define DMA2D_CR_MODE_0            (0x1UL << DMA2D_CR_MODE_Pos)                 /*!< 0x00010000 */\n#define DMA2D_CR_MODE_1            (0x2UL << DMA2D_CR_MODE_Pos)                 /*!< 0x00020000 */\n#define DMA2D_CR_MODE_2            (0x4UL << DMA2D_CR_MODE_Pos)                 /*!< 0x00040000 */\n\n/********************  Bit definition for DMA2D_ISR register  *****************/\n\n#define DMA2D_ISR_TEIF_Pos         (0U)\n#define DMA2D_ISR_TEIF_Msk         (0x1UL << DMA2D_ISR_TEIF_Pos)               /*!< 0x00000001 */\n#define DMA2D_ISR_TEIF             DMA2D_ISR_TEIF_Msk                          /*!< Transfer Error Interrupt Flag         */\n#define DMA2D_ISR_TCIF_Pos         (1U)\n#define DMA2D_ISR_TCIF_Msk         (0x1UL << DMA2D_ISR_TCIF_Pos)               /*!< 0x00000002 */\n#define DMA2D_ISR_TCIF             DMA2D_ISR_TCIF_Msk                          /*!< Transfer Complete Interrupt Flag      */\n#define DMA2D_ISR_TWIF_Pos         (2U)\n#define DMA2D_ISR_TWIF_Msk         (0x1UL << DMA2D_ISR_TWIF_Pos)               /*!< 0x00000004 */\n#define DMA2D_ISR_TWIF             DMA2D_ISR_TWIF_Msk                          /*!< Transfer Watermark Interrupt Flag     */\n#define DMA2D_ISR_CAEIF_Pos        (3U)\n#define DMA2D_ISR_CAEIF_Msk        (0x1UL << DMA2D_ISR_CAEIF_Pos)              /*!< 0x00000008 */\n#define DMA2D_ISR_CAEIF            DMA2D_ISR_CAEIF_Msk                         /*!< CLUT Access Error Interrupt Flag      */\n#define DMA2D_ISR_CTCIF_Pos        (4U)\n#define DMA2D_ISR_CTCIF_Msk        (0x1UL << DMA2D_ISR_CTCIF_Pos)              /*!< 0x00000010 */\n#define DMA2D_ISR_CTCIF            DMA2D_ISR_CTCIF_Msk                         /*!< CLUT Transfer Complete Interrupt Flag */\n#define DMA2D_ISR_CEIF_Pos         (5U)\n#define DMA2D_ISR_CEIF_Msk         (0x1UL << DMA2D_ISR_CEIF_Pos)               /*!< 0x00000020 */\n#define DMA2D_ISR_CEIF             DMA2D_ISR_CEIF_Msk                          /*!< Configuration Error Interrupt Flag    */\n\n/********************  Bit definition for DMA2D_IFCR register  ****************/\n\n#define DMA2D_IFCR_CTEIF_Pos       (0U)\n#define DMA2D_IFCR_CTEIF_Msk       (0x1UL << DMA2D_IFCR_CTEIF_Pos)             /*!< 0x00000001 */\n#define DMA2D_IFCR_CTEIF           DMA2D_IFCR_CTEIF_Msk                        /*!< Clears Transfer Error Interrupt Flag         */\n#define DMA2D_IFCR_CTCIF_Pos       (1U)\n#define DMA2D_IFCR_CTCIF_Msk       (0x1UL << DMA2D_IFCR_CTCIF_Pos)             /*!< 0x00000002 */\n#define DMA2D_IFCR_CTCIF           DMA2D_IFCR_CTCIF_Msk                        /*!< Clears Transfer Complete Interrupt Flag      */\n#define DMA2D_IFCR_CTWIF_Pos       (2U)\n#define DMA2D_IFCR_CTWIF_Msk       (0x1UL << DMA2D_IFCR_CTWIF_Pos)             /*!< 0x00000004 */\n#define DMA2D_IFCR_CTWIF           DMA2D_IFCR_CTWIF_Msk                        /*!< Clears Transfer Watermark Interrupt Flag     */\n#define DMA2D_IFCR_CAECIF_Pos      (3U)\n#define DMA2D_IFCR_CAECIF_Msk      (0x1UL << DMA2D_IFCR_CAECIF_Pos)            /*!< 0x00000008 */\n#define DMA2D_IFCR_CAECIF          DMA2D_IFCR_CAECIF_Msk                       /*!< Clears CLUT Access Error Interrupt Flag      */\n#define DMA2D_IFCR_CCTCIF_Pos      (4U)\n#define DMA2D_IFCR_CCTCIF_Msk      (0x1UL << DMA2D_IFCR_CCTCIF_Pos)            /*!< 0x00000010 */\n#define DMA2D_IFCR_CCTCIF          DMA2D_IFCR_CCTCIF_Msk                       /*!< Clears CLUT Transfer Complete Interrupt Flag */\n#define DMA2D_IFCR_CCEIF_Pos       (5U)\n#define DMA2D_IFCR_CCEIF_Msk       (0x1UL << DMA2D_IFCR_CCEIF_Pos)             /*!< 0x00000020 */\n#define DMA2D_IFCR_CCEIF           DMA2D_IFCR_CCEIF_Msk                        /*!< Clears Configuration Error Interrupt Flag    */\n\n/********************  Bit definition for DMA2D_FGMAR register  ***************/\n\n#define DMA2D_FGMAR_MA_Pos         (0U)\n#define DMA2D_FGMAR_MA_Msk         (0xFFFFFFFFUL << DMA2D_FGMAR_MA_Pos)        /*!< 0xFFFFFFFF */\n#define DMA2D_FGMAR_MA             DMA2D_FGMAR_MA_Msk                          /*!< Foreground Memory Address */\n\n/********************  Bit definition for DMA2D_FGOR register  ****************/\n\n#define DMA2D_FGOR_LO_Pos          (0U)\n#define DMA2D_FGOR_LO_Msk          (0xFFFFUL << DMA2D_FGOR_LO_Pos)             /*!< 0x0000FFFF */\n#define DMA2D_FGOR_LO              DMA2D_FGOR_LO_Msk                           /*!< Line Offset */\n\n/********************  Bit definition for DMA2D_BGMAR register  ***************/\n\n#define DMA2D_BGMAR_MA_Pos         (0U)\n#define DMA2D_BGMAR_MA_Msk         (0xFFFFFFFFUL << DMA2D_BGMAR_MA_Pos)        /*!< 0xFFFFFFFF */\n#define DMA2D_BGMAR_MA             DMA2D_BGMAR_MA_Msk                          /*!< Background Memory Address */\n\n/********************  Bit definition for DMA2D_BGOR register  ****************/\n\n#define DMA2D_BGOR_LO_Pos          (0U)\n#define DMA2D_BGOR_LO_Msk          (0xFFFFUL << DMA2D_BGOR_LO_Pos)             /*!< 0x0000FFFF */\n#define DMA2D_BGOR_LO              DMA2D_BGOR_LO_Msk                           /*!< Line Offset */\n\n/********************  Bit definition for DMA2D_FGPFCCR register  *************/\n\n#define DMA2D_FGPFCCR_CM_Pos       (0U)\n#define DMA2D_FGPFCCR_CM_Msk       (0xFUL << DMA2D_FGPFCCR_CM_Pos)             /*!< 0x0000000F */\n#define DMA2D_FGPFCCR_CM           DMA2D_FGPFCCR_CM_Msk                        /*!< Input color mode CM[3:0] */\n#define DMA2D_FGPFCCR_CM_0         (0x1UL << DMA2D_FGPFCCR_CM_Pos)              /*!< 0x00000001 */\n#define DMA2D_FGPFCCR_CM_1         (0x2UL << DMA2D_FGPFCCR_CM_Pos)              /*!< 0x00000002 */\n#define DMA2D_FGPFCCR_CM_2         (0x4UL << DMA2D_FGPFCCR_CM_Pos)              /*!< 0x00000004 */\n#define DMA2D_FGPFCCR_CM_3         (0x8UL << DMA2D_FGPFCCR_CM_Pos)              /*!< 0x00000008 */\n#define DMA2D_FGPFCCR_CCM_Pos      (4U)\n#define DMA2D_FGPFCCR_CCM_Msk      (0x1UL << DMA2D_FGPFCCR_CCM_Pos)            /*!< 0x00000010 */\n#define DMA2D_FGPFCCR_CCM          DMA2D_FGPFCCR_CCM_Msk                       /*!< CLUT Color mode */\n#define DMA2D_FGPFCCR_START_Pos    (5U)\n#define DMA2D_FGPFCCR_START_Msk    (0x1UL << DMA2D_FGPFCCR_START_Pos)          /*!< 0x00000020 */\n#define DMA2D_FGPFCCR_START        DMA2D_FGPFCCR_START_Msk                     /*!< Start */\n#define DMA2D_FGPFCCR_CS_Pos       (8U)\n#define DMA2D_FGPFCCR_CS_Msk       (0xFFUL << DMA2D_FGPFCCR_CS_Pos)            /*!< 0x0000FF00 */\n#define DMA2D_FGPFCCR_CS           DMA2D_FGPFCCR_CS_Msk                        /*!< CLUT size */\n#define DMA2D_FGPFCCR_AM_Pos       (16U)\n#define DMA2D_FGPFCCR_AM_Msk       (0x3UL << DMA2D_FGPFCCR_AM_Pos)             /*!< 0x00030000 */\n#define DMA2D_FGPFCCR_AM           DMA2D_FGPFCCR_AM_Msk                        /*!< Alpha mode AM[1:0] */\n#define DMA2D_FGPFCCR_AM_0         (0x1UL << DMA2D_FGPFCCR_AM_Pos)              /*!< 0x00010000 */\n#define DMA2D_FGPFCCR_AM_1         (0x2UL << DMA2D_FGPFCCR_AM_Pos)              /*!< 0x00020000 */\n#define DMA2D_FGPFCCR_CSS_Pos      (18U)\n#define DMA2D_FGPFCCR_CSS_Msk      (0x3UL << DMA2D_FGPFCCR_CSS_Pos)            /*!< 0x000C0000 */\n#define DMA2D_FGPFCCR_CSS          DMA2D_FGPFCCR_CSS_Msk                       /* !< Chroma Sub-Sampling */\n#define DMA2D_FGPFCCR_CSS_0        (0x1UL << DMA2D_FGPFCCR_CSS_Pos)             /*!< 0x00040000 */\n#define DMA2D_FGPFCCR_CSS_1        (0x2UL << DMA2D_FGPFCCR_CSS_Pos)             /*!< 0x00080000 */\n#define DMA2D_FGPFCCR_AI_Pos       (20U)\n#define DMA2D_FGPFCCR_AI_Msk       (0x1UL << DMA2D_FGPFCCR_AI_Pos)             /*!< 0x00100000 */\n#define DMA2D_FGPFCCR_AI           DMA2D_FGPFCCR_AI_Msk                        /*!< Foreground Input Alpha Inverted */\n#define DMA2D_FGPFCCR_RBS_Pos      (21U)\n#define DMA2D_FGPFCCR_RBS_Msk      (0x1UL << DMA2D_FGPFCCR_RBS_Pos)            /*!< 0x00200000 */\n#define DMA2D_FGPFCCR_RBS          DMA2D_FGPFCCR_RBS_Msk                       /*!< Foreground Input Red Blue Swap */\n#define DMA2D_FGPFCCR_ALPHA_Pos    (24U)\n#define DMA2D_FGPFCCR_ALPHA_Msk    (0xFFUL << DMA2D_FGPFCCR_ALPHA_Pos)         /*!< 0xFF000000 */\n#define DMA2D_FGPFCCR_ALPHA        DMA2D_FGPFCCR_ALPHA_Msk                     /*!< Alpha value */\n\n/********************  Bit definition for DMA2D_FGCOLR register  **************/\n\n#define DMA2D_FGCOLR_BLUE_Pos      (0U)\n#define DMA2D_FGCOLR_BLUE_Msk      (0xFFUL << DMA2D_FGCOLR_BLUE_Pos)           /*!< 0x000000FF */\n#define DMA2D_FGCOLR_BLUE          DMA2D_FGCOLR_BLUE_Msk                       /*!< Foreground Blue Value */\n#define DMA2D_FGCOLR_GREEN_Pos     (8U)\n#define DMA2D_FGCOLR_GREEN_Msk     (0xFFUL << DMA2D_FGCOLR_GREEN_Pos)          /*!< 0x0000FF00 */\n#define DMA2D_FGCOLR_GREEN         DMA2D_FGCOLR_GREEN_Msk                      /*!< Foreground Green Value */\n#define DMA2D_FGCOLR_RED_Pos       (16U)\n#define DMA2D_FGCOLR_RED_Msk       (0xFFUL << DMA2D_FGCOLR_RED_Pos)            /*!< 0x00FF0000 */\n#define DMA2D_FGCOLR_RED           DMA2D_FGCOLR_RED_Msk                        /*!< Foreground Red Value */\n\n/********************  Bit definition for DMA2D_BGPFCCR register  *************/\n\n#define DMA2D_BGPFCCR_CM_Pos       (0U)\n#define DMA2D_BGPFCCR_CM_Msk       (0xFUL << DMA2D_BGPFCCR_CM_Pos)             /*!< 0x0000000F */\n#define DMA2D_BGPFCCR_CM           DMA2D_BGPFCCR_CM_Msk                        /*!< Input color mode CM[3:0] */\n#define DMA2D_BGPFCCR_CM_0         (0x1UL << DMA2D_BGPFCCR_CM_Pos)              /*!< 0x00000001 */\n#define DMA2D_BGPFCCR_CM_1         (0x2UL << DMA2D_BGPFCCR_CM_Pos)              /*!< 0x00000002 */\n#define DMA2D_BGPFCCR_CM_2         (0x4UL << DMA2D_BGPFCCR_CM_Pos)              /*!< 0x00000004 */\n#define DMA2D_BGPFCCR_CM_3         (0x8UL << DMA2D_BGPFCCR_CM_Pos)              /*!< 0x00000008 */\n#define DMA2D_BGPFCCR_CCM_Pos      (4U)\n#define DMA2D_BGPFCCR_CCM_Msk      (0x1UL << DMA2D_BGPFCCR_CCM_Pos)            /*!< 0x00000010 */\n#define DMA2D_BGPFCCR_CCM          DMA2D_BGPFCCR_CCM_Msk                       /*!< CLUT Color mode */\n#define DMA2D_BGPFCCR_START_Pos    (5U)\n#define DMA2D_BGPFCCR_START_Msk    (0x1UL << DMA2D_BGPFCCR_START_Pos)          /*!< 0x00000020 */\n#define DMA2D_BGPFCCR_START        DMA2D_BGPFCCR_START_Msk                     /*!< Start */\n#define DMA2D_BGPFCCR_CS_Pos       (8U)\n#define DMA2D_BGPFCCR_CS_Msk       (0xFFUL << DMA2D_BGPFCCR_CS_Pos)            /*!< 0x0000FF00 */\n#define DMA2D_BGPFCCR_CS           DMA2D_BGPFCCR_CS_Msk                        /*!< CLUT size */\n#define DMA2D_BGPFCCR_AM_Pos       (16U)\n#define DMA2D_BGPFCCR_AM_Msk       (0x3UL << DMA2D_BGPFCCR_AM_Pos)             /*!< 0x00030000 */\n#define DMA2D_BGPFCCR_AM           DMA2D_BGPFCCR_AM_Msk                        /*!< Alpha mode AM[1:0] */\n#define DMA2D_BGPFCCR_AM_0         (0x1UL << DMA2D_BGPFCCR_AM_Pos)              /*!< 0x00010000 */\n#define DMA2D_BGPFCCR_AM_1         (0x2UL << DMA2D_BGPFCCR_AM_Pos)              /*!< 0x00020000 */\n#define DMA2D_BGPFCCR_AI_Pos       (20U)\n#define DMA2D_BGPFCCR_AI_Msk       (0x1UL << DMA2D_BGPFCCR_AI_Pos)             /*!< 0x00100000 */\n#define DMA2D_BGPFCCR_AI           DMA2D_BGPFCCR_AI_Msk                        /*!< background Input Alpha Inverted */\n#define DMA2D_BGPFCCR_RBS_Pos      (21U)\n#define DMA2D_BGPFCCR_RBS_Msk      (0x1UL << DMA2D_BGPFCCR_RBS_Pos)            /*!< 0x00200000 */\n#define DMA2D_BGPFCCR_RBS          DMA2D_BGPFCCR_RBS_Msk                       /*!< Background Input Red Blue Swap */\n#define DMA2D_BGPFCCR_ALPHA_Pos    (24U)\n#define DMA2D_BGPFCCR_ALPHA_Msk    (0xFFUL << DMA2D_BGPFCCR_ALPHA_Pos)         /*!< 0xFF000000 */\n#define DMA2D_BGPFCCR_ALPHA        DMA2D_BGPFCCR_ALPHA_Msk                     /*!< background Input Alpha value */\n\n/********************  Bit definition for DMA2D_BGCOLR register  **************/\n\n#define DMA2D_BGCOLR_BLUE_Pos      (0U)\n#define DMA2D_BGCOLR_BLUE_Msk      (0xFFUL << DMA2D_BGCOLR_BLUE_Pos)           /*!< 0x000000FF */\n#define DMA2D_BGCOLR_BLUE          DMA2D_BGCOLR_BLUE_Msk                       /*!< Background Blue Value */\n#define DMA2D_BGCOLR_GREEN_Pos     (8U)\n#define DMA2D_BGCOLR_GREEN_Msk     (0xFFUL << DMA2D_BGCOLR_GREEN_Pos)          /*!< 0x0000FF00 */\n#define DMA2D_BGCOLR_GREEN         DMA2D_BGCOLR_GREEN_Msk                      /*!< Background Green Value */\n#define DMA2D_BGCOLR_RED_Pos       (16U)\n#define DMA2D_BGCOLR_RED_Msk       (0xFFUL << DMA2D_BGCOLR_RED_Pos)            /*!< 0x00FF0000 */\n#define DMA2D_BGCOLR_RED           DMA2D_BGCOLR_RED_Msk                        /*!< Background Red Value */\n\n/********************  Bit definition for DMA2D_FGCMAR register  **************/\n\n#define DMA2D_FGCMAR_MA_Pos        (0U)\n#define DMA2D_FGCMAR_MA_Msk        (0xFFFFFFFFUL << DMA2D_FGCMAR_MA_Pos)       /*!< 0xFFFFFFFF */\n#define DMA2D_FGCMAR_MA            DMA2D_FGCMAR_MA_Msk                         /*!< Foreground CLUT Memory Address */\n\n/********************  Bit definition for DMA2D_BGCMAR register  **************/\n\n#define DMA2D_BGCMAR_MA_Pos        (0U)\n#define DMA2D_BGCMAR_MA_Msk        (0xFFFFFFFFUL << DMA2D_BGCMAR_MA_Pos)       /*!< 0xFFFFFFFF */\n#define DMA2D_BGCMAR_MA            DMA2D_BGCMAR_MA_Msk                         /*!< Background CLUT Memory Address */\n\n/********************  Bit definition for DMA2D_OPFCCR register  **************/\n\n#define DMA2D_OPFCCR_CM_Pos        (0U)\n#define DMA2D_OPFCCR_CM_Msk        (0x7UL << DMA2D_OPFCCR_CM_Pos)              /*!< 0x00000007 */\n#define DMA2D_OPFCCR_CM            DMA2D_OPFCCR_CM_Msk                         /*!< Output Color mode CM[2:0] */\n#define DMA2D_OPFCCR_CM_0          (0x1UL << DMA2D_OPFCCR_CM_Pos)              /*!< 0x00000001 */\n#define DMA2D_OPFCCR_CM_1          (0x2UL << DMA2D_OPFCCR_CM_Pos)              /*!< 0x00000002 */\n#define DMA2D_OPFCCR_CM_2          (0x4UL << DMA2D_OPFCCR_CM_Pos)              /*!< 0x00000004 */\n#define DMA2D_OPFCCR_SB_Pos        (8U)\n#define DMA2D_OPFCCR_SB_Msk        (0x1UL << DMA2D_OPFCCR_SB_Pos)              /*!< 0x00000100 */\n#define DMA2D_OPFCCR_SB            DMA2D_OPFCCR_SB_Msk                         /*!< Swap Bytes */\n#define DMA2D_OPFCCR_AI_Pos        (20U)\n#define DMA2D_OPFCCR_AI_Msk        (0x1UL << DMA2D_OPFCCR_AI_Pos)              /*!< 0x00100000 */\n#define DMA2D_OPFCCR_AI            DMA2D_OPFCCR_AI_Msk                         /*!< Output Alpha Inverted */\n#define DMA2D_OPFCCR_RBS_Pos       (21U)\n#define DMA2D_OPFCCR_RBS_Msk       (0x1UL << DMA2D_OPFCCR_RBS_Pos)             /*!< 0x00200000 */\n#define DMA2D_OPFCCR_RBS           DMA2D_OPFCCR_RBS_Msk                        /*!< Output Red Blue Swap */\n\n/********************  Bit definition for DMA2D_OCOLR register  ***************/\n\n/*!<Mode_ARGB8888/RGB888 */\n\n#define DMA2D_OCOLR_BLUE_1_Pos     (0U)\n#define DMA2D_OCOLR_BLUE_1_Msk     (0xFFUL <<DMA2D_OCOLR_BLUE_1_Pos)            /*0x000000FFU*/\n#define DMA2D_OCOLR_BLUE_1         DMA2D_OCOLR_BLUE_1_Msk                      /*!< Output BLUE Value */\n#define DMA2D_OCOLR_GREEN_1_Pos    (8U)\n#define DMA2D_OCOLR_GREEN_1_Msk    (0xFFUL<<DMA2D_OCOLR_GREEN_1_Pos)            /*0x0000FF00U)*/\n#define DMA2D_OCOLR_GREEN_1        DMA2D_OCOLR_GREEN_1_Msk                     /*!< Output GREEN Value  */\n#define DMA2D_OCOLR_RED_1_Pos      (16U)\n#define DMA2D_OCOLR_RED_1_Msk      (0xFFUL << DMA2D_OCOLR_RED_1_Pos)            /*0x00FF0000U */\n#define DMA2D_OCOLR_RED_1          DMA2D_OCOLR_RED_1_Msk                       /*!< Output Red Value */\n#define DMA2D_OCOLR_ALPHA_1_Pos    (24U)\n#define DMA2D_OCOLR_ALPHA_1_Msk    (0xFFUL << DMA2D_OCOLR_ALPHA_1_Pos)          /*0xFF000000U*/\n#define DMA2D_OCOLR_ALPHA_1        DMA2D_OCOLR_ALPHA_1_Msk                     /*!< Output Alpha Channel Value */\n\n/*!<Mode_RGB565 */\n#define DMA2D_OCOLR_BLUE_2_Pos     (0U)\n#define DMA2D_OCOLR_BLUE_2_Msk     (0x1FUL <<DMA2D_OCOLR_BLUE_2_Pos)            /*0x0000001FU*/\n#define DMA2D_OCOLR_BLUE_2         DMA2D_OCOLR_BLUE_2_Msk                      /*!< Output BLUE Value */\n#define DMA2D_OCOLR_GREEN_2_Pos    (5U)\n#define DMA2D_OCOLR_GREEN_2_Msk    (0x7EUL << DMA2D_OCOLR_GREEN_2_Pos)          /* 0x000007E0U */\n#define DMA2D_OCOLR_GREEN_2        DMA2D_OCOLR_GREEN_2_Msk                     /*!< Output GREEN Value  */\n#define DMA2D_OCOLR_RED_2_Pos      (11U)\n#define DMA2D_OCOLR_RED_2_Msk      (0xF8UL<<DMA2D_OCOLR_RED_2_Pos)              /*0x0000F800U*/\n#define DMA2D_OCOLR_RED_2          DMA2D_OCOLR_RED_2_Msk                       /*!< Output Red Value */\n\n/*!<Mode_ARGB1555 */\n#define DMA2D_OCOLR_BLUE_3_Pos     (0U)\n#define DMA2D_OCOLR_BLUE_3_Msk     (0x1FUL << DMA2D_OCOLR_BLUE_3_Pos)           /*0x0000001FU*/\n#define DMA2D_OCOLR_BLUE_3         DMA2D_OCOLR_BLUE_3_Msk                      /*!< Output BLUE Value */\n#define DMA2D_OCOLR_GREEN_3_Pos    (5U)\n#define DMA2D_OCOLR_GREEN_3_Msk    (0x3EUL << DMA2D_OCOLR_GREEN_3_Pos)          /*0x000003E0U*/\n#define DMA2D_OCOLR_GREEN_3        DMA2D_OCOLR_GREEN_3_Msk                     /*!< Output GREEN Value  */\n#define DMA2D_OCOLR_RED_3_Pos      (10U)\n#define DMA2D_OCOLR_RED_3_Msk      (0x7CUL << DMA2D_OCOLR_RED_3_Pos)            /* 0x00007C00U*/\n#define DMA2D_OCOLR_RED_3          DMA2D_OCOLR_RED_3_Msk                       /*!< Output Red Value */\n#define DMA2D_OCOLR_ALPHA_3_Pos    (15U)\n#define DMA2D_OCOLR_ALPHA_3_Msk    (0x1UL << DMA2D_OCOLR_ALPHA_3_Pos)           /*0x00008000U*/\n#define DMA2D_OCOLR_ALPHA_3        DMA2D_OCOLR_ALPHA_3_Msk                     /*!< Output Alpha Channel Value */\n\n/*!<Mode_ARGB4444 */\n#define DMA2D_OCOLR_BLUE_4_Pos     (0U)\n#define DMA2D_OCOLR_BLUE_4_Msk     (0xFUL << DMA2D_OCOLR_BLUE_4_Pos)            /*0x0000000FU*/\n#define DMA2D_OCOLR_BLUE_4         DMA2D_OCOLR_BLUE_4_Msk                      /*!< Output BLUE Value */\n#define DMA2D_OCOLR_GREEN_4_Pos    (4U)\n#define DMA2D_OCOLR_GREEN_4_Msk    (0xFUL << DMA2D_OCOLR_GREEN_4_Pos)           /*0x000000F0U*/\n#define DMA2D_OCOLR_GREEN_4        DMA2D_OCOLR_GREEN_4_Msk                     /*!< Output GREEN Value  */\n#define DMA2D_OCOLR_RED_4_Pos      (8U)\n#define DMA2D_OCOLR_RED_4_Msk      (0xFUL << DMA2D_OCOLR_RED_4_Pos)             /*0x00000F00U*/\n#define DMA2D_OCOLR_RED_4          DMA2D_OCOLR_RED_4_Msk                       /*!< Output Red Value */\n#define DMA2D_OCOLR_ALPHA_4_Pos    (12U)\n#define DMA2D_OCOLR_ALPHA_4_Msk    (0xFUL << DMA2D_OCOLR_ALPHA_4_Pos)            /*0x0000F000U*/\n#define DMA2D_OCOLR_ALPHA_4        DMA2D_OCOLR_ALPHA_4_Msk                     /*!< Output Alpha Channel Value */\n\n/********************  Bit definition for DMA2D_OMAR register  ****************/\n\n#define DMA2D_OMAR_MA_Pos          (0U)\n#define DMA2D_OMAR_MA_Msk          (0xFFFFFFFFUL << DMA2D_OMAR_MA_Pos)         /*!< 0xFFFFFFFF */\n#define DMA2D_OMAR_MA              DMA2D_OMAR_MA_Msk                           /*!< Output Memory Address */\n\n/********************  Bit definition for DMA2D_OOR register  *****************/\n\n#define DMA2D_OOR_LO_Pos           (0U)\n#define DMA2D_OOR_LO_Msk           (0xFFFFUL << DMA2D_OOR_LO_Pos)              /*!< 0x0000FFFF */\n#define DMA2D_OOR_LO               DMA2D_OOR_LO_Msk                            /*!< Output Line Offset */\n\n/********************  Bit definition for DMA2D_NLR register  *****************/\n\n#define DMA2D_NLR_NL_Pos           (0U)\n#define DMA2D_NLR_NL_Msk           (0xFFFFUL << DMA2D_NLR_NL_Pos)              /*!< 0x0000FFFF */\n#define DMA2D_NLR_NL               DMA2D_NLR_NL_Msk                            /*!< Number of Lines */\n#define DMA2D_NLR_PL_Pos           (16U)\n#define DMA2D_NLR_PL_Msk           (0x3FFFUL << DMA2D_NLR_PL_Pos)              /*!< 0x3FFF0000 */\n#define DMA2D_NLR_PL               DMA2D_NLR_PL_Msk                            /*!< Pixel per Lines */\n\n/********************  Bit definition for DMA2D_LWR register  *****************/\n\n#define DMA2D_LWR_LW_Pos           (0U)\n#define DMA2D_LWR_LW_Msk           (0xFFFFUL << DMA2D_LWR_LW_Pos)              /*!< 0x0000FFFF */\n#define DMA2D_LWR_LW               DMA2D_LWR_LW_Msk                            /*!< Line Watermark */\n\n/********************  Bit definition for DMA2D_AMTCR register  ***************/\n\n#define DMA2D_AMTCR_EN_Pos         (0U)\n#define DMA2D_AMTCR_EN_Msk         (0x1UL << DMA2D_AMTCR_EN_Pos)               /*!< 0x00000001 */\n#define DMA2D_AMTCR_EN             DMA2D_AMTCR_EN_Msk                          /*!< Enable */\n#define DMA2D_AMTCR_DT_Pos         (8U)\n#define DMA2D_AMTCR_DT_Msk         (0xFFUL << DMA2D_AMTCR_DT_Pos)              /*!< 0x0000FF00 */\n#define DMA2D_AMTCR_DT             DMA2D_AMTCR_DT_Msk                          /*!< Dead Time */\n\n\n/********************  Bit definition for DMA2D_FGCLUT register  **************/\n\n/********************  Bit definition for DMA2D_BGCLUT register  **************/\n\n\n/******************************************************************************/\n/*                                                                            */\n/*                    External Interrupt/Event Controller                     */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bit definition for EXTI_RTSR1 register  *******************/\n#define EXTI_RTSR1_TR_Pos          (0U)\n#define EXTI_RTSR1_TR_Msk          (0x3FFFFFUL << EXTI_RTSR1_TR_Pos)           /*!< 0x003FFFFF */\n#define EXTI_RTSR1_TR              EXTI_RTSR1_TR_Msk                           /*!< Rising trigger event configuration bit */\n#define EXTI_RTSR1_TR0_Pos         (0U)\n#define EXTI_RTSR1_TR0_Msk         (0x1UL << EXTI_RTSR1_TR0_Pos)               /*!< 0x00000001 */\n#define EXTI_RTSR1_TR0             EXTI_RTSR1_TR0_Msk                          /*!< Rising trigger event configuration bit of line 0 */\n#define EXTI_RTSR1_TR1_Pos         (1U)\n#define EXTI_RTSR1_TR1_Msk         (0x1UL << EXTI_RTSR1_TR1_Pos)               /*!< 0x00000002 */\n#define EXTI_RTSR1_TR1             EXTI_RTSR1_TR1_Msk                          /*!< Rising trigger event configuration bit of line 1 */\n#define EXTI_RTSR1_TR2_Pos         (2U)\n#define EXTI_RTSR1_TR2_Msk         (0x1UL << EXTI_RTSR1_TR2_Pos)               /*!< 0x00000004 */\n#define EXTI_RTSR1_TR2             EXTI_RTSR1_TR2_Msk                          /*!< Rising trigger event configuration bit of line 2 */\n#define EXTI_RTSR1_TR3_Pos         (3U)\n#define EXTI_RTSR1_TR3_Msk         (0x1UL << EXTI_RTSR1_TR3_Pos)               /*!< 0x00000008 */\n#define EXTI_RTSR1_TR3             EXTI_RTSR1_TR3_Msk                          /*!< Rising trigger event configuration bit of line 3 */\n#define EXTI_RTSR1_TR4_Pos         (4U)\n#define EXTI_RTSR1_TR4_Msk         (0x1UL << EXTI_RTSR1_TR4_Pos)               /*!< 0x00000010 */\n#define EXTI_RTSR1_TR4             EXTI_RTSR1_TR4_Msk                          /*!< Rising trigger event configuration bit of line 4 */\n#define EXTI_RTSR1_TR5_Pos         (5U)\n#define EXTI_RTSR1_TR5_Msk         (0x1UL << EXTI_RTSR1_TR5_Pos)               /*!< 0x00000020 */\n#define EXTI_RTSR1_TR5             EXTI_RTSR1_TR5_Msk                          /*!< Rising trigger event configuration bit of line 5 */\n#define EXTI_RTSR1_TR6_Pos         (6U)\n#define EXTI_RTSR1_TR6_Msk         (0x1UL << EXTI_RTSR1_TR6_Pos)               /*!< 0x00000040 */\n#define EXTI_RTSR1_TR6             EXTI_RTSR1_TR6_Msk                          /*!< Rising trigger event configuration bit of line 6 */\n#define EXTI_RTSR1_TR7_Pos         (7U)\n#define EXTI_RTSR1_TR7_Msk         (0x1UL << EXTI_RTSR1_TR7_Pos)               /*!< 0x00000080 */\n#define EXTI_RTSR1_TR7             EXTI_RTSR1_TR7_Msk                          /*!< Rising trigger event configuration bit of line 7 */\n#define EXTI_RTSR1_TR8_Pos         (8U)\n#define EXTI_RTSR1_TR8_Msk         (0x1UL << EXTI_RTSR1_TR8_Pos)               /*!< 0x00000100 */\n#define EXTI_RTSR1_TR8             EXTI_RTSR1_TR8_Msk                          /*!< Rising trigger event configuration bit of line 8 */\n#define EXTI_RTSR1_TR9_Pos         (9U)\n#define EXTI_RTSR1_TR9_Msk         (0x1UL << EXTI_RTSR1_TR9_Pos)               /*!< 0x00000200 */\n#define EXTI_RTSR1_TR9             EXTI_RTSR1_TR9_Msk                          /*!< Rising trigger event configuration bit of line 9 */\n#define EXTI_RTSR1_TR10_Pos        (10U)\n#define EXTI_RTSR1_TR10_Msk        (0x1UL << EXTI_RTSR1_TR10_Pos)              /*!< 0x00000400 */\n#define EXTI_RTSR1_TR10            EXTI_RTSR1_TR10_Msk                         /*!< Rising trigger event configuration bit of line 10 */\n#define EXTI_RTSR1_TR11_Pos        (11U)\n#define EXTI_RTSR1_TR11_Msk        (0x1UL << EXTI_RTSR1_TR11_Pos)              /*!< 0x00000800 */\n#define EXTI_RTSR1_TR11            EXTI_RTSR1_TR11_Msk                         /*!< Rising trigger event configuration bit of line 11 */\n#define EXTI_RTSR1_TR12_Pos        (12U)\n#define EXTI_RTSR1_TR12_Msk        (0x1UL << EXTI_RTSR1_TR12_Pos)              /*!< 0x00001000 */\n#define EXTI_RTSR1_TR12            EXTI_RTSR1_TR12_Msk                         /*!< Rising trigger event configuration bit of line 12 */\n#define EXTI_RTSR1_TR13_Pos        (13U)\n#define EXTI_RTSR1_TR13_Msk        (0x1UL << EXTI_RTSR1_TR13_Pos)              /*!< 0x00002000 */\n#define EXTI_RTSR1_TR13            EXTI_RTSR1_TR13_Msk                         /*!< Rising trigger event configuration bit of line 13 */\n#define EXTI_RTSR1_TR14_Pos        (14U)\n#define EXTI_RTSR1_TR14_Msk        (0x1UL << EXTI_RTSR1_TR14_Pos)              /*!< 0x00004000 */\n#define EXTI_RTSR1_TR14            EXTI_RTSR1_TR14_Msk                         /*!< Rising trigger event configuration bit of line 14 */\n#define EXTI_RTSR1_TR15_Pos        (15U)\n#define EXTI_RTSR1_TR15_Msk        (0x1UL << EXTI_RTSR1_TR15_Pos)              /*!< 0x00008000 */\n#define EXTI_RTSR1_TR15            EXTI_RTSR1_TR15_Msk                         /*!< Rising trigger event configuration bit of line 15 */\n#define EXTI_RTSR1_TR16_Pos        (16U)\n#define EXTI_RTSR1_TR16_Msk        (0x1UL << EXTI_RTSR1_TR16_Pos)              /*!< 0x00010000 */\n#define EXTI_RTSR1_TR16            EXTI_RTSR1_TR16_Msk                         /*!< Rising trigger event configuration bit of line 16 */\n#define EXTI_RTSR1_TR17_Pos        (17U)\n#define EXTI_RTSR1_TR17_Msk        (0x1UL << EXTI_RTSR1_TR17_Pos)              /*!< 0x00020000 */\n#define EXTI_RTSR1_TR17            EXTI_RTSR1_TR17_Msk                         /*!< Rising trigger event configuration bit of line 17 */\n#define EXTI_RTSR1_TR18_Pos        (18U)\n#define EXTI_RTSR1_TR18_Msk        (0x1UL << EXTI_RTSR1_TR18_Pos)              /*!< 0x00040000 */\n#define EXTI_RTSR1_TR18            EXTI_RTSR1_TR18_Msk                         /*!< Rising trigger event configuration bit of line 18 */\n#define EXTI_RTSR1_TR19_Pos        (19U)\n#define EXTI_RTSR1_TR19_Msk        (0x1UL << EXTI_RTSR1_TR19_Pos)              /*!< 0x00080000 */\n#define EXTI_RTSR1_TR19            EXTI_RTSR1_TR19_Msk                         /*!< Rising trigger event configuration bit of line 19 */\n#define EXTI_RTSR1_TR20_Pos        (20U)\n#define EXTI_RTSR1_TR20_Msk        (0x1UL << EXTI_RTSR1_TR20_Pos)              /*!< 0x00100000 */\n#define EXTI_RTSR1_TR20            EXTI_RTSR1_TR20_Msk                         /*!< Rising trigger event configuration bit of line 20 */\n#define EXTI_RTSR1_TR21_Pos        (21U)\n#define EXTI_RTSR1_TR21_Msk        (0x1UL << EXTI_RTSR1_TR21_Pos)              /*!< 0x00200000 */\n#define EXTI_RTSR1_TR21            EXTI_RTSR1_TR21_Msk                         /*!< Rising trigger event configuration bit of line 21 */\n\n/******************  Bit definition for EXTI_FTSR1 register  *******************/\n#define EXTI_FTSR1_TR_Pos          (0U)\n#define EXTI_FTSR1_TR_Msk          (0x3FFFFFUL << EXTI_FTSR1_TR_Pos)           /*!< 0x003FFFFF */\n#define EXTI_FTSR1_TR              EXTI_FTSR1_TR_Msk                           /*!< Falling trigger event configuration bit */\n#define EXTI_FTSR1_TR0_Pos         (0U)\n#define EXTI_FTSR1_TR0_Msk         (0x1UL << EXTI_FTSR1_TR0_Pos)               /*!< 0x00000001 */\n#define EXTI_FTSR1_TR0             EXTI_FTSR1_TR0_Msk                          /*!< Falling trigger event configuration bit of line 0 */\n#define EXTI_FTSR1_TR1_Pos         (1U)\n#define EXTI_FTSR1_TR1_Msk         (0x1UL << EXTI_FTSR1_TR1_Pos)               /*!< 0x00000002 */\n#define EXTI_FTSR1_TR1             EXTI_FTSR1_TR1_Msk                          /*!< Falling trigger event configuration bit of line 1 */\n#define EXTI_FTSR1_TR2_Pos         (2U)\n#define EXTI_FTSR1_TR2_Msk         (0x1UL << EXTI_FTSR1_TR2_Pos)               /*!< 0x00000004 */\n#define EXTI_FTSR1_TR2             EXTI_FTSR1_TR2_Msk                          /*!< Falling trigger event configuration bit of line 2 */\n#define EXTI_FTSR1_TR3_Pos         (3U)\n#define EXTI_FTSR1_TR3_Msk         (0x1UL << EXTI_FTSR1_TR3_Pos)               /*!< 0x00000008 */\n#define EXTI_FTSR1_TR3             EXTI_FTSR1_TR3_Msk                          /*!< Falling trigger event configuration bit of line 3 */\n#define EXTI_FTSR1_TR4_Pos         (4U)\n#define EXTI_FTSR1_TR4_Msk         (0x1UL << EXTI_FTSR1_TR4_Pos)               /*!< 0x00000010 */\n#define EXTI_FTSR1_TR4             EXTI_FTSR1_TR4_Msk                          /*!< Falling trigger event configuration bit of line 4 */\n#define EXTI_FTSR1_TR5_Pos         (5U)\n#define EXTI_FTSR1_TR5_Msk         (0x1UL << EXTI_FTSR1_TR5_Pos)               /*!< 0x00000020 */\n#define EXTI_FTSR1_TR5             EXTI_FTSR1_TR5_Msk                          /*!< Falling trigger event configuration bit of line 5 */\n#define EXTI_FTSR1_TR6_Pos         (6U)\n#define EXTI_FTSR1_TR6_Msk         (0x1UL << EXTI_FTSR1_TR6_Pos)               /*!< 0x00000040 */\n#define EXTI_FTSR1_TR6             EXTI_FTSR1_TR6_Msk                          /*!< Falling trigger event configuration bit of line 6 */\n#define EXTI_FTSR1_TR7_Pos         (7U)\n#define EXTI_FTSR1_TR7_Msk         (0x1UL << EXTI_FTSR1_TR7_Pos)               /*!< 0x00000080 */\n#define EXTI_FTSR1_TR7             EXTI_FTSR1_TR7_Msk                          /*!< Falling trigger event configuration bit of line 7 */\n#define EXTI_FTSR1_TR8_Pos         (8U)\n#define EXTI_FTSR1_TR8_Msk         (0x1UL << EXTI_FTSR1_TR8_Pos)               /*!< 0x00000100 */\n#define EXTI_FTSR1_TR8             EXTI_FTSR1_TR8_Msk                          /*!< Falling trigger event configuration bit of line 8 */\n#define EXTI_FTSR1_TR9_Pos         (9U)\n#define EXTI_FTSR1_TR9_Msk         (0x1UL << EXTI_FTSR1_TR9_Pos)               /*!< 0x00000200 */\n#define EXTI_FTSR1_TR9             EXTI_FTSR1_TR9_Msk                          /*!< Falling trigger event configuration bit of line 9 */\n#define EXTI_FTSR1_TR10_Pos        (10U)\n#define EXTI_FTSR1_TR10_Msk        (0x1UL << EXTI_FTSR1_TR10_Pos)              /*!< 0x00000400 */\n#define EXTI_FTSR1_TR10            EXTI_FTSR1_TR10_Msk                         /*!< Falling trigger event configuration bit of line 10 */\n#define EXTI_FTSR1_TR11_Pos        (11U)\n#define EXTI_FTSR1_TR11_Msk        (0x1UL << EXTI_FTSR1_TR11_Pos)              /*!< 0x00000800 */\n#define EXTI_FTSR1_TR11            EXTI_FTSR1_TR11_Msk                         /*!< Falling trigger event configuration bit of line 11 */\n#define EXTI_FTSR1_TR12_Pos        (12U)\n#define EXTI_FTSR1_TR12_Msk        (0x1UL << EXTI_FTSR1_TR12_Pos)              /*!< 0x00001000 */\n#define EXTI_FTSR1_TR12            EXTI_FTSR1_TR12_Msk                         /*!< Falling trigger event configuration bit of line 12 */\n#define EXTI_FTSR1_TR13_Pos        (13U)\n#define EXTI_FTSR1_TR13_Msk        (0x1UL << EXTI_FTSR1_TR13_Pos)              /*!< 0x00002000 */\n#define EXTI_FTSR1_TR13            EXTI_FTSR1_TR13_Msk                         /*!< Falling trigger event configuration bit of line 13 */\n#define EXTI_FTSR1_TR14_Pos        (14U)\n#define EXTI_FTSR1_TR14_Msk        (0x1UL << EXTI_FTSR1_TR14_Pos)              /*!< 0x00004000 */\n#define EXTI_FTSR1_TR14            EXTI_FTSR1_TR14_Msk                         /*!< Falling trigger event configuration bit of line 14 */\n#define EXTI_FTSR1_TR15_Pos        (15U)\n#define EXTI_FTSR1_TR15_Msk        (0x1UL << EXTI_FTSR1_TR15_Pos)              /*!< 0x00008000 */\n#define EXTI_FTSR1_TR15            EXTI_FTSR1_TR15_Msk                         /*!< Falling trigger event configuration bit of line 15 */\n#define EXTI_FTSR1_TR16_Pos        (16U)\n#define EXTI_FTSR1_TR16_Msk        (0x1UL << EXTI_FTSR1_TR16_Pos)              /*!< 0x00010000 */\n#define EXTI_FTSR1_TR16            EXTI_FTSR1_TR16_Msk                         /*!< Falling trigger event configuration bit of line 16 */\n#define EXTI_FTSR1_TR17_Pos        (17U)\n#define EXTI_FTSR1_TR17_Msk        (0x1UL << EXTI_FTSR1_TR17_Pos)              /*!< 0x00020000 */\n#define EXTI_FTSR1_TR17            EXTI_FTSR1_TR17_Msk                         /*!< Falling trigger event configuration bit of line 17 */\n#define EXTI_FTSR1_TR18_Pos        (18U)\n#define EXTI_FTSR1_TR18_Msk        (0x1UL << EXTI_FTSR1_TR18_Pos)              /*!< 0x00040000 */\n#define EXTI_FTSR1_TR18            EXTI_FTSR1_TR18_Msk                         /*!< Falling trigger event configuration bit of line 18 */\n#define EXTI_FTSR1_TR19_Pos        (19U)\n#define EXTI_FTSR1_TR19_Msk        (0x1UL << EXTI_FTSR1_TR19_Pos)              /*!< 0x00080000 */\n#define EXTI_FTSR1_TR19            EXTI_FTSR1_TR19_Msk                         /*!< Falling trigger event configuration bit of line 19 */\n#define EXTI_FTSR1_TR20_Pos        (20U)\n#define EXTI_FTSR1_TR20_Msk        (0x1UL << EXTI_FTSR1_TR20_Pos)              /*!< 0x00100000 */\n#define EXTI_FTSR1_TR20            EXTI_FTSR1_TR20_Msk                         /*!< Falling trigger event configuration bit of line 20 */\n#define EXTI_FTSR1_TR21_Pos        (21U)\n#define EXTI_FTSR1_TR21_Msk        (0x1UL << EXTI_FTSR1_TR21_Pos)              /*!< 0x00200000 */\n#define EXTI_FTSR1_TR21            EXTI_FTSR1_TR21_Msk                         /*!< Falling trigger event configuration bit of line 21 */\n\n/******************  Bit definition for EXTI_SWIER1 register  ******************/\n#define EXTI_SWIER1_SWIER0_Pos     (0U)\n#define EXTI_SWIER1_SWIER0_Msk     (0x1UL << EXTI_SWIER1_SWIER0_Pos)           /*!< 0x00000001 */\n#define EXTI_SWIER1_SWIER0         EXTI_SWIER1_SWIER0_Msk                      /*!< Software Interrupt on line 0 */\n#define EXTI_SWIER1_SWIER1_Pos     (1U)\n#define EXTI_SWIER1_SWIER1_Msk     (0x1UL << EXTI_SWIER1_SWIER1_Pos)           /*!< 0x00000002 */\n#define EXTI_SWIER1_SWIER1         EXTI_SWIER1_SWIER1_Msk                      /*!< Software Interrupt on line 1 */\n#define EXTI_SWIER1_SWIER2_Pos     (2U)\n#define EXTI_SWIER1_SWIER2_Msk     (0x1UL << EXTI_SWIER1_SWIER2_Pos)           /*!< 0x00000004 */\n#define EXTI_SWIER1_SWIER2         EXTI_SWIER1_SWIER2_Msk                      /*!< Software Interrupt on line 2 */\n#define EXTI_SWIER1_SWIER3_Pos     (3U)\n#define EXTI_SWIER1_SWIER3_Msk     (0x1UL << EXTI_SWIER1_SWIER3_Pos)           /*!< 0x00000008 */\n#define EXTI_SWIER1_SWIER3         EXTI_SWIER1_SWIER3_Msk                      /*!< Software Interrupt on line 3 */\n#define EXTI_SWIER1_SWIER4_Pos     (4U)\n#define EXTI_SWIER1_SWIER4_Msk     (0x1UL << EXTI_SWIER1_SWIER4_Pos)           /*!< 0x00000010 */\n#define EXTI_SWIER1_SWIER4         EXTI_SWIER1_SWIER4_Msk                      /*!< Software Interrupt on line 4 */\n#define EXTI_SWIER1_SWIER5_Pos     (5U)\n#define EXTI_SWIER1_SWIER5_Msk     (0x1UL << EXTI_SWIER1_SWIER5_Pos)           /*!< 0x00000020 */\n#define EXTI_SWIER1_SWIER5         EXTI_SWIER1_SWIER5_Msk                      /*!< Software Interrupt on line 5 */\n#define EXTI_SWIER1_SWIER6_Pos     (6U)\n#define EXTI_SWIER1_SWIER6_Msk     (0x1UL << EXTI_SWIER1_SWIER6_Pos)           /*!< 0x00000040 */\n#define EXTI_SWIER1_SWIER6         EXTI_SWIER1_SWIER6_Msk                      /*!< Software Interrupt on line 6 */\n#define EXTI_SWIER1_SWIER7_Pos     (7U)\n#define EXTI_SWIER1_SWIER7_Msk     (0x1UL << EXTI_SWIER1_SWIER7_Pos)           /*!< 0x00000080 */\n#define EXTI_SWIER1_SWIER7         EXTI_SWIER1_SWIER7_Msk                      /*!< Software Interrupt on line 7 */\n#define EXTI_SWIER1_SWIER8_Pos     (8U)\n#define EXTI_SWIER1_SWIER8_Msk     (0x1UL << EXTI_SWIER1_SWIER8_Pos)           /*!< 0x00000100 */\n#define EXTI_SWIER1_SWIER8         EXTI_SWIER1_SWIER8_Msk                      /*!< Software Interrupt on line 8 */\n#define EXTI_SWIER1_SWIER9_Pos     (9U)\n#define EXTI_SWIER1_SWIER9_Msk     (0x1UL << EXTI_SWIER1_SWIER9_Pos)           /*!< 0x00000200 */\n#define EXTI_SWIER1_SWIER9         EXTI_SWIER1_SWIER9_Msk                      /*!< Software Interrupt on line 9 */\n#define EXTI_SWIER1_SWIER10_Pos    (10U)\n#define EXTI_SWIER1_SWIER10_Msk    (0x1UL << EXTI_SWIER1_SWIER10_Pos)          /*!< 0x00000400 */\n#define EXTI_SWIER1_SWIER10        EXTI_SWIER1_SWIER10_Msk                     /*!< Software Interrupt on line 10 */\n#define EXTI_SWIER1_SWIER11_Pos    (11U)\n#define EXTI_SWIER1_SWIER11_Msk    (0x1UL << EXTI_SWIER1_SWIER11_Pos)          /*!< 0x00000800 */\n#define EXTI_SWIER1_SWIER11        EXTI_SWIER1_SWIER11_Msk                     /*!< Software Interrupt on line 11 */\n#define EXTI_SWIER1_SWIER12_Pos    (12U)\n#define EXTI_SWIER1_SWIER12_Msk    (0x1UL << EXTI_SWIER1_SWIER12_Pos)          /*!< 0x00001000 */\n#define EXTI_SWIER1_SWIER12        EXTI_SWIER1_SWIER12_Msk                     /*!< Software Interrupt on line 12 */\n#define EXTI_SWIER1_SWIER13_Pos    (13U)\n#define EXTI_SWIER1_SWIER13_Msk    (0x1UL << EXTI_SWIER1_SWIER13_Pos)          /*!< 0x00002000 */\n#define EXTI_SWIER1_SWIER13        EXTI_SWIER1_SWIER13_Msk                     /*!< Software Interrupt on line 13 */\n#define EXTI_SWIER1_SWIER14_Pos    (14U)\n#define EXTI_SWIER1_SWIER14_Msk    (0x1UL << EXTI_SWIER1_SWIER14_Pos)          /*!< 0x00004000 */\n#define EXTI_SWIER1_SWIER14        EXTI_SWIER1_SWIER14_Msk                     /*!< Software Interrupt on line 14 */\n#define EXTI_SWIER1_SWIER15_Pos    (15U)\n#define EXTI_SWIER1_SWIER15_Msk    (0x1UL << EXTI_SWIER1_SWIER15_Pos)          /*!< 0x00008000 */\n#define EXTI_SWIER1_SWIER15        EXTI_SWIER1_SWIER15_Msk                     /*!< Software Interrupt on line 15 */\n#define EXTI_SWIER1_SWIER16_Pos    (16U)\n#define EXTI_SWIER1_SWIER16_Msk    (0x1UL << EXTI_SWIER1_SWIER16_Pos)          /*!< 0x00010000 */\n#define EXTI_SWIER1_SWIER16        EXTI_SWIER1_SWIER16_Msk                     /*!< Software Interrupt on line 16 */\n#define EXTI_SWIER1_SWIER17_Pos    (17U)\n#define EXTI_SWIER1_SWIER17_Msk    (0x1UL << EXTI_SWIER1_SWIER17_Pos)          /*!< 0x00020000 */\n#define EXTI_SWIER1_SWIER17        EXTI_SWIER1_SWIER17_Msk                     /*!< Software Interrupt on line 17 */\n#define EXTI_SWIER1_SWIER18_Pos    (18U)\n#define EXTI_SWIER1_SWIER18_Msk    (0x1UL << EXTI_SWIER1_SWIER18_Pos)          /*!< 0x00040000 */\n#define EXTI_SWIER1_SWIER18        EXTI_SWIER1_SWIER18_Msk                     /*!< Software Interrupt on line 18 */\n#define EXTI_SWIER1_SWIER19_Pos    (19U)\n#define EXTI_SWIER1_SWIER19_Msk    (0x1UL << EXTI_SWIER1_SWIER19_Pos)          /*!< 0x00080000 */\n#define EXTI_SWIER1_SWIER19        EXTI_SWIER1_SWIER19_Msk                     /*!< Software Interrupt on line 19 */\n#define EXTI_SWIER1_SWIER20_Pos    (20U)\n#define EXTI_SWIER1_SWIER20_Msk    (0x1UL << EXTI_SWIER1_SWIER20_Pos)          /*!< 0x00100000 */\n#define EXTI_SWIER1_SWIER20        EXTI_SWIER1_SWIER20_Msk                     /*!< Software Interrupt on line 20 */\n#define EXTI_SWIER1_SWIER21_Pos    (21U)\n#define EXTI_SWIER1_SWIER21_Msk    (0x1UL << EXTI_SWIER1_SWIER21_Pos)          /*!< 0x00200000 */\n#define EXTI_SWIER1_SWIER21        EXTI_SWIER1_SWIER21_Msk                     /*!< Software Interrupt on line 21 */\n\n/******************  Bit definition for EXTI_D3PMR1 register  ******************/\n#define EXTI_D3PMR1_MR0_Pos        (0U)\n#define EXTI_D3PMR1_MR0_Msk        (0x1UL << EXTI_D3PMR1_MR0_Pos)              /*!< 0x00000001 */\n#define EXTI_D3PMR1_MR0            EXTI_D3PMR1_MR0_Msk                         /*!< Pending Mask Event for line 0  */\n#define EXTI_D3PMR1_MR1_Pos        (1U)\n#define EXTI_D3PMR1_MR1_Msk        (0x1UL << EXTI_D3PMR1_MR1_Pos)              /*!< 0x00000002 */\n#define EXTI_D3PMR1_MR1            EXTI_D3PMR1_MR1_Msk                         /*!< Pending Mask Event for line 1  */\n#define EXTI_D3PMR1_MR2_Pos        (2U)\n#define EXTI_D3PMR1_MR2_Msk        (0x1UL << EXTI_D3PMR1_MR2_Pos)              /*!< 0x00000004 */\n#define EXTI_D3PMR1_MR2            EXTI_D3PMR1_MR2_Msk                         /*!< Pending Mask Event for line 2  */\n#define EXTI_D3PMR1_MR3_Pos        (3U)\n#define EXTI_D3PMR1_MR3_Msk        (0x1UL << EXTI_D3PMR1_MR3_Pos)              /*!< 0x00000008 */\n#define EXTI_D3PMR1_MR3            EXTI_D3PMR1_MR3_Msk                         /*!< Pending Mask Event for line 3  */\n#define EXTI_D3PMR1_MR4_Pos        (4U)\n#define EXTI_D3PMR1_MR4_Msk        (0x1UL << EXTI_D3PMR1_MR4_Pos)              /*!< 0x00000010 */\n#define EXTI_D3PMR1_MR4            EXTI_D3PMR1_MR4_Msk                         /*!< Pending Mask Event for line 4  */\n#define EXTI_D3PMR1_MR5_Pos        (5U)\n#define EXTI_D3PMR1_MR5_Msk        (0x1UL << EXTI_D3PMR1_MR5_Pos)              /*!< 0x00000020 */\n#define EXTI_D3PMR1_MR5            EXTI_D3PMR1_MR5_Msk                         /*!< Pending Mask Event for line 5  */\n#define EXTI_D3PMR1_MR6_Pos        (6U)\n#define EXTI_D3PMR1_MR6_Msk        (0x1UL << EXTI_D3PMR1_MR6_Pos)              /*!< 0x00000040 */\n#define EXTI_D3PMR1_MR6            EXTI_D3PMR1_MR6_Msk                         /*!< Pending Mask Event for line 6  */\n#define EXTI_D3PMR1_MR7_Pos        (7U)\n#define EXTI_D3PMR1_MR7_Msk        (0x1UL << EXTI_D3PMR1_MR7_Pos)              /*!< 0x00000080 */\n#define EXTI_D3PMR1_MR7            EXTI_D3PMR1_MR7_Msk                         /*!< Pending Mask Event for line 7  */\n#define EXTI_D3PMR1_MR8_Pos        (8U)\n#define EXTI_D3PMR1_MR8_Msk        (0x1UL << EXTI_D3PMR1_MR8_Pos)              /*!< 0x00000100 */\n#define EXTI_D3PMR1_MR8            EXTI_D3PMR1_MR8_Msk                         /*!< Pending Mask Event for line 8  */\n#define EXTI_D3PMR1_MR9_Pos        (9U)\n#define EXTI_D3PMR1_MR9_Msk        (0x1UL << EXTI_D3PMR1_MR9_Pos)              /*!< 0x00000200 */\n#define EXTI_D3PMR1_MR9            EXTI_D3PMR1_MR9_Msk                         /*!< Pending Mask Event for line 9  */\n#define EXTI_D3PMR1_MR10_Pos       (10U)\n#define EXTI_D3PMR1_MR10_Msk       (0x1UL << EXTI_D3PMR1_MR10_Pos)             /*!< 0x00000400 */\n#define EXTI_D3PMR1_MR10           EXTI_D3PMR1_MR10_Msk                        /*!< Pending Mask Event for line 10 */\n#define EXTI_D3PMR1_MR11_Pos       (11U)\n#define EXTI_D3PMR1_MR11_Msk       (0x1UL << EXTI_D3PMR1_MR11_Pos)             /*!< 0x00000800 */\n#define EXTI_D3PMR1_MR11           EXTI_D3PMR1_MR11_Msk                        /*!< Pending Mask Event for line 11 */\n#define EXTI_D3PMR1_MR12_Pos       (12U)\n#define EXTI_D3PMR1_MR12_Msk       (0x1UL << EXTI_D3PMR1_MR12_Pos)             /*!< 0x00001000 */\n#define EXTI_D3PMR1_MR12           EXTI_D3PMR1_MR12_Msk                        /*!< Pending Mask Event for line 12 */\n#define EXTI_D3PMR1_MR13_Pos       (13U)\n#define EXTI_D3PMR1_MR13_Msk       (0x1UL << EXTI_D3PMR1_MR13_Pos)             /*!< 0x00002000 */\n#define EXTI_D3PMR1_MR13           EXTI_D3PMR1_MR13_Msk                        /*!< Pending Mask Event for line 13 */\n#define EXTI_D3PMR1_MR14_Pos       (14U)\n#define EXTI_D3PMR1_MR14_Msk       (0x1UL << EXTI_D3PMR1_MR14_Pos)             /*!< 0x00004000 */\n#define EXTI_D3PMR1_MR14           EXTI_D3PMR1_MR14_Msk                        /*!< Pending Mask Event for line 14 */\n#define EXTI_D3PMR1_MR15_Pos       (15U)\n#define EXTI_D3PMR1_MR15_Msk       (0x1UL << EXTI_D3PMR1_MR15_Pos)             /*!< 0x00008000 */\n#define EXTI_D3PMR1_MR15           EXTI_D3PMR1_MR15_Msk                        /*!< Pending Mask Event for line 15 */\n#define EXTI_D3PMR1_MR19_Pos       (19U)\n#define EXTI_D3PMR1_MR19_Msk       (0x1UL << EXTI_D3PMR1_MR19_Pos)             /*!< 0x00080000 */\n#define EXTI_D3PMR1_MR19           EXTI_D3PMR1_MR19_Msk                        /*!< Pending Mask Event for line 19 */\n#define EXTI_D3PMR1_MR20_Pos       (20U)\n#define EXTI_D3PMR1_MR20_Msk       (0x1UL << EXTI_D3PMR1_MR20_Pos)             /*!< 0x00100000 */\n#define EXTI_D3PMR1_MR20           EXTI_D3PMR1_MR20_Msk                        /*!< Pending Mask Event for line 20 */\n#define EXTI_D3PMR1_MR21_Pos       (21U)\n#define EXTI_D3PMR1_MR21_Msk       (0x1UL << EXTI_D3PMR1_MR21_Pos)             /*!< 0x00200000 */\n#define EXTI_D3PMR1_MR21           EXTI_D3PMR1_MR21_Msk                        /*!< Pending Mask Event for line 21 */\n#define EXTI_D3PMR1_MR25_Pos       (24U)\n#define EXTI_D3PMR1_MR25_Msk       (0x1UL << EXTI_D3PMR1_MR25_Pos)             /*!< 0x01000000 */\n#define EXTI_D3PMR1_MR25           EXTI_D3PMR1_MR25_Msk                        /*!< Pending Mask Event for line 25 */\n\n/*******************  Bit definition for EXTI_D3PCR1L register  ****************/\n#define EXTI_D3PCR1L_PCS0_Pos       (0U)\n#define EXTI_D3PCR1L_PCS0_Msk       (0x3UL << EXTI_D3PCR1L_PCS0_Pos)           /*!< 0x00000003 */\n#define EXTI_D3PCR1L_PCS0           EXTI_D3PCR1L_PCS0_Msk                      /*!< D3 Pending request clear input signal selection on line 0 */\n#define EXTI_D3PCR1L_PCS1_Pos       (2U)\n#define EXTI_D3PCR1L_PCS1_Msk       (0x3UL << EXTI_D3PCR1L_PCS1_Pos)           /*!< 0x000000C0 */\n#define EXTI_D3PCR1L_PCS1           EXTI_D3PCR1L_PCS1_Msk                      /*!< D3 Pending request clear input signal selection on line 1 */\n#define EXTI_D3PCR1L_PCS2_Pos       (4U)\n#define EXTI_D3PCR1L_PCS2_Msk       (0x3UL << EXTI_D3PCR1L_PCS2_Pos)           /*!< 0x00000030 */\n#define EXTI_D3PCR1L_PCS2           EXTI_D3PCR1L_PCS2_Msk                      /*!< D3 Pending request clear input signal selection on line 2 */\n#define EXTI_D3PCR1L_PCS3_Pos       (6U)\n#define EXTI_D3PCR1L_PCS3_Msk       (0x3UL << EXTI_D3PCR1L_PCS3_Pos)           /*!< 0x000000C0 */\n#define EXTI_D3PCR1L_PCS3           EXTI_D3PCR1L_PCS3_Msk                      /*!< D3 Pending request clear input signal selection on line 3 */\n#define EXTI_D3PCR1L_PCS4_Pos       (8U)\n#define EXTI_D3PCR1L_PCS4_Msk       (0x3UL << EXTI_D3PCR1L_PCS4_Pos)           /*!< 0x00000300 */\n#define EXTI_D3PCR1L_PCS4           EXTI_D3PCR1L_PCS4_Msk                      /*!< D3 Pending request clear input signal selection on line 4 */\n#define EXTI_D3PCR1L_PCS5_Pos       (10U)\n#define EXTI_D3PCR1L_PCS5_Msk       (0x3UL << EXTI_D3PCR1L_PCS5_Pos)           /*!< 0x00000C00 */\n#define EXTI_D3PCR1L_PCS5           EXTI_D3PCR1L_PCS5_Msk                      /*!< D3 Pending request clear input signal selection on line 5 */\n#define EXTI_D3PCR1L_PCS6_Pos       (12U)\n#define EXTI_D3PCR1L_PCS6_Msk       (0x3UL << EXTI_D3PCR1L_PCS6_Pos)           /*!< 0x00003000 */\n#define EXTI_D3PCR1L_PCS6           EXTI_D3PCR1L_PCS6_Msk                      /*!< D3 Pending request clear input signal selection on line 6 */\n#define EXTI_D3PCR1L_PCS7_Pos       (14U)\n#define EXTI_D3PCR1L_PCS7_Msk       (0x3UL << EXTI_D3PCR1L_PCS7_Pos)           /*!< 0x0000C000 */\n#define EXTI_D3PCR1L_PCS7           EXTI_D3PCR1L_PCS7_Msk                      /*!< D3 Pending request clear input signal selection on line 7 */\n#define EXTI_D3PCR1L_PCS8_Pos       (16U)\n#define EXTI_D3PCR1L_PCS8_Msk       (0x3UL << EXTI_D3PCR1L_PCS8_Pos)           /*!< 0x00030000 */\n#define EXTI_D3PCR1L_PCS8           EXTI_D3PCR1L_PCS8_Msk                      /*!< D3 Pending request clear input signal selection on line 8 */\n#define EXTI_D3PCR1L_PCS9_Pos       (18U)\n#define EXTI_D3PCR1L_PCS9_Msk       (0x3UL << EXTI_D3PCR1L_PCS9_Pos)           /*!< 0x000C0000 */\n#define EXTI_D3PCR1L_PCS9           EXTI_D3PCR1L_PCS9_Msk                      /*!< D3 Pending request clear input signal selection on line 9 */\n#define EXTI_D3PCR1L_PCS10_Pos      (20U)\n#define EXTI_D3PCR1L_PCS10_Msk      (0x3UL << EXTI_D3PCR1L_PCS10_Pos)          /*!< 0x00300000 */\n#define EXTI_D3PCR1L_PCS10          EXTI_D3PCR1L_PCS10_Msk                     /*!< D3 Pending request clear input signal selection on line 10*/\n#define EXTI_D3PCR1L_PCS11_Pos      (22U)\n#define EXTI_D3PCR1L_PCS11_Msk      (0x3UL << EXTI_D3PCR1L_PCS11_Pos)          /*!< 0x00C00000 */\n#define EXTI_D3PCR1L_PCS11          EXTI_D3PCR1L_PCS11_Msk                     /*!< D3 Pending request clear input signal selection on line 11*/\n#define EXTI_D3PCR1L_PCS12_Pos      (24U)\n#define EXTI_D3PCR1L_PCS12_Msk      (0x3UL << EXTI_D3PCR1L_PCS12_Pos)          /*!< 0x03000000 */\n#define EXTI_D3PCR1L_PCS12          EXTI_D3PCR1L_PCS12_Msk                     /*!< D3 Pending request clear input signal selection on line 12*/\n#define EXTI_D3PCR1L_PCS13_Pos      (26U)\n#define EXTI_D3PCR1L_PCS13_Msk      (0x3UL << EXTI_D3PCR1L_PCS13_Pos)          /*!< 0x0C000000 */\n#define EXTI_D3PCR1L_PCS13          EXTI_D3PCR1L_PCS13_Msk                     /*!< D3 Pending request clear input signal selection on line 13*/\n#define EXTI_D3PCR1L_PCS14_Pos      (28U)\n#define EXTI_D3PCR1L_PCS14_Msk      (0x3UL << EXTI_D3PCR1L_PCS14_Pos)          /*!< 0x30000000 */\n#define EXTI_D3PCR1L_PCS14          EXTI_D3PCR1L_PCS14_Msk                     /*!< D3 Pending request clear input signal selection on line 14*/\n#define EXTI_D3PCR1L_PCS15_Pos      (30U)\n#define EXTI_D3PCR1L_PCS15_Msk      (0x3UL << EXTI_D3PCR1L_PCS15_Pos)          /*!< 0xC0000000 */\n#define EXTI_D3PCR1L_PCS15          EXTI_D3PCR1L_PCS15_Msk                     /*!< D3 Pending request clear input signal selection on line 15*/\n\n/*******************  Bit definition for EXTI_D3PCR1H register  ****************/\n#define EXTI_D3PCR1H_PCS19_Pos       (6U)\n#define EXTI_D3PCR1H_PCS19_Msk       (0x3UL << EXTI_D3PCR1H_PCS19_Pos)         /*!< 0x000000C0 */\n#define EXTI_D3PCR1H_PCS19           EXTI_D3PCR1H_PCS19_Msk                    /*!< D3 Pending request clear input signal selection on line 19 */\n#define EXTI_D3PCR1H_PCS20_Pos       (8U)\n#define EXTI_D3PCR1H_PCS20_Msk       (0x3UL << EXTI_D3PCR1H_PCS20_Pos)         /*!< 0x00000300 */\n#define EXTI_D3PCR1H_PCS20           EXTI_D3PCR1H_PCS20_Msk                    /*!< D3 Pending request clear input signal selection on line 20 */\n#define EXTI_D3PCR1H_PCS21_Pos       (10U)\n#define EXTI_D3PCR1H_PCS21_Msk       (0x3UL << EXTI_D3PCR1H_PCS21_Pos)         /*!< 0x00000C00 */\n#define EXTI_D3PCR1H_PCS21           EXTI_D3PCR1H_PCS21_Msk                    /*!< D3 Pending request clear input signal selection on line 21 */\n#define EXTI_D3PCR1H_PCS25_Pos       (18U)\n#define EXTI_D3PCR1H_PCS25_Msk       (0x3UL << EXTI_D3PCR1H_PCS25_Pos)         /*!< 0x000C0000 */\n#define EXTI_D3PCR1H_PCS25           EXTI_D3PCR1H_PCS25_Msk                    /*!< D3 Pending request clear input signal selection on line 25 */\n\n/******************  Bit definition for EXTI_RTSR2 register  *******************/\n#define EXTI_RTSR2_TR_Pos          (17U)\n#define EXTI_RTSR2_TR_Msk          (0x5UL << EXTI_RTSR2_TR_Pos)                /*!< 0x000A0000 */\n#define EXTI_RTSR2_TR              EXTI_RTSR2_TR_Msk                           /*!< Rising trigger event configuration bit */\n#define EXTI_RTSR2_TR49_Pos        (17U)\n#define EXTI_RTSR2_TR49_Msk        (0x1UL << EXTI_RTSR2_TR49_Pos)              /*!< 0x00020000 */\n#define EXTI_RTSR2_TR49            EXTI_RTSR2_TR49_Msk                         /*!< Rising trigger event configuration bit of line 49 */\n#define EXTI_RTSR2_TR51_Pos        (19U)\n#define EXTI_RTSR2_TR51_Msk        (0x1UL << EXTI_RTSR2_TR51_Pos)              /*!< 0x00080000 */\n#define EXTI_RTSR2_TR51            EXTI_RTSR2_TR51_Msk                         /*!< Rising trigger event configuration bit of line 51 */\n\n/******************  Bit definition for EXTI_FTSR2 register  *******************/\n#define EXTI_FTSR2_TR_Pos          (17U)\n#define EXTI_FTSR2_TR_Msk          (0x5UL << EXTI_FTSR2_TR_Pos)                /*!< 0x000A0000 */\n#define EXTI_FTSR2_TR              EXTI_FTSR2_TR_Msk                           /*!< Falling trigger event configuration bit */\n#define EXTI_FTSR2_TR49_Pos        (17U)\n#define EXTI_FTSR2_TR49_Msk        (0x1UL << EXTI_FTSR2_TR49_Pos)              /*!< 0x00020000 */\n#define EXTI_FTSR2_TR49            EXTI_FTSR2_TR49_Msk                         /*!< Falling trigger event configuration bit of line 49 */\n#define EXTI_FTSR2_TR51_Pos        (19U)\n#define EXTI_FTSR2_TR51_Msk        (0x1UL << EXTI_FTSR2_TR51_Pos)              /*!< 0x00080000 */\n#define EXTI_FTSR2_TR51            EXTI_FTSR2_TR51_Msk                         /*!< Falling trigger event configuration bit of line 51 */\n\n/******************  Bit definition for EXTI_SWIER2 register  ******************/\n#define EXTI_SWIER2_SWIER49_Pos    (17U)\n#define EXTI_SWIER2_SWIER49_Msk    (0x1UL << EXTI_SWIER2_SWIER49_Pos)          /*!< 0x00020000 */\n#define EXTI_SWIER2_SWIER49        EXTI_SWIER2_SWIER49_Msk                     /*!< Software Interrupt on line 49 */\n#define EXTI_SWIER2_SWIER51_Pos    (19U)\n#define EXTI_SWIER2_SWIER51_Msk    (0x1UL << EXTI_SWIER2_SWIER51_Pos)          /*!< 0x00080000 */\n#define EXTI_SWIER2_SWIER51        EXTI_SWIER2_SWIER51_Msk                     /*!< Software Interrupt on line 51 */\n\n/******************  Bit definition for EXTI_D3PMR2 register  ******************/\n#define EXTI_D3PMR2_MR34_Pos       (2U)\n#define EXTI_D3PMR2_MR34_Msk       (0x1UL << EXTI_D3PMR2_MR34_Pos)             /*!< 0x00000004 */\n#define EXTI_D3PMR2_MR34           EXTI_D3PMR2_MR34_Msk                        /*!< Pending Mask Event for line 34  */\n#define EXTI_D3PMR2_MR35_Pos       (3U)\n#define EXTI_D3PMR2_MR35_Msk       (0x1UL << EXTI_D3PMR2_MR35_Pos)             /*!< 0x00000008 */\n#define EXTI_D3PMR2_MR35           EXTI_D3PMR2_MR35_Msk                        /*!< Pending Mask Event for line 35  */\n#define EXTI_D3PMR2_MR41_Pos       (9U)\n#define EXTI_D3PMR2_MR41_Msk       (0x1UL << EXTI_D3PMR2_MR41_Pos)             /*!< 0x00000200 */\n#define EXTI_D3PMR2_MR41           EXTI_D3PMR2_MR41_Msk                        /*!< Pending Mask Event for line 41  */\n#define EXTI_D3PMR2_MR48_Pos       (16U)\n#define EXTI_D3PMR2_MR48_Msk       (0x1UL << EXTI_D3PMR2_MR48_Pos)             /*!< 0x00010000 */\n#define EXTI_D3PMR2_MR48           EXTI_D3PMR2_MR48_Msk                        /*!< Pending Mask Event for line 48  */\n#define EXTI_D3PMR2_MR49_Pos       (17U)\n#define EXTI_D3PMR2_MR49_Msk       (0x1UL << EXTI_D3PMR2_MR49_Pos)             /*!< 0x00020000 */\n#define EXTI_D3PMR2_MR49           EXTI_D3PMR2_MR49_Msk                        /*!< Pending Mask Event for line 49  */\n#define EXTI_D3PMR2_MR50_Pos       (18U)\n#define EXTI_D3PMR2_MR50_Msk       (0x1UL << EXTI_D3PMR2_MR50_Pos)             /*!< 0x00040000 */\n#define EXTI_D3PMR2_MR50           EXTI_D3PMR2_MR50_Msk                        /*!< Pending Mask Event for line 50  */\n#define EXTI_D3PMR2_MR51_Pos       (19U)\n#define EXTI_D3PMR2_MR51_Msk       (0x1UL << EXTI_D3PMR2_MR51_Pos)             /*!< 0x00080000 */\n#define EXTI_D3PMR2_MR51           EXTI_D3PMR2_MR51_Msk                        /*!< Pending Mask Event for line 51  */\n#define EXTI_D3PMR2_MR52_Pos       (20U)\n#define EXTI_D3PMR2_MR52_Msk       (0x1UL << EXTI_D3PMR2_MR52_Pos)             /*!< 0x00100000 */\n#define EXTI_D3PMR2_MR52           EXTI_D3PMR2_MR52_Msk                        /*!< Pending Mask Event for line 52  */\n#define EXTI_D3PMR2_MR53_Pos       (21U)\n#define EXTI_D3PMR2_MR53_Msk       (0x1UL << EXTI_D3PMR2_MR53_Pos)             /*!< 0x00200000 */\n#define EXTI_D3PMR2_MR53           EXTI_D3PMR2_MR53_Msk                        /*!< Pending Mask Event for line 53  */\n/*******************  Bit definition for EXTI_D3PCR2L register  ****************/\n#define EXTI_D3PCR2L_PCS34_Pos       (4U)\n#define EXTI_D3PCR2L_PCS34_Msk       (0x3UL << EXTI_D3PCR2L_PCS34_Pos)         /*!< 0x00000030 */\n#define EXTI_D3PCR2L_PCS34           EXTI_D3PCR2L_PCS34_Msk                    /*!< D3 Pending request clear input signal selection on line 34 */\n#define EXTI_D3PCR2L_PCS35_Pos       (6U)\n#define EXTI_D3PCR2L_PCS35_Msk       (0x3UL << EXTI_D3PCR2L_PCS35_Pos)         /*!< 0x000000C0 */\n#define EXTI_D3PCR2L_PCS35           EXTI_D3PCR2L_PCS35_Msk                    /*!< D3 Pending request clear input signal selection on line 35 */\n#define EXTI_D3PCR2L_PCS41_Pos       (18U)\n#define EXTI_D3PCR2L_PCS41_Msk       (0x3UL << EXTI_D3PCR2L_PCS41_Pos)         /*!< 0x000C0000 */\n#define EXTI_D3PCR2L_PCS41           EXTI_D3PCR2L_PCS41_Msk                    /*!< D3 Pending request clear input signal selection on line 41 */\n\n\n/*******************  Bit definition for EXTI_D3PCR2H register  ****************/\n#define EXTI_D3PCR2H_PCS48_Pos       (0U)\n#define EXTI_D3PCR2H_PCS48_Msk       (0x3UL << EXTI_D3PCR2H_PCS48_Pos)         /*!< 0x00000003 */\n#define EXTI_D3PCR2H_PCS48           EXTI_D3PCR2H_PCS48_Msk                    /*!< D3 Pending request clear input signal selection on line 48 */\n#define EXTI_D3PCR2H_PCS49_Pos       (2U)\n#define EXTI_D3PCR2H_PCS49_Msk       (0x3UL << EXTI_D3PCR2H_PCS49_Pos)         /*!< 0x0000000C */\n#define EXTI_D3PCR2H_PCS49           EXTI_D3PCR2H_PCS49_Msk                    /*!< D3 Pending request clear input signal selection on line 49 */\n#define EXTI_D3PCR2H_PCS50_Pos       (4U)\n#define EXTI_D3PCR2H_PCS50_Msk       (0x3UL << EXTI_D3PCR2H_PCS50_Pos)         /*!< 0x00000030 */\n#define EXTI_D3PCR2H_PCS50           EXTI_D3PCR2H_PCS50_Msk                    /*!< D3 Pending request clear input signal selection on line 50 */\n#define EXTI_D3PCR2H_PCS51_Pos       (6U)\n#define EXTI_D3PCR2H_PCS51_Msk       (0x3UL << EXTI_D3PCR2H_PCS51_Pos)         /*!< 0x000000C0 */\n#define EXTI_D3PCR2H_PCS51           EXTI_D3PCR2H_PCS51_Msk                    /*!< D3 Pending request clear input signal selection on line 51 */\n#define EXTI_D3PCR2H_PCS52_Pos       (8U)\n#define EXTI_D3PCR2H_PCS52_Msk       (0x3UL << EXTI_D3PCR2H_PCS52_Pos)         /*!< 0x00000300 */\n#define EXTI_D3PCR2H_PCS52           EXTI_D3PCR2H_PCS52_Msk                    /*!< D3 Pending request clear input signal selection on line 52 */\n#define EXTI_D3PCR2H_PCS53_Pos       (10U)\n#define EXTI_D3PCR2H_PCS53_Msk       (0x3UL << EXTI_D3PCR2H_PCS53_Pos)         /*!< 0x00000C00 */\n#define EXTI_D3PCR2H_PCS53           EXTI_D3PCR2H_PCS53_Msk                    /*!< D3 Pending request clear input signal selection on line 53 */\n/******************  Bit definition for EXTI_RTSR3 register  *******************/\n#define EXTI_RTSR3_TR_Pos          (18U)\n#define EXTI_RTSR3_TR_Msk          (0x1DUL << EXTI_RTSR3_TR_Pos)               /*!< 0x00740000 */\n#define EXTI_RTSR3_TR              EXTI_RTSR3_TR_Msk                           /*!< Rising trigger event configuration bit */\n#define EXTI_RTSR3_TR82_Pos        (18U)\n#define EXTI_RTSR3_TR82_Msk        (0x1UL << EXTI_RTSR3_TR82_Pos)              /*!< 0x00040000 */\n#define EXTI_RTSR3_TR82            EXTI_RTSR3_TR82_Msk                         /*!< Rising trigger event configuration bit of line 82 */\n#define EXTI_RTSR3_TR84_Pos        (20U)\n#define EXTI_RTSR3_TR84_Msk        (0x1UL << EXTI_RTSR3_TR84_Pos)              /*!< 0x00100000 */\n#define EXTI_RTSR3_TR84            EXTI_RTSR3_TR84_Msk                         /*!< Rising trigger event configuration bit of line 84 */\n#define EXTI_RTSR3_TR85_Pos        (21U)\n#define EXTI_RTSR3_TR85_Msk        (0x1UL << EXTI_RTSR3_TR85_Pos)              /*!< 0x00200000 */\n#define EXTI_RTSR3_TR85            EXTI_RTSR3_TR85_Msk                         /*!< Rising trigger event configuration bit of line 85 */\n#define EXTI_RTSR3_TR86_Pos        (22U)\n#define EXTI_RTSR3_TR86_Msk        (0x1UL << EXTI_RTSR3_TR86_Pos)              /*!< 0x00400000 */\n#define EXTI_RTSR3_TR86            EXTI_RTSR3_TR86_Msk                         /*!< Rising trigger event configuration bit of line 86 */\n\n/******************  Bit definition for EXTI_FTSR3 register  *******************/\n#define EXTI_FTSR3_TR_Pos          (18U)\n#define EXTI_FTSR3_TR_Msk          (0x1DUL << EXTI_FTSR3_TR_Pos)               /*!< 0x00740000 */\n#define EXTI_FTSR3_TR              EXTI_FTSR3_TR_Msk                           /*!< Falling trigger event configuration bit */\n#define EXTI_FTSR3_TR82_Pos        (18U)\n#define EXTI_FTSR3_TR82_Msk        (0x1UL << EXTI_FTSR3_TR82_Pos)              /*!< 0x00040000 */\n#define EXTI_FTSR3_TR82            EXTI_FTSR3_TR82_Msk                         /*!< Falling trigger event configuration bit of line 82 */\n#define EXTI_FTSR3_TR84_Pos        (20U)\n#define EXTI_FTSR3_TR84_Msk        (0x1UL << EXTI_FTSR3_TR84_Pos)              /*!< 0x00100000 */\n#define EXTI_FTSR3_TR84            EXTI_FTSR3_TR84_Msk                         /*!< Falling trigger event configuration bit of line 84 */\n#define EXTI_FTSR3_TR85_Pos        (21U)\n#define EXTI_FTSR3_TR85_Msk        (0x1UL << EXTI_FTSR3_TR85_Pos)              /*!< 0x00200000 */\n#define EXTI_FTSR3_TR85            EXTI_FTSR3_TR85_Msk                         /*!< Falling trigger event configuration bit of line 85 */\n#define EXTI_FTSR3_TR86_Pos        (22U)\n#define EXTI_FTSR3_TR86_Msk        (0x1UL << EXTI_FTSR3_TR86_Pos)              /*!< 0x00400000 */\n#define EXTI_FTSR3_TR86            EXTI_FTSR3_TR86_Msk                         /*!< Falling trigger event configuration bit of line 86 */\n\n/******************  Bit definition for EXTI_SWIER3 register  ******************/\n#define EXTI_SWIER3_SWI_Pos        (18U)\n#define EXTI_SWIER3_SWI_Msk        (0x1DUL << EXTI_SWIER3_SWI_Pos)             /*!< 0x00740000 */\n#define EXTI_SWIER3_SWI            EXTI_SWIER3_SWI_Msk                         /*!< Software Interrupt event bit */\n#define EXTI_SWIER3_SWIER82_Pos    (18U)\n#define EXTI_SWIER3_SWIER82_Msk    (0x1UL << EXTI_SWIER3_SWIER82_Pos)          /*!< 0x00040000 */\n#define EXTI_SWIER3_SWIER82        EXTI_SWIER3_SWIER82_Msk                     /*!< Software Interrupt on line 82 */\n#define EXTI_SWIER3_SWIER84_Pos    (20U)\n#define EXTI_SWIER3_SWIER84_Msk    (0x1UL << EXTI_SWIER3_SWIER84_Pos)          /*!< 0x00100000 */\n#define EXTI_SWIER3_SWIER84        EXTI_SWIER3_SWIER84_Msk                     /*!< Software Interrupt on line 84 */\n#define EXTI_SWIER3_SWIER85_Pos    (21U)\n#define EXTI_SWIER3_SWIER85_Msk    (0x1UL << EXTI_SWIER3_SWIER85_Pos)          /*!< 0x00200000 */\n#define EXTI_SWIER3_SWIER85        EXTI_SWIER3_SWIER85_Msk                     /*!< Software Interrupt on line 85 */\n#define EXTI_SWIER3_SWIER86_Pos    (22U)\n#define EXTI_SWIER3_SWIER86_Msk    (0x1UL << EXTI_SWIER3_SWIER86_Pos)          /*!< 0x00400000 */\n#define EXTI_SWIER3_SWIER86        EXTI_SWIER3_SWIER86_Msk                     /*!< Software Interrupt on line 86 */\n\n/*******************  Bit definition for EXTI_IMR1 register  *******************/\n#define EXTI_IMR1_IM_Pos           (0U)\n#define EXTI_IMR1_IM_Msk           (0xFFFFFFFFUL << EXTI_IMR1_IM_Pos)          /*!< 0xFFFFFFFF */\n#define EXTI_IMR1_IM               EXTI_IMR1_IM_Msk                            /*!< Interrupt Mask */\n#define EXTI_IMR1_IM0_Pos          (0U)\n#define EXTI_IMR1_IM0_Msk          (0x1UL << EXTI_IMR1_IM0_Pos)                /*!< 0x00000001 */\n#define EXTI_IMR1_IM0              EXTI_IMR1_IM0_Msk                           /*!< Interrupt Mask on line 0 */\n#define EXTI_IMR1_IM1_Pos          (1U)\n#define EXTI_IMR1_IM1_Msk          (0x1UL << EXTI_IMR1_IM1_Pos)                /*!< 0x00000002 */\n#define EXTI_IMR1_IM1              EXTI_IMR1_IM1_Msk                           /*!< Interrupt Mask on line 1 */\n#define EXTI_IMR1_IM2_Pos          (2U)\n#define EXTI_IMR1_IM2_Msk          (0x1UL << EXTI_IMR1_IM2_Pos)                /*!< 0x00000004 */\n#define EXTI_IMR1_IM2              EXTI_IMR1_IM2_Msk                           /*!< Interrupt Mask on line 2 */\n#define EXTI_IMR1_IM3_Pos          (3U)\n#define EXTI_IMR1_IM3_Msk          (0x1UL << EXTI_IMR1_IM3_Pos)                /*!< 0x00000008 */\n#define EXTI_IMR1_IM3              EXTI_IMR1_IM3_Msk                           /*!< Interrupt Mask on line 3 */\n#define EXTI_IMR1_IM4_Pos          (4U)\n#define EXTI_IMR1_IM4_Msk          (0x1UL << EXTI_IMR1_IM4_Pos)                /*!< 0x00000010 */\n#define EXTI_IMR1_IM4              EXTI_IMR1_IM4_Msk                           /*!< Interrupt Mask on line 4 */\n#define EXTI_IMR1_IM5_Pos          (5U)\n#define EXTI_IMR1_IM5_Msk          (0x1UL << EXTI_IMR1_IM5_Pos)                /*!< 0x00000020 */\n#define EXTI_IMR1_IM5              EXTI_IMR1_IM5_Msk                           /*!< Interrupt Mask on line 5 */\n#define EXTI_IMR1_IM6_Pos          (6U)\n#define EXTI_IMR1_IM6_Msk          (0x1UL << EXTI_IMR1_IM6_Pos)                /*!< 0x00000040 */\n#define EXTI_IMR1_IM6              EXTI_IMR1_IM6_Msk                           /*!< Interrupt Mask on line 6 */\n#define EXTI_IMR1_IM7_Pos          (7U)\n#define EXTI_IMR1_IM7_Msk          (0x1UL << EXTI_IMR1_IM7_Pos)                /*!< 0x00000080 */\n#define EXTI_IMR1_IM7              EXTI_IMR1_IM7_Msk                           /*!< Interrupt Mask on line 7 */\n#define EXTI_IMR1_IM8_Pos          (8U)\n#define EXTI_IMR1_IM8_Msk          (0x1UL << EXTI_IMR1_IM8_Pos)                /*!< 0x00000100 */\n#define EXTI_IMR1_IM8              EXTI_IMR1_IM8_Msk                           /*!< Interrupt Mask on line 8 */\n#define EXTI_IMR1_IM9_Pos          (9U)\n#define EXTI_IMR1_IM9_Msk          (0x1UL << EXTI_IMR1_IM9_Pos)                /*!< 0x00000200 */\n#define EXTI_IMR1_IM9              EXTI_IMR1_IM9_Msk                           /*!< Interrupt Mask on line 9 */\n#define EXTI_IMR1_IM10_Pos         (10U)\n#define EXTI_IMR1_IM10_Msk         (0x1UL << EXTI_IMR1_IM10_Pos)               /*!< 0x00000400 */\n#define EXTI_IMR1_IM10             EXTI_IMR1_IM10_Msk                          /*!< Interrupt Mask on line 10 */\n#define EXTI_IMR1_IM11_Pos         (11U)\n#define EXTI_IMR1_IM11_Msk         (0x1UL << EXTI_IMR1_IM11_Pos)               /*!< 0x00000800 */\n#define EXTI_IMR1_IM11             EXTI_IMR1_IM11_Msk                          /*!< Interrupt Mask on line 11 */\n#define EXTI_IMR1_IM12_Pos         (12U)\n#define EXTI_IMR1_IM12_Msk         (0x1UL << EXTI_IMR1_IM12_Pos)               /*!< 0x00001000 */\n#define EXTI_IMR1_IM12             EXTI_IMR1_IM12_Msk                          /*!< Interrupt Mask on line 12 */\n#define EXTI_IMR1_IM13_Pos         (13U)\n#define EXTI_IMR1_IM13_Msk         (0x1UL << EXTI_IMR1_IM13_Pos)               /*!< 0x00002000 */\n#define EXTI_IMR1_IM13             EXTI_IMR1_IM13_Msk                          /*!< Interrupt Mask on line 13 */\n#define EXTI_IMR1_IM14_Pos         (14U)\n#define EXTI_IMR1_IM14_Msk         (0x1UL << EXTI_IMR1_IM14_Pos)               /*!< 0x00004000 */\n#define EXTI_IMR1_IM14             EXTI_IMR1_IM14_Msk                          /*!< Interrupt Mask on line 14 */\n#define EXTI_IMR1_IM15_Pos         (15U)\n#define EXTI_IMR1_IM15_Msk         (0x1UL << EXTI_IMR1_IM15_Pos)               /*!< 0x00008000 */\n#define EXTI_IMR1_IM15             EXTI_IMR1_IM15_Msk                          /*!< Interrupt Mask on line 15 */\n#define EXTI_IMR1_IM16_Pos         (16U)\n#define EXTI_IMR1_IM16_Msk         (0x1UL << EXTI_IMR1_IM16_Pos)               /*!< 0x00010000 */\n#define EXTI_IMR1_IM16             EXTI_IMR1_IM16_Msk                          /*!< Interrupt Mask on line 16 */\n#define EXTI_IMR1_IM17_Pos         (17U)\n#define EXTI_IMR1_IM17_Msk         (0x1UL << EXTI_IMR1_IM17_Pos)               /*!< 0x00020000 */\n#define EXTI_IMR1_IM17             EXTI_IMR1_IM17_Msk                          /*!< Interrupt Mask on line 17 */\n#define EXTI_IMR1_IM18_Pos         (18U)\n#define EXTI_IMR1_IM18_Msk         (0x1UL << EXTI_IMR1_IM18_Pos)               /*!< 0x00040000 */\n#define EXTI_IMR1_IM18             EXTI_IMR1_IM18_Msk                          /*!< Interrupt Mask on line 18 */\n#define EXTI_IMR1_IM19_Pos         (19U)\n#define EXTI_IMR1_IM19_Msk         (0x1UL << EXTI_IMR1_IM19_Pos)               /*!< 0x00080000 */\n#define EXTI_IMR1_IM19             EXTI_IMR1_IM19_Msk                          /*!< Interrupt Mask on line 19 */\n#define EXTI_IMR1_IM20_Pos         (20U)\n#define EXTI_IMR1_IM20_Msk         (0x1UL << EXTI_IMR1_IM20_Pos)               /*!< 0x00100000 */\n#define EXTI_IMR1_IM20             EXTI_IMR1_IM20_Msk                          /*!< Interrupt Mask on line 20 */\n#define EXTI_IMR1_IM21_Pos         (21U)\n#define EXTI_IMR1_IM21_Msk         (0x1UL << EXTI_IMR1_IM21_Pos)               /*!< 0x00200000 */\n#define EXTI_IMR1_IM21             EXTI_IMR1_IM21_Msk                          /*!< Interrupt Mask on line 21 */\n#define EXTI_IMR1_IM22_Pos         (22U)\n#define EXTI_IMR1_IM22_Msk         (0x1UL << EXTI_IMR1_IM22_Pos)               /*!< 0x00400000 */\n#define EXTI_IMR1_IM22             EXTI_IMR1_IM22_Msk                          /*!< Interrupt Mask on line 22 */\n#define EXTI_IMR1_IM23_Pos         (23U)\n#define EXTI_IMR1_IM23_Msk         (0x1UL << EXTI_IMR1_IM23_Pos)               /*!< 0x00800000 */\n#define EXTI_IMR1_IM23             EXTI_IMR1_IM23_Msk                          /*!< Interrupt Mask on line 23 */\n#define EXTI_IMR1_IM24_Pos         (24U)\n#define EXTI_IMR1_IM24_Msk         (0x1UL << EXTI_IMR1_IM24_Pos)               /*!< 0x01000000 */\n#define EXTI_IMR1_IM24             EXTI_IMR1_IM24_Msk                          /*!< Interrupt Mask on line 24 */\n#define EXTI_IMR1_IM25_Pos         (25U)\n#define EXTI_IMR1_IM25_Msk         (0x1UL << EXTI_IMR1_IM25_Pos)               /*!< 0x02000000 */\n#define EXTI_IMR1_IM25             EXTI_IMR1_IM25_Msk                          /*!< Interrupt Mask on line 25 */\n#define EXTI_IMR1_IM26_Pos         (26U)\n#define EXTI_IMR1_IM26_Msk         (0x1UL << EXTI_IMR1_IM26_Pos)               /*!< 0x04000000 */\n#define EXTI_IMR1_IM26             EXTI_IMR1_IM26_Msk                          /*!< Interrupt Mask on line 26 */\n#define EXTI_IMR1_IM27_Pos         (27U)\n#define EXTI_IMR1_IM27_Msk         (0x1UL << EXTI_IMR1_IM27_Pos)               /*!< 0x08000000 */\n#define EXTI_IMR1_IM27             EXTI_IMR1_IM27_Msk                          /*!< Interrupt Mask on line 27 */\n#define EXTI_IMR1_IM28_Pos         (28U)\n#define EXTI_IMR1_IM28_Msk         (0x1UL << EXTI_IMR1_IM28_Pos)               /*!< 0x10000000 */\n#define EXTI_IMR1_IM28             EXTI_IMR1_IM28_Msk                          /*!< Interrupt Mask on line 28 */\n#define EXTI_IMR1_IM29_Pos         (29U)\n#define EXTI_IMR1_IM29_Msk         (0x1UL << EXTI_IMR1_IM29_Pos)               /*!< 0x20000000 */\n#define EXTI_IMR1_IM29             EXTI_IMR1_IM29_Msk                          /*!< Interrupt Mask on line 29 */\n#define EXTI_IMR1_IM30_Pos         (30U)\n#define EXTI_IMR1_IM30_Msk         (0x1UL << EXTI_IMR1_IM30_Pos)               /*!< 0x40000000 */\n#define EXTI_IMR1_IM30             EXTI_IMR1_IM30_Msk                          /*!< Interrupt Mask on line 30 */\n#define EXTI_IMR1_IM31_Pos         (31U)\n#define EXTI_IMR1_IM31_Msk         (0x1UL << EXTI_IMR1_IM31_Pos)               /*!< 0x80000000 */\n#define EXTI_IMR1_IM31             EXTI_IMR1_IM31_Msk                          /*!< Interrupt Mask on line 31 */\n\n/*******************  Bit definition for EXTI_EMR1 register  *******************/\n#define EXTI_EMR1_EM_Pos           (0U)\n#define EXTI_EMR1_EM_Msk           (0xFFFFFFFFUL << EXTI_EMR1_EM_Pos)          /*!< 0xFFFFFFFF */\n#define EXTI_EMR1_EM               EXTI_EMR1_EM_Msk                            /*!< Event Mask */\n#define EXTI_EMR1_EM0_Pos          (0U)\n#define EXTI_EMR1_EM0_Msk          (0x1UL << EXTI_EMR1_EM0_Pos)                /*!< 0x00000001 */\n#define EXTI_EMR1_EM0              EXTI_EMR1_EM0_Msk                           /*!< Event Mask on line 0 */\n#define EXTI_EMR1_EM1_Pos          (1U)\n#define EXTI_EMR1_EM1_Msk          (0x1UL << EXTI_EMR1_EM1_Pos)                /*!< 0x00000002 */\n#define EXTI_EMR1_EM1              EXTI_EMR1_EM1_Msk                           /*!< Event Mask on line 1 */\n#define EXTI_EMR1_EM2_Pos          (2U)\n#define EXTI_EMR1_EM2_Msk          (0x1UL << EXTI_EMR1_EM2_Pos)                /*!< 0x00000004 */\n#define EXTI_EMR1_EM2              EXTI_EMR1_EM2_Msk                           /*!< Event Mask on line 2 */\n#define EXTI_EMR1_EM3_Pos          (3U)\n#define EXTI_EMR1_EM3_Msk          (0x1UL << EXTI_EMR1_EM3_Pos)                /*!< 0x00000008 */\n#define EXTI_EMR1_EM3              EXTI_EMR1_EM3_Msk                           /*!< Event Mask on line 3 */\n#define EXTI_EMR1_EM4_Pos          (4U)\n#define EXTI_EMR1_EM4_Msk          (0x1UL << EXTI_EMR1_EM4_Pos)                /*!< 0x00000010 */\n#define EXTI_EMR1_EM4              EXTI_EMR1_EM4_Msk                           /*!< Event Mask on line 4 */\n#define EXTI_EMR1_EM5_Pos          (5U)\n#define EXTI_EMR1_EM5_Msk          (0x1UL << EXTI_EMR1_EM5_Pos)                /*!< 0x00000020 */\n#define EXTI_EMR1_EM5              EXTI_EMR1_EM5_Msk                           /*!< Event Mask on line 5 */\n#define EXTI_EMR1_EM6_Pos          (6U)\n#define EXTI_EMR1_EM6_Msk          (0x1UL << EXTI_EMR1_EM6_Pos)                /*!< 0x00000040 */\n#define EXTI_EMR1_EM6              EXTI_EMR1_EM6_Msk                           /*!< Event Mask on line 6 */\n#define EXTI_EMR1_EM7_Pos          (7U)\n#define EXTI_EMR1_EM7_Msk          (0x1UL << EXTI_EMR1_EM7_Pos)                /*!< 0x00000080 */\n#define EXTI_EMR1_EM7              EXTI_EMR1_EM7_Msk                           /*!< Event Mask on line 7 */\n#define EXTI_EMR1_EM8_Pos          (8U)\n#define EXTI_EMR1_EM8_Msk          (0x1UL << EXTI_EMR1_EM8_Pos)                /*!< 0x00000100 */\n#define EXTI_EMR1_EM8              EXTI_EMR1_EM8_Msk                           /*!< Event Mask on line 8 */\n#define EXTI_EMR1_EM9_Pos          (9U)\n#define EXTI_EMR1_EM9_Msk          (0x1UL << EXTI_EMR1_EM9_Pos)                /*!< 0x00000200 */\n#define EXTI_EMR1_EM9              EXTI_EMR1_EM9_Msk                           /*!< Event Mask on line 9 */\n#define EXTI_EMR1_EM10_Pos         (10U)\n#define EXTI_EMR1_EM10_Msk         (0x1UL << EXTI_EMR1_EM10_Pos)               /*!< 0x00000400 */\n#define EXTI_EMR1_EM10             EXTI_EMR1_EM10_Msk                          /*!< Event Mask on line 10 */\n#define EXTI_EMR1_EM11_Pos         (11U)\n#define EXTI_EMR1_EM11_Msk         (0x1UL << EXTI_EMR1_EM11_Pos)               /*!< 0x00000800 */\n#define EXTI_EMR1_EM11             EXTI_EMR1_EM11_Msk                          /*!< Event Mask on line 11 */\n#define EXTI_EMR1_EM12_Pos         (12U)\n#define EXTI_EMR1_EM12_Msk         (0x1UL << EXTI_EMR1_EM12_Pos)               /*!< 0x00001000 */\n#define EXTI_EMR1_EM12             EXTI_EMR1_EM12_Msk                          /*!< Event Mask on line 12 */\n#define EXTI_EMR1_EM13_Pos         (13U)\n#define EXTI_EMR1_EM13_Msk         (0x1UL << EXTI_EMR1_EM13_Pos)               /*!< 0x00002000 */\n#define EXTI_EMR1_EM13             EXTI_EMR1_EM13_Msk                          /*!< Event Mask on line 13 */\n#define EXTI_EMR1_EM14_Pos         (14U)\n#define EXTI_EMR1_EM14_Msk         (0x1UL << EXTI_EMR1_EM14_Pos)               /*!< 0x00004000 */\n#define EXTI_EMR1_EM14             EXTI_EMR1_EM14_Msk                          /*!< Event Mask on line 14 */\n#define EXTI_EMR1_EM15_Pos         (15U)\n#define EXTI_EMR1_EM15_Msk         (0x1UL << EXTI_EMR1_EM15_Pos)               /*!< 0x00008000 */\n#define EXTI_EMR1_EM15             EXTI_EMR1_EM15_Msk                          /*!< Event Mask on line 15 */\n#define EXTI_EMR1_EM16_Pos         (16U)\n#define EXTI_EMR1_EM16_Msk         (0x1UL << EXTI_EMR1_EM16_Pos)               /*!< 0x00010000 */\n#define EXTI_EMR1_EM16             EXTI_EMR1_EM16_Msk                          /*!< Event Mask on line 16 */\n#define EXTI_EMR1_EM17_Pos         (17U)\n#define EXTI_EMR1_EM17_Msk         (0x1UL << EXTI_EMR1_EM17_Pos)               /*!< 0x00020000 */\n#define EXTI_EMR1_EM17             EXTI_EMR1_EM17_Msk                          /*!< Event Mask on line 17 */\n#define EXTI_EMR1_EM18_Pos         (18U)\n#define EXTI_EMR1_EM18_Msk         (0x1UL << EXTI_EMR1_EM18_Pos)               /*!< 0x00040000 */\n#define EXTI_EMR1_EM18             EXTI_EMR1_EM18_Msk                          /*!< Event Mask on line 18 */\n#define EXTI_EMR1_EM20_Pos         (20U)\n#define EXTI_EMR1_EM20_Msk         (0x1UL << EXTI_EMR1_EM20_Pos)               /*!< 0x00100000 */\n#define EXTI_EMR1_EM20             EXTI_EMR1_EM20_Msk                          /*!< Event Mask on line 20 */\n#define EXTI_EMR1_EM21_Pos         (21U)\n#define EXTI_EMR1_EM21_Msk         (0x1UL << EXTI_EMR1_EM21_Pos)               /*!< 0x00200000 */\n#define EXTI_EMR1_EM21             EXTI_EMR1_EM21_Msk                          /*!< Event Mask on line 21 */\n#define EXTI_EMR1_EM22_Pos         (22U)\n#define EXTI_EMR1_EM22_Msk         (0x1UL << EXTI_EMR1_EM22_Pos)               /*!< 0x00400000 */\n#define EXTI_EMR1_EM22             EXTI_EMR1_EM22_Msk                          /*!< Event Mask on line 22 */\n#define EXTI_EMR1_EM23_Pos         (23U)\n#define EXTI_EMR1_EM23_Msk         (0x1UL << EXTI_EMR1_EM23_Pos)               /*!< 0x00800000 */\n#define EXTI_EMR1_EM23             EXTI_EMR1_EM23_Msk                          /*!< Event Mask on line 23 */\n#define EXTI_EMR1_EM24_Pos         (24U)\n#define EXTI_EMR1_EM24_Msk         (0x1UL << EXTI_EMR1_EM24_Pos)               /*!< 0x01000000 */\n#define EXTI_EMR1_EM24             EXTI_EMR1_EM24_Msk                          /*!< Event Mask on line 24 */\n#define EXTI_EMR1_EM25_Pos         (25U)\n#define EXTI_EMR1_EM25_Msk         (0x1UL << EXTI_EMR1_EM25_Pos)               /*!< 0x02000000 */\n#define EXTI_EMR1_EM25             EXTI_EMR1_EM25_Msk                          /*!< Event Mask on line 25 */\n#define EXTI_EMR1_EM26_Pos         (26U)\n#define EXTI_EMR1_EM26_Msk         (0x1UL << EXTI_EMR1_EM26_Pos)               /*!< 0x04000000 */\n#define EXTI_EMR1_EM26             EXTI_EMR1_EM26_Msk                          /*!< Event Mask on line 26 */\n#define EXTI_EMR1_EM27_Pos         (27U)\n#define EXTI_EMR1_EM27_Msk         (0x1UL << EXTI_EMR1_EM27_Pos)               /*!< 0x08000000 */\n#define EXTI_EMR1_EM27             EXTI_EMR1_EM27_Msk                          /*!< Event Mask on line 27 */\n#define EXTI_EMR1_EM28_Pos         (28U)\n#define EXTI_EMR1_EM28_Msk         (0x1UL << EXTI_EMR1_EM28_Pos)               /*!< 0x10000000 */\n#define EXTI_EMR1_EM28             EXTI_EMR1_EM28_Msk                          /*!< Event Mask on line 28 */\n#define EXTI_EMR1_EM29_Pos         (29U)\n#define EXTI_EMR1_EM29_Msk         (0x1UL << EXTI_EMR1_EM29_Pos)               /*!< 0x20000000 */\n#define EXTI_EMR1_EM29             EXTI_EMR1_EM29_Msk                          /*!< Event Mask on line 29 */\n#define EXTI_EMR1_EM30_Pos         (30U)\n#define EXTI_EMR1_EM30_Msk         (0x1UL << EXTI_EMR1_EM30_Pos)               /*!< 0x40000000 */\n#define EXTI_EMR1_EM30             EXTI_EMR1_EM30_Msk                          /*!< Event Mask on line 30 */\n#define EXTI_EMR1_EM31_Pos         (31U)\n#define EXTI_EMR1_EM31_Msk         (0x1UL << EXTI_EMR1_EM31_Pos)               /*!< 0x80000000 */\n#define EXTI_EMR1_EM31             EXTI_EMR1_EM31_Msk                          /*!< Event Mask on line 31 */\n\n/*******************  Bit definition for EXTI_PR1 register  ********************/\n#define EXTI_PR1_PR_Pos            (0U)\n#define EXTI_PR1_PR_Msk            (0x3FFFFFUL << EXTI_PR1_PR_Pos)             /*!< 0x003FFFFF */\n#define EXTI_PR1_PR                EXTI_PR1_PR_Msk                             /*!< Pending bit */\n#define EXTI_PR1_PR0_Pos           (0U)\n#define EXTI_PR1_PR0_Msk           (0x1UL << EXTI_PR1_PR0_Pos)                 /*!< 0x00000001 */\n#define EXTI_PR1_PR0               EXTI_PR1_PR0_Msk                            /*!< Pending bit for line 0 */\n#define EXTI_PR1_PR1_Pos           (1U)\n#define EXTI_PR1_PR1_Msk           (0x1UL << EXTI_PR1_PR1_Pos)                 /*!< 0x00000002 */\n#define EXTI_PR1_PR1               EXTI_PR1_PR1_Msk                            /*!< Pending bit for line 1 */\n#define EXTI_PR1_PR2_Pos           (2U)\n#define EXTI_PR1_PR2_Msk           (0x1UL << EXTI_PR1_PR2_Pos)                 /*!< 0x00000004 */\n#define EXTI_PR1_PR2               EXTI_PR1_PR2_Msk                            /*!< Pending bit for line 2 */\n#define EXTI_PR1_PR3_Pos           (3U)\n#define EXTI_PR1_PR3_Msk           (0x1UL << EXTI_PR1_PR3_Pos)                 /*!< 0x00000008 */\n#define EXTI_PR1_PR3               EXTI_PR1_PR3_Msk                            /*!< Pending bit for line 3 */\n#define EXTI_PR1_PR4_Pos           (4U)\n#define EXTI_PR1_PR4_Msk           (0x1UL << EXTI_PR1_PR4_Pos)                 /*!< 0x00000010 */\n#define EXTI_PR1_PR4               EXTI_PR1_PR4_Msk                            /*!< Pending bit for line 4 */\n#define EXTI_PR1_PR5_Pos           (5U)\n#define EXTI_PR1_PR5_Msk           (0x1UL << EXTI_PR1_PR5_Pos)                 /*!< 0x00000020 */\n#define EXTI_PR1_PR5               EXTI_PR1_PR5_Msk                            /*!< Pending bit for line 5 */\n#define EXTI_PR1_PR6_Pos           (6U)\n#define EXTI_PR1_PR6_Msk           (0x1UL << EXTI_PR1_PR6_Pos)                 /*!< 0x00000040 */\n#define EXTI_PR1_PR6               EXTI_PR1_PR6_Msk                            /*!< Pending bit for line 6 */\n#define EXTI_PR1_PR7_Pos           (7U)\n#define EXTI_PR1_PR7_Msk           (0x1UL << EXTI_PR1_PR7_Pos)                 /*!< 0x00000080 */\n#define EXTI_PR1_PR7               EXTI_PR1_PR7_Msk                            /*!< Pending bit for line 7 */\n#define EXTI_PR1_PR8_Pos           (8U)\n#define EXTI_PR1_PR8_Msk           (0x1UL << EXTI_PR1_PR8_Pos)                 /*!< 0x00000100 */\n#define EXTI_PR1_PR8               EXTI_PR1_PR8_Msk                            /*!< Pending bit for line 8 */\n#define EXTI_PR1_PR9_Pos           (9U)\n#define EXTI_PR1_PR9_Msk           (0x1UL << EXTI_PR1_PR9_Pos)                 /*!< 0x00000200 */\n#define EXTI_PR1_PR9               EXTI_PR1_PR9_Msk                            /*!< Pending bit for line 9 */\n#define EXTI_PR1_PR10_Pos          (10U)\n#define EXTI_PR1_PR10_Msk          (0x1UL << EXTI_PR1_PR10_Pos)                /*!< 0x00000400 */\n#define EXTI_PR1_PR10              EXTI_PR1_PR10_Msk                           /*!< Pending bit for line 10 */\n#define EXTI_PR1_PR11_Pos          (11U)\n#define EXTI_PR1_PR11_Msk          (0x1UL << EXTI_PR1_PR11_Pos)                /*!< 0x00000800 */\n#define EXTI_PR1_PR11              EXTI_PR1_PR11_Msk                           /*!< Pending bit for line 11 */\n#define EXTI_PR1_PR12_Pos          (12U)\n#define EXTI_PR1_PR12_Msk          (0x1UL << EXTI_PR1_PR12_Pos)                /*!< 0x00001000 */\n#define EXTI_PR1_PR12              EXTI_PR1_PR12_Msk                           /*!< Pending bit for line 12 */\n#define EXTI_PR1_PR13_Pos          (13U)\n#define EXTI_PR1_PR13_Msk          (0x1UL << EXTI_PR1_PR13_Pos)                /*!< 0x00002000 */\n#define EXTI_PR1_PR13              EXTI_PR1_PR13_Msk                           /*!< Pending bit for line 13 */\n#define EXTI_PR1_PR14_Pos          (14U)\n#define EXTI_PR1_PR14_Msk          (0x1UL << EXTI_PR1_PR14_Pos)                /*!< 0x00004000 */\n#define EXTI_PR1_PR14              EXTI_PR1_PR14_Msk                           /*!< Pending bit for line 14 */\n#define EXTI_PR1_PR15_Pos          (15U)\n#define EXTI_PR1_PR15_Msk          (0x1UL << EXTI_PR1_PR15_Pos)                /*!< 0x00008000 */\n#define EXTI_PR1_PR15              EXTI_PR1_PR15_Msk                           /*!< Pending bit for line 15 */\n#define EXTI_PR1_PR16_Pos          (16U)\n#define EXTI_PR1_PR16_Msk          (0x1UL << EXTI_PR1_PR16_Pos)                /*!< 0x00010000 */\n#define EXTI_PR1_PR16              EXTI_PR1_PR16_Msk                           /*!< Pending bit for line 16 */\n#define EXTI_PR1_PR17_Pos          (17U)\n#define EXTI_PR1_PR17_Msk          (0x1UL << EXTI_PR1_PR17_Pos)                /*!< 0x00020000 */\n#define EXTI_PR1_PR17              EXTI_PR1_PR17_Msk                           /*!< Pending bit for line 17 */\n#define EXTI_PR1_PR18_Pos          (18U)\n#define EXTI_PR1_PR18_Msk          (0x1UL << EXTI_PR1_PR18_Pos)                /*!< 0x00040000 */\n#define EXTI_PR1_PR18              EXTI_PR1_PR18_Msk                           /*!< Pending bit for line 18 */\n#define EXTI_PR1_PR19_Pos          (19U)\n#define EXTI_PR1_PR19_Msk          (0x1UL << EXTI_PR1_PR19_Pos)                /*!< 0x00080000 */\n#define EXTI_PR1_PR19              EXTI_PR1_PR19_Msk                           /*!< Pending bit for line 19 */\n#define EXTI_PR1_PR20_Pos          (20U)\n#define EXTI_PR1_PR20_Msk          (0x1UL << EXTI_PR1_PR20_Pos)                /*!< 0x00100000 */\n#define EXTI_PR1_PR20              EXTI_PR1_PR20_Msk                           /*!< Pending bit for line 20 */\n#define EXTI_PR1_PR21_Pos          (21U)\n#define EXTI_PR1_PR21_Msk          (0x1UL << EXTI_PR1_PR21_Pos)                /*!< 0x00200000 */\n#define EXTI_PR1_PR21              EXTI_PR1_PR21_Msk                           /*!< Pending bit for line 21 */\n\n/*******************  Bit definition for EXTI_IMR2 register  *******************/\n#define EXTI_IMR2_IM_Pos           (0U)\n#define EXTI_IMR2_IM_Msk           (0xFFFFDFFFUL << EXTI_IMR2_IM_Pos)          /*!< 0xFFFFDFFF */\n#define EXTI_IMR2_IM               EXTI_IMR2_IM_Msk                            /*!< Interrupt Mask */\n#define EXTI_IMR2_IM32_Pos         (0U)\n#define EXTI_IMR2_IM32_Msk         (0x1UL << EXTI_IMR2_IM32_Pos)               /*!< 0x00000001 */\n#define EXTI_IMR2_IM32             EXTI_IMR2_IM32_Msk                          /*!< Interrupt Mask on line 32 */\n#define EXTI_IMR2_IM33_Pos         (1U)\n#define EXTI_IMR2_IM33_Msk         (0x1UL << EXTI_IMR2_IM33_Pos)               /*!< 0x00000002 */\n#define EXTI_IMR2_IM33             EXTI_IMR2_IM33_Msk                          /*!< Interrupt Mask on line 33 */\n#define EXTI_IMR2_IM34_Pos         (2U)\n#define EXTI_IMR2_IM34_Msk         (0x1UL << EXTI_IMR2_IM34_Pos)               /*!< 0x00000004 */\n#define EXTI_IMR2_IM34             EXTI_IMR2_IM34_Msk                          /*!< Interrupt Mask on line 34 */\n#define EXTI_IMR2_IM35_Pos         (3U)\n#define EXTI_IMR2_IM35_Msk         (0x1UL << EXTI_IMR2_IM35_Pos)               /*!< 0x00000008 */\n#define EXTI_IMR2_IM35             EXTI_IMR2_IM35_Msk                          /*!< Interrupt Mask on line 35 */\n#define EXTI_IMR2_IM36_Pos         (4U)\n#define EXTI_IMR2_IM36_Msk         (0x1UL << EXTI_IMR2_IM36_Pos)               /*!< 0x00000010 */\n#define EXTI_IMR2_IM36             EXTI_IMR2_IM36_Msk                          /*!< Interrupt Mask on line 36 */\n#define EXTI_IMR2_IM37_Pos         (5U)\n#define EXTI_IMR2_IM37_Msk         (0x1UL << EXTI_IMR2_IM37_Pos)               /*!< 0x00000020 */\n#define EXTI_IMR2_IM37             EXTI_IMR2_IM37_Msk                          /*!< Interrupt Mask on line 37 */\n#define EXTI_IMR2_IM38_Pos         (6U)\n#define EXTI_IMR2_IM38_Msk         (0x1UL << EXTI_IMR2_IM38_Pos)               /*!< 0x00000040 */\n#define EXTI_IMR2_IM38             EXTI_IMR2_IM38_Msk                          /*!< Interrupt Mask on line 38 */\n#define EXTI_IMR2_IM39_Pos         (7U)\n#define EXTI_IMR2_IM39_Msk         (0x1UL << EXTI_IMR2_IM39_Pos)               /*!< 0x00000080 */\n#define EXTI_IMR2_IM39             EXTI_IMR2_IM39_Msk                          /*!< Interrupt Mask on line 39 */\n#define EXTI_IMR2_IM40_Pos         (8U)\n#define EXTI_IMR2_IM40_Msk         (0x1UL << EXTI_IMR2_IM40_Pos)               /*!< 0x00000100 */\n#define EXTI_IMR2_IM40             EXTI_IMR2_IM40_Msk                          /*!< Interrupt Mask on line 40 */\n#define EXTI_IMR2_IM41_Pos         (9U)\n#define EXTI_IMR2_IM41_Msk         (0x1UL << EXTI_IMR2_IM41_Pos)               /*!< 0x00000200 */\n#define EXTI_IMR2_IM41             EXTI_IMR2_IM41_Msk                          /*!< Interrupt Mask on line 41 */\n#define EXTI_IMR2_IM42_Pos         (10U)\n#define EXTI_IMR2_IM42_Msk         (0x1UL << EXTI_IMR2_IM42_Pos)               /*!< 0x00000400 */\n#define EXTI_IMR2_IM42             EXTI_IMR2_IM42_Msk                          /*!< Interrupt Mask on line 42 */\n#define EXTI_IMR2_IM43_Pos         (11U)\n#define EXTI_IMR2_IM43_Msk         (0x1UL << EXTI_IMR2_IM43_Pos)               /*!< 0x00000800 */\n#define EXTI_IMR2_IM43             EXTI_IMR2_IM43_Msk                          /*!< Interrupt Mask on line 43 */\n#define EXTI_IMR2_IM44_Pos         (12U)\n#define EXTI_IMR2_IM44_Msk         (0x1UL << EXTI_IMR2_IM44_Pos)               /*!< 0x00001000 */\n#define EXTI_IMR2_IM44             EXTI_IMR2_IM44_Msk                          /*!< Interrupt Mask on line 44 */\n#define EXTI_IMR2_IM46_Pos         (14U)\n#define EXTI_IMR2_IM46_Msk         (0x1UL << EXTI_IMR2_IM46_Pos)               /*!< 0x00004000 */\n#define EXTI_IMR2_IM46             EXTI_IMR2_IM46_Msk                          /*!< Interrupt Mask on line 46 */\n#define EXTI_IMR2_IM47_Pos         (15U)\n#define EXTI_IMR2_IM47_Msk         (0x1UL << EXTI_IMR2_IM47_Pos)               /*!< 0x00008000 */\n#define EXTI_IMR2_IM47             EXTI_IMR2_IM47_Msk                          /*!< Interrupt Mask on line 47 */\n#define EXTI_IMR2_IM48_Pos         (16U)\n#define EXTI_IMR2_IM48_Msk         (0x1UL << EXTI_IMR2_IM48_Pos)               /*!< 0x00010000 */\n#define EXTI_IMR2_IM48             EXTI_IMR2_IM48_Msk                          /*!< Interrupt Mask on line 48 */\n#define EXTI_IMR2_IM49_Pos         (17U)\n#define EXTI_IMR2_IM49_Msk         (0x1UL << EXTI_IMR2_IM49_Pos)               /*!< 0x00020000 */\n#define EXTI_IMR2_IM49             EXTI_IMR2_IM49_Msk                          /*!< Interrupt Mask on line 49 */\n#define EXTI_IMR2_IM50_Pos         (18U)\n#define EXTI_IMR2_IM50_Msk         (0x1UL << EXTI_IMR2_IM50_Pos)               /*!< 0x00040000 */\n#define EXTI_IMR2_IM50             EXTI_IMR2_IM50_Msk                          /*!< Interrupt Mask on line 50 */\n#define EXTI_IMR2_IM51_Pos         (19U)\n#define EXTI_IMR2_IM51_Msk         (0x1UL << EXTI_IMR2_IM51_Pos)               /*!< 0x00080000 */\n#define EXTI_IMR2_IM51             EXTI_IMR2_IM51_Msk                          /*!< Interrupt Mask on line 51 */\n#define EXTI_IMR2_IM52_Pos         (20U)\n#define EXTI_IMR2_IM52_Msk         (0x1UL << EXTI_IMR2_IM52_Pos)               /*!< 0x00100000 */\n#define EXTI_IMR2_IM52             EXTI_IMR2_IM52_Msk                          /*!< Interrupt Mask on line 52 */\n#define EXTI_IMR2_IM53_Pos         (21U)\n#define EXTI_IMR2_IM53_Msk         (0x1UL << EXTI_IMR2_IM53_Pos)               /*!< 0x00200000 */\n#define EXTI_IMR2_IM53             EXTI_IMR2_IM53_Msk                          /*!< Interrupt Mask on line 53 */\n#define EXTI_IMR2_IM54_Pos         (22U)\n#define EXTI_IMR2_IM54_Msk         (0x1UL << EXTI_IMR2_IM54_Pos)               /*!< 0x00400000 */\n#define EXTI_IMR2_IM54             EXTI_IMR2_IM54_Msk                          /*!< Interrupt Mask on line 54 */\n#define EXTI_IMR2_IM55_Pos         (23U)\n#define EXTI_IMR2_IM55_Msk         (0x1UL << EXTI_IMR2_IM55_Pos)               /*!< 0x00800000 */\n#define EXTI_IMR2_IM55             EXTI_IMR2_IM55_Msk                          /*!< Interrupt Mask on line 55 */\n#define EXTI_IMR2_IM56_Pos         (24U)\n#define EXTI_IMR2_IM56_Msk         (0x1UL << EXTI_IMR2_IM56_Pos)               /*!< 0x01000000 */\n#define EXTI_IMR2_IM56             EXTI_IMR2_IM56_Msk                          /*!< Interrupt Mask on line 56 */\n#define EXTI_IMR2_IM57_Pos         (25U)\n#define EXTI_IMR2_IM57_Msk         (0x1UL << EXTI_IMR2_IM57_Pos)               /*!< 0x02000000 */\n#define EXTI_IMR2_IM57             EXTI_IMR2_IM57_Msk                          /*!< Interrupt Mask on line 57 */\n#define EXTI_IMR2_IM58_Pos         (26U)\n#define EXTI_IMR2_IM58_Msk         (0x1UL << EXTI_IMR2_IM58_Pos)               /*!< 0x04000000 */\n#define EXTI_IMR2_IM58             EXTI_IMR2_IM58_Msk                          /*!< Interrupt Mask on line 58 */\n#define EXTI_IMR2_IM59_Pos         (27U)\n#define EXTI_IMR2_IM59_Msk         (0x1UL << EXTI_IMR2_IM59_Pos)               /*!< 0x08000000 */\n#define EXTI_IMR2_IM59             EXTI_IMR2_IM59_Msk                          /*!< Interrupt Mask on line 59 */\n#define EXTI_IMR2_IM60_Pos         (28U)\n#define EXTI_IMR2_IM60_Msk         (0x1UL << EXTI_IMR2_IM60_Pos)               /*!< 0x10000000 */\n#define EXTI_IMR2_IM60             EXTI_IMR2_IM60_Msk                          /*!< Interrupt Mask on line 60 */\n#define EXTI_IMR2_IM61_Pos         (29U)\n#define EXTI_IMR2_IM61_Msk         (0x1UL << EXTI_IMR2_IM61_Pos)               /*!< 0x20000000 */\n#define EXTI_IMR2_IM61             EXTI_IMR2_IM61_Msk                          /*!< Interrupt Mask on line 61 */\n#define EXTI_IMR2_IM62_Pos         (30U)\n#define EXTI_IMR2_IM62_Msk         (0x1UL << EXTI_IMR2_IM62_Pos)               /*!< 0x40000000 */\n#define EXTI_IMR2_IM62             EXTI_IMR2_IM62_Msk                          /*!< Interrupt Mask on line 62 */\n#define EXTI_IMR2_IM63_Pos         (31U)\n#define EXTI_IMR2_IM63_Msk         (0x1UL << EXTI_IMR2_IM63_Pos)               /*!< 0x80000000 */\n#define EXTI_IMR2_IM63             EXTI_IMR2_IM63_Msk                          /*!< Interrupt Mask on line 63 */\n\n/*******************  Bit definition for EXTI_EMR2 register  *******************/\n#define EXTI_EMR2_EM_Pos           (0U)\n#define EXTI_EMR2_EM_Msk           (0xFFFFDFFFUL << EXTI_EMR2_EM_Pos)          /*!< 0xFFFFDFFF */\n#define EXTI_EMR2_EM               EXTI_EMR2_EM_Msk                            /*!< Event Mask */\n#define EXTI_EMR2_EM32_Pos         (0U)\n#define EXTI_EMR2_EM32_Msk         (0x1UL << EXTI_EMR2_EM32_Pos)               /*!< 0x00000001 */\n#define EXTI_EMR2_EM32             EXTI_EMR2_EM32_Msk                          /*!< Event Mask on line 32*/\n#define EXTI_EMR2_EM33_Pos         (1U)\n#define EXTI_EMR2_EM33_Msk         (0x1UL << EXTI_EMR2_EM33_Pos)               /*!< 0x00000002 */\n#define EXTI_EMR2_EM33             EXTI_EMR2_EM33_Msk                          /*!< Event Mask on line 33*/\n#define EXTI_EMR2_EM34_Pos         (2U)\n#define EXTI_EMR2_EM34_Msk         (0x1UL << EXTI_EMR2_EM34_Pos)               /*!< 0x00000004 */\n#define EXTI_EMR2_EM34             EXTI_EMR2_EM34_Msk                          /*!< Event Mask on line 34*/\n#define EXTI_EMR2_EM35_Pos         (3U)\n#define EXTI_EMR2_EM35_Msk         (0x1UL << EXTI_EMR2_EM35_Pos)               /*!< 0x00000008 */\n#define EXTI_EMR2_EM35             EXTI_EMR2_EM35_Msk                          /*!< Event Mask on line 35*/\n#define EXTI_EMR2_EM36_Pos         (4U)\n#define EXTI_EMR2_EM36_Msk         (0x1UL << EXTI_EMR2_EM36_Pos)               /*!< 0x00000010 */\n#define EXTI_EMR2_EM36             EXTI_EMR2_EM36_Msk                          /*!< Event Mask on line 36*/\n#define EXTI_EMR2_EM37_Pos         (5U)\n#define EXTI_EMR2_EM37_Msk         (0x1UL << EXTI_EMR2_EM37_Pos)               /*!< 0x00000020 */\n#define EXTI_EMR2_EM37             EXTI_EMR2_EM37_Msk                          /*!< Event Mask on line 37*/\n#define EXTI_EMR2_EM38_Pos         (6U)\n#define EXTI_EMR2_EM38_Msk         (0x1UL << EXTI_EMR2_EM38_Pos)               /*!< 0x00000040 */\n#define EXTI_EMR2_EM38             EXTI_EMR2_EM38_Msk                          /*!< Event Mask on line 38*/\n#define EXTI_EMR2_EM39_Pos         (7U)\n#define EXTI_EMR2_EM39_Msk         (0x1UL << EXTI_EMR2_EM39_Pos)               /*!< 0x00000080 */\n#define EXTI_EMR2_EM39             EXTI_EMR2_EM39_Msk                          /*!< Event Mask on line 39*/\n#define EXTI_EMR2_EM40_Pos         (8U)\n#define EXTI_EMR2_EM40_Msk         (0x1UL << EXTI_EMR2_EM40_Pos)               /*!< 0x00000100 */\n#define EXTI_EMR2_EM40             EXTI_EMR2_EM40_Msk                          /*!< Event Mask on line 40*/\n#define EXTI_EMR2_EM41_Pos         (9U)\n#define EXTI_EMR2_EM41_Msk         (0x1UL << EXTI_EMR2_EM41_Pos)               /*!< 0x00000200 */\n#define EXTI_EMR2_EM41             EXTI_EMR2_EM41_Msk                          /*!< Event Mask on line 41*/\n#define EXTI_EMR2_EM42_Pos         (10U)\n#define EXTI_EMR2_EM42_Msk         (0x1UL << EXTI_EMR2_EM42_Pos)               /*!< 0x00000400 */\n#define EXTI_EMR2_EM42             EXTI_EMR2_EM42_Msk                          /*!< Event Mask on line 42 */\n#define EXTI_EMR2_EM43_Pos         (11U)\n#define EXTI_EMR2_EM43_Msk         (0x1UL << EXTI_EMR2_EM43_Pos)               /*!< 0x00000800 */\n#define EXTI_EMR2_EM43             EXTI_EMR2_EM43_Msk                          /*!< Event Mask on line 43 */\n#define EXTI_EMR2_EM44_Pos         (12U)\n#define EXTI_EMR2_EM44_Msk         (0x1UL << EXTI_EMR2_EM44_Pos)               /*!< 0x00001000 */\n#define EXTI_EMR2_EM44             EXTI_EMR2_EM44_Msk                          /*!< Event Mask on line 44 */\n#define EXTI_EMR2_EM46_Pos         (14U)\n#define EXTI_EMR2_EM46_Msk         (0x1UL << EXTI_EMR2_EM46_Pos)               /*!< 0x00004000 */\n#define EXTI_EMR2_EM46             EXTI_EMR2_EM46_Msk                          /*!< Event Mask on line 46 */\n#define EXTI_EMR2_EM47_Pos         (15U)\n#define EXTI_EMR2_EM47_Msk         (0x1UL << EXTI_EMR2_EM47_Pos)               /*!< 0x00008000 */\n#define EXTI_EMR2_EM47             EXTI_EMR2_EM47_Msk                          /*!< Event Mask on line 47 */\n#define EXTI_EMR2_EM48_Pos         (16U)\n#define EXTI_EMR2_EM48_Msk         (0x1UL << EXTI_EMR2_EM48_Pos)               /*!< 0x00010000 */\n#define EXTI_EMR2_EM48             EXTI_EMR2_EM48_Msk                          /*!< Event Mask on line 48 */\n#define EXTI_EMR2_EM49_Pos         (17U)\n#define EXTI_EMR2_EM49_Msk         (0x1UL << EXTI_EMR2_EM49_Pos)               /*!< 0x00020000 */\n#define EXTI_EMR2_EM49             EXTI_EMR2_EM49_Msk                          /*!< Event Mask on line 49 */\n#define EXTI_EMR2_EM50_Pos         (18U)\n#define EXTI_EMR2_EM50_Msk         (0x1UL << EXTI_EMR2_EM50_Pos)               /*!< 0x00040000 */\n#define EXTI_EMR2_EM50             EXTI_EMR2_EM50_Msk                          /*!< Event Mask on line 50 */\n#define EXTI_EMR2_EM51_Pos         (19U)\n#define EXTI_EMR2_EM51_Msk         (0x1UL << EXTI_EMR2_EM51_Pos)               /*!< 0x00080000 */\n#define EXTI_EMR2_EM51             EXTI_EMR2_EM51_Msk                          /*!< Event Mask on line 51 */\n#define EXTI_EMR2_EM52_Pos         (20U)\n#define EXTI_EMR2_EM52_Msk         (0x1UL << EXTI_EMR2_EM52_Pos)               /*!< 0x00100000 */\n#define EXTI_EMR2_EM52             EXTI_EMR2_EM52_Msk                          /*!< Event Mask on line 52 */\n#define EXTI_EMR2_EM53_Pos         (21U)\n#define EXTI_EMR2_EM53_Msk         (0x1UL << EXTI_EMR2_EM53_Pos)               /*!< 0x00200000 */\n#define EXTI_EMR2_EM53             EXTI_EMR2_EM53_Msk                          /*!< Event Mask on line 53 */\n#define EXTI_EMR2_EM54_Pos         (22U)\n#define EXTI_EMR2_EM54_Msk         (0x1UL << EXTI_EMR2_EM54_Pos)               /*!< 0x00400000 */\n#define EXTI_EMR2_EM54             EXTI_EMR2_EM54_Msk                          /*!< Event Mask on line 54 */\n#define EXTI_EMR2_EM55_Pos         (23U)\n#define EXTI_EMR2_EM55_Msk         (0x1UL << EXTI_EMR2_EM55_Pos)               /*!< 0x00800000 */\n#define EXTI_EMR2_EM55             EXTI_EMR2_EM55_Msk                          /*!< Event Mask on line 55 */\n#define EXTI_EMR2_EM56_Pos         (24U)\n#define EXTI_EMR2_EM56_Msk         (0x1UL << EXTI_EMR2_EM56_Pos)               /*!< 0x01000000 */\n#define EXTI_EMR2_EM56             EXTI_EMR2_EM56_Msk                          /*!< Event Mask on line 56 */\n#define EXTI_EMR2_EM57_Pos         (25U)\n#define EXTI_EMR2_EM57_Msk         (0x1UL << EXTI_EMR2_EM57_Pos)               /*!< 0x02000000 */\n#define EXTI_EMR2_EM57             EXTI_EMR2_EM57_Msk                          /*!< Event Mask on line 57 */\n#define EXTI_EMR2_EM58_Pos         (26U)\n#define EXTI_EMR2_EM58_Msk         (0x1UL << EXTI_EMR2_EM58_Pos)               /*!< 0x04000000 */\n#define EXTI_EMR2_EM58             EXTI_EMR2_EM58_Msk                          /*!< Event Mask on line 58 */\n#define EXTI_EMR2_EM59_Pos         (27U)\n#define EXTI_EMR2_EM59_Msk         (0x1UL << EXTI_EMR2_EM59_Pos)               /*!< 0x08000000 */\n#define EXTI_EMR2_EM59             EXTI_EMR2_EM59_Msk                          /*!< Event Mask on line 59 */\n#define EXTI_EMR2_EM60_Pos         (28U)\n#define EXTI_EMR2_EM60_Msk         (0x1UL << EXTI_EMR2_EM60_Pos)               /*!< 0x10000000 */\n#define EXTI_EMR2_EM60             EXTI_EMR2_EM60_Msk                          /*!< Event Mask on line 60 */\n#define EXTI_EMR2_EM61_Pos         (29U)\n#define EXTI_EMR2_EM61_Msk         (0x1UL << EXTI_EMR2_EM61_Pos)               /*!< 0x20000000 */\n#define EXTI_EMR2_EM61             EXTI_EMR2_EM61_Msk                          /*!< Event Mask on line 61 */\n#define EXTI_EMR2_EM62_Pos         (30U)\n#define EXTI_EMR2_EM62_Msk         (0x1UL << EXTI_EMR2_EM62_Pos)               /*!< 0x40000000 */\n#define EXTI_EMR2_EM62             EXTI_EMR2_EM62_Msk                          /*!< Event Mask on line 62 */\n#define EXTI_EMR2_EM63_Pos         (31U)\n#define EXTI_EMR2_EM63_Msk         (0x1UL << EXTI_EMR2_EM63_Pos)               /*!< 0x80000000 */\n#define EXTI_EMR2_EM63             EXTI_EMR2_EM63_Msk                          /*!< Event Mask on line 63 */\n\n/*******************  Bit definition for EXTI_PR2 register  ********************/\n#define EXTI_PR2_PR_Pos            (17U)\n#define EXTI_PR2_PR_Msk            (0x5UL << EXTI_PR2_PR_Pos)                  /*!< 0x000A0000 */\n#define EXTI_PR2_PR                EXTI_PR2_PR_Msk                             /*!< Pending bit */\n#define EXTI_PR2_PR49_Pos          (17U)\n#define EXTI_PR2_PR49_Msk          (0x1UL << EXTI_PR2_PR49_Pos)                /*!< 0x00020000 */\n#define EXTI_PR2_PR49              EXTI_PR2_PR49_Msk                           /*!< Pending bit for line 49 */\n#define EXTI_PR2_PR51_Pos          (19U)\n#define EXTI_PR2_PR51_Msk          (0x1UL << EXTI_PR2_PR51_Pos)                /*!< 0x00080000 */\n#define EXTI_PR2_PR51              EXTI_PR2_PR51_Msk                           /*!< Pending bit for line 51 */\n\n/*******************  Bit definition for EXTI_IMR3 register  *******************/\n#define EXTI_IMR3_IM_Pos           (0U)\n#define EXTI_IMR3_IM_Msk           (0x00F5FFFFUL << EXTI_IMR3_IM_Pos)          /*!< 0x00F5FFFF */\n#define EXTI_IMR3_IM               EXTI_IMR3_IM_Msk                            /*!< Interrupt Mask */\n#define EXTI_IMR3_IM64_Pos         (0U)\n#define EXTI_IMR3_IM64_Msk         (0x1UL << EXTI_IMR3_IM64_Pos)               /*!< 0x00000001 */\n#define EXTI_IMR3_IM64             EXTI_IMR3_IM64_Msk                          /*!< Interrupt Mask on line 64 */\n#define EXTI_IMR3_IM65_Pos         (1U)\n#define EXTI_IMR3_IM65_Msk         (0x1UL << EXTI_IMR3_IM65_Pos)               /*!< 0x00000002 */\n#define EXTI_IMR3_IM65             EXTI_IMR3_IM65_Msk                          /*!< Interrupt Mask on line 65 */\n#define EXTI_IMR3_IM66_Pos         (2U)\n#define EXTI_IMR3_IM66_Msk         (0x1UL << EXTI_IMR3_IM66_Pos)               /*!< 0x00000004 */\n#define EXTI_IMR3_IM66             EXTI_IMR3_IM66_Msk                          /*!< Interrupt Mask on line 66 */\n#define EXTI_IMR3_IM67_Pos         (3U)\n#define EXTI_IMR3_IM67_Msk         (0x1UL << EXTI_IMR3_IM67_Pos)               /*!< 0x00000008 */\n#define EXTI_IMR3_IM67             EXTI_IMR3_IM67_Msk                          /*!< Interrupt Mask on line 67 */\n#define EXTI_IMR3_IM68_Pos         (4U)\n#define EXTI_IMR3_IM68_Msk         (0x1UL << EXTI_IMR3_IM68_Pos)               /*!< 0x00000010 */\n#define EXTI_IMR3_IM68             EXTI_IMR3_IM68_Msk                          /*!< Interrupt Mask on line 68 */\n#define EXTI_IMR3_IM69_Pos         (5U)\n#define EXTI_IMR3_IM69_Msk         (0x1UL << EXTI_IMR3_IM69_Pos)               /*!< 0x00000020 */\n#define EXTI_IMR3_IM69             EXTI_IMR3_IM69_Msk                          /*!< Interrupt Mask on line 69 */\n#define EXTI_IMR3_IM70_Pos         (6U)\n#define EXTI_IMR3_IM70_Msk         (0x1UL << EXTI_IMR3_IM70_Pos)               /*!< 0x00000040 */\n#define EXTI_IMR3_IM70             EXTI_IMR3_IM70_Msk                          /*!< Interrupt Mask on line 70 */\n#define EXTI_IMR3_IM71_Pos         (7U)\n#define EXTI_IMR3_IM71_Msk         (0x1UL << EXTI_IMR3_IM71_Pos)               /*!< 0x00000080 */\n#define EXTI_IMR3_IM71             EXTI_IMR3_IM71_Msk                          /*!< Interrupt Mask on line 71 */\n#define EXTI_IMR3_IM72_Pos         (8U)\n#define EXTI_IMR3_IM72_Msk         (0x1UL << EXTI_IMR3_IM72_Pos)               /*!< 0x00000100 */\n#define EXTI_IMR3_IM72             EXTI_IMR3_IM72_Msk                          /*!< Interrupt Mask on line 72 */\n#define EXTI_IMR3_IM73_Pos         (9U)\n#define EXTI_IMR3_IM73_Msk         (0x1UL << EXTI_IMR3_IM73_Pos)               /*!< 0x00000200 */\n#define EXTI_IMR3_IM73             EXTI_IMR3_IM73_Msk                          /*!< Interrupt Mask on line 73 */\n#define EXTI_IMR3_IM74_Pos         (10U)\n#define EXTI_IMR3_IM74_Msk         (0x1UL << EXTI_IMR3_IM74_Pos)               /*!< 0x00000400 */\n#define EXTI_IMR3_IM74             EXTI_IMR3_IM74_Msk                          /*!< Interrupt Mask on line 74 */\n#define EXTI_IMR3_IM75_Pos         (11U)\n#define EXTI_IMR3_IM75_Msk         (0x1UL << EXTI_IMR3_IM75_Pos)               /*!< 0x00000800 */\n#define EXTI_IMR3_IM75             EXTI_IMR3_IM75_Msk                          /*!< Interrupt Mask on line 75 */\n#define EXTI_IMR3_IM76_Pos         (12U)\n#define EXTI_IMR3_IM76_Msk         (0x1UL << EXTI_IMR3_IM76_Pos)               /*!< 0x00001000 */\n#define EXTI_IMR3_IM76             EXTI_IMR3_IM76_Msk                          /*!< Interrupt Mask on line 76 */\n#define EXTI_IMR3_IM77_Pos         (13U)\n#define EXTI_IMR3_IM77_Msk         (0x1UL << EXTI_IMR3_IM77_Pos)               /*!< 0x00002000 */\n#define EXTI_IMR3_IM77             EXTI_IMR3_IM77_Msk                          /*!< Interrupt Mask on line 77 */\n#define EXTI_IMR3_IM78_Pos         (14U)\n#define EXTI_IMR3_IM78_Msk         (0x1UL << EXTI_IMR3_IM78_Pos)               /*!< 0x00004000 */\n#define EXTI_IMR3_IM78             EXTI_IMR3_IM78_Msk                          /*!< Interrupt Mask on line 78 */\n#define EXTI_IMR3_IM79_Pos         (15U)\n#define EXTI_IMR3_IM79_Msk         (0x1UL << EXTI_IMR3_IM79_Pos)               /*!< 0x00008000 */\n#define EXTI_IMR3_IM79             EXTI_IMR3_IM79_Msk                          /*!< Interrupt Mask on line 79 */\n#define EXTI_IMR3_IM80_Pos         (16U)\n#define EXTI_IMR3_IM80_Msk         (0x1UL << EXTI_IMR3_IM80_Pos)               /*!< 0x00010000 */\n#define EXTI_IMR3_IM80             EXTI_IMR3_IM80_Msk                          /*!< Interrupt Mask on line 80 */\n#define EXTI_IMR3_IM82_Pos         (18U)\n#define EXTI_IMR3_IM82_Msk         (0x1UL << EXTI_IMR3_IM82_Pos)               /*!< 0x00040000 */\n#define EXTI_IMR3_IM82             EXTI_IMR3_IM82_Msk                          /*!< Interrupt Mask on line 82 */\n#define EXTI_IMR3_IM84_Pos         (20U)\n#define EXTI_IMR3_IM84_Msk         (0x1UL << EXTI_IMR3_IM84_Pos)               /*!< 0x00100000 */\n#define EXTI_IMR3_IM84             EXTI_IMR3_IM84_Msk                          /*!< Interrupt Mask on line 84 */\n#define EXTI_IMR3_IM85_Pos         (21U)\n#define EXTI_IMR3_IM85_Msk         (0x1UL << EXTI_IMR3_IM85_Pos)               /*!< 0x00200000 */\n#define EXTI_IMR3_IM85             EXTI_IMR3_IM85_Msk                          /*!< Interrupt Mask on line 85 */\n#define EXTI_IMR3_IM86_Pos         (22U)\n#define EXTI_IMR3_IM86_Msk         (0x1UL << EXTI_IMR3_IM86_Pos)               /*!< 0x00400000 */\n#define EXTI_IMR3_IM86             EXTI_IMR3_IM86_Msk                          /*!< Interrupt Mask on line 86 */\n#define EXTI_IMR3_IM87_Pos         (23U)\n#define EXTI_IMR3_IM87_Msk         (0x1UL << EXTI_IMR3_IM87_Pos)               /*!< 0x00800000 */\n#define EXTI_IMR3_IM87             EXTI_IMR3_IM87_Msk                          /*!< Interrupt Mask on line 87 */\n\n\n/*******************  Bit definition for EXTI_EMR3 register  *******************/\n#define EXTI_EMR3_EM_Pos           (0U)\n#define EXTI_EMR3_EM_Msk           (0x00F5FFFFUL << EXTI_EMR3_EM_Pos)          /*!< 0x00F5FFFF */\n#define EXTI_EMR3_EM               EXTI_EMR3_EM_Msk                            /*!< Event Mask           */\n#define EXTI_EMR3_EM64_Pos         (0U)\n#define EXTI_EMR3_EM64_Msk         (0x1UL << EXTI_EMR3_EM64_Pos)               /*!< 0x00000001 */\n#define EXTI_EMR3_EM64             EXTI_EMR3_EM64_Msk                          /*!< Event Mask on line 64*/\n#define EXTI_EMR3_EM65_Pos         (1U)\n#define EXTI_EMR3_EM65_Msk         (0x1UL << EXTI_EMR3_EM65_Pos)               /*!< 0x00000002 */\n#define EXTI_EMR3_EM65             EXTI_EMR3_EM65_Msk                          /*!< Event Mask on line 65*/\n#define EXTI_EMR3_EM66_Pos         (2U)\n#define EXTI_EMR3_EM66_Msk         (0x1UL << EXTI_EMR3_EM66_Pos)               /*!< 0x00000004 */\n#define EXTI_EMR3_EM66             EXTI_EMR3_EM66_Msk                          /*!< Event Mask on line 66*/\n#define EXTI_EMR3_EM67_Pos         (3U)\n#define EXTI_EMR3_EM67_Msk         (0x1UL << EXTI_EMR3_EM67_Pos)               /*!< 0x00000008 */\n#define EXTI_EMR3_EM67             EXTI_EMR3_EM67_Msk                          /*!< Event Mask on line 67*/\n#define EXTI_EMR3_EM68_Pos         (4U)\n#define EXTI_EMR3_EM68_Msk         (0x1UL << EXTI_EMR3_EM68_Pos)               /*!< 0x00000010 */\n#define EXTI_EMR3_EM68             EXTI_EMR3_EM68_Msk                          /*!< Event Mask on line 68*/\n#define EXTI_EMR3_EM69_Pos         (5U)\n#define EXTI_EMR3_EM69_Msk         (0x1UL << EXTI_EMR3_EM69_Pos)               /*!< 0x00000020 */\n#define EXTI_EMR3_EM69             EXTI_EMR3_EM69_Msk                          /*!< Event Mask on line 69*/\n#define EXTI_EMR3_EM70_Pos         (6U)\n#define EXTI_EMR3_EM70_Msk         (0x1UL << EXTI_EMR3_EM70_Pos)               /*!< 0x00000040 */\n#define EXTI_EMR3_EM70             EXTI_EMR3_EM70_Msk                          /*!< Event Mask on line 70*/\n#define EXTI_EMR3_EM71_Pos         (7U)\n#define EXTI_EMR3_EM71_Msk         (0x1UL << EXTI_EMR3_EM71_Pos)               /*!< 0x00000080 */\n#define EXTI_EMR3_EM71             EXTI_EMR3_EM71_Msk                          /*!< Event Mask on line 71*/\n#define EXTI_EMR3_EM72_Pos         (8U)\n#define EXTI_EMR3_EM72_Msk         (0x1UL << EXTI_EMR3_EM72_Pos)               /*!< 0x00000100 */\n#define EXTI_EMR3_EM72             EXTI_EMR3_EM72_Msk                          /*!< Event Mask on line 72*/\n#define EXTI_EMR3_EM73_Pos         (9U)\n#define EXTI_EMR3_EM73_Msk         (0x1UL << EXTI_EMR3_EM73_Pos)               /*!< 0x00000200 */\n#define EXTI_EMR3_EM73             EXTI_EMR3_EM73_Msk                          /*!< Event Mask on line 73*/\n#define EXTI_EMR3_EM74_Pos         (10U)\n#define EXTI_EMR3_EM74_Msk         (0x1UL << EXTI_EMR3_EM74_Pos)               /*!< 0x00000400 */\n#define EXTI_EMR3_EM74             EXTI_EMR3_EM74_Msk                          /*!< Event Mask on line 74 */\n#define EXTI_EMR3_EM75_Pos         (11U)\n#define EXTI_EMR3_EM75_Msk         (0x1UL << EXTI_EMR3_EM75_Pos)               /*!< 0x00000800 */\n#define EXTI_EMR3_EM75             EXTI_EMR3_EM75_Msk                          /*!< Event Mask on line 75 */\n#define EXTI_EMR3_EM76_Pos         (12U)\n#define EXTI_EMR3_EM76_Msk         (0x1UL << EXTI_EMR3_EM76_Pos)               /*!< 0x00001000 */\n#define EXTI_EMR3_EM76             EXTI_EMR3_EM76_Msk                          /*!< Event Mask on line 76 */\n#define EXTI_EMR3_EM77_Pos         (13U)\n#define EXTI_EMR3_EM77_Msk         (0x1UL << EXTI_EMR3_EM77_Pos)               /*!< 0x00002000 */\n#define EXTI_EMR3_EM77             EXTI_EMR3_EM77_Msk                          /*!< Event Mask on line 77 */\n#define EXTI_EMR3_EM78_Pos         (14U)\n#define EXTI_EMR3_EM78_Msk         (0x1UL << EXTI_EMR3_EM78_Pos)               /*!< 0x00004000 */\n#define EXTI_EMR3_EM78             EXTI_EMR3_EM78_Msk                          /*!< Event Mask on line 78 */\n#define EXTI_EMR3_EM79_Pos         (15U)\n#define EXTI_EMR3_EM79_Msk         (0x1UL << EXTI_EMR3_EM79_Pos)               /*!< 0x00008000 */\n#define EXTI_EMR3_EM79             EXTI_EMR3_EM79_Msk                          /*!< Event Mask on line 79 */\n#define EXTI_EMR3_EM80_Pos         (16U)\n#define EXTI_EMR3_EM80_Msk         (0x1UL << EXTI_EMR3_EM80_Pos)               /*!< 0x00010000 */\n#define EXTI_EMR3_EM80             EXTI_EMR3_EM80_Msk                          /*!< Event Mask on line 80 */\n#define EXTI_EMR3_EM81_Pos         (17U)\n#define EXTI_EMR3_EM81_Msk         (0x1UL << EXTI_EMR3_EM81_Pos)               /*!< 0x00020000 */\n#define EXTI_EMR3_EM81             EXTI_EMR3_EM81_Msk                          /*!< Event Mask on line 81 */\n#define EXTI_EMR3_EM82_Pos         (18U)\n#define EXTI_EMR3_EM82_Msk         (0x1UL << EXTI_EMR3_EM82_Pos)               /*!< 0x00040000 */\n#define EXTI_EMR3_EM82             EXTI_EMR3_EM82_Msk                          /*!< Event Mask on line 82 */\n#define EXTI_EMR3_EM84_Pos         (20U)\n#define EXTI_EMR3_EM84_Msk         (0x1UL << EXTI_EMR3_EM84_Pos)               /*!< 0x00100000 */\n#define EXTI_EMR3_EM84             EXTI_EMR3_EM84_Msk                          /*!< Event Mask on line 84 */\n#define EXTI_EMR3_EM85_Pos         (21U)\n#define EXTI_EMR3_EM85_Msk         (0x1UL << EXTI_EMR3_EM85_Pos)               /*!< 0x00200000 */\n#define EXTI_EMR3_EM85             EXTI_EMR3_EM85_Msk                          /*!< Event Mask on line 85 */\n#define EXTI_EMR3_EM86_Pos         (22U)\n#define EXTI_EMR3_EM86_Msk         (0x1UL << EXTI_EMR3_EM86_Pos)               /*!< 0x00400000 */\n#define EXTI_EMR3_EM86             EXTI_EMR3_EM86_Msk                          /*!< Event Mask on line 86 */\n#define EXTI_EMR3_EM87_Pos         (23U)\n#define EXTI_EMR3_EM87_Msk         (0x1UL << EXTI_EMR3_EM87_Pos)               /*!< 0x00800000 */\n#define EXTI_EMR3_EM87             EXTI_EMR3_EM87_Msk                          /*!< Event Mask on line 87 */\n\n/*******************  Bit definition for EXTI_PR3 register  ********************/\n#define EXTI_PR3_PR_Pos            (18U)\n#define EXTI_PR3_PR_Msk            (0x1DUL << EXTI_PR3_PR_Pos)                 /*!< 0x00740000 */\n#define EXTI_PR3_PR                EXTI_PR3_PR_Msk                             /*!< Pending bit */\n#define EXTI_PR3_PR82_Pos          (18U)\n#define EXTI_PR3_PR82_Msk          (0x1UL << EXTI_PR3_PR82_Pos)                /*!< 0x00040000 */\n#define EXTI_PR3_PR82              EXTI_PR3_PR82_Msk                           /*!< Pending bit for line 82 */\n#define EXTI_PR3_PR84_Pos          (20U)\n#define EXTI_PR3_PR84_Msk          (0x1UL << EXTI_PR3_PR84_Pos)                /*!< 0x00100000 */\n#define EXTI_PR3_PR84              EXTI_PR3_PR84_Msk                           /*!< Pending bit for line 84 */\n#define EXTI_PR3_PR85_Pos          (21U)\n#define EXTI_PR3_PR85_Msk          (0x1UL << EXTI_PR3_PR85_Pos)                /*!< 0x00200000 */\n#define EXTI_PR3_PR85              EXTI_PR3_PR85_Msk                           /*!< Pending bit for line 85 */\n#define EXTI_PR3_PR86_Pos          (22U)\n#define EXTI_PR3_PR86_Msk          (0x1UL << EXTI_PR3_PR86_Pos)                /*!< 0x00400000 */\n#define EXTI_PR3_PR86              EXTI_PR3_PR86_Msk                           /*!< Pending bit for line 86 */\n/******************************************************************************/\n/*                                                                            */\n/*                                    FLASH                                   */\n/*                                                                            */\n/******************************************************************************/\n/*\n* @brief FLASH Global Defines\n*/\n#define FLASH_SIZE_DATA_REGISTER             0x1FF1E880U\n#define FLASH_SECTOR_TOTAL                   1U                    /* 1 sector */\n#define FLASH_SECTOR_SIZE                    0x00020000UL          /* 128 KB */\n#define FLASH_SIZE                           ((((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0xFFFFU)) ? 0x20000U : \\\n                                             ((((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x0000U)) ? 0x20000U : \\\n                                             (((uint32_t)(*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) & (0x0FFFU)) << 10U)))  /* 128 KB */\n#define FLASH_BANK_SIZE                      FLASH_SIZE            /* 128 KB */\n#define FLASH_LATENCY_DEFAULT                FLASH_ACR_LATENCY_7WS /* FLASH Seven Latency cycles */\n#define FLASH_NB_32BITWORD_IN_FLASHWORD      8U                    /* 256 bits */\n\n\n/*******************  Bits definition for FLASH_ACR register  **********************/\n#define FLASH_ACR_LATENCY_Pos                (0U)\n#define FLASH_ACR_LATENCY_Msk                (0xFUL << FLASH_ACR_LATENCY_Pos)  /*!< 0x0000000F: bit4 is kept only for legacy purpose */\n#define FLASH_ACR_LATENCY                    FLASH_ACR_LATENCY_Msk             /*!< Read Latency */\n#define FLASH_ACR_LATENCY_0WS                (0x00000000UL)\n#define FLASH_ACR_LATENCY_1WS                (0x00000001UL)\n#define FLASH_ACR_LATENCY_2WS                (0x00000002UL)\n#define FLASH_ACR_LATENCY_3WS                (0x00000003UL)\n#define FLASH_ACR_LATENCY_4WS                (0x00000004UL)\n#define FLASH_ACR_LATENCY_5WS                (0x00000005UL)\n#define FLASH_ACR_LATENCY_6WS                (0x00000006UL)\n#define FLASH_ACR_LATENCY_7WS                (0x00000007UL)\n\n#define FLASH_ACR_WRHIGHFREQ_Pos             (4U)\n#define FLASH_ACR_WRHIGHFREQ_Msk             (0x3UL << FLASH_ACR_WRHIGHFREQ_Pos)  /*!< 0x00000030 */\n#define FLASH_ACR_WRHIGHFREQ                 FLASH_ACR_WRHIGHFREQ_Msk             /*!< Flash signal delay */\n#define FLASH_ACR_WRHIGHFREQ_0               (0x1UL << FLASH_ACR_WRHIGHFREQ_Pos)  /*!< 0x00000010 */\n#define FLASH_ACR_WRHIGHFREQ_1               (0x2UL << FLASH_ACR_WRHIGHFREQ_Pos)  /*!< 0x00000020 */\n\n/* Legacy FLASH Latency defines */\n#define FLASH_ACR_LATENCY_8WS                (0x00000008UL)\n#define FLASH_ACR_LATENCY_9WS                (0x00000009UL)\n#define FLASH_ACR_LATENCY_10WS               (0x0000000AUL)\n#define FLASH_ACR_LATENCY_11WS               (0x0000000BUL)\n#define FLASH_ACR_LATENCY_12WS               (0x0000000CUL)\n#define FLASH_ACR_LATENCY_13WS               (0x0000000DUL)\n#define FLASH_ACR_LATENCY_14WS               (0x0000000EUL)\n#define FLASH_ACR_LATENCY_15WS               (0x0000000FUL)\n/*******************  Bits definition for FLASH_CR register  ***********************/\n#define FLASH_CR_LOCK_Pos                    (0U)\n#define FLASH_CR_LOCK_Msk                    (0x1UL << FLASH_CR_LOCK_Pos)      /*!< 0x00000001 */\n#define FLASH_CR_LOCK                        FLASH_CR_LOCK_Msk                 /*!< Configuration lock bit */\n#define FLASH_CR_PG_Pos                      (1U)\n#define FLASH_CR_PG_Msk                      (0x1UL << FLASH_CR_PG_Pos)        /*!< 0x00000002 */\n#define FLASH_CR_PG                          FLASH_CR_PG_Msk                   /*!< Internal buffer control bit */\n#define FLASH_CR_SER_Pos                     (2U)\n#define FLASH_CR_SER_Msk                     (0x1UL << FLASH_CR_SER_Pos)       /*!< 0x00000004 */\n#define FLASH_CR_SER                         FLASH_CR_SER_Msk                  /*!< Sector erase request */\n#define FLASH_CR_BER_Pos                     (3U)\n#define FLASH_CR_BER_Msk                     (0x1UL << FLASH_CR_BER_Pos)       /*!< 0x00000008 */\n#define FLASH_CR_BER                         FLASH_CR_BER_Msk                  /*!< Bank erase request */\n#define FLASH_CR_PSIZE_Pos                   (4U)\n#define FLASH_CR_PSIZE_Msk                   (0x3UL << FLASH_CR_PSIZE_Pos)     /*!< 0x00000030 */\n#define FLASH_CR_PSIZE                       FLASH_CR_PSIZE_Msk                /*!< Program size */\n#define FLASH_CR_PSIZE_0                     (0x1UL << FLASH_CR_PSIZE_Pos)     /*!< 0x00000010 */\n#define FLASH_CR_PSIZE_1                     (0x2UL << FLASH_CR_PSIZE_Pos)     /*!< 0x00000020 */\n#define FLASH_CR_FW_Pos                      (6U)\n#define FLASH_CR_FW_Msk                      (0x1UL << FLASH_CR_FW_Pos)        /*!< 0x00000040 */\n#define FLASH_CR_FW                          FLASH_CR_FW_Msk                   /*!< Write forcing control bit */\n#define FLASH_CR_START_Pos                   (7U)\n#define FLASH_CR_START_Msk                   (0x1UL << FLASH_CR_START_Pos)     /*!< 0x00000080 */\n#define FLASH_CR_START                       FLASH_CR_START_Msk                /*!< Erase start control bit */\n#define FLASH_CR_SNB_Pos                     (8U)\n#define FLASH_CR_SNB_Msk                     (0x7UL << FLASH_CR_SNB_Pos)       /*!< 0x00000700 */\n#define FLASH_CR_SNB                         FLASH_CR_SNB_Msk                  /*!< Sector erase selection number */\n#define FLASH_CR_SNB_0                       (0x1UL << FLASH_CR_SNB_Pos)       /*!< 0x00000100 */\n#define FLASH_CR_SNB_1                       (0x2UL << FLASH_CR_SNB_Pos)       /*!< 0x00000200 */\n#define FLASH_CR_SNB_2                       (0x4UL << FLASH_CR_SNB_Pos)       /*!< 0x00000400 */\n#define FLASH_CR_CRC_EN_Pos                  (15U)\n#define FLASH_CR_CRC_EN_Msk                  (0x1UL << FLASH_CR_CRC_EN_Pos)    /*!< 0x00008000 */\n#define FLASH_CR_CRC_EN                      FLASH_CR_CRC_EN_Msk               /*!< CRC control bit */\n#define FLASH_CR_EOPIE_Pos                   (16U)\n#define FLASH_CR_EOPIE_Msk                   (0x1UL << FLASH_CR_EOPIE_Pos)     /*!< 0x00010000 */\n#define FLASH_CR_EOPIE                       FLASH_CR_EOPIE_Msk                /*!< End-of-program interrupt control bit */\n#define FLASH_CR_WRPERRIE_Pos                (17U)\n#define FLASH_CR_WRPERRIE_Msk                (0x1UL << FLASH_CR_WRPERRIE_Pos)  /*!< 0x00020000 */\n#define FLASH_CR_WRPERRIE                    FLASH_CR_WRPERRIE_Msk             /*!< Write protection error interrupt enable bit */\n#define FLASH_CR_PGSERRIE_Pos                (18U)\n#define FLASH_CR_PGSERRIE_Msk                (0x1UL << FLASH_CR_PGSERRIE_Pos)  /*!< 0x00040000 */\n#define FLASH_CR_PGSERRIE                    FLASH_CR_PGSERRIE_Msk             /*!< Programming sequence error interrupt enable bit */\n#define FLASH_CR_STRBERRIE_Pos               (19U)\n#define FLASH_CR_STRBERRIE_Msk               (0x1UL << FLASH_CR_STRBERRIE_Pos) /*!< 0x00080000 */\n#define FLASH_CR_STRBERRIE                   FLASH_CR_STRBERRIE_Msk            /*!< Strobe error interrupt enable bit */\n#define FLASH_CR_INCERRIE_Pos                (21U)\n#define FLASH_CR_INCERRIE_Msk                (0x1UL << FLASH_CR_INCERRIE_Pos)  /*!< 0x00200000 */\n#define FLASH_CR_INCERRIE                    FLASH_CR_INCERRIE_Msk             /*!< Inconsistency error interrupt enable bit */\n#define FLASH_CR_OPERRIE_Pos                 (22U)\n#define FLASH_CR_OPERRIE_Msk                 (0x1UL << FLASH_CR_OPERRIE_Pos)   /*!< 0x00400000 */\n#define FLASH_CR_OPERRIE                     FLASH_CR_OPERRIE_Msk              /*!< Write/erase error interrupt enable bit */\n#define FLASH_CR_RDPERRIE_Pos                (23U)\n#define FLASH_CR_RDPERRIE_Msk                (0x1UL << FLASH_CR_RDPERRIE_Pos)  /*!< 0x00800000 */\n#define FLASH_CR_RDPERRIE                    FLASH_CR_RDPERRIE_Msk             /*!< Read protection error interrupt enable bit */\n#define FLASH_CR_RDSERRIE_Pos                (24U)\n#define FLASH_CR_RDSERRIE_Msk                (0x1UL << FLASH_CR_RDSERRIE_Pos)  /*!< 0x01000000 */\n#define FLASH_CR_RDSERRIE                    FLASH_CR_RDSERRIE_Msk             /*!< Secure error interrupt enable bit */\n#define FLASH_CR_SNECCERRIE_Pos              (25U)\n#define FLASH_CR_SNECCERRIE_Msk              (0x1UL << FLASH_CR_SNECCERRIE_Pos) /*!< 0x02000000 */\n#define FLASH_CR_SNECCERRIE                  FLASH_CR_SNECCERRIE_Msk            /*!< ECC single correction error interrupt enable bit */\n#define FLASH_CR_DBECCERRIE_Pos              (26U)\n#define FLASH_CR_DBECCERRIE_Msk              (0x1UL << FLASH_CR_DBECCERRIE_Pos) /*!< 0x04000000 */\n#define FLASH_CR_DBECCERRIE                  FLASH_CR_DBECCERRIE_Msk            /*!< ECC double detection error interrupt enable bit */\n#define FLASH_CR_CRCENDIE_Pos                (27U)\n#define FLASH_CR_CRCENDIE_Msk                (0x1UL << FLASH_CR_CRCENDIE_Pos)  /*!< 0x08000000 */\n#define FLASH_CR_CRCENDIE                    FLASH_CR_CRCENDIE_Msk             /*!< CRC end of calculation interrupt enable bit */\n#define FLASH_CR_CRCRDERRIE_Pos              (28U)\n#define FLASH_CR_CRCRDERRIE_Msk              (0x1UL << FLASH_CR_CRCRDERRIE_Pos) /*!< 0x10000000 */\n#define FLASH_CR_CRCRDERRIE                  FLASH_CR_CRCRDERRIE_Msk            /*!< CRC read error interrupt enable bit */\n\n/*******************  Bits definition for FLASH_SR register  ***********************/\n#define FLASH_SR_BSY_Pos                     (0U)\n#define FLASH_SR_BSY_Msk                     (0x1UL << FLASH_SR_BSY_Pos)       /*!< 0x00000001 */\n#define FLASH_SR_BSY                         FLASH_SR_BSY_Msk                  /*!< Busy flag */\n#define FLASH_SR_WBNE_Pos                    (1U)\n#define FLASH_SR_WBNE_Msk                    (0x1UL << FLASH_SR_WBNE_Pos)      /*!< 0x00000002 */\n#define FLASH_SR_WBNE                        FLASH_SR_WBNE_Msk                 /*!< Write buffer not empty flag */\n#define FLASH_SR_QW_Pos                      (2U)\n#define FLASH_SR_QW_Msk                      (0x1UL << FLASH_SR_QW_Pos)        /*!< 0x00000004 */\n#define FLASH_SR_QW                          FLASH_SR_QW_Msk                   /*!< Wait queue flag */\n#define FLASH_SR_CRC_BUSY_Pos                (3U)\n#define FLASH_SR_CRC_BUSY_Msk                (0x1UL << FLASH_SR_CRC_BUSY_Pos)  /*!< 0x00000008 */\n#define FLASH_SR_CRC_BUSY                    FLASH_SR_CRC_BUSY_Msk             /*!< CRC busy flag */\n#define FLASH_SR_EOP_Pos                     (16U)\n#define FLASH_SR_EOP_Msk                     (0x1UL << FLASH_SR_EOP_Pos)       /*!< 0x00010000 */\n#define FLASH_SR_EOP                         FLASH_SR_EOP_Msk                  /*!< End-of-program flag */\n#define FLASH_SR_WRPERR_Pos                  (17U)\n#define FLASH_SR_WRPERR_Msk                  (0x1UL << FLASH_SR_WRPERR_Pos)    /*!< 0x00020000 */\n#define FLASH_SR_WRPERR                      FLASH_SR_WRPERR_Msk               /*!< Write protection error flag */\n#define FLASH_SR_PGSERR_Pos                  (18U)\n#define FLASH_SR_PGSERR_Msk                  (0x1UL << FLASH_SR_PGSERR_Pos)    /*!< 0x00040000 */\n#define FLASH_SR_PGSERR                      FLASH_SR_PGSERR_Msk               /*!< Programming sequence error flag */\n#define FLASH_SR_STRBERR_Pos                 (19U)\n#define FLASH_SR_STRBERR_Msk                 (0x1UL << FLASH_SR_STRBERR_Pos)   /*!< 0x00080000 */\n#define FLASH_SR_STRBERR                     FLASH_SR_STRBERR_Msk              /*!< Strobe error flag */\n#define FLASH_SR_INCERR_Pos                  (21U)\n#define FLASH_SR_INCERR_Msk                  (0x1UL << FLASH_SR_INCERR_Pos)    /*!< 0x00200000 */\n#define FLASH_SR_INCERR                      FLASH_SR_INCERR_Msk               /*!< Inconsistency error flag */\n#define FLASH_SR_OPERR_Pos                   (22U)\n#define FLASH_SR_OPERR_Msk                   (0x1UL << FLASH_SR_OPERR_Pos)     /*!< 0x00400000 */\n#define FLASH_SR_OPERR                       FLASH_SR_OPERR_Msk                /*!< Write/erase error flag */\n#define FLASH_SR_RDPERR_Pos                  (23U)\n#define FLASH_SR_RDPERR_Msk                  (0x1UL << FLASH_SR_RDPERR_Pos)    /*!< 0x00800000 */\n#define FLASH_SR_RDPERR                      FLASH_SR_RDPERR_Msk               /*!< Read protection error flag */\n#define FLASH_SR_RDSERR_Pos                  (24U)\n#define FLASH_SR_RDSERR_Msk                  (0x1UL << FLASH_SR_RDSERR_Pos)    /*!< 0x01000000 */\n#define FLASH_SR_RDSERR                      FLASH_SR_RDSERR_Msk               /*!< Secure error flag */\n#define FLASH_SR_SNECCERR_Pos                (25U)\n#define FLASH_SR_SNECCERR_Msk                (0x1UL << FLASH_SR_SNECCERR_Pos)  /*!< 0x02000000 */\n#define FLASH_SR_SNECCERR                    FLASH_SR_SNECCERR_Msk             /*!< Single correction error flag */\n#define FLASH_SR_DBECCERR_Pos                (26U)\n#define FLASH_SR_DBECCERR_Msk                (0x1UL << FLASH_SR_DBECCERR_Pos)  /*!< 0x04000000 */\n#define FLASH_SR_DBECCERR                    FLASH_SR_DBECCERR_Msk             /*!< ECC double detection error flag */\n#define FLASH_SR_CRCEND_Pos                  (27U)\n#define FLASH_SR_CRCEND_Msk                  (0x1UL << FLASH_SR_CRCEND_Pos)    /*!< 0x08000000 */\n#define FLASH_SR_CRCEND                      FLASH_SR_CRCEND_Msk               /*!< CRC end of calculation flag */\n#define FLASH_SR_CRCRDERR_Pos                (28U)\n#define FLASH_SR_CRCRDERR_Msk                (0x1UL << FLASH_SR_CRCRDERR_Pos)  /*!< 0x10000000 */\n#define FLASH_SR_CRCRDERR                    FLASH_SR_CRCRDERR_Msk             /*!< CRC read error flag */\n\n/*******************  Bits definition for FLASH_CCR register  *******************/\n#define FLASH_CCR_CLR_EOP_Pos                (16U)\n#define FLASH_CCR_CLR_EOP_Msk                (0x1UL << FLASH_CCR_CLR_EOP_Pos)  /*!< 0x00010000 */\n#define FLASH_CCR_CLR_EOP                    FLASH_CCR_CLR_EOP_Msk             /*!< EOP flag clear bit */\n#define FLASH_CCR_CLR_WRPERR_Pos             (17U)\n#define FLASH_CCR_CLR_WRPERR_Msk             (0x1UL << FLASH_CCR_CLR_WRPERR_Pos) /*!< 0x00020000 */\n#define FLASH_CCR_CLR_WRPERR                 FLASH_CCR_CLR_WRPERR_Msk            /*!< WRPERR flag clear bit */\n#define FLASH_CCR_CLR_PGSERR_Pos             (18U)\n#define FLASH_CCR_CLR_PGSERR_Msk             (0x1UL << FLASH_CCR_CLR_PGSERR_Pos) /*!< 0x00040000 */\n#define FLASH_CCR_CLR_PGSERR                 FLASH_CCR_CLR_PGSERR_Msk            /*!< PGSERR flag clear bit */\n#define FLASH_CCR_CLR_STRBERR_Pos            (19U)\n#define FLASH_CCR_CLR_STRBERR_Msk            (0x1UL << FLASH_CCR_CLR_STRBERR_Pos) /*!< 0x00080000 */\n#define FLASH_CCR_CLR_STRBERR                FLASH_CCR_CLR_STRBERR_Msk            /*!< STRBERR flag clear bit */\n#define FLASH_CCR_CLR_INCERR_Pos             (21U)\n#define FLASH_CCR_CLR_INCERR_Msk             (0x1UL << FLASH_CCR_CLR_INCERR_Pos) /*!< 0x00200000 */\n#define FLASH_CCR_CLR_INCERR                 FLASH_CCR_CLR_INCERR_Msk            /*!< INCERR flag clear bit */\n#define FLASH_CCR_CLR_OPERR_Pos              (22U)\n#define FLASH_CCR_CLR_OPERR_Msk              (0x1UL << FLASH_CCR_CLR_OPERR_Pos) /*!< 0x00400000 */\n#define FLASH_CCR_CLR_OPERR                  FLASH_CCR_CLR_OPERR_Msk            /*!< OPERR flag clear bit */\n#define FLASH_CCR_CLR_RDPERR_Pos             (23U)\n#define FLASH_CCR_CLR_RDPERR_Msk             (0x1UL << FLASH_CCR_CLR_RDPERR_Pos) /*!< 0x00800000 */\n#define FLASH_CCR_CLR_RDPERR                 FLASH_CCR_CLR_RDPERR_Msk            /*!< RDPERR flag clear bit */\n#define FLASH_CCR_CLR_RDSERR_Pos             (24U)\n#define FLASH_CCR_CLR_RDSERR_Msk             (0x1UL << FLASH_CCR_CLR_RDSERR_Pos) /*!< 0x01000000 */\n#define FLASH_CCR_CLR_RDSERR                 FLASH_CCR_CLR_RDSERR_Msk            /*!< RDSERR flag clear bit */\n#define FLASH_CCR_CLR_SNECCERR_Pos           (25U)\n#define FLASH_CCR_CLR_SNECCERR_Msk           (0x1UL << FLASH_CCR_CLR_SNECCERR_Pos) /*!< 0x02000000 */\n#define FLASH_CCR_CLR_SNECCERR               FLASH_CCR_CLR_SNECCERR_Msk            /*!< SNECCERR flag clear bit */\n#define FLASH_CCR_CLR_DBECCERR_Pos           (26U)\n#define FLASH_CCR_CLR_DBECCERR_Msk           (0x1UL << FLASH_CCR_CLR_DBECCERR_Pos) /*!< 0x04000000 */\n#define FLASH_CCR_CLR_DBECCERR               FLASH_CCR_CLR_DBECCERR_Msk            /*!< DBECCERR flag clear bit */\n#define FLASH_CCR_CLR_CRCEND_Pos             (27U)\n#define FLASH_CCR_CLR_CRCEND_Msk             (0x1UL << FLASH_CCR_CLR_CRCEND_Pos) /*!< 0x08000000 */\n#define FLASH_CCR_CLR_CRCEND                 FLASH_CCR_CLR_CRCEND_Msk            /*!< CRCEND flag clear bit */\n#define FLASH_CCR_CLR_CRCRDERR_Pos           (28U)\n#define FLASH_CCR_CLR_CRCRDERR_Msk           (0x1UL << FLASH_CCR_CLR_CRCRDERR_Pos) /*!< 0x10000000 */\n#define FLASH_CCR_CLR_CRCRDERR               FLASH_CCR_CLR_CRCRDERR_Msk            /*!< CRCRDERR flag clear bit */\n\n/*******************  Bits definition for FLASH_OPTCR register  *******************/\n#define FLASH_OPTCR_OPTLOCK_Pos              (0U)\n#define FLASH_OPTCR_OPTLOCK_Msk              (0x1UL << FLASH_OPTCR_OPTLOCK_Pos)  /*!< 0x00000001 */\n#define FLASH_OPTCR_OPTLOCK                  FLASH_OPTCR_OPTLOCK_Msk             /*!< FLASH_OPTCR lock option configuration bit */\n#define FLASH_OPTCR_OPTSTART_Pos             (1U)\n#define FLASH_OPTCR_OPTSTART_Msk             (0x1UL << FLASH_OPTCR_OPTSTART_Pos) /*!< 0x00000002 */\n#define FLASH_OPTCR_OPTSTART                 FLASH_OPTCR_OPTSTART_Msk            /*!< Option byte start change option configuration bit */\n#define FLASH_OPTCR_MER_Pos                  (4U)\n#define FLASH_OPTCR_MER_Msk                  (0x1UL << FLASH_OPTCR_MER_Pos)      /*!< 0x00000010 */\n#define FLASH_OPTCR_MER                      FLASH_OPTCR_MER_Msk                 /*!< Mass erase request */\n#define FLASH_OPTCR_OPTCHANGEERRIE_Pos       (30U)\n#define FLASH_OPTCR_OPTCHANGEERRIE_Msk       (0x1UL << FLASH_OPTCR_OPTCHANGEERRIE_Pos) /*!< 0x40000000 */\n#define FLASH_OPTCR_OPTCHANGEERRIE           FLASH_OPTCR_OPTCHANGEERRIE_Msk            /*!< Option byte change error interrupt enable bit */\n\n/*******************  Bits definition for FLASH_OPTSR register  ***************/\n#define FLASH_OPTSR_OPT_BUSY_Pos             (0U)\n#define FLASH_OPTSR_OPT_BUSY_Msk             (0x1UL << FLASH_OPTSR_OPT_BUSY_Pos) /*!< 0x00000001 */\n#define FLASH_OPTSR_OPT_BUSY                 FLASH_OPTSR_OPT_BUSY_Msk            /*!< Option byte change ongoing flag */\n#define FLASH_OPTSR_BOR_LEV_Pos              (2U)\n#define FLASH_OPTSR_BOR_LEV_Msk              (0x3UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x0000000C */\n#define FLASH_OPTSR_BOR_LEV                  FLASH_OPTSR_BOR_LEV_Msk            /*!< Brownout level option status bit */\n#define FLASH_OPTSR_BOR_LEV_0                (0x1UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000004 */\n#define FLASH_OPTSR_BOR_LEV_1                (0x2UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000008 */\n#define FLASH_OPTSR_IWDG1_SW_Pos             (4U)\n#define FLASH_OPTSR_IWDG1_SW_Msk             (0x1UL << FLASH_OPTSR_IWDG1_SW_Pos) /*!< 0x00000010 */\n#define FLASH_OPTSR_IWDG1_SW                 FLASH_OPTSR_IWDG1_SW_Msk            /*!< IWDG1 control mode option status bit */\n#define FLASH_OPTSR_NRST_STOP_D1_Pos         (6U)\n#define FLASH_OPTSR_NRST_STOP_D1_Msk         (0x1UL << FLASH_OPTSR_NRST_STOP_D1_Pos) /*!< 0x00000040 */\n#define FLASH_OPTSR_NRST_STOP_D1             FLASH_OPTSR_NRST_STOP_D1_Msk            /*!< D1 domain DStop entry reset option status bit */\n#define FLASH_OPTSR_NRST_STBY_D1_Pos         (7U)\n#define FLASH_OPTSR_NRST_STBY_D1_Msk         (0x1UL << FLASH_OPTSR_NRST_STBY_D1_Pos) /*!< 0x00000080 */\n#define FLASH_OPTSR_NRST_STBY_D1             FLASH_OPTSR_NRST_STBY_D1_Msk            /*!< D1 domain DStandby entry reset option status bit */\n#define FLASH_OPTSR_RDP_Pos                  (8U)\n#define FLASH_OPTSR_RDP_Msk                  (0xFFUL << FLASH_OPTSR_RDP_Pos)   /*!< 0x0000FF00 */\n#define FLASH_OPTSR_RDP                      FLASH_OPTSR_RDP_Msk               /*!< Readout protection level option status byte */\n#define FLASH_OPTSR_FZ_IWDG_STOP_Pos         (17U)\n#define FLASH_OPTSR_FZ_IWDG_STOP_Msk         (0x1UL << FLASH_OPTSR_FZ_IWDG_STOP_Pos) /*!< 0x00020000 */\n#define FLASH_OPTSR_FZ_IWDG_STOP             FLASH_OPTSR_FZ_IWDG_STOP_Msk            /*!< IWDG Stop mode freeze option status bit */\n#define FLASH_OPTSR_FZ_IWDG_SDBY_Pos         (18U)\n#define FLASH_OPTSR_FZ_IWDG_SDBY_Msk         (0x1UL << FLASH_OPTSR_FZ_IWDG_SDBY_Pos) /*!< 0x00040000 */\n#define FLASH_OPTSR_FZ_IWDG_SDBY             FLASH_OPTSR_FZ_IWDG_SDBY_Msk            /*!< IWDG Standby mode freeze option status bit */\n#define FLASH_OPTSR_ST_RAM_SIZE_Pos          (19U)\n#define FLASH_OPTSR_ST_RAM_SIZE_Msk          (0x3UL << FLASH_OPTSR_ST_RAM_SIZE_Pos) /*!< 0x00180000 */\n#define FLASH_OPTSR_ST_RAM_SIZE              FLASH_OPTSR_ST_RAM_SIZE_Msk            /*!< ST RAM size option status */\n#define FLASH_OPTSR_ST_RAM_SIZE_0            (0x1UL << FLASH_OPTSR_ST_RAM_SIZE_Pos) /*!< 0x00080000 */\n#define FLASH_OPTSR_ST_RAM_SIZE_1            (0x2UL << FLASH_OPTSR_ST_RAM_SIZE_Pos) /*!< 0x00100000 */\n#define FLASH_OPTSR_SECURITY_Pos             (21U)\n#define FLASH_OPTSR_SECURITY_Msk             (0x1UL << FLASH_OPTSR_SECURITY_Pos) /*!< 0x00200000 */\n#define FLASH_OPTSR_SECURITY                 FLASH_OPTSR_SECURITY_Msk            /*!< Security enable option status bit */\n#define FLASH_OPTSR_IO_HSLV_Pos              (29U)\n#define FLASH_OPTSR_IO_HSLV_Msk              (0x1UL << FLASH_OPTSR_IO_HSLV_Pos) /*!< 0x20000000 */\n#define FLASH_OPTSR_IO_HSLV                  FLASH_OPTSR_IO_HSLV_Msk            /*!< I/O high-speed at low-voltage status bit */\n#define FLASH_OPTSR_OPTCHANGEERR_Pos         (30U)\n#define FLASH_OPTSR_OPTCHANGEERR_Msk         (0x1UL << FLASH_OPTSR_OPTCHANGEERR_Pos) /*!< 0x40000000 */\n#define FLASH_OPTSR_OPTCHANGEERR             FLASH_OPTSR_OPTCHANGEERR_Msk            /*!< Option byte change error flag */\n\n/*******************  Bits definition for FLASH_OPTCCR register  *******************/\n#define FLASH_OPTCCR_CLR_OPTCHANGEERR_Pos    (30U)\n#define FLASH_OPTCCR_CLR_OPTCHANGEERR_Msk    (0x1UL << FLASH_OPTCCR_CLR_OPTCHANGEERR_Pos) /*!< 0x40000000 */\n#define FLASH_OPTCCR_CLR_OPTCHANGEERR        FLASH_OPTCCR_CLR_OPTCHANGEERR_Msk            /*!< OPTCHANGEERR reset bit */\n\n/*******************  Bits definition for FLASH_PRAR register  *********************/\n#define FLASH_PRAR_PROT_AREA_START_Pos       (0U)\n#define FLASH_PRAR_PROT_AREA_START_Msk       (0xFFFUL << FLASH_PRAR_PROT_AREA_START_Pos) /*!< 0x00000FFF */\n#define FLASH_PRAR_PROT_AREA_START           FLASH_PRAR_PROT_AREA_START_Msk              /*!< PCROP area start status bits */\n#define FLASH_PRAR_PROT_AREA_END_Pos         (16U)\n#define FLASH_PRAR_PROT_AREA_END_Msk         (0xFFFUL << FLASH_PRAR_PROT_AREA_END_Pos) /*!< 0x0FFF0000 */\n#define FLASH_PRAR_PROT_AREA_END             FLASH_PRAR_PROT_AREA_END_Msk              /*!< PCROP area end status bits */\n#define FLASH_PRAR_DMEP_Pos                  (31U)\n#define FLASH_PRAR_DMEP_Msk                  (0x1UL << FLASH_PRAR_DMEP_Pos)    /*!< 0x80000000 */\n#define FLASH_PRAR_DMEP                      FLASH_PRAR_DMEP_Msk               /*!< PCROP protected erase enable option status bit */\n\n/*******************  Bits definition for FLASH_SCAR register  *********************/\n#define FLASH_SCAR_SEC_AREA_START_Pos        (0U)\n#define FLASH_SCAR_SEC_AREA_START_Msk        (0xFFFUL << FLASH_SCAR_SEC_AREA_START_Pos) /*!< 0x00000FFF */\n#define FLASH_SCAR_SEC_AREA_START            FLASH_SCAR_SEC_AREA_START_Msk              /*!< Secure-only area start status bits */\n#define FLASH_SCAR_SEC_AREA_END_Pos          (16U)\n#define FLASH_SCAR_SEC_AREA_END_Msk          (0xFFFUL << FLASH_SCAR_SEC_AREA_END_Pos) /*!< 0x0FFF0000 */\n#define FLASH_SCAR_SEC_AREA_END              FLASH_SCAR_SEC_AREA_END_Msk              /*!< Secure-only area end status bits */\n#define FLASH_SCAR_DMES_Pos                  (31U)\n#define FLASH_SCAR_DMES_Msk                  (0x1UL << FLASH_SCAR_DMES_Pos)    /*!< 0x80000000 */\n#define FLASH_SCAR_DMES                      FLASH_SCAR_DMES_Msk               /*!< Secure access protected erase enable option status bit */\n\n/*******************  Bits definition for FLASH_WPSN register  *********************/\n#define FLASH_WPSN_WRPSN_Pos                 (0U)\n#define FLASH_WPSN_WRPSN_Msk                 (0xFFUL << FLASH_WPSN_WRPSN_Pos)  /*!< 0x000000FF */\n#define FLASH_WPSN_WRPSN                     FLASH_WPSN_WRPSN_Msk              /*!< Sector write protection option status byte */\n\n/*******************  Bits definition for FLASH_BOOT_CUR register  ****************/\n#define FLASH_BOOT_ADD0_Pos                  (0U)\n#define FLASH_BOOT_ADD0_Msk                  (0xFFFFUL << FLASH_BOOT_ADD0_Pos) /*!< 0x0000FFFF */\n#define FLASH_BOOT_ADD0                      FLASH_BOOT_ADD0_Msk               /*!< Arm Cortex-M7 boot address 0 */\n#define FLASH_BOOT_ADD1_Pos                  (16U)\n#define FLASH_BOOT_ADD1_Msk                  (0xFFFFUL << FLASH_BOOT_ADD1_Pos) /*!< 0xFFFF0000 */\n#define FLASH_BOOT_ADD1                      FLASH_BOOT_ADD1_Msk               /*!< Arm Cortex-M7 boot address 1 */\n\n\n/*******************  Bits definition for FLASH_CRCCR register  ********************/\n#define FLASH_CRCCR_CRC_SECT_Pos             (0U)\n#define FLASH_CRCCR_CRC_SECT_Msk             (0x7UL << FLASH_CRCCR_CRC_SECT_Pos) /*!< 0x00000007 */\n#define FLASH_CRCCR_CRC_SECT                 FLASH_CRCCR_CRC_SECT_Msk            /*!< CRC sector number */\n#define FLASH_CRCCR_CRC_BY_SECT_Pos          (8U)\n#define FLASH_CRCCR_CRC_BY_SECT_Msk          (0x1UL << FLASH_CRCCR_CRC_BY_SECT_Pos) /*!< 0x00000100 */\n#define FLASH_CRCCR_CRC_BY_SECT              FLASH_CRCCR_CRC_BY_SECT_Msk            /*!< CRC sector mode select bit */\n#define FLASH_CRCCR_ADD_SECT_Pos             (9U)\n#define FLASH_CRCCR_ADD_SECT_Msk             (0x1UL << FLASH_CRCCR_ADD_SECT_Pos) /*!< 0x00000200 */\n#define FLASH_CRCCR_ADD_SECT                 FLASH_CRCCR_ADD_SECT_Msk            /*!< CRC sector select bit */\n#define FLASH_CRCCR_CLEAN_SECT_Pos           (10U)\n#define FLASH_CRCCR_CLEAN_SECT_Msk           (0x1UL << FLASH_CRCCR_CLEAN_SECT_Pos) /*!< 0x00000400 */\n#define FLASH_CRCCR_CLEAN_SECT               FLASH_CRCCR_CLEAN_SECT_Msk            /*!< CRC sector list clear bit */\n#define FLASH_CRCCR_START_CRC_Pos            (16U)\n#define FLASH_CRCCR_START_CRC_Msk            (0x1UL << FLASH_CRCCR_START_CRC_Pos) /*!< 0x00010000 */\n#define FLASH_CRCCR_START_CRC                FLASH_CRCCR_START_CRC_Msk            /*!< CRC start bit */\n#define FLASH_CRCCR_CLEAN_CRC_Pos            (17U)\n#define FLASH_CRCCR_CLEAN_CRC_Msk            (0x1UL << FLASH_CRCCR_CLEAN_CRC_Pos) /*!< 0x00020000 */\n#define FLASH_CRCCR_CLEAN_CRC                FLASH_CRCCR_CLEAN_CRC_Msk            /*!< CRC clear bit */\n#define FLASH_CRCCR_CRC_BURST_Pos            (20U)\n#define FLASH_CRCCR_CRC_BURST_Msk            (0x3UL << FLASH_CRCCR_CRC_BURST_Pos) /*!< 0x00300000 */\n#define FLASH_CRCCR_CRC_BURST                FLASH_CRCCR_CRC_BURST_Msk            /*!< CRC burst size */\n#define FLASH_CRCCR_CRC_BURST_0              (0x1UL << FLASH_CRCCR_CRC_BURST_Pos) /*!< 0x00100000 */\n#define FLASH_CRCCR_CRC_BURST_1              (0x2UL << FLASH_CRCCR_CRC_BURST_Pos) /*!< 0x00200000 */\n#define FLASH_CRCCR_ALL_BANK_Pos             (22U)\n#define FLASH_CRCCR_ALL_BANK_Msk             (0x1UL << FLASH_CRCCR_ALL_BANK_Pos) /*!< 0x00400000 */\n#define FLASH_CRCCR_ALL_BANK                 FLASH_CRCCR_ALL_BANK_Msk            /*!< CRC select bit */\n\n/*******************  Bits definition for FLASH_CRCSADD register  ****************/\n#define FLASH_CRCSADD_CRC_START_ADDR_Pos     (0U)\n#define FLASH_CRCSADD_CRC_START_ADDR_Msk     (0xFFFFFFFFUL << FLASH_CRCSADD_CRC_START_ADDR_Pos) /*!< 0xFFFFFFFF */\n#define FLASH_CRCSADD_CRC_START_ADDR         FLASH_CRCSADD_CRC_START_ADDR_Msk                   /*!< CRC start address */\n\n/*******************  Bits definition for FLASH_CRCEADD register  ****************/\n#define FLASH_CRCEADD_CRC_END_ADDR_Pos       (0U)\n#define FLASH_CRCEADD_CRC_END_ADDR_Msk       (0xFFFFFFFFUL << FLASH_CRCEADD_CRC_END_ADDR_Pos) /*!< 0xFFFFFFFF */\n#define FLASH_CRCEADD_CRC_END_ADDR           FLASH_CRCEADD_CRC_END_ADDR_Msk                   /*!< CRC end address */\n\n/*******************  Bits definition for FLASH_CRCDATA register  ***************/\n#define FLASH_CRCDATA_CRC_DATA_Pos           (0U)\n#define FLASH_CRCDATA_CRC_DATA_Msk           (0xFFFFFFFFUL << FLASH_CRCDATA_CRC_DATA_Pos) /*!< 0xFFFFFFFF */\n#define FLASH_CRCDATA_CRC_DATA               FLASH_CRCDATA_CRC_DATA_Msk                   /*!< CRC result */\n\n/*******************  Bits definition for FLASH_ECC_FA register  *******************/\n#define FLASH_ECC_FA_FAIL_ECC_ADDR_Pos       (0U)\n#define FLASH_ECC_FA_FAIL_ECC_ADDR_Msk       (0x7FFFUL << FLASH_ECC_FA_FAIL_ECC_ADDR_Pos) /*!< 0x00007FFF */\n#define FLASH_ECC_FA_FAIL_ECC_ADDR           FLASH_ECC_FA_FAIL_ECC_ADDR_Msk               /*!< ECC error address */\n\n/******************************************************************************/\n/*                                                                            */\n/*                          Flexible Memory Controller                        */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bit definition for FMC_BCR1 register  *******************/\n#define FMC_BCR1_CCLKEN_Pos        (20U)\n#define FMC_BCR1_CCLKEN_Msk        (0x1UL << FMC_BCR1_CCLKEN_Pos)              /*!< 0x00100000 */\n#define FMC_BCR1_CCLKEN            FMC_BCR1_CCLKEN_Msk                         /*!<Continuous clock enable     */\n#define FMC_BCR1_WFDIS_Pos         (21U)\n#define FMC_BCR1_WFDIS_Msk         (0x1UL << FMC_BCR1_WFDIS_Pos)               /*!< 0x00200000 */\n#define FMC_BCR1_WFDIS             FMC_BCR1_WFDIS_Msk                          /*!<Write FIFO Disable         */\n\n#define FMC_BCR1_BMAP_Pos          (24U)\n#define FMC_BCR1_BMAP_Msk          (0x3UL << FMC_BCR1_BMAP_Pos)                /*!< 0x03000000 */\n#define FMC_BCR1_BMAP              FMC_BCR1_BMAP_Msk                           /*!<BMAP[1:0] FMC bank mapping */\n#define FMC_BCR1_BMAP_0            (0x1UL << FMC_BCR1_BMAP_Pos)                 /*!< 0x01000000 */\n#define FMC_BCR1_BMAP_1            (0x2UL << FMC_BCR1_BMAP_Pos)                 /*!< 0x02000000 */\n\n#define FMC_BCR1_FMCEN_Pos         (31U)\n#define FMC_BCR1_FMCEN_Msk         (0x1UL << FMC_BCR1_FMCEN_Pos)               /*!< 0x80000000 */\n#define FMC_BCR1_FMCEN             FMC_BCR1_FMCEN_Msk                          /*!<FMC controller Enable */\n/******************  Bit definition for FMC_BCRx registers (x=1..4)  *********/\n#define FMC_BCRx_MBKEN_Pos         (0U)\n#define FMC_BCRx_MBKEN_Msk         (0x1UL << FMC_BCRx_MBKEN_Pos)               /*!< 0x00000001 */\n#define FMC_BCRx_MBKEN             FMC_BCRx_MBKEN_Msk                          /*!<Memory bank enable bit                 */\n#define FMC_BCRx_MUXEN_Pos         (1U)\n#define FMC_BCRx_MUXEN_Msk         (0x1UL << FMC_BCRx_MUXEN_Pos)               /*!< 0x00000002 */\n#define FMC_BCRx_MUXEN             FMC_BCRx_MUXEN_Msk                          /*!<Address/data multiplexing enable bit   */\n\n#define FMC_BCRx_MTYP_Pos          (2U)\n#define FMC_BCRx_MTYP_Msk          (0x3UL << FMC_BCRx_MTYP_Pos)                /*!< 0x0000000C */\n#define FMC_BCRx_MTYP              FMC_BCRx_MTYP_Msk                           /*!<MTYP[1:0] bits (Memory type)           */\n#define FMC_BCRx_MTYP_0            (0x1UL << FMC_BCRx_MTYP_Pos)                 /*!< 0x00000004 */\n#define FMC_BCRx_MTYP_1            (0x2UL << FMC_BCRx_MTYP_Pos)                 /*!< 0x00000008 */\n\n#define FMC_BCRx_MWID_Pos          (4U)\n#define FMC_BCRx_MWID_Msk          (0x3UL << FMC_BCRx_MWID_Pos)                /*!< 0x00000030 */\n#define FMC_BCRx_MWID              FMC_BCRx_MWID_Msk                           /*!<MWID[1:0] bits (Memory data bus width) */\n#define FMC_BCRx_MWID_0            (0x1UL << FMC_BCRx_MWID_Pos)                 /*!< 0x00000010 */\n#define FMC_BCRx_MWID_1            (0x2UL << FMC_BCRx_MWID_Pos)                 /*!< 0x00000020 */\n\n#define FMC_BCRx_FACCEN_Pos        (6U)\n#define FMC_BCRx_FACCEN_Msk        (0x1UL << FMC_BCRx_FACCEN_Pos)              /*!< 0x00000040 */\n#define FMC_BCRx_FACCEN            FMC_BCRx_FACCEN_Msk                         /*!<Flash access enable        */\n#define FMC_BCRx_BURSTEN_Pos       (8U)\n#define FMC_BCRx_BURSTEN_Msk       (0x1UL << FMC_BCRx_BURSTEN_Pos)             /*!< 0x00000100 */\n#define FMC_BCRx_BURSTEN           FMC_BCRx_BURSTEN_Msk                        /*!<Burst enable bit           */\n#define FMC_BCRx_WAITPOL_Pos       (9U)\n#define FMC_BCRx_WAITPOL_Msk       (0x1UL << FMC_BCRx_WAITPOL_Pos)             /*!< 0x00000200 */\n#define FMC_BCRx_WAITPOL           FMC_BCRx_WAITPOL_Msk                        /*!<Wait signal polarity bit   */\n#define FMC_BCRx_WAITCFG_Pos       (11U)\n#define FMC_BCRx_WAITCFG_Msk       (0x1UL << FMC_BCRx_WAITCFG_Pos)             /*!< 0x00000800 */\n#define FMC_BCRx_WAITCFG           FMC_BCRx_WAITCFG_Msk                        /*!<Wait timing configuration  */\n#define FMC_BCRx_WREN_Pos          (12U)\n#define FMC_BCRx_WREN_Msk          (0x1UL << FMC_BCRx_WREN_Pos)                /*!< 0x00001000 */\n#define FMC_BCRx_WREN              FMC_BCRx_WREN_Msk                           /*!<Write enable bit           */\n#define FMC_BCRx_WAITEN_Pos        (13U)\n#define FMC_BCRx_WAITEN_Msk        (0x1UL << FMC_BCRx_WAITEN_Pos)              /*!< 0x00002000 */\n#define FMC_BCRx_WAITEN            FMC_BCRx_WAITEN_Msk                         /*!<Wait enable bit            */\n#define FMC_BCRx_EXTMOD_Pos        (14U)\n#define FMC_BCRx_EXTMOD_Msk        (0x1UL << FMC_BCRx_EXTMOD_Pos)              /*!< 0x00004000 */\n#define FMC_BCRx_EXTMOD            FMC_BCRx_EXTMOD_Msk                         /*!<Extended mode enable       */\n#define FMC_BCRx_ASYNCWAIT_Pos     (15U)\n#define FMC_BCRx_ASYNCWAIT_Msk     (0x1UL << FMC_BCRx_ASYNCWAIT_Pos)           /*!< 0x00008000 */\n#define FMC_BCRx_ASYNCWAIT         FMC_BCRx_ASYNCWAIT_Msk                      /*!<Asynchronous wait          */\n\n#define FMC_BCRx_CPSIZE_Pos        (16U)\n#define FMC_BCRx_CPSIZE_Msk        (0x7UL << FMC_BCRx_CPSIZE_Pos)              /*!< 0x00070000 */\n#define FMC_BCRx_CPSIZE            FMC_BCRx_CPSIZE_Msk                         /*!<PSIZE[2:0] bits CRAM Page Size */\n#define FMC_BCRx_CPSIZE_0          (0x1UL << FMC_BCRx_CPSIZE_Pos)               /*!< 0x00010000 */\n#define FMC_BCRx_CPSIZE_1          (0x2UL << FMC_BCRx_CPSIZE_Pos)               /*!< 0x00020000 */\n#define FMC_BCRx_CPSIZE_2          (0x4UL << FMC_BCRx_CPSIZE_Pos)               /*!< 0x00040000 */\n\n#define FMC_BCRx_CBURSTRW_Pos      (19U)\n#define FMC_BCRx_CBURSTRW_Msk      (0x1UL << FMC_BCRx_CBURSTRW_Pos)            /*!< 0x00080000 */\n#define FMC_BCRx_CBURSTRW          FMC_BCRx_CBURSTRW_Msk                       /*!<Write burst enable         */\n\n/******************  Bit definition for FMC_BTRx registers (x=1..4)  *********/\n#define FMC_BTRx_ADDSET_Pos        (0U)\n#define FMC_BTRx_ADDSET_Msk        (0xFUL << FMC_BTRx_ADDSET_Pos)              /*!< 0x0000000F */\n#define FMC_BTRx_ADDSET            FMC_BTRx_ADDSET_Msk                         /*!<ADDSET[3:0] bits (Address setup phase duration) */\n#define FMC_BTRx_ADDSET_0          (0x1UL << FMC_BTRx_ADDSET_Pos)               /*!< 0x00000001 */\n#define FMC_BTRx_ADDSET_1          (0x2UL << FMC_BTRx_ADDSET_Pos)               /*!< 0x00000002 */\n#define FMC_BTRx_ADDSET_2          (0x4UL << FMC_BTRx_ADDSET_Pos)               /*!< 0x00000004 */\n#define FMC_BTRx_ADDSET_3          (0x8UL << FMC_BTRx_ADDSET_Pos)               /*!< 0x00000008 */\n\n#define FMC_BTRx_ADDHLD_Pos        (4U)\n#define FMC_BTRx_ADDHLD_Msk        (0xFUL << FMC_BTRx_ADDHLD_Pos)              /*!< 0x000000F0 */\n#define FMC_BTRx_ADDHLD            FMC_BTRx_ADDHLD_Msk                         /*!<ADDHLD[3:0] bits (Address-hold phase duration)  */\n#define FMC_BTRx_ADDHLD_0          (0x1UL << FMC_BTRx_ADDHLD_Pos)               /*!< 0x00000010 */\n#define FMC_BTRx_ADDHLD_1          (0x2UL << FMC_BTRx_ADDHLD_Pos)               /*!< 0x00000020 */\n#define FMC_BTRx_ADDHLD_2          (0x4UL << FMC_BTRx_ADDHLD_Pos)               /*!< 0x00000040 */\n#define FMC_BTRx_ADDHLD_3          (0x8UL << FMC_BTRx_ADDHLD_Pos)               /*!< 0x00000080 */\n\n#define FMC_BTRx_DATAST_Pos        (8U)\n#define FMC_BTRx_DATAST_Msk        (0xFFUL << FMC_BTRx_DATAST_Pos)             /*!< 0x0000FF00 */\n#define FMC_BTRx_DATAST            FMC_BTRx_DATAST_Msk                         /*!<DATAST [3:0] bits (Data-phase duration) */\n#define FMC_BTRx_DATAST_0          (0x01UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00000100 */\n#define FMC_BTRx_DATAST_1          (0x02UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00000200 */\n#define FMC_BTRx_DATAST_2          (0x04UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00000400 */\n#define FMC_BTRx_DATAST_3          (0x08UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00000800 */\n#define FMC_BTRx_DATAST_4          (0x10UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00001000 */\n#define FMC_BTRx_DATAST_5          (0x20UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00002000 */\n#define FMC_BTRx_DATAST_6          (0x40UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00004000 */\n#define FMC_BTRx_DATAST_7          (0x80UL << FMC_BTRx_DATAST_Pos)              /*!< 0x00008000 */\n\n#define FMC_BTRx_BUSTURN_Pos       (16U)\n#define FMC_BTRx_BUSTURN_Msk       (0xFUL << FMC_BTRx_BUSTURN_Pos)             /*!< 0x000F0000 */\n#define FMC_BTRx_BUSTURN           FMC_BTRx_BUSTURN_Msk                        /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\n#define FMC_BTRx_BUSTURN_0         (0x1UL << FMC_BTRx_BUSTURN_Pos)              /*!< 0x00010000 */\n#define FMC_BTRx_BUSTURN_1         (0x2UL << FMC_BTRx_BUSTURN_Pos)              /*!< 0x00020000 */\n#define FMC_BTRx_BUSTURN_2         (0x4UL << FMC_BTRx_BUSTURN_Pos)              /*!< 0x00040000 */\n#define FMC_BTRx_BUSTURN_3         (0x8UL << FMC_BTRx_BUSTURN_Pos)              /*!< 0x00080000 */\n\n#define FMC_BTRx_CLKDIV_Pos        (20U)\n#define FMC_BTRx_CLKDIV_Msk        (0xFUL << FMC_BTRx_CLKDIV_Pos)              /*!< 0x00F00000 */\n#define FMC_BTRx_CLKDIV            FMC_BTRx_CLKDIV_Msk                         /*!<CLKDIV[3:0] bits (Clock divide ratio) */\n#define FMC_BTRx_CLKDIV_0          (0x1UL << FMC_BTRx_CLKDIV_Pos)               /*!< 0x00100000 */\n#define FMC_BTRx_CLKDIV_1          (0x2UL << FMC_BTRx_CLKDIV_Pos)               /*!< 0x00200000 */\n#define FMC_BTRx_CLKDIV_2          (0x4UL << FMC_BTRx_CLKDIV_Pos)               /*!< 0x00400000 */\n#define FMC_BTRx_CLKDIV_3          (0x8UL << FMC_BTRx_CLKDIV_Pos)               /*!< 0x00800000 */\n\n#define FMC_BTRx_DATLAT_Pos        (24U)\n#define FMC_BTRx_DATLAT_Msk        (0xFUL << FMC_BTRx_DATLAT_Pos)              /*!< 0x0F000000 */\n#define FMC_BTRx_DATLAT            FMC_BTRx_DATLAT_Msk                         /*!<DATLA[3:0] bits (Data latency) */\n#define FMC_BTRx_DATLAT_0          (0x1UL << FMC_BTRx_DATLAT_Pos)               /*!< 0x01000000 */\n#define FMC_BTRx_DATLAT_1          (0x2UL << FMC_BTRx_DATLAT_Pos)               /*!< 0x02000000 */\n#define FMC_BTRx_DATLAT_2          (0x4UL << FMC_BTRx_DATLAT_Pos)               /*!< 0x04000000 */\n#define FMC_BTRx_DATLAT_3          (0x8UL << FMC_BTRx_DATLAT_Pos)               /*!< 0x08000000 */\n\n#define FMC_BTRx_ACCMOD_Pos        (28U)\n#define FMC_BTRx_ACCMOD_Msk        (0x3UL << FMC_BTRx_ACCMOD_Pos)              /*!< 0x30000000 */\n#define FMC_BTRx_ACCMOD            FMC_BTRx_ACCMOD_Msk                         /*!<ACCMOD[1:0] bits (Access mode) */\n#define FMC_BTRx_ACCMOD_0          (0x1UL << FMC_BTRx_ACCMOD_Pos)               /*!< 0x10000000 */\n#define FMC_BTRx_ACCMOD_1          (0x2UL << FMC_BTRx_ACCMOD_Pos)               /*!< 0x20000000 */\n\n/******************  Bit definition for FMC_BWTRx registers (x=1..4)  *********/\n#define FMC_BWTRx_ADDSET_Pos       (0U)\n#define FMC_BWTRx_ADDSET_Msk       (0xFUL << FMC_BWTRx_ADDSET_Pos)             /*!< 0x0000000F */\n#define FMC_BWTRx_ADDSET           FMC_BWTRx_ADDSET_Msk                        /*!<ADDSET[3:0] bits (Address setup phase duration) */\n#define FMC_BWTRx_ADDSET_0         (0x1UL << FMC_BWTRx_ADDSET_Pos)              /*!< 0x00000001 */\n#define FMC_BWTRx_ADDSET_1         (0x2UL << FMC_BWTRx_ADDSET_Pos)              /*!< 0x00000002 */\n#define FMC_BWTRx_ADDSET_2         (0x4UL << FMC_BWTRx_ADDSET_Pos)              /*!< 0x00000004 */\n#define FMC_BWTRx_ADDSET_3         (0x8UL << FMC_BWTRx_ADDSET_Pos)              /*!< 0x00000008 */\n\n#define FMC_BWTRx_ADDHLD_Pos       (4U)\n#define FMC_BWTRx_ADDHLD_Msk       (0xFUL << FMC_BWTRx_ADDHLD_Pos)             /*!< 0x000000F0 */\n#define FMC_BWTRx_ADDHLD           FMC_BWTRx_ADDHLD_Msk                        /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\n#define FMC_BWTRx_ADDHLD_0         (0x1UL << FMC_BWTRx_ADDHLD_Pos)              /*!< 0x00000010 */\n#define FMC_BWTRx_ADDHLD_1         (0x2UL << FMC_BWTRx_ADDHLD_Pos)              /*!< 0x00000020 */\n#define FMC_BWTRx_ADDHLD_2         (0x4UL << FMC_BWTRx_ADDHLD_Pos)              /*!< 0x00000040 */\n#define FMC_BWTRx_ADDHLD_3         (0x8UL << FMC_BWTRx_ADDHLD_Pos)              /*!< 0x00000080 */\n\n#define FMC_BWTRx_DATAST_Pos       (8U)\n#define FMC_BWTRx_DATAST_Msk       (0xFFUL << FMC_BWTRx_DATAST_Pos)            /*!< 0x0000FF00 */\n#define FMC_BWTRx_DATAST           FMC_BWTRx_DATAST_Msk                        /*!<DATAST [3:0] bits (Data-phase duration) */\n#define FMC_BWTRx_DATAST_0         (0x01UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00000100 */\n#define FMC_BWTRx_DATAST_1         (0x02UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00000200 */\n#define FMC_BWTRx_DATAST_2         (0x04UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00000400 */\n#define FMC_BWTRx_DATAST_3         (0x08UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00000800 */\n#define FMC_BWTRx_DATAST_4         (0x10UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00001000 */\n#define FMC_BWTRx_DATAST_5         (0x20UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00002000 */\n#define FMC_BWTRx_DATAST_6         (0x40UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00004000 */\n#define FMC_BWTRx_DATAST_7         (0x80UL << FMC_BWTRx_DATAST_Pos)             /*!< 0x00008000 */\n\n#define FMC_BWTRx_BUSTURN_Pos      (16U)\n#define FMC_BWTRx_BUSTURN_Msk      (0xFUL << FMC_BWTRx_BUSTURN_Pos)            /*!< 0x000F0000 */\n#define FMC_BWTRx_BUSTURN          FMC_BWTRx_BUSTURN_Msk                       /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\n#define FMC_BWTRx_BUSTURN_0        (0x1UL << FMC_BWTRx_BUSTURN_Pos)             /*!< 0x00010000 */\n#define FMC_BWTRx_BUSTURN_1        (0x2UL << FMC_BWTRx_BUSTURN_Pos)             /*!< 0x00020000 */\n#define FMC_BWTRx_BUSTURN_2        (0x4UL << FMC_BWTRx_BUSTURN_Pos)             /*!< 0x00040000 */\n#define FMC_BWTRx_BUSTURN_3        (0x8UL << FMC_BWTRx_BUSTURN_Pos)             /*!< 0x00080000 */\n\n#define FMC_BWTRx_ACCMOD_Pos       (28U)\n#define FMC_BWTRx_ACCMOD_Msk       (0x3UL << FMC_BWTRx_ACCMOD_Pos)             /*!< 0x30000000 */\n#define FMC_BWTRx_ACCMOD           FMC_BWTRx_ACCMOD_Msk                        /*!<ACCMOD[1:0] bits (Access mode) */\n#define FMC_BWTRx_ACCMOD_0         (0x1UL << FMC_BWTRx_ACCMOD_Pos)              /*!< 0x10000000 */\n#define FMC_BWTRx_ACCMOD_1         (0x2UL << FMC_BWTRx_ACCMOD_Pos)              /*!< 0x20000000 */\n\n/******************  Bit definition for FMC_PCR register  *******************/\n#define FMC_PCR_PWAITEN_Pos        (1U)\n#define FMC_PCR_PWAITEN_Msk        (0x1UL << FMC_PCR_PWAITEN_Pos)              /*!< 0x00000002 */\n#define FMC_PCR_PWAITEN            FMC_PCR_PWAITEN_Msk                         /*!<Wait feature enable bit                   */\n#define FMC_PCR_PBKEN_Pos          (2U)\n#define FMC_PCR_PBKEN_Msk          (0x1UL << FMC_PCR_PBKEN_Pos)                /*!< 0x00000004 */\n#define FMC_PCR_PBKEN              FMC_PCR_PBKEN_Msk                           /*!<NAND Flash memory bank enable bit */\n\n#define FMC_PCR_PWID_Pos           (4U)\n#define FMC_PCR_PWID_Msk           (0x3UL << FMC_PCR_PWID_Pos)                 /*!< 0x00000030 */\n#define FMC_PCR_PWID               FMC_PCR_PWID_Msk                            /*!<PWID[1:0] bits (NAND Flash databus width) */\n#define FMC_PCR_PWID_0             (0x1UL << FMC_PCR_PWID_Pos)                  /*!< 0x00000010 */\n#define FMC_PCR_PWID_1             (0x2UL << FMC_PCR_PWID_Pos)                  /*!< 0x00000020 */\n\n#define FMC_PCR_ECCEN_Pos          (6U)\n#define FMC_PCR_ECCEN_Msk          (0x1UL << FMC_PCR_ECCEN_Pos)                /*!< 0x00000040 */\n#define FMC_PCR_ECCEN              FMC_PCR_ECCEN_Msk                           /*!<ECC computation logic enable bit          */\n\n#define FMC_PCR_TCLR_Pos           (9U)\n#define FMC_PCR_TCLR_Msk           (0xFUL << FMC_PCR_TCLR_Pos)                 /*!< 0x00001E00 */\n#define FMC_PCR_TCLR               FMC_PCR_TCLR_Msk                            /*!<TCLR[3:0] bits (CLE to RE delay)          */\n#define FMC_PCR_TCLR_0             (0x1UL << FMC_PCR_TCLR_Pos)                  /*!< 0x00000200 */\n#define FMC_PCR_TCLR_1             (0x2UL << FMC_PCR_TCLR_Pos)                  /*!< 0x00000400 */\n#define FMC_PCR_TCLR_2             (0x4UL << FMC_PCR_TCLR_Pos)                  /*!< 0x00000800 */\n#define FMC_PCR_TCLR_3             (0x8UL << FMC_PCR_TCLR_Pos)                  /*!< 0x00001000 */\n\n#define FMC_PCR_TAR_Pos            (13U)\n#define FMC_PCR_TAR_Msk            (0xFUL << FMC_PCR_TAR_Pos)                  /*!< 0x0001E000 */\n#define FMC_PCR_TAR                FMC_PCR_TAR_Msk                             /*!<TAR[3:0] bits (ALE to RE delay)           */\n#define FMC_PCR_TAR_0              (0x1UL << FMC_PCR_TAR_Pos)                   /*!< 0x00002000 */\n#define FMC_PCR_TAR_1              (0x2UL << FMC_PCR_TAR_Pos)                   /*!< 0x00004000 */\n#define FMC_PCR_TAR_2              (0x4UL << FMC_PCR_TAR_Pos)                   /*!< 0x00008000 */\n#define FMC_PCR_TAR_3              (0x8UL << FMC_PCR_TAR_Pos)                   /*!< 0x00010000 */\n\n#define FMC_PCR_ECCPS_Pos          (17U)\n#define FMC_PCR_ECCPS_Msk          (0x7UL << FMC_PCR_ECCPS_Pos)                /*!< 0x000E0000 */\n#define FMC_PCR_ECCPS              FMC_PCR_ECCPS_Msk                           /*!<ECCPS[1:0] bits (ECC page size)           */\n#define FMC_PCR_ECCPS_0            (0x1UL << FMC_PCR_ECCPS_Pos)                 /*!< 0x00020000 */\n#define FMC_PCR_ECCPS_1            (0x2UL << FMC_PCR_ECCPS_Pos)                 /*!< 0x00040000 */\n#define FMC_PCR_ECCPS_2            (0x4UL << FMC_PCR_ECCPS_Pos)                 /*!< 0x00080000 */\n\n/*******************  Bit definition for FMC_SR register  *******************/\n#define FMC_SR_IRS_Pos             (0U)\n#define FMC_SR_IRS_Msk             (0x1UL << FMC_SR_IRS_Pos)                   /*!< 0x00000001 */\n#define FMC_SR_IRS                 FMC_SR_IRS_Msk                              /*!<Interrupt Rising Edge status                */\n#define FMC_SR_ILS_Pos             (1U)\n#define FMC_SR_ILS_Msk             (0x1UL << FMC_SR_ILS_Pos)                   /*!< 0x00000002 */\n#define FMC_SR_ILS                 FMC_SR_ILS_Msk                              /*!<Interrupt Level status                      */\n#define FMC_SR_IFS_Pos             (2U)\n#define FMC_SR_IFS_Msk             (0x1UL << FMC_SR_IFS_Pos)                   /*!< 0x00000004 */\n#define FMC_SR_IFS                 FMC_SR_IFS_Msk                              /*!<Interrupt Falling Edge status               */\n#define FMC_SR_IREN_Pos            (3U)\n#define FMC_SR_IREN_Msk            (0x1UL << FMC_SR_IREN_Pos)                  /*!< 0x00000008 */\n#define FMC_SR_IREN                FMC_SR_IREN_Msk                             /*!<Interrupt Rising Edge detection Enable bit  */\n#define FMC_SR_ILEN_Pos            (4U)\n#define FMC_SR_ILEN_Msk            (0x1UL << FMC_SR_ILEN_Pos)                  /*!< 0x00000010 */\n#define FMC_SR_ILEN                FMC_SR_ILEN_Msk                             /*!<Interrupt Level detection Enable bit        */\n#define FMC_SR_IFEN_Pos            (5U)\n#define FMC_SR_IFEN_Msk            (0x1UL << FMC_SR_IFEN_Pos)                  /*!< 0x00000020 */\n#define FMC_SR_IFEN                FMC_SR_IFEN_Msk                             /*!<Interrupt Falling Edge detection Enable bit */\n#define FMC_SR_FEMPT_Pos           (6U)\n#define FMC_SR_FEMPT_Msk           (0x1UL << FMC_SR_FEMPT_Pos)                 /*!< 0x00000040 */\n#define FMC_SR_FEMPT               FMC_SR_FEMPT_Msk                            /*!<FIFO empty                                  */\n\n/******************  Bit definition for FMC_PMEM register  ******************/\n#define FMC_PMEM_MEMSET_Pos       (0U)\n#define FMC_PMEM_MEMSET_Msk       (0xFFUL << FMC_PMEM_MEMSET_Pos)            /*!< 0x000000FF */\n#define FMC_PMEM_MEMSET           FMC_PMEM_MEMSET_Msk                        /*!<MEMSET[7:0] bits (Common memory setup time) */\n#define FMC_PMEM_MEMSET_0         (0x01UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000001 */\n#define FMC_PMEM_MEMSET_1         (0x02UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000002 */\n#define FMC_PMEM_MEMSET_2         (0x04UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000004 */\n#define FMC_PMEM_MEMSET_3         (0x08UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000008 */\n#define FMC_PMEM_MEMSET_4         (0x10UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000010 */\n#define FMC_PMEM_MEMSET_5         (0x20UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000020 */\n#define FMC_PMEM_MEMSET_6         (0x40UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000040 */\n#define FMC_PMEM_MEMSET_7         (0x80UL << FMC_PMEM_MEMSET_Pos)             /*!< 0x00000080 */\n\n#define FMC_PMEM_MEMWAIT_Pos      (8U)\n#define FMC_PMEM_MEMWAIT_Msk      (0xFFUL << FMC_PMEM_MEMWAIT_Pos)           /*!< 0x0000FF00 */\n#define FMC_PMEM_MEMWAIT          FMC_PMEM_MEMWAIT_Msk                       /*!<MEMWAIT[7:0] bits (Common memory wait time) */\n#define FMC_PMEM_MEMWAIT_0        (0x01UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00000100 */\n#define FMC_PMEM_MEMWAIT_1        (0x02UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00000200 */\n#define FMC_PMEM_MEMWAIT_2        (0x04UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00000400 */\n#define FMC_PMEM_MEMWAIT_3        (0x08UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00000800 */\n#define FMC_PMEM_MEMWAIT_4        (0x10UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00001000 */\n#define FMC_PMEM_MEMWAIT_5        (0x20UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00002000 */\n#define FMC_PMEM_MEMWAIT_6        (0x40UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00004000 */\n#define FMC_PMEM_MEMWAIT_7        (0x80UL << FMC_PMEM_MEMWAIT_Pos)            /*!< 0x00008000 */\n\n#define FMC_PMEM_MEMHOLD_Pos      (16U)\n#define FMC_PMEM_MEMHOLD_Msk      (0xFFUL << FMC_PMEM_MEMHOLD_Pos)           /*!< 0x00FF0000 */\n#define FMC_PMEM_MEMHOLD          FMC_PMEM_MEMHOLD_Msk                       /*!<MEMHOLD[7:0] bits (Common memory hold time) */\n#define FMC_PMEM_MEMHOLD_0        (0x01UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00010000 */\n#define FMC_PMEM_MEMHOLD_1        (0x02UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00020000 */\n#define FMC_PMEM_MEMHOLD_2        (0x04UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00040000 */\n#define FMC_PMEM_MEMHOLD_3        (0x08UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00080000 */\n#define FMC_PMEM_MEMHOLD_4        (0x10UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00100000 */\n#define FMC_PMEM_MEMHOLD_5        (0x20UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00200000 */\n#define FMC_PMEM_MEMHOLD_6        (0x40UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00400000 */\n#define FMC_PMEM_MEMHOLD_7        (0x80UL << FMC_PMEM_MEMHOLD_Pos)            /*!< 0x00800000 */\n\n#define FMC_PMEM_MEMHIZ_Pos       (24U)\n#define FMC_PMEM_MEMHIZ_Msk       (0xFFUL << FMC_PMEM_MEMHIZ_Pos)            /*!< 0xFF000000 */\n#define FMC_PMEM_MEMHIZ           FMC_PMEM_MEMHIZ_Msk                        /*!<MEMHIZ[7:0] bits (Common memory databus HiZ time) */\n#define FMC_PMEM_MEMHIZ_0         (0x01UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x01000000 */\n#define FMC_PMEM_MEMHIZ_1         (0x02UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x02000000 */\n#define FMC_PMEM_MEMHIZ_2         (0x04UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x04000000 */\n#define FMC_PMEM_MEMHIZ_3         (0x08UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x08000000 */\n#define FMC_PMEM_MEMHIZ_4         (0x10UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x10000000 */\n#define FMC_PMEM_MEMHIZ_5         (0x20UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x20000000 */\n#define FMC_PMEM_MEMHIZ_6         (0x40UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x40000000 */\n#define FMC_PMEM_MEMHIZ_7         (0x80UL << FMC_PMEM_MEMHIZ_Pos)             /*!< 0x80000000 */\n\n/******************  Bit definition for FMC_PATT register  ******************/\n#define FMC_PATT_ATTSET_Pos       (0U)\n#define FMC_PATT_ATTSET_Msk       (0xFFUL << FMC_PATT_ATTSET_Pos)            /*!< 0x000000FF */\n#define FMC_PATT_ATTSET           FMC_PATT_ATTSET_Msk                        /*!<ATTSET[7:0] bits (Attribute memory setup time) */\n#define FMC_PATT_ATTSET_0         (0x01UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000001 */\n#define FMC_PATT_ATTSET_1         (0x02UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000002 */\n#define FMC_PATT_ATTSET_2         (0x04UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000004 */\n#define FMC_PATT_ATTSET_3         (0x08UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000008 */\n#define FMC_PATT_ATTSET_4         (0x10UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000010 */\n#define FMC_PATT_ATTSET_5         (0x20UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000020 */\n#define FMC_PATT_ATTSET_6         (0x40UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000040 */\n#define FMC_PATT_ATTSET_7         (0x80UL << FMC_PATT_ATTSET_Pos)             /*!< 0x00000080 */\n\n#define FMC_PATT_ATTWAIT_Pos      (8U)\n#define FMC_PATT_ATTWAIT_Msk      (0xFFUL << FMC_PATT_ATTWAIT_Pos)           /*!< 0x0000FF00 */\n#define FMC_PATT_ATTWAIT          FMC_PATT_ATTWAIT_Msk                       /*!<ATTWAIT[7:0] bits (Attribute memory wait time) */\n#define FMC_PATT_ATTWAIT_0        (0x01UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00000100 */\n#define FMC_PATT_ATTWAIT_1        (0x02UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00000200 */\n#define FMC_PATT_ATTWAIT_2        (0x04UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00000400 */\n#define FMC_PATT_ATTWAIT_3        (0x08UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00000800 */\n#define FMC_PATT_ATTWAIT_4        (0x10UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00001000 */\n#define FMC_PATT_ATTWAIT_5        (0x20UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00002000 */\n#define FMC_PATT_ATTWAIT_6        (0x40UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00004000 */\n#define FMC_PATT_ATTWAIT_7        (0x80UL << FMC_PATT_ATTWAIT_Pos)            /*!< 0x00008000 */\n\n#define FMC_PATT_ATTHOLD_Pos      (16U)\n#define FMC_PATT_ATTHOLD_Msk      (0xFFUL << FMC_PATT_ATTHOLD_Pos)           /*!< 0x00FF0000 */\n#define FMC_PATT_ATTHOLD          FMC_PATT_ATTHOLD_Msk                       /*!<ATTHOLD[7:0] bits (Attribute memory hold time) */\n#define FMC_PATT_ATTHOLD_0        (0x01UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00010000 */\n#define FMC_PATT_ATTHOLD_1        (0x02UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00020000 */\n#define FMC_PATT_ATTHOLD_2        (0x04UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00040000 */\n#define FMC_PATT_ATTHOLD_3        (0x08UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00080000 */\n#define FMC_PATT_ATTHOLD_4        (0x10UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00100000 */\n#define FMC_PATT_ATTHOLD_5        (0x20UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00200000 */\n#define FMC_PATT_ATTHOLD_6        (0x40UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00400000 */\n#define FMC_PATT_ATTHOLD_7        (0x80UL << FMC_PATT_ATTHOLD_Pos)            /*!< 0x00800000 */\n\n#define FMC_PATT_ATTHIZ_Pos       (24U)\n#define FMC_PATT_ATTHIZ_Msk       (0xFFUL << FMC_PATT_ATTHIZ_Pos)            /*!< 0xFF000000 */\n#define FMC_PATT_ATTHIZ           FMC_PATT_ATTHIZ_Msk                        /*!<ATTHIZ[7:0] bits (Attribute memory databus HiZ time) */\n#define FMC_PATT_ATTHIZ_0         (0x01UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x01000000 */\n#define FMC_PATT_ATTHIZ_1         (0x02UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x02000000 */\n#define FMC_PATT_ATTHIZ_2         (0x04UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x04000000 */\n#define FMC_PATT_ATTHIZ_3         (0x08UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x08000000 */\n#define FMC_PATT_ATTHIZ_4         (0x10UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x10000000 */\n#define FMC_PATT_ATTHIZ_5         (0x20UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x20000000 */\n#define FMC_PATT_ATTHIZ_6         (0x40UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x40000000 */\n#define FMC_PATT_ATTHIZ_7         (0x80UL << FMC_PATT_ATTHIZ_Pos)             /*!< 0x80000000 */\n\n/******************  Bit definition for FMC_ECCR3 register  ******************/\n#define FMC_ECCR3_ECC3_Pos         (0U)\n#define FMC_ECCR3_ECC3_Msk         (0xFFFFFFFFUL << FMC_ECCR3_ECC3_Pos)        /*!< 0xFFFFFFFF */\n#define FMC_ECCR3_ECC3             FMC_ECCR3_ECC3_Msk                          /*!<ECC result */\n\n/******************  Bit definition for FMC_SDCRx registers (x=1..4)  *********/\n#define FMC_SDCRx_NC_Pos           (0U)\n#define FMC_SDCRx_NC_Msk           (0x3UL << FMC_SDCRx_NC_Pos)                 /*!< 0x00000003 */\n#define FMC_SDCRx_NC               FMC_SDCRx_NC_Msk                            /*!<NC[1:0] bits (Number of column bits) */\n#define FMC_SDCRx_NC_0             (0x1UL << FMC_SDCRx_NC_Pos)                  /*!< 0x00000001 */\n#define FMC_SDCRx_NC_1             (0x2UL << FMC_SDCRx_NC_Pos)                  /*!< 0x00000002 */\n\n#define FMC_SDCRx_NR_Pos           (2U)\n#define FMC_SDCRx_NR_Msk           (0x3UL << FMC_SDCRx_NR_Pos)                 /*!< 0x0000000C */\n#define FMC_SDCRx_NR               FMC_SDCRx_NR_Msk                            /*!<NR[1:0] bits (Number of row bits) */\n#define FMC_SDCRx_NR_0             (0x1UL << FMC_SDCRx_NR_Pos)                  /*!< 0x00000004 */\n#define FMC_SDCRx_NR_1             (0x2UL << FMC_SDCRx_NR_Pos)                  /*!< 0x00000008 */\n\n#define FMC_SDCRx_MWID_Pos         (4U)\n#define FMC_SDCRx_MWID_Msk         (0x3UL << FMC_SDCRx_MWID_Pos)               /*!< 0x00000030 */\n#define FMC_SDCRx_MWID             FMC_SDCRx_MWID_Msk                          /*!<NR[1:0] bits (Number of row bits) */\n#define FMC_SDCRx_MWID_0           (0x1UL << FMC_SDCRx_MWID_Pos)                /*!< 0x00000010 */\n#define FMC_SDCRx_MWID_1           (0x2UL << FMC_SDCRx_MWID_Pos)                /*!< 0x00000020 */\n\n#define FMC_SDCRx_NB_Pos           (6U)\n#define FMC_SDCRx_NB_Msk           (0x1UL << FMC_SDCRx_NB_Pos)                 /*!< 0x00000040 */\n#define FMC_SDCRx_NB               FMC_SDCRx_NB_Msk                            /*!<Number of internal bank */\n\n#define FMC_SDCRx_CAS_Pos          (7U)\n#define FMC_SDCRx_CAS_Msk          (0x3UL << FMC_SDCRx_CAS_Pos)                /*!< 0x00000180 */\n#define FMC_SDCRx_CAS              FMC_SDCRx_CAS_Msk                           /*!<CAS[1:0] bits (CAS latency) */\n#define FMC_SDCRx_CAS_0            (0x1UL << FMC_SDCRx_CAS_Pos)                 /*!< 0x00000080 */\n#define FMC_SDCRx_CAS_1            (0x2UL << FMC_SDCRx_CAS_Pos)                 /*!< 0x00000100 */\n\n#define FMC_SDCRx_WP_Pos           (9U)\n#define FMC_SDCRx_WP_Msk           (0x1UL << FMC_SDCRx_WP_Pos)                 /*!< 0x00000200 */\n#define FMC_SDCRx_WP               FMC_SDCRx_WP_Msk                            /*!<Write protection */\n\n#define FMC_SDCRx_SDCLK_Pos        (10U)\n#define FMC_SDCRx_SDCLK_Msk        (0x3UL << FMC_SDCRx_SDCLK_Pos)              /*!< 0x00000C00 */\n#define FMC_SDCRx_SDCLK            FMC_SDCRx_SDCLK_Msk                         /*!<SDRAM clock configuration */\n#define FMC_SDCRx_SDCLK_0          (0x1UL << FMC_SDCRx_SDCLK_Pos)               /*!< 0x00000400 */\n#define FMC_SDCRx_SDCLK_1          (0x2UL << FMC_SDCRx_SDCLK_Pos)               /*!< 0x00000800 */\n\n#define FMC_SDCRx_RBURST_Pos       (12U)\n#define FMC_SDCRx_RBURST_Msk       (0x1UL << FMC_SDCRx_RBURST_Pos)             /*!< 0x00001000 */\n#define FMC_SDCRx_RBURST           FMC_SDCRx_RBURST_Msk                        /*!<Read burst */\n\n#define FMC_SDCRx_RPIPE_Pos        (13U)\n#define FMC_SDCRx_RPIPE_Msk        (0x3UL << FMC_SDCRx_RPIPE_Pos)              /*!< 0x00006000 */\n#define FMC_SDCRx_RPIPE            FMC_SDCRx_RPIPE_Msk                         /*!<Write protection */\n#define FMC_SDCRx_RPIPE_0          (0x1UL << FMC_SDCRx_RPIPE_Pos)               /*!< 0x00002000 */\n#define FMC_SDCRx_RPIPE_1          (0x2UL << FMC_SDCRx_RPIPE_Pos)               /*!< 0x00004000 */\n\n/******************  Bit definition for FMC_SDTRx(1,2) register  ******************/\n#define FMC_SDTRx_TMRD_Pos         (0U)\n#define FMC_SDTRx_TMRD_Msk         (0xFUL << FMC_SDTRx_TMRD_Pos)               /*!< 0x0000000F */\n#define FMC_SDTRx_TMRD             FMC_SDTRx_TMRD_Msk                          /*!<TMRD[3:0] bits (Load mode register to active) */\n#define FMC_SDTRx_TMRD_0           (0x1UL << FMC_SDTRx_TMRD_Pos)                /*!< 0x00000001 */\n#define FMC_SDTRx_TMRD_1           (0x2UL << FMC_SDTRx_TMRD_Pos)                /*!< 0x00000002 */\n#define FMC_SDTRx_TMRD_2           (0x4UL << FMC_SDTRx_TMRD_Pos)                /*!< 0x00000004 */\n#define FMC_SDTRx_TMRD_3           (0x8UL << FMC_SDTRx_TMRD_Pos)                /*!< 0x00000008 */\n\n#define FMC_SDTRx_TXSR_Pos         (4U)\n#define FMC_SDTRx_TXSR_Msk         (0xFUL << FMC_SDTRx_TXSR_Pos)               /*!< 0x000000F0 */\n#define FMC_SDTRx_TXSR             FMC_SDTRx_TXSR_Msk                          /*!<TXSR[3:0] bits (Exit self refresh) */\n#define FMC_SDTRx_TXSR_0           (0x1UL << FMC_SDTRx_TXSR_Pos)                /*!< 0x00000010 */\n#define FMC_SDTRx_TXSR_1           (0x2UL << FMC_SDTRx_TXSR_Pos)                /*!< 0x00000020 */\n#define FMC_SDTRx_TXSR_2           (0x4UL << FMC_SDTRx_TXSR_Pos)                /*!< 0x00000040 */\n#define FMC_SDTRx_TXSR_3           (0x8UL << FMC_SDTRx_TXSR_Pos)                /*!< 0x00000080 */\n\n#define FMC_SDTRx_TRAS_Pos         (8U)\n#define FMC_SDTRx_TRAS_Msk         (0xFUL << FMC_SDTRx_TRAS_Pos)               /*!< 0x00000F00 */\n#define FMC_SDTRx_TRAS             FMC_SDTRx_TRAS_Msk                          /*!<TRAS[3:0] bits (Self refresh time) */\n#define FMC_SDTRx_TRAS_0           (0x1UL << FMC_SDTRx_TRAS_Pos)                /*!< 0x00000100 */\n#define FMC_SDTRx_TRAS_1           (0x2UL << FMC_SDTRx_TRAS_Pos)                /*!< 0x00000200 */\n#define FMC_SDTRx_TRAS_2           (0x4UL << FMC_SDTRx_TRAS_Pos)                /*!< 0x00000400 */\n#define FMC_SDTRx_TRAS_3           (0x8UL << FMC_SDTRx_TRAS_Pos)                /*!< 0x00000800 */\n\n#define FMC_SDTRx_TRC_Pos          (12U)\n#define FMC_SDTRx_TRC_Msk          (0xFUL << FMC_SDTRx_TRC_Pos)                /*!< 0x0000F000 */\n#define FMC_SDTRx_TRC              FMC_SDTRx_TRC_Msk                           /*!<TRC[2:0] bits (Row cycle delay) */\n#define FMC_SDTRx_TRC_0            (0x1UL << FMC_SDTRx_TRC_Pos)                 /*!< 0x00001000 */\n#define FMC_SDTRx_TRC_1            (0x2UL << FMC_SDTRx_TRC_Pos)                 /*!< 0x00002000 */\n#define FMC_SDTRx_TRC_2            (0x4UL << FMC_SDTRx_TRC_Pos)                 /*!< 0x00004000 */\n\n#define FMC_SDTRx_TWR_Pos          (16U)\n#define FMC_SDTRx_TWR_Msk          (0xFUL << FMC_SDTRx_TWR_Pos)                /*!< 0x000F0000 */\n#define FMC_SDTRx_TWR              FMC_SDTRx_TWR_Msk                           /*!<TRC[2:0] bits (Write recovery delay) */\n#define FMC_SDTRx_TWR_0            (0x1UL << FMC_SDTRx_TWR_Pos)                 /*!< 0x00010000 */\n#define FMC_SDTRx_TWR_1            (0x2UL << FMC_SDTRx_TWR_Pos)                 /*!< 0x00020000 */\n#define FMC_SDTRx_TWR_2            (0x4UL << FMC_SDTRx_TWR_Pos)                 /*!< 0x00040000 */\n\n#define FMC_SDTRx_TRP_Pos          (20U)\n#define FMC_SDTRx_TRP_Msk          (0xFUL << FMC_SDTRx_TRP_Pos)                /*!< 0x00F00000 */\n#define FMC_SDTRx_TRP              FMC_SDTRx_TRP_Msk                           /*!<TRP[2:0] bits (Row precharge delay) */\n#define FMC_SDTRx_TRP_0            (0x1UL << FMC_SDTRx_TRP_Pos)                 /*!< 0x00100000 */\n#define FMC_SDTRx_TRP_1            (0x2UL << FMC_SDTRx_TRP_Pos)                 /*!< 0x00200000 */\n#define FMC_SDTRx_TRP_2            (0x4UL << FMC_SDTRx_TRP_Pos)                 /*!< 0x00400000 */\n\n#define FMC_SDTRx_TRCD_Pos         (24U)\n#define FMC_SDTRx_TRCD_Msk         (0xFUL << FMC_SDTRx_TRCD_Pos)               /*!< 0x0F000000 */\n#define FMC_SDTRx_TRCD             FMC_SDTRx_TRCD_Msk                          /*!<TRP[2:0] bits (Row to column delay) */\n#define FMC_SDTRx_TRCD_0           (0x1UL << FMC_SDTRx_TRCD_Pos)                /*!< 0x01000000 */\n#define FMC_SDTRx_TRCD_1           (0x2UL << FMC_SDTRx_TRCD_Pos)                /*!< 0x02000000 */\n#define FMC_SDTRx_TRCD_2           (0x4UL << FMC_SDTRx_TRCD_Pos)                /*!< 0x04000000 */\n\n/******************  Bit definition for FMC_SDCMR register  ******************/\n#define FMC_SDCMR_MODE_Pos         (0U)\n#define FMC_SDCMR_MODE_Msk         (0x7UL << FMC_SDCMR_MODE_Pos)               /*!< 0x00000007 */\n#define FMC_SDCMR_MODE             FMC_SDCMR_MODE_Msk                          /*!<MODE[2:0] bits (Command mode) */\n#define FMC_SDCMR_MODE_0           (0x1UL << FMC_SDCMR_MODE_Pos)                /*!< 0x00000001 */\n#define FMC_SDCMR_MODE_1           (0x2UL << FMC_SDCMR_MODE_Pos)                /*!< 0x00000002 */\n#define FMC_SDCMR_MODE_2           (0x3UL << FMC_SDCMR_MODE_Pos)                /*!< 0x00000003 */\n\n#define FMC_SDCMR_CTB2_Pos         (3U)\n#define FMC_SDCMR_CTB2_Msk         (0x1UL << FMC_SDCMR_CTB2_Pos)               /*!< 0x00000008 */\n#define FMC_SDCMR_CTB2             FMC_SDCMR_CTB2_Msk                          /*!<Command target 2 */\n\n#define FMC_SDCMR_CTB1_Pos         (4U)\n#define FMC_SDCMR_CTB1_Msk         (0x1UL << FMC_SDCMR_CTB1_Pos)               /*!< 0x00000010 */\n#define FMC_SDCMR_CTB1             FMC_SDCMR_CTB1_Msk                          /*!<Command target 1 */\n\n#define FMC_SDCMR_NRFS_Pos         (5U)\n#define FMC_SDCMR_NRFS_Msk         (0xFUL << FMC_SDCMR_NRFS_Pos)               /*!< 0x000001E0 */\n#define FMC_SDCMR_NRFS             FMC_SDCMR_NRFS_Msk                          /*!<NRFS[3:0] bits (Number of auto-refresh) */\n#define FMC_SDCMR_NRFS_0           (0x1UL << FMC_SDCMR_NRFS_Pos)                /*!< 0x00000020 */\n#define FMC_SDCMR_NRFS_1           (0x2UL << FMC_SDCMR_NRFS_Pos)                /*!< 0x00000040 */\n#define FMC_SDCMR_NRFS_2           (0x4UL << FMC_SDCMR_NRFS_Pos)                /*!< 0x00000080 */\n#define FMC_SDCMR_NRFS_3           (0x8UL << FMC_SDCMR_NRFS_Pos)                /*!< 0x00000100 */\n\n#define FMC_SDCMR_MRD_Pos          (9U)\n#define FMC_SDCMR_MRD_Msk          (0x1FFFUL << FMC_SDCMR_MRD_Pos)             /*!< 0x003FFE00 */\n#define FMC_SDCMR_MRD              FMC_SDCMR_MRD_Msk                           /*!<MRD[12:0] bits (Mode register definition) */\n\n/******************  Bit definition for FMC_SDRTR register  ******************/\n#define FMC_SDRTR_CRE_Pos          (0U)\n#define FMC_SDRTR_CRE_Msk          (0x1UL << FMC_SDRTR_CRE_Pos)                /*!< 0x00000001 */\n#define FMC_SDRTR_CRE              FMC_SDRTR_CRE_Msk                           /*!<Clear refresh error flag */\n\n#define FMC_SDRTR_COUNT_Pos        (1U)\n#define FMC_SDRTR_COUNT_Msk        (0x1FFFUL << FMC_SDRTR_COUNT_Pos)           /*!< 0x00003FFE */\n#define FMC_SDRTR_COUNT            FMC_SDRTR_COUNT_Msk                         /*!<COUNT[12:0] bits (Refresh timer count) */\n\n#define FMC_SDRTR_REIE_Pos         (14U)\n#define FMC_SDRTR_REIE_Msk         (0x1UL << FMC_SDRTR_REIE_Pos)               /*!< 0x00004000 */\n#define FMC_SDRTR_REIE             FMC_SDRTR_REIE_Msk                          /*!<RES interrupt enable */\n\n/******************  Bit definition for FMC_SDSR register  ******************/\n#define FMC_SDSR_RE_Pos            (0U)\n#define FMC_SDSR_RE_Msk            (0x1UL << FMC_SDSR_RE_Pos)                  /*!< 0x00000001 */\n#define FMC_SDSR_RE                FMC_SDSR_RE_Msk                             /*!<Refresh error flag */\n\n#define FMC_SDSR_MODES1_Pos        (1U)\n#define FMC_SDSR_MODES1_Msk        (0x3UL << FMC_SDSR_MODES1_Pos)              /*!< 0x00000006 */\n#define FMC_SDSR_MODES1            FMC_SDSR_MODES1_Msk                         /*!<MODES1[1:0]bits (Status mode for bank 1) */\n#define FMC_SDSR_MODES1_0          (0x1UL << FMC_SDSR_MODES1_Pos)               /*!< 0x00000002 */\n#define FMC_SDSR_MODES1_1          (0x2UL << FMC_SDSR_MODES1_Pos)               /*!< 0x00000004 */\n\n#define FMC_SDSR_MODES2_Pos        (3U)\n#define FMC_SDSR_MODES2_Msk        (0x3UL << FMC_SDSR_MODES2_Pos)              /*!< 0x00000018 */\n#define FMC_SDSR_MODES2            FMC_SDSR_MODES2_Msk                         /*!<MODES2[1:0]bits (Status mode for bank 2) */\n#define FMC_SDSR_MODES2_0          (0x1UL << FMC_SDSR_MODES2_Pos)               /*!< 0x00000008 */\n#define FMC_SDSR_MODES2_1          (0x2UL << FMC_SDSR_MODES2_Pos)               /*!< 0x00000010 */\n\n/******************************************************************************/\n/*                                                                            */\n/*                            General Purpose I/O                             */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bits definition for GPIO_MODER register  *****************/\n#define GPIO_MODER_MODE0_Pos           (0U)\n#define GPIO_MODER_MODE0_Msk           (0x3UL << GPIO_MODER_MODE0_Pos)         /*!< 0x00000003 */\n#define GPIO_MODER_MODE0               GPIO_MODER_MODE0_Msk\n#define GPIO_MODER_MODE0_0             (0x1UL << GPIO_MODER_MODE0_Pos)          /*!< 0x00000001 */\n#define GPIO_MODER_MODE0_1             (0x2UL << GPIO_MODER_MODE0_Pos)          /*!< 0x00000002 */\n\n#define GPIO_MODER_MODE1_Pos           (2U)\n#define GPIO_MODER_MODE1_Msk           (0x3UL << GPIO_MODER_MODE1_Pos)         /*!< 0x0000000C */\n#define GPIO_MODER_MODE1               GPIO_MODER_MODE1_Msk\n#define GPIO_MODER_MODE1_0             (0x1UL << GPIO_MODER_MODE1_Pos)          /*!< 0x00000004 */\n#define GPIO_MODER_MODE1_1             (0x2UL << GPIO_MODER_MODE1_Pos)          /*!< 0x00000008 */\n\n#define GPIO_MODER_MODE2_Pos           (4U)\n#define GPIO_MODER_MODE2_Msk           (0x3UL << GPIO_MODER_MODE2_Pos)         /*!< 0x00000030 */\n#define GPIO_MODER_MODE2               GPIO_MODER_MODE2_Msk\n#define GPIO_MODER_MODE2_0             (0x1UL << GPIO_MODER_MODE2_Pos)          /*!< 0x00000010 */\n#define GPIO_MODER_MODE2_1             (0x2UL << GPIO_MODER_MODE2_Pos)          /*!< 0x00000020 */\n\n#define GPIO_MODER_MODE3_Pos           (6U)\n#define GPIO_MODER_MODE3_Msk           (0x3UL << GPIO_MODER_MODE3_Pos)         /*!< 0x000000C0 */\n#define GPIO_MODER_MODE3               GPIO_MODER_MODE3_Msk\n#define GPIO_MODER_MODE3_0             (0x1UL << GPIO_MODER_MODE3_Pos)          /*!< 0x00000040 */\n#define GPIO_MODER_MODE3_1             (0x2UL << GPIO_MODER_MODE3_Pos)          /*!< 0x00000080 */\n\n#define GPIO_MODER_MODE4_Pos           (8U)\n#define GPIO_MODER_MODE4_Msk           (0x3UL << GPIO_MODER_MODE4_Pos)         /*!< 0x00000300 */\n#define GPIO_MODER_MODE4               GPIO_MODER_MODE4_Msk\n#define GPIO_MODER_MODE4_0             (0x1UL << GPIO_MODER_MODE4_Pos)          /*!< 0x00000100 */\n#define GPIO_MODER_MODE4_1             (0x2UL << GPIO_MODER_MODE4_Pos)          /*!< 0x00000200 */\n\n#define GPIO_MODER_MODE5_Pos           (10U)\n#define GPIO_MODER_MODE5_Msk           (0x3UL << GPIO_MODER_MODE5_Pos)         /*!< 0x00000C00 */\n#define GPIO_MODER_MODE5               GPIO_MODER_MODE5_Msk\n#define GPIO_MODER_MODE5_0             (0x1UL << GPIO_MODER_MODE5_Pos)          /*!< 0x00000400 */\n#define GPIO_MODER_MODE5_1             (0x2UL << GPIO_MODER_MODE5_Pos)          /*!< 0x00000800 */\n\n#define GPIO_MODER_MODE6_Pos           (12U)\n#define GPIO_MODER_MODE6_Msk           (0x3UL << GPIO_MODER_MODE6_Pos)         /*!< 0x00003000 */\n#define GPIO_MODER_MODE6               GPIO_MODER_MODE6_Msk\n#define GPIO_MODER_MODE6_0             (0x1UL << GPIO_MODER_MODE6_Pos)          /*!< 0x00001000 */\n#define GPIO_MODER_MODE6_1             (0x2UL << GPIO_MODER_MODE6_Pos)          /*!< 0x00002000 */\n\n#define GPIO_MODER_MODE7_Pos           (14U)\n#define GPIO_MODER_MODE7_Msk           (0x3UL << GPIO_MODER_MODE7_Pos)         /*!< 0x0000C000 */\n#define GPIO_MODER_MODE7               GPIO_MODER_MODE7_Msk\n#define GPIO_MODER_MODE7_0             (0x1UL << GPIO_MODER_MODE7_Pos)          /*!< 0x00004000 */\n#define GPIO_MODER_MODE7_1             (0x2UL << GPIO_MODER_MODE7_Pos)          /*!< 0x00008000 */\n\n#define GPIO_MODER_MODE8_Pos           (16U)\n#define GPIO_MODER_MODE8_Msk           (0x3UL << GPIO_MODER_MODE8_Pos)         /*!< 0x00030000 */\n#define GPIO_MODER_MODE8               GPIO_MODER_MODE8_Msk\n#define GPIO_MODER_MODE8_0             (0x1UL << GPIO_MODER_MODE8_Pos)          /*!< 0x00010000 */\n#define GPIO_MODER_MODE8_1             (0x2UL << GPIO_MODER_MODE8_Pos)          /*!< 0x00020000 */\n\n#define GPIO_MODER_MODE9_Pos           (18U)\n#define GPIO_MODER_MODE9_Msk           (0x3UL << GPIO_MODER_MODE9_Pos)         /*!< 0x000C0000 */\n#define GPIO_MODER_MODE9               GPIO_MODER_MODE9_Msk\n#define GPIO_MODER_MODE9_0             (0x1UL << GPIO_MODER_MODE9_Pos)          /*!< 0x00040000 */\n#define GPIO_MODER_MODE9_1             (0x2UL << GPIO_MODER_MODE9_Pos)          /*!< 0x00080000 */\n\n#define GPIO_MODER_MODE10_Pos          (20U)\n#define GPIO_MODER_MODE10_Msk          (0x3UL << GPIO_MODER_MODE10_Pos)        /*!< 0x00300000 */\n#define GPIO_MODER_MODE10              GPIO_MODER_MODE10_Msk\n#define GPIO_MODER_MODE10_0            (0x1UL << GPIO_MODER_MODE10_Pos)         /*!< 0x00100000 */\n#define GPIO_MODER_MODE10_1            (0x2UL << GPIO_MODER_MODE10_Pos)         /*!< 0x00200000 */\n\n#define GPIO_MODER_MODE11_Pos          (22U)\n#define GPIO_MODER_MODE11_Msk          (0x3UL << GPIO_MODER_MODE11_Pos)        /*!< 0x00C00000 */\n#define GPIO_MODER_MODE11              GPIO_MODER_MODE11_Msk\n#define GPIO_MODER_MODE11_0            (0x1UL << GPIO_MODER_MODE11_Pos)         /*!< 0x00400000 */\n#define GPIO_MODER_MODE11_1            (0x2UL << GPIO_MODER_MODE11_Pos)         /*!< 0x00800000 */\n\n#define GPIO_MODER_MODE12_Pos          (24U)\n#define GPIO_MODER_MODE12_Msk          (0x3UL << GPIO_MODER_MODE12_Pos)        /*!< 0x03000000 */\n#define GPIO_MODER_MODE12              GPIO_MODER_MODE12_Msk\n#define GPIO_MODER_MODE12_0            (0x1UL << GPIO_MODER_MODE12_Pos)         /*!< 0x01000000 */\n#define GPIO_MODER_MODE12_1            (0x2UL << GPIO_MODER_MODE12_Pos)         /*!< 0x02000000 */\n\n#define GPIO_MODER_MODE13_Pos          (26U)\n#define GPIO_MODER_MODE13_Msk          (0x3UL << GPIO_MODER_MODE13_Pos)        /*!< 0x0C000000 */\n#define GPIO_MODER_MODE13              GPIO_MODER_MODE13_Msk\n#define GPIO_MODER_MODE13_0            (0x1UL << GPIO_MODER_MODE13_Pos)         /*!< 0x04000000 */\n#define GPIO_MODER_MODE13_1            (0x2UL << GPIO_MODER_MODE13_Pos)         /*!< 0x08000000 */\n\n#define GPIO_MODER_MODE14_Pos          (28U)\n#define GPIO_MODER_MODE14_Msk          (0x3UL << GPIO_MODER_MODE14_Pos)        /*!< 0x30000000 */\n#define GPIO_MODER_MODE14              GPIO_MODER_MODE14_Msk\n#define GPIO_MODER_MODE14_0            (0x1UL << GPIO_MODER_MODE14_Pos)         /*!< 0x10000000 */\n#define GPIO_MODER_MODE14_1            (0x2UL << GPIO_MODER_MODE14_Pos)         /*!< 0x20000000 */\n\n#define GPIO_MODER_MODE15_Pos          (30U)\n#define GPIO_MODER_MODE15_Msk          (0x3UL << GPIO_MODER_MODE15_Pos)        /*!< 0xC0000000 */\n#define GPIO_MODER_MODE15              GPIO_MODER_MODE15_Msk\n#define GPIO_MODER_MODE15_0            (0x1UL << GPIO_MODER_MODE15_Pos)         /*!< 0x40000000 */\n#define GPIO_MODER_MODE15_1            (0x2UL << GPIO_MODER_MODE15_Pos)         /*!< 0x80000000 */\n\n/******************  Bits definition for GPIO_OTYPER register  ****************/\n#define GPIO_OTYPER_OT0_Pos            (0U)\n#define GPIO_OTYPER_OT0_Msk            (0x1UL << GPIO_OTYPER_OT0_Pos)          /*!< 0x00000001 */\n#define GPIO_OTYPER_OT0                GPIO_OTYPER_OT0_Msk\n#define GPIO_OTYPER_OT1_Pos            (1U)\n#define GPIO_OTYPER_OT1_Msk            (0x1UL << GPIO_OTYPER_OT1_Pos)          /*!< 0x00000002 */\n#define GPIO_OTYPER_OT1                GPIO_OTYPER_OT1_Msk\n#define GPIO_OTYPER_OT2_Pos            (2U)\n#define GPIO_OTYPER_OT2_Msk            (0x1UL << GPIO_OTYPER_OT2_Pos)          /*!< 0x00000004 */\n#define GPIO_OTYPER_OT2                GPIO_OTYPER_OT2_Msk\n#define GPIO_OTYPER_OT3_Pos            (3U)\n#define GPIO_OTYPER_OT3_Msk            (0x1UL << GPIO_OTYPER_OT3_Pos)          /*!< 0x00000008 */\n#define GPIO_OTYPER_OT3                GPIO_OTYPER_OT3_Msk\n#define GPIO_OTYPER_OT4_Pos            (4U)\n#define GPIO_OTYPER_OT4_Msk            (0x1UL << GPIO_OTYPER_OT4_Pos)          /*!< 0x00000010 */\n#define GPIO_OTYPER_OT4                GPIO_OTYPER_OT4_Msk\n#define GPIO_OTYPER_OT5_Pos            (5U)\n#define GPIO_OTYPER_OT5_Msk            (0x1UL << GPIO_OTYPER_OT5_Pos)          /*!< 0x00000020 */\n#define GPIO_OTYPER_OT5                GPIO_OTYPER_OT5_Msk\n#define GPIO_OTYPER_OT6_Pos            (6U)\n#define GPIO_OTYPER_OT6_Msk            (0x1UL << GPIO_OTYPER_OT6_Pos)          /*!< 0x00000040 */\n#define GPIO_OTYPER_OT6                GPIO_OTYPER_OT6_Msk\n#define GPIO_OTYPER_OT7_Pos            (7U)\n#define GPIO_OTYPER_OT7_Msk            (0x1UL << GPIO_OTYPER_OT7_Pos)          /*!< 0x00000080 */\n#define GPIO_OTYPER_OT7                GPIO_OTYPER_OT7_Msk\n#define GPIO_OTYPER_OT8_Pos            (8U)\n#define GPIO_OTYPER_OT8_Msk            (0x1UL << GPIO_OTYPER_OT8_Pos)          /*!< 0x00000100 */\n#define GPIO_OTYPER_OT8                GPIO_OTYPER_OT8_Msk\n#define GPIO_OTYPER_OT9_Pos            (9U)\n#define GPIO_OTYPER_OT9_Msk            (0x1UL << GPIO_OTYPER_OT9_Pos)          /*!< 0x00000200 */\n#define GPIO_OTYPER_OT9                GPIO_OTYPER_OT9_Msk\n#define GPIO_OTYPER_OT10_Pos           (10U)\n#define GPIO_OTYPER_OT10_Msk           (0x1UL << GPIO_OTYPER_OT10_Pos)         /*!< 0x00000400 */\n#define GPIO_OTYPER_OT10               GPIO_OTYPER_OT10_Msk\n#define GPIO_OTYPER_OT11_Pos           (11U)\n#define GPIO_OTYPER_OT11_Msk           (0x1UL << GPIO_OTYPER_OT11_Pos)         /*!< 0x00000800 */\n#define GPIO_OTYPER_OT11               GPIO_OTYPER_OT11_Msk\n#define GPIO_OTYPER_OT12_Pos           (12U)\n#define GPIO_OTYPER_OT12_Msk           (0x1UL << GPIO_OTYPER_OT12_Pos)         /*!< 0x00001000 */\n#define GPIO_OTYPER_OT12               GPIO_OTYPER_OT12_Msk\n#define GPIO_OTYPER_OT13_Pos           (13U)\n#define GPIO_OTYPER_OT13_Msk           (0x1UL << GPIO_OTYPER_OT13_Pos)         /*!< 0x00002000 */\n#define GPIO_OTYPER_OT13               GPIO_OTYPER_OT13_Msk\n#define GPIO_OTYPER_OT14_Pos           (14U)\n#define GPIO_OTYPER_OT14_Msk           (0x1UL << GPIO_OTYPER_OT14_Pos)         /*!< 0x00004000 */\n#define GPIO_OTYPER_OT14               GPIO_OTYPER_OT14_Msk\n#define GPIO_OTYPER_OT15_Pos           (15U)\n#define GPIO_OTYPER_OT15_Msk           (0x1UL << GPIO_OTYPER_OT15_Pos)         /*!< 0x00008000 */\n#define GPIO_OTYPER_OT15               GPIO_OTYPER_OT15_Msk\n\n/******************  Bits definition for GPIO_OSPEEDR register  ***************/\n#define GPIO_OSPEEDR_OSPEED0_Pos       (0U)\n#define GPIO_OSPEEDR_OSPEED0_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED0_Pos)     /*!< 0x00000003 */\n#define GPIO_OSPEEDR_OSPEED0           GPIO_OSPEEDR_OSPEED0_Msk\n#define GPIO_OSPEEDR_OSPEED0_0         (0x1UL << GPIO_OSPEEDR_OSPEED0_Pos)      /*!< 0x00000001 */\n#define GPIO_OSPEEDR_OSPEED0_1         (0x2UL << GPIO_OSPEEDR_OSPEED0_Pos)      /*!< 0x00000002 */\n\n#define GPIO_OSPEEDR_OSPEED1_Pos       (2U)\n#define GPIO_OSPEEDR_OSPEED1_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED1_Pos)     /*!< 0x0000000C */\n#define GPIO_OSPEEDR_OSPEED1           GPIO_OSPEEDR_OSPEED1_Msk\n#define GPIO_OSPEEDR_OSPEED1_0         (0x1UL << GPIO_OSPEEDR_OSPEED1_Pos)      /*!< 0x00000004 */\n#define GPIO_OSPEEDR_OSPEED1_1         (0x2UL << GPIO_OSPEEDR_OSPEED1_Pos)      /*!< 0x00000008 */\n\n#define GPIO_OSPEEDR_OSPEED2_Pos       (4U)\n#define GPIO_OSPEEDR_OSPEED2_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED2_Pos)     /*!< 0x00000030 */\n#define GPIO_OSPEEDR_OSPEED2           GPIO_OSPEEDR_OSPEED2_Msk\n#define GPIO_OSPEEDR_OSPEED2_0         (0x1UL << GPIO_OSPEEDR_OSPEED2_Pos)      /*!< 0x00000010 */\n#define GPIO_OSPEEDR_OSPEED2_1         (0x2UL << GPIO_OSPEEDR_OSPEED2_Pos)      /*!< 0x00000020 */\n\n#define GPIO_OSPEEDR_OSPEED3_Pos       (6U)\n#define GPIO_OSPEEDR_OSPEED3_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED3_Pos)     /*!< 0x000000C0 */\n#define GPIO_OSPEEDR_OSPEED3           GPIO_OSPEEDR_OSPEED3_Msk\n#define GPIO_OSPEEDR_OSPEED3_0         (0x1UL << GPIO_OSPEEDR_OSPEED3_Pos)      /*!< 0x00000040 */\n#define GPIO_OSPEEDR_OSPEED3_1         (0x2UL << GPIO_OSPEEDR_OSPEED3_Pos)      /*!< 0x00000080 */\n\n#define GPIO_OSPEEDR_OSPEED4_Pos       (8U)\n#define GPIO_OSPEEDR_OSPEED4_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED4_Pos)     /*!< 0x00000300 */\n#define GPIO_OSPEEDR_OSPEED4           GPIO_OSPEEDR_OSPEED4_Msk\n#define GPIO_OSPEEDR_OSPEED4_0         (0x1UL << GPIO_OSPEEDR_OSPEED4_Pos)      /*!< 0x00000100 */\n#define GPIO_OSPEEDR_OSPEED4_1         (0x2UL << GPIO_OSPEEDR_OSPEED4_Pos)      /*!< 0x00000200 */\n\n#define GPIO_OSPEEDR_OSPEED5_Pos       (10U)\n#define GPIO_OSPEEDR_OSPEED5_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED5_Pos)     /*!< 0x00000C00 */\n#define GPIO_OSPEEDR_OSPEED5           GPIO_OSPEEDR_OSPEED5_Msk\n#define GPIO_OSPEEDR_OSPEED5_0         (0x1UL << GPIO_OSPEEDR_OSPEED5_Pos)      /*!< 0x00000400 */\n#define GPIO_OSPEEDR_OSPEED5_1         (0x2UL << GPIO_OSPEEDR_OSPEED5_Pos)      /*!< 0x00000800 */\n\n#define GPIO_OSPEEDR_OSPEED6_Pos       (12U)\n#define GPIO_OSPEEDR_OSPEED6_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED6_Pos)     /*!< 0x00003000 */\n#define GPIO_OSPEEDR_OSPEED6           GPIO_OSPEEDR_OSPEED6_Msk\n#define GPIO_OSPEEDR_OSPEED6_0         (0x1UL << GPIO_OSPEEDR_OSPEED6_Pos)      /*!< 0x00001000 */\n#define GPIO_OSPEEDR_OSPEED6_1         (0x2UL << GPIO_OSPEEDR_OSPEED6_Pos)      /*!< 0x00002000 */\n\n#define GPIO_OSPEEDR_OSPEED7_Pos       (14U)\n#define GPIO_OSPEEDR_OSPEED7_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED7_Pos)     /*!< 0x0000C000 */\n#define GPIO_OSPEEDR_OSPEED7           GPIO_OSPEEDR_OSPEED7_Msk\n#define GPIO_OSPEEDR_OSPEED7_0         (0x1UL << GPIO_OSPEEDR_OSPEED7_Pos)      /*!< 0x00004000 */\n#define GPIO_OSPEEDR_OSPEED7_1         (0x2UL << GPIO_OSPEEDR_OSPEED7_Pos)      /*!< 0x00008000 */\n\n#define GPIO_OSPEEDR_OSPEED8_Pos       (16U)\n#define GPIO_OSPEEDR_OSPEED8_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED8_Pos)     /*!< 0x00030000 */\n#define GPIO_OSPEEDR_OSPEED8           GPIO_OSPEEDR_OSPEED8_Msk\n#define GPIO_OSPEEDR_OSPEED8_0         (0x1UL << GPIO_OSPEEDR_OSPEED8_Pos)      /*!< 0x00010000 */\n#define GPIO_OSPEEDR_OSPEED8_1         (0x2UL << GPIO_OSPEEDR_OSPEED8_Pos)      /*!< 0x00020000 */\n\n#define GPIO_OSPEEDR_OSPEED9_Pos       (18U)\n#define GPIO_OSPEEDR_OSPEED9_Msk       (0x3UL << GPIO_OSPEEDR_OSPEED9_Pos)     /*!< 0x000C0000 */\n#define GPIO_OSPEEDR_OSPEED9           GPIO_OSPEEDR_OSPEED9_Msk\n#define GPIO_OSPEEDR_OSPEED9_0         (0x1UL << GPIO_OSPEEDR_OSPEED9_Pos)      /*!< 0x00040000 */\n#define GPIO_OSPEEDR_OSPEED9_1         (0x2UL << GPIO_OSPEEDR_OSPEED9_Pos)      /*!< 0x00080000 */\n\n#define GPIO_OSPEEDR_OSPEED10_Pos      (20U)\n#define GPIO_OSPEEDR_OSPEED10_Msk      (0x3UL << GPIO_OSPEEDR_OSPEED10_Pos)    /*!< 0x00300000 */\n#define GPIO_OSPEEDR_OSPEED10          GPIO_OSPEEDR_OSPEED10_Msk\n#define GPIO_OSPEEDR_OSPEED10_0        (0x1UL << GPIO_OSPEEDR_OSPEED10_Pos)     /*!< 0x00100000 */\n#define GPIO_OSPEEDR_OSPEED10_1        (0x2UL << GPIO_OSPEEDR_OSPEED10_Pos)     /*!< 0x00200000 */\n\n#define GPIO_OSPEEDR_OSPEED11_Pos      (22U)\n#define GPIO_OSPEEDR_OSPEED11_Msk      (0x3UL << GPIO_OSPEEDR_OSPEED11_Pos)    /*!< 0x00C00000 */\n#define GPIO_OSPEEDR_OSPEED11          GPIO_OSPEEDR_OSPEED11_Msk\n#define GPIO_OSPEEDR_OSPEED11_0        (0x1UL << GPIO_OSPEEDR_OSPEED11_Pos)     /*!< 0x00400000 */\n#define GPIO_OSPEEDR_OSPEED11_1        (0x2UL << GPIO_OSPEEDR_OSPEED11_Pos)     /*!< 0x00800000 */\n\n#define GPIO_OSPEEDR_OSPEED12_Pos      (24U)\n#define GPIO_OSPEEDR_OSPEED12_Msk      (0x3UL << GPIO_OSPEEDR_OSPEED12_Pos)    /*!< 0x03000000 */\n#define GPIO_OSPEEDR_OSPEED12          GPIO_OSPEEDR_OSPEED12_Msk\n#define GPIO_OSPEEDR_OSPEED12_0        (0x1UL << GPIO_OSPEEDR_OSPEED12_Pos)     /*!< 0x01000000 */\n#define GPIO_OSPEEDR_OSPEED12_1        (0x2UL << GPIO_OSPEEDR_OSPEED12_Pos)     /*!< 0x02000000 */\n\n#define GPIO_OSPEEDR_OSPEED13_Pos      (26U)\n#define GPIO_OSPEEDR_OSPEED13_Msk      (0x3UL << GPIO_OSPEEDR_OSPEED13_Pos)    /*!< 0x0C000000 */\n#define GPIO_OSPEEDR_OSPEED13          GPIO_OSPEEDR_OSPEED13_Msk\n#define GPIO_OSPEEDR_OSPEED13_0        (0x1UL << GPIO_OSPEEDR_OSPEED13_Pos)     /*!< 0x04000000 */\n#define GPIO_OSPEEDR_OSPEED13_1        (0x2UL << GPIO_OSPEEDR_OSPEED13_Pos)     /*!< 0x08000000 */\n\n#define GPIO_OSPEEDR_OSPEED14_Pos      (28U)\n#define GPIO_OSPEEDR_OSPEED14_Msk      (0x3UL << GPIO_OSPEEDR_OSPEED14_Pos)    /*!< 0x30000000 */\n#define GPIO_OSPEEDR_OSPEED14          GPIO_OSPEEDR_OSPEED14_Msk\n#define GPIO_OSPEEDR_OSPEED14_0        (0x1UL << GPIO_OSPEEDR_OSPEED14_Pos)     /*!< 0x10000000 */\n#define GPIO_OSPEEDR_OSPEED14_1        (0x2UL << GPIO_OSPEEDR_OSPEED14_Pos)     /*!< 0x20000000 */\n\n#define GPIO_OSPEEDR_OSPEED15_Pos      (30U)\n#define GPIO_OSPEEDR_OSPEED15_Msk      (0x3UL << GPIO_OSPEEDR_OSPEED15_Pos)    /*!< 0xC0000000 */\n#define GPIO_OSPEEDR_OSPEED15          GPIO_OSPEEDR_OSPEED15_Msk\n#define GPIO_OSPEEDR_OSPEED15_0        (0x1UL << GPIO_OSPEEDR_OSPEED15_Pos)     /*!< 0x40000000 */\n#define GPIO_OSPEEDR_OSPEED15_1        (0x2UL << GPIO_OSPEEDR_OSPEED15_Pos)     /*!< 0x80000000 */\n\n/******************  Bits definition for GPIO_PUPDR register  *****************/\n#define GPIO_PUPDR_PUPD0_Pos           (0U)\n#define GPIO_PUPDR_PUPD0_Msk           (0x3UL << GPIO_PUPDR_PUPD0_Pos)         /*!< 0x00000003 */\n#define GPIO_PUPDR_PUPD0               GPIO_PUPDR_PUPD0_Msk\n#define GPIO_PUPDR_PUPD0_0             (0x1UL << GPIO_PUPDR_PUPD0_Pos)          /*!< 0x00000001 */\n#define GPIO_PUPDR_PUPD0_1             (0x2UL << GPIO_PUPDR_PUPD0_Pos)          /*!< 0x00000002 */\n\n#define GPIO_PUPDR_PUPD1_Pos           (2U)\n#define GPIO_PUPDR_PUPD1_Msk           (0x3UL << GPIO_PUPDR_PUPD1_Pos)         /*!< 0x0000000C */\n#define GPIO_PUPDR_PUPD1               GPIO_PUPDR_PUPD1_Msk\n#define GPIO_PUPDR_PUPD1_0             (0x1UL << GPIO_PUPDR_PUPD1_Pos)          /*!< 0x00000004 */\n#define GPIO_PUPDR_PUPD1_1             (0x2UL << GPIO_PUPDR_PUPD1_Pos)          /*!< 0x00000008 */\n\n#define GPIO_PUPDR_PUPD2_Pos           (4U)\n#define GPIO_PUPDR_PUPD2_Msk           (0x3UL << GPIO_PUPDR_PUPD2_Pos)         /*!< 0x00000030 */\n#define GPIO_PUPDR_PUPD2               GPIO_PUPDR_PUPD2_Msk\n#define GPIO_PUPDR_PUPD2_0             (0x1UL << GPIO_PUPDR_PUPD2_Pos)          /*!< 0x00000010 */\n#define GPIO_PUPDR_PUPD2_1             (0x2UL << GPIO_PUPDR_PUPD2_Pos)          /*!< 0x00000020 */\n\n#define GPIO_PUPDR_PUPD3_Pos           (6U)\n#define GPIO_PUPDR_PUPD3_Msk           (0x3UL << GPIO_PUPDR_PUPD3_Pos)         /*!< 0x000000C0 */\n#define GPIO_PUPDR_PUPD3               GPIO_PUPDR_PUPD3_Msk\n#define GPIO_PUPDR_PUPD3_0             (0x1UL << GPIO_PUPDR_PUPD3_Pos)          /*!< 0x00000040 */\n#define GPIO_PUPDR_PUPD3_1             (0x2UL << GPIO_PUPDR_PUPD3_Pos)          /*!< 0x00000080 */\n\n#define GPIO_PUPDR_PUPD4_Pos           (8U)\n#define GPIO_PUPDR_PUPD4_Msk           (0x3UL << GPIO_PUPDR_PUPD4_Pos)         /*!< 0x00000300 */\n#define GPIO_PUPDR_PUPD4               GPIO_PUPDR_PUPD4_Msk\n#define GPIO_PUPDR_PUPD4_0             (0x1UL << GPIO_PUPDR_PUPD4_Pos)          /*!< 0x00000100 */\n#define GPIO_PUPDR_PUPD4_1             (0x2UL << GPIO_PUPDR_PUPD4_Pos)          /*!< 0x00000200 */\n\n#define GPIO_PUPDR_PUPD5_Pos           (10U)\n#define GPIO_PUPDR_PUPD5_Msk           (0x3UL << GPIO_PUPDR_PUPD5_Pos)         /*!< 0x00000C00 */\n#define GPIO_PUPDR_PUPD5               GPIO_PUPDR_PUPD5_Msk\n#define GPIO_PUPDR_PUPD5_0             (0x1UL << GPIO_PUPDR_PUPD5_Pos)          /*!< 0x00000400 */\n#define GPIO_PUPDR_PUPD5_1             (0x2UL << GPIO_PUPDR_PUPD5_Pos)          /*!< 0x00000800 */\n\n#define GPIO_PUPDR_PUPD6_Pos           (12U)\n#define GPIO_PUPDR_PUPD6_Msk           (0x3UL << GPIO_PUPDR_PUPD6_Pos)         /*!< 0x00003000 */\n#define GPIO_PUPDR_PUPD6               GPIO_PUPDR_PUPD6_Msk\n#define GPIO_PUPDR_PUPD6_0             (0x1UL << GPIO_PUPDR_PUPD6_Pos)          /*!< 0x00001000 */\n#define GPIO_PUPDR_PUPD6_1             (0x2UL << GPIO_PUPDR_PUPD6_Pos)          /*!< 0x00002000 */\n\n#define GPIO_PUPDR_PUPD7_Pos           (14U)\n#define GPIO_PUPDR_PUPD7_Msk           (0x3UL << GPIO_PUPDR_PUPD7_Pos)         /*!< 0x0000C000 */\n#define GPIO_PUPDR_PUPD7               GPIO_PUPDR_PUPD7_Msk\n#define GPIO_PUPDR_PUPD7_0             (0x1UL << GPIO_PUPDR_PUPD7_Pos)          /*!< 0x00004000 */\n#define GPIO_PUPDR_PUPD7_1             (0x2UL << GPIO_PUPDR_PUPD7_Pos)          /*!< 0x00008000 */\n\n#define GPIO_PUPDR_PUPD8_Pos           (16U)\n#define GPIO_PUPDR_PUPD8_Msk           (0x3UL << GPIO_PUPDR_PUPD8_Pos)         /*!< 0x00030000 */\n#define GPIO_PUPDR_PUPD8               GPIO_PUPDR_PUPD8_Msk\n#define GPIO_PUPDR_PUPD8_0             (0x1UL << GPIO_PUPDR_PUPD8_Pos)          /*!< 0x00010000 */\n#define GPIO_PUPDR_PUPD8_1             (0x2UL << GPIO_PUPDR_PUPD8_Pos)          /*!< 0x00020000 */\n\n#define GPIO_PUPDR_PUPD9_Pos           (18U)\n#define GPIO_PUPDR_PUPD9_Msk           (0x3UL << GPIO_PUPDR_PUPD9_Pos)         /*!< 0x000C0000 */\n#define GPIO_PUPDR_PUPD9               GPIO_PUPDR_PUPD9_Msk\n#define GPIO_PUPDR_PUPD9_0             (0x1UL << GPIO_PUPDR_PUPD9_Pos)          /*!< 0x00040000 */\n#define GPIO_PUPDR_PUPD9_1             (0x2UL << GPIO_PUPDR_PUPD9_Pos)          /*!< 0x00080000 */\n\n#define GPIO_PUPDR_PUPD10_Pos          (20U)\n#define GPIO_PUPDR_PUPD10_Msk          (0x3UL << GPIO_PUPDR_PUPD10_Pos)        /*!< 0x00300000 */\n#define GPIO_PUPDR_PUPD10              GPIO_PUPDR_PUPD10_Msk\n#define GPIO_PUPDR_PUPD10_0            (0x1UL << GPIO_PUPDR_PUPD10_Pos)         /*!< 0x00100000 */\n#define GPIO_PUPDR_PUPD10_1            (0x2UL << GPIO_PUPDR_PUPD10_Pos)         /*!< 0x00200000 */\n\n#define GPIO_PUPDR_PUPD11_Pos          (22U)\n#define GPIO_PUPDR_PUPD11_Msk          (0x3UL << GPIO_PUPDR_PUPD11_Pos)        /*!< 0x00C00000 */\n#define GPIO_PUPDR_PUPD11              GPIO_PUPDR_PUPD11_Msk\n#define GPIO_PUPDR_PUPD11_0            (0x1UL << GPIO_PUPDR_PUPD11_Pos)         /*!< 0x00400000 */\n#define GPIO_PUPDR_PUPD11_1            (0x2UL << GPIO_PUPDR_PUPD11_Pos)         /*!< 0x00800000 */\n\n#define GPIO_PUPDR_PUPD12_Pos          (24U)\n#define GPIO_PUPDR_PUPD12_Msk          (0x3UL << GPIO_PUPDR_PUPD12_Pos)        /*!< 0x03000000 */\n#define GPIO_PUPDR_PUPD12              GPIO_PUPDR_PUPD12_Msk\n#define GPIO_PUPDR_PUPD12_0            (0x1UL << GPIO_PUPDR_PUPD12_Pos)         /*!< 0x01000000 */\n#define GPIO_PUPDR_PUPD12_1            (0x2UL << GPIO_PUPDR_PUPD12_Pos)         /*!< 0x02000000 */\n\n#define GPIO_PUPDR_PUPD13_Pos          (26U)\n#define GPIO_PUPDR_PUPD13_Msk          (0x3UL << GPIO_PUPDR_PUPD13_Pos)        /*!< 0x0C000000 */\n#define GPIO_PUPDR_PUPD13              GPIO_PUPDR_PUPD13_Msk\n#define GPIO_PUPDR_PUPD13_0            (0x1UL << GPIO_PUPDR_PUPD13_Pos)         /*!< 0x04000000 */\n#define GPIO_PUPDR_PUPD13_1            (0x2UL << GPIO_PUPDR_PUPD13_Pos)         /*!< 0x08000000 */\n\n#define GPIO_PUPDR_PUPD14_Pos          (28U)\n#define GPIO_PUPDR_PUPD14_Msk          (0x3UL << GPIO_PUPDR_PUPD14_Pos)        /*!< 0x30000000 */\n#define GPIO_PUPDR_PUPD14              GPIO_PUPDR_PUPD14_Msk\n#define GPIO_PUPDR_PUPD14_0            (0x1UL << GPIO_PUPDR_PUPD14_Pos)         /*!< 0x10000000 */\n#define GPIO_PUPDR_PUPD14_1            (0x2UL << GPIO_PUPDR_PUPD14_Pos)         /*!< 0x20000000 */\n\n#define GPIO_PUPDR_PUPD15_Pos          (30U)\n#define GPIO_PUPDR_PUPD15_Msk          (0x3UL << GPIO_PUPDR_PUPD15_Pos)        /*!< 0xC0000000 */\n#define GPIO_PUPDR_PUPD15              GPIO_PUPDR_PUPD15_Msk\n#define GPIO_PUPDR_PUPD15_0            (0x1UL << GPIO_PUPDR_PUPD15_Pos)         /*!< 0x40000000 */\n#define GPIO_PUPDR_PUPD15_1            (0x2UL << GPIO_PUPDR_PUPD15_Pos)         /*!< 0x80000000 */\n\n/******************  Bits definition for GPIO_IDR register  *******************/\n#define GPIO_IDR_ID0_Pos               (0U)\n#define GPIO_IDR_ID0_Msk               (0x1UL << GPIO_IDR_ID0_Pos)             /*!< 0x00000001 */\n#define GPIO_IDR_ID0                   GPIO_IDR_ID0_Msk\n#define GPIO_IDR_ID1_Pos               (1U)\n#define GPIO_IDR_ID1_Msk               (0x1UL << GPIO_IDR_ID1_Pos)             /*!< 0x00000002 */\n#define GPIO_IDR_ID1                   GPIO_IDR_ID1_Msk\n#define GPIO_IDR_ID2_Pos               (2U)\n#define GPIO_IDR_ID2_Msk               (0x1UL << GPIO_IDR_ID2_Pos)             /*!< 0x00000004 */\n#define GPIO_IDR_ID2                   GPIO_IDR_ID2_Msk\n#define GPIO_IDR_ID3_Pos               (3U)\n#define GPIO_IDR_ID3_Msk               (0x1UL << GPIO_IDR_ID3_Pos)             /*!< 0x00000008 */\n#define GPIO_IDR_ID3                   GPIO_IDR_ID3_Msk\n#define GPIO_IDR_ID4_Pos               (4U)\n#define GPIO_IDR_ID4_Msk               (0x1UL << GPIO_IDR_ID4_Pos)             /*!< 0x00000010 */\n#define GPIO_IDR_ID4                   GPIO_IDR_ID4_Msk\n#define GPIO_IDR_ID5_Pos               (5U)\n#define GPIO_IDR_ID5_Msk               (0x1UL << GPIO_IDR_ID5_Pos)             /*!< 0x00000020 */\n#define GPIO_IDR_ID5                   GPIO_IDR_ID5_Msk\n#define GPIO_IDR_ID6_Pos               (6U)\n#define GPIO_IDR_ID6_Msk               (0x1UL << GPIO_IDR_ID6_Pos)             /*!< 0x00000040 */\n#define GPIO_IDR_ID6                   GPIO_IDR_ID6_Msk\n#define GPIO_IDR_ID7_Pos               (7U)\n#define GPIO_IDR_ID7_Msk               (0x1UL << GPIO_IDR_ID7_Pos)             /*!< 0x00000080 */\n#define GPIO_IDR_ID7                   GPIO_IDR_ID7_Msk\n#define GPIO_IDR_ID8_Pos               (8U)\n#define GPIO_IDR_ID8_Msk               (0x1UL << GPIO_IDR_ID8_Pos)             /*!< 0x00000100 */\n#define GPIO_IDR_ID8                   GPIO_IDR_ID8_Msk\n#define GPIO_IDR_ID9_Pos               (9U)\n#define GPIO_IDR_ID9_Msk               (0x1UL << GPIO_IDR_ID9_Pos)             /*!< 0x00000200 */\n#define GPIO_IDR_ID9                   GPIO_IDR_ID9_Msk\n#define GPIO_IDR_ID10_Pos              (10U)\n#define GPIO_IDR_ID10_Msk              (0x1UL << GPIO_IDR_ID10_Pos)            /*!< 0x00000400 */\n#define GPIO_IDR_ID10                  GPIO_IDR_ID10_Msk\n#define GPIO_IDR_ID11_Pos              (11U)\n#define GPIO_IDR_ID11_Msk              (0x1UL << GPIO_IDR_ID11_Pos)            /*!< 0x00000800 */\n#define GPIO_IDR_ID11                  GPIO_IDR_ID11_Msk\n#define GPIO_IDR_ID12_Pos              (12U)\n#define GPIO_IDR_ID12_Msk              (0x1UL << GPIO_IDR_ID12_Pos)            /*!< 0x00001000 */\n#define GPIO_IDR_ID12                  GPIO_IDR_ID12_Msk\n#define GPIO_IDR_ID13_Pos              (13U)\n#define GPIO_IDR_ID13_Msk              (0x1UL << GPIO_IDR_ID13_Pos)            /*!< 0x00002000 */\n#define GPIO_IDR_ID13                  GPIO_IDR_ID13_Msk\n#define GPIO_IDR_ID14_Pos              (14U)\n#define GPIO_IDR_ID14_Msk              (0x1UL << GPIO_IDR_ID14_Pos)            /*!< 0x00004000 */\n#define GPIO_IDR_ID14                  GPIO_IDR_ID14_Msk\n#define GPIO_IDR_ID15_Pos              (15U)\n#define GPIO_IDR_ID15_Msk              (0x1UL << GPIO_IDR_ID15_Pos)            /*!< 0x00008000 */\n#define GPIO_IDR_ID15                  GPIO_IDR_ID15_Msk\n\n/******************  Bits definition for GPIO_ODR register  *******************/\n#define GPIO_ODR_OD0_Pos               (0U)\n#define GPIO_ODR_OD0_Msk               (0x1UL << GPIO_ODR_OD0_Pos)             /*!< 0x00000001 */\n#define GPIO_ODR_OD0                   GPIO_ODR_OD0_Msk\n#define GPIO_ODR_OD1_Pos               (1U)\n#define GPIO_ODR_OD1_Msk               (0x1UL << GPIO_ODR_OD1_Pos)             /*!< 0x00000002 */\n#define GPIO_ODR_OD1                   GPIO_ODR_OD1_Msk\n#define GPIO_ODR_OD2_Pos               (2U)\n#define GPIO_ODR_OD2_Msk               (0x1UL << GPIO_ODR_OD2_Pos)             /*!< 0x00000004 */\n#define GPIO_ODR_OD2                   GPIO_ODR_OD2_Msk\n#define GPIO_ODR_OD3_Pos               (3U)\n#define GPIO_ODR_OD3_Msk               (0x1UL << GPIO_ODR_OD3_Pos)             /*!< 0x00000008 */\n#define GPIO_ODR_OD3                   GPIO_ODR_OD3_Msk\n#define GPIO_ODR_OD4_Pos               (4U)\n#define GPIO_ODR_OD4_Msk               (0x1UL << GPIO_ODR_OD4_Pos)             /*!< 0x00000010 */\n#define GPIO_ODR_OD4                   GPIO_ODR_OD4_Msk\n#define GPIO_ODR_OD5_Pos               (5U)\n#define GPIO_ODR_OD5_Msk               (0x1UL << GPIO_ODR_OD5_Pos)             /*!< 0x00000020 */\n#define GPIO_ODR_OD5                   GPIO_ODR_OD5_Msk\n#define GPIO_ODR_OD6_Pos               (6U)\n#define GPIO_ODR_OD6_Msk               (0x1UL << GPIO_ODR_OD6_Pos)             /*!< 0x00000040 */\n#define GPIO_ODR_OD6                   GPIO_ODR_OD6_Msk\n#define GPIO_ODR_OD7_Pos               (7U)\n#define GPIO_ODR_OD7_Msk               (0x1UL << GPIO_ODR_OD7_Pos)             /*!< 0x00000080 */\n#define GPIO_ODR_OD7                   GPIO_ODR_OD7_Msk\n#define GPIO_ODR_OD8_Pos               (8U)\n#define GPIO_ODR_OD8_Msk               (0x1UL << GPIO_ODR_OD8_Pos)             /*!< 0x00000100 */\n#define GPIO_ODR_OD8                   GPIO_ODR_OD8_Msk\n#define GPIO_ODR_OD9_Pos               (9U)\n#define GPIO_ODR_OD9_Msk               (0x1UL << GPIO_ODR_OD9_Pos)             /*!< 0x00000200 */\n#define GPIO_ODR_OD9                   GPIO_ODR_OD9_Msk\n#define GPIO_ODR_OD10_Pos              (10U)\n#define GPIO_ODR_OD10_Msk              (0x1UL << GPIO_ODR_OD10_Pos)            /*!< 0x00000400 */\n#define GPIO_ODR_OD10                  GPIO_ODR_OD10_Msk\n#define GPIO_ODR_OD11_Pos              (11U)\n#define GPIO_ODR_OD11_Msk              (0x1UL << GPIO_ODR_OD11_Pos)            /*!< 0x00000800 */\n#define GPIO_ODR_OD11                  GPIO_ODR_OD11_Msk\n#define GPIO_ODR_OD12_Pos              (12U)\n#define GPIO_ODR_OD12_Msk              (0x1UL << GPIO_ODR_OD12_Pos)            /*!< 0x00001000 */\n#define GPIO_ODR_OD12                  GPIO_ODR_OD12_Msk\n#define GPIO_ODR_OD13_Pos              (13U)\n#define GPIO_ODR_OD13_Msk              (0x1UL << GPIO_ODR_OD13_Pos)            /*!< 0x00002000 */\n#define GPIO_ODR_OD13                  GPIO_ODR_OD13_Msk\n#define GPIO_ODR_OD14_Pos              (14U)\n#define GPIO_ODR_OD14_Msk              (0x1UL << GPIO_ODR_OD14_Pos)            /*!< 0x00004000 */\n#define GPIO_ODR_OD14                  GPIO_ODR_OD14_Msk\n#define GPIO_ODR_OD15_Pos              (15U)\n#define GPIO_ODR_OD15_Msk              (0x1UL << GPIO_ODR_OD15_Pos)            /*!< 0x00008000 */\n#define GPIO_ODR_OD15                  GPIO_ODR_OD15_Msk\n\n/******************  Bits definition for GPIO_BSRR register  ******************/\n#define GPIO_BSRR_BS0_Pos              (0U)\n#define GPIO_BSRR_BS0_Msk              (0x1UL << GPIO_BSRR_BS0_Pos)            /*!< 0x00000001 */\n#define GPIO_BSRR_BS0                  GPIO_BSRR_BS0_Msk\n#define GPIO_BSRR_BS1_Pos              (1U)\n#define GPIO_BSRR_BS1_Msk              (0x1UL << GPIO_BSRR_BS1_Pos)            /*!< 0x00000002 */\n#define GPIO_BSRR_BS1                  GPIO_BSRR_BS1_Msk\n#define GPIO_BSRR_BS2_Pos              (2U)\n#define GPIO_BSRR_BS2_Msk              (0x1UL << GPIO_BSRR_BS2_Pos)            /*!< 0x00000004 */\n#define GPIO_BSRR_BS2                  GPIO_BSRR_BS2_Msk\n#define GPIO_BSRR_BS3_Pos              (3U)\n#define GPIO_BSRR_BS3_Msk              (0x1UL << GPIO_BSRR_BS3_Pos)            /*!< 0x00000008 */\n#define GPIO_BSRR_BS3                  GPIO_BSRR_BS3_Msk\n#define GPIO_BSRR_BS4_Pos              (4U)\n#define GPIO_BSRR_BS4_Msk              (0x1UL << GPIO_BSRR_BS4_Pos)            /*!< 0x00000010 */\n#define GPIO_BSRR_BS4                  GPIO_BSRR_BS4_Msk\n#define GPIO_BSRR_BS5_Pos              (5U)\n#define GPIO_BSRR_BS5_Msk              (0x1UL << GPIO_BSRR_BS5_Pos)            /*!< 0x00000020 */\n#define GPIO_BSRR_BS5                  GPIO_BSRR_BS5_Msk\n#define GPIO_BSRR_BS6_Pos              (6U)\n#define GPIO_BSRR_BS6_Msk              (0x1UL << GPIO_BSRR_BS6_Pos)            /*!< 0x00000040 */\n#define GPIO_BSRR_BS6                  GPIO_BSRR_BS6_Msk\n#define GPIO_BSRR_BS7_Pos              (7U)\n#define GPIO_BSRR_BS7_Msk              (0x1UL << GPIO_BSRR_BS7_Pos)            /*!< 0x00000080 */\n#define GPIO_BSRR_BS7                  GPIO_BSRR_BS7_Msk\n#define GPIO_BSRR_BS8_Pos              (8U)\n#define GPIO_BSRR_BS8_Msk              (0x1UL << GPIO_BSRR_BS8_Pos)            /*!< 0x00000100 */\n#define GPIO_BSRR_BS8                  GPIO_BSRR_BS8_Msk\n#define GPIO_BSRR_BS9_Pos              (9U)\n#define GPIO_BSRR_BS9_Msk              (0x1UL << GPIO_BSRR_BS9_Pos)            /*!< 0x00000200 */\n#define GPIO_BSRR_BS9                  GPIO_BSRR_BS9_Msk\n#define GPIO_BSRR_BS10_Pos             (10U)\n#define GPIO_BSRR_BS10_Msk             (0x1UL << GPIO_BSRR_BS10_Pos)           /*!< 0x00000400 */\n#define GPIO_BSRR_BS10                 GPIO_BSRR_BS10_Msk\n#define GPIO_BSRR_BS11_Pos             (11U)\n#define GPIO_BSRR_BS11_Msk             (0x1UL << GPIO_BSRR_BS11_Pos)           /*!< 0x00000800 */\n#define GPIO_BSRR_BS11                 GPIO_BSRR_BS11_Msk\n#define GPIO_BSRR_BS12_Pos             (12U)\n#define GPIO_BSRR_BS12_Msk             (0x1UL << GPIO_BSRR_BS12_Pos)           /*!< 0x00001000 */\n#define GPIO_BSRR_BS12                 GPIO_BSRR_BS12_Msk\n#define GPIO_BSRR_BS13_Pos             (13U)\n#define GPIO_BSRR_BS13_Msk             (0x1UL << GPIO_BSRR_BS13_Pos)           /*!< 0x00002000 */\n#define GPIO_BSRR_BS13                 GPIO_BSRR_BS13_Msk\n#define GPIO_BSRR_BS14_Pos             (14U)\n#define GPIO_BSRR_BS14_Msk             (0x1UL << GPIO_BSRR_BS14_Pos)           /*!< 0x00004000 */\n#define GPIO_BSRR_BS14                 GPIO_BSRR_BS14_Msk\n#define GPIO_BSRR_BS15_Pos             (15U)\n#define GPIO_BSRR_BS15_Msk             (0x1UL << GPIO_BSRR_BS15_Pos)           /*!< 0x00008000 */\n#define GPIO_BSRR_BS15                 GPIO_BSRR_BS15_Msk\n#define GPIO_BSRR_BR0_Pos              (16U)\n#define GPIO_BSRR_BR0_Msk              (0x1UL << GPIO_BSRR_BR0_Pos)            /*!< 0x00010000 */\n#define GPIO_BSRR_BR0                  GPIO_BSRR_BR0_Msk\n#define GPIO_BSRR_BR1_Pos              (17U)\n#define GPIO_BSRR_BR1_Msk              (0x1UL << GPIO_BSRR_BR1_Pos)            /*!< 0x00020000 */\n#define GPIO_BSRR_BR1                  GPIO_BSRR_BR1_Msk\n#define GPIO_BSRR_BR2_Pos              (18U)\n#define GPIO_BSRR_BR2_Msk              (0x1UL << GPIO_BSRR_BR2_Pos)            /*!< 0x00040000 */\n#define GPIO_BSRR_BR2                  GPIO_BSRR_BR2_Msk\n#define GPIO_BSRR_BR3_Pos              (19U)\n#define GPIO_BSRR_BR3_Msk              (0x1UL << GPIO_BSRR_BR3_Pos)            /*!< 0x00080000 */\n#define GPIO_BSRR_BR3                  GPIO_BSRR_BR3_Msk\n#define GPIO_BSRR_BR4_Pos              (20U)\n#define GPIO_BSRR_BR4_Msk              (0x1UL << GPIO_BSRR_BR4_Pos)            /*!< 0x00100000 */\n#define GPIO_BSRR_BR4                  GPIO_BSRR_BR4_Msk\n#define GPIO_BSRR_BR5_Pos              (21U)\n#define GPIO_BSRR_BR5_Msk              (0x1UL << GPIO_BSRR_BR5_Pos)            /*!< 0x00200000 */\n#define GPIO_BSRR_BR5                  GPIO_BSRR_BR5_Msk\n#define GPIO_BSRR_BR6_Pos              (22U)\n#define GPIO_BSRR_BR6_Msk              (0x1UL << GPIO_BSRR_BR6_Pos)            /*!< 0x00400000 */\n#define GPIO_BSRR_BR6                  GPIO_BSRR_BR6_Msk\n#define GPIO_BSRR_BR7_Pos              (23U)\n#define GPIO_BSRR_BR7_Msk              (0x1UL << GPIO_BSRR_BR7_Pos)            /*!< 0x00800000 */\n#define GPIO_BSRR_BR7                  GPIO_BSRR_BR7_Msk\n#define GPIO_BSRR_BR8_Pos              (24U)\n#define GPIO_BSRR_BR8_Msk              (0x1UL << GPIO_BSRR_BR8_Pos)            /*!< 0x01000000 */\n#define GPIO_BSRR_BR8                  GPIO_BSRR_BR8_Msk\n#define GPIO_BSRR_BR9_Pos              (25U)\n#define GPIO_BSRR_BR9_Msk              (0x1UL << GPIO_BSRR_BR9_Pos)            /*!< 0x02000000 */\n#define GPIO_BSRR_BR9                  GPIO_BSRR_BR9_Msk\n#define GPIO_BSRR_BR10_Pos             (26U)\n#define GPIO_BSRR_BR10_Msk             (0x1UL << GPIO_BSRR_BR10_Pos)           /*!< 0x04000000 */\n#define GPIO_BSRR_BR10                 GPIO_BSRR_BR10_Msk\n#define GPIO_BSRR_BR11_Pos             (27U)\n#define GPIO_BSRR_BR11_Msk             (0x1UL << GPIO_BSRR_BR11_Pos)           /*!< 0x08000000 */\n#define GPIO_BSRR_BR11                 GPIO_BSRR_BR11_Msk\n#define GPIO_BSRR_BR12_Pos             (28U)\n#define GPIO_BSRR_BR12_Msk             (0x1UL << GPIO_BSRR_BR12_Pos)           /*!< 0x10000000 */\n#define GPIO_BSRR_BR12                 GPIO_BSRR_BR12_Msk\n#define GPIO_BSRR_BR13_Pos             (29U)\n#define GPIO_BSRR_BR13_Msk             (0x1UL << GPIO_BSRR_BR13_Pos)           /*!< 0x20000000 */\n#define GPIO_BSRR_BR13                 GPIO_BSRR_BR13_Msk\n#define GPIO_BSRR_BR14_Pos             (30U)\n#define GPIO_BSRR_BR14_Msk             (0x1UL << GPIO_BSRR_BR14_Pos)           /*!< 0x40000000 */\n#define GPIO_BSRR_BR14                 GPIO_BSRR_BR14_Msk\n#define GPIO_BSRR_BR15_Pos             (31U)\n#define GPIO_BSRR_BR15_Msk             (0x1UL << GPIO_BSRR_BR15_Pos)           /*!< 0x80000000 */\n#define GPIO_BSRR_BR15                 GPIO_BSRR_BR15_Msk\n\n/****************** Bit definition for GPIO_LCKR register *********************/\n#define GPIO_LCKR_LCK0_Pos             (0U)\n#define GPIO_LCKR_LCK0_Msk             (0x1UL << GPIO_LCKR_LCK0_Pos)           /*!< 0x00000001 */\n#define GPIO_LCKR_LCK0                 GPIO_LCKR_LCK0_Msk\n#define GPIO_LCKR_LCK1_Pos             (1U)\n#define GPIO_LCKR_LCK1_Msk             (0x1UL << GPIO_LCKR_LCK1_Pos)           /*!< 0x00000002 */\n#define GPIO_LCKR_LCK1                 GPIO_LCKR_LCK1_Msk\n#define GPIO_LCKR_LCK2_Pos             (2U)\n#define GPIO_LCKR_LCK2_Msk             (0x1UL << GPIO_LCKR_LCK2_Pos)           /*!< 0x00000004 */\n#define GPIO_LCKR_LCK2                 GPIO_LCKR_LCK2_Msk\n#define GPIO_LCKR_LCK3_Pos             (3U)\n#define GPIO_LCKR_LCK3_Msk             (0x1UL << GPIO_LCKR_LCK3_Pos)           /*!< 0x00000008 */\n#define GPIO_LCKR_LCK3                 GPIO_LCKR_LCK3_Msk\n#define GPIO_LCKR_LCK4_Pos             (4U)\n#define GPIO_LCKR_LCK4_Msk             (0x1UL << GPIO_LCKR_LCK4_Pos)           /*!< 0x00000010 */\n#define GPIO_LCKR_LCK4                 GPIO_LCKR_LCK4_Msk\n#define GPIO_LCKR_LCK5_Pos             (5U)\n#define GPIO_LCKR_LCK5_Msk             (0x1UL << GPIO_LCKR_LCK5_Pos)           /*!< 0x00000020 */\n#define GPIO_LCKR_LCK5                 GPIO_LCKR_LCK5_Msk\n#define GPIO_LCKR_LCK6_Pos             (6U)\n#define GPIO_LCKR_LCK6_Msk             (0x1UL << GPIO_LCKR_LCK6_Pos)           /*!< 0x00000040 */\n#define GPIO_LCKR_LCK6                 GPIO_LCKR_LCK6_Msk\n#define GPIO_LCKR_LCK7_Pos             (7U)\n#define GPIO_LCKR_LCK7_Msk             (0x1UL << GPIO_LCKR_LCK7_Pos)           /*!< 0x00000080 */\n#define GPIO_LCKR_LCK7                 GPIO_LCKR_LCK7_Msk\n#define GPIO_LCKR_LCK8_Pos             (8U)\n#define GPIO_LCKR_LCK8_Msk             (0x1UL << GPIO_LCKR_LCK8_Pos)           /*!< 0x00000100 */\n#define GPIO_LCKR_LCK8                 GPIO_LCKR_LCK8_Msk\n#define GPIO_LCKR_LCK9_Pos             (9U)\n#define GPIO_LCKR_LCK9_Msk             (0x1UL << GPIO_LCKR_LCK9_Pos)           /*!< 0x00000200 */\n#define GPIO_LCKR_LCK9                 GPIO_LCKR_LCK9_Msk\n#define GPIO_LCKR_LCK10_Pos            (10U)\n#define GPIO_LCKR_LCK10_Msk            (0x1UL << GPIO_LCKR_LCK10_Pos)          /*!< 0x00000400 */\n#define GPIO_LCKR_LCK10                GPIO_LCKR_LCK10_Msk\n#define GPIO_LCKR_LCK11_Pos            (11U)\n#define GPIO_LCKR_LCK11_Msk            (0x1UL << GPIO_LCKR_LCK11_Pos)          /*!< 0x00000800 */\n#define GPIO_LCKR_LCK11                GPIO_LCKR_LCK11_Msk\n#define GPIO_LCKR_LCK12_Pos            (12U)\n#define GPIO_LCKR_LCK12_Msk            (0x1UL << GPIO_LCKR_LCK12_Pos)          /*!< 0x00001000 */\n#define GPIO_LCKR_LCK12                GPIO_LCKR_LCK12_Msk\n#define GPIO_LCKR_LCK13_Pos            (13U)\n#define GPIO_LCKR_LCK13_Msk            (0x1UL << GPIO_LCKR_LCK13_Pos)          /*!< 0x00002000 */\n#define GPIO_LCKR_LCK13                GPIO_LCKR_LCK13_Msk\n#define GPIO_LCKR_LCK14_Pos            (14U)\n#define GPIO_LCKR_LCK14_Msk            (0x1UL << GPIO_LCKR_LCK14_Pos)          /*!< 0x00004000 */\n#define GPIO_LCKR_LCK14                GPIO_LCKR_LCK14_Msk\n#define GPIO_LCKR_LCK15_Pos            (15U)\n#define GPIO_LCKR_LCK15_Msk            (0x1UL << GPIO_LCKR_LCK15_Pos)          /*!< 0x00008000 */\n#define GPIO_LCKR_LCK15                GPIO_LCKR_LCK15_Msk\n#define GPIO_LCKR_LCKK_Pos             (16U)\n#define GPIO_LCKR_LCKK_Msk             (0x1UL << GPIO_LCKR_LCKK_Pos)           /*!< 0x00010000 */\n#define GPIO_LCKR_LCKK                 GPIO_LCKR_LCKK_Msk\n\n/****************** Bit definition for GPIO_AFRL register  ********************/\n#define GPIO_AFRL_AFSEL0_Pos           (0U)\n#define GPIO_AFRL_AFSEL0_Msk           (0xFUL << GPIO_AFRL_AFSEL0_Pos)         /*!< 0x0000000F */\n#define GPIO_AFRL_AFSEL0               GPIO_AFRL_AFSEL0_Msk\n#define GPIO_AFRL_AFSEL0_0             (0x1UL << GPIO_AFRL_AFSEL0_Pos)          /*!< 0x00000001 */\n#define GPIO_AFRL_AFSEL0_1             (0x2UL << GPIO_AFRL_AFSEL0_Pos)          /*!< 0x00000002 */\n#define GPIO_AFRL_AFSEL0_2             (0x4UL << GPIO_AFRL_AFSEL0_Pos)          /*!< 0x00000004 */\n#define GPIO_AFRL_AFSEL0_3             (0x8UL << GPIO_AFRL_AFSEL0_Pos)          /*!< 0x00000008 */\n#define GPIO_AFRL_AFSEL1_Pos           (4U)\n#define GPIO_AFRL_AFSEL1_Msk           (0xFUL << GPIO_AFRL_AFSEL1_Pos)         /*!< 0x000000F0 */\n#define GPIO_AFRL_AFSEL1               GPIO_AFRL_AFSEL1_Msk\n#define GPIO_AFRL_AFSEL1_0             (0x1UL << GPIO_AFRL_AFSEL1_Pos)          /*!< 0x00000010 */\n#define GPIO_AFRL_AFSEL1_1             (0x2UL << GPIO_AFRL_AFSEL1_Pos)          /*!< 0x00000020 */\n#define GPIO_AFRL_AFSEL1_2             (0x4UL << GPIO_AFRL_AFSEL1_Pos)          /*!< 0x00000040 */\n#define GPIO_AFRL_AFSEL1_3             (0x8UL << GPIO_AFRL_AFSEL1_Pos)          /*!< 0x00000080 */\n#define GPIO_AFRL_AFSEL2_Pos           (8U)\n#define GPIO_AFRL_AFSEL2_Msk           (0xFUL << GPIO_AFRL_AFSEL2_Pos)         /*!< 0x00000F00 */\n#define GPIO_AFRL_AFSEL2               GPIO_AFRL_AFSEL2_Msk\n#define GPIO_AFRL_AFSEL2_0             (0x1UL << GPIO_AFRL_AFSEL2_Pos)          /*!< 0x00000100 */\n#define GPIO_AFRL_AFSEL2_1             (0x2UL << GPIO_AFRL_AFSEL2_Pos)          /*!< 0x00000200 */\n#define GPIO_AFRL_AFSEL2_2             (0x4UL << GPIO_AFRL_AFSEL2_Pos)          /*!< 0x00000400 */\n#define GPIO_AFRL_AFSEL2_3             (0x8UL << GPIO_AFRL_AFSEL2_Pos)          /*!< 0x00000800 */\n#define GPIO_AFRL_AFSEL3_Pos           (12U)\n#define GPIO_AFRL_AFSEL3_Msk           (0xFUL << GPIO_AFRL_AFSEL3_Pos)         /*!< 0x0000F000 */\n#define GPIO_AFRL_AFSEL3               GPIO_AFRL_AFSEL3_Msk\n#define GPIO_AFRL_AFSEL3_0             (0x1UL << GPIO_AFRL_AFSEL3_Pos)          /*!< 0x00001000 */\n#define GPIO_AFRL_AFSEL3_1             (0x2UL << GPIO_AFRL_AFSEL3_Pos)          /*!< 0x00002000 */\n#define GPIO_AFRL_AFSEL3_2             (0x4UL << GPIO_AFRL_AFSEL3_Pos)          /*!< 0x00004000 */\n#define GPIO_AFRL_AFSEL3_3             (0x8UL << GPIO_AFRL_AFSEL3_Pos)          /*!< 0x00008000 */\n#define GPIO_AFRL_AFSEL4_Pos           (16U)\n#define GPIO_AFRL_AFSEL4_Msk           (0xFUL << GPIO_AFRL_AFSEL4_Pos)         /*!< 0x000F0000 */\n#define GPIO_AFRL_AFSEL4               GPIO_AFRL_AFSEL4_Msk\n#define GPIO_AFRL_AFSEL4_0             (0x1UL << GPIO_AFRL_AFSEL4_Pos)          /*!< 0x00010000 */\n#define GPIO_AFRL_AFSEL4_1             (0x2UL << GPIO_AFRL_AFSEL4_Pos)          /*!< 0x00020000 */\n#define GPIO_AFRL_AFSEL4_2             (0x4UL << GPIO_AFRL_AFSEL4_Pos)          /*!< 0x00040000 */\n#define GPIO_AFRL_AFSEL4_3             (0x8UL << GPIO_AFRL_AFSEL4_Pos)          /*!< 0x00080000 */\n#define GPIO_AFRL_AFSEL5_Pos           (20U)\n#define GPIO_AFRL_AFSEL5_Msk           (0xFUL << GPIO_AFRL_AFSEL5_Pos)         /*!< 0x00F00000 */\n#define GPIO_AFRL_AFSEL5               GPIO_AFRL_AFSEL5_Msk\n#define GPIO_AFRL_AFSEL5_0             (0x1UL << GPIO_AFRL_AFSEL5_Pos)          /*!< 0x00100000 */\n#define GPIO_AFRL_AFSEL5_1             (0x2UL << GPIO_AFRL_AFSEL5_Pos)          /*!< 0x00200000 */\n#define GPIO_AFRL_AFSEL5_2             (0x4UL << GPIO_AFRL_AFSEL5_Pos)          /*!< 0x00400000 */\n#define GPIO_AFRL_AFSEL5_3             (0x8UL << GPIO_AFRL_AFSEL5_Pos)          /*!< 0x00800000 */\n#define GPIO_AFRL_AFSEL6_Pos           (24U)\n#define GPIO_AFRL_AFSEL6_Msk           (0xFUL << GPIO_AFRL_AFSEL6_Pos)         /*!< 0x0F000000 */\n#define GPIO_AFRL_AFSEL6               GPIO_AFRL_AFSEL6_Msk\n#define GPIO_AFRL_AFSEL6_0             (0x1UL << GPIO_AFRL_AFSEL6_Pos)          /*!< 0x01000000 */\n#define GPIO_AFRL_AFSEL6_1             (0x2UL << GPIO_AFRL_AFSEL6_Pos)          /*!< 0x02000000 */\n#define GPIO_AFRL_AFSEL6_2             (0x4UL << GPIO_AFRL_AFSEL6_Pos)          /*!< 0x04000000 */\n#define GPIO_AFRL_AFSEL6_3             (0x8UL << GPIO_AFRL_AFSEL6_Pos)          /*!< 0x08000000 */\n#define GPIO_AFRL_AFSEL7_Pos           (28U)\n#define GPIO_AFRL_AFSEL7_Msk           (0xFUL << GPIO_AFRL_AFSEL7_Pos)         /*!< 0xF0000000 */\n#define GPIO_AFRL_AFSEL7               GPIO_AFRL_AFSEL7_Msk\n#define GPIO_AFRL_AFSEL7_0             (0x1UL << GPIO_AFRL_AFSEL7_Pos)          /*!< 0x10000000 */\n#define GPIO_AFRL_AFSEL7_1             (0x2UL << GPIO_AFRL_AFSEL7_Pos)          /*!< 0x20000000 */\n#define GPIO_AFRL_AFSEL7_2             (0x4UL << GPIO_AFRL_AFSEL7_Pos)          /*!< 0x40000000 */\n#define GPIO_AFRL_AFSEL7_3             (0x8UL << GPIO_AFRL_AFSEL7_Pos)          /*!< 0x80000000 */\n\n/* Legacy defines */\n#define GPIO_AFRL_AFRL0                      GPIO_AFRL_AFSEL0\n#define GPIO_AFRL_AFRL1                      GPIO_AFRL_AFSEL1\n#define GPIO_AFRL_AFRL2                      GPIO_AFRL_AFSEL2\n#define GPIO_AFRL_AFRL3                      GPIO_AFRL_AFSEL3\n#define GPIO_AFRL_AFRL4                      GPIO_AFRL_AFSEL4\n#define GPIO_AFRL_AFRL5                      GPIO_AFRL_AFSEL5\n#define GPIO_AFRL_AFRL6                      GPIO_AFRL_AFSEL6\n#define GPIO_AFRL_AFRL7                      GPIO_AFRL_AFSEL7\n\n/****************** Bit definition for GPIO_AFRH register  ********************/\n#define GPIO_AFRH_AFSEL8_Pos           (0U)\n#define GPIO_AFRH_AFSEL8_Msk           (0xFUL << GPIO_AFRH_AFSEL8_Pos)         /*!< 0x0000000F */\n#define GPIO_AFRH_AFSEL8               GPIO_AFRH_AFSEL8_Msk\n#define GPIO_AFRH_AFSEL8_0             (0x1UL << GPIO_AFRH_AFSEL8_Pos)          /*!< 0x00000001 */\n#define GPIO_AFRH_AFSEL8_1             (0x2UL << GPIO_AFRH_AFSEL8_Pos)          /*!< 0x00000002 */\n#define GPIO_AFRH_AFSEL8_2             (0x4UL << GPIO_AFRH_AFSEL8_Pos)          /*!< 0x00000004 */\n#define GPIO_AFRH_AFSEL8_3             (0x8UL << GPIO_AFRH_AFSEL8_Pos)          /*!< 0x00000008 */\n#define GPIO_AFRH_AFSEL9_Pos           (4U)\n#define GPIO_AFRH_AFSEL9_Msk           (0xFUL << GPIO_AFRH_AFSEL9_Pos)         /*!< 0x000000F0 */\n#define GPIO_AFRH_AFSEL9               GPIO_AFRH_AFSEL9_Msk\n#define GPIO_AFRH_AFSEL9_0             (0x1UL << GPIO_AFRH_AFSEL9_Pos)          /*!< 0x00000010 */\n#define GPIO_AFRH_AFSEL9_1             (0x2UL << GPIO_AFRH_AFSEL9_Pos)          /*!< 0x00000020 */\n#define GPIO_AFRH_AFSEL9_2             (0x4UL << GPIO_AFRH_AFSEL9_Pos)          /*!< 0x00000040 */\n#define GPIO_AFRH_AFSEL9_3             (0x8UL << GPIO_AFRH_AFSEL9_Pos)          /*!< 0x00000080 */\n#define GPIO_AFRH_AFSEL10_Pos          (8U)\n#define GPIO_AFRH_AFSEL10_Msk          (0xFUL << GPIO_AFRH_AFSEL10_Pos)        /*!< 0x00000F00 */\n#define GPIO_AFRH_AFSEL10              GPIO_AFRH_AFSEL10_Msk\n#define GPIO_AFRH_AFSEL10_0            (0x1UL << GPIO_AFRH_AFSEL10_Pos)         /*!< 0x00000100 */\n#define GPIO_AFRH_AFSEL10_1            (0x2UL << GPIO_AFRH_AFSEL10_Pos)         /*!< 0x00000200 */\n#define GPIO_AFRH_AFSEL10_2            (0x4UL << GPIO_AFRH_AFSEL10_Pos)         /*!< 0x00000400 */\n#define GPIO_AFRH_AFSEL10_3            (0x8UL << GPIO_AFRH_AFSEL10_Pos)         /*!< 0x00000800 */\n#define GPIO_AFRH_AFSEL11_Pos          (12U)\n#define GPIO_AFRH_AFSEL11_Msk          (0xFUL << GPIO_AFRH_AFSEL11_Pos)        /*!< 0x0000F000 */\n#define GPIO_AFRH_AFSEL11              GPIO_AFRH_AFSEL11_Msk\n#define GPIO_AFRH_AFSEL11_0            (0x1UL << GPIO_AFRH_AFSEL11_Pos)         /*!< 0x00001000 */\n#define GPIO_AFRH_AFSEL11_1            (0x2UL << GPIO_AFRH_AFSEL11_Pos)         /*!< 0x00002000 */\n#define GPIO_AFRH_AFSEL11_2            (0x4UL << GPIO_AFRH_AFSEL11_Pos)         /*!< 0x00004000 */\n#define GPIO_AFRH_AFSEL11_3            (0x8UL << GPIO_AFRH_AFSEL11_Pos)         /*!< 0x00008000 */\n#define GPIO_AFRH_AFSEL12_Pos          (16U)\n#define GPIO_AFRH_AFSEL12_Msk          (0xFUL << GPIO_AFRH_AFSEL12_Pos)        /*!< 0x000F0000 */\n#define GPIO_AFRH_AFSEL12              GPIO_AFRH_AFSEL12_Msk\n#define GPIO_AFRH_AFSEL12_0            (0x1UL << GPIO_AFRH_AFSEL12_Pos)         /*!< 0x00010000 */\n#define GPIO_AFRH_AFSEL12_1            (0x2UL << GPIO_AFRH_AFSEL12_Pos)         /*!< 0x00020000 */\n#define GPIO_AFRH_AFSEL12_2            (0x4UL << GPIO_AFRH_AFSEL12_Pos)         /*!< 0x00040000 */\n#define GPIO_AFRH_AFSEL12_3            (0x8UL << GPIO_AFRH_AFSEL12_Pos)         /*!< 0x00080000 */\n#define GPIO_AFRH_AFSEL13_Pos          (20U)\n#define GPIO_AFRH_AFSEL13_Msk          (0xFUL << GPIO_AFRH_AFSEL13_Pos)        /*!< 0x00F00000 */\n#define GPIO_AFRH_AFSEL13              GPIO_AFRH_AFSEL13_Msk\n#define GPIO_AFRH_AFSEL13_0            (0x1UL << GPIO_AFRH_AFSEL13_Pos)         /*!< 0x00100000 */\n#define GPIO_AFRH_AFSEL13_1            (0x2UL << GPIO_AFRH_AFSEL13_Pos)         /*!< 0x00200000 */\n#define GPIO_AFRH_AFSEL13_2            (0x4UL << GPIO_AFRH_AFSEL13_Pos)         /*!< 0x00400000 */\n#define GPIO_AFRH_AFSEL13_3            (0x8UL << GPIO_AFRH_AFSEL13_Pos)         /*!< 0x00800000 */\n#define GPIO_AFRH_AFSEL14_Pos          (24U)\n#define GPIO_AFRH_AFSEL14_Msk          (0xFUL << GPIO_AFRH_AFSEL14_Pos)        /*!< 0x0F000000 */\n#define GPIO_AFRH_AFSEL14              GPIO_AFRH_AFSEL14_Msk\n#define GPIO_AFRH_AFSEL14_0            (0x1UL << GPIO_AFRH_AFSEL14_Pos)         /*!< 0x01000000 */\n#define GPIO_AFRH_AFSEL14_1            (0x2UL << GPIO_AFRH_AFSEL14_Pos)         /*!< 0x02000000 */\n#define GPIO_AFRH_AFSEL14_2            (0x4UL << GPIO_AFRH_AFSEL14_Pos)         /*!< 0x04000000 */\n#define GPIO_AFRH_AFSEL14_3            (0x8UL << GPIO_AFRH_AFSEL14_Pos)         /*!< 0x08000000 */\n#define GPIO_AFRH_AFSEL15_Pos          (28U)\n#define GPIO_AFRH_AFSEL15_Msk          (0xFUL << GPIO_AFRH_AFSEL15_Pos)        /*!< 0xF0000000 */\n#define GPIO_AFRH_AFSEL15              GPIO_AFRH_AFSEL15_Msk\n#define GPIO_AFRH_AFSEL15_0            (0x1UL << GPIO_AFRH_AFSEL15_Pos)         /*!< 0x10000000 */\n#define GPIO_AFRH_AFSEL15_1            (0x2UL << GPIO_AFRH_AFSEL15_Pos)         /*!< 0x20000000 */\n#define GPIO_AFRH_AFSEL15_2            (0x4UL << GPIO_AFRH_AFSEL15_Pos)         /*!< 0x40000000 */\n#define GPIO_AFRH_AFSEL15_3            (0x8UL << GPIO_AFRH_AFSEL15_Pos)         /*!< 0x80000000 */\n\n/* Legacy defines */\n#define GPIO_AFRH_AFRH0                      GPIO_AFRH_AFSEL8\n#define GPIO_AFRH_AFRH1                      GPIO_AFRH_AFSEL9\n#define GPIO_AFRH_AFRH2                      GPIO_AFRH_AFSEL10\n#define GPIO_AFRH_AFRH3                      GPIO_AFRH_AFSEL11\n#define GPIO_AFRH_AFRH4                      GPIO_AFRH_AFSEL12\n#define GPIO_AFRH_AFRH5                      GPIO_AFRH_AFSEL13\n#define GPIO_AFRH_AFRH6                      GPIO_AFRH_AFSEL14\n#define GPIO_AFRH_AFRH7                      GPIO_AFRH_AFSEL15\n\n/******************************************************************************/\n/*                                                                            */\n/*                        HSEM HW Semaphore                                   */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bit definition for HSEM_R register  ********************/\n#define HSEM_R_PROCID_Pos         (0U)\n#define HSEM_R_PROCID_Msk         (0xFFUL << HSEM_R_PROCID_Pos)                /*!< 0x000000FF */\n#define HSEM_R_PROCID             HSEM_R_PROCID_Msk                            /*!<Semaphore ProcessID */\n#define HSEM_R_COREID_Pos         (8U)\n#define HSEM_R_COREID_Msk         (0xFFUL << HSEM_R_COREID_Pos)                /*!< 0x0000FF00 */\n#define HSEM_R_COREID             HSEM_R_COREID_Msk                            /*!<Semaphore CoreID.   */\n#define HSEM_R_LOCK_Pos           (31U)\n#define HSEM_R_LOCK_Msk           (0x1UL << HSEM_R_LOCK_Pos)                   /*!< 0x80000000 */\n#define HSEM_R_LOCK               HSEM_R_LOCK_Msk                              /*!<Lock indication.    */\n\n/********************  Bit definition for HSEM_RLR register  ******************/\n#define HSEM_RLR_PROCID_Pos       (0U)\n#define HSEM_RLR_PROCID_Msk       (0xFFUL << HSEM_RLR_PROCID_Pos)              /*!< 0x000000FF */\n#define HSEM_RLR_PROCID           HSEM_RLR_PROCID_Msk                          /*!<Semaphore ProcessID */\n#define HSEM_RLR_COREID_Pos       (8U)\n#define HSEM_RLR_COREID_Msk       (0xFFUL << HSEM_RLR_COREID_Pos)              /*!< 0x0000FF00 */\n#define HSEM_RLR_COREID           HSEM_RLR_COREID_Msk                          /*!<Semaphore CoreID.   */\n#define HSEM_RLR_LOCK_Pos         (31U)\n#define HSEM_RLR_LOCK_Msk         (0x1UL << HSEM_RLR_LOCK_Pos)                 /*!< 0x80000000 */\n#define HSEM_RLR_LOCK             HSEM_RLR_LOCK_Msk                            /*!<Lock indication.    */\n\n/********************  Bit definition for HSEM_C1IER register  *****************/\n#define HSEM_C1IER_ISE0_Pos       (0U)\n#define HSEM_C1IER_ISE0_Msk       (0x1UL << HSEM_C1IER_ISE0_Pos)               /*!< 0x00000001 */\n#define HSEM_C1IER_ISE0           HSEM_C1IER_ISE0_Msk                          /*!<semaphore 0 , interrupt 0 enable bit.  */\n#define HSEM_C1IER_ISE1_Pos       (1U)\n#define HSEM_C1IER_ISE1_Msk       (0x1UL << HSEM_C1IER_ISE1_Pos)               /*!< 0x00000002 */\n#define HSEM_C1IER_ISE1           HSEM_C1IER_ISE1_Msk                          /*!<semaphore 1 , interrupt 0 enable bit.  */\n#define HSEM_C1IER_ISE2_Pos       (2U)\n#define HSEM_C1IER_ISE2_Msk       (0x1UL << HSEM_C1IER_ISE2_Pos)               /*!< 0x00000004 */\n#define HSEM_C1IER_ISE2           HSEM_C1IER_ISE2_Msk                          /*!<semaphore 2 , interrupt 0 enable bit.  */\n#define HSEM_C1IER_ISE3_Pos       (3U)\n#define HSEM_C1IER_ISE3_Msk       (0x1UL << HSEM_C1IER_ISE3_Pos)               /*!< 0x00000008 */\n#define HSEM_C1IER_ISE3           HSEM_C1IER_ISE3_Msk                          /*!<semaphore 3 , interrupt 0 enable bit.  */\n#define HSEM_C1IER_ISE4_Pos       (4U)\n#define HSEM_C1IER_ISE4_Msk       (0x1UL << HSEM_C1IER_ISE4_Pos)               /*!< 0x00000010 */\n#define HSEM_C1IER_ISE4           HSEM_C1IER_ISE4_Msk                          /*!<semaphore 4 , interrupt 0 enable bit.  */\n#define HSEM_C1IER_ISE5_Pos       (5U)\n#define HSEM_C1IER_ISE5_Msk       (0x1UL << HSEM_C1IER_ISE5_Pos)               /*!< 0x00000020 */\n#define HSEM_C1IER_ISE5           HSEM_C1IER_ISE5_Msk                          /*!<semaphore 5 interrupt 0 enable bit.    */\n#define HSEM_C1IER_ISE6_Pos       (6U)\n#define HSEM_C1IER_ISE6_Msk       (0x1UL << HSEM_C1IER_ISE6_Pos)               /*!< 0x00000040 */\n#define HSEM_C1IER_ISE6           HSEM_C1IER_ISE6_Msk                          /*!<semaphore 6 interrupt 0 enable bit.    */\n#define HSEM_C1IER_ISE7_Pos       (7U)\n#define HSEM_C1IER_ISE7_Msk       (0x1UL << HSEM_C1IER_ISE7_Pos)               /*!< 0x00000080 */\n#define HSEM_C1IER_ISE7           HSEM_C1IER_ISE7_Msk                          /*!<semaphore 7 interrupt 0 enable bit.    */\n#define HSEM_C1IER_ISE8_Pos       (8U)\n#define HSEM_C1IER_ISE8_Msk       (0x1UL << HSEM_C1IER_ISE8_Pos)               /*!< 0x00000100 */\n#define HSEM_C1IER_ISE8           HSEM_C1IER_ISE8_Msk                          /*!<semaphore 8 interrupt 0 enable bit.    */\n#define HSEM_C1IER_ISE9_Pos       (9U)\n#define HSEM_C1IER_ISE9_Msk       (0x1UL << HSEM_C1IER_ISE9_Pos)               /*!< 0x00000200 */\n#define HSEM_C1IER_ISE9           HSEM_C1IER_ISE9_Msk                          /*!<semaphore 9 interrupt 0 enable bit.    */\n#define HSEM_C1IER_ISE10_Pos      (10U)\n#define HSEM_C1IER_ISE10_Msk      (0x1UL << HSEM_C1IER_ISE10_Pos)              /*!< 0x00000400 */\n#define HSEM_C1IER_ISE10          HSEM_C1IER_ISE10_Msk                         /*!<semaphore 10 interrupt 0 enable bit.   */\n#define HSEM_C1IER_ISE11_Pos      (11U)\n#define HSEM_C1IER_ISE11_Msk      (0x1UL << HSEM_C1IER_ISE11_Pos)              /*!< 0x00000800 */\n#define HSEM_C1IER_ISE11          HSEM_C1IER_ISE11_Msk                         /*!<semaphore 11 interrupt 0 enable bit.   */\n#define HSEM_C1IER_ISE12_Pos      (12U)\n#define HSEM_C1IER_ISE12_Msk      (0x1UL << HSEM_C1IER_ISE12_Pos)              /*!< 0x00001000 */\n#define HSEM_C1IER_ISE12          HSEM_C1IER_ISE12_Msk                         /*!<semaphore 12 interrupt 0 enable bit.   */\n#define HSEM_C1IER_ISE13_Pos      (13U)\n#define HSEM_C1IER_ISE13_Msk      (0x1UL << HSEM_C1IER_ISE13_Pos)              /*!< 0x00002000 */\n#define HSEM_C1IER_ISE13          HSEM_C1IER_ISE13_Msk                         /*!<semaphore 13 interrupt 0 enable bit.   */\n#define HSEM_C1IER_ISE14_Pos      (14U)\n#define HSEM_C1IER_ISE14_Msk      (0x1UL << HSEM_C1IER_ISE14_Pos)              /*!< 0x00004000 */\n#define HSEM_C1IER_ISE14          HSEM_C1IER_ISE14_Msk                         /*!<semaphore 14 interrupt 0 enable bit.   */\n#define HSEM_C1IER_ISE15_Pos      (15U)\n#define HSEM_C1IER_ISE15_Msk      (0x1UL << HSEM_C1IER_ISE15_Pos)              /*!< 0x00008000 */\n#define HSEM_C1IER_ISE15          HSEM_C1IER_ISE15_Msk                         /*!<semaphore 15 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE16_Pos      (16U)\n#define HSEM_C1IER_ISE16_Msk      (0x1UL << HSEM_C1IER_ISE16_Pos)              /*!< 0x00010000 */\n#define HSEM_C1IER_ISE16          HSEM_C1IER_ISE16_Msk                         /*!<semaphore 16 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE17_Pos      (17U)\n#define HSEM_C1IER_ISE17_Msk      (0x1UL << HSEM_C1IER_ISE17_Pos)              /*!< 0x00020000 */\n#define HSEM_C1IER_ISE17          HSEM_C1IER_ISE17_Msk                         /*!<semaphore 17 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE18_Pos      (18U)\n#define HSEM_C1IER_ISE18_Msk      (0x1UL << HSEM_C1IER_ISE18_Pos)              /*!< 0x00040000 */\n#define HSEM_C1IER_ISE18          HSEM_C1IER_ISE18_Msk                         /*!<semaphore 18 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE19_Pos      (19U)\n#define HSEM_C1IER_ISE19_Msk      (0x1UL << HSEM_C1IER_ISE19_Pos)              /*!< 0x00080000 */\n#define HSEM_C1IER_ISE19          HSEM_C1IER_ISE19_Msk                         /*!<semaphore 19 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE20_Pos      (20U)\n#define HSEM_C1IER_ISE20_Msk      (0x1UL << HSEM_C1IER_ISE20_Pos)              /*!< 0x00100000 */\n#define HSEM_C1IER_ISE20          HSEM_C1IER_ISE20_Msk                         /*!<semaphore 20 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE21_Pos      (21U)\n#define HSEM_C1IER_ISE21_Msk      (0x1UL << HSEM_C1IER_ISE21_Pos)              /*!< 0x00200000 */\n#define HSEM_C1IER_ISE21          HSEM_C1IER_ISE21_Msk                         /*!<semaphore 21 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE22_Pos      (22U)\n#define HSEM_C1IER_ISE22_Msk      (0x1UL << HSEM_C1IER_ISE22_Pos)              /*!< 0x00400000 */\n#define HSEM_C1IER_ISE22          HSEM_C1IER_ISE22_Msk                         /*!<semaphore 22 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE23_Pos      (23U)\n#define HSEM_C1IER_ISE23_Msk      (0x1UL << HSEM_C1IER_ISE23_Pos)              /*!< 0x00800000 */\n#define HSEM_C1IER_ISE23          HSEM_C1IER_ISE23_Msk                         /*!<semaphore 23 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE24_Pos      (24U)\n#define HSEM_C1IER_ISE24_Msk      (0x1UL << HSEM_C1IER_ISE24_Pos)              /*!< 0x01000000 */\n#define HSEM_C1IER_ISE24          HSEM_C1IER_ISE24_Msk                         /*!<semaphore 24 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE25_Pos      (25U)\n#define HSEM_C1IER_ISE25_Msk      (0x1UL << HSEM_C1IER_ISE25_Pos)              /*!< 0x02000000 */\n#define HSEM_C1IER_ISE25          HSEM_C1IER_ISE25_Msk                         /*!<semaphore 25 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE26_Pos      (26U)\n#define HSEM_C1IER_ISE26_Msk      (0x1UL << HSEM_C1IER_ISE26_Pos)              /*!< 0x04000000 */\n#define HSEM_C1IER_ISE26          HSEM_C1IER_ISE26_Msk                         /*!<semaphore 26 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE27_Pos      (27U)\n#define HSEM_C1IER_ISE27_Msk      (0x1UL << HSEM_C1IER_ISE27_Pos)              /*!< 0x08000000 */\n#define HSEM_C1IER_ISE27          HSEM_C1IER_ISE27_Msk                         /*!<semaphore 27 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE28_Pos      (28U)\n#define HSEM_C1IER_ISE28_Msk      (0x1UL << HSEM_C1IER_ISE28_Pos)              /*!< 0x10000000 */\n#define HSEM_C1IER_ISE28          HSEM_C1IER_ISE28_Msk                         /*!<semaphore 28 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE29_Pos      (29U)\n#define HSEM_C1IER_ISE29_Msk      (0x1UL << HSEM_C1IER_ISE29_Pos)              /*!< 0x20000000 */\n#define HSEM_C1IER_ISE29          HSEM_C1IER_ISE29_Msk                         /*!<semaphore 29 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE30_Pos      (30U)\n#define HSEM_C1IER_ISE30_Msk      (0x1UL << HSEM_C1IER_ISE30_Pos)              /*!< 0x40000000 */\n#define HSEM_C1IER_ISE30          HSEM_C1IER_ISE30_Msk                         /*!<semaphore 30 interrupt 0 enable bit. */\n#define HSEM_C1IER_ISE31_Pos      (31U)\n#define HSEM_C1IER_ISE31_Msk      (0x1UL << HSEM_C1IER_ISE31_Pos)              /*!< 0x80000000 */\n#define HSEM_C1IER_ISE31          HSEM_C1IER_ISE31_Msk                         /*!<semaphore 31 interrupt 0 enable bit. */\n\n/********************  Bit definition for HSEM_C1ICR register  *****************/\n#define HSEM_C1ICR_ISC0_Pos       (0U)\n#define HSEM_C1ICR_ISC0_Msk       (0x1UL << HSEM_C1ICR_ISC0_Pos)               /*!< 0x00000001 */\n#define HSEM_C1ICR_ISC0           HSEM_C1ICR_ISC0_Msk                          /*!<semaphore 0 , interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC1_Pos       (1U)\n#define HSEM_C1ICR_ISC1_Msk       (0x1UL << HSEM_C1ICR_ISC1_Pos)               /*!< 0x00000002 */\n#define HSEM_C1ICR_ISC1           HSEM_C1ICR_ISC1_Msk                          /*!<semaphore 1 , interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC2_Pos       (2U)\n#define HSEM_C1ICR_ISC2_Msk       (0x1UL << HSEM_C1ICR_ISC2_Pos)               /*!< 0x00000004 */\n#define HSEM_C1ICR_ISC2           HSEM_C1ICR_ISC2_Msk                          /*!<semaphore 2 , interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC3_Pos       (3U)\n#define HSEM_C1ICR_ISC3_Msk       (0x1UL << HSEM_C1ICR_ISC3_Pos)               /*!< 0x00000008 */\n#define HSEM_C1ICR_ISC3           HSEM_C1ICR_ISC3_Msk                          /*!<semaphore 3 , interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC4_Pos       (4U)\n#define HSEM_C1ICR_ISC4_Msk       (0x1UL << HSEM_C1ICR_ISC4_Pos)               /*!< 0x00000010 */\n#define HSEM_C1ICR_ISC4           HSEM_C1ICR_ISC4_Msk                          /*!<semaphore 4 , interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC5_Pos       (5U)\n#define HSEM_C1ICR_ISC5_Msk       (0x1UL << HSEM_C1ICR_ISC5_Pos)               /*!< 0x00000020 */\n#define HSEM_C1ICR_ISC5           HSEM_C1ICR_ISC5_Msk                          /*!<semaphore 5 interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC6_Pos       (6U)\n#define HSEM_C1ICR_ISC6_Msk       (0x1UL << HSEM_C1ICR_ISC6_Pos)               /*!< 0x00000040 */\n#define HSEM_C1ICR_ISC6           HSEM_C1ICR_ISC6_Msk                          /*!<semaphore 6 interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC7_Pos       (7U)\n#define HSEM_C1ICR_ISC7_Msk       (0x1UL << HSEM_C1ICR_ISC7_Pos)               /*!< 0x00000080 */\n#define HSEM_C1ICR_ISC7           HSEM_C1ICR_ISC7_Msk                          /*!<semaphore 7 interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC8_Pos       (8U)\n#define HSEM_C1ICR_ISC8_Msk       (0x1UL << HSEM_C1ICR_ISC8_Pos)               /*!< 0x00000100 */\n#define HSEM_C1ICR_ISC8           HSEM_C1ICR_ISC8_Msk                          /*!<semaphore 8 interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC9_Pos       (9U)\n#define HSEM_C1ICR_ISC9_Msk       (0x1UL << HSEM_C1ICR_ISC9_Pos)               /*!< 0x00000200 */\n#define HSEM_C1ICR_ISC9           HSEM_C1ICR_ISC9_Msk                          /*!<semaphore 9 interrupt 0 clear bit.  */\n#define HSEM_C1ICR_ISC10_Pos      (10U)\n#define HSEM_C1ICR_ISC10_Msk      (0x1UL << HSEM_C1ICR_ISC10_Pos)              /*!< 0x00000400 */\n#define HSEM_C1ICR_ISC10          HSEM_C1ICR_ISC10_Msk                         /*!<semaphore 10 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC11_Pos      (11U)\n#define HSEM_C1ICR_ISC11_Msk      (0x1UL << HSEM_C1ICR_ISC11_Pos)              /*!< 0x00000800 */\n#define HSEM_C1ICR_ISC11          HSEM_C1ICR_ISC11_Msk                         /*!<semaphore 11 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC12_Pos      (12U)\n#define HSEM_C1ICR_ISC12_Msk      (0x1UL << HSEM_C1ICR_ISC12_Pos)              /*!< 0x00001000 */\n#define HSEM_C1ICR_ISC12          HSEM_C1ICR_ISC12_Msk                         /*!<semaphore 12 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC13_Pos      (13U)\n#define HSEM_C1ICR_ISC13_Msk      (0x1UL << HSEM_C1ICR_ISC13_Pos)              /*!< 0x00002000 */\n#define HSEM_C1ICR_ISC13          HSEM_C1ICR_ISC13_Msk                         /*!<semaphore 13 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC14_Pos      (14U)\n#define HSEM_C1ICR_ISC14_Msk      (0x1UL << HSEM_C1ICR_ISC14_Pos)              /*!< 0x00004000 */\n#define HSEM_C1ICR_ISC14          HSEM_C1ICR_ISC14_Msk                         /*!<semaphore 14 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC15_Pos      (15U)\n#define HSEM_C1ICR_ISC15_Msk      (0x1UL << HSEM_C1ICR_ISC15_Pos)              /*!< 0x00008000 */\n#define HSEM_C1ICR_ISC15          HSEM_C1ICR_ISC15_Msk                         /*!<semaphore 15 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC16_Pos      (16U)\n#define HSEM_C1ICR_ISC16_Msk      (0x1UL << HSEM_C1ICR_ISC16_Pos)              /*!< 0x00010000 */\n#define HSEM_C1ICR_ISC16          HSEM_C1ICR_ISC16_Msk                         /*!<semaphore 16 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC17_Pos      (17U)\n#define HSEM_C1ICR_ISC17_Msk      (0x1UL << HSEM_C1ICR_ISC17_Pos)              /*!< 0x00020000 */\n#define HSEM_C1ICR_ISC17          HSEM_C1ICR_ISC17_Msk                         /*!<semaphore 17 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC18_Pos      (18U)\n#define HSEM_C1ICR_ISC18_Msk      (0x1UL << HSEM_C1ICR_ISC18_Pos)              /*!< 0x00040000 */\n#define HSEM_C1ICR_ISC18          HSEM_C1ICR_ISC18_Msk                         /*!<semaphore 18 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC19_Pos      (19U)\n#define HSEM_C1ICR_ISC19_Msk      (0x1UL << HSEM_C1ICR_ISC19_Pos)              /*!< 0x00080000 */\n#define HSEM_C1ICR_ISC19          HSEM_C1ICR_ISC19_Msk                         /*!<semaphore 19 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC20_Pos      (20U)\n#define HSEM_C1ICR_ISC20_Msk      (0x1UL << HSEM_C1ICR_ISC20_Pos)              /*!< 0x00100000 */\n#define HSEM_C1ICR_ISC20          HSEM_C1ICR_ISC20_Msk                         /*!<semaphore 20 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC21_Pos      (21U)\n#define HSEM_C1ICR_ISC21_Msk      (0x1UL << HSEM_C1ICR_ISC21_Pos)              /*!< 0x00200000 */\n#define HSEM_C1ICR_ISC21          HSEM_C1ICR_ISC21_Msk                         /*!<semaphore 21 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC22_Pos      (22U)\n#define HSEM_C1ICR_ISC22_Msk      (0x1UL << HSEM_C1ICR_ISC22_Pos)              /*!< 0x00400000 */\n#define HSEM_C1ICR_ISC22          HSEM_C1ICR_ISC22_Msk                         /*!<semaphore 22 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC23_Pos      (23U)\n#define HSEM_C1ICR_ISC23_Msk      (0x1UL << HSEM_C1ICR_ISC23_Pos)              /*!< 0x00800000 */\n#define HSEM_C1ICR_ISC23          HSEM_C1ICR_ISC23_Msk                         /*!<semaphore 23 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC24_Pos      (24U)\n#define HSEM_C1ICR_ISC24_Msk      (0x1UL << HSEM_C1ICR_ISC24_Pos)              /*!< 0x01000000 */\n#define HSEM_C1ICR_ISC24          HSEM_C1ICR_ISC24_Msk                         /*!<semaphore 24 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC25_Pos      (25U)\n#define HSEM_C1ICR_ISC25_Msk      (0x1UL << HSEM_C1ICR_ISC25_Pos)              /*!< 0x02000000 */\n#define HSEM_C1ICR_ISC25          HSEM_C1ICR_ISC25_Msk                         /*!<semaphore 25 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC26_Pos      (26U)\n#define HSEM_C1ICR_ISC26_Msk      (0x1UL << HSEM_C1ICR_ISC26_Pos)              /*!< 0x04000000 */\n#define HSEM_C1ICR_ISC26          HSEM_C1ICR_ISC26_Msk                         /*!<semaphore 26 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC27_Pos      (27U)\n#define HSEM_C1ICR_ISC27_Msk      (0x1UL << HSEM_C1ICR_ISC27_Pos)              /*!< 0x08000000 */\n#define HSEM_C1ICR_ISC27          HSEM_C1ICR_ISC27_Msk                         /*!<semaphore 27 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC28_Pos      (28U)\n#define HSEM_C1ICR_ISC28_Msk      (0x1UL << HSEM_C1ICR_ISC28_Pos)              /*!< 0x10000000 */\n#define HSEM_C1ICR_ISC28          HSEM_C1ICR_ISC28_Msk                         /*!<semaphore 28 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC29_Pos      (29U)\n#define HSEM_C1ICR_ISC29_Msk      (0x1UL << HSEM_C1ICR_ISC29_Pos)              /*!< 0x20000000 */\n#define HSEM_C1ICR_ISC29          HSEM_C1ICR_ISC29_Msk                         /*!<semaphore 29 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC30_Pos      (30U)\n#define HSEM_C1ICR_ISC30_Msk      (0x1UL << HSEM_C1ICR_ISC30_Pos)              /*!< 0x40000000 */\n#define HSEM_C1ICR_ISC30          HSEM_C1ICR_ISC30_Msk                         /*!<semaphore 30 interrupt 0 clear bit. */\n#define HSEM_C1ICR_ISC31_Pos      (31U)\n#define HSEM_C1ICR_ISC31_Msk      (0x1UL << HSEM_C1ICR_ISC31_Pos)              /*!< 0x80000000 */\n#define HSEM_C1ICR_ISC31          HSEM_C1ICR_ISC31_Msk                         /*!<semaphore 31 interrupt 0 clear bit. */\n\n/********************  Bit definition for HSEM_C1ISR register  *****************/\n#define HSEM_C1ISR_ISF0_Pos       (0U)\n#define HSEM_C1ISR_ISF0_Msk       (0x1UL << HSEM_C1ISR_ISF0_Pos)               /*!< 0x00000001 */\n#define HSEM_C1ISR_ISF0           HSEM_C1ISR_ISF0_Msk                          /*!<semaphore 0 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF1_Pos       (1U)\n#define HSEM_C1ISR_ISF1_Msk       (0x1UL << HSEM_C1ISR_ISF1_Pos)               /*!< 0x00000002 */\n#define HSEM_C1ISR_ISF1           HSEM_C1ISR_ISF1_Msk                          /*!<semaphore 1 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF2_Pos       (2U)\n#define HSEM_C1ISR_ISF2_Msk       (0x1UL << HSEM_C1ISR_ISF2_Pos)               /*!< 0x00000004 */\n#define HSEM_C1ISR_ISF2           HSEM_C1ISR_ISF2_Msk                          /*!<semaphore 2 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF3_Pos       (3U)\n#define HSEM_C1ISR_ISF3_Msk       (0x1UL << HSEM_C1ISR_ISF3_Pos)               /*!< 0x00000008 */\n#define HSEM_C1ISR_ISF3           HSEM_C1ISR_ISF3_Msk                          /*!<semaphore 3 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF4_Pos       (4U)\n#define HSEM_C1ISR_ISF4_Msk       (0x1UL << HSEM_C1ISR_ISF4_Pos)               /*!< 0x00000010 */\n#define HSEM_C1ISR_ISF4           HSEM_C1ISR_ISF4_Msk                          /*!<semaphore 4 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF5_Pos       (5U)\n#define HSEM_C1ISR_ISF5_Msk       (0x1UL << HSEM_C1ISR_ISF5_Pos)               /*!< 0x00000020 */\n#define HSEM_C1ISR_ISF5           HSEM_C1ISR_ISF5_Msk                          /*!<semaphore 5 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF6_Pos       (6U)\n#define HSEM_C1ISR_ISF6_Msk       (0x1UL << HSEM_C1ISR_ISF6_Pos)               /*!< 0x00000040 */\n#define HSEM_C1ISR_ISF6           HSEM_C1ISR_ISF6_Msk                          /*!<semaphore 6 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF7_Pos       (7U)\n#define HSEM_C1ISR_ISF7_Msk       (0x1UL << HSEM_C1ISR_ISF7_Pos)               /*!< 0x00000080 */\n#define HSEM_C1ISR_ISF7           HSEM_C1ISR_ISF7_Msk                          /*!<semaphore 7 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF8_Pos       (8U)\n#define HSEM_C1ISR_ISF8_Msk       (0x1UL << HSEM_C1ISR_ISF8_Pos)               /*!< 0x00000100 */\n#define HSEM_C1ISR_ISF8           HSEM_C1ISR_ISF8_Msk                          /*!<semaphore 8 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF9_Pos       (9U)\n#define HSEM_C1ISR_ISF9_Msk       (0x1UL << HSEM_C1ISR_ISF9_Pos)               /*!< 0x00000200 */\n#define HSEM_C1ISR_ISF9           HSEM_C1ISR_ISF9_Msk                          /*!<semaphore 9 interrupt 0 status bit.  */\n#define HSEM_C1ISR_ISF10_Pos      (10U)\n#define HSEM_C1ISR_ISF10_Msk      (0x1UL << HSEM_C1ISR_ISF10_Pos)              /*!< 0x00000400 */\n#define HSEM_C1ISR_ISF10          HSEM_C1ISR_ISF10_Msk                         /*!<semaphore 10 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF11_Pos      (11U)\n#define HSEM_C1ISR_ISF11_Msk      (0x1UL << HSEM_C1ISR_ISF11_Pos)              /*!< 0x00000800 */\n#define HSEM_C1ISR_ISF11          HSEM_C1ISR_ISF11_Msk                         /*!<semaphore 11 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF12_Pos      (12U)\n#define HSEM_C1ISR_ISF12_Msk      (0x1UL << HSEM_C1ISR_ISF12_Pos)              /*!< 0x00001000 */\n#define HSEM_C1ISR_ISF12          HSEM_C1ISR_ISF12_Msk                         /*!<semaphore 12 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF13_Pos      (13U)\n#define HSEM_C1ISR_ISF13_Msk      (0x1UL << HSEM_C1ISR_ISF13_Pos)              /*!< 0x00002000 */\n#define HSEM_C1ISR_ISF13          HSEM_C1ISR_ISF13_Msk                         /*!<semaphore 13 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF14_Pos      (14U)\n#define HSEM_C1ISR_ISF14_Msk      (0x1UL << HSEM_C1ISR_ISF14_Pos)              /*!< 0x00004000 */\n#define HSEM_C1ISR_ISF14          HSEM_C1ISR_ISF14_Msk                         /*!<semaphore 14 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF15_Pos      (15U)\n#define HSEM_C1ISR_ISF15_Msk      (0x1UL << HSEM_C1ISR_ISF15_Pos)              /*!< 0x00008000 */\n#define HSEM_C1ISR_ISF15          HSEM_C1ISR_ISF15_Msk                         /*!<semaphore 15 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF16_Pos      (16U)\n#define HSEM_C1ISR_ISF16_Msk      (0x1UL << HSEM_C1ISR_ISF16_Pos)              /*!< 0x00010000 */\n#define HSEM_C1ISR_ISF16          HSEM_C1ISR_ISF16_Msk                         /*!<semaphore 16 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF17_Pos      (17U)\n#define HSEM_C1ISR_ISF17_Msk      (0x1UL << HSEM_C1ISR_ISF17_Pos)              /*!< 0x00020000 */\n#define HSEM_C1ISR_ISF17          HSEM_C1ISR_ISF17_Msk                         /*!<semaphore 17 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF18_Pos      (18U)\n#define HSEM_C1ISR_ISF18_Msk      (0x1UL << HSEM_C1ISR_ISF18_Pos)              /*!< 0x00040000 */\n#define HSEM_C1ISR_ISF18          HSEM_C1ISR_ISF18_Msk                         /*!<semaphore 18 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF19_Pos      (19U)\n#define HSEM_C1ISR_ISF19_Msk      (0x1UL << HSEM_C1ISR_ISF19_Pos)              /*!< 0x00080000 */\n#define HSEM_C1ISR_ISF19          HSEM_C1ISR_ISF19_Msk                         /*!<semaphore 19 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF20_Pos      (20U)\n#define HSEM_C1ISR_ISF20_Msk      (0x1UL << HSEM_C1ISR_ISF20_Pos)              /*!< 0x00100000 */\n#define HSEM_C1ISR_ISF20          HSEM_C1ISR_ISF20_Msk                         /*!<semaphore 20 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF21_Pos      (21U)\n#define HSEM_C1ISR_ISF21_Msk      (0x1UL << HSEM_C1ISR_ISF21_Pos)              /*!< 0x00200000 */\n#define HSEM_C1ISR_ISF21          HSEM_C1ISR_ISF21_Msk                         /*!<semaphore 21 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF22_Pos      (22U)\n#define HSEM_C1ISR_ISF22_Msk      (0x1UL << HSEM_C1ISR_ISF22_Pos)              /*!< 0x00400000 */\n#define HSEM_C1ISR_ISF22          HSEM_C1ISR_ISF22_Msk                         /*!<semaphore 22 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF23_Pos      (23U)\n#define HSEM_C1ISR_ISF23_Msk      (0x1UL << HSEM_C1ISR_ISF23_Pos)              /*!< 0x00800000 */\n#define HSEM_C1ISR_ISF23          HSEM_C1ISR_ISF23_Msk                         /*!<semaphore 23 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF24_Pos      (24U)\n#define HSEM_C1ISR_ISF24_Msk      (0x1UL << HSEM_C1ISR_ISF24_Pos)              /*!< 0x01000000 */\n#define HSEM_C1ISR_ISF24          HSEM_C1ISR_ISF24_Msk                         /*!<semaphore 24 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF25_Pos      (25U)\n#define HSEM_C1ISR_ISF25_Msk      (0x1UL << HSEM_C1ISR_ISF25_Pos)              /*!< 0x02000000 */\n#define HSEM_C1ISR_ISF25          HSEM_C1ISR_ISF25_Msk                         /*!<semaphore 25 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF26_Pos      (26U)\n#define HSEM_C1ISR_ISF26_Msk      (0x1UL << HSEM_C1ISR_ISF26_Pos)              /*!< 0x04000000 */\n#define HSEM_C1ISR_ISF26          HSEM_C1ISR_ISF26_Msk                         /*!<semaphore 26 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF27_Pos      (27U)\n#define HSEM_C1ISR_ISF27_Msk      (0x1UL << HSEM_C1ISR_ISF27_Pos)              /*!< 0x08000000 */\n#define HSEM_C1ISR_ISF27          HSEM_C1ISR_ISF27_Msk                         /*!<semaphore 27 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF28_Pos      (28U)\n#define HSEM_C1ISR_ISF28_Msk      (0x1UL << HSEM_C1ISR_ISF28_Pos)              /*!< 0x10000000 */\n#define HSEM_C1ISR_ISF28          HSEM_C1ISR_ISF28_Msk                         /*!<semaphore 28 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF29_Pos      (29U)\n#define HSEM_C1ISR_ISF29_Msk      (0x1UL << HSEM_C1ISR_ISF29_Pos)              /*!< 0x20000000 */\n#define HSEM_C1ISR_ISF29          HSEM_C1ISR_ISF29_Msk                         /*!<semaphore 29 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF30_Pos      (30U)\n#define HSEM_C1ISR_ISF30_Msk      (0x1UL << HSEM_C1ISR_ISF30_Pos)              /*!< 0x40000000 */\n#define HSEM_C1ISR_ISF30          HSEM_C1ISR_ISF30_Msk                         /*!<semaphore 30 interrupt 0 status bit. */\n#define HSEM_C1ISR_ISF31_Pos      (31U)\n#define HSEM_C1ISR_ISF31_Msk      (0x1UL << HSEM_C1ISR_ISF31_Pos)              /*!< 0x80000000 */\n#define HSEM_C1ISR_ISF31          HSEM_C1ISR_ISF31_Msk                         /*!<semaphore 31 interrupt 0 status bit. */\n\n/********************  Bit definition for HSEM_C1MISR register  *****************/\n#define HSEM_C1MISR_MISF0_Pos     (0U)\n#define HSEM_C1MISR_MISF0_Msk     (0x1UL << HSEM_C1MISR_MISF0_Pos)             /*!< 0x00000001 */\n#define HSEM_C1MISR_MISF0         HSEM_C1MISR_MISF0_Msk                        /*!<semaphore 0 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF1_Pos     (1U)\n#define HSEM_C1MISR_MISF1_Msk     (0x1UL << HSEM_C1MISR_MISF1_Pos)             /*!< 0x00000002 */\n#define HSEM_C1MISR_MISF1         HSEM_C1MISR_MISF1_Msk                        /*!<semaphore 1 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF2_Pos     (2U)\n#define HSEM_C1MISR_MISF2_Msk     (0x1UL << HSEM_C1MISR_MISF2_Pos)             /*!< 0x00000004 */\n#define HSEM_C1MISR_MISF2         HSEM_C1MISR_MISF2_Msk                        /*!<semaphore 2 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF3_Pos     (3U)\n#define HSEM_C1MISR_MISF3_Msk     (0x1UL << HSEM_C1MISR_MISF3_Pos)             /*!< 0x00000008 */\n#define HSEM_C1MISR_MISF3         HSEM_C1MISR_MISF3_Msk                        /*!<semaphore 3 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF4_Pos     (4U)\n#define HSEM_C1MISR_MISF4_Msk     (0x1UL << HSEM_C1MISR_MISF4_Pos)             /*!< 0x00000010 */\n#define HSEM_C1MISR_MISF4         HSEM_C1MISR_MISF4_Msk                        /*!<semaphore 4 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF5_Pos     (5U)\n#define HSEM_C1MISR_MISF5_Msk     (0x1UL << HSEM_C1MISR_MISF5_Pos)             /*!< 0x00000020 */\n#define HSEM_C1MISR_MISF5         HSEM_C1MISR_MISF5_Msk                        /*!<semaphore 5 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF6_Pos     (6U)\n#define HSEM_C1MISR_MISF6_Msk     (0x1UL << HSEM_C1MISR_MISF6_Pos)             /*!< 0x00000040 */\n#define HSEM_C1MISR_MISF6         HSEM_C1MISR_MISF6_Msk                        /*!<semaphore 6 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF7_Pos     (7U)\n#define HSEM_C1MISR_MISF7_Msk     (0x1UL << HSEM_C1MISR_MISF7_Pos)             /*!< 0x00000080 */\n#define HSEM_C1MISR_MISF7         HSEM_C1MISR_MISF7_Msk                        /*!<semaphore 7 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF8_Pos     (8U)\n#define HSEM_C1MISR_MISF8_Msk     (0x1UL << HSEM_C1MISR_MISF8_Pos)             /*!< 0x00000100 */\n#define HSEM_C1MISR_MISF8         HSEM_C1MISR_MISF8_Msk                        /*!<semaphore 8 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF9_Pos     (9U)\n#define HSEM_C1MISR_MISF9_Msk     (0x1UL << HSEM_C1MISR_MISF9_Pos)             /*!< 0x00000200 */\n#define HSEM_C1MISR_MISF9         HSEM_C1MISR_MISF9_Msk                        /*!<semaphore 9 interrupt 0 masked status bit.  */\n#define HSEM_C1MISR_MISF10_Pos    (10U)\n#define HSEM_C1MISR_MISF10_Msk    (0x1UL << HSEM_C1MISR_MISF10_Pos)            /*!< 0x00000400 */\n#define HSEM_C1MISR_MISF10        HSEM_C1MISR_MISF10_Msk                       /*!<semaphore 10 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF11_Pos    (11U)\n#define HSEM_C1MISR_MISF11_Msk    (0x1UL << HSEM_C1MISR_MISF11_Pos)            /*!< 0x00000800 */\n#define HSEM_C1MISR_MISF11        HSEM_C1MISR_MISF11_Msk                       /*!<semaphore 11 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF12_Pos    (12U)\n#define HSEM_C1MISR_MISF12_Msk    (0x1UL << HSEM_C1MISR_MISF12_Pos)            /*!< 0x00001000 */\n#define HSEM_C1MISR_MISF12        HSEM_C1MISR_MISF12_Msk                       /*!<semaphore 12 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF13_Pos    (13U)\n#define HSEM_C1MISR_MISF13_Msk    (0x1UL << HSEM_C1MISR_MISF13_Pos)            /*!< 0x00002000 */\n#define HSEM_C1MISR_MISF13        HSEM_C1MISR_MISF13_Msk                       /*!<semaphore 13 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF14_Pos    (14U)\n#define HSEM_C1MISR_MISF14_Msk    (0x1UL << HSEM_C1MISR_MISF14_Pos)            /*!< 0x00004000 */\n#define HSEM_C1MISR_MISF14        HSEM_C1MISR_MISF14_Msk                       /*!<semaphore 14 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF15_Pos    (15U)\n#define HSEM_C1MISR_MISF15_Msk    (0x1UL << HSEM_C1MISR_MISF15_Pos)            /*!< 0x00008000 */\n#define HSEM_C1MISR_MISF15        HSEM_C1MISR_MISF15_Msk                       /*!<semaphore 15 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF16_Pos    (16U)\n#define HSEM_C1MISR_MISF16_Msk    (0x1UL << HSEM_C1MISR_MISF16_Pos)            /*!< 0x00010000 */\n#define HSEM_C1MISR_MISF16        HSEM_C1MISR_MISF16_Msk                       /*!<semaphore 16 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF17_Pos    (17U)\n#define HSEM_C1MISR_MISF17_Msk    (0x1UL << HSEM_C1MISR_MISF17_Pos)            /*!< 0x00020000 */\n#define HSEM_C1MISR_MISF17        HSEM_C1MISR_MISF17_Msk                       /*!<semaphore 17 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF18_Pos    (18U)\n#define HSEM_C1MISR_MISF18_Msk    (0x1UL << HSEM_C1MISR_MISF18_Pos)            /*!< 0x00040000 */\n#define HSEM_C1MISR_MISF18        HSEM_C1MISR_MISF18_Msk                       /*!<semaphore 18 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF19_Pos    (19U)\n#define HSEM_C1MISR_MISF19_Msk    (0x1UL << HSEM_C1MISR_MISF19_Pos)            /*!< 0x00080000 */\n#define HSEM_C1MISR_MISF19        HSEM_C1MISR_MISF19_Msk                       /*!<semaphore 19 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF20_Pos    (20U)\n#define HSEM_C1MISR_MISF20_Msk    (0x1UL << HSEM_C1MISR_MISF20_Pos)            /*!< 0x00100000 */\n#define HSEM_C1MISR_MISF20        HSEM_C1MISR_MISF20_Msk                       /*!<semaphore 20 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF21_Pos    (21U)\n#define HSEM_C1MISR_MISF21_Msk    (0x1UL << HSEM_C1MISR_MISF21_Pos)            /*!< 0x00200000 */\n#define HSEM_C1MISR_MISF21        HSEM_C1MISR_MISF21_Msk                       /*!<semaphore 21 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF22_Pos    (22U)\n#define HSEM_C1MISR_MISF22_Msk    (0x1UL << HSEM_C1MISR_MISF22_Pos)            /*!< 0x00400000 */\n#define HSEM_C1MISR_MISF22        HSEM_C1MISR_MISF22_Msk                       /*!<semaphore 22 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF23_Pos    (23U)\n#define HSEM_C1MISR_MISF23_Msk    (0x1UL << HSEM_C1MISR_MISF23_Pos)            /*!< 0x00800000 */\n#define HSEM_C1MISR_MISF23        HSEM_C1MISR_MISF23_Msk                       /*!<semaphore 23 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF24_Pos    (24U)\n#define HSEM_C1MISR_MISF24_Msk    (0x1UL << HSEM_C1MISR_MISF24_Pos)            /*!< 0x01000000 */\n#define HSEM_C1MISR_MISF24        HSEM_C1MISR_MISF24_Msk                       /*!<semaphore 24 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF25_Pos    (25U)\n#define HSEM_C1MISR_MISF25_Msk    (0x1UL << HSEM_C1MISR_MISF25_Pos)            /*!< 0x02000000 */\n#define HSEM_C1MISR_MISF25        HSEM_C1MISR_MISF25_Msk                       /*!<semaphore 25 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF26_Pos    (26U)\n#define HSEM_C1MISR_MISF26_Msk    (0x1UL << HSEM_C1MISR_MISF26_Pos)            /*!< 0x04000000 */\n#define HSEM_C1MISR_MISF26        HSEM_C1MISR_MISF26_Msk                       /*!<semaphore 26 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF27_Pos    (27U)\n#define HSEM_C1MISR_MISF27_Msk    (0x1UL << HSEM_C1MISR_MISF27_Pos)            /*!< 0x08000000 */\n#define HSEM_C1MISR_MISF27        HSEM_C1MISR_MISF27_Msk                       /*!<semaphore 27 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF28_Pos    (28U)\n#define HSEM_C1MISR_MISF28_Msk    (0x1UL << HSEM_C1MISR_MISF28_Pos)            /*!< 0x10000000 */\n#define HSEM_C1MISR_MISF28        HSEM_C1MISR_MISF28_Msk                       /*!<semaphore 28 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF29_Pos    (29U)\n#define HSEM_C1MISR_MISF29_Msk    (0x1UL << HSEM_C1MISR_MISF29_Pos)            /*!< 0x20000000 */\n#define HSEM_C1MISR_MISF29        HSEM_C1MISR_MISF29_Msk                       /*!<semaphore 29 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF30_Pos    (30U)\n#define HSEM_C1MISR_MISF30_Msk    (0x1UL << HSEM_C1MISR_MISF30_Pos)            /*!< 0x40000000 */\n#define HSEM_C1MISR_MISF30        HSEM_C1MISR_MISF30_Msk                       /*!<semaphore 30 interrupt 0 masked status bit. */\n#define HSEM_C1MISR_MISF31_Pos    (31U)\n#define HSEM_C1MISR_MISF31_Msk    (0x1UL << HSEM_C1MISR_MISF31_Pos)            /*!< 0x80000000 */\n#define HSEM_C1MISR_MISF31        HSEM_C1MISR_MISF31_Msk                       /*!<semaphore 31 interrupt 0 masked status bit. */\n\n/********************  Bit definition for HSEM_CR register  *****************/\n#define HSEM_CR_COREID_Pos        (8U)\n#define HSEM_CR_COREID_Msk        (0xFFUL << HSEM_CR_COREID_Pos)               /*!< 0x0000FF00 */\n#define HSEM_CR_COREID            HSEM_CR_COREID_Msk                           /*!<CoreID of semaphores to be cleared. */\n#define HSEM_CR_KEY_Pos           (16U)\n#define HSEM_CR_KEY_Msk           (0xFFFFUL << HSEM_CR_KEY_Pos)                /*!< 0xFFFF0000 */\n#define HSEM_CR_KEY               HSEM_CR_KEY_Msk                              /*!<semaphores clear key. */\n\n/********************  Bit definition for HSEM_KEYR register  *****************/\n#define HSEM_KEYR_KEY_Pos         (16U)\n#define HSEM_KEYR_KEY_Msk         (0xFFFFUL << HSEM_KEYR_KEY_Pos)              /*!< 0xFFFF0000 */\n#define HSEM_KEYR_KEY             HSEM_KEYR_KEY_Msk                            /*!<semaphores clear key. */\n\n/******************************************************************************/\n/*                                                                            */\n/*                                    HASH                                    */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bits definition for HASH_CR register  ********************/\n#define HASH_CR_INIT_Pos          (2U)\n#define HASH_CR_INIT_Msk          (0x1UL << HASH_CR_INIT_Pos)                  /*!< 0x00000004 */\n#define HASH_CR_INIT              HASH_CR_INIT_Msk\n#define HASH_CR_DMAE_Pos          (3U)\n#define HASH_CR_DMAE_Msk          (0x1UL << HASH_CR_DMAE_Pos)                  /*!< 0x00000008 */\n#define HASH_CR_DMAE              HASH_CR_DMAE_Msk\n#define HASH_CR_DATATYPE_Pos      (4U)\n#define HASH_CR_DATATYPE_Msk      (0x3UL << HASH_CR_DATATYPE_Pos)              /*!< 0x00000030 */\n#define HASH_CR_DATATYPE          HASH_CR_DATATYPE_Msk\n#define HASH_CR_DATATYPE_0        (0x1UL << HASH_CR_DATATYPE_Pos)               /*!< 0x00000010 */\n#define HASH_CR_DATATYPE_1        (0x2UL << HASH_CR_DATATYPE_Pos)               /*!< 0x00000020 */\n#define HASH_CR_MODE_Pos          (6U)\n#define HASH_CR_MODE_Msk          (0x1UL << HASH_CR_MODE_Pos)                  /*!< 0x00000040 */\n#define HASH_CR_MODE              HASH_CR_MODE_Msk\n#define HASH_CR_ALGO_Pos          (7U)\n#define HASH_CR_ALGO_Msk          (0x801UL << HASH_CR_ALGO_Pos)                /*!< 0x00040080 */\n#define HASH_CR_ALGO              HASH_CR_ALGO_Msk\n#define HASH_CR_ALGO_0            (0x001UL << HASH_CR_ALGO_Pos)                 /*!< 0x00000080 */\n#define HASH_CR_ALGO_1            (0x800UL << HASH_CR_ALGO_Pos)                 /*!< 0x00040000 */\n#define HASH_CR_NBW_Pos           (8U)\n#define HASH_CR_NBW_Msk           (0xFUL << HASH_CR_NBW_Pos)                   /*!< 0x00000F00 */\n#define HASH_CR_NBW               HASH_CR_NBW_Msk\n#define HASH_CR_NBW_0             (0x1UL << HASH_CR_NBW_Pos)                    /*!< 0x00000100 */\n#define HASH_CR_NBW_1             (0x2UL << HASH_CR_NBW_Pos)                    /*!< 0x00000200 */\n#define HASH_CR_NBW_2             (0x4UL << HASH_CR_NBW_Pos)                    /*!< 0x00000400 */\n#define HASH_CR_NBW_3             (0x8UL << HASH_CR_NBW_Pos)                    /*!< 0x00000800 */\n#define HASH_CR_DINNE_Pos         (12U)\n#define HASH_CR_DINNE_Msk         (0x1UL << HASH_CR_DINNE_Pos)                 /*!< 0x00001000 */\n#define HASH_CR_DINNE             HASH_CR_DINNE_Msk\n#define HASH_CR_MDMAT_Pos         (13U)\n#define HASH_CR_MDMAT_Msk         (0x1UL << HASH_CR_MDMAT_Pos)                 /*!< 0x00002000 */\n#define HASH_CR_MDMAT             HASH_CR_MDMAT_Msk\n#define HASH_CR_LKEY_Pos          (16U)\n#define HASH_CR_LKEY_Msk          (0x1UL << HASH_CR_LKEY_Pos)                  /*!< 0x00010000 */\n#define HASH_CR_LKEY              HASH_CR_LKEY_Msk\n\n/******************  Bits definition for HASH_STR register  *******************/\n#define HASH_STR_NBLW_Pos         (0U)\n#define HASH_STR_NBLW_Msk         (0x1FUL << HASH_STR_NBLW_Pos)                /*!< 0x0000001F */\n#define HASH_STR_NBLW             HASH_STR_NBLW_Msk\n#define HASH_STR_NBLW_0           (0x01UL << HASH_STR_NBLW_Pos)                 /*!< 0x00000001 */\n#define HASH_STR_NBLW_1           (0x02UL << HASH_STR_NBLW_Pos)                 /*!< 0x00000002 */\n#define HASH_STR_NBLW_2           (0x04UL << HASH_STR_NBLW_Pos)                 /*!< 0x00000004 */\n#define HASH_STR_NBLW_3           (0x08UL << HASH_STR_NBLW_Pos)                 /*!< 0x00000008 */\n#define HASH_STR_NBLW_4           (0x10UL << HASH_STR_NBLW_Pos)                 /*!< 0x00000010 */\n#define HASH_STR_DCAL_Pos         (8U)\n#define HASH_STR_DCAL_Msk         (0x1UL << HASH_STR_DCAL_Pos)                 /*!< 0x00000100 */\n#define HASH_STR_DCAL             HASH_STR_DCAL_Msk\n\n/******************  Bits definition for HASH_IMR register  *******************/\n#define HASH_IMR_DINIE_Pos        (0U)\n#define HASH_IMR_DINIE_Msk        (0x1UL << HASH_IMR_DINIE_Pos)                /*!< 0x00000001 */\n#define HASH_IMR_DINIE            HASH_IMR_DINIE_Msk\n#define HASH_IMR_DCIE_Pos         (1U)\n#define HASH_IMR_DCIE_Msk         (0x1UL << HASH_IMR_DCIE_Pos)                 /*!< 0x00000002 */\n#define HASH_IMR_DCIE             HASH_IMR_DCIE_Msk\n\n/******************  Bits definition for HASH_SR register  ********************/\n#define HASH_SR_DINIS_Pos         (0U)\n#define HASH_SR_DINIS_Msk         (0x1UL << HASH_SR_DINIS_Pos)                 /*!< 0x00000001 */\n#define HASH_SR_DINIS             HASH_SR_DINIS_Msk\n#define HASH_SR_DCIS_Pos          (1U)\n#define HASH_SR_DCIS_Msk          (0x1UL << HASH_SR_DCIS_Pos)                  /*!< 0x00000002 */\n#define HASH_SR_DCIS              HASH_SR_DCIS_Msk\n#define HASH_SR_DMAS_Pos          (2U)\n#define HASH_SR_DMAS_Msk          (0x1UL << HASH_SR_DMAS_Pos)                  /*!< 0x00000004 */\n#define HASH_SR_DMAS              HASH_SR_DMAS_Msk\n#define HASH_SR_BUSY_Pos          (3U)\n#define HASH_SR_BUSY_Msk          (0x1UL << HASH_SR_BUSY_Pos)                  /*!< 0x00000008 */\n#define HASH_SR_BUSY              HASH_SR_BUSY_Msk\n/******************************************************************************/\n/*                                                                            */\n/*                      Inter-integrated Circuit Interface (I2C)              */\n/*                                                                            */\n/******************************************************************************/\n/*******************  Bit definition for I2C_CR1 register  *******************/\n#define I2C_CR1_PE_Pos               (0U)\n#define I2C_CR1_PE_Msk               (0x1UL << I2C_CR1_PE_Pos)                 /*!< 0x00000001 */\n#define I2C_CR1_PE                   I2C_CR1_PE_Msk                            /*!< Peripheral enable */\n#define I2C_CR1_TXIE_Pos             (1U)\n#define I2C_CR1_TXIE_Msk             (0x1UL << I2C_CR1_TXIE_Pos)               /*!< 0x00000002 */\n#define I2C_CR1_TXIE                 I2C_CR1_TXIE_Msk                          /*!< TX interrupt enable */\n#define I2C_CR1_RXIE_Pos             (2U)\n#define I2C_CR1_RXIE_Msk             (0x1UL << I2C_CR1_RXIE_Pos)               /*!< 0x00000004 */\n#define I2C_CR1_RXIE                 I2C_CR1_RXIE_Msk                          /*!< RX interrupt enable */\n#define I2C_CR1_ADDRIE_Pos           (3U)\n#define I2C_CR1_ADDRIE_Msk           (0x1UL << I2C_CR1_ADDRIE_Pos)             /*!< 0x00000008 */\n#define I2C_CR1_ADDRIE               I2C_CR1_ADDRIE_Msk                        /*!< Address match interrupt enable */\n#define I2C_CR1_NACKIE_Pos           (4U)\n#define I2C_CR1_NACKIE_Msk           (0x1UL << I2C_CR1_NACKIE_Pos)             /*!< 0x00000010 */\n#define I2C_CR1_NACKIE               I2C_CR1_NACKIE_Msk                        /*!< NACK received interrupt enable */\n#define I2C_CR1_STOPIE_Pos           (5U)\n#define I2C_CR1_STOPIE_Msk           (0x1UL << I2C_CR1_STOPIE_Pos)             /*!< 0x00000020 */\n#define I2C_CR1_STOPIE               I2C_CR1_STOPIE_Msk                        /*!< STOP detection interrupt enable */\n#define I2C_CR1_TCIE_Pos             (6U)\n#define I2C_CR1_TCIE_Msk             (0x1UL << I2C_CR1_TCIE_Pos)               /*!< 0x00000040 */\n#define I2C_CR1_TCIE                 I2C_CR1_TCIE_Msk                          /*!< Transfer complete interrupt enable */\n#define I2C_CR1_ERRIE_Pos            (7U)\n#define I2C_CR1_ERRIE_Msk            (0x1UL << I2C_CR1_ERRIE_Pos)              /*!< 0x00000080 */\n#define I2C_CR1_ERRIE                I2C_CR1_ERRIE_Msk                         /*!< Errors interrupt enable */\n#define I2C_CR1_DNF_Pos              (8U)\n#define I2C_CR1_DNF_Msk              (0xFUL << I2C_CR1_DNF_Pos)                /*!< 0x00000F00 */\n#define I2C_CR1_DNF                  I2C_CR1_DNF_Msk                           /*!< Digital noise filter */\n#define I2C_CR1_ANFOFF_Pos           (12U)\n#define I2C_CR1_ANFOFF_Msk           (0x1UL << I2C_CR1_ANFOFF_Pos)             /*!< 0x00001000 */\n#define I2C_CR1_ANFOFF               I2C_CR1_ANFOFF_Msk                        /*!< Analog noise filter OFF */\n#define I2C_CR1_TXDMAEN_Pos          (14U)\n#define I2C_CR1_TXDMAEN_Msk          (0x1UL << I2C_CR1_TXDMAEN_Pos)            /*!< 0x00004000 */\n#define I2C_CR1_TXDMAEN              I2C_CR1_TXDMAEN_Msk                       /*!< DMA transmission requests enable */\n#define I2C_CR1_RXDMAEN_Pos          (15U)\n#define I2C_CR1_RXDMAEN_Msk          (0x1UL << I2C_CR1_RXDMAEN_Pos)            /*!< 0x00008000 */\n#define I2C_CR1_RXDMAEN              I2C_CR1_RXDMAEN_Msk                       /*!< DMA reception requests enable */\n#define I2C_CR1_SBC_Pos              (16U)\n#define I2C_CR1_SBC_Msk              (0x1UL << I2C_CR1_SBC_Pos)                /*!< 0x00010000 */\n#define I2C_CR1_SBC                  I2C_CR1_SBC_Msk                           /*!< Slave byte control */\n#define I2C_CR1_NOSTRETCH_Pos        (17U)\n#define I2C_CR1_NOSTRETCH_Msk        (0x1UL << I2C_CR1_NOSTRETCH_Pos)          /*!< 0x00020000 */\n#define I2C_CR1_NOSTRETCH            I2C_CR1_NOSTRETCH_Msk                     /*!< Clock stretching disable */\n#define I2C_CR1_WUPEN_Pos            (18U)\n#define I2C_CR1_WUPEN_Msk            (0x1UL << I2C_CR1_WUPEN_Pos)              /*!< 0x00040000 */\n#define I2C_CR1_WUPEN                I2C_CR1_WUPEN_Msk                         /*!< Wakeup from STOP enable */\n#define I2C_CR1_GCEN_Pos             (19U)\n#define I2C_CR1_GCEN_Msk             (0x1UL << I2C_CR1_GCEN_Pos)               /*!< 0x00080000 */\n#define I2C_CR1_GCEN                 I2C_CR1_GCEN_Msk                          /*!< General call enable */\n#define I2C_CR1_SMBHEN_Pos           (20U)\n#define I2C_CR1_SMBHEN_Msk           (0x1UL << I2C_CR1_SMBHEN_Pos)             /*!< 0x00100000 */\n#define I2C_CR1_SMBHEN               I2C_CR1_SMBHEN_Msk                        /*!< SMBus host address enable */\n#define I2C_CR1_SMBDEN_Pos           (21U)\n#define I2C_CR1_SMBDEN_Msk           (0x1UL << I2C_CR1_SMBDEN_Pos)             /*!< 0x00200000 */\n#define I2C_CR1_SMBDEN               I2C_CR1_SMBDEN_Msk                        /*!< SMBus device default address enable */\n#define I2C_CR1_ALERTEN_Pos          (22U)\n#define I2C_CR1_ALERTEN_Msk          (0x1UL << I2C_CR1_ALERTEN_Pos)            /*!< 0x00400000 */\n#define I2C_CR1_ALERTEN              I2C_CR1_ALERTEN_Msk                       /*!< SMBus alert enable */\n#define I2C_CR1_PECEN_Pos            (23U)\n#define I2C_CR1_PECEN_Msk            (0x1UL << I2C_CR1_PECEN_Pos)              /*!< 0x00800000 */\n#define I2C_CR1_PECEN                I2C_CR1_PECEN_Msk                         /*!< PEC enable */\n\n/******************  Bit definition for I2C_CR2 register  ********************/\n#define I2C_CR2_SADD_Pos             (0U)\n#define I2C_CR2_SADD_Msk             (0x3FFUL << I2C_CR2_SADD_Pos)             /*!< 0x000003FF */\n#define I2C_CR2_SADD                 I2C_CR2_SADD_Msk                          /*!< Slave address (master mode) */\n#define I2C_CR2_RD_WRN_Pos           (10U)\n#define I2C_CR2_RD_WRN_Msk           (0x1UL << I2C_CR2_RD_WRN_Pos)             /*!< 0x00000400 */\n#define I2C_CR2_RD_WRN               I2C_CR2_RD_WRN_Msk                        /*!< Transfer direction (master mode) */\n#define I2C_CR2_ADD10_Pos            (11U)\n#define I2C_CR2_ADD10_Msk            (0x1UL << I2C_CR2_ADD10_Pos)              /*!< 0x00000800 */\n#define I2C_CR2_ADD10                I2C_CR2_ADD10_Msk                         /*!< 10-bit addressing mode (master mode) */\n#define I2C_CR2_HEAD10R_Pos          (12U)\n#define I2C_CR2_HEAD10R_Msk          (0x1UL << I2C_CR2_HEAD10R_Pos)            /*!< 0x00001000 */\n#define I2C_CR2_HEAD10R              I2C_CR2_HEAD10R_Msk                       /*!< 10-bit address header only read direction (master mode) */\n#define I2C_CR2_START_Pos            (13U)\n#define I2C_CR2_START_Msk            (0x1UL << I2C_CR2_START_Pos)              /*!< 0x00002000 */\n#define I2C_CR2_START                I2C_CR2_START_Msk                         /*!< START generation */\n#define I2C_CR2_STOP_Pos             (14U)\n#define I2C_CR2_STOP_Msk             (0x1UL << I2C_CR2_STOP_Pos)               /*!< 0x00004000 */\n#define I2C_CR2_STOP                 I2C_CR2_STOP_Msk                          /*!< STOP generation (master mode) */\n#define I2C_CR2_NACK_Pos             (15U)\n#define I2C_CR2_NACK_Msk             (0x1UL << I2C_CR2_NACK_Pos)               /*!< 0x00008000 */\n#define I2C_CR2_NACK                 I2C_CR2_NACK_Msk                          /*!< NACK generation (slave mode) */\n#define I2C_CR2_NBYTES_Pos           (16U)\n#define I2C_CR2_NBYTES_Msk           (0xFFUL << I2C_CR2_NBYTES_Pos)            /*!< 0x00FF0000 */\n#define I2C_CR2_NBYTES               I2C_CR2_NBYTES_Msk                        /*!< Number of bytes */\n#define I2C_CR2_RELOAD_Pos           (24U)\n#define I2C_CR2_RELOAD_Msk           (0x1UL << I2C_CR2_RELOAD_Pos)             /*!< 0x01000000 */\n#define I2C_CR2_RELOAD               I2C_CR2_RELOAD_Msk                        /*!< NBYTES reload mode */\n#define I2C_CR2_AUTOEND_Pos          (25U)\n#define I2C_CR2_AUTOEND_Msk          (0x1UL << I2C_CR2_AUTOEND_Pos)            /*!< 0x02000000 */\n#define I2C_CR2_AUTOEND              I2C_CR2_AUTOEND_Msk                       /*!< Automatic end mode (master mode) */\n#define I2C_CR2_PECBYTE_Pos          (26U)\n#define I2C_CR2_PECBYTE_Msk          (0x1UL << I2C_CR2_PECBYTE_Pos)            /*!< 0x04000000 */\n#define I2C_CR2_PECBYTE              I2C_CR2_PECBYTE_Msk                       /*!< Packet error checking byte */\n\n/*******************  Bit definition for I2C_OAR1 register  ******************/\n#define I2C_OAR1_OA1_Pos             (0U)\n#define I2C_OAR1_OA1_Msk             (0x3FFUL << I2C_OAR1_OA1_Pos)             /*!< 0x000003FF */\n#define I2C_OAR1_OA1                 I2C_OAR1_OA1_Msk                          /*!< Interface own address 1 */\n#define I2C_OAR1_OA1MODE_Pos         (10U)\n#define I2C_OAR1_OA1MODE_Msk         (0x1UL << I2C_OAR1_OA1MODE_Pos)           /*!< 0x00000400 */\n#define I2C_OAR1_OA1MODE             I2C_OAR1_OA1MODE_Msk                      /*!< Own address 1 10-bit mode */\n#define I2C_OAR1_OA1EN_Pos           (15U)\n#define I2C_OAR1_OA1EN_Msk           (0x1UL << I2C_OAR1_OA1EN_Pos)             /*!< 0x00008000 */\n#define I2C_OAR1_OA1EN               I2C_OAR1_OA1EN_Msk                        /*!< Own address 1 enable */\n\n/*******************  Bit definition for I2C_OAR2 register  ******************/\n#define I2C_OAR2_OA2_Pos             (1U)\n#define I2C_OAR2_OA2_Msk             (0x7FUL << I2C_OAR2_OA2_Pos)              /*!< 0x000000FE */\n#define I2C_OAR2_OA2                 I2C_OAR2_OA2_Msk                          /*!< Interface own address 2 */\n#define I2C_OAR2_OA2MSK_Pos          (8U)\n#define I2C_OAR2_OA2MSK_Msk          (0x7UL << I2C_OAR2_OA2MSK_Pos)            /*!< 0x00000700 */\n#define I2C_OAR2_OA2MSK              I2C_OAR2_OA2MSK_Msk                       /*!< Own address 2 masks */\n#define I2C_OAR2_OA2NOMASK           0x00000000UL                              /*!< No mask */\n#define I2C_OAR2_OA2MASK01_Pos       (8U)\n#define I2C_OAR2_OA2MASK01_Msk       (0x1UL << I2C_OAR2_OA2MASK01_Pos)         /*!< 0x00000100 */\n#define I2C_OAR2_OA2MASK01           I2C_OAR2_OA2MASK01_Msk                    /*!< OA2[1] is masked, Only OA2[7:2] are compared */\n#define I2C_OAR2_OA2MASK02_Pos       (9U)\n#define I2C_OAR2_OA2MASK02_Msk       (0x1UL << I2C_OAR2_OA2MASK02_Pos)         /*!< 0x00000200 */\n#define I2C_OAR2_OA2MASK02           I2C_OAR2_OA2MASK02_Msk                    /*!< OA2[2:1] is masked, Only OA2[7:3] are compared */\n#define I2C_OAR2_OA2MASK03_Pos       (8U)\n#define I2C_OAR2_OA2MASK03_Msk       (0x3UL << I2C_OAR2_OA2MASK03_Pos)         /*!< 0x00000300 */\n#define I2C_OAR2_OA2MASK03           I2C_OAR2_OA2MASK03_Msk                    /*!< OA2[3:1] is masked, Only OA2[7:4] are compared */\n#define I2C_OAR2_OA2MASK04_Pos       (10U)\n#define I2C_OAR2_OA2MASK04_Msk       (0x1UL << I2C_OAR2_OA2MASK04_Pos)         /*!< 0x00000400 */\n#define I2C_OAR2_OA2MASK04           I2C_OAR2_OA2MASK04_Msk                    /*!< OA2[4:1] is masked, Only OA2[7:5] are compared */\n#define I2C_OAR2_OA2MASK05_Pos       (8U)\n#define I2C_OAR2_OA2MASK05_Msk       (0x5UL << I2C_OAR2_OA2MASK05_Pos)         /*!< 0x00000500 */\n#define I2C_OAR2_OA2MASK05           I2C_OAR2_OA2MASK05_Msk                    /*!< OA2[5:1] is masked, Only OA2[7:6] are compared */\n#define I2C_OAR2_OA2MASK06_Pos       (9U)\n#define I2C_OAR2_OA2MASK06_Msk       (0x3UL << I2C_OAR2_OA2MASK06_Pos)         /*!< 0x00000600 */\n#define I2C_OAR2_OA2MASK06           I2C_OAR2_OA2MASK06_Msk                    /*!< OA2[6:1] is masked, Only OA2[7] are compared */\n#define I2C_OAR2_OA2MASK07_Pos       (8U)\n#define I2C_OAR2_OA2MASK07_Msk       (0x7UL << I2C_OAR2_OA2MASK07_Pos)         /*!< 0x00000700 */\n#define I2C_OAR2_OA2MASK07           I2C_OAR2_OA2MASK07_Msk                    /*!< OA2[7:1] is masked, No comparison is done */\n#define I2C_OAR2_OA2EN_Pos           (15U)\n#define I2C_OAR2_OA2EN_Msk           (0x1UL << I2C_OAR2_OA2EN_Pos)             /*!< 0x00008000 */\n#define I2C_OAR2_OA2EN               I2C_OAR2_OA2EN_Msk                        /*!< Own address 2 enable */\n\n/*******************  Bit definition for I2C_TIMINGR register *******************/\n#define I2C_TIMINGR_SCLL_Pos         (0U)\n#define I2C_TIMINGR_SCLL_Msk         (0xFFUL << I2C_TIMINGR_SCLL_Pos)          /*!< 0x000000FF */\n#define I2C_TIMINGR_SCLL             I2C_TIMINGR_SCLL_Msk                      /*!< SCL low period (master mode) */\n#define I2C_TIMINGR_SCLH_Pos         (8U)\n#define I2C_TIMINGR_SCLH_Msk         (0xFFUL << I2C_TIMINGR_SCLH_Pos)          /*!< 0x0000FF00 */\n#define I2C_TIMINGR_SCLH             I2C_TIMINGR_SCLH_Msk                      /*!< SCL high period (master mode) */\n#define I2C_TIMINGR_SDADEL_Pos       (16U)\n#define I2C_TIMINGR_SDADEL_Msk       (0xFUL << I2C_TIMINGR_SDADEL_Pos)         /*!< 0x000F0000 */\n#define I2C_TIMINGR_SDADEL           I2C_TIMINGR_SDADEL_Msk                    /*!< Data hold time */\n#define I2C_TIMINGR_SCLDEL_Pos       (20U)\n#define I2C_TIMINGR_SCLDEL_Msk       (0xFUL << I2C_TIMINGR_SCLDEL_Pos)         /*!< 0x00F00000 */\n#define I2C_TIMINGR_SCLDEL           I2C_TIMINGR_SCLDEL_Msk                    /*!< Data setup time */\n#define I2C_TIMINGR_PRESC_Pos        (28U)\n#define I2C_TIMINGR_PRESC_Msk        (0xFUL << I2C_TIMINGR_PRESC_Pos)          /*!< 0xF0000000 */\n#define I2C_TIMINGR_PRESC            I2C_TIMINGR_PRESC_Msk                     /*!< Timings prescaler */\n\n/******************* Bit definition for I2C_TIMEOUTR register *******************/\n#define I2C_TIMEOUTR_TIMEOUTA_Pos    (0U)\n#define I2C_TIMEOUTR_TIMEOUTA_Msk    (0xFFFUL << I2C_TIMEOUTR_TIMEOUTA_Pos)    /*!< 0x00000FFF */\n#define I2C_TIMEOUTR_TIMEOUTA        I2C_TIMEOUTR_TIMEOUTA_Msk                 /*!< Bus timeout A */\n#define I2C_TIMEOUTR_TIDLE_Pos       (12U)\n#define I2C_TIMEOUTR_TIDLE_Msk       (0x1UL << I2C_TIMEOUTR_TIDLE_Pos)         /*!< 0x00001000 */\n#define I2C_TIMEOUTR_TIDLE           I2C_TIMEOUTR_TIDLE_Msk                    /*!< Idle clock timeout detection */\n#define I2C_TIMEOUTR_TIMOUTEN_Pos    (15U)\n#define I2C_TIMEOUTR_TIMOUTEN_Msk    (0x1UL << I2C_TIMEOUTR_TIMOUTEN_Pos)      /*!< 0x00008000 */\n#define I2C_TIMEOUTR_TIMOUTEN        I2C_TIMEOUTR_TIMOUTEN_Msk                 /*!< Clock timeout enable */\n#define I2C_TIMEOUTR_TIMEOUTB_Pos    (16U)\n#define I2C_TIMEOUTR_TIMEOUTB_Msk    (0xFFFUL << I2C_TIMEOUTR_TIMEOUTB_Pos)    /*!< 0x0FFF0000 */\n#define I2C_TIMEOUTR_TIMEOUTB        I2C_TIMEOUTR_TIMEOUTB_Msk                 /*!< Bus timeout B*/\n#define I2C_TIMEOUTR_TEXTEN_Pos      (31U)\n#define I2C_TIMEOUTR_TEXTEN_Msk      (0x1UL << I2C_TIMEOUTR_TEXTEN_Pos)        /*!< 0x80000000 */\n#define I2C_TIMEOUTR_TEXTEN          I2C_TIMEOUTR_TEXTEN_Msk                   /*!< Extended clock timeout enable */\n\n/******************  Bit definition for I2C_ISR register  *********************/\n#define I2C_ISR_TXE_Pos              (0U)\n#define I2C_ISR_TXE_Msk              (0x1UL << I2C_ISR_TXE_Pos)                /*!< 0x00000001 */\n#define I2C_ISR_TXE                  I2C_ISR_TXE_Msk                           /*!< Transmit data register empty */\n#define I2C_ISR_TXIS_Pos             (1U)\n#define I2C_ISR_TXIS_Msk             (0x1UL << I2C_ISR_TXIS_Pos)               /*!< 0x00000002 */\n#define I2C_ISR_TXIS                 I2C_ISR_TXIS_Msk                          /*!< Transmit interrupt status */\n#define I2C_ISR_RXNE_Pos             (2U)\n#define I2C_ISR_RXNE_Msk             (0x1UL << I2C_ISR_RXNE_Pos)               /*!< 0x00000004 */\n#define I2C_ISR_RXNE                 I2C_ISR_RXNE_Msk                          /*!< Receive data register not empty */\n#define I2C_ISR_ADDR_Pos             (3U)\n#define I2C_ISR_ADDR_Msk             (0x1UL << I2C_ISR_ADDR_Pos)               /*!< 0x00000008 */\n#define I2C_ISR_ADDR                 I2C_ISR_ADDR_Msk                          /*!< Address matched (slave mode)*/\n#define I2C_ISR_NACKF_Pos            (4U)\n#define I2C_ISR_NACKF_Msk            (0x1UL << I2C_ISR_NACKF_Pos)              /*!< 0x00000010 */\n#define I2C_ISR_NACKF                I2C_ISR_NACKF_Msk                         /*!< NACK received flag */\n#define I2C_ISR_STOPF_Pos            (5U)\n#define I2C_ISR_STOPF_Msk            (0x1UL << I2C_ISR_STOPF_Pos)              /*!< 0x00000020 */\n#define I2C_ISR_STOPF                I2C_ISR_STOPF_Msk                         /*!< STOP detection flag */\n#define I2C_ISR_TC_Pos               (6U)\n#define I2C_ISR_TC_Msk               (0x1UL << I2C_ISR_TC_Pos)                 /*!< 0x00000040 */\n#define I2C_ISR_TC                   I2C_ISR_TC_Msk                            /*!< Transfer complete (master mode) */\n#define I2C_ISR_TCR_Pos              (7U)\n#define I2C_ISR_TCR_Msk              (0x1UL << I2C_ISR_TCR_Pos)                /*!< 0x00000080 */\n#define I2C_ISR_TCR                  I2C_ISR_TCR_Msk                           /*!< Transfer complete reload */\n#define I2C_ISR_BERR_Pos             (8U)\n#define I2C_ISR_BERR_Msk             (0x1UL << I2C_ISR_BERR_Pos)               /*!< 0x00000100 */\n#define I2C_ISR_BERR                 I2C_ISR_BERR_Msk                          /*!< Bus error */\n#define I2C_ISR_ARLO_Pos             (9U)\n#define I2C_ISR_ARLO_Msk             (0x1UL << I2C_ISR_ARLO_Pos)               /*!< 0x00000200 */\n#define I2C_ISR_ARLO                 I2C_ISR_ARLO_Msk                          /*!< Arbitration lost */\n#define I2C_ISR_OVR_Pos              (10U)\n#define I2C_ISR_OVR_Msk              (0x1UL << I2C_ISR_OVR_Pos)                /*!< 0x00000400 */\n#define I2C_ISR_OVR                  I2C_ISR_OVR_Msk                           /*!< Overrun/Underrun */\n#define I2C_ISR_PECERR_Pos           (11U)\n#define I2C_ISR_PECERR_Msk           (0x1UL << I2C_ISR_PECERR_Pos)             /*!< 0x00000800 */\n#define I2C_ISR_PECERR               I2C_ISR_PECERR_Msk                        /*!< PEC error in reception */\n#define I2C_ISR_TIMEOUT_Pos          (12U)\n#define I2C_ISR_TIMEOUT_Msk          (0x1UL << I2C_ISR_TIMEOUT_Pos)            /*!< 0x00001000 */\n#define I2C_ISR_TIMEOUT              I2C_ISR_TIMEOUT_Msk                       /*!< Timeout or Tlow detection flag */\n#define I2C_ISR_ALERT_Pos            (13U)\n#define I2C_ISR_ALERT_Msk            (0x1UL << I2C_ISR_ALERT_Pos)              /*!< 0x00002000 */\n#define I2C_ISR_ALERT                I2C_ISR_ALERT_Msk                         /*!< SMBus alert */\n#define I2C_ISR_BUSY_Pos             (15U)\n#define I2C_ISR_BUSY_Msk             (0x1UL << I2C_ISR_BUSY_Pos)               /*!< 0x00008000 */\n#define I2C_ISR_BUSY                 I2C_ISR_BUSY_Msk                          /*!< Bus busy */\n#define I2C_ISR_DIR_Pos              (16U)\n#define I2C_ISR_DIR_Msk              (0x1UL << I2C_ISR_DIR_Pos)                /*!< 0x00010000 */\n#define I2C_ISR_DIR                  I2C_ISR_DIR_Msk                           /*!< Transfer direction (slave mode) */\n#define I2C_ISR_ADDCODE_Pos          (17U)\n#define I2C_ISR_ADDCODE_Msk          (0x7FUL << I2C_ISR_ADDCODE_Pos)           /*!< 0x00FE0000 */\n#define I2C_ISR_ADDCODE              I2C_ISR_ADDCODE_Msk                       /*!< Address match code (slave mode) */\n\n/******************  Bit definition for I2C_ICR register  *********************/\n#define I2C_ICR_ADDRCF_Pos           (3U)\n#define I2C_ICR_ADDRCF_Msk           (0x1UL << I2C_ICR_ADDRCF_Pos)             /*!< 0x00000008 */\n#define I2C_ICR_ADDRCF               I2C_ICR_ADDRCF_Msk                        /*!< Address matched clear flag */\n#define I2C_ICR_NACKCF_Pos           (4U)\n#define I2C_ICR_NACKCF_Msk           (0x1UL << I2C_ICR_NACKCF_Pos)             /*!< 0x00000010 */\n#define I2C_ICR_NACKCF               I2C_ICR_NACKCF_Msk                        /*!< NACK clear flag */\n#define I2C_ICR_STOPCF_Pos           (5U)\n#define I2C_ICR_STOPCF_Msk           (0x1UL << I2C_ICR_STOPCF_Pos)             /*!< 0x00000020 */\n#define I2C_ICR_STOPCF               I2C_ICR_STOPCF_Msk                        /*!< STOP detection clear flag */\n#define I2C_ICR_BERRCF_Pos           (8U)\n#define I2C_ICR_BERRCF_Msk           (0x1UL << I2C_ICR_BERRCF_Pos)             /*!< 0x00000100 */\n#define I2C_ICR_BERRCF               I2C_ICR_BERRCF_Msk                        /*!< Bus error clear flag */\n#define I2C_ICR_ARLOCF_Pos           (9U)\n#define I2C_ICR_ARLOCF_Msk           (0x1UL << I2C_ICR_ARLOCF_Pos)             /*!< 0x00000200 */\n#define I2C_ICR_ARLOCF               I2C_ICR_ARLOCF_Msk                        /*!< Arbitration lost clear flag */\n#define I2C_ICR_OVRCF_Pos            (10U)\n#define I2C_ICR_OVRCF_Msk            (0x1UL << I2C_ICR_OVRCF_Pos)              /*!< 0x00000400 */\n#define I2C_ICR_OVRCF                I2C_ICR_OVRCF_Msk                         /*!< Overrun/Underrun clear flag */\n#define I2C_ICR_PECCF_Pos            (11U)\n#define I2C_ICR_PECCF_Msk            (0x1UL << I2C_ICR_PECCF_Pos)              /*!< 0x00000800 */\n#define I2C_ICR_PECCF                I2C_ICR_PECCF_Msk                         /*!< PAC error clear flag */\n#define I2C_ICR_TIMOUTCF_Pos         (12U)\n#define I2C_ICR_TIMOUTCF_Msk         (0x1UL << I2C_ICR_TIMOUTCF_Pos)           /*!< 0x00001000 */\n#define I2C_ICR_TIMOUTCF             I2C_ICR_TIMOUTCF_Msk                      /*!< Timeout clear flag */\n#define I2C_ICR_ALERTCF_Pos          (13U)\n#define I2C_ICR_ALERTCF_Msk          (0x1UL << I2C_ICR_ALERTCF_Pos)            /*!< 0x00002000 */\n#define I2C_ICR_ALERTCF              I2C_ICR_ALERTCF_Msk                       /*!< Alert clear flag */\n\n/******************  Bit definition for I2C_PECR register  *********************/\n#define I2C_PECR_PEC_Pos             (0U)\n#define I2C_PECR_PEC_Msk             (0xFFUL << I2C_PECR_PEC_Pos)              /*!< 0x000000FF */\n#define I2C_PECR_PEC                 I2C_PECR_PEC_Msk                          /*!< PEC register */\n\n/******************  Bit definition for I2C_RXDR register  *********************/\n#define I2C_RXDR_RXDATA_Pos          (0U)\n#define I2C_RXDR_RXDATA_Msk          (0xFFUL << I2C_RXDR_RXDATA_Pos)           /*!< 0x000000FF */\n#define I2C_RXDR_RXDATA              I2C_RXDR_RXDATA_Msk                       /*!< 8-bit receive data */\n\n/******************  Bit definition for I2C_TXDR register  *********************/\n#define I2C_TXDR_TXDATA_Pos          (0U)\n#define I2C_TXDR_TXDATA_Msk          (0xFFUL << I2C_TXDR_TXDATA_Pos)           /*!< 0x000000FF */\n#define I2C_TXDR_TXDATA              I2C_TXDR_TXDATA_Msk                       /*!< 8-bit transmit data */\n\n/******************************************************************************/\n/*                                                                            */\n/*                           Independent WATCHDOG                             */\n/*                                                                            */\n/******************************************************************************/\n/*******************  Bit definition for IWDG_KR register  ********************/\n#define IWDG_KR_KEY_Pos      (0U)\n#define IWDG_KR_KEY_Msk      (0xFFFFUL << IWDG_KR_KEY_Pos)                     /*!< 0x0000FFFF */\n#define IWDG_KR_KEY          IWDG_KR_KEY_Msk                                   /*!<Key value (write only, read 0000h)  */\n\n/*******************  Bit definition for IWDG_PR register  ********************/\n#define IWDG_PR_PR_Pos       (0U)\n#define IWDG_PR_PR_Msk       (0x7UL << IWDG_PR_PR_Pos)                         /*!< 0x00000007 */\n#define IWDG_PR_PR           IWDG_PR_PR_Msk                                    /*!<PR[2:0] (Prescaler divider)         */\n#define IWDG_PR_PR_0         (0x1UL << IWDG_PR_PR_Pos)                          /*!< 0x00000001 */\n#define IWDG_PR_PR_1         (0x2UL << IWDG_PR_PR_Pos)                          /*!< 0x00000002 */\n#define IWDG_PR_PR_2         (0x4UL << IWDG_PR_PR_Pos)                          /*!< 0x00000004 */\n\n/*******************  Bit definition for IWDG_RLR register  *******************/\n#define IWDG_RLR_RL_Pos      (0U)\n#define IWDG_RLR_RL_Msk      (0xFFFUL << IWDG_RLR_RL_Pos)                      /*!< 0x00000FFF */\n#define IWDG_RLR_RL          IWDG_RLR_RL_Msk                                   /*!<Watchdog counter reload value        */\n\n/*******************  Bit definition for IWDG_SR register  ********************/\n#define IWDG_SR_PVU_Pos      (0U)\n#define IWDG_SR_PVU_Msk      (0x1UL << IWDG_SR_PVU_Pos)                        /*!< 0x00000001 */\n#define IWDG_SR_PVU          IWDG_SR_PVU_Msk                                   /*!< Watchdog prescaler value update */\n#define IWDG_SR_RVU_Pos      (1U)\n#define IWDG_SR_RVU_Msk      (0x1UL << IWDG_SR_RVU_Pos)                        /*!< 0x00000002 */\n#define IWDG_SR_RVU          IWDG_SR_RVU_Msk                                   /*!< Watchdog counter reload value update */\n#define IWDG_SR_WVU_Pos      (2U)\n#define IWDG_SR_WVU_Msk      (0x1UL << IWDG_SR_WVU_Pos)                        /*!< 0x00000004 */\n#define IWDG_SR_WVU          IWDG_SR_WVU_Msk                                   /*!< Watchdog counter window value update */\n\n/*******************  Bit definition for IWDG_KR register  ********************/\n#define IWDG_WINR_WIN_Pos    (0U)\n#define IWDG_WINR_WIN_Msk    (0xFFFUL << IWDG_WINR_WIN_Pos)                    /*!< 0x00000FFF */\n#define IWDG_WINR_WIN        IWDG_WINR_WIN_Msk                                 /*!< Watchdog counter window value */\n\n/******************************************************************************/\n/*                                                                            */\n/*                        JPEG Encoder/Decoder                                */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bit definition for CONFR0 register  ********************/\n#define JPEG_CONFR0_START_Pos           (0U)\n#define JPEG_CONFR0_START_Msk           (0x1UL << JPEG_CONFR0_START_Pos)       /*!< 0x00000001 */\n#define JPEG_CONFR0_START               JPEG_CONFR0_START_Msk                  /*!<Start/Stop bit */\n\n/********************  Bit definition for CONFR1 register  ********************/\n#define JPEG_CONFR1_NF_Pos              (0U)\n#define JPEG_CONFR1_NF_Msk              (0x3UL << JPEG_CONFR1_NF_Pos)          /*!< 0x00000003 */\n#define JPEG_CONFR1_NF                  JPEG_CONFR1_NF_Msk                     /*!<Number of color components */\n#define JPEG_CONFR1_NF_0                (0x1UL << JPEG_CONFR1_NF_Pos)           /*!< 0x00000001 */\n#define JPEG_CONFR1_NF_1                (0x2UL << JPEG_CONFR1_NF_Pos)           /*!< 0x00000002 */\n#define JPEG_CONFR1_DE_Pos              (3U)\n#define JPEG_CONFR1_DE_Msk              (0x1UL << JPEG_CONFR1_DE_Pos)          /*!< 0x00000008 */\n#define JPEG_CONFR1_DE                  JPEG_CONFR1_DE_Msk                     /*!<Decoding Enable */\n#define JPEG_CONFR1_COLORSPACE_Pos      (4U)\n#define JPEG_CONFR1_COLORSPACE_Msk      (0x3UL << JPEG_CONFR1_COLORSPACE_Pos)  /*!< 0x00000030 */\n#define JPEG_CONFR1_COLORSPACE          JPEG_CONFR1_COLORSPACE_Msk             /*!<Color Space */\n#define JPEG_CONFR1_COLORSPACE_0        (0x1UL << JPEG_CONFR1_COLORSPACE_Pos)   /*!< 0x00000010 */\n#define JPEG_CONFR1_COLORSPACE_1        (0x2UL << JPEG_CONFR1_COLORSPACE_Pos)   /*!< 0x00000020 */\n#define JPEG_CONFR1_NS_Pos              (6U)\n#define JPEG_CONFR1_NS_Msk              (0x3UL << JPEG_CONFR1_NS_Pos)          /*!< 0x000000C0 */\n#define JPEG_CONFR1_NS                  JPEG_CONFR1_NS_Msk                     /*!<Number of components for Scan */\n#define JPEG_CONFR1_NS_0                (0x1UL << JPEG_CONFR1_NS_Pos)           /*!< 0x00000040 */\n#define JPEG_CONFR1_NS_1                (0x2UL << JPEG_CONFR1_NS_Pos)           /*!< 0x00000080 */\n#define JPEG_CONFR1_HDR_Pos             (8U)\n#define JPEG_CONFR1_HDR_Msk             (0x1UL << JPEG_CONFR1_HDR_Pos)         /*!< 0x00000100 */\n#define JPEG_CONFR1_HDR                 JPEG_CONFR1_HDR_Msk                    /*!<Header Processing On/Off */\n#define JPEG_CONFR1_YSIZE_Pos           (16U)\n#define JPEG_CONFR1_YSIZE_Msk           (0xFFFFUL << JPEG_CONFR1_YSIZE_Pos)    /*!< 0xFFFF0000 */\n#define JPEG_CONFR1_YSIZE               JPEG_CONFR1_YSIZE_Msk                  /*!<Number of lines in source image */\n\n/********************  Bit definition for CONFR2 register  ********************/\n#define JPEG_CONFR2_NMCU_Pos            (0U)\n#define JPEG_CONFR2_NMCU_Msk            (0x3FFFFFFUL << JPEG_CONFR2_NMCU_Pos)  /*!< 0x03FFFFFF */\n#define JPEG_CONFR2_NMCU                JPEG_CONFR2_NMCU_Msk                   /*!<Number of MCU units minus 1 to encode */\n\n/********************  Bit definition for CONFR3 register  ********************/\n#define JPEG_CONFR3_XSIZE_Pos           (16U)\n#define JPEG_CONFR3_XSIZE_Msk           (0xFFFFUL << JPEG_CONFR3_XSIZE_Pos)    /*!< 0xFFFF0000 */\n#define JPEG_CONFR3_XSIZE               JPEG_CONFR3_XSIZE_Msk                  /*!<Number of pixels per line */\n\n/********************  Bit definition for CONFR4 register  ********************/\n#define JPEG_CONFR4_HD_Pos              (0U)\n#define JPEG_CONFR4_HD_Msk              (0x1UL << JPEG_CONFR4_HD_Pos)          /*!< 0x00000001 */\n#define JPEG_CONFR4_HD                  JPEG_CONFR4_HD_Msk                     /*!<Selects the Huffman table for encoding the DC coefficients */\n#define JPEG_CONFR4_HA_Pos              (1U)\n#define JPEG_CONFR4_HA_Msk              (0x1UL << JPEG_CONFR4_HA_Pos)          /*!< 0x00000002 */\n#define JPEG_CONFR4_HA                  JPEG_CONFR4_HA_Msk                     /*!<Selects the Huffman table for encoding the AC coefficients */\n#define JPEG_CONFR4_QT_Pos              (2U)\n#define JPEG_CONFR4_QT_Msk              (0x3UL << JPEG_CONFR4_QT_Pos)          /*!< 0x0000000C */\n#define JPEG_CONFR4_QT                  JPEG_CONFR4_QT_Msk                     /*!<Selects quantization table associated with a color component */\n#define JPEG_CONFR4_QT_0                (0x1UL << JPEG_CONFR4_QT_Pos)           /*!< 0x00000004 */\n#define JPEG_CONFR4_QT_1                (0x2UL << JPEG_CONFR4_QT_Pos)           /*!< 0x00000008 */\n#define JPEG_CONFR4_NB_Pos              (4U)\n#define JPEG_CONFR4_NB_Msk              (0xFUL << JPEG_CONFR4_NB_Pos)          /*!< 0x000000F0 */\n#define JPEG_CONFR4_NB                  JPEG_CONFR4_NB_Msk                     /*!<Number of data units minus 1 that belong to a particular color in the MCU */\n#define JPEG_CONFR4_NB_0                (0x1UL << JPEG_CONFR4_NB_Pos)           /*!< 0x00000010 */\n#define JPEG_CONFR4_NB_1                (0x2UL << JPEG_CONFR4_NB_Pos)           /*!< 0x00000020 */\n#define JPEG_CONFR4_NB_2                (0x4UL << JPEG_CONFR4_NB_Pos)           /*!< 0x00000040 */\n#define JPEG_CONFR4_NB_3                (0x8UL << JPEG_CONFR4_NB_Pos)           /*!< 0x00000080 */\n#define JPEG_CONFR4_VSF_Pos             (8U)\n#define JPEG_CONFR4_VSF_Msk             (0xFUL << JPEG_CONFR4_VSF_Pos)         /*!< 0x00000F00 */\n#define JPEG_CONFR4_VSF                 JPEG_CONFR4_VSF_Msk                    /*!<Vertical sampling factor for component 1 */\n#define JPEG_CONFR4_VSF_0               (0x1UL << JPEG_CONFR4_VSF_Pos)          /*!< 0x00000100 */\n#define JPEG_CONFR4_VSF_1               (0x2UL << JPEG_CONFR4_VSF_Pos)          /*!< 0x00000200 */\n#define JPEG_CONFR4_VSF_2               (0x4UL << JPEG_CONFR4_VSF_Pos)          /*!< 0x00000400 */\n#define JPEG_CONFR4_VSF_3               (0x8UL << JPEG_CONFR4_VSF_Pos)          /*!< 0x00000800 */\n#define JPEG_CONFR4_HSF_Pos             (12U)\n#define JPEG_CONFR4_HSF_Msk             (0xFUL << JPEG_CONFR4_HSF_Pos)         /*!< 0x0000F000 */\n#define JPEG_CONFR4_HSF                 JPEG_CONFR4_HSF_Msk                    /*!<Horizontal sampling factor for component 1 */\n#define JPEG_CONFR4_HSF_0               (0x1UL << JPEG_CONFR4_HSF_Pos)          /*!< 0x00001000 */\n#define JPEG_CONFR4_HSF_1               (0x2UL << JPEG_CONFR4_HSF_Pos)          /*!< 0x00002000 */\n#define JPEG_CONFR4_HSF_2               (0x4UL << JPEG_CONFR4_HSF_Pos)          /*!< 0x00004000 */\n#define JPEG_CONFR4_HSF_3               (0x8UL << JPEG_CONFR4_HSF_Pos)          /*!< 0x00008000 */\n\n/********************  Bit definition for CONFR5 register  ********************/\n#define JPEG_CONFR5_HD_Pos              (0U)\n#define JPEG_CONFR5_HD_Msk              (0x1UL << JPEG_CONFR5_HD_Pos)          /*!< 0x00000001 */\n#define JPEG_CONFR5_HD                  JPEG_CONFR5_HD_Msk                     /*!<Selects the Huffman table for encoding the DC coefficients */\n#define JPEG_CONFR5_HA_Pos              (1U)\n#define JPEG_CONFR5_HA_Msk              (0x1UL << JPEG_CONFR5_HA_Pos)          /*!< 0x00000002 */\n#define JPEG_CONFR5_HA                  JPEG_CONFR5_HA_Msk                     /*!<Selects the Huffman table for encoding the AC coefficients */\n#define JPEG_CONFR5_QT_Pos              (2U)\n#define JPEG_CONFR5_QT_Msk              (0x3UL << JPEG_CONFR5_QT_Pos)          /*!< 0x0000000C */\n#define JPEG_CONFR5_QT                  JPEG_CONFR5_QT_Msk                     /*!<Selects quantization table associated with a color component */\n#define JPEG_CONFR5_QT_0                (0x1UL << JPEG_CONFR5_QT_Pos)           /*!< 0x00000004 */\n#define JPEG_CONFR5_QT_1                (0x2UL << JPEG_CONFR5_QT_Pos)           /*!< 0x00000008 */\n#define JPEG_CONFR5_NB_Pos              (4U)\n#define JPEG_CONFR5_NB_Msk              (0xFUL << JPEG_CONFR5_NB_Pos)          /*!< 0x000000F0 */\n#define JPEG_CONFR5_NB                  JPEG_CONFR5_NB_Msk                     /*!<Number of data units minus 1 that belong to a particular color in the MCU */\n#define JPEG_CONFR5_NB_0                (0x1UL << JPEG_CONFR5_NB_Pos)           /*!< 0x00000010 */\n#define JPEG_CONFR5_NB_1                (0x2UL << JPEG_CONFR5_NB_Pos)           /*!< 0x00000020 */\n#define JPEG_CONFR5_NB_2                (0x4UL << JPEG_CONFR5_NB_Pos)           /*!< 0x00000040 */\n#define JPEG_CONFR5_NB_3                (0x8UL << JPEG_CONFR5_NB_Pos)           /*!< 0x00000080 */\n#define JPEG_CONFR5_VSF_Pos             (8U)\n#define JPEG_CONFR5_VSF_Msk             (0xFUL << JPEG_CONFR5_VSF_Pos)         /*!< 0x00000F00 */\n#define JPEG_CONFR5_VSF                 JPEG_CONFR5_VSF_Msk                    /*!<Vertical sampling factor for component 2 */\n#define JPEG_CONFR5_VSF_0               (0x1UL << JPEG_CONFR5_VSF_Pos)          /*!< 0x00000100 */\n#define JPEG_CONFR5_VSF_1               (0x2UL << JPEG_CONFR5_VSF_Pos)          /*!< 0x00000200 */\n#define JPEG_CONFR5_VSF_2               (0x4UL << JPEG_CONFR5_VSF_Pos)          /*!< 0x00000400 */\n#define JPEG_CONFR5_VSF_3               (0x8UL << JPEG_CONFR5_VSF_Pos)          /*!< 0x00000800 */\n#define JPEG_CONFR5_HSF_Pos             (12U)\n#define JPEG_CONFR5_HSF_Msk             (0xFUL << JPEG_CONFR5_HSF_Pos)         /*!< 0x0000F000 */\n#define JPEG_CONFR5_HSF                 JPEG_CONFR5_HSF_Msk                    /*!<Horizontal sampling factor for component 2 */\n#define JPEG_CONFR5_HSF_0               (0x1UL << JPEG_CONFR5_HSF_Pos)          /*!< 0x00001000 */\n#define JPEG_CONFR5_HSF_1               (0x2UL << JPEG_CONFR5_HSF_Pos)          /*!< 0x00002000 */\n#define JPEG_CONFR5_HSF_2               (0x4UL << JPEG_CONFR5_HSF_Pos)          /*!< 0x00004000 */\n#define JPEG_CONFR5_HSF_3               (0x8UL << JPEG_CONFR5_HSF_Pos)          /*!< 0x00008000 */\n\n/********************  Bit definition for CONFR6 register  ********************/\n#define JPEG_CONFR6_HD_Pos              (0U)\n#define JPEG_CONFR6_HD_Msk              (0x1UL << JPEG_CONFR6_HD_Pos)          /*!< 0x00000001 */\n#define JPEG_CONFR6_HD                  JPEG_CONFR6_HD_Msk                     /*!<Selects the Huffman table for encoding the DC coefficients */\n#define JPEG_CONFR6_HA_Pos              (1U)\n#define JPEG_CONFR6_HA_Msk              (0x1UL << JPEG_CONFR6_HA_Pos)          /*!< 0x00000002 */\n#define JPEG_CONFR6_HA                  JPEG_CONFR6_HA_Msk                     /*!<Selects the Huffman table for encoding the AC coefficients */\n#define JPEG_CONFR6_QT_Pos              (2U)\n#define JPEG_CONFR6_QT_Msk              (0x3UL << JPEG_CONFR6_QT_Pos)          /*!< 0x0000000C */\n#define JPEG_CONFR6_QT                  JPEG_CONFR6_QT_Msk                     /*!<Selects quantization table associated with a color component */\n#define JPEG_CONFR6_QT_0                (0x1UL << JPEG_CONFR6_QT_Pos)           /*!< 0x00000004 */\n#define JPEG_CONFR6_QT_1                (0x2UL << JPEG_CONFR6_QT_Pos)           /*!< 0x00000008 */\n#define JPEG_CONFR6_NB_Pos              (4U)\n#define JPEG_CONFR6_NB_Msk              (0xFUL << JPEG_CONFR6_NB_Pos)          /*!< 0x000000F0 */\n#define JPEG_CONFR6_NB                  JPEG_CONFR6_NB_Msk                     /*!<Number of data units minus 1 that belong to a particular color in the MCU */\n#define JPEG_CONFR6_NB_0                (0x1UL << JPEG_CONFR6_NB_Pos)           /*!< 0x00000010 */\n#define JPEG_CONFR6_NB_1                (0x2UL << JPEG_CONFR6_NB_Pos)           /*!< 0x00000020 */\n#define JPEG_CONFR6_NB_2                (0x4UL << JPEG_CONFR6_NB_Pos)           /*!< 0x00000040 */\n#define JPEG_CONFR6_NB_3                (0x8UL << JPEG_CONFR6_NB_Pos)           /*!< 0x00000080 */\n#define JPEG_CONFR6_VSF_Pos             (8U)\n#define JPEG_CONFR6_VSF_Msk             (0xFUL << JPEG_CONFR6_VSF_Pos)         /*!< 0x00000F00 */\n#define JPEG_CONFR6_VSF                 JPEG_CONFR6_VSF_Msk                    /*!<Vertical sampling factor for component 2 */\n#define JPEG_CONFR6_VSF_0               (0x1UL << JPEG_CONFR6_VSF_Pos)          /*!< 0x00000100 */\n#define JPEG_CONFR6_VSF_1               (0x2UL << JPEG_CONFR6_VSF_Pos)          /*!< 0x00000200 */\n#define JPEG_CONFR6_VSF_2               (0x4UL << JPEG_CONFR6_VSF_Pos)          /*!< 0x00000400 */\n#define JPEG_CONFR6_VSF_3               (0x8UL << JPEG_CONFR6_VSF_Pos)          /*!< 0x00000800 */\n#define JPEG_CONFR6_HSF_Pos             (12U)\n#define JPEG_CONFR6_HSF_Msk             (0xFUL << JPEG_CONFR6_HSF_Pos)         /*!< 0x0000F000 */\n#define JPEG_CONFR6_HSF                 JPEG_CONFR6_HSF_Msk                    /*!<Horizontal sampling factor for component 2 */\n#define JPEG_CONFR6_HSF_0               (0x1UL << JPEG_CONFR6_HSF_Pos)          /*!< 0x00001000 */\n#define JPEG_CONFR6_HSF_1               (0x2UL << JPEG_CONFR6_HSF_Pos)          /*!< 0x00002000 */\n#define JPEG_CONFR6_HSF_2               (0x4UL << JPEG_CONFR6_HSF_Pos)          /*!< 0x00004000 */\n#define JPEG_CONFR6_HSF_3               (0x8UL << JPEG_CONFR6_HSF_Pos)          /*!< 0x00008000 */\n\n/********************  Bit definition for CONFR7 register  ********************/\n#define JPEG_CONFR7_HD_Pos              (0U)\n#define JPEG_CONFR7_HD_Msk              (0x1UL << JPEG_CONFR7_HD_Pos)          /*!< 0x00000001 */\n#define JPEG_CONFR7_HD                  JPEG_CONFR7_HD_Msk                     /*!<Selects the Huffman table for encoding the DC coefficients */\n#define JPEG_CONFR7_HA_Pos              (1U)\n#define JPEG_CONFR7_HA_Msk              (0x1UL << JPEG_CONFR7_HA_Pos)          /*!< 0x00000002 */\n#define JPEG_CONFR7_HA                  JPEG_CONFR7_HA_Msk                     /*!<Selects the Huffman table for encoding the AC coefficients */\n#define JPEG_CONFR7_QT_Pos              (2U)\n#define JPEG_CONFR7_QT_Msk              (0x3UL << JPEG_CONFR7_QT_Pos)          /*!< 0x0000000C */\n#define JPEG_CONFR7_QT                  JPEG_CONFR7_QT_Msk                     /*!<Selects quantization table associated with a color component */\n#define JPEG_CONFR7_QT_0                (0x1UL << JPEG_CONFR7_QT_Pos)           /*!< 0x00000004 */\n#define JPEG_CONFR7_QT_1                (0x2UL << JPEG_CONFR7_QT_Pos)           /*!< 0x00000008 */\n#define JPEG_CONFR7_NB_Pos              (4U)\n#define JPEG_CONFR7_NB_Msk              (0xFUL << JPEG_CONFR7_NB_Pos)          /*!< 0x000000F0 */\n#define JPEG_CONFR7_NB                  JPEG_CONFR7_NB_Msk                     /*!<Number of data units minus 1 that belong to a particular color in the MCU */\n#define JPEG_CONFR7_NB_0                (0x1UL << JPEG_CONFR7_NB_Pos)           /*!< 0x00000010 */\n#define JPEG_CONFR7_NB_1                (0x2UL << JPEG_CONFR7_NB_Pos)           /*!< 0x00000020 */\n#define JPEG_CONFR7_NB_2                (0x4UL << JPEG_CONFR7_NB_Pos)           /*!< 0x00000040 */\n#define JPEG_CONFR7_NB_3                (0x8UL << JPEG_CONFR7_NB_Pos)           /*!< 0x00000080 */\n#define JPEG_CONFR7_VSF_Pos             (8U)\n#define JPEG_CONFR7_VSF_Msk             (0xFUL << JPEG_CONFR7_VSF_Pos)         /*!< 0x00000F00 */\n#define JPEG_CONFR7_VSF                 JPEG_CONFR7_VSF_Msk                    /*!<Vertical sampling factor for component 2 */\n#define JPEG_CONFR7_VSF_0               (0x1UL << JPEG_CONFR7_VSF_Pos)          /*!< 0x00000100 */\n#define JPEG_CONFR7_VSF_1               (0x2UL << JPEG_CONFR7_VSF_Pos)          /*!< 0x00000200 */\n#define JPEG_CONFR7_VSF_2               (0x4UL << JPEG_CONFR7_VSF_Pos)          /*!< 0x00000400 */\n#define JPEG_CONFR7_VSF_3               (0x8UL << JPEG_CONFR7_VSF_Pos)          /*!< 0x00000800 */\n#define JPEG_CONFR7_HSF_Pos             (12U)\n#define JPEG_CONFR7_HSF_Msk             (0xFUL << JPEG_CONFR7_HSF_Pos)         /*!< 0x0000F000 */\n#define JPEG_CONFR7_HSF                 JPEG_CONFR7_HSF_Msk                    /*!<Horizontal sampling factor for component 2 */\n#define JPEG_CONFR7_HSF_0               (0x1UL << JPEG_CONFR7_HSF_Pos)          /*!< 0x00001000 */\n#define JPEG_CONFR7_HSF_1               (0x2UL << JPEG_CONFR7_HSF_Pos)          /*!< 0x00002000 */\n#define JPEG_CONFR7_HSF_2               (0x4UL << JPEG_CONFR7_HSF_Pos)          /*!< 0x00004000 */\n#define JPEG_CONFR7_HSF_3               (0x8UL << JPEG_CONFR7_HSF_Pos)          /*!< 0x00008000 */\n\n/********************  Bit definition for CR register  ********************/\n#define JPEG_CR_JCEN_Pos                (0U)\n#define JPEG_CR_JCEN_Msk                (0x1UL << JPEG_CR_JCEN_Pos)            /*!< 0x00000001 */\n#define JPEG_CR_JCEN                    JPEG_CR_JCEN_Msk                       /*!<Enable the JPEG Codec Core */\n#define JPEG_CR_IFTIE_Pos               (1U)\n#define JPEG_CR_IFTIE_Msk               (0x1UL << JPEG_CR_IFTIE_Pos)           /*!< 0x00000002 */\n#define JPEG_CR_IFTIE                   JPEG_CR_IFTIE_Msk                      /*!<Input FIFO Threshold Interrupt Enable */\n#define JPEG_CR_IFNFIE_Pos              (2U)\n#define JPEG_CR_IFNFIE_Msk              (0x1UL << JPEG_CR_IFNFIE_Pos)          /*!< 0x00000004 */\n#define JPEG_CR_IFNFIE                  JPEG_CR_IFNFIE_Msk                     /*!<Input FIFO Not Full Interrupt Enable */\n#define JPEG_CR_OFTIE_Pos               (3U)\n#define JPEG_CR_OFTIE_Msk               (0x1UL << JPEG_CR_OFTIE_Pos)           /*!< 0x00000008 */\n#define JPEG_CR_OFTIE                   JPEG_CR_OFTIE_Msk                      /*!<Output FIFO Threshold Interrupt Enable */\n#define JPEG_CR_OFNEIE_Pos              (4U)\n#define JPEG_CR_OFNEIE_Msk              (0x1UL << JPEG_CR_OFNEIE_Pos)          /*!< 0x00000010 */\n#define JPEG_CR_OFNEIE                  JPEG_CR_OFNEIE_Msk                     /*!<Output FIFO Not Empty Interrupt Enable */\n#define JPEG_CR_EOCIE_Pos               (5U)\n#define JPEG_CR_EOCIE_Msk               (0x1UL << JPEG_CR_EOCIE_Pos)           /*!< 0x00000020 */\n#define JPEG_CR_EOCIE                   JPEG_CR_EOCIE_Msk                      /*!<End of Conversion Interrupt Enable */\n#define JPEG_CR_HPDIE_Pos               (6U)\n#define JPEG_CR_HPDIE_Msk               (0x1UL << JPEG_CR_HPDIE_Pos)           /*!< 0x00000040 */\n#define JPEG_CR_HPDIE                   JPEG_CR_HPDIE_Msk                      /*!<Header Parsing Done Interrupt Enable */\n#define JPEG_CR_IFF_Pos                 (13U)\n#define JPEG_CR_IFF_Msk                 (0x1UL << JPEG_CR_IFF_Pos)             /*!< 0x00002000 */\n#define JPEG_CR_IFF                     JPEG_CR_IFF_Msk                        /*!<Flush the input FIFO */\n#define JPEG_CR_OFF_Pos                 (14U)\n#define JPEG_CR_OFF_Msk                 (0x1UL << JPEG_CR_OFF_Pos)             /*!< 0x00004000 */\n#define JPEG_CR_OFF                     JPEG_CR_OFF_Msk                        /*!<Flush the output FIFO */\n\n/********************  Bit definition for SR register  ********************/\n#define JPEG_SR_IFTF_Pos                (1U)\n#define JPEG_SR_IFTF_Msk                (0x1UL << JPEG_SR_IFTF_Pos)            /*!< 0x00000002 */\n#define JPEG_SR_IFTF                    JPEG_SR_IFTF_Msk                       /*!<Input FIFO is not full and is bellow its threshold flag */\n#define JPEG_SR_IFNFF_Pos               (2U)\n#define JPEG_SR_IFNFF_Msk               (0x1UL << JPEG_SR_IFNFF_Pos)           /*!< 0x00000004 */\n#define JPEG_SR_IFNFF                   JPEG_SR_IFNFF_Msk                      /*!<Input FIFO Not Full Flag, a data can be written */\n#define JPEG_SR_OFTF_Pos                (3U)\n#define JPEG_SR_OFTF_Msk                (0x1UL << JPEG_SR_OFTF_Pos)            /*!< 0x00000008 */\n#define JPEG_SR_OFTF                    JPEG_SR_OFTF_Msk                       /*!<Output FIFO is not empty and has reach its threshold */\n#define JPEG_SR_OFNEF_Pos               (4U)\n#define JPEG_SR_OFNEF_Msk               (0x1UL << JPEG_SR_OFNEF_Pos)           /*!< 0x00000010 */\n#define JPEG_SR_OFNEF                   JPEG_SR_OFNEF_Msk                      /*!<Output FIFO is not empty, a data is available */\n#define JPEG_SR_EOCF_Pos                (5U)\n#define JPEG_SR_EOCF_Msk                (0x1UL << JPEG_SR_EOCF_Pos)            /*!< 0x00000020 */\n#define JPEG_SR_EOCF                    JPEG_SR_EOCF_Msk                       /*!<JPEG Codec core has finished the encoding or the decoding process and than last data has been sent to the output FIFO */\n#define JPEG_SR_HPDF_Pos                (6U)\n#define JPEG_SR_HPDF_Msk                (0x1UL << JPEG_SR_HPDF_Pos)            /*!< 0x00000040 */\n#define JPEG_SR_HPDF                    JPEG_SR_HPDF_Msk                       /*!<JPEG Codec has finished the parsing of the headers and the internal registers have been updated */\n#define JPEG_SR_COF_Pos                 (7U)\n#define JPEG_SR_COF_Msk                 (0x1UL << JPEG_SR_COF_Pos)             /*!< 0x00000080 */\n#define JPEG_SR_COF                     JPEG_SR_COF_Msk                        /*!<JPEG Codec operation on going flag */\n\n/********************  Bit definition for CFR register  ********************/\n#define JPEG_CFR_CEOCF_Pos              (4U)\n#define JPEG_CFR_CEOCF_Msk              (0x1UL << JPEG_CFR_CEOCF_Pos)          /*!< 0x00000010 */\n#define JPEG_CFR_CEOCF                  JPEG_CFR_CEOCF_Msk                     /*!<Clear End of Conversion Flag */\n#define JPEG_CFR_CHPDF_Pos              (5U)\n#define JPEG_CFR_CHPDF_Msk              (0x1UL << JPEG_CFR_CHPDF_Pos)          /*!< 0x00000020 */\n#define JPEG_CFR_CHPDF                  JPEG_CFR_CHPDF_Msk                     /*!<Clear Header Parsing Done Flag */\n\n/********************  Bit definition for DIR register  ********************/\n#define JPEG_DIR_DATAIN_Pos             (0U)\n#define JPEG_DIR_DATAIN_Msk             (0xFFFFFFFFUL << JPEG_DIR_DATAIN_Pos)  /*!< 0xFFFFFFFF */\n#define JPEG_DIR_DATAIN                 JPEG_DIR_DATAIN_Msk                    /*!<Data Input FIFO */\n\n/********************  Bit definition for DOR register  ********************/\n#define JPEG_DOR_DATAOUT_Pos            (0U)\n#define JPEG_DOR_DATAOUT_Msk            (0xFFFFFFFFUL << JPEG_DOR_DATAOUT_Pos) /*!< 0xFFFFFFFF */\n#define JPEG_DOR_DATAOUT                JPEG_DOR_DATAOUT_Msk                   /*!<Data Output FIFO */\n\n/******************************************************************************/\n/*                                                                            */\n/*                      LCD-TFT Display Controller (LTDC)                     */\n/*                                                                            */\n/******************************************************************************/\n\n/********************  Bit definition for LTDC_SSCR register  *****************/\n\n#define LTDC_SSCR_VSH_Pos            (0U)\n#define LTDC_SSCR_VSH_Msk            (0x7FFUL << LTDC_SSCR_VSH_Pos)            /*!< 0x000007FF */\n#define LTDC_SSCR_VSH                LTDC_SSCR_VSH_Msk                         /*!< Vertical Synchronization Height  */\n#define LTDC_SSCR_HSW_Pos            (16U)\n#define LTDC_SSCR_HSW_Msk            (0xFFFUL << LTDC_SSCR_HSW_Pos)            /*!< 0x0FFF0000 */\n#define LTDC_SSCR_HSW                LTDC_SSCR_HSW_Msk                         /*!< Horizontal Synchronization Width */\n\n/********************  Bit definition for LTDC_BPCR register  *****************/\n\n#define LTDC_BPCR_AVBP_Pos           (0U)\n#define LTDC_BPCR_AVBP_Msk           (0x7FFUL << LTDC_BPCR_AVBP_Pos)           /*!< 0x000007FF */\n#define LTDC_BPCR_AVBP               LTDC_BPCR_AVBP_Msk                        /*!< Accumulated Vertical Back Porch   */\n#define LTDC_BPCR_AHBP_Pos           (16U)\n#define LTDC_BPCR_AHBP_Msk           (0xFFFUL << LTDC_BPCR_AHBP_Pos)           /*!< 0x0FFF0000 */\n#define LTDC_BPCR_AHBP               LTDC_BPCR_AHBP_Msk                        /*!< Accumulated Horizontal Back Porch */\n\n/********************  Bit definition for LTDC_AWCR register  *****************/\n\n#define LTDC_AWCR_AAH_Pos            (0U)\n#define LTDC_AWCR_AAH_Msk            (0x7FFUL << LTDC_AWCR_AAH_Pos)            /*!< 0x000007FF */\n#define LTDC_AWCR_AAH                LTDC_AWCR_AAH_Msk                         /*!< Accumulated Active height */\n#define LTDC_AWCR_AAW_Pos            (16U)\n#define LTDC_AWCR_AAW_Msk            (0xFFFUL << LTDC_AWCR_AAW_Pos)            /*!< 0x0FFF0000 */\n#define LTDC_AWCR_AAW                LTDC_AWCR_AAW_Msk                         /*!< Accumulated Active Width */\n\n/********************  Bit definition for LTDC_TWCR register  *****************/\n\n#define LTDC_TWCR_TOTALH_Pos         (0U)\n#define LTDC_TWCR_TOTALH_Msk         (0x7FFUL << LTDC_TWCR_TOTALH_Pos)         /*!< 0x000007FF */\n#define LTDC_TWCR_TOTALH             LTDC_TWCR_TOTALH_Msk                      /*!< Total height */\n#define LTDC_TWCR_TOTALW_Pos         (16U)\n#define LTDC_TWCR_TOTALW_Msk         (0xFFFUL << LTDC_TWCR_TOTALW_Pos)         /*!< 0x0FFF0000 */\n#define LTDC_TWCR_TOTALW             LTDC_TWCR_TOTALW_Msk                      /*!< Total Width */\n\n/********************  Bit definition for LTDC_GCR register  ******************/\n\n#define LTDC_GCR_LTDCEN_Pos          (0U)\n#define LTDC_GCR_LTDCEN_Msk          (0x1UL << LTDC_GCR_LTDCEN_Pos)            /*!< 0x00000001 */\n#define LTDC_GCR_LTDCEN              LTDC_GCR_LTDCEN_Msk                       /*!< LCD-TFT controller enable bit       */\n#define LTDC_GCR_DBW_Pos             (4U)\n#define LTDC_GCR_DBW_Msk             (0x7UL << LTDC_GCR_DBW_Pos)               /*!< 0x00000070 */\n#define LTDC_GCR_DBW                 LTDC_GCR_DBW_Msk                          /*!< Dither Blue Width                   */\n#define LTDC_GCR_DGW_Pos             (8U)\n#define LTDC_GCR_DGW_Msk             (0x7UL << LTDC_GCR_DGW_Pos)               /*!< 0x00000700 */\n#define LTDC_GCR_DGW                 LTDC_GCR_DGW_Msk                          /*!< Dither Green Width                  */\n#define LTDC_GCR_DRW_Pos             (12U)\n#define LTDC_GCR_DRW_Msk             (0x7UL << LTDC_GCR_DRW_Pos)               /*!< 0x00007000 */\n#define LTDC_GCR_DRW                 LTDC_GCR_DRW_Msk                          /*!< Dither Red Width                    */\n#define LTDC_GCR_DEN_Pos             (16U)\n#define LTDC_GCR_DEN_Msk             (0x1UL << LTDC_GCR_DEN_Pos)               /*!< 0x00010000 */\n#define LTDC_GCR_DEN                 LTDC_GCR_DEN_Msk                          /*!< Dither Enable                       */\n#define LTDC_GCR_PCPOL_Pos           (28U)\n#define LTDC_GCR_PCPOL_Msk           (0x1UL << LTDC_GCR_PCPOL_Pos)             /*!< 0x10000000 */\n#define LTDC_GCR_PCPOL               LTDC_GCR_PCPOL_Msk                        /*!< Pixel Clock Polarity                */\n#define LTDC_GCR_DEPOL_Pos           (29U)\n#define LTDC_GCR_DEPOL_Msk           (0x1UL << LTDC_GCR_DEPOL_Pos)             /*!< 0x20000000 */\n#define LTDC_GCR_DEPOL               LTDC_GCR_DEPOL_Msk                        /*!< Data Enable Polarity                */\n#define LTDC_GCR_VSPOL_Pos           (30U)\n#define LTDC_GCR_VSPOL_Msk           (0x1UL << LTDC_GCR_VSPOL_Pos)             /*!< 0x40000000 */\n#define LTDC_GCR_VSPOL               LTDC_GCR_VSPOL_Msk                        /*!< Vertical Synchronization Polarity   */\n#define LTDC_GCR_HSPOL_Pos           (31U)\n#define LTDC_GCR_HSPOL_Msk           (0x1UL << LTDC_GCR_HSPOL_Pos)             /*!< 0x80000000 */\n#define LTDC_GCR_HSPOL               LTDC_GCR_HSPOL_Msk                        /*!< Horizontal Synchronization Polarity */\n\n\n/********************  Bit definition for LTDC_SRCR register  *****************/\n\n#define LTDC_SRCR_IMR_Pos            (0U)\n#define LTDC_SRCR_IMR_Msk            (0x1UL << LTDC_SRCR_IMR_Pos)              /*!< 0x00000001 */\n#define LTDC_SRCR_IMR                LTDC_SRCR_IMR_Msk                         /*!< Immediate Reload         */\n#define LTDC_SRCR_VBR_Pos            (1U)\n#define LTDC_SRCR_VBR_Msk            (0x1UL << LTDC_SRCR_VBR_Pos)              /*!< 0x00000002 */\n#define LTDC_SRCR_VBR                LTDC_SRCR_VBR_Msk                         /*!< Vertical Blanking Reload */\n\n/********************  Bit definition for LTDC_BCCR register  *****************/\n\n#define LTDC_BCCR_BCBLUE_Pos         (0U)\n#define LTDC_BCCR_BCBLUE_Msk         (0xFFUL << LTDC_BCCR_BCBLUE_Pos)          /*!< 0x000000FF */\n#define LTDC_BCCR_BCBLUE             LTDC_BCCR_BCBLUE_Msk                      /*!< Background Blue value  */\n#define LTDC_BCCR_BCGREEN_Pos        (8U)\n#define LTDC_BCCR_BCGREEN_Msk        (0xFFUL << LTDC_BCCR_BCGREEN_Pos)         /*!< 0x0000FF00 */\n#define LTDC_BCCR_BCGREEN            LTDC_BCCR_BCGREEN_Msk                     /*!< Background Green value */\n#define LTDC_BCCR_BCRED_Pos          (16U)\n#define LTDC_BCCR_BCRED_Msk          (0xFFUL << LTDC_BCCR_BCRED_Pos)           /*!< 0x00FF0000 */\n#define LTDC_BCCR_BCRED              LTDC_BCCR_BCRED_Msk                       /*!< Background Red value   */\n\n/********************  Bit definition for LTDC_IER register  ******************/\n\n#define LTDC_IER_LIE_Pos             (0U)\n#define LTDC_IER_LIE_Msk             (0x1UL << LTDC_IER_LIE_Pos)               /*!< 0x00000001 */\n#define LTDC_IER_LIE                 LTDC_IER_LIE_Msk                          /*!< Line Interrupt Enable            */\n#define LTDC_IER_FUIE_Pos            (1U)\n#define LTDC_IER_FUIE_Msk            (0x1UL << LTDC_IER_FUIE_Pos)              /*!< 0x00000002 */\n#define LTDC_IER_FUIE                LTDC_IER_FUIE_Msk                         /*!< FIFO Underrun Interrupt Enable   */\n#define LTDC_IER_TERRIE_Pos          (2U)\n#define LTDC_IER_TERRIE_Msk          (0x1UL << LTDC_IER_TERRIE_Pos)            /*!< 0x00000004 */\n#define LTDC_IER_TERRIE              LTDC_IER_TERRIE_Msk                       /*!< Transfer Error Interrupt Enable  */\n#define LTDC_IER_RRIE_Pos            (3U)\n#define LTDC_IER_RRIE_Msk            (0x1UL << LTDC_IER_RRIE_Pos)              /*!< 0x00000008 */\n#define LTDC_IER_RRIE                LTDC_IER_RRIE_Msk                         /*!< Register Reload interrupt enable */\n\n/********************  Bit definition for LTDC_ISR register  ******************/\n\n#define LTDC_ISR_LIF_Pos             (0U)\n#define LTDC_ISR_LIF_Msk             (0x1UL << LTDC_ISR_LIF_Pos)               /*!< 0x00000001 */\n#define LTDC_ISR_LIF                 LTDC_ISR_LIF_Msk                          /*!< Line Interrupt Flag */\n#define LTDC_ISR_FUIF_Pos            (1U)\n#define LTDC_ISR_FUIF_Msk            (0x1UL << LTDC_ISR_FUIF_Pos)              /*!< 0x00000002 */\n#define LTDC_ISR_FUIF                LTDC_ISR_FUIF_Msk                         /*!< FIFO Underrun Interrupt Flag */\n#define LTDC_ISR_TERRIF_Pos          (2U)\n#define LTDC_ISR_TERRIF_Msk          (0x1UL << LTDC_ISR_TERRIF_Pos)            /*!< 0x00000004 */\n#define LTDC_ISR_TERRIF              LTDC_ISR_TERRIF_Msk                       /*!< Transfer Error Interrupt Flag */\n#define LTDC_ISR_RRIF_Pos            (3U)\n#define LTDC_ISR_RRIF_Msk            (0x1UL << LTDC_ISR_RRIF_Pos)              /*!< 0x00000008 */\n#define LTDC_ISR_RRIF                LTDC_ISR_RRIF_Msk                         /*!< Register Reload interrupt Flag */\n\n/********************  Bit definition for LTDC_ICR register  ******************/\n\n#define LTDC_ICR_CLIF_Pos            (0U)\n#define LTDC_ICR_CLIF_Msk            (0x1UL << LTDC_ICR_CLIF_Pos)              /*!< 0x00000001 */\n#define LTDC_ICR_CLIF                LTDC_ICR_CLIF_Msk                         /*!< Clears the Line Interrupt Flag */\n#define LTDC_ICR_CFUIF_Pos           (1U)\n#define LTDC_ICR_CFUIF_Msk           (0x1UL << LTDC_ICR_CFUIF_Pos)             /*!< 0x00000002 */\n#define LTDC_ICR_CFUIF               LTDC_ICR_CFUIF_Msk                        /*!< Clears the FIFO Underrun Interrupt Flag */\n#define LTDC_ICR_CTERRIF_Pos         (2U)\n#define LTDC_ICR_CTERRIF_Msk         (0x1UL << LTDC_ICR_CTERRIF_Pos)           /*!< 0x00000004 */\n#define LTDC_ICR_CTERRIF             LTDC_ICR_CTERRIF_Msk                      /*!< Clears the Transfer Error Interrupt Flag */\n#define LTDC_ICR_CRRIF_Pos           (3U)\n#define LTDC_ICR_CRRIF_Msk           (0x1UL << LTDC_ICR_CRRIF_Pos)             /*!< 0x00000008 */\n#define LTDC_ICR_CRRIF               LTDC_ICR_CRRIF_Msk                        /*!< Clears Register Reload interrupt Flag */\n\n/********************  Bit definition for LTDC_LIPCR register  ****************/\n\n#define LTDC_LIPCR_LIPOS_Pos         (0U)\n#define LTDC_LIPCR_LIPOS_Msk         (0x7FFUL << LTDC_LIPCR_LIPOS_Pos)         /*!< 0x000007FF */\n#define LTDC_LIPCR_LIPOS             LTDC_LIPCR_LIPOS_Msk                      /*!< Line Interrupt Position */\n\n/********************  Bit definition for LTDC_CPSR register  *****************/\n\n#define LTDC_CPSR_CYPOS_Pos          (0U)\n#define LTDC_CPSR_CYPOS_Msk          (0xFFFFUL << LTDC_CPSR_CYPOS_Pos)         /*!< 0x0000FFFF */\n#define LTDC_CPSR_CYPOS              LTDC_CPSR_CYPOS_Msk                       /*!< Current Y Position */\n#define LTDC_CPSR_CXPOS_Pos          (16U)\n#define LTDC_CPSR_CXPOS_Msk          (0xFFFFUL << LTDC_CPSR_CXPOS_Pos)         /*!< 0xFFFF0000 */\n#define LTDC_CPSR_CXPOS              LTDC_CPSR_CXPOS_Msk                       /*!< Current X Position */\n\n/********************  Bit definition for LTDC_CDSR register  *****************/\n\n#define LTDC_CDSR_VDES_Pos           (0U)\n#define LTDC_CDSR_VDES_Msk           (0x1UL << LTDC_CDSR_VDES_Pos)             /*!< 0x00000001 */\n#define LTDC_CDSR_VDES               LTDC_CDSR_VDES_Msk                        /*!< Vertical Data Enable Status       */\n#define LTDC_CDSR_HDES_Pos           (1U)\n#define LTDC_CDSR_HDES_Msk           (0x1UL << LTDC_CDSR_HDES_Pos)             /*!< 0x00000002 */\n#define LTDC_CDSR_HDES               LTDC_CDSR_HDES_Msk                        /*!< Horizontal Data Enable Status     */\n#define LTDC_CDSR_VSYNCS_Pos         (2U)\n#define LTDC_CDSR_VSYNCS_Msk         (0x1UL << LTDC_CDSR_VSYNCS_Pos)           /*!< 0x00000004 */\n#define LTDC_CDSR_VSYNCS             LTDC_CDSR_VSYNCS_Msk                      /*!< Vertical Synchronization Status   */\n#define LTDC_CDSR_HSYNCS_Pos         (3U)\n#define LTDC_CDSR_HSYNCS_Msk         (0x1UL << LTDC_CDSR_HSYNCS_Pos)           /*!< 0x00000008 */\n#define LTDC_CDSR_HSYNCS             LTDC_CDSR_HSYNCS_Msk                      /*!< Horizontal Synchronization Status */\n\n/********************  Bit definition for LTDC_LxCR register  *****************/\n\n#define LTDC_LxCR_LEN_Pos            (0U)\n#define LTDC_LxCR_LEN_Msk            (0x1UL << LTDC_LxCR_LEN_Pos)              /*!< 0x00000001 */\n#define LTDC_LxCR_LEN                LTDC_LxCR_LEN_Msk                         /*!< Layer Enable              */\n#define LTDC_LxCR_COLKEN_Pos         (1U)\n#define LTDC_LxCR_COLKEN_Msk         (0x1UL << LTDC_LxCR_COLKEN_Pos)           /*!< 0x00000002 */\n#define LTDC_LxCR_COLKEN             LTDC_LxCR_COLKEN_Msk                      /*!< Color Keying Enable       */\n#define LTDC_LxCR_CLUTEN_Pos         (4U)\n#define LTDC_LxCR_CLUTEN_Msk         (0x1UL << LTDC_LxCR_CLUTEN_Pos)           /*!< 0x00000010 */\n#define LTDC_LxCR_CLUTEN             LTDC_LxCR_CLUTEN_Msk                      /*!< Color Lockup Table Enable */\n\n/********************  Bit definition for LTDC_LxWHPCR register  **************/\n\n#define LTDC_LxWHPCR_WHSTPOS_Pos     (0U)\n#define LTDC_LxWHPCR_WHSTPOS_Msk     (0xFFFUL << LTDC_LxWHPCR_WHSTPOS_Pos)     /*!< 0x00000FFF */\n#define LTDC_LxWHPCR_WHSTPOS         LTDC_LxWHPCR_WHSTPOS_Msk                  /*!< Window Horizontal Start Position */\n#define LTDC_LxWHPCR_WHSPPOS_Pos     (16U)\n#define LTDC_LxWHPCR_WHSPPOS_Msk     (0xFFFFUL << LTDC_LxWHPCR_WHSPPOS_Pos)    /*!< 0xFFFF0000 */\n#define LTDC_LxWHPCR_WHSPPOS         LTDC_LxWHPCR_WHSPPOS_Msk                  /*!< Window Horizontal Stop Position  */\n\n/********************  Bit definition for LTDC_LxWVPCR register  **************/\n\n#define LTDC_LxWVPCR_WVSTPOS_Pos     (0U)\n#define LTDC_LxWVPCR_WVSTPOS_Msk     (0xFFFUL << LTDC_LxWVPCR_WVSTPOS_Pos)     /*!< 0x00000FFF */\n#define LTDC_LxWVPCR_WVSTPOS         LTDC_LxWVPCR_WVSTPOS_Msk                  /*!< Window Vertical Start Position */\n#define LTDC_LxWVPCR_WVSPPOS_Pos     (16U)\n#define LTDC_LxWVPCR_WVSPPOS_Msk     (0xFFFFUL << LTDC_LxWVPCR_WVSPPOS_Pos)    /*!< 0xFFFF0000 */\n#define LTDC_LxWVPCR_WVSPPOS         LTDC_LxWVPCR_WVSPPOS_Msk                  /*!< Window Vertical Stop Position  */\n\n/********************  Bit definition for LTDC_LxCKCR register  ***************/\n\n#define LTDC_LxCKCR_CKBLUE_Pos       (0U)\n#define LTDC_LxCKCR_CKBLUE_Msk       (0xFFUL << LTDC_LxCKCR_CKBLUE_Pos)        /*!< 0x000000FF */\n#define LTDC_LxCKCR_CKBLUE           LTDC_LxCKCR_CKBLUE_Msk                    /*!< Color Key Blue value  */\n#define LTDC_LxCKCR_CKGREEN_Pos      (8U)\n#define LTDC_LxCKCR_CKGREEN_Msk      (0xFFUL << LTDC_LxCKCR_CKGREEN_Pos)       /*!< 0x0000FF00 */\n#define LTDC_LxCKCR_CKGREEN          LTDC_LxCKCR_CKGREEN_Msk                   /*!< Color Key Green value */\n#define LTDC_LxCKCR_CKRED_Pos        (16U)\n#define LTDC_LxCKCR_CKRED_Msk        (0xFFUL << LTDC_LxCKCR_CKRED_Pos)         /*!< 0x00FF0000 */\n#define LTDC_LxCKCR_CKRED            LTDC_LxCKCR_CKRED_Msk                     /*!< Color Key Red value   */\n\n/********************  Bit definition for LTDC_LxPFCR register  ***************/\n\n#define LTDC_LxPFCR_PF_Pos           (0U)\n#define LTDC_LxPFCR_PF_Msk           (0x7UL << LTDC_LxPFCR_PF_Pos)             /*!< 0x00000007 */\n#define LTDC_LxPFCR_PF               LTDC_LxPFCR_PF_Msk                        /*!< Pixel Format */\n\n/********************  Bit definition for LTDC_LxCACR register  ***************/\n\n#define LTDC_LxCACR_CONSTA_Pos       (0U)\n#define LTDC_LxCACR_CONSTA_Msk       (0xFFUL << LTDC_LxCACR_CONSTA_Pos)        /*!< 0x000000FF */\n#define LTDC_LxCACR_CONSTA           LTDC_LxCACR_CONSTA_Msk                    /*!< Constant Alpha */\n\n/********************  Bit definition for LTDC_LxDCCR register  ***************/\n\n#define LTDC_LxDCCR_DCBLUE_Pos       (0U)\n#define LTDC_LxDCCR_DCBLUE_Msk       (0xFFUL << LTDC_LxDCCR_DCBLUE_Pos)        /*!< 0x000000FF */\n#define LTDC_LxDCCR_DCBLUE           LTDC_LxDCCR_DCBLUE_Msk                    /*!< Default Color Blue  */\n#define LTDC_LxDCCR_DCGREEN_Pos      (8U)\n#define LTDC_LxDCCR_DCGREEN_Msk      (0xFFUL << LTDC_LxDCCR_DCGREEN_Pos)       /*!< 0x0000FF00 */\n#define LTDC_LxDCCR_DCGREEN          LTDC_LxDCCR_DCGREEN_Msk                   /*!< Default Color Green */\n#define LTDC_LxDCCR_DCRED_Pos        (16U)\n#define LTDC_LxDCCR_DCRED_Msk        (0xFFUL << LTDC_LxDCCR_DCRED_Pos)         /*!< 0x00FF0000 */\n#define LTDC_LxDCCR_DCRED            LTDC_LxDCCR_DCRED_Msk                     /*!< Default Color Red   */\n#define LTDC_LxDCCR_DCALPHA_Pos      (24U)\n#define LTDC_LxDCCR_DCALPHA_Msk      (0xFFUL << LTDC_LxDCCR_DCALPHA_Pos)       /*!< 0xFF000000 */\n#define LTDC_LxDCCR_DCALPHA          LTDC_LxDCCR_DCALPHA_Msk                   /*!< Default Color Alpha */\n\n/********************  Bit definition for LTDC_LxBFCR register  ***************/\n\n#define LTDC_LxBFCR_BF2_Pos          (0U)\n#define LTDC_LxBFCR_BF2_Msk          (0x7UL << LTDC_LxBFCR_BF2_Pos)            /*!< 0x00000007 */\n#define LTDC_LxBFCR_BF2              LTDC_LxBFCR_BF2_Msk                       /*!< Blending Factor 2 */\n#define LTDC_LxBFCR_BF1_Pos          (8U)\n#define LTDC_LxBFCR_BF1_Msk          (0x7UL << LTDC_LxBFCR_BF1_Pos)            /*!< 0x00000700 */\n#define LTDC_LxBFCR_BF1              LTDC_LxBFCR_BF1_Msk                       /*!< Blending Factor 1 */\n\n/********************  Bit definition for LTDC_LxCFBAR register  **************/\n\n#define LTDC_LxCFBAR_CFBADD_Pos      (0U)\n#define LTDC_LxCFBAR_CFBADD_Msk      (0xFFFFFFFFUL << LTDC_LxCFBAR_CFBADD_Pos) /*!< 0xFFFFFFFF */\n#define LTDC_LxCFBAR_CFBADD          LTDC_LxCFBAR_CFBADD_Msk                   /*!< Color Frame Buffer Start Address */\n\n/********************  Bit definition for LTDC_LxCFBLR register  **************/\n\n#define LTDC_LxCFBLR_CFBLL_Pos       (0U)\n#define LTDC_LxCFBLR_CFBLL_Msk       (0x1FFFUL << LTDC_LxCFBLR_CFBLL_Pos)      /*!< 0x00001FFF */\n#define LTDC_LxCFBLR_CFBLL           LTDC_LxCFBLR_CFBLL_Msk                    /*!< Color Frame Buffer Line Length    */\n#define LTDC_LxCFBLR_CFBP_Pos        (16U)\n#define LTDC_LxCFBLR_CFBP_Msk        (0x1FFFUL << LTDC_LxCFBLR_CFBP_Pos)       /*!< 0x1FFF0000 */\n#define LTDC_LxCFBLR_CFBP            LTDC_LxCFBLR_CFBP_Msk                     /*!< Color Frame Buffer Pitch in bytes */\n\n/********************  Bit definition for LTDC_LxCFBLNR register  *************/\n\n#define LTDC_LxCFBLNR_CFBLNBR_Pos    (0U)\n#define LTDC_LxCFBLNR_CFBLNBR_Msk    (0x7FFUL << LTDC_LxCFBLNR_CFBLNBR_Pos)    /*!< 0x000007FF */\n#define LTDC_LxCFBLNR_CFBLNBR        LTDC_LxCFBLNR_CFBLNBR_Msk                 /*!< Frame Buffer Line Number */\n\n/********************  Bit definition for LTDC_LxCLUTWR register  *************/\n\n#define LTDC_LxCLUTWR_BLUE_Pos       (0U)\n#define LTDC_LxCLUTWR_BLUE_Msk       (0xFFUL << LTDC_LxCLUTWR_BLUE_Pos)        /*!< 0x000000FF */\n#define LTDC_LxCLUTWR_BLUE           LTDC_LxCLUTWR_BLUE_Msk                    /*!< Blue value   */\n#define LTDC_LxCLUTWR_GREEN_Pos      (8U)\n#define LTDC_LxCLUTWR_GREEN_Msk      (0xFFUL << LTDC_LxCLUTWR_GREEN_Pos)       /*!< 0x0000FF00 */\n#define LTDC_LxCLUTWR_GREEN          LTDC_LxCLUTWR_GREEN_Msk                   /*!< Green value  */\n#define LTDC_LxCLUTWR_RED_Pos        (16U)\n#define LTDC_LxCLUTWR_RED_Msk        (0xFFUL << LTDC_LxCLUTWR_RED_Pos)         /*!< 0x00FF0000 */\n#define LTDC_LxCLUTWR_RED            LTDC_LxCLUTWR_RED_Msk                     /*!< Red value    */\n#define LTDC_LxCLUTWR_CLUTADD_Pos    (24U)\n#define LTDC_LxCLUTWR_CLUTADD_Msk    (0xFFUL << LTDC_LxCLUTWR_CLUTADD_Pos)     /*!< 0xFF000000 */\n#define LTDC_LxCLUTWR_CLUTADD        LTDC_LxCLUTWR_CLUTADD_Msk                 /*!< CLUT address */\n\n/******************************************************************************/\n/*                                                                            */\n/*                                     MDMA                                   */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bit definition for MDMA_GISR0 register  ****************/\n#define MDMA_GISR0_GIF0_Pos       (0U)\n#define MDMA_GISR0_GIF0_Msk       (0x1UL << MDMA_GISR0_GIF0_Pos)               /*!< 0x00000001 */\n#define MDMA_GISR0_GIF0           MDMA_GISR0_GIF0_Msk                          /*!< Channel 0 global interrupt flag */\n#define MDMA_GISR0_GIF1_Pos       (1U)\n#define MDMA_GISR0_GIF1_Msk       (0x1UL << MDMA_GISR0_GIF1_Pos)               /*!< 0x00000002 */\n#define MDMA_GISR0_GIF1           MDMA_GISR0_GIF1_Msk                          /*!< Channel 1 global interrupt flag */\n#define MDMA_GISR0_GIF2_Pos       (2U)\n#define MDMA_GISR0_GIF2_Msk       (0x1UL << MDMA_GISR0_GIF2_Pos)               /*!< 0x00000004 */\n#define MDMA_GISR0_GIF2           MDMA_GISR0_GIF2_Msk                          /*!< Channel 2 global interrupt flag */\n#define MDMA_GISR0_GIF3_Pos       (3U)\n#define MDMA_GISR0_GIF3_Msk       (0x1UL << MDMA_GISR0_GIF3_Pos)               /*!< 0x00000008 */\n#define MDMA_GISR0_GIF3           MDMA_GISR0_GIF3_Msk                          /*!< Channel 3 global interrupt flag */\n#define MDMA_GISR0_GIF4_Pos       (4U)\n#define MDMA_GISR0_GIF4_Msk       (0x1UL << MDMA_GISR0_GIF4_Pos)               /*!< 0x00000010 */\n#define MDMA_GISR0_GIF4           MDMA_GISR0_GIF4_Msk                          /*!< Channel 4 global interrupt flag */\n#define MDMA_GISR0_GIF5_Pos       (5U)\n#define MDMA_GISR0_GIF5_Msk       (0x1UL << MDMA_GISR0_GIF5_Pos)               /*!< 0x00000020 */\n#define MDMA_GISR0_GIF5           MDMA_GISR0_GIF5_Msk                          /*!< Channel 5 global interrupt flag */\n#define MDMA_GISR0_GIF6_Pos       (6U)\n#define MDMA_GISR0_GIF6_Msk       (0x1UL << MDMA_GISR0_GIF6_Pos)               /*!< 0x00000040 */\n#define MDMA_GISR0_GIF6           MDMA_GISR0_GIF6_Msk                          /*!< Channel 6 global interrupt flag */\n#define MDMA_GISR0_GIF7_Pos       (7U)\n#define MDMA_GISR0_GIF7_Msk       (0x1UL << MDMA_GISR0_GIF7_Pos)               /*!< 0x00000080 */\n#define MDMA_GISR0_GIF7           MDMA_GISR0_GIF7_Msk                          /*!< Channel 7 global interrupt flag */\n#define MDMA_GISR0_GIF8_Pos       (8U)\n#define MDMA_GISR0_GIF8_Msk       (0x1UL << MDMA_GISR0_GIF8_Pos)               /*!< 0x00000100 */\n#define MDMA_GISR0_GIF8           MDMA_GISR0_GIF8_Msk                          /*!< Channel 8 global interrupt flag */\n#define MDMA_GISR0_GIF9_Pos       (9U)\n#define MDMA_GISR0_GIF9_Msk       (0x1UL << MDMA_GISR0_GIF9_Pos)               /*!< 0x00000200 */\n#define MDMA_GISR0_GIF9           MDMA_GISR0_GIF9_Msk                          /*!< Channel 9 global interrupt flag */\n#define MDMA_GISR0_GIF10_Pos      (10U)\n#define MDMA_GISR0_GIF10_Msk      (0x1UL << MDMA_GISR0_GIF10_Pos)              /*!< 0x00000400 */\n#define MDMA_GISR0_GIF10          MDMA_GISR0_GIF10_Msk                         /*!< Channel 10 global interrupt flag */\n#define MDMA_GISR0_GIF11_Pos      (11U)\n#define MDMA_GISR0_GIF11_Msk      (0x1UL << MDMA_GISR0_GIF11_Pos)              /*!< 0x00000800 */\n#define MDMA_GISR0_GIF11          MDMA_GISR0_GIF11_Msk                         /*!< Channel 11 global interrupt flag */\n#define MDMA_GISR0_GIF12_Pos      (12U)\n#define MDMA_GISR0_GIF12_Msk      (0x1UL << MDMA_GISR0_GIF12_Pos)              /*!< 0x00001000 */\n#define MDMA_GISR0_GIF12          MDMA_GISR0_GIF12_Msk                         /*!< Channel 12 global interrupt flag */\n#define MDMA_GISR0_GIF13_Pos      (13U)\n#define MDMA_GISR0_GIF13_Msk      (0x1UL << MDMA_GISR0_GIF13_Pos)              /*!< 0x00002000 */\n#define MDMA_GISR0_GIF13          MDMA_GISR0_GIF13_Msk                         /*!< Channel 13 global interrupt flag */\n#define MDMA_GISR0_GIF14_Pos      (14U)\n#define MDMA_GISR0_GIF14_Msk      (0x1UL << MDMA_GISR0_GIF14_Pos)              /*!< 0x00004000 */\n#define MDMA_GISR0_GIF14          MDMA_GISR0_GIF14_Msk                         /*!< Channel 14 global interrupt flag */\n#define MDMA_GISR0_GIF15_Pos      (15U)\n#define MDMA_GISR0_GIF15_Msk      (0x1UL << MDMA_GISR0_GIF15_Pos)              /*!< 0x00008000 */\n#define MDMA_GISR0_GIF15          MDMA_GISR0_GIF15_Msk                         /*!< Channel 15 global interrupt flag */\n\n/********************  Bit definition for MDMA_CxISR register  ****************/\n#define MDMA_CISR_TEIF_Pos        (0U)\n#define MDMA_CISR_TEIF_Msk        (0x1UL << MDMA_CISR_TEIF_Pos)                /*!< 0x00000001 */\n#define MDMA_CISR_TEIF            MDMA_CISR_TEIF_Msk                           /*!< Channel x transfer error interrupt flag */\n#define MDMA_CISR_CTCIF_Pos       (1U)\n#define MDMA_CISR_CTCIF_Msk       (0x1UL << MDMA_CISR_CTCIF_Pos)               /*!< 0x00000002 */\n#define MDMA_CISR_CTCIF           MDMA_CISR_CTCIF_Msk                          /*!< Channel x Channel Transfer Complete interrupt flag */\n#define MDMA_CISR_BRTIF_Pos       (2U)\n#define MDMA_CISR_BRTIF_Msk       (0x1UL << MDMA_CISR_BRTIF_Pos)               /*!< 0x00000004 */\n#define MDMA_CISR_BRTIF           MDMA_CISR_BRTIF_Msk                          /*!< Channel x block repeat transfer complete interrupt flag */\n#define MDMA_CISR_BTIF_Pos        (3U)\n#define MDMA_CISR_BTIF_Msk        (0x1UL << MDMA_CISR_BTIF_Pos)                /*!< 0x00000008 */\n#define MDMA_CISR_BTIF            MDMA_CISR_BTIF_Msk                           /*!< Channel x block transfer complete interrupt flag */\n#define MDMA_CISR_TCIF_Pos        (4U)\n#define MDMA_CISR_TCIF_Msk        (0x1UL << MDMA_CISR_TCIF_Pos)                /*!< 0x00000010 */\n#define MDMA_CISR_TCIF            MDMA_CISR_TCIF_Msk                           /*!< Channel x buffer transfer complete interrupt flag */\n#define MDMA_CISR_CRQA_Pos        (16U)\n#define MDMA_CISR_CRQA_Msk        (0x1UL << MDMA_CISR_CRQA_Pos)                /*!< 0x00010000 */\n#define MDMA_CISR_CRQA            MDMA_CISR_CRQA_Msk                           /*!< Channel x request Active flag */\n\n/********************  Bit definition for MDMA_CxIFCR register  ****************/\n#define MDMA_CIFCR_CTEIF_Pos      (0U)\n#define MDMA_CIFCR_CTEIF_Msk      (0x1UL << MDMA_CIFCR_CTEIF_Pos)              /*!< 0x00000001 */\n#define MDMA_CIFCR_CTEIF          MDMA_CIFCR_CTEIF_Msk                         /*!< Channel x clear transfer error interrupt flag */\n#define MDMA_CIFCR_CCTCIF_Pos     (1U)\n#define MDMA_CIFCR_CCTCIF_Msk     (0x1UL << MDMA_CIFCR_CCTCIF_Pos)             /*!< 0x00000002 */\n#define MDMA_CIFCR_CCTCIF         MDMA_CIFCR_CCTCIF_Msk                        /*!< Clear Channel transfer complete interrupt flag for channel x */\n#define MDMA_CIFCR_CBRTIF_Pos     (2U)\n#define MDMA_CIFCR_CBRTIF_Msk     (0x1UL << MDMA_CIFCR_CBRTIF_Pos)             /*!< 0x00000004 */\n#define MDMA_CIFCR_CBRTIF         MDMA_CIFCR_CBRTIF_Msk                        /*!< Channel x clear block repeat transfer complete interrupt flag */\n#define MDMA_CIFCR_CBTIF_Pos      (3U)\n#define MDMA_CIFCR_CBTIF_Msk      (0x1UL << MDMA_CIFCR_CBTIF_Pos)              /*!< 0x00000008 */\n#define MDMA_CIFCR_CBTIF          MDMA_CIFCR_CBTIF_Msk                         /*!< Channel x Clear block transfer complete interrupt flag */\n#define MDMA_CIFCR_CLTCIF_Pos     (4U)\n#define MDMA_CIFCR_CLTCIF_Msk     (0x1UL << MDMA_CIFCR_CLTCIF_Pos)             /*!< 0x00000010 */\n#define MDMA_CIFCR_CLTCIF         MDMA_CIFCR_CLTCIF_Msk                        /*!< CLear Transfer buffer Complete Interrupt Flag for channel */\n\n/********************  Bit definition for MDMA_CxESR register  ****************/\n#define MDMA_CESR_TEA_Pos         (0U)\n#define MDMA_CESR_TEA_Msk         (0x7FUL << MDMA_CESR_TEA_Pos)                /*!< 0x0000007F */\n#define MDMA_CESR_TEA             MDMA_CESR_TEA_Msk                            /*!< Transfer Error Address */\n#define MDMA_CESR_TED_Pos         (7U)\n#define MDMA_CESR_TED_Msk         (0x1UL << MDMA_CESR_TED_Pos)                 /*!< 0x00000080 */\n#define MDMA_CESR_TED             MDMA_CESR_TED_Msk                            /*!< Transfer Error Direction */\n#define MDMA_CESR_TELD_Pos        (8U)\n#define MDMA_CESR_TELD_Msk        (0x1UL << MDMA_CESR_TELD_Pos)                /*!< 0x00000100 */\n#define MDMA_CESR_TELD            MDMA_CESR_TELD_Msk                           /*!< Transfer Error Link Data */\n#define MDMA_CESR_TEMD_Pos        (9U)\n#define MDMA_CESR_TEMD_Msk        (0x1UL << MDMA_CESR_TEMD_Pos)                /*!< 0x00000200 */\n#define MDMA_CESR_TEMD            MDMA_CESR_TEMD_Msk                           /*!< Transfer Error Mask Data */\n#define MDMA_CESR_ASE_Pos         (10U)\n#define MDMA_CESR_ASE_Msk         (0x1UL << MDMA_CESR_ASE_Pos)                 /*!< 0x00000400 */\n#define MDMA_CESR_ASE             MDMA_CESR_ASE_Msk                            /*!< Address/Size Error       */\n#define MDMA_CESR_BSE_Pos         (11U)\n#define MDMA_CESR_BSE_Msk         (0x1UL << MDMA_CESR_BSE_Pos)                 /*!< 0x00000800 */\n#define MDMA_CESR_BSE             MDMA_CESR_BSE_Msk                            /*!< Block Size Error         */\n\n/********************  Bit definition for MDMA_CxCR register  ****************/\n#define MDMA_CCR_EN_Pos           (0U)\n#define MDMA_CCR_EN_Msk           (0x1UL << MDMA_CCR_EN_Pos)                   /*!< 0x00000001 */\n#define MDMA_CCR_EN               MDMA_CCR_EN_Msk                              /*!< Channel enable / flag channel ready when read low */\n#define MDMA_CCR_TEIE_Pos         (1U)\n#define MDMA_CCR_TEIE_Msk         (0x1UL << MDMA_CCR_TEIE_Pos)                 /*!< 0x00000002 */\n#define MDMA_CCR_TEIE             MDMA_CCR_TEIE_Msk                            /*!< Transfer error interrupt enable */\n#define MDMA_CCR_CTCIE_Pos        (2U)\n#define MDMA_CCR_CTCIE_Msk        (0x1UL << MDMA_CCR_CTCIE_Pos)                /*!< 0x00000004 */\n#define MDMA_CCR_CTCIE            MDMA_CCR_CTCIE_Msk                           /*!< Channel Transfer Complete interrupt enable */\n#define MDMA_CCR_BRTIE_Pos        (3U)\n#define MDMA_CCR_BRTIE_Msk        (0x1UL << MDMA_CCR_BRTIE_Pos)                /*!< 0x00000008 */\n#define MDMA_CCR_BRTIE            MDMA_CCR_BRTIE_Msk                           /*!< Block Repeat transfer interrupt enable */\n#define MDMA_CCR_BTIE_Pos         (4U)\n#define MDMA_CCR_BTIE_Msk         (0x1UL << MDMA_CCR_BTIE_Pos)                 /*!< 0x00000010 */\n#define MDMA_CCR_BTIE             MDMA_CCR_BTIE_Msk                            /*!< Block Transfer interrupt enable */\n#define MDMA_CCR_TCIE_Pos         (5U)\n#define MDMA_CCR_TCIE_Msk         (0x1UL << MDMA_CCR_TCIE_Pos)                 /*!< 0x00000020 */\n#define MDMA_CCR_TCIE             MDMA_CCR_TCIE_Msk                            /*!< buffer Transfer Complete interrupt enable */\n#define MDMA_CCR_PL_Pos           (6U)\n#define MDMA_CCR_PL_Msk           (0x3UL << MDMA_CCR_PL_Pos)                   /*!< 0x000000C0 */\n#define MDMA_CCR_PL               MDMA_CCR_PL_Msk                              /*!< Priority level */\n#define MDMA_CCR_PL_0             (0x1UL << MDMA_CCR_PL_Pos)                    /*!< 0x00000040 */\n#define MDMA_CCR_PL_1             (0x2UL << MDMA_CCR_PL_Pos)                    /*!< 0x00000080 */\n#define MDMA_CCR_BEX_Pos          (12U)\n#define MDMA_CCR_BEX_Msk          (0x1UL << MDMA_CCR_BEX_Pos)                  /*!< 0x00001000 */\n#define MDMA_CCR_BEX              MDMA_CCR_BEX_Msk                             /*!< Byte Endianness eXchange */\n#define MDMA_CCR_HEX_Pos          (13U)\n#define MDMA_CCR_HEX_Msk          (0x1UL << MDMA_CCR_HEX_Pos)                  /*!< 0x00002000 */\n#define MDMA_CCR_HEX              MDMA_CCR_HEX_Msk                             /*!< Half word Endianness eXchange */\n#define MDMA_CCR_WEX_Pos          (14U)\n#define MDMA_CCR_WEX_Msk          (0x1UL << MDMA_CCR_WEX_Pos)                  /*!< 0x00004000 */\n#define MDMA_CCR_WEX              MDMA_CCR_WEX_Msk                             /*!< Word Endianness eXchange */\n#define MDMA_CCR_SWRQ_Pos         (16U)\n#define MDMA_CCR_SWRQ_Msk         (0x1UL << MDMA_CCR_SWRQ_Pos)                 /*!< 0x00010000 */\n#define MDMA_CCR_SWRQ             MDMA_CCR_SWRQ_Msk                            /*!< SW ReQuest */\n\n/********************  Bit definition for MDMA_CxTCR register  ****************/\n#define MDMA_CTCR_SINC_Pos        (0U)\n#define MDMA_CTCR_SINC_Msk        (0x3UL << MDMA_CTCR_SINC_Pos)                /*!< 0x00000003 */\n#define MDMA_CTCR_SINC            MDMA_CTCR_SINC_Msk                           /*!< Source increment mode */\n#define MDMA_CTCR_SINC_0          (0x1UL << MDMA_CTCR_SINC_Pos)                 /*!< 0x00000001 */\n#define MDMA_CTCR_SINC_1          (0x2UL << MDMA_CTCR_SINC_Pos)                 /*!< 0x00000002 */\n#define MDMA_CTCR_DINC_Pos        (2U)\n#define MDMA_CTCR_DINC_Msk        (0x3UL << MDMA_CTCR_DINC_Pos)                /*!< 0x0000000C */\n#define MDMA_CTCR_DINC            MDMA_CTCR_DINC_Msk                           /*!< Source increment mode */\n#define MDMA_CTCR_DINC_0          (0x1UL << MDMA_CTCR_DINC_Pos)                 /*!< 0x00000004 */\n#define MDMA_CTCR_DINC_1          (0x2UL << MDMA_CTCR_DINC_Pos)                 /*!< 0x00000008 */\n#define MDMA_CTCR_SSIZE_Pos       (4U)\n#define MDMA_CTCR_SSIZE_Msk       (0x3UL << MDMA_CTCR_SSIZE_Pos)               /*!< 0x00000030 */\n#define MDMA_CTCR_SSIZE           MDMA_CTCR_SSIZE_Msk                          /*!< Source data size */\n#define MDMA_CTCR_SSIZE_0         (0x1UL << MDMA_CTCR_SSIZE_Pos)                /*!< 0x00000010 */\n#define MDMA_CTCR_SSIZE_1         (0x2UL << MDMA_CTCR_SSIZE_Pos)                /*!< 0x00000020 */\n#define MDMA_CTCR_DSIZE_Pos       (6U)\n#define MDMA_CTCR_DSIZE_Msk       (0x3UL << MDMA_CTCR_DSIZE_Pos)               /*!< 0x000000C0 */\n#define MDMA_CTCR_DSIZE           MDMA_CTCR_DSIZE_Msk                          /*!< Destination data size */\n#define MDMA_CTCR_DSIZE_0         (0x1UL << MDMA_CTCR_DSIZE_Pos)                /*!< 0x00000040 */\n#define MDMA_CTCR_DSIZE_1         (0x2UL << MDMA_CTCR_DSIZE_Pos)                /*!< 0x00000080 */\n#define MDMA_CTCR_SINCOS_Pos      (8U)\n#define MDMA_CTCR_SINCOS_Msk      (0x3UL << MDMA_CTCR_SINCOS_Pos)              /*!< 0x00000300 */\n#define MDMA_CTCR_SINCOS          MDMA_CTCR_SINCOS_Msk                         /*!< Source increment offset size */\n#define MDMA_CTCR_SINCOS_0        (0x1UL << MDMA_CTCR_SINCOS_Pos)               /*!< 0x00000100 */\n#define MDMA_CTCR_SINCOS_1        (0x2UL << MDMA_CTCR_SINCOS_Pos)               /*!< 0x00000200 */\n#define MDMA_CTCR_DINCOS_Pos      (10U)\n#define MDMA_CTCR_DINCOS_Msk      (0x3UL << MDMA_CTCR_DINCOS_Pos)              /*!< 0x00000C00 */\n#define MDMA_CTCR_DINCOS          MDMA_CTCR_DINCOS_Msk                         /*!< Destination increment offset size */\n#define MDMA_CTCR_DINCOS_0        (0x1UL << MDMA_CTCR_DINCOS_Pos)               /*!< 0x00000400 */\n#define MDMA_CTCR_DINCOS_1        (0x2UL << MDMA_CTCR_DINCOS_Pos)               /*!< 0x00000800 */\n#define MDMA_CTCR_SBURST_Pos      (12U)\n#define MDMA_CTCR_SBURST_Msk      (0x7UL << MDMA_CTCR_SBURST_Pos)              /*!< 0x00007000 */\n#define MDMA_CTCR_SBURST          MDMA_CTCR_SBURST_Msk                         /*!< Source burst transfer configuration */\n#define MDMA_CTCR_SBURST_0        (0x1UL << MDMA_CTCR_SBURST_Pos)               /*!< 0x00001000 */\n#define MDMA_CTCR_SBURST_1        (0x2UL << MDMA_CTCR_SBURST_Pos)               /*!< 0x00002000 */\n#define MDMA_CTCR_SBURST_2        (0x4UL << MDMA_CTCR_SBURST_Pos)               /*!< 0x00004000 */\n#define MDMA_CTCR_DBURST_Pos      (15U)\n#define MDMA_CTCR_DBURST_Msk      (0x7UL << MDMA_CTCR_DBURST_Pos)              /*!< 0x00038000 */\n#define MDMA_CTCR_DBURST          MDMA_CTCR_DBURST_Msk                         /*!< Destination burst transfer configuration */\n#define MDMA_CTCR_DBURST_0        (0x1UL << MDMA_CTCR_DBURST_Pos)               /*!< 0x00008000 */\n#define MDMA_CTCR_DBURST_1        (0x2UL << MDMA_CTCR_DBURST_Pos)               /*!< 0x00010000 */\n#define MDMA_CTCR_DBURST_2        (0x4UL << MDMA_CTCR_DBURST_Pos)               /*!< 0x00020000 */\n#define MDMA_CTCR_TLEN_Pos        (18U)\n#define MDMA_CTCR_TLEN_Msk        (0x7FUL << MDMA_CTCR_TLEN_Pos)               /*!< 0x01FC0000 */\n#define MDMA_CTCR_TLEN            MDMA_CTCR_TLEN_Msk                           /*!< buffer Transfer Length (number of bytes - 1) */\n#define MDMA_CTCR_PKE_Pos         (25U)\n#define MDMA_CTCR_PKE_Msk         (0x1UL << MDMA_CTCR_PKE_Pos)                 /*!< 0x02000000 */\n#define MDMA_CTCR_PKE             MDMA_CTCR_PKE_Msk                            /*!< PacK Enable */\n#define MDMA_CTCR_PAM_Pos         (26U)\n#define MDMA_CTCR_PAM_Msk         (0x3UL << MDMA_CTCR_PAM_Pos)                 /*!< 0x0C000000 */\n#define MDMA_CTCR_PAM             MDMA_CTCR_PAM_Msk                            /*!< Padding/Alignment Mode */\n#define MDMA_CTCR_PAM_0           (0x1UL << MDMA_CTCR_PAM_Pos)                  /*!< 0x4000000 */\n#define MDMA_CTCR_PAM_1           (0x2UL << MDMA_CTCR_PAM_Pos)                  /*!< 0x8000000 */\n#define MDMA_CTCR_TRGM_Pos        (28U)\n#define MDMA_CTCR_TRGM_Msk        (0x3UL << MDMA_CTCR_TRGM_Pos)                /*!< 0x30000000 */\n#define MDMA_CTCR_TRGM            MDMA_CTCR_TRGM_Msk                           /*!< Trigger Mode */\n#define MDMA_CTCR_TRGM_0          (0x1UL << MDMA_CTCR_TRGM_Pos)                 /*!< 0x10000000 */\n#define MDMA_CTCR_TRGM_1          (0x2UL << MDMA_CTCR_TRGM_Pos)                 /*!< 0x20000000 */\n#define MDMA_CTCR_SWRM_Pos        (30U)\n#define MDMA_CTCR_SWRM_Msk        (0x1UL << MDMA_CTCR_SWRM_Pos)                /*!< 0x40000000 */\n#define MDMA_CTCR_SWRM            MDMA_CTCR_SWRM_Msk                           /*!< SW Request Mode */\n#define MDMA_CTCR_BWM_Pos         (31U)\n#define MDMA_CTCR_BWM_Msk         (0x1UL << MDMA_CTCR_BWM_Pos)                 /*!< 0x80000000 */\n#define MDMA_CTCR_BWM             MDMA_CTCR_BWM_Msk                            /*!< Bufferable Write Mode */\n\n/********************  Bit definition for MDMA_CxBNDTR register  ****************/\n#define MDMA_CBNDTR_BNDT_Pos      (0U)\n#define MDMA_CBNDTR_BNDT_Msk      (0x1FFFFUL << MDMA_CBNDTR_BNDT_Pos)          /*!< 0x0001FFFF */\n#define MDMA_CBNDTR_BNDT          MDMA_CBNDTR_BNDT_Msk                         /*!< Block Number of data bytes to transfer */\n#define MDMA_CBNDTR_BRSUM_Pos     (18U)\n#define MDMA_CBNDTR_BRSUM_Msk     (0x1UL << MDMA_CBNDTR_BRSUM_Pos)             /*!< 0x00040000 */\n#define MDMA_CBNDTR_BRSUM         MDMA_CBNDTR_BRSUM_Msk                        /*!< Block Repeat Source address Update Mode */\n#define MDMA_CBNDTR_BRDUM_Pos     (19U)\n#define MDMA_CBNDTR_BRDUM_Msk     (0x1UL << MDMA_CBNDTR_BRDUM_Pos)             /*!< 0x00080000 */\n#define MDMA_CBNDTR_BRDUM         MDMA_CBNDTR_BRDUM_Msk                        /*!< Block Repeat Destination address Update Mode */\n#define MDMA_CBNDTR_BRC_Pos       (20U)\n#define MDMA_CBNDTR_BRC_Msk       (0xFFFUL << MDMA_CBNDTR_BRC_Pos)             /*!< 0xFFF00000 */\n#define MDMA_CBNDTR_BRC           MDMA_CBNDTR_BRC_Msk                          /*!< Block Repeat Count */\n\n/********************  Bit definition for MDMA_CxSAR register  ****************/\n#define MDMA_CSAR_SAR_Pos         (0U)\n#define MDMA_CSAR_SAR_Msk         (0xFFFFFFFFUL << MDMA_CSAR_SAR_Pos)          /*!< 0xFFFFFFFF */\n#define MDMA_CSAR_SAR             MDMA_CSAR_SAR_Msk                            /*!< Source address */\n\n/********************  Bit definition for MDMA_CxDAR register  ****************/\n#define MDMA_CDAR_DAR_Pos         (0U)\n#define MDMA_CDAR_DAR_Msk         (0xFFFFFFFFUL << MDMA_CDAR_DAR_Pos)          /*!< 0xFFFFFFFF */\n#define MDMA_CDAR_DAR             MDMA_CDAR_DAR_Msk                            /*!< Destination address */\n\n/********************  Bit definition for MDMA_CxBRUR  ************************/\n#define MDMA_CBRUR_SUV_Pos        (0U)\n#define MDMA_CBRUR_SUV_Msk        (0xFFFFUL << MDMA_CBRUR_SUV_Pos)             /*!< 0x0000FFFF */\n#define MDMA_CBRUR_SUV            MDMA_CBRUR_SUV_Msk                           /*!< Source address Update Value */\n#define MDMA_CBRUR_DUV_Pos        (16U)\n#define MDMA_CBRUR_DUV_Msk        (0xFFFFUL << MDMA_CBRUR_DUV_Pos)             /*!< 0xFFFF0000 */\n#define MDMA_CBRUR_DUV            MDMA_CBRUR_DUV_Msk                           /*!< Destination address Update Value */\n\n/********************  Bit definition for MDMA_CxLAR  *************************/\n#define MDMA_CLAR_LAR_Pos         (0U)\n#define MDMA_CLAR_LAR_Msk         (0xFFFFFFFFUL << MDMA_CLAR_LAR_Pos)          /*!< 0xFFFFFFFF */\n#define MDMA_CLAR_LAR             MDMA_CLAR_LAR_Msk                            /*!< Link Address Register */\n\n/********************  Bit definition for MDMA_CxTBR)  ************************/\n#define MDMA_CTBR_TSEL_Pos        (0U)\n#define MDMA_CTBR_TSEL_Msk        (0xFFUL << MDMA_CTBR_TSEL_Pos)               /*!< 0x000000FF */\n#define MDMA_CTBR_TSEL            MDMA_CTBR_TSEL_Msk                           /*!< Trigger SELection */\n#define MDMA_CTBR_SBUS_Pos        (16U)\n#define MDMA_CTBR_SBUS_Msk        (0x1UL << MDMA_CTBR_SBUS_Pos)                /*!< 0x00010000 */\n#define MDMA_CTBR_SBUS            MDMA_CTBR_SBUS_Msk                           /*!< Source BUS select */\n#define MDMA_CTBR_DBUS_Pos        (17U)\n#define MDMA_CTBR_DBUS_Msk        (0x1UL << MDMA_CTBR_DBUS_Pos)                /*!< 0x00020000 */\n#define MDMA_CTBR_DBUS            MDMA_CTBR_DBUS_Msk                           /*!< Destination BUS select */\n\n/********************  Bit definition for MDMA_CxMAR)  ************************/\n#define MDMA_CMAR_MAR_Pos         (0U)\n#define MDMA_CMAR_MAR_Msk         (0xFFFFFFFFUL << MDMA_CMAR_MAR_Pos)          /*!< 0xFFFFFFFF */\n#define MDMA_CMAR_MAR             MDMA_CMAR_MAR_Msk                            /*!< Mask address */\n\n/********************  Bit definition for MDMA_CxMDR)  ************************/\n#define MDMA_CMDR_MDR_Pos         (0U)\n#define MDMA_CMDR_MDR_Msk         (0xFFFFFFFFUL << MDMA_CMDR_MDR_Pos)          /*!< 0xFFFFFFFF */\n#define MDMA_CMDR_MDR             MDMA_CMDR_MDR_Msk                            /*!< Mask Data */\n\n/******************************************************************************/\n/*                                                                            */\n/*                         Operational Amplifier (OPAMP)                      */\n/*                                                                            */\n/******************************************************************************/\n/*********************  Bit definition for OPAMPx_CSR register  ***************/\n#define OPAMP_CSR_OPAMPxEN_Pos           (0U)\n#define OPAMP_CSR_OPAMPxEN_Msk           (0x1UL << OPAMP_CSR_OPAMPxEN_Pos)     /*!< 0x00000001 */\n#define OPAMP_CSR_OPAMPxEN               OPAMP_CSR_OPAMPxEN_Msk                /*!< OPAMP enable */\n#define OPAMP_CSR_FORCEVP_Pos            (1U)\n#define OPAMP_CSR_FORCEVP_Msk            (0x1UL << OPAMP_CSR_FORCEVP_Pos)      /*!< 0x00000002 */\n#define OPAMP_CSR_FORCEVP                OPAMP_CSR_FORCEVP_Msk                 /*!< Force internal reference on VP */\n\n#define OPAMP_CSR_VPSEL_Pos              (2U)\n#define OPAMP_CSR_VPSEL_Msk              (0x3UL << OPAMP_CSR_VPSEL_Pos)        /*!< 0x0000000C */\n#define OPAMP_CSR_VPSEL                  OPAMP_CSR_VPSEL_Msk                   /*!< Non inverted input selection */\n#define OPAMP_CSR_VPSEL_0                (0x1UL << OPAMP_CSR_VPSEL_Pos)         /*!< 0x00000004 */\n#define OPAMP_CSR_VPSEL_1                (0x2UL << OPAMP_CSR_VPSEL_Pos)         /*!< 0x00000008 */\n\n#define OPAMP_CSR_VMSEL_Pos              (5U)\n#define OPAMP_CSR_VMSEL_Msk              (0x3UL << OPAMP_CSR_VMSEL_Pos)        /*!< 0x00000060 */\n#define OPAMP_CSR_VMSEL                  OPAMP_CSR_VMSEL_Msk                   /*!< Inverting input selection */\n#define OPAMP_CSR_VMSEL_0                (0x1UL << OPAMP_CSR_VMSEL_Pos)         /*!< 0x00000020 */\n#define OPAMP_CSR_VMSEL_1                (0x2UL << OPAMP_CSR_VMSEL_Pos)         /*!< 0x00000040 */\n\n#define OPAMP_CSR_OPAHSM_Pos             (8U)\n#define OPAMP_CSR_OPAHSM_Msk             (0x1UL << OPAMP_CSR_OPAHSM_Pos)       /*!< 0x00000100 */\n#define OPAMP_CSR_OPAHSM                 OPAMP_CSR_OPAHSM_Msk                  /*!< Operational amplifier high speed mode */\n#define OPAMP_CSR_CALON_Pos              (11U)\n#define OPAMP_CSR_CALON_Msk              (0x1UL << OPAMP_CSR_CALON_Pos)        /*!< 0x00000800 */\n#define OPAMP_CSR_CALON                  OPAMP_CSR_CALON_Msk                   /*!< Calibration mode enable */\n\n#define OPAMP_CSR_CALSEL_Pos             (12U)\n#define OPAMP_CSR_CALSEL_Msk             (0x3UL << OPAMP_CSR_CALSEL_Pos)       /*!< 0x00003000 */\n#define OPAMP_CSR_CALSEL                 OPAMP_CSR_CALSEL_Msk                  /*!< Calibration selection */\n#define OPAMP_CSR_CALSEL_0               (0x1UL << OPAMP_CSR_CALSEL_Pos)        /*!< 0x00001000 */\n#define OPAMP_CSR_CALSEL_1               (0x2UL << OPAMP_CSR_CALSEL_Pos)        /*!< 0x00002000 */\n\n#define OPAMP_CSR_PGGAIN_Pos             (14U)\n#define OPAMP_CSR_PGGAIN_Msk             (0xFUL << OPAMP_CSR_PGGAIN_Pos)       /*!< 0x0003C000 */\n#define OPAMP_CSR_PGGAIN                 OPAMP_CSR_PGGAIN_Msk                  /*!< Operational amplifier Programmable amplifier gain value */\n#define OPAMP_CSR_PGGAIN_0               (0x1UL << OPAMP_CSR_PGGAIN_Pos)        /*!< 0x00004000 */\n#define OPAMP_CSR_PGGAIN_1               (0x2UL << OPAMP_CSR_PGGAIN_Pos)        /*!< 0x00008000 */\n#define OPAMP_CSR_PGGAIN_2               (0x4UL << OPAMP_CSR_PGGAIN_Pos)        /*!< 0x00010000 */\n#define OPAMP_CSR_PGGAIN_3               (0x8UL << OPAMP_CSR_PGGAIN_Pos)        /*!< 0x00020000 */\n\n#define OPAMP_CSR_USERTRIM_Pos           (18U)\n#define OPAMP_CSR_USERTRIM_Msk           (0x1UL << OPAMP_CSR_USERTRIM_Pos)     /*!< 0x00040000 */\n#define OPAMP_CSR_USERTRIM               OPAMP_CSR_USERTRIM_Msk                /*!< User trimming enable */\n#define OPAMP_CSR_TSTREF_Pos             (29U)\n#define OPAMP_CSR_TSTREF_Msk             (0x1UL << OPAMP_CSR_TSTREF_Pos)       /*!< 0x20000000 */\n#define OPAMP_CSR_TSTREF                 OPAMP_CSR_TSTREF_Msk                  /*!< OpAmp calibration reference voltage output control */\n#define OPAMP_CSR_CALOUT_Pos             (30U)\n#define OPAMP_CSR_CALOUT_Msk             (0x1UL << OPAMP_CSR_CALOUT_Pos)       /*!< 0x40000000 */\n#define OPAMP_CSR_CALOUT                 OPAMP_CSR_CALOUT_Msk                  /*!< Operational amplifier calibration output */\n\n/*********************  Bit definition for OPAMP1_CSR register  ***************/\n#define OPAMP1_CSR_OPAEN_Pos              (0U)\n#define OPAMP1_CSR_OPAEN_Msk              (0x1UL << OPAMP1_CSR_OPAEN_Pos)      /*!< 0x00000001 */\n#define OPAMP1_CSR_OPAEN                  OPAMP1_CSR_OPAEN_Msk                 /*!< Operational amplifier1 Enable */\n#define OPAMP1_CSR_FORCEVP_Pos            (1U)\n#define OPAMP1_CSR_FORCEVP_Msk            (0x1UL << OPAMP1_CSR_FORCEVP_Pos)    /*!< 0x00000002 */\n#define OPAMP1_CSR_FORCEVP                OPAMP1_CSR_FORCEVP_Msk               /*!< Force internal reference on VP */\n\n#define OPAMP1_CSR_VPSEL_Pos              (2U)\n#define OPAMP1_CSR_VPSEL_Msk              (0x3UL << OPAMP1_CSR_VPSEL_Pos)      /*!< 0x0000000C */\n#define OPAMP1_CSR_VPSEL                  OPAMP1_CSR_VPSEL_Msk                 /*!< Non inverted input selection */\n#define OPAMP1_CSR_VPSEL_0                (0x1UL << OPAMP1_CSR_VPSEL_Pos)       /*!< 0x00000004 */\n#define OPAMP1_CSR_VPSEL_1                (0x2UL << OPAMP1_CSR_VPSEL_Pos)       /*!< 0x00000008 */\n\n#define OPAMP1_CSR_VMSEL_Pos              (5U)\n#define OPAMP1_CSR_VMSEL_Msk              (0x3UL << OPAMP1_CSR_VMSEL_Pos)      /*!< 0x00000060 */\n#define OPAMP1_CSR_VMSEL                  OPAMP1_CSR_VMSEL_Msk                 /*!< Inverting input selection */\n#define OPAMP1_CSR_VMSEL_0                (0x1UL << OPAMP1_CSR_VMSEL_Pos)       /*!< 0x00000020 */\n#define OPAMP1_CSR_VMSEL_1                (0x2UL << OPAMP1_CSR_VMSEL_Pos)       /*!< 0x00000040 */\n\n#define OPAMP1_CSR_OPAHSM_Pos             (8U)\n#define OPAMP1_CSR_OPAHSM_Msk             (0x1UL << OPAMP1_CSR_OPAHSM_Pos)     /*!< 0x00000100 */\n#define OPAMP1_CSR_OPAHSM                 OPAMP1_CSR_OPAHSM_Msk                /*!< Operational amplifier1 high speed mode */\n#define OPAMP1_CSR_CALON_Pos              (11U)\n#define OPAMP1_CSR_CALON_Msk              (0x1UL << OPAMP1_CSR_CALON_Pos)      /*!< 0x00000800 */\n#define OPAMP1_CSR_CALON                  OPAMP1_CSR_CALON_Msk                 /*!< Calibration mode enable */\n\n#define OPAMP1_CSR_CALSEL_Pos             (12U)\n#define OPAMP1_CSR_CALSEL_Msk             (0x3UL << OPAMP1_CSR_CALSEL_Pos)     /*!< 0x00003000 */\n#define OPAMP1_CSR_CALSEL                 OPAMP1_CSR_CALSEL_Msk                /*!< Calibration selection */\n#define OPAMP1_CSR_CALSEL_0               (0x1UL << OPAMP1_CSR_CALSEL_Pos)      /*!< 0x00001000 */\n#define OPAMP1_CSR_CALSEL_1               (0x2UL << OPAMP1_CSR_CALSEL_Pos)      /*!< 0x00002000 */\n\n#define OPAMP1_CSR_PGGAIN_Pos             (14U)\n#define OPAMP1_CSR_PGGAIN_Msk             (0xFUL << OPAMP1_CSR_PGGAIN_Pos)     /*!< 0x0003C000 */\n#define OPAMP1_CSR_PGGAIN                 OPAMP1_CSR_PGGAIN_Msk                /*!< Operational amplifier1 Programmable amplifier gain value */\n#define OPAMP1_CSR_PGGAIN_0               (0x1UL << OPAMP1_CSR_PGGAIN_Pos)      /*!< 0x00004000 */\n#define OPAMP1_CSR_PGGAIN_1               (0x2UL << OPAMP1_CSR_PGGAIN_Pos)      /*!< 0x00008000 */\n#define OPAMP1_CSR_PGGAIN_2               (0x4UL << OPAMP1_CSR_PGGAIN_Pos)      /*!< 0x00010000 */\n#define OPAMP1_CSR_PGGAIN_3               (0x8UL << OPAMP1_CSR_PGGAIN_Pos)      /*!< 0x00020000 */\n\n#define OPAMP1_CSR_USERTRIM_Pos           (18U)\n#define OPAMP1_CSR_USERTRIM_Msk           (0x1UL << OPAMP1_CSR_USERTRIM_Pos)   /*!< 0x00040000 */\n#define OPAMP1_CSR_USERTRIM               OPAMP1_CSR_USERTRIM_Msk              /*!< User trimming enable */\n#define OPAMP1_CSR_TSTREF_Pos             (29U)\n#define OPAMP1_CSR_TSTREF_Msk             (0x1UL << OPAMP1_CSR_TSTREF_Pos)     /*!< 0x20000000 */\n#define OPAMP1_CSR_TSTREF                 OPAMP1_CSR_TSTREF_Msk                /*!< OpAmp calibration reference voltage output control */\n#define OPAMP1_CSR_CALOUT_Pos             (30U)\n#define OPAMP1_CSR_CALOUT_Msk             (0x1UL << OPAMP1_CSR_CALOUT_Pos)     /*!< 0x40000000 */\n#define OPAMP1_CSR_CALOUT                 OPAMP1_CSR_CALOUT_Msk                /*!< Operational amplifier1 calibration output */\n\n/*********************  Bit definition for OPAMP2_CSR register  ***************/\n#define OPAMP2_CSR_OPAEN_Pos              (0U)\n#define OPAMP2_CSR_OPAEN_Msk              (0x1UL << OPAMP2_CSR_OPAEN_Pos)      /*!< 0x00000001 */\n#define OPAMP2_CSR_OPAEN                  OPAMP2_CSR_OPAEN_Msk                 /*!< Operational amplifier2 Enable */\n#define OPAMP2_CSR_FORCEVP_Pos            (1U)\n#define OPAMP2_CSR_FORCEVP_Msk            (0x1UL << OPAMP2_CSR_FORCEVP_Pos)    /*!< 0x00000002 */\n#define OPAMP2_CSR_FORCEVP                OPAMP2_CSR_FORCEVP_Msk               /*!< Force internal reference on VP */\n\n#define OPAMP2_CSR_VPSEL_Pos              (2U)\n#define OPAMP2_CSR_VPSEL_Msk              (0x3UL << OPAMP2_CSR_VPSEL_Pos)      /*!< 0x0000000C */\n#define OPAMP2_CSR_VPSEL                  OPAMP2_CSR_VPSEL_Msk                 /*!< Non inverted input selection */\n#define OPAMP2_CSR_VPSEL_0                (0x1UL << OPAMP2_CSR_VPSEL_Pos)       /*!< 0x00000004 */\n#define OPAMP2_CSR_VPSEL_1                (0x2UL << OPAMP2_CSR_VPSEL_Pos)       /*!< 0x00000008 */\n\n#define OPAMP2_CSR_VMSEL_Pos              (5U)\n#define OPAMP2_CSR_VMSEL_Msk              (0x3UL << OPAMP2_CSR_VMSEL_Pos)      /*!< 0x00000060 */\n#define OPAMP2_CSR_VMSEL                  OPAMP2_CSR_VMSEL_Msk                 /*!< Inverting input selection */\n#define OPAMP2_CSR_VMSEL_0                (0x1UL << OPAMP2_CSR_VMSEL_Pos)       /*!< 0x00000020 */\n#define OPAMP2_CSR_VMSEL_1                (0x2UL << OPAMP2_CSR_VMSEL_Pos)       /*!< 0x00000040 */\n\n#define OPAMP2_CSR_OPAHSM_Pos             (8U)\n#define OPAMP2_CSR_OPAHSM_Msk             (0x1UL << OPAMP2_CSR_OPAHSM_Pos)     /*!< 0x00000100 */\n#define OPAMP2_CSR_OPAHSM                 OPAMP2_CSR_OPAHSM_Msk                /*!< Operational amplifier2 high speed mode */\n#define OPAMP2_CSR_CALON_Pos              (11U)\n#define OPAMP2_CSR_CALON_Msk              (0x1UL << OPAMP2_CSR_CALON_Pos)      /*!< 0x00000800 */\n#define OPAMP2_CSR_CALON                  OPAMP2_CSR_CALON_Msk                 /*!< Calibration mode enable */\n\n#define OPAMP2_CSR_CALSEL_Pos             (12U)\n#define OPAMP2_CSR_CALSEL_Msk             (0x3UL << OPAMP2_CSR_CALSEL_Pos)     /*!< 0x00003000 */\n#define OPAMP2_CSR_CALSEL                 OPAMP2_CSR_CALSEL_Msk                /*!< Calibration selection */\n#define OPAMP2_CSR_CALSEL_0               (0x1UL << OPAMP2_CSR_CALSEL_Pos)      /*!< 0x00001000 */\n#define OPAMP2_CSR_CALSEL_1               (0x2UL << OPAMP2_CSR_CALSEL_Pos)      /*!< 0x00002000 */\n\n#define OPAMP2_CSR_PGGAIN_Pos             (14U)\n#define OPAMP2_CSR_PGGAIN_Msk             (0xFUL << OPAMP2_CSR_PGGAIN_Pos)     /*!< 0x0003C000 */\n#define OPAMP2_CSR_PGGAIN                 OPAMP2_CSR_PGGAIN_Msk                /*!< Operational amplifier2 Programmable amplifier gain value */\n#define OPAMP2_CSR_PGGAIN_0               (0x1UL << OPAMP2_CSR_PGGAIN_Pos)      /*!< 0x00004000 */\n#define OPAMP2_CSR_PGGAIN_1               (0x2UL << OPAMP2_CSR_PGGAIN_Pos)      /*!< 0x00008000 */\n#define OPAMP2_CSR_PGGAIN_2               (0x4UL << OPAMP2_CSR_PGGAIN_Pos)      /*!< 0x00010000 */\n#define OPAMP2_CSR_PGGAIN_3               (0x8UL << OPAMP2_CSR_PGGAIN_Pos)      /*!< 0x00020000 */\n\n#define OPAMP2_CSR_USERTRIM_Pos           (18U)\n#define OPAMP2_CSR_USERTRIM_Msk           (0x1UL << OPAMP2_CSR_USERTRIM_Pos)   /*!< 0x00040000 */\n#define OPAMP2_CSR_USERTRIM               OPAMP2_CSR_USERTRIM_Msk              /*!< User trimming enable */\n#define OPAMP2_CSR_TSTREF_Pos             (29U)\n#define OPAMP2_CSR_TSTREF_Msk             (0x1UL << OPAMP2_CSR_TSTREF_Pos)     /*!< 0x20000000 */\n#define OPAMP2_CSR_TSTREF                 OPAMP2_CSR_TSTREF_Msk                /*!< OpAmp calibration reference voltage output control */\n#define OPAMP2_CSR_CALOUT_Pos             (30U)\n#define OPAMP2_CSR_CALOUT_Msk             (0x1UL << OPAMP2_CSR_CALOUT_Pos)     /*!< 0x40000000 */\n#define OPAMP2_CSR_CALOUT                 OPAMP2_CSR_CALOUT_Msk                /*!< Operational amplifier2 calibration output */\n\n/*******************  Bit definition for OPAMP_OTR register  ******************/\n#define OPAMP_OTR_TRIMOFFSETN_Pos        (0U)\n#define OPAMP_OTR_TRIMOFFSETN_Msk        (0x1FUL << OPAMP_OTR_TRIMOFFSETN_Pos) /*!< 0x0000001F */\n#define OPAMP_OTR_TRIMOFFSETN            OPAMP_OTR_TRIMOFFSETN_Msk             /*!< Trim for NMOS differential pairs */\n#define OPAMP_OTR_TRIMOFFSETP_Pos        (8U)\n#define OPAMP_OTR_TRIMOFFSETP_Msk        (0x1FUL << OPAMP_OTR_TRIMOFFSETP_Pos) /*!< 0x00001F00 */\n#define OPAMP_OTR_TRIMOFFSETP            OPAMP_OTR_TRIMOFFSETP_Msk             /*!< Trim for PMOS differential pairs */\n\n/*******************  Bit definition for OPAMP1_OTR register  ******************/\n#define OPAMP1_OTR_TRIMOFFSETN_Pos        (0U)\n#define OPAMP1_OTR_TRIMOFFSETN_Msk        (0x1FUL << OPAMP1_OTR_TRIMOFFSETN_Pos) /*!< 0x0000001F */\n#define OPAMP1_OTR_TRIMOFFSETN            OPAMP1_OTR_TRIMOFFSETN_Msk           /*!< Trim for NMOS differential pairs */\n#define OPAMP1_OTR_TRIMOFFSETP_Pos        (8U)\n#define OPAMP1_OTR_TRIMOFFSETP_Msk        (0x1FUL << OPAMP1_OTR_TRIMOFFSETP_Pos) /*!< 0x00001F00 */\n#define OPAMP1_OTR_TRIMOFFSETP            OPAMP1_OTR_TRIMOFFSETP_Msk           /*!< Trim for PMOS differential pairs */\n\n/*******************  Bit definition for OPAMP2_OTR register  ******************/\n#define OPAMP2_OTR_TRIMOFFSETN_Pos        (0U)\n#define OPAMP2_OTR_TRIMOFFSETN_Msk        (0x1FUL << OPAMP2_OTR_TRIMOFFSETN_Pos) /*!< 0x0000001F */\n#define OPAMP2_OTR_TRIMOFFSETN            OPAMP2_OTR_TRIMOFFSETN_Msk           /*!< Trim for NMOS differential pairs */\n#define OPAMP2_OTR_TRIMOFFSETP_Pos        (8U)\n#define OPAMP2_OTR_TRIMOFFSETP_Msk        (0x1FUL << OPAMP2_OTR_TRIMOFFSETP_Pos) /*!< 0x00001F00 */\n#define OPAMP2_OTR_TRIMOFFSETP            OPAMP2_OTR_TRIMOFFSETP_Msk           /*!< Trim for PMOS differential pairs */\n\n/*******************  Bit definition for OPAMP_HSOTR register  ****************/\n#define OPAMP_HSOTR_TRIMHSOFFSETN_Pos    (0U)\n#define OPAMP_HSOTR_TRIMHSOFFSETN_Msk    (0x1FUL << OPAMP_HSOTR_TRIMHSOFFSETN_Pos) /*!< 0x0000001F */\n#define OPAMP_HSOTR_TRIMHSOFFSETN        OPAMP_HSOTR_TRIMHSOFFSETN_Msk         /*!< Trim for NMOS differential pairs */\n#define OPAMP_HSOTR_TRIMHSOFFSETP_Pos    (8U)\n#define OPAMP_HSOTR_TRIMHSOFFSETP_Msk    (0x1FUL << OPAMP_HSOTR_TRIMHSOFFSETP_Pos) /*!< 0x00001F00 */\n#define OPAMP_HSOTR_TRIMHSOFFSETP        OPAMP_HSOTR_TRIMHSOFFSETP_Msk         /*!< Trim for PMOS differential pairs */\n\n/*******************  Bit definition for OPAMP1_HSOTR register  ****************/\n#define OPAMP1_HSOTR_TRIMHSOFFSETN_Pos    (0U)\n#define OPAMP1_HSOTR_TRIMHSOFFSETN_Msk    (0x1FUL << OPAMP1_HSOTR_TRIMHSOFFSETN_Pos) /*!< 0x0000001F */\n#define OPAMP1_HSOTR_TRIMHSOFFSETN        OPAMP1_HSOTR_TRIMHSOFFSETN_Msk       /*!< Trim for NMOS differential pairs */\n#define OPAMP1_HSOTR_TRIMHSOFFSETP_Pos    (8U)\n#define OPAMP1_HSOTR_TRIMHSOFFSETP_Msk    (0x1FUL << OPAMP1_HSOTR_TRIMHSOFFSETP_Pos) /*!< 0x00001F00 */\n#define OPAMP1_HSOTR_TRIMHSOFFSETP        OPAMP1_HSOTR_TRIMHSOFFSETP_Msk       /*!< Trim for PMOS differential pairs */\n\n/*******************  Bit definition for OPAMP2_HSOTR register  ****************/\n#define OPAMP2_HSOTR_TRIMHSOFFSETN_Pos    (0U)\n#define OPAMP2_HSOTR_TRIMHSOFFSETN_Msk    (0x1FUL << OPAMP2_HSOTR_TRIMHSOFFSETN_Pos) /*!< 0x0000001F */\n#define OPAMP2_HSOTR_TRIMHSOFFSETN        OPAMP2_HSOTR_TRIMHSOFFSETN_Msk       /*!< Trim for NMOS differential pairs */\n#define OPAMP2_HSOTR_TRIMHSOFFSETP_Pos    (8U)\n#define OPAMP2_HSOTR_TRIMHSOFFSETP_Msk    (0x1FUL << OPAMP2_HSOTR_TRIMHSOFFSETP_Pos) /*!< 0x00001F00 */\n#define OPAMP2_HSOTR_TRIMHSOFFSETP        OPAMP2_HSOTR_TRIMHSOFFSETP_Msk       /*!< Trim for PMOS differential pairs */\n\n/******************************************************************************/\n/*                                                                            */\n/*                             Power Control                                  */\n/*                                                                            */\n/******************************************************************************/\n/*************************  NUMBER OF POWER DOMAINS  **************************/\n#define POWER_DOMAINS_NUMBER           3U                                      /*!< 3 Domains */\n\n/********************  Bit definition for PWR_CR1 register  *******************/\n#define PWR_CR1_ALS_Pos                (17U)\n#define PWR_CR1_ALS_Msk                (0x3UL << PWR_CR1_ALS_Pos)              /*!< 0x00060000 */\n#define PWR_CR1_ALS                    PWR_CR1_ALS_Msk                         /*!< Analog Voltage Detector level selection */\n#define PWR_CR1_ALS_0                  (0x1UL << PWR_CR1_ALS_Pos)              /*!< 0x00020000 */\n#define PWR_CR1_ALS_1                  (0x2UL << PWR_CR1_ALS_Pos)              /*!< 0x00040000 */\n#define PWR_CR1_AVDEN_Pos              (16U)\n#define PWR_CR1_AVDEN_Msk              (0x1UL << PWR_CR1_AVDEN_Pos)            /*!< 0x00010000 */\n#define PWR_CR1_AVDEN                  PWR_CR1_AVDEN_Msk                       /*!< Analog Voltage Detector Enable */\n#define PWR_CR1_SVOS_Pos               (14U)\n#define PWR_CR1_SVOS_Msk               (0x3UL << PWR_CR1_SVOS_Pos)             /*!< 0x0000C000 */\n#define PWR_CR1_SVOS                   PWR_CR1_SVOS_Msk                        /*!< System STOP mode Voltage Scaling selection */\n#define PWR_CR1_SVOS_0                 (0x1UL << PWR_CR1_SVOS_Pos)             /*!< 0x00004000 */\n#define PWR_CR1_SVOS_1                 (0x2UL << PWR_CR1_SVOS_Pos)             /*!< 0x00008000 */\n#define PWR_CR1_FLPS_Pos               (9U)\n#define PWR_CR1_FLPS_Msk               (0x1UL << PWR_CR1_FLPS_Pos)             /*!< 0x00000200 */\n#define PWR_CR1_FLPS                   PWR_CR1_FLPS_Msk                        /*!< Flash low power mode in DSTOP */\n#define PWR_CR1_DBP_Pos                (8U)\n#define PWR_CR1_DBP_Msk                (0x1UL << PWR_CR1_DBP_Pos)              /*!< 0x00000100 */\n#define PWR_CR1_DBP                    PWR_CR1_DBP_Msk                         /*!< Disable Back-up domain Protection */\n#define PWR_CR1_PLS_Pos                (5U)\n#define PWR_CR1_PLS_Msk                (0x7UL << PWR_CR1_PLS_Pos)              /*!< 0x000000E0 */\n#define PWR_CR1_PLS                    PWR_CR1_PLS_Msk                         /*!< Programmable Voltage Detector level selection */\n#define PWR_CR1_PLS_0                  (0x1UL << PWR_CR1_PLS_Pos)              /*!< 0x00000020 */\n#define PWR_CR1_PLS_1                  (0x2UL << PWR_CR1_PLS_Pos)              /*!< 0x00000040 */\n#define PWR_CR1_PLS_2                  (0x4UL << PWR_CR1_PLS_Pos)              /*!< 0x00000080 */\n#define PWR_CR1_PVDEN_Pos              (4U)\n#define PWR_CR1_PVDEN_Msk              (0x1UL << PWR_CR1_PVDEN_Pos)            /*!< 0x00000010 */\n#define PWR_CR1_PVDEN                  PWR_CR1_PVDEN_Msk                       /*!< Programmable Voltage detector enable */\n#define PWR_CR1_LPDS_Pos               (0U)\n#define PWR_CR1_LPDS_Msk               (0x1UL << PWR_CR1_LPDS_Pos)             /*!< 0x00000001 */\n#define PWR_CR1_LPDS                   PWR_CR1_LPDS_Msk                        /*!< Low Power Deepsleep with SVOS3 */\n\n/*!< PVD level configuration */\n#define PWR_CR1_PLS_LEV0               (0UL)                                   /*!< PVD level 0 */\n#define PWR_CR1_PLS_LEV1_Pos           (5U)\n#define PWR_CR1_PLS_LEV1_Msk           (0x1UL << PWR_CR1_PLS_LEV1_Pos)         /*!< 0x00000020 */\n#define PWR_CR1_PLS_LEV1               PWR_CR1_PLS_LEV1_Msk                    /*!< PVD level 1 */\n#define PWR_CR1_PLS_LEV2_Pos           (6U)\n#define PWR_CR1_PLS_LEV2_Msk           (0x1UL << PWR_CR1_PLS_LEV2_Pos)         /*!< 0x00000040 */\n#define PWR_CR1_PLS_LEV2               PWR_CR1_PLS_LEV2_Msk                    /*!< PVD level 2 */\n#define PWR_CR1_PLS_LEV3_Pos           (5U)\n#define PWR_CR1_PLS_LEV3_Msk           (0x3UL << PWR_CR1_PLS_LEV3_Pos)         /*!< 0x00000060 */\n#define PWR_CR1_PLS_LEV3               PWR_CR1_PLS_LEV3_Msk                    /*!< PVD level 3 */\n#define PWR_CR1_PLS_LEV4_Pos           (7U)\n#define PWR_CR1_PLS_LEV4_Msk           (0x1UL << PWR_CR1_PLS_LEV4_Pos)         /*!< 0x00000080 */\n#define PWR_CR1_PLS_LEV4               PWR_CR1_PLS_LEV4_Msk                    /*!< PVD level 4 */\n#define PWR_CR1_PLS_LEV5_Pos           (5U)\n#define PWR_CR1_PLS_LEV5_Msk           (0x5UL << PWR_CR1_PLS_LEV5_Pos)         /*!< 0x000000A0 */\n#define PWR_CR1_PLS_LEV5               PWR_CR1_PLS_LEV5_Msk                    /*!< PVD level 5 */\n#define PWR_CR1_PLS_LEV6_Pos           (6U)\n#define PWR_CR1_PLS_LEV6_Msk           (0x3UL << PWR_CR1_PLS_LEV6_Pos)         /*!< 0x000000C0 */\n#define PWR_CR1_PLS_LEV6               PWR_CR1_PLS_LEV6_Msk                    /*!< PVD level 6 */\n#define PWR_CR1_PLS_LEV7_Pos           (5U)\n#define PWR_CR1_PLS_LEV7_Msk           (0x7UL << PWR_CR1_PLS_LEV7_Pos)         /*!< 0x000000E0 */\n#define PWR_CR1_PLS_LEV7               PWR_CR1_PLS_LEV7_Msk                    /*!< PVD level 7 */\n\n/*!< AVD level configuration */\n#define PWR_CR1_ALS_LEV0               (0UL)                                   /*!< AVD level 0 */\n#define PWR_CR1_ALS_LEV1_Pos           (17U)\n#define PWR_CR1_ALS_LEV1_Msk           (0x1UL << PWR_CR1_ALS_LEV1_Pos)         /*!< 0x00020000 */\n#define PWR_CR1_ALS_LEV1               PWR_CR1_ALS_LEV1_Msk                    /*!< AVD level 1 */\n#define PWR_CR1_ALS_LEV2_Pos           (18U)\n#define PWR_CR1_ALS_LEV2_Msk           (0x1UL << PWR_CR1_ALS_LEV2_Pos)         /*!< 0x00040000 */\n#define PWR_CR1_ALS_LEV2               PWR_CR1_ALS_LEV2_Msk                    /*!< AVD level 2 */\n#define PWR_CR1_ALS_LEV3_Pos           (17U)\n#define PWR_CR1_ALS_LEV3_Msk           (0x3UL << PWR_CR1_ALS_LEV3_Pos)         /*!< 0x00060000 */\n#define PWR_CR1_ALS_LEV3               PWR_CR1_ALS_LEV3_Msk                    /*!< AVD level 3 */\n\n/********************  Bit definition for PWR_CSR1 register  ******************/\n#define PWR_CSR1_AVDO_Pos              (16U)\n#define PWR_CSR1_AVDO_Msk              (0x1UL << PWR_CSR1_AVDO_Pos)            /*!< 0x00010000 */\n#define PWR_CSR1_AVDO                  PWR_CSR1_AVDO_Msk                       /*!< Analog Voltage Detect Output */\n#define PWR_CSR1_ACTVOS_Pos            (14U)\n#define PWR_CSR1_ACTVOS_Msk            (0x3UL << PWR_CSR1_ACTVOS_Pos)          /*!< 0x0000C000 */\n#define PWR_CSR1_ACTVOS                PWR_CSR1_ACTVOS_Msk                     /*!< Current actual used VOS for VDD11 Voltage Scaling */\n#define PWR_CSR1_ACTVOS_0              (0x1UL << PWR_CSR1_ACTVOS_Pos)          /*!< 0x00004000 */\n#define PWR_CSR1_ACTVOS_1              (0x2UL << PWR_CSR1_ACTVOS_Pos)          /*!< 0x00008000 */\n#define PWR_CSR1_ACTVOSRDY_Pos         (13U)\n#define PWR_CSR1_ACTVOSRDY_Msk         (0x1UL << PWR_CSR1_ACTVOSRDY_Pos)       /*!< 0x00002000 */\n#define PWR_CSR1_ACTVOSRDY             PWR_CSR1_ACTVOSRDY_Msk                  /*!< Ready bit for current actual used VOS for VDD11 Voltage Scaling  */\n#define PWR_CSR1_PVDO_Pos              (4U)\n#define PWR_CSR1_PVDO_Msk              (0x1UL << PWR_CSR1_PVDO_Pos)            /*!< 0x00000010 */\n#define PWR_CSR1_PVDO                  PWR_CSR1_PVDO_Msk                       /*!< Programmable Voltage Detect Output */\n\n/********************  Bit definition for PWR_CR2 register  *******************/\n#define PWR_CR2_TEMPH_Pos              (23U)\n#define PWR_CR2_TEMPH_Msk              (0x1UL << PWR_CR2_TEMPH_Pos)            /*!< 0x00800000 */\n#define PWR_CR2_TEMPH                  PWR_CR2_TEMPH_Msk                       /*!< Monitored temperature level above high threshold */\n#define PWR_CR2_TEMPL_Pos              (22U)\n#define PWR_CR2_TEMPL_Msk              (0x1UL << PWR_CR2_TEMPL_Pos)            /*!< 0x00400000 */\n#define PWR_CR2_TEMPL                  PWR_CR2_TEMPL_Msk                       /*!< Monitored temperature level above low threshold */\n#define PWR_CR2_VBATH_Pos              (21U)\n#define PWR_CR2_VBATH_Msk              (0x1UL << PWR_CR2_VBATH_Pos)            /*!< 0x00200000 */\n#define PWR_CR2_VBATH                  PWR_CR2_VBATH_Msk                       /*!< Monitored VBAT level above high threshold */\n#define PWR_CR2_VBATL_Pos              (20U)\n#define PWR_CR2_VBATL_Msk              (0x1UL << PWR_CR2_VBATL_Pos)            /*!< 0x00100000 */\n#define PWR_CR2_VBATL                  PWR_CR2_VBATL_Msk                       /*!< Monitored VBAT level above low threshold */\n#define PWR_CR2_BRRDY_Pos              (16U)\n#define PWR_CR2_BRRDY_Msk              (0x1UL << PWR_CR2_BRRDY_Pos)            /*!< 0x00010000 */\n#define PWR_CR2_BRRDY                  PWR_CR2_BRRDY_Msk                       /*!< Backup regulator ready */\n#define PWR_CR2_MONEN_Pos              (4U)\n#define PWR_CR2_MONEN_Msk              (0x1UL << PWR_CR2_MONEN_Pos)            /*!< 0x00000010 */\n#define PWR_CR2_MONEN                  PWR_CR2_MONEN_Msk                       /*!< VBAT and temperature monitoring enable */\n#define PWR_CR2_BREN_Pos               (0U)\n#define PWR_CR2_BREN_Msk               (0x1UL << PWR_CR2_BREN_Pos)             /*!< 0x00000001 */\n#define PWR_CR2_BREN                   PWR_CR2_BREN_Msk                        /*!< Backup regulator enable */\n\n/********************  Bit definition for PWR_CR3 register  *******************/\n#define PWR_CR3_USB33RDY_Pos           (26U)\n#define PWR_CR3_USB33RDY_Msk           (0x1UL << PWR_CR3_USB33RDY_Pos)         /*!< 0x04000000 */\n#define PWR_CR3_USB33RDY               PWR_CR3_USB33RDY_Msk                    /*!< USB supply ready */\n#define PWR_CR3_USBREGEN_Pos           (25U)\n#define PWR_CR3_USBREGEN_Msk           (0x1UL << PWR_CR3_USBREGEN_Pos)         /*!< 0x02000000 */\n#define PWR_CR3_USBREGEN               PWR_CR3_USBREGEN_Msk                    /*!< USB regulator enable */\n#define PWR_CR3_USB33DEN_Pos           (24U)\n#define PWR_CR3_USB33DEN_Msk           (0x1UL << PWR_CR3_USB33DEN_Pos)         /*!< 0x01000000 */\n#define PWR_CR3_USB33DEN               PWR_CR3_USB33DEN_Msk                    /*!< VDD33_USB voltage level detector enable */\n#define PWR_CR3_VBRS_Pos               (9U)\n#define PWR_CR3_VBRS_Msk               (0x1UL << PWR_CR3_VBRS_Pos)             /*!< 0x00000200 */\n#define PWR_CR3_VBRS                   PWR_CR3_VBRS_Msk                        /*!< VBAT charging resistor selection */\n#define PWR_CR3_VBE_Pos                (8U)\n#define PWR_CR3_VBE_Msk                (0x1UL << PWR_CR3_VBE_Pos)              /*!< 0x00000100 */\n#define PWR_CR3_VBE                    PWR_CR3_VBE_Msk                         /*!< VBAT charging enable */\n#define PWR_CR3_SCUEN_Pos              (2U)\n#define PWR_CR3_SCUEN_Msk              (0x1UL << PWR_CR3_SCUEN_Pos)            /*!< 0x00000004 */\n#define PWR_CR3_SCUEN                  PWR_CR3_SCUEN_Msk                       /*!< Supply configuration update enable */\n#define PWR_CR3_LDOEN_Pos              (1U)\n#define PWR_CR3_LDOEN_Msk              (0x1UL << PWR_CR3_LDOEN_Pos)            /*!< 0x00000002 */\n#define PWR_CR3_LDOEN                  PWR_CR3_LDOEN_Msk                       /*!< Low Drop Output regulator enable */\n#define PWR_CR3_BYPASS_Pos             (0U)\n#define PWR_CR3_BYPASS_Msk             (0x1UL << PWR_CR3_BYPASS_Pos)           /*!< 0x00000001 */\n#define PWR_CR3_BYPASS                 PWR_CR3_BYPASS_Msk                      /*!< Power Management Unit bypass */\n\n/********************  Bit definition for PWR_CPUCR register  *****************/\n#define PWR_CPUCR_RUN_D3_Pos           (11U)\n#define PWR_CPUCR_RUN_D3_Msk           (0x1UL << PWR_CPUCR_RUN_D3_Pos)         /*!< 0x00000800 */\n#define PWR_CPUCR_RUN_D3               PWR_CPUCR_RUN_D3_Msk                    /*!< Keep system D3 domain in RUN mode regardless of the CPU sub-systems modes */\n#define PWR_CPUCR_CSSF_Pos             (9U)\n#define PWR_CPUCR_CSSF_Msk             (0x1UL << PWR_CPUCR_CSSF_Pos)           /*!< 0x00000200 */\n#define PWR_CPUCR_CSSF                 PWR_CPUCR_CSSF_Msk                      /*!< Clear D1 domain CPU1 STANDBY, STOP and HOLD flags */\n#define PWR_CPUCR_SBF_D2_Pos           (8U)\n#define PWR_CPUCR_SBF_D2_Msk           (0x1UL << PWR_CPUCR_SBF_D2_Pos)         /*!< 0x00000100 */\n#define PWR_CPUCR_SBF_D2               PWR_CPUCR_SBF_D2_Msk                    /*!< D2 domain DSTANDBY Flag */\n#define PWR_CPUCR_SBF_D1_Pos           (7U)\n#define PWR_CPUCR_SBF_D1_Msk           (0x1UL << PWR_CPUCR_SBF_D1_Pos)         /*!< 0x00000080 */\n#define PWR_CPUCR_SBF_D1               PWR_CPUCR_SBF_D1_Msk                    /*!< D1 domain DSTANDBY Flag */\n#define PWR_CPUCR_SBF_Pos              (6U)\n#define PWR_CPUCR_SBF_Msk              (0x1UL << PWR_CPUCR_SBF_Pos)            /*!< 0x00000040 */\n#define PWR_CPUCR_SBF                  PWR_CPUCR_SBF_Msk                       /*!< System STANDBY Flag */\n#define PWR_CPUCR_STOPF_Pos            (5U)\n#define PWR_CPUCR_STOPF_Msk            (0x1UL << PWR_CPUCR_STOPF_Pos)          /*!< 0x00000020 */\n#define PWR_CPUCR_STOPF                PWR_CPUCR_STOPF_Msk                     /*!< STOP Flag */\n#define PWR_CPUCR_PDDS_D3_Pos          (2U)\n#define PWR_CPUCR_PDDS_D3_Msk          (0x1UL << PWR_CPUCR_PDDS_D3_Pos)        /*!< 0x00000004 */\n#define PWR_CPUCR_PDDS_D3              PWR_CPUCR_PDDS_D3_Msk                   /*!< System D3 domain Power Down Deepsleep */\n#define PWR_CPUCR_PDDS_D2_Pos          (1U)\n#define PWR_CPUCR_PDDS_D2_Msk          (0x1UL << PWR_CPUCR_PDDS_D2_Pos)        /*!< 0x00000002 */\n#define PWR_CPUCR_PDDS_D2              PWR_CPUCR_PDDS_D2_Msk                   /*!< D2 domain Power Down Deepsleep */\n#define PWR_CPUCR_PDDS_D1_Pos          (0U)\n#define PWR_CPUCR_PDDS_D1_Msk          (0x1UL << PWR_CPUCR_PDDS_D1_Pos)        /*!< 0x00000001 */\n#define PWR_CPUCR_PDDS_D1              PWR_CPUCR_PDDS_D1_Msk                   /*!< D1 domain Power Down Deepsleep selection */\n\n\n/********************  Bit definition for PWR_D3CR register  ******************/\n#define PWR_D3CR_VOS_Pos               (14U)\n#define PWR_D3CR_VOS_Msk               (0x3UL << PWR_D3CR_VOS_Pos)             /*!< 0x0000C000 */\n#define PWR_D3CR_VOS                   PWR_D3CR_VOS_Msk                        /*!< Voltage Scaling selection according performance */\n#define PWR_D3CR_VOS_0                 (0x1UL << PWR_D3CR_VOS_Pos)             /*!< 0x00004000 */\n#define PWR_D3CR_VOS_1                 (0x2UL << PWR_D3CR_VOS_Pos)             /*!< 0x00008000 */\n#define PWR_D3CR_VOSRDY_Pos            (13U)\n#define PWR_D3CR_VOSRDY_Msk            (0x1UL << PWR_D3CR_VOSRDY_Pos)          /*!< 0x00002000 */\n#define PWR_D3CR_VOSRDY                PWR_D3CR_VOSRDY_Msk                     /*!< VOS Ready bit for VDD11 Voltage Scaling output selection */\n\n/******************  Bit definition for PWR_WKUPCR register  ******************/\n#define PWR_WKUPCR_WKUPC6_Pos          (5U)\n#define PWR_WKUPCR_WKUPC6_Msk          (0x1UL << PWR_WKUPCR_WKUPC6_Pos)        /*!< 0x00000020 */\n#define PWR_WKUPCR_WKUPC6              PWR_WKUPCR_WKUPC6_Msk                   /*!< Clear Wakeup Pin Flag 6 */\n#define PWR_WKUPCR_WKUPC5_Pos          (4U)\n#define PWR_WKUPCR_WKUPC5_Msk          (0x1UL << PWR_WKUPCR_WKUPC5_Pos)        /*!< 0x00000010 */\n#define PWR_WKUPCR_WKUPC5              PWR_WKUPCR_WKUPC5_Msk                   /*!< Clear Wakeup Pin Flag 5 */\n#define PWR_WKUPCR_WKUPC4_Pos          (3U)\n#define PWR_WKUPCR_WKUPC4_Msk          (0x1UL << PWR_WKUPCR_WKUPC4_Pos)        /*!< 0x00000008 */\n#define PWR_WKUPCR_WKUPC4              PWR_WKUPCR_WKUPC4_Msk                   /*!< Clear Wakeup Pin Flag 4 */\n#define PWR_WKUPCR_WKUPC3_Pos          (2U)\n#define PWR_WKUPCR_WKUPC3_Msk          (0x1UL << PWR_WKUPCR_WKUPC3_Pos)        /*!< 0x00000004 */\n#define PWR_WKUPCR_WKUPC3              PWR_WKUPCR_WKUPC3_Msk                   /*!< Clear Wakeup Pin Flag 3 */\n#define PWR_WKUPCR_WKUPC2_Pos          (1U)\n#define PWR_WKUPCR_WKUPC2_Msk          (0x1UL << PWR_WKUPCR_WKUPC2_Pos)        /*!< 0x00000002 */\n#define PWR_WKUPCR_WKUPC2              PWR_WKUPCR_WKUPC2_Msk                   /*!< Clear Wakeup Pin Flag 2 */\n#define PWR_WKUPCR_WKUPC1_Pos          (0U)\n#define PWR_WKUPCR_WKUPC1_Msk          (0x1UL << PWR_WKUPCR_WKUPC1_Pos)        /*!< 0x00000001 */\n#define PWR_WKUPCR_WKUPC1              PWR_WKUPCR_WKUPC1_Msk                   /*!< Clear Wakeup Pin Flag 1 */\n\n/********************  Bit definition for PWR_WKUPFR register  ****************/\n#define PWR_WKUPFR_WKUPF6_Pos          (5U)\n#define PWR_WKUPFR_WKUPF6_Msk          (0x1UL << PWR_WKUPFR_WKUPF6_Pos)        /*!< 0x00000020 */\n#define PWR_WKUPFR_WKUPF6              PWR_WKUPFR_WKUPF6_Msk                   /*!< Wakeup Pin Flag 6 */\n#define PWR_WKUPFR_WKUPF5_Pos          (4U)\n#define PWR_WKUPFR_WKUPF5_Msk          (0x1UL << PWR_WKUPFR_WKUPF5_Pos)        /*!< 0x00000010 */\n#define PWR_WKUPFR_WKUPF5              PWR_WKUPFR_WKUPF5_Msk                   /*!< Wakeup Pin Flag 5 */\n#define PWR_WKUPFR_WKUPF4_Pos          (3U)\n#define PWR_WKUPFR_WKUPF4_Msk          (0x1UL << PWR_WKUPFR_WKUPF4_Pos)        /*!< 0x00000008 */\n#define PWR_WKUPFR_WKUPF4              PWR_WKUPFR_WKUPF4_Msk                   /*!< Wakeup Pin Flag 4 */\n#define PWR_WKUPFR_WKUPF3_Pos          (2U)\n#define PWR_WKUPFR_WKUPF3_Msk          (0x1UL << PWR_WKUPFR_WKUPF3_Pos)        /*!< 0x00000004 */\n#define PWR_WKUPFR_WKUPF3              PWR_WKUPFR_WKUPF3_Msk                   /*!< Wakeup Pin Flag 3 */\n#define PWR_WKUPFR_WKUPF2_Pos          (1U)\n#define PWR_WKUPFR_WKUPF2_Msk          (0x1UL << PWR_WKUPFR_WKUPF2_Pos)        /*!< 0x00000002 */\n#define PWR_WKUPFR_WKUPF2              PWR_WKUPFR_WKUPF2_Msk                   /*!< Wakeup Pin Flag 2 */\n#define PWR_WKUPFR_WKUPF1_Pos          (0U)\n#define PWR_WKUPFR_WKUPF1_Msk          (0x1UL << PWR_WKUPFR_WKUPF1_Pos)        /*!< 0x00000001 */\n#define PWR_WKUPFR_WKUPF1              PWR_WKUPFR_WKUPF1_Msk                   /*!< Wakeup Pin Flag 1 */\n\n/******************  Bit definition for PWR_WKUPEPR register  *****************/\n#define PWR_WKUPEPR_WKUPPUPD6_Pos      (26U)\n#define PWR_WKUPEPR_WKUPPUPD6_Msk      (0x3UL << PWR_WKUPEPR_WKUPPUPD6_Pos)    /*!< 0x0C000000 */\n#define PWR_WKUPEPR_WKUPPUPD6          PWR_WKUPEPR_WKUPPUPD6_Msk               /*!< Wakeup Pin pull configuration for WKUP6 */\n#define PWR_WKUPEPR_WKUPPUPD6_0        (0x1UL << PWR_WKUPEPR_WKUPPUPD6_Pos)    /*!< 0x04000000 */\n#define PWR_WKUPEPR_WKUPPUPD6_1        (0x2UL << PWR_WKUPEPR_WKUPPUPD6_Pos)    /*!< 0x08000000 */\n#define PWR_WKUPEPR_WKUPPUPD5_Pos      (24U)\n#define PWR_WKUPEPR_WKUPPUPD5_Msk      (0x3UL << PWR_WKUPEPR_WKUPPUPD5_Pos)    /*!< 0x03000000 */\n#define PWR_WKUPEPR_WKUPPUPD5          PWR_WKUPEPR_WKUPPUPD5_Msk               /*!< Wakeup Pin pull configuration for WKUP5 */\n#define PWR_WKUPEPR_WKUPPUPD5_0        (0x1UL << PWR_WKUPEPR_WKUPPUPD5_Pos)    /*!< 0x01000000 */\n#define PWR_WKUPEPR_WKUPPUPD5_1        (0x2UL << PWR_WKUPEPR_WKUPPUPD5_Pos)    /*!< 0x02000000 */\n#define PWR_WKUPEPR_WKUPPUPD4_Pos      (22U)\n#define PWR_WKUPEPR_WKUPPUPD4_Msk      (0x3UL << PWR_WKUPEPR_WKUPPUPD4_Pos)    /*!< 0x00C00000 */\n#define PWR_WKUPEPR_WKUPPUPD4          PWR_WKUPEPR_WKUPPUPD4_Msk               /*!< Wakeup Pin pull configuration for WKUP4 */\n#define PWR_WKUPEPR_WKUPPUPD4_0        (0x1UL << PWR_WKUPEPR_WKUPPUPD4_Pos)    /*!< 0x00400000 */\n#define PWR_WKUPEPR_WKUPPUPD4_1        (0x2UL << PWR_WKUPEPR_WKUPPUPD4_Pos)    /*!< 0x00800000 */\n#define PWR_WKUPEPR_WKUPPUPD3_Pos      (20U)\n#define PWR_WKUPEPR_WKUPPUPD3_Msk      (0x3UL << PWR_WKUPEPR_WKUPPUPD3_Pos)    /*!< 0x00300000 */\n#define PWR_WKUPEPR_WKUPPUPD3          PWR_WKUPEPR_WKUPPUPD3_Msk               /*!< Wakeup Pin pull configuration for WKUP3 */\n#define PWR_WKUPEPR_WKUPPUPD3_0        (0x1UL << PWR_WKUPEPR_WKUPPUPD3_Pos)    /*!< 0x00100000 */\n#define PWR_WKUPEPR_WKUPPUPD3_1        (0x2UL << PWR_WKUPEPR_WKUPPUPD3_Pos)    /*!< 0x00200000 */\n#define PWR_WKUPEPR_WKUPPUPD2_Pos      (18U)\n#define PWR_WKUPEPR_WKUPPUPD2_Msk      (0x3UL << PWR_WKUPEPR_WKUPPUPD2_Pos)    /*!< 0x000C0000 */\n#define PWR_WKUPEPR_WKUPPUPD2          PWR_WKUPEPR_WKUPPUPD2_Msk               /*!< Wakeup Pin pull configuration for WKUP2 */\n#define PWR_WKUPEPR_WKUPPUPD2_0        (0x1UL << PWR_WKUPEPR_WKUPPUPD2_Pos)    /*!< 0x00040000 */\n#define PWR_WKUPEPR_WKUPPUPD2_1        (0x2UL << PWR_WKUPEPR_WKUPPUPD2_Pos)    /*!< 0x00080000 */\n#define PWR_WKUPEPR_WKUPPUPD1_Pos      (16U)\n#define PWR_WKUPEPR_WKUPPUPD1_Msk      (0x3UL << PWR_WKUPEPR_WKUPPUPD1_Pos)    /*!< 0x00030000 */\n#define PWR_WKUPEPR_WKUPPUPD1          PWR_WKUPEPR_WKUPPUPD1_Msk               /*!< Wakeup Pin pull configuration for WKUP1 */\n#define PWR_WKUPEPR_WKUPPUPD1_0        (0x1UL << PWR_WKUPEPR_WKUPPUPD1_Pos)    /*!< 0x00010000 */\n#define PWR_WKUPEPR_WKUPPUPD1_1        (0x2UL << PWR_WKUPEPR_WKUPPUPD1_Pos)    /*!< 0x00020000 */\n#define PWR_WKUPEPR_WKUPP6_Pos         (13U)\n#define PWR_WKUPEPR_WKUPP6_Msk         (0x1UL << PWR_WKUPEPR_WKUPP6_Pos)       /*!< 0x00002000 */\n#define PWR_WKUPEPR_WKUPP6             PWR_WKUPEPR_WKUPP6_Msk                  /*!< Wakeup Pin Polarity for WKUP6 */\n#define PWR_WKUPEPR_WKUPP5_Pos         (12U)\n#define PWR_WKUPEPR_WKUPP5_Msk         (0x1UL << PWR_WKUPEPR_WKUPP5_Pos)       /*!< 0x00001000 */\n#define PWR_WKUPEPR_WKUPP5             PWR_WKUPEPR_WKUPP5_Msk                  /*!< Wakeup Pin Polarity for WKUP5 */\n#define PWR_WKUPEPR_WKUPP4_Pos         (11U)\n#define PWR_WKUPEPR_WKUPP4_Msk         (0x1UL << PWR_WKUPEPR_WKUPP4_Pos)       /*!< 0x00000800 */\n#define PWR_WKUPEPR_WKUPP4             PWR_WKUPEPR_WKUPP4_Msk                  /*!< Wakeup Pin Polarity for WKUP4 */\n#define PWR_WKUPEPR_WKUPP3_Pos         (10U)\n#define PWR_WKUPEPR_WKUPP3_Msk         (0x1UL << PWR_WKUPEPR_WKUPP3_Pos)       /*!< 0x00000400 */\n#define PWR_WKUPEPR_WKUPP3             PWR_WKUPEPR_WKUPP3_Msk                  /*!< Wakeup Pin Polarity for WKUP3 */\n#define PWR_WKUPEPR_WKUPP2_Pos         (9U)\n#define PWR_WKUPEPR_WKUPP2_Msk         (0x1UL << PWR_WKUPEPR_WKUPP2_Pos)       /*!< 0x00000200 */\n#define PWR_WKUPEPR_WKUPP2             PWR_WKUPEPR_WKUPP2_Msk                  /*!< Wakeup Pin Polarity for WKUP2 */\n#define PWR_WKUPEPR_WKUPP1_Pos         (8U)\n#define PWR_WKUPEPR_WKUPP1_Msk         (0x1UL << PWR_WKUPEPR_WKUPP1_Pos)       /*!< 0x00000100 */\n#define PWR_WKUPEPR_WKUPP1             PWR_WKUPEPR_WKUPP1_Msk                  /*!< Wakeup Pin Polarity for WKUP1 */\n#define PWR_WKUPEPR_WKUPEN6_Pos        (5U)\n#define PWR_WKUPEPR_WKUPEN6_Msk        (0x1UL << PWR_WKUPEPR_WKUPEN6_Pos)      /*!< 0x00000020 */\n#define PWR_WKUPEPR_WKUPEN6            PWR_WKUPEPR_WKUPEN6_Msk                 /*!< Enable Wakeup Pin WKUP6 */\n#define PWR_WKUPEPR_WKUPEN5_Pos        (4U)\n#define PWR_WKUPEPR_WKUPEN5_Msk        (0x1UL << PWR_WKUPEPR_WKUPEN5_Pos)      /*!< 0x00000010 */\n#define PWR_WKUPEPR_WKUPEN5            PWR_WKUPEPR_WKUPEN5_Msk                 /*!< Enable Wakeup Pin WKUP5 */\n#define PWR_WKUPEPR_WKUPEN4_Pos        (3U)\n#define PWR_WKUPEPR_WKUPEN4_Msk        (0x1UL << PWR_WKUPEPR_WKUPEN4_Pos)      /*!< 0x00000008 */\n#define PWR_WKUPEPR_WKUPEN4            PWR_WKUPEPR_WKUPEN4_Msk                 /*!< Enable Wakeup Pin WKUP4 */\n#define PWR_WKUPEPR_WKUPEN3_Pos        (2U)\n#define PWR_WKUPEPR_WKUPEN3_Msk        (0x1UL << PWR_WKUPEPR_WKUPEN3_Pos)      /*!< 0x00000004 */\n#define PWR_WKUPEPR_WKUPEN3            PWR_WKUPEPR_WKUPEN3_Msk                 /*!< Enable Wakeup Pin WKUP3 */\n#define PWR_WKUPEPR_WKUPEN2_Pos        (1U)\n#define PWR_WKUPEPR_WKUPEN2_Msk        (0x1UL << PWR_WKUPEPR_WKUPEN2_Pos)      /*!< 0x00000002 */\n#define PWR_WKUPEPR_WKUPEN2            PWR_WKUPEPR_WKUPEN2_Msk                 /*!< Enable Wakeup Pin WKUP2 */\n#define PWR_WKUPEPR_WKUPEN1_Pos        (0U)\n#define PWR_WKUPEPR_WKUPEN1_Msk        (0x1UL << PWR_WKUPEPR_WKUPEN1_Pos)      /*!< 0x00000001 */\n#define PWR_WKUPEPR_WKUPEN1            PWR_WKUPEPR_WKUPEN1_Msk                 /*!< Enable Wakeup Pin WKUP1 */\n#define PWR_WKUPEPR_WKUPEN_Pos         (0U)\n#define PWR_WKUPEPR_WKUPEN_Msk         (0x3FUL << PWR_WKUPEPR_WKUPEN_Pos)      /*!< 0x0000003F */\n#define PWR_WKUPEPR_WKUPEN             PWR_WKUPEPR_WKUPEN_Msk                  /*!< Enable all Wakeup Pin */\n\n/******************************************************************************/\n/*                                                                            */\n/*                         Reset and Clock Control                            */\n/*                                                                            */\n/******************************************************************************/\n/*******************************  RCC VERSION  ********************************/\n#define RCC_VER_X\n\n/********************  Bit definition for RCC_CR register  ********************/\n#define RCC_CR_HSION_Pos                       (0U)\n#define RCC_CR_HSION_Msk                       (0x1UL << RCC_CR_HSION_Pos)     /*!< 0x00000001 */\n#define RCC_CR_HSION                           RCC_CR_HSION_Msk                /*!< Internal High Speed clock enable */\n#define RCC_CR_HSIKERON_Pos                    (1U)\n#define RCC_CR_HSIKERON_Msk                    (0x1UL << RCC_CR_HSIKERON_Pos)  /*!< 0x00000002 */\n#define RCC_CR_HSIKERON                        RCC_CR_HSIKERON_Msk             /*!< Internal High Speed clock enable for some IPs Kernel */\n#define RCC_CR_HSIRDY_Pos                      (2U)\n#define RCC_CR_HSIRDY_Msk                      (0x1UL << RCC_CR_HSIRDY_Pos)    /*!< 0x00000004 */\n#define RCC_CR_HSIRDY                          RCC_CR_HSIRDY_Msk               /*!< Internal High Speed clock ready flag */\n#define RCC_CR_HSIDIV_Pos                      (3U)\n#define RCC_CR_HSIDIV_Msk                      (0x3UL << RCC_CR_HSIDIV_Pos)    /*!< 0x00000018 */\n#define RCC_CR_HSIDIV                          RCC_CR_HSIDIV_Msk               /*!< Internal High Speed clock divider selection */\n#define RCC_CR_HSIDIV_1                        (0x0UL << RCC_CR_HSIDIV_Pos)     /*!< 0x00000000 */\n#define RCC_CR_HSIDIV_2                        (0x1UL << RCC_CR_HSIDIV_Pos)     /*!< 0x00000008 */\n#define RCC_CR_HSIDIV_4                        (0x2UL << RCC_CR_HSIDIV_Pos)     /*!< 0x00000010 */\n#define RCC_CR_HSIDIV_8                        (0x3UL << RCC_CR_HSIDIV_Pos)     /*!< 0x00000018 */\n\n#define RCC_CR_HSIDIVF_Pos                     (5U)\n#define RCC_CR_HSIDIVF_Msk                     (0x1UL << RCC_CR_HSIDIVF_Pos)   /*!< 0x00000020 */\n#define RCC_CR_HSIDIVF                         RCC_CR_HSIDIVF_Msk              /*!< HSI Divider flag */\n#define RCC_CR_CSION_Pos                       (7U)\n#define RCC_CR_CSION_Msk                       (0x1UL << RCC_CR_CSION_Pos)     /*!< 0x00000080 */\n#define RCC_CR_CSION                           RCC_CR_CSION_Msk                /*!< The Internal RC 4MHz oscillator clock enable */\n#define RCC_CR_CSIRDY_Pos                      (8U)\n#define RCC_CR_CSIRDY_Msk                      (0x1UL << RCC_CR_CSIRDY_Pos)    /*!< 0x00000100 */\n#define RCC_CR_CSIRDY                          RCC_CR_CSIRDY_Msk               /*!< The Internal RC 4MHz oscillator clock ready */\n#define RCC_CR_CSIKERON_Pos                    (9U)\n#define RCC_CR_CSIKERON_Msk                    (0x1UL << RCC_CR_CSIKERON_Pos)  /*!< 0x00000200 */\n#define RCC_CR_CSIKERON                        RCC_CR_CSIKERON_Msk             /*!< Internal RC 4MHz oscillator clock enable for some IPs Kernel */\n#define RCC_CR_HSI48ON_Pos                     (12U)\n#define RCC_CR_HSI48ON_Msk                     (0x1UL << RCC_CR_HSI48ON_Pos)   /*!< 0x00001000 */\n#define RCC_CR_HSI48ON                         RCC_CR_HSI48ON_Msk              /*!< HSI48 clock enable clock enable  */\n#define RCC_CR_HSI48RDY_Pos                    (13U)\n#define RCC_CR_HSI48RDY_Msk                    (0x1UL << RCC_CR_HSI48RDY_Pos)  /*!< 0x00002000 */\n#define RCC_CR_HSI48RDY                        RCC_CR_HSI48RDY_Msk             /*!< HSI48 clock ready */\n\n#define RCC_CR_D1CKRDY_Pos                     (14U)\n#define RCC_CR_D1CKRDY_Msk                     (0x1UL << RCC_CR_D1CKRDY_Pos)   /*!< 0x00004000 */\n#define RCC_CR_D1CKRDY                         RCC_CR_D1CKRDY_Msk              /*!< D1 domain clocks ready flag  */\n#define RCC_CR_D2CKRDY_Pos                     (15U)\n#define RCC_CR_D2CKRDY_Msk                     (0x1UL << RCC_CR_D2CKRDY_Pos)   /*!< 0x00008000 */\n#define RCC_CR_D2CKRDY                         RCC_CR_D2CKRDY_Msk              /*!< D2 domain clocks ready flag */\n\n#define RCC_CR_HSEON_Pos                       (16U)\n#define RCC_CR_HSEON_Msk                       (0x1UL << RCC_CR_HSEON_Pos)     /*!< 0x00010000 */\n#define RCC_CR_HSEON                           RCC_CR_HSEON_Msk                /*!< External High Speed clock enable */\n#define RCC_CR_HSERDY_Pos                      (17U)\n#define RCC_CR_HSERDY_Msk                      (0x1UL << RCC_CR_HSERDY_Pos)    /*!< 0x00020000 */\n#define RCC_CR_HSERDY                          RCC_CR_HSERDY_Msk               /*!< External High Speed clock ready */\n#define RCC_CR_HSEBYP_Pos                      (18U)\n#define RCC_CR_HSEBYP_Msk                      (0x1UL << RCC_CR_HSEBYP_Pos)    /*!< 0x00040000 */\n#define RCC_CR_HSEBYP                          RCC_CR_HSEBYP_Msk               /*!< External High Speed clock Bypass */\n#define RCC_CR_CSSHSEON_Pos                    (19U)\n#define RCC_CR_CSSHSEON_Msk                    (0x1UL << RCC_CR_CSSHSEON_Pos)  /*!< 0x00080000 */\n#define RCC_CR_CSSHSEON                        RCC_CR_CSSHSEON_Msk             /*!< HSE Clock security System enable */\n\n\n#define RCC_CR_PLL1ON_Pos                      (24U)\n#define RCC_CR_PLL1ON_Msk                      (0x1UL << RCC_CR_PLL1ON_Pos)    /*!< 0x01000000 */\n#define RCC_CR_PLL1ON                          RCC_CR_PLL1ON_Msk               /*!< System PLL1 clock enable */\n#define RCC_CR_PLL1RDY_Pos                     (25U)\n#define RCC_CR_PLL1RDY_Msk                     (0x1UL << RCC_CR_PLL1RDY_Pos)   /*!< 0x02000000 */\n#define RCC_CR_PLL1RDY                         RCC_CR_PLL1RDY_Msk              /*!< System PLL1 clock ready */\n#define RCC_CR_PLL2ON_Pos                      (26U)\n#define RCC_CR_PLL2ON_Msk                      (0x1UL << RCC_CR_PLL2ON_Pos)    /*!< 0x04000000 */\n#define RCC_CR_PLL2ON                          RCC_CR_PLL2ON_Msk               /*!< System PLL2 clock enable */\n#define RCC_CR_PLL2RDY_Pos                     (27U)\n#define RCC_CR_PLL2RDY_Msk                     (0x1UL << RCC_CR_PLL2RDY_Pos)   /*!< 0x08000000 */\n#define RCC_CR_PLL2RDY                         RCC_CR_PLL2RDY_Msk              /*!< System PLL2 clock ready */\n#define RCC_CR_PLL3ON_Pos                      (28U)\n#define RCC_CR_PLL3ON_Msk                      (0x1UL << RCC_CR_PLL3ON_Pos)    /*!< 0x10000000 */\n#define RCC_CR_PLL3ON                          RCC_CR_PLL3ON_Msk               /*!< System PLL3 clock enable */\n#define RCC_CR_PLL3RDY_Pos                     (29U)\n#define RCC_CR_PLL3RDY_Msk                     (0x1UL << RCC_CR_PLL3RDY_Pos)   /*!< 0x20000000 */\n#define RCC_CR_PLL3RDY                         RCC_CR_PLL3RDY_Msk              /*!< System PLL3 clock ready */\n\n/*Legacy */\n#define RCC_CR_PLLON_Pos                       (24U)\n#define RCC_CR_PLLON_Msk                       (0x1UL << RCC_CR_PLLON_Pos)     /*!< 0x01000000 */\n#define RCC_CR_PLLON                           RCC_CR_PLLON_Msk                /*!< System PLL clock enable */\n#define RCC_CR_PLLRDY_Pos                      (25U)\n#define RCC_CR_PLLRDY_Msk                      (0x1UL << RCC_CR_PLLRDY_Pos)    /*!< 0x02000000 */\n#define RCC_CR_PLLRDY                          RCC_CR_PLLRDY_Msk               /*!< System PLL clock ready */\n\n/********************  Bit definition for RCC_HSICFGR register  ***************/\n/*!< HSICAL configuration */\n#define RCC_HSICFGR_HSICAL_Pos                 (0U)\n#define RCC_HSICFGR_HSICAL_Msk                 (0xFFFUL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000FFF */\n#define RCC_HSICFGR_HSICAL                     RCC_HSICFGR_HSICAL_Msk          /*!< HSICAL[11:0] bits */\n#define RCC_HSICFGR_HSICAL_0                   (0x001UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000001 */\n#define RCC_HSICFGR_HSICAL_1                   (0x002UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000002 */\n#define RCC_HSICFGR_HSICAL_2                   (0x004UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000004 */\n#define RCC_HSICFGR_HSICAL_3                   (0x008UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000008 */\n#define RCC_HSICFGR_HSICAL_4                   (0x010UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000010 */\n#define RCC_HSICFGR_HSICAL_5                   (0x020UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000020 */\n#define RCC_HSICFGR_HSICAL_6                   (0x040UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000040 */\n#define RCC_HSICFGR_HSICAL_7                   (0x080UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000080 */\n#define RCC_HSICFGR_HSICAL_8                   (0x100UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000100 */\n#define RCC_HSICFGR_HSICAL_9                   (0x200UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000200 */\n#define RCC_HSICFGR_HSICAL_10                  (0x400UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000400 */\n#define RCC_HSICFGR_HSICAL_11                  (0x800UL << RCC_HSICFGR_HSICAL_Pos) /*!< 0x00000800 */\n\n/*!< HSITRIM configuration */\n#define RCC_HSICFGR_HSITRIM_Pos                (24U)\n#define RCC_HSICFGR_HSITRIM_Msk                (0x7FUL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x7F000000 */\n#define RCC_HSICFGR_HSITRIM                    RCC_HSICFGR_HSITRIM_Msk         /*!< HSITRIM[6:0] bits */\n#define RCC_HSICFGR_HSITRIM_0                  (0x01UL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x01000000 */\n#define RCC_HSICFGR_HSITRIM_1                  (0x02UL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x02000000 */\n#define RCC_HSICFGR_HSITRIM_2                  (0x04UL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x04000000 */\n#define RCC_HSICFGR_HSITRIM_3                  (0x08UL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x08000000 */\n#define RCC_HSICFGR_HSITRIM_4                  (0x10UL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x10000000 */\n#define RCC_HSICFGR_HSITRIM_5                  (0x20UL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x20000000 */\n#define RCC_HSICFGR_HSITRIM_6                  (0x40UL << RCC_HSICFGR_HSITRIM_Pos) /*!< 0x40000000 */\n\n\n/********************  Bit definition for RCC_CRRCR register  *****************/\n\n/*!< HSI48CAL configuration */\n#define RCC_CRRCR_HSI48CAL_Pos                 (0U)\n#define RCC_CRRCR_HSI48CAL_Msk                 (0x3FFUL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x000003FF */\n#define RCC_CRRCR_HSI48CAL                     RCC_CRRCR_HSI48CAL_Msk          /*!< HSI48CAL[9:0] bits */\n#define RCC_CRRCR_HSI48CAL_0                   (0x001UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000001 */\n#define RCC_CRRCR_HSI48CAL_1                   (0x002UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000002 */\n#define RCC_CRRCR_HSI48CAL_2                   (0x004UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000004 */\n#define RCC_CRRCR_HSI48CAL_3                   (0x008UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000008 */\n#define RCC_CRRCR_HSI48CAL_4                   (0x010UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000010 */\n#define RCC_CRRCR_HSI48CAL_5                   (0x020UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000020 */\n#define RCC_CRRCR_HSI48CAL_6                   (0x040UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000040 */\n#define RCC_CRRCR_HSI48CAL_7                   (0x080UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000080 */\n#define RCC_CRRCR_HSI48CAL_8                   (0x100UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000100 */\n#define RCC_CRRCR_HSI48CAL_9                   (0x200UL << RCC_CRRCR_HSI48CAL_Pos) /*!< 0x00000200 */\n\n\n/********************  Bit definition for RCC_CSICFGR register  *****************/\n/*!< CSICAL configuration */\n#define RCC_CSICFGR_CSICAL_Pos                 (0U)\n#define RCC_CSICFGR_CSICAL_Msk                 (0xFFUL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x000000FF */\n#define RCC_CSICFGR_CSICAL                     RCC_CSICFGR_CSICAL_Msk          /*!< CSICAL[7:0] bits */\n#define RCC_CSICFGR_CSICAL_0                   (0x01UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000001 */\n#define RCC_CSICFGR_CSICAL_1                   (0x02UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000002 */\n#define RCC_CSICFGR_CSICAL_2                   (0x04UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000004 */\n#define RCC_CSICFGR_CSICAL_3                   (0x08UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000008 */\n#define RCC_CSICFGR_CSICAL_4                   (0x10UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000010 */\n#define RCC_CSICFGR_CSICAL_5                   (0x20UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000020 */\n#define RCC_CSICFGR_CSICAL_6                   (0x40UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000040 */\n#define RCC_CSICFGR_CSICAL_7                   (0x80UL << RCC_CSICFGR_CSICAL_Pos) /*!< 0x00000080 */\n\n/*!< CSITRIM configuration */\n#define RCC_CSICFGR_CSITRIM_Pos                (24U)\n#define RCC_CSICFGR_CSITRIM_Msk                (0x3FUL << RCC_CSICFGR_CSITRIM_Pos) /*!< 0x3F000000 */\n#define RCC_CSICFGR_CSITRIM                    RCC_CSICFGR_CSITRIM_Msk         /*!< CSITRIM[5:0] bits */\n#define RCC_CSICFGR_CSITRIM_0                  (0x01UL << RCC_CSICFGR_CSITRIM_Pos) /*!< 0x01000000 */\n#define RCC_CSICFGR_CSITRIM_1                  (0x02UL << RCC_CSICFGR_CSITRIM_Pos) /*!< 0x02000000 */\n#define RCC_CSICFGR_CSITRIM_2                  (0x04UL << RCC_CSICFGR_CSITRIM_Pos) /*!< 0x04000000 */\n#define RCC_CSICFGR_CSITRIM_3                  (0x08UL << RCC_CSICFGR_CSITRIM_Pos) /*!< 0x08000000 */\n#define RCC_CSICFGR_CSITRIM_4                  (0x10UL << RCC_CSICFGR_CSITRIM_Pos) /*!< 0x10000000 */\n#define RCC_CSICFGR_CSITRIM_5                  (0x20UL << RCC_CSICFGR_CSITRIM_Pos) /*!< 0x20000000 */\n\n/********************  Bit definition for RCC_CFGR register  ******************/\n/*!< SW configuration */\n#define RCC_CFGR_SW_Pos                        (0U)\n#define RCC_CFGR_SW_Msk                        (0x7UL << RCC_CFGR_SW_Pos)           /*!< 0x00000007 */\n#define RCC_CFGR_SW                            RCC_CFGR_SW_Msk                     /*!< SW[2:0] bits (System clock Switch) */\n#define RCC_CFGR_SW_0                          (0x1UL << RCC_CFGR_SW_Pos)           /*!< 0x00000001 */\n#define RCC_CFGR_SW_1                          (0x2UL << RCC_CFGR_SW_Pos)           /*!< 0x00000002 */\n#define RCC_CFGR_SW_2                          (0x4UL << RCC_CFGR_SW_Pos)           /*!< 0x00000004 */\n\n#define RCC_CFGR_SW_HSI                        (0x00000000UL)                       /*!< HSI selection as system clock */\n#define RCC_CFGR_SW_CSI                        (0x00000001UL)                       /*!< CSI selection as system clock */\n#define RCC_CFGR_SW_HSE                        (0x00000002UL)                       /*!< HSE selection as system clock */\n#define RCC_CFGR_SW_PLL1                       (0x00000003UL)                       /*!< PLL1 selection as system clock */\n\n/*!< SWS configuration */\n#define RCC_CFGR_SWS_Pos                       (3U)\n#define RCC_CFGR_SWS_Msk                       (0x7UL << RCC_CFGR_SWS_Pos)          /*!< 0x00000038 */\n#define RCC_CFGR_SWS                           RCC_CFGR_SWS_Msk                    /*!< SWS[2:0] bits (System Clock Switch Status) */\n#define RCC_CFGR_SWS_0                         (0x1UL << RCC_CFGR_SWS_Pos)          /*!< 0x00000008 */\n#define RCC_CFGR_SWS_1                         (0x2UL << RCC_CFGR_SWS_Pos)          /*!< 0x00000010 */\n#define RCC_CFGR_SWS_2                         (0x4UL << RCC_CFGR_SWS_Pos)          /*!< 0x00000020 */\n\n#define RCC_CFGR_SWS_HSI                       (0x00000000UL)                       /*!< HSI used as system clock */\n#define RCC_CFGR_SWS_CSI                       (0x00000008UL)                       /*!< CSI used as system clock */\n#define RCC_CFGR_SWS_HSE                       (0x00000010UL)                       /*!< HSE used as system clock */\n#define RCC_CFGR_SWS_PLL1                      (0x00000018UL)                       /*!< PLL1 used as system clock */\n\n#define RCC_CFGR_STOPWUCK_Pos                  (6U)\n#define RCC_CFGR_STOPWUCK_Msk                  (0x1UL << RCC_CFGR_STOPWUCK_Pos)     /*!< 0x00000040 */\n#define RCC_CFGR_STOPWUCK                      RCC_CFGR_STOPWUCK_Msk                /*!< Wake Up from stop and CSS backup clock selection */\n\n#define RCC_CFGR_STOPKERWUCK_Pos               (7U)\n#define RCC_CFGR_STOPKERWUCK_Msk               (0x1UL << RCC_CFGR_STOPKERWUCK_Pos)  /*!< 0x00000080 */\n#define RCC_CFGR_STOPKERWUCK                   RCC_CFGR_STOPKERWUCK_Msk             /*!< Kernel Clock Selection after a Wake Up from STOP */\n\n/*!< RTCPRE configuration */\n#define RCC_CFGR_RTCPRE_Pos                    (8U)\n#define RCC_CFGR_RTCPRE_Msk                    (0x3FUL << RCC_CFGR_RTCPRE_Pos)\n#define RCC_CFGR_RTCPRE                        RCC_CFGR_RTCPRE_Msk                  /*!< 0x00003F00 */\n#define RCC_CFGR_RTCPRE_0                      (0x1UL << RCC_CFGR_RTCPRE_Pos)        /*!< 0x00000100 */\n#define RCC_CFGR_RTCPRE_1                      (0x2UL << RCC_CFGR_RTCPRE_Pos)        /*!< 0x00000200 */\n#define RCC_CFGR_RTCPRE_2                      (0x4UL << RCC_CFGR_RTCPRE_Pos)        /*!< 0x00000400 */\n#define RCC_CFGR_RTCPRE_3                      (0x8UL << RCC_CFGR_RTCPRE_Pos)        /*!< 0x00000800 */\n#define RCC_CFGR_RTCPRE_4                      (0x10UL << RCC_CFGR_RTCPRE_Pos)       /*!< 0x00001000 */\n#define RCC_CFGR_RTCPRE_5                      (0x20UL << RCC_CFGR_RTCPRE_Pos)       /*!< 0x00002000 */\n\n/*!< HRTIMSEL configuration */\n#define RCC_CFGR_HRTIMSEL_Pos                  (14U)\n#define RCC_CFGR_HRTIMSEL_Msk                  (0x1UL << RCC_CFGR_HRTIMSEL_Pos)\n#define RCC_CFGR_HRTIMSEL                      RCC_CFGR_HRTIMSEL_Msk                /*!< 0x00004000 */\n\n/*!< TIMPRE configuration */\n#define RCC_CFGR_TIMPRE_Pos                    (15U)\n#define RCC_CFGR_TIMPRE_Msk                    (0x1UL << RCC_CFGR_TIMPRE_Pos)\n#define RCC_CFGR_TIMPRE                        RCC_CFGR_TIMPRE_Msk                  /*!< 0x00008000 */\n\n/*!< MCO1 configuration */\n#define RCC_CFGR_MCO1_Pos                      (22U)\n#define RCC_CFGR_MCO1_Msk                      (0x7UL << RCC_CFGR_MCO1_Pos)\n#define RCC_CFGR_MCO1                          RCC_CFGR_MCO1_Msk                       /*!< 0x01C00000 */\n#define RCC_CFGR_MCO1_0                        (0x1UL <<  RCC_CFGR_MCO1_Pos)            /*!< 0x00400000 */\n#define RCC_CFGR_MCO1_1                        (0x2UL <<  RCC_CFGR_MCO1_Pos)            /*!< 0x00800000 */\n#define RCC_CFGR_MCO1_2                        (0x4UL <<  RCC_CFGR_MCO1_Pos)            /*!< 0x01000000 */\n\n#define RCC_CFGR_MCO1PRE_Pos                   (18U)\n#define RCC_CFGR_MCO1PRE_Msk                   (0xFUL << RCC_CFGR_MCO1PRE_Pos)\n#define RCC_CFGR_MCO1PRE                       RCC_CFGR_MCO1PRE_Msk                    /*!< 0x003C0000 */\n#define RCC_CFGR_MCO1PRE_0                     (0x1UL << RCC_CFGR_MCO1PRE_Pos)          /*!< 0x00040000 */\n#define RCC_CFGR_MCO1PRE_1                     (0x2UL << RCC_CFGR_MCO1PRE_Pos)          /*!< 0x00080000 */\n#define RCC_CFGR_MCO1PRE_2                     (0x4UL << RCC_CFGR_MCO1PRE_Pos)          /*!< 0x00100000 */\n#define RCC_CFGR_MCO1PRE_3                     (0x8UL << RCC_CFGR_MCO1PRE_Pos)          /*!< 0x00200000 */\n\n#define RCC_CFGR_MCO2PRE_Pos                   (25U)\n#define RCC_CFGR_MCO2PRE_Msk                   (0xFUL << RCC_CFGR_MCO2PRE_Pos)\n#define RCC_CFGR_MCO2PRE                       RCC_CFGR_MCO2PRE_Msk                    /*!< 0x1E000000 */\n#define RCC_CFGR_MCO2PRE_0                     (0x1UL << RCC_CFGR_MCO2PRE_Pos)          /*!< 0x02000000 */\n#define RCC_CFGR_MCO2PRE_1                     (0x2UL << RCC_CFGR_MCO2PRE_Pos)          /*!< 0x04000000 */\n#define RCC_CFGR_MCO2PRE_2                     (0x4UL << RCC_CFGR_MCO2PRE_Pos)          /*!< 0x08000000 */\n#define RCC_CFGR_MCO2PRE_3                     (0x8UL << RCC_CFGR_MCO2PRE_Pos)          /*!< 0x10000000 */\n\n#define RCC_CFGR_MCO2_Pos                      (29U)\n#define RCC_CFGR_MCO2_Msk                      (0x7UL << RCC_CFGR_MCO2_Pos)\n#define RCC_CFGR_MCO2                          RCC_CFGR_MCO2_Msk                       /*!< 0xE0000000 */\n#define RCC_CFGR_MCO2_0                        (0x1UL << RCC_CFGR_MCO2_Pos)             /*!< 0x20000000 */\n#define RCC_CFGR_MCO2_1                        (0x2UL << RCC_CFGR_MCO2_Pos)             /*!< 0x40000000 */\n#define RCC_CFGR_MCO2_2                        (0x4UL << RCC_CFGR_MCO2_Pos)             /*!< 0x80000000 */\n\n/********************  Bit definition for RCC_D1CFGR register  ******************/\n/*!< D1HPRE configuration */\n#define RCC_D1CFGR_HPRE_Pos                    (0U)\n#define RCC_D1CFGR_HPRE_Msk                    (0xFUL << RCC_D1CFGR_HPRE_Pos)  /*!< 0x0000000F */\n#define RCC_D1CFGR_HPRE                        RCC_D1CFGR_HPRE_Msk             /*!< HPRE[3:0] bits (AHB3 prescaler) */\n#define RCC_D1CFGR_HPRE_0                      (0x1UL << RCC_D1CFGR_HPRE_Pos)   /*!< 0x00000001 */\n#define RCC_D1CFGR_HPRE_1                      (0x2UL << RCC_D1CFGR_HPRE_Pos)   /*!< 0x00000002 */\n#define RCC_D1CFGR_HPRE_2                      (0x4UL << RCC_D1CFGR_HPRE_Pos)   /*!< 0x00000004 */\n#define RCC_D1CFGR_HPRE_3                      (0x8UL << RCC_D1CFGR_HPRE_Pos)   /*!< 0x00000008 */\n\n\n#define RCC_D1CFGR_HPRE_DIV1                   ((uint32_t)0x00000000)          /*!< AHB3 Clock not divided */\n#define RCC_D1CFGR_HPRE_DIV2_Pos               (3U)\n#define RCC_D1CFGR_HPRE_DIV2_Msk               (0x1UL << RCC_D1CFGR_HPRE_DIV2_Pos) /*!< 0x00000008 */\n#define RCC_D1CFGR_HPRE_DIV2                   RCC_D1CFGR_HPRE_DIV2_Msk        /*!< AHB3 Clock divided by 2 */\n#define RCC_D1CFGR_HPRE_DIV4_Pos               (0U)\n#define RCC_D1CFGR_HPRE_DIV4_Msk               (0x9UL << RCC_D1CFGR_HPRE_DIV4_Pos) /*!< 0x00000009 */\n#define RCC_D1CFGR_HPRE_DIV4                   RCC_D1CFGR_HPRE_DIV4_Msk        /*!< AHB3 Clock divided by 4 */\n#define RCC_D1CFGR_HPRE_DIV8_Pos               (1U)\n#define RCC_D1CFGR_HPRE_DIV8_Msk               (0x5UL << RCC_D1CFGR_HPRE_DIV8_Pos) /*!< 0x0000000A */\n#define RCC_D1CFGR_HPRE_DIV8                   RCC_D1CFGR_HPRE_DIV8_Msk        /*!< AHB3 Clock divided by 8 */\n#define RCC_D1CFGR_HPRE_DIV16_Pos              (0U)\n#define RCC_D1CFGR_HPRE_DIV16_Msk              (0xBUL << RCC_D1CFGR_HPRE_DIV16_Pos) /*!< 0x0000000B */\n#define RCC_D1CFGR_HPRE_DIV16                  RCC_D1CFGR_HPRE_DIV16_Msk       /*!< AHB3 Clock divided by 16 */\n#define RCC_D1CFGR_HPRE_DIV64_Pos              (2U)\n#define RCC_D1CFGR_HPRE_DIV64_Msk              (0x3UL << RCC_D1CFGR_HPRE_DIV64_Pos) /*!< 0x0000000C */\n#define RCC_D1CFGR_HPRE_DIV64                  RCC_D1CFGR_HPRE_DIV64_Msk       /*!< AHB3 Clock divided by 64 */\n#define RCC_D1CFGR_HPRE_DIV128_Pos             (0U)\n#define RCC_D1CFGR_HPRE_DIV128_Msk             (0xDUL << RCC_D1CFGR_HPRE_DIV128_Pos) /*!< 0x0000000D */\n#define RCC_D1CFGR_HPRE_DIV128                 RCC_D1CFGR_HPRE_DIV128_Msk      /*!< AHB3 Clock divided by 128 */\n#define RCC_D1CFGR_HPRE_DIV256_Pos             (1U)\n#define RCC_D1CFGR_HPRE_DIV256_Msk             (0x7UL << RCC_D1CFGR_HPRE_DIV256_Pos) /*!< 0x0000000E */\n#define RCC_D1CFGR_HPRE_DIV256                 RCC_D1CFGR_HPRE_DIV256_Msk      /*!< AHB3 Clock divided by 256 */\n#define RCC_D1CFGR_HPRE_DIV512_Pos             (0U)\n#define RCC_D1CFGR_HPRE_DIV512_Msk             (0xFUL << RCC_D1CFGR_HPRE_DIV512_Pos) /*!< 0x0000000F */\n#define RCC_D1CFGR_HPRE_DIV512                 RCC_D1CFGR_HPRE_DIV512_Msk      /*!< AHB3 Clock divided by 512 */\n\n/*!< D1PPRE configuration */\n#define RCC_D1CFGR_D1PPRE_Pos                  (4U)\n#define RCC_D1CFGR_D1PPRE_Msk                  (0x7UL << RCC_D1CFGR_D1PPRE_Pos) /*!< 0x00000070 */\n#define RCC_D1CFGR_D1PPRE                      RCC_D1CFGR_D1PPRE_Msk           /*!< D1PRE[2:0] bits (APB3 prescaler) */\n#define RCC_D1CFGR_D1PPRE_0                    (0x1UL << RCC_D1CFGR_D1PPRE_Pos) /*!< 0x00000010 */\n#define RCC_D1CFGR_D1PPRE_1                    (0x2UL << RCC_D1CFGR_D1PPRE_Pos) /*!< 0x00000020 */\n#define RCC_D1CFGR_D1PPRE_2                    (0x4UL << RCC_D1CFGR_D1PPRE_Pos) /*!< 0x00000040 */\n\n#define RCC_D1CFGR_D1PPRE_DIV1                 ((uint32_t)0x00000000)          /*!< APB3 clock not divided */\n#define RCC_D1CFGR_D1PPRE_DIV2_Pos             (6U)\n#define RCC_D1CFGR_D1PPRE_DIV2_Msk             (0x1UL << RCC_D1CFGR_D1PPRE_DIV2_Pos) /*!< 0x00000040 */\n#define RCC_D1CFGR_D1PPRE_DIV2                 RCC_D1CFGR_D1PPRE_DIV2_Msk      /*!< APB3 clock divided by 2 */\n#define RCC_D1CFGR_D1PPRE_DIV4_Pos             (4U)\n#define RCC_D1CFGR_D1PPRE_DIV4_Msk             (0x5UL << RCC_D1CFGR_D1PPRE_DIV4_Pos) /*!< 0x00000050 */\n#define RCC_D1CFGR_D1PPRE_DIV4                 RCC_D1CFGR_D1PPRE_DIV4_Msk      /*!< APB3 clock divided by 4 */\n#define RCC_D1CFGR_D1PPRE_DIV8_Pos             (5U)\n#define RCC_D1CFGR_D1PPRE_DIV8_Msk             (0x3UL << RCC_D1CFGR_D1PPRE_DIV8_Pos) /*!< 0x00000060 */\n#define RCC_D1CFGR_D1PPRE_DIV8                 RCC_D1CFGR_D1PPRE_DIV8_Msk      /*!< APB3 clock divided by 8 */\n#define RCC_D1CFGR_D1PPRE_DIV16_Pos            (4U)\n#define RCC_D1CFGR_D1PPRE_DIV16_Msk            (0x7UL << RCC_D1CFGR_D1PPRE_DIV16_Pos) /*!< 0x00000070 */\n#define RCC_D1CFGR_D1PPRE_DIV16                RCC_D1CFGR_D1PPRE_DIV16_Msk     /*!< APB3 clock divided by 16 */\n\n#define RCC_D1CFGR_D1CPRE_Pos                  (8U)\n#define RCC_D1CFGR_D1CPRE_Msk                  (0xFUL << RCC_D1CFGR_D1CPRE_Pos) /*!< 0x00000F00 */\n#define RCC_D1CFGR_D1CPRE                      RCC_D1CFGR_D1CPRE_Msk           /*!< D1CPRE[2:0] bits (Domain 1 Core prescaler) */\n#define RCC_D1CFGR_D1CPRE_0                    (0x1UL << RCC_D1CFGR_D1CPRE_Pos) /*!< 0x00000100 */\n#define RCC_D1CFGR_D1CPRE_1                    (0x2UL << RCC_D1CFGR_D1CPRE_Pos) /*!< 0x00000200 */\n#define RCC_D1CFGR_D1CPRE_2                    (0x4UL << RCC_D1CFGR_D1CPRE_Pos) /*!< 0x00000400 */\n#define RCC_D1CFGR_D1CPRE_3                    (0x8UL << RCC_D1CFGR_D1CPRE_Pos) /*!< 0x00000800 */\n\n#define RCC_D1CFGR_D1CPRE_DIV1                 ((uint32_t)0x00000000)          /*!< Domain 1 Core clock not divided */\n#define RCC_D1CFGR_D1CPRE_DIV2_Pos             (11U)\n#define RCC_D1CFGR_D1CPRE_DIV2_Msk             (0x1UL << RCC_D1CFGR_D1CPRE_DIV2_Pos) /*!< 0x00000800 */\n#define RCC_D1CFGR_D1CPRE_DIV2                 RCC_D1CFGR_D1CPRE_DIV2_Msk      /*!< Domain 1 Core clock divided by 2 */\n#define RCC_D1CFGR_D1CPRE_DIV4_Pos             (8U)\n#define RCC_D1CFGR_D1CPRE_DIV4_Msk             (0x9UL << RCC_D1CFGR_D1CPRE_DIV4_Pos) /*!< 0x00000900 */\n#define RCC_D1CFGR_D1CPRE_DIV4                 RCC_D1CFGR_D1CPRE_DIV4_Msk      /*!< Domain 1 Core clock divided by 4 */\n#define RCC_D1CFGR_D1CPRE_DIV8_Pos             (9U)\n#define RCC_D1CFGR_D1CPRE_DIV8_Msk             (0x5UL << RCC_D1CFGR_D1CPRE_DIV8_Pos) /*!< 0x00000A00 */\n#define RCC_D1CFGR_D1CPRE_DIV8                 RCC_D1CFGR_D1CPRE_DIV8_Msk      /*!< Domain 1 Core clock divided by 8 */\n#define RCC_D1CFGR_D1CPRE_DIV16_Pos            (8U)\n#define RCC_D1CFGR_D1CPRE_DIV16_Msk            (0xBUL << RCC_D1CFGR_D1CPRE_DIV16_Pos) /*!< 0x00000B00 */\n#define RCC_D1CFGR_D1CPRE_DIV16                RCC_D1CFGR_D1CPRE_DIV16_Msk     /*!< Domain 1 Core clock divided by 16 */\n#define RCC_D1CFGR_D1CPRE_DIV64_Pos            (10U)\n#define RCC_D1CFGR_D1CPRE_DIV64_Msk            (0x3UL << RCC_D1CFGR_D1CPRE_DIV64_Pos) /*!< 0x00000C00 */\n#define RCC_D1CFGR_D1CPRE_DIV64                RCC_D1CFGR_D1CPRE_DIV64_Msk     /*!< Domain 1 Core clock divided by 64 */\n#define RCC_D1CFGR_D1CPRE_DIV128_Pos           (8U)\n#define RCC_D1CFGR_D1CPRE_DIV128_Msk           (0xDUL << RCC_D1CFGR_D1CPRE_DIV128_Pos) /*!< 0x00000D00 */\n#define RCC_D1CFGR_D1CPRE_DIV128               RCC_D1CFGR_D1CPRE_DIV128_Msk    /*!< Domain 1 Core clock divided by 128 */\n#define RCC_D1CFGR_D1CPRE_DIV256_Pos           (9U)\n#define RCC_D1CFGR_D1CPRE_DIV256_Msk           (0x7UL << RCC_D1CFGR_D1CPRE_DIV256_Pos) /*!< 0x00000E00 */\n#define RCC_D1CFGR_D1CPRE_DIV256               RCC_D1CFGR_D1CPRE_DIV256_Msk    /*!< Domain 1 Core clock divided by 256 */\n#define RCC_D1CFGR_D1CPRE_DIV512_Pos           (8U)\n#define RCC_D1CFGR_D1CPRE_DIV512_Msk           (0xFUL << RCC_D1CFGR_D1CPRE_DIV512_Pos) /*!< 0x00000F00 */\n#define RCC_D1CFGR_D1CPRE_DIV512               RCC_D1CFGR_D1CPRE_DIV512_Msk    /*!< Domain 1 Core clock divided by 512 */\n\n/********************  Bit definition for RCC_D2CFGR register  ******************/\n/*!< D2PPRE1 configuration */\n#define RCC_D2CFGR_D2PPRE1_Pos                 (4U)\n#define RCC_D2CFGR_D2PPRE1_Msk                 (0x7UL << RCC_D2CFGR_D2PPRE1_Pos) /*!< 0x00000070 */\n#define RCC_D2CFGR_D2PPRE1                     RCC_D2CFGR_D2PPRE1_Msk          /*!< D1PPRE1[2:0] bits (APB1 prescaler) */\n#define RCC_D2CFGR_D2PPRE1_0                   (0x1UL << RCC_D2CFGR_D2PPRE1_Pos) /*!< 0x00000010 */\n#define RCC_D2CFGR_D2PPRE1_1                   (0x2UL << RCC_D2CFGR_D2PPRE1_Pos) /*!< 0x00000020 */\n#define RCC_D2CFGR_D2PPRE1_2                   (0x4UL << RCC_D2CFGR_D2PPRE1_Pos) /*!< 0x00000040 */\n\n#define RCC_D2CFGR_D2PPRE1_DIV1                ((uint32_t)0x00000000)          /*!< APB1 clock not divided */\n#define RCC_D2CFGR_D2PPRE1_DIV2_Pos            (6U)\n#define RCC_D2CFGR_D2PPRE1_DIV2_Msk            (0x1UL << RCC_D2CFGR_D2PPRE1_DIV2_Pos) /*!< 0x00000040 */\n#define RCC_D2CFGR_D2PPRE1_DIV2                RCC_D2CFGR_D2PPRE1_DIV2_Msk     /*!< APB1 clock divided by 2 */\n#define RCC_D2CFGR_D2PPRE1_DIV4_Pos            (4U)\n#define RCC_D2CFGR_D2PPRE1_DIV4_Msk            (0x5UL << RCC_D2CFGR_D2PPRE1_DIV4_Pos) /*!< 0x00000050 */\n#define RCC_D2CFGR_D2PPRE1_DIV4                RCC_D2CFGR_D2PPRE1_DIV4_Msk     /*!< APB1 clock divided by 4 */\n#define RCC_D2CFGR_D2PPRE1_DIV8_Pos            (5U)\n#define RCC_D2CFGR_D2PPRE1_DIV8_Msk            (0x3UL << RCC_D2CFGR_D2PPRE1_DIV8_Pos) /*!< 0x00000060 */\n#define RCC_D2CFGR_D2PPRE1_DIV8                RCC_D2CFGR_D2PPRE1_DIV8_Msk     /*!< APB1 clock divided by 8 */\n#define RCC_D2CFGR_D2PPRE1_DIV16_Pos           (4U)\n#define RCC_D2CFGR_D2PPRE1_DIV16_Msk           (0x7UL << RCC_D2CFGR_D2PPRE1_DIV16_Pos) /*!< 0x00000070 */\n#define RCC_D2CFGR_D2PPRE1_DIV16               RCC_D2CFGR_D2PPRE1_DIV16_Msk    /*!< APB1 clock divided by 16 */\n\n/*!< D2PPRE2 configuration */\n#define RCC_D2CFGR_D2PPRE2_Pos                 (8U)\n#define RCC_D2CFGR_D2PPRE2_Msk                 (0x7UL << RCC_D2CFGR_D2PPRE2_Pos) /*!< 0x00000700 */\n#define RCC_D2CFGR_D2PPRE2                     RCC_D2CFGR_D2PPRE2_Msk          /*!< D2PPRE2[2:0] bits (APB2 prescaler) */\n#define RCC_D2CFGR_D2PPRE2_0                   (0x1UL << RCC_D2CFGR_D2PPRE2_Pos) /*!< 0x00000100 */\n#define RCC_D2CFGR_D2PPRE2_1                   (0x2UL << RCC_D2CFGR_D2PPRE2_Pos) /*!< 0x00000200 */\n#define RCC_D2CFGR_D2PPRE2_2                   (0x4UL << RCC_D2CFGR_D2PPRE2_Pos) /*!< 0x00000400 */\n\n#define RCC_D2CFGR_D2PPRE2_DIV1                ((uint32_t)0x00000000)          /*!< APB2 clock not divided */\n#define RCC_D2CFGR_D2PPRE2_DIV2_Pos            (10U)\n#define RCC_D2CFGR_D2PPRE2_DIV2_Msk            (0x1UL << RCC_D2CFGR_D2PPRE2_DIV2_Pos) /*!< 0x00000400 */\n#define RCC_D2CFGR_D2PPRE2_DIV2                RCC_D2CFGR_D2PPRE2_DIV2_Msk     /*!< APB2 clock divided by 2 */\n#define RCC_D2CFGR_D2PPRE2_DIV4_Pos            (8U)\n#define RCC_D2CFGR_D2PPRE2_DIV4_Msk            (0x5UL << RCC_D2CFGR_D2PPRE2_DIV4_Pos) /*!< 0x00000500 */\n#define RCC_D2CFGR_D2PPRE2_DIV4                RCC_D2CFGR_D2PPRE2_DIV4_Msk     /*!< APB2 clock divided by 4 */\n#define RCC_D2CFGR_D2PPRE2_DIV8_Pos            (9U)\n#define RCC_D2CFGR_D2PPRE2_DIV8_Msk            (0x3UL << RCC_D2CFGR_D2PPRE2_DIV8_Pos) /*!< 0x00000600 */\n#define RCC_D2CFGR_D2PPRE2_DIV8                RCC_D2CFGR_D2PPRE2_DIV8_Msk     /*!< APB2 clock divided by 8 */\n#define RCC_D2CFGR_D2PPRE2_DIV16_Pos           (8U)\n#define RCC_D2CFGR_D2PPRE2_DIV16_Msk           (0x7UL << RCC_D2CFGR_D2PPRE2_DIV16_Pos) /*!< 0x00000700 */\n#define RCC_D2CFGR_D2PPRE2_DIV16               RCC_D2CFGR_D2PPRE2_DIV16_Msk    /*!< APB2 clock divided by 16 */\n\n/********************  Bit definition for RCC_D3CFGR register  ******************/\n/*!< D3PPRE configuration */\n#define RCC_D3CFGR_D3PPRE_Pos                  (4U)\n#define RCC_D3CFGR_D3PPRE_Msk                  (0x7UL << RCC_D3CFGR_D3PPRE_Pos) /*!< 0x00000070 */\n#define RCC_D3CFGR_D3PPRE                      RCC_D3CFGR_D3PPRE_Msk           /*!< D3PPRE1[2:0] bits (APB4 prescaler) */\n#define RCC_D3CFGR_D3PPRE_0                    (0x1UL << RCC_D3CFGR_D3PPRE_Pos) /*!< 0x00000010 */\n#define RCC_D3CFGR_D3PPRE_1                    (0x2UL << RCC_D3CFGR_D3PPRE_Pos) /*!< 0x00000020 */\n#define RCC_D3CFGR_D3PPRE_2                    (0x4UL << RCC_D3CFGR_D3PPRE_Pos) /*!< 0x00000040 */\n\n#define RCC_D3CFGR_D3PPRE_DIV1                 ((uint32_t)0x00000000)          /*!< APB4 clock not divided */\n#define RCC_D3CFGR_D3PPRE_DIV2_Pos             (6U)\n#define RCC_D3CFGR_D3PPRE_DIV2_Msk             (0x1UL << RCC_D3CFGR_D3PPRE_DIV2_Pos) /*!< 0x00000040 */\n#define RCC_D3CFGR_D3PPRE_DIV2                 RCC_D3CFGR_D3PPRE_DIV2_Msk      /*!< APB4 clock divided by 2 */\n#define RCC_D3CFGR_D3PPRE_DIV4_Pos             (4U)\n#define RCC_D3CFGR_D3PPRE_DIV4_Msk             (0x5UL << RCC_D3CFGR_D3PPRE_DIV4_Pos) /*!< 0x00000050 */\n#define RCC_D3CFGR_D3PPRE_DIV4                 RCC_D3CFGR_D3PPRE_DIV4_Msk      /*!< APB4 clock divided by 4 */\n#define RCC_D3CFGR_D3PPRE_DIV8_Pos             (5U)\n#define RCC_D3CFGR_D3PPRE_DIV8_Msk             (0x3UL << RCC_D3CFGR_D3PPRE_DIV8_Pos) /*!< 0x00000060 */\n#define RCC_D3CFGR_D3PPRE_DIV8                 RCC_D3CFGR_D3PPRE_DIV8_Msk      /*!< APB4 clock divided by 8 */\n#define RCC_D3CFGR_D3PPRE_DIV16_Pos            (4U)\n#define RCC_D3CFGR_D3PPRE_DIV16_Msk            (0x7UL << RCC_D3CFGR_D3PPRE_DIV16_Pos) /*!< 0x00000070 */\n#define RCC_D3CFGR_D3PPRE_DIV16                RCC_D3CFGR_D3PPRE_DIV16_Msk     /*!< APB4 clock divided by 16 */\n\n/********************  Bit definition for RCC_PLLCKSELR register  *************/\n\n#define RCC_PLLCKSELR_PLLSRC_Pos               (0U)\n#define RCC_PLLCKSELR_PLLSRC_Msk               (0x3UL << RCC_PLLCKSELR_PLLSRC_Pos) /*!< 0x00000003 */\n#define RCC_PLLCKSELR_PLLSRC                   RCC_PLLCKSELR_PLLSRC_Msk\n\n#define RCC_PLLCKSELR_PLLSRC_HSI               ((uint32_t)0x00000000)          /*!< HSI source clock selected */\n#define RCC_PLLCKSELR_PLLSRC_CSI_Pos           (0U)\n#define RCC_PLLCKSELR_PLLSRC_CSI_Msk           (0x1UL << RCC_PLLCKSELR_PLLSRC_CSI_Pos) /*!< 0x00000001 */\n#define RCC_PLLCKSELR_PLLSRC_CSI               RCC_PLLCKSELR_PLLSRC_CSI_Msk    /*!< CSI source clock selected */\n#define RCC_PLLCKSELR_PLLSRC_HSE_Pos           (1U)\n#define RCC_PLLCKSELR_PLLSRC_HSE_Msk           (0x1UL << RCC_PLLCKSELR_PLLSRC_HSE_Pos) /*!< 0x00000002 */\n#define RCC_PLLCKSELR_PLLSRC_HSE               RCC_PLLCKSELR_PLLSRC_HSE_Msk    /*!< HSE source clock selected */\n#define RCC_PLLCKSELR_PLLSRC_NONE_Pos          (0U)\n#define RCC_PLLCKSELR_PLLSRC_NONE_Msk          (0x3UL << RCC_PLLCKSELR_PLLSRC_NONE_Pos) /*!< 0x00000003 */\n#define RCC_PLLCKSELR_PLLSRC_NONE              RCC_PLLCKSELR_PLLSRC_NONE_Msk   /*!< No source clock selected  */\n\n#define RCC_PLLCKSELR_DIVM1_Pos                (4U)\n#define RCC_PLLCKSELR_DIVM1_Msk                (0x3FUL << RCC_PLLCKSELR_DIVM1_Pos) /*!< 0x000003F0 */\n#define RCC_PLLCKSELR_DIVM1                    RCC_PLLCKSELR_DIVM1_Msk\n#define RCC_PLLCKSELR_DIVM1_0                  (0x01UL << RCC_PLLCKSELR_DIVM1_Pos) /*!< 0x00000010 */\n#define RCC_PLLCKSELR_DIVM1_1                  (0x02UL << RCC_PLLCKSELR_DIVM1_Pos) /*!< 0x00000020 */\n#define RCC_PLLCKSELR_DIVM1_2                  (0x04UL << RCC_PLLCKSELR_DIVM1_Pos) /*!< 0x00000040 */\n#define RCC_PLLCKSELR_DIVM1_3                  (0x08UL << RCC_PLLCKSELR_DIVM1_Pos) /*!< 0x00000080 */\n#define RCC_PLLCKSELR_DIVM1_4                  (0x10UL << RCC_PLLCKSELR_DIVM1_Pos) /*!< 0x00000100 */\n#define RCC_PLLCKSELR_DIVM1_5                  (0x20UL << RCC_PLLCKSELR_DIVM1_Pos) /*!< 0x00000200 */\n\n#define RCC_PLLCKSELR_DIVM2_Pos                (12U)\n#define RCC_PLLCKSELR_DIVM2_Msk                (0x3FUL << RCC_PLLCKSELR_DIVM2_Pos) /*!< 0x0003F000 */\n#define RCC_PLLCKSELR_DIVM2                    RCC_PLLCKSELR_DIVM2_Msk\n#define RCC_PLLCKSELR_DIVM2_0                  (0x01UL << RCC_PLLCKSELR_DIVM2_Pos) /*!< 0x00001000 */\n#define RCC_PLLCKSELR_DIVM2_1                  (0x02UL << RCC_PLLCKSELR_DIVM2_Pos) /*!< 0x00002000 */\n#define RCC_PLLCKSELR_DIVM2_2                  (0x04UL << RCC_PLLCKSELR_DIVM2_Pos) /*!< 0x00004000 */\n#define RCC_PLLCKSELR_DIVM2_3                  (0x08UL << RCC_PLLCKSELR_DIVM2_Pos) /*!< 0x00008000 */\n#define RCC_PLLCKSELR_DIVM2_4                  (0x10UL << RCC_PLLCKSELR_DIVM2_Pos) /*!< 0x00010000 */\n#define RCC_PLLCKSELR_DIVM2_5                  (0x20UL << RCC_PLLCKSELR_DIVM2_Pos) /*!< 0x00020000 */\n\n#define RCC_PLLCKSELR_DIVM3_Pos                (20U)\n#define RCC_PLLCKSELR_DIVM3_Msk                (0x3FUL << RCC_PLLCKSELR_DIVM3_Pos) /*!< 0x03F00000 */\n#define RCC_PLLCKSELR_DIVM3                    RCC_PLLCKSELR_DIVM3_Msk\n#define RCC_PLLCKSELR_DIVM3_0                  (0x01UL << RCC_PLLCKSELR_DIVM3_Pos) /*!< 0x00100000 */\n#define RCC_PLLCKSELR_DIVM3_1                  (0x02UL << RCC_PLLCKSELR_DIVM3_Pos) /*!< 0x00200000 */\n#define RCC_PLLCKSELR_DIVM3_2                  (0x04UL << RCC_PLLCKSELR_DIVM3_Pos) /*!< 0x00400000 */\n#define RCC_PLLCKSELR_DIVM3_3                  (0x08UL << RCC_PLLCKSELR_DIVM3_Pos) /*!< 0x00800000 */\n#define RCC_PLLCKSELR_DIVM3_4                  (0x10UL << RCC_PLLCKSELR_DIVM3_Pos) /*!< 0x01000000 */\n#define RCC_PLLCKSELR_DIVM3_5                  (0x20UL << RCC_PLLCKSELR_DIVM3_Pos) /*!< 0x02000000 */\n\n/********************  Bit definition for RCC_PLLCFGR register  ***************/\n\n#define RCC_PLLCFGR_PLL1FRACEN_Pos             (0U)\n#define RCC_PLLCFGR_PLL1FRACEN_Msk             (0x1UL << RCC_PLLCFGR_PLL1FRACEN_Pos) /*!< 0x00000001 */\n#define RCC_PLLCFGR_PLL1FRACEN                 RCC_PLLCFGR_PLL1FRACEN_Msk\n#define RCC_PLLCFGR_PLL1VCOSEL_Pos             (1U)\n#define RCC_PLLCFGR_PLL1VCOSEL_Msk             (0x1UL << RCC_PLLCFGR_PLL1VCOSEL_Pos) /*!< 0x00000002 */\n#define RCC_PLLCFGR_PLL1VCOSEL                 RCC_PLLCFGR_PLL1VCOSEL_Msk\n#define RCC_PLLCFGR_PLL1RGE_Pos                (2U)\n#define RCC_PLLCFGR_PLL1RGE_Msk                (0x3UL << RCC_PLLCFGR_PLL1RGE_Pos) /*!< 0x0000000C */\n#define RCC_PLLCFGR_PLL1RGE                    RCC_PLLCFGR_PLL1RGE_Msk\n#define RCC_PLLCFGR_PLL1RGE_0                  (0x0UL << RCC_PLLCFGR_PLL1RGE_Pos) /*!< 0x00000000 */\n#define RCC_PLLCFGR_PLL1RGE_1                  (0x1UL << RCC_PLLCFGR_PLL1RGE_Pos) /*!< 0x00000004 */\n#define RCC_PLLCFGR_PLL1RGE_2                  (0x2UL << RCC_PLLCFGR_PLL1RGE_Pos) /*!< 0x00000008 */\n#define RCC_PLLCFGR_PLL1RGE_3                  (0x3UL << RCC_PLLCFGR_PLL1RGE_Pos) /*!< 0x0000000C */\n\n#define RCC_PLLCFGR_PLL2FRACEN_Pos             (4U)\n#define RCC_PLLCFGR_PLL2FRACEN_Msk             (0x1UL << RCC_PLLCFGR_PLL2FRACEN_Pos) /*!< 0x00000010 */\n#define RCC_PLLCFGR_PLL2FRACEN                 RCC_PLLCFGR_PLL2FRACEN_Msk\n#define RCC_PLLCFGR_PLL2VCOSEL_Pos             (5U)\n#define RCC_PLLCFGR_PLL2VCOSEL_Msk             (0x1UL << RCC_PLLCFGR_PLL2VCOSEL_Pos) /*!< 0x00000020 */\n#define RCC_PLLCFGR_PLL2VCOSEL                 RCC_PLLCFGR_PLL2VCOSEL_Msk\n#define RCC_PLLCFGR_PLL2RGE_Pos                (6U)\n#define RCC_PLLCFGR_PLL2RGE_Msk                (0x3UL << RCC_PLLCFGR_PLL2RGE_Pos) /*!< 0x000000C0 */\n#define RCC_PLLCFGR_PLL2RGE                    RCC_PLLCFGR_PLL2RGE_Msk\n#define RCC_PLLCFGR_PLL2RGE_0                  (0x0UL << RCC_PLLCFGR_PLL2RGE_Pos) /*!< 0x00000000 */\n#define RCC_PLLCFGR_PLL2RGE_1                  (0x1UL << RCC_PLLCFGR_PLL2RGE_Pos) /*!< 0x00000040 */\n#define RCC_PLLCFGR_PLL2RGE_2                  (0x2UL << RCC_PLLCFGR_PLL2RGE_Pos) /*!< 0x00000080 */\n#define RCC_PLLCFGR_PLL2RGE_3                  (0x3UL << RCC_PLLCFGR_PLL2RGE_Pos) /*!< 0x000000C0 */\n\n#define RCC_PLLCFGR_PLL3FRACEN_Pos             (8U)\n#define RCC_PLLCFGR_PLL3FRACEN_Msk             (0x1UL << RCC_PLLCFGR_PLL3FRACEN_Pos) /*!< 0x00000100 */\n#define RCC_PLLCFGR_PLL3FRACEN                 RCC_PLLCFGR_PLL3FRACEN_Msk\n#define RCC_PLLCFGR_PLL3VCOSEL_Pos             (9U)\n#define RCC_PLLCFGR_PLL3VCOSEL_Msk             (0x1UL << RCC_PLLCFGR_PLL3VCOSEL_Pos) /*!< 0x00000200 */\n#define RCC_PLLCFGR_PLL3VCOSEL                 RCC_PLLCFGR_PLL3VCOSEL_Msk\n#define RCC_PLLCFGR_PLL3RGE_Pos                (10U)\n#define RCC_PLLCFGR_PLL3RGE_Msk                (0x3UL << RCC_PLLCFGR_PLL3RGE_Pos) /*!< 0x00000C00 */\n#define RCC_PLLCFGR_PLL3RGE                    RCC_PLLCFGR_PLL3RGE_Msk\n#define RCC_PLLCFGR_PLL3RGE_0                  (0x0UL << RCC_PLLCFGR_PLL3RGE_Pos) /*!< 0x00000000 */\n#define RCC_PLLCFGR_PLL3RGE_1                  (0x1UL << RCC_PLLCFGR_PLL3RGE_Pos) /*!< 0x00000400 */\n#define RCC_PLLCFGR_PLL3RGE_2                  (0x2UL << RCC_PLLCFGR_PLL3RGE_Pos) /*!< 0x00000800 */\n#define RCC_PLLCFGR_PLL3RGE_3                  (0x3UL << RCC_PLLCFGR_PLL3RGE_Pos) /*!< 0x00000C00 */\n\n#define RCC_PLLCFGR_DIVP1EN_Pos                (16U)\n#define RCC_PLLCFGR_DIVP1EN_Msk                (0x1UL << RCC_PLLCFGR_DIVP1EN_Pos) /*!< 0x00010000 */\n#define RCC_PLLCFGR_DIVP1EN                    RCC_PLLCFGR_DIVP1EN_Msk\n#define RCC_PLLCFGR_DIVQ1EN_Pos                (17U)\n#define RCC_PLLCFGR_DIVQ1EN_Msk                (0x1UL << RCC_PLLCFGR_DIVQ1EN_Pos) /*!< 0x00020000 */\n#define RCC_PLLCFGR_DIVQ1EN                    RCC_PLLCFGR_DIVQ1EN_Msk\n#define RCC_PLLCFGR_DIVR1EN_Pos                (18U)\n#define RCC_PLLCFGR_DIVR1EN_Msk                (0x1UL << RCC_PLLCFGR_DIVR1EN_Pos) /*!< 0x00040000 */\n#define RCC_PLLCFGR_DIVR1EN                    RCC_PLLCFGR_DIVR1EN_Msk\n\n#define RCC_PLLCFGR_DIVP2EN_Pos                (19U)\n#define RCC_PLLCFGR_DIVP2EN_Msk                (0x1UL << RCC_PLLCFGR_DIVP2EN_Pos) /*!< 0x00080000 */\n#define RCC_PLLCFGR_DIVP2EN                    RCC_PLLCFGR_DIVP2EN_Msk\n#define RCC_PLLCFGR_DIVQ2EN_Pos                (20U)\n#define RCC_PLLCFGR_DIVQ2EN_Msk                (0x1UL << RCC_PLLCFGR_DIVQ2EN_Pos) /*!< 0x00100000 */\n#define RCC_PLLCFGR_DIVQ2EN                    RCC_PLLCFGR_DIVQ2EN_Msk\n#define RCC_PLLCFGR_DIVR2EN_Pos                (21U)\n#define RCC_PLLCFGR_DIVR2EN_Msk                (0x1UL << RCC_PLLCFGR_DIVR2EN_Pos) /*!< 0x00200000 */\n#define RCC_PLLCFGR_DIVR2EN                    RCC_PLLCFGR_DIVR2EN_Msk\n\n#define RCC_PLLCFGR_DIVP3EN_Pos                (22U)\n#define RCC_PLLCFGR_DIVP3EN_Msk                (0x1UL << RCC_PLLCFGR_DIVP3EN_Pos) /*!< 0x00400000 */\n#define RCC_PLLCFGR_DIVP3EN                    RCC_PLLCFGR_DIVP3EN_Msk\n#define RCC_PLLCFGR_DIVQ3EN_Pos                (23U)\n#define RCC_PLLCFGR_DIVQ3EN_Msk                (0x1UL << RCC_PLLCFGR_DIVQ3EN_Pos) /*!< 0x00800000 */\n#define RCC_PLLCFGR_DIVQ3EN                    RCC_PLLCFGR_DIVQ3EN_Msk\n#define RCC_PLLCFGR_DIVR3EN_Pos                (24U)\n#define RCC_PLLCFGR_DIVR3EN_Msk                (0x1UL << RCC_PLLCFGR_DIVR3EN_Pos) /*!< 0x01000000 */\n#define RCC_PLLCFGR_DIVR3EN                    RCC_PLLCFGR_DIVR3EN_Msk\n\n\n/********************  Bit definition for RCC_PLL1DIVR register  ***************/\n#define RCC_PLL1DIVR_N1_Pos                    (0U)\n#define RCC_PLL1DIVR_N1_Msk                    (0x1FFUL << RCC_PLL1DIVR_N1_Pos) /*!< 0x000001FF */\n#define RCC_PLL1DIVR_N1                        RCC_PLL1DIVR_N1_Msk\n#define RCC_PLL1DIVR_P1_Pos                    (9U)\n#define RCC_PLL1DIVR_P1_Msk                    (0x7FUL << RCC_PLL1DIVR_P1_Pos) /*!< 0x0000FE00 */\n#define RCC_PLL1DIVR_P1                        RCC_PLL1DIVR_P1_Msk\n#define RCC_PLL1DIVR_Q1_Pos                    (16U)\n#define RCC_PLL1DIVR_Q1_Msk                    (0x7FUL << RCC_PLL1DIVR_Q1_Pos) /*!< 0x007F0000 */\n#define RCC_PLL1DIVR_Q1                        RCC_PLL1DIVR_Q1_Msk\n#define RCC_PLL1DIVR_R1_Pos                    (24U)\n#define RCC_PLL1DIVR_R1_Msk                    (0x7FUL << RCC_PLL1DIVR_R1_Pos) /*!< 0x7F000000 */\n#define RCC_PLL1DIVR_R1                        RCC_PLL1DIVR_R1_Msk\n\n/********************  Bit definition for RCC_PLL1FRACR register  ***************/\n#define RCC_PLL1FRACR_FRACN1_Pos               (3U)\n#define RCC_PLL1FRACR_FRACN1_Msk               (0x1FFFUL << RCC_PLL1FRACR_FRACN1_Pos) /*!< 0x0000FFF8 */\n#define RCC_PLL1FRACR_FRACN1                   RCC_PLL1FRACR_FRACN1_Msk\n\n/********************  Bit definition for RCC_PLL2DIVR register  ***************/\n#define RCC_PLL2DIVR_N2_Pos                    (0U)\n#define RCC_PLL2DIVR_N2_Msk                    (0x1FFUL << RCC_PLL2DIVR_N2_Pos) /*!< 0x000001FF */\n#define RCC_PLL2DIVR_N2                        RCC_PLL2DIVR_N2_Msk\n#define RCC_PLL2DIVR_P2_Pos                    (9U)\n#define RCC_PLL2DIVR_P2_Msk                    (0x7FUL << RCC_PLL2DIVR_P2_Pos) /*!< 0x0000FE00 */\n#define RCC_PLL2DIVR_P2                        RCC_PLL2DIVR_P2_Msk\n#define RCC_PLL2DIVR_Q2_Pos                    (16U)\n#define RCC_PLL2DIVR_Q2_Msk                    (0x7FUL << RCC_PLL2DIVR_Q2_Pos) /*!< 0x007F0000 */\n#define RCC_PLL2DIVR_Q2                        RCC_PLL2DIVR_Q2_Msk\n#define RCC_PLL2DIVR_R2_Pos                    (24U)\n#define RCC_PLL2DIVR_R2_Msk                    (0x7FUL << RCC_PLL2DIVR_R2_Pos) /*!< 0x7F000000 */\n#define RCC_PLL2DIVR_R2                        RCC_PLL2DIVR_R2_Msk\n\n/********************  Bit definition for RCC_PLL2FRACR register  ***************/\n#define RCC_PLL2FRACR_FRACN2_Pos               (3U)\n#define RCC_PLL2FRACR_FRACN2_Msk               (0x1FFFUL << RCC_PLL2FRACR_FRACN2_Pos) /*!< 0x0000FFF8 */\n#define RCC_PLL2FRACR_FRACN2                   RCC_PLL2FRACR_FRACN2_Msk\n\n/********************  Bit definition for RCC_PLL3DIVR register  ***************/\n#define RCC_PLL3DIVR_N3_Pos                    (0U)\n#define RCC_PLL3DIVR_N3_Msk                    (0x1FFUL << RCC_PLL3DIVR_N3_Pos) /*!< 0x000001FF */\n#define RCC_PLL3DIVR_N3                        RCC_PLL3DIVR_N3_Msk\n#define RCC_PLL3DIVR_P3_Pos                    (9U)\n#define RCC_PLL3DIVR_P3_Msk                    (0x7FUL << RCC_PLL3DIVR_P3_Pos) /*!< 0x0000FE00 */\n#define RCC_PLL3DIVR_P3                        RCC_PLL3DIVR_P3_Msk\n#define RCC_PLL3DIVR_Q3_Pos                    (16U)\n#define RCC_PLL3DIVR_Q3_Msk                    (0x7FUL << RCC_PLL3DIVR_Q3_Pos) /*!< 0x007F0000 */\n#define RCC_PLL3DIVR_Q3                        RCC_PLL3DIVR_Q3_Msk\n#define RCC_PLL3DIVR_R3_Pos                    (24U)\n#define RCC_PLL3DIVR_R3_Msk                    (0x7FUL << RCC_PLL3DIVR_R3_Pos) /*!< 0x7F000000 */\n#define RCC_PLL3DIVR_R3                        RCC_PLL3DIVR_R3_Msk\n\n/********************  Bit definition for RCC_PLL3FRACR register  ***************/\n#define RCC_PLL3FRACR_FRACN3_Pos               (3U)\n#define RCC_PLL3FRACR_FRACN3_Msk               (0x1FFFUL << RCC_PLL3FRACR_FRACN3_Pos) /*!< 0x0000FFF8 */\n#define RCC_PLL3FRACR_FRACN3                   RCC_PLL3FRACR_FRACN3_Msk\n\n/********************  Bit definition for RCC_D1CCIPR register  ***************/\n#define RCC_D1CCIPR_FMCSEL_Pos                 (0U)\n#define RCC_D1CCIPR_FMCSEL_Msk                 (0x3UL << RCC_D1CCIPR_FMCSEL_Pos) /*!< 0x00000003 */\n#define RCC_D1CCIPR_FMCSEL                     RCC_D1CCIPR_FMCSEL_Msk\n#define RCC_D1CCIPR_FMCSEL_0                   (0x1UL << RCC_D1CCIPR_FMCSEL_Pos) /*!< 0x00000001 */\n#define RCC_D1CCIPR_FMCSEL_1                   (0x2UL << RCC_D1CCIPR_FMCSEL_Pos) /*!< 0x00000002 */\n#define RCC_D1CCIPR_QSPISEL_Pos                (4U)\n#define RCC_D1CCIPR_QSPISEL_Msk                (0x3UL << RCC_D1CCIPR_QSPISEL_Pos) /*!< 0x00000030 */\n#define RCC_D1CCIPR_QSPISEL                    RCC_D1CCIPR_QSPISEL_Msk\n#define RCC_D1CCIPR_QSPISEL_0                  (0x1UL << RCC_D1CCIPR_QSPISEL_Pos) /*!< 0x00000010 */\n#define RCC_D1CCIPR_QSPISEL_1                  (0x2UL << RCC_D1CCIPR_QSPISEL_Pos) /*!< 0x00000020 */\n#define RCC_D1CCIPR_SDMMCSEL_Pos               (16U)\n#define RCC_D1CCIPR_SDMMCSEL_Msk               (0x1UL << RCC_D1CCIPR_SDMMCSEL_Pos) /*!< 0x00010000 */\n#define RCC_D1CCIPR_SDMMCSEL                   RCC_D1CCIPR_SDMMCSEL_Msk\n#define RCC_D1CCIPR_CKPERSEL_Pos               (28U)\n#define RCC_D1CCIPR_CKPERSEL_Msk               (0x3UL << RCC_D1CCIPR_CKPERSEL_Pos) /*!< 0x30000000 */\n#define RCC_D1CCIPR_CKPERSEL                   RCC_D1CCIPR_CKPERSEL_Msk\n#define RCC_D1CCIPR_CKPERSEL_0                 (0x1UL << RCC_D1CCIPR_CKPERSEL_Pos) /*!< 0x10000000 */\n#define RCC_D1CCIPR_CKPERSEL_1                 (0x2UL << RCC_D1CCIPR_CKPERSEL_Pos) /*!< 0x20000000 */\n\n/********************  Bit definition for RCC_D2CCIP1R register  ***************/\n#define RCC_D2CCIP1R_SAI1SEL_Pos               (0U)\n#define RCC_D2CCIP1R_SAI1SEL_Msk               (0x7UL << RCC_D2CCIP1R_SAI1SEL_Pos) /*!< 0x00000007 */\n#define RCC_D2CCIP1R_SAI1SEL                   RCC_D2CCIP1R_SAI1SEL_Msk\n#define RCC_D2CCIP1R_SAI1SEL_0                 (0x1UL << RCC_D2CCIP1R_SAI1SEL_Pos) /*!< 0x00000001 */\n#define RCC_D2CCIP1R_SAI1SEL_1                 (0x2UL << RCC_D2CCIP1R_SAI1SEL_Pos) /*!< 0x00000002 */\n#define RCC_D2CCIP1R_SAI1SEL_2                 (0x4UL << RCC_D2CCIP1R_SAI1SEL_Pos) /*!< 0x00000004 */\n\n#define RCC_D2CCIP1R_SAI23SEL_Pos              (6U)\n#define RCC_D2CCIP1R_SAI23SEL_Msk              (0x7UL << RCC_D2CCIP1R_SAI23SEL_Pos) /*!< 0x000001C0 */\n#define RCC_D2CCIP1R_SAI23SEL                  RCC_D2CCIP1R_SAI23SEL_Msk\n#define RCC_D2CCIP1R_SAI23SEL_0                (0x1UL << RCC_D2CCIP1R_SAI23SEL_Pos) /*!< 0x00000040 */\n#define RCC_D2CCIP1R_SAI23SEL_1                (0x2UL << RCC_D2CCIP1R_SAI23SEL_Pos) /*!< 0x00000080 */\n#define RCC_D2CCIP1R_SAI23SEL_2                (0x4UL << RCC_D2CCIP1R_SAI23SEL_Pos) /*!< 0x00000100 */\n\n#define RCC_D2CCIP1R_SPI123SEL_Pos             (12U)\n#define RCC_D2CCIP1R_SPI123SEL_Msk             (0x7UL << RCC_D2CCIP1R_SPI123SEL_Pos) /*!< 0x00007000 */\n#define RCC_D2CCIP1R_SPI123SEL                 RCC_D2CCIP1R_SPI123SEL_Msk\n#define RCC_D2CCIP1R_SPI123SEL_0               (0x1UL << RCC_D2CCIP1R_SPI123SEL_Pos) /*!< 0x00001000 */\n#define RCC_D2CCIP1R_SPI123SEL_1               (0x2UL << RCC_D2CCIP1R_SPI123SEL_Pos) /*!< 0x00002000 */\n#define RCC_D2CCIP1R_SPI123SEL_2               (0x4UL << RCC_D2CCIP1R_SPI123SEL_Pos) /*!< 0x00004000 */\n\n#define RCC_D2CCIP1R_SPI45SEL_Pos              (16U)\n#define RCC_D2CCIP1R_SPI45SEL_Msk              (0x7UL << RCC_D2CCIP1R_SPI45SEL_Pos) /*!< 0x00070000 */\n#define RCC_D2CCIP1R_SPI45SEL                  RCC_D2CCIP1R_SPI45SEL_Msk\n#define RCC_D2CCIP1R_SPI45SEL_0                (0x1UL << RCC_D2CCIP1R_SPI45SEL_Pos) /*!< 0x00010000 */\n#define RCC_D2CCIP1R_SPI45SEL_1                (0x2UL << RCC_D2CCIP1R_SPI45SEL_Pos) /*!< 0x00020000 */\n#define RCC_D2CCIP1R_SPI45SEL_2                (0x4UL << RCC_D2CCIP1R_SPI45SEL_Pos) /*!< 0x00040000 */\n\n#define RCC_D2CCIP1R_SPDIFSEL_Pos              (20U)\n#define RCC_D2CCIP1R_SPDIFSEL_Msk              (0x3UL << RCC_D2CCIP1R_SPDIFSEL_Pos) /*!< 0x00300000 */\n#define RCC_D2CCIP1R_SPDIFSEL                  RCC_D2CCIP1R_SPDIFSEL_Msk\n#define RCC_D2CCIP1R_SPDIFSEL_0                (0x1UL << RCC_D2CCIP1R_SPDIFSEL_Pos) /*!< 0x00100000 */\n#define RCC_D2CCIP1R_SPDIFSEL_1                (0x2UL << RCC_D2CCIP1R_SPDIFSEL_Pos) /*!< 0x00200000 */\n\n#define RCC_D2CCIP1R_DFSDM1SEL_Pos             (24U)\n#define RCC_D2CCIP1R_DFSDM1SEL_Msk             (0x1UL << RCC_D2CCIP1R_DFSDM1SEL_Pos) /*!< 0x01000000 */\n#define RCC_D2CCIP1R_DFSDM1SEL                 RCC_D2CCIP1R_DFSDM1SEL_Msk\n\n#define RCC_D2CCIP1R_FDCANSEL_Pos              (28U)\n#define RCC_D2CCIP1R_FDCANSEL_Msk              (0x3UL << RCC_D2CCIP1R_FDCANSEL_Pos) /*!< 0x30000000 */\n#define RCC_D2CCIP1R_FDCANSEL                  RCC_D2CCIP1R_FDCANSEL_Msk\n#define RCC_D2CCIP1R_FDCANSEL_0                (0x1UL << RCC_D2CCIP1R_FDCANSEL_Pos) /*!< 0x10000000 */\n#define RCC_D2CCIP1R_FDCANSEL_1                (0x2UL << RCC_D2CCIP1R_FDCANSEL_Pos) /*!< 0x20000000 */\n\n#define RCC_D2CCIP1R_SWPSEL_Pos                (31U)\n#define RCC_D2CCIP1R_SWPSEL_Msk                (0x1UL << RCC_D2CCIP1R_SWPSEL_Pos) /*!< 0x80000000 */\n#define RCC_D2CCIP1R_SWPSEL                    RCC_D2CCIP1R_SWPSEL_Msk\n\n/********************  Bit definition for RCC_D2CCIP2R register  ***************/\n#define RCC_D2CCIP2R_USART16SEL_Pos            (3U)\n#define RCC_D2CCIP2R_USART16SEL_Msk            (0x7UL << RCC_D2CCIP2R_USART16SEL_Pos) /*!< 0x00000038 */\n#define RCC_D2CCIP2R_USART16SEL                RCC_D2CCIP2R_USART16SEL_Msk\n#define RCC_D2CCIP2R_USART16SEL_0              (0x1UL << RCC_D2CCIP2R_USART16SEL_Pos) /*!< 0x00000008 */\n#define RCC_D2CCIP2R_USART16SEL_1              (0x2UL << RCC_D2CCIP2R_USART16SEL_Pos) /*!< 0x00000010 */\n#define RCC_D2CCIP2R_USART16SEL_2              (0x4UL << RCC_D2CCIP2R_USART16SEL_Pos) /*!< 0x00000020 */\n\n#define RCC_D2CCIP2R_USART28SEL_Pos            (0U)\n#define RCC_D2CCIP2R_USART28SEL_Msk            (0x7UL << RCC_D2CCIP2R_USART28SEL_Pos) /*!< 0x00000007 */\n#define RCC_D2CCIP2R_USART28SEL                RCC_D2CCIP2R_USART28SEL_Msk\n#define RCC_D2CCIP2R_USART28SEL_0              (0x1UL << RCC_D2CCIP2R_USART28SEL_Pos) /*!< 0x00000001 */\n#define RCC_D2CCIP2R_USART28SEL_1              (0x2UL << RCC_D2CCIP2R_USART28SEL_Pos) /*!< 0x00000002 */\n#define RCC_D2CCIP2R_USART28SEL_2              (0x4UL << RCC_D2CCIP2R_USART28SEL_Pos) /*!< 0x00000004 */\n\n#define RCC_D2CCIP2R_RNGSEL_Pos                (8U)\n#define RCC_D2CCIP2R_RNGSEL_Msk                (0x3UL << RCC_D2CCIP2R_RNGSEL_Pos) /*!< 0x00000300 */\n#define RCC_D2CCIP2R_RNGSEL                    RCC_D2CCIP2R_RNGSEL_Msk\n#define RCC_D2CCIP2R_RNGSEL_0                  (0x1UL << RCC_D2CCIP2R_RNGSEL_Pos) /*!< 0x00000100 */\n#define RCC_D2CCIP2R_RNGSEL_1                  (0x2UL << RCC_D2CCIP2R_RNGSEL_Pos) /*!< 0x00000200 */\n\n#define RCC_D2CCIP2R_I2C123SEL_Pos             (12U)\n#define RCC_D2CCIP2R_I2C123SEL_Msk             (0x3UL << RCC_D2CCIP2R_I2C123SEL_Pos) /*!< 0x00003000 */\n#define RCC_D2CCIP2R_I2C123SEL                 RCC_D2CCIP2R_I2C123SEL_Msk\n#define RCC_D2CCIP2R_I2C123SEL_0               (0x1UL << RCC_D2CCIP2R_I2C123SEL_Pos) /*!< 0x00001000 */\n#define RCC_D2CCIP2R_I2C123SEL_1               (0x2UL << RCC_D2CCIP2R_I2C123SEL_Pos) /*!< 0x00002000 */\n\n#define RCC_D2CCIP2R_USBSEL_Pos                (20U)\n#define RCC_D2CCIP2R_USBSEL_Msk                (0x3UL << RCC_D2CCIP2R_USBSEL_Pos) /*!< 0x00300000 */\n#define RCC_D2CCIP2R_USBSEL                    RCC_D2CCIP2R_USBSEL_Msk\n#define RCC_D2CCIP2R_USBSEL_0                  (0x1UL << RCC_D2CCIP2R_USBSEL_Pos) /*!< 0x00100000 */\n#define RCC_D2CCIP2R_USBSEL_1                  (0x2UL << RCC_D2CCIP2R_USBSEL_Pos) /*!< 0x00200000 */\n\n#define RCC_D2CCIP2R_CECSEL_Pos                (22U)\n#define RCC_D2CCIP2R_CECSEL_Msk                (0x3UL << RCC_D2CCIP2R_CECSEL_Pos) /*!< 0x00C00000 */\n#define RCC_D2CCIP2R_CECSEL                    RCC_D2CCIP2R_CECSEL_Msk\n#define RCC_D2CCIP2R_CECSEL_0                  (0x1UL << RCC_D2CCIP2R_CECSEL_Pos) /*!< 0x00400000 */\n#define RCC_D2CCIP2R_CECSEL_1                  (0x2UL << RCC_D2CCIP2R_CECSEL_Pos) /*!< 0x00800000 */\n\n#define RCC_D2CCIP2R_LPTIM1SEL_Pos             (28U)\n#define RCC_D2CCIP2R_LPTIM1SEL_Msk             (0x7UL << RCC_D2CCIP2R_LPTIM1SEL_Pos) /*!< 0x70000000 */\n#define RCC_D2CCIP2R_LPTIM1SEL                 RCC_D2CCIP2R_LPTIM1SEL_Msk\n#define RCC_D2CCIP2R_LPTIM1SEL_0               (0x1UL << RCC_D2CCIP2R_LPTIM1SEL_Pos) /*!< 0x10000000 */\n#define RCC_D2CCIP2R_LPTIM1SEL_1               (0x2UL << RCC_D2CCIP2R_LPTIM1SEL_Pos) /*!< 0x20000000 */\n#define RCC_D2CCIP2R_LPTIM1SEL_2               (0x4UL << RCC_D2CCIP2R_LPTIM1SEL_Pos) /*!< 0x40000000 */\n\n/********************  Bit definition for RCC_D3CCIPR register  ***************/\n#define RCC_D3CCIPR_LPUART1SEL_Pos             (0U)\n#define RCC_D3CCIPR_LPUART1SEL_Msk             (0x7UL << RCC_D3CCIPR_LPUART1SEL_Pos) /*!< 0x00000007 */\n#define RCC_D3CCIPR_LPUART1SEL                 RCC_D3CCIPR_LPUART1SEL_Msk\n#define RCC_D3CCIPR_LPUART1SEL_0               (0x1UL << RCC_D3CCIPR_LPUART1SEL_Pos) /*!< 0x00000001 */\n#define RCC_D3CCIPR_LPUART1SEL_1               (0x2UL << RCC_D3CCIPR_LPUART1SEL_Pos) /*!< 0x00000002 */\n#define RCC_D3CCIPR_LPUART1SEL_2               (0x4UL << RCC_D3CCIPR_LPUART1SEL_Pos) /*!< 0x00000004 */\n\n#define RCC_D3CCIPR_I2C4SEL_Pos                (8U)\n#define RCC_D3CCIPR_I2C4SEL_Msk                (0x3UL << RCC_D3CCIPR_I2C4SEL_Pos) /*!< 0x00000300 */\n#define RCC_D3CCIPR_I2C4SEL                    RCC_D3CCIPR_I2C4SEL_Msk\n#define RCC_D3CCIPR_I2C4SEL_0                  (0x1UL << RCC_D3CCIPR_I2C4SEL_Pos) /*!< 0x00000100 */\n#define RCC_D3CCIPR_I2C4SEL_1                  (0x2UL << RCC_D3CCIPR_I2C4SEL_Pos) /*!< 0x00000200 */\n\n#define RCC_D3CCIPR_LPTIM2SEL_Pos              (10U)\n#define RCC_D3CCIPR_LPTIM2SEL_Msk              (0x7UL << RCC_D3CCIPR_LPTIM2SEL_Pos) /*!< 0x00001C00 */\n#define RCC_D3CCIPR_LPTIM2SEL                  RCC_D3CCIPR_LPTIM2SEL_Msk\n#define RCC_D3CCIPR_LPTIM2SEL_0                (0x1UL << RCC_D3CCIPR_LPTIM2SEL_Pos) /*!< 0x00000400 */\n#define RCC_D3CCIPR_LPTIM2SEL_1                (0x2UL << RCC_D3CCIPR_LPTIM2SEL_Pos) /*!< 0x00000800 */\n#define RCC_D3CCIPR_LPTIM2SEL_2                (0x4UL << RCC_D3CCIPR_LPTIM2SEL_Pos) /*!< 0x00001000 */\n\n#define RCC_D3CCIPR_LPTIM345SEL_Pos            (13U)\n#define RCC_D3CCIPR_LPTIM345SEL_Msk            (0x7UL << RCC_D3CCIPR_LPTIM345SEL_Pos) /*!< 0x0000E000 */\n#define RCC_D3CCIPR_LPTIM345SEL                RCC_D3CCIPR_LPTIM345SEL_Msk\n#define RCC_D3CCIPR_LPTIM345SEL_0              (0x1UL << RCC_D3CCIPR_LPTIM345SEL_Pos) /*!< 0x00002000 */\n#define RCC_D3CCIPR_LPTIM345SEL_1              (0x2UL << RCC_D3CCIPR_LPTIM345SEL_Pos) /*!< 0x00004000 */\n#define RCC_D3CCIPR_LPTIM345SEL_2              (0x4UL << RCC_D3CCIPR_LPTIM345SEL_Pos) /*!< 0x00008000 */\n\n#define RCC_D3CCIPR_SAI4ASEL_Pos               (21U)\n#define RCC_D3CCIPR_SAI4ASEL_Msk               (0x7UL << RCC_D3CCIPR_SAI4ASEL_Pos) /*!< 0x00E00000 */\n#define RCC_D3CCIPR_SAI4ASEL                   RCC_D3CCIPR_SAI4ASEL_Msk\n#define RCC_D3CCIPR_SAI4ASEL_0                 (0x1UL << RCC_D3CCIPR_SAI4ASEL_Pos) /*!< 0x00200000 */\n#define RCC_D3CCIPR_SAI4ASEL_1                 (0x2UL << RCC_D3CCIPR_SAI4ASEL_Pos) /*!< 0x00400000 */\n#define RCC_D3CCIPR_SAI4ASEL_2                 (0x4UL << RCC_D3CCIPR_SAI4ASEL_Pos) /*!< 0x00800000 */\n\n#define RCC_D3CCIPR_SAI4BSEL_Pos               (24U)\n#define RCC_D3CCIPR_SAI4BSEL_Msk               (0x7UL << RCC_D3CCIPR_SAI4BSEL_Pos) /*!< 0x07000000 */\n#define RCC_D3CCIPR_SAI4BSEL                   RCC_D3CCIPR_SAI4BSEL_Msk\n#define RCC_D3CCIPR_SAI4BSEL_0                 (0x1UL << RCC_D3CCIPR_SAI4BSEL_Pos) /*!< 0x01000000 */\n#define RCC_D3CCIPR_SAI4BSEL_1                 (0x2UL << RCC_D3CCIPR_SAI4BSEL_Pos) /*!< 0x02000000 */\n#define RCC_D3CCIPR_SAI4BSEL_2                 (0x4UL << RCC_D3CCIPR_SAI4BSEL_Pos) /*!< 0x04000000 */\n\n#define RCC_D3CCIPR_ADCSEL_Pos                 (16U)\n#define RCC_D3CCIPR_ADCSEL_Msk                 (0x3UL << RCC_D3CCIPR_ADCSEL_Pos) /*!< 0x00030000 */\n#define RCC_D3CCIPR_ADCSEL                     RCC_D3CCIPR_ADCSEL_Msk\n#define RCC_D3CCIPR_ADCSEL_0                   (0x1UL << RCC_D3CCIPR_ADCSEL_Pos) /*!< 0x00010000 */\n#define RCC_D3CCIPR_ADCSEL_1                   (0x2UL << RCC_D3CCIPR_ADCSEL_Pos) /*!< 0x00020000 */\n\n#define RCC_D3CCIPR_SPI6SEL_Pos                (28U)\n#define RCC_D3CCIPR_SPI6SEL_Msk                (0x7UL << RCC_D3CCIPR_SPI6SEL_Pos) /*!< 0x70000000 */\n#define RCC_D3CCIPR_SPI6SEL                    RCC_D3CCIPR_SPI6SEL_Msk\n#define RCC_D3CCIPR_SPI6SEL_0                  (0x1UL << RCC_D3CCIPR_SPI6SEL_Pos) /*!< 0x10000000 */\n#define RCC_D3CCIPR_SPI6SEL_1                  (0x2UL << RCC_D3CCIPR_SPI6SEL_Pos) /*!< 0x20000000 */\n#define RCC_D3CCIPR_SPI6SEL_2                  (0x4UL << RCC_D3CCIPR_SPI6SEL_Pos) /*!< 0x40000000 */\n/********************  Bit definition for RCC_CIER register  ******************/\n#define RCC_CIER_LSIRDYIE_Pos                  (0U)\n#define RCC_CIER_LSIRDYIE_Msk                  (0x1UL << RCC_CIER_LSIRDYIE_Pos) /*!< 0x00000001 */\n#define RCC_CIER_LSIRDYIE                      RCC_CIER_LSIRDYIE_Msk\n#define RCC_CIER_LSERDYIE_Pos                  (1U)\n#define RCC_CIER_LSERDYIE_Msk                  (0x1UL << RCC_CIER_LSERDYIE_Pos) /*!< 0x00000002 */\n#define RCC_CIER_LSERDYIE                      RCC_CIER_LSERDYIE_Msk\n#define RCC_CIER_HSIRDYIE_Pos                  (2U)\n#define RCC_CIER_HSIRDYIE_Msk                  (0x1UL << RCC_CIER_HSIRDYIE_Pos) /*!< 0x00000004 */\n#define RCC_CIER_HSIRDYIE                      RCC_CIER_HSIRDYIE_Msk\n#define RCC_CIER_HSERDYIE_Pos                  (3U)\n#define RCC_CIER_HSERDYIE_Msk                  (0x1UL << RCC_CIER_HSERDYIE_Pos) /*!< 0x00000008 */\n#define RCC_CIER_HSERDYIE                      RCC_CIER_HSERDYIE_Msk\n#define RCC_CIER_CSIRDYIE_Pos                  (4U)\n#define RCC_CIER_CSIRDYIE_Msk                  (0x1UL << RCC_CIER_CSIRDYIE_Pos) /*!< 0x00000010 */\n#define RCC_CIER_CSIRDYIE                      RCC_CIER_CSIRDYIE_Msk\n#define RCC_CIER_HSI48RDYIE_Pos                (5U)\n#define RCC_CIER_HSI48RDYIE_Msk                (0x1UL << RCC_CIER_HSI48RDYIE_Pos) /*!< 0x00000020 */\n#define RCC_CIER_HSI48RDYIE                    RCC_CIER_HSI48RDYIE_Msk\n#define RCC_CIER_PLL1RDYIE_Pos                 (6U)\n#define RCC_CIER_PLL1RDYIE_Msk                 (0x1UL << RCC_CIER_PLL1RDYIE_Pos) /*!< 0x00000040 */\n#define RCC_CIER_PLL1RDYIE                     RCC_CIER_PLL1RDYIE_Msk\n#define RCC_CIER_PLL2RDYIE_Pos                 (7U)\n#define RCC_CIER_PLL2RDYIE_Msk                 (0x1UL << RCC_CIER_PLL2RDYIE_Pos) /*!< 0x00000080 */\n#define RCC_CIER_PLL2RDYIE                     RCC_CIER_PLL2RDYIE_Msk\n#define RCC_CIER_PLL3RDYIE_Pos                 (8U)\n#define RCC_CIER_PLL3RDYIE_Msk                 (0x1UL << RCC_CIER_PLL3RDYIE_Pos) /*!< 0x00000100 */\n#define RCC_CIER_PLL3RDYIE                     RCC_CIER_PLL3RDYIE_Msk\n#define RCC_CIER_LSECSSIE_Pos                  (9U)\n#define RCC_CIER_LSECSSIE_Msk                  (0x1UL << RCC_CIER_LSECSSIE_Pos) /*!< 0x00000200 */\n#define RCC_CIER_LSECSSIE                      RCC_CIER_LSECSSIE_Msk\n\n/********************  Bit definition for RCC_CIFR register  ******************/\n#define RCC_CIFR_LSIRDYF_Pos                   (0U)\n#define RCC_CIFR_LSIRDYF_Msk                   (0x1UL << RCC_CIFR_LSIRDYF_Pos) /*!< 0x00000001 */\n#define RCC_CIFR_LSIRDYF                       RCC_CIFR_LSIRDYF_Msk\n#define RCC_CIFR_LSERDYF_Pos                   (1U)\n#define RCC_CIFR_LSERDYF_Msk                   (0x1UL << RCC_CIFR_LSERDYF_Pos) /*!< 0x00000002 */\n#define RCC_CIFR_LSERDYF                       RCC_CIFR_LSERDYF_Msk\n#define RCC_CIFR_HSIRDYF_Pos                   (2U)\n#define RCC_CIFR_HSIRDYF_Msk                   (0x1UL << RCC_CIFR_HSIRDYF_Pos) /*!< 0x00000004 */\n#define RCC_CIFR_HSIRDYF                       RCC_CIFR_HSIRDYF_Msk\n#define RCC_CIFR_HSERDYF_Pos                   (3U)\n#define RCC_CIFR_HSERDYF_Msk                   (0x1UL << RCC_CIFR_HSERDYF_Pos) /*!< 0x00000008 */\n#define RCC_CIFR_HSERDYF                       RCC_CIFR_HSERDYF_Msk\n#define RCC_CIFR_CSIRDYF_Pos                   (4U)\n#define RCC_CIFR_CSIRDYF_Msk                   (0x1UL << RCC_CIFR_CSIRDYF_Pos) /*!< 0x00000010 */\n#define RCC_CIFR_CSIRDYF                       RCC_CIFR_CSIRDYF_Msk\n#define RCC_CIFR_HSI48RDYF_Pos                 (5U)\n#define RCC_CIFR_HSI48RDYF_Msk                 (0x1UL << RCC_CIFR_HSI48RDYF_Pos) /*!< 0x00000020 */\n#define RCC_CIFR_HSI48RDYF                     RCC_CIFR_HSI48RDYF_Msk\n#define RCC_CIFR_PLLRDYF_Pos                   (6U)\n#define RCC_CIFR_PLLRDYF_Msk                   (0x1UL << RCC_CIFR_PLLRDYF_Pos) /*!< 0x00000040 */\n#define RCC_CIFR_PLLRDYF                       RCC_CIFR_PLLRDYF_Msk\n#define RCC_CIFR_PLL2RDYF_Pos                  (7U)\n#define RCC_CIFR_PLL2RDYF_Msk                  (0x1UL << RCC_CIFR_PLL2RDYF_Pos) /*!< 0x00000080 */\n#define RCC_CIFR_PLL2RDYF                      RCC_CIFR_PLL2RDYF_Msk\n#define RCC_CIFR_PLL3RDYF_Pos                  (8U)\n#define RCC_CIFR_PLL3RDYF_Msk                  (0x1UL << RCC_CIFR_PLL3RDYF_Pos) /*!< 0x00000100 */\n#define RCC_CIFR_PLL3RDYF                      RCC_CIFR_PLL3RDYF_Msk\n#define RCC_CIFR_LSECSSF_Pos                   (9U)\n#define RCC_CIFR_LSECSSF_Msk                   (0x1UL << RCC_CIFR_LSECSSF_Pos) /*!< 0x00000200 */\n#define RCC_CIFR_LSECSSF                       RCC_CIFR_LSECSSF_Msk\n#define RCC_CIFR_HSECSSF_Pos                   (10U)\n#define RCC_CIFR_HSECSSF_Msk                   (0x1UL << RCC_CIFR_HSECSSF_Pos) /*!< 0x00000400 */\n#define RCC_CIFR_HSECSSF                       RCC_CIFR_HSECSSF_Msk\n\n/********************  Bit definition for RCC_CICR register  ******************/\n#define RCC_CICR_LSIRDYC_Pos                   (0U)\n#define RCC_CICR_LSIRDYC_Msk                   (0x1UL << RCC_CICR_LSIRDYC_Pos) /*!< 0x00000001 */\n#define RCC_CICR_LSIRDYC                       RCC_CICR_LSIRDYC_Msk\n#define RCC_CICR_LSERDYC_Pos                   (1U)\n#define RCC_CICR_LSERDYC_Msk                   (0x1UL << RCC_CICR_LSERDYC_Pos) /*!< 0x00000002 */\n#define RCC_CICR_LSERDYC                       RCC_CICR_LSERDYC_Msk\n#define RCC_CICR_HSIRDYC_Pos                   (2U)\n#define RCC_CICR_HSIRDYC_Msk                   (0x1UL << RCC_CICR_HSIRDYC_Pos) /*!< 0x00000004 */\n#define RCC_CICR_HSIRDYC                       RCC_CICR_HSIRDYC_Msk\n#define RCC_CICR_HSERDYC_Pos                   (3U)\n#define RCC_CICR_HSERDYC_Msk                   (0x1UL << RCC_CICR_HSERDYC_Pos) /*!< 0x00000008 */\n#define RCC_CICR_HSERDYC                       RCC_CICR_HSERDYC_Msk\n#define RCC_CICR_CSIRDYC_Pos                   (4U)\n#define RCC_CICR_CSIRDYC_Msk                   (0x1UL << RCC_CICR_CSIRDYC_Pos) /*!< 0x00000010 */\n#define RCC_CICR_CSIRDYC                       RCC_CICR_CSIRDYC_Msk\n#define RCC_CICR_HSI48RDYC_Pos                 (5U)\n#define RCC_CICR_HSI48RDYC_Msk                 (0x1UL << RCC_CICR_HSI48RDYC_Pos) /*!< 0x00000020 */\n#define RCC_CICR_HSI48RDYC                     RCC_CICR_HSI48RDYC_Msk\n#define RCC_CICR_PLLRDYC_Pos                   (6U)\n#define RCC_CICR_PLLRDYC_Msk                   (0x1UL << RCC_CICR_PLLRDYC_Pos) /*!< 0x00000040 */\n#define RCC_CICR_PLLRDYC                       RCC_CICR_PLLRDYC_Msk\n#define RCC_CICR_PLL2RDYC_Pos                  (7U)\n#define RCC_CICR_PLL2RDYC_Msk                  (0x1UL << RCC_CICR_PLL2RDYC_Pos) /*!< 0x00000080 */\n#define RCC_CICR_PLL2RDYC                      RCC_CICR_PLL2RDYC_Msk\n#define RCC_CICR_PLL3RDYC_Pos                  (8U)\n#define RCC_CICR_PLL3RDYC_Msk                  (0x1UL << RCC_CICR_PLL3RDYC_Pos) /*!< 0x00000100 */\n#define RCC_CICR_PLL3RDYC                      RCC_CICR_PLL3RDYC_Msk\n#define RCC_CICR_LSECSSC_Pos                   (9U)\n#define RCC_CICR_LSECSSC_Msk                   (0x1UL << RCC_CICR_LSECSSC_Pos) /*!< 0x00000200 */\n#define RCC_CICR_LSECSSC                       RCC_CICR_LSECSSC_Msk\n#define RCC_CICR_HSECSSC_Pos                   (10U)\n#define RCC_CICR_HSECSSC_Msk                   (0x1UL << RCC_CICR_HSECSSC_Pos) /*!< 0x00000400 */\n#define RCC_CICR_HSECSSC                       RCC_CICR_HSECSSC_Msk\n\n/********************  Bit definition for RCC_BDCR register  ******************/\n#define RCC_BDCR_LSEON_Pos                     (0U)\n#define RCC_BDCR_LSEON_Msk                     (0x1UL << RCC_BDCR_LSEON_Pos)   /*!< 0x00000001 */\n#define RCC_BDCR_LSEON                         RCC_BDCR_LSEON_Msk\n#define RCC_BDCR_LSERDY_Pos                    (1U)\n#define RCC_BDCR_LSERDY_Msk                    (0x1UL << RCC_BDCR_LSERDY_Pos)  /*!< 0x00000002 */\n#define RCC_BDCR_LSERDY                        RCC_BDCR_LSERDY_Msk\n#define RCC_BDCR_LSEBYP_Pos                    (2U)\n#define RCC_BDCR_LSEBYP_Msk                    (0x1UL << RCC_BDCR_LSEBYP_Pos)  /*!< 0x00000004 */\n#define RCC_BDCR_LSEBYP                        RCC_BDCR_LSEBYP_Msk\n\n#define RCC_BDCR_LSEDRV_Pos                    (3U)\n#define RCC_BDCR_LSEDRV_Msk                    (0x3UL << RCC_BDCR_LSEDRV_Pos)  /*!< 0x00000018 */\n#define RCC_BDCR_LSEDRV                        RCC_BDCR_LSEDRV_Msk\n#define RCC_BDCR_LSEDRV_0                      (0x1UL << RCC_BDCR_LSEDRV_Pos)   /*!< 0x00000008 */\n#define RCC_BDCR_LSEDRV_1                      (0x2UL << RCC_BDCR_LSEDRV_Pos)   /*!< 0x00000010 */\n\n#define RCC_BDCR_LSECSSON_Pos                  (5U)\n#define RCC_BDCR_LSECSSON_Msk                  (0x1UL << RCC_BDCR_LSECSSON_Pos) /*!< 0x00000020 */\n#define RCC_BDCR_LSECSSON                      RCC_BDCR_LSECSSON_Msk\n#define RCC_BDCR_LSECSSD_Pos                   (6U)\n#define RCC_BDCR_LSECSSD_Msk                   (0x1UL << RCC_BDCR_LSECSSD_Pos) /*!< 0x00000040 */\n#define RCC_BDCR_LSECSSD                       RCC_BDCR_LSECSSD_Msk\n\n#define RCC_BDCR_RTCSEL_Pos                    (8U)\n#define RCC_BDCR_RTCSEL_Msk                    (0x3UL << RCC_BDCR_RTCSEL_Pos)  /*!< 0x00000300 */\n#define RCC_BDCR_RTCSEL                        RCC_BDCR_RTCSEL_Msk\n#define RCC_BDCR_RTCSEL_0                      (0x1UL << RCC_BDCR_RTCSEL_Pos)   /*!< 0x00000100 */\n#define RCC_BDCR_RTCSEL_1                      (0x2UL << RCC_BDCR_RTCSEL_Pos)   /*!< 0x00000200 */\n\n#define RCC_BDCR_RTCEN_Pos                     (15U)\n#define RCC_BDCR_RTCEN_Msk                     (0x1UL << RCC_BDCR_RTCEN_Pos)   /*!< 0x00008000 */\n#define RCC_BDCR_RTCEN                         RCC_BDCR_RTCEN_Msk\n#define RCC_BDCR_BDRST_Pos                     (16U)\n#define RCC_BDCR_BDRST_Msk                     (0x1UL << RCC_BDCR_BDRST_Pos)   /*!< 0x00010000 */\n#define RCC_BDCR_BDRST                         RCC_BDCR_BDRST_Msk\n/********************  Bit definition for RCC_CSR register  *******************/\n#define RCC_CSR_LSION_Pos                      (0U)\n#define RCC_CSR_LSION_Msk                      (0x1UL << RCC_CSR_LSION_Pos)    /*!< 0x00000001 */\n#define RCC_CSR_LSION                          RCC_CSR_LSION_Msk\n#define RCC_CSR_LSIRDY_Pos                     (1U)\n#define RCC_CSR_LSIRDY_Msk                     (0x1UL << RCC_CSR_LSIRDY_Pos)   /*!< 0x00000002 */\n#define RCC_CSR_LSIRDY                         RCC_CSR_LSIRDY_Msk\n\n\n/********************  Bit definition for RCC_AHB3ENR register  **************/\n#define RCC_AHB3ENR_MDMAEN_Pos                 (0U)\n#define RCC_AHB3ENR_MDMAEN_Msk                 (0x1UL << RCC_AHB3ENR_MDMAEN_Pos)       /*!< 0x00000001 */\n#define RCC_AHB3ENR_MDMAEN                     RCC_AHB3ENR_MDMAEN_Msk\n#define RCC_AHB3ENR_DMA2DEN_Pos                (4U)\n#define RCC_AHB3ENR_DMA2DEN_Msk                (0x1UL << RCC_AHB3ENR_DMA2DEN_Pos)      /*!< 0x00000010 */\n#define RCC_AHB3ENR_DMA2DEN                    RCC_AHB3ENR_DMA2DEN_Msk\n#define RCC_AHB3ENR_JPGDECEN_Pos               (5U)\n#define RCC_AHB3ENR_JPGDECEN_Msk               (0x1UL << RCC_AHB3ENR_JPGDECEN_Pos)     /*!< 0x00000020 */\n#define RCC_AHB3ENR_JPGDECEN                   RCC_AHB3ENR_JPGDECEN_Msk\n#define RCC_AHB3ENR_FMCEN_Pos                  (12U)\n#define RCC_AHB3ENR_FMCEN_Msk                  (0x1UL << RCC_AHB3ENR_FMCEN_Pos)        /*!< 0x00001000 */\n#define RCC_AHB3ENR_FMCEN                      RCC_AHB3ENR_FMCEN_Msk\n#define RCC_AHB3ENR_QSPIEN_Pos                 (14U)\n#define RCC_AHB3ENR_QSPIEN_Msk                 (0x1UL << RCC_AHB3ENR_QSPIEN_Pos)       /*!< 0x00004000 */\n#define RCC_AHB3ENR_QSPIEN                     RCC_AHB3ENR_QSPIEN_Msk\n#define RCC_AHB3ENR_SDMMC1EN_Pos               (16U)\n#define RCC_AHB3ENR_SDMMC1EN_Msk               (0x1UL << RCC_AHB3ENR_SDMMC1EN_Pos)     /*!< 0x00010000 */\n#define RCC_AHB3ENR_SDMMC1EN                   RCC_AHB3ENR_SDMMC1EN_Msk\n\n/********************  Bit definition for RCC_AHB1ENR register  ***************/\n#define RCC_AHB1ENR_DMA1EN_Pos                 (0U)\n#define RCC_AHB1ENR_DMA1EN_Msk                 (0x1UL << RCC_AHB1ENR_DMA1EN_Pos)          /*!< 0x00000001 */\n#define RCC_AHB1ENR_DMA1EN                     RCC_AHB1ENR_DMA1EN_Msk\n#define RCC_AHB1ENR_DMA2EN_Pos                 (1U)\n#define RCC_AHB1ENR_DMA2EN_Msk                 (0x1UL << RCC_AHB1ENR_DMA2EN_Pos)          /*!< 0x00000002 */\n#define RCC_AHB1ENR_DMA2EN                     RCC_AHB1ENR_DMA2EN_Msk\n#define RCC_AHB1ENR_ADC12EN_Pos                (5U)\n#define RCC_AHB1ENR_ADC12EN_Msk                (0x1UL << RCC_AHB1ENR_ADC12EN_Pos)         /*!< 0x00000020 */\n#define RCC_AHB1ENR_ADC12EN                    RCC_AHB1ENR_ADC12EN_Msk\n#define RCC_AHB1ENR_ETH1MACEN_Pos              (15U)\n#define RCC_AHB1ENR_ETH1MACEN_Msk              (0x1UL << RCC_AHB1ENR_ETH1MACEN_Pos)       /*!< 0x00008000 */\n#define RCC_AHB1ENR_ETH1MACEN                  RCC_AHB1ENR_ETH1MACEN_Msk\n#define RCC_AHB1ENR_ETH1TXEN_Pos               (16U)\n#define RCC_AHB1ENR_ETH1TXEN_Msk               (0x1UL << RCC_AHB1ENR_ETH1TXEN_Pos)        /*!< 0x00010000 */\n#define RCC_AHB1ENR_ETH1TXEN                   RCC_AHB1ENR_ETH1TXEN_Msk\n#define RCC_AHB1ENR_ETH1RXEN_Pos               (17U)\n#define RCC_AHB1ENR_ETH1RXEN_Msk               (0x1UL << RCC_AHB1ENR_ETH1RXEN_Pos)        /*!< 0x00020000 */\n#define RCC_AHB1ENR_ETH1RXEN                   RCC_AHB1ENR_ETH1RXEN_Msk\n#define RCC_AHB1ENR_USB1OTGHSEN_Pos            (25U)\n#define RCC_AHB1ENR_USB1OTGHSEN_Msk            (0x1UL << RCC_AHB1ENR_USB1OTGHSEN_Pos)     /*!< 0x02000000 */\n#define RCC_AHB1ENR_USB1OTGHSEN                RCC_AHB1ENR_USB1OTGHSEN_Msk\n#define RCC_AHB1ENR_USB1OTGHSULPIEN_Pos        (26U)\n#define RCC_AHB1ENR_USB1OTGHSULPIEN_Msk        (0x1UL << RCC_AHB1ENR_USB1OTGHSULPIEN_Pos) /*!< 0x04000000 */\n#define RCC_AHB1ENR_USB1OTGHSULPIEN            RCC_AHB1ENR_USB1OTGHSULPIEN_Msk\n#define RCC_AHB1ENR_USB2OTGFSEN_Pos            (27U)\n#define RCC_AHB1ENR_USB2OTGFSEN_Msk            (0x1UL << RCC_AHB1ENR_USB2OTGFSEN_Pos)     /*!< 0x08000000 */\n#define RCC_AHB1ENR_USB2OTGFSEN                RCC_AHB1ENR_USB2OTGFSEN_Msk\n#define RCC_AHB1ENR_USB2OTGFSULPIEN_Pos        (28U)\n#define RCC_AHB1ENR_USB2OTGFSULPIEN_Msk        (0x1UL << RCC_AHB1ENR_USB2OTGFSULPIEN_Pos) /*!< 0x10000000 */\n#define RCC_AHB1ENR_USB2OTGFSULPIEN            RCC_AHB1ENR_USB2OTGFSULPIEN_Msk\n\n/* Legacy define */\n#define RCC_AHB1ENR_USB2OTGHSEN_Pos            RCC_AHB1ENR_USB2OTGFSEN_Pos\n#define RCC_AHB1ENR_USB2OTGHSEN_Msk            RCC_AHB1ENR_USB2OTGFSEN_Msk\n#define RCC_AHB1ENR_USB2OTGHSEN                RCC_AHB1ENR_USB2OTGFSEN\n#define RCC_AHB1ENR_USB2OTGHSULPIEN_Pos        RCC_AHB1ENR_USB2OTGFSULPIEN_Pos\n#define RCC_AHB1ENR_USB2OTGHSULPIEN_Msk        RCC_AHB1ENR_USB2OTGFSULPIEN_Msk\n#define RCC_AHB1ENR_USB2OTGHSULPIEN            RCC_AHB1ENR_USB2OTGFSULPIEN\n\n\n/********************  Bit definition for RCC_AHB2ENR register  ***************/\n#define RCC_AHB2ENR_DCMIEN_Pos                 (0U)\n#define RCC_AHB2ENR_DCMIEN_Msk                 (0x1UL << RCC_AHB2ENR_DCMIEN_Pos)          /*!< 0x00000001 */\n#define RCC_AHB2ENR_DCMIEN                     RCC_AHB2ENR_DCMIEN_Msk\n#define RCC_AHB2ENR_CRYPEN_Pos                 (4U)\n#define RCC_AHB2ENR_CRYPEN_Msk                 (0x1UL << RCC_AHB2ENR_CRYPEN_Pos)          /*!< 0x00000010 */\n#define RCC_AHB2ENR_CRYPEN                     RCC_AHB2ENR_CRYPEN_Msk\n#define RCC_AHB2ENR_HASHEN_Pos                 (5U)\n#define RCC_AHB2ENR_HASHEN_Msk                 (0x1UL << RCC_AHB2ENR_HASHEN_Pos)          /*!< 0x00000020 */\n#define RCC_AHB2ENR_HASHEN                     RCC_AHB2ENR_HASHEN_Msk\n#define RCC_AHB2ENR_RNGEN_Pos                  (6U)\n#define RCC_AHB2ENR_RNGEN_Msk                  (0x1UL << RCC_AHB2ENR_RNGEN_Pos)           /*!< 0x00000040 */\n#define RCC_AHB2ENR_RNGEN                      RCC_AHB2ENR_RNGEN_Msk\n#define RCC_AHB2ENR_SDMMC2EN_Pos               (9U)\n#define RCC_AHB2ENR_SDMMC2EN_Msk               (0x1UL << RCC_AHB2ENR_SDMMC2EN_Pos)        /*!< 0x00000200 */\n#define RCC_AHB2ENR_SDMMC2EN                   RCC_AHB2ENR_SDMMC2EN_Msk\n#define RCC_AHB2ENR_SRAM1EN_Pos                (29U)\n#define RCC_AHB2ENR_SRAM1EN_Msk                (0x1UL << RCC_AHB2ENR_SRAM1EN_Pos)       /*!< 0x20000000 */\n#define RCC_AHB2ENR_SRAM1EN                    RCC_AHB2ENR_SRAM1EN_Msk\n#define RCC_AHB2ENR_SRAM2EN_Pos                (30U)\n#define RCC_AHB2ENR_SRAM2EN_Msk                (0x1UL << RCC_AHB2ENR_SRAM2EN_Pos)       /*!< 0x40000000 */\n#define RCC_AHB2ENR_SRAM2EN                    RCC_AHB2ENR_SRAM2EN_Msk\n#define RCC_AHB2ENR_SRAM3EN_Pos                (31U)\n#define RCC_AHB2ENR_SRAM3EN_Msk                (0x1UL << RCC_AHB2ENR_SRAM3EN_Pos)       /*!< 0x80000000 */\n#define RCC_AHB2ENR_SRAM3EN                    RCC_AHB2ENR_SRAM3EN_Msk\n\n/* Legacy define */\n#define RCC_AHB2ENR_D2SRAM1EN_Pos              RCC_AHB2ENR_SRAM1EN_Pos\n#define RCC_AHB2ENR_D2SRAM1EN_Msk              RCC_AHB2ENR_SRAM1EN_Msk\n#define RCC_AHB2ENR_D2SRAM1EN                  RCC_AHB2ENR_SRAM1EN\n#define RCC_AHB2ENR_D2SRAM2EN_Pos              RCC_AHB2ENR_SRAM2EN_Pos\n#define RCC_AHB2ENR_D2SRAM2EN_Msk              RCC_AHB2ENR_SRAM2EN_Msk\n#define RCC_AHB2ENR_D2SRAM2EN                  RCC_AHB2ENR_SRAM2EN\n#define RCC_AHB2ENR_D2SRAM3EN_Pos              RCC_AHB2ENR_SRAM3EN_Pos\n#define RCC_AHB2ENR_D2SRAM3EN_Msk              RCC_AHB2ENR_SRAM3EN_Msk\n#define RCC_AHB2ENR_D2SRAM3EN                  RCC_AHB2ENR_SRAM3EN\n\n/********************  Bit definition for RCC_AHB4ENR register  ******************/\n#define RCC_AHB4ENR_GPIOAEN_Pos                (0U)\n#define RCC_AHB4ENR_GPIOAEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOAEN_Pos)         /*!< 0x00000001 */\n#define RCC_AHB4ENR_GPIOAEN                    RCC_AHB4ENR_GPIOAEN_Msk\n#define RCC_AHB4ENR_GPIOBEN_Pos                (1U)\n#define RCC_AHB4ENR_GPIOBEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOBEN_Pos)         /*!< 0x00000002 */\n#define RCC_AHB4ENR_GPIOBEN                    RCC_AHB4ENR_GPIOBEN_Msk\n#define RCC_AHB4ENR_GPIOCEN_Pos                (2U)\n#define RCC_AHB4ENR_GPIOCEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOCEN_Pos)         /*!< 0x00000004 */\n#define RCC_AHB4ENR_GPIOCEN                    RCC_AHB4ENR_GPIOCEN_Msk\n#define RCC_AHB4ENR_GPIODEN_Pos                (3U)\n#define RCC_AHB4ENR_GPIODEN_Msk                (0x1UL << RCC_AHB4ENR_GPIODEN_Pos)         /*!< 0x00000008 */\n#define RCC_AHB4ENR_GPIODEN                    RCC_AHB4ENR_GPIODEN_Msk\n#define RCC_AHB4ENR_GPIOEEN_Pos                (4U)\n#define RCC_AHB4ENR_GPIOEEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOEEN_Pos)         /*!< 0x00000010 */\n#define RCC_AHB4ENR_GPIOEEN                    RCC_AHB4ENR_GPIOEEN_Msk\n#define RCC_AHB4ENR_GPIOFEN_Pos                (5U)\n#define RCC_AHB4ENR_GPIOFEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOFEN_Pos)         /*!< 0x00000020 */\n#define RCC_AHB4ENR_GPIOFEN                    RCC_AHB4ENR_GPIOFEN_Msk\n#define RCC_AHB4ENR_GPIOGEN_Pos                (6U)\n#define RCC_AHB4ENR_GPIOGEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOGEN_Pos)         /*!< 0x00000040 */\n#define RCC_AHB4ENR_GPIOGEN                    RCC_AHB4ENR_GPIOGEN_Msk\n#define RCC_AHB4ENR_GPIOHEN_Pos                (7U)\n#define RCC_AHB4ENR_GPIOHEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOHEN_Pos)         /*!< 0x00000080 */\n#define RCC_AHB4ENR_GPIOHEN                    RCC_AHB4ENR_GPIOHEN_Msk\n#define RCC_AHB4ENR_GPIOIEN_Pos                (8U)\n#define RCC_AHB4ENR_GPIOIEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOIEN_Pos)         /*!< 0x00000100 */\n#define RCC_AHB4ENR_GPIOIEN                    RCC_AHB4ENR_GPIOIEN_Msk\n#define RCC_AHB4ENR_GPIOJEN_Pos                (9U)\n#define RCC_AHB4ENR_GPIOJEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOJEN_Pos)         /*!< 0x00000200 */\n#define RCC_AHB4ENR_GPIOJEN                    RCC_AHB4ENR_GPIOJEN_Msk\n#define RCC_AHB4ENR_GPIOKEN_Pos                (10U)\n#define RCC_AHB4ENR_GPIOKEN_Msk                (0x1UL << RCC_AHB4ENR_GPIOKEN_Pos)         /*!< 0x00000400 */\n#define RCC_AHB4ENR_GPIOKEN                    RCC_AHB4ENR_GPIOKEN_Msk\n#define RCC_AHB4ENR_CRCEN_Pos                  (19U)\n#define RCC_AHB4ENR_CRCEN_Msk                  (0x1UL << RCC_AHB4ENR_CRCEN_Pos)           /*!< 0x00080000 */\n#define RCC_AHB4ENR_CRCEN                      RCC_AHB4ENR_CRCEN_Msk\n#define RCC_AHB4ENR_BDMAEN_Pos                 (21U)\n#define RCC_AHB4ENR_BDMAEN_Msk                 (0x1UL << RCC_AHB4ENR_BDMAEN_Pos)          /*!< 0x00200000 */\n#define RCC_AHB4ENR_BDMAEN                     RCC_AHB4ENR_BDMAEN_Msk\n#define RCC_AHB4ENR_ADC3EN_Pos                 (24U)\n#define RCC_AHB4ENR_ADC3EN_Msk                 (0x1UL << RCC_AHB4ENR_ADC3EN_Pos)          /*!< 0x01000000 */\n#define RCC_AHB4ENR_ADC3EN                     RCC_AHB4ENR_ADC3EN_Msk\n#define RCC_AHB4ENR_HSEMEN_Pos                 (25U)\n#define RCC_AHB4ENR_HSEMEN_Msk                 (0x1UL << RCC_AHB4ENR_HSEMEN_Pos)          /*!< 0x02000000 */\n#define RCC_AHB4ENR_HSEMEN                     RCC_AHB4ENR_HSEMEN_Msk\n#define RCC_AHB4ENR_BKPRAMEN_Pos               (28U)\n#define RCC_AHB4ENR_BKPRAMEN_Msk               (0x1UL << RCC_AHB4ENR_BKPRAMEN_Pos)        /*!< 0x10000000 */\n#define RCC_AHB4ENR_BKPRAMEN                   RCC_AHB4ENR_BKPRAMEN_Msk\n\n/********************  Bit definition for RCC_APB3ENR register  ******************/\n#define RCC_APB3ENR_LTDCEN_Pos                 (3U)\n#define RCC_APB3ENR_LTDCEN_Msk                 (0x1UL << RCC_APB3ENR_LTDCEN_Pos) /*!< 0x00000008 */\n#define RCC_APB3ENR_LTDCEN                     RCC_APB3ENR_LTDCEN_Msk\n#define RCC_APB3ENR_WWDG1EN_Pos                (6U)\n#define RCC_APB3ENR_WWDG1EN_Msk                (0x1UL << RCC_APB3ENR_WWDG1EN_Pos) /*!< 0x00000040 */\n#define RCC_APB3ENR_WWDG1EN                    RCC_APB3ENR_WWDG1EN_Msk\n\n/********************  Bit definition for RCC_APB1LENR register  ******************/\n\n#define RCC_APB1LENR_TIM2EN_Pos                (0U)\n#define RCC_APB1LENR_TIM2EN_Msk                (0x1UL << RCC_APB1LENR_TIM2EN_Pos) /*!< 0x00000001 */\n#define RCC_APB1LENR_TIM2EN                    RCC_APB1LENR_TIM2EN_Msk\n#define RCC_APB1LENR_TIM3EN_Pos                (1U)\n#define RCC_APB1LENR_TIM3EN_Msk                (0x1UL << RCC_APB1LENR_TIM3EN_Pos) /*!< 0x00000002 */\n#define RCC_APB1LENR_TIM3EN                    RCC_APB1LENR_TIM3EN_Msk\n#define RCC_APB1LENR_TIM4EN_Pos                (2U)\n#define RCC_APB1LENR_TIM4EN_Msk                (0x1UL << RCC_APB1LENR_TIM4EN_Pos) /*!< 0x00000004 */\n#define RCC_APB1LENR_TIM4EN                    RCC_APB1LENR_TIM4EN_Msk\n#define RCC_APB1LENR_TIM5EN_Pos                (3U)\n#define RCC_APB1LENR_TIM5EN_Msk                (0x1UL << RCC_APB1LENR_TIM5EN_Pos) /*!< 0x00000008 */\n#define RCC_APB1LENR_TIM5EN                    RCC_APB1LENR_TIM5EN_Msk\n#define RCC_APB1LENR_TIM6EN_Pos                (4U)\n#define RCC_APB1LENR_TIM6EN_Msk                (0x1UL << RCC_APB1LENR_TIM6EN_Pos) /*!< 0x00000010 */\n#define RCC_APB1LENR_TIM6EN                    RCC_APB1LENR_TIM6EN_Msk\n#define RCC_APB1LENR_TIM7EN_Pos                (5U)\n#define RCC_APB1LENR_TIM7EN_Msk                (0x1UL << RCC_APB1LENR_TIM7EN_Pos) /*!< 0x00000020 */\n#define RCC_APB1LENR_TIM7EN                    RCC_APB1LENR_TIM7EN_Msk\n#define RCC_APB1LENR_TIM12EN_Pos               (6U)\n#define RCC_APB1LENR_TIM12EN_Msk               (0x1UL << RCC_APB1LENR_TIM12EN_Pos) /*!< 0x00000040 */\n#define RCC_APB1LENR_TIM12EN                   RCC_APB1LENR_TIM12EN_Msk\n#define RCC_APB1LENR_TIM13EN_Pos               (7U)\n#define RCC_APB1LENR_TIM13EN_Msk               (0x1UL << RCC_APB1LENR_TIM13EN_Pos) /*!< 0x00000080 */\n#define RCC_APB1LENR_TIM13EN                   RCC_APB1LENR_TIM13EN_Msk\n#define RCC_APB1LENR_TIM14EN_Pos               (8U)\n#define RCC_APB1LENR_TIM14EN_Msk               (0x1UL << RCC_APB1LENR_TIM14EN_Pos) /*!< 0x00000100 */\n#define RCC_APB1LENR_TIM14EN                   RCC_APB1LENR_TIM14EN_Msk\n#define RCC_APB1LENR_LPTIM1EN_Pos              (9U)\n#define RCC_APB1LENR_LPTIM1EN_Msk              (0x1UL << RCC_APB1LENR_LPTIM1EN_Pos) /*!< 0x00000200 */\n#define RCC_APB1LENR_LPTIM1EN                  RCC_APB1LENR_LPTIM1EN_Msk\n\n\n#define RCC_APB1LENR_SPI2EN_Pos                (14U)\n#define RCC_APB1LENR_SPI2EN_Msk                (0x1UL << RCC_APB1LENR_SPI2EN_Pos) /*!< 0x00004000 */\n#define RCC_APB1LENR_SPI2EN                    RCC_APB1LENR_SPI2EN_Msk\n#define RCC_APB1LENR_SPI3EN_Pos                (15U)\n#define RCC_APB1LENR_SPI3EN_Msk                (0x1UL << RCC_APB1LENR_SPI3EN_Pos) /*!< 0x00008000 */\n#define RCC_APB1LENR_SPI3EN                    RCC_APB1LENR_SPI3EN_Msk\n#define RCC_APB1LENR_SPDIFRXEN_Pos             (16U)\n#define RCC_APB1LENR_SPDIFRXEN_Msk             (0x1UL << RCC_APB1LENR_SPDIFRXEN_Pos) /*!< 0x00010000 */\n#define RCC_APB1LENR_SPDIFRXEN                 RCC_APB1LENR_SPDIFRXEN_Msk\n#define RCC_APB1LENR_USART2EN_Pos              (17U)\n#define RCC_APB1LENR_USART2EN_Msk              (0x1UL << RCC_APB1LENR_USART2EN_Pos) /*!< 0x00020000 */\n#define RCC_APB1LENR_USART2EN                  RCC_APB1LENR_USART2EN_Msk\n#define RCC_APB1LENR_USART3EN_Pos              (18U)\n#define RCC_APB1LENR_USART3EN_Msk              (0x1UL << RCC_APB1LENR_USART3EN_Pos) /*!< 0x00040000 */\n#define RCC_APB1LENR_USART3EN                  RCC_APB1LENR_USART3EN_Msk\n#define RCC_APB1LENR_UART4EN_Pos               (19U)\n#define RCC_APB1LENR_UART4EN_Msk               (0x1UL << RCC_APB1LENR_UART4EN_Pos) /*!< 0x00080000 */\n#define RCC_APB1LENR_UART4EN                   RCC_APB1LENR_UART4EN_Msk\n#define RCC_APB1LENR_UART5EN_Pos               (20U)\n#define RCC_APB1LENR_UART5EN_Msk               (0x1UL << RCC_APB1LENR_UART5EN_Pos) /*!< 0x00100000 */\n#define RCC_APB1LENR_UART5EN                   RCC_APB1LENR_UART5EN_Msk\n#define RCC_APB1LENR_I2C1EN_Pos                (21U)\n#define RCC_APB1LENR_I2C1EN_Msk                (0x1UL << RCC_APB1LENR_I2C1EN_Pos) /*!< 0x00200000 */\n#define RCC_APB1LENR_I2C1EN                    RCC_APB1LENR_I2C1EN_Msk\n#define RCC_APB1LENR_I2C2EN_Pos                (22U)\n#define RCC_APB1LENR_I2C2EN_Msk                (0x1UL << RCC_APB1LENR_I2C2EN_Pos) /*!< 0x00400000 */\n#define RCC_APB1LENR_I2C2EN                    RCC_APB1LENR_I2C2EN_Msk\n#define RCC_APB1LENR_I2C3EN_Pos                (23U)\n#define RCC_APB1LENR_I2C3EN_Msk                (0x1UL << RCC_APB1LENR_I2C3EN_Pos) /*!< 0x00800000 */\n#define RCC_APB1LENR_I2C3EN                    RCC_APB1LENR_I2C3EN_Msk\n#define RCC_APB1LENR_CECEN_Pos                 (27U)\n#define RCC_APB1LENR_CECEN_Msk                 (0x1UL << RCC_APB1LENR_CECEN_Pos) /*!< 0x08000000 */\n#define RCC_APB1LENR_CECEN                     RCC_APB1LENR_CECEN_Msk\n#define RCC_APB1LENR_DAC12EN_Pos               (29U)\n#define RCC_APB1LENR_DAC12EN_Msk               (0x1UL << RCC_APB1LENR_DAC12EN_Pos) /*!< 0x20000000 */\n#define RCC_APB1LENR_DAC12EN                   RCC_APB1LENR_DAC12EN_Msk\n#define RCC_APB1LENR_UART7EN_Pos               (30U)\n#define RCC_APB1LENR_UART7EN_Msk               (0x1UL << RCC_APB1LENR_UART7EN_Pos) /*!< 0x40000000 */\n#define RCC_APB1LENR_UART7EN                   RCC_APB1LENR_UART7EN_Msk\n#define RCC_APB1LENR_UART8EN_Pos               (31U)\n#define RCC_APB1LENR_UART8EN_Msk               (0x1UL << RCC_APB1LENR_UART8EN_Pos) /*!< 0x80000000 */\n#define RCC_APB1LENR_UART8EN                   RCC_APB1LENR_UART8EN_Msk\n\n/* Legacy define */\n#define RCC_APB1LENR_HDMICECEN_Pos             RCC_APB1LENR_CECEN_Pos\n#define RCC_APB1LENR_HDMICECEN_Msk             RCC_APB1LENR_CECEN_Msk\n#define RCC_APB1LENR_HDMICECEN                 RCC_APB1LENR_CECEN\n/********************  Bit definition for RCC_APB1HENR register  ******************/\n#define RCC_APB1HENR_CRSEN_Pos                 (1U)\n#define RCC_APB1HENR_CRSEN_Msk                 (0x1UL << RCC_APB1HENR_CRSEN_Pos) /*!< 0x00000002 */\n#define RCC_APB1HENR_CRSEN                     RCC_APB1HENR_CRSEN_Msk\n#define RCC_APB1HENR_SWPMIEN_Pos               (2U)\n#define RCC_APB1HENR_SWPMIEN_Msk               (0x1UL << RCC_APB1HENR_SWPMIEN_Pos) /*!< 0x00000004 */\n#define RCC_APB1HENR_SWPMIEN                   RCC_APB1HENR_SWPMIEN_Msk\n#define RCC_APB1HENR_OPAMPEN_Pos               (4U)\n#define RCC_APB1HENR_OPAMPEN_Msk               (0x1UL << RCC_APB1HENR_OPAMPEN_Pos) /*!< 0x00000010 */\n#define RCC_APB1HENR_OPAMPEN                   RCC_APB1HENR_OPAMPEN_Msk\n#define RCC_APB1HENR_MDIOSEN_Pos               (5U)\n#define RCC_APB1HENR_MDIOSEN_Msk               (0x1UL << RCC_APB1HENR_MDIOSEN_Pos) /*!< 0x00000020 */\n#define RCC_APB1HENR_MDIOSEN                   RCC_APB1HENR_MDIOSEN_Msk\n#define RCC_APB1HENR_FDCANEN_Pos               (8U)\n#define RCC_APB1HENR_FDCANEN_Msk               (0x1UL << RCC_APB1HENR_FDCANEN_Pos) /*!< 0x00000100 */\n#define RCC_APB1HENR_FDCANEN                   RCC_APB1HENR_FDCANEN_Msk\n\n/********************  Bit definition for RCC_APB2ENR register  ******************/\n#define RCC_APB2ENR_TIM1EN_Pos                 (0U)\n#define RCC_APB2ENR_TIM1EN_Msk                 (0x1UL << RCC_APB2ENR_TIM1EN_Pos) /*!< 0x00000001 */\n#define RCC_APB2ENR_TIM1EN                     RCC_APB2ENR_TIM1EN_Msk\n#define RCC_APB2ENR_TIM8EN_Pos                 (1U)\n#define RCC_APB2ENR_TIM8EN_Msk                 (0x1UL << RCC_APB2ENR_TIM8EN_Pos) /*!< 0x00000002 */\n#define RCC_APB2ENR_TIM8EN                     RCC_APB2ENR_TIM8EN_Msk\n#define RCC_APB2ENR_USART1EN_Pos               (4U)\n#define RCC_APB2ENR_USART1EN_Msk               (0x1UL << RCC_APB2ENR_USART1EN_Pos) /*!< 0x00000010 */\n#define RCC_APB2ENR_USART1EN                   RCC_APB2ENR_USART1EN_Msk\n#define RCC_APB2ENR_USART6EN_Pos               (5U)\n#define RCC_APB2ENR_USART6EN_Msk               (0x1UL << RCC_APB2ENR_USART6EN_Pos) /*!< 0x00000020 */\n#define RCC_APB2ENR_USART6EN                   RCC_APB2ENR_USART6EN_Msk\n#define RCC_APB2ENR_SPI1EN_Pos                 (12U)\n#define RCC_APB2ENR_SPI1EN_Msk                 (0x1UL << RCC_APB2ENR_SPI1EN_Pos) /*!< 0x00001000 */\n#define RCC_APB2ENR_SPI1EN                     RCC_APB2ENR_SPI1EN_Msk\n#define RCC_APB2ENR_SPI4EN_Pos                 (13U)\n#define RCC_APB2ENR_SPI4EN_Msk                 (0x1UL << RCC_APB2ENR_SPI4EN_Pos) /*!< 0x00002000 */\n#define RCC_APB2ENR_SPI4EN                     RCC_APB2ENR_SPI4EN_Msk\n#define RCC_APB2ENR_TIM15EN_Pos                (16U)\n#define RCC_APB2ENR_TIM15EN_Msk                (0x1UL << RCC_APB2ENR_TIM15EN_Pos) /*!< 0x00010000 */\n#define RCC_APB2ENR_TIM15EN                    RCC_APB2ENR_TIM15EN_Msk\n#define RCC_APB2ENR_TIM16EN_Pos                (17U)\n#define RCC_APB2ENR_TIM16EN_Msk                (0x1UL << RCC_APB2ENR_TIM16EN_Pos) /*!< 0x00020000 */\n#define RCC_APB2ENR_TIM16EN                    RCC_APB2ENR_TIM16EN_Msk\n#define RCC_APB2ENR_TIM17EN_Pos                (18U)\n#define RCC_APB2ENR_TIM17EN_Msk                (0x1UL << RCC_APB2ENR_TIM17EN_Pos) /*!< 0x00040000 */\n#define RCC_APB2ENR_TIM17EN                    RCC_APB2ENR_TIM17EN_Msk\n#define RCC_APB2ENR_SPI5EN_Pos                 (20U)\n#define RCC_APB2ENR_SPI5EN_Msk                 (0x1UL << RCC_APB2ENR_SPI5EN_Pos) /*!< 0x00100000 */\n#define RCC_APB2ENR_SPI5EN                     RCC_APB2ENR_SPI5EN_Msk\n#define RCC_APB2ENR_SAI1EN_Pos                 (22U)\n#define RCC_APB2ENR_SAI1EN_Msk                 (0x1UL << RCC_APB2ENR_SAI1EN_Pos) /*!< 0x00400000 */\n#define RCC_APB2ENR_SAI1EN                     RCC_APB2ENR_SAI1EN_Msk\n#define RCC_APB2ENR_SAI2EN_Pos                 (23U)\n#define RCC_APB2ENR_SAI2EN_Msk                 (0x1UL << RCC_APB2ENR_SAI2EN_Pos) /*!< 0x00800000 */\n#define RCC_APB2ENR_SAI2EN                     RCC_APB2ENR_SAI2EN_Msk\n#define RCC_APB2ENR_SAI3EN_Pos                 (24U)\n#define RCC_APB2ENR_SAI3EN_Msk                 (0x1UL << RCC_APB2ENR_SAI3EN_Pos) /*!< 0x01000000 */\n#define RCC_APB2ENR_SAI3EN                     RCC_APB2ENR_SAI3EN_Msk\n#define RCC_APB2ENR_DFSDM1EN_Pos               (28U)\n#define RCC_APB2ENR_DFSDM1EN_Msk               (0x1UL << RCC_APB2ENR_DFSDM1EN_Pos) /*!< 0x10000000 */\n#define RCC_APB2ENR_DFSDM1EN                   RCC_APB2ENR_DFSDM1EN_Msk\n#define RCC_APB2ENR_HRTIMEN_Pos                (29U)\n#define RCC_APB2ENR_HRTIMEN_Msk                (0x1UL << RCC_APB2ENR_HRTIMEN_Pos) /*!< 0x20000000 */\n#define RCC_APB2ENR_HRTIMEN                    RCC_APB2ENR_HRTIMEN_Msk\n\n/********************  Bit definition for RCC_APB4ENR register  ******************/\n#define RCC_APB4ENR_SYSCFGEN_Pos               (1U)\n#define RCC_APB4ENR_SYSCFGEN_Msk               (0x1UL << RCC_APB4ENR_SYSCFGEN_Pos) /*!< 0x00000002 */\n#define RCC_APB4ENR_SYSCFGEN                   RCC_APB4ENR_SYSCFGEN_Msk\n#define RCC_APB4ENR_LPUART1EN_Pos              (3U)\n#define RCC_APB4ENR_LPUART1EN_Msk              (0x1UL << RCC_APB4ENR_LPUART1EN_Pos) /*!< 0x00000008 */\n#define RCC_APB4ENR_LPUART1EN                  RCC_APB4ENR_LPUART1EN_Msk\n#define RCC_APB4ENR_SPI6EN_Pos                 (5U)\n#define RCC_APB4ENR_SPI6EN_Msk                 (0x1UL << RCC_APB4ENR_SPI6EN_Pos) /*!< 0x00000020 */\n#define RCC_APB4ENR_SPI6EN                     RCC_APB4ENR_SPI6EN_Msk\n#define RCC_APB4ENR_I2C4EN_Pos                 (7U)\n#define RCC_APB4ENR_I2C4EN_Msk                 (0x1UL << RCC_APB4ENR_I2C4EN_Pos) /*!< 0x00000080 */\n#define RCC_APB4ENR_I2C4EN                     RCC_APB4ENR_I2C4EN_Msk\n#define RCC_APB4ENR_LPTIM2EN_Pos               (9U)\n#define RCC_APB4ENR_LPTIM2EN_Msk               (0x1UL << RCC_APB4ENR_LPTIM2EN_Pos) /*!< 0x00000200 */\n#define RCC_APB4ENR_LPTIM2EN                   RCC_APB4ENR_LPTIM2EN_Msk\n#define RCC_APB4ENR_LPTIM3EN_Pos               (10U)\n#define RCC_APB4ENR_LPTIM3EN_Msk               (0x1UL << RCC_APB4ENR_LPTIM3EN_Pos) /*!< 0x00000400 */\n#define RCC_APB4ENR_LPTIM3EN                   RCC_APB4ENR_LPTIM3EN_Msk\n#define RCC_APB4ENR_LPTIM4EN_Pos               (11U)\n#define RCC_APB4ENR_LPTIM4EN_Msk               (0x1UL << RCC_APB4ENR_LPTIM4EN_Pos) /*!< 0x00000800 */\n#define RCC_APB4ENR_LPTIM4EN                   RCC_APB4ENR_LPTIM4EN_Msk\n#define RCC_APB4ENR_LPTIM5EN_Pos               (12U)\n#define RCC_APB4ENR_LPTIM5EN_Msk               (0x1UL << RCC_APB4ENR_LPTIM5EN_Pos) /*!< 0x00001000 */\n#define RCC_APB4ENR_LPTIM5EN                   RCC_APB4ENR_LPTIM5EN_Msk\n#define RCC_APB4ENR_COMP12EN_Pos               (14U)\n#define RCC_APB4ENR_COMP12EN_Msk               (0x1UL << RCC_APB4ENR_COMP12EN_Pos) /*!< 0x00004000 */\n#define RCC_APB4ENR_COMP12EN                   RCC_APB4ENR_COMP12EN_Msk\n#define RCC_APB4ENR_VREFEN_Pos                 (15U)\n#define RCC_APB4ENR_VREFEN_Msk                 (0x1UL << RCC_APB4ENR_VREFEN_Pos) /*!< 0x00008000 */\n#define RCC_APB4ENR_VREFEN                     RCC_APB4ENR_VREFEN_Msk\n#define RCC_APB4ENR_RTCAPBEN_Pos               (16U)\n#define RCC_APB4ENR_RTCAPBEN_Msk               (0x1UL << RCC_APB4ENR_RTCAPBEN_Pos) /*!< 0x00010000 */\n#define RCC_APB4ENR_RTCAPBEN                   RCC_APB4ENR_RTCAPBEN_Msk\n#define RCC_APB4ENR_SAI4EN_Pos                 (21U)\n#define RCC_APB4ENR_SAI4EN_Msk                 (0x1UL << RCC_APB4ENR_SAI4EN_Pos) /*!< 0x00200000 */\n#define RCC_APB4ENR_SAI4EN                     RCC_APB4ENR_SAI4EN_Msk\n\n\n/********************  Bit definition for RCC_AHB3RSTR register  ***************/\n#define RCC_AHB3RSTR_MDMARST_Pos               (0U)\n#define RCC_AHB3RSTR_MDMARST_Msk               (0x1UL << RCC_AHB3RSTR_MDMARST_Pos)      /*!< 0x00000001 */\n#define RCC_AHB3RSTR_MDMARST                   RCC_AHB3RSTR_MDMARST_Msk\n#define RCC_AHB3RSTR_DMA2DRST_Pos              (4U)\n#define RCC_AHB3RSTR_DMA2DRST_Msk              (0x1UL << RCC_AHB3RSTR_DMA2DRST_Pos)     /*!< 0x00000010 */\n#define RCC_AHB3RSTR_DMA2DRST                  RCC_AHB3RSTR_DMA2DRST_Msk\n#define RCC_AHB3RSTR_JPGDECRST_Pos             (5U)\n#define RCC_AHB3RSTR_JPGDECRST_Msk             (0x1UL << RCC_AHB3RSTR_JPGDECRST_Pos)    /*!< 0x00000020 */\n#define RCC_AHB3RSTR_JPGDECRST                 RCC_AHB3RSTR_JPGDECRST_Msk\n#define RCC_AHB3RSTR_FMCRST_Pos                (12U)\n#define RCC_AHB3RSTR_FMCRST_Msk                (0x1UL << RCC_AHB3RSTR_FMCRST_Pos)      /*!< 0x00001000 */\n#define RCC_AHB3RSTR_FMCRST                    RCC_AHB3RSTR_FMCRST_Msk\n#define RCC_AHB3RSTR_QSPIRST_Pos               (14U)\n#define RCC_AHB3RSTR_QSPIRST_Msk               (0x1UL << RCC_AHB3RSTR_QSPIRST_Pos)     /*!< 0x00004000 */\n#define RCC_AHB3RSTR_QSPIRST                   RCC_AHB3RSTR_QSPIRST_Msk\n#define RCC_AHB3RSTR_SDMMC1RST_Pos             (16U)\n#define RCC_AHB3RSTR_SDMMC1RST_Msk             (0x1UL << RCC_AHB3RSTR_SDMMC1RST_Pos)   /*!< 0x00010000 */\n#define RCC_AHB3RSTR_SDMMC1RST                 RCC_AHB3RSTR_SDMMC1RST_Msk\n\n\n/********************  Bit definition for RCC_AHB1RSTR register  ***************/\n#define RCC_AHB1RSTR_DMA1RST_Pos               (0U)\n#define RCC_AHB1RSTR_DMA1RST_Msk               (0x1UL << RCC_AHB1RSTR_DMA1RST_Pos)      /*!< 0x00000001 */\n#define RCC_AHB1RSTR_DMA1RST                   RCC_AHB1RSTR_DMA1RST_Msk\n#define RCC_AHB1RSTR_DMA2RST_Pos               (1U)\n#define RCC_AHB1RSTR_DMA2RST_Msk               (0x1UL << RCC_AHB1RSTR_DMA2RST_Pos)      /*!< 0x00000002 */\n#define RCC_AHB1RSTR_DMA2RST                   RCC_AHB1RSTR_DMA2RST_Msk\n#define RCC_AHB1RSTR_ADC12RST_Pos              (5U)\n#define RCC_AHB1RSTR_ADC12RST_Msk              (0x1UL << RCC_AHB1RSTR_ADC12RST_Pos)     /*!< 0x00000020 */\n#define RCC_AHB1RSTR_ADC12RST                  RCC_AHB1RSTR_ADC12RST_Msk\n#define RCC_AHB1RSTR_ETH1MACRST_Pos            (15U)\n#define RCC_AHB1RSTR_ETH1MACRST_Msk            (0x1UL << RCC_AHB1RSTR_ETH1MACRST_Pos)   /*!< 0x00008000 */\n#define RCC_AHB1RSTR_ETH1MACRST                RCC_AHB1RSTR_ETH1MACRST_Msk\n#define RCC_AHB1RSTR_USB1OTGHSRST_Pos          (25U)\n#define RCC_AHB1RSTR_USB1OTGHSRST_Msk          (0x1UL << RCC_AHB1RSTR_USB1OTGHSRST_Pos) /*!< 0x02000000 */\n#define RCC_AHB1RSTR_USB1OTGHSRST              RCC_AHB1RSTR_USB1OTGHSRST_Msk\n#define RCC_AHB1RSTR_USB2OTGFSRST_Pos          (27U)\n#define RCC_AHB1RSTR_USB2OTGFSRST_Msk          (0x1UL << RCC_AHB1RSTR_USB2OTGFSRST_Pos) /*!< 0x08000000 */\n#define RCC_AHB1RSTR_USB2OTGFSRST              RCC_AHB1RSTR_USB2OTGFSRST_Msk\n\n/* Legacy define */\n#define RCC_AHB1RSTR_USB2OTGHSRST_Pos          RCC_AHB1RSTR_USB2OTGFSRST_Pos\n#define RCC_AHB1RSTR_USB2OTGHSRST_Msk          RCC_AHB1RSTR_USB2OTGFSRST_Msk\n#define RCC_AHB1RSTR_USB2OTGHSRST              RCC_AHB1RSTR_USB2OTGFSRST\n\n/********************  Bit definition for RCC_AHB2RSTR register  ***************/\n#define RCC_AHB2RSTR_DCMIRST_Pos               (0U)\n#define RCC_AHB2RSTR_DCMIRST_Msk               (0x1UL << RCC_AHB2RSTR_DCMIRST_Pos)       /*!< 0x00000001 */\n#define RCC_AHB2RSTR_DCMIRST                   RCC_AHB2RSTR_DCMIRST_Msk\n#define RCC_AHB2RSTR_CRYPRST_Pos               (4U)\n#define RCC_AHB2RSTR_CRYPRST_Msk               (0x1UL << RCC_AHB2RSTR_CRYPRST_Pos)       /*!< 0x00000010 */\n#define RCC_AHB2RSTR_CRYPRST                   RCC_AHB2RSTR_CRYPRST_Msk\n#define RCC_AHB2RSTR_HASHRST_Pos               (5U)\n#define RCC_AHB2RSTR_HASHRST_Msk               (0x1UL << RCC_AHB2RSTR_HASHRST_Pos)       /*!< 0x00000020 */\n#define RCC_AHB2RSTR_HASHRST                   RCC_AHB2RSTR_HASHRST_Msk\n#define RCC_AHB2RSTR_RNGRST_Pos                (6U)\n#define RCC_AHB2RSTR_RNGRST_Msk                (0x1UL << RCC_AHB2RSTR_RNGRST_Pos)        /*!< 0x00000040 */\n#define RCC_AHB2RSTR_RNGRST                    RCC_AHB2RSTR_RNGRST_Msk\n#define RCC_AHB2RSTR_SDMMC2RST_Pos             (9U)\n#define RCC_AHB2RSTR_SDMMC2RST_Msk             (0x1UL << RCC_AHB2RSTR_SDMMC2RST_Pos)     /*!< 0x00000200 */\n#define RCC_AHB2RSTR_SDMMC2RST                 RCC_AHB2RSTR_SDMMC2RST_Msk\n\n/********************  Bit definition for RCC_AHB4RSTR register  ******************/\n#define RCC_AHB4RSTR_GPIOARST_Pos              (0U)\n#define RCC_AHB4RSTR_GPIOARST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOARST_Pos)      /*!< 0x00000001 */\n#define RCC_AHB4RSTR_GPIOARST                  RCC_AHB4RSTR_GPIOARST_Msk\n#define RCC_AHB4RSTR_GPIOBRST_Pos              (1U)\n#define RCC_AHB4RSTR_GPIOBRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOBRST_Pos)      /*!< 0x00000002 */\n#define RCC_AHB4RSTR_GPIOBRST                  RCC_AHB4RSTR_GPIOBRST_Msk\n#define RCC_AHB4RSTR_GPIOCRST_Pos              (2U)\n#define RCC_AHB4RSTR_GPIOCRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOCRST_Pos)      /*!< 0x00000004 */\n#define RCC_AHB4RSTR_GPIOCRST                  RCC_AHB4RSTR_GPIOCRST_Msk\n#define RCC_AHB4RSTR_GPIODRST_Pos              (3U)\n#define RCC_AHB4RSTR_GPIODRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIODRST_Pos)      /*!< 0x00000008 */\n#define RCC_AHB4RSTR_GPIODRST                  RCC_AHB4RSTR_GPIODRST_Msk\n#define RCC_AHB4RSTR_GPIOERST_Pos              (4U)\n#define RCC_AHB4RSTR_GPIOERST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOERST_Pos)      /*!< 0x00000010 */\n#define RCC_AHB4RSTR_GPIOERST                  RCC_AHB4RSTR_GPIOERST_Msk\n#define RCC_AHB4RSTR_GPIOFRST_Pos              (5U)\n#define RCC_AHB4RSTR_GPIOFRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOFRST_Pos)       /*!< 0x00000020 */\n#define RCC_AHB4RSTR_GPIOFRST                  RCC_AHB4RSTR_GPIOFRST_Msk\n#define RCC_AHB4RSTR_GPIOGRST_Pos              (6U)\n#define RCC_AHB4RSTR_GPIOGRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOGRST_Pos)       /*!< 0x00000040 */\n#define RCC_AHB4RSTR_GPIOGRST                  RCC_AHB4RSTR_GPIOGRST_Msk\n#define RCC_AHB4RSTR_GPIOHRST_Pos              (7U)\n#define RCC_AHB4RSTR_GPIOHRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOHRST_Pos)       /*!< 0x00000080 */\n#define RCC_AHB4RSTR_GPIOHRST                  RCC_AHB4RSTR_GPIOHRST_Msk\n#define RCC_AHB4RSTR_GPIOIRST_Pos              (8U)\n#define RCC_AHB4RSTR_GPIOIRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOIRST_Pos)       /*!< 0x00000100 */\n#define RCC_AHB4RSTR_GPIOIRST                  RCC_AHB4RSTR_GPIOIRST_Msk\n#define RCC_AHB4RSTR_GPIOJRST_Pos              (9U)\n#define RCC_AHB4RSTR_GPIOJRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOJRST_Pos)       /*!< 0x00000200 */\n#define RCC_AHB4RSTR_GPIOJRST                  RCC_AHB4RSTR_GPIOJRST_Msk\n#define RCC_AHB4RSTR_GPIOKRST_Pos              (10U)\n#define RCC_AHB4RSTR_GPIOKRST_Msk              (0x1UL << RCC_AHB4RSTR_GPIOKRST_Pos)       /*!< 0x00000400 */\n#define RCC_AHB4RSTR_GPIOKRST                  RCC_AHB4RSTR_GPIOKRST_Msk\n#define RCC_AHB4RSTR_CRCRST_Pos                (19U)\n#define RCC_AHB4RSTR_CRCRST_Msk                (0x1UL << RCC_AHB4RSTR_CRCRST_Pos)         /*!< 0x00080000 */\n#define RCC_AHB4RSTR_CRCRST                    RCC_AHB4RSTR_CRCRST_Msk\n#define RCC_AHB4RSTR_BDMARST_Pos               (21U)\n#define RCC_AHB4RSTR_BDMARST_Msk               (0x1UL << RCC_AHB4RSTR_BDMARST_Pos)        /*!< 0x00200000 */\n#define RCC_AHB4RSTR_BDMARST                   RCC_AHB4RSTR_BDMARST_Msk\n#define RCC_AHB4RSTR_ADC3RST_Pos               (24U)\n#define RCC_AHB4RSTR_ADC3RST_Msk               (0x1UL << RCC_AHB4RSTR_ADC3RST_Pos)        /*!< 0x01000000 */\n#define RCC_AHB4RSTR_ADC3RST                   RCC_AHB4RSTR_ADC3RST_Msk\n#define RCC_AHB4RSTR_HSEMRST_Pos               (25U)\n#define RCC_AHB4RSTR_HSEMRST_Msk               (0x1UL << RCC_AHB4RSTR_HSEMRST_Pos)        /*!< 0x02000000 */\n#define RCC_AHB4RSTR_HSEMRST                   RCC_AHB4RSTR_HSEMRST_Msk\n\n\n/********************  Bit definition for RCC_APB3RSTR register  ******************/\n#define RCC_APB3RSTR_LTDCRST_Pos               (3U)\n#define RCC_APB3RSTR_LTDCRST_Msk               (0x1UL << RCC_APB3RSTR_LTDCRST_Pos) /*!< 0x00000008 */\n#define RCC_APB3RSTR_LTDCRST                   RCC_APB3RSTR_LTDCRST_Msk\n\n/********************  Bit definition for RCC_APB1LRSTR register  ******************/\n\n#define RCC_APB1LRSTR_TIM2RST_Pos              (0U)\n#define RCC_APB1LRSTR_TIM2RST_Msk              (0x1UL << RCC_APB1LRSTR_TIM2RST_Pos) /*!< 0x00000001 */\n#define RCC_APB1LRSTR_TIM2RST                  RCC_APB1LRSTR_TIM2RST_Msk\n#define RCC_APB1LRSTR_TIM3RST_Pos              (1U)\n#define RCC_APB1LRSTR_TIM3RST_Msk              (0x1UL << RCC_APB1LRSTR_TIM3RST_Pos) /*!< 0x00000002 */\n#define RCC_APB1LRSTR_TIM3RST                  RCC_APB1LRSTR_TIM3RST_Msk\n#define RCC_APB1LRSTR_TIM4RST_Pos              (2U)\n#define RCC_APB1LRSTR_TIM4RST_Msk              (0x1UL << RCC_APB1LRSTR_TIM4RST_Pos) /*!< 0x00000004 */\n#define RCC_APB1LRSTR_TIM4RST                  RCC_APB1LRSTR_TIM4RST_Msk\n#define RCC_APB1LRSTR_TIM5RST_Pos              (3U)\n#define RCC_APB1LRSTR_TIM5RST_Msk              (0x1UL << RCC_APB1LRSTR_TIM5RST_Pos) /*!< 0x00000008 */\n#define RCC_APB1LRSTR_TIM5RST                  RCC_APB1LRSTR_TIM5RST_Msk\n#define RCC_APB1LRSTR_TIM6RST_Pos              (4U)\n#define RCC_APB1LRSTR_TIM6RST_Msk              (0x1UL << RCC_APB1LRSTR_TIM6RST_Pos) /*!< 0x00000010 */\n#define RCC_APB1LRSTR_TIM6RST                  RCC_APB1LRSTR_TIM6RST_Msk\n#define RCC_APB1LRSTR_TIM7RST_Pos              (5U)\n#define RCC_APB1LRSTR_TIM7RST_Msk              (0x1UL << RCC_APB1LRSTR_TIM7RST_Pos) /*!< 0x00000020 */\n#define RCC_APB1LRSTR_TIM7RST                  RCC_APB1LRSTR_TIM7RST_Msk\n#define RCC_APB1LRSTR_TIM12RST_Pos             (6U)\n#define RCC_APB1LRSTR_TIM12RST_Msk             (0x1UL << RCC_APB1LRSTR_TIM12RST_Pos) /*!< 0x00000040 */\n#define RCC_APB1LRSTR_TIM12RST                 RCC_APB1LRSTR_TIM12RST_Msk\n#define RCC_APB1LRSTR_TIM13RST_Pos             (7U)\n#define RCC_APB1LRSTR_TIM13RST_Msk             (0x1UL << RCC_APB1LRSTR_TIM13RST_Pos) /*!< 0x00000080 */\n#define RCC_APB1LRSTR_TIM13RST                 RCC_APB1LRSTR_TIM13RST_Msk\n#define RCC_APB1LRSTR_TIM14RST_Pos             (8U)\n#define RCC_APB1LRSTR_TIM14RST_Msk             (0x1UL << RCC_APB1LRSTR_TIM14RST_Pos) /*!< 0x00000100 */\n#define RCC_APB1LRSTR_TIM14RST                 RCC_APB1LRSTR_TIM14RST_Msk\n#define RCC_APB1LRSTR_LPTIM1RST_Pos            (9U)\n#define RCC_APB1LRSTR_LPTIM1RST_Msk            (0x1UL << RCC_APB1LRSTR_LPTIM1RST_Pos) /*!< 0x00000200 */\n#define RCC_APB1LRSTR_LPTIM1RST                RCC_APB1LRSTR_LPTIM1RST_Msk\n#define RCC_APB1LRSTR_SPI2RST_Pos              (14U)\n#define RCC_APB1LRSTR_SPI2RST_Msk              (0x1UL << RCC_APB1LRSTR_SPI2RST_Pos) /*!< 0x00004000 */\n#define RCC_APB1LRSTR_SPI2RST                  RCC_APB1LRSTR_SPI2RST_Msk\n#define RCC_APB1LRSTR_SPI3RST_Pos              (15U)\n#define RCC_APB1LRSTR_SPI3RST_Msk              (0x1UL << RCC_APB1LRSTR_SPI3RST_Pos) /*!< 0x00008000 */\n#define RCC_APB1LRSTR_SPI3RST                  RCC_APB1LRSTR_SPI3RST_Msk\n#define RCC_APB1LRSTR_SPDIFRXRST_Pos           (16U)\n#define RCC_APB1LRSTR_SPDIFRXRST_Msk           (0x1UL << RCC_APB1LRSTR_SPDIFRXRST_Pos) /*!< 0x00010000 */\n#define RCC_APB1LRSTR_SPDIFRXRST               RCC_APB1LRSTR_SPDIFRXRST_Msk\n#define RCC_APB1LRSTR_USART2RST_Pos            (17U)\n#define RCC_APB1LRSTR_USART2RST_Msk            (0x1UL << RCC_APB1LRSTR_USART2RST_Pos) /*!< 0x00020000 */\n#define RCC_APB1LRSTR_USART2RST                RCC_APB1LRSTR_USART2RST_Msk\n#define RCC_APB1LRSTR_USART3RST_Pos            (18U)\n#define RCC_APB1LRSTR_USART3RST_Msk            (0x1UL << RCC_APB1LRSTR_USART3RST_Pos) /*!< 0x00040000 */\n#define RCC_APB1LRSTR_USART3RST                RCC_APB1LRSTR_USART3RST_Msk\n#define RCC_APB1LRSTR_UART4RST_Pos             (19U)\n#define RCC_APB1LRSTR_UART4RST_Msk             (0x1UL << RCC_APB1LRSTR_UART4RST_Pos) /*!< 0x00080000 */\n#define RCC_APB1LRSTR_UART4RST                 RCC_APB1LRSTR_UART4RST_Msk\n#define RCC_APB1LRSTR_UART5RST_Pos             (20U)\n#define RCC_APB1LRSTR_UART5RST_Msk             (0x1UL << RCC_APB1LRSTR_UART5RST_Pos) /*!< 0x00100000 */\n#define RCC_APB1LRSTR_UART5RST                 RCC_APB1LRSTR_UART5RST_Msk\n#define RCC_APB1LRSTR_I2C1RST_Pos              (21U)\n#define RCC_APB1LRSTR_I2C1RST_Msk              (0x1UL << RCC_APB1LRSTR_I2C1RST_Pos) /*!< 0x00200000 */\n#define RCC_APB1LRSTR_I2C1RST                  RCC_APB1LRSTR_I2C1RST_Msk\n#define RCC_APB1LRSTR_I2C2RST_Pos              (22U)\n#define RCC_APB1LRSTR_I2C2RST_Msk              (0x1UL << RCC_APB1LRSTR_I2C2RST_Pos) /*!< 0x00400000 */\n#define RCC_APB1LRSTR_I2C2RST                  RCC_APB1LRSTR_I2C2RST_Msk\n#define RCC_APB1LRSTR_I2C3RST_Pos              (23U)\n#define RCC_APB1LRSTR_I2C3RST_Msk              (0x1UL << RCC_APB1LRSTR_I2C3RST_Pos) /*!< 0x00800000 */\n#define RCC_APB1LRSTR_I2C3RST                  RCC_APB1LRSTR_I2C3RST_Msk\n#define RCC_APB1LRSTR_CECRST_Pos               (27U)\n#define RCC_APB1LRSTR_CECRST_Msk               (0x1UL << RCC_APB1LRSTR_CECRST_Pos) /*!< 0x08000000 */\n#define RCC_APB1LRSTR_CECRST                   RCC_APB1LRSTR_CECRST_Msk\n#define RCC_APB1LRSTR_DAC12RST_Pos             (29U)\n#define RCC_APB1LRSTR_DAC12RST_Msk             (0x1UL << RCC_APB1LRSTR_DAC12RST_Pos) /*!< 0x20000000 */\n#define RCC_APB1LRSTR_DAC12RST                 RCC_APB1LRSTR_DAC12RST_Msk\n#define RCC_APB1LRSTR_UART7RST_Pos             (30U)\n#define RCC_APB1LRSTR_UART7RST_Msk             (0x1UL << RCC_APB1LRSTR_UART7RST_Pos) /*!< 0x40000000 */\n#define RCC_APB1LRSTR_UART7RST                 RCC_APB1LRSTR_UART7RST_Msk\n#define RCC_APB1LRSTR_UART8RST_Pos             (31U)\n#define RCC_APB1LRSTR_UART8RST_Msk             (0x1UL << RCC_APB1LRSTR_UART8RST_Pos) /*!< 0x80000000 */\n#define RCC_APB1LRSTR_UART8RST                 RCC_APB1LRSTR_UART8RST_Msk\n\n/* Legacy define */\n#define RCC_APB1LRSTR_HDMICECRST_Pos           RCC_APB1LRSTR_CECRST_Pos\n#define RCC_APB1LRSTR_HDMICECRST_Msk           RCC_APB1LRSTR_CECRST_Msk\n#define RCC_APB1LRSTR_HDMICECRST               RCC_APB1LRSTR_CECRST\n/********************  Bit definition for RCC_APB1HRSTR register  ******************/\n#define RCC_APB1HRSTR_CRSRST_Pos               (1U)\n#define RCC_APB1HRSTR_CRSRST_Msk               (0x1UL << RCC_APB1HRSTR_CRSRST_Pos) /*!< 0x00000002 */\n#define RCC_APB1HRSTR_CRSRST                   RCC_APB1HRSTR_CRSRST_Msk\n#define RCC_APB1HRSTR_SWPMIRST_Pos             (2U)\n#define RCC_APB1HRSTR_SWPMIRST_Msk             (0x1UL << RCC_APB1HRSTR_SWPMIRST_Pos) /*!< 0x00000004 */\n#define RCC_APB1HRSTR_SWPMIRST                 RCC_APB1HRSTR_SWPMIRST_Msk\n#define RCC_APB1HRSTR_OPAMPRST_Pos             (4U)\n#define RCC_APB1HRSTR_OPAMPRST_Msk             (0x1UL << RCC_APB1HRSTR_OPAMPRST_Pos) /*!< 0x00000010 */\n#define RCC_APB1HRSTR_OPAMPRST                 RCC_APB1HRSTR_OPAMPRST_Msk\n#define RCC_APB1HRSTR_MDIOSRST_Pos             (5U)\n#define RCC_APB1HRSTR_MDIOSRST_Msk             (0x1UL << RCC_APB1HRSTR_MDIOSRST_Pos) /*!< 0x00000020 */\n#define RCC_APB1HRSTR_MDIOSRST                 RCC_APB1HRSTR_MDIOSRST_Msk\n#define RCC_APB1HRSTR_FDCANRST_Pos             (8U)\n#define RCC_APB1HRSTR_FDCANRST_Msk             (0x1UL << RCC_APB1HRSTR_FDCANRST_Pos) /*!< 0x00000100 */\n#define RCC_APB1HRSTR_FDCANRST                 RCC_APB1HRSTR_FDCANRST_Msk\n\n/********************  Bit definition for RCC_APB2RSTR register  ******************/\n#define RCC_APB2RSTR_TIM1RST_Pos               (0U)\n#define RCC_APB2RSTR_TIM1RST_Msk               (0x1UL << RCC_APB2RSTR_TIM1RST_Pos) /*!< 0x00000001 */\n#define RCC_APB2RSTR_TIM1RST                   RCC_APB2RSTR_TIM1RST_Msk\n#define RCC_APB2RSTR_TIM8RST_Pos               (1U)\n#define RCC_APB2RSTR_TIM8RST_Msk               (0x1UL << RCC_APB2RSTR_TIM8RST_Pos) /*!< 0x00000002 */\n#define RCC_APB2RSTR_TIM8RST                   RCC_APB2RSTR_TIM8RST_Msk\n#define RCC_APB2RSTR_USART1RST_Pos             (4U)\n#define RCC_APB2RSTR_USART1RST_Msk             (0x1UL << RCC_APB2RSTR_USART1RST_Pos) /*!< 0x00000010 */\n#define RCC_APB2RSTR_USART1RST                 RCC_APB2RSTR_USART1RST_Msk\n#define RCC_APB2RSTR_USART6RST_Pos             (5U)\n#define RCC_APB2RSTR_USART6RST_Msk             (0x1UL << RCC_APB2RSTR_USART6RST_Pos) /*!< 0x00000020 */\n#define RCC_APB2RSTR_USART6RST                 RCC_APB2RSTR_USART6RST_Msk\n#define RCC_APB2RSTR_SPI1RST_Pos               (12U)\n#define RCC_APB2RSTR_SPI1RST_Msk               (0x1UL << RCC_APB2RSTR_SPI1RST_Pos) /*!< 0x00001000 */\n#define RCC_APB2RSTR_SPI1RST                   RCC_APB2RSTR_SPI1RST_Msk\n#define RCC_APB2RSTR_SPI4RST_Pos               (13U)\n#define RCC_APB2RSTR_SPI4RST_Msk               (0x1UL << RCC_APB2RSTR_SPI4RST_Pos) /*!< 0x00002000 */\n#define RCC_APB2RSTR_SPI4RST                   RCC_APB2RSTR_SPI4RST_Msk\n#define RCC_APB2RSTR_TIM15RST_Pos              (16U)\n#define RCC_APB2RSTR_TIM15RST_Msk              (0x1UL << RCC_APB2RSTR_TIM15RST_Pos) /*!< 0x00010000 */\n#define RCC_APB2RSTR_TIM15RST                  RCC_APB2RSTR_TIM15RST_Msk\n#define RCC_APB2RSTR_TIM16RST_Pos              (17U)\n#define RCC_APB2RSTR_TIM16RST_Msk              (0x1UL << RCC_APB2RSTR_TIM16RST_Pos) /*!< 0x00020000 */\n#define RCC_APB2RSTR_TIM16RST                  RCC_APB2RSTR_TIM16RST_Msk\n#define RCC_APB2RSTR_TIM17RST_Pos              (18U)\n#define RCC_APB2RSTR_TIM17RST_Msk              (0x1UL << RCC_APB2RSTR_TIM17RST_Pos) /*!< 0x00040000 */\n#define RCC_APB2RSTR_TIM17RST                  RCC_APB2RSTR_TIM17RST_Msk\n#define RCC_APB2RSTR_SPI5RST_Pos               (20U)\n#define RCC_APB2RSTR_SPI5RST_Msk               (0x1UL << RCC_APB2RSTR_SPI5RST_Pos) /*!< 0x00100000 */\n#define RCC_APB2RSTR_SPI5RST                   RCC_APB2RSTR_SPI5RST_Msk\n#define RCC_APB2RSTR_SAI1RST_Pos               (22U)\n#define RCC_APB2RSTR_SAI1RST_Msk               (0x1UL << RCC_APB2RSTR_SAI1RST_Pos) /*!< 0x00400000 */\n#define RCC_APB2RSTR_SAI1RST                   RCC_APB2RSTR_SAI1RST_Msk\n#define RCC_APB2RSTR_SAI2RST_Pos               (23U)\n#define RCC_APB2RSTR_SAI2RST_Msk               (0x1UL << RCC_APB2RSTR_SAI2RST_Pos) /*!< 0x00800000 */\n#define RCC_APB2RSTR_SAI2RST                   RCC_APB2RSTR_SAI2RST_Msk\n#define RCC_APB2RSTR_SAI3RST_Pos               (24U)\n#define RCC_APB2RSTR_SAI3RST_Msk               (0x1UL << RCC_APB2RSTR_SAI3RST_Pos) /*!< 0x01000000 */\n#define RCC_APB2RSTR_SAI3RST                   RCC_APB2RSTR_SAI3RST_Msk\n#define RCC_APB2RSTR_DFSDM1RST_Pos             (28U)\n#define RCC_APB2RSTR_DFSDM1RST_Msk             (0x1UL << RCC_APB2RSTR_DFSDM1RST_Pos) /*!< 0x10000000 */\n#define RCC_APB2RSTR_DFSDM1RST                 RCC_APB2RSTR_DFSDM1RST_Msk\n#define RCC_APB2RSTR_HRTIMRST_Pos              (29U)\n#define RCC_APB2RSTR_HRTIMRST_Msk              (0x1UL << RCC_APB2RSTR_HRTIMRST_Pos) /*!< 0x20000000 */\n#define RCC_APB2RSTR_HRTIMRST                  RCC_APB2RSTR_HRTIMRST_Msk\n\n/********************  Bit definition for RCC_APB4RSTR register  ******************/\n#define RCC_APB4RSTR_SYSCFGRST_Pos             (1U)\n#define RCC_APB4RSTR_SYSCFGRST_Msk             (0x1UL << RCC_APB4RSTR_SYSCFGRST_Pos) /*!< 0x00000002 */\n#define RCC_APB4RSTR_SYSCFGRST                 RCC_APB4RSTR_SYSCFGRST_Msk\n#define RCC_APB4RSTR_LPUART1RST_Pos            (3U)\n#define RCC_APB4RSTR_LPUART1RST_Msk            (0x1UL << RCC_APB4RSTR_LPUART1RST_Pos) /*!< 0x00000008 */\n#define RCC_APB4RSTR_LPUART1RST                RCC_APB4RSTR_LPUART1RST_Msk\n#define RCC_APB4RSTR_SPI6RST_Pos               (5U)\n#define RCC_APB4RSTR_SPI6RST_Msk               (0x1UL << RCC_APB4RSTR_SPI6RST_Pos) /*!< 0x00000020 */\n#define RCC_APB4RSTR_SPI6RST                   RCC_APB4RSTR_SPI6RST_Msk\n#define RCC_APB4RSTR_I2C4RST_Pos               (7U)\n#define RCC_APB4RSTR_I2C4RST_Msk               (0x1UL << RCC_APB4RSTR_I2C4RST_Pos) /*!< 0x00000080 */\n#define RCC_APB4RSTR_I2C4RST                   RCC_APB4RSTR_I2C4RST_Msk\n#define RCC_APB4RSTR_LPTIM2RST_Pos             (9U)\n#define RCC_APB4RSTR_LPTIM2RST_Msk             (0x1UL << RCC_APB4RSTR_LPTIM2RST_Pos) /*!< 0x00000200 */\n#define RCC_APB4RSTR_LPTIM2RST                 RCC_APB4RSTR_LPTIM2RST_Msk\n#define RCC_APB4RSTR_LPTIM3RST_Pos             (10U)\n#define RCC_APB4RSTR_LPTIM3RST_Msk             (0x1UL << RCC_APB4RSTR_LPTIM3RST_Pos) /*!< 0x00000400 */\n#define RCC_APB4RSTR_LPTIM3RST                 RCC_APB4RSTR_LPTIM3RST_Msk\n#define RCC_APB4RSTR_LPTIM4RST_Pos             (11U)\n#define RCC_APB4RSTR_LPTIM4RST_Msk             (0x1UL << RCC_APB4RSTR_LPTIM4RST_Pos) /*!< 0x00000800 */\n#define RCC_APB4RSTR_LPTIM4RST                 RCC_APB4RSTR_LPTIM4RST_Msk\n#define RCC_APB4RSTR_LPTIM5RST_Pos             (12U)\n#define RCC_APB4RSTR_LPTIM5RST_Msk             (0x1UL << RCC_APB4RSTR_LPTIM5RST_Pos) /*!< 0x00001000 */\n#define RCC_APB4RSTR_LPTIM5RST                 RCC_APB4RSTR_LPTIM5RST_Msk\n#define RCC_APB4RSTR_COMP12RST_Pos             (14U)\n#define RCC_APB4RSTR_COMP12RST_Msk             (0x1UL << RCC_APB4RSTR_COMP12RST_Pos) /*!< 0x00004000 */\n#define RCC_APB4RSTR_COMP12RST                 RCC_APB4RSTR_COMP12RST_Msk\n#define RCC_APB4RSTR_VREFRST_Pos               (15U)\n#define RCC_APB4RSTR_VREFRST_Msk               (0x1UL << RCC_APB4RSTR_VREFRST_Pos) /*!< 0x00008000 */\n#define RCC_APB4RSTR_VREFRST                   RCC_APB4RSTR_VREFRST_Msk\n#define RCC_APB4RSTR_SAI4RST_Pos               (21U)\n#define RCC_APB4RSTR_SAI4RST_Msk               (0x1UL << RCC_APB4RSTR_SAI4RST_Pos) /*!< 0x00200000 */\n#define RCC_APB4RSTR_SAI4RST                   RCC_APB4RSTR_SAI4RST_Msk\n\n\n/********************  Bit definition for RCC_GCR register  ********************/\n#define RCC_GCR_WW1RSC_Pos                     (0U)\n#define RCC_GCR_WW1RSC_Msk                     (0x1UL << RCC_GCR_WW1RSC_Pos)   /*!< 0x00000001 */\n#define RCC_GCR_WW1RSC                         RCC_GCR_WW1RSC_Msk\n\n/********************  Bit definition for RCC_D3AMR register  ********************/\n#define RCC_D3AMR_BDMAAMEN_Pos                 (0U)\n#define RCC_D3AMR_BDMAAMEN_Msk                 (0x1UL << RCC_D3AMR_BDMAAMEN_Pos) /*!< 0x00000001 */\n#define RCC_D3AMR_BDMAAMEN                     RCC_D3AMR_BDMAAMEN_Msk\n#define RCC_D3AMR_LPUART1AMEN_Pos              (3U)\n#define RCC_D3AMR_LPUART1AMEN_Msk              (0x1UL << RCC_D3AMR_LPUART1AMEN_Pos) /*!< 0x00000008 */\n#define RCC_D3AMR_LPUART1AMEN                  RCC_D3AMR_LPUART1AMEN_Msk\n#define RCC_D3AMR_SPI6AMEN_Pos                 (5U)\n#define RCC_D3AMR_SPI6AMEN_Msk                 (0x1UL << RCC_D3AMR_SPI6AMEN_Pos) /*!< 0x00000020 */\n#define RCC_D3AMR_SPI6AMEN                     RCC_D3AMR_SPI6AMEN_Msk\n#define RCC_D3AMR_I2C4AMEN_Pos                 (7U)\n#define RCC_D3AMR_I2C4AMEN_Msk                 (0x1UL << RCC_D3AMR_I2C4AMEN_Pos) /*!< 0x00000080 */\n#define RCC_D3AMR_I2C4AMEN                     RCC_D3AMR_I2C4AMEN_Msk\n#define RCC_D3AMR_LPTIM2AMEN_Pos               (9U)\n#define RCC_D3AMR_LPTIM2AMEN_Msk               (0x1UL << RCC_D3AMR_LPTIM2AMEN_Pos) /*!< 0x00000200 */\n#define RCC_D3AMR_LPTIM2AMEN                   RCC_D3AMR_LPTIM2AMEN_Msk\n#define RCC_D3AMR_LPTIM3AMEN_Pos               (10U)\n#define RCC_D3AMR_LPTIM3AMEN_Msk               (0x1UL << RCC_D3AMR_LPTIM3AMEN_Pos) /*!< 0x00000400 */\n#define RCC_D3AMR_LPTIM3AMEN                   RCC_D3AMR_LPTIM3AMEN_Msk\n#define RCC_D3AMR_LPTIM4AMEN_Pos               (11U)\n#define RCC_D3AMR_LPTIM4AMEN_Msk               (0x1UL << RCC_D3AMR_LPTIM4AMEN_Pos) /*!< 0x00000800 */\n#define RCC_D3AMR_LPTIM4AMEN                   RCC_D3AMR_LPTIM4AMEN_Msk\n#define RCC_D3AMR_LPTIM5AMEN_Pos               (12U)\n#define RCC_D3AMR_LPTIM5AMEN_Msk               (0x1UL << RCC_D3AMR_LPTIM5AMEN_Pos) /*!< 0x00001000 */\n#define RCC_D3AMR_LPTIM5AMEN                   RCC_D3AMR_LPTIM5AMEN_Msk\n#define RCC_D3AMR_COMP12AMEN_Pos               (14U)\n#define RCC_D3AMR_COMP12AMEN_Msk               (0x1UL << RCC_D3AMR_COMP12AMEN_Pos) /*!< 0x00004000 */\n#define RCC_D3AMR_COMP12AMEN                   RCC_D3AMR_COMP12AMEN_Msk\n#define RCC_D3AMR_VREFAMEN_Pos                 (15U)\n#define RCC_D3AMR_VREFAMEN_Msk                 (0x1UL << RCC_D3AMR_VREFAMEN_Pos) /*!< 0x00008000 */\n#define RCC_D3AMR_VREFAMEN                     RCC_D3AMR_VREFAMEN_Msk\n#define RCC_D3AMR_RTCAMEN_Pos                  (16U)\n#define RCC_D3AMR_RTCAMEN_Msk                  (0x1UL << RCC_D3AMR_RTCAMEN_Pos) /*!< 0x00010000 */\n#define RCC_D3AMR_RTCAMEN                      RCC_D3AMR_RTCAMEN_Msk\n#define RCC_D3AMR_CRCAMEN_Pos                  (19U)\n#define RCC_D3AMR_CRCAMEN_Msk                  (0x1UL << RCC_D3AMR_CRCAMEN_Pos) /*!< 0x00080000 */\n#define RCC_D3AMR_CRCAMEN                      RCC_D3AMR_CRCAMEN_Msk\n#define RCC_D3AMR_SAI4AMEN_Pos                 (21U)\n#define RCC_D3AMR_SAI4AMEN_Msk                 (0x1UL << RCC_D3AMR_SAI4AMEN_Pos) /*!< 0x00200000 */\n#define RCC_D3AMR_SAI4AMEN                     RCC_D3AMR_SAI4AMEN_Msk\n#define RCC_D3AMR_ADC3AMEN_Pos                 (24U)\n#define RCC_D3AMR_ADC3AMEN_Msk                 (0x1UL << RCC_D3AMR_ADC3AMEN_Pos) /*!< 0x01000000 */\n#define RCC_D3AMR_ADC3AMEN                     RCC_D3AMR_ADC3AMEN_Msk\n\n\n#define RCC_D3AMR_BKPRAMAMEN_Pos               (28U)\n#define RCC_D3AMR_BKPRAMAMEN_Msk               (0x1UL << RCC_D3AMR_BKPRAMAMEN_Pos) /*!< 0x10000000 */\n#define RCC_D3AMR_BKPRAMAMEN                   RCC_D3AMR_BKPRAMAMEN_Msk\n#define RCC_D3AMR_SRAM4AMEN_Pos                (29U)\n#define RCC_D3AMR_SRAM4AMEN_Msk                (0x1UL << RCC_D3AMR_SRAM4AMEN_Pos) /*!< 0x20000000 */\n#define RCC_D3AMR_SRAM4AMEN                    RCC_D3AMR_SRAM4AMEN_Msk\n/********************  Bit definition for RCC_AHB3LPENR register  **************/\n#define RCC_AHB3LPENR_MDMALPEN_Pos             (0U)\n#define RCC_AHB3LPENR_MDMALPEN_Msk             (0x1UL << RCC_AHB3LPENR_MDMALPEN_Pos)         /*!< 0x00000001 */\n#define RCC_AHB3LPENR_MDMALPEN                 RCC_AHB3LPENR_MDMALPEN_Msk\n#define RCC_AHB3LPENR_DMA2DLPEN_Pos            (4U)\n#define RCC_AHB3LPENR_DMA2DLPEN_Msk            (0x1UL << RCC_AHB3LPENR_DMA2DLPEN_Pos)        /*!< 0x00000010 */\n#define RCC_AHB3LPENR_DMA2DLPEN                RCC_AHB3LPENR_DMA2DLPEN_Msk\n#define RCC_AHB3LPENR_JPGDECLPEN_Pos           (5U)\n#define RCC_AHB3LPENR_JPGDECLPEN_Msk           (0x1UL << RCC_AHB3LPENR_JPGDECLPEN_Pos)       /*!< 0x00000020 */\n#define RCC_AHB3LPENR_JPGDECLPEN               RCC_AHB3LPENR_JPGDECLPEN_Msk\n#define RCC_AHB3LPENR_FLASHLPEN_Pos            (8U)\n#define RCC_AHB3LPENR_FLASHLPEN_Msk            (0x1UL << RCC_AHB3LPENR_FLASHLPEN_Pos)        /*!< 0x00000100 */\n#define RCC_AHB3LPENR_FLASHLPEN                RCC_AHB3LPENR_FLASHLPEN_Msk\n#define RCC_AHB3LPENR_FMCLPEN_Pos              (12U)\n#define RCC_AHB3LPENR_FMCLPEN_Msk              (0x1UL << RCC_AHB3LPENR_FMCLPEN_Pos)          /*!< 0x00001000 */\n#define RCC_AHB3LPENR_FMCLPEN                  RCC_AHB3LPENR_FMCLPEN_Msk\n#define RCC_AHB3LPENR_QSPILPEN_Pos             (14U)\n#define RCC_AHB3LPENR_QSPILPEN_Msk             (0x1UL << RCC_AHB3LPENR_QSPILPEN_Pos)         /*!< 0x00004000 */\n#define RCC_AHB3LPENR_QSPILPEN                 RCC_AHB3LPENR_QSPILPEN_Msk\n#define RCC_AHB3LPENR_SDMMC1LPEN_Pos           (16U)\n#define RCC_AHB3LPENR_SDMMC1LPEN_Msk           (0x1UL << RCC_AHB3LPENR_SDMMC1LPEN_Pos)       /*!< 0x00010000 */\n#define RCC_AHB3LPENR_SDMMC1LPEN               RCC_AHB3LPENR_SDMMC1LPEN_Msk\n#define RCC_AHB3LPENR_DTCM1LPEN_Pos            (28U)\n#define RCC_AHB3LPENR_DTCM1LPEN_Msk            (0x1UL << RCC_AHB3LPENR_DTCM1LPEN_Pos)        /*!< 0x10000000 */\n#define RCC_AHB3LPENR_DTCM1LPEN                RCC_AHB3LPENR_DTCM1LPEN_Msk\n#define RCC_AHB3LPENR_DTCM2LPEN_Pos            (29U)\n#define RCC_AHB3LPENR_DTCM2LPEN_Msk            (0x1UL << RCC_AHB3LPENR_DTCM2LPEN_Pos)        /*!< 0x20000000 */\n#define RCC_AHB3LPENR_DTCM2LPEN                RCC_AHB3LPENR_DTCM2LPEN_Msk\n#define RCC_AHB3LPENR_ITCMLPEN_Pos             (30U)\n#define RCC_AHB3LPENR_ITCMLPEN_Msk             (0x1UL << RCC_AHB3LPENR_ITCMLPEN_Pos)         /*!< 0x40000000 */\n#define RCC_AHB3LPENR_ITCMLPEN                 RCC_AHB3LPENR_ITCMLPEN_Msk\n#define RCC_AHB3LPENR_AXISRAMLPEN_Pos          (31U)\n#define RCC_AHB3LPENR_AXISRAMLPEN_Msk          (0x1UL << RCC_AHB3LPENR_AXISRAMLPEN_Pos)      /*!< 0x80000000 */\n#define RCC_AHB3LPENR_AXISRAMLPEN              RCC_AHB3LPENR_AXISRAMLPEN_Msk\n\n\n/********************  Bit definition for RCC_AHB1LPENR register  ***************/\n#define RCC_AHB1LPENR_DMA1LPEN_Pos             (0U)\n#define RCC_AHB1LPENR_DMA1LPEN_Msk             (0x1UL << RCC_AHB1LPENR_DMA1LPEN_Pos) /*!< 0x00000001 */\n#define RCC_AHB1LPENR_DMA1LPEN                 RCC_AHB1LPENR_DMA1LPEN_Msk\n#define RCC_AHB1LPENR_DMA2LPEN_Pos             (1U)\n#define RCC_AHB1LPENR_DMA2LPEN_Msk             (0x1UL << RCC_AHB1LPENR_DMA2LPEN_Pos) /*!< 0x00000002 */\n#define RCC_AHB1LPENR_DMA2LPEN                 RCC_AHB1LPENR_DMA2LPEN_Msk\n#define RCC_AHB1LPENR_ADC12LPEN_Pos            (5U)\n#define RCC_AHB1LPENR_ADC12LPEN_Msk            (0x1UL << RCC_AHB1LPENR_ADC12LPEN_Pos) /*!< 0x00000020 */\n#define RCC_AHB1LPENR_ADC12LPEN                RCC_AHB1LPENR_ADC12LPEN_Msk\n#define RCC_AHB1LPENR_ETH1MACLPEN_Pos          (15U)\n#define RCC_AHB1LPENR_ETH1MACLPEN_Msk          (0x1UL << RCC_AHB1LPENR_ETH1MACLPEN_Pos) /*!< 0x00008000 */\n#define RCC_AHB1LPENR_ETH1MACLPEN              RCC_AHB1LPENR_ETH1MACLPEN_Msk\n#define RCC_AHB1LPENR_ETH1TXLPEN_Pos           (16U)\n#define RCC_AHB1LPENR_ETH1TXLPEN_Msk           (0x1UL << RCC_AHB1LPENR_ETH1TXLPEN_Pos) /*!< 0x00010000 */\n#define RCC_AHB1LPENR_ETH1TXLPEN               RCC_AHB1LPENR_ETH1TXLPEN_Msk\n#define RCC_AHB1LPENR_ETH1RXLPEN_Pos           (17U)\n#define RCC_AHB1LPENR_ETH1RXLPEN_Msk           (0x1UL << RCC_AHB1LPENR_ETH1RXLPEN_Pos) /*!< 0x00020000 */\n#define RCC_AHB1LPENR_ETH1RXLPEN               RCC_AHB1LPENR_ETH1RXLPEN_Msk\n#define RCC_AHB1LPENR_USB1OTGHSLPEN_Pos        (25U)\n#define RCC_AHB1LPENR_USB1OTGHSLPEN_Msk        (0x1UL << RCC_AHB1LPENR_USB1OTGHSLPEN_Pos) /*!< 0x02000000 */\n#define RCC_AHB1LPENR_USB1OTGHSLPEN            RCC_AHB1LPENR_USB1OTGHSLPEN_Msk\n#define RCC_AHB1LPENR_USB1OTGHSULPILPEN_Pos    (26U)\n#define RCC_AHB1LPENR_USB1OTGHSULPILPEN_Msk    (0x1UL << RCC_AHB1LPENR_USB1OTGHSULPILPEN_Pos) /*!< 0x04000000 */\n#define RCC_AHB1LPENR_USB1OTGHSULPILPEN        RCC_AHB1LPENR_USB1OTGHSULPILPEN_Msk\n#define RCC_AHB1LPENR_USB2OTGFSLPEN_Pos        (27U)\n#define RCC_AHB1LPENR_USB2OTGFSLPEN_Msk        (0x1UL << RCC_AHB1LPENR_USB2OTGFSLPEN_Pos) /*!< 0x08000000 */\n#define RCC_AHB1LPENR_USB2OTGFSLPEN            RCC_AHB1LPENR_USB2OTGFSLPEN_Msk\n#define RCC_AHB1LPENR_USB2OTGFSULPILPEN_Pos    (28U)\n#define RCC_AHB1LPENR_USB2OTGFSULPILPEN_Msk    (0x1UL << RCC_AHB1LPENR_USB2OTGFSULPILPEN_Pos) /*!< 0x10000000 */\n#define RCC_AHB1LPENR_USB2OTGFSULPILPEN        RCC_AHB1LPENR_USB2OTGFSULPILPEN_Msk\n\n/* Legacy define */\n#define RCC_AHB1LPENR_USB2OTGHSLPEN_Pos        RCC_AHB1LPENR_USB2OTGFSLPEN_Pos\n#define RCC_AHB1LPENR_USB2OTGHSLPEN_Msk        RCC_AHB1LPENR_USB2OTGFSLPEN_Msk\n#define RCC_AHB1LPENR_USB2OTGHSLPEN            RCC_AHB1LPENR_USB2OTGFSLPEN\n#define RCC_AHB1LPENR_USB2OTGHSULPILPEN_Pos    RCC_AHB1LPENR_USB2OTGFSULPILPEN_Pos\n#define RCC_AHB1LPENR_USB2OTGHSULPILPEN_Msk    RCC_AHB1LPENR_USB2OTGFSULPILPEN_Msk\n#define RCC_AHB1LPENR_USB2OTGHSULPILPEN        RCC_AHB1LPENR_USB2OTGFSULPILPEN\n\n/********************  Bit definition for RCC_AHB2LPENR register  ***************/\n#define RCC_AHB2LPENR_DCMILPEN_Pos             (0U)\n#define RCC_AHB2LPENR_DCMILPEN_Msk             (0x1UL << RCC_AHB2LPENR_DCMILPEN_Pos) /*!< 0x00000001 */\n#define RCC_AHB2LPENR_DCMILPEN                 RCC_AHB2LPENR_DCMILPEN_Msk\n#define RCC_AHB2LPENR_CRYPLPEN_Pos             (4U)\n#define RCC_AHB2LPENR_CRYPLPEN_Msk             (0x1UL << RCC_AHB2LPENR_CRYPLPEN_Pos) /*!< 0x00000010 */\n#define RCC_AHB2LPENR_CRYPLPEN                 RCC_AHB2LPENR_CRYPLPEN_Msk\n#define RCC_AHB2LPENR_HASHLPEN_Pos             (5U)\n#define RCC_AHB2LPENR_HASHLPEN_Msk             (0x1UL << RCC_AHB2LPENR_HASHLPEN_Pos) /*!< 0x00000020 */\n#define RCC_AHB2LPENR_HASHLPEN                 RCC_AHB2LPENR_HASHLPEN_Msk\n#define RCC_AHB2LPENR_RNGLPEN_Pos              (6U)\n#define RCC_AHB2LPENR_RNGLPEN_Msk              (0x1UL << RCC_AHB2LPENR_RNGLPEN_Pos) /*!< 0x00000040 */\n#define RCC_AHB2LPENR_RNGLPEN                  RCC_AHB2LPENR_RNGLPEN_Msk\n#define RCC_AHB2LPENR_SDMMC2LPEN_Pos           (9U)\n#define RCC_AHB2LPENR_SDMMC2LPEN_Msk           (0x1UL << RCC_AHB2LPENR_SDMMC2LPEN_Pos) /*!< 0x00000200 */\n#define RCC_AHB2LPENR_SDMMC2LPEN               RCC_AHB2LPENR_SDMMC2LPEN_Msk\n#define RCC_AHB2LPENR_SRAM1LPEN_Pos          (29U)\n#define RCC_AHB2LPENR_SRAM1LPEN_Msk          (0x1UL << RCC_AHB2LPENR_SRAM1LPEN_Pos) /*!< 0x20000000 */\n#define RCC_AHB2LPENR_SRAM1LPEN              RCC_AHB2LPENR_SRAM1LPEN_Msk\n#define RCC_AHB2LPENR_SRAM2LPEN_Pos          (30U)\n#define RCC_AHB2LPENR_SRAM2LPEN_Msk          (0x1UL << RCC_AHB2LPENR_SRAM2LPEN_Pos) /*!< 0x40000000 */\n#define RCC_AHB2LPENR_SRAM2LPEN              RCC_AHB2LPENR_SRAM2LPEN_Msk\n#define RCC_AHB2LPENR_SRAM3LPEN_Pos          (31U)\n#define RCC_AHB2LPENR_SRAM3LPEN_Msk          (0x1UL << RCC_AHB2LPENR_SRAM3LPEN_Pos) /*!< 0x80000000 */\n#define RCC_AHB2LPENR_SRAM3LPEN              RCC_AHB2LPENR_SRAM3LPEN_Msk\n\n/* Legacy define */\n#define RCC_AHB2LPENR_D2SRAM1LPEN_Pos          RCC_AHB2LPENR_SRAM1LPEN_Pos\n#define RCC_AHB2LPENR_D2SRAM1LPEN_Msk          RCC_AHB2LPENR_SRAM1LPEN_Msk\n#define RCC_AHB2LPENR_D2SRAM1LPEN              RCC_AHB2LPENR_SRAM1LPEN\n#define RCC_AHB2LPENR_D2SRAM2LPEN_Pos          RCC_AHB2LPENR_SRAM2LPEN_Pos\n#define RCC_AHB2LPENR_D2SRAM2LPEN_Msk          RCC_AHB2LPENR_SRAM2LPEN_Msk\n#define RCC_AHB2LPENR_D2SRAM2LPEN              RCC_AHB2LPENR_SRAM2LPEN\n#define RCC_AHB2LPENR_D2SRAM3LPEN_Pos          RCC_AHB2LPENR_SRAM3LPEN_Pos\n#define RCC_AHB2LPENR_D2SRAM3LPEN_Msk          RCC_AHB2LPENR_SRAM3LPEN_Msk\n#define RCC_AHB2LPENR_D2SRAM3LPEN              RCC_AHB2LPENR_SRAM3LPEN\n\n/********************  Bit definition for RCC_AHB4LPENR register  ******************/\n#define RCC_AHB4LPENR_GPIOALPEN_Pos            (0U)\n#define RCC_AHB4LPENR_GPIOALPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOALPEN_Pos) /*!< 0x00000001 */\n#define RCC_AHB4LPENR_GPIOALPEN                RCC_AHB4LPENR_GPIOALPEN_Msk\n#define RCC_AHB4LPENR_GPIOBLPEN_Pos            (1U)\n#define RCC_AHB4LPENR_GPIOBLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOBLPEN_Pos) /*!< 0x00000002 */\n#define RCC_AHB4LPENR_GPIOBLPEN                RCC_AHB4LPENR_GPIOBLPEN_Msk\n#define RCC_AHB4LPENR_GPIOCLPEN_Pos            (2U)\n#define RCC_AHB4LPENR_GPIOCLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOCLPEN_Pos) /*!< 0x00000004 */\n#define RCC_AHB4LPENR_GPIOCLPEN                RCC_AHB4LPENR_GPIOCLPEN_Msk\n#define RCC_AHB4LPENR_GPIODLPEN_Pos            (3U)\n#define RCC_AHB4LPENR_GPIODLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIODLPEN_Pos) /*!< 0x00000008 */\n#define RCC_AHB4LPENR_GPIODLPEN                RCC_AHB4LPENR_GPIODLPEN_Msk\n#define RCC_AHB4LPENR_GPIOELPEN_Pos            (4U)\n#define RCC_AHB4LPENR_GPIOELPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOELPEN_Pos) /*!< 0x00000010 */\n#define RCC_AHB4LPENR_GPIOELPEN                RCC_AHB4LPENR_GPIOELPEN_Msk\n#define RCC_AHB4LPENR_GPIOFLPEN_Pos            (5U)\n#define RCC_AHB4LPENR_GPIOFLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOFLPEN_Pos) /*!< 0x00000020 */\n#define RCC_AHB4LPENR_GPIOFLPEN                RCC_AHB4LPENR_GPIOFLPEN_Msk\n#define RCC_AHB4LPENR_GPIOGLPEN_Pos            (6U)\n#define RCC_AHB4LPENR_GPIOGLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOGLPEN_Pos) /*!< 0x00000040 */\n#define RCC_AHB4LPENR_GPIOGLPEN                RCC_AHB4LPENR_GPIOGLPEN_Msk\n#define RCC_AHB4LPENR_GPIOHLPEN_Pos            (7U)\n#define RCC_AHB4LPENR_GPIOHLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOHLPEN_Pos) /*!< 0x00000080 */\n#define RCC_AHB4LPENR_GPIOHLPEN                RCC_AHB4LPENR_GPIOHLPEN_Msk\n#define RCC_AHB4LPENR_GPIOILPEN_Pos            (8U)\n#define RCC_AHB4LPENR_GPIOILPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOILPEN_Pos) /*!< 0x00000100 */\n#define RCC_AHB4LPENR_GPIOILPEN                RCC_AHB4LPENR_GPIOILPEN_Msk\n#define RCC_AHB4LPENR_GPIOJLPEN_Pos            (9U)\n#define RCC_AHB4LPENR_GPIOJLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOJLPEN_Pos) /*!< 0x00000200 */\n#define RCC_AHB4LPENR_GPIOJLPEN                RCC_AHB4LPENR_GPIOJLPEN_Msk\n#define RCC_AHB4LPENR_GPIOKLPEN_Pos            (10U)\n#define RCC_AHB4LPENR_GPIOKLPEN_Msk            (0x1UL << RCC_AHB4LPENR_GPIOKLPEN_Pos) /*!< 0x00000400 */\n#define RCC_AHB4LPENR_GPIOKLPEN                RCC_AHB4LPENR_GPIOKLPEN_Msk\n#define RCC_AHB4LPENR_CRCLPEN_Pos              (19U)\n#define RCC_AHB4LPENR_CRCLPEN_Msk              (0x1UL << RCC_AHB4LPENR_CRCLPEN_Pos) /*!< 0x00080000 */\n#define RCC_AHB4LPENR_CRCLPEN                  RCC_AHB4LPENR_CRCLPEN_Msk\n#define RCC_AHB4LPENR_BDMALPEN_Pos             (21U)\n#define RCC_AHB4LPENR_BDMALPEN_Msk             (0x1UL << RCC_AHB4LPENR_BDMALPEN_Pos) /*!< 0x00200000 */\n#define RCC_AHB4LPENR_BDMALPEN                 RCC_AHB4LPENR_BDMALPEN_Msk\n#define RCC_AHB4LPENR_ADC3LPEN_Pos             (24U)\n#define RCC_AHB4LPENR_ADC3LPEN_Msk             (0x1UL << RCC_AHB4LPENR_ADC3LPEN_Pos) /*!< 0x01000000 */\n#define RCC_AHB4LPENR_ADC3LPEN                 RCC_AHB4LPENR_ADC3LPEN_Msk\n#define RCC_AHB4LPENR_BKPRAMLPEN_Pos           (28U)\n#define RCC_AHB4LPENR_BKPRAMLPEN_Msk           (0x1UL << RCC_AHB4LPENR_BKPRAMLPEN_Pos) /*!< 0x10000000 */\n#define RCC_AHB4LPENR_BKPRAMLPEN               RCC_AHB4LPENR_BKPRAMLPEN_Msk\n#define RCC_AHB4LPENR_SRAM4LPEN_Pos            (29U)\n#define RCC_AHB4LPENR_SRAM4LPEN_Msk            (0x1UL << RCC_AHB4LPENR_SRAM4LPEN_Pos) /*!< 0x20000000 */\n#define RCC_AHB4LPENR_SRAM4LPEN                RCC_AHB4LPENR_SRAM4LPEN_Msk\n\n/* Legacy define */\n#define RCC_AHB4LPENR_D3SRAM1LPEN_Pos          RCC_AHB4LPENR_SRAM4LPEN_Pos\n#define RCC_AHB4LPENR_D3SRAM1LPEN_Msk          RCC_AHB4LPENR_SRAM4LPEN_Msk\n#define RCC_AHB4LPENR_D3SRAM1LPEN              RCC_AHB4LPENR_SRAM4LPEN\n/********************  Bit definition for RCC_APB3LPENR register  ******************/\n#define RCC_APB3LPENR_LTDCLPEN_Pos             (3U)\n#define RCC_APB3LPENR_LTDCLPEN_Msk             (0x1UL << RCC_APB3LPENR_LTDCLPEN_Pos) /*!< 0x00000008 */\n#define RCC_APB3LPENR_LTDCLPEN                 RCC_APB3LPENR_LTDCLPEN_Msk\n#define RCC_APB3LPENR_WWDG1LPEN_Pos            (6U)\n#define RCC_APB3LPENR_WWDG1LPEN_Msk            (0x1UL << RCC_APB3LPENR_WWDG1LPEN_Pos) /*!< 0x00000040 */\n#define RCC_APB3LPENR_WWDG1LPEN                RCC_APB3LPENR_WWDG1LPEN_Msk\n\n/********************  Bit definition for RCC_APB1LLPENR register  ******************/\n\n#define RCC_APB1LLPENR_TIM2LPEN_Pos            (0U)\n#define RCC_APB1LLPENR_TIM2LPEN_Msk            (0x1UL << RCC_APB1LLPENR_TIM2LPEN_Pos) /*!< 0x00000001 */\n#define RCC_APB1LLPENR_TIM2LPEN                RCC_APB1LLPENR_TIM2LPEN_Msk\n#define RCC_APB1LLPENR_TIM3LPEN_Pos            (1U)\n#define RCC_APB1LLPENR_TIM3LPEN_Msk            (0x1UL << RCC_APB1LLPENR_TIM3LPEN_Pos) /*!< 0x00000002 */\n#define RCC_APB1LLPENR_TIM3LPEN                RCC_APB1LLPENR_TIM3LPEN_Msk\n#define RCC_APB1LLPENR_TIM4LPEN_Pos            (2U)\n#define RCC_APB1LLPENR_TIM4LPEN_Msk            (0x1UL << RCC_APB1LLPENR_TIM4LPEN_Pos) /*!< 0x00000004 */\n#define RCC_APB1LLPENR_TIM4LPEN                RCC_APB1LLPENR_TIM4LPEN_Msk\n#define RCC_APB1LLPENR_TIM5LPEN_Pos            (3U)\n#define RCC_APB1LLPENR_TIM5LPEN_Msk            (0x1UL << RCC_APB1LLPENR_TIM5LPEN_Pos) /*!< 0x00000008 */\n#define RCC_APB1LLPENR_TIM5LPEN                RCC_APB1LLPENR_TIM5LPEN_Msk\n#define RCC_APB1LLPENR_TIM6LPEN_Pos            (4U)\n#define RCC_APB1LLPENR_TIM6LPEN_Msk            (0x1UL << RCC_APB1LLPENR_TIM6LPEN_Pos) /*!< 0x00000010 */\n#define RCC_APB1LLPENR_TIM6LPEN                RCC_APB1LLPENR_TIM6LPEN_Msk\n#define RCC_APB1LLPENR_TIM7LPEN_Pos            (5U)\n#define RCC_APB1LLPENR_TIM7LPEN_Msk            (0x1UL << RCC_APB1LLPENR_TIM7LPEN_Pos) /*!< 0x00000020 */\n#define RCC_APB1LLPENR_TIM7LPEN                RCC_APB1LLPENR_TIM7LPEN_Msk\n#define RCC_APB1LLPENR_TIM12LPEN_Pos           (6U)\n#define RCC_APB1LLPENR_TIM12LPEN_Msk           (0x1UL << RCC_APB1LLPENR_TIM12LPEN_Pos) /*!< 0x00000040 */\n#define RCC_APB1LLPENR_TIM12LPEN               RCC_APB1LLPENR_TIM12LPEN_Msk\n#define RCC_APB1LLPENR_TIM13LPEN_Pos           (7U)\n#define RCC_APB1LLPENR_TIM13LPEN_Msk           (0x1UL << RCC_APB1LLPENR_TIM13LPEN_Pos) /*!< 0x00000080 */\n#define RCC_APB1LLPENR_TIM13LPEN               RCC_APB1LLPENR_TIM13LPEN_Msk\n#define RCC_APB1LLPENR_TIM14LPEN_Pos           (8U)\n#define RCC_APB1LLPENR_TIM14LPEN_Msk           (0x1UL << RCC_APB1LLPENR_TIM14LPEN_Pos) /*!< 0x00000100 */\n#define RCC_APB1LLPENR_TIM14LPEN               RCC_APB1LLPENR_TIM14LPEN_Msk\n#define RCC_APB1LLPENR_LPTIM1LPEN_Pos          (9U)\n#define RCC_APB1LLPENR_LPTIM1LPEN_Msk          (0x1UL << RCC_APB1LLPENR_LPTIM1LPEN_Pos) /*!< 0x00000200 */\n#define RCC_APB1LLPENR_LPTIM1LPEN              RCC_APB1LLPENR_LPTIM1LPEN_Msk\n\n\n#define RCC_APB1LLPENR_SPI2LPEN_Pos            (14U)\n#define RCC_APB1LLPENR_SPI2LPEN_Msk            (0x1UL << RCC_APB1LLPENR_SPI2LPEN_Pos) /*!< 0x00004000 */\n#define RCC_APB1LLPENR_SPI2LPEN                RCC_APB1LLPENR_SPI2LPEN_Msk\n#define RCC_APB1LLPENR_SPI3LPEN_Pos            (15U)\n#define RCC_APB1LLPENR_SPI3LPEN_Msk            (0x1UL << RCC_APB1LLPENR_SPI3LPEN_Pos) /*!< 0x00008000 */\n#define RCC_APB1LLPENR_SPI3LPEN                RCC_APB1LLPENR_SPI3LPEN_Msk\n#define RCC_APB1LLPENR_SPDIFRXLPEN_Pos         (16U)\n#define RCC_APB1LLPENR_SPDIFRXLPEN_Msk         (0x1UL << RCC_APB1LLPENR_SPDIFRXLPEN_Pos) /*!< 0x00010000 */\n#define RCC_APB1LLPENR_SPDIFRXLPEN             RCC_APB1LLPENR_SPDIFRXLPEN_Msk\n#define RCC_APB1LLPENR_USART2LPEN_Pos          (17U)\n#define RCC_APB1LLPENR_USART2LPEN_Msk          (0x1UL << RCC_APB1LLPENR_USART2LPEN_Pos) /*!< 0x00020000 */\n#define RCC_APB1LLPENR_USART2LPEN              RCC_APB1LLPENR_USART2LPEN_Msk\n#define RCC_APB1LLPENR_USART3LPEN_Pos          (18U)\n#define RCC_APB1LLPENR_USART3LPEN_Msk          (0x1UL << RCC_APB1LLPENR_USART3LPEN_Pos) /*!< 0x00040000 */\n#define RCC_APB1LLPENR_USART3LPEN              RCC_APB1LLPENR_USART3LPEN_Msk\n#define RCC_APB1LLPENR_UART4LPEN_Pos           (19U)\n#define RCC_APB1LLPENR_UART4LPEN_Msk           (0x1UL << RCC_APB1LLPENR_UART4LPEN_Pos) /*!< 0x00080000 */\n#define RCC_APB1LLPENR_UART4LPEN               RCC_APB1LLPENR_UART4LPEN_Msk\n#define RCC_APB1LLPENR_UART5LPEN_Pos           (20U)\n#define RCC_APB1LLPENR_UART5LPEN_Msk           (0x1UL << RCC_APB1LLPENR_UART5LPEN_Pos) /*!< 0x00100000 */\n#define RCC_APB1LLPENR_UART5LPEN               RCC_APB1LLPENR_UART5LPEN_Msk\n#define RCC_APB1LLPENR_I2C1LPEN_Pos            (21U)\n#define RCC_APB1LLPENR_I2C1LPEN_Msk            (0x1UL << RCC_APB1LLPENR_I2C1LPEN_Pos) /*!< 0x00200000 */\n#define RCC_APB1LLPENR_I2C1LPEN                RCC_APB1LLPENR_I2C1LPEN_Msk\n#define RCC_APB1LLPENR_I2C2LPEN_Pos            (22U)\n#define RCC_APB1LLPENR_I2C2LPEN_Msk            (0x1UL << RCC_APB1LLPENR_I2C2LPEN_Pos) /*!< 0x00400000 */\n#define RCC_APB1LLPENR_I2C2LPEN                RCC_APB1LLPENR_I2C2LPEN_Msk\n#define RCC_APB1LLPENR_I2C3LPEN_Pos            (23U)\n#define RCC_APB1LLPENR_I2C3LPEN_Msk            (0x1UL << RCC_APB1LLPENR_I2C3LPEN_Pos) /*!< 0x00800000 */\n#define RCC_APB1LLPENR_I2C3LPEN                RCC_APB1LLPENR_I2C3LPEN_Msk\n#define RCC_APB1LLPENR_CECLPEN_Pos             (27U)\n#define RCC_APB1LLPENR_CECLPEN_Msk             (0x1UL << RCC_APB1LLPENR_CECLPEN_Pos) /*!< 0x08000000 */\n#define RCC_APB1LLPENR_CECLPEN                 RCC_APB1LLPENR_CECLPEN_Msk\n#define RCC_APB1LLPENR_DAC12LPEN_Pos           (29U)\n#define RCC_APB1LLPENR_DAC12LPEN_Msk           (0x1UL << RCC_APB1LLPENR_DAC12LPEN_Pos) /*!< 0x20000000 */\n#define RCC_APB1LLPENR_DAC12LPEN               RCC_APB1LLPENR_DAC12LPEN_Msk\n#define RCC_APB1LLPENR_UART7LPEN_Pos           (30U)\n#define RCC_APB1LLPENR_UART7LPEN_Msk           (0x1UL << RCC_APB1LLPENR_UART7LPEN_Pos) /*!< 0x40000000 */\n#define RCC_APB1LLPENR_UART7LPEN               RCC_APB1LLPENR_UART7LPEN_Msk\n#define RCC_APB1LLPENR_UART8LPEN_Pos           (31U)\n#define RCC_APB1LLPENR_UART8LPEN_Msk           (0x1UL << RCC_APB1LLPENR_UART8LPEN_Pos) /*!< 0x80000000 */\n#define RCC_APB1LLPENR_UART8LPEN               RCC_APB1LLPENR_UART8LPEN_Msk\n\n/* Legacy define */\n#define RCC_APB1LLPENR_HDMICECEN_Pos           RCC_APB1LLPENR_CECLPEN_Pos\n#define RCC_APB1LLPENR_HDMICECEN_Msk           RCC_APB1LLPENR_CECLPEN_Msk\n#define RCC_APB1LLPENR_HDMICECEN               RCC_APB1LLPENR_CECLPEN\n/********************  Bit definition for RCC_APB1HLPENR register  ******************/\n#define RCC_APB1HLPENR_CRSLPEN_Pos             (1U)\n#define RCC_APB1HLPENR_CRSLPEN_Msk             (0x1UL << RCC_APB1HLPENR_CRSLPEN_Pos) /*!< 0x00000002 */\n#define RCC_APB1HLPENR_CRSLPEN                 RCC_APB1HLPENR_CRSLPEN_Msk\n#define RCC_APB1HLPENR_SWPMILPEN_Pos           (2U)\n#define RCC_APB1HLPENR_SWPMILPEN_Msk           (0x1UL << RCC_APB1HLPENR_SWPMILPEN_Pos) /*!< 0x00000004 */\n#define RCC_APB1HLPENR_SWPMILPEN               RCC_APB1HLPENR_SWPMILPEN_Msk\n#define RCC_APB1HLPENR_OPAMPLPEN_Pos           (4U)\n#define RCC_APB1HLPENR_OPAMPLPEN_Msk           (0x1UL << RCC_APB1HLPENR_OPAMPLPEN_Pos) /*!< 0x00000010 */\n#define RCC_APB1HLPENR_OPAMPLPEN               RCC_APB1HLPENR_OPAMPLPEN_Msk\n#define RCC_APB1HLPENR_MDIOSLPEN_Pos           (5U)\n#define RCC_APB1HLPENR_MDIOSLPEN_Msk           (0x1UL << RCC_APB1HLPENR_MDIOSLPEN_Pos) /*!< 0x00000020 */\n#define RCC_APB1HLPENR_MDIOSLPEN               RCC_APB1HLPENR_MDIOSLPEN_Msk\n#define RCC_APB1HLPENR_FDCANLPEN_Pos           (8U)\n#define RCC_APB1HLPENR_FDCANLPEN_Msk           (0x1UL << RCC_APB1HLPENR_FDCANLPEN_Pos) /*!< 0x00000100 */\n#define RCC_APB1HLPENR_FDCANLPEN               RCC_APB1HLPENR_FDCANLPEN_Msk\n\n/********************  Bit definition for RCC_APB2LPENR register  ******************/\n#define RCC_APB2LPENR_TIM1LPEN_Pos             (0U)\n#define RCC_APB2LPENR_TIM1LPEN_Msk             (0x1UL << RCC_APB2LPENR_TIM1LPEN_Pos) /*!< 0x00000001 */\n#define RCC_APB2LPENR_TIM1LPEN                 RCC_APB2LPENR_TIM1LPEN_Msk\n#define RCC_APB2LPENR_TIM8LPEN_Pos             (1U)\n#define RCC_APB2LPENR_TIM8LPEN_Msk             (0x1UL << RCC_APB2LPENR_TIM8LPEN_Pos) /*!< 0x00000002 */\n#define RCC_APB2LPENR_TIM8LPEN                 RCC_APB2LPENR_TIM8LPEN_Msk\n#define RCC_APB2LPENR_USART1LPEN_Pos           (4U)\n#define RCC_APB2LPENR_USART1LPEN_Msk           (0x1UL << RCC_APB2LPENR_USART1LPEN_Pos) /*!< 0x00000010 */\n#define RCC_APB2LPENR_USART1LPEN               RCC_APB2LPENR_USART1LPEN_Msk\n#define RCC_APB2LPENR_USART6LPEN_Pos           (5U)\n#define RCC_APB2LPENR_USART6LPEN_Msk           (0x1UL << RCC_APB2LPENR_USART6LPEN_Pos) /*!< 0x00000020 */\n#define RCC_APB2LPENR_USART6LPEN               RCC_APB2LPENR_USART6LPEN_Msk\n#define RCC_APB2LPENR_SPI1LPEN_Pos             (12U)\n#define RCC_APB2LPENR_SPI1LPEN_Msk             (0x1UL << RCC_APB2LPENR_SPI1LPEN_Pos) /*!< 0x00001000 */\n#define RCC_APB2LPENR_SPI1LPEN                 RCC_APB2LPENR_SPI1LPEN_Msk\n#define RCC_APB2LPENR_SPI4LPEN_Pos             (13U)\n#define RCC_APB2LPENR_SPI4LPEN_Msk             (0x1UL << RCC_APB2LPENR_SPI4LPEN_Pos) /*!< 0x00002000 */\n#define RCC_APB2LPENR_SPI4LPEN                 RCC_APB2LPENR_SPI4LPEN_Msk\n#define RCC_APB2LPENR_TIM15LPEN_Pos            (16U)\n#define RCC_APB2LPENR_TIM15LPEN_Msk            (0x1UL << RCC_APB2LPENR_TIM15LPEN_Pos) /*!< 0x00010000 */\n#define RCC_APB2LPENR_TIM15LPEN                RCC_APB2LPENR_TIM15LPEN_Msk\n#define RCC_APB2LPENR_TIM16LPEN_Pos            (17U)\n#define RCC_APB2LPENR_TIM16LPEN_Msk            (0x1UL << RCC_APB2LPENR_TIM16LPEN_Pos) /*!< 0x00020000 */\n#define RCC_APB2LPENR_TIM16LPEN                RCC_APB2LPENR_TIM16LPEN_Msk\n#define RCC_APB2LPENR_TIM17LPEN_Pos            (18U)\n#define RCC_APB2LPENR_TIM17LPEN_Msk            (0x1UL << RCC_APB2LPENR_TIM17LPEN_Pos) /*!< 0x00040000 */\n#define RCC_APB2LPENR_TIM17LPEN                RCC_APB2LPENR_TIM17LPEN_Msk\n#define RCC_APB2LPENR_SPI5LPEN_Pos             (20U)\n#define RCC_APB2LPENR_SPI5LPEN_Msk             (0x1UL << RCC_APB2LPENR_SPI5LPEN_Pos) /*!< 0x00100000 */\n#define RCC_APB2LPENR_SPI5LPEN                 RCC_APB2LPENR_SPI5LPEN_Msk\n#define RCC_APB2LPENR_SAI1LPEN_Pos             (22U)\n#define RCC_APB2LPENR_SAI1LPEN_Msk             (0x1UL << RCC_APB2LPENR_SAI1LPEN_Pos) /*!< 0x00400000 */\n#define RCC_APB2LPENR_SAI1LPEN                 RCC_APB2LPENR_SAI1LPEN_Msk\n#define RCC_APB2LPENR_SAI2LPEN_Pos             (23U)\n#define RCC_APB2LPENR_SAI2LPEN_Msk             (0x1UL << RCC_APB2LPENR_SAI2LPEN_Pos) /*!< 0x00800000 */\n#define RCC_APB2LPENR_SAI2LPEN                 RCC_APB2LPENR_SAI2LPEN_Msk\n#define RCC_APB2LPENR_SAI3LPEN_Pos             (24U)\n#define RCC_APB2LPENR_SAI3LPEN_Msk             (0x1UL << RCC_APB2LPENR_SAI3LPEN_Pos) /*!< 0x01000000 */\n#define RCC_APB2LPENR_SAI3LPEN                 RCC_APB2LPENR_SAI3LPEN_Msk\n#define RCC_APB2LPENR_DFSDM1LPEN_Pos           (28U)\n#define RCC_APB2LPENR_DFSDM1LPEN_Msk           (0x1UL << RCC_APB2LPENR_DFSDM1LPEN_Pos) /*!< 0x10000000 */\n#define RCC_APB2LPENR_DFSDM1LPEN               RCC_APB2LPENR_DFSDM1LPEN_Msk\n#define RCC_APB2LPENR_HRTIMLPEN_Pos            (29U)\n#define RCC_APB2LPENR_HRTIMLPEN_Msk            (0x1UL << RCC_APB2LPENR_HRTIMLPEN_Pos) /*!< 0x20000000 */\n#define RCC_APB2LPENR_HRTIMLPEN                RCC_APB2LPENR_HRTIMLPEN_Msk\n\n/********************  Bit definition for RCC_APB4LPENR register  ******************/\n#define RCC_APB4LPENR_SYSCFGLPEN_Pos           (1U)\n#define RCC_APB4LPENR_SYSCFGLPEN_Msk           (0x1UL << RCC_APB4LPENR_SYSCFGLPEN_Pos) /*!< 0x00000002 */\n#define RCC_APB4LPENR_SYSCFGLPEN               RCC_APB4LPENR_SYSCFGLPEN_Msk\n#define RCC_APB4LPENR_LPUART1LPEN_Pos          (3U)\n#define RCC_APB4LPENR_LPUART1LPEN_Msk          (0x1UL << RCC_APB4LPENR_LPUART1LPEN_Pos) /*!< 0x00000008 */\n#define RCC_APB4LPENR_LPUART1LPEN              RCC_APB4LPENR_LPUART1LPEN_Msk\n#define RCC_APB4LPENR_SPI6LPEN_Pos             (5U)\n#define RCC_APB4LPENR_SPI6LPEN_Msk             (0x1UL << RCC_APB4LPENR_SPI6LPEN_Pos) /*!< 0x00000020 */\n#define RCC_APB4LPENR_SPI6LPEN                 RCC_APB4LPENR_SPI6LPEN_Msk\n#define RCC_APB4LPENR_I2C4LPEN_Pos             (7U)\n#define RCC_APB4LPENR_I2C4LPEN_Msk             (0x1UL << RCC_APB4LPENR_I2C4LPEN_Pos) /*!< 0x00000080 */\n#define RCC_APB4LPENR_I2C4LPEN                 RCC_APB4LPENR_I2C4LPEN_Msk\n#define RCC_APB4LPENR_LPTIM2LPEN_Pos           (9U)\n#define RCC_APB4LPENR_LPTIM2LPEN_Msk           (0x1UL << RCC_APB4LPENR_LPTIM2LPEN_Pos) /*!< 0x00000200 */\n#define RCC_APB4LPENR_LPTIM2LPEN               RCC_APB4LPENR_LPTIM2LPEN_Msk\n#define RCC_APB4LPENR_LPTIM3LPEN_Pos           (10U)\n#define RCC_APB4LPENR_LPTIM3LPEN_Msk           (0x1UL << RCC_APB4LPENR_LPTIM3LPEN_Pos) /*!< 0x00000400 */\n#define RCC_APB4LPENR_LPTIM3LPEN               RCC_APB4LPENR_LPTIM3LPEN_Msk\n#define RCC_APB4LPENR_LPTIM4LPEN_Pos           (11U)\n#define RCC_APB4LPENR_LPTIM4LPEN_Msk           (0x1UL << RCC_APB4LPENR_LPTIM4LPEN_Pos) /*!< 0x00000800 */\n#define RCC_APB4LPENR_LPTIM4LPEN               RCC_APB4LPENR_LPTIM4LPEN_Msk\n#define RCC_APB4LPENR_LPTIM5LPEN_Pos           (12U)\n#define RCC_APB4LPENR_LPTIM5LPEN_Msk           (0x1UL << RCC_APB4LPENR_LPTIM5LPEN_Pos) /*!< 0x00001000 */\n#define RCC_APB4LPENR_LPTIM5LPEN               RCC_APB4LPENR_LPTIM5LPEN_Msk\n#define RCC_APB4LPENR_COMP12LPEN_Pos           (14U)\n#define RCC_APB4LPENR_COMP12LPEN_Msk           (0x1UL << RCC_APB4LPENR_COMP12LPEN_Pos) /*!< 0x00004000 */\n#define RCC_APB4LPENR_COMP12LPEN               RCC_APB4LPENR_COMP12LPEN_Msk\n#define RCC_APB4LPENR_VREFLPEN_Pos             (15U)\n#define RCC_APB4LPENR_VREFLPEN_Msk             (0x1UL << RCC_APB4LPENR_VREFLPEN_Pos) /*!< 0x00008000 */\n#define RCC_APB4LPENR_VREFLPEN                 RCC_APB4LPENR_VREFLPEN_Msk\n#define RCC_APB4LPENR_RTCAPBLPEN_Pos           (16U)\n#define RCC_APB4LPENR_RTCAPBLPEN_Msk           (0x1UL << RCC_APB4LPENR_RTCAPBLPEN_Pos) /*!< 0x00010000 */\n#define RCC_APB4LPENR_RTCAPBLPEN               RCC_APB4LPENR_RTCAPBLPEN_Msk\n#define RCC_APB4LPENR_SAI4LPEN_Pos             (21U)\n#define RCC_APB4LPENR_SAI4LPEN_Msk             (0x1UL << RCC_APB4LPENR_SAI4LPEN_Pos) /*!< 0x00200000 */\n#define RCC_APB4LPENR_SAI4LPEN                 RCC_APB4LPENR_SAI4LPEN_Msk\n\n\n/********************  Bit definition for RCC_RSR register  *******************/\n#define RCC_RSR_RMVF_Pos                       (16U)\n#define RCC_RSR_RMVF_Msk                       (0x1UL << RCC_RSR_RMVF_Pos)     /*!< 0x00010000 */\n#define RCC_RSR_RMVF                           RCC_RSR_RMVF_Msk\n#define RCC_RSR_CPURSTF_Pos                    (17U)\n#define RCC_RSR_CPURSTF_Msk                    (0x1UL << RCC_RSR_CPURSTF_Pos)  /*!< 0x00020000 */\n#define RCC_RSR_CPURSTF                        RCC_RSR_CPURSTF_Msk\n#define RCC_RSR_D1RSTF_Pos                     (19U)\n#define RCC_RSR_D1RSTF_Msk                     (0x1UL << RCC_RSR_D1RSTF_Pos)   /*!< 0x00080000 */\n#define RCC_RSR_D1RSTF                         RCC_RSR_D1RSTF_Msk\n#define RCC_RSR_D2RSTF_Pos                     (20U)\n#define RCC_RSR_D2RSTF_Msk                     (0x1UL << RCC_RSR_D2RSTF_Pos)   /*!< 0x00100000 */\n#define RCC_RSR_D2RSTF                         RCC_RSR_D2RSTF_Msk\n#define RCC_RSR_BORRSTF_Pos                    (21U)\n#define RCC_RSR_BORRSTF_Msk                    (0x1UL << RCC_RSR_BORRSTF_Pos)  /*!< 0x00200000 */\n#define RCC_RSR_BORRSTF                        RCC_RSR_BORRSTF_Msk\n#define RCC_RSR_PINRSTF_Pos                    (22U)\n#define RCC_RSR_PINRSTF_Msk                    (0x1UL << RCC_RSR_PINRSTF_Pos)  /*!< 0x00400000 */\n#define RCC_RSR_PINRSTF                        RCC_RSR_PINRSTF_Msk\n#define RCC_RSR_PORRSTF_Pos                    (23U)\n#define RCC_RSR_PORRSTF_Msk                    (0x1UL << RCC_RSR_PORRSTF_Pos)  /*!< 0x00800000 */\n#define RCC_RSR_PORRSTF                        RCC_RSR_PORRSTF_Msk\n#define RCC_RSR_SFTRSTF_Pos                    (24U)\n#define RCC_RSR_SFTRSTF_Msk                    (0x1UL << RCC_RSR_SFTRSTF_Pos)  /*!< 0x01000000 */\n#define RCC_RSR_SFTRSTF                        RCC_RSR_SFTRSTF_Msk\n#define RCC_RSR_IWDG1RSTF_Pos                  (26U)\n#define RCC_RSR_IWDG1RSTF_Msk                  (0x1UL << RCC_RSR_IWDG1RSTF_Pos) /*!< 0x04000000 */\n#define RCC_RSR_IWDG1RSTF                      RCC_RSR_IWDG1RSTF_Msk\n#define RCC_RSR_WWDG1RSTF_Pos                  (28U)\n#define RCC_RSR_WWDG1RSTF_Msk                  (0x1UL << RCC_RSR_WWDG1RSTF_Pos) /*!< 0x10000000 */\n#define RCC_RSR_WWDG1RSTF                      RCC_RSR_WWDG1RSTF_Msk\n\n#define RCC_RSR_LPWRRSTF_Pos                   (30U)\n#define RCC_RSR_LPWRRSTF_Msk                   (0x1UL << RCC_RSR_LPWRRSTF_Pos) /*!< 0x40000000 */\n#define RCC_RSR_LPWRRSTF                       RCC_RSR_LPWRRSTF_Msk\n\n\n/******************************************************************************/\n/*                                                                            */\n/*                                    RNG                                     */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bits definition for RNG_CR register  *******************/\n#define RNG_CR_RNGEN_Pos    (2U)\n#define RNG_CR_RNGEN_Msk    (0x1UL << RNG_CR_RNGEN_Pos)                        /*!< 0x00000004 */\n#define RNG_CR_RNGEN        RNG_CR_RNGEN_Msk\n#define RNG_CR_IE_Pos       (3U)\n#define RNG_CR_IE_Msk       (0x1UL << RNG_CR_IE_Pos)                           /*!< 0x00000008 */\n#define RNG_CR_IE           RNG_CR_IE_Msk\n#define RNG_CR_CED_Pos      (5U)\n#define RNG_CR_CED_Msk      (0x1UL << RNG_CR_CED_Pos)                          /*!< 0x00000020 */\n#define RNG_CR_CED          RNG_CR_CED_Msk\n\n/********************  Bits definition for RNG_SR register  *******************/\n#define RNG_SR_DRDY_Pos     (0U)\n#define RNG_SR_DRDY_Msk     (0x1UL << RNG_SR_DRDY_Pos)                         /*!< 0x00000001 */\n#define RNG_SR_DRDY         RNG_SR_DRDY_Msk\n#define RNG_SR_CECS_Pos     (1U)\n#define RNG_SR_CECS_Msk     (0x1UL << RNG_SR_CECS_Pos)                         /*!< 0x00000002 */\n#define RNG_SR_CECS         RNG_SR_CECS_Msk\n#define RNG_SR_SECS_Pos     (2U)\n#define RNG_SR_SECS_Msk     (0x1UL << RNG_SR_SECS_Pos)                         /*!< 0x00000004 */\n#define RNG_SR_SECS         RNG_SR_SECS_Msk\n#define RNG_SR_CEIS_Pos     (5U)\n#define RNG_SR_CEIS_Msk     (0x1UL << RNG_SR_CEIS_Pos)                         /*!< 0x00000020 */\n#define RNG_SR_CEIS         RNG_SR_CEIS_Msk\n#define RNG_SR_SEIS_Pos     (6U)\n#define RNG_SR_SEIS_Msk     (0x1UL << RNG_SR_SEIS_Pos)                         /*!< 0x00000040 */\n#define RNG_SR_SEIS         RNG_SR_SEIS_Msk\n\n/******************************************************************************/\n/*                                                                            */\n/*                           Real-Time Clock (RTC)                            */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bits definition for RTC_TR register  *******************/\n#define RTC_TR_PM_Pos                  (22U)\n#define RTC_TR_PM_Msk                  (0x1UL << RTC_TR_PM_Pos)                /*!< 0x00400000 */\n#define RTC_TR_PM                      RTC_TR_PM_Msk\n#define RTC_TR_HT_Pos                  (20U)\n#define RTC_TR_HT_Msk                  (0x3UL << RTC_TR_HT_Pos)                /*!< 0x00300000 */\n#define RTC_TR_HT                      RTC_TR_HT_Msk\n#define RTC_TR_HT_0                    (0x1UL << RTC_TR_HT_Pos)                 /*!< 0x00100000 */\n#define RTC_TR_HT_1                    (0x2UL << RTC_TR_HT_Pos)                 /*!< 0x00200000 */\n#define RTC_TR_HU_Pos                  (16U)\n#define RTC_TR_HU_Msk                  (0xFUL << RTC_TR_HU_Pos)                /*!< 0x000F0000 */\n#define RTC_TR_HU                      RTC_TR_HU_Msk\n#define RTC_TR_HU_0                    (0x1UL << RTC_TR_HU_Pos)                 /*!< 0x00010000 */\n#define RTC_TR_HU_1                    (0x2UL << RTC_TR_HU_Pos)                 /*!< 0x00020000 */\n#define RTC_TR_HU_2                    (0x4UL << RTC_TR_HU_Pos)                 /*!< 0x00040000 */\n#define RTC_TR_HU_3                    (0x8UL << RTC_TR_HU_Pos)                 /*!< 0x00080000 */\n#define RTC_TR_MNT_Pos                 (12U)\n#define RTC_TR_MNT_Msk                 (0x7UL << RTC_TR_MNT_Pos)               /*!< 0x00007000 */\n#define RTC_TR_MNT                     RTC_TR_MNT_Msk\n#define RTC_TR_MNT_0                   (0x1UL << RTC_TR_MNT_Pos)                /*!< 0x00001000 */\n#define RTC_TR_MNT_1                   (0x2UL << RTC_TR_MNT_Pos)                /*!< 0x00002000 */\n#define RTC_TR_MNT_2                   (0x4UL << RTC_TR_MNT_Pos)                /*!< 0x00004000 */\n#define RTC_TR_MNU_Pos                 (8U)\n#define RTC_TR_MNU_Msk                 (0xFUL << RTC_TR_MNU_Pos)               /*!< 0x00000F00 */\n#define RTC_TR_MNU                     RTC_TR_MNU_Msk\n#define RTC_TR_MNU_0                   (0x1UL << RTC_TR_MNU_Pos)                /*!< 0x00000100 */\n#define RTC_TR_MNU_1                   (0x2UL << RTC_TR_MNU_Pos)                /*!< 0x00000200 */\n#define RTC_TR_MNU_2                   (0x4UL << RTC_TR_MNU_Pos)                /*!< 0x00000400 */\n#define RTC_TR_MNU_3                   (0x8UL << RTC_TR_MNU_Pos)                /*!< 0x00000800 */\n#define RTC_TR_ST_Pos                  (4U)\n#define RTC_TR_ST_Msk                  (0x7UL << RTC_TR_ST_Pos)                /*!< 0x00000070 */\n#define RTC_TR_ST                      RTC_TR_ST_Msk\n#define RTC_TR_ST_0                    (0x1UL << RTC_TR_ST_Pos)                 /*!< 0x00000010 */\n#define RTC_TR_ST_1                    (0x2UL << RTC_TR_ST_Pos)                 /*!< 0x00000020 */\n#define RTC_TR_ST_2                    (0x4UL << RTC_TR_ST_Pos)                 /*!< 0x00000040 */\n#define RTC_TR_SU_Pos                  (0U)\n#define RTC_TR_SU_Msk                  (0xFUL << RTC_TR_SU_Pos)                /*!< 0x0000000F */\n#define RTC_TR_SU                      RTC_TR_SU_Msk\n#define RTC_TR_SU_0                    (0x1UL << RTC_TR_SU_Pos)                 /*!< 0x00000001 */\n#define RTC_TR_SU_1                    (0x2UL << RTC_TR_SU_Pos)                 /*!< 0x00000002 */\n#define RTC_TR_SU_2                    (0x4UL << RTC_TR_SU_Pos)                 /*!< 0x00000004 */\n#define RTC_TR_SU_3                    (0x8UL << RTC_TR_SU_Pos)                 /*!< 0x00000008 */\n\n/********************  Bits definition for RTC_DR register  *******************/\n#define RTC_DR_YT_Pos                  (20U)\n#define RTC_DR_YT_Msk                  (0xFUL << RTC_DR_YT_Pos)                /*!< 0x00F00000 */\n#define RTC_DR_YT                      RTC_DR_YT_Msk\n#define RTC_DR_YT_0                    (0x1UL << RTC_DR_YT_Pos)                 /*!< 0x00100000 */\n#define RTC_DR_YT_1                    (0x2UL << RTC_DR_YT_Pos)                 /*!< 0x00200000 */\n#define RTC_DR_YT_2                    (0x4UL << RTC_DR_YT_Pos)                 /*!< 0x00400000 */\n#define RTC_DR_YT_3                    (0x8UL << RTC_DR_YT_Pos)                 /*!< 0x00800000 */\n#define RTC_DR_YU_Pos                  (16U)\n#define RTC_DR_YU_Msk                  (0xFUL << RTC_DR_YU_Pos)                /*!< 0x000F0000 */\n#define RTC_DR_YU                      RTC_DR_YU_Msk\n#define RTC_DR_YU_0                    (0x1UL << RTC_DR_YU_Pos)                 /*!< 0x00010000 */\n#define RTC_DR_YU_1                    (0x2UL << RTC_DR_YU_Pos)                 /*!< 0x00020000 */\n#define RTC_DR_YU_2                    (0x4UL << RTC_DR_YU_Pos)                 /*!< 0x00040000 */\n#define RTC_DR_YU_3                    (0x8UL << RTC_DR_YU_Pos)                 /*!< 0x00080000 */\n#define RTC_DR_WDU_Pos                 (13U)\n#define RTC_DR_WDU_Msk                 (0x7UL << RTC_DR_WDU_Pos)               /*!< 0x0000E000 */\n#define RTC_DR_WDU                     RTC_DR_WDU_Msk\n#define RTC_DR_WDU_0                   (0x1UL << RTC_DR_WDU_Pos)                /*!< 0x00002000 */\n#define RTC_DR_WDU_1                   (0x2UL << RTC_DR_WDU_Pos)                /*!< 0x00004000 */\n#define RTC_DR_WDU_2                   (0x4UL << RTC_DR_WDU_Pos)                /*!< 0x00008000 */\n#define RTC_DR_MT_Pos                  (12U)\n#define RTC_DR_MT_Msk                  (0x1UL << RTC_DR_MT_Pos)                /*!< 0x00001000 */\n#define RTC_DR_MT                      RTC_DR_MT_Msk\n#define RTC_DR_MU_Pos                  (8U)\n#define RTC_DR_MU_Msk                  (0xFUL << RTC_DR_MU_Pos)                /*!< 0x00000F00 */\n#define RTC_DR_MU                      RTC_DR_MU_Msk\n#define RTC_DR_MU_0                    (0x1UL << RTC_DR_MU_Pos)                 /*!< 0x00000100 */\n#define RTC_DR_MU_1                    (0x2UL << RTC_DR_MU_Pos)                 /*!< 0x00000200 */\n#define RTC_DR_MU_2                    (0x4UL << RTC_DR_MU_Pos)                 /*!< 0x00000400 */\n#define RTC_DR_MU_3                    (0x8UL << RTC_DR_MU_Pos)                 /*!< 0x00000800 */\n#define RTC_DR_DT_Pos                  (4U)\n#define RTC_DR_DT_Msk                  (0x3UL << RTC_DR_DT_Pos)                /*!< 0x00000030 */\n#define RTC_DR_DT                      RTC_DR_DT_Msk\n#define RTC_DR_DT_0                    (0x1UL << RTC_DR_DT_Pos)                 /*!< 0x00000010 */\n#define RTC_DR_DT_1                    (0x2UL << RTC_DR_DT_Pos)                 /*!< 0x00000020 */\n#define RTC_DR_DU_Pos                  (0U)\n#define RTC_DR_DU_Msk                  (0xFUL << RTC_DR_DU_Pos)                /*!< 0x0000000F */\n#define RTC_DR_DU                      RTC_DR_DU_Msk\n#define RTC_DR_DU_0                    (0x1UL << RTC_DR_DU_Pos)                 /*!< 0x00000001 */\n#define RTC_DR_DU_1                    (0x2UL << RTC_DR_DU_Pos)                 /*!< 0x00000002 */\n#define RTC_DR_DU_2                    (0x4UL << RTC_DR_DU_Pos)                 /*!< 0x00000004 */\n#define RTC_DR_DU_3                    (0x8UL << RTC_DR_DU_Pos)                 /*!< 0x00000008 */\n\n/********************  Bits definition for RTC_CR register  *******************/\n#define RTC_CR_ITSE_Pos                (24U)\n#define RTC_CR_ITSE_Msk                (0x1UL << RTC_CR_ITSE_Pos)              /*!< 0x01000000 */\n#define RTC_CR_ITSE                    RTC_CR_ITSE_Msk\n#define RTC_CR_COE_Pos                 (23U)\n#define RTC_CR_COE_Msk                 (0x1UL << RTC_CR_COE_Pos)               /*!< 0x00800000 */\n#define RTC_CR_COE                     RTC_CR_COE_Msk\n#define RTC_CR_OSEL_Pos                (21U)\n#define RTC_CR_OSEL_Msk                (0x3UL << RTC_CR_OSEL_Pos)              /*!< 0x00600000 */\n#define RTC_CR_OSEL                    RTC_CR_OSEL_Msk\n#define RTC_CR_OSEL_0                  (0x1UL << RTC_CR_OSEL_Pos)               /*!< 0x00200000 */\n#define RTC_CR_OSEL_1                  (0x2UL << RTC_CR_OSEL_Pos)               /*!< 0x00400000 */\n#define RTC_CR_POL_Pos                 (20U)\n#define RTC_CR_POL_Msk                 (0x1UL << RTC_CR_POL_Pos)               /*!< 0x00100000 */\n#define RTC_CR_POL                     RTC_CR_POL_Msk\n#define RTC_CR_COSEL_Pos               (19U)\n#define RTC_CR_COSEL_Msk               (0x1UL << RTC_CR_COSEL_Pos)             /*!< 0x00080000 */\n#define RTC_CR_COSEL                   RTC_CR_COSEL_Msk\n#define RTC_CR_BKP_Pos                 (18U)\n#define RTC_CR_BKP_Msk                 (0x1UL << RTC_CR_BKP_Pos)               /*!< 0x00040000 */\n#define RTC_CR_BKP                     RTC_CR_BKP_Msk\n#define RTC_CR_SUB1H_Pos               (17U)\n#define RTC_CR_SUB1H_Msk               (0x1UL << RTC_CR_SUB1H_Pos)             /*!< 0x00020000 */\n#define RTC_CR_SUB1H                   RTC_CR_SUB1H_Msk\n#define RTC_CR_ADD1H_Pos               (16U)\n#define RTC_CR_ADD1H_Msk               (0x1UL << RTC_CR_ADD1H_Pos)             /*!< 0x00010000 */\n#define RTC_CR_ADD1H                   RTC_CR_ADD1H_Msk\n#define RTC_CR_TSIE_Pos                (15U)\n#define RTC_CR_TSIE_Msk                (0x1UL << RTC_CR_TSIE_Pos)              /*!< 0x00008000 */\n#define RTC_CR_TSIE                    RTC_CR_TSIE_Msk\n#define RTC_CR_WUTIE_Pos               (14U)\n#define RTC_CR_WUTIE_Msk               (0x1UL << RTC_CR_WUTIE_Pos)             /*!< 0x00004000 */\n#define RTC_CR_WUTIE                   RTC_CR_WUTIE_Msk\n#define RTC_CR_ALRBIE_Pos              (13U)\n#define RTC_CR_ALRBIE_Msk              (0x1UL << RTC_CR_ALRBIE_Pos)            /*!< 0x00002000 */\n#define RTC_CR_ALRBIE                  RTC_CR_ALRBIE_Msk\n#define RTC_CR_ALRAIE_Pos              (12U)\n#define RTC_CR_ALRAIE_Msk              (0x1UL << RTC_CR_ALRAIE_Pos)            /*!< 0x00001000 */\n#define RTC_CR_ALRAIE                  RTC_CR_ALRAIE_Msk\n#define RTC_CR_TSE_Pos                 (11U)\n#define RTC_CR_TSE_Msk                 (0x1UL << RTC_CR_TSE_Pos)               /*!< 0x00000800 */\n#define RTC_CR_TSE                     RTC_CR_TSE_Msk\n#define RTC_CR_WUTE_Pos                (10U)\n#define RTC_CR_WUTE_Msk                (0x1UL << RTC_CR_WUTE_Pos)              /*!< 0x00000400 */\n#define RTC_CR_WUTE                    RTC_CR_WUTE_Msk\n#define RTC_CR_ALRBE_Pos               (9U)\n#define RTC_CR_ALRBE_Msk               (0x1UL << RTC_CR_ALRBE_Pos)             /*!< 0x00000200 */\n#define RTC_CR_ALRBE                   RTC_CR_ALRBE_Msk\n#define RTC_CR_ALRAE_Pos               (8U)\n#define RTC_CR_ALRAE_Msk               (0x1UL << RTC_CR_ALRAE_Pos)             /*!< 0x00000100 */\n#define RTC_CR_ALRAE                   RTC_CR_ALRAE_Msk\n#define RTC_CR_FMT_Pos                 (6U)\n#define RTC_CR_FMT_Msk                 (0x1UL << RTC_CR_FMT_Pos)               /*!< 0x00000040 */\n#define RTC_CR_FMT                     RTC_CR_FMT_Msk\n#define RTC_CR_BYPSHAD_Pos             (5U)\n#define RTC_CR_BYPSHAD_Msk             (0x1UL << RTC_CR_BYPSHAD_Pos)           /*!< 0x00000020 */\n#define RTC_CR_BYPSHAD                 RTC_CR_BYPSHAD_Msk\n#define RTC_CR_REFCKON_Pos             (4U)\n#define RTC_CR_REFCKON_Msk             (0x1UL << RTC_CR_REFCKON_Pos)           /*!< 0x00000010 */\n#define RTC_CR_REFCKON                 RTC_CR_REFCKON_Msk\n#define RTC_CR_TSEDGE_Pos              (3U)\n#define RTC_CR_TSEDGE_Msk              (0x1UL << RTC_CR_TSEDGE_Pos)            /*!< 0x00000008 */\n#define RTC_CR_TSEDGE                  RTC_CR_TSEDGE_Msk\n#define RTC_CR_WUCKSEL_Pos             (0U)\n#define RTC_CR_WUCKSEL_Msk             (0x7UL << RTC_CR_WUCKSEL_Pos)           /*!< 0x00000007 */\n#define RTC_CR_WUCKSEL                 RTC_CR_WUCKSEL_Msk\n#define RTC_CR_WUCKSEL_0               (0x1UL << RTC_CR_WUCKSEL_Pos)            /*!< 0x00000001 */\n#define RTC_CR_WUCKSEL_1               (0x2UL << RTC_CR_WUCKSEL_Pos)            /*!< 0x00000002 */\n#define RTC_CR_WUCKSEL_2               (0x4UL << RTC_CR_WUCKSEL_Pos)            /*!< 0x00000004 */\n\n/********************  Bits definition for RTC_ISR register  ******************/\n#define RTC_ISR_ITSF_Pos               (17U)\n#define RTC_ISR_ITSF_Msk               (0x1UL << RTC_ISR_ITSF_Pos)             /*!< 0x00020000 */\n#define RTC_ISR_ITSF                   RTC_ISR_ITSF_Msk\n#define RTC_ISR_RECALPF_Pos            (16U)\n#define RTC_ISR_RECALPF_Msk            (0x1UL << RTC_ISR_RECALPF_Pos)          /*!< 0x00010000 */\n#define RTC_ISR_RECALPF                RTC_ISR_RECALPF_Msk\n#define RTC_ISR_TAMP3F_Pos             (15U)\n#define RTC_ISR_TAMP3F_Msk             (0x1UL << RTC_ISR_TAMP3F_Pos)           /*!< 0x00008000 */\n#define RTC_ISR_TAMP3F                 RTC_ISR_TAMP3F_Msk\n#define RTC_ISR_TAMP2F_Pos             (14U)\n#define RTC_ISR_TAMP2F_Msk             (0x1UL << RTC_ISR_TAMP2F_Pos)           /*!< 0x00004000 */\n#define RTC_ISR_TAMP2F                 RTC_ISR_TAMP2F_Msk\n#define RTC_ISR_TAMP1F_Pos             (13U)\n#define RTC_ISR_TAMP1F_Msk             (0x1UL << RTC_ISR_TAMP1F_Pos)           /*!< 0x00002000 */\n#define RTC_ISR_TAMP1F                 RTC_ISR_TAMP1F_Msk\n#define RTC_ISR_TSOVF_Pos              (12U)\n#define RTC_ISR_TSOVF_Msk              (0x1UL << RTC_ISR_TSOVF_Pos)            /*!< 0x00001000 */\n#define RTC_ISR_TSOVF                  RTC_ISR_TSOVF_Msk\n#define RTC_ISR_TSF_Pos                (11U)\n#define RTC_ISR_TSF_Msk                (0x1UL << RTC_ISR_TSF_Pos)              /*!< 0x00000800 */\n#define RTC_ISR_TSF                    RTC_ISR_TSF_Msk\n#define RTC_ISR_WUTF_Pos               (10U)\n#define RTC_ISR_WUTF_Msk               (0x1UL << RTC_ISR_WUTF_Pos)             /*!< 0x00000400 */\n#define RTC_ISR_WUTF                   RTC_ISR_WUTF_Msk\n#define RTC_ISR_ALRBF_Pos              (9U)\n#define RTC_ISR_ALRBF_Msk              (0x1UL << RTC_ISR_ALRBF_Pos)            /*!< 0x00000200 */\n#define RTC_ISR_ALRBF                  RTC_ISR_ALRBF_Msk\n#define RTC_ISR_ALRAF_Pos              (8U)\n#define RTC_ISR_ALRAF_Msk              (0x1UL << RTC_ISR_ALRAF_Pos)            /*!< 0x00000100 */\n#define RTC_ISR_ALRAF                  RTC_ISR_ALRAF_Msk\n#define RTC_ISR_INIT_Pos               (7U)\n#define RTC_ISR_INIT_Msk               (0x1UL << RTC_ISR_INIT_Pos)             /*!< 0x00000080 */\n#define RTC_ISR_INIT                   RTC_ISR_INIT_Msk\n#define RTC_ISR_INITF_Pos              (6U)\n#define RTC_ISR_INITF_Msk              (0x1UL << RTC_ISR_INITF_Pos)            /*!< 0x00000040 */\n#define RTC_ISR_INITF                  RTC_ISR_INITF_Msk\n#define RTC_ISR_RSF_Pos                (5U)\n#define RTC_ISR_RSF_Msk                (0x1UL << RTC_ISR_RSF_Pos)              /*!< 0x00000020 */\n#define RTC_ISR_RSF                    RTC_ISR_RSF_Msk\n#define RTC_ISR_INITS_Pos              (4U)\n#define RTC_ISR_INITS_Msk              (0x1UL << RTC_ISR_INITS_Pos)            /*!< 0x00000010 */\n#define RTC_ISR_INITS                  RTC_ISR_INITS_Msk\n#define RTC_ISR_SHPF_Pos               (3U)\n#define RTC_ISR_SHPF_Msk               (0x1UL << RTC_ISR_SHPF_Pos)             /*!< 0x00000008 */\n#define RTC_ISR_SHPF                   RTC_ISR_SHPF_Msk\n#define RTC_ISR_WUTWF_Pos              (2U)\n#define RTC_ISR_WUTWF_Msk              (0x1UL << RTC_ISR_WUTWF_Pos)            /*!< 0x00000004 */\n#define RTC_ISR_WUTWF                  RTC_ISR_WUTWF_Msk\n#define RTC_ISR_ALRBWF_Pos             (1U)\n#define RTC_ISR_ALRBWF_Msk             (0x1UL << RTC_ISR_ALRBWF_Pos)           /*!< 0x00000002 */\n#define RTC_ISR_ALRBWF                 RTC_ISR_ALRBWF_Msk\n#define RTC_ISR_ALRAWF_Pos             (0U)\n#define RTC_ISR_ALRAWF_Msk             (0x1UL << RTC_ISR_ALRAWF_Pos)           /*!< 0x00000001 */\n#define RTC_ISR_ALRAWF                 RTC_ISR_ALRAWF_Msk\n\n/********************  Bits definition for RTC_PRER register  *****************/\n#define RTC_PRER_PREDIV_A_Pos          (16U)\n#define RTC_PRER_PREDIV_A_Msk          (0x7FUL << RTC_PRER_PREDIV_A_Pos)       /*!< 0x007F0000 */\n#define RTC_PRER_PREDIV_A              RTC_PRER_PREDIV_A_Msk\n#define RTC_PRER_PREDIV_S_Pos          (0U)\n#define RTC_PRER_PREDIV_S_Msk          (0x7FFFUL << RTC_PRER_PREDIV_S_Pos)     /*!< 0x00007FFF */\n#define RTC_PRER_PREDIV_S              RTC_PRER_PREDIV_S_Msk\n\n/********************  Bits definition for RTC_WUTR register  *****************/\n#define RTC_WUTR_WUT_Pos               (0U)\n#define RTC_WUTR_WUT_Msk               (0xFFFFUL << RTC_WUTR_WUT_Pos)          /*!< 0x0000FFFF */\n#define RTC_WUTR_WUT                   RTC_WUTR_WUT_Msk\n\n/********************  Bits definition for RTC_ALRMAR register  ***************/\n#define RTC_ALRMAR_MSK4_Pos            (31U)\n#define RTC_ALRMAR_MSK4_Msk            (0x1UL << RTC_ALRMAR_MSK4_Pos)          /*!< 0x80000000 */\n#define RTC_ALRMAR_MSK4                RTC_ALRMAR_MSK4_Msk\n#define RTC_ALRMAR_WDSEL_Pos           (30U)\n#define RTC_ALRMAR_WDSEL_Msk           (0x1UL << RTC_ALRMAR_WDSEL_Pos)         /*!< 0x40000000 */\n#define RTC_ALRMAR_WDSEL               RTC_ALRMAR_WDSEL_Msk\n#define RTC_ALRMAR_DT_Pos              (28U)\n#define RTC_ALRMAR_DT_Msk              (0x3UL << RTC_ALRMAR_DT_Pos)            /*!< 0x30000000 */\n#define RTC_ALRMAR_DT                  RTC_ALRMAR_DT_Msk\n#define RTC_ALRMAR_DT_0                (0x1UL << RTC_ALRMAR_DT_Pos)             /*!< 0x10000000 */\n#define RTC_ALRMAR_DT_1                (0x2UL << RTC_ALRMAR_DT_Pos)             /*!< 0x20000000 */\n#define RTC_ALRMAR_DU_Pos              (24U)\n#define RTC_ALRMAR_DU_Msk              (0xFUL << RTC_ALRMAR_DU_Pos)            /*!< 0x0F000000 */\n#define RTC_ALRMAR_DU                  RTC_ALRMAR_DU_Msk\n#define RTC_ALRMAR_DU_0                (0x1UL << RTC_ALRMAR_DU_Pos)             /*!< 0x01000000 */\n#define RTC_ALRMAR_DU_1                (0x2UL << RTC_ALRMAR_DU_Pos)             /*!< 0x02000000 */\n#define RTC_ALRMAR_DU_2                (0x4UL << RTC_ALRMAR_DU_Pos)             /*!< 0x04000000 */\n#define RTC_ALRMAR_DU_3                (0x8UL << RTC_ALRMAR_DU_Pos)             /*!< 0x08000000 */\n#define RTC_ALRMAR_MSK3_Pos            (23U)\n#define RTC_ALRMAR_MSK3_Msk            (0x1UL << RTC_ALRMAR_MSK3_Pos)          /*!< 0x00800000 */\n#define RTC_ALRMAR_MSK3                RTC_ALRMAR_MSK3_Msk\n#define RTC_ALRMAR_PM_Pos              (22U)\n#define RTC_ALRMAR_PM_Msk              (0x1UL << RTC_ALRMAR_PM_Pos)            /*!< 0x00400000 */\n#define RTC_ALRMAR_PM                  RTC_ALRMAR_PM_Msk\n#define RTC_ALRMAR_HT_Pos              (20U)\n#define RTC_ALRMAR_HT_Msk              (0x3UL << RTC_ALRMAR_HT_Pos)            /*!< 0x00300000 */\n#define RTC_ALRMAR_HT                  RTC_ALRMAR_HT_Msk\n#define RTC_ALRMAR_HT_0                (0x1UL << RTC_ALRMAR_HT_Pos)             /*!< 0x00100000 */\n#define RTC_ALRMAR_HT_1                (0x2UL << RTC_ALRMAR_HT_Pos)             /*!< 0x00200000 */\n#define RTC_ALRMAR_HU_Pos              (16U)\n#define RTC_ALRMAR_HU_Msk              (0xFUL << RTC_ALRMAR_HU_Pos)            /*!< 0x000F0000 */\n#define RTC_ALRMAR_HU                  RTC_ALRMAR_HU_Msk\n#define RTC_ALRMAR_HU_0                (0x1UL << RTC_ALRMAR_HU_Pos)             /*!< 0x00010000 */\n#define RTC_ALRMAR_HU_1                (0x2UL << RTC_ALRMAR_HU_Pos)             /*!< 0x00020000 */\n#define RTC_ALRMAR_HU_2                (0x4UL << RTC_ALRMAR_HU_Pos)             /*!< 0x00040000 */\n#define RTC_ALRMAR_HU_3                (0x8UL << RTC_ALRMAR_HU_Pos)             /*!< 0x00080000 */\n#define RTC_ALRMAR_MSK2_Pos            (15U)\n#define RTC_ALRMAR_MSK2_Msk            (0x1UL << RTC_ALRMAR_MSK2_Pos)          /*!< 0x00008000 */\n#define RTC_ALRMAR_MSK2                RTC_ALRMAR_MSK2_Msk\n#define RTC_ALRMAR_MNT_Pos             (12U)\n#define RTC_ALRMAR_MNT_Msk             (0x7UL << RTC_ALRMAR_MNT_Pos)           /*!< 0x00007000 */\n#define RTC_ALRMAR_MNT                 RTC_ALRMAR_MNT_Msk\n#define RTC_ALRMAR_MNT_0               (0x1UL << RTC_ALRMAR_MNT_Pos)            /*!< 0x00001000 */\n#define RTC_ALRMAR_MNT_1               (0x2UL << RTC_ALRMAR_MNT_Pos)            /*!< 0x00002000 */\n#define RTC_ALRMAR_MNT_2               (0x4UL << RTC_ALRMAR_MNT_Pos)            /*!< 0x00004000 */\n#define RTC_ALRMAR_MNU_Pos             (8U)\n#define RTC_ALRMAR_MNU_Msk             (0xFUL << RTC_ALRMAR_MNU_Pos)           /*!< 0x00000F00 */\n#define RTC_ALRMAR_MNU                 RTC_ALRMAR_MNU_Msk\n#define RTC_ALRMAR_MNU_0               (0x1UL << RTC_ALRMAR_MNU_Pos)            /*!< 0x00000100 */\n#define RTC_ALRMAR_MNU_1               (0x2UL << RTC_ALRMAR_MNU_Pos)            /*!< 0x00000200 */\n#define RTC_ALRMAR_MNU_2               (0x4UL << RTC_ALRMAR_MNU_Pos)            /*!< 0x00000400 */\n#define RTC_ALRMAR_MNU_3               (0x8UL << RTC_ALRMAR_MNU_Pos)            /*!< 0x00000800 */\n#define RTC_ALRMAR_MSK1_Pos            (7U)\n#define RTC_ALRMAR_MSK1_Msk            (0x1UL << RTC_ALRMAR_MSK1_Pos)          /*!< 0x00000080 */\n#define RTC_ALRMAR_MSK1                RTC_ALRMAR_MSK1_Msk\n#define RTC_ALRMAR_ST_Pos              (4U)\n#define RTC_ALRMAR_ST_Msk              (0x7UL << RTC_ALRMAR_ST_Pos)            /*!< 0x00000070 */\n#define RTC_ALRMAR_ST                  RTC_ALRMAR_ST_Msk\n#define RTC_ALRMAR_ST_0                (0x1UL << RTC_ALRMAR_ST_Pos)             /*!< 0x00000010 */\n#define RTC_ALRMAR_ST_1                (0x2UL << RTC_ALRMAR_ST_Pos)             /*!< 0x00000020 */\n#define RTC_ALRMAR_ST_2                (0x4UL << RTC_ALRMAR_ST_Pos)             /*!< 0x00000040 */\n#define RTC_ALRMAR_SU_Pos              (0U)\n#define RTC_ALRMAR_SU_Msk              (0xFUL << RTC_ALRMAR_SU_Pos)            /*!< 0x0000000F */\n#define RTC_ALRMAR_SU                  RTC_ALRMAR_SU_Msk\n#define RTC_ALRMAR_SU_0                (0x1UL << RTC_ALRMAR_SU_Pos)             /*!< 0x00000001 */\n#define RTC_ALRMAR_SU_1                (0x2UL << RTC_ALRMAR_SU_Pos)             /*!< 0x00000002 */\n#define RTC_ALRMAR_SU_2                (0x4UL << RTC_ALRMAR_SU_Pos)             /*!< 0x00000004 */\n#define RTC_ALRMAR_SU_3                (0x8UL << RTC_ALRMAR_SU_Pos)             /*!< 0x00000008 */\n\n/********************  Bits definition for RTC_ALRMBR register  ***************/\n#define RTC_ALRMBR_MSK4_Pos            (31U)\n#define RTC_ALRMBR_MSK4_Msk            (0x1UL << RTC_ALRMBR_MSK4_Pos)          /*!< 0x80000000 */\n#define RTC_ALRMBR_MSK4                RTC_ALRMBR_MSK4_Msk\n#define RTC_ALRMBR_WDSEL_Pos           (30U)\n#define RTC_ALRMBR_WDSEL_Msk           (0x1UL << RTC_ALRMBR_WDSEL_Pos)         /*!< 0x40000000 */\n#define RTC_ALRMBR_WDSEL               RTC_ALRMBR_WDSEL_Msk\n#define RTC_ALRMBR_DT_Pos              (28U)\n#define RTC_ALRMBR_DT_Msk              (0x3UL << RTC_ALRMBR_DT_Pos)            /*!< 0x30000000 */\n#define RTC_ALRMBR_DT                  RTC_ALRMBR_DT_Msk\n#define RTC_ALRMBR_DT_0                (0x1UL << RTC_ALRMBR_DT_Pos)             /*!< 0x10000000 */\n#define RTC_ALRMBR_DT_1                (0x2UL << RTC_ALRMBR_DT_Pos)             /*!< 0x20000000 */\n#define RTC_ALRMBR_DU_Pos              (24U)\n#define RTC_ALRMBR_DU_Msk              (0xFUL << RTC_ALRMBR_DU_Pos)            /*!< 0x0F000000 */\n#define RTC_ALRMBR_DU                  RTC_ALRMBR_DU_Msk\n#define RTC_ALRMBR_DU_0                (0x1UL << RTC_ALRMBR_DU_Pos)             /*!< 0x01000000 */\n#define RTC_ALRMBR_DU_1                (0x2UL << RTC_ALRMBR_DU_Pos)             /*!< 0x02000000 */\n#define RTC_ALRMBR_DU_2                (0x4UL << RTC_ALRMBR_DU_Pos)             /*!< 0x04000000 */\n#define RTC_ALRMBR_DU_3                (0x8UL << RTC_ALRMBR_DU_Pos)             /*!< 0x08000000 */\n#define RTC_ALRMBR_MSK3_Pos            (23U)\n#define RTC_ALRMBR_MSK3_Msk            (0x1UL << RTC_ALRMBR_MSK3_Pos)          /*!< 0x00800000 */\n#define RTC_ALRMBR_MSK3                RTC_ALRMBR_MSK3_Msk\n#define RTC_ALRMBR_PM_Pos              (22U)\n#define RTC_ALRMBR_PM_Msk              (0x1UL << RTC_ALRMBR_PM_Pos)            /*!< 0x00400000 */\n#define RTC_ALRMBR_PM                  RTC_ALRMBR_PM_Msk\n#define RTC_ALRMBR_HT_Pos              (20U)\n#define RTC_ALRMBR_HT_Msk              (0x3UL << RTC_ALRMBR_HT_Pos)            /*!< 0x00300000 */\n#define RTC_ALRMBR_HT                  RTC_ALRMBR_HT_Msk\n#define RTC_ALRMBR_HT_0                (0x1UL << RTC_ALRMBR_HT_Pos)             /*!< 0x00100000 */\n#define RTC_ALRMBR_HT_1                (0x2UL << RTC_ALRMBR_HT_Pos)             /*!< 0x00200000 */\n#define RTC_ALRMBR_HU_Pos              (16U)\n#define RTC_ALRMBR_HU_Msk              (0xFUL << RTC_ALRMBR_HU_Pos)            /*!< 0x000F0000 */\n#define RTC_ALRMBR_HU                  RTC_ALRMBR_HU_Msk\n#define RTC_ALRMBR_HU_0                (0x1UL << RTC_ALRMBR_HU_Pos)             /*!< 0x00010000 */\n#define RTC_ALRMBR_HU_1                (0x2UL << RTC_ALRMBR_HU_Pos)             /*!< 0x00020000 */\n#define RTC_ALRMBR_HU_2                (0x4UL << RTC_ALRMBR_HU_Pos)             /*!< 0x00040000 */\n#define RTC_ALRMBR_HU_3                (0x8UL << RTC_ALRMBR_HU_Pos)             /*!< 0x00080000 */\n#define RTC_ALRMBR_MSK2_Pos            (15U)\n#define RTC_ALRMBR_MSK2_Msk            (0x1UL << RTC_ALRMBR_MSK2_Pos)          /*!< 0x00008000 */\n#define RTC_ALRMBR_MSK2                RTC_ALRMBR_MSK2_Msk\n#define RTC_ALRMBR_MNT_Pos             (12U)\n#define RTC_ALRMBR_MNT_Msk             (0x7UL << RTC_ALRMBR_MNT_Pos)           /*!< 0x00007000 */\n#define RTC_ALRMBR_MNT                 RTC_ALRMBR_MNT_Msk\n#define RTC_ALRMBR_MNT_0               (0x1UL << RTC_ALRMBR_MNT_Pos)            /*!< 0x00001000 */\n#define RTC_ALRMBR_MNT_1               (0x2UL << RTC_ALRMBR_MNT_Pos)            /*!< 0x00002000 */\n#define RTC_ALRMBR_MNT_2               (0x4UL << RTC_ALRMBR_MNT_Pos)            /*!< 0x00004000 */\n#define RTC_ALRMBR_MNU_Pos             (8U)\n#define RTC_ALRMBR_MNU_Msk             (0xFUL << RTC_ALRMBR_MNU_Pos)           /*!< 0x00000F00 */\n#define RTC_ALRMBR_MNU                 RTC_ALRMBR_MNU_Msk\n#define RTC_ALRMBR_MNU_0               (0x1UL << RTC_ALRMBR_MNU_Pos)            /*!< 0x00000100 */\n#define RTC_ALRMBR_MNU_1               (0x2UL << RTC_ALRMBR_MNU_Pos)            /*!< 0x00000200 */\n#define RTC_ALRMBR_MNU_2               (0x4UL << RTC_ALRMBR_MNU_Pos)            /*!< 0x00000400 */\n#define RTC_ALRMBR_MNU_3               (0x8UL << RTC_ALRMBR_MNU_Pos)            /*!< 0x00000800 */\n#define RTC_ALRMBR_MSK1_Pos            (7U)\n#define RTC_ALRMBR_MSK1_Msk            (0x1UL << RTC_ALRMBR_MSK1_Pos)          /*!< 0x00000080 */\n#define RTC_ALRMBR_MSK1                RTC_ALRMBR_MSK1_Msk\n#define RTC_ALRMBR_ST_Pos              (4U)\n#define RTC_ALRMBR_ST_Msk              (0x7UL << RTC_ALRMBR_ST_Pos)            /*!< 0x00000070 */\n#define RTC_ALRMBR_ST                  RTC_ALRMBR_ST_Msk\n#define RTC_ALRMBR_ST_0                (0x1UL << RTC_ALRMBR_ST_Pos)             /*!< 0x00000010 */\n#define RTC_ALRMBR_ST_1                (0x2UL << RTC_ALRMBR_ST_Pos)             /*!< 0x00000020 */\n#define RTC_ALRMBR_ST_2                (0x4UL << RTC_ALRMBR_ST_Pos)             /*!< 0x00000040 */\n#define RTC_ALRMBR_SU_Pos              (0U)\n#define RTC_ALRMBR_SU_Msk              (0xFUL << RTC_ALRMBR_SU_Pos)            /*!< 0x0000000F */\n#define RTC_ALRMBR_SU                  RTC_ALRMBR_SU_Msk\n#define RTC_ALRMBR_SU_0                (0x1UL << RTC_ALRMBR_SU_Pos)             /*!< 0x00000001 */\n#define RTC_ALRMBR_SU_1                (0x2UL << RTC_ALRMBR_SU_Pos)             /*!< 0x00000002 */\n#define RTC_ALRMBR_SU_2                (0x4UL << RTC_ALRMBR_SU_Pos)             /*!< 0x00000004 */\n#define RTC_ALRMBR_SU_3                (0x8UL << RTC_ALRMBR_SU_Pos)             /*!< 0x00000008 */\n\n/********************  Bits definition for RTC_WPR register  ******************/\n#define RTC_WPR_KEY_Pos                (0U)\n#define RTC_WPR_KEY_Msk                (0xFFUL << RTC_WPR_KEY_Pos)             /*!< 0x000000FF */\n#define RTC_WPR_KEY                    RTC_WPR_KEY_Msk\n\n/********************  Bits definition for RTC_SSR register  ******************/\n#define RTC_SSR_SS_Pos                 (0U)\n#define RTC_SSR_SS_Msk                 (0xFFFFUL << RTC_SSR_SS_Pos)            /*!< 0x0000FFFF */\n#define RTC_SSR_SS                     RTC_SSR_SS_Msk\n\n/********************  Bits definition for RTC_SHIFTR register  ***************/\n#define RTC_SHIFTR_SUBFS_Pos           (0U)\n#define RTC_SHIFTR_SUBFS_Msk           (0x7FFFUL << RTC_SHIFTR_SUBFS_Pos)      /*!< 0x00007FFF */\n#define RTC_SHIFTR_SUBFS               RTC_SHIFTR_SUBFS_Msk\n#define RTC_SHIFTR_ADD1S_Pos           (31U)\n#define RTC_SHIFTR_ADD1S_Msk           (0x1UL << RTC_SHIFTR_ADD1S_Pos)         /*!< 0x80000000 */\n#define RTC_SHIFTR_ADD1S               RTC_SHIFTR_ADD1S_Msk\n\n/********************  Bits definition for RTC_TSTR register  *****************/\n#define RTC_TSTR_PM_Pos                (22U)\n#define RTC_TSTR_PM_Msk                (0x1UL << RTC_TSTR_PM_Pos)              /*!< 0x00400000 */\n#define RTC_TSTR_PM                    RTC_TSTR_PM_Msk\n#define RTC_TSTR_HT_Pos                (20U)\n#define RTC_TSTR_HT_Msk                (0x3UL << RTC_TSTR_HT_Pos)              /*!< 0x00300000 */\n#define RTC_TSTR_HT                    RTC_TSTR_HT_Msk\n#define RTC_TSTR_HT_0                  (0x1UL << RTC_TSTR_HT_Pos)               /*!< 0x00100000 */\n#define RTC_TSTR_HT_1                  (0x2UL << RTC_TSTR_HT_Pos)               /*!< 0x00200000 */\n#define RTC_TSTR_HU_Pos                (16U)\n#define RTC_TSTR_HU_Msk                (0xFUL << RTC_TSTR_HU_Pos)              /*!< 0x000F0000 */\n#define RTC_TSTR_HU                    RTC_TSTR_HU_Msk\n#define RTC_TSTR_HU_0                  (0x1UL << RTC_TSTR_HU_Pos)               /*!< 0x00010000 */\n#define RTC_TSTR_HU_1                  (0x2UL << RTC_TSTR_HU_Pos)               /*!< 0x00020000 */\n#define RTC_TSTR_HU_2                  (0x4UL << RTC_TSTR_HU_Pos)               /*!< 0x00040000 */\n#define RTC_TSTR_HU_3                  (0x8UL << RTC_TSTR_HU_Pos)               /*!< 0x00080000 */\n#define RTC_TSTR_MNT_Pos               (12U)\n#define RTC_TSTR_MNT_Msk               (0x7UL << RTC_TSTR_MNT_Pos)             /*!< 0x00007000 */\n#define RTC_TSTR_MNT                   RTC_TSTR_MNT_Msk\n#define RTC_TSTR_MNT_0                 (0x1UL << RTC_TSTR_MNT_Pos)              /*!< 0x00001000 */\n#define RTC_TSTR_MNT_1                 (0x2UL << RTC_TSTR_MNT_Pos)              /*!< 0x00002000 */\n#define RTC_TSTR_MNT_2                 (0x4UL << RTC_TSTR_MNT_Pos)              /*!< 0x00004000 */\n#define RTC_TSTR_MNU_Pos               (8U)\n#define RTC_TSTR_MNU_Msk               (0xFUL << RTC_TSTR_MNU_Pos)             /*!< 0x00000F00 */\n#define RTC_TSTR_MNU                   RTC_TSTR_MNU_Msk\n#define RTC_TSTR_MNU_0                 (0x1UL << RTC_TSTR_MNU_Pos)              /*!< 0x00000100 */\n#define RTC_TSTR_MNU_1                 (0x2UL << RTC_TSTR_MNU_Pos)              /*!< 0x00000200 */\n#define RTC_TSTR_MNU_2                 (0x4UL << RTC_TSTR_MNU_Pos)              /*!< 0x00000400 */\n#define RTC_TSTR_MNU_3                 (0x8UL << RTC_TSTR_MNU_Pos)              /*!< 0x00000800 */\n#define RTC_TSTR_ST_Pos                (4U)\n#define RTC_TSTR_ST_Msk                (0x7UL << RTC_TSTR_ST_Pos)              /*!< 0x00000070 */\n#define RTC_TSTR_ST                    RTC_TSTR_ST_Msk\n#define RTC_TSTR_ST_0                  (0x1UL << RTC_TSTR_ST_Pos)               /*!< 0x00000010 */\n#define RTC_TSTR_ST_1                  (0x2UL << RTC_TSTR_ST_Pos)               /*!< 0x00000020 */\n#define RTC_TSTR_ST_2                  (0x4UL << RTC_TSTR_ST_Pos)               /*!< 0x00000040 */\n#define RTC_TSTR_SU_Pos                (0U)\n#define RTC_TSTR_SU_Msk                (0xFUL << RTC_TSTR_SU_Pos)              /*!< 0x0000000F */\n#define RTC_TSTR_SU                    RTC_TSTR_SU_Msk\n#define RTC_TSTR_SU_0                  (0x1UL << RTC_TSTR_SU_Pos)               /*!< 0x00000001 */\n#define RTC_TSTR_SU_1                  (0x2UL << RTC_TSTR_SU_Pos)               /*!< 0x00000002 */\n#define RTC_TSTR_SU_2                  (0x4UL << RTC_TSTR_SU_Pos)               /*!< 0x00000004 */\n#define RTC_TSTR_SU_3                  (0x8UL << RTC_TSTR_SU_Pos)               /*!< 0x00000008 */\n\n/********************  Bits definition for RTC_TSDR register  *****************/\n#define RTC_TSDR_WDU_Pos               (13U)\n#define RTC_TSDR_WDU_Msk               (0x7UL << RTC_TSDR_WDU_Pos)             /*!< 0x0000E000 */\n#define RTC_TSDR_WDU                   RTC_TSDR_WDU_Msk\n#define RTC_TSDR_WDU_0                 (0x1UL << RTC_TSDR_WDU_Pos)              /*!< 0x00002000 */\n#define RTC_TSDR_WDU_1                 (0x2UL << RTC_TSDR_WDU_Pos)              /*!< 0x00004000 */\n#define RTC_TSDR_WDU_2                 (0x4UL << RTC_TSDR_WDU_Pos)              /*!< 0x00008000 */\n#define RTC_TSDR_MT_Pos                (12U)\n#define RTC_TSDR_MT_Msk                (0x1UL << RTC_TSDR_MT_Pos)              /*!< 0x00001000 */\n#define RTC_TSDR_MT                    RTC_TSDR_MT_Msk\n#define RTC_TSDR_MU_Pos                (8U)\n#define RTC_TSDR_MU_Msk                (0xFUL << RTC_TSDR_MU_Pos)              /*!< 0x00000F00 */\n#define RTC_TSDR_MU                    RTC_TSDR_MU_Msk\n#define RTC_TSDR_MU_0                  (0x1UL << RTC_TSDR_MU_Pos)               /*!< 0x00000100 */\n#define RTC_TSDR_MU_1                  (0x2UL << RTC_TSDR_MU_Pos)               /*!< 0x00000200 */\n#define RTC_TSDR_MU_2                  (0x4UL << RTC_TSDR_MU_Pos)               /*!< 0x00000400 */\n#define RTC_TSDR_MU_3                  (0x8UL << RTC_TSDR_MU_Pos)               /*!< 0x00000800 */\n#define RTC_TSDR_DT_Pos                (4U)\n#define RTC_TSDR_DT_Msk                (0x3UL << RTC_TSDR_DT_Pos)              /*!< 0x00000030 */\n#define RTC_TSDR_DT                    RTC_TSDR_DT_Msk\n#define RTC_TSDR_DT_0                  (0x1UL << RTC_TSDR_DT_Pos)               /*!< 0x00000010 */\n#define RTC_TSDR_DT_1                  (0x2UL << RTC_TSDR_DT_Pos)               /*!< 0x00000020 */\n#define RTC_TSDR_DU_Pos                (0U)\n#define RTC_TSDR_DU_Msk                (0xFUL << RTC_TSDR_DU_Pos)              /*!< 0x0000000F */\n#define RTC_TSDR_DU                    RTC_TSDR_DU_Msk\n#define RTC_TSDR_DU_0                  (0x1UL << RTC_TSDR_DU_Pos)               /*!< 0x00000001 */\n#define RTC_TSDR_DU_1                  (0x2UL << RTC_TSDR_DU_Pos)               /*!< 0x00000002 */\n#define RTC_TSDR_DU_2                  (0x4UL << RTC_TSDR_DU_Pos)               /*!< 0x00000004 */\n#define RTC_TSDR_DU_3                  (0x8UL << RTC_TSDR_DU_Pos)               /*!< 0x00000008 */\n\n/********************  Bits definition for RTC_TSSSR register  ****************/\n#define RTC_TSSSR_SS_Pos               (0U)\n#define RTC_TSSSR_SS_Msk               (0xFFFFUL << RTC_TSSSR_SS_Pos)          /*!< 0x0000FFFF */\n#define RTC_TSSSR_SS                   RTC_TSSSR_SS_Msk\n\n/********************  Bits definition for RTC_CALR register  *****************/\n#define RTC_CALR_CALP_Pos              (15U)\n#define RTC_CALR_CALP_Msk              (0x1UL << RTC_CALR_CALP_Pos)            /*!< 0x00008000 */\n#define RTC_CALR_CALP                  RTC_CALR_CALP_Msk\n#define RTC_CALR_CALW8_Pos             (14U)\n#define RTC_CALR_CALW8_Msk             (0x1UL << RTC_CALR_CALW8_Pos)           /*!< 0x00004000 */\n#define RTC_CALR_CALW8                 RTC_CALR_CALW8_Msk\n#define RTC_CALR_CALW16_Pos            (13U)\n#define RTC_CALR_CALW16_Msk            (0x1UL << RTC_CALR_CALW16_Pos)          /*!< 0x00002000 */\n#define RTC_CALR_CALW16                RTC_CALR_CALW16_Msk\n#define RTC_CALR_CALM_Pos              (0U)\n#define RTC_CALR_CALM_Msk              (0x1FFUL << RTC_CALR_CALM_Pos)          /*!< 0x000001FF */\n#define RTC_CALR_CALM                  RTC_CALR_CALM_Msk\n#define RTC_CALR_CALM_0                (0x001UL << RTC_CALR_CALM_Pos)           /*!< 0x00000001 */\n#define RTC_CALR_CALM_1                (0x002UL << RTC_CALR_CALM_Pos)           /*!< 0x00000002 */\n#define RTC_CALR_CALM_2                (0x004UL << RTC_CALR_CALM_Pos)           /*!< 0x00000004 */\n#define RTC_CALR_CALM_3                (0x008UL << RTC_CALR_CALM_Pos)           /*!< 0x00000008 */\n#define RTC_CALR_CALM_4                (0x010UL << RTC_CALR_CALM_Pos)           /*!< 0x00000010 */\n#define RTC_CALR_CALM_5                (0x020UL << RTC_CALR_CALM_Pos)           /*!< 0x00000020 */\n#define RTC_CALR_CALM_6                (0x040UL << RTC_CALR_CALM_Pos)           /*!< 0x00000040 */\n#define RTC_CALR_CALM_7                (0x080UL << RTC_CALR_CALM_Pos)           /*!< 0x00000080 */\n#define RTC_CALR_CALM_8                (0x100UL << RTC_CALR_CALM_Pos)           /*!< 0x00000100 */\n\n/********************  Bits definition for RTC_TAMPCR register  ***************/\n#define RTC_TAMPCR_TAMP3MF_Pos         (24U)\n#define RTC_TAMPCR_TAMP3MF_Msk         (0x1UL << RTC_TAMPCR_TAMP3MF_Pos)       /*!< 0x01000000 */\n#define RTC_TAMPCR_TAMP3MF             RTC_TAMPCR_TAMP3MF_Msk\n#define RTC_TAMPCR_TAMP3NOERASE_Pos    (23U)\n#define RTC_TAMPCR_TAMP3NOERASE_Msk    (0x1UL << RTC_TAMPCR_TAMP3NOERASE_Pos)  /*!< 0x00800000 */\n#define RTC_TAMPCR_TAMP3NOERASE        RTC_TAMPCR_TAMP3NOERASE_Msk\n#define RTC_TAMPCR_TAMP3IE_Pos         (22U)\n#define RTC_TAMPCR_TAMP3IE_Msk         (0x1UL << RTC_TAMPCR_TAMP3IE_Pos)       /*!< 0x00400000 */\n#define RTC_TAMPCR_TAMP3IE             RTC_TAMPCR_TAMP3IE_Msk\n#define RTC_TAMPCR_TAMP2MF_Pos         (21U)\n#define RTC_TAMPCR_TAMP2MF_Msk         (0x1UL << RTC_TAMPCR_TAMP2MF_Pos)       /*!< 0x00200000 */\n#define RTC_TAMPCR_TAMP2MF             RTC_TAMPCR_TAMP2MF_Msk\n#define RTC_TAMPCR_TAMP2NOERASE_Pos    (20U)\n#define RTC_TAMPCR_TAMP2NOERASE_Msk    (0x1UL << RTC_TAMPCR_TAMP2NOERASE_Pos)  /*!< 0x00100000 */\n#define RTC_TAMPCR_TAMP2NOERASE        RTC_TAMPCR_TAMP2NOERASE_Msk\n#define RTC_TAMPCR_TAMP2IE_Pos         (19U)\n#define RTC_TAMPCR_TAMP2IE_Msk         (0x1UL << RTC_TAMPCR_TAMP2IE_Pos)       /*!< 0x00080000 */\n#define RTC_TAMPCR_TAMP2IE             RTC_TAMPCR_TAMP2IE_Msk\n#define RTC_TAMPCR_TAMP1MF_Pos         (18U)\n#define RTC_TAMPCR_TAMP1MF_Msk         (0x1UL << RTC_TAMPCR_TAMP1MF_Pos)       /*!< 0x00040000 */\n#define RTC_TAMPCR_TAMP1MF             RTC_TAMPCR_TAMP1MF_Msk\n#define RTC_TAMPCR_TAMP1NOERASE_Pos    (17U)\n#define RTC_TAMPCR_TAMP1NOERASE_Msk    (0x1UL << RTC_TAMPCR_TAMP1NOERASE_Pos)  /*!< 0x00020000 */\n#define RTC_TAMPCR_TAMP1NOERASE        RTC_TAMPCR_TAMP1NOERASE_Msk\n#define RTC_TAMPCR_TAMP1IE_Pos         (16U)\n#define RTC_TAMPCR_TAMP1IE_Msk         (0x1UL << RTC_TAMPCR_TAMP1IE_Pos)       /*!< 0x00010000 */\n#define RTC_TAMPCR_TAMP1IE             RTC_TAMPCR_TAMP1IE_Msk\n#define RTC_TAMPCR_TAMPPUDIS_Pos       (15U)\n#define RTC_TAMPCR_TAMPPUDIS_Msk       (0x1UL << RTC_TAMPCR_TAMPPUDIS_Pos)     /*!< 0x00008000 */\n#define RTC_TAMPCR_TAMPPUDIS           RTC_TAMPCR_TAMPPUDIS_Msk\n#define RTC_TAMPCR_TAMPPRCH_Pos        (13U)\n#define RTC_TAMPCR_TAMPPRCH_Msk        (0x3UL << RTC_TAMPCR_TAMPPRCH_Pos)      /*!< 0x00006000 */\n#define RTC_TAMPCR_TAMPPRCH            RTC_TAMPCR_TAMPPRCH_Msk\n#define RTC_TAMPCR_TAMPPRCH_0          (0x1UL << RTC_TAMPCR_TAMPPRCH_Pos)       /*!< 0x00002000 */\n#define RTC_TAMPCR_TAMPPRCH_1          (0x2UL << RTC_TAMPCR_TAMPPRCH_Pos)       /*!< 0x00004000 */\n#define RTC_TAMPCR_TAMPFLT_Pos         (11U)\n#define RTC_TAMPCR_TAMPFLT_Msk         (0x3UL << RTC_TAMPCR_TAMPFLT_Pos)       /*!< 0x00001800 */\n#define RTC_TAMPCR_TAMPFLT             RTC_TAMPCR_TAMPFLT_Msk\n#define RTC_TAMPCR_TAMPFLT_0           (0x1UL << RTC_TAMPCR_TAMPFLT_Pos)        /*!< 0x00000800 */\n#define RTC_TAMPCR_TAMPFLT_1           (0x2UL << RTC_TAMPCR_TAMPFLT_Pos)        /*!< 0x00001000 */\n#define RTC_TAMPCR_TAMPFREQ_Pos        (8U)\n#define RTC_TAMPCR_TAMPFREQ_Msk        (0x7UL << RTC_TAMPCR_TAMPFREQ_Pos)      /*!< 0x00000700 */\n#define RTC_TAMPCR_TAMPFREQ            RTC_TAMPCR_TAMPFREQ_Msk\n#define RTC_TAMPCR_TAMPFREQ_0          (0x1UL << RTC_TAMPCR_TAMPFREQ_Pos)       /*!< 0x00000100 */\n#define RTC_TAMPCR_TAMPFREQ_1          (0x2UL << RTC_TAMPCR_TAMPFREQ_Pos)       /*!< 0x00000200 */\n#define RTC_TAMPCR_TAMPFREQ_2          (0x4UL << RTC_TAMPCR_TAMPFREQ_Pos)       /*!< 0x00000400 */\n#define RTC_TAMPCR_TAMPTS_Pos          (7U)\n#define RTC_TAMPCR_TAMPTS_Msk          (0x1UL << RTC_TAMPCR_TAMPTS_Pos)        /*!< 0x00000080 */\n#define RTC_TAMPCR_TAMPTS              RTC_TAMPCR_TAMPTS_Msk\n#define RTC_TAMPCR_TAMP3TRG_Pos        (6U)\n#define RTC_TAMPCR_TAMP3TRG_Msk        (0x1UL << RTC_TAMPCR_TAMP3TRG_Pos)      /*!< 0x00000040 */\n#define RTC_TAMPCR_TAMP3TRG            RTC_TAMPCR_TAMP3TRG_Msk\n#define RTC_TAMPCR_TAMP3E_Pos          (5U)\n#define RTC_TAMPCR_TAMP3E_Msk          (0x1UL << RTC_TAMPCR_TAMP3E_Pos)        /*!< 0x00000020 */\n#define RTC_TAMPCR_TAMP3E              RTC_TAMPCR_TAMP3E_Msk\n#define RTC_TAMPCR_TAMP2TRG_Pos        (4U)\n#define RTC_TAMPCR_TAMP2TRG_Msk        (0x1UL << RTC_TAMPCR_TAMP2TRG_Pos)      /*!< 0x00000010 */\n#define RTC_TAMPCR_TAMP2TRG            RTC_TAMPCR_TAMP2TRG_Msk\n#define RTC_TAMPCR_TAMP2E_Pos          (3U)\n#define RTC_TAMPCR_TAMP2E_Msk          (0x1UL << RTC_TAMPCR_TAMP2E_Pos)        /*!< 0x00000008 */\n#define RTC_TAMPCR_TAMP2E              RTC_TAMPCR_TAMP2E_Msk\n#define RTC_TAMPCR_TAMPIE_Pos          (2U)\n#define RTC_TAMPCR_TAMPIE_Msk          (0x1UL << RTC_TAMPCR_TAMPIE_Pos)        /*!< 0x00000004 */\n#define RTC_TAMPCR_TAMPIE              RTC_TAMPCR_TAMPIE_Msk\n#define RTC_TAMPCR_TAMP1TRG_Pos        (1U)\n#define RTC_TAMPCR_TAMP1TRG_Msk        (0x1UL << RTC_TAMPCR_TAMP1TRG_Pos)      /*!< 0x00000002 */\n#define RTC_TAMPCR_TAMP1TRG            RTC_TAMPCR_TAMP1TRG_Msk\n#define RTC_TAMPCR_TAMP1E_Pos          (0U)\n#define RTC_TAMPCR_TAMP1E_Msk          (0x1UL << RTC_TAMPCR_TAMP1E_Pos)        /*!< 0x00000001 */\n#define RTC_TAMPCR_TAMP1E              RTC_TAMPCR_TAMP1E_Msk\n\n/********************  Bits definition for RTC_ALRMASSR register  *************/\n#define RTC_ALRMASSR_MASKSS_Pos        (24U)\n#define RTC_ALRMASSR_MASKSS_Msk        (0xFUL << RTC_ALRMASSR_MASKSS_Pos)      /*!< 0x0F000000 */\n#define RTC_ALRMASSR_MASKSS            RTC_ALRMASSR_MASKSS_Msk\n#define RTC_ALRMASSR_MASKSS_0          (0x1UL << RTC_ALRMASSR_MASKSS_Pos)       /*!< 0x01000000 */\n#define RTC_ALRMASSR_MASKSS_1          (0x2UL << RTC_ALRMASSR_MASKSS_Pos)       /*!< 0x02000000 */\n#define RTC_ALRMASSR_MASKSS_2          (0x4UL << RTC_ALRMASSR_MASKSS_Pos)       /*!< 0x04000000 */\n#define RTC_ALRMASSR_MASKSS_3          (0x8UL << RTC_ALRMASSR_MASKSS_Pos)       /*!< 0x08000000 */\n#define RTC_ALRMASSR_SS_Pos            (0U)\n#define RTC_ALRMASSR_SS_Msk            (0x7FFFUL << RTC_ALRMASSR_SS_Pos)       /*!< 0x00007FFF */\n#define RTC_ALRMASSR_SS                RTC_ALRMASSR_SS_Msk\n\n/********************  Bits definition for RTC_ALRMBSSR register  *************/\n#define RTC_ALRMBSSR_MASKSS_Pos        (24U)\n#define RTC_ALRMBSSR_MASKSS_Msk        (0xFUL << RTC_ALRMBSSR_MASKSS_Pos)      /*!< 0x0F000000 */\n#define RTC_ALRMBSSR_MASKSS            RTC_ALRMBSSR_MASKSS_Msk\n#define RTC_ALRMBSSR_MASKSS_0          (0x1UL << RTC_ALRMBSSR_MASKSS_Pos)       /*!< 0x01000000 */\n#define RTC_ALRMBSSR_MASKSS_1          (0x2UL << RTC_ALRMBSSR_MASKSS_Pos)       /*!< 0x02000000 */\n#define RTC_ALRMBSSR_MASKSS_2          (0x4UL << RTC_ALRMBSSR_MASKSS_Pos)       /*!< 0x04000000 */\n#define RTC_ALRMBSSR_MASKSS_3          (0x8UL << RTC_ALRMBSSR_MASKSS_Pos)       /*!< 0x08000000 */\n#define RTC_ALRMBSSR_SS_Pos            (0U)\n#define RTC_ALRMBSSR_SS_Msk            (0x7FFFUL << RTC_ALRMBSSR_SS_Pos)       /*!< 0x00007FFF */\n#define RTC_ALRMBSSR_SS                RTC_ALRMBSSR_SS_Msk\n\n/********************  Bits definition for RTC_OR register  *******************/\n#define RTC_OR_OUT_RMP_Pos             (1U)\n#define RTC_OR_OUT_RMP_Msk             (0x1UL << RTC_OR_OUT_RMP_Pos)           /*!< 0x00000002 */\n#define RTC_OR_OUT_RMP                 RTC_OR_OUT_RMP_Msk\n#define RTC_OR_ALARMOUTTYPE_Pos        (0U)\n#define RTC_OR_ALARMOUTTYPE_Msk        (0x1UL << RTC_OR_ALARMOUTTYPE_Pos)      /*!< 0x00000001 */\n#define RTC_OR_ALARMOUTTYPE            RTC_OR_ALARMOUTTYPE_Msk\n\n/********************  Bits definition for RTC_BKP0R register  ****************/\n#define RTC_BKP0R_Pos                  (0U)\n#define RTC_BKP0R_Msk                  (0xFFFFFFFFUL << RTC_BKP0R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP0R                      RTC_BKP0R_Msk\n\n/********************  Bits definition for RTC_BKP1R register  ****************/\n#define RTC_BKP1R_Pos                  (0U)\n#define RTC_BKP1R_Msk                  (0xFFFFFFFFUL << RTC_BKP1R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP1R                      RTC_BKP1R_Msk\n\n/********************  Bits definition for RTC_BKP2R register  ****************/\n#define RTC_BKP2R_Pos                  (0U)\n#define RTC_BKP2R_Msk                  (0xFFFFFFFFUL << RTC_BKP2R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP2R                      RTC_BKP2R_Msk\n\n/********************  Bits definition for RTC_BKP3R register  ****************/\n#define RTC_BKP3R_Pos                  (0U)\n#define RTC_BKP3R_Msk                  (0xFFFFFFFFUL << RTC_BKP3R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP3R                      RTC_BKP3R_Msk\n\n/********************  Bits definition for RTC_BKP4R register  ****************/\n#define RTC_BKP4R_Pos                  (0U)\n#define RTC_BKP4R_Msk                  (0xFFFFFFFFUL << RTC_BKP4R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP4R                      RTC_BKP4R_Msk\n\n/********************  Bits definition for RTC_BKP5R register  ****************/\n#define RTC_BKP5R_Pos                  (0U)\n#define RTC_BKP5R_Msk                  (0xFFFFFFFFUL << RTC_BKP5R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP5R                      RTC_BKP5R_Msk\n\n/********************  Bits definition for RTC_BKP6R register  ****************/\n#define RTC_BKP6R_Pos                  (0U)\n#define RTC_BKP6R_Msk                  (0xFFFFFFFFUL << RTC_BKP6R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP6R                      RTC_BKP6R_Msk\n\n/********************  Bits definition for RTC_BKP7R register  ****************/\n#define RTC_BKP7R_Pos                  (0U)\n#define RTC_BKP7R_Msk                  (0xFFFFFFFFUL << RTC_BKP7R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP7R                      RTC_BKP7R_Msk\n\n/********************  Bits definition for RTC_BKP8R register  ****************/\n#define RTC_BKP8R_Pos                  (0U)\n#define RTC_BKP8R_Msk                  (0xFFFFFFFFUL << RTC_BKP8R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP8R                      RTC_BKP8R_Msk\n\n/********************  Bits definition for RTC_BKP9R register  ****************/\n#define RTC_BKP9R_Pos                  (0U)\n#define RTC_BKP9R_Msk                  (0xFFFFFFFFUL << RTC_BKP9R_Pos)         /*!< 0xFFFFFFFF */\n#define RTC_BKP9R                      RTC_BKP9R_Msk\n\n/********************  Bits definition for RTC_BKP10R register  ***************/\n#define RTC_BKP10R_Pos                 (0U)\n#define RTC_BKP10R_Msk                 (0xFFFFFFFFUL << RTC_BKP10R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP10R                     RTC_BKP10R_Msk\n\n/********************  Bits definition for RTC_BKP11R register  ***************/\n#define RTC_BKP11R_Pos                 (0U)\n#define RTC_BKP11R_Msk                 (0xFFFFFFFFUL << RTC_BKP11R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP11R                     RTC_BKP11R_Msk\n\n/********************  Bits definition for RTC_BKP12R register  ***************/\n#define RTC_BKP12R_Pos                 (0U)\n#define RTC_BKP12R_Msk                 (0xFFFFFFFFUL << RTC_BKP12R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP12R                     RTC_BKP12R_Msk\n\n/********************  Bits definition for RTC_BKP13R register  ***************/\n#define RTC_BKP13R_Pos                 (0U)\n#define RTC_BKP13R_Msk                 (0xFFFFFFFFUL << RTC_BKP13R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP13R                     RTC_BKP13R_Msk\n\n/********************  Bits definition for RTC_BKP14R register  ***************/\n#define RTC_BKP14R_Pos                 (0U)\n#define RTC_BKP14R_Msk                 (0xFFFFFFFFUL << RTC_BKP14R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP14R                     RTC_BKP14R_Msk\n\n/********************  Bits definition for RTC_BKP15R register  ***************/\n#define RTC_BKP15R_Pos                 (0U)\n#define RTC_BKP15R_Msk                 (0xFFFFFFFFUL << RTC_BKP15R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP15R                     RTC_BKP15R_Msk\n\n/********************  Bits definition for RTC_BKP16R register  ***************/\n#define RTC_BKP16R_Pos                 (0U)\n#define RTC_BKP16R_Msk                 (0xFFFFFFFFUL << RTC_BKP16R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP16R                     RTC_BKP16R_Msk\n\n/********************  Bits definition for RTC_BKP17R register  ***************/\n#define RTC_BKP17R_Pos                 (0U)\n#define RTC_BKP17R_Msk                 (0xFFFFFFFFUL << RTC_BKP17R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP17R                     RTC_BKP17R_Msk\n\n/********************  Bits definition for RTC_BKP18R register  ***************/\n#define RTC_BKP18R_Pos                 (0U)\n#define RTC_BKP18R_Msk                 (0xFFFFFFFFUL << RTC_BKP18R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP18R                     RTC_BKP18R_Msk\n\n/********************  Bits definition for RTC_BKP19R register  ***************/\n#define RTC_BKP19R_Pos                 (0U)\n#define RTC_BKP19R_Msk                 (0xFFFFFFFFUL << RTC_BKP19R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP19R                     RTC_BKP19R_Msk\n\n/********************  Bits definition for RTC_BKP20R register  ***************/\n#define RTC_BKP20R_Pos                 (0U)\n#define RTC_BKP20R_Msk                 (0xFFFFFFFFUL << RTC_BKP20R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP20R                     RTC_BKP20R_Msk\n\n/********************  Bits definition for RTC_BKP21R register  ***************/\n#define RTC_BKP21R_Pos                 (0U)\n#define RTC_BKP21R_Msk                 (0xFFFFFFFFUL << RTC_BKP21R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP21R                     RTC_BKP21R_Msk\n\n/********************  Bits definition for RTC_BKP22R register  ***************/\n#define RTC_BKP22R_Pos                 (0U)\n#define RTC_BKP22R_Msk                 (0xFFFFFFFFUL << RTC_BKP22R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP22R                     RTC_BKP22R_Msk\n\n/********************  Bits definition for RTC_BKP23R register  ***************/\n#define RTC_BKP23R_Pos                 (0U)\n#define RTC_BKP23R_Msk                 (0xFFFFFFFFUL << RTC_BKP23R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP23R                     RTC_BKP23R_Msk\n\n/********************  Bits definition for RTC_BKP24R register  ***************/\n#define RTC_BKP24R_Pos                 (0U)\n#define RTC_BKP24R_Msk                 (0xFFFFFFFFUL << RTC_BKP24R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP24R                     RTC_BKP24R_Msk\n\n/********************  Bits definition for RTC_BKP25R register  ***************/\n#define RTC_BKP25R_Pos                 (0U)\n#define RTC_BKP25R_Msk                 (0xFFFFFFFFUL << RTC_BKP25R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP25R                     RTC_BKP25R_Msk\n\n/********************  Bits definition for RTC_BKP26R register  ***************/\n#define RTC_BKP26R_Pos                 (0U)\n#define RTC_BKP26R_Msk                 (0xFFFFFFFFUL << RTC_BKP26R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP26R                     RTC_BKP26R_Msk\n\n/********************  Bits definition for RTC_BKP27R register  ***************/\n#define RTC_BKP27R_Pos                 (0U)\n#define RTC_BKP27R_Msk                 (0xFFFFFFFFUL << RTC_BKP27R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP27R                     RTC_BKP27R_Msk\n\n/********************  Bits definition for RTC_BKP28R register  ***************/\n#define RTC_BKP28R_Pos                 (0U)\n#define RTC_BKP28R_Msk                 (0xFFFFFFFFUL << RTC_BKP28R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP28R                     RTC_BKP28R_Msk\n\n/********************  Bits definition for RTC_BKP29R register  ***************/\n#define RTC_BKP29R_Pos                 (0U)\n#define RTC_BKP29R_Msk                 (0xFFFFFFFFUL << RTC_BKP29R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP29R                     RTC_BKP29R_Msk\n\n/********************  Bits definition for RTC_BKP30R register  ***************/\n#define RTC_BKP30R_Pos                 (0U)\n#define RTC_BKP30R_Msk                 (0xFFFFFFFFUL << RTC_BKP30R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP30R                     RTC_BKP30R_Msk\n\n/********************  Bits definition for RTC_BKP31R register  ***************/\n#define RTC_BKP31R_Pos                 (0U)\n#define RTC_BKP31R_Msk                 (0xFFFFFFFFUL << RTC_BKP31R_Pos)        /*!< 0xFFFFFFFF */\n#define RTC_BKP31R                     RTC_BKP31R_Msk\n\n/******************** Number of backup registers ******************************/\n#define RTC_BKP_NUMBER_Pos             (5U)\n#define RTC_BKP_NUMBER_Msk             (0x1UL << RTC_BKP_NUMBER_Pos)           /*!< 0x00000020 */\n#define RTC_BKP_NUMBER                 RTC_BKP_NUMBER_Msk\n\n/******************************************************************************/\n/*                                                                            */\n/*                              SPDIF-RX Interface                            */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bit definition for SPDIF_CR register  ******************/\n#define SPDIFRX_CR_SPDIFEN_Pos      (0U)\n#define SPDIFRX_CR_SPDIFEN_Msk      (0x3UL << SPDIFRX_CR_SPDIFEN_Pos)          /*!< 0x00000003 */\n#define SPDIFRX_CR_SPDIFEN          SPDIFRX_CR_SPDIFEN_Msk                     /*!<Peripheral Block Enable                      */\n#define SPDIFRX_CR_RXDMAEN_Pos      (2U)\n#define SPDIFRX_CR_RXDMAEN_Msk      (0x1UL << SPDIFRX_CR_RXDMAEN_Pos)          /*!< 0x00000004 */\n#define SPDIFRX_CR_RXDMAEN          SPDIFRX_CR_RXDMAEN_Msk                     /*!<Receiver DMA Enable for data flow            */\n#define SPDIFRX_CR_RXSTEO_Pos       (3U)\n#define SPDIFRX_CR_RXSTEO_Msk       (0x1UL << SPDIFRX_CR_RXSTEO_Pos)           /*!< 0x00000008 */\n#define SPDIFRX_CR_RXSTEO           SPDIFRX_CR_RXSTEO_Msk                      /*!<Stereo Mode                                  */\n#define SPDIFRX_CR_DRFMT_Pos        (4U)\n#define SPDIFRX_CR_DRFMT_Msk        (0x3UL << SPDIFRX_CR_DRFMT_Pos)            /*!< 0x00000030 */\n#define SPDIFRX_CR_DRFMT            SPDIFRX_CR_DRFMT_Msk                       /*!<RX Data format                               */\n#define SPDIFRX_CR_PMSK_Pos         (6U)\n#define SPDIFRX_CR_PMSK_Msk         (0x1UL << SPDIFRX_CR_PMSK_Pos)             /*!< 0x00000040 */\n#define SPDIFRX_CR_PMSK             SPDIFRX_CR_PMSK_Msk                        /*!<Mask Parity error bit                        */\n#define SPDIFRX_CR_VMSK_Pos         (7U)\n#define SPDIFRX_CR_VMSK_Msk         (0x1UL << SPDIFRX_CR_VMSK_Pos)             /*!< 0x00000080 */\n#define SPDIFRX_CR_VMSK             SPDIFRX_CR_VMSK_Msk                        /*!<Mask of Validity bit                         */\n#define SPDIFRX_CR_CUMSK_Pos        (8U)\n#define SPDIFRX_CR_CUMSK_Msk        (0x1UL << SPDIFRX_CR_CUMSK_Pos)            /*!< 0x00000100 */\n#define SPDIFRX_CR_CUMSK            SPDIFRX_CR_CUMSK_Msk                       /*!<Mask of channel status and user bits         */\n#define SPDIFRX_CR_PTMSK_Pos        (9U)\n#define SPDIFRX_CR_PTMSK_Msk        (0x1UL << SPDIFRX_CR_PTMSK_Pos)            /*!< 0x00000200 */\n#define SPDIFRX_CR_PTMSK            SPDIFRX_CR_PTMSK_Msk                       /*!<Mask of Preamble Type bits                   */\n#define SPDIFRX_CR_CBDMAEN_Pos      (10U)\n#define SPDIFRX_CR_CBDMAEN_Msk      (0x1UL << SPDIFRX_CR_CBDMAEN_Pos)          /*!< 0x00000400 */\n#define SPDIFRX_CR_CBDMAEN          SPDIFRX_CR_CBDMAEN_Msk                     /*!<Control Buffer DMA ENable for control flow   */\n#define SPDIFRX_CR_CHSEL_Pos        (11U)\n#define SPDIFRX_CR_CHSEL_Msk        (0x1UL << SPDIFRX_CR_CHSEL_Pos)            /*!< 0x00000800 */\n#define SPDIFRX_CR_CHSEL            SPDIFRX_CR_CHSEL_Msk                       /*!<Channel Selection                            */\n#define SPDIFRX_CR_NBTR_Pos         (12U)\n#define SPDIFRX_CR_NBTR_Msk         (0x3UL << SPDIFRX_CR_NBTR_Pos)             /*!< 0x00003000 */\n#define SPDIFRX_CR_NBTR             SPDIFRX_CR_NBTR_Msk                        /*!<Maximum allowed re-tries during synchronization phase */\n#define SPDIFRX_CR_WFA_Pos          (14U)\n#define SPDIFRX_CR_WFA_Msk          (0x1UL << SPDIFRX_CR_WFA_Pos)              /*!< 0x00004000 */\n#define SPDIFRX_CR_WFA              SPDIFRX_CR_WFA_Msk                         /*!<Wait For Activity     */\n#define SPDIFRX_CR_INSEL_Pos        (16U)\n#define SPDIFRX_CR_INSEL_Msk        (0x7UL << SPDIFRX_CR_INSEL_Pos)            /*!< 0x00070000 */\n#define SPDIFRX_CR_INSEL            SPDIFRX_CR_INSEL_Msk                       /*!<SPDIF input selection */\n#define SPDIFRX_CR_CKSEN_Pos        (20U)\n#define SPDIFRX_CR_CKSEN_Msk        (0x1UL << SPDIFRX_CR_CKSEN_Pos)            /*!< 0x00100000 */\n#define SPDIFRX_CR_CKSEN            SPDIFRX_CR_CKSEN_Msk                       /*!<Symbol Clock Enable */\n#define SPDIFRX_CR_CKSBKPEN_Pos     (21U)\n#define SPDIFRX_CR_CKSBKPEN_Msk     (0x1UL << SPDIFRX_CR_CKSBKPEN_Pos)         /*!< 0x00200000 */\n#define SPDIFRX_CR_CKSBKPEN         SPDIFRX_CR_CKSBKPEN_Msk                    /*!<Backup Symbol Clock Enable */\n\n/*******************  Bit definition for SPDIFRX_IMR register  *******************/\n#define SPDIFRX_IMR_RXNEIE_Pos      (0U)\n#define SPDIFRX_IMR_RXNEIE_Msk      (0x1UL << SPDIFRX_IMR_RXNEIE_Pos)          /*!< 0x00000001 */\n#define SPDIFRX_IMR_RXNEIE          SPDIFRX_IMR_RXNEIE_Msk                     /*!<RXNE interrupt enable                              */\n#define SPDIFRX_IMR_CSRNEIE_Pos     (1U)\n#define SPDIFRX_IMR_CSRNEIE_Msk     (0x1UL << SPDIFRX_IMR_CSRNEIE_Pos)         /*!< 0x00000002 */\n#define SPDIFRX_IMR_CSRNEIE         SPDIFRX_IMR_CSRNEIE_Msk                    /*!<Control Buffer Ready Interrupt Enable              */\n#define SPDIFRX_IMR_PERRIE_Pos      (2U)\n#define SPDIFRX_IMR_PERRIE_Msk      (0x1UL << SPDIFRX_IMR_PERRIE_Pos)          /*!< 0x00000004 */\n#define SPDIFRX_IMR_PERRIE          SPDIFRX_IMR_PERRIE_Msk                     /*!<Parity error interrupt enable                      */\n#define SPDIFRX_IMR_OVRIE_Pos       (3U)\n#define SPDIFRX_IMR_OVRIE_Msk       (0x1UL << SPDIFRX_IMR_OVRIE_Pos)           /*!< 0x00000008 */\n#define SPDIFRX_IMR_OVRIE           SPDIFRX_IMR_OVRIE_Msk                      /*!<Overrun error Interrupt Enable                     */\n#define SPDIFRX_IMR_SBLKIE_Pos      (4U)\n#define SPDIFRX_IMR_SBLKIE_Msk      (0x1UL << SPDIFRX_IMR_SBLKIE_Pos)          /*!< 0x00000010 */\n#define SPDIFRX_IMR_SBLKIE          SPDIFRX_IMR_SBLKIE_Msk                     /*!<Synchronization Block Detected Interrupt Enable    */\n#define SPDIFRX_IMR_SYNCDIE_Pos     (5U)\n#define SPDIFRX_IMR_SYNCDIE_Msk     (0x1UL << SPDIFRX_IMR_SYNCDIE_Pos)         /*!< 0x00000020 */\n#define SPDIFRX_IMR_SYNCDIE         SPDIFRX_IMR_SYNCDIE_Msk                    /*!<Synchronization Done                               */\n#define SPDIFRX_IMR_IFEIE_Pos       (6U)\n#define SPDIFRX_IMR_IFEIE_Msk       (0x1UL << SPDIFRX_IMR_IFEIE_Pos)           /*!< 0x00000040 */\n#define SPDIFRX_IMR_IFEIE           SPDIFRX_IMR_IFEIE_Msk                      /*!<Serial Interface Error Interrupt Enable            */\n\n/*******************  Bit definition for SPDIFRX_SR register  *******************/\n#define SPDIFRX_SR_RXNE_Pos         (0U)\n#define SPDIFRX_SR_RXNE_Msk         (0x1UL << SPDIFRX_SR_RXNE_Pos)             /*!< 0x00000001 */\n#define SPDIFRX_SR_RXNE             SPDIFRX_SR_RXNE_Msk                        /*!<Read data register not empty                          */\n#define SPDIFRX_SR_CSRNE_Pos        (1U)\n#define SPDIFRX_SR_CSRNE_Msk        (0x1UL << SPDIFRX_SR_CSRNE_Pos)            /*!< 0x00000002 */\n#define SPDIFRX_SR_CSRNE            SPDIFRX_SR_CSRNE_Msk                       /*!<The Control Buffer register is not empty              */\n#define SPDIFRX_SR_PERR_Pos         (2U)\n#define SPDIFRX_SR_PERR_Msk         (0x1UL << SPDIFRX_SR_PERR_Pos)             /*!< 0x00000004 */\n#define SPDIFRX_SR_PERR             SPDIFRX_SR_PERR_Msk                        /*!<Parity error                                          */\n#define SPDIFRX_SR_OVR_Pos          (3U)\n#define SPDIFRX_SR_OVR_Msk          (0x1UL << SPDIFRX_SR_OVR_Pos)              /*!< 0x00000008 */\n#define SPDIFRX_SR_OVR              SPDIFRX_SR_OVR_Msk                         /*!<Overrun error                                         */\n#define SPDIFRX_SR_SBD_Pos          (4U)\n#define SPDIFRX_SR_SBD_Msk          (0x1UL << SPDIFRX_SR_SBD_Pos)              /*!< 0x00000010 */\n#define SPDIFRX_SR_SBD              SPDIFRX_SR_SBD_Msk                         /*!<Synchronization Block Detected                        */\n#define SPDIFRX_SR_SYNCD_Pos        (5U)\n#define SPDIFRX_SR_SYNCD_Msk        (0x1UL << SPDIFRX_SR_SYNCD_Pos)            /*!< 0x00000020 */\n#define SPDIFRX_SR_SYNCD            SPDIFRX_SR_SYNCD_Msk                       /*!<Synchronization Done                                  */\n#define SPDIFRX_SR_FERR_Pos         (6U)\n#define SPDIFRX_SR_FERR_Msk         (0x1UL << SPDIFRX_SR_FERR_Pos)             /*!< 0x00000040 */\n#define SPDIFRX_SR_FERR             SPDIFRX_SR_FERR_Msk                        /*!<Framing error                                         */\n#define SPDIFRX_SR_SERR_Pos         (7U)\n#define SPDIFRX_SR_SERR_Msk         (0x1UL << SPDIFRX_SR_SERR_Pos)             /*!< 0x00000080 */\n#define SPDIFRX_SR_SERR             SPDIFRX_SR_SERR_Msk                        /*!<Synchronization error                                 */\n#define SPDIFRX_SR_TERR_Pos         (8U)\n#define SPDIFRX_SR_TERR_Msk         (0x1UL << SPDIFRX_SR_TERR_Pos)             /*!< 0x00000100 */\n#define SPDIFRX_SR_TERR             SPDIFRX_SR_TERR_Msk                        /*!<Time-out error                                        */\n#define SPDIFRX_SR_WIDTH5_Pos       (16U)\n#define SPDIFRX_SR_WIDTH5_Msk       (0x7FFFUL << SPDIFRX_SR_WIDTH5_Pos)        /*!< 0x7FFF0000 */\n#define SPDIFRX_SR_WIDTH5           SPDIFRX_SR_WIDTH5_Msk                      /*!<Duration of 5 symbols counted with spdif_clk          */\n\n/*******************  Bit definition for SPDIFRX_IFCR register  *******************/\n#define SPDIFRX_IFCR_PERRCF_Pos     (2U)\n#define SPDIFRX_IFCR_PERRCF_Msk     (0x1UL << SPDIFRX_IFCR_PERRCF_Pos)         /*!< 0x00000004 */\n#define SPDIFRX_IFCR_PERRCF         SPDIFRX_IFCR_PERRCF_Msk                    /*!<Clears the Parity error flag                         */\n#define SPDIFRX_IFCR_OVRCF_Pos      (3U)\n#define SPDIFRX_IFCR_OVRCF_Msk      (0x1UL << SPDIFRX_IFCR_OVRCF_Pos)          /*!< 0x00000008 */\n#define SPDIFRX_IFCR_OVRCF          SPDIFRX_IFCR_OVRCF_Msk                     /*!<Clears the Overrun error flag                        */\n#define SPDIFRX_IFCR_SBDCF_Pos      (4U)\n#define SPDIFRX_IFCR_SBDCF_Msk      (0x1UL << SPDIFRX_IFCR_SBDCF_Pos)          /*!< 0x00000010 */\n#define SPDIFRX_IFCR_SBDCF          SPDIFRX_IFCR_SBDCF_Msk                     /*!<Clears the Synchronization Block Detected flag       */\n#define SPDIFRX_IFCR_SYNCDCF_Pos    (5U)\n#define SPDIFRX_IFCR_SYNCDCF_Msk    (0x1UL << SPDIFRX_IFCR_SYNCDCF_Pos)        /*!< 0x00000020 */\n#define SPDIFRX_IFCR_SYNCDCF        SPDIFRX_IFCR_SYNCDCF_Msk                   /*!<Clears the Synchronization Done flag                 */\n\n/*******************  Bit definition for SPDIFRX_DR register  (DRFMT = 0b00 case) *******************/\n#define SPDIFRX_DR0_DR_Pos          (0U)\n#define SPDIFRX_DR0_DR_Msk          (0xFFFFFFUL << SPDIFRX_DR0_DR_Pos)         /*!< 0x00FFFFFF */\n#define SPDIFRX_DR0_DR              SPDIFRX_DR0_DR_Msk                         /*!<Data value            */\n#define SPDIFRX_DR0_PE_Pos          (24U)\n#define SPDIFRX_DR0_PE_Msk          (0x1UL << SPDIFRX_DR0_PE_Pos)              /*!< 0x01000000 */\n#define SPDIFRX_DR0_PE              SPDIFRX_DR0_PE_Msk                         /*!<Parity Error bit      */\n#define SPDIFRX_DR0_V_Pos           (25U)\n#define SPDIFRX_DR0_V_Msk           (0x1UL << SPDIFRX_DR0_V_Pos)               /*!< 0x02000000 */\n#define SPDIFRX_DR0_V               SPDIFRX_DR0_V_Msk                          /*!<Validity bit          */\n#define SPDIFRX_DR0_U_Pos           (26U)\n#define SPDIFRX_DR0_U_Msk           (0x1UL << SPDIFRX_DR0_U_Pos)               /*!< 0x04000000 */\n#define SPDIFRX_DR0_U               SPDIFRX_DR0_U_Msk                          /*!<User bit              */\n#define SPDIFRX_DR0_C_Pos           (27U)\n#define SPDIFRX_DR0_C_Msk           (0x1UL << SPDIFRX_DR0_C_Pos)               /*!< 0x08000000 */\n#define SPDIFRX_DR0_C               SPDIFRX_DR0_C_Msk                          /*!<Channel Status bit    */\n#define SPDIFRX_DR0_PT_Pos          (28U)\n#define SPDIFRX_DR0_PT_Msk          (0x3UL << SPDIFRX_DR0_PT_Pos)              /*!< 0x30000000 */\n#define SPDIFRX_DR0_PT              SPDIFRX_DR0_PT_Msk                         /*!<Preamble Type         */\n\n/*******************  Bit definition for SPDIFRX_DR register  (DRFMT = 0b01 case) *******************/\n#define SPDIFRX_DR1_DR_Pos          (8U)\n#define SPDIFRX_DR1_DR_Msk          (0xFFFFFFUL << SPDIFRX_DR1_DR_Pos)         /*!< 0xFFFFFF00 */\n#define SPDIFRX_DR1_DR              SPDIFRX_DR1_DR_Msk                         /*!<Data value            */\n#define SPDIFRX_DR1_PT_Pos          (4U)\n#define SPDIFRX_DR1_PT_Msk          (0x3UL << SPDIFRX_DR1_PT_Pos)              /*!< 0x00000030 */\n#define SPDIFRX_DR1_PT              SPDIFRX_DR1_PT_Msk                         /*!<Preamble Type         */\n#define SPDIFRX_DR1_C_Pos           (3U)\n#define SPDIFRX_DR1_C_Msk           (0x1UL << SPDIFRX_DR1_C_Pos)               /*!< 0x00000008 */\n#define SPDIFRX_DR1_C               SPDIFRX_DR1_C_Msk                          /*!<Channel Status bit    */\n#define SPDIFRX_DR1_U_Pos           (2U)\n#define SPDIFRX_DR1_U_Msk           (0x1UL << SPDIFRX_DR1_U_Pos)               /*!< 0x00000004 */\n#define SPDIFRX_DR1_U               SPDIFRX_DR1_U_Msk                          /*!<User bit              */\n#define SPDIFRX_DR1_V_Pos           (1U)\n#define SPDIFRX_DR1_V_Msk           (0x1UL << SPDIFRX_DR1_V_Pos)               /*!< 0x00000002 */\n#define SPDIFRX_DR1_V               SPDIFRX_DR1_V_Msk                          /*!<Validity bit          */\n#define SPDIFRX_DR1_PE_Pos          (0U)\n#define SPDIFRX_DR1_PE_Msk          (0x1UL << SPDIFRX_DR1_PE_Pos)              /*!< 0x00000001 */\n#define SPDIFRX_DR1_PE              SPDIFRX_DR1_PE_Msk                         /*!<Parity Error bit      */\n\n/*******************  Bit definition for SPDIFRX_DR register  (DRFMT = 0b10 case) *******************/\n#define SPDIFRX_DR1_DRNL1_Pos       (16U)\n#define SPDIFRX_DR1_DRNL1_Msk       (0xFFFFUL << SPDIFRX_DR1_DRNL1_Pos)        /*!< 0xFFFF0000 */\n#define SPDIFRX_DR1_DRNL1           SPDIFRX_DR1_DRNL1_Msk                      /*!<Data value Channel B      */\n#define SPDIFRX_DR1_DRNL2_Pos       (0U)\n#define SPDIFRX_DR1_DRNL2_Msk       (0xFFFFUL << SPDIFRX_DR1_DRNL2_Pos)        /*!< 0x0000FFFF */\n#define SPDIFRX_DR1_DRNL2           SPDIFRX_DR1_DRNL2_Msk                      /*!<Data value Channel A      */\n\n/*******************  Bit definition for SPDIFRX_CSR register   *******************/\n#define SPDIFRX_CSR_USR_Pos         (0U)\n#define SPDIFRX_CSR_USR_Msk         (0xFFFFUL << SPDIFRX_CSR_USR_Pos)          /*!< 0x0000FFFF */\n#define SPDIFRX_CSR_USR             SPDIFRX_CSR_USR_Msk                        /*!<User data information           */\n#define SPDIFRX_CSR_CS_Pos          (16U)\n#define SPDIFRX_CSR_CS_Msk          (0xFFUL << SPDIFRX_CSR_CS_Pos)             /*!< 0x00FF0000 */\n#define SPDIFRX_CSR_CS              SPDIFRX_CSR_CS_Msk                         /*!<Channel A status information    */\n#define SPDIFRX_CSR_SOB_Pos         (24U)\n#define SPDIFRX_CSR_SOB_Msk         (0x1UL << SPDIFRX_CSR_SOB_Pos)             /*!< 0x01000000 */\n#define SPDIFRX_CSR_SOB             SPDIFRX_CSR_SOB_Msk                        /*!<Start Of Block                  */\n\n/*******************  Bit definition for SPDIFRX_DIR register    *******************/\n#define SPDIFRX_DIR_THI_Pos         (0U)\n#define SPDIFRX_DIR_THI_Msk         (0x1FFFUL << SPDIFRX_DIR_THI_Pos)          /*!< 0x00001FFF */\n#define SPDIFRX_DIR_THI             SPDIFRX_DIR_THI_Msk                        /*!<Threshold LOW      */\n#define SPDIFRX_DIR_TLO_Pos         (16U)\n#define SPDIFRX_DIR_TLO_Msk         (0x1FFFUL << SPDIFRX_DIR_TLO_Pos)          /*!< 0x1FFF0000 */\n#define SPDIFRX_DIR_TLO             SPDIFRX_DIR_TLO_Msk                        /*!<Threshold HIGH     */\n\n/*******************  Bit definition for SPDIFRX_VERR register    *******************/\n#define SPDIFRX_VERR_MINREV_Pos     (0U)\n#define SPDIFRX_VERR_MINREV_Msk     (0xFUL << SPDIFRX_VERR_MINREV_Pos)         /*!< 0x0000000F */\n#define SPDIFRX_VERR_MINREV         SPDIFRX_VERR_MINREV_Msk                    /*!<SPDIFRX Minor revision     */\n#define SPDIFRX_VERR_MAJREV_Pos     (4U)\n#define SPDIFRX_VERR_MAJREV_Msk     (0xFUL << SPDIFRX_VERR_MAJREV_Pos)         /*!< 0x000000F0 */\n#define SPDIFRX_VERR_MAJREV         SPDIFRX_VERR_MAJREV_Msk                    /*!<SPDIFRX Major revision     */\n\n/*******************  Bit definition for SPDIFRX_IDR register    *******************/\n#define SPDIFRX_IDR_ID_Pos          (0U)\n#define SPDIFRX_IDR_ID_Msk          (0xFFFFFFFFUL << SPDIFRX_IDR_ID_Pos)       /*!< 0xFFFFFFFF */\n#define SPDIFRX_IDR_ID              SPDIFRX_IDR_ID_Msk                         /*!<SPDIFRX identifier     */\n\n/*******************  Bit definition for SPDIFRX_SIDR register    *******************/\n#define SPDIFRX_SIDR_SID_Pos        (0U)\n#define SPDIFRX_SIDR_SID_Msk        (0xFFFFFFFFUL << SPDIFRX_SIDR_SID_Pos)     /*!< 0xFFFFFFFF */\n#define SPDIFRX_SIDR_SID            SPDIFRX_SIDR_SID_Msk                       /*!<Size of the memory region allocated to SPDIFRX registers */\n\n/******************************************************************************/\n/*                                                                            */\n/*                          Serial Audio Interface                            */\n/*                                                                            */\n/******************************************************************************/\n/*******************************  SAI VERSION  ********************************/\n#define SAI_VER_V2_X\n\n/********************  Bit definition for SAI_GCR register  *******************/\n#define SAI_GCR_SYNCIN_Pos         (0U)\n#define SAI_GCR_SYNCIN_Msk         (0x3UL << SAI_GCR_SYNCIN_Pos)               /*!< 0x00000003 */\n#define SAI_GCR_SYNCIN             SAI_GCR_SYNCIN_Msk                          /*!<SYNCIN[1:0] bits (Synchronization Inputs)   */\n#define SAI_GCR_SYNCIN_0           (0x1UL << SAI_GCR_SYNCIN_Pos)                /*!< 0x00000001 */\n#define SAI_GCR_SYNCIN_1           (0x2UL << SAI_GCR_SYNCIN_Pos)                /*!< 0x00000002 */\n\n#define SAI_GCR_SYNCOUT_Pos        (4U)\n#define SAI_GCR_SYNCOUT_Msk        (0x3UL << SAI_GCR_SYNCOUT_Pos)              /*!< 0x00000030 */\n#define SAI_GCR_SYNCOUT            SAI_GCR_SYNCOUT_Msk                         /*!<SYNCOUT[1:0] bits (Synchronization Outputs) */\n#define SAI_GCR_SYNCOUT_0          (0x1UL << SAI_GCR_SYNCOUT_Pos)               /*!< 0x00000010 */\n#define SAI_GCR_SYNCOUT_1          (0x2UL << SAI_GCR_SYNCOUT_Pos)               /*!< 0x00000020 */\n\n/*******************  Bit definition for SAI_xCR1 register  *******************/\n#define SAI_xCR1_MODE_Pos          (0U)\n#define SAI_xCR1_MODE_Msk          (0x3UL << SAI_xCR1_MODE_Pos)                /*!< 0x00000003 */\n#define SAI_xCR1_MODE              SAI_xCR1_MODE_Msk                           /*!<MODE[1:0] bits (Audio Block Mode)           */\n#define SAI_xCR1_MODE_0            (0x1UL << SAI_xCR1_MODE_Pos)                 /*!< 0x00000001 */\n#define SAI_xCR1_MODE_1            (0x2UL << SAI_xCR1_MODE_Pos)                 /*!< 0x00000002 */\n\n#define SAI_xCR1_PRTCFG_Pos        (2U)\n#define SAI_xCR1_PRTCFG_Msk        (0x3UL << SAI_xCR1_PRTCFG_Pos)              /*!< 0x0000000C */\n#define SAI_xCR1_PRTCFG            SAI_xCR1_PRTCFG_Msk                         /*!<PRTCFG[1:0] bits (Protocol Configuration)   */\n#define SAI_xCR1_PRTCFG_0          (0x1UL << SAI_xCR1_PRTCFG_Pos)               /*!< 0x00000004 */\n#define SAI_xCR1_PRTCFG_1          (0x2UL << SAI_xCR1_PRTCFG_Pos)               /*!< 0x00000008 */\n\n#define SAI_xCR1_DS_Pos            (5U)\n#define SAI_xCR1_DS_Msk            (0x7UL << SAI_xCR1_DS_Pos)                  /*!< 0x000000E0 */\n#define SAI_xCR1_DS                SAI_xCR1_DS_Msk                             /*!<DS[1:0] bits (Data Size) */\n#define SAI_xCR1_DS_0              (0x1UL << SAI_xCR1_DS_Pos)                   /*!< 0x00000020 */\n#define SAI_xCR1_DS_1              (0x2UL << SAI_xCR1_DS_Pos)                   /*!< 0x00000040 */\n#define SAI_xCR1_DS_2              (0x4UL << SAI_xCR1_DS_Pos)                   /*!< 0x00000080 */\n\n#define SAI_xCR1_LSBFIRST_Pos      (8U)\n#define SAI_xCR1_LSBFIRST_Msk      (0x1UL << SAI_xCR1_LSBFIRST_Pos)            /*!< 0x00000100 */\n#define SAI_xCR1_LSBFIRST          SAI_xCR1_LSBFIRST_Msk                       /*!<LSB First Configuration  */\n#define SAI_xCR1_CKSTR_Pos         (9U)\n#define SAI_xCR1_CKSTR_Msk         (0x1UL << SAI_xCR1_CKSTR_Pos)               /*!< 0x00000200 */\n#define SAI_xCR1_CKSTR             SAI_xCR1_CKSTR_Msk                          /*!<ClocK STRobing edge      */\n\n#define SAI_xCR1_SYNCEN_Pos        (10U)\n#define SAI_xCR1_SYNCEN_Msk        (0x3UL << SAI_xCR1_SYNCEN_Pos)              /*!< 0x00000C00 */\n#define SAI_xCR1_SYNCEN            SAI_xCR1_SYNCEN_Msk                         /*!<SYNCEN[1:0](SYNChronization ENable) */\n#define SAI_xCR1_SYNCEN_0          (0x1UL << SAI_xCR1_SYNCEN_Pos)               /*!< 0x00000400 */\n#define SAI_xCR1_SYNCEN_1          (0x2UL << SAI_xCR1_SYNCEN_Pos)               /*!< 0x00000800 */\n\n#define SAI_xCR1_MONO_Pos          (12U)\n#define SAI_xCR1_MONO_Msk          (0x1UL << SAI_xCR1_MONO_Pos)                /*!< 0x00001000 */\n#define SAI_xCR1_MONO              SAI_xCR1_MONO_Msk                           /*!<Mono mode                  */\n#define SAI_xCR1_OUTDRIV_Pos       (13U)\n#define SAI_xCR1_OUTDRIV_Msk       (0x1UL << SAI_xCR1_OUTDRIV_Pos)             /*!< 0x00002000 */\n#define SAI_xCR1_OUTDRIV           SAI_xCR1_OUTDRIV_Msk                        /*!<Output Drive               */\n#define SAI_xCR1_SAIEN_Pos         (16U)\n#define SAI_xCR1_SAIEN_Msk         (0x1UL << SAI_xCR1_SAIEN_Pos)               /*!< 0x00010000 */\n#define SAI_xCR1_SAIEN             SAI_xCR1_SAIEN_Msk                          /*!<Audio Block enable         */\n#define SAI_xCR1_DMAEN_Pos         (17U)\n#define SAI_xCR1_DMAEN_Msk         (0x1UL << SAI_xCR1_DMAEN_Pos)               /*!< 0x00020000 */\n#define SAI_xCR1_DMAEN             SAI_xCR1_DMAEN_Msk                          /*!<DMA enable                 */\n#define SAI_xCR1_NODIV_Pos         (19U)\n#define SAI_xCR1_NODIV_Msk         (0x1UL << SAI_xCR1_NODIV_Pos)               /*!< 0x00080000 */\n#define SAI_xCR1_NODIV             SAI_xCR1_NODIV_Msk                          /*!<No Divider Configuration   */\n\n#define SAI_xCR1_MCKDIV_Pos        (20U)\n#define SAI_xCR1_MCKDIV_Msk        (0x3FUL << SAI_xCR1_MCKDIV_Pos)             /*!< 0x03F00000 */\n#define SAI_xCR1_MCKDIV            SAI_xCR1_MCKDIV_Msk                         /*!<MCKDIV[5:0] (Master ClocK Divider)  */\n#define SAI_xCR1_MCKDIV_0          (0x01UL << SAI_xCR1_MCKDIV_Pos)              /*!< 0x00100000 */\n#define SAI_xCR1_MCKDIV_1          (0x02UL << SAI_xCR1_MCKDIV_Pos)              /*!< 0x00200000 */\n#define SAI_xCR1_MCKDIV_2          (0x04UL << SAI_xCR1_MCKDIV_Pos)              /*!< 0x00400000 */\n#define SAI_xCR1_MCKDIV_3          (0x08UL << SAI_xCR1_MCKDIV_Pos)              /*!< 0x00800000 */\n#define SAI_xCR1_MCKDIV_4          (0x10UL << SAI_xCR1_MCKDIV_Pos)              /*!< 0x01000000 */\n#define SAI_xCR1_MCKDIV_5          (0x20UL << SAI_xCR1_MCKDIV_Pos)              /*!< 0x02000000 */\n\n#define SAI_xCR1_MCKEN_Pos         (27U)\n#define SAI_xCR1_MCKEN_Msk         (0x1UL << SAI_xCR1_MCKEN_Pos)               /*!< 0x08000000 */\n#define SAI_xCR1_MCKEN             SAI_xCR1_MCKEN_Msk                          /*!<Master ClocK enable */\n\n#define SAI_xCR1_OSR_Pos           (26U)\n#define SAI_xCR1_OSR_Msk           (0x1UL << SAI_xCR1_OSR_Pos)                 /*!< 0x04000000 */\n#define SAI_xCR1_OSR               SAI_xCR1_OSR_Msk                            /*!<OverSampling Ratio for master clock  */\n\n/* Legacy define */\n#define  SAI_xCR1_NOMCK               SAI_xCR1_NODIV\n\n/*******************  Bit definition for SAI_xCR2 register  *******************/\n#define SAI_xCR2_FTH_Pos           (0U)\n#define SAI_xCR2_FTH_Msk           (0x7UL << SAI_xCR2_FTH_Pos)                 /*!< 0x00000007 */\n#define SAI_xCR2_FTH               SAI_xCR2_FTH_Msk                            /*!<FTH[2:0](Fifo THreshold)  */\n#define SAI_xCR2_FTH_0             (0x1UL << SAI_xCR2_FTH_Pos)                  /*!< 0x00000001 */\n#define SAI_xCR2_FTH_1             (0x2UL << SAI_xCR2_FTH_Pos)                  /*!< 0x00000002 */\n#define SAI_xCR2_FTH_2             (0x4UL << SAI_xCR2_FTH_Pos)                  /*!< 0x00000004 */\n\n#define SAI_xCR2_FFLUSH_Pos        (3U)\n#define SAI_xCR2_FFLUSH_Msk        (0x1UL << SAI_xCR2_FFLUSH_Pos)              /*!< 0x00000008 */\n#define SAI_xCR2_FFLUSH            SAI_xCR2_FFLUSH_Msk                         /*!<Fifo FLUSH                       */\n#define SAI_xCR2_TRIS_Pos          (4U)\n#define SAI_xCR2_TRIS_Msk          (0x1UL << SAI_xCR2_TRIS_Pos)                /*!< 0x00000010 */\n#define SAI_xCR2_TRIS              SAI_xCR2_TRIS_Msk                           /*!<TRIState Management on data line */\n#define SAI_xCR2_MUTE_Pos          (5U)\n#define SAI_xCR2_MUTE_Msk          (0x1UL << SAI_xCR2_MUTE_Pos)                /*!< 0x00000020 */\n#define SAI_xCR2_MUTE              SAI_xCR2_MUTE_Msk                           /*!<Mute mode                        */\n#define SAI_xCR2_MUTEVAL_Pos       (6U)\n#define SAI_xCR2_MUTEVAL_Msk       (0x1UL << SAI_xCR2_MUTEVAL_Pos)             /*!< 0x00000040 */\n#define SAI_xCR2_MUTEVAL           SAI_xCR2_MUTEVAL_Msk                        /*!<Muate value                      */\n\n#define SAI_xCR2_MUTECNT_Pos       (7U)\n#define SAI_xCR2_MUTECNT_Msk       (0x3FUL << SAI_xCR2_MUTECNT_Pos)            /*!< 0x00001F80 */\n#define SAI_xCR2_MUTECNT           SAI_xCR2_MUTECNT_Msk                        /*!<MUTECNT[5:0] (MUTE counter) */\n#define SAI_xCR2_MUTECNT_0         (0x01UL << SAI_xCR2_MUTECNT_Pos)             /*!< 0x00000080 */\n#define SAI_xCR2_MUTECNT_1         (0x02UL << SAI_xCR2_MUTECNT_Pos)             /*!< 0x00000100 */\n#define SAI_xCR2_MUTECNT_2         (0x04UL << SAI_xCR2_MUTECNT_Pos)             /*!< 0x00000200 */\n#define SAI_xCR2_MUTECNT_3         (0x08UL << SAI_xCR2_MUTECNT_Pos)             /*!< 0x00000400 */\n#define SAI_xCR2_MUTECNT_4         (0x10UL << SAI_xCR2_MUTECNT_Pos)             /*!< 0x00000800 */\n#define SAI_xCR2_MUTECNT_5         (0x20UL << SAI_xCR2_MUTECNT_Pos)             /*!< 0x00001000 */\n\n#define SAI_xCR2_CPL_Pos           (13U)\n#define SAI_xCR2_CPL_Msk           (0x1UL << SAI_xCR2_CPL_Pos)                 /*!< 0x00002000 */\n#define SAI_xCR2_CPL               SAI_xCR2_CPL_Msk                            /*!< Complement Bit             */\n\n#define SAI_xCR2_COMP_Pos          (14U)\n#define SAI_xCR2_COMP_Msk          (0x3UL << SAI_xCR2_COMP_Pos)                /*!< 0x0000C000 */\n#define SAI_xCR2_COMP              SAI_xCR2_COMP_Msk                           /*!<COMP[1:0] (Companding mode) */\n#define SAI_xCR2_COMP_0            (0x1UL << SAI_xCR2_COMP_Pos)                 /*!< 0x00004000 */\n#define SAI_xCR2_COMP_1            (0x2UL << SAI_xCR2_COMP_Pos)                 /*!< 0x00008000 */\n\n/******************  Bit definition for SAI_xFRCR register  *******************/\n#define SAI_xFRCR_FRL_Pos          (0U)\n#define SAI_xFRCR_FRL_Msk          (0xFFUL << SAI_xFRCR_FRL_Pos)               /*!< 0x000000FF */\n#define SAI_xFRCR_FRL              SAI_xFRCR_FRL_Msk                           /*!<FRL[7:0](FRame Length)  */\n#define SAI_xFRCR_FRL_0            (0x01UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000001 */\n#define SAI_xFRCR_FRL_1            (0x02UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000002 */\n#define SAI_xFRCR_FRL_2            (0x04UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000004 */\n#define SAI_xFRCR_FRL_3            (0x08UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000008 */\n#define SAI_xFRCR_FRL_4            (0x10UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000010 */\n#define SAI_xFRCR_FRL_5            (0x20UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000020 */\n#define SAI_xFRCR_FRL_6            (0x40UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000040 */\n#define SAI_xFRCR_FRL_7            (0x80UL << SAI_xFRCR_FRL_Pos)                /*!< 0x00000080 */\n\n#define SAI_xFRCR_FSALL_Pos        (8U)\n#define SAI_xFRCR_FSALL_Msk        (0x7FUL << SAI_xFRCR_FSALL_Pos)             /*!< 0x00007F00 */\n#define SAI_xFRCR_FSALL            SAI_xFRCR_FSALL_Msk                         /*!<FSALL[6:0] (Frame Synchronization Active Level Length)  */\n#define SAI_xFRCR_FSALL_0          (0x01UL << SAI_xFRCR_FSALL_Pos)              /*!< 0x00000100 */\n#define SAI_xFRCR_FSALL_1          (0x02UL << SAI_xFRCR_FSALL_Pos)              /*!< 0x00000200 */\n#define SAI_xFRCR_FSALL_2          (0x04UL << SAI_xFRCR_FSALL_Pos)              /*!< 0x00000400 */\n#define SAI_xFRCR_FSALL_3          (0x08UL << SAI_xFRCR_FSALL_Pos)              /*!< 0x00000800 */\n#define SAI_xFRCR_FSALL_4          (0x10UL << SAI_xFRCR_FSALL_Pos)              /*!< 0x00001000 */\n#define SAI_xFRCR_FSALL_5          (0x20UL << SAI_xFRCR_FSALL_Pos)              /*!< 0x00002000 */\n#define SAI_xFRCR_FSALL_6          (0x40UL << SAI_xFRCR_FSALL_Pos)              /*!< 0x00004000 */\n\n#define SAI_xFRCR_FSDEF_Pos        (16U)\n#define SAI_xFRCR_FSDEF_Msk        (0x1UL << SAI_xFRCR_FSDEF_Pos)              /*!< 0x00010000 */\n#define SAI_xFRCR_FSDEF            SAI_xFRCR_FSDEF_Msk                         /*!<Frame Synchronization Definition  */\n#define SAI_xFRCR_FSPOL_Pos        (17U)\n#define SAI_xFRCR_FSPOL_Msk        (0x1UL << SAI_xFRCR_FSPOL_Pos)              /*!< 0x00020000 */\n#define SAI_xFRCR_FSPOL            SAI_xFRCR_FSPOL_Msk                         /*!<Frame Synchronization POLarity    */\n#define SAI_xFRCR_FSOFF_Pos        (18U)\n#define SAI_xFRCR_FSOFF_Msk        (0x1UL << SAI_xFRCR_FSOFF_Pos)              /*!< 0x00040000 */\n#define SAI_xFRCR_FSOFF            SAI_xFRCR_FSOFF_Msk                         /*!<Frame Synchronization OFFset      */\n\n/* Legacy define */\n#define  SAI_xFRCR_FSPO                      SAI_xFRCR_FSPOL\n\n/******************  Bit definition for SAI_xSLOTR register  *******************/\n#define SAI_xSLOTR_FBOFF_Pos       (0U)\n#define SAI_xSLOTR_FBOFF_Msk       (0x1FUL << SAI_xSLOTR_FBOFF_Pos)            /*!< 0x0000001F */\n#define SAI_xSLOTR_FBOFF           SAI_xSLOTR_FBOFF_Msk                        /*!<FBOFF[4:0](First Bit Offset)  */\n#define SAI_xSLOTR_FBOFF_0         (0x01UL << SAI_xSLOTR_FBOFF_Pos)             /*!< 0x00000001 */\n#define SAI_xSLOTR_FBOFF_1         (0x02UL << SAI_xSLOTR_FBOFF_Pos)             /*!< 0x00000002 */\n#define SAI_xSLOTR_FBOFF_2         (0x04UL << SAI_xSLOTR_FBOFF_Pos)             /*!< 0x00000004 */\n#define SAI_xSLOTR_FBOFF_3         (0x08UL << SAI_xSLOTR_FBOFF_Pos)             /*!< 0x00000008 */\n#define SAI_xSLOTR_FBOFF_4         (0x10UL << SAI_xSLOTR_FBOFF_Pos)             /*!< 0x00000010 */\n\n#define SAI_xSLOTR_SLOTSZ_Pos      (6U)\n#define SAI_xSLOTR_SLOTSZ_Msk      (0x3UL << SAI_xSLOTR_SLOTSZ_Pos)            /*!< 0x000000C0 */\n#define SAI_xSLOTR_SLOTSZ          SAI_xSLOTR_SLOTSZ_Msk                       /*!<SLOTSZ[1:0] (Slot size)  */\n#define SAI_xSLOTR_SLOTSZ_0        (0x1UL << SAI_xSLOTR_SLOTSZ_Pos)             /*!< 0x00000040 */\n#define SAI_xSLOTR_SLOTSZ_1        (0x2UL << SAI_xSLOTR_SLOTSZ_Pos)             /*!< 0x00000080 */\n\n#define SAI_xSLOTR_NBSLOT_Pos      (8U)\n#define SAI_xSLOTR_NBSLOT_Msk      (0xFUL << SAI_xSLOTR_NBSLOT_Pos)            /*!< 0x00000F00 */\n#define SAI_xSLOTR_NBSLOT          SAI_xSLOTR_NBSLOT_Msk                       /*!<NBSLOT[3:0] (Number of Slot in audio Frame)  */\n#define SAI_xSLOTR_NBSLOT_0        (0x1UL << SAI_xSLOTR_NBSLOT_Pos)             /*!< 0x00000100 */\n#define SAI_xSLOTR_NBSLOT_1        (0x2UL << SAI_xSLOTR_NBSLOT_Pos)             /*!< 0x00000200 */\n#define SAI_xSLOTR_NBSLOT_2        (0x4UL << SAI_xSLOTR_NBSLOT_Pos)             /*!< 0x00000400 */\n#define SAI_xSLOTR_NBSLOT_3        (0x8UL << SAI_xSLOTR_NBSLOT_Pos)             /*!< 0x00000800 */\n\n#define SAI_xSLOTR_SLOTEN_Pos      (16U)\n#define SAI_xSLOTR_SLOTEN_Msk      (0xFFFFUL << SAI_xSLOTR_SLOTEN_Pos)         /*!< 0xFFFF0000 */\n#define SAI_xSLOTR_SLOTEN          SAI_xSLOTR_SLOTEN_Msk                       /*!<SLOTEN[15:0] (Slot Enable)  */\n\n/*******************  Bit definition for SAI_xIMR register  *******************/\n#define SAI_xIMR_OVRUDRIE_Pos      (0U)\n#define SAI_xIMR_OVRUDRIE_Msk      (0x1UL << SAI_xIMR_OVRUDRIE_Pos)            /*!< 0x00000001 */\n#define SAI_xIMR_OVRUDRIE          SAI_xIMR_OVRUDRIE_Msk                       /*!<Overrun underrun interrupt enable                              */\n#define SAI_xIMR_MUTEDETIE_Pos     (1U)\n#define SAI_xIMR_MUTEDETIE_Msk     (0x1UL << SAI_xIMR_MUTEDETIE_Pos)           /*!< 0x00000002 */\n#define SAI_xIMR_MUTEDETIE         SAI_xIMR_MUTEDETIE_Msk                      /*!<Mute detection interrupt enable                                */\n#define SAI_xIMR_WCKCFGIE_Pos      (2U)\n#define SAI_xIMR_WCKCFGIE_Msk      (0x1UL << SAI_xIMR_WCKCFGIE_Pos)            /*!< 0x00000004 */\n#define SAI_xIMR_WCKCFGIE          SAI_xIMR_WCKCFGIE_Msk                       /*!<Wrong Clock Configuration interrupt enable                     */\n#define SAI_xIMR_FREQIE_Pos        (3U)\n#define SAI_xIMR_FREQIE_Msk        (0x1UL << SAI_xIMR_FREQIE_Pos)              /*!< 0x00000008 */\n#define SAI_xIMR_FREQIE            SAI_xIMR_FREQIE_Msk                         /*!<FIFO request interrupt enable                                  */\n#define SAI_xIMR_CNRDYIE_Pos       (4U)\n#define SAI_xIMR_CNRDYIE_Msk       (0x1UL << SAI_xIMR_CNRDYIE_Pos)             /*!< 0x00000010 */\n#define SAI_xIMR_CNRDYIE           SAI_xIMR_CNRDYIE_Msk                        /*!<Codec not ready interrupt enable                               */\n#define SAI_xIMR_AFSDETIE_Pos      (5U)\n#define SAI_xIMR_AFSDETIE_Msk      (0x1UL << SAI_xIMR_AFSDETIE_Pos)            /*!< 0x00000020 */\n#define SAI_xIMR_AFSDETIE          SAI_xIMR_AFSDETIE_Msk                       /*!<Anticipated frame synchronization detection interrupt enable   */\n#define SAI_xIMR_LFSDETIE_Pos      (6U)\n#define SAI_xIMR_LFSDETIE_Msk      (0x1UL << SAI_xIMR_LFSDETIE_Pos)            /*!< 0x00000040 */\n#define SAI_xIMR_LFSDETIE          SAI_xIMR_LFSDETIE_Msk                       /*!<Late frame synchronization detection interrupt enable          */\n\n/********************  Bit definition for SAI_xSR register  *******************/\n#define SAI_xSR_OVRUDR_Pos         (0U)\n#define SAI_xSR_OVRUDR_Msk         (0x1UL << SAI_xSR_OVRUDR_Pos)               /*!< 0x00000001 */\n#define SAI_xSR_OVRUDR             SAI_xSR_OVRUDR_Msk                          /*!<Overrun underrun                               */\n#define SAI_xSR_MUTEDET_Pos        (1U)\n#define SAI_xSR_MUTEDET_Msk        (0x1UL << SAI_xSR_MUTEDET_Pos)              /*!< 0x00000002 */\n#define SAI_xSR_MUTEDET            SAI_xSR_MUTEDET_Msk                         /*!<Mute detection                                 */\n#define SAI_xSR_WCKCFG_Pos         (2U)\n#define SAI_xSR_WCKCFG_Msk         (0x1UL << SAI_xSR_WCKCFG_Pos)               /*!< 0x00000004 */\n#define SAI_xSR_WCKCFG             SAI_xSR_WCKCFG_Msk                          /*!<Wrong Clock Configuration                      */\n#define SAI_xSR_FREQ_Pos           (3U)\n#define SAI_xSR_FREQ_Msk           (0x1UL << SAI_xSR_FREQ_Pos)                 /*!< 0x00000008 */\n#define SAI_xSR_FREQ               SAI_xSR_FREQ_Msk                            /*!<FIFO request                                   */\n#define SAI_xSR_CNRDY_Pos          (4U)\n#define SAI_xSR_CNRDY_Msk          (0x1UL << SAI_xSR_CNRDY_Pos)                /*!< 0x00000010 */\n#define SAI_xSR_CNRDY              SAI_xSR_CNRDY_Msk                           /*!<Codec not ready                                */\n#define SAI_xSR_AFSDET_Pos         (5U)\n#define SAI_xSR_AFSDET_Msk         (0x1UL << SAI_xSR_AFSDET_Pos)               /*!< 0x00000020 */\n#define SAI_xSR_AFSDET             SAI_xSR_AFSDET_Msk                          /*!<Anticipated frame synchronization detection    */\n#define SAI_xSR_LFSDET_Pos         (6U)\n#define SAI_xSR_LFSDET_Msk         (0x1UL << SAI_xSR_LFSDET_Pos)               /*!< 0x00000040 */\n#define SAI_xSR_LFSDET             SAI_xSR_LFSDET_Msk                          /*!<Late frame synchronization detection           */\n\n#define SAI_xSR_FLVL_Pos           (16U)\n#define SAI_xSR_FLVL_Msk           (0x7UL << SAI_xSR_FLVL_Pos)                 /*!< 0x00070000 */\n#define SAI_xSR_FLVL               SAI_xSR_FLVL_Msk                            /*!<FLVL[2:0] (FIFO Level Threshold)               */\n#define SAI_xSR_FLVL_0             (0x1UL << SAI_xSR_FLVL_Pos)                  /*!< 0x00010000 */\n#define SAI_xSR_FLVL_1             (0x2UL << SAI_xSR_FLVL_Pos)                  /*!< 0x00020000 */\n#define SAI_xSR_FLVL_2             (0x4UL << SAI_xSR_FLVL_Pos)                  /*!< 0x00040000 */\n\n/******************  Bit definition for SAI_xCLRFR register  ******************/\n#define SAI_xCLRFR_COVRUDR_Pos     (0U)\n#define SAI_xCLRFR_COVRUDR_Msk     (0x1UL << SAI_xCLRFR_COVRUDR_Pos)           /*!< 0x00000001 */\n#define SAI_xCLRFR_COVRUDR         SAI_xCLRFR_COVRUDR_Msk                      /*!<Clear Overrun underrun                               */\n#define SAI_xCLRFR_CMUTEDET_Pos    (1U)\n#define SAI_xCLRFR_CMUTEDET_Msk    (0x1UL << SAI_xCLRFR_CMUTEDET_Pos)          /*!< 0x00000002 */\n#define SAI_xCLRFR_CMUTEDET        SAI_xCLRFR_CMUTEDET_Msk                     /*!<Clear Mute detection                                 */\n#define SAI_xCLRFR_CWCKCFG_Pos     (2U)\n#define SAI_xCLRFR_CWCKCFG_Msk     (0x1UL << SAI_xCLRFR_CWCKCFG_Pos)           /*!< 0x00000004 */\n#define SAI_xCLRFR_CWCKCFG         SAI_xCLRFR_CWCKCFG_Msk                      /*!<Clear Wrong Clock Configuration                      */\n#define SAI_xCLRFR_CFREQ_Pos       (3U)\n#define SAI_xCLRFR_CFREQ_Msk       (0x1UL << SAI_xCLRFR_CFREQ_Pos)             /*!< 0x00000008 */\n#define SAI_xCLRFR_CFREQ           SAI_xCLRFR_CFREQ_Msk                        /*!<Clear FIFO request                                   */\n#define SAI_xCLRFR_CCNRDY_Pos      (4U)\n#define SAI_xCLRFR_CCNRDY_Msk      (0x1UL << SAI_xCLRFR_CCNRDY_Pos)            /*!< 0x00000010 */\n#define SAI_xCLRFR_CCNRDY          SAI_xCLRFR_CCNRDY_Msk                       /*!<Clear Codec not ready                                */\n#define SAI_xCLRFR_CAFSDET_Pos     (5U)\n#define SAI_xCLRFR_CAFSDET_Msk     (0x1UL << SAI_xCLRFR_CAFSDET_Pos)           /*!< 0x00000020 */\n#define SAI_xCLRFR_CAFSDET         SAI_xCLRFR_CAFSDET_Msk                      /*!<Clear Anticipated frame synchronization detection    */\n#define SAI_xCLRFR_CLFSDET_Pos     (6U)\n#define SAI_xCLRFR_CLFSDET_Msk     (0x1UL << SAI_xCLRFR_CLFSDET_Pos)           /*!< 0x00000040 */\n#define SAI_xCLRFR_CLFSDET         SAI_xCLRFR_CLFSDET_Msk                      /*!<Clear Late frame synchronization detection           */\n\n/******************  Bit definition for SAI_xDR register  *********************/\n#define SAI_xDR_DATA_Pos           (0U)\n#define SAI_xDR_DATA_Msk           (0xFFFFFFFFUL << SAI_xDR_DATA_Pos)          /*!< 0xFFFFFFFF */\n#define SAI_xDR_DATA               SAI_xDR_DATA_Msk\n\n/*******************  Bit definition for SAI_PDMCR register  ******************/\n#define SAI_PDMCR_PDMEN_Pos        (0U)\n#define SAI_PDMCR_PDMEN_Msk        (0x1UL << SAI_PDMCR_PDMEN_Pos)              /*!< 0x00000001 */\n#define SAI_PDMCR_PDMEN            SAI_PDMCR_PDMEN_Msk                         /*!<PDM Enable                                          */\n\n#define SAI_PDMCR_MICNBR_Pos       (4U)\n#define SAI_PDMCR_MICNBR_Msk       (0x3UL << SAI_PDMCR_MICNBR_Pos)             /*!< 0x00000030 */\n#define SAI_PDMCR_MICNBR           SAI_PDMCR_MICNBR_Msk                        /*!<Number of microphones                               */\n#define SAI_PDMCR_MICNBR_0         (0x1UL << SAI_PDMCR_MICNBR_Pos)              /*!< 0x00000010 */\n#define SAI_PDMCR_MICNBR_1         (0x2UL << SAI_PDMCR_MICNBR_Pos)              /*!< 0x00000020 */\n\n#define SAI_PDMCR_CKEN1_Pos        (8U)\n#define SAI_PDMCR_CKEN1_Msk        (0x1UL << SAI_PDMCR_CKEN1_Pos)              /*!< 0x00000100 */\n#define SAI_PDMCR_CKEN1            SAI_PDMCR_CKEN1_Msk                         /*!<Clock enable of bitstream clock number 1            */\n#define SAI_PDMCR_CKEN2_Pos        (9U)\n#define SAI_PDMCR_CKEN2_Msk        (0x1UL << SAI_PDMCR_CKEN2_Pos)              /*!< 0x00000200 */\n#define SAI_PDMCR_CKEN2            SAI_PDMCR_CKEN2_Msk                         /*!<Clock enable of bitstream clock number 2            */\n#define SAI_PDMCR_CKEN3_Pos        (10U)\n#define SAI_PDMCR_CKEN3_Msk        (0x1UL << SAI_PDMCR_CKEN3_Pos)              /*!< 0x00000400 */\n#define SAI_PDMCR_CKEN3            SAI_PDMCR_CKEN3_Msk                         /*!<Clock enable of bitstream clock number 3            */\n#define SAI_PDMCR_CKEN4_Pos        (11U)\n#define SAI_PDMCR_CKEN4_Msk        (0x1UL << SAI_PDMCR_CKEN4_Pos)              /*!< 0x00000800 */\n#define SAI_PDMCR_CKEN4            SAI_PDMCR_CKEN4_Msk                         /*!<Clock enable of bitstream clock number 4            */\n\n/******************  Bit definition for SAI_PDMDLY register  ******************/\n#define SAI_PDMDLY_DLYM1L_Pos      (0U)\n#define SAI_PDMDLY_DLYM1L_Msk      (0x7UL << SAI_PDMDLY_DLYM1L_Pos)            /*!< 0x00000007 */\n#define SAI_PDMDLY_DLYM1L          SAI_PDMDLY_DLYM1L_Msk                       /*!<DLYM1L[2:0] (Delay line adjust for left microphone of pair 1) */\n#define SAI_PDMDLY_DLYM1L_0        (0x1UL << SAI_PDMDLY_DLYM1L_Pos)             /*!< 0x00000001 */\n#define SAI_PDMDLY_DLYM1L_1        (0x2UL << SAI_PDMDLY_DLYM1L_Pos)             /*!< 0x00000002 */\n#define SAI_PDMDLY_DLYM1L_2        (0x4UL << SAI_PDMDLY_DLYM1L_Pos)             /*!< 0x00000004 */\n\n#define SAI_PDMDLY_DLYM1R_Pos      (4U)\n#define SAI_PDMDLY_DLYM1R_Msk      (0x7UL << SAI_PDMDLY_DLYM1R_Pos)            /*!< 0x00000070 */\n#define SAI_PDMDLY_DLYM1R          SAI_PDMDLY_DLYM1R_Msk                       /*!<DLYM1R[2:0] (Delay line adjust for right microphone of pair 1) */\n#define SAI_PDMDLY_DLYM1R_0        (0x1UL << SAI_PDMDLY_DLYM1R_Pos)             /*!< 0x00000010 */\n#define SAI_PDMDLY_DLYM1R_1        (0x2UL << SAI_PDMDLY_DLYM1R_Pos)             /*!< 0x00000020 */\n#define SAI_PDMDLY_DLYM1R_2        (0x4UL << SAI_PDMDLY_DLYM1R_Pos)             /*!< 0x00000040 */\n\n#define SAI_PDMDLY_DLYM2L_Pos      (8U)\n#define SAI_PDMDLY_DLYM2L_Msk      (0x7UL << SAI_PDMDLY_DLYM2L_Pos)            /*!< 0x00000700 */\n#define SAI_PDMDLY_DLYM2L          SAI_PDMDLY_DLYM2L_Msk                       /*!<DLYM2L[2:0] (Delay line adjust for left microphone of pair 2) */\n#define SAI_PDMDLY_DLYM2L_0        (0x1UL << SAI_PDMDLY_DLYM2L_Pos)             /*!< 0x00000100 */\n#define SAI_PDMDLY_DLYM2L_1        (0x2UL << SAI_PDMDLY_DLYM2L_Pos)             /*!< 0x00000200 */\n#define SAI_PDMDLY_DLYM2L_2        (0x4UL << SAI_PDMDLY_DLYM2L_Pos)             /*!< 0x00000400 */\n\n#define SAI_PDMDLY_DLYM2R_Pos      (12U)\n#define SAI_PDMDLY_DLYM2R_Msk      (0x7UL << SAI_PDMDLY_DLYM2R_Pos)            /*!< 0x00007000 */\n#define SAI_PDMDLY_DLYM2R          SAI_PDMDLY_DLYM2R_Msk                       /*!<DLYM2R[2:0] (Delay line adjust for right microphone of pair 2)*/\n#define SAI_PDMDLY_DLYM2R_0        (0x1UL << SAI_PDMDLY_DLYM2R_Pos)             /*!< 0x00001000 */\n#define SAI_PDMDLY_DLYM2R_1        (0x2UL << SAI_PDMDLY_DLYM2R_Pos)             /*!< 0x00002000 */\n#define SAI_PDMDLY_DLYM2R_2        (0x4UL << SAI_PDMDLY_DLYM2R_Pos)             /*!< 0x00004000 */\n\n#define SAI_PDMDLY_DLYM3L_Pos      (16U)\n#define SAI_PDMDLY_DLYM3L_Msk      (0x7UL << SAI_PDMDLY_DLYM3L_Pos)            /*!< 0x00070000 */\n#define SAI_PDMDLY_DLYM3L          SAI_PDMDLY_DLYM3L_Msk                       /*!<DLYM3L[2:0] (Delay line adjust for left microphone of pair 3)*/\n#define SAI_PDMDLY_DLYM3L_0        (0x1UL << SAI_PDMDLY_DLYM3L_Pos)             /*!< 0x00010000 */\n#define SAI_PDMDLY_DLYM3L_1        (0x2UL << SAI_PDMDLY_DLYM3L_Pos)             /*!< 0x00020000 */\n#define SAI_PDMDLY_DLYM3L_2        (0x4UL << SAI_PDMDLY_DLYM3L_Pos)             /*!< 0x00040000 */\n\n#define SAI_PDMDLY_DLYM3R_Pos      (20U)\n#define SAI_PDMDLY_DLYM3R_Msk      (0x7UL << SAI_PDMDLY_DLYM3R_Pos)            /*!< 0x00700000 */\n#define SAI_PDMDLY_DLYM3R          SAI_PDMDLY_DLYM3R_Msk                       /*!<DLYM3R[2:0] (Delay line adjust for right microphone of pair 3)*/\n#define SAI_PDMDLY_DLYM3R_0        (0x1UL << SAI_PDMDLY_DLYM3R_Pos)             /*!< 0x00100000 */\n#define SAI_PDMDLY_DLYM3R_1        (0x2UL << SAI_PDMDLY_DLYM3R_Pos)             /*!< 0x00200000 */\n#define SAI_PDMDLY_DLYM3R_2        (0x4UL << SAI_PDMDLY_DLYM3R_Pos)             /*!< 0x00400000 */\n\n#define SAI_PDMDLY_DLYM4L_Pos      (24U)\n#define SAI_PDMDLY_DLYM4L_Msk      (0x7UL << SAI_PDMDLY_DLYM4L_Pos)            /*!< 0x07000000 */\n#define SAI_PDMDLY_DLYM4L          SAI_PDMDLY_DLYM4L_Msk                       /*!<DLYM4L[2:0] (Delay line adjust for left microphone of pair 4)*/\n#define SAI_PDMDLY_DLYM4L_0        (0x1UL << SAI_PDMDLY_DLYM4L_Pos)             /*!< 0x01000000 */\n#define SAI_PDMDLY_DLYM4L_1        (0x2UL << SAI_PDMDLY_DLYM4L_Pos)             /*!< 0x02000000 */\n#define SAI_PDMDLY_DLYM4L_2        (0x4UL << SAI_PDMDLY_DLYM4L_Pos)             /*!< 0x04000000 */\n\n#define SAI_PDMDLY_DLYM4R_Pos      (28U)\n#define SAI_PDMDLY_DLYM4R_Msk      (0x7UL << SAI_PDMDLY_DLYM4R_Pos)            /*!< 0x70000000 */\n#define SAI_PDMDLY_DLYM4R          SAI_PDMDLY_DLYM4R_Msk                       /*!<DLYM4R[2:0] (Delay line adjust for right microphone of pair 4)*/\n#define SAI_PDMDLY_DLYM4R_0        (0x1UL << SAI_PDMDLY_DLYM4R_Pos)             /*!< 0x10000000 */\n#define SAI_PDMDLY_DLYM4R_1        (0x2UL << SAI_PDMDLY_DLYM4R_Pos)             /*!< 0x20000000 */\n#define SAI_PDMDLY_DLYM4R_2        (0x4UL << SAI_PDMDLY_DLYM4R_Pos)             /*!< 0x40000000 */\n\n/******************************************************************************/\n/*                                                                            */\n/*                           SDMMC Interface                                  */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bit definition for SDMMC_POWER register  ******************/\n#define SDMMC_POWER_PWRCTRL_Pos          (0U)\n#define SDMMC_POWER_PWRCTRL_Msk          (0x3UL << SDMMC_POWER_PWRCTRL_Pos)    /*!< 0x00000003 */\n#define SDMMC_POWER_PWRCTRL              SDMMC_POWER_PWRCTRL_Msk               /*!<PWRCTRL[1:0] bits (Power supply control bits) */\n#define SDMMC_POWER_PWRCTRL_0            (0x1UL << SDMMC_POWER_PWRCTRL_Pos)     /*!< 0x00000001 */\n#define SDMMC_POWER_PWRCTRL_1            (0x2UL << SDMMC_POWER_PWRCTRL_Pos)     /*!< 0x00000002 */\n#define SDMMC_POWER_VSWITCH_Pos          (2U)\n#define SDMMC_POWER_VSWITCH_Msk          (0x1UL << SDMMC_POWER_VSWITCH_Pos)    /*!< 0x00000004 */\n#define SDMMC_POWER_VSWITCH              SDMMC_POWER_VSWITCH_Msk               /*!<Voltage switch sequence start */\n#define SDMMC_POWER_VSWITCHEN_Pos        (3U)\n#define SDMMC_POWER_VSWITCHEN_Msk        (0x1UL << SDMMC_POWER_VSWITCHEN_Pos)  /*!< 0x00000008 */\n#define SDMMC_POWER_VSWITCHEN            SDMMC_POWER_VSWITCHEN_Msk             /*!<Voltage switch procedure enable */\n#define SDMMC_POWER_DIRPOL_Pos           (4U)\n#define SDMMC_POWER_DIRPOL_Msk           (0x1UL << SDMMC_POWER_DIRPOL_Pos)     /*!< 0x00000010 */\n#define SDMMC_POWER_DIRPOL               SDMMC_POWER_DIRPOL_Msk                /*!<Data and Command direction signals polarity selection */\n\n/******************  Bit definition for SDMMC_CLKCR register  ******************/\n#define SDMMC_CLKCR_CLKDIV_Pos           (0U)\n#define SDMMC_CLKCR_CLKDIV_Msk           (0x3FFUL << SDMMC_CLKCR_CLKDIV_Pos)   /*!< 0x000003FF */\n#define SDMMC_CLKCR_CLKDIV               SDMMC_CLKCR_CLKDIV_Msk                /*!<Clock divide factor             */\n#define SDMMC_CLKCR_PWRSAV_Pos           (12U)\n#define SDMMC_CLKCR_PWRSAV_Msk           (0x1UL << SDMMC_CLKCR_PWRSAV_Pos)     /*!< 0x00001000 */\n#define SDMMC_CLKCR_PWRSAV               SDMMC_CLKCR_PWRSAV_Msk                /*!<Power saving configuration bit  */\n\n#define SDMMC_CLKCR_WIDBUS_Pos           (14U)\n#define SDMMC_CLKCR_WIDBUS_Msk           (0x3UL << SDMMC_CLKCR_WIDBUS_Pos)     /*!< 0x0000C000 */\n#define SDMMC_CLKCR_WIDBUS               SDMMC_CLKCR_WIDBUS_Msk                /*!<WIDBUS[1:0] bits (Wide bus mode enable bit) */\n#define SDMMC_CLKCR_WIDBUS_0             (0x1UL << SDMMC_CLKCR_WIDBUS_Pos)      /*!< 0x00004000 */\n#define SDMMC_CLKCR_WIDBUS_1             (0x2UL << SDMMC_CLKCR_WIDBUS_Pos)      /*!< 0x00008000 */\n\n#define SDMMC_CLKCR_NEGEDGE_Pos          (16U)\n#define SDMMC_CLKCR_NEGEDGE_Msk          (0x1UL << SDMMC_CLKCR_NEGEDGE_Pos)    /*!< 0x00010000 */\n#define SDMMC_CLKCR_NEGEDGE              SDMMC_CLKCR_NEGEDGE_Msk               /*!<SDMMC_CK dephasing selection bit */\n#define SDMMC_CLKCR_HWFC_EN_Pos          (17U)\n#define SDMMC_CLKCR_HWFC_EN_Msk          (0x1UL << SDMMC_CLKCR_HWFC_EN_Pos)    /*!< 0x00020000 */\n#define SDMMC_CLKCR_HWFC_EN              SDMMC_CLKCR_HWFC_EN_Msk               /*!<HW Flow Control enable           */\n#define SDMMC_CLKCR_DDR_Pos              (18U)\n#define SDMMC_CLKCR_DDR_Msk              (0x1UL << SDMMC_CLKCR_DDR_Pos)        /*!< 0x00040000 */\n#define SDMMC_CLKCR_DDR                  SDMMC_CLKCR_DDR_Msk                   /*!<Data rate signaling selection    */\n#define SDMMC_CLKCR_BUSSPEED_Pos         (19U)\n#define SDMMC_CLKCR_BUSSPEED_Msk         (0x1UL << SDMMC_CLKCR_BUSSPEED_Pos)   /*!< 0x00080000 */\n#define SDMMC_CLKCR_BUSSPEED             SDMMC_CLKCR_BUSSPEED_Msk              /*!<Bus speed mode selection         */\n#define SDMMC_CLKCR_SELCLKRX_Pos         (20U)\n#define SDMMC_CLKCR_SELCLKRX_Msk         (0x3UL << SDMMC_CLKCR_SELCLKRX_Pos)   /*!< 0x00300000 */\n#define SDMMC_CLKCR_SELCLKRX             SDMMC_CLKCR_SELCLKRX_Msk              /*!<SELCLKRX[1:0] bits (Receive clock selection) */\n#define SDMMC_CLKCR_SELCLKRX_0           (0x1UL << SDMMC_CLKCR_SELCLKRX_Pos)    /*!< 0x00100000 */\n#define SDMMC_CLKCR_SELCLKRX_1           (0x2UL << SDMMC_CLKCR_SELCLKRX_Pos)    /*!< 0x00200000 */\n\n/*******************  Bit definition for SDMMC_ARG register  *******************/\n#define SDMMC_ARG_CMDARG_Pos             (0U)\n#define SDMMC_ARG_CMDARG_Msk             (0xFFFFFFFFUL << SDMMC_ARG_CMDARG_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_ARG_CMDARG                 SDMMC_ARG_CMDARG_Msk                  /*!<Command argument */\n\n/*******************  Bit definition for SDMMC_CMD register  *******************/\n#define SDMMC_CMD_CMDINDEX_Pos           (0U)\n#define SDMMC_CMD_CMDINDEX_Msk           (0x3FUL << SDMMC_CMD_CMDINDEX_Pos)    /*!< 0x0000003F */\n#define SDMMC_CMD_CMDINDEX               SDMMC_CMD_CMDINDEX_Msk                /*!<Command Index                               */\n#define SDMMC_CMD_CMDTRANS_Pos           (6U)\n#define SDMMC_CMD_CMDTRANS_Msk           (0x1UL << SDMMC_CMD_CMDTRANS_Pos)     /*!< 0x00000040 */\n#define SDMMC_CMD_CMDTRANS               SDMMC_CMD_CMDTRANS_Msk                /*!<CPSM Treats command as a Data Transfer      */\n#define SDMMC_CMD_CMDSTOP_Pos            (7U)\n#define SDMMC_CMD_CMDSTOP_Msk            (0x1UL << SDMMC_CMD_CMDSTOP_Pos)      /*!< 0x00000080 */\n#define SDMMC_CMD_CMDSTOP                SDMMC_CMD_CMDSTOP_Msk                 /*!<CPSM Treats command as a Stop               */\n\n#define SDMMC_CMD_WAITRESP_Pos           (8U)\n#define SDMMC_CMD_WAITRESP_Msk           (0x3UL << SDMMC_CMD_WAITRESP_Pos)     /*!< 0x00000300 */\n#define SDMMC_CMD_WAITRESP               SDMMC_CMD_WAITRESP_Msk                /*!<WAITRESP[1:0] bits (Wait for response bits) */\n#define SDMMC_CMD_WAITRESP_0             (0x1UL << SDMMC_CMD_WAITRESP_Pos)      /*!< 0x00000100 */\n#define SDMMC_CMD_WAITRESP_1             (0x2UL << SDMMC_CMD_WAITRESP_Pos)      /*!< 0x00000200 */\n\n#define SDMMC_CMD_WAITINT_Pos            (10U)\n#define SDMMC_CMD_WAITINT_Msk            (0x1UL << SDMMC_CMD_WAITINT_Pos)      /*!< 0x00000400 */\n#define SDMMC_CMD_WAITINT                SDMMC_CMD_WAITINT_Msk                 /*!<CPSM Waits for Interrupt Request                               */\n#define SDMMC_CMD_WAITPEND_Pos           (11U)\n#define SDMMC_CMD_WAITPEND_Msk           (0x1UL << SDMMC_CMD_WAITPEND_Pos)     /*!< 0x00000800 */\n#define SDMMC_CMD_WAITPEND               SDMMC_CMD_WAITPEND_Msk                /*!<CPSM Waits for ends of data transfer (CmdPend internal signal) */\n#define SDMMC_CMD_CPSMEN_Pos             (12U)\n#define SDMMC_CMD_CPSMEN_Msk             (0x1UL << SDMMC_CMD_CPSMEN_Pos)       /*!< 0x00001000 */\n#define SDMMC_CMD_CPSMEN                 SDMMC_CMD_CPSMEN_Msk                  /*!<Command path state machine (CPSM) Enable bit                   */\n#define SDMMC_CMD_DTHOLD_Pos             (13U)\n#define SDMMC_CMD_DTHOLD_Msk             (0x1UL << SDMMC_CMD_DTHOLD_Pos)       /*!< 0x00002000 */\n#define SDMMC_CMD_DTHOLD                 SDMMC_CMD_DTHOLD_Msk                  /*!<Hold new data block transmission and reception in the DPSM     */\n#define SDMMC_CMD_BOOTMODE_Pos           (14U)\n#define SDMMC_CMD_BOOTMODE_Msk           (0x1UL << SDMMC_CMD_BOOTMODE_Pos)     /*!< 0x00004000 */\n#define SDMMC_CMD_BOOTMODE               SDMMC_CMD_BOOTMODE_Msk                /*!<Boot mode                                                      */\n#define SDMMC_CMD_BOOTEN_Pos             (15U)\n#define SDMMC_CMD_BOOTEN_Msk             (0x1UL << SDMMC_CMD_BOOTEN_Pos)       /*!< 0x00008000 */\n#define SDMMC_CMD_BOOTEN                 SDMMC_CMD_BOOTEN_Msk                  /*!<Enable Boot mode procedure                                     */\n#define SDMMC_CMD_CMDSUSPEND_Pos         (16U)\n#define SDMMC_CMD_CMDSUSPEND_Msk         (0x1UL << SDMMC_CMD_CMDSUSPEND_Pos)   /*!< 0x00010000 */\n#define SDMMC_CMD_CMDSUSPEND             SDMMC_CMD_CMDSUSPEND_Msk              /*!<CPSM Treats command as a Suspend or Resume command             */\n\n/*****************  Bit definition for SDMMC_RESPCMD register  *****************/\n#define SDMMC_RESPCMD_RESPCMD_Pos        (0U)\n#define SDMMC_RESPCMD_RESPCMD_Msk        (0x3FUL << SDMMC_RESPCMD_RESPCMD_Pos) /*!< 0x0000003F */\n#define SDMMC_RESPCMD_RESPCMD            SDMMC_RESPCMD_RESPCMD_Msk             /*!<Response command index */\n\n/******************  Bit definition for SDMMC_RESP0 register  ******************/\n#define SDMMC_RESP0_CARDSTATUS0_Pos      (0U)\n#define SDMMC_RESP0_CARDSTATUS0_Msk      (0xFFFFFFFFUL << SDMMC_RESP0_CARDSTATUS0_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_RESP0_CARDSTATUS0          SDMMC_RESP0_CARDSTATUS0_Msk           /*!<Card Status */\n\n/******************  Bit definition for SDMMC_RESP1 register  ******************/\n#define SDMMC_RESP1_CARDSTATUS1_Pos      (0U)\n#define SDMMC_RESP1_CARDSTATUS1_Msk      (0xFFFFFFFFUL << SDMMC_RESP1_CARDSTATUS1_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_RESP1_CARDSTATUS1          SDMMC_RESP1_CARDSTATUS1_Msk           /*!<Card Status */\n\n/******************  Bit definition for SDMMC_RESP2 register  ******************/\n#define SDMMC_RESP2_CARDSTATUS2_Pos      (0U)\n#define SDMMC_RESP2_CARDSTATUS2_Msk      (0xFFFFFFFFUL << SDMMC_RESP2_CARDSTATUS2_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_RESP2_CARDSTATUS2          SDMMC_RESP2_CARDSTATUS2_Msk           /*!<Card Status */\n\n/******************  Bit definition for SDMMC_RESP3 register  ******************/\n#define SDMMC_RESP3_CARDSTATUS3_Pos      (0U)\n#define SDMMC_RESP3_CARDSTATUS3_Msk      (0xFFFFFFFFUL << SDMMC_RESP3_CARDSTATUS3_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_RESP3_CARDSTATUS3          SDMMC_RESP3_CARDSTATUS3_Msk           /*!<Card Status */\n\n/******************  Bit definition for SDMMC_RESP4 register  ******************/\n#define SDMMC_RESP4_CARDSTATUS4_Pos      (0U)\n#define SDMMC_RESP4_CARDSTATUS4_Msk      (0xFFFFFFFFUL << SDMMC_RESP4_CARDSTATUS4_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_RESP4_CARDSTATUS4          SDMMC_RESP4_CARDSTATUS4_Msk           /*!<Card Status */\n\n/******************  Bit definition for SDMMC_DTIMER register  *****************/\n#define SDMMC_DTIMER_DATATIME_Pos        (0U)\n#define SDMMC_DTIMER_DATATIME_Msk        (0xFFFFFFFFUL << SDMMC_DTIMER_DATATIME_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_DTIMER_DATATIME            SDMMC_DTIMER_DATATIME_Msk             /*!<Data timeout period. */\n\n/******************  Bit definition for SDMMC_DLEN register  *******************/\n#define SDMMC_DLEN_DATALENGTH_Pos        (0U)\n#define SDMMC_DLEN_DATALENGTH_Msk        (0x1FFFFFFUL << SDMMC_DLEN_DATALENGTH_Pos) /*!< 0x01FFFFFF */\n#define SDMMC_DLEN_DATALENGTH            SDMMC_DLEN_DATALENGTH_Msk             /*!<Data length value    */\n\n/******************  Bit definition for SDMMC_DCTRL register  ******************/\n#define SDMMC_DCTRL_DTEN_Pos             (0U)\n#define SDMMC_DCTRL_DTEN_Msk             (0x1UL << SDMMC_DCTRL_DTEN_Pos)       /*!< 0x00000001 */\n#define SDMMC_DCTRL_DTEN                 SDMMC_DCTRL_DTEN_Msk                  /*!<Data transfer enabled bit                */\n#define SDMMC_DCTRL_DTDIR_Pos            (1U)\n#define SDMMC_DCTRL_DTDIR_Msk            (0x1UL << SDMMC_DCTRL_DTDIR_Pos)      /*!< 0x00000002 */\n#define SDMMC_DCTRL_DTDIR                SDMMC_DCTRL_DTDIR_Msk                 /*!<Data transfer direction selection        */\n#define SDMMC_DCTRL_DTMODE_Pos           (2U)\n#define SDMMC_DCTRL_DTMODE_Msk           (0x3UL << SDMMC_DCTRL_DTMODE_Pos)     /*!< 0x0000000C */\n#define SDMMC_DCTRL_DTMODE               SDMMC_DCTRL_DTMODE_Msk                /*!<DTMODE[1:0] Data transfer mode selection */\n#define SDMMC_DCTRL_DTMODE_0             (0x1UL << SDMMC_DCTRL_DTMODE_Pos)      /*!< 0x00000004 */\n#define SDMMC_DCTRL_DTMODE_1             (0x2UL << SDMMC_DCTRL_DTMODE_Pos)      /*!< 0x00000008 */\n\n#define SDMMC_DCTRL_DBLOCKSIZE_Pos       (4U)\n#define SDMMC_DCTRL_DBLOCKSIZE_Msk       (0xFUL << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x000000F0 */\n#define SDMMC_DCTRL_DBLOCKSIZE           SDMMC_DCTRL_DBLOCKSIZE_Msk            /*!<DBLOCKSIZE[3:0] bits (Data block size) */\n#define SDMMC_DCTRL_DBLOCKSIZE_0         (0x1UL << SDMMC_DCTRL_DBLOCKSIZE_Pos)  /*!< 0x00000010 */\n#define SDMMC_DCTRL_DBLOCKSIZE_1         (0x2UL << SDMMC_DCTRL_DBLOCKSIZE_Pos)  /*!< 0x00000020 */\n#define SDMMC_DCTRL_DBLOCKSIZE_2         (0x4UL << SDMMC_DCTRL_DBLOCKSIZE_Pos)  /*!< 0x00000040 */\n#define SDMMC_DCTRL_DBLOCKSIZE_3         (0x8UL << SDMMC_DCTRL_DBLOCKSIZE_Pos)  /*!< 0x00000080 */\n\n#define SDMMC_DCTRL_RWSTART_Pos          (8U)\n#define SDMMC_DCTRL_RWSTART_Msk          (0x1UL << SDMMC_DCTRL_RWSTART_Pos)    /*!< 0x00000100 */\n#define SDMMC_DCTRL_RWSTART              SDMMC_DCTRL_RWSTART_Msk               /*!<Read wait start                                 */\n#define SDMMC_DCTRL_RWSTOP_Pos           (9U)\n#define SDMMC_DCTRL_RWSTOP_Msk           (0x1UL << SDMMC_DCTRL_RWSTOP_Pos)     /*!< 0x00000200 */\n#define SDMMC_DCTRL_RWSTOP               SDMMC_DCTRL_RWSTOP_Msk                /*!<Read wait stop                                  */\n#define SDMMC_DCTRL_RWMOD_Pos            (10U)\n#define SDMMC_DCTRL_RWMOD_Msk            (0x1UL << SDMMC_DCTRL_RWMOD_Pos)      /*!< 0x00000400 */\n#define SDMMC_DCTRL_RWMOD                SDMMC_DCTRL_RWMOD_Msk                 /*!<Read wait mode                                  */\n#define SDMMC_DCTRL_SDIOEN_Pos           (11U)\n#define SDMMC_DCTRL_SDIOEN_Msk           (0x1UL << SDMMC_DCTRL_SDIOEN_Pos)     /*!< 0x00000800 */\n#define SDMMC_DCTRL_SDIOEN               SDMMC_DCTRL_SDIOEN_Msk                /*!<SD I/O enable functions                         */\n#define SDMMC_DCTRL_BOOTACKEN_Pos        (12U)\n#define SDMMC_DCTRL_BOOTACKEN_Msk        (0x1UL << SDMMC_DCTRL_BOOTACKEN_Pos)  /*!< 0x00001000 */\n#define SDMMC_DCTRL_BOOTACKEN            SDMMC_DCTRL_BOOTACKEN_Msk             /*!<Enable the reception of the Boot Acknowledgment */\n#define SDMMC_DCTRL_FIFORST_Pos          (13U)\n#define SDMMC_DCTRL_FIFORST_Msk          (0x1UL << SDMMC_DCTRL_FIFORST_Pos)    /*!< 0x00002000 */\n#define SDMMC_DCTRL_FIFORST              SDMMC_DCTRL_FIFORST_Msk               /*!<FIFO reset                                      */\n\n/******************  Bit definition for SDMMC_DCOUNT register  *****************/\n#define SDMMC_DCOUNT_DATACOUNT_Pos       (0U)\n#define SDMMC_DCOUNT_DATACOUNT_Msk       (0x1FFFFFFUL << SDMMC_DCOUNT_DATACOUNT_Pos) /*!< 0x01FFFFFF */\n#define SDMMC_DCOUNT_DATACOUNT           SDMMC_DCOUNT_DATACOUNT_Msk            /*!<Data count value */\n\n/******************  Bit definition for SDMMC_STA register  ********************/\n#define SDMMC_STA_CCRCFAIL_Pos           (0U)\n#define SDMMC_STA_CCRCFAIL_Msk           (0x1UL << SDMMC_STA_CCRCFAIL_Pos)     /*!< 0x00000001 */\n#define SDMMC_STA_CCRCFAIL               SDMMC_STA_CCRCFAIL_Msk                /*!<Command response received (CRC check failed)  */\n#define SDMMC_STA_DCRCFAIL_Pos           (1U)\n#define SDMMC_STA_DCRCFAIL_Msk           (0x1UL << SDMMC_STA_DCRCFAIL_Pos)     /*!< 0x00000002 */\n#define SDMMC_STA_DCRCFAIL               SDMMC_STA_DCRCFAIL_Msk                /*!<Data block sent/received (CRC check failed)   */\n#define SDMMC_STA_CTIMEOUT_Pos           (2U)\n#define SDMMC_STA_CTIMEOUT_Msk           (0x1UL << SDMMC_STA_CTIMEOUT_Pos)     /*!< 0x00000004 */\n#define SDMMC_STA_CTIMEOUT               SDMMC_STA_CTIMEOUT_Msk                /*!<Command response timeout                      */\n#define SDMMC_STA_DTIMEOUT_Pos           (3U)\n#define SDMMC_STA_DTIMEOUT_Msk           (0x1UL << SDMMC_STA_DTIMEOUT_Pos)     /*!< 0x00000008 */\n#define SDMMC_STA_DTIMEOUT               SDMMC_STA_DTIMEOUT_Msk                /*!<Data timeout                                  */\n#define SDMMC_STA_TXUNDERR_Pos           (4U)\n#define SDMMC_STA_TXUNDERR_Msk           (0x1UL << SDMMC_STA_TXUNDERR_Pos)     /*!< 0x00000010 */\n#define SDMMC_STA_TXUNDERR               SDMMC_STA_TXUNDERR_Msk                /*!<Transmit FIFO underrun error                  */\n#define SDMMC_STA_RXOVERR_Pos            (5U)\n#define SDMMC_STA_RXOVERR_Msk            (0x1UL << SDMMC_STA_RXOVERR_Pos)      /*!< 0x00000020 */\n#define SDMMC_STA_RXOVERR                SDMMC_STA_RXOVERR_Msk                 /*!<Received FIFO overrun error                   */\n#define SDMMC_STA_CMDREND_Pos            (6U)\n#define SDMMC_STA_CMDREND_Msk            (0x1UL << SDMMC_STA_CMDREND_Pos)      /*!< 0x00000040 */\n#define SDMMC_STA_CMDREND                SDMMC_STA_CMDREND_Msk                 /*!<Command response received (CRC check passed)  */\n#define SDMMC_STA_CMDSENT_Pos            (7U)\n#define SDMMC_STA_CMDSENT_Msk            (0x1UL << SDMMC_STA_CMDSENT_Pos)      /*!< 0x00000080 */\n#define SDMMC_STA_CMDSENT                SDMMC_STA_CMDSENT_Msk                 /*!<Command sent (no response required)           */\n#define SDMMC_STA_DATAEND_Pos            (8U)\n#define SDMMC_STA_DATAEND_Msk            (0x1UL << SDMMC_STA_DATAEND_Pos)      /*!< 0x00000100 */\n#define SDMMC_STA_DATAEND                SDMMC_STA_DATAEND_Msk                 /*!<Data end (data counter, SDIDCOUNT, is zero)   */\n#define SDMMC_STA_DHOLD_Pos              (9U)\n#define SDMMC_STA_DHOLD_Msk              (0x1UL << SDMMC_STA_DHOLD_Pos)        /*!< 0x00000200 */\n#define SDMMC_STA_DHOLD                  SDMMC_STA_DHOLD_Msk                   /*!<Data transfer Hold                                                      */\n#define SDMMC_STA_DBCKEND_Pos            (10U)\n#define SDMMC_STA_DBCKEND_Msk            (0x1UL << SDMMC_STA_DBCKEND_Pos)      /*!< 0x00000400 */\n#define SDMMC_STA_DBCKEND                SDMMC_STA_DBCKEND_Msk                 /*!<Data block sent/received (CRC check passed)   */\n#define SDMMC_STA_DABORT_Pos             (11U)\n#define SDMMC_STA_DABORT_Msk             (0x1UL << SDMMC_STA_DABORT_Pos)       /*!< 0x00000800 */\n#define SDMMC_STA_DABORT                 SDMMC_STA_DABORT_Msk                  /*!<Data transfer aborted by CMD12                                          */\n#define SDMMC_STA_DPSMACT_Pos            (12U)\n#define SDMMC_STA_DPSMACT_Msk            (0x1UL << SDMMC_STA_DPSMACT_Pos)      /*!< 0x00001000 */\n#define SDMMC_STA_DPSMACT                SDMMC_STA_DPSMACT_Msk                 /*!<Data path state machine active                                       */\n#define SDMMC_STA_CPSMACT_Pos            (13U)\n#define SDMMC_STA_CPSMACT_Msk            (0x1UL << SDMMC_STA_CPSMACT_Pos)      /*!< 0x00002000 */\n#define SDMMC_STA_CPSMACT                SDMMC_STA_CPSMACT_Msk                 /*!<Command path state machine active                                          */\n#define SDMMC_STA_TXFIFOHE_Pos           (14U)\n#define SDMMC_STA_TXFIFOHE_Msk           (0x1UL << SDMMC_STA_TXFIFOHE_Pos)     /*!< 0x00004000 */\n#define SDMMC_STA_TXFIFOHE               SDMMC_STA_TXFIFOHE_Msk                /*!<Transmit FIFO Half Empty: at least 8 words can be written into the FIFO */\n#define SDMMC_STA_RXFIFOHF_Pos           (15U)\n#define SDMMC_STA_RXFIFOHF_Msk           (0x1UL << SDMMC_STA_RXFIFOHF_Pos)     /*!< 0x00008000 */\n#define SDMMC_STA_RXFIFOHF               SDMMC_STA_RXFIFOHF_Msk                /*!<Receive FIFO Half Full: there are at least 8 words in the FIFO */\n#define SDMMC_STA_TXFIFOF_Pos            (16U)\n#define SDMMC_STA_TXFIFOF_Msk            (0x1UL << SDMMC_STA_TXFIFOF_Pos)      /*!< 0x00010000 */\n#define SDMMC_STA_TXFIFOF                SDMMC_STA_TXFIFOF_Msk                 /*!<Transmit FIFO full                            */\n#define SDMMC_STA_RXFIFOF_Pos            (17U)\n#define SDMMC_STA_RXFIFOF_Msk            (0x1UL << SDMMC_STA_RXFIFOF_Pos)      /*!< 0x00020000 */\n#define SDMMC_STA_RXFIFOF                SDMMC_STA_RXFIFOF_Msk                 /*!<Receive FIFO full                             */\n#define SDMMC_STA_TXFIFOE_Pos            (18U)\n#define SDMMC_STA_TXFIFOE_Msk            (0x1UL << SDMMC_STA_TXFIFOE_Pos)      /*!< 0x00040000 */\n#define SDMMC_STA_TXFIFOE                SDMMC_STA_TXFIFOE_Msk                 /*!<Transmit FIFO empty                           */\n#define SDMMC_STA_RXFIFOE_Pos            (19U)\n#define SDMMC_STA_RXFIFOE_Msk            (0x1UL << SDMMC_STA_RXFIFOE_Pos)      /*!< 0x00080000 */\n#define SDMMC_STA_RXFIFOE                SDMMC_STA_RXFIFOE_Msk                 /*!<Receive FIFO empty                            */\n#define SDMMC_STA_BUSYD0_Pos             (20U)\n#define SDMMC_STA_BUSYD0_Msk             (0x1UL << SDMMC_STA_BUSYD0_Pos)       /*!< 0x00100000 */\n#define SDMMC_STA_BUSYD0                 SDMMC_STA_BUSYD0_Msk                  /*!<Inverted value of SDMMC_D0 line (Busy)                                  */\n#define SDMMC_STA_BUSYD0END_Pos          (21U)\n#define SDMMC_STA_BUSYD0END_Msk          (0x1UL << SDMMC_STA_BUSYD0END_Pos)    /*!< 0x00200000 */\n#define SDMMC_STA_BUSYD0END              SDMMC_STA_BUSYD0END_Msk               /*!<End of SDMMC_D0 Busy following a CMD response detected                  */\n#define SDMMC_STA_SDIOIT_Pos             (22U)\n#define SDMMC_STA_SDIOIT_Msk             (0x1UL << SDMMC_STA_SDIOIT_Pos)       /*!< 0x00400000 */\n#define SDMMC_STA_SDIOIT                 SDMMC_STA_SDIOIT_Msk                  /*!<SDIO interrupt received                                                 */\n#define SDMMC_STA_ACKFAIL_Pos            (23U)\n#define SDMMC_STA_ACKFAIL_Msk            (0x1UL << SDMMC_STA_ACKFAIL_Pos)      /*!< 0x00800000 */\n#define SDMMC_STA_ACKFAIL                SDMMC_STA_ACKFAIL_Msk                 /*!<Boot Acknowledgment received (BootAck check fail)                       */\n#define SDMMC_STA_ACKTIMEOUT_Pos         (24U)\n#define SDMMC_STA_ACKTIMEOUT_Msk         (0x1UL << SDMMC_STA_ACKTIMEOUT_Pos)   /*!< 0x01000000 */\n#define SDMMC_STA_ACKTIMEOUT             SDMMC_STA_ACKTIMEOUT_Msk              /*!<Boot Acknowledgment timeout                                             */\n#define SDMMC_STA_VSWEND_Pos             (25U)\n#define SDMMC_STA_VSWEND_Msk             (0x1UL << SDMMC_STA_VSWEND_Pos)       /*!< 0x02000000 */\n#define SDMMC_STA_VSWEND                 SDMMC_STA_VSWEND_Msk                  /*!<Voltage switch critical timing section completion                       */\n#define SDMMC_STA_CKSTOP_Pos             (26U)\n#define SDMMC_STA_CKSTOP_Msk             (0x1UL << SDMMC_STA_CKSTOP_Pos)       /*!< 0x04000000 */\n#define SDMMC_STA_CKSTOP                 SDMMC_STA_CKSTOP_Msk                  /*!<SDMMC_CK stopped in Voltage switch procedure                            */\n#define SDMMC_STA_IDMATE_Pos             (27U)\n#define SDMMC_STA_IDMATE_Msk             (0x1UL << SDMMC_STA_IDMATE_Pos)       /*!< 0x08000000 */\n#define SDMMC_STA_IDMATE                 SDMMC_STA_IDMATE_Msk                  /*!<IDMA transfer error                                                     */\n#define SDMMC_STA_IDMABTC_Pos            (28U)\n#define SDMMC_STA_IDMABTC_Msk            (0x1UL << SDMMC_STA_IDMABTC_Pos)      /*!< 0x10000000 */\n#define SDMMC_STA_IDMABTC                SDMMC_STA_IDMABTC_Msk                 /*!<IDMA buffer transfer complete                                           */\n\n/*******************  Bit definition for SDMMC_ICR register  *******************/\n#define SDMMC_ICR_CCRCFAILC_Pos          (0U)\n#define SDMMC_ICR_CCRCFAILC_Msk          (0x1UL << SDMMC_ICR_CCRCFAILC_Pos)    /*!< 0x00000001 */\n#define SDMMC_ICR_CCRCFAILC              SDMMC_ICR_CCRCFAILC_Msk               /*!<CCRCFAIL flag clear bit */\n#define SDMMC_ICR_DCRCFAILC_Pos          (1U)\n#define SDMMC_ICR_DCRCFAILC_Msk          (0x1UL << SDMMC_ICR_DCRCFAILC_Pos)    /*!< 0x00000002 */\n#define SDMMC_ICR_DCRCFAILC              SDMMC_ICR_DCRCFAILC_Msk               /*!<DCRCFAIL flag clear bit */\n#define SDMMC_ICR_CTIMEOUTC_Pos          (2U)\n#define SDMMC_ICR_CTIMEOUTC_Msk          (0x1UL << SDMMC_ICR_CTIMEOUTC_Pos)    /*!< 0x00000004 */\n#define SDMMC_ICR_CTIMEOUTC              SDMMC_ICR_CTIMEOUTC_Msk               /*!<CTIMEOUT flag clear bit */\n#define SDMMC_ICR_DTIMEOUTC_Pos          (3U)\n#define SDMMC_ICR_DTIMEOUTC_Msk          (0x1UL << SDMMC_ICR_DTIMEOUTC_Pos)    /*!< 0x00000008 */\n#define SDMMC_ICR_DTIMEOUTC              SDMMC_ICR_DTIMEOUTC_Msk               /*!<DTIMEOUT flag clear bit */\n#define SDMMC_ICR_TXUNDERRC_Pos          (4U)\n#define SDMMC_ICR_TXUNDERRC_Msk          (0x1UL << SDMMC_ICR_TXUNDERRC_Pos)    /*!< 0x00000010 */\n#define SDMMC_ICR_TXUNDERRC              SDMMC_ICR_TXUNDERRC_Msk               /*!<TXUNDERR flag clear bit */\n#define SDMMC_ICR_RXOVERRC_Pos           (5U)\n#define SDMMC_ICR_RXOVERRC_Msk           (0x1UL << SDMMC_ICR_RXOVERRC_Pos)     /*!< 0x00000020 */\n#define SDMMC_ICR_RXOVERRC               SDMMC_ICR_RXOVERRC_Msk                /*!<RXOVERR flag clear bit  */\n#define SDMMC_ICR_CMDRENDC_Pos           (6U)\n#define SDMMC_ICR_CMDRENDC_Msk           (0x1UL << SDMMC_ICR_CMDRENDC_Pos)     /*!< 0x00000040 */\n#define SDMMC_ICR_CMDRENDC               SDMMC_ICR_CMDRENDC_Msk                /*!<CMDREND flag clear bit  */\n#define SDMMC_ICR_CMDSENTC_Pos           (7U)\n#define SDMMC_ICR_CMDSENTC_Msk           (0x1UL << SDMMC_ICR_CMDSENTC_Pos)     /*!< 0x00000080 */\n#define SDMMC_ICR_CMDSENTC               SDMMC_ICR_CMDSENTC_Msk                /*!<CMDSENT flag clear bit  */\n#define SDMMC_ICR_DATAENDC_Pos           (8U)\n#define SDMMC_ICR_DATAENDC_Msk           (0x1UL << SDMMC_ICR_DATAENDC_Pos)     /*!< 0x00000100 */\n#define SDMMC_ICR_DATAENDC               SDMMC_ICR_DATAENDC_Msk                /*!<DATAEND flag clear bit  */\n#define SDMMC_ICR_DHOLDC_Pos             (9U)\n#define SDMMC_ICR_DHOLDC_Msk             (0x1UL << SDMMC_ICR_DHOLDC_Pos)       /*!< 0x00000200 */\n#define SDMMC_ICR_DHOLDC                 SDMMC_ICR_DHOLDC_Msk                  /*!<DHOLD flag clear bit       */\n#define SDMMC_ICR_DBCKENDC_Pos           (10U)\n#define SDMMC_ICR_DBCKENDC_Msk           (0x1UL << SDMMC_ICR_DBCKENDC_Pos)     /*!< 0x00000400 */\n#define SDMMC_ICR_DBCKENDC               SDMMC_ICR_DBCKENDC_Msk                /*!<DBCKEND flag clear bit  */\n#define SDMMC_ICR_DABORTC_Pos            (11U)\n#define SDMMC_ICR_DABORTC_Msk            (0x1UL << SDMMC_ICR_DABORTC_Pos)      /*!< 0x00000800 */\n#define SDMMC_ICR_DABORTC                SDMMC_ICR_DABORTC_Msk                 /*!<DABORTC flag clear bit     */\n#define SDMMC_ICR_BUSYD0ENDC_Pos         (21U)\n#define SDMMC_ICR_BUSYD0ENDC_Msk         (0x1UL << SDMMC_ICR_BUSYD0ENDC_Pos)   /*!< 0x00200000 */\n#define SDMMC_ICR_BUSYD0ENDC             SDMMC_ICR_BUSYD0ENDC_Msk              /*!<BUSYD0ENDC flag clear bit  */\n#define SDMMC_ICR_SDIOITC_Pos            (22U)\n#define SDMMC_ICR_SDIOITC_Msk            (0x1UL << SDMMC_ICR_SDIOITC_Pos)      /*!< 0x00400000 */\n#define SDMMC_ICR_SDIOITC                SDMMC_ICR_SDIOITC_Msk                 /*!<SDIOIT flag clear bit      */\n#define SDMMC_ICR_ACKFAILC_Pos           (23U)\n#define SDMMC_ICR_ACKFAILC_Msk           (0x1UL << SDMMC_ICR_ACKFAILC_Pos)     /*!< 0x00800000 */\n#define SDMMC_ICR_ACKFAILC               SDMMC_ICR_ACKFAILC_Msk                /*!<ACKFAILC flag clear bit    */\n#define SDMMC_ICR_ACKTIMEOUTC_Pos        (24U)\n#define SDMMC_ICR_ACKTIMEOUTC_Msk        (0x1UL << SDMMC_ICR_ACKTIMEOUTC_Pos)  /*!< 0x01000000 */\n#define SDMMC_ICR_ACKTIMEOUTC            SDMMC_ICR_ACKTIMEOUTC_Msk             /*!<ACKTIMEOUTC flag clear bit */\n#define SDMMC_ICR_VSWENDC_Pos            (25U)\n#define SDMMC_ICR_VSWENDC_Msk            (0x1UL << SDMMC_ICR_VSWENDC_Pos)      /*!< 0x02000000 */\n#define SDMMC_ICR_VSWENDC                SDMMC_ICR_VSWENDC_Msk                 /*!<VSWENDC flag clear bit     */\n#define SDMMC_ICR_CKSTOPC_Pos            (26U)\n#define SDMMC_ICR_CKSTOPC_Msk            (0x1UL << SDMMC_ICR_CKSTOPC_Pos)      /*!< 0x04000000 */\n#define SDMMC_ICR_CKSTOPC                SDMMC_ICR_CKSTOPC_Msk                 /*!<CKSTOPC flag clear bit     */\n#define SDMMC_ICR_IDMATEC_Pos            (27U)\n#define SDMMC_ICR_IDMATEC_Msk            (0x1UL << SDMMC_ICR_IDMATEC_Pos)      /*!< 0x08000000 */\n#define SDMMC_ICR_IDMATEC                SDMMC_ICR_IDMATEC_Msk                 /*!<IDMATEC flag clear bit     */\n#define SDMMC_ICR_IDMABTCC_Pos           (28U)\n#define SDMMC_ICR_IDMABTCC_Msk           (0x1UL << SDMMC_ICR_IDMABTCC_Pos)     /*!< 0x10000000 */\n#define SDMMC_ICR_IDMABTCC               SDMMC_ICR_IDMABTCC_Msk                /*!<IDMABTCC flag clear bit    */\n\n/******************  Bit definition for SDMMC_MASK register  *******************/\n#define SDMMC_MASK_CCRCFAILIE_Pos        (0U)\n#define SDMMC_MASK_CCRCFAILIE_Msk        (0x1UL << SDMMC_MASK_CCRCFAILIE_Pos)  /*!< 0x00000001 */\n#define SDMMC_MASK_CCRCFAILIE            SDMMC_MASK_CCRCFAILIE_Msk             /*!<Command CRC Fail Interrupt Enable          */\n#define SDMMC_MASK_DCRCFAILIE_Pos        (1U)\n#define SDMMC_MASK_DCRCFAILIE_Msk        (0x1UL << SDMMC_MASK_DCRCFAILIE_Pos)  /*!< 0x00000002 */\n#define SDMMC_MASK_DCRCFAILIE            SDMMC_MASK_DCRCFAILIE_Msk             /*!<Data CRC Fail Interrupt Enable             */\n#define SDMMC_MASK_CTIMEOUTIE_Pos        (2U)\n#define SDMMC_MASK_CTIMEOUTIE_Msk        (0x1UL << SDMMC_MASK_CTIMEOUTIE_Pos)  /*!< 0x00000004 */\n#define SDMMC_MASK_CTIMEOUTIE            SDMMC_MASK_CTIMEOUTIE_Msk             /*!<Command TimeOut Interrupt Enable           */\n#define SDMMC_MASK_DTIMEOUTIE_Pos        (3U)\n#define SDMMC_MASK_DTIMEOUTIE_Msk        (0x1UL << SDMMC_MASK_DTIMEOUTIE_Pos)  /*!< 0x00000008 */\n#define SDMMC_MASK_DTIMEOUTIE            SDMMC_MASK_DTIMEOUTIE_Msk             /*!<Data TimeOut Interrupt Enable              */\n#define SDMMC_MASK_TXUNDERRIE_Pos        (4U)\n#define SDMMC_MASK_TXUNDERRIE_Msk        (0x1UL << SDMMC_MASK_TXUNDERRIE_Pos)  /*!< 0x00000010 */\n#define SDMMC_MASK_TXUNDERRIE            SDMMC_MASK_TXUNDERRIE_Msk             /*!<Tx FIFO UnderRun Error Interrupt Enable    */\n#define SDMMC_MASK_RXOVERRIE_Pos         (5U)\n#define SDMMC_MASK_RXOVERRIE_Msk         (0x1UL << SDMMC_MASK_RXOVERRIE_Pos)   /*!< 0x00000020 */\n#define SDMMC_MASK_RXOVERRIE             SDMMC_MASK_RXOVERRIE_Msk              /*!<Rx FIFO OverRun Error Interrupt Enable     */\n#define SDMMC_MASK_CMDRENDIE_Pos         (6U)\n#define SDMMC_MASK_CMDRENDIE_Msk         (0x1UL << SDMMC_MASK_CMDRENDIE_Pos)   /*!< 0x00000040 */\n#define SDMMC_MASK_CMDRENDIE             SDMMC_MASK_CMDRENDIE_Msk              /*!<Command Response Received Interrupt Enable */\n#define SDMMC_MASK_CMDSENTIE_Pos         (7U)\n#define SDMMC_MASK_CMDSENTIE_Msk         (0x1UL << SDMMC_MASK_CMDSENTIE_Pos)   /*!< 0x00000080 */\n#define SDMMC_MASK_CMDSENTIE             SDMMC_MASK_CMDSENTIE_Msk              /*!<Command Sent Interrupt Enable              */\n#define SDMMC_MASK_DATAENDIE_Pos         (8U)\n#define SDMMC_MASK_DATAENDIE_Msk         (0x1UL << SDMMC_MASK_DATAENDIE_Pos)   /*!< 0x00000100 */\n#define SDMMC_MASK_DATAENDIE             SDMMC_MASK_DATAENDIE_Msk              /*!<Data End Interrupt Enable                  */\n#define SDMMC_MASK_DHOLDIE_Pos           (9U)\n#define SDMMC_MASK_DHOLDIE_Msk           (0x1UL << SDMMC_MASK_DHOLDIE_Pos)     /*!< 0x00000200 */\n#define SDMMC_MASK_DHOLDIE               SDMMC_MASK_DHOLDIE_Msk                /*!<Data Hold Interrupt Enable                 */\n#define SDMMC_MASK_DBCKENDIE_Pos         (10U)\n#define SDMMC_MASK_DBCKENDIE_Msk         (0x1UL << SDMMC_MASK_DBCKENDIE_Pos)   /*!< 0x00000400 */\n#define SDMMC_MASK_DBCKENDIE             SDMMC_MASK_DBCKENDIE_Msk              /*!<Data Block End Interrupt Enable            */\n#define SDMMC_MASK_DABORTIE_Pos          (11U)\n#define SDMMC_MASK_DABORTIE_Msk          (0x1UL << SDMMC_MASK_DABORTIE_Pos)    /*!< 0x00000800 */\n#define SDMMC_MASK_DABORTIE              SDMMC_MASK_DABORTIE_Msk               /*!<Data transfer aborted interrupt enable     */\n\n#define SDMMC_MASK_TXFIFOHEIE_Pos        (14U)\n#define SDMMC_MASK_TXFIFOHEIE_Msk        (0x1UL << SDMMC_MASK_TXFIFOHEIE_Pos)  /*!< 0x00004000 */\n#define SDMMC_MASK_TXFIFOHEIE            SDMMC_MASK_TXFIFOHEIE_Msk             /*!<Tx FIFO Half Empty interrupt Enable        */\n#define SDMMC_MASK_RXFIFOHFIE_Pos        (15U)\n#define SDMMC_MASK_RXFIFOHFIE_Msk        (0x1UL << SDMMC_MASK_RXFIFOHFIE_Pos)  /*!< 0x00008000 */\n#define SDMMC_MASK_RXFIFOHFIE            SDMMC_MASK_RXFIFOHFIE_Msk             /*!<Rx FIFO Half Full interrupt Enable         */\n\n#define SDMMC_MASK_RXFIFOFIE_Pos         (17U)\n#define SDMMC_MASK_RXFIFOFIE_Msk         (0x1UL << SDMMC_MASK_RXFIFOFIE_Pos)   /*!< 0x00020000 */\n#define SDMMC_MASK_RXFIFOFIE             SDMMC_MASK_RXFIFOFIE_Msk              /*!<Rx FIFO Full interrupt Enable              */\n#define SDMMC_MASK_TXFIFOEIE_Pos         (18U)\n#define SDMMC_MASK_TXFIFOEIE_Msk         (0x1UL << SDMMC_MASK_TXFIFOEIE_Pos)   /*!< 0x00040000 */\n#define SDMMC_MASK_TXFIFOEIE             SDMMC_MASK_TXFIFOEIE_Msk              /*!<Tx FIFO Empty interrupt Enable             */\n\n#define SDMMC_MASK_BUSYD0ENDIE_Pos       (21U)\n#define SDMMC_MASK_BUSYD0ENDIE_Msk       (0x1UL << SDMMC_MASK_BUSYD0ENDIE_Pos) /*!< 0x00200000 */\n#define SDMMC_MASK_BUSYD0ENDIE           SDMMC_MASK_BUSYD0ENDIE_Msk            /*!<BUSYD0ENDIE interrupt Enable */\n#define SDMMC_MASK_SDIOITIE_Pos           (22U)\n#define SDMMC_MASK_SDIOITIE_Msk           (0x1UL << SDMMC_MASK_SDIOITIE_Pos)     /*!< 0x00400000 */\n#define SDMMC_MASK_SDIOITIE               SDMMC_MASK_SDIOITIE_Msk                /*!<SDMMC Mode Interrupt Received interrupt Enable */\n#define SDMMC_MASK_ACKFAILIE_Pos         (23U)\n#define SDMMC_MASK_ACKFAILIE_Msk         (0x1UL << SDMMC_MASK_ACKFAILIE_Pos)   /*!< 0x00800000 */\n#define SDMMC_MASK_ACKFAILIE             SDMMC_MASK_ACKFAILIE_Msk              /*!<Acknowledgment Fail Interrupt Enable */\n#define SDMMC_MASK_ACKTIMEOUTIE_Pos      (24U)\n#define SDMMC_MASK_ACKTIMEOUTIE_Msk      (0x1UL << SDMMC_MASK_ACKTIMEOUTIE_Pos) /*!< 0x01000000 */\n#define SDMMC_MASK_ACKTIMEOUTIE          SDMMC_MASK_ACKTIMEOUTIE_Msk           /*!<Acknowledgment timeout Interrupt Enable */\n#define SDMMC_MASK_VSWENDIE_Pos          (25U)\n#define SDMMC_MASK_VSWENDIE_Msk          (0x1UL << SDMMC_MASK_VSWENDIE_Pos)    /*!< 0x02000000 */\n#define SDMMC_MASK_VSWENDIE              SDMMC_MASK_VSWENDIE_Msk               /*!<Voltage switch critical timing section completion Interrupt Enable */\n#define SDMMC_MASK_CKSTOPIE_Pos          (26U)\n#define SDMMC_MASK_CKSTOPIE_Msk          (0x1UL << SDMMC_MASK_CKSTOPIE_Pos)    /*!< 0x04000000 */\n#define SDMMC_MASK_CKSTOPIE              SDMMC_MASK_CKSTOPIE_Msk               /*!<Voltage Switch clock stopped Interrupt Enable */\n#define SDMMC_MASK_IDMABTCIE_Pos         (28U)\n#define SDMMC_MASK_IDMABTCIE_Msk         (0x1UL << SDMMC_MASK_IDMABTCIE_Pos)   /*!< 0x10000000 */\n#define SDMMC_MASK_IDMABTCIE             SDMMC_MASK_IDMABTCIE_Msk              /*!<IDMA buffer transfer complete Interrupt Enable */\n\n/*****************  Bit definition for SDMMC_ACKTIME register  *****************/\n#define SDMMC_ACKTIME_ACKTIME_Pos        (0U)\n#define SDMMC_ACKTIME_ACKTIME_Msk        (0x1FFFFFFUL << SDMMC_ACKTIME_ACKTIME_Pos) /*!< 0x01FFFFFF */\n#define SDMMC_ACKTIME_ACKTIME            SDMMC_ACKTIME_ACKTIME_Msk             /*!<Boot acknowledgment timeout period */\n\n/******************  Bit definition for SDMMC_FIFO register  *******************/\n#define SDMMC_FIFO_FIFODATA_Pos          (0U)\n#define SDMMC_FIFO_FIFODATA_Msk          (0xFFFFFFFFUL << SDMMC_FIFO_FIFODATA_Pos) /*!< 0xFFFFFFFF */\n#define SDMMC_FIFO_FIFODATA              SDMMC_FIFO_FIFODATA_Msk               /*!<Receive and transmit FIFO data */\n\n/******************  Bit definition for SDMMC_IDMACTRL register ****************/\n#define SDMMC_IDMA_IDMAEN_Pos            (0U)\n#define SDMMC_IDMA_IDMAEN_Msk            (0x1UL << SDMMC_IDMA_IDMAEN_Pos)      /*!< 0x00000001 */\n#define SDMMC_IDMA_IDMAEN                SDMMC_IDMA_IDMAEN_Msk                 /*!< Enable the internal DMA of the SDMMC peripheral */\n#define SDMMC_IDMA_IDMABMODE_Pos         (1U)\n#define SDMMC_IDMA_IDMABMODE_Msk         (0x1UL << SDMMC_IDMA_IDMABMODE_Pos)   /*!< 0x00000002 */\n#define SDMMC_IDMA_IDMABMODE             SDMMC_IDMA_IDMABMODE_Msk              /*!< Enable double buffer mode for IDMA */\n#define SDMMC_IDMA_IDMABACT_Pos          (2U)\n#define SDMMC_IDMA_IDMABACT_Msk          (0x1UL << SDMMC_IDMA_IDMABACT_Pos)    /*!< 0x00000004 */\n#define SDMMC_IDMA_IDMABACT              SDMMC_IDMA_IDMABACT_Msk               /*!< Uses buffer 1 when double buffer mode is selected */\n\n/*****************  Bit definition for SDMMC_IDMABSIZE register  ***************/\n#define SDMMC_IDMABSIZE_IDMABNDT_Pos     (5U)\n#define SDMMC_IDMABSIZE_IDMABNDT_Msk     (0xFFUL << SDMMC_IDMABSIZE_IDMABNDT_Pos) /*!< 0x00001FE0 */\n#define SDMMC_IDMABSIZE_IDMABNDT         SDMMC_IDMABSIZE_IDMABNDT_Msk          /*!< Number of transfers per buffer */\n\n/*****************  Bit definition for SDMMC_IDMABASE0 register  ***************/\n#define SDMMC_IDMABASE0_IDMABASE0        ((uint32_t)0xFFFFFFFF)                /*!< Buffer 0 memory base address */\n\n/*****************  Bit definition for SDMMC_IDMABASE1 register  ***************/\n#define SDMMC_IDMABASE1_IDMABASE1        ((uint32_t)0xFFFFFFFF)                /*!< Buffer 1 memory base address */\n\n/******************************************************************************/\n/*                                                                            */\n/*                        Delay Block Interface (DLYB)                        */\n/*                                                                            */\n/******************************************************************************/\n/*******************  Bit definition for DLYB_CR register  ********************/\n#define DLYB_CR_DEN_Pos         (0U)\n#define DLYB_CR_DEN_Msk         (0x1UL << DLYB_CR_DEN_Pos)                     /*!< 0x00000001 */\n#define DLYB_CR_DEN             DLYB_CR_DEN_Msk                                /*!<Delay Block enable */\n#define DLYB_CR_SEN_Pos         (1U)\n#define DLYB_CR_SEN_Msk         (0x1UL << DLYB_CR_SEN_Pos)                     /*!< 0x00000002 */\n#define DLYB_CR_SEN             DLYB_CR_SEN_Msk                                /*!<Sampler length enable */\n\n\n/*******************  Bit definition for DLYB_CFGR register  ********************/\n#define DLYB_CFGR_SEL_Pos       (0U)\n#define DLYB_CFGR_SEL_Msk       (0xFUL << DLYB_CFGR_SEL_Pos)                   /*!< 0x0000000F */\n#define DLYB_CFGR_SEL           DLYB_CFGR_SEL_Msk                              /*!<Select the phase for the Output clock[3:0] */\n#define DLYB_CFGR_SEL_0         (0x1UL << DLYB_CFGR_SEL_Pos)                    /*!< 0x00000001 */\n#define DLYB_CFGR_SEL_1         (0x2UL << DLYB_CFGR_SEL_Pos)                    /*!< 0x00000002 */\n#define DLYB_CFGR_SEL_2         (0x3UL << DLYB_CFGR_SEL_Pos)                    /*!< 0x00000003 */\n#define DLYB_CFGR_SEL_3         (0x8UL << DLYB_CFGR_SEL_Pos)                    /*!< 0x00000008 */\n\n#define DLYB_CFGR_UNIT_Pos      (8U)\n#define DLYB_CFGR_UNIT_Msk      (0x7FUL << DLYB_CFGR_UNIT_Pos)                 /*!< 0x00007F00 */\n#define DLYB_CFGR_UNIT          DLYB_CFGR_UNIT_Msk                             /*!<Delay Defines the delay of a Unit delay cell[6:0] */\n#define DLYB_CFGR_UNIT_0        (0x01UL << DLYB_CFGR_UNIT_Pos)                  /*!< 0x00000100 */\n#define DLYB_CFGR_UNIT_1        (0x02UL << DLYB_CFGR_UNIT_Pos)                  /*!< 0x00000200 */\n#define DLYB_CFGR_UNIT_2        (0x04UL << DLYB_CFGR_UNIT_Pos)                  /*!< 0x00000400 */\n#define DLYB_CFGR_UNIT_3        (0x08UL << DLYB_CFGR_UNIT_Pos)                  /*!< 0x00000800 */\n#define DLYB_CFGR_UNIT_4        (0x10UL << DLYB_CFGR_UNIT_Pos)                  /*!< 0x00001000 */\n#define DLYB_CFGR_UNIT_5        (0x20UL << DLYB_CFGR_UNIT_Pos)                  /*!< 0x00002000 */\n#define DLYB_CFGR_UNIT_6        (0x40UL << DLYB_CFGR_UNIT_Pos)                  /*!< 0x00004000 */\n\n#define DLYB_CFGR_LNG_Pos       (16U)\n#define DLYB_CFGR_LNG_Msk       (0xFFFUL << DLYB_CFGR_LNG_Pos)                 /*!< 0x0FFF0000 */\n#define DLYB_CFGR_LNG           DLYB_CFGR_LNG_Msk                              /*!<Delay line length value[11:0] */\n#define DLYB_CFGR_LNG_0         (0x001UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00010000 */\n#define DLYB_CFGR_LNG_1         (0x002UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00020000 */\n#define DLYB_CFGR_LNG_2         (0x004UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00040000 */\n#define DLYB_CFGR_LNG_3         (0x008UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00080000 */\n#define DLYB_CFGR_LNG_4         (0x010UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00100000 */\n#define DLYB_CFGR_LNG_5         (0x020UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00200000 */\n#define DLYB_CFGR_LNG_6         (0x040UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00400000 */\n#define DLYB_CFGR_LNG_7         (0x080UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x00800000 */\n#define DLYB_CFGR_LNG_8         (0x100UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x01000000 */\n#define DLYB_CFGR_LNG_9         (0x200UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x02000000 */\n#define DLYB_CFGR_LNG_10        (0x400UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x04000000 */\n#define DLYB_CFGR_LNG_11        (0x800UL << DLYB_CFGR_LNG_Pos)                  /*!< 0x08000000 */\n\n#define DLYB_CFGR_LNGF_Pos      (31U)\n#define DLYB_CFGR_LNGF_Msk      (0x1UL << DLYB_CFGR_LNGF_Pos)                  /*!< 0x80000000 */\n#define DLYB_CFGR_LNGF          DLYB_CFGR_LNGF_Msk                             /*!<Length valid flag */\n\n/******************************************************************************/\n/*                                                                            */\n/*                   Serial Peripheral Interface (SPI/I2S)                    */\n/*                                                                            */\n/******************************************************************************/\n/*******************  Bit definition for SPI_CR1 register  ********************/\n#define SPI_CR1_SPE_Pos             (0U)\n#define SPI_CR1_SPE_Msk             (0x1UL << SPI_CR1_SPE_Pos)                 /*!< 0x00000001 */\n#define SPI_CR1_SPE                 SPI_CR1_SPE_Msk                            /*!<Serial Peripheral Enable                         */\n#define SPI_CR1_MASRX_Pos           (8U)\n#define SPI_CR1_MASRX_Msk           (0x1UL << SPI_CR1_MASRX_Pos)               /*!< 0x00000100 */\n#define SPI_CR1_MASRX               SPI_CR1_MASRX_Msk                          /*!<Master automatic SUSP in Receive mode            */\n#define SPI_CR1_CSTART_Pos          (9U)\n#define SPI_CR1_CSTART_Msk          (0x1UL << SPI_CR1_CSTART_Pos)              /*!< 0x00000200 */\n#define SPI_CR1_CSTART              SPI_CR1_CSTART_Msk                         /*!<Master transfer start                            */\n#define SPI_CR1_CSUSP_Pos           (10U)\n#define SPI_CR1_CSUSP_Msk           (0x1UL << SPI_CR1_CSUSP_Pos)               /*!< 0x00000400 */\n#define SPI_CR1_CSUSP               SPI_CR1_CSUSP_Msk                          /*!<Master SUSPend request                           */\n#define SPI_CR1_HDDIR_Pos           (11U)\n#define SPI_CR1_HDDIR_Msk           (0x1UL << SPI_CR1_HDDIR_Pos)               /*!< 0x00000800 */\n#define SPI_CR1_HDDIR               SPI_CR1_HDDIR_Msk                          /*!<Rx/Tx direction at Half-duplex mode              */\n#define SPI_CR1_SSI_Pos             (12U)\n#define SPI_CR1_SSI_Msk             (0x1UL << SPI_CR1_SSI_Pos)                 /*!< 0x00001000 */\n#define SPI_CR1_SSI                 SPI_CR1_SSI_Msk                            /*!<Internal SS signal input level                   */\n#define SPI_CR1_CRC33_17_Pos        (13U)\n#define SPI_CR1_CRC33_17_Msk        (0x1UL << SPI_CR1_CRC33_17_Pos)            /*!< 0x00002000 */\n#define SPI_CR1_CRC33_17             SPI_CR1_CRC33_17_Msk                      /*!<32-bit CRC polynomial configuration              */\n#define SPI_CR1_RCRCINI_Pos         (14U)\n#define SPI_CR1_RCRCINI_Msk         (0x1UL << SPI_CR1_RCRCINI_Pos)             /*!< 0x00004000 */\n#define SPI_CR1_RCRCINI             SPI_CR1_RCRCINI_Msk                        /*!<CRC init pattern control for receiver            */\n#define SPI_CR1_TCRCINI_Pos         (15U)\n#define SPI_CR1_TCRCINI_Msk         (0x1UL << SPI_CR1_TCRCINI_Pos)             /*!< 0x00008000 */\n#define SPI_CR1_TCRCINI             SPI_CR1_TCRCINI_Msk                        /*!<CRC init pattern control for transmitter         */\n#define SPI_CR1_IOLOCK_Pos          (16U)\n#define SPI_CR1_IOLOCK_Msk          (0x1UL << SPI_CR1_IOLOCK_Pos)              /*!< 0x00010000 */\n#define SPI_CR1_IOLOCK              SPI_CR1_IOLOCK_Msk                         /*!<Locking the AF configuration of associated IOs   */\n\n/*******************  Bit definition for SPI_CR2 register  ********************/\n#define SPI_CR2_TSER_Pos            (16U)\n#define SPI_CR2_TSER_Msk            (0xFFFFUL << SPI_CR2_TSER_Pos)             /*!< 0xFFFF0000 */\n#define SPI_CR2_TSER                SPI_CR2_TSER_Msk                           /*!<Number of data transfer extension                */\n#define SPI_CR2_TSIZE_Pos           (0U)\n#define SPI_CR2_TSIZE_Msk           (0xFFFFUL << SPI_CR2_TSIZE_Pos)            /*!< 0x0000FFFF */\n#define SPI_CR2_TSIZE               SPI_CR2_TSIZE_Msk                          /*!<Number of data at current transfer               */\n\n/*******************  Bit definition for SPI_CFG1 register  ********************/\n#define SPI_CFG1_DSIZE_Pos          (0U)\n#define SPI_CFG1_DSIZE_Msk          (0x1FUL << SPI_CFG1_DSIZE_Pos)             /*!< 0x0000001F */\n#define SPI_CFG1_DSIZE              SPI_CFG1_DSIZE_Msk                         /*!<DSIZE[4:0]: Bits number in single SPI data frame */\n#define SPI_CFG1_DSIZE_0            (0x01UL << SPI_CFG1_DSIZE_Pos)              /*!< 0x00000001 */\n#define SPI_CFG1_DSIZE_1            (0x02UL << SPI_CFG1_DSIZE_Pos)              /*!< 0x00000002 */\n#define SPI_CFG1_DSIZE_2            (0x04UL << SPI_CFG1_DSIZE_Pos)              /*!< 0x00000004 */\n#define SPI_CFG1_DSIZE_3            (0x08UL << SPI_CFG1_DSIZE_Pos)              /*!< 0x00000008 */\n#define SPI_CFG1_DSIZE_4            (0x10UL << SPI_CFG1_DSIZE_Pos)              /*!< 0x00000010 */\n\n#define SPI_CFG1_FTHLV_Pos          (5U)\n#define SPI_CFG1_FTHLV_Msk          (0xFUL << SPI_CFG1_FTHLV_Pos)              /*!< 0x000001E0 */\n#define SPI_CFG1_FTHLV              SPI_CFG1_FTHLV_Msk                         /*!<FTHVL [3:0]: FIFO threshold level*/\n#define SPI_CFG1_FTHLV_0            (0x1UL << SPI_CFG1_FTHLV_Pos)               /*!< 0x00000020 */\n#define SPI_CFG1_FTHLV_1            (0x2UL << SPI_CFG1_FTHLV_Pos)               /*!< 0x00000040 */\n#define SPI_CFG1_FTHLV_2            (0x4UL << SPI_CFG1_FTHLV_Pos)               /*!< 0x00000080 */\n#define SPI_CFG1_FTHLV_3            (0x8UL << SPI_CFG1_FTHLV_Pos)               /*!< 0x00000100 */\n\n#define SPI_CFG1_UDRCFG_Pos         (9U)\n#define SPI_CFG1_UDRCFG_Msk         (0x3UL << SPI_CFG1_UDRCFG_Pos)             /*!< 0x00000600 */\n#define SPI_CFG1_UDRCFG             SPI_CFG1_UDRCFG_Msk                        /*!<UDRCFG[1:0]: Behavior of transmitter at underrun */\n#define SPI_CFG1_UDRCFG_0           (0x1UL << SPI_CFG1_UDRCFG_Pos)              /*!< 0x00000200 */\n#define SPI_CFG1_UDRCFG_1           (0x2UL << SPI_CFG1_UDRCFG_Pos)              /*!< 0x00000400 */\n\n\n#define SPI_CFG1_UDRDET_Pos         (11U)\n#define SPI_CFG1_UDRDET_Msk         (0x3UL << SPI_CFG1_UDRDET_Pos)             /*!< 0x00001800 */\n#define SPI_CFG1_UDRDET             SPI_CFG1_UDRDET_Msk                        /*!<UDRDET[1:0]: Detection of underrun condition     */\n#define SPI_CFG1_UDRDET_0           (0x1UL << SPI_CFG1_UDRDET_Pos)              /*!< 0x00000800 */\n#define SPI_CFG1_UDRDET_1           (0x2UL << SPI_CFG1_UDRDET_Pos)              /*!< 0x00001000 */\n\n#define SPI_CFG1_RXDMAEN_Pos        (14U)\n#define SPI_CFG1_RXDMAEN_Msk        (0x1UL << SPI_CFG1_RXDMAEN_Pos)            /*!< 0x00004000 */\n#define SPI_CFG1_RXDMAEN            SPI_CFG1_RXDMAEN_Msk                       /*!<Rx DMA stream enable                */\n#define SPI_CFG1_TXDMAEN_Pos        (15U)\n#define SPI_CFG1_TXDMAEN_Msk        (0x1UL << SPI_CFG1_TXDMAEN_Pos)            /*!< 0x00008000 */\n#define SPI_CFG1_TXDMAEN            SPI_CFG1_TXDMAEN_Msk                       /*!<Tx DMA stream enable                */\n\n#define SPI_CFG1_CRCSIZE_Pos        (16U)\n#define SPI_CFG1_CRCSIZE_Msk        (0x1FUL << SPI_CFG1_CRCSIZE_Pos)           /*!< 0x001F0000 */\n#define SPI_CFG1_CRCSIZE            SPI_CFG1_CRCSIZE_Msk                       /*!<CRCSIZE [4:0]: Length of CRC frame*/\n#define SPI_CFG1_CRCSIZE_0          (0x01UL << SPI_CFG1_CRCSIZE_Pos)            /*!< 0x00010000 */\n#define SPI_CFG1_CRCSIZE_1          (0x02UL << SPI_CFG1_CRCSIZE_Pos)            /*!< 0x00020000 */\n#define SPI_CFG1_CRCSIZE_2          (0x04UL << SPI_CFG1_CRCSIZE_Pos)            /*!< 0x00040000 */\n#define SPI_CFG1_CRCSIZE_3          (0x08UL << SPI_CFG1_CRCSIZE_Pos)            /*!< 0x00080000 */\n#define SPI_CFG1_CRCSIZE_4          (0x10UL << SPI_CFG1_CRCSIZE_Pos)            /*!< 0x00100000 */\n\n#define SPI_CFG1_CRCEN_Pos          (22U)\n#define SPI_CFG1_CRCEN_Msk          (0x1UL << SPI_CFG1_CRCEN_Pos)              /*!< 0x00400000 */\n#define SPI_CFG1_CRCEN              SPI_CFG1_CRCEN_Msk                         /*!<Hardware CRC computation enable */\n\n#define SPI_CFG1_MBR_Pos            (28U)\n#define SPI_CFG1_MBR_Msk            (0x7UL << SPI_CFG1_MBR_Pos)                /*!< 0x70000000 */\n#define SPI_CFG1_MBR                SPI_CFG1_MBR_Msk                           /*!<Master baud rate                */\n#define SPI_CFG1_MBR_0              (0x1UL << SPI_CFG1_MBR_Pos)                 /*!< 0x10000000 */\n#define SPI_CFG1_MBR_1              (0x2UL << SPI_CFG1_MBR_Pos)                 /*!< 0x20000000 */\n#define SPI_CFG1_MBR_2              (0x4UL << SPI_CFG1_MBR_Pos)                 /*!< 0x40000000 */\n\n/*******************  Bit definition for SPI_CFG2 register  ********************/\n#define SPI_CFG2_MSSI_Pos           (0U)\n#define SPI_CFG2_MSSI_Msk           (0xFUL << SPI_CFG2_MSSI_Pos)               /*!< 0x0000000F */\n#define SPI_CFG2_MSSI               SPI_CFG2_MSSI_Msk                          /*!<Master SS Idleness */\n#define SPI_CFG2_MSSI_0             (0x1UL << SPI_CFG2_MSSI_Pos)                /*!< 0x00000001 */\n#define SPI_CFG2_MSSI_1             (0x2UL << SPI_CFG2_MSSI_Pos)                /*!< 0x00000002 */\n#define SPI_CFG2_MSSI_2             (0x4UL << SPI_CFG2_MSSI_Pos)                /*!< 0x00000004 */\n#define SPI_CFG2_MSSI_3             (0x8UL << SPI_CFG2_MSSI_Pos)                /*!< 0x00000008 */\n\n#define SPI_CFG2_MIDI_Pos           (4U)\n#define SPI_CFG2_MIDI_Msk           (0xFUL << SPI_CFG2_MIDI_Pos)               /*!< 0x000000F0 */\n#define SPI_CFG2_MIDI               SPI_CFG2_MIDI_Msk                          /*!<Master Inter-Data Idleness */\n#define SPI_CFG2_MIDI_0             (0x1UL << SPI_CFG2_MIDI_Pos)                /*!< 0x00000010 */\n#define SPI_CFG2_MIDI_1             (0x2UL << SPI_CFG2_MIDI_Pos)                /*!< 0x00000020 */\n#define SPI_CFG2_MIDI_2             (0x4UL << SPI_CFG2_MIDI_Pos)                /*!< 0x00000040 */\n#define SPI_CFG2_MIDI_3             (0x8UL << SPI_CFG2_MIDI_Pos)                /*!< 0x00000080 */\n\n#define SPI_CFG2_IOSWP_Pos          (15U)\n#define SPI_CFG2_IOSWP_Msk          (0x1UL << SPI_CFG2_IOSWP_Pos)              /*!< 0x00008000 */\n#define SPI_CFG2_IOSWP              SPI_CFG2_IOSWP_Msk                         /*!<Swap functionality of MISO and MOSI pins */\n\n#define SPI_CFG2_COMM_Pos           (17U)\n#define SPI_CFG2_COMM_Msk           (0x3UL << SPI_CFG2_COMM_Pos)               /*!< 0x00060000 */\n#define SPI_CFG2_COMM               SPI_CFG2_COMM_Msk                          /*!<COMM [1:0]: SPI Communication Mode*/\n#define SPI_CFG2_COMM_0             (0x1UL << SPI_CFG2_COMM_Pos)                /*!< 0x00020000 */\n#define SPI_CFG2_COMM_1             (0x2UL << SPI_CFG2_COMM_Pos)                /*!< 0x00040000 */\n\n#define SPI_CFG2_SP_Pos             (19U)\n#define SPI_CFG2_SP_Msk             (0x7UL << SPI_CFG2_SP_Pos)                 /*!< 0x00380000 */\n#define SPI_CFG2_SP                 SPI_CFG2_SP_Msk                            /*!<SP[2:0]: Serial Protocol */\n#define SPI_CFG2_SP_0               (0x1UL << SPI_CFG2_SP_Pos)                  /*!< 0x00080000 */\n#define SPI_CFG2_SP_1               (0x2UL << SPI_CFG2_SP_Pos)                  /*!< 0x00100000 */\n#define SPI_CFG2_SP_2               (0x4UL << SPI_CFG2_SP_Pos)                  /*!< 0x00200000 */\n\n#define SPI_CFG2_MASTER_Pos         (22U)\n#define SPI_CFG2_MASTER_Msk         (0x1UL << SPI_CFG2_MASTER_Pos)             /*!< 0x00400000 */\n#define SPI_CFG2_MASTER             SPI_CFG2_MASTER_Msk                        /*!<SPI Master           */\n#define SPI_CFG2_LSBFRST_Pos        (23U)\n#define SPI_CFG2_LSBFRST_Msk        (0x1UL << SPI_CFG2_LSBFRST_Pos)            /*!< 0x00800000 */\n#define SPI_CFG2_LSBFRST            SPI_CFG2_LSBFRST_Msk                       /*!<Data frame format               */\n#define SPI_CFG2_CPHA_Pos           (24U)\n#define SPI_CFG2_CPHA_Msk           (0x1UL << SPI_CFG2_CPHA_Pos)               /*!< 0x01000000 */\n#define SPI_CFG2_CPHA               SPI_CFG2_CPHA_Msk                          /*!<Clock Phase      */\n#define SPI_CFG2_CPOL_Pos           (25U)\n#define SPI_CFG2_CPOL_Msk           (0x1UL << SPI_CFG2_CPOL_Pos)               /*!< 0x02000000 */\n#define SPI_CFG2_CPOL               SPI_CFG2_CPOL_Msk                          /*!<Clock Polarity   */\n#define SPI_CFG2_SSM_Pos            (26U)\n#define SPI_CFG2_SSM_Msk            (0x1UL << SPI_CFG2_SSM_Pos)                /*!< 0x04000000 */\n#define SPI_CFG2_SSM                SPI_CFG2_SSM_Msk                           /*!<Software slave management */\n\n#define SPI_CFG2_SSIOP_Pos          (28U)\n#define SPI_CFG2_SSIOP_Msk          (0x1UL << SPI_CFG2_SSIOP_Pos)              /*!< 0x10000000 */\n#define SPI_CFG2_SSIOP              SPI_CFG2_SSIOP_Msk                         /*!<SS input/output polarity */\n#define SPI_CFG2_SSOE_Pos           (29U)\n#define SPI_CFG2_SSOE_Msk           (0x1UL << SPI_CFG2_SSOE_Pos)               /*!< 0x20000000 */\n#define SPI_CFG2_SSOE               SPI_CFG2_SSOE_Msk                          /*!<SS output enable */\n#define SPI_CFG2_SSOM_Pos           (30U)\n#define SPI_CFG2_SSOM_Msk           (0x1UL << SPI_CFG2_SSOM_Pos)               /*!< 0x40000000 */\n#define SPI_CFG2_SSOM               SPI_CFG2_SSOM_Msk                          /*!<SS output management in master mode */\n\n#define SPI_CFG2_AFCNTR_Pos         (31U)\n#define SPI_CFG2_AFCNTR_Msk         (0x1UL << SPI_CFG2_AFCNTR_Pos)             /*!< 0x80000000 */\n#define SPI_CFG2_AFCNTR             SPI_CFG2_AFCNTR_Msk                        /*!<Alternate function GPIOs control */\n\n/*******************  Bit definition for SPI_IER register  ********************/\n#define SPI_IER_RXPIE_Pos           (0U)\n#define SPI_IER_RXPIE_Msk           (0x1UL << SPI_IER_RXPIE_Pos)               /*!< 0x00000001 */\n#define SPI_IER_RXPIE               SPI_IER_RXPIE_Msk                          /*!<RXP Interrupt Enable            */\n#define SPI_IER_TXPIE_Pos           (1U)\n#define SPI_IER_TXPIE_Msk           (0x1UL << SPI_IER_TXPIE_Pos)               /*!< 0x00000002 */\n#define SPI_IER_TXPIE               SPI_IER_TXPIE_Msk                          /*!<TXP interrupt enable            */\n#define SPI_IER_DXPIE_Pos           (2U)\n#define SPI_IER_DXPIE_Msk           (0x1UL << SPI_IER_DXPIE_Pos)               /*!< 0x00000004 */\n#define SPI_IER_DXPIE               SPI_IER_DXPIE_Msk                          /*!<DXP interrupt enable            */\n#define SPI_IER_EOTIE_Pos           (3U)\n#define SPI_IER_EOTIE_Msk           (0x1UL << SPI_IER_EOTIE_Pos)               /*!< 0x00000008 */\n#define SPI_IER_EOTIE               SPI_IER_EOTIE_Msk                          /*!<EOT/SUSP/TXC interrupt enable   */\n#define SPI_IER_TXTFIE_Pos          (4U)\n#define SPI_IER_TXTFIE_Msk          (0x1UL << SPI_IER_TXTFIE_Pos)              /*!< 0x00000010 */\n#define SPI_IER_TXTFIE              SPI_IER_TXTFIE_Msk                         /*!<TXTF interrupt enable           */\n#define SPI_IER_UDRIE_Pos           (5U)\n#define SPI_IER_UDRIE_Msk           (0x1UL << SPI_IER_UDRIE_Pos)               /*!< 0x00000020 */\n#define SPI_IER_UDRIE               SPI_IER_UDRIE_Msk                          /*!<UDR interrupt enable            */\n#define SPI_IER_OVRIE_Pos           (6U)\n#define SPI_IER_OVRIE_Msk           (0x1UL << SPI_IER_OVRIE_Pos)               /*!< 0x00000040 */\n#define SPI_IER_OVRIE               SPI_IER_OVRIE_Msk                          /*!<OVR interrupt enable            */\n#define SPI_IER_CRCEIE_Pos          (7U)\n#define SPI_IER_CRCEIE_Msk          (0x1UL << SPI_IER_CRCEIE_Pos)               /*!< 0x00000080 */\n#define SPI_IER_CRCEIE              SPI_IER_CRCEIE_Msk                          /*!<CRCE interrupt enable           */\n#define SPI_IER_TIFREIE_Pos         (8U)\n#define SPI_IER_TIFREIE_Msk         (0x1UL << SPI_IER_TIFREIE_Pos)             /*!< 0x00000100 */\n#define SPI_IER_TIFREIE             SPI_IER_TIFREIE_Msk                        /*!<TI Frame Error interrupt enable */\n#define SPI_IER_MODFIE_Pos          (9U)\n#define SPI_IER_MODFIE_Msk          (0x1UL << SPI_IER_MODFIE_Pos)              /*!< 0x00000200 */\n#define SPI_IER_MODFIE              SPI_IER_MODFIE_Msk                         /*!<MODF interrupt enable           */\n#define SPI_IER_TSERFIE_Pos         (10U)\n#define SPI_IER_TSERFIE_Msk         (0x1UL << SPI_IER_TSERFIE_Pos)              /*!< 0x00000400 */\n#define SPI_IER_TSERFIE             SPI_IER_TSERFIE_Msk                        /*!<TSERF interrupt enable          */\n\n/*******************  Bit definition for SPI_SR register  ********************/\n#define SPI_SR_RXP_Pos              (0U)\n#define SPI_SR_RXP_Msk              (0x1UL << SPI_SR_RXP_Pos)                  /*!< 0x00000001 */\n#define SPI_SR_RXP                  SPI_SR_RXP_Msk                             /*!<Rx-Packet available             */\n#define SPI_SR_TXP_Pos              (1U)\n#define SPI_SR_TXP_Msk              (0x1UL << SPI_SR_TXP_Pos)                  /*!< 0x00000002 */\n#define SPI_SR_TXP                  SPI_SR_TXP_Msk                             /*!<Tx-Packet space available       */\n#define SPI_SR_DXP_Pos              (2U)\n#define SPI_SR_DXP_Msk              (0x1UL << SPI_SR_DXP_Pos)                  /*!< 0x00000004 */\n#define SPI_SR_DXP                  SPI_SR_DXP_Msk                             /*!<Duplex Packet available         */\n#define SPI_SR_EOT_Pos              (3U)\n#define SPI_SR_EOT_Msk              (0x1UL << SPI_SR_EOT_Pos)                  /*!< 0x00000008 */\n#define SPI_SR_EOT                  SPI_SR_EOT_Msk                             /*!<Duplex Packet available         */\n#define SPI_SR_TXTF_Pos             (4U)\n#define SPI_SR_TXTF_Msk             (0x1UL << SPI_SR_TXTF_Pos)                 /*!< 0x00000010 */\n#define SPI_SR_TXTF                 SPI_SR_TXTF_Msk                            /*!<Transmission Transfer Filled    */\n#define SPI_SR_UDR_Pos              (5U)\n#define SPI_SR_UDR_Msk              (0x1UL << SPI_SR_UDR_Pos)                  /*!< 0x00000020 */\n#define SPI_SR_UDR                  SPI_SR_UDR_Msk                             /*!<UDR at Slave transmission       */\n#define SPI_SR_OVR_Pos              (6U)\n#define SPI_SR_OVR_Msk              (0x1UL << SPI_SR_OVR_Pos)                  /*!< 0x00000040 */\n#define SPI_SR_OVR                  SPI_SR_OVR_Msk                             /*!<Rx-Packet available             */\n#define SPI_SR_CRCE_Pos             (7U)\n#define SPI_SR_CRCE_Msk             (0x1UL << SPI_SR_CRCE_Pos)                 /*!< 0x00000080 */\n#define SPI_SR_CRCE                 SPI_SR_CRCE_Msk                            /*!<CRC Error Detected              */\n#define SPI_SR_TIFRE_Pos            (8U)\n#define SPI_SR_TIFRE_Msk            (0x1UL << SPI_SR_TIFRE_Pos)                /*!< 0x00000100 */\n#define SPI_SR_TIFRE                SPI_SR_TIFRE_Msk                           /*!<TI frame format error Detected  */\n#define SPI_SR_MODF_Pos             (9U)\n#define SPI_SR_MODF_Msk             (0x1UL << SPI_SR_MODF_Pos)                 /*!< 0x00000200 */\n#define SPI_SR_MODF                 SPI_SR_MODF_Msk                            /*!<Mode Fault Detected             */\n#define SPI_SR_TSERF_Pos            (10U)\n#define SPI_SR_TSERF_Msk            (0x1UL << SPI_SR_TSERF_Pos)                /*!< 0x00000400 */\n#define SPI_SR_TSERF                SPI_SR_TSERF_Msk                           /*!<Number of SPI data to be transacted reloaded     */\n#define SPI_SR_SUSP_Pos             (11U)\n#define SPI_SR_SUSP_Msk             (0x1UL << SPI_SR_SUSP_Pos)                 /*!< 0x00000800 */\n#define SPI_SR_SUSP                 SPI_SR_SUSP_Msk                            /*!<SUSP is set by hardware  */\n#define SPI_SR_TXC_Pos              (12U)\n#define SPI_SR_TXC_Msk              (0x1UL << SPI_SR_TXC_Pos)                  /*!< 0x00001000 */\n#define SPI_SR_TXC                  SPI_SR_TXC_Msk                             /*!<TxFIFO transmission complete */\n#define SPI_SR_RXPLVL_Pos           (13U)\n#define SPI_SR_RXPLVL_Msk           (0x3UL << SPI_SR_RXPLVL_Pos)               /*!< 0x00006000 */\n#define SPI_SR_RXPLVL               SPI_SR_RXPLVL_Msk                          /*!<RxFIFO Packing Level                             */\n#define SPI_SR_RXPLVL_0             (0x1UL << SPI_SR_RXPLVL_Pos)                /*!< 0x00002000 */\n#define SPI_SR_RXPLVL_1             (0x2UL << SPI_SR_RXPLVL_Pos)                /*!< 0x00004000 */\n#define SPI_SR_RXWNE_Pos            (15U)\n#define SPI_SR_RXWNE_Msk            (0x1UL << SPI_SR_RXWNE_Pos)                /*!< 0x00008000 */\n#define SPI_SR_RXWNE                SPI_SR_RXWNE_Msk                           /*!<Rx FIFO Word Not Empty                           */\n#define SPI_SR_CTSIZE_Pos           (16U)\n#define SPI_SR_CTSIZE_Msk           (0xFFFFUL << SPI_SR_CTSIZE_Pos)            /*!< 0xFFFF0000 */\n#define SPI_SR_CTSIZE               SPI_SR_CTSIZE_Msk                          /*!<Number of data frames remaining in TSIZE         */\n\n/*******************  Bit definition for SPI_IFCR register  ********************/\n#define SPI_IFCR_EOTC_Pos           (3U)\n#define SPI_IFCR_EOTC_Msk           (0x1UL << SPI_IFCR_EOTC_Pos)               /*!< 0x00000008 */\n#define SPI_IFCR_EOTC               SPI_IFCR_EOTC_Msk                          /*!<End Of Transfer flag clear              */\n#define SPI_IFCR_TXTFC_Pos          (4U)\n#define SPI_IFCR_TXTFC_Msk          (0x1UL << SPI_IFCR_TXTFC_Pos)              /*!< 0x00000010 */\n#define SPI_IFCR_TXTFC              SPI_IFCR_TXTFC_Msk                         /*!<Transmission Transfer Filled flag clear */\n#define SPI_IFCR_UDRC_Pos           (5U)\n#define SPI_IFCR_UDRC_Msk           (0x1UL << SPI_IFCR_UDRC_Pos)               /*!< 0x00000020 */\n#define SPI_IFCR_UDRC               SPI_IFCR_UDRC_Msk                          /*!<Underrun flag clear                     */\n#define SPI_IFCR_OVRC_Pos           (6U)\n#define SPI_IFCR_OVRC_Msk           (0x1UL << SPI_IFCR_OVRC_Pos)               /*!< 0x00000040 */\n#define SPI_IFCR_OVRC               SPI_IFCR_OVRC_Msk                          /*!<Overrun flag clear                      */\n#define SPI_IFCR_CRCEC_Pos          (7U)\n#define SPI_IFCR_CRCEC_Msk          (0x1UL << SPI_IFCR_CRCEC_Pos)              /*!< 0x00000080 */\n#define SPI_IFCR_CRCEC              SPI_IFCR_CRCEC_Msk                         /*!<CRC Error flag clear                    */\n#define SPI_IFCR_TIFREC_Pos         (8U)\n#define SPI_IFCR_TIFREC_Msk         (0x1UL << SPI_IFCR_TIFREC_Pos)             /*!< 0x00000100 */\n#define SPI_IFCR_TIFREC             SPI_IFCR_TIFREC_Msk                        /*!<TI frame format error flag clear        */\n#define SPI_IFCR_MODFC_Pos          (9U)\n#define SPI_IFCR_MODFC_Msk          (0x1UL << SPI_IFCR_MODFC_Pos)              /*!< 0x00000200 */\n#define SPI_IFCR_MODFC              SPI_IFCR_MODFC_Msk                         /*!<Mode Fault flag clear                   */\n#define SPI_IFCR_TSERFC_Pos         (10U)\n#define SPI_IFCR_TSERFC_Msk         (0x1UL << SPI_IFCR_TSERFC_Pos)             /*!< 0x00000400 */\n#define SPI_IFCR_TSERFC             SPI_IFCR_TSERFC_Msk                        /*!<TSERFC flag clear                       */\n#define SPI_IFCR_SUSPC_Pos          (11U)\n#define SPI_IFCR_SUSPC_Msk          (0x1UL << SPI_IFCR_SUSPC_Pos)              /*!< 0x00000800 */\n#define SPI_IFCR_SUSPC              SPI_IFCR_SUSPC_Msk                         /*!<SUSPend flag clear                      */\n\n/*******************  Bit definition for SPI_TXDR register  ********************/\n#define SPI_TXDR_TXDR_Pos           (0U)\n#define SPI_TXDR_TXDR_Msk           (0xFFFFFFFFUL << SPI_TXDR_TXDR_Pos)        /*!< 0xFFFFFFFF */\n#define SPI_TXDR_TXDR               SPI_TXDR_TXDR_Msk                          /* Transmit Data Register */\n\n/*******************  Bit definition for SPI_RXDR register  ********************/\n#define SPI_RXDR_RXDR_Pos           (0U)\n#define SPI_RXDR_RXDR_Msk           (0xFFFFFFFFUL << SPI_RXDR_RXDR_Pos)        /*!< 0xFFFFFFFF */\n#define SPI_RXDR_RXDR               SPI_RXDR_RXDR_Msk                          /* Receive Data Register  */\n\n/*******************  Bit definition for SPI_CRCPOLY register  ********************/\n#define SPI_CRCPOLY_CRCPOLY_Pos     (0U)\n#define SPI_CRCPOLY_CRCPOLY_Msk     (0xFFFFFFFFUL << SPI_CRCPOLY_CRCPOLY_Pos)  /*!< 0xFFFFFFFF */\n#define SPI_CRCPOLY_CRCPOLY         SPI_CRCPOLY_CRCPOLY_Msk                    /* CRC Polynomial register  */\n\n/*******************  Bit definition for SPI_TXCRC register  ********************/\n#define SPI_TXCRC_TXCRC_Pos         (0U)\n#define SPI_TXCRC_TXCRC_Msk         (0xFFFFFFFFUL << SPI_TXCRC_TXCRC_Pos)      /*!< 0xFFFFFFFF */\n#define SPI_TXCRC_TXCRC             SPI_TXCRC_TXCRC_Msk                        /* CRCRegister for transmitter */\n\n/*******************  Bit definition for SPI_RXCRC register  ********************/\n#define SPI_RXCRC_RXCRC_Pos         (0U)\n#define SPI_RXCRC_RXCRC_Msk         (0xFFFFFFFFUL << SPI_RXCRC_RXCRC_Pos)      /*!< 0xFFFFFFFF */\n#define SPI_RXCRC_RXCRC             SPI_RXCRC_RXCRC_Msk                        /* CRCRegister for receiver */\n\n/*******************  Bit definition for SPI_UDRDR register  ********************/\n#define SPI_UDRDR_UDRDR_Pos         (0U)\n#define SPI_UDRDR_UDRDR_Msk         (0xFFFFFFFFUL << SPI_UDRDR_UDRDR_Pos)      /*!< 0xFFFFFFFF */\n#define SPI_UDRDR_UDRDR             SPI_UDRDR_UDRDR_Msk                        /* Data at slave underrun condition */\n\n/******************  Bit definition for SPI_I2SCFGR register  *****************/\n#define SPI_I2SCFGR_I2SMOD_Pos      (0U)\n#define SPI_I2SCFGR_I2SMOD_Msk      (0x1UL << SPI_I2SCFGR_I2SMOD_Pos)          /*!< 0x00000001 */\n#define SPI_I2SCFGR_I2SMOD          SPI_I2SCFGR_I2SMOD_Msk                     /*!<I2S mode selection */\n#define SPI_I2SCFGR_I2SCFG_Pos      (1U)\n#define SPI_I2SCFGR_I2SCFG_Msk      (0x7UL << SPI_I2SCFGR_I2SCFG_Pos)          /*!< 0x0000000E */\n#define SPI_I2SCFGR_I2SCFG          SPI_I2SCFGR_I2SCFG_Msk                     /*!<I2SCFG[2:0] I2S configuration mode                */\n#define SPI_I2SCFGR_I2SCFG_0        (0x1UL << SPI_I2SCFGR_I2SCFG_Pos)           /*!< 0x00000002 */\n#define SPI_I2SCFGR_I2SCFG_1        (0x2UL << SPI_I2SCFGR_I2SCFG_Pos)           /*!< 0x00000004 */\n#define SPI_I2SCFGR_I2SCFG_2        (0x4UL << SPI_I2SCFGR_I2SCFG_Pos)           /*!< 0x00000008 */\n#define SPI_I2SCFGR_I2SSTD_Pos      (4U)\n#define SPI_I2SCFGR_I2SSTD_Msk      (0x3UL << SPI_I2SCFGR_I2SSTD_Pos)          /*!< 0x00000030 */\n#define SPI_I2SCFGR_I2SSTD          SPI_I2SCFGR_I2SSTD_Msk                     /*!<I2SSTD[1:0] I2S standard selection                */\n#define SPI_I2SCFGR_I2SSTD_0        (0x1UL << SPI_I2SCFGR_I2SSTD_Pos)           /*!< 0x00000010 */\n#define SPI_I2SCFGR_I2SSTD_1        (0x2UL << SPI_I2SCFGR_I2SSTD_Pos)           /*!< 0x00000020 */\n#define SPI_I2SCFGR_PCMSYNC_Pos     (7U)\n#define SPI_I2SCFGR_PCMSYNC_Msk     (0x1UL << SPI_I2SCFGR_PCMSYNC_Pos)         /*!< 0x00000080 */\n#define SPI_I2SCFGR_PCMSYNC         SPI_I2SCFGR_PCMSYNC_Msk                    /*!<PCM frame synchronization                         */\n#define SPI_I2SCFGR_DATLEN_Pos      (8U)\n#define SPI_I2SCFGR_DATLEN_Msk      (0x3UL << SPI_I2SCFGR_DATLEN_Pos)          /*!< 0x00000300 */\n#define SPI_I2SCFGR_DATLEN          SPI_I2SCFGR_DATLEN_Msk                     /*!<DATLEN[1:0] Data length to be transferred         */\n#define SPI_I2SCFGR_DATLEN_0        (0x1UL << SPI_I2SCFGR_DATLEN_Pos)           /*!< 0x00000100 */\n#define SPI_I2SCFGR_DATLEN_1        (0x2UL << SPI_I2SCFGR_DATLEN_Pos)           /*!< 0x00000200 */\n#define SPI_I2SCFGR_CHLEN_Pos       (10U)\n#define SPI_I2SCFGR_CHLEN_Msk       (0x1UL << SPI_I2SCFGR_CHLEN_Pos)           /*!< 0x00000400 */\n#define SPI_I2SCFGR_CHLEN           SPI_I2SCFGR_CHLEN_Msk                      /*!<Channel length (number of bits per audio channel) */\n#define SPI_I2SCFGR_CKPOL_Pos       (11U)\n#define SPI_I2SCFGR_CKPOL_Msk       (0x1UL << SPI_I2SCFGR_CKPOL_Pos)           /*!< 0x00000800 */\n#define SPI_I2SCFGR_CKPOL           SPI_I2SCFGR_CKPOL_Msk                      /*!<Steady state clock polarity                       */\n#define SPI_I2SCFGR_FIXCH_Pos       (12U)\n#define SPI_I2SCFGR_FIXCH_Msk       (0x1UL << SPI_I2SCFGR_FIXCH_Pos)           /*!< 0x00001000 */\n#define SPI_I2SCFGR_FIXCH           SPI_I2SCFGR_FIXCH_Msk                      /*!<Fixed channel length in SLAVE                     */\n#define SPI_I2SCFGR_WSINV_Pos       (13U)\n#define SPI_I2SCFGR_WSINV_Msk       (0x1UL << SPI_I2SCFGR_WSINV_Pos)           /*!< 0x00002000 */\n#define SPI_I2SCFGR_WSINV           SPI_I2SCFGR_WSINV_Msk                      /*!<Word select inversion                             */\n#define SPI_I2SCFGR_DATFMT_Pos      (14U)\n#define SPI_I2SCFGR_DATFMT_Msk      (0x1UL << SPI_I2SCFGR_DATFMT_Pos)          /*!< 0x00004000 */\n#define SPI_I2SCFGR_DATFMT          SPI_I2SCFGR_DATFMT_Msk                     /*!<Data format                                       */\n#define SPI_I2SCFGR_I2SDIV_Pos      (16U)\n#define SPI_I2SCFGR_I2SDIV_Msk      (0xFFUL << SPI_I2SCFGR_I2SDIV_Pos)         /*!< 0x00FF0000 */\n#define SPI_I2SCFGR_I2SDIV          SPI_I2SCFGR_I2SDIV_Msk                     /*!<I2S Linear prescaler */\n#define SPI_I2SCFGR_ODD_Pos         (24U)\n#define SPI_I2SCFGR_ODD_Msk         (0x1UL << SPI_I2SCFGR_ODD_Pos)             /*!< 0x01000000 */\n#define SPI_I2SCFGR_ODD             SPI_I2SCFGR_ODD_Msk                        /*!<Odd factor for the prescaler */\n#define SPI_I2SCFGR_MCKOE_Pos       (25U)\n#define SPI_I2SCFGR_MCKOE_Msk       (0x1UL << SPI_I2SCFGR_MCKOE_Pos)           /*!< 0x02000000 */\n#define SPI_I2SCFGR_MCKOE           SPI_I2SCFGR_MCKOE_Msk                      /*!<Master Clock Output Enable */\n\n\n/******************************************************************************/\n/*                                                                            */\n/*                                    QUADSPI                                 */\n/*                                                                            */\n/******************************************************************************/\n/*****************  Bit definition for QUADSPI_CR register  *******************/\n#define QUADSPI_CR_EN_Pos                (0U)\n#define QUADSPI_CR_EN_Msk                (0x1UL << QUADSPI_CR_EN_Pos)          /*!< 0x00000001 */\n#define QUADSPI_CR_EN                    QUADSPI_CR_EN_Msk                     /*!< Enable */\n#define QUADSPI_CR_ABORT_Pos             (1U)\n#define QUADSPI_CR_ABORT_Msk             (0x1UL << QUADSPI_CR_ABORT_Pos)       /*!< 0x00000002 */\n#define QUADSPI_CR_ABORT                 QUADSPI_CR_ABORT_Msk                  /*!< Abort request */\n#define QUADSPI_CR_DMAEN_Pos             (2U)\n#define QUADSPI_CR_DMAEN_Msk             (0x1UL << QUADSPI_CR_DMAEN_Pos)       /*!< 0x00000004 */\n#define QUADSPI_CR_DMAEN                 QUADSPI_CR_DMAEN_Msk                  /*!< Reserved: needed for softawre compatibility (DMA Enable) */\n#define QUADSPI_CR_TCEN_Pos              (3U)\n#define QUADSPI_CR_TCEN_Msk              (0x1UL << QUADSPI_CR_TCEN_Pos)        /*!< 0x00000008 */\n#define QUADSPI_CR_TCEN                  QUADSPI_CR_TCEN_Msk                   /*!< Timeout Counter Enable */\n#define QUADSPI_CR_SSHIFT_Pos            (4U)\n#define QUADSPI_CR_SSHIFT_Msk            (0x1UL << QUADSPI_CR_SSHIFT_Pos)      /*!< 0x00000010 */\n#define QUADSPI_CR_SSHIFT                QUADSPI_CR_SSHIFT_Msk                 /*!< SSHIFT Sample Shift */\n#define QUADSPI_CR_DFM_Pos               (6U)\n#define QUADSPI_CR_DFM_Msk               (0x1UL << QUADSPI_CR_DFM_Pos)         /*!< 0x00000040 */\n#define QUADSPI_CR_DFM                   QUADSPI_CR_DFM_Msk                    /*!< Dual Flash Mode */\n#define QUADSPI_CR_FSEL_Pos              (7U)\n#define QUADSPI_CR_FSEL_Msk              (0x1UL << QUADSPI_CR_FSEL_Pos)        /*!< 0x00000080 */\n#define QUADSPI_CR_FSEL                  QUADSPI_CR_FSEL_Msk                   /*!< Flash Select */\n#define QUADSPI_CR_FTHRES_Pos            (8U)\n#define QUADSPI_CR_FTHRES_Msk            (0xFUL << QUADSPI_CR_FTHRES_Pos)      /*!< 0x00000F00 */\n#define QUADSPI_CR_FTHRES                QUADSPI_CR_FTHRES_Msk                 /*!< FTHRES[3:0] FIFO Level */\n#define QUADSPI_CR_FTHRES_0              (0x1UL << QUADSPI_CR_FTHRES_Pos)      /*!< 0x00000100 */\n#define QUADSPI_CR_FTHRES_1              (0x2UL << QUADSPI_CR_FTHRES_Pos)      /*!< 0x00000200 */\n#define QUADSPI_CR_FTHRES_2              (0x4UL << QUADSPI_CR_FTHRES_Pos)      /*!< 0x00000400 */\n#define QUADSPI_CR_FTHRES_3              (0x8UL << QUADSPI_CR_FTHRES_Pos)      /*!< 0x00000800 */\n#define QUADSPI_CR_TEIE_Pos              (16U)\n#define QUADSPI_CR_TEIE_Msk              (0x1UL << QUADSPI_CR_TEIE_Pos)        /*!< 0x00010000 */\n#define QUADSPI_CR_TEIE                  QUADSPI_CR_TEIE_Msk                   /*!< Transfer Error Interrupt Enable */\n#define QUADSPI_CR_TCIE_Pos              (17U)\n#define QUADSPI_CR_TCIE_Msk              (0x1UL << QUADSPI_CR_TCIE_Pos)        /*!< 0x00020000 */\n#define QUADSPI_CR_TCIE                  QUADSPI_CR_TCIE_Msk                   /*!< Transfer Complete Interrupt Enable */\n#define QUADSPI_CR_FTIE_Pos              (18U)\n#define QUADSPI_CR_FTIE_Msk              (0x1UL << QUADSPI_CR_FTIE_Pos)        /*!< 0x00040000 */\n#define QUADSPI_CR_FTIE                  QUADSPI_CR_FTIE_Msk                   /*!< FIFO Threshold Interrupt Enable */\n#define QUADSPI_CR_SMIE_Pos              (19U)\n#define QUADSPI_CR_SMIE_Msk              (0x1UL << QUADSPI_CR_SMIE_Pos)        /*!< 0x00080000 */\n#define QUADSPI_CR_SMIE                  QUADSPI_CR_SMIE_Msk                   /*!< Status Match Interrupt Enable */\n#define QUADSPI_CR_TOIE_Pos              (20U)\n#define QUADSPI_CR_TOIE_Msk              (0x1UL << QUADSPI_CR_TOIE_Pos)        /*!< 0x00100000 */\n#define QUADSPI_CR_TOIE                  QUADSPI_CR_TOIE_Msk                   /*!< TimeOut Interrupt Enable */\n#define QUADSPI_CR_APMS_Pos              (22U)\n#define QUADSPI_CR_APMS_Msk              (0x1UL << QUADSPI_CR_APMS_Pos)        /*!< 0x00400000 */\n#define QUADSPI_CR_APMS                  QUADSPI_CR_APMS_Msk                   /*!< Bit 1 */\n#define QUADSPI_CR_PMM_Pos               (23U)\n#define QUADSPI_CR_PMM_Msk               (0x1UL << QUADSPI_CR_PMM_Pos)         /*!< 0x00800000 */\n#define QUADSPI_CR_PMM                   QUADSPI_CR_PMM_Msk                    /*!< Polling Match Mode */\n#define QUADSPI_CR_PRESCALER_Pos         (24U)\n#define QUADSPI_CR_PRESCALER_Msk         (0xFFUL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0xFF000000 */\n#define QUADSPI_CR_PRESCALER             QUADSPI_CR_PRESCALER_Msk              /*!< PRESCALER[7:0] Clock prescaler */\n#define QUADSPI_CR_PRESCALER_0           (0x01UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x01000000 */\n#define QUADSPI_CR_PRESCALER_1           (0x02UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x02000000 */\n#define QUADSPI_CR_PRESCALER_2           (0x04UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x04000000 */\n#define QUADSPI_CR_PRESCALER_3           (0x08UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x08000000 */\n#define QUADSPI_CR_PRESCALER_4           (0x10UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x10000000 */\n#define QUADSPI_CR_PRESCALER_5           (0x20UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x20000000 */\n#define QUADSPI_CR_PRESCALER_6           (0x40UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x40000000 */\n#define QUADSPI_CR_PRESCALER_7           (0x80UL << QUADSPI_CR_PRESCALER_Pos)  /*!< 0x80000000 */\n\n/*****************  Bit definition for QUADSPI_DCR register  ******************/\n#define QUADSPI_DCR_CKMODE_Pos           (0U)\n#define QUADSPI_DCR_CKMODE_Msk           (0x1UL << QUADSPI_DCR_CKMODE_Pos)     /*!< 0x00000001 */\n#define QUADSPI_DCR_CKMODE               QUADSPI_DCR_CKMODE_Msk                /*!< Mode 0 / Mode 3 */\n#define QUADSPI_DCR_CSHT_Pos             (8U)\n#define QUADSPI_DCR_CSHT_Msk             (0x7UL << QUADSPI_DCR_CSHT_Pos)       /*!< 0x00000700 */\n#define QUADSPI_DCR_CSHT                 QUADSPI_DCR_CSHT_Msk                  /*!< CSHT[2:0]: ChipSelect High Time */\n#define QUADSPI_DCR_CSHT_0               (0x1UL << QUADSPI_DCR_CSHT_Pos)       /*!< 0x00000100 */\n#define QUADSPI_DCR_CSHT_1               (0x2UL << QUADSPI_DCR_CSHT_Pos)       /*!< 0x00000200 */\n#define QUADSPI_DCR_CSHT_2               (0x4UL << QUADSPI_DCR_CSHT_Pos)       /*!< 0x00000400 */\n#define QUADSPI_DCR_FSIZE_Pos            (16U)\n#define QUADSPI_DCR_FSIZE_Msk            (0x1FUL << QUADSPI_DCR_FSIZE_Pos)     /*!< 0x001F0000 */\n#define QUADSPI_DCR_FSIZE                QUADSPI_DCR_FSIZE_Msk                 /*!< FSIZE[4:0]: Flash Size */\n#define QUADSPI_DCR_FSIZE_0              (0x01UL << QUADSPI_DCR_FSIZE_Pos)     /*!< 0x00010000 */\n#define QUADSPI_DCR_FSIZE_1              (0x02UL << QUADSPI_DCR_FSIZE_Pos)     /*!< 0x00020000 */\n#define QUADSPI_DCR_FSIZE_2              (0x04UL << QUADSPI_DCR_FSIZE_Pos)     /*!< 0x00040000 */\n#define QUADSPI_DCR_FSIZE_3              (0x08UL << QUADSPI_DCR_FSIZE_Pos)     /*!< 0x00080000 */\n#define QUADSPI_DCR_FSIZE_4              (0x10UL << QUADSPI_DCR_FSIZE_Pos)     /*!< 0x00100000 */\n\n/******************  Bit definition for QUADSPI_SR register  *******************/\n#define QUADSPI_SR_TEF_Pos               (0U)\n#define QUADSPI_SR_TEF_Msk               (0x1UL << QUADSPI_SR_TEF_Pos)         /*!< 0x00000001 */\n#define QUADSPI_SR_TEF                   QUADSPI_SR_TEF_Msk                    /*!< Transfer Error Flag */\n#define QUADSPI_SR_TCF_Pos               (1U)\n#define QUADSPI_SR_TCF_Msk               (0x1UL << QUADSPI_SR_TCF_Pos)         /*!< 0x00000002 */\n#define QUADSPI_SR_TCF                   QUADSPI_SR_TCF_Msk                    /*!< Transfer Complete Flag */\n#define QUADSPI_SR_FTF_Pos               (2U)\n#define QUADSPI_SR_FTF_Msk               (0x1UL << QUADSPI_SR_FTF_Pos)         /*!< 0x00000004 */\n#define QUADSPI_SR_FTF                   QUADSPI_SR_FTF_Msk                    /*!< FIFO Threshlod Flag */\n#define QUADSPI_SR_SMF_Pos               (3U)\n#define QUADSPI_SR_SMF_Msk               (0x1UL << QUADSPI_SR_SMF_Pos)         /*!< 0x00000008 */\n#define QUADSPI_SR_SMF                   QUADSPI_SR_SMF_Msk                    /*!< Status Match Flag */\n#define QUADSPI_SR_TOF_Pos               (4U)\n#define QUADSPI_SR_TOF_Msk               (0x1UL << QUADSPI_SR_TOF_Pos)         /*!< 0x00000010 */\n#define QUADSPI_SR_TOF                   QUADSPI_SR_TOF_Msk                    /*!< Timeout Flag */\n#define QUADSPI_SR_BUSY_Pos              (5U)\n#define QUADSPI_SR_BUSY_Msk              (0x1UL << QUADSPI_SR_BUSY_Pos)        /*!< 0x00000020 */\n#define QUADSPI_SR_BUSY                  QUADSPI_SR_BUSY_Msk                   /*!< Busy */\n#define QUADSPI_SR_FLEVEL_Pos            (8U)\n#define QUADSPI_SR_FLEVEL_Msk            (0x3FUL << QUADSPI_SR_FLEVEL_Pos)     /*!< 0x00003F00 */\n#define QUADSPI_SR_FLEVEL                QUADSPI_SR_FLEVEL_Msk                 /*!< FIFO Threshlod Flag */\n#define QUADSPI_SR_FLEVEL_0              (0x01UL << QUADSPI_SR_FLEVEL_Pos)     /*!< 0x00000100 */\n#define QUADSPI_SR_FLEVEL_1              (0x02UL << QUADSPI_SR_FLEVEL_Pos)     /*!< 0x00000200 */\n#define QUADSPI_SR_FLEVEL_2              (0x04UL << QUADSPI_SR_FLEVEL_Pos)     /*!< 0x00000400 */\n#define QUADSPI_SR_FLEVEL_3              (0x08UL << QUADSPI_SR_FLEVEL_Pos)     /*!< 0x00000800 */\n#define QUADSPI_SR_FLEVEL_4              (0x10UL << QUADSPI_SR_FLEVEL_Pos)     /*!< 0x00001000 */\n#define QUADSPI_SR_FLEVEL_5              (0x20UL << QUADSPI_SR_FLEVEL_Pos)     /*!< 0x00002000 */\n\n/******************  Bit definition for QUADSPI_FCR register  ******************/\n#define QUADSPI_FCR_CTEF_Pos             (0U)\n#define QUADSPI_FCR_CTEF_Msk             (0x1UL << QUADSPI_FCR_CTEF_Pos)       /*!< 0x00000001 */\n#define QUADSPI_FCR_CTEF                 QUADSPI_FCR_CTEF_Msk                  /*!< Clear Transfer Error Flag */\n#define QUADSPI_FCR_CTCF_Pos             (1U)\n#define QUADSPI_FCR_CTCF_Msk             (0x1UL << QUADSPI_FCR_CTCF_Pos)       /*!< 0x00000002 */\n#define QUADSPI_FCR_CTCF                 QUADSPI_FCR_CTCF_Msk                  /*!< Clear Transfer Complete Flag */\n#define QUADSPI_FCR_CSMF_Pos             (3U)\n#define QUADSPI_FCR_CSMF_Msk             (0x1UL << QUADSPI_FCR_CSMF_Pos)       /*!< 0x00000008 */\n#define QUADSPI_FCR_CSMF                 QUADSPI_FCR_CSMF_Msk                  /*!< Clear Status Match Flag */\n#define QUADSPI_FCR_CTOF_Pos             (4U)\n#define QUADSPI_FCR_CTOF_Msk             (0x1UL << QUADSPI_FCR_CTOF_Pos)       /*!< 0x00000010 */\n#define QUADSPI_FCR_CTOF                 QUADSPI_FCR_CTOF_Msk                  /*!< Clear Timeout Flag */\n\n/******************  Bit definition for QUADSPI_DLR register  ******************/\n#define QUADSPI_DLR_DL_Pos               (0U)\n#define QUADSPI_DLR_DL_Msk               (0xFFFFFFFFUL << QUADSPI_DLR_DL_Pos)  /*!< 0xFFFFFFFF */\n#define QUADSPI_DLR_DL                   QUADSPI_DLR_DL_Msk                    /*!< DL[31:0]: Data Length */\n\n/******************  Bit definition for QUADSPI_CCR register  ******************/\n#define QUADSPI_CCR_INSTRUCTION_Pos      (0U)\n#define QUADSPI_CCR_INSTRUCTION_Msk      (0xFFUL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x000000FF */\n#define QUADSPI_CCR_INSTRUCTION          QUADSPI_CCR_INSTRUCTION_Msk             /*!< INSTRUCTION[7:0]: Instruction */\n#define QUADSPI_CCR_INSTRUCTION_0        (0x01UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000001 */\n#define QUADSPI_CCR_INSTRUCTION_1        (0x02UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000002 */\n#define QUADSPI_CCR_INSTRUCTION_2        (0x04UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000004 */\n#define QUADSPI_CCR_INSTRUCTION_3        (0x08UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000008 */\n#define QUADSPI_CCR_INSTRUCTION_4        (0x10UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000010 */\n#define QUADSPI_CCR_INSTRUCTION_5        (0x20UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000020 */\n#define QUADSPI_CCR_INSTRUCTION_6        (0x40UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000040 */\n#define QUADSPI_CCR_INSTRUCTION_7        (0x80UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000080 */\n#define QUADSPI_CCR_IMODE_Pos            (8U)\n#define QUADSPI_CCR_IMODE_Msk            (0x3UL << QUADSPI_CCR_IMODE_Pos)        /*!< 0x00000300 */\n#define QUADSPI_CCR_IMODE                QUADSPI_CCR_IMODE_Msk                   /*!< IMODE[1:0]: Instruction Mode */\n#define QUADSPI_CCR_IMODE_0              (0x1UL << QUADSPI_CCR_IMODE_Pos)        /*!< 0x00000100 */\n#define QUADSPI_CCR_IMODE_1              (0x2UL << QUADSPI_CCR_IMODE_Pos)        /*!< 0x00000200 */\n#define QUADSPI_CCR_ADMODE_Pos           (10U)\n#define QUADSPI_CCR_ADMODE_Msk           (0x3UL << QUADSPI_CCR_ADMODE_Pos)       /*!< 0x00000C00 */\n#define QUADSPI_CCR_ADMODE               QUADSPI_CCR_ADMODE_Msk                  /*!< ADMODE[1:0]: Address Mode */\n#define QUADSPI_CCR_ADMODE_0             (0x1UL << QUADSPI_CCR_ADMODE_Pos)       /*!< 0x00000400 */\n#define QUADSPI_CCR_ADMODE_1             (0x2UL << QUADSPI_CCR_ADMODE_Pos)       /*!< 0x00000800 */\n#define QUADSPI_CCR_ADSIZE_Pos           (12U)\n#define QUADSPI_CCR_ADSIZE_Msk           (0x3UL << QUADSPI_CCR_ADSIZE_Pos)       /*!< 0x00003000 */\n#define QUADSPI_CCR_ADSIZE               QUADSPI_CCR_ADSIZE_Msk                  /*!< ADSIZE[1:0]: Address Size */\n#define QUADSPI_CCR_ADSIZE_0             (0x1UL << QUADSPI_CCR_ADSIZE_Pos)       /*!< 0x00001000 */\n#define QUADSPI_CCR_ADSIZE_1             (0x2UL << QUADSPI_CCR_ADSIZE_Pos)       /*!< 0x00002000 */\n#define QUADSPI_CCR_ABMODE_Pos           (14U)\n#define QUADSPI_CCR_ABMODE_Msk           (0x3UL << QUADSPI_CCR_ABMODE_Pos)       /*!< 0x0000C000 */\n#define QUADSPI_CCR_ABMODE               QUADSPI_CCR_ABMODE_Msk                  /*!< ABMODE[1:0]: Alternate Bytes Mode */\n#define QUADSPI_CCR_ABMODE_0             (0x1UL << QUADSPI_CCR_ABMODE_Pos)       /*!< 0x00004000 */\n#define QUADSPI_CCR_ABMODE_1             (0x2UL << QUADSPI_CCR_ABMODE_Pos)       /*!< 0x00008000 */\n#define QUADSPI_CCR_ABSIZE_Pos           (16U)\n#define QUADSPI_CCR_ABSIZE_Msk           (0x3UL << QUADSPI_CCR_ABSIZE_Pos)       /*!< 0x00030000 */\n#define QUADSPI_CCR_ABSIZE               QUADSPI_CCR_ABSIZE_Msk                  /*!< ABSIZE[1:0]: Instruction Mode */\n#define QUADSPI_CCR_ABSIZE_0             (0x1UL << QUADSPI_CCR_ABSIZE_Pos)       /*!< 0x00010000 */\n#define QUADSPI_CCR_ABSIZE_1             (0x2UL << QUADSPI_CCR_ABSIZE_Pos)       /*!< 0x00020000 */\n#define QUADSPI_CCR_DCYC_Pos             (18U)\n#define QUADSPI_CCR_DCYC_Msk             (0x1FUL << QUADSPI_CCR_DCYC_Pos)        /*!< 0x007C0000 */\n#define QUADSPI_CCR_DCYC                 QUADSPI_CCR_DCYC_Msk                    /*!< DCYC[4:0]: Dummy Cycles */\n#define QUADSPI_CCR_DCYC_0               (0x01UL << QUADSPI_CCR_DCYC_Pos)        /*!< 0x00040000 */\n#define QUADSPI_CCR_DCYC_1               (0x02UL << QUADSPI_CCR_DCYC_Pos)        /*!< 0x00080000 */\n#define QUADSPI_CCR_DCYC_2               (0x04UL << QUADSPI_CCR_DCYC_Pos)        /*!< 0x00100000 */\n#define QUADSPI_CCR_DCYC_3               (0x08UL << QUADSPI_CCR_DCYC_Pos)        /*!< 0x00200000 */\n#define QUADSPI_CCR_DCYC_4               (0x10UL << QUADSPI_CCR_DCYC_Pos)        /*!< 0x00400000 */\n#define QUADSPI_CCR_DMODE_Pos            (24U)\n#define QUADSPI_CCR_DMODE_Msk            (0x3UL << QUADSPI_CCR_DMODE_Pos)        /*!< 0x03000000 */\n#define QUADSPI_CCR_DMODE                QUADSPI_CCR_DMODE_Msk                   /*!< DMODE[1:0]: Data Mode */\n#define QUADSPI_CCR_DMODE_0              (0x1UL << QUADSPI_CCR_DMODE_Pos)        /*!< 0x01000000 */\n#define QUADSPI_CCR_DMODE_1              (0x2UL << QUADSPI_CCR_DMODE_Pos)        /*!< 0x02000000 */\n#define QUADSPI_CCR_FMODE_Pos            (26U)\n#define QUADSPI_CCR_FMODE_Msk            (0x3UL << QUADSPI_CCR_FMODE_Pos)        /*!< 0x0C000000 */\n#define QUADSPI_CCR_FMODE                QUADSPI_CCR_FMODE_Msk                   /*!< FMODE[1:0]: Functional Mode */\n#define QUADSPI_CCR_FMODE_0              (0x1UL << QUADSPI_CCR_FMODE_Pos)        /*!< 0x04000000 */\n#define QUADSPI_CCR_FMODE_1              (0x2UL << QUADSPI_CCR_FMODE_Pos)        /*!< 0x08000000 */\n#define QUADSPI_CCR_SIOO_Pos             (28U)\n#define QUADSPI_CCR_SIOO_Msk             (0x1UL << QUADSPI_CCR_SIOO_Pos)         /*!< 0x10000000 */\n#define QUADSPI_CCR_SIOO                 QUADSPI_CCR_SIOO_Msk                    /*!< SIOO: Send Instruction Only Once Mode */\n#define QUADSPI_CCR_DHHC_Pos             (30U)\n#define QUADSPI_CCR_DHHC_Msk             (0x1UL << QUADSPI_CCR_DHHC_Pos)         /*!< 0x40000000 */\n#define QUADSPI_CCR_DHHC                 QUADSPI_CCR_DHHC_Msk                    /*!< DHHC: DDR hold half cycle */\n#define QUADSPI_CCR_DDRM_Pos             (31U)\n#define QUADSPI_CCR_DDRM_Msk             (0x1UL << QUADSPI_CCR_DDRM_Pos)         /*!< 0x80000000 */\n#define QUADSPI_CCR_DDRM                 QUADSPI_CCR_DDRM_Msk                    /*!< DDRM: Double Data Rate Mode */\n\n/******************  Bit definition for QUADSPI_AR register  *******************/\n#define QUADSPI_AR_ADDRESS_Pos           (0U)\n#define QUADSPI_AR_ADDRESS_Msk           (0xFFFFFFFFUL << QUADSPI_AR_ADDRESS_Pos) /*!< 0xFFFFFFFF */\n#define QUADSPI_AR_ADDRESS               QUADSPI_AR_ADDRESS_Msk                /*!< ADDRESS[31:0]: Address */\n\n/******************  Bit definition for QUADSPI_ABR register  ******************/\n#define QUADSPI_ABR_ALTERNATE_Pos        (0U)\n#define QUADSPI_ABR_ALTERNATE_Msk        (0xFFFFFFFFUL << QUADSPI_ABR_ALTERNATE_Pos) /*!< 0xFFFFFFFF */\n#define QUADSPI_ABR_ALTERNATE            QUADSPI_ABR_ALTERNATE_Msk             /*!< ALTERNATE[31:0]: Alternate Bytes */\n\n/******************  Bit definition for QUADSPI_DR register  *******************/\n#define QUADSPI_DR_DATA_Pos              (0U)\n#define QUADSPI_DR_DATA_Msk              (0xFFFFFFFFUL << QUADSPI_DR_DATA_Pos) /*!< 0xFFFFFFFF */\n#define QUADSPI_DR_DATA                  QUADSPI_DR_DATA_Msk                   /*!< DATA[31:0]: Data */\n\n/******************  Bit definition for QUADSPI_PSMKR register  ****************/\n#define QUADSPI_PSMKR_MASK_Pos           (0U)\n#define QUADSPI_PSMKR_MASK_Msk           (0xFFFFFFFFUL << QUADSPI_PSMKR_MASK_Pos) /*!< 0xFFFFFFFF */\n#define QUADSPI_PSMKR_MASK               QUADSPI_PSMKR_MASK_Msk                /*!< MASK[31:0]: Status Mask */\n\n/******************  Bit definition for QUADSPI_PSMAR register  ****************/\n#define QUADSPI_PSMAR_MATCH_Pos          (0U)\n#define QUADSPI_PSMAR_MATCH_Msk          (0xFFFFFFFFUL << QUADSPI_PSMAR_MATCH_Pos) /*!< 0xFFFFFFFF */\n#define QUADSPI_PSMAR_MATCH              QUADSPI_PSMAR_MATCH_Msk               /*!< MATCH[31:0]: Status Match */\n\n/******************  Bit definition for QUADSPI_PIR register  *****************/\n#define QUADSPI_PIR_INTERVAL_Pos         (0U)\n#define QUADSPI_PIR_INTERVAL_Msk         (0xFFFFUL << QUADSPI_PIR_INTERVAL_Pos) /*!< 0x0000FFFF */\n#define QUADSPI_PIR_INTERVAL             QUADSPI_PIR_INTERVAL_Msk              /*!< INTERVAL[15:0]: Polling Interval */\n\n/******************  Bit definition for QUADSPI_LPTR register  *****************/\n#define QUADSPI_LPTR_TIMEOUT_Pos         (0U)\n#define QUADSPI_LPTR_TIMEOUT_Msk         (0xFFFFUL << QUADSPI_LPTR_TIMEOUT_Pos) /*!< 0x0000FFFF */\n#define QUADSPI_LPTR_TIMEOUT             QUADSPI_LPTR_TIMEOUT_Msk              /*!< TIMEOUT[15:0]: Timeout period */\n\n/******************************************************************************/\n/*                                                                            */\n/*                                 SYSCFG                                     */\n/*                                                                            */\n/******************************************************************************/\n\n/******************  Bit definition for SYSCFG_PMCR register  ******************/\n#define SYSCFG_PMCR_I2C1_FMP_Pos        (0U)\n#define SYSCFG_PMCR_I2C1_FMP_Msk        (0x1UL << SYSCFG_PMCR_I2C1_FMP_Pos)    /*!< 0x00000001 */\n#define SYSCFG_PMCR_I2C1_FMP            SYSCFG_PMCR_I2C1_FMP_Msk               /*!< I2C1 Fast mode plus */\n#define SYSCFG_PMCR_I2C2_FMP_Pos        (1U)\n#define SYSCFG_PMCR_I2C2_FMP_Msk        (0x1UL << SYSCFG_PMCR_I2C2_FMP_Pos)    /*!< 0x00000002 */\n#define SYSCFG_PMCR_I2C2_FMP            SYSCFG_PMCR_I2C2_FMP_Msk               /*!< I2C2 Fast mode plus */\n#define SYSCFG_PMCR_I2C3_FMP_Pos        (2U)\n#define SYSCFG_PMCR_I2C3_FMP_Msk        (0x1UL << SYSCFG_PMCR_I2C3_FMP_Pos)    /*!< 0x00000004 */\n#define SYSCFG_PMCR_I2C3_FMP            SYSCFG_PMCR_I2C3_FMP_Msk               /*!< I2C3 Fast mode plus */\n#define SYSCFG_PMCR_I2C4_FMP_Pos        (3U)\n#define SYSCFG_PMCR_I2C4_FMP_Msk        (0x1UL << SYSCFG_PMCR_I2C4_FMP_Pos)    /*!< 0x00000008 */\n#define SYSCFG_PMCR_I2C4_FMP            SYSCFG_PMCR_I2C4_FMP_Msk               /*!< I2C4 Fast mode plus */\n#define SYSCFG_PMCR_I2C_PB6_FMP_Pos     (4U)\n#define SYSCFG_PMCR_I2C_PB6_FMP_Msk     (0x1UL << SYSCFG_PMCR_I2C_PB6_FMP_Pos) /*!< 0x00000010 */\n#define SYSCFG_PMCR_I2C_PB6_FMP         SYSCFG_PMCR_I2C_PB6_FMP_Msk            /*!< I2C PB6 Fast mode plus */\n#define SYSCFG_PMCR_I2C_PB7_FMP_Pos     (5U)\n#define SYSCFG_PMCR_I2C_PB7_FMP_Msk     (0x1UL << SYSCFG_PMCR_I2C_PB7_FMP_Pos) /*!< 0x00000020 */\n#define SYSCFG_PMCR_I2C_PB7_FMP         SYSCFG_PMCR_I2C_PB7_FMP_Msk            /*!< I2C PB7 Fast mode plus */\n#define SYSCFG_PMCR_I2C_PB8_FMP_Pos     (6U)\n#define SYSCFG_PMCR_I2C_PB8_FMP_Msk     (0x1UL << SYSCFG_PMCR_I2C_PB8_FMP_Pos) /*!< 0x00000040 */\n#define SYSCFG_PMCR_I2C_PB8_FMP         SYSCFG_PMCR_I2C_PB8_FMP_Msk            /*!< I2C PB8 Fast mode plus */\n#define SYSCFG_PMCR_I2C_PB9_FMP_Pos     (7U)\n#define SYSCFG_PMCR_I2C_PB9_FMP_Msk     (0x1UL << SYSCFG_PMCR_I2C_PB9_FMP_Pos) /*!< 0x00000080 */\n#define SYSCFG_PMCR_I2C_PB9_FMP         SYSCFG_PMCR_I2C_PB9_FMP_Msk            /*!< I2C PB9 Fast mode plus */\n#define SYSCFG_PMCR_BOOSTEN_Pos         (8U)\n#define SYSCFG_PMCR_BOOSTEN_Msk         (0x1UL << SYSCFG_PMCR_BOOSTEN_Pos)     /*!< 0x00000100 */\n#define SYSCFG_PMCR_BOOSTEN             SYSCFG_PMCR_BOOSTEN_Msk                /*!< I/O analog switch voltage booster enable */\n\n#define SYSCFG_PMCR_BOOSTVDDSEL_Pos     (9U)\n#define SYSCFG_PMCR_BOOSTVDDSEL_Msk     (0x1UL << SYSCFG_PMCR_BOOSTVDDSEL_Pos) /*!< 0x00000200 */\n#define SYSCFG_PMCR_BOOSTVDDSEL         SYSCFG_PMCR_BOOSTVDDSEL_Msk            /*!< Analog switch supply source selection : VDD/VDDA */\n\n#define SYSCFG_PMCR_EPIS_SEL_Pos        (21U)\n#define SYSCFG_PMCR_EPIS_SEL_Msk        (0x7UL << SYSCFG_PMCR_EPIS_SEL_Pos)    /*!< 0x00E00000 */\n#define SYSCFG_PMCR_EPIS_SEL            SYSCFG_PMCR_EPIS_SEL_Msk               /*!< Ethernet PHY Interface Selection */\n#define SYSCFG_PMCR_EPIS_SEL_0          (0x1UL << SYSCFG_PMCR_EPIS_SEL_Pos)    /*!< 0x00200000 */\n#define SYSCFG_PMCR_EPIS_SEL_1          (0x2UL << SYSCFG_PMCR_EPIS_SEL_Pos)    /*!< 0x00400000 */\n#define SYSCFG_PMCR_EPIS_SEL_2          (0x4UL << SYSCFG_PMCR_EPIS_SEL_Pos)    /*!< 0x00800000 */\n#define SYSCFG_PMCR_PA0SO_Pos           (24U)\n#define SYSCFG_PMCR_PA0SO_Msk           (0x1UL << SYSCFG_PMCR_PA0SO_Pos)       /*!< 0x01000000 */\n#define SYSCFG_PMCR_PA0SO               SYSCFG_PMCR_PA0SO_Msk                  /*!< PA0 Switch Open */\n#define SYSCFG_PMCR_PA1SO_Pos           (25U)\n#define SYSCFG_PMCR_PA1SO_Msk           (0x1UL << SYSCFG_PMCR_PA1SO_Pos)       /*!< 0x02000000 */\n#define SYSCFG_PMCR_PA1SO               SYSCFG_PMCR_PA1SO_Msk                  /*!< PA1 Switch Open */\n#define SYSCFG_PMCR_PC2SO_Pos           (26U)\n#define SYSCFG_PMCR_PC2SO_Msk           (0x1UL << SYSCFG_PMCR_PC2SO_Pos)       /*!< 0x04000000 */\n#define SYSCFG_PMCR_PC2SO               SYSCFG_PMCR_PC2SO_Msk                  /*!< PC2 Switch Open */\n#define SYSCFG_PMCR_PC3SO_Pos           (27U)\n#define SYSCFG_PMCR_PC3SO_Msk           (0x1UL << SYSCFG_PMCR_PC3SO_Pos)       /*!< 0x08000000 */\n#define SYSCFG_PMCR_PC3SO               SYSCFG_PMCR_PC3SO_Msk                  /*!< PC3 Switch Open */\n\n/*****************  Bit definition for SYSCFG_EXTICR1 register  ***************/\n#define SYSCFG_EXTICR1_EXTI0_Pos        (0U)\n#define SYSCFG_EXTICR1_EXTI0_Msk        (0xFUL << SYSCFG_EXTICR1_EXTI0_Pos)    /*!< 0x0000000F */\n#define SYSCFG_EXTICR1_EXTI0            SYSCFG_EXTICR1_EXTI0_Msk               /*!<EXTI 0 configuration */\n#define SYSCFG_EXTICR1_EXTI1_Pos        (4U)\n#define SYSCFG_EXTICR1_EXTI1_Msk        (0xFUL << SYSCFG_EXTICR1_EXTI1_Pos)    /*!< 0x000000F0 */\n#define SYSCFG_EXTICR1_EXTI1            SYSCFG_EXTICR1_EXTI1_Msk               /*!<EXTI 1 configuration */\n#define SYSCFG_EXTICR1_EXTI2_Pos        (8U)\n#define SYSCFG_EXTICR1_EXTI2_Msk        (0xFUL << SYSCFG_EXTICR1_EXTI2_Pos)    /*!< 0x00000F00 */\n#define SYSCFG_EXTICR1_EXTI2            SYSCFG_EXTICR1_EXTI2_Msk               /*!<EXTI 2 configuration */\n#define SYSCFG_EXTICR1_EXTI3_Pos        (12U)\n#define SYSCFG_EXTICR1_EXTI3_Msk        (0xFUL << SYSCFG_EXTICR1_EXTI3_Pos)    /*!< 0x0000F000 */\n#define SYSCFG_EXTICR1_EXTI3            SYSCFG_EXTICR1_EXTI3_Msk               /*!<EXTI 3 configuration */\n/**\n  * @brief   EXTI0 configuration\n  */\n#define SYSCFG_EXTICR1_EXTI0_PA         ((uint32_t)0x00000000)                 /*!<PA[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PB         ((uint32_t)0x00000001)                 /*!<PB[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PC         ((uint32_t)0x00000002)                 /*!<PC[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PD         ((uint32_t)0x00000003)                 /*!<PD[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PE         ((uint32_t)0x00000004)                 /*!<PE[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PF         ((uint32_t)0x00000005)                 /*!<PF[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PG         ((uint32_t)0x00000006)                 /*!<PG[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PH         ((uint32_t)0x00000007)                 /*!<PH[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PI         ((uint32_t)0x00000008)                 /*!<PI[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PJ         ((uint32_t)0x00000009)                 /*!<PJ[0] pin */\n#define SYSCFG_EXTICR1_EXTI0_PK         ((uint32_t)0x0000000A)                 /*!<PK[0] pin */\n\n/**\n  * @brief   EXTI1 configuration\n  */\n#define SYSCFG_EXTICR1_EXTI1_PA         ((uint32_t)0x00000000)                 /*!<PA[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PB         ((uint32_t)0x00000010)                 /*!<PB[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PC         ((uint32_t)0x00000020)                 /*!<PC[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PD         ((uint32_t)0x00000030)                 /*!<PD[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PE         ((uint32_t)0x00000040)                 /*!<PE[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PF         ((uint32_t)0x00000050)                 /*!<PF[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PG         ((uint32_t)0x00000060)                 /*!<PG[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PH         ((uint32_t)0x00000070)                 /*!<PH[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PI         ((uint32_t)0x00000080)                 /*!<PI[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PJ         ((uint32_t)0x00000090)                 /*!<PJ[1] pin */\n#define SYSCFG_EXTICR1_EXTI1_PK         ((uint32_t)0x000000A0)                 /*!<PK[1] pin */\n/**\n  * @brief   EXTI2 configuration\n  */\n#define SYSCFG_EXTICR1_EXTI2_PA         ((uint32_t)0x00000000)                 /*!<PA[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PB         ((uint32_t)0x00000100)                 /*!<PB[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PC         ((uint32_t)0x00000200)                 /*!<PC[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PD         ((uint32_t)0x00000300)                 /*!<PD[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PE         ((uint32_t)0x00000400)                 /*!<PE[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PF         ((uint32_t)0x00000500)                 /*!<PF[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PG         ((uint32_t)0x00000600)                 /*!<PG[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PH         ((uint32_t)0x00000700)                 /*!<PH[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PI         ((uint32_t)0x00000800)                 /*!<PI[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PJ         ((uint32_t)0x00000900)                 /*!<PJ[2] pin */\n#define SYSCFG_EXTICR1_EXTI2_PK         ((uint32_t)0x00000A00)                 /*!<PK[2] pin */\n\n/**\n  * @brief   EXTI3 configuration\n  */\n#define SYSCFG_EXTICR1_EXTI3_PA         ((uint32_t)0x00000000)                 /*!<PA[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PB         ((uint32_t)0x00001000)                 /*!<PB[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PC         ((uint32_t)0x00002000)                 /*!<PC[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PD         ((uint32_t)0x00003000)                 /*!<PD[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PE         ((uint32_t)0x00004000)                 /*!<PE[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PF         ((uint32_t)0x00005000)                 /*!<PF[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PG         ((uint32_t)0x00006000)                 /*!<PG[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PH         ((uint32_t)0x00007000)                 /*!<PH[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PI         ((uint32_t)0x00008000)                 /*!<PI[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PJ         ((uint32_t)0x00009000)                 /*!<PJ[3] pin */\n#define SYSCFG_EXTICR1_EXTI3_PK         ((uint32_t)0x0000A000)                 /*!<PK[3] pin */\n\n/*****************  Bit definition for SYSCFG_EXTICR2 register  ***************/\n#define SYSCFG_EXTICR2_EXTI4_Pos        (0U)\n#define SYSCFG_EXTICR2_EXTI4_Msk        (0xFUL << SYSCFG_EXTICR2_EXTI4_Pos)    /*!< 0x0000000F */\n#define SYSCFG_EXTICR2_EXTI4            SYSCFG_EXTICR2_EXTI4_Msk               /*!<EXTI 4 configuration */\n#define SYSCFG_EXTICR2_EXTI5_Pos        (4U)\n#define SYSCFG_EXTICR2_EXTI5_Msk        (0xFUL << SYSCFG_EXTICR2_EXTI5_Pos)    /*!< 0x000000F0 */\n#define SYSCFG_EXTICR2_EXTI5            SYSCFG_EXTICR2_EXTI5_Msk               /*!<EXTI 5 configuration */\n#define SYSCFG_EXTICR2_EXTI6_Pos        (8U)\n#define SYSCFG_EXTICR2_EXTI6_Msk        (0xFUL << SYSCFG_EXTICR2_EXTI6_Pos)    /*!< 0x00000F00 */\n#define SYSCFG_EXTICR2_EXTI6            SYSCFG_EXTICR2_EXTI6_Msk               /*!<EXTI 6 configuration */\n#define SYSCFG_EXTICR2_EXTI7_Pos        (12U)\n#define SYSCFG_EXTICR2_EXTI7_Msk        (0xFUL << SYSCFG_EXTICR2_EXTI7_Pos)    /*!< 0x0000F000 */\n#define SYSCFG_EXTICR2_EXTI7            SYSCFG_EXTICR2_EXTI7_Msk               /*!<EXTI 7 configuration */\n/**\n  * @brief   EXTI4 configuration\n  */\n#define SYSCFG_EXTICR2_EXTI4_PA         ((uint32_t)0x00000000)                 /*!<PA[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PB         ((uint32_t)0x00000001)                 /*!<PB[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PC         ((uint32_t)0x00000002)                 /*!<PC[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PD         ((uint32_t)0x00000003)                 /*!<PD[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PE         ((uint32_t)0x00000004)                 /*!<PE[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PF         ((uint32_t)0x00000005)                 /*!<PF[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PG         ((uint32_t)0x00000006)                 /*!<PG[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PH         ((uint32_t)0x00000007)                 /*!<PH[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PI         ((uint32_t)0x00000008)                 /*!<PI[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PJ         ((uint32_t)0x00000009)                 /*!<PJ[4] pin */\n#define SYSCFG_EXTICR2_EXTI4_PK         ((uint32_t)0x0000000A)                 /*!<PK[4] pin */\n/**\n  * @brief   EXTI5 configuration\n  */\n#define SYSCFG_EXTICR2_EXTI5_PA         ((uint32_t)0x00000000)                 /*!<PA[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PB         ((uint32_t)0x00000010)                 /*!<PB[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PC         ((uint32_t)0x00000020)                 /*!<PC[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PD         ((uint32_t)0x00000030)                 /*!<PD[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PE         ((uint32_t)0x00000040)                 /*!<PE[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PF         ((uint32_t)0x00000050)                 /*!<PF[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PG         ((uint32_t)0x00000060)                 /*!<PG[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PH         ((uint32_t)0x00000070)                 /*!<PH[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PI         ((uint32_t)0x00000080)                 /*!<PI[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PJ         ((uint32_t)0x00000090)                 /*!<PJ[5] pin */\n#define SYSCFG_EXTICR2_EXTI5_PK         ((uint32_t)0x000000A0)                 /*!<PK[5] pin */\n/**\n  * @brief   EXTI6 configuration\n  */\n#define SYSCFG_EXTICR2_EXTI6_PA         ((uint32_t)0x00000000)                 /*!<PA[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PB         ((uint32_t)0x00000100)                 /*!<PB[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PC         ((uint32_t)0x00000200)                 /*!<PC[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PD         ((uint32_t)0x00000300)                 /*!<PD[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PE         ((uint32_t)0x00000400)                 /*!<PE[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PF         ((uint32_t)0x00000500)                 /*!<PF[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PG         ((uint32_t)0x00000600)                 /*!<PG[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PH         ((uint32_t)0x00000700)                 /*!<PH[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PI         ((uint32_t)0x00000800)                 /*!<PI[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PJ         ((uint32_t)0x00000900)                 /*!<PJ[6] pin */\n#define SYSCFG_EXTICR2_EXTI6_PK         ((uint32_t)0x00000A00)                 /*!<PK[6] pin */\n\n/**\n  * @brief   EXTI7 configuration\n  */\n#define SYSCFG_EXTICR2_EXTI7_PA         ((uint32_t)0x00000000)                 /*!<PA[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PB         ((uint32_t)0x00001000)                 /*!<PB[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PC         ((uint32_t)0x00002000)                 /*!<PC[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PD         ((uint32_t)0x00003000)                 /*!<PD[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PE         ((uint32_t)0x00004000)                 /*!<PE[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PF         ((uint32_t)0x00005000)                 /*!<PF[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PG         ((uint32_t)0x00006000)                 /*!<PG[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PH         ((uint32_t)0x00007000)                 /*!<PH[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PI         ((uint32_t)0x00008000)                 /*!<PI[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PJ         ((uint32_t)0x00009000)                 /*!<PJ[7] pin */\n#define SYSCFG_EXTICR2_EXTI7_PK         ((uint32_t)0x0000A000)                 /*!<PK[7] pin */\n\n/*****************  Bit definition for SYSCFG_EXTICR3 register  ***************/\n#define SYSCFG_EXTICR3_EXTI8_Pos        (0U)\n#define SYSCFG_EXTICR3_EXTI8_Msk        (0xFUL << SYSCFG_EXTICR3_EXTI8_Pos)    /*!< 0x0000000F */\n#define SYSCFG_EXTICR3_EXTI8            SYSCFG_EXTICR3_EXTI8_Msk               /*!<EXTI 8 configuration */\n#define SYSCFG_EXTICR3_EXTI9_Pos        (4U)\n#define SYSCFG_EXTICR3_EXTI9_Msk        (0xFUL << SYSCFG_EXTICR3_EXTI9_Pos)    /*!< 0x000000F0 */\n#define SYSCFG_EXTICR3_EXTI9            SYSCFG_EXTICR3_EXTI9_Msk               /*!<EXTI 9 configuration */\n#define SYSCFG_EXTICR3_EXTI10_Pos       (8U)\n#define SYSCFG_EXTICR3_EXTI10_Msk       (0xFUL << SYSCFG_EXTICR3_EXTI10_Pos)   /*!< 0x00000F00 */\n#define SYSCFG_EXTICR3_EXTI10           SYSCFG_EXTICR3_EXTI10_Msk              /*!<EXTI 10 configuration */\n#define SYSCFG_EXTICR3_EXTI11_Pos       (12U)\n#define SYSCFG_EXTICR3_EXTI11_Msk       (0xFUL << SYSCFG_EXTICR3_EXTI11_Pos)   /*!< 0x0000F000 */\n#define SYSCFG_EXTICR3_EXTI11           SYSCFG_EXTICR3_EXTI11_Msk              /*!<EXTI 11 configuration */\n\n/**\n  * @brief   EXTI8 configuration\n  */\n#define SYSCFG_EXTICR3_EXTI8_PA         ((uint32_t)0x00000000)                 /*!<PA[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PB         ((uint32_t)0x00000001)                 /*!<PB[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PC         ((uint32_t)0x00000002)                 /*!<PC[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PD         ((uint32_t)0x00000003)                 /*!<PD[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PE         ((uint32_t)0x00000004)                 /*!<PE[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PF         ((uint32_t)0x00000005)                 /*!<PF[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PG         ((uint32_t)0x00000006)                 /*!<PG[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PH         ((uint32_t)0x00000007)                 /*!<PH[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PI         ((uint32_t)0x00000008)                 /*!<PI[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PJ         ((uint32_t)0x00000009)                 /*!<PJ[8] pin */\n#define SYSCFG_EXTICR3_EXTI8_PK         ((uint32_t)0x0000000A)                 /*!<PK[8] pin */\n\n/**\n  * @brief   EXTI9 configuration\n  */\n#define SYSCFG_EXTICR3_EXTI9_PA         ((uint32_t)0x00000000)                 /*!<PA[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PB         ((uint32_t)0x00000010)                 /*!<PB[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PC         ((uint32_t)0x00000020)                 /*!<PC[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PD         ((uint32_t)0x00000030)                 /*!<PD[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PE         ((uint32_t)0x00000040)                 /*!<PE[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PF         ((uint32_t)0x00000050)                 /*!<PF[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PG         ((uint32_t)0x00000060)                 /*!<PG[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PH         ((uint32_t)0x00000070)                 /*!<PH[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PI         ((uint32_t)0x00000080)                 /*!<PI[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PJ         ((uint32_t)0x00000090)                 /*!<PJ[9] pin */\n#define SYSCFG_EXTICR3_EXTI9_PK         ((uint32_t)0x000000A0)                 /*!<PK[9] pin */\n\n/**\n  * @brief   EXTI10 configuration\n  */\n#define SYSCFG_EXTICR3_EXTI10_PA        ((uint32_t)0x00000000)                 /*!<PA[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PB        ((uint32_t)0x00000100)                 /*!<PB[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PC        ((uint32_t)0x00000200)                 /*!<PC[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PD        ((uint32_t)0x00000300)                 /*!<PD[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PE        ((uint32_t)0x00000400)                 /*!<PE[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PF        ((uint32_t)0x00000500)                 /*!<PF[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PG        ((uint32_t)0x00000600)                 /*!<PG[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PH        ((uint32_t)0x00000700)                 /*!<PH[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PI        ((uint32_t)0x00000800)                 /*!<PI[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PJ        ((uint32_t)0x00000900)                 /*!<PJ[10] pin */\n#define SYSCFG_EXTICR3_EXTI10_PK        ((uint32_t)0x00000A00)                 /*!<PK[10] pin */\n\n/**\n  * @brief   EXTI11 configuration\n  */\n#define SYSCFG_EXTICR3_EXTI11_PA        ((uint32_t)0x00000000)                 /*!<PA[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PB        ((uint32_t)0x00001000)                 /*!<PB[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PC        ((uint32_t)0x00002000)                 /*!<PC[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PD        ((uint32_t)0x00003000)                 /*!<PD[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PE        ((uint32_t)0x00004000)                 /*!<PE[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PF        ((uint32_t)0x00005000)                 /*!<PF[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PG        ((uint32_t)0x00006000)                 /*!<PG[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PH        ((uint32_t)0x00007000)                 /*!<PH[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PI        ((uint32_t)0x00008000)                 /*!<PI[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PJ        ((uint32_t)0x00009000)                 /*!<PJ[11] pin */\n#define SYSCFG_EXTICR3_EXTI11_PK        ((uint32_t)0x0000A000)                 /*!<PK[11] pin */\n\n/*****************  Bit definition for SYSCFG_EXTICR4 register  ***************/\n#define SYSCFG_EXTICR4_EXTI12_Pos       (0U)\n#define SYSCFG_EXTICR4_EXTI12_Msk       (0xFUL << SYSCFG_EXTICR4_EXTI12_Pos)   /*!< 0x0000000F */\n#define SYSCFG_EXTICR4_EXTI12           SYSCFG_EXTICR4_EXTI12_Msk              /*!<EXTI 12 configuration */\n#define SYSCFG_EXTICR4_EXTI13_Pos       (4U)\n#define SYSCFG_EXTICR4_EXTI13_Msk       (0xFUL << SYSCFG_EXTICR4_EXTI13_Pos)   /*!< 0x000000F0 */\n#define SYSCFG_EXTICR4_EXTI13           SYSCFG_EXTICR4_EXTI13_Msk              /*!<EXTI 13 configuration */\n#define SYSCFG_EXTICR4_EXTI14_Pos       (8U)\n#define SYSCFG_EXTICR4_EXTI14_Msk       (0xFUL << SYSCFG_EXTICR4_EXTI14_Pos)   /*!< 0x00000F00 */\n#define SYSCFG_EXTICR4_EXTI14           SYSCFG_EXTICR4_EXTI14_Msk              /*!<EXTI 14 configuration */\n#define SYSCFG_EXTICR4_EXTI15_Pos       (12U)\n#define SYSCFG_EXTICR4_EXTI15_Msk       (0xFUL << SYSCFG_EXTICR4_EXTI15_Pos)   /*!< 0x0000F000 */\n#define SYSCFG_EXTICR4_EXTI15           SYSCFG_EXTICR4_EXTI15_Msk              /*!<EXTI 15 configuration */\n/**\n  * @brief   EXTI12 configuration\n  */\n#define SYSCFG_EXTICR4_EXTI12_PA        ((uint32_t)0x00000000)                 /*!<PA[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PB        ((uint32_t)0x00000001)                 /*!<PB[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PC        ((uint32_t)0x00000002)                 /*!<PC[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PD        ((uint32_t)0x00000003)                 /*!<PD[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PE        ((uint32_t)0x00000004)                 /*!<PE[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PF        ((uint32_t)0x00000005)                 /*!<PF[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PG        ((uint32_t)0x00000006)                 /*!<PG[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PH        ((uint32_t)0x00000007)                 /*!<PH[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PI        ((uint32_t)0x00000008)                 /*!<PI[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PJ        ((uint32_t)0x00000009)                 /*!<PJ[12] pin */\n#define SYSCFG_EXTICR4_EXTI12_PK        ((uint32_t)0x0000000A)                 /*!<PK[12] pin */\n/**\n  * @brief   EXTI13 configuration\n  */\n#define SYSCFG_EXTICR4_EXTI13_PA        ((uint32_t)0x00000000)                 /*!<PA[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PB        ((uint32_t)0x00000010)                 /*!<PB[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PC        ((uint32_t)0x00000020)                 /*!<PC[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PD        ((uint32_t)0x00000030)                 /*!<PD[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PE        ((uint32_t)0x00000040)                 /*!<PE[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PF        ((uint32_t)0x00000050)                 /*!<PF[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PG        ((uint32_t)0x00000060)                 /*!<PG[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PH        ((uint32_t)0x00000070)                 /*!<PH[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PI        ((uint32_t)0x00000080)                 /*!<PI[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PJ        ((uint32_t)0x00000090)                 /*!<PJ[13] pin */\n#define SYSCFG_EXTICR4_EXTI13_PK        ((uint32_t)0x000000A0)                 /*!<PK[13] pin */\n/**\n  * @brief   EXTI14 configuration\n  */\n#define SYSCFG_EXTICR4_EXTI14_PA        ((uint32_t)0x00000000)                 /*!<PA[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PB        ((uint32_t)0x00000100)                 /*!<PB[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PC        ((uint32_t)0x00000200)                 /*!<PC[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PD        ((uint32_t)0x00000300)                 /*!<PD[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PE        ((uint32_t)0x00000400)                 /*!<PE[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PF        ((uint32_t)0x00000500)                 /*!<PF[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PG        ((uint32_t)0x00000600)                 /*!<PG[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PH        ((uint32_t)0x00000700)                 /*!<PH[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PI        ((uint32_t)0x00000800)                 /*!<PI[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PJ        ((uint32_t)0x00000900)                 /*!<PJ[14] pin */\n#define SYSCFG_EXTICR4_EXTI14_PK        ((uint32_t)0x00000A00)                 /*!<PK[14] pin */\n/**\n  * @brief   EXTI15 configuration\n  */\n#define SYSCFG_EXTICR4_EXTI15_PA        ((uint32_t)0x00000000)                 /*!<PA[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PB        ((uint32_t)0x00001000)                 /*!<PB[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PC        ((uint32_t)0x00002000)                 /*!<PC[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PD        ((uint32_t)0x00003000)                 /*!<PD[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PE        ((uint32_t)0x00004000)                 /*!<PE[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PF        ((uint32_t)0x00005000)                 /*!<PF[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PG        ((uint32_t)0x00006000)                 /*!<PG[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PH        ((uint32_t)0x00007000)                 /*!<PH[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PI        ((uint32_t)0x00008000)                 /*!<PI[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PJ        ((uint32_t)0x00009000)                 /*!<PJ[15] pin */\n#define SYSCFG_EXTICR4_EXTI15_PK        ((uint32_t)0x0000A000)                 /*!<PK[15] pin */\n\n/******************  Bit definition for SYSCFG_CFGR register  ******************/\n#define SYSCFG_CFGR_PVDL_Pos            (2U)\n#define SYSCFG_CFGR_PVDL_Msk            (0x1UL << SYSCFG_CFGR_PVDL_Pos)        /*!< 0x00000004 */\n#define SYSCFG_CFGR_PVDL                SYSCFG_CFGR_PVDL_Msk                   /*!<PVD lock enable bit */\n#define SYSCFG_CFGR_FLASHL_Pos          (3U)\n#define SYSCFG_CFGR_FLASHL_Msk          (0x1UL << SYSCFG_CFGR_FLASHL_Pos)      /*!< 0x00000008 */\n#define SYSCFG_CFGR_FLASHL              SYSCFG_CFGR_FLASHL_Msk                 /*!<FLASH double ECC error lock bit */\n#define SYSCFG_CFGR_CM7L_Pos            (6U)\n#define SYSCFG_CFGR_CM7L_Msk            (0x1UL << SYSCFG_CFGR_CM7L_Pos)        /*!< 0x00000040 */\n#define SYSCFG_CFGR_CM7L                SYSCFG_CFGR_CM7L_Msk                   /*!<Cortex-M7 LOCKUP (Hardfault) output enable bit */\n#define SYSCFG_CFGR_BKRAML_Pos          (7U)\n#define SYSCFG_CFGR_BKRAML_Msk          (0x1UL << SYSCFG_CFGR_BKRAML_Pos)      /*!< 0x00000080 */\n#define SYSCFG_CFGR_BKRAML              SYSCFG_CFGR_BKRAML_Msk                 /*!<Backup SRAM double ECC error lock bit */\n#define SYSCFG_CFGR_SRAM4L_Pos          (9U)\n#define SYSCFG_CFGR_SRAM4L_Msk          (0x1UL << SYSCFG_CFGR_SRAM4L_Pos)      /*!< 0x00000200 */\n#define SYSCFG_CFGR_SRAM4L              SYSCFG_CFGR_SRAM4L_Msk                 /*!<SRAM4 double ECC error lock bit */\n#define SYSCFG_CFGR_SRAM3L_Pos          (10U)\n#define SYSCFG_CFGR_SRAM3L_Msk          (0x1UL << SYSCFG_CFGR_SRAM3L_Pos)      /*!< 0x00000400 */\n#define SYSCFG_CFGR_SRAM3L              SYSCFG_CFGR_SRAM3L_Msk                 /*!<SRAM3 double ECC error lock bit */\n#define SYSCFG_CFGR_SRAM2L_Pos          (11U)\n#define SYSCFG_CFGR_SRAM2L_Msk          (0x1UL << SYSCFG_CFGR_SRAM2L_Pos)      /*!< 0x00000800 */\n#define SYSCFG_CFGR_SRAM2L              SYSCFG_CFGR_SRAM2L_Msk                 /*!<SRAM2 double ECC error lock bit */\n#define SYSCFG_CFGR_SRAM1L_Pos          (12U)\n#define SYSCFG_CFGR_SRAM1L_Msk          (0x1UL << SYSCFG_CFGR_SRAM1L_Pos)      /*!< 0x00001000 */\n#define SYSCFG_CFGR_SRAM1L              SYSCFG_CFGR_SRAM1L_Msk                 /*!<SRAM1 double ECC error lock bit */\n#define SYSCFG_CFGR_DTCML_Pos           (13U)\n#define SYSCFG_CFGR_DTCML_Msk           (0x1UL << SYSCFG_CFGR_DTCML_Pos)       /*!< 0x00002000 */\n#define SYSCFG_CFGR_DTCML               SYSCFG_CFGR_DTCML_Msk                  /*!<DTCM double ECC error lock bit */\n#define SYSCFG_CFGR_ITCML_Pos           (14U)\n#define SYSCFG_CFGR_ITCML_Msk           (0x1UL << SYSCFG_CFGR_ITCML_Pos)       /*!< 0x00004000 */\n#define SYSCFG_CFGR_ITCML               SYSCFG_CFGR_ITCML_Msk                  /*!<ITCM double ECC error lock bit */\n#define SYSCFG_CFGR_AXISRAML_Pos        (15U)\n#define SYSCFG_CFGR_AXISRAML_Msk        (0x1UL << SYSCFG_CFGR_AXISRAML_Pos)    /*!< 0x00008000 */\n#define SYSCFG_CFGR_AXISRAML            SYSCFG_CFGR_AXISRAML_Msk               /*!<AXISRAM double ECC error lock bit */\n\n/******************  Bit definition for SYSCFG_CCCSR register  ******************/\n#define SYSCFG_CCCSR_EN_Pos             (0U)\n#define SYSCFG_CCCSR_EN_Msk             (0x1UL << SYSCFG_CCCSR_EN_Pos)         /*!< 0x00000001 */\n#define SYSCFG_CCCSR_EN                 SYSCFG_CCCSR_EN_Msk                    /*!< I/O compensation cell enable */\n#define SYSCFG_CCCSR_CS_Pos             (1U)\n#define SYSCFG_CCCSR_CS_Msk             (0x1UL << SYSCFG_CCCSR_CS_Pos)         /*!< 0x00000002 */\n#define SYSCFG_CCCSR_CS                 SYSCFG_CCCSR_CS_Msk                    /*!< I/O compensation cell code selection */\n#define SYSCFG_CCCSR_READY_Pos          (8U)\n#define SYSCFG_CCCSR_READY_Msk          (0x1UL << SYSCFG_CCCSR_READY_Pos)      /*!< 0x00000100 */\n#define SYSCFG_CCCSR_READY              SYSCFG_CCCSR_READY_Msk                 /*!< I/O compensation cell ready flag */\n#define SYSCFG_CCCSR_HSLV_Pos           (16U)\n#define SYSCFG_CCCSR_HSLV_Msk           (0x1UL << SYSCFG_CCCSR_HSLV_Pos)       /*!< 0x00010000 */\n#define SYSCFG_CCCSR_HSLV               SYSCFG_CCCSR_HSLV_Msk                  /*!< High-speed at low-voltage */\n\n/******************  Bit definition for SYSCFG_CCVR register  *******************/\n#define SYSCFG_CCVR_NCV_Pos             (0U)\n#define SYSCFG_CCVR_NCV_Msk             (0xFUL << SYSCFG_CCVR_NCV_Pos)         /*!< 0x0000000F */\n#define SYSCFG_CCVR_NCV                 SYSCFG_CCVR_NCV_Msk                    /*!< NMOS compensation value */\n#define SYSCFG_CCVR_PCV_Pos             (4U)\n#define SYSCFG_CCVR_PCV_Msk             (0xFUL << SYSCFG_CCVR_PCV_Pos)         /*!< 0x000000F0 */\n#define SYSCFG_CCVR_PCV                 SYSCFG_CCVR_PCV_Msk                    /*!< PMOS compensation value */\n\n/******************  Bit definition for SYSCFG_CCCR register  *******************/\n#define SYSCFG_CCCR_NCC_Pos             (0U)\n#define SYSCFG_CCCR_NCC_Msk             (0xFUL << SYSCFG_CCCR_NCC_Pos)         /*!< 0x0000000F */\n#define SYSCFG_CCCR_NCC                 SYSCFG_CCCR_NCC_Msk                    /*!< NMOS compensation code */\n#define SYSCFG_CCCR_PCC_Pos             (4U)\n#define SYSCFG_CCCR_PCC_Msk             (0xFUL << SYSCFG_CCCR_PCC_Pos)         /*!< 0x000000F0 */\n#define SYSCFG_CCCR_PCC                 SYSCFG_CCCR_PCC_Msk                    /*!< PMOS compensation code */\n/******************  Bit definition for SYSCFG_PWRCR register  *******************/\n#define SYSCFG_PWRCR_ODEN_Pos           (0U)\n#define SYSCFG_PWRCR_ODEN_Msk           (0x1UL << SYSCFG_PWRCR_ODEN_Pos)         /*!< 0x00000001 */\n#define SYSCFG_PWRCR_ODEN               SYSCFG_PWRCR_ODEN_Msk                    /*!< PWR overdrive enable */\n\n/******************  Bit definition for SYSCFG_PKGR register  *******************/\n#define SYSCFG_PKGR_PKG_Pos             (0U)\n#define SYSCFG_PKGR_PKG_Msk             (0xFUL << SYSCFG_PKGR_PKG_Pos)         /*!< 0x0000000F */\n#define SYSCFG_PKGR_PKG                 SYSCFG_PKGR_PKG_Msk                    /*!< Package type */\n\n/******************  Bit definition for SYSCFG_UR0 register  *******************/\n#define SYSCFG_UR0_BKS_Pos              (0U)\n#define SYSCFG_UR0_BKS_Msk              (0x1UL << SYSCFG_UR0_BKS_Pos)          /*!< 0x00000001 */\n#define SYSCFG_UR0_BKS                  SYSCFG_UR0_BKS_Msk                     /*!< Bank Swap */\n#define SYSCFG_UR0_RDP_Pos              (16U)\n#define SYSCFG_UR0_RDP_Msk              (0xFFUL << SYSCFG_UR0_RDP_Pos)         /*!< 0x00FF0000 */\n#define SYSCFG_UR0_RDP                  SYSCFG_UR0_RDP_Msk                     /*!< Readout protection */\n\n/******************  Bit definition for SYSCFG_UR2 register  *******************/\n#define SYSCFG_UR2_BORH_Pos             (0U)\n#define SYSCFG_UR2_BORH_Msk             (0x3UL << SYSCFG_UR2_BORH_Pos)         /*!< 0x00000003 */\n#define SYSCFG_UR2_BORH                 SYSCFG_UR2_BORH_Msk                    /*!< Brown Out Reset High level */\n#define SYSCFG_UR2_BORH_0               (0x1UL << SYSCFG_UR2_BORH_Pos)         /*!< 0x00000001 */\n#define SYSCFG_UR2_BORH_1               (0x2UL << SYSCFG_UR2_BORH_Pos)         /*!< 0x00000002 */\n#define SYSCFG_UR2_BOOT_ADD0_Pos        (16U)\n#define SYSCFG_UR2_BOOT_ADD0_Msk        (0xFFFFUL << SYSCFG_UR2_BOOT_ADD0_Pos) /*!< 0xFFFF0000 */\n#define SYSCFG_UR2_BOOT_ADD0            SYSCFG_UR2_BOOT_ADD0_Msk               /*!< Core Boot Address 0 */\n/******************  Bit definition for SYSCFG_UR3 register  *******************/\n#define SYSCFG_UR3_BOOT_ADD1_Pos        (0U)\n#define SYSCFG_UR3_BOOT_ADD1_Msk        (0xFFFFUL << SYSCFG_UR3_BOOT_ADD1_Pos) /*!< 0x0000FFFF */\n#define SYSCFG_UR3_BOOT_ADD1            SYSCFG_UR3_BOOT_ADD1_Msk               /*!< Core Boot Address 1 */\n\n  /******************  Bit definition for SYSCFG_UR4 register  *******************/\n\n#define SYSCFG_UR4_MEPAD_BANK1_Pos      (16U)\n#define SYSCFG_UR4_MEPAD_BANK1_Msk      (0x1UL << SYSCFG_UR4_MEPAD_BANK1_Pos)  /*!< 0x00010000 */\n#define SYSCFG_UR4_MEPAD_BANK1          SYSCFG_UR4_MEPAD_BANK1_Msk             /*!< Mass Erase Protected Area Disabled for bank 1 */\n\n/******************  Bit definition for SYSCFG_UR5 register  *******************/\n#define SYSCFG_UR5_MESAD_BANK1_Pos      (0U)\n#define SYSCFG_UR5_MESAD_BANK1_Msk      (0x1UL << SYSCFG_UR5_MESAD_BANK1_Pos)  /*!< 0x00000001 */\n#define SYSCFG_UR5_MESAD_BANK1          SYSCFG_UR5_MESAD_BANK1_Msk             /*!< Mass erase secured area disabled for bank 1 */\n#define SYSCFG_UR5_WRPN_BANK1_Pos       (16U)\n#define SYSCFG_UR5_WRPN_BANK1_Msk       (0xFFUL << SYSCFG_UR5_WRPN_BANK1_Pos)  /*!< 0x00FF0000 */\n#define SYSCFG_UR5_WRPN_BANK1           SYSCFG_UR5_WRPN_BANK1_Msk              /*!< Write protection for flash bank 1 */\n\n/******************  Bit definition for SYSCFG_UR6 register  *******************/\n#define SYSCFG_UR6_PABEG_BANK1_Pos      (0U)\n#define SYSCFG_UR6_PABEG_BANK1_Msk      (0xFFFUL << SYSCFG_UR6_PABEG_BANK1_Pos) /*!< 0x00000FFF */\n#define SYSCFG_UR6_PABEG_BANK1          SYSCFG_UR6_PABEG_BANK1_Msk             /*!< Protected area start address for bank 1 */\n#define SYSCFG_UR6_PAEND_BANK1_Pos      (16U)\n#define SYSCFG_UR6_PAEND_BANK1_Msk      (0xFFFUL << SYSCFG_UR6_PAEND_BANK1_Pos) /*!< 0x0FFF0000 */\n#define SYSCFG_UR6_PAEND_BANK1          SYSCFG_UR6_PAEND_BANK1_Msk             /*!< Protected area end address for bank 1 */\n\n/******************  Bit definition for SYSCFG_UR7 register  *******************/\n#define SYSCFG_UR7_SABEG_BANK1_Pos      (0U)\n#define SYSCFG_UR7_SABEG_BANK1_Msk      (0xFFFUL << SYSCFG_UR7_SABEG_BANK1_Pos) /*!< 0x00000FFF */\n#define SYSCFG_UR7_SABEG_BANK1          SYSCFG_UR7_SABEG_BANK1_Msk             /*!< Secured area start address for bank 1 */\n#define SYSCFG_UR7_SAEND_BANK1_Pos      (16U)\n#define SYSCFG_UR7_SAEND_BANK1_Msk      (0xFFFUL << SYSCFG_UR7_SAEND_BANK1_Pos) /*!< 0x0FFF0000 */\n#define SYSCFG_UR7_SAEND_BANK1          SYSCFG_UR7_SAEND_BANK1_Msk             /*!< Secured area end address for bank 1 */\n\n/******************  Bit definition for SYSCFG_UR8 register  *******************/\n#define SYSCFG_UR8_MEPAD_BANK2_Pos      (0U)\n#define SYSCFG_UR8_MEPAD_BANK2_Msk      (0x1UL << SYSCFG_UR8_MEPAD_BANK2_Pos)  /*!< 0x00000001 */\n#define SYSCFG_UR8_MEPAD_BANK2          SYSCFG_UR8_MEPAD_BANK2_Msk             /*!< Mass erase Protected area disabled for bank 2 */\n#define SYSCFG_UR8_MESAD_BANK2_Pos      (16U)\n#define SYSCFG_UR8_MESAD_BANK2_Msk      (0x1UL << SYSCFG_UR8_MESAD_BANK2_Pos)  /*!< 0x00010000 */\n#define SYSCFG_UR8_MESAD_BANK2          SYSCFG_UR8_MESAD_BANK2_Msk             /*!< Mass Erase Secured Area Disabled for bank 2 */\n\n/******************  Bit definition for SYSCFG_UR9 register  *******************/\n#define SYSCFG_UR9_WRPN_BANK2_Pos       (0U)\n#define SYSCFG_UR9_WRPN_BANK2_Msk       (0xFFUL << SYSCFG_UR9_WRPN_BANK2_Pos)  /*!< 0x000000FF */\n#define SYSCFG_UR9_WRPN_BANK2           SYSCFG_UR9_WRPN_BANK2_Msk              /*!< Write protection for flash bank 2 */\n#define SYSCFG_UR9_PABEG_BANK2_Pos      (16U)\n#define SYSCFG_UR9_PABEG_BANK2_Msk      (0xFFFUL << SYSCFG_UR9_PABEG_BANK2_Pos) /*!< 0x0FFF0000 */\n#define SYSCFG_UR9_PABEG_BANK2          SYSCFG_UR9_PABEG_BANK2_Msk             /*!< Protected area start address for bank 2 */\n\n/******************  Bit definition for SYSCFG_UR10 register  *******************/\n#define SYSCFG_UR10_PAEND_BANK2_Pos     (0U)\n#define SYSCFG_UR10_PAEND_BANK2_Msk     (0xFFFUL << SYSCFG_UR10_PAEND_BANK2_Pos) /*!< 0x00000FFF */\n#define SYSCFG_UR10_PAEND_BANK2         SYSCFG_UR10_PAEND_BANK2_Msk            /*!< Protected area end address for bank 2 */\n#define SYSCFG_UR10_SABEG_BANK2_Pos     (16U)\n#define SYSCFG_UR10_SABEG_BANK2_Msk     (0xFFFUL << SYSCFG_UR10_SABEG_BANK2_Pos) /*!< 0x0FFF0000 */\n#define SYSCFG_UR10_SABEG_BANK2         SYSCFG_UR10_SABEG_BANK2_Msk            /*!< Secured area start address for bank 2 */\n\n/******************  Bit definition for SYSCFG_UR11 register  *******************/\n#define SYSCFG_UR11_SAEND_BANK2_Pos     (0U)\n#define SYSCFG_UR11_SAEND_BANK2_Msk     (0xFFFUL << SYSCFG_UR11_SAEND_BANK2_Pos) /*!< 0x00000FFF */\n#define SYSCFG_UR11_SAEND_BANK2         SYSCFG_UR11_SAEND_BANK2_Msk            /*!< Secured area end address for bank 2 */\n#define SYSCFG_UR11_IWDG1M_Pos          (16U)\n#define SYSCFG_UR11_IWDG1M_Msk          (0x1UL << SYSCFG_UR11_IWDG1M_Pos)      /*!< 0x00010000 */\n#define SYSCFG_UR11_IWDG1M              SYSCFG_UR11_IWDG1M_Msk                 /*!< Independent Watchdog 1 mode (SW or HW) */\n\n/******************  Bit definition for SYSCFG_UR12 register  *******************/\n\n#define SYSCFG_UR12_SECURE_Pos          (16U)\n#define SYSCFG_UR12_SECURE_Msk          (0x1UL << SYSCFG_UR12_SECURE_Pos)      /*!< 0x00010000 */\n#define SYSCFG_UR12_SECURE              SYSCFG_UR12_SECURE_Msk                 /*!< Secure mode status */\n\n/******************  Bit definition for SYSCFG_UR13 register  *******************/\n#define SYSCFG_UR13_SDRS_Pos            (0U)\n#define SYSCFG_UR13_SDRS_Msk            (0x3UL << SYSCFG_UR13_SDRS_Pos)        /*!< 0x00000003 */\n#define SYSCFG_UR13_SDRS                SYSCFG_UR13_SDRS_Msk                   /*!< Secured DTCM RAM Size */\n#define SYSCFG_UR13_D1SBRST_Pos         (16U)\n#define SYSCFG_UR13_D1SBRST_Msk         (0x1UL << SYSCFG_UR13_D1SBRST_Pos)     /*!< 0x00010000 */\n#define SYSCFG_UR13_D1SBRST             SYSCFG_UR13_D1SBRST_Msk                /*!< D1 Standby reset */\n\n/******************  Bit definition for SYSCFG_UR14 register  *******************/\n#define SYSCFG_UR14_D1STPRST_Pos        (0U)\n#define SYSCFG_UR14_D1STPRST_Msk        (0x1UL << SYSCFG_UR14_D1STPRST_Pos)    /*!< 0x00000001 */\n#define SYSCFG_UR14_D1STPRST            SYSCFG_UR14_D1STPRST_Msk               /*!< D1 Stop Reset */\n\n/******************  Bit definition for SYSCFG_UR15 register  *******************/\n#define SYSCFG_UR15_FZIWDGSTB_Pos       (16U)\n#define SYSCFG_UR15_FZIWDGSTB_Msk       (0x1UL << SYSCFG_UR15_FZIWDGSTB_Pos)   /*!< 0x00010000 */\n#define SYSCFG_UR15_FZIWDGSTB           SYSCFG_UR15_FZIWDGSTB_Msk              /*!< Freeze independent watchdogs in Standby mode */\n\n/******************  Bit definition for SYSCFG_UR16 register  *******************/\n#define SYSCFG_UR16_FZIWDGSTP_Pos       (0U)\n#define SYSCFG_UR16_FZIWDGSTP_Msk       (0x1UL << SYSCFG_UR16_FZIWDGSTP_Pos)   /*!< 0x00000001 */\n#define SYSCFG_UR16_FZIWDGSTP           SYSCFG_UR16_FZIWDGSTP_Msk              /*!< Freeze independent watchdogs in Stop mode */\n#define SYSCFG_UR16_PKP_Pos             (16U)\n#define SYSCFG_UR16_PKP_Msk             (0x1UL << SYSCFG_UR16_PKP_Pos)         /*!< 0x00010000 */\n#define SYSCFG_UR16_PKP                 SYSCFG_UR16_PKP_Msk                    /*!< Private key programmed */\n\n/******************  Bit definition for SYSCFG_UR17 register  *******************/\n#define SYSCFG_UR17_IOHSLV_Pos          (0U)\n#define SYSCFG_UR17_IOHSLV_Msk          (0x1UL << SYSCFG_UR17_IOHSLV_Pos)      /*!< 0x00000001 */\n#define SYSCFG_UR17_IOHSLV              SYSCFG_UR17_IOHSLV_Msk                 /*!< I/O high speed / low voltage */\n\n\n/******************************************************************************/\n/*                                                                            */\n/*                                    TIM                                     */\n/*                                                                            */\n/******************************************************************************/\n#define TIM_BREAK_INPUT_SUPPORT             /*!<TIM Break input feature */\n\n/*******************  Bit definition for TIM_CR1 register  ********************/\n#define TIM_CR1_CEN_Pos           (0U)\n#define TIM_CR1_CEN_Msk           (0x1UL << TIM_CR1_CEN_Pos)                   /*!< 0x00000001 */\n#define TIM_CR1_CEN               TIM_CR1_CEN_Msk                              /*!<Counter enable */\n#define TIM_CR1_UDIS_Pos          (1U)\n#define TIM_CR1_UDIS_Msk          (0x1UL << TIM_CR1_UDIS_Pos)                  /*!< 0x00000002 */\n#define TIM_CR1_UDIS              TIM_CR1_UDIS_Msk                             /*!<Update disable */\n#define TIM_CR1_URS_Pos           (2U)\n#define TIM_CR1_URS_Msk           (0x1UL << TIM_CR1_URS_Pos)                   /*!< 0x00000004 */\n#define TIM_CR1_URS               TIM_CR1_URS_Msk                              /*!<Update request source */\n#define TIM_CR1_OPM_Pos           (3U)\n#define TIM_CR1_OPM_Msk           (0x1UL << TIM_CR1_OPM_Pos)                   /*!< 0x00000008 */\n#define TIM_CR1_OPM               TIM_CR1_OPM_Msk                              /*!<One pulse mode */\n#define TIM_CR1_DIR_Pos           (4U)\n#define TIM_CR1_DIR_Msk           (0x1UL << TIM_CR1_DIR_Pos)                   /*!< 0x00000010 */\n#define TIM_CR1_DIR               TIM_CR1_DIR_Msk                              /*!<Direction */\n\n#define TIM_CR1_CMS_Pos           (5U)\n#define TIM_CR1_CMS_Msk           (0x3UL << TIM_CR1_CMS_Pos)                   /*!< 0x00000060 */\n#define TIM_CR1_CMS               TIM_CR1_CMS_Msk                              /*!<CMS[1:0] bits (Center-aligned mode selection) */\n#define TIM_CR1_CMS_0             (0x1UL << TIM_CR1_CMS_Pos)                    /*!< 0x00000020 */\n#define TIM_CR1_CMS_1             (0x2UL << TIM_CR1_CMS_Pos)                    /*!< 0x00000040 */\n\n#define TIM_CR1_ARPE_Pos          (7U)\n#define TIM_CR1_ARPE_Msk          (0x1UL << TIM_CR1_ARPE_Pos)                  /*!< 0x00000080 */\n#define TIM_CR1_ARPE              TIM_CR1_ARPE_Msk                             /*!<Auto-reload preload enable */\n\n#define TIM_CR1_CKD_Pos           (8U)\n#define TIM_CR1_CKD_Msk           (0x3UL << TIM_CR1_CKD_Pos)                   /*!< 0x00000300 */\n#define TIM_CR1_CKD               TIM_CR1_CKD_Msk                              /*!<CKD[1:0] bits (clock division) */\n#define TIM_CR1_CKD_0             (0x1UL << TIM_CR1_CKD_Pos)                    /*!< 0x00000100 */\n#define TIM_CR1_CKD_1             (0x2UL << TIM_CR1_CKD_Pos)                    /*!< 0x00000200 */\n\n#define TIM_CR1_UIFREMAP_Pos      (11U)\n#define TIM_CR1_UIFREMAP_Msk      (0x1UL << TIM_CR1_UIFREMAP_Pos)              /*!< 0x00000800 */\n#define TIM_CR1_UIFREMAP          TIM_CR1_UIFREMAP_Msk                         /*!<Update interrupt flag remap */\n\n/*******************  Bit definition for TIM_CR2 register  ********************/\n#define TIM_CR2_CCPC_Pos          (0U)\n#define TIM_CR2_CCPC_Msk          (0x1UL << TIM_CR2_CCPC_Pos)                  /*!< 0x00000001 */\n#define TIM_CR2_CCPC              TIM_CR2_CCPC_Msk                             /*!<Capture/Compare Preloaded Control */\n#define TIM_CR2_CCUS_Pos          (2U)\n#define TIM_CR2_CCUS_Msk          (0x1UL << TIM_CR2_CCUS_Pos)                  /*!< 0x00000004 */\n#define TIM_CR2_CCUS              TIM_CR2_CCUS_Msk                             /*!<Capture/Compare Control Update Selection */\n#define TIM_CR2_CCDS_Pos          (3U)\n#define TIM_CR2_CCDS_Msk          (0x1UL << TIM_CR2_CCDS_Pos)                  /*!< 0x00000008 */\n#define TIM_CR2_CCDS              TIM_CR2_CCDS_Msk                             /*!<Capture/Compare DMA Selection */\n\n#define TIM_CR2_MMS_Pos           (4U)\n#define TIM_CR2_MMS_Msk           (0x7UL << TIM_CR2_MMS_Pos)                   /*!< 0x00000070 */\n#define TIM_CR2_MMS               TIM_CR2_MMS_Msk                              /*!<MMS[2:0] bits (Master Mode Selection) */\n#define TIM_CR2_MMS_0             (0x1UL << TIM_CR2_MMS_Pos)                    /*!< 0x00000010 */\n#define TIM_CR2_MMS_1             (0x2UL << TIM_CR2_MMS_Pos)                    /*!< 0x00000020 */\n#define TIM_CR2_MMS_2             (0x4UL << TIM_CR2_MMS_Pos)                    /*!< 0x00000040 */\n\n#define TIM_CR2_TI1S_Pos          (7U)\n#define TIM_CR2_TI1S_Msk          (0x1UL << TIM_CR2_TI1S_Pos)                  /*!< 0x00000080 */\n#define TIM_CR2_TI1S              TIM_CR2_TI1S_Msk                             /*!<TI1 Selection */\n#define TIM_CR2_OIS1_Pos          (8U)\n#define TIM_CR2_OIS1_Msk          (0x1UL << TIM_CR2_OIS1_Pos)                  /*!< 0x00000100 */\n#define TIM_CR2_OIS1              TIM_CR2_OIS1_Msk                             /*!<Output Idle state 1 (OC1 output) */\n#define TIM_CR2_OIS1N_Pos         (9U)\n#define TIM_CR2_OIS1N_Msk         (0x1UL << TIM_CR2_OIS1N_Pos)                 /*!< 0x00000200 */\n#define TIM_CR2_OIS1N             TIM_CR2_OIS1N_Msk                            /*!<Output Idle state 1 (OC1N output) */\n#define TIM_CR2_OIS2_Pos          (10U)\n#define TIM_CR2_OIS2_Msk          (0x1UL << TIM_CR2_OIS2_Pos)                  /*!< 0x00000400 */\n#define TIM_CR2_OIS2              TIM_CR2_OIS2_Msk                             /*!<Output Idle state 2 (OC2 output) */\n#define TIM_CR2_OIS2N_Pos         (11U)\n#define TIM_CR2_OIS2N_Msk         (0x1UL << TIM_CR2_OIS2N_Pos)                 /*!< 0x00000800 */\n#define TIM_CR2_OIS2N             TIM_CR2_OIS2N_Msk                            /*!<Output Idle state 2 (OC2N output) */\n#define TIM_CR2_OIS3_Pos          (12U)\n#define TIM_CR2_OIS3_Msk          (0x1UL << TIM_CR2_OIS3_Pos)                  /*!< 0x00001000 */\n#define TIM_CR2_OIS3              TIM_CR2_OIS3_Msk                             /*!<Output Idle state 3 (OC3 output) */\n#define TIM_CR2_OIS3N_Pos         (13U)\n#define TIM_CR2_OIS3N_Msk         (0x1UL << TIM_CR2_OIS3N_Pos)                 /*!< 0x00002000 */\n#define TIM_CR2_OIS3N             TIM_CR2_OIS3N_Msk                            /*!<Output Idle state 3 (OC3N output) */\n#define TIM_CR2_OIS4_Pos          (14U)\n#define TIM_CR2_OIS4_Msk          (0x1UL << TIM_CR2_OIS4_Pos)                  /*!< 0x00004000 */\n#define TIM_CR2_OIS4              TIM_CR2_OIS4_Msk                             /*!<Output Idle state 4 (OC4 output) */\n#define TIM_CR2_OIS5_Pos          (16U)\n#define TIM_CR2_OIS5_Msk          (0x1UL << TIM_CR2_OIS5_Pos)                  /*!< 0x00010000 */\n#define TIM_CR2_OIS5              TIM_CR2_OIS5_Msk                             /*!<Output Idle state 4 (OC4 output) */\n#define TIM_CR2_OIS6_Pos          (18U)\n#define TIM_CR2_OIS6_Msk          (0x1UL << TIM_CR2_OIS6_Pos)                  /*!< 0x00040000 */\n#define TIM_CR2_OIS6              TIM_CR2_OIS6_Msk                             /*!<Output Idle state 4 (OC4 output) */\n\n#define TIM_CR2_MMS2_Pos          (20U)\n#define TIM_CR2_MMS2_Msk          (0xFUL << TIM_CR2_MMS2_Pos)                  /*!< 0x00F00000 */\n#define TIM_CR2_MMS2              TIM_CR2_MMS2_Msk                             /*!<MMS[2:0] bits (Master Mode Selection) */\n#define TIM_CR2_MMS2_0            (0x1UL << TIM_CR2_MMS2_Pos)                   /*!< 0x00100000 */\n#define TIM_CR2_MMS2_1            (0x2UL << TIM_CR2_MMS2_Pos)                   /*!< 0x00200000 */\n#define TIM_CR2_MMS2_2            (0x4UL << TIM_CR2_MMS2_Pos)                   /*!< 0x00400000 */\n#define TIM_CR2_MMS2_3            (0x8UL << TIM_CR2_MMS2_Pos)                   /*!< 0x00800000 */\n\n/*******************  Bit definition for TIM_SMCR register  *******************/\n#define TIM_SMCR_SMS_Pos          (0U)\n#define TIM_SMCR_SMS_Msk          (0x10007UL << TIM_SMCR_SMS_Pos)              /*!< 0x00010007 */\n#define TIM_SMCR_SMS              TIM_SMCR_SMS_Msk                             /*!<SMS[2:0] bits (Slave mode selection) */\n#define TIM_SMCR_SMS_0            (0x00001UL << TIM_SMCR_SMS_Pos)               /*!< 0x00000001 */\n#define TIM_SMCR_SMS_1            (0x00002UL << TIM_SMCR_SMS_Pos)               /*!< 0x00000002 */\n#define TIM_SMCR_SMS_2            (0x00004UL << TIM_SMCR_SMS_Pos)               /*!< 0x00000004 */\n#define TIM_SMCR_SMS_3            (0x10000UL << TIM_SMCR_SMS_Pos)               /*!< 0x00010000 */\n\n#define TIM_SMCR_TS_Pos           (4U)\n#define TIM_SMCR_TS_Msk           (0x30007UL << TIM_SMCR_TS_Pos)               /*!< 0x00300070 */\n#define TIM_SMCR_TS               TIM_SMCR_TS_Msk                              /*!<TS[4:0] bits (Trigger selection) */\n#define TIM_SMCR_TS_0             (0x00001UL << TIM_SMCR_TS_Pos)                /*!< 0x00000010 */\n#define TIM_SMCR_TS_1             (0x00002UL << TIM_SMCR_TS_Pos)                /*!< 0x00000020 */\n#define TIM_SMCR_TS_2             (0x00004UL << TIM_SMCR_TS_Pos)                /*!< 0x00000040 */\n#define TIM_SMCR_TS_3             (0x10000UL << TIM_SMCR_TS_Pos)                /*!< 0x00100000 */\n#define TIM_SMCR_TS_4             (0x20000UL << TIM_SMCR_TS_Pos)                /*!< 0x00200000 */\n\n#define TIM_SMCR_MSM_Pos          (7U)\n#define TIM_SMCR_MSM_Msk          (0x1UL << TIM_SMCR_MSM_Pos)                  /*!< 0x00000080 */\n#define TIM_SMCR_MSM              TIM_SMCR_MSM_Msk                             /*!<Master/slave mode */\n\n#define TIM_SMCR_ETF_Pos          (8U)\n#define TIM_SMCR_ETF_Msk          (0xFUL << TIM_SMCR_ETF_Pos)                  /*!< 0x00000F00 */\n#define TIM_SMCR_ETF              TIM_SMCR_ETF_Msk                             /*!<ETF[3:0] bits (External trigger filter) */\n#define TIM_SMCR_ETF_0            (0x1UL << TIM_SMCR_ETF_Pos)                   /*!< 0x00000100 */\n#define TIM_SMCR_ETF_1            (0x2UL << TIM_SMCR_ETF_Pos)                   /*!< 0x00000200 */\n#define TIM_SMCR_ETF_2            (0x4UL << TIM_SMCR_ETF_Pos)                   /*!< 0x00000400 */\n#define TIM_SMCR_ETF_3            (0x8UL << TIM_SMCR_ETF_Pos)                   /*!< 0x00000800 */\n\n#define TIM_SMCR_ETPS_Pos         (12U)\n#define TIM_SMCR_ETPS_Msk         (0x3UL << TIM_SMCR_ETPS_Pos)                 /*!< 0x00003000 */\n#define TIM_SMCR_ETPS             TIM_SMCR_ETPS_Msk                            /*!<ETPS[1:0] bits (External trigger prescaler) */\n#define TIM_SMCR_ETPS_0           (0x1UL << TIM_SMCR_ETPS_Pos)                  /*!< 0x00001000 */\n#define TIM_SMCR_ETPS_1           (0x2UL << TIM_SMCR_ETPS_Pos)                  /*!< 0x00002000 */\n\n#define TIM_SMCR_ECE_Pos          (14U)\n#define TIM_SMCR_ECE_Msk          (0x1UL << TIM_SMCR_ECE_Pos)                  /*!< 0x00004000 */\n#define TIM_SMCR_ECE              TIM_SMCR_ECE_Msk                             /*!<External clock enable */\n#define TIM_SMCR_ETP_Pos          (15U)\n#define TIM_SMCR_ETP_Msk          (0x1UL << TIM_SMCR_ETP_Pos)                  /*!< 0x00008000 */\n#define TIM_SMCR_ETP              TIM_SMCR_ETP_Msk                             /*!<External trigger polarity */\n\n/*******************  Bit definition for TIM_DIER register  *******************/\n#define TIM_DIER_UIE_Pos          (0U)\n#define TIM_DIER_UIE_Msk          (0x1UL << TIM_DIER_UIE_Pos)                  /*!< 0x00000001 */\n#define TIM_DIER_UIE              TIM_DIER_UIE_Msk                             /*!<Update interrupt enable */\n#define TIM_DIER_CC1IE_Pos        (1U)\n#define TIM_DIER_CC1IE_Msk        (0x1UL << TIM_DIER_CC1IE_Pos)                /*!< 0x00000002 */\n#define TIM_DIER_CC1IE            TIM_DIER_CC1IE_Msk                           /*!<Capture/Compare 1 interrupt enable */\n#define TIM_DIER_CC2IE_Pos        (2U)\n#define TIM_DIER_CC2IE_Msk        (0x1UL << TIM_DIER_CC2IE_Pos)                /*!< 0x00000004 */\n#define TIM_DIER_CC2IE            TIM_DIER_CC2IE_Msk                           /*!<Capture/Compare 2 interrupt enable */\n#define TIM_DIER_CC3IE_Pos        (3U)\n#define TIM_DIER_CC3IE_Msk        (0x1UL << TIM_DIER_CC3IE_Pos)                /*!< 0x00000008 */\n#define TIM_DIER_CC3IE            TIM_DIER_CC3IE_Msk                           /*!<Capture/Compare 3 interrupt enable */\n#define TIM_DIER_CC4IE_Pos        (4U)\n#define TIM_DIER_CC4IE_Msk        (0x1UL << TIM_DIER_CC4IE_Pos)                /*!< 0x00000010 */\n#define TIM_DIER_CC4IE            TIM_DIER_CC4IE_Msk                           /*!<Capture/Compare 4 interrupt enable */\n#define TIM_DIER_COMIE_Pos        (5U)\n#define TIM_DIER_COMIE_Msk        (0x1UL << TIM_DIER_COMIE_Pos)                /*!< 0x00000020 */\n#define TIM_DIER_COMIE            TIM_DIER_COMIE_Msk                           /*!<COM interrupt enable */\n#define TIM_DIER_TIE_Pos          (6U)\n#define TIM_DIER_TIE_Msk          (0x1UL << TIM_DIER_TIE_Pos)                  /*!< 0x00000040 */\n#define TIM_DIER_TIE              TIM_DIER_TIE_Msk                             /*!<Trigger interrupt enable */\n#define TIM_DIER_BIE_Pos          (7U)\n#define TIM_DIER_BIE_Msk          (0x1UL << TIM_DIER_BIE_Pos)                  /*!< 0x00000080 */\n#define TIM_DIER_BIE              TIM_DIER_BIE_Msk                             /*!<Break interrupt enable */\n#define TIM_DIER_UDE_Pos          (8U)\n#define TIM_DIER_UDE_Msk          (0x1UL << TIM_DIER_UDE_Pos)                  /*!< 0x00000100 */\n#define TIM_DIER_UDE              TIM_DIER_UDE_Msk                             /*!<Update DMA request enable */\n#define TIM_DIER_CC1DE_Pos        (9U)\n#define TIM_DIER_CC1DE_Msk        (0x1UL << TIM_DIER_CC1DE_Pos)                /*!< 0x00000200 */\n#define TIM_DIER_CC1DE            TIM_DIER_CC1DE_Msk                           /*!<Capture/Compare 1 DMA request enable */\n#define TIM_DIER_CC2DE_Pos        (10U)\n#define TIM_DIER_CC2DE_Msk        (0x1UL << TIM_DIER_CC2DE_Pos)                /*!< 0x00000400 */\n#define TIM_DIER_CC2DE            TIM_DIER_CC2DE_Msk                           /*!<Capture/Compare 2 DMA request enable */\n#define TIM_DIER_CC3DE_Pos        (11U)\n#define TIM_DIER_CC3DE_Msk        (0x1UL << TIM_DIER_CC3DE_Pos)                /*!< 0x00000800 */\n#define TIM_DIER_CC3DE            TIM_DIER_CC3DE_Msk                           /*!<Capture/Compare 3 DMA request enable */\n#define TIM_DIER_CC4DE_Pos        (12U)\n#define TIM_DIER_CC4DE_Msk        (0x1UL << TIM_DIER_CC4DE_Pos)                /*!< 0x00001000 */\n#define TIM_DIER_CC4DE            TIM_DIER_CC4DE_Msk                           /*!<Capture/Compare 4 DMA request enable */\n#define TIM_DIER_COMDE_Pos        (13U)\n#define TIM_DIER_COMDE_Msk        (0x1UL << TIM_DIER_COMDE_Pos)                /*!< 0x00002000 */\n#define TIM_DIER_COMDE            TIM_DIER_COMDE_Msk                           /*!<COM DMA request enable */\n#define TIM_DIER_TDE_Pos          (14U)\n#define TIM_DIER_TDE_Msk          (0x1UL << TIM_DIER_TDE_Pos)                  /*!< 0x00004000 */\n#define TIM_DIER_TDE              TIM_DIER_TDE_Msk                             /*!<Trigger DMA request enable */\n\n/********************  Bit definition for TIM_SR register  ********************/\n#define TIM_SR_UIF_Pos            (0U)\n#define TIM_SR_UIF_Msk            (0x1UL << TIM_SR_UIF_Pos)                    /*!< 0x00000001 */\n#define TIM_SR_UIF                TIM_SR_UIF_Msk                               /*!<Update interrupt Flag */\n#define TIM_SR_CC1IF_Pos          (1U)\n#define TIM_SR_CC1IF_Msk          (0x1UL << TIM_SR_CC1IF_Pos)                  /*!< 0x00000002 */\n#define TIM_SR_CC1IF              TIM_SR_CC1IF_Msk                             /*!<Capture/Compare 1 interrupt Flag */\n#define TIM_SR_CC2IF_Pos          (2U)\n#define TIM_SR_CC2IF_Msk          (0x1UL << TIM_SR_CC2IF_Pos)                  /*!< 0x00000004 */\n#define TIM_SR_CC2IF              TIM_SR_CC2IF_Msk                             /*!<Capture/Compare 2 interrupt Flag */\n#define TIM_SR_CC3IF_Pos          (3U)\n#define TIM_SR_CC3IF_Msk          (0x1UL << TIM_SR_CC3IF_Pos)                  /*!< 0x00000008 */\n#define TIM_SR_CC3IF              TIM_SR_CC3IF_Msk                             /*!<Capture/Compare 3 interrupt Flag */\n#define TIM_SR_CC4IF_Pos          (4U)\n#define TIM_SR_CC4IF_Msk          (0x1UL << TIM_SR_CC4IF_Pos)                  /*!< 0x00000010 */\n#define TIM_SR_CC4IF              TIM_SR_CC4IF_Msk                             /*!<Capture/Compare 4 interrupt Flag */\n#define TIM_SR_COMIF_Pos          (5U)\n#define TIM_SR_COMIF_Msk          (0x1UL << TIM_SR_COMIF_Pos)                  /*!< 0x00000020 */\n#define TIM_SR_COMIF              TIM_SR_COMIF_Msk                             /*!<COM interrupt Flag */\n#define TIM_SR_TIF_Pos            (6U)\n#define TIM_SR_TIF_Msk            (0x1UL << TIM_SR_TIF_Pos)                    /*!< 0x00000040 */\n#define TIM_SR_TIF                TIM_SR_TIF_Msk                               /*!<Trigger interrupt Flag */\n#define TIM_SR_BIF_Pos            (7U)\n#define TIM_SR_BIF_Msk            (0x1UL << TIM_SR_BIF_Pos)                    /*!< 0x00000080 */\n#define TIM_SR_BIF                TIM_SR_BIF_Msk                               /*!<Break interrupt Flag */\n#define TIM_SR_B2IF_Pos           (8U)\n#define TIM_SR_B2IF_Msk           (0x1UL << TIM_SR_B2IF_Pos)                   /*!< 0x00000100 */\n#define TIM_SR_B2IF               TIM_SR_B2IF_Msk                              /*!<Break2 interrupt Flag */\n#define TIM_SR_CC1OF_Pos          (9U)\n#define TIM_SR_CC1OF_Msk          (0x1UL << TIM_SR_CC1OF_Pos)                  /*!< 0x00000200 */\n#define TIM_SR_CC1OF              TIM_SR_CC1OF_Msk                             /*!<Capture/Compare 1 Overcapture Flag */\n#define TIM_SR_CC2OF_Pos          (10U)\n#define TIM_SR_CC2OF_Msk          (0x1UL << TIM_SR_CC2OF_Pos)                  /*!< 0x00000400 */\n#define TIM_SR_CC2OF              TIM_SR_CC2OF_Msk                             /*!<Capture/Compare 2 Overcapture Flag */\n#define TIM_SR_CC3OF_Pos          (11U)\n#define TIM_SR_CC3OF_Msk          (0x1UL << TIM_SR_CC3OF_Pos)                  /*!< 0x00000800 */\n#define TIM_SR_CC3OF              TIM_SR_CC3OF_Msk                             /*!<Capture/Compare 3 Overcapture Flag */\n#define TIM_SR_CC4OF_Pos          (12U)\n#define TIM_SR_CC4OF_Msk          (0x1UL << TIM_SR_CC4OF_Pos)                  /*!< 0x00001000 */\n#define TIM_SR_CC4OF              TIM_SR_CC4OF_Msk                             /*!<Capture/Compare 4 Overcapture Flag */\n#define TIM_SR_CC5IF_Pos          (16U)\n#define TIM_SR_CC5IF_Msk          (0x1UL << TIM_SR_CC5IF_Pos)                  /*!< 0x00010000 */\n#define TIM_SR_CC5IF              TIM_SR_CC5IF_Msk                             /*!<Capture/Compare 5 interrupt Flag */\n#define TIM_SR_CC6IF_Pos          (17U)\n#define TIM_SR_CC6IF_Msk          (0x1UL << TIM_SR_CC6IF_Pos)                  /*!< 0x00020000 */\n#define TIM_SR_CC6IF              TIM_SR_CC6IF_Msk                             /*!<Capture/Compare 6 interrupt Flag */\n#define TIM_SR_SBIF_Pos           (13U)\n#define TIM_SR_SBIF_Msk           (0x1UL << TIM_SR_SBIF_Pos)                   /*!< 0x00002000 */\n#define TIM_SR_SBIF               TIM_SR_SBIF_Msk                              /*!< System Break Flag */\n\n/*******************  Bit definition for TIM_EGR register  ********************/\n#define TIM_EGR_UG_Pos            (0U)\n#define TIM_EGR_UG_Msk            (0x1UL << TIM_EGR_UG_Pos)                    /*!< 0x00000001 */\n#define TIM_EGR_UG                TIM_EGR_UG_Msk                               /*!<Update Generation */\n#define TIM_EGR_CC1G_Pos          (1U)\n#define TIM_EGR_CC1G_Msk          (0x1UL << TIM_EGR_CC1G_Pos)                  /*!< 0x00000002 */\n#define TIM_EGR_CC1G              TIM_EGR_CC1G_Msk                             /*!<Capture/Compare 1 Generation */\n#define TIM_EGR_CC2G_Pos          (2U)\n#define TIM_EGR_CC2G_Msk          (0x1UL << TIM_EGR_CC2G_Pos)                  /*!< 0x00000004 */\n#define TIM_EGR_CC2G              TIM_EGR_CC2G_Msk                             /*!<Capture/Compare 2 Generation */\n#define TIM_EGR_CC3G_Pos          (3U)\n#define TIM_EGR_CC3G_Msk          (0x1UL << TIM_EGR_CC3G_Pos)                  /*!< 0x00000008 */\n#define TIM_EGR_CC3G              TIM_EGR_CC3G_Msk                             /*!<Capture/Compare 3 Generation */\n#define TIM_EGR_CC4G_Pos          (4U)\n#define TIM_EGR_CC4G_Msk          (0x1UL << TIM_EGR_CC4G_Pos)                  /*!< 0x00000010 */\n#define TIM_EGR_CC4G              TIM_EGR_CC4G_Msk                             /*!<Capture/Compare 4 Generation */\n#define TIM_EGR_COMG_Pos          (5U)\n#define TIM_EGR_COMG_Msk          (0x1UL << TIM_EGR_COMG_Pos)                  /*!< 0x00000020 */\n#define TIM_EGR_COMG              TIM_EGR_COMG_Msk                             /*!<Capture/Compare Control Update Generation */\n#define TIM_EGR_TG_Pos            (6U)\n#define TIM_EGR_TG_Msk            (0x1UL << TIM_EGR_TG_Pos)                    /*!< 0x00000040 */\n#define TIM_EGR_TG                TIM_EGR_TG_Msk                               /*!<Trigger Generation */\n#define TIM_EGR_BG_Pos            (7U)\n#define TIM_EGR_BG_Msk            (0x1UL << TIM_EGR_BG_Pos)                    /*!< 0x00000080 */\n#define TIM_EGR_BG                TIM_EGR_BG_Msk                               /*!<Break Generation */\n#define TIM_EGR_B2G_Pos           (8U)\n#define TIM_EGR_B2G_Msk           (0x1UL << TIM_EGR_B2G_Pos)                   /*!< 0x00000100 */\n#define TIM_EGR_B2G               TIM_EGR_B2G_Msk                              /*!<Break Generation */\n\n\n/******************  Bit definition for TIM_CCMR1 register  *******************/\n#define TIM_CCMR1_CC1S_Pos        (0U)\n#define TIM_CCMR1_CC1S_Msk        (0x3UL << TIM_CCMR1_CC1S_Pos)                /*!< 0x00000003 */\n#define TIM_CCMR1_CC1S            TIM_CCMR1_CC1S_Msk                           /*!<CC1S[1:0] bits (Capture/Compare 1 Selection) */\n#define TIM_CCMR1_CC1S_0          (0x1UL << TIM_CCMR1_CC1S_Pos)                 /*!< 0x00000001 */\n#define TIM_CCMR1_CC1S_1          (0x2UL << TIM_CCMR1_CC1S_Pos)                 /*!< 0x00000002 */\n\n#define TIM_CCMR1_OC1FE_Pos       (2U)\n#define TIM_CCMR1_OC1FE_Msk       (0x1UL << TIM_CCMR1_OC1FE_Pos)               /*!< 0x00000004 */\n#define TIM_CCMR1_OC1FE           TIM_CCMR1_OC1FE_Msk                          /*!<Output Compare 1 Fast enable */\n#define TIM_CCMR1_OC1PE_Pos       (3U)\n#define TIM_CCMR1_OC1PE_Msk       (0x1UL << TIM_CCMR1_OC1PE_Pos)               /*!< 0x00000008 */\n#define TIM_CCMR1_OC1PE           TIM_CCMR1_OC1PE_Msk                          /*!<Output Compare 1 Preload enable */\n\n#define TIM_CCMR1_OC1M_Pos        (4U)\n#define TIM_CCMR1_OC1M_Msk        (0x1007UL << TIM_CCMR1_OC1M_Pos)             /*!< 0x00010070 */\n#define TIM_CCMR1_OC1M            TIM_CCMR1_OC1M_Msk                           /*!<OC1M[2:0] bits (Output Compare 1 Mode) */\n#define TIM_CCMR1_OC1M_0          (0x0001UL << TIM_CCMR1_OC1M_Pos)              /*!< 0x00000010 */\n#define TIM_CCMR1_OC1M_1          (0x0002UL << TIM_CCMR1_OC1M_Pos)              /*!< 0x00000020 */\n#define TIM_CCMR1_OC1M_2          (0x0004UL << TIM_CCMR1_OC1M_Pos)              /*!< 0x00000040 */\n#define TIM_CCMR1_OC1M_3          (0x1000UL << TIM_CCMR1_OC1M_Pos)              /*!< 0x00010000 */\n\n#define TIM_CCMR1_OC1CE_Pos       (7U)\n#define TIM_CCMR1_OC1CE_Msk       (0x1UL << TIM_CCMR1_OC1CE_Pos)               /*!< 0x00000080 */\n#define TIM_CCMR1_OC1CE           TIM_CCMR1_OC1CE_Msk                          /*!<Output Compare 1Clear Enable */\n\n#define TIM_CCMR1_CC2S_Pos        (8U)\n#define TIM_CCMR1_CC2S_Msk        (0x3UL << TIM_CCMR1_CC2S_Pos)                /*!< 0x00000300 */\n#define TIM_CCMR1_CC2S            TIM_CCMR1_CC2S_Msk                           /*!<CC2S[1:0] bits (Capture/Compare 2 Selection) */\n#define TIM_CCMR1_CC2S_0          (0x1UL << TIM_CCMR1_CC2S_Pos)                 /*!< 0x00000100 */\n#define TIM_CCMR1_CC2S_1          (0x2UL << TIM_CCMR1_CC2S_Pos)                 /*!< 0x00000200 */\n\n#define TIM_CCMR1_OC2FE_Pos       (10U)\n#define TIM_CCMR1_OC2FE_Msk       (0x1UL << TIM_CCMR1_OC2FE_Pos)               /*!< 0x00000400 */\n#define TIM_CCMR1_OC2FE           TIM_CCMR1_OC2FE_Msk                          /*!<Output Compare 2 Fast enable */\n#define TIM_CCMR1_OC2PE_Pos       (11U)\n#define TIM_CCMR1_OC2PE_Msk       (0x1UL << TIM_CCMR1_OC2PE_Pos)               /*!< 0x00000800 */\n#define TIM_CCMR1_OC2PE           TIM_CCMR1_OC2PE_Msk                          /*!<Output Compare 2 Preload enable */\n\n#define TIM_CCMR1_OC2M_Pos        (12U)\n#define TIM_CCMR1_OC2M_Msk        (0x1007UL << TIM_CCMR1_OC2M_Pos)             /*!< 0x01007000 */\n#define TIM_CCMR1_OC2M            TIM_CCMR1_OC2M_Msk                           /*!<OC2M[2:0] bits (Output Compare 2 Mode) */\n#define TIM_CCMR1_OC2M_0          (0x0001UL << TIM_CCMR1_OC2M_Pos)              /*!< 0x00001000 */\n#define TIM_CCMR1_OC2M_1          (0x0002UL << TIM_CCMR1_OC2M_Pos)              /*!< 0x00002000 */\n#define TIM_CCMR1_OC2M_2          (0x0004UL << TIM_CCMR1_OC2M_Pos)              /*!< 0x00004000 */\n#define TIM_CCMR1_OC2M_3          (0x1000UL << TIM_CCMR1_OC2M_Pos)              /*!< 0x01000000 */\n\n#define TIM_CCMR1_OC2CE_Pos       (15U)\n#define TIM_CCMR1_OC2CE_Msk       (0x1UL << TIM_CCMR1_OC2CE_Pos)               /*!< 0x00008000 */\n#define TIM_CCMR1_OC2CE           TIM_CCMR1_OC2CE_Msk                          /*!<Output Compare 2 Clear Enable */\n\n/*----------------------------------------------------------------------------*/\n\n#define TIM_CCMR1_IC1PSC_Pos      (2U)\n#define TIM_CCMR1_IC1PSC_Msk      (0x3UL << TIM_CCMR1_IC1PSC_Pos)              /*!< 0x0000000C */\n#define TIM_CCMR1_IC1PSC          TIM_CCMR1_IC1PSC_Msk                         /*!<IC1PSC[1:0] bits (Input Capture 1 Prescaler) */\n#define TIM_CCMR1_IC1PSC_0        (0x1UL << TIM_CCMR1_IC1PSC_Pos)               /*!< 0x00000004 */\n#define TIM_CCMR1_IC1PSC_1        (0x2UL << TIM_CCMR1_IC1PSC_Pos)               /*!< 0x00000008 */\n\n#define TIM_CCMR1_IC1F_Pos        (4U)\n#define TIM_CCMR1_IC1F_Msk        (0xFUL << TIM_CCMR1_IC1F_Pos)                /*!< 0x000000F0 */\n#define TIM_CCMR1_IC1F            TIM_CCMR1_IC1F_Msk                           /*!<IC1F[3:0] bits (Input Capture 1 Filter) */\n#define TIM_CCMR1_IC1F_0          (0x1UL << TIM_CCMR1_IC1F_Pos)                 /*!< 0x00000010 */\n#define TIM_CCMR1_IC1F_1          (0x2UL << TIM_CCMR1_IC1F_Pos)                 /*!< 0x00000020 */\n#define TIM_CCMR1_IC1F_2          (0x4UL << TIM_CCMR1_IC1F_Pos)                 /*!< 0x00000040 */\n#define TIM_CCMR1_IC1F_3          (0x8UL << TIM_CCMR1_IC1F_Pos)                 /*!< 0x00000080 */\n\n#define TIM_CCMR1_IC2PSC_Pos      (10U)\n#define TIM_CCMR1_IC2PSC_Msk      (0x3UL << TIM_CCMR1_IC2PSC_Pos)              /*!< 0x00000C00 */\n#define TIM_CCMR1_IC2PSC          TIM_CCMR1_IC2PSC_Msk                         /*!<IC2PSC[1:0] bits (Input Capture 2 Prescaler) */\n#define TIM_CCMR1_IC2PSC_0        (0x1UL << TIM_CCMR1_IC2PSC_Pos)               /*!< 0x00000400 */\n#define TIM_CCMR1_IC2PSC_1        (0x2UL << TIM_CCMR1_IC2PSC_Pos)               /*!< 0x00000800 */\n\n#define TIM_CCMR1_IC2F_Pos        (12U)\n#define TIM_CCMR1_IC2F_Msk        (0xFUL << TIM_CCMR1_IC2F_Pos)                /*!< 0x0000F000 */\n#define TIM_CCMR1_IC2F            TIM_CCMR1_IC2F_Msk                           /*!<IC2F[3:0] bits (Input Capture 2 Filter) */\n#define TIM_CCMR1_IC2F_0          (0x1UL << TIM_CCMR1_IC2F_Pos)                 /*!< 0x00001000 */\n#define TIM_CCMR1_IC2F_1          (0x2UL << TIM_CCMR1_IC2F_Pos)                 /*!< 0x00002000 */\n#define TIM_CCMR1_IC2F_2          (0x4UL << TIM_CCMR1_IC2F_Pos)                 /*!< 0x00004000 */\n#define TIM_CCMR1_IC2F_3          (0x8UL << TIM_CCMR1_IC2F_Pos)                 /*!< 0x00008000 */\n\n/******************  Bit definition for TIM_CCMR2 register  *******************/\n#define TIM_CCMR2_CC3S_Pos        (0U)\n#define TIM_CCMR2_CC3S_Msk        (0x3UL << TIM_CCMR2_CC3S_Pos)                /*!< 0x00000003 */\n#define TIM_CCMR2_CC3S            TIM_CCMR2_CC3S_Msk                           /*!<CC3S[1:0] bits (Capture/Compare 3 Selection) */\n#define TIM_CCMR2_CC3S_0          (0x1UL << TIM_CCMR2_CC3S_Pos)                 /*!< 0x00000001 */\n#define TIM_CCMR2_CC3S_1          (0x2UL << TIM_CCMR2_CC3S_Pos)                 /*!< 0x00000002 */\n\n#define TIM_CCMR2_OC3FE_Pos       (2U)\n#define TIM_CCMR2_OC3FE_Msk       (0x1UL << TIM_CCMR2_OC3FE_Pos)               /*!< 0x00000004 */\n#define TIM_CCMR2_OC3FE           TIM_CCMR2_OC3FE_Msk                          /*!<Output Compare 3 Fast enable */\n#define TIM_CCMR2_OC3PE_Pos       (3U)\n#define TIM_CCMR2_OC3PE_Msk       (0x1UL << TIM_CCMR2_OC3PE_Pos)               /*!< 0x00000008 */\n#define TIM_CCMR2_OC3PE           TIM_CCMR2_OC3PE_Msk                          /*!<Output Compare 3 Preload enable */\n\n#define TIM_CCMR2_OC3M_Pos        (4U)\n#define TIM_CCMR2_OC3M_Msk        (0x1007UL << TIM_CCMR2_OC3M_Pos)                /*!< 0x00010070 */\n#define TIM_CCMR2_OC3M            TIM_CCMR2_OC3M_Msk                           /*!<OC3M[3:0] bits (Output Compare 3 Mode) */\n#define TIM_CCMR2_OC3M_0          (0x1UL << TIM_CCMR2_OC3M_Pos)                 /*!< 0x00000010 */\n#define TIM_CCMR2_OC3M_1          (0x2UL << TIM_CCMR2_OC3M_Pos)                 /*!< 0x00000020 */\n#define TIM_CCMR2_OC3M_2          (0x4UL << TIM_CCMR2_OC3M_Pos)                 /*!< 0x00000040 */\n#define TIM_CCMR2_OC3M_3          (0x1000UL << TIM_CCMR2_OC3M_Pos)              /*!< 0x00010000 */\n\n#define TIM_CCMR2_OC3CE_Pos       (7U)\n#define TIM_CCMR2_OC3CE_Msk       (0x1UL << TIM_CCMR2_OC3CE_Pos)               /*!< 0x00000080 */\n#define TIM_CCMR2_OC3CE           TIM_CCMR2_OC3CE_Msk                          /*!<Output Compare 3 Clear Enable */\n\n#define TIM_CCMR2_CC4S_Pos        (8U)\n#define TIM_CCMR2_CC4S_Msk        (0x3UL << TIM_CCMR2_CC4S_Pos)                /*!< 0x00000300 */\n#define TIM_CCMR2_CC4S            TIM_CCMR2_CC4S_Msk                           /*!<CC4S[1:0] bits (Capture/Compare 4 Selection) */\n#define TIM_CCMR2_CC4S_0          (0x1UL << TIM_CCMR2_CC4S_Pos)                 /*!< 0x00000100 */\n#define TIM_CCMR2_CC4S_1          (0x2UL << TIM_CCMR2_CC4S_Pos)                 /*!< 0x00000200 */\n\n#define TIM_CCMR2_OC4FE_Pos       (10U)\n#define TIM_CCMR2_OC4FE_Msk       (0x1UL << TIM_CCMR2_OC4FE_Pos)               /*!< 0x00000400 */\n#define TIM_CCMR2_OC4FE           TIM_CCMR2_OC4FE_Msk                          /*!<Output Compare 4 Fast enable */\n#define TIM_CCMR2_OC4PE_Pos       (11U)\n#define TIM_CCMR2_OC4PE_Msk       (0x1UL << TIM_CCMR2_OC4PE_Pos)               /*!< 0x00000800 */\n#define TIM_CCMR2_OC4PE           TIM_CCMR2_OC4PE_Msk                          /*!<Output Compare 4 Preload enable */\n\n#define TIM_CCMR2_OC4M_Pos        (12U)\n#define TIM_CCMR2_OC4M_Msk        (0x1007UL << TIM_CCMR2_OC4M_Pos)                /*!< 0x01007000 */\n#define TIM_CCMR2_OC4M            TIM_CCMR2_OC4M_Msk                           /*!<OC4M[3:0] bits (Output Compare 4 Mode) */\n#define TIM_CCMR2_OC4M_0          (0x1UL << TIM_CCMR2_OC4M_Pos)                 /*!< 0x00001000 */\n#define TIM_CCMR2_OC4M_1          (0x2UL << TIM_CCMR2_OC4M_Pos)                 /*!< 0x00002000 */\n#define TIM_CCMR2_OC4M_2          (0x4UL << TIM_CCMR2_OC4M_Pos)                 /*!< 0x00004000 */\n#define TIM_CCMR2_OC4M_3          (0x1000UL << TIM_CCMR2_OC4M_Pos)              /*!< 0x01000000 */\n\n#define TIM_CCMR2_OC4CE_Pos       (15U)\n#define TIM_CCMR2_OC4CE_Msk       (0x1UL << TIM_CCMR2_OC4CE_Pos)               /*!< 0x00008000 */\n#define TIM_CCMR2_OC4CE           TIM_CCMR2_OC4CE_Msk                          /*!<Output Compare 4 Clear Enable */\n\n/*----------------------------------------------------------------------------*/\n\n#define TIM_CCMR2_IC3PSC_Pos      (2U)\n#define TIM_CCMR2_IC3PSC_Msk      (0x3UL << TIM_CCMR2_IC3PSC_Pos)              /*!< 0x0000000C */\n#define TIM_CCMR2_IC3PSC          TIM_CCMR2_IC3PSC_Msk                         /*!<IC3PSC[1:0] bits (Input Capture 3 Prescaler) */\n#define TIM_CCMR2_IC3PSC_0        (0x1UL << TIM_CCMR2_IC3PSC_Pos)               /*!< 0x00000004 */\n#define TIM_CCMR2_IC3PSC_1        (0x2UL << TIM_CCMR2_IC3PSC_Pos)               /*!< 0x00000008 */\n\n#define TIM_CCMR2_IC3F_Pos        (4U)\n#define TIM_CCMR2_IC3F_Msk        (0xFUL << TIM_CCMR2_IC3F_Pos)                /*!< 0x000000F0 */\n#define TIM_CCMR2_IC3F            TIM_CCMR2_IC3F_Msk                           /*!<IC3F[3:0] bits (Input Capture 3 Filter) */\n#define TIM_CCMR2_IC3F_0          (0x1UL << TIM_CCMR2_IC3F_Pos)                 /*!< 0x00000010 */\n#define TIM_CCMR2_IC3F_1          (0x2UL << TIM_CCMR2_IC3F_Pos)                 /*!< 0x00000020 */\n#define TIM_CCMR2_IC3F_2          (0x4UL << TIM_CCMR2_IC3F_Pos)                 /*!< 0x00000040 */\n#define TIM_CCMR2_IC3F_3          (0x8UL << TIM_CCMR2_IC3F_Pos)                 /*!< 0x00000080 */\n\n#define TIM_CCMR2_IC4PSC_Pos      (10U)\n#define TIM_CCMR2_IC4PSC_Msk      (0x3UL << TIM_CCMR2_IC4PSC_Pos)              /*!< 0x00000C00 */\n#define TIM_CCMR2_IC4PSC          TIM_CCMR2_IC4PSC_Msk                         /*!<IC4PSC[1:0] bits (Input Capture 4 Prescaler) */\n#define TIM_CCMR2_IC4PSC_0        (0x1UL << TIM_CCMR2_IC4PSC_Pos)               /*!< 0x00000400 */\n#define TIM_CCMR2_IC4PSC_1        (0x2UL << TIM_CCMR2_IC4PSC_Pos)               /*!< 0x00000800 */\n\n#define TIM_CCMR2_IC4F_Pos        (12U)\n#define TIM_CCMR2_IC4F_Msk        (0xFUL << TIM_CCMR2_IC4F_Pos)                /*!< 0x0000F000 */\n#define TIM_CCMR2_IC4F            TIM_CCMR2_IC4F_Msk                           /*!<IC4F[3:0] bits (Input Capture 4 Filter) */\n#define TIM_CCMR2_IC4F_0          (0x1UL << TIM_CCMR2_IC4F_Pos)                 /*!< 0x00001000 */\n#define TIM_CCMR2_IC4F_1          (0x2UL << TIM_CCMR2_IC4F_Pos)                 /*!< 0x00002000 */\n#define TIM_CCMR2_IC4F_2          (0x4UL << TIM_CCMR2_IC4F_Pos)                 /*!< 0x00004000 */\n#define TIM_CCMR2_IC4F_3          (0x8UL << TIM_CCMR2_IC4F_Pos)                 /*!< 0x00008000 */\n\n/*******************  Bit definition for TIM_CCER register  *******************/\n#define TIM_CCER_CC1E_Pos         (0U)\n#define TIM_CCER_CC1E_Msk         (0x1UL << TIM_CCER_CC1E_Pos)                 /*!< 0x00000001 */\n#define TIM_CCER_CC1E             TIM_CCER_CC1E_Msk                            /*!<Capture/Compare 1 output enable */\n#define TIM_CCER_CC1P_Pos         (1U)\n#define TIM_CCER_CC1P_Msk         (0x1UL << TIM_CCER_CC1P_Pos)                 /*!< 0x00000002 */\n#define TIM_CCER_CC1P             TIM_CCER_CC1P_Msk                            /*!<Capture/Compare 1 output Polarity */\n#define TIM_CCER_CC1NE_Pos        (2U)\n#define TIM_CCER_CC1NE_Msk        (0x1UL << TIM_CCER_CC1NE_Pos)                /*!< 0x00000004 */\n#define TIM_CCER_CC1NE            TIM_CCER_CC1NE_Msk                           /*!<Capture/Compare 1 Complementary output enable */\n#define TIM_CCER_CC1NP_Pos        (3U)\n#define TIM_CCER_CC1NP_Msk        (0x1UL << TIM_CCER_CC1NP_Pos)                /*!< 0x00000008 */\n#define TIM_CCER_CC1NP            TIM_CCER_CC1NP_Msk                           /*!<Capture/Compare 1 Complementary output Polarity */\n#define TIM_CCER_CC2E_Pos         (4U)\n#define TIM_CCER_CC2E_Msk         (0x1UL << TIM_CCER_CC2E_Pos)                 /*!< 0x00000010 */\n#define TIM_CCER_CC2E             TIM_CCER_CC2E_Msk                            /*!<Capture/Compare 2 output enable */\n#define TIM_CCER_CC2P_Pos         (5U)\n#define TIM_CCER_CC2P_Msk         (0x1UL << TIM_CCER_CC2P_Pos)                 /*!< 0x00000020 */\n#define TIM_CCER_CC2P             TIM_CCER_CC2P_Msk                            /*!<Capture/Compare 2 output Polarity */\n#define TIM_CCER_CC2NE_Pos        (6U)\n#define TIM_CCER_CC2NE_Msk        (0x1UL << TIM_CCER_CC2NE_Pos)                /*!< 0x00000040 */\n#define TIM_CCER_CC2NE            TIM_CCER_CC2NE_Msk                           /*!<Capture/Compare 2 Complementary output enable */\n#define TIM_CCER_CC2NP_Pos        (7U)\n#define TIM_CCER_CC2NP_Msk        (0x1UL << TIM_CCER_CC2NP_Pos)                /*!< 0x00000080 */\n#define TIM_CCER_CC2NP            TIM_CCER_CC2NP_Msk                           /*!<Capture/Compare 2 Complementary output Polarity */\n#define TIM_CCER_CC3E_Pos         (8U)\n#define TIM_CCER_CC3E_Msk         (0x1UL << TIM_CCER_CC3E_Pos)                 /*!< 0x00000100 */\n#define TIM_CCER_CC3E             TIM_CCER_CC3E_Msk                            /*!<Capture/Compare 3 output enable */\n#define TIM_CCER_CC3P_Pos         (9U)\n#define TIM_CCER_CC3P_Msk         (0x1UL << TIM_CCER_CC3P_Pos)                 /*!< 0x00000200 */\n#define TIM_CCER_CC3P             TIM_CCER_CC3P_Msk                            /*!<Capture/Compare 3 output Polarity */\n#define TIM_CCER_CC3NE_Pos        (10U)\n#define TIM_CCER_CC3NE_Msk        (0x1UL << TIM_CCER_CC3NE_Pos)                /*!< 0x00000400 */\n#define TIM_CCER_CC3NE            TIM_CCER_CC3NE_Msk                           /*!<Capture/Compare 3 Complementary output enable */\n#define TIM_CCER_CC3NP_Pos        (11U)\n#define TIM_CCER_CC3NP_Msk        (0x1UL << TIM_CCER_CC3NP_Pos)                /*!< 0x00000800 */\n#define TIM_CCER_CC3NP            TIM_CCER_CC3NP_Msk                           /*!<Capture/Compare 3 Complementary output Polarity */\n#define TIM_CCER_CC4E_Pos         (12U)\n#define TIM_CCER_CC4E_Msk         (0x1UL << TIM_CCER_CC4E_Pos)                 /*!< 0x00001000 */\n#define TIM_CCER_CC4E             TIM_CCER_CC4E_Msk                            /*!<Capture/Compare 4 output enable */\n#define TIM_CCER_CC4P_Pos         (13U)\n#define TIM_CCER_CC4P_Msk         (0x1UL << TIM_CCER_CC4P_Pos)                 /*!< 0x00002000 */\n#define TIM_CCER_CC4P             TIM_CCER_CC4P_Msk                            /*!<Capture/Compare 4 output Polarity */\n#define TIM_CCER_CC4NP_Pos        (15U)\n#define TIM_CCER_CC4NP_Msk        (0x1UL << TIM_CCER_CC4NP_Pos)                /*!< 0x00008000 */\n#define TIM_CCER_CC4NP            TIM_CCER_CC4NP_Msk                           /*!<Capture/Compare 4 Complementary output Polarity */\n#define TIM_CCER_CC5E_Pos         (16U)\n#define TIM_CCER_CC5E_Msk         (0x1UL << TIM_CCER_CC5E_Pos)                 /*!< 0x00010000 */\n#define TIM_CCER_CC5E             TIM_CCER_CC5E_Msk                            /*!<Capture/Compare 5 output enable */\n#define TIM_CCER_CC5P_Pos         (17U)\n#define TIM_CCER_CC5P_Msk         (0x1UL << TIM_CCER_CC5P_Pos)                 /*!< 0x00020000 */\n#define TIM_CCER_CC5P             TIM_CCER_CC5P_Msk                            /*!<Capture/Compare 5 output Polarity */\n#define TIM_CCER_CC6E_Pos         (20U)\n#define TIM_CCER_CC6E_Msk         (0x1UL << TIM_CCER_CC6E_Pos)                 /*!< 0x00100000 */\n#define TIM_CCER_CC6E             TIM_CCER_CC6E_Msk                            /*!<Capture/Compare 6 output enable */\n#define TIM_CCER_CC6P_Pos         (21U)\n#define TIM_CCER_CC6P_Msk         (0x1UL << TIM_CCER_CC6P_Pos)                 /*!< 0x00200000 */\n#define TIM_CCER_CC6P             TIM_CCER_CC6P_Msk                            /*!<Capture/Compare 6 output Polarity */\n/*******************  Bit definition for TIM_CNT register  ********************/\n#define TIM_CNT_CNT_Pos           (0U)\n#define TIM_CNT_CNT_Msk           (0xFFFFFFFFUL << TIM_CNT_CNT_Pos)            /*!< 0xFFFFFFFF */\n#define TIM_CNT_CNT               TIM_CNT_CNT_Msk                              /*!<Counter Value */\n#define TIM_CNT_UIFCPY_Pos        (31U)\n#define TIM_CNT_UIFCPY_Msk        (0x1UL << TIM_CNT_UIFCPY_Pos)                /*!< 0x80000000 */\n#define TIM_CNT_UIFCPY            TIM_CNT_UIFCPY_Msk                           /*!<Update interrupt flag copy */\n/*******************  Bit definition for TIM_PSC register  ********************/\n#define TIM_PSC_PSC_Pos           (0U)\n#define TIM_PSC_PSC_Msk           (0xFFFFUL << TIM_PSC_PSC_Pos)                /*!< 0x0000FFFF */\n#define TIM_PSC_PSC               TIM_PSC_PSC_Msk                              /*!<Prescaler Value */\n\n/*******************  Bit definition for TIM_ARR register  ********************/\n#define TIM_ARR_ARR_Pos           (0U)\n#define TIM_ARR_ARR_Msk           (0xFFFFFFFFUL << TIM_ARR_ARR_Pos)            /*!< 0xFFFFFFFF */\n#define TIM_ARR_ARR               TIM_ARR_ARR_Msk                              /*!<actual auto-reload Value */\n\n/*******************  Bit definition for TIM_RCR register  ********************/\n#define TIM_RCR_REP_Pos           (0U)\n#define TIM_RCR_REP_Msk           (0xFFUL << TIM_RCR_REP_Pos)                  /*!< 0x000000FF */\n#define TIM_RCR_REP               TIM_RCR_REP_Msk                              /*!<Repetition Counter Value */\n\n/*******************  Bit definition for TIM_CCR1 register  *******************/\n#define TIM_CCR1_CCR1_Pos         (0U)\n#define TIM_CCR1_CCR1_Msk         (0xFFFFUL << TIM_CCR1_CCR1_Pos)              /*!< 0x0000FFFF */\n#define TIM_CCR1_CCR1             TIM_CCR1_CCR1_Msk                            /*!<Capture/Compare 1 Value */\n\n/*******************  Bit definition for TIM_CCR2 register  *******************/\n#define TIM_CCR2_CCR2_Pos         (0U)\n#define TIM_CCR2_CCR2_Msk         (0xFFFFUL << TIM_CCR2_CCR2_Pos)              /*!< 0x0000FFFF */\n#define TIM_CCR2_CCR2             TIM_CCR2_CCR2_Msk                            /*!<Capture/Compare 2 Value */\n\n/*******************  Bit definition for TIM_CCR3 register  *******************/\n#define TIM_CCR3_CCR3_Pos         (0U)\n#define TIM_CCR3_CCR3_Msk         (0xFFFFUL << TIM_CCR3_CCR3_Pos)              /*!< 0x0000FFFF */\n#define TIM_CCR3_CCR3             TIM_CCR3_CCR3_Msk                            /*!<Capture/Compare 3 Value */\n\n/*******************  Bit definition for TIM_CCR4 register  *******************/\n#define TIM_CCR4_CCR4_Pos         (0U)\n#define TIM_CCR4_CCR4_Msk         (0xFFFFUL << TIM_CCR4_CCR4_Pos)              /*!< 0x0000FFFF */\n#define TIM_CCR4_CCR4             TIM_CCR4_CCR4_Msk                            /*!<Capture/Compare 4 Value */\n\n/*******************  Bit definition for TIM_CCR5 register  *******************/\n#define TIM_CCR5_CCR5_Pos         (0U)\n#define TIM_CCR5_CCR5_Msk         (0xFFFFFFFFUL << TIM_CCR5_CCR5_Pos)          /*!< 0xFFFFFFFF */\n#define TIM_CCR5_CCR5             TIM_CCR5_CCR5_Msk                            /*!<Capture/Compare 5 Value */\n#define TIM_CCR5_GC5C1_Pos        (29U)\n#define TIM_CCR5_GC5C1_Msk        (0x1UL << TIM_CCR5_GC5C1_Pos)                /*!< 0x20000000 */\n#define TIM_CCR5_GC5C1            TIM_CCR5_GC5C1_Msk                           /*!<Group Channel 5 and Channel 1 */\n#define TIM_CCR5_GC5C2_Pos        (30U)\n#define TIM_CCR5_GC5C2_Msk        (0x1UL << TIM_CCR5_GC5C2_Pos)                /*!< 0x40000000 */\n#define TIM_CCR5_GC5C2            TIM_CCR5_GC5C2_Msk                           /*!<Group Channel 5 and Channel 2 */\n#define TIM_CCR5_GC5C3_Pos        (31U)\n#define TIM_CCR5_GC5C3_Msk        (0x1UL << TIM_CCR5_GC5C3_Pos)                /*!< 0x80000000 */\n#define TIM_CCR5_GC5C3            TIM_CCR5_GC5C3_Msk                           /*!<Group Channel 5 and Channel 3 */\n\n/*******************  Bit definition for TIM_CCR6 register  *******************/\n#define TIM_CCR6_CCR6_Pos         (0U)\n#define TIM_CCR6_CCR6_Msk         (0xFFFFUL << TIM_CCR6_CCR6_Pos)              /*!< 0x0000FFFF */\n#define TIM_CCR6_CCR6             TIM_CCR6_CCR6_Msk                            /*!<Capture/Compare 6 Value */\n\n/*******************  Bit definition for TIM_BDTR register  *******************/\n#define TIM_BDTR_DTG_Pos          (0U)\n#define TIM_BDTR_DTG_Msk          (0xFFUL << TIM_BDTR_DTG_Pos)                 /*!< 0x000000FF */\n#define TIM_BDTR_DTG              TIM_BDTR_DTG_Msk                             /*!<DTG[0:7] bits (Dead-Time Generator set-up) */\n#define TIM_BDTR_DTG_0            (0x01UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000001 */\n#define TIM_BDTR_DTG_1            (0x02UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000002 */\n#define TIM_BDTR_DTG_2            (0x04UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000004 */\n#define TIM_BDTR_DTG_3            (0x08UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000008 */\n#define TIM_BDTR_DTG_4            (0x10UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000010 */\n#define TIM_BDTR_DTG_5            (0x20UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000020 */\n#define TIM_BDTR_DTG_6            (0x40UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000040 */\n#define TIM_BDTR_DTG_7            (0x80UL << TIM_BDTR_DTG_Pos)                  /*!< 0x00000080 */\n\n#define TIM_BDTR_LOCK_Pos         (8U)\n#define TIM_BDTR_LOCK_Msk         (0x3UL << TIM_BDTR_LOCK_Pos)                 /*!< 0x00000300 */\n#define TIM_BDTR_LOCK             TIM_BDTR_LOCK_Msk                            /*!<LOCK[1:0] bits (Lock Configuration) */\n#define TIM_BDTR_LOCK_0           (0x1UL << TIM_BDTR_LOCK_Pos)                  /*!< 0x00000100 */\n#define TIM_BDTR_LOCK_1           (0x2UL << TIM_BDTR_LOCK_Pos)                  /*!< 0x00000200 */\n\n#define TIM_BDTR_OSSI_Pos         (10U)\n#define TIM_BDTR_OSSI_Msk         (0x1UL << TIM_BDTR_OSSI_Pos)                 /*!< 0x00000400 */\n#define TIM_BDTR_OSSI             TIM_BDTR_OSSI_Msk                            /*!<Off-State Selection for Idle mode */\n#define TIM_BDTR_OSSR_Pos         (11U)\n#define TIM_BDTR_OSSR_Msk         (0x1UL << TIM_BDTR_OSSR_Pos)                 /*!< 0x00000800 */\n#define TIM_BDTR_OSSR             TIM_BDTR_OSSR_Msk                            /*!<Off-State Selection for Run mode */\n#define TIM_BDTR_BKE_Pos          (12U)\n#define TIM_BDTR_BKE_Msk          (0x1UL << TIM_BDTR_BKE_Pos)                  /*!< 0x00001000 */\n#define TIM_BDTR_BKE              TIM_BDTR_BKE_Msk                             /*!<Break enable for Break1 */\n#define TIM_BDTR_BKP_Pos          (13U)\n#define TIM_BDTR_BKP_Msk          (0x1UL << TIM_BDTR_BKP_Pos)                  /*!< 0x00002000 */\n#define TIM_BDTR_BKP              TIM_BDTR_BKP_Msk                             /*!<Break Polarity for Break1 */\n#define TIM_BDTR_AOE_Pos          (14U)\n#define TIM_BDTR_AOE_Msk          (0x1UL << TIM_BDTR_AOE_Pos)                  /*!< 0x00004000 */\n#define TIM_BDTR_AOE              TIM_BDTR_AOE_Msk                             /*!<Automatic Output enable */\n#define TIM_BDTR_MOE_Pos          (15U)\n#define TIM_BDTR_MOE_Msk          (0x1UL << TIM_BDTR_MOE_Pos)                  /*!< 0x00008000 */\n#define TIM_BDTR_MOE              TIM_BDTR_MOE_Msk                             /*!<Main Output enable */\n\n#define TIM_BDTR_BKF_Pos          (16U)\n#define TIM_BDTR_BKF_Msk          (0xFUL << TIM_BDTR_BKF_Pos)                  /*!< 0x000F0000 */\n#define TIM_BDTR_BKF              TIM_BDTR_BKF_Msk                             /*!<Break Filter for Break1 */\n#define TIM_BDTR_BK2F_Pos         (20U)\n#define TIM_BDTR_BK2F_Msk         (0xFUL << TIM_BDTR_BK2F_Pos)                 /*!< 0x00F00000 */\n#define TIM_BDTR_BK2F             TIM_BDTR_BK2F_Msk                            /*!<Break Filter for Break2 */\n\n#define TIM_BDTR_BK2E_Pos         (24U)\n#define TIM_BDTR_BK2E_Msk         (0x1UL << TIM_BDTR_BK2E_Pos)                 /*!< 0x01000000 */\n#define TIM_BDTR_BK2E             TIM_BDTR_BK2E_Msk                            /*!<Break enable for Break2 */\n#define TIM_BDTR_BK2P_Pos         (25U)\n#define TIM_BDTR_BK2P_Msk         (0x1UL << TIM_BDTR_BK2P_Pos)                 /*!< 0x02000000 */\n#define TIM_BDTR_BK2P             TIM_BDTR_BK2P_Msk                            /*!<Break Polarity for Break2 */\n\n/*******************  Bit definition for TIM_DCR register  ********************/\n#define TIM_DCR_DBA_Pos           (0U)\n#define TIM_DCR_DBA_Msk           (0x1FUL << TIM_DCR_DBA_Pos)                  /*!< 0x0000001F */\n#define TIM_DCR_DBA               TIM_DCR_DBA_Msk                              /*!<DBA[4:0] bits (DMA Base Address) */\n#define TIM_DCR_DBA_0             (0x01UL << TIM_DCR_DBA_Pos)                   /*!< 0x00000001 */\n#define TIM_DCR_DBA_1             (0x02UL << TIM_DCR_DBA_Pos)                   /*!< 0x00000002 */\n#define TIM_DCR_DBA_2             (0x04UL << TIM_DCR_DBA_Pos)                   /*!< 0x00000004 */\n#define TIM_DCR_DBA_3             (0x08UL << TIM_DCR_DBA_Pos)                   /*!< 0x00000008 */\n#define TIM_DCR_DBA_4             (0x10UL << TIM_DCR_DBA_Pos)                   /*!< 0x00000010 */\n\n#define TIM_DCR_DBL_Pos           (8U)\n#define TIM_DCR_DBL_Msk           (0x1FUL << TIM_DCR_DBL_Pos)                  /*!< 0x00001F00 */\n#define TIM_DCR_DBL               TIM_DCR_DBL_Msk                              /*!<DBL[4:0] bits (DMA Burst Length) */\n#define TIM_DCR_DBL_0             (0x01UL << TIM_DCR_DBL_Pos)                   /*!< 0x00000100 */\n#define TIM_DCR_DBL_1             (0x02UL << TIM_DCR_DBL_Pos)                   /*!< 0x00000200 */\n#define TIM_DCR_DBL_2             (0x04UL << TIM_DCR_DBL_Pos)                   /*!< 0x00000400 */\n#define TIM_DCR_DBL_3             (0x08UL << TIM_DCR_DBL_Pos)                   /*!< 0x00000800 */\n#define TIM_DCR_DBL_4             (0x10UL << TIM_DCR_DBL_Pos)                   /*!< 0x00001000 */\n\n/*******************  Bit definition for TIM_DMAR register  *******************/\n#define TIM_DMAR_DMAB_Pos         (0U)\n#define TIM_DMAR_DMAB_Msk         (0xFFFFUL << TIM_DMAR_DMAB_Pos)              /*!< 0x0000FFFF */\n#define TIM_DMAR_DMAB             TIM_DMAR_DMAB_Msk                            /*!<DMA register for burst accesses */\n\n/******************  Bit definition for TIM_CCMR3 register  *******************/\n#define TIM_CCMR3_OC5FE_Pos       (2U)\n#define TIM_CCMR3_OC5FE_Msk       (0x1UL << TIM_CCMR3_OC5FE_Pos)               /*!< 0x00000004 */\n#define TIM_CCMR3_OC5FE           TIM_CCMR3_OC5FE_Msk                          /*!<Output Compare 5 Fast enable */\n#define TIM_CCMR3_OC5PE_Pos       (3U)\n#define TIM_CCMR3_OC5PE_Msk       (0x1UL << TIM_CCMR3_OC5PE_Pos)               /*!< 0x00000008 */\n#define TIM_CCMR3_OC5PE           TIM_CCMR3_OC5PE_Msk                          /*!<Output Compare 5 Preload enable */\n\n#define TIM_CCMR3_OC5M_Pos        (4U)\n#define TIM_CCMR3_OC5M_Msk        (0x1007UL << TIM_CCMR3_OC5M_Pos)                /*!< 0x00010070 */\n#define TIM_CCMR3_OC5M            TIM_CCMR3_OC5M_Msk                           /*!<OC5M[3:0] bits (Output Compare 5 Mode) */\n#define TIM_CCMR3_OC5M_0          (0x1UL << TIM_CCMR3_OC5M_Pos)                 /*!< 0x00000010 */\n#define TIM_CCMR3_OC5M_1          (0x2UL << TIM_CCMR3_OC5M_Pos)                 /*!< 0x00000020 */\n#define TIM_CCMR3_OC5M_2          (0x4UL << TIM_CCMR3_OC5M_Pos)                 /*!< 0x00000040 */\n#define TIM_CCMR3_OC5M_3          (0x1000UL << TIM_CCMR3_OC5M_Pos)              /*!< 0x00010000 */\n\n#define TIM_CCMR3_OC5CE_Pos       (7U)\n#define TIM_CCMR3_OC5CE_Msk       (0x1UL << TIM_CCMR3_OC5CE_Pos)               /*!< 0x00000080 */\n#define TIM_CCMR3_OC5CE           TIM_CCMR3_OC5CE_Msk                          /*!<Output Compare 5 Clear Enable */\n\n#define TIM_CCMR3_OC6FE_Pos       (10U)\n#define TIM_CCMR3_OC6FE_Msk       (0x1UL << TIM_CCMR3_OC6FE_Pos)               /*!< 0x00000400 */\n#define TIM_CCMR3_OC6FE           TIM_CCMR3_OC6FE_Msk                          /*!<Output Compare 4 Fast enable */\n#define TIM_CCMR3_OC6PE_Pos       (11U)\n#define TIM_CCMR3_OC6PE_Msk       (0x1UL << TIM_CCMR3_OC6PE_Pos)               /*!< 0x00000800 */\n#define TIM_CCMR3_OC6PE           TIM_CCMR3_OC6PE_Msk                          /*!<Output Compare 4 Preload enable */\n\n#define TIM_CCMR3_OC6M_Pos        (12U)\n#define TIM_CCMR3_OC6M_Msk        (0x1007UL << TIM_CCMR3_OC6M_Pos)                /*!< 0x01007000 */\n#define TIM_CCMR3_OC6M            TIM_CCMR3_OC6M_Msk                           /*!<OC4M[3:0] bits (Output Compare 4 Mode) */\n#define TIM_CCMR3_OC6M_0          (0x1UL << TIM_CCMR3_OC6M_Pos)                 /*!< 0x00001000 */\n#define TIM_CCMR3_OC6M_1          (0x2UL << TIM_CCMR3_OC6M_Pos)                 /*!< 0x00002000 */\n#define TIM_CCMR3_OC6M_2          (0x4UL << TIM_CCMR3_OC6M_Pos)                 /*!< 0x00004000 */\n#define TIM_CCMR3_OC6M_3          (0x1000UL << TIM_CCMR3_OC6M_Pos)              /*!< 0x01000000 */\n\n#define TIM_CCMR3_OC6CE_Pos       (15U)\n#define TIM_CCMR3_OC6CE_Msk       (0x1UL << TIM_CCMR3_OC6CE_Pos)               /*!< 0x00008000 */\n#define TIM_CCMR3_OC6CE           TIM_CCMR3_OC6CE_Msk                          /*!<Output Compare 4 Clear Enable */\n/*******************  Bit definition for TIM1_AF1 register  *********************/\n#define TIM1_AF1_BKINE_Pos        (0U)\n#define TIM1_AF1_BKINE_Msk        (0x1UL << TIM1_AF1_BKINE_Pos)                /*!< 0x00000001 */\n#define TIM1_AF1_BKINE            TIM1_AF1_BKINE_Msk                           /*!<BKINE Break input enable bit */\n#define TIM1_AF1_BKCMP1E_Pos      (1U)\n#define TIM1_AF1_BKCMP1E_Msk      (0x1UL << TIM1_AF1_BKCMP1E_Pos)              /*!< 0x00000002 */\n#define TIM1_AF1_BKCMP1E          TIM1_AF1_BKCMP1E_Msk                         /*!<BKCMP1E Break Compare1 Enable bit */\n#define TIM1_AF1_BKCMP2E_Pos      (2U)\n#define TIM1_AF1_BKCMP2E_Msk      (0x1UL << TIM1_AF1_BKCMP2E_Pos)              /*!< 0x00000004 */\n#define TIM1_AF1_BKCMP2E          TIM1_AF1_BKCMP2E_Msk                         /*!<BKCMP1E Break Compare2 Enable bit */\n#define TIM1_AF1_BKDF1BK0E_Pos    (8U)\n#define TIM1_AF1_BKDF1BK0E_Msk    (0x1UL << TIM1_AF1_BKDF1BK0E_Pos)            /*!< 0x00000100 */\n#define TIM1_AF1_BKDF1BK0E        TIM1_AF1_BKDF1BK0E_Msk                       /*!<BKDF1BK0E Break input DFSDM Break 0 */\n#define TIM1_AF1_BKINP_Pos        (9U)\n#define TIM1_AF1_BKINP_Msk        (0x1UL << TIM1_AF1_BKINP_Pos)                /*!< 0x00000200 */\n#define TIM1_AF1_BKINP            TIM1_AF1_BKINP_Msk                           /*!<BRKINP Break input polarity */\n#define TIM1_AF1_BKCMP1P_Pos      (10U)\n#define TIM1_AF1_BKCMP1P_Msk      (0x1UL << TIM1_AF1_BKCMP1P_Pos)              /*!< 0x00000400 */\n#define TIM1_AF1_BKCMP1P          TIM1_AF1_BKCMP1P_Msk                         /*!<BKCMP1P Break COMP1 input polarity */\n#define TIM1_AF1_BKCMP2P_Pos      (11U)\n#define TIM1_AF1_BKCMP2P_Msk      (0x1UL << TIM1_AF1_BKCMP2P_Pos)              /*!< 0x00000800 */\n#define TIM1_AF1_BKCMP2P          TIM1_AF1_BKCMP2P_Msk                         /*!<BKCMP2P Break COMP2 input polarity */\n\n#define TIM1_AF1_ETRSEL_Pos       (14U)\n#define TIM1_AF1_ETRSEL_Msk       (0xFUL << TIM1_AF1_ETRSEL_Pos)               /*!< 0x0003C000 */\n#define TIM1_AF1_ETRSEL           TIM1_AF1_ETRSEL_Msk                          /*!<ETRSEL[3:0] bits (TIM1 ETRSEL) */\n#define TIM1_AF1_ETRSEL_0         (0x1UL << TIM1_AF1_ETRSEL_Pos)                /*!< 0x00004000 */\n#define TIM1_AF1_ETRSEL_1         (0x2UL << TIM1_AF1_ETRSEL_Pos)                /*!< 0x00008000 */\n#define TIM1_AF1_ETRSEL_2         (0x4UL << TIM1_AF1_ETRSEL_Pos)                /*!< 0x00010000 */\n#define TIM1_AF1_ETRSEL_3         (0x8UL << TIM1_AF1_ETRSEL_Pos)                /*!< 0x00020000 */\n\n/*******************  Bit definition for TIM1_AF2 register  *********************/\n#define TIM1_AF2_BK2INE_Pos       (0U)\n#define TIM1_AF2_BK2INE_Msk       (0x1UL << TIM1_AF2_BK2INE_Pos)               /*!< 0x00000001 */\n#define TIM1_AF2_BK2INE           TIM1_AF2_BK2INE_Msk                          /*!<BK2INE Break input 2 enable bit */\n#define TIM1_AF2_BK2CMP1E_Pos     (1U)\n#define TIM1_AF2_BK2CMP1E_Msk     (0x1UL << TIM1_AF2_BK2CMP1E_Pos)             /*!< 0x00000002 */\n#define TIM1_AF2_BK2CMP1E         TIM1_AF2_BK2CMP1E_Msk                        /*!<BK2CMP1E Break2 Compare1 Enable bit */\n#define TIM1_AF2_BK2CMP2E_Pos     (2U)\n#define TIM1_AF2_BK2CMP2E_Msk     (0x1UL << TIM1_AF2_BK2CMP2E_Pos)             /*!< 0x00000004 */\n#define TIM1_AF2_BK2CMP2E         TIM1_AF2_BK2CMP2E_Msk                        /*!<BK2CMP1E Break2 Compare2 Enable bit  */\n#define TIM1_AF2_BK2DFBK1E_Pos    (8U)\n#define TIM1_AF2_BK2DFBK1E_Msk    (0x1UL << TIM1_AF2_BK2DFBK1E_Pos)            /*!< 0x00000100 */\n#define TIM1_AF2_BK2DFBK1E        TIM1_AF2_BK2DFBK1E_Msk                       /*!<BK2DFBK1E Break input2 DFSDM Break 1 */\n#define TIM1_AF2_BK2INP_Pos       (9U)\n#define TIM1_AF2_BK2INP_Msk       (0x1UL << TIM1_AF2_BK2INP_Pos)               /*!< 0x00000200 */\n#define TIM1_AF2_BK2INP           TIM1_AF2_BK2INP_Msk                          /*!<BRKINP Break2 input polarity */\n#define TIM1_AF2_BK2CMP1P_Pos     (10U)\n#define TIM1_AF2_BK2CMP1P_Msk     (0x1UL << TIM1_AF2_BK2CMP1P_Pos)             /*!< 0x00000400 */\n#define TIM1_AF2_BK2CMP1P         TIM1_AF2_BK2CMP1P_Msk                        /*!<BKCMP1P Break2 COMP1 input polarity */\n#define TIM1_AF2_BK2CMP2P_Pos     (11U)\n#define TIM1_AF2_BK2CMP2P_Msk     (0x1UL << TIM1_AF2_BK2CMP2P_Pos)             /*!< 0x00000800 */\n#define TIM1_AF2_BK2CMP2P         TIM1_AF2_BK2CMP2P_Msk                        /*!<BKCMP2P Break2 COMP2 input polarity */\n\n/*******************  Bit definition for TIM_TISEL register  *********************/\n#define TIM_TISEL_TI1SEL_Pos      (0U)\n#define TIM_TISEL_TI1SEL_Msk      (0xFUL << TIM_TISEL_TI1SEL_Pos)              /*!< 0x0000000F */\n#define TIM_TISEL_TI1SEL          TIM_TISEL_TI1SEL_Msk                         /*!<TI1SEL[3:0] bits (TIM TI1 SEL)*/\n#define TIM_TISEL_TI1SEL_0        (0x1UL << TIM_TISEL_TI1SEL_Pos)               /*!< 0x00000001 */\n#define TIM_TISEL_TI1SEL_1        (0x2UL << TIM_TISEL_TI1SEL_Pos)               /*!< 0x00000002 */\n#define TIM_TISEL_TI1SEL_2        (0x4UL << TIM_TISEL_TI1SEL_Pos)               /*!< 0x00000004 */\n#define TIM_TISEL_TI1SEL_3        (0x8UL << TIM_TISEL_TI1SEL_Pos)               /*!< 0x00000008 */\n\n#define TIM_TISEL_TI2SEL_Pos      (8U)\n#define TIM_TISEL_TI2SEL_Msk      (0xFUL << TIM_TISEL_TI2SEL_Pos)              /*!< 0x00000F00 */\n#define TIM_TISEL_TI2SEL          TIM_TISEL_TI2SEL_Msk                         /*!<TI2SEL[3:0] bits (TIM TI2 SEL)*/\n#define TIM_TISEL_TI2SEL_0        (0x1UL << TIM_TISEL_TI2SEL_Pos)               /*!< 0x00000100 */\n#define TIM_TISEL_TI2SEL_1        (0x2UL << TIM_TISEL_TI2SEL_Pos)               /*!< 0x00000200 */\n#define TIM_TISEL_TI2SEL_2        (0x4UL << TIM_TISEL_TI2SEL_Pos)               /*!< 0x00000400 */\n#define TIM_TISEL_TI2SEL_3        (0x8UL << TIM_TISEL_TI2SEL_Pos)               /*!< 0x00000800 */\n\n#define TIM_TISEL_TI3SEL_Pos      (16U)\n#define TIM_TISEL_TI3SEL_Msk      (0xFUL << TIM_TISEL_TI3SEL_Pos)              /*!< 0x000F0000 */\n#define TIM_TISEL_TI3SEL          TIM_TISEL_TI3SEL_Msk                         /*!<TI3SEL[3:0] bits (TIM TI3 SEL)*/\n#define TIM_TISEL_TI3SEL_0        (0x1UL << TIM_TISEL_TI3SEL_Pos)               /*!< 0x00010000 */\n#define TIM_TISEL_TI3SEL_1        (0x2UL << TIM_TISEL_TI3SEL_Pos)               /*!< 0x00020000 */\n#define TIM_TISEL_TI3SEL_2        (0x4UL << TIM_TISEL_TI3SEL_Pos)               /*!< 0x00040000 */\n#define TIM_TISEL_TI3SEL_3        (0x8UL << TIM_TISEL_TI3SEL_Pos)               /*!< 0x00080000 */\n\n#define TIM_TISEL_TI4SEL_Pos      (24U)\n#define TIM_TISEL_TI4SEL_Msk      (0xFUL << TIM_TISEL_TI4SEL_Pos)              /*!< 0x0F000000 */\n#define TIM_TISEL_TI4SEL          TIM_TISEL_TI4SEL_Msk                         /*!<TI4SEL[3:0] bits (TIM TI4 SEL)*/\n#define TIM_TISEL_TI4SEL_0        (0x1UL << TIM_TISEL_TI4SEL_Pos)               /*!< 0x01000000 */\n#define TIM_TISEL_TI4SEL_1        (0x2UL << TIM_TISEL_TI4SEL_Pos)               /*!< 0x02000000 */\n#define TIM_TISEL_TI4SEL_2        (0x4UL << TIM_TISEL_TI4SEL_Pos)               /*!< 0x04000000 */\n#define TIM_TISEL_TI4SEL_3        (0x8UL << TIM_TISEL_TI4SEL_Pos)               /*!< 0x08000000 */\n\n/*******************  Bit definition for TIM8_AF1 register  *********************/\n#define TIM8_AF1_BKINE_Pos        (0U)\n#define TIM8_AF1_BKINE_Msk        (0x1UL << TIM8_AF1_BKINE_Pos)                /*!< 0x00000001 */\n#define TIM8_AF1_BKINE            TIM8_AF1_BKINE_Msk                           /*!<BKINE Break input enable bit */\n#define TIM8_AF1_BKCMP1E_Pos      (1U)\n#define TIM8_AF1_BKCMP1E_Msk      (0x1UL << TIM8_AF1_BKCMP1E_Pos)              /*!< 0x00000002 */\n#define TIM8_AF1_BKCMP1E          TIM8_AF1_BKCMP1E_Msk                         /*!<BKCMP1E Break Compare1 Enable bit */\n#define TIM8_AF1_BKCMP2E_Pos      (2U)\n#define TIM8_AF1_BKCMP2E_Msk      (0x1UL << TIM8_AF1_BKCMP2E_Pos)              /*!< 0x00000004 */\n#define TIM8_AF1_BKCMP2E          TIM8_AF1_BKCMP2E_Msk                         /*!<BKCMP1E Break Compare2 Enable bit  */\n#define TIM8_AF1_BKDFBK2E_Pos     (8U)\n#define TIM8_AF1_BKDFBK2E_Msk     (0x1UL << TIM8_AF1_BKDFBK2E_Pos)             /*!< 0x00000100 */\n#define TIM8_AF1_BKDFBK2E         TIM8_AF1_BKDFBK2E_Msk                        /*!<BKDFBK2E Break input DFSDM Break 2 */\n#define TIM8_AF1_BKINP_Pos        (9U)\n#define TIM8_AF1_BKINP_Msk        (0x1UL << TIM8_AF1_BKINP_Pos)                /*!< 0x00000200 */\n#define TIM8_AF1_BKINP            TIM8_AF1_BKINP_Msk                           /*!<BRKINP Break input polarity */\n#define TIM8_AF1_BKCMP1P_Pos      (10U)\n#define TIM8_AF1_BKCMP1P_Msk      (0x1UL << TIM8_AF1_BKCMP1P_Pos)              /*!< 0x00000400 */\n#define TIM8_AF1_BKCMP1P          TIM8_AF1_BKCMP1P_Msk                         /*!<BKCMP1P Break COMP1 input polarity */\n#define TIM8_AF1_BKCMP2P_Pos      (11U)\n#define TIM8_AF1_BKCMP2P_Msk      (0x1UL << TIM8_AF1_BKCMP2P_Pos)              /*!< 0x00000800 */\n#define TIM8_AF1_BKCMP2P          TIM8_AF1_BKCMP2P_Msk                         /*!<BKCMP2P Break COMP2 input polarity */\n\n#define TIM8_AF1_ETRSEL_Pos       (14U)\n#define TIM8_AF1_ETRSEL_Msk       (0xFUL << TIM8_AF1_ETRSEL_Pos)               /*!< 0x0003C000 */\n#define TIM8_AF1_ETRSEL           TIM8_AF1_ETRSEL_Msk                          /*!<ETRSEL[3:0] bits (TIM8 ETRSEL) */\n#define TIM8_AF1_ETRSEL_0         (0x1UL << TIM8_AF1_ETRSEL_Pos)                /*!< 0x00004000 */\n#define TIM8_AF1_ETRSEL_1         (0x2UL << TIM8_AF1_ETRSEL_Pos)                /*!< 0x00008000 */\n#define TIM8_AF1_ETRSEL_2         (0x4UL << TIM8_AF1_ETRSEL_Pos)                /*!< 0x00010000 */\n#define TIM8_AF1_ETRSEL_3         (0x8UL << TIM8_AF1_ETRSEL_Pos)                /*!< 0x00020000 */\n/*******************  Bit definition for TIM8_AF2 register  *********************/\n#define TIM8_AF2_BK2INE_Pos       (0U)\n#define TIM8_AF2_BK2INE_Msk       (0x1UL << TIM8_AF2_BK2INE_Pos)               /*!< 0x00000001 */\n#define TIM8_AF2_BK2INE           TIM8_AF2_BK2INE_Msk                          /*!<BK2INE Break input 2 enable bit */\n#define TIM8_AF2_BK2CMP1E_Pos     (1U)\n#define TIM8_AF2_BK2CMP1E_Msk     (0x1UL << TIM8_AF2_BK2CMP1E_Pos)             /*!< 0x00000002 */\n#define TIM8_AF2_BK2CMP1E         TIM8_AF2_BK2CMP1E_Msk                        /*!<BK2CMP1E Break2 Compare1 Enable bit */\n#define TIM8_AF2_BK2CMP2E_Pos     (2U)\n#define TIM8_AF2_BK2CMP2E_Msk     (0x1UL << TIM8_AF2_BK2CMP2E_Pos)             /*!< 0x00000004 */\n#define TIM8_AF2_BK2CMP2E         TIM8_AF2_BK2CMP2E_Msk                        /*!<BK2CMP1E Break2 Compare2 Enable bit  */\n#define TIM8_AF2_BK2DFBK3E_Pos    (8U)\n#define TIM8_AF2_BK2DFBK3E_Msk    (0x1UL << TIM8_AF2_BK2DFBK3E_Pos)            /*!< 0x00000100 */\n#define TIM8_AF2_BK2DFBK3E        TIM8_AF2_BK2DFBK3E_Msk                       /*!<BK2DFBK1E Break input2 DFSDM Break 3 */\n#define TIM8_AF2_BK2INP_Pos       (9U)\n#define TIM8_AF2_BK2INP_Msk       (0x1UL << TIM8_AF2_BK2INP_Pos)               /*!< 0x00000200 */\n#define TIM8_AF2_BK2INP           TIM8_AF2_BK2INP_Msk                          /*!<BRKINP Break2 input polarity */\n#define TIM8_AF2_BK2CMP1P_Pos     (10U)\n#define TIM8_AF2_BK2CMP1P_Msk     (0x1UL << TIM8_AF2_BK2CMP1P_Pos)             /*!< 0x00000400 */\n#define TIM8_AF2_BK2CMP1P         TIM8_AF2_BK2CMP1P_Msk                        /*!<BKCMP1P Break2 COMP1 input polarity */\n#define TIM8_AF2_BK2CMP2P_Pos     (11U)\n#define TIM8_AF2_BK2CMP2P_Msk     (0x1UL << TIM8_AF2_BK2CMP2P_Pos)             /*!< 0x00000800 */\n#define TIM8_AF2_BK2CMP2P         TIM8_AF2_BK2CMP2P_Msk                        /*!<BKCMP2P Break2 COMP2 input polarity */\n\n/*******************  Bit definition for TIM2_AF1 register  *********************/\n#define TIM2_AF1_ETRSEL_Pos      (14U)\n#define TIM2_AF1_ETRSEL_Msk      (0xFUL << TIM2_AF1_ETRSEL_Pos)                /*!< 0x0003C000 */\n#define TIM2_AF1_ETRSEL          TIM2_AF1_ETRSEL_Msk                           /*!<ETRSEL[3:0] bits (TIM2 ETRSEL) */\n#define TIM2_AF1_ETRSEL_0        (0x1UL << TIM2_AF1_ETRSEL_Pos)                 /*!< 0x00004000 */\n#define TIM2_AF1_ETRSEL_1        (0x2UL << TIM2_AF1_ETRSEL_Pos)                 /*!< 0x00008000 */\n#define TIM2_AF1_ETRSEL_2        (0x4UL << TIM2_AF1_ETRSEL_Pos)                 /*!< 0x00010000 */\n#define TIM2_AF1_ETRSEL_3        (0x8UL << TIM2_AF1_ETRSEL_Pos)                 /*!< 0x00020000 */\n\n/*******************  Bit definition for TIM3_AF1 register  *********************/\n#define TIM3_AF1_ETRSEL_Pos      (14U)\n#define TIM3_AF1_ETRSEL_Msk      (0xFUL << TIM3_AF1_ETRSEL_Pos)                /*!< 0x0003C000 */\n#define TIM3_AF1_ETRSEL          TIM3_AF1_ETRSEL_Msk                           /*!<ETRSEL[3:0] bits (TIM3 ETRSEL) */\n#define TIM3_AF1_ETRSEL_0        (0x1UL << TIM3_AF1_ETRSEL_Pos)                 /*!< 0x00004000 */\n#define TIM3_AF1_ETRSEL_1        (0x2UL << TIM3_AF1_ETRSEL_Pos)                 /*!< 0x00008000 */\n#define TIM3_AF1_ETRSEL_2        (0x4UL << TIM3_AF1_ETRSEL_Pos)                 /*!< 0x00010000 */\n#define TIM3_AF1_ETRSEL_3        (0x8UL << TIM3_AF1_ETRSEL_Pos)                 /*!< 0x00020000 */\n\n/*******************  Bit definition for TIM5_AF1 register  *********************/\n#define TIM5_AF1_ETRSEL_Pos      (14U)\n#define TIM5_AF1_ETRSEL_Msk      (0xFUL << TIM5_AF1_ETRSEL_Pos)                /*!< 0x0003C000 */\n#define TIM5_AF1_ETRSEL          TIM5_AF1_ETRSEL_Msk                           /*!<ETRSEL[3:0] bits (TIM5 ETRSEL) */\n#define TIM5_AF1_ETRSEL_0        (0x1UL << TIM5_AF1_ETRSEL_Pos)                 /*!< 0x00004000 */\n#define TIM5_AF1_ETRSEL_1        (0x2UL << TIM5_AF1_ETRSEL_Pos)                 /*!< 0x00008000 */\n#define TIM5_AF1_ETRSEL_2        (0x4UL << TIM5_AF1_ETRSEL_Pos)                 /*!< 0x00010000 */\n#define TIM5_AF1_ETRSEL_3        (0x8UL << TIM5_AF1_ETRSEL_Pos)                 /*!< 0x00020000 */\n\n/*******************  Bit definition for TIM15_AF1 register  *********************/\n#define TIM15_AF1_BKINE_Pos        (0U)\n#define TIM15_AF1_BKINE_Msk        (0x1UL << TIM15_AF1_BKINE_Pos)              /*!< 0x00000001 */\n#define TIM15_AF1_BKINE            TIM15_AF1_BKINE_Msk                         /*!<BKINE Break input enable bit */\n#define TIM15_AF1_BKCMP1E_Pos      (1U)\n#define TIM15_AF1_BKCMP1E_Msk      (0x1UL << TIM15_AF1_BKCMP1E_Pos)            /*!< 0x00000002 */\n#define TIM15_AF1_BKCMP1E          TIM15_AF1_BKCMP1E_Msk                       /*!<BKCMP1E Break Compare1 Enable bit */\n#define TIM15_AF1_BKCMP2E_Pos      (2U)\n#define TIM15_AF1_BKCMP2E_Msk      (0x1UL << TIM15_AF1_BKCMP2E_Pos)            /*!< 0x00000004 */\n#define TIM15_AF1_BKCMP2E          TIM15_AF1_BKCMP2E_Msk                       /*!<BKCMP1E Break Compare2 Enable bit  */\n#define TIM15_AF1_BKDF1BK2E_Pos    (8U)\n#define TIM15_AF1_BKDF1BK2E_Msk    (0x1UL << TIM15_AF1_BKDF1BK2E_Pos)          /*!< 0x00000100 */\n#define TIM15_AF1_BKDF1BK2E        TIM15_AF1_BKDF1BK2E_Msk                     /*!<BRK dfsdm1_break[0] enable */\n#define TIM15_AF1_BKINP_Pos        (9U)\n#define TIM15_AF1_BKINP_Msk        (0x1UL << TIM15_AF1_BKINP_Pos)              /*!< 0x00000200 */\n#define TIM15_AF1_BKINP            TIM15_AF1_BKINP_Msk                         /*!<BRKINP Break input polarity */\n#define TIM15_AF1_BKCMP1P_Pos      (10U)\n#define TIM15_AF1_BKCMP1P_Msk      (0x1UL << TIM15_AF1_BKCMP1P_Pos)            /*!< 0x00000400 */\n#define TIM15_AF1_BKCMP1P          TIM15_AF1_BKCMP1P_Msk                       /*!<BKCMP1P Break COMP1 input polarity */\n#define TIM15_AF1_BKCMP2P_Pos      (11U)\n#define TIM15_AF1_BKCMP2P_Msk      (0x1UL << TIM15_AF1_BKCMP2P_Pos)            /*!< 0x00000800 */\n#define TIM15_AF1_BKCMP2P          TIM15_AF1_BKCMP2P_Msk                       /*!<BKCMP2P Break COMP2 input polarity */\n\n/*******************  Bit definition for TIM16_ register  *********************/\n#define TIM16_AF1_BKINE_Pos        (0U)\n#define TIM16_AF1_BKINE_Msk        (0x1UL << TIM16_AF1_BKINE_Pos)              /*!< 0x00000001 */\n#define TIM16_AF1_BKINE            TIM16_AF1_BKINE_Msk                         /*!<BKINE Break input enable bit */\n#define TIM16_AF1_BKCMP1E_Pos      (1U)\n#define TIM16_AF1_BKCMP1E_Msk      (0x1UL << TIM16_AF1_BKCMP1E_Pos)            /*!< 0x00000002 */\n#define TIM16_AF1_BKCMP1E          TIM16_AF1_BKCMP1E_Msk                       /*!<BKCMP1E Break Compare1 Enable bit */\n#define TIM16_AF1_BKCMP2E_Pos      (2U)\n#define TIM16_AF1_BKCMP2E_Msk      (0x1UL << TIM16_AF1_BKCMP2E_Pos)            /*!< 0x00000004 */\n#define TIM16_AF1_BKCMP2E          TIM16_AF1_BKCMP2E_Msk                       /*!<BKCMP1E Break Compare2 Enable bit  */\n#define TIM16_AF1_BKDF1BK2E_Pos    (8U)\n#define TIM16_AF1_BKDF1BK2E_Msk    (0x1UL << TIM16_AF1_BKDF1BK2E_Pos)          /*!< 0x00000100 */\n#define TIM16_AF1_BKDF1BK2E        TIM16_AF1_BKDF1BK2E_Msk                     /*!<BRK dfsdm1_break[1] enable */\n#define TIM16_AF1_BKINP_Pos        (9U)\n#define TIM16_AF1_BKINP_Msk        (0x1UL << TIM16_AF1_BKINP_Pos)              /*!< 0x00000200 */\n#define TIM16_AF1_BKINP            TIM16_AF1_BKINP_Msk                         /*!<BRKINP Break input polarity */\n#define TIM16_AF1_BKCMP1P_Pos      (10U)\n#define TIM16_AF1_BKCMP1P_Msk      (0x1UL << TIM16_AF1_BKCMP1P_Pos)            /*!< 0x00000400 */\n#define TIM16_AF1_BKCMP1P          TIM16_AF1_BKCMP1P_Msk                       /*!<BKCMP1P Break COMP1 input polarity */\n#define TIM16_AF1_BKCMP2P_Pos      (11U)\n#define TIM16_AF1_BKCMP2P_Msk      (0x1UL << TIM16_AF1_BKCMP2P_Pos)            /*!< 0x00000800 */\n#define TIM16_AF1_BKCMP2P          TIM16_AF1_BKCMP2P_Msk                       /*!<BKCMP2P Break COMP2 input polarity */\n\n/*******************  Bit definition for TIM17_AF1 register  *********************/\n#define TIM17_AF1_BKINE_Pos        (0U)\n#define TIM17_AF1_BKINE_Msk        (0x1UL << TIM17_AF1_BKINE_Pos)              /*!< 0x00000001 */\n#define TIM17_AF1_BKINE            TIM17_AF1_BKINE_Msk                         /*!<BKINE Break input enable bit */\n#define TIM17_AF1_BKCMP1E_Pos      (1U)\n#define TIM17_AF1_BKCMP1E_Msk      (0x1UL << TIM17_AF1_BKCMP1E_Pos)            /*!< 0x00000002 */\n#define TIM17_AF1_BKCMP1E          TIM17_AF1_BKCMP1E_Msk                       /*!<BKCMP1E Break Compare1 Enable bit */\n#define TIM17_AF1_BKCMP2E_Pos      (2U)\n#define TIM17_AF1_BKCMP2E_Msk      (0x1UL << TIM17_AF1_BKCMP2E_Pos)            /*!< 0x00000004 */\n#define TIM17_AF1_BKCMP2E          TIM17_AF1_BKCMP2E_Msk                       /*!<BKCMP1E Break Compare2 Enable bit  */\n#define TIM17_AF1_BKDF1BK2E_Pos    (8U)\n#define TIM17_AF1_BKDF1BK2E_Msk    (0x1UL << TIM17_AF1_BKDF1BK2E_Pos)          /*!< 0x00000100 */\n#define TIM17_AF1_BKDF1BK2E        TIM17_AF1_BKDF1BK2E_Msk                     /*!<BRK dfsdm1_break[2] enable */\n#define TIM17_AF1_BKINP_Pos        (9U)\n#define TIM17_AF1_BKINP_Msk        (0x1UL << TIM17_AF1_BKINP_Pos)              /*!< 0x00000200 */\n#define TIM17_AF1_BKINP            TIM17_AF1_BKINP_Msk                         /*!<BRKINP Break input polarity */\n#define TIM17_AF1_BKCMP1P_Pos      (10U)\n#define TIM17_AF1_BKCMP1P_Msk      (0x1UL << TIM17_AF1_BKCMP1P_Pos)            /*!< 0x00000400 */\n#define TIM17_AF1_BKCMP1P          TIM17_AF1_BKCMP1P_Msk                       /*!<BKCMP1P Break COMP1 input polarity */\n#define TIM17_AF1_BKCMP2P_Pos      (11U)\n#define TIM17_AF1_BKCMP2P_Msk      (0x1UL << TIM17_AF1_BKCMP2P_Pos)            /*!< 0x00000800 */\n#define TIM17_AF1_BKCMP2P          TIM17_AF1_BKCMP2P_Msk                       /*!<BKCMP2P Break COMP2 input polarity */\n\n/******************************************************************************/\n/*                                                                            */\n/*                         Low Power Timer (LPTTIM)                           */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bit definition for LPTIM_ISR register  *******************/\n#define LPTIM_ISR_CMPM_Pos          (0U)\n#define LPTIM_ISR_CMPM_Msk          (0x1UL << LPTIM_ISR_CMPM_Pos)              /*!< 0x00000001 */\n#define LPTIM_ISR_CMPM              LPTIM_ISR_CMPM_Msk                         /*!< Compare match */\n#define LPTIM_ISR_ARRM_Pos          (1U)\n#define LPTIM_ISR_ARRM_Msk          (0x1UL << LPTIM_ISR_ARRM_Pos)              /*!< 0x00000002 */\n#define LPTIM_ISR_ARRM              LPTIM_ISR_ARRM_Msk                         /*!< Autoreload match */\n#define LPTIM_ISR_EXTTRIG_Pos       (2U)\n#define LPTIM_ISR_EXTTRIG_Msk       (0x1UL << LPTIM_ISR_EXTTRIG_Pos)           /*!< 0x00000004 */\n#define LPTIM_ISR_EXTTRIG           LPTIM_ISR_EXTTRIG_Msk                      /*!< External trigger edge event */\n#define LPTIM_ISR_CMPOK_Pos         (3U)\n#define LPTIM_ISR_CMPOK_Msk         (0x1UL << LPTIM_ISR_CMPOK_Pos)             /*!< 0x00000008 */\n#define LPTIM_ISR_CMPOK             LPTIM_ISR_CMPOK_Msk                        /*!< Compare register update OK */\n#define LPTIM_ISR_ARROK_Pos         (4U)\n#define LPTIM_ISR_ARROK_Msk         (0x1UL << LPTIM_ISR_ARROK_Pos)             /*!< 0x00000010 */\n#define LPTIM_ISR_ARROK             LPTIM_ISR_ARROK_Msk                        /*!< Autoreload register update OK */\n#define LPTIM_ISR_UP_Pos            (5U)\n#define LPTIM_ISR_UP_Msk            (0x1UL << LPTIM_ISR_UP_Pos)                /*!< 0x00000020 */\n#define LPTIM_ISR_UP                LPTIM_ISR_UP_Msk                           /*!< Counter direction change down to up */\n#define LPTIM_ISR_DOWN_Pos          (6U)\n#define LPTIM_ISR_DOWN_Msk          (0x1UL << LPTIM_ISR_DOWN_Pos)              /*!< 0x00000040 */\n#define LPTIM_ISR_DOWN              LPTIM_ISR_DOWN_Msk                         /*!< Counter direction change up to down */\n\n/******************  Bit definition for LPTIM_ICR register  *******************/\n#define LPTIM_ICR_CMPMCF_Pos        (0U)\n#define LPTIM_ICR_CMPMCF_Msk        (0x1UL << LPTIM_ICR_CMPMCF_Pos)            /*!< 0x00000001 */\n#define LPTIM_ICR_CMPMCF            LPTIM_ICR_CMPMCF_Msk                       /*!< Compare match Clear Flag */\n#define LPTIM_ICR_ARRMCF_Pos        (1U)\n#define LPTIM_ICR_ARRMCF_Msk        (0x1UL << LPTIM_ICR_ARRMCF_Pos)            /*!< 0x00000002 */\n#define LPTIM_ICR_ARRMCF            LPTIM_ICR_ARRMCF_Msk                       /*!< Autoreload match Clear Flag */\n#define LPTIM_ICR_EXTTRIGCF_Pos     (2U)\n#define LPTIM_ICR_EXTTRIGCF_Msk     (0x1UL << LPTIM_ICR_EXTTRIGCF_Pos)         /*!< 0x00000004 */\n#define LPTIM_ICR_EXTTRIGCF         LPTIM_ICR_EXTTRIGCF_Msk                    /*!< External trigger edge event Clear Flag */\n#define LPTIM_ICR_CMPOKCF_Pos       (3U)\n#define LPTIM_ICR_CMPOKCF_Msk       (0x1UL << LPTIM_ICR_CMPOKCF_Pos)           /*!< 0x00000008 */\n#define LPTIM_ICR_CMPOKCF           LPTIM_ICR_CMPOKCF_Msk                      /*!< Compare register update OK Clear Flag */\n#define LPTIM_ICR_ARROKCF_Pos       (4U)\n#define LPTIM_ICR_ARROKCF_Msk       (0x1UL << LPTIM_ICR_ARROKCF_Pos)           /*!< 0x00000010 */\n#define LPTIM_ICR_ARROKCF           LPTIM_ICR_ARROKCF_Msk                      /*!< Autoreload register update OK Clear Flag */\n#define LPTIM_ICR_UPCF_Pos          (5U)\n#define LPTIM_ICR_UPCF_Msk          (0x1UL << LPTIM_ICR_UPCF_Pos)              /*!< 0x00000020 */\n#define LPTIM_ICR_UPCF              LPTIM_ICR_UPCF_Msk                         /*!< Counter direction change down to up Clear Flag */\n#define LPTIM_ICR_DOWNCF_Pos        (6U)\n#define LPTIM_ICR_DOWNCF_Msk        (0x1UL << LPTIM_ICR_DOWNCF_Pos)            /*!< 0x00000040 */\n#define LPTIM_ICR_DOWNCF            LPTIM_ICR_DOWNCF_Msk                       /*!< Counter direction change up to down Clear Flag */\n\n/******************  Bit definition for LPTIM_IER register ********************/\n#define LPTIM_IER_CMPMIE_Pos        (0U)\n#define LPTIM_IER_CMPMIE_Msk        (0x1UL << LPTIM_IER_CMPMIE_Pos)            /*!< 0x00000001 */\n#define LPTIM_IER_CMPMIE            LPTIM_IER_CMPMIE_Msk                       /*!< Compare match Interrupt Enable */\n#define LPTIM_IER_ARRMIE_Pos        (1U)\n#define LPTIM_IER_ARRMIE_Msk        (0x1UL << LPTIM_IER_ARRMIE_Pos)            /*!< 0x00000002 */\n#define LPTIM_IER_ARRMIE            LPTIM_IER_ARRMIE_Msk                       /*!< Autoreload match Interrupt Enable */\n#define LPTIM_IER_EXTTRIGIE_Pos     (2U)\n#define LPTIM_IER_EXTTRIGIE_Msk     (0x1UL << LPTIM_IER_EXTTRIGIE_Pos)         /*!< 0x00000004 */\n#define LPTIM_IER_EXTTRIGIE         LPTIM_IER_EXTTRIGIE_Msk                    /*!< External trigger edge event Interrupt Enable */\n#define LPTIM_IER_CMPOKIE_Pos       (3U)\n#define LPTIM_IER_CMPOKIE_Msk       (0x1UL << LPTIM_IER_CMPOKIE_Pos)           /*!< 0x00000008 */\n#define LPTIM_IER_CMPOKIE           LPTIM_IER_CMPOKIE_Msk                      /*!< Compare register update OK Interrupt Enable */\n#define LPTIM_IER_ARROKIE_Pos       (4U)\n#define LPTIM_IER_ARROKIE_Msk       (0x1UL << LPTIM_IER_ARROKIE_Pos)           /*!< 0x00000010 */\n#define LPTIM_IER_ARROKIE           LPTIM_IER_ARROKIE_Msk                      /*!< Autoreload register update OK Interrupt Enable */\n#define LPTIM_IER_UPIE_Pos          (5U)\n#define LPTIM_IER_UPIE_Msk          (0x1UL << LPTIM_IER_UPIE_Pos)              /*!< 0x00000020 */\n#define LPTIM_IER_UPIE              LPTIM_IER_UPIE_Msk                         /*!< Counter direction change down to up Interrupt Enable */\n#define LPTIM_IER_DOWNIE_Pos        (6U)\n#define LPTIM_IER_DOWNIE_Msk        (0x1UL << LPTIM_IER_DOWNIE_Pos)            /*!< 0x00000040 */\n#define LPTIM_IER_DOWNIE            LPTIM_IER_DOWNIE_Msk                       /*!< Counter direction change up to down Interrupt Enable */\n\n/******************  Bit definition for LPTIM_CFGR register *******************/\n#define LPTIM_CFGR_CKSEL_Pos        (0U)\n#define LPTIM_CFGR_CKSEL_Msk        (0x1UL << LPTIM_CFGR_CKSEL_Pos)            /*!< 0x00000001 */\n#define LPTIM_CFGR_CKSEL            LPTIM_CFGR_CKSEL_Msk                       /*!< Clock selector */\n\n#define LPTIM_CFGR_CKPOL_Pos        (1U)\n#define LPTIM_CFGR_CKPOL_Msk        (0x3UL << LPTIM_CFGR_CKPOL_Pos)            /*!< 0x00000006 */\n#define LPTIM_CFGR_CKPOL            LPTIM_CFGR_CKPOL_Msk                       /*!< CKPOL[1:0] bits (Clock polarity) */\n#define LPTIM_CFGR_CKPOL_0          (0x1UL << LPTIM_CFGR_CKPOL_Pos)             /*!< 0x00000002 */\n#define LPTIM_CFGR_CKPOL_1          (0x2UL << LPTIM_CFGR_CKPOL_Pos)             /*!< 0x00000004 */\n\n#define LPTIM_CFGR_CKFLT_Pos        (3U)\n#define LPTIM_CFGR_CKFLT_Msk        (0x3UL << LPTIM_CFGR_CKFLT_Pos)            /*!< 0x00000018 */\n#define LPTIM_CFGR_CKFLT            LPTIM_CFGR_CKFLT_Msk                       /*!< CKFLT[1:0] bits (Configurable digital filter for external clock) */\n#define LPTIM_CFGR_CKFLT_0          (0x1UL << LPTIM_CFGR_CKFLT_Pos)             /*!< 0x00000008 */\n#define LPTIM_CFGR_CKFLT_1          (0x2UL << LPTIM_CFGR_CKFLT_Pos)             /*!< 0x00000010 */\n\n#define LPTIM_CFGR_TRGFLT_Pos       (6U)\n#define LPTIM_CFGR_TRGFLT_Msk       (0x3UL << LPTIM_CFGR_TRGFLT_Pos)           /*!< 0x000000C0 */\n#define LPTIM_CFGR_TRGFLT           LPTIM_CFGR_TRGFLT_Msk                      /*!< TRGFLT[1:0] bits (Configurable digital filter for trigger) */\n#define LPTIM_CFGR_TRGFLT_0         (0x1UL << LPTIM_CFGR_TRGFLT_Pos)            /*!< 0x00000040 */\n#define LPTIM_CFGR_TRGFLT_1         (0x2UL << LPTIM_CFGR_TRGFLT_Pos)            /*!< 0x00000080 */\n\n#define LPTIM_CFGR_PRESC_Pos        (9U)\n#define LPTIM_CFGR_PRESC_Msk        (0x7UL << LPTIM_CFGR_PRESC_Pos)            /*!< 0x00000E00 */\n#define LPTIM_CFGR_PRESC            LPTIM_CFGR_PRESC_Msk                       /*!< PRESC[2:0] bits (Clock prescaler) */\n#define LPTIM_CFGR_PRESC_0          (0x1UL << LPTIM_CFGR_PRESC_Pos)             /*!< 0x00000200 */\n#define LPTIM_CFGR_PRESC_1          (0x2UL << LPTIM_CFGR_PRESC_Pos)             /*!< 0x00000400 */\n#define LPTIM_CFGR_PRESC_2          (0x4UL << LPTIM_CFGR_PRESC_Pos)             /*!< 0x00000800 */\n\n#define LPTIM_CFGR_TRIGSEL_Pos      (13U)\n#define LPTIM_CFGR_TRIGSEL_Msk      (0x7UL << LPTIM_CFGR_TRIGSEL_Pos)          /*!< 0x0000E000 */\n#define LPTIM_CFGR_TRIGSEL          LPTIM_CFGR_TRIGSEL_Msk                     /*!< TRIGSEL[2:0]] bits (Trigger selector) */\n#define LPTIM_CFGR_TRIGSEL_0        (0x1UL << LPTIM_CFGR_TRIGSEL_Pos)           /*!< 0x00002000 */\n#define LPTIM_CFGR_TRIGSEL_1        (0x2UL << LPTIM_CFGR_TRIGSEL_Pos)           /*!< 0x00004000 */\n#define LPTIM_CFGR_TRIGSEL_2        (0x4UL << LPTIM_CFGR_TRIGSEL_Pos)           /*!< 0x00008000 */\n\n#define LPTIM_CFGR_TRIGEN_Pos       (17U)\n#define LPTIM_CFGR_TRIGEN_Msk       (0x3UL << LPTIM_CFGR_TRIGEN_Pos)           /*!< 0x00060000 */\n#define LPTIM_CFGR_TRIGEN           LPTIM_CFGR_TRIGEN_Msk                      /*!< TRIGEN[1:0] bits (Trigger enable and polarity) */\n#define LPTIM_CFGR_TRIGEN_0         (0x1UL << LPTIM_CFGR_TRIGEN_Pos)            /*!< 0x00020000 */\n#define LPTIM_CFGR_TRIGEN_1         (0x2UL << LPTIM_CFGR_TRIGEN_Pos)            /*!< 0x00040000 */\n\n#define LPTIM_CFGR_TIMOUT_Pos       (19U)\n#define LPTIM_CFGR_TIMOUT_Msk       (0x1UL << LPTIM_CFGR_TIMOUT_Pos)           /*!< 0x00080000 */\n#define LPTIM_CFGR_TIMOUT           LPTIM_CFGR_TIMOUT_Msk                      /*!< Timout enable */\n#define LPTIM_CFGR_WAVE_Pos         (20U)\n#define LPTIM_CFGR_WAVE_Msk         (0x1UL << LPTIM_CFGR_WAVE_Pos)             /*!< 0x00100000 */\n#define LPTIM_CFGR_WAVE             LPTIM_CFGR_WAVE_Msk                        /*!< Waveform shape */\n#define LPTIM_CFGR_WAVPOL_Pos       (21U)\n#define LPTIM_CFGR_WAVPOL_Msk       (0x1UL << LPTIM_CFGR_WAVPOL_Pos)           /*!< 0x00200000 */\n#define LPTIM_CFGR_WAVPOL           LPTIM_CFGR_WAVPOL_Msk                      /*!< Waveform shape polarity */\n#define LPTIM_CFGR_PRELOAD_Pos      (22U)\n#define LPTIM_CFGR_PRELOAD_Msk      (0x1UL << LPTIM_CFGR_PRELOAD_Pos)          /*!< 0x00400000 */\n#define LPTIM_CFGR_PRELOAD          LPTIM_CFGR_PRELOAD_Msk                     /*!< Reg update mode */\n#define LPTIM_CFGR_COUNTMODE_Pos    (23U)\n#define LPTIM_CFGR_COUNTMODE_Msk    (0x1UL << LPTIM_CFGR_COUNTMODE_Pos)        /*!< 0x00800000 */\n#define LPTIM_CFGR_COUNTMODE        LPTIM_CFGR_COUNTMODE_Msk                   /*!< Counter mode enable */\n#define LPTIM_CFGR_ENC_Pos          (24U)\n#define LPTIM_CFGR_ENC_Msk          (0x1UL << LPTIM_CFGR_ENC_Pos)              /*!< 0x01000000 */\n#define LPTIM_CFGR_ENC              LPTIM_CFGR_ENC_Msk                         /*!< Encoder mode enable */\n\n/******************  Bit definition for LPTIM_CR register  ********************/\n#define LPTIM_CR_ENABLE_Pos         (0U)\n#define LPTIM_CR_ENABLE_Msk         (0x1UL << LPTIM_CR_ENABLE_Pos)             /*!< 0x00000001 */\n#define LPTIM_CR_ENABLE             LPTIM_CR_ENABLE_Msk                        /*!< LPTIMer enable */\n#define LPTIM_CR_SNGSTRT_Pos        (1U)\n#define LPTIM_CR_SNGSTRT_Msk        (0x40001UL << LPTIM_CR_SNGSTRT_Pos)        /*!< 0x00080002 */\n#define LPTIM_CR_SNGSTRT            LPTIM_CR_SNGSTRT_Msk                       /*!< Timer start in single mode */\n#define LPTIM_CR_CNTSTRT_Pos        (2U)\n#define LPTIM_CR_CNTSTRT_Msk        (0x1UL << LPTIM_CR_CNTSTRT_Pos)            /*!< 0x00000004 */\n#define LPTIM_CR_CNTSTRT            LPTIM_CR_CNTSTRT_Msk                       /*!< Timer start in continuous mode */\n#define LPTIM_CR_COUNTRST_Pos       (3U)\n#define LPTIM_CR_COUNTRST_Msk       (0x1UL << LPTIM_CR_COUNTRST_Pos)           /*!< 0x00000008 */\n#define LPTIM_CR_COUNTRST           LPTIM_CR_COUNTRST_Msk                      /*!< Timer Counter reset in synchronous mode*/\n#define LPTIM_CR_RSTARE_Pos         (4U)\n#define LPTIM_CR_RSTARE_Msk         (0x1UL << LPTIM_CR_RSTARE_Pos)             /*!< 0x00000010 */\n#define LPTIM_CR_RSTARE             LPTIM_CR_RSTARE_Msk                        /*!< Timer Counter reset after read enable (asynchronously)*/\n\n\n/******************  Bit definition for LPTIM_CMP register  *******************/\n#define LPTIM_CMP_CMP_Pos           (0U)\n#define LPTIM_CMP_CMP_Msk           (0xFFFFUL << LPTIM_CMP_CMP_Pos)            /*!< 0x0000FFFF */\n#define LPTIM_CMP_CMP               LPTIM_CMP_CMP_Msk                          /*!< Compare register */\n\n/******************  Bit definition for LPTIM_ARR register  *******************/\n#define LPTIM_ARR_ARR_Pos           (0U)\n#define LPTIM_ARR_ARR_Msk           (0xFFFFUL << LPTIM_ARR_ARR_Pos)            /*!< 0x0000FFFF */\n#define LPTIM_ARR_ARR               LPTIM_ARR_ARR_Msk                          /*!< Auto reload register */\n\n/******************  Bit definition for LPTIM_CNT register  *******************/\n#define LPTIM_CNT_CNT_Pos           (0U)\n#define LPTIM_CNT_CNT_Msk           (0xFFFFUL << LPTIM_CNT_CNT_Pos)            /*!< 0x0000FFFF */\n#define LPTIM_CNT_CNT               LPTIM_CNT_CNT_Msk                          /*!< Counter register */\n\n/******************  Bit definition for LPTIM_CFGR2 register  *****************/\n#define LPTIM_CFGR2_IN1SEL_Pos      (0U)\n#define LPTIM_CFGR2_IN1SEL_Msk      (0x3UL << LPTIM_CFGR2_IN1SEL_Pos)          /*!< 0x00000003 */\n#define LPTIM_CFGR2_IN1SEL          LPTIM_CFGR2_IN1SEL_Msk                     /*!< IN1SEL[1:0] bits (Remap selection) */\n#define LPTIM_CFGR2_IN1SEL_0        (0x1UL << LPTIM_CFGR2_IN1SEL_Pos)           /*!< 0x00000001 */\n#define LPTIM_CFGR2_IN1SEL_1        (0x2UL << LPTIM_CFGR2_IN1SEL_Pos)           /*!< 0x00000002 */\n#define LPTIM_CFGR2_IN2SEL_Pos      (4U)\n#define LPTIM_CFGR2_IN2SEL_Msk      (0x3UL << LPTIM_CFGR2_IN2SEL_Pos)          /*!< 0x00000030 */\n#define LPTIM_CFGR2_IN2SEL          LPTIM_CFGR2_IN2SEL_Msk                     /*!< IN2SEL[5:4] bits (Remap selection) */\n#define LPTIM_CFGR2_IN2SEL_0        (0x1UL << LPTIM_CFGR2_IN2SEL_Pos)           /*!< 0x00000010 */\n#define LPTIM_CFGR2_IN2SEL_1        (0x2UL << LPTIM_CFGR2_IN2SEL_Pos)           /*!< 0x00000020 */\n\n/******************************************************************************/\n/*                                                                            */\n/*                      Analog Comparators (COMP)                             */\n/*                                                                            */\n/******************************************************************************/\n\n/*******************  Bit definition for COMP_SR register  ********************/\n#define COMP_SR_C1VAL_Pos            (0U)\n#define COMP_SR_C1VAL_Msk            (0x1UL << COMP_SR_C1VAL_Pos)              /*!< 0x00000001 */\n#define COMP_SR_C1VAL                COMP_SR_C1VAL_Msk\n#define COMP_SR_C2VAL_Pos            (1U)\n#define COMP_SR_C2VAL_Msk            (0x1UL << COMP_SR_C2VAL_Pos)              /*!< 0x00000002 */\n#define COMP_SR_C2VAL                COMP_SR_C2VAL_Msk\n#define COMP_SR_C1IF_Pos             (16U)\n#define COMP_SR_C1IF_Msk             (0x1UL << COMP_SR_C1IF_Pos)               /*!< 0x00010000 */\n#define COMP_SR_C1IF                 COMP_SR_C1IF_Msk\n#define COMP_SR_C2IF_Pos             (17U)\n#define COMP_SR_C2IF_Msk             (0x1UL << COMP_SR_C2IF_Pos)               /*!< 0x00020000 */\n#define COMP_SR_C2IF                 COMP_SR_C2IF_Msk\n/*******************  Bit definition for COMP_ICFR register  ********************/\n#define COMP_ICFR_C1IF_Pos           (16U)\n#define COMP_ICFR_C1IF_Msk           (0x1UL << COMP_ICFR_C1IF_Pos)             /*!< 0x00010000 */\n#define COMP_ICFR_C1IF               COMP_ICFR_C1IF_Msk\n#define COMP_ICFR_C2IF_Pos           (17U)\n#define COMP_ICFR_C2IF_Msk           (0x1UL << COMP_ICFR_C2IF_Pos)             /*!< 0x00020000 */\n#define COMP_ICFR_C2IF               COMP_ICFR_C2IF_Msk\n/*******************  Bit definition for COMP_OR register  ********************/\n#define COMP_OR_AFOPA6_Pos           (0U)\n#define COMP_OR_AFOPA6_Msk           (0x1UL << COMP_OR_AFOPA6_Pos)             /*!< 0x00000001 */\n#define COMP_OR_AFOPA6               COMP_OR_AFOPA6_Msk\n#define COMP_OR_AFOPA8_Pos           (1U)\n#define COMP_OR_AFOPA8_Msk           (0x1UL << COMP_OR_AFOPA8_Pos)             /*!< 0x00000002 */\n#define COMP_OR_AFOPA8               COMP_OR_AFOPA8_Msk\n#define COMP_OR_AFOPB12_Pos          (2U)\n#define COMP_OR_AFOPB12_Msk          (0x1UL << COMP_OR_AFOPB12_Pos)            /*!< 0x00000004 */\n#define COMP_OR_AFOPB12              COMP_OR_AFOPB12_Msk\n#define COMP_OR_AFOPE6_Pos           (3U)\n#define COMP_OR_AFOPE6_Msk           (0x1UL << COMP_OR_AFOPE6_Pos)             /*!< 0x00000008 */\n#define COMP_OR_AFOPE6               COMP_OR_AFOPE6_Msk\n#define COMP_OR_AFOPE15_Pos          (4U)\n#define COMP_OR_AFOPE15_Msk          (0x1UL << COMP_OR_AFOPE15_Pos)            /*!< 0x00000010 */\n#define COMP_OR_AFOPE15              COMP_OR_AFOPE15_Msk\n#define COMP_OR_AFOPG2_Pos           (5U)\n#define COMP_OR_AFOPG2_Msk           (0x1UL << COMP_OR_AFOPG2_Pos)             /*!< 0x00000020 */\n#define COMP_OR_AFOPG2               COMP_OR_AFOPG2_Msk\n#define COMP_OR_AFOPG3_Pos           (6U)\n#define COMP_OR_AFOPG3_Msk           (0x1UL << COMP_OR_AFOPG3_Pos)             /*!< 0x00000040 */\n#define COMP_OR_AFOPG3               COMP_OR_AFOPG3_Msk\n#define COMP_OR_AFOPG4_Pos           (7U)\n#define COMP_OR_AFOPG4_Msk           (0x1UL << COMP_OR_AFOPG4_Pos)             /*!< 0x00000080 */\n#define COMP_OR_AFOPG4               COMP_OR_AFOPG4_Msk\n#define COMP_OR_AFOPI1_Pos           (8U)\n#define COMP_OR_AFOPI1_Msk           (0x1UL << COMP_OR_AFOPI1_Pos)             /*!< 0x00000100 */\n#define COMP_OR_AFOPI1               COMP_OR_AFOPI1_Msk\n#define COMP_OR_AFOPI4_Pos           (9U)\n#define COMP_OR_AFOPI4_Msk           (0x1UL << COMP_OR_AFOPI4_Pos)             /*!< 0x00000200 */\n#define COMP_OR_AFOPI4               COMP_OR_AFOPI4_Msk\n#define COMP_OR_AFOPK2_Pos           (10U)\n#define COMP_OR_AFOPK2_Msk           (0x1UL << COMP_OR_AFOPK2_Pos)             /*!< 0x00000400 */\n#define COMP_OR_AFOPK2               COMP_OR_AFOPK2_Msk\n\n/*!< ******************  Bit definition for COMP_CFGRx register  ********************/\n#define COMP_CFGRx_EN_Pos            (0U)\n#define COMP_CFGRx_EN_Msk            (0x1UL << COMP_CFGRx_EN_Pos)              /*!< 0x00000001 */\n#define COMP_CFGRx_EN                COMP_CFGRx_EN_Msk                         /*!< COMPx enable bit                     */\n#define COMP_CFGRx_BRGEN_Pos         (1U)\n#define COMP_CFGRx_BRGEN_Msk         (0x1UL << COMP_CFGRx_BRGEN_Pos)           /*!< 0x00000002 */\n#define COMP_CFGRx_BRGEN             COMP_CFGRx_BRGEN_Msk                      /*!< COMPx Scaler bridge enable           */\n#define COMP_CFGRx_SCALEN_Pos        (2U)\n#define COMP_CFGRx_SCALEN_Msk        (0x1UL << COMP_CFGRx_SCALEN_Pos)          /*!< 0x00000004 */\n#define COMP_CFGRx_SCALEN            COMP_CFGRx_SCALEN_Msk                     /*!< COMPx Voltage scaler enable bit      */\n#define COMP_CFGRx_POLARITY_Pos      (3U)\n#define COMP_CFGRx_POLARITY_Msk      (0x1UL << COMP_CFGRx_POLARITY_Pos)        /*!< 0x00000008 */\n#define COMP_CFGRx_POLARITY          COMP_CFGRx_POLARITY_Msk                   /*!< COMPx  polarity selection bit        */\n#define COMP_CFGRx_WINMODE_Pos       (4U)\n#define COMP_CFGRx_WINMODE_Msk       (0x1UL << COMP_CFGRx_WINMODE_Pos)         /*!< 0x00000010 */\n#define COMP_CFGRx_WINMODE           COMP_CFGRx_WINMODE_Msk                    /*!< COMPx Windows mode selection bit     */\n#define COMP_CFGRx_ITEN_Pos          (6U)\n#define COMP_CFGRx_ITEN_Msk          (0x1UL << COMP_CFGRx_ITEN_Pos)            /*!< 0x00000040 */\n#define COMP_CFGRx_ITEN              COMP_CFGRx_ITEN_Msk                       /*!< COMPx  interrupt enable              */\n#define COMP_CFGRx_HYST_Pos          (8U)\n#define COMP_CFGRx_HYST_Msk          (0x3UL << COMP_CFGRx_HYST_Pos)            /*!< 0x00000300 */\n#define COMP_CFGRx_HYST              COMP_CFGRx_HYST_Msk                       /*!< COMPx  hysteresis selection bits     */\n#define COMP_CFGRx_HYST_0            (0x1UL << COMP_CFGRx_HYST_Pos)             /*!< 0x00000100 */\n#define COMP_CFGRx_HYST_1            (0x2UL << COMP_CFGRx_HYST_Pos)             /*!< 0x00000200 */\n#define COMP_CFGRx_PWRMODE_Pos       (12U)\n#define COMP_CFGRx_PWRMODE_Msk       (0x3UL << COMP_CFGRx_PWRMODE_Pos)         /*!< 0x00003000 */\n#define COMP_CFGRx_PWRMODE           COMP_CFGRx_PWRMODE_Msk                    /*!< COMPx Power Mode of the comparator   */\n#define COMP_CFGRx_PWRMODE_0         (0x1UL << COMP_CFGRx_PWRMODE_Pos)          /*!< 0x00001000 */\n#define COMP_CFGRx_PWRMODE_1         (0x2UL << COMP_CFGRx_PWRMODE_Pos)          /*!< 0x00002000 */\n#define COMP_CFGRx_INMSEL_Pos        (16U)\n#define COMP_CFGRx_INMSEL_Msk        (0x7UL << COMP_CFGRx_INMSEL_Pos)          /*!< 0x00070000 */\n#define COMP_CFGRx_INMSEL            COMP_CFGRx_INMSEL_Msk                     /*!< COMPx  input minus selection bit  */\n#define COMP_CFGRx_INMSEL_0          (0x1UL << COMP_CFGRx_INMSEL_Pos)           /*!< 0x00010000 */\n#define COMP_CFGRx_INMSEL_1          (0x2UL << COMP_CFGRx_INMSEL_Pos)           /*!< 0x00020000 */\n#define COMP_CFGRx_INMSEL_2          (0x4UL << COMP_CFGRx_INMSEL_Pos)           /*!< 0x00040000 */\n#define COMP_CFGRx_INPSEL_Pos        (20U)\n#define COMP_CFGRx_INPSEL_Msk        (0x1UL << COMP_CFGRx_INPSEL_Pos)          /*!< 0x00100000 */\n#define COMP_CFGRx_INPSEL            COMP_CFGRx_INPSEL_Msk                     /*!< COMPx  input plus selection bit       */\n#define COMP_CFGRx_BLANKING_Pos      (24U)\n#define COMP_CFGRx_BLANKING_Msk      (0xFUL << COMP_CFGRx_BLANKING_Pos)        /*!< 0x0F000000 */\n#define COMP_CFGRx_BLANKING          COMP_CFGRx_BLANKING_Msk                   /*!< COMPx  blanking source selection bits */\n#define COMP_CFGRx_BLANKING_0        (0x1UL << COMP_CFGRx_BLANKING_Pos)         /*!< 0x01000000 */\n#define COMP_CFGRx_BLANKING_1        (0x2UL << COMP_CFGRx_BLANKING_Pos)         /*!< 0x02000000 */\n#define COMP_CFGRx_BLANKING_2        (0x4UL << COMP_CFGRx_BLANKING_Pos)         /*!< 0x04000000 */\n#define COMP_CFGRx_LOCK_Pos          (31U)\n#define COMP_CFGRx_LOCK_Msk          (0x1UL << COMP_CFGRx_LOCK_Pos)            /*!< 0x80000000 */\n#define COMP_CFGRx_LOCK              COMP_CFGRx_LOCK_Msk                       /*!< COMPx Lock Bit                        */\n\n\n/******************************************************************************/\n/*                                                                            */\n/*      Universal Synchronous Asynchronous Receiver Transmitter (USART)       */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bit definition for USART_CR1 register  *******************/\n#define USART_CR1_UE_Pos                (0U)\n#define USART_CR1_UE_Msk                (0x1UL << USART_CR1_UE_Pos)            /*!< 0x00000001 */\n#define USART_CR1_UE                    USART_CR1_UE_Msk                       /*!< USART Enable */\n#define USART_CR1_UESM_Pos              (1U)\n#define USART_CR1_UESM_Msk              (0x1UL << USART_CR1_UESM_Pos)          /*!< 0x00000002 */\n#define USART_CR1_UESM                  USART_CR1_UESM_Msk                     /*!< USART Enable in STOP Mode */\n#define USART_CR1_RE_Pos                (2U)\n#define USART_CR1_RE_Msk                (0x1UL << USART_CR1_RE_Pos)            /*!< 0x00000004 */\n#define USART_CR1_RE                    USART_CR1_RE_Msk                       /*!< Receiver Enable */\n#define USART_CR1_TE_Pos                (3U)\n#define USART_CR1_TE_Msk                (0x1UL << USART_CR1_TE_Pos)            /*!< 0x00000008 */\n#define USART_CR1_TE                    USART_CR1_TE_Msk                       /*!< Transmitter Enable */\n#define USART_CR1_IDLEIE_Pos            (4U)\n#define USART_CR1_IDLEIE_Msk            (0x1UL << USART_CR1_IDLEIE_Pos)        /*!< 0x00000010 */\n#define USART_CR1_IDLEIE                USART_CR1_IDLEIE_Msk                   /*!< IDLE Interrupt Enable */\n#define USART_CR1_RXNEIE_RXFNEIE_Pos    (5U)\n#define USART_CR1_RXNEIE_RXFNEIE_Msk    (0x1UL << USART_CR1_RXNEIE_RXFNEIE_Pos) /*!< 0x00000020 */\n#define USART_CR1_RXNEIE_RXFNEIE        USART_CR1_RXNEIE_RXFNEIE_Msk           /*!< RXNE and RX FIFO Not Empty Interrupt Enable */\n#define USART_CR1_TCIE_Pos              (6U)\n#define USART_CR1_TCIE_Msk              (0x1UL << USART_CR1_TCIE_Pos)          /*!< 0x00000040 */\n#define USART_CR1_TCIE                  USART_CR1_TCIE_Msk                     /*!< Transmission Complete Interrupt Enable */\n#define USART_CR1_TXEIE_TXFNFIE_Pos     (7U)\n#define USART_CR1_TXEIE_TXFNFIE_Msk     (0x1UL << USART_CR1_TXEIE_TXFNFIE_Pos) /*!< 0x00000080 */\n#define USART_CR1_TXEIE_TXFNFIE         USART_CR1_TXEIE_TXFNFIE_Msk            /*!< TXE and TX FIFO Not Full Interrupt Enable */\n#define USART_CR1_PEIE_Pos              (8U)\n#define USART_CR1_PEIE_Msk              (0x1UL << USART_CR1_PEIE_Pos)          /*!< 0x00000100 */\n#define USART_CR1_PEIE                  USART_CR1_PEIE_Msk                     /*!< PE Interrupt Enable */\n#define USART_CR1_PS_Pos                (9U)\n#define USART_CR1_PS_Msk                (0x1UL << USART_CR1_PS_Pos)            /*!< 0x00000200 */\n#define USART_CR1_PS                    USART_CR1_PS_Msk                       /*!< Parity Selection */\n#define USART_CR1_PCE_Pos               (10U)\n#define USART_CR1_PCE_Msk               (0x1UL << USART_CR1_PCE_Pos)           /*!< 0x00000400 */\n#define USART_CR1_PCE                   USART_CR1_PCE_Msk                      /*!< Parity Control Enable */\n#define USART_CR1_WAKE_Pos              (11U)\n#define USART_CR1_WAKE_Msk              (0x1UL << USART_CR1_WAKE_Pos)          /*!< 0x00000800 */\n#define USART_CR1_WAKE                  USART_CR1_WAKE_Msk                     /*!< Receiver Wakeup method */\n#define USART_CR1_M_Pos                 (12U)\n#define USART_CR1_M_Msk                 (0x10001UL << USART_CR1_M_Pos)         /*!< 0x10001000 */\n#define USART_CR1_M                     USART_CR1_M_Msk                        /*!< Word length */\n#define USART_CR1_M0_Pos                (12U)\n#define USART_CR1_M0_Msk                (0x1UL << USART_CR1_M0_Pos)            /*!< 0x00001000 */\n#define USART_CR1_M0                    USART_CR1_M0_Msk                       /*!< Word length - Bit 0 */\n#define USART_CR1_MME_Pos               (13U)\n#define USART_CR1_MME_Msk               (0x1UL << USART_CR1_MME_Pos)           /*!< 0x00002000 */\n#define USART_CR1_MME                   USART_CR1_MME_Msk                      /*!< Mute Mode Enable */\n#define USART_CR1_CMIE_Pos              (14U)\n#define USART_CR1_CMIE_Msk              (0x1UL << USART_CR1_CMIE_Pos)          /*!< 0x00004000 */\n#define USART_CR1_CMIE                  USART_CR1_CMIE_Msk                     /*!< Character match interrupt enable */\n#define USART_CR1_OVER8_Pos             (15U)\n#define USART_CR1_OVER8_Msk             (0x1UL << USART_CR1_OVER8_Pos)         /*!< 0x00008000 */\n#define USART_CR1_OVER8                 USART_CR1_OVER8_Msk                    /*!< Oversampling by 8-bit or 16-bit mode */\n#define USART_CR1_DEDT_Pos              (16U)\n#define USART_CR1_DEDT_Msk              (0x1FUL << USART_CR1_DEDT_Pos)         /*!< 0x001F0000 */\n#define USART_CR1_DEDT                  USART_CR1_DEDT_Msk                     /*!< DEDT[4:0] bits (Driver Enable Deassertion Time) */\n#define USART_CR1_DEDT_0                (0x01UL << USART_CR1_DEDT_Pos)          /*!< 0x00010000 */\n#define USART_CR1_DEDT_1                (0x02UL << USART_CR1_DEDT_Pos)          /*!< 0x00020000 */\n#define USART_CR1_DEDT_2                (0x04UL << USART_CR1_DEDT_Pos)          /*!< 0x00040000 */\n#define USART_CR1_DEDT_3                (0x08UL << USART_CR1_DEDT_Pos)          /*!< 0x00080000 */\n#define USART_CR1_DEDT_4                (0x10UL << USART_CR1_DEDT_Pos)          /*!< 0x00100000 */\n#define USART_CR1_DEAT_Pos              (21U)\n#define USART_CR1_DEAT_Msk              (0x1FUL << USART_CR1_DEAT_Pos)         /*!< 0x03E00000 */\n#define USART_CR1_DEAT                  USART_CR1_DEAT_Msk                     /*!< DEAT[4:0] bits (Driver Enable Assertion Time) */\n#define USART_CR1_DEAT_0                (0x01UL << USART_CR1_DEAT_Pos)          /*!< 0x00200000 */\n#define USART_CR1_DEAT_1                (0x02UL << USART_CR1_DEAT_Pos)          /*!< 0x00400000 */\n#define USART_CR1_DEAT_2                (0x04UL << USART_CR1_DEAT_Pos)          /*!< 0x00800000 */\n#define USART_CR1_DEAT_3                (0x08UL << USART_CR1_DEAT_Pos)          /*!< 0x01000000 */\n#define USART_CR1_DEAT_4                (0x10UL << USART_CR1_DEAT_Pos)          /*!< 0x02000000 */\n#define USART_CR1_RTOIE_Pos             (26U)\n#define USART_CR1_RTOIE_Msk             (0x1UL << USART_CR1_RTOIE_Pos)         /*!< 0x04000000 */\n#define USART_CR1_RTOIE                 USART_CR1_RTOIE_Msk                    /*!< Receive Time Out interrupt enable */\n#define USART_CR1_EOBIE_Pos             (27U)\n#define USART_CR1_EOBIE_Msk             (0x1UL << USART_CR1_EOBIE_Pos)         /*!< 0x08000000 */\n#define USART_CR1_EOBIE                 USART_CR1_EOBIE_Msk                    /*!< End of Block interrupt enable */\n#define USART_CR1_M1_Pos                (28U)\n#define USART_CR1_M1_Msk                (0x1UL << USART_CR1_M1_Pos)            /*!< 0x10000000 */\n#define USART_CR1_M1                    USART_CR1_M1_Msk                       /*!< Word length - Bit 1 */\n#define USART_CR1_FIFOEN_Pos            (29U)\n#define USART_CR1_FIFOEN_Msk            (0x1UL << USART_CR1_FIFOEN_Pos)        /*!< 0x20000000 */\n#define USART_CR1_FIFOEN                USART_CR1_FIFOEN_Msk                   /*!< FIFO mode enable */\n#define USART_CR1_TXFEIE_Pos            (30U)\n#define USART_CR1_TXFEIE_Msk            (0x1UL << USART_CR1_TXFEIE_Pos)        /*!< 0x40000000 */\n#define USART_CR1_TXFEIE                USART_CR1_TXFEIE_Msk                   /*!< TXFIFO empty interrupt enable */\n#define USART_CR1_RXFFIE_Pos            (31U)\n#define USART_CR1_RXFFIE_Msk            (0x1UL << USART_CR1_RXFFIE_Pos)        /*!< 0x80000000 */\n#define USART_CR1_RXFFIE                USART_CR1_RXFFIE_Msk                   /*!< RXFIFO Full interrupt enable */\n\n/* Legacy define */\n#define  USART_CR1_RXNEIE  USART_CR1_RXNEIE_RXFNEIE\n#define  USART_CR1_TXEIE   USART_CR1_TXEIE_TXFNFIE\n\n/******************  Bit definition for USART_CR2 register  *******************/\n#define USART_CR2_SLVEN_Pos             (0U)\n#define USART_CR2_SLVEN_Msk             (0x1UL << USART_CR2_SLVEN_Pos)         /*!< 0x00000001 */\n#define USART_CR2_SLVEN                 USART_CR2_SLVEN_Msk                    /*!< Synchronous Slave mode Enable */\n#define USART_CR2_DIS_NSS_Pos           (3U)\n#define USART_CR2_DIS_NSS_Msk           (0x1UL << USART_CR2_DIS_NSS_Pos)       /*!< 0x00000008 */\n#define USART_CR2_DIS_NSS               USART_CR2_DIS_NSS_Msk                  /*!< Negative Slave Select (NSS) pin management */\n#define USART_CR2_ADDM7_Pos             (4U)\n#define USART_CR2_ADDM7_Msk             (0x1UL << USART_CR2_ADDM7_Pos)         /*!< 0x00000010 */\n#define USART_CR2_ADDM7                 USART_CR2_ADDM7_Msk                    /*!< 7-bit or 4-bit Address Detection */\n#define USART_CR2_LBDL_Pos              (5U)\n#define USART_CR2_LBDL_Msk              (0x1UL << USART_CR2_LBDL_Pos)          /*!< 0x00000020 */\n#define USART_CR2_LBDL                  USART_CR2_LBDL_Msk                     /*!< LIN Break Detection Length */\n#define USART_CR2_LBDIE_Pos             (6U)\n#define USART_CR2_LBDIE_Msk             (0x1UL << USART_CR2_LBDIE_Pos)         /*!< 0x00000040 */\n#define USART_CR2_LBDIE                 USART_CR2_LBDIE_Msk                    /*!< LIN Break Detection Interrupt Enable */\n#define USART_CR2_LBCL_Pos              (8U)\n#define USART_CR2_LBCL_Msk              (0x1UL << USART_CR2_LBCL_Pos)          /*!< 0x00000100 */\n#define USART_CR2_LBCL                  USART_CR2_LBCL_Msk                     /*!< Last Bit Clock pulse */\n#define USART_CR2_CPHA_Pos              (9U)\n#define USART_CR2_CPHA_Msk              (0x1UL << USART_CR2_CPHA_Pos)          /*!< 0x00000200 */\n#define USART_CR2_CPHA                  USART_CR2_CPHA_Msk                     /*!< Clock Phase */\n#define USART_CR2_CPOL_Pos              (10U)\n#define USART_CR2_CPOL_Msk              (0x1UL << USART_CR2_CPOL_Pos)          /*!< 0x00000400 */\n#define USART_CR2_CPOL                  USART_CR2_CPOL_Msk                     /*!< Clock Polarity */\n#define USART_CR2_CLKEN_Pos             (11U)\n#define USART_CR2_CLKEN_Msk             (0x1UL << USART_CR2_CLKEN_Pos)         /*!< 0x00000800 */\n#define USART_CR2_CLKEN                 USART_CR2_CLKEN_Msk                    /*!< Clock Enable */\n#define USART_CR2_STOP_Pos              (12U)\n#define USART_CR2_STOP_Msk              (0x3UL << USART_CR2_STOP_Pos)          /*!< 0x00003000 */\n#define USART_CR2_STOP                  USART_CR2_STOP_Msk                     /*!< STOP[1:0] bits (STOP bits) */\n#define USART_CR2_STOP_0                (0x1UL << USART_CR2_STOP_Pos)           /*!< 0x00001000 */\n#define USART_CR2_STOP_1                (0x2UL << USART_CR2_STOP_Pos)           /*!< 0x00002000 */\n#define USART_CR2_LINEN_Pos             (14U)\n#define USART_CR2_LINEN_Msk             (0x1UL << USART_CR2_LINEN_Pos)         /*!< 0x00004000 */\n#define USART_CR2_LINEN                 USART_CR2_LINEN_Msk                    /*!< LIN mode enable */\n#define USART_CR2_SWAP_Pos              (15U)\n#define USART_CR2_SWAP_Msk              (0x1UL << USART_CR2_SWAP_Pos)          /*!< 0x00008000 */\n#define USART_CR2_SWAP                  USART_CR2_SWAP_Msk                     /*!< SWAP TX/RX pins */\n#define USART_CR2_RXINV_Pos             (16U)\n#define USART_CR2_RXINV_Msk             (0x1UL << USART_CR2_RXINV_Pos)         /*!< 0x00010000 */\n#define USART_CR2_RXINV                 USART_CR2_RXINV_Msk                    /*!< RX pin active level inversion */\n#define USART_CR2_TXINV_Pos             (17U)\n#define USART_CR2_TXINV_Msk             (0x1UL << USART_CR2_TXINV_Pos)         /*!< 0x00020000 */\n#define USART_CR2_TXINV                 USART_CR2_TXINV_Msk                    /*!< TX pin active level inversion */\n#define USART_CR2_DATAINV_Pos           (18U)\n#define USART_CR2_DATAINV_Msk           (0x1UL << USART_CR2_DATAINV_Pos)       /*!< 0x00040000 */\n#define USART_CR2_DATAINV               USART_CR2_DATAINV_Msk                  /*!< Binary data inversion */\n#define USART_CR2_MSBFIRST_Pos          (19U)\n#define USART_CR2_MSBFIRST_Msk          (0x1UL << USART_CR2_MSBFIRST_Pos)      /*!< 0x00080000 */\n#define USART_CR2_MSBFIRST              USART_CR2_MSBFIRST_Msk                 /*!< Most Significant Bit First */\n#define USART_CR2_ABREN_Pos             (20U)\n#define USART_CR2_ABREN_Msk             (0x1UL << USART_CR2_ABREN_Pos)         /*!< 0x00100000 */\n#define USART_CR2_ABREN                 USART_CR2_ABREN_Msk                    /*!< Auto Baud-Rate Enable*/\n#define USART_CR2_ABRMODE_Pos           (21U)\n#define USART_CR2_ABRMODE_Msk           (0x3UL << USART_CR2_ABRMODE_Pos)       /*!< 0x00600000 */\n#define USART_CR2_ABRMODE               USART_CR2_ABRMODE_Msk                  /*!< ABRMOD[1:0] bits (Auto Baud-Rate Mode) */\n#define USART_CR2_ABRMODE_0             (0x1UL << USART_CR2_ABRMODE_Pos)        /*!< 0x00200000 */\n#define USART_CR2_ABRMODE_1             (0x2UL << USART_CR2_ABRMODE_Pos)        /*!< 0x00400000 */\n#define USART_CR2_RTOEN_Pos             (23U)\n#define USART_CR2_RTOEN_Msk             (0x1UL << USART_CR2_RTOEN_Pos)         /*!< 0x00800000 */\n#define USART_CR2_RTOEN                 USART_CR2_RTOEN_Msk                    /*!< Receiver Time-Out enable */\n#define USART_CR2_ADD_Pos               (24U)\n#define USART_CR2_ADD_Msk               (0xFFUL << USART_CR2_ADD_Pos)          /*!< 0xFF000000 */\n#define USART_CR2_ADD                   USART_CR2_ADD_Msk                      /*!< Address of the USART node */\n\n/******************  Bit definition for USART_CR3 register  *******************/\n#define USART_CR3_EIE_Pos               (0U)\n#define USART_CR3_EIE_Msk               (0x1UL << USART_CR3_EIE_Pos)           /*!< 0x00000001 */\n#define USART_CR3_EIE                   USART_CR3_EIE_Msk                      /*!< Error Interrupt Enable */\n#define USART_CR3_IREN_Pos              (1U)\n#define USART_CR3_IREN_Msk              (0x1UL << USART_CR3_IREN_Pos)          /*!< 0x00000002 */\n#define USART_CR3_IREN                  USART_CR3_IREN_Msk                     /*!< IrDA mode Enable */\n#define USART_CR3_IRLP_Pos              (2U)\n#define USART_CR3_IRLP_Msk              (0x1UL << USART_CR3_IRLP_Pos)          /*!< 0x00000004 */\n#define USART_CR3_IRLP                  USART_CR3_IRLP_Msk                     /*!< IrDA Low-Power */\n#define USART_CR3_HDSEL_Pos             (3U)\n#define USART_CR3_HDSEL_Msk             (0x1UL << USART_CR3_HDSEL_Pos)         /*!< 0x00000008 */\n#define USART_CR3_HDSEL                 USART_CR3_HDSEL_Msk                    /*!< Half-Duplex Selection */\n#define USART_CR3_NACK_Pos              (4U)\n#define USART_CR3_NACK_Msk              (0x1UL << USART_CR3_NACK_Pos)          /*!< 0x00000010 */\n#define USART_CR3_NACK                  USART_CR3_NACK_Msk                     /*!< SmartCard NACK enable */\n#define USART_CR3_SCEN_Pos              (5U)\n#define USART_CR3_SCEN_Msk              (0x1UL << USART_CR3_SCEN_Pos)          /*!< 0x00000020 */\n#define USART_CR3_SCEN                  USART_CR3_SCEN_Msk                     /*!< SmartCard mode enable */\n#define USART_CR3_DMAR_Pos              (6U)\n#define USART_CR3_DMAR_Msk              (0x1UL << USART_CR3_DMAR_Pos)          /*!< 0x00000040 */\n#define USART_CR3_DMAR                  USART_CR3_DMAR_Msk                     /*!< DMA Enable Receiver */\n#define USART_CR3_DMAT_Pos              (7U)\n#define USART_CR3_DMAT_Msk              (0x1UL << USART_CR3_DMAT_Pos)          /*!< 0x00000080 */\n#define USART_CR3_DMAT                  USART_CR3_DMAT_Msk                     /*!< DMA Enable Transmitter */\n#define USART_CR3_RTSE_Pos              (8U)\n#define USART_CR3_RTSE_Msk              (0x1UL << USART_CR3_RTSE_Pos)          /*!< 0x00000100 */\n#define USART_CR3_RTSE                  USART_CR3_RTSE_Msk                     /*!< RTS Enable */\n#define USART_CR3_CTSE_Pos              (9U)\n#define USART_CR3_CTSE_Msk              (0x1UL << USART_CR3_CTSE_Pos)          /*!< 0x00000200 */\n#define USART_CR3_CTSE                  USART_CR3_CTSE_Msk                     /*!< CTS Enable */\n#define USART_CR3_CTSIE_Pos             (10U)\n#define USART_CR3_CTSIE_Msk             (0x1UL << USART_CR3_CTSIE_Pos)         /*!< 0x00000400 */\n#define USART_CR3_CTSIE                 USART_CR3_CTSIE_Msk                    /*!< CTS Interrupt Enable */\n#define USART_CR3_ONEBIT_Pos            (11U)\n#define USART_CR3_ONEBIT_Msk            (0x1UL << USART_CR3_ONEBIT_Pos)        /*!< 0x00000800 */\n#define USART_CR3_ONEBIT                USART_CR3_ONEBIT_Msk                   /*!< One sample bit method enable */\n#define USART_CR3_OVRDIS_Pos            (12U)\n#define USART_CR3_OVRDIS_Msk            (0x1UL << USART_CR3_OVRDIS_Pos)        /*!< 0x00001000 */\n#define USART_CR3_OVRDIS                USART_CR3_OVRDIS_Msk                   /*!< Overrun Disable */\n#define USART_CR3_DDRE_Pos              (13U)\n#define USART_CR3_DDRE_Msk              (0x1UL << USART_CR3_DDRE_Pos)          /*!< 0x00002000 */\n#define USART_CR3_DDRE                  USART_CR3_DDRE_Msk                     /*!< DMA Disable on Reception Error */\n#define USART_CR3_DEM_Pos               (14U)\n#define USART_CR3_DEM_Msk               (0x1UL << USART_CR3_DEM_Pos)           /*!< 0x00004000 */\n#define USART_CR3_DEM                   USART_CR3_DEM_Msk                      /*!< Driver Enable Mode */\n#define USART_CR3_DEP_Pos               (15U)\n#define USART_CR3_DEP_Msk               (0x1UL << USART_CR3_DEP_Pos)           /*!< 0x00008000 */\n#define USART_CR3_DEP                   USART_CR3_DEP_Msk                      /*!< Driver Enable Polarity Selection */\n#define USART_CR3_SCARCNT_Pos           (17U)\n#define USART_CR3_SCARCNT_Msk           (0x7UL << USART_CR3_SCARCNT_Pos)       /*!< 0x000E0000 */\n#define USART_CR3_SCARCNT               USART_CR3_SCARCNT_Msk                  /*!< SCARCNT[2:0] bits (SmartCard Auto-Retry Count) */\n#define USART_CR3_SCARCNT_0             (0x1UL << USART_CR3_SCARCNT_Pos)        /*!< 0x00020000 */\n#define USART_CR3_SCARCNT_1             (0x2UL << USART_CR3_SCARCNT_Pos)        /*!< 0x00040000 */\n#define USART_CR3_SCARCNT_2             (0x4UL << USART_CR3_SCARCNT_Pos)        /*!< 0x00080000 */\n#define USART_CR3_WUS_Pos               (20U)\n#define USART_CR3_WUS_Msk               (0x3UL << USART_CR3_WUS_Pos)           /*!< 0x00300000 */\n#define USART_CR3_WUS                   USART_CR3_WUS_Msk                      /*!< WUS[1:0] bits (Wake UP Interrupt Flag Selection) */\n#define USART_CR3_WUS_0                 (0x1UL << USART_CR3_WUS_Pos)            /*!< 0x00100000 */\n#define USART_CR3_WUS_1                 (0x2UL << USART_CR3_WUS_Pos)            /*!< 0x00200000 */\n#define USART_CR3_WUFIE_Pos             (22U)\n#define USART_CR3_WUFIE_Msk             (0x1UL << USART_CR3_WUFIE_Pos)         /*!< 0x00400000 */\n#define USART_CR3_WUFIE                 USART_CR3_WUFIE_Msk                    /*!< Wake Up Interrupt Enable */\n#define USART_CR3_TXFTIE_Pos            (23U)\n#define USART_CR3_TXFTIE_Msk            (0x1UL << USART_CR3_TXFTIE_Pos)        /*!< 0x00800000 */\n#define USART_CR3_TXFTIE                USART_CR3_TXFTIE_Msk                   /*!< TXFIFO threshold interrupt enable */\n#define USART_CR3_TCBGTIE_Pos           (24U)\n#define USART_CR3_TCBGTIE_Msk           (0x1UL << USART_CR3_TCBGTIE_Pos)       /*!< 0x01000000 */\n#define USART_CR3_TCBGTIE               USART_CR3_TCBGTIE_Msk                  /*!< Transmission Complete before guard time, interrupt enable */\n#define USART_CR3_RXFTCFG_Pos           (25U)\n#define USART_CR3_RXFTCFG_Msk           (0x7UL << USART_CR3_RXFTCFG_Pos)       /*!< 0x0E000000 */\n#define USART_CR3_RXFTCFG               USART_CR3_RXFTCFG_Msk                  /*!< RXFTCFG [2:0]Receive FIFO threshold configuration */\n#define USART_CR3_RXFTCFG_0             (0x1UL << USART_CR3_RXFTCFG_Pos)        /*!< 0x02000000 */\n#define USART_CR3_RXFTCFG_1             (0x2UL << USART_CR3_RXFTCFG_Pos)        /*!< 0x04000000 */\n#define USART_CR3_RXFTCFG_2             (0x4UL << USART_CR3_RXFTCFG_Pos)        /*!< 0x08000000 */\n#define USART_CR3_RXFTIE_Pos            (28U)\n#define USART_CR3_RXFTIE_Msk            (0x1UL << USART_CR3_RXFTIE_Pos)        /*!< 0x10000000 */\n#define USART_CR3_RXFTIE                USART_CR3_RXFTIE_Msk                   /*!< RXFIFO threshold interrupt enable */\n#define USART_CR3_TXFTCFG_Pos           (29U)\n#define USART_CR3_TXFTCFG_Msk           (0x7UL << USART_CR3_TXFTCFG_Pos)       /*!< 0xE0000000 */\n#define USART_CR3_TXFTCFG               USART_CR3_TXFTCFG_Msk                  /*!< TXFIFO [2:0] threshold configuration */\n#define USART_CR3_TXFTCFG_0             (0x1UL << USART_CR3_TXFTCFG_Pos)        /*!< 0x20000000 */\n#define USART_CR3_TXFTCFG_1             (0x2UL << USART_CR3_TXFTCFG_Pos)        /*!< 0x40000000 */\n#define USART_CR3_TXFTCFG_2             (0x4UL << USART_CR3_TXFTCFG_Pos)        /*!< 0x80000000 */\n\n/******************  Bit definition for USART_BRR register  *******************/\n#define USART_BRR_DIV_FRACTION_Pos      (0U)\n#define USART_BRR_DIV_FRACTION_Msk      (0xFUL << USART_BRR_DIV_FRACTION_Pos)  /*!< 0x0000000F */\n#define USART_BRR_DIV_FRACTION          USART_BRR_DIV_FRACTION_Msk             /*!< Fraction of USARTDIV */\n#define USART_BRR_DIV_MANTISSA_Pos      (4U)\n#define USART_BRR_DIV_MANTISSA_Msk      (0xFFFUL << USART_BRR_DIV_MANTISSA_Pos) /*!< 0x0000FFF0 */\n#define USART_BRR_DIV_MANTISSA          USART_BRR_DIV_MANTISSA_Msk             /*!< Mantissa of USARTDIV */\n\n/******************  Bit definition for USART_GTPR register  ******************/\n#define USART_GTPR_PSC_Pos              (0U)\n#define USART_GTPR_PSC_Msk              (0xFFUL << USART_GTPR_PSC_Pos)         /*!< 0x000000FF */\n#define USART_GTPR_PSC                  USART_GTPR_PSC_Msk                     /*!< PSC[7:0] bits (Prescaler value) */\n#define USART_GTPR_GT_Pos               (8U)\n#define USART_GTPR_GT_Msk               (0xFFUL << USART_GTPR_GT_Pos)          /*!< 0x0000FF00 */\n#define USART_GTPR_GT                   USART_GTPR_GT_Msk                      /*!< GT[7:0] bits (Guard time value) */\n\n/*******************  Bit definition for USART_RTOR register  *****************/\n#define USART_RTOR_RTO_Pos              (0U)\n#define USART_RTOR_RTO_Msk              (0xFFFFFFUL << USART_RTOR_RTO_Pos)     /*!< 0x00FFFFFF */\n#define USART_RTOR_RTO                  USART_RTOR_RTO_Msk                     /*!< Receiver Time Out Value */\n#define USART_RTOR_BLEN_Pos             (24U)\n#define USART_RTOR_BLEN_Msk             (0xFFUL << USART_RTOR_BLEN_Pos)        /*!< 0xFF000000 */\n#define USART_RTOR_BLEN                 USART_RTOR_BLEN_Msk                    /*!< Block Length */\n\n/*******************  Bit definition for USART_RQR register  ******************/\n#define USART_RQR_ABRRQ_Pos             (0U)\n#define USART_RQR_ABRRQ_Msk             (0x1UL << USART_RQR_ABRRQ_Pos)         /*!< 0x00000001 */\n#define USART_RQR_ABRRQ                 USART_RQR_ABRRQ_Msk                    /*!< Auto-Baud Rate Request */\n#define USART_RQR_SBKRQ_Pos             (1U)\n#define USART_RQR_SBKRQ_Msk             (0x1UL << USART_RQR_SBKRQ_Pos)         /*!< 0x00000002 */\n#define USART_RQR_SBKRQ                 USART_RQR_SBKRQ_Msk                    /*!< Send Break Request */\n#define USART_RQR_MMRQ_Pos              (2U)\n#define USART_RQR_MMRQ_Msk              (0x1UL << USART_RQR_MMRQ_Pos)          /*!< 0x00000004 */\n#define USART_RQR_MMRQ                  USART_RQR_MMRQ_Msk                     /*!< Mute Mode Request */\n#define USART_RQR_RXFRQ_Pos             (3U)\n#define USART_RQR_RXFRQ_Msk             (0x1UL << USART_RQR_RXFRQ_Pos)         /*!< 0x00000008 */\n#define USART_RQR_RXFRQ                 USART_RQR_RXFRQ_Msk                    /*!< Receive Data flush Request */\n#define USART_RQR_TXFRQ_Pos             (4U)\n#define USART_RQR_TXFRQ_Msk             (0x1UL << USART_RQR_TXFRQ_Pos)         /*!< 0x00000010 */\n#define USART_RQR_TXFRQ                 USART_RQR_TXFRQ_Msk                    /*!< Transmit data flush Request */\n\n/*******************  Bit definition for USART_ISR register  ******************/\n#define USART_ISR_PE_Pos                (0U)\n#define USART_ISR_PE_Msk                (0x1UL << USART_ISR_PE_Pos)            /*!< 0x00000001 */\n#define USART_ISR_PE                    USART_ISR_PE_Msk                       /*!< Parity Error */\n#define USART_ISR_FE_Pos                (1U)\n#define USART_ISR_FE_Msk                (0x1UL << USART_ISR_FE_Pos)            /*!< 0x00000002 */\n#define USART_ISR_FE                    USART_ISR_FE_Msk                       /*!< Framing Error */\n#define USART_ISR_NE_Pos                (2U)\n#define USART_ISR_NE_Msk                (0x1UL << USART_ISR_NE_Pos)            /*!< 0x00000004 */\n#define USART_ISR_NE                    USART_ISR_NE_Msk                       /*!< Noise detected Flag */\n#define USART_ISR_ORE_Pos               (3U)\n#define USART_ISR_ORE_Msk               (0x1UL << USART_ISR_ORE_Pos)           /*!< 0x00000008 */\n#define USART_ISR_ORE                   USART_ISR_ORE_Msk                      /*!< OverRun Error */\n#define USART_ISR_IDLE_Pos              (4U)\n#define USART_ISR_IDLE_Msk              (0x1UL << USART_ISR_IDLE_Pos)          /*!< 0x00000010 */\n#define USART_ISR_IDLE                  USART_ISR_IDLE_Msk                     /*!< IDLE line detected */\n#define USART_ISR_RXNE_RXFNE_Pos        (5U)\n#define USART_ISR_RXNE_RXFNE_Msk        (0x1UL << USART_ISR_RXNE_RXFNE_Pos)    /*!< 0x00000020 */\n#define USART_ISR_RXNE_RXFNE            USART_ISR_RXNE_RXFNE_Msk               /*!< Read Data Register or RX FIFO Not Empty */\n#define USART_ISR_TC_Pos                (6U)\n#define USART_ISR_TC_Msk                (0x1UL << USART_ISR_TC_Pos)            /*!< 0x00000040 */\n#define USART_ISR_TC                    USART_ISR_TC_Msk                       /*!< Transmission Complete */\n#define USART_ISR_TXE_TXFNF_Pos         (7U)\n#define USART_ISR_TXE_TXFNF_Msk         (0x1UL << USART_ISR_TXE_TXFNF_Pos)     /*!< 0x00000080 */\n#define USART_ISR_TXE_TXFNF             USART_ISR_TXE_TXFNF_Msk                /*!< Transmit Data Register Empty or TX FIFO Not Full Flag */\n#define USART_ISR_LBDF_Pos              (8U)\n#define USART_ISR_LBDF_Msk              (0x1UL << USART_ISR_LBDF_Pos)          /*!< 0x00000100 */\n#define USART_ISR_LBDF                  USART_ISR_LBDF_Msk                     /*!< LIN Break Detection Flag */\n#define USART_ISR_CTSIF_Pos             (9U)\n#define USART_ISR_CTSIF_Msk             (0x1UL << USART_ISR_CTSIF_Pos)         /*!< 0x00000200 */\n#define USART_ISR_CTSIF                 USART_ISR_CTSIF_Msk                    /*!< CTS interrupt flag */\n#define USART_ISR_CTS_Pos               (10U)\n#define USART_ISR_CTS_Msk               (0x1UL << USART_ISR_CTS_Pos)           /*!< 0x00000400 */\n#define USART_ISR_CTS                   USART_ISR_CTS_Msk                      /*!< CTS flag */\n#define USART_ISR_RTOF_Pos              (11U)\n#define USART_ISR_RTOF_Msk              (0x1UL << USART_ISR_RTOF_Pos)          /*!< 0x00000800 */\n#define USART_ISR_RTOF                  USART_ISR_RTOF_Msk                     /*!< Receiver Time Out */\n#define USART_ISR_EOBF_Pos              (12U)\n#define USART_ISR_EOBF_Msk              (0x1UL << USART_ISR_EOBF_Pos)          /*!< 0x00001000 */\n#define USART_ISR_EOBF                  USART_ISR_EOBF_Msk                     /*!< End Of Block Flag */\n#define USART_ISR_UDR_Pos               (13U)\n#define USART_ISR_UDR_Msk               (0x1UL << USART_ISR_UDR_Pos)           /*!< 0x00002000 */\n#define USART_ISR_UDR                   USART_ISR_UDR_Msk                      /*!< SPI slave underrun error flag */\n#define USART_ISR_ABRE_Pos              (14U)\n#define USART_ISR_ABRE_Msk              (0x1UL << USART_ISR_ABRE_Pos)          /*!< 0x00004000 */\n#define USART_ISR_ABRE                  USART_ISR_ABRE_Msk                     /*!< Auto-Baud Rate Error */\n#define USART_ISR_ABRF_Pos              (15U)\n#define USART_ISR_ABRF_Msk              (0x1UL << USART_ISR_ABRF_Pos)          /*!< 0x00008000 */\n#define USART_ISR_ABRF                  USART_ISR_ABRF_Msk                     /*!< Auto-Baud Rate Flag */\n#define USART_ISR_BUSY_Pos              (16U)\n#define USART_ISR_BUSY_Msk              (0x1UL << USART_ISR_BUSY_Pos)          /*!< 0x00010000 */\n#define USART_ISR_BUSY                  USART_ISR_BUSY_Msk                     /*!< Busy Flag */\n#define USART_ISR_CMF_Pos               (17U)\n#define USART_ISR_CMF_Msk               (0x1UL << USART_ISR_CMF_Pos)           /*!< 0x00020000 */\n#define USART_ISR_CMF                   USART_ISR_CMF_Msk                      /*!< Character Match Flag */\n#define USART_ISR_SBKF_Pos              (18U)\n#define USART_ISR_SBKF_Msk              (0x1UL << USART_ISR_SBKF_Pos)          /*!< 0x00040000 */\n#define USART_ISR_SBKF                  USART_ISR_SBKF_Msk                     /*!< Send Break Flag */\n#define USART_ISR_RWU_Pos               (19U)\n#define USART_ISR_RWU_Msk               (0x1UL << USART_ISR_RWU_Pos)           /*!< 0x00080000 */\n#define USART_ISR_RWU                   USART_ISR_RWU_Msk                      /*!< Receive Wake Up from mute mode Flag */\n#define USART_ISR_WUF_Pos               (20U)\n#define USART_ISR_WUF_Msk               (0x1UL << USART_ISR_WUF_Pos)           /*!< 0x00100000 */\n#define USART_ISR_WUF                   USART_ISR_WUF_Msk                      /*!< Wake Up from stop mode Flag */\n#define USART_ISR_TEACK_Pos             (21U)\n#define USART_ISR_TEACK_Msk             (0x1UL << USART_ISR_TEACK_Pos)         /*!< 0x00200000 */\n#define USART_ISR_TEACK                 USART_ISR_TEACK_Msk                    /*!< Transmit Enable Acknowledge Flag */\n#define USART_ISR_REACK_Pos             (22U)\n#define USART_ISR_REACK_Msk             (0x1UL << USART_ISR_REACK_Pos)         /*!< 0x00400000 */\n#define USART_ISR_REACK                 USART_ISR_REACK_Msk                    /*!< Receive Enable Acknowledge Flag */\n#define USART_ISR_TXFE_Pos              (23U)\n#define USART_ISR_TXFE_Msk              (0x1UL << USART_ISR_TXFE_Pos)          /*!< 0x00800000 */\n#define USART_ISR_TXFE                  USART_ISR_TXFE_Msk                     /*!< TXFIFO Empty */\n#define USART_ISR_RXFF_Pos              (24U)\n#define USART_ISR_RXFF_Msk              (0x1UL << USART_ISR_RXFF_Pos)          /*!< 0x01000000 */\n#define USART_ISR_RXFF                  USART_ISR_RXFF_Msk                     /*!< RXFIFO Full Flag */\n#define USART_ISR_TCBGT_Pos             (25U)\n#define USART_ISR_TCBGT_Msk             (0x1UL << USART_ISR_TCBGT_Pos)         /*!< 0x02000000 */\n#define USART_ISR_TCBGT                 USART_ISR_TCBGT_Msk                    /*!< Transmission complete before guard time Flag */\n#define USART_ISR_RXFT_Pos              (26U)\n#define USART_ISR_RXFT_Msk              (0x1UL << USART_ISR_RXFT_Pos)          /*!< 0x04000000 */\n#define USART_ISR_RXFT                  USART_ISR_RXFT_Msk                     /*!< RXFIFO threshold Flag */\n#define USART_ISR_TXFT_Pos              (27U)\n#define USART_ISR_TXFT_Msk              (0x1UL << USART_ISR_TXFT_Pos)          /*!< 0x08000000 */\n#define USART_ISR_TXFT                  USART_ISR_TXFT_Msk                     /*!< TXFIFO threshold Flag */\n\n/*******************  Bit definition for USART_ICR register  ******************/\n#define USART_ICR_PECF_Pos              (0U)\n#define USART_ICR_PECF_Msk              (0x1UL << USART_ICR_PECF_Pos)          /*!< 0x00000001 */\n#define USART_ICR_PECF                  USART_ICR_PECF_Msk                     /*!< Parity Error Clear Flag */\n#define USART_ICR_FECF_Pos              (1U)\n#define USART_ICR_FECF_Msk              (0x1UL << USART_ICR_FECF_Pos)          /*!< 0x00000002 */\n#define USART_ICR_FECF                  USART_ICR_FECF_Msk                     /*!< Framing Error Clear Flag */\n#define USART_ICR_NECF_Pos              (2U)\n#define USART_ICR_NECF_Msk              (0x1UL << USART_ICR_NECF_Pos)          /*!< 0x00000004 */\n#define USART_ICR_NECF                  USART_ICR_NECF_Msk                     /*!< Noise detected Clear Flag */\n#define USART_ICR_ORECF_Pos             (3U)\n#define USART_ICR_ORECF_Msk             (0x1UL << USART_ICR_ORECF_Pos)         /*!< 0x00000008 */\n#define USART_ICR_ORECF                 USART_ICR_ORECF_Msk                    /*!< OverRun Error Clear Flag */\n#define USART_ICR_IDLECF_Pos            (4U)\n#define USART_ICR_IDLECF_Msk            (0x1UL << USART_ICR_IDLECF_Pos)        /*!< 0x00000010 */\n#define USART_ICR_IDLECF                USART_ICR_IDLECF_Msk                   /*!< IDLE line detected Clear Flag */\n#define USART_ICR_TXFECF_Pos            (5U)\n#define USART_ICR_TXFECF_Msk            (0x1UL << USART_ICR_TXFECF_Pos)        /*!< 0x00000020 */\n#define USART_ICR_TXFECF                USART_ICR_TXFECF_Msk                   /*!< TXFIFO empty clear flag */\n#define USART_ICR_TCCF_Pos              (6U)\n#define USART_ICR_TCCF_Msk              (0x1UL << USART_ICR_TCCF_Pos)          /*!< 0x00000040 */\n#define USART_ICR_TCCF                  USART_ICR_TCCF_Msk                     /*!< Transmission Complete Clear Flag */\n#define USART_ICR_TCBGTCF_Pos           (7U)\n#define USART_ICR_TCBGTCF_Msk           (0x1UL << USART_ICR_TCBGTCF_Pos)       /*!< 0x00000080 */\n#define USART_ICR_TCBGTCF               USART_ICR_TCBGTCF_Msk                  /*!< Transmission complete before guard time Clear Flag */\n#define USART_ICR_LBDCF_Pos             (8U)\n#define USART_ICR_LBDCF_Msk             (0x1UL << USART_ICR_LBDCF_Pos)         /*!< 0x00000100 */\n#define USART_ICR_LBDCF                 USART_ICR_LBDCF_Msk                    /*!< LIN Break Detection Clear Flag */\n#define USART_ICR_CTSCF_Pos             (9U)\n#define USART_ICR_CTSCF_Msk             (0x1UL << USART_ICR_CTSCF_Pos)         /*!< 0x00000200 */\n#define USART_ICR_CTSCF                 USART_ICR_CTSCF_Msk                    /*!< CTS Interrupt Clear Flag */\n#define USART_ICR_RTOCF_Pos             (11U)\n#define USART_ICR_RTOCF_Msk             (0x1UL << USART_ICR_RTOCF_Pos)         /*!< 0x00000800 */\n#define USART_ICR_RTOCF                 USART_ICR_RTOCF_Msk                    /*!< Receiver Time Out Clear Flag */\n#define USART_ICR_EOBCF_Pos             (12U)\n#define USART_ICR_EOBCF_Msk             (0x1UL << USART_ICR_EOBCF_Pos)         /*!< 0x00001000 */\n#define USART_ICR_EOBCF                 USART_ICR_EOBCF_Msk                    /*!< End Of Block Clear Flag */\n#define USART_ICR_UDRCF_Pos             (13U)\n#define USART_ICR_UDRCF_Msk             (0x1UL << USART_ICR_UDRCF_Pos)         /*!< 0x00002000 */\n#define USART_ICR_UDRCF                 USART_ICR_UDRCF_Msk                    /*!< SPI slave underrun clear flag */\n#define USART_ICR_CMCF_Pos              (17U)\n#define USART_ICR_CMCF_Msk              (0x1UL << USART_ICR_CMCF_Pos)          /*!< 0x00020000 */\n#define USART_ICR_CMCF                  USART_ICR_CMCF_Msk                     /*!< Character Match Clear Flag */\n#define USART_ICR_WUCF_Pos              (20U)\n#define USART_ICR_WUCF_Msk              (0x1UL << USART_ICR_WUCF_Pos)          /*!< 0x00100000 */\n#define USART_ICR_WUCF                  USART_ICR_WUCF_Msk                     /*!< Wake Up from stop mode Clear Flag */\n\n/*******************  Bit definition for USART_RDR register  ******************/\n#define USART_RDR_RDR_Pos               (0U)\n#define USART_RDR_RDR_Msk               (0x1FFUL << USART_RDR_RDR_Pos)         /*!< 0x000001FF */\n#define USART_RDR_RDR                   USART_RDR_RDR_Msk                      /*!< RDR[8:0] bits (Receive Data value) */\n\n/*******************  Bit definition for USART_TDR register  ******************/\n#define USART_TDR_TDR_Pos               (0U)\n#define USART_TDR_TDR_Msk               (0x1FFUL << USART_TDR_TDR_Pos)         /*!< 0x000001FF */\n#define USART_TDR_TDR                   USART_TDR_TDR_Msk                      /*!< TDR[8:0] bits (Transmit Data value) */\n\n/*******************  Bit definition for USART_PRESC register  ******************/\n#define USART_PRESC_PRESCALER_Pos       (0U)\n#define USART_PRESC_PRESCALER_Msk       (0xFUL << USART_PRESC_PRESCALER_Pos)   /*!< 0x0000000F */\n#define USART_PRESC_PRESCALER           USART_PRESC_PRESCALER_Msk              /*!< PRESCALER[3:0] bits (Clock prescaler) */\n#define USART_PRESC_PRESCALER_0         (0x1UL << USART_PRESC_PRESCALER_Pos)    /*!< 0x00000001 */\n#define USART_PRESC_PRESCALER_1         (0x2UL << USART_PRESC_PRESCALER_Pos)    /*!< 0x00000002 */\n#define USART_PRESC_PRESCALER_2         (0x4UL << USART_PRESC_PRESCALER_Pos)    /*!< 0x00000004 */\n#define USART_PRESC_PRESCALER_3         (0x8UL << USART_PRESC_PRESCALER_Pos)    /*!< 0x00000008 */\n\n/******************************************************************************/\n/*                                                                            */\n/*           Single Wire Protocol Master Interface (SWPMI)                    */\n/*                                                                            */\n/******************************************************************************/\n\n/*******************  Bit definition for SWPMI_CR register   ********************/\n#define SWPMI_CR_RXDMA_Pos       (0U)\n#define SWPMI_CR_RXDMA_Msk       (0x1UL << SWPMI_CR_RXDMA_Pos)                 /*!< 0x00000001 */\n#define SWPMI_CR_RXDMA           SWPMI_CR_RXDMA_Msk                            /*!<Reception DMA enable                                 */\n#define SWPMI_CR_TXDMA_Pos       (1U)\n#define SWPMI_CR_TXDMA_Msk       (0x1UL << SWPMI_CR_TXDMA_Pos)                 /*!< 0x00000002 */\n#define SWPMI_CR_TXDMA           SWPMI_CR_TXDMA_Msk                            /*!<Transmission DMA enable                              */\n#define SWPMI_CR_RXMODE_Pos      (2U)\n#define SWPMI_CR_RXMODE_Msk      (0x1UL << SWPMI_CR_RXMODE_Pos)                /*!< 0x00000004 */\n#define SWPMI_CR_RXMODE          SWPMI_CR_RXMODE_Msk                           /*!<Reception buffering mode                             */\n#define SWPMI_CR_TXMODE_Pos      (3U)\n#define SWPMI_CR_TXMODE_Msk      (0x1UL << SWPMI_CR_TXMODE_Pos)                /*!< 0x00000008 */\n#define SWPMI_CR_TXMODE          SWPMI_CR_TXMODE_Msk                           /*!<Transmission buffering mode                          */\n#define SWPMI_CR_LPBK_Pos        (4U)\n#define SWPMI_CR_LPBK_Msk        (0x1UL << SWPMI_CR_LPBK_Pos)                  /*!< 0x00000010 */\n#define SWPMI_CR_LPBK            SWPMI_CR_LPBK_Msk                             /*!<Loopback mode enable                                 */\n#define SWPMI_CR_SWPACT_Pos      (5U)\n#define SWPMI_CR_SWPACT_Msk      (0x1UL << SWPMI_CR_SWPACT_Pos)                /*!< 0x00000020 */\n#define SWPMI_CR_SWPACT          SWPMI_CR_SWPACT_Msk                           /*!<Single wire protocol master interface activate       */\n#define SWPMI_CR_DEACT_Pos       (10U)\n#define SWPMI_CR_DEACT_Msk       (0x1UL << SWPMI_CR_DEACT_Pos)                 /*!< 0x00000400 */\n#define SWPMI_CR_DEACT           SWPMI_CR_DEACT_Msk                            /*!<Single wire protocol master interface deactivate     */\n#define SWPMI_CR_SWPEN_Pos       (11U)\n#define SWPMI_CR_SWPEN_Msk       (0x1UL << SWPMI_CR_SWPEN_Pos)                 /*!< 0x00000800 */\n#define SWPMI_CR_SWPEN           SWPMI_CR_SWPEN_Msk                            /*!<Single wire protocol master transceiver enable       */\n\n/*******************  Bit definition for SWPMI_BRR register  ********************/\n#define SWPMI_BRR_BR_Pos         (0U)\n#define SWPMI_BRR_BR_Msk         (0xFFUL << SWPMI_BRR_BR_Pos)                  /*!< 0x000000FF */\n#define SWPMI_BRR_BR             SWPMI_BRR_BR_Msk                              /*!<BR[7:0] bits (Bitrate prescaler) */\n\n/*******************  Bit definition for SWPMI_ISR register  ********************/\n#define SWPMI_ISR_RXBFF_Pos      (0U)\n#define SWPMI_ISR_RXBFF_Msk      (0x1UL << SWPMI_ISR_RXBFF_Pos)                /*!< 0x00000001 */\n#define SWPMI_ISR_RXBFF          SWPMI_ISR_RXBFF_Msk                           /*!<Receive buffer full flag        */\n#define SWPMI_ISR_TXBEF_Pos      (1U)\n#define SWPMI_ISR_TXBEF_Msk      (0x1UL << SWPMI_ISR_TXBEF_Pos)                /*!< 0x00000002 */\n#define SWPMI_ISR_TXBEF          SWPMI_ISR_TXBEF_Msk                           /*!<Transmit buffer empty flag      */\n#define SWPMI_ISR_RXBERF_Pos     (2U)\n#define SWPMI_ISR_RXBERF_Msk     (0x1UL << SWPMI_ISR_RXBERF_Pos)               /*!< 0x00000004 */\n#define SWPMI_ISR_RXBERF         SWPMI_ISR_RXBERF_Msk                          /*!<Receive CRC error flag          */\n#define SWPMI_ISR_RXOVRF_Pos     (3U)\n#define SWPMI_ISR_RXOVRF_Msk     (0x1UL << SWPMI_ISR_RXOVRF_Pos)               /*!< 0x00000008 */\n#define SWPMI_ISR_RXOVRF         SWPMI_ISR_RXOVRF_Msk                          /*!<Receive overrun error flag      */\n#define SWPMI_ISR_TXUNRF_Pos     (4U)\n#define SWPMI_ISR_TXUNRF_Msk     (0x1UL << SWPMI_ISR_TXUNRF_Pos)               /*!< 0x00000010 */\n#define SWPMI_ISR_TXUNRF         SWPMI_ISR_TXUNRF_Msk                          /*!<Transmit underrun error flag    */\n#define SWPMI_ISR_RXNE_Pos       (5U)\n#define SWPMI_ISR_RXNE_Msk       (0x1UL << SWPMI_ISR_RXNE_Pos)                 /*!< 0x00000020 */\n#define SWPMI_ISR_RXNE           SWPMI_ISR_RXNE_Msk                            /*!<Receive data register not empty */\n#define SWPMI_ISR_TXE_Pos        (6U)\n#define SWPMI_ISR_TXE_Msk        (0x1UL << SWPMI_ISR_TXE_Pos)                  /*!< 0x00000040 */\n#define SWPMI_ISR_TXE            SWPMI_ISR_TXE_Msk                             /*!<Transmit data register empty    */\n#define SWPMI_ISR_TCF_Pos        (7U)\n#define SWPMI_ISR_TCF_Msk        (0x1UL << SWPMI_ISR_TCF_Pos)                  /*!< 0x00000080 */\n#define SWPMI_ISR_TCF            SWPMI_ISR_TCF_Msk                             /*!<Transfer complete flag          */\n#define SWPMI_ISR_SRF_Pos        (8U)\n#define SWPMI_ISR_SRF_Msk        (0x1UL << SWPMI_ISR_SRF_Pos)                  /*!< 0x00000100 */\n#define SWPMI_ISR_SRF            SWPMI_ISR_SRF_Msk                             /*!<Slave resume flag               */\n#define SWPMI_ISR_SUSP_Pos       (9U)\n#define SWPMI_ISR_SUSP_Msk       (0x1UL << SWPMI_ISR_SUSP_Pos)                 /*!< 0x00000200 */\n#define SWPMI_ISR_SUSP           SWPMI_ISR_SUSP_Msk                            /*!<SUSPEND flag                    */\n#define SWPMI_ISR_DEACTF_Pos     (10U)\n#define SWPMI_ISR_DEACTF_Msk     (0x1UL << SWPMI_ISR_DEACTF_Pos)               /*!< 0x00000400 */\n#define SWPMI_ISR_DEACTF         SWPMI_ISR_DEACTF_Msk                          /*!<DEACTIVATED flag                */\n#define SWPMI_ISR_RDYF_Pos       (11U)\n#define SWPMI_ISR_RDYF_Msk       (0x1UL << SWPMI_ISR_RDYF_Pos)                 /*!< 0x00000800 */\n#define SWPMI_ISR_RDYF           SWPMI_ISR_RDYF_Msk                            /*!<Transceiver ready flag          */\n\n/*******************  Bit definition for SWPMI_ICR register  ********************/\n#define SWPMI_ICR_CRXBFF_Pos     (0U)\n#define SWPMI_ICR_CRXBFF_Msk     (0x1UL << SWPMI_ICR_CRXBFF_Pos)               /*!< 0x00000001 */\n#define SWPMI_ICR_CRXBFF         SWPMI_ICR_CRXBFF_Msk                          /*!<Clear receive buffer full flag       */\n#define SWPMI_ICR_CTXBEF_Pos     (1U)\n#define SWPMI_ICR_CTXBEF_Msk     (0x1UL << SWPMI_ICR_CTXBEF_Pos)               /*!< 0x00000002 */\n#define SWPMI_ICR_CTXBEF         SWPMI_ICR_CTXBEF_Msk                          /*!<Clear transmit buffer empty flag     */\n#define SWPMI_ICR_CRXBERF_Pos    (2U)\n#define SWPMI_ICR_CRXBERF_Msk    (0x1UL << SWPMI_ICR_CRXBERF_Pos)              /*!< 0x00000004 */\n#define SWPMI_ICR_CRXBERF        SWPMI_ICR_CRXBERF_Msk                         /*!<Clear receive CRC error flag         */\n#define SWPMI_ICR_CRXOVRF_Pos    (3U)\n#define SWPMI_ICR_CRXOVRF_Msk    (0x1UL << SWPMI_ICR_CRXOVRF_Pos)              /*!< 0x00000008 */\n#define SWPMI_ICR_CRXOVRF        SWPMI_ICR_CRXOVRF_Msk                         /*!<Clear receive overrun error flag     */\n#define SWPMI_ICR_CTXUNRF_Pos    (4U)\n#define SWPMI_ICR_CTXUNRF_Msk    (0x1UL << SWPMI_ICR_CTXUNRF_Pos)              /*!< 0x00000010 */\n#define SWPMI_ICR_CTXUNRF        SWPMI_ICR_CTXUNRF_Msk                         /*!<Clear transmit underrun error flag   */\n#define SWPMI_ICR_CTCF_Pos       (7U)\n#define SWPMI_ICR_CTCF_Msk       (0x1UL << SWPMI_ICR_CTCF_Pos)                 /*!< 0x00000080 */\n#define SWPMI_ICR_CTCF           SWPMI_ICR_CTCF_Msk                            /*!<Clear transfer complete flag         */\n#define SWPMI_ICR_CSRF_Pos       (8U)\n#define SWPMI_ICR_CSRF_Msk       (0x1UL << SWPMI_ICR_CSRF_Pos)                 /*!< 0x00000100 */\n#define SWPMI_ICR_CSRF           SWPMI_ICR_CSRF_Msk                            /*!<Clear slave resume flag              */\n#define SWPMI_ICR_CRDYF_Pos      (11U)\n#define SWPMI_ICR_CRDYF_Msk      (0x1UL << SWPMI_ICR_CRDYF_Pos)                /*!< 0x00000800 */\n#define SWPMI_ICR_CRDYF          SWPMI_ICR_CRDYF_Msk                           /*!<Clear transceiver ready flag         */\n\n/*******************  Bit definition for SWPMI_IER register  ********************/\n#define SWPMI_IER_RXBFIE_Pos     (0U)\n#define SWPMI_IER_RXBFIE_Msk     (0x1UL << SWPMI_IER_RXBFIE_Pos)               /*!< 0x00000001 */\n#define SWPMI_IER_RXBFIE         SWPMI_IER_RXBFIE_Msk                          /*!<Receive buffer full interrupt enable        */\n#define SWPMI_IER_TXBEIE_Pos     (1U)\n#define SWPMI_IER_TXBEIE_Msk     (0x1UL << SWPMI_IER_TXBEIE_Pos)               /*!< 0x00000002 */\n#define SWPMI_IER_TXBEIE         SWPMI_IER_TXBEIE_Msk                          /*!<Transmit buffer empty interrupt enable      */\n#define SWPMI_IER_RXBERIE_Pos    (2U)\n#define SWPMI_IER_RXBERIE_Msk    (0x1UL << SWPMI_IER_RXBERIE_Pos)              /*!< 0x00000004 */\n#define SWPMI_IER_RXBERIE        SWPMI_IER_RXBERIE_Msk                         /*!<Receive CRC error interrupt enable          */\n#define SWPMI_IER_RXOVRIE_Pos    (3U)\n#define SWPMI_IER_RXOVRIE_Msk    (0x1UL << SWPMI_IER_RXOVRIE_Pos)              /*!< 0x00000008 */\n#define SWPMI_IER_RXOVRIE        SWPMI_IER_RXOVRIE_Msk                         /*!<Receive overrun error interrupt enable      */\n#define SWPMI_IER_TXUNRIE_Pos    (4U)\n#define SWPMI_IER_TXUNRIE_Msk    (0x1UL << SWPMI_IER_TXUNRIE_Pos)              /*!< 0x00000010 */\n#define SWPMI_IER_TXUNRIE        SWPMI_IER_TXUNRIE_Msk                         /*!<Transmit underrun error interrupt enable    */\n#define SWPMI_IER_RIE_Pos        (5U)\n#define SWPMI_IER_RIE_Msk        (0x1UL << SWPMI_IER_RIE_Pos)                  /*!< 0x00000020 */\n#define SWPMI_IER_RIE            SWPMI_IER_RIE_Msk                             /*!<Receive interrupt enable                    */\n#define SWPMI_IER_TIE_Pos        (6U)\n#define SWPMI_IER_TIE_Msk        (0x1UL << SWPMI_IER_TIE_Pos)                  /*!< 0x00000040 */\n#define SWPMI_IER_TIE            SWPMI_IER_TIE_Msk                             /*!<Transmit interrupt enable                   */\n#define SWPMI_IER_TCIE_Pos       (7U)\n#define SWPMI_IER_TCIE_Msk       (0x1UL << SWPMI_IER_TCIE_Pos)                 /*!< 0x00000080 */\n#define SWPMI_IER_TCIE           SWPMI_IER_TCIE_Msk                            /*!<Transmit complete interrupt enable          */\n#define SWPMI_IER_SRIE_Pos       (8U)\n#define SWPMI_IER_SRIE_Msk       (0x1UL << SWPMI_IER_SRIE_Pos)                 /*!< 0x00000100 */\n#define SWPMI_IER_SRIE           SWPMI_IER_SRIE_Msk                            /*!<Slave resume interrupt enable               */\n#define SWPMI_IER_RDYIE_Pos      (11U)\n#define SWPMI_IER_RDYIE_Msk      (0x1UL << SWPMI_IER_RDYIE_Pos)                /*!< 0x00000800 */\n#define SWPMI_IER_RDYIE          SWPMI_IER_RDYIE_Msk                           /*!<Transceiver ready interrupt enable          */\n\n/*******************  Bit definition for SWPMI_RFL register  ********************/\n#define SWPMI_RFL_RFL_Pos        (0U)\n#define SWPMI_RFL_RFL_Msk        (0x1FUL << SWPMI_RFL_RFL_Pos)                 /*!< 0x0000001F */\n#define SWPMI_RFL_RFL            SWPMI_RFL_RFL_Msk                             /*!<RFL[4:0] bits (Receive Frame length) */\n#define SWPMI_RFL_RFL_0_1        ((uint32_t)0x00000003)                        /*!<RFL[1:0] bits (number of relevant bytes for the last SWPMI_RDR register read.) */\n\n/*******************  Bit definition for SWPMI_TDR register  ********************/\n#define SWPMI_TDR_TD_Pos         (0U)\n#define SWPMI_TDR_TD_Msk         (0xFFFFFFFFUL << SWPMI_TDR_TD_Pos)            /*!< 0xFFFFFFFF */\n#define SWPMI_TDR_TD             SWPMI_TDR_TD_Msk                              /*!<Transmit Data Register         */\n\n/*******************  Bit definition for SWPMI_RDR register  ********************/\n#define SWPMI_RDR_RD_Pos         (0U)\n#define SWPMI_RDR_RD_Msk         (0xFFFFFFFFUL << SWPMI_RDR_RD_Pos)            /*!< 0xFFFFFFFF */\n#define SWPMI_RDR_RD             SWPMI_RDR_RD_Msk                              /*!<Receive Data Register           */\n\n\n/*******************  Bit definition for SWPMI_OR register  ********************/\n#define SWPMI_OR_TBYP_Pos        (0U)\n#define SWPMI_OR_TBYP_Msk        (0x1UL << SWPMI_OR_TBYP_Pos)                  /*!< 0x00000001 */\n#define SWPMI_OR_TBYP            SWPMI_OR_TBYP_Msk                             /*!<SWP Transceiver Bypass */\n#define SWPMI_OR_CLASS_Pos       (1U)\n#define SWPMI_OR_CLASS_Msk       (0x1UL << SWPMI_OR_CLASS_Pos)                 /*!< 0x00000002 */\n#define SWPMI_OR_CLASS           SWPMI_OR_CLASS_Msk                            /*!<SWP CLASS selection */\n\n/******************************************************************************/\n/*                                                                            */\n/*                            Window WATCHDOG                                 */\n/*                                                                            */\n/******************************************************************************/\n/*******************  Bit definition for WWDG_CR register  ********************/\n#define WWDG_CR_T_Pos           (0U)\n#define WWDG_CR_T_Msk           (0x7FUL << WWDG_CR_T_Pos)                      /*!< 0x0000007F */\n#define WWDG_CR_T               WWDG_CR_T_Msk                                  /*!<T[6:0] bits (7-Bit counter (MSB to LSB)) */\n#define WWDG_CR_T_0             (0x01UL << WWDG_CR_T_Pos)                       /*!< 0x00000001 */\n#define WWDG_CR_T_1             (0x02UL << WWDG_CR_T_Pos)                       /*!< 0x00000002 */\n#define WWDG_CR_T_2             (0x04UL << WWDG_CR_T_Pos)                       /*!< 0x00000004 */\n#define WWDG_CR_T_3             (0x08UL << WWDG_CR_T_Pos)                       /*!< 0x00000008 */\n#define WWDG_CR_T_4             (0x10UL << WWDG_CR_T_Pos)                       /*!< 0x00000010 */\n#define WWDG_CR_T_5             (0x20UL << WWDG_CR_T_Pos)                       /*!< 0x00000020 */\n#define WWDG_CR_T_6             (0x40UL << WWDG_CR_T_Pos)                       /*!< 0x00000040 */\n\n#define WWDG_CR_WDGA_Pos        (7U)\n#define WWDG_CR_WDGA_Msk        (0x1UL << WWDG_CR_WDGA_Pos)                    /*!< 0x00000080 */\n#define WWDG_CR_WDGA            WWDG_CR_WDGA_Msk                               /*!<Activation bit */\n\n/*******************  Bit definition for WWDG_CFR register  *******************/\n#define WWDG_CFR_W_Pos          (0U)\n#define WWDG_CFR_W_Msk          (0x7FUL << WWDG_CFR_W_Pos)                     /*!< 0x0000007F */\n#define WWDG_CFR_W              WWDG_CFR_W_Msk                                 /*!<W[6:0] bits (7-bit window value) */\n#define WWDG_CFR_W_0            (0x01UL << WWDG_CFR_W_Pos)                      /*!< 0x00000001 */\n#define WWDG_CFR_W_1            (0x02UL << WWDG_CFR_W_Pos)                      /*!< 0x00000002 */\n#define WWDG_CFR_W_2            (0x04UL << WWDG_CFR_W_Pos)                      /*!< 0x00000004 */\n#define WWDG_CFR_W_3            (0x08UL << WWDG_CFR_W_Pos)                      /*!< 0x00000008 */\n#define WWDG_CFR_W_4            (0x10UL << WWDG_CFR_W_Pos)                      /*!< 0x00000010 */\n#define WWDG_CFR_W_5            (0x20UL << WWDG_CFR_W_Pos)                      /*!< 0x00000020 */\n#define WWDG_CFR_W_6            (0x40UL << WWDG_CFR_W_Pos)                      /*!< 0x00000040 */\n\n#define WWDG_CFR_EWI_Pos        (9U)\n#define WWDG_CFR_EWI_Msk        (0x1UL << WWDG_CFR_EWI_Pos)                    /*!< 0x00000200 */\n#define WWDG_CFR_EWI            WWDG_CFR_EWI_Msk                               /*!<Early Wakeup Interrupt */\n\n#define WWDG_CFR_WDGTB_Pos      (11U)\n#define WWDG_CFR_WDGTB_Msk      (0x7UL << WWDG_CFR_WDGTB_Pos)                  /*!< 0x00003800 */\n#define WWDG_CFR_WDGTB          WWDG_CFR_WDGTB_Msk                             /*!<WDGTB[2:0] bits (Timer Base) */\n#define WWDG_CFR_WDGTB_0        (0x1UL << WWDG_CFR_WDGTB_Pos)                   /*!< 0x00000800 */\n#define WWDG_CFR_WDGTB_1        (0x2UL << WWDG_CFR_WDGTB_Pos)                   /*!< 0x00001000 */\n#define WWDG_CFR_WDGTB_2        (0x4UL << WWDG_CFR_WDGTB_Pos)                   /*!< 0x00002000 */\n\n/*******************  Bit definition for WWDG_SR register  ********************/\n#define WWDG_SR_EWIF_Pos        (0U)\n#define WWDG_SR_EWIF_Msk        (0x1UL << WWDG_SR_EWIF_Pos)                    /*!< 0x00000001 */\n#define WWDG_SR_EWIF            WWDG_SR_EWIF_Msk                               /*!<Early Wakeup Interrupt Flag */\n\n\n/******************************************************************************/\n/*                                                                            */\n/*                                DBG                                         */\n/*                                                                            */\n/******************************************************************************/\n/*********************************  DEVICE ID  ********************************/\n#define STM32H7_DEV_ID           0x450UL\n\n/********************  Bit definition for DBGMCU_IDCODE register  *************/\n#define DBGMCU_IDCODE_DEV_ID_Pos          (0U)\n#define DBGMCU_IDCODE_DEV_ID_Msk          (0xFFFUL << DBGMCU_IDCODE_DEV_ID_Pos) /*!< 0x00000FFF */\n#define DBGMCU_IDCODE_DEV_ID              DBGMCU_IDCODE_DEV_ID_Msk\n#define DBGMCU_IDCODE_REV_ID_Pos          (16U)\n#define DBGMCU_IDCODE_REV_ID_Msk          (0xFFFFUL << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0xFFFF0000 */\n#define DBGMCU_IDCODE_REV_ID              DBGMCU_IDCODE_REV_ID_Msk\n\n/********************  Bit definition for DBGMCU_CR register  *****************/\n#define DBGMCU_CR_DBG_SLEEPD1_Pos         (0U)\n#define DBGMCU_CR_DBG_SLEEPD1_Msk         (0x1UL << DBGMCU_CR_DBG_SLEEPD1_Pos) /*!< 0x00000001 */\n#define DBGMCU_CR_DBG_SLEEPD1             DBGMCU_CR_DBG_SLEEPD1_Msk\n#define DBGMCU_CR_DBG_STOPD1_Pos          (1U)\n#define DBGMCU_CR_DBG_STOPD1_Msk          (0x1UL << DBGMCU_CR_DBG_STOPD1_Pos)  /*!< 0x00000002 */\n#define DBGMCU_CR_DBG_STOPD1              DBGMCU_CR_DBG_STOPD1_Msk\n#define DBGMCU_CR_DBG_STANDBYD1_Pos       (2U)\n#define DBGMCU_CR_DBG_STANDBYD1_Msk       (0x1UL << DBGMCU_CR_DBG_STANDBYD1_Pos) /*!< 0x00000004 */\n#define DBGMCU_CR_DBG_STANDBYD1           DBGMCU_CR_DBG_STANDBYD1_Msk\n#define DBGMCU_CR_DBG_TRACECKEN_Pos       (20U)\n#define DBGMCU_CR_DBG_TRACECKEN_Msk       (0x1UL << DBGMCU_CR_DBG_TRACECKEN_Pos) /*!< 0x00100000 */\n#define DBGMCU_CR_DBG_TRACECKEN           DBGMCU_CR_DBG_TRACECKEN_Msk\n#define DBGMCU_CR_DBG_CKD1EN_Pos          (21U)\n#define DBGMCU_CR_DBG_CKD1EN_Msk          (0x1UL << DBGMCU_CR_DBG_CKD1EN_Pos)  /*!< 0x00200000 */\n#define DBGMCU_CR_DBG_CKD1EN              DBGMCU_CR_DBG_CKD1EN_Msk\n#define DBGMCU_CR_DBG_CKD3EN_Pos          (22U)\n#define DBGMCU_CR_DBG_CKD3EN_Msk          (0x1UL << DBGMCU_CR_DBG_CKD3EN_Pos)  /*!< 0x00400000 */\n#define DBGMCU_CR_DBG_CKD3EN              DBGMCU_CR_DBG_CKD3EN_Msk\n#define DBGMCU_CR_DBG_TRGOEN_Pos          (28U)\n#define DBGMCU_CR_DBG_TRGOEN_Msk          (0x1UL << DBGMCU_CR_DBG_TRGOEN_Pos)  /*!< 0x10000000 */\n#define DBGMCU_CR_DBG_TRGOEN              DBGMCU_CR_DBG_TRGOEN_Msk\n\n/********************  Bit definition for APB3FZ1 register  ************/\n#define DBGMCU_APB3FZ1_DBG_WWDG1_Pos      (6U)\n#define DBGMCU_APB3FZ1_DBG_WWDG1_Msk      (0x1UL << DBGMCU_APB3FZ1_DBG_WWDG1_Pos) /*!< 0x00000040 */\n#define DBGMCU_APB3FZ1_DBG_WWDG1          DBGMCU_APB3FZ1_DBG_WWDG1_Msk\n/********************  Bit definition for APB1LFZ1 register  ************/\n#define DBGMCU_APB1LFZ1_DBG_TIM2_Pos      (0U)\n#define DBGMCU_APB1LFZ1_DBG_TIM2_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM2_Pos) /*!< 0x00000001 */\n#define DBGMCU_APB1LFZ1_DBG_TIM2          DBGMCU_APB1LFZ1_DBG_TIM2_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM3_Pos      (1U)\n#define DBGMCU_APB1LFZ1_DBG_TIM3_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM3_Pos) /*!< 0x00000002 */\n#define DBGMCU_APB1LFZ1_DBG_TIM3          DBGMCU_APB1LFZ1_DBG_TIM3_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM4_Pos      (2U)\n#define DBGMCU_APB1LFZ1_DBG_TIM4_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM4_Pos) /*!< 0x00000004 */\n#define DBGMCU_APB1LFZ1_DBG_TIM4          DBGMCU_APB1LFZ1_DBG_TIM4_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM5_Pos      (3U)\n#define DBGMCU_APB1LFZ1_DBG_TIM5_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM5_Pos) /*!< 0x00000008 */\n#define DBGMCU_APB1LFZ1_DBG_TIM5          DBGMCU_APB1LFZ1_DBG_TIM5_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM6_Pos      (4U)\n#define DBGMCU_APB1LFZ1_DBG_TIM6_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM6_Pos) /*!< 0x00000010 */\n#define DBGMCU_APB1LFZ1_DBG_TIM6          DBGMCU_APB1LFZ1_DBG_TIM6_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM7_Pos      (5U)\n#define DBGMCU_APB1LFZ1_DBG_TIM7_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM7_Pos) /*!< 0x00000020 */\n#define DBGMCU_APB1LFZ1_DBG_TIM7          DBGMCU_APB1LFZ1_DBG_TIM7_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM12_Pos     (6U)\n#define DBGMCU_APB1LFZ1_DBG_TIM12_Msk     (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM12_Pos) /*!< 0x00000040 */\n#define DBGMCU_APB1LFZ1_DBG_TIM12         DBGMCU_APB1LFZ1_DBG_TIM12_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM13_Pos     (7U)\n#define DBGMCU_APB1LFZ1_DBG_TIM13_Msk     (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM13_Pos) /*!< 0x00000080 */\n#define DBGMCU_APB1LFZ1_DBG_TIM13         DBGMCU_APB1LFZ1_DBG_TIM13_Msk\n#define DBGMCU_APB1LFZ1_DBG_TIM14_Pos     (8U)\n#define DBGMCU_APB1LFZ1_DBG_TIM14_Msk     (0x1UL << DBGMCU_APB1LFZ1_DBG_TIM14_Pos) /*!< 0x00000100 */\n#define DBGMCU_APB1LFZ1_DBG_TIM14         DBGMCU_APB1LFZ1_DBG_TIM14_Msk\n#define DBGMCU_APB1LFZ1_DBG_LPTIM1_Pos    (9U)\n#define DBGMCU_APB1LFZ1_DBG_LPTIM1_Msk    (0x1UL << DBGMCU_APB1LFZ1_DBG_LPTIM1_Pos) /*!< 0x00000200 */\n#define DBGMCU_APB1LFZ1_DBG_LPTIM1        DBGMCU_APB1LFZ1_DBG_LPTIM1_Msk\n#define DBGMCU_APB1LFZ1_DBG_I2C1_Pos      (21U)\n#define DBGMCU_APB1LFZ1_DBG_I2C1_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_I2C1_Pos) /*!< 0x00200000 */\n#define DBGMCU_APB1LFZ1_DBG_I2C1          DBGMCU_APB1LFZ1_DBG_I2C1_Msk\n#define DBGMCU_APB1LFZ1_DBG_I2C2_Pos      (22U)\n#define DBGMCU_APB1LFZ1_DBG_I2C2_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_I2C2_Pos) /*!< 0x00400000 */\n#define DBGMCU_APB1LFZ1_DBG_I2C2          DBGMCU_APB1LFZ1_DBG_I2C2_Msk\n#define DBGMCU_APB1LFZ1_DBG_I2C3_Pos      (23U)\n#define DBGMCU_APB1LFZ1_DBG_I2C3_Msk      (0x1UL << DBGMCU_APB1LFZ1_DBG_I2C3_Pos) /*!< 0x00800000 */\n#define DBGMCU_APB1LFZ1_DBG_I2C3          DBGMCU_APB1LFZ1_DBG_I2C3_Msk\n\n/********************  Bit definition for APB1HFZ1 register  ************/\n#define DBGMCU_APB1HFZ1_DBG_FDCAN_Pos     (8U)\n#define DBGMCU_APB1HFZ1_DBG_FDCAN_Msk     (0x1UL << DBGMCU_APB1HFZ1_DBG_FDCAN_Pos) /*!< 0x00000100 */\n#define DBGMCU_APB1HFZ1_DBG_FDCAN         DBGMCU_APB1HFZ1_DBG_FDCAN_Msk\n/********************  Bit definition for APB2FZ1 register  ************/\n#define DBGMCU_APB2FZ1_DBG_TIM1_Pos       (0U)\n#define DBGMCU_APB2FZ1_DBG_TIM1_Msk       (0x1UL << DBGMCU_APB2FZ1_DBG_TIM1_Pos) /*!< 0x00000001 */\n#define DBGMCU_APB2FZ1_DBG_TIM1           DBGMCU_APB2FZ1_DBG_TIM1_Msk\n#define DBGMCU_APB2FZ1_DBG_TIM8_Pos       (1U)\n#define DBGMCU_APB2FZ1_DBG_TIM8_Msk       (0x1UL << DBGMCU_APB2FZ1_DBG_TIM8_Pos) /*!< 0x00000002 */\n#define DBGMCU_APB2FZ1_DBG_TIM8           DBGMCU_APB2FZ1_DBG_TIM8_Msk\n#define DBGMCU_APB2FZ1_DBG_TIM15_Pos      (16U)\n#define DBGMCU_APB2FZ1_DBG_TIM15_Msk      (0x1UL << DBGMCU_APB2FZ1_DBG_TIM15_Pos) /*!< 0x00010000 */\n#define DBGMCU_APB2FZ1_DBG_TIM15          DBGMCU_APB2FZ1_DBG_TIM15_Msk\n#define DBGMCU_APB2FZ1_DBG_TIM16_Pos      (17U)\n#define DBGMCU_APB2FZ1_DBG_TIM16_Msk      (0x1UL << DBGMCU_APB2FZ1_DBG_TIM16_Pos) /*!< 0x00020000 */\n#define DBGMCU_APB2FZ1_DBG_TIM16          DBGMCU_APB2FZ1_DBG_TIM16_Msk\n#define DBGMCU_APB2FZ1_DBG_TIM17_Pos      (18U)\n#define DBGMCU_APB2FZ1_DBG_TIM17_Msk      (0x1UL << DBGMCU_APB2FZ1_DBG_TIM17_Pos) /*!< 0x00040000 */\n#define DBGMCU_APB2FZ1_DBG_TIM17          DBGMCU_APB2FZ1_DBG_TIM17_Msk\n#define DBGMCU_APB2FZ1_DBG_HRTIM_Pos      (29U)\n#define DBGMCU_APB2FZ1_DBG_HRTIM_Msk      (0x1UL << DBGMCU_APB2FZ1_DBG_HRTIM_Pos) /*!< 0x20000000 */\n#define DBGMCU_APB2FZ1_DBG_HRTIM          DBGMCU_APB2FZ1_DBG_HRTIM_Msk\n\n/********************  Bit definition for APB4FZ1 register  ************/\n#define DBGMCU_APB4FZ1_DBG_I2C4_Pos       (7U)\n#define DBGMCU_APB4FZ1_DBG_I2C4_Msk       (0x1UL << DBGMCU_APB4FZ1_DBG_I2C4_Pos) /*!< 0x00000080 */\n#define DBGMCU_APB4FZ1_DBG_I2C4           DBGMCU_APB4FZ1_DBG_I2C4_Msk\n#define DBGMCU_APB4FZ1_DBG_LPTIM2_Pos     (9U)\n#define DBGMCU_APB4FZ1_DBG_LPTIM2_Msk     (0x1UL << DBGMCU_APB4FZ1_DBG_LPTIM2_Pos) /*!< 0x00000200 */\n#define DBGMCU_APB4FZ1_DBG_LPTIM2         DBGMCU_APB4FZ1_DBG_LPTIM2_Msk\n#define DBGMCU_APB4FZ1_DBG_LPTIM3_Pos     (10U)\n#define DBGMCU_APB4FZ1_DBG_LPTIM3_Msk     (0x1UL << DBGMCU_APB4FZ1_DBG_LPTIM3_Pos) /*!< 0x00000400 */\n#define DBGMCU_APB4FZ1_DBG_LPTIM3         DBGMCU_APB4FZ1_DBG_LPTIM3_Msk\n#define DBGMCU_APB4FZ1_DBG_LPTIM4_Pos     (11U)\n#define DBGMCU_APB4FZ1_DBG_LPTIM4_Msk     (0x1UL << DBGMCU_APB4FZ1_DBG_LPTIM4_Pos) /*!< 0x00000800 */\n#define DBGMCU_APB4FZ1_DBG_LPTIM4         DBGMCU_APB4FZ1_DBG_LPTIM4_Msk\n#define DBGMCU_APB4FZ1_DBG_LPTIM5_Pos     (12U)\n#define DBGMCU_APB4FZ1_DBG_LPTIM5_Msk     (0x1UL << DBGMCU_APB4FZ1_DBG_LPTIM5_Pos) /*!< 0x00001000 */\n#define DBGMCU_APB4FZ1_DBG_LPTIM5         DBGMCU_APB4FZ1_DBG_LPTIM5_Msk\n#define DBGMCU_APB4FZ1_DBG_RTC_Pos        (16U)\n#define DBGMCU_APB4FZ1_DBG_RTC_Msk        (0x1UL << DBGMCU_APB4FZ1_DBG_RTC_Pos) /*!< 0x00010000 */\n#define DBGMCU_APB4FZ1_DBG_RTC            DBGMCU_APB4FZ1_DBG_RTC_Msk\n#define DBGMCU_APB4FZ1_DBG_IWDG1_Pos      (18U)\n#define DBGMCU_APB4FZ1_DBG_IWDG1_Msk      (0x1UL << DBGMCU_APB4FZ1_DBG_IWDG1_Pos) /*!< 0x00040000 */\n#define DBGMCU_APB4FZ1_DBG_IWDG1          DBGMCU_APB4FZ1_DBG_IWDG1_Msk\n/******************************************************************************/\n/*                                                                            */\n/*                        High Resolution Timer (HRTIM)                       */\n/*                                                                            */\n/******************************************************************************/\n/******************** Master Timer control register ***************************/\n#define HRTIM_MCR_CK_PSC_Pos          (0U)\n#define HRTIM_MCR_CK_PSC_Msk          (0x7UL << HRTIM_MCR_CK_PSC_Pos)          /*!< 0x00000007 */\n#define HRTIM_MCR_CK_PSC              HRTIM_MCR_CK_PSC_Msk                     /*!< Prescaler mask */\n#define HRTIM_MCR_CK_PSC_0            (0x1UL << HRTIM_MCR_CK_PSC_Pos)           /*!< 0x00000001 */\n#define HRTIM_MCR_CK_PSC_1            (0x2UL << HRTIM_MCR_CK_PSC_Pos)           /*!< 0x00000002 */\n#define HRTIM_MCR_CK_PSC_2            (0x4UL << HRTIM_MCR_CK_PSC_Pos)           /*!< 0x00000004 */\n\n#define HRTIM_MCR_CONT_Pos            (3U)\n#define HRTIM_MCR_CONT_Msk            (0x1UL << HRTIM_MCR_CONT_Pos)            /*!< 0x00000008 */\n#define HRTIM_MCR_CONT                HRTIM_MCR_CONT_Msk                       /*!< Continuous mode */\n#define HRTIM_MCR_RETRIG_Pos          (4U)\n#define HRTIM_MCR_RETRIG_Msk          (0x1UL << HRTIM_MCR_RETRIG_Pos)          /*!< 0x00000010 */\n#define HRTIM_MCR_RETRIG              HRTIM_MCR_RETRIG_Msk                     /*!< Rettrigreable mode */\n#define HRTIM_MCR_HALF_Pos            (5U)\n#define HRTIM_MCR_HALF_Msk            (0x1UL << HRTIM_MCR_HALF_Pos)            /*!< 0x00000020 */\n#define HRTIM_MCR_HALF                HRTIM_MCR_HALF_Msk                       /*!< Half mode */\n\n#define HRTIM_MCR_SYNC_IN_Pos         (8U)\n#define HRTIM_MCR_SYNC_IN_Msk         (0x3UL << HRTIM_MCR_SYNC_IN_Pos)         /*!< 0x00000300 */\n#define HRTIM_MCR_SYNC_IN             HRTIM_MCR_SYNC_IN_Msk                    /*!< Synchronization input master */\n#define HRTIM_MCR_SYNC_IN_0           (0x1UL << HRTIM_MCR_SYNC_IN_Pos)          /*!< 0x00000100 */\n#define HRTIM_MCR_SYNC_IN_1           (0x2UL << HRTIM_MCR_SYNC_IN_Pos)          /*!< 0x00000200 */\n#define HRTIM_MCR_SYNCRSTM_Pos        (10U)\n#define HRTIM_MCR_SYNCRSTM_Msk        (0x1UL << HRTIM_MCR_SYNCRSTM_Pos)        /*!< 0x00000400 */\n#define HRTIM_MCR_SYNCRSTM            HRTIM_MCR_SYNCRSTM_Msk                   /*!< Synchronization reset master */\n#define HRTIM_MCR_SYNCSTRTM_Pos       (11U)\n#define HRTIM_MCR_SYNCSTRTM_Msk       (0x1UL << HRTIM_MCR_SYNCSTRTM_Pos)       /*!< 0x00000800 */\n#define HRTIM_MCR_SYNCSTRTM           HRTIM_MCR_SYNCSTRTM_Msk                  /*!< Synchronization start master */\n#define HRTIM_MCR_SYNC_OUT_Pos        (12U)\n#define HRTIM_MCR_SYNC_OUT_Msk        (0x3UL << HRTIM_MCR_SYNC_OUT_Pos)        /*!< 0x00003000 */\n#define HRTIM_MCR_SYNC_OUT            HRTIM_MCR_SYNC_OUT_Msk                   /*!< Synchronization output master */\n#define HRTIM_MCR_SYNC_OUT_0          (0x1UL << HRTIM_MCR_SYNC_OUT_Pos)         /*!< 0x00001000 */\n#define HRTIM_MCR_SYNC_OUT_1          (0x2UL << HRTIM_MCR_SYNC_OUT_Pos)         /*!< 0x00002000 */\n#define HRTIM_MCR_SYNC_SRC_Pos        (14U)\n#define HRTIM_MCR_SYNC_SRC_Msk        (0x3UL << HRTIM_MCR_SYNC_SRC_Pos)        /*!< 0x0000C000 */\n#define HRTIM_MCR_SYNC_SRC            HRTIM_MCR_SYNC_SRC_Msk                   /*!< Synchronization source */\n#define HRTIM_MCR_SYNC_SRC_0          (0x1UL << HRTIM_MCR_SYNC_SRC_Pos)         /*!< 0x00004000 */\n#define HRTIM_MCR_SYNC_SRC_1          (0x2UL << HRTIM_MCR_SYNC_SRC_Pos)         /*!< 0x00008000 */\n\n#define HRTIM_MCR_MCEN_Pos            (16U)\n#define HRTIM_MCR_MCEN_Msk            (0x1UL << HRTIM_MCR_MCEN_Pos)            /*!< 0x00010000 */\n#define HRTIM_MCR_MCEN                HRTIM_MCR_MCEN_Msk                       /*!< Master counter enable */\n#define HRTIM_MCR_TACEN_Pos           (17U)\n#define HRTIM_MCR_TACEN_Msk           (0x1UL << HRTIM_MCR_TACEN_Pos)           /*!< 0x00020000 */\n#define HRTIM_MCR_TACEN               HRTIM_MCR_TACEN_Msk                      /*!< Timer A counter enable */\n#define HRTIM_MCR_TBCEN_Pos           (18U)\n#define HRTIM_MCR_TBCEN_Msk           (0x1UL << HRTIM_MCR_TBCEN_Pos)           /*!< 0x00040000 */\n#define HRTIM_MCR_TBCEN               HRTIM_MCR_TBCEN_Msk                      /*!< Timer B counter enable */\n#define HRTIM_MCR_TCCEN_Pos           (19U)\n#define HRTIM_MCR_TCCEN_Msk           (0x1UL << HRTIM_MCR_TCCEN_Pos)           /*!< 0x00080000 */\n#define HRTIM_MCR_TCCEN               HRTIM_MCR_TCCEN_Msk                      /*!< Timer C counter enable */\n#define HRTIM_MCR_TDCEN_Pos           (20U)\n#define HRTIM_MCR_TDCEN_Msk           (0x1UL << HRTIM_MCR_TDCEN_Pos)           /*!< 0x00100000 */\n#define HRTIM_MCR_TDCEN               HRTIM_MCR_TDCEN_Msk                      /*!< Timer D counter enable */\n#define HRTIM_MCR_TECEN_Pos           (21U)\n#define HRTIM_MCR_TECEN_Msk           (0x1UL << HRTIM_MCR_TECEN_Pos)           /*!< 0x00200000 */\n#define HRTIM_MCR_TECEN               HRTIM_MCR_TECEN_Msk                      /*!< Timer E counter enable */\n\n#define HRTIM_MCR_DACSYNC_Pos         (25U)\n#define HRTIM_MCR_DACSYNC_Msk         (0x3UL << HRTIM_MCR_DACSYNC_Pos)         /*!< 0x06000000 */\n#define HRTIM_MCR_DACSYNC             HRTIM_MCR_DACSYNC_Msk                    /*!< DAC sychronization mask */\n#define HRTIM_MCR_DACSYNC_0           (0x1UL << HRTIM_MCR_DACSYNC_Pos)          /*!< 0x02000000 */\n#define HRTIM_MCR_DACSYNC_1           (0x2UL << HRTIM_MCR_DACSYNC_Pos)          /*!< 0x04000000 */\n\n#define HRTIM_MCR_PREEN_Pos           (27U)\n#define HRTIM_MCR_PREEN_Msk           (0x1UL << HRTIM_MCR_PREEN_Pos)           /*!< 0x08000000 */\n#define HRTIM_MCR_PREEN               HRTIM_MCR_PREEN_Msk                      /*!< Master preload enable */\n#define HRTIM_MCR_MREPU_Pos           (29U)\n#define HRTIM_MCR_MREPU_Msk           (0x1UL << HRTIM_MCR_MREPU_Pos)           /*!< 0x20000000 */\n#define HRTIM_MCR_MREPU               HRTIM_MCR_MREPU_Msk                      /*!< Master repetition update */\n\n#define HRTIM_MCR_BRSTDMA_Pos         (30U)\n#define HRTIM_MCR_BRSTDMA_Msk         (0x3UL << HRTIM_MCR_BRSTDMA_Pos)         /*!< 0xC0000000 */\n#define HRTIM_MCR_BRSTDMA             HRTIM_MCR_BRSTDMA_Msk                    /*!< Burst DMA update */\n#define HRTIM_MCR_BRSTDMA_0           (0x1UL << HRTIM_MCR_BRSTDMA_Pos)          /*!< 0x40000000 */\n#define HRTIM_MCR_BRSTDMA_1           (0x2UL << HRTIM_MCR_BRSTDMA_Pos)          /*!< 0x80000000 */\n\n/******************** Master Timer Interrupt status register ******************/\n#define HRTIM_MISR_MCMP1_Pos          (0U)\n#define HRTIM_MISR_MCMP1_Msk          (0x1UL << HRTIM_MISR_MCMP1_Pos)          /*!< 0x00000001 */\n#define HRTIM_MISR_MCMP1              HRTIM_MISR_MCMP1_Msk                     /*!< Master compare 1 interrupt flag */\n#define HRTIM_MISR_MCMP2_Pos          (1U)\n#define HRTIM_MISR_MCMP2_Msk          (0x1UL << HRTIM_MISR_MCMP2_Pos)          /*!< 0x00000002 */\n#define HRTIM_MISR_MCMP2              HRTIM_MISR_MCMP2_Msk                     /*!< Master compare 2 interrupt flag */\n#define HRTIM_MISR_MCMP3_Pos          (2U)\n#define HRTIM_MISR_MCMP3_Msk          (0x1UL << HRTIM_MISR_MCMP3_Pos)          /*!< 0x00000004 */\n#define HRTIM_MISR_MCMP3              HRTIM_MISR_MCMP3_Msk                     /*!< Master compare 3 interrupt flag */\n#define HRTIM_MISR_MCMP4_Pos          (3U)\n#define HRTIM_MISR_MCMP4_Msk          (0x1UL << HRTIM_MISR_MCMP4_Pos)          /*!< 0x00000008 */\n#define HRTIM_MISR_MCMP4              HRTIM_MISR_MCMP4_Msk                     /*!< Master compare 4 interrupt flag */\n#define HRTIM_MISR_MREP_Pos           (4U)\n#define HRTIM_MISR_MREP_Msk           (0x1UL << HRTIM_MISR_MREP_Pos)           /*!< 0x00000010 */\n#define HRTIM_MISR_MREP               HRTIM_MISR_MREP_Msk                      /*!< Master Repetition interrupt flag */\n#define HRTIM_MISR_SYNC_Pos           (5U)\n#define HRTIM_MISR_SYNC_Msk           (0x1UL << HRTIM_MISR_SYNC_Pos)           /*!< 0x00000020 */\n#define HRTIM_MISR_SYNC               HRTIM_MISR_SYNC_Msk                      /*!< Synchronization input interrupt flag */\n#define HRTIM_MISR_MUPD_Pos           (6U)\n#define HRTIM_MISR_MUPD_Msk           (0x1UL << HRTIM_MISR_MUPD_Pos)           /*!< 0x00000040 */\n#define HRTIM_MISR_MUPD               HRTIM_MISR_MUPD_Msk                      /*!< Master update interrupt flag */\n\n/******************** Master Timer Interrupt clear register *******************/\n#define HRTIM_MICR_MCMP1_Pos          (0U)\n#define HRTIM_MICR_MCMP1_Msk          (0x1UL << HRTIM_MICR_MCMP1_Pos)          /*!< 0x00000001 */\n#define HRTIM_MICR_MCMP1              HRTIM_MICR_MCMP1_Msk                     /*!< Master compare 1 interrupt flag clear */\n#define HRTIM_MICR_MCMP2_Pos          (1U)\n#define HRTIM_MICR_MCMP2_Msk          (0x1UL << HRTIM_MICR_MCMP2_Pos)          /*!< 0x00000002 */\n#define HRTIM_MICR_MCMP2              HRTIM_MICR_MCMP2_Msk                     /*!< Master compare 2 interrupt flag clear */\n#define HRTIM_MICR_MCMP3_Pos          (2U)\n#define HRTIM_MICR_MCMP3_Msk          (0x1UL << HRTIM_MICR_MCMP3_Pos)          /*!< 0x00000004 */\n#define HRTIM_MICR_MCMP3              HRTIM_MICR_MCMP3_Msk                     /*!< Master compare 3 interrupt flag clear */\n#define HRTIM_MICR_MCMP4_Pos          (3U)\n#define HRTIM_MICR_MCMP4_Msk          (0x1UL << HRTIM_MICR_MCMP4_Pos)          /*!< 0x00000008 */\n#define HRTIM_MICR_MCMP4              HRTIM_MICR_MCMP4_Msk                     /*!< Master compare 4 interrupt flag clear */\n#define HRTIM_MICR_MREP_Pos           (4U)\n#define HRTIM_MICR_MREP_Msk           (0x1UL << HRTIM_MICR_MREP_Pos)           /*!< 0x00000010 */\n#define HRTIM_MICR_MREP               HRTIM_MICR_MREP_Msk                      /*!< Master Repetition interrupt flag clear */\n#define HRTIM_MICR_SYNC_Pos           (5U)\n#define HRTIM_MICR_SYNC_Msk           (0x1UL << HRTIM_MICR_SYNC_Pos)           /*!< 0x00000020 */\n#define HRTIM_MICR_SYNC               HRTIM_MICR_SYNC_Msk                      /*!< Synchronization input interrupt flag clear */\n#define HRTIM_MICR_MUPD_Pos           (6U)\n#define HRTIM_MICR_MUPD_Msk           (0x1UL << HRTIM_MICR_MUPD_Pos)           /*!< 0x00000040 */\n#define HRTIM_MICR_MUPD               HRTIM_MICR_MUPD_Msk                      /*!< Master update interrupt flag clear */\n\n/******************** Master Timer DMA/Interrupt enable register **************/\n#define HRTIM_MDIER_MCMP1IE_Pos       (0U)\n#define HRTIM_MDIER_MCMP1IE_Msk       (0x1UL << HRTIM_MDIER_MCMP1IE_Pos)       /*!< 0x00000001 */\n#define HRTIM_MDIER_MCMP1IE           HRTIM_MDIER_MCMP1IE_Msk                  /*!< Master compare 1 interrupt enable */\n#define HRTIM_MDIER_MCMP2IE_Pos       (1U)\n#define HRTIM_MDIER_MCMP2IE_Msk       (0x1UL << HRTIM_MDIER_MCMP2IE_Pos)       /*!< 0x00000002 */\n#define HRTIM_MDIER_MCMP2IE           HRTIM_MDIER_MCMP2IE_Msk                  /*!< Master compare 2 interrupt enable */\n#define HRTIM_MDIER_MCMP3IE_Pos       (2U)\n#define HRTIM_MDIER_MCMP3IE_Msk       (0x1UL << HRTIM_MDIER_MCMP3IE_Pos)       /*!< 0x00000004 */\n#define HRTIM_MDIER_MCMP3IE           HRTIM_MDIER_MCMP3IE_Msk                  /*!< Master compare 3 interrupt enable */\n#define HRTIM_MDIER_MCMP4IE_Pos       (3U)\n#define HRTIM_MDIER_MCMP4IE_Msk       (0x1UL << HRTIM_MDIER_MCMP4IE_Pos)       /*!< 0x00000008 */\n#define HRTIM_MDIER_MCMP4IE           HRTIM_MDIER_MCMP4IE_Msk                  /*!< Master compare 4 interrupt enable */\n#define HRTIM_MDIER_MREPIE_Pos        (4U)\n#define HRTIM_MDIER_MREPIE_Msk        (0x1UL << HRTIM_MDIER_MREPIE_Pos)        /*!< 0x00000010 */\n#define HRTIM_MDIER_MREPIE            HRTIM_MDIER_MREPIE_Msk                   /*!< Master Repetition interrupt enable */\n#define HRTIM_MDIER_SYNCIE_Pos        (5U)\n#define HRTIM_MDIER_SYNCIE_Msk        (0x1UL << HRTIM_MDIER_SYNCIE_Pos)        /*!< 0x00000020 */\n#define HRTIM_MDIER_SYNCIE            HRTIM_MDIER_SYNCIE_Msk                   /*!< Synchronization input interrupt enable */\n#define HRTIM_MDIER_MUPDIE_Pos        (6U)\n#define HRTIM_MDIER_MUPDIE_Msk        (0x1UL << HRTIM_MDIER_MUPDIE_Pos)        /*!< 0x00000040 */\n#define HRTIM_MDIER_MUPDIE            HRTIM_MDIER_MUPDIE_Msk                   /*!< Master update interrupt enable */\n\n#define HRTIM_MDIER_MCMP1DE_Pos       (16U)\n#define HRTIM_MDIER_MCMP1DE_Msk       (0x1UL << HRTIM_MDIER_MCMP1DE_Pos)       /*!< 0x00010000 */\n#define HRTIM_MDIER_MCMP1DE           HRTIM_MDIER_MCMP1DE_Msk                  /*!< Master compare 1 DMA enable */\n#define HRTIM_MDIER_MCMP2DE_Pos       (17U)\n#define HRTIM_MDIER_MCMP2DE_Msk       (0x1UL << HRTIM_MDIER_MCMP2DE_Pos)       /*!< 0x00020000 */\n#define HRTIM_MDIER_MCMP2DE           HRTIM_MDIER_MCMP2DE_Msk                  /*!< Master compare 2 DMA enable */\n#define HRTIM_MDIER_MCMP3DE_Pos       (18U)\n#define HRTIM_MDIER_MCMP3DE_Msk       (0x1UL << HRTIM_MDIER_MCMP3DE_Pos)       /*!< 0x00040000 */\n#define HRTIM_MDIER_MCMP3DE           HRTIM_MDIER_MCMP3DE_Msk                  /*!< Master compare 3 DMA enable */\n#define HRTIM_MDIER_MCMP4DE_Pos       (19U)\n#define HRTIM_MDIER_MCMP4DE_Msk       (0x1UL << HRTIM_MDIER_MCMP4DE_Pos)       /*!< 0x00080000 */\n#define HRTIM_MDIER_MCMP4DE           HRTIM_MDIER_MCMP4DE_Msk                  /*!< Master compare 4 DMA enable */\n#define HRTIM_MDIER_MREPDE_Pos        (20U)\n#define HRTIM_MDIER_MREPDE_Msk        (0x1UL << HRTIM_MDIER_MREPDE_Pos)        /*!< 0x00100000 */\n#define HRTIM_MDIER_MREPDE            HRTIM_MDIER_MREPDE_Msk                   /*!< Master Repetition DMA enable */\n#define HRTIM_MDIER_SYNCDE_Pos        (21U)\n#define HRTIM_MDIER_SYNCDE_Msk        (0x1UL << HRTIM_MDIER_SYNCDE_Pos)        /*!< 0x00200000 */\n#define HRTIM_MDIER_SYNCDE            HRTIM_MDIER_SYNCDE_Msk                   /*!< Synchronization input DMA enable */\n#define HRTIM_MDIER_MUPDDE_Pos        (22U)\n#define HRTIM_MDIER_MUPDDE_Msk        (0x1UL << HRTIM_MDIER_MUPDDE_Pos)        /*!< 0x00400000 */\n#define HRTIM_MDIER_MUPDDE            HRTIM_MDIER_MUPDDE_Msk                   /*!< Master update DMA enable */\n\n/*******************  Bit definition for HRTIM_MCNTR register  ****************/\n#define HRTIM_MCNTR_MCNTR_Pos         (0U)\n#define HRTIM_MCNTR_MCNTR_Msk         (0xFFFFUL << HRTIM_MCNTR_MCNTR_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_MCNTR_MCNTR             HRTIM_MCNTR_MCNTR_Msk                    /*!<Counter Value */\n\n/*******************  Bit definition for HRTIM_MPER register  *****************/\n#define HRTIM_MPER_MPER_Pos           (0U)\n#define HRTIM_MPER_MPER_Msk           (0xFFFFUL << HRTIM_MPER_MPER_Pos)        /*!< 0x0000FFFF */\n#define HRTIM_MPER_MPER               HRTIM_MPER_MPER_Msk                      /*!< Period Value */\n\n/*******************  Bit definition for HRTIM_MREP register  *****************/\n#define HRTIM_MREP_MREP_Pos           (0U)\n#define HRTIM_MREP_MREP_Msk           (0xFFUL << HRTIM_MREP_MREP_Pos)          /*!< 0x000000FF */\n#define HRTIM_MREP_MREP               HRTIM_MREP_MREP_Msk                      /*!<Repetition Value */\n\n/*******************  Bit definition for HRTIM_MCMP1R register  *****************/\n#define HRTIM_MCMP1R_MCMP1R_Pos       (0U)\n#define HRTIM_MCMP1R_MCMP1R_Msk       (0xFFFFUL << HRTIM_MCMP1R_MCMP1R_Pos)    /*!< 0x0000FFFF */\n#define HRTIM_MCMP1R_MCMP1R           HRTIM_MCMP1R_MCMP1R_Msk                  /*!<Compare Value */\n\n/*******************  Bit definition for HRTIM_MCMP2R register  *****************/\n#define HRTIM_MCMP1R_MCMP2R_Pos       (0U)\n#define HRTIM_MCMP1R_MCMP2R_Msk       (0xFFFFUL << HRTIM_MCMP1R_MCMP2R_Pos)    /*!< 0x0000FFFF */\n#define HRTIM_MCMP1R_MCMP2R           HRTIM_MCMP1R_MCMP2R_Msk                  /*!<Compare Value */\n\n/*******************  Bit definition for HRTIM_MCMP3R register  *****************/\n#define HRTIM_MCMP1R_MCMP3R_Pos       (0U)\n#define HRTIM_MCMP1R_MCMP3R_Msk       (0xFFFFUL << HRTIM_MCMP1R_MCMP3R_Pos)    /*!< 0x0000FFFF */\n#define HRTIM_MCMP1R_MCMP3R           HRTIM_MCMP1R_MCMP3R_Msk                  /*!<Compare Value */\n\n/*******************  Bit definition for HRTIM_MCMP4R register  *****************/\n#define HRTIM_MCMP1R_MCMP4R_Pos       (0U)\n#define HRTIM_MCMP1R_MCMP4R_Msk       (0xFFFFUL << HRTIM_MCMP1R_MCMP4R_Pos)    /*!< 0x0000FFFF */\n#define HRTIM_MCMP1R_MCMP4R           HRTIM_MCMP1R_MCMP4R_Msk                  /*!<Compare Value */\n\n/******************** Slave control register **********************************/\n#define HRTIM_TIMCR_CK_PSC_Pos        (0U)\n#define HRTIM_TIMCR_CK_PSC_Msk        (0x7UL << HRTIM_TIMCR_CK_PSC_Pos)        /*!< 0x00000007 */\n#define HRTIM_TIMCR_CK_PSC            HRTIM_TIMCR_CK_PSC_Msk                   /*!< Slave prescaler mask*/\n#define HRTIM_TIMCR_CK_PSC_0          (0x1UL << HRTIM_TIMCR_CK_PSC_Pos)         /*!< 0x00000001 */\n#define HRTIM_TIMCR_CK_PSC_1          (0x2UL << HRTIM_TIMCR_CK_PSC_Pos)         /*!< 0x00000002 */\n#define HRTIM_TIMCR_CK_PSC_2          (0x4UL << HRTIM_TIMCR_CK_PSC_Pos)         /*!< 0x00000004 */\n\n#define HRTIM_TIMCR_CONT_Pos          (3U)\n#define HRTIM_TIMCR_CONT_Msk          (0x1UL << HRTIM_TIMCR_CONT_Pos)          /*!< 0x00000008 */\n#define HRTIM_TIMCR_CONT              HRTIM_TIMCR_CONT_Msk                     /*!< Slave continuous mode */\n#define HRTIM_TIMCR_RETRIG_Pos        (4U)\n#define HRTIM_TIMCR_RETRIG_Msk        (0x1UL << HRTIM_TIMCR_RETRIG_Pos)        /*!< 0x00000010 */\n#define HRTIM_TIMCR_RETRIG            HRTIM_TIMCR_RETRIG_Msk                   /*!< Slave Retrigreable mode */\n#define HRTIM_TIMCR_HALF_Pos          (5U)\n#define HRTIM_TIMCR_HALF_Msk          (0x1UL << HRTIM_TIMCR_HALF_Pos)          /*!< 0x00000020 */\n#define HRTIM_TIMCR_HALF              HRTIM_TIMCR_HALF_Msk                     /*!< Slave Half mode */\n#define HRTIM_TIMCR_PSHPLL_Pos        (6U)\n#define HRTIM_TIMCR_PSHPLL_Msk        (0x1UL << HRTIM_TIMCR_PSHPLL_Pos)        /*!< 0x00000040 */\n#define HRTIM_TIMCR_PSHPLL            HRTIM_TIMCR_PSHPLL_Msk                   /*!< Slave push-pull mode */\n\n#define HRTIM_TIMCR_SYNCRST_Pos       (10U)\n#define HRTIM_TIMCR_SYNCRST_Msk       (0x1UL << HRTIM_TIMCR_SYNCRST_Pos)       /*!< 0x00000400 */\n#define HRTIM_TIMCR_SYNCRST           HRTIM_TIMCR_SYNCRST_Msk                  /*!< Slave synchronization resets */\n#define HRTIM_TIMCR_SYNCSTRT_Pos      (11U)\n#define HRTIM_TIMCR_SYNCSTRT_Msk      (0x1UL << HRTIM_TIMCR_SYNCSTRT_Pos)      /*!< 0x00000800 */\n#define HRTIM_TIMCR_SYNCSTRT          HRTIM_TIMCR_SYNCSTRT_Msk                 /*!< Slave synchronization starts */\n\n#define HRTIM_TIMCR_DELCMP2_Pos       (12U)\n#define HRTIM_TIMCR_DELCMP2_Msk       (0x3UL << HRTIM_TIMCR_DELCMP2_Pos)       /*!< 0x00003000 */\n#define HRTIM_TIMCR_DELCMP2           HRTIM_TIMCR_DELCMP2_Msk                  /*!< Slave delayed compartor 2 mode mask */\n#define HRTIM_TIMCR_DELCMP2_0         (0x1UL << HRTIM_TIMCR_DELCMP2_Pos)        /*!< 0x00001000 */\n#define HRTIM_TIMCR_DELCMP2_1         (0x2UL << HRTIM_TIMCR_DELCMP2_Pos)        /*!< 0x00002000 */\n#define HRTIM_TIMCR_DELCMP4_Pos       (14U)\n#define HRTIM_TIMCR_DELCMP4_Msk       (0x3UL << HRTIM_TIMCR_DELCMP4_Pos)       /*!< 0x0000C000 */\n#define HRTIM_TIMCR_DELCMP4           HRTIM_TIMCR_DELCMP4_Msk                  /*!< Slave delayed compartor 4 mode mask */\n#define HRTIM_TIMCR_DELCMP4_0         (0x1UL << HRTIM_TIMCR_DELCMP4_Pos)        /*!< 0x00004000 */\n#define HRTIM_TIMCR_DELCMP4_1         (0x2UL << HRTIM_TIMCR_DELCMP4_Pos)        /*!< 0x00008000 */\n\n#define HRTIM_TIMCR_TREPU_Pos         (17U)\n#define HRTIM_TIMCR_TREPU_Msk         (0x1UL << HRTIM_TIMCR_TREPU_Pos)         /*!< 0x00020000 */\n#define HRTIM_TIMCR_TREPU             HRTIM_TIMCR_TREPU_Msk                    /*!< Slave repetition update */\n#define HRTIM_TIMCR_TRSTU_Pos         (18U)\n#define HRTIM_TIMCR_TRSTU_Msk         (0x1UL << HRTIM_TIMCR_TRSTU_Pos)         /*!< 0x00040000 */\n#define HRTIM_TIMCR_TRSTU             HRTIM_TIMCR_TRSTU_Msk                    /*!< Slave reset update */\n#define HRTIM_TIMCR_TAU_Pos           (19U)\n#define HRTIM_TIMCR_TAU_Msk           (0x1UL << HRTIM_TIMCR_TAU_Pos)           /*!< 0x00080000 */\n#define HRTIM_TIMCR_TAU               HRTIM_TIMCR_TAU_Msk                      /*!< Slave Timer A update reserved for TIM A */\n#define HRTIM_TIMCR_TBU_Pos           (20U)\n#define HRTIM_TIMCR_TBU_Msk           (0x1UL << HRTIM_TIMCR_TBU_Pos)           /*!< 0x00100000 */\n#define HRTIM_TIMCR_TBU               HRTIM_TIMCR_TBU_Msk                      /*!< Slave Timer B update reserved for TIM B */\n#define HRTIM_TIMCR_TCU_Pos           (21U)\n#define HRTIM_TIMCR_TCU_Msk           (0x1UL << HRTIM_TIMCR_TCU_Pos)           /*!< 0x00200000 */\n#define HRTIM_TIMCR_TCU               HRTIM_TIMCR_TCU_Msk                      /*!< Slave Timer C update reserved for TIM C */\n#define HRTIM_TIMCR_TDU_Pos           (22U)\n#define HRTIM_TIMCR_TDU_Msk           (0x1UL << HRTIM_TIMCR_TDU_Pos)           /*!< 0x00400000 */\n#define HRTIM_TIMCR_TDU               HRTIM_TIMCR_TDU_Msk                      /*!< Slave Timer D update reserved for TIM D */\n#define HRTIM_TIMCR_TEU_Pos           (23U)\n#define HRTIM_TIMCR_TEU_Msk           (0x1UL << HRTIM_TIMCR_TEU_Pos)           /*!< 0x00800000 */\n#define HRTIM_TIMCR_TEU               HRTIM_TIMCR_TEU_Msk                      /*!< Slave Timer E update reserved for TIM E */\n#define HRTIM_TIMCR_MSTU_Pos          (24U)\n#define HRTIM_TIMCR_MSTU_Msk          (0x1UL << HRTIM_TIMCR_MSTU_Pos)          /*!< 0x01000000 */\n#define HRTIM_TIMCR_MSTU              HRTIM_TIMCR_MSTU_Msk                     /*!< Master Update */\n\n#define HRTIM_TIMCR_DACSYNC_Pos       (25U)\n#define HRTIM_TIMCR_DACSYNC_Msk       (0x3UL << HRTIM_TIMCR_DACSYNC_Pos)       /*!< 0x06000000 */\n#define HRTIM_TIMCR_DACSYNC           HRTIM_TIMCR_DACSYNC_Msk                  /*!< DAC sychronization mask */\n#define HRTIM_TIMCR_DACSYNC_0         (0x1UL << HRTIM_TIMCR_DACSYNC_Pos)        /*!< 0x02000000 */\n#define HRTIM_TIMCR_DACSYNC_1         (0x2UL << HRTIM_TIMCR_DACSYNC_Pos)        /*!< 0x04000000 */\n#define HRTIM_TIMCR_PREEN_Pos         (27U)\n#define HRTIM_TIMCR_PREEN_Msk         (0x1UL << HRTIM_TIMCR_PREEN_Pos)         /*!< 0x08000000 */\n#define HRTIM_TIMCR_PREEN             HRTIM_TIMCR_PREEN_Msk                    /*!< Slave preload enable */\n\n#define HRTIM_TIMCR_UPDGAT_Pos        (28U)\n#define HRTIM_TIMCR_UPDGAT_Msk        (0xFUL << HRTIM_TIMCR_UPDGAT_Pos)        /*!< 0xF0000000 */\n#define HRTIM_TIMCR_UPDGAT            HRTIM_TIMCR_UPDGAT_Msk                   /*!< Slave update gating mask */\n#define HRTIM_TIMCR_UPDGAT_0          (0x1UL << HRTIM_TIMCR_UPDGAT_Pos)         /*!< 0x10000000 */\n#define HRTIM_TIMCR_UPDGAT_1          (0x2UL << HRTIM_TIMCR_UPDGAT_Pos)         /*!< 0x20000000 */\n#define HRTIM_TIMCR_UPDGAT_2          (0x4UL << HRTIM_TIMCR_UPDGAT_Pos)         /*!< 0x40000000 */\n#define HRTIM_TIMCR_UPDGAT_3          (0x8UL << HRTIM_TIMCR_UPDGAT_Pos)         /*!< 0x80000000 */\n\n/******************** Slave Interrupt status register **************************/\n#define HRTIM_TIMISR_CMP1_Pos         (0U)\n#define HRTIM_TIMISR_CMP1_Msk         (0x1UL << HRTIM_TIMISR_CMP1_Pos)         /*!< 0x00000001 */\n#define HRTIM_TIMISR_CMP1             HRTIM_TIMISR_CMP1_Msk                    /*!< Slave compare 1 interrupt flag */\n#define HRTIM_TIMISR_CMP2_Pos         (1U)\n#define HRTIM_TIMISR_CMP2_Msk         (0x1UL << HRTIM_TIMISR_CMP2_Pos)         /*!< 0x00000002 */\n#define HRTIM_TIMISR_CMP2             HRTIM_TIMISR_CMP2_Msk                    /*!< Slave compare 2 interrupt flag */\n#define HRTIM_TIMISR_CMP3_Pos         (2U)\n#define HRTIM_TIMISR_CMP3_Msk         (0x1UL << HRTIM_TIMISR_CMP3_Pos)         /*!< 0x00000004 */\n#define HRTIM_TIMISR_CMP3             HRTIM_TIMISR_CMP3_Msk                    /*!< Slave compare 3 interrupt flag */\n#define HRTIM_TIMISR_CMP4_Pos         (3U)\n#define HRTIM_TIMISR_CMP4_Msk         (0x1UL << HRTIM_TIMISR_CMP4_Pos)         /*!< 0x00000008 */\n#define HRTIM_TIMISR_CMP4             HRTIM_TIMISR_CMP4_Msk                    /*!< Slave compare 4 interrupt flag */\n#define HRTIM_TIMISR_REP_Pos          (4U)\n#define HRTIM_TIMISR_REP_Msk          (0x1UL << HRTIM_TIMISR_REP_Pos)          /*!< 0x00000010 */\n#define HRTIM_TIMISR_REP              HRTIM_TIMISR_REP_Msk                     /*!< Slave repetition interrupt flag */\n#define HRTIM_TIMISR_UPD_Pos          (6U)\n#define HRTIM_TIMISR_UPD_Msk          (0x1UL << HRTIM_TIMISR_UPD_Pos)          /*!< 0x00000040 */\n#define HRTIM_TIMISR_UPD              HRTIM_TIMISR_UPD_Msk                     /*!< Slave update interrupt flag */\n#define HRTIM_TIMISR_CPT1_Pos         (7U)\n#define HRTIM_TIMISR_CPT1_Msk         (0x1UL << HRTIM_TIMISR_CPT1_Pos)         /*!< 0x00000080 */\n#define HRTIM_TIMISR_CPT1             HRTIM_TIMISR_CPT1_Msk                    /*!< Slave capture 1 interrupt flag */\n#define HRTIM_TIMISR_CPT2_Pos         (8U)\n#define HRTIM_TIMISR_CPT2_Msk         (0x1UL << HRTIM_TIMISR_CPT2_Pos)         /*!< 0x00000100 */\n#define HRTIM_TIMISR_CPT2             HRTIM_TIMISR_CPT2_Msk                    /*!< Slave capture 2 interrupt flag */\n#define HRTIM_TIMISR_SET1_Pos         (9U)\n#define HRTIM_TIMISR_SET1_Msk         (0x1UL << HRTIM_TIMISR_SET1_Pos)         /*!< 0x00000200 */\n#define HRTIM_TIMISR_SET1             HRTIM_TIMISR_SET1_Msk                    /*!< Slave output 1 set interrupt flag */\n#define HRTIM_TIMISR_RST1_Pos         (10U)\n#define HRTIM_TIMISR_RST1_Msk         (0x1UL << HRTIM_TIMISR_RST1_Pos)         /*!< 0x00000400 */\n#define HRTIM_TIMISR_RST1             HRTIM_TIMISR_RST1_Msk                    /*!< Slave output 1 reset interrupt flag */\n#define HRTIM_TIMISR_SET2_Pos         (11U)\n#define HRTIM_TIMISR_SET2_Msk         (0x1UL << HRTIM_TIMISR_SET2_Pos)         /*!< 0x00000800 */\n#define HRTIM_TIMISR_SET2             HRTIM_TIMISR_SET2_Msk                    /*!< Slave output 2 set interrupt flag */\n#define HRTIM_TIMISR_RST2_Pos         (12U)\n#define HRTIM_TIMISR_RST2_Msk         (0x1UL << HRTIM_TIMISR_RST2_Pos)         /*!< 0x00001000 */\n#define HRTIM_TIMISR_RST2             HRTIM_TIMISR_RST2_Msk                    /*!< Slave output 2 reset interrupt flag */\n#define HRTIM_TIMISR_RST_Pos          (13U)\n#define HRTIM_TIMISR_RST_Msk          (0x1UL << HRTIM_TIMISR_RST_Pos)          /*!< 0x00002000 */\n#define HRTIM_TIMISR_RST              HRTIM_TIMISR_RST_Msk                     /*!< Slave reset interrupt flag */\n#define HRTIM_TIMISR_DLYPRT_Pos       (14U)\n#define HRTIM_TIMISR_DLYPRT_Msk       (0x1UL << HRTIM_TIMISR_DLYPRT_Pos)       /*!< 0x00004000 */\n#define HRTIM_TIMISR_DLYPRT           HRTIM_TIMISR_DLYPRT_Msk                  /*!< Slave output 1 delay protection interrupt flag */\n#define HRTIM_TIMISR_CPPSTAT_Pos      (16U)\n#define HRTIM_TIMISR_CPPSTAT_Msk      (0x1UL << HRTIM_TIMISR_CPPSTAT_Pos)      /*!< 0x00010000 */\n#define HRTIM_TIMISR_CPPSTAT          HRTIM_TIMISR_CPPSTAT_Msk                 /*!< Slave current push-pull flag */\n#define HRTIM_TIMISR_IPPSTAT_Pos      (17U)\n#define HRTIM_TIMISR_IPPSTAT_Msk      (0x1UL << HRTIM_TIMISR_IPPSTAT_Pos)      /*!< 0x00020000 */\n#define HRTIM_TIMISR_IPPSTAT          HRTIM_TIMISR_IPPSTAT_Msk                 /*!< Slave idle push-pull flag */\n#define HRTIM_TIMISR_O1STAT_Pos       (18U)\n#define HRTIM_TIMISR_O1STAT_Msk       (0x1UL << HRTIM_TIMISR_O1STAT_Pos)       /*!< 0x00040000 */\n#define HRTIM_TIMISR_O1STAT           HRTIM_TIMISR_O1STAT_Msk                  /*!< Slave output 1 state flag */\n#define HRTIM_TIMISR_O2STAT_Pos       (19U)\n#define HRTIM_TIMISR_O2STAT_Msk       (0x1UL << HRTIM_TIMISR_O2STAT_Pos)       /*!< 0x00080000 */\n#define HRTIM_TIMISR_O2STAT           HRTIM_TIMISR_O2STAT_Msk                  /*!< Slave output 2 state flag */\n#define HRTIM_TIMISR_O1CPY_Pos        (20U)\n#define HRTIM_TIMISR_O1CPY_Msk        (0x1UL << HRTIM_TIMISR_O1CPY_Pos)        /*!< 0x00100000 */\n#define HRTIM_TIMISR_O1CPY            HRTIM_TIMISR_O1CPY_Msk                   /*!< Slave output 1 copy flag */\n#define HRTIM_TIMISR_O2CPY_Pos        (21U)\n#define HRTIM_TIMISR_O2CPY_Msk        (0x1UL << HRTIM_TIMISR_O2CPY_Pos)        /*!< 0x00200000 */\n#define HRTIM_TIMISR_O2CPY            HRTIM_TIMISR_O2CPY_Msk                   /*!< Slave output 2 copy flag */\n\n/******************** Slave Interrupt clear register **************************/\n#define HRTIM_TIMICR_CMP1C_Pos        (0U)\n#define HRTIM_TIMICR_CMP1C_Msk        (0x1UL << HRTIM_TIMICR_CMP1C_Pos)        /*!< 0x00000001 */\n#define HRTIM_TIMICR_CMP1C            HRTIM_TIMICR_CMP1C_Msk                   /*!< Slave compare 1 clear flag */\n#define HRTIM_TIMICR_CMP2C_Pos        (1U)\n#define HRTIM_TIMICR_CMP2C_Msk        (0x1UL << HRTIM_TIMICR_CMP2C_Pos)        /*!< 0x00000002 */\n#define HRTIM_TIMICR_CMP2C            HRTIM_TIMICR_CMP2C_Msk                   /*!< Slave compare 2 clear flag */\n#define HRTIM_TIMICR_CMP3C_Pos        (2U)\n#define HRTIM_TIMICR_CMP3C_Msk        (0x1UL << HRTIM_TIMICR_CMP3C_Pos)        /*!< 0x00000004 */\n#define HRTIM_TIMICR_CMP3C            HRTIM_TIMICR_CMP3C_Msk                   /*!< Slave compare 3 clear flag */\n#define HRTIM_TIMICR_CMP4C_Pos        (3U)\n#define HRTIM_TIMICR_CMP4C_Msk        (0x1UL << HRTIM_TIMICR_CMP4C_Pos)        /*!< 0x00000008 */\n#define HRTIM_TIMICR_CMP4C            HRTIM_TIMICR_CMP4C_Msk                   /*!< Slave compare 4 clear flag */\n#define HRTIM_TIMICR_REPC_Pos         (4U)\n#define HRTIM_TIMICR_REPC_Msk         (0x1UL << HRTIM_TIMICR_REPC_Pos)         /*!< 0x00000010 */\n#define HRTIM_TIMICR_REPC             HRTIM_TIMICR_REPC_Msk                    /*!< Slave repetition clear flag */\n#define HRTIM_TIMICR_UPDC_Pos         (6U)\n#define HRTIM_TIMICR_UPDC_Msk         (0x1UL << HRTIM_TIMICR_UPDC_Pos)         /*!< 0x00000040 */\n#define HRTIM_TIMICR_UPDC             HRTIM_TIMICR_UPDC_Msk                    /*!< Slave update clear flag */\n#define HRTIM_TIMICR_CPT1C_Pos        (7U)\n#define HRTIM_TIMICR_CPT1C_Msk        (0x1UL << HRTIM_TIMICR_CPT1C_Pos)        /*!< 0x00000080 */\n#define HRTIM_TIMICR_CPT1C            HRTIM_TIMICR_CPT1C_Msk                   /*!< Slave capture 1 clear flag */\n#define HRTIM_TIMICR_CPT2C_Pos        (8U)\n#define HRTIM_TIMICR_CPT2C_Msk        (0x1UL << HRTIM_TIMICR_CPT2C_Pos)        /*!< 0x00000100 */\n#define HRTIM_TIMICR_CPT2C            HRTIM_TIMICR_CPT2C_Msk                   /*!< Slave capture 2 clear flag */\n#define HRTIM_TIMICR_SET1C_Pos        (9U)\n#define HRTIM_TIMICR_SET1C_Msk        (0x1UL << HRTIM_TIMICR_SET1C_Pos)        /*!< 0x00000200 */\n#define HRTIM_TIMICR_SET1C            HRTIM_TIMICR_SET1C_Msk                   /*!< Slave output 1 set clear flag */\n#define HRTIM_TIMICR_RST1C_Pos        (10U)\n#define HRTIM_TIMICR_RST1C_Msk        (0x1UL << HRTIM_TIMICR_RST1C_Pos)        /*!< 0x00000400 */\n#define HRTIM_TIMICR_RST1C            HRTIM_TIMICR_RST1C_Msk                   /*!< Slave output 1 reset clear flag */\n#define HRTIM_TIMICR_SET2C_Pos        (11U)\n#define HRTIM_TIMICR_SET2C_Msk        (0x1UL << HRTIM_TIMICR_SET2C_Pos)        /*!< 0x00000800 */\n#define HRTIM_TIMICR_SET2C            HRTIM_TIMICR_SET2C_Msk                   /*!< Slave output 2 set clear flag */\n#define HRTIM_TIMICR_RST2C_Pos        (12U)\n#define HRTIM_TIMICR_RST2C_Msk        (0x1UL << HRTIM_TIMICR_RST2C_Pos)        /*!< 0x00001000 */\n#define HRTIM_TIMICR_RST2C            HRTIM_TIMICR_RST2C_Msk                   /*!< Slave output 2 reset clear flag */\n#define HRTIM_TIMICR_RSTC_Pos         (13U)\n#define HRTIM_TIMICR_RSTC_Msk         (0x1UL << HRTIM_TIMICR_RSTC_Pos)         /*!< 0x00002000 */\n#define HRTIM_TIMICR_RSTC             HRTIM_TIMICR_RSTC_Msk                    /*!< Slave reset clear flag */\n#define HRTIM_TIMICR_DLYPRTC_Pos      (14U)\n#define HRTIM_TIMICR_DLYPRTC_Msk      (0x1UL << HRTIM_TIMICR_DLYPRTC_Pos)      /*!< 0x00004000 */\n#define HRTIM_TIMICR_DLYPRTC          HRTIM_TIMICR_DLYPRTC_Msk                 /*!< Slave output 1 delay protection clear flag */\n\n/******************** Slave DMA/Interrupt enable register *********************/\n#define HRTIM_TIMDIER_CMP1IE_Pos      (0U)\n#define HRTIM_TIMDIER_CMP1IE_Msk      (0x1UL << HRTIM_TIMDIER_CMP1IE_Pos)      /*!< 0x00000001 */\n#define HRTIM_TIMDIER_CMP1IE          HRTIM_TIMDIER_CMP1IE_Msk                 /*!< Slave compare 1 interrupt enable */\n#define HRTIM_TIMDIER_CMP2IE_Pos      (1U)\n#define HRTIM_TIMDIER_CMP2IE_Msk      (0x1UL << HRTIM_TIMDIER_CMP2IE_Pos)      /*!< 0x00000002 */\n#define HRTIM_TIMDIER_CMP2IE          HRTIM_TIMDIER_CMP2IE_Msk                 /*!< Slave compare 2 interrupt enable */\n#define HRTIM_TIMDIER_CMP3IE_Pos      (2U)\n#define HRTIM_TIMDIER_CMP3IE_Msk      (0x1UL << HRTIM_TIMDIER_CMP3IE_Pos)      /*!< 0x00000004 */\n#define HRTIM_TIMDIER_CMP3IE          HRTIM_TIMDIER_CMP3IE_Msk                 /*!< Slave compare 3 interrupt enable */\n#define HRTIM_TIMDIER_CMP4IE_Pos      (3U)\n#define HRTIM_TIMDIER_CMP4IE_Msk      (0x1UL << HRTIM_TIMDIER_CMP4IE_Pos)      /*!< 0x00000008 */\n#define HRTIM_TIMDIER_CMP4IE          HRTIM_TIMDIER_CMP4IE_Msk                 /*!< Slave compare 4 interrupt enable */\n#define HRTIM_TIMDIER_REPIE_Pos       (4U)\n#define HRTIM_TIMDIER_REPIE_Msk       (0x1UL << HRTIM_TIMDIER_REPIE_Pos)       /*!< 0x00000010 */\n#define HRTIM_TIMDIER_REPIE           HRTIM_TIMDIER_REPIE_Msk                  /*!< Slave repetition interrupt enable */\n#define HRTIM_TIMDIER_UPDIE_Pos       (6U)\n#define HRTIM_TIMDIER_UPDIE_Msk       (0x1UL << HRTIM_TIMDIER_UPDIE_Pos)       /*!< 0x00000040 */\n#define HRTIM_TIMDIER_UPDIE           HRTIM_TIMDIER_UPDIE_Msk                  /*!< Slave update interrupt enable */\n#define HRTIM_TIMDIER_CPT1IE_Pos      (7U)\n#define HRTIM_TIMDIER_CPT1IE_Msk      (0x1UL << HRTIM_TIMDIER_CPT1IE_Pos)      /*!< 0x00000080 */\n#define HRTIM_TIMDIER_CPT1IE          HRTIM_TIMDIER_CPT1IE_Msk                 /*!< Slave capture 1 interrupt enable */\n#define HRTIM_TIMDIER_CPT2IE_Pos      (8U)\n#define HRTIM_TIMDIER_CPT2IE_Msk      (0x1UL << HRTIM_TIMDIER_CPT2IE_Pos)      /*!< 0x00000100 */\n#define HRTIM_TIMDIER_CPT2IE          HRTIM_TIMDIER_CPT2IE_Msk                 /*!< Slave capture 2 interrupt enable */\n#define HRTIM_TIMDIER_SET1IE_Pos      (9U)\n#define HRTIM_TIMDIER_SET1IE_Msk      (0x1UL << HRTIM_TIMDIER_SET1IE_Pos)      /*!< 0x00000200 */\n#define HRTIM_TIMDIER_SET1IE          HRTIM_TIMDIER_SET1IE_Msk                 /*!< Slave output 1 set interrupt enable */\n#define HRTIM_TIMDIER_RST1IE_Pos      (10U)\n#define HRTIM_TIMDIER_RST1IE_Msk      (0x1UL << HRTIM_TIMDIER_RST1IE_Pos)      /*!< 0x00000400 */\n#define HRTIM_TIMDIER_RST1IE          HRTIM_TIMDIER_RST1IE_Msk                 /*!< Slave output 1 reset interrupt enable */\n#define HRTIM_TIMDIER_SET2IE_Pos      (11U)\n#define HRTIM_TIMDIER_SET2IE_Msk      (0x1UL << HRTIM_TIMDIER_SET2IE_Pos)      /*!< 0x00000800 */\n#define HRTIM_TIMDIER_SET2IE          HRTIM_TIMDIER_SET2IE_Msk                 /*!< Slave output 2 set interrupt enable */\n#define HRTIM_TIMDIER_RST2IE_Pos      (12U)\n#define HRTIM_TIMDIER_RST2IE_Msk      (0x1UL << HRTIM_TIMDIER_RST2IE_Pos)      /*!< 0x00001000 */\n#define HRTIM_TIMDIER_RST2IE          HRTIM_TIMDIER_RST2IE_Msk                 /*!< Slave output 2 reset interrupt enable */\n#define HRTIM_TIMDIER_RSTIE_Pos       (13U)\n#define HRTIM_TIMDIER_RSTIE_Msk       (0x1UL << HRTIM_TIMDIER_RSTIE_Pos)       /*!< 0x00002000 */\n#define HRTIM_TIMDIER_RSTIE           HRTIM_TIMDIER_RSTIE_Msk                  /*!< Slave reset interrupt enable */\n#define HRTIM_TIMDIER_DLYPRTIE_Pos    (14U)\n#define HRTIM_TIMDIER_DLYPRTIE_Msk    (0x1UL << HRTIM_TIMDIER_DLYPRTIE_Pos)    /*!< 0x00004000 */\n#define HRTIM_TIMDIER_DLYPRTIE        HRTIM_TIMDIER_DLYPRTIE_Msk               /*!< Slave delay protection interrupt enable */\n\n#define HRTIM_TIMDIER_CMP1DE_Pos      (16U)\n#define HRTIM_TIMDIER_CMP1DE_Msk      (0x1UL << HRTIM_TIMDIER_CMP1DE_Pos)      /*!< 0x00010000 */\n#define HRTIM_TIMDIER_CMP1DE          HRTIM_TIMDIER_CMP1DE_Msk                 /*!< Slave compare 1 request enable */\n#define HRTIM_TIMDIER_CMP2DE_Pos      (17U)\n#define HRTIM_TIMDIER_CMP2DE_Msk      (0x1UL << HRTIM_TIMDIER_CMP2DE_Pos)      /*!< 0x00020000 */\n#define HRTIM_TIMDIER_CMP2DE          HRTIM_TIMDIER_CMP2DE_Msk                 /*!< Slave compare 2 request enable */\n#define HRTIM_TIMDIER_CMP3DE_Pos      (18U)\n#define HRTIM_TIMDIER_CMP3DE_Msk      (0x1UL << HRTIM_TIMDIER_CMP3DE_Pos)      /*!< 0x00040000 */\n#define HRTIM_TIMDIER_CMP3DE          HRTIM_TIMDIER_CMP3DE_Msk                 /*!< Slave compare 3 request enable */\n#define HRTIM_TIMDIER_CMP4DE_Pos      (19U)\n#define HRTIM_TIMDIER_CMP4DE_Msk      (0x1UL << HRTIM_TIMDIER_CMP4DE_Pos)      /*!< 0x00080000 */\n#define HRTIM_TIMDIER_CMP4DE          HRTIM_TIMDIER_CMP4DE_Msk                 /*!< Slave compare 4 request enable */\n#define HRTIM_TIMDIER_REPDE_Pos       (20U)\n#define HRTIM_TIMDIER_REPDE_Msk       (0x1UL << HRTIM_TIMDIER_REPDE_Pos)       /*!< 0x00100000 */\n#define HRTIM_TIMDIER_REPDE           HRTIM_TIMDIER_REPDE_Msk                  /*!< Slave repetition request enable */\n#define HRTIM_TIMDIER_UPDDE_Pos       (22U)\n#define HRTIM_TIMDIER_UPDDE_Msk       (0x1UL << HRTIM_TIMDIER_UPDDE_Pos)       /*!< 0x00400000 */\n#define HRTIM_TIMDIER_UPDDE           HRTIM_TIMDIER_UPDDE_Msk                  /*!< Slave update request enable */\n#define HRTIM_TIMDIER_CPT1DE_Pos      (23U)\n#define HRTIM_TIMDIER_CPT1DE_Msk      (0x1UL << HRTIM_TIMDIER_CPT1DE_Pos)      /*!< 0x00800000 */\n#define HRTIM_TIMDIER_CPT1DE          HRTIM_TIMDIER_CPT1DE_Msk                 /*!< Slave capture 1 request enable */\n#define HRTIM_TIMDIER_CPT2DE_Pos      (24U)\n#define HRTIM_TIMDIER_CPT2DE_Msk      (0x1UL << HRTIM_TIMDIER_CPT2DE_Pos)      /*!< 0x01000000 */\n#define HRTIM_TIMDIER_CPT2DE          HRTIM_TIMDIER_CPT2DE_Msk                 /*!< Slave capture 2 request enable */\n#define HRTIM_TIMDIER_SET1DE_Pos      (25U)\n#define HRTIM_TIMDIER_SET1DE_Msk      (0x1UL << HRTIM_TIMDIER_SET1DE_Pos)      /*!< 0x02000000 */\n#define HRTIM_TIMDIER_SET1DE          HRTIM_TIMDIER_SET1DE_Msk                 /*!< Slave output 1 set request enable */\n#define HRTIM_TIMDIER_RST1DE_Pos      (26U)\n#define HRTIM_TIMDIER_RST1DE_Msk      (0x1UL << HRTIM_TIMDIER_RST1DE_Pos)      /*!< 0x04000000 */\n#define HRTIM_TIMDIER_RST1DE          HRTIM_TIMDIER_RST1DE_Msk                 /*!< Slave output 1 reset request enable */\n#define HRTIM_TIMDIER_SET2DE_Pos      (27U)\n#define HRTIM_TIMDIER_SET2DE_Msk      (0x1UL << HRTIM_TIMDIER_SET2DE_Pos)      /*!< 0x08000000 */\n#define HRTIM_TIMDIER_SET2DE          HRTIM_TIMDIER_SET2DE_Msk                 /*!< Slave output 2 set request enable */\n#define HRTIM_TIMDIER_RST2DE_Pos      (28U)\n#define HRTIM_TIMDIER_RST2DE_Msk      (0x1UL << HRTIM_TIMDIER_RST2DE_Pos)      /*!< 0x10000000 */\n#define HRTIM_TIMDIER_RST2DE          HRTIM_TIMDIER_RST2DE_Msk                 /*!< Slave output 2 reset request enable */\n#define HRTIM_TIMDIER_RSTDE_Pos       (29U)\n#define HRTIM_TIMDIER_RSTDE_Msk       (0x1UL << HRTIM_TIMDIER_RSTDE_Pos)       /*!< 0x20000000 */\n#define HRTIM_TIMDIER_RSTDE           HRTIM_TIMDIER_RSTDE_Msk                  /*!< Slave reset request enable */\n#define HRTIM_TIMDIER_DLYPRTDE_Pos    (30U)\n#define HRTIM_TIMDIER_DLYPRTDE_Msk    (0x1UL << HRTIM_TIMDIER_DLYPRTDE_Pos)    /*!< 0x40000000 */\n#define HRTIM_TIMDIER_DLYPRTDE        HRTIM_TIMDIER_DLYPRTDE_Msk               /*!< Slavedelay protection request enable */\n\n/******************  Bit definition for HRTIM_CNTR register  ****************/\n#define HRTIM_CNTR_CNTR_Pos           (0U)\n#define HRTIM_CNTR_CNTR_Msk           (0xFFFFUL << HRTIM_CNTR_CNTR_Pos)        /*!< 0x0000FFFF */\n#define HRTIM_CNTR_CNTR               HRTIM_CNTR_CNTR_Msk                      /*!< Counter Value */\n\n/*******************  Bit definition for HRTIM_PER register  *****************/\n#define HRTIM_PER_PER_Pos             (0U)\n#define HRTIM_PER_PER_Msk             (0xFFFFUL << HRTIM_PER_PER_Pos)          /*!< 0x0000FFFF */\n#define HRTIM_PER_PER                 HRTIM_PER_PER_Msk                        /*!< Period Value */\n\n/*******************  Bit definition for HRTIM_REP register  *****************/\n#define HRTIM_REP_REP_Pos             (0U)\n#define HRTIM_REP_REP_Msk             (0xFFUL << HRTIM_REP_REP_Pos)            /*!< 0x000000FF */\n#define HRTIM_REP_REP                 HRTIM_REP_REP_Msk                        /*!< Repetition Value */\n\n/*******************  Bit definition for HRTIM_CMP1R register  *****************/\n#define HRTIM_CMP1R_CMP1R_Pos         (0U)\n#define HRTIM_CMP1R_CMP1R_Msk         (0xFFFFUL << HRTIM_CMP1R_CMP1R_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_CMP1R_CMP1R             HRTIM_CMP1R_CMP1R_Msk                    /*!< Compare Value */\n\n/*******************  Bit definition for HRTIM_CMP1CR register  *****************/\n#define HRTIM_CMP1CR_CMP1CR_Pos       (0U)\n#define HRTIM_CMP1CR_CMP1CR_Msk       (0xFFFFFFFFUL << HRTIM_CMP1CR_CMP1CR_Pos) /*!< 0xFFFFFFFF */\n#define HRTIM_CMP1CR_CMP1CR           HRTIM_CMP1CR_CMP1CR_Msk                  /*!< Compare Value */\n\n/*******************  Bit definition for HRTIM_CMP2R register  *****************/\n#define HRTIM_CMP2R_CMP2R_Pos         (0U)\n#define HRTIM_CMP2R_CMP2R_Msk         (0xFFFFUL << HRTIM_CMP2R_CMP2R_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_CMP2R_CMP2R             HRTIM_CMP2R_CMP2R_Msk                    /*!< Compare Value */\n\n/*******************  Bit definition for HRTIM_CMP3R register  *****************/\n#define HRTIM_CMP3R_CMP3R_Pos         (0U)\n#define HRTIM_CMP3R_CMP3R_Msk         (0xFFFFUL << HRTIM_CMP3R_CMP3R_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_CMP3R_CMP3R             HRTIM_CMP3R_CMP3R_Msk                    /*!< Compare Value */\n\n/*******************  Bit definition for HRTIM_CMP4R register  *****************/\n#define HRTIM_CMP4R_CMP4R_Pos         (0U)\n#define HRTIM_CMP4R_CMP4R_Msk         (0xFFFFUL << HRTIM_CMP4R_CMP4R_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_CMP4R_CMP4R             HRTIM_CMP4R_CMP4R_Msk                    /*!< Compare Value */\n\n/*******************  Bit definition for HRTIM_CPT1R register  ****************/\n#define HRTIM_CPT1R_CPT1R_Pos         (0U)\n#define HRTIM_CPT1R_CPT1R_Msk         (0xFFFFUL << HRTIM_CPT1R_CPT1R_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_CPT1R_CPT1R             HRTIM_CPT1R_CPT1R_Msk                    /*!< Capture Value */\n\n/*******************  Bit definition for HRTIM_CPT2R register  ****************/\n#define HRTIM_CPT2R_CPT2R_Pos         (0U)\n#define HRTIM_CPT2R_CPT2R_Msk         (0xFFFFUL << HRTIM_CPT2R_CPT2R_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_CPT2R_CPT2R             HRTIM_CPT2R_CPT2R_Msk                    /*!< Capture Value */\n\n/******************** Bit definition for Slave Deadtime register **************/\n#define HRTIM_DTR_DTR_Pos             (0U)\n#define HRTIM_DTR_DTR_Msk             (0x1FFUL << HRTIM_DTR_DTR_Pos)           /*!< 0x000001FF */\n#define HRTIM_DTR_DTR                 HRTIM_DTR_DTR_Msk                        /*!< Dead time rising value */\n#define HRTIM_DTR_DTR_0               (0x001UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000001 */\n#define HRTIM_DTR_DTR_1               (0x002UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000002 */\n#define HRTIM_DTR_DTR_2               (0x004UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000004 */\n#define HRTIM_DTR_DTR_3               (0x008UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000008 */\n#define HRTIM_DTR_DTR_4               (0x010UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000010 */\n#define HRTIM_DTR_DTR_5               (0x020UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000020 */\n#define HRTIM_DTR_DTR_6               (0x040UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000040 */\n#define HRTIM_DTR_DTR_7               (0x080UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000080 */\n#define HRTIM_DTR_DTR_8               (0x100UL << HRTIM_DTR_DTR_Pos)            /*!< 0x00000100 */\n#define HRTIM_DTR_SDTR_Pos            (9U)\n#define HRTIM_DTR_SDTR_Msk            (0x1UL << HRTIM_DTR_SDTR_Pos)            /*!< 0x00000200 */\n#define HRTIM_DTR_SDTR                HRTIM_DTR_SDTR_Msk                       /*!< Sign dead time rising value */\n#define HRTIM_DTR_DTPRSC_Pos          (10U)\n#define HRTIM_DTR_DTPRSC_Msk          (0x7UL << HRTIM_DTR_DTPRSC_Pos)          /*!< 0x00001C00 */\n#define HRTIM_DTR_DTPRSC              HRTIM_DTR_DTPRSC_Msk                     /*!< Dead time prescaler */\n#define HRTIM_DTR_DTPRSC_0            (0x1UL << HRTIM_DTR_DTPRSC_Pos)           /*!< 0x00000400 */\n#define HRTIM_DTR_DTPRSC_1            (0x2UL << HRTIM_DTR_DTPRSC_Pos)           /*!< 0x00000800 */\n#define HRTIM_DTR_DTPRSC_2            (0x4UL << HRTIM_DTR_DTPRSC_Pos)           /*!< 0x00001000 */\n#define HRTIM_DTR_DTRSLK_Pos          (14U)\n#define HRTIM_DTR_DTRSLK_Msk          (0x1UL << HRTIM_DTR_DTRSLK_Pos)          /*!< 0x00004000 */\n#define HRTIM_DTR_DTRSLK              HRTIM_DTR_DTRSLK_Msk                     /*!< Dead time rising sign lock */\n#define HRTIM_DTR_DTRLK_Pos           (15U)\n#define HRTIM_DTR_DTRLK_Msk           (0x1UL << HRTIM_DTR_DTRLK_Pos)           /*!< 0x00008000 */\n#define HRTIM_DTR_DTRLK               HRTIM_DTR_DTRLK_Msk                      /*!< Dead time rising lock */\n#define HRTIM_DTR_DTF_Pos             (16U)\n#define HRTIM_DTR_DTF_Msk             (0x1FFUL << HRTIM_DTR_DTF_Pos)           /*!< 0x01FF0000 */\n#define HRTIM_DTR_DTF                 HRTIM_DTR_DTF_Msk                        /*!< Dead time falling value */\n#define HRTIM_DTR_DTF_0               (0x001UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00010000 */\n#define HRTIM_DTR_DTF_1               (0x002UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00020000 */\n#define HRTIM_DTR_DTF_2               (0x004UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00040000 */\n#define HRTIM_DTR_DTF_3               (0x008UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00080000 */\n#define HRTIM_DTR_DTF_4               (0x010UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00100000 */\n#define HRTIM_DTR_DTF_5               (0x020UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00200000 */\n#define HRTIM_DTR_DTF_6               (0x040UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00400000 */\n#define HRTIM_DTR_DTF_7               (0x080UL << HRTIM_DTR_DTF_Pos)            /*!< 0x00800000 */\n#define HRTIM_DTR_DTF_8               (0x100UL << HRTIM_DTR_DTF_Pos)            /*!< 0x01000000 */\n#define HRTIM_DTR_SDTF_Pos            (25U)\n#define HRTIM_DTR_SDTF_Msk            (0x1UL << HRTIM_DTR_SDTF_Pos)            /*!< 0x02000000 */\n#define HRTIM_DTR_SDTF                HRTIM_DTR_SDTF_Msk                       /*!< Sign dead time falling value */\n#define HRTIM_DTR_DTFSLK_Pos          (30U)\n#define HRTIM_DTR_DTFSLK_Msk          (0x1UL << HRTIM_DTR_DTFSLK_Pos)          /*!< 0x40000000 */\n#define HRTIM_DTR_DTFSLK              HRTIM_DTR_DTFSLK_Msk                     /*!< Dead time falling sign lock */\n#define HRTIM_DTR_DTFLK_Pos           (31U)\n#define HRTIM_DTR_DTFLK_Msk           (0x1UL << HRTIM_DTR_DTFLK_Pos)           /*!< 0x80000000 */\n#define HRTIM_DTR_DTFLK               HRTIM_DTR_DTFLK_Msk                      /*!< Dead time falling lock */\n\n/**** Bit definition for Slave Output 1 set register **************************/\n#define HRTIM_SET1R_SST_Pos           (0U)\n#define HRTIM_SET1R_SST_Msk           (0x1UL << HRTIM_SET1R_SST_Pos)           /*!< 0x00000001 */\n#define HRTIM_SET1R_SST               HRTIM_SET1R_SST_Msk                      /*!< software set trigger */\n#define HRTIM_SET1R_RESYNC_Pos        (1U)\n#define HRTIM_SET1R_RESYNC_Msk        (0x1UL << HRTIM_SET1R_RESYNC_Pos)        /*!< 0x00000002 */\n#define HRTIM_SET1R_RESYNC            HRTIM_SET1R_RESYNC_Msk                   /*!< Timer A resynchronization */\n#define HRTIM_SET1R_PER_Pos           (2U)\n#define HRTIM_SET1R_PER_Msk           (0x1UL << HRTIM_SET1R_PER_Pos)           /*!< 0x00000004 */\n#define HRTIM_SET1R_PER               HRTIM_SET1R_PER_Msk                      /*!< Timer A period */\n#define HRTIM_SET1R_CMP1_Pos          (3U)\n#define HRTIM_SET1R_CMP1_Msk          (0x1UL << HRTIM_SET1R_CMP1_Pos)          /*!< 0x00000008 */\n#define HRTIM_SET1R_CMP1              HRTIM_SET1R_CMP1_Msk                     /*!< Timer A compare 1 */\n#define HRTIM_SET1R_CMP2_Pos          (4U)\n#define HRTIM_SET1R_CMP2_Msk          (0x1UL << HRTIM_SET1R_CMP2_Pos)          /*!< 0x00000010 */\n#define HRTIM_SET1R_CMP2              HRTIM_SET1R_CMP2_Msk                     /*!< Timer A compare 2 */\n#define HRTIM_SET1R_CMP3_Pos          (5U)\n#define HRTIM_SET1R_CMP3_Msk          (0x1UL << HRTIM_SET1R_CMP3_Pos)          /*!< 0x00000020 */\n#define HRTIM_SET1R_CMP3              HRTIM_SET1R_CMP3_Msk                     /*!< Timer A compare 3 */\n#define HRTIM_SET1R_CMP4_Pos          (6U)\n#define HRTIM_SET1R_CMP4_Msk          (0x1UL << HRTIM_SET1R_CMP4_Pos)          /*!< 0x00000040 */\n#define HRTIM_SET1R_CMP4              HRTIM_SET1R_CMP4_Msk                     /*!< Timer A compare 4 */\n\n#define HRTIM_SET1R_MSTPER_Pos        (7U)\n#define HRTIM_SET1R_MSTPER_Msk        (0x1UL << HRTIM_SET1R_MSTPER_Pos)        /*!< 0x00000080 */\n#define HRTIM_SET1R_MSTPER            HRTIM_SET1R_MSTPER_Msk                   /*!< Master period */\n#define HRTIM_SET1R_MSTCMP1_Pos       (8U)\n#define HRTIM_SET1R_MSTCMP1_Msk       (0x1UL << HRTIM_SET1R_MSTCMP1_Pos)       /*!< 0x00000100 */\n#define HRTIM_SET1R_MSTCMP1           HRTIM_SET1R_MSTCMP1_Msk                  /*!< Master compare 1 */\n#define HRTIM_SET1R_MSTCMP2_Pos       (9U)\n#define HRTIM_SET1R_MSTCMP2_Msk       (0x1UL << HRTIM_SET1R_MSTCMP2_Pos)       /*!< 0x00000200 */\n#define HRTIM_SET1R_MSTCMP2           HRTIM_SET1R_MSTCMP2_Msk                  /*!< Master compare 2 */\n#define HRTIM_SET1R_MSTCMP3_Pos       (10U)\n#define HRTIM_SET1R_MSTCMP3_Msk       (0x1UL << HRTIM_SET1R_MSTCMP3_Pos)       /*!< 0x00000400 */\n#define HRTIM_SET1R_MSTCMP3           HRTIM_SET1R_MSTCMP3_Msk                  /*!< Master compare 3 */\n#define HRTIM_SET1R_MSTCMP4_Pos       (11U)\n#define HRTIM_SET1R_MSTCMP4_Msk       (0x1UL << HRTIM_SET1R_MSTCMP4_Pos)       /*!< 0x00000800 */\n#define HRTIM_SET1R_MSTCMP4           HRTIM_SET1R_MSTCMP4_Msk                  /*!< Master compare 4 */\n\n#define HRTIM_SET1R_TIMEVNT1_Pos      (12U)\n#define HRTIM_SET1R_TIMEVNT1_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT1_Pos)      /*!< 0x00001000 */\n#define HRTIM_SET1R_TIMEVNT1          HRTIM_SET1R_TIMEVNT1_Msk                 /*!< Timer event 1 */\n#define HRTIM_SET1R_TIMEVNT2_Pos      (13U)\n#define HRTIM_SET1R_TIMEVNT2_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT2_Pos)      /*!< 0x00002000 */\n#define HRTIM_SET1R_TIMEVNT2          HRTIM_SET1R_TIMEVNT2_Msk                 /*!< Timer event 2 */\n#define HRTIM_SET1R_TIMEVNT3_Pos      (14U)\n#define HRTIM_SET1R_TIMEVNT3_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT3_Pos)      /*!< 0x00004000 */\n#define HRTIM_SET1R_TIMEVNT3          HRTIM_SET1R_TIMEVNT3_Msk                 /*!< Timer event 3 */\n#define HRTIM_SET1R_TIMEVNT4_Pos      (15U)\n#define HRTIM_SET1R_TIMEVNT4_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT4_Pos)      /*!< 0x00008000 */\n#define HRTIM_SET1R_TIMEVNT4          HRTIM_SET1R_TIMEVNT4_Msk                 /*!< Timer event 4 */\n#define HRTIM_SET1R_TIMEVNT5_Pos      (16U)\n#define HRTIM_SET1R_TIMEVNT5_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT5_Pos)      /*!< 0x00010000 */\n#define HRTIM_SET1R_TIMEVNT5          HRTIM_SET1R_TIMEVNT5_Msk                 /*!< Timer event 5 */\n#define HRTIM_SET1R_TIMEVNT6_Pos      (17U)\n#define HRTIM_SET1R_TIMEVNT6_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT6_Pos)      /*!< 0x00020000 */\n#define HRTIM_SET1R_TIMEVNT6          HRTIM_SET1R_TIMEVNT6_Msk                 /*!< Timer event 6 */\n#define HRTIM_SET1R_TIMEVNT7_Pos      (18U)\n#define HRTIM_SET1R_TIMEVNT7_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT7_Pos)      /*!< 0x00040000 */\n#define HRTIM_SET1R_TIMEVNT7          HRTIM_SET1R_TIMEVNT7_Msk                 /*!< Timer event 7 */\n#define HRTIM_SET1R_TIMEVNT8_Pos      (19U)\n#define HRTIM_SET1R_TIMEVNT8_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT8_Pos)      /*!< 0x00080000 */\n#define HRTIM_SET1R_TIMEVNT8          HRTIM_SET1R_TIMEVNT8_Msk                 /*!< Timer event 8 */\n#define HRTIM_SET1R_TIMEVNT9_Pos      (20U)\n#define HRTIM_SET1R_TIMEVNT9_Msk      (0x1UL << HRTIM_SET1R_TIMEVNT9_Pos)      /*!< 0x00100000 */\n#define HRTIM_SET1R_TIMEVNT9          HRTIM_SET1R_TIMEVNT9_Msk                 /*!< Timer event 9 */\n\n#define HRTIM_SET1R_EXTVNT1_Pos       (21U)\n#define HRTIM_SET1R_EXTVNT1_Msk       (0x1UL << HRTIM_SET1R_EXTVNT1_Pos)       /*!< 0x00200000 */\n#define HRTIM_SET1R_EXTVNT1           HRTIM_SET1R_EXTVNT1_Msk                  /*!< External event 1 */\n#define HRTIM_SET1R_EXTVNT2_Pos       (22U)\n#define HRTIM_SET1R_EXTVNT2_Msk       (0x1UL << HRTIM_SET1R_EXTVNT2_Pos)       /*!< 0x00400000 */\n#define HRTIM_SET1R_EXTVNT2           HRTIM_SET1R_EXTVNT2_Msk                  /*!< External event 2 */\n#define HRTIM_SET1R_EXTVNT3_Pos       (23U)\n#define HRTIM_SET1R_EXTVNT3_Msk       (0x1UL << HRTIM_SET1R_EXTVNT3_Pos)       /*!< 0x00800000 */\n#define HRTIM_SET1R_EXTVNT3           HRTIM_SET1R_EXTVNT3_Msk                  /*!< External event 3 */\n#define HRTIM_SET1R_EXTVNT4_Pos       (24U)\n#define HRTIM_SET1R_EXTVNT4_Msk       (0x1UL << HRTIM_SET1R_EXTVNT4_Pos)       /*!< 0x01000000 */\n#define HRTIM_SET1R_EXTVNT4           HRTIM_SET1R_EXTVNT4_Msk                  /*!< External event 4 */\n#define HRTIM_SET1R_EXTVNT5_Pos       (25U)\n#define HRTIM_SET1R_EXTVNT5_Msk       (0x1UL << HRTIM_SET1R_EXTVNT5_Pos)       /*!< 0x02000000 */\n#define HRTIM_SET1R_EXTVNT5           HRTIM_SET1R_EXTVNT5_Msk                  /*!< External event 5 */\n#define HRTIM_SET1R_EXTVNT6_Pos       (26U)\n#define HRTIM_SET1R_EXTVNT6_Msk       (0x1UL << HRTIM_SET1R_EXTVNT6_Pos)       /*!< 0x04000000 */\n#define HRTIM_SET1R_EXTVNT6           HRTIM_SET1R_EXTVNT6_Msk                  /*!< External event 6 */\n#define HRTIM_SET1R_EXTVNT7_Pos       (27U)\n#define HRTIM_SET1R_EXTVNT7_Msk       (0x1UL << HRTIM_SET1R_EXTVNT7_Pos)       /*!< 0x08000000 */\n#define HRTIM_SET1R_EXTVNT7           HRTIM_SET1R_EXTVNT7_Msk                  /*!< External event 7 */\n#define HRTIM_SET1R_EXTVNT8_Pos       (28U)\n#define HRTIM_SET1R_EXTVNT8_Msk       (0x1UL << HRTIM_SET1R_EXTVNT8_Pos)       /*!< 0x10000000 */\n#define HRTIM_SET1R_EXTVNT8           HRTIM_SET1R_EXTVNT8_Msk                  /*!< External event 8 */\n#define HRTIM_SET1R_EXTVNT9_Pos       (29U)\n#define HRTIM_SET1R_EXTVNT9_Msk       (0x1UL << HRTIM_SET1R_EXTVNT9_Pos)       /*!< 0x20000000 */\n#define HRTIM_SET1R_EXTVNT9           HRTIM_SET1R_EXTVNT9_Msk                  /*!< External event 9 */\n#define HRTIM_SET1R_EXTVNT10_Pos      (30U)\n#define HRTIM_SET1R_EXTVNT10_Msk      (0x1UL << HRTIM_SET1R_EXTVNT10_Pos)      /*!< 0x40000000 */\n#define HRTIM_SET1R_EXTVNT10          HRTIM_SET1R_EXTVNT10_Msk                 /*!< External event 10 */\n\n#define HRTIM_SET1R_UPDATE_Pos        (31U)\n#define HRTIM_SET1R_UPDATE_Msk        (0x1UL << HRTIM_SET1R_UPDATE_Pos)        /*!< 0x80000000 */\n#define HRTIM_SET1R_UPDATE            HRTIM_SET1R_UPDATE_Msk                   /*!< Register update (transfer preload to active) */\n\n/**** Bit definition for Slave Output 1 reset register ************************/\n#define HRTIM_RST1R_SRT_Pos           (0U)\n#define HRTIM_RST1R_SRT_Msk           (0x1UL << HRTIM_RST1R_SRT_Pos)           /*!< 0x00000001 */\n#define HRTIM_RST1R_SRT               HRTIM_RST1R_SRT_Msk                      /*!< software reset trigger */\n#define HRTIM_RST1R_RESYNC_Pos        (1U)\n#define HRTIM_RST1R_RESYNC_Msk        (0x1UL << HRTIM_RST1R_RESYNC_Pos)        /*!< 0x00000002 */\n#define HRTIM_RST1R_RESYNC            HRTIM_RST1R_RESYNC_Msk                   /*!< Timer A resynchronization */\n#define HRTIM_RST1R_PER_Pos           (2U)\n#define HRTIM_RST1R_PER_Msk           (0x1UL << HRTIM_RST1R_PER_Pos)           /*!< 0x00000004 */\n#define HRTIM_RST1R_PER               HRTIM_RST1R_PER_Msk                      /*!< Timer A period */\n#define HRTIM_RST1R_CMP1_Pos          (3U)\n#define HRTIM_RST1R_CMP1_Msk          (0x1UL << HRTIM_RST1R_CMP1_Pos)          /*!< 0x00000008 */\n#define HRTIM_RST1R_CMP1              HRTIM_RST1R_CMP1_Msk                     /*!< Timer A compare 1 */\n#define HRTIM_RST1R_CMP2_Pos          (4U)\n#define HRTIM_RST1R_CMP2_Msk          (0x1UL << HRTIM_RST1R_CMP2_Pos)          /*!< 0x00000010 */\n#define HRTIM_RST1R_CMP2              HRTIM_RST1R_CMP2_Msk                     /*!< Timer A compare 2 */\n#define HRTIM_RST1R_CMP3_Pos          (5U)\n#define HRTIM_RST1R_CMP3_Msk          (0x1UL << HRTIM_RST1R_CMP3_Pos)          /*!< 0x00000020 */\n#define HRTIM_RST1R_CMP3              HRTIM_RST1R_CMP3_Msk                     /*!< Timer A compare 3 */\n#define HRTIM_RST1R_CMP4_Pos          (6U)\n#define HRTIM_RST1R_CMP4_Msk          (0x1UL << HRTIM_RST1R_CMP4_Pos)          /*!< 0x00000040 */\n#define HRTIM_RST1R_CMP4              HRTIM_RST1R_CMP4_Msk                     /*!< Timer A compare 4 */\n\n#define HRTIM_RST1R_MSTPER_Pos        (7U)\n#define HRTIM_RST1R_MSTPER_Msk        (0x1UL << HRTIM_RST1R_MSTPER_Pos)        /*!< 0x00000080 */\n#define HRTIM_RST1R_MSTPER            HRTIM_RST1R_MSTPER_Msk                   /*!< Master period */\n#define HRTIM_RST1R_MSTCMP1_Pos       (8U)\n#define HRTIM_RST1R_MSTCMP1_Msk       (0x1UL << HRTIM_RST1R_MSTCMP1_Pos)       /*!< 0x00000100 */\n#define HRTIM_RST1R_MSTCMP1           HRTIM_RST1R_MSTCMP1_Msk                  /*!< Master compare 1 */\n#define HRTIM_RST1R_MSTCMP2_Pos       (9U)\n#define HRTIM_RST1R_MSTCMP2_Msk       (0x1UL << HRTIM_RST1R_MSTCMP2_Pos)       /*!< 0x00000200 */\n#define HRTIM_RST1R_MSTCMP2           HRTIM_RST1R_MSTCMP2_Msk                  /*!< Master compare 2 */\n#define HRTIM_RST1R_MSTCMP3_Pos       (10U)\n#define HRTIM_RST1R_MSTCMP3_Msk       (0x1UL << HRTIM_RST1R_MSTCMP3_Pos)       /*!< 0x00000400 */\n#define HRTIM_RST1R_MSTCMP3           HRTIM_RST1R_MSTCMP3_Msk                  /*!< Master compare 3 */\n#define HRTIM_RST1R_MSTCMP4_Pos       (11U)\n#define HRTIM_RST1R_MSTCMP4_Msk       (0x1UL << HRTIM_RST1R_MSTCMP4_Pos)       /*!< 0x00000800 */\n#define HRTIM_RST1R_MSTCMP4           HRTIM_RST1R_MSTCMP4_Msk                  /*!< Master compare 4 */\n\n#define HRTIM_RST1R_TIMEVNT1_Pos      (12U)\n#define HRTIM_RST1R_TIMEVNT1_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT1_Pos)      /*!< 0x00001000 */\n#define HRTIM_RST1R_TIMEVNT1          HRTIM_RST1R_TIMEVNT1_Msk                 /*!< Timer event 1 */\n#define HRTIM_RST1R_TIMEVNT2_Pos      (13U)\n#define HRTIM_RST1R_TIMEVNT2_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT2_Pos)      /*!< 0x00002000 */\n#define HRTIM_RST1R_TIMEVNT2          HRTIM_RST1R_TIMEVNT2_Msk                 /*!< Timer event 2 */\n#define HRTIM_RST1R_TIMEVNT3_Pos      (14U)\n#define HRTIM_RST1R_TIMEVNT3_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT3_Pos)      /*!< 0x00004000 */\n#define HRTIM_RST1R_TIMEVNT3          HRTIM_RST1R_TIMEVNT3_Msk                 /*!< Timer event 3 */\n#define HRTIM_RST1R_TIMEVNT4_Pos      (15U)\n#define HRTIM_RST1R_TIMEVNT4_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT4_Pos)      /*!< 0x00008000 */\n#define HRTIM_RST1R_TIMEVNT4          HRTIM_RST1R_TIMEVNT4_Msk                 /*!< Timer event 4 */\n#define HRTIM_RST1R_TIMEVNT5_Pos      (16U)\n#define HRTIM_RST1R_TIMEVNT5_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT5_Pos)      /*!< 0x00010000 */\n#define HRTIM_RST1R_TIMEVNT5          HRTIM_RST1R_TIMEVNT5_Msk                 /*!< Timer event 5 */\n#define HRTIM_RST1R_TIMEVNT6_Pos      (17U)\n#define HRTIM_RST1R_TIMEVNT6_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT6_Pos)      /*!< 0x00020000 */\n#define HRTIM_RST1R_TIMEVNT6          HRTIM_RST1R_TIMEVNT6_Msk                 /*!< Timer event 6 */\n#define HRTIM_RST1R_TIMEVNT7_Pos      (18U)\n#define HRTIM_RST1R_TIMEVNT7_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT7_Pos)      /*!< 0x00040000 */\n#define HRTIM_RST1R_TIMEVNT7          HRTIM_RST1R_TIMEVNT7_Msk                 /*!< Timer event 7 */\n#define HRTIM_RST1R_TIMEVNT8_Pos      (19U)\n#define HRTIM_RST1R_TIMEVNT8_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT8_Pos)      /*!< 0x00080000 */\n#define HRTIM_RST1R_TIMEVNT8          HRTIM_RST1R_TIMEVNT8_Msk                 /*!< Timer event 8 */\n#define HRTIM_RST1R_TIMEVNT9_Pos      (20U)\n#define HRTIM_RST1R_TIMEVNT9_Msk      (0x1UL << HRTIM_RST1R_TIMEVNT9_Pos)      /*!< 0x00100000 */\n#define HRTIM_RST1R_TIMEVNT9          HRTIM_RST1R_TIMEVNT9_Msk                 /*!< Timer event 9 */\n\n#define HRTIM_RST1R_EXTVNT1_Pos       (21U)\n#define HRTIM_RST1R_EXTVNT1_Msk       (0x1UL << HRTIM_RST1R_EXTVNT1_Pos)       /*!< 0x00200000 */\n#define HRTIM_RST1R_EXTVNT1           HRTIM_RST1R_EXTVNT1_Msk                  /*!< External event 1 */\n#define HRTIM_RST1R_EXTVNT2_Pos       (22U)\n#define HRTIM_RST1R_EXTVNT2_Msk       (0x1UL << HRTIM_RST1R_EXTVNT2_Pos)       /*!< 0x00400000 */\n#define HRTIM_RST1R_EXTVNT2           HRTIM_RST1R_EXTVNT2_Msk                  /*!< External event 2 */\n#define HRTIM_RST1R_EXTVNT3_Pos       (23U)\n#define HRTIM_RST1R_EXTVNT3_Msk       (0x1UL << HRTIM_RST1R_EXTVNT3_Pos)       /*!< 0x00800000 */\n#define HRTIM_RST1R_EXTVNT3           HRTIM_RST1R_EXTVNT3_Msk                  /*!< External event 3 */\n#define HRTIM_RST1R_EXTVNT4_Pos       (24U)\n#define HRTIM_RST1R_EXTVNT4_Msk       (0x1UL << HRTIM_RST1R_EXTVNT4_Pos)       /*!< 0x01000000 */\n#define HRTIM_RST1R_EXTVNT4           HRTIM_RST1R_EXTVNT4_Msk                  /*!< External event 4 */\n#define HRTIM_RST1R_EXTVNT5_Pos       (25U)\n#define HRTIM_RST1R_EXTVNT5_Msk       (0x1UL << HRTIM_RST1R_EXTVNT5_Pos)       /*!< 0x02000000 */\n#define HRTIM_RST1R_EXTVNT5           HRTIM_RST1R_EXTVNT5_Msk                  /*!< External event 5 */\n#define HRTIM_RST1R_EXTVNT6_Pos       (26U)\n#define HRTIM_RST1R_EXTVNT6_Msk       (0x1UL << HRTIM_RST1R_EXTVNT6_Pos)       /*!< 0x04000000 */\n#define HRTIM_RST1R_EXTVNT6           HRTIM_RST1R_EXTVNT6_Msk                  /*!< External event 6 */\n#define HRTIM_RST1R_EXTVNT7_Pos       (27U)\n#define HRTIM_RST1R_EXTVNT7_Msk       (0x1UL << HRTIM_RST1R_EXTVNT7_Pos)       /*!< 0x08000000 */\n#define HRTIM_RST1R_EXTVNT7           HRTIM_RST1R_EXTVNT7_Msk                  /*!< External event 7 */\n#define HRTIM_RST1R_EXTVNT8_Pos       (28U)\n#define HRTIM_RST1R_EXTVNT8_Msk       (0x1UL << HRTIM_RST1R_EXTVNT8_Pos)       /*!< 0x10000000 */\n#define HRTIM_RST1R_EXTVNT8           HRTIM_RST1R_EXTVNT8_Msk                  /*!< External event 8 */\n#define HRTIM_RST1R_EXTVNT9_Pos       (29U)\n#define HRTIM_RST1R_EXTVNT9_Msk       (0x1UL << HRTIM_RST1R_EXTVNT9_Pos)       /*!< 0x20000000 */\n#define HRTIM_RST1R_EXTVNT9           HRTIM_RST1R_EXTVNT9_Msk                  /*!< External event 9 */\n#define HRTIM_RST1R_EXTVNT10_Pos      (30U)\n#define HRTIM_RST1R_EXTVNT10_Msk      (0x1UL << HRTIM_RST1R_EXTVNT10_Pos)      /*!< 0x40000000 */\n#define HRTIM_RST1R_EXTVNT10          HRTIM_RST1R_EXTVNT10_Msk                 /*!< External event 10 */\n\n#define HRTIM_RST1R_UPDATE_Pos        (31U)\n#define HRTIM_RST1R_UPDATE_Msk        (0x1UL << HRTIM_RST1R_UPDATE_Pos)        /*!< 0x80000000 */\n#define HRTIM_RST1R_UPDATE            HRTIM_RST1R_UPDATE_Msk                   /*!< Register update (transfer preload to active) */\n\n\n/**** Bit definition for Slave Output 2 set register **************************/\n#define HRTIM_SET2R_SST_Pos           (0U)\n#define HRTIM_SET2R_SST_Msk           (0x1UL << HRTIM_SET2R_SST_Pos)           /*!< 0x00000001 */\n#define HRTIM_SET2R_SST               HRTIM_SET2R_SST_Msk                      /*!< software set trigger */\n#define HRTIM_SET2R_RESYNC_Pos        (1U)\n#define HRTIM_SET2R_RESYNC_Msk        (0x1UL << HRTIM_SET2R_RESYNC_Pos)        /*!< 0x00000002 */\n#define HRTIM_SET2R_RESYNC            HRTIM_SET2R_RESYNC_Msk                   /*!< Timer A resynchronization */\n#define HRTIM_SET2R_PER_Pos           (2U)\n#define HRTIM_SET2R_PER_Msk           (0x1UL << HRTIM_SET2R_PER_Pos)           /*!< 0x00000004 */\n#define HRTIM_SET2R_PER               HRTIM_SET2R_PER_Msk                      /*!< Timer A period */\n#define HRTIM_SET2R_CMP1_Pos          (3U)\n#define HRTIM_SET2R_CMP1_Msk          (0x1UL << HRTIM_SET2R_CMP1_Pos)          /*!< 0x00000008 */\n#define HRTIM_SET2R_CMP1              HRTIM_SET2R_CMP1_Msk                     /*!< Timer A compare 1 */\n#define HRTIM_SET2R_CMP2_Pos          (4U)\n#define HRTIM_SET2R_CMP2_Msk          (0x1UL << HRTIM_SET2R_CMP2_Pos)          /*!< 0x00000010 */\n#define HRTIM_SET2R_CMP2              HRTIM_SET2R_CMP2_Msk                     /*!< Timer A compare 2 */\n#define HRTIM_SET2R_CMP3_Pos          (5U)\n#define HRTIM_SET2R_CMP3_Msk          (0x1UL << HRTIM_SET2R_CMP3_Pos)          /*!< 0x00000020 */\n#define HRTIM_SET2R_CMP3              HRTIM_SET2R_CMP3_Msk                     /*!< Timer A compare 3 */\n#define HRTIM_SET2R_CMP4_Pos          (6U)\n#define HRTIM_SET2R_CMP4_Msk          (0x1UL << HRTIM_SET2R_CMP4_Pos)          /*!< 0x00000040 */\n#define HRTIM_SET2R_CMP4              HRTIM_SET2R_CMP4_Msk                     /*!< Timer A compare 4 */\n\n#define HRTIM_SET2R_MSTPER_Pos        (7U)\n#define HRTIM_SET2R_MSTPER_Msk        (0x1UL << HRTIM_SET2R_MSTPER_Pos)        /*!< 0x00000080 */\n#define HRTIM_SET2R_MSTPER            HRTIM_SET2R_MSTPER_Msk                   /*!< Master period */\n#define HRTIM_SET2R_MSTCMP1_Pos       (8U)\n#define HRTIM_SET2R_MSTCMP1_Msk       (0x1UL << HRTIM_SET2R_MSTCMP1_Pos)       /*!< 0x00000100 */\n#define HRTIM_SET2R_MSTCMP1           HRTIM_SET2R_MSTCMP1_Msk                  /*!< Master compare 1 */\n#define HRTIM_SET2R_MSTCMP2_Pos       (9U)\n#define HRTIM_SET2R_MSTCMP2_Msk       (0x1UL << HRTIM_SET2R_MSTCMP2_Pos)       /*!< 0x00000200 */\n#define HRTIM_SET2R_MSTCMP2           HRTIM_SET2R_MSTCMP2_Msk                  /*!< Master compare 2 */\n#define HRTIM_SET2R_MSTCMP3_Pos       (10U)\n#define HRTIM_SET2R_MSTCMP3_Msk       (0x1UL << HRTIM_SET2R_MSTCMP3_Pos)       /*!< 0x00000400 */\n#define HRTIM_SET2R_MSTCMP3           HRTIM_SET2R_MSTCMP3_Msk                  /*!< Master compare 3 */\n#define HRTIM_SET2R_MSTCMP4_Pos       (11U)\n#define HRTIM_SET2R_MSTCMP4_Msk       (0x1UL << HRTIM_SET2R_MSTCMP4_Pos)       /*!< 0x00000800 */\n#define HRTIM_SET2R_MSTCMP4           HRTIM_SET2R_MSTCMP4_Msk                  /*!< Master compare 4 */\n\n#define HRTIM_SET2R_TIMEVNT1_Pos      (12U)\n#define HRTIM_SET2R_TIMEVNT1_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT1_Pos)      /*!< 0x00001000 */\n#define HRTIM_SET2R_TIMEVNT1          HRTIM_SET2R_TIMEVNT1_Msk                 /*!< Timer event 1 */\n#define HRTIM_SET2R_TIMEVNT2_Pos      (13U)\n#define HRTIM_SET2R_TIMEVNT2_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT2_Pos)      /*!< 0x00002000 */\n#define HRTIM_SET2R_TIMEVNT2          HRTIM_SET2R_TIMEVNT2_Msk                 /*!< Timer event 2 */\n#define HRTIM_SET2R_TIMEVNT3_Pos      (14U)\n#define HRTIM_SET2R_TIMEVNT3_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT3_Pos)      /*!< 0x00004000 */\n#define HRTIM_SET2R_TIMEVNT3          HRTIM_SET2R_TIMEVNT3_Msk                 /*!< Timer event 3 */\n#define HRTIM_SET2R_TIMEVNT4_Pos      (15U)\n#define HRTIM_SET2R_TIMEVNT4_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT4_Pos)      /*!< 0x00008000 */\n#define HRTIM_SET2R_TIMEVNT4          HRTIM_SET2R_TIMEVNT4_Msk                 /*!< Timer event 4 */\n#define HRTIM_SET2R_TIMEVNT5_Pos      (16U)\n#define HRTIM_SET2R_TIMEVNT5_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT5_Pos)      /*!< 0x00010000 */\n#define HRTIM_SET2R_TIMEVNT5          HRTIM_SET2R_TIMEVNT5_Msk                 /*!< Timer event 5 */\n#define HRTIM_SET2R_TIMEVNT6_Pos      (17U)\n#define HRTIM_SET2R_TIMEVNT6_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT6_Pos)      /*!< 0x00020000 */\n#define HRTIM_SET2R_TIMEVNT6          HRTIM_SET2R_TIMEVNT6_Msk                 /*!< Timer event 6 */\n#define HRTIM_SET2R_TIMEVNT7_Pos      (18U)\n#define HRTIM_SET2R_TIMEVNT7_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT7_Pos)      /*!< 0x00040000 */\n#define HRTIM_SET2R_TIMEVNT7          HRTIM_SET2R_TIMEVNT7_Msk                 /*!< Timer event 7 */\n#define HRTIM_SET2R_TIMEVNT8_Pos      (19U)\n#define HRTIM_SET2R_TIMEVNT8_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT8_Pos)      /*!< 0x00080000 */\n#define HRTIM_SET2R_TIMEVNT8          HRTIM_SET2R_TIMEVNT8_Msk                 /*!< Timer event 8 */\n#define HRTIM_SET2R_TIMEVNT9_Pos      (20U)\n#define HRTIM_SET2R_TIMEVNT9_Msk      (0x1UL << HRTIM_SET2R_TIMEVNT9_Pos)      /*!< 0x00100000 */\n#define HRTIM_SET2R_TIMEVNT9          HRTIM_SET2R_TIMEVNT9_Msk                 /*!< Timer event 9 */\n\n#define HRTIM_SET2R_EXTVNT1_Pos       (21U)\n#define HRTIM_SET2R_EXTVNT1_Msk       (0x1UL << HRTIM_SET2R_EXTVNT1_Pos)       /*!< 0x00200000 */\n#define HRTIM_SET2R_EXTVNT1           HRTIM_SET2R_EXTVNT1_Msk                  /*!< External event 1 */\n#define HRTIM_SET2R_EXTVNT2_Pos       (22U)\n#define HRTIM_SET2R_EXTVNT2_Msk       (0x1UL << HRTIM_SET2R_EXTVNT2_Pos)       /*!< 0x00400000 */\n#define HRTIM_SET2R_EXTVNT2           HRTIM_SET2R_EXTVNT2_Msk                  /*!< External event 2 */\n#define HRTIM_SET2R_EXTVNT3_Pos       (23U)\n#define HRTIM_SET2R_EXTVNT3_Msk       (0x1UL << HRTIM_SET2R_EXTVNT3_Pos)       /*!< 0x00800000 */\n#define HRTIM_SET2R_EXTVNT3           HRTIM_SET2R_EXTVNT3_Msk                  /*!< External event 3 */\n#define HRTIM_SET2R_EXTVNT4_Pos       (24U)\n#define HRTIM_SET2R_EXTVNT4_Msk       (0x1UL << HRTIM_SET2R_EXTVNT4_Pos)       /*!< 0x01000000 */\n#define HRTIM_SET2R_EXTVNT4           HRTIM_SET2R_EXTVNT4_Msk                  /*!< External event 4 */\n#define HRTIM_SET2R_EXTVNT5_Pos       (25U)\n#define HRTIM_SET2R_EXTVNT5_Msk       (0x1UL << HRTIM_SET2R_EXTVNT5_Pos)       /*!< 0x02000000 */\n#define HRTIM_SET2R_EXTVNT5           HRTIM_SET2R_EXTVNT5_Msk                  /*!< External event 5 */\n#define HRTIM_SET2R_EXTVNT6_Pos       (26U)\n#define HRTIM_SET2R_EXTVNT6_Msk       (0x1UL << HRTIM_SET2R_EXTVNT6_Pos)       /*!< 0x04000000 */\n#define HRTIM_SET2R_EXTVNT6           HRTIM_SET2R_EXTVNT6_Msk                  /*!< External event 6 */\n#define HRTIM_SET2R_EXTVNT7_Pos       (27U)\n#define HRTIM_SET2R_EXTVNT7_Msk       (0x1UL << HRTIM_SET2R_EXTVNT7_Pos)       /*!< 0x08000000 */\n#define HRTIM_SET2R_EXTVNT7           HRTIM_SET2R_EXTVNT7_Msk                  /*!< External event 7 */\n#define HRTIM_SET2R_EXTVNT8_Pos       (28U)\n#define HRTIM_SET2R_EXTVNT8_Msk       (0x1UL << HRTIM_SET2R_EXTVNT8_Pos)       /*!< 0x10000000 */\n#define HRTIM_SET2R_EXTVNT8           HRTIM_SET2R_EXTVNT8_Msk                  /*!< External event 8 */\n#define HRTIM_SET2R_EXTVNT9_Pos       (29U)\n#define HRTIM_SET2R_EXTVNT9_Msk       (0x1UL << HRTIM_SET2R_EXTVNT9_Pos)       /*!< 0x20000000 */\n#define HRTIM_SET2R_EXTVNT9           HRTIM_SET2R_EXTVNT9_Msk                  /*!< External event 9 */\n#define HRTIM_SET2R_EXTVNT10_Pos      (30U)\n#define HRTIM_SET2R_EXTVNT10_Msk      (0x1UL << HRTIM_SET2R_EXTVNT10_Pos)      /*!< 0x40000000 */\n#define HRTIM_SET2R_EXTVNT10          HRTIM_SET2R_EXTVNT10_Msk                 /*!< External event 10 */\n\n#define HRTIM_SET2R_UPDATE_Pos        (31U)\n#define HRTIM_SET2R_UPDATE_Msk        (0x1UL << HRTIM_SET2R_UPDATE_Pos)        /*!< 0x80000000 */\n#define HRTIM_SET2R_UPDATE            HRTIM_SET2R_UPDATE_Msk                   /*!< Register update (transfer preload to active) */\n\n/**** Bit definition for Slave Output 2 reset register ************************/\n#define HRTIM_RST2R_SRT_Pos           (0U)\n#define HRTIM_RST2R_SRT_Msk           (0x1UL << HRTIM_RST2R_SRT_Pos)           /*!< 0x00000001 */\n#define HRTIM_RST2R_SRT               HRTIM_RST2R_SRT_Msk                      /*!< software reset trigger */\n#define HRTIM_RST2R_RESYNC_Pos        (1U)\n#define HRTIM_RST2R_RESYNC_Msk        (0x1UL << HRTIM_RST2R_RESYNC_Pos)        /*!< 0x00000002 */\n#define HRTIM_RST2R_RESYNC            HRTIM_RST2R_RESYNC_Msk                   /*!< Timer A resynchronization */\n#define HRTIM_RST2R_PER_Pos           (2U)\n#define HRTIM_RST2R_PER_Msk           (0x1UL << HRTIM_RST2R_PER_Pos)           /*!< 0x00000004 */\n#define HRTIM_RST2R_PER               HRTIM_RST2R_PER_Msk                      /*!< Timer A period */\n#define HRTIM_RST2R_CMP1_Pos          (3U)\n#define HRTIM_RST2R_CMP1_Msk          (0x1UL << HRTIM_RST2R_CMP1_Pos)          /*!< 0x00000008 */\n#define HRTIM_RST2R_CMP1              HRTIM_RST2R_CMP1_Msk                     /*!< Timer A compare 1 */\n#define HRTIM_RST2R_CMP2_Pos          (4U)\n#define HRTIM_RST2R_CMP2_Msk          (0x1UL << HRTIM_RST2R_CMP2_Pos)          /*!< 0x00000010 */\n#define HRTIM_RST2R_CMP2              HRTIM_RST2R_CMP2_Msk                     /*!< Timer A compare 2 */\n#define HRTIM_RST2R_CMP3_Pos          (5U)\n#define HRTIM_RST2R_CMP3_Msk          (0x1UL << HRTIM_RST2R_CMP3_Pos)          /*!< 0x00000020 */\n#define HRTIM_RST2R_CMP3              HRTIM_RST2R_CMP3_Msk                     /*!< Timer A compare 3 */\n#define HRTIM_RST2R_CMP4_Pos          (6U)\n#define HRTIM_RST2R_CMP4_Msk          (0x1UL << HRTIM_RST2R_CMP4_Pos)          /*!< 0x00000040 */\n#define HRTIM_RST2R_CMP4              HRTIM_RST2R_CMP4_Msk                     /*!< Timer A compare 4 */\n\n#define HRTIM_RST2R_MSTPER_Pos        (7U)\n#define HRTIM_RST2R_MSTPER_Msk        (0x1UL << HRTIM_RST2R_MSTPER_Pos)        /*!< 0x00000080 */\n#define HRTIM_RST2R_MSTPER            HRTIM_RST2R_MSTPER_Msk                   /*!< Master period */\n#define HRTIM_RST2R_MSTCMP1_Pos       (8U)\n#define HRTIM_RST2R_MSTCMP1_Msk       (0x1UL << HRTIM_RST2R_MSTCMP1_Pos)       /*!< 0x00000100 */\n#define HRTIM_RST2R_MSTCMP1           HRTIM_RST2R_MSTCMP1_Msk                  /*!< Master compare 1 */\n#define HRTIM_RST2R_MSTCMP2_Pos       (9U)\n#define HRTIM_RST2R_MSTCMP2_Msk       (0x1UL << HRTIM_RST2R_MSTCMP2_Pos)       /*!< 0x00000200 */\n#define HRTIM_RST2R_MSTCMP2           HRTIM_RST2R_MSTCMP2_Msk                  /*!< Master compare 2 */\n#define HRTIM_RST2R_MSTCMP3_Pos       (10U)\n#define HRTIM_RST2R_MSTCMP3_Msk       (0x1UL << HRTIM_RST2R_MSTCMP3_Pos)       /*!< 0x00000400 */\n#define HRTIM_RST2R_MSTCMP3           HRTIM_RST2R_MSTCMP3_Msk                  /*!< Master compare 3 */\n#define HRTIM_RST2R_MSTCMP4_Pos       (11U)\n#define HRTIM_RST2R_MSTCMP4_Msk       (0x1UL << HRTIM_RST2R_MSTCMP4_Pos)       /*!< 0x00000800 */\n#define HRTIM_RST2R_MSTCMP4           HRTIM_RST2R_MSTCMP4_Msk                  /*!< Master compare 4 */\n\n#define HRTIM_RST2R_TIMEVNT1_Pos      (12U)\n#define HRTIM_RST2R_TIMEVNT1_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT1_Pos)      /*!< 0x00001000 */\n#define HRTIM_RST2R_TIMEVNT1          HRTIM_RST2R_TIMEVNT1_Msk                 /*!< Timer event 1 */\n#define HRTIM_RST2R_TIMEVNT2_Pos      (13U)\n#define HRTIM_RST2R_TIMEVNT2_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT2_Pos)      /*!< 0x00002000 */\n#define HRTIM_RST2R_TIMEVNT2          HRTIM_RST2R_TIMEVNT2_Msk                 /*!< Timer event 2 */\n#define HRTIM_RST2R_TIMEVNT3_Pos      (14U)\n#define HRTIM_RST2R_TIMEVNT3_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT3_Pos)      /*!< 0x00004000 */\n#define HRTIM_RST2R_TIMEVNT3          HRTIM_RST2R_TIMEVNT3_Msk                 /*!< Timer event 3 */\n#define HRTIM_RST2R_TIMEVNT4_Pos      (15U)\n#define HRTIM_RST2R_TIMEVNT4_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT4_Pos)      /*!< 0x00008000 */\n#define HRTIM_RST2R_TIMEVNT4          HRTIM_RST2R_TIMEVNT4_Msk                 /*!< Timer event 4 */\n#define HRTIM_RST2R_TIMEVNT5_Pos      (16U)\n#define HRTIM_RST2R_TIMEVNT5_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT5_Pos)      /*!< 0x00010000 */\n#define HRTIM_RST2R_TIMEVNT5          HRTIM_RST2R_TIMEVNT5_Msk                 /*!< Timer event 5 */\n#define HRTIM_RST2R_TIMEVNT6_Pos      (17U)\n#define HRTIM_RST2R_TIMEVNT6_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT6_Pos)      /*!< 0x00020000 */\n#define HRTIM_RST2R_TIMEVNT6          HRTIM_RST2R_TIMEVNT6_Msk                 /*!< Timer event 6 */\n#define HRTIM_RST2R_TIMEVNT7_Pos      (18U)\n#define HRTIM_RST2R_TIMEVNT7_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT7_Pos)      /*!< 0x00040000 */\n#define HRTIM_RST2R_TIMEVNT7          HRTIM_RST2R_TIMEVNT7_Msk                 /*!< Timer event 7 */\n#define HRTIM_RST2R_TIMEVNT8_Pos      (19U)\n#define HRTIM_RST2R_TIMEVNT8_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT8_Pos)      /*!< 0x00080000 */\n#define HRTIM_RST2R_TIMEVNT8          HRTIM_RST2R_TIMEVNT8_Msk                 /*!< Timer event 8 */\n#define HRTIM_RST2R_TIMEVNT9_Pos      (20U)\n#define HRTIM_RST2R_TIMEVNT9_Msk      (0x1UL << HRTIM_RST2R_TIMEVNT9_Pos)      /*!< 0x00100000 */\n#define HRTIM_RST2R_TIMEVNT9          HRTIM_RST2R_TIMEVNT9_Msk                 /*!< Timer event 9 */\n\n#define HRTIM_RST2R_EXTVNT1_Pos       (21U)\n#define HRTIM_RST2R_EXTVNT1_Msk       (0x1UL << HRTIM_RST2R_EXTVNT1_Pos)       /*!< 0x00200000 */\n#define HRTIM_RST2R_EXTVNT1           HRTIM_RST2R_EXTVNT1_Msk                  /*!< External event 1 */\n#define HRTIM_RST2R_EXTVNT2_Pos       (22U)\n#define HRTIM_RST2R_EXTVNT2_Msk       (0x1UL << HRTIM_RST2R_EXTVNT2_Pos)       /*!< 0x00400000 */\n#define HRTIM_RST2R_EXTVNT2           HRTIM_RST2R_EXTVNT2_Msk                  /*!< External event 2 */\n#define HRTIM_RST2R_EXTVNT3_Pos       (23U)\n#define HRTIM_RST2R_EXTVNT3_Msk       (0x1UL << HRTIM_RST2R_EXTVNT3_Pos)       /*!< 0x00800000 */\n#define HRTIM_RST2R_EXTVNT3           HRTIM_RST2R_EXTVNT3_Msk                  /*!< External event 3 */\n#define HRTIM_RST2R_EXTVNT4_Pos       (24U)\n#define HRTIM_RST2R_EXTVNT4_Msk       (0x1UL << HRTIM_RST2R_EXTVNT4_Pos)       /*!< 0x01000000 */\n#define HRTIM_RST2R_EXTVNT4           HRTIM_RST2R_EXTVNT4_Msk                  /*!< External event 4 */\n#define HRTIM_RST2R_EXTVNT5_Pos       (25U)\n#define HRTIM_RST2R_EXTVNT5_Msk       (0x1UL << HRTIM_RST2R_EXTVNT5_Pos)       /*!< 0x02000000 */\n#define HRTIM_RST2R_EXTVNT5           HRTIM_RST2R_EXTVNT5_Msk                  /*!< External event 5 */\n#define HRTIM_RST2R_EXTVNT6_Pos       (26U)\n#define HRTIM_RST2R_EXTVNT6_Msk       (0x1UL << HRTIM_RST2R_EXTVNT6_Pos)       /*!< 0x04000000 */\n#define HRTIM_RST2R_EXTVNT6           HRTIM_RST2R_EXTVNT6_Msk                  /*!< External event 6 */\n#define HRTIM_RST2R_EXTVNT7_Pos       (27U)\n#define HRTIM_RST2R_EXTVNT7_Msk       (0x1UL << HRTIM_RST2R_EXTVNT7_Pos)       /*!< 0x08000000 */\n#define HRTIM_RST2R_EXTVNT7           HRTIM_RST2R_EXTVNT7_Msk                  /*!< External event 7 */\n#define HRTIM_RST2R_EXTVNT8_Pos       (28U)\n#define HRTIM_RST2R_EXTVNT8_Msk       (0x1UL << HRTIM_RST2R_EXTVNT8_Pos)       /*!< 0x10000000 */\n#define HRTIM_RST2R_EXTVNT8           HRTIM_RST2R_EXTVNT8_Msk                  /*!< External event 8 */\n#define HRTIM_RST2R_EXTVNT9_Pos       (29U)\n#define HRTIM_RST2R_EXTVNT9_Msk       (0x1UL << HRTIM_RST2R_EXTVNT9_Pos)       /*!< 0x20000000 */\n#define HRTIM_RST2R_EXTVNT9           HRTIM_RST2R_EXTVNT9_Msk                  /*!< External event 9 */\n#define HRTIM_RST2R_EXTVNT10_Pos      (30U)\n#define HRTIM_RST2R_EXTVNT10_Msk      (0x1UL << HRTIM_RST2R_EXTVNT10_Pos)      /*!< 0x40000000 */\n#define HRTIM_RST2R_EXTVNT10          HRTIM_RST2R_EXTVNT10_Msk                 /*!< External event 10 */\n\n#define HRTIM_RST2R_UPDATE_Pos        (31U)\n#define HRTIM_RST2R_UPDATE_Msk        (0x1UL << HRTIM_RST2R_UPDATE_Pos)        /*!< 0x80000000 */\n#define HRTIM_RST2R_UPDATE            HRTIM_RST2R_UPDATE_Msk                   /*!< Register update (transfer preload to active) */\n\n/**** Bit definition for Slave external event filtering  register 1 ***********/\n#define HRTIM_EEFR1_EE1LTCH_Pos       (0U)\n#define HRTIM_EEFR1_EE1LTCH_Msk       (0x1UL << HRTIM_EEFR1_EE1LTCH_Pos)       /*!< 0x00000001 */\n#define HRTIM_EEFR1_EE1LTCH           HRTIM_EEFR1_EE1LTCH_Msk                  /*!< External Event 1 latch */\n#define HRTIM_EEFR1_EE1FLTR_Pos       (1U)\n#define HRTIM_EEFR1_EE1FLTR_Msk       (0xFUL << HRTIM_EEFR1_EE1FLTR_Pos)       /*!< 0x0000001E */\n#define HRTIM_EEFR1_EE1FLTR           HRTIM_EEFR1_EE1FLTR_Msk                  /*!< External Event 1 filter mask */\n#define HRTIM_EEFR1_EE1FLTR_0         (0x1UL << HRTIM_EEFR1_EE1FLTR_Pos)        /*!< 0x00000002 */\n#define HRTIM_EEFR1_EE1FLTR_1         (0x2UL << HRTIM_EEFR1_EE1FLTR_Pos)        /*!< 0x00000004 */\n#define HRTIM_EEFR1_EE1FLTR_2         (0x4UL << HRTIM_EEFR1_EE1FLTR_Pos)        /*!< 0x00000008 */\n#define HRTIM_EEFR1_EE1FLTR_3         (0x8UL << HRTIM_EEFR1_EE1FLTR_Pos)        /*!< 0x00000010 */\n\n#define HRTIM_EEFR1_EE2LTCH_Pos       (6U)\n#define HRTIM_EEFR1_EE2LTCH_Msk       (0x1UL << HRTIM_EEFR1_EE2LTCH_Pos)       /*!< 0x00000040 */\n#define HRTIM_EEFR1_EE2LTCH           HRTIM_EEFR1_EE2LTCH_Msk                  /*!< External Event 2 latch */\n#define HRTIM_EEFR1_EE2FLTR_Pos       (7U)\n#define HRTIM_EEFR1_EE2FLTR_Msk       (0xFUL << HRTIM_EEFR1_EE2FLTR_Pos)       /*!< 0x00000780 */\n#define HRTIM_EEFR1_EE2FLTR           HRTIM_EEFR1_EE2FLTR_Msk                  /*!< External Event 2 filter mask */\n#define HRTIM_EEFR1_EE2FLTR_0         (0x1UL << HRTIM_EEFR1_EE2FLTR_Pos)        /*!< 0x00000080 */\n#define HRTIM_EEFR1_EE2FLTR_1         (0x2UL << HRTIM_EEFR1_EE2FLTR_Pos)        /*!< 0x00000100 */\n#define HRTIM_EEFR1_EE2FLTR_2         (0x4UL << HRTIM_EEFR1_EE2FLTR_Pos)        /*!< 0x00000200 */\n#define HRTIM_EEFR1_EE2FLTR_3         (0x8UL << HRTIM_EEFR1_EE2FLTR_Pos)        /*!< 0x00000400 */\n\n#define HRTIM_EEFR1_EE3LTCH_Pos       (12U)\n#define HRTIM_EEFR1_EE3LTCH_Msk       (0x1UL << HRTIM_EEFR1_EE3LTCH_Pos)       /*!< 0x00001000 */\n#define HRTIM_EEFR1_EE3LTCH           HRTIM_EEFR1_EE3LTCH_Msk                  /*!< External Event 3 latch */\n#define HRTIM_EEFR1_EE3FLTR_Pos       (13U)\n#define HRTIM_EEFR1_EE3FLTR_Msk       (0xFUL << HRTIM_EEFR1_EE3FLTR_Pos)       /*!< 0x0001E000 */\n#define HRTIM_EEFR1_EE3FLTR           HRTIM_EEFR1_EE3FLTR_Msk                  /*!< External Event 3 filter mask */\n#define HRTIM_EEFR1_EE3FLTR_0         (0x1UL << HRTIM_EEFR1_EE3FLTR_Pos)        /*!< 0x00002000 */\n#define HRTIM_EEFR1_EE3FLTR_1         (0x2UL << HRTIM_EEFR1_EE3FLTR_Pos)        /*!< 0x00004000 */\n#define HRTIM_EEFR1_EE3FLTR_2         (0x4UL << HRTIM_EEFR1_EE3FLTR_Pos)        /*!< 0x00008000 */\n#define HRTIM_EEFR1_EE3FLTR_3         (0x8UL << HRTIM_EEFR1_EE3FLTR_Pos)        /*!< 0x00010000 */\n\n#define HRTIM_EEFR1_EE4LTCH_Pos       (18U)\n#define HRTIM_EEFR1_EE4LTCH_Msk       (0x1UL << HRTIM_EEFR1_EE4LTCH_Pos)       /*!< 0x00040000 */\n#define HRTIM_EEFR1_EE4LTCH           HRTIM_EEFR1_EE4LTCH_Msk                  /*!< External Event 4 latch */\n#define HRTIM_EEFR1_EE4FLTR_Pos       (19U)\n#define HRTIM_EEFR1_EE4FLTR_Msk       (0xFUL << HRTIM_EEFR1_EE4FLTR_Pos)       /*!< 0x00780000 */\n#define HRTIM_EEFR1_EE4FLTR           HRTIM_EEFR1_EE4FLTR_Msk                  /*!< External Event 4 filter mask */\n#define HRTIM_EEFR1_EE4FLTR_0         (0x1UL << HRTIM_EEFR1_EE4FLTR_Pos)        /*!< 0x00080000 */\n#define HRTIM_EEFR1_EE4FLTR_1         (0x2UL << HRTIM_EEFR1_EE4FLTR_Pos)        /*!< 0x00100000 */\n#define HRTIM_EEFR1_EE4FLTR_2         (0x4UL << HRTIM_EEFR1_EE4FLTR_Pos)        /*!< 0x00200000 */\n#define HRTIM_EEFR1_EE4FLTR_3         (0x8UL << HRTIM_EEFR1_EE4FLTR_Pos)        /*!< 0x00400000 */\n\n#define HRTIM_EEFR1_EE5LTCH_Pos       (24U)\n#define HRTIM_EEFR1_EE5LTCH_Msk       (0x1UL << HRTIM_EEFR1_EE5LTCH_Pos)       /*!< 0x01000000 */\n#define HRTIM_EEFR1_EE5LTCH           HRTIM_EEFR1_EE5LTCH_Msk                  /*!< External Event 5 latch */\n#define HRTIM_EEFR1_EE5FLTR_Pos       (25U)\n#define HRTIM_EEFR1_EE5FLTR_Msk       (0xFUL << HRTIM_EEFR1_EE5FLTR_Pos)       /*!< 0x1E000000 */\n#define HRTIM_EEFR1_EE5FLTR           HRTIM_EEFR1_EE5FLTR_Msk                  /*!< External Event 5 filter mask */\n#define HRTIM_EEFR1_EE5FLTR_0         (0x1UL << HRTIM_EEFR1_EE5FLTR_Pos)        /*!< 0x02000000 */\n#define HRTIM_EEFR1_EE5FLTR_1         (0x2UL << HRTIM_EEFR1_EE5FLTR_Pos)        /*!< 0x04000000 */\n#define HRTIM_EEFR1_EE5FLTR_2         (0x4UL << HRTIM_EEFR1_EE5FLTR_Pos)        /*!< 0x08000000 */\n#define HRTIM_EEFR1_EE5FLTR_3         (0x8UL << HRTIM_EEFR1_EE5FLTR_Pos)        /*!< 0x10000000 */\n\n/**** Bit definition for Slave external event filtering  register 2 ***********/\n#define HRTIM_EEFR2_EE6LTCH_Pos       (0U)\n#define HRTIM_EEFR2_EE6LTCH_Msk       (0x1UL << HRTIM_EEFR2_EE6LTCH_Pos)       /*!< 0x00000001 */\n#define HRTIM_EEFR2_EE6LTCH           HRTIM_EEFR2_EE6LTCH_Msk                  /*!< External Event 6 latch */\n#define HRTIM_EEFR2_EE6FLTR_Pos       (1U)\n#define HRTIM_EEFR2_EE6FLTR_Msk       (0xFUL << HRTIM_EEFR2_EE6FLTR_Pos)       /*!< 0x0000001E */\n#define HRTIM_EEFR2_EE6FLTR           HRTIM_EEFR2_EE6FLTR_Msk                  /*!< External Event 6 filter mask */\n#define HRTIM_EEFR2_EE6FLTR_0         (0x1UL << HRTIM_EEFR2_EE6FLTR_Pos)        /*!< 0x00000002 */\n#define HRTIM_EEFR2_EE6FLTR_1         (0x2UL << HRTIM_EEFR2_EE6FLTR_Pos)        /*!< 0x00000004 */\n#define HRTIM_EEFR2_EE6FLTR_2         (0x4UL << HRTIM_EEFR2_EE6FLTR_Pos)        /*!< 0x00000008 */\n#define HRTIM_EEFR2_EE6FLTR_3         (0x8UL << HRTIM_EEFR2_EE6FLTR_Pos)        /*!< 0x00000010 */\n\n#define HRTIM_EEFR2_EE7LTCH_Pos       (6U)\n#define HRTIM_EEFR2_EE7LTCH_Msk       (0x1UL << HRTIM_EEFR2_EE7LTCH_Pos)       /*!< 0x00000040 */\n#define HRTIM_EEFR2_EE7LTCH           HRTIM_EEFR2_EE7LTCH_Msk                  /*!< External Event 7 latch */\n#define HRTIM_EEFR2_EE7FLTR_Pos       (7U)\n#define HRTIM_EEFR2_EE7FLTR_Msk       (0xFUL << HRTIM_EEFR2_EE7FLTR_Pos)       /*!< 0x00000780 */\n#define HRTIM_EEFR2_EE7FLTR           HRTIM_EEFR2_EE7FLTR_Msk                  /*!< External Event 7 filter mask */\n#define HRTIM_EEFR2_EE7FLTR_0         (0x1UL << HRTIM_EEFR2_EE7FLTR_Pos)        /*!< 0x00000080 */\n#define HRTIM_EEFR2_EE7FLTR_1         (0x2UL << HRTIM_EEFR2_EE7FLTR_Pos)        /*!< 0x00000100 */\n#define HRTIM_EEFR2_EE7FLTR_2         (0x4UL << HRTIM_EEFR2_EE7FLTR_Pos)        /*!< 0x00000200 */\n#define HRTIM_EEFR2_EE7FLTR_3         (0x8UL << HRTIM_EEFR2_EE7FLTR_Pos)        /*!< 0x00000400 */\n\n#define HRTIM_EEFR2_EE8LTCH_Pos       (12U)\n#define HRTIM_EEFR2_EE8LTCH_Msk       (0x1UL << HRTIM_EEFR2_EE8LTCH_Pos)       /*!< 0x00001000 */\n#define HRTIM_EEFR2_EE8LTCH           HRTIM_EEFR2_EE8LTCH_Msk                  /*!< External Event 8 latch */\n#define HRTIM_EEFR2_EE8FLTR_Pos       (13U)\n#define HRTIM_EEFR2_EE8FLTR_Msk       (0xFUL << HRTIM_EEFR2_EE8FLTR_Pos)       /*!< 0x0001E000 */\n#define HRTIM_EEFR2_EE8FLTR           HRTIM_EEFR2_EE8FLTR_Msk                  /*!< External Event 8 filter mask */\n#define HRTIM_EEFR2_EE8FLTR_0         (0x1UL << HRTIM_EEFR2_EE8FLTR_Pos)        /*!< 0x00002000 */\n#define HRTIM_EEFR2_EE8FLTR_1         (0x2UL << HRTIM_EEFR2_EE8FLTR_Pos)        /*!< 0x00004000 */\n#define HRTIM_EEFR2_EE8FLTR_2         (0x4UL << HRTIM_EEFR2_EE8FLTR_Pos)        /*!< 0x00008000 */\n#define HRTIM_EEFR2_EE8FLTR_3         (0x8UL << HRTIM_EEFR2_EE8FLTR_Pos)        /*!< 0x00010000 */\n\n#define HRTIM_EEFR2_EE9LTCH_Pos       (18U)\n#define HRTIM_EEFR2_EE9LTCH_Msk       (0x1UL << HRTIM_EEFR2_EE9LTCH_Pos)       /*!< 0x00040000 */\n#define HRTIM_EEFR2_EE9LTCH           HRTIM_EEFR2_EE9LTCH_Msk                  /*!< External Event 9 latch */\n#define HRTIM_EEFR2_EE9FLTR_Pos       (19U)\n#define HRTIM_EEFR2_EE9FLTR_Msk       (0xFUL << HRTIM_EEFR2_EE9FLTR_Pos)       /*!< 0x00780000 */\n#define HRTIM_EEFR2_EE9FLTR           HRTIM_EEFR2_EE9FLTR_Msk                  /*!< External Event 9 filter mask */\n#define HRTIM_EEFR2_EE9FLTR_0         (0x1UL << HRTIM_EEFR2_EE9FLTR_Pos)        /*!< 0x00080000 */\n#define HRTIM_EEFR2_EE9FLTR_1         (0x2UL << HRTIM_EEFR2_EE9FLTR_Pos)        /*!< 0x00100000 */\n#define HRTIM_EEFR2_EE9FLTR_2         (0x4UL << HRTIM_EEFR2_EE9FLTR_Pos)        /*!< 0x00200000 */\n#define HRTIM_EEFR2_EE9FLTR_3         (0x8UL << HRTIM_EEFR2_EE9FLTR_Pos)        /*!< 0x00400000 */\n\n#define HRTIM_EEFR2_EE10LTCH_Pos      (24U)\n#define HRTIM_EEFR2_EE10LTCH_Msk      (0x1UL << HRTIM_EEFR2_EE10LTCH_Pos)      /*!< 0x01000000 */\n#define HRTIM_EEFR2_EE10LTCH          HRTIM_EEFR2_EE10LTCH_Msk                 /*!< External Event 10 latch */\n#define HRTIM_EEFR2_EE10FLTR_Pos      (25U)\n#define HRTIM_EEFR2_EE10FLTR_Msk      (0xFUL << HRTIM_EEFR2_EE10FLTR_Pos)      /*!< 0x1E000000 */\n#define HRTIM_EEFR2_EE10FLTR          HRTIM_EEFR2_EE10FLTR_Msk                 /*!< External Event 10 filter mask */\n#define HRTIM_EEFR2_EE10FLTR_0        (0x1UL << HRTIM_EEFR2_EE10FLTR_Pos)       /*!< 0x02000000 */\n#define HRTIM_EEFR2_EE10FLTR_1        (0x2UL << HRTIM_EEFR2_EE10FLTR_Pos)       /*!< 0x04000000 */\n#define HRTIM_EEFR2_EE10FLTR_2        (0x4UL << HRTIM_EEFR2_EE10FLTR_Pos)       /*!< 0x08000000 */\n#define HRTIM_EEFR2_EE10FLTR_3        (0x8UL << HRTIM_EEFR2_EE10FLTR_Pos)       /*!< 0x10000000 */\n\n/**** Bit definition for Slave Timer reset register ***************************/\n#define HRTIM_RSTR_UPDATE_Pos         (1U)\n#define HRTIM_RSTR_UPDATE_Msk         (0x1UL << HRTIM_RSTR_UPDATE_Pos)         /*!< 0x00000002 */\n#define HRTIM_RSTR_UPDATE             HRTIM_RSTR_UPDATE_Msk                    /*!< Timer update */\n#define HRTIM_RSTR_CMP2_Pos           (2U)\n#define HRTIM_RSTR_CMP2_Msk           (0x1UL << HRTIM_RSTR_CMP2_Pos)           /*!< 0x00000004 */\n#define HRTIM_RSTR_CMP2               HRTIM_RSTR_CMP2_Msk                      /*!< Timer compare2 */\n#define HRTIM_RSTR_CMP4_Pos           (3U)\n#define HRTIM_RSTR_CMP4_Msk           (0x1UL << HRTIM_RSTR_CMP4_Pos)           /*!< 0x00000008 */\n#define HRTIM_RSTR_CMP4               HRTIM_RSTR_CMP4_Msk                      /*!< Timer compare4 */\n\n#define HRTIM_RSTR_MSTPER_Pos         (4U)\n#define HRTIM_RSTR_MSTPER_Msk         (0x1UL << HRTIM_RSTR_MSTPER_Pos)         /*!< 0x00000010 */\n#define HRTIM_RSTR_MSTPER             HRTIM_RSTR_MSTPER_Msk                    /*!< Master period */\n#define HRTIM_RSTR_MSTCMP1_Pos        (5U)\n#define HRTIM_RSTR_MSTCMP1_Msk        (0x1UL << HRTIM_RSTR_MSTCMP1_Pos)        /*!< 0x00000020 */\n#define HRTIM_RSTR_MSTCMP1            HRTIM_RSTR_MSTCMP1_Msk                   /*!< Master compare1 */\n#define HRTIM_RSTR_MSTCMP2_Pos        (6U)\n#define HRTIM_RSTR_MSTCMP2_Msk        (0x1UL << HRTIM_RSTR_MSTCMP2_Pos)        /*!< 0x00000040 */\n#define HRTIM_RSTR_MSTCMP2            HRTIM_RSTR_MSTCMP2_Msk                   /*!< Master compare2 */\n#define HRTIM_RSTR_MSTCMP3_Pos        (7U)\n#define HRTIM_RSTR_MSTCMP3_Msk        (0x1UL << HRTIM_RSTR_MSTCMP3_Pos)        /*!< 0x00000080 */\n#define HRTIM_RSTR_MSTCMP3            HRTIM_RSTR_MSTCMP3_Msk                   /*!< Master compare3 */\n#define HRTIM_RSTR_MSTCMP4_Pos        (8U)\n#define HRTIM_RSTR_MSTCMP4_Msk        (0x1UL << HRTIM_RSTR_MSTCMP4_Pos)        /*!< 0x00000100 */\n#define HRTIM_RSTR_MSTCMP4            HRTIM_RSTR_MSTCMP4_Msk                   /*!< Master compare4 */\n\n#define HRTIM_RSTR_EXTEVNT1_Pos       (9U)\n#define HRTIM_RSTR_EXTEVNT1_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT1_Pos)       /*!< 0x00000200 */\n#define HRTIM_RSTR_EXTEVNT1           HRTIM_RSTR_EXTEVNT1_Msk                  /*!< External event 1 */\n#define HRTIM_RSTR_EXTEVNT2_Pos       (10U)\n#define HRTIM_RSTR_EXTEVNT2_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT2_Pos)       /*!< 0x00000400 */\n#define HRTIM_RSTR_EXTEVNT2           HRTIM_RSTR_EXTEVNT2_Msk                  /*!< External event 2 */\n#define HRTIM_RSTR_EXTEVNT3_Pos       (11U)\n#define HRTIM_RSTR_EXTEVNT3_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT3_Pos)       /*!< 0x00000800 */\n#define HRTIM_RSTR_EXTEVNT3           HRTIM_RSTR_EXTEVNT3_Msk                  /*!< External event 3 */\n#define HRTIM_RSTR_EXTEVNT4_Pos       (12U)\n#define HRTIM_RSTR_EXTEVNT4_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT4_Pos)       /*!< 0x00001000 */\n#define HRTIM_RSTR_EXTEVNT4           HRTIM_RSTR_EXTEVNT4_Msk                  /*!< External event 4 */\n#define HRTIM_RSTR_EXTEVNT5_Pos       (13U)\n#define HRTIM_RSTR_EXTEVNT5_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT5_Pos)       /*!< 0x00002000 */\n#define HRTIM_RSTR_EXTEVNT5           HRTIM_RSTR_EXTEVNT5_Msk                  /*!< External event 5 */\n#define HRTIM_RSTR_EXTEVNT6_Pos       (14U)\n#define HRTIM_RSTR_EXTEVNT6_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT6_Pos)       /*!< 0x00004000 */\n#define HRTIM_RSTR_EXTEVNT6           HRTIM_RSTR_EXTEVNT6_Msk                  /*!< External event 6 */\n#define HRTIM_RSTR_EXTEVNT7_Pos       (15U)\n#define HRTIM_RSTR_EXTEVNT7_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT7_Pos)       /*!< 0x00008000 */\n#define HRTIM_RSTR_EXTEVNT7           HRTIM_RSTR_EXTEVNT7_Msk                  /*!< External event 7 */\n#define HRTIM_RSTR_EXTEVNT8_Pos       (16U)\n#define HRTIM_RSTR_EXTEVNT8_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT8_Pos)       /*!< 0x00010000 */\n#define HRTIM_RSTR_EXTEVNT8           HRTIM_RSTR_EXTEVNT8_Msk                  /*!< External event 8 */\n#define HRTIM_RSTR_EXTEVNT9_Pos       (17U)\n#define HRTIM_RSTR_EXTEVNT9_Msk       (0x1UL << HRTIM_RSTR_EXTEVNT9_Pos)       /*!< 0x00020000 */\n#define HRTIM_RSTR_EXTEVNT9           HRTIM_RSTR_EXTEVNT9_Msk                  /*!< External event 9 */\n#define HRTIM_RSTR_EXTEVNT10_Pos      (18U)\n#define HRTIM_RSTR_EXTEVNT10_Msk      (0x1UL << HRTIM_RSTR_EXTEVNT10_Pos)      /*!< 0x00040000 */\n#define HRTIM_RSTR_EXTEVNT10          HRTIM_RSTR_EXTEVNT10_Msk                 /*!< External event 10 */\n\n/* Slave Timer A reset enable bits upon other slave timers events */\n#define HRTIM_RSTR_TIMBCMP1_Pos       (19U)\n#define HRTIM_RSTR_TIMBCMP1_Msk       (0x1UL << HRTIM_RSTR_TIMBCMP1_Pos)       /*!< 0x00080000 */\n#define HRTIM_RSTR_TIMBCMP1           HRTIM_RSTR_TIMBCMP1_Msk                  /*!< Timer B compare 1 */\n#define HRTIM_RSTR_TIMBCMP2_Pos       (20U)\n#define HRTIM_RSTR_TIMBCMP2_Msk       (0x1UL << HRTIM_RSTR_TIMBCMP2_Pos)       /*!< 0x00100000 */\n#define HRTIM_RSTR_TIMBCMP2           HRTIM_RSTR_TIMBCMP2_Msk                  /*!< Timer B compare 2 */\n#define HRTIM_RSTR_TIMBCMP4_Pos       (21U)\n#define HRTIM_RSTR_TIMBCMP4_Msk       (0x1UL << HRTIM_RSTR_TIMBCMP4_Pos)       /*!< 0x00200000 */\n#define HRTIM_RSTR_TIMBCMP4           HRTIM_RSTR_TIMBCMP4_Msk                  /*!< Timer B compare 4 */\n\n#define HRTIM_RSTR_TIMCCMP1_Pos       (22U)\n#define HRTIM_RSTR_TIMCCMP1_Msk       (0x1UL << HRTIM_RSTR_TIMCCMP1_Pos)       /*!< 0x00400000 */\n#define HRTIM_RSTR_TIMCCMP1           HRTIM_RSTR_TIMCCMP1_Msk                  /*!< Timer C compare 1 */\n#define HRTIM_RSTR_TIMCCMP2_Pos       (23U)\n#define HRTIM_RSTR_TIMCCMP2_Msk       (0x1UL << HRTIM_RSTR_TIMCCMP2_Pos)       /*!< 0x00800000 */\n#define HRTIM_RSTR_TIMCCMP2           HRTIM_RSTR_TIMCCMP2_Msk                  /*!< Timer C compare 2 */\n#define HRTIM_RSTR_TIMCCMP4_Pos       (24U)\n#define HRTIM_RSTR_TIMCCMP4_Msk       (0x1UL << HRTIM_RSTR_TIMCCMP4_Pos)       /*!< 0x01000000 */\n#define HRTIM_RSTR_TIMCCMP4           HRTIM_RSTR_TIMCCMP4_Msk                  /*!< Timer C compare 4 */\n\n#define HRTIM_RSTR_TIMDCMP1_Pos       (25U)\n#define HRTIM_RSTR_TIMDCMP1_Msk       (0x1UL << HRTIM_RSTR_TIMDCMP1_Pos)       /*!< 0x02000000 */\n#define HRTIM_RSTR_TIMDCMP1           HRTIM_RSTR_TIMDCMP1_Msk                  /*!< Timer D compare 1 */\n#define HRTIM_RSTR_TIMDCMP2_Pos       (26U)\n#define HRTIM_RSTR_TIMDCMP2_Msk       (0x1UL << HRTIM_RSTR_TIMDCMP2_Pos)       /*!< 0x04000000 */\n#define HRTIM_RSTR_TIMDCMP2           HRTIM_RSTR_TIMDCMP2_Msk                  /*!< Timer D compare 2 */\n#define HRTIM_RSTR_TIMDCMP4_Pos       (27U)\n#define HRTIM_RSTR_TIMDCMP4_Msk       (0x1UL << HRTIM_RSTR_TIMDCMP4_Pos)       /*!< 0x08000000 */\n#define HRTIM_RSTR_TIMDCMP4           HRTIM_RSTR_TIMDCMP4_Msk                  /*!< Timer D compare 4 */\n\n#define HRTIM_RSTR_TIMECMP1_Pos       (28U)\n#define HRTIM_RSTR_TIMECMP1_Msk       (0x1UL << HRTIM_RSTR_TIMECMP1_Pos)       /*!< 0x10000000 */\n#define HRTIM_RSTR_TIMECMP1           HRTIM_RSTR_TIMECMP1_Msk                  /*!< Timer E compare 1 */\n#define HRTIM_RSTR_TIMECMP2_Pos       (29U)\n#define HRTIM_RSTR_TIMECMP2_Msk       (0x1UL << HRTIM_RSTR_TIMECMP2_Pos)       /*!< 0x20000000 */\n#define HRTIM_RSTR_TIMECMP2           HRTIM_RSTR_TIMECMP2_Msk                  /*!< Timer E compare 2 */\n#define HRTIM_RSTR_TIMECMP4_Pos       (30U)\n#define HRTIM_RSTR_TIMECMP4_Msk       (0x1UL << HRTIM_RSTR_TIMECMP4_Pos)       /*!< 0x40000000 */\n#define HRTIM_RSTR_TIMECMP4           HRTIM_RSTR_TIMECMP4_Msk                  /*!< Timer E compare 4 */\n\n/* Slave Timer B reset enable bits upon other slave timers events */\n#define HRTIM_RSTBR_TIMACMP1_Pos       (19U)\n#define HRTIM_RSTBR_TIMACMP1_Msk       (0x1UL << HRTIM_RSTBR_TIMACMP1_Pos)     /*!< 0x00080000 */\n#define HRTIM_RSTBR_TIMACMP1           HRTIM_RSTBR_TIMACMP1_Msk                /*!< Timer A compare 1 */\n#define HRTIM_RSTBR_TIMACMP2_Pos       (20U)\n#define HRTIM_RSTBR_TIMACMP2_Msk       (0x1UL << HRTIM_RSTBR_TIMACMP2_Pos)     /*!< 0x00100000 */\n#define HRTIM_RSTBR_TIMACMP2           HRTIM_RSTBR_TIMACMP2_Msk                /*!< Timer A compare 2 */\n#define HRTIM_RSTBR_TIMACMP4_Pos       (21U)\n#define HRTIM_RSTBR_TIMACMP4_Msk       (0x1UL << HRTIM_RSTBR_TIMACMP4_Pos)     /*!< 0x00200000 */\n#define HRTIM_RSTBR_TIMACMP4           HRTIM_RSTBR_TIMACMP4_Msk                /*!< Timer A compare 4 */\n\n#define HRTIM_RSTBR_TIMCCMP1_Pos       (22U)\n#define HRTIM_RSTBR_TIMCCMP1_Msk       (0x1UL << HRTIM_RSTBR_TIMCCMP1_Pos)     /*!< 0x00400000 */\n#define HRTIM_RSTBR_TIMCCMP1           HRTIM_RSTBR_TIMCCMP1_Msk                /*!< Timer C compare 1 */\n#define HRTIM_RSTBR_TIMCCMP2_Pos       (23U)\n#define HRTIM_RSTBR_TIMCCMP2_Msk       (0x1UL << HRTIM_RSTBR_TIMCCMP2_Pos)     /*!< 0x00800000 */\n#define HRTIM_RSTBR_TIMCCMP2           HRTIM_RSTBR_TIMCCMP2_Msk                /*!< Timer C compare 2 */\n#define HRTIM_RSTBR_TIMCCMP4_Pos       (24U)\n#define HRTIM_RSTBR_TIMCCMP4_Msk       (0x1UL << HRTIM_RSTBR_TIMCCMP4_Pos)     /*!< 0x01000000 */\n#define HRTIM_RSTBR_TIMCCMP4           HRTIM_RSTBR_TIMCCMP4_Msk                /*!< Timer C compare 4 */\n\n#define HRTIM_RSTBR_TIMDCMP1_Pos       (25U)\n#define HRTIM_RSTBR_TIMDCMP1_Msk       (0x1UL << HRTIM_RSTBR_TIMDCMP1_Pos)     /*!< 0x02000000 */\n#define HRTIM_RSTBR_TIMDCMP1           HRTIM_RSTBR_TIMDCMP1_Msk                /*!< Timer D compare 1 */\n#define HRTIM_RSTBR_TIMDCMP2_Pos       (26U)\n#define HRTIM_RSTBR_TIMDCMP2_Msk       (0x1UL << HRTIM_RSTBR_TIMDCMP2_Pos)     /*!< 0x04000000 */\n#define HRTIM_RSTBR_TIMDCMP2           HRTIM_RSTBR_TIMDCMP2_Msk                /*!< Timer D compare 2 */\n#define HRTIM_RSTBR_TIMDCMP4_Pos       (27U)\n#define HRTIM_RSTBR_TIMDCMP4_Msk       (0x1UL << HRTIM_RSTBR_TIMDCMP4_Pos)     /*!< 0x08000000 */\n#define HRTIM_RSTBR_TIMDCMP4           HRTIM_RSTBR_TIMDCMP4_Msk                /*!< Timer D compare 4 */\n\n#define HRTIM_RSTBR_TIMECMP1_Pos       (28U)\n#define HRTIM_RSTBR_TIMECMP1_Msk       (0x1UL << HRTIM_RSTBR_TIMECMP1_Pos)     /*!< 0x10000000 */\n#define HRTIM_RSTBR_TIMECMP1           HRTIM_RSTBR_TIMECMP1_Msk                /*!< Timer E compare 1 */\n#define HRTIM_RSTBR_TIMECMP2_Pos       (29U)\n#define HRTIM_RSTBR_TIMECMP2_Msk       (0x1UL << HRTIM_RSTBR_TIMECMP2_Pos)     /*!< 0x20000000 */\n#define HRTIM_RSTBR_TIMECMP2           HRTIM_RSTBR_TIMECMP2_Msk                /*!< Timer E compare 2 */\n#define HRTIM_RSTBR_TIMECMP4_Pos       (30U)\n#define HRTIM_RSTBR_TIMECMP4_Msk       (0x1UL << HRTIM_RSTBR_TIMECMP4_Pos)     /*!< 0x40000000 */\n#define HRTIM_RSTBR_TIMECMP4           HRTIM_RSTBR_TIMECMP4_Msk                /*!< Timer E compare 4 */\n\n/* Slave Timer C reset enable bits upon other slave timers events */\n#define HRTIM_RSTCR_TIMACMP1_Pos       (19U)\n#define HRTIM_RSTCR_TIMACMP1_Msk       (0x1UL << HRTIM_RSTCR_TIMACMP1_Pos)     /*!< 0x00080000 */\n#define HRTIM_RSTCR_TIMACMP1           HRTIM_RSTCR_TIMACMP1_Msk                /*!< Timer A compare 1 */\n#define HRTIM_RSTCR_TIMACMP2_Pos       (20U)\n#define HRTIM_RSTCR_TIMACMP2_Msk       (0x1UL << HRTIM_RSTCR_TIMACMP2_Pos)     /*!< 0x00100000 */\n#define HRTIM_RSTCR_TIMACMP2           HRTIM_RSTCR_TIMACMP2_Msk                /*!< Timer A compare 2 */\n#define HRTIM_RSTCR_TIMACMP4_Pos       (21U)\n#define HRTIM_RSTCR_TIMACMP4_Msk       (0x1UL << HRTIM_RSTCR_TIMACMP4_Pos)     /*!< 0x00200000 */\n#define HRTIM_RSTCR_TIMACMP4           HRTIM_RSTCR_TIMACMP4_Msk                /*!< Timer A compare 4 */\n\n#define HRTIM_RSTCR_TIMBCMP1_Pos       (22U)\n#define HRTIM_RSTCR_TIMBCMP1_Msk       (0x1UL << HRTIM_RSTCR_TIMBCMP1_Pos)     /*!< 0x00400000 */\n#define HRTIM_RSTCR_TIMBCMP1           HRTIM_RSTCR_TIMBCMP1_Msk                /*!< Timer B compare 1 */\n#define HRTIM_RSTCR_TIMBCMP2_Pos       (23U)\n#define HRTIM_RSTCR_TIMBCMP2_Msk       (0x1UL << HRTIM_RSTCR_TIMBCMP2_Pos)     /*!< 0x00800000 */\n#define HRTIM_RSTCR_TIMBCMP2           HRTIM_RSTCR_TIMBCMP2_Msk                /*!< Timer B compare 2 */\n#define HRTIM_RSTCR_TIMBCMP4_Pos       (24U)\n#define HRTIM_RSTCR_TIMBCMP4_Msk       (0x1UL << HRTIM_RSTCR_TIMBCMP4_Pos)     /*!< 0x01000000 */\n#define HRTIM_RSTCR_TIMBCMP4           HRTIM_RSTCR_TIMBCMP4_Msk                /*!< Timer B compare 4 */\n\n#define HRTIM_RSTCR_TIMDCMP1_Pos       (25U)\n#define HRTIM_RSTCR_TIMDCMP1_Msk       (0x1UL << HRTIM_RSTCR_TIMDCMP1_Pos)     /*!< 0x02000000 */\n#define HRTIM_RSTCR_TIMDCMP1           HRTIM_RSTCR_TIMDCMP1_Msk                /*!< Timer D compare 1 */\n#define HRTIM_RSTCR_TIMDCMP2_Pos       (26U)\n#define HRTIM_RSTCR_TIMDCMP2_Msk       (0x1UL << HRTIM_RSTCR_TIMDCMP2_Pos)     /*!< 0x04000000 */\n#define HRTIM_RSTCR_TIMDCMP2           HRTIM_RSTCR_TIMDCMP2_Msk                /*!< Timer D compare 2 */\n#define HRTIM_RSTCR_TIMDCMP4_Pos       (27U)\n#define HRTIM_RSTCR_TIMDCMP4_Msk       (0x1UL << HRTIM_RSTCR_TIMDCMP4_Pos)     /*!< 0x08000000 */\n#define HRTIM_RSTCR_TIMDCMP4           HRTIM_RSTCR_TIMDCMP4_Msk                /*!< Timer D compare 4 */\n\n#define HRTIM_RSTCR_TIMECMP1_Pos       (28U)\n#define HRTIM_RSTCR_TIMECMP1_Msk       (0x1UL << HRTIM_RSTCR_TIMECMP1_Pos)     /*!< 0x10000000 */\n#define HRTIM_RSTCR_TIMECMP1           HRTIM_RSTCR_TIMECMP1_Msk                /*!< Timer E compare 1 */\n#define HRTIM_RSTCR_TIMECMP2_Pos       (29U)\n#define HRTIM_RSTCR_TIMECMP2_Msk       (0x1UL << HRTIM_RSTCR_TIMECMP2_Pos)     /*!< 0x20000000 */\n#define HRTIM_RSTCR_TIMECMP2           HRTIM_RSTCR_TIMECMP2_Msk                /*!< Timer E compare 2 */\n#define HRTIM_RSTCR_TIMECMP4_Pos       (30U)\n#define HRTIM_RSTCR_TIMECMP4_Msk       (0x1UL << HRTIM_RSTCR_TIMECMP4_Pos)     /*!< 0x40000000 */\n#define HRTIM_RSTCR_TIMECMP4           HRTIM_RSTCR_TIMECMP4_Msk                /*!< Timer E compare 4 */\n\n/* Slave Timer D reset enable bits upon other slave timers events */\n#define HRTIM_RSTDR_TIMACMP1_Pos       (19U)\n#define HRTIM_RSTDR_TIMACMP1_Msk       (0x1UL << HRTIM_RSTDR_TIMACMP1_Pos)     /*!< 0x00080000 */\n#define HRTIM_RSTDR_TIMACMP1           HRTIM_RSTDR_TIMACMP1_Msk                /*!< Timer A compare 1 */\n#define HRTIM_RSTDR_TIMACMP2_Pos       (20U)\n#define HRTIM_RSTDR_TIMACMP2_Msk       (0x1UL << HRTIM_RSTDR_TIMACMP2_Pos)     /*!< 0x00100000 */\n#define HRTIM_RSTDR_TIMACMP2           HRTIM_RSTDR_TIMACMP2_Msk                /*!< Timer A compare 2 */\n#define HRTIM_RSTDR_TIMACMP4_Pos       (21U)\n#define HRTIM_RSTDR_TIMACMP4_Msk       (0x1UL << HRTIM_RSTDR_TIMACMP4_Pos)     /*!< 0x00200000 */\n#define HRTIM_RSTDR_TIMACMP4           HRTIM_RSTDR_TIMACMP4_Msk                /*!< Timer A compare 4 */\n\n#define HRTIM_RSTDR_TIMBCMP1_Pos       (22U)\n#define HRTIM_RSTDR_TIMBCMP1_Msk       (0x1UL << HRTIM_RSTDR_TIMBCMP1_Pos)     /*!< 0x00400000 */\n#define HRTIM_RSTDR_TIMBCMP1           HRTIM_RSTDR_TIMBCMP1_Msk                /*!< Timer B compare 1 */\n#define HRTIM_RSTDR_TIMBCMP2_Pos       (23U)\n#define HRTIM_RSTDR_TIMBCMP2_Msk       (0x1UL << HRTIM_RSTDR_TIMBCMP2_Pos)     /*!< 0x00800000 */\n#define HRTIM_RSTDR_TIMBCMP2           HRTIM_RSTDR_TIMBCMP2_Msk                /*!< Timer B compare 2 */\n#define HRTIM_RSTDR_TIMBCMP4_Pos       (24U)\n#define HRTIM_RSTDR_TIMBCMP4_Msk       (0x1UL << HRTIM_RSTDR_TIMBCMP4_Pos)     /*!< 0x01000000 */\n#define HRTIM_RSTDR_TIMBCMP4           HRTIM_RSTDR_TIMBCMP4_Msk                /*!< Timer B compare 4 */\n\n#define HRTIM_RSTDR_TIMCCMP1_Pos       (25U)\n#define HRTIM_RSTDR_TIMCCMP1_Msk       (0x1UL << HRTIM_RSTDR_TIMCCMP1_Pos)     /*!< 0x02000000 */\n#define HRTIM_RSTDR_TIMCCMP1           HRTIM_RSTDR_TIMCCMP1_Msk                /*!< Timer C compare 1 */\n#define HRTIM_RSTDR_TIMCCMP2_Pos       (26U)\n#define HRTIM_RSTDR_TIMCCMP2_Msk       (0x1UL << HRTIM_RSTDR_TIMCCMP2_Pos)     /*!< 0x04000000 */\n#define HRTIM_RSTDR_TIMCCMP2           HRTIM_RSTDR_TIMCCMP2_Msk                /*!< Timer C compare 2 */\n#define HRTIM_RSTDR_TIMCCMP4_Pos       (27U)\n#define HRTIM_RSTDR_TIMCCMP4_Msk       (0x1UL << HRTIM_RSTDR_TIMCCMP4_Pos)     /*!< 0x08000000 */\n#define HRTIM_RSTDR_TIMCCMP4           HRTIM_RSTDR_TIMCCMP4_Msk                /*!< Timer C compare 4 */\n\n#define HRTIM_RSTDR_TIMECMP1_Pos       (28U)\n#define HRTIM_RSTDR_TIMECMP1_Msk       (0x1UL << HRTIM_RSTDR_TIMECMP1_Pos)     /*!< 0x10000000 */\n#define HRTIM_RSTDR_TIMECMP1           HRTIM_RSTDR_TIMECMP1_Msk                /*!< Timer E compare 1 */\n#define HRTIM_RSTDR_TIMECMP2_Pos       (29U)\n#define HRTIM_RSTDR_TIMECMP2_Msk       (0x1UL << HRTIM_RSTDR_TIMECMP2_Pos)     /*!< 0x20000000 */\n#define HRTIM_RSTDR_TIMECMP2           HRTIM_RSTDR_TIMECMP2_Msk                /*!< Timer E compare 2 */\n#define HRTIM_RSTDR_TIMECMP4_Pos       (30U)\n#define HRTIM_RSTDR_TIMECMP4_Msk       (0x1UL << HRTIM_RSTDR_TIMECMP4_Pos)     /*!< 0x40000000 */\n#define HRTIM_RSTDR_TIMECMP4           HRTIM_RSTDR_TIMECMP4_Msk                /*!< Timer E compare 4 */\n\n/* Slave Timer E reset enable bits upon other slave timers events */\n#define HRTIM_RSTER_TIMACMP1_Pos       (19U)\n#define HRTIM_RSTER_TIMACMP1_Msk       (0x1UL << HRTIM_RSTER_TIMACMP1_Pos)     /*!< 0x00080000 */\n#define HRTIM_RSTER_TIMACMP1           HRTIM_RSTER_TIMACMP1_Msk                /*!< Timer A compare 1 */\n#define HRTIM_RSTER_TIMACMP2_Pos       (20U)\n#define HRTIM_RSTER_TIMACMP2_Msk       (0x1UL << HRTIM_RSTER_TIMACMP2_Pos)     /*!< 0x00100000 */\n#define HRTIM_RSTER_TIMACMP2           HRTIM_RSTER_TIMACMP2_Msk                /*!< Timer A compare 2 */\n#define HRTIM_RSTER_TIMACMP4_Pos       (21U)\n#define HRTIM_RSTER_TIMACMP4_Msk       (0x1UL << HRTIM_RSTER_TIMACMP4_Pos)     /*!< 0x00200000 */\n#define HRTIM_RSTER_TIMACMP4           HRTIM_RSTER_TIMACMP4_Msk                /*!< Timer A compare 4 */\n\n#define HRTIM_RSTER_TIMBCMP1_Pos       (22U)\n#define HRTIM_RSTER_TIMBCMP1_Msk       (0x1UL << HRTIM_RSTER_TIMBCMP1_Pos)     /*!< 0x00400000 */\n#define HRTIM_RSTER_TIMBCMP1           HRTIM_RSTER_TIMBCMP1_Msk                /*!< Timer B compare 1 */\n#define HRTIM_RSTER_TIMBCMP2_Pos       (23U)\n#define HRTIM_RSTER_TIMBCMP2_Msk       (0x1UL << HRTIM_RSTER_TIMBCMP2_Pos)     /*!< 0x00800000 */\n#define HRTIM_RSTER_TIMBCMP2           HRTIM_RSTER_TIMBCMP2_Msk                /*!< Timer B compare 2 */\n#define HRTIM_RSTER_TIMBCMP4_Pos       (24U)\n#define HRTIM_RSTER_TIMBCMP4_Msk       (0x1UL << HRTIM_RSTER_TIMBCMP4_Pos)     /*!< 0x01000000 */\n#define HRTIM_RSTER_TIMBCMP4           HRTIM_RSTER_TIMBCMP4_Msk                /*!< Timer B compare 4 */\n\n#define HRTIM_RSTER_TIMCCMP1_Pos       (25U)\n#define HRTIM_RSTER_TIMCCMP1_Msk       (0x1UL << HRTIM_RSTER_TIMCCMP1_Pos)     /*!< 0x02000000 */\n#define HRTIM_RSTER_TIMCCMP1           HRTIM_RSTER_TIMCCMP1_Msk                /*!< Timer C compare 1 */\n#define HRTIM_RSTER_TIMCCMP2_Pos       (26U)\n#define HRTIM_RSTER_TIMCCMP2_Msk       (0x1UL << HRTIM_RSTER_TIMCCMP2_Pos)     /*!< 0x04000000 */\n#define HRTIM_RSTER_TIMCCMP2           HRTIM_RSTER_TIMCCMP2_Msk                /*!< Timer C compare 2 */\n#define HRTIM_RSTER_TIMCCMP4_Pos       (27U)\n#define HRTIM_RSTER_TIMCCMP4_Msk       (0x1UL << HRTIM_RSTER_TIMCCMP4_Pos)     /*!< 0x08000000 */\n#define HRTIM_RSTER_TIMCCMP4           HRTIM_RSTER_TIMCCMP4_Msk                /*!< Timer C compare 4 */\n\n#define HRTIM_RSTER_TIMDCMP1_Pos       (28U)\n#define HRTIM_RSTER_TIMDCMP1_Msk       (0x1UL << HRTIM_RSTER_TIMDCMP1_Pos)     /*!< 0x10000000 */\n#define HRTIM_RSTER_TIMDCMP1           HRTIM_RSTER_TIMDCMP1_Msk                /*!< Timer D compare 1 */\n#define HRTIM_RSTER_TIMDCMP2_Pos       (29U)\n#define HRTIM_RSTER_TIMDCMP2_Msk       (0x1UL << HRTIM_RSTER_TIMDCMP2_Pos)     /*!< 0x20000000 */\n#define HRTIM_RSTER_TIMDCMP2           HRTIM_RSTER_TIMDCMP2_Msk                /*!< Timer D compare 2 */\n#define HRTIM_RSTER_TIMDCMP4_Pos       (30U)\n#define HRTIM_RSTER_TIMDCMP4_Msk       (0x1UL << HRTIM_RSTER_TIMDCMP4_Pos)     /*!< 0x40000000 */\n#define HRTIM_RSTER_TIMDCMP4           HRTIM_RSTER_TIMDCMP4_Msk                /*!< Timer D compare 4 */\n\n/**** Bit definition for Slave Timer Chopper register *************************/\n#define HRTIM_CHPR_CARFRQ_Pos         (0U)\n#define HRTIM_CHPR_CARFRQ_Msk         (0xFUL << HRTIM_CHPR_CARFRQ_Pos)         /*!< 0x0000000F */\n#define HRTIM_CHPR_CARFRQ             HRTIM_CHPR_CARFRQ_Msk                    /*!< Timer carrier frequency value */\n#define HRTIM_CHPR_CARFRQ_0           (0x1UL << HRTIM_CHPR_CARFRQ_Pos)          /*!< 0x00000001 */\n#define HRTIM_CHPR_CARFRQ_1           (0x2UL << HRTIM_CHPR_CARFRQ_Pos)          /*!< 0x00000002 */\n#define HRTIM_CHPR_CARFRQ_2           (0x4UL << HRTIM_CHPR_CARFRQ_Pos)          /*!< 0x00000004 */\n#define HRTIM_CHPR_CARFRQ_3           (0x8UL << HRTIM_CHPR_CARFRQ_Pos)          /*!< 0x00000008 */\n\n#define HRTIM_CHPR_CARDTY_Pos         (4U)\n#define HRTIM_CHPR_CARDTY_Msk         (0x7UL << HRTIM_CHPR_CARDTY_Pos)         /*!< 0x00000070 */\n#define HRTIM_CHPR_CARDTY             HRTIM_CHPR_CARDTY_Msk                    /*!< Timer chopper duty cycle value */\n#define HRTIM_CHPR_CARDTY_0           (0x1UL << HRTIM_CHPR_CARDTY_Pos)          /*!< 0x00000010 */\n#define HRTIM_CHPR_CARDTY_1           (0x2UL << HRTIM_CHPR_CARDTY_Pos)          /*!< 0x00000020 */\n#define HRTIM_CHPR_CARDTY_2           (0x4UL << HRTIM_CHPR_CARDTY_Pos)          /*!< 0x00000040 */\n\n#define HRTIM_CHPR_STRPW_Pos          (7U)\n#define HRTIM_CHPR_STRPW_Msk          (0xFUL << HRTIM_CHPR_STRPW_Pos)          /*!< 0x00000780 */\n#define HRTIM_CHPR_STRPW              HRTIM_CHPR_STRPW_Msk                     /*!< Timer start pulse width value */\n#define HRTIM_CHPR_STRPW_0            (0x1UL << HRTIM_CHPR_STRPW_Pos)           /*!< 0x00000080 */\n#define HRTIM_CHPR_STRPW_1            (0x2UL << HRTIM_CHPR_STRPW_Pos)           /*!< 0x00000100 */\n#define HRTIM_CHPR_STRPW_2            (0x4UL << HRTIM_CHPR_STRPW_Pos)           /*!< 0x00000200 */\n#define HRTIM_CHPR_STRPW_3            (0x8UL << HRTIM_CHPR_STRPW_Pos)           /*!< 0x00000400 */\n\n/**** Bit definition for Slave Timer Capture 1 control register ***************/\n#define HRTIM_CPT1CR_SWCPT_Pos        (0U)\n#define HRTIM_CPT1CR_SWCPT_Msk        (0x1UL << HRTIM_CPT1CR_SWCPT_Pos)        /*!< 0x00000001 */\n#define HRTIM_CPT1CR_SWCPT            HRTIM_CPT1CR_SWCPT_Msk                   /*!< Software capture */\n#define HRTIM_CPT1CR_UPDCPT_Pos       (1U)\n#define HRTIM_CPT1CR_UPDCPT_Msk       (0x1UL << HRTIM_CPT1CR_UPDCPT_Pos)       /*!< 0x00000002 */\n#define HRTIM_CPT1CR_UPDCPT           HRTIM_CPT1CR_UPDCPT_Msk                  /*!< Update capture */\n#define HRTIM_CPT1CR_EXEV1CPT_Pos     (2U)\n#define HRTIM_CPT1CR_EXEV1CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV1CPT_Pos)     /*!< 0x00000004 */\n#define HRTIM_CPT1CR_EXEV1CPT         HRTIM_CPT1CR_EXEV1CPT_Msk                /*!< External event 1 capture */\n#define HRTIM_CPT1CR_EXEV2CPT_Pos     (3U)\n#define HRTIM_CPT1CR_EXEV2CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV2CPT_Pos)     /*!< 0x00000008 */\n#define HRTIM_CPT1CR_EXEV2CPT         HRTIM_CPT1CR_EXEV2CPT_Msk                /*!< External event 2 capture */\n#define HRTIM_CPT1CR_EXEV3CPT_Pos     (4U)\n#define HRTIM_CPT1CR_EXEV3CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV3CPT_Pos)     /*!< 0x00000010 */\n#define HRTIM_CPT1CR_EXEV3CPT         HRTIM_CPT1CR_EXEV3CPT_Msk                /*!< External event 3 capture */\n#define HRTIM_CPT1CR_EXEV4CPT_Pos     (5U)\n#define HRTIM_CPT1CR_EXEV4CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV4CPT_Pos)     /*!< 0x00000020 */\n#define HRTIM_CPT1CR_EXEV4CPT         HRTIM_CPT1CR_EXEV4CPT_Msk                /*!< External event 4 capture */\n#define HRTIM_CPT1CR_EXEV5CPT_Pos     (6U)\n#define HRTIM_CPT1CR_EXEV5CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV5CPT_Pos)     /*!< 0x00000040 */\n#define HRTIM_CPT1CR_EXEV5CPT         HRTIM_CPT1CR_EXEV5CPT_Msk                /*!< External event 5 capture */\n#define HRTIM_CPT1CR_EXEV6CPT_Pos     (7U)\n#define HRTIM_CPT1CR_EXEV6CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV6CPT_Pos)     /*!< 0x00000080 */\n#define HRTIM_CPT1CR_EXEV6CPT         HRTIM_CPT1CR_EXEV6CPT_Msk                /*!< External event 6 capture */\n#define HRTIM_CPT1CR_EXEV7CPT_Pos     (8U)\n#define HRTIM_CPT1CR_EXEV7CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV7CPT_Pos)     /*!< 0x00000100 */\n#define HRTIM_CPT1CR_EXEV7CPT         HRTIM_CPT1CR_EXEV7CPT_Msk                /*!< External event 7 capture */\n#define HRTIM_CPT1CR_EXEV8CPT_Pos     (9U)\n#define HRTIM_CPT1CR_EXEV8CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV8CPT_Pos)     /*!< 0x00000200 */\n#define HRTIM_CPT1CR_EXEV8CPT         HRTIM_CPT1CR_EXEV8CPT_Msk                /*!< External event 8 capture */\n#define HRTIM_CPT1CR_EXEV9CPT_Pos     (10U)\n#define HRTIM_CPT1CR_EXEV9CPT_Msk     (0x1UL << HRTIM_CPT1CR_EXEV9CPT_Pos)     /*!< 0x00000400 */\n#define HRTIM_CPT1CR_EXEV9CPT         HRTIM_CPT1CR_EXEV9CPT_Msk                /*!< External event 9 capture */\n#define HRTIM_CPT1CR_EXEV10CPT_Pos    (11U)\n#define HRTIM_CPT1CR_EXEV10CPT_Msk    (0x1UL << HRTIM_CPT1CR_EXEV10CPT_Pos)    /*!< 0x00000800 */\n#define HRTIM_CPT1CR_EXEV10CPT        HRTIM_CPT1CR_EXEV10CPT_Msk               /*!< External event 10 capture */\n\n#define HRTIM_CPT1CR_TA1SET_Pos       (12U)\n#define HRTIM_CPT1CR_TA1SET_Msk       (0x1UL << HRTIM_CPT1CR_TA1SET_Pos)       /*!< 0x00001000 */\n#define HRTIM_CPT1CR_TA1SET           HRTIM_CPT1CR_TA1SET_Msk                  /*!< Timer A output 1 set */\n#define HRTIM_CPT1CR_TA1RST_Pos       (13U)\n#define HRTIM_CPT1CR_TA1RST_Msk       (0x1UL << HRTIM_CPT1CR_TA1RST_Pos)       /*!< 0x00002000 */\n#define HRTIM_CPT1CR_TA1RST           HRTIM_CPT1CR_TA1RST_Msk                  /*!< Timer A output 1 reset */\n#define HRTIM_CPT1CR_TIMACMP1_Pos     (14U)\n#define HRTIM_CPT1CR_TIMACMP1_Msk     (0x1UL << HRTIM_CPT1CR_TIMACMP1_Pos)     /*!< 0x00004000 */\n#define HRTIM_CPT1CR_TIMACMP1         HRTIM_CPT1CR_TIMACMP1_Msk                /*!< Timer A compare 1 */\n#define HRTIM_CPT1CR_TIMACMP2_Pos     (15U)\n#define HRTIM_CPT1CR_TIMACMP2_Msk     (0x1UL << HRTIM_CPT1CR_TIMACMP2_Pos)     /*!< 0x00008000 */\n#define HRTIM_CPT1CR_TIMACMP2         HRTIM_CPT1CR_TIMACMP2_Msk                /*!< Timer A compare 2 */\n\n#define HRTIM_CPT1CR_TB1SET_Pos       (16U)\n#define HRTIM_CPT1CR_TB1SET_Msk       (0x1UL << HRTIM_CPT1CR_TB1SET_Pos)       /*!< 0x00010000 */\n#define HRTIM_CPT1CR_TB1SET           HRTIM_CPT1CR_TB1SET_Msk                  /*!< Timer B output 1 set */\n#define HRTIM_CPT1CR_TB1RST_Pos       (17U)\n#define HRTIM_CPT1CR_TB1RST_Msk       (0x1UL << HRTIM_CPT1CR_TB1RST_Pos)       /*!< 0x00020000 */\n#define HRTIM_CPT1CR_TB1RST           HRTIM_CPT1CR_TB1RST_Msk                  /*!< Timer B output 1 reset */\n#define HRTIM_CPT1CR_TIMBCMP1_Pos     (18U)\n#define HRTIM_CPT1CR_TIMBCMP1_Msk     (0x1UL << HRTIM_CPT1CR_TIMBCMP1_Pos)     /*!< 0x00040000 */\n#define HRTIM_CPT1CR_TIMBCMP1         HRTIM_CPT1CR_TIMBCMP1_Msk                /*!< Timer B compare 1 */\n#define HRTIM_CPT1CR_TIMBCMP2_Pos     (19U)\n#define HRTIM_CPT1CR_TIMBCMP2_Msk     (0x1UL << HRTIM_CPT1CR_TIMBCMP2_Pos)     /*!< 0x00080000 */\n#define HRTIM_CPT1CR_TIMBCMP2         HRTIM_CPT1CR_TIMBCMP2_Msk                /*!< Timer B compare 2 */\n\n#define HRTIM_CPT1CR_TC1SET_Pos       (20U)\n#define HRTIM_CPT1CR_TC1SET_Msk       (0x1UL << HRTIM_CPT1CR_TC1SET_Pos)       /*!< 0x00100000 */\n#define HRTIM_CPT1CR_TC1SET           HRTIM_CPT1CR_TC1SET_Msk                  /*!< Timer C output 1 set */\n#define HRTIM_CPT1CR_TC1RST_Pos       (21U)\n#define HRTIM_CPT1CR_TC1RST_Msk       (0x1UL << HRTIM_CPT1CR_TC1RST_Pos)       /*!< 0x00200000 */\n#define HRTIM_CPT1CR_TC1RST           HRTIM_CPT1CR_TC1RST_Msk                  /*!< Timer C output 1 reset */\n#define HRTIM_CPT1CR_TIMCCMP1_Pos     (22U)\n#define HRTIM_CPT1CR_TIMCCMP1_Msk     (0x1UL << HRTIM_CPT1CR_TIMCCMP1_Pos)     /*!< 0x00400000 */\n#define HRTIM_CPT1CR_TIMCCMP1         HRTIM_CPT1CR_TIMCCMP1_Msk                /*!< Timer C compare 1 */\n#define HRTIM_CPT1CR_TIMCCMP2_Pos     (23U)\n#define HRTIM_CPT1CR_TIMCCMP2_Msk     (0x1UL << HRTIM_CPT1CR_TIMCCMP2_Pos)     /*!< 0x00800000 */\n#define HRTIM_CPT1CR_TIMCCMP2         HRTIM_CPT1CR_TIMCCMP2_Msk                /*!< Timer C compare 2 */\n\n#define HRTIM_CPT1CR_TD1SET_Pos       (24U)\n#define HRTIM_CPT1CR_TD1SET_Msk       (0x1UL << HRTIM_CPT1CR_TD1SET_Pos)       /*!< 0x01000000 */\n#define HRTIM_CPT1CR_TD1SET           HRTIM_CPT1CR_TD1SET_Msk                  /*!< Timer D output 1 set */\n#define HRTIM_CPT1CR_TD1RST_Pos       (25U)\n#define HRTIM_CPT1CR_TD1RST_Msk       (0x1UL << HRTIM_CPT1CR_TD1RST_Pos)       /*!< 0x02000000 */\n#define HRTIM_CPT1CR_TD1RST           HRTIM_CPT1CR_TD1RST_Msk                  /*!< Timer D output 1 reset */\n#define HRTIM_CPT1CR_TIMDCMP1_Pos     (26U)\n#define HRTIM_CPT1CR_TIMDCMP1_Msk     (0x1UL << HRTIM_CPT1CR_TIMDCMP1_Pos)     /*!< 0x04000000 */\n#define HRTIM_CPT1CR_TIMDCMP1         HRTIM_CPT1CR_TIMDCMP1_Msk                /*!< Timer D compare 1 */\n#define HRTIM_CPT1CR_TIMDCMP2_Pos     (27U)\n#define HRTIM_CPT1CR_TIMDCMP2_Msk     (0x1UL << HRTIM_CPT1CR_TIMDCMP2_Pos)     /*!< 0x08000000 */\n#define HRTIM_CPT1CR_TIMDCMP2         HRTIM_CPT1CR_TIMDCMP2_Msk                /*!< Timer D compare 2 */\n\n#define HRTIM_CPT1CR_TE1SET_Pos       (28U)\n#define HRTIM_CPT1CR_TE1SET_Msk       (0x1UL << HRTIM_CPT1CR_TE1SET_Pos)       /*!< 0x10000000 */\n#define HRTIM_CPT1CR_TE1SET           HRTIM_CPT1CR_TE1SET_Msk                  /*!< Timer E output 1 set */\n#define HRTIM_CPT1CR_TE1RST_Pos       (29U)\n#define HRTIM_CPT1CR_TE1RST_Msk       (0x1UL << HRTIM_CPT1CR_TE1RST_Pos)       /*!< 0x20000000 */\n#define HRTIM_CPT1CR_TE1RST           HRTIM_CPT1CR_TE1RST_Msk                  /*!< Timer E output 1 reset */\n#define HRTIM_CPT1CR_TIMECMP1_Pos     (30U)\n#define HRTIM_CPT1CR_TIMECMP1_Msk     (0x1UL << HRTIM_CPT1CR_TIMECMP1_Pos)     /*!< 0x40000000 */\n#define HRTIM_CPT1CR_TIMECMP1         HRTIM_CPT1CR_TIMECMP1_Msk                /*!< Timer E compare 1 */\n#define HRTIM_CPT1CR_TIMECMP2_Pos     (31U)\n#define HRTIM_CPT1CR_TIMECMP2_Msk     (0x1UL << HRTIM_CPT1CR_TIMECMP2_Pos)     /*!< 0x80000000 */\n#define HRTIM_CPT1CR_TIMECMP2         HRTIM_CPT1CR_TIMECMP2_Msk                /*!< Timer E compare 2 */\n\n/**** Bit definition for Slave Timer Capture 2 control register ***************/\n#define HRTIM_CPT2CR_SWCPT_Pos        (0U)\n#define HRTIM_CPT2CR_SWCPT_Msk        (0x1UL << HRTIM_CPT2CR_SWCPT_Pos)        /*!< 0x00000001 */\n#define HRTIM_CPT2CR_SWCPT            HRTIM_CPT2CR_SWCPT_Msk                   /*!< Software capture */\n#define HRTIM_CPT2CR_UPDCPT_Pos       (1U)\n#define HRTIM_CPT2CR_UPDCPT_Msk       (0x1UL << HRTIM_CPT2CR_UPDCPT_Pos)       /*!< 0x00000002 */\n#define HRTIM_CPT2CR_UPDCPT           HRTIM_CPT2CR_UPDCPT_Msk                  /*!< Update capture */\n#define HRTIM_CPT2CR_EXEV1CPT_Pos     (2U)\n#define HRTIM_CPT2CR_EXEV1CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV1CPT_Pos)     /*!< 0x00000004 */\n#define HRTIM_CPT2CR_EXEV1CPT         HRTIM_CPT2CR_EXEV1CPT_Msk                /*!< External event 1 capture */\n#define HRTIM_CPT2CR_EXEV2CPT_Pos     (3U)\n#define HRTIM_CPT2CR_EXEV2CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV2CPT_Pos)     /*!< 0x00000008 */\n#define HRTIM_CPT2CR_EXEV2CPT         HRTIM_CPT2CR_EXEV2CPT_Msk                /*!< External event 2 capture */\n#define HRTIM_CPT2CR_EXEV3CPT_Pos     (4U)\n#define HRTIM_CPT2CR_EXEV3CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV3CPT_Pos)     /*!< 0x00000010 */\n#define HRTIM_CPT2CR_EXEV3CPT         HRTIM_CPT2CR_EXEV3CPT_Msk                /*!< External event 3 capture */\n#define HRTIM_CPT2CR_EXEV4CPT_Pos     (5U)\n#define HRTIM_CPT2CR_EXEV4CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV4CPT_Pos)     /*!< 0x00000020 */\n#define HRTIM_CPT2CR_EXEV4CPT         HRTIM_CPT2CR_EXEV4CPT_Msk                /*!< External event 4 capture */\n#define HRTIM_CPT2CR_EXEV5CPT_Pos     (6U)\n#define HRTIM_CPT2CR_EXEV5CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV5CPT_Pos)     /*!< 0x00000040 */\n#define HRTIM_CPT2CR_EXEV5CPT         HRTIM_CPT2CR_EXEV5CPT_Msk                /*!< External event 5 capture */\n#define HRTIM_CPT2CR_EXEV6CPT_Pos     (7U)\n#define HRTIM_CPT2CR_EXEV6CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV6CPT_Pos)     /*!< 0x00000080 */\n#define HRTIM_CPT2CR_EXEV6CPT         HRTIM_CPT2CR_EXEV6CPT_Msk                /*!< External event 6 capture */\n#define HRTIM_CPT2CR_EXEV7CPT_Pos     (8U)\n#define HRTIM_CPT2CR_EXEV7CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV7CPT_Pos)     /*!< 0x00000100 */\n#define HRTIM_CPT2CR_EXEV7CPT         HRTIM_CPT2CR_EXEV7CPT_Msk                /*!< External event 7 capture */\n#define HRTIM_CPT2CR_EXEV8CPT_Pos     (9U)\n#define HRTIM_CPT2CR_EXEV8CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV8CPT_Pos)     /*!< 0x00000200 */\n#define HRTIM_CPT2CR_EXEV8CPT         HRTIM_CPT2CR_EXEV8CPT_Msk                /*!< External event 8 capture */\n#define HRTIM_CPT2CR_EXEV9CPT_Pos     (10U)\n#define HRTIM_CPT2CR_EXEV9CPT_Msk     (0x1UL << HRTIM_CPT2CR_EXEV9CPT_Pos)     /*!< 0x00000400 */\n#define HRTIM_CPT2CR_EXEV9CPT         HRTIM_CPT2CR_EXEV9CPT_Msk                /*!< External event 9 capture */\n#define HRTIM_CPT2CR_EXEV10CPT_Pos    (11U)\n#define HRTIM_CPT2CR_EXEV10CPT_Msk    (0x1UL << HRTIM_CPT2CR_EXEV10CPT_Pos)    /*!< 0x00000800 */\n#define HRTIM_CPT2CR_EXEV10CPT        HRTIM_CPT2CR_EXEV10CPT_Msk               /*!< External event 10 capture */\n\n#define HRTIM_CPT2CR_TA1SET_Pos       (12U)\n#define HRTIM_CPT2CR_TA1SET_Msk       (0x1UL << HRTIM_CPT2CR_TA1SET_Pos)       /*!< 0x00001000 */\n#define HRTIM_CPT2CR_TA1SET           HRTIM_CPT2CR_TA1SET_Msk                  /*!< Timer A output 1 set */\n#define HRTIM_CPT2CR_TA1RST_Pos       (13U)\n#define HRTIM_CPT2CR_TA1RST_Msk       (0x1UL << HRTIM_CPT2CR_TA1RST_Pos)       /*!< 0x00002000 */\n#define HRTIM_CPT2CR_TA1RST           HRTIM_CPT2CR_TA1RST_Msk                  /*!< Timer A output 1 reset */\n#define HRTIM_CPT2CR_TIMACMP1_Pos     (14U)\n#define HRTIM_CPT2CR_TIMACMP1_Msk     (0x1UL << HRTIM_CPT2CR_TIMACMP1_Pos)     /*!< 0x00004000 */\n#define HRTIM_CPT2CR_TIMACMP1         HRTIM_CPT2CR_TIMACMP1_Msk                /*!< Timer A compare 1 */\n#define HRTIM_CPT2CR_TIMACMP2_Pos     (15U)\n#define HRTIM_CPT2CR_TIMACMP2_Msk     (0x1UL << HRTIM_CPT2CR_TIMACMP2_Pos)     /*!< 0x00008000 */\n#define HRTIM_CPT2CR_TIMACMP2         HRTIM_CPT2CR_TIMACMP2_Msk                /*!< Timer A compare 2 */\n\n#define HRTIM_CPT2CR_TB1SET_Pos       (16U)\n#define HRTIM_CPT2CR_TB1SET_Msk       (0x1UL << HRTIM_CPT2CR_TB1SET_Pos)       /*!< 0x00010000 */\n#define HRTIM_CPT2CR_TB1SET           HRTIM_CPT2CR_TB1SET_Msk                  /*!< Timer B output 1 set */\n#define HRTIM_CPT2CR_TB1RST_Pos       (17U)\n#define HRTIM_CPT2CR_TB1RST_Msk       (0x1UL << HRTIM_CPT2CR_TB1RST_Pos)       /*!< 0x00020000 */\n#define HRTIM_CPT2CR_TB1RST           HRTIM_CPT2CR_TB1RST_Msk                  /*!< Timer B output 1 reset */\n#define HRTIM_CPT2CR_TIMBCMP1_Pos     (18U)\n#define HRTIM_CPT2CR_TIMBCMP1_Msk     (0x1UL << HRTIM_CPT2CR_TIMBCMP1_Pos)     /*!< 0x00040000 */\n#define HRTIM_CPT2CR_TIMBCMP1         HRTIM_CPT2CR_TIMBCMP1_Msk                /*!< Timer B compare 1 */\n#define HRTIM_CPT2CR_TIMBCMP2_Pos     (19U)\n#define HRTIM_CPT2CR_TIMBCMP2_Msk     (0x1UL << HRTIM_CPT2CR_TIMBCMP2_Pos)     /*!< 0x00080000 */\n#define HRTIM_CPT2CR_TIMBCMP2         HRTIM_CPT2CR_TIMBCMP2_Msk                /*!< Timer B compare 2 */\n\n#define HRTIM_CPT2CR_TC1SET_Pos       (20U)\n#define HRTIM_CPT2CR_TC1SET_Msk       (0x1UL << HRTIM_CPT2CR_TC1SET_Pos)       /*!< 0x00100000 */\n#define HRTIM_CPT2CR_TC1SET           HRTIM_CPT2CR_TC1SET_Msk                  /*!< Timer C output 1 set */\n#define HRTIM_CPT2CR_TC1RST_Pos       (21U)\n#define HRTIM_CPT2CR_TC1RST_Msk       (0x1UL << HRTIM_CPT2CR_TC1RST_Pos)       /*!< 0x00200000 */\n#define HRTIM_CPT2CR_TC1RST           HRTIM_CPT2CR_TC1RST_Msk                  /*!< Timer C output 1 reset */\n#define HRTIM_CPT2CR_TIMCCMP1_Pos     (22U)\n#define HRTIM_CPT2CR_TIMCCMP1_Msk     (0x1UL << HRTIM_CPT2CR_TIMCCMP1_Pos)     /*!< 0x00400000 */\n#define HRTIM_CPT2CR_TIMCCMP1         HRTIM_CPT2CR_TIMCCMP1_Msk                /*!< Timer C compare 1 */\n#define HRTIM_CPT2CR_TIMCCMP2_Pos     (23U)\n#define HRTIM_CPT2CR_TIMCCMP2_Msk     (0x1UL << HRTIM_CPT2CR_TIMCCMP2_Pos)     /*!< 0x00800000 */\n#define HRTIM_CPT2CR_TIMCCMP2         HRTIM_CPT2CR_TIMCCMP2_Msk                /*!< Timer C compare 2 */\n\n#define HRTIM_CPT2CR_TD1SET_Pos       (24U)\n#define HRTIM_CPT2CR_TD1SET_Msk       (0x1UL << HRTIM_CPT2CR_TD1SET_Pos)       /*!< 0x01000000 */\n#define HRTIM_CPT2CR_TD1SET           HRTIM_CPT2CR_TD1SET_Msk                  /*!< Timer D output 1 set */\n#define HRTIM_CPT2CR_TD1RST_Pos       (25U)\n#define HRTIM_CPT2CR_TD1RST_Msk       (0x1UL << HRTIM_CPT2CR_TD1RST_Pos)       /*!< 0x02000000 */\n#define HRTIM_CPT2CR_TD1RST           HRTIM_CPT2CR_TD1RST_Msk                  /*!< Timer D output 1 reset */\n#define HRTIM_CPT2CR_TIMDCMP1_Pos     (26U)\n#define HRTIM_CPT2CR_TIMDCMP1_Msk     (0x1UL << HRTIM_CPT2CR_TIMDCMP1_Pos)     /*!< 0x04000000 */\n#define HRTIM_CPT2CR_TIMDCMP1         HRTIM_CPT2CR_TIMDCMP1_Msk                /*!< Timer D compare 1 */\n#define HRTIM_CPT2CR_TIMDCMP2_Pos     (27U)\n#define HRTIM_CPT2CR_TIMDCMP2_Msk     (0x1UL << HRTIM_CPT2CR_TIMDCMP2_Pos)     /*!< 0x08000000 */\n#define HRTIM_CPT2CR_TIMDCMP2         HRTIM_CPT2CR_TIMDCMP2_Msk                /*!< Timer D compare 2 */\n\n#define HRTIM_CPT2CR_TE1SET_Pos       (28U)\n#define HRTIM_CPT2CR_TE1SET_Msk       (0x1UL << HRTIM_CPT2CR_TE1SET_Pos)       /*!< 0x10000000 */\n#define HRTIM_CPT2CR_TE1SET           HRTIM_CPT2CR_TE1SET_Msk                  /*!< Timer E output 1 set */\n#define HRTIM_CPT2CR_TE1RST_Pos       (29U)\n#define HRTIM_CPT2CR_TE1RST_Msk       (0x1UL << HRTIM_CPT2CR_TE1RST_Pos)       /*!< 0x20000000 */\n#define HRTIM_CPT2CR_TE1RST           HRTIM_CPT2CR_TE1RST_Msk                  /*!< Timer E output 1 reset */\n#define HRTIM_CPT2CR_TIMECMP1_Pos     (30U)\n#define HRTIM_CPT2CR_TIMECMP1_Msk     (0x1UL << HRTIM_CPT2CR_TIMECMP1_Pos)     /*!< 0x40000000 */\n#define HRTIM_CPT2CR_TIMECMP1         HRTIM_CPT2CR_TIMECMP1_Msk                /*!< Timer E compare 1 */\n#define HRTIM_CPT2CR_TIMECMP2_Pos     (31U)\n#define HRTIM_CPT2CR_TIMECMP2_Msk     (0x1UL << HRTIM_CPT2CR_TIMECMP2_Pos)     /*!< 0x80000000 */\n#define HRTIM_CPT2CR_TIMECMP2         HRTIM_CPT2CR_TIMECMP2_Msk                /*!< Timer E compare 2 */\n\n/**** Bit definition for Slave Timer Output register **************************/\n#define HRTIM_OUTR_POL1_Pos           (1U)\n#define HRTIM_OUTR_POL1_Msk           (0x1UL << HRTIM_OUTR_POL1_Pos)           /*!< 0x00000002 */\n#define HRTIM_OUTR_POL1               HRTIM_OUTR_POL1_Msk                      /*!< Slave output 1 polarity */\n#define HRTIM_OUTR_IDLM1_Pos          (2U)\n#define HRTIM_OUTR_IDLM1_Msk          (0x1UL << HRTIM_OUTR_IDLM1_Pos)          /*!< 0x00000004 */\n#define HRTIM_OUTR_IDLM1              HRTIM_OUTR_IDLM1_Msk                     /*!< Slave output 1 idle mode */\n#define HRTIM_OUTR_IDLES1_Pos         (3U)\n#define HRTIM_OUTR_IDLES1_Msk         (0x1UL << HRTIM_OUTR_IDLES1_Pos)         /*!< 0x00000008 */\n#define HRTIM_OUTR_IDLES1             HRTIM_OUTR_IDLES1_Msk                    /*!< Slave output 1 idle state */\n#define HRTIM_OUTR_FAULT1_Pos         (4U)\n#define HRTIM_OUTR_FAULT1_Msk         (0x3UL << HRTIM_OUTR_FAULT1_Pos)         /*!< 0x00000030 */\n#define HRTIM_OUTR_FAULT1             HRTIM_OUTR_FAULT1_Msk                    /*!< Slave output 1 fault state */\n#define HRTIM_OUTR_FAULT1_0           (0x1UL << HRTIM_OUTR_FAULT1_Pos)          /*!< 0x00000010 */\n#define HRTIM_OUTR_FAULT1_1           (0x2UL << HRTIM_OUTR_FAULT1_Pos)          /*!< 0x00000020 */\n#define HRTIM_OUTR_CHP1_Pos           (6U)\n#define HRTIM_OUTR_CHP1_Msk           (0x1UL << HRTIM_OUTR_CHP1_Pos)           /*!< 0x00000040 */\n#define HRTIM_OUTR_CHP1               HRTIM_OUTR_CHP1_Msk                      /*!< Slave output 1 chopper enable */\n#define HRTIM_OUTR_DIDL1_Pos          (7U)\n#define HRTIM_OUTR_DIDL1_Msk          (0x1UL << HRTIM_OUTR_DIDL1_Pos)          /*!< 0x00000080 */\n#define HRTIM_OUTR_DIDL1              HRTIM_OUTR_DIDL1_Msk                     /*!< Slave output 1 dead time idle */\n\n#define HRTIM_OUTR_DTEN_Pos           (8U)\n#define HRTIM_OUTR_DTEN_Msk           (0x1UL << HRTIM_OUTR_DTEN_Pos)           /*!< 0x00000100 */\n#define HRTIM_OUTR_DTEN               HRTIM_OUTR_DTEN_Msk                      /*!< Slave output deadtime enable */\n#define HRTIM_OUTR_DLYPRTEN_Pos       (9U)\n#define HRTIM_OUTR_DLYPRTEN_Msk       (0x1UL << HRTIM_OUTR_DLYPRTEN_Pos)       /*!< 0x00000200 */\n#define HRTIM_OUTR_DLYPRTEN           HRTIM_OUTR_DLYPRTEN_Msk                  /*!< Slave output delay protection enable */\n#define HRTIM_OUTR_DLYPRT_Pos         (10U)\n#define HRTIM_OUTR_DLYPRT_Msk         (0x7UL << HRTIM_OUTR_DLYPRT_Pos)         /*!< 0x00001C00 */\n#define HRTIM_OUTR_DLYPRT             HRTIM_OUTR_DLYPRT_Msk                    /*!< Slave output delay protection */\n#define HRTIM_OUTR_DLYPRT_0           (0x1UL << HRTIM_OUTR_DLYPRT_Pos)          /*!< 0x00000400 */\n#define HRTIM_OUTR_DLYPRT_1           (0x2UL << HRTIM_OUTR_DLYPRT_Pos)          /*!< 0x00000800 */\n#define HRTIM_OUTR_DLYPRT_2           (0x4UL << HRTIM_OUTR_DLYPRT_Pos)          /*!< 0x00001000 */\n\n#define HRTIM_OUTR_POL2_Pos           (17U)\n#define HRTIM_OUTR_POL2_Msk           (0x1UL << HRTIM_OUTR_POL2_Pos)           /*!< 0x00020000 */\n#define HRTIM_OUTR_POL2               HRTIM_OUTR_POL2_Msk                      /*!< Slave output 2 polarity */\n#define HRTIM_OUTR_IDLM2_Pos          (18U)\n#define HRTIM_OUTR_IDLM2_Msk          (0x1UL << HRTIM_OUTR_IDLM2_Pos)          /*!< 0x00040000 */\n#define HRTIM_OUTR_IDLM2              HRTIM_OUTR_IDLM2_Msk                     /*!< Slave output 2 idle mode */\n#define HRTIM_OUTR_IDLES2_Pos         (19U)\n#define HRTIM_OUTR_IDLES2_Msk         (0x1UL << HRTIM_OUTR_IDLES2_Pos)         /*!< 0x00080000 */\n#define HRTIM_OUTR_IDLES2             HRTIM_OUTR_IDLES2_Msk                    /*!< Slave output 2 idle state */\n#define HRTIM_OUTR_FAULT2_Pos         (20U)\n#define HRTIM_OUTR_FAULT2_Msk         (0x3UL << HRTIM_OUTR_FAULT2_Pos)         /*!< 0x00300000 */\n#define HRTIM_OUTR_FAULT2             HRTIM_OUTR_FAULT2_Msk                    /*!< Slave output 2 fault state */\n#define HRTIM_OUTR_FAULT2_0           (0x1UL << HRTIM_OUTR_FAULT2_Pos)          /*!< 0x00100000 */\n#define HRTIM_OUTR_FAULT2_1           (0x2UL << HRTIM_OUTR_FAULT2_Pos)          /*!< 0x00200000 */\n#define HRTIM_OUTR_CHP2_Pos           (22U)\n#define HRTIM_OUTR_CHP2_Msk           (0x1UL << HRTIM_OUTR_CHP2_Pos)           /*!< 0x00400000 */\n#define HRTIM_OUTR_CHP2               HRTIM_OUTR_CHP2_Msk                      /*!< Slave output 2 chopper enable */\n#define HRTIM_OUTR_DIDL2_Pos          (23U)\n#define HRTIM_OUTR_DIDL2_Msk          (0x1UL << HRTIM_OUTR_DIDL2_Pos)          /*!< 0x00800000 */\n#define HRTIM_OUTR_DIDL2              HRTIM_OUTR_DIDL2_Msk                     /*!< Slave output 2 dead time idle */\n\n/**** Bit definition for Slave Timer Fault register ***************************/\n#define HRTIM_FLTR_FLT1EN_Pos         (0U)\n#define HRTIM_FLTR_FLT1EN_Msk         (0x1UL << HRTIM_FLTR_FLT1EN_Pos)         /*!< 0x00000001 */\n#define HRTIM_FLTR_FLT1EN             HRTIM_FLTR_FLT1EN_Msk                    /*!< Fault 1 enable */\n#define HRTIM_FLTR_FLT2EN_Pos         (1U)\n#define HRTIM_FLTR_FLT2EN_Msk         (0x1UL << HRTIM_FLTR_FLT2EN_Pos)         /*!< 0x00000002 */\n#define HRTIM_FLTR_FLT2EN             HRTIM_FLTR_FLT2EN_Msk                    /*!< Fault 2 enable */\n#define HRTIM_FLTR_FLT3EN_Pos         (2U)\n#define HRTIM_FLTR_FLT3EN_Msk         (0x1UL << HRTIM_FLTR_FLT3EN_Pos)         /*!< 0x00000004 */\n#define HRTIM_FLTR_FLT3EN             HRTIM_FLTR_FLT3EN_Msk                    /*!< Fault 3 enable */\n#define HRTIM_FLTR_FLT4EN_Pos         (3U)\n#define HRTIM_FLTR_FLT4EN_Msk         (0x1UL << HRTIM_FLTR_FLT4EN_Pos)         /*!< 0x00000008 */\n#define HRTIM_FLTR_FLT4EN             HRTIM_FLTR_FLT4EN_Msk                    /*!< Fault 4 enable */\n#define HRTIM_FLTR_FLT5EN_Pos         (4U)\n#define HRTIM_FLTR_FLT5EN_Msk         (0x1UL << HRTIM_FLTR_FLT5EN_Pos)         /*!< 0x00000010 */\n#define HRTIM_FLTR_FLT5EN             HRTIM_FLTR_FLT5EN_Msk                    /*!< Fault 5 enable */\n#define HRTIM_FLTR_FLTLCK_Pos         (31U)\n#define HRTIM_FLTR_FLTLCK_Msk         (0x1UL << HRTIM_FLTR_FLTLCK_Pos)         /*!< 0x80000000 */\n#define HRTIM_FLTR_FLTLCK             HRTIM_FLTR_FLTLCK_Msk                    /*!< Fault sources lock */\n\n/**** Bit definition for Common HRTIM Timer control register 1 ****************/\n#define HRTIM_CR1_MUDIS_Pos           (0U)\n#define HRTIM_CR1_MUDIS_Msk           (0x1UL << HRTIM_CR1_MUDIS_Pos)           /*!< 0x00000001 */\n#define HRTIM_CR1_MUDIS               HRTIM_CR1_MUDIS_Msk                      /*!< Master update disable*/\n#define HRTIM_CR1_TAUDIS_Pos          (1U)\n#define HRTIM_CR1_TAUDIS_Msk          (0x1UL << HRTIM_CR1_TAUDIS_Pos)          /*!< 0x00000002 */\n#define HRTIM_CR1_TAUDIS              HRTIM_CR1_TAUDIS_Msk                     /*!< Timer A update disable*/\n#define HRTIM_CR1_TBUDIS_Pos          (2U)\n#define HRTIM_CR1_TBUDIS_Msk          (0x1UL << HRTIM_CR1_TBUDIS_Pos)          /*!< 0x00000004 */\n#define HRTIM_CR1_TBUDIS              HRTIM_CR1_TBUDIS_Msk                     /*!< Timer B update disable*/\n#define HRTIM_CR1_TCUDIS_Pos          (3U)\n#define HRTIM_CR1_TCUDIS_Msk          (0x1UL << HRTIM_CR1_TCUDIS_Pos)          /*!< 0x00000008 */\n#define HRTIM_CR1_TCUDIS              HRTIM_CR1_TCUDIS_Msk                     /*!< Timer C update disable*/\n#define HRTIM_CR1_TDUDIS_Pos          (4U)\n#define HRTIM_CR1_TDUDIS_Msk          (0x1UL << HRTIM_CR1_TDUDIS_Pos)          /*!< 0x00000010 */\n#define HRTIM_CR1_TDUDIS              HRTIM_CR1_TDUDIS_Msk                     /*!< Timer D update disable*/\n#define HRTIM_CR1_TEUDIS_Pos          (5U)\n#define HRTIM_CR1_TEUDIS_Msk          (0x1UL << HRTIM_CR1_TEUDIS_Pos)          /*!< 0x00000020 */\n#define HRTIM_CR1_TEUDIS              HRTIM_CR1_TEUDIS_Msk                     /*!< Timer E update disable*/\n#define HRTIM_CR1_ADC1USRC_Pos        (16U)\n#define HRTIM_CR1_ADC1USRC_Msk        (0x7UL << HRTIM_CR1_ADC1USRC_Pos)        /*!< 0x00070000 */\n#define HRTIM_CR1_ADC1USRC            HRTIM_CR1_ADC1USRC_Msk                   /*!< ADC Trigger 1 update source */\n#define HRTIM_CR1_ADC1USRC_0          (0x1UL << HRTIM_CR1_ADC1USRC_Pos)         /*!< 0x00010000 */\n#define HRTIM_CR1_ADC1USRC_1          (0x2UL << HRTIM_CR1_ADC1USRC_Pos)         /*!< 0x00020000 */\n#define HRTIM_CR1_ADC1USRC_2          (0x4UL << HRTIM_CR1_ADC1USRC_Pos)         /*!< 0x00040000 */\n#define HRTIM_CR1_ADC2USRC_Pos        (19U)\n#define HRTIM_CR1_ADC2USRC_Msk        (0x7UL << HRTIM_CR1_ADC2USRC_Pos)        /*!< 0x00380000 */\n#define HRTIM_CR1_ADC2USRC            HRTIM_CR1_ADC2USRC_Msk                   /*!< ADC Trigger 2 update source */\n#define HRTIM_CR1_ADC2USRC_0          (0x1UL << HRTIM_CR1_ADC2USRC_Pos)         /*!< 0x00080000 */\n#define HRTIM_CR1_ADC2USRC_1          (0x2UL << HRTIM_CR1_ADC2USRC_Pos)         /*!< 0x00100000 */\n#define HRTIM_CR1_ADC2USRC_2          (0x4UL << HRTIM_CR1_ADC2USRC_Pos)         /*!< 0x00200000 */\n#define HRTIM_CR1_ADC3USRC_Pos        (22U)\n#define HRTIM_CR1_ADC3USRC_Msk        (0x7UL << HRTIM_CR1_ADC3USRC_Pos)        /*!< 0x01C00000 */\n#define HRTIM_CR1_ADC3USRC            HRTIM_CR1_ADC3USRC_Msk                   /*!< ADC Trigger 3 update source */\n#define HRTIM_CR1_ADC3USRC_0          (0x1UL << HRTIM_CR1_ADC3USRC_Pos)         /*!< 0x00400000 */\n#define HRTIM_CR1_ADC3USRC_1          (0x2UL << HRTIM_CR1_ADC3USRC_Pos)         /*!< 0x00800000 */\n#define HRTIM_CR1_ADC3USRC_2          (0x4UL << HRTIM_CR1_ADC3USRC_Pos)         /*!< 0x01000000 */\n#define HRTIM_CR1_ADC4USRC_Pos        (25U)\n#define HRTIM_CR1_ADC4USRC_Msk        (0x7UL << HRTIM_CR1_ADC4USRC_Pos)        /*!< 0x0E000000 */\n#define HRTIM_CR1_ADC4USRC            HRTIM_CR1_ADC4USRC_Msk                   /*!< ADC Trigger 4 update source */\n#define HRTIM_CR1_ADC4USRC_0          (0x1UL << HRTIM_CR1_ADC4USRC_Pos)         /*!< 0x02000000 */\n#define HRTIM_CR1_ADC4USRC_1          (0x2UL << HRTIM_CR1_ADC4USRC_Pos)         /*!< 0x04000000 */\n#define HRTIM_CR1_ADC4USRC_2          (0x0UL << HRTIM_CR1_ADC4USRC_Pos)         /*!< 0x0800000 */\n\n/**** Bit definition for Common HRTIM Timer control register 2 ****************/\n#define HRTIM_CR2_MSWU_Pos            (0U)\n#define HRTIM_CR2_MSWU_Msk            (0x1UL << HRTIM_CR2_MSWU_Pos)            /*!< 0x00000001 */\n#define HRTIM_CR2_MSWU                HRTIM_CR2_MSWU_Msk                       /*!< Master software update */\n#define HRTIM_CR2_TASWU_Pos           (1U)\n#define HRTIM_CR2_TASWU_Msk           (0x1UL << HRTIM_CR2_TASWU_Pos)           /*!< 0x00000002 */\n#define HRTIM_CR2_TASWU               HRTIM_CR2_TASWU_Msk                      /*!< Timer A software update */\n#define HRTIM_CR2_TBSWU_Pos           (2U)\n#define HRTIM_CR2_TBSWU_Msk           (0x1UL << HRTIM_CR2_TBSWU_Pos)           /*!< 0x00000004 */\n#define HRTIM_CR2_TBSWU               HRTIM_CR2_TBSWU_Msk                      /*!< Timer B software update */\n#define HRTIM_CR2_TCSWU_Pos           (3U)\n#define HRTIM_CR2_TCSWU_Msk           (0x1UL << HRTIM_CR2_TCSWU_Pos)           /*!< 0x00000008 */\n#define HRTIM_CR2_TCSWU               HRTIM_CR2_TCSWU_Msk                      /*!< Timer C software update */\n#define HRTIM_CR2_TDSWU_Pos           (4U)\n#define HRTIM_CR2_TDSWU_Msk           (0x1UL << HRTIM_CR2_TDSWU_Pos)           /*!< 0x00000010 */\n#define HRTIM_CR2_TDSWU               HRTIM_CR2_TDSWU_Msk                      /*!< Timer D software update */\n#define HRTIM_CR2_TESWU_Pos           (5U)\n#define HRTIM_CR2_TESWU_Msk           (0x1UL << HRTIM_CR2_TESWU_Pos)           /*!< 0x00000020 */\n#define HRTIM_CR2_TESWU               HRTIM_CR2_TESWU_Msk                      /*!< Timer E software update */\n#define HRTIM_CR2_MRST_Pos            (8U)\n#define HRTIM_CR2_MRST_Msk            (0x1UL << HRTIM_CR2_MRST_Pos)            /*!< 0x00000100 */\n#define HRTIM_CR2_MRST                HRTIM_CR2_MRST_Msk                       /*!< Master count software reset */\n#define HRTIM_CR2_TARST_Pos           (9U)\n#define HRTIM_CR2_TARST_Msk           (0x1UL << HRTIM_CR2_TARST_Pos)           /*!< 0x00000200 */\n#define HRTIM_CR2_TARST               HRTIM_CR2_TARST_Msk                      /*!< Timer A count software reset */\n#define HRTIM_CR2_TBRST_Pos           (10U)\n#define HRTIM_CR2_TBRST_Msk           (0x1UL << HRTIM_CR2_TBRST_Pos)           /*!< 0x00000400 */\n#define HRTIM_CR2_TBRST               HRTIM_CR2_TBRST_Msk                      /*!< Timer B count software reset */\n#define HRTIM_CR2_TCRST_Pos           (11U)\n#define HRTIM_CR2_TCRST_Msk           (0x1UL << HRTIM_CR2_TCRST_Pos)           /*!< 0x00000800 */\n#define HRTIM_CR2_TCRST               HRTIM_CR2_TCRST_Msk                      /*!< Timer C count software reset */\n#define HRTIM_CR2_TDRST_Pos           (12U)\n#define HRTIM_CR2_TDRST_Msk           (0x1UL << HRTIM_CR2_TDRST_Pos)           /*!< 0x00001000 */\n#define HRTIM_CR2_TDRST               HRTIM_CR2_TDRST_Msk                      /*!< Timer D count software reset */\n#define HRTIM_CR2_TERST_Pos           (13U)\n#define HRTIM_CR2_TERST_Msk           (0x1UL << HRTIM_CR2_TERST_Pos)           /*!< 0x00002000 */\n#define HRTIM_CR2_TERST               HRTIM_CR2_TERST_Msk                      /*!< Timer E count software reset */\n\n/**** Bit definition for Common HRTIM Timer interrupt status register *********/\n#define HRTIM_ISR_FLT1_Pos            (0U)\n#define HRTIM_ISR_FLT1_Msk            (0x1UL << HRTIM_ISR_FLT1_Pos)            /*!< 0x00000001 */\n#define HRTIM_ISR_FLT1                HRTIM_ISR_FLT1_Msk                       /*!< Fault 1 interrupt flag */\n#define HRTIM_ISR_FLT2_Pos            (1U)\n#define HRTIM_ISR_FLT2_Msk            (0x1UL << HRTIM_ISR_FLT2_Pos)            /*!< 0x00000002 */\n#define HRTIM_ISR_FLT2                HRTIM_ISR_FLT2_Msk                       /*!< Fault 2 interrupt flag */\n#define HRTIM_ISR_FLT3_Pos            (2U)\n#define HRTIM_ISR_FLT3_Msk            (0x1UL << HRTIM_ISR_FLT3_Pos)            /*!< 0x00000004 */\n#define HRTIM_ISR_FLT3                HRTIM_ISR_FLT3_Msk                       /*!< Fault 3 interrupt flag */\n#define HRTIM_ISR_FLT4_Pos            (3U)\n#define HRTIM_ISR_FLT4_Msk            (0x1UL << HRTIM_ISR_FLT4_Pos)            /*!< 0x00000008 */\n#define HRTIM_ISR_FLT4                HRTIM_ISR_FLT4_Msk                       /*!< Fault 4 interrupt flag */\n#define HRTIM_ISR_FLT5_Pos            (4U)\n#define HRTIM_ISR_FLT5_Msk            (0x1UL << HRTIM_ISR_FLT5_Pos)            /*!< 0x00000010 */\n#define HRTIM_ISR_FLT5                HRTIM_ISR_FLT5_Msk                       /*!< Fault 5 interrupt flag */\n#define HRTIM_ISR_SYSFLT_Pos          (5U)\n#define HRTIM_ISR_SYSFLT_Msk          (0x1UL << HRTIM_ISR_SYSFLT_Pos)          /*!< 0x00000020 */\n#define HRTIM_ISR_SYSFLT              HRTIM_ISR_SYSFLT_Msk                     /*!< System Fault interrupt flag */\n#define HRTIM_ISR_BMPER_Pos           (17U)\n#define HRTIM_ISR_BMPER_Msk           (0x1UL << HRTIM_ISR_BMPER_Pos)           /*!< 0x00020000 */\n#define HRTIM_ISR_BMPER               HRTIM_ISR_BMPER_Msk                      /*!<  Burst mode period interrupt flag */\n\n/**** Bit definition for Common HRTIM Timer interrupt clear register **********/\n#define HRTIM_ICR_FLT1C_Pos           (0U)\n#define HRTIM_ICR_FLT1C_Msk           (0x1UL << HRTIM_ICR_FLT1C_Pos)           /*!< 0x00000001 */\n#define HRTIM_ICR_FLT1C               HRTIM_ICR_FLT1C_Msk                      /*!< Fault 1 interrupt flag clear */\n#define HRTIM_ICR_FLT2C_Pos           (1U)\n#define HRTIM_ICR_FLT2C_Msk           (0x1UL << HRTIM_ICR_FLT2C_Pos)           /*!< 0x00000002 */\n#define HRTIM_ICR_FLT2C               HRTIM_ICR_FLT2C_Msk                      /*!< Fault 2 interrupt flag clear */\n#define HRTIM_ICR_FLT3C_Pos           (2U)\n#define HRTIM_ICR_FLT3C_Msk           (0x1UL << HRTIM_ICR_FLT3C_Pos)           /*!< 0x00000004 */\n#define HRTIM_ICR_FLT3C               HRTIM_ICR_FLT3C_Msk                      /*!< Fault 3 interrupt flag clear */\n#define HRTIM_ICR_FLT4C_Pos           (3U)\n#define HRTIM_ICR_FLT4C_Msk           (0x1UL << HRTIM_ICR_FLT4C_Pos)           /*!< 0x00000008 */\n#define HRTIM_ICR_FLT4C               HRTIM_ICR_FLT4C_Msk                      /*!< Fault 4 interrupt flag clear */\n#define HRTIM_ICR_FLT5C_Pos           (4U)\n#define HRTIM_ICR_FLT5C_Msk           (0x1UL << HRTIM_ICR_FLT5C_Pos)           /*!< 0x00000010 */\n#define HRTIM_ICR_FLT5C               HRTIM_ICR_FLT5C_Msk                      /*!< Fault 5 interrupt flag clear */\n#define HRTIM_ICR_SYSFLTC_Pos         (5U)\n#define HRTIM_ICR_SYSFLTC_Msk         (0x1UL << HRTIM_ICR_SYSFLTC_Pos)         /*!< 0x00000020 */\n#define HRTIM_ICR_SYSFLTC             HRTIM_ICR_SYSFLTC_Msk                    /*!< System Fault interrupt flag clear */\n#define HRTIM_ICR_BMPERC_Pos          (17U)\n#define HRTIM_ICR_BMPERC_Msk          (0x1UL << HRTIM_ICR_BMPERC_Pos)          /*!< 0x00020000 */\n#define HRTIM_ICR_BMPERC              HRTIM_ICR_BMPERC_Msk                     /*!<  Burst mode period interrupt flag clear */\n\n/**** Bit definition for Common HRTIM Timer interrupt enable register *********/\n#define HRTIM_IER_FLT1_Pos            (0U)\n#define HRTIM_IER_FLT1_Msk            (0x1UL << HRTIM_IER_FLT1_Pos)            /*!< 0x00000001 */\n#define HRTIM_IER_FLT1                HRTIM_IER_FLT1_Msk                       /*!< Fault 1 interrupt enable */\n#define HRTIM_IER_FLT2_Pos            (1U)\n#define HRTIM_IER_FLT2_Msk            (0x1UL << HRTIM_IER_FLT2_Pos)            /*!< 0x00000002 */\n#define HRTIM_IER_FLT2                HRTIM_IER_FLT2_Msk                       /*!< Fault 2 interrupt enable */\n#define HRTIM_IER_FLT3_Pos            (2U)\n#define HRTIM_IER_FLT3_Msk            (0x1UL << HRTIM_IER_FLT3_Pos)            /*!< 0x00000004 */\n#define HRTIM_IER_FLT3                HRTIM_IER_FLT3_Msk                       /*!< Fault 3 interrupt enable */\n#define HRTIM_IER_FLT4_Pos            (3U)\n#define HRTIM_IER_FLT4_Msk            (0x1UL << HRTIM_IER_FLT4_Pos)            /*!< 0x00000008 */\n#define HRTIM_IER_FLT4                HRTIM_IER_FLT4_Msk                       /*!< Fault 4 interrupt enable */\n#define HRTIM_IER_FLT5_Pos            (4U)\n#define HRTIM_IER_FLT5_Msk            (0x1UL << HRTIM_IER_FLT5_Pos)            /*!< 0x00000010 */\n#define HRTIM_IER_FLT5                HRTIM_IER_FLT5_Msk                       /*!< Fault 5 interrupt enable */\n#define HRTIM_IER_SYSFLT_Pos          (5U)\n#define HRTIM_IER_SYSFLT_Msk          (0x1UL << HRTIM_IER_SYSFLT_Pos)          /*!< 0x00000020 */\n#define HRTIM_IER_SYSFLT              HRTIM_IER_SYSFLT_Msk                     /*!< System Fault interrupt enable */\n#define HRTIM_IER_BMPER_Pos           (17U)\n#define HRTIM_IER_BMPER_Msk           (0x1UL << HRTIM_IER_BMPER_Pos)           /*!< 0x00020000 */\n#define HRTIM_IER_BMPER               HRTIM_IER_BMPER_Msk                      /*!<  Burst mode period interrupt enable */\n\n/**** Bit definition for Common HRTIM Timer output enable register ************/\n#define HRTIM_OENR_TA1OEN_Pos         (0U)\n#define HRTIM_OENR_TA1OEN_Msk         (0x1UL << HRTIM_OENR_TA1OEN_Pos)         /*!< 0x00000001 */\n#define HRTIM_OENR_TA1OEN             HRTIM_OENR_TA1OEN_Msk                    /*!< Timer A Output 1 enable */\n#define HRTIM_OENR_TA2OEN_Pos         (1U)\n#define HRTIM_OENR_TA2OEN_Msk         (0x1UL << HRTIM_OENR_TA2OEN_Pos)         /*!< 0x00000002 */\n#define HRTIM_OENR_TA2OEN             HRTIM_OENR_TA2OEN_Msk                    /*!< Timer A Output 2 enable */\n#define HRTIM_OENR_TB1OEN_Pos         (2U)\n#define HRTIM_OENR_TB1OEN_Msk         (0x1UL << HRTIM_OENR_TB1OEN_Pos)         /*!< 0x00000004 */\n#define HRTIM_OENR_TB1OEN             HRTIM_OENR_TB1OEN_Msk                    /*!< Timer B Output 1 enable */\n#define HRTIM_OENR_TB2OEN_Pos         (3U)\n#define HRTIM_OENR_TB2OEN_Msk         (0x1UL << HRTIM_OENR_TB2OEN_Pos)         /*!< 0x00000008 */\n#define HRTIM_OENR_TB2OEN             HRTIM_OENR_TB2OEN_Msk                    /*!< Timer B Output 2 enable */\n#define HRTIM_OENR_TC1OEN_Pos         (4U)\n#define HRTIM_OENR_TC1OEN_Msk         (0x1UL << HRTIM_OENR_TC1OEN_Pos)         /*!< 0x00000010 */\n#define HRTIM_OENR_TC1OEN             HRTIM_OENR_TC1OEN_Msk                    /*!< Timer C Output 1 enable */\n#define HRTIM_OENR_TC2OEN_Pos         (5U)\n#define HRTIM_OENR_TC2OEN_Msk         (0x1UL << HRTIM_OENR_TC2OEN_Pos)         /*!< 0x00000020 */\n#define HRTIM_OENR_TC2OEN             HRTIM_OENR_TC2OEN_Msk                    /*!< Timer C Output 2 enable */\n#define HRTIM_OENR_TD1OEN_Pos         (6U)\n#define HRTIM_OENR_TD1OEN_Msk         (0x1UL << HRTIM_OENR_TD1OEN_Pos)         /*!< 0x00000040 */\n#define HRTIM_OENR_TD1OEN             HRTIM_OENR_TD1OEN_Msk                    /*!< Timer D Output 1 enable */\n#define HRTIM_OENR_TD2OEN_Pos         (7U)\n#define HRTIM_OENR_TD2OEN_Msk         (0x1UL << HRTIM_OENR_TD2OEN_Pos)         /*!< 0x00000080 */\n#define HRTIM_OENR_TD2OEN             HRTIM_OENR_TD2OEN_Msk                    /*!< Timer D Output 2 enable */\n#define HRTIM_OENR_TE1OEN_Pos         (8U)\n#define HRTIM_OENR_TE1OEN_Msk         (0x1UL << HRTIM_OENR_TE1OEN_Pos)         /*!< 0x00000100 */\n#define HRTIM_OENR_TE1OEN             HRTIM_OENR_TE1OEN_Msk                    /*!< Timer E Output 1 enable */\n#define HRTIM_OENR_TE2OEN_Pos         (9U)\n#define HRTIM_OENR_TE2OEN_Msk         (0x1UL << HRTIM_OENR_TE2OEN_Pos)         /*!< 0x00000200 */\n#define HRTIM_OENR_TE2OEN             HRTIM_OENR_TE2OEN_Msk                    /*!< Timer E Output 2 enable */\n\n/**** Bit definition for Common HRTIM Timer output disable register ***********/\n#define HRTIM_ODISR_TA1ODIS_Pos       (0U)\n#define HRTIM_ODISR_TA1ODIS_Msk       (0x1UL << HRTIM_ODISR_TA1ODIS_Pos)       /*!< 0x00000001 */\n#define HRTIM_ODISR_TA1ODIS           HRTIM_ODISR_TA1ODIS_Msk                  /*!< Timer A Output 1 disable */\n#define HRTIM_ODISR_TA2ODIS_Pos       (1U)\n#define HRTIM_ODISR_TA2ODIS_Msk       (0x1UL << HRTIM_ODISR_TA2ODIS_Pos)       /*!< 0x00000002 */\n#define HRTIM_ODISR_TA2ODIS           HRTIM_ODISR_TA2ODIS_Msk                  /*!< Timer A Output 2 disable */\n#define HRTIM_ODISR_TB1ODIS_Pos       (2U)\n#define HRTIM_ODISR_TB1ODIS_Msk       (0x1UL << HRTIM_ODISR_TB1ODIS_Pos)       /*!< 0x00000004 */\n#define HRTIM_ODISR_TB1ODIS           HRTIM_ODISR_TB1ODIS_Msk                  /*!< Timer B Output 1 disable */\n#define HRTIM_ODISR_TB2ODIS_Pos       (3U)\n#define HRTIM_ODISR_TB2ODIS_Msk       (0x1UL << HRTIM_ODISR_TB2ODIS_Pos)       /*!< 0x00000008 */\n#define HRTIM_ODISR_TB2ODIS           HRTIM_ODISR_TB2ODIS_Msk                  /*!< Timer B Output 2 disable */\n#define HRTIM_ODISR_TC1ODIS_Pos       (4U)\n#define HRTIM_ODISR_TC1ODIS_Msk       (0x1UL << HRTIM_ODISR_TC1ODIS_Pos)       /*!< 0x00000010 */\n#define HRTIM_ODISR_TC1ODIS           HRTIM_ODISR_TC1ODIS_Msk                  /*!< Timer C Output 1 disable */\n#define HRTIM_ODISR_TC2ODIS_Pos       (5U)\n#define HRTIM_ODISR_TC2ODIS_Msk       (0x1UL << HRTIM_ODISR_TC2ODIS_Pos)       /*!< 0x00000020 */\n#define HRTIM_ODISR_TC2ODIS           HRTIM_ODISR_TC2ODIS_Msk                  /*!< Timer C Output 2 disable */\n#define HRTIM_ODISR_TD1ODIS_Pos       (6U)\n#define HRTIM_ODISR_TD1ODIS_Msk       (0x1UL << HRTIM_ODISR_TD1ODIS_Pos)       /*!< 0x00000040 */\n#define HRTIM_ODISR_TD1ODIS           HRTIM_ODISR_TD1ODIS_Msk                  /*!< Timer D Output 1 disable */\n#define HRTIM_ODISR_TD2ODIS_Pos       (7U)\n#define HRTIM_ODISR_TD2ODIS_Msk       (0x1UL << HRTIM_ODISR_TD2ODIS_Pos)       /*!< 0x00000080 */\n#define HRTIM_ODISR_TD2ODIS           HRTIM_ODISR_TD2ODIS_Msk                  /*!< Timer D Output 2 disable */\n#define HRTIM_ODISR_TE1ODIS_Pos       (8U)\n#define HRTIM_ODISR_TE1ODIS_Msk       (0x1UL << HRTIM_ODISR_TE1ODIS_Pos)       /*!< 0x00000100 */\n#define HRTIM_ODISR_TE1ODIS           HRTIM_ODISR_TE1ODIS_Msk                  /*!< Timer E Output 1 disable */\n#define HRTIM_ODISR_TE2ODIS_Pos       (9U)\n#define HRTIM_ODISR_TE2ODIS_Msk       (0x1UL << HRTIM_ODISR_TE2ODIS_Pos)       /*!< 0x00000200 */\n#define HRTIM_ODISR_TE2ODIS           HRTIM_ODISR_TE2ODIS_Msk                  /*!< Timer E Output 2 disable */\n\n/**** Bit definition for Common HRTIM Timer output disable status register *****/\n#define HRTIM_ODSR_TA1ODS_Pos         (0U)\n#define HRTIM_ODSR_TA1ODS_Msk         (0x1UL << HRTIM_ODSR_TA1ODS_Pos)         /*!< 0x00000001 */\n#define HRTIM_ODSR_TA1ODS             HRTIM_ODSR_TA1ODS_Msk                    /*!< Timer A Output 1 disable status */\n#define HRTIM_ODSR_TA2ODS_Pos         (1U)\n#define HRTIM_ODSR_TA2ODS_Msk         (0x1UL << HRTIM_ODSR_TA2ODS_Pos)         /*!< 0x00000002 */\n#define HRTIM_ODSR_TA2ODS             HRTIM_ODSR_TA2ODS_Msk                    /*!< Timer A Output 2 disable status */\n#define HRTIM_ODSR_TB1ODS_Pos         (2U)\n#define HRTIM_ODSR_TB1ODS_Msk         (0x1UL << HRTIM_ODSR_TB1ODS_Pos)         /*!< 0x00000004 */\n#define HRTIM_ODSR_TB1ODS             HRTIM_ODSR_TB1ODS_Msk                    /*!< Timer B Output 1 disable status */\n#define HRTIM_ODSR_TB2ODS_Pos         (3U)\n#define HRTIM_ODSR_TB2ODS_Msk         (0x1UL << HRTIM_ODSR_TB2ODS_Pos)         /*!< 0x00000008 */\n#define HRTIM_ODSR_TB2ODS             HRTIM_ODSR_TB2ODS_Msk                    /*!< Timer B Output 2 disable status */\n#define HRTIM_ODSR_TC1ODS_Pos         (4U)\n#define HRTIM_ODSR_TC1ODS_Msk         (0x1UL << HRTIM_ODSR_TC1ODS_Pos)         /*!< 0x00000010 */\n#define HRTIM_ODSR_TC1ODS             HRTIM_ODSR_TC1ODS_Msk                    /*!< Timer C Output 1 disable status */\n#define HRTIM_ODSR_TC2ODS_Pos         (5U)\n#define HRTIM_ODSR_TC2ODS_Msk         (0x1UL << HRTIM_ODSR_TC2ODS_Pos)         /*!< 0x00000020 */\n#define HRTIM_ODSR_TC2ODS             HRTIM_ODSR_TC2ODS_Msk                    /*!< Timer C Output 2 disable status */\n#define HRTIM_ODSR_TD1ODS_Pos         (6U)\n#define HRTIM_ODSR_TD1ODS_Msk         (0x1UL << HRTIM_ODSR_TD1ODS_Pos)         /*!< 0x00000040 */\n#define HRTIM_ODSR_TD1ODS             HRTIM_ODSR_TD1ODS_Msk                    /*!< Timer D Output 1 disable status */\n#define HRTIM_ODSR_TD2ODS_Pos         (7U)\n#define HRTIM_ODSR_TD2ODS_Msk         (0x1UL << HRTIM_ODSR_TD2ODS_Pos)         /*!< 0x00000080 */\n#define HRTIM_ODSR_TD2ODS             HRTIM_ODSR_TD2ODS_Msk                    /*!< Timer D Output 2 disable status */\n#define HRTIM_ODSR_TE1ODS_Pos         (8U)\n#define HRTIM_ODSR_TE1ODS_Msk         (0x1UL << HRTIM_ODSR_TE1ODS_Pos)         /*!< 0x00000100 */\n#define HRTIM_ODSR_TE1ODS             HRTIM_ODSR_TE1ODS_Msk                    /*!< Timer E Output 1 disable status */\n#define HRTIM_ODSR_TE2ODS_Pos         (9U)\n#define HRTIM_ODSR_TE2ODS_Msk         (0x1UL << HRTIM_ODSR_TE2ODS_Pos)         /*!< 0x00000200 */\n#define HRTIM_ODSR_TE2ODS             HRTIM_ODSR_TE2ODS_Msk                    /*!< Timer E Output 2 disable status */\n\n/**** Bit definition for Common HRTIM Timer Burst mode control register ********/\n#define HRTIM_BMCR_BME_Pos            (0U)\n#define HRTIM_BMCR_BME_Msk            (0x1UL << HRTIM_BMCR_BME_Pos)            /*!< 0x00000001 */\n#define HRTIM_BMCR_BME                HRTIM_BMCR_BME_Msk                       /*!< Burst mode enable */\n#define HRTIM_BMCR_BMOM_Pos           (1U)\n#define HRTIM_BMCR_BMOM_Msk           (0x1UL << HRTIM_BMCR_BMOM_Pos)           /*!< 0x00000002 */\n#define HRTIM_BMCR_BMOM               HRTIM_BMCR_BMOM_Msk                      /*!< Burst mode operating mode */\n#define HRTIM_BMCR_BMCLK_Pos          (2U)\n#define HRTIM_BMCR_BMCLK_Msk          (0xFUL << HRTIM_BMCR_BMCLK_Pos)          /*!< 0x0000003C */\n#define HRTIM_BMCR_BMCLK              HRTIM_BMCR_BMCLK_Msk                     /*!< Burst mode clock source */\n#define HRTIM_BMCR_BMCLK_0            (0x1UL << HRTIM_BMCR_BMCLK_Pos)           /*!< 0x00000004 */\n#define HRTIM_BMCR_BMCLK_1            (0x2UL << HRTIM_BMCR_BMCLK_Pos)           /*!< 0x00000008 */\n#define HRTIM_BMCR_BMCLK_2            (0x4UL << HRTIM_BMCR_BMCLK_Pos)           /*!< 0x00000010 */\n#define HRTIM_BMCR_BMCLK_3            (0x8UL << HRTIM_BMCR_BMCLK_Pos)           /*!< 0x00000020 */\n#define HRTIM_BMCR_BMPRSC_Pos         (6U)\n#define HRTIM_BMCR_BMPRSC_Msk         (0xFUL << HRTIM_BMCR_BMPRSC_Pos)         /*!< 0x000003C0 */\n#define HRTIM_BMCR_BMPRSC             HRTIM_BMCR_BMPRSC_Msk                    /*!< Burst mode prescaler */\n#define HRTIM_BMCR_BMPRSC_0           (0x1UL << HRTIM_BMCR_BMPRSC_Pos)          /*!< 0x00000040 */\n#define HRTIM_BMCR_BMPRSC_1           (0x2UL << HRTIM_BMCR_BMPRSC_Pos)          /*!< 0x00000080 */\n#define HRTIM_BMCR_BMPRSC_2           (0x4UL << HRTIM_BMCR_BMPRSC_Pos)          /*!< 0x00000100 */\n#define HRTIM_BMCR_BMPRSC_3           (0x8UL << HRTIM_BMCR_BMPRSC_Pos)          /*!< 0x00000200 */\n#define HRTIM_BMCR_BMPREN_Pos         (10U)\n#define HRTIM_BMCR_BMPREN_Msk         (0x1UL << HRTIM_BMCR_BMPREN_Pos)         /*!< 0x00000400 */\n#define HRTIM_BMCR_BMPREN             HRTIM_BMCR_BMPREN_Msk                    /*!< Burst mode Preload bit */\n#define HRTIM_BMCR_MTBM_Pos           (16U)\n#define HRTIM_BMCR_MTBM_Msk           (0x1UL << HRTIM_BMCR_MTBM_Pos)           /*!< 0x00010000 */\n#define HRTIM_BMCR_MTBM               HRTIM_BMCR_MTBM_Msk                      /*!< Master Timer Burst mode */\n#define HRTIM_BMCR_TABM_Pos           (17U)\n#define HRTIM_BMCR_TABM_Msk           (0x1UL << HRTIM_BMCR_TABM_Pos)           /*!< 0x00020000 */\n#define HRTIM_BMCR_TABM               HRTIM_BMCR_TABM_Msk                      /*!< Timer A Burst mode */\n#define HRTIM_BMCR_TBBM_Pos           (18U)\n#define HRTIM_BMCR_TBBM_Msk           (0x1UL << HRTIM_BMCR_TBBM_Pos)           /*!< 0x00040000 */\n#define HRTIM_BMCR_TBBM               HRTIM_BMCR_TBBM_Msk                      /*!< Timer B Burst mode */\n#define HRTIM_BMCR_TCBM_Pos           (19U)\n#define HRTIM_BMCR_TCBM_Msk           (0x1UL << HRTIM_BMCR_TCBM_Pos)           /*!< 0x00080000 */\n#define HRTIM_BMCR_TCBM               HRTIM_BMCR_TCBM_Msk                      /*!< Timer C Burst mode */\n#define HRTIM_BMCR_TDBM_Pos           (20U)\n#define HRTIM_BMCR_TDBM_Msk           (0x1UL << HRTIM_BMCR_TDBM_Pos)           /*!< 0x00100000 */\n#define HRTIM_BMCR_TDBM               HRTIM_BMCR_TDBM_Msk                      /*!< Timer D Burst mode */\n#define HRTIM_BMCR_TEBM_Pos           (21U)\n#define HRTIM_BMCR_TEBM_Msk           (0x1UL << HRTIM_BMCR_TEBM_Pos)           /*!< 0x00200000 */\n#define HRTIM_BMCR_TEBM               HRTIM_BMCR_TEBM_Msk                      /*!< Timer E Burst mode */\n#define HRTIM_BMCR_BMSTAT_Pos         (31U)\n#define HRTIM_BMCR_BMSTAT_Msk         (0x1UL << HRTIM_BMCR_BMSTAT_Pos)         /*!< 0x80000000 */\n#define HRTIM_BMCR_BMSTAT             HRTIM_BMCR_BMSTAT_Msk                    /*!< Burst mode status */\n\n/**** Bit definition for Common HRTIM Timer Burst mode Trigger register *******/\n#define HRTIM_BMTRGR_SW_Pos           (0U)\n#define HRTIM_BMTRGR_SW_Msk           (0x1UL << HRTIM_BMTRGR_SW_Pos)           /*!< 0x00000001 */\n#define HRTIM_BMTRGR_SW               HRTIM_BMTRGR_SW_Msk                      /*!< Software start */\n#define HRTIM_BMTRGR_MSTRST_Pos       (1U)\n#define HRTIM_BMTRGR_MSTRST_Msk       (0x1UL << HRTIM_BMTRGR_MSTRST_Pos)       /*!< 0x00000002 */\n#define HRTIM_BMTRGR_MSTRST           HRTIM_BMTRGR_MSTRST_Msk                  /*!<  Master reset */\n#define HRTIM_BMTRGR_MSTREP_Pos       (2U)\n#define HRTIM_BMTRGR_MSTREP_Msk       (0x1UL << HRTIM_BMTRGR_MSTREP_Pos)       /*!< 0x00000004 */\n#define HRTIM_BMTRGR_MSTREP           HRTIM_BMTRGR_MSTREP_Msk                  /*!<  Master repetition */\n#define HRTIM_BMTRGR_MSTCMP1_Pos      (3U)\n#define HRTIM_BMTRGR_MSTCMP1_Msk      (0x1UL << HRTIM_BMTRGR_MSTCMP1_Pos)      /*!< 0x00000008 */\n#define HRTIM_BMTRGR_MSTCMP1          HRTIM_BMTRGR_MSTCMP1_Msk                 /*!<  Master compare 1 */\n#define HRTIM_BMTRGR_MSTCMP2_Pos      (4U)\n#define HRTIM_BMTRGR_MSTCMP2_Msk      (0x1UL << HRTIM_BMTRGR_MSTCMP2_Pos)      /*!< 0x00000010 */\n#define HRTIM_BMTRGR_MSTCMP2          HRTIM_BMTRGR_MSTCMP2_Msk                 /*!< Master compare 2  */\n#define HRTIM_BMTRGR_MSTCMP3_Pos      (5U)\n#define HRTIM_BMTRGR_MSTCMP3_Msk      (0x1UL << HRTIM_BMTRGR_MSTCMP3_Pos)      /*!< 0x00000020 */\n#define HRTIM_BMTRGR_MSTCMP3          HRTIM_BMTRGR_MSTCMP3_Msk                 /*!< Master compare 3 */\n#define HRTIM_BMTRGR_MSTCMP4_Pos      (6U)\n#define HRTIM_BMTRGR_MSTCMP4_Msk      (0x1UL << HRTIM_BMTRGR_MSTCMP4_Pos)      /*!< 0x00000040 */\n#define HRTIM_BMTRGR_MSTCMP4          HRTIM_BMTRGR_MSTCMP4_Msk                 /*!< Master compare 4 */\n#define HRTIM_BMTRGR_TARST_Pos        (7U)\n#define HRTIM_BMTRGR_TARST_Msk        (0x1UL << HRTIM_BMTRGR_TARST_Pos)        /*!< 0x00000080 */\n#define HRTIM_BMTRGR_TARST            HRTIM_BMTRGR_TARST_Msk                   /*!< Timer A reset  */\n#define HRTIM_BMTRGR_TAREP_Pos        (8U)\n#define HRTIM_BMTRGR_TAREP_Msk        (0x1UL << HRTIM_BMTRGR_TAREP_Pos)        /*!< 0x00000100 */\n#define HRTIM_BMTRGR_TAREP            HRTIM_BMTRGR_TAREP_Msk                   /*!< Timer A repetition  */\n#define HRTIM_BMTRGR_TACMP1_Pos       (9U)\n#define HRTIM_BMTRGR_TACMP1_Msk       (0x1UL << HRTIM_BMTRGR_TACMP1_Pos)       /*!< 0x00000200 */\n#define HRTIM_BMTRGR_TACMP1           HRTIM_BMTRGR_TACMP1_Msk                  /*!< Timer A compare 1  */\n#define HRTIM_BMTRGR_TACMP2_Pos       (10U)\n#define HRTIM_BMTRGR_TACMP2_Msk       (0x1UL << HRTIM_BMTRGR_TACMP2_Pos)       /*!< 0x00000400 */\n#define HRTIM_BMTRGR_TACMP2           HRTIM_BMTRGR_TACMP2_Msk                  /*!< Timer A compare 2  */\n#define HRTIM_BMTRGR_TBRST_Pos        (11U)\n#define HRTIM_BMTRGR_TBRST_Msk        (0x1UL << HRTIM_BMTRGR_TBRST_Pos)        /*!< 0x00000800 */\n#define HRTIM_BMTRGR_TBRST            HRTIM_BMTRGR_TBRST_Msk                   /*!< Timer B reset  */\n#define HRTIM_BMTRGR_TBREP_Pos        (12U)\n#define HRTIM_BMTRGR_TBREP_Msk        (0x1UL << HRTIM_BMTRGR_TBREP_Pos)        /*!< 0x00001000 */\n#define HRTIM_BMTRGR_TBREP            HRTIM_BMTRGR_TBREP_Msk                   /*!< Timer B repetition  */\n#define HRTIM_BMTRGR_TBCMP1_Pos       (13U)\n#define HRTIM_BMTRGR_TBCMP1_Msk       (0x1UL << HRTIM_BMTRGR_TBCMP1_Pos)       /*!< 0x00002000 */\n#define HRTIM_BMTRGR_TBCMP1           HRTIM_BMTRGR_TBCMP1_Msk                  /*!< Timer B compare 1 */\n#define HRTIM_BMTRGR_TBCMP2_Pos       (14U)\n#define HRTIM_BMTRGR_TBCMP2_Msk       (0x1UL << HRTIM_BMTRGR_TBCMP2_Pos)       /*!< 0x00004000 */\n#define HRTIM_BMTRGR_TBCMP2           HRTIM_BMTRGR_TBCMP2_Msk                  /*!< Timer B compare 2 */\n#define HRTIM_BMTRGR_TCRST_Pos        (15U)\n#define HRTIM_BMTRGR_TCRST_Msk        (0x1UL << HRTIM_BMTRGR_TCRST_Pos)        /*!< 0x00008000 */\n#define HRTIM_BMTRGR_TCRST            HRTIM_BMTRGR_TCRST_Msk                   /*!< Timer C reset  */\n#define HRTIM_BMTRGR_TCREP_Pos        (16U)\n#define HRTIM_BMTRGR_TCREP_Msk        (0x1UL << HRTIM_BMTRGR_TCREP_Pos)        /*!< 0x00010000 */\n#define HRTIM_BMTRGR_TCREP            HRTIM_BMTRGR_TCREP_Msk                   /*!< Timer C repetition */\n#define HRTIM_BMTRGR_TCCMP1_Pos       (17U)\n#define HRTIM_BMTRGR_TCCMP1_Msk       (0x1UL << HRTIM_BMTRGR_TCCMP1_Pos)       /*!< 0x00020000 */\n#define HRTIM_BMTRGR_TCCMP1           HRTIM_BMTRGR_TCCMP1_Msk                  /*!< Timer C compare 1 */\n#define HRTIM_BMTRGR_TCCMP2_Pos       (18U)\n#define HRTIM_BMTRGR_TCCMP2_Msk       (0x1UL << HRTIM_BMTRGR_TCCMP2_Pos)       /*!< 0x00040000 */\n#define HRTIM_BMTRGR_TCCMP2           HRTIM_BMTRGR_TCCMP2_Msk                  /*!< Timer C compare 2 */\n#define HRTIM_BMTRGR_TDRST_Pos        (19U)\n#define HRTIM_BMTRGR_TDRST_Msk        (0x1UL << HRTIM_BMTRGR_TDRST_Pos)        /*!< 0x00080000 */\n#define HRTIM_BMTRGR_TDRST            HRTIM_BMTRGR_TDRST_Msk                   /*!< Timer D reset  */\n#define HRTIM_BMTRGR_TDREP_Pos        (20U)\n#define HRTIM_BMTRGR_TDREP_Msk        (0x1UL << HRTIM_BMTRGR_TDREP_Pos)        /*!< 0x00100000 */\n#define HRTIM_BMTRGR_TDREP            HRTIM_BMTRGR_TDREP_Msk                   /*!< Timer D repetition  */\n#define HRTIM_BMTRGR_TDCMP1_Pos       (21U)\n#define HRTIM_BMTRGR_TDCMP1_Msk       (0x1UL << HRTIM_BMTRGR_TDCMP1_Pos)       /*!< 0x00200000 */\n#define HRTIM_BMTRGR_TDCMP1           HRTIM_BMTRGR_TDCMP1_Msk                  /*!< Timer D compare 1 */\n#define HRTIM_BMTRGR_TDCMP2_Pos       (22U)\n#define HRTIM_BMTRGR_TDCMP2_Msk       (0x1UL << HRTIM_BMTRGR_TDCMP2_Pos)       /*!< 0x00400000 */\n#define HRTIM_BMTRGR_TDCMP2           HRTIM_BMTRGR_TDCMP2_Msk                  /*!< Timer D compare 2 */\n#define HRTIM_BMTRGR_TERST_Pos        (23U)\n#define HRTIM_BMTRGR_TERST_Msk        (0x1UL << HRTIM_BMTRGR_TERST_Pos)        /*!< 0x00800000 */\n#define HRTIM_BMTRGR_TERST            HRTIM_BMTRGR_TERST_Msk                   /*!< Timer E reset  */\n#define HRTIM_BMTRGR_TEREP_Pos        (24U)\n#define HRTIM_BMTRGR_TEREP_Msk        (0x1UL << HRTIM_BMTRGR_TEREP_Pos)        /*!< 0x01000000 */\n#define HRTIM_BMTRGR_TEREP            HRTIM_BMTRGR_TEREP_Msk                   /*!< Timer E repetition  */\n#define HRTIM_BMTRGR_TECMP1_Pos       (25U)\n#define HRTIM_BMTRGR_TECMP1_Msk       (0x1UL << HRTIM_BMTRGR_TECMP1_Pos)       /*!< 0x02000000 */\n#define HRTIM_BMTRGR_TECMP1           HRTIM_BMTRGR_TECMP1_Msk                  /*!< Timer E compare 1 */\n#define HRTIM_BMTRGR_TECMP2_Pos       (26U)\n#define HRTIM_BMTRGR_TECMP2_Msk       (0x1UL << HRTIM_BMTRGR_TECMP2_Pos)       /*!< 0x04000000 */\n#define HRTIM_BMTRGR_TECMP2           HRTIM_BMTRGR_TECMP2_Msk                  /*!< Timer E compare 2 */\n#define HRTIM_BMTRGR_TAEEV7_Pos       (27U)\n#define HRTIM_BMTRGR_TAEEV7_Msk       (0x1UL << HRTIM_BMTRGR_TAEEV7_Pos)       /*!< 0x08000000 */\n#define HRTIM_BMTRGR_TAEEV7           HRTIM_BMTRGR_TAEEV7_Msk                  /*!< Timer A period following External Event7  */\n#define HRTIM_BMTRGR_TDEEV8_Pos       (28U)\n#define HRTIM_BMTRGR_TDEEV8_Msk       (0x1UL << HRTIM_BMTRGR_TDEEV8_Pos)       /*!< 0x10000000 */\n#define HRTIM_BMTRGR_TDEEV8           HRTIM_BMTRGR_TDEEV8_Msk                  /*!< Timer D period following External Event8  */\n#define HRTIM_BMTRGR_EEV7_Pos         (29U)\n#define HRTIM_BMTRGR_EEV7_Msk         (0x1UL << HRTIM_BMTRGR_EEV7_Pos)         /*!< 0x20000000 */\n#define HRTIM_BMTRGR_EEV7             HRTIM_BMTRGR_EEV7_Msk                    /*!< External Event 7 */\n#define HRTIM_BMTRGR_EEV8_Pos         (30U)\n#define HRTIM_BMTRGR_EEV8_Msk         (0x1UL << HRTIM_BMTRGR_EEV8_Pos)         /*!< 0x40000000 */\n#define HRTIM_BMTRGR_EEV8             HRTIM_BMTRGR_EEV8_Msk                    /*!< External Event 8 */\n#define HRTIM_BMTRGR_OCHPEV_Pos       (31U)\n#define HRTIM_BMTRGR_OCHPEV_Msk       (0x1UL << HRTIM_BMTRGR_OCHPEV_Pos)       /*!< 0x80000000 */\n#define HRTIM_BMTRGR_OCHPEV           HRTIM_BMTRGR_OCHPEV_Msk                  /*!< on-chip Event */\n\n/*******************  Bit definition for HRTIM_BMCMPR register  ***************/\n#define HRTIM_BMCMPR_BMCMPR_Pos       (0U)\n#define HRTIM_BMCMPR_BMCMPR_Msk       (0xFFFFUL << HRTIM_BMCMPR_BMCMPR_Pos)    /*!< 0x0000FFFF */\n#define HRTIM_BMCMPR_BMCMPR           HRTIM_BMCMPR_BMCMPR_Msk                  /*!<!<Burst Compare Value */\n\n/*******************  Bit definition for HRTIM_BMPER register  ****************/\n#define HRTIM_BMPER_BMPER_Pos         (0U)\n#define HRTIM_BMPER_BMPER_Msk         (0xFFFFUL << HRTIM_BMPER_BMPER_Pos)      /*!< 0x0000FFFF */\n#define HRTIM_BMPER_BMPER             HRTIM_BMPER_BMPER_Msk                    /*!<!<Burst period Value */\n\n/*******************  Bit definition for HRTIM_EECR1 register  ****************/\n#define HRTIM_EECR1_EE1SRC_Pos        (0U)\n#define HRTIM_EECR1_EE1SRC_Msk        (0x3UL << HRTIM_EECR1_EE1SRC_Pos)        /*!< 0x00000003 */\n#define HRTIM_EECR1_EE1SRC            HRTIM_EECR1_EE1SRC_Msk                   /*!< External event 1 source */\n#define HRTIM_EECR1_EE1SRC_0          (0x1UL << HRTIM_EECR1_EE1SRC_Pos)         /*!< 0x00000001 */\n#define HRTIM_EECR1_EE1SRC_1          (0x2UL << HRTIM_EECR1_EE1SRC_Pos)         /*!< 0x00000002 */\n#define HRTIM_EECR1_EE1POL_Pos        (2U)\n#define HRTIM_EECR1_EE1POL_Msk        (0x1UL << HRTIM_EECR1_EE1POL_Pos)        /*!< 0x00000004 */\n#define HRTIM_EECR1_EE1POL            HRTIM_EECR1_EE1POL_Msk                   /*!< External event 1 Polarity */\n#define HRTIM_EECR1_EE1SNS_Pos        (3U)\n#define HRTIM_EECR1_EE1SNS_Msk        (0x3UL << HRTIM_EECR1_EE1SNS_Pos)        /*!< 0x00000018 */\n#define HRTIM_EECR1_EE1SNS            HRTIM_EECR1_EE1SNS_Msk                   /*!< External event 1 sensitivity */\n#define HRTIM_EECR1_EE1SNS_0          (0x1UL << HRTIM_EECR1_EE1SNS_Pos)         /*!< 0x00000008 */\n#define HRTIM_EECR1_EE1SNS_1          (0x2UL << HRTIM_EECR1_EE1SNS_Pos)         /*!< 0x00000010 */\n#define HRTIM_EECR1_EE1FAST_Pos       (5U)\n#define HRTIM_EECR1_EE1FAST_Msk       (0x1UL << HRTIM_EECR1_EE1FAST_Pos)       /*!< 0x00000020 */\n#define HRTIM_EECR1_EE1FAST           HRTIM_EECR1_EE1FAST_Msk                  /*!< External event 1 Fast mode */\n\n#define HRTIM_EECR1_EE2SRC_Pos        (6U)\n#define HRTIM_EECR1_EE2SRC_Msk        (0x3UL << HRTIM_EECR1_EE2SRC_Pos)        /*!< 0x000000C0 */\n#define HRTIM_EECR1_EE2SRC            HRTIM_EECR1_EE2SRC_Msk                   /*!< External event 2 source */\n#define HRTIM_EECR1_EE2SRC_0          (0x1UL << HRTIM_EECR1_EE2SRC_Pos)         /*!< 0x00000040 */\n#define HRTIM_EECR1_EE2SRC_1          (0x2UL << HRTIM_EECR1_EE2SRC_Pos)         /*!< 0x00000080 */\n#define HRTIM_EECR1_EE2POL_Pos        (8U)\n#define HRTIM_EECR1_EE2POL_Msk        (0x1UL << HRTIM_EECR1_EE2POL_Pos)        /*!< 0x00000100 */\n#define HRTIM_EECR1_EE2POL            HRTIM_EECR1_EE2POL_Msk                   /*!< External event 2 Polarity */\n#define HRTIM_EECR1_EE2SNS_Pos        (9U)\n#define HRTIM_EECR1_EE2SNS_Msk        (0x3UL << HRTIM_EECR1_EE2SNS_Pos)        /*!< 0x00000600 */\n#define HRTIM_EECR1_EE2SNS            HRTIM_EECR1_EE2SNS_Msk                   /*!< External event 2 sensitivity */\n#define HRTIM_EECR1_EE2SNS_0          (0x1UL << HRTIM_EECR1_EE2SNS_Pos)         /*!< 0x00000200 */\n#define HRTIM_EECR1_EE2SNS_1          (0x2UL << HRTIM_EECR1_EE2SNS_Pos)         /*!< 0x00000400 */\n#define HRTIM_EECR1_EE2FAST_Pos       (11U)\n#define HRTIM_EECR1_EE2FAST_Msk       (0x1UL << HRTIM_EECR1_EE2FAST_Pos)       /*!< 0x00000800 */\n#define HRTIM_EECR1_EE2FAST           HRTIM_EECR1_EE2FAST_Msk                  /*!< External event 2 Fast mode */\n\n#define HRTIM_EECR1_EE3SRC_Pos        (12U)\n#define HRTIM_EECR1_EE3SRC_Msk        (0x3UL << HRTIM_EECR1_EE3SRC_Pos)        /*!< 0x00003000 */\n#define HRTIM_EECR1_EE3SRC            HRTIM_EECR1_EE3SRC_Msk                   /*!< External event 3 source */\n#define HRTIM_EECR1_EE3SRC_0          (0x1UL << HRTIM_EECR1_EE3SRC_Pos)         /*!< 0x00001000 */\n#define HRTIM_EECR1_EE3SRC_1          (0x2UL << HRTIM_EECR1_EE3SRC_Pos)         /*!< 0x00002000 */\n#define HRTIM_EECR1_EE3POL_Pos        (14U)\n#define HRTIM_EECR1_EE3POL_Msk        (0x1UL << HRTIM_EECR1_EE3POL_Pos)        /*!< 0x00004000 */\n#define HRTIM_EECR1_EE3POL            HRTIM_EECR1_EE3POL_Msk                   /*!< External event 3 Polarity */\n#define HRTIM_EECR1_EE3SNS_Pos        (15U)\n#define HRTIM_EECR1_EE3SNS_Msk        (0x3UL << HRTIM_EECR1_EE3SNS_Pos)        /*!< 0x00018000 */\n#define HRTIM_EECR1_EE3SNS            HRTIM_EECR1_EE3SNS_Msk                   /*!< External event 3 sensitivity */\n#define HRTIM_EECR1_EE3SNS_0          (0x1UL << HRTIM_EECR1_EE3SNS_Pos)         /*!< 0x00008000 */\n#define HRTIM_EECR1_EE3SNS_1          (0x2UL << HRTIM_EECR1_EE3SNS_Pos)         /*!< 0x00010000 */\n#define HRTIM_EECR1_EE3FAST_Pos       (17U)\n#define HRTIM_EECR1_EE3FAST_Msk       (0x1UL << HRTIM_EECR1_EE3FAST_Pos)       /*!< 0x00020000 */\n#define HRTIM_EECR1_EE3FAST           HRTIM_EECR1_EE3FAST_Msk                  /*!< External event 3 Fast mode */\n\n#define HRTIM_EECR1_EE4SRC_Pos        (18U)\n#define HRTIM_EECR1_EE4SRC_Msk        (0x3UL << HRTIM_EECR1_EE4SRC_Pos)        /*!< 0x000C0000 */\n#define HRTIM_EECR1_EE4SRC            HRTIM_EECR1_EE4SRC_Msk                   /*!< External event 4 source */\n#define HRTIM_EECR1_EE4SRC_0          (0x1UL << HRTIM_EECR1_EE4SRC_Pos)         /*!< 0x00040000 */\n#define HRTIM_EECR1_EE4SRC_1          (0x2UL << HRTIM_EECR1_EE4SRC_Pos)         /*!< 0x00080000 */\n#define HRTIM_EECR1_EE4POL_Pos        (20U)\n#define HRTIM_EECR1_EE4POL_Msk        (0x1UL << HRTIM_EECR1_EE4POL_Pos)        /*!< 0x00100000 */\n#define HRTIM_EECR1_EE4POL            HRTIM_EECR1_EE4POL_Msk                   /*!< External event 4 Polarity */\n#define HRTIM_EECR1_EE4SNS_Pos        (21U)\n#define HRTIM_EECR1_EE4SNS_Msk        (0x3UL << HRTIM_EECR1_EE4SNS_Pos)        /*!< 0x00600000 */\n#define HRTIM_EECR1_EE4SNS            HRTIM_EECR1_EE4SNS_Msk                   /*!< External event 4 sensitivity */\n#define HRTIM_EECR1_EE4SNS_0          (0x1UL << HRTIM_EECR1_EE4SNS_Pos)         /*!< 0x00200000 */\n#define HRTIM_EECR1_EE4SNS_1          (0x2UL << HRTIM_EECR1_EE4SNS_Pos)         /*!< 0x00400000 */\n#define HRTIM_EECR1_EE4FAST_Pos       (23U)\n#define HRTIM_EECR1_EE4FAST_Msk       (0x1UL << HRTIM_EECR1_EE4FAST_Pos)       /*!< 0x00800000 */\n#define HRTIM_EECR1_EE4FAST           HRTIM_EECR1_EE4FAST_Msk                  /*!< External event 4 Fast mode */\n\n#define HRTIM_EECR1_EE5SRC_Pos        (24U)\n#define HRTIM_EECR1_EE5SRC_Msk        (0x3UL << HRTIM_EECR1_EE5SRC_Pos)        /*!< 0x03000000 */\n#define HRTIM_EECR1_EE5SRC            HRTIM_EECR1_EE5SRC_Msk                   /*!< External event 5 source */\n#define HRTIM_EECR1_EE5SRC_0          (0x1UL << HRTIM_EECR1_EE5SRC_Pos)         /*!< 0x01000000 */\n#define HRTIM_EECR1_EE5SRC_1          (0x2UL << HRTIM_EECR1_EE5SRC_Pos)         /*!< 0x02000000 */\n#define HRTIM_EECR1_EE5POL_Pos        (26U)\n#define HRTIM_EECR1_EE5POL_Msk        (0x1UL << HRTIM_EECR1_EE5POL_Pos)        /*!< 0x04000000 */\n#define HRTIM_EECR1_EE5POL            HRTIM_EECR1_EE5POL_Msk                   /*!< External event 5 Polarity */\n#define HRTIM_EECR1_EE5SNS_Pos        (27U)\n#define HRTIM_EECR1_EE5SNS_Msk        (0x3UL << HRTIM_EECR1_EE5SNS_Pos)        /*!< 0x18000000 */\n#define HRTIM_EECR1_EE5SNS            HRTIM_EECR1_EE5SNS_Msk                   /*!< External event 5 sensitivity */\n#define HRTIM_EECR1_EE5SNS_0          (0x1UL << HRTIM_EECR1_EE5SNS_Pos)         /*!< 0x08000000 */\n#define HRTIM_EECR1_EE5SNS_1          (0x2UL << HRTIM_EECR1_EE5SNS_Pos)         /*!< 0x10000000 */\n#define HRTIM_EECR1_EE5FAST_Pos       (29U)\n#define HRTIM_EECR1_EE5FAST_Msk       (0x1UL << HRTIM_EECR1_EE5FAST_Pos)       /*!< 0x20000000 */\n#define HRTIM_EECR1_EE5FAST           HRTIM_EECR1_EE5FAST_Msk                  /*!< External event 5 Fast mode */\n\n/*******************  Bit definition for HRTIM_EECR2 register  ****************/\n#define HRTIM_EECR2_EE6SRC_Pos        (0U)\n#define HRTIM_EECR2_EE6SRC_Msk        (0x3UL << HRTIM_EECR2_EE6SRC_Pos)        /*!< 0x00000003 */\n#define HRTIM_EECR2_EE6SRC            HRTIM_EECR2_EE6SRC_Msk                   /*!< External event 6 source */\n#define HRTIM_EECR2_EE6SRC_0          (0x1UL << HRTIM_EECR2_EE6SRC_Pos)         /*!< 0x00000001 */\n#define HRTIM_EECR2_EE6SRC_1          (0x2UL << HRTIM_EECR2_EE6SRC_Pos)         /*!< 0x00000002 */\n#define HRTIM_EECR2_EE6POL_Pos        (2U)\n#define HRTIM_EECR2_EE6POL_Msk        (0x1UL << HRTIM_EECR2_EE6POL_Pos)        /*!< 0x00000004 */\n#define HRTIM_EECR2_EE6POL            HRTIM_EECR2_EE6POL_Msk                   /*!< External event 6 Polarity */\n#define HRTIM_EECR2_EE6SNS_Pos        (3U)\n#define HRTIM_EECR2_EE6SNS_Msk        (0x3UL << HRTIM_EECR2_EE6SNS_Pos)        /*!< 0x00000018 */\n#define HRTIM_EECR2_EE6SNS            HRTIM_EECR2_EE6SNS_Msk                   /*!< External event 6 sensitivity */\n#define HRTIM_EECR2_EE6SNS_0          (0x1UL << HRTIM_EECR2_EE6SNS_Pos)         /*!< 0x00000008 */\n#define HRTIM_EECR2_EE6SNS_1          (0x2UL << HRTIM_EECR2_EE6SNS_Pos)         /*!< 0x00000010 */\n\n#define HRTIM_EECR2_EE7SRC_Pos        (6U)\n#define HRTIM_EECR2_EE7SRC_Msk        (0x3UL << HRTIM_EECR2_EE7SRC_Pos)        /*!< 0x000000C0 */\n#define HRTIM_EECR2_EE7SRC            HRTIM_EECR2_EE7SRC_Msk                   /*!< External event 7 source */\n#define HRTIM_EECR2_EE7SRC_0          (0x1UL << HRTIM_EECR2_EE7SRC_Pos)         /*!< 0x00000040 */\n#define HRTIM_EECR2_EE7SRC_1          (0x2UL << HRTIM_EECR2_EE7SRC_Pos)         /*!< 0x00000080 */\n#define HRTIM_EECR2_EE7POL_Pos        (8U)\n#define HRTIM_EECR2_EE7POL_Msk        (0x1UL << HRTIM_EECR2_EE7POL_Pos)        /*!< 0x00000100 */\n#define HRTIM_EECR2_EE7POL            HRTIM_EECR2_EE7POL_Msk                   /*!< External event 7 Polarity */\n#define HRTIM_EECR2_EE7SNS_Pos        (9U)\n#define HRTIM_EECR2_EE7SNS_Msk        (0x3UL << HRTIM_EECR2_EE7SNS_Pos)        /*!< 0x00000600 */\n#define HRTIM_EECR2_EE7SNS            HRTIM_EECR2_EE7SNS_Msk                   /*!< External event 7 sensitivity */\n#define HRTIM_EECR2_EE7SNS_0          (0x1UL << HRTIM_EECR2_EE7SNS_Pos)         /*!< 0x00000200 */\n#define HRTIM_EECR2_EE7SNS_1          (0x2UL << HRTIM_EECR2_EE7SNS_Pos)         /*!< 0x00000400 */\n\n#define HRTIM_EECR2_EE8SRC_Pos        (12U)\n#define HRTIM_EECR2_EE8SRC_Msk        (0x3UL << HRTIM_EECR2_EE8SRC_Pos)        /*!< 0x00003000 */\n#define HRTIM_EECR2_EE8SRC            HRTIM_EECR2_EE8SRC_Msk                   /*!< External event 8 source */\n#define HRTIM_EECR2_EE8SRC_0          (0x1UL << HRTIM_EECR2_EE8SRC_Pos)         /*!< 0x00001000 */\n#define HRTIM_EECR2_EE8SRC_1          (0x2UL << HRTIM_EECR2_EE8SRC_Pos)         /*!< 0x00002000 */\n#define HRTIM_EECR2_EE8POL_Pos        (14U)\n#define HRTIM_EECR2_EE8POL_Msk        (0x1UL << HRTIM_EECR2_EE8POL_Pos)        /*!< 0x00004000 */\n#define HRTIM_EECR2_EE8POL            HRTIM_EECR2_EE8POL_Msk                   /*!< External event 8 Polarity */\n#define HRTIM_EECR2_EE8SNS_Pos        (15U)\n#define HRTIM_EECR2_EE8SNS_Msk        (0x3UL << HRTIM_EECR2_EE8SNS_Pos)        /*!< 0x00018000 */\n#define HRTIM_EECR2_EE8SNS            HRTIM_EECR2_EE8SNS_Msk                   /*!< External event 8 sensitivity */\n#define HRTIM_EECR2_EE8SNS_0          (0x1UL << HRTIM_EECR2_EE8SNS_Pos)         /*!< 0x00008000 */\n#define HRTIM_EECR2_EE8SNS_1          (0x2UL << HRTIM_EECR2_EE8SNS_Pos)         /*!< 0x00010000 */\n\n#define HRTIM_EECR2_EE9SRC_Pos        (18U)\n#define HRTIM_EECR2_EE9SRC_Msk        (0x3UL << HRTIM_EECR2_EE9SRC_Pos)        /*!< 0x000C0000 */\n#define HRTIM_EECR2_EE9SRC            HRTIM_EECR2_EE9SRC_Msk                   /*!< External event 9 source */\n#define HRTIM_EECR2_EE9SRC_0          (0x1UL << HRTIM_EECR2_EE9SRC_Pos)         /*!< 0x00040000 */\n#define HRTIM_EECR2_EE9SRC_1          (0x2UL << HRTIM_EECR2_EE9SRC_Pos)         /*!< 0x00080000 */\n#define HRTIM_EECR2_EE9POL_Pos        (20U)\n#define HRTIM_EECR2_EE9POL_Msk        (0x1UL << HRTIM_EECR2_EE9POL_Pos)        /*!< 0x00100000 */\n#define HRTIM_EECR2_EE9POL            HRTIM_EECR2_EE9POL_Msk                   /*!< External event 9 Polarity */\n#define HRTIM_EECR2_EE9SNS_Pos        (21U)\n#define HRTIM_EECR2_EE9SNS_Msk        (0x3UL << HRTIM_EECR2_EE9SNS_Pos)        /*!< 0x00600000 */\n#define HRTIM_EECR2_EE9SNS            HRTIM_EECR2_EE9SNS_Msk                   /*!< External event 9 sensitivity */\n#define HRTIM_EECR2_EE9SNS_0          (0x1UL << HRTIM_EECR2_EE9SNS_Pos)         /*!< 0x00200000 */\n#define HRTIM_EECR2_EE9SNS_1          (0x2UL << HRTIM_EECR2_EE9SNS_Pos)         /*!< 0x00400000 */\n\n#define HRTIM_EECR2_EE10SRC_Pos       (24U)\n#define HRTIM_EECR2_EE10SRC_Msk       (0x3UL << HRTIM_EECR2_EE10SRC_Pos)       /*!< 0x03000000 */\n#define HRTIM_EECR2_EE10SRC           HRTIM_EECR2_EE10SRC_Msk                  /*!< External event 10 source */\n#define HRTIM_EECR2_EE10SRC_0         (0x1UL << HRTIM_EECR2_EE10SRC_Pos)        /*!< 0x01000000 */\n#define HRTIM_EECR2_EE10SRC_1         (0x2UL << HRTIM_EECR2_EE10SRC_Pos)        /*!< 0x02000000 */\n#define HRTIM_EECR2_EE10POL_Pos       (26U)\n#define HRTIM_EECR2_EE10POL_Msk       (0x1UL << HRTIM_EECR2_EE10POL_Pos)       /*!< 0x04000000 */\n#define HRTIM_EECR2_EE10POL           HRTIM_EECR2_EE10POL_Msk                  /*!< External event 10 Polarity */\n#define HRTIM_EECR2_EE10SNS_Pos       (27U)\n#define HRTIM_EECR2_EE10SNS_Msk       (0x3UL << HRTIM_EECR2_EE10SNS_Pos)       /*!< 0x18000000 */\n#define HRTIM_EECR2_EE10SNS           HRTIM_EECR2_EE10SNS_Msk                  /*!< External event 10 sensitivity */\n#define HRTIM_EECR2_EE10SNS_0         (0x1UL << HRTIM_EECR2_EE10SNS_Pos)        /*!< 0x08000000 */\n#define HRTIM_EECR2_EE10SNS_1         (0x2UL << HRTIM_EECR2_EE10SNS_Pos)        /*!< 0x10000000 */\n\n/*******************  Bit definition for HRTIM_EECR3 register  ****************/\n#define HRTIM_EECR3_EE6F_Pos          (0U)\n#define HRTIM_EECR3_EE6F_Msk          (0xFUL << HRTIM_EECR3_EE6F_Pos)          /*!< 0x0000000F */\n#define HRTIM_EECR3_EE6F              HRTIM_EECR3_EE6F_Msk                     /*!< External event 6 filter */\n#define HRTIM_EECR3_EE6F_0            (0x1UL << HRTIM_EECR3_EE6F_Pos)           /*!< 0x00000001 */\n#define HRTIM_EECR3_EE6F_1            (0x2UL << HRTIM_EECR3_EE6F_Pos)           /*!< 0x00000002 */\n#define HRTIM_EECR3_EE6F_2            (0x4UL << HRTIM_EECR3_EE6F_Pos)           /*!< 0x00000004 */\n#define HRTIM_EECR3_EE6F_3            (0x8UL << HRTIM_EECR3_EE6F_Pos)           /*!< 0x00000008 */\n#define HRTIM_EECR3_EE7F_Pos          (6U)\n#define HRTIM_EECR3_EE7F_Msk          (0xFUL << HRTIM_EECR3_EE7F_Pos)          /*!< 0x000003C0 */\n#define HRTIM_EECR3_EE7F              HRTIM_EECR3_EE7F_Msk                     /*!< External event 7 filter */\n#define HRTIM_EECR3_EE7F_0            (0x1UL << HRTIM_EECR3_EE7F_Pos)           /*!< 0x00000040 */\n#define HRTIM_EECR3_EE7F_1            (0x2UL << HRTIM_EECR3_EE7F_Pos)           /*!< 0x00000080 */\n#define HRTIM_EECR3_EE7F_2            (0x4UL << HRTIM_EECR3_EE7F_Pos)           /*!< 0x00000100 */\n#define HRTIM_EECR3_EE7F_3            (0x8UL << HRTIM_EECR3_EE7F_Pos)           /*!< 0x00000200 */\n#define HRTIM_EECR3_EE8F_Pos          (12U)\n#define HRTIM_EECR3_EE8F_Msk          (0xFUL << HRTIM_EECR3_EE8F_Pos)          /*!< 0x0000F000 */\n#define HRTIM_EECR3_EE8F              HRTIM_EECR3_EE8F_Msk                     /*!< External event 8 filter */\n#define HRTIM_EECR3_EE8F_0            (0x1UL << HRTIM_EECR3_EE8F_Pos)           /*!< 0x00001000 */\n#define HRTIM_EECR3_EE8F_1            (0x2UL << HRTIM_EECR3_EE8F_Pos)           /*!< 0x00002000 */\n#define HRTIM_EECR3_EE8F_2            (0x4UL << HRTIM_EECR3_EE8F_Pos)           /*!< 0x00004000 */\n#define HRTIM_EECR3_EE8F_3            (0x8UL << HRTIM_EECR3_EE8F_Pos)           /*!< 0x00008000 */\n#define HRTIM_EECR3_EE9F_Pos          (18U)\n#define HRTIM_EECR3_EE9F_Msk          (0xFUL << HRTIM_EECR3_EE9F_Pos)          /*!< 0x003C0000 */\n#define HRTIM_EECR3_EE9F              HRTIM_EECR3_EE9F_Msk                     /*!< External event 9 filter */\n#define HRTIM_EECR3_EE9F_0            (0x1UL << HRTIM_EECR3_EE9F_Pos)           /*!< 0x00040000 */\n#define HRTIM_EECR3_EE9F_1            (0x2UL << HRTIM_EECR3_EE9F_Pos)           /*!< 0x00080000 */\n#define HRTIM_EECR3_EE9F_2            (0x4UL << HRTIM_EECR3_EE9F_Pos)           /*!< 0x00100000 */\n#define HRTIM_EECR3_EE9F_3            (0x8UL << HRTIM_EECR3_EE9F_Pos)           /*!< 0x00200000 */\n#define HRTIM_EECR3_EE10F_Pos         (24U)\n#define HRTIM_EECR3_EE10F_Msk         (0xFUL << HRTIM_EECR3_EE10F_Pos)         /*!< 0x0F000000 */\n#define HRTIM_EECR3_EE10F             HRTIM_EECR3_EE10F_Msk                    /*!< External event 10 filter */\n#define HRTIM_EECR3_EE10F_0           (0x1UL << HRTIM_EECR3_EE10F_Pos)          /*!< 0x01000000 */\n#define HRTIM_EECR3_EE10F_1           (0x2UL << HRTIM_EECR3_EE10F_Pos)          /*!< 0x02000000 */\n#define HRTIM_EECR3_EE10F_2           (0x4UL << HRTIM_EECR3_EE10F_Pos)          /*!< 0x04000000 */\n#define HRTIM_EECR3_EE10F_3           (0x8UL << HRTIM_EECR3_EE10F_Pos)          /*!< 0x08000000 */\n#define HRTIM_EECR3_EEVSD_Pos         (30U)\n#define HRTIM_EECR3_EEVSD_Msk         (0x3UL << HRTIM_EECR3_EEVSD_Pos)         /*!< 0xC0000000 */\n#define HRTIM_EECR3_EEVSD             HRTIM_EECR3_EEVSD_Msk                    /*!< External event sampling clock division */\n#define HRTIM_EECR3_EEVSD_0           (0x1UL << HRTIM_EECR3_EEVSD_Pos)          /*!< 0x40000000 */\n#define HRTIM_EECR3_EEVSD_1           (0x2UL << HRTIM_EECR3_EEVSD_Pos)          /*!< 0x80000000 */\n\n/*******************  Bit definition for HRTIM_ADC1R register  ****************/\n#define HRTIM_ADC1R_AD1MC1_Pos        (0U)\n#define HRTIM_ADC1R_AD1MC1_Msk        (0x1UL << HRTIM_ADC1R_AD1MC1_Pos)        /*!< 0x00000001 */\n#define HRTIM_ADC1R_AD1MC1            HRTIM_ADC1R_AD1MC1_Msk                   /*!< ADC Trigger 1 on master compare 1 */\n#define HRTIM_ADC1R_AD1MC2_Pos        (1U)\n#define HRTIM_ADC1R_AD1MC2_Msk        (0x1UL << HRTIM_ADC1R_AD1MC2_Pos)        /*!< 0x00000002 */\n#define HRTIM_ADC1R_AD1MC2            HRTIM_ADC1R_AD1MC2_Msk                   /*!< ADC Trigger 1 on master compare 2 */\n#define HRTIM_ADC1R_AD1MC3_Pos        (2U)\n#define HRTIM_ADC1R_AD1MC3_Msk        (0x1UL << HRTIM_ADC1R_AD1MC3_Pos)        /*!< 0x00000004 */\n#define HRTIM_ADC1R_AD1MC3            HRTIM_ADC1R_AD1MC3_Msk                   /*!< ADC Trigger 1 on master compare 3 */\n#define HRTIM_ADC1R_AD1MC4_Pos        (3U)\n#define HRTIM_ADC1R_AD1MC4_Msk        (0x1UL << HRTIM_ADC1R_AD1MC4_Pos)        /*!< 0x00000008 */\n#define HRTIM_ADC1R_AD1MC4            HRTIM_ADC1R_AD1MC4_Msk                   /*!< ADC Trigger 1 on master compare 4 */\n#define HRTIM_ADC1R_AD1MPER_Pos       (4U)\n#define HRTIM_ADC1R_AD1MPER_Msk       (0x1UL << HRTIM_ADC1R_AD1MPER_Pos)       /*!< 0x00000010 */\n#define HRTIM_ADC1R_AD1MPER           HRTIM_ADC1R_AD1MPER_Msk                  /*!< ADC Trigger 1 on master period */\n#define HRTIM_ADC1R_AD1EEV1_Pos       (5U)\n#define HRTIM_ADC1R_AD1EEV1_Msk       (0x1UL << HRTIM_ADC1R_AD1EEV1_Pos)       /*!< 0x00000020 */\n#define HRTIM_ADC1R_AD1EEV1           HRTIM_ADC1R_AD1EEV1_Msk                  /*!< ADC Trigger 1 on external event 1 */\n#define HRTIM_ADC1R_AD1EEV2_Pos       (6U)\n#define HRTIM_ADC1R_AD1EEV2_Msk       (0x1UL << HRTIM_ADC1R_AD1EEV2_Pos)       /*!< 0x00000040 */\n#define HRTIM_ADC1R_AD1EEV2           HRTIM_ADC1R_AD1EEV2_Msk                  /*!< ADC Trigger 1 on external event 2 */\n#define HRTIM_ADC1R_AD1EEV3_Pos       (7U)\n#define HRTIM_ADC1R_AD1EEV3_Msk       (0x1UL << HRTIM_ADC1R_AD1EEV3_Pos)       /*!< 0x00000080 */\n#define HRTIM_ADC1R_AD1EEV3           HRTIM_ADC1R_AD1EEV3_Msk                  /*!< ADC Trigger 1 on external event 3 */\n#define HRTIM_ADC1R_AD1EEV4_Pos       (8U)\n#define HRTIM_ADC1R_AD1EEV4_Msk       (0x1UL << HRTIM_ADC1R_AD1EEV4_Pos)       /*!< 0x00000100 */\n#define HRTIM_ADC1R_AD1EEV4           HRTIM_ADC1R_AD1EEV4_Msk                  /*!< ADC Trigger 1 on external event 4 */\n#define HRTIM_ADC1R_AD1EEV5_Pos       (9U)\n#define HRTIM_ADC1R_AD1EEV5_Msk       (0x1UL << HRTIM_ADC1R_AD1EEV5_Pos)       /*!< 0x00000200 */\n#define HRTIM_ADC1R_AD1EEV5           HRTIM_ADC1R_AD1EEV5_Msk                  /*!< ADC Trigger 1 on external event 5 */\n#define HRTIM_ADC1R_AD1TAC2_Pos       (10U)\n#define HRTIM_ADC1R_AD1TAC2_Msk       (0x1UL << HRTIM_ADC1R_AD1TAC2_Pos)       /*!< 0x00000400 */\n#define HRTIM_ADC1R_AD1TAC2           HRTIM_ADC1R_AD1TAC2_Msk                  /*!< ADC Trigger 1 on Timer A compare 2 */\n#define HRTIM_ADC1R_AD1TAC3_Pos       (11U)\n#define HRTIM_ADC1R_AD1TAC3_Msk       (0x1UL << HRTIM_ADC1R_AD1TAC3_Pos)       /*!< 0x00000800 */\n#define HRTIM_ADC1R_AD1TAC3           HRTIM_ADC1R_AD1TAC3_Msk                  /*!< ADC Trigger 1 on Timer A compare 3 */\n#define HRTIM_ADC1R_AD1TAC4_Pos       (12U)\n#define HRTIM_ADC1R_AD1TAC4_Msk       (0x1UL << HRTIM_ADC1R_AD1TAC4_Pos)       /*!< 0x00001000 */\n#define HRTIM_ADC1R_AD1TAC4           HRTIM_ADC1R_AD1TAC4_Msk                  /*!< ADC Trigger 1 on Timer A compare 4 */\n#define HRTIM_ADC1R_AD1TAPER_Pos      (13U)\n#define HRTIM_ADC1R_AD1TAPER_Msk      (0x1UL << HRTIM_ADC1R_AD1TAPER_Pos)      /*!< 0x00002000 */\n#define HRTIM_ADC1R_AD1TAPER          HRTIM_ADC1R_AD1TAPER_Msk                 /*!< ADC Trigger 1 on Timer A period */\n#define HRTIM_ADC1R_AD1TARST_Pos      (14U)\n#define HRTIM_ADC1R_AD1TARST_Msk      (0x1UL << HRTIM_ADC1R_AD1TARST_Pos)      /*!< 0x00004000 */\n#define HRTIM_ADC1R_AD1TARST          HRTIM_ADC1R_AD1TARST_Msk                 /*!< ADC Trigger 1 on Timer A reset */\n#define HRTIM_ADC1R_AD1TBC2_Pos       (15U)\n#define HRTIM_ADC1R_AD1TBC2_Msk       (0x1UL << HRTIM_ADC1R_AD1TBC2_Pos)       /*!< 0x00008000 */\n#define HRTIM_ADC1R_AD1TBC2           HRTIM_ADC1R_AD1TBC2_Msk                  /*!< ADC Trigger 1 on Timer B compare 2 */\n#define HRTIM_ADC1R_AD1TBC3_Pos       (16U)\n#define HRTIM_ADC1R_AD1TBC3_Msk       (0x1UL << HRTIM_ADC1R_AD1TBC3_Pos)       /*!< 0x00010000 */\n#define HRTIM_ADC1R_AD1TBC3           HRTIM_ADC1R_AD1TBC3_Msk                  /*!< ADC Trigger 1 on Timer B compare 3 */\n#define HRTIM_ADC1R_AD1TBC4_Pos       (17U)\n#define HRTIM_ADC1R_AD1TBC4_Msk       (0x1UL << HRTIM_ADC1R_AD1TBC4_Pos)       /*!< 0x00020000 */\n#define HRTIM_ADC1R_AD1TBC4           HRTIM_ADC1R_AD1TBC4_Msk                  /*!< ADC Trigger 1 on Timer B compare 4 */\n#define HRTIM_ADC1R_AD1TBPER_Pos      (18U)\n#define HRTIM_ADC1R_AD1TBPER_Msk      (0x1UL << HRTIM_ADC1R_AD1TBPER_Pos)      /*!< 0x00040000 */\n#define HRTIM_ADC1R_AD1TBPER          HRTIM_ADC1R_AD1TBPER_Msk                 /*!< ADC Trigger 1 on Timer B period */\n#define HRTIM_ADC1R_AD1TBRST_Pos      (19U)\n#define HRTIM_ADC1R_AD1TBRST_Msk      (0x1UL << HRTIM_ADC1R_AD1TBRST_Pos)      /*!< 0x00080000 */\n#define HRTIM_ADC1R_AD1TBRST          HRTIM_ADC1R_AD1TBRST_Msk                 /*!< ADC Trigger 1 on Timer B reset */\n#define HRTIM_ADC1R_AD1TCC2_Pos       (20U)\n#define HRTIM_ADC1R_AD1TCC2_Msk       (0x1UL << HRTIM_ADC1R_AD1TCC2_Pos)       /*!< 0x00100000 */\n#define HRTIM_ADC1R_AD1TCC2           HRTIM_ADC1R_AD1TCC2_Msk                  /*!< ADC Trigger 1 on Timer C compare 2 */\n#define HRTIM_ADC1R_AD1TCC3_Pos       (21U)\n#define HRTIM_ADC1R_AD1TCC3_Msk       (0x1UL << HRTIM_ADC1R_AD1TCC3_Pos)       /*!< 0x00200000 */\n#define HRTIM_ADC1R_AD1TCC3           HRTIM_ADC1R_AD1TCC3_Msk                  /*!< ADC Trigger 1 on Timer C compare 3 */\n#define HRTIM_ADC1R_AD1TCC4_Pos       (22U)\n#define HRTIM_ADC1R_AD1TCC4_Msk       (0x1UL << HRTIM_ADC1R_AD1TCC4_Pos)       /*!< 0x00400000 */\n#define HRTIM_ADC1R_AD1TCC4           HRTIM_ADC1R_AD1TCC4_Msk                  /*!< ADC Trigger 1 on Timer C compare 4 */\n#define HRTIM_ADC1R_AD1TCPER_Pos      (23U)\n#define HRTIM_ADC1R_AD1TCPER_Msk      (0x1UL << HRTIM_ADC1R_AD1TCPER_Pos)      /*!< 0x00800000 */\n#define HRTIM_ADC1R_AD1TCPER          HRTIM_ADC1R_AD1TCPER_Msk                 /*!< ADC Trigger 1 on Timer C period */\n#define HRTIM_ADC1R_AD1TDC2_Pos       (24U)\n#define HRTIM_ADC1R_AD1TDC2_Msk       (0x1UL << HRTIM_ADC1R_AD1TDC2_Pos)       /*!< 0x01000000 */\n#define HRTIM_ADC1R_AD1TDC2           HRTIM_ADC1R_AD1TDC2_Msk                  /*!< ADC Trigger 1 on Timer D compare 2 */\n#define HRTIM_ADC1R_AD1TDC3_Pos       (25U)\n#define HRTIM_ADC1R_AD1TDC3_Msk       (0x1UL << HRTIM_ADC1R_AD1TDC3_Pos)       /*!< 0x02000000 */\n#define HRTIM_ADC1R_AD1TDC3           HRTIM_ADC1R_AD1TDC3_Msk                  /*!< ADC Trigger 1 on Timer D compare 3 */\n#define HRTIM_ADC1R_AD1TDC4_Pos       (26U)\n#define HRTIM_ADC1R_AD1TDC4_Msk       (0x1UL << HRTIM_ADC1R_AD1TDC4_Pos)       /*!< 0x04000000 */\n#define HRTIM_ADC1R_AD1TDC4           HRTIM_ADC1R_AD1TDC4_Msk                  /*!< ADC Trigger 1 on Timer D compare 4 */\n#define HRTIM_ADC1R_AD1TDPER_Pos      (27U)\n#define HRTIM_ADC1R_AD1TDPER_Msk      (0x1UL << HRTIM_ADC1R_AD1TDPER_Pos)      /*!< 0x08000000 */\n#define HRTIM_ADC1R_AD1TDPER          HRTIM_ADC1R_AD1TDPER_Msk                 /*!< ADC Trigger 1 on Timer D period */\n#define HRTIM_ADC1R_AD1TEC2_Pos       (28U)\n#define HRTIM_ADC1R_AD1TEC2_Msk       (0x1UL << HRTIM_ADC1R_AD1TEC2_Pos)       /*!< 0x10000000 */\n#define HRTIM_ADC1R_AD1TEC2           HRTIM_ADC1R_AD1TEC2_Msk                  /*!< ADC Trigger 1 on Timer E compare 2 */\n#define HRTIM_ADC1R_AD1TEC3_Pos       (29U)\n#define HRTIM_ADC1R_AD1TEC3_Msk       (0x1UL << HRTIM_ADC1R_AD1TEC3_Pos)       /*!< 0x20000000 */\n#define HRTIM_ADC1R_AD1TEC3           HRTIM_ADC1R_AD1TEC3_Msk                  /*!< ADC Trigger 1 on Timer E compare 3 */\n#define HRTIM_ADC1R_AD1TEC4_Pos       (30U)\n#define HRTIM_ADC1R_AD1TEC4_Msk       (0x1UL << HRTIM_ADC1R_AD1TEC4_Pos)       /*!< 0x40000000 */\n#define HRTIM_ADC1R_AD1TEC4           HRTIM_ADC1R_AD1TEC4_Msk                  /*!< ADC Trigger 1 on Timer E compare 4 */\n#define HRTIM_ADC1R_AD1TEPER_Pos      (31U)\n#define HRTIM_ADC1R_AD1TEPER_Msk      (0x1UL << HRTIM_ADC1R_AD1TEPER_Pos)      /*!< 0x80000000 */\n#define HRTIM_ADC1R_AD1TEPER          HRTIM_ADC1R_AD1TEPER_Msk                 /*!< ADC Trigger 1 on Timer E period */\n\n/*******************  Bit definition for HRTIM_ADC2R register  ****************/\n#define HRTIM_ADC2R_AD2MC1_Pos        (0U)\n#define HRTIM_ADC2R_AD2MC1_Msk        (0x1UL << HRTIM_ADC2R_AD2MC1_Pos)        /*!< 0x00000001 */\n#define HRTIM_ADC2R_AD2MC1            HRTIM_ADC2R_AD2MC1_Msk                   /*!< ADC Trigger 2 on master compare 1 */\n#define HRTIM_ADC2R_AD2MC2_Pos        (1U)\n#define HRTIM_ADC2R_AD2MC2_Msk        (0x1UL << HRTIM_ADC2R_AD2MC2_Pos)        /*!< 0x00000002 */\n#define HRTIM_ADC2R_AD2MC2            HRTIM_ADC2R_AD2MC2_Msk                   /*!< ADC Trigger 2 on master compare 2 */\n#define HRTIM_ADC2R_AD2MC3_Pos        (2U)\n#define HRTIM_ADC2R_AD2MC3_Msk        (0x1UL << HRTIM_ADC2R_AD2MC3_Pos)        /*!< 0x00000004 */\n#define HRTIM_ADC2R_AD2MC3            HRTIM_ADC2R_AD2MC3_Msk                   /*!< ADC Trigger 2 on master compare 3 */\n#define HRTIM_ADC2R_AD2MC4_Pos        (3U)\n#define HRTIM_ADC2R_AD2MC4_Msk        (0x1UL << HRTIM_ADC2R_AD2MC4_Pos)        /*!< 0x00000008 */\n#define HRTIM_ADC2R_AD2MC4            HRTIM_ADC2R_AD2MC4_Msk                   /*!< ADC Trigger 2 on master compare 4 */\n#define HRTIM_ADC2R_AD2MPER_Pos       (4U)\n#define HRTIM_ADC2R_AD2MPER_Msk       (0x1UL << HRTIM_ADC2R_AD2MPER_Pos)       /*!< 0x00000010 */\n#define HRTIM_ADC2R_AD2MPER           HRTIM_ADC2R_AD2MPER_Msk                  /*!< ADC Trigger 2 on master period */\n#define HRTIM_ADC2R_AD2EEV6_Pos       (5U)\n#define HRTIM_ADC2R_AD2EEV6_Msk       (0x1UL << HRTIM_ADC2R_AD2EEV6_Pos)       /*!< 0x00000020 */\n#define HRTIM_ADC2R_AD2EEV6           HRTIM_ADC2R_AD2EEV6_Msk                  /*!< ADC Trigger 2 on external event 6 */\n#define HRTIM_ADC2R_AD2EEV7_Pos       (6U)\n#define HRTIM_ADC2R_AD2EEV7_Msk       (0x1UL << HRTIM_ADC2R_AD2EEV7_Pos)       /*!< 0x00000040 */\n#define HRTIM_ADC2R_AD2EEV7           HRTIM_ADC2R_AD2EEV7_Msk                  /*!< ADC Trigger 2 on external event 7 */\n#define HRTIM_ADC2R_AD2EEV8_Pos       (7U)\n#define HRTIM_ADC2R_AD2EEV8_Msk       (0x1UL << HRTIM_ADC2R_AD2EEV8_Pos)       /*!< 0x00000080 */\n#define HRTIM_ADC2R_AD2EEV8           HRTIM_ADC2R_AD2EEV8_Msk                  /*!< ADC Trigger 2 on external event 8 */\n#define HRTIM_ADC2R_AD2EEV9_Pos       (8U)\n#define HRTIM_ADC2R_AD2EEV9_Msk       (0x1UL << HRTIM_ADC2R_AD2EEV9_Pos)       /*!< 0x00000100 */\n#define HRTIM_ADC2R_AD2EEV9           HRTIM_ADC2R_AD2EEV9_Msk                  /*!< ADC Trigger 2 on external event 9 */\n#define HRTIM_ADC2R_AD2EEV10_Pos      (9U)\n#define HRTIM_ADC2R_AD2EEV10_Msk      (0x1UL << HRTIM_ADC2R_AD2EEV10_Pos)      /*!< 0x00000200 */\n#define HRTIM_ADC2R_AD2EEV10          HRTIM_ADC2R_AD2EEV10_Msk                 /*!< ADC Trigger 2 on external event 10 */\n#define HRTIM_ADC2R_AD2TAC2_Pos       (10U)\n#define HRTIM_ADC2R_AD2TAC2_Msk       (0x1UL << HRTIM_ADC2R_AD2TAC2_Pos)       /*!< 0x00000400 */\n#define HRTIM_ADC2R_AD2TAC2           HRTIM_ADC2R_AD2TAC2_Msk                  /*!< ADC Trigger 2 on Timer A compare 2 */\n#define HRTIM_ADC2R_AD2TAC3_Pos       (11U)\n#define HRTIM_ADC2R_AD2TAC3_Msk       (0x1UL << HRTIM_ADC2R_AD2TAC3_Pos)       /*!< 0x00000800 */\n#define HRTIM_ADC2R_AD2TAC3           HRTIM_ADC2R_AD2TAC3_Msk                  /*!< ADC Trigger 2 on Timer A compare 3 */\n#define HRTIM_ADC2R_AD2TAC4_Pos       (12U)\n#define HRTIM_ADC2R_AD2TAC4_Msk       (0x1UL << HRTIM_ADC2R_AD2TAC4_Pos)       /*!< 0x00001000 */\n#define HRTIM_ADC2R_AD2TAC4           HRTIM_ADC2R_AD2TAC4_Msk                  /*!< ADC Trigger 2 on Timer A compare 4*/\n#define HRTIM_ADC2R_AD2TAPER_Pos      (13U)\n#define HRTIM_ADC2R_AD2TAPER_Msk      (0x1UL << HRTIM_ADC2R_AD2TAPER_Pos)      /*!< 0x00002000 */\n#define HRTIM_ADC2R_AD2TAPER          HRTIM_ADC2R_AD2TAPER_Msk                 /*!< ADC Trigger 2 on Timer A period */\n#define HRTIM_ADC2R_AD2TBC2_Pos       (14U)\n#define HRTIM_ADC2R_AD2TBC2_Msk       (0x1UL << HRTIM_ADC2R_AD2TBC2_Pos)       /*!< 0x00004000 */\n#define HRTIM_ADC2R_AD2TBC2           HRTIM_ADC2R_AD2TBC2_Msk                  /*!< ADC Trigger 2 on Timer B compare 2 */\n#define HRTIM_ADC2R_AD2TBC3_Pos       (15U)\n#define HRTIM_ADC2R_AD2TBC3_Msk       (0x1UL << HRTIM_ADC2R_AD2TBC3_Pos)       /*!< 0x00008000 */\n#define HRTIM_ADC2R_AD2TBC3           HRTIM_ADC2R_AD2TBC3_Msk                  /*!< ADC Trigger 2 on Timer B compare 3 */\n#define HRTIM_ADC2R_AD2TBC4_Pos       (16U)\n#define HRTIM_ADC2R_AD2TBC4_Msk       (0x1UL << HRTIM_ADC2R_AD2TBC4_Pos)       /*!< 0x00010000 */\n#define HRTIM_ADC2R_AD2TBC4           HRTIM_ADC2R_AD2TBC4_Msk                  /*!< ADC Trigger 2 on Timer B compare 4 */\n#define HRTIM_ADC2R_AD2TBPER_Pos      (17U)\n#define HRTIM_ADC2R_AD2TBPER_Msk      (0x1UL << HRTIM_ADC2R_AD2TBPER_Pos)      /*!< 0x00020000 */\n#define HRTIM_ADC2R_AD2TBPER          HRTIM_ADC2R_AD2TBPER_Msk                 /*!< ADC Trigger 2 on Timer B period */\n#define HRTIM_ADC2R_AD2TCC2_Pos       (18U)\n#define HRTIM_ADC2R_AD2TCC2_Msk       (0x1UL << HRTIM_ADC2R_AD2TCC2_Pos)       /*!< 0x00040000 */\n#define HRTIM_ADC2R_AD2TCC2           HRTIM_ADC2R_AD2TCC2_Msk                  /*!< ADC Trigger 2 on Timer C compare 2 */\n#define HRTIM_ADC2R_AD2TCC3_Pos       (19U)\n#define HRTIM_ADC2R_AD2TCC3_Msk       (0x1UL << HRTIM_ADC2R_AD2TCC3_Pos)       /*!< 0x00080000 */\n#define HRTIM_ADC2R_AD2TCC3           HRTIM_ADC2R_AD2TCC3_Msk                  /*!< ADC Trigger 2 on Timer C compare 3 */\n#define HRTIM_ADC2R_AD2TCC4_Pos       (20U)\n#define HRTIM_ADC2R_AD2TCC4_Msk       (0x1UL << HRTIM_ADC2R_AD2TCC4_Pos)       /*!< 0x00100000 */\n#define HRTIM_ADC2R_AD2TCC4           HRTIM_ADC2R_AD2TCC4_Msk                  /*!< ADC Trigger 2 on Timer C compare 4 */\n#define HRTIM_ADC2R_AD2TCPER_Pos      (21U)\n#define HRTIM_ADC2R_AD2TCPER_Msk      (0x1UL << HRTIM_ADC2R_AD2TCPER_Pos)      /*!< 0x00200000 */\n#define HRTIM_ADC2R_AD2TCPER          HRTIM_ADC2R_AD2TCPER_Msk                 /*!< ADC Trigger 2 on Timer C period */\n#define HRTIM_ADC2R_AD2TCRST_Pos      (22U)\n#define HRTIM_ADC2R_AD2TCRST_Msk      (0x1UL << HRTIM_ADC2R_AD2TCRST_Pos)      /*!< 0x00400000 */\n#define HRTIM_ADC2R_AD2TCRST          HRTIM_ADC2R_AD2TCRST_Msk                 /*!< ADC Trigger 2 on Timer C reset */\n#define HRTIM_ADC2R_AD2TDC2_Pos       (23U)\n#define HRTIM_ADC2R_AD2TDC2_Msk       (0x1UL << HRTIM_ADC2R_AD2TDC2_Pos)       /*!< 0x00800000 */\n#define HRTIM_ADC2R_AD2TDC2           HRTIM_ADC2R_AD2TDC2_Msk                  /*!< ADC Trigger 2 on Timer D compare 2 */\n#define HRTIM_ADC2R_AD2TDC3_Pos       (24U)\n#define HRTIM_ADC2R_AD2TDC3_Msk       (0x1UL << HRTIM_ADC2R_AD2TDC3_Pos)       /*!< 0x01000000 */\n#define HRTIM_ADC2R_AD2TDC3           HRTIM_ADC2R_AD2TDC3_Msk                  /*!< ADC Trigger 2 on Timer D compare 3 */\n#define HRTIM_ADC2R_AD2TDC4_Pos       (25U)\n#define HRTIM_ADC2R_AD2TDC4_Msk       (0x1UL << HRTIM_ADC2R_AD2TDC4_Pos)       /*!< 0x02000000 */\n#define HRTIM_ADC2R_AD2TDC4           HRTIM_ADC2R_AD2TDC4_Msk                  /*!< ADC Trigger 2 on Timer D compare 4*/\n#define HRTIM_ADC2R_AD2TDPER_Pos      (26U)\n#define HRTIM_ADC2R_AD2TDPER_Msk      (0x1UL << HRTIM_ADC2R_AD2TDPER_Pos)      /*!< 0x04000000 */\n#define HRTIM_ADC2R_AD2TDPER          HRTIM_ADC2R_AD2TDPER_Msk                 /*!< ADC Trigger 2 on Timer D period */\n#define HRTIM_ADC2R_AD2TDRST_Pos      (27U)\n#define HRTIM_ADC2R_AD2TDRST_Msk      (0x1UL << HRTIM_ADC2R_AD2TDRST_Pos)      /*!< 0x08000000 */\n#define HRTIM_ADC2R_AD2TDRST          HRTIM_ADC2R_AD2TDRST_Msk                 /*!< ADC Trigger 2 on Timer D reset */\n#define HRTIM_ADC2R_AD2TEC2_Pos       (28U)\n#define HRTIM_ADC2R_AD2TEC2_Msk       (0x1UL << HRTIM_ADC2R_AD2TEC2_Pos)       /*!< 0x10000000 */\n#define HRTIM_ADC2R_AD2TEC2           HRTIM_ADC2R_AD2TEC2_Msk                  /*!< ADC Trigger 2 on Timer E compare 2 */\n#define HRTIM_ADC2R_AD2TEC3_Pos       (29U)\n#define HRTIM_ADC2R_AD2TEC3_Msk       (0x1UL << HRTIM_ADC2R_AD2TEC3_Pos)       /*!< 0x20000000 */\n#define HRTIM_ADC2R_AD2TEC3           HRTIM_ADC2R_AD2TEC3_Msk                  /*!< ADC Trigger 2 on Timer E compare 3 */\n#define HRTIM_ADC2R_AD2TEC4_Pos       (30U)\n#define HRTIM_ADC2R_AD2TEC4_Msk       (0x1UL << HRTIM_ADC2R_AD2TEC4_Pos)       /*!< 0x40000000 */\n#define HRTIM_ADC2R_AD2TEC4           HRTIM_ADC2R_AD2TEC4_Msk                  /*!< ADC Trigger 2 on Timer E compare 4 */\n#define HRTIM_ADC2R_AD2TERST_Pos      (31U)\n#define HRTIM_ADC2R_AD2TERST_Msk      (0x1UL << HRTIM_ADC2R_AD2TERST_Pos)      /*!< 0x80000000 */\n#define HRTIM_ADC2R_AD2TERST          HRTIM_ADC2R_AD2TERST_Msk                 /*!< ADC Trigger 2 on Timer E reset */\n\n/*******************  Bit definition for HRTIM_ADC3R register  ****************/\n#define HRTIM_ADC3R_AD3MC1_Pos        (0U)\n#define HRTIM_ADC3R_AD3MC1_Msk        (0x1UL << HRTIM_ADC3R_AD3MC1_Pos)        /*!< 0x00000001 */\n#define HRTIM_ADC3R_AD3MC1            HRTIM_ADC3R_AD3MC1_Msk                   /*!< ADC Trigger 3 on master compare 1 */\n#define HRTIM_ADC3R_AD3MC2_Pos        (1U)\n#define HRTIM_ADC3R_AD3MC2_Msk        (0x1UL << HRTIM_ADC3R_AD3MC2_Pos)        /*!< 0x00000002 */\n#define HRTIM_ADC3R_AD3MC2            HRTIM_ADC3R_AD3MC2_Msk                   /*!< ADC Trigger 3 on master compare 2 */\n#define HRTIM_ADC3R_AD3MC3_Pos        (2U)\n#define HRTIM_ADC3R_AD3MC3_Msk        (0x1UL << HRTIM_ADC3R_AD3MC3_Pos)        /*!< 0x00000004 */\n#define HRTIM_ADC3R_AD3MC3            HRTIM_ADC3R_AD3MC3_Msk                   /*!< ADC Trigger 3 on master compare 3 */\n#define HRTIM_ADC3R_AD3MC4_Pos        (3U)\n#define HRTIM_ADC3R_AD3MC4_Msk        (0x1UL << HRTIM_ADC3R_AD3MC4_Pos)        /*!< 0x00000008 */\n#define HRTIM_ADC3R_AD3MC4            HRTIM_ADC3R_AD3MC4_Msk                   /*!< ADC Trigger 3 on master compare 4 */\n#define HRTIM_ADC3R_AD3MPER_Pos       (4U)\n#define HRTIM_ADC3R_AD3MPER_Msk       (0x1UL << HRTIM_ADC3R_AD3MPER_Pos)       /*!< 0x00000010 */\n#define HRTIM_ADC3R_AD3MPER           HRTIM_ADC3R_AD3MPER_Msk                  /*!< ADC Trigger 3 on master period */\n#define HRTIM_ADC3R_AD3EEV1_Pos       (5U)\n#define HRTIM_ADC3R_AD3EEV1_Msk       (0x1UL << HRTIM_ADC3R_AD3EEV1_Pos)       /*!< 0x00000020 */\n#define HRTIM_ADC3R_AD3EEV1           HRTIM_ADC3R_AD3EEV1_Msk                  /*!< ADC Trigger 3 on external event 1 */\n#define HRTIM_ADC3R_AD3EEV2_Pos       (6U)\n#define HRTIM_ADC3R_AD3EEV2_Msk       (0x1UL << HRTIM_ADC3R_AD3EEV2_Pos)       /*!< 0x00000040 */\n#define HRTIM_ADC3R_AD3EEV2           HRTIM_ADC3R_AD3EEV2_Msk                  /*!< ADC Trigger 3 on external event 2 */\n#define HRTIM_ADC3R_AD3EEV3_Pos       (7U)\n#define HRTIM_ADC3R_AD3EEV3_Msk       (0x1UL << HRTIM_ADC3R_AD3EEV3_Pos)       /*!< 0x00000080 */\n#define HRTIM_ADC3R_AD3EEV3           HRTIM_ADC3R_AD3EEV3_Msk                  /*!< ADC Trigger 3 on external event 3 */\n#define HRTIM_ADC3R_AD3EEV4_Pos       (8U)\n#define HRTIM_ADC3R_AD3EEV4_Msk       (0x1UL << HRTIM_ADC3R_AD3EEV4_Pos)       /*!< 0x00000100 */\n#define HRTIM_ADC3R_AD3EEV4           HRTIM_ADC3R_AD3EEV4_Msk                  /*!< ADC Trigger 3 on external event 4 */\n#define HRTIM_ADC3R_AD3EEV5_Pos       (9U)\n#define HRTIM_ADC3R_AD3EEV5_Msk       (0x1UL << HRTIM_ADC3R_AD3EEV5_Pos)       /*!< 0x00000200 */\n#define HRTIM_ADC3R_AD3EEV5           HRTIM_ADC3R_AD3EEV5_Msk                  /*!< ADC Trigger 3 on external event 5 */\n#define HRTIM_ADC3R_AD3TAC2_Pos       (10U)\n#define HRTIM_ADC3R_AD3TAC2_Msk       (0x1UL << HRTIM_ADC3R_AD3TAC2_Pos)       /*!< 0x00000400 */\n#define HRTIM_ADC3R_AD3TAC2           HRTIM_ADC3R_AD3TAC2_Msk                  /*!< ADC Trigger 3 on Timer A compare 2 */\n#define HRTIM_ADC3R_AD3TAC3_Pos       (11U)\n#define HRTIM_ADC3R_AD3TAC3_Msk       (0x1UL << HRTIM_ADC3R_AD3TAC3_Pos)       /*!< 0x00000800 */\n#define HRTIM_ADC3R_AD3TAC3           HRTIM_ADC3R_AD3TAC3_Msk                  /*!< ADC Trigger 3 on Timer A compare 3 */\n#define HRTIM_ADC3R_AD3TAC4_Pos       (12U)\n#define HRTIM_ADC3R_AD3TAC4_Msk       (0x1UL << HRTIM_ADC3R_AD3TAC4_Pos)       /*!< 0x00001000 */\n#define HRTIM_ADC3R_AD3TAC4           HRTIM_ADC3R_AD3TAC4_Msk                  /*!< ADC Trigger 3 on Timer A compare 4 */\n#define HRTIM_ADC3R_AD3TAPER_Pos      (13U)\n#define HRTIM_ADC3R_AD3TAPER_Msk      (0x1UL << HRTIM_ADC3R_AD3TAPER_Pos)      /*!< 0x00002000 */\n#define HRTIM_ADC3R_AD3TAPER          HRTIM_ADC3R_AD3TAPER_Msk                 /*!< ADC Trigger 3 on Timer A period */\n#define HRTIM_ADC3R_AD3TARST_Pos      (14U)\n#define HRTIM_ADC3R_AD3TARST_Msk      (0x1UL << HRTIM_ADC3R_AD3TARST_Pos)      /*!< 0x00004000 */\n#define HRTIM_ADC3R_AD3TARST          HRTIM_ADC3R_AD3TARST_Msk                 /*!< ADC Trigger 3 on Timer A reset */\n#define HRTIM_ADC3R_AD3TBC2_Pos       (15U)\n#define HRTIM_ADC3R_AD3TBC2_Msk       (0x1UL << HRTIM_ADC3R_AD3TBC2_Pos)       /*!< 0x00008000 */\n#define HRTIM_ADC3R_AD3TBC2           HRTIM_ADC3R_AD3TBC2_Msk                  /*!< ADC Trigger 3 on Timer B compare 2 */\n#define HRTIM_ADC3R_AD3TBC3_Pos       (16U)\n#define HRTIM_ADC3R_AD3TBC3_Msk       (0x1UL << HRTIM_ADC3R_AD3TBC3_Pos)       /*!< 0x00010000 */\n#define HRTIM_ADC3R_AD3TBC3           HRTIM_ADC3R_AD3TBC3_Msk                  /*!< ADC Trigger 3 on Timer B compare 3 */\n#define HRTIM_ADC3R_AD3TBC4_Pos       (17U)\n#define HRTIM_ADC3R_AD3TBC4_Msk       (0x1UL << HRTIM_ADC3R_AD3TBC4_Pos)       /*!< 0x00020000 */\n#define HRTIM_ADC3R_AD3TBC4           HRTIM_ADC3R_AD3TBC4_Msk                  /*!< ADC Trigger 3 on Timer B compare 4 */\n#define HRTIM_ADC3R_AD3TBPER_Pos      (18U)\n#define HRTIM_ADC3R_AD3TBPER_Msk      (0x1UL << HRTIM_ADC3R_AD3TBPER_Pos)      /*!< 0x00040000 */\n#define HRTIM_ADC3R_AD3TBPER          HRTIM_ADC3R_AD3TBPER_Msk                 /*!< ADC Trigger 3 on Timer B period */\n#define HRTIM_ADC3R_AD3TBRST_Pos      (19U)\n#define HRTIM_ADC3R_AD3TBRST_Msk      (0x1UL << HRTIM_ADC3R_AD3TBRST_Pos)      /*!< 0x00080000 */\n#define HRTIM_ADC3R_AD3TBRST          HRTIM_ADC3R_AD3TBRST_Msk                 /*!< ADC Trigger 3 on Timer B reset */\n#define HRTIM_ADC3R_AD3TCC2_Pos       (20U)\n#define HRTIM_ADC3R_AD3TCC2_Msk       (0x1UL << HRTIM_ADC3R_AD3TCC2_Pos)       /*!< 0x00100000 */\n#define HRTIM_ADC3R_AD3TCC2           HRTIM_ADC3R_AD3TCC2_Msk                  /*!< ADC Trigger 3 on Timer C compare 2 */\n#define HRTIM_ADC3R_AD3TCC3_Pos       (21U)\n#define HRTIM_ADC3R_AD3TCC3_Msk       (0x1UL << HRTIM_ADC3R_AD3TCC3_Pos)       /*!< 0x00200000 */\n#define HRTIM_ADC3R_AD3TCC3           HRTIM_ADC3R_AD3TCC3_Msk                  /*!< ADC Trigger 3 on Timer C compare 3 */\n#define HRTIM_ADC3R_AD3TCC4_Pos       (22U)\n#define HRTIM_ADC3R_AD3TCC4_Msk       (0x1UL << HRTIM_ADC3R_AD3TCC4_Pos)       /*!< 0x00400000 */\n#define HRTIM_ADC3R_AD3TCC4           HRTIM_ADC3R_AD3TCC4_Msk                  /*!< ADC Trigger 3 on Timer C compare 4 */\n#define HRTIM_ADC3R_AD3TCPER_Pos      (23U)\n#define HRTIM_ADC3R_AD3TCPER_Msk      (0x1UL << HRTIM_ADC3R_AD3TCPER_Pos)      /*!< 0x00800000 */\n#define HRTIM_ADC3R_AD3TCPER          HRTIM_ADC3R_AD3TCPER_Msk                 /*!< ADC Trigger 3 on Timer C period */\n#define HRTIM_ADC3R_AD3TDC2_Pos       (24U)\n#define HRTIM_ADC3R_AD3TDC2_Msk       (0x1UL << HRTIM_ADC3R_AD3TDC2_Pos)       /*!< 0x01000000 */\n#define HRTIM_ADC3R_AD3TDC2           HRTIM_ADC3R_AD3TDC2_Msk                  /*!< ADC Trigger 3 on Timer D compare 2 */\n#define HRTIM_ADC3R_AD3TDC3_Pos       (25U)\n#define HRTIM_ADC3R_AD3TDC3_Msk       (0x1UL << HRTIM_ADC3R_AD3TDC3_Pos)       /*!< 0x02000000 */\n#define HRTIM_ADC3R_AD3TDC3           HRTIM_ADC3R_AD3TDC3_Msk                  /*!< ADC Trigger 3 on Timer D compare 3 */\n#define HRTIM_ADC3R_AD3TDC4_Pos       (26U)\n#define HRTIM_ADC3R_AD3TDC4_Msk       (0x1UL << HRTIM_ADC3R_AD3TDC4_Pos)       /*!< 0x04000000 */\n#define HRTIM_ADC3R_AD3TDC4           HRTIM_ADC3R_AD3TDC4_Msk                  /*!< ADC Trigger 3 on Timer D compare 4 */\n#define HRTIM_ADC3R_AD3TDPER_Pos      (27U)\n#define HRTIM_ADC3R_AD3TDPER_Msk      (0x1UL << HRTIM_ADC3R_AD3TDPER_Pos)      /*!< 0x08000000 */\n#define HRTIM_ADC3R_AD3TDPER          HRTIM_ADC3R_AD3TDPER_Msk                 /*!< ADC Trigger 3 on Timer D period */\n#define HRTIM_ADC3R_AD3TEC2_Pos       (28U)\n#define HRTIM_ADC3R_AD3TEC2_Msk       (0x1UL << HRTIM_ADC3R_AD3TEC2_Pos)       /*!< 0x10000000 */\n#define HRTIM_ADC3R_AD3TEC2           HRTIM_ADC3R_AD3TEC2_Msk                  /*!< ADC Trigger 3 on Timer E compare 2 */\n#define HRTIM_ADC3R_AD3TEC3_Pos       (29U)\n#define HRTIM_ADC3R_AD3TEC3_Msk       (0x1UL << HRTIM_ADC3R_AD3TEC3_Pos)       /*!< 0x20000000 */\n#define HRTIM_ADC3R_AD3TEC3           HRTIM_ADC3R_AD3TEC3_Msk                  /*!< ADC Trigger 3 on Timer E compare 3 */\n#define HRTIM_ADC3R_AD3TEC4_Pos       (30U)\n#define HRTIM_ADC3R_AD3TEC4_Msk       (0x1UL << HRTIM_ADC3R_AD3TEC4_Pos)       /*!< 0x40000000 */\n#define HRTIM_ADC3R_AD3TEC4           HRTIM_ADC3R_AD3TEC4_Msk                  /*!< ADC Trigger 3 on Timer E compare 4 */\n#define HRTIM_ADC3R_AD3TEPER_Pos      (31U)\n#define HRTIM_ADC3R_AD3TEPER_Msk      (0x1UL << HRTIM_ADC3R_AD3TEPER_Pos)      /*!< 0x80000000 */\n#define HRTIM_ADC3R_AD3TEPER          HRTIM_ADC3R_AD3TEPER_Msk                 /*!< ADC Trigger 3 on Timer E period */\n\n/*******************  Bit definition for HRTIM_ADC4R register  ****************/\n#define HRTIM_ADC4R_AD4MC1_Pos        (0U)\n#define HRTIM_ADC4R_AD4MC1_Msk        (0x1UL << HRTIM_ADC4R_AD4MC1_Pos)        /*!< 0x00000001 */\n#define HRTIM_ADC4R_AD4MC1            HRTIM_ADC4R_AD4MC1_Msk                   /*!< ADC Trigger 4 on master compare 1 */\n#define HRTIM_ADC4R_AD4MC2_Pos        (1U)\n#define HRTIM_ADC4R_AD4MC2_Msk        (0x1UL << HRTIM_ADC4R_AD4MC2_Pos)        /*!< 0x00000002 */\n#define HRTIM_ADC4R_AD4MC2            HRTIM_ADC4R_AD4MC2_Msk                   /*!< ADC Trigger 4 on master compare 2 */\n#define HRTIM_ADC4R_AD4MC3_Pos        (2U)\n#define HRTIM_ADC4R_AD4MC3_Msk        (0x1UL << HRTIM_ADC4R_AD4MC3_Pos)        /*!< 0x00000004 */\n#define HRTIM_ADC4R_AD4MC3            HRTIM_ADC4R_AD4MC3_Msk                   /*!< ADC Trigger 4 on master compare 3 */\n#define HRTIM_ADC4R_AD4MC4_Pos        (3U)\n#define HRTIM_ADC4R_AD4MC4_Msk        (0x1UL << HRTIM_ADC4R_AD4MC4_Pos)        /*!< 0x00000008 */\n#define HRTIM_ADC4R_AD4MC4            HRTIM_ADC4R_AD4MC4_Msk                   /*!< ADC Trigger 4 on master compare 4 */\n#define HRTIM_ADC4R_AD4MPER_Pos       (4U)\n#define HRTIM_ADC4R_AD4MPER_Msk       (0x1UL << HRTIM_ADC4R_AD4MPER_Pos)       /*!< 0x00000010 */\n#define HRTIM_ADC4R_AD4MPER           HRTIM_ADC4R_AD4MPER_Msk                  /*!< ADC Trigger 4 on master period */\n#define HRTIM_ADC4R_AD4EEV6_Pos       (5U)\n#define HRTIM_ADC4R_AD4EEV6_Msk       (0x1UL << HRTIM_ADC4R_AD4EEV6_Pos)       /*!< 0x00000020 */\n#define HRTIM_ADC4R_AD4EEV6           HRTIM_ADC4R_AD4EEV6_Msk                  /*!< ADC Trigger 4 on external event 6 */\n#define HRTIM_ADC4R_AD4EEV7_Pos       (6U)\n#define HRTIM_ADC4R_AD4EEV7_Msk       (0x1UL << HRTIM_ADC4R_AD4EEV7_Pos)       /*!< 0x00000040 */\n#define HRTIM_ADC4R_AD4EEV7           HRTIM_ADC4R_AD4EEV7_Msk                  /*!< ADC Trigger 4 on external event 7 */\n#define HRTIM_ADC4R_AD4EEV8_Pos       (7U)\n#define HRTIM_ADC4R_AD4EEV8_Msk       (0x1UL << HRTIM_ADC4R_AD4EEV8_Pos)       /*!< 0x00000080 */\n#define HRTIM_ADC4R_AD4EEV8           HRTIM_ADC4R_AD4EEV8_Msk                  /*!< ADC Trigger 4 on external event 8 */\n#define HRTIM_ADC4R_AD4EEV9_Pos       (8U)\n#define HRTIM_ADC4R_AD4EEV9_Msk       (0x1UL << HRTIM_ADC4R_AD4EEV9_Pos)       /*!< 0x00000100 */\n#define HRTIM_ADC4R_AD4EEV9           HRTIM_ADC4R_AD4EEV9_Msk                  /*!< ADC Trigger 4 on external event 9 */\n#define HRTIM_ADC4R_AD4EEV10_Pos      (9U)\n#define HRTIM_ADC4R_AD4EEV10_Msk      (0x1UL << HRTIM_ADC4R_AD4EEV10_Pos)      /*!< 0x00000200 */\n#define HRTIM_ADC4R_AD4EEV10          HRTIM_ADC4R_AD4EEV10_Msk                 /*!< ADC Trigger 4 on external event 10 */\n#define HRTIM_ADC4R_AD4TAC2_Pos       (10U)\n#define HRTIM_ADC4R_AD4TAC2_Msk       (0x1UL << HRTIM_ADC4R_AD4TAC2_Pos)       /*!< 0x00000400 */\n#define HRTIM_ADC4R_AD4TAC2           HRTIM_ADC4R_AD4TAC2_Msk                  /*!< ADC Trigger 4 on Timer A compare 2 */\n#define HRTIM_ADC4R_AD4TAC3_Pos       (11U)\n#define HRTIM_ADC4R_AD4TAC3_Msk       (0x1UL << HRTIM_ADC4R_AD4TAC3_Pos)       /*!< 0x00000800 */\n#define HRTIM_ADC4R_AD4TAC3           HRTIM_ADC4R_AD4TAC3_Msk                  /*!< ADC Trigger 4 on Timer A compare 3 */\n#define HRTIM_ADC4R_AD4TAC4_Pos       (12U)\n#define HRTIM_ADC4R_AD4TAC4_Msk       (0x1UL << HRTIM_ADC4R_AD4TAC4_Pos)       /*!< 0x00001000 */\n#define HRTIM_ADC4R_AD4TAC4           HRTIM_ADC4R_AD4TAC4_Msk                  /*!< ADC Trigger 4 on Timer A compare 4*/\n#define HRTIM_ADC4R_AD4TAPER_Pos      (13U)\n#define HRTIM_ADC4R_AD4TAPER_Msk      (0x1UL << HRTIM_ADC4R_AD4TAPER_Pos)      /*!< 0x00002000 */\n#define HRTIM_ADC4R_AD4TAPER          HRTIM_ADC4R_AD4TAPER_Msk                 /*!< ADC Trigger 4 on Timer A period */\n#define HRTIM_ADC4R_AD4TBC2_Pos       (14U)\n#define HRTIM_ADC4R_AD4TBC2_Msk       (0x1UL << HRTIM_ADC4R_AD4TBC2_Pos)       /*!< 0x00004000 */\n#define HRTIM_ADC4R_AD4TBC2           HRTIM_ADC4R_AD4TBC2_Msk                  /*!< ADC Trigger 4 on Timer B compare 2 */\n#define HRTIM_ADC4R_AD4TBC3_Pos       (15U)\n#define HRTIM_ADC4R_AD4TBC3_Msk       (0x1UL << HRTIM_ADC4R_AD4TBC3_Pos)       /*!< 0x00008000 */\n#define HRTIM_ADC4R_AD4TBC3           HRTIM_ADC4R_AD4TBC3_Msk                  /*!< ADC Trigger 4 on Timer B compare 3 */\n#define HRTIM_ADC4R_AD4TBC4_Pos       (16U)\n#define HRTIM_ADC4R_AD4TBC4_Msk       (0x1UL << HRTIM_ADC4R_AD4TBC4_Pos)       /*!< 0x00010000 */\n#define HRTIM_ADC4R_AD4TBC4           HRTIM_ADC4R_AD4TBC4_Msk                  /*!< ADC Trigger 4 on Timer B compare 4 */\n#define HRTIM_ADC4R_AD4TBPER_Pos      (17U)\n#define HRTIM_ADC4R_AD4TBPER_Msk      (0x1UL << HRTIM_ADC4R_AD4TBPER_Pos)      /*!< 0x00020000 */\n#define HRTIM_ADC4R_AD4TBPER          HRTIM_ADC4R_AD4TBPER_Msk                 /*!< ADC Trigger 4 on Timer B period */\n#define HRTIM_ADC4R_AD4TCC2_Pos       (18U)\n#define HRTIM_ADC4R_AD4TCC2_Msk       (0x1UL << HRTIM_ADC4R_AD4TCC2_Pos)       /*!< 0x00040000 */\n#define HRTIM_ADC4R_AD4TCC2           HRTIM_ADC4R_AD4TCC2_Msk                  /*!< ADC Trigger 4 on Timer C compare 2 */\n#define HRTIM_ADC4R_AD4TCC3_Pos       (19U)\n#define HRTIM_ADC4R_AD4TCC3_Msk       (0x1UL << HRTIM_ADC4R_AD4TCC3_Pos)       /*!< 0x00080000 */\n#define HRTIM_ADC4R_AD4TCC3           HRTIM_ADC4R_AD4TCC3_Msk                  /*!< ADC Trigger 4 on Timer C compare 3 */\n#define HRTIM_ADC4R_AD4TCC4_Pos       (20U)\n#define HRTIM_ADC4R_AD4TCC4_Msk       (0x1UL << HRTIM_ADC4R_AD4TCC4_Pos)       /*!< 0x00100000 */\n#define HRTIM_ADC4R_AD4TCC4           HRTIM_ADC4R_AD4TCC4_Msk                  /*!< ADC Trigger 4 on Timer C compare 4 */\n#define HRTIM_ADC4R_AD4TCPER_Pos      (21U)\n#define HRTIM_ADC4R_AD4TCPER_Msk      (0x1UL << HRTIM_ADC4R_AD4TCPER_Pos)      /*!< 0x00200000 */\n#define HRTIM_ADC4R_AD4TCPER          HRTIM_ADC4R_AD4TCPER_Msk                 /*!< ADC Trigger 4 on Timer C period */\n#define HRTIM_ADC4R_AD4TCRST_Pos      (22U)\n#define HRTIM_ADC4R_AD4TCRST_Msk      (0x1UL << HRTIM_ADC4R_AD4TCRST_Pos)      /*!< 0x00400000 */\n#define HRTIM_ADC4R_AD4TCRST          HRTIM_ADC4R_AD4TCRST_Msk                 /*!< ADC Trigger 4 on Timer C reset */\n#define HRTIM_ADC4R_AD4TDC2_Pos       (23U)\n#define HRTIM_ADC4R_AD4TDC2_Msk       (0x1UL << HRTIM_ADC4R_AD4TDC2_Pos)       /*!< 0x00800000 */\n#define HRTIM_ADC4R_AD4TDC2           HRTIM_ADC4R_AD4TDC2_Msk                  /*!< ADC Trigger 4 on Timer D compare 2 */\n#define HRTIM_ADC4R_AD4TDC3_Pos       (24U)\n#define HRTIM_ADC4R_AD4TDC3_Msk       (0x1UL << HRTIM_ADC4R_AD4TDC3_Pos)       /*!< 0x01000000 */\n#define HRTIM_ADC4R_AD4TDC3           HRTIM_ADC4R_AD4TDC3_Msk                  /*!< ADC Trigger 4 on Timer D compare 3 */\n#define HRTIM_ADC4R_AD4TDC4_Pos       (25U)\n#define HRTIM_ADC4R_AD4TDC4_Msk       (0x1UL << HRTIM_ADC4R_AD4TDC4_Pos)       /*!< 0x02000000 */\n#define HRTIM_ADC4R_AD4TDC4           HRTIM_ADC4R_AD4TDC4_Msk                  /*!< ADC Trigger 4 on Timer D compare 4*/\n#define HRTIM_ADC4R_AD4TDPER_Pos      (26U)\n#define HRTIM_ADC4R_AD4TDPER_Msk      (0x1UL << HRTIM_ADC4R_AD4TDPER_Pos)      /*!< 0x04000000 */\n#define HRTIM_ADC4R_AD4TDPER          HRTIM_ADC4R_AD4TDPER_Msk                 /*!< ADC Trigger 4 on Timer D period */\n#define HRTIM_ADC4R_AD4TDRST_Pos      (27U)\n#define HRTIM_ADC4R_AD4TDRST_Msk      (0x1UL << HRTIM_ADC4R_AD4TDRST_Pos)      /*!< 0x08000000 */\n#define HRTIM_ADC4R_AD4TDRST          HRTIM_ADC4R_AD4TDRST_Msk                 /*!< ADC Trigger 4 on Timer D reset */\n#define HRTIM_ADC4R_AD4TEC2_Pos       (28U)\n#define HRTIM_ADC4R_AD4TEC2_Msk       (0x1UL << HRTIM_ADC4R_AD4TEC2_Pos)       /*!< 0x10000000 */\n#define HRTIM_ADC4R_AD4TEC2           HRTIM_ADC4R_AD4TEC2_Msk                  /*!< ADC Trigger 4 on Timer E compare 2 */\n#define HRTIM_ADC4R_AD4TEC3_Pos       (29U)\n#define HRTIM_ADC4R_AD4TEC3_Msk       (0x1UL << HRTIM_ADC4R_AD4TEC3_Pos)       /*!< 0x20000000 */\n#define HRTIM_ADC4R_AD4TEC3           HRTIM_ADC4R_AD4TEC3_Msk                  /*!< ADC Trigger 4 on Timer E compare 3 */\n#define HRTIM_ADC4R_AD4TEC4_Pos       (30U)\n#define HRTIM_ADC4R_AD4TEC4_Msk       (0x1UL << HRTIM_ADC4R_AD4TEC4_Pos)       /*!< 0x40000000 */\n#define HRTIM_ADC4R_AD4TEC4           HRTIM_ADC4R_AD4TEC4_Msk                  /*!< ADC Trigger 4 on Timer E compare 4 */\n#define HRTIM_ADC4R_AD4TERST_Pos      (31U)\n#define HRTIM_ADC4R_AD4TERST_Msk      (0x1UL << HRTIM_ADC4R_AD4TERST_Pos)      /*!< 0x80000000 */\n#define HRTIM_ADC4R_AD4TERST          HRTIM_ADC4R_AD4TERST_Msk                 /*!< ADC Trigger 4 on Timer E reset */\n\n/*******************  Bit definition for HRTIM_FLTINR1 register  ***************/\n#define HRTIM_FLTINR1_FLT1E_Pos       (0U)\n#define HRTIM_FLTINR1_FLT1E_Msk       (0x1UL << HRTIM_FLTINR1_FLT1E_Pos)       /*!< 0x00000001 */\n#define HRTIM_FLTINR1_FLT1E           HRTIM_FLTINR1_FLT1E_Msk                  /*!< Fault 1 enable */\n#define HRTIM_FLTINR1_FLT1P_Pos       (1U)\n#define HRTIM_FLTINR1_FLT1P_Msk       (0x1UL << HRTIM_FLTINR1_FLT1P_Pos)       /*!< 0x00000002 */\n#define HRTIM_FLTINR1_FLT1P           HRTIM_FLTINR1_FLT1P_Msk                  /*!< Fault 1 polarity */\n#define HRTIM_FLTINR1_FLT1SRC_Pos     (2U)\n#define HRTIM_FLTINR1_FLT1SRC_Msk     (0x1UL << HRTIM_FLTINR1_FLT1SRC_Pos)     /*!< 0x00000004 */\n#define HRTIM_FLTINR1_FLT1SRC         HRTIM_FLTINR1_FLT1SRC_Msk                /*!< Fault 1 source */\n#define HRTIM_FLTINR1_FLT1F_Pos       (3U)\n#define HRTIM_FLTINR1_FLT1F_Msk       (0xFUL << HRTIM_FLTINR1_FLT1F_Pos)       /*!< 0x00000078 */\n#define HRTIM_FLTINR1_FLT1F           HRTIM_FLTINR1_FLT1F_Msk                  /*!< Fault 1 filter */\n#define HRTIM_FLTINR1_FLT1F_0         (0x1UL << HRTIM_FLTINR1_FLT1F_Pos)        /*!< 0x00000008 */\n#define HRTIM_FLTINR1_FLT1F_1         (0x2UL << HRTIM_FLTINR1_FLT1F_Pos)        /*!< 0x00000010 */\n#define HRTIM_FLTINR1_FLT1F_2         (0x4UL << HRTIM_FLTINR1_FLT1F_Pos)        /*!< 0x00000020 */\n#define HRTIM_FLTINR1_FLT1F_3         (0x8UL << HRTIM_FLTINR1_FLT1F_Pos)        /*!< 0x00000040 */\n#define HRTIM_FLTINR1_FLT1LCK_Pos     (7U)\n#define HRTIM_FLTINR1_FLT1LCK_Msk     (0x1UL << HRTIM_FLTINR1_FLT1LCK_Pos)     /*!< 0x00000080 */\n#define HRTIM_FLTINR1_FLT1LCK         HRTIM_FLTINR1_FLT1LCK_Msk                /*!< Fault 1 lock */\n\n#define HRTIM_FLTINR1_FLT2E_Pos       (8U)\n#define HRTIM_FLTINR1_FLT2E_Msk       (0x1UL << HRTIM_FLTINR1_FLT2E_Pos)       /*!< 0x00000100 */\n#define HRTIM_FLTINR1_FLT2E           HRTIM_FLTINR1_FLT2E_Msk                  /*!< Fault 2 enable */\n#define HRTIM_FLTINR1_FLT2P_Pos       (9U)\n#define HRTIM_FLTINR1_FLT2P_Msk       (0x1UL << HRTIM_FLTINR1_FLT2P_Pos)       /*!< 0x00000200 */\n#define HRTIM_FLTINR1_FLT2P           HRTIM_FLTINR1_FLT2P_Msk                  /*!< Fault 2 polarity */\n#define HRTIM_FLTINR1_FLT2SRC_Pos     (10U)\n#define HRTIM_FLTINR1_FLT2SRC_Msk     (0x1UL << HRTIM_FLTINR1_FLT2SRC_Pos)     /*!< 0x00000400 */\n#define HRTIM_FLTINR1_FLT2SRC         HRTIM_FLTINR1_FLT2SRC_Msk                /*!< Fault 2 source */\n#define HRTIM_FLTINR1_FLT2F_Pos       (11U)\n#define HRTIM_FLTINR1_FLT2F_Msk       (0xFUL << HRTIM_FLTINR1_FLT2F_Pos)       /*!< 0x00007800 */\n#define HRTIM_FLTINR1_FLT2F           HRTIM_FLTINR1_FLT2F_Msk                  /*!< Fault 2 filter */\n#define HRTIM_FLTINR1_FLT2F_0         (0x1UL << HRTIM_FLTINR1_FLT2F_Pos)        /*!< 0x00000800 */\n#define HRTIM_FLTINR1_FLT2F_1         (0x2UL << HRTIM_FLTINR1_FLT2F_Pos)        /*!< 0x00001000 */\n#define HRTIM_FLTINR1_FLT2F_2         (0x4UL << HRTIM_FLTINR1_FLT2F_Pos)        /*!< 0x00002000 */\n#define HRTIM_FLTINR1_FLT2F_3         (0x8UL << HRTIM_FLTINR1_FLT2F_Pos)        /*!< 0x00004000 */\n#define HRTIM_FLTINR1_FLT2LCK_Pos     (15U)\n#define HRTIM_FLTINR1_FLT2LCK_Msk     (0x1UL << HRTIM_FLTINR1_FLT2LCK_Pos)     /*!< 0x00008000 */\n#define HRTIM_FLTINR1_FLT2LCK         HRTIM_FLTINR1_FLT2LCK_Msk                /*!< Fault 2 lock */\n\n#define HRTIM_FLTINR1_FLT3E_Pos       (16U)\n#define HRTIM_FLTINR1_FLT3E_Msk       (0x1UL << HRTIM_FLTINR1_FLT3E_Pos)       /*!< 0x00010000 */\n#define HRTIM_FLTINR1_FLT3E           HRTIM_FLTINR1_FLT3E_Msk                  /*!< Fault 3 enable */\n#define HRTIM_FLTINR1_FLT3P_Pos       (17U)\n#define HRTIM_FLTINR1_FLT3P_Msk       (0x1UL << HRTIM_FLTINR1_FLT3P_Pos)       /*!< 0x00020000 */\n#define HRTIM_FLTINR1_FLT3P           HRTIM_FLTINR1_FLT3P_Msk                  /*!< Fault 3 polarity */\n#define HRTIM_FLTINR1_FLT3SRC_Pos     (18U)\n#define HRTIM_FLTINR1_FLT3SRC_Msk     (0x1UL << HRTIM_FLTINR1_FLT3SRC_Pos)     /*!< 0x00040000 */\n#define HRTIM_FLTINR1_FLT3SRC         HRTIM_FLTINR1_FLT3SRC_Msk                /*!< Fault 3 source */\n#define HRTIM_FLTINR1_FLT3F_Pos       (19U)\n#define HRTIM_FLTINR1_FLT3F_Msk       (0xFUL << HRTIM_FLTINR1_FLT3F_Pos)       /*!< 0x00780000 */\n#define HRTIM_FLTINR1_FLT3F           HRTIM_FLTINR1_FLT3F_Msk                  /*!< Fault 3 filter */\n#define HRTIM_FLTINR1_FLT3F_0         (0x1UL << HRTIM_FLTINR1_FLT3F_Pos)        /*!< 0x00080000 */\n#define HRTIM_FLTINR1_FLT3F_1         (0x2UL << HRTIM_FLTINR1_FLT3F_Pos)        /*!< 0x00100000 */\n#define HRTIM_FLTINR1_FLT3F_2         (0x4UL << HRTIM_FLTINR1_FLT3F_Pos)        /*!< 0x00200000 */\n#define HRTIM_FLTINR1_FLT3F_3         (0x8UL << HRTIM_FLTINR1_FLT3F_Pos)        /*!< 0x00400000 */\n#define HRTIM_FLTINR1_FLT3LCK_Pos     (23U)\n#define HRTIM_FLTINR1_FLT3LCK_Msk     (0x1UL << HRTIM_FLTINR1_FLT3LCK_Pos)     /*!< 0x00800000 */\n#define HRTIM_FLTINR1_FLT3LCK         HRTIM_FLTINR1_FLT3LCK_Msk                /*!< Fault 3 lock */\n\n#define HRTIM_FLTINR1_FLT4E_Pos       (24U)\n#define HRTIM_FLTINR1_FLT4E_Msk       (0x1UL << HRTIM_FLTINR1_FLT4E_Pos)       /*!< 0x01000000 */\n#define HRTIM_FLTINR1_FLT4E           HRTIM_FLTINR1_FLT4E_Msk                  /*!< Fault 4 enable */\n#define HRTIM_FLTINR1_FLT4P_Pos       (25U)\n#define HRTIM_FLTINR1_FLT4P_Msk       (0x1UL << HRTIM_FLTINR1_FLT4P_Pos)       /*!< 0x02000000 */\n#define HRTIM_FLTINR1_FLT4P           HRTIM_FLTINR1_FLT4P_Msk                  /*!< Fault 4 polarity */\n#define HRTIM_FLTINR1_FLT4SRC_Pos     (26U)\n#define HRTIM_FLTINR1_FLT4SRC_Msk     (0x1UL << HRTIM_FLTINR1_FLT4SRC_Pos)     /*!< 0x04000000 */\n#define HRTIM_FLTINR1_FLT4SRC         HRTIM_FLTINR1_FLT4SRC_Msk                /*!< Fault 4 source */\n#define HRTIM_FLTINR1_FLT4F_Pos       (27U)\n#define HRTIM_FLTINR1_FLT4F_Msk       (0xFUL << HRTIM_FLTINR1_FLT4F_Pos)       /*!< 0x78000000 */\n#define HRTIM_FLTINR1_FLT4F           HRTIM_FLTINR1_FLT4F_Msk                  /*!< Fault 4 filter */\n#define HRTIM_FLTINR1_FLT4F_0         (0x1UL << HRTIM_FLTINR1_FLT4F_Pos)        /*!< 0x08000000 */\n#define HRTIM_FLTINR1_FLT4F_1         (0x2UL << HRTIM_FLTINR1_FLT4F_Pos)        /*!< 0x10000000 */\n#define HRTIM_FLTINR1_FLT4F_2         (0x4UL << HRTIM_FLTINR1_FLT4F_Pos)        /*!< 0x20000000 */\n#define HRTIM_FLTINR1_FLT4F_3         (0x8UL << HRTIM_FLTINR1_FLT4F_Pos)        /*!< 0x40000000 */\n#define HRTIM_FLTINR1_FLT4LCK_Pos     (31U)\n#define HRTIM_FLTINR1_FLT4LCK_Msk     (0x1UL << HRTIM_FLTINR1_FLT4LCK_Pos)     /*!< 0x80000000 */\n#define HRTIM_FLTINR1_FLT4LCK         HRTIM_FLTINR1_FLT4LCK_Msk                /*!< Fault 4 lock */\n\n/*******************  Bit definition for HRTIM_FLTINR2 register  ***************/\n#define HRTIM_FLTINR2_FLT5E_Pos       (0U)\n#define HRTIM_FLTINR2_FLT5E_Msk       (0x1UL << HRTIM_FLTINR2_FLT5E_Pos)       /*!< 0x00000001 */\n#define HRTIM_FLTINR2_FLT5E           HRTIM_FLTINR2_FLT5E_Msk                  /*!< Fault 5 enable */\n#define HRTIM_FLTINR2_FLT5P_Pos       (1U)\n#define HRTIM_FLTINR2_FLT5P_Msk       (0x1UL << HRTIM_FLTINR2_FLT5P_Pos)       /*!< 0x00000002 */\n#define HRTIM_FLTINR2_FLT5P           HRTIM_FLTINR2_FLT5P_Msk                  /*!< Fault 5 polarity */\n#define HRTIM_FLTINR2_FLT5SRC_Pos     (2U)\n#define HRTIM_FLTINR2_FLT5SRC_Msk     (0x1UL << HRTIM_FLTINR2_FLT5SRC_Pos)     /*!< 0x00000004 */\n#define HRTIM_FLTINR2_FLT5SRC         HRTIM_FLTINR2_FLT5SRC_Msk                /*!< Fault 5 source */\n#define HRTIM_FLTINR2_FLT5F_Pos       (3U)\n#define HRTIM_FLTINR2_FLT5F_Msk       (0xFUL << HRTIM_FLTINR2_FLT5F_Pos)       /*!< 0x00000078 */\n#define HRTIM_FLTINR2_FLT5F           HRTIM_FLTINR2_FLT5F_Msk                  /*!< Fault 5 filter */\n#define HRTIM_FLTINR2_FLT5F_0         (0x1UL << HRTIM_FLTINR2_FLT5F_Pos)        /*!< 0x00000008 */\n#define HRTIM_FLTINR2_FLT5F_1         (0x2UL << HRTIM_FLTINR2_FLT5F_Pos)        /*!< 0x00000010 */\n#define HRTIM_FLTINR2_FLT5F_2         (0x4UL << HRTIM_FLTINR2_FLT5F_Pos)        /*!< 0x00000020 */\n#define HRTIM_FLTINR2_FLT5F_3         (0x8UL << HRTIM_FLTINR2_FLT5F_Pos)        /*!< 0x00000040 */\n#define HRTIM_FLTINR2_FLT5LCK_Pos     (7U)\n#define HRTIM_FLTINR2_FLT5LCK_Msk     (0x1UL << HRTIM_FLTINR2_FLT5LCK_Pos)     /*!< 0x00000080 */\n#define HRTIM_FLTINR2_FLT5LCK         HRTIM_FLTINR2_FLT5LCK_Msk                /*!< Fault 5 lock */\n#define HRTIM_FLTINR2_FLTSD_Pos       (24U)\n#define HRTIM_FLTINR2_FLTSD_Msk       (0x3UL << HRTIM_FLTINR2_FLTSD_Pos)       /*!< 0x03000000 */\n#define HRTIM_FLTINR2_FLTSD           HRTIM_FLTINR2_FLTSD_Msk                  /*!< Fault sampling clock division */\n#define HRTIM_FLTINR2_FLTSD_0         (0x1UL << HRTIM_FLTINR2_FLTSD_Pos)        /*!< 0x01000000 */\n#define HRTIM_FLTINR2_FLTSD_1         (0x2UL << HRTIM_FLTINR2_FLTSD_Pos)        /*!< 0x02000000 */\n\n/*******************  Bit definition for HRTIM_BDMUPR register  ***************/\n#define HRTIM_BDMUPR_MCR_Pos          (0U)\n#define HRTIM_BDMUPR_MCR_Msk          (0x1UL << HRTIM_BDMUPR_MCR_Pos)          /*!< 0x00000001 */\n#define HRTIM_BDMUPR_MCR              HRTIM_BDMUPR_MCR_Msk                     /*!< MCR register update enable */\n#define HRTIM_BDMUPR_MICR_Pos         (1U)\n#define HRTIM_BDMUPR_MICR_Msk         (0x1UL << HRTIM_BDMUPR_MICR_Pos)         /*!< 0x00000002 */\n#define HRTIM_BDMUPR_MICR             HRTIM_BDMUPR_MICR_Msk                    /*!< MICR register update enable */\n#define HRTIM_BDMUPR_MDIER_Pos        (2U)\n#define HRTIM_BDMUPR_MDIER_Msk        (0x1UL << HRTIM_BDMUPR_MDIER_Pos)        /*!< 0x00000004 */\n#define HRTIM_BDMUPR_MDIER            HRTIM_BDMUPR_MDIER_Msk                   /*!< MDIER register update enable */\n#define HRTIM_BDMUPR_MCNT_Pos         (3U)\n#define HRTIM_BDMUPR_MCNT_Msk         (0x1UL << HRTIM_BDMUPR_MCNT_Pos)         /*!< 0x00000008 */\n#define HRTIM_BDMUPR_MCNT             HRTIM_BDMUPR_MCNT_Msk                    /*!< MCNT register update enable */\n#define HRTIM_BDMUPR_MPER_Pos         (4U)\n#define HRTIM_BDMUPR_MPER_Msk         (0x1UL << HRTIM_BDMUPR_MPER_Pos)         /*!< 0x00000010 */\n#define HRTIM_BDMUPR_MPER             HRTIM_BDMUPR_MPER_Msk                    /*!< MPER register update enable */\n#define HRTIM_BDMUPR_MREP_Pos         (5U)\n#define HRTIM_BDMUPR_MREP_Msk         (0x1UL << HRTIM_BDMUPR_MREP_Pos)         /*!< 0x00000020 */\n#define HRTIM_BDMUPR_MREP             HRTIM_BDMUPR_MREP_Msk                    /*!< MREP register update enable */\n#define HRTIM_BDMUPR_MCMP1_Pos        (6U)\n#define HRTIM_BDMUPR_MCMP1_Msk        (0x1UL << HRTIM_BDMUPR_MCMP1_Pos)        /*!< 0x00000040 */\n#define HRTIM_BDMUPR_MCMP1            HRTIM_BDMUPR_MCMP1_Msk                   /*!< MCMP1 register update enable */\n#define HRTIM_BDMUPR_MCMP2_Pos        (7U)\n#define HRTIM_BDMUPR_MCMP2_Msk        (0x1UL << HRTIM_BDMUPR_MCMP2_Pos)        /*!< 0x00000080 */\n#define HRTIM_BDMUPR_MCMP2            HRTIM_BDMUPR_MCMP2_Msk                   /*!< MCMP2 register update enable */\n#define HRTIM_BDMUPR_MCMP3_Pos        (8U)\n#define HRTIM_BDMUPR_MCMP3_Msk        (0x1UL << HRTIM_BDMUPR_MCMP3_Pos)        /*!< 0x00000100 */\n#define HRTIM_BDMUPR_MCMP3            HRTIM_BDMUPR_MCMP3_Msk                   /*!< MCMP3 register update enable */\n#define HRTIM_BDMUPR_MCMP4_Pos        (9U)\n#define HRTIM_BDMUPR_MCMP4_Msk        (0x1UL << HRTIM_BDMUPR_MCMP4_Pos)        /*!< 0x00000200 */\n#define HRTIM_BDMUPR_MCMP4            HRTIM_BDMUPR_MCMP4_Msk                   /*!< MPCMP4 register update enable */\n\n/*******************  Bit definition for HRTIM_BDTUPR register  ***************/\n#define HRTIM_BDTUPR_TIMCR_Pos        (0U)\n#define HRTIM_BDTUPR_TIMCR_Msk        (0x1UL << HRTIM_BDTUPR_TIMCR_Pos)        /*!< 0x00000001 */\n#define HRTIM_BDTUPR_TIMCR            HRTIM_BDTUPR_TIMCR_Msk                   /*!<  TIMCR register update enable */\n#define HRTIM_BDTUPR_TIMICR_Pos       (1U)\n#define HRTIM_BDTUPR_TIMICR_Msk       (0x1UL << HRTIM_BDTUPR_TIMICR_Pos)       /*!< 0x00000002 */\n#define HRTIM_BDTUPR_TIMICR           HRTIM_BDTUPR_TIMICR_Msk                  /*!<  TIMICR register update enable */\n#define HRTIM_BDTUPR_TIMDIER_Pos      (2U)\n#define HRTIM_BDTUPR_TIMDIER_Msk      (0x1UL << HRTIM_BDTUPR_TIMDIER_Pos)      /*!< 0x00000004 */\n#define HRTIM_BDTUPR_TIMDIER          HRTIM_BDTUPR_TIMDIER_Msk                 /*!<  TIMDIER register update enable */\n#define HRTIM_BDTUPR_TIMCNT_Pos       (3U)\n#define HRTIM_BDTUPR_TIMCNT_Msk       (0x1UL << HRTIM_BDTUPR_TIMCNT_Pos)       /*!< 0x00000008 */\n#define HRTIM_BDTUPR_TIMCNT           HRTIM_BDTUPR_TIMCNT_Msk                  /*!<  TIMCNT register update enable */\n#define HRTIM_BDTUPR_TIMPER_Pos       (4U)\n#define HRTIM_BDTUPR_TIMPER_Msk       (0x1UL << HRTIM_BDTUPR_TIMPER_Pos)       /*!< 0x00000010 */\n#define HRTIM_BDTUPR_TIMPER           HRTIM_BDTUPR_TIMPER_Msk                  /*!<  TIMPER register update enable */\n#define HRTIM_BDTUPR_TIMREP_Pos       (5U)\n#define HRTIM_BDTUPR_TIMREP_Msk       (0x1UL << HRTIM_BDTUPR_TIMREP_Pos)       /*!< 0x00000020 */\n#define HRTIM_BDTUPR_TIMREP           HRTIM_BDTUPR_TIMREP_Msk                  /*!<  TIMREP register update enable */\n#define HRTIM_BDTUPR_TIMCMP1_Pos      (6U)\n#define HRTIM_BDTUPR_TIMCMP1_Msk      (0x1UL << HRTIM_BDTUPR_TIMCMP1_Pos)      /*!< 0x00000040 */\n#define HRTIM_BDTUPR_TIMCMP1          HRTIM_BDTUPR_TIMCMP1_Msk                 /*!<  TIMCMP1 register update enable */\n#define HRTIM_BDTUPR_TIMCMP2_Pos      (7U)\n#define HRTIM_BDTUPR_TIMCMP2_Msk      (0x1UL << HRTIM_BDTUPR_TIMCMP2_Pos)      /*!< 0x00000080 */\n#define HRTIM_BDTUPR_TIMCMP2          HRTIM_BDTUPR_TIMCMP2_Msk                 /*!<  TIMCMP2 register update enable */\n#define HRTIM_BDTUPR_TIMCMP3_Pos      (8U)\n#define HRTIM_BDTUPR_TIMCMP3_Msk      (0x1UL << HRTIM_BDTUPR_TIMCMP3_Pos)      /*!< 0x00000100 */\n#define HRTIM_BDTUPR_TIMCMP3          HRTIM_BDTUPR_TIMCMP3_Msk                 /*!<  TIMCMP3 register update enable */\n#define HRTIM_BDTUPR_TIMCMP4_Pos      (9U)\n#define HRTIM_BDTUPR_TIMCMP4_Msk      (0x1UL << HRTIM_BDTUPR_TIMCMP4_Pos)      /*!< 0x00000200 */\n#define HRTIM_BDTUPR_TIMCMP4          HRTIM_BDTUPR_TIMCMP4_Msk                 /*!<  TIMCMP4 register update enable */\n#define HRTIM_BDTUPR_TIMDTR_Pos       (10U)\n#define HRTIM_BDTUPR_TIMDTR_Msk       (0x1UL << HRTIM_BDTUPR_TIMDTR_Pos)       /*!< 0x00000400 */\n#define HRTIM_BDTUPR_TIMDTR           HRTIM_BDTUPR_TIMDTR_Msk                  /*!<  TIMDTR register update enable */\n#define HRTIM_BDTUPR_TIMSET1R_Pos     (11U)\n#define HRTIM_BDTUPR_TIMSET1R_Msk     (0x1UL << HRTIM_BDTUPR_TIMSET1R_Pos)     /*!< 0x00000800 */\n#define HRTIM_BDTUPR_TIMSET1R         HRTIM_BDTUPR_TIMSET1R_Msk                /*!<  TIMSET1R register update enable */\n#define HRTIM_BDTUPR_TIMRST1R_Pos     (12U)\n#define HRTIM_BDTUPR_TIMRST1R_Msk     (0x1UL << HRTIM_BDTUPR_TIMRST1R_Pos)     /*!< 0x00001000 */\n#define HRTIM_BDTUPR_TIMRST1R         HRTIM_BDTUPR_TIMRST1R_Msk                /*!<  TIMRST1R register update enable */\n#define HRTIM_BDTUPR_TIMSET2R_Pos     (13U)\n#define HRTIM_BDTUPR_TIMSET2R_Msk     (0x1UL << HRTIM_BDTUPR_TIMSET2R_Pos)     /*!< 0x00002000 */\n#define HRTIM_BDTUPR_TIMSET2R         HRTIM_BDTUPR_TIMSET2R_Msk                /*!<  TIMSET2R register update enable */\n#define HRTIM_BDTUPR_TIMRST2R_Pos     (14U)\n#define HRTIM_BDTUPR_TIMRST2R_Msk     (0x1UL << HRTIM_BDTUPR_TIMRST2R_Pos)     /*!< 0x00004000 */\n#define HRTIM_BDTUPR_TIMRST2R         HRTIM_BDTUPR_TIMRST2R_Msk                /*!<  TIMRST2R register update enable */\n#define HRTIM_BDTUPR_TIMEEFR1_Pos     (15U)\n#define HRTIM_BDTUPR_TIMEEFR1_Msk     (0x1UL << HRTIM_BDTUPR_TIMEEFR1_Pos)     /*!< 0x00008000 */\n#define HRTIM_BDTUPR_TIMEEFR1         HRTIM_BDTUPR_TIMEEFR1_Msk                /*!<  TIMEEFR1 register update enable */\n#define HRTIM_BDTUPR_TIMEEFR2_Pos     (16U)\n#define HRTIM_BDTUPR_TIMEEFR2_Msk     (0x1UL << HRTIM_BDTUPR_TIMEEFR2_Pos)     /*!< 0x00010000 */\n#define HRTIM_BDTUPR_TIMEEFR2         HRTIM_BDTUPR_TIMEEFR2_Msk                /*!<  TIMEEFR2 register update enable */\n#define HRTIM_BDTUPR_TIMRSTR_Pos      (17U)\n#define HRTIM_BDTUPR_TIMRSTR_Msk      (0x1UL << HRTIM_BDTUPR_TIMRSTR_Pos)      /*!< 0x00020000 */\n#define HRTIM_BDTUPR_TIMRSTR          HRTIM_BDTUPR_TIMRSTR_Msk                 /*!<  TIMRSTR register update enable */\n#define HRTIM_BDTUPR_TIMCHPR_Pos      (18U)\n#define HRTIM_BDTUPR_TIMCHPR_Msk      (0x1UL << HRTIM_BDTUPR_TIMCHPR_Pos)      /*!< 0x00040000 */\n#define HRTIM_BDTUPR_TIMCHPR          HRTIM_BDTUPR_TIMCHPR_Msk                 /*!<  TIMCHPR register update enable */\n#define HRTIM_BDTUPR_TIMOUTR_Pos      (19U)\n#define HRTIM_BDTUPR_TIMOUTR_Msk      (0x1UL << HRTIM_BDTUPR_TIMOUTR_Pos)      /*!< 0x00080000 */\n#define HRTIM_BDTUPR_TIMOUTR          HRTIM_BDTUPR_TIMOUTR_Msk                 /*!<  TIMOUTR register update enable */\n#define HRTIM_BDTUPR_TIMFLTR_Pos      (20U)\n#define HRTIM_BDTUPR_TIMFLTR_Msk      (0x1UL << HRTIM_BDTUPR_TIMFLTR_Pos)      /*!< 0x00100000 */\n#define HRTIM_BDTUPR_TIMFLTR          HRTIM_BDTUPR_TIMFLTR_Msk                 /*!<  TIMFLTR register update enable */\n\n/*******************  Bit definition for HRTIM_BDMADR register  ***************/\n#define HRTIM_BDMADR_BDMADR_Pos       (0U)\n#define HRTIM_BDMADR_BDMADR_Msk       (0xFFFFFFFFUL << HRTIM_BDMADR_BDMADR_Pos) /*!< 0xFFFFFFFF */\n#define HRTIM_BDMADR_BDMADR           HRTIM_BDMADR_BDMADR_Msk                  /*!<  Burst DMA Data register */\n\n/******************************************************************************/\n/*                                                                            */\n/*                             RAM ECC monitoring                             */\n/*                                                                            */\n/******************************************************************************/\n/******************  Bit definition for RAMECC_IER register  ******************/\n#define RAMECC_IER_GECCDEBWIE_Pos         (3U)\n#define RAMECC_IER_GECCDEBWIE_Msk         (0x1UL << RAMECC_IER_GECCDEBWIE_Pos)  /*!< 0x00000008 */\n#define RAMECC_IER_GECCDEBWIE             RAMECC_IER_GECCDEBWIE_Msk             /*!< Global ECC double error on byte write (BW) interrupt enable */\n#define RAMECC_IER_GECCDEIE_Pos           (2U)\n#define RAMECC_IER_GECCDEIE_Msk           (0x1UL << RAMECC_IER_GECCDEIE_Pos)    /*!< 0x00000004 */\n#define RAMECC_IER_GECCDEIE               RAMECC_IER_GECCDEIE_Msk               /*!< Global ECC double error interrupt enable */\n#define RAMECC_IER_GECCSEIE_Pos           (1U)\n#define RAMECC_IER_GECCSEIE_Msk           (0x1UL << RAMECC_IER_GECCSEIE_Pos)    /*!< 0x00000002 */\n#define RAMECC_IER_GECCSEIE               RAMECC_IER_GECCSEIE_Msk               /*!< Global ECC single error interrupt enable */\n#define RAMECC_IER_GIE_Pos                (0U)\n#define RAMECC_IER_GIE_Msk                (0x1UL << RAMECC_IER_GIE_Pos)         /*!< 0x00000001 */\n#define RAMECC_IER_GIE                    RAMECC_IER_GIE_Msk                    /*!< Global interrupt enable */\n\n/*******************  Bit definition for RAMECC_CR register  ******************/\n#define RAMECC_CR_ECCELEN_Pos             (5U)\n#define RAMECC_CR_ECCELEN_Msk             (0x1UL << RAMECC_CR_ECCELEN_Pos)      /*!< 0x00000020 */\n#define RAMECC_CR_ECCELEN                 RAMECC_CR_ECCELEN_Msk                 /*!< ECC error latching enable */\n#define RAMECC_CR_ECCDEBWIE_Pos           (4U)\n#define RAMECC_CR_ECCDEBWIE_Msk           (0x1UL << RAMECC_CR_ECCDEBWIE_Pos)    /*!< 0x00000010 */\n#define RAMECC_CR_ECCDEBWIE               RAMECC_CR_ECCDEBWIE_Msk               /*!< ECC double error on byte write (BW) interrupt enable */\n#define RAMECC_CR_ECCDEIE_Pos             (3U)\n#define RAMECC_CR_ECCDEIE_Msk             (0x1UL << RAMECC_CR_ECCDEIE_Pos)      /*!< 0x00000008 */\n#define RAMECC_CR_ECCDEIE                 RAMECC_CR_ECCDEIE_Msk                 /*!< ECC double error interrupt enable */\n#define RAMECC_CR_ECCSEIE_Pos             (2U)\n#define RAMECC_CR_ECCSEIE_Msk             (0x1UL << RAMECC_CR_ECCSEIE_Pos)      /*!< 0x00000004 */\n#define RAMECC_CR_ECCSEIE                 RAMECC_CR_ECCSEIE_Msk                 /*!< ECC single error interrupt enable */\n\n/*******************  Bit definition for RAMECC_SR register  ******************/\n#define RAMECC_SR_DEBWDF_Pos             (2U)\n#define RAMECC_SR_DEBWDF_Msk             (0x1UL << RAMECC_SR_DEBWDF_Pos)        /*!< 0x00000004 */\n#define RAMECC_SR_DEBWDF                 RAMECC_SR_DEBWDF_Msk                   /*!< ECC double error on byte write (BW) detected flag */\n#define RAMECC_SR_DEDF_Pos               (1U)\n#define RAMECC_SR_DEDF_Msk               (0x1UL << RAMECC_SR_DEDF_Pos)          /*!< 0x00000002 */\n#define RAMECC_SR_DEDF                   RAMECC_SR_DEDF_Msk                     /*!< ECC double error detected flag */\n#define RAMECC_SR_SEDCF_Pos              (0U)\n#define RAMECC_SR_SEDCF_Msk              (0x1UL << RAMECC_SR_SEDCF_Pos)         /*!< 0x00000001 */\n#define RAMECC_SR_SEDCF                  RAMECC_SR_SEDCF_Msk                    /*!< ECC single error detected and corrected flag */\n\n/******************  Bit definition for RAMECC_FAR register  ******************/\n#define RAMECC_FAR_FADD_Pos              (0U)\n#define RAMECC_FAR_FADD_Msk              (0xFFFFFFFFUL << RAMECC_FAR_FADD_Pos)  /*!< 0xFFFFFFFF */\n#define RAMECC_FAR_FADD                  RAMECC_FAR_FADD_Msk                    /*!< ECC error failing address */\n\n/******************  Bit definition for RAMECC_FDRL register  *****************/\n#define RAMECC_FAR_FDATAL_Pos            (0U)\n#define RAMECC_FAR_FDATAL_Msk            (0xFFFFFFFFUL << RAMECC_FAR_FDATAL_Pos)/*!< 0xFFFFFFFF */\n#define RAMECC_FAR_FDATAL                RAMECC_FAR_FDATAL_Msk                  /*!< ECC error failing address */\n\n/******************  Bit definition for RAMECC_FDRH register  *****************/\n#define RAMECC_FAR_FDATAH_Pos            (0U)\n#define RAMECC_FAR_FDATAH_Msk            (0xFFFFFFFFUL << RAMECC_FAR_FDATAH_Pos)/*!< 0xFFFFFFFF */\n#define RAMECC_FAR_FDATAH                RAMECC_FAR_FDATAH_Msk                  /* Failing data high (64-bit memory) */\n\n/*****************  Bit definition for RAMECC_FECR register  ******************/\n#define RAMECC_FECR_FEC_Pos              (0U)\n#define RAMECC_FECR_FEC_Msk              (0xFFFFFFFFUL << RAMECC_FECR_FEC_Pos)  /*!< 0xFFFFFFFF */\n#define RAMECC_FECR_FEC                  RAMECC_FECR_FEC_Msk                    /*!< Failing error code */\n\n/******************************************************************************/\n/*                                                                            */\n/*                                MDIOS                                        */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bit definition for MDIOS_CR register  *******************/\n#define MDIOS_CR_EN_Pos                (0U)\n#define MDIOS_CR_EN_Msk                (0x1UL << MDIOS_CR_EN_Pos)              /*!< 0x00000001 */\n#define MDIOS_CR_EN                    MDIOS_CR_EN_Msk                         /*!<  MDIOS slave peripheral enable */\n#define MDIOS_CR_WRIE_Pos              (1U)\n#define MDIOS_CR_WRIE_Msk              (0x1UL << MDIOS_CR_WRIE_Pos)            /*!< 0x00000002 */\n#define MDIOS_CR_WRIE                  MDIOS_CR_WRIE_Msk                       /*!<  MDIOS slave register write interrupt enable. */\n#define MDIOS_CR_RDIE_Pos              (2U)\n#define MDIOS_CR_RDIE_Msk              (0x1UL << MDIOS_CR_RDIE_Pos)            /*!< 0x00000004 */\n#define MDIOS_CR_RDIE                  MDIOS_CR_RDIE_Msk                       /*!<  MDIOS slave register read interrupt enable. */\n#define MDIOS_CR_EIE_Pos               (3U)\n#define MDIOS_CR_EIE_Msk               (0x1UL << MDIOS_CR_EIE_Pos)             /*!< 0x00000008 */\n#define MDIOS_CR_EIE                   MDIOS_CR_EIE_Msk                        /*!<  MDIOS slave register error interrupt enable. */\n#define MDIOS_CR_DPC_Pos               (7U)\n#define MDIOS_CR_DPC_Msk               (0x1UL << MDIOS_CR_DPC_Pos)             /*!< 0x00000080 */\n#define MDIOS_CR_DPC                   MDIOS_CR_DPC_Msk                        /*!<  MDIOS slave disable preamble check. */\n#define MDIOS_CR_PORT_ADDRESS_Pos      (8U)\n#define MDIOS_CR_PORT_ADDRESS_Msk      (0x1FUL << MDIOS_CR_PORT_ADDRESS_Pos)   /*!< 0x00001F00 */\n#define MDIOS_CR_PORT_ADDRESS          MDIOS_CR_PORT_ADDRESS_Msk               /*!<  MDIOS slave port address mask. */\n#define MDIOS_CR_PORT_ADDRESS_0        (0x01UL << MDIOS_CR_PORT_ADDRESS_Pos)    /*!< 0x00000100 */\n#define MDIOS_CR_PORT_ADDRESS_1        (0x02UL << MDIOS_CR_PORT_ADDRESS_Pos)    /*!< 0x00000200 */\n#define MDIOS_CR_PORT_ADDRESS_2        (0x04UL << MDIOS_CR_PORT_ADDRESS_Pos)    /*!< 0x00000400 */\n#define MDIOS_CR_PORT_ADDRESS_3        (0x08UL << MDIOS_CR_PORT_ADDRESS_Pos)    /*!< 0x00000800 */\n#define MDIOS_CR_PORT_ADDRESS_4        (0x10UL << MDIOS_CR_PORT_ADDRESS_Pos)    /*!< 0x00001000 */\n\n/********************  Bit definition for MDIOS_SR register  *******************/\n#define MDIOS_SR_PERF_Pos              (0U)\n#define MDIOS_SR_PERF_Msk              (0x1UL << MDIOS_SR_PERF_Pos)            /*!< 0x00000001 */\n#define MDIOS_SR_PERF                  MDIOS_SR_PERF_Msk                       /*!<  MDIOS slave turnaround error flag*/\n#define MDIOS_SR_SERF_Pos              (1U)\n#define MDIOS_SR_SERF_Msk              (0x1UL << MDIOS_SR_SERF_Pos)            /*!< 0x00000002 */\n#define MDIOS_SR_SERF                  MDIOS_SR_SERF_Msk                       /*!<  MDIOS slave start error flag */\n#define MDIOS_SR_TERF_Pos              (2U)\n#define MDIOS_SR_TERF_Msk              (0x1UL << MDIOS_SR_TERF_Pos)            /*!< 0x00000004 */\n#define MDIOS_SR_TERF                  MDIOS_SR_TERF_Msk                       /*!<  MDIOS slave preamble error flag */\n\n/********************  Bit definition for MDIOS_CLRFR register  *******************/\n#define MDIOS_SR_CPERF_Pos             (0U)\n#define MDIOS_SR_CPERF_Msk             (0x1UL << MDIOS_SR_CPERF_Pos)           /*!< 0x00000001 */\n#define MDIOS_SR_CPERF                 MDIOS_SR_CPERF_Msk                      /*!<  MDIOS slave Clear the turnaround error flag */\n#define MDIOS_SR_CSERF_Pos             (1U)\n#define MDIOS_SR_CSERF_Msk             (0x1UL << MDIOS_SR_CSERF_Pos)           /*!< 0x00000002 */\n#define MDIOS_SR_CSERF                 MDIOS_SR_CSERF_Msk                      /*!<  MDIOS slave Clear the start error flag */\n#define MDIOS_SR_CTERF_Pos             (2U)\n#define MDIOS_SR_CTERF_Msk             (0x1UL << MDIOS_SR_CTERF_Pos)           /*!< 0x00000004 */\n#define MDIOS_SR_CTERF                 MDIOS_SR_CTERF_Msk                      /*!<  MDIOS slave Clear the preamble error flag */\n\n/******************************************************************************/\n/*                                                                            */\n/*                                       USB_OTG                              */\n/*                                                                            */\n/******************************************************************************/\n/********************  Bit definition forUSB_OTG_GOTGCTL register  ********************/\n#define USB_OTG_GOTGCTL_SRQSCS_Pos               (0U)\n#define USB_OTG_GOTGCTL_SRQSCS_Msk               (0x1UL << USB_OTG_GOTGCTL_SRQSCS_Pos) /*!< 0x00000001 */\n#define USB_OTG_GOTGCTL_SRQSCS                   USB_OTG_GOTGCTL_SRQSCS_Msk    /*!< Session request success */\n#define USB_OTG_GOTGCTL_SRQ_Pos                  (1U)\n#define USB_OTG_GOTGCTL_SRQ_Msk                  (0x1UL << USB_OTG_GOTGCTL_SRQ_Pos) /*!< 0x00000002 */\n#define USB_OTG_GOTGCTL_SRQ                      USB_OTG_GOTGCTL_SRQ_Msk       /*!< Session request */\n#define USB_OTG_GOTGCTL_VBVALOEN_Pos             (2U)\n#define USB_OTG_GOTGCTL_VBVALOEN_Msk             (0x1UL << USB_OTG_GOTGCTL_VBVALOEN_Pos) /*!< 0x00000004 */\n#define USB_OTG_GOTGCTL_VBVALOEN                 USB_OTG_GOTGCTL_VBVALOEN_Msk  /*!< VBUS valid override enable */\n#define USB_OTG_GOTGCTL_VBVALOVAL_Pos            (3U)\n#define USB_OTG_GOTGCTL_VBVALOVAL_Msk            (0x1UL << USB_OTG_GOTGCTL_VBVALOVAL_Pos) /*!< 0x00000008 */\n#define USB_OTG_GOTGCTL_VBVALOVAL                USB_OTG_GOTGCTL_VBVALOVAL_Msk /*!< VBUS valid override value */\n#define USB_OTG_GOTGCTL_AVALOEN_Pos              (4U)\n#define USB_OTG_GOTGCTL_AVALOEN_Msk              (0x1UL << USB_OTG_GOTGCTL_AVALOEN_Pos) /*!< 0x00000010 */\n#define USB_OTG_GOTGCTL_AVALOEN                  USB_OTG_GOTGCTL_AVALOEN_Msk   /*!< A-peripheral session valid override enable */\n#define USB_OTG_GOTGCTL_AVALOVAL_Pos             (5U)\n#define USB_OTG_GOTGCTL_AVALOVAL_Msk             (0x1UL << USB_OTG_GOTGCTL_AVALOVAL_Pos) /*!< 0x00000020 */\n#define USB_OTG_GOTGCTL_AVALOVAL                 USB_OTG_GOTGCTL_AVALOVAL_Msk  /*!< A-peripheral session valid override value */\n#define USB_OTG_GOTGCTL_BVALOEN_Pos              (6U)\n#define USB_OTG_GOTGCTL_BVALOEN_Msk              (0x1UL << USB_OTG_GOTGCTL_BVALOEN_Pos) /*!< 0x00000040 */\n#define USB_OTG_GOTGCTL_BVALOEN                  USB_OTG_GOTGCTL_BVALOEN_Msk   /*!< B-peripheral session valid override enable */\n#define USB_OTG_GOTGCTL_BVALOVAL_Pos             (7U)\n#define USB_OTG_GOTGCTL_BVALOVAL_Msk             (0x1UL << USB_OTG_GOTGCTL_BVALOVAL_Pos) /*!< 0x00000080 */\n#define USB_OTG_GOTGCTL_BVALOVAL                 USB_OTG_GOTGCTL_BVALOVAL_Msk  /*!< B-peripheral session valid override value  */\n#define USB_OTG_GOTGCTL_HNGSCS_Pos               (8U)\n#define USB_OTG_GOTGCTL_HNGSCS_Msk               (0x1UL << USB_OTG_GOTGCTL_HNGSCS_Pos) /*!< 0x00000100 */\n#define USB_OTG_GOTGCTL_HNGSCS                   USB_OTG_GOTGCTL_HNGSCS_Msk    /*!< Host set HNP enable */\n#define USB_OTG_GOTGCTL_HNPRQ_Pos                (9U)\n#define USB_OTG_GOTGCTL_HNPRQ_Msk                (0x1UL << USB_OTG_GOTGCTL_HNPRQ_Pos) /*!< 0x00000200 */\n#define USB_OTG_GOTGCTL_HNPRQ                    USB_OTG_GOTGCTL_HNPRQ_Msk     /*!< HNP request */\n#define USB_OTG_GOTGCTL_HSHNPEN_Pos              (10U)\n#define USB_OTG_GOTGCTL_HSHNPEN_Msk              (0x1UL << USB_OTG_GOTGCTL_HSHNPEN_Pos) /*!< 0x00000400 */\n#define USB_OTG_GOTGCTL_HSHNPEN                  USB_OTG_GOTGCTL_HSHNPEN_Msk   /*!< Host set HNP enable */\n#define USB_OTG_GOTGCTL_DHNPEN_Pos               (11U)\n#define USB_OTG_GOTGCTL_DHNPEN_Msk               (0x1UL << USB_OTG_GOTGCTL_DHNPEN_Pos) /*!< 0x00000800 */\n#define USB_OTG_GOTGCTL_DHNPEN                   USB_OTG_GOTGCTL_DHNPEN_Msk    /*!< Device HNP enabled */\n#define USB_OTG_GOTGCTL_EHEN_Pos                 (12U)\n#define USB_OTG_GOTGCTL_EHEN_Msk                 (0x1UL << USB_OTG_GOTGCTL_EHEN_Pos) /*!< 0x00001000 */\n#define USB_OTG_GOTGCTL_EHEN                     USB_OTG_GOTGCTL_EHEN_Msk      /*!< Embedded host enable */\n#define USB_OTG_GOTGCTL_CIDSTS_Pos               (16U)\n#define USB_OTG_GOTGCTL_CIDSTS_Msk               (0x1UL << USB_OTG_GOTGCTL_CIDSTS_Pos) /*!< 0x00010000 */\n#define USB_OTG_GOTGCTL_CIDSTS                   USB_OTG_GOTGCTL_CIDSTS_Msk    /*!< Connector ID status */\n#define USB_OTG_GOTGCTL_DBCT_Pos                 (17U)\n#define USB_OTG_GOTGCTL_DBCT_Msk                 (0x1UL << USB_OTG_GOTGCTL_DBCT_Pos) /*!< 0x00020000 */\n#define USB_OTG_GOTGCTL_DBCT                     USB_OTG_GOTGCTL_DBCT_Msk      /*!< Long/short debounce time */\n#define USB_OTG_GOTGCTL_ASVLD_Pos                (18U)\n#define USB_OTG_GOTGCTL_ASVLD_Msk                (0x1UL << USB_OTG_GOTGCTL_ASVLD_Pos) /*!< 0x00040000 */\n#define USB_OTG_GOTGCTL_ASVLD                    USB_OTG_GOTGCTL_ASVLD_Msk     /*!< A-session valid  */\n#define USB_OTG_GOTGCTL_BSESVLD_Pos              (19U)\n#define USB_OTG_GOTGCTL_BSESVLD_Msk              (0x1UL << USB_OTG_GOTGCTL_BSESVLD_Pos) /*!< 0x00080000 */\n#define USB_OTG_GOTGCTL_BSESVLD                  USB_OTG_GOTGCTL_BSESVLD_Msk   /*!< B-session valid */\n#define USB_OTG_GOTGCTL_OTGVER_Pos               (20U)\n#define USB_OTG_GOTGCTL_OTGVER_Msk               (0x1UL << USB_OTG_GOTGCTL_OTGVER_Pos) /*!< 0x00100000 */\n#define USB_OTG_GOTGCTL_OTGVER                   USB_OTG_GOTGCTL_OTGVER_Msk    /*!< OTG version  */\n\n/********************  Bit definition forUSB_OTG_HCFG register  ********************/\n\n#define USB_OTG_HCFG_FSLSPCS_Pos                 (0U)\n#define USB_OTG_HCFG_FSLSPCS_Msk                 (0x3UL << USB_OTG_HCFG_FSLSPCS_Pos) /*!< 0x00000003 */\n#define USB_OTG_HCFG_FSLSPCS                     USB_OTG_HCFG_FSLSPCS_Msk      /*!< FS/LS PHY clock select  */\n#define USB_OTG_HCFG_FSLSPCS_0                   (0x1UL << USB_OTG_HCFG_FSLSPCS_Pos) /*!< 0x00000001 */\n#define USB_OTG_HCFG_FSLSPCS_1                   (0x2UL << USB_OTG_HCFG_FSLSPCS_Pos) /*!< 0x00000002 */\n#define USB_OTG_HCFG_FSLSS_Pos                   (2U)\n#define USB_OTG_HCFG_FSLSS_Msk                   (0x1UL << USB_OTG_HCFG_FSLSS_Pos) /*!< 0x00000004 */\n#define USB_OTG_HCFG_FSLSS                       USB_OTG_HCFG_FSLSS_Msk        /*!< FS- and LS-only support */\n\n/********************  Bit definition forUSB_OTG_DCFG register  ********************/\n\n#define USB_OTG_DCFG_DSPD_Pos                    (0U)\n#define USB_OTG_DCFG_DSPD_Msk                    (0x3UL << USB_OTG_DCFG_DSPD_Pos) /*!< 0x00000003 */\n#define USB_OTG_DCFG_DSPD                        USB_OTG_DCFG_DSPD_Msk         /*!< Device speed */\n#define USB_OTG_DCFG_DSPD_0                      (0x1UL << USB_OTG_DCFG_DSPD_Pos) /*!< 0x00000001 */\n#define USB_OTG_DCFG_DSPD_1                      (0x2UL << USB_OTG_DCFG_DSPD_Pos) /*!< 0x00000002 */\n#define USB_OTG_DCFG_NZLSOHSK_Pos                (2U)\n#define USB_OTG_DCFG_NZLSOHSK_Msk                (0x1UL << USB_OTG_DCFG_NZLSOHSK_Pos) /*!< 0x00000004 */\n#define USB_OTG_DCFG_NZLSOHSK                    USB_OTG_DCFG_NZLSOHSK_Msk     /*!< Nonzero-length status OUT handshake */\n\n#define USB_OTG_DCFG_DAD_Pos                     (4U)\n#define USB_OTG_DCFG_DAD_Msk                     (0x7FUL << USB_OTG_DCFG_DAD_Pos) /*!< 0x000007F0 */\n#define USB_OTG_DCFG_DAD                         USB_OTG_DCFG_DAD_Msk          /*!< Device address */\n#define USB_OTG_DCFG_DAD_0                       (0x01UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000010 */\n#define USB_OTG_DCFG_DAD_1                       (0x02UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000020 */\n#define USB_OTG_DCFG_DAD_2                       (0x04UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000040 */\n#define USB_OTG_DCFG_DAD_3                       (0x08UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000080 */\n#define USB_OTG_DCFG_DAD_4                       (0x10UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000100 */\n#define USB_OTG_DCFG_DAD_5                       (0x20UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000200 */\n#define USB_OTG_DCFG_DAD_6                       (0x40UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000400 */\n\n#define USB_OTG_DCFG_PFIVL_Pos                   (11U)\n#define USB_OTG_DCFG_PFIVL_Msk                   (0x3UL << USB_OTG_DCFG_PFIVL_Pos) /*!< 0x00001800 */\n#define USB_OTG_DCFG_PFIVL                       USB_OTG_DCFG_PFIVL_Msk        /*!< Periodic (micro)frame interval */\n#define USB_OTG_DCFG_PFIVL_0                     (0x1UL << USB_OTG_DCFG_PFIVL_Pos) /*!< 0x00000800 */\n#define USB_OTG_DCFG_PFIVL_1                     (0x2UL << USB_OTG_DCFG_PFIVL_Pos) /*!< 0x00001000 */\n\n#define USB_OTG_DCFG_PERSCHIVL_Pos               (24U)\n#define USB_OTG_DCFG_PERSCHIVL_Msk               (0x3UL << USB_OTG_DCFG_PERSCHIVL_Pos) /*!< 0x03000000 */\n#define USB_OTG_DCFG_PERSCHIVL                   USB_OTG_DCFG_PERSCHIVL_Msk    /*!< Periodic scheduling interval */\n#define USB_OTG_DCFG_PERSCHIVL_0                 (0x1UL << USB_OTG_DCFG_PERSCHIVL_Pos) /*!< 0x01000000 */\n#define USB_OTG_DCFG_PERSCHIVL_1                 (0x2UL << USB_OTG_DCFG_PERSCHIVL_Pos) /*!< 0x02000000 */\n\n/********************  Bit definition forUSB_OTG_PCGCR register  ********************/\n#define USB_OTG_PCGCR_STPPCLK_Pos                (0U)\n#define USB_OTG_PCGCR_STPPCLK_Msk                (0x1UL << USB_OTG_PCGCR_STPPCLK_Pos) /*!< 0x00000001 */\n#define USB_OTG_PCGCR_STPPCLK                    USB_OTG_PCGCR_STPPCLK_Msk     /*!< Stop PHY clock */\n#define USB_OTG_PCGCR_GATEHCLK_Pos               (1U)\n#define USB_OTG_PCGCR_GATEHCLK_Msk               (0x1UL << USB_OTG_PCGCR_GATEHCLK_Pos) /*!< 0x00000002 */\n#define USB_OTG_PCGCR_GATEHCLK                   USB_OTG_PCGCR_GATEHCLK_Msk    /*!< Gate HCLK */\n#define USB_OTG_PCGCR_PHYSUSP_Pos                (4U)\n#define USB_OTG_PCGCR_PHYSUSP_Msk                (0x1UL << USB_OTG_PCGCR_PHYSUSP_Pos) /*!< 0x00000010 */\n#define USB_OTG_PCGCR_PHYSUSP                    USB_OTG_PCGCR_PHYSUSP_Msk     /*!< PHY suspended */\n\n/********************  Bit definition forUSB_OTG_GOTGINT register  ********************/\n#define USB_OTG_GOTGINT_SEDET_Pos                (2U)\n#define USB_OTG_GOTGINT_SEDET_Msk                (0x1UL << USB_OTG_GOTGINT_SEDET_Pos) /*!< 0x00000004 */\n#define USB_OTG_GOTGINT_SEDET                    USB_OTG_GOTGINT_SEDET_Msk     /*!< Session end detected                   */\n#define USB_OTG_GOTGINT_SRSSCHG_Pos              (8U)\n#define USB_OTG_GOTGINT_SRSSCHG_Msk              (0x1UL << USB_OTG_GOTGINT_SRSSCHG_Pos) /*!< 0x00000100 */\n#define USB_OTG_GOTGINT_SRSSCHG                  USB_OTG_GOTGINT_SRSSCHG_Msk   /*!< Session request success status change  */\n#define USB_OTG_GOTGINT_HNSSCHG_Pos              (9U)\n#define USB_OTG_GOTGINT_HNSSCHG_Msk              (0x1UL << USB_OTG_GOTGINT_HNSSCHG_Pos) /*!< 0x00000200 */\n#define USB_OTG_GOTGINT_HNSSCHG                  USB_OTG_GOTGINT_HNSSCHG_Msk   /*!< Host negotiation success status change */\n#define USB_OTG_GOTGINT_HNGDET_Pos               (17U)\n#define USB_OTG_GOTGINT_HNGDET_Msk               (0x1UL << USB_OTG_GOTGINT_HNGDET_Pos) /*!< 0x00020000 */\n#define USB_OTG_GOTGINT_HNGDET                   USB_OTG_GOTGINT_HNGDET_Msk    /*!< Host negotiation detected              */\n#define USB_OTG_GOTGINT_ADTOCHG_Pos              (18U)\n#define USB_OTG_GOTGINT_ADTOCHG_Msk              (0x1UL << USB_OTG_GOTGINT_ADTOCHG_Pos) /*!< 0x00040000 */\n#define USB_OTG_GOTGINT_ADTOCHG                  USB_OTG_GOTGINT_ADTOCHG_Msk   /*!< A-device timeout change                */\n#define USB_OTG_GOTGINT_DBCDNE_Pos               (19U)\n#define USB_OTG_GOTGINT_DBCDNE_Msk               (0x1UL << USB_OTG_GOTGINT_DBCDNE_Pos) /*!< 0x00080000 */\n#define USB_OTG_GOTGINT_DBCDNE                   USB_OTG_GOTGINT_DBCDNE_Msk    /*!< Debounce done                          */\n\n/********************  Bit definition forUSB_OTG_DCTL register  ********************/\n#define USB_OTG_DCTL_RWUSIG_Pos                  (0U)\n#define USB_OTG_DCTL_RWUSIG_Msk                  (0x1UL << USB_OTG_DCTL_RWUSIG_Pos) /*!< 0x00000001 */\n#define USB_OTG_DCTL_RWUSIG                      USB_OTG_DCTL_RWUSIG_Msk       /*!< Remote wakeup signaling */\n#define USB_OTG_DCTL_SDIS_Pos                    (1U)\n#define USB_OTG_DCTL_SDIS_Msk                    (0x1UL << USB_OTG_DCTL_SDIS_Pos) /*!< 0x00000002 */\n#define USB_OTG_DCTL_SDIS                        USB_OTG_DCTL_SDIS_Msk         /*!< Soft disconnect         */\n#define USB_OTG_DCTL_GINSTS_Pos                  (2U)\n#define USB_OTG_DCTL_GINSTS_Msk                  (0x1UL << USB_OTG_DCTL_GINSTS_Pos) /*!< 0x00000004 */\n#define USB_OTG_DCTL_GINSTS                      USB_OTG_DCTL_GINSTS_Msk       /*!< Global IN NAK status    */\n#define USB_OTG_DCTL_GONSTS_Pos                  (3U)\n#define USB_OTG_DCTL_GONSTS_Msk                  (0x1UL << USB_OTG_DCTL_GONSTS_Pos) /*!< 0x00000008 */\n#define USB_OTG_DCTL_GONSTS                      USB_OTG_DCTL_GONSTS_Msk       /*!< Global OUT NAK status   */\n\n#define USB_OTG_DCTL_TCTL_Pos                    (4U)\n#define USB_OTG_DCTL_TCTL_Msk                    (0x7UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000070 */\n#define USB_OTG_DCTL_TCTL                        USB_OTG_DCTL_TCTL_Msk         /*!< Test control */\n#define USB_OTG_DCTL_TCTL_0                      (0x1UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000010 */\n#define USB_OTG_DCTL_TCTL_1                      (0x2UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000020 */\n#define USB_OTG_DCTL_TCTL_2                      (0x4UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000040 */\n#define USB_OTG_DCTL_SGINAK_Pos                  (7U)\n#define USB_OTG_DCTL_SGINAK_Msk                  (0x1UL << USB_OTG_DCTL_SGINAK_Pos) /*!< 0x00000080 */\n#define USB_OTG_DCTL_SGINAK                      USB_OTG_DCTL_SGINAK_Msk       /*!< Set global IN NAK         */\n#define USB_OTG_DCTL_CGINAK_Pos                  (8U)\n#define USB_OTG_DCTL_CGINAK_Msk                  (0x1UL << USB_OTG_DCTL_CGINAK_Pos) /*!< 0x00000100 */\n#define USB_OTG_DCTL_CGINAK                      USB_OTG_DCTL_CGINAK_Msk       /*!< Clear global IN NAK       */\n#define USB_OTG_DCTL_SGONAK_Pos                  (9U)\n#define USB_OTG_DCTL_SGONAK_Msk                  (0x1UL << USB_OTG_DCTL_SGONAK_Pos) /*!< 0x00000200 */\n#define USB_OTG_DCTL_SGONAK                      USB_OTG_DCTL_SGONAK_Msk       /*!< Set global OUT NAK        */\n#define USB_OTG_DCTL_CGONAK_Pos                  (10U)\n#define USB_OTG_DCTL_CGONAK_Msk                  (0x1UL << USB_OTG_DCTL_CGONAK_Pos) /*!< 0x00000400 */\n#define USB_OTG_DCTL_CGONAK                      USB_OTG_DCTL_CGONAK_Msk       /*!< Clear global OUT NAK      */\n#define USB_OTG_DCTL_POPRGDNE_Pos                (11U)\n#define USB_OTG_DCTL_POPRGDNE_Msk                (0x1UL << USB_OTG_DCTL_POPRGDNE_Pos) /*!< 0x00000800 */\n#define USB_OTG_DCTL_POPRGDNE                    USB_OTG_DCTL_POPRGDNE_Msk     /*!< Power-on programming done */\n\n/********************  Bit definition forUSB_OTG_HFIR register  ********************/\n#define USB_OTG_HFIR_FRIVL_Pos                   (0U)\n#define USB_OTG_HFIR_FRIVL_Msk                   (0xFFFFUL << USB_OTG_HFIR_FRIVL_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_HFIR_FRIVL                       USB_OTG_HFIR_FRIVL_Msk        /*!< Frame interval */\n\n/********************  Bit definition forUSB_OTG_HFNUM register  ********************/\n#define USB_OTG_HFNUM_FRNUM_Pos                  (0U)\n#define USB_OTG_HFNUM_FRNUM_Msk                  (0xFFFFUL << USB_OTG_HFNUM_FRNUM_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_HFNUM_FRNUM                      USB_OTG_HFNUM_FRNUM_Msk       /*!< Frame number         */\n#define USB_OTG_HFNUM_FTREM_Pos                  (16U)\n#define USB_OTG_HFNUM_FTREM_Msk                  (0xFFFFUL << USB_OTG_HFNUM_FTREM_Pos) /*!< 0xFFFF0000 */\n#define USB_OTG_HFNUM_FTREM                      USB_OTG_HFNUM_FTREM_Msk       /*!< Frame time remaining */\n\n/********************  Bit definition forUSB_OTG_DSTS register  ********************/\n#define USB_OTG_DSTS_SUSPSTS_Pos                 (0U)\n#define USB_OTG_DSTS_SUSPSTS_Msk                 (0x1UL << USB_OTG_DSTS_SUSPSTS_Pos) /*!< 0x00000001 */\n#define USB_OTG_DSTS_SUSPSTS                     USB_OTG_DSTS_SUSPSTS_Msk      /*!< Suspend status   */\n\n#define USB_OTG_DSTS_ENUMSPD_Pos                 (1U)\n#define USB_OTG_DSTS_ENUMSPD_Msk                 (0x3UL << USB_OTG_DSTS_ENUMSPD_Pos) /*!< 0x00000006 */\n#define USB_OTG_DSTS_ENUMSPD                     USB_OTG_DSTS_ENUMSPD_Msk      /*!< Enumerated speed */\n#define USB_OTG_DSTS_ENUMSPD_0                   (0x1UL << USB_OTG_DSTS_ENUMSPD_Pos) /*!< 0x00000002 */\n#define USB_OTG_DSTS_ENUMSPD_1                   (0x2UL << USB_OTG_DSTS_ENUMSPD_Pos) /*!< 0x00000004 */\n#define USB_OTG_DSTS_EERR_Pos                    (3U)\n#define USB_OTG_DSTS_EERR_Msk                    (0x1UL << USB_OTG_DSTS_EERR_Pos) /*!< 0x00000008 */\n#define USB_OTG_DSTS_EERR                        USB_OTG_DSTS_EERR_Msk         /*!< Erratic error     */\n#define USB_OTG_DSTS_FNSOF_Pos                   (8U)\n#define USB_OTG_DSTS_FNSOF_Msk                   (0x3FFFUL << USB_OTG_DSTS_FNSOF_Pos) /*!< 0x003FFF00 */\n#define USB_OTG_DSTS_FNSOF                       USB_OTG_DSTS_FNSOF_Msk        /*!< Frame number of the received SOF */\n\n/********************  Bit definition forUSB_OTG_GAHBCFG register  ********************/\n#define USB_OTG_GAHBCFG_GINT_Pos                 (0U)\n#define USB_OTG_GAHBCFG_GINT_Msk                 (0x1UL << USB_OTG_GAHBCFG_GINT_Pos) /*!< 0x00000001 */\n#define USB_OTG_GAHBCFG_GINT                     USB_OTG_GAHBCFG_GINT_Msk      /*!< Global interrupt mask */\n\n#define USB_OTG_GAHBCFG_HBSTLEN_Pos              (1U)\n#define USB_OTG_GAHBCFG_HBSTLEN_Msk              (0xFUL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< 0x0000001E */\n#define USB_OTG_GAHBCFG_HBSTLEN                  USB_OTG_GAHBCFG_HBSTLEN_Msk   /*!< Burst length/type */\n#define USB_OTG_GAHBCFG_HBSTLEN_0                (0x0UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< Single */\n#define USB_OTG_GAHBCFG_HBSTLEN_1                (0x1UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR */\n#define USB_OTG_GAHBCFG_HBSTLEN_2                (0x3UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR4 */\n#define USB_OTG_GAHBCFG_HBSTLEN_3                (0x5UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR8 */\n#define USB_OTG_GAHBCFG_HBSTLEN_4                (0x7UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR16 */\n#define USB_OTG_GAHBCFG_DMAEN_Pos                (5U)\n#define USB_OTG_GAHBCFG_DMAEN_Msk                (0x1UL << USB_OTG_GAHBCFG_DMAEN_Pos) /*!< 0x00000020 */\n#define USB_OTG_GAHBCFG_DMAEN                    USB_OTG_GAHBCFG_DMAEN_Msk     /*!< DMA enable */\n#define USB_OTG_GAHBCFG_TXFELVL_Pos              (7U)\n#define USB_OTG_GAHBCFG_TXFELVL_Msk              (0x1UL << USB_OTG_GAHBCFG_TXFELVL_Pos) /*!< 0x00000080 */\n#define USB_OTG_GAHBCFG_TXFELVL                  USB_OTG_GAHBCFG_TXFELVL_Msk   /*!< TxFIFO empty level */\n#define USB_OTG_GAHBCFG_PTXFELVL_Pos             (8U)\n#define USB_OTG_GAHBCFG_PTXFELVL_Msk             (0x1UL << USB_OTG_GAHBCFG_PTXFELVL_Pos) /*!< 0x00000100 */\n#define USB_OTG_GAHBCFG_PTXFELVL                 USB_OTG_GAHBCFG_PTXFELVL_Msk  /*!< Periodic TxFIFO empty level */\n\n/********************  Bit definition forUSB_OTG_GUSBCFG register  ********************/\n\n#define USB_OTG_GUSBCFG_TOCAL_Pos                (0U)\n#define USB_OTG_GUSBCFG_TOCAL_Msk                (0x7UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000007 */\n#define USB_OTG_GUSBCFG_TOCAL                    USB_OTG_GUSBCFG_TOCAL_Msk     /*!< FS timeout calibration */\n#define USB_OTG_GUSBCFG_TOCAL_0                  (0x1UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000001 */\n#define USB_OTG_GUSBCFG_TOCAL_1                  (0x2UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000002 */\n#define USB_OTG_GUSBCFG_TOCAL_2                  (0x4UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000004 */\n#define USB_OTG_GUSBCFG_PHYSEL_Pos               (6U)\n#define USB_OTG_GUSBCFG_PHYSEL_Msk               (0x1UL << USB_OTG_GUSBCFG_PHYSEL_Pos) /*!< 0x00000040 */\n#define USB_OTG_GUSBCFG_PHYSEL                   USB_OTG_GUSBCFG_PHYSEL_Msk    /*!< USB 2.0 high-speed ULPI PHY or USB 1.1 full-speed serial transceiver select */\n#define USB_OTG_GUSBCFG_SRPCAP_Pos               (8U)\n#define USB_OTG_GUSBCFG_SRPCAP_Msk               (0x1UL << USB_OTG_GUSBCFG_SRPCAP_Pos) /*!< 0x00000100 */\n#define USB_OTG_GUSBCFG_SRPCAP                   USB_OTG_GUSBCFG_SRPCAP_Msk    /*!< SRP-capable */\n#define USB_OTG_GUSBCFG_HNPCAP_Pos               (9U)\n#define USB_OTG_GUSBCFG_HNPCAP_Msk               (0x1UL << USB_OTG_GUSBCFG_HNPCAP_Pos) /*!< 0x00000200 */\n#define USB_OTG_GUSBCFG_HNPCAP                   USB_OTG_GUSBCFG_HNPCAP_Msk    /*!< HNP-capable */\n\n#define USB_OTG_GUSBCFG_TRDT_Pos                 (10U)\n#define USB_OTG_GUSBCFG_TRDT_Msk                 (0xFUL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00003C00 */\n#define USB_OTG_GUSBCFG_TRDT                     USB_OTG_GUSBCFG_TRDT_Msk      /*!< USB turnaround time */\n#define USB_OTG_GUSBCFG_TRDT_0                   (0x1UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00000400 */\n#define USB_OTG_GUSBCFG_TRDT_1                   (0x2UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00000800 */\n#define USB_OTG_GUSBCFG_TRDT_2                   (0x4UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00001000 */\n#define USB_OTG_GUSBCFG_TRDT_3                   (0x8UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00002000 */\n#define USB_OTG_GUSBCFG_PHYLPCS_Pos              (15U)\n#define USB_OTG_GUSBCFG_PHYLPCS_Msk              (0x1UL << USB_OTG_GUSBCFG_PHYLPCS_Pos) /*!< 0x00008000 */\n#define USB_OTG_GUSBCFG_PHYLPCS                  USB_OTG_GUSBCFG_PHYLPCS_Msk   /*!< PHY Low-power clock select */\n#define USB_OTG_GUSBCFG_ULPIFSLS_Pos             (17U)\n#define USB_OTG_GUSBCFG_ULPIFSLS_Msk             (0x1UL << USB_OTG_GUSBCFG_ULPIFSLS_Pos) /*!< 0x00020000 */\n#define USB_OTG_GUSBCFG_ULPIFSLS                 USB_OTG_GUSBCFG_ULPIFSLS_Msk  /*!< ULPI FS/LS select               */\n#define USB_OTG_GUSBCFG_ULPIAR_Pos               (18U)\n#define USB_OTG_GUSBCFG_ULPIAR_Msk               (0x1UL << USB_OTG_GUSBCFG_ULPIAR_Pos) /*!< 0x00040000 */\n#define USB_OTG_GUSBCFG_ULPIAR                   USB_OTG_GUSBCFG_ULPIAR_Msk    /*!< ULPI Auto-resume                */\n#define USB_OTG_GUSBCFG_ULPICSM_Pos              (19U)\n#define USB_OTG_GUSBCFG_ULPICSM_Msk              (0x1UL << USB_OTG_GUSBCFG_ULPICSM_Pos) /*!< 0x00080000 */\n#define USB_OTG_GUSBCFG_ULPICSM                  USB_OTG_GUSBCFG_ULPICSM_Msk   /*!< ULPI Clock SuspendM             */\n#define USB_OTG_GUSBCFG_ULPIEVBUSD_Pos           (20U)\n#define USB_OTG_GUSBCFG_ULPIEVBUSD_Msk           (0x1UL << USB_OTG_GUSBCFG_ULPIEVBUSD_Pos) /*!< 0x00100000 */\n#define USB_OTG_GUSBCFG_ULPIEVBUSD               USB_OTG_GUSBCFG_ULPIEVBUSD_Msk /*!< ULPI External VBUS Drive        */\n#define USB_OTG_GUSBCFG_ULPIEVBUSI_Pos           (21U)\n#define USB_OTG_GUSBCFG_ULPIEVBUSI_Msk           (0x1UL << USB_OTG_GUSBCFG_ULPIEVBUSI_Pos) /*!< 0x00200000 */\n#define USB_OTG_GUSBCFG_ULPIEVBUSI               USB_OTG_GUSBCFG_ULPIEVBUSI_Msk /*!< ULPI external VBUS indicator    */\n#define USB_OTG_GUSBCFG_TSDPS_Pos                (22U)\n#define USB_OTG_GUSBCFG_TSDPS_Msk                (0x1UL << USB_OTG_GUSBCFG_TSDPS_Pos) /*!< 0x00400000 */\n#define USB_OTG_GUSBCFG_TSDPS                    USB_OTG_GUSBCFG_TSDPS_Msk     /*!< TermSel DLine pulsing selection */\n#define USB_OTG_GUSBCFG_PCCI_Pos                 (23U)\n#define USB_OTG_GUSBCFG_PCCI_Msk                 (0x1UL << USB_OTG_GUSBCFG_PCCI_Pos) /*!< 0x00800000 */\n#define USB_OTG_GUSBCFG_PCCI                     USB_OTG_GUSBCFG_PCCI_Msk      /*!< Indicator complement            */\n#define USB_OTG_GUSBCFG_PTCI_Pos                 (24U)\n#define USB_OTG_GUSBCFG_PTCI_Msk                 (0x1UL << USB_OTG_GUSBCFG_PTCI_Pos) /*!< 0x01000000 */\n#define USB_OTG_GUSBCFG_PTCI                     USB_OTG_GUSBCFG_PTCI_Msk      /*!< Indicator pass through          */\n#define USB_OTG_GUSBCFG_ULPIIPD_Pos              (25U)\n#define USB_OTG_GUSBCFG_ULPIIPD_Msk              (0x1UL << USB_OTG_GUSBCFG_ULPIIPD_Pos) /*!< 0x02000000 */\n#define USB_OTG_GUSBCFG_ULPIIPD                  USB_OTG_GUSBCFG_ULPIIPD_Msk   /*!< ULPI interface protect disable  */\n#define USB_OTG_GUSBCFG_FHMOD_Pos                (29U)\n#define USB_OTG_GUSBCFG_FHMOD_Msk                (0x1UL << USB_OTG_GUSBCFG_FHMOD_Pos) /*!< 0x20000000 */\n#define USB_OTG_GUSBCFG_FHMOD                    USB_OTG_GUSBCFG_FHMOD_Msk     /*!< Forced host mode                */\n#define USB_OTG_GUSBCFG_FDMOD_Pos                (30U)\n#define USB_OTG_GUSBCFG_FDMOD_Msk                (0x1UL << USB_OTG_GUSBCFG_FDMOD_Pos) /*!< 0x40000000 */\n#define USB_OTG_GUSBCFG_FDMOD                    USB_OTG_GUSBCFG_FDMOD_Msk     /*!< Forced peripheral mode          */\n#define USB_OTG_GUSBCFG_CTXPKT_Pos               (31U)\n#define USB_OTG_GUSBCFG_CTXPKT_Msk               (0x1UL << USB_OTG_GUSBCFG_CTXPKT_Pos) /*!< 0x80000000 */\n#define USB_OTG_GUSBCFG_CTXPKT                   USB_OTG_GUSBCFG_CTXPKT_Msk    /*!< Corrupt Tx packet               */\n\n/********************  Bit definition forUSB_OTG_GRSTCTL register  ********************/\n#define USB_OTG_GRSTCTL_CSRST_Pos                (0U)\n#define USB_OTG_GRSTCTL_CSRST_Msk                (0x1UL << USB_OTG_GRSTCTL_CSRST_Pos) /*!< 0x00000001 */\n#define USB_OTG_GRSTCTL_CSRST                    USB_OTG_GRSTCTL_CSRST_Msk     /*!< Core soft reset          */\n#define USB_OTG_GRSTCTL_HSRST_Pos                (1U)\n#define USB_OTG_GRSTCTL_HSRST_Msk                (0x1UL << USB_OTG_GRSTCTL_HSRST_Pos) /*!< 0x00000002 */\n#define USB_OTG_GRSTCTL_HSRST                    USB_OTG_GRSTCTL_HSRST_Msk     /*!< HCLK soft reset          */\n#define USB_OTG_GRSTCTL_FCRST_Pos                (2U)\n#define USB_OTG_GRSTCTL_FCRST_Msk                (0x1UL << USB_OTG_GRSTCTL_FCRST_Pos) /*!< 0x00000004 */\n#define USB_OTG_GRSTCTL_FCRST                    USB_OTG_GRSTCTL_FCRST_Msk     /*!< Host frame counter reset */\n#define USB_OTG_GRSTCTL_RXFFLSH_Pos              (4U)\n#define USB_OTG_GRSTCTL_RXFFLSH_Msk              (0x1UL << USB_OTG_GRSTCTL_RXFFLSH_Pos) /*!< 0x00000010 */\n#define USB_OTG_GRSTCTL_RXFFLSH                  USB_OTG_GRSTCTL_RXFFLSH_Msk   /*!< RxFIFO flush             */\n#define USB_OTG_GRSTCTL_TXFFLSH_Pos              (5U)\n#define USB_OTG_GRSTCTL_TXFFLSH_Msk              (0x1UL << USB_OTG_GRSTCTL_TXFFLSH_Pos) /*!< 0x00000020 */\n#define USB_OTG_GRSTCTL_TXFFLSH                  USB_OTG_GRSTCTL_TXFFLSH_Msk   /*!< TxFIFO flush             */\n\n#define USB_OTG_GRSTCTL_TXFNUM_Pos               (6U)\n#define USB_OTG_GRSTCTL_TXFNUM_Msk               (0x1FUL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x000007C0 */\n#define USB_OTG_GRSTCTL_TXFNUM                   USB_OTG_GRSTCTL_TXFNUM_Msk    /*!< TxFIFO number */\n#define USB_OTG_GRSTCTL_TXFNUM_0                 (0x01UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000040 */\n#define USB_OTG_GRSTCTL_TXFNUM_1                 (0x02UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000080 */\n#define USB_OTG_GRSTCTL_TXFNUM_2                 (0x04UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000100 */\n#define USB_OTG_GRSTCTL_TXFNUM_3                 (0x08UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000200 */\n#define USB_OTG_GRSTCTL_TXFNUM_4                 (0x10UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000400 */\n#define USB_OTG_GRSTCTL_DMAREQ_Pos               (30U)\n#define USB_OTG_GRSTCTL_DMAREQ_Msk               (0x1UL << USB_OTG_GRSTCTL_DMAREQ_Pos) /*!< 0x40000000 */\n#define USB_OTG_GRSTCTL_DMAREQ                   USB_OTG_GRSTCTL_DMAREQ_Msk    /*!< DMA request signal */\n#define USB_OTG_GRSTCTL_AHBIDL_Pos               (31U)\n#define USB_OTG_GRSTCTL_AHBIDL_Msk               (0x1UL << USB_OTG_GRSTCTL_AHBIDL_Pos) /*!< 0x80000000 */\n#define USB_OTG_GRSTCTL_AHBIDL                   USB_OTG_GRSTCTL_AHBIDL_Msk    /*!< AHB master idle */\n\n/********************  Bit definition forUSB_OTG_DIEPMSK register  ********************/\n#define USB_OTG_DIEPMSK_XFRCM_Pos                (0U)\n#define USB_OTG_DIEPMSK_XFRCM_Msk                (0x1UL << USB_OTG_DIEPMSK_XFRCM_Pos) /*!< 0x00000001 */\n#define USB_OTG_DIEPMSK_XFRCM                    USB_OTG_DIEPMSK_XFRCM_Msk     /*!< Transfer completed interrupt mask                 */\n#define USB_OTG_DIEPMSK_EPDM_Pos                 (1U)\n#define USB_OTG_DIEPMSK_EPDM_Msk                 (0x1UL << USB_OTG_DIEPMSK_EPDM_Pos) /*!< 0x00000002 */\n#define USB_OTG_DIEPMSK_EPDM                     USB_OTG_DIEPMSK_EPDM_Msk      /*!< Endpoint disabled interrupt mask                  */\n#define USB_OTG_DIEPMSK_TOM_Pos                  (3U)\n#define USB_OTG_DIEPMSK_TOM_Msk                  (0x1UL << USB_OTG_DIEPMSK_TOM_Pos) /*!< 0x00000008 */\n#define USB_OTG_DIEPMSK_TOM                      USB_OTG_DIEPMSK_TOM_Msk       /*!< Timeout condition mask (nonisochronous endpoints) */\n#define USB_OTG_DIEPMSK_ITTXFEMSK_Pos            (4U)\n#define USB_OTG_DIEPMSK_ITTXFEMSK_Msk            (0x1UL << USB_OTG_DIEPMSK_ITTXFEMSK_Pos) /*!< 0x00000010 */\n#define USB_OTG_DIEPMSK_ITTXFEMSK                USB_OTG_DIEPMSK_ITTXFEMSK_Msk /*!< IN token received when TxFIFO empty mask          */\n#define USB_OTG_DIEPMSK_INEPNMM_Pos              (5U)\n#define USB_OTG_DIEPMSK_INEPNMM_Msk              (0x1UL << USB_OTG_DIEPMSK_INEPNMM_Pos) /*!< 0x00000020 */\n#define USB_OTG_DIEPMSK_INEPNMM                  USB_OTG_DIEPMSK_INEPNMM_Msk   /*!< IN token received with EP mismatch mask           */\n#define USB_OTG_DIEPMSK_INEPNEM_Pos              (6U)\n#define USB_OTG_DIEPMSK_INEPNEM_Msk              (0x1UL << USB_OTG_DIEPMSK_INEPNEM_Pos) /*!< 0x00000040 */\n#define USB_OTG_DIEPMSK_INEPNEM                  USB_OTG_DIEPMSK_INEPNEM_Msk   /*!< IN endpoint NAK effective mask                    */\n#define USB_OTG_DIEPMSK_TXFURM_Pos               (8U)\n#define USB_OTG_DIEPMSK_TXFURM_Msk               (0x1UL << USB_OTG_DIEPMSK_TXFURM_Pos) /*!< 0x00000100 */\n#define USB_OTG_DIEPMSK_TXFURM                   USB_OTG_DIEPMSK_TXFURM_Msk    /*!< FIFO underrun mask                                */\n#define USB_OTG_DIEPMSK_BIM_Pos                  (9U)\n#define USB_OTG_DIEPMSK_BIM_Msk                  (0x1UL << USB_OTG_DIEPMSK_BIM_Pos) /*!< 0x00000200 */\n#define USB_OTG_DIEPMSK_BIM                      USB_OTG_DIEPMSK_BIM_Msk       /*!< BNA interrupt mask                                */\n\n/********************  Bit definition forUSB_OTG_HPTXSTS register  ********************/\n#define USB_OTG_HPTXSTS_PTXFSAVL_Pos             (0U)\n#define USB_OTG_HPTXSTS_PTXFSAVL_Msk             (0xFFFFUL << USB_OTG_HPTXSTS_PTXFSAVL_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_HPTXSTS_PTXFSAVL                 USB_OTG_HPTXSTS_PTXFSAVL_Msk  /*!< Periodic transmit data FIFO space available     */\n\n#define USB_OTG_HPTXSTS_PTXQSAV_Pos              (16U)\n#define USB_OTG_HPTXSTS_PTXQSAV_Msk              (0xFFUL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00FF0000 */\n#define USB_OTG_HPTXSTS_PTXQSAV                  USB_OTG_HPTXSTS_PTXQSAV_Msk   /*!< Periodic transmit request queue space available */\n#define USB_OTG_HPTXSTS_PTXQSAV_0                (0x01UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00010000 */\n#define USB_OTG_HPTXSTS_PTXQSAV_1                (0x02UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00020000 */\n#define USB_OTG_HPTXSTS_PTXQSAV_2                (0x04UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00040000 */\n#define USB_OTG_HPTXSTS_PTXQSAV_3                (0x08UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00080000 */\n#define USB_OTG_HPTXSTS_PTXQSAV_4                (0x10UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00100000 */\n#define USB_OTG_HPTXSTS_PTXQSAV_5                (0x20UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00200000 */\n#define USB_OTG_HPTXSTS_PTXQSAV_6                (0x40UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00400000 */\n#define USB_OTG_HPTXSTS_PTXQSAV_7                (0x80UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00800000 */\n\n#define USB_OTG_HPTXSTS_PTXQTOP_Pos              (24U)\n#define USB_OTG_HPTXSTS_PTXQTOP_Msk              (0xFFUL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0xFF000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP                  USB_OTG_HPTXSTS_PTXQTOP_Msk   /*!< Top of the periodic transmit request queue */\n#define USB_OTG_HPTXSTS_PTXQTOP_0                (0x01UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x01000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP_1                (0x02UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x02000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP_2                (0x04UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x04000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP_3                (0x08UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x08000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP_4                (0x10UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x10000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP_5                (0x20UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x20000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP_6                (0x40UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x40000000 */\n#define USB_OTG_HPTXSTS_PTXQTOP_7                (0x80UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x80000000 */\n\n/********************  Bit definition forUSB_OTG_HAINT register  ********************/\n#define USB_OTG_HAINT_HAINT_Pos                  (0U)\n#define USB_OTG_HAINT_HAINT_Msk                  (0xFFFFUL << USB_OTG_HAINT_HAINT_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_HAINT_HAINT                      USB_OTG_HAINT_HAINT_Msk       /*!< Channel interrupts */\n\n/********************  Bit definition forUSB_OTG_DOEPMSK register  ********************/\n#define USB_OTG_DOEPMSK_XFRCM_Pos                (0U)\n#define USB_OTG_DOEPMSK_XFRCM_Msk                (0x1UL << USB_OTG_DOEPMSK_XFRCM_Pos) /*!< 0x00000001 */\n#define USB_OTG_DOEPMSK_XFRCM                    USB_OTG_DOEPMSK_XFRCM_Msk     /*!< Transfer completed interrupt mask */\n#define USB_OTG_DOEPMSK_EPDM_Pos                 (1U)\n#define USB_OTG_DOEPMSK_EPDM_Msk                 (0x1UL << USB_OTG_DOEPMSK_EPDM_Pos) /*!< 0x00000002 */\n#define USB_OTG_DOEPMSK_EPDM                     USB_OTG_DOEPMSK_EPDM_Msk      /*!< Endpoint disabled interrupt mask               */\n#define USB_OTG_DOEPMSK_AHBERRM_Pos              (2U)\n#define USB_OTG_DOEPMSK_AHBERRM_Msk              (0x1UL << USB_OTG_DOEPMSK_AHBERRM_Pos) /*!< 0x00000004 */\n#define USB_OTG_DOEPMSK_AHBERRM                  USB_OTG_DOEPMSK_AHBERRM_Msk      /*!< OUT transaction AHB Error interrupt mask               */\n#define USB_OTG_DOEPMSK_STUPM_Pos                (3U)\n#define USB_OTG_DOEPMSK_STUPM_Msk                (0x1UL << USB_OTG_DOEPMSK_STUPM_Pos) /*!< 0x00000008 */\n#define USB_OTG_DOEPMSK_STUPM                    USB_OTG_DOEPMSK_STUPM_Msk     /*!< SETUP phase done mask                          */\n#define USB_OTG_DOEPMSK_OTEPDM_Pos               (4U)\n#define USB_OTG_DOEPMSK_OTEPDM_Msk               (0x1UL << USB_OTG_DOEPMSK_OTEPDM_Pos) /*!< 0x00000010 */\n#define USB_OTG_DOEPMSK_OTEPDM                   USB_OTG_DOEPMSK_OTEPDM_Msk    /*!< OUT token received when endpoint disabled mask */\n#define USB_OTG_DOEPMSK_OTEPSPRM_Pos             (5U)\n#define USB_OTG_DOEPMSK_OTEPSPRM_Msk             (0x1UL << USB_OTG_DOEPMSK_OTEPSPRM_Pos) /*!< 0x00000020 */\n#define USB_OTG_DOEPMSK_OTEPSPRM                 USB_OTG_DOEPMSK_OTEPSPRM_Msk  /*!< Status Phase Received mask                     */\n#define USB_OTG_DOEPMSK_B2BSTUP_Pos              (6U)\n#define USB_OTG_DOEPMSK_B2BSTUP_Msk              (0x1UL << USB_OTG_DOEPMSK_B2BSTUP_Pos) /*!< 0x00000040 */\n#define USB_OTG_DOEPMSK_B2BSTUP                  USB_OTG_DOEPMSK_B2BSTUP_Msk   /*!< Back-to-back SETUP packets received mask       */\n#define USB_OTG_DOEPMSK_OPEM_Pos                 (8U)\n#define USB_OTG_DOEPMSK_OPEM_Msk                 (0x1UL << USB_OTG_DOEPMSK_OPEM_Pos) /*!< 0x00000100 */\n#define USB_OTG_DOEPMSK_OPEM                     USB_OTG_DOEPMSK_OPEM_Msk      /*!< OUT packet error mask                          */\n#define USB_OTG_DOEPMSK_BOIM_Pos                 (9U)\n#define USB_OTG_DOEPMSK_BOIM_Msk                 (0x1UL << USB_OTG_DOEPMSK_BOIM_Pos) /*!< 0x00000200 */\n#define USB_OTG_DOEPMSK_BOIM                     USB_OTG_DOEPMSK_BOIM_Msk      /*!< BNA interrupt mask                             */\n#define USB_OTG_DOEPMSK_BERRM_Pos                (12U)\n#define USB_OTG_DOEPMSK_BERRM_Msk                (0x1UL << USB_OTG_DOEPMSK_BERRM_Pos) /*!< 0x00001000 */\n#define USB_OTG_DOEPMSK_BERRM                    USB_OTG_DOEPMSK_BERRM_Msk      /*!< Babble error interrupt mask               */\n#define USB_OTG_DOEPMSK_NAKM_Pos                 (13U)\n#define USB_OTG_DOEPMSK_NAKM_Msk                 (0x1UL << USB_OTG_DOEPMSK_NAKM_Pos) /*!< 0x00002000 */\n#define USB_OTG_DOEPMSK_NAKM                     USB_OTG_DOEPMSK_NAKM_Msk      /*!< OUT Packet NAK interrupt mask               */\n#define USB_OTG_DOEPMSK_NYETM_Pos                (14U)\n#define USB_OTG_DOEPMSK_NYETM_Msk                (0x1UL << USB_OTG_DOEPMSK_NYETM_Pos) /*!< 0x00004000 */\n#define USB_OTG_DOEPMSK_NYETM                    USB_OTG_DOEPMSK_NYETM_Msk      /*!< NYET interrupt mask                */\n\n/********************  Bit definition forUSB_OTG_GINTSTS register  ********************/\n#define USB_OTG_GINTSTS_CMOD_Pos                 (0U)\n#define USB_OTG_GINTSTS_CMOD_Msk                 (0x1UL << USB_OTG_GINTSTS_CMOD_Pos) /*!< 0x00000001 */\n#define USB_OTG_GINTSTS_CMOD                     USB_OTG_GINTSTS_CMOD_Msk      /*!< Current mode of operation                      */\n#define USB_OTG_GINTSTS_MMIS_Pos                 (1U)\n#define USB_OTG_GINTSTS_MMIS_Msk                 (0x1UL << USB_OTG_GINTSTS_MMIS_Pos) /*!< 0x00000002 */\n#define USB_OTG_GINTSTS_MMIS                     USB_OTG_GINTSTS_MMIS_Msk      /*!< Mode mismatch interrupt                        */\n#define USB_OTG_GINTSTS_OTGINT_Pos               (2U)\n#define USB_OTG_GINTSTS_OTGINT_Msk               (0x1UL << USB_OTG_GINTSTS_OTGINT_Pos) /*!< 0x00000004 */\n#define USB_OTG_GINTSTS_OTGINT                   USB_OTG_GINTSTS_OTGINT_Msk    /*!< OTG interrupt                                  */\n#define USB_OTG_GINTSTS_SOF_Pos                  (3U)\n#define USB_OTG_GINTSTS_SOF_Msk                  (0x1UL << USB_OTG_GINTSTS_SOF_Pos) /*!< 0x00000008 */\n#define USB_OTG_GINTSTS_SOF                      USB_OTG_GINTSTS_SOF_Msk       /*!< Start of frame                                 */\n#define USB_OTG_GINTSTS_RXFLVL_Pos               (4U)\n#define USB_OTG_GINTSTS_RXFLVL_Msk               (0x1UL << USB_OTG_GINTSTS_RXFLVL_Pos) /*!< 0x00000010 */\n#define USB_OTG_GINTSTS_RXFLVL                   USB_OTG_GINTSTS_RXFLVL_Msk    /*!< RxFIFO nonempty                                */\n#define USB_OTG_GINTSTS_NPTXFE_Pos               (5U)\n#define USB_OTG_GINTSTS_NPTXFE_Msk               (0x1UL << USB_OTG_GINTSTS_NPTXFE_Pos) /*!< 0x00000020 */\n#define USB_OTG_GINTSTS_NPTXFE                   USB_OTG_GINTSTS_NPTXFE_Msk    /*!< Nonperiodic TxFIFO empty                       */\n#define USB_OTG_GINTSTS_GINAKEFF_Pos             (6U)\n#define USB_OTG_GINTSTS_GINAKEFF_Msk             (0x1UL << USB_OTG_GINTSTS_GINAKEFF_Pos) /*!< 0x00000040 */\n#define USB_OTG_GINTSTS_GINAKEFF                 USB_OTG_GINTSTS_GINAKEFF_Msk  /*!< Global IN nonperiodic NAK effective            */\n#define USB_OTG_GINTSTS_BOUTNAKEFF_Pos           (7U)\n#define USB_OTG_GINTSTS_BOUTNAKEFF_Msk           (0x1UL << USB_OTG_GINTSTS_BOUTNAKEFF_Pos) /*!< 0x00000080 */\n#define USB_OTG_GINTSTS_BOUTNAKEFF               USB_OTG_GINTSTS_BOUTNAKEFF_Msk /*!< Global OUT NAK effective                       */\n#define USB_OTG_GINTSTS_ESUSP_Pos                (10U)\n#define USB_OTG_GINTSTS_ESUSP_Msk                (0x1UL << USB_OTG_GINTSTS_ESUSP_Pos) /*!< 0x00000400 */\n#define USB_OTG_GINTSTS_ESUSP                    USB_OTG_GINTSTS_ESUSP_Msk     /*!< Early suspend                                  */\n#define USB_OTG_GINTSTS_USBSUSP_Pos              (11U)\n#define USB_OTG_GINTSTS_USBSUSP_Msk              (0x1UL << USB_OTG_GINTSTS_USBSUSP_Pos) /*!< 0x00000800 */\n#define USB_OTG_GINTSTS_USBSUSP                  USB_OTG_GINTSTS_USBSUSP_Msk   /*!< USB suspend                                    */\n#define USB_OTG_GINTSTS_USBRST_Pos               (12U)\n#define USB_OTG_GINTSTS_USBRST_Msk               (0x1UL << USB_OTG_GINTSTS_USBRST_Pos) /*!< 0x00001000 */\n#define USB_OTG_GINTSTS_USBRST                   USB_OTG_GINTSTS_USBRST_Msk    /*!< USB reset                                      */\n#define USB_OTG_GINTSTS_ENUMDNE_Pos              (13U)\n#define USB_OTG_GINTSTS_ENUMDNE_Msk              (0x1UL << USB_OTG_GINTSTS_ENUMDNE_Pos) /*!< 0x00002000 */\n#define USB_OTG_GINTSTS_ENUMDNE                  USB_OTG_GINTSTS_ENUMDNE_Msk   /*!< Enumeration done                               */\n#define USB_OTG_GINTSTS_ISOODRP_Pos              (14U)\n#define USB_OTG_GINTSTS_ISOODRP_Msk              (0x1UL << USB_OTG_GINTSTS_ISOODRP_Pos) /*!< 0x00004000 */\n#define USB_OTG_GINTSTS_ISOODRP                  USB_OTG_GINTSTS_ISOODRP_Msk   /*!< Isochronous OUT packet dropped interrupt       */\n#define USB_OTG_GINTSTS_EOPF_Pos                 (15U)\n#define USB_OTG_GINTSTS_EOPF_Msk                 (0x1UL << USB_OTG_GINTSTS_EOPF_Pos) /*!< 0x00008000 */\n#define USB_OTG_GINTSTS_EOPF                     USB_OTG_GINTSTS_EOPF_Msk      /*!< End of periodic frame interrupt                */\n#define USB_OTG_GINTSTS_IEPINT_Pos               (18U)\n#define USB_OTG_GINTSTS_IEPINT_Msk               (0x1UL << USB_OTG_GINTSTS_IEPINT_Pos) /*!< 0x00040000 */\n#define USB_OTG_GINTSTS_IEPINT                   USB_OTG_GINTSTS_IEPINT_Msk    /*!< IN endpoint interrupt                          */\n#define USB_OTG_GINTSTS_OEPINT_Pos               (19U)\n#define USB_OTG_GINTSTS_OEPINT_Msk               (0x1UL << USB_OTG_GINTSTS_OEPINT_Pos) /*!< 0x00080000 */\n#define USB_OTG_GINTSTS_OEPINT                   USB_OTG_GINTSTS_OEPINT_Msk    /*!< OUT endpoint interrupt                         */\n#define USB_OTG_GINTSTS_IISOIXFR_Pos             (20U)\n#define USB_OTG_GINTSTS_IISOIXFR_Msk             (0x1UL << USB_OTG_GINTSTS_IISOIXFR_Pos) /*!< 0x00100000 */\n#define USB_OTG_GINTSTS_IISOIXFR                 USB_OTG_GINTSTS_IISOIXFR_Msk  /*!< Incomplete isochronous IN transfer             */\n#define USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Pos    (21U)\n#define USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Msk    (0x1UL << USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Pos) /*!< 0x00200000 */\n#define USB_OTG_GINTSTS_PXFR_INCOMPISOOUT        USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Msk /*!< Incomplete periodic transfer                   */\n#define USB_OTG_GINTSTS_DATAFSUSP_Pos            (22U)\n#define USB_OTG_GINTSTS_DATAFSUSP_Msk            (0x1UL << USB_OTG_GINTSTS_DATAFSUSP_Pos) /*!< 0x00400000 */\n#define USB_OTG_GINTSTS_DATAFSUSP                USB_OTG_GINTSTS_DATAFSUSP_Msk /*!< Data fetch suspended                           */\n#define USB_OTG_GINTSTS_RSTDET_Pos               (23U)\n#define USB_OTG_GINTSTS_RSTDET_Msk               (0x1UL << USB_OTG_GINTSTS_RSTDET_Pos) /*!< 0x00800000 */\n#define USB_OTG_GINTSTS_RSTDET                   USB_OTG_GINTSTS_RSTDET_Msk    /*!< Reset detected interrupt                       */\n#define USB_OTG_GINTSTS_HPRTINT_Pos              (24U)\n#define USB_OTG_GINTSTS_HPRTINT_Msk              (0x1UL << USB_OTG_GINTSTS_HPRTINT_Pos) /*!< 0x01000000 */\n#define USB_OTG_GINTSTS_HPRTINT                  USB_OTG_GINTSTS_HPRTINT_Msk   /*!< Host port interrupt                            */\n#define USB_OTG_GINTSTS_HCINT_Pos                (25U)\n#define USB_OTG_GINTSTS_HCINT_Msk                (0x1UL << USB_OTG_GINTSTS_HCINT_Pos) /*!< 0x02000000 */\n#define USB_OTG_GINTSTS_HCINT                    USB_OTG_GINTSTS_HCINT_Msk     /*!< Host channels interrupt                        */\n#define USB_OTG_GINTSTS_PTXFE_Pos                (26U)\n#define USB_OTG_GINTSTS_PTXFE_Msk                (0x1UL << USB_OTG_GINTSTS_PTXFE_Pos) /*!< 0x04000000 */\n#define USB_OTG_GINTSTS_PTXFE                    USB_OTG_GINTSTS_PTXFE_Msk     /*!< Periodic TxFIFO empty                          */\n#define USB_OTG_GINTSTS_LPMINT_Pos               (27U)\n#define USB_OTG_GINTSTS_LPMINT_Msk               (0x1UL << USB_OTG_GINTSTS_LPMINT_Pos) /*!< 0x08000000 */\n#define USB_OTG_GINTSTS_LPMINT                   USB_OTG_GINTSTS_LPMINT_Msk    /*!< LPM interrupt                                  */\n#define USB_OTG_GINTSTS_CIDSCHG_Pos              (28U)\n#define USB_OTG_GINTSTS_CIDSCHG_Msk              (0x1UL << USB_OTG_GINTSTS_CIDSCHG_Pos) /*!< 0x10000000 */\n#define USB_OTG_GINTSTS_CIDSCHG                  USB_OTG_GINTSTS_CIDSCHG_Msk   /*!< Connector ID status change                     */\n#define USB_OTG_GINTSTS_DISCINT_Pos              (29U)\n#define USB_OTG_GINTSTS_DISCINT_Msk              (0x1UL << USB_OTG_GINTSTS_DISCINT_Pos) /*!< 0x20000000 */\n#define USB_OTG_GINTSTS_DISCINT                  USB_OTG_GINTSTS_DISCINT_Msk   /*!< Disconnect detected interrupt                  */\n#define USB_OTG_GINTSTS_SRQINT_Pos               (30U)\n#define USB_OTG_GINTSTS_SRQINT_Msk               (0x1UL << USB_OTG_GINTSTS_SRQINT_Pos) /*!< 0x40000000 */\n#define USB_OTG_GINTSTS_SRQINT                   USB_OTG_GINTSTS_SRQINT_Msk    /*!< Session request/new session detected interrupt */\n#define USB_OTG_GINTSTS_WKUINT_Pos               (31U)\n#define USB_OTG_GINTSTS_WKUINT_Msk               (0x1UL << USB_OTG_GINTSTS_WKUINT_Pos) /*!< 0x80000000 */\n#define USB_OTG_GINTSTS_WKUINT                   USB_OTG_GINTSTS_WKUINT_Msk    /*!< Resume/remote wakeup detected interrupt        */\n\n/********************  Bit definition forUSB_OTG_GINTMSK register  ********************/\n#define USB_OTG_GINTMSK_MMISM_Pos                (1U)\n#define USB_OTG_GINTMSK_MMISM_Msk                (0x1UL << USB_OTG_GINTMSK_MMISM_Pos) /*!< 0x00000002 */\n#define USB_OTG_GINTMSK_MMISM                    USB_OTG_GINTMSK_MMISM_Msk     /*!< Mode mismatch interrupt mask                        */\n#define USB_OTG_GINTMSK_OTGINT_Pos               (2U)\n#define USB_OTG_GINTMSK_OTGINT_Msk               (0x1UL << USB_OTG_GINTMSK_OTGINT_Pos) /*!< 0x00000004 */\n#define USB_OTG_GINTMSK_OTGINT                   USB_OTG_GINTMSK_OTGINT_Msk    /*!< OTG interrupt mask                                  */\n#define USB_OTG_GINTMSK_SOFM_Pos                 (3U)\n#define USB_OTG_GINTMSK_SOFM_Msk                 (0x1UL << USB_OTG_GINTMSK_SOFM_Pos) /*!< 0x00000008 */\n#define USB_OTG_GINTMSK_SOFM                     USB_OTG_GINTMSK_SOFM_Msk      /*!< Start of frame mask                                 */\n#define USB_OTG_GINTMSK_RXFLVLM_Pos              (4U)\n#define USB_OTG_GINTMSK_RXFLVLM_Msk              (0x1UL << USB_OTG_GINTMSK_RXFLVLM_Pos) /*!< 0x00000010 */\n#define USB_OTG_GINTMSK_RXFLVLM                  USB_OTG_GINTMSK_RXFLVLM_Msk   /*!< Receive FIFO nonempty mask                          */\n#define USB_OTG_GINTMSK_NPTXFEM_Pos              (5U)\n#define USB_OTG_GINTMSK_NPTXFEM_Msk              (0x1UL << USB_OTG_GINTMSK_NPTXFEM_Pos) /*!< 0x00000020 */\n#define USB_OTG_GINTMSK_NPTXFEM                  USB_OTG_GINTMSK_NPTXFEM_Msk   /*!< Nonperiodic TxFIFO empty mask                       */\n#define USB_OTG_GINTMSK_GINAKEFFM_Pos            (6U)\n#define USB_OTG_GINTMSK_GINAKEFFM_Msk            (0x1UL << USB_OTG_GINTMSK_GINAKEFFM_Pos) /*!< 0x00000040 */\n#define USB_OTG_GINTMSK_GINAKEFFM                USB_OTG_GINTMSK_GINAKEFFM_Msk /*!< Global nonperiodic IN NAK effective mask            */\n#define USB_OTG_GINTMSK_GONAKEFFM_Pos            (7U)\n#define USB_OTG_GINTMSK_GONAKEFFM_Msk            (0x1UL << USB_OTG_GINTMSK_GONAKEFFM_Pos) /*!< 0x00000080 */\n#define USB_OTG_GINTMSK_GONAKEFFM                USB_OTG_GINTMSK_GONAKEFFM_Msk /*!< Global OUT NAK effective mask                       */\n#define USB_OTG_GINTMSK_ESUSPM_Pos               (10U)\n#define USB_OTG_GINTMSK_ESUSPM_Msk               (0x1UL << USB_OTG_GINTMSK_ESUSPM_Pos) /*!< 0x00000400 */\n#define USB_OTG_GINTMSK_ESUSPM                   USB_OTG_GINTMSK_ESUSPM_Msk    /*!< Early suspend mask                                  */\n#define USB_OTG_GINTMSK_USBSUSPM_Pos             (11U)\n#define USB_OTG_GINTMSK_USBSUSPM_Msk             (0x1UL << USB_OTG_GINTMSK_USBSUSPM_Pos) /*!< 0x00000800 */\n#define USB_OTG_GINTMSK_USBSUSPM                 USB_OTG_GINTMSK_USBSUSPM_Msk  /*!< USB suspend mask                                    */\n#define USB_OTG_GINTMSK_USBRST_Pos               (12U)\n#define USB_OTG_GINTMSK_USBRST_Msk               (0x1UL << USB_OTG_GINTMSK_USBRST_Pos) /*!< 0x00001000 */\n#define USB_OTG_GINTMSK_USBRST                   USB_OTG_GINTMSK_USBRST_Msk    /*!< USB reset mask                                      */\n#define USB_OTG_GINTMSK_ENUMDNEM_Pos             (13U)\n#define USB_OTG_GINTMSK_ENUMDNEM_Msk             (0x1UL << USB_OTG_GINTMSK_ENUMDNEM_Pos) /*!< 0x00002000 */\n#define USB_OTG_GINTMSK_ENUMDNEM                 USB_OTG_GINTMSK_ENUMDNEM_Msk  /*!< Enumeration done mask                               */\n#define USB_OTG_GINTMSK_ISOODRPM_Pos             (14U)\n#define USB_OTG_GINTMSK_ISOODRPM_Msk             (0x1UL << USB_OTG_GINTMSK_ISOODRPM_Pos) /*!< 0x00004000 */\n#define USB_OTG_GINTMSK_ISOODRPM                 USB_OTG_GINTMSK_ISOODRPM_Msk  /*!< Isochronous OUT packet dropped interrupt mask       */\n#define USB_OTG_GINTMSK_EOPFM_Pos                (15U)\n#define USB_OTG_GINTMSK_EOPFM_Msk                (0x1UL << USB_OTG_GINTMSK_EOPFM_Pos) /*!< 0x00008000 */\n#define USB_OTG_GINTMSK_EOPFM                    USB_OTG_GINTMSK_EOPFM_Msk     /*!< End of periodic frame interrupt mask                */\n#define USB_OTG_GINTMSK_EPMISM_Pos               (17U)\n#define USB_OTG_GINTMSK_EPMISM_Msk               (0x1UL << USB_OTG_GINTMSK_EPMISM_Pos) /*!< 0x00020000 */\n#define USB_OTG_GINTMSK_EPMISM                   USB_OTG_GINTMSK_EPMISM_Msk    /*!< Endpoint mismatch interrupt mask                    */\n#define USB_OTG_GINTMSK_IEPINT_Pos               (18U)\n#define USB_OTG_GINTMSK_IEPINT_Msk               (0x1UL << USB_OTG_GINTMSK_IEPINT_Pos) /*!< 0x00040000 */\n#define USB_OTG_GINTMSK_IEPINT                   USB_OTG_GINTMSK_IEPINT_Msk    /*!< IN endpoints interrupt mask                         */\n#define USB_OTG_GINTMSK_OEPINT_Pos               (19U)\n#define USB_OTG_GINTMSK_OEPINT_Msk               (0x1UL << USB_OTG_GINTMSK_OEPINT_Pos) /*!< 0x00080000 */\n#define USB_OTG_GINTMSK_OEPINT                   USB_OTG_GINTMSK_OEPINT_Msk    /*!< OUT endpoints interrupt mask                        */\n#define USB_OTG_GINTMSK_IISOIXFRM_Pos            (20U)\n#define USB_OTG_GINTMSK_IISOIXFRM_Msk            (0x1UL << USB_OTG_GINTMSK_IISOIXFRM_Pos) /*!< 0x00100000 */\n#define USB_OTG_GINTMSK_IISOIXFRM                USB_OTG_GINTMSK_IISOIXFRM_Msk /*!< Incomplete isochronous IN transfer mask             */\n#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Pos      (21U)\n#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Msk      (0x1UL << USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Pos) /*!< 0x00200000 */\n#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM          USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Msk /*!< Incomplete periodic transfer mask                   */\n#define USB_OTG_GINTMSK_FSUSPM_Pos               (22U)\n#define USB_OTG_GINTMSK_FSUSPM_Msk               (0x1UL << USB_OTG_GINTMSK_FSUSPM_Pos) /*!< 0x00400000 */\n#define USB_OTG_GINTMSK_FSUSPM                   USB_OTG_GINTMSK_FSUSPM_Msk    /*!< Data fetch suspended mask                           */\n#define USB_OTG_GINTMSK_RSTDEM_Pos               (23U)\n#define USB_OTG_GINTMSK_RSTDEM_Msk               (0x1UL << USB_OTG_GINTMSK_RSTDEM_Pos) /*!< 0x00800000 */\n#define USB_OTG_GINTMSK_RSTDEM                   USB_OTG_GINTMSK_RSTDEM_Msk    /*!< Reset detected interrupt mask                      */\n#define USB_OTG_GINTMSK_PRTIM_Pos                (24U)\n#define USB_OTG_GINTMSK_PRTIM_Msk                (0x1UL << USB_OTG_GINTMSK_PRTIM_Pos) /*!< 0x01000000 */\n#define USB_OTG_GINTMSK_PRTIM                    USB_OTG_GINTMSK_PRTIM_Msk     /*!< Host port interrupt mask                            */\n#define USB_OTG_GINTMSK_HCIM_Pos                 (25U)\n#define USB_OTG_GINTMSK_HCIM_Msk                 (0x1UL << USB_OTG_GINTMSK_HCIM_Pos) /*!< 0x02000000 */\n#define USB_OTG_GINTMSK_HCIM                     USB_OTG_GINTMSK_HCIM_Msk      /*!< Host channels interrupt mask                        */\n#define USB_OTG_GINTMSK_PTXFEM_Pos               (26U)\n#define USB_OTG_GINTMSK_PTXFEM_Msk               (0x1UL << USB_OTG_GINTMSK_PTXFEM_Pos) /*!< 0x04000000 */\n#define USB_OTG_GINTMSK_PTXFEM                   USB_OTG_GINTMSK_PTXFEM_Msk    /*!< Periodic TxFIFO empty mask                          */\n#define USB_OTG_GINTMSK_LPMINTM_Pos              (27U)\n#define USB_OTG_GINTMSK_LPMINTM_Msk              (0x1UL << USB_OTG_GINTMSK_LPMINTM_Pos) /*!< 0x08000000 */\n#define USB_OTG_GINTMSK_LPMINTM                  USB_OTG_GINTMSK_LPMINTM_Msk   /*!< LPM interrupt Mask                                  */\n#define USB_OTG_GINTMSK_CIDSCHGM_Pos             (28U)\n#define USB_OTG_GINTMSK_CIDSCHGM_Msk             (0x1UL << USB_OTG_GINTMSK_CIDSCHGM_Pos) /*!< 0x10000000 */\n#define USB_OTG_GINTMSK_CIDSCHGM                 USB_OTG_GINTMSK_CIDSCHGM_Msk  /*!< Connector ID status change mask                     */\n#define USB_OTG_GINTMSK_DISCINT_Pos              (29U)\n#define USB_OTG_GINTMSK_DISCINT_Msk              (0x1UL << USB_OTG_GINTMSK_DISCINT_Pos) /*!< 0x20000000 */\n#define USB_OTG_GINTMSK_DISCINT                  USB_OTG_GINTMSK_DISCINT_Msk   /*!< Disconnect detected interrupt mask                  */\n#define USB_OTG_GINTMSK_SRQIM_Pos                (30U)\n#define USB_OTG_GINTMSK_SRQIM_Msk                (0x1UL << USB_OTG_GINTMSK_SRQIM_Pos) /*!< 0x40000000 */\n#define USB_OTG_GINTMSK_SRQIM                    USB_OTG_GINTMSK_SRQIM_Msk     /*!< Session request/new session detected interrupt mask */\n#define USB_OTG_GINTMSK_WUIM_Pos                 (31U)\n#define USB_OTG_GINTMSK_WUIM_Msk                 (0x1UL << USB_OTG_GINTMSK_WUIM_Pos) /*!< 0x80000000 */\n#define USB_OTG_GINTMSK_WUIM                     USB_OTG_GINTMSK_WUIM_Msk      /*!< Resume/remote wakeup detected interrupt mask        */\n\n/********************  Bit definition forUSB_OTG_DAINT register  ********************/\n#define USB_OTG_DAINT_IEPINT_Pos                 (0U)\n#define USB_OTG_DAINT_IEPINT_Msk                 (0xFFFFUL << USB_OTG_DAINT_IEPINT_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_DAINT_IEPINT                     USB_OTG_DAINT_IEPINT_Msk      /*!< IN endpoint interrupt bits  */\n#define USB_OTG_DAINT_OEPINT_Pos                 (16U)\n#define USB_OTG_DAINT_OEPINT_Msk                 (0xFFFFUL << USB_OTG_DAINT_OEPINT_Pos) /*!< 0xFFFF0000 */\n#define USB_OTG_DAINT_OEPINT                     USB_OTG_DAINT_OEPINT_Msk      /*!< OUT endpoint interrupt bits */\n\n/********************  Bit definition forUSB_OTG_HAINTMSK register  ********************/\n#define USB_OTG_HAINTMSK_HAINTM_Pos              (0U)\n#define USB_OTG_HAINTMSK_HAINTM_Msk              (0xFFFFUL << USB_OTG_HAINTMSK_HAINTM_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_HAINTMSK_HAINTM                  USB_OTG_HAINTMSK_HAINTM_Msk   /*!< Channel interrupt mask */\n\n/********************  Bit definition for USB_OTG_GRXSTSP register  ********************/\n#define USB_OTG_GRXSTSP_EPNUM_Pos                (0U)\n#define USB_OTG_GRXSTSP_EPNUM_Msk                (0xFUL << USB_OTG_GRXSTSP_EPNUM_Pos) /*!< 0x0000000F */\n#define USB_OTG_GRXSTSP_EPNUM                    USB_OTG_GRXSTSP_EPNUM_Msk     /*!< IN EP interrupt mask bits  */\n#define USB_OTG_GRXSTSP_BCNT_Pos                 (4U)\n#define USB_OTG_GRXSTSP_BCNT_Msk                 (0x7FFUL << USB_OTG_GRXSTSP_BCNT_Pos) /*!< 0x00007FF0 */\n#define USB_OTG_GRXSTSP_BCNT                     USB_OTG_GRXSTSP_BCNT_Msk      /*!< OUT EP interrupt mask bits */\n#define USB_OTG_GRXSTSP_DPID_Pos                 (15U)\n#define USB_OTG_GRXSTSP_DPID_Msk                 (0x3UL << USB_OTG_GRXSTSP_DPID_Pos) /*!< 0x00018000 */\n#define USB_OTG_GRXSTSP_DPID                     USB_OTG_GRXSTSP_DPID_Msk      /*!< OUT EP interrupt mask bits */\n#define USB_OTG_GRXSTSP_PKTSTS_Pos               (17U)\n#define USB_OTG_GRXSTSP_PKTSTS_Msk               (0xFUL << USB_OTG_GRXSTSP_PKTSTS_Pos) /*!< 0x001E0000 */\n#define USB_OTG_GRXSTSP_PKTSTS                   USB_OTG_GRXSTSP_PKTSTS_Msk    /*!< OUT EP interrupt mask bits */\n\n/********************  Bit definition forUSB_OTG_DAINTMSK register  ********************/\n#define USB_OTG_DAINTMSK_IEPM_Pos                (0U)\n#define USB_OTG_DAINTMSK_IEPM_Msk                (0xFFFFUL << USB_OTG_DAINTMSK_IEPM_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_DAINTMSK_IEPM                    USB_OTG_DAINTMSK_IEPM_Msk     /*!< IN EP interrupt mask bits */\n#define USB_OTG_DAINTMSK_OEPM_Pos                (16U)\n#define USB_OTG_DAINTMSK_OEPM_Msk                (0xFFFFUL << USB_OTG_DAINTMSK_OEPM_Pos) /*!< 0xFFFF0000 */\n#define USB_OTG_DAINTMSK_OEPM                    USB_OTG_DAINTMSK_OEPM_Msk     /*!< OUT EP interrupt mask bits */\n\n/********************  Bit definition for OTG register  ********************/\n\n#define USB_OTG_CHNUM_Pos                        (0U)\n#define USB_OTG_CHNUM_Msk                        (0xFUL << USB_OTG_CHNUM_Pos)  /*!< 0x0000000F */\n#define USB_OTG_CHNUM                            USB_OTG_CHNUM_Msk             /*!< Channel number */\n#define USB_OTG_CHNUM_0                          (0x1UL << USB_OTG_CHNUM_Pos)   /*!< 0x00000001 */\n#define USB_OTG_CHNUM_1                          (0x2UL << USB_OTG_CHNUM_Pos)   /*!< 0x00000002 */\n#define USB_OTG_CHNUM_2                          (0x4UL << USB_OTG_CHNUM_Pos)   /*!< 0x00000004 */\n#define USB_OTG_CHNUM_3                          (0x8UL << USB_OTG_CHNUM_Pos)   /*!< 0x00000008 */\n#define USB_OTG_BCNT_Pos                         (4U)\n#define USB_OTG_BCNT_Msk                         (0x7FFUL << USB_OTG_BCNT_Pos) /*!< 0x00007FF0 */\n#define USB_OTG_BCNT                             USB_OTG_BCNT_Msk              /*!< Byte count */\n\n#define USB_OTG_DPID_Pos                         (15U)\n#define USB_OTG_DPID_Msk                         (0x3UL << USB_OTG_DPID_Pos)   /*!< 0x00018000 */\n#define USB_OTG_DPID                             USB_OTG_DPID_Msk              /*!< Data PID */\n#define USB_OTG_DPID_0                           (0x1UL << USB_OTG_DPID_Pos)    /*!< 0x00008000 */\n#define USB_OTG_DPID_1                           (0x2UL << USB_OTG_DPID_Pos)    /*!< 0x00010000 */\n\n#define USB_OTG_PKTSTS_Pos                       (17U)\n#define USB_OTG_PKTSTS_Msk                       (0xFUL << USB_OTG_PKTSTS_Pos) /*!< 0x001E0000 */\n#define USB_OTG_PKTSTS                           USB_OTG_PKTSTS_Msk            /*!< Packet status */\n#define USB_OTG_PKTSTS_0                         (0x1UL << USB_OTG_PKTSTS_Pos)  /*!< 0x00020000 */\n#define USB_OTG_PKTSTS_1                         (0x2UL << USB_OTG_PKTSTS_Pos)  /*!< 0x00040000 */\n#define USB_OTG_PKTSTS_2                         (0x4UL << USB_OTG_PKTSTS_Pos)  /*!< 0x00080000 */\n#define USB_OTG_PKTSTS_3                         (0x8UL << USB_OTG_PKTSTS_Pos)  /*!< 0x00100000 */\n\n#define USB_OTG_EPNUM_Pos                        (0U)\n#define USB_OTG_EPNUM_Msk                        (0xFUL << USB_OTG_EPNUM_Pos)  /*!< 0x0000000F */\n#define USB_OTG_EPNUM                            USB_OTG_EPNUM_Msk             /*!< Endpoint number */\n#define USB_OTG_EPNUM_0                          (0x1UL << USB_OTG_EPNUM_Pos)   /*!< 0x00000001 */\n#define USB_OTG_EPNUM_1                          (0x2UL << USB_OTG_EPNUM_Pos)   /*!< 0x00000002 */\n#define USB_OTG_EPNUM_2                          (0x4UL << USB_OTG_EPNUM_Pos)   /*!< 0x00000004 */\n#define USB_OTG_EPNUM_3                          (0x8UL << USB_OTG_EPNUM_Pos)   /*!< 0x00000008 */\n\n#define USB_OTG_FRMNUM_Pos                       (21U)\n#define USB_OTG_FRMNUM_Msk                       (0xFUL << USB_OTG_FRMNUM_Pos) /*!< 0x01E00000 */\n#define USB_OTG_FRMNUM                           USB_OTG_FRMNUM_Msk            /*!< Frame number */\n#define USB_OTG_FRMNUM_0                         (0x1UL << USB_OTG_FRMNUM_Pos)  /*!< 0x00200000 */\n#define USB_OTG_FRMNUM_1                         (0x2UL << USB_OTG_FRMNUM_Pos)  /*!< 0x00400000 */\n#define USB_OTG_FRMNUM_2                         (0x4UL << USB_OTG_FRMNUM_Pos)  /*!< 0x00800000 */\n#define USB_OTG_FRMNUM_3                         (0x8UL << USB_OTG_FRMNUM_Pos)  /*!< 0x01000000 */\n\n/********************  Bit definition forUSB_OTG_GRXFSIZ register  ********************/\n#define USB_OTG_GRXFSIZ_RXFD_Pos                 (0U)\n#define USB_OTG_GRXFSIZ_RXFD_Msk                 (0xFFFFUL << USB_OTG_GRXFSIZ_RXFD_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_GRXFSIZ_RXFD                     USB_OTG_GRXFSIZ_RXFD_Msk      /*!< RxFIFO depth */\n\n/********************  Bit definition forUSB_OTG_DVBUSDIS register  ********************/\n#define USB_OTG_DVBUSDIS_VBUSDT_Pos              (0U)\n#define USB_OTG_DVBUSDIS_VBUSDT_Msk              (0xFFFFUL << USB_OTG_DVBUSDIS_VBUSDT_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_DVBUSDIS_VBUSDT                  USB_OTG_DVBUSDIS_VBUSDT_Msk   /*!< Device VBUS discharge time */\n\n/********************  Bit definition for OTG register  ********************/\n#define USB_OTG_NPTXFSA_Pos                      (0U)\n#define USB_OTG_NPTXFSA_Msk                      (0xFFFFUL << USB_OTG_NPTXFSA_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_NPTXFSA                          USB_OTG_NPTXFSA_Msk           /*!< Nonperiodic transmit RAM start address */\n#define USB_OTG_NPTXFD_Pos                       (16U)\n#define USB_OTG_NPTXFD_Msk                       (0xFFFFUL << USB_OTG_NPTXFD_Pos) /*!< 0xFFFF0000 */\n#define USB_OTG_NPTXFD                           USB_OTG_NPTXFD_Msk            /*!< Nonperiodic TxFIFO depth               */\n#define USB_OTG_TX0FSA_Pos                       (0U)\n#define USB_OTG_TX0FSA_Msk                       (0xFFFFUL << USB_OTG_TX0FSA_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_TX0FSA                           USB_OTG_TX0FSA_Msk            /*!< Endpoint 0 transmit RAM start address  */\n#define USB_OTG_TX0FD_Pos                        (16U)\n#define USB_OTG_TX0FD_Msk                        (0xFFFFUL << USB_OTG_TX0FD_Pos) /*!< 0xFFFF0000 */\n#define USB_OTG_TX0FD                            USB_OTG_TX0FD_Msk             /*!< Endpoint 0 TxFIFO depth                */\n\n/********************  Bit definition forUSB_OTG_DVBUSPULSE register  ********************/\n#define USB_OTG_DVBUSPULSE_DVBUSP_Pos            (0U)\n#define USB_OTG_DVBUSPULSE_DVBUSP_Msk            (0xFFFUL << USB_OTG_DVBUSPULSE_DVBUSP_Pos) /*!< 0x00000FFF */\n#define USB_OTG_DVBUSPULSE_DVBUSP                USB_OTG_DVBUSPULSE_DVBUSP_Msk /*!< Device VBUS pulsing time */\n\n/********************  Bit definition forUSB_OTG_GNPTXSTS register  ********************/\n#define USB_OTG_GNPTXSTS_NPTXFSAV_Pos            (0U)\n#define USB_OTG_GNPTXSTS_NPTXFSAV_Msk            (0xFFFFUL << USB_OTG_GNPTXSTS_NPTXFSAV_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_GNPTXSTS_NPTXFSAV                USB_OTG_GNPTXSTS_NPTXFSAV_Msk /*!< Nonperiodic TxFIFO space available */\n\n#define USB_OTG_GNPTXSTS_NPTQXSAV_Pos            (16U)\n#define USB_OTG_GNPTXSTS_NPTQXSAV_Msk            (0xFFUL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00FF0000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV                USB_OTG_GNPTXSTS_NPTQXSAV_Msk /*!< Nonperiodic transmit request queue space available */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_0              (0x01UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00010000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_1              (0x02UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00020000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_2              (0x04UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00040000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_3              (0x08UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00080000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_4              (0x10UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00100000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_5              (0x20UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00200000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_6              (0x40UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00400000 */\n#define USB_OTG_GNPTXSTS_NPTQXSAV_7              (0x80UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00800000 */\n\n#define USB_OTG_GNPTXSTS_NPTXQTOP_Pos            (24U)\n#define USB_OTG_GNPTXSTS_NPTXQTOP_Msk            (0x7FUL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x7F000000 */\n#define USB_OTG_GNPTXSTS_NPTXQTOP                USB_OTG_GNPTXSTS_NPTXQTOP_Msk /*!< Top of the nonperiodic transmit request queue */\n#define USB_OTG_GNPTXSTS_NPTXQTOP_0              (0x01UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x01000000 */\n#define USB_OTG_GNPTXSTS_NPTXQTOP_1              (0x02UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x02000000 */\n#define USB_OTG_GNPTXSTS_NPTXQTOP_2              (0x04UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x04000000 */\n#define USB_OTG_GNPTXSTS_NPTXQTOP_3              (0x08UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x08000000 */\n#define USB_OTG_GNPTXSTS_NPTXQTOP_4              (0x10UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x10000000 */\n#define USB_OTG_GNPTXSTS_NPTXQTOP_5              (0x20UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x20000000 */\n#define USB_OTG_GNPTXSTS_NPTXQTOP_6              (0x40UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x40000000 */\n\n/********************  Bit definition forUSB_OTG_DTHRCTL register  ********************/\n#define USB_OTG_DTHRCTL_NONISOTHREN_Pos          (0U)\n#define USB_OTG_DTHRCTL_NONISOTHREN_Msk          (0x1UL << USB_OTG_DTHRCTL_NONISOTHREN_Pos) /*!< 0x00000001 */\n#define USB_OTG_DTHRCTL_NONISOTHREN              USB_OTG_DTHRCTL_NONISOTHREN_Msk /*!< Nonisochronous IN endpoints threshold enable */\n#define USB_OTG_DTHRCTL_ISOTHREN_Pos             (1U)\n#define USB_OTG_DTHRCTL_ISOTHREN_Msk             (0x1UL << USB_OTG_DTHRCTL_ISOTHREN_Pos) /*!< 0x00000002 */\n#define USB_OTG_DTHRCTL_ISOTHREN                 USB_OTG_DTHRCTL_ISOTHREN_Msk  /*!< ISO IN endpoint threshold enable */\n\n#define USB_OTG_DTHRCTL_TXTHRLEN_Pos             (2U)\n#define USB_OTG_DTHRCTL_TXTHRLEN_Msk             (0x1FFUL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x000007FC */\n#define USB_OTG_DTHRCTL_TXTHRLEN                 USB_OTG_DTHRCTL_TXTHRLEN_Msk  /*!< Transmit threshold length */\n#define USB_OTG_DTHRCTL_TXTHRLEN_0               (0x001UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000004 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_1               (0x002UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000008 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_2               (0x004UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000010 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_3               (0x008UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000020 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_4               (0x010UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000040 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_5               (0x020UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000080 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_6               (0x040UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000100 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_7               (0x080UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000200 */\n#define USB_OTG_DTHRCTL_TXTHRLEN_8               (0x100UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000400 */\n#define USB_OTG_DTHRCTL_RXTHREN_Pos              (16U)\n#define USB_OTG_DTHRCTL_RXTHREN_Msk              (0x1UL << USB_OTG_DTHRCTL_RXTHREN_Pos) /*!< 0x00010000 */\n#define USB_OTG_DTHRCTL_RXTHREN                  USB_OTG_DTHRCTL_RXTHREN_Msk   /*!< Receive threshold enable */\n\n#define USB_OTG_DTHRCTL_RXTHRLEN_Pos             (17U)\n#define USB_OTG_DTHRCTL_RXTHRLEN_Msk             (0x1FFUL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x03FE0000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN                 USB_OTG_DTHRCTL_RXTHRLEN_Msk  /*!< Receive threshold length */\n#define USB_OTG_DTHRCTL_RXTHRLEN_0               (0x001UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00020000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_1               (0x002UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00040000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_2               (0x004UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00080000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_3               (0x008UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00100000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_4               (0x010UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00200000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_5               (0x020UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00400000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_6               (0x040UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00800000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_7               (0x080UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x01000000 */\n#define USB_OTG_DTHRCTL_RXTHRLEN_8               (0x100UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x02000000 */\n#define USB_OTG_DTHRCTL_ARPEN_Pos                (27U)\n#define USB_OTG_DTHRCTL_ARPEN_Msk                (0x1UL << USB_OTG_DTHRCTL_ARPEN_Pos) /*!< 0x08000000 */\n#define USB_OTG_DTHRCTL_ARPEN                    USB_OTG_DTHRCTL_ARPEN_Msk     /*!< Arbiter parking enable */\n\n/********************  Bit definition forUSB_OTG_DIEPEMPMSK register  ********************/\n#define USB_OTG_DIEPEMPMSK_INEPTXFEM_Pos         (0U)\n#define USB_OTG_DIEPEMPMSK_INEPTXFEM_Msk         (0xFFFFUL << USB_OTG_DIEPEMPMSK_INEPTXFEM_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_DIEPEMPMSK_INEPTXFEM             USB_OTG_DIEPEMPMSK_INEPTXFEM_Msk /*!< IN EP Tx FIFO empty interrupt mask bits */\n\n/********************  Bit definition forUSB_OTG_DEACHINT register  ********************/\n#define USB_OTG_DEACHINT_IEP1INT_Pos             (1U)\n#define USB_OTG_DEACHINT_IEP1INT_Msk             (0x1UL << USB_OTG_DEACHINT_IEP1INT_Pos) /*!< 0x00000002 */\n#define USB_OTG_DEACHINT_IEP1INT                 USB_OTG_DEACHINT_IEP1INT_Msk  /*!< IN endpoint 1interrupt bit   */\n#define USB_OTG_DEACHINT_OEP1INT_Pos             (17U)\n#define USB_OTG_DEACHINT_OEP1INT_Msk             (0x1UL << USB_OTG_DEACHINT_OEP1INT_Pos) /*!< 0x00020000 */\n#define USB_OTG_DEACHINT_OEP1INT                 USB_OTG_DEACHINT_OEP1INT_Msk  /*!< OUT endpoint 1 interrupt bit */\n\n/********************  Bit definition forUSB_OTG_GCCFG register  ********************/\n#define USB_OTG_GCCFG_DCDET_Pos                  (0U)\n#define USB_OTG_GCCFG_DCDET_Msk                  (0x1UL << USB_OTG_GCCFG_DCDET_Pos) /*!< 0x00000001 */\n#define USB_OTG_GCCFG_DCDET                      USB_OTG_GCCFG_DCDET_Msk       /*!< Data contact detection (DCD) status */\n#define USB_OTG_GCCFG_PDET_Pos                   (1U)\n#define USB_OTG_GCCFG_PDET_Msk                   (0x1UL << USB_OTG_GCCFG_PDET_Pos) /*!< 0x00000002 */\n#define USB_OTG_GCCFG_PDET                       USB_OTG_GCCFG_PDET_Msk        /*!< Primary detection (PD) status */\n#define USB_OTG_GCCFG_SDET_Pos                   (2U)\n#define USB_OTG_GCCFG_SDET_Msk                   (0x1UL << USB_OTG_GCCFG_SDET_Pos) /*!< 0x00000004 */\n#define USB_OTG_GCCFG_SDET                       USB_OTG_GCCFG_SDET_Msk        /*!< Secondary detection (SD) status */\n#define USB_OTG_GCCFG_PS2DET_Pos                 (3U)\n#define USB_OTG_GCCFG_PS2DET_Msk                 (0x1UL << USB_OTG_GCCFG_PS2DET_Pos) /*!< 0x00000008 */\n#define USB_OTG_GCCFG_PS2DET                     USB_OTG_GCCFG_PS2DET_Msk      /*!< DM pull-up detection status */\n#define USB_OTG_GCCFG_PWRDWN_Pos                 (16U)\n#define USB_OTG_GCCFG_PWRDWN_Msk                 (0x1UL << USB_OTG_GCCFG_PWRDWN_Pos) /*!< 0x00010000 */\n#define USB_OTG_GCCFG_PWRDWN                     USB_OTG_GCCFG_PWRDWN_Msk      /*!< Power down */\n#define USB_OTG_GCCFG_BCDEN_Pos                  (17U)\n#define USB_OTG_GCCFG_BCDEN_Msk                  (0x1UL << USB_OTG_GCCFG_BCDEN_Pos) /*!< 0x00020000 */\n#define USB_OTG_GCCFG_BCDEN                      USB_OTG_GCCFG_BCDEN_Msk       /*!< Battery charging detector (BCD) enable */\n#define USB_OTG_GCCFG_DCDEN_Pos                  (18U)\n#define USB_OTG_GCCFG_DCDEN_Msk                  (0x1UL << USB_OTG_GCCFG_DCDEN_Pos) /*!< 0x00040000 */\n#define USB_OTG_GCCFG_DCDEN                      USB_OTG_GCCFG_DCDEN_Msk       /*!< Data contact detection (DCD) mode enable*/\n#define USB_OTG_GCCFG_PDEN_Pos                   (19U)\n#define USB_OTG_GCCFG_PDEN_Msk                   (0x1UL << USB_OTG_GCCFG_PDEN_Pos) /*!< 0x00080000 */\n#define USB_OTG_GCCFG_PDEN                       USB_OTG_GCCFG_PDEN_Msk        /*!< Primary detection (PD) mode enable*/\n#define USB_OTG_GCCFG_SDEN_Pos                   (20U)\n#define USB_OTG_GCCFG_SDEN_Msk                   (0x1UL << USB_OTG_GCCFG_SDEN_Pos) /*!< 0x00100000 */\n#define USB_OTG_GCCFG_SDEN                       USB_OTG_GCCFG_SDEN_Msk        /*!< Secondary detection (SD) mode enable */\n#define USB_OTG_GCCFG_VBDEN_Pos                  (21U)\n#define USB_OTG_GCCFG_VBDEN_Msk                  (0x1UL << USB_OTG_GCCFG_VBDEN_Pos) /*!< 0x00200000 */\n#define USB_OTG_GCCFG_VBDEN                      USB_OTG_GCCFG_VBDEN_Msk       /*!< Secondary detection (SD) mode enable */\n\n/********************  Bit definition forUSB_OTG_GPWRDN) register  ********************/\n#define USB_OTG_GPWRDN_ADPMEN_Pos                (0U)\n#define USB_OTG_GPWRDN_ADPMEN_Msk                (0x1UL << USB_OTG_GPWRDN_ADPMEN_Pos) /*!< 0x00000001 */\n#define USB_OTG_GPWRDN_ADPMEN                    USB_OTG_GPWRDN_ADPMEN_Msk     /*!< ADP module enable */\n#define USB_OTG_GPWRDN_ADPIF_Pos                 (23U)\n#define USB_OTG_GPWRDN_ADPIF_Msk                 (0x1UL << USB_OTG_GPWRDN_ADPIF_Pos) /*!< 0x00800000 */\n#define USB_OTG_GPWRDN_ADPIF                     USB_OTG_GPWRDN_ADPIF_Msk      /*!< ADP Interrupt flag */\n\n/********************  Bit definition forUSB_OTG_DEACHINTMSK register  ********************/\n#define USB_OTG_DEACHINTMSK_IEP1INTM_Pos         (1U)\n#define USB_OTG_DEACHINTMSK_IEP1INTM_Msk         (0x1UL << USB_OTG_DEACHINTMSK_IEP1INTM_Pos) /*!< 0x00000002 */\n#define USB_OTG_DEACHINTMSK_IEP1INTM             USB_OTG_DEACHINTMSK_IEP1INTM_Msk /*!< IN Endpoint 1 interrupt mask bit  */\n#define USB_OTG_DEACHINTMSK_OEP1INTM_Pos         (17U)\n#define USB_OTG_DEACHINTMSK_OEP1INTM_Msk         (0x1UL << USB_OTG_DEACHINTMSK_OEP1INTM_Pos) /*!< 0x00020000 */\n#define USB_OTG_DEACHINTMSK_OEP1INTM             USB_OTG_DEACHINTMSK_OEP1INTM_Msk /*!< OUT Endpoint 1 interrupt mask bit */\n\n/********************  Bit definition forUSB_OTG_CID register  ********************/\n#define USB_OTG_CID_PRODUCT_ID_Pos               (0U)\n#define USB_OTG_CID_PRODUCT_ID_Msk               (0xFFFFFFFFUL << USB_OTG_CID_PRODUCT_ID_Pos) /*!< 0xFFFFFFFF */\n#define USB_OTG_CID_PRODUCT_ID                   USB_OTG_CID_PRODUCT_ID_Msk    /*!< Product ID field */\n\n/********************  Bit definition for USB_OTG_GLPMCFG register  ********************/\n#define USB_OTG_GLPMCFG_LPMEN_Pos                (0U)\n#define USB_OTG_GLPMCFG_LPMEN_Msk                (0x1UL << USB_OTG_GLPMCFG_LPMEN_Pos) /*!< 0x00000001 */\n#define USB_OTG_GLPMCFG_LPMEN                    USB_OTG_GLPMCFG_LPMEN_Msk     /*!< LPM support enable                                     */\n#define USB_OTG_GLPMCFG_LPMACK_Pos               (1U)\n#define USB_OTG_GLPMCFG_LPMACK_Msk               (0x1UL << USB_OTG_GLPMCFG_LPMACK_Pos) /*!< 0x00000002 */\n#define USB_OTG_GLPMCFG_LPMACK                   USB_OTG_GLPMCFG_LPMACK_Msk    /*!< LPM Token acknowledge enable                           */\n#define USB_OTG_GLPMCFG_BESL_Pos                 (2U)\n#define USB_OTG_GLPMCFG_BESL_Msk                 (0xFUL << USB_OTG_GLPMCFG_BESL_Pos) /*!< 0x0000003C */\n#define USB_OTG_GLPMCFG_BESL                     USB_OTG_GLPMCFG_BESL_Msk      /*!< BESL value received with last ACKed LPM Token          */\n#define USB_OTG_GLPMCFG_REMWAKE_Pos              (6U)\n#define USB_OTG_GLPMCFG_REMWAKE_Msk              (0x1UL << USB_OTG_GLPMCFG_REMWAKE_Pos) /*!< 0x00000040 */\n#define USB_OTG_GLPMCFG_REMWAKE                  USB_OTG_GLPMCFG_REMWAKE_Msk   /*!< bRemoteWake value received with last ACKed LPM Token   */\n#define USB_OTG_GLPMCFG_L1SSEN_Pos               (7U)\n#define USB_OTG_GLPMCFG_L1SSEN_Msk               (0x1UL << USB_OTG_GLPMCFG_L1SSEN_Pos) /*!< 0x00000080 */\n#define USB_OTG_GLPMCFG_L1SSEN                   USB_OTG_GLPMCFG_L1SSEN_Msk    /*!< L1 shallow sleep enable                                */\n#define USB_OTG_GLPMCFG_BESLTHRS_Pos             (8U)\n#define USB_OTG_GLPMCFG_BESLTHRS_Msk             (0xFUL << USB_OTG_GLPMCFG_BESLTHRS_Pos) /*!< 0x00000F00 */\n#define USB_OTG_GLPMCFG_BESLTHRS                 USB_OTG_GLPMCFG_BESLTHRS_Msk  /*!< BESL threshold                                         */\n#define USB_OTG_GLPMCFG_L1DSEN_Pos               (12U)\n#define USB_OTG_GLPMCFG_L1DSEN_Msk               (0x1UL << USB_OTG_GLPMCFG_L1DSEN_Pos) /*!< 0x00001000 */\n#define USB_OTG_GLPMCFG_L1DSEN                   USB_OTG_GLPMCFG_L1DSEN_Msk    /*!< L1 deep sleep enable                                   */\n#define USB_OTG_GLPMCFG_LPMRSP_Pos               (13U)\n#define USB_OTG_GLPMCFG_LPMRSP_Msk               (0x3UL << USB_OTG_GLPMCFG_LPMRSP_Pos) /*!< 0x00006000 */\n#define USB_OTG_GLPMCFG_LPMRSP                   USB_OTG_GLPMCFG_LPMRSP_Msk    /*!< LPM response                                           */\n#define USB_OTG_GLPMCFG_SLPSTS_Pos               (15U)\n#define USB_OTG_GLPMCFG_SLPSTS_Msk               (0x1UL << USB_OTG_GLPMCFG_SLPSTS_Pos) /*!< 0x00008000 */\n#define USB_OTG_GLPMCFG_SLPSTS                   USB_OTG_GLPMCFG_SLPSTS_Msk    /*!< Port sleep status                                      */\n#define USB_OTG_GLPMCFG_L1RSMOK_Pos              (16U)\n#define USB_OTG_GLPMCFG_L1RSMOK_Msk              (0x1UL << USB_OTG_GLPMCFG_L1RSMOK_Pos) /*!< 0x00010000 */\n#define USB_OTG_GLPMCFG_L1RSMOK                  USB_OTG_GLPMCFG_L1RSMOK_Msk   /*!< Sleep State Resume OK                                  */\n#define USB_OTG_GLPMCFG_LPMCHIDX_Pos             (17U)\n#define USB_OTG_GLPMCFG_LPMCHIDX_Msk             (0xFUL << USB_OTG_GLPMCFG_LPMCHIDX_Pos) /*!< 0x001E0000 */\n#define USB_OTG_GLPMCFG_LPMCHIDX                 USB_OTG_GLPMCFG_LPMCHIDX_Msk  /*!< LPM Channel Index                                      */\n#define USB_OTG_GLPMCFG_LPMRCNT_Pos              (21U)\n#define USB_OTG_GLPMCFG_LPMRCNT_Msk              (0x7UL << USB_OTG_GLPMCFG_LPMRCNT_Pos) /*!< 0x00E00000 */\n#define USB_OTG_GLPMCFG_LPMRCNT                  USB_OTG_GLPMCFG_LPMRCNT_Msk   /*!< LPM retry count                                        */\n#define USB_OTG_GLPMCFG_SNDLPM_Pos               (24U)\n#define USB_OTG_GLPMCFG_SNDLPM_Msk               (0x1UL << USB_OTG_GLPMCFG_SNDLPM_Pos) /*!< 0x01000000 */\n#define USB_OTG_GLPMCFG_SNDLPM                   USB_OTG_GLPMCFG_SNDLPM_Msk    /*!< Send LPM transaction                                   */\n#define USB_OTG_GLPMCFG_LPMRCNTSTS_Pos           (25U)\n#define USB_OTG_GLPMCFG_LPMRCNTSTS_Msk           (0x7UL << USB_OTG_GLPMCFG_LPMRCNTSTS_Pos) /*!< 0x0E000000 */\n#define USB_OTG_GLPMCFG_LPMRCNTSTS               USB_OTG_GLPMCFG_LPMRCNTSTS_Msk /*!< LPM retry count status                                 */\n#define USB_OTG_GLPMCFG_ENBESL_Pos               (28U)\n#define USB_OTG_GLPMCFG_ENBESL_Msk               (0x1UL << USB_OTG_GLPMCFG_ENBESL_Pos) /*!< 0x10000000 */\n#define USB_OTG_GLPMCFG_ENBESL                   USB_OTG_GLPMCFG_ENBESL_Msk    /*!< Enable best effort service latency                     */\n\n/********************  Bit definition forUSB_OTG_DIEPEACHMSK1 register  ********************/\n#define USB_OTG_DIEPEACHMSK1_XFRCM_Pos           (0U)\n#define USB_OTG_DIEPEACHMSK1_XFRCM_Msk           (0x1UL << USB_OTG_DIEPEACHMSK1_XFRCM_Pos) /*!< 0x00000001 */\n#define USB_OTG_DIEPEACHMSK1_XFRCM               USB_OTG_DIEPEACHMSK1_XFRCM_Msk /*!< Transfer completed interrupt mask                 */\n#define USB_OTG_DIEPEACHMSK1_EPDM_Pos            (1U)\n#define USB_OTG_DIEPEACHMSK1_EPDM_Msk            (0x1UL << USB_OTG_DIEPEACHMSK1_EPDM_Pos) /*!< 0x00000002 */\n#define USB_OTG_DIEPEACHMSK1_EPDM                USB_OTG_DIEPEACHMSK1_EPDM_Msk /*!< Endpoint disabled interrupt mask                  */\n#define USB_OTG_DIEPEACHMSK1_TOM_Pos             (3U)\n#define USB_OTG_DIEPEACHMSK1_TOM_Msk             (0x1UL << USB_OTG_DIEPEACHMSK1_TOM_Pos) /*!< 0x00000008 */\n#define USB_OTG_DIEPEACHMSK1_TOM                 USB_OTG_DIEPEACHMSK1_TOM_Msk  /*!< Timeout condition mask (nonisochronous endpoints) */\n#define USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Pos       (4U)\n#define USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Msk       (0x1UL << USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Pos) /*!< 0x00000010 */\n#define USB_OTG_DIEPEACHMSK1_ITTXFEMSK           USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Msk /*!< IN token received when TxFIFO empty mask          */\n#define USB_OTG_DIEPEACHMSK1_INEPNMM_Pos         (5U)\n#define USB_OTG_DIEPEACHMSK1_INEPNMM_Msk         (0x1UL << USB_OTG_DIEPEACHMSK1_INEPNMM_Pos) /*!< 0x00000020 */\n#define USB_OTG_DIEPEACHMSK1_INEPNMM             USB_OTG_DIEPEACHMSK1_INEPNMM_Msk /*!< IN token received with EP mismatch mask           */\n#define USB_OTG_DIEPEACHMSK1_INEPNEM_Pos         (6U)\n#define USB_OTG_DIEPEACHMSK1_INEPNEM_Msk         (0x1UL << USB_OTG_DIEPEACHMSK1_INEPNEM_Pos) /*!< 0x00000040 */\n#define USB_OTG_DIEPEACHMSK1_INEPNEM             USB_OTG_DIEPEACHMSK1_INEPNEM_Msk /*!< IN endpoint NAK effective mask                    */\n#define USB_OTG_DIEPEACHMSK1_TXFURM_Pos          (8U)\n#define USB_OTG_DIEPEACHMSK1_TXFURM_Msk          (0x1UL << USB_OTG_DIEPEACHMSK1_TXFURM_Pos) /*!< 0x00000100 */\n#define USB_OTG_DIEPEACHMSK1_TXFURM              USB_OTG_DIEPEACHMSK1_TXFURM_Msk /*!< FIFO underrun mask */\n#define USB_OTG_DIEPEACHMSK1_BIM_Pos             (9U)\n#define USB_OTG_DIEPEACHMSK1_BIM_Msk             (0x1UL << USB_OTG_DIEPEACHMSK1_BIM_Pos) /*!< 0x00000200 */\n#define USB_OTG_DIEPEACHMSK1_BIM                 USB_OTG_DIEPEACHMSK1_BIM_Msk  /*!< BNA interrupt mask */\n#define USB_OTG_DIEPEACHMSK1_NAKM_Pos            (13U)\n#define USB_OTG_DIEPEACHMSK1_NAKM_Msk            (0x1UL << USB_OTG_DIEPEACHMSK1_NAKM_Pos) /*!< 0x00002000 */\n#define USB_OTG_DIEPEACHMSK1_NAKM                USB_OTG_DIEPEACHMSK1_NAKM_Msk /*!< NAK interrupt mask */\n\n/********************  Bit definition forUSB_OTG_HPRT register  ********************/\n#define USB_OTG_HPRT_PCSTS_Pos                   (0U)\n#define USB_OTG_HPRT_PCSTS_Msk                   (0x1UL << USB_OTG_HPRT_PCSTS_Pos) /*!< 0x00000001 */\n#define USB_OTG_HPRT_PCSTS                       USB_OTG_HPRT_PCSTS_Msk        /*!< Port connect status        */\n#define USB_OTG_HPRT_PCDET_Pos                   (1U)\n#define USB_OTG_HPRT_PCDET_Msk                   (0x1UL << USB_OTG_HPRT_PCDET_Pos) /*!< 0x00000002 */\n#define USB_OTG_HPRT_PCDET                       USB_OTG_HPRT_PCDET_Msk        /*!< Port connect detected      */\n#define USB_OTG_HPRT_PENA_Pos                    (2U)\n#define USB_OTG_HPRT_PENA_Msk                    (0x1UL << USB_OTG_HPRT_PENA_Pos) /*!< 0x00000004 */\n#define USB_OTG_HPRT_PENA                        USB_OTG_HPRT_PENA_Msk         /*!< Port enable                */\n#define USB_OTG_HPRT_PENCHNG_Pos                 (3U)\n#define USB_OTG_HPRT_PENCHNG_Msk                 (0x1UL << USB_OTG_HPRT_PENCHNG_Pos) /*!< 0x00000008 */\n#define USB_OTG_HPRT_PENCHNG                     USB_OTG_HPRT_PENCHNG_Msk      /*!< Port enable/disable change */\n#define USB_OTG_HPRT_POCA_Pos                    (4U)\n#define USB_OTG_HPRT_POCA_Msk                    (0x1UL << USB_OTG_HPRT_POCA_Pos) /*!< 0x00000010 */\n#define USB_OTG_HPRT_POCA                        USB_OTG_HPRT_POCA_Msk         /*!< Port overcurrent active    */\n#define USB_OTG_HPRT_POCCHNG_Pos                 (5U)\n#define USB_OTG_HPRT_POCCHNG_Msk                 (0x1UL << USB_OTG_HPRT_POCCHNG_Pos) /*!< 0x00000020 */\n#define USB_OTG_HPRT_POCCHNG                     USB_OTG_HPRT_POCCHNG_Msk      /*!< Port overcurrent change    */\n#define USB_OTG_HPRT_PRES_Pos                    (6U)\n#define USB_OTG_HPRT_PRES_Msk                    (0x1UL << USB_OTG_HPRT_PRES_Pos) /*!< 0x00000040 */\n#define USB_OTG_HPRT_PRES                        USB_OTG_HPRT_PRES_Msk         /*!< Port resume   */\n#define USB_OTG_HPRT_PSUSP_Pos                   (7U)\n#define USB_OTG_HPRT_PSUSP_Msk                   (0x1UL << USB_OTG_HPRT_PSUSP_Pos) /*!< 0x00000080 */\n#define USB_OTG_HPRT_PSUSP                       USB_OTG_HPRT_PSUSP_Msk        /*!< Port suspend  */\n#define USB_OTG_HPRT_PRST_Pos                    (8U)\n#define USB_OTG_HPRT_PRST_Msk                    (0x1UL << USB_OTG_HPRT_PRST_Pos) /*!< 0x00000100 */\n#define USB_OTG_HPRT_PRST                        USB_OTG_HPRT_PRST_Msk         /*!< Port reset    */\n\n#define USB_OTG_HPRT_PLSTS_Pos                   (10U)\n#define USB_OTG_HPRT_PLSTS_Msk                   (0x3UL << USB_OTG_HPRT_PLSTS_Pos) /*!< 0x00000C00 */\n#define USB_OTG_HPRT_PLSTS                       USB_OTG_HPRT_PLSTS_Msk        /*!< Port line status */\n#define USB_OTG_HPRT_PLSTS_0                     (0x1UL << USB_OTG_HPRT_PLSTS_Pos) /*!< 0x00000400 */\n#define USB_OTG_HPRT_PLSTS_1                     (0x2UL << USB_OTG_HPRT_PLSTS_Pos) /*!< 0x00000800 */\n#define USB_OTG_HPRT_PPWR_Pos                    (12U)\n#define USB_OTG_HPRT_PPWR_Msk                    (0x1UL << USB_OTG_HPRT_PPWR_Pos) /*!< 0x00001000 */\n#define USB_OTG_HPRT_PPWR                        USB_OTG_HPRT_PPWR_Msk         /*!< Port power */\n\n#define USB_OTG_HPRT_PTCTL_Pos                   (13U)\n#define USB_OTG_HPRT_PTCTL_Msk                   (0xFUL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x0001E000 */\n#define USB_OTG_HPRT_PTCTL                       USB_OTG_HPRT_PTCTL_Msk        /*!< Port test control */\n#define USB_OTG_HPRT_PTCTL_0                     (0x1UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00002000 */\n#define USB_OTG_HPRT_PTCTL_1                     (0x2UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00004000 */\n#define USB_OTG_HPRT_PTCTL_2                     (0x4UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00008000 */\n#define USB_OTG_HPRT_PTCTL_3                     (0x8UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00010000 */\n\n#define USB_OTG_HPRT_PSPD_Pos                    (17U)\n#define USB_OTG_HPRT_PSPD_Msk                    (0x3UL << USB_OTG_HPRT_PSPD_Pos) /*!< 0x00060000 */\n#define USB_OTG_HPRT_PSPD                        USB_OTG_HPRT_PSPD_Msk         /*!< Port speed */\n#define USB_OTG_HPRT_PSPD_0                      (0x1UL << USB_OTG_HPRT_PSPD_Pos) /*!< 0x00020000 */\n#define USB_OTG_HPRT_PSPD_1                      (0x2UL << USB_OTG_HPRT_PSPD_Pos) /*!< 0x00040000 */\n\n/********************  Bit definition forUSB_OTG_DOEPEACHMSK1 register  ********************/\n#define USB_OTG_DOEPEACHMSK1_XFRCM_Pos           (0U)\n#define USB_OTG_DOEPEACHMSK1_XFRCM_Msk           (0x1UL << USB_OTG_DOEPEACHMSK1_XFRCM_Pos) /*!< 0x00000001 */\n#define USB_OTG_DOEPEACHMSK1_XFRCM               USB_OTG_DOEPEACHMSK1_XFRCM_Msk /*!< Transfer completed interrupt mask */\n#define USB_OTG_DOEPEACHMSK1_EPDM_Pos            (1U)\n#define USB_OTG_DOEPEACHMSK1_EPDM_Msk            (0x1UL << USB_OTG_DOEPEACHMSK1_EPDM_Pos) /*!< 0x00000002 */\n#define USB_OTG_DOEPEACHMSK1_EPDM                USB_OTG_DOEPEACHMSK1_EPDM_Msk /*!< Endpoint disabled interrupt mask */\n#define USB_OTG_DOEPEACHMSK1_TOM_Pos             (3U)\n#define USB_OTG_DOEPEACHMSK1_TOM_Msk             (0x1UL << USB_OTG_DOEPEACHMSK1_TOM_Pos) /*!< 0x00000008 */\n#define USB_OTG_DOEPEACHMSK1_TOM                 USB_OTG_DOEPEACHMSK1_TOM_Msk  /*!< Timeout condition mask */\n#define USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Pos       (4U)\n#define USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Msk       (0x1UL << USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Pos) /*!< 0x00000010 */\n#define USB_OTG_DOEPEACHMSK1_ITTXFEMSK           USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Msk /*!< IN token received when TxFIFO empty mask */\n#define USB_OTG_DOEPEACHMSK1_INEPNMM_Pos         (5U)\n#define USB_OTG_DOEPEACHMSK1_INEPNMM_Msk         (0x1UL << USB_OTG_DOEPEACHMSK1_INEPNMM_Pos) /*!< 0x00000020 */\n#define USB_OTG_DOEPEACHMSK1_INEPNMM             USB_OTG_DOEPEACHMSK1_INEPNMM_Msk /*!< IN token received with EP mismatch mask */\n#define USB_OTG_DOEPEACHMSK1_INEPNEM_Pos         (6U)\n#define USB_OTG_DOEPEACHMSK1_INEPNEM_Msk         (0x1UL << USB_OTG_DOEPEACHMSK1_INEPNEM_Pos) /*!< 0x00000040 */\n#define USB_OTG_DOEPEACHMSK1_INEPNEM             USB_OTG_DOEPEACHMSK1_INEPNEM_Msk /*!< IN endpoint NAK effective mask */\n#define USB_OTG_DOEPEACHMSK1_TXFURM_Pos          (8U)\n#define USB_OTG_DOEPEACHMSK1_TXFURM_Msk          (0x1UL << USB_OTG_DOEPEACHMSK1_TXFURM_Pos) /*!< 0x00000100 */\n#define USB_OTG_DOEPEACHMSK1_TXFURM              USB_OTG_DOEPEACHMSK1_TXFURM_Msk /*!< OUT packet error mask */\n#define USB_OTG_DOEPEACHMSK1_BIM_Pos             (9U)\n#define USB_OTG_DOEPEACHMSK1_BIM_Msk             (0x1UL << USB_OTG_DOEPEACHMSK1_BIM_Pos) /*!< 0x00000200 */\n#define USB_OTG_DOEPEACHMSK1_BIM                 USB_OTG_DOEPEACHMSK1_BIM_Msk  /*!< BNA interrupt mask */\n#define USB_OTG_DOEPEACHMSK1_BERRM_Pos           (12U)\n#define USB_OTG_DOEPEACHMSK1_BERRM_Msk           (0x1UL << USB_OTG_DOEPEACHMSK1_BERRM_Pos) /*!< 0x00001000 */\n#define USB_OTG_DOEPEACHMSK1_BERRM               USB_OTG_DOEPEACHMSK1_BERRM_Msk /*!< Bubble error interrupt mask */\n#define USB_OTG_DOEPEACHMSK1_NAKM_Pos            (13U)\n#define USB_OTG_DOEPEACHMSK1_NAKM_Msk            (0x1UL << USB_OTG_DOEPEACHMSK1_NAKM_Pos) /*!< 0x00002000 */\n#define USB_OTG_DOEPEACHMSK1_NAKM                USB_OTG_DOEPEACHMSK1_NAKM_Msk /*!< NAK interrupt mask */\n#define USB_OTG_DOEPEACHMSK1_NYETM_Pos           (14U)\n#define USB_OTG_DOEPEACHMSK1_NYETM_Msk           (0x1UL << USB_OTG_DOEPEACHMSK1_NYETM_Pos) /*!< 0x00004000 */\n#define USB_OTG_DOEPEACHMSK1_NYETM               USB_OTG_DOEPEACHMSK1_NYETM_Msk /*!< NYET interrupt mask */\n\n/********************  Bit definition forUSB_OTG_HPTXFSIZ register  ********************/\n#define USB_OTG_HPTXFSIZ_PTXSA_Pos               (0U)\n#define USB_OTG_HPTXFSIZ_PTXSA_Msk               (0xFFFFUL << USB_OTG_HPTXFSIZ_PTXSA_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_HPTXFSIZ_PTXSA                   USB_OTG_HPTXFSIZ_PTXSA_Msk    /*!< Host periodic TxFIFO start address */\n#define USB_OTG_HPTXFSIZ_PTXFD_Pos               (16U)\n#define USB_OTG_HPTXFSIZ_PTXFD_Msk               (0xFFFFUL << USB_OTG_HPTXFSIZ_PTXFD_Pos) /*!< 0xFFFF0000 */\n#define USB_OTG_HPTXFSIZ_PTXFD                   USB_OTG_HPTXFSIZ_PTXFD_Msk    /*!< Host periodic TxFIFO depth */\n\n/********************  Bit definition forUSB_OTG_DIEPCTL register  ********************/\n#define USB_OTG_DIEPCTL_MPSIZ_Pos                (0U)\n#define USB_OTG_DIEPCTL_MPSIZ_Msk                (0x7FFUL << USB_OTG_DIEPCTL_MPSIZ_Pos) /*!< 0x000007FF */\n#define USB_OTG_DIEPCTL_MPSIZ                    USB_OTG_DIEPCTL_MPSIZ_Msk     /*!< Maximum packet size */\n#define USB_OTG_DIEPCTL_USBAEP_Pos               (15U)\n#define USB_OTG_DIEPCTL_USBAEP_Msk               (0x1UL << USB_OTG_DIEPCTL_USBAEP_Pos) /*!< 0x00008000 */\n#define USB_OTG_DIEPCTL_USBAEP                   USB_OTG_DIEPCTL_USBAEP_Msk    /*!< USB active endpoint */\n#define USB_OTG_DIEPCTL_EONUM_DPID_Pos           (16U)\n#define USB_OTG_DIEPCTL_EONUM_DPID_Msk           (0x1UL << USB_OTG_DIEPCTL_EONUM_DPID_Pos) /*!< 0x00010000 */\n#define USB_OTG_DIEPCTL_EONUM_DPID               USB_OTG_DIEPCTL_EONUM_DPID_Msk /*!< Even/odd frame */\n#define USB_OTG_DIEPCTL_NAKSTS_Pos               (17U)\n#define USB_OTG_DIEPCTL_NAKSTS_Msk               (0x1UL << USB_OTG_DIEPCTL_NAKSTS_Pos) /*!< 0x00020000 */\n#define USB_OTG_DIEPCTL_NAKSTS                   USB_OTG_DIEPCTL_NAKSTS_Msk    /*!< NAK status */\n\n#define USB_OTG_DIEPCTL_EPTYP_Pos                (18U)\n#define USB_OTG_DIEPCTL_EPTYP_Msk                (0x3UL << USB_OTG_DIEPCTL_EPTYP_Pos) /*!< 0x000C0000 */\n#define USB_OTG_DIEPCTL_EPTYP                    USB_OTG_DIEPCTL_EPTYP_Msk     /*!< Endpoint type */\n#define USB_OTG_DIEPCTL_EPTYP_0                  (0x1UL << USB_OTG_DIEPCTL_EPTYP_Pos) /*!< 0x00040000 */\n#define USB_OTG_DIEPCTL_EPTYP_1                  (0x2UL << USB_OTG_DIEPCTL_EPTYP_Pos) /*!< 0x00080000 */\n#define USB_OTG_DIEPCTL_STALL_Pos                (21U)\n#define USB_OTG_DIEPCTL_STALL_Msk                (0x1UL << USB_OTG_DIEPCTL_STALL_Pos) /*!< 0x00200000 */\n#define USB_OTG_DIEPCTL_STALL                    USB_OTG_DIEPCTL_STALL_Msk     /*!< STALL handshake */\n\n#define USB_OTG_DIEPCTL_TXFNUM_Pos               (22U)\n#define USB_OTG_DIEPCTL_TXFNUM_Msk               (0xFUL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x03C00000 */\n#define USB_OTG_DIEPCTL_TXFNUM                   USB_OTG_DIEPCTL_TXFNUM_Msk    /*!< TxFIFO number */\n#define USB_OTG_DIEPCTL_TXFNUM_0                 (0x1UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x00400000 */\n#define USB_OTG_DIEPCTL_TXFNUM_1                 (0x2UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x00800000 */\n#define USB_OTG_DIEPCTL_TXFNUM_2                 (0x4UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x01000000 */\n#define USB_OTG_DIEPCTL_TXFNUM_3                 (0x8UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x02000000 */\n#define USB_OTG_DIEPCTL_CNAK_Pos                 (26U)\n#define USB_OTG_DIEPCTL_CNAK_Msk                 (0x1UL << USB_OTG_DIEPCTL_CNAK_Pos) /*!< 0x04000000 */\n#define USB_OTG_DIEPCTL_CNAK                     USB_OTG_DIEPCTL_CNAK_Msk      /*!< Clear NAK */\n#define USB_OTG_DIEPCTL_SNAK_Pos                 (27U)\n#define USB_OTG_DIEPCTL_SNAK_Msk                 (0x1UL << USB_OTG_DIEPCTL_SNAK_Pos) /*!< 0x08000000 */\n#define USB_OTG_DIEPCTL_SNAK                     USB_OTG_DIEPCTL_SNAK_Msk      /*!< Set NAK */\n#define USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Pos       (28U)\n#define USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Msk       (0x1UL << USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Pos) /*!< 0x10000000 */\n#define USB_OTG_DIEPCTL_SD0PID_SEVNFRM           USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Msk /*!< Set DATA0 PID */\n#define USB_OTG_DIEPCTL_SODDFRM_Pos              (29U)\n#define USB_OTG_DIEPCTL_SODDFRM_Msk              (0x1UL << USB_OTG_DIEPCTL_SODDFRM_Pos) /*!< 0x20000000 */\n#define USB_OTG_DIEPCTL_SODDFRM                  USB_OTG_DIEPCTL_SODDFRM_Msk   /*!< Set odd frame */\n#define USB_OTG_DIEPCTL_EPDIS_Pos                (30U)\n#define USB_OTG_DIEPCTL_EPDIS_Msk                (0x1UL << USB_OTG_DIEPCTL_EPDIS_Pos) /*!< 0x40000000 */\n#define USB_OTG_DIEPCTL_EPDIS                    USB_OTG_DIEPCTL_EPDIS_Msk     /*!< Endpoint disable */\n#define USB_OTG_DIEPCTL_EPENA_Pos                (31U)\n#define USB_OTG_DIEPCTL_EPENA_Msk                (0x1UL << USB_OTG_DIEPCTL_EPENA_Pos) /*!< 0x80000000 */\n#define USB_OTG_DIEPCTL_EPENA                    USB_OTG_DIEPCTL_EPENA_Msk     /*!< Endpoint enable */\n\n/********************  Bit definition forUSB_OTG_HCCHAR register  ********************/\n#define USB_OTG_HCCHAR_MPSIZ_Pos                 (0U)\n#define USB_OTG_HCCHAR_MPSIZ_Msk                 (0x7FFUL << USB_OTG_HCCHAR_MPSIZ_Pos) /*!< 0x000007FF */\n#define USB_OTG_HCCHAR_MPSIZ                     USB_OTG_HCCHAR_MPSIZ_Msk      /*!< Maximum packet size */\n\n#define USB_OTG_HCCHAR_EPNUM_Pos                 (11U)\n#define USB_OTG_HCCHAR_EPNUM_Msk                 (0xFUL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00007800 */\n#define USB_OTG_HCCHAR_EPNUM                     USB_OTG_HCCHAR_EPNUM_Msk      /*!< Endpoint number */\n#define USB_OTG_HCCHAR_EPNUM_0                   (0x1UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00000800 */\n#define USB_OTG_HCCHAR_EPNUM_1                   (0x2UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00001000 */\n#define USB_OTG_HCCHAR_EPNUM_2                   (0x4UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00002000 */\n#define USB_OTG_HCCHAR_EPNUM_3                   (0x8UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00004000 */\n#define USB_OTG_HCCHAR_EPDIR_Pos                 (15U)\n#define USB_OTG_HCCHAR_EPDIR_Msk                 (0x1UL << USB_OTG_HCCHAR_EPDIR_Pos) /*!< 0x00008000 */\n#define USB_OTG_HCCHAR_EPDIR                     USB_OTG_HCCHAR_EPDIR_Msk      /*!< Endpoint direction */\n#define USB_OTG_HCCHAR_LSDEV_Pos                 (17U)\n#define USB_OTG_HCCHAR_LSDEV_Msk                 (0x1UL << USB_OTG_HCCHAR_LSDEV_Pos) /*!< 0x00020000 */\n#define USB_OTG_HCCHAR_LSDEV                     USB_OTG_HCCHAR_LSDEV_Msk      /*!< Low-speed device */\n\n#define USB_OTG_HCCHAR_EPTYP_Pos                 (18U)\n#define USB_OTG_HCCHAR_EPTYP_Msk                 (0x3UL << USB_OTG_HCCHAR_EPTYP_Pos) /*!< 0x000C0000 */\n#define USB_OTG_HCCHAR_EPTYP                     USB_OTG_HCCHAR_EPTYP_Msk      /*!< Endpoint type */\n#define USB_OTG_HCCHAR_EPTYP_0                   (0x1UL << USB_OTG_HCCHAR_EPTYP_Pos) /*!< 0x00040000 */\n#define USB_OTG_HCCHAR_EPTYP_1                   (0x2UL << USB_OTG_HCCHAR_EPTYP_Pos) /*!< 0x00080000 */\n\n#define USB_OTG_HCCHAR_MC_Pos                    (20U)\n#define USB_OTG_HCCHAR_MC_Msk                    (0x3UL << USB_OTG_HCCHAR_MC_Pos) /*!< 0x00300000 */\n#define USB_OTG_HCCHAR_MC                        USB_OTG_HCCHAR_MC_Msk         /*!< Multi Count (MC) / Error Count (EC) */\n#define USB_OTG_HCCHAR_MC_0                      (0x1UL << USB_OTG_HCCHAR_MC_Pos) /*!< 0x00100000 */\n#define USB_OTG_HCCHAR_MC_1                      (0x2UL << USB_OTG_HCCHAR_MC_Pos) /*!< 0x00200000 */\n\n#define USB_OTG_HCCHAR_DAD_Pos                   (22U)\n#define USB_OTG_HCCHAR_DAD_Msk                   (0x7FUL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x1FC00000 */\n#define USB_OTG_HCCHAR_DAD                       USB_OTG_HCCHAR_DAD_Msk        /*!< Device address */\n#define USB_OTG_HCCHAR_DAD_0                     (0x01UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x00400000 */\n#define USB_OTG_HCCHAR_DAD_1                     (0x02UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x00800000 */\n#define USB_OTG_HCCHAR_DAD_2                     (0x04UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x01000000 */\n#define USB_OTG_HCCHAR_DAD_3                     (0x08UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x02000000 */\n#define USB_OTG_HCCHAR_DAD_4                     (0x10UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x04000000 */\n#define USB_OTG_HCCHAR_DAD_5                     (0x20UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x08000000 */\n#define USB_OTG_HCCHAR_DAD_6                     (0x40UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x10000000 */\n#define USB_OTG_HCCHAR_ODDFRM_Pos                (29U)\n#define USB_OTG_HCCHAR_ODDFRM_Msk                (0x1UL << USB_OTG_HCCHAR_ODDFRM_Pos) /*!< 0x20000000 */\n#define USB_OTG_HCCHAR_ODDFRM                    USB_OTG_HCCHAR_ODDFRM_Msk     /*!< Odd frame */\n#define USB_OTG_HCCHAR_CHDIS_Pos                 (30U)\n#define USB_OTG_HCCHAR_CHDIS_Msk                 (0x1UL << USB_OTG_HCCHAR_CHDIS_Pos) /*!< 0x40000000 */\n#define USB_OTG_HCCHAR_CHDIS                     USB_OTG_HCCHAR_CHDIS_Msk      /*!< Channel disable */\n#define USB_OTG_HCCHAR_CHENA_Pos                 (31U)\n#define USB_OTG_HCCHAR_CHENA_Msk                 (0x1UL << USB_OTG_HCCHAR_CHENA_Pos) /*!< 0x80000000 */\n#define USB_OTG_HCCHAR_CHENA                     USB_OTG_HCCHAR_CHENA_Msk      /*!< Channel enable */\n\n/********************  Bit definition forUSB_OTG_HCSPLT register  ********************/\n\n#define USB_OTG_HCSPLT_PRTADDR_Pos               (0U)\n#define USB_OTG_HCSPLT_PRTADDR_Msk               (0x7FUL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x0000007F */\n#define USB_OTG_HCSPLT_PRTADDR                   USB_OTG_HCSPLT_PRTADDR_Msk    /*!< Port address */\n#define USB_OTG_HCSPLT_PRTADDR_0                 (0x01UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000001 */\n#define USB_OTG_HCSPLT_PRTADDR_1                 (0x02UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000002 */\n#define USB_OTG_HCSPLT_PRTADDR_2                 (0x04UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000004 */\n#define USB_OTG_HCSPLT_PRTADDR_3                 (0x08UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000008 */\n#define USB_OTG_HCSPLT_PRTADDR_4                 (0x10UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000010 */\n#define USB_OTG_HCSPLT_PRTADDR_5                 (0x20UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000020 */\n#define USB_OTG_HCSPLT_PRTADDR_6                 (0x40UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000040 */\n\n#define USB_OTG_HCSPLT_HUBADDR_Pos               (7U)\n#define USB_OTG_HCSPLT_HUBADDR_Msk               (0x7FUL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00003F80 */\n#define USB_OTG_HCSPLT_HUBADDR                   USB_OTG_HCSPLT_HUBADDR_Msk    /*!< Hub address */\n#define USB_OTG_HCSPLT_HUBADDR_0                 (0x01UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000080 */\n#define USB_OTG_HCSPLT_HUBADDR_1                 (0x02UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000100 */\n#define USB_OTG_HCSPLT_HUBADDR_2                 (0x04UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000200 */\n#define USB_OTG_HCSPLT_HUBADDR_3                 (0x08UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000400 */\n#define USB_OTG_HCSPLT_HUBADDR_4                 (0x10UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000800 */\n#define USB_OTG_HCSPLT_HUBADDR_5                 (0x20UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00001000 */\n#define USB_OTG_HCSPLT_HUBADDR_6                 (0x40UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00002000 */\n\n#define USB_OTG_HCSPLT_XACTPOS_Pos               (14U)\n#define USB_OTG_HCSPLT_XACTPOS_Msk               (0x3UL << USB_OTG_HCSPLT_XACTPOS_Pos) /*!< 0x0000C000 */\n#define USB_OTG_HCSPLT_XACTPOS                   USB_OTG_HCSPLT_XACTPOS_Msk    /*!< XACTPOS */\n#define USB_OTG_HCSPLT_XACTPOS_0                 (0x1UL << USB_OTG_HCSPLT_XACTPOS_Pos) /*!< 0x00004000 */\n#define USB_OTG_HCSPLT_XACTPOS_1                 (0x2UL << USB_OTG_HCSPLT_XACTPOS_Pos) /*!< 0x00008000 */\n#define USB_OTG_HCSPLT_COMPLSPLT_Pos             (16U)\n#define USB_OTG_HCSPLT_COMPLSPLT_Msk             (0x1UL << USB_OTG_HCSPLT_COMPLSPLT_Pos) /*!< 0x00010000 */\n#define USB_OTG_HCSPLT_COMPLSPLT                 USB_OTG_HCSPLT_COMPLSPLT_Msk  /*!< Do complete split */\n#define USB_OTG_HCSPLT_SPLITEN_Pos               (31U)\n#define USB_OTG_HCSPLT_SPLITEN_Msk               (0x1UL << USB_OTG_HCSPLT_SPLITEN_Pos) /*!< 0x80000000 */\n#define USB_OTG_HCSPLT_SPLITEN                   USB_OTG_HCSPLT_SPLITEN_Msk    /*!< Split enable */\n\n/********************  Bit definition forUSB_OTG_HCINT register  ********************/\n#define USB_OTG_HCINT_XFRC_Pos                   (0U)\n#define USB_OTG_HCINT_XFRC_Msk                   (0x1UL << USB_OTG_HCINT_XFRC_Pos) /*!< 0x00000001 */\n#define USB_OTG_HCINT_XFRC                       USB_OTG_HCINT_XFRC_Msk        /*!< Transfer completed */\n#define USB_OTG_HCINT_CHH_Pos                    (1U)\n#define USB_OTG_HCINT_CHH_Msk                    (0x1UL << USB_OTG_HCINT_CHH_Pos) /*!< 0x00000002 */\n#define USB_OTG_HCINT_CHH                        USB_OTG_HCINT_CHH_Msk         /*!< Channel halted */\n#define USB_OTG_HCINT_AHBERR_Pos                 (2U)\n#define USB_OTG_HCINT_AHBERR_Msk                 (0x1UL << USB_OTG_HCINT_AHBERR_Pos) /*!< 0x00000004 */\n#define USB_OTG_HCINT_AHBERR                     USB_OTG_HCINT_AHBERR_Msk      /*!< AHB error */\n#define USB_OTG_HCINT_STALL_Pos                  (3U)\n#define USB_OTG_HCINT_STALL_Msk                  (0x1UL << USB_OTG_HCINT_STALL_Pos) /*!< 0x00000008 */\n#define USB_OTG_HCINT_STALL                      USB_OTG_HCINT_STALL_Msk       /*!< STALL response received interrupt */\n#define USB_OTG_HCINT_NAK_Pos                    (4U)\n#define USB_OTG_HCINT_NAK_Msk                    (0x1UL << USB_OTG_HCINT_NAK_Pos) /*!< 0x00000010 */\n#define USB_OTG_HCINT_NAK                        USB_OTG_HCINT_NAK_Msk         /*!< NAK response received interrupt */\n#define USB_OTG_HCINT_ACK_Pos                    (5U)\n#define USB_OTG_HCINT_ACK_Msk                    (0x1UL << USB_OTG_HCINT_ACK_Pos) /*!< 0x00000020 */\n#define USB_OTG_HCINT_ACK                        USB_OTG_HCINT_ACK_Msk         /*!< ACK response received/transmitted interrupt */\n#define USB_OTG_HCINT_NYET_Pos                   (6U)\n#define USB_OTG_HCINT_NYET_Msk                   (0x1UL << USB_OTG_HCINT_NYET_Pos) /*!< 0x00000040 */\n#define USB_OTG_HCINT_NYET                       USB_OTG_HCINT_NYET_Msk        /*!< Response received interrupt */\n#define USB_OTG_HCINT_TXERR_Pos                  (7U)\n#define USB_OTG_HCINT_TXERR_Msk                  (0x1UL << USB_OTG_HCINT_TXERR_Pos) /*!< 0x00000080 */\n#define USB_OTG_HCINT_TXERR                      USB_OTG_HCINT_TXERR_Msk       /*!< Transaction error */\n#define USB_OTG_HCINT_BBERR_Pos                  (8U)\n#define USB_OTG_HCINT_BBERR_Msk                  (0x1UL << USB_OTG_HCINT_BBERR_Pos) /*!< 0x00000100 */\n#define USB_OTG_HCINT_BBERR                      USB_OTG_HCINT_BBERR_Msk       /*!< Babble error */\n#define USB_OTG_HCINT_FRMOR_Pos                  (9U)\n#define USB_OTG_HCINT_FRMOR_Msk                  (0x1UL << USB_OTG_HCINT_FRMOR_Pos) /*!< 0x00000200 */\n#define USB_OTG_HCINT_FRMOR                      USB_OTG_HCINT_FRMOR_Msk       /*!< Frame overrun */\n#define USB_OTG_HCINT_DTERR_Pos                  (10U)\n#define USB_OTG_HCINT_DTERR_Msk                  (0x1UL << USB_OTG_HCINT_DTERR_Pos) /*!< 0x00000400 */\n#define USB_OTG_HCINT_DTERR                      USB_OTG_HCINT_DTERR_Msk       /*!< Data toggle error */\n\n/********************  Bit definition forUSB_OTG_DIEPINT register  ********************/\n#define USB_OTG_DIEPINT_XFRC_Pos                 (0U)\n#define USB_OTG_DIEPINT_XFRC_Msk                 (0x1UL << USB_OTG_DIEPINT_XFRC_Pos) /*!< 0x00000001 */\n#define USB_OTG_DIEPINT_XFRC                     USB_OTG_DIEPINT_XFRC_Msk      /*!< Transfer completed interrupt */\n#define USB_OTG_DIEPINT_EPDISD_Pos               (1U)\n#define USB_OTG_DIEPINT_EPDISD_Msk               (0x1UL << USB_OTG_DIEPINT_EPDISD_Pos) /*!< 0x00000002 */\n#define USB_OTG_DIEPINT_EPDISD                   USB_OTG_DIEPINT_EPDISD_Msk    /*!< Endpoint disabled interrupt */\n#define USB_OTG_DIEPINT_AHBERR_Pos               (2U)\n#define USB_OTG_DIEPINT_AHBERR_Msk               (0x1UL << USB_OTG_DIEPINT_AHBERR_Pos) /*!< 0x00000004 */\n#define USB_OTG_DIEPINT_AHBERR                   USB_OTG_DIEPINT_AHBERR_Msk   /*!< AHB Error (AHBErr) during an IN transaction */\n#define USB_OTG_DIEPINT_TOC_Pos                  (3U)\n#define USB_OTG_DIEPINT_TOC_Msk                  (0x1UL << USB_OTG_DIEPINT_TOC_Pos) /*!< 0x00000008 */\n#define USB_OTG_DIEPINT_TOC                      USB_OTG_DIEPINT_TOC_Msk       /*!< Timeout condition */\n#define USB_OTG_DIEPINT_ITTXFE_Pos               (4U)\n#define USB_OTG_DIEPINT_ITTXFE_Msk               (0x1UL << USB_OTG_DIEPINT_ITTXFE_Pos) /*!< 0x00000010 */\n#define USB_OTG_DIEPINT_ITTXFE                   USB_OTG_DIEPINT_ITTXFE_Msk    /*!< IN token received when TxFIFO is empty */\n#define USB_OTG_DIEPINT_INEPNM_Pos               (5U)\n#define USB_OTG_DIEPINT_INEPNM_Msk               (0x1UL << USB_OTG_DIEPINT_INEPNM_Pos) /*!< 0x00000020 */\n#define USB_OTG_DIEPINT_INEPNM                   USB_OTG_DIEPINT_INEPNM_Msk   /*!< IN token received with EP mismatch */\n#define USB_OTG_DIEPINT_INEPNE_Pos               (6U)\n#define USB_OTG_DIEPINT_INEPNE_Msk               (0x1UL << USB_OTG_DIEPINT_INEPNE_Pos) /*!< 0x00000040 */\n#define USB_OTG_DIEPINT_INEPNE                   USB_OTG_DIEPINT_INEPNE_Msk    /*!< IN endpoint NAK effective */\n#define USB_OTG_DIEPINT_TXFE_Pos                 (7U)\n#define USB_OTG_DIEPINT_TXFE_Msk                 (0x1UL << USB_OTG_DIEPINT_TXFE_Pos) /*!< 0x00000080 */\n#define USB_OTG_DIEPINT_TXFE                     USB_OTG_DIEPINT_TXFE_Msk      /*!< Transmit FIFO empty */\n#define USB_OTG_DIEPINT_TXFIFOUDRN_Pos           (8U)\n#define USB_OTG_DIEPINT_TXFIFOUDRN_Msk           (0x1UL << USB_OTG_DIEPINT_TXFIFOUDRN_Pos) /*!< 0x00000100 */\n#define USB_OTG_DIEPINT_TXFIFOUDRN               USB_OTG_DIEPINT_TXFIFOUDRN_Msk /*!< Transmit Fifo Underrun */\n#define USB_OTG_DIEPINT_BNA_Pos                  (9U)\n#define USB_OTG_DIEPINT_BNA_Msk                  (0x1UL << USB_OTG_DIEPINT_BNA_Pos) /*!< 0x00000200 */\n#define USB_OTG_DIEPINT_BNA                      USB_OTG_DIEPINT_BNA_Msk       /*!< Buffer not available interrupt */\n#define USB_OTG_DIEPINT_PKTDRPSTS_Pos            (11U)\n#define USB_OTG_DIEPINT_PKTDRPSTS_Msk            (0x1UL << USB_OTG_DIEPINT_PKTDRPSTS_Pos) /*!< 0x00000800 */\n#define USB_OTG_DIEPINT_PKTDRPSTS                USB_OTG_DIEPINT_PKTDRPSTS_Msk /*!< Packet dropped status */\n#define USB_OTG_DIEPINT_BERR_Pos                 (12U)\n#define USB_OTG_DIEPINT_BERR_Msk                 (0x1UL << USB_OTG_DIEPINT_BERR_Pos) /*!< 0x00001000 */\n#define USB_OTG_DIEPINT_BERR                     USB_OTG_DIEPINT_BERR_Msk      /*!< Babble error interrupt */\n#define USB_OTG_DIEPINT_NAK_Pos                  (13U)\n#define USB_OTG_DIEPINT_NAK_Msk                  (0x1UL << USB_OTG_DIEPINT_NAK_Pos) /*!< 0x00002000 */\n#define USB_OTG_DIEPINT_NAK                      USB_OTG_DIEPINT_NAK_Msk       /*!< NAK interrupt */\n\n/********************  Bit definition forUSB_OTG_HCINTMSK register  ********************/\n#define USB_OTG_HCINTMSK_XFRCM_Pos               (0U)\n#define USB_OTG_HCINTMSK_XFRCM_Msk               (0x1UL << USB_OTG_HCINTMSK_XFRCM_Pos) /*!< 0x00000001 */\n#define USB_OTG_HCINTMSK_XFRCM                   USB_OTG_HCINTMSK_XFRCM_Msk    /*!< Transfer completed mask */\n#define USB_OTG_HCINTMSK_CHHM_Pos                (1U)\n#define USB_OTG_HCINTMSK_CHHM_Msk                (0x1UL << USB_OTG_HCINTMSK_CHHM_Pos) /*!< 0x00000002 */\n#define USB_OTG_HCINTMSK_CHHM                    USB_OTG_HCINTMSK_CHHM_Msk     /*!< Channel halted mask */\n#define USB_OTG_HCINTMSK_AHBERR_Pos              (2U)\n#define USB_OTG_HCINTMSK_AHBERR_Msk              (0x1UL << USB_OTG_HCINTMSK_AHBERR_Pos) /*!< 0x00000004 */\n#define USB_OTG_HCINTMSK_AHBERR                  USB_OTG_HCINTMSK_AHBERR_Msk   /*!< AHB error */\n#define USB_OTG_HCINTMSK_STALLM_Pos              (3U)\n#define USB_OTG_HCINTMSK_STALLM_Msk              (0x1UL << USB_OTG_HCINTMSK_STALLM_Pos) /*!< 0x00000008 */\n#define USB_OTG_HCINTMSK_STALLM                  USB_OTG_HCINTMSK_STALLM_Msk   /*!< STALL response received interrupt mask */\n#define USB_OTG_HCINTMSK_NAKM_Pos                (4U)\n#define USB_OTG_HCINTMSK_NAKM_Msk                (0x1UL << USB_OTG_HCINTMSK_NAKM_Pos) /*!< 0x00000010 */\n#define USB_OTG_HCINTMSK_NAKM                    USB_OTG_HCINTMSK_NAKM_Msk     /*!< NAK response received interrupt mask */\n#define USB_OTG_HCINTMSK_ACKM_Pos                (5U)\n#define USB_OTG_HCINTMSK_ACKM_Msk                (0x1UL << USB_OTG_HCINTMSK_ACKM_Pos) /*!< 0x00000020 */\n#define USB_OTG_HCINTMSK_ACKM                    USB_OTG_HCINTMSK_ACKM_Msk     /*!< ACK response received/transmitted interrupt mask */\n#define USB_OTG_HCINTMSK_NYET_Pos                (6U)\n#define USB_OTG_HCINTMSK_NYET_Msk                (0x1UL << USB_OTG_HCINTMSK_NYET_Pos) /*!< 0x00000040 */\n#define USB_OTG_HCINTMSK_NYET                    USB_OTG_HCINTMSK_NYET_Msk     /*!< response received interrupt mask */\n#define USB_OTG_HCINTMSK_TXERRM_Pos              (7U)\n#define USB_OTG_HCINTMSK_TXERRM_Msk              (0x1UL << USB_OTG_HCINTMSK_TXERRM_Pos) /*!< 0x00000080 */\n#define USB_OTG_HCINTMSK_TXERRM                  USB_OTG_HCINTMSK_TXERRM_Msk   /*!< Transaction error mask */\n#define USB_OTG_HCINTMSK_BBERRM_Pos              (8U)\n#define USB_OTG_HCINTMSK_BBERRM_Msk              (0x1UL << USB_OTG_HCINTMSK_BBERRM_Pos) /*!< 0x00000100 */\n#define USB_OTG_HCINTMSK_BBERRM                  USB_OTG_HCINTMSK_BBERRM_Msk   /*!< Babble error mask */\n#define USB_OTG_HCINTMSK_FRMORM_Pos              (9U)\n#define USB_OTG_HCINTMSK_FRMORM_Msk              (0x1UL << USB_OTG_HCINTMSK_FRMORM_Pos) /*!< 0x00000200 */\n#define USB_OTG_HCINTMSK_FRMORM                  USB_OTG_HCINTMSK_FRMORM_Msk   /*!< Frame overrun mask */\n#define USB_OTG_HCINTMSK_DTERRM_Pos              (10U)\n#define USB_OTG_HCINTMSK_DTERRM_Msk              (0x1UL << USB_OTG_HCINTMSK_DTERRM_Pos) /*!< 0x00000400 */\n#define USB_OTG_HCINTMSK_DTERRM                  USB_OTG_HCINTMSK_DTERRM_Msk   /*!< Data toggle error mask */\n\n/********************  Bit definition for USB_OTG_DIEPTSIZ register  ********************/\n\n#define USB_OTG_DIEPTSIZ_XFRSIZ_Pos              (0U)\n#define USB_OTG_DIEPTSIZ_XFRSIZ_Msk              (0x7FFFFUL << USB_OTG_DIEPTSIZ_XFRSIZ_Pos) /*!< 0x0007FFFF */\n#define USB_OTG_DIEPTSIZ_XFRSIZ                  USB_OTG_DIEPTSIZ_XFRSIZ_Msk   /*!< Transfer size */\n#define USB_OTG_DIEPTSIZ_PKTCNT_Pos              (19U)\n#define USB_OTG_DIEPTSIZ_PKTCNT_Msk              (0x3FFUL << USB_OTG_DIEPTSIZ_PKTCNT_Pos) /*!< 0x1FF80000 */\n#define USB_OTG_DIEPTSIZ_PKTCNT                  USB_OTG_DIEPTSIZ_PKTCNT_Msk   /*!< Packet count */\n#define USB_OTG_DIEPTSIZ_MULCNT_Pos              (29U)\n#define USB_OTG_DIEPTSIZ_MULCNT_Msk              (0x3UL << USB_OTG_DIEPTSIZ_MULCNT_Pos) /*!< 0x60000000 */\n#define USB_OTG_DIEPTSIZ_MULCNT                  USB_OTG_DIEPTSIZ_MULCNT_Msk   /*!< Packet count */\n/********************  Bit definition forUSB_OTG_HCTSIZ register  ********************/\n#define USB_OTG_HCTSIZ_XFRSIZ_Pos                (0U)\n#define USB_OTG_HCTSIZ_XFRSIZ_Msk                (0x7FFFFUL << USB_OTG_HCTSIZ_XFRSIZ_Pos) /*!< 0x0007FFFF */\n#define USB_OTG_HCTSIZ_XFRSIZ                    USB_OTG_HCTSIZ_XFRSIZ_Msk     /*!< Transfer size */\n#define USB_OTG_HCTSIZ_PKTCNT_Pos                (19U)\n#define USB_OTG_HCTSIZ_PKTCNT_Msk                (0x3FFUL << USB_OTG_HCTSIZ_PKTCNT_Pos) /*!< 0x1FF80000 */\n#define USB_OTG_HCTSIZ_PKTCNT                    USB_OTG_HCTSIZ_PKTCNT_Msk     /*!< Packet count */\n#define USB_OTG_HCTSIZ_DOPING_Pos                (31U)\n#define USB_OTG_HCTSIZ_DOPING_Msk                (0x1UL << USB_OTG_HCTSIZ_DOPING_Pos) /*!< 0x80000000 */\n#define USB_OTG_HCTSIZ_DOPING                    USB_OTG_HCTSIZ_DOPING_Msk     /*!< Do PING */\n#define USB_OTG_HCTSIZ_DPID_Pos                  (29U)\n#define USB_OTG_HCTSIZ_DPID_Msk                  (0x3UL << USB_OTG_HCTSIZ_DPID_Pos) /*!< 0x60000000 */\n#define USB_OTG_HCTSIZ_DPID                      USB_OTG_HCTSIZ_DPID_Msk       /*!< Data PID */\n#define USB_OTG_HCTSIZ_DPID_0                    (0x1UL << USB_OTG_HCTSIZ_DPID_Pos) /*!< 0x20000000 */\n#define USB_OTG_HCTSIZ_DPID_1                    (0x2UL << USB_OTG_HCTSIZ_DPID_Pos) /*!< 0x40000000 */\n\n/********************  Bit definition forUSB_OTG_DIEPDMA register  ********************/\n#define USB_OTG_DIEPDMA_DMAADDR_Pos              (0U)\n#define USB_OTG_DIEPDMA_DMAADDR_Msk              (0xFFFFFFFFUL << USB_OTG_DIEPDMA_DMAADDR_Pos) /*!< 0xFFFFFFFF */\n#define USB_OTG_DIEPDMA_DMAADDR                  USB_OTG_DIEPDMA_DMAADDR_Msk   /*!< DMA address */\n\n/********************  Bit definition forUSB_OTG_HCDMA register  ********************/\n#define USB_OTG_HCDMA_DMAADDR_Pos                (0U)\n#define USB_OTG_HCDMA_DMAADDR_Msk                (0xFFFFFFFFUL << USB_OTG_HCDMA_DMAADDR_Pos) /*!< 0xFFFFFFFF */\n#define USB_OTG_HCDMA_DMAADDR                    USB_OTG_HCDMA_DMAADDR_Msk     /*!< DMA address */\n\n/********************  Bit definition forUSB_OTG_DTXFSTS register  ********************/\n#define USB_OTG_DTXFSTS_INEPTFSAV_Pos            (0U)\n#define USB_OTG_DTXFSTS_INEPTFSAV_Msk            (0xFFFFUL << USB_OTG_DTXFSTS_INEPTFSAV_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_DTXFSTS_INEPTFSAV                USB_OTG_DTXFSTS_INEPTFSAV_Msk /*!< IN endpoint TxFIFO space available */\n\n/********************  Bit definition forUSB_OTG_DIEPTXF register  ********************/\n#define USB_OTG_DIEPTXF_INEPTXSA_Pos             (0U)\n#define USB_OTG_DIEPTXF_INEPTXSA_Msk             (0xFFFFUL << USB_OTG_DIEPTXF_INEPTXSA_Pos) /*!< 0x0000FFFF */\n#define USB_OTG_DIEPTXF_INEPTXSA                 USB_OTG_DIEPTXF_INEPTXSA_Msk  /*!< IN endpoint FIFOx transmit RAM start address */\n#define USB_OTG_DIEPTXF_INEPTXFD_Pos             (16U)\n#define USB_OTG_DIEPTXF_INEPTXFD_Msk             (0xFFFFUL << USB_OTG_DIEPTXF_INEPTXFD_Pos) /*!< 0xFFFF0000 */\n#define USB_OTG_DIEPTXF_INEPTXFD                 USB_OTG_DIEPTXF_INEPTXFD_Msk  /*!< IN endpoint TxFIFO depth */\n\n/********************  Bit definition forUSB_OTG_DOEPCTL register  ********************/\n\n#define USB_OTG_DOEPCTL_MPSIZ_Pos                (0U)\n#define USB_OTG_DOEPCTL_MPSIZ_Msk                (0x7FFUL << USB_OTG_DOEPCTL_MPSIZ_Pos) /*!< 0x000007FF */\n#define USB_OTG_DOEPCTL_MPSIZ                    USB_OTG_DOEPCTL_MPSIZ_Msk     /*!< Maximum packet size */          /*!<Bit 1 */\n#define USB_OTG_DOEPCTL_USBAEP_Pos               (15U)\n#define USB_OTG_DOEPCTL_USBAEP_Msk               (0x1UL << USB_OTG_DOEPCTL_USBAEP_Pos) /*!< 0x00008000 */\n#define USB_OTG_DOEPCTL_USBAEP                   USB_OTG_DOEPCTL_USBAEP_Msk    /*!< USB active endpoint */\n#define USB_OTG_DOEPCTL_NAKSTS_Pos               (17U)\n#define USB_OTG_DOEPCTL_NAKSTS_Msk               (0x1UL << USB_OTG_DOEPCTL_NAKSTS_Pos) /*!< 0x00020000 */\n#define USB_OTG_DOEPCTL_NAKSTS                   USB_OTG_DOEPCTL_NAKSTS_Msk    /*!< NAK status */\n#define USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Pos       (28U)\n#define USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Msk       (0x1UL << USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Pos) /*!< 0x10000000 */\n#define USB_OTG_DOEPCTL_SD0PID_SEVNFRM           USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Msk /*!< Set DATA0 PID */\n#define USB_OTG_DOEPCTL_SODDFRM_Pos              (29U)\n#define USB_OTG_DOEPCTL_SODDFRM_Msk              (0x1UL << USB_OTG_DOEPCTL_SODDFRM_Pos) /*!< 0x20000000 */\n#define USB_OTG_DOEPCTL_SODDFRM                  USB_OTG_DOEPCTL_SODDFRM_Msk   /*!< Set odd frame */\n#define USB_OTG_DOEPCTL_EPTYP_Pos                (18U)\n#define USB_OTG_DOEPCTL_EPTYP_Msk                (0x3UL << USB_OTG_DOEPCTL_EPTYP_Pos) /*!< 0x000C0000 */\n#define USB_OTG_DOEPCTL_EPTYP                    USB_OTG_DOEPCTL_EPTYP_Msk     /*!< Endpoint type */\n#define USB_OTG_DOEPCTL_EPTYP_0                  (0x1UL << USB_OTG_DOEPCTL_EPTYP_Pos) /*!< 0x00040000 */\n#define USB_OTG_DOEPCTL_EPTYP_1                  (0x2UL << USB_OTG_DOEPCTL_EPTYP_Pos) /*!< 0x00080000 */\n#define USB_OTG_DOEPCTL_SNPM_Pos                 (20U)\n#define USB_OTG_DOEPCTL_SNPM_Msk                 (0x1UL << USB_OTG_DOEPCTL_SNPM_Pos) /*!< 0x00100000 */\n#define USB_OTG_DOEPCTL_SNPM                     USB_OTG_DOEPCTL_SNPM_Msk      /*!< Snoop mode */\n#define USB_OTG_DOEPCTL_STALL_Pos                (21U)\n#define USB_OTG_DOEPCTL_STALL_Msk                (0x1UL << USB_OTG_DOEPCTL_STALL_Pos) /*!< 0x00200000 */\n#define USB_OTG_DOEPCTL_STALL                    USB_OTG_DOEPCTL_STALL_Msk     /*!< STALL handshake */\n#define USB_OTG_DOEPCTL_CNAK_Pos                 (26U)\n#define USB_OTG_DOEPCTL_CNAK_Msk                 (0x1UL << USB_OTG_DOEPCTL_CNAK_Pos) /*!< 0x04000000 */\n#define USB_OTG_DOEPCTL_CNAK                     USB_OTG_DOEPCTL_CNAK_Msk      /*!< Clear NAK */\n#define USB_OTG_DOEPCTL_SNAK_Pos                 (27U)\n#define USB_OTG_DOEPCTL_SNAK_Msk                 (0x1UL << USB_OTG_DOEPCTL_SNAK_Pos) /*!< 0x08000000 */\n#define USB_OTG_DOEPCTL_SNAK                     USB_OTG_DOEPCTL_SNAK_Msk      /*!< Set NAK */\n#define USB_OTG_DOEPCTL_EPDIS_Pos                (30U)\n#define USB_OTG_DOEPCTL_EPDIS_Msk                (0x1UL << USB_OTG_DOEPCTL_EPDIS_Pos) /*!< 0x40000000 */\n#define USB_OTG_DOEPCTL_EPDIS                    USB_OTG_DOEPCTL_EPDIS_Msk     /*!< Endpoint disable */\n#define USB_OTG_DOEPCTL_EPENA_Pos                (31U)\n#define USB_OTG_DOEPCTL_EPENA_Msk                (0x1UL << USB_OTG_DOEPCTL_EPENA_Pos) /*!< 0x80000000 */\n#define USB_OTG_DOEPCTL_EPENA                    USB_OTG_DOEPCTL_EPENA_Msk     /*!< Endpoint enable */\n\n/********************  Bit definition forUSB_OTG_DOEPINT register  ********************/\n#define USB_OTG_DOEPINT_XFRC_Pos                 (0U)\n#define USB_OTG_DOEPINT_XFRC_Msk                 (0x1UL << USB_OTG_DOEPINT_XFRC_Pos) /*!< 0x00000001 */\n#define USB_OTG_DOEPINT_XFRC                     USB_OTG_DOEPINT_XFRC_Msk      /*!< Transfer completed interrupt */\n#define USB_OTG_DOEPINT_EPDISD_Pos               (1U)\n#define USB_OTG_DOEPINT_EPDISD_Msk               (0x1UL << USB_OTG_DOEPINT_EPDISD_Pos) /*!< 0x00000002 */\n#define USB_OTG_DOEPINT_EPDISD                   USB_OTG_DOEPINT_EPDISD_Msk    /*!< Endpoint disabled interrupt */\n#define USB_OTG_DOEPINT_AHBERR_Pos               (2U)\n#define USB_OTG_DOEPINT_AHBERR_Msk               (0x1UL << USB_OTG_DOEPINT_AHBERR_Pos) /*!< 0x00000004 */\n#define USB_OTG_DOEPINT_AHBERR                   USB_OTG_DOEPINT_AHBERR_Msk   /*!< AHB Error (AHBErr) during an OUT transaction */\n#define USB_OTG_DOEPINT_STUP_Pos                 (3U)\n#define USB_OTG_DOEPINT_STUP_Msk                 (0x1UL << USB_OTG_DOEPINT_STUP_Pos) /*!< 0x00000008 */\n#define USB_OTG_DOEPINT_STUP                     USB_OTG_DOEPINT_STUP_Msk      /*!< SETUP phase done */\n#define USB_OTG_DOEPINT_OTEPDIS_Pos              (4U)\n#define USB_OTG_DOEPINT_OTEPDIS_Msk              (0x1UL << USB_OTG_DOEPINT_OTEPDIS_Pos) /*!< 0x00000010 */\n#define USB_OTG_DOEPINT_OTEPDIS                  USB_OTG_DOEPINT_OTEPDIS_Msk   /*!< OUT token received when endpoint disabled */\n#define USB_OTG_DOEPINT_OTEPSPR_Pos              (5U)\n#define USB_OTG_DOEPINT_OTEPSPR_Msk              (0x1UL << USB_OTG_DOEPINT_OTEPSPR_Pos) /*!< 0x00000020 */\n#define USB_OTG_DOEPINT_OTEPSPR                  USB_OTG_DOEPINT_OTEPSPR_Msk   /*!< OUT Status Phase Received interrupt */\n#define USB_OTG_DOEPINT_B2BSTUP_Pos              (6U)\n#define USB_OTG_DOEPINT_B2BSTUP_Msk              (0x1UL << USB_OTG_DOEPINT_B2BSTUP_Pos) /*!< 0x00000040 */\n#define USB_OTG_DOEPINT_B2BSTUP                  USB_OTG_DOEPINT_B2BSTUP_Msk   /*!< Back-to-back SETUP packets received */\n#define USB_OTG_DOEPINT_OUTPKTERR_Pos            (8U)\n#define USB_OTG_DOEPINT_OUTPKTERR_Msk            (0x1UL << USB_OTG_DOEPINT_OUTPKTERR_Pos) /*!< 0x00000100 */\n#define USB_OTG_DOEPINT_OUTPKTERR                USB_OTG_DOEPINT_OUTPKTERR_Msk   /*!< OUT packet error */\n#define USB_OTG_DOEPINT_BERR_Pos                 (12U)\n#define USB_OTG_DOEPINT_BERR_Msk                 (0x1UL << USB_OTG_DOEPINT_BERR_Pos) /*!< 0x00001000 */\n#define USB_OTG_DOEPINT_BERR                      USB_OTG_DOEPINT_BERR_Msk   /*!< Babble error interrupt */\n#define USB_OTG_DOEPINT_NAK_Pos                  (13U)\n#define USB_OTG_DOEPINT_NAK_Msk                  (0x1UL << USB_OTG_DOEPINT_NAK_Pos) /*!< 0x00002000 */\n#define USB_OTG_DOEPINT_NAK                      USB_OTG_DOEPINT_NAK_Msk   /*!< NAK Packet is transmitted by the device */\n#define USB_OTG_DOEPINT_NYET_Pos                 (14U)\n#define USB_OTG_DOEPINT_NYET_Msk                 (0x1UL << USB_OTG_DOEPINT_NYET_Pos) /*!< 0x00004000 */\n#define USB_OTG_DOEPINT_NYET                     USB_OTG_DOEPINT_NYET_Msk      /*!< NYET interrupt */\n#define USB_OTG_DOEPINT_STPKTRX_Pos              (15U)\n#define USB_OTG_DOEPINT_STPKTRX_Msk              (0x1UL << USB_OTG_DOEPINT_STPKTRX_Pos) /*!< 0x00008000 */\n#define USB_OTG_DOEPINT_STPKTRX                  USB_OTG_DOEPINT_STPKTRX_Msk   /*!< Setup Packet Received */\n\n/********************  Bit definition forUSB_OTG_DOEPTSIZ register  ********************/\n\n#define USB_OTG_DOEPTSIZ_XFRSIZ_Pos              (0U)\n#define USB_OTG_DOEPTSIZ_XFRSIZ_Msk              (0x7FFFFUL << USB_OTG_DOEPTSIZ_XFRSIZ_Pos) /*!< 0x0007FFFF */\n#define USB_OTG_DOEPTSIZ_XFRSIZ                  USB_OTG_DOEPTSIZ_XFRSIZ_Msk   /*!< Transfer size */\n#define USB_OTG_DOEPTSIZ_PKTCNT_Pos              (19U)\n#define USB_OTG_DOEPTSIZ_PKTCNT_Msk              (0x3FFUL << USB_OTG_DOEPTSIZ_PKTCNT_Pos) /*!< 0x1FF80000 */\n#define USB_OTG_DOEPTSIZ_PKTCNT                  USB_OTG_DOEPTSIZ_PKTCNT_Msk   /*!< Packet count */\n\n#define USB_OTG_DOEPTSIZ_STUPCNT_Pos             (29U)\n#define USB_OTG_DOEPTSIZ_STUPCNT_Msk             (0x3UL << USB_OTG_DOEPTSIZ_STUPCNT_Pos) /*!< 0x60000000 */\n#define USB_OTG_DOEPTSIZ_STUPCNT                 USB_OTG_DOEPTSIZ_STUPCNT_Msk  /*!< SETUP packet count */\n#define USB_OTG_DOEPTSIZ_STUPCNT_0               (0x1UL << USB_OTG_DOEPTSIZ_STUPCNT_Pos) /*!< 0x20000000 */\n#define USB_OTG_DOEPTSIZ_STUPCNT_1               (0x2UL << USB_OTG_DOEPTSIZ_STUPCNT_Pos) /*!< 0x40000000 */\n\n/********************  Bit definition for PCGCCTL register  ********************/\n#define USB_OTG_PCGCCTL_STOPCLK_Pos              (0U)\n#define USB_OTG_PCGCCTL_STOPCLK_Msk              (0x1UL << USB_OTG_PCGCCTL_STOPCLK_Pos) /*!< 0x00000001 */\n#define USB_OTG_PCGCCTL_STOPCLK                  USB_OTG_PCGCCTL_STOPCLK_Msk   /*!< SETUP packet count */\n#define USB_OTG_PCGCCTL_GATECLK_Pos              (1U)\n#define USB_OTG_PCGCCTL_GATECLK_Msk              (0x1UL << USB_OTG_PCGCCTL_GATECLK_Pos) /*!< 0x00000002 */\n#define USB_OTG_PCGCCTL_GATECLK                  USB_OTG_PCGCCTL_GATECLK_Msk   /*!<Bit 0 */\n#define USB_OTG_PCGCCTL_PHYSUSP_Pos              (4U)\n#define USB_OTG_PCGCCTL_PHYSUSP_Msk              (0x1UL << USB_OTG_PCGCCTL_PHYSUSP_Pos) /*!< 0x00000010 */\n#define USB_OTG_PCGCCTL_PHYSUSP                  USB_OTG_PCGCCTL_PHYSUSP_Msk   /*!<Bit 1 */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup Exported_macros\n  * @{\n  */\n\n/******************************* ADC Instances ********************************/\n#define IS_ADC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == ADC1) || \\\n                                       ((INSTANCE) == ADC2) || \\\n                                       ((INSTANCE) == ADC3))\n\n#define IS_ADC_MULTIMODE_MASTER_INSTANCE(INSTANCE) ((INSTANCE) == ADC1)\n\n#define IS_ADC_COMMON_INSTANCE(INSTANCE) (((INSTANCE) == ADC12_COMMON) ||\\\n                                          ((INSTANCE) == ADC3_COMMON))\n\n/******************************** COMP Instances ******************************/\n#define IS_COMP_ALL_INSTANCE(INSTANCE) (((INSTANCE) == COMP1) || \\\n                                       ((INSTANCE) == COMP2))\n\n#define IS_COMP_COMMON_INSTANCE(INSTANCE) ((INSTANCE) == COMP12_COMMON)\n/******************** COMP Instances with window mode capability **************/\n#define IS_COMP_WINDOWMODE_INSTANCE(INSTANCE) ((INSTANCE) == COMP2)\n\n\n/******************************* CRC Instances ********************************/\n#define IS_CRC_ALL_INSTANCE(INSTANCE) ((INSTANCE) == CRC)\n\n/******************************* DAC Instances ********************************/\n#define IS_DAC_ALL_INSTANCE(INSTANCE) ((INSTANCE) == DAC1)\n/******************************* DCMI Instances *******************************/\n#define IS_DCMI_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == DCMI)\n\n/******************************* DELAYBLOCK Instances *******************************/\n#define IS_DLYB_ALL_INSTANCE(INSTANCE)  (((INSTANCE) == DLYB_SDMMC1) || \\\n                                         ((INSTANCE) == DLYB_SDMMC2) || \\\n                                         ((INSTANCE) == DLYB_QUADSPI))\n/****************************** DFSDM Instances *******************************/\n#define IS_DFSDM_FILTER_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DFSDM1_Filter0) || \\\n                                               ((INSTANCE) == DFSDM1_Filter1) || \\\n                                               ((INSTANCE) == DFSDM1_Filter2) || \\\n                                               ((INSTANCE) == DFSDM1_Filter3))\n\n#define IS_DFSDM_CHANNEL_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DFSDM1_Channel0) || \\\n                                                 ((INSTANCE) == DFSDM1_Channel1) || \\\n                                                 ((INSTANCE) == DFSDM1_Channel2) || \\\n                                                 ((INSTANCE) == DFSDM1_Channel3) || \\\n                                                 ((INSTANCE) == DFSDM1_Channel4) || \\\n                                                 ((INSTANCE) == DFSDM1_Channel5) || \\\n                                                 ((INSTANCE) == DFSDM1_Channel6) || \\\n                                                 ((INSTANCE) == DFSDM1_Channel7))\n/****************************** RAMECC Instances ******************************/\n#define IS_RAMECC_MONITOR_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RAMECC1_Monitor1)   || \\\n                                                  ((INSTANCE) == RAMECC1_Monitor2)   || \\\n                                                  ((INSTANCE) == RAMECC1_Monitor3)   || \\\n                                                  ((INSTANCE) == RAMECC1_Monitor4)   || \\\n                                                  ((INSTANCE) == RAMECC1_Monitor5)   || \\\n                                                  ((INSTANCE) == RAMECC2_Monitor1)   || \\\n                                                  ((INSTANCE) == RAMECC2_Monitor2)   || \\\n                                                  ((INSTANCE) == RAMECC2_Monitor3)   || \\\n                                                  ((INSTANCE) == RAMECC2_Monitor4)   || \\\n                                                  ((INSTANCE) == RAMECC2_Monitor5)   || \\\n                                                  ((INSTANCE) == RAMECC3_Monitor1)   || \\\n                                                  ((INSTANCE) == RAMECC3_Monitor2))\n\n/******************************** DMA Instances *******************************/\n#define IS_DMA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DMA1_Stream0)   || \\\n                                       ((INSTANCE) == DMA1_Stream1)   || \\\n                                       ((INSTANCE) == DMA1_Stream2)   || \\\n                                       ((INSTANCE) == DMA1_Stream3)   || \\\n                                       ((INSTANCE) == DMA1_Stream4)   || \\\n                                       ((INSTANCE) == DMA1_Stream5)   || \\\n                                       ((INSTANCE) == DMA1_Stream6)   || \\\n                                       ((INSTANCE) == DMA1_Stream7)   || \\\n                                       ((INSTANCE) == DMA2_Stream0)   || \\\n                                       ((INSTANCE) == DMA2_Stream1)   || \\\n                                       ((INSTANCE) == DMA2_Stream2)   || \\\n                                       ((INSTANCE) == DMA2_Stream3)   || \\\n                                       ((INSTANCE) == DMA2_Stream4)   || \\\n                                       ((INSTANCE) == DMA2_Stream5)   || \\\n                                       ((INSTANCE) == DMA2_Stream6)   || \\\n                                       ((INSTANCE) == DMA2_Stream7)   || \\\n                                       ((INSTANCE) == BDMA_Channel0) || \\\n                                       ((INSTANCE) == BDMA_Channel1) || \\\n                                       ((INSTANCE) == BDMA_Channel2) || \\\n                                       ((INSTANCE) == BDMA_Channel3) || \\\n                                       ((INSTANCE) == BDMA_Channel4) || \\\n                                       ((INSTANCE) == BDMA_Channel5) || \\\n                                       ((INSTANCE) == BDMA_Channel6) || \\\n                                       ((INSTANCE) == BDMA_Channel7))\n\n/****************************** BDMA CHANNEL Instances ***************************/\n#define IS_BDMA_CHANNEL_INSTANCE(INSTANCE) (((INSTANCE) == BDMA_Channel0) || \\\n                                            ((INSTANCE) == BDMA_Channel1) || \\\n                                            ((INSTANCE) == BDMA_Channel2) || \\\n                                            ((INSTANCE) == BDMA_Channel3) || \\\n                                            ((INSTANCE) == BDMA_Channel4) || \\\n                                            ((INSTANCE) == BDMA_Channel5) || \\\n                                            ((INSTANCE) == BDMA_Channel6) || \\\n                                            ((INSTANCE) == BDMA_Channel7))\n\n/****************************** DMA DMAMUX ALL Instances ***************************/\n#define IS_DMA_DMAMUX_ALL_INSTANCE(INSTANCE)  (((INSTANCE) == DMA1_Stream0)    || \\\n                                               ((INSTANCE) == DMA1_Stream1)    || \\\n                                               ((INSTANCE) == DMA1_Stream2)    || \\\n                                               ((INSTANCE) == DMA1_Stream3)    || \\\n                                               ((INSTANCE) == DMA1_Stream4)    || \\\n                                               ((INSTANCE) == DMA1_Stream5)    || \\\n                                               ((INSTANCE) == DMA1_Stream6)    || \\\n                                               ((INSTANCE) == DMA1_Stream7)    || \\\n                                               ((INSTANCE) == DMA2_Stream0)    || \\\n                                               ((INSTANCE) == DMA2_Stream1)    || \\\n                                               ((INSTANCE) == DMA2_Stream2)    || \\\n                                               ((INSTANCE) == DMA2_Stream3)    || \\\n                                               ((INSTANCE) == DMA2_Stream4)    || \\\n                                               ((INSTANCE) == DMA2_Stream5)    || \\\n                                               ((INSTANCE) == DMA2_Stream6)    || \\\n                                               ((INSTANCE) == DMA2_Stream7)    || \\\n                                               ((INSTANCE) == BDMA_Channel0)   || \\\n                                               ((INSTANCE) == BDMA_Channel1)   || \\\n                                               ((INSTANCE) == BDMA_Channel2)   || \\\n                                               ((INSTANCE) == BDMA_Channel3)   || \\\n                                               ((INSTANCE) == BDMA_Channel4)   || \\\n                                               ((INSTANCE) == BDMA_Channel5)   || \\\n                                               ((INSTANCE) == BDMA_Channel6)   || \\\n                                               ((INSTANCE) == BDMA_Channel7))\n\n/****************************** BDMA DMAMUX Instances ***************************/\n#define IS_BDMA_CHANNEL_DMAMUX_INSTANCE(INSTANCE)  (((INSTANCE) == BDMA_Channel0) || \\\n                                                    ((INSTANCE) == BDMA_Channel1) || \\\n                                                    ((INSTANCE) == BDMA_Channel2) || \\\n                                                    ((INSTANCE) == BDMA_Channel3) || \\\n                                                    ((INSTANCE) == BDMA_Channel4) || \\\n                                                    ((INSTANCE) == BDMA_Channel5) || \\\n                                                    ((INSTANCE) == BDMA_Channel6) || \\\n                                                    ((INSTANCE) == BDMA_Channel7))\n\n/****************************** DMA STREAM Instances ***************************/\n#define IS_DMA_STREAM_INSTANCE(INSTANCE) (((INSTANCE) == DMA1_Stream0)   || \\\n                                          ((INSTANCE) == DMA1_Stream1)   || \\\n                                          ((INSTANCE) == DMA1_Stream2)   || \\\n                                          ((INSTANCE) == DMA1_Stream3)   || \\\n                                          ((INSTANCE) == DMA1_Stream4)   || \\\n                                          ((INSTANCE) == DMA1_Stream5)   || \\\n                                          ((INSTANCE) == DMA1_Stream6)   || \\\n                                          ((INSTANCE) == DMA1_Stream7)   || \\\n                                          ((INSTANCE) == DMA2_Stream0)   || \\\n                                          ((INSTANCE) == DMA2_Stream1)   || \\\n                                          ((INSTANCE) == DMA2_Stream2)   || \\\n                                          ((INSTANCE) == DMA2_Stream3)   || \\\n                                          ((INSTANCE) == DMA2_Stream4)   || \\\n                                          ((INSTANCE) == DMA2_Stream5)   || \\\n                                          ((INSTANCE) == DMA2_Stream6)   || \\\n                                          ((INSTANCE) == DMA2_Stream7))\n\n/****************************** DMA DMAMUX Instances ***************************/\n#define IS_DMA_STREAM_DMAMUX_INSTANCE(INSTANCE)  (((INSTANCE) == DMA1_Stream0)   || \\\n                                                  ((INSTANCE) == DMA1_Stream1)   || \\\n                                                  ((INSTANCE) == DMA1_Stream2)   || \\\n                                                  ((INSTANCE) == DMA1_Stream3)   || \\\n                                                  ((INSTANCE) == DMA1_Stream4)   || \\\n                                                  ((INSTANCE) == DMA1_Stream5)   || \\\n                                                  ((INSTANCE) == DMA1_Stream6)   || \\\n                                                  ((INSTANCE) == DMA1_Stream7)   || \\\n                                                  ((INSTANCE) == DMA2_Stream0)   || \\\n                                                  ((INSTANCE) == DMA2_Stream1)   || \\\n                                                  ((INSTANCE) == DMA2_Stream2)   || \\\n                                                  ((INSTANCE) == DMA2_Stream3)   || \\\n                                                  ((INSTANCE) == DMA2_Stream4)   || \\\n                                                  ((INSTANCE) == DMA2_Stream5)   || \\\n                                                  ((INSTANCE) == DMA2_Stream6)   || \\\n                                                  ((INSTANCE) == DMA2_Stream7))\n\n/******************************** DMA Request Generator Instances **************/\n#define IS_DMA_REQUEST_GEN_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DMAMUX1_RequestGenerator0) || \\\n                                                   ((INSTANCE) == DMAMUX1_RequestGenerator1) || \\\n                                                   ((INSTANCE) == DMAMUX1_RequestGenerator2) || \\\n                                                   ((INSTANCE) == DMAMUX1_RequestGenerator3) || \\\n                                                   ((INSTANCE) == DMAMUX1_RequestGenerator4) || \\\n                                                   ((INSTANCE) == DMAMUX1_RequestGenerator5) || \\\n                                                   ((INSTANCE) == DMAMUX1_RequestGenerator6) || \\\n                                                   ((INSTANCE) == DMAMUX1_RequestGenerator7) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator0) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator1) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator2) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator3) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator4) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator5) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator6) || \\\n                                                   ((INSTANCE) == DMAMUX2_RequestGenerator7))\n\n/******************************* DMA2D Instances *******************************/\n#define IS_DMA2D_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == DMA2D)\n\n/******************************** MDMA Request Generator Instances **************/\n#define IS_MDMA_STREAM_ALL_INSTANCE(INSTANCE) (((INSTANCE) == MDMA_Channel0)  || \\\n                                               ((INSTANCE) == MDMA_Channel1)  || \\\n                                               ((INSTANCE) == MDMA_Channel2)  || \\\n                                               ((INSTANCE) == MDMA_Channel3)  || \\\n                                               ((INSTANCE) == MDMA_Channel4)  || \\\n                                               ((INSTANCE) == MDMA_Channel5)  || \\\n                                               ((INSTANCE) == MDMA_Channel6)  || \\\n                                               ((INSTANCE) == MDMA_Channel7)  || \\\n                                               ((INSTANCE) == MDMA_Channel8)  || \\\n                                               ((INSTANCE) == MDMA_Channel9)  || \\\n                                               ((INSTANCE) == MDMA_Channel10) || \\\n                                               ((INSTANCE) == MDMA_Channel11) || \\\n                                               ((INSTANCE) == MDMA_Channel12) || \\\n                                               ((INSTANCE) == MDMA_Channel13) || \\\n                                               ((INSTANCE) == MDMA_Channel14) || \\\n                                               ((INSTANCE) == MDMA_Channel15))\n\n/******************************* QUADSPI Instances *******************************/\n#define IS_QSPI_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == QUADSPI)\n\n/******************************* FDCAN Instances ******************************/\n#define IS_FDCAN_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == FDCAN1) || \\\n                                             ((__INSTANCE__) == FDCAN2))\n\n#define IS_FDCAN_TT_INSTANCE(__INSTANCE__) ((__INSTANCE__) == FDCAN1)\n\n/******************************* GPIO Instances *******************************/\n#define IS_GPIO_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPIOA) || \\\n                                        ((INSTANCE) == GPIOB) || \\\n                                        ((INSTANCE) == GPIOC) || \\\n                                        ((INSTANCE) == GPIOD) || \\\n                                        ((INSTANCE) == GPIOE) || \\\n                                        ((INSTANCE) == GPIOF) || \\\n                                        ((INSTANCE) == GPIOG) || \\\n                                        ((INSTANCE) == GPIOH) || \\\n                                        ((INSTANCE) == GPIOI) || \\\n                                        ((INSTANCE) == GPIOJ) || \\\n                                        ((INSTANCE) == GPIOK))\n\n/******************************* GPIO AF Instances ****************************/\n#define IS_GPIO_AF_INSTANCE(INSTANCE)   IS_GPIO_ALL_INSTANCE(INSTANCE)\n\n/**************************** GPIO Lock Instances *****************************/\n/* On H7, all GPIO Bank support the Lock mechanism */\n#define IS_GPIO_LOCK_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)\n\n/******************************** HSEM Instances *******************************/\n#define IS_HSEM_ALL_INSTANCE(INSTANCE) ((INSTANCE) == HSEM)\n#define HSEM_CPU1_COREID         (0x00000003U) /* Semaphore Core CM7 ID */\n#define HSEM_CR_COREID_CPU1      (HSEM_CPU1_COREID << HSEM_CR_COREID_Pos)\n#define HSEM_CR_COREID_CURRENT   (HSEM_CPU1_COREID << HSEM_CR_COREID_Pos)\n\n#define HSEM_SEMID_MIN     (0U)       /* HSEM ID Min*/\n#define HSEM_SEMID_MAX     (31U)      /* HSEM ID Max */\n\n#define HSEM_PROCESSID_MIN (0U)       /* HSEM Process ID Min */\n#define HSEM_PROCESSID_MAX (255U)     /* HSEM Process ID Max */\n\n#define HSEM_CLEAR_KEY_MIN (0U)       /* HSEM clear Key Min value */\n#define HSEM_CLEAR_KEY_MAX (0xFFFFU)  /* HSEM clear Key Max value */\n\n/******************************** I2C Instances *******************************/\n#define IS_I2C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1) || \\\n                                       ((INSTANCE) == I2C2) || \\\n                                       ((INSTANCE) == I2C3) || \\\n                                       ((INSTANCE) == I2C4))\n\n/****************************** SMBUS Instances *******************************/\n#define IS_SMBUS_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1) || \\\n                                         ((INSTANCE) == I2C2) || \\\n                                         ((INSTANCE) == I2C3) || \\\n                                         ((INSTANCE) == I2C4))\n\n/************** I2C Instances : wakeup capability from stop modes *************/\n#define IS_I2C_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) IS_I2C_ALL_INSTANCE(INSTANCE)\n\n/******************************** I2S Instances *******************************/\n#define IS_I2S_ALL_INSTANCE(INSTANCE)   (((INSTANCE) == SPI1) || \\\n                                         ((INSTANCE) == SPI2) || \\\n                                         ((INSTANCE) == SPI3))\n\n/****************************** LTDC Instances ********************************/\n#define IS_LTDC_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == LTDC)\n\n/******************************* RNG Instances ********************************/\n#define IS_RNG_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == RNG)\n\n/****************************** RTC Instances *********************************/\n#define IS_RTC_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == RTC)\n\n/****************************** SDMMC Instances *********************************/\n#define IS_SDMMC_ALL_INSTANCE(_INSTANCE_) (((_INSTANCE_) == SDMMC1) || \\\n                                           ((_INSTANCE_) == SDMMC2))\n\n/******************************** SPI Instances *******************************/\n#define IS_SPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \\\n                                       ((INSTANCE) == SPI2) || \\\n                                       ((INSTANCE) == SPI3) || \\\n                                       ((INSTANCE) == SPI4) || \\\n                                       ((INSTANCE) == SPI5) || \\\n                                       ((INSTANCE) == SPI6))\n\n#define IS_SPI_HIGHEND_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \\\n                                           ((INSTANCE) == SPI2) || \\\n                                           ((INSTANCE) == SPI3))\n\n/******************************** SWPMI Instances *****************************/\n#define IS_SWPMI_INSTANCE(INSTANCE)  ((INSTANCE) == SWPMI1)\n\n/****************** LPTIM Instances : All supported instances *****************/\n#define IS_LPTIM_INSTANCE(INSTANCE)     (((INSTANCE) == LPTIM1) || \\\n                                         ((INSTANCE) == LPTIM2) || \\\n                                         ((INSTANCE) == LPTIM3) || \\\n                                         ((INSTANCE) == LPTIM4) || \\\n                                         ((INSTANCE) == LPTIM5))\n\n/****************** LPTIM Instances : supporting encoder interface **************/\n#define IS_LPTIM_ENCODER_INTERFACE_INSTANCE(INSTANCE)     (((INSTANCE) == LPTIM1) || \\\n                                                           ((INSTANCE) == LPTIM2))\n\n/****************** TIM Instances : All supported instances *******************/\n#define IS_TIM_INSTANCE(INSTANCE)       (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM2)   || \\\n                                         ((INSTANCE) == TIM3)   || \\\n                                         ((INSTANCE) == TIM4)   || \\\n                                         ((INSTANCE) == TIM5)   || \\\n                                         ((INSTANCE) == TIM6)   || \\\n                                         ((INSTANCE) == TIM7)   || \\\n                                         ((INSTANCE) == TIM8)   || \\\n                                         ((INSTANCE) == TIM12)  || \\\n                                         ((INSTANCE) == TIM13)  || \\\n                                         ((INSTANCE) == TIM14)  || \\\n                                         ((INSTANCE) == TIM15)  || \\\n                                         ((INSTANCE) == TIM16)  || \\\n                                         ((INSTANCE) == TIM17))\n\n/************* TIM Instances : at least 1 capture/compare channel *************/\n#define IS_TIM_CC1_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM2)   || \\\n                                         ((INSTANCE) == TIM3)   || \\\n                                         ((INSTANCE) == TIM4)   || \\\n                                         ((INSTANCE) == TIM5)   || \\\n                                         ((INSTANCE) == TIM8)   || \\\n                                         ((INSTANCE) == TIM12)  || \\\n                                         ((INSTANCE) == TIM13)  || \\\n                                         ((INSTANCE) == TIM14)  || \\\n                                         ((INSTANCE) == TIM15)  || \\\n                                         ((INSTANCE) == TIM16)  || \\\n                                         ((INSTANCE) == TIM17))\n\n/************ TIM Instances : at least 2 capture/compare channels *************/\n#define IS_TIM_CC2_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM2)   || \\\n                                         ((INSTANCE) == TIM3)   || \\\n                                         ((INSTANCE) == TIM4)   || \\\n                                         ((INSTANCE) == TIM5)   || \\\n                                         ((INSTANCE) == TIM8)   || \\\n                                         ((INSTANCE) == TIM12)  || \\\n                                         ((INSTANCE) == TIM15))\n\n/************ TIM Instances : at least 3 capture/compare channels *************/\n#define IS_TIM_CC3_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM2)   || \\\n                                         ((INSTANCE) == TIM3)   || \\\n                                         ((INSTANCE) == TIM4)   || \\\n                                         ((INSTANCE) == TIM5)   || \\\n                                         ((INSTANCE) == TIM8))\n\n/************ TIM Instances : at least 4 capture/compare channels *************/\n#define IS_TIM_CC4_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM2)   || \\\n                                         ((INSTANCE) == TIM3)   || \\\n                                         ((INSTANCE) == TIM4)   || \\\n                                         ((INSTANCE) == TIM5)   || \\\n                                         ((INSTANCE) == TIM8))\n\n/************ TIM Instances : at least 5 capture/compare channels *************/\n#define IS_TIM_CC5_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM8))\n/************ TIM Instances : at least 6 capture/compare channels *************/\n#define IS_TIM_CC6_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM8))\n\n/******************** TIM Instances : Advanced-control timers *****************/\n#define IS_TIM_ADVANCED_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\\n                                                ((__INSTANCE__) == TIM8))\n\n/******************** TIM Instances : Advanced-control timers *****************/\n\n/******************* TIM Instances : Timer input XOR function *****************/\n#define IS_TIM_XOR_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                         ((INSTANCE) == TIM2)   || \\\n                                         ((INSTANCE) == TIM3)   || \\\n                                         ((INSTANCE) == TIM4)   || \\\n                                         ((INSTANCE) == TIM5)   || \\\n                                         ((INSTANCE) == TIM8)   || \\\n                                         ((INSTANCE) == TIM15))\n\n/****************** TIM Instances : DMA requests generation (UDE) *************/\n#define IS_TIM_DMA_INSTANCE(INSTANCE)     (((INSTANCE) == TIM1)   || \\\n                                           ((INSTANCE) == TIM2)   || \\\n                                           ((INSTANCE) == TIM3)   || \\\n                                           ((INSTANCE) == TIM4)   || \\\n                                           ((INSTANCE) == TIM5)   || \\\n                                           ((INSTANCE) == TIM6)   || \\\n                                           ((INSTANCE) == TIM7)   || \\\n                                           ((INSTANCE) == TIM8)   || \\\n                                           ((INSTANCE) == TIM15)  || \\\n                                           ((INSTANCE) == TIM16)  || \\\n                                           ((INSTANCE) == TIM17))\n\n/************ TIM Instances : DMA requests generation (CCxDE) *****************/\n#define IS_TIM_DMA_CC_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                            ((INSTANCE) == TIM2)   || \\\n                                            ((INSTANCE) == TIM3)   || \\\n                                            ((INSTANCE) == TIM4)   || \\\n                                            ((INSTANCE) == TIM5)   || \\\n                                            ((INSTANCE) == TIM8)   || \\\n                                            ((INSTANCE) == TIM15)  || \\\n                                            ((INSTANCE) == TIM16)  || \\\n                                            ((INSTANCE) == TIM17))\n\n/************ TIM Instances : DMA requests generation (COMDE) *****************/\n#define IS_TIM_CCDMA_INSTANCE(INSTANCE)    (((INSTANCE) == TIM1)   || \\\n                                            ((INSTANCE) == TIM2)   || \\\n                                            ((INSTANCE) == TIM3)   || \\\n                                            ((INSTANCE) == TIM4)   || \\\n                                            ((INSTANCE) == TIM5)   || \\\n                                            ((INSTANCE) == TIM8)   || \\\n                                            ((INSTANCE) == TIM15))\n\n/******************** TIM Instances : DMA burst feature ***********************/\n#define IS_TIM_DMABURST_INSTANCE(INSTANCE) (((INSTANCE) == TIM1)   || \\\n                                            ((INSTANCE) == TIM2)   || \\\n                                            ((INSTANCE) == TIM3)   || \\\n                                            ((INSTANCE) == TIM4)   || \\\n                                            ((INSTANCE) == TIM5)   || \\\n                                            ((INSTANCE) == TIM8))\n\n/*************** TIM Instances : external trigger reamp input available *******/\n#define IS_TIM_ETR_INSTANCE(INSTANCE)     (((INSTANCE) == TIM1)   || \\\n                                           ((INSTANCE) == TIM2)   || \\\n                                           ((INSTANCE) == TIM3)   || \\\n                                           ((INSTANCE) == TIM4)   || \\\n                                           ((INSTANCE) == TIM5)   || \\\n                                           ((INSTANCE) == TIM8))\n\n/****************** TIM Instances : remapping capability **********************/\n#define IS_TIM_REMAP_INSTANCE(INSTANCE)  (((INSTANCE) == TIM1)  || \\\n                                          ((INSTANCE) == TIM2)  || \\\n                                          ((INSTANCE) == TIM3)  || \\\n                                          ((INSTANCE) == TIM5)  || \\\n                                          ((INSTANCE) == TIM8)  || \\\n                                          ((INSTANCE) == TIM16) || \\\n                                          ((INSTANCE) == TIM17))\n\n/*************** TIM Instances : external trigger reamp input available *******/\n#define IS_TIM_ETRSEL_INSTANCE(INSTANCE)     (((INSTANCE) == TIM1)   || \\\n                                              ((INSTANCE) == TIM2)   || \\\n                                              ((INSTANCE) == TIM3)   || \\\n                                              ((INSTANCE) == TIM5)   || \\\n                                              ((INSTANCE) == TIM8))\n\n/****** TIM Instances : master mode available (TIMx_CR2.MMS available )********/\n#define IS_TIM_MASTER_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                            ((INSTANCE) == TIM2)   || \\\n                                            ((INSTANCE) == TIM3)   || \\\n                                            ((INSTANCE) == TIM4)   || \\\n                                            ((INSTANCE) == TIM5)   || \\\n                                            ((INSTANCE) == TIM6)   || \\\n                                            ((INSTANCE) == TIM7)   || \\\n                                            ((INSTANCE) == TIM8)   || \\\n                                            ((INSTANCE) == TIM12)  || \\\n                                            ((INSTANCE) == TIM15))\n\n/****** TIM Instances : Salve mode available (TIMx_SMCR.TS available )*********/\n#define IS_TIM_SLAVE_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                           ((INSTANCE) == TIM2)   || \\\n                                           ((INSTANCE) == TIM3)   || \\\n                                           ((INSTANCE) == TIM4)   || \\\n                                           ((INSTANCE) == TIM5)   || \\\n                                           ((INSTANCE) == TIM8)   || \\\n                                           ((INSTANCE) == TIM12)  || \\\n                                           ((INSTANCE) == TIM15))\n\n/****** TIM Instances : TRGO2 available (TIMx_CR2.MMS2 available )*********/\n#define IS_TIM_TRGO2_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                           ((INSTANCE) == TIM8))\n\n/****** TIM Instances : TISEL available (TIMx_TISEL available )*********/\n#define IS_TIM_TISEL_INSTANCE(INSTANCE)  (((INSTANCE) == TIM1)   || \\\n                                          ((INSTANCE) == TIM2)   || \\\n                                          ((INSTANCE) == TIM3)   || \\\n                                          ((INSTANCE) == TIM4)   || \\\n                                          ((INSTANCE) == TIM5)   || \\\n                                          ((INSTANCE) == TIM8)   || \\\n                                          ((INSTANCE) == TIM15)  || \\\n                                          ((INSTANCE) == TIM16)  || \\\n                                          ((INSTANCE) == TIM17))\n\n/****************** TIM Instances : supporting commutation event *************/\n#define IS_TIM_COMMUTATION_EVENT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1)    || \\\n                                                     ((INSTANCE) == TIM8)    || \\\n                                                     ((INSTANCE) == TIM15)   || \\\n                                                     ((INSTANCE) == TIM16)   || \\\n                                                     ((INSTANCE) == TIM17))\n\n/****************** TIM Instances : supporting encoder interface **************/\n#define IS_TIM_ENCODER_INTERFACE_INSTANCE(__INSTANCE__)  (((__INSTANCE__) == TIM1)  || \\\n                                                      ((__INSTANCE__) == TIM2)      || \\\n                                                      ((__INSTANCE__) == TIM3)      || \\\n                                                      ((__INSTANCE__) == TIM4)      || \\\n                                                      ((__INSTANCE__) == TIM5)      || \\\n                                                      ((__INSTANCE__) == TIM8))\n\n/****** TIM Instances : TIM_CCR5_GC5C available (TIMx_CCR5.GC5C available )*********/\n#define IS_TIM_COMBINED3PHASEPWM_INSTANCE(INSTANCE)   (((INSTANCE) == TIM1)   || \\\n                                                       ((INSTANCE) == TIM8))\n/******************* TIM Instances : output(s) available **********************/\n#define IS_TIM_CCX_INSTANCE(INSTANCE, CHANNEL) \\\n    ((((INSTANCE) == TIM1) &&                  \\\n     (((CHANNEL) == TIM_CHANNEL_1) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_3) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_4) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_5) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_6)))           \\\n     ||                                        \\\n     (((INSTANCE) == TIM2) &&                  \\\n     (((CHANNEL) == TIM_CHANNEL_1) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_3) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_4)))           \\\n  ||                                           \\\n      (((INSTANCE) == TIM3) &&                 \\\n      (((CHANNEL) == TIM_CHANNEL_1)||          \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_3) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_4)))           \\\n  ||                                           \\\n      (((INSTANCE) == TIM4) &&                 \\\n      (((CHANNEL) == TIM_CHANNEL_1) ||         \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_3) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_4)))           \\\n  ||                                           \\\n      (((INSTANCE) == TIM5) &&                 \\\n      (((CHANNEL) == TIM_CHANNEL_1) ||         \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_3) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_4)))           \\\n  ||                                           \\\n      (((INSTANCE) == TIM8) &&                 \\\n      (((CHANNEL) == TIM_CHANNEL_1) ||         \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_3) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_4) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_5) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_6)))           \\\n  ||                                           \\\n     (((INSTANCE) == TIM12) &&                 \\\n     (((CHANNEL) == TIM_CHANNEL_1) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_2)))           \\\n  ||                                           \\\n     (((INSTANCE) == TIM13) &&                 \\\n     (((CHANNEL) == TIM_CHANNEL_1)))           \\\n  ||                                           \\\n     (((INSTANCE) == TIM14) &&                 \\\n     (((CHANNEL) == TIM_CHANNEL_1)))           \\\n  ||                                           \\\n     (((INSTANCE) == TIM15) &&                 \\\n     (((CHANNEL) == TIM_CHANNEL_1) ||          \\\n     ((CHANNEL) == TIM_CHANNEL_2)))            \\\n  ||                                           \\\n     (((INSTANCE) == TIM16) &&                 \\\n     (((CHANNEL) == TIM_CHANNEL_1)))           \\\n  ||                                           \\\n     (((INSTANCE) == TIM17) &&                 \\\n     (((CHANNEL) == TIM_CHANNEL_1))))\n\n/****************** TIM Instances : supporting the break function *************/\n#define IS_TIM_BREAK_INSTANCE(INSTANCE)\\\n      (((INSTANCE) == TIM1)    || \\\n      ((INSTANCE) == TIM8)     || \\\n       ((INSTANCE) == TIM15)   || \\\n       ((INSTANCE) == TIM16)   || \\\n       ((INSTANCE) == TIM17))\n\n/************** TIM Instances : supporting Break source selection *************/\n#define IS_TIM_BREAKSOURCE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1)   || \\\n                                               ((INSTANCE) == TIM8))\n\n/****************** TIM Instances : supporting complementary output(s) ********/\n#define IS_TIM_CCXN_INSTANCE(INSTANCE, CHANNEL) \\\n   ((((INSTANCE) == TIM1) &&                    \\\n     (((CHANNEL) == TIM_CHANNEL_1) ||           \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||           \\\n      ((CHANNEL) == TIM_CHANNEL_3)))            \\\n ||                                             \\\n      (((INSTANCE) == TIM8) &&                  \\\n      (((CHANNEL) == TIM_CHANNEL_1) ||          \\\n      ((CHANNEL) == TIM_CHANNEL_2) ||           \\\n      ((CHANNEL) == TIM_CHANNEL_3)))            \\\n    ||                                          \\\n    (((INSTANCE) == TIM15) &&                   \\\n      ((CHANNEL) == TIM_CHANNEL_1))             \\\n    ||                                          \\\n    (((INSTANCE) == TIM16) &&                   \\\n     ((CHANNEL) == TIM_CHANNEL_1))              \\\n    ||                                          \\\n    (((INSTANCE) == TIM17) &&                   \\\n     ((CHANNEL) == TIM_CHANNEL_1)))\n\n/****************** TIM Instances : supporting counting mode selection ********/\n#define IS_TIM_COUNTER_MODE_SELECT_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM3)    || \\\n   ((INSTANCE) == TIM4)    || \\\n   ((INSTANCE) == TIM5)    || \\\n   ((INSTANCE) == TIM8))\n\n/****************** TIM Instances : supporting repetition counter *************/\n#define IS_TIM_REPETITION_COUNTER_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM8)    || \\\n   ((INSTANCE) == TIM15)   || \\\n   ((INSTANCE) == TIM16)   || \\\n   ((INSTANCE) == TIM17))\n\n/****************** TIM Instances : supporting synchronization ****************/\n#define IS_TIM_SYNCHRO_INSTANCE(__INSTANCE__)\\\n    (((__INSTANCE__) == TIM1)    || \\\n     ((__INSTANCE__) == TIM2)    || \\\n     ((__INSTANCE__) == TIM3)    || \\\n     ((__INSTANCE__) == TIM4)    || \\\n     ((__INSTANCE__) == TIM5)    || \\\n     ((__INSTANCE__) == TIM6)    || \\\n     ((__INSTANCE__) == TIM8)    || \\\n     ((__INSTANCE__) == TIM12)   || \\\n     ((__INSTANCE__) == TIM15))\n\n/****************** TIM Instances : supporting clock division *****************/\n#define IS_TIM_CLOCK_DIVISION_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM3)    || \\\n   ((INSTANCE) == TIM4)    || \\\n   ((INSTANCE) == TIM5)    || \\\n   ((INSTANCE) == TIM8)    || \\\n   ((INSTANCE) == TIM15)   || \\\n   ((INSTANCE) == TIM16)   || \\\n   ((INSTANCE) == TIM17))\n\n/****************** TIM Instances : supporting external clock mode 1 for ETRF input */\n#define IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM3)    || \\\n   ((INSTANCE) == TIM4)    || \\\n   ((INSTANCE) == TIM5)    || \\\n   ((INSTANCE) == TIM8))\n\n/****************** TIM Instances : supporting external clock mode 2 **********/\n#define IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(INSTANCE)\\\n (((INSTANCE) == TIM1)     || \\\n   ((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM3)    || \\\n   ((INSTANCE) == TIM4)    || \\\n   ((INSTANCE) == TIM5)    || \\\n   ((INSTANCE) == TIM8))\n\n/****************** TIM Instances : supporting external clock mode 1 for TIX inputs*/\n#define IS_TIM_CLOCKSOURCE_TIX_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM3)    || \\\n   ((INSTANCE) == TIM4)    || \\\n   ((INSTANCE) == TIM5)    || \\\n   ((INSTANCE) == TIM8)    || \\\n   ((INSTANCE) == TIM12)   || \\\n   ((INSTANCE) == TIM15))\n\n/****************** TIM Instances : supporting internal trigger inputs(ITRX) *******/\n#define IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM3)    || \\\n   ((INSTANCE) == TIM4)    || \\\n   ((INSTANCE) == TIM5)    || \\\n   ((INSTANCE) == TIM8)    || \\\n   ((INSTANCE) == TIM12)   || \\\n   ((INSTANCE) == TIM15))\n\n/****************** TIM Instances : supporting OCxREF clear *******************/\n#define IS_TIM_OCXREF_CLEAR_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM3))\n\n/****************** TIM Instances : TIM_32B_COUNTER ***************************/\n#define IS_TIM_32B_COUNTER_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM2)    || \\\n   ((INSTANCE) == TIM5))\n\n/****************** TIM Instances : TIM_BKIN2 ***************************/\n#define IS_TIM_BKIN2_INSTANCE(INSTANCE)\\\n  (((INSTANCE) == TIM1)    || \\\n   ((INSTANCE) == TIM8))\n\n/****************** TIM Instances : supporting Hall sensor interface **********/\n#define IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1)  || \\\n                                                             ((__INSTANCE__) == TIM2)  || \\\n                                                             ((__INSTANCE__) == TIM3)  || \\\n                                                             ((__INSTANCE__) == TIM4)  || \\\n                                                             ((__INSTANCE__) == TIM5)  || \\\n                                                             ((__INSTANCE__) == TIM15) || \\\n                                                             ((__INSTANCE__) == TIM8))\n\n/****************************** HRTIM Instances *******************************/\n#define IS_HRTIM_ALL_INSTANCE(INSTANCE) (((INSTANCE) == HRTIM1))\n\n/******************** USART Instances : Synchronous mode **********************/\n#define IS_USART_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                     ((INSTANCE) == USART2) || \\\n                                     ((INSTANCE) == USART3) || \\\n                                     ((INSTANCE) == USART6))\n\n/******************** USART Instances : SPI slave mode ************************/\n#define IS_UART_SPI_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                              ((INSTANCE) == USART2) || \\\n                                              ((INSTANCE) == USART3) || \\\n                                              ((INSTANCE) == USART6))\n\n/******************** UART Instances : Asynchronous mode **********************/\n#define IS_UART_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                    ((INSTANCE) == USART2) || \\\n                                    ((INSTANCE) == USART3) || \\\n                                    ((INSTANCE) == UART4)  || \\\n                                    ((INSTANCE) == UART5)  || \\\n                                    ((INSTANCE) == USART6) || \\\n                                    ((INSTANCE) == UART7)  || \\\n                                    ((INSTANCE) == UART8))\n\n/******************** UART Instances : FIFO mode.******************************/\n#define IS_UART_FIFO_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                         ((INSTANCE) == USART2) || \\\n                                         ((INSTANCE) == USART3) || \\\n                                         ((INSTANCE) == UART4)  || \\\n                                         ((INSTANCE) == UART5)  || \\\n                                         ((INSTANCE) == USART6) || \\\n                                         ((INSTANCE) == UART7)  || \\\n                                         ((INSTANCE) == UART8))\n\n/****************** UART Instances : Auto Baud Rate detection *****************/\n#define IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                                            ((INSTANCE) == USART2) || \\\n                                                            ((INSTANCE) == USART3) || \\\n                                                            ((INSTANCE) == UART4)  || \\\n                                                            ((INSTANCE) == UART5)  || \\\n                                                            ((INSTANCE) == USART6) || \\\n                                                            ((INSTANCE) == UART7)  || \\\n                                                            ((INSTANCE) == UART8))\n\n/*********************** UART Instances : Driver Enable ***********************/\n#define IS_UART_DRIVER_ENABLE_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                                  ((INSTANCE) == USART2) || \\\n                                                  ((INSTANCE) == USART3) || \\\n                                                  ((INSTANCE) == UART4)  || \\\n                                                  ((INSTANCE) == UART5)  || \\\n                                                  ((INSTANCE) == USART6) || \\\n                                                  ((INSTANCE) == UART7)  || \\\n                                                  ((INSTANCE) == UART8)  || \\\n                                                  ((INSTANCE) == LPUART1))\n\n/********************* UART Instances : Half-Duplex mode **********************/\n#define IS_UART_HALFDUPLEX_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                               ((INSTANCE) == USART2) || \\\n                                               ((INSTANCE) == USART3) || \\\n                                               ((INSTANCE) == UART4)  || \\\n                                               ((INSTANCE) == UART5)  || \\\n                                               ((INSTANCE) == USART6) || \\\n                                               ((INSTANCE) == UART7)  || \\\n                                               ((INSTANCE) == UART8)  || \\\n                                               ((INSTANCE) == LPUART1))\n\n/******************* UART Instances : Hardware Flow control *******************/\n#define IS_UART_HWFLOW_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                           ((INSTANCE) == USART2) || \\\n                                           ((INSTANCE) == USART3) || \\\n                                           ((INSTANCE) == UART4)  || \\\n                                           ((INSTANCE) == UART5)  || \\\n                                           ((INSTANCE) == USART6) || \\\n                                           ((INSTANCE) == UART7)  || \\\n                                           ((INSTANCE) == UART8)  || \\\n                                           ((INSTANCE) == LPUART1))\n\n/************************* UART Instances : LIN mode **************************/\n#define IS_UART_LIN_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                        ((INSTANCE) == USART2) || \\\n                                        ((INSTANCE) == USART3) || \\\n                                        ((INSTANCE) == UART4)  || \\\n                                        ((INSTANCE) == UART5)  || \\\n                                        ((INSTANCE) == USART6) || \\\n                                        ((INSTANCE) == UART7)  || \\\n                                        ((INSTANCE) == UART8))\n\n/****************** UART Instances : Wake-up from Stop mode *******************/\n#define IS_UART_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                                    ((INSTANCE) == USART2) || \\\n                                                    ((INSTANCE) == USART3) || \\\n                                                    ((INSTANCE) == UART4)  || \\\n                                                    ((INSTANCE) == UART5)  || \\\n                                                    ((INSTANCE) == USART6) || \\\n                                                    ((INSTANCE) == UART7)  || \\\n                                                    ((INSTANCE) == UART8)  || \\\n                                                    ((INSTANCE) == LPUART1))\n\n/************************* UART Instances : IRDA mode *************************/\n#define IS_IRDA_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                    ((INSTANCE) == USART2) || \\\n                                    ((INSTANCE) == USART3) || \\\n                                    ((INSTANCE) == UART4)  || \\\n                                    ((INSTANCE) == UART5)  || \\\n                                    ((INSTANCE) == USART6) || \\\n                                    ((INSTANCE) == UART7)  || \\\n                                    ((INSTANCE) == UART8))\n\n/********************* USART Instances : Smard card mode **********************/\n#define IS_SMARTCARD_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \\\n                                         ((INSTANCE) == USART2) || \\\n                                         ((INSTANCE) == USART3) || \\\n                                         ((INSTANCE) == USART6))\n\n/****************************** LPUART Instance *******************************/\n#define IS_LPUART_INSTANCE(INSTANCE) ((INSTANCE) == LPUART1)\n\n/****************************** IWDG Instances ********************************/\n#define IS_IWDG_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == IWDG1)\n/****************************** USB Instances ********************************/\n#define IS_USB_ALL_INSTANCE(INSTANCE) ((INSTANCE) == USB)\n\n/****************************** WWDG Instances ********************************/\n#define IS_WWDG_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == WWDG1)\n/****************************** MDIOS Instances ********************************/\n#define IS_MDIOS_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == MDIOS)\n\n/****************************** CEC Instances *********************************/\n#define IS_CEC_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == CEC)\n\n/****************************** SAI Instances ********************************/\n#define IS_SAI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SAI1_Block_A) || \\\n                    ((INSTANCE) == SAI1_Block_B) || \\\n                     ((INSTANCE) == SAI2_Block_A) || \\\n                     ((INSTANCE) == SAI2_Block_B) || \\\n                     ((INSTANCE) == SAI3_Block_A) || \\\n                     ((INSTANCE) == SAI3_Block_B) || \\\n                     ((INSTANCE) == SAI4_Block_A) || \\\n                     ((INSTANCE) == SAI4_Block_B))\n\n/****************************** SPDIFRX Instances ********************************/\n#define IS_SPDIFRX_ALL_INSTANCE(INSTANCE) ((INSTANCE) == SPDIFRX)\n\n/****************************** OPAMP Instances *******************************/\n#define IS_OPAMP_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OPAMP1) || \\\n                                         ((INSTANCE) == OPAMP2))\n\n#define IS_OPAMP_COMMON_INSTANCE(COMMON_INSTANCE) ((COMMON_INSTANCE) == OPAMP12_COMMON)\n\n/*********************** USB OTG PCD Instances ********************************/\n#define IS_PCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_OTG_FS) || \\\n                                        ((INSTANCE) == USB_OTG_HS))\n\n/*********************** USB OTG HCD Instances ********************************/\n#define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_OTG_FS) || \\\n                                       ((INSTANCE) == USB_OTG_HS))\n\n/******************************************************************************/\n/*  For a painless codes migration between the STM32H7xx device product       */\n/*  lines, or with STM32F7xx devices the aliases defined below are put        */\n/*   in place to overcome the differences in the interrupt handlers and IRQn  */\n/*   definitions. No need to update developed interrupt code when moving      */\n/*  across product lines within the same STM32H7 Family                       */\n/******************************************************************************/\n\n/* Aliases for __IRQn */\n#define  RNG_IRQn                       HASH_RNG_IRQn\n#define  TIM1_BRK_TIM9_IRQn             TIM1_BRK_IRQn\n#define  TIM1_UP_TIM10_IRQn             TIM1_UP_IRQn\n#define  TIM1_TRG_COM_TIM11_IRQn        TIM1_TRG_COM_IRQn\n#define  PVD_IRQn                       PVD_AVD_IRQn\n\n\n\n/* Aliases for __IRQHandler */\n#define   RNG_IRQHandler               HASH_RNG_IRQHandler\n#define TIM1_BRK_TIM9_IRQHandler       TIM1_BRK_IRQHandler\n#define TIM1_UP_TIM9_IRQHandler        TIM1_UP_IRQHandler\n#define TIM1_TRG_COM_TIM11_IRQHandler  TIM1_TRG_COM_IRQHandler\n#define PVD_IRQHandler                 PVD_AVD_IRQHandler\n\n/* Aliases for COMP __IRQHandler */\n#define COMP_IRQHandler                COMP1_IRQHandler\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif /* __cplusplus */\n\n#endif /* STM32H750xx_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h7xx.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx.h\n  * @author  MCD Application Team\n  * @brief   CMSIS STM32H7xx Device Peripheral Access Layer Header File.\n  *\n  *          The file is the unique include file that the application programmer\n  *          is using in the C source code, usually in main.c. This file contains:\n  *           - Configuration section that allows to select:\n  *              - The STM32H7xx device used in the target application\n  *              - To use or not the peripheral's drivers in application code(i.e.\n  *                code will be based on direct access to peripheral's registers\n  *                rather than drivers API), this option is controlled by\n  *                \"#define USE_HAL_DRIVER\"\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/** @addtogroup CMSIS\n  * @{\n  */\n\n/** @addtogroup stm32h7xx\n  * @{\n  */\n\n#ifndef STM32H7xx_H\n#define STM32H7xx_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif /* __cplusplus */\n\n/** @addtogroup Library_configuration_section\n  * @{\n  */\n\n/**\n  * @brief STM32 Family\n  */\n#if !defined  (STM32H7)\n#define STM32H7\n#endif /* STM32H7 */\n\n\n/* Uncomment the line below according to the target STM32H7 device used in your\n   application\n  */\n\n#if !defined (STM32H743xx) && !defined (STM32H753xx)  && !defined (STM32H750xx) && !defined (STM32H742xx) && \\\n    !defined (STM32H745xx) && !defined (STM32H745xG)  && !defined (STM32H755xx)  && !defined (STM32H747xx) && !defined (STM32H747xG)&& !defined (STM32H757xx) && \\\n    !defined (STM32H7A3xx) && !defined (STM32H7A3xxQ) && !defined (STM32H7B3xx) && !defined (STM32H7B3xxQ) && !defined (STM32H7B0xx)  && !defined (STM32H7B0xxQ) && \\\n    !defined (STM32H735xx) && !defined (STM32H733xx)  && !defined (STM32H730xx) && !defined (STM32H730xxQ)  && !defined (STM32H725xx) && !defined (STM32H723xx)\n  /* #define STM32H742xx */   /*!< STM32H742VI, STM32H742ZI, STM32H742AI, STM32H742II, STM32H742BI, STM32H742XI Devices */\n  /* #define STM32H743xx */   /*!< STM32H743VI, STM32H743ZI, STM32H743AI, STM32H743II, STM32H743BI, STM32H743XI Devices */\n  /* #define STM32H753xx */   /*!< STM32H753VI, STM32H753ZI, STM32H753AI, STM32H753II, STM32H753BI, STM32H753XI Devices */\n  /* #define STM32H750xx */   /*!< STM32H750V, STM32H750I, STM32H750X Devices */\n  /* #define STM32H747xx */   /*!< STM32H747ZI, STM32H747AI, STM32H747II, STM32H747BI, STM32H747XI Devices */\n  /* #define STM32H747xG */   /*!< STM32H747AG, STM32H747IG, STM32H747BG, STM32H747XG */\n  /* #define STM32H757xx */   /*!< STM32H757ZI, STM32H757AI, STM32H757II, STM32H757BI, STM32H757XI Devices */\n  /* #define STM32H745xx */   /*!< STM32H745ZI, STM32H745II, STM32H745BI, STM32H745XI Devices  */\n  /* #define STM32H745xG */   /*!< STM32H745ZG, STM32H745IG, STM32H745BG, STM32H745XG Devices  */\n  /* #define STM32H755xx */   /*!< STM32H755ZI, STM32H755II, STM32H755BI, STM32H755XI Devices  */\n  /* #define STM32H7B0xx */   /*!< STM32H7B0ABIxQ, STM32H7B0IBTx, STM32H7B0RBTx, STM32H7B0VBTx, STM32H7B0ZBTx, STM32H7B0IBKxQ */\n  /* #define STM32H7A3xx */   /*!< STM32H7A3IIK6, STM32H7A3IIT6, STM32H7A3NIH6, STM32H7A3RIT6, STM32H7A3VIH6, STM32H7A3VIT6, STM32H7A3ZIT6 */\n  /* #define STM32H7A3xxQ */  /*!< STM32H7A3QIY6Q, STM32H7A3IIK6Q, STM32H7A3IIT6Q, STM32H7A3LIH6Q, STM32H7A3VIH6Q, STM32H7A3VIT6Q, STM32H7A3AII6Q, STM32H7A3ZIT6Q */\n  /* #define STM32H7B3xx */   /*!< STM32H7B3IIK6, STM32H7B3IIT6, STM32H7B3NIH6, STM32H7B3RIT6, STM32H7B3VIH6, STM32H7B3VIT6, STM32H7B3ZIT6 */\n  /* #define STM32H7B3xxQ */  /*!< STM32H7B3QIY6Q, STM32H7B3IIK6Q, STM32H7B3IIT6Q, STM32H7B3LIH6Q, STM32H7B3VIH6Q, STM32H7B3VIT6Q, STM32H7B3AII6Q, STM32H7B3ZIT6Q */\n  /* #define STM32H735xx */   /*!< STM32H735AGI6, STM32H735IGK6, STM32H735RGV6, STM32H735VGT6, STM32H735VGY6, STM32H735ZGT6 Devices */\n  /* #define STM32H733xx */   /*!< STM32H733VGH6, STM32H733VGT6, STM32H733ZGI6, STM32H733ZGT6, Devices */\n  /* #define STM32H730xx */   /*!< STM32H730VBH6, STM32H730VBT6, STM32H730ZBT6, STM32H730ZBI6 Devices */\n  /* #define STM32H730xxQ */  /*!< STM32H730IBT6Q, STM32H730ABI6Q, STM32H730IBK6Q Devices */\n  /* #define STM32H725xx */   /*!< STM32H725AGI6, STM32H725IGK6, STM32H725IGT6, STM32H725RGV6, STM32H725VGT6, STM32H725VGY6, STM32H725ZGT6, STM32H725REV6, SM32H725VET6, STM32H725ZET6, STM32H725AEI6, STM32H725IET6, STM32H725IEK6  Devices */\n  /* #define STM32H723xx */   /*!< STM32H723VGH6, STM32H723VGT6, STM32H723ZGI6, STM32H723ZGT6, STM32H723VET6, STM32H723VEH6, STM32H723ZET6, STM32H723ZEI6 Devices */\n#endif\n\n/*  Tip: To avoid modifying this file each time you need to switch between these\n        devices, you can define the device in your toolchain compiler preprocessor.\n  */\n\n#if defined(DUAL_CORE) && !defined(CORE_CM4) && !defined(CORE_CM7)\n #error \"Dual core device, please select CORE_CM4 or CORE_CM7\"\n#endif\n\n#if !defined  (USE_HAL_DRIVER)\n/**\n * @brief Comment the line below if you will not use the peripherals drivers.\n   In this case, these drivers will not be included and the application code will\n   be based on direct access to peripherals registers\n   */\n  /*#define USE_HAL_DRIVER */\n#endif /* USE_HAL_DRIVER */\n\n/**\n  * @brief CMSIS Device version number V1.10.2\n  */\n#define __STM32H7xx_CMSIS_DEVICE_VERSION_MAIN   (0x01) /*!< [31:24] main version */\n#define __STM32H7xx_CMSIS_DEVICE_VERSION_SUB1   (0x0A) /*!< [23:16] sub1 version */\n#define __STM32H7xx_CMSIS_DEVICE_VERSION_SUB2   (0x02) /*!< [15:8]  sub2 version */\n#define __STM32H7xx_CMSIS_DEVICE_VERSION_RC     (0x00) /*!< [7:0]  release candidate */\n#define __STM32H7xx_CMSIS_DEVICE_VERSION        ((__STM32H7xx_CMSIS_DEVICE_VERSION_MAIN     << 24)\\\n                                      |(__STM32H7xx_CMSIS_DEVICE_VERSION_SUB1 << 16)\\\n                                      |(__STM32H7xx_CMSIS_DEVICE_VERSION_SUB2 << 8 )\\\n                                      |(__STM32H7xx_CMSIS_DEVICE_VERSION_RC))\n\n/**\n  * @}\n  */\n\n/** @addtogroup Device_Included\n  * @{\n  */\n\n#if defined(STM32H743xx)\n  #include \"stm32h743xx.h\"\n#elif defined(STM32H753xx)\n  #include \"stm32h753xx.h\"\n#elif defined(STM32H750xx)\n  #include \"stm32h750xx.h\"\n#elif defined(STM32H742xx)\n  #include \"stm32h742xx.h\"\n#elif defined(STM32H745xx)\n  #include \"stm32h745xx.h\"\n#elif defined(STM32H745xG)\n  #include \"stm32h745xg.h\"\n#elif defined(STM32H755xx)\n  #include \"stm32h755xx.h\"\n#elif defined(STM32H747xx)\n  #include \"stm32h747xx.h\"\n#elif defined(STM32H747xG)\n  #include \"stm32h747xg.h\"\n#elif defined(STM32H757xx)\n  #include \"stm32h757xx.h\"\n#elif defined(STM32H7B0xx)\n  #include \"stm32h7b0xx.h\"\n#elif defined(STM32H7B0xxQ)\n  #include \"stm32h7b0xxq.h\"\n#elif defined(STM32H7A3xx)\n  #include \"stm32h7a3xx.h\"\n#elif defined(STM32H7B3xx)\n  #include \"stm32h7b3xx.h\"\n#elif defined(STM32H7A3xxQ)\n  #include \"stm32h7a3xxq.h\"\n#elif defined(STM32H7B3xxQ)\n  #include \"stm32h7b3xxq.h\"\n#elif defined(STM32H735xx)\n  #include \"stm32h735xx.h\"\n#elif defined(STM32H733xx)\n  #include \"stm32h733xx.h\"\n#elif defined(STM32H730xx)\n  #include \"stm32h730xx.h\"\n#elif defined(STM32H730xxQ)\n  #include \"stm32h730xxq.h\"\n#elif defined(STM32H725xx)\n  #include \"stm32h725xx.h\"\n#elif defined(STM32H723xx)\n  #include \"stm32h723xx.h\"\n#else\n #error \"Please select first the target STM32H7xx device used in your application (in stm32h7xx.h file)\"\n#endif\n\n/**\n  * @}\n  */\n\n/** @addtogroup Exported_types\n  * @{\n  */\ntypedef enum\n{\n  RESET = 0,\n  SET = !RESET\n} FlagStatus, ITStatus;\n\ntypedef enum\n{\n  DISABLE = 0,\n  ENABLE = !DISABLE\n} FunctionalState;\n#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))\n\ntypedef enum\n{\n  SUCCESS = 0,\n  ERROR = !SUCCESS\n} ErrorStatus;\n\n/**\n  * @}\n  */\n\n\n/** @addtogroup Exported_macros\n  * @{\n  */\n#define SET_BIT(REG, BIT)     ((REG) |= (BIT))\n\n#define CLEAR_BIT(REG, BIT)   ((REG) &= ~(BIT))\n\n#define READ_BIT(REG, BIT)    ((REG) & (BIT))\n\n#define CLEAR_REG(REG)        ((REG) = (0x0))\n\n#define WRITE_REG(REG, VAL)   ((REG) = (VAL))\n\n#define READ_REG(REG)         ((REG))\n\n#define MODIFY_REG(REG, CLEARMASK, SETMASK)  WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))\n\n#define POSITION_VAL(VAL)     (__CLZ(__RBIT(VAL)))\n\n/* Use of CMSIS compiler intrinsics for register exclusive access */\n/* Atomic 32-bit register access macro to set one or several bits */\n#define ATOMIC_SET_BIT(REG, BIT)                             \\\n  do {                                                       \\\n    uint32_t val;                                            \\\n    do {                                                     \\\n      val = __LDREXW((__IO uint32_t *)&(REG)) | (BIT);       \\\n    } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \\\n  } while(0)\n\n/* Atomic 32-bit register access macro to clear one or several bits */\n#define ATOMIC_CLEAR_BIT(REG, BIT)                           \\\n  do {                                                       \\\n    uint32_t val;                                            \\\n    do {                                                     \\\n      val = __LDREXW((__IO uint32_t *)&(REG)) & ~(BIT);      \\\n    } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \\\n  } while(0)\n\n/* Atomic 32-bit register access macro to clear and set one or several bits */\n#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK)                          \\\n  do {                                                                     \\\n    uint32_t val;                                                          \\\n    do {                                                                   \\\n      val = (__LDREXW((__IO uint32_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \\\n    } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U);               \\\n  } while(0)\n\n/* Atomic 16-bit register access macro to set one or several bits */\n#define ATOMIC_SETH_BIT(REG, BIT)                            \\\n  do {                                                       \\\n    uint16_t val;                                            \\\n    do {                                                     \\\n      val = __LDREXH((__IO uint16_t *)&(REG)) | (BIT);       \\\n    } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \\\n  } while(0)\n\n/* Atomic 16-bit register access macro to clear one or several bits */\n#define ATOMIC_CLEARH_BIT(REG, BIT)                          \\\n  do {                                                       \\\n    uint16_t val;                                            \\\n    do {                                                     \\\n      val = __LDREXH((__IO uint16_t *)&(REG)) & ~(BIT);      \\\n    } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \\\n  } while(0)\n\n/* Atomic 16-bit register access macro to clear and set one or several bits */\n#define ATOMIC_MODIFYH_REG(REG, CLEARMSK, SETMASK)                         \\\n  do {                                                                     \\\n    uint16_t val;                                                          \\\n    do {                                                                   \\\n      val = (__LDREXH((__IO uint16_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \\\n    } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U);               \\\n  } while(0)\n\n/**\n  * @}\n  */\n\n#if defined (USE_HAL_DRIVER)\n #include \"stm32h7xx_hal.h\"\n#endif /* USE_HAL_DRIVER */\n\n\n#ifdef __cplusplus\n}\n#endif /* __cplusplus */\n\n#endif /* STM32H7xx_H */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Device/ST/STM32H7xx/Include/system_stm32h7xx.h",
    "content": "/**\n  ******************************************************************************\n  * @file    system_stm32h7xx.h\n  * @author  MCD Application Team\n  * @brief   CMSIS Cortex-Mx Device System Source File for STM32H7xx devices.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/** @addtogroup CMSIS\n  * @{\n  */\n\n/** @addtogroup stm32h7xx_system\n  * @{\n  */\n\n/**\n  * @brief Define to prevent recursive inclusion\n  */\n#ifndef SYSTEM_STM32H7XX_H\n#define SYSTEM_STM32H7XX_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/** @addtogroup STM32H7xx_System_Includes\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n\n/** @addtogroup STM32H7xx_System_Exported_types\n  * @{\n  */\n  /* This variable is updated in three ways:\n      1) by calling CMSIS function SystemCoreClockUpdate()\n      2) by calling HAL API function HAL_RCC_GetSysClockFreq()\n      3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency\n         Note: If you use this function to configure the system clock; then there\n               is no need to call the 2 first functions listed above, since SystemCoreClock\n               variable is updated automatically.\n  */\nextern uint32_t SystemCoreClock;             /*!< System Domain1 Clock Frequency  */\nextern uint32_t SystemD2Clock;               /*!< System Domain2 Clock Frequency  */\nextern const  uint8_t D1CorePrescTable[16] ; /*!< D1CorePrescTable prescalers table values */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Exported_Constants\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Exported_Macros\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32H7xx_System_Exported_Functions\n  * @{\n  */\n\nextern void SystemInit(void);\nextern void SystemCoreClockUpdate(void);\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* SYSTEM_STM32H7XX_H */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Device/ST/STM32H7xx/LICENSE.txt",
    "content": "This software component is provided to you as part of a software package and\napplicable license terms are in the  Package_license file. If you received this\nsoftware component outside of a package or without applicable license terms,\nthe terms of the Apache-2.0 license shall apply. \nYou may obtain a copy of the Apache-2.0 at:\nhttps://opensource.org/licenses/Apache-2.0\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/cmsis_armcc.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armcc.h\n * @brief    CMSIS compiler ARMCC (Arm Compiler 5) header file\n * @version  V5.1.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_ARMCC_H\n#define __CMSIS_ARMCC_H\n\n\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677)\n  #error \"Please use Arm Compiler Toolchain V4.0.677 or later!\"\n#endif\n\n/* CMSIS compiler control architecture macros */\n#if ((defined (__TARGET_ARCH_6_M  ) && (__TARGET_ARCH_6_M   == 1)) || \\\n     (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M  == 1))   )\n  #define __ARM_ARCH_6M__           1\n#endif\n\n#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M  == 1))\n  #define __ARM_ARCH_7M__           1\n#endif\n\n#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1))\n  #define __ARM_ARCH_7EM__          1\n#endif\n\n  /* __ARM_ARCH_8M_BASE__  not applicable */\n  /* __ARM_ARCH_8M_MAIN__  not applicable */\n\n/* CMSIS compiler control DSP macros */\n#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n  #define __ARM_FEATURE_DSP         1\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE                 \n  #define __STATIC_FORCEINLINE                   static __forceinline\n#endif           \n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __declspec(noreturn)\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        __packed struct\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         __packed union\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #define __UNALIGNED_UINT32(x)                  (*((__packed uint32_t *)(x)))\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    ((*((__packed uint16_t *)(addr))) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #define __UNALIGNED_UINT16_READ(addr)          (*((const __packed uint16_t *)(addr)))\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    ((*((__packed uint32_t *)(addr))) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #define __UNALIGNED_UINT32_READ(addr)          (*((const __packed uint32_t *)(addr)))\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __memory_changed()\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __main\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\"RESET\")))\n#endif\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __enable_irq();     */\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __disable_irq();    */\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_INLINE uint32_t __get_CONTROL(void)\n{\n  register uint32_t __regControl         __ASM(\"control\");\n  return(__regControl);\n}\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_INLINE void __set_CONTROL(uint32_t control)\n{\n  register uint32_t __regControl         __ASM(\"control\");\n  __regControl = control;\n}\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_INLINE uint32_t __get_IPSR(void)\n{\n  register uint32_t __regIPSR          __ASM(\"ipsr\");\n  return(__regIPSR);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_INLINE uint32_t __get_APSR(void)\n{\n  register uint32_t __regAPSR          __ASM(\"apsr\");\n  return(__regAPSR);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_INLINE uint32_t __get_xPSR(void)\n{\n  register uint32_t __regXPSR          __ASM(\"xpsr\");\n  return(__regXPSR);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_INLINE uint32_t __get_PSP(void)\n{\n  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n  return(__regProcessStackPointer);\n}\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n  __regProcessStackPointer = topOfProcStack;\n}\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_INLINE uint32_t __get_MSP(void)\n{\n  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n  return(__regMainStackPointer);\n}\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n  __regMainStackPointer = topOfMainStack;\n}\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_INLINE uint32_t __get_PRIMASK(void)\n{\n  register uint32_t __regPriMask         __ASM(\"primask\");\n  return(__regPriMask);\n}\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n{\n  register uint32_t __regPriMask         __ASM(\"primask\");\n  __regPriMask = (priMask);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __enable_fault_irq                __enable_fiq\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __disable_fault_irq               __disable_fiq\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_INLINE uint32_t  __get_BASEPRI(void)\n{\n  register uint32_t __regBasePri         __ASM(\"basepri\");\n  return(__regBasePri);\n}\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)\n{\n  register uint32_t __regBasePri         __ASM(\"basepri\");\n  __regBasePri = (basePri & 0xFFU);\n}\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  register uint32_t __regBasePriMax      __ASM(\"basepri_max\");\n  __regBasePriMax = (basePri & 0xFFU);\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_INLINE uint32_t __get_FAULTMASK(void)\n{\n  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n  return(__regFaultMask);\n}\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n  __regFaultMask = (faultMask & (uint32_t)1U);\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n__STATIC_INLINE uint32_t __get_FPSCR(void)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  register uint32_t __regfpscr         __ASM(\"fpscr\");\n  return(__regfpscr);\n#else\n   return(0U);\n#endif\n}\n\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n  register uint32_t __regfpscr         __ASM(\"fpscr\");\n  __regfpscr = (fpscr);\n#else\n  (void)fpscr;\n#endif\n}\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP                             __nop\n\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI                             __wfi\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE                             __wfe\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV                             __sev\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n#define __ISB() do {\\\n                   __schedule_barrier();\\\n                   __isb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n#define __DSB() do {\\\n                   __schedule_barrier();\\\n                   __dsb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n#define __DMB() do {\\\n                   __schedule_barrier();\\\n                   __dmb(0xF);\\\n                   __schedule_barrier();\\\n                } while (0U)\n\n                  \n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV                             __rev\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".rev16_text\"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\n{\n  rev16 r0, r0\n  bx lr\n}\n#endif\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".revsh_text\"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)\n{\n  revsh r0, r0\n  bx lr\n}\n#endif\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n#define __ROR                             __ror\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)                       __breakpoint(value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n  #define __RBIT                          __rbit\n#else\n__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)\n{\n  uint32_t result;\n  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */\n\n  result = value;                      /* r will be reversed bits of v; first get LSB of v */\n  for (value >>= 1U; value != 0U; value >>= 1U)\n  {\n    result <<= 1U;\n    result |= value & 1U;\n    s--;\n  }\n  result <<= s;                        /* shift when v's highest bits are zero */\n  return result;\n}\n#endif\n\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n#define __CLZ                             __clz\n\n\n#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXB(ptr)                                                        ((uint8_t ) __ldrex(ptr))\n#else\n  #define __LDREXB(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint8_t ) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXH(ptr)                                                        ((uint16_t) __ldrex(ptr))\n#else\n  #define __LDREXH(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint16_t) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __LDREXW(ptr)                                                        ((uint32_t ) __ldrex(ptr))\n#else\n  #define __LDREXW(ptr)          _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") ((uint32_t ) __ldrex(ptr))  _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXB(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXB(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXH(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXH(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\n  #define __STREXW(value, ptr)                                                 __strex(value, ptr)\n#else\n  #define __STREXW(value, ptr)   _Pragma(\"push\") _Pragma(\"diag_suppress 3731\") __strex(value, ptr)        _Pragma(\"pop\")\n#endif\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX                           __clrex\n\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT                            __ssat\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT                            __usat\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n#ifndef __NO_EMBEDDED_ASM\n__attribute__((section(\".rrx_text\"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)\n{\n  rrx r0, r0\n  bx lr\n}\n#endif\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define __LDRBT(ptr)                      ((uint8_t )  __ldrt(ptr))\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define __LDRHT(ptr)                      ((uint16_t)  __ldrt(ptr))\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define __LDRT(ptr)                       ((uint32_t ) __ldrt(ptr))\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n#define __STRBT(value, ptr)               __strt(value, ptr)\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n#define __STRHT(value, ptr)               __strt(value, ptr)\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n#define __STRT(value, ptr)                __strt(value, ptr)\n\n#else  /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \\\n           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )\n\n#define __SADD8                           __sadd8\n#define __QADD8                           __qadd8\n#define __SHADD8                          __shadd8\n#define __UADD8                           __uadd8\n#define __UQADD8                          __uqadd8\n#define __UHADD8                          __uhadd8\n#define __SSUB8                           __ssub8\n#define __QSUB8                           __qsub8\n#define __SHSUB8                          __shsub8\n#define __USUB8                           __usub8\n#define __UQSUB8                          __uqsub8\n#define __UHSUB8                          __uhsub8\n#define __SADD16                          __sadd16\n#define __QADD16                          __qadd16\n#define __SHADD16                         __shadd16\n#define __UADD16                          __uadd16\n#define __UQADD16                         __uqadd16\n#define __UHADD16                         __uhadd16\n#define __SSUB16                          __ssub16\n#define __QSUB16                          __qsub16\n#define __SHSUB16                         __shsub16\n#define __USUB16                          __usub16\n#define __UQSUB16                         __uqsub16\n#define __UHSUB16                         __uhsub16\n#define __SASX                            __sasx\n#define __QASX                            __qasx\n#define __SHASX                           __shasx\n#define __UASX                            __uasx\n#define __UQASX                           __uqasx\n#define __UHASX                           __uhasx\n#define __SSAX                            __ssax\n#define __QSAX                            __qsax\n#define __SHSAX                           __shsax\n#define __USAX                            __usax\n#define __UQSAX                           __uqsax\n#define __UHSAX                           __uhsax\n#define __USAD8                           __usad8\n#define __USADA8                          __usada8\n#define __SSAT16                          __ssat16\n#define __USAT16                          __usat16\n#define __UXTB16                          __uxtb16\n#define __UXTAB16                         __uxtab16\n#define __SXTB16                          __sxtb16\n#define __SXTAB16                         __sxtab16\n#define __SMUAD                           __smuad\n#define __SMUADX                          __smuadx\n#define __SMLAD                           __smlad\n#define __SMLADX                          __smladx\n#define __SMLALD                          __smlald\n#define __SMLALDX                         __smlaldx\n#define __SMUSD                           __smusd\n#define __SMUSDX                          __smusdx\n#define __SMLSD                           __smlsd\n#define __SMLSDX                          __smlsdx\n#define __SMLSLD                          __smlsld\n#define __SMLSLDX                         __smlsldx\n#define __SEL                             __sel\n#define __QADD                            __qadd\n#define __QSUB                            __qsub\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \\\n                                                      ((int64_t)(ARG3) << 32U)     ) >> 32U))\n\n#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#endif /* __CMSIS_ARMCC_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/cmsis_armclang.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armclang.h\n * @brief    CMSIS compiler armclang (Arm Compiler 6) header file\n * @version  V5.2.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */\n\n#ifndef __CMSIS_ARMCLANG_H\n#define __CMSIS_ARMCLANG_H\n\n#pragma clang system_header   /* treat file as system include file */\n\n#ifndef __ARM_COMPAT_H\n#include <arm_compat.h>    /* Compatibility header for Arm Compiler 5 intrinsics */\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline\n#endif\n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */\n  struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __main\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\"RESET\")))\n#endif\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __enable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __disable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Control Register (non-secure)\n  \\details Returns the content of the non-secure Control Register when in secure mode.\n  \\return               non-secure Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\n{\n  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Control Register (non-secure)\n  \\details Writes the given value to the non-secure Control Register when in secure state.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\n{\n  __ASM volatile (\"MSR control_ns, %0\" : : \"r\" (control) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_APSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp\"  : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp_ns\"  : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp, %0\" : : \"r\" (topOfProcStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp_ns, %0\" : : \"r\" (topOfProcStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Main Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp, %0\" : : \"r\" (topOfMainStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Main Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp_ns, %0\" : : \"r\" (topOfMainStack) : );\n}\n#endif\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\n  \\return               SP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, sp_ns\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Set Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\n  \\param [in]    topOfStack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\n{\n  __ASM volatile (\"MSR sp_ns, %0\" : : \"r\" (topOfStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Priority Mask (non-secure)\n  \\details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Priority Mask (non-secure)\n  \\details Assigns the given value to the non-secure Priority Mask Register when in secure state.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask_ns, %0\" : : \"r\" (priMask) : \"memory\");\n}\n#endif\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __enable_fault_irq                __enable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __disable_fault_irq               __disable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Base Priority (non-secure)\n  \\details Returns the current value of the non-secure Base Priority register when in secure state.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Base Priority (non-secure)\n  \\details Assigns the given value to the non-secure Base Priority register when in secure state.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_ns, %0\" : : \"r\" (basePri) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_max, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Fault Mask (non-secure)\n  \\details Returns the current value of the non-secure Fault Mask register when in secure state.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Fault Mask (non-secure)\n  \\details Assigns the given value to the non-secure Fault Mask register when in secure state.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask_ns, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n/**\n  \\brief   Get Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n  \n  \\details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n\n#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n\n  \\details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim_ns\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n  \n  \\details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim, %0\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n\n  \\details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim_ns, %0\\n\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim\" : \"=r\" (result) );\n  return result;\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Get Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim_ns\" : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim_ns, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __get_FPSCR      (uint32_t)__builtin_arm_get_fpscr\n#else\n#define __get_FPSCR()      ((uint32_t)0U)\n#endif\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __set_FPSCR      __builtin_arm_set_fpscr\n#else\n#define __set_FPSCR(x)      ((void)(x))\n#endif\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/* Define macros for porting to both thumb1 and thumb2.\n * For thumb1, use low register (r0-r7), specified by constraint \"l\"\n * Otherwise, use general registers, specified by constraint \"r\" */\n#if defined (__thumb__) && !defined (__thumb2__)\n#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+l\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n#else\n#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+r\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n#endif\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP          __builtin_arm_nop\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI          __builtin_arm_wfi\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE          __builtin_arm_wfe\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV          __builtin_arm_sev\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n#define __ISB()        __builtin_arm_isb(0xF)\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n#define __DSB()        __builtin_arm_dsb(0xF)\n\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n#define __DMB()        __builtin_arm_dmb(0xF)\n\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV(value)   __builtin_bswap32(value)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV16(value) __ROR(__REV(value), 16)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REVSH(value) (int16_t)__builtin_bswap16(value)\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U)\n  {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)     __ASM volatile (\"bkpt \"#value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __RBIT            __builtin_arm_rbit\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define __LDREXB        (uint8_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define __LDREXH        (uint16_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define __LDREXW        (uint32_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXB        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXH        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXW        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX             __builtin_arm_clrex\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT             __builtin_arm_ssat\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT             __builtin_arm_usat\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rrx %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return(result);\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrbt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrht %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"strbt %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"strht %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"strt %1, %0\" : \"=Q\" (*ptr) : \"r\" (value) );\n}\n\n#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   Load-Acquire (8 bit)\n  \\details Executes a LDAB instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldab %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (16 bit)\n  \\details Executes a LDAH instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldah %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (32 bit)\n  \\details Executes a LDA instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"lda %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   Store-Release (8 bit)\n  \\details Executes a STLB instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"stlb %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (16 bit)\n  \\details Executes a STLH instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"stlh %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (32 bit)\n  \\details Executes a STL instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"stl %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (8 bit)\n  \\details Executes a LDAB exclusive instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define     __LDAEXB                 (uint8_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (16 bit)\n  \\details Executes a LDAH exclusive instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define     __LDAEXH                 (uint16_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (32 bit)\n  \\details Executes a LDA exclusive instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define     __LDAEX                  (uint32_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Store-Release Exclusive (8 bit)\n  \\details Executes a STLB exclusive instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXB                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (16 bit)\n  \\details Executes a STLH exclusive instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXH                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (32 bit)\n  \\details Executes a STL exclusive instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEX                  (uint32_t)__builtin_arm_stlex\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n\n#define     __SADD8                 __builtin_arm_sadd8\n#define     __QADD8                 __builtin_arm_qadd8\n#define     __SHADD8                __builtin_arm_shadd8\n#define     __UADD8                 __builtin_arm_uadd8\n#define     __UQADD8                __builtin_arm_uqadd8\n#define     __UHADD8                __builtin_arm_uhadd8\n#define     __SSUB8                 __builtin_arm_ssub8\n#define     __QSUB8                 __builtin_arm_qsub8\n#define     __SHSUB8                __builtin_arm_shsub8\n#define     __USUB8                 __builtin_arm_usub8\n#define     __UQSUB8                __builtin_arm_uqsub8\n#define     __UHSUB8                __builtin_arm_uhsub8\n#define     __SADD16                __builtin_arm_sadd16\n#define     __QADD16                __builtin_arm_qadd16\n#define     __SHADD16               __builtin_arm_shadd16\n#define     __UADD16                __builtin_arm_uadd16\n#define     __UQADD16               __builtin_arm_uqadd16\n#define     __UHADD16               __builtin_arm_uhadd16\n#define     __SSUB16                __builtin_arm_ssub16\n#define     __QSUB16                __builtin_arm_qsub16\n#define     __SHSUB16               __builtin_arm_shsub16\n#define     __USUB16                __builtin_arm_usub16\n#define     __UQSUB16               __builtin_arm_uqsub16\n#define     __UHSUB16               __builtin_arm_uhsub16\n#define     __SASX                  __builtin_arm_sasx\n#define     __QASX                  __builtin_arm_qasx\n#define     __SHASX                 __builtin_arm_shasx\n#define     __UASX                  __builtin_arm_uasx\n#define     __UQASX                 __builtin_arm_uqasx\n#define     __UHASX                 __builtin_arm_uhasx\n#define     __SSAX                  __builtin_arm_ssax\n#define     __QSAX                  __builtin_arm_qsax\n#define     __SHSAX                 __builtin_arm_shsax\n#define     __USAX                  __builtin_arm_usax\n#define     __UQSAX                 __builtin_arm_uqsax\n#define     __UHSAX                 __builtin_arm_uhsax\n#define     __USAD8                 __builtin_arm_usad8\n#define     __USADA8                __builtin_arm_usada8\n#define     __SSAT16                __builtin_arm_ssat16\n#define     __USAT16                __builtin_arm_usat16\n#define     __UXTB16                __builtin_arm_uxtb16\n#define     __UXTAB16               __builtin_arm_uxtab16\n#define     __SXTB16                __builtin_arm_sxtb16\n#define     __SXTAB16               __builtin_arm_sxtab16\n#define     __SMUAD                 __builtin_arm_smuad\n#define     __SMUADX                __builtin_arm_smuadx\n#define     __SMLAD                 __builtin_arm_smlad\n#define     __SMLADX                __builtin_arm_smladx\n#define     __SMLALD                __builtin_arm_smlald\n#define     __SMLALDX               __builtin_arm_smlaldx\n#define     __SMUSD                 __builtin_arm_smusd\n#define     __SMUSDX                __builtin_arm_smusdx\n#define     __SMLSD                 __builtin_arm_smlsd\n#define     __SMLSDX                __builtin_arm_smlsdx\n#define     __SMLSLD                __builtin_arm_smlsld\n#define     __SMLSLDX               __builtin_arm_smlsldx\n#define     __SEL                   __builtin_arm_sel\n#define     __QADD                  __builtin_arm_qadd\n#define     __QSUB                  __builtin_arm_qsub\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n  int32_t result;\n\n  __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#endif /* (__ARM_FEATURE_DSP == 1) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#endif /* __CMSIS_ARMCLANG_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/cmsis_armclang_ltm.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_armclang_ltm.h\n * @brief    CMSIS compiler armclang (Arm Compiler 6) header file\n * @version  V1.2.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2018-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */\n\n#ifndef __CMSIS_ARMCLANG_H\n#define __CMSIS_ARMCLANG_H\n\n#pragma clang system_header   /* treat file as system include file */\n\n#ifndef __ARM_COMPAT_H\n#include <arm_compat.h>    /* Compatibility header for Arm Compiler 5 intrinsics */\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               __inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static __inline\n#endif\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline\n#endif\n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */\n  struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma clang diagnostic push\n  #pragma clang diagnostic ignored \"-Wpacked\"\n/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma clang diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __main\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\"RESET\")))\n#endif\n\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __enable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n/* intrinsic void __disable_irq();  see arm_compat.h */\n\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Control Register (non-secure)\n  \\details Returns the content of the non-secure Control Register when in secure mode.\n  \\return               non-secure Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\n{\n  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Control Register (non-secure)\n  \\details Writes the given value to the non-secure Control Register when in secure state.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\n{\n  __ASM volatile (\"MSR control_ns, %0\" : : \"r\" (control) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_APSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp\"  : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp_ns\"  : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp, %0\" : : \"r\" (topOfProcStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp_ns, %0\" : : \"r\" (topOfProcStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Main Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp, %0\" : : \"r\" (topOfMainStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Main Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp_ns, %0\" : : \"r\" (topOfMainStack) : );\n}\n#endif\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\n  \\return               SP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, sp_ns\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Set Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\n  \\param [in]    topOfStack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\n{\n  __ASM volatile (\"MSR sp_ns, %0\" : : \"r\" (topOfStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Priority Mask (non-secure)\n  \\details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Priority Mask (non-secure)\n  \\details Assigns the given value to the non-secure Priority Mask Register when in secure state.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask_ns, %0\" : : \"r\" (priMask) : \"memory\");\n}\n#endif\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __enable_fault_irq                __enable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n#define __disable_fault_irq               __disable_fiq   /* see arm_compat.h */\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Base Priority (non-secure)\n  \\details Returns the current value of the non-secure Base Priority register when in secure state.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Base Priority (non-secure)\n  \\details Assigns the given value to the non-secure Base Priority register when in secure state.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_ns, %0\" : : \"r\" (basePri) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_max, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Fault Mask (non-secure)\n  \\details Returns the current value of the non-secure Fault Mask register when in secure state.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Fault Mask (non-secure)\n  \\details Assigns the given value to the non-secure Fault Mask register when in secure state.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask_ns, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n/**\n  \\brief   Get Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n  \n  \\details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n\n#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n\n  \\details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim_ns\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n  \n  \\details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim, %0\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n\n  \\details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim_ns, %0\\n\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim\" : \"=r\" (result) );\n  return result;\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Get Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim_ns\" : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim_ns, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __get_FPSCR      (uint32_t)__builtin_arm_get_fpscr\n#else\n#define __get_FPSCR()      ((uint32_t)0U)\n#endif\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#define __set_FPSCR      __builtin_arm_set_fpscr\n#else\n#define __set_FPSCR(x)      ((void)(x))\n#endif\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/* Define macros for porting to both thumb1 and thumb2.\n * For thumb1, use low register (r0-r7), specified by constraint \"l\"\n * Otherwise, use general registers, specified by constraint \"r\" */\n#if defined (__thumb__) && !defined (__thumb2__)\n#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n#else\n#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n#endif\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP          __builtin_arm_nop\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI          __builtin_arm_wfi\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE          __builtin_arm_wfe\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV          __builtin_arm_sev\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n#define __ISB()        __builtin_arm_isb(0xF)\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n#define __DSB()        __builtin_arm_dsb(0xF)\n\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n#define __DMB()        __builtin_arm_dmb(0xF)\n\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV(value)   __builtin_bswap32(value)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REV16(value) __ROR(__REV(value), 16)\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __REVSH(value) (int16_t)__builtin_bswap16(value)\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U)\n  {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)     __ASM volatile (\"bkpt \"#value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n#define __RBIT            __builtin_arm_rbit\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define __LDREXB        (uint8_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define __LDREXH        (uint16_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define __LDREXW        (uint32_t)__builtin_arm_ldrex\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXB        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXH        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define __STREXW        (uint32_t)__builtin_arm_strex\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n#define __CLREX             __builtin_arm_clrex\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT             __builtin_arm_ssat\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT             __builtin_arm_usat\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rrx %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return(result);\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrbt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrht %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldrt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"strbt %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"strht %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"strt %1, %0\" : \"=Q\" (*ptr) : \"r\" (value) );\n}\n\n#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   Load-Acquire (8 bit)\n  \\details Executes a LDAB instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldab %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (16 bit)\n  \\details Executes a LDAH instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ldah %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (32 bit)\n  \\details Executes a LDA instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\n{\n  uint32_t result;\n\n  __ASM volatile (\"lda %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n  return(result);\n}\n\n\n/**\n  \\brief   Store-Release (8 bit)\n  \\details Executes a STLB instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\n{\n  __ASM volatile (\"stlb %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (16 bit)\n  \\details Executes a STLH instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\n{\n  __ASM volatile (\"stlh %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (32 bit)\n  \\details Executes a STL instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\n{\n  __ASM volatile (\"stl %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (8 bit)\n  \\details Executes a LDAB exclusive instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n#define     __LDAEXB                 (uint8_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (16 bit)\n  \\details Executes a LDAH exclusive instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n#define     __LDAEXH                 (uint16_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Load-Acquire Exclusive (32 bit)\n  \\details Executes a LDA exclusive instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n#define     __LDAEX                  (uint32_t)__builtin_arm_ldaex\n\n\n/**\n  \\brief   Store-Release Exclusive (8 bit)\n  \\details Executes a STLB exclusive instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXB                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (16 bit)\n  \\details Executes a STLH exclusive instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEXH                 (uint32_t)__builtin_arm_stlex\n\n\n/**\n  \\brief   Store-Release Exclusive (32 bit)\n  \\details Executes a STL exclusive instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n#define     __STLEX                  (uint32_t)__builtin_arm_stlex\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n\n__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usad8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usada8 %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#define __SSAT16(ARG1,ARG2) \\\n({                          \\\n  int32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"ssat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n#define __USAT16(ARG1,ARG2) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"usat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusdx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsd %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsdx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sel %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n  int32_t result;\n\n  __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#endif /* (__ARM_FEATURE_DSP == 1) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#endif /* __CMSIS_ARMCLANG_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/cmsis_compiler.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_compiler.h\n * @brief    CMSIS compiler generic header file\n * @version  V5.1.0\n * @date     09. October 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_COMPILER_H\n#define __CMSIS_COMPILER_H\n\n#include <stdint.h>\n\n/*\n * Arm Compiler 4/5\n */\n#if   defined ( __CC_ARM )\n  #include \"cmsis_armcc.h\"\n\n\n/*\n * Arm Compiler 6.6 LTM (armclang)\n */\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)\n  #include \"cmsis_armclang_ltm.h\"\n\n  /*\n * Arm Compiler above 6.10.1 (armclang)\n */\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100)\n  #include \"cmsis_armclang.h\"\n\n\n/*\n * GNU Compiler\n */\n#elif defined ( __GNUC__ )\n  #include \"cmsis_gcc.h\"\n\n\n/*\n * IAR Compiler\n */\n#elif defined ( __ICCARM__ )\n  #include <cmsis_iccarm.h>\n\n\n/*\n * TI Arm Compiler\n */\n#elif defined ( __TI_ARM__ )\n  #include <cmsis_ccs.h>\n\n  #ifndef   __ASM\n    #define __ASM                                  __asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                               inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE                        static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE                   __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    #define __NO_RETURN                            __attribute__((noreturn))\n  #endif\n  #ifndef   __USED\n    #define __USED                                 __attribute__((used))\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                                 __attribute__((weak))\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                               __attribute__((packed))\n  #endif\n  #ifndef   __PACKED_STRUCT\n    #define __PACKED_STRUCT                        struct __attribute__((packed))\n  #endif\n  #ifndef   __PACKED_UNION\n    #define __PACKED_UNION                         union __attribute__((packed))\n  #endif\n  #ifndef   __UNALIGNED_UINT32        /* deprecated */\n    struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT16_WRITE\n    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT16_READ\n    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT32_WRITE\n    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT32_READ\n    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #define __ALIGNED(x)                           __attribute__((aligned(x)))\n  #endif\n  #ifndef   __RESTRICT\n    #define __RESTRICT                             __restrict\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()                   (void)0\n  #endif\n\n\n/*\n * TASKING Compiler\n */\n#elif defined ( __TASKING__ )\n  /*\n   * The CMSIS functions have been implemented as intrinsics in the compiler.\n   * Please use \"carm -?i\" to get an up to date list of all intrinsics,\n   * Including the CMSIS ones.\n   */\n\n  #ifndef   __ASM\n    #define __ASM                                  __asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                               inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE                        static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE                   __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    #define __NO_RETURN                            __attribute__((noreturn))\n  #endif\n  #ifndef   __USED\n    #define __USED                                 __attribute__((used))\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                                 __attribute__((weak))\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                               __packed__\n  #endif\n  #ifndef   __PACKED_STRUCT\n    #define __PACKED_STRUCT                        struct __packed__\n  #endif\n  #ifndef   __PACKED_UNION\n    #define __PACKED_UNION                         union __packed__\n  #endif\n  #ifndef   __UNALIGNED_UINT32        /* deprecated */\n    struct __packed__ T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT16_WRITE\n    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT16_READ\n    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT32_WRITE\n    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT32_READ\n    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #define __ALIGNED(x)              __align(x)\n  #endif\n  #ifndef   __RESTRICT\n    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.\n    #define __RESTRICT\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()                   (void)0\n  #endif\n\n\n/*\n * COSMIC Compiler\n */\n#elif defined ( __CSMC__ )\n   #include <cmsis_csm.h>\n\n #ifndef   __ASM\n    #define __ASM                                  _asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                               inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE                        static inline\n  #endif\n  #ifndef   __STATIC_FORCEINLINE\n    #define __STATIC_FORCEINLINE                   __STATIC_INLINE\n  #endif\n  #ifndef   __NO_RETURN\n    // NO RETURN is automatically detected hence no warning here\n    #define __NO_RETURN\n  #endif\n  #ifndef   __USED\n    #warning No compiler specific solution for __USED. __USED is ignored.\n    #define __USED\n  #endif\n  #ifndef   __WEAK\n    #define __WEAK                                 __weak\n  #endif\n  #ifndef   __PACKED\n    #define __PACKED                               @packed\n  #endif\n  #ifndef   __PACKED_STRUCT\n    #define __PACKED_STRUCT                        @packed struct\n  #endif\n  #ifndef   __PACKED_UNION\n    #define __PACKED_UNION                         @packed union\n  #endif\n  #ifndef   __UNALIGNED_UINT32        /* deprecated */\n    @packed struct T_UINT32 { uint32_t v; };\n    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT16_WRITE\n    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT16_READ\n    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __UNALIGNED_UINT32_WRITE\n    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n  #endif\n  #ifndef   __UNALIGNED_UINT32_READ\n    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n  #endif\n  #ifndef   __ALIGNED\n    #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.\n    #define __ALIGNED(x)\n  #endif\n  #ifndef   __RESTRICT\n    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.\n    #define __RESTRICT\n  #endif\n  #ifndef   __COMPILER_BARRIER\n    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.\n    #define __COMPILER_BARRIER()                   (void)0\n  #endif\n\n\n#else\n  #error Unknown compiler.\n#endif\n\n\n#endif /* __CMSIS_COMPILER_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/cmsis_gcc.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_gcc.h\n * @brief    CMSIS compiler GCC header file\n * @version  V5.2.0\n * @date     08. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __CMSIS_GCC_H\n#define __CMSIS_GCC_H\n\n/* ignore some GCC warnings */\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wsign-conversion\"\n#pragma GCC diagnostic ignored \"-Wconversion\"\n#pragma GCC diagnostic ignored \"-Wunused-parameter\"\n\n/* Fallback for __has_builtin */\n#ifndef __has_builtin\n  #define __has_builtin(x) (0)\n#endif\n\n/* CMSIS compiler specific defines */\n#ifndef   __ASM\n  #define __ASM                                  __asm\n#endif\n#ifndef   __INLINE\n  #define __INLINE                               inline\n#endif\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE                        static inline\n#endif\n#ifndef   __STATIC_FORCEINLINE                 \n  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static inline\n#endif                                           \n#ifndef   __NO_RETURN\n  #define __NO_RETURN                            __attribute__((__noreturn__))\n#endif\n#ifndef   __USED\n  #define __USED                                 __attribute__((used))\n#endif\n#ifndef   __WEAK\n  #define __WEAK                                 __attribute__((weak))\n#endif\n#ifndef   __PACKED\n  #define __PACKED                               __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_STRUCT\n  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __PACKED_UNION\n  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))\n#endif\n#ifndef   __UNALIGNED_UINT32        /* deprecated */\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  struct __attribute__((packed)) T_UINT32 { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)\n#endif\n#ifndef   __UNALIGNED_UINT16_WRITE\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT16_READ\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __UNALIGNED_UINT32_WRITE\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\n#endif\n#ifndef   __UNALIGNED_UINT32_READ\n  #pragma GCC diagnostic push\n  #pragma GCC diagnostic ignored \"-Wpacked\"\n  #pragma GCC diagnostic ignored \"-Wattributes\"\n  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\n  #pragma GCC diagnostic pop\n  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)\n#endif\n#ifndef   __ALIGNED\n  #define __ALIGNED(x)                           __attribute__((aligned(x)))\n#endif\n#ifndef   __RESTRICT\n  #define __RESTRICT                             __restrict\n#endif\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER()                   __ASM volatile(\"\":::\"memory\")\n#endif\n\n/* #########################  Startup and Lowlevel Init  ######################## */\n\n#ifndef __PROGRAM_START\n\n/**\n  \\brief   Initializes data and bss sections\n  \\details This default implementations initialized all data and additional bss\n           sections relying on .copy.table and .zero.table specified properly\n           in the used linker script.\n  \n */\n__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void)\n{\n  extern void _start(void) __NO_RETURN;\n  \n  typedef struct {\n    uint32_t const* src;\n    uint32_t* dest;\n    uint32_t  wlen;\n  } __copy_table_t;\n  \n  typedef struct {\n    uint32_t* dest;\n    uint32_t  wlen;\n  } __zero_table_t;\n  \n  extern const __copy_table_t __copy_table_start__;\n  extern const __copy_table_t __copy_table_end__;\n  extern const __zero_table_t __zero_table_start__;\n  extern const __zero_table_t __zero_table_end__;\n\n  for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) {\n    for(uint32_t i=0u; i<pTable->wlen; ++i) {\n      pTable->dest[i] = pTable->src[i];\n    }\n  }\n \n  for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) {\n    for(uint32_t i=0u; i<pTable->wlen; ++i) {\n      pTable->dest[i] = 0u;\n    }\n  }\n \n  _start();\n}\n  \n#define __PROGRAM_START           __cmsis_start\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              __StackTop\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             __StackLimit\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __Vectors\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  __attribute((used, section(\".vectors\")))\n#endif\n\n/* ###########################  Core Function Access  ########################### */\n/** \\ingroup  CMSIS_Core_FunctionInterface\n    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n  @{\n */\n\n/**\n  \\brief   Enable IRQ Interrupts\n  \\details Enables IRQ interrupts by clearing the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __enable_irq(void)\n{\n  __ASM volatile (\"cpsie i\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Disable IRQ Interrupts\n  \\details Disables IRQ interrupts by setting the I-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __disable_irq(void)\n{\n  __ASM volatile (\"cpsid i\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Get Control Register\n  \\details Returns the content of the Control Register.\n  \\return               Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Control Register (non-secure)\n  \\details Returns the content of the non-secure Control Register when in secure mode.\n  \\return               non-secure Control Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, control_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Control Register\n  \\details Writes the given value to the Control Register.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\n{\n  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Control Register (non-secure)\n  \\details Writes the given value to the non-secure Control Register when in secure state.\n  \\param [in]    control  Control Register value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\n{\n  __ASM volatile (\"MSR control_ns, %0\" : : \"r\" (control) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Get IPSR Register\n  \\details Returns the content of the IPSR Register.\n  \\return               IPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get APSR Register\n  \\details Returns the content of the APSR Register.\n  \\return               APSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_APSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get xPSR Register\n  \\details Returns the content of the xPSR Register.\n  \\return               xPSR Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Get Process Stack Pointer\n  \\details Returns the current value of the Process Stack Pointer (PSP).\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp\"  : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\return               PSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, psp_ns\"  : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer\n  \\details Assigns the given value to the Process Stack Pointer (PSP).\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp, %0\" : : \"r\" (topOfProcStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\n  \\param [in]    topOfProcStack  Process Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\n{\n  __ASM volatile (\"MSR psp_ns, %0\" : : \"r\" (topOfProcStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer\n  \\details Returns the current value of the Main Stack Pointer (MSP).\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSP(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Main Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\return               MSP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, msp_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer\n  \\details Assigns the given value to the Main Stack Pointer (MSP).\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp, %0\" : : \"r\" (topOfMainStack) : );\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Main Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\n  \\param [in]    topOfMainStack  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\n{\n  __ASM volatile (\"MSR msp_ns, %0\" : : \"r\" (topOfMainStack) : );\n}\n#endif\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Stack Pointer (non-secure)\n  \\details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\n  \\return               SP Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, sp_ns\" : \"=r\" (result) );\n  return(result);\n}\n\n\n/**\n  \\brief   Set Stack Pointer (non-secure)\n  \\details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\n  \\param [in]    topOfStack  Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\n{\n  __ASM volatile (\"MSR sp_ns, %0\" : : \"r\" (topOfStack) : );\n}\n#endif\n\n\n/**\n  \\brief   Get Priority Mask\n  \\details Returns the current state of the priority mask bit from the Priority Mask Register.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) :: \"memory\");\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Priority Mask (non-secure)\n  \\details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\n  \\return               Priority Mask value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, primask_ns\" : \"=r\" (result) :: \"memory\");\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Priority Mask\n  \\details Assigns the given value to the Priority Mask Register.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Priority Mask (non-secure)\n  \\details Assigns the given value to the non-secure Priority Mask Register when in secure state.\n  \\param [in]    priMask  Priority Mask\n */\n__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\n{\n  __ASM volatile (\"MSR primask_ns, %0\" : : \"r\" (priMask) : \"memory\");\n}\n#endif\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Enable FIQ\n  \\details Enables FIQ interrupts by clearing the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __enable_fault_irq(void)\n{\n  __ASM volatile (\"cpsie f\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Disable FIQ\n  \\details Disables FIQ interrupts by setting the F-bit in the CPSR.\n           Can only be executed in Privileged modes.\n */\n__STATIC_FORCEINLINE void __disable_fault_irq(void)\n{\n  __ASM volatile (\"cpsid f\" : : : \"memory\");\n}\n\n\n/**\n  \\brief   Get Base Priority\n  \\details Returns the current value of the Base Priority register.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Base Priority (non-secure)\n  \\details Returns the current value of the non-secure Base Priority register when in secure state.\n  \\return               Base Priority register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, basepri_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority\n  \\details Assigns the given value to the Base Priority register.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Base Priority (non-secure)\n  \\details Assigns the given value to the non-secure Base Priority register when in secure state.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_ns, %0\" : : \"r\" (basePri) : \"memory\");\n}\n#endif\n\n\n/**\n  \\brief   Set Base Priority with condition\n  \\details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\n           or the new value increases the BASEPRI priority level.\n  \\param [in]    basePri  Base Priority value to set\n */\n__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\n{\n  __ASM volatile (\"MSR basepri_max, %0\" : : \"r\" (basePri) : \"memory\");\n}\n\n\n/**\n  \\brief   Get Fault Mask\n  \\details Returns the current value of the Fault Mask register.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n  return(result);\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Fault Mask (non-secure)\n  \\details Returns the current value of the non-secure Fault Mask register when in secure state.\n  \\return               Fault Mask register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\n{\n  uint32_t result;\n\n  __ASM volatile (\"MRS %0, faultmask_ns\" : \"=r\" (result) );\n  return(result);\n}\n#endif\n\n\n/**\n  \\brief   Set Fault Mask\n  \\details Assigns the given value to the Fault Mask register.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Set Fault Mask (non-secure)\n  \\details Assigns the given value to the non-secure Fault Mask register when in secure state.\n  \\param [in]    faultMask  Fault Mask value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\n{\n  __ASM volatile (\"MSR faultmask_ns, %0\" : : \"r\" (faultMask) : \"memory\");\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n/**\n  \\brief   Get Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n  \n  \\details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n\n#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\n/**\n  \\brief   Get Process Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\return               PSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, psplim_ns\"  : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Process Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n  \n  \\details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim, %0\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Process Stack Pointer (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\n  \\param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure PSPLIM is RAZ/WI\n  (void)ProcStackPtrLimit;\n#else\n  __ASM volatile (\"MSR psplim_ns, %0\\n\" : : \"r\" (ProcStackPtrLimit));\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Get Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always in non-secure\n  mode.\n\n  \\details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim\" : \"=r\" (result) );\n  return result;\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Get Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence zero is returned always.\n\n  \\details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\n  \\return               MSPLIM Register value\n */\n__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  return 0U;\n#else\n  uint32_t result;\n  __ASM volatile (\"MRS %0, msplim_ns\" : \"=r\" (result) );\n  return result;\n#endif\n}\n#endif\n\n\n/**\n  \\brief   Set Main Stack Pointer Limit\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored in non-secure\n  mode.\n\n  \\details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set\n */\n__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n\n\n#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))\n/**\n  \\brief   Set Main Stack Pointer Limit (non-secure)\n  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\n  Stack Pointer Limit register hence the write is silently ignored.\n\n  \\details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\n  \\param [in]    MainStackPtrLimit  Main Stack Pointer value to set\n */\n__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\n{\n#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\n  // without main extensions, the non-secure MSPLIM is RAZ/WI\n  (void)MainStackPtrLimit;\n#else\n  __ASM volatile (\"MSR msplim_ns, %0\" : : \"r\" (MainStackPtrLimit));\n#endif\n}\n#endif\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n/**\n  \\brief   Get FPSCR\n  \\details Returns the current value of the Floating Point Status/Control register.\n  \\return               Floating Point Status/Control register value\n */\n__STATIC_FORCEINLINE uint32_t __get_FPSCR(void)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#if __has_builtin(__builtin_arm_get_fpscr) \n// Re-enable using built-in when GCC has been fixed\n// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\n  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\n  return __builtin_arm_get_fpscr();\n#else\n  uint32_t result;\n\n  __ASM volatile (\"VMRS %0, fpscr\" : \"=r\" (result) );\n  return(result);\n#endif\n#else\n  return(0U);\n#endif\n}\n\n\n/**\n  \\brief   Set FPSCR\n  \\details Assigns the given value to the Floating Point Status/Control register.\n  \\param [in]    fpscr  Floating Point Status/Control value to set\n */\n__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)\n{\n#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n#if __has_builtin(__builtin_arm_set_fpscr)\n// Re-enable using built-in when GCC has been fixed\n// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\n  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\n  __builtin_arm_set_fpscr(fpscr);\n#else\n  __ASM volatile (\"VMSR fpscr, %0\" : : \"r\" (fpscr) : \"vfpcc\", \"memory\");\n#endif\n#else\n  (void)fpscr;\n#endif\n}\n\n\n/*@} end of CMSIS_Core_RegAccFunctions */\n\n\n/* ##########################  Core Instruction Access  ######################### */\n/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n  Access to dedicated instructions\n  @{\n*/\n\n/* Define macros for porting to both thumb1 and thumb2.\n * For thumb1, use low register (r0-r7), specified by constraint \"l\"\n * Otherwise, use general registers, specified by constraint \"r\" */\n#if defined (__thumb__) && !defined (__thumb2__)\n#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+l\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n#else\n#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n#define __CMSIS_GCC_RW_REG(r) \"+r\" (r)\n#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n#endif\n\n/**\n  \\brief   No Operation\n  \\details No Operation does nothing. This instruction can be used for code alignment purposes.\n */\n#define __NOP()                             __ASM volatile (\"nop\")\n\n/**\n  \\brief   Wait For Interrupt\n  \\details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\n */\n#define __WFI()                             __ASM volatile (\"wfi\")\n\n\n/**\n  \\brief   Wait For Event\n  \\details Wait For Event is a hint instruction that permits the processor to enter\n           a low-power state until one of a number of events occurs.\n */\n#define __WFE()                             __ASM volatile (\"wfe\")\n\n\n/**\n  \\brief   Send Event\n  \\details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n */\n#define __SEV()                             __ASM volatile (\"sev\")\n\n\n/**\n  \\brief   Instruction Synchronization Barrier\n  \\details Instruction Synchronization Barrier flushes the pipeline in the processor,\n           so that all instructions following the ISB are fetched from cache or memory,\n           after the instruction has been completed.\n */\n__STATIC_FORCEINLINE void __ISB(void)\n{\n  __ASM volatile (\"isb 0xF\":::\"memory\");\n}\n\n\n/**\n  \\brief   Data Synchronization Barrier\n  \\details Acts as a special kind of Data Memory Barrier.\n           It completes when all explicit memory accesses before this instruction complete.\n */\n__STATIC_FORCEINLINE void __DSB(void)\n{\n  __ASM volatile (\"dsb 0xF\":::\"memory\");\n}\n\n\n/**\n  \\brief   Data Memory Barrier\n  \\details Ensures the apparent order of the explicit memory operations before\n           and after the instruction, without ensuring their completion.\n */\n__STATIC_FORCEINLINE void __DMB(void)\n{\n  __ASM volatile (\"dmb 0xF\":::\"memory\");\n}\n\n\n/**\n  \\brief   Reverse byte order (32 bit)\n  \\details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE uint32_t __REV(uint32_t value)\n{\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)\n  return __builtin_bswap32(value);\n#else\n  uint32_t result;\n\n  __ASM volatile (\"rev %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return result;\n#endif\n}\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rev16 %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return result;\n}\n\n\n/**\n  \\brief   Reverse byte order (16 bit)\n  \\details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE int16_t __REVSH(int16_t value)\n{\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n  return (int16_t)__builtin_bswap16(value);\n#else\n  int16_t result;\n\n  __ASM volatile (\"revsh %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return result;\n#endif\n}\n\n\n/**\n  \\brief   Rotate Right in unsigned value (32 bit)\n  \\details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n  \\param [in]    op1  Value to rotate\n  \\param [in]    op2  Number of Bits to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n{\n  op2 %= 32U;\n  if (op2 == 0U)\n  {\n    return op1;\n  }\n  return (op1 >> op2) | (op1 << (32U - op2));\n}\n\n\n/**\n  \\brief   Breakpoint\n  \\details Causes the processor to enter Debug state.\n           Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n  \\param [in]    value  is ignored by the processor.\n                 If required, a debugger can use it to store additional information about the breakpoint.\n */\n#define __BKPT(value)                       __ASM volatile (\"bkpt \"#value)\n\n\n/**\n  \\brief   Reverse bit order of value\n  \\details Reverses the bit order of the given value.\n  \\param [in]    value  Value to reverse\n  \\return               Reversed value\n */\n__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value)\n{\n  uint32_t result;\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n   __ASM volatile (\"rbit %0, %1\" : \"=r\" (result) : \"r\" (value) );\n#else\n  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */\n\n  result = value;                      /* r will be reversed bits of v; first get LSB of v */\n  for (value >>= 1U; value != 0U; value >>= 1U)\n  {\n    result <<= 1U;\n    result |= value & 1U;\n    s--;\n  }\n  result <<= s;                        /* shift when v's highest bits are zero */\n#endif\n  return result;\n}\n\n\n/**\n  \\brief   Count leading zeros\n  \\details Counts the number of leading zeros of a data value.\n  \\param [in]  value  Value to count the leading zeros\n  \\return             number of leading zeros in value\n */\n__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)\n{\n  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally\n     __builtin_clz(0) is undefined behaviour, so handle this case specially.\n     This guarantees ARM-compatible results if happening to compile on a non-ARM\n     target, and ensures the compiler doesn't decide to activate any\n     optimisations using the logic \"value was passed to __builtin_clz, so it\n     is non-zero\".\n     ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a\n     single CLZ instruction.\n   */\n  if (value == 0U)\n  {\n    return 32U;\n  }\n  return __builtin_clz(value);\n}\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   LDR Exclusive (8 bit)\n  \\details Executes a exclusive LDR instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrexb %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrexb %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n#endif\n   return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDR Exclusive (16 bit)\n  \\details Executes a exclusive LDR instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrexh %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrexh %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n#endif\n   return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDR Exclusive (32 bit)\n  \\details Executes a exclusive LDR instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldrex %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (8 bit)\n  \\details Executes a exclusive STR instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (16 bit)\n  \\details Executes a exclusive STR instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   STR Exclusive (32 bit)\n  \\details Executes a exclusive STR instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"strex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n   return(result);\n}\n\n\n/**\n  \\brief   Remove the exclusive lock\n  \\details Removes the exclusive lock which is created by LDREX.\n */\n__STATIC_FORCEINLINE void __CLREX(void)\n{\n  __ASM volatile (\"clrex\" ::: \"memory\");\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  ARG1  Value to be saturated\n  \\param [in]  ARG2  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n#define __SSAT(ARG1,ARG2) \\\n__extension__ \\\n({                          \\\n  int32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"ssat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  ARG1  Value to be saturated\n  \\param [in]  ARG2  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n#define __USAT(ARG1,ARG2) \\\n __extension__ \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"usat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n\n/**\n  \\brief   Rotate Right with Extend (32 bit)\n  \\details Moves each bit of a bitstring right by one bit.\n           The carry input is shifted in at the left end of the bitstring.\n  \\param [in]    value  Value to rotate\n  \\return               Rotated value\n */\n__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\n{\n  uint32_t result;\n\n  __ASM volatile (\"rrx %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n  return(result);\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged LDRT instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrbt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrbt %0, [%1]\" : \"=r\" (result) : \"r\" (ptr) : \"memory\" );\n#endif\n   return ((uint8_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged LDRT instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\n{\n    uint32_t result;\n\n#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n   __ASM volatile (\"ldrht %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n#else\n    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n       accepted by assembler. So has to use following less efficient pattern.\n    */\n   __ASM volatile (\"ldrht %0, [%1]\" : \"=r\" (result) : \"r\" (ptr) : \"memory\" );\n#endif\n   return ((uint16_t) result);    /* Add explicit type cast here */\n}\n\n\n/**\n  \\brief   LDRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged LDRT instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldrt %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return(result);\n}\n\n\n/**\n  \\brief   STRT Unprivileged (8 bit)\n  \\details Executes a Unprivileged STRT instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\n{\n   __ASM volatile (\"strbt %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (16 bit)\n  \\details Executes a Unprivileged STRT instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\n{\n   __ASM volatile (\"strht %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   STRT Unprivileged (32 bit)\n  \\details Executes a Unprivileged STRT instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\n{\n   __ASM volatile (\"strt %1, %0\" : \"=Q\" (*ptr) : \"r\" (value) );\n}\n\n#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n/**\n  \\brief   Signed Saturate\n  \\details Saturates a signed value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (1..32)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\n{\n  if ((sat >= 1U) && (sat <= 32U))\n  {\n    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n    const int32_t min = -1 - max ;\n    if (val > max)\n    {\n      return max;\n    }\n    else if (val < min)\n    {\n      return min;\n    }\n  }\n  return val;\n}\n\n/**\n  \\brief   Unsigned Saturate\n  \\details Saturates an unsigned value.\n  \\param [in]  value  Value to be saturated\n  \\param [in]    sat  Bit position to saturate to (0..31)\n  \\return             Saturated value\n */\n__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\n{\n  if (sat <= 31U)\n  {\n    const uint32_t max = ((1U << sat) - 1U);\n    if (val > (int32_t)max)\n    {\n      return max;\n    }\n    else if (val < 0)\n    {\n      return 0U;\n    }\n  }\n  return (uint32_t)val;\n}\n\n#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \\\n           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \\\n           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */\n\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n/**\n  \\brief   Load-Acquire (8 bit)\n  \\details Executes a LDAB instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldab %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (16 bit)\n  \\details Executes a LDAH instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldah %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire (32 bit)\n  \\details Executes a LDA instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"lda %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release (8 bit)\n  \\details Executes a STLB instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\n{\n   __ASM volatile (\"stlb %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (16 bit)\n  \\details Executes a STLH instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\n{\n   __ASM volatile (\"stlh %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Store-Release (32 bit)\n  \\details Executes a STL instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n */\n__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\n{\n   __ASM volatile (\"stl %1, %0\" : \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (8 bit)\n  \\details Executes a LDAB exclusive instruction for 8 bit value.\n  \\param [in]    ptr  Pointer to data\n  \\return             value of type uint8_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldaexb %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint8_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (16 bit)\n  \\details Executes a LDAH exclusive instruction for 16 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint16_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldaexh %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return ((uint16_t) result);\n}\n\n\n/**\n  \\brief   Load-Acquire Exclusive (32 bit)\n  \\details Executes a LDA exclusive instruction for 32 bit values.\n  \\param [in]    ptr  Pointer to data\n  \\return        value of type uint32_t at (*ptr)\n */\n__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr)\n{\n    uint32_t result;\n\n   __ASM volatile (\"ldaex %0, %1\" : \"=r\" (result) : \"Q\" (*ptr) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release Exclusive (8 bit)\n  \\details Executes a STLB exclusive instruction for 8 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"stlexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release Exclusive (16 bit)\n  \\details Executes a STLH exclusive instruction for 16 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"stlexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n\n/**\n  \\brief   Store-Release Exclusive (32 bit)\n  \\details Executes a STL exclusive instruction for 32 bit values.\n  \\param [in]  value  Value to store\n  \\param [in]    ptr  Pointer to location\n  \\return          0  Function succeeded\n  \\return          1  Function failed\n */\n__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)\n{\n   uint32_t result;\n\n   __ASM volatile (\"stlex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*ptr) : \"r\" ((uint32_t)value) );\n   return(result);\n}\n\n#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */\n\n/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n\n\n/* ###################  Compiler specific Intrinsics  ########################### */\n/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n  Access to dedicated SIMD instructions\n  @{\n*/\n\n#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\n\n__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n\n__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"ssax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"qsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"shsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uqsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uhsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usad8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"usada8 %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n#define __SSAT16(ARG1,ARG2) \\\n({                          \\\n  int32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"ssat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n#define __USAT16(ARG1,ARG2) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1); \\\n  __ASM (\"usat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n  __RES; \\\n })\n\n__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"uxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smusdx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsd %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\n{\n  uint32_t result;\n\n  __ASM volatile (\"smlsdx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)\n{\n  union llreg_u{\n    uint32_t w32[2];\n    uint64_t w64;\n  } llr;\n  llr.w64 = acc;\n\n#ifndef __ARMEB__   /* Little endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[0]), \"=r\" (llr.w32[1]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[0]), \"1\" (llr.w32[1]) );\n#else               /* Big endian */\n  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (llr.w32[1]), \"=r\" (llr.w32[0]): \"r\" (op1), \"r\" (op2) , \"0\" (llr.w32[1]), \"1\" (llr.w32[0]) );\n#endif\n\n  return(llr.w64);\n}\n\n__STATIC_FORCEINLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\n{\n  uint32_t result;\n\n  __ASM volatile (\"sel %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)\n{\n  int32_t result;\n\n  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n  return(result);\n}\n\n#if 0\n#define __PKHBT(ARG1,ARG2,ARG3) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n  __ASM (\"pkhbt %0, %1, %2, lsl %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n  __RES; \\\n })\n\n#define __PKHTB(ARG1,ARG2,ARG3) \\\n({                          \\\n  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n  if (ARG3 == 0) \\\n    __ASM (\"pkhtb %0, %1, %2\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2)  ); \\\n  else \\\n    __ASM (\"pkhtb %0, %1, %2, asr %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n  __RES; \\\n })\n#endif\n\n#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n\n#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n\n__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n{\n int32_t result;\n\n __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n return(result);\n}\n\n#endif /* (__ARM_FEATURE_DSP == 1) */\n/*@} end of group CMSIS_SIMD_intrinsics */\n\n\n#pragma GCC diagnostic pop\n\n#endif /* __CMSIS_GCC_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/cmsis_iccarm.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_iccarm.h\n * @brief    CMSIS compiler ICCARM (IAR Compiler for Arm) header file\n * @version  V5.1.0\n * @date     08. May 2019\n ******************************************************************************/\n\n//------------------------------------------------------------------------------\n//\n// Copyright (c) 2017-2019 IAR Systems\n// Copyright (c) 2017-2019 Arm Limited. All rights reserved. \n//\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n//------------------------------------------------------------------------------\n\n\n#ifndef __CMSIS_ICCARM_H__\n#define __CMSIS_ICCARM_H__\n\n#ifndef __ICCARM__\n  #error This file should only be compiled by ICCARM\n#endif\n\n#pragma system_include\n\n#define __IAR_FT _Pragma(\"inline=forced\") __intrinsic\n\n#if (__VER__ >= 8000000)\n  #define __ICCARM_V8 1\n#else\n  #define __ICCARM_V8 0\n#endif\n\n#ifndef __ALIGNED\n  #if __ICCARM_V8\n    #define __ALIGNED(x) __attribute__((aligned(x)))\n  #elif (__VER__ >= 7080000)\n    /* Needs IAR language extensions */\n    #define __ALIGNED(x) __attribute__((aligned(x)))\n  #else\n    #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored.\n    #define __ALIGNED(x)\n  #endif\n#endif\n\n\n/* Define compiler macros for CPU architecture, used in CMSIS 5.\n */\n#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__\n/* Macros already defined */\n#else\n  #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__)\n    #define __ARM_ARCH_8M_MAIN__ 1\n  #elif defined(__ARM8M_BASELINE__)\n    #define __ARM_ARCH_8M_BASE__ 1\n  #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M'\n    #if __ARM_ARCH == 6\n      #define __ARM_ARCH_6M__ 1\n    #elif __ARM_ARCH == 7\n      #if __ARM_FEATURE_DSP\n        #define __ARM_ARCH_7EM__ 1\n      #else\n        #define __ARM_ARCH_7M__ 1\n      #endif\n    #endif /* __ARM_ARCH */\n  #endif /* __ARM_ARCH_PROFILE == 'M' */\n#endif\n\n/* Alternativ core deduction for older ICCARM's */\n#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \\\n    !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__)\n  #if defined(__ARM6M__) && (__CORE__ == __ARM6M__)\n    #define __ARM_ARCH_6M__ 1\n  #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__)\n    #define __ARM_ARCH_7M__ 1\n  #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__)\n    #define __ARM_ARCH_7EM__  1\n  #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__)\n    #define __ARM_ARCH_8M_BASE__ 1\n  #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__)\n    #define __ARM_ARCH_8M_MAIN__ 1\n  #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__)\n    #define __ARM_ARCH_8M_MAIN__ 1\n  #else\n    #error \"Unknown target.\"\n  #endif\n#endif\n\n\n\n#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1\n  #define __IAR_M0_FAMILY  1\n#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1\n  #define __IAR_M0_FAMILY  1\n#else\n  #define __IAR_M0_FAMILY  0\n#endif\n\n\n#ifndef __ASM\n  #define __ASM __asm\n#endif\n\n#ifndef   __COMPILER_BARRIER\n  #define __COMPILER_BARRIER() __ASM volatile(\"\":::\"memory\")\n#endif\n\n#ifndef __INLINE\n  #define __INLINE inline\n#endif\n\n#ifndef   __NO_RETURN\n  #if __ICCARM_V8\n    #define __NO_RETURN __attribute__((__noreturn__))\n  #else\n    #define __NO_RETURN _Pragma(\"object_attribute=__noreturn\")\n  #endif\n#endif\n\n#ifndef   __PACKED\n  #if __ICCARM_V8\n    #define __PACKED __attribute__((packed, aligned(1)))\n  #else\n    /* Needs IAR language extensions */\n    #define __PACKED __packed\n  #endif\n#endif\n\n#ifndef   __PACKED_STRUCT\n  #if __ICCARM_V8\n    #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))\n  #else\n    /* Needs IAR language extensions */\n    #define __PACKED_STRUCT __packed struct\n  #endif\n#endif\n\n#ifndef   __PACKED_UNION\n  #if __ICCARM_V8\n    #define __PACKED_UNION union __attribute__((packed, aligned(1)))\n  #else\n    /* Needs IAR language extensions */\n    #define __PACKED_UNION __packed union\n  #endif\n#endif\n\n#ifndef   __RESTRICT\n  #if __ICCARM_V8\n    #define __RESTRICT            __restrict\n  #else\n    /* Needs IAR language extensions */\n    #define __RESTRICT            restrict\n  #endif\n#endif\n\n#ifndef   __STATIC_INLINE\n  #define __STATIC_INLINE       static inline\n#endif\n\n#ifndef   __FORCEINLINE\n  #define __FORCEINLINE         _Pragma(\"inline=forced\")\n#endif\n\n#ifndef   __STATIC_FORCEINLINE\n  #define __STATIC_FORCEINLINE  __FORCEINLINE __STATIC_INLINE\n#endif\n\n#ifndef __UNALIGNED_UINT16_READ\n#pragma language=save\n#pragma language=extended\n__IAR_FT uint16_t __iar_uint16_read(void const *ptr)\n{\n  return *(__packed uint16_t*)(ptr);\n}\n#pragma language=restore\n#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR)\n#endif\n\n\n#ifndef __UNALIGNED_UINT16_WRITE\n#pragma language=save\n#pragma language=extended\n__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val)\n{\n  *(__packed uint16_t*)(ptr) = val;;\n}\n#pragma language=restore\n#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL)\n#endif\n\n#ifndef __UNALIGNED_UINT32_READ\n#pragma language=save\n#pragma language=extended\n__IAR_FT uint32_t __iar_uint32_read(void const *ptr)\n{\n  return *(__packed uint32_t*)(ptr);\n}\n#pragma language=restore\n#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR)\n#endif\n\n#ifndef __UNALIGNED_UINT32_WRITE\n#pragma language=save\n#pragma language=extended\n__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val)\n{\n  *(__packed uint32_t*)(ptr) = val;;\n}\n#pragma language=restore\n#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL)\n#endif\n\n#ifndef __UNALIGNED_UINT32   /* deprecated */\n#pragma language=save\n#pragma language=extended\n__packed struct  __iar_u32 { uint32_t v; };\n#pragma language=restore\n#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v)\n#endif\n\n#ifndef   __USED\n  #if __ICCARM_V8\n    #define __USED __attribute__((used))\n  #else\n    #define __USED _Pragma(\"__root\")\n  #endif\n#endif\n\n#ifndef   __WEAK\n  #if __ICCARM_V8\n    #define __WEAK __attribute__((weak))\n  #else\n    #define __WEAK _Pragma(\"__weak\")\n  #endif\n#endif\n\n#ifndef __PROGRAM_START\n#define __PROGRAM_START           __iar_program_start\n#endif\n\n#ifndef __INITIAL_SP\n#define __INITIAL_SP              CSTACK$$Limit\n#endif\n\n#ifndef __STACK_LIMIT\n#define __STACK_LIMIT             CSTACK$$Base\n#endif\n\n#ifndef __VECTOR_TABLE\n#define __VECTOR_TABLE            __vector_table\n#endif\n\n#ifndef __VECTOR_TABLE_ATTRIBUTE\n#define __VECTOR_TABLE_ATTRIBUTE  @\".intvec\"\n#endif\n\n#ifndef __ICCARM_INTRINSICS_VERSION__\n  #define __ICCARM_INTRINSICS_VERSION__  0\n#endif\n\n#if __ICCARM_INTRINSICS_VERSION__ == 2\n\n  #if defined(__CLZ)\n    #undef __CLZ\n  #endif\n  #if defined(__REVSH)\n    #undef __REVSH\n  #endif\n  #if defined(__RBIT)\n    #undef __RBIT\n  #endif\n  #if defined(__SSAT)\n    #undef __SSAT\n  #endif\n  #if defined(__USAT)\n    #undef __USAT\n  #endif\n\n  #include \"iccarm_builtin.h\"\n\n  #define __disable_fault_irq __iar_builtin_disable_fiq\n  #define __disable_irq       __iar_builtin_disable_interrupt\n  #define __enable_fault_irq  __iar_builtin_enable_fiq\n  #define __enable_irq        __iar_builtin_enable_interrupt\n  #define __arm_rsr           __iar_builtin_rsr\n  #define __arm_wsr           __iar_builtin_wsr\n\n\n  #define __get_APSR()                (__arm_rsr(\"APSR\"))\n  #define __get_BASEPRI()             (__arm_rsr(\"BASEPRI\"))\n  #define __get_CONTROL()             (__arm_rsr(\"CONTROL\"))\n  #define __get_FAULTMASK()           (__arm_rsr(\"FAULTMASK\"))\n\n  #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n       (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )\n    #define __get_FPSCR()             (__arm_rsr(\"FPSCR\"))\n    #define __set_FPSCR(VALUE)        (__arm_wsr(\"FPSCR\", (VALUE)))\n  #else\n    #define __get_FPSCR()             ( 0 )\n    #define __set_FPSCR(VALUE)        ((void)VALUE)\n  #endif\n\n  #define __get_IPSR()                (__arm_rsr(\"IPSR\"))\n  #define __get_MSP()                 (__arm_rsr(\"MSP\"))\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure MSPLIM is RAZ/WI\n    #define __get_MSPLIM()            (0U)\n  #else\n    #define __get_MSPLIM()            (__arm_rsr(\"MSPLIM\"))\n  #endif\n  #define __get_PRIMASK()             (__arm_rsr(\"PRIMASK\"))\n  #define __get_PSP()                 (__arm_rsr(\"PSP\"))\n\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n    #define __get_PSPLIM()            (0U)\n  #else\n    #define __get_PSPLIM()            (__arm_rsr(\"PSPLIM\"))\n  #endif\n\n  #define __get_xPSR()                (__arm_rsr(\"xPSR\"))\n\n  #define __set_BASEPRI(VALUE)        (__arm_wsr(\"BASEPRI\", (VALUE)))\n  #define __set_BASEPRI_MAX(VALUE)    (__arm_wsr(\"BASEPRI_MAX\", (VALUE)))\n  #define __set_CONTROL(VALUE)        (__arm_wsr(\"CONTROL\", (VALUE)))\n  #define __set_FAULTMASK(VALUE)      (__arm_wsr(\"FAULTMASK\", (VALUE)))\n  #define __set_MSP(VALUE)            (__arm_wsr(\"MSP\", (VALUE)))\n\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure MSPLIM is RAZ/WI\n    #define __set_MSPLIM(VALUE)       ((void)(VALUE))\n  #else\n    #define __set_MSPLIM(VALUE)       (__arm_wsr(\"MSPLIM\", (VALUE)))\n  #endif\n  #define __set_PRIMASK(VALUE)        (__arm_wsr(\"PRIMASK\", (VALUE)))\n  #define __set_PSP(VALUE)            (__arm_wsr(\"PSP\", (VALUE)))\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n    #define __set_PSPLIM(VALUE)       ((void)(VALUE))\n  #else\n    #define __set_PSPLIM(VALUE)       (__arm_wsr(\"PSPLIM\", (VALUE)))\n  #endif\n\n  #define __TZ_get_CONTROL_NS()       (__arm_rsr(\"CONTROL_NS\"))\n  #define __TZ_set_CONTROL_NS(VALUE)  (__arm_wsr(\"CONTROL_NS\", (VALUE)))\n  #define __TZ_get_PSP_NS()           (__arm_rsr(\"PSP_NS\"))\n  #define __TZ_set_PSP_NS(VALUE)      (__arm_wsr(\"PSP_NS\", (VALUE)))\n  #define __TZ_get_MSP_NS()           (__arm_rsr(\"MSP_NS\"))\n  #define __TZ_set_MSP_NS(VALUE)      (__arm_wsr(\"MSP_NS\", (VALUE)))\n  #define __TZ_get_SP_NS()            (__arm_rsr(\"SP_NS\"))\n  #define __TZ_set_SP_NS(VALUE)       (__arm_wsr(\"SP_NS\", (VALUE)))\n  #define __TZ_get_PRIMASK_NS()       (__arm_rsr(\"PRIMASK_NS\"))\n  #define __TZ_set_PRIMASK_NS(VALUE)  (__arm_wsr(\"PRIMASK_NS\", (VALUE)))\n  #define __TZ_get_BASEPRI_NS()       (__arm_rsr(\"BASEPRI_NS\"))\n  #define __TZ_set_BASEPRI_NS(VALUE)  (__arm_wsr(\"BASEPRI_NS\", (VALUE)))\n  #define __TZ_get_FAULTMASK_NS()     (__arm_rsr(\"FAULTMASK_NS\"))\n  #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr(\"FAULTMASK_NS\", (VALUE)))\n\n  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\n    // without main extensions, the non-secure PSPLIM is RAZ/WI\n    #define __TZ_get_PSPLIM_NS()      (0U)\n    #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE))\n  #else\n    #define __TZ_get_PSPLIM_NS()      (__arm_rsr(\"PSPLIM_NS\"))\n    #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr(\"PSPLIM_NS\", (VALUE)))\n  #endif\n\n  #define __TZ_get_MSPLIM_NS()        (__arm_rsr(\"MSPLIM_NS\"))\n  #define __TZ_set_MSPLIM_NS(VALUE)   (__arm_wsr(\"MSPLIM_NS\", (VALUE)))\n\n  #define __NOP     __iar_builtin_no_operation\n\n  #define __CLZ     __iar_builtin_CLZ\n  #define __CLREX   __iar_builtin_CLREX\n\n  #define __DMB     __iar_builtin_DMB\n  #define __DSB     __iar_builtin_DSB\n  #define __ISB     __iar_builtin_ISB\n\n  #define __LDREXB  __iar_builtin_LDREXB\n  #define __LDREXH  __iar_builtin_LDREXH\n  #define __LDREXW  __iar_builtin_LDREX\n\n  #define __RBIT    __iar_builtin_RBIT\n  #define __REV     __iar_builtin_REV\n  #define __REV16   __iar_builtin_REV16\n\n  __IAR_FT int16_t __REVSH(int16_t val)\n  {\n    return (int16_t) __iar_builtin_REVSH(val);\n  }\n\n  #define __ROR     __iar_builtin_ROR\n  #define __RRX     __iar_builtin_RRX\n\n  #define __SEV     __iar_builtin_SEV\n\n  #if !__IAR_M0_FAMILY\n    #define __SSAT    __iar_builtin_SSAT\n  #endif\n\n  #define __STREXB  __iar_builtin_STREXB\n  #define __STREXH  __iar_builtin_STREXH\n  #define __STREXW  __iar_builtin_STREX\n\n  #if !__IAR_M0_FAMILY\n    #define __USAT    __iar_builtin_USAT\n  #endif\n\n  #define __WFE     __iar_builtin_WFE\n  #define __WFI     __iar_builtin_WFI\n\n  #if __ARM_MEDIA__\n    #define __SADD8   __iar_builtin_SADD8\n    #define __QADD8   __iar_builtin_QADD8\n    #define __SHADD8  __iar_builtin_SHADD8\n    #define __UADD8   __iar_builtin_UADD8\n    #define __UQADD8  __iar_builtin_UQADD8\n    #define __UHADD8  __iar_builtin_UHADD8\n    #define __SSUB8   __iar_builtin_SSUB8\n    #define __QSUB8   __iar_builtin_QSUB8\n    #define __SHSUB8  __iar_builtin_SHSUB8\n    #define __USUB8   __iar_builtin_USUB8\n    #define __UQSUB8  __iar_builtin_UQSUB8\n    #define __UHSUB8  __iar_builtin_UHSUB8\n    #define __SADD16  __iar_builtin_SADD16\n    #define __QADD16  __iar_builtin_QADD16\n    #define __SHADD16 __iar_builtin_SHADD16\n    #define __UADD16  __iar_builtin_UADD16\n    #define __UQADD16 __iar_builtin_UQADD16\n    #define __UHADD16 __iar_builtin_UHADD16\n    #define __SSUB16  __iar_builtin_SSUB16\n    #define __QSUB16  __iar_builtin_QSUB16\n    #define __SHSUB16 __iar_builtin_SHSUB16\n    #define __USUB16  __iar_builtin_USUB16\n    #define __UQSUB16 __iar_builtin_UQSUB16\n    #define __UHSUB16 __iar_builtin_UHSUB16\n    #define __SASX    __iar_builtin_SASX\n    #define __QASX    __iar_builtin_QASX\n    #define __SHASX   __iar_builtin_SHASX\n    #define __UASX    __iar_builtin_UASX\n    #define __UQASX   __iar_builtin_UQASX\n    #define __UHASX   __iar_builtin_UHASX\n    #define __SSAX    __iar_builtin_SSAX\n    #define __QSAX    __iar_builtin_QSAX\n    #define __SHSAX   __iar_builtin_SHSAX\n    #define __USAX    __iar_builtin_USAX\n    #define __UQSAX   __iar_builtin_UQSAX\n    #define __UHSAX   __iar_builtin_UHSAX\n    #define __USAD8   __iar_builtin_USAD8\n    #define __USADA8  __iar_builtin_USADA8\n    #define __SSAT16  __iar_builtin_SSAT16\n    #define __USAT16  __iar_builtin_USAT16\n    #define __UXTB16  __iar_builtin_UXTB16\n    #define __UXTAB16 __iar_builtin_UXTAB16\n    #define __SXTB16  __iar_builtin_SXTB16\n    #define __SXTAB16 __iar_builtin_SXTAB16\n    #define __SMUAD   __iar_builtin_SMUAD\n    #define __SMUADX  __iar_builtin_SMUADX\n    #define __SMMLA   __iar_builtin_SMMLA\n    #define __SMLAD   __iar_builtin_SMLAD\n    #define __SMLADX  __iar_builtin_SMLADX\n    #define __SMLALD  __iar_builtin_SMLALD\n    #define __SMLALDX __iar_builtin_SMLALDX\n    #define __SMUSD   __iar_builtin_SMUSD\n    #define __SMUSDX  __iar_builtin_SMUSDX\n    #define __SMLSD   __iar_builtin_SMLSD\n    #define __SMLSDX  __iar_builtin_SMLSDX\n    #define __SMLSLD  __iar_builtin_SMLSLD\n    #define __SMLSLDX __iar_builtin_SMLSLDX\n    #define __SEL     __iar_builtin_SEL\n    #define __QADD    __iar_builtin_QADD\n    #define __QSUB    __iar_builtin_QSUB\n    #define __PKHBT   __iar_builtin_PKHBT\n    #define __PKHTB   __iar_builtin_PKHTB\n  #endif\n\n#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */\n\n  #if __IAR_M0_FAMILY\n   /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */\n    #define __CLZ  __cmsis_iar_clz_not_active\n    #define __SSAT __cmsis_iar_ssat_not_active\n    #define __USAT __cmsis_iar_usat_not_active\n    #define __RBIT __cmsis_iar_rbit_not_active\n    #define __get_APSR  __cmsis_iar_get_APSR_not_active\n  #endif\n\n\n  #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n         (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     ))\n    #define __get_FPSCR __cmsis_iar_get_FPSR_not_active\n    #define __set_FPSCR __cmsis_iar_set_FPSR_not_active\n  #endif\n\n  #ifdef __INTRINSICS_INCLUDED\n  #error intrinsics.h is already included previously!\n  #endif\n\n  #include <intrinsics.h>\n\n  #if __IAR_M0_FAMILY\n   /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */\n    #undef __CLZ\n    #undef __SSAT\n    #undef __USAT\n    #undef __RBIT\n    #undef __get_APSR\n\n    __STATIC_INLINE uint8_t __CLZ(uint32_t data)\n    {\n      if (data == 0U) { return 32U; }\n\n      uint32_t count = 0U;\n      uint32_t mask = 0x80000000U;\n\n      while ((data & mask) == 0U)\n      {\n        count += 1U;\n        mask = mask >> 1U;\n      }\n      return count;\n    }\n\n    __STATIC_INLINE uint32_t __RBIT(uint32_t v)\n    {\n      uint8_t sc = 31U;\n      uint32_t r = v;\n      for (v >>= 1U; v; v >>= 1U)\n      {\n        r <<= 1U;\n        r |= v & 1U;\n        sc--;\n      }\n      return (r << sc);\n    }\n\n    __STATIC_INLINE  uint32_t __get_APSR(void)\n    {\n      uint32_t res;\n      __asm(\"MRS      %0,APSR\" : \"=r\" (res));\n      return res;\n    }\n\n  #endif\n\n  #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\\n         (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     ))\n    #undef __get_FPSCR\n    #undef __set_FPSCR\n    #define __get_FPSCR()       (0)\n    #define __set_FPSCR(VALUE)  ((void)VALUE)\n  #endif\n\n  #pragma diag_suppress=Pe940\n  #pragma diag_suppress=Pe177\n\n  #define __enable_irq    __enable_interrupt\n  #define __disable_irq   __disable_interrupt\n  #define __NOP           __no_operation\n\n  #define __get_xPSR      __get_PSR\n\n  #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0)\n\n    __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr)\n    {\n      return __LDREX((unsigned long *)ptr);\n    }\n\n    __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr)\n    {\n      return __STREX(value, (unsigned long *)ptr);\n    }\n  #endif\n\n\n  /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */\n  #if (__CORTEX_M >= 0x03)\n\n    __IAR_FT uint32_t __RRX(uint32_t value)\n    {\n      uint32_t result;\n      __ASM(\"RRX      %0, %1\" : \"=r\"(result) : \"r\" (value) : \"cc\");\n      return(result);\n    }\n\n    __IAR_FT void __set_BASEPRI_MAX(uint32_t value)\n    {\n      __asm volatile(\"MSR      BASEPRI_MAX,%0\"::\"r\" (value));\n    }\n\n\n    #define __enable_fault_irq  __enable_fiq\n    #define __disable_fault_irq __disable_fiq\n\n\n  #endif /* (__CORTEX_M >= 0x03) */\n\n  __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2)\n  {\n    return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2));\n  }\n\n  #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n       (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n   __IAR_FT uint32_t __get_MSPLIM(void)\n    {\n      uint32_t res;\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure MSPLIM is RAZ/WI\n      res = 0U;\n    #else\n      __asm volatile(\"MRS      %0,MSPLIM\" : \"=r\" (res));\n    #endif\n      return res;\n    }\n\n    __IAR_FT void   __set_MSPLIM(uint32_t value)\n    {\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure MSPLIM is RAZ/WI\n      (void)value;\n    #else\n      __asm volatile(\"MSR      MSPLIM,%0\" :: \"r\" (value));\n    #endif\n    }\n\n    __IAR_FT uint32_t __get_PSPLIM(void)\n    {\n      uint32_t res;\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      res = 0U;\n    #else\n      __asm volatile(\"MRS      %0,PSPLIM\" : \"=r\" (res));\n    #endif\n      return res;\n    }\n\n    __IAR_FT void   __set_PSPLIM(uint32_t value)\n    {\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      (void)value;\n    #else\n      __asm volatile(\"MSR      PSPLIM,%0\" :: \"r\" (value));\n    #endif\n    }\n\n    __IAR_FT uint32_t __TZ_get_CONTROL_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,CONTROL_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_CONTROL_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      CONTROL_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_PSP_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,PSP_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_PSP_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      PSP_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_MSP_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,MSP_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_MSP_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      MSP_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_SP_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,SP_NS\" : \"=r\" (res));\n      return res;\n    }\n    __IAR_FT void   __TZ_set_SP_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      SP_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_PRIMASK_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,PRIMASK_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_PRIMASK_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      PRIMASK_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_BASEPRI_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,BASEPRI_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_BASEPRI_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      BASEPRI_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_FAULTMASK_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,FAULTMASK_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_FAULTMASK_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      FAULTMASK_NS,%0\" :: \"r\" (value));\n    }\n\n    __IAR_FT uint32_t   __TZ_get_PSPLIM_NS(void)\n    {\n      uint32_t res;\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      res = 0U;\n    #else\n      __asm volatile(\"MRS      %0,PSPLIM_NS\" : \"=r\" (res));\n    #endif\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_PSPLIM_NS(uint32_t value)\n    {\n    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\\n         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))\n      // without main extensions, the non-secure PSPLIM is RAZ/WI\n      (void)value;\n    #else\n      __asm volatile(\"MSR      PSPLIM_NS,%0\" :: \"r\" (value));\n    #endif\n    }\n\n    __IAR_FT uint32_t   __TZ_get_MSPLIM_NS(void)\n    {\n      uint32_t res;\n      __asm volatile(\"MRS      %0,MSPLIM_NS\" : \"=r\" (res));\n      return res;\n    }\n\n    __IAR_FT void   __TZ_set_MSPLIM_NS(uint32_t value)\n    {\n      __asm volatile(\"MSR      MSPLIM_NS,%0\" :: \"r\" (value));\n    }\n\n  #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */\n\n#endif   /* __ICCARM_INTRINSICS_VERSION__ == 2 */\n\n#define __BKPT(value)    __asm volatile (\"BKPT     %0\" : : \"i\"(value))\n\n#if __IAR_M0_FAMILY\n  __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)\n  {\n    if ((sat >= 1U) && (sat <= 32U))\n    {\n      const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\n      const int32_t min = -1 - max ;\n      if (val > max)\n      {\n        return max;\n      }\n      else if (val < min)\n      {\n        return min;\n      }\n    }\n    return val;\n  }\n\n  __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)\n  {\n    if (sat <= 31U)\n    {\n      const uint32_t max = ((1U << sat) - 1U);\n      if (val > (int32_t)max)\n      {\n        return max;\n      }\n      else if (val < 0)\n      {\n        return 0U;\n      }\n    }\n    return (uint32_t)val;\n  }\n#endif\n\n#if (__CORTEX_M >= 0x03)   /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */\n\n  __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr)\n  {\n    uint32_t res;\n    __ASM(\"LDRBT %0, [%1]\" : \"=r\" (res) : \"r\" (addr) : \"memory\");\n    return ((uint8_t)res);\n  }\n\n  __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr)\n  {\n    uint32_t res;\n    __ASM(\"LDRHT %0, [%1]\" : \"=r\" (res) : \"r\" (addr) : \"memory\");\n    return ((uint16_t)res);\n  }\n\n  __IAR_FT uint32_t __LDRT(volatile uint32_t *addr)\n  {\n    uint32_t res;\n    __ASM(\"LDRT %0, [%1]\" : \"=r\" (res) : \"r\" (addr) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr)\n  {\n    __ASM(\"STRBT %1, [%0]\" : : \"r\" (addr), \"r\" ((uint32_t)value) : \"memory\");\n  }\n\n  __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr)\n  {\n    __ASM(\"STRHT %1, [%0]\" : : \"r\" (addr), \"r\" ((uint32_t)value) : \"memory\");\n  }\n\n  __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr)\n  {\n    __ASM(\"STRT %1, [%0]\" : : \"r\" (addr), \"r\" (value) : \"memory\");\n  }\n\n#endif /* (__CORTEX_M >= 0x03) */\n\n#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\\n     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )\n\n\n  __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAB %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint8_t)res);\n  }\n\n  __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAH %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint16_t)res);\n  }\n\n  __IAR_FT uint32_t __LDA(volatile uint32_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDA %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr)\n  {\n    __ASM volatile (\"STLB %1, [%0]\" :: \"r\" (ptr), \"r\" (value) : \"memory\");\n  }\n\n  __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr)\n  {\n    __ASM volatile (\"STLH %1, [%0]\" :: \"r\" (ptr), \"r\" (value) : \"memory\");\n  }\n\n  __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr)\n  {\n    __ASM volatile (\"STL %1, [%0]\" :: \"r\" (ptr), \"r\" (value) : \"memory\");\n  }\n\n  __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAEXB %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint8_t)res);\n  }\n\n  __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAEXH %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return ((uint16_t)res);\n  }\n\n  __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"LDAEX %0, [%1]\" : \"=r\" (res) : \"r\" (ptr) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"STLEXB %0, %2, [%1]\" : \"=r\" (res) : \"r\" (ptr), \"r\" (value) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"STLEXH %0, %2, [%1]\" : \"=r\" (res) : \"r\" (ptr), \"r\" (value) : \"memory\");\n    return res;\n  }\n\n  __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)\n  {\n    uint32_t res;\n    __ASM volatile (\"STLEX %0, %2, [%1]\" : \"=r\" (res) : \"r\" (ptr), \"r\" (value) : \"memory\");\n    return res;\n  }\n\n#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */\n\n#undef __IAR_FT\n#undef __IAR_M0_FAMILY\n#undef __ICCARM_V8\n\n#pragma diag_default=Pe940\n#pragma diag_default=Pe177\n\n#endif /* __CMSIS_ICCARM_H__ */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/cmsis_version.h",
    "content": "/**************************************************************************//**\n * @file     cmsis_version.h\n * @brief    CMSIS Core(M) Version definitions\n * @version  V5.0.3\n * @date     24. June 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CMSIS_VERSION_H\n#define __CMSIS_VERSION_H\n\n/*  CMSIS Version definitions */\n#define __CM_CMSIS_VERSION_MAIN  ( 5U)                                      /*!< [31:16] CMSIS Core(M) main version */\n#define __CM_CMSIS_VERSION_SUB   ( 3U)                                      /*!< [15:0]  CMSIS Core(M) sub version */\n#define __CM_CMSIS_VERSION       ((__CM_CMSIS_VERSION_MAIN << 16U) | \\\n                                   __CM_CMSIS_VERSION_SUB           )       /*!< CMSIS Core(M) version number */\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_armv81mml.h",
    "content": "/**************************************************************************//**\n * @file     core_armv81mml.h\n * @brief    CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File\n * @version  V1.0.0\n * @date     15. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2018-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_ARMV81MML_H_GENERIC\n#define __CORE_ARMV81MML_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_ARMV81MML\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n#define __ARM_ARCH_8M_MAIN__    1  // patching for now\n/*  CMSIS ARMV81MML definitions */\n#define __ARMv81MML_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __ARMv81MML_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __ARMv81MML_CMSIS_VERSION       ((__ARMv81MML_CMSIS_VERSION_MAIN << 16U) | \\\n                                         __ARMv81MML_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                     (81U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n  \n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n  \n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n  \n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U    \n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n  \n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV81MML_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_ARMV81MML_H_DEPENDANT\n#define __CORE_ARMV81MML_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __ARMv81MML_REV\n    #define __ARMv81MML_REV               0x0000U\n    #warning \"__ARMv81MML_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group ARMv81MML */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n        uint32_t RESERVED7[6U];\n  __IOM uint32_t ITCMCR;                 /*!< Offset: 0x290 (R/W)  Instruction Tightly-Coupled Memory Control Register */\n  __IOM uint32_t DTCMCR;                 /*!< Offset: 0x294 (R/W)  Data Tightly-Coupled Memory Control Registers */\n  __IOM uint32_t AHBPCR;                 /*!< Offset: 0x298 (R/W)  AHBP Control Register */\n  __IOM uint32_t CACR;                   /*!< Offset: 0x29C (R/W)  L1 Cache Control Register */\n  __IOM uint32_t AHBSCR;                 /*!< Offset: 0x2A0 (R/W)  AHB Slave Control Register */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t ABFSR;                  /*!< Offset: 0x2A8 (R/W)  Auxiliary Bus Fault Status Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/* Instruction Tightly-Coupled Memory Control Register Definitions */\n#define SCB_ITCMCR_SZ_Pos                   3U                                            /*!< SCB ITCMCR: SZ Position */\n#define SCB_ITCMCR_SZ_Msk                  (0xFUL << SCB_ITCMCR_SZ_Pos)                   /*!< SCB ITCMCR: SZ Mask */\n\n#define SCB_ITCMCR_RETEN_Pos                2U                                            /*!< SCB ITCMCR: RETEN Position */\n#define SCB_ITCMCR_RETEN_Msk               (1UL << SCB_ITCMCR_RETEN_Pos)                  /*!< SCB ITCMCR: RETEN Mask */\n\n#define SCB_ITCMCR_RMW_Pos                  1U                                            /*!< SCB ITCMCR: RMW Position */\n#define SCB_ITCMCR_RMW_Msk                 (1UL << SCB_ITCMCR_RMW_Pos)                    /*!< SCB ITCMCR: RMW Mask */\n\n#define SCB_ITCMCR_EN_Pos                   0U                                            /*!< SCB ITCMCR: EN Position */\n#define SCB_ITCMCR_EN_Msk                  (1UL /*<< SCB_ITCMCR_EN_Pos*/)                 /*!< SCB ITCMCR: EN Mask */\n\n/* Data Tightly-Coupled Memory Control Register Definitions */\n#define SCB_DTCMCR_SZ_Pos                   3U                                            /*!< SCB DTCMCR: SZ Position */\n#define SCB_DTCMCR_SZ_Msk                  (0xFUL << SCB_DTCMCR_SZ_Pos)                   /*!< SCB DTCMCR: SZ Mask */\n\n#define SCB_DTCMCR_RETEN_Pos                2U                                            /*!< SCB DTCMCR: RETEN Position */\n#define SCB_DTCMCR_RETEN_Msk               (1UL << SCB_DTCMCR_RETEN_Pos)                   /*!< SCB DTCMCR: RETEN Mask */\n\n#define SCB_DTCMCR_RMW_Pos                  1U                                            /*!< SCB DTCMCR: RMW Position */\n#define SCB_DTCMCR_RMW_Msk                 (1UL << SCB_DTCMCR_RMW_Pos)                    /*!< SCB DTCMCR: RMW Mask */\n\n#define SCB_DTCMCR_EN_Pos                   0U                                            /*!< SCB DTCMCR: EN Position */\n#define SCB_DTCMCR_EN_Msk                  (1UL /*<< SCB_DTCMCR_EN_Pos*/)                 /*!< SCB DTCMCR: EN Mask */\n\n/* AHBP Control Register Definitions */\n#define SCB_AHBPCR_SZ_Pos                   1U                                            /*!< SCB AHBPCR: SZ Position */\n#define SCB_AHBPCR_SZ_Msk                  (7UL << SCB_AHBPCR_SZ_Pos)                     /*!< SCB AHBPCR: SZ Mask */\n\n#define SCB_AHBPCR_EN_Pos                   0U                                            /*!< SCB AHBPCR: EN Position */\n#define SCB_AHBPCR_EN_Msk                  (1UL /*<< SCB_AHBPCR_EN_Pos*/)                 /*!< SCB AHBPCR: EN Mask */\n\n/* L1 Cache Control Register Definitions */\n#define SCB_CACR_FORCEWT_Pos                2U                                            /*!< SCB CACR: FORCEWT Position */\n#define SCB_CACR_FORCEWT_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: FORCEWT Mask */\n\n#define SCB_CACR_ECCEN_Pos                  1U                                            /*!< SCB CACR: ECCEN Position */\n#define SCB_CACR_ECCEN_Msk                 (1UL << SCB_CACR_ECCEN_Pos)                    /*!< SCB CACR: ECCEN Mask */\n\n#define SCB_CACR_SIWT_Pos                   0U                                            /*!< SCB CACR: SIWT Position */\n#define SCB_CACR_SIWT_Msk                  (1UL /*<< SCB_CACR_SIWT_Pos*/)                 /*!< SCB CACR: SIWT Mask */\n\n/* AHBS Control Register Definitions */\n#define SCB_AHBSCR_INITCOUNT_Pos           11U                                            /*!< SCB AHBSCR: INITCOUNT Position */\n#define SCB_AHBSCR_INITCOUNT_Msk           (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos)           /*!< SCB AHBSCR: INITCOUNT Mask */\n\n#define SCB_AHBSCR_TPRI_Pos                 2U                                            /*!< SCB AHBSCR: TPRI Position */\n#define SCB_AHBSCR_TPRI_Msk                (0x1FFUL << SCB_AHBPCR_TPRI_Pos)               /*!< SCB AHBSCR: TPRI Mask */\n\n#define SCB_AHBSCR_CTL_Pos                  0U                                            /*!< SCB AHBSCR: CTL Position*/\n#define SCB_AHBSCR_CTL_Msk                 (3UL /*<< SCB_AHBPCR_CTL_Pos*/)                /*!< SCB AHBSCR: CTL Mask */\n\n/* Auxiliary Bus Fault Status Register Definitions */\n#define SCB_ABFSR_AXIMTYPE_Pos              8U                                            /*!< SCB ABFSR: AXIMTYPE Position*/\n#define SCB_ABFSR_AXIMTYPE_Msk             (3UL << SCB_ABFSR_AXIMTYPE_Pos)                /*!< SCB ABFSR: AXIMTYPE Mask */\n\n#define SCB_ABFSR_EPPB_Pos                  4U                                            /*!< SCB ABFSR: EPPB Position*/\n#define SCB_ABFSR_EPPB_Msk                 (1UL << SCB_ABFSR_EPPB_Pos)                    /*!< SCB ABFSR: EPPB Mask */\n\n#define SCB_ABFSR_AXIM_Pos                  3U                                            /*!< SCB ABFSR: AXIM Position*/\n#define SCB_ABFSR_AXIM_Msk                 (1UL << SCB_ABFSR_AXIM_Pos)                    /*!< SCB ABFSR: AXIM Mask */\n\n#define SCB_ABFSR_AHBP_Pos                  2U                                            /*!< SCB ABFSR: AHBP Position*/\n#define SCB_ABFSR_AHBP_Msk                 (1UL << SCB_ABFSR_AHBP_Pos)                    /*!< SCB ABFSR: AHBP Mask */\n\n#define SCB_ABFSR_DTCM_Pos                  1U                                            /*!< SCB ABFSR: DTCM Position*/\n#define SCB_ABFSR_DTCM_Msk                 (1UL << SCB_ABFSR_DTCM_Pos)                    /*!< SCB ABFSR: DTCM Mask */\n\n#define SCB_ABFSR_ITCM_Pos                  0U                                            /*!< SCB ABFSR: ITCM Position*/\n#define SCB_ABFSR_ITCM_Msk                 (1UL /*<< SCB_ABFSR_ITCM_Pos*/)                /*!< SCB ABFSR: ITCM Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[29U];\n  __OM  uint32_t IWR;                    /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register */\n  __IM  uint32_t IRR;                    /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register */\n  __IOM uint32_t IMCR;                   /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register */\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Integration Write Register Definitions */\n#define ITM_IWR_ATVALIDM_Pos                0U                                            /*!< ITM IWR: ATVALIDM Position */\n#define ITM_IWR_ATVALIDM_Msk               (1UL /*<< ITM_IWR_ATVALIDM_Pos*/)              /*!< ITM IWR: ATVALIDM Mask */\n\n/* ITM Integration Read Register Definitions */\n#define ITM_IRR_ATREADYM_Pos                0U                                            /*!< ITM IRR: ATREADYM Position */\n#define ITM_IRR_ATREADYM_Msk               (1UL /*<< ITM_IRR_ATREADYM_Pos*/)              /*!< ITM IRR: ATREADYM Mask */\n\n/* ITM Integration Mode Control Register Definitions */\n#define ITM_IMCR_INTEGRATION_Pos            0U                                            /*!< ITM IMCR: INTEGRATION Position */\n#define ITM_IMCR_INTEGRATION_Msk           (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/)          /*!< ITM IMCR: INTEGRATION Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Sizes Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Sizes Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR2: ATREADY Position */\n#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/)    /*!< TPI ITATBCTR2: ATREADY Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR0: ATREADY Position */\n#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/)    /*!< TPI ITATBCTR0: ATREADY Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_MajorType_Pos           4U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n#define TPI_DEVTYPE_SubType_Pos             0U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_PXN_Pos                    4U                                            /*!< MPU RLAR: PXN Position */\n#define MPU_RLAR_PXN_Msk                   (0x1UL << MPU_RLAR_PXN_Pos)                    /*!< MPU RLAR: PXN Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk));             /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV81MML_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_armv8mbl.h",
    "content": "/**************************************************************************//**\n * @file     core_armv8mbl.h\n * @brief    CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File\n * @version  V5.0.8\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_ARMV8MBL_H_GENERIC\n#define __CORE_ARMV8MBL_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_ARMv8MBL\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS definitions */\n#define __ARMv8MBL_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __ARMv8MBL_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __ARMv8MBL_CMSIS_VERSION       ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \\\n                                         __ARMv8MBL_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                     ( 2U)                                            /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MBL_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_ARMV8MBL_H_DEPENDANT\n#define __CORE_ARMV8MBL_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __ARMv8MBL_REV\n    #define __ARMv8MBL_REV               0x0000U\n    #warning \"__ARMv8MBL_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __VTOR_PRESENT\n    #define __VTOR_PRESENT            0U\n    #warning \"__VTOR_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __ETM_PRESENT\n    #define __ETM_PRESENT             0U\n    #warning \"__ETM_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MTB_PRESENT\n    #define __MTB_PRESENT             0U\n    #warning \"__MTB_PRESENT not defined in device header file; using default!\"\n  #endif\n\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group ARMv8MBL */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint32_t IPR[124U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n#else\n        uint32_t RESERVED0;\n#endif\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHPR[2U];               /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n        uint32_t RESERVED0[6U];\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x3UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Sizes Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Sizes Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[809U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  Software Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  Software Lock Status Register */\n        uint32_t RESERVED4[4U];\n  __IM  uint32_t TYPE;                   /*!< Offset: 0xFC8 (R/ )  Device Identifier Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_SWOSCALER_Pos              0U                                         /*!< TPI ACPR: SWOSCALER Position */\n#define TPI_ACPR_SWOSCALER_Msk             (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/)    /*!< TPI ACPR: SWOSCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI Periodic Synchronization Control Register Definitions */\n#define TPI_PSCR_PSCount_Pos                0U                                         /*!< TPI PSCR: PSCount Position */\n#define TPI_PSCR_PSCount_Msk               (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/)        /*!< TPI PSCR: TPSCount Mask */\n\n/* TPI Software Lock Status Register Definitions */\n#define TPI_LSR_nTT_Pos                     1U                                         /*!< TPI LSR: Not thirty-two bit. Position */\n#define TPI_LSR_nTT_Msk                    (0x1UL << TPI_LSR_nTT_Pos)                  /*!< TPI LSR: Not thirty-two bit. Mask */\n\n#define TPI_LSR_SLK_Pos                     1U                                         /*!< TPI LSR: Software Lock status Position */\n#define TPI_LSR_SLK_Msk                    (0x1UL << TPI_LSR_SLK_Pos)                  /*!< TPI LSR: Software Lock status Mask */\n\n#define TPI_LSR_SLI_Pos                     0U                                         /*!< TPI LSR: Software Lock implemented Position */\n#define TPI_LSR_SLI_Msk                    (0x1UL /*<< TPI_LSR_SLI_Pos*/)              /*!< TPI LSR: Software Lock implemented Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFO depth Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFO depth Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n        uint32_t RESERVED0[7U];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  1U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: EN Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: EN Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#endif\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register */\n#define CoreDebug_DEMCR_DWTENA_Pos         24U                                            /*!< CoreDebug DEMCR: DWTENA Position */\n#define CoreDebug_DEMCR_DWTENA_Msk         (1UL << CoreDebug_DEMCR_DWTENA_Pos)            /*!< CoreDebug DEMCR: DWTENA Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */\n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n           If VTOR is not present address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MBL_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_armv8mml.h",
    "content": "/**************************************************************************//**\n * @file     core_armv8mml.h\n * @brief    CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     12. September 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_ARMV8MML_H_GENERIC\n#define __CORE_ARMV8MML_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_ARMv8MML\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS Armv8MML definitions */\n#define __ARMv8MML_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __ARMv8MML_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __ARMv8MML_CMSIS_VERSION       ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \\\n                                         __ARMv8MML_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                     (81U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined(__ARM_FEATURE_DSP)\n    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MML_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_ARMV8MML_H_DEPENDANT\n#define __CORE_ARMV8MML_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __ARMv8MML_REV\n    #define __ARMv8MML_REV               0x0000U\n    #warning \"__ARMv8MML_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group ARMv8MML */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Sizes Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Sizes Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[809U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  Software Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  Software Lock Status Register */\n        uint32_t RESERVED4[4U];\n  __IM  uint32_t TYPE;                   /*!< Offset: 0xFC8 (R/ )  Device Identifier Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_SWOSCALER_Pos              0U                                         /*!< TPI ACPR: SWOSCALER Position */\n#define TPI_ACPR_SWOSCALER_Msk             (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/)    /*!< TPI ACPR: SWOSCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI Periodic Synchronization Control Register Definitions */\n#define TPI_PSCR_PSCount_Pos                0U                                         /*!< TPI PSCR: PSCount Position */\n#define TPI_PSCR_PSCount_Msk               (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/)        /*!< TPI PSCR: TPSCount Mask */\n\n/* TPI Software Lock Status Register Definitions */\n#define TPI_LSR_nTT_Pos                     1U                                         /*!< TPI LSR: Not thirty-two bit. Position */\n#define TPI_LSR_nTT_Msk                    (0x1UL << TPI_LSR_nTT_Pos)                  /*!< TPI LSR: Not thirty-two bit. Mask */\n\n#define TPI_LSR_SLK_Pos                     1U                                         /*!< TPI LSR: Software Lock status Position */\n#define TPI_LSR_SLK_Msk                    (0x1UL << TPI_LSR_SLK_Pos)                  /*!< TPI LSR: Software Lock status Mask */\n\n#define TPI_LSR_SLI_Pos                     0U                                         /*!< TPI LSR: Software Lock implemented Position */\n#define TPI_LSR_SLI_Msk                    (0x1UL /*<< TPI_LSR_SLI_Pos*/)              /*!< TPI LSR: Software Lock implemented Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFO depth Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFO depth Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */\n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk));             /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)                      );              /* Insert write key and priority group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_ARMV8MML_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm0.h",
    "content": "/**************************************************************************//**\n * @file     core_cm0.h\n * @brief    CMSIS Cortex-M0 Core Peripheral Access Layer Header File\n * @version  V5.0.6\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM0_H_GENERIC\n#define __CORE_CM0_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M0\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n/*  CMSIS CM0 definitions */\n#define __CM0_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM0_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM0_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (0U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM0_H_DEPENDANT\n#define __CORE_CM0_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM0_REV\n    #define __CM0_REV               0x0000U\n    #warning \"__CM0_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M0 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n        uint32_t RESERVED0;\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the Cortex-M0 header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M0 */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           Address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = 0x0U;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M0 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = 0x0U;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm0plus.h",
    "content": "/**************************************************************************//**\n * @file     core_cm0plus.h\n * @brief    CMSIS Cortex-M0+ Core Peripheral Access Layer Header File\n * @version  V5.0.7\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM0PLUS_H_GENERIC\n#define __CORE_CM0PLUS_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex-M0+\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n/*  CMSIS CM0+ definitions */\n#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN)                  /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM0PLUS_CMSIS_VERSION_SUB  (__CM_CMSIS_VERSION_SUB)                   /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM0PLUS_CMSIS_VERSION      ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \\\n                                       __CM0PLUS_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                   (0U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0PLUS_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM0PLUS_H_DEPENDANT\n#define __CORE_CM0PLUS_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM0PLUS_REV\n    #define __CM0PLUS_REV             0x0000U\n    #warning \"__CM0PLUS_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __VTOR_PRESENT\n    #define __VTOR_PRESENT            0U\n    #warning \"__VTOR_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex-M0+ */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n#else\n        uint32_t RESERVED0;\n#endif\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 8U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  1U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   8U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << MPU_RBAR_ADDR_Pos)              /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the Cortex-M0+ header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M0+ */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n           If VTOR is not present address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t vectors = SCB->VTOR;\n#else\n  uint32_t vectors = 0x0U;\n#endif\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M0+ does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t vectors = SCB->VTOR;\n#else\n  uint32_t vectors = 0x0U;\n#endif\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM0PLUS_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm1.h",
    "content": "/**************************************************************************//**\n * @file     core_cm1.h\n * @brief    CMSIS Cortex-M1 Core Peripheral Access Layer Header File\n * @version  V1.0.1\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM1_H_GENERIC\n#define __CORE_CM1_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M1\n  @{\n */\n\n#include \"cmsis_version.h\"\n \n/*  CMSIS CM1 definitions */\n#define __CM1_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM1_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM1_CMSIS_VERSION       ((__CM1_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM1_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (1U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM1_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM1_H_DEPENDANT\n#define __CORE_CM1_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM1_REV\n    #define __CM1_REV               0x0100U\n    #warning \"__CM1_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M1 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n        uint32_t RESERVED0;\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_ITCMUAEN_Pos            4U                                        /*!< ACTLR: Instruction TCM Upper Alias Enable Position */\n#define SCnSCB_ACTLR_ITCMUAEN_Msk           (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos)         /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */\n\n#define SCnSCB_ACTLR_ITCMLAEN_Pos            3U                                        /*!< ACTLR: Instruction TCM Lower Alias Enable Position */\n#define SCnSCB_ACTLR_ITCMLAEN_Msk           (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos)         /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the Cortex-M1 header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M1 */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           Address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)0x0U;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  /* ARM Application Note 321 states that the M1 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)0x0U;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM1_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm23.h",
    "content": "/**************************************************************************//**\n * @file     core_cm23.h\n * @brief    CMSIS Cortex-M23 Core Peripheral Access Layer Header File\n * @version  V5.0.8\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM23_H_GENERIC\n#define __CORE_CM23_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M23\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS definitions */\n#define __CM23_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM23_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM23_CMSIS_VERSION       ((__CM23_CMSIS_VERSION_MAIN << 16U) | \\\n                                     __CM23_CMSIS_VERSION_SUB           )      /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                 (23U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM23_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM23_H_DEPENDANT\n#define __CORE_CM23_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM23_REV\n    #define __CM23_REV                0x0000U\n    #warning \"__CM23_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __VTOR_PRESENT\n    #define __VTOR_PRESENT            0U\n    #warning \"__VTOR_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __ETM_PRESENT\n    #define __ETM_PRESENT             0U\n    #warning \"__ETM_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MTB_PRESENT\n    #define __MTB_PRESENT             0U\n    #warning \"__MTB_PRESENT not defined in device header file; using default!\"\n  #endif\n\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M23 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint32_t IPR[124U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n#else\n        uint32_t RESERVED0;\n#endif\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED1;\n  __IOM uint32_t SHPR[2U];               /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n        uint32_t RESERVED0[6U];\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x3UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t ITFTTD0;                /*!< Offset: 0xEEC (R/ )  Integration Test FIFO Test Data 0 Register */\n  __IOM uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/W)  Integration Test ATB Control Register 2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  Integration Test ATB Control Register 0 */\n  __IM  uint32_t ITFTTD1;                /*!< Offset: 0xEFC (R/ )  Integration Test FIFO Test Data 1 Register */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  Device Configuration Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Identifier Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration Test FIFO Test Data 0 Register Definitions */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data2_Pos      16U                                         /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\n#define TPI_ITFTTD0_ATB_IF1_data2_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data1_Pos       8U                                         /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\n#define TPI_ITFTTD0_ATB_IF1_data1_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data0_Pos       0U                                          /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\n#define TPI_ITFTTD0_ATB_IF1_data0_Msk      (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 2 Register Definitions */\n#define TPI_ITATBCTR2_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID2S Position */\n#define TPI_ITATBCTR2_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos)      /*!< TPI ITATBCTR2: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR2_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID1S Position */\n#define TPI_ITATBCTR2_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos)      /*!< TPI ITATBCTR2: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR2_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY2S Position */\n#define TPI_ITATBCTR2_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY2S Mask */\n\n#define TPI_ITATBCTR2_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY1S Position */\n#define TPI_ITATBCTR2_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY1S Mask */\n\n/* TPI Integration Test FIFO Test Data 1 Register Definitions */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data2_Pos      16U                                         /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\n#define TPI_ITFTTD1_ATB_IF2_data2_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data1_Pos       8U                                         /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\n#define TPI_ITFTTD1_ATB_IF2_data1_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data0_Pos       0U                                          /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\n#define TPI_ITFTTD1_ATB_IF2_data0_Msk      (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 0 Definitions */\n#define TPI_ITATBCTR0_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID2S Position */\n#define TPI_ITATBCTR0_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos)      /*!< TPI ITATBCTR0: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR0_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID1S Position */\n#define TPI_ITATBCTR0_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos)      /*!< TPI ITATBCTR0: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR0_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY2S Position */\n#define TPI_ITATBCTR0_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY2S Mask */\n\n#define TPI_ITATBCTR0_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY1S Position */\n#define TPI_ITATBCTR0_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY1S Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFOSZ Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFOSZ Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n        uint32_t RESERVED0[7U];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  1U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: EN Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: EN Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#endif\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register */\n#define CoreDebug_DEMCR_DWTENA_Pos         24U                                            /*!< CoreDebug DEMCR: DWTENA Position */\n#define CoreDebug_DEMCR_DWTENA_Msk         (1UL << CoreDebug_DEMCR_DWTENA_Pos)            /*!< CoreDebug DEMCR: DWTENA Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n/*#define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping   not available for Cortex-M23 */\n/*#define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping   not available for Cortex-M23 */\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */ \n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else \n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\t\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n#define __NVIC_SetPriorityGrouping(X) (void)(X)\n#define __NVIC_GetPriorityGrouping()  (0U)\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n           If VTOR is not present address 0 must be mapped to SRAM.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n#else\n  uint32_t *vectors = (uint32_t *)0x0U;\n#endif\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM23_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm3.h",
    "content": "/**************************************************************************//**\n * @file     core_cm3.h\n * @brief    CMSIS Cortex-M3 Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM3_H_GENERIC\n#define __CORE_CM3_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M3\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS CM3 definitions */\n#define __CM3_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM3_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM3_CMSIS_VERSION       ((__CM3_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM3_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (3U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM3_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM3_H_DEPENDANT\n#define __CORE_CM3_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM3_REV\n    #define __CM3_REV               0x0200U\n    #warning \"__CM3_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M3 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t _reserved1:8;               /*!< bit: 16..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[5U];\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#if defined (__CM3_REV) && (__CM3_REV < 0x0201U)                   /* core r2p1 */\n#define SCB_VTOR_TBLBASE_Pos               29U                                            /*!< SCB VTOR: TBLBASE Position */\n#define SCB_VTOR_TBLBASE_Msk               (1UL << SCB_VTOR_TBLBASE_Pos)                  /*!< SCB VTOR: TBLBASE Mask */\n\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */\n#else\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n#endif\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n#if defined (__CM3_REV) && (__CM3_REV >= 0x200U)\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n#else\n        uint32_t RESERVED1[1U];\n#endif\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#if defined (__CM3_REV) && (__CM3_REV >= 0x200U)\n#define SCnSCB_ACTLR_DISOOFP_Pos            9U                                         /*!< ACTLR: DISOOFP Position */\n#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\n\n#define SCnSCB_ACTLR_DISFPCA_Pos            8U                                         /*!< ACTLR: DISFPCA Position */\n#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\n\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */\n#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n#endif\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n   #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) );               /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M3 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM3_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm33.h",
    "content": "/**************************************************************************//**\n * @file     core_cm33.h\n * @brief    CMSIS Cortex-M33 Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM33_H_GENERIC\n#define __CORE_CM33_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M33\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS CM33 definitions */\n#define __CM33_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                   /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM33_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                    /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM33_CMSIS_VERSION       ((__CM33_CMSIS_VERSION_MAIN << 16U) | \\\n                                     __CM33_CMSIS_VERSION_SUB           )      /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                 (33U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined (__TARGET_FPU_VFP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined (__ARM_FP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined (__ARMVFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined (__TI_VFP_SUPPORT__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined (__FPU_VFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM33_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM33_H_DEPENDANT\n#define __CORE_CM33_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM33_REV\n    #define __CM33_REV                0x0000U\n    #warning \"__CM33_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M33 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t ITFTTD0;                /*!< Offset: 0xEEC (R/ )  Integration Test FIFO Test Data 0 Register */\n  __IOM uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/W)  Integration Test ATB Control Register 2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  Integration Test ATB Control Register 0 */\n  __IM  uint32_t ITFTTD1;                /*!< Offset: 0xEFC (R/ )  Integration Test FIFO Test Data 1 Register */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  Device Configuration Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Identifier Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration Test FIFO Test Data 0 Register Definitions */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data2_Pos      16U                                         /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\n#define TPI_ITFTTD0_ATB_IF1_data2_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data1_Pos       8U                                         /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\n#define TPI_ITFTTD0_ATB_IF1_data1_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data0_Pos       0U                                          /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\n#define TPI_ITFTTD0_ATB_IF1_data0_Msk      (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 2 Register Definitions */\n#define TPI_ITATBCTR2_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID2S Position */\n#define TPI_ITATBCTR2_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos)      /*!< TPI ITATBCTR2: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR2_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID1S Position */\n#define TPI_ITATBCTR2_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos)      /*!< TPI ITATBCTR2: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR2_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY2S Position */\n#define TPI_ITATBCTR2_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY2S Mask */\n\n#define TPI_ITATBCTR2_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY1S Position */\n#define TPI_ITATBCTR2_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY1S Mask */\n\n/* TPI Integration Test FIFO Test Data 1 Register Definitions */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data2_Pos      16U                                         /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\n#define TPI_ITFTTD1_ATB_IF2_data2_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data1_Pos       8U                                         /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\n#define TPI_ITFTTD1_ATB_IF2_data1_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data0_Pos       0U                                          /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\n#define TPI_ITFTTD1_ATB_IF2_data0_Msk      (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 0 Definitions */\n#define TPI_ITATBCTR0_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID2S Position */\n#define TPI_ITATBCTR0_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos)      /*!< TPI ITATBCTR0: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR0_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID1S Position */\n#define TPI_ITATBCTR0_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos)      /*!< TPI ITATBCTR0: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR0_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY2S Position */\n#define TPI_ITATBCTR0_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY2S Mask */\n\n#define TPI_ITATBCTR0_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY1S Position */\n#define TPI_ITATBCTR0_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY1S Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFOSZ Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFOSZ Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */ \n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else \n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM33_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm35p.h",
    "content": "/**************************************************************************//**\n * @file     core_cm35p.h\n * @brief    CMSIS Cortex-M35P Core Peripheral Access Layer Header File\n * @version  V1.0.0\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM35P_H_GENERIC\n#define __CORE_CM35P_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M35P\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS CM35P definitions */\n#define __CM35P_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                  /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM35P_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                   /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM35P_CMSIS_VERSION       ((__CM35P_CMSIS_VERSION_MAIN << 16U) | \\\n                                      __CM35P_CMSIS_VERSION_SUB           )    /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                 (35U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined (__TARGET_FPU_VFP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined (__ARM_FP)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined (__ARMVFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\n    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\n      #define __DSP_USED       1U\n    #else\n      #error \"Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)\"\n      #define __DSP_USED         0U\n    #endif\n  #else\n    #define __DSP_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined (__TI_VFP_SUPPORT__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined (__FPU_VFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM35P_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM35P_H_DEPENDANT\n#define __CORE_CM35P_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM35P_REV\n    #define __CM35P_REV               0x0000U\n    #warning \"__CM35P_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __SAUREGION_PRESENT\n    #define __SAUREGION_PRESENT       0U\n    #warning \"__SAUREGION_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DSP_PRESENT\n    #define __DSP_PRESENT             0U\n    #warning \"__DSP_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M35P */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core SAU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */\n#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */\n    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */\n    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */\n    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */\n#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */\n\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[16U];\n  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[16U];\n  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[16U];\n  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[16U];\n  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[16U];\n  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */\n        uint32_t RESERVED5[16U];\n  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED6[580U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */\n        uint32_t RESERVED3[92U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */\n#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */\n\n#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\n#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\n\n#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */\n#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */\n#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */\n#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */\n\n#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */\n#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */\n#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */\n#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */\n\n#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */\n\n#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */\n\n#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */\n#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */\n#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */\n#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\n\n#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */\n#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */\n\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */\n#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */\n\n#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */\n#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */\n#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */\n#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Non-Secure Access Control Register Definitions */\n#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */\n#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */\n\n#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */\n#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */\n\n#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */\n#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */\n        uint32_t RESERVED6[4U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Stimulus Port Register Definitions */\n#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */\n#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */\n\n#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */\n#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */\n#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */\n\n#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */\n#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n        uint32_t RESERVED3[1U];\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n        uint32_t RESERVED5[1U];\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED6[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n        uint32_t RESERVED7[1U];\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */\n        uint32_t RESERVED9[1U];\n  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */\n        uint32_t RESERVED10[1U];\n  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */\n        uint32_t RESERVED11[1U];\n  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */\n        uint32_t RESERVED12[1U];\n  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */\n        uint32_t RESERVED13[1U];\n  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */\n        uint32_t RESERVED14[1U];\n  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */\n        uint32_t RESERVED15[1U];\n  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */\n        uint32_t RESERVED16[1U];\n  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */\n        uint32_t RESERVED17[1U];\n  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */\n        uint32_t RESERVED18[1U];\n  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */\n        uint32_t RESERVED19[1U];\n  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */\n        uint32_t RESERVED20[1U];\n  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */\n        uint32_t RESERVED21[1U];\n  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */\n        uint32_t RESERVED22[1U];\n  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */\n        uint32_t RESERVED23[1U];\n  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */\n        uint32_t RESERVED24[1U];\n  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */\n        uint32_t RESERVED25[1U];\n  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */\n        uint32_t RESERVED26[1U];\n  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */\n        uint32_t RESERVED27[1U];\n  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */\n        uint32_t RESERVED28[1U];\n  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */\n        uint32_t RESERVED29[1U];\n  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */\n        uint32_t RESERVED30[1U];\n  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */\n        uint32_t RESERVED31[1U];\n  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */\n        uint32_t RESERVED32[934U];\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n        uint32_t RESERVED33[1U];\n  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */\n#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */\n#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */\n\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */\n#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */\n\n#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */\n#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t ITFTTD0;                /*!< Offset: 0xEEC (R/ )  Integration Test FIFO Test Data 0 Register */\n  __IOM uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/W)  Integration Test ATB Control Register 2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  Integration Test ATB Control Register 0 */\n  __IM  uint32_t ITFTTD1;                /*!< Offset: 0xEFC (R/ )  Integration Test FIFO Test Data 1 Register */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  Device Configuration Register */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Identifier Register */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */\n#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration Test FIFO Test Data 0 Register Definitions */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\n#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data2_Pos      16U                                         /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\n#define TPI_ITFTTD0_ATB_IF1_data2_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data1_Pos       8U                                         /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\n#define TPI_ITFTTD0_ATB_IF1_data1_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\n\n#define TPI_ITFTTD0_ATB_IF1_data0_Pos       0U                                          /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\n#define TPI_ITFTTD0_ATB_IF1_data0_Msk      (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 2 Register Definitions */\n#define TPI_ITATBCTR2_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID2S Position */\n#define TPI_ITATBCTR2_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos)      /*!< TPI ITATBCTR2: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR2_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID1S Position */\n#define TPI_ITATBCTR2_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos)      /*!< TPI ITATBCTR2: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR2_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY2S Position */\n#define TPI_ITATBCTR2_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY2S Mask */\n\n#define TPI_ITATBCTR2_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY1S Position */\n#define TPI_ITATBCTR2_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY1S Mask */\n\n/* TPI Integration Test FIFO Test Data 1 Register Definitions */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\n#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\n#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\n\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\n#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data2_Pos      16U                                         /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\n#define TPI_ITFTTD1_ATB_IF2_data2_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data1_Pos       8U                                         /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\n#define TPI_ITFTTD1_ATB_IF2_data1_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\n\n#define TPI_ITFTTD1_ATB_IF2_data0_Pos       0U                                          /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\n#define TPI_ITFTTD1_ATB_IF2_data0_Msk      (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\n\n/* TPI Integration Test ATB Control Register 0 Definitions */\n#define TPI_ITATBCTR0_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID2S Position */\n#define TPI_ITATBCTR0_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos)      /*!< TPI ITATBCTR0: AFVALID2SS Mask */\n\n#define TPI_ITATBCTR0_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID1S Position */\n#define TPI_ITATBCTR0_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos)      /*!< TPI ITATBCTR0: AFVALID1SS Mask */\n\n#define TPI_ITATBCTR0_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY2S Position */\n#define TPI_ITATBCTR0_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY2S Mask */\n\n#define TPI_ITATBCTR0_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY1S Position */\n#define TPI_ITATBCTR0_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY1S Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFOSZ Position */\n#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFOSZ Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */\n  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */\n  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */\n  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */\n        uint32_t RESERVED0[1];\n  union {\n  __IOM uint32_t MAIR[2];\n  struct {\n  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */\n  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */\n  };\n  };\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */\n#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */\n\n#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */\n#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */\n\n#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */\n#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */\n\n#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */\n#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */\n\n/* MPU Region Limit Address Register Definitions */\n#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */\n#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */\n\n#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */\n#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */\n\n#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */\n#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */\n\n/* MPU Memory Attribute Indirection Register 0 Definitions */\n#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */\n#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */\n\n#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */\n#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */\n\n#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */\n#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */\n\n#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */\n#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */\n\n/* MPU Memory Attribute Indirection Register 1 Definitions */\n#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */\n#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */\n\n#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */\n#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */\n\n#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */\n#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */\n\n#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */\n#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SAU     Security Attribution Unit (SAU)\n  \\brief    Type definitions for the Security Attribution Unit (SAU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Security Attribution Unit (SAU).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */\n  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */\n#else\n        uint32_t RESERVED0[3];\n#endif\n  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */\n  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */\n} SAU_Type;\n\n/* SAU Control Register Definitions */\n#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */\n#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */\n\n#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */\n#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */\n\n/* SAU Type Register Definitions */\n#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */\n#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */\n\n#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\n/* SAU Region Number Register Definitions */\n#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */\n#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */\n\n/* SAU Region Base Address Register Definitions */\n#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */\n#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */\n\n/* SAU Region Limit Address Register Definitions */\n#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */\n#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */\n\n#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */\n#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */\n\n#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */\n#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */\n\n#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\n\n/* Secure Fault Status Register Definitions */\n#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */\n#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */\n\n#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */\n#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */\n\n#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */\n#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */\n\n#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */\n#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */\n\n#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */\n#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */\n\n#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */\n#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */\n\n#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */\n#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */\n\n#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */\n#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */\n\n/*@} end of group CMSIS_SAU */\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */\n#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */\n\n#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */\n#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */\n\n#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */\n#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */\n\n#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */\n#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */\n\n#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */\n#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */\n\n#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */\n#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */\n#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */\n#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n        uint32_t RESERVED4[1U];\n  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */\n  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< CoreDebug DHCSR: S_RESTART_ST Position */\n#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/* Debug Authentication Control Register Definitions */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\n#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\n\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\n\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\n#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\n\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\n#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\n\n/* Debug Security Control and Status Register Definitions */\n#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< CoreDebug DSCSR: CDS Position */\n#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< CoreDebug DSCSR: CDS Mask */\n\n#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< CoreDebug DSCSR: SBRSEL Position */\n#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< CoreDebug DSCSR: SBRSEL Mask */\n\n#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< CoreDebug DSCSR: SBRSELEN Position */\n#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< CoreDebug DSCSR: SBRSELEN Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */\n  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */\n  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */\n  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */\n  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< Core Debug Base Address */\n  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */\n  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */\n  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */\n\n  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */\n  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */\n  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */\n  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */\n  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */\n  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */\n  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */\n  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< Core Debug configuration struct */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */\n    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */\n  #endif\n\n  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */\n    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */\n  #endif\n\n  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */\n  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */\n  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< Core Debug Base Address           (non-secure address space) */\n  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */\n  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */\n  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */\n\n  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */\n  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */\n  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */\n  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */\n  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< Core Debug configuration struct   (non-secure address space) */\n\n  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */\n    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */\n  #endif\n\n  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */\n  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */\n\n/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */ \n#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */\n\n/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\n#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */\n#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */\n#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */\n#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */\n#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */\n#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */\n#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\n\n/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */\n#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */\n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */\n#else \n#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */\n#endif\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Get Interrupt Target State\n  \\details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n  \\return             1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Target State\n  \\details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Clear Interrupt Target State\n  \\details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  if interrupt is assigned to Secure\n                      1  if interrupt is assigned to Non Secure\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\n    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   Set Priority Grouping (non-secure)\n  \\details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB_NS->AIRCR;                                                /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB_NS->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping (non-secure)\n  \\details Reads the priority grouping field from the non-secure NVIC when in secure state.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\n{\n  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt (non-secure)\n  \\details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status (non-secure)\n  \\details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt (non-secure)\n  \\details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt (non-secure)\n  \\details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt (non-secure)\n  \\details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt (non-secure)\n  \\details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt (non-secure)\n  \\details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority (non-secure)\n  \\details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every non-secure processor exception.\n */\n__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority (non-secure)\n  \\details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv8.h\"\n\n#endif\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################   SAU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SAUFunctions SAU Functions\n  \\brief    Functions that configure the SAU.\n  @{\n */\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n\n/**\n  \\brief   Enable SAU\n  \\details Enables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Enable(void)\n{\n    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);\n}\n\n\n\n/**\n  \\brief   Disable SAU\n  \\details Disables the Security Attribution Unit (SAU).\n */\n__STATIC_INLINE void TZ_SAU_Disable(void)\n{\n    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\n}\n\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n/*@} end of CMSIS_Core_SAUFunctions */\n\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n/**\n  \\brief   System Tick Configuration (non-secure)\n  \\details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n\n */\n__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                         /* Reload value impossible */\n  }\n\n  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */\n  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */\n  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                      SysTick_CTRL_TICKINT_Msk   |\n                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                           /* Function successful */\n}\n#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM35P_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm4.h",
    "content": "/**************************************************************************//**\n * @file     core_cm4.h\n * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File\n * @version  V5.1.0\n * @date     13. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM4_H_GENERIC\n#define __CORE_CM4_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M4\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/* CMSIS CM4 definitions */\n#define __CM4_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM4_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM4_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (4U)                                   /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM4_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM4_H_DEPENDANT\n#define __CORE_CM4_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM4_REV\n    #define __CM4_REV               0x0000U\n    #warning \"__CM4_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M4 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag */\n    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[5U];\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISOOFP_Pos            9U                                         /*!< ACTLR: DISOOFP Position */\n#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\n\n#define SCnSCB_ACTLR_DISFPCA_Pos            8U                                         /*!< ACTLR: DISFPCA Position */\n#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\n\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */\n#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x018 (R/ )  Media and FP Feature Register 2 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/* Media and FP Feature Register 2 Definitions */\n\n#define FPU_MVFR2_VFP_Misc_Pos              4U                                            /*!< MVFR2: VFP Misc bits Position */\n#define FPU_MVFR2_VFP_Misc_Msk             (0xFUL << FPU_MVFR2_VFP_Misc_Pos)              /*!< MVFR2: VFP Misc bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n#define FPU_BASE            (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit */\n#define FPU                 ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit */\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n#define EXC_RETURN_HANDLER_FPU     (0xFFFFFFE1UL)     /* return to Handler mode, uses MSP after return, restore floating-point state */\n#define EXC_RETURN_THREAD_MSP_FPU  (0xFFFFFFE9UL)     /* return to Thread mode, uses MSP after return, restore floating-point state  */\n#define EXC_RETURN_THREAD_PSP_FPU  (0xFFFFFFEDUL)     /* return to Thread mode, uses PSP after return, restore floating-point state  */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M4 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = FPU->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM4_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_cm7.h",
    "content": "/**************************************************************************//**\n * @file     core_cm7.h\n * @brief    CMSIS Cortex-M7 Core Peripheral Access Layer Header File\n * @version  V5.1.1\n * @date     28. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_CM7_H_GENERIC\n#define __CORE_CM7_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup Cortex_M7\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/* CMSIS CM7 definitions */\n#define __CM7_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                  /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __CM7_CMSIS_VERSION_SUB   ( __CM_CMSIS_VERSION_SUB)                  /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __CM7_CMSIS_VERSION       ((__CM7_CMSIS_VERSION_MAIN << 16U) | \\\n                                    __CM7_CMSIS_VERSION_SUB           )      /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_M                (7U)                                       /*!< Cortex-M Core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n*/\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\n      #define __FPU_USED       1U\n    #else\n      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n      #define __FPU_USED       0U\n    #endif\n  #else\n    #define __FPU_USED         0U\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM7_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_CM7_H_DEPENDANT\n#define __CORE_CM7_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __CM7_REV\n    #define __CM7_REV               0x0000U\n    #warning \"__CM7_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __FPU_PRESENT\n    #define __FPU_PRESENT             0U\n    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __ICACHE_PRESENT\n    #define __ICACHE_PRESENT          0U\n    #warning \"__ICACHE_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DCACHE_PRESENT\n    #define __DCACHE_PRESENT          0U\n    #warning \"__DCACHE_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __DTCM_PRESENT\n    #define __DTCM_PRESENT            0U\n    #warning \"__DTCM_PRESENT        not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group Cortex_M7 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n  - Core FPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */\n#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */\n    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */\n#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag */\n    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */\n#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */\n\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t ID_MFR[4U];             /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ID_ISAR[5U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */\n  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */\n  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */\n  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n        uint32_t RESERVED3[93U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */\n        uint32_t RESERVED4[15U];\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */\n        uint32_t RESERVED5[1U];\n  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */\n        uint32_t RESERVED6[1U];\n  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */\n  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */\n  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */\n  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */\n  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */\n  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */\n  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */\n  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */\n        uint32_t RESERVED7[6U];\n  __IOM uint32_t ITCMCR;                 /*!< Offset: 0x290 (R/W)  Instruction Tightly-Coupled Memory Control Register */\n  __IOM uint32_t DTCMCR;                 /*!< Offset: 0x294 (R/W)  Data Tightly-Coupled Memory Control Registers */\n  __IOM uint32_t AHBPCR;                 /*!< Offset: 0x298 (R/W)  AHBP Control Register */\n  __IOM uint32_t CACR;                   /*!< Offset: 0x29C (R/W)  L1 Cache Control Register */\n  __IOM uint32_t AHBSCR;                 /*!< Offset: 0x2A0 (R/W)  AHB Slave Control Register */\n        uint32_t RESERVED8[1U];\n  __IOM uint32_t ABFSR;                  /*!< Offset: 0x2A8 (R/W)  Auxiliary Bus Fault Status Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_BP_Pos                      18U                                           /*!< SCB CCR: Branch prediction enable bit Position */\n#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: Branch prediction enable bit Mask */\n\n#define SCB_CCR_IC_Pos                      17U                                           /*!< SCB CCR: Instruction cache enable bit Position */\n#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: Instruction cache enable bit Mask */\n\n#define SCB_CCR_DC_Pos                      16U                                           /*!< SCB CCR: Cache enable bit Position */\n#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: Cache enable bit Mask */\n\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MLSPERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 5U)               /*!< SCB CFSR (MMFSR): MLSPERR Position */\n#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */\n#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/* SCB Cache Level ID Register Definitions */\n#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */\n#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */\n\n#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */\n#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */\n\n/* SCB Cache Type Register Definitions */\n#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */\n#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */\n\n#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */\n#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */\n\n#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */\n#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */\n\n#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */\n#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */\n\n#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */\n#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */\n\n/* SCB Cache Size ID Register Definitions */\n#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */\n#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */\n\n#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */\n#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */\n\n#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */\n#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */\n\n#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */\n#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */\n\n#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */\n#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */\n\n#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */\n#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */\n\n#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */\n#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */\n\n/* SCB Cache Size Selection Register Definitions */\n#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */\n#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */\n\n#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */\n#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */\n\n/* SCB Software Triggered Interrupt Register Definitions */\n#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */\n#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */\n\n/* SCB D-Cache Invalidate by Set-way Register Definitions */\n#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */\n#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */\n\n#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */\n#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */\n\n/* SCB D-Cache Clean by Set-way Register Definitions */\n#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */\n#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */\n\n#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */\n#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */\n\n/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\n#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */\n#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */\n\n#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */\n#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */\n\n/* Instruction Tightly-Coupled Memory Control Register Definitions */\n#define SCB_ITCMCR_SZ_Pos                   3U                                            /*!< SCB ITCMCR: SZ Position */\n#define SCB_ITCMCR_SZ_Msk                  (0xFUL << SCB_ITCMCR_SZ_Pos)                   /*!< SCB ITCMCR: SZ Mask */\n\n#define SCB_ITCMCR_RETEN_Pos                2U                                            /*!< SCB ITCMCR: RETEN Position */\n#define SCB_ITCMCR_RETEN_Msk               (1UL << SCB_ITCMCR_RETEN_Pos)                  /*!< SCB ITCMCR: RETEN Mask */\n\n#define SCB_ITCMCR_RMW_Pos                  1U                                            /*!< SCB ITCMCR: RMW Position */\n#define SCB_ITCMCR_RMW_Msk                 (1UL << SCB_ITCMCR_RMW_Pos)                    /*!< SCB ITCMCR: RMW Mask */\n\n#define SCB_ITCMCR_EN_Pos                   0U                                            /*!< SCB ITCMCR: EN Position */\n#define SCB_ITCMCR_EN_Msk                  (1UL /*<< SCB_ITCMCR_EN_Pos*/)                 /*!< SCB ITCMCR: EN Mask */\n\n/* Data Tightly-Coupled Memory Control Register Definitions */\n#define SCB_DTCMCR_SZ_Pos                   3U                                            /*!< SCB DTCMCR: SZ Position */\n#define SCB_DTCMCR_SZ_Msk                  (0xFUL << SCB_DTCMCR_SZ_Pos)                   /*!< SCB DTCMCR: SZ Mask */\n\n#define SCB_DTCMCR_RETEN_Pos                2U                                            /*!< SCB DTCMCR: RETEN Position */\n#define SCB_DTCMCR_RETEN_Msk               (1UL << SCB_DTCMCR_RETEN_Pos)                   /*!< SCB DTCMCR: RETEN Mask */\n\n#define SCB_DTCMCR_RMW_Pos                  1U                                            /*!< SCB DTCMCR: RMW Position */\n#define SCB_DTCMCR_RMW_Msk                 (1UL << SCB_DTCMCR_RMW_Pos)                    /*!< SCB DTCMCR: RMW Mask */\n\n#define SCB_DTCMCR_EN_Pos                   0U                                            /*!< SCB DTCMCR: EN Position */\n#define SCB_DTCMCR_EN_Msk                  (1UL /*<< SCB_DTCMCR_EN_Pos*/)                 /*!< SCB DTCMCR: EN Mask */\n\n/* AHBP Control Register Definitions */\n#define SCB_AHBPCR_SZ_Pos                   1U                                            /*!< SCB AHBPCR: SZ Position */\n#define SCB_AHBPCR_SZ_Msk                  (7UL << SCB_AHBPCR_SZ_Pos)                     /*!< SCB AHBPCR: SZ Mask */\n\n#define SCB_AHBPCR_EN_Pos                   0U                                            /*!< SCB AHBPCR: EN Position */\n#define SCB_AHBPCR_EN_Msk                  (1UL /*<< SCB_AHBPCR_EN_Pos*/)                 /*!< SCB AHBPCR: EN Mask */\n\n/* L1 Cache Control Register Definitions */\n#define SCB_CACR_FORCEWT_Pos                2U                                            /*!< SCB CACR: FORCEWT Position */\n#define SCB_CACR_FORCEWT_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: FORCEWT Mask */\n\n#define SCB_CACR_ECCEN_Pos                  1U                                            /*!< SCB CACR: ECCEN Position */\n#define SCB_CACR_ECCEN_Msk                 (1UL << SCB_CACR_ECCEN_Pos)                    /*!< SCB CACR: ECCEN Mask */\n\n#define SCB_CACR_SIWT_Pos                   0U                                            /*!< SCB CACR: SIWT Position */\n#define SCB_CACR_SIWT_Msk                  (1UL /*<< SCB_CACR_SIWT_Pos*/)                 /*!< SCB CACR: SIWT Mask */\n\n/* AHBS Control Register Definitions */\n#define SCB_AHBSCR_INITCOUNT_Pos           11U                                            /*!< SCB AHBSCR: INITCOUNT Position */\n#define SCB_AHBSCR_INITCOUNT_Msk           (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos)           /*!< SCB AHBSCR: INITCOUNT Mask */\n\n#define SCB_AHBSCR_TPRI_Pos                 2U                                            /*!< SCB AHBSCR: TPRI Position */\n#define SCB_AHBSCR_TPRI_Msk                (0x1FFUL << SCB_AHBPCR_TPRI_Pos)               /*!< SCB AHBSCR: TPRI Mask */\n\n#define SCB_AHBSCR_CTL_Pos                  0U                                            /*!< SCB AHBSCR: CTL Position*/\n#define SCB_AHBSCR_CTL_Msk                 (3UL /*<< SCB_AHBPCR_CTL_Pos*/)                /*!< SCB AHBSCR: CTL Mask */\n\n/* Auxiliary Bus Fault Status Register Definitions */\n#define SCB_ABFSR_AXIMTYPE_Pos              8U                                            /*!< SCB ABFSR: AXIMTYPE Position*/\n#define SCB_ABFSR_AXIMTYPE_Msk             (3UL << SCB_ABFSR_AXIMTYPE_Pos)                /*!< SCB ABFSR: AXIMTYPE Mask */\n\n#define SCB_ABFSR_EPPB_Pos                  4U                                            /*!< SCB ABFSR: EPPB Position*/\n#define SCB_ABFSR_EPPB_Msk                 (1UL << SCB_ABFSR_EPPB_Pos)                    /*!< SCB ABFSR: EPPB Mask */\n\n#define SCB_ABFSR_AXIM_Pos                  3U                                            /*!< SCB ABFSR: AXIM Position*/\n#define SCB_ABFSR_AXIM_Msk                 (1UL << SCB_ABFSR_AXIM_Pos)                    /*!< SCB ABFSR: AXIM Mask */\n\n#define SCB_ABFSR_AHBP_Pos                  2U                                            /*!< SCB ABFSR: AHBP Position*/\n#define SCB_ABFSR_AHBP_Msk                 (1UL << SCB_ABFSR_AHBP_Pos)                    /*!< SCB ABFSR: AHBP Mask */\n\n#define SCB_ABFSR_DTCM_Pos                  1U                                            /*!< SCB ABFSR: DTCM Position*/\n#define SCB_ABFSR_DTCM_Msk                 (1UL << SCB_ABFSR_DTCM_Pos)                    /*!< SCB ABFSR: DTCM Mask */\n\n#define SCB_ABFSR_ITCM_Pos                  0U                                            /*!< SCB ABFSR: ITCM Position*/\n#define SCB_ABFSR_ITCM_Msk                 (1UL /*<< SCB_ABFSR_ITCM_Pos*/)                /*!< SCB ABFSR: ITCM Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISDYNADD_Pos         26U                                         /*!< ACTLR: DISDYNADD Position */\n#define SCnSCB_ACTLR_DISDYNADD_Msk         (1UL << SCnSCB_ACTLR_DISDYNADD_Pos)         /*!< ACTLR: DISDYNADD Mask */\n\n#define SCnSCB_ACTLR_DISISSCH1_Pos         21U                                         /*!< ACTLR: DISISSCH1 Position */\n#define SCnSCB_ACTLR_DISISSCH1_Msk         (0x1FUL << SCnSCB_ACTLR_DISISSCH1_Pos)      /*!< ACTLR: DISISSCH1 Mask */\n\n#define SCnSCB_ACTLR_DISDI_Pos             16U                                         /*!< ACTLR: DISDI Position */\n#define SCnSCB_ACTLR_DISDI_Msk             (0x1FUL << SCnSCB_ACTLR_DISDI_Pos)          /*!< ACTLR: DISDI Mask */\n\n#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos     15U                                         /*!< ACTLR: DISCRITAXIRUR Position */\n#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk     (1UL << SCnSCB_ACTLR_DISCRITAXIRUR_Pos)     /*!< ACTLR: DISCRITAXIRUR Mask */\n\n#define SCnSCB_ACTLR_DISBTACALLOC_Pos      14U                                         /*!< ACTLR: DISBTACALLOC Position */\n#define SCnSCB_ACTLR_DISBTACALLOC_Msk      (1UL << SCnSCB_ACTLR_DISBTACALLOC_Pos)      /*!< ACTLR: DISBTACALLOC Mask */\n\n#define SCnSCB_ACTLR_DISBTACREAD_Pos       13U                                         /*!< ACTLR: DISBTACREAD Position */\n#define SCnSCB_ACTLR_DISBTACREAD_Msk       (1UL << SCnSCB_ACTLR_DISBTACREAD_Pos)       /*!< ACTLR: DISBTACREAD Mask */\n\n#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos    12U                                         /*!< ACTLR: DISITMATBFLUSH Position */\n#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk    (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos)    /*!< ACTLR: DISITMATBFLUSH Mask */\n\n#define SCnSCB_ACTLR_DISRAMODE_Pos         11U                                         /*!< ACTLR: DISRAMODE Position */\n#define SCnSCB_ACTLR_DISRAMODE_Msk         (1UL << SCnSCB_ACTLR_DISRAMODE_Pos)         /*!< ACTLR: DISRAMODE Mask */\n\n#define SCnSCB_ACTLR_FPEXCODIS_Pos         10U                                         /*!< ACTLR: FPEXCODIS Position */\n#define SCnSCB_ACTLR_FPEXCODIS_Msk         (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos)         /*!< ACTLR: FPEXCODIS Mask */\n\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n        uint32_t RESERVED3[981U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 (  W)  Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n#define MPU_TYPE_RALIASES                  4U\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n  \\brief    Type definitions for the Floating Point Unit (FPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Floating Point Unit (FPU).\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */\n  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */\n  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */\n  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */\n  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */\n  __IM  uint32_t MVFR2;                  /*!< Offset: 0x018 (R/ )  Media and FP Feature Register 2 */\n} FPU_Type;\n\n/* Floating-Point Context Control Register Definitions */\n#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */\n#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n\n#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */\n#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n\n#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */\n#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n\n#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */\n#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n\n#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */\n#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n\n#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */\n#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n\n#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */\n#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n\n#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */\n#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n\n#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */\n#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */\n\n/* Floating-Point Context Address Register Definitions */\n#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */\n#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n\n/* Floating-Point Default Status Control Register Definitions */\n#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */\n#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n\n#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */\n#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n\n#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */\n#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n\n#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */\n#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n\n/* Media and FP Feature Register 0 Definitions */\n#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */\n#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n\n#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */\n#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n\n#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */\n#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n\n#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */\n#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n\n#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */\n#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n\n#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */\n#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n\n#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */\n#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n\n#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */\n#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */\n\n/* Media and FP Feature Register 1 Definitions */\n#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */\n#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n\n#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */\n#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n\n#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */\n#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n\n#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */\n#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */\n\n/* Media and FP Feature Register 2 Definitions */\n\n#define FPU_MVFR2_VFP_Misc_Pos              4U                                            /*!< MVFR2: VFP Misc bits Position */\n#define FPU_MVFR2_VFP_Misc_Msk             (0xFUL << FPU_MVFR2_VFP_Misc_Pos)              /*!< MVFR2: VFP Misc bits Mask */\n\n/*@} end of group CMSIS_FPU */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n#define FPU_BASE            (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit */\n#define FPU                 ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit */\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n#define EXC_RETURN_HANDLER_FPU     (0xFFFFFFE1UL)     /* return to Handler mode, uses MSP after return, restore floating-point state */\n#define EXC_RETURN_THREAD_MSP_FPU  (0xFFFFFFE9UL)     /* return to Thread mode, uses MSP after return, restore floating-point state  */\n#define EXC_RETURN_THREAD_PSP_FPU  (0xFFFFFFEDUL)     /* return to Thread mode, uses PSP after return, restore floating-point state  */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]                = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]                >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  __DSB();\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  MPU functions  #################################### */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n\n#include \"mpu_armv7.h\"\n\n#endif\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n  uint32_t mvfr0;\n\n  mvfr0 = SCB->MVFR0;\n  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\n  {\n    return 2U;           /* Double + Single precision FPU */\n  }\n  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\n  {\n    return 1U;           /* Single precision FPU */\n  }\n  else\n  {\n    return 0U;           /* No FPU */\n  }\n}\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##########################  Cache functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_CacheFunctions Cache Functions\n  \\brief    Functions that configure Instruction and Data cache.\n  @{\n */\n\n/* Cache Size ID Register Macros */\n#define CCSIDR_WAYS(x)         (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos)\n#define CCSIDR_SETS(x)         (((x) & SCB_CCSIDR_NUMSETS_Msk      ) >> SCB_CCSIDR_NUMSETS_Pos      )\n\n#define __SCB_DCACHE_LINE_SIZE  32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */\n#define __SCB_ICACHE_LINE_SIZE  32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */\n\n/**\n  \\brief   Enable I-Cache\n  \\details Turns on I-Cache\n  */\n__STATIC_FORCEINLINE void SCB_EnableICache (void)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    if (SCB->CCR & SCB_CCR_IC_Msk) return;  /* return if ICache is already enabled */\n\n    __DSB();\n    __ISB();\n    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */\n    __DSB();\n    __ISB();\n    SCB->CCR |=  (uint32_t)SCB_CCR_IC_Msk;  /* enable I-Cache */\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Disable I-Cache\n  \\details Turns off I-Cache\n  */\n__STATIC_FORCEINLINE void SCB_DisableICache (void)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    __DSB();\n    __ISB();\n    SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk;  /* disable I-Cache */\n    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Invalidate I-Cache\n  \\details Invalidates I-Cache\n  */\n__STATIC_FORCEINLINE void SCB_InvalidateICache (void)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    __DSB();\n    __ISB();\n    SCB->ICIALLU = 0UL;\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   I-Cache Invalidate by address\n  \\details Invalidates I-Cache for the given address.\n           I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity.\n           I-Cache memory blocks which are part of given address + given size are invalidated.\n  \\param[in]   addr    address\n  \\param[in]   isize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int32_t isize)\n{\n  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\n    if ( isize > 0 ) {\n       int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */;\n\n      __DSB();\n\n      do {\n        SCB->ICIMVAU = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr += __SCB_ICACHE_LINE_SIZE;\n        op_size -= __SCB_ICACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n\n/**\n  \\brief   Enable D-Cache\n  \\details Turns on D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_EnableDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    if (SCB->CCR & SCB_CCR_DC_Msk) return;  /* return if DCache is already enabled */\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |\n                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n    __DSB();\n\n    SCB->CCR |=  (uint32_t)SCB_CCR_DC_Msk;  /* enable D-Cache */\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Disable D-Cache\n  \\details Turns off D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_DisableDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk;  /* disable D-Cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* clean & invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |\n                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Invalidate D-Cache\n  \\details Invalidates D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_InvalidateDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |\n                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Clean D-Cache\n  \\details Cleans D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_CleanDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* clean D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) |\n                      ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   Clean & Invalidate D-Cache\n  \\details Cleans and Invalidates D-Cache\n  */\n__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    uint32_t ccsidr;\n    uint32_t sets;\n    uint32_t ways;\n\n    SCB->CSSELR = 0U;                       /* select Level 1 data cache */\n    __DSB();\n\n    ccsidr = SCB->CCSIDR;\n\n                                            /* clean & invalidate D-Cache */\n    sets = (uint32_t)(CCSIDR_SETS(ccsidr));\n    do {\n      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\n      do {\n        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |\n                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );\n        #if defined ( __CC_ARM )\n          __schedule_barrier();\n        #endif\n      } while (ways-- != 0U);\n    } while(sets-- != 0U);\n\n    __DSB();\n    __ISB();\n  #endif\n}\n\n\n/**\n  \\brief   D-Cache Invalidate by address\n  \\details Invalidates D-Cache for the given address.\n           D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity.\n           D-Cache memory blocks which are part of given address + given size are invalidated.\n  \\param[in]   addr    address\n  \\param[in]   dsize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    if ( dsize > 0 ) { \n       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;\n    \n      __DSB();\n\n      do {\n        SCB->DCIMVAC = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr += __SCB_DCACHE_LINE_SIZE;\n        op_size -= __SCB_DCACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n\n/**\n  \\brief   D-Cache Clean by address\n  \\details Cleans D-Cache for the given address\n           D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity.\n           D-Cache memory blocks which are part of given address + given size are cleaned.\n  \\param[in]   addr    address\n  \\param[in]   dsize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    if ( dsize > 0 ) { \n       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;\n    \n      __DSB();\n\n      do {\n        SCB->DCCMVAC = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr += __SCB_DCACHE_LINE_SIZE;\n        op_size -= __SCB_DCACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n\n/**\n  \\brief   D-Cache Clean and Invalidate by address\n  \\details Cleans and invalidates D_Cache for the given address\n           D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity.\n           D-Cache memory blocks which are part of given address + given size are cleaned and invalidated.\n  \\param[in]   addr    address (aligned to 32-byte boundary)\n  \\param[in]   dsize   size of memory block (in number of bytes)\n*/\n__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)\n{\n  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\n    if ( dsize > 0 ) { \n       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));\n      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;\n    \n      __DSB();\n\n      do {\n        SCB->DCCIMVAC = op_addr;            /* register accepts only 32byte aligned values, only bits 31..5 are valid */\n        op_addr +=          __SCB_DCACHE_LINE_SIZE;\n        op_size -=          __SCB_DCACHE_LINE_SIZE;\n      } while ( op_size > 0 );\n\n      __DSB();\n      __ISB();\n    }\n  #endif\n}\n\n/*@} end of CMSIS_Core_CacheFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_CM7_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_sc000.h",
    "content": "/**************************************************************************//**\n * @file     core_sc000.h\n * @brief    CMSIS SC000 Core Peripheral Access Layer Header File\n * @version  V5.0.6\n * @date     12. November 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_SC000_H_GENERIC\n#define __CORE_SC000_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup SC000\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS SC000 definitions */\n#define __SC000_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __SC000_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                 /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __SC000_CMSIS_VERSION       ((__SC000_CMSIS_VERSION_MAIN << 16U) | \\\n                                      __SC000_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_SC                 (000U)                                   /*!< Cortex secure core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC000_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_SC000_H_DEPENDANT\n#define __CORE_SC000_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __SC000_REV\n    #define __SC000_REV             0x0000U\n    #warning \"__SC000_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          2U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group SC000 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */\n    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[31U];\n  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RSERVED1[31U];\n  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[31U];\n  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[31U];\n        uint32_t RESERVED4[64U];\n  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */\n}  NVIC_Type;\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n        uint32_t RESERVED1[154U];\n  __IOM uint32_t SFCR;                   /*!< Offset: 0x290 (R/W)  Security Features Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n} MPU_Type;\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   8U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << MPU_RBAR_ADDR_Pos)              /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\n            Therefore they are not covered by the SC000 header file.\n  @{\n */\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n/*#define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping   not available for SC000 */\n/*#define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping   not available for SC000 */\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n/*#define NVIC_GetActive              __NVIC_GetActive             not available for SC000 */\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/* Interrupt Priorities are WORD accessible only under Armv6-M                  */\n/* The following MACROS handle generation of the register offset and byte masks */\n#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)\n#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )\n#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n  else\n  {\n    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\n       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\n  /* ARM Application Note 321 states that the M0 and M0+ do not require the architectural barrier - assume SC000 is the same */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t *vectors = (uint32_t *)SCB->VTOR;\n  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                 SCB_AIRCR_SYSRESETREQ_Msk);\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC000_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/core_sc300.h",
    "content": "/**************************************************************************//**\n * @file     core_sc300.h\n * @brief    CMSIS SC300 Core Peripheral Access Layer Header File\n * @version  V5.0.8\n * @date     31. May 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef __CORE_SC300_H_GENERIC\n#define __CORE_SC300_H_GENERIC\n\n#include <stdint.h>\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/**\n  \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n  CMSIS violates the following MISRA-C:2004 rules:\n\n   \\li Required Rule 8.5, object/function definition in header file.<br>\n     Function definitions in header files are used to allow 'inlining'.\n\n   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n     Unions are used for effective representation of core registers.\n\n   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n     Function-like macros are used to allow more efficient code.\n */\n\n\n/*******************************************************************************\n *                 CMSIS definitions\n ******************************************************************************/\n/**\n  \\ingroup SC3000\n  @{\n */\n\n#include \"cmsis_version.h\"\n\n/*  CMSIS SC300 definitions */\n#define __SC300_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)                /*!< \\deprecated [31:16] CMSIS HAL main version */\n#define __SC300_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)                 /*!< \\deprecated [15:0]  CMSIS HAL sub version */\n#define __SC300_CMSIS_VERSION       ((__SC300_CMSIS_VERSION_MAIN << 16U) | \\\n                                      __SC300_CMSIS_VERSION_SUB           )  /*!< \\deprecated CMSIS HAL version number */\n\n#define __CORTEX_SC                 (300U)                                   /*!< Cortex secure core */\n\n/** __FPU_USED indicates whether an FPU is used or not.\n    This core does not support an FPU at all\n*/\n#define __FPU_USED       0U\n\n#if defined ( __CC_ARM )\n  #if defined __TARGET_FPU_VFP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n  #if defined __ARM_FP\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __GNUC__ )\n  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __ICCARM__ )\n  #if defined __ARMVFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TI_ARM__ )\n  #if defined __TI_VFP_SUPPORT__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __TASKING__ )\n  #if defined __FPU_VFP__\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#elif defined ( __CSMC__ )\n  #if ( __CSMC__ & 0x400U)\n    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n  #endif\n\n#endif\n\n#include \"cmsis_compiler.h\"               /* CMSIS compiler specific defines */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC300_H_GENERIC */\n\n#ifndef __CMSIS_GENERIC\n\n#ifndef __CORE_SC300_H_DEPENDANT\n#define __CORE_SC300_H_DEPENDANT\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* check device defines and use defaults */\n#if defined __CHECK_DEVICE_DEFINES\n  #ifndef __SC300_REV\n    #define __SC300_REV               0x0000U\n    #warning \"__SC300_REV not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __MPU_PRESENT\n    #define __MPU_PRESENT             0U\n    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __NVIC_PRIO_BITS\n    #define __NVIC_PRIO_BITS          3U\n    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n  #endif\n\n  #ifndef __Vendor_SysTickConfig\n    #define __Vendor_SysTickConfig    0U\n    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n  #endif\n#endif\n\n/* IO definitions (access restrictions to peripheral registers) */\n/**\n    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n\n    <strong>IO Type Qualifiers</strong> are used\n    \\li to specify the access to peripheral variables.\n    \\li for automatic generation of peripheral register debug information.\n*/\n#ifdef __cplusplus\n  #define   __I     volatile             /*!< Defines 'read only' permissions */\n#else\n  #define   __I     volatile const       /*!< Defines 'read only' permissions */\n#endif\n#define     __O     volatile             /*!< Defines 'write only' permissions */\n#define     __IO    volatile             /*!< Defines 'read / write' permissions */\n\n/* following defines should be used for structure members */\n#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */\n#define     __OM     volatile            /*! Defines 'write only' structure member permissions */\n#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */\n\n/*@} end of group SC300 */\n\n\n\n/*******************************************************************************\n *                 Register Abstraction\n  Core Register contain:\n  - Core Register\n  - Core NVIC Register\n  - Core SCB Register\n  - Core SysTick Register\n  - Core Debug Register\n  - Core MPU Register\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_core_register Defines and Type Definitions\n  \\brief Type definitions and defines for Cortex-M processor based devices.\n*/\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_CORE  Status and Control Registers\n  \\brief      Core Register type definitions.\n  @{\n */\n\n/**\n  \\brief  Union type to access the Application Program Status Register (APSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} APSR_Type;\n\n/* APSR Register Definitions */\n#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */\n#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */\n\n#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */\n#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */\n\n#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */\n#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */\n\n#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */\n#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */\n\n#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */\n#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */\n\n\n/**\n  \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} IPSR_Type;\n\n/* IPSR Register Definitions */\n#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */\n#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */\n    uint32_t _reserved0:1;               /*!< bit:      9  Reserved */\n    uint32_t ICI_IT_1:6;                 /*!< bit: 10..15  ICI/IT part 1 */\n    uint32_t _reserved1:8;               /*!< bit: 16..23  Reserved */\n    uint32_t T:1;                        /*!< bit:     24  Thumb bit */\n    uint32_t ICI_IT_2:2;                 /*!< bit: 25..26  ICI/IT part 2 */\n    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */\n    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */\n    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */\n    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */\n    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} xPSR_Type;\n\n/* xPSR Register Definitions */\n#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */\n#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */\n\n#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */\n#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */\n\n#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */\n#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */\n\n#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */\n#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */\n\n#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */\n#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */\n\n#define xPSR_ICI_IT_2_Pos                  25U                                            /*!< xPSR: ICI/IT part 2 Position */\n#define xPSR_ICI_IT_2_Msk                  (3UL << xPSR_ICI_IT_2_Pos)                     /*!< xPSR: ICI/IT part 2 Mask */\n\n#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */\n#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */\n\n#define xPSR_ICI_IT_1_Pos                  10U                                            /*!< xPSR: ICI/IT part 1 Position */\n#define xPSR_ICI_IT_1_Msk                  (0x3FUL << xPSR_ICI_IT_1_Pos)                  /*!< xPSR: ICI/IT part 1 Mask */\n\n#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */\n#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */\n\n\n/**\n  \\brief  Union type to access the Control Registers (CONTROL).\n */\ntypedef union\n{\n  struct\n  {\n    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */\n    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */\n  } b;                                   /*!< Structure used for bit  access */\n  uint32_t w;                            /*!< Type      used for word access */\n} CONTROL_Type;\n\n/* CONTROL Register Definitions */\n#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */\n#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */\n\n#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */\n#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */\n\n/*@} end of group CMSIS_CORE */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n  \\brief      Type definitions for the NVIC Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n */\ntypedef struct\n{\n  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */\n        uint32_t RESERVED0[24U];\n  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */\n        uint32_t RESERVED1[24U];\n  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */\n        uint32_t RESERVED2[24U];\n  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */\n        uint32_t RESERVED3[24U];\n  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */\n        uint32_t RESERVED4[56U];\n  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n        uint32_t RESERVED5[644U];\n  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */\n}  NVIC_Type;\n\n/* Software Triggered Interrupt Register Definitions */\n#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */\n#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */\n\n/*@} end of group CMSIS_NVIC */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCB     System Control Block (SCB)\n  \\brief    Type definitions for the System Control Block Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control Block (SCB).\n */\ntypedef struct\n{\n  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */\n  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */\n  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */\n  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */\n  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */\n  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */\n  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */\n  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */\n  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */\n  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */\n  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */\n  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */\n  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */\n  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */\n  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */\n  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */\n  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */\n  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */\n        uint32_t RESERVED0[5U];\n  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */\n        uint32_t RESERVED1[129U];\n  __IOM uint32_t SFCR;                   /*!< Offset: 0x290 (R/W)  Security Features Control Register */\n} SCB_Type;\n\n/* SCB CPUID Register Definitions */\n#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */\n#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n\n#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */\n#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n\n#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */\n#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n\n#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */\n#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n\n#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */\n#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */\n\n/* SCB Interrupt Control State Register Definitions */\n#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */\n#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n\n#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */\n#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n\n#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */\n#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n\n#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */\n#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n\n#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */\n#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n\n#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */\n#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n\n#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */\n#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n\n#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */\n#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n\n#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */\n#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n\n#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */\n#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */\n\n/* SCB Vector Table Offset Register Definitions */\n#define SCB_VTOR_TBLBASE_Pos               29U                                            /*!< SCB VTOR: TBLBASE Position */\n#define SCB_VTOR_TBLBASE_Msk               (1UL << SCB_VTOR_TBLBASE_Pos)                  /*!< SCB VTOR: TBLBASE Mask */\n\n#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */\n#define SCB_VTOR_TBLOFF_Msk                (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */\n\n/* SCB Application Interrupt and Reset Control Register Definitions */\n#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */\n#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n\n#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */\n#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n\n#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */\n#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n\n#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */\n#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n\n#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */\n#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n\n#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */\n#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n\n#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */\n#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */\n\n/* SCB System Control Register Definitions */\n#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */\n#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n\n#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */\n#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n\n#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */\n#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n\n/* SCB Configuration Control Register Definitions */\n#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */\n#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n\n#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */\n#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n\n#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */\n#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n\n#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */\n#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n\n#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */\n#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n\n#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */\n#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */\n\n/* SCB System Handler Control and State Register Definitions */\n#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */\n#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n\n#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */\n#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n\n#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */\n#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n\n#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */\n#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n\n#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */\n#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n\n#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */\n#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n\n#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */\n#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n\n#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */\n#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n\n#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */\n#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n\n#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */\n#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n\n#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */\n#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n\n#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */\n#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n\n#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */\n#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n\n#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */\n#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */\n\n/* SCB Configurable Fault Status Register Definitions */\n#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */\n#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n\n#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */\n#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n\n#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n\n/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_MMARVALID_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 7U)               /*!< SCB CFSR (MMFSR): MMARVALID Position */\n#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */\n\n#define SCB_CFSR_MSTKERR_Pos               (SCB_SHCSR_MEMFAULTACT_Pos + 4U)               /*!< SCB CFSR (MMFSR): MSTKERR Position */\n#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */\n\n#define SCB_CFSR_MUNSTKERR_Pos             (SCB_SHCSR_MEMFAULTACT_Pos + 3U)               /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\n#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\n\n#define SCB_CFSR_DACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 1U)               /*!< SCB CFSR (MMFSR): DACCVIOL Position */\n#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\n\n#define SCB_CFSR_IACCVIOL_Pos              (SCB_SHCSR_MEMFAULTACT_Pos + 0U)               /*!< SCB CFSR (MMFSR): IACCVIOL Position */\n#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\n\n/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */\n#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */\n\n#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */\n#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */\n\n#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */\n#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */\n\n#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */\n#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\n\n#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */\n#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */\n\n#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */\n#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */\n\n/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\n#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */\n#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\n\n#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */\n#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */\n\n#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */\n#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */\n\n#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */\n#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */\n\n#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */\n#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */\n\n#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\n#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\n\n/* SCB Hard Fault Status Register Definitions */\n#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */\n#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n\n#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */\n#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n\n#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */\n#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n\n/* SCB Debug Fault Status Register Definitions */\n#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */\n#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n\n#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */\n#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n\n#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */\n#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n\n#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */\n#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n\n#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */\n#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */\n\n/*@} end of group CMSIS_SCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n  \\brief    Type definitions for the System Control and ID Register not in the SCB\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Control and ID Register not in the SCB.\n */\ntypedef struct\n{\n        uint32_t RESERVED0[1U];\n  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */\n  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */\n} SCnSCB_Type;\n\n/* Interrupt Controller Type Register Definitions */\n#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */\n#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */\n\n/* Auxiliary Control Register Definitions */\n#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */\n#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n\n#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */\n#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n\n#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */\n#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */\n\n/*@} end of group CMSIS_SCnotSCB */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n  \\brief    Type definitions for the System Timer Registers.\n  @{\n */\n\n/**\n  \\brief  Structure type to access the System Timer (SysTick).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */\n  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */\n  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */\n} SysTick_Type;\n\n/* SysTick Control / Status Register Definitions */\n#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */\n#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n\n#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */\n#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n\n#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */\n#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n\n#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */\n#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */\n\n/* SysTick Reload Register Definitions */\n#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */\n#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */\n\n/* SysTick Current Register Definitions */\n#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */\n#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */\n\n/* SysTick Calibration Register Definitions */\n#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */\n#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n\n#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */\n#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n\n#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */\n#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */\n\n/*@} end of group CMSIS_SysTick */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n  \\brief    Type definitions for the Instrumentation Trace Macrocell (ITM)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n */\ntypedef struct\n{\n  __OM  union\n  {\n    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */\n    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */\n    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */\n  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */\n        uint32_t RESERVED0[864U];\n  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */\n        uint32_t RESERVED1[15U];\n  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */\n        uint32_t RESERVED2[15U];\n  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */\n        uint32_t RESERVED3[32U];\n        uint32_t RESERVED4[43U];\n  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */\n  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */\n        uint32_t RESERVED5[6U];\n  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n} ITM_Type;\n\n/* ITM Trace Privilege Register Definitions */\n#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */\n#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */\n\n/* ITM Trace Control Register Definitions */\n#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */\n#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n\n#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */\n#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n\n#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */\n#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n\n#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */\n#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n\n#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */\n#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n\n#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */\n#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n\n#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */\n#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n\n#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */\n#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n\n#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */\n#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */\n\n/* ITM Lock Status Register Definitions */\n#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */\n#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n\n#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */\n#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n\n#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */\n#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */\n\n/*@}*/ /* end of group CMSIS_ITM */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n  \\brief    Type definitions for the Data Watchpoint and Trace (DWT)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n */\ntypedef struct\n{\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */\n  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */\n  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */\n  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */\n  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */\n  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */\n  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */\n  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */\n  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */\n  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */\n  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */\n        uint32_t RESERVED0[1U];\n  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */\n  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */\n  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */\n        uint32_t RESERVED1[1U];\n  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */\n  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */\n  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */\n        uint32_t RESERVED2[1U];\n  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */\n  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */\n  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */\n} DWT_Type;\n\n/* DWT Control Register Definitions */\n#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */\n#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n\n#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */\n#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n\n#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */\n#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n\n#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */\n#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n\n#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */\n#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n\n#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */\n#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n\n#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */\n#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n\n#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */\n#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n\n#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */\n#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n\n#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */\n#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n\n#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */\n#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n\n#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */\n#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n\n#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */\n#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n\n#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */\n#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n\n#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */\n#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n\n#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */\n#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n\n#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */\n#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n\n#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */\n#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */\n\n/* DWT CPI Count Register Definitions */\n#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */\n#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */\n\n/* DWT Exception Overhead Count Register Definitions */\n#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */\n#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */\n\n/* DWT Sleep Count Register Definitions */\n#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */\n#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n\n/* DWT LSU Count Register Definitions */\n#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */\n#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */\n\n/* DWT Folded-instruction Count Register Definitions */\n#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */\n#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */\n\n/* DWT Comparator Mask Register Definitions */\n#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */\n#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */\n\n/* DWT Comparator Function Register Definitions */\n#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */\n#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n\n#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */\n#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n\n#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */\n#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n\n#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */\n#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n\n#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */\n#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n\n#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */\n#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n\n#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */\n#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n\n#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */\n#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n\n#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */\n#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */\n\n/*@}*/ /* end of group CMSIS_DWT */\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n  \\brief    Type definitions for the Trace Port Interface (TPI)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Trace Port Interface Register (TPI).\n */\ntypedef struct\n{\n  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */\n  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n        uint32_t RESERVED0[2U];\n  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n        uint32_t RESERVED1[55U];\n  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n        uint32_t RESERVED2[131U];\n  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n        uint32_t RESERVED3[759U];\n  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */\n  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n        uint32_t RESERVED4[1U];\n  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n        uint32_t RESERVED5[39U];\n  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n        uint32_t RESERVED7[8U];\n  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n} TPI_Type;\n\n/* TPI Asynchronous Clock Prescaler Register Definitions */\n#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */\n#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */\n\n/* TPI Selected Pin Protocol Register Definitions */\n#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */\n#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */\n\n/* TPI Formatter and Flush Status Register Definitions */\n#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */\n#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n\n#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */\n#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n\n#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */\n#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n\n#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */\n#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */\n\n/* TPI Formatter and Flush Control Register Definitions */\n#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */\n#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n\n#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */\n#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n\n/* TPI TRIGGER Register Definitions */\n#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */\n#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */\n\n/* TPI Integration ETM Data Register Definitions (FIFO0) */\n#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */\n#define TPI_FIFO0_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n\n#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */\n#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n\n#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */\n#define TPI_FIFO0_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n\n#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */\n#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n\n#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */\n#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n\n#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */\n#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n\n#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */\n#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */\n\n/* TPI ITATBCTR2 Register Definitions */\n#define TPI_ITATBCTR2_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY2 Position */\n#define TPI_ITATBCTR2_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/)   /*!< TPI ITATBCTR2: ATREADY2 Mask */\n\n#define TPI_ITATBCTR2_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR2: ATREADY1 Position */\n#define TPI_ITATBCTR2_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/)   /*!< TPI ITATBCTR2: ATREADY1 Mask */\n\n/* TPI Integration ITM Data Register Definitions (FIFO1) */\n#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */\n#define TPI_FIFO1_ITM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n\n#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */\n#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n\n#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */\n#define TPI_FIFO1_ETM_ATVALID_Msk          (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n\n#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */\n#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n\n#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */\n#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n\n#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */\n#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n\n#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */\n#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */\n\n/* TPI ITATBCTR0 Register Definitions */\n#define TPI_ITATBCTR0_ATREADY2_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY2 Position */\n#define TPI_ITATBCTR0_ATREADY2_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/)   /*!< TPI ITATBCTR0: ATREADY2 Mask */\n\n#define TPI_ITATBCTR0_ATREADY1_Pos          0U                                         /*!< TPI ITATBCTR0: ATREADY1 Position */\n#define TPI_ITATBCTR0_ATREADY1_Msk         (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/)   /*!< TPI ITATBCTR0: ATREADY1 Mask */\n\n/* TPI Integration Mode Control Register Definitions */\n#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */\n#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */\n\n/* TPI DEVID Register Definitions */\n#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */\n#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n\n#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */\n#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n\n#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */\n#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n\n#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */\n#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n\n#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */\n#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n\n#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */\n#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */\n\n/* TPI DEVTYPE Register Definitions */\n#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */\n#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */\n\n#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */\n#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n\n/*@}*/ /* end of group CMSIS_TPI */\n\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n  \\brief    Type definitions for the Memory Protection Unit (MPU)\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Memory Protection Unit (MPU).\n */\ntypedef struct\n{\n  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */\n  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */\n  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */\n  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */\n  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */\n  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */\n  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */\n  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n} MPU_Type;\n\n/* MPU Type Register Definitions */\n#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */\n#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n\n#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */\n#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n\n#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */\n#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */\n\n/* MPU Control Register Definitions */\n#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */\n#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n\n#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */\n#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n\n#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */\n#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */\n\n/* MPU Region Number Register Definitions */\n#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */\n#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */\n\n/* MPU Region Base Address Register Definitions */\n#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */\n#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n\n#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */\n#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n\n#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */\n#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */\n\n/* MPU Region Attribute and Size Register Definitions */\n#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */\n#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n\n#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */\n#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n\n#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */\n#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n\n#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */\n#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n\n#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */\n#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n\n#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */\n#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n\n#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */\n#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n\n#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */\n#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n\n#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */\n#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n\n#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */\n#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */\n\n/*@} end of group CMSIS_MPU */\n#endif\n\n\n/**\n  \\ingroup  CMSIS_core_register\n  \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n  \\brief    Type definitions for the Core Debug Registers\n  @{\n */\n\n/**\n  \\brief  Structure type to access the Core Debug Register (CoreDebug).\n */\ntypedef struct\n{\n  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */\n  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */\n  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */\n  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n} CoreDebug_Type;\n\n/* Debug Halting Control and Status Register Definitions */\n#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */\n#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n\n#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */\n#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n\n#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n\n#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */\n#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n\n#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */\n#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n\n#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */\n#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n\n#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */\n#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n\n#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n\n#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */\n#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n\n#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */\n#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n\n#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */\n#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n\n#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n\n/* Debug Core Register Selector Register Definitions */\n#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */\n#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n\n#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */\n#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */\n\n/* Debug Exception and Monitor Control Register Definitions */\n#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */\n#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n\n#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */\n#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n\n#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */\n#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n\n#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */\n#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n\n#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */\n#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n\n#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */\n#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n\n#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */\n#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n\n#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */\n#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n\n#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */\n#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n\n#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */\n#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n\n#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n\n#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */\n#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n\n#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */\n#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n\n/*@} end of group CMSIS_CoreDebug */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_bitfield     Core register bit field macros\n  \\brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\n  @{\n */\n\n/**\n  \\brief   Mask and shift a bit field value for use in a register bit range.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted value.\n*/\n#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\n\n/**\n  \\brief     Mask and shift a register value to extract a bit filed value.\n  \\param[in] field  Name of the register bit field.\n  \\param[in] value  Value of register. This parameter is interpreted as an uint32_t type.\n  \\return           Masked and shifted bit field value.\n*/\n#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\n\n/*@} end of group CMSIS_core_bitfield */\n\n\n/**\n  \\ingroup    CMSIS_core_register\n  \\defgroup   CMSIS_core_base     Core Definitions\n  \\brief      Definitions for base addresses, unions, and structures.\n  @{\n */\n\n/* Memory mapping of Core Hardware */\n#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */\n#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */\n#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */\n#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */\n#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */\n#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */\n#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n\n#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */\n#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */\n#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */\n#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */\n#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */\n#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */\n#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */\n\n#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\n  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */\n  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */\n#endif\n\n/*@} */\n\n\n\n/*******************************************************************************\n *                Hardware Abstraction Layer\n  Core Function Interface contains:\n  - Core NVIC Functions\n  - Core SysTick Functions\n  - Core Debug Functions\n  - Core Register Access Functions\n ******************************************************************************/\n/**\n  \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n*/\n\n\n\n/* ##########################   NVIC functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n  \\brief    Functions that manage interrupts and exceptions via the NVIC.\n  @{\n */\n\n#ifdef CMSIS_NVIC_VIRTUAL\n  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\n    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE \"cmsis_nvic_virtual.h\"\n  #endif\n  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping\n  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping\n  #define NVIC_EnableIRQ              __NVIC_EnableIRQ\n  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ\n  #define NVIC_DisableIRQ             __NVIC_DisableIRQ\n  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ\n  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ\n  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ\n  #define NVIC_GetActive              __NVIC_GetActive\n  #define NVIC_SetPriority            __NVIC_SetPriority\n  #define NVIC_GetPriority            __NVIC_GetPriority\n  #define NVIC_SystemReset            __NVIC_SystemReset\n#endif /* CMSIS_NVIC_VIRTUAL */\n\n#ifdef CMSIS_VECTAB_VIRTUAL\n  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE \"cmsis_vectab_virtual.h\"\n  #endif\n  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\n#else\n  #define NVIC_SetVector              __NVIC_SetVector\n  #define NVIC_GetVector              __NVIC_GetVector\n#endif  /* (CMSIS_VECTAB_VIRTUAL) */\n\n#define NVIC_USER_IRQ_OFFSET          16\n\n\n/* The following EXC_RETURN values are saved the LR on exception entry */\n#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */\n#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */\n#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */\n\n\n/**\n  \\brief   Set Priority Grouping\n  \\details Sets the priority grouping field using the required unlock sequence.\n           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n           Only values from 0..7 are used.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]      PriorityGroup  Priority grouping field.\n */\n__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  uint32_t reg_value;\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */\n\n  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */\n  reg_value  =  (reg_value                                   |\n                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\n                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */\n  SCB->AIRCR =  reg_value;\n}\n\n\n/**\n  \\brief   Get Priority Grouping\n  \\details Reads the priority grouping field from the NVIC Interrupt Controller.\n  \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\n{\n  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\n}\n\n\n/**\n  \\brief   Enable Interrupt\n  \\details Enables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    __COMPILER_BARRIER();\n    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __COMPILER_BARRIER();\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Enable status\n  \\details Returns a device specific interrupt enable status from the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt is not enabled.\n  \\return             1  Interrupt is enabled.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Disable Interrupt\n  \\details Disables a device specific interrupt in the NVIC interrupt controller.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n    __DSB();\n    __ISB();\n  }\n}\n\n\n/**\n  \\brief   Get Pending Interrupt\n  \\details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not pending.\n  \\return             1  Interrupt status is pending.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Pending Interrupt\n  \\details Sets the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Clear Pending Interrupt\n  \\details Clears the pending bit of a device specific interrupt in the NVIC pending register.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\n  }\n}\n\n\n/**\n  \\brief   Get Active Interrupt\n  \\details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\n  \\param [in]      IRQn  Device specific interrupt number.\n  \\return             0  Interrupt status is not active.\n  \\return             1  Interrupt status is active.\n  \\note    IRQn must not be negative.\n */\n__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\n  }\n  else\n  {\n    return(0U);\n  }\n}\n\n\n/**\n  \\brief   Set Interrupt Priority\n  \\details Sets the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]      IRQn  Interrupt number.\n  \\param [in]  priority  Priority to set.\n  \\note    The priority cannot be set for every processor exception.\n */\n__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n{\n  if ((int32_t)(IRQn) >= 0)\n  {\n    NVIC->IP[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n  else\n  {\n    SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\n  }\n}\n\n\n/**\n  \\brief   Get Interrupt Priority\n  \\details Reads the priority of a device specific interrupt or a processor exception.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn  Interrupt number.\n  \\return             Interrupt Priority.\n                      Value is aligned automatically to the implemented priority bits of the microcontroller.\n */\n__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\n{\n\n  if ((int32_t)(IRQn) >= 0)\n  {\n    return(((uint32_t)NVIC->IP[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));\n  }\n  else\n  {\n    return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\n  }\n}\n\n\n/**\n  \\brief   Encode Priority\n  \\details Encodes the priority for an interrupt with the given priority group,\n           preemptive priority value, and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n  \\param [in]       SubPriority  Subpriority value (starting from 0).\n  \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n */\n__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  return (\n           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\n           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))\n         );\n}\n\n\n/**\n  \\brief   Decode Priority\n  \\details Decodes an interrupt priority value with a given priority group to\n           preemptive priority value and subpriority value.\n           In case of a conflict between priority grouping and available\n           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\n  \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n  \\param [in]     PriorityGroup  Used priority group.\n  \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n  \\param [out]     pSubPriority  Subpriority value (starting from 0).\n */\n__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\n{\n  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */\n  uint32_t PreemptPriorityBits;\n  uint32_t SubPriorityBits;\n\n  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\n  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\n\n  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\n  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);\n}\n\n\n/**\n  \\brief   Set Interrupt Vector\n  \\details Sets an interrupt vector in SRAM based interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n           VTOR must been relocated to SRAM before.\n  \\param [in]   IRQn      Interrupt number\n  \\param [in]   vector    Address of interrupt handler function\n */\n__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;\n  /* ARM Application Note 321 states that the M3 does not require the architectural barrier */\n}\n\n\n/**\n  \\brief   Get Interrupt Vector\n  \\details Reads an interrupt vector from interrupt vector table.\n           The interrupt number can be positive to specify a device specific interrupt,\n           or negative to specify a processor exception.\n  \\param [in]   IRQn      Interrupt number.\n  \\return                 Address of interrupt handler function\n */\n__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\n{\n  uint32_t vectors = (uint32_t )SCB->VTOR;\n  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4));\n}\n\n\n/**\n  \\brief   System Reset\n  \\details Initiates a system reset request to reset the MCU.\n */\n__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\n{\n  __DSB();                                                          /* Ensure all outstanding memory accesses included\n                                                                       buffered write are completed before reset */\n  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |\n                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */\n  __DSB();                                                          /* Ensure completion of memory access */\n\n  for(;;)                                                           /* wait until reset */\n  {\n    __NOP();\n  }\n}\n\n/*@} end of CMSIS_Core_NVICFunctions */\n\n\n/* ##########################  FPU functions  #################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_FpuFunctions FPU Functions\n  \\brief    Function that provides FPU type.\n  @{\n */\n\n/**\n  \\brief   get FPU type\n  \\details returns the FPU type\n  \\returns\n   - \\b  0: No FPU\n   - \\b  1: Single precision FPU\n   - \\b  2: Double + Single precision FPU\n */\n__STATIC_INLINE uint32_t SCB_GetFPUType(void)\n{\n    return 0U;           /* No FPU */\n}\n\n\n/*@} end of CMSIS_Core_FpuFunctions */\n\n\n\n/* ##################################    SysTick function  ############################################ */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n  \\brief    Functions that configure the System.\n  @{\n */\n\n#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\n\n/**\n  \\brief   System Tick Configuration\n  \\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n           Counter is in free running mode to generate periodic interrupts.\n  \\param [in]  ticks  Number of ticks between two interrupts.\n  \\return          0  Function succeeded.\n  \\return          1  Function failed.\n  \\note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n           must contain a vendor-specific implementation of this function.\n */\n__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n{\n  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\n  {\n    return (1UL);                                                   /* Reload value impossible */\n  }\n\n  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */\n  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\n  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */\n  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n                   SysTick_CTRL_TICKINT_Msk   |\n                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */\n  return (0UL);                                                     /* Function successful */\n}\n\n#endif\n\n/*@} end of CMSIS_Core_SysTickFunctions */\n\n\n\n/* ##################################### Debug In/Output function ########################################### */\n/**\n  \\ingroup  CMSIS_Core_FunctionInterface\n  \\defgroup CMSIS_core_DebugFunctions ITM Functions\n  \\brief    Functions that access the ITM debug interface.\n  @{\n */\n\nextern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */\n#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n\n\n/**\n  \\brief   ITM Send Character\n  \\details Transmits a character via the ITM channel 0, and\n           \\li Just returns when no debugger is connected that has booked the output.\n           \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n  \\param [in]     ch  Character to transmit.\n  \\returns            Character to transmit.\n */\n__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n{\n  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */\n      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */\n  {\n    while (ITM->PORT[0U].u32 == 0UL)\n    {\n      __NOP();\n    }\n    ITM->PORT[0U].u8 = (uint8_t)ch;\n  }\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Receive Character\n  \\details Inputs a character via the external variable \\ref ITM_RxBuffer.\n  \\return             Received character.\n  \\return         -1  No character pending.\n */\n__STATIC_INLINE int32_t ITM_ReceiveChar (void)\n{\n  int32_t ch = -1;                           /* no character available */\n\n  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\n  {\n    ch = ITM_RxBuffer;\n    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n  }\n\n  return (ch);\n}\n\n\n/**\n  \\brief   ITM Check Character\n  \\details Checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n  \\return          0  No character available.\n  \\return          1  Character available.\n */\n__STATIC_INLINE int32_t ITM_CheckChar (void)\n{\n\n  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\n  {\n    return (0);                              /* no character available */\n  }\n  else\n  {\n    return (1);                              /*    character available */\n  }\n}\n\n/*@} end of CMSIS_core_DebugFunctions */\n\n\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __CORE_SC300_H_DEPENDANT */\n\n#endif /* __CMSIS_GENERIC */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/mpu_armv7.h",
    "content": "/******************************************************************************\n * @file     mpu_armv7.h\n * @brief    CMSIS MPU API for Armv7-M MPU\n * @version  V5.1.0\n * @date     08. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n \n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header    /* treat file as system include file */\n#endif\n \n#ifndef ARM_MPU_ARMV7_H\n#define ARM_MPU_ARMV7_H\n\n#define ARM_MPU_REGION_SIZE_32B      ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes\n#define ARM_MPU_REGION_SIZE_64B      ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes\n#define ARM_MPU_REGION_SIZE_128B     ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes\n#define ARM_MPU_REGION_SIZE_256B     ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes\n#define ARM_MPU_REGION_SIZE_512B     ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes\n#define ARM_MPU_REGION_SIZE_1KB      ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte\n#define ARM_MPU_REGION_SIZE_2KB      ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes\n#define ARM_MPU_REGION_SIZE_4KB      ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes\n#define ARM_MPU_REGION_SIZE_8KB      ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes\n#define ARM_MPU_REGION_SIZE_16KB     ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes\n#define ARM_MPU_REGION_SIZE_32KB     ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes\n#define ARM_MPU_REGION_SIZE_64KB     ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes\n#define ARM_MPU_REGION_SIZE_128KB    ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes\n#define ARM_MPU_REGION_SIZE_256KB    ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes\n#define ARM_MPU_REGION_SIZE_512KB    ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes\n#define ARM_MPU_REGION_SIZE_1MB      ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte\n#define ARM_MPU_REGION_SIZE_2MB      ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes\n#define ARM_MPU_REGION_SIZE_4MB      ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes\n#define ARM_MPU_REGION_SIZE_8MB      ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes\n#define ARM_MPU_REGION_SIZE_16MB     ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes\n#define ARM_MPU_REGION_SIZE_32MB     ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes\n#define ARM_MPU_REGION_SIZE_64MB     ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes\n#define ARM_MPU_REGION_SIZE_128MB    ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes\n#define ARM_MPU_REGION_SIZE_256MB    ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes\n#define ARM_MPU_REGION_SIZE_512MB    ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes\n#define ARM_MPU_REGION_SIZE_1GB      ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte\n#define ARM_MPU_REGION_SIZE_2GB      ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes\n#define ARM_MPU_REGION_SIZE_4GB      ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes\n\n#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access\n#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only\n#define ARM_MPU_AP_URO  2U ///!< MPU Access Permission unprivileged access read-only\n#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access\n#define ARM_MPU_AP_PRO  5U ///!< MPU Access Permission privileged access read-only\n#define ARM_MPU_AP_RO   6U ///!< MPU Access Permission read-only access\n\n/** MPU Region Base Address Register Value\n*\n* \\param Region The region to be configured, number 0 to 15.\n* \\param BaseAddress The base address for the region.\n*/\n#define ARM_MPU_RBAR(Region, BaseAddress) \\\n  (((BaseAddress) & MPU_RBAR_ADDR_Msk) |  \\\n   ((Region) & MPU_RBAR_REGION_Msk)    |  \\\n   (MPU_RBAR_VALID_Msk))\n\n/**\n* MPU Memory Access Attributes\n* \n* \\param TypeExtField      Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral.\n* \\param IsShareable       Region is shareable between multiple bus masters.\n* \\param IsCacheable       Region is cacheable, i.e. its value may be kept in cache.\n* \\param IsBufferable      Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy.\n*/  \n#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable)   \\\n  ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk)                  | \\\n   (((IsShareable)  << MPU_RASR_S_Pos)   & MPU_RASR_S_Msk)                    | \\\n   (((IsCacheable)  << MPU_RASR_C_Pos)   & MPU_RASR_C_Msk)                    | \\\n   (((IsBufferable) << MPU_RASR_B_Pos)   & MPU_RASR_B_Msk))\n\n/**\n* MPU Region Attribute and Size Register Value\n* \n* \\param DisableExec       Instruction access disable bit, 1= disable instruction fetches.\n* \\param AccessPermission  Data access permissions, allows you to configure read/write access for User and Privileged mode.\n* \\param AccessAttributes  Memory access attribution, see \\ref ARM_MPU_ACCESS_.\n* \\param SubRegionDisable  Sub-region disable field.\n* \\param Size              Region size of the region to be configured, for example 4K, 8K.\n*/\n#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size)    \\\n  ((((DisableExec)      << MPU_RASR_XN_Pos)   & MPU_RASR_XN_Msk)                                  | \\\n   (((AccessPermission) << MPU_RASR_AP_Pos)   & MPU_RASR_AP_Msk)                                  | \\\n   (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \\\n   (((SubRegionDisable) << MPU_RASR_SRD_Pos)  & MPU_RASR_SRD_Msk)                                 | \\\n   (((Size)             << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk)                                | \\\n   (((MPU_RASR_ENABLE_Msk))))\n\n/**\n* MPU Region Attribute and Size Register Value\n* \n* \\param DisableExec       Instruction access disable bit, 1= disable instruction fetches.\n* \\param AccessPermission  Data access permissions, allows you to configure read/write access for User and Privileged mode.\n* \\param TypeExtField      Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral.\n* \\param IsShareable       Region is shareable between multiple bus masters.\n* \\param IsCacheable       Region is cacheable, i.e. its value may be kept in cache.\n* \\param IsBufferable      Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy.\n* \\param SubRegionDisable  Sub-region disable field.\n* \\param Size              Region size of the region to be configured, for example 4K, 8K.\n*/                         \n#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \\\n  ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size)\n\n/**\n* MPU Memory Access Attribute for strongly ordered memory.\n*  - TEX: 000b\n*  - Shareable\n*  - Non-cacheable\n*  - Non-bufferable\n*/ \n#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U)\n\n/**\n* MPU Memory Access Attribute for device memory.\n*  - TEX: 000b (if shareable) or 010b (if non-shareable)\n*  - Shareable or non-shareable\n*  - Non-cacheable\n*  - Bufferable (if shareable) or non-bufferable (if non-shareable)\n*\n* \\param IsShareable Configures the device memory as shareable or non-shareable.\n*/ \n#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U))\n\n/**\n* MPU Memory Access Attribute for normal memory.\n*  - TEX: 1BBb (reflecting outer cacheability rules)\n*  - Shareable or non-shareable\n*  - Cacheable or non-cacheable (reflecting inner cacheability rules)\n*  - Bufferable or non-bufferable (reflecting inner cacheability rules)\n*\n* \\param OuterCp Configures the outer cache policy.\n* \\param InnerCp Configures the inner cache policy.\n* \\param IsShareable Configures the memory as shareable or non-shareable.\n*/ \n#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U))\n\n/**\n* MPU Memory Access Attribute non-cacheable policy.\n*/\n#define ARM_MPU_CACHEP_NOCACHE 0U\n\n/**\n* MPU Memory Access Attribute write-back, write and read allocate policy.\n*/\n#define ARM_MPU_CACHEP_WB_WRA 1U\n\n/**\n* MPU Memory Access Attribute write-through, no write allocate policy.\n*/\n#define ARM_MPU_CACHEP_WT_NWA 2U\n\n/**\n* MPU Memory Access Attribute write-back, no write allocate policy.\n*/\n#define ARM_MPU_CACHEP_WB_NWA 3U\n\n\n/**\n* Struct for a single MPU Region\n*/\ntypedef struct {\n  uint32_t RBAR; //!< The region base address register value (RBAR)\n  uint32_t RASR; //!< The region attribute and size register value (RASR) \\ref MPU_RASR\n} ARM_MPU_Region_t;\n    \n/** Enable the MPU.\n* \\param MPU_Control Default access permissions for unconfigured regions.\n*/\n__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)\n{\n  MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  __DSB();\n  __ISB();\n}\n\n/** Disable the MPU.\n*/\n__STATIC_INLINE void ARM_MPU_Disable(void)\n{\n  __DMB();\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  MPU->CTRL  &= ~MPU_CTRL_ENABLE_Msk;\n}\n\n/** Clear and disable the given MPU region.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)\n{\n  MPU->RNR = rnr;\n  MPU->RASR = 0U;\n}\n\n/** Configure an MPU region.\n* \\param rbar Value for RBAR register.\n* \\param rsar Value for RSAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr)\n{\n  MPU->RBAR = rbar;\n  MPU->RASR = rasr;\n}\n\n/** Configure the given MPU region.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rsar Value for RSAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr)\n{\n  MPU->RNR = rnr;\n  MPU->RBAR = rbar;\n  MPU->RASR = rasr;\n}\n\n/** Memcopy with strictly ordered memory access, e.g. for register targets.\n* \\param dst Destination data is copied to.\n* \\param src Source data is copied from.\n* \\param len Amount of data words to be copied.\n*/\n__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len)\n{\n  uint32_t i;\n  for (i = 0U; i < len; ++i) \n  {\n    dst[i] = src[i];\n  }\n}\n\n/** Load the given number of MPU regions from a table.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U;\n  while (cnt > MPU_TYPE_RALIASES) {\n    ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize);\n    table += MPU_TYPE_RALIASES;\n    cnt -= MPU_TYPE_RALIASES;\n  }\n  ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize);\n}\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/mpu_armv8.h",
    "content": "/******************************************************************************\n * @file     mpu_armv8.h\n * @brief    CMSIS MPU API for Armv8-M and Armv8.1-M MPU\n * @version  V5.1.0\n * @date     08. March 2019\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2019 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header    /* treat file as system include file */\n#endif\n\n#ifndef ARM_MPU_ARMV8_H\n#define ARM_MPU_ARMV8_H\n\n/** \\brief Attribute for device memory (outer only) */\n#define ARM_MPU_ATTR_DEVICE                           ( 0U )\n\n/** \\brief Attribute for non-cacheable, normal memory */\n#define ARM_MPU_ATTR_NON_CACHEABLE                    ( 4U )\n\n/** \\brief Attribute for normal memory (outer and inner)\n* \\param NT Non-Transient: Set to 1 for non-transient data.\n* \\param WB Write-Back: Set to 1 to use write-back update policy.\n* \\param RA Read Allocation: Set to 1 to use cache allocation on read miss.\n* \\param WA Write Allocation: Set to 1 to use cache allocation on write miss.\n*/\n#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \\\n  (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U))\n\n/** \\brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U)\n\n/** \\brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_nGnRE  (1U)\n\n/** \\brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_nGRE   (2U)\n\n/** \\brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */\n#define ARM_MPU_ATTR_DEVICE_GRE    (3U)\n\n/** \\brief Memory Attribute\n* \\param O Outer memory attributes\n* \\param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes\n*/\n#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U)))\n\n/** \\brief Normal memory non-shareable  */\n#define ARM_MPU_SH_NON   (0U)\n\n/** \\brief Normal memory outer shareable  */\n#define ARM_MPU_SH_OUTER (2U)\n\n/** \\brief Normal memory inner shareable  */\n#define ARM_MPU_SH_INNER (3U)\n\n/** \\brief Memory access permissions\n* \\param RO Read-Only: Set to 1 for read-only memory.\n* \\param NP Non-Privileged: Set to 1 for non-privileged memory.\n*/\n#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U))\n\n/** \\brief Region Base Address Register value\n* \\param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned.\n* \\param SH Defines the Shareability domain for this memory region.\n* \\param RO Read-Only: Set to 1 for a read-only memory region.\n* \\param NP Non-Privileged: Set to 1 for a non-privileged memory region.\n* \\oaram XN eXecute Never: Set to 1 for a non-executable memory region.\n*/\n#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \\\n  ((BASE & MPU_RBAR_BASE_Msk) | \\\n  ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \\\n  ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \\\n  ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk))\n\n/** \\brief Region Limit Address Register value\n* \\param LIMIT The limit address bits [31:5] for this memory region. The value is one extended.\n* \\param IDX The attribute index to be associated with this memory region.\n*/\n#define ARM_MPU_RLAR(LIMIT, IDX) \\\n  ((LIMIT & MPU_RLAR_LIMIT_Msk) | \\\n  ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \\\n  (MPU_RLAR_EN_Msk))\n\n#if defined(MPU_RLAR_PXN_Pos)\n  \n/** \\brief Region Limit Address Register with PXN value\n* \\param LIMIT The limit address bits [31:5] for this memory region. The value is one extended.\n* \\param PXN Privileged execute never. Defines whether code can be executed from this privileged region.\n* \\param IDX The attribute index to be associated with this memory region.\n*/\n#define ARM_MPU_RLAR_PXN(LIMIT, PXN, IDX) \\\n  ((LIMIT & MPU_RLAR_LIMIT_Msk) | \\\n  ((PXN << MPU_RLAR_PXN_Pos) & MPU_RLAR_PXN_Msk) | \\\n  ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \\\n  (MPU_RLAR_EN_Msk))\n  \n#endif\n\n/**\n* Struct for a single MPU Region\n*/\ntypedef struct {\n  uint32_t RBAR;                   /*!< Region Base Address Register value */\n  uint32_t RLAR;                   /*!< Region Limit Address Register value */\n} ARM_MPU_Region_t;\n    \n/** Enable the MPU.\n* \\param MPU_Control Default access permissions for unconfigured regions.\n*/\n__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)\n{\n  MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  __DSB();\n  __ISB();\n}\n\n/** Disable the MPU.\n*/\n__STATIC_INLINE void ARM_MPU_Disable(void)\n{\n  __DMB();\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  MPU->CTRL  &= ~MPU_CTRL_ENABLE_Msk;\n}\n\n#ifdef MPU_NS\n/** Enable the Non-secure MPU.\n* \\param MPU_Control Default access permissions for unconfigured regions.\n*/\n__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control)\n{\n  MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  __DSB();\n  __ISB();\n}\n\n/** Disable the Non-secure MPU.\n*/\n__STATIC_INLINE void ARM_MPU_Disable_NS(void)\n{\n  __DMB();\n#ifdef SCB_SHCSR_MEMFAULTENA_Msk\n  SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\n#endif\n  MPU_NS->CTRL  &= ~MPU_CTRL_ENABLE_Msk;\n}\n#endif\n\n/** Set the memory attribute encoding to the given MPU.\n* \\param mpu Pointer to the MPU to be configured.\n* \\param idx The attribute index to be set [0-7]\n* \\param attr The attribute value to be set.\n*/\n__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr)\n{\n  const uint8_t reg = idx / 4U;\n  const uint32_t pos = ((idx % 4U) * 8U);\n  const uint32_t mask = 0xFFU << pos;\n  \n  if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) {\n    return; // invalid index\n  }\n  \n  mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask));\n}\n\n/** Set the memory attribute encoding.\n* \\param idx The attribute index to be set [0-7]\n* \\param attr The attribute value to be set.\n*/\n__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr)\n{\n  ARM_MPU_SetMemAttrEx(MPU, idx, attr);\n}\n\n#ifdef MPU_NS\n/** Set the memory attribute encoding to the Non-secure MPU.\n* \\param idx The attribute index to be set [0-7]\n* \\param attr The attribute value to be set.\n*/\n__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr)\n{\n  ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr);\n}\n#endif\n\n/** Clear and disable the given MPU region of the given MPU.\n* \\param mpu Pointer to MPU to be used.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr)\n{\n  mpu->RNR = rnr;\n  mpu->RLAR = 0U;\n}\n\n/** Clear and disable the given MPU region.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)\n{\n  ARM_MPU_ClrRegionEx(MPU, rnr);\n}\n\n#ifdef MPU_NS\n/** Clear and disable the given Non-secure MPU region.\n* \\param rnr Region number to be cleared.\n*/\n__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr)\n{  \n  ARM_MPU_ClrRegionEx(MPU_NS, rnr);\n}\n#endif\n\n/** Configure the given MPU region of the given MPU.\n* \\param mpu Pointer to MPU to be used.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rlar Value for RLAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar)\n{\n  mpu->RNR = rnr;\n  mpu->RBAR = rbar;\n  mpu->RLAR = rlar;\n}\n\n/** Configure the given MPU region.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rlar Value for RLAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar)\n{\n  ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar);\n}\n\n#ifdef MPU_NS\n/** Configure the given Non-secure MPU region.\n* \\param rnr Region number to be configured.\n* \\param rbar Value for RBAR register.\n* \\param rlar Value for RLAR register.\n*/   \n__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar)\n{\n  ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar);  \n}\n#endif\n\n/** Memcopy with strictly ordered memory access, e.g. for register targets.\n* \\param dst Destination data is copied to.\n* \\param src Source data is copied from.\n* \\param len Amount of data words to be copied.\n*/\n__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len)\n{\n  uint32_t i;\n  for (i = 0U; i < len; ++i) \n  {\n    dst[i] = src[i];\n  }\n}\n\n/** Load the given number of MPU regions from a table to the given MPU.\n* \\param mpu Pointer to the MPU registers to be used.\n* \\param rnr First region number to be configured.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U;\n  if (cnt == 1U) {\n    mpu->RNR = rnr;\n    ARM_MPU_OrderedMemcpy(&(mpu->RBAR), &(table->RBAR), rowWordSize);\n  } else {\n    uint32_t rnrBase   = rnr & ~(MPU_TYPE_RALIASES-1U);\n    uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES;\n    \n    mpu->RNR = rnrBase;\n    while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) {\n      uint32_t c = MPU_TYPE_RALIASES - rnrOffset;\n      ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize);\n      table += c;\n      cnt -= c;\n      rnrOffset = 0U;\n      rnrBase += MPU_TYPE_RALIASES;\n      mpu->RNR = rnrBase;\n    }\n    \n    ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize);\n  }\n}\n\n/** Load the given number of MPU regions from a table.\n* \\param rnr First region number to be configured.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  ARM_MPU_LoadEx(MPU, rnr, table, cnt);\n}\n\n#ifdef MPU_NS\n/** Load the given number of MPU regions from a table to the Non-secure MPU.\n* \\param rnr First region number to be configured.\n* \\param table Pointer to the MPU configuration table.\n* \\param cnt Amount of regions to be configured.\n*/\n__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \n{\n  ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt);\n}\n#endif\n\n#endif\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/Include/tz_context.h",
    "content": "/******************************************************************************\n * @file     tz_context.h\n * @brief    Context Management for Armv8-M TrustZone\n * @version  V1.0.1\n * @date     10. January 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if   defined ( __ICCARM__ )\n  #pragma system_include         /* treat file as system include file for MISRA check */\n#elif defined (__clang__)\n  #pragma clang system_header   /* treat file as system include file */\n#endif\n\n#ifndef TZ_CONTEXT_H\n#define TZ_CONTEXT_H\n \n#include <stdint.h>\n \n#ifndef TZ_MODULEID_T\n#define TZ_MODULEID_T\n/// \\details Data type that identifies secure software modules called by a process.\ntypedef uint32_t TZ_ModuleId_t;\n#endif\n \n/// \\details TZ Memory ID identifies an allocated memory slot.\ntypedef uint32_t TZ_MemoryId_t;\n  \n/// Initialize secure context memory system\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_InitContextSystem_S (void);\n \n/// Allocate context memory for calling secure software modules in TrustZone\n/// \\param[in]  module   identifies software modules called from non-secure mode\n/// \\return value != 0 id TrustZone memory slot identifier\n/// \\return value 0    no memory available or internal error\nTZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module);\n \n/// Free context memory that was previously allocated with \\ref TZ_AllocModuleContext_S\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id);\n \n/// Load secure context (called on RTOS thread context switch)\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_LoadContext_S (TZ_MemoryId_t id);\n \n/// Store secure context (called on RTOS thread context switch)\n/// \\param[in]  id  TrustZone memory slot identifier\n/// \\return execution status (1: success, 0: error)\nuint32_t TZ_StoreContext_S (TZ_MemoryId_t id);\n \n#endif  // TZ_CONTEXT_H\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/LICENSE.txt",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Compiler/EventRecorderConf.h",
    "content": "/*------------------------------------------------------------------------------\n * MDK - Component ::Event Recorder\n * Copyright (c) 2016 ARM Germany GmbH. All rights reserved.\n *------------------------------------------------------------------------------\n * Name:    EventRecorderConf.h\n * Purpose: Event Recorder Configuration\n * Rev.:    V1.0.0\n *----------------------------------------------------------------------------*/\n\n//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------\n\n// <h>Event Recorder\n\n//   <o>Number of Records\n//     <8=>8 <16=>16 <32=>32 <64=>64 <128=>128 <256=>256 <512=>512 <1024=>1024\n//     <2048=>2048 <4096=>4096 <8192=>8192 <16384=>16384 <32768=>32768\n//     <65536=>65536 <131072=>131072 <262144=>262144 <524288=>524288\n//     <1048576=>1048576\n//   <i>Configure size of Event Record Buffer (each record is 16 bytes)\n//   <i>Must be 2^n (min=8, max=1048576)\n#define EVENT_RECORD_COUNT      64U\n\n//   <o>Time Stamp Source\n//      <0=> DWT Cycle Counter  <1=> SysTick\n//      <3=> User Timer (Normal Reset)  <4=> User Timer (Power-On Reset)\n//   <i>Selects source for 32-bit time stamp\n#define EVENT_TIMESTAMP_SOURCE  1\n\n//   <h>SysTick Configuration\n//   <i>Configure values when Time Stamp Source is set to SysTick\n\n//     <o>SysTick Input Clock Frequency [Hz] <1-1000000000>\n//     <i>Defines SysTick input clock (typical identical with processor clock)\n#define SYSTICK_CLOCK           100000000U\n\n//     <o>SysTick Interrupt Period [us] <1-1000000000>\n//     <i>Defines time period of the SysTick timer interrupt\n#define SYSTICK_PERIOD_US       1000U\n\n//   </h>\n\n// </h>\n\n//------------- <<< end of configuration section >>> ---------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1)\n  SCB->CPACR |= ((3U << 10*2) |           /* set CP10 Full Access */\n                 (3U << 11*2)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM7_SP/startup_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     startup_ARMCM7.s\n * @brief    CMSIS Core Device Startup File for\n *           ARMCM7 Device Series\n * @version  V5.00\n * @date     26. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include <stdint.h>\n\n\n/*----------------------------------------------------------------------------\n  Linker generated Symbols\n *----------------------------------------------------------------------------*/\nextern uint32_t __etext;\nextern uint32_t __data_start__;\nextern uint32_t __data_end__;\nextern uint32_t __copy_table_start__;\nextern uint32_t __copy_table_end__;\nextern uint32_t __zero_table_start__;\nextern uint32_t __zero_table_end__;\nextern uint32_t __bss_start__;\nextern uint32_t __bss_end__;\nextern uint32_t __StackTop;\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Handler Function Prototype\n *----------------------------------------------------------------------------*/\ntypedef void( *pFunc )( void );\n\n\n/*----------------------------------------------------------------------------\n  External References\n *----------------------------------------------------------------------------*/\n#ifndef __START\nextern void  _start(void) __attribute__((noreturn));    /* PreeMain (C library entry point) */\n#else\nextern int  __START(void) __attribute__((noreturn));    /* main entry point */\n#endif\n\n#ifndef __NO_SYSTEM_INIT\nextern void SystemInit (void);            /* CMSIS System Initialization      */\n#endif\n\n\n/*----------------------------------------------------------------------------\n  Internal References\n *----------------------------------------------------------------------------*/\nvoid Default_Handler(void);                          /* Default empty handler */\nvoid Reset_Handler(void);                            /* Reset Handler */\n\n\n/*----------------------------------------------------------------------------\n  User Initial Stack & Heap\n *----------------------------------------------------------------------------*/\n#ifndef __STACK_SIZE\n  #define\t__STACK_SIZE  0x00000400\n#endif\nstatic uint8_t stack[__STACK_SIZE] __attribute__ ((aligned(8), used, section(\".stack\")));\n\n#ifndef __HEAP_SIZE\n  #define\t__HEAP_SIZE   0x00000C00\n#endif\n#if __HEAP_SIZE > 0\nstatic uint8_t heap[__HEAP_SIZE]   __attribute__ ((aligned(8), used, section(\".heap\")));\n#endif\n\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Handler\n *----------------------------------------------------------------------------*/\n/* Cortex-M7 Processor Exceptions */\nvoid NMI_Handler         (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid HardFault_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MemManage_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid BusFault_Handler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UsageFault_Handler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SVC_Handler         (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid DebugMon_Handler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid PendSV_Handler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SysTick_Handler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\n\n/* ARMCM7 Specific Interrupts */\nvoid WDT_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid RTC_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid TIM0_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid TIM2_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MCIA_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MCIB_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART0_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART1_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART2_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART4_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid AACI_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CLCD_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid ENET_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid USBDC_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid USBHC_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CHLCD_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid FLEXRAY_IRQHandler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CAN_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid LIN_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid I2C_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CPU_CLCD_IRQHandler (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART3_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SPI_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\n\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Vector table\n *----------------------------------------------------------------------------*/\nconst pFunc __Vectors[] __attribute__ ((section(\".vectors\"))) = {\n  /* Cortex-M7 Exceptions Handler */\n  (pFunc)((uint32_t)&__StackTop),           /*      Initial Stack Pointer     */\n  Reset_Handler,                            /*      Reset Handler             */\n  NMI_Handler,                              /*      NMI Handler               */\n  HardFault_Handler,                        /*      Hard Fault Handler        */\n  MemManage_Handler,                        /*      MPU Fault Handler         */\n  BusFault_Handler,                         /*      Bus Fault Handler         */\n  UsageFault_Handler,                       /*      Usage Fault Handler       */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  SVC_Handler,                              /*      SVCall Handler            */\n  DebugMon_Handler,                         /*      Debug Monitor Handler     */\n  0,                                        /*      Reserved                  */\n  PendSV_Handler,                           /*      PendSV Handler            */\n  SysTick_Handler,                          /*      SysTick Handler           */\n\n  /* External interrupts */\n  WDT_IRQHandler,                           /*  0:  Watchdog Timer            */\n  RTC_IRQHandler,                           /*  1:  Real Time Clock           */\n  TIM0_IRQHandler,                          /*  2:  Timer0 / Timer1           */\n  TIM2_IRQHandler,                          /*  3:  Timer2 / Timer3           */\n  MCIA_IRQHandler,                          /*  4:  MCIa                      */\n  MCIB_IRQHandler,                          /*  5:  MCIb                      */\n  UART0_IRQHandler,                         /*  6:  UART0 - DUT FPGA          */\n  UART1_IRQHandler,                         /*  7:  UART1 - DUT FPGA          */\n  UART2_IRQHandler,                         /*  8:  UART2 - DUT FPGA          */\n  UART4_IRQHandler,                         /*  9:  UART4 - not connected     */\n  AACI_IRQHandler,                          /* 10: AACI / AC97                */\n  CLCD_IRQHandler,                          /* 11: CLCD Combined Interrupt    */\n  ENET_IRQHandler,                          /* 12: Ethernet                   */\n  USBDC_IRQHandler,                         /* 13: USB Device                 */\n  USBHC_IRQHandler,                         /* 14: USB Host Controller        */\n  CHLCD_IRQHandler,                         /* 15: Character LCD              */\n  FLEXRAY_IRQHandler,                       /* 16: Flexray                    */\n  CAN_IRQHandler,                           /* 17: CAN                        */\n  LIN_IRQHandler,                           /* 18: LIN                        */\n  I2C_IRQHandler,                           /* 19: I2C ADC/DAC                */\n  0,                                        /* 20: Reserved                   */\n  0,                                        /* 21: Reserved                   */\n  0,                                        /* 22: Reserved                   */\n  0,                                        /* 23: Reserved                   */\n  0,                                        /* 24: Reserved                   */\n  0,                                        /* 25: Reserved                   */\n  0,                                        /* 26: Reserved                   */\n  0,                                        /* 27: Reserved                   */\n  CPU_CLCD_IRQHandler,                      /* 28: Reserved - CPU FPGA CLCD   */\n  0,                                        /* 29: Reserved - CPU FPGA        */\n  UART3_IRQHandler,                         /* 30: UART3    - CPU FPGA        */\n  SPI_IRQHandler                            /* 31: SPI Touchscreen - CPU FPGA */\n};\n\n\n/*----------------------------------------------------------------------------\n  Reset Handler called on controller reset\n *----------------------------------------------------------------------------*/\nvoid Reset_Handler(void) {\n  uint32_t *pSrc, *pDest;\n  uint32_t *pTable __attribute__((unused));\n\n/*  Firstly it copies data from read only memory to RAM. There are two schemes\n *  to copy. One can copy more than one sections. Another can only copy\n *  one section.  The former scheme needs more instructions and read-only\n *  data to implement than the latter.\n *  Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes.  */\n\n#ifdef __STARTUP_COPY_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of triplets, each of which specify:\n *    offset 0: LMA of start of a section to copy from\n *    offset 4: VMA of start of a section to copy to\n *    offset 8: size of the section to copy. Must be multiply of 4\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n  pTable = &__copy_table_start__;\n\n  for (; pTable < &__copy_table_end__; pTable = pTable + 3) {\n\t\tpSrc  = (uint32_t*)*(pTable + 0);\n\t\tpDest = (uint32_t*)*(pTable + 1);\n\t\tfor (; pDest < (uint32_t*)(*(pTable + 1) + *(pTable + 2)) ; ) {\n      *pDest++ = *pSrc++;\n\t\t}\n\t}\n#else\n/*  Single section scheme.\n *\n *  The ranges of copy from/to are specified by following symbols\n *    __etext: LMA of start of the section to copy from. Usually end of text\n *    __data_start__: VMA of start of the section to copy to\n *    __data_end__: VMA of end of the section to copy to\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n  pSrc  = &__etext;\n  pDest = &__data_start__;\n\n  for ( ; pDest < &__data_end__ ; ) {\n    *pDest++ = *pSrc++;\n  }\n#endif /*__STARTUP_COPY_MULTIPLE */\n\n/*  This part of work usually is done in C library startup code. Otherwise,\n *  define this macro to enable it in this startup.\n *\n *  There are two schemes too. One can clear multiple BSS sections. Another\n *  can only clear one section. The former is more size expensive than the\n *  latter.\n *\n *  Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.\n *  Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later.\n */\n#ifdef __STARTUP_CLEAR_BSS_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of tuples specifying:\n *    offset 0: Start of a BSS section\n *    offset 4: Size of this BSS section. Must be multiply of 4\n */\n  pTable = &__zero_table_start__;\n\n  for (; pTable < &__zero_table_end__; pTable = pTable + 2) {\n\t\tpDest = (uint32_t*)*(pTable + 0);\n\t\tfor (; pDest < (uint32_t*)(*(pTable + 0) + *(pTable + 1)) ; ) {\n      *pDest++ = 0;\n\t\t}\n\t}\n#elif defined (__STARTUP_CLEAR_BSS)\n/*  Single BSS section scheme.\n *\n *  The BSS section is specified by following symbols\n *    __bss_start__: start of the BSS section.\n *    __bss_end__: end of the BSS section.\n *\n *  Both addresses must be aligned to 4 bytes boundary.\n */\n  pDest = &__bss_start__;\n\n  for ( ; pDest < &__bss_end__ ; ) {\n    *pDest++ = 0UL;\n  }\n#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */\n\n#ifndef __NO_SYSTEM_INIT\n\tSystemInit();\n#endif\n\n#ifndef __START\n#define __START _start\n#endif\n\t__START();\n\n}\n\n\n/*----------------------------------------------------------------------------\n  Default Handler for Exceptions / Interrupts\n *----------------------------------------------------------------------------*/\nvoid Default_Handler(void) {\n\n\twhile(1);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1)\n  SCB->CPACR |= ((3U << 10*2) |           /* set CP10 Full Access */\n                 (3U << 11*2)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM0/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_cifar10' \n * Target:  'ARMCM0' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM0.h\"\n\n#define RTE_Compiler_EventRecorder\n          #define RTE_Compiler_EventRecorder_DAP\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_EVR      /* Compiler I/O: STDOUT EVR */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM3/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_cifar10' \n * Target:  'ARMCM3' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM3.h\"\n\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM4_FP/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_cifar10' \n * Target:  'ARMCM4_FP' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM4_FP.h\"\n\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM7_SP/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_cifar10' \n * Target:  'ARMCM7_SP' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM7_SP.h\"\n\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10.cpp",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2018 Arm Limited. All rights reserved.\n*\n*\n* Project:       CMSIS NN Library\n* Title:         arm_nnexamples_cifar10.cpp\n*\n* Description:   Convolutional Neural Network Example\n*\n* Target Processor: Cortex-M4/Cortex-M7\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of Arm LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup CNNExample Convolutional Neural Network Example\n *\n * \\par Description:\n * \\par\n * Demonstrates a convolutional neural network (CNN) example with the use of convolution,\n * ReLU activation, pooling and fully-connected functions.\n *\n * \\par Model definition:\n * \\par\n * The CNN used in this example is based on CIFAR-10 example from Caffe [1]. \n * The neural network consists\n * of 3 convolution layers interspersed by ReLU activation and max pooling layers, followed by a \n * fully-connected layer at the end. The input to the network is a 32x32 pixel color image, which will \n * be classified into one of the 10 output classes. \n * This example model implementation needs 32.3 KB to store weights, 40 KB for activations and \n * 3.1 KB for storing the \\c im2col data.\n *\n * \\image html CIFAR10_CNN.gif \"Neural Network model definition\"\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c conv1_wt, \\c conv2_wt, \\c conv3_wt are convolution layer weight matrices\n * \\li \\c conv1_bias, \\c conv2_bias, \\c conv3_bias are convolution layer bias arrays\n * \\li \\c ip1_wt, ip1_bias point to fully-connected layer weights and biases\n * \\li \\c input_data points to the input image data\n * \\li \\c output_data points to the classification output\n * \\li \\c col_buffer is a buffer to store the \\c im2col output\n * \\li \\c scratch_buffer is used to store the activation data (intermediate layer outputs)\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_convolve_HWC_q7_RGB()\n * - arm_convolve_HWC_q7_fast()\n * - arm_relu_q7()\n * - arm_maxpool_q7_HWC()\n * - arm_avepool_q7_HWC()\n * - arm_fully_connected_q7_opt()\n * - arm_fully_connected_q7()\n *\n * <b> Refer  </b>\n * \\link arm_nnexamples_cifar10.cpp \\endlink\n *\n * \\par [1] https://github.com/BVLC/caffe\n */\n\n#include <stdint.h>\n#include <stdio.h>\n#include \"arm_math.h\"\n#include \"arm_nnexamples_cifar10_parameter.h\"\n#include \"arm_nnexamples_cifar10_weights.h\"\n\n#include \"arm_nnfunctions.h\"\n#include \"arm_nnexamples_cifar10_inputs.h\"\n\n#ifdef _RTE_\n#include \"RTE_Components.h\"\n#ifdef RTE_Compiler_EventRecorder\n#include \"EventRecorder.h\"\n#endif\n#endif\n\n// include the input and weights\n\nstatic q7_t conv1_wt[CONV1_IM_CH * CONV1_KER_DIM * CONV1_KER_DIM * CONV1_OUT_CH] = CONV1_WT;\nstatic q7_t conv1_bias[CONV1_OUT_CH] = CONV1_BIAS;\n\nstatic q7_t conv2_wt[CONV2_IM_CH * CONV2_KER_DIM * CONV2_KER_DIM * CONV2_OUT_CH] = CONV2_WT;\nstatic q7_t conv2_bias[CONV2_OUT_CH] = CONV2_BIAS;\n\nstatic q7_t conv3_wt[CONV3_IM_CH * CONV3_KER_DIM * CONV3_KER_DIM * CONV3_OUT_CH] = CONV3_WT;\nstatic q7_t conv3_bias[CONV3_OUT_CH] = CONV3_BIAS;\n\nstatic q7_t ip1_wt[IP1_DIM * IP1_OUT] = IP1_WT;\nstatic q7_t ip1_bias[IP1_OUT] = IP1_BIAS;\n\n/* Here the image_data should be the raw uint8 type RGB image in [RGB, RGB, RGB ... RGB] format */\nuint8_t   image_data[CONV1_IM_CH * CONV1_IM_DIM * CONV1_IM_DIM] = IMG_DATA;\nq7_t      output_data[IP1_OUT];\n\n//vector buffer: max(im2col buffer,average pool buffer, fully connected buffer)\nq7_t      col_buffer[2 * 5 * 5 * 32 * 2];\n\nq7_t      scratch_buffer[32 * 32 * 10 * 4];\n\nint main()\n{\n  #ifdef RTE_Compiler_EventRecorder\n  EventRecorderInitialize (EventRecordAll, 1);  // initialize and start Event Recorder\n  #endif\n\n  printf(\"start execution\\n\");\n  /* start the execution */\n\n  q7_t     *img_buffer1 = scratch_buffer;\n  q7_t     *img_buffer2 = img_buffer1 + 32 * 32 * 32;\n\n  /* input pre-processing */\n  int mean_data[3] = INPUT_MEAN_SHIFT;\n  unsigned int scale_data[3] = INPUT_RIGHT_SHIFT;\n  for (int i=0;i<32*32*3; i+=3) {\n    img_buffer2[i] =   (q7_t)__SSAT( ((((int)image_data[i]   - mean_data[0])<<7) + (0x1<<(scale_data[0]-1)))\n                             >> scale_data[0], 8);\n    img_buffer2[i+1] = (q7_t)__SSAT( ((((int)image_data[i+1] - mean_data[1])<<7) + (0x1<<(scale_data[1]-1)))\n                             >> scale_data[1], 8);\n    img_buffer2[i+2] = (q7_t)__SSAT( ((((int)image_data[i+2] - mean_data[2])<<7) + (0x1<<(scale_data[2]-1)))\n                             >> scale_data[2], 8);\n  }\n  \n  // conv1 img_buffer2 -> img_buffer1\n  arm_convolve_HWC_q7_RGB(img_buffer2, CONV1_IM_DIM, CONV1_IM_CH, conv1_wt, CONV1_OUT_CH, CONV1_KER_DIM, CONV1_PADDING,\n                          CONV1_STRIDE, conv1_bias, CONV1_BIAS_LSHIFT, CONV1_OUT_RSHIFT, img_buffer1, CONV1_OUT_DIM,\n                          (q15_t *) col_buffer, NULL);\n\n  arm_relu_q7(img_buffer1, CONV1_OUT_DIM * CONV1_OUT_DIM * CONV1_OUT_CH);\n\n  // pool1 img_buffer1 -> img_buffer2\n  arm_maxpool_q7_HWC(img_buffer1, CONV1_OUT_DIM, CONV1_OUT_CH, POOL1_KER_DIM,\n                     POOL1_PADDING, POOL1_STRIDE, POOL1_OUT_DIM, NULL, img_buffer2);\n\n  // conv2 img_buffer2 -> img_buffer1\n  arm_convolve_HWC_q7_fast(img_buffer2, CONV2_IM_DIM, CONV2_IM_CH, conv2_wt, CONV2_OUT_CH, CONV2_KER_DIM,\n                           CONV2_PADDING, CONV2_STRIDE, conv2_bias, CONV2_BIAS_LSHIFT, CONV2_OUT_RSHIFT, img_buffer1,\n                           CONV2_OUT_DIM, (q15_t *) col_buffer, NULL);\n\n  arm_relu_q7(img_buffer1, CONV2_OUT_DIM * CONV2_OUT_DIM * CONV2_OUT_CH);\n\n  // pool2 img_buffer1 -> img_buffer2\n  arm_maxpool_q7_HWC(img_buffer1, CONV2_OUT_DIM, CONV2_OUT_CH, POOL2_KER_DIM,\n                     POOL2_PADDING, POOL2_STRIDE, POOL2_OUT_DIM, col_buffer, img_buffer2);\n\n// conv3 img_buffer2 -> img_buffer1\n  arm_convolve_HWC_q7_fast(img_buffer2, CONV3_IM_DIM, CONV3_IM_CH, conv3_wt, CONV3_OUT_CH, CONV3_KER_DIM,\n                           CONV3_PADDING, CONV3_STRIDE, conv3_bias, CONV3_BIAS_LSHIFT, CONV3_OUT_RSHIFT, img_buffer1,\n                           CONV3_OUT_DIM, (q15_t *) col_buffer, NULL);\n\n  arm_relu_q7(img_buffer1, CONV3_OUT_DIM * CONV3_OUT_DIM * CONV3_OUT_CH);\n\n  // pool3 img_buffer-> img_buffer2\n  arm_maxpool_q7_HWC(img_buffer1, CONV3_OUT_DIM, CONV3_OUT_CH, POOL3_KER_DIM,\n                     POOL3_PADDING, POOL3_STRIDE, POOL3_OUT_DIM, col_buffer, img_buffer2);\n\n  arm_fully_connected_q7_opt(img_buffer2, ip1_wt, IP1_DIM, IP1_OUT, IP1_BIAS_LSHIFT, IP1_OUT_RSHIFT, ip1_bias,\n                             output_data, (q15_t *) img_buffer1);\n\n  arm_softmax_q7(output_data, 10, output_data);\n\n  for (int i = 0; i < 10; i++)\n  {\n      printf(\"%d: %d\\n\", i, output_data[i]);\n  }\n\n  return 0;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_inputs.h",
    "content": "/* Here are two different test images */\n\n//#define IMG_DATA {158,112,49,159,111,47,165,116,51,166,118,53,160,112,46,156,109,41,162,115,47,159,113,45,158,111,44,159,113,41,161,116,41,160,111,52,161,111,49,166,117,41,169,117,45,170,119,44,167,117,40,162,113,38,160,111,39,160,112,43,156,109,44,149,107,45,150,107,45,148,106,43,149,107,44,143,101,39,140,98,43,141,97,41,143,97,38,137,95,36,126,91,36,116,85,33,152,112,51,151,110,40,159,114,45,166,116,56,162,112,49,160,113,43,164,117,47,162,114,45,163,116,46,156,110,38,155,111,41,159,110,54,163,113,52,170,119,41,171,117,40,171,115,33,169,115,30,160,111,33,154,112,41,151,115,50,145,110,53,139,104,55,140,102,52,141,100,48,149,105,50,147,102,46,145,102,45,142,97,38,143,98,34,136,95,31,125,91,32,119,88,34,151,110,47,151,109,33,158,111,36,167,111,48,160,106,42,163,115,44,165,117,45,165,117,45,163,115,43,162,115,43,158,114,48,157,109,57,161,111,51,166,115,38,167,114,37,169,113,35,170,116,39,159,114,47,145,111,54,121,96,49,110,90,52,98,78,50,101,77,47,114,85,50,120,86,48,134,96,55,143,103,51,140,99,39,142,99,35,139,98,34,130,95,34,120,89,33,155,107,40,155,110,32,160,109,31,174,112,44,167,110,43,167,117,46,169,120,48,169,119,48,165,115,44,165,117,45,167,123,57,191,146,95,177,130,75,157,111,41,162,115,47,164,114,54,158,112,58,149,111,67,104,80,47,103,87,65,98,90,76,92,90,84,80,75,66,74,63,50,86,70,52,83,62,39,113,85,45,132,98,46,140,102,43,140,101,39,136,99,39,127,94,36,155,107,41,156,114,48,161,115,49,170,114,47,169,114,43,163,113,40,169,120,47,166,116,44,164,113,41,164,116,42,173,128,59,246,214,164,195,156,107,151,114,56,146,111,60,142,108,71,111,80,50,78,53,31,85,69,56,113,103,98,112,110,111,106,114,118,97,102,105,93,94,93,74,72,67,84,78,70,85,73,47,105,83,45,128,96,48,138,101,46,133,94,36,129,93,36,148,109,54,133,104,64,130,100,57,147,112,53,161,115,44,165,113,39,167,116,41,167,115,41,163,111,37,165,116,39,163,118,42,180,138,85,157,122,78,128,102,58,97,75,43,66,50,31,69,58,43,66,56,45,89,83,76,118,113,110,122,121,120,119,122,122,114,116,116,94,96,96,99,100,97,91,91,86,58,58,47,67,58,37,108,84,49,140,105,58,138,98,44,134,95,40,127,100,57,109,95,80,47,37,17,88,74,28,153,117,48,170,118,43,168,115,40,170,118,43,169,117,42,166,116,37,164,120,39,147,107,52,129,98,59,127,108,75,100,87,70,68,67,57,78,83,72,72,75,64,83,84,74,132,130,121,146,142,132,124,118,108,105,99,90,107,102,94,115,111,103,85,83,77,63,71,69,46,47,39,79,61,36,132,98,58,141,99,48,134,93,39,131,115,90,99,96,92,42,43,38,70,64,41,143,111,56,167,117,42,165,114,36,168,116,39,171,119,49,161,113,51,140,109,51,120,94,49,130,110,77,144,131,107,116,106,93,88,87,79,91,95,88,85,88,82,77,77,69,124,118,107,163,153,140,136,124,112,102,93,81,106,98,88,100,93,84,85,81,74,54,60,58,49,53,49,57,47,32,107,83,50,138,103,51,136,97,39,170,161,144,103,105,105,54,58,59,124,121,113,153,124,82,161,113,43,163,117,41,166,122,50,165,121,66,174,135,95,113,89,59,125,105,78,157,141,121,156,143,128,121,111,101,86,80,74,82,81,77,84,85,82,80,78,73,81,71,61,138,125,112,146,135,123,113,103,93,87,79,70,83,77,69,86,82,76,71,73,67,56,57,53,40,35,27,74,59,35,133,106,59,137,103,45,180,176,163,134,139,143,94,100,105,154,154,149,174,149,112,158,116,51,156,116,47,153,118,60,207,180,146,237,214,198,207,180,166,156,131,119,174,153,145,148,131,125,125,110,107,93,85,79,86,84,79,74,74,71,59,57,53,76,68,58,137,125,112,143,133,122,133,124,114,106,98,89,86,81,74,87,85,78,84,85,78,75,76,71,50,49,43,40,30,15,95,75,44,132,103,57,183,183,175,108,116,122,142,151,158,165,169,168,177,156,122,155,112,50,159,118,51,122,89,47,213,197,179,237,224,226,220,191,188,164,135,131,183,159,155,156,137,132,125,108,104,120,111,104,78,76,69,80,80,77,45,44,40,91,85,77,175,165,154,157,147,137,155,147,138,107,100,92,87,83,77,103,102,96,88,88,79,78,79,73,59,59,59,41,36,33,59,46,31,104,81,46,188,191,189,100,108,116,135,144,153,170,175,178,187,167,136,166,120,59,173,123,55,134,93,44,117,95,80,194,182,188,199,171,164,170,142,133,185,161,151,189,171,159,134,119,106,117,107,95,102,98,89,84,84,79,38,38,34,125,121,113,210,201,192,160,152,142,146,139,130,93,89,82,83,80,75,94,93,88,104,104,94,85,87,81,73,75,78,55,53,55,62,55,48,76,56,26,189,194,194,90,96,105,127,134,144,175,180,185,174,156,133,166,123,68,178,123,53,159,109,47,97,68,44,168,154,152,168,144,126,137,114,94,186,166,148,216,202,183,160,149,129,123,113,98,120,114,105,115,114,109,50,50,47,150,147,140,194,187,178,155,149,140,123,118,111,91,88,83,84,83,79,84,84,80,95,95,85,86,87,81,84,87,89,73,73,73,79,74,64,73,55,24,189,192,193,93,95,103,152,154,163,185,188,192,119,110,98,136,106,66,173,124,58,167,116,50,103,72,39,147,132,120,145,125,103,167,149,127,189,174,155,226,216,200,180,172,157,141,131,117,126,117,107,117,114,109,71,71,68,154,152,147,186,181,174,149,144,136,114,110,104,87,85,80,80,80,76,72,73,70,80,80,72,99,100,94,100,101,99,90,88,81,97,89,69,94,73,34,194,196,196,108,107,112,168,167,172,186,186,188,105,109,109,99,89,67,156,119,62,167,122,55,100,74,34,115,106,88,138,123,103,198,185,169,190,180,169,172,165,159,145,140,140,154,143,134,146,136,125,103,100,95,71,71,70,152,152,149,179,175,170,137,133,127,130,128,122,110,109,105,85,86,83,91,93,91,95,96,90,109,110,104,115,116,111,100,96,80,97,85,53,117,95,47,197,197,197,132,129,136,172,167,174,184,178,181,130,137,142,78,83,77,140,120,88,155,125,77,115,94,52,130,120,93,143,131,116,230,221,211,242,236,230,145,138,137,135,130,130,131,121,112,121,112,101,108,104,95,95,88,75,144,134,118,168,159,146,152,147,138,112,108,101,87,85,80,71,72,68,87,88,87,105,104,99,112,109,99,120,110,93,103,86,54,121,96,48,136,104,48,203,203,204,146,146,160,168,164,178,191,182,188,168,170,172,78,86,90,126,125,126,138,126,113,138,121,82,96,80,37,154,143,133,173,163,155,162,152,141,140,132,117,113,106,88,113,106,90,101,101,92,105,101,87,112,90,58,171,143,104,156,138,109,148,141,126,135,130,118,109,105,97,78,76,72,79,79,77,94,93,94,101,91,82,107,83,55,125,88,45,151,108,55,144,104,46,214,215,215,163,166,180,164,167,184,183,184,194,176,182,186,94,102,105,96,96,102,156,149,145,148,137,111,106,93,61,129,116,105,118,105,95,114,102,89,116,105,89,102,91,73,115,110,98,86,91,88,101,103,95,144,128,102,118,96,64,68,56,32,128,120,105,133,126,115,75,69,61,60,56,51,58,56,53,71,70,65,102,93,78,116,94,64,143,112,68,150,116,64,140,110,54,212,211,205,178,184,192,167,175,189,173,181,193,176,184,188,124,131,133,86,88,96,141,139,143,153,148,141,135,128,111,104,90,80,77,64,55,134,121,108,124,111,96,129,117,100,147,143,133,85,92,93,92,96,93,150,139,120,132,117,93,117,109,92,107,99,86,75,68,58,64,59,52,44,41,39,65,62,60,86,69,40,133,105,59,155,119,62,160,120,54,154,115,45,151,111,46,199,192,180,187,189,187,171,176,181,174,179,185,177,182,184,144,149,152,86,90,99,119,121,132,122,124,130,137,136,135,144,134,126,70,59,51,129,118,108,108,97,86,145,134,123,184,176,168,116,118,118,73,75,73,131,119,103,137,124,105,134,129,118,89,86,78,51,49,44,52,51,50,47,49,52,90,90,93,121,91,60,163,118,68,171,121,64,164,113,52,158,111,50,149,107,46,165,156,146,195,193,187,179,178,175,177,173,172,181,181,180,152,157,160,99,103,111,131,135,146,171,175,185,103,105,111,93,90,87,80,77,73,93,90,86,122,118,116,178,173,173,191,182,177,150,148,148,100,100,101,89,78,66,87,77,63,60,61,57,46,52,54,38,46,51,24,33,41,46,57,69,60,71,83,108,100,75,144,125,82,144,123,76,128,109,61,127,113,69,120,105,63,117,120,124,195,200,200,177,178,176,178,169,168,181,179,179,138,144,147,83,87,91,150,153,159,245,247,250,219,222,225,133,140,144,134,141,147,149,156,164,176,182,192,190,196,208,194,192,197,168,172,181,125,133,143,110,109,109,61,62,62,35,49,58,34,54,68,49,70,87,58,81,102,61,85,110,58,84,111,69,99,122,72,101,119,78,104,120,69,96,112,59,92,112,55,90,115,79,105,133,175,197,213,174,183,192,176,172,177,177,177,182,140,146,150,109,112,113,211,211,209,253,252,247,252,253,252,208,224,232,124,143,157,114,132,149,124,141,162,116,133,156,122,133,152,104,124,148,68,93,119,68,87,104,60,82,101,52,84,111,50,84,110,51,85,115,56,93,125,56,94,131,51,91,130,43,96,135,51,104,141,59,108,142,48,97,132,43,97,137,42,95,132,41,89,135,96,137,168,144,168,188,168,174,188,178,182,192,165,170,174,165,166,164,246,245,237,253,251,241,227,231,228,110,136,153,60,88,111,53,80,105,49,76,105,49,75,107,48,72,101,45,79,115,42,81,120,46,81,113,42,82,116,38,86,125,46,90,125,46,89,126,43,87,128,42,89,132,46,93,139,46,94,137,50,96,137,55,96,135,53,94,134,51,95,139,45,90,133,29,91,141,29,87,130,59,102,134,131,153,176,166,179,191,132,136,137,194,189,181,254,250,242,241,245,245,141,159,175,61,94,127,50,84,118,50,84,119,51,85,121,49,83,120,50,84,116,47,86,117,42,84,117,39,82,115,34,79,113,35,83,120,39,86,125,38,85,125,42,89,130,45,92,134,56,103,145,62,103,142,59,101,142,56,102,146,50,99,144,46,94,140,51,103,149,48,111,162,30,94,140,34,85,124,73,106,136,128,148,167,128,136,143,215,213,209,255,253,249,187,198,205,66,93,118,54,91,128,50,88,125,52,90,127,52,90,127,46,83,121,45,82,115,43,82,113,41,81,112,36,80,113,39,83,117,40,86,123,40,89,131,43,92,134,46,95,138,59,108,150,62,110,152,64,109,147,59,108,149,54,108,154,50,105,152,70,123,167,83,137,182,52,114,165,35,99,147,31,86,130,41,83,122,66,95,126,128,145,164,224,229,234,240,245,247,124,143,153,58,92,114,49,87,123,56,94,131,54,92,129,44,82,119,44,82,119,47,83,119,46,84,119,43,83,119,43,86,123,44,88,127,44,90,131,45,97,141,54,106,150,58,110,154,54,105,150,46,97,141,43,95,140,36,91,138,51,108,158,73,130,178,85,138,182,76,125,169,50,110,162,35,98,149,29,89,138,35,86,133,44,83,126,78,106,138,202,219,233,211,228,234,97,126,140,65,104,126,54,94,129,48,87,124,58,97,133,48,87,123,40,80,116,45,82,119,47,84,122,48,87,126,47,89,130,46,89,132,51,97,140,39,92,138,39,93,139,48,102,148,47,101,147,39,93,139,28,85,133,40,101,153,67,129,182,67,126,176,46,98,142,51,96,139,50,108,161,35,97,147,32,92,143,33,88,141,41,88,138,46,84,125,104,133,159,170,197,211,64,100,119,54,97,121,52,94,128,53,95,130,61,103,139,58,100,135,54,96,131,45,83,120,42,79,118,41,80,120,46,88,130,49,92,135,46,92,136,42,95,139,40,93,138,39,92,136,37,90,135,40,93,138,44,102,151,63,125,178,47,110,164,31,90,140,15,60,103,51,93,136,68,124,177,42,100,148,31,88,137,38,91,146,37,87,139,43,89,132,42,79,113,71,107,133,49,89,114,31,77,105,27,71,105,38,82,117,49,93,128,56,100,135,58,102,137,53,92,128,56,94,131,60,99,137,57,99,139,53,97,138,50,95,137,45,94,136,39,88,131,33,83,125,42,91,133,62,112,154,79,132,179,73,131,181,56,116,168,38,97,146,13,64,108,40,85,127,61,116,168,49,102,148,35,85,132,43,91,143,39,90,139,42,92,134,44,88,125,40,81,112,42,85,115,27,72,104,23,67,102,30,74,109,27,71,106,29,73,108,36,80,115,47,86,120,56,95,128,62,101,135,66,109,144,75,119,156,69,113,152,49,95,134,43,88,127,43,88,127,60,105,144,85,130,170,109,156,197,93,145,190,60,115,164,26,82,130,29,82,126,20,64,107,54,107,160,56,105,149,45,89,132,43,86,134,40,89,134,40,92,132,40,87,123,38,81,115,36,79,114,26,69,105,22,66,101,29,73,108,25,69,104,29,73,108,19,63,98,18,58,89,32,70,100,47,87,118,61,104,137,74,119,152,66,111,145,53,96,131,52,95,130,45,87,123,67,109,145,89,131,167,105,146,182,89,135,175,48,99,145,24,77,124,34,84,129,21,67,110}\n\n\n#define IMG_DATA {235,235,235,231,231,231,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,232,233,233,231,233,232,231,233,231,233,233,230,233,232,232,232,234,232,231,234,232,232,232,233,233,230,232,233,231,233,233,233,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233,232,232,232,238,238,238,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,237,234,233,236,234,233,236,236,234,234,236,234,234,235,237,234,234,238,235,236,237,236,236,235,236,236,234,236,236,236,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,235,235,235,237,237,237,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,234,234,236,233,231,236,234,231,235,235,234,234,235,236,227,230,233,231,235,238,231,233,235,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,235,234,234,234,238,238,238,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,234,233,233,230,232,232,231,228,230,232,223,226,231,186,192,197,209,216,219,207,210,213,228,228,230,236,235,235,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,235,235,235,235,237,237,237,234,234,234,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,234,234,234,234,234,234,235,235,235,235,235,235,234,234,234,234,234,234,235,235,235,235,235,235,236,238,236,233,237,237,219,225,230,203,210,219,163,172,179,195,205,208,214,218,221,230,229,232,237,235,237,235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236,236,239,239,238,236,235,235,236,235,235,236,235,235,236,235,235,236,235,235,235,236,235,235,235,235,234,234,234,235,235,235,237,236,236,237,236,236,234,235,236,232,233,234,235,237,237,229,231,232,208,216,218,194,205,210,185,198,207,174,188,200,165,179,189,184,196,202,207,215,220,226,228,232,236,235,237,236,236,235,236,236,235,236,236,235,236,236,236,237,237,237,237,237,237,237,237,237,228,229,229,228,227,228,232,230,231,231,228,230,234,232,233,237,236,236,237,237,235,236,237,235,237,235,236,237,235,236,239,236,237,239,237,238,225,229,230,224,228,229,233,237,238,221,226,228,183,197,204,161,180,190,159,180,191,154,176,190,144,163,177,143,159,171,156,169,177,198,206,211,233,238,239,236,237,234,235,236,233,235,235,235,235,236,236,236,238,237,237,237,237,239,237,238,212,220,222,224,230,233,230,234,238,227,232,234,229,234,234,234,237,236,237,238,235,238,237,236,239,237,238,239,237,238,239,236,237,240,238,239,201,204,203,219,222,221,233,236,235,214,218,218,193,204,210,185,201,210,184,201,211,173,191,203,165,182,196,159,174,187,162,176,185,186,199,204,229,239,240,234,239,238,233,238,237,233,238,238,234,239,238,236,239,238,237,239,238,238,238,238,216,234,241,221,236,243,225,238,246,225,239,243,227,240,240,231,238,237,236,237,235,238,236,235,238,236,237,238,236,237,237,237,237,239,239,239,197,198,196,220,221,218,233,234,231,230,231,229,209,213,217,209,216,222,219,228,235,208,218,227,209,221,234,210,224,235,217,233,240,218,235,241,225,240,243,228,238,240,228,239,240,230,240,240,230,240,239,235,240,239,237,240,239,238,238,238,118,140,149,119,138,148,124,142,153,136,155,161,172,188,191,225,234,233,235,236,233,237,234,232,236,233,234,235,235,235,235,237,236,233,237,235,214,216,214,226,228,226,232,234,232,236,237,236,228,230,232,227,230,235,231,236,241,225,232,239,225,237,247,217,233,243,201,219,226,185,204,211,172,189,195,167,179,186,167,180,185,186,199,201,223,235,235,235,241,239,236,240,239,238,240,239,109,130,141,103,121,133,108,125,137,111,127,137,146,159,165,222,229,231,227,228,225,229,226,224,236,232,233,234,234,234,231,236,234,230,237,235,229,234,235,231,235,236,232,237,238,230,235,236,231,236,238,231,237,240,229,237,241,223,232,238,191,206,213,164,184,191,146,165,172,137,156,163,134,149,159,128,140,153,121,133,143,149,162,166,216,228,229,234,241,239,235,240,238,237,240,239,195,212,224,188,202,215,199,211,224,200,211,223,209,217,227,223,227,231,213,213,211,211,209,206,216,213,214,220,222,222,219,226,225,210,221,219,209,219,223,211,221,225,216,225,230,220,229,233,225,234,237,226,236,239,225,237,241,218,231,237,183,204,208,175,198,203,181,200,207,178,194,202,186,197,211,170,178,196,142,151,164,185,195,202,219,230,233,231,240,238,234,241,239,236,240,239,193,207,222,191,202,217,202,211,224,214,217,234,223,225,241,214,219,227,203,208,208,171,174,174,177,180,183,207,213,214,174,184,188,98,112,121,93,114,126,101,121,132,111,129,139,122,138,147,137,152,161,153,167,174,202,216,220,223,236,237,218,232,235,220,233,238,223,234,240,217,226,233,221,228,237,212,219,229,196,203,212,222,230,237,219,227,234,221,230,233,232,239,242,235,241,242,113,130,152,111,125,147,113,125,141,125,131,151,138,145,165,170,182,193,191,201,205,190,199,204,208,219,226,216,230,234,158,172,183,54,71,92,45,70,91,49,73,91,53,73,90,66,84,98,102,114,129,159,168,179,221,227,233,234,239,241,233,237,241,227,231,237,223,228,233,207,211,217,202,208,212,211,218,220,212,219,223,199,206,214,179,186,196,188,197,205,211,221,227,221,231,234,61,81,108,69,86,114,63,79,100,68,85,102,123,141,155,139,155,164,151,157,164,195,200,207,214,228,234,206,223,228,163,180,190,103,121,138,95,112,131,101,117,135,138,151,168,181,192,207,207,212,223,221,222,232,219,219,227,205,203,212,183,186,195,158,166,174,147,154,163,131,138,147,125,133,140,130,139,144,136,146,152,133,142,151,128,137,147,138,153,160,182,197,203,197,212,216,40,53,77,58,70,94,85,98,116,127,144,153,132,151,156,96,107,110,119,115,118,163,158,161,173,180,182,184,194,197,182,194,198,181,193,200,183,194,202,198,209,217,218,228,236,200,210,217,174,181,186,159,165,172,145,150,159,132,136,149,116,125,138,98,111,123,94,106,118,99,111,123,105,118,128,107,121,130,122,135,145,138,151,161,150,164,174,157,174,184,188,206,213,185,203,208,13,15,35,26,29,47,134,140,151,206,216,220,138,150,150,118,123,123,141,133,134,172,162,162,181,181,180,207,209,211,220,224,225,228,234,233,224,234,232,230,241,240,226,238,238,176,189,190,144,159,163,138,154,162,142,158,170,145,163,177,154,171,187,149,165,182,149,165,182,154,171,187,157,174,189,160,177,191,173,190,204,187,204,217,190,207,218,178,196,208,165,183,193,157,175,183,5,5,24,58,62,79,200,207,217,225,232,239,197,205,212,199,207,211,212,212,218,226,224,229,229,230,237,233,236,246,232,238,245,230,238,239,209,221,220,223,238,239,221,238,241,210,228,234,198,217,228,180,200,214,193,216,230,188,213,229,189,212,231,194,214,234,192,212,232,184,204,224,172,193,212,171,191,209,161,181,197,144,165,179,136,156,169,131,146,161,128,143,158,138,154,165,39,45,71,145,155,179,190,204,222,186,196,216,184,197,217,192,211,229,194,211,230,194,208,227,194,206,227,191,203,228,192,207,228,190,207,221,177,193,207,180,198,215,154,176,193,147,169,188,145,161,184,156,171,195,146,163,186,113,133,156,114,137,161,132,157,180,126,150,173,111,135,158,92,115,138,91,112,135,93,114,133,94,116,131,105,125,140,121,133,151,129,141,158,129,142,156,122,135,161,162,179,207,143,160,194,137,154,189,131,152,187,128,152,190,127,150,192,130,150,193,131,150,192,128,147,190,127,147,189,129,149,189,129,149,188,124,145,186,104,126,163,100,122,154,102,120,154,118,134,170,112,128,163,94,109,145,94,112,148,94,117,153,87,112,144,83,103,136,80,97,130,83,103,134,93,111,139,101,117,141,108,121,144,115,125,146,121,133,148,130,144,156,73,87,109,76,90,113,77,90,122,80,93,127,84,98,134,87,102,142,87,102,147,90,105,150,94,111,152,102,119,160,107,124,165,113,131,172,115,137,181,118,136,186,118,132,180,120,133,175,115,136,172,110,133,168,106,127,163,100,119,155,95,109,148,85,101,139,79,97,132,80,92,127,80,94,129,77,100,133,80,100,129,82,98,122,92,104,126,113,119,138,125,135,146,136,149,156,13,25,41,3,11,25,9,16,35,18,26,48,18,26,52,21,25,56,20,25,58,22,30,61,26,36,62,34,43,70,42,51,77,48,59,87,52,69,106,60,75,121,66,77,126,70,79,126,71,87,127,72,88,126,67,81,120,60,72,112,55,67,106,53,68,104,53,69,103,57,69,102,57,71,105,57,78,110,72,89,115,87,100,119,104,113,128,120,124,136,130,136,141,137,146,149,36,46,55,11,16,20,8,13,19,32,44,53,36,45,58,22,25,41,8,11,30,3,8,24,1,4,17,0,2,15,0,2,15,0,4,20,6,13,42,5,18,56,1,19,60,3,23,62,13,29,71,24,38,81,21,33,77,21,31,76,21,38,78,22,44,79,30,50,83,39,58,90,57,70,101,85,90,118,113,115,138,123,123,138,116,115,125,122,123,128,134,139,137,153,160,158,35,41,45,26,27,26,13,19,18,27,41,41,71,81,84,70,70,76,49,50,57,27,31,37,15,15,21,5,5,11,2,2,7,0,0,7,17,17,35,57,64,91,31,50,78,10,36,62,4,30,60,4,30,62,7,30,63,14,35,69,25,43,74,41,55,83,62,71,99,86,97,123,122,124,146,144,131,149,132,120,135,114,105,114,117,111,116,132,134,133,146,152,146,172,179,175,16,15,17,13,10,9,4,10,8,3,12,11,45,44,46,65,52,57,54,43,47,36,33,35,18,18,20,4,4,7,2,2,4,0,1,3,7,8,15,118,117,134,161,158,179,131,128,148,112,112,131,105,105,125,105,103,124,109,105,127,118,107,126,138,115,133,154,126,144,151,126,141,127,106,116,105,86,91,106,94,97,120,116,116,129,130,129,142,147,144,164,172,165,184,194,190,40,40,35,12,10,7,0,3,3,0,4,4,12,6,7,30,12,17,32,12,17,21,10,12,7,6,7,2,1,3,2,1,2,3,2,3,0,0,2,68,58,64,182,128,146,205,130,148,196,127,144,194,123,141,195,119,137,187,113,129,172,110,122,150,96,106,123,75,83,103,66,69,95,71,70,104,93,88,122,118,113,129,132,126,132,141,135,152,162,158,171,182,176,185,197,194,69,77,64,26,29,21,1,1,1,1,1,2,4,1,0,12,2,5,18,3,9,12,2,5,4,1,2,2,0,0,2,0,0,4,0,1,1,1,1,32,12,11,153,45,59,203,47,68,195,46,67,191,48,69,179,50,67,155,49,59,119,42,49,91,38,42,81,48,46,94,77,71,117,110,102,125,126,116,125,128,120,129,135,128,144,153,147,162,176,171,173,187,183,184,198,196,83,94,82,47,52,43,1,1,1,2,1,2,2,0,0,5,1,2,7,1,5,4,0,2,1,0,0,1,0,0,1,0,0,3,0,0,1,2,0,27,3,2,142,25,38,205,32,54,198,25,46,169,25,43,121,25,36,85,29,34,74,41,39,85,66,56,102,92,82,121,113,105,128,124,115,122,126,115,121,127,118,132,139,131,147,157,150,165,179,174,176,191,187,186,201,199,92,102,93,54,60,50,6,7,3,3,2,1,2,2,0,1,3,1,1,3,3,1,2,2,1,1,1,1,0,0,1,0,0,1,1,1,0,3,2,15,1,0,102,19,28,157,31,47,117,17,23,74,13,12,56,27,22,74,58,55,99,90,81,115,115,99,122,126,111,124,124,112,123,123,113,125,130,119,128,135,126,136,145,137,148,159,151,162,176,171,177,192,188,188,202,201,87,99,89,43,51,37,19,23,11,11,12,4,8,10,2,5,11,4,2,10,4,2,7,2,3,4,1,3,4,1,3,4,1,2,3,2,0,6,6,4,5,2,42,13,13,71,21,24,53,27,25,57,50,41,80,77,62,113,98,82,132,113,101,134,126,113,123,126,112,116,125,111,120,128,115,131,138,126,139,148,137,143,154,145,156,168,161,169,184,179,182,197,193,188,202,201,82,96,82,46,57,36,36,44,22,31,35,17,27,30,15,22,28,15,17,26,13,16,23,12,18,21,12,19,21,13,20,22,14,19,23,15,19,27,20,23,31,21,37,40,27,64,55,45,87,70,67,104,88,81,116,102,85,128,112,88,139,121,105,131,122,110,117,122,107,115,127,112,123,133,119,131,139,127,139,149,138,148,160,151,159,172,164,174,189,183,185,200,196,187,202,200,85,101,83,62,75,48,58,67,38,55,61,37,51,56,35,47,53,33,46,53,34,48,55,38,49,55,40,51,56,41,53,58,44,55,62,46,59,67,45,68,71,48,81,84,59,104,96,74,116,103,83,127,109,92,133,116,97,127,121,97,127,127,107,118,124,106,114,125,108,122,131,117,129,136,123,136,145,133,141,152,141,149,162,153,158,171,163,168,183,178,180,195,191,186,200,199}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_parameter.h",
    "content": "#define CONV1_IM_DIM 32\n#define CONV1_IM_CH 3\n#define CONV1_KER_DIM 5\n#define CONV1_PADDING 2\n#define CONV1_STRIDE 1\n#define CONV1_OUT_CH 32\n#define CONV1_OUT_DIM 32\n\n#define POOL1_KER_DIM 3\n#define POOL1_STRIDE 2\n#define POOL1_PADDING 0\n#define POOL1_OUT_DIM 16\n\n#define CONV2_IM_DIM 16\n#define CONV2_IM_CH 32\n#define CONV2_KER_DIM 5\n#define CONV2_PADDING 2\n#define CONV2_STRIDE 1\n#define CONV2_OUT_CH 16\n#define CONV2_OUT_DIM 16\n\n#define POOL2_KER_DIM 3\n#define POOL2_STRIDE 2\n#define POOL2_PADDING 0\n#define POOL2_OUT_DIM 8\n\n#define CONV3_IM_DIM 8\n#define CONV3_IM_CH 16\n#define CONV3_KER_DIM 5\n#define CONV3_PADDING 2\n#define CONV3_STRIDE 1\n#define CONV3_OUT_CH 32\n#define CONV3_OUT_DIM 8\n\n#define POOL3_KER_DIM 3\n#define POOL3_STRIDE 2\n#define POOL3_PADDING 0\n#define POOL3_OUT_DIM 4\n\n#define IP1_DIM 4*4*32\n#define IP1_IM_DIM 4\n#define IP1_IM_CH 32\n#define IP1_OUT 10\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_weights.h",
    "content": "#define CONV1_WT {-9,-1,2,6,-4,6,4,-11,8,-9,-11,10,-12,5,15,11,-1,-1,33,-25,-18,47,-35,-23,25,-27,-5,0,-4,9,2,-5,0,34,-25,-21,55,-40,-33,34,-32,-16,5,-7,2,-21,16,14,-4,5,3,14,-10,-7,3,-10,-2,-8,5,8,-29,23,12,-25,15,8,-15,4,7,-16,5,8,-13,17,12,2,-4,-1,-1,-10,9,6,-4,21,11,0,12,-10,-9,-4,13,10,12,19,11,27,0,-5,11,-21,-26,-28,-7,3,-15,16,14,26,-22,-25,-8,-29,-24,-23,0,6,-13,13,25,0,-21,-18,-3,-21,-19,-13,11,14,4,13,18,-4,6,16,-1,-10,-14,-7,12,9,5,13,8,-4,9,10,-9,-4,7,-3,7,7,-12,7,3,0,-1,-7,2,-8,-5,9,-3,6,-4,7,-10,-25,7,-7,-7,10,2,14,-4,2,17,-9,5,-3,7,-10,-25,4,-10,-8,0,0,16,-7,11,25,-14,13,4,7,-12,-23,5,-16,-17,8,0,11,2,13,21,-11,9,-3,2,-9,-9,-3,-14,-11,1,-1,6,-6,6,14,-1,16,11,7,3,-14,21,6,-6,17,13,4,1,7,-3,-6,2,2,27,13,-5,18,0,-7,-6,-4,2,-24,-11,0,-18,-8,6,24,8,-14,11,-6,-8,-8,0,12,-22,-2,13,-15,-3,7,29,6,-16,10,-6,-4,-12,-7,11,-26,-14,3,-10,-8,0,16,5,-8,-5,-5,3,-15,-2,23,-17,-5,17,1,1,12,10,3,-5,-7,-18,-7,-3,-4,2,3,6,4,4,2,-7,17,20,12,-23,-27,-15,-3,3,6,5,15,6,-2,2,-5,22,22,11,-26,-30,-19,-6,-5,3,10,12,6,2,1,-3,20,14,4,-15,-26,-18,0,-9,1,14,8,6,1,-7,-9,8,11,6,-10,-13,-11,-4,-4,8,2,5,17,-9,0,11,-9,-11,21,6,13,39,-7,1,30,2,12,36,-11,-1,28,-2,-25,-6,6,-16,-6,-9,-34,-24,3,-17,-15,2,-20,-11,0,-13,-11,25,13,6,0,-15,-20,16,7,-11,7,-3,-10,-5,-2,-6,14,22,12,-16,-5,-12,7,23,7,-10,5,-2,-10,-1,-9,7,21,8,-19,-2,-13,2,21,3,-15,9,-2,-4,-2,-2,-12,2,13,-19,1,6,0,16,-1,5,8,-28,11,-2,-4,-10,-1,21,-30,-4,22,-8,14,9,11,14,-21,20,-9,-23,0,-4,19,-28,-9,31,-30,-1,12,3,14,-11,30,3,-24,3,-8,6,-22,-9,31,-29,2,26,-5,11,8,24,2,-36,24,3,-9,-6,-17,4,-8,-8,12,1,-1,5,3,-12,15,-6,-2,-1,0,15,-11,-18,6,-18,-10,6,3,6,-3,3,-12,13,-14,-1,43,-23,-3,52,-16,-11,28,-8,4,-6,5,-11,16,-6,-20,32,-28,-24,38,-31,-22,20,-16,5,-13,7,-2,5,3,-6,17,-10,-8,22,-13,-5,13,0,11,-16,14,-3,-14,6,3,-4,4,4,-2,2,-3,-9,5,2,1,-2,-10,-6,-3,-17,-2,1,-19,2,1,-14,8,11,14,3,7,1,-13,-13,2,-1,-3,-9,0,-5,-18,4,0,18,3,9,15,-10,-8,10,-12,-18,5,-3,-16,-10,0,-14,5,4,14,14,-1,10,16,-6,-2,14,-1,-12,8,2,-18,-13,-1,17,-2,2,24,-4,-3,17,8,-1,12,9,-6,-3,-2,-9,3,-2,-13,-1,-5,-17,-5,-7,-16,-7,-8,-14,-9,3,-9,-1,0,-13,-7,4,-9,-7,3,-6,-8,-2,-4,-7,5,-7,-4,1,-8,-11,10,6,-3,14,12,-1,6,10,-2,0,-12,-16,-3,-9,-19,0,1,-12,9,12,-2,1,10,-1,10,4,-8,6,3,-11,11,14,1,12,19,8,3,16,9,-7,-1,4,-11,-1,3,1,12,8,7,15,13,-5,-2,4,-7,-5,1,-8,-3,2,1,10,9,-1,8,9,-11,-9,-2,0,-1,6,-14,-13,-6,1,3,10,3,4,11,-1,-5,5,7,4,10,-14,-17,-10,-12,-13,-6,-11,-14,-6,1,-6,1,2,-1,1,-5,-7,-3,-2,-4,1,-11,-13,-9,-12,-16,-12,-2,-1,-2,-9,-5,-4,-7,-3,3,-1,-3,8,9,-2,1,8,11,13,5,14,17,1,10,17,-1,3,18,0,-6,0,-1,0,3,4,13,16,-1,8,14,-4,2,14,-16,-20,-14,-3,-3,0,13,21,25,5,11,14,-5,-2,9,1,-5,2,-6,-9,-14,-7,-4,-8,-10,-9,-13,-10,-12,-12,7,-1,-2,-5,2,-14,-5,3,-6,1,9,3,-8,3,-1,-9,2,0,-12,-4,-21,6,17,8,17,28,22,-5,6,2,-15,-8,-7,8,21,-3,2,20,-5,-1,16,-8,7,17,3,0,6,1,11,26,0,-22,-4,-33,-36,-16,-40,-2,14,1,2,10,5,1,17,-10,-16,3,-22,-22,-1,-14,-9,10,6,-7,7,7,10,-8,5,-3,-4,-1,-7,-7,-7,1,0,-2,-7,11,9,5,-2,2,12,14,16,12,7,2,0,-9,-23,-14,-8,-23,-1,-11,-14,-7,-9,-7,14,11,7,44,35,19,34,38,12,1,3,9,-6,-4,8,-32,-28,-19,-41,-45,-37,-14,-17,-17,-7,4,-3,-5,8,8,3,16,21,8,14,24,-3,-5,6,-11,-15,-18,-8,-12,-12,-6,-14,-8,9,-6,1,16,3,11,3,3,-8,-5,0,-6,-13,-13,-13,-6,-15,-15,6,-5,-4,9,16,5,1,14,5,-4,7,-1,-12,-11,-18,0,-6,-12,5,14,0,-1,13,2,2,18,6,-9,-4,-16,0,-3,-17,4,12,0,-1,13,2,0,16,6,-6,1,-9,-5,-8,-19,18,-1,-4,16,-2,-6,18,-1,-4,9,-4,1,-12,-13,-4,9,-3,-9,6,-4,-14,15,5,-2,-5,-5,-1,-20,-9,-3,16,2,-5,12,3,-7,15,7,1,-12,-7,-2,-15,-2,2,18,7,-1,10,2,-5,-1,-8,-8,-18,-15,-7,-2,7,9,-15,-15,-17,-7,-6,-7,-12,-12,-6,-17,-12,-6,9,14,12,13,7,6,3,-3,2,-6,-7,1,-7,-4,3,-11,-12,-6,12,11,6,-4,-3,-2,-15,-12,-4,-7,-4,3,-9,-9,-4,15,17,12,-3,1,2,-18,-13,-6,4,5,10,6,1,5,9,14,8,-6,1,3,-21,-15,-7,-2,-1,5,4,-1,2,4,17,14,-4,4,9,-24,-20,-11,-7,-7,3,-2,-6,1,5,9,-10,6,9,-12,12,11,-7,4,1,-15,11,9,-6,25,15,5,21,13,5,23,14,7,13,2,-3,17,10,6,-1,-10,-2,-20,-21,-14,-11,-11,-2,-11,-12,-3,-16,-15,-3,-4,-14,6,-16,-19,-1,-3,-2,13,-1,-3,12,-6,-10,8,0,-5,10,-11,-10,4,-4,-1,8,-11,-5,3,-6,-1,8,-8,-15,0,-3,0,9,4,11,14,-3,3,4,-15,-9,-6,-12,-14,-1,-18,-8,-1,-26,-12,-8,-28,-12,-9,-30,-13,-8,10,-1,-6,15,17,5,11,22,8,15,24,8,17,25,12,10,-5,-9,4,4,-5,1,10,1,2,4,-8,6,7,-7,5,-10,-6,-1,-5,-3,3,8,10,1,4,-2,-1,0,-8,2,-8,3,0,-6,9,1,-2,-8,6,1,-3,1,-10,6,5,-6,7,-8,-12,0,11,17,-4,-7,-1,-12,1,-2,9,11,2,17,-35,-32,-21,38,52,20,-27,-17,-30,4,2,17,18,10,19,-44,-34,-34,43,59,28,-25,-17,-31,6,0,16,10,4,18,-31,-27,-22,27,31,16,-10,-9,-16,3,-6,6,-2,-11,15,10,0,14,-2,-8,-8,0,-7,-7,13,0,11,2,-7,3,10,4,3,0,-2,-14,-1,-1,-16,-1,3,-6,8,-4,3,12,4,2,4,1,-17,7,10,-8,0,10,-2,-3,-15,0,10,4,8,-10,-13,-24,-7,-2,-16,0,8,-3,-6,-6,7,7,11,13,2,9,-6,-4,11,-15,2,22,0,2,-4,-2,-10,-12,-5,24,15,25,-1,-4,-2,-11,-1,-3,7,11,5,-16,-17,-23,-29,-35,-30,53,45,54,-11,-9,-12,-3,5,4,44,39,36,-45,-51,-51,-19,-28,-16,25,24,28,-15,0,-12,7,1,2,44,42,40,-36,-41,-41,5,0,3,-1,18,5,-17,-15,-15,7,8,14,11,3,4,1,-11,-8,10,-1,-2,-5,-10,-3,6,6,10,5,9,9,-6,3,0,-14,-21,-16,-40,-39,-26,0,4,16,15,20,24,-14,-7,-5,3,-5,1,-13,-12,0,-16,-11,6,4,7,20,-11,-9,-1,11,-4,7,14,7,22,-14,-14,5,-7,-6,12,-4,-9,4,18,-6,5,14,-4,12,-2,-11,6,3,-5,11,4,-10,1,2,-1,-14,4,-6,-23,26,11,-15,12,-7,-33,6,-10,-15,13,6,-20,14,0,-25,2,-14,-34,1,-4,-11,3,9,23,1,6,-5,-6,-2,-8,-7,6,17,-5,18,42,-19,10,42,-3,-1,-2,-2,1,8,4,11,29,-18,-12,7,-16,-7,2,1,-1,9,-9,-9,15,-7,-5,18,-1,-4,6,1,2,-6,-10,7,-2,1,4,-2,-2,-4,6,5,-7,4,3,-7,-2,-11,17,0,-15,-18,-24,40,25,30,-9,-20,-18,1,4,1,-32,-12,-22,54,43,41,0,-19,-9,-29,-29,-25,5,16,20,20,6,8,29,5,16,-60,-74,-65,37,39,43,-5,-2,-2,21,-7,9,-21,-38,-19,6,22,14,2,25,17,-22,4,-11,3,6,-15,-5,2,-13,-2,12,-8,0,13,5,-4,1,5,-8,19,4,-5,28,29,-18,18,19,-20,1,-2,-9,-2,-10,-30,1,8,-57,-26,-3,-47,-28,-10,4,1,3,15,4,-1,-4,-8,4,12,-3,10,48,16,25,38,1,-1,15,-7,-4,23,-2,2,31,-7,-15,23,-17,-19,6,-20,-21,-2,-1,4,4,-4,3,9,0,8,10,-6,-3,17,-2,-11,14,-2,-20,-12,-8,18,-15,-9,20,-4,-1,23,7,6,20,-2,-3,-5,-12,-3,26,-27,-15,17,-22,-10,19,-10,-3,16,-10,-3,0,-7,-1,19,-16,-6,16,-12,-5,16,-7,-5,6,-6,-4,-9,-5,-4,8,-6,-2,9,1,-1,4,7,0,-6,9,5,-13,12,6,4,8,15,10,-22,-12,-15,-34,-20,-19,-14,-2,-3,9,0,7,13,18,21,3,21,22,-31,-11,-6,-24,-5,0,8,-10,-1,-12,-20,-13,8,13,13,16,28,24,5,21,22,3,-11,-5,1,-15,-11,18,6,0,3,1,-8,-1,2,6,-1,-5,-8,8,-5,-8,22,7,-6,6,-4,-13,-4,-12,-6,-12,-9,-10,-9,-9,-11,-6,-6,-9,-6,-7,-10,-6,-9,-10,-11,-8,-8,-9,-7,-7,-5,-3,-4,-5,-4,-4,-6,-5,-3,1,4,4,-1,3,3,1,4,4,-2,1,2,-2,1,5,-3,3,6,-5,1,4,-5,1,3,-4,0,3,-3,2,6,-9,-2,2,-6,1,3,-5,1,1,-5,0,2,-5,1,4,0,-4,-1,20,6,2,20,-2,-17,7,-1,-15,-10,4,-3,-12,-1,16,-1,-4,6,23,1,-7,22,0,-13,10,2,-2,-32,-10,14,-25,-13,11,16,3,6,25,0,-13,19,-1,-10,-27,-2,11,-41,-18,8,-1,0,11,17,-3,-12,26,0,-13,-6,10,10,-22,-1,16,-16,0,17,-3,-3,7,3,-11,-8,-19,14,-3,-12,13,2,-5,1,9,4,-1,-4,10,0,2,-20,18,2,-15,11,14,0,-6,11,20,-11,-17,17,-12,-13,-27,23,10,-18,15,25,4,-14,5,30,-16,-29,26,-13,-21,-33,21,14,-20,13,32,4,-19,2,32,-19,-29,22,-11,-18,-24,19,8,-11,12,22,5,-16,-3,25,-11,-16,7,-7,-11,-6,-3,-14,8,11,2,4,5,-2,9,-1,-1,17,-4,2,-10,-1,-9,-9,3,-4,-26,-13,-19,11,11,14,16,4,12,-11,2,-1,-19,-1,-5,-32,-12,-17,19,23,23,8,0,4,-16,-4,-5,-17,1,-3,-13,4,0,17,19,15,1,-8,-7,-16,-5,-5,-2,14,11,-3,10,6,10,7,3,-2,-11,-13}\n\n#define CONV1_BIAS {-49,-18,-7,-20,-12,-15,7,2,-10,-84,-72,-65,-53,-6,-87,-63,-64,-28,-28,-4,-3,-10,-52,-15,-5,-7,-31,-44,-102,-19,-5,-65}\n\n#define CONV2_WT {-3,-9,-16,-14,8,-17,-10,-9,-20,37,-11,-5,-21,9,-22,-10,-11,18,4,12,8,22,11,6,-14,-6,14,15,8,-15,-6,-10,-23,-32,-11,-11,34,29,-5,-14,-13,14,-31,-17,-12,8,-19,-9,11,12,-8,31,35,24,-35,7,16,-16,-6,20,3,0,9,-28,-36,-21,-12,-35,-6,-2,-10,23,10,-2,8,7,-16,26,-13,-15,-11,17,-3,16,15,-2,-23,-9,-23,-13,6,-21,7,-4,-40,-38,-24,-20,-3,-47,19,26,-3,4,21,-4,-4,9,1,24,14,-17,-26,-1,-12,38,19,13,-7,-18,49,1,1,-11,8,-7,-26,-8,-30,14,-28,-49,11,-15,-16,-8,39,1,6,-16,-23,35,4,-8,-7,-15,-15,33,14,8,-9,-2,42,27,4,15,0,-25,-13,-22,14,-10,-44,-35,-10,3,-16,14,-10,15,8,14,6,26,0,10,19,23,15,5,-8,12,-23,7,-18,14,8,19,-4,-9,4,-5,18,-31,-44,-35,9,7,-23,7,13,0,-15,-17,-2,25,-6,13,9,24,-12,26,16,35,-34,-14,19,10,-8,8,-8,16,14,-17,5,-21,4,-17,-20,6,7,43,26,-4,-2,-10,-1,30,-17,-9,-16,6,9,24,15,-21,-41,16,-4,34,11,-8,-6,-4,-39,-19,-3,-39,-21,-9,-5,-1,8,27,10,-21,-7,-3,-5,-10,-11,-11,-36,5,-14,12,6,25,-21,0,2,43,12,-13,3,-14,-36,-11,-10,-35,-37,-49,-7,-13,4,24,22,-16,-4,-16,-17,-18,-8,-13,-22,7,-30,34,6,23,-15,-22,26,3,-7,-5,-3,-20,-8,-22,21,-44,-34,3,-18,11,-27,15,15,4,25,12,-5,33,-4,-3,-5,26,-4,-8,-17,-1,-43,7,-17,13,2,-23,-23,-13,-21,-9,26,-46,-47,-5,-5,8,-34,2,28,-4,33,-23,-24,41,-15,-9,-15,5,-12,-17,6,-21,-20,-22,-6,8,-8,-22,-26,8,-1,-17,25,-28,6,-6,-35,15,-21,48,30,-5,24,-12,-48,70,-13,-12,-1,11,13,3,17,-4,-25,-9,-33,1,13,-18,-16,-15,4,-24,37,-26,11,-39,-17,8,-4,22,23,-7,21,-1,-31,44,-7,2,-37,-5,13,-16,1,2,-37,-20,-3,3,5,-14,-5,-32,-26,-2,10,16,20,-51,-9,12,4,13,9,-24,-19,13,-15,50,9,6,-16,-27,19,23,14,35,-12,-30,39,-18,2,2,-10,8,-17,29,9,-15,-12,14,-19,23,-7,-28,8,6,3,-15,-12,-26,20,-3,13,35,23,-25,-59,-32,10,36,-40,12,8,-8,15,-22,-20,1,-2,-54,-32,-14,-16,10,-30,-54,-3,0,-2,-10,-22,-10,5,-15,-5,26,23,-40,-60,-6,-12,9,-28,-21,4,-29,11,4,-28,8,4,-26,-17,-25,-44,30,-4,-24,18,4,13,-5,-23,15,22,-7,3,33,48,-28,-22,-20,-22,-3,-58,-2,32,5,22,2,-10,-20,-5,-23,15,-36,-28,42,-1,-41,12,1,18,6,-35,-4,14,1,-27,44,35,-36,-21,3,-21,-11,-50,-7,14,7,21,34,-24,1,-2,-12,3,-27,-8,54,1,-10,16,-24,-13,-27,-35,-10,7,-12,-5,21,-19,6,12,4,9,-42,-6,-16,7,-20,4,35,-9,63,-7,7,35,16,-10,49,13,-26,55,-28,17,-35,16,-40,17,4,19,32,-2,-20,-51,-21,5,38,-8,26,-2,-17,25,-6,0,21,-11,-20,8,-1,0,27,8,-38,14,-28,11,-44,3,-32,-19,-8,-25,15,-9,-16,-47,1,7,-10,-8,7,-4,1,20,-9,-34,16,-9,-26,22,-3,-15,49,11,5,21,-27,28,-31,15,54,10,-16,-21,-1,8,-2,-10,19,3,-1,-24,4,15,10,24,17,7,-13,-25,-27,26,-12,-3,9,-2,-5,34,-12,15,-23,-16,26,-2,-10,-1,-11,6,23,-21,15,6,20,-19,17,-2,-20,11,34,-8,16,-19,-3,38,-2,9,28,-9,11,21,-8,-22,-48,-15,-15,-13,-7,24,-7,-3,35,-9,18,-8,13,-1,27,-21,6,-10,36,41,32,11,12,-3,22,-10,13,-2,-16,7,-16,25,31,14,-11,6,7,6,7,-5,35,-22,3,37,18,54,-9,2,-17,-5,-6,2,-7,-1,2,21,8,5,14,8,-48,-18,-3,-3,7,-17,-11,7,23,-6,-21,-25,22,-26,21,-19,13,77,7,-29,-2,-12,1,23,-18,-4,-18,34,-1,2,19,53,6,3,9,5,4,-7,36,5,-6,-11,-18,-5,49,-15,9,15,-5,17,2,-14,12,8,42,59,-40,39,-9,7,-13,-3,-22,47,-9,-7,8,32,2,-27,0,-33,14,-10,-27,0,39,-15,23,-3,0,10,22,-7,-23,5,17,1,17,26,26,37,15,3,18,21,-20,3,-4,23,29,-7,-21,-32,34,-6,-2,42,22,-7,34,11,2,30,34,-4,-14,-7,10,14,4,6,-9,-9,37,-39,0,2,-14,21,-45,-5,28,-2,-6,8,0,16,37,-8,3,-25,30,57,15,-16,-28,-8,-17,4,-2,-45,1,-8,10,-18,1,19,-17,-11,-39,3,-27,-6,14,-19,-14,12,16,-25,-24,-41,-26,-11,57,20,-12,16,-3,-17,-1,-9,-3,-1,-5,-38,43,4,16,1,-14,38,-3,17,-5,-2,16,-16,17,26,-2,4,-17,-16,0,-10,47,25,9,22,13,-15,-16,14,13,-1,-17,-5,32,-13,5,5,-33,4,-34,9,12,10,18,-1,-27,-21,-1,1,7,11,-21,-13,4,6,12,46,24,-25,-4,-1,9,-25,18,-1,43,12,17,-15,0,-11,-22,-2,-3,-4,17,-30,3,-22,7,-12,22,34,-48,-22,-8,2,2,-6,18,-14,15,-5,16,-2,1,14,-22,-14,4,-42,-19,-30,11,16,10,-28,10,22,-7,5,-30,-14,46,29,-53,1,-37,29,2,-74,12,13,20,0,21,-40,-2,20,-10,-60,-16,-38,-4,-24,-13,0,-6,-12,-14,-1,-16,5,-20,-42,4,30,-110,-3,-6,5,-6,-85,-1,6,8,-12,-2,-49,1,-14,24,-17,11,-50,21,18,25,38,-22,-3,-16,-1,-15,24,-19,3,-16,39,-52,3,-24,3,27,-64,37,18,26,8,-4,-43,2,2,-14,-70,-15,-58,-6,-23,2,2,-8,-2,-4,15,-18,3,-27,-20,-21,3,-115,3,-33,31,14,-50,28,-13,20,8,-55,-51,34,19,-16,-42,17,-62,-9,-24,11,5,5,22,1,12,34,16,-19,-19,23,18,-103,-13,-34,29,12,-57,-2,3,17,0,-17,-25,8,9,-22,-36,-20,-34,15,-9,12,32,31,-18,17,-3,-23,-8,-8,-1,31,15,-37,-3,-29,24,1,-34,24,28,-7,11,21,-18,-21,18,-54,-68,-35,-63,-1,-19,-1,-16,8,-19,0,-19,-18,-2,-17,-39,16,3,-68,-21,-75,-17,-3,-80,-12,24,-46,4,-7,-45,-6,5,-26,4,-1,-44,39,20,18,4,-8,-2,12,-5,-16,12,-5,-17,15,6,-17,1,-75,-25,3,-51,12,46,24,19,-3,-31,1,23,-11,-58,-23,-88,8,-5,-24,-6,18,8,7,1,-27,21,-2,-32,11,-18,-88,2,-74,-6,-15,-52,-7,24,6,11,-36,-48,19,19,41,-13,3,-67,6,20,-13,31,33,5,-7,-4,4,20,11,-2,23,17,-43,-6,-49,-12,-15,24,19,34,42,8,-9,-27,-5,20,39,12,-17,-18,20,6,3,31,-11,-5,-26,26,16,-7,-5,-2,23,29,47,11,28,13,8,35,21,-7,21,3,50,1,-23,2,3,-10,-8,-36,-9,-25,-4,28,-23,-25,-17,-11,-1,2,-11,-2,-7,32,-5,1,-16,4,8,-12,-12,-5,3,1,-4,-19,-6,-28,5,17,-1,-2,19,9,32,17,-17,-18,13,-17,10,8,-5,1,-23,8,27,34,-42,-25,-8,-4,16,10,18,23,9,29,-5,3,6,-46,-26,-50,-37,-13,6,-27,6,1,-8,15,0,-7,5,-10,-18,4,-9,28,-14,-30,6,36,19,1,6,15,-35,-17,10,26,21,-1,15,6,-25,39,4,4,10,22,-26,23,-1,-1,13,16,9,-9,-2,21,7,2,22,56,25,28,36,19,4,26,9,-7,3,15,-6,-21,5,-14,28,-4,-44,8,-16,16,8,14,-18,25,-21,-5,13,-12,5,-2,4,-5,-13,27,-11,13,-13,-10,11,4,20,50,-10,11,12,1,42,-7,-5,-12,14,4,-4,3,-28,24,-14,14,0,-14,9,-1,-22,2,13,15,-17,21,3,-16,9,31,43,-36,12,8,-4,15,40,-6,29,12,14,-4,-5,-2,-37,38,-14,-5,-1,-23,-5,12,-21,-8,35,15,-4,21,-13,20,22,12,-22,-26,-13,-7,7,-26,17,-26,-11,3,-15,8,17,0,-15,-5,-16,4,-31,-3,-68,0,-22,-38,16,-3,2,21,-26,-45,10,15,-3,-25,-25,30,20,-20,15,22,-13,-5,10,-6,20,4,5,1,-12,-13,-12,-4,-2,19,-37,-17,0,17,11,15,-3,3,29,-7,-22,19,9,-11,5,19,24,-17,-51,23,-31,-19,22,4,-17,14,-30,-22,-20,-15,14,22,-23,5,-17,25,11,11,-2,-17,-6,3,4,32,14,3,13,19,12,-33,0,31,-13,0,3,-20,-30,0,16,11,-19,-33,-18,6,8,25,-2,13,-1,5,-18,-18,10,27,44,-11,22,2,-22,26,11,4,38,22,-9,11,-7,-31,-16,14,46,-2,-38,-24,-19,-3,30,24,59,-15,-20,-2,-29,43,2,0,-31,-21,-50,-27,-21,2,16,-5,-4,25,-12,-5,-15,-10,-10,-14,6,13,-55,-18,13,17,8,-43,31,-28,0,0,5,-37,-8,25,-25,-22,-61,-10,-14,25,18,38,-17,9,12,9,24,-21,-15,0,1,4,-15,-9,-18,34,-21,-8,14,-15,16,-18,25,-1,15,-15,-16,-14,5,18,-37,24,23,-17,-20,9,-22,-15,33,2,13,18,-7,-32,-2,-15,-14,3,-26,-3,1,10,-8,-24,12,37,-28,-12,52,-19,11,-6,-2,18,2,-6,14,0,-11,-4,-27,-10,18,7,33,10,-13,3,-22,7,-13,35,32,-5,-29,-18,-18,54,-16,-13,66,11,26,-9,4,14,-40,1,36,-16,14,-20,-58,-20,9,-17,26,2,-25,-10,-16,-16,14,24,74,-26,-11,-9,-27,99,13,-24,-29,-1,2,-4,-18,8,-11,21,-2,-3,6,-13,-6,18,-13,-14,-1,25,-49,0,12,-10,1,0,23,-19,-5,-17,-7,20,-13,-10,1,43,-12,-5,0,36,9,44,24,-1,29,10,30,-6,-3,-12,33,9,-14,9,30,17,-38,-12,23,-29,22,-33,5,12,-1,-27,17,-9,-9,5,-5,2,12,-5,14,9,-32,10,33,15,36,-2,23,-5,-19,-8,-18,-3,24,-14,7,25,3,-15,33,27,6,-32,13,13,7,-14,-2,-25,-40,4,7,-5,-17,-11,-30,27,17,21,18,-18,-12,4,-20,-4,10,-40,0,0,-53,-10,26,58,-13,-42,5,34,23,20,-3,-58,-98,-17,25,-17,1,-30,-74,-5,19,4,-19,-48,12,15,-22,-17,1,23,-43,-13,-32,-7,10,74,-7,-53,15,22,12,10,8,-87,-83,-1,9,-23,2,-40,-21,5,-12,19,-31,-12,-7,24,-20,-42,-23,-13,-65,-21,2,-10,-22,1,-34,-24,9,34,-10,-9,24,-70,-60,25,14,-7,7,-21,14,0,12,-25,7,-16,1,25,20,4,-18,-24,-51,-30,2,-14,6,6,-12,5,15,-9,-12,-26,31,-2,2,-7,-23,14,-30,25,-10,16,56,-6,2,9,10,-5,24,7,-16,20,41,18,-5,-8,9,1,10,-15,7,0,13,-32,-8,-23,-37,-7,-19,-7,-9,-3,-30,4,32,14,-12,-17,10,-2,2,11,-35,-4,7,2,-37,-5,4,30,-14,-52,25,41,1,11,-41,-48,-70,6,1,-31,-24,-35,-22,-22,0,8,-20,-24,22,25,23,-6,-15,33,-45,-11,-17,-1,7,27,10,-60,26,25,0,27,-34,-63,-63,4,-10,-17,-34,-35,6,-5,-14,20,7,-20,6,37,9,-25,-16,28,-32,-28,-15,-5,3,4,-48,-30,12,8,3,8,-24,-58,-65,1,-4,-9,-36,-8,3,2,67,-35,32,-13,10,36,38,6,-28,50,-25,-44,-9,-12,0,-11,-35,28,18,-7,-13,7,28,18,-13,6,6,7,0,-26,7,59,18,-2,22,6,-2,-80,33,6,-11,4,-5,-9,33,-2,-16,-20,-19,16,12,1,-36,-6,22,45,-3,-28,32,17,-7,-55,6,1,-5,12,-11,-15,21,-37,23,-14,-5,-4,2,-8,8,4,36,37,-53,-16,3,1,-11,-1,48,13,25,-22,23,0,-23,-49,17,-22,16,4,-8,1,4,-14,-23,4,16,-26,18,-21,12,1,7,-6,24,-6,30,-44,-25,-50,-11,-35,22,-37,-21,-6,8,-8,16,14,13,-9,-9,23,-50,-20,-55,7,1,-50,16,19,12,3,-16,-36,5,18,-4,7,15,1,17,1,17,-33,-16,-11,16,1,-16,20,3,-12,-23,11,-2,-17,33,13,3,-15,18,15,48,-6,-12,-27,10,-35,33,6,-7,5,10,14,-26,3,-15,23,-10,-27,-2,22,20,20,6,21,46,-44,8,-10,-14,38,-26,-34,22,-35,-14,-6,-33,-18,19,35,-1,42,14,46,-19,-1,22,10,-25,-37,16,-21,-2,23,-18,33,39,-9,58,-29,23,61,50,-24,11,-25,14,30,-47,-37,-6,-3,-19,18,9,2,10,-5,-20,5,-20,-18,17,-15,3,-3,0,27,23,25,13,1,34,8,40,-19,-15,-11,26,-15,-24,-15,-6,-54,-33,-41,-3,-36,-2,-25,-30,0,-3,-7,-1,-16,5,-7,17,-3,-49,-5,-65,14,-8,-49,14,25,-14,-4,-2,-52,-2,-4,-37,-22,14,-6,11,-21,14,-8,-21,6,3,-25,-1,-12,26,-5,12,-22,-9,5,-45,5,-7,-46,19,26,14,-17,-9,-48,3,-51,33,25,-8,52,-32,21,2,5,0,5,-4,-8,-7,-17,-14,-13,-14,29,28,-25,39,8,-16,30,11,-11,-23,6,8,18,5,-17,22,25,3,47,18,30,18,-8,-12,-6,-28,1,8,-22,-7,-22,6,33,9,22,48,-17,30,74,9,-20,-38,5,3,46,-2,-14,-24,-25,-7,8,-2,-13,31,-22,-33,-3,-12,-3,-32,-10,9,-17,6,38,8,28,-7,26,8,-10,-9,-28,-43,21,28,-4,-22,18,-26,-58,-29,-35,-7,-36,-4,-21,-17,-12,-2,12,25,-10,-1,-8,11,19,-46,17,-60,10,-29,-67,-33,16,-20,19,-14,-56,-6,28,-43,-18,11,-19,7,-20,-3,-16,-33,0,-9,22,36,-4,25,-2,11,27,-24,27,-43,-14,-27,-31,-3,11,-8,8,-16,-47,-2,-26,-17,-4,-22,-9,-17,16,-3,2,5,-15,-19,3,-24,-34,-21,-30,-28,25,-17,-35,-14,2,11,-3,22,7,-8,15,-38,-22,14,-7,-12,-8,-12,6,15,38,14,26,-5,-16,-15,14,-2,-39,-12,-25,-10,13,-48,12,-17,-1,3,22,-18,5,5,12,-34,0,-2,0,-21,-33,15,-6,-29,-6,14,2,-7,-13,-6,0,5,-17,-6,4,1,11,-11,20,-28,25,7,-36,3,5,-4,14,2,-27,-9,35,-16,-52,-24,-25,-16,-42,-20,-5,6,-10,-14,15,-2,-12,-3,0,-7,7,-31,-3,-47,13,-18,-51,-3,31,-15,13,-13,-49,1,38,-20,-20,-22,-22,14,-36,-2,-5,-6,5,-40,25,16,-9,1,6,1,18,-33,22,-29,-8,-19,-38,6,18,-4,11,-9,-57,13,-5,10,26,10,-5,-48,-13,-11,26,23,-34,-16,7,-2,-28,-22,17,13,-16,36,-10,13,-2,-22,48,29,10,-24,-25,-31,-26,-7,-11,6,11,35,28,-15,-1,19,48,17,-9,-21,31,3,-40,-19,11,11,-4,9,20,-21,-8,-5,23,16,6,4,-16,-22,-4,-2,-14,-30,-46,24,11,-23,-29,11,36,7,4,-9,-4,13,-29,-14,6,8,24,27,1,-9,17,10,-12,25,9,-3,-4,6,-26,16,15,-3,-41,-15,-11,-21,-32,-5,-2,19,1,-6,3,16,-16,-13,-4,9,6,-17,-3,-40,-4,10,-25,-27,37,-9,8,13,-53,3,18,-22,-9,-42,-26,-11,-28,21,-16,6,2,-26,14,5,-14,-18,-8,-6,7,-35,18,-21,-15,13,-30,-3,23,2,4,-3,-56,26,-29,-17,-2,13,10,-55,-25,-44,-63,21,9,5,24,-32,-46,-23,-24,-24,-7,-41,2,-26,8,-23,6,17,-8,17,7,15,14,30,-9,-27,-15,43,31,7,-7,-30,-1,3,1,-14,-6,-12,-28,-26,5,4,1,20,25,-41,5,-5,-21,2,-12,8,7,-21,38,10,-1,-17,-6,47,22,-2,16,-27,14,-36,10,-13,-6,10,-2,-27,24,42,-9,20,2,-23,14,7,-16,31,-11,0,15,4,46,26,19,-10,-15,21,-21,-7,17,-32,1,8,-1,-29,2,-14,-30,-10,28,25,-10,8,-24,-34,5,3,-15,11,-25,11,10,9,-13,-1,1,-9,5,10,13,26,58,-14,23,-13,-13,-13,-26,-26,-6,-30,24,-12,-1,23,-29,4,7,-12,23,14,-20,41,5,27,-12,15,-10,6,0,-2,16,-24,-21,3,-21,9,-14,-38,9,-11,-3,-3,-12,0,23,0,-4,4,20,15,18,15,-26,21,3,-10,-8,40,19,-23,-1,10,21,7,4,-18,6,-2,-27,-32,-19,-9,-16,8,2,-32,16,34,20,5,17,10,14,-18,-40,15,-5,-15,45,-11,25,3,26,27,41,21,6,-22,23,-32,0,31,-22,2,15,-16,1,-30,-6,23,13,-2,28,18,17,19,-15,8,4,-9,64,48,64,-10,-16,13,-5,-7,-12,-10,-6,5,-9,20,-32,-32,15,-25,26,-15,-18,14,-13,-26,24,-5,25,4,-14,18,3,9,26,17,38,19,-25,38,-17,-23,-2,0,-15,-18,-2,-20,-14,-6,-11,-27,20,-11,-6,11,-41,-21,-4,-8,25,-2,-17,-42,-13,-1,-15,7,5,19,8,13,39,40,-10,17,-33,2,-10,-10,0,1,22,-16,31,52,1,-7,-9,41,2,19,5,-23,-8,-19,17,5,15,36,55,9,2,-4,12,25,14,-3,-14,14,-16,-8,1,48,4,7,7,18,12,4,19,23,-51,17,18,15,-25,30,9,-10,44,-14,60,-2,5,3,22,43,16,9,-13,15,32,20,-24,11,3,-2,-27,8,6,-18,20,-4,-23,-1,27,47,3,20,6,-15,53,50,75,-9,15,-14,0,31,2,10,-13,23,15,18,-22,-19,4,9,8,18,-14,9,-1,-28,-3,-19,-13,20,23,32,2,-7,-12,20,10,32,-10,48,-8,-6,6,18,-34,17,22,16,23,-17,-20,12,7,18,-12,9,-45,-11,-30,2,13,2,22,10,0,-29,-31,28,-7,-13,-25,9,9,53,13,17,-38,17,-26,-17,-26,23,27,-9,14,12,-23,-28,-3,24,-9,-20,-11,0,2,17,-2,-13,7,31,25,-9,-42,-37,-27,7,14,17,-27,28,-27,-13,-2,7,-2,-20,3,-19,-3,-17,6,-62,-44,-8,-40,14,-12,-3,-9,-20,-1,-36,58,-3,-29,-17,-33,4,-25,23,-36,37,-1,18,10,18,-3,-7,-22,-11,-27,-50,15,-60,-10,25,-37,17,8,4,2,-29,-9,-10,57,13,-21,-12,-40,17,-13,11,-49,2,-9,-1,6,-6,-6,8,6,14,-33,-28,-14,-61,9,11,-18,18,36,-25,-1,-28,-32,-28,-10,42,-13,36,-8,26,-14,33,-62,-24,-12,-22,8,3,-22,13,11,19,-55,15,-30,-75,-11,7,43,-17,34,16,-10,-21,14,8,-8,10,-14,-12,-24,60,-1,5,11,-7,-4,17,16,46,30,0,-15,49,32,-9,-27,5,-21,17,-9,19,-23,28,-5,35,-5,-1,24,-27,-53,10,-21,41,13,8,-16,-3,-22,31,9,25,34,-10,-8,36,15,12,-9,-29,-20,9,-33,14,-31,-9,0,-19,-8,-9,30,15,-16,-10,-34,21,-51,19,-48,22,-1,23,20,5,24,-6,12,29,2,-24,4,-50,-26,0,-9,34,-15,1,-2,-12,-45,-15,26,20,24,-6,-44,34,-4,14,-71,28,17,10,17,6,2,6,24,12,5,-12,-25,-39,-4,21,-1,10,19,-11,-4,-7,-21,-6,-15,25,26,34,32,57,3,17,-54,6,11,13,4,-10,-12,24,19,-5,-5,39,-37,-59,4,35,-10,-21,34,-11,-7,-48,45,17,-17,27,10,-19,-17,-10,-19,-11,-1,-37,21,-24,-15,6,4,32,-14,-6,-14,4,-18,10,27,5,-18,14,22,6,-13,-12,-41,-1,-27,18,33,-25,10,10,-1,3,-16,-24,12,-3,-7,-7,-6,11,-27,-22,-8,-4,-3,-8,-5,13,-10,18,-9,-2,-20,11,-11,19,-6,20,54,-10,13,32,1,-21,-10,-8,17,-26,-4,-12,35,7,-14,-23,-10,11,-13,1,-8,-15,12,-3,-7,-3,-3,24,21,14,9,-21,12,2,37,-31,-3,3,4,2,-7,-20,23,-16,49,2,-9,-8,-16,3,-26,14,-14,-21,-18,-17,-17,26,8,14,0,-4,30,-8,22,13,-2,-24,-16,-6,3,10,-9,-23,-3,-23,27,3,-19,-6,-41,-9,-4,-13,-17,-25,-40,-45,-16,-1,17,6,-22,15,-25,37,12,-3,-5,25,-11,-1,23,0,42,-8,0,4,-1,43,-6,46,16,-21,-1,-7,17,8,21,39,-5,0,0,20,-42,10,-26,13,20,-19,-13,22,9,20,6,3,13,-1,-14,-20,-7,10,-13,19,9,-18,2,-5,-27,-3,-15,14,1,10,-20,37,-31,18,-3,6,58,7,-12,19,6,-2,-26,27,18,1,-7,-21,6,32,-5,-13,-8,4,-15,-1,-32,8,27,-41,11,-9,-18,32,-11,-37,6,-8,9,36,11,-30,4,-1,-4,-3,-21,-13,-6,-7,-20,-17,3,-13,2,-11,-18,-16,2,32,-4,-38,-2,-11,-1,-5,-8,-24,14,0,-9,21,-9,-13,-8,8,5,11,-50,-21,-19,-19,-25,-36,-11,-16,-1,-19,5,-40,-8,3,-9,-51,-8,-24,8,-26,-13,3,-13,36,-14,18,-5,36,-52,1,45,15,0,-30,32,-21,24,13,-2,10,12,-52,19,-40,6,-51,-46,44,-47,-19,33,23,-37,7,-11,34,30,11,-17,19,-35,11,6,31,-14,-23,17,-21,10,16,12,-16,-28,-24,17,-32,-11,-30,-12,22,-28,-16,17,28,-17,7,3,-11,108,32,1,18,3,-6,-43,30,-1,7,0,-10,-22,33,6,2,-24,-7,-10,-44,-18,37,21,-26,4,12,7,7,-31,-17,-3,17,34,27,-17,-21,3,-2,-35,1,4,13,11,7,-49,-11,5,13,12,-17,-30,-34,8,22,19,-31,6,12,-10,-29,14,3,-6,15,22,33,-15,-14,0,14,-15,-6,-12,15,-39,36,-52,-35,0,-13,47,-38,3,-26,-29,47,28,4,0,8,-24,-17,9,9,-3,17,-28,10,-29,-11,-49,13,24,22,-16,-10,33,-11,0,-8,-28,-17,16,-51,18,-45,-18,-7,-34,16,-30,-25,47,-26,-27,-2,-10,24,18,41,-12,-38,-27,10,-20,33,-1,-23,29,-22,-6,-1,5,-9,-24,-25,0,-44,-20,29,42,1,-18,-29,28,-12,-9,-11,-6,-17,49,45,2,-23,25,-18,-41,-2,14,0,0,-12,-31,21,11,-11,-42,-26,-36,-36,-3,46,15,-8,-8,-24,18,-26,-5,-20,-5,-27,23,27,-17,-21,16,-20,-25,-26,28,-3,13,-9,-37,-10,8,6,-11,-10,-41,5,15,36,38,-21,18,-3,-21,-22,19,48,4,0,-4,7,-9,17,25,4,-27,-18,28,12,-22,49,-30,-19,15,6,7,-25,13,0,0,1,18,6,35,-10,-40,8,26,42,-21,-8,-18,50,-23,1,-37,35,14,6,-29,13,22,-30,8,-13,-5,-8,2,-9,-9,-14,-23,36,-4,25,-36,-15,21,-34,-30,-11,-28,7,9,78,-15,-22,-7,3,-9,-1,-6,-8,16,-15,3,-7,51,4,0,-13,-34,-35,5,32,24,-7,-21,-16,6,-9,-5,-22,-4,4,6,42,-9,-30,29,-39,-9,-7,14,-23,-42,-6,-20,-15,25,-5,-19,-19,-33,-21,-32,8,0,8,-13,-10,5,-25,26,-51,19,8,-5,-12,-14,-25,26,-33,-12,-33,24,-35,-29,8,-22,-34,-9,0,-16,-22,-25,1,33,0,34,16,4,-10,-2,1,32,33,23,-16,14,32,0,25,42,18,0,-14,32,4,-10,33,-14,-15,12,-14,25,10,30,-6,35,11,36,27,17,4,-8,3,40,44,14,-3,-8,36,-16,-3,-2,-11,11,36,-5,2,7,-39,-27,-28,8,-26,-14,4,-8,-22,-26,-6,-21,15,-2,0,-5,49,-2,31,10,-50,-4,-2,24,9,2,6,-11,12,-12,-16,22,-35,-16,-26,22,-20,-20,25,13,-5,25,-20,-45,-25,13,17,-15,33,-11,20,7,-59,5,-17,17,6,-11,1,-8,2,-25,-10,26,-27,-7,-14,-5,-10,-15,-11,-2,-41,8,-13,-55,-38,28,44,-23,12,-28,-8,13,-14,-27,6,-19,3,-14,-9,-18,28,-26,-16,23,-24,-31,-9,-10,-6,-16,-26,4,-45,10,-12,-38,-31,19,4,-26,-1,-9,5,-8,16,-4,37,20,21,10,-7,-14,27,-27,-32,37,-30,0,23,-24,-16,2,15,9,16,1,-17,-16,-4,4,26,-29,13,23,32,16,-5,-10,27,-5,-17,-12,-2,22,16,-3,21,30,1,0,-18,4,-5,-23,-13,8,-22,-15,-35,8,-25,5,8,7,27,-28,9,22,-16,-34,25,3,11,7,0,30,25,7,1,27,2,-17,6,1,10,-12,-20,18,-40,12,-21,-37,-20,12,8,1,21,-20,-12,-1,-47,-59,-23,-6,32,-2,-11,15,4,-15,0,-16,-11,4,6,-9,11,-7,-5,4,-95,10,4,-77,-6,4,16,-8,-15,-50,-28,1,-6,-61,-17,-40,8,-13,-14,-18,12,-2,-4,-28,-13,-16,-6,-12,-6,4,-28,0,-91,4,18,-65,-13,6,-8,-5,-2,-43,-10,0,-2,-20,28,6,11,-11,3,-13,-10,-8,1,-5,-2,11,69,-13,-1,10,6,9,-23,10,8,-23,13,4,-1,-1,17,9,29,8,38,5,-20,2,-18,-32,-12,6,-7,6,3,-31,-27,1,-14,10,-46,3,-6,-6,34,6,-2,2,3,-16,6,7,13,11,30,-1,-5,7,2,32,20,-10,-15,14,-11,28,-30,0,23,-9,-2,11,1,11,-1,16,24,0,-22,14,-7,-18,-8,13,4,47,8,1,-11,-14,-29,-21,34,2,-28,7,-37,40,2,6,58,-9,8,-31,11,26,-37,-2,-24,-7,7,-31,31,-13,-10,7,-21,-19,-17,-14,2,-24,-44,-28,0,-17,-32,0,11,33,-2,-32,24,-13,-2,-16,9,5,-8,-7,-55,-12,18,-10,33,-13,-24,13,0,-21,-11,21,39,10,16,10,1,28,-11,-6,0,0,2,-16,-26,20,60,-18,13,23,8,-11,3,-2,-4,48,29,-9,-12,14,6,36,-17,-11,2,-3,-1,-11,-26,-7,18,-23,-7,9,-21,11,-28,36,16,-3,7,-13,-1,-19,-20,-9,36,34,-18,-21,-7,-5,-4,28,14,-17,24,-9,21,13,-6,19,34,23,19,8,-44,9,23,8,-4,6,33,9,52,8,13,14,35,26,-31,-25,0,19,-8,33,-19,-13,-7,-9,13,23,50,26,42,11,14,46,8,18,37,0,-6,9,65,42,10,31,-24,-10,49,-7,25,1,46,10,1,-11,-9,-7,13,-35,-30,2,39,9,27,25,18,21,5,-18,-10,35,-27,-15,60,39,17,6,11,-36,34,-43,24,4,1,18,2,-16,15,33,15,40,16,33,23,37,18,28,7,7,5,8,-21,37,20,2,22,19,62,0,40,-22,1,15,-3,-14,-14,11,3,36,-18,-8,7,-57,9,36,-11,-22,-17,-16,38,-19,-10,5,-32,16,-1,3,-13,-53,36,-19,-5,0,8,54,-13,-34,-38,8,-34,-7,40,-30,-36,-19,-23,7,13,10,-2,-27,25,4,5,-34,17,-4,-14,5,-13,-4,44,-9,-22,4,26,15,-20,-23,-30,10,-22,11,-11,-23,-10,-13,3,50,41,-1,8,-1,-4,28,19,0,21,-14,10,44,-6,12,33,26,-34,-13,36,36,9,-2,-3,-4,3,-27,-27,-19,9,-30,-41,-9,29,-5,-7,10,-5,6,15,-32,18,-14,-2,-3,16,-13,1,5,-29,9,28,-24,2,14,-26,1,16,-62,6,-15,-5,7,-56,24,40,25,16,2,-20,-25,4,-7,1,-8,4,-16,17,-20,44,1,64,-35,2,-3,5,0,-26,-9,-12,1,-2,18,-15,8,9,-24,15,11,10,-27,3,14,-9,8,-25,-16,4,6,-4,23,-19,-11,-6,11,-18,-6,16,36,-15,-10,-3,11,-3,5,1,-2,3,-9,32,18,21,-6,11,-6,0,17,-27,30,-21,5,-11,-7,2,-3,11,-22,-2,27,-13,28,37,-17,-20,-10,2,9,0,-17,17,-4,3,-25,1,-13,3,-8,4,20,-53,16,17,-7,1,-9,17,-33,7,23,-9,10,-18,11,5,-10,-2,2,0,15,13,11,5,0,-22,-23,-17,-9,-8,-1,-10,-11,-32,-8,25,-4,10,-23,-5,-9,-5,27,-6,28,7,-2,-40,-8,-10,9,-1,-4,6,44,20,-10,-20,-4,7,9,39,30,-17,-16,-15,-11,27,-17,0,27,-17,-11,-22,7,10,21,14,-1,10,10,7,34,-15,-11,-5,0,-10,2,-26,8,14,-16,3,1,25,11,-25,-9,16,5,-20,31,16,9,29,1,14,-5,-46,25,-33,-2,-18,-1,-6,1,-18,-13,32,3,-9,3,51,-18,4,-8,1,-5,-46,-13,-8,21,-9,-2,30,-1,-44,-22,-5,-40,-19,8,-16,-3,6,-10,29,-1,2,-31,15,-2,-25,-26,6,-31,-11,6,-14,-1,-37,-4,25,-10,-9,-27,11,-18,-21,15,6,45,4,-6,-38,-12,-16,7,-19,-15,31,-22,-12,13,-30,-10,-28,-6,-12,5,-36,-45,-12,6,28,-42,-8,-11,11,3,-24,5,19,99,29,-22,-13,-8,2,-6,-24,-3,15,17,-9,-2,-2,-12,15,16,19,-7,-15,-14,-18,11,21,-31,-10,12,-6,17,28,4,-14,34,4,-8,5,-3,-5,-12,-11,-13,-25,5,-9,16,-7,-2,17,2,21,14,27,-12,38,-40,17,-16,-1,12,9,-4,57,21,-6,-30,-5,27,-6,1,3,11,-24,-33,22,-33,-2,20,-10,-2,46,5,2,33,22,-1,-43,-21,-20,-11,7,-12,9,-1,-19,45,26,-1,5,11,-15,-6,-9,22,-10,-15,52,34,12,16,-7,-47,-34,-6,-10,4,-4,-22,-60,14,-5,-27,10,-31,6,-7,-28,32,26,127,55,-12,-9,-17,-13,30,-35,-13,70,47,9,-1,0,-22,-48,-9,18,-11,-14,-51,-14,19,9,-36,2,-2,8,6,-55,-1,-2,110,17,-28,-30,-14,-6,-8,-13,-1,16,11,25,23,9,-15,4,4,24,2,22,-22,5,10,29,-1,-7,-8,17,14,-16,2,-4,20,-7,9,-9,5,-5,-13,-11,-22,-11,-20,-6,6,-19,-19,-48,10,34,4,11,13,35,-34,16,4,-15,22,-23,-26,65,5,-6,24,-19,7,-26,17,-18,33,-8,-26,18,13,-16,-6,1,-29,-49,0,12,8,-22,-26,-5,2,-8,-28,4,-2,-2,-19,1,6,0,25,25,-8,-33,-3,-18,-2,-29,-35,72,53,47,-17,-8,-35,-68,-8,-15,-31,-21,-32,-38,3,-14,-12,4,-29,-28,4,-56,24,7,95,19,-36,-57,3,-27,8,-8,-20,68,-4,59,-25,-19,-22,-16,-26,-24,-20,13,-13,-14,1,-4,9,-33,-27,-26,8,-94,-29,-30,23,11,-7,-45,5,-27,-2,-13,6,26,-16,12,-9,-20,-6,37,-60,20,6,7,9,-39,-16,-4,2,9,-21,-5,-12,-52,-31,-37,-18,2,20,-31,0,-22,-15,-23,-50,33,25,41,0,-32,-33,-93,-11,1,-33,0,-34,-12,3,6,2,14,-21,-42,-41,9,-1,33,21,19,22,-24,11,-8,3,10,-33,-7,34,35,4,17,-13,-58,-16,-23,9,0,-30,4,17,15,5,-27,-20,-4,0,-7,-24,37,18,-12,7,-63,9,6,-1,-46,-41,-5,35,-3,14,2,-5,14,-11,-4,21,28,26,12,-2,4,17,-38,-23,-12,-11,19,-18,-1,-9,-11,-23,2,0,3,-35,1,-33,-2,-9,15,-46,15,2,48,12,6,5,19,32,19,-11,-19,25,4,-21,-14,9,17,-27,-5,-11,24,-4,4,-16,11,2,24,-4,24,-3,3,-9,3,25,61,12,33,42,-13,8,-14,-6,-7,10,11,9,-20,-9,-18,-4,-8,-8,54,23,12,-8,-16,-23,-6,-32,31,4,-30,-38,-11,-38,3,-21,-16,6,24,0,0,20,2,-17,-13,-52,0,2,2,-14,-19,-6,-29,0,-13,-5,-16,29,16,-11,-10,-9,-16,-40,-11,-16,17,0,-7,19,-15,1,17,14,-23,-35,-4,-56,-6,9,60,-18,-26,-32,-27,-14,10,-4,-6,2,1,-4,-31,19,-7,-2,-6,7,28,57,19,16,-7,22,31,11,-15,21,-21,3,9,28,76,-40,8,-44,-22,-37,21,0,26,-20,-22,1,-17,53,-15,6,-19,29,21,31,15,2,6,4,-21,8,-7,-25,-19,6,-3,21,16,-18,3,-13,-21,-27,-24,19,43,4,-13,3,-20,23,-5,21,-14,8,-2,16,-12,-19,-11,0,-24,18,-18,-23,-7,-5,-14,20,25,-20,1,21,1,1,-15,7,2,20,-15,-36,31,-13,-29,-14,21,-40,-10,-34,12,-16,-23,7,-26,7,-1,-24,0,-43,2,17,33,-7,-10,11,6,7,18,10,-26,-17,9,-31,16,-19,-47,-31,11,-26,-2,-8,13,-25,-17,-8,-8,19,-24,-35,-16,-8,-10,1,16,-27,-17,-4,14,1,24,0,-21,-46,-11,-30,-29,5,-31,-7,37,10,33,11,-3,-10,10,-27,34,4,-17,1,-23,-12,-22,-4,55,-14,-12,23,-14,-18,-16,-2,-2,-51,3,-29,-29,30,-14,-12,-16,0,29,-3,-2,-8,-16,-6,29,5,5,-17,-19,-19,-7,-8,31,-14,-13,40,-21,-19,-33,4,20,-18,11,-18,30,18,-18,12,-13,0,9,8,-14,-29,-25,-14,-15,35,-16,-31,-23,-18,-2,14,12,-9,-18,31,-18,-4,10,0,21,24,-16,-38,16,-45,-30,-49,-19,-16,-35,-36,16,-2,-3,-3,-28,-23,3,-27,-7,-9,-11,-15,14,6,54,-2,15,39,3,7,-30,-17,-15,-40,24,-23,-28,-44,-28,-18,-20,-34,17,-21,-3,-16,-28,-29,-4,-26,6,-6,-40,-18,12,-29,24,-5,15,47,33,0,-31,-53,-33,-53,31,-17,-28,-26,-9,9,0,-17,4,-21,18,-46,21,-22,-2,0,11,8,-29,-17,21,-30,37,-5,20,56,54,-2,-19,-14,-10,-45,5,-2,-29,-32,-19,16,23,-22,-35,-29,-1,-6,31,-5,-3,2,-6,-11,-24,-32,39,-11,25,29,43,46,4,-6,23,12,24,-34,39,15,9,15,-6,0,14,2,-13,-23,-10,6,31,5,1,-7,-5,-28,-6,-22,-23,4,-6,42,28,5,13,-12,-30,-4,-18,-29,53,-36,-2,-34,0,-24,-31,-36,27,-8,11,-17,-17,-18,23,-17,-36,-21,-23,-12,26,-5,-7,21,18,28,-11,7,-48,-23,-21,-28,51,-15,-12,-36,3,-24,-5,-28,27,5,-3,-6,-3,-20,9,-9,-6,-13,-32,-23,-7,-24,24,3,37,34,-17,4,-47,-24,-24,-34,28,-28,9,-38,17,-12,10,-26,9,6,-24,-27,16,-33,7,14,9,-2,12,-13,-15,-34,24,42,24,40,-18,9,-37,2,-21,-11,31,-14,9,-34,-8,-16,22,-36,7,3,-17,-4,12,-8,-10,-8,-7,-9,10,8,10,-5,14,21,40,28,-1,1,-28,18,-10,1,-5,14,40,-5,7,-14,27,-37,11,6,-2,-5,-14,-2,8,-3,-23,4,-12,-6,13,-41,13,28,0,-19,-6,-18,-33,-19,-24,-27,71,-11,23,-43,16,-9,-28,-54,33,-17,26,-11,-10,-21,0,1,-14,-20,8,-14,-20,-36,50,49,0,31,-1,3,-22,20,6,-21,26,-24,18,-49,11,-13,-4,-53,-6,-5,13,-21,19,-7,-15,-2,-25,-21,-19,-17,-21,-26,62,26,-10,40,-32,-6,-49,23,-22,-34,16,-15,25,-35,21,-7,11,-24,-3,-10,-4,-26,61,-16,-8,-19,-18,13,13,-13,-24,-35,59,21,40,53,-25,-5,-54,0,-4,-7,-14,-31,39,-18,-3,-13,18,3,23,12,-16,-9,31,12,22,-25,6,2,4,10,-11,-32,50,53,54,42,-49,-7,-39,26,-12,-2,6,-8,49,-14,-6,-8,20,-1,28,31,-9,11,2,5,55,-4,20,11,1,-1,-50,-24,71,3,36,4,-55,-6,-9,-7,-24,11,23,0,25,24,-16,-67,2,-27,-2,3,-58,21,-33,6,28,-47,-26,-2,-13,-21,-20,-22,-8,3,-19,-20,31,-32,-13,16,4,-9,10,28,-43,19,21,-47,-33,-40,-14,12,-27,10,2,-8,-6,-35,54,8,-21,-8,5,28,-6,61,44,-16,-46,18,9,27,10,-3,11,-28,-6,-32,-9,-66,-13,-25,-21,2,-28,-10,14,4,18,-11,32,14,-35,5,23,2,-5,-12,-13,-21,-1,21,-38,-26,-2,-10,20,-24,8,-1,-10,-63,3,19,-10,-19,-13,-17,42,10,10,-25,7,-37,0,40,57,-16,-18,-24,-5,-28,40,9,-26,-8,-10,-19,27,-3,12,13,-38,-42,20,9,24,-30,-13,15,-24,6,36,-20,-5,-24,-5,-25,-7,1,-31,-2,17,-25,20,4,10,-22,-23,26,-15,-23,15,7,5,-12,28,-29,-13,-33,10,-13,-17,30,16,21,-83,-4,11,-1,-12,-6,10,6,-34,12,50,-17,0,12,-17,-10,-11,-35,58,7,22,42,-42,-43,-3,9,21,15,27,-42,-2,5,25,-1,2,-5,-1,24,32,70,60,10,-26,28,6,37,-6,-10,-13,-2,22,-8,5,26,-38,-34,-12,-15,-38,66,70,-32,-19,2,83,5,-26,-21,2,16,15,6,30,2,9,26,60,-9,2,-10,7,41,-20,-21,12,13,9,52,12,-9,-21,-24,-9,-3,-5,23,11,-22,3,1,92,1,-8,-25,28,-11,31,5,49,-16,-4,-22,-1,36,-17,0,-13,13,37,30,29,-11,7,-29,-20,11,1,8,-41,-11,-15,-14,-16,-17,-7,-11,-25,0,-25,4,4,12,-5,30,13,-20,-21,21,-23,-21,34,-15,20,-64,2,19,-12,20,17,13,-77,-17,-27,-13,-5,22,-20,-32,-42,11,-18,-17,-2,3,6,-13,-21,-7,48,-8,6,23,-44,16,-15,-19,-5,1,10,-22,-14,-15,-1,-1,18,-18,15,1,11,0,11,-21,15,18,2,25,24,-46,40,-2,33,54,-2,25,-71,22,-38,-34,15,-18,60,-16,-9,-30,58,-16,8,-14,53,8,-20,56,88,-30,-3,11,94,7,-6,-34,24,22,-21,15,-19,10,-18,4,-23,-4,-9,-38,31,-15,-16,-1,-2,-2,11,-9,27,22,-27,23,82,-40,18,-8,73,-22,-34,-16,-1,44,-20,-6,-24,-4,39,7,14,-17,-6,-9,-11,41,-13,12,-68,-26,-1,-1,0,-21,-41,14,-14,-11,-39,-8,-3,-6,-6,14,-24,-5,-17,-11,-24,9,22,-10,16,-1,8,30,-15,7,22,21,-55,-12,-34,-9,15,-2,-27,-49,-24,24,-9,-25,14,-7,24,-8,2,15,30,11,-11,21,-29,12,-21,21,-11,22,13,2,-6,-5,-23,-1,-19,-13,37,-33,-30,-27,-21,7,18,7,32,-10,-21,-24,4,10,4,20,19,-2,-53,49,-30,-10,-14,14,-12,-28,17,-10,13,-32,-44,-1,26,-6,35,22,0,-3,-1,10,28,23,-37,-31,43,-3,14,20,16,17,-18,16,-6,0,-22,-36,5,9,22,18,-6,6,-15,-1,-27,6,6,24,-4,-13,-27,-13,17,1,-28,-28,19,-16,-9,-22,-16,10,13,-2,-8,-15,-29,30,-27,21,-9,16,-46,5,-20,0,-18,-13,8,-3,6,-3,12,-3,-1,-33,12,2,-9,27,7,-16,-19,-27,10,-17,14,14,-10,-28,-63,20,-24,10,-13,-20,1,-10,32,21,-2,-43,-22,15,15,-18,6,4,35,-7,-27,30,-3,4,-30,11,-11,3,-13,59,-26,-24,-6,6,-22,18,-1,-5,-9,-32,35,30,18,-35,-18,21,-10,7,21,8,8,-8,16,19,-26,-43,-9,-8,-19,29,7,13,-34,-22,15,6,16,-30,20,16,-30,-36,-17,41,16,-20,-14,6,-17,6,27,21,-23,-10,34,15,26,5,18,9,-18,11,17,-9,-40,9,-17,-3,20,6,2,34,-13,4,4,-5,22,5,13,10,-35,0,-4,13,18,-21,31,-36,14,-5,-6,6,12,5,-4,-19,-25,34,-36,17,-19,29,-42,-14,-16,-2,-1,-6,9,4,-8,-2,-13,10,-16,25,-4,-10,10,2,10,21,-13,-5,-1,15,28,23,-21,-6,-36,-13,11,19,-20,10,-13,-36,-12,26,19,14,22,-11,60,-3,26,-7,7,17,32,-12,-30,-26,32,-11,39,-3,42,1,-18,22,1,-6,-28,-6,-3,2,-25,-2,1,5,5,1,12,-1,21,14,-30,1,-15,34,2,-7,-6,-46,-24,16,3,-3,4,16,-38,37,1,35,2,-35,26,-7,-24,-38,19,25,-8,-13,5,7,34,14,-17,4,-31,49,-27,16,-6,3,0,21,24,9,21,5,-16,-1,-13,2,11,9,-14,-3,6,-37,19,10,2,1,-11,10,25,-8,8,11,-29,35,-9,4,-3,12,10,15,35,1,2,3,-3,11,20,-18,-18,19,-48,4,21,-22,11,4,-4,3,1,18,-32,-13,-4,6,-21,1,7,-42,-9,-18,9,-32,-16,-42,-26,20,-28,-18,-31,-18,9,14,-16,25,-19,-16,-42,-3,-28,36,11,28,14,-17,-5,0,4,23,20,-12,-1,-19,-10,-32,12,-13,-22,34,40,22,-5,-16,-12,-12,-8,2,-22,0,15,-11,10,44,-12,22,-20,-1,12,-9,-14,3,1,0,39,-46,-19,-7,8,-22,-39,32,26,29,-43,11,1,-33,6,-18,-9,-22,27,33,-11,-21,-24,34,-17,-8,57,5,0,9,-7,24,-13,-14,-4,4,21,-53,-14,17,-29,8,-39,0,-3,10,-37,5,5,-9,11,-13,-3,2,-24,34,-22,-23,-11,-17,-5,42,1,16,19,21,8,6,21,-39,-12,-17,-30,13,38,18,-8,0,-24,11,-21,-34,24,-22,23,-13,-1,27,28,-12,12,38,-14,-9,9,-48,6,-4,14,-4,-26,-20,-4,-16,5,-60,-16,-17,39,-2,14,-6,29,-7,-21,-18,13,33,-10,7,-11,-7,6,0,7,-16,40,14,7,40,17,4,8,-8,-21,-42,26,5,-2,1,3,-9,-1,-53,50,-2,38,23,8,85,-15,1,-16,2,-5,12,-49,14,-8,11,35,18,-13,42,37,-5,-23,1,21,1,16,45,-39,-32,2,-1,39,-14,60,81,-47,-17,-39,15,39,-2,38,10,-16,31,-31,22,-1,33,-21,19,55,-10,-6,13,-2,3,-19,20,2,-3,-21,38,42,19,-15,7,31,-21,-20,-1,-21,-9,38,-13,-9,42,-7,-25,16,-9,21,1,9,-35,-17,-4,-7,13,18,1,18,-6,-14,45,-9,-6,-33,-2,26,-12,63,27,6,4,-41,12,6,-27,20,9,-32,-7,6,-35,-56,-10,50,1,24,-34,22,5,32,-18,-24,-10,43,-9,-6,4,-16,-2,-15,-12,-59,-5,18,-23,-15,-26,-12,43,23,50,-1,11,-52,-13,7,-65,-5,-22,-60,-7,6,-10,-55,-46,20,-11,-6,16,-12,18,-32,-39,-85,-19,-18,21,-27,-7,-14,-5,2,26,-38,49,7,7,-16,-17,-44,-48,3,90,-21,-17,-24,-45,35,-14,20,12,-45,-7,-65,-11,-33,-16,11,44,-17,14,-29,7,9,13,-16,12,30,-15,-11,17,9,-7,40,19,-11,-3,-16,-22,50,28,-31,-20,-8,-30,-11,-16,6,5,20,-8,-10,19,10,-11,23,-25,13,-20,-4,-40,-7,-2,8,14,23,-21,33,21,37,16,-17,-4,-38,-2,-3,-30,38,11,14,0,-25,-13,-7,-28,-4,19,-11,45,5,-47,-43,-14,12,6,0,-45,21,30,25,10,-6,18,-1,-5,46,4,-17,3,29,-30,-1,9,3,-12,-24,-24,-12,86,45,27,-36,-5,-34,-16,-22,-50,-44,-46,-17,15,-15,12,-37,-6,-1,7,14,26,-14,21,-11,-43,-75,-41,-32,16,-1,-17,27,55,10,22,-26,13,3,-14,-36,15,-50,-29,-3,20,-20,29,-52,-7,9,15,-10,-50,-43,60,-8,-22,2,-33,24,68,-14,44,-5,16,-17,17,20,-2,39,-2,8,65,-7,5,31,-3,-12,-8,-13,21,-2,30,-30,-6,-14,-25,-9,-11,38,12,37,-8,-26,45,-37,-24,-12,-29,18,-7,-18,-34,29,23,20,5,44,-5,20,13,52,47,-34,-18,-24,0,13,-34,36,17,37,28,0,-32,0,-16,2,-14,8,-7,-8,-13,4,19,28,-22,-2,-16,-20,-20,-31,5,-25,-11,-29,7,11,-17,23,-21,-16,6,4,-4,-21,12,6,-22,10,-39,8,-5,-13,-24,6,8,8,-1,-12,25,10,-33,6,25,-49,-20,-13,39,11,-10,20,18,-10,10,-18,-1,3,17,12,-26,1,-13,31,12,-33,-7,-27,35,-7,1,-24,-13,2,-21,9,17,-37,-20,18,6,-5,-34,-14,10,-31,3,26,11,11,46,-4,-4,16,-13,28,23,-18,-3,-14,42,3,28,0,-2,10,-44,-1,-19,-19,-22,18,-6,31,-18,-30,6,-6,0,30,3,-23,-3,19,-7,11,-3,3,-22,-17,27,-17,7,-3,12,-11,-14,-11,18,16,34,-23,-19,-22,-16,13,0,-42,-14,-17,17,-3,-9,-25,1,-29,-10,-7,-14,3,-37,-22,-4,-10,0,5,-30,11,-11,-41,-11,-35,-6,-13,-17,-26,-4,-38,-31,10,-44,-33,-13,-8,-7,-22,6,8,-6,-17,15,10,6,11,14,7,24,7,-24,0,11,-27,15,-7,23,-19,23,3,24,5,-30,13,-13,-31,-15,9,-4,11,23,4,-6,-20,-14,35,-23,-9,-14,-5,84,-5,5,-32,-11,-17,13,-17,-37,-27,-16,8,-17,55,-32,26,-57,-48,-18,3,-8,21,52,8,16,-31,-20,15,-26,-6,-18,19,77,18,41,-36,-18,22,4,-4,-5,12,-20,-17,-1,61,-24,-4,-30,-40,-11,0,-12,21,58,15,12,21,-7,12,-25,46,10,28,36,30,68,-17,-13,57,8,35,23,46,2,-54,-7,5,-27,-44,-9,-14,-8,32,-15,14,8,-16,-8,7,-8,12,-15,-30,4,-25,-16,-12,-8,9,-4,-4,-11,-8,-4,-17,-14,-25,-12,16,-1,-11,-26,21,-6,-6,-10,-13,-16,15,-2,1,31,11,3,-27,5,-5,4,3,-8,28,-10,-17,-13,-35,14,-26,-36,-27,-5,-26,-16,10,-8,-25,10,21,-7,15,-12,-18,-8,4,-12,19,-7,-40,-3,-22,32,6,-2,29,0,-10,22,-14,-38,-38,-49,-5,-43,-3,5,13,-24,-26,19,-2,-9,0,33,11,-16,38,-58,-1,-30,-23,-3,7,84,-2,4,-21,-3,12,17,18,-9,-2,-24,-30,9,41,-23,-35,-11,-17,11,-30,15,34,33,12,-14,12,-28,6,22,43,-26,24,45,26,24,-47,-5,33,30,24,-22,-1,-5,-22,6,21,-21,-5,-33,-1,-30,-9,5,33,22,9,19,-1,-9,6,17,16,-16,-24,-11,-31,-11,11,-13,-10,-5,-18,-6,-4,-10,-39,-1,12,17,5,18,12,-6,-8,-13,-10,6,13,10,-28,30,37,-14,17,-15,-11,12,-15,-9,3,-16,-9,-22,-17,9,5,-23,-37,0,-9,-9,-14,-28,-3,13,20,-11,-17,-8,5,-7,32,7,21,8,20,-11,-20,-10,-16,-7,28,26,2,-8,30,-9,13,-22,-25,-31,-21,4,-27,21,10,21,-15,1,-1,-19,13,-27,49,-21,-21,-11,-2,11,-1,33,2,-9,-18,18,-9,-6,19,-18,5,-11,-29,3,-21,17,-29,42,8,19,-13,30,-3,-19,20,-28,14,-31,-14,13,-12,-4,17,31,17,5,-31,26,39,12,-5,-37,-5,6,16,-5,-17,-8,-13,34,-4,-7,-30,35,4,-21,2,15,5,16,2,16,17,-2,-12,-9,-31,1,11,-10,4,2,3,-9,10,7,-30,-4,-6,14,-13,-12,-5,-2,1,1,-5,20,19,27,-4,12,5,-1,2,10,-12,23,-18,1,-8,17,19,-28,7,32,13,4,6,8,-33,-27,-14,9,6,6,5,-8,-16,28,8,16,-6,11,13,6,-8,-2,-11,1,-14,1,27,28,10,-18,12,28,6,-6,9,-20,-2,-4,1,10,-1,9,-4,-1,-6,-18,19,-10,16,31,-24,2,-20,10,-2,-18,-10,-9,16,6,12,6,2,-8,-2,-11,11,16,13,22,8,-8,-31,18,-6,23,-17,-21,20,-20,-11,16,-21,2,-34,-3,25,-2,0,-24,-33,-13,-13,0,-25,1,4,-8,13,-4,11,-2,0,-4,-21,-3,19,41,-16,-35,-1,-24,20,-5,-14,-13,-18,-10,-33,-19,-14,-21,-14,-14,-17,-22,-3,24,-4,-5,-24,-3,-23,2,-7,11,19,3,-6,19,-9,8,-2,-18,-12,0,-1,2,2,3,-20,-17,14,2,2,6,-9,-20,19,2,-16,14,-19,8,9,30,10,-17,12,13,13,8,-1,-11,6,-20,-1,22,-25,15,-10,-2,-6,-15,19,1,31,-1,-13,-7,12,-23,-18,-15,-6,14,16,3,30,-31,-6,1,16,-10,5,-9,11,-20,-11,12,7,-5,-18,-15,3,-8,11,-13,30,-5,4,-5,2,3,-19,15,-23,18,5,-6,18,-31,-26,-13,19,-10,12,-15,6,-31,-6,13,5,-29,10,-23,-20,8,6,-18,-6,7,28,-4,-3,-20,-21,-21,-14,15,48,-4,-8,-33,-16,6,10,-12,18,19,-7,0,25,-3,9,-6,-23,3,-21,5,-1,2,4,16,-20,-5,16,23,9,10,-10,-13,-48,7,12,-18,-3,14,-12,3,5,20,2,-11,-6,16,27,-12,8,-3,-20,-9,1,10,9,17,18,0,25,-4,6,13,-50,9,-11,17,16,-57,-7,14,23,10,16,-10,1,-9,-30,32,7,5,12,-9,-20,-22,3,-8,39,-3,12,19,27,-11,-14,10,-15,19,-20,-14,8,-39,-13,0,-7,3,32,4,-34,-21,-3,23,5,12,8,-22,1,-10,-2,-23,31,-13,-19,11,7,18,-45,3,-15,7,-31,-35,-17,-43,-51,-18,22,-4,21,22,-7,-32,-28,8,3,-15,2,-17,-9,-8,-16,-24,-3,23,11,-3,4,7,-38,-3,-30,22,19,-9,-24,37,-48,-5,-1,-11,-5,16,5,29,-8,1,40,14,-35,-9,-25,2,12,-18,1,-7,-3,-23,-2,9,3,2,-65,-5,-16,16,2,-47,1,3,19,-11,-19,23,-24,7,30,8,-5,-34,-15,-15,-30,-31,-5,-10,-1,-28,48,-17,11,-15,5,14,-61,-14,-23,4,-9,22,27,-7,19,0,12,-6,-30,-7,16,12,0,-24,-4,1,-22,-17,-30,-15,16,-45,63,-5,36,0,-23,11,-32,-13,32,-6,-2,8,62,-11,-8,1,9,0,-18,-7,-37,-1,26,-3,-27,4,-7,9,-34,-2,11,-36,20,8,24,-5,-54,-4,-22,0,-4,17,-10,-24,32,-21,-4,-5,22,13,0,-16,-2,33,28,-10,-8,12,8,7,-23,5,-2,-9,3,16,30,17,-25,-11,-28,25,16,-13,-19,22,-44,-28,3,-19,14,33,24,19,40,-6,3,14,-16,3,-43,32,14,10,-15,-12,18,-8,3,16,-9,12,-32,-4,6,5,38,29,19,-10,14,0,-30,19,-12,-6,68,36,-31,-11,2,-12,-25,-13,20,8,-24,-51,-18,-22,8,-22,-30,69,-25,-5,-44,-1,98,76,58,-26,8,0,4,-1,-10,-16,59,14,-9,-40,5,-10,-27,12,4,-15,2,-32,-2,11,30,18,-32,24,-47,-38,6,-11,38,1,32,-32,24,3,-5,13,-16,10,-8,-19,13,-26,-37,2,-36,5,-31,4,2,-28,14,38,32,7,-44,-13,-31,-15,30,8,-6,-56,-15,-32,14,6,-22,43,-23,9,-29,36,17,-9,-46,5,-10,13,-27,18,-37,-28,-12,23,25,9,-21,-28,-14,-3,52,7,-2,-36,-29,-30,26,1,7,27,7,13,38,16,-9,2,17,29,-34,18,-6,22,-23,9,14,28,-15,24,9,-5,-12,-26,-18,7,16,19,0,12,3,5,5,5,-16,-7,23,36,-35,18,27,15,-22,-10,-10,-14,-31,-9,-22,-6,-17,-25,-6,35,-6,-21,-40,15,45,3,-7,3,-28,17,11,-8,-7,-7,-25,20,15,-12,23,18,-31,-31,-7,-29,1,-7,2,-8,-15,21,7,10,-28,-31,-12,23,9,-44,-30,-8,-17,16,-27,30,1,13,-18,39,3,-14,12,5,-41,-11,-10,-5,1,3,4,36,2,20,3,12,-25,-6,46,-9,-25,7,-30,2,13,12,-22,24,-9,21,-27,62,-9,7,-16,-1,-7,26,6,9,-21,1,8,52,1,14,-16,21,-22,-12,61,50,-11,-30,-34,-5,34,16,-18,-3,3,12,-40,-22,-12,-48,17,-40,-19,-1,31,-4,-8,-7,-17,-2,-24,-5,-29,-9,-42,5,29,-25,-32,13,0,4,20,-8,-3,-32,12,18,-34,3,-12,-20,3,15,-1,27,-9,17,-1,-9,21,5,-27,-29,-6,-41,-50,-28,25,3,-23,-55,-4,1,53,-2,24,-21,-21,4,-81,4,-54,-16,10,38,16,11,-11,28,-32,-10,15,-5,-32,0,-3,-46,-29,-40,53,2,-41,-68,-44,-9,47,4,53,-37,-33,19,-51,10,-31,-24,0,36,53,22,-1,7,7,-14,39,-12,-21,5,-13,-38,-14,-23,15,29,-37,-43,-18,-14,48,2,43,-18,-13,4,-2,9,3,-9,25,34,63,20,-3,4,-1,-10,6,-9,-14,1,-24,-15,0,-7,58,30,3,-28,-16,-11,33,8,30,18,20,19,18,13,34,6,-12,-46,-4,22,22,21,5,55,23,-3,4,16,8,13,0,32,4,-37,0,34,-9,8,9,-11,-4,-7,20,17,2,-20,-6,-24,-16,-8,-38,19,2,14,6,6,7,34,-9,-27,1,-13,10,-11,24,-6,-29,-12,-13,10,-5,-12,34,-3,-22,24,-30,15,-26,12,9,65,-34,13,-13,16,0,-10,6,18,-7,-4,-18,1,-7,-25,90,16,-50,-67,-61,6,13,3,16,-13,-19,31,-49,16,-21,-7,-9,62,18,20,-11,29,-8,-9,21,-19,-13,16,-18,1,-38,-18,56,-7,-58,-22,-63,-10,8,-2,45,-31,-51,13,-29,19,-14,-23,-9,24,34,39,-15,9,19,-61,41,-15,-32,-15,6,26,-25,-41,5,-8,2,-45,-43,-6,38,5,47,-29,-28,2,41,5,31,-6,0,-27,14,-12,14,-5,29,34,1,-13,4,-5,-3,-8,0,20,42,-3,34,34,12,1,13,-10,-17,5,33,7,46,-30,-8,-20,2,-8,2,-26,8,5,-2,5,25,26,-9,-29,-5,-2,-1,9,5,-33,-3,4,-13,17,-1,-4,4,11,-2,-2,-6,8,-18,-12,10,23,-29,38,-23,-4,-13,9,6,7,-11,-8,-18,-14,0,-6,47,-14,-40,16,-40,7,-30,-3,20,12,8,5,-36,14,-31,-22,-26,20,-23,46,-19,-18,-14,-21,4,24,-8,17,-49,-19,-46,-24,75,-15,-58,-37,-43,-13,-10,-15,38,8,-21,12,-15,31,-36,-19,-21,26,-8,29,-3,13,22,0,72,-3,-14,-26,6,4,-17,-43,70,25,-37,-25,-17,-3,15,-6,39,-4,-28,-15,-5,-21,16,-13,-29,-23,22,17,2,21,2,2,-10,15,9,-21,21,-9,-22,17,19,21,11,-11,-7,6,5,9,-12,-15,10,0,9,-45,-12,-17,-20,-26,16,12,13,19,-1,13,13,17,-3,-40,5,2,10,9,-9,-15,-7,14,-17,17,-27,4,18,14,13,-26,-2,12,-18,7,-5,2,2,5,0,-8,-6,-28,-12,47,-5,-20,-15,-13,-3,-2,-9,-30,-37,4,-30,14,-6,-19,17,-7,51,-24,-22,-38,-18,-17,-38,-15,-24,15,-4,-12,-2,-3,-2,24,10,7,-36,-28,-29,-4,29,-6,-59,-26,-31,-1,-25,-11,12,1,20,-20,-16,22,1,-1,5,3,-50,31,12,3,8,0,-22,11,33,-17,-26,16,-22,-32,29,2,-31,-14,-29,14,-18,-5,27,-12,12,-2,-2,-24,-15,15,-39,-28,46,12,10,-18,1,58,-30,21,16,-12,13,-19,-28,6,26,-5,-3,25,10,19,-9,4,-12,-13,9,-3,11,-19,-3,6,-42,-20,17,16,-10,-7,-13,19,-15,3,1,-20,-5,-25,27,29,-15,-17,4,-10,3,22,0,2,-3,24,-4,-21,-6,-16,0,22,-6,9,16,16,5,-31,-3,-12,2,3,-2,22,-13,-31,34,9,2,-13,7,33,10,10,-13,-13,-5,12,53,-36,-3,-20,17,-16,-40,-36,0,0,-8,-9,-4,15,-2,-14,40,33,-13,-27,33,17,36,-25,-4,52,-7,-8,9,-9,4,27,10,-32,8,11,-3,-4,-6,-14,-39,4,3,12,40,19,-22,-26,36,6,-25,0,17,13,50,-9,5,41,-8,1,-5,9,3,14,33,5,-9,-10,4,-15,47,-49,-21,-15,-26,-15,33,-7,-10,-6,-32,13,-11,5,-1,-2,-62,22,-20,-31,-13,7,-14,-5,-24,5,37,23,-12,-27,22,10,34,-60,-12,7,-27,-14,16,18,-25,16,-19,-5,1,-3,-10,-5,-15,-23,-16,-27,-31,0,-9,-10,-4,-10,16,21,-3,0,11,15,-1,13,-25,-15,-14,12,-20,13,-80,13,1,20,-2,-16,6,1,-8,-24,-25,-5,-16,4,23,-8,9,31,21,-10,27,25,0,37,9,23,-32,31,19,13,-19,-30,-50,-6,41,39,-33,-16,37,-10,3,-16,3,1,-55,-26,-9,-4,16,46,-4,-36,9,33,45,8,62,2,40,-3,41,21,6,-25,49,8,38,-47,24,13,26,19,27,3,-19,20,-26,19,-22,11,4,-5,-1,13,-42,-11,17,9,-11,-25,-25,0,-10,-10,28,-24,41,-14,-35,9,-10,26,-16,-11,-21,25,15,8,23,6,16,-7,-38,4,14,23,-32,-14,-8,-10,-13,-40,-17,4,-5,-39,20,-2,-5,17,-30,-28,2,1,-12,-14,-13,7,-11,-14,4,7,-2,-17,5,-23,8,15,-50,-9,10,10,-44,11,-36,0,-23,-7,-5,-28,-57,-1,-10,7,-10,-36,-3,-37,-54,9,-54,-23,-33,10,2,-20,5,14,-1,-22,-26,21,6,4,-34,21,-28,-17,6,-19,-24,-47,-81,-28,-6,37,-35,-46,47,-13,-61,-35,-16,-26,-68,-27,-27,7,24,37,-32,-20,44,24,43,26,7,-2,30,5,8,16,-9,-15,21,-33,5,-14,-16,31,31,6,-11,-7,-16,-5,-56,12,30,36,-20,-3,-4,29,-6,-19,24,1,3,-4,13,34,7,19,-12,-14,56,-17,0,31,37,37,-10,24,3,7,12,20,54,-14,16,-4,1,-9,-5,26,3,30,-5,-19,15,22,22,-10,7,-14,-7,3,-7,30,-6,10,43,36,-29,12,-6,-5,-10,27,35,13,-11,-4,21,-15,-2,9,-43,10,-12,18,-4,26,1,3,-27,16,-29,-13,-39,19,16,19,-9,-16,10,0,4,36,-79,1,13,12,-12,-7,28,30,11,-39,-35,33,16,35,-9,36,-15,1,4,-6,-41,-22,-55,-34,14,29,-50,-58,50,26,-23,-13,-28,-32,-31,-34,-50,5,18,26,7,-28,-10,60,43,55,-8,9,25,8,-29,9,-25,-12,-9,-7,-6,9,-44,31,17,40,-13,-24,-35,-5,-21,-14,5,6,-8,5,-15,9,3,-29,-12,0,-5,-3,14,-15,-5,5,-25,2,4,-11,-19,16,22,-1,3,16,-10,-13,17,-13,27,-8,20,17,-21,-18,-25,10,-4,26,-1,-7,-4,17,16,-16,-2,-20,-21,-2,-17,11,-5,26,-2,-25,-39,-11,-19,-2,-11,0,0,6,-16,23,22,-10,12,18,-31,6,7,17,-15,2,-3,7,9,10,-45,22,-33,11,1,12,-48,-51,-1,2,-9,6,-41,-30,-24,5,-30,13,17,3,25,-22,-45,46,27,-9,-40,19,-24,4,13,6,-14,-6,-47,-9,15,-5,-43,-63,34,16,-14,-15,-12,-39,-34,-39,-49,12,12,23,-12,-1,-18,25,39,18,-24,30,-3,41,-1,5,-3,-24,-7,5,3,2,-49,13,-19,31,-15,-1,-26,-21,-19,-16,-36,-4,42,15,-21,-9,-2,-11,3,-15,2,31,11,-11,-15,5,-2,-22,45,18,-28,6,7,1,22,15,-23,-27,36,-6,15,4,-19,14,15,5,-14,4,-4,6,1,-23,5,11,2,-25,-13,-8,25,0,21,7,-10,26,-28,1,-1,-11,-30,20,17,-4,31,17,-19,0,55,-11,22,21,-1,-19,12,21,-10,27,-1,-1,8,4,4,12,-11,-21,-7,16,-52,-14,-4,-2,14,-1,-13,-14,15,12,-35,-12,16,-16,28,-1,-6,27,3,2,-9,-4,20,-16,12,14,-1,25,-6,-23,9,-23,-46,-42,29,9,-7,15,2,-20,-17,-13,-27,-11,0,20,9,8,38,5,11,-12,-5,16,18,0,33,-3,-4,12,46,2,25,-3,-29,18,-31,-9,36,0,-16,-3,-17,-3,4,-3,20,18,-15,-6,21,14,26,14,-20,-18,13,-35,7,-14,-4,46,-61,7,-16,-3,-26,-28,-10,-6,-26,26,29,24,8,-10,-35,-20,9,30,7,-7,10,-19,35,7,-22,-20,-20,-53,25,-6,1,20,-61,-32,-3,-12,6,-23,-45,-9,-66,26,55,44,12,-13,-1,-16,-13,-20,48,-25,33,26,21,9,-29,-18,-16,-28,12,-7,-1,-2,-49,3,8,1,20,-4,-37,12,-9,41,64,2,-17,5,12,-7,-24,26,57,-29,1,47,2,22,-28,-20,4,-7,9,16,-7,18,-19,11,-9,23,-1,-19,-40,25,8,6,17,-15,-48,16,12,-1,-32,1,18,-8,-25,1,-19,-29,-58,6,11,16,4,24,1,20,-22,49,-8,2,-22,-16,-6,18,-18,17,-9,-30,-49,5,10,14,-39,-16,-13,-12,15,22,40,15,-10,10,19,-8,5,-10,-29,20,-63,23,-1,-27,-10,-11,6,-15,22,-8,-1,3,30,6,-10,-14,2,31,-1,-1,10,-50,23,-31,-5,-23,-4,-46,3,-3,-18,-13,-57,-5,-12,6,9,-10,-32,13,-43,15,17,-15,-20,-11,-41,-11,-34,-15,13,-13,-33,-16,17,-23,-22,-21,-16,-55,-10,-1,-26,4,-40,-9,4,9,16,-32,-35,-3,-31,18,-5,-1,-48,15,-15,-9,-22,-4,-5,-13,-9,27,-9,-20,-27,-35,-7,-37,-4,4,-32,1,-29,7,-5,13,19,-22,-29,17,19,-16,-33,-23,-47,16,7,-1,-18,-17,0,-3,1,20,-18,-20,-24,-6,4,13,12,13,-12,26,-42,26,-9,-7,-11,-2,-2,31,18,8,-29,-23,-28,15,25,2,-14,-19,-5,10,-62,88,23,23,-16,67,4,26,26,-13,-4,21,0,8,-7,-34,-15,14,39,-28,88,-9,38,3,-4,-1,42,-17,36,17,-22,11,-46,3,3,-4,-17,30,-5,17,-8,15,5,17,-10,-5,-13,6,16,19,-4,-1,22,-3,4,-23,-49,-4,23,3,17,-13,-15,-7,-13,-23,3,-40,-33,4,-24,-30,5,15,18,-12,-21,-2,-5,-2,-17,9,-36,-5,-61,11,10,-68,-30,20,20,9,20,-12,-16,-5,-1,0,5,-28,-29,-41,-28,-28,20,-11,20,4,-30,-2,-17,-8,-9,26,-15,10,-14,-27,36,6,-19,7,-13,12,-2,-28,-2,0,3,9,18,-4,-11,-14,-27,-3,20,-4,27,55,-52,33,-15,30,-30,37,-15,29,10,-1,41,40,14,-9,-18,4,1,-19,31,27,-3,42,-9,17,-29,70,-8,35,-25,4,-14,6,7,26,-19,-29,-15,-26,6,1,38,1,-21,1,8,18,14,2,35,7,-2,31,-39,11,-9,15,-12,55,-6,53,-2,4,-28,-14,6,22,-22,2,-3,-1,-20,4,47,23,-64,-34,4,13,44,10,31,-6,5,11,-6,-18,-30,-23,-5,20,-12,12,4,22,3,9,10,27,-8,-21,-26,22,13,-13,12,11,-19,-28,7,25,7,18,14,-13,-25,-9,19,-10,12,-27,-12,-32,-16,-23,16,-7,27,11,-7,-16,1,-16,-22,20,-6,5,-61,10,32,6,16,13,-24,6,-3,-18,10,-10,2,-12,26,11,-17,-25,-29,-26,3,-6,20,21,-3,10,25,32,-23,-2,-13,26,14,22,3,24,7,-12,-29,-3,-10,19,31,33,-13,-21,-20,-24,-33,20,-3,21,-4,-5,29,35,25,3,-3,-23,19,-16,-5,1,19,5,-4,31,31,29,14,23,3,-12,-15,14,5,32,-21,16,-5,50,10,30,-3,-33,-17,-11,10,7,-3,-18,1,4,10,-6,29,29,-4,5,16,11,35,17,20,-9,15,2,0,5,-27,2,-1,40,4,29,14,-6,-21,-7,12,15,3,-12,-8,6,17,-19,1,-3,-15,20,11,3,28,26,6,16,-34,1,1,-5,8,3,-14,-35,5,0,29,0,0,-7,-16,13,-2,-14,-14,9,16,-9,-25,-18,11,8,-14,-25,-5,6,22,-13,-14,-7,-25,-21,43,-5,-38,-20,-13,-4,13,10,37,6,11,-10,8,7,-9,-11,3,-2,-10,17,2,1,-14,-26,42,-11,-6,9,11}\n\n#define CONV2_BIAS {55,50,34,43,-37,35,-21,10,35,-53,-76,7,14,-1,92,20}\n\n#define CONV3_WT {15,10,3,1,-20,-11,5,-18,-9,-1,-4,-11,-5,-19,-26,-15,13,5,1,7,6,16,1,-20,3,35,0,-2,8,12,-41,-5,-20,4,6,3,-3,0,-28,-13,6,16,-4,-4,1,8,17,2,-4,-10,-9,-11,3,-2,-4,-9,-21,-10,-18,2,-6,-18,27,5,2,5,-5,-3,-4,-2,-16,17,1,-17,-13,-12,-1,-18,10,6,7,-4,-1,7,1,-4,7,-8,0,4,12,-4,-5,-13,8,-17,0,-22,-2,5,12,20,3,-6,4,10,16,4,-3,-7,0,-15,-17,-1,14,25,2,3,-15,-11,1,-4,-2,-14,-2,5,12,-2,5,-13,8,-1,-4,0,-6,12,-3,-22,-20,7,3,11,8,6,6,2,10,7,-5,-6,-6,18,-2,-23,2,1,-12,-9,-3,-2,0,-3,-9,4,-16,-3,-7,-23,-10,-8,-1,-26,-3,9,30,-16,-11,-13,-9,-11,-14,5,5,-9,-16,1,10,-5,-18,-14,31,-6,-1,1,5,-7,1,2,-17,3,8,1,2,-3,-4,3,-6,7,23,-10,-6,-3,-9,-9,-38,14,-3,9,-10,-3,17,13,-6,12,22,8,8,-6,9,9,-6,13,-1,-11,12,-2,-4,-3,-2,17,2,-8,-15,-2,-9,-10,-9,-19,2,-11,6,-5,-5,8,28,2,-23,12,-19,-12,-33,2,-8,-17,-3,-15,-1,23,-18,9,23,2,-9,18,-17,-29,17,9,21,6,13,3,13,32,-4,0,-7,10,-2,-2,-10,-5,-4,-5,8,-1,-1,-9,-20,11,1,4,-10,1,-1,-6,-24,-1,-6,-2,11,6,7,-9,2,8,-6,-8,-19,11,6,-10,5,-5,0,-14,18,-11,13,5,3,-7,0,6,-21,4,2,12,-14,3,-14,0,-10,-6,10,0,-21,17,3,19,-19,-2,13,21,-10,-11,-5,-18,-10,6,25,1,-19,0,2,-11,-36,-13,11,-24,4,-16,-3,-28,0,1,-9,-6,-3,-1,6,-11,-19,3,5,-6,-7,16,-22,-19,-11,-20,6,-2,-1,-12,24,3,-27,-2,-15,-18,-2,-3,5,-12,-8,-4,-23,1,5,19,-30,12,-5,-4,-1,10,-1,13,2,-4,-12,6,-3,2,13,5,-18,-3,2,1,4,20,13,8,22,-6,-3,8,-12,-10,-28,12,-12,-5,5,-12,-6,13,1,-17,-32,-11,20,-14,-9,-6,-11,-1,-8,-2,-13,-10,-1,31,-12,21,-32,-2,-14,-1,0,11,-1,-1,-13,16,-10,-8,-10,20,-2,1,3,-7,-17,-1,-12,-4,-14,-16,-20,-1,-2,-4,-3,11,16,6,-12,-11,3,0,2,-1,-2,-18,-21,-4,5,-9,12,16,7,21,9,13,-4,2,4,0,-21,-17,-3,2,-10,-24,-10,7,3,-15,3,-11,1,1,5,-8,0,-7,3,0,-3,2,0,31,-5,7,0,6,-13,-7,11,-15,-1,-13,2,13,-2,8,25,-6,-1,-16,-3,7,3,-21,10,0,-14,13,17,7,0,-7,14,10,-1,-6,-8,-14,-6,-16,4,-26,-11,-5,-1,-14,15,10,26,-1,-27,-22,6,23,-16,-14,-1,-12,-26,-21,-3,-5,1,-9,-13,-9,-9,-12,0,-6,-3,-6,-9,-2,-10,-3,-13,5,-4,4,-2,1,-3,1,-3,-13,6,-5,3,-18,-11,-6,-19,-2,-13,12,4,-10,23,-8,-23,15,10,-3,18,4,-5,2,5,10,1,-16,15,-14,2,33,-5,-4,5,-11,-19,-4,6,5,16,-14,20,12,6,-14,-24,-29,-11,1,16,-6,11,-8,-25,7,-9,-6,7,20,-19,-3,-7,-19,2,-8,15,-7,-5,2,-11,-11,-6,-4,4,-7,-1,-4,15,-2,-3,-2,7,-9,-16,-6,-4,-19,5,-6,6,12,14,-2,-3,-1,17,3,-11,-5,25,4,15,-7,8,7,1,-19,9,-32,19,17,6,4,8,2,-5,29,28,-9,14,14,-13,-3,5,-9,-20,-17,4,-12,0,-4,-2,14,9,5,9,-28,-15,8,-8,11,-16,-34,8,-3,-2,4,8,-20,-1,-11,-19,-14,-1,-14,-5,-3,25,-16,12,13,14,22,6,-4,1,-12,3,-15,3,-14,-12,-5,23,4,-13,3,-22,19,8,-3,-29,9,-12,-21,-12,-18,-15,-9,8,-6,1,-5,-21,7,-2,1,3,-9,-16,27,-11,-19,8,0,0,-1,-2,-9,-28,-25,-24,2,-7,-5,-20,1,-27,-15,2,8,-13,-1,-1,3,-21,-6,-10,9,4,15,-15,12,-12,-10,-6,-15,2,0,5,0,-2,-18,4,-8,-3,4,1,-9,-1,16,-8,20,11,7,12,-4,-34,11,-21,-6,-9,-12,-18,-39,7,14,-14,-1,-11,4,4,-5,-21,2,-7,9,-5,-9,20,31,17,-18,-14,-1,-6,1,-6,-14,-21,-11,-6,3,8,-4,5,26,2,-18,0,19,0,4,3,-8,2,-10,-6,13,7,-3,3,16,-7,-11,9,-11,19,-9,-6,-5,2,-1,-1,-8,-10,13,7,-9,-12,-2,0,24,10,-7,13,13,14,19,-6,0,-19,-14,10,-21,15,-1,-11,-3,21,0,1,23,-37,1,3,-9,0,13,10,13,31,-29,-3,-1,9,-2,-8,-11,-11,-6,-5,-17,15,-20,0,11,7,12,6,13,0,-12,-8,-13,-2,-3,-5,-1,-10,-6,4,6,0,8,-8,-7,10,-5,-6,-2,-23,-4,-4,-13,3,16,-1,16,5,-3,-12,9,-5,-2,11,-16,13,15,7,-12,0,-4,-18,-9,-7,4,-25,-6,-6,6,-19,-5,13,9,-1,-5,3,4,-7,16,5,-8,-6,3,5,1,-6,4,14,-4,14,2,2,-10,13,23,7,3,5,11,3,-13,-4,9,12,-6,-7,-2,-11,-3,0,-6,2,-2,23,8,-4,-13,-1,-7,4,-9,4,9,-8,-3,-8,5,-12,-14,-15,-13,-1,3,14,1,-9,4,-2,-8,-2,18,-5,-5,10,-4,-2,-8,12,30,-10,17,1,-10,-1,-15,-17,17,6,-3,-4,0,1,-13,0,2,-14,3,-4,-18,6,-12,9,12,-12,3,13,5,-6,-4,-7,2,-17,11,-7,3,-7,-2,12,0,-9,21,1,9,24,13,11,-2,-18,2,-3,-1,-14,-13,-14,2,-1,0,-2,19,-8,-3,-9,6,-20,-9,-5,-5,-4,-9,-17,-4,-4,3,-3,14,11,3,1,6,-20,12,-9,-16,-12,1,4,-6,-7,6,3,-5,0,-14,-2,20,-12,-2,-29,-15,-10,6,14,-17,1,-23,4,-2,-5,0,3,5,4,12,-20,1,6,-2,-1,1,-7,2,-2,-23,0,0,3,8,0,1,-20,17,-16,-7,-12,-2,5,1,-6,-15,6,-8,3,5,-14,-11,-2,3,-1,7,-2,13,-13,4,6,21,-18,-1,9,-7,-12,2,-12,-9,-6,1,10,5,-12,-5,5,-1,-18,-15,-13,19,1,10,-21,1,-8,8,-2,-5,-13,-8,9,0,-17,-11,-9,0,6,13,-4,10,0,-19,0,15,-15,-3,15,-7,-9,-8,-3,-5,2,5,-8,17,-5,1,-11,3,-10,10,8,4,11,-1,4,-12,-10,-11,9,-1,2,-6,-3,16,2,14,-15,2,0,0,8,-3,-20,-16,13,-1,-14,2,8,4,13,5,2,14,7,-26,11,2,-1,-13,-5,2,-9,1,-9,-3,-6,-2,19,-2,-26,0,8,-19,14,2,-8,2,-13,-16,-1,2,-12,-8,32,9,-23,-3,15,19,-22,2,25,-4,-1,-16,10,8,-18,4,23,8,4,8,-9,-12,-7,2,21,-4,3,-13,-13,-10,-12,-2,-13,-20,11,5,-8,8,-2,14,13,-5,8,-2,-10,-16,-4,-2,7,-7,12,-13,-5,10,11,18,10,6,12,-9,-12,17,15,3,13,7,-26,-13,16,-8,18,-9,1,8,-7,-3,4,6,11,-19,10,6,-4,-10,13,5,-16,-2,32,-2,-11,-2,-4,15,-30,-5,13,17,-14,9,-4,10,-30,-14,16,-17,0,-11,-8,-37,-5,9,-36,-6,-8,11,3,18,-11,-6,-1,-8,5,-10,0,-9,-7,4,-20,-7,-1,16,-5,-8,-3,-10,-7,-5,9,-2,-15,-11,2,8,-9,-18,16,7,-13,-1,0,10,-12,-12,13,21,-20,7,8,-17,-6,-9,15,9,11,-7,-17,-4,-11,-34,-5,0,-19,9,-15,-28,-10,0,-13,13,19,-7,-10,-10,-4,-8,4,-7,-15,18,18,10,-27,-9,-14,3,7,20,-5,1,-10,10,-3,-16,-1,2,14,-18,-2,-3,-2,5,8,12,-7,7,-9,14,1,-12,2,7,-12,4,-6,-7,-21,-3,15,0,-14,-9,-11,-11,3,-7,0,-4,-22,-15,2,-8,-25,11,15,6,8,2,4,-7,5,-2,-4,-13,-13,-17,-3,9,-9,-5,3,-5,-4,-1,-9,-7,3,-29,-1,0,-9,6,9,6,-13,-2,-5,10,0,4,-9,-3,12,-17,-3,-5,2,-3,13,2,-5,-6,-2,7,-8,9,5,5,-2,-15,-6,0,-9,-21,9,13,-13,-19,2,4,-2,-9,2,-12,4,-21,15,2,-12,0,-2,-17,-1,11,-7,2,27,-16,16,0,22,-18,-2,-8,-19,-16,-6,23,-12,-20,5,-24,-15,-3,-8,7,-1,-6,-1,-28,-6,0,11,-20,-1,-14,8,-8,-3,11,-4,-8,2,-15,-8,7,3,8,18,-20,-6,-17,3,-25,-6,-11,-15,-7,-12,20,3,0,-9,-31,20,-11,-16,-14,5,-5,-19,-10,-20,-11,-10,17,4,-18,-4,-5,-12,-6,-13,-11,-4,-8,1,-28,7,7,-7,16,1,-7,2,3,1,19,25,-10,12,-13,16,2,11,7,1,-2,5,8,-9,-7,0,3,27,-2,-11,-3,2,8,23,4,-7,-7,-3,-5,6,1,3,-1,12,8,3,-15,-2,0,-7,1,8,9,18,26,10,13,1,-7,17,2,-13,-2,17,-19,-7,-7,0,-4,6,-3,-5,-9,-12,-13,7,-11,-2,-11,5,-1,15,-12,-24,7,-13,0,-1,24,4,-21,-4,27,16,-9,-2,5,-7,-11,-19,-6,-7,33,2,6,9,-15,15,11,-16,-3,-26,13,-7,5,-15,-12,13,-9,-7,-1,3,-10,8,18,-2,-14,0,0,-5,-2,15,6,-4,15,-18,23,-2,-9,20,8,-21,-16,0,-8,11,-28,11,-8,2,-2,-11,6,-18,-11,-1,4,-16,-7,2,11,-15,-26,11,3,-20,-1,-14,14,-6,-8,-4,-16,3,6,13,-4,9,9,3,-14,-13,-11,13,5,0,-4,9,4,-13,10,-1,-19,-1,-5,-6,-12,-14,-23,-1,-19,-2,2,19,38,-8,-18,11,-2,-7,-12,14,-7,-18,-1,6,3,4,-12,-5,-20,3,8,4,4,-22,-5,-20,-2,10,-1,-3,-7,3,-2,9,-23,3,13,20,-3,19,-18,-29,-12,-4,-6,7,-2,-18,-8,2,-13,4,3,10,0,-1,15,5,-8,-5,2,14,18,4,-1,5,4,13,2,-1,-11,-2,20,16,12,3,-5,-16,1,10,3,9,13,3,-14,18,8,7,-1,8,-3,-22,7,-28,-7,8,19,-19,-12,2,3,-9,-1,13,2,9,-9,-4,-18,-19,0,-6,-1,0,-14,5,16,-14,-23,-14,-29,-12,-2,17,-11,-1,28,21,6,1,-2,5,1,-10,6,17,8,-2,-16,-11,0,-6,-1,-2,-18,6,1,0,-5,-3,5,-3,1,9,-16,-12,-13,-13,-7,-11,-11,4,26,5,-5,-4,1,-6,2,13,2,-21,-9,-12,-7,-24,-26,5,28,-8,-15,10,-23,-7,8,20,35,-4,-12,-19,-16,-21,-16,-4,-7,-16,10,9,9,-24,0,-4,8,-1,-5,1,15,8,-26,-23,0,2,1,-17,3,7,16,-14,1,-9,-7,-10,-22,8,-4,-6,-18,-14,-7,-19,3,-10,4,13,-4,-2,-2,-10,-24,-1,-18,3,-16,-7,2,-2,7,-12,1,-3,-32,-6,2,1,-31,-6,-24,-2,15,-13,-6,11,-6,9,2,26,14,1,9,-17,-22,-11,-16,5,-6,4,3,15,32,0,17,2,0,3,32,5,-8,-16,13,-1,-13,7,0,-8,-12,-18,-2,-22,-11,8,-11,-5,-17,-2,7,-9,-22,-4,-10,-6,-8,-4,1,8,4,25,-6,13,-3,-8,1,-10,-25,-5,-5,-10,-13,-2,19,-11,-7,10,9,-13,-19,-4,4,1,-6,5,1,-8,-7,8,4,-11,2,3,14,-3,-15,-18,14,-6,-4,24,-11,-4,1,-13,-8,-7,13,2,2,30,1,-18,32,-18,-15,24,6,5,-2,-24,2,-21,-1,8,-23,-3,21,-5,-5,-8,-9,7,-9,-13,-12,-17,-13,-2,5,21,6,5,10,-12,-16,-1,29,21,3,-7,-31,4,-25,-6,18,-8,10,-7,-2,-14,-19,3,26,33,10,0,-10,5,-11,-20,-4,-9,-14,10,-16,-12,6,21,3,10,-14,-20,4,-29,12,-8,9,1,29,-13,-4,9,-12,-20,-10,-1,-6,18,7,-16,-1,-25,14,-10,1,-22,6,8,-10,-27,-13,-8,-11,2,-1,1,13,-15,-1,15,-5,8,3,-8,3,-3,7,6,2,-3,-18,17,-15,-9,-21,0,0,18,-16,-22,-9,-9,-9,9,-16,-12,-17,25,-11,-15,-9,11,-21,21,-14,-9,7,-12,-24,-7,-5,-2,0,11,27,-12,0,25,17,2,8,23,-6,13,0,-10,8,-12,3,-25,10,12,2,-29,5,-6,-18,16,6,-9,2,-1,17,-9,-1,0,14,-2,-1,-2,-10,0,-16,-19,-15,6,18,-12,19,5,-10,43,-1,4,6,-8,-6,18,-11,6,-12,6,5,17,-34,-17,-3,-6,-17,-4,4,-1,3,12,5,41,10,-16,-16,-15,8,-6,-8,-27,6,-14,-14,-11,-13,-10,22,11,2,4,-5,-7,-2,-11,-10,-19,0,14,-8,-10,-1,-1,-7,10,6,-20,-11,-8,13,-2,-17,2,-11,-8,4,1,5,-10,-18,3,-9,-1,-10,-13,-4,15,2,11,8,-11,4,0,-17,19,0,3,-18,16,-10,1,-14,-5,-3,-10,7,-11,0,-9,5,-4,-1,16,4,-2,-24,6,9,-18,-22,-5,-9,1,-9,-3,-14,-7,-3,-16,18,37,-7,1,0,-3,-4,-1,2,12,-7,-3,-11,4,1,11,-9,-1,16,5,24,10,6,-5,1,-1,6,-10,-11,-7,-1,6,3,12,-1,2,5,-17,-1,6,13,8,-4,-11,-24,0,-2,0,1,16,10,17,6,-6,-4,8,-1,16,-8,-10,-6,-5,-9,14,1,-22,-13,6,1,-11,-18,1,4,10,-1,0,-1,-25,-4,-6,-8,-2,5,-2,20,9,1,-18,22,-9,-8,11,-25,1,5,5,-12,7,5,-15,15,-4,15,1,3,0,-17,1,-21,-11,-4,4,6,-4,4,-2,-12,-18,-3,-9,3,-10,-23,-8,-14,-1,-14,14,-7,4,-7,-4,4,-19,-14,-13,-9,-2,0,1,-2,-11,-5,8,1,15,-6,-2,-1,-13,-12,-9,18,-2,-8,-1,0,8,12,-4,-8,-23,-8,0,6,-4,-8,-4,32,-28,-3,1,-9,6,-24,-8,-11,12,22,7,1,6,-4,1,11,3,-6,-6,-22,14,1,14,-3,1,6,-11,-1,-8,-9,-1,0,-2,-14,-13,-7,9,-4,9,-15,12,13,-22,6,-1,-21,-2,-25,9,-7,-13,-11,16,9,4,20,12,-8,-25,12,0,-6,-12,14,6,1,9,-4,1,4,-3,-2,-21,-7,13,-1,-13,3,5,-1,-11,2,-16,-15,-6,-35,3,-11,0,11,47,-1,-13,3,7,-15,-2,-1,-9,-25,6,-12,-10,-15,-6,6,19,-1,-4,-15,7,-13,0,-4,2,1,4,15,-24,-23,18,22,-3,0,8,-1,5,-19,22,1,15,8,12,10,-1,-5,-5,14,-31,18,-8,10,-19,-17,1,2,-3,23,-6,-8,7,-3,-3,-2,1,-14,-16,12,-3,-14,0,0,-7,27,-6,-15,-8,13,-1,-23,47,-19,-15,13,3,-5,4,-4,-2,3,9,-34,-2,1,7,-22,20,-14,0,-2,26,-5,-17,-4,-5,-5,-7,10,-16,-28,13,-7,8,-13,-12,11,0,1,-14,-13,4,20,-9,2,3,-14,-5,-4,-10,1,-5,32,-26,12,-13,-9,-23,6,-1,-10,5,-2,-4,3,-25,-5,-2,-6,-5,17,23,0,-6,22,-9,29,-8,7,-14,-5,-9,1,-8,-13,28,1,6,-5,6,-1,-6,-20,15,-4,-2,-5,-25,-6,-19,-14,31,-10,-17,4,-6,-7,12,-2,-8,-7,-5,-7,-12,-13,-9,5,1,4,-4,-13,17,6,2,-1,3,3,-23,12,-8,19,-5,-7,-9,17,-8,-4,-2,3,-1,-13,-30,25,-17,-25,9,1,-1,2,-31,6,-5,-21,-15,2,1,-11,4,20,-10,-17,5,-3,-2,6,3,12,0,-11,13,12,0,-9,-1,-13,11,0,-2,-17,5,0,-15,8,5,-6,-5,-3,4,7,13,15,5,-10,0,-14,-10,-7,-9,-9,7,-4,-15,-11,12,-7,-2,13,-28,-7,-14,-2,-8,16,-9,-3,-8,16,-4,14,1,-12,1,-10,1,-7,-16,-7,0,7,-25,13,5,-17,-10,-2,-11,27,3,11,-2,-2,2,10,4,-11,-9,-6,3,-18,22,15,-4,-2,-9,-7,-2,1,-5,-15,-3,11,-20,2,6,-2,4,-6,4,1,-2,13,-9,2,-5,-13,6,1,0,-3,16,12,-13,0,10,-18,6,-12,-14,0,6,18,30,-3,-19,-16,0,21,-15,-1,-4,-4,8,-10,18,5,-2,-20,-6,-8,8,-8,21,0,-16,-19,6,17,-4,-22,24,-13,4,-8,4,-27,14,8,5,-11,0,-10,4,1,21,16,1,0,6,-23,-5,-10,-25,-17,16,-12,15,-11,9,-2,29,13,3,21,2,-34,-1,-11,1,-14,13,-1,-19,-7,-3,-9,-14,-14,-5,17,22,-24,17,12,-12,-23,0,-3,-8,-3,-3,5,-9,-24,-16,7,-19,5,-7,5,-2,-11,-8,1,-10,17,18,4,6,-6,7,9,-12,20,-10,-18,6,-2,4,0,-15,-2,0,15,6,-8,-20,6,-4,-3,-7,-5,-10,0,-4,-19,-10,-22,4,-2,20,7,-4,-15,-2,-7,-1,6,8,1,-15,-8,-17,-9,-9,-1,4,-3,7,-9,8,-7,-11,2,-9,-4,-5,-17,4,15,-2,24,21,10,-1,-2,-13,9,7,-4,-24,-25,-17,6,12,21,6,13,-18,8,1,-6,-9,8,-26,-14,-9,-28,6,22,19,4,-6,13,-17,5,-11,12,-7,-21,-2,-21,-5,-7,21,-3,-17,-11,-13,1,-15,2,-6,-22,-1,-8,-7,-1,8,-6,14,-3,-17,-2,-10,18,9,-6,-15,-15,3,-5,-17,1,3,-10,10,-7,-4,27,-1,-1,22,16,4,4,9,-13,-3,3,7,-6,-13,-43,0,3,21,-10,-3,-2,13,2,-11,-12,2,-11,-19,-12,-5,-10,-18,15,11,-6,-10,-7,-4,-17,8,14,-4,-4,-16,-10,-26,-19,-11,-9,-8,15,11,-11,-5,-19,-4,9,4,8,10,8,14,-10,4,16,2,17,13,-13,-2,2,18,12,1,6,3,10,18,4,-14,8,-2,13,5,-3,-9,-20,37,-16,-19,18,2,-15,-21,5,-1,-9,3,-12,-11,-2,16,-2,1,-12,-6,-3,-3,-27,-10,-16,16,22,-13,22,16,-17,-8,-23,-1,7,-15,9,-6,5,-22,-6,15,3,-7,-1,26,9,-3,-6,-5,8,4,8,-11,-5,2,-14,7,7,15,-6,19,14,9,-5,8,9,0,2,11,-4,15,-8,-4,4,-4,-4,-8,-5,-5,-4,-20,-9,-5,-40,-40,-20,-3,60,-16,-24,-3,-25,-23,-20,-4,4,-10,-5,-1,2,-17,-18,-19,35,25,-32,4,20,-6,-25,-25,-10,2,-2,2,2,1,8,-25,-1,12,-6,-15,11,-7,-18,-5,11,10,-10,19,-8,7,-13,-6,-13,-1,-8,1,0,-23,1,5,5,3,8,6,-6,1,-7,15,-7,-8,1,-1,-2,-9,-2,-6,0,-25,-4,-7,-13,-3,-4,-13,68,-31,-6,-7,-27,-10,7,-18,12,-1,12,-11,16,-12,20,-7,-4,-9,7,14,-14,-10,3,-10,-9,4,15,-22,3,-2,-1,-25,-26,0,8,-12,-19,-15,1,7,12,3,-21,9,-3,3,6,-16,-11,-1,-8,0,-4,-2,1,-2,9,1,-2,-8,6,-12,-12,-4,-7,0,6,-10,7,-6,5,2,6,15,-6,-2,-7,-8,-7,-26,5,-23,2,11,-25,-15,5,-26,8,-8,-10,5,3,4,22,-7,-30,0,16,10,-16,5,-7,-13,-8,-8,-2,-7,17,9,14,2,-28,6,-2,0,16,8,9,5,-10,3,-7,1,9,-2,14,28,-11,-2,-6,7,19,6,-7,8,-2,14,9,-14,5,-6,-8,22,-12,5,1,-4,6,14,4,3,1,18,10,-6,-8,-24,-5,-2,-4,-5,-15,-4,-5,-1,-7,-14,-11,15,7,2,-2,-7,2,-3,13,3,-12,-11,-1,10,-9,-28,2,12,-18,-3,-12,0,-4,-17,-6,-5,14,2,-16,-1,-19,-7,2,-16,-8,6,-4,14,-8,-7,-15,-6,5,36,-8,1,-20,11,5,1,-2,9,-1,-5,6,-21,-1,-7,9,16,-5,13,1,1,-14,-17,9,23,-10,14,-6,-4,-13,-9,-16,-21,-13,15,-21,-3,-19,3,25,8,-14,9,1,-9,-12,3,8,-3,-8,23,-5,-13,-16,-11,-6,-14,-15,-10,12,-13,-3,-10,19,-9,-18,-11,-9,-8,-7,-9,-12,-3,-10,-2,-22,-6,4,3,-10,3,-4,-1,-23,6,-2,-7,14,-6,14,10,-17,-13,-13,-13,-7,-11,-4,-6,-5,8,-12,26,-22,0,-9,9,-10,-27,-13,-4,3,0,11,-11,-1,25,0,24,-2,-5,-19,27,13,-15,-11,1,38,5,-3,8,-8,5,-14,2,-19,-6,0,-8,39,-10,-13,11,2,19,-11,26,-18,-12,0,4,-20,-4,-10,-16,-10,-17,9,-6,-3,-7,-1,-4,-19,0,-1,15,4,9,8,5,-2,-2,-12,-3,-9,-14,-4,-4,0,-9,-3,4,-7,-20,-5,12,5,-13,10,-3,8,2,24,-8,-10,-6,6,-20,11,-15,-9,21,1,-27,27,-1,-12,-17,10,-1,-10,-4,16,-7,9,2,22,-3,1,18,10,24,4,-1,-8,1,15,-7,-9,-13,-4,1,10,-8,-8,-3,12,3,-9,1,-3,-11,13,0,15,2,3,-6,0,2,-1,11,22,13,-13,-25,21,-1,-7,13,3,-9,7,-15,5,-29,-4,-37,-7,-18,-2,11,-2,17,15,-13,10,-18,4,-18,-8,-6,11,-1,-2,-17,2,10,-6,-21,2,-11,1,17,-4,-12,-12,-4,5,16,-9,18,4,1,8,6,-7,-6,-7,6,7,4,-1,-1,2,1,6,20,10,-26,2,-5,-3,29,-4,12,7,11,5,17,7,0,-9,-13,2,0,-11,-10,-16,-15,-1,9,-5,13,3,16,1,13,-1,-1,8,10,4,-12,-13,6,5,9,-11,-14,8,-3,12,9,2,-12,8,3,-2,-9,-12,-11,-2,-9,18,-22,11,-10,5,1,4,-10,-20,8,-1,-13,1,-10,-4,-7,-6,-12,4,-5,-12,12,-13,-25,21,-10,-15,9,-5,20,-2,14,-19,-9,7,-12,-2,-10,-5,-39,13,2,-2,-16,7,-15,-11,-6,-4,3,0,-15,-7,-7,-10,-11,-18,-5,-9,-21,-12,2,5,-9,6,11,-8,-9,5,-11,3,-4,-10,0,6,-21,5,8,19,4,-18,27,-25,-6,15,-4,-17,-23,-14,-7,-4,-10,13,-15,4,6,-5,1,-18,-8,-7,2,-10,-1,6,10,-1,-6,-22,3,2,5,-16,-11,-4,0,1,-10,-3,23,-14,-6,7,-30,3,20,-15,3,16,-22,5,-16,-7,-8,7,9,3,-20,-8,-14,4,4,-4,-15,22,-1,-11,-5,6,-5,4,9,12,12,7,-13,22,0,5,-3,17,11,6,-14,-5,0,-3,-12,-13,1,3,24,18,8,-19,13,-8,2,1,-20,-11,-1,26,26,-16,6,1,5,-8,-7,-2,1,17,-17,-33,8,16,-30,16,89,-24,13,8,-16,-3,8,16,14,15,-24,-14,3,-16,-9,4,-6,9,-1,9,1,-13,3,-4,-5,20,-9,5,16,-9,-10,0,-1,16,5,5,-5,-19,-8,-4,-8,11,7,14,39,-9,14,-13,-14,-5,12,-1,13,-5,2,-16,6,-10,-14,23,-17,1,3,-2,-18,-13,-8,-20,18,-2,-19,16,-1,5,-12,0,0,24,-19,-26,11,0,-12,8,-3,-13,-9,0,8,-13,3,10,15,-3,12,2,-3,-2,19,3,-9,15,2,4,-4,-3,2,4,-11,4,-2,1,-5,-5,7,-6,-1,4,-1,-2,-8,-10,-14,-6,1,-8,11,-10,-9,-17,1,-3,-16,-8,0,15,4,-13,4,6,-23,8,3,9,-19,-6,-6,1,-9,1,-11,11,4,-7,-3,-3,-6,6,-14,18,-6,-1,0,-3,-4,4,4,-6,-12,8,6,-17,0,-8,-5,-3,-2,-15,-6,-8,8,4,-4,-20,6,-5,5,0,0,-15,-6,-1,-10,-7,-12,-10,15,-7,-23,-36,-5,-9,19,19,-5,-14,-13,-11,21,-15,-21,-21,-16,6,5,0,-10,2,11,16,-4,-16,-11,-1,6,-5,-10,-2,-15,-11,18,2,5,1,-3,5,-1,-6,2,9,0,-17,7,-16,6,-16,-15,6,20,2,-2,-17,-2,12,-9,1,11,-28,-4,4,-11,7,-8,-4,-2,1,-2,-7,1,11,4,0,-4,1,-14,-3,13,4,-9,-23,17,-10,-5,-23,1,4,-8,3,2,0,-2,9,16,1,20,-12,8,-11,-2,1,-3,6,-8,-8,12,-13,4,-5,5,4,3,-10,7,-4,-2,10,12,10,-4,0,34,-7,17,7,15,0,-9,16,0,-8,-12,-2,-6,-7,-7,23,-8,-25,-19,15,-33,-5,3,6,4,-9,1,-11,-5,-6,-2,11,-8,-4,-31,11,0,-16,-1,30,-7,-10,-9,-22,-15,-9,1,-2,-5,30,-23,13,1,2,15,5,-1,4,-17,-11,2,7,-9,10,-2,2,-5,-9,-11,-17,-2,-1,-2,14,-2,-7,-6,-4,-12,3,16,-1,-1,2,-1,-17,9,-24,4,-12,-22,1,-5,-28,-29,18,-12,9,-11,7,-25,3,-1,-28,-3,-13,-7,-12,1,-22,-11,-7,-15,1,-24,13,-9,-19,13,20,-18,-13,1,-22,-9,-22,-4,-32,-22,45,-9,14,-6,-3,-5,31,-4,-13,-12,-24,-1,-6,9,0,-11,-9,-1,7,-2,-3,-5,15,-1,-8,-13,-16,-3,0,-3,-6,-5,-6,-8,-8,-13,-9,31,-8,11,-8,-16,5,-11,-4,7,28,23,13,16,26,-22,11,6,-13,-1,-5,6,-8,-2,-15,-7,-8,16,10,-4,4,-24,3,15,-23,7,-9,22,-5,7,0,18,-24,-12,12,-4,7,-4,4,1,-23,3,-12,-5,-6,0,-1,31,-16,10,0,7,11,19,-18,-4,0,10,-4,-19,-2,-18,6,7,16,3,-9,-5,10,3,0,-10,18,2,8,-10,-13,-15,-6,-2,1,8,6,0,-2,-3,-10,23,6,-5,-2,-1,2,23,0,2,-15,-9,-3,-5,10,-20,4,-4,-21,5,-17,34,17,-10,-2,-5,2,-6,6,-3,2,-9,-9,1,-14,-7,-21,-7,-9,-6,4,-15,-6,10,-10,10,7,11,-26,-12,-10,9,-24,4,-20,10,7,7,13,24,8,-3,17,-14,11,-2,1,-19,9,-16,-8,-6,-9,-10,-8,-4,-1,-8,-2,8,-3,12,26,2,7,-5,-11,-3,-12,-6,-2,-14,9,-4,-1,4,-1,1,-2,0,-3,11,-9,-28,6,-10,-1,-20,3,-6,0,10,-9,-23,-20,-11,2,-11,-12,-5,-11,-26,3,17,-30,-2,-3,9,13,-23,-8,4,-9,-8,-11,-1,2,-12,0,16,-12,0,1,-12,-15,-13,-13,-28,14,9,-19,-16,0,-5,-12,2,-7,-1,-7,5,13,27,7,9,20,-27,-22,-7,-7,-23,-17,1,-2,9,5,-6,9,30,29,-10,19,-20,11,-19,-9,-4,-20,-17,27,-5,20,4,4,-5,13,-17,19,-30,-3,-23,-2,13,1,-6,3,-15,-29,5,-13,-18,30,21,34,-15,0,-12,40,12,1,-13,-11,-4,-20,-8,0,-8,-11,2,-8,-4,-10,10,-2,-6,-14,3,-9,0,-5,-4,0,-20,-29,-12,6,0,-1,10,-4,-10,-16,22,-14,3,3,-4,19,11,0,-13,34,-14,1,-4,-7,-15,-18,-8,4,-7,12,18,19,2,5,-6,11,0,-5,-13,-14,-6,-1,-4,-6,-7,-9,3,1,-4,23,-6,21,6,-1,2,10,-1,7,-9,3,6,-3,-10,13,29,-1,10,-12,8,13,-15,2,1,15,1,-3,-8,-12,-20,-15,-19,-11,8,-9,-9,19,-6,3,-4,-21,-13,8,-12,-5,-9,-6,-7,-7,15,17,-13,10,-4,-8,-22,-8,10,8,-7,13,20,16,11,2,1,-10,5,-5,-13,-14,-5,-9,-3,-5,-15,8,7,5,12,11,6,-5,-3,0,10,4,-14,6,3,3,-7,8,-7,-9,-19,-13,-13,-4,-4,-7,-4,1,-11,-8,3,22,11,-4,-3,26,-29,-18,3,-7,2,14,5,2,4,9,6,-6,3,3,4,-14,27,21,-13,4,2,6,10,-3,22,9,-5,-16,18,-1,-18,-17,22,4,-14,5,20,10,-10,-1,27,-10,-18,7,5,-7,8,2,-3,6,-7,-5,-3,10,3,-10,-13,12,5,-3,-1,3,7,6,-7,-11,-9,0,4,-8,-16,-2,5,-15,-30,-2,0,-14,2,2,-16,-23,5,3,-3,-8,-27,-13,-11,-11,-8,-6,-14,-31,6,-12,11,0,24,13,-2,-2,-7,-23,-23,9,3,-16,-20,-11,-31,-9,22,0,8,-5,6,-19,-14,-2,7,-4,-13,-8,-15,-7,-12,-17,28,-8,-8,-4,-8,-10,-15,-11,-3,4,20,-18,-4,-11,1,-9,-11,-31,0,-11,11,28,8,-5,-5,1,15,7,4,-2,21,19,-18,-22,8,9,-2,14,11,-1,5,-7,7,1,-2,-10,24,-12,-3,-19,11,21,-1,15,27,-7,-20,1,-15,-6,-13,-10,-2,-13,18,1,-5,-7,2,-5,0,-17,8,9,-8,12,1,-8,-5,-13,8,-2,2,3,-6,2,4,-12,-12,-1,7,7,-2,5,9,3,14,-9,-12,4,-12,-16,1,10,-3,10,-21,-9,-8,5,6,2,1,-10,2,2,-2,12,-20,2,6,-7,0,14,-7,-4,13,-13,2,-10,5,14,-1,-6,8,-12,-22,-11,-12,-15,-5,-17,-14,-8,18,9,-21,1,-9,-3,-13,-17,-3,-12,4,-17,5,5,19,-12,2,1,-1,-2,-7,3,-16,4,3,-8,-4,21,1,6,16,-28,7,0,-18,17,-17,-2,-2,0,-10,5,17,-16,-9,16,-9,-1,-3,-5,-4,5,3,19,5,16,11,-10,17,-8,8,-5,5,-4,-1,-14,12,-20,27,2,-6,0,-20,0,15,5,-4,-28,-18,1,10,2,-5,-12,9,-13,-3,-12,-15,9,25,-16,4,-3,-4,-12,-3,-23,-2,-12,3,-2,16,8,-7,0,-5,8,14,-7,13,-21,-2,-22,5,-5,0,-11,-15,-7,14,-30,25,6,1,25,4,-15,3,-7,-9,-5,15,-12,10,-1,6,-9,9,-2,17,7,4,-24,2,11,-11,-23,4,4,-8,-14,-13,35,-7,-15,-12,-6,3,-23,7,13,-4,-3,15,-1,-9,-7,-3,19,-12,-13,4,-9,-1,-18,5,-20,6,-1,4,3,-4,0,0,-27,-16,6,-3,-4,-7,0,2,-19,16,-1,-2,5,-5,-7,13,-15,7,10,-28,16,1,17,9,-4,-6,4,-7,-6,11,-18,-18,-13,13,10,-16,23,-11,4,2,11,-24,-8,5,-16,15,3,-22,2,-9,-10,-18,-16,-24,0,0,17,7,-12,8,-6,8,14,-7,15,14,-18,12,-19,-5,-4,4,-9,15,-15,4,14,-7,17,1,-4,11,15,8,-11,9,-12,-8,13,1,-13,9,8,3,3,-3,-25,-21,5,3,13,16,4,3,-16,28,-11,-11,5,2,-37,-13,-2,-1,42,-16,28,6,-11,-7,-1,-5,-2,-10,-15,21,2,6,-4,-4,-7,-25,-20,-41,9,-18,-9,22,7,-10,0,-2,15,-18,-8,39,-8,19,-25,17,-4,-5,-6,5,6,-12,9,-2,-28,-11,-17,11,8,-2,-13,0,-15,0,-13,7,-6,10,4,9,7,0,-7,6,-20,1,-18,2,9,2,-20,-3,-12,-16,14,-12,-16,-6,21,-7,-11,26,-16,16,-1,-10,0,-24,-7,-11,-17,-27,-6,3,-21,-15,-21,-4,-22,-34,-1,-27,-17,-13,2,0,3,-8,-11,8,7,11,8,9,-5,3,-26,13,-3,9,28,-13,8,15,-15,0,-14,-19,0,5,11,15,-3,8,-13,-9,-5,-7,-11,-11,6,-7,3,2,-4,5,-18,13,7,17,1,-16,-4,-4,5,-18,-27,16,19,9,9,9,7,2,0,9,4,-29,-15,4,-11,-14,8,1,9,-24,-2,-6,-33,-34,11,-8,6,-1,3,22,-11,-13,28,0,11,-19,16,4,1,5,-25,-8,14,14,2,-9,6,6,-2,4,-9,2,-6,5,27,6,-3,4,1,-8,14,-8,-3,-17,-10,-13,-4,-6,-14,-11,8,-20,-4,-5,29,-13,33,-3,-26,-3,-8,-14,-10,-24,12,-19,-8,1,12,1,26,16,2,-21,19,4,0,6,-7,-5,-2,2,3,5,7,-10,-23,8,-23,-3,-12,-3,5,-6,3,6,-4,16,5,1,-20,-13,-15,-27,14,-3,-1,-6,-4,1,25,21,-5,-2,-6,-3,0,19,8,0,17,4,-26,-13,-9,-11,8,-2,-7,-12,-2,-15,9,6,15,-4,23,5,-10,18,-6,2,-10,-7,-1,3,-9,-5,2,9,4,-3,-24,-9,-17,14,13,23,-15,5,3,-8,-5,-2,-1,-10,-25,-17,-18,14,-21,-17,7,-3,-6,9,-6,-9,2,-5,-4,-13,-13,-11,-3,-6,-9,-3,1,18,2,0,4,-3,-15,-12,3,-6,1,6,6,4,-19,16,-2,-4,26,7,-20,26,-20,-13,36,-4,-9,8,5,-9,13,9,38,-5,-1,17,-21,9,-6,0,-4,7,-21,9,-5,-9,-7,-6,31,-6,2,16,-2,-1,-15,-29,4,18,8,-8,2,10,0,-15,5,-18,-12,-7,-24,-11,-24,0,-13,2,10,8,7,-2,-6,2,11,13,-1,0,-11,-11,-8,-8,-17,-12,-17,40,-2,-16,-20,-3,16,-21,-16,-12,-3,11,-11,-20,-8,1,-5,-8,-25,-27,11,8,-20,-4,-17,8,19,-14,-1,9,-5,7,-13,-5,7,-8,2,-9,-10,-19,18,-1,31,-16,-5,-8,11,16,6,-22,-2,15,-14,-10,5,-7,-7,-13,-2,-5,-3,12,-11,15,17,-19,9,9,12,-27,7,-3,-15,-20,-18,-12,-7,-12,-18,-29,-21,-4,-21,-9,-13,-3,26,-12,-6,0,3,34,4,-4,-4,-12,-9,-8,2,-34,1,-14,-26,13,1,15,18,9,17,25,-23,-8,-17,-5,3,3,9,-11,-18,1,6,2,2,-1,2,3,-13,0,7,9,14,8,-4,8,5,-10,-5,-4,-1,9,9,19,5,18,9,14,17,0,3,19,-10,-7,-16,-22,-15,-2,-8,8,10,-16,-10,2,-16,-23,-10,-28,6,0,-18,-15,5,3,4,12,1,4,2,4,-13,-14,0,-7,-1,3,-15,-13,2,-11,-9,-7,1,5,-3,0,-12,15,-2,-10,14,-3,-21,-2,17,-3,-13,1,-22,2,4,14,1,-1,25,-10,-20,1,35,3,-11,2,-2,2,-4,-17,-18,-6,32,-11,-9,-13,-13,-2,24,2,-7,-1,5,15,-1,-10,-15,-18,-17,-16,19,-16,7,19,-11,-13,7,9,1,7,-2,1,6,17,-14,-9,15,-13,5,20,2,-6,-1,-7,-9,-28,-13,0,-2,10,-17,1,4,-12,15,16,-16,13,-6,-9,4,-4,4,6,-7,-3,-3,0,3,-19,-1,19,-7,16,4,0,-4,15,1,-16,3,9,13,-3,-11,-19,0,1,-15,18,-15,-9,0,3,-22,8,13,-24,-4,-10,-8,10,25,-2,9,-11,3,22,9,-9,-1,16,9,7,-7,1,-7,11,-17,-14,-14,-12,-15,-2,-1,-19,0,-17,7,-9,-23,29,4,-9,0,4,-15,-29,0,10,-17,-2,9,-12,3,-12,-9,7,34,-1,24,30,-20,-1,17,2,-18,9,-11,-14,2,11,9,8,12,6,-3,0,-28,-5,-16,-13,-3,1,-19,-5,15,-8,-4,-20,-8,7,19,11,-5,11,5,9,-7,-16,-21,11,-20,-11,-9,-29,-2,12,-8,-17,6,0,-1,-9,3,-23,-8,-19,-17,-16,4,10,7,22,-13,-26,-3,-13,-16,-11,-6,-19,16,-4,2,5,3,10,8,3,0,-2,-20,-14,4,3,-21,-6,11,5,-13,8,3,-9,-9,17,-3,-1,-5,-22,-3,-10,-3,1,-1,-8,-3,0,3,7,2,-1,20,-6,-14,11,-14,3,6,-8,-5,-7,-10,4,-14,-10,-4,-4,-18,16,-7,3,7,-8,-2,-2,-23,7,-14,-12,11,1,-6,-6,1,11,13,5,-4,6,-4,-8,-8,12,-9,1,4,-20,-21,2,15,-6,23,9,2,7,-5,-6,14,17,8,1,-10,-9,-22,3,13,-3,9,-3,-7,10,-4,-1,8,-7,-32,29,-13,-20,2,0,-4,-2,4,-15,16,9,19,6,-9,-17,4,36,-11,4,17,29,-10,-24,-4,24,6,19,4,-19,11,-4,0,-20,-17,-10,-14,3,-17,-5,-1,6,-5,22,-11,8,-5,-4,-18,-13,-12,-4,18,-13,-14,-9,-6,15,1,7,-8,25,-10,-10,1,5,7,-3,-2,-24,-2,-6,8,7,16,0,-11,5,12,-18,-33,-34,1,-13,-11,3,19,6,-4,-13,11,-5,-6,12,-5,-13,-5,-9,13,4,8,24,-8,-17,-15,1,-13,-17,-6,-19,9,-12,-3,-13,-1,4,-24,6,4,-5,1,2,-2,-34,4,-18,-3,-14,-7,-14,7,-19,-6,-3,-6,-2,12,8,-15,-14,3,-1,1,-2,-3,12,12,-6,-25,-20,-4,-4,10,-7,-21,-20,-2,-14,21,14,-3,-29,5,-11,-18,-18,5,4,-4,13,-19,-20,-18,48,-5,3,9,-11,23,0,-23,-14,-22,3,-30,4,-24,-21,-16,1,1,11,2,-4,10,5,-21,-25,18,14,-27,-3,-11,-4,-20,10,-10,19,4,-5,17,4,-2,22,11,0,-5,-4,-9,-8,-4,22,1,29,0,23,18,-2,-7,0,-11,-8,-12,1,7,-6,8,3,-15,19,-7,-11,-19,-11,-6,-23,-14,7,-15,-5,-23,-7,-22,-2,-4,12,12,-9,-14,-5,-12,-5,-9,15,-18,-8,-16,-9,-20,-15,-18,-7,5,-11,-3,-7,9,-1,8,-2,-18,-4,-16,4,11,-8,-11,-10,9,-12,-12,14,-5,5,-1,-1,8,-6,4,-13,-13,9,-2,6,15,-7,-5,3,4,-1,-6,-7,0,5,1,6,3,16,-8,27,-12,8,1,-6,0,-10,-8,10,1,2,-11,-2,2,-9,-3,6,1,15,2,-16,-15,-1,-7,7,-14,8,-6,-11,-15,-8,-12,-6,-5,4,3,-13,7,-8,21,7,-4,4,6,15,16,-14,3,1,16,-10,-10,2,-7,7,10,7,14,-3,13,4,8,-7,18,9,13,12,-2,-5,-7,-5,-2,-9,-12,8,11,-14,0,-15,6,4,-2,11,-2,-5,-3,-4,-27,-4,14,-8,5,-20,9,6,-7,-1,-1,22,-1,-11,13,-10,-23,-1,1,-11,7,-21,10,8,-11,-8,-12,24,2,-18,-10,-12,0,-9,-13,1,-21,-16,-14,4,-4,-17,-10,-7,-9,-7,-6,7,6,-3,-8,0,-5,-7,0,9,12,1,-4,8,-7,-2,-5,21,0,3,-6,15,-6,-14,-6,5,-3,17,-10,13,1,-5,11,14,5,-13,17,1,11,8,4,9,-1,-10,-7,17,-3,-19,11,6,4,-7,31,-7,-13,4,1,5,12,-10,-27,2,18,-25,0,-13,-12,-6,10,-10,-8,10,-8,17,-5,-21,-11,-13,0,-1,5,-5,20,-1,12,-8,-13,0,1,0,14,-14,9,0,1,-18,-2,6,-3,-13,7,18,-8,7,28,3,18,15,-1,-12,9,-10,8,3,12,-10,-7,-3,-12,2,-12,13,-12,5,-6,8,-10,-12,4,-18,-2,-7,3,3,-19,7,-17,-12,-23,10,-20,-19,18,23,8,-31,-15,19,-12,-27,2,-6,-22,-23,-16,-6,13,-12,-7,34,11,-25,15,15,-2,-6,5,-11,-11,-13,-9,-19,13,-1,12,12,6,-27,-3,-12,-15,-7,24,6,8,0,-11,-21,8,-6,-13,-9,-7,-16,-13,12,-14,3,-17,3,9,-13,9,-2,2,-9,-17,-6,0,-5,-16,9,-3,14,-4,9,3,-20,-7,17,-6,-22,13,-2,-6,-9,-8,21,-10,-10,-3,16,-10,-13,2,2,8,-11,-7,0,-11,-14,-2,13,-3,-7,2,14,-22,-15,4,1,5,3,6,2,-7,-10,-4,-5,-16,-16,11,-6,-5,-10,-24,1,-14,8,9,-23,9,-10,-12,-7,0,3,-8,2,13,10,-12,4,-19,-1,18,-8,9,-5,-5,-1,2,5,25,9,17,8,-11,15,-4,0,3,0,13,-1,-1,-12,-16,-11,-10,17,-2,5,11,0,12,-11,-10,-4,12,0,11,5,-1,-11,9,9,-15,1,-11,1,5,0,-15,0,14,2,4,-1,-7,-7,29,8,-15,10,0,-14,3,8,-7,12,-3,-24,3,10,0,-21,-21,-13,-17,-33,-30,22,18,-6,-7,13,-29,-33,-11,3,-6,-17,-13,-12,-18,-29,-23,33,13,-4,-16,31,17,-12,8,31,15,-9,-3,12,-17,-21,-19,4,-10,6,3,-3,20,16,10,-4,5,5,14,4,-9,6,-14,-10,-5,4,5,-29,-7,-3,-2,-17,-20,1,-13,9,-9,24,0,-7,15,1,-5,23,-1,-12,17,9,-19,-7,-1,-4,-18,-27,-7,2,9,-5,-8,2,-1,-5,18,1,-23,-1,-9,-5,-10,5,-7,5,-15,3,-20,-15,5,-14,26,-7,-9,-8,-11,-12,-15,-1,-2,9,-8,12,-11,-17,6,-12,-8,-12,5,12,7,-16,-6,-6,7,-6,6,12,22,-3,0,-17,-10,8,-9,18,2,6,7,4,-8,-15,16,-5,-2,15,14,-9,3,13,-5,2,15,-7,-10,5,-4,-8,-6,-2,-5,-7,2,19,12,5,-7,-6,3,10,-11,3,15,-16,7,-2,-1,-14,-1,-4,17,10,4,-20,-2,2,-13,-15,-11,-33,-9,-12,-13,-7,7,13,-14,-13,16,3,-9,-3,12,-3,-6,-10,6,-7,9,13,11,2,2,4,-11,-8,-16,-10,3,-8,18,-18,0,-4,14,0,-5,6,1,2,-16,-16,9,-11,-10,8,1,-3,-1,18,5,-23,8,8,2,1,-19,-4,1,9,-6,16,-4,6,-4,5,-7,0,-6,2,14,10,-2,-8,12,1,-30,14,12,-7,-11,-7,-8,-7,8,4,-23,-15,1,-10,1,-8,3,8,2,-13,8,17,7,-7,1,4,-9,1,-16,-23,-10,0,5,17,-2,-7,13,9,7,-2,-7,-3,15,4,-23,-16,-7,-6,-16,-15,14,0,-6,0,5,-11,12,-9,-2,-4,-5,-11,-3,-7,-12,0,-12,2,-12,4,15,-7,25,0,11,7,8,12,23,15,-18,2,-4,5,-16,9,-3,-13,0,-7,-14,-19,16,19,7,5,7,-3,-2,-5,4,10,-3,-3,-15,9,-8,-7,5,-4,-2,-3,8,5,-4,0,-9,-4,18,11,-2,6,5,-11,1,-8,33,2,-12,1,-5,4,-7,24,19,-14,15,-17,-1,-7,4,-15,-8,-6,-4,-16,12,1,17,5,-2,-19,0,-4,-15,-13,-1,4,-9,-8,-7,-14,26,9,-2,6,-5,-16,-1,4,-23,-15,-22,-12,-13,-2,-8,4,-13,15,4,2,-11,-5,11,16,-10,-8,-13,-12,4,-7,-21,1,-8,10,17,-2,-9,24,11,13,-4,-8,1,4,-2,11,6,-4,6,-11,-7,-10,15,6,-11,-17,-6,1,11,-12,-3,-5,-15,12,12,-18,-8,-10,-3,-25,-16,-4,-19,2,-13,3,-8,-19,-5,12,9,-13,-8,-4,-1,-8,-2,1,-14,-2,-7,2,-14,-7,-19,16,-9,0,5,-13,-4,6,7,5,-6,3,-1,0,1,-14,-7,-1,-6,-3,20,3,6,10,-7,3,-7,11,8,3,-14,4,8,-4,6,-8,-4,-14,18,5,-2,-13,-3,-5,-13,-3,-10,-2,-5,12,-9,2,2,-10,10,-27,-2,12,-20,-6,-9,3,-9,-16,3,15,4,12,-3,-12,-5,-19,-20,-4,-2,-9,-19,-1,-27,-14,-10,2,-6,27,11,-20,3,-24,-1,2,-5,-1,-16,8,-15,-13,4,-5,2,-7,14,8,8,-25,-10,-8,2,-13,-14,3,5,9,-7,25,2,-19,-3,-9,-3,-27,-12,-18,-6,-16,-18,-1,-7,-3,-7,8,6,-12,7,-15,-1,-29,-7,-10,-7,-2,-4,6,-23,-10,9,27,13,-12,-8,-6,7,-27,-37,-8,15,-1,-10,15,-19,-6,-5,5,10,-14,-1,-4,13,-10,-30,-19,39,-12,-16,8,-19,11,-5,9,5,12,8,9,0,-15,-13,15,3,-2,-7,10,15,-4,-7,2,-3,14,-1,-9,-5,4,-6,-18,-14,3,6,-7,-5,-8,2,-10,1,19,-5,-31,-17,5,-3,3,4,19,10,-8,18,-1,23,10,8,20,-11,-12,-13,18,-11,-10,10,11,17,1,5,2,-9,7,-12,7,-19,2,2,26,-13,4,35,-1,15,-2,-20,4,-25,-4,-4,8,-18,-5,-29,-16,16,-23,8,1,16,-15,-2,24,-1,-1,-2,8,-24,-3,-11,-8,-11,-12,-5,3,0,-19,-11,8,1,-22,-21,4,-18,2,-7,-20,-24,-32,21,18,3,8,2,-17,3,5,-25,-2,-11,-13,8,-19,-5,-28,4,24,-3,-1,-19,-7,-10,-14,-9,9,-10,-6,-28,-16,-10,-8,1,3,1,3,-2,5,10,2,-8,-16,-16,-6,-10,-2,17,-5,14,-19,10,17,-6,-6,-14,8,16,15,-9,-16,5,-1,-4,-9,-3,8,0,5,-2,-3,-10,-10,1,10,-14,-8,-18,-1,-12,-15,-2,20,9,-6,0,-2,-1,3,-18,-12,-11,-18,-1,-27,9,1,-17,3,-6,13,4,-10,-12,-10,-10,0,6,2,-18,-6,1,0,-13,-7,7,4,5,-2,2,15,-8,27,5,-12,-14,3,5,4,-14,-14,10,-20,4,8,2,31,-10,8,-5,-3,-1,-12,-6,-17,-1,-9,8,14,-1,3,-4,4,-1,16,-5,-5,-4,10,-15,-14,10,11,15,12,1,-3,1,-21,9,15,0,-22,14,-5,2,-1,23,-17,8,18,-7,-12,7,-1,-8,6,6,12,14,-9,5,-5,13,12,6,-8,12,3,-8,27,1,-10,15,-5,2,-4,-11,-20,-21,1,-19,7,-3,-6,8,5,14,10,-9,-15,-6,-6,-3,-22,-18,14,-6,-16,8,4,29,-12,-14,-12,-20,0,3,5,-28,-12,18,-9,-14,1,-8,-15,-11,-34,-11,-23,-9,-12,-13,13,-17,-9,26,-6,-13,1,-9,12,-3,-16,-21,-16,10,-11,5,14,-13,-15,9,-2,-18,-21,-10,4,-21,-6,6,8,13,20,20,2,8,14,-8,0,13,9,0,7,1,-21,10,3,10,-17,2,-10,9,-12,-10,32,18,-10,11,-2,9,-7,-11,10,-3,5,-4,-14,16,-14,3,-12,17,1,-3,6,-3,-8,-29,5,0,3,-7,-4,11,-13,-18,-12,19,6,-4,7,-17,-15,-15,5,26,13,-2,-2,-1,0,16,5,5,-8,4,4,-6,-1,11,-3,-11,-2,8,-10,-9,-1,1,-11,-2,-6,-7,3,-14,-7,3,19,4,14,7,-18,-11,-5,-12,10,-8,-8,1,16,0,23,-26,12,13,-23,21,-10,-13,-13,2,3,6,3,1,-16,-20,20,-12,-5,4,4,-1,-6,10,-11,16,5,-2,-10,-1,15,-23,-7,4,-13,-2,18,-22,-19,-5,-9,6,-10,4,-20,-1,38,-5,-5,7,-24,-4,15,-20,-13,19,1,21,2,4,8,6,1,-10,-13,18,4,18,15,-1,-12,-7,-5,-12,7,-7,-1,1,10,-10,-8,5,3,14,-9,-7,-3,-11,1,-7,-11,3,-19,8,-1,-6,0,-10,7,-4,-4,-13,-3,3,-3,3,3,-7,-18,1,-8,-15,-1,-4,-3,-12,4,-5,-10,0,-3,-8,-5,0,4,11,-12,20,-5,9,-18,-31,6,-15,12,6,-21,6,-11,-9,33,9,5,18,6,-15,23,9,-28,-1,23,12,-6,-10,10,-15,19,22,-16,-2,-21,2,5,29,-32,11,0,9,-2,-2,4,-14,-1,7,-9,6,-24,15,16,-1,-24,0,-2,-5,-3,-2,34,8,3,8,2,-6,-2,-1,12,-33,8,16,11,-6,-2,-8,2,-13,13,2,2,8,-5,-3,-15,-34,-8,1,-6,-17,-5,-29,-13,-9,48,8,-12,-4,4,-7,3,-10,-13,18,-14,-9,-5,-13,-11,-2,-6,-2,-1,-13,-18,-7,-14,2,-30,9,-18,6,7,7,-6,-4,-2,-1,-1,0,8,-2,-17,-10,-7,-2,2,11,1,4,12,10,2,-6,7,-12,-5,-2,3,-20,4,8,-1,10,6,0,-12,-10,10,-17,12,4,13,-25,-13,-11,-1,17,-17,-10,13,-11,-3,0,-22,-6,-14,-13,-17,0,-6,2,14,20,4,-19,-8,-16,-2,-8,-28,-20,5,-10,-7,12,27,9,-8,-4,0,0,15,7,1,-13,-20,-21,1,-7,-4,-8,18,15,-10,-11,17,10,8,-4,6,10,-6,-3,-2,-19,2,-17,6,5,8,2,7,13,4,-14,-1,10,1,-6,0,-10,26,-18,1,6,-18,-8,-10,4,-18,-5,9,0,-8,-5,4,1,-3,17,-10,15,-15,-8,-1,-1,9,1,-16,-4,-18,10,-4,-32,-3,-4,-1,5,9,14,-5,-3,-10,1,-3,-10,-14,3,-1,2,-5,-11,-7,-5,-7,-4,-1,-3,-10,15,7,8,7,7,1,-12,19,-7,-5,10,13,9,13,-21,-6,-6,-15,-1,1,20,-21,-9,-18,1,9,-5,1,4,0,15,-5,-12,7,4,5,0,3,9,-15,-10,2,3,6,8,14,-15,3,-6,-17,-11,-15,24,-5,-11,-15,-14,-1,1,1,-1,-2,-23,-18,-4,-5,-5,-23,17,1,10,-20,-23,-7,-7,-18,-23,-1,0,-3,10,-3,10,-6,28,2,-8,7,-6,6,0,33,0,1,-12,-4,-5,-8,8,-6,18,-3,9,-10,14,-23,6,-2,11,6,7,-2,6,8,-2,-17,-11,-11,12,27,-13,-9,8,12,6,-4,-12,4,2,-14,-4,-5,0,-18,3,17,-15,-1,10,24,18,9,-1,17,6,-1,-6,-13,8,-26,14,27,-11,-2,-1,-3,-21,-2,-1,7,6,-20,-5,-20,-14,-14,-7,11,-9,-4,-30,20,-5,-7,-18,14,1,-3,21,-19,3,16,7,8,-25,-15,-22,4,-8,10,-17,-15,7,0,-8,8,-3,-12,-7,0,-5,-7,-11,17,3,14,-7,-13,-4,23,-12,-2,-13,-11,16,-8,-12,-2,12,10,12,-7,-18,-1,-13,20,-23,-5,-35,-9,12,-3,-23,-1,-6,0,7,1,13,-11,3,11,1,13,-12,-24,9,-12,2,11,-27,3,-7,0,3,-10,9,12,4,-13,7,-2,-12,15,1,5,-18,3,13,-7,-2,-17,-7,-9,19,-2,-1,-13,11,-18,-16,12,-12,5,11,-9,2,-4,-12,14,15,-9,-4,-10,13,-8,-14,12,-7,28,1,-14,-11,-7,0,9,3,-22,-9,1,12,-8,-26,-6,-22,8,19,-10,-4,12,9,-1,-13,1,6,-1,-5,-2,-8,13,-16,1,3,2,16,-2,2,-9,17,4,-7,-8,5,11,-8,-3,-12,-13,-4,29,4,1,-32,0,-19,3,-7,-15,2,-1,-12,-1,-8,2,-19,-6,22,15,-10,1,13,-13,-12,-2,16,3,-16,-4,-4,13,-14,-3,-2,9,4,-5,-6,-13,-6,-5,-8,-6,-22,0,1,-5,-14,-9,-3,16,3,5,-10,2,-4,0,-6,-1,-17,2,9,11,-15,-15,-8,-5,-16,-2,0,-1,23,15,-23,7,8,-1,-28,20,-11,-2,-25,15,-17,-6,6,19,-6,-13,-8,5,-19,-1,-28,0,-11,-6,2,15,-2,-15,10,28,10,0,5,4,-6,1,4,7,11,34,-27,-12,2,-11,-15,-2,3,2,-15,-9,-27,11,19,-2,1,6,-3,-26,-12,1,5,-18,-4,-7,1,-15,-14,9,6,-10,4,-7,-13,-12,-26,-6,14,2,6,-3,-10,-21,-19,-6,9,-6,-1,-26,-17,-17,12,-14,9,0,-5,-7,-15,8,7,-9,8,-7,30,-9,5,-15,-2,6,15,-3,12,2,7,4,6,10,11,7,29,-1,-6,-17,0,-11,3,-13,7,-9,1,-25,-10,21,23,2,-4,12,2,-11,-4,-1,-1,-15,-12,1,3,-11,-11,13,-1,-6,17,2,-4,-7,-8,-22,0,-12,-7,-9,-23,1,-14,6,32,12,11,-31,2,-24,13,-17,-25,-18,-4,-7,-21,3,1,-22,31,-12,-5,-21,22,-11,-10,18,4,7,3,7,6,9,-10,-2,-19,-22,-11,-10,13,2,-5,8,1,6,6,-8,3,-10,-3,-9,-9,-8,-11,-11,-2,1,4,-7,-8,-3,11,-1,15,-6,-4,11,0,0,6,0,3,1,-1,-12,-15,-7,-10,-4,7,3,-9,11,9,-9,9,4,7,-6,12,-1,-5,-16,-7,-1,-12,2,24,-4,11,11,1,-6,-2,-3,0,15,17,-19,21,-2,11,11,-9,16,-10,-10,2,-4,4,0,3,4,-6,-2,-6,5,4,9,-13,8,2,-7,9,-18,9,-7,-1,-2,1,-2,9,1,15,9,-4,11,6,6,-3,-10,5,6,-10,-21,-24,-6,-3,1,15,0,-6,2,-2,6,-5,-14,6,-9,-7,-17,-14,-2,-5,3,-21,3,-2,-10,-1,-15,-14,-5,0,-4,-13,-8,-5,-13,6,-7,-9,8,-15,14,-20,1,4,-20,-9,-18,21,17,1,6,-2,-8,-2,9,-22,8,-8,-14,-22,4,-15,-17,41,6,-24,4,-16,-6,-14,-3,-17,-21,-11,-9,27,17,0,-21,27,-12,-39,-4,-19,-6,-27,10,2,-7,-11,5,6,2,-1,-11,-9,6,-8,3,-5,-11,-11,14,0,-14,7,-14,-11,8,-8,3,-12,1,-6,4,8,-13,-13,11,-14,9,-1,-14,4,-10,-2,-19,-5,8,10,-8,15,-11,2,6,-17,13,-7,7,-14,-12,-11,-15,6,8,-2,-3,-9,9,8,7,-13,10,-5,25,4,1,-8,34,0,-9,-6,4,-23,-2,-27,-22,-4,-3,-22,-6,17,1,-6,-23,-13,4,-13,3,-17,2,-17,-5,11,-8,0,-9,-4,-5,-14,-2,-20,8,-21,8,6,1,-9,3,-18,-12,1,4,-9,-11,2,-23,-20,24,6,2,8,-4,1,-11,5,-7,-18,-8,-1,-4,10,-7,-25,-6,15,5,16,5,21,3,-10,1,-21,33,-3,5,10,25,-6,-10,9,22,-4,-5,-1,-13,10,20,6,-16,10,17,-2,2,-2,12,-15,-15,4,0,-9,-1,3,19,20,-8,-5,15,-6,17,-16,8,-2,-14,11,4,-6,3,-5,-1,13,-4,14,9,-10,3,-8,-5,-4,-7,2,13,-15,6,-3,-10,5,2,0,9,0,-13,4,5,-4,-20,8,10,9,-12,-15,-6,-12,-15,-13,-10,6,-1,4,-1,-1,-13,1,-1,-4,-14,5,2,4,23,2,-8,16,4,9,-9,-11,-9,2,8,-7,-6,-2,12,15,26,-2,-7,-1,-1,-10,10,-9,17,5,6,-10,-6,-6,15,20,30,20,-20,-3,8,-4,-11,-11,-5,-8,11,-4,-8,3,-5,1,11,-9,-5,-8,-7,12,-3,-5,-3,9,-11,-18,-3,-10,0,-13,15,-7,-16,-18,-20,-6,-2,13,-4,-3,-14,-20,15,-19,1,-20,-1,-13,-5,6,-11,-19,-23,15,18,-11,0,33,-3,-7,6,7,8,-5,7,-19,0,-12,-18,-2,-5,-8,0,9,2,-8,-7,5,-19,-15,-6,7,-3,19,-1,-14,-18,1,-7,-3,9,-2,-15,-10,-27,6,-5,19,22,23,8,-12,-9,-8,-4,-16,-10,-6,21,-6,-14,4,-8,4,28,1,2,-13,-11,-21,-16,-16,-22,-21,-6,-18,-19,-4,-1,-12,-5,-14,-11,18,7,-27,-16,0,-9,-2,-5,20,-10,-13,-7,2,-2,-17,8,-7,-12,-17,-6,-3,-5,-5,-10,7,-12,-14,-21,22,-29,28,28,0,0,-5,-6,-15,1,19,-4,-5,-21,7,-13,6,0,8,12,10,-4,-14,-8,-14,-16,-10,23,0,-11,1,-31,-9,-8,-1,-3,-4,-25,-12,7,-12,-15,-16,-12,19,-10,-15,-24,20,-2,-8,-21,-15,-4,6,-22,-18,-2,-10,9,16,16,-20,5,40,6,3,17,19,-12,5,-1,-7,-30,-35,5,-10,-7,-2,-1,1,-1,-28,14,19,-14,3,28,2,-14,-23,0,14,-9,-14,18,-8,-8,-18,-16,0,-5,12,8,-8,8,-8,0,33,3,-5,-14,-8,-32,-14,0,-13,-14,3,1,4,-2,-7,16,11,3,-2,-6,5,7,27,-8,-16,-17,-4,-3,12,-5,12,4,-20,5,8,6,0,-18,6,24,15,7,-2,-11,-13,1,2,13,-27,3,40,1,-14,-10,-19,-3,19,30,1,4,17,1,-12,3,2,-1,14,-6,4,-11,-9,0,-17,10,-8,19,10,3,2,-5,-7,4,1,11,0,-9,18,15,-6,15,-6,14,8,13,2,13,11,5,2,4,-5,-2,4,7,-2,-5,10,6,12,4,-8,-16,-10,-6,-3,15,-6,0,-16,-5,3,5,16,2,-10,21,-4,-2,14,-4,10,8,-8,0,-5,-19,9,11,-4,-4,3,16,-8,-6,18,-1,6,-5,0,11,-5,-4,-9,-5,2,10,-8,5,-18,-14,13,-5,24,0,2,5,-9,-1,-23,-7,-3,-12,-10,-10,4,8,12,12,7,-14,11,-20,-10,1,8,-11,1,19,4,-17,1,2,-11,-3,-11,-19,-12,-34,2,-1,-15,-9,-12,8,-2,0,-14,6,2,-6,-22,-24,15,-6,1,-2,-26,-2,-12,-8,20,-9,12,-4,-16,1,-13,-8,4,-5,4,17,-14,1,-7,-20,14,16,7,5,-17,8,14,2,-12,0,-2,-13,-14,0,-3,-4,1,18,12,-5,4,8,4,-4,22,0,-3,3,1,-8,3,-7,0,-5,8,-2,-12,-2,-14,-14,-6,-7,18,-1,-9,-1,-25,-13,-13,14,5,-6,-19,11,-4,-10,25,12,14,-7,2,18,-11,8,0,4,6,1,-11,8,0,1,0,18,-8,18,-11,-3,-2,-4,-9,12,-3,15,2,-2,5,1,-19,4,-15,-11,-14,5,-2,-6,-7,9,9,2,0,-5,1,-8,0,10,5,-5,19,-8,-7,10,-11,-8,6,15,5,-8,-19,8,-5,12,0,2,-4,-6,-6,6,-1,-8,-5,1,-8,-1,-4,4,36,-18,0,6,7,-9,-4,20,2,1,-13,14,4,0,1,-8,24,-4,5,5,-10,-23,4,17,-11,-1,0,1,-6,0,9,-6,-11,-15,-8,-9,2,13,-4,-8,-10,19,9,-13,10,1,-18,-12,5,10,-10,4,3,-6,-20,-8,-5,-2,-5,-5,12,8,5,-1,-5,5,-16,-1,-9,5,-13,-15,-8,-5,-16,-8,-19,-7,-12,-11,-5,20,3,2,14,-9,-2,-13,-10,-22,-9,-3,1,-8,3,14,-20,5,-9,-1,-27,-13,-10,-1,-21,12,-6,-9,1,-5,1,2,2,4,-15,1,-12,-9,-14,-2,-16,20,-21,-1,-6,21,-2,-11,20,7,-7,10,-9,7,4,17,10,1,5,9,4,3,15,-18,-13,-5,6,-1,-3,-1,-8,3,-13,-1,1,8,-13,3,-9,-13,-12,4,-22,5,28,17,22,0,-28,-22,-25,19,5,4,4,8,-20,9,-25,-12,-5,10,-1,-18,-38,-11,-13,17,-3,0,-5,28,-4,23,-9,13,8,11,-4,1,-32,-14,-21,8,-12,6,-8,40,-13,-8,-15,-17,-2,-3,-8,-3,-15,4,-10,14,-13,7,-17,-19,-19,-14,-16,-5,21,26,8,-11,1,-1,-9,-6,-20,-7,-22,-16,10,11,13,-15,-8,29,1,-22,2,-2,-21,-3,-18,0,1,-4,4,1,7,-2,-9,-28,5,-12,-28,-10,11,0,5,-16,1,-1,-7,-10,1,10,2,15,2,4,0,-12,-4,15,-17,4,-21,7,-10,11,12,-19,0,-8,-21,18,-15,6,-15,2,2,-2,6,8,-2,-5,19,-12,-8,-2,-9,-4,-8,-11,-10,-4,7,3,20,11,11,10,21,-6,-6,-10,-4,-5,-9,-3,-23,-10,2,4,-6,-7,5,1,-5,5,-9,-14,-2,-5,-21,3,5,-27,40,-10,17,5,-12,-23,-7,4,-24,-9,3,15,5,9,12,19,24,-6,16,6,13,5,0,-4,-6,-34,-19,6,-3,-7,-19,-11,15,10,13,1,17,-15,10,1,0,-6,-9,1,-10,-1,10,-19,-5,34,20,-20,51,-4,9,8,-4,-19,-32,-9,-10,-13,10,-6,-16,15,-12,-17,24,21,-13,9,-7,-20,-22,8,-2,-29,-9,6,9,-10,-1,-14,2,6,-27,-9,-20,-3,31,2,33,6,-7,-17,-1,3,3,11,8,16,-15,1,-16,8,-10,-3,1,1,3,-3,1,-6,1,5,-6,8,-16,-4,2,17,-7,16,-11,-2,-11,-6,-13,0,-14,-12,-16,-12,9,-7,-14,-10,-5,13,-11,10,10,-11,-11,7,-12,-11,-18,-21,-1,-7,3,-4,-35,1,-10,9,14,12,-2,-15,-9,-9,-2,-20,-7,-8,11,14,-17,9,10,4,-17,5,-13,10,-12,-2,-13,-8,0,-1,-28,8,-6,-13,-8,-1,3,3,9,13,-5,-6,-9,11,-2,12,-9,0,25,3,-12,14,-5,8,-14,-6,-7,-17,-11,-24,0,9,-5,-10,5,-5,-27,32,1,-2,-7,2,9,-12,-1,-11,6,1,40,-8,-8,-7,-16,-6,-13,-5,-1,-25,5,1,14,-21,3,-17,52,-17,-5,13,-19,-10,-17,-10,-5,-19,-8,-3,15,-3,-18,-9,-6,-24,17,8,-2,-6,-38,-9,-8,-5,11,-18,14,-7,-33,-25,20,8,5,23,5,0,-3,8,-10,18,4,4,-1,4,5,-12,7,2,2,15,4,3,-8,12,-5,-7,-11,-4,11,-8,-7,14,4,-4,-6,-7,11,-19,-21,13,-1,3,16,10,-3,-13,-7,4,-9,-5,13,9,-16,12,-7,-7,-13,-22,-9,-9,4,-27,-16,-11,-4,-2,-31,-29,-6,-8,-15,-10,-10,-2,5,-7,0,-20,-24,-13,1,5,2,-23,-9,-1,9,8,-3,14,0,-3,2,-7,23,-11,1,-2,17,-5,-2,16,10,-9,-12,13,-11,-17,-12,-16,5,9,4,-14,-17,-4,5,-7,-2,12,-3,13,3,0,-9,-2,-5,22,-3,-21,-7,5,6,-1,-16,5,-19,-5,-7,-2,20,-12,2,1,-7,6,1,-22,7,17,4,-18,0,5,10,-16,2,-15,1,-14,1,30,2,0,5,12,-2,-6,-6,15,9,-7,1,-3,15,-8,1,4,10,10,-6,2,0,-10,-8,7,1,-32,-13,-13,4,-16,-8,-4,1,-12,-12,-15,-13,4,-6,1,-1,-21,-9,-14,-15,-2,11,-20,5,-3,-3,-13,-1,-7,-8,-13,-6,8,4,1,7,3,-15,16,16,6,0,16,-9,-17,5,7,5,8,-5,-3,-6,-13,-11,13,7,-2,12,3,1,11,-1,9,-13,9,2,8,20,0,3,-2,3,13,-2,10,-15,3,-12,2,4,-25,-14,-1,14,-7,-5,9,-6,-9,-10,1,23,21,-9,-4,-13,-11,-3,-2,-4,-12,4,-5,-4,-2,-1,-13,11,-18,-19,4,-23,-7,-4,21,8,-13,-4,9,13,1,-4,-3,0,-16,6,-4,-19,7,7,0,0,-12,-10,-6,-7,-7,-2,-13,3,-1,3,-2,-15,5,10,0,10,8,9,-6,5,5,1,13,-11,8,-1,14,-3,-6,-1,-3,-4,0,-1,0,-4,-4,-3,6,11,-9,18,14,-24,-16,13,2,-12,-1,14,-12,8,9,-2,-4,12,-7,7,32,-3,-24,-18,-5,-9,-29,6,4,0,-14,-5,-22,24,21,32,6,-13,-4,-11,3,-18,8,1,-2,2,-5,23,-4,-7,27,-15,-17,-23,2,-22,-5,-13,30,12,-5,4,0,6,11,-7,-14,-13,2,-11,-19,-2,-9,5,19,-5,-7,-8,-2,-13,-11,-6,-8,4,-5,10,-2,15,-12,10,-9,-11,-4,-9,-3,4,-23,-9,4,3,-11,-21,-7,16,4,-4,11,-8,-13,8,-2,4,-14,28,-17,-14,3,-13,-10,0,32,10,1,2,-13,-6,-11,11,17,13,-12,-8,-9,23,25,23,-9,20,-10,17,4,-2,0,-22,-5,12,-9,5,-8,4,10,15,-12,13,-15,-5,5,21,-5,-10,-2,18,6,2,0,14,-3,10,-15,-9,-1,-11,-6,0,13,8,1,-15,23,-11,-2,-17,-16,18,27,5,0,-16,13,2,-5,-14,-18,-25,11,-23,6,13,-19,-16,7,-25,-15,19,-5,13,-8,15,21,-1,-23,-7,7,5,-7,-11,1,-11,-22,6,-3,-1,10,-7,-8,-12,-5,2,8,-7,-9,0,2,10,-11,-7,26,7,17,-1,-26,1,2,7,4,15,7,0,-6,9,9,-14,-3,-11,-11,-19,-8,24,16,-4,0,-6,11,-8,-17,-13,-14,-4,-3,-23,-9,-33,0,-12,1,-3,0,7,-3,2,-25,-12,6,17,2,-6,-5,1,23,-20,0,-10,-11,5,-24,-8,3,-29,4,-20,1,-2,-1,2,8,-12,3,-1,5,-14,-11,-14,8,-12,16,-5,-15,14,-10,20,2,-12,7,-12,-14,-12,-14,7,-8,6,6,-1,-4,8,-6,-7,-10,-3,10,-15,10,-4,26,-24,-4,-10,-22,-18,9,-10,3,-24,2,-13,5,-1,-4,-5,8,11,-3,-2,-8,14,-5,0,-6,-5,9,-23,1,-15,4,-16,-12,-7,2,10,-16,7,-9,-5,-13,-10,6,0,9,2,9,-4,4,-20,16,4,-11,19,-12,2,-1,-2,25,2,9,11,10,22,-20,-16,2,-3,-9,-6,-5,4,16,-7,4,8}\n\n#define CONV3_BIAS {18,36,-46,-45,64,8,13,-19,28,1,14,-57,23,20,-2,32,48,-11,85,73,-7,52,125,33,125,13,92,-72,89,-1,11,70}\n\n#define IP1_WT {38,-13,5,-20,15,-4,-3,13,36,-19,10,14,-18,-17,-11,15,25,-18,-16,-9,-9,-8,-4,21,-11,10,4,6,7,9,-14,-9,17,-6,1,8,18,5,14,12,0,2,9,-8,-3,15,-7,2,-18,-6,-26,20,-6,9,10,-2,12,11,-10,-7,18,-12,-12,41,18,6,11,-3,-1,2,11,24,1,22,9,6,4,33,-18,-12,-26,-22,7,3,-2,-8,-3,-8,19,-16,28,-18,1,2,16,-26,-30,-18,-12,-30,9,9,-7,13,7,12,-11,16,-2,-1,14,-10,15,11,4,-15,-5,-12,7,22,-15,-12,-7,1,22,1,-12,29,3,1,-3,-12,-5,-7,-1,22,20,-6,-20,25,3,5,1,2,-17,-2,-2,4,4,0,15,-19,6,-7,-20,11,-18,-26,14,1,0,-9,4,-8,11,-16,-1,15,-16,-7,17,-13,-10,1,2,8,14,-2,-16,32,-10,-10,12,-16,9,-11,-10,-15,3,9,-30,58,4,-20,6,-10,-6,11,0,-1,13,14,-14,0,-3,-12,-4,22,2,2,14,1,10,1,-12,-8,17,-12,-1,-10,-9,-9,-2,11,-28,-25,-6,-5,4,10,-3,11,6,16,13,-3,-6,5,35,-12,-1,5,26,-3,-29,2,-4,-6,-15,-6,-11,8,-8,-12,1,-13,-2,7,12,-16,7,-5,11,20,-6,-2,42,21,36,-4,-12,1,-4,25,6,0,-12,5,28,-5,1,5,-15,1,-2,1,-5,-4,-10,41,-14,9,-11,-23,0,33,0,-9,13,-9,-3,6,1,4,1,3,-9,4,2,-16,-2,21,-32,-9,6,-12,-2,3,-7,29,-8,-27,10,-3,-3,10,-20,-3,12,0,-4,-4,-11,7,-6,8,2,-11,6,7,-6,-13,-2,-4,17,-11,5,0,11,1,4,-6,-17,-9,-25,7,4,4,21,17,14,-5,4,-12,-17,5,46,-7,17,-10,22,0,-9,-13,-13,12,-4,1,-4,-17,-2,-7,-14,-14,-14,7,9,-11,-2,3,6,15,4,6,3,8,20,10,16,-4,-20,-10,25,7,-4,5,3,1,-2,-2,8,2,9,-2,-6,2,-5,-11,4,1,24,-10,-11,11,-17,-4,-5,-14,11,2,2,0,10,13,-31,9,-14,13,19,21,-29,-10,4,9,-33,3,9,0,-13,-16,-1,-3,-4,20,3,-2,12,-6,-38,-16,-17,-8,10,12,18,-10,-8,16,25,8,-4,-1,4,-12,-6,-8,-2,11,-10,2,-16,-11,40,-17,11,5,4,-21,-1,25,33,-5,12,-7,1,6,2,-4,5,-17,17,12,-18,3,6,-8,-9,33,-5,10,-22,-3,16,-3,-22,29,45,-5,-5,-19,11,13,-10,-12,-15,8,1,16,14,-3,-4,7,-9,-5,-6,1,2,5,-15,-32,-11,-9,8,-8,9,3,-18,-4,23,12,4,-14,36,3,-4,41,14,-3,-2,2,-3,12,4,-4,8,-15,-2,7,8,8,3,2,4,11,-1,10,-26,12,-7,11,-16,-1,28,-25,19,8,-5,-8,-3,-8,-4,16,-8,-14,-9,3,16,8,8,8,4,-12,3,-6,-12,3,22,-7,-21,-11,-14,-4,-1,7,-10,-3,6,13,-14,61,-10,-14,-15,-3,13,5,-30,-20,-15,-25,5,10,-9,12,8,-1,-7,5,-17,-1,-13,0,11,-6,60,5,0,-20,6,21,-22,6,-12,-9,1,-3,1,-19,-21,-7,-4,7,-15,-6,-9,11,-5,-5,12,-12,6,8,15,2,-6,-23,-23,0,-4,6,-8,-9,-21,31,-5,3,-5,1,5,-1,-7,-6,30,-14,-3,11,11,5,-4,0,15,-7,-8,-3,-4,2,-15,-4,-20,-7,13,-10,-15,-19,-25,-16,76,-15,17,26,2,7,-16,-17,-14,-1,-9,21,-4,-5,2,42,-6,2,-8,-6,6,6,-5,3,-10,-2,6,14,-12,0,4,22,26,-5,-12,-1,-4,28,19,2,11,-22,27,-20,-6,15,-9,1,-10,-9,4,-6,-5,4,0,2,5,-11,-9,-11,-6,16,22,-4,-3,2,1,-7,11,6,6,8,-13,-9,-16,7,1,7,-16,-15,-2,-3,11,3,-12,6,-17,-15,18,-5,11,8,-10,-8,22,5,-6,-4,-17,-10,-2,12,-16,2,-7,-5,12,4,-18,1,9,-14,-5,1,-4,13,-6,-2,11,-8,4,1,-8,-8,0,1,6,-4,23,4,-3,-7,1,20,-11,-8,1,-14,3,12,10,-6,-5,44,11,5,-2,-3,24,3,6,2,1,0,-13,7,2,13,-9,7,9,2,-14,2,27,-14,1,-10,3,1,23,-10,6,4,-5,12,11,-7,-3,-7,1,-11,-9,12,-21,7,-10,-9,-14,17,-2,-2,-4,2,24,-8,-12,-4,4,14,5,21,12,-7,0,-3,3,-12,0,2,5,-5,11,-4,6,-2,33,-10,-2,15,-6,-10,12,-10,5,6,7,-2,11,3,1,16,2,-11,-6,11,-10,-5,-3,6,-7,-27,5,1,-1,-2,-2,3,-18,0,4,-10,4,1,-3,-10,5,-7,13,-16,-15,22,2,8,-2,16,23,-11,19,-3,-12,-11,9,-11,-24,8,-17,-5,-3,-22,6,2,8,12,-17,10,4,-1,-6,0,-17,5,5,-1,-22,1,1,3,31,-7,6,-3,5,6,8,-4,-1,-11,11,-12,-10,31,-8,-2,-10,-9,28,2,-10,-8,-19,6,7,4,-16,17,-5,9,-17,-11,-3,13,15,-14,-5,10,-19,0,-2,7,-6,1,2,13,3,4,-14,-1,-14,-7,-11,46,18,2,6,-10,-18,55,14,-4,-1,3,7,-12,23,19,8,0,-12,9,-4,-11,-10,-21,7,9,4,-16,-2,-6,18,-14,-15,-9,-11,-10,-8,3,4,-21,3,-9,9,13,0,19,8,-12,-8,-30,1,6,6,9,-23,-1,3,-25,39,-27,11,-19,8,-12,7,17,0,10,-7,-5,-2,19,-3,-12,-20,9,4,18,4,4,10,-6,10,-20,1,6,-3,6,4,5,-7,-3,-6,-8,5,16,14,12,-20,2,-6,9,-14,-2,-26,2,12,12,-15,-16,14,6,3,-8,-5,-1,-4,0,-12,1,6,6,1,8,-4,-9,-13,-5,-16,42,-11,7,-8,-21,-2,-5,-13,-15,-11,-7,5,-11,15,32,-3,-10,6,-10,11,-8,10,19,-17,-28,-1,-14,-8,-12,-5,2,-12,3,31,5,-19,33,3,10,-9,-1,4,-15,1,12,0,-8,-20,2,2,-13,1,-5,11,0,-17,1,-8,5,4,3,15,27,4,-2,5,-36,2,-2,-16,0,12,-5,-3,6,31,-12,-14,0,-8,-1,-14,8,29,-8,-2,5,-3,1,-12,-4,10,12,-4,-8,19,-1,-15,-1,9,14,2,-16,-2,15,3,10,-11,-5,-2,2,9,2,-12,4,11,0,3,2,-10,-11,15,1,0,-23,3,-3,-23,0,-6,-12,-1,11,-12,-13,2,-4,-5,-3,17,0,0,0,9,-3,4,5,-9,-11,4,-5,7,-9,-1,-9,11,-7,-16,-3,-9,-7,-11,8,-2,-6,3,11,3,-4,-7,-14,1,12,-12,-1,-9,15,19,8,5,2,26,7,-19,-7,-17,-4,-7,-1,33,-15,1,-8,1,-4,-6,-5,-3,-14,10,-1,-2,12,6,8,-7,26,-6,-12,6,0,31,-9,19,-11,-2,14,-6,16,-1,1,5,6,-4,-13,4,11,-6,2,7,-6,-15,2,-3,7,-3,-13,2,-5,-6,6,4,-4,11,-2,32,-3,12,0,20,-1,-8,-1,-10,5,18,-37,-13,-5,16,-3,11,6,10,-3,-2,9,1,-17,1,-13,4,4,5,-6,2,1,11,-18,-7,-11,11,-2,-9,-3,7,0,-16,6,3,3,9,-9,1,26,-9,3,-6,-12,3,1,17,1,-5,4,2,3,-22,6,-18,-18,-17,-15,27,6,9,5,9,12,-9,-2,-13,-3,-12,10,0,-3,-8,-3,8,7,16,1,-9,38,14,-9,-8,0,-8,6,-11,-19,-3,-9,-18,13,5,-5,13,-4,-2,-8,-15,5,42,-14,-4,0,0,-3,12,-2,-5,5,18,-39,13,-6,12,7,13,6,8,0,7,2,-49,23,-15,-11,23,3,1,11,-1,-3,7,-1,-26,24,7,-2,-11,3,15,2,14,3,-5,21,-19,-17,4,-4,-16,-18,9,-11,25,1,5,-7,7,-2,-15,0,-5,6,10,-2,5,7,-12,-8,-4,10,16,0,-32,7,-7,-26,-24,20,-5,4,-6,2,-5,-4,-3,6,13,-17,10,14,-3,-11,-9,15,4,1,-11,-8,-10,0,20,18,19,-5,22,-11,23,-2,-8,5,9,11,2,-11,31,-14,0,-14,1,11,-6,28,30,-7,-7,9,14,-6,8,1,-5,22,17,-19,-18,-13,5,18,3,11,-1,3,3,-7,4,-11,-3,-9,-30,20,-18,14,8,11,-1,23,-13,5,-11,0,-8,-4,-5,-9,10,2,2,0,17,14,-21,25,-18,-2,-8,0,1,0,-1,-29,17,-4,-18,18,-10,7,9,3,-3,0,-5,23,18,8,9,9,17,-14,4,10,-10,3,-13,-4,-3,6,-9,21,-25,2,6,-2,-26,23,-9,1,20,8,9,-12,-2,3,-6,-2,-10,-6,5,-3,23,-7,14,-7,-14,3,-7,-4,-16,-6,13,-3,-5,-5,30,-6,7,7,6,5,-23,12,8,-18,-14,-6,23,-14,-5,4,-1,19,18,1,-6,6,-14,-2,9,21,5,5,-1,2,2,-8,4,-5,2,-8,-14,-1,-3,15,13,6,-10,0,3,1,5,-12,12,-6,10,-7,16,3,22,10,-6,25,-19,-2,-11,-15,8,-14,6,-9,10,-3,8,5,-2,-13,-10,-4,-5,0,-1,-5,-1,-16,-3,3,6,4,22,9,17,-2,-6,-16,25,1,4,4,23,-10,0,-2,-26,10,2,25,22,-1,0,1,-16,-5,-7,-10,-22,-14,10,-7,15,31,15,-17,-7,36,12,-22,-3,-7,10,8,-2,2,7,-4,8,2,-11,6,17,-15,2,-22,-33,-19,19,-23,-8,1,9,-10,10,2,4,5,-6,17,6,0,11,-8,-10,-18,-6,-2,21,3,-11,-1,4,6,2,17,15,-13,-1,7,27,-11,-1,-2,2,-9,2,5,3,2,-3,-3,3,18,12,-1,11,-7,24,-7,-5,-9,16,3,6,-5,8,7,1,-12,-2,15,9,-18,1,-1,-12,0,-5,5,9,-17,31,-4,-8,-10,-12,9,-2,9,4,-18,12,-11,-6,5,0,3,16,2,1,10,-16,-4,9,-6,-3,-2,9,-10,-16,12,5,9,-6,31,11,-2,-16,-12,10,3,1,-9,-8,10,4,-7,-6,-15,6,-10,4,17,-24,17,2,-33,9,-23,-1,-1,32,-5,16,-8,3,12,21,-1,-24,-1,-24,27,-3,-8,18,-1,-10,-7,45,-39,-18,2,-4,-6,5,5,-19,34,15,36,11,8,-7,-14,-11,0,0,-11,2,6,-18,-25,-17,1,-3,-15,-31,37,-9,-14,10,-24,1,-16,1,13,-21,-11,-5,15,5,6,27,4,27,24,-5,-19,37,-19,-18,-10,-17,-17,-16,-1,18,14,11,12,6,35,-17,35,-14,-12,-5,7,1,-8,-9,10,-8,-14,1,23,1,-24,-7,-4,-20,49,18,15,8,-12,-30,10,0,-7,-8,10,-3,-2,6,-25,-22,-10,-10,0,1,9,-18,-7,6,-11,11,-6,7,-12,1,-16,-15,-10,22,-5,86,-12,16,-41,-11,-1,-1,12,26,11,-7,12,-20,42,6,8,16,6,-27,4,2,-24,-20,7,43,-15,-5,-2,-8,3,-15,12,-16,-4,5,-5,1,2,9,3,-17,19,4,-11,-1,8,0,-13,6,-10,15,12,-28,-14,55,-4,13,16,-42,-5,46,-10,-8,-3,-14,-13,-15,0,26,-7,-8,25,34,-12,-34,22,-10,-9,-17,-5,11,-11,-14,-6,-6,-9,0,14,7,-14,-19,7,-8,37,-13,-7,-7,17,-16,19,23,-14,-13,-7,-18,9,18,-20,-25,1,-22,-26,14,-28,16,-17,-6,4,6,-26,-6,-5,-6,-17,-5,-5,19,13,22,-16,-14,4,-8,-15,3,2,8,7,-3,-6,-2,17,9,5,1,-12,-14,0,-14,-9,11,15,39,-5,-25,2,-18,-5,4,-1,23,18,-9,-7,2,22,-10,10,-13,37,14,-11,-9,-6,-5,14,-6,-9,-8,0,-8,6,28,-7,7,25,-13,-6,25,-3,7,-11,-14,-8,-7,-14,15,10,6,11,33,-2,-23,-16,10,14,-3,8,-10,0,-14,17,7,2,24,-6,-9,23,-1,-19,-7,14,-14,-4,-2,6,2,5,6,-1,-11,9,5,-7,9,-7,-6,14,-14,-6,3,9,0,-1,-4,2,14,-22,-11,18,8,-36,2,-1,9,-14,-4,2,-8,4,-1,5,-8,29,-16,10,-1,1,-8,35,1,10,4,-17,-13,15,-4,0,0,22,-31,4,18,-7,0,-2,-11,-15,29,10,3,7,3,5,-16,26,-6,33,-8,8,2,-7,9,12,11,10,11,10,2,-4,-17,9,-16,-29,-7,-1,-19,29,-11,0,3,-3,1,26,23,-3,7,-4,19,-5,-29,20,21,7,-4,3,-23,-5,-11,3,1,-27,-5,20,-12,22,-5,7,14,-6,-15,-16,5,-19,-7,11,-2,-16,-7,-12,-12,-21,-9,3,-9,1,-14,11,-11,-9,6,-27,-13,-7,-6,4,49,-7,4,9,-13,-12,56,4,11,14,-15,12,19,-4,-25,11,-17,-22,15,4,-6,-8,2,-5,0,-11,1,-23,-6,3,21,-12,-1,-7,-22,-23,-1,19,1,-7,-10,-20,5,-8,5,-21,-1,-2,13,-6,-11,5,-9,-9,-13,18,-3,2,5,-12,-6,30,-13,-4,-18,20,0,8,-8,8,4,0,-7,6,5,6,29,9,42,-2,-12,7,14,-10,-13,1,-1,-17,8,-19,4,-17,-13,-20,8,25,-1,-17,19,10,5,10,-6,3,-12,14,30,-6,-11,-8,-4,-17,-12,-9,-12,41,-16,-21,-2,-15,22,2,9,2,-5,5,2,22,-8,-13,-19,56,-16,6,33,-4,35,-3,10,-15,13,-11,-5,11,0,1,-5,3,-6,21,-12,-6,-16,7,15,-6,-5,-15,1,-8,1,-3,-17,-29,-2,1,-12,9,-8,-8,-8,30,10,18,17,-34,10,5,2,17,-14,-6,-3,0,-22,6,20,-32,-5,-21,-16,8,-8,1,-2,16,-3,-6,-20,-13,5,3,10,13,-9,-13,11,0,4,5,-10,-9,5,-19,10,-4,-11,-3,-12,-4,-11,-7,-21,-30,-10,6,14,8,-2,-1,16,1,19,-15,-14,4,-1,-4,4,-7,12,-13,-12,29,-1,3,0,2,4,-11,-3,-3,-22,4,-6,3,6,9,-25,16,-4,-14,36,3,5,2,-15,-4,1,-11,13,-4,-3,-4,0,-4,-3,44,14,-2,-7,-7,13,-1,-6,-9,2,0,28,-13,-8,-6,1,-5,-6,-9,6,6,10,-3,6,-2,12,-15,5,0,0,17,-2,-18,4,6,2,3,-7,-2,-10,-19,-4,-7,-3,-4,3,9,-17,10,-4,-10,-12,-2,-10,7,-22,-7,-7,1,7,-2,6,-8,-8,7,18,9,-5,3,-6,-4,-10,4,-14,-11,-7,9,13,1,-5,-15,27,7,-4,-13,0,-9,11,8,11,0,-1,0,-4,9,5,9,-15,5,-10,27,-8,6,11,15,-11,13,-25,-15,-16,-9,9,-4,14,-7,-6,-2,-2,3,2,-21,-8,-1,-22,-5,-27,-6,4,9,7,13,0,-7,-2,-8,-12,5,6,-5,-8,-7,-2,-5,8,7,-16,1,16,1,4,0,-6,11,7,-14,-6,15,-4,17,-5,-1,5,24,5,5,-14,11,-8,-6,-18,-3,-14,-13,3,-4,-10,8,-7,19,-2,4,6,36,22,8,18,-20,-8,10,-7,1,-12,8,-5,4,-8,7,-2,-3,-7,-6,-16,0,-9,11,10,3,-1,-9,-6,0,-3,-8,-11,2,-13,19,-1,-22,4,0,-6,0,-10,-12,12,7,-12,-5,-17,3,-12,-4,12,-5,27,19,-11,10,-6,13,7,1,-1,27,-8,12,7,6,-2,-6,6,-7,-16,24,-10,-2,-12,-11,13,-10,-5,-19,-27,-14,-11,1,-1,-15,-2,18,-19,-10,3,3,-3,19,9,-11,-8,-5,24,-3,2,20,-18,-24,-5,11,4,14,14,2,-9,8,0,-9,-12,-2,12,-2,17,-19,-17,4,16,17,-10,5,-5,14,15,5,20,-10,3,-8,24,-16,-4,-1,4,-20,-10,-20,-5,-2,5,2,5,6,-22,-18,3,-8,-7,5,5,-3,12,0,18,-8,12,-2,13,-4,2,3,-4,11,-15,-13,-14,11,0,-4,-10,-10,-22,17,25,20,-4,-10,-5,34,-2,29,3,4,-12,-8,-11,9,-10,13,-16,-5,3,-2,6,8,-4,-5,-10,1,-2,-6,15,3,14,-7,-5,6,-5,-2,13,7,-9,-13,-10,14,-7,-4,6,-2,8,-15,29,15,-14,15,-8,48,-2,-13,-3,-8,-6,-20,12,-3,6,-9,-16,-4,-8,-8,31,-6,11,-3,0,-10,-10,-6,17,6,-12,1,18,-10,1,9,2,3,2,-27,17,-5,-8,-6,-7,-2,6,-15,-12,-12,13,-12,-10,1,-6,10,13,7,0,-13,8,-18,0,25,7,-7,4,-8,-5,1,9,-3,-2,-12,-3,-4,-22,-7,4,6,18,1,1,-11,-7,7,5,-3,15,-6,5,10,-22,11,-9,-16,10,-6,6,2,21,-2,-1,2,12,-10,-2,-4,5,3,20,3,10,-9,-7,-4,-10,12,-14,-6,2,1,-8,7,5,0,-9,-4,46,-14,4,12,-13,3,2,0,8,4,31,-13,6,-7,1,-14,-2,8,4,-12,9,-13,-7,5,4,1,10,-7,-14,-6,-7,10,15,1,-4,-4,11,-2,-3,-13,15,-4,-11,-8,4,2,7,10,-1,-7,37,-15,-3,-7,-16,2,13,11,-3,-23,3,-19,-5,-2,-21,9,-8,1,0,8,10,-4,0,-4,-17,11,6,9,-22,12,-11,11,-1,14,10,22,2,1,6,-11,-7,-4,-4,5,-5,-13,9,-9,-5,-7,-9,-17,1,9,-2,3,0,7,-1,16,-5,14,-4,3,-6,-12,8,16,1,7,-14,1,0,-4,9,-14,1,1,7,13,-3,11,7,9,5,-12,5,-8,0,-2,18,-15,-9,-5,-13,12,-7,-5,2,13,-11,3,2,19,21,-16,-8,12,13,7,4,2,-18,-4,-5,-6,-16,-12,-16,0,4,9,4,-10,9,0,-7,10,-8,6,-5,6,-20,-14,-6,-5,3,-23,-10,-4,18,3,-10,6,-7,15,-8,7,0,-22,3,-21,-2,5,-11,33,2,-6,6,-13,-7,14,1,10,0,13,-20,-16,-15,21,-16,16,5,40,5,1,15,-10,8,17,2,-21,-24,3,-9,5,3,-4,-6,-7,-13,-4,0,2,-23,28,-4,0,6,0,3,11,1,-13,-6,-8,16,-3,36,2,8,6,-12,20,6,8,9,-7,-5,6,3,-1,16,-14,-10,-1,40,-16,-5,12,26,-1,5,-3,23,21,-14,-5,0,2,-3,15,6,-13,5,-14,-4,-1,-16,-13,-16,20,-1,23,0,-38,-2,-10,17,16,-9,-24,-9,7,17,9,-8,-10,11,0,-26,6,-5,-5,-8,-17,1,1,10,0,-11,-16,-18,-10,5,11,14,7,-22,5,-1,-1,-9,1,-5,18,-17,17,-15,-6,-7,31,-4,-4,-1,4,6,-2,-4,-11,1,-15,-3,-5,11,1,1,-16,-6,-1,7,4,-5,18,0,-9,2,17,-14,-15,-8,-25,-7,-9,13,14,5,12,-4,31,-6,2,-1,0,7,3,-18,18,-5,-7,14,-13,-11,-6,-10,-6,2,-16,-14,26,9,-3,28,-9,9,7,-2,-2,-15,-1,3,9,-6,-24,-2,2,-7,-1,3,3,21,-3,3,-7,-10,18,-1,-7,14,1,22,-10,-18,-5,26,7,-6,-6,-8,-6,-2,7,2,-18,10,9,9,3,-2,5,-11,16,27,-5,-5,-16,-12,-14,-3,7,2,-16,-17,-1,-10,7,0,-8,22,-9,7,-5,-1,5,4,13,-6,8,7,-10,-2,-5,-8,4,-1,-2,7,-16,0,-2,-12,3,-10,-3,-2,1,-8,-1,-13,5,5,9,16,-4,14,6,12,4,7,29,14,3,-4,-6,-3,22,-23,-5,15,-28,5,2,8,-12,5,-18,8,5,-3,-18,-8,4,-17,18,5,-6,-8,-12,0,-5,-2,-10,1,6,-17,6,10,-8,-6,17,2,-5,5,11,1,-5,-4,-26,-3,14,-10,-4,3,-11,-11,-16,-3,-1,-5,2,9,2,24,17,8,4,-4,38,16,14,6,-6,-11,-2,14,-10,11,-11,12,4,-8,-8,-26,-13,13,-8,-14,21,1,-8,10,11,22,-17,7,-4,-7,-10,0,-11,18,9,5,0,10,-17,0,-2,2,15,1,-2,-7,-2,2,17,-6,-14,-13,7,11,3,1,14,0,10,8,-11,20,-19,0,-4,16,8,-13,3,4,-1,4,0,29,-12,-24,26,4,11,-14,-12,-10,15,15,-5,1,6,-3,-8,3,-13,-15,7,-6,1,-3,-11,2,-18,14,-1,-17,-2,12,12,-6,12,-23,-13,9,-18,4,0,5,-3,-14,20,7,-6,-6,-11,10,-7,-6,6,-24,4,-18,26,-23,-2,18,-14,-13,-3,-10,28,-4,30,-22,9,-13,-17,11,-19,-9,-12,14,2,-6,25,27,0,1,-7,-17,-6,-16,4,1,13,-12,-6,-6,-11,2,-12,-22,17,-5,-15,-7,-4,5,15,35,0,-3,10,-14,13,-16,4,7,-5,12,-1,11,-2,-23,-9,-3,10,-8,-3,-5,9,12,-3,-12,-4,6,3,-26,-7,5,-24,-11,-3,-9,23,-9,-32,-16,3,30,0,16,7,5,-1,0,-15,-7,40,-20,-6,-9,-2,-13,-7,-2,-2,-4,0,-22,-4,12,-14,5,-1,-3,-6,-8,2,41,32,-10,-6,3,-10,-15,-16,10,-12,-7,-12,-5,-13,51,4,-9,5,-16,15,2,1,-10,40,-14,9,36,1,-16,-7,-3,6,5,25,23,-15,-6,-14,-11,-4,-2,-9,3,-2,17,-5,-4,0,10,17,18,-1,1,-17,3,8,-6,6,15,-1,2,-14,5,-10,7,-5,11,-1,0,-10,3,13,1,-10,16,7,-8,-6,-6,-13,-3,9,20,4,2,-13,-9,-22,-8,-2,-16,12,5,-16,7,-15,9,6,1,5,2,8,9,-7,15,-2,7,35,-11,0,-2,1,1,-9,17,-7,7,-7,-20,-8,11,-2,6,9,0,10,-4,-11,29,7,0,-2,-10,-15,-3,-1,-4,4,-15,-27,1,12,22,-10,-3,20,-17,19,7,-3,5,37,-4,9,18,-3,-7,-12,-3,15,2,0,16,-11,-12,7,8,10,-2,-15,20,-14,2,13,-1,6,4,13,17,15,6,8,-6,9,-7,6,16,4,-2,-3,-7,14,-14,2,-3,-10,-7,-14,4,8,-3,10,0,12,-4,4,5,-5,-10,17,42,-9,2,5,2,5,3,-3,-14,12,2,6,4,-41,-6,2,-3,9,3,0,-7,-8,7,1,-3,11,-3,0,-11,4,2,-3,23,-11,-3,-8,10,-21,26,12,-9,16,-8,16,2,-8,13,-13,-8,-16,-18,18,-19,8,-3,2,-6,-21,8,1,-13,-17,-14,-7,6,18,-21,-36,16,8,20,-13,-8,-16,8,-9,2,-3,2,-5,-5,-7,-3,-12,-4,0,3,-7,-5,-9,12,17,-16,-6,-18,-19,7,25,-12,-17,9,1,-14,-3,-14,6,4,-17,-5,-1,-13,-7,-4,15,-6,5,1,-5,1,-4,-2,1,3,9,-28,-9,-28,-10,28,-3,-12,-6,24,6,-5,-7,-6,1,5,1,38,-34,-3,-14,-15,14,-4,37,2,-8,-21,-21,-6,-13,1,6,-46,-12,-8,-5,5,10,3,-15,28,-10,4,-4,-12,2,1,5,-13,10,19,-12,2,7,-8,-3,0,-13,-33,-5,10,0,13,-2,-2,1,-21,-6,6,-19,-3,14,-21,9,7,6,23,-1,-23,-13,8,-2,16,1,0,-4,11,7,5,-6,-11,-10,0,1,20,6,12,-2,-1,-5,20,-14,5,44,4,1,-7,-7,10,1,-12,22,6,1,10,-6,-9,4,3,3,0,5,-1,0,0,13,-10,-1,-14,13,0,8,11,-14,-15,19,-11,-4,-3,-15,2,4,-9,37,11,-28,-4,-6,-4,-2,-17,-3,-2,-5,-28,19,15,-8,-30,-1,-13,4,6,-3,8,-9,18,6,-2,-24,-14,-13,-16,3,12,34,8,9,0,-3,-9,18,-13,0,-8,-11,19,-1,15,-6,37,7,-12,-1,11,-2,-12,3,-3,-29,2,-10,0,-7,36,-18,-10,-4,-9,0,3,-1,12,-8,-6,-14,13,18,24,12,-1,-4,40,3,-10,10,4,-3,21,14,13,-2,11,12,-5,-11,-6,11,-2,18,7,4,-3,-3,-2,10,6,6,6,-11,9,-14,-14,6,17,11,0,0,1,-1,8,-3,1,-3,5,0,14,-3,4,12,3,-4,-1,-19,-9,-6,3,-1,-1,-7,8,7,10,-14,10,-19,-7,3,10,-8,-2,-1,2,-7,-8,-7,2,26,2,17,-3,5,0,6,4,32,-3,-4,-3,-13,-11,-7,-10,12,4,11,33,0,-12,-10,11,5,16,-7,9,-4,-4,-16,-8,-8,14,2,9,-6,-5,-11,-6,14,-13,-6,-5,-8,-7,-3,-11,28,9,8,6,5,10,-11,-8,3,-23,-16,1,12,-14,0,-2,18,3,-10,5,25,9,-20,0,15,-3,1,4,1,-10,-7,-7,16,23,-7,21,0,-14,2,3,6,-14,-3,-15,-5,-15,-4,-8,14,5,4,-19,4,-6,-18,-8,15,-2,8,-4,3,-6,-5,-11,14,16,-10,-12,-3,-10,6,-1,-6,-9,12,-4,-9,-8,-1,-4,30,-4,24,-11,16,-2,7,6,27,5,-10,-2,0,17,-8,-14,-7,-10,3,27,29,-19,-11,-5,2,-10,-1,-14,2,-2,0,-9,1,-2,23,-23,15,-8,-12,21,4,14,-6,-1,-11,-1,10,-5,11,16,-3,9,35,-7,2,1,6,-4,-11,-7,-14,-3,-8,18,9,12,7,-12,34,-1,-27,9,11,7,-9,-8,9,6,-9,-4,7,-4,-10,10,10,-11,6,-7,4,-11,-6,0,-4,-1,10,-2,15,-13,13,-31,24,1,-13,-19,8,-2,-5,7,-4,10,-4,-10,-10,-10,-8,-1,-10,-8,-3,1,-9,-3,1,1,-11,-2,6,-10,34,-5,12,-15,34,-1,-20}\n\n#define IP1_BIAS {30,-121,-51,77,40,20,46,-35,28,-33}\n\n#define CONV1_BIAS_LSHIFT 6\n#define CONV1_OUT_RSHIFT 9\n#define CONV2_BIAS_LSHIFT 4\n#define CONV2_OUT_RSHIFT 9\n#define CONV3_BIAS_LSHIFT 1\n#define CONV3_OUT_RSHIFT 7\n#define IP1_BIAS_LSHIFT 1\n#define IP1_OUT_RSHIFT 8\n#define INPUT_MEAN_SHIFT {125,123,114}\n#define INPUT_RIGHT_SHIFT {8,8,8}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/readme.txt",
    "content": "CMSIS NN Lib example arm_nnexample_cifar10 for\n  Cortex-M4 and Cortex-M7.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Compiler/EventRecorderConf.h",
    "content": "/*------------------------------------------------------------------------------\n * MDK - Component ::Event Recorder\n * Copyright (c) 2016 ARM Germany GmbH. All rights reserved.\n *------------------------------------------------------------------------------\n * Name:    EventRecorderConf.h\n * Purpose: Event Recorder Configuration\n * Rev.:    V1.0.0\n *----------------------------------------------------------------------------*/\n\n//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------\n\n// <h>Event Recorder\n\n//   <o>Number of Records\n//     <8=>8 <16=>16 <32=>32 <64=>64 <128=>128 <256=>256 <512=>512 <1024=>1024\n//     <2048=>2048 <4096=>4096 <8192=>8192 <16384=>16384 <32768=>32768\n//     <65536=>65536 <131072=>131072 <262144=>262144 <524288=>524288\n//     <1048576=>1048576\n//   <i>Configure size of Event Record Buffer (each record is 16 bytes)\n//   <i>Must be 2^n (min=8, max=1048576)\n#define EVENT_RECORD_COUNT      64U\n\n//   <o>Time Stamp Source\n//      <0=> DWT Cycle Counter  <1=> SysTick\n//      <3=> User Timer (Normal Reset)  <4=> User Timer (Power-On Reset)\n//   <i>Selects source for 32-bit time stamp\n#define EVENT_TIMESTAMP_SOURCE  1\n\n//   <h>SysTick Configuration\n//   <i>Configure values when Time Stamp Source is set to SysTick\n\n//     <o>SysTick Input Clock Frequency [Hz] <1-1000000000>\n//     <i>Defines SysTick input clock (typical identical with processor clock)\n#define SYSTICK_CLOCK           100000000U\n\n//     <o>SysTick Interrupt Period [us] <1-1000000000>\n//     <i>Defines time period of the SysTick timer interrupt\n#define SYSTICK_PERIOD_US       1000U\n\n//   </h>\n\n// </h>\n\n//------------- <<< end of configuration section >>> ---------------------------\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1)\n  SCB->CPACR |= ((3U << 10*2) |           /* set CP10 Full Access */\n                 (3U << 11*2)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM7_SP/startup_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     startup_ARMCM7.s\n * @brief    CMSIS Core Device Startup File for\n *           ARMCM7 Device Series\n * @version  V5.00\n * @date     26. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include <stdint.h>\n\n\n/*----------------------------------------------------------------------------\n  Linker generated Symbols\n *----------------------------------------------------------------------------*/\nextern uint32_t __etext;\nextern uint32_t __data_start__;\nextern uint32_t __data_end__;\nextern uint32_t __copy_table_start__;\nextern uint32_t __copy_table_end__;\nextern uint32_t __zero_table_start__;\nextern uint32_t __zero_table_end__;\nextern uint32_t __bss_start__;\nextern uint32_t __bss_end__;\nextern uint32_t __StackTop;\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Handler Function Prototype\n *----------------------------------------------------------------------------*/\ntypedef void( *pFunc )( void );\n\n\n/*----------------------------------------------------------------------------\n  External References\n *----------------------------------------------------------------------------*/\n#ifndef __START\nextern void  _start(void) __attribute__((noreturn));    /* PreeMain (C library entry point) */\n#else\nextern int  __START(void) __attribute__((noreturn));    /* main entry point */\n#endif\n\n#ifndef __NO_SYSTEM_INIT\nextern void SystemInit (void);            /* CMSIS System Initialization      */\n#endif\n\n\n/*----------------------------------------------------------------------------\n  Internal References\n *----------------------------------------------------------------------------*/\nvoid Default_Handler(void);                          /* Default empty handler */\nvoid Reset_Handler(void);                            /* Reset Handler */\n\n\n/*----------------------------------------------------------------------------\n  User Initial Stack & Heap\n *----------------------------------------------------------------------------*/\n#ifndef __STACK_SIZE\n  #define\t__STACK_SIZE  0x00000400\n#endif\nstatic uint8_t stack[__STACK_SIZE] __attribute__ ((aligned(8), used, section(\".stack\")));\n\n#ifndef __HEAP_SIZE\n  #define\t__HEAP_SIZE   0x00000C00\n#endif\n#if __HEAP_SIZE > 0\nstatic uint8_t heap[__HEAP_SIZE]   __attribute__ ((aligned(8), used, section(\".heap\")));\n#endif\n\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Handler\n *----------------------------------------------------------------------------*/\n/* Cortex-M7 Processor Exceptions */\nvoid NMI_Handler         (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid HardFault_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MemManage_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid BusFault_Handler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UsageFault_Handler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SVC_Handler         (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid DebugMon_Handler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid PendSV_Handler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SysTick_Handler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\n\n/* ARMCM7 Specific Interrupts */\nvoid WDT_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid RTC_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid TIM0_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid TIM2_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MCIA_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MCIB_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART0_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART1_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART2_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART4_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid AACI_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CLCD_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid ENET_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid USBDC_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid USBHC_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CHLCD_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid FLEXRAY_IRQHandler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CAN_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid LIN_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid I2C_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CPU_CLCD_IRQHandler (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART3_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SPI_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\n\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Vector table\n *----------------------------------------------------------------------------*/\nconst pFunc __Vectors[] __attribute__ ((section(\".vectors\"))) = {\n  /* Cortex-M7 Exceptions Handler */\n  (pFunc)((uint32_t)&__StackTop),           /*      Initial Stack Pointer     */\n  Reset_Handler,                            /*      Reset Handler             */\n  NMI_Handler,                              /*      NMI Handler               */\n  HardFault_Handler,                        /*      Hard Fault Handler        */\n  MemManage_Handler,                        /*      MPU Fault Handler         */\n  BusFault_Handler,                         /*      Bus Fault Handler         */\n  UsageFault_Handler,                       /*      Usage Fault Handler       */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  SVC_Handler,                              /*      SVCall Handler            */\n  DebugMon_Handler,                         /*      Debug Monitor Handler     */\n  0,                                        /*      Reserved                  */\n  PendSV_Handler,                           /*      PendSV Handler            */\n  SysTick_Handler,                          /*      SysTick Handler           */\n\n  /* External interrupts */\n  WDT_IRQHandler,                           /*  0:  Watchdog Timer            */\n  RTC_IRQHandler,                           /*  1:  Real Time Clock           */\n  TIM0_IRQHandler,                          /*  2:  Timer0 / Timer1           */\n  TIM2_IRQHandler,                          /*  3:  Timer2 / Timer3           */\n  MCIA_IRQHandler,                          /*  4:  MCIa                      */\n  MCIB_IRQHandler,                          /*  5:  MCIb                      */\n  UART0_IRQHandler,                         /*  6:  UART0 - DUT FPGA          */\n  UART1_IRQHandler,                         /*  7:  UART1 - DUT FPGA          */\n  UART2_IRQHandler,                         /*  8:  UART2 - DUT FPGA          */\n  UART4_IRQHandler,                         /*  9:  UART4 - not connected     */\n  AACI_IRQHandler,                          /* 10: AACI / AC97                */\n  CLCD_IRQHandler,                          /* 11: CLCD Combined Interrupt    */\n  ENET_IRQHandler,                          /* 12: Ethernet                   */\n  USBDC_IRQHandler,                         /* 13: USB Device                 */\n  USBHC_IRQHandler,                         /* 14: USB Host Controller        */\n  CHLCD_IRQHandler,                         /* 15: Character LCD              */\n  FLEXRAY_IRQHandler,                       /* 16: Flexray                    */\n  CAN_IRQHandler,                           /* 17: CAN                        */\n  LIN_IRQHandler,                           /* 18: LIN                        */\n  I2C_IRQHandler,                           /* 19: I2C ADC/DAC                */\n  0,                                        /* 20: Reserved                   */\n  0,                                        /* 21: Reserved                   */\n  0,                                        /* 22: Reserved                   */\n  0,                                        /* 23: Reserved                   */\n  0,                                        /* 24: Reserved                   */\n  0,                                        /* 25: Reserved                   */\n  0,                                        /* 26: Reserved                   */\n  0,                                        /* 27: Reserved                   */\n  CPU_CLCD_IRQHandler,                      /* 28: Reserved - CPU FPGA CLCD   */\n  0,                                        /* 29: Reserved - CPU FPGA        */\n  UART3_IRQHandler,                         /* 30: UART3    - CPU FPGA        */\n  SPI_IRQHandler                            /* 31: SPI Touchscreen - CPU FPGA */\n};\n\n\n/*----------------------------------------------------------------------------\n  Reset Handler called on controller reset\n *----------------------------------------------------------------------------*/\nvoid Reset_Handler(void) {\n  uint32_t *pSrc, *pDest;\n  uint32_t *pTable __attribute__((unused));\n\n/*  Firstly it copies data from read only memory to RAM. There are two schemes\n *  to copy. One can copy more than one sections. Another can only copy\n *  one section.  The former scheme needs more instructions and read-only\n *  data to implement than the latter.\n *  Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes.  */\n\n#ifdef __STARTUP_COPY_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of triplets, each of which specify:\n *    offset 0: LMA of start of a section to copy from\n *    offset 4: VMA of start of a section to copy to\n *    offset 8: size of the section to copy. Must be multiply of 4\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n  pTable = &__copy_table_start__;\n\n  for (; pTable < &__copy_table_end__; pTable = pTable + 3) {\n\t\tpSrc  = (uint32_t*)*(pTable + 0);\n\t\tpDest = (uint32_t*)*(pTable + 1);\n\t\tfor (; pDest < (uint32_t*)(*(pTable + 1) + *(pTable + 2)) ; ) {\n      *pDest++ = *pSrc++;\n\t\t}\n\t}\n#else\n/*  Single section scheme.\n *\n *  The ranges of copy from/to are specified by following symbols\n *    __etext: LMA of start of the section to copy from. Usually end of text\n *    __data_start__: VMA of start of the section to copy to\n *    __data_end__: VMA of end of the section to copy to\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n  pSrc  = &__etext;\n  pDest = &__data_start__;\n\n  for ( ; pDest < &__data_end__ ; ) {\n    *pDest++ = *pSrc++;\n  }\n#endif /*__STARTUP_COPY_MULTIPLE */\n\n/*  This part of work usually is done in C library startup code. Otherwise,\n *  define this macro to enable it in this startup.\n *\n *  There are two schemes too. One can clear multiple BSS sections. Another\n *  can only clear one section. The former is more size expensive than the\n *  latter.\n *\n *  Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.\n *  Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later.\n */\n#ifdef __STARTUP_CLEAR_BSS_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of tuples specifying:\n *    offset 0: Start of a BSS section\n *    offset 4: Size of this BSS section. Must be multiply of 4\n */\n  pTable = &__zero_table_start__;\n\n  for (; pTable < &__zero_table_end__; pTable = pTable + 2) {\n\t\tpDest = (uint32_t*)*(pTable + 0);\n\t\tfor (; pDest < (uint32_t*)(*(pTable + 0) + *(pTable + 1)) ; ) {\n      *pDest++ = 0;\n\t\t}\n\t}\n#elif defined (__STARTUP_CLEAR_BSS)\n/*  Single BSS section scheme.\n *\n *  The BSS section is specified by following symbols\n *    __bss_start__: start of the BSS section.\n *    __bss_end__: end of the BSS section.\n *\n *  Both addresses must be aligned to 4 bytes boundary.\n */\n  pDest = &__bss_start__;\n\n  for ( ; pDest < &__bss_end__ ; ) {\n    *pDest++ = 0UL;\n  }\n#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */\n\n#ifndef __NO_SYSTEM_INIT\n\tSystemInit();\n#endif\n\n#ifndef __START\n#define __START _start\n#endif\n\t__START();\n\n}\n\n\n/*----------------------------------------------------------------------------\n  Default Handler for Exceptions / Interrupts\n *----------------------------------------------------------------------------*/\nvoid Default_Handler(void) {\n\n\twhile(1);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1)\n  SCB->CPACR |= ((3U << 10*2) |           /* set CP10 Full Access */\n                 (3U << 11*2)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM0/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_gru' \n * Target:  'ARMCM0' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM0.h\"\n\n#define RTE_Compiler_EventRecorder\n          #define RTE_Compiler_EventRecorder_DAP\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_EVR      /* Compiler I/O: STDOUT EVR */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM3/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_gru' \n * Target:  'ARMCM3' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM3.h\"\n\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM4_FP/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_gru' \n * Target:  'ARMCM4_FP' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM4_FP.h\"\n\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM7_SP/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_gru' \n * Target:  'ARMCM7_SP' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM7_SP.h\"\n\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru.cpp",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2018 Arm Limited. All rights reserved.\n*\n*\n* Project:       CMSIS NN Library\n* Title:         arm_nnexamples_gru.cpp\n*\n* Description:   Gated Recurrent Unit Example\n*\n* Target Processor: Cortex-M4/Cortex-M7\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of Arm LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup GRUExample Gated Recurrent Unit Example\n *\n * \\par Description:\n * \\par\n * Demonstrates a gated recurrent unit (GRU) example with the use of fully-connected,\n * Tanh/Sigmoid activation functions.\n *\n * \\par Model definition:\n * \\par\n * GRU is a type of recurrent neural network (RNN). It contains two sigmoid gates and one hidden\n * state. \n * \\par\n * The computation can be summarized as:\n * <pre>z[t] = sigmoid( W_z &sdot; {h[t-1],x[t]} )\n * r[t] = sigmoid( W_r &sdot; {h[t-1],x[t]} ) \n * n[t] = tanh( W_n &sdot; [r[t] &times; {h[t-1], x[t]} ) \n * h[t] = (1 - z[t]) &times; h[t-1] + z[t] &times; n[t] </pre>\n * \\image html GRU.gif \"Gate Recurrent Unit Diagram\"\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c update_gate_weights, \\c reset_gate_weights, \\c hidden_state_weights are weights corresponding to update gate (W_z), reset gate (W_r), and hidden state (W_n).\n * \\li \\c update_gate_bias, \\c reset_gate_bias, \\c hidden_state_bias are layer bias arrays\n * \\li \\c test_input1, \\c test_input2, \\c test_history are the inputs and initial history\n *\n * \\par\n * The buffer is allocated as:\n * \\par\n * | reset | input | history | update | hidden_state |\n * \\par\n * In this way, the concatination is automatically done since (reset, input) and (input, history)\n * are physically concatinated in memory.\n * \\par\n *  The ordering of the weight matrix should be adjusted accordingly.\n *\n  *\n * \n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_fully_connected_mat_q7_vec_q15_opt()\n * - arm_nn_activations_direct_q15()\n * - arm_mult_q15()\n * - arm_offset_q15()\n * - arm_sub_q15()\n * - arm_copy_q15()\n *\n * <b> Refer  </b>\n * \\link arm_nnexamples_gru.cpp \\endlink\n *\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include \"arm_nnexamples_gru_test_data.h\"\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n#ifdef _RTE_\n#include \"RTE_Components.h\"\n#ifdef RTE_Compiler_EventRecorder\n#include \"EventRecorder.h\"\n#endif\n#endif\n\n#define DIM_HISTORY 32\n#define DIM_INPUT 32\n#define DIM_VEC 64\n\n#define USE_X4\n\n#ifndef USE_X4\nstatic q7_t update_gate_weights[DIM_VEC * DIM_HISTORY] = UPDATE_GATE_WEIGHT_X2;\nstatic q7_t reset_gate_weights[DIM_VEC * DIM_HISTORY] = RESET_GATE_WEIGHT_X2;\nstatic q7_t hidden_state_weights[DIM_VEC * DIM_HISTORY] = HIDDEN_STATE_WEIGHT_X2;\n#else\nstatic q7_t update_gate_weights[DIM_VEC * DIM_HISTORY] = UPDATE_GATE_WEIGHT_X4;\nstatic q7_t reset_gate_weights[DIM_VEC * DIM_HISTORY] = RESET_GATE_WEIGHT_X4;\nstatic q7_t hidden_state_weights[DIM_VEC * DIM_HISTORY] = HIDDEN_STATE_WEIGHT_X4;\n#endif\n\nstatic q7_t update_gate_bias[DIM_HISTORY] = UPDATE_GATE_BIAS;\nstatic q7_t reset_gate_bias[DIM_HISTORY] = RESET_GATE_BIAS;\nstatic q7_t hidden_state_bias[DIM_HISTORY] = HIDDEN_STATE_BIAS;\n\nstatic q15_t test_input1[DIM_INPUT] = INPUT_DATA1;\nstatic q15_t test_input2[DIM_INPUT] = INPUT_DATA2;\nstatic q15_t test_history[DIM_HISTORY] = HISTORY_DATA;\n\nq15_t     scratch_buffer[DIM_HISTORY * 4 + DIM_INPUT];\n\nvoid gru_example(q15_t * scratch_input, uint16_t input_size, uint16_t history_size,\n                 q7_t * weights_update, q7_t * weights_reset, q7_t * weights_hidden_state,\n                 q7_t * bias_update, q7_t * bias_reset, q7_t * bias_hidden_state)\n{\n  q15_t    *reset = scratch_input;\n  q15_t    *input = scratch_input + history_size;\n  q15_t    *history = scratch_input + history_size + input_size;\n  q15_t    *update = scratch_input + 2 * history_size + input_size;\n  q15_t    *hidden_state = scratch_input + 3 * history_size + input_size;\n\n  // reset gate calculation\n  // the range of the output can be adjusted with bias_shift and output_shift\n#ifndef USE_X4\n  arm_fully_connected_mat_q7_vec_q15(input, weights_reset, input_size + history_size, history_size, 0, 15, bias_reset,\n                                     reset, NULL);\n#else\n  arm_fully_connected_mat_q7_vec_q15_opt(input, weights_reset, input_size + history_size, history_size, 0, 15,\n                                         bias_reset, reset, NULL);\n#endif\n  // sigmoid function, the size of the integer bit-width should be consistent with out_shift\n  arm_nn_activations_direct_q15(reset, history_size, 0, ARM_SIGMOID);\n  arm_mult_q15(history, reset, reset, history_size);\n\n  // update gate calculation\n  // the range of the output can be adjusted with bias_shift and output_shift\n#ifndef USE_X4\n  arm_fully_connected_mat_q7_vec_q15(input, weights_update, input_size + history_size, history_size, 0, 15,\n                                     bias_update, update, NULL);\n#else\n  arm_fully_connected_mat_q7_vec_q15_opt(input, weights_update, input_size + history_size, history_size, 0, 15,\n                                         bias_update, update, NULL);\n#endif\n\n  // sigmoid function, the size of the integer bit-width should be consistent with out_shift\n  arm_nn_activations_direct_q15(update, history_size, 0, ARM_SIGMOID);\n\n  // hidden state calculation\n#ifndef USE_X4\n  arm_fully_connected_mat_q7_vec_q15(reset, weights_hidden_state, input_size + history_size, history_size, 0, 15,\n                                     bias_hidden_state, hidden_state, NULL);\n#else\n  arm_fully_connected_mat_q7_vec_q15_opt(reset, weights_hidden_state, input_size + history_size, history_size, 0, 15,\n                                         bias_hidden_state, hidden_state, NULL);\n#endif\n\n  // tanh function, the size of the integer bit-width should be consistent with out_shift\n  arm_nn_activations_direct_q15(hidden_state, history_size, 0, ARM_TANH);\n  arm_mult_q15(update, hidden_state, hidden_state, history_size);\n\n  // we calculate z - 1 here\n  // so final addition becomes substraction\n  arm_offset_q15(update, 0x8000, update, history_size);\n  // multiply history\n  arm_mult_q15(history, update, update, history_size);\n  // calculate history_out\n  arm_sub_q15(hidden_state, update, history, history_size);\n\n  return;\n}\n\nint main()\n{\n  #ifdef RTE_Compiler_EventRecorder\n  EventRecorderInitialize (EventRecordAll, 1);  // initialize and start Event Recorder\n  #endif\n\n  printf(\"Start GRU execution\\n\");\n  int       input_size = DIM_INPUT;\n  int       history_size = DIM_HISTORY;\n\n  // copy over the input data \n  arm_copy_q15(test_input1, scratch_buffer + history_size, input_size);\n  arm_copy_q15(test_history, scratch_buffer + history_size + input_size, history_size);\n\n  gru_example(scratch_buffer, input_size, history_size,\n              update_gate_weights, reset_gate_weights, hidden_state_weights,\n              update_gate_bias, reset_gate_bias, hidden_state_bias);\n  printf(\"Complete first iteration on GRU\\n\");\n\n  arm_copy_q15(test_input2, scratch_buffer + history_size, input_size);\n  gru_example(scratch_buffer, input_size, history_size,\n              update_gate_weights, reset_gate_weights, hidden_state_weights,\n              update_gate_bias, reset_gate_bias, hidden_state_bias);\n  printf(\"Complete second iteration on GRU\\n\");\n\n  return 0;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru_test_data.h",
    "content": "#define UPDATE_GATE_WEIGHT_X2 {-62,83,-58,-89,-80,1,-93,31,101,95,121,-83,71,18,-98,-5,44,-100,-16,-73,25,62,34,-22,-16,42,9,-125,60,-78,15,-76,-76,-63,71,-25,78,-66,38,-118,-71,-120,-80,28,33,51,82,-105,26,-47,38,86,-114,44,90,-98,105,-123,24,95,-12,11,49,-35,78,104,104,17,-116,-40,-83,4,88,-110,-111,-98,18,-89,120,-84,66,-69,-8,-22,-91,-29,-41,110,55,-124,-67,103,-40,-100,1,-25,-68,-62,-89,-75,-20,-78,101,-92,-51,-97,-54,59,-78,41,34,-102,-9,-53,56,103,-55,13,81,-75,-20,-37,29,36,110,84,-80,-127,-68,-33,-70,-16,-42,-9,-104,107,-81,-16,42,-74,-63,-4,-128,-109,-105,55,-51,-68,-88,19,-39,116,-7,66,52,-29,63,-94,71,-2,-127,31,-103,120,124,41,-13,-23,127,59,-22,54,-2,32,-87,-109,85,-31,-5,-59,-122,-97,-14,-88,-19,43,-30,115,42,14,10,121,28,-63,83,-85,101,40,23,-39,74,-99,73,50,-20,123,-88,-13,-126,-25,70,-11,16,-28,121,-29,20,-69,104,117,-40,-1,-97,-12,31,32,15,-32,77,31,16,40,107,-52,-52,-89,-17,124,-95,54,48,-40,37,24,-46,42,119,5,-118,-45,-10,106,83,57,-74,-10,-56,85,37,-25,83,-31,-54,111,-78,-96,-114,-65,-100,28,-31,-111,33,66,74,-43,112,119,-80,-26,74,-81,-123,55,-126,32,-66,110,-86,-118,-21,15,16,26,13,-109,41,-16,88,81,-82,-55,-89,109,-52,118,-39,57,-16,86,-68,-10,-19,110,-50,-17,-84,103,-3,94,-8,50,15,-44,-87,6,18,8,61,66,-108,-67,-6,107,-68,25,25,25,-82,71,62,121,-31,-4,17,-6,-60,-17,116,-67,45,117,-90,12,-68,20,121,-65,-43,74,-104,-42,-69,35,4,-17,5,95,-82,18,65,43,-57,89,1,-8,37,-51,10,67,4,-50,-18,81,-120,44,98,16,-98,25,127,88,-111,-49,114,111,-17,-74,40,-18,35,19,31,48,-23,53,102,41,89,-27,87,-54,-121,-113,97,125,125,-108,58,-17,8,70,-67,-55,59,42,-85,78,27,16,66,67,54,-74,33,-19,72,77,126,-122,-7,-109,58,78,-88,15,2,16,37,-34,-114,-88,-53,88,115,19,7,-67,93,80,-48,-11,-61,31,38,29,-59,-70,0,25,106,-7,-44,53,62,19,-64,109,70,-103,-114,97,57,112,24,-66,-127,29,29,-31,-87,-125,54,-98,101,-39,56,-88,-63,-113,-73,-91,80,112,-27,-75,-42,-5,79,60,-55,23,-61,66,51,39,-91,96,-60,-64,-1,75,55,-108,73,38,75,-113,-9,-92,-92,-3,-30,93,-27,-100,-55,125,52,72,110,12,84,-83,65,-79,92,11,87,-106,35,-38,-24,-79,15,-11,-109,-22,95,82,-1,-2,-113,116,-64,93,-62,-11,101,35,-91,51,-6,21,29,25,-16,68,-103,-111,-23,-123,-80,24,-17,-7,53,23,114,-13,-105,-88,120,13,-25,-40,29,-38,-43,3,2,-121,-110,54,-43,30,66,28,60,-81,-6,-8,126,-80,64,-42,126,75,-69,-116,-41,81,94,31,-116,5,-46,5,-21,-105,78,-20,-34,54,46,-124,120,-83,44,-17,-52,-23,-110,34,-35,31,61,88,-108,-38,31,117,-26,38,-57,65,9,0,59,124,14,-39,-95,-91,107,-34,85,-83,-31,-68,-78,-86,21,-118,56,60,-3,-116,33,53,-94,85,77,91,-94,100,-89,97,88,111,36,74,-110,7,-74,91,-112,21,32,-59,98,36,10,-41,44,-114,-88,92,111,72,43,58,42,-125,-11,96,126,25,96,-105,-128,-70,85,-82,-17,103,23,-37,76,58,108,16,-116,-44,22,89,0,6,-108,27,-34,88,-125,22,-45,-116,28,-29,-70,-3,-81,-80,42,119,105,-40,-109,105,64,5,72,-32,-95,90,60,6,-29,40,-19,57,89,-50,34,-123,-32,-18,20,9,-19,-81,-45,-120,-120,20,2,18,70,75,100,64,126,-9,63,-82,114,-62,106,-11,104,-9,-13,88,-40,101,73,108,52,33,116,-54,-114,-47,85,2,-117,-80,100,-20,98,-75,-83,-24,-125,-91,-97,95,-46,15,-94,-21,53,-27,-18,65,87,112,38,-115,-27,37,-84,1,103,85,-50,36,-49,-119,68,20,119,-113,43,-67,105,44,4,-48,16,-42,83,-39,106,31,-34,-76,-51,68,82,-111,-116,-104,-118,109,-29,-6,-91,81,-102,-76,-82,64,121,27,-98,-24,-88,36,115,59,-84,-121,4,29,45,73,110,-56,-12,109,-88,85,-30,87,18,118,23,21,106,40,115,78,-72,-103,11,83,44,117,-63,98,30,115,123,-39,25,15,84,52,46,77,64,-104,125,-13,34,125,65,6,57,-128,-2,115,7,-65,-73,82,72,-109,99,43,-94,-106,-39,-4,-127,58,123,-128,29,-80,4,51,109,-50,-38,25,-13,-52,-106,87,76,44,78,101,16,-102,-20,104,23,107,-88,18,-85,119,-21,-53,-84,-7,-8,-114,23,-54,74,80,77,-40,19,-75,-41,60,77,82,-96,-121,-43,114,-124,-1,-75,32,34,-117,21,64,-87,-100,-29,-36,-45,-46,-111,4,-44,-94,-117,100,-25,-27,105,95,15,88,25,-38,-88,122,62,-62,-28,95,-86,125,-83,-9,-100,101,-124,22,21,-91,50,-100,-27,-92,115,86,85,33,-112,-43,61,114,62,-31,-84,-7,5,-26,-10,-21,-89,60,-96,48,-34,88,-80,-91,92,12,118,-2,-38,83,-50,-109,-111,-26,-109,-78,-7,84,60,-95,15,-71,112,126,71,36,39,-42,-85,-126,-68,105,-18,-127,48,-41,57,-93,13,-25,-71,66,-43,-23,122,4,-70,123,115,124,-61,-32,18,-18,49,123,-101,37,-50,-111,-73,124,-18,54,-64,93,-69,16,112,21,-56,56,127,113,-48,-57,-4,85,-84,53,44,28,-126,-59,-11,94,58,-64,112,82,127,58,50,5,-6,-102,90,-18,-86,104,17,108,-64,-22,73,-102,-17,-31,-11,-105,-40,-49,84,-82,104,57,30,112,-119,-92,78,-92,35,90,-45,-13,-75,-125,-19,-83,-75,29,15,-33,127,-14,29,-80,61,41,67,-14,-18,101,101,108,-24,-61,-90,-59,-48,-114,1,-14,106,52,109,-45,-100,74,-33,-68,-94,-68,-22,-99,31,-86,85,-27,-70,69,127,92,125,-95,117,-87,-8,-71,18,94,-90,103,-31,-1,-50,-60,-2,96,31,-1,-98,75,104,-6,-38,-24,127,94,-48,97,-96,4,-108,106,76,-31,-7,-41,58,-13,-72,-81,-116,-24,-45,46,-20,114,97,-14,125,11,22,26,27,-2,-88,-28,-76,119,50,52,66,65,120,-42,-43,-59,-56,-28,-42,-87,-18,-47,-85,74,119,97,-6,-127,-86,30,18,-43,48,-73,22,-5,34,122,9,115,-32,-63,-13,61,119,18,-113,-12,80,26,-39,-76,-101,-104,-6,48,38,-82,-52,-91,-38,112,110,115,76,69,100,-116,109,3,-35,16,94,24,110,86,25,-5,84,2,62,57,-121,-28,-108,29,127,-25,89,16,-86,15,-68,97,-115,-73,-110,-13,41,16,-47,-74,75,-71,-52,-20,-29,3,-34,68,-2,-29,63,-5,95,-79,26,-42,-91,-109,-19,107,-102,62,111,-35,80,36,55,-65,26,76,-86,26,-88,-116,110,84,-62,-13,120,-31,-47,-32,84,-98,58,74,18,-22,5,-83,-3,11,53,114,32,-118,16,-91,-74,-67,-68,78,-34,102,88,-80,-5,63,-35,22,-87,-97,-30,-76,94,116,44,-109,-122,38,112,-103,99,-119,49,35,107,108,47,54,11,-50,-73,37,-56,71,-125,108,-47,15,-115,-65,-90,-13,-27,-16,-94,72,-101,-74,-58,27,121,-91,110,-101,45,-54,105,-8,-88,-66,-71,-128,-35,-53,-50,-51,-85,113,96,16,-72,-80,-54,78,47,75,-82,-115,-53,40,-39,54,-43,23,-35,43,81,125,-8,51,49,-91,122,123,-102,-65,-78,19,14,51,-68,60,43,-36,105,44,-100,36,89,-40,123,31,105,26,-128,63,-49,-115,48,96,-91,-73,99,37,2,3,-52,-103,-11,10,31,-106,-119,-67,118,-71,-67,-52,-12,43,-21,99,-64,-88,64,100,-62,-11,-32,23,-90,68,-102,116,-21,-78,1,108,-2,116,-122,114,53,-33,102,65,33,73,92,-79,-51,-50,-65,49,76,119,-51,15,-21,95,-109,80,17,7,115,115,-117,-77,-39,-115,-19,-83,-35,-122,56,94,1,-13,83,8,-84,72,-88,87,77,-82,-125,-18,75,10,-106,51,-59,120,-85,22,-45,-68,-44,-38,64,38,-75,-69,122,88,53,18,41,-108,48,38,-127,34,-85,36,-116,-96,56,105,38,76,92,-41,99,-101,-100,112,74,57,60,85,-14,95,0,-73,-46,12,-93,-14,-78,-1,-2,-10,34,111,115,-91,16,-79,76,-108,-8,-84,33,111,-98,2,-6,8,0,-77,1,52,18,-5,-77,-46,-80,-20,-61,-30,-81,-73,-7,49,-107,-25,-97,-125,69,-89,31,-124,-108,76,96,58,88,24,49,79,11,-43,-60,100,108,62,21,-72,-111,81,46,-108,-107,29,90,-13,55,-23,-63,-10,-128,-124,86,88,3,-39,-39,98,-57,-24,-97,-124,85,-84,-78,4,11,59,-73,120,66,21,-73,20,-95,91,-53,76,98,-29,49,-76,-74,-67,-80,-29,-106,111,60,32,-127,-87,104,30,95,-21,93,-23,-97,26,-46,63,12,-28,123,12,30,102,-115,36,74,-54,-54,-103,-57,-95,-72,-60,24,-14,-41,27,9,19,-74,-12,-65,-7,17,122,-85,123,16,-127,22,75,-85,-28,-50,125,-102,-28,24,120,-53,-128,-108,-65,-37,60,-53,-10,28,-38,-11,71,-45,21,-77,-108,-115,-24,103,-29,121,-23,11,-102,-115,-108,-78,-55,84,-17,-58,-8,-118,-119,-56,1,-109,42,-94,51,54,6,-30,56,12,23,-10,121,-113,-74,9,12,0,-93,67,51,-110,44,-69,-40,-72,49,-16,-31,-16,9,-43,7,90,96,-63,-24,-74,-26,35,-16,109,-101,38,87,-13,11,-18,-54,33,37,106,84,79,80,23,-76,-80,-45,-106,56,3,-103,-92,86,-81,68,90,-126,-125,102,-83,-36,83,97,-39,-44,-14,-14,79,-9,-31,119,114,29,-27,-29,55,-72,-3,54,49,-40,22,-37,54,68,71,66,-66,-23,49,69,-73,83,-14,-70,9,117,-63,111,65,66,92,58,-56,15,20,52,-72,-4,34,-94,119,-95}\n\n#define UPDATE_GATE_WEIGHT_X4 {-62,78,83,104,-68,28,-33,-63,-58,104,-89,17,-70,83,-16,-85,-80,-116,1,-40,-42,101,-9,40,-93,-83,31,4,-104,23,107,-39,101,88,95,-110,-81,74,-16,-99,121,-111,-83,-98,42,73,-74,50,71,18,18,-89,-63,-20,-4,123,-98,120,-5,-84,-128,-88,-109,-13,44,66,-100,-69,-105,-126,55,-25,-16,-8,-73,-22,-51,70,-68,-11,25,-91,62,-29,-88,16,19,-28,34,-41,-22,110,-39,121,116,-29,-16,55,42,-124,-7,20,66,-69,9,-67,-125,103,52,104,-29,117,60,-40,-78,-100,63,-40,-94,-1,15,1,-76,-25,71,-97,-2,-12,-76,-68,-63,-62,-127,31,31,32,71,-89,-25,-75,-103,15,120,-32,78,-20,-66,-78,124,77,41,31,38,101,-118,-92,-13,16,-23,40,-71,-51,-120,-97,127,107,59,-52,-80,-54,28,59,-22,-52,54,-89,33,-78,51,41,-2,-17,32,124,82,34,-105,-102,-87,-95,-109,54,26,-9,-47,-53,85,48,-31,-40,38,56,86,103,-5,37,-59,24,-114,-55,44,13,-122,-46,-97,42,90,81,-98,-75,-14,119,-88,5,105,-20,-123,-37,-19,-118,43,-45,24,29,95,36,-30,-10,115,106,-12,110,11,84,42,83,14,57,49,-80,-35,-127,10,-74,121,-10,-56,-8,85,50,-120,37,44,-34,37,15,-25,-44,98,-114,16,-88,83,-87,-31,6,-98,-53,25,88,-54,18,111,8,127,115,88,19,-78,61,-96,66,-111,7,-49,-67,-114,-108,-65,-67,114,93,111,80,-100,-6,28,107,-17,-48,-74,-11,-31,-68,-111,25,40,-61,-18,31,33,25,66,25,35,38,19,29,74,-82,-43,71,31,-59,48,-70,112,62,119,121,-23,0,53,25,-80,-31,-26,-4,102,106,41,-7,74,17,-81,-6,89,-44,-27,53,-123,-60,55,-17,87,62,-54,19,-126,116,32,-67,-121,-64,-113,109,-66,45,110,117,97,70,125,-103,-86,-90,-118,12,125,-114,-108,97,-21,-68,15,20,58,57,-17,112,16,121,26,-65,8,24,70,-66,13,-43,-109,74,-67,-127,-55,29,41,-104,-16,-42,59,29,42,-31,88,-69,81,35,-85,-87,78,-125,-82,4,-55,-17,27,54,16,-98,-89,5,109,95,66,101,67,-39,-52,-82,118,18,54,56,-74,-88,-39,65,57,43,33,-63,-19,-113,-16,-57,86,89,72,-73,77,-91,-68,1,-10,-8,126,80,-122,112,-19,37,110,-51,-7,-27,-109,-75,-50,10,-17,67,58,-42,78,-5,-84,4,103,-50,-88,79,15,60,-3,-18,94,81,2,-55,16,23,-61,-16,66,68,-52,44,-23,-114,51,-103,39,-111,-110,-88,34,92,-91,-23,96,-123,-35,111,31,72,-60,-80,-64,24,61,43,88,58,-1,-17,75,-7,-108,42,-38,-125,55,53,-108,23,31,-11,117,96,73,114,38,-13,-26,126,38,25,75,-105,-113,-88,-57,96,65,-105,-9,120,-92,13,9,-128,0,-70,-92,-25,-3,-40,59,85,124,-82,-30,29,93,-38,14,-17,-39,103,-27,-43,-100,3,-95,23,-91,-37,-55,2,125,-121,107,76,-34,58,52,-110,72,54,85,108,-83,16,110,-43,12,30,-31,-116,-68,-44,84,66,-83,28,-78,22,-86,89,65,60,-79,-81,21,0,-118,6,92,-6,11,-8,56,-108,60,27,87,126,-106,-80,-3,-34,-116,88,35,64,-38,-42,33,-125,53,22,-24,126,-79,75,-94,-45,85,-116,15,-69,-11,-116,77,28,91,-29,-109,-41,-22,81,-94,-70,100,-3,95,94,82,31,-89,-81,97,-80,-1,-116,-2,5,88,42,111,119,-113,-46,116,5,36,105,74,-40,-64,-21,93,-105,-110,-109,7,105,-62,78,-11,-20,-74,64,91,5,101,-34,35,54,-112,72,21,-32,-91,46,51,-124,32,-95,-59,90,-6,120,21,-83,98,60,36,6,29,44,25,-17,10,-29,-41,40,-19,-18,57,65,110,4,-56,51,89,87,-50,112,-12,109,109,-50,34,38,-123,-115,-88,-38,85,25,-32,-27,-18,37,-30,-13,87,-52,20,-84,9,1,18,-106,118,87,-19,103,-81,85,23,76,21,44,-45,-50,-120,36,106,78,40,101,-120,-49,20,-119,115,16,78,-102,2,68,18,20,-72,-20,-103,104,70,119,75,-113,11,23,83,107,100,43,64,-67,44,-88,117,18,126,105,-9,44,-63,-85,98,119,63,4,-82,-48,30,-21,115,-53,114,16,-62,-42,123,-84,-39,-7,106,83,-11,-39,25,-8,15,-114,104,106,-9,31,84,23,52,-54,-13,-34,88,-76,46,74,77,80,-40,-51,101,68,64,77,-104,-40,73,82,108,-111,125,19,-13,-75,52,-116,33,-104,34,-41,125,60,116,-118,-54,109,65,77,6,82,-114,-29,-47,-6,57,-96,-128,-121,85,-91,2,81,-2,-43,115,114,-117,-102,-80,-76,7,-124,-65,-1,100,-82,-20,64,-73,-75,82,32,98,121,-75,27,72,34,-109,-117,-83,-98,-24,-24,99,21,43,64,-125,-88,-91,36,-94,-87,-106,-100,-97,115,95,59,-39,-29,-4,-36,-46,-84,15,-121,-127,-45,58,-46,-94,4,-21,29,123,-111,-128,4,53,45,-27,73,29,-44,-80,-94,-117,-109,100,-78,-84,-18,53,101,-25,-7,-27,84,44,101,28,108,105,60,95,-95,-126,-24,-59,-61,15,15,88,-71,-11,-90,94,-59,25,112,-38,126,58,-48,-64,-114,-88,71,122,36,112,1,82,-14,62,39,-62,-42,127,106,58,52,-28,-85,95,-126,50,109,5,-45,-86,-68,125,105,-6,-100,-102,74,-83,-18,-9,-127,90,-33,-18,-68,-100,48,101,-41,-86,-94,104,-68,-124,57,22,-93,17,-22,108,-99,21,13,-91,-25,-64,31,-22,-86,50,-71,-100,66,73,85,-102,-27,-27,-43,-92,-23,-17,-70,-31,69,115,122,86,4,-11,127,-105,92,85,-70,33,123,-40,125,-49,-95,-112,115,-43,124,84,117,-82,-87,61,-61,114,-32,104,-8,57,-71,62,18,-31,-18,30,18,112,94,-84,49,-7,123,-119,-90,-92,103,5,-101,-26,37,78,-31,-92,-1,-10,-50,-21,-111,35,-50,90,-60,-89,-73,60,124,-45,-2,-13,96,-96,-18,48,54,-75,31,-125,-1,-34,-64,88,93,-19,-98,-83,75,-80,-69,-91,16,-75,104,29,-6,92,112,12,21,15,-38,-33,-24,118,-56,-2,56,127,127,-14,94,-38,127,83,113,29,-48,-80,97,-50,-48,-109,-57,61,-96,41,4,-111,-4,-26,85,67,-108,-14,106,76,-113,-31,-12,-2,-30,-29,-76,-7,80,-41,26,63,94,-5,116,58,-39,-13,-76,95,44,-79,-109,-72,-101,-81,-104,26,-122,-42,38,-116,-6,-24,48,-91,112,-109,-103,-45,38,46,-82,-19,99,107,-119,-20,-52,114,-91,-102,49,62,35,97,-38,-14,112,111,107,-35,108,125,110,11,115,80,47,36,54,22,76,26,69,55,11,-65,-50,27,100,-2,-116,26,-73,76,37,-88,109,-28,3,-86,-56,26,71,-76,-35,119,16,-88,-125,-116,108,50,94,52,24,110,-47,84,15,66,110,65,86,-62,-115,-13,-65,120,25,-42,-5,120,-90,-31,-13,-43,84,-59,2,-47,-27,-32,-16,-56,62,-28,57,84,-94,-98,72,-42,-121,-87,-28,58,-101,74,-74,-18,-108,-47,29,18,-58,-22,27,-85,127,74,-25,5,121,-83,-91,119,89,97,16,-3,110,11,-101,-6,-86,-127,15,53,45,114,-54,-86,-68,30,97,32,105,-118,-8,18,-115,-43,-73,16,-88,-91,-66,48,-110,-73,-13,-74,-71,-67,-128,22,41,-5,16,-68,-35,78,-53,34,-47,122,-74,-34,-50,102,-51,9,75,115,-71,88,-85,-80,113,-32,-52,-63,-20,-5,96,63,16,-13,-29,61,3,-35,-72,22,-80,119,-34,18,68,-87,-54,-97,78,47,-12,75,43,-88,115,87,-91,-82,-21,-115,99,77,16,-82,-79,-53,-64,40,-88,-125,76,-18,-108,-39,64,54,100,75,-8,10,-84,-43,-62,23,-11,-106,33,51,111,-35,-32,43,23,-59,-98,120,2,81,-90,125,68,-85,-6,22,8,-8,-102,51,116,-45,0,-68,-77,49,-21,-91,-78,-44,1,-38,52,122,1,123,108,64,18,38,-5,-102,-2,-65,116,-75,-77,-69,-46,-78,-122,19,114,122,-80,88,-20,14,53,51,-33,53,-61,18,-30,-68,102,60,65,41,-81,-108,-73,43,33,-36,73,48,-7,38,49,105,92,44,-79,-127,-107,34,-25,-100,-51,36,-50,-85,-97,36,-125,89,-65,-40,49,-116,69,-96,-89,123,76,31,119,56,31,105,-124,105,-51,26,15,38,-108,76,76,-128,-21,63,95,92,96,-41,58,-49,-109,-115,80,99,88,-101,24,48,17,96,7,-100,49,112,79,-91,115,-73,115,74,11,57,-43,99,-117,37,-77,60,-60,85,100,2,-39,3,-115,-14,108,95,62,-52,-19,-103,-83,0,21,-73,-72,-11,-35,10,-122,-46,-111,12,81,31,56,-106,94,-93,46,-14,-108,-119,1,-67,-13,-78,-107,-1,29,118,83,-71,8,-2,90,-10,-13,-67,-84,-52,72,34,55,111,-23,-63,-54,-10,-103,-118,3,-119,-103,-128,-57,-124,-95,-56,-92,1,86,86,-72,88,-60,-109,-81,42,68,3,24,-39,-14,-94,90,51,-126,-39,-41,98,27,54,-125,6,102,-57,9,-24,19,-30,-83,56,-36,-97,-74,-124,-12,12,83,23,97,85,-65,-84,-7,-10,-39,121,-44,-78,17,4,122,-113,-14,-74,-14,11,-85,59,123,9,79,12,-9,-73,16,120,-127,0,-31,-93,119,66,22,21,75,67,114,51,29,-73,-85,20,-28,-110,-27,44,-29,-95,-50,91,125,-69,55,-40,-72,-53,-102,76,-28,-72,-3,49,54,98,24,-29,120,-16,49,-31,-40,49,-53,-76,-128,-16,22,9,-37,-74,-108,-67,-65,-43,54,7,68,-80,-37,-29,60,90,71,96,66,-106,-53,111,-10,-63,-66,-24,-23,60,28,32,-38,-74,49,-26,69,-127,-11,-87,71,35,-73,-16,83,104,-45,30,21,109,-14,-101,-70,95,-77,-21,-108,38,9,87,117,93,-115,-23,-24,-13,-63,11,111,-97,103,26,-29,-18,65,-54,66,-46,121,63,-23,33,92,37,58,12,11,-28,-102,106,-56,84,15,123,-115,12,-108,79,20,80,52,30,-78,102,-55,23,-72,-76,-4,-115,84,36,-17,-80,34,-45,-94,74,-58,-54,-8,-106,119,56,-95}\n\n#define RESET_GATE_WEIGHT_X2 {65,-28,-36,70,67,55,86,-53,23,25,-19,59,67,43,-92,48,94,-113,60,-58,24,76,-15,-19,15,36,-74,115,-59,3,34,-43,21,-125,-45,127,92,-5,-65,-103,-83,51,42,109,-51,-39,-97,-64,-4,57,79,-42,88,-4,-108,83,-4,20,86,82,-87,95,12,-69,28,30,-97,-13,-33,-48,75,119,18,31,-83,-59,-114,-21,127,34,-27,-26,-47,86,-83,-49,8,29,-48,-31,-94,-59,-49,-36,0,28,-64,113,65,-8,47,-55,-49,112,-40,-39,-100,-42,32,82,27,-78,-105,3,19,88,15,-121,-120,7,-9,-107,-23,104,114,66,113,-102,-90,24,80,-34,106,48,-91,-11,22,-96,-82,75,26,-42,59,-45,23,78,79,-76,6,20,63,-118,-125,-42,111,-80,-79,-59,-121,-79,83,49,-95,-49,81,15,-11,-54,-45,64,-30,-49,81,-57,71,91,113,-46,-63,-4,-96,-95,-27,5,-52,35,67,112,58,-62,48,112,106,80,-19,103,4,-32,-118,-74,12,13,-126,-20,-5,115,-74,-30,123,-74,-66,11,-99,-16,-102,-100,-81,-20,-24,92,-79,-31,44,-24,-85,-123,5,-52,-111,73,29,28,-19,18,23,-112,-32,-52,-38,99,-59,-52,-31,87,124,28,-42,-39,81,-87,-24,16,47,20,36,1,-70,121,124,13,1,30,112,87,-86,11,36,-18,74,-104,-100,-14,0,-24,28,-53,53,66,-63,-109,-10,-50,-15,63,34,82,-59,85,-44,105,-10,-27,99,5,-105,-69,-75,2,-47,-66,71,-30,73,-11,-45,93,47,-37,-34,-8,90,-106,103,112,65,-100,-25,-13,38,74,54,27,-81,-8,19,49,94,118,-121,-116,120,-71,-87,36,-65,-112,8,-59,-106,-40,-16,68,87,-109,53,12,-7,9,6,67,78,8,-42,-123,79,-93,-102,-40,12,-66,-109,47,15,-8,-5,51,-62,111,8,-66,-82,-102,120,68,-67,9,-73,-69,-79,56,-36,-10,-69,-99,-2,-11,-66,76,37,4,92,1,-89,74,85,-124,-25,40,106,-102,42,-19,-30,0,-70,82,84,106,-84,48,16,37,33,-114,38,-29,-117,51,101,26,56,127,-81,-76,38,-124,103,-25,54,-21,-112,40,102,3,63,36,-54,16,-18,114,39,5,105,83,117,-92,-5,-14,-102,-87,-48,-77,-19,-82,-55,119,-95,-43,97,126,-48,-50,-97,-25,-102,-53,47,111,66,-82,-16,-38,76,-15,23,20,88,-19,125,-90,107,-31,102,107,30,-111,71,38,26,43,-85,82,29,-99,126,-109,21,-42,-107,-115,-123,30,-46,39,4,-19,-44,-69,86,41,4,33,57,-110,95,-22,123,71,1,119,77,90,105,81,-68,74,-38,-109,6,-82,-20,-115,-104,38,27,-44,82,-107,99,-41,-28,-55,100,10,-42,7,91,56,-91,113,-91,70,-66,-48,-18,109,-27,42,-89,-20,-63,-41,77,-13,73,10,-74,-51,88,28,50,-5,7,92,18,-98,-41,-14,8,-16,99,30,-109,7,52,110,-120,-17,33,53,1,106,-99,-14,-93,-46,-60,7,-54,100,91,93,89,-84,118,58,-84,38,57,-24,-25,22,-52,119,-85,-75,-79,60,-97,1,-13,54,-43,98,-92,65,37,-110,64,21,-18,-111,-9,86,90,42,-71,-29,86,-10,-15,-20,106,-45,-22,44,105,55,-61,-89,-119,31,93,-97,-35,9,-113,86,-113,22,-68,-29,-36,-123,98,79,34,-29,71,44,49,56,93,4,63,-3,45,12,54,-96,27,-55,-72,84,69,27,-28,-111,-57,-41,92,-106,-90,55,105,-60,94,34,94,-1,112,-86,-55,-58,68,-65,37,110,-107,-62,66,61,-69,-52,27,-61,70,-56,-116,-101,-103,127,-98,-79,25,-117,40,33,111,10,-3,-65,1,84,-41,5,-93,-85,-96,78,54,43,70,77,-53,-71,-38,48,103,-88,115,94,20,-5,-125,-7,-61,30,-25,-57,-42,-100,63,-114,40,-53,123,50,-7,121,75,67,75,3,-38,-101,-44,-46,54,38,-22,4,18,102,-126,44,86,-10,-1,118,98,102,-125,74,32,18,74,73,72,64,47,105,-72,5,73,98,9,39,18,10,-68,81,-128,-89,27,-51,51,16,119,-71,-53,51,-84,107,-116,7,73,106,20,52,-85,-74,-103,-18,29,-13,73,106,-92,107,-115,5,65,83,-79,-7,98,-42,-33,82,-64,75,-32,100,-67,-122,84,43,-111,114,-99,46,12,99,43,50,-24,-88,-60,111,68,64,54,-105,-120,119,68,5,51,63,89,-57,-75,-25,-35,-28,42,-64,101,-103,-35,-99,-96,-18,-64,-94,-46,89,-65,-38,-1,-97,127,-67,84,-18,86,115,60,-78,-109,-61,-93,-67,-87,-80,124,26,-9,111,115,-88,-71,-86,-71,-65,-15,108,-25,111,9,86,-115,-55,-23,57,27,103,108,-28,65,86,68,114,62,126,-4,33,-34,-123,87,-76,-104,-126,26,-13,44,108,105,12,-35,-58,3,-5,-32,91,49,89,88,37,38,119,-125,-48,37,53,85,-73,67,116,-116,-127,103,127,-115,92,-35,-83,-45,25,-96,-13,-90,41,-27,105,119,85,27,-3,-64,93,17,-53,104,-70,-43,65,45,-90,61,-31,-49,-99,84,46,93,-37,84,-79,13,-59,-76,62,19,-11,-96,-104,-3,-8,-78,92,98,50,-7,-39,-82,37,-126,127,-113,67,94,115,-9,-33,-57,26,-67,9,28,-8,81,-98,-10,84,34,111,-95,127,75,38,-7,-2,-71,-62,-72,99,-74,25,123,114,51,-28,103,-110,43,113,7,58,75,-95,-52,19,-112,101,26,65,-115,-91,85,-5,-45,110,-103,-34,-69,50,-15,-19,-110,-44,-7,-112,-93,29,50,-84,-55,-41,11,19,-31,-47,-62,-12,-105,-47,68,-124,-47,-113,-55,30,25,55,-14,85,-66,-5,-105,62,-27,-89,-124,-84,112,34,52,25,104,32,-30,84,-46,-38,60,-2,-107,-95,-86,-25,117,60,-121,32,84,8,-88,-1,91,-46,-76,81,44,79,105,-105,82,20,59,-115,96,21,-113,19,92,122,76,36,-112,78,16,38,73,69,54,97,41,-49,78,-71,-69,95,-85,117,10,-98,25,72,126,47,-17,4,-44,-32,-16,-12,105,76,4,-82,-91,-21,-117,30,-67,46,-8,-125,84,-51,94,0,-60,127,99,43,60,16,55,-16,-121,-61,-115,38,25,17,35,23,68,9,-107,-44,118,119,43,99,-95,40,42,-70,54,19,92,-36,82,-35,122,-96,54,-29,-50,100,-79,-71,-99,-60,-2,-100,41,97,-93,-58,-123,126,-102,81,-5,83,110,-50,58,-86,41,-126,43,-49,98,-59,94,-91,115,16,-3,-58,-30,-109,110,-114,124,22,-88,-79,-29,-100,54,-33,23,-1,-77,52,-126,114,70,-50,90,82,-13,-25,-125,16,48,101,-93,19,-103,67,-1,-32,28,-72,-26,73,45,-22,83,-68,-61,89,57,-37,90,16,-38,-124,47,-5,-113,81,71,-30,-46,-18,-52,-104,-40,49,-101,106,38,6,125,-70,25,-88,-50,-77,-12,53,110,-84,23,-109,-53,112,2,88,101,-55,-10,-72,123,-35,42,-15,98,-85,48,-100,-54,123,52,-105,7,-28,86,-125,85,12,86,-34,103,-8,-65,-24,88,-43,57,-16,114,-98,101,81,34,-83,-8,3,-27,5,110,-24,-80,9,85,-108,96,-93,-34,76,-107,71,84,-98,-10,-94,71,71,-38,-96,-112,100,127,52,-32,-127,102,61,-119,-46,-119,125,109,-23,-80,-11,-68,84,-53,35,-115,105,-88,72,110,109,17,-121,80,-87,-72,-123,-31,13,71,63,-126,107,115,-100,27,39,10,75,-128,58,103,-104,126,-59,31,89,-67,97,-96,-69,87,19,99,49,111,9,91,-98,-4,-118,103,-63,-92,-74,106,-53,52,122,12,24,123,-126,-105,104,38,107,118,10,74,-38,14,-11,76,-112,-112,30,-47,95,112,65,-94,120,21,85,33,52,55,-54,-57,-77,-16,52,88,-81,-77,52,0,90,-126,66,88,-81,83,50,81,-28,-56,-36,-8,50,4,115,58,-30,-53,-78,-114,-16,-100,33,-80,-6,96,108,4,-27,-90,8,48,-118,-112,22,-56,114,-66,4,-11,-48,118,61,104,118,-27,13,52,2,74,112,-127,48,27,59,-37,-58,18,85,-5,-41,-91,-32,-56,-5,-40,-117,-89,-48,-8,-32,43,-75,-118,-109,-92,-122,67,88,107,79,-90,30,-65,-102,-100,-112,-104,57,-33,-103,69,-26,15,-12,106,-17,50,-20,33,51,14,98,-118,-82,63,-65,-40,-89,-8,-75,-16,-1,-13,118,76,34,-100,83,-10,72,26,-13,50,92,69,12,-33,-66,76,62,-47,-10,-31,60,-52,52,74,77,30,59,-98,-78,-124,107,38,-121,97,-39,-12,-1,63,-112,71,-65,9,-66,-31,50,39,77,56,-81,-125,-109,-36,-62,-74,12,31,-128,64,62,86,-9,26,69,-45,-35,46,39,95,78,-22,81,-5,-22,90,-47,-36,58,65,88,-89,37,81,115,-3,-108,52,7,-32,80,-96,-24,-22,104,-95,-3,117,59,105,66,-113,28,55,-75,46,45,-118,79,-3,-113,119,-114,-3,-64,56,34,118,67,32,25,-8,1,-64,91,112,31,-88,91,-53,115,33,-3,14,-43,82,-42,-57,-128,-124,127,-69,-112,98,-40,-9,-35,29,-87,-74,27,120,77,-70,93,39,95,118,-39,82,83,-26,60,106,-116,43,8,-114,66,28,5,-95,111,-11,68,24,44,65,-93,26,50,13,100,-33,-93,99,6,0,77,98,5,-10,84,77,46,4,-13,-31,-83,84,-78,-97,-58,76,-71,-6,2,27,-73,81,100,-126,-7,117,-10,-6,118,52,-4,25,56,43,-26,-43,-64,23,-44,-108,-53,45,-117,91,-88,-45,-87,63,120,82,70,73,-108,89,-12,35,-81,-98,-124,-114,-126,86,21,-35,-32,-105,122,111,98,77,38,-18,-7,-48,69,22,74,-127,-62,-47,-20,-8,9,-48,-2,-53,-58,-37,51,27,-91,57,69,-27,-91,76,-127,78,76,-108,-1,13,-71,-41,38,46,60,-5,-73,-98,123,106,35,-38,-102,2,125,25,-63,-110,9,25,-106,-21,-113,-111,97,-33,33,83,55,123,72,-11,-78,-85,35,56,-110,-18,118,9,85,-100,-65,126,24,-18,50,-32,98,40,114,59,-60,-6,-72,-68,16,21,-10,-6,113,-23,-24,-27,-116,-126,119,6,-78,118,15,-53,7,113,3,83,52,44,-44,-53,-85,78,-108,-83,-128,63,-10,-122,-92,24,28,21,-87}\n\n#define RESET_GATE_WEIGHT_X4 {65,28,-28,30,-90,106,24,80,-36,-97,70,-13,80,-19,-34,103,67,-33,55,-48,106,4,48,-32,86,75,-53,119,-91,-118,-11,-74,23,18,25,31,22,12,-96,13,-19,-83,59,-59,-82,-126,75,-20,67,-114,43,-21,26,-5,-42,115,-92,127,48,34,59,-74,-45,-30,94,-27,-113,-26,23,123,78,-74,60,-47,-58,86,79,-66,-76,11,24,-83,76,-49,6,-99,20,-16,-15,8,-19,29,63,-102,-118,-100,15,-48,36,-31,-125,-81,-42,-20,-74,-94,115,-59,111,-24,-80,92,-59,-49,3,-36,-79,-79,-59,-31,34,0,-43,28,-121,44,-79,-24,21,-64,-125,113,83,-85,49,-123,-45,65,127,-8,-95,5,-49,-52,92,47,-5,-55,81,-111,15,73,-65,-49,-103,112,-11,29,-54,28,-83,-40,51,-39,-45,-19,64,18,42,-100,109,-42,-30,23,-49,-112,-51,32,-39,82,81,-32,-57,-52,-97,27,-64,-78,71,-38,91,99,-4,-105,57,3,113,-59,-46,-52,79,19,-42,88,-63,-31,-4,87,88,15,-4,-121,-96,124,-95,28,-108,-120,83,7,-27,-42,5,-39,-4,-9,20,-107,-52,81,35,-87,86,-23,82,104,67,-24,112,16,-87,114,95,66,58,47,-62,20,12,113,-69,-102,48,36,112,1,-70,54,121,27,-2,-102,-11,-87,124,-81,13,-8,-66,-48,76,-77,1,19,30,49,37,-19,4,-82,112,94,87,118,92,-55,1,119,-86,-121,11,-116,-89,-95,74,-43,36,120,-18,-71,85,97,-124,126,74,-87,-104,36,-25,-48,40,-50,-100,-65,-14,-112,106,-97,-102,-25,0,8,-24,-59,42,-102,-19,-53,28,-106,-53,-40,-30,47,0,111,53,-16,66,68,-70,66,82,-82,-63,87,-109,-109,84,-16,106,-38,-10,53,-50,12,-84,76,48,-15,-15,-7,63,9,16,23,37,20,34,6,82,67,33,88,-114,-19,-59,78,85,8,38,125,-29,-90,-44,-42,105,-123,-117,107,51,-31,-10,79,-27,-93,101,102,26,107,99,-102,5,-40,56,30,127,-111,-105,12,-69,-66,-81,71,-76,38,-75,-109,2,47,38,26,-124,43,-47,15,-66,-8,103,-85,-25,82,71,-5,-30,51,54,29,-21,-99,73,-62,-11,111,-112,126,40,-109,-45,8,93,-66,102,21,3,-42,47,-82,-37,-102,63,-107,36,-115,-34,120,-8,68,-54,-123,16,30,90,-67,-106,9,-18,-46,114,39,103,-73,112,-69,39,4,5,-19,65,-79,-100,56,105,-44,83,-69,-25,-36,-13,-10,117,86,-92,41,38,-69,74,-99,-5,4,-14,33,57,-41,-110,-14,-15,68,-20,-65,95,8,-22,-16,106,37,-45,110,123,99,71,30,-22,-107,44,-62,1,-109,119,7,105,66,55,61,77,52,90,110,-61,-69,-89,-52,105,-120,81,-17,-119,27,31,-61,-68,33,74,53,93,70,-97,-56,-38,1,-109,106,-35,-116,9,-101,6,-99,-82,-14,-113,-103,86,127,-20,-93,-115,-46,-113,-98,22,-79,-104,-60,38,7,-68,25,-29,-117,27,-54,-44,100,-36,40,-123,33,82,91,-107,93,98,111,79,10,99,89,-41,-84,34,-3,-29,-65,-28,118,-55,58,71,1,44,84,100,-84,10,38,49,-41,56,5,-42,57,7,-24,93,-93,4,-85,91,-25,56,22,63,-96,-3,78,-91,-52,113,119,45,54,12,43,-91,-85,70,-75,54,70,-96,77,-66,-79,-48,60,27,-53,-55,-71,-18,-97,109,1,-72,-38,84,48,-27,-13,42,54,69,103,27,-88,-89,-43,-20,98,-28,115,-111,94,-63,-92,-41,65,-57,20,-41,-5,77,37,-13,-110,92,-125,-106,-7,73,64,10,21,-90,-61,55,30,-74,-18,-51,-111,105,-25,-60,-57,88,-9,28,86,94,-42,34,-100,50,90,-5,42,94,63,-1,-114,7,-71,92,-29,112,40,-86,-53,18,86,-98,-10,-55,123,-58,50,-7,-103,121,-18,-46,-35,89,-58,75,29,67,-13,-65,3,-38,-5,75,73,3,106,-1,-32,-97,91,-38,-92,-101,107,127,49,-67,89,-44,-115,-46,5,84,88,-18,37,54,65,38,83,86,38,115,119,-22,-79,4,-7,60,-125,-78,-48,18,98,102,-42,-109,37,-61,53,-126,-33,44,82,-93,85,-67,-73,86,-64,-10,75,-87,67,-80,116,-1,-32,118,100,124,-116,26,-127,98,-67,102,-122,-9,103,111,127,-125,84,74,43,115,-115,-88,92,32,-111,18,114,-71,-35,-86,-83,74,-99,73,46,-71,-45,-65,25,72,12,64,99,-15,-96,108,-13,47,43,105,50,-25,-90,111,41,-72,-24,5,-88,9,-27,86,105,73,-60,98,111,-115,119,-55,85,9,68,39,64,-23,27,57,-3,18,54,10,-105,27,-64,103,93,-68,-120,81,119,108,17,-28,-53,-128,68,-89,5,65,104,86,-70,27,51,-51,63,68,-43,114,65,51,89,16,-57,62,45,126,-90,119,-75,-71,-25,-4,61,33,-31,-53,-35,51,-28,-34,-49,-123,-99,-84,42,107,-64,87,84,-76,46,-116,101,7,-103,-104,93,-126,-37,73,-35,106,-99,26,84,-13,-79,20,-96,52,-18,44,13,108,-59,-85,-64,-74,-94,105,-76,12,62,19,-115,-11,-91,117,-67,60,46,-96,85,-104,-5,-121,-8,32,-125,-3,-45,-8,110,84,84,8,-51,-78,-103,92,-34,-88,94,-1,0,98,-69,50,50,91,-60,-46,127,-7,-15,-39,-19,-76,99,81,43,-82,-110,37,-44,44,60,79,16,-126,-7,127,-112,105,55,-105,-16,-113,-93,67,29,82,-121,20,-61,94,50,115,-84,59,-115,-115,38,-9,-55,-33,-41,96,25,21,17,-57,11,26,19,-113,35,19,23,-67,-31,9,-47,92,68,122,9,28,-62,-8,-12,76,-107,36,-44,81,-105,-98,-47,-112,118,78,119,-10,68,84,-124,16,43,38,99,34,-47,111,-113,73,-95,69,40,-95,-55,127,30,54,42,97,-70,75,25,38,55,41,54,-49,19,-7,-14,-2,85,78,92,-71,-36,-71,-66,-62,-5,-69,82,95,-35,-72,-105,99,62,-85,122,117,-96,-74,-27,25,-89,10,54,-98,-29,123,-124,114,-84,25,-50,72,100,51,112,-28,34,126,-79,47,-71,103,52,-110,25,-17,-99,4,-60,43,104,113,32,-44,-2,-32,-100,7,-30,58,84,-16,41,-12,97,75,-46,-95,-38,105,-93,76,-58,-52,60,19,-2,4,-123,-82,126,-112,-107,101,-95,-91,-102,-21,81,26,-86,65,-25,-117,-5,30,83,110,-38,-50,-124,57,-31,-16,13,58,47,-86,-5,114,71,-98,63,41,-113,-126,81,101,-126,81,107,43,71,-49,-30,34,115,-83,-100,98,-46,-59,-18,-8,27,3,39,94,-52,-91,-104,-27,10,5,75,115,-40,16,49,110,-128,-24,58,-3,-101,-58,106,-80,103,9,-104,-30,38,-109,6,85,126,-108,-59,110,125,-114,-70,96,31,-93,89,124,25,22,-88,-34,-67,76,97,-88,-50,-79,-77,-107,-96,71,-69,-29,-12,-100,53,84,87,-98,19,54,110,-33,-84,-10,99,-94,49,23,23,-1,-109,71,111,71,9,-77,-53,52,112,-38,91,-96,-98,-126,2,114,88,-112,-4,100,-118,70,101,-50,-55,127,103,52,-63,90,-10,82,-72,-32,-92,-127,-74,-13,123,-25,-35,102,106,61,-53,-125,42,16,-15,-119,52,-46,122,48,98,101,-85,-119,12,125,24,-93,48,19,-100,109,123,-23,-126,-103,-54,67,123,-80,-105,-11,104,-1,52,-32,-105,-68,38,84,107,28,7,-72,-28,-53,118,35,10,-26,86,73,-125,-115,74,105,-38,45,85,-22,12,-88,14,72,-11,83,86,-68,-34,110,76,109,-112,-61,103,89,-8,17,-112,-121,30,57,-65,-37,-24,80,-47,-87,95,90,88,16,-43,-72,112,-123,65,-94,52,120,2,-16,26,-1,69,21,74,85,112,-13,-45,118,-35,33,-127,52,48,76,46,34,39,55,27,-54,59,-100,95,83,78,-57,-37,-77,-58,-10,-22,72,81,-16,18,52,85,26,-5,-13,-22,88,-5,-81,-41,50,90,92,-47,-77,-91,52,-32,69,-36,12,58,0,-56,90,-5,-33,65,-66,88,-126,-40,66,-117,76,-89,62,37,88,-89,-81,-48,-47,81,-10,115,83,-8,50,-32,-31,-3,60,-108,81,43,-28,-75,-52,52,52,7,-56,-118,-36,-109,74,-32,77,80,-8,-92,50,-122,30,-96,59,-24,4,67,115,88,-98,-22,-78,104,58,107,-30,79,-124,-95,107,-3,-53,-90,-78,30,38,117,-121,59,-114,-65,-16,-102,97,105,-39,66,-100,-100,33,-112,-12,-113,-1,28,-80,-104,-6,57,63,55,-112,-75,96,-33,108,-103,71,46,-65,45,4,69,-27,-26,9,-118,-66,79,-90,15,8,-12,-31,-3,50,-113,48,106,-118,-17,39,119,77,-114,-112,50,22,-20,56,-3,-81,-64,-56,33,114,51,-125,56,-109,34,-66,14,4,98,-36,118,-62,67,-11,-118,-48,-82,-74,32,12,25,118,63,61,-65,31,-8,-128,1,104,-40,118,-89,64,-64,62,91,-27,-8,13,-75,86,112,-9,31,-88,-10,91,84,111,123,98,72,-53,77,115,46,77,-11,38,-78,33,4,-3,-13,-18,-85,-7,35,14,-31,-43,-83,-48,56,69,-110,82,84,-42,-78,22,-18,74,118,-57,-97,-128,-58,-127,9,-62,85,-124,76,127,-71,-47,-100,-20,-65,-69,-6,-112,2,-8,126,9,24,98,27,-40,-73,-48,-18,-2,50,-9,81,-35,100,-53,-32,-58,98,29,-126,-87,-7,-37,40,51,114,-74,117,27,-10,27,59,-91,-60,120,-6,77,118,57,-6,69,-72,-70,52,93,-4,-27,-68,-91,16,39,25,95,56,76,21,-127,-10,118,43,-39,-26,78,-6,76,113,82,-43,83,-64,-108,-23,-1,-24,-26,23,60,-44,13,-27,-71,-116,106,-108,-116,-53,-41,-126,38,119,43,45,8,-117,46,6,60,-78,-114,91,66,-88,-5,118,-73,15,28,-45,5,-87,-98,-53,123,7,-95,63,111,120,106,113,35,3,-11,82,68,70,-38,83,-102,52,24,73,44,-108,2,44,125,-44,65,89,-93,-12,25,-53,-63,-85,26,35,50,-81,-110,78,9,-108,13,-98,100,-124,25,-83,-106,-128,-33,-114,-93,-126,-21,63,-113,-10,99,86,6,21,-111,-122,97,-92,0,-35,77,-32,-33,24,33,28,98,-105,5,122,83,21,55,-87}\n\n#define HIDDEN_STATE_WEIGHT_X2 {-3,-33,59,21,117,70,0,44,108,108,-47,-80,-118,34,88,-91,-123,-108,8,51,26,82,-80,107,-100,-69,97,-90,17,19,63,111,-40,-125,110,24,58,-69,26,-31,-65,-37,-47,-41,-109,106,-100,108,-99,108,116,104,86,-50,-45,10,-53,112,34,96,-10,-39,-32,-25,69,102,-2,-4,-25,121,-1,-28,-48,-100,0,-128,60,-73,42,-32,118,-88,-113,-112,-113,70,-98,118,95,77,-52,123,-99,72,26,-102,-32,120,113,22,6,-68,84,-33,103,66,111,60,-76,33,10,25,-43,93,41,-79,110,13,67,107,-113,90,58,64,-125,79,-85,-18,76,80,-59,11,-18,-74,15,-102,99,-19,117,99,65,-50,-108,-121,-9,-104,33,94,-95,110,-48,-97,76,36,1,-58,86,-115,45,-88,38,51,123,-23,-20,-43,-37,15,91,-85,-88,6,-96,58,78,13,23,1,-43,62,-70,-108,44,30,74,90,79,-80,-20,71,-21,0,60,19,-59,-52,44,-14,77,92,-69,121,-123,-27,119,-84,79,87,24,85,118,1,-51,-96,60,102,-6,15,96,120,-109,6,35,11,-119,-109,-18,16,-112,91,-126,71,-29,121,-21,-120,37,57,-117,-39,93,56,-73,-104,77,-107,-52,111,-61,-4,44,-119,67,72,-66,36,-127,-113,-124,123,21,98,84,86,76,23,78,7,-127,-4,1,-46,-107,59,-21,53,-65,-99,-15,-98,53,-31,7,64,7,105,51,-75,50,-52,48,101,-126,-120,5,34,3,81,-39,70,41,112,25,30,79,-6,107,-11,-97,92,-84,67,49,107,60,101,-37,27,-91,-61,-96,120,-113,87,-46,68,64,102,-86,-60,13,-71,56,-105,90,-9,-35,27,103,120,39,23,-39,-1,-85,-95,-6,119,-41,-2,-69,102,102,-119,-3,-11,-125,-111,40,-115,-41,-117,-44,-7,83,123,-21,23,99,-107,43,100,-99,-3,89,3,-113,103,47,-94,-69,-38,-28,-37,49,-117,-49,-126,17,-98,37,92,55,-116,-70,-50,77,120,47,124,78,114,67,-48,6,-42,-115,85,116,-114,-46,-50,-13,70,-101,110,-55,20,-51,125,-19,-9,-15,46,30,-27,-123,114,-50,-30,-72,76,-83,71,47,-45,74,102,44,108,-26,108,-113,-43,110,-91,37,-69,76,-33,106,-76,-96,20,-117,63,-33,-5,11,-121,-51,63,-56,59,-16,-33,114,74,124,73,99,-50,51,-71,118,106,30,-92,26,-40,119,-121,2,-45,9,0,-5,-2,-89,88,-11,-85,-60,19,81,-96,75,82,-40,124,89,-36,-117,-100,-2,-34,112,101,39,-101,-106,60,59,-126,-32,96,68,-53,87,20,54,-24,46,-95,65,-112,22,60,122,-22,-106,-124,97,-37,-86,95,-110,-8,44,58,-12,-120,-45,-86,-32,-86,-94,-14,15,29,-8,-114,71,70,-93,-69,100,-123,-18,-47,-12,127,104,-102,93,-11,-73,121,87,-79,-92,46,92,-108,-107,79,121,-71,-89,16,-11,-52,72,-114,-32,-60,-9,-57,-4,10,-81,-22,68,74,76,-68,-127,96,-84,69,-3,-26,-106,-3,-87,-65,105,109,122,-103,31,-108,-86,-5,-39,85,88,67,-82,0,-25,93,61,-62,5,-54,-114,-51,-9,-114,20,49,-26,38,19,39,-103,33,-120,37,-97,32,-89,119,111,-124,-99,78,-49,-128,76,-18,-12,-109,96,90,-73,-104,59,-59,-92,123,55,54,-120,-80,-48,-16,-95,96,36,118,-119,-58,93,45,-43,-75,64,38,-2,-72,-111,22,-89,-75,-120,-42,45,108,59,-105,40,27,32,-66,121,-22,-71,-9,118,124,60,-96,47,4,14,-27,64,70,47,-91,-70,1,-44,94,-46,53,4,23,-124,-92,-95,83,-49,-81,40,-80,48,0,39,1,-113,32,40,-21,-1,-110,102,1,-74,-51,40,108,-35,-36,89,84,123,-48,-115,-115,83,-61,114,-127,-61,114,100,-82,-45,60,87,60,19,86,97,-68,40,-66,75,86,-32,-128,88,-57,-27,77,3,-27,43,-39,-62,66,5,-82,45,-104,-78,34,57,96,89,-90,66,-10,37,-110,-30,82,-58,13,94,12,115,35,117,0,80,61,-7,107,-104,-21,21,-70,-93,-94,-51,-61,39,-62,64,-82,-109,76,84,58,-47,-100,52,46,-51,88,91,8,-47,108,-80,25,-58,111,-59,-83,-75,92,98,110,54,106,65,-47,-120,-5,90,-123,101,-61,-85,-93,109,88,0,8,59,86,56,126,17,-26,58,-101,-25,35,0,-123,-3,-56,112,-128,8,17,-52,88,31,-3,105,-56,68,-1,-94,96,-19,10,-22,-88,-10,119,-44,19,42,75,-86,18,-107,89,-82,-120,76,40,84,-122,29,33,-47,17,-50,-13,23,-66,-46,85,-29,-110,42,-68,8,99,-93,-29,101,16,52,-13,127,0,86,-117,-92,-70,-32,-27,127,-123,1,34,-13,92,114,-11,29,-103,-121,-54,20,73,16,74,108,16,-61,89,50,-30,-14,116,44,-31,16,96,24,-51,7,39,-87,-69,-61,-98,61,-46,113,85,-95,103,67,99,-66,-45,-42,-70,96,104,5,-111,69,-25,99,-118,23,109,11,4,-41,-94,73,100,96,6,90,-75,-25,79,-13,-43,-6,-12,51,12,40,124,-56,81,-8,59,-60,-26,-54,33,122,85,53,-99,125,19,-26,94,41,-5,46,-48,-70,-10,41,102,-1,-98,-9,15,29,46,-66,-118,-53,45,119,-127,94,53,-58,90,124,5,-110,-98,-80,-77,77,29,19,105,-121,92,9,-124,50,-119,59,40,67,104,-12,13,103,101,47,-51,34,-66,-101,-117,112,-5,118,-48,-60,-114,38,-71,2,51,114,80,115,-5,116,20,16,-47,-19,30,24,-68,7,-30,-3,-64,-7,-34,-12,44,34,-91,-97,116,112,-99,108,-75,17,26,-14,-61,80,22,-7,34,47,-93,45,106,121,78,43,-97,39,-99,-68,-72,-7,64,-49,-82,-127,78,-64,48,18,15,126,-125,-111,-69,-111,10,-46,111,-75,123,-44,-67,-31,-96,-67,-53,-53,-106,67,-101,23,62,30,9,-114,-12,-57,-38,-78,95,-10,-3,110,88,123,-26,78,-125,114,53,10,-57,26,38,-51,73,92,-124,79,15,75,-62,109,-113,-67,1,35,52,-36,55,7,111,-43,109,101,88,122,-21,-32,-87,59,16,-122,-109,-118,17,-22,-39,53,-105,77,90,-24,-65,43,-27,113,30,-117,-30,106,37,55,59,54,-70,99,99,-73,120,97,-39,-88,-54,101,51,-76,70,-121,-68,23,-73,-31,75,-8,-63,-123,-93,96,-81,99,-95,28,-36,55,-104,32,-64,41,-97,95,-89,126,-26,-25,126,2,-26,-54,110,-86,110,74,-3,-110,56,-60,-49,117,-82,-55,-103,-112,70,-85,85,-63,82,7,75,-61,90,32,35,-115,72,73,-121,63,-84,-52,-29,-59,-4,29,64,119,127,58,-117,48,126,120,-115,-15,-10,27,27,-81,117,-5,121,-72,113,31,-13,10,27,-106,-51,81,-96,-22,19,-78,6,71,-34,123,118,75,-23,-72,-97,111,-121,0,80,28,52,95,59,-116,72,80,-75,-62,88,23,-102,13,6,113,-85,98,45,-96,-32,94,-7,12,-9,86,18,59,-15,75,13,-70,50,-93,52,67,53,-31,19,45,-111,36,39,-91,-77,104,71,7,-44,-76,3,-62,121,43,37,-7,-96,-6,57,-104,30,-126,-94,118,-44,91,29,124,-86,-13,55,41,-41,91,-112,-25,103,81,-70,-112,113,-25,-73,-82,16,67,-5,104,56,66,-115,-90,-126,106,80,-78,-51,-15,-68,-3,102,-10,-123,-10,-71,-111,86,48,-45,101,81,-114,-94,77,-127,-96,-100,86,109,-33,15,-34,60,88,-86,-63,-103,-46,101,-127,-88,90,-37,82,-125,-28,-6,61,-104,77,0,-52,59,-9,-82,59,-78,79,80,-77,-125,-95,16,26,-55,-16,15,-76,-9,56,110,85,-102,-23,-12,-6,-97,-34,32,-79,-95,71,126,127,30,-112,-115,75,-8,125,103,-118,65,-43,107,46,96,-41,-87,-64,-18,126,82,10,81,45,95,61,9,28,-113,-71,47,117,26,-81,73,49,-55,-126,-33,62,-84,-87,-56,-71,97,49,-124,-76,-9,97,119,-23,127,-29,20,-66,-80,-122,40,-2,116,126,-120,-48,124,57,-107,104,80,-13,81,118,33,88,119,-110,33,-35,-75,-6,89,-41,99,46,127,-36,54,-55,50,24,51,49,-71,37,-117,114,6,110,88,84,-30,-45,-50,113,-12,-57,59,-18,49,99,-124,46,-48,88,-82,-121,-97,15,-73,-128,-121,46,30,-93,-109,-15,-86,-2,75,1,-32,-27,-86,-13,-38,48,10,-36,-107,-27,-48,88,-7,-88,98,-83,61,-81,20,-123,18,-41,-127,-55,-66,24,-107,73,30,-42,-74,124,-43,-125,102,98,6,32,24,-123,32,113,105,-81,117,-41,-54,-113,-126,-28,31,-56,-64,-6,-103,-36,-2,-59,34,-40,-64,-39,-64,-74,-105,50,-86,-66,-14,-71,35,-116,-20,15,-119,-12,90,-117,-29,13,-8,-75,57,67,124,-38,66,113,-80,113,105,45,-74,-80,108,-24,-3,36,62,-8,109,-40,-101,106,12,-47,-113,-118,-12,-3,-86,-52,-93,-24,-62,-119,-93,67,39,4,-18,-103,24,1,71,93,95,-113,-7,34,-10,-77,-74,96,86,52,-2,-45,-71,-48,124,-97,1,23,-59,-117,-74,58,-31,-115,114,-14,-115,77,82,100,67,117,-16,-64,105,-19,59,124,124,-116,-33,22,-115,30,102,91,98,-124,38,12,-38,-23,-106,52,75,-45,74,-6,-29,31,117,20,99,66,27,-92,127,-67,-53,68,-66,-26,35,114,-84,-74,-94,-14,-43,-106,-32,-67,-27,28,29,-32,-101,-60,-55,-6,-101,-42,61,111,107,-87,-67,102,-36,119,-81,-54,52,-114,5,-26,115,-7,44,-30,-21,-67,33,-92,29,-30,3,7,-101,-83,-115,29,68,49,-70,-40,-116,63,-49,115,97,123,119,22,-13,47,-4,-14,-94,94,-122,56,58,57,-127,-60,-46,29,94,-105,49,-72,94,20,-8,104,35,-90,19,-26,24,-7,109,10,-9,80,-105,0,126,94,105,63,85,43,-63,-2,-32,39,-119,-12,-108,33,-67,127,-66,-23,-123,8,41,-21,-30,117,20,-85,-39,-87,2,96,-12,-128,83,67,-53,-101,3,-3,-22,-16,51,125,-125,-76,25,42,101,101,35,-36,103,85,-71,-24,6,26,105,60,112,-91,69,13,21,10,-93,22,-111,0,-38,4,-34,45,-86,121,-42,-54,7}\n\n#define HIDDEN_STATE_WEIGHT_X4 {-3,69,-33,102,76,60,80,19,59,-2,21,-4,-59,-59,11,-52,117,-25,70,121,-18,44,-74,-14,0,-1,44,-28,15,77,-102,92,108,-48,108,-100,99,-69,-19,121,-47,0,-80,-128,117,-123,99,-27,-118,60,34,-73,65,119,-50,-84,88,42,-91,-32,-108,79,-121,87,-123,118,-108,-88,-9,24,-104,85,8,-113,51,-112,33,118,94,1,26,-113,82,70,-95,-51,110,-96,-80,-98,107,118,-48,60,-97,102,-100,95,-69,77,76,-6,36,15,97,-52,-90,123,1,96,-58,120,17,-99,19,72,86,-109,-115,6,63,26,111,-102,45,35,-88,11,-40,-32,-125,120,38,-119,51,-109,110,113,24,22,123,-18,-23,16,58,6,-69,-68,-20,-112,-43,91,26,84,-31,-33,-37,-126,15,71,-65,103,-37,66,91,-29,-85,121,-47,111,-41,60,-88,-21,6,-120,-109,-76,106,33,-96,37,58,57,-100,10,108,25,78,-117,13,-39,-99,-43,108,93,23,93,1,56,116,41,104,-79,-43,-73,62,-104,86,110,-50,13,-70,77,-108,-107,-45,67,10,107,44,-52,30,111,-53,-113,112,90,74,-61,90,-4,34,58,96,64,79,44,-80,-119,-10,-125,-39,79,-20,67,71,72,-32,-85,-25,-18,-21,-66,0,36,-127,-96,-113,120,49,76,-117,-33,-124,-113,123,87,-49,106,-126,-76,21,-46,98,68,17,-96,-98,20,84,64,86,102,37,-117,92,63,76,-86,23,-60,55,-33,-116,-5,78,13,7,-71,-70,11,-50,-121,-127,56,-4,-105,77,-51,120,63,1,90,-46,-9,47,-56,124,59,-107,-35,59,27,78,-16,114,-33,-21,103,53,120,67,114,-48,74,-65,39,-99,23,6,124,-42,73,-15,-39,-98,-1,-115,99,85,-50,53,-85,-31,-95,116,51,-114,-71,7,-6,64,119,-46,118,-50,106,7,-41,105,-2,-13,30,70,-92,51,-69,-75,102,-101,26,110,-40,50,102,-52,-119,-55,119,20,-121,48,-3,101,-11,-51,2,125,-45,-126,-125,-120,-111,-19,9,-9,0,5,40,34,-115,-15,-5,46,-2,3,-41,81,-117,30,-89,-27,88,-39,-44,70,-7,-123,-11,114,-85,41,83,112,123,-50,-60,-30,19,25,-21,30,23,-72,81,76,-96,79,99,-6,-107,-83,75,71,82,107,43,-11,100,47,-40,-45,124,-97,-99,92,-3,74,89,102,-36,-84,89,67,3,44,-117,108,-100,49,-113,107,103,-26,-2,108,-34,60,47,101,-94,-113,112,-43,101,-37,-69,27,-38,110,39,-91,-101,-91,-28,-61,-37,37,-106,-69,60,59,121,-126,-71,-97,47,32,4,-32,-89,96,16,-89,14,119,-27,68,-11,-53,-52,111,64,-124,70,87,72,20,-114,-99,47,78,-91,54,-32,-24,-60,-49,-70,-128,1,46,-9,-95,-57,76,-44,-18,94,65,-4,-112,10,-12,-46,-109,53,22,-81,60,-22,96,4,90,23,122,68,-22,74,-73,-124,-104,-92,-106,76,-124,-68,59,-95,-59,83,97,-127,-37,96,-92,-49,123,-81,-86,-84,95,69,55,40,54,-80,-110,-3,-8,-26,-120,48,-80,0,44,-106,58,-3,-48,39,-16,1,-12,-87,-120,-65,-95,-113,96,32,-45,105,-86,109,36,40,118,-21,-32,122,-86,-103,-119,-1,-58,-110,-94,31,-14,-108,93,102,45,1,15,-86,29,-5,-43,-74,-75,-51,-8,-39,-114,85,64,40,38,108,71,88,70,67,-2,-35,-72,-36,-93,-82,-69,0,-111,89,22,84,100,-25,-123,93,-89,123,-75,-48,-18,61,-47,-62,-120,-115,-42,-115,-12,5,127,-54,45,83,108,-61,104,-114,-102,-51,59,114,-105,-127,93,-9,-11,-114,40,-61,27,114,-73,20,121,49,32,100,-66,-82,87,-26,-79,38,121,-45,-22,60,-92,19,46,39,-71,87,-9,60,92,-103,-108,33,118,19,124,86,-107,-120,79,37,60,97,-96,-68,40,-51,-66,88,-10,-61,119,89,75,91,86,8,-44,50,19,-30,-32,-47,-128,108,42,-14,75,116,88,-80,-57,25,-86,44,18,-31,-27,-58,77,111,-107,16,89,96,3,-59,-27,-83,-82,24,-120,-51,43,-75,-39,92,76,7,40,39,-62,98,66,110,84,-87,-122,-69,5,54,-82,106,29,-61,33,-98,45,65,-104,-47,-47,61,17,-46,-78,-120,34,-5,-50,113,-13,85,57,90,96,-123,23,-95,-66,103,89,101,-90,-61,-46,67,85,99,66,-85,-10,-93,-29,-66,-110,-45,37,109,-110,88,42,-42,-68,-70,-30,0,82,8,8,96,99,104,-58,59,13,86,-93,5,-29,-111,94,56,12,126,101,69,16,-25,115,17,35,-26,52,99,-13,-118,117,58,0,-101,127,23,0,109,80,-25,61,35,86,11,-117,4,-7,0,107,-123,-92,-41,-70,-94,-104,-3,-21,-56,-32,73,-27,100,21,112,-70,-128,127,96,-123,6,-93,8,-94,17,1,90,34,-75,-51,-52,-61,88,-13,-25,92,79,39,31,-62,-3,114,-13,-11,-43,64,105,-82,-56,29,-6,-103,-12,-109,68,76,-1,-121,51,-54,12,84,-94,58,96,20,40,73,124,-47,-19,-100,10,16,-56,74,81,52,-22,46,-88,108,-8,16,59,-60,-101,-26,-117,-127,-36,78,55,-54,112,33,-5,-64,7,48,111,122,118,85,-48,18,-43,15,109,53,-60,-99,-114,126,101,-125,88,125,38,19,-71,-111,122,-69,-21,-26,2,94,51,-111,-32,10,-87,41,114,-5,80,-46,59,111,16,46,115,-48,-5,-75,-122,123,-109,-70,116,-10,20,-44,-118,-67,17,41,16,102,-47,-31,-22,-96,-39,-1,-19,-98,30,-67,53,-53,-105,-9,24,15,-68,-53,77,-106,90,29,7,46,-30,67,-24,-101,-65,-66,-3,-118,-64,23,43,62,-27,-53,-7,45,-34,30,113,9,30,119,-12,-127,44,-114,-117,-12,-30,94,34,53,-91,-57,106,-38,37,-58,-97,90,116,-78,55,95,59,124,112,5,-99,-10,54,-3,-70,-110,108,-98,-75,110,99,88,99,-80,17,-77,26,123,-73,-26,120,77,-14,29,-61,78,97,-125,-39,19,80,105,22,114,-88,53,-54,-121,-7,92,34,10,101,-57,51,9,47,-124,-93,26,-76,38,70,50,45,-119,106,-51,-121,73,-68,59,121,40,78,92,23,-124,-73,67,43,104,-97,79,-31,15,75,-12,39,13,-99,75,-8,-62,-63,103,-68,101,-72,109,-123,-113,-93,47,-7,-51,64,-67,96,1,-81,34,-49,-66,-82,35,99,52,-95,28,27,-36,27,-93,-15,52,-68,55,-81,-104,117,67,-3,53,102,32,-5,-64,121,-31,-10,19,-123,41,-72,-97,113,45,-10,-111,-71,95,31,-89,-13,36,-111,39,86,126,10,-26,27,-91,48,-77,-45,-25,-106,126,-51,104,101,71,81,2,81,-26,-96,7,-114,-44,-94,-54,-22,110,19,-76,77,3,-127,-86,-78,110,6,-62,-96,121,-100,74,71,-3,-34,43,86,37,109,-110,123,56,118,-7,-33,-96,15,-60,75,-49,-23,-6,-34,57,60,117,-72,-82,-97,-104,88,30,-86,-55,111,-103,-121,-126,-63,-94,-103,-112,0,70,80,118,-46,-44,101,-85,28,85,52,91,-127,29,-88,-63,95,82,59,124,90,-86,-37,7,-116,75,72,-13,82,55,-125,-61,80,90,-75,41,-28,-41,-6,32,-62,35,88,91,61,-112,-104,-115,23,72,-102,-25,77,103,0,73,13,-121,6,81,-52,-70,59,63,113,-84,-85,-112,-9,113,-82,-52,98,-29,45,-25,59,-73,-78,-59,-96,-4,-32,-82,79,16,80,29,94,64,-7,67,-77,-5,-125,119,12,127,-9,104,-95,56,16,58,86,-117,18,66,26,-115,-55,48,59,126,-15,-90,-16,-126,15,120,75,-115,13,106,-76,80,-9,-15,-70,-10,50,-78,56,-51,110,85,-29,-102,20,15,-56,-73,-64,-23,-66,-12,-80,-128,-6,-121,-103,-6,-122,-97,40,46,-36,30,-2,-34,-2,32,116,-93,-59,-109,34,-79,126,-95,-120,-15,-40,-86,-64,71,-48,126,124,-2,-39,75,-64,127,57,30,-107,1,-74,-32,-105,-112,104,-115,80,-27,50,-86,-86,75,-13,-8,81,-13,-66,-38,-14,125,118,103,33,48,-71,10,35,-118,88,65,119,-36,-116,-107,-20,-43,-110,107,33,-27,15,-48,-119,46,-35,96,-75,88,-12,-7,90,-41,-6,-87,89,-88,-117,98,-29,-64,-41,-18,99,-83,13,61,-8,126,46,82,127,-81,-75,20,57,10,-36,81,54,-123,67,18,124,45,-55,95,50,-41,-38,-127,66,61,24,9,51,-55,113,-66,-80,28,49,-113,-71,24,113,-107,105,-71,37,47,-117,73,45,30,-74,117,114,26,6,-42,-80,-74,108,-81,110,73,88,124,-24,-43,-3,49,84,-55,-30,-125,36,102,62,-126,-45,-33,-50,98,-8,6,109,62,113,-84,-12,32,-40,24,-101,-87,-57,-56,59,-123,106,32,12,-71,-18,97,49,113,-47,105,-113,49,99,-124,-124,-81,-118,117,-12,-76,46,-9,-48,-41,-3,-54,-86,97,88,119,-82,-113,-52,-126,-93,-23,-121,127,-97,-28,-24,31,-62,-119,52,-93,75,7,33,-101,-67,67,-45,39,74,-83,127,-115,-66,4,-6,-18,-29,29,-23,68,-123,-103,31,24,117,49,8,-70,41,1,20,71,99,-40,-21,-116,-30,93,66,95,27,63,117,-49,20,-113,-92,-7,127,115,-85,97,-39,34,-67,-10,-53,123,-87,119,2,-77,68,-74,-66,22,96,-13,-12,96,-26,86,35,47,-128,-4,83,52,114,-2,-84,-14,67,-94,-53,-45,-74,-71,-94,94,-101,-122,3,-48,-14,124,-43,56,-3,58,-22,-97,-106,1,-32,57,-16,-127,51,23,-67,-59,-27,-60,125,-46,-125,-117,28,-74,29,29,-76,94,25,58,-32,-31,-101,-105,42,49,101,-115,-60,114,-55,-72,101,94,35,-14,-6,-115,-101,20,-36,-8,103,77,-42,82,61,104,85,35,-71,100,111,67,107,-90,-24,19,6,117,-87,-16,-67,-26,26,24,105,-64,102,105,-36,-7,60,109,112,-19,119,59,-81,10,-91,-9,69,124,-54,124,52,80,13,-105,21,-116,-114,-33,5,0,10,126,-93,22,-26,-115,115,94,22,105,-111,30,-7,102,44,63,0,85,-38,91,-30,98,-21,43,4,-63,-34,-124,-67,38,33,-2,45,-32,-86,12,-92,-38,29,39,121,-119,-42,-23,-30,-106,3,-12,-54,-108,7}\n\n#define UPDATE_GATE_BIAS {-85,78,113,70,33,38,8,114,70,-35,-67,65,31,-24,-70,-124,-89,104,124,-122,111,61,-87,75,-61,-98,83,-69,-63,45,-11,103}\n\n#define RESET_GATE_BIAS {-77,67,-93,-3,98,59,-121,33,49,50,41,91,-115,-33,71,47,-70,45,89,-115,72,106,-22,100,97,-100,-95,108,-33,3,14,30}\n\n#define HIDDEN_STATE_BIAS {-85,78,113,70,33,38,8,114,70,-35,-67,65,31,-24,-70,-124,-89,104,124,-122,111,61,-87,75,-61,-98,83,-69,-63,45,-11,103}\n\n#define INPUT_DATA1 {-367,-338,0,-89,453,-413,-343,-16,42,418,201,274,-352,477,-290,-92,266,-49,342,453,-398,247,-153,328,217,342,85,69,-38,351,73,128}\n\n#define INPUT_DATA2 {280,41,-322,61,315,350,504,-227,-221,-483,352,252,455,-236,344,364,-378,229,-187,-498,295,357,-511,58,-349,-458,-420,-66,-400,-379,477,-60}\n\n#define HISTORY_DATA {-38,53,105,-79,-463,51,-343,-226,-435,-282,218,441,-299,-215,-109,335,340,-471,-109,273,33,-245,-469,170,-26,-59,192,-119,76,-6,236,-145}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/readme.txt",
    "content": "CMSIS NN Lib example arm_nnexample_gru0 for\n  Cortex-M4 and Cortex-M7.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-cifar10/arm_nnexamples_cifar10.cpp",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2018 Arm Limited. All rights reserved.\n*\n*\n* Project:       CMSIS NN Library\n* Title:         arm_nnexamples_cifar10.cpp\n*\n* Description:   Convolutional Neural Network Example\n*\n* Target Processor: Cortex-M4/Cortex-M7\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of Arm LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup CNNExample Convolutional Neural Network Example\n *\n * \\par Description:\n * \\par\n * Demonstrates a convolutional neural network (CNN) example with the use of convolution,\n * ReLU activation, pooling and fully-connected functions.\n *\n * \\par Model definition:\n * \\par\n * The CNN used in this example is based on CIFAR-10 example from Caffe [1]. \n * The neural network consists\n * of 3 convolution layers interspersed by ReLU activation and max pooling layers, followed by a \n * fully-connected layer at the end. The input to the network is a 32x32 pixel color image, which will \n * be classified into one of the 10 output classes. \n * This example model implementation needs 32.3 KB to store weights, 40 KB for activations and \n * 3.1 KB for storing the \\c im2col data.\n *\n * \\image html CIFAR10_CNN.gif \"Neural Network model definition\"\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c conv1_wt, \\c conv2_wt, \\c conv3_wt are convolution layer weight matrices\n * \\li \\c conv1_bias, \\c conv2_bias, \\c conv3_bias are convolution layer bias arrays\n * \\li \\c ip1_wt, ip1_bias point to fully-connected layer weights and biases\n * \\li \\c input_data points to the input image data\n * \\li \\c output_data points to the classification output\n * \\li \\c col_buffer is a buffer to store the \\c im2col output\n * \\li \\c scratch_buffer is used to store the activation data (intermediate layer outputs)\n *\n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_convolve_HWC_q7_RGB()\n * - arm_convolve_HWC_q7_fast()\n * - arm_relu_q7()\n * - arm_maxpool_q7_HWC()\n * - arm_avepool_q7_HWC()\n * - arm_fully_connected_q7_opt()\n * - arm_fully_connected_q7()\n *\n * <b> Refer  </b>\n * \\link arm_nnexamples_cifar10.cpp \\endlink\n *\n * \\par [1] https://github.com/BVLC/caffe\n */\n\n#include <stdint.h>\n#include <stdio.h>\n#include \"arm_math.h\"\n#include \"arm_nnexamples_cifar10_parameter.h\"\n#include \"arm_nnexamples_cifar10_weights.h\"\n\n#include \"arm_nnfunctions.h\"\n#include \"arm_nnexamples_cifar10_inputs.h\"\n\n#ifdef _RTE_\n#include \"RTE_Components.h\"\n#ifdef RTE_Compiler_EventRecorder\n#include \"EventRecorder.h\"\n#endif\n#endif\n\n// include the input and weights\n\nstatic q7_t conv1_wt[CONV1_IM_CH * CONV1_KER_DIM * CONV1_KER_DIM * CONV1_OUT_CH] = CONV1_WT;\nstatic q7_t conv1_bias[CONV1_OUT_CH] = CONV1_BIAS;\n\nstatic q7_t conv2_wt[CONV2_IM_CH * CONV2_KER_DIM * CONV2_KER_DIM * CONV2_OUT_CH] = CONV2_WT;\nstatic q7_t conv2_bias[CONV2_OUT_CH] = CONV2_BIAS;\n\nstatic q7_t conv3_wt[CONV3_IM_CH * CONV3_KER_DIM * CONV3_KER_DIM * CONV3_OUT_CH] = CONV3_WT;\nstatic q7_t conv3_bias[CONV3_OUT_CH] = CONV3_BIAS;\n\nstatic q7_t ip1_wt[IP1_DIM * IP1_OUT] = IP1_WT;\nstatic q7_t ip1_bias[IP1_OUT] = IP1_BIAS;\n\n/* Here the image_data should be the raw uint8 type RGB image in [RGB, RGB, RGB ... RGB] format */\nuint8_t   image_data[CONV1_IM_CH * CONV1_IM_DIM * CONV1_IM_DIM] = IMG_DATA;\nq7_t      output_data[IP1_OUT];\n\n//vector buffer: max(im2col buffer,average pool buffer, fully connected buffer)\nq7_t      col_buffer[2 * 5 * 5 * 32 * 2];\n\nq7_t      scratch_buffer[32 * 32 * 10 * 4];\n\nint main()\n{\n  #ifdef RTE_Compiler_EventRecorder\n  EventRecorderInitialize (EventRecordAll, 1);  // initialize and start Event Recorder\n  #endif\n\n  printf(\"start execution\\n\");\n  /* start the execution */\n\n  q7_t     *img_buffer1 = scratch_buffer;\n  q7_t     *img_buffer2 = img_buffer1 + 32 * 32 * 32;\n\n  /* input pre-processing */\n  int mean_data[3] = INPUT_MEAN_SHIFT;\n  unsigned int scale_data[3] = INPUT_RIGHT_SHIFT;\n  for (int i=0;i<32*32*3; i+=3) {\n    img_buffer2[i] =   (q7_t)__SSAT( ((((int)image_data[i]   - mean_data[0])<<7) + (0x1<<(scale_data[0]-1)))\n                             >> scale_data[0], 8);\n    img_buffer2[i+1] = (q7_t)__SSAT( ((((int)image_data[i+1] - mean_data[1])<<7) + (0x1<<(scale_data[1]-1)))\n                             >> scale_data[1], 8);\n    img_buffer2[i+2] = (q7_t)__SSAT( ((((int)image_data[i+2] - mean_data[2])<<7) + (0x1<<(scale_data[2]-1)))\n                             >> scale_data[2], 8);\n  }\n  \n  // conv1 img_buffer2 -> img_buffer1\n  arm_convolve_HWC_q7_RGB(img_buffer2, CONV1_IM_DIM, CONV1_IM_CH, conv1_wt, CONV1_OUT_CH, CONV1_KER_DIM, CONV1_PADDING,\n                          CONV1_STRIDE, conv1_bias, CONV1_BIAS_LSHIFT, CONV1_OUT_RSHIFT, img_buffer1, CONV1_OUT_DIM,\n                          (q15_t *) col_buffer, NULL);\n\n  arm_relu_q7(img_buffer1, CONV1_OUT_DIM * CONV1_OUT_DIM * CONV1_OUT_CH);\n\n  // pool1 img_buffer1 -> img_buffer2\n  arm_maxpool_q7_HWC(img_buffer1, CONV1_OUT_DIM, CONV1_OUT_CH, POOL1_KER_DIM,\n                     POOL1_PADDING, POOL1_STRIDE, POOL1_OUT_DIM, NULL, img_buffer2);\n\n  // conv2 img_buffer2 -> img_buffer1\n  arm_convolve_HWC_q7_fast(img_buffer2, CONV2_IM_DIM, CONV2_IM_CH, conv2_wt, CONV2_OUT_CH, CONV2_KER_DIM,\n                           CONV2_PADDING, CONV2_STRIDE, conv2_bias, CONV2_BIAS_LSHIFT, CONV2_OUT_RSHIFT, img_buffer1,\n                           CONV2_OUT_DIM, (q15_t *) col_buffer, NULL);\n\n  arm_relu_q7(img_buffer1, CONV2_OUT_DIM * CONV2_OUT_DIM * CONV2_OUT_CH);\n\n  // pool2 img_buffer1 -> img_buffer2\n  arm_maxpool_q7_HWC(img_buffer1, CONV2_OUT_DIM, CONV2_OUT_CH, POOL2_KER_DIM,\n                     POOL2_PADDING, POOL2_STRIDE, POOL2_OUT_DIM, col_buffer, img_buffer2);\n\n// conv3 img_buffer2 -> img_buffer1\n  arm_convolve_HWC_q7_fast(img_buffer2, CONV3_IM_DIM, CONV3_IM_CH, conv3_wt, CONV3_OUT_CH, CONV3_KER_DIM,\n                           CONV3_PADDING, CONV3_STRIDE, conv3_bias, CONV3_BIAS_LSHIFT, CONV3_OUT_RSHIFT, img_buffer1,\n                           CONV3_OUT_DIM, (q15_t *) col_buffer, NULL);\n\n  arm_relu_q7(img_buffer1, CONV3_OUT_DIM * CONV3_OUT_DIM * CONV3_OUT_CH);\n\n  // pool3 img_buffer-> img_buffer2\n  arm_maxpool_q7_HWC(img_buffer1, CONV3_OUT_DIM, CONV3_OUT_CH, POOL3_KER_DIM,\n                     POOL3_PADDING, POOL3_STRIDE, POOL3_OUT_DIM, col_buffer, img_buffer2);\n\n  arm_fully_connected_q7_opt(img_buffer2, ip1_wt, IP1_DIM, IP1_OUT, IP1_BIAS_LSHIFT, IP1_OUT_RSHIFT, ip1_bias,\n                             output_data, (q15_t *) img_buffer1);\n\n  arm_softmax_q7(output_data, 10, output_data);\n\n  for (int i = 0; i < 10; i++)\n  {\n      printf(\"%d: %d\\n\", i, output_data[i]);\n  }\n\n  return 0;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-cifar10/arm_nnexamples_cifar10_inputs.h",
    "content": "/* Here are two different test images */\n\n//#define IMG_DATA {158,112,49,159,111,47,165,116,51,166,118,53,160,112,46,156,109,41,162,115,47,159,113,45,158,111,44,159,113,41,161,116,41,160,111,52,161,111,49,166,117,41,169,117,45,170,119,44,167,117,40,162,113,38,160,111,39,160,112,43,156,109,44,149,107,45,150,107,45,148,106,43,149,107,44,143,101,39,140,98,43,141,97,41,143,97,38,137,95,36,126,91,36,116,85,33,152,112,51,151,110,40,159,114,45,166,116,56,162,112,49,160,113,43,164,117,47,162,114,45,163,116,46,156,110,38,155,111,41,159,110,54,163,113,52,170,119,41,171,117,40,171,115,33,169,115,30,160,111,33,154,112,41,151,115,50,145,110,53,139,104,55,140,102,52,141,100,48,149,105,50,147,102,46,145,102,45,142,97,38,143,98,34,136,95,31,125,91,32,119,88,34,151,110,47,151,109,33,158,111,36,167,111,48,160,106,42,163,115,44,165,117,45,165,117,45,163,115,43,162,115,43,158,114,48,157,109,57,161,111,51,166,115,38,167,114,37,169,113,35,170,116,39,159,114,47,145,111,54,121,96,49,110,90,52,98,78,50,101,77,47,114,85,50,120,86,48,134,96,55,143,103,51,140,99,39,142,99,35,139,98,34,130,95,34,120,89,33,155,107,40,155,110,32,160,109,31,174,112,44,167,110,43,167,117,46,169,120,48,169,119,48,165,115,44,165,117,45,167,123,57,191,146,95,177,130,75,157,111,41,162,115,47,164,114,54,158,112,58,149,111,67,104,80,47,103,87,65,98,90,76,92,90,84,80,75,66,74,63,50,86,70,52,83,62,39,113,85,45,132,98,46,140,102,43,140,101,39,136,99,39,127,94,36,155,107,41,156,114,48,161,115,49,170,114,47,169,114,43,163,113,40,169,120,47,166,116,44,164,113,41,164,116,42,173,128,59,246,214,164,195,156,107,151,114,56,146,111,60,142,108,71,111,80,50,78,53,31,85,69,56,113,103,98,112,110,111,106,114,118,97,102,105,93,94,93,74,72,67,84,78,70,85,73,47,105,83,45,128,96,48,138,101,46,133,94,36,129,93,36,148,109,54,133,104,64,130,100,57,147,112,53,161,115,44,165,113,39,167,116,41,167,115,41,163,111,37,165,116,39,163,118,42,180,138,85,157,122,78,128,102,58,97,75,43,66,50,31,69,58,43,66,56,45,89,83,76,118,113,110,122,121,120,119,122,122,114,116,116,94,96,96,99,100,97,91,91,86,58,58,47,67,58,37,108,84,49,140,105,58,138,98,44,134,95,40,127,100,57,109,95,80,47,37,17,88,74,28,153,117,48,170,118,43,168,115,40,170,118,43,169,117,42,166,116,37,164,120,39,147,107,52,129,98,59,127,108,75,100,87,70,68,67,57,78,83,72,72,75,64,83,84,74,132,130,121,146,142,132,124,118,108,105,99,90,107,102,94,115,111,103,85,83,77,63,71,69,46,47,39,79,61,36,132,98,58,141,99,48,134,93,39,131,115,90,99,96,92,42,43,38,70,64,41,143,111,56,167,117,42,165,114,36,168,116,39,171,119,49,161,113,51,140,109,51,120,94,49,130,110,77,144,131,107,116,106,93,88,87,79,91,95,88,85,88,82,77,77,69,124,118,107,163,153,140,136,124,112,102,93,81,106,98,88,100,93,84,85,81,74,54,60,58,49,53,49,57,47,32,107,83,50,138,103,51,136,97,39,170,161,144,103,105,105,54,58,59,124,121,113,153,124,82,161,113,43,163,117,41,166,122,50,165,121,66,174,135,95,113,89,59,125,105,78,157,141,121,156,143,128,121,111,101,86,80,74,82,81,77,84,85,82,80,78,73,81,71,61,138,125,112,146,135,123,113,103,93,87,79,70,83,77,69,86,82,76,71,73,67,56,57,53,40,35,27,74,59,35,133,106,59,137,103,45,180,176,163,134,139,143,94,100,105,154,154,149,174,149,112,158,116,51,156,116,47,153,118,60,207,180,146,237,214,198,207,180,166,156,131,119,174,153,145,148,131,125,125,110,107,93,85,79,86,84,79,74,74,71,59,57,53,76,68,58,137,125,112,143,133,122,133,124,114,106,98,89,86,81,74,87,85,78,84,85,78,75,76,71,50,49,43,40,30,15,95,75,44,132,103,57,183,183,175,108,116,122,142,151,158,165,169,168,177,156,122,155,112,50,159,118,51,122,89,47,213,197,179,237,224,226,220,191,188,164,135,131,183,159,155,156,137,132,125,108,104,120,111,104,78,76,69,80,80,77,45,44,40,91,85,77,175,165,154,157,147,137,155,147,138,107,100,92,87,83,77,103,102,96,88,88,79,78,79,73,59,59,59,41,36,33,59,46,31,104,81,46,188,191,189,100,108,116,135,144,153,170,175,178,187,167,136,166,120,59,173,123,55,134,93,44,117,95,80,194,182,188,199,171,164,170,142,133,185,161,151,189,171,159,134,119,106,117,107,95,102,98,89,84,84,79,38,38,34,125,121,113,210,201,192,160,152,142,146,139,130,93,89,82,83,80,75,94,93,88,104,104,94,85,87,81,73,75,78,55,53,55,62,55,48,76,56,26,189,194,194,90,96,105,127,134,144,175,180,185,174,156,133,166,123,68,178,123,53,159,109,47,97,68,44,168,154,152,168,144,126,137,114,94,186,166,148,216,202,183,160,149,129,123,113,98,120,114,105,115,114,109,50,50,47,150,147,140,194,187,178,155,149,140,123,118,111,91,88,83,84,83,79,84,84,80,95,95,85,86,87,81,84,87,89,73,73,73,79,74,64,73,55,24,189,192,193,93,95,103,152,154,163,185,188,192,119,110,98,136,106,66,173,124,58,167,116,50,103,72,39,147,132,120,145,125,103,167,149,127,189,174,155,226,216,200,180,172,157,141,131,117,126,117,107,117,114,109,71,71,68,154,152,147,186,181,174,149,144,136,114,110,104,87,85,80,80,80,76,72,73,70,80,80,72,99,100,94,100,101,99,90,88,81,97,89,69,94,73,34,194,196,196,108,107,112,168,167,172,186,186,188,105,109,109,99,89,67,156,119,62,167,122,55,100,74,34,115,106,88,138,123,103,198,185,169,190,180,169,172,165,159,145,140,140,154,143,134,146,136,125,103,100,95,71,71,70,152,152,149,179,175,170,137,133,127,130,128,122,110,109,105,85,86,83,91,93,91,95,96,90,109,110,104,115,116,111,100,96,80,97,85,53,117,95,47,197,197,197,132,129,136,172,167,174,184,178,181,130,137,142,78,83,77,140,120,88,155,125,77,115,94,52,130,120,93,143,131,116,230,221,211,242,236,230,145,138,137,135,130,130,131,121,112,121,112,101,108,104,95,95,88,75,144,134,118,168,159,146,152,147,138,112,108,101,87,85,80,71,72,68,87,88,87,105,104,99,112,109,99,120,110,93,103,86,54,121,96,48,136,104,48,203,203,204,146,146,160,168,164,178,191,182,188,168,170,172,78,86,90,126,125,126,138,126,113,138,121,82,96,80,37,154,143,133,173,163,155,162,152,141,140,132,117,113,106,88,113,106,90,101,101,92,105,101,87,112,90,58,171,143,104,156,138,109,148,141,126,135,130,118,109,105,97,78,76,72,79,79,77,94,93,94,101,91,82,107,83,55,125,88,45,151,108,55,144,104,46,214,215,215,163,166,180,164,167,184,183,184,194,176,182,186,94,102,105,96,96,102,156,149,145,148,137,111,106,93,61,129,116,105,118,105,95,114,102,89,116,105,89,102,91,73,115,110,98,86,91,88,101,103,95,144,128,102,118,96,64,68,56,32,128,120,105,133,126,115,75,69,61,60,56,51,58,56,53,71,70,65,102,93,78,116,94,64,143,112,68,150,116,64,140,110,54,212,211,205,178,184,192,167,175,189,173,181,193,176,184,188,124,131,133,86,88,96,141,139,143,153,148,141,135,128,111,104,90,80,77,64,55,134,121,108,124,111,96,129,117,100,147,143,133,85,92,93,92,96,93,150,139,120,132,117,93,117,109,92,107,99,86,75,68,58,64,59,52,44,41,39,65,62,60,86,69,40,133,105,59,155,119,62,160,120,54,154,115,45,151,111,46,199,192,180,187,189,187,171,176,181,174,179,185,177,182,184,144,149,152,86,90,99,119,121,132,122,124,130,137,136,135,144,134,126,70,59,51,129,118,108,108,97,86,145,134,123,184,176,168,116,118,118,73,75,73,131,119,103,137,124,105,134,129,118,89,86,78,51,49,44,52,51,50,47,49,52,90,90,93,121,91,60,163,118,68,171,121,64,164,113,52,158,111,50,149,107,46,165,156,146,195,193,187,179,178,175,177,173,172,181,181,180,152,157,160,99,103,111,131,135,146,171,175,185,103,105,111,93,90,87,80,77,73,93,90,86,122,118,116,178,173,173,191,182,177,150,148,148,100,100,101,89,78,66,87,77,63,60,61,57,46,52,54,38,46,51,24,33,41,46,57,69,60,71,83,108,100,75,144,125,82,144,123,76,128,109,61,127,113,69,120,105,63,117,120,124,195,200,200,177,178,176,178,169,168,181,179,179,138,144,147,83,87,91,150,153,159,245,247,250,219,222,225,133,140,144,134,141,147,149,156,164,176,182,192,190,196,208,194,192,197,168,172,181,125,133,143,110,109,109,61,62,62,35,49,58,34,54,68,49,70,87,58,81,102,61,85,110,58,84,111,69,99,122,72,101,119,78,104,120,69,96,112,59,92,112,55,90,115,79,105,133,175,197,213,174,183,192,176,172,177,177,177,182,140,146,150,109,112,113,211,211,209,253,252,247,252,253,252,208,224,232,124,143,157,114,132,149,124,141,162,116,133,156,122,133,152,104,124,148,68,93,119,68,87,104,60,82,101,52,84,111,50,84,110,51,85,115,56,93,125,56,94,131,51,91,130,43,96,135,51,104,141,59,108,142,48,97,132,43,97,137,42,95,132,41,89,135,96,137,168,144,168,188,168,174,188,178,182,192,165,170,174,165,166,164,246,245,237,253,251,241,227,231,228,110,136,153,60,88,111,53,80,105,49,76,105,49,75,107,48,72,101,45,79,115,42,81,120,46,81,113,42,82,116,38,86,125,46,90,125,46,89,126,43,87,128,42,89,132,46,93,139,46,94,137,50,96,137,55,96,135,53,94,134,51,95,139,45,90,133,29,91,141,29,87,130,59,102,134,131,153,176,166,179,191,132,136,137,194,189,181,254,250,242,241,245,245,141,159,175,61,94,127,50,84,118,50,84,119,51,85,121,49,83,120,50,84,116,47,86,117,42,84,117,39,82,115,34,79,113,35,83,120,39,86,125,38,85,125,42,89,130,45,92,134,56,103,145,62,103,142,59,101,142,56,102,146,50,99,144,46,94,140,51,103,149,48,111,162,30,94,140,34,85,124,73,106,136,128,148,167,128,136,143,215,213,209,255,253,249,187,198,205,66,93,118,54,91,128,50,88,125,52,90,127,52,90,127,46,83,121,45,82,115,43,82,113,41,81,112,36,80,113,39,83,117,40,86,123,40,89,131,43,92,134,46,95,138,59,108,150,62,110,152,64,109,147,59,108,149,54,108,154,50,105,152,70,123,167,83,137,182,52,114,165,35,99,147,31,86,130,41,83,122,66,95,126,128,145,164,224,229,234,240,245,247,124,143,153,58,92,114,49,87,123,56,94,131,54,92,129,44,82,119,44,82,119,47,83,119,46,84,119,43,83,119,43,86,123,44,88,127,44,90,131,45,97,141,54,106,150,58,110,154,54,105,150,46,97,141,43,95,140,36,91,138,51,108,158,73,130,178,85,138,182,76,125,169,50,110,162,35,98,149,29,89,138,35,86,133,44,83,126,78,106,138,202,219,233,211,228,234,97,126,140,65,104,126,54,94,129,48,87,124,58,97,133,48,87,123,40,80,116,45,82,119,47,84,122,48,87,126,47,89,130,46,89,132,51,97,140,39,92,138,39,93,139,48,102,148,47,101,147,39,93,139,28,85,133,40,101,153,67,129,182,67,126,176,46,98,142,51,96,139,50,108,161,35,97,147,32,92,143,33,88,141,41,88,138,46,84,125,104,133,159,170,197,211,64,100,119,54,97,121,52,94,128,53,95,130,61,103,139,58,100,135,54,96,131,45,83,120,42,79,118,41,80,120,46,88,130,49,92,135,46,92,136,42,95,139,40,93,138,39,92,136,37,90,135,40,93,138,44,102,151,63,125,178,47,110,164,31,90,140,15,60,103,51,93,136,68,124,177,42,100,148,31,88,137,38,91,146,37,87,139,43,89,132,42,79,113,71,107,133,49,89,114,31,77,105,27,71,105,38,82,117,49,93,128,56,100,135,58,102,137,53,92,128,56,94,131,60,99,137,57,99,139,53,97,138,50,95,137,45,94,136,39,88,131,33,83,125,42,91,133,62,112,154,79,132,179,73,131,181,56,116,168,38,97,146,13,64,108,40,85,127,61,116,168,49,102,148,35,85,132,43,91,143,39,90,139,42,92,134,44,88,125,40,81,112,42,85,115,27,72,104,23,67,102,30,74,109,27,71,106,29,73,108,36,80,115,47,86,120,56,95,128,62,101,135,66,109,144,75,119,156,69,113,152,49,95,134,43,88,127,43,88,127,60,105,144,85,130,170,109,156,197,93,145,190,60,115,164,26,82,130,29,82,126,20,64,107,54,107,160,56,105,149,45,89,132,43,86,134,40,89,134,40,92,132,40,87,123,38,81,115,36,79,114,26,69,105,22,66,101,29,73,108,25,69,104,29,73,108,19,63,98,18,58,89,32,70,100,47,87,118,61,104,137,74,119,152,66,111,145,53,96,131,52,95,130,45,87,123,67,109,145,89,131,167,105,146,182,89,135,175,48,99,145,24,77,124,34,84,129,21,67,110}\n\n\n#define IMG_DATA {235,235,235,231,231,231,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,232,233,233,231,233,232,231,233,231,233,233,230,233,232,232,232,234,232,231,234,232,232,232,233,233,230,232,233,231,233,233,233,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233,232,232,232,238,238,238,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,237,234,233,236,234,233,236,236,234,234,236,234,234,235,237,234,234,238,235,236,237,236,236,235,236,236,234,236,236,236,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,235,235,235,237,237,237,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,234,234,236,233,231,236,234,231,235,235,234,234,235,236,227,230,233,231,235,238,231,233,235,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,235,234,234,234,238,238,238,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,234,233,233,230,232,232,231,228,230,232,223,226,231,186,192,197,209,216,219,207,210,213,228,228,230,236,235,235,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,235,235,235,235,237,237,237,234,234,234,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,234,234,234,234,234,234,235,235,235,235,235,235,234,234,234,234,234,234,235,235,235,235,235,235,236,238,236,233,237,237,219,225,230,203,210,219,163,172,179,195,205,208,214,218,221,230,229,232,237,235,237,235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236,236,239,239,238,236,235,235,236,235,235,236,235,235,236,235,235,236,235,235,235,236,235,235,235,235,234,234,234,235,235,235,237,236,236,237,236,236,234,235,236,232,233,234,235,237,237,229,231,232,208,216,218,194,205,210,185,198,207,174,188,200,165,179,189,184,196,202,207,215,220,226,228,232,236,235,237,236,236,235,236,236,235,236,236,235,236,236,236,237,237,237,237,237,237,237,237,237,228,229,229,228,227,228,232,230,231,231,228,230,234,232,233,237,236,236,237,237,235,236,237,235,237,235,236,237,235,236,239,236,237,239,237,238,225,229,230,224,228,229,233,237,238,221,226,228,183,197,204,161,180,190,159,180,191,154,176,190,144,163,177,143,159,171,156,169,177,198,206,211,233,238,239,236,237,234,235,236,233,235,235,235,235,236,236,236,238,237,237,237,237,239,237,238,212,220,222,224,230,233,230,234,238,227,232,234,229,234,234,234,237,236,237,238,235,238,237,236,239,237,238,239,237,238,239,236,237,240,238,239,201,204,203,219,222,221,233,236,235,214,218,218,193,204,210,185,201,210,184,201,211,173,191,203,165,182,196,159,174,187,162,176,185,186,199,204,229,239,240,234,239,238,233,238,237,233,238,238,234,239,238,236,239,238,237,239,238,238,238,238,216,234,241,221,236,243,225,238,246,225,239,243,227,240,240,231,238,237,236,237,235,238,236,235,238,236,237,238,236,237,237,237,237,239,239,239,197,198,196,220,221,218,233,234,231,230,231,229,209,213,217,209,216,222,219,228,235,208,218,227,209,221,234,210,224,235,217,233,240,218,235,241,225,240,243,228,238,240,228,239,240,230,240,240,230,240,239,235,240,239,237,240,239,238,238,238,118,140,149,119,138,148,124,142,153,136,155,161,172,188,191,225,234,233,235,236,233,237,234,232,236,233,234,235,235,235,235,237,236,233,237,235,214,216,214,226,228,226,232,234,232,236,237,236,228,230,232,227,230,235,231,236,241,225,232,239,225,237,247,217,233,243,201,219,226,185,204,211,172,189,195,167,179,186,167,180,185,186,199,201,223,235,235,235,241,239,236,240,239,238,240,239,109,130,141,103,121,133,108,125,137,111,127,137,146,159,165,222,229,231,227,228,225,229,226,224,236,232,233,234,234,234,231,236,234,230,237,235,229,234,235,231,235,236,232,237,238,230,235,236,231,236,238,231,237,240,229,237,241,223,232,238,191,206,213,164,184,191,146,165,172,137,156,163,134,149,159,128,140,153,121,133,143,149,162,166,216,228,229,234,241,239,235,240,238,237,240,239,195,212,224,188,202,215,199,211,224,200,211,223,209,217,227,223,227,231,213,213,211,211,209,206,216,213,214,220,222,222,219,226,225,210,221,219,209,219,223,211,221,225,216,225,230,220,229,233,225,234,237,226,236,239,225,237,241,218,231,237,183,204,208,175,198,203,181,200,207,178,194,202,186,197,211,170,178,196,142,151,164,185,195,202,219,230,233,231,240,238,234,241,239,236,240,239,193,207,222,191,202,217,202,211,224,214,217,234,223,225,241,214,219,227,203,208,208,171,174,174,177,180,183,207,213,214,174,184,188,98,112,121,93,114,126,101,121,132,111,129,139,122,138,147,137,152,161,153,167,174,202,216,220,223,236,237,218,232,235,220,233,238,223,234,240,217,226,233,221,228,237,212,219,229,196,203,212,222,230,237,219,227,234,221,230,233,232,239,242,235,241,242,113,130,152,111,125,147,113,125,141,125,131,151,138,145,165,170,182,193,191,201,205,190,199,204,208,219,226,216,230,234,158,172,183,54,71,92,45,70,91,49,73,91,53,73,90,66,84,98,102,114,129,159,168,179,221,227,233,234,239,241,233,237,241,227,231,237,223,228,233,207,211,217,202,208,212,211,218,220,212,219,223,199,206,214,179,186,196,188,197,205,211,221,227,221,231,234,61,81,108,69,86,114,63,79,100,68,85,102,123,141,155,139,155,164,151,157,164,195,200,207,214,228,234,206,223,228,163,180,190,103,121,138,95,112,131,101,117,135,138,151,168,181,192,207,207,212,223,221,222,232,219,219,227,205,203,212,183,186,195,158,166,174,147,154,163,131,138,147,125,133,140,130,139,144,136,146,152,133,142,151,128,137,147,138,153,160,182,197,203,197,212,216,40,53,77,58,70,94,85,98,116,127,144,153,132,151,156,96,107,110,119,115,118,163,158,161,173,180,182,184,194,197,182,194,198,181,193,200,183,194,202,198,209,217,218,228,236,200,210,217,174,181,186,159,165,172,145,150,159,132,136,149,116,125,138,98,111,123,94,106,118,99,111,123,105,118,128,107,121,130,122,135,145,138,151,161,150,164,174,157,174,184,188,206,213,185,203,208,13,15,35,26,29,47,134,140,151,206,216,220,138,150,150,118,123,123,141,133,134,172,162,162,181,181,180,207,209,211,220,224,225,228,234,233,224,234,232,230,241,240,226,238,238,176,189,190,144,159,163,138,154,162,142,158,170,145,163,177,154,171,187,149,165,182,149,165,182,154,171,187,157,174,189,160,177,191,173,190,204,187,204,217,190,207,218,178,196,208,165,183,193,157,175,183,5,5,24,58,62,79,200,207,217,225,232,239,197,205,212,199,207,211,212,212,218,226,224,229,229,230,237,233,236,246,232,238,245,230,238,239,209,221,220,223,238,239,221,238,241,210,228,234,198,217,228,180,200,214,193,216,230,188,213,229,189,212,231,194,214,234,192,212,232,184,204,224,172,193,212,171,191,209,161,181,197,144,165,179,136,156,169,131,146,161,128,143,158,138,154,165,39,45,71,145,155,179,190,204,222,186,196,216,184,197,217,192,211,229,194,211,230,194,208,227,194,206,227,191,203,228,192,207,228,190,207,221,177,193,207,180,198,215,154,176,193,147,169,188,145,161,184,156,171,195,146,163,186,113,133,156,114,137,161,132,157,180,126,150,173,111,135,158,92,115,138,91,112,135,93,114,133,94,116,131,105,125,140,121,133,151,129,141,158,129,142,156,122,135,161,162,179,207,143,160,194,137,154,189,131,152,187,128,152,190,127,150,192,130,150,193,131,150,192,128,147,190,127,147,189,129,149,189,129,149,188,124,145,186,104,126,163,100,122,154,102,120,154,118,134,170,112,128,163,94,109,145,94,112,148,94,117,153,87,112,144,83,103,136,80,97,130,83,103,134,93,111,139,101,117,141,108,121,144,115,125,146,121,133,148,130,144,156,73,87,109,76,90,113,77,90,122,80,93,127,84,98,134,87,102,142,87,102,147,90,105,150,94,111,152,102,119,160,107,124,165,113,131,172,115,137,181,118,136,186,118,132,180,120,133,175,115,136,172,110,133,168,106,127,163,100,119,155,95,109,148,85,101,139,79,97,132,80,92,127,80,94,129,77,100,133,80,100,129,82,98,122,92,104,126,113,119,138,125,135,146,136,149,156,13,25,41,3,11,25,9,16,35,18,26,48,18,26,52,21,25,56,20,25,58,22,30,61,26,36,62,34,43,70,42,51,77,48,59,87,52,69,106,60,75,121,66,77,126,70,79,126,71,87,127,72,88,126,67,81,120,60,72,112,55,67,106,53,68,104,53,69,103,57,69,102,57,71,105,57,78,110,72,89,115,87,100,119,104,113,128,120,124,136,130,136,141,137,146,149,36,46,55,11,16,20,8,13,19,32,44,53,36,45,58,22,25,41,8,11,30,3,8,24,1,4,17,0,2,15,0,2,15,0,4,20,6,13,42,5,18,56,1,19,60,3,23,62,13,29,71,24,38,81,21,33,77,21,31,76,21,38,78,22,44,79,30,50,83,39,58,90,57,70,101,85,90,118,113,115,138,123,123,138,116,115,125,122,123,128,134,139,137,153,160,158,35,41,45,26,27,26,13,19,18,27,41,41,71,81,84,70,70,76,49,50,57,27,31,37,15,15,21,5,5,11,2,2,7,0,0,7,17,17,35,57,64,91,31,50,78,10,36,62,4,30,60,4,30,62,7,30,63,14,35,69,25,43,74,41,55,83,62,71,99,86,97,123,122,124,146,144,131,149,132,120,135,114,105,114,117,111,116,132,134,133,146,152,146,172,179,175,16,15,17,13,10,9,4,10,8,3,12,11,45,44,46,65,52,57,54,43,47,36,33,35,18,18,20,4,4,7,2,2,4,0,1,3,7,8,15,118,117,134,161,158,179,131,128,148,112,112,131,105,105,125,105,103,124,109,105,127,118,107,126,138,115,133,154,126,144,151,126,141,127,106,116,105,86,91,106,94,97,120,116,116,129,130,129,142,147,144,164,172,165,184,194,190,40,40,35,12,10,7,0,3,3,0,4,4,12,6,7,30,12,17,32,12,17,21,10,12,7,6,7,2,1,3,2,1,2,3,2,3,0,0,2,68,58,64,182,128,146,205,130,148,196,127,144,194,123,141,195,119,137,187,113,129,172,110,122,150,96,106,123,75,83,103,66,69,95,71,70,104,93,88,122,118,113,129,132,126,132,141,135,152,162,158,171,182,176,185,197,194,69,77,64,26,29,21,1,1,1,1,1,2,4,1,0,12,2,5,18,3,9,12,2,5,4,1,2,2,0,0,2,0,0,4,0,1,1,1,1,32,12,11,153,45,59,203,47,68,195,46,67,191,48,69,179,50,67,155,49,59,119,42,49,91,38,42,81,48,46,94,77,71,117,110,102,125,126,116,125,128,120,129,135,128,144,153,147,162,176,171,173,187,183,184,198,196,83,94,82,47,52,43,1,1,1,2,1,2,2,0,0,5,1,2,7,1,5,4,0,2,1,0,0,1,0,0,1,0,0,3,0,0,1,2,0,27,3,2,142,25,38,205,32,54,198,25,46,169,25,43,121,25,36,85,29,34,74,41,39,85,66,56,102,92,82,121,113,105,128,124,115,122,126,115,121,127,118,132,139,131,147,157,150,165,179,174,176,191,187,186,201,199,92,102,93,54,60,50,6,7,3,3,2,1,2,2,0,1,3,1,1,3,3,1,2,2,1,1,1,1,0,0,1,0,0,1,1,1,0,3,2,15,1,0,102,19,28,157,31,47,117,17,23,74,13,12,56,27,22,74,58,55,99,90,81,115,115,99,122,126,111,124,124,112,123,123,113,125,130,119,128,135,126,136,145,137,148,159,151,162,176,171,177,192,188,188,202,201,87,99,89,43,51,37,19,23,11,11,12,4,8,10,2,5,11,4,2,10,4,2,7,2,3,4,1,3,4,1,3,4,1,2,3,2,0,6,6,4,5,2,42,13,13,71,21,24,53,27,25,57,50,41,80,77,62,113,98,82,132,113,101,134,126,113,123,126,112,116,125,111,120,128,115,131,138,126,139,148,137,143,154,145,156,168,161,169,184,179,182,197,193,188,202,201,82,96,82,46,57,36,36,44,22,31,35,17,27,30,15,22,28,15,17,26,13,16,23,12,18,21,12,19,21,13,20,22,14,19,23,15,19,27,20,23,31,21,37,40,27,64,55,45,87,70,67,104,88,81,116,102,85,128,112,88,139,121,105,131,122,110,117,122,107,115,127,112,123,133,119,131,139,127,139,149,138,148,160,151,159,172,164,174,189,183,185,200,196,187,202,200,85,101,83,62,75,48,58,67,38,55,61,37,51,56,35,47,53,33,46,53,34,48,55,38,49,55,40,51,56,41,53,58,44,55,62,46,59,67,45,68,71,48,81,84,59,104,96,74,116,103,83,127,109,92,133,116,97,127,121,97,127,127,107,118,124,106,114,125,108,122,131,117,129,136,123,136,145,133,141,152,141,149,162,153,158,171,163,168,183,178,180,195,191,186,200,199}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-cifar10/arm_nnexamples_cifar10_parameter.h",
    "content": "#define CONV1_IM_DIM 32\n#define CONV1_IM_CH 3\n#define CONV1_KER_DIM 5\n#define CONV1_PADDING 2\n#define CONV1_STRIDE 1\n#define CONV1_OUT_CH 32\n#define CONV1_OUT_DIM 32\n\n#define POOL1_KER_DIM 3\n#define POOL1_STRIDE 2\n#define POOL1_PADDING 0\n#define POOL1_OUT_DIM 16\n\n#define CONV2_IM_DIM 16\n#define CONV2_IM_CH 32\n#define CONV2_KER_DIM 5\n#define CONV2_PADDING 2\n#define CONV2_STRIDE 1\n#define CONV2_OUT_CH 16\n#define CONV2_OUT_DIM 16\n\n#define POOL2_KER_DIM 3\n#define POOL2_STRIDE 2\n#define POOL2_PADDING 0\n#define POOL2_OUT_DIM 8\n\n#define CONV3_IM_DIM 8\n#define CONV3_IM_CH 16\n#define CONV3_KER_DIM 5\n#define CONV3_PADDING 2\n#define CONV3_STRIDE 1\n#define CONV3_OUT_CH 32\n#define CONV3_OUT_DIM 8\n\n#define POOL3_KER_DIM 3\n#define POOL3_STRIDE 2\n#define POOL3_PADDING 0\n#define POOL3_OUT_DIM 4\n\n#define IP1_DIM 4*4*32\n#define IP1_IM_DIM 4\n#define IP1_IM_CH 32\n#define IP1_OUT 10\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-cifar10/arm_nnexamples_cifar10_weights.h",
    "content": "#define CONV1_WT {-9,-1,2,6,-4,6,4,-11,8,-9,-11,10,-12,5,15,11,-1,-1,33,-25,-18,47,-35,-23,25,-27,-5,0,-4,9,2,-5,0,34,-25,-21,55,-40,-33,34,-32,-16,5,-7,2,-21,16,14,-4,5,3,14,-10,-7,3,-10,-2,-8,5,8,-29,23,12,-25,15,8,-15,4,7,-16,5,8,-13,17,12,2,-4,-1,-1,-10,9,6,-4,21,11,0,12,-10,-9,-4,13,10,12,19,11,27,0,-5,11,-21,-26,-28,-7,3,-15,16,14,26,-22,-25,-8,-29,-24,-23,0,6,-13,13,25,0,-21,-18,-3,-21,-19,-13,11,14,4,13,18,-4,6,16,-1,-10,-14,-7,12,9,5,13,8,-4,9,10,-9,-4,7,-3,7,7,-12,7,3,0,-1,-7,2,-8,-5,9,-3,6,-4,7,-10,-25,7,-7,-7,10,2,14,-4,2,17,-9,5,-3,7,-10,-25,4,-10,-8,0,0,16,-7,11,25,-14,13,4,7,-12,-23,5,-16,-17,8,0,11,2,13,21,-11,9,-3,2,-9,-9,-3,-14,-11,1,-1,6,-6,6,14,-1,16,11,7,3,-14,21,6,-6,17,13,4,1,7,-3,-6,2,2,27,13,-5,18,0,-7,-6,-4,2,-24,-11,0,-18,-8,6,24,8,-14,11,-6,-8,-8,0,12,-22,-2,13,-15,-3,7,29,6,-16,10,-6,-4,-12,-7,11,-26,-14,3,-10,-8,0,16,5,-8,-5,-5,3,-15,-2,23,-17,-5,17,1,1,12,10,3,-5,-7,-18,-7,-3,-4,2,3,6,4,4,2,-7,17,20,12,-23,-27,-15,-3,3,6,5,15,6,-2,2,-5,22,22,11,-26,-30,-19,-6,-5,3,10,12,6,2,1,-3,20,14,4,-15,-26,-18,0,-9,1,14,8,6,1,-7,-9,8,11,6,-10,-13,-11,-4,-4,8,2,5,17,-9,0,11,-9,-11,21,6,13,39,-7,1,30,2,12,36,-11,-1,28,-2,-25,-6,6,-16,-6,-9,-34,-24,3,-17,-15,2,-20,-11,0,-13,-11,25,13,6,0,-15,-20,16,7,-11,7,-3,-10,-5,-2,-6,14,22,12,-16,-5,-12,7,23,7,-10,5,-2,-10,-1,-9,7,21,8,-19,-2,-13,2,21,3,-15,9,-2,-4,-2,-2,-12,2,13,-19,1,6,0,16,-1,5,8,-28,11,-2,-4,-10,-1,21,-30,-4,22,-8,14,9,11,14,-21,20,-9,-23,0,-4,19,-28,-9,31,-30,-1,12,3,14,-11,30,3,-24,3,-8,6,-22,-9,31,-29,2,26,-5,11,8,24,2,-36,24,3,-9,-6,-17,4,-8,-8,12,1,-1,5,3,-12,15,-6,-2,-1,0,15,-11,-18,6,-18,-10,6,3,6,-3,3,-12,13,-14,-1,43,-23,-3,52,-16,-11,28,-8,4,-6,5,-11,16,-6,-20,32,-28,-24,38,-31,-22,20,-16,5,-13,7,-2,5,3,-6,17,-10,-8,22,-13,-5,13,0,11,-16,14,-3,-14,6,3,-4,4,4,-2,2,-3,-9,5,2,1,-2,-10,-6,-3,-17,-2,1,-19,2,1,-14,8,11,14,3,7,1,-13,-13,2,-1,-3,-9,0,-5,-18,4,0,18,3,9,15,-10,-8,10,-12,-18,5,-3,-16,-10,0,-14,5,4,14,14,-1,10,16,-6,-2,14,-1,-12,8,2,-18,-13,-1,17,-2,2,24,-4,-3,17,8,-1,12,9,-6,-3,-2,-9,3,-2,-13,-1,-5,-17,-5,-7,-16,-7,-8,-14,-9,3,-9,-1,0,-13,-7,4,-9,-7,3,-6,-8,-2,-4,-7,5,-7,-4,1,-8,-11,10,6,-3,14,12,-1,6,10,-2,0,-12,-16,-3,-9,-19,0,1,-12,9,12,-2,1,10,-1,10,4,-8,6,3,-11,11,14,1,12,19,8,3,16,9,-7,-1,4,-11,-1,3,1,12,8,7,15,13,-5,-2,4,-7,-5,1,-8,-3,2,1,10,9,-1,8,9,-11,-9,-2,0,-1,6,-14,-13,-6,1,3,10,3,4,11,-1,-5,5,7,4,10,-14,-17,-10,-12,-13,-6,-11,-14,-6,1,-6,1,2,-1,1,-5,-7,-3,-2,-4,1,-11,-13,-9,-12,-16,-12,-2,-1,-2,-9,-5,-4,-7,-3,3,-1,-3,8,9,-2,1,8,11,13,5,14,17,1,10,17,-1,3,18,0,-6,0,-1,0,3,4,13,16,-1,8,14,-4,2,14,-16,-20,-14,-3,-3,0,13,21,25,5,11,14,-5,-2,9,1,-5,2,-6,-9,-14,-7,-4,-8,-10,-9,-13,-10,-12,-12,7,-1,-2,-5,2,-14,-5,3,-6,1,9,3,-8,3,-1,-9,2,0,-12,-4,-21,6,17,8,17,28,22,-5,6,2,-15,-8,-7,8,21,-3,2,20,-5,-1,16,-8,7,17,3,0,6,1,11,26,0,-22,-4,-33,-36,-16,-40,-2,14,1,2,10,5,1,17,-10,-16,3,-22,-22,-1,-14,-9,10,6,-7,7,7,10,-8,5,-3,-4,-1,-7,-7,-7,1,0,-2,-7,11,9,5,-2,2,12,14,16,12,7,2,0,-9,-23,-14,-8,-23,-1,-11,-14,-7,-9,-7,14,11,7,44,35,19,34,38,12,1,3,9,-6,-4,8,-32,-28,-19,-41,-45,-37,-14,-17,-17,-7,4,-3,-5,8,8,3,16,21,8,14,24,-3,-5,6,-11,-15,-18,-8,-12,-12,-6,-14,-8,9,-6,1,16,3,11,3,3,-8,-5,0,-6,-13,-13,-13,-6,-15,-15,6,-5,-4,9,16,5,1,14,5,-4,7,-1,-12,-11,-18,0,-6,-12,5,14,0,-1,13,2,2,18,6,-9,-4,-16,0,-3,-17,4,12,0,-1,13,2,0,16,6,-6,1,-9,-5,-8,-19,18,-1,-4,16,-2,-6,18,-1,-4,9,-4,1,-12,-13,-4,9,-3,-9,6,-4,-14,15,5,-2,-5,-5,-1,-20,-9,-3,16,2,-5,12,3,-7,15,7,1,-12,-7,-2,-15,-2,2,18,7,-1,10,2,-5,-1,-8,-8,-18,-15,-7,-2,7,9,-15,-15,-17,-7,-6,-7,-12,-12,-6,-17,-12,-6,9,14,12,13,7,6,3,-3,2,-6,-7,1,-7,-4,3,-11,-12,-6,12,11,6,-4,-3,-2,-15,-12,-4,-7,-4,3,-9,-9,-4,15,17,12,-3,1,2,-18,-13,-6,4,5,10,6,1,5,9,14,8,-6,1,3,-21,-15,-7,-2,-1,5,4,-1,2,4,17,14,-4,4,9,-24,-20,-11,-7,-7,3,-2,-6,1,5,9,-10,6,9,-12,12,11,-7,4,1,-15,11,9,-6,25,15,5,21,13,5,23,14,7,13,2,-3,17,10,6,-1,-10,-2,-20,-21,-14,-11,-11,-2,-11,-12,-3,-16,-15,-3,-4,-14,6,-16,-19,-1,-3,-2,13,-1,-3,12,-6,-10,8,0,-5,10,-11,-10,4,-4,-1,8,-11,-5,3,-6,-1,8,-8,-15,0,-3,0,9,4,11,14,-3,3,4,-15,-9,-6,-12,-14,-1,-18,-8,-1,-26,-12,-8,-28,-12,-9,-30,-13,-8,10,-1,-6,15,17,5,11,22,8,15,24,8,17,25,12,10,-5,-9,4,4,-5,1,10,1,2,4,-8,6,7,-7,5,-10,-6,-1,-5,-3,3,8,10,1,4,-2,-1,0,-8,2,-8,3,0,-6,9,1,-2,-8,6,1,-3,1,-10,6,5,-6,7,-8,-12,0,11,17,-4,-7,-1,-12,1,-2,9,11,2,17,-35,-32,-21,38,52,20,-27,-17,-30,4,2,17,18,10,19,-44,-34,-34,43,59,28,-25,-17,-31,6,0,16,10,4,18,-31,-27,-22,27,31,16,-10,-9,-16,3,-6,6,-2,-11,15,10,0,14,-2,-8,-8,0,-7,-7,13,0,11,2,-7,3,10,4,3,0,-2,-14,-1,-1,-16,-1,3,-6,8,-4,3,12,4,2,4,1,-17,7,10,-8,0,10,-2,-3,-15,0,10,4,8,-10,-13,-24,-7,-2,-16,0,8,-3,-6,-6,7,7,11,13,2,9,-6,-4,11,-15,2,22,0,2,-4,-2,-10,-12,-5,24,15,25,-1,-4,-2,-11,-1,-3,7,11,5,-16,-17,-23,-29,-35,-30,53,45,54,-11,-9,-12,-3,5,4,44,39,36,-45,-51,-51,-19,-28,-16,25,24,28,-15,0,-12,7,1,2,44,42,40,-36,-41,-41,5,0,3,-1,18,5,-17,-15,-15,7,8,14,11,3,4,1,-11,-8,10,-1,-2,-5,-10,-3,6,6,10,5,9,9,-6,3,0,-14,-21,-16,-40,-39,-26,0,4,16,15,20,24,-14,-7,-5,3,-5,1,-13,-12,0,-16,-11,6,4,7,20,-11,-9,-1,11,-4,7,14,7,22,-14,-14,5,-7,-6,12,-4,-9,4,18,-6,5,14,-4,12,-2,-11,6,3,-5,11,4,-10,1,2,-1,-14,4,-6,-23,26,11,-15,12,-7,-33,6,-10,-15,13,6,-20,14,0,-25,2,-14,-34,1,-4,-11,3,9,23,1,6,-5,-6,-2,-8,-7,6,17,-5,18,42,-19,10,42,-3,-1,-2,-2,1,8,4,11,29,-18,-12,7,-16,-7,2,1,-1,9,-9,-9,15,-7,-5,18,-1,-4,6,1,2,-6,-10,7,-2,1,4,-2,-2,-4,6,5,-7,4,3,-7,-2,-11,17,0,-15,-18,-24,40,25,30,-9,-20,-18,1,4,1,-32,-12,-22,54,43,41,0,-19,-9,-29,-29,-25,5,16,20,20,6,8,29,5,16,-60,-74,-65,37,39,43,-5,-2,-2,21,-7,9,-21,-38,-19,6,22,14,2,25,17,-22,4,-11,3,6,-15,-5,2,-13,-2,12,-8,0,13,5,-4,1,5,-8,19,4,-5,28,29,-18,18,19,-20,1,-2,-9,-2,-10,-30,1,8,-57,-26,-3,-47,-28,-10,4,1,3,15,4,-1,-4,-8,4,12,-3,10,48,16,25,38,1,-1,15,-7,-4,23,-2,2,31,-7,-15,23,-17,-19,6,-20,-21,-2,-1,4,4,-4,3,9,0,8,10,-6,-3,17,-2,-11,14,-2,-20,-12,-8,18,-15,-9,20,-4,-1,23,7,6,20,-2,-3,-5,-12,-3,26,-27,-15,17,-22,-10,19,-10,-3,16,-10,-3,0,-7,-1,19,-16,-6,16,-12,-5,16,-7,-5,6,-6,-4,-9,-5,-4,8,-6,-2,9,1,-1,4,7,0,-6,9,5,-13,12,6,4,8,15,10,-22,-12,-15,-34,-20,-19,-14,-2,-3,9,0,7,13,18,21,3,21,22,-31,-11,-6,-24,-5,0,8,-10,-1,-12,-20,-13,8,13,13,16,28,24,5,21,22,3,-11,-5,1,-15,-11,18,6,0,3,1,-8,-1,2,6,-1,-5,-8,8,-5,-8,22,7,-6,6,-4,-13,-4,-12,-6,-12,-9,-10,-9,-9,-11,-6,-6,-9,-6,-7,-10,-6,-9,-10,-11,-8,-8,-9,-7,-7,-5,-3,-4,-5,-4,-4,-6,-5,-3,1,4,4,-1,3,3,1,4,4,-2,1,2,-2,1,5,-3,3,6,-5,1,4,-5,1,3,-4,0,3,-3,2,6,-9,-2,2,-6,1,3,-5,1,1,-5,0,2,-5,1,4,0,-4,-1,20,6,2,20,-2,-17,7,-1,-15,-10,4,-3,-12,-1,16,-1,-4,6,23,1,-7,22,0,-13,10,2,-2,-32,-10,14,-25,-13,11,16,3,6,25,0,-13,19,-1,-10,-27,-2,11,-41,-18,8,-1,0,11,17,-3,-12,26,0,-13,-6,10,10,-22,-1,16,-16,0,17,-3,-3,7,3,-11,-8,-19,14,-3,-12,13,2,-5,1,9,4,-1,-4,10,0,2,-20,18,2,-15,11,14,0,-6,11,20,-11,-17,17,-12,-13,-27,23,10,-18,15,25,4,-14,5,30,-16,-29,26,-13,-21,-33,21,14,-20,13,32,4,-19,2,32,-19,-29,22,-11,-18,-24,19,8,-11,12,22,5,-16,-3,25,-11,-16,7,-7,-11,-6,-3,-14,8,11,2,4,5,-2,9,-1,-1,17,-4,2,-10,-1,-9,-9,3,-4,-26,-13,-19,11,11,14,16,4,12,-11,2,-1,-19,-1,-5,-32,-12,-17,19,23,23,8,0,4,-16,-4,-5,-17,1,-3,-13,4,0,17,19,15,1,-8,-7,-16,-5,-5,-2,14,11,-3,10,6,10,7,3,-2,-11,-13}\n\n#define CONV1_BIAS {-49,-18,-7,-20,-12,-15,7,2,-10,-84,-72,-65,-53,-6,-87,-63,-64,-28,-28,-4,-3,-10,-52,-15,-5,-7,-31,-44,-102,-19,-5,-65}\n\n#define CONV2_WT {-3,-9,-16,-14,8,-17,-10,-9,-20,37,-11,-5,-21,9,-22,-10,-11,18,4,12,8,22,11,6,-14,-6,14,15,8,-15,-6,-10,-23,-32,-11,-11,34,29,-5,-14,-13,14,-31,-17,-12,8,-19,-9,11,12,-8,31,35,24,-35,7,16,-16,-6,20,3,0,9,-28,-36,-21,-12,-35,-6,-2,-10,23,10,-2,8,7,-16,26,-13,-15,-11,17,-3,16,15,-2,-23,-9,-23,-13,6,-21,7,-4,-40,-38,-24,-20,-3,-47,19,26,-3,4,21,-4,-4,9,1,24,14,-17,-26,-1,-12,38,19,13,-7,-18,49,1,1,-11,8,-7,-26,-8,-30,14,-28,-49,11,-15,-16,-8,39,1,6,-16,-23,35,4,-8,-7,-15,-15,33,14,8,-9,-2,42,27,4,15,0,-25,-13,-22,14,-10,-44,-35,-10,3,-16,14,-10,15,8,14,6,26,0,10,19,23,15,5,-8,12,-23,7,-18,14,8,19,-4,-9,4,-5,18,-31,-44,-35,9,7,-23,7,13,0,-15,-17,-2,25,-6,13,9,24,-12,26,16,35,-34,-14,19,10,-8,8,-8,16,14,-17,5,-21,4,-17,-20,6,7,43,26,-4,-2,-10,-1,30,-17,-9,-16,6,9,24,15,-21,-41,16,-4,34,11,-8,-6,-4,-39,-19,-3,-39,-21,-9,-5,-1,8,27,10,-21,-7,-3,-5,-10,-11,-11,-36,5,-14,12,6,25,-21,0,2,43,12,-13,3,-14,-36,-11,-10,-35,-37,-49,-7,-13,4,24,22,-16,-4,-16,-17,-18,-8,-13,-22,7,-30,34,6,23,-15,-22,26,3,-7,-5,-3,-20,-8,-22,21,-44,-34,3,-18,11,-27,15,15,4,25,12,-5,33,-4,-3,-5,26,-4,-8,-17,-1,-43,7,-17,13,2,-23,-23,-13,-21,-9,26,-46,-47,-5,-5,8,-34,2,28,-4,33,-23,-24,41,-15,-9,-15,5,-12,-17,6,-21,-20,-22,-6,8,-8,-22,-26,8,-1,-17,25,-28,6,-6,-35,15,-21,48,30,-5,24,-12,-48,70,-13,-12,-1,11,13,3,17,-4,-25,-9,-33,1,13,-18,-16,-15,4,-24,37,-26,11,-39,-17,8,-4,22,23,-7,21,-1,-31,44,-7,2,-37,-5,13,-16,1,2,-37,-20,-3,3,5,-14,-5,-32,-26,-2,10,16,20,-51,-9,12,4,13,9,-24,-19,13,-15,50,9,6,-16,-27,19,23,14,35,-12,-30,39,-18,2,2,-10,8,-17,29,9,-15,-12,14,-19,23,-7,-28,8,6,3,-15,-12,-26,20,-3,13,35,23,-25,-59,-32,10,36,-40,12,8,-8,15,-22,-20,1,-2,-54,-32,-14,-16,10,-30,-54,-3,0,-2,-10,-22,-10,5,-15,-5,26,23,-40,-60,-6,-12,9,-28,-21,4,-29,11,4,-28,8,4,-26,-17,-25,-44,30,-4,-24,18,4,13,-5,-23,15,22,-7,3,33,48,-28,-22,-20,-22,-3,-58,-2,32,5,22,2,-10,-20,-5,-23,15,-36,-28,42,-1,-41,12,1,18,6,-35,-4,14,1,-27,44,35,-36,-21,3,-21,-11,-50,-7,14,7,21,34,-24,1,-2,-12,3,-27,-8,54,1,-10,16,-24,-13,-27,-35,-10,7,-12,-5,21,-19,6,12,4,9,-42,-6,-16,7,-20,4,35,-9,63,-7,7,35,16,-10,49,13,-26,55,-28,17,-35,16,-40,17,4,19,32,-2,-20,-51,-21,5,38,-8,26,-2,-17,25,-6,0,21,-11,-20,8,-1,0,27,8,-38,14,-28,11,-44,3,-32,-19,-8,-25,15,-9,-16,-47,1,7,-10,-8,7,-4,1,20,-9,-34,16,-9,-26,22,-3,-15,49,11,5,21,-27,28,-31,15,54,10,-16,-21,-1,8,-2,-10,19,3,-1,-24,4,15,10,24,17,7,-13,-25,-27,26,-12,-3,9,-2,-5,34,-12,15,-23,-16,26,-2,-10,-1,-11,6,23,-21,15,6,20,-19,17,-2,-20,11,34,-8,16,-19,-3,38,-2,9,28,-9,11,21,-8,-22,-48,-15,-15,-13,-7,24,-7,-3,35,-9,18,-8,13,-1,27,-21,6,-10,36,41,32,11,12,-3,22,-10,13,-2,-16,7,-16,25,31,14,-11,6,7,6,7,-5,35,-22,3,37,18,54,-9,2,-17,-5,-6,2,-7,-1,2,21,8,5,14,8,-48,-18,-3,-3,7,-17,-11,7,23,-6,-21,-25,22,-26,21,-19,13,77,7,-29,-2,-12,1,23,-18,-4,-18,34,-1,2,19,53,6,3,9,5,4,-7,36,5,-6,-11,-18,-5,49,-15,9,15,-5,17,2,-14,12,8,42,59,-40,39,-9,7,-13,-3,-22,47,-9,-7,8,32,2,-27,0,-33,14,-10,-27,0,39,-15,23,-3,0,10,22,-7,-23,5,17,1,17,26,26,37,15,3,18,21,-20,3,-4,23,29,-7,-21,-32,34,-6,-2,42,22,-7,34,11,2,30,34,-4,-14,-7,10,14,4,6,-9,-9,37,-39,0,2,-14,21,-45,-5,28,-2,-6,8,0,16,37,-8,3,-25,30,57,15,-16,-28,-8,-17,4,-2,-45,1,-8,10,-18,1,19,-17,-11,-39,3,-27,-6,14,-19,-14,12,16,-25,-24,-41,-26,-11,57,20,-12,16,-3,-17,-1,-9,-3,-1,-5,-38,43,4,16,1,-14,38,-3,17,-5,-2,16,-16,17,26,-2,4,-17,-16,0,-10,47,25,9,22,13,-15,-16,14,13,-1,-17,-5,32,-13,5,5,-33,4,-34,9,12,10,18,-1,-27,-21,-1,1,7,11,-21,-13,4,6,12,46,24,-25,-4,-1,9,-25,18,-1,43,12,17,-15,0,-11,-22,-2,-3,-4,17,-30,3,-22,7,-12,22,34,-48,-22,-8,2,2,-6,18,-14,15,-5,16,-2,1,14,-22,-14,4,-42,-19,-30,11,16,10,-28,10,22,-7,5,-30,-14,46,29,-53,1,-37,29,2,-74,12,13,20,0,21,-40,-2,20,-10,-60,-16,-38,-4,-24,-13,0,-6,-12,-14,-1,-16,5,-20,-42,4,30,-110,-3,-6,5,-6,-85,-1,6,8,-12,-2,-49,1,-14,24,-17,11,-50,21,18,25,38,-22,-3,-16,-1,-15,24,-19,3,-16,39,-52,3,-24,3,27,-64,37,18,26,8,-4,-43,2,2,-14,-70,-15,-58,-6,-23,2,2,-8,-2,-4,15,-18,3,-27,-20,-21,3,-115,3,-33,31,14,-50,28,-13,20,8,-55,-51,34,19,-16,-42,17,-62,-9,-24,11,5,5,22,1,12,34,16,-19,-19,23,18,-103,-13,-34,29,12,-57,-2,3,17,0,-17,-25,8,9,-22,-36,-20,-34,15,-9,12,32,31,-18,17,-3,-23,-8,-8,-1,31,15,-37,-3,-29,24,1,-34,24,28,-7,11,21,-18,-21,18,-54,-68,-35,-63,-1,-19,-1,-16,8,-19,0,-19,-18,-2,-17,-39,16,3,-68,-21,-75,-17,-3,-80,-12,24,-46,4,-7,-45,-6,5,-26,4,-1,-44,39,20,18,4,-8,-2,12,-5,-16,12,-5,-17,15,6,-17,1,-75,-25,3,-51,12,46,24,19,-3,-31,1,23,-11,-58,-23,-88,8,-5,-24,-6,18,8,7,1,-27,21,-2,-32,11,-18,-88,2,-74,-6,-15,-52,-7,24,6,11,-36,-48,19,19,41,-13,3,-67,6,20,-13,31,33,5,-7,-4,4,20,11,-2,23,17,-43,-6,-49,-12,-15,24,19,34,42,8,-9,-27,-5,20,39,12,-17,-18,20,6,3,31,-11,-5,-26,26,16,-7,-5,-2,23,29,47,11,28,13,8,35,21,-7,21,3,50,1,-23,2,3,-10,-8,-36,-9,-25,-4,28,-23,-25,-17,-11,-1,2,-11,-2,-7,32,-5,1,-16,4,8,-12,-12,-5,3,1,-4,-19,-6,-28,5,17,-1,-2,19,9,32,17,-17,-18,13,-17,10,8,-5,1,-23,8,27,34,-42,-25,-8,-4,16,10,18,23,9,29,-5,3,6,-46,-26,-50,-37,-13,6,-27,6,1,-8,15,0,-7,5,-10,-18,4,-9,28,-14,-30,6,36,19,1,6,15,-35,-17,10,26,21,-1,15,6,-25,39,4,4,10,22,-26,23,-1,-1,13,16,9,-9,-2,21,7,2,22,56,25,28,36,19,4,26,9,-7,3,15,-6,-21,5,-14,28,-4,-44,8,-16,16,8,14,-18,25,-21,-5,13,-12,5,-2,4,-5,-13,27,-11,13,-13,-10,11,4,20,50,-10,11,12,1,42,-7,-5,-12,14,4,-4,3,-28,24,-14,14,0,-14,9,-1,-22,2,13,15,-17,21,3,-16,9,31,43,-36,12,8,-4,15,40,-6,29,12,14,-4,-5,-2,-37,38,-14,-5,-1,-23,-5,12,-21,-8,35,15,-4,21,-13,20,22,12,-22,-26,-13,-7,7,-26,17,-26,-11,3,-15,8,17,0,-15,-5,-16,4,-31,-3,-68,0,-22,-38,16,-3,2,21,-26,-45,10,15,-3,-25,-25,30,20,-20,15,22,-13,-5,10,-6,20,4,5,1,-12,-13,-12,-4,-2,19,-37,-17,0,17,11,15,-3,3,29,-7,-22,19,9,-11,5,19,24,-17,-51,23,-31,-19,22,4,-17,14,-30,-22,-20,-15,14,22,-23,5,-17,25,11,11,-2,-17,-6,3,4,32,14,3,13,19,12,-33,0,31,-13,0,3,-20,-30,0,16,11,-19,-33,-18,6,8,25,-2,13,-1,5,-18,-18,10,27,44,-11,22,2,-22,26,11,4,38,22,-9,11,-7,-31,-16,14,46,-2,-38,-24,-19,-3,30,24,59,-15,-20,-2,-29,43,2,0,-31,-21,-50,-27,-21,2,16,-5,-4,25,-12,-5,-15,-10,-10,-14,6,13,-55,-18,13,17,8,-43,31,-28,0,0,5,-37,-8,25,-25,-22,-61,-10,-14,25,18,38,-17,9,12,9,24,-21,-15,0,1,4,-15,-9,-18,34,-21,-8,14,-15,16,-18,25,-1,15,-15,-16,-14,5,18,-37,24,23,-17,-20,9,-22,-15,33,2,13,18,-7,-32,-2,-15,-14,3,-26,-3,1,10,-8,-24,12,37,-28,-12,52,-19,11,-6,-2,18,2,-6,14,0,-11,-4,-27,-10,18,7,33,10,-13,3,-22,7,-13,35,32,-5,-29,-18,-18,54,-16,-13,66,11,26,-9,4,14,-40,1,36,-16,14,-20,-58,-20,9,-17,26,2,-25,-10,-16,-16,14,24,74,-26,-11,-9,-27,99,13,-24,-29,-1,2,-4,-18,8,-11,21,-2,-3,6,-13,-6,18,-13,-14,-1,25,-49,0,12,-10,1,0,23,-19,-5,-17,-7,20,-13,-10,1,43,-12,-5,0,36,9,44,24,-1,29,10,30,-6,-3,-12,33,9,-14,9,30,17,-38,-12,23,-29,22,-33,5,12,-1,-27,17,-9,-9,5,-5,2,12,-5,14,9,-32,10,33,15,36,-2,23,-5,-19,-8,-18,-3,24,-14,7,25,3,-15,33,27,6,-32,13,13,7,-14,-2,-25,-40,4,7,-5,-17,-11,-30,27,17,21,18,-18,-12,4,-20,-4,10,-40,0,0,-53,-10,26,58,-13,-42,5,34,23,20,-3,-58,-98,-17,25,-17,1,-30,-74,-5,19,4,-19,-48,12,15,-22,-17,1,23,-43,-13,-32,-7,10,74,-7,-53,15,22,12,10,8,-87,-83,-1,9,-23,2,-40,-21,5,-12,19,-31,-12,-7,24,-20,-42,-23,-13,-65,-21,2,-10,-22,1,-34,-24,9,34,-10,-9,24,-70,-60,25,14,-7,7,-21,14,0,12,-25,7,-16,1,25,20,4,-18,-24,-51,-30,2,-14,6,6,-12,5,15,-9,-12,-26,31,-2,2,-7,-23,14,-30,25,-10,16,56,-6,2,9,10,-5,24,7,-16,20,41,18,-5,-8,9,1,10,-15,7,0,13,-32,-8,-23,-37,-7,-19,-7,-9,-3,-30,4,32,14,-12,-17,10,-2,2,11,-35,-4,7,2,-37,-5,4,30,-14,-52,25,41,1,11,-41,-48,-70,6,1,-31,-24,-35,-22,-22,0,8,-20,-24,22,25,23,-6,-15,33,-45,-11,-17,-1,7,27,10,-60,26,25,0,27,-34,-63,-63,4,-10,-17,-34,-35,6,-5,-14,20,7,-20,6,37,9,-25,-16,28,-32,-28,-15,-5,3,4,-48,-30,12,8,3,8,-24,-58,-65,1,-4,-9,-36,-8,3,2,67,-35,32,-13,10,36,38,6,-28,50,-25,-44,-9,-12,0,-11,-35,28,18,-7,-13,7,28,18,-13,6,6,7,0,-26,7,59,18,-2,22,6,-2,-80,33,6,-11,4,-5,-9,33,-2,-16,-20,-19,16,12,1,-36,-6,22,45,-3,-28,32,17,-7,-55,6,1,-5,12,-11,-15,21,-37,23,-14,-5,-4,2,-8,8,4,36,37,-53,-16,3,1,-11,-1,48,13,25,-22,23,0,-23,-49,17,-22,16,4,-8,1,4,-14,-23,4,16,-26,18,-21,12,1,7,-6,24,-6,30,-44,-25,-50,-11,-35,22,-37,-21,-6,8,-8,16,14,13,-9,-9,23,-50,-20,-55,7,1,-50,16,19,12,3,-16,-36,5,18,-4,7,15,1,17,1,17,-33,-16,-11,16,1,-16,20,3,-12,-23,11,-2,-17,33,13,3,-15,18,15,48,-6,-12,-27,10,-35,33,6,-7,5,10,14,-26,3,-15,23,-10,-27,-2,22,20,20,6,21,46,-44,8,-10,-14,38,-26,-34,22,-35,-14,-6,-33,-18,19,35,-1,42,14,46,-19,-1,22,10,-25,-37,16,-21,-2,23,-18,33,39,-9,58,-29,23,61,50,-24,11,-25,14,30,-47,-37,-6,-3,-19,18,9,2,10,-5,-20,5,-20,-18,17,-15,3,-3,0,27,23,25,13,1,34,8,40,-19,-15,-11,26,-15,-24,-15,-6,-54,-33,-41,-3,-36,-2,-25,-30,0,-3,-7,-1,-16,5,-7,17,-3,-49,-5,-65,14,-8,-49,14,25,-14,-4,-2,-52,-2,-4,-37,-22,14,-6,11,-21,14,-8,-21,6,3,-25,-1,-12,26,-5,12,-22,-9,5,-45,5,-7,-46,19,26,14,-17,-9,-48,3,-51,33,25,-8,52,-32,21,2,5,0,5,-4,-8,-7,-17,-14,-13,-14,29,28,-25,39,8,-16,30,11,-11,-23,6,8,18,5,-17,22,25,3,47,18,30,18,-8,-12,-6,-28,1,8,-22,-7,-22,6,33,9,22,48,-17,30,74,9,-20,-38,5,3,46,-2,-14,-24,-25,-7,8,-2,-13,31,-22,-33,-3,-12,-3,-32,-10,9,-17,6,38,8,28,-7,26,8,-10,-9,-28,-43,21,28,-4,-22,18,-26,-58,-29,-35,-7,-36,-4,-21,-17,-12,-2,12,25,-10,-1,-8,11,19,-46,17,-60,10,-29,-67,-33,16,-20,19,-14,-56,-6,28,-43,-18,11,-19,7,-20,-3,-16,-33,0,-9,22,36,-4,25,-2,11,27,-24,27,-43,-14,-27,-31,-3,11,-8,8,-16,-47,-2,-26,-17,-4,-22,-9,-17,16,-3,2,5,-15,-19,3,-24,-34,-21,-30,-28,25,-17,-35,-14,2,11,-3,22,7,-8,15,-38,-22,14,-7,-12,-8,-12,6,15,38,14,26,-5,-16,-15,14,-2,-39,-12,-25,-10,13,-48,12,-17,-1,3,22,-18,5,5,12,-34,0,-2,0,-21,-33,15,-6,-29,-6,14,2,-7,-13,-6,0,5,-17,-6,4,1,11,-11,20,-28,25,7,-36,3,5,-4,14,2,-27,-9,35,-16,-52,-24,-25,-16,-42,-20,-5,6,-10,-14,15,-2,-12,-3,0,-7,7,-31,-3,-47,13,-18,-51,-3,31,-15,13,-13,-49,1,38,-20,-20,-22,-22,14,-36,-2,-5,-6,5,-40,25,16,-9,1,6,1,18,-33,22,-29,-8,-19,-38,6,18,-4,11,-9,-57,13,-5,10,26,10,-5,-48,-13,-11,26,23,-34,-16,7,-2,-28,-22,17,13,-16,36,-10,13,-2,-22,48,29,10,-24,-25,-31,-26,-7,-11,6,11,35,28,-15,-1,19,48,17,-9,-21,31,3,-40,-19,11,11,-4,9,20,-21,-8,-5,23,16,6,4,-16,-22,-4,-2,-14,-30,-46,24,11,-23,-29,11,36,7,4,-9,-4,13,-29,-14,6,8,24,27,1,-9,17,10,-12,25,9,-3,-4,6,-26,16,15,-3,-41,-15,-11,-21,-32,-5,-2,19,1,-6,3,16,-16,-13,-4,9,6,-17,-3,-40,-4,10,-25,-27,37,-9,8,13,-53,3,18,-22,-9,-42,-26,-11,-28,21,-16,6,2,-26,14,5,-14,-18,-8,-6,7,-35,18,-21,-15,13,-30,-3,23,2,4,-3,-56,26,-29,-17,-2,13,10,-55,-25,-44,-63,21,9,5,24,-32,-46,-23,-24,-24,-7,-41,2,-26,8,-23,6,17,-8,17,7,15,14,30,-9,-27,-15,43,31,7,-7,-30,-1,3,1,-14,-6,-12,-28,-26,5,4,1,20,25,-41,5,-5,-21,2,-12,8,7,-21,38,10,-1,-17,-6,47,22,-2,16,-27,14,-36,10,-13,-6,10,-2,-27,24,42,-9,20,2,-23,14,7,-16,31,-11,0,15,4,46,26,19,-10,-15,21,-21,-7,17,-32,1,8,-1,-29,2,-14,-30,-10,28,25,-10,8,-24,-34,5,3,-15,11,-25,11,10,9,-13,-1,1,-9,5,10,13,26,58,-14,23,-13,-13,-13,-26,-26,-6,-30,24,-12,-1,23,-29,4,7,-12,23,14,-20,41,5,27,-12,15,-10,6,0,-2,16,-24,-21,3,-21,9,-14,-38,9,-11,-3,-3,-12,0,23,0,-4,4,20,15,18,15,-26,21,3,-10,-8,40,19,-23,-1,10,21,7,4,-18,6,-2,-27,-32,-19,-9,-16,8,2,-32,16,34,20,5,17,10,14,-18,-40,15,-5,-15,45,-11,25,3,26,27,41,21,6,-22,23,-32,0,31,-22,2,15,-16,1,-30,-6,23,13,-2,28,18,17,19,-15,8,4,-9,64,48,64,-10,-16,13,-5,-7,-12,-10,-6,5,-9,20,-32,-32,15,-25,26,-15,-18,14,-13,-26,24,-5,25,4,-14,18,3,9,26,17,38,19,-25,38,-17,-23,-2,0,-15,-18,-2,-20,-14,-6,-11,-27,20,-11,-6,11,-41,-21,-4,-8,25,-2,-17,-42,-13,-1,-15,7,5,19,8,13,39,40,-10,17,-33,2,-10,-10,0,1,22,-16,31,52,1,-7,-9,41,2,19,5,-23,-8,-19,17,5,15,36,55,9,2,-4,12,25,14,-3,-14,14,-16,-8,1,48,4,7,7,18,12,4,19,23,-51,17,18,15,-25,30,9,-10,44,-14,60,-2,5,3,22,43,16,9,-13,15,32,20,-24,11,3,-2,-27,8,6,-18,20,-4,-23,-1,27,47,3,20,6,-15,53,50,75,-9,15,-14,0,31,2,10,-13,23,15,18,-22,-19,4,9,8,18,-14,9,-1,-28,-3,-19,-13,20,23,32,2,-7,-12,20,10,32,-10,48,-8,-6,6,18,-34,17,22,16,23,-17,-20,12,7,18,-12,9,-45,-11,-30,2,13,2,22,10,0,-29,-31,28,-7,-13,-25,9,9,53,13,17,-38,17,-26,-17,-26,23,27,-9,14,12,-23,-28,-3,24,-9,-20,-11,0,2,17,-2,-13,7,31,25,-9,-42,-37,-27,7,14,17,-27,28,-27,-13,-2,7,-2,-20,3,-19,-3,-17,6,-62,-44,-8,-40,14,-12,-3,-9,-20,-1,-36,58,-3,-29,-17,-33,4,-25,23,-36,37,-1,18,10,18,-3,-7,-22,-11,-27,-50,15,-60,-10,25,-37,17,8,4,2,-29,-9,-10,57,13,-21,-12,-40,17,-13,11,-49,2,-9,-1,6,-6,-6,8,6,14,-33,-28,-14,-61,9,11,-18,18,36,-25,-1,-28,-32,-28,-10,42,-13,36,-8,26,-14,33,-62,-24,-12,-22,8,3,-22,13,11,19,-55,15,-30,-75,-11,7,43,-17,34,16,-10,-21,14,8,-8,10,-14,-12,-24,60,-1,5,11,-7,-4,17,16,46,30,0,-15,49,32,-9,-27,5,-21,17,-9,19,-23,28,-5,35,-5,-1,24,-27,-53,10,-21,41,13,8,-16,-3,-22,31,9,25,34,-10,-8,36,15,12,-9,-29,-20,9,-33,14,-31,-9,0,-19,-8,-9,30,15,-16,-10,-34,21,-51,19,-48,22,-1,23,20,5,24,-6,12,29,2,-24,4,-50,-26,0,-9,34,-15,1,-2,-12,-45,-15,26,20,24,-6,-44,34,-4,14,-71,28,17,10,17,6,2,6,24,12,5,-12,-25,-39,-4,21,-1,10,19,-11,-4,-7,-21,-6,-15,25,26,34,32,57,3,17,-54,6,11,13,4,-10,-12,24,19,-5,-5,39,-37,-59,4,35,-10,-21,34,-11,-7,-48,45,17,-17,27,10,-19,-17,-10,-19,-11,-1,-37,21,-24,-15,6,4,32,-14,-6,-14,4,-18,10,27,5,-18,14,22,6,-13,-12,-41,-1,-27,18,33,-25,10,10,-1,3,-16,-24,12,-3,-7,-7,-6,11,-27,-22,-8,-4,-3,-8,-5,13,-10,18,-9,-2,-20,11,-11,19,-6,20,54,-10,13,32,1,-21,-10,-8,17,-26,-4,-12,35,7,-14,-23,-10,11,-13,1,-8,-15,12,-3,-7,-3,-3,24,21,14,9,-21,12,2,37,-31,-3,3,4,2,-7,-20,23,-16,49,2,-9,-8,-16,3,-26,14,-14,-21,-18,-17,-17,26,8,14,0,-4,30,-8,22,13,-2,-24,-16,-6,3,10,-9,-23,-3,-23,27,3,-19,-6,-41,-9,-4,-13,-17,-25,-40,-45,-16,-1,17,6,-22,15,-25,37,12,-3,-5,25,-11,-1,23,0,42,-8,0,4,-1,43,-6,46,16,-21,-1,-7,17,8,21,39,-5,0,0,20,-42,10,-26,13,20,-19,-13,22,9,20,6,3,13,-1,-14,-20,-7,10,-13,19,9,-18,2,-5,-27,-3,-15,14,1,10,-20,37,-31,18,-3,6,58,7,-12,19,6,-2,-26,27,18,1,-7,-21,6,32,-5,-13,-8,4,-15,-1,-32,8,27,-41,11,-9,-18,32,-11,-37,6,-8,9,36,11,-30,4,-1,-4,-3,-21,-13,-6,-7,-20,-17,3,-13,2,-11,-18,-16,2,32,-4,-38,-2,-11,-1,-5,-8,-24,14,0,-9,21,-9,-13,-8,8,5,11,-50,-21,-19,-19,-25,-36,-11,-16,-1,-19,5,-40,-8,3,-9,-51,-8,-24,8,-26,-13,3,-13,36,-14,18,-5,36,-52,1,45,15,0,-30,32,-21,24,13,-2,10,12,-52,19,-40,6,-51,-46,44,-47,-19,33,23,-37,7,-11,34,30,11,-17,19,-35,11,6,31,-14,-23,17,-21,10,16,12,-16,-28,-24,17,-32,-11,-30,-12,22,-28,-16,17,28,-17,7,3,-11,108,32,1,18,3,-6,-43,30,-1,7,0,-10,-22,33,6,2,-24,-7,-10,-44,-18,37,21,-26,4,12,7,7,-31,-17,-3,17,34,27,-17,-21,3,-2,-35,1,4,13,11,7,-49,-11,5,13,12,-17,-30,-34,8,22,19,-31,6,12,-10,-29,14,3,-6,15,22,33,-15,-14,0,14,-15,-6,-12,15,-39,36,-52,-35,0,-13,47,-38,3,-26,-29,47,28,4,0,8,-24,-17,9,9,-3,17,-28,10,-29,-11,-49,13,24,22,-16,-10,33,-11,0,-8,-28,-17,16,-51,18,-45,-18,-7,-34,16,-30,-25,47,-26,-27,-2,-10,24,18,41,-12,-38,-27,10,-20,33,-1,-23,29,-22,-6,-1,5,-9,-24,-25,0,-44,-20,29,42,1,-18,-29,28,-12,-9,-11,-6,-17,49,45,2,-23,25,-18,-41,-2,14,0,0,-12,-31,21,11,-11,-42,-26,-36,-36,-3,46,15,-8,-8,-24,18,-26,-5,-20,-5,-27,23,27,-17,-21,16,-20,-25,-26,28,-3,13,-9,-37,-10,8,6,-11,-10,-41,5,15,36,38,-21,18,-3,-21,-22,19,48,4,0,-4,7,-9,17,25,4,-27,-18,28,12,-22,49,-30,-19,15,6,7,-25,13,0,0,1,18,6,35,-10,-40,8,26,42,-21,-8,-18,50,-23,1,-37,35,14,6,-29,13,22,-30,8,-13,-5,-8,2,-9,-9,-14,-23,36,-4,25,-36,-15,21,-34,-30,-11,-28,7,9,78,-15,-22,-7,3,-9,-1,-6,-8,16,-15,3,-7,51,4,0,-13,-34,-35,5,32,24,-7,-21,-16,6,-9,-5,-22,-4,4,6,42,-9,-30,29,-39,-9,-7,14,-23,-42,-6,-20,-15,25,-5,-19,-19,-33,-21,-32,8,0,8,-13,-10,5,-25,26,-51,19,8,-5,-12,-14,-25,26,-33,-12,-33,24,-35,-29,8,-22,-34,-9,0,-16,-22,-25,1,33,0,34,16,4,-10,-2,1,32,33,23,-16,14,32,0,25,42,18,0,-14,32,4,-10,33,-14,-15,12,-14,25,10,30,-6,35,11,36,27,17,4,-8,3,40,44,14,-3,-8,36,-16,-3,-2,-11,11,36,-5,2,7,-39,-27,-28,8,-26,-14,4,-8,-22,-26,-6,-21,15,-2,0,-5,49,-2,31,10,-50,-4,-2,24,9,2,6,-11,12,-12,-16,22,-35,-16,-26,22,-20,-20,25,13,-5,25,-20,-45,-25,13,17,-15,33,-11,20,7,-59,5,-17,17,6,-11,1,-8,2,-25,-10,26,-27,-7,-14,-5,-10,-15,-11,-2,-41,8,-13,-55,-38,28,44,-23,12,-28,-8,13,-14,-27,6,-19,3,-14,-9,-18,28,-26,-16,23,-24,-31,-9,-10,-6,-16,-26,4,-45,10,-12,-38,-31,19,4,-26,-1,-9,5,-8,16,-4,37,20,21,10,-7,-14,27,-27,-32,37,-30,0,23,-24,-16,2,15,9,16,1,-17,-16,-4,4,26,-29,13,23,32,16,-5,-10,27,-5,-17,-12,-2,22,16,-3,21,30,1,0,-18,4,-5,-23,-13,8,-22,-15,-35,8,-25,5,8,7,27,-28,9,22,-16,-34,25,3,11,7,0,30,25,7,1,27,2,-17,6,1,10,-12,-20,18,-40,12,-21,-37,-20,12,8,1,21,-20,-12,-1,-47,-59,-23,-6,32,-2,-11,15,4,-15,0,-16,-11,4,6,-9,11,-7,-5,4,-95,10,4,-77,-6,4,16,-8,-15,-50,-28,1,-6,-61,-17,-40,8,-13,-14,-18,12,-2,-4,-28,-13,-16,-6,-12,-6,4,-28,0,-91,4,18,-65,-13,6,-8,-5,-2,-43,-10,0,-2,-20,28,6,11,-11,3,-13,-10,-8,1,-5,-2,11,69,-13,-1,10,6,9,-23,10,8,-23,13,4,-1,-1,17,9,29,8,38,5,-20,2,-18,-32,-12,6,-7,6,3,-31,-27,1,-14,10,-46,3,-6,-6,34,6,-2,2,3,-16,6,7,13,11,30,-1,-5,7,2,32,20,-10,-15,14,-11,28,-30,0,23,-9,-2,11,1,11,-1,16,24,0,-22,14,-7,-18,-8,13,4,47,8,1,-11,-14,-29,-21,34,2,-28,7,-37,40,2,6,58,-9,8,-31,11,26,-37,-2,-24,-7,7,-31,31,-13,-10,7,-21,-19,-17,-14,2,-24,-44,-28,0,-17,-32,0,11,33,-2,-32,24,-13,-2,-16,9,5,-8,-7,-55,-12,18,-10,33,-13,-24,13,0,-21,-11,21,39,10,16,10,1,28,-11,-6,0,0,2,-16,-26,20,60,-18,13,23,8,-11,3,-2,-4,48,29,-9,-12,14,6,36,-17,-11,2,-3,-1,-11,-26,-7,18,-23,-7,9,-21,11,-28,36,16,-3,7,-13,-1,-19,-20,-9,36,34,-18,-21,-7,-5,-4,28,14,-17,24,-9,21,13,-6,19,34,23,19,8,-44,9,23,8,-4,6,33,9,52,8,13,14,35,26,-31,-25,0,19,-8,33,-19,-13,-7,-9,13,23,50,26,42,11,14,46,8,18,37,0,-6,9,65,42,10,31,-24,-10,49,-7,25,1,46,10,1,-11,-9,-7,13,-35,-30,2,39,9,27,25,18,21,5,-18,-10,35,-27,-15,60,39,17,6,11,-36,34,-43,24,4,1,18,2,-16,15,33,15,40,16,33,23,37,18,28,7,7,5,8,-21,37,20,2,22,19,62,0,40,-22,1,15,-3,-14,-14,11,3,36,-18,-8,7,-57,9,36,-11,-22,-17,-16,38,-19,-10,5,-32,16,-1,3,-13,-53,36,-19,-5,0,8,54,-13,-34,-38,8,-34,-7,40,-30,-36,-19,-23,7,13,10,-2,-27,25,4,5,-34,17,-4,-14,5,-13,-4,44,-9,-22,4,26,15,-20,-23,-30,10,-22,11,-11,-23,-10,-13,3,50,41,-1,8,-1,-4,28,19,0,21,-14,10,44,-6,12,33,26,-34,-13,36,36,9,-2,-3,-4,3,-27,-27,-19,9,-30,-41,-9,29,-5,-7,10,-5,6,15,-32,18,-14,-2,-3,16,-13,1,5,-29,9,28,-24,2,14,-26,1,16,-62,6,-15,-5,7,-56,24,40,25,16,2,-20,-25,4,-7,1,-8,4,-16,17,-20,44,1,64,-35,2,-3,5,0,-26,-9,-12,1,-2,18,-15,8,9,-24,15,11,10,-27,3,14,-9,8,-25,-16,4,6,-4,23,-19,-11,-6,11,-18,-6,16,36,-15,-10,-3,11,-3,5,1,-2,3,-9,32,18,21,-6,11,-6,0,17,-27,30,-21,5,-11,-7,2,-3,11,-22,-2,27,-13,28,37,-17,-20,-10,2,9,0,-17,17,-4,3,-25,1,-13,3,-8,4,20,-53,16,17,-7,1,-9,17,-33,7,23,-9,10,-18,11,5,-10,-2,2,0,15,13,11,5,0,-22,-23,-17,-9,-8,-1,-10,-11,-32,-8,25,-4,10,-23,-5,-9,-5,27,-6,28,7,-2,-40,-8,-10,9,-1,-4,6,44,20,-10,-20,-4,7,9,39,30,-17,-16,-15,-11,27,-17,0,27,-17,-11,-22,7,10,21,14,-1,10,10,7,34,-15,-11,-5,0,-10,2,-26,8,14,-16,3,1,25,11,-25,-9,16,5,-20,31,16,9,29,1,14,-5,-46,25,-33,-2,-18,-1,-6,1,-18,-13,32,3,-9,3,51,-18,4,-8,1,-5,-46,-13,-8,21,-9,-2,30,-1,-44,-22,-5,-40,-19,8,-16,-3,6,-10,29,-1,2,-31,15,-2,-25,-26,6,-31,-11,6,-14,-1,-37,-4,25,-10,-9,-27,11,-18,-21,15,6,45,4,-6,-38,-12,-16,7,-19,-15,31,-22,-12,13,-30,-10,-28,-6,-12,5,-36,-45,-12,6,28,-42,-8,-11,11,3,-24,5,19,99,29,-22,-13,-8,2,-6,-24,-3,15,17,-9,-2,-2,-12,15,16,19,-7,-15,-14,-18,11,21,-31,-10,12,-6,17,28,4,-14,34,4,-8,5,-3,-5,-12,-11,-13,-25,5,-9,16,-7,-2,17,2,21,14,27,-12,38,-40,17,-16,-1,12,9,-4,57,21,-6,-30,-5,27,-6,1,3,11,-24,-33,22,-33,-2,20,-10,-2,46,5,2,33,22,-1,-43,-21,-20,-11,7,-12,9,-1,-19,45,26,-1,5,11,-15,-6,-9,22,-10,-15,52,34,12,16,-7,-47,-34,-6,-10,4,-4,-22,-60,14,-5,-27,10,-31,6,-7,-28,32,26,127,55,-12,-9,-17,-13,30,-35,-13,70,47,9,-1,0,-22,-48,-9,18,-11,-14,-51,-14,19,9,-36,2,-2,8,6,-55,-1,-2,110,17,-28,-30,-14,-6,-8,-13,-1,16,11,25,23,9,-15,4,4,24,2,22,-22,5,10,29,-1,-7,-8,17,14,-16,2,-4,20,-7,9,-9,5,-5,-13,-11,-22,-11,-20,-6,6,-19,-19,-48,10,34,4,11,13,35,-34,16,4,-15,22,-23,-26,65,5,-6,24,-19,7,-26,17,-18,33,-8,-26,18,13,-16,-6,1,-29,-49,0,12,8,-22,-26,-5,2,-8,-28,4,-2,-2,-19,1,6,0,25,25,-8,-33,-3,-18,-2,-29,-35,72,53,47,-17,-8,-35,-68,-8,-15,-31,-21,-32,-38,3,-14,-12,4,-29,-28,4,-56,24,7,95,19,-36,-57,3,-27,8,-8,-20,68,-4,59,-25,-19,-22,-16,-26,-24,-20,13,-13,-14,1,-4,9,-33,-27,-26,8,-94,-29,-30,23,11,-7,-45,5,-27,-2,-13,6,26,-16,12,-9,-20,-6,37,-60,20,6,7,9,-39,-16,-4,2,9,-21,-5,-12,-52,-31,-37,-18,2,20,-31,0,-22,-15,-23,-50,33,25,41,0,-32,-33,-93,-11,1,-33,0,-34,-12,3,6,2,14,-21,-42,-41,9,-1,33,21,19,22,-24,11,-8,3,10,-33,-7,34,35,4,17,-13,-58,-16,-23,9,0,-30,4,17,15,5,-27,-20,-4,0,-7,-24,37,18,-12,7,-63,9,6,-1,-46,-41,-5,35,-3,14,2,-5,14,-11,-4,21,28,26,12,-2,4,17,-38,-23,-12,-11,19,-18,-1,-9,-11,-23,2,0,3,-35,1,-33,-2,-9,15,-46,15,2,48,12,6,5,19,32,19,-11,-19,25,4,-21,-14,9,17,-27,-5,-11,24,-4,4,-16,11,2,24,-4,24,-3,3,-9,3,25,61,12,33,42,-13,8,-14,-6,-7,10,11,9,-20,-9,-18,-4,-8,-8,54,23,12,-8,-16,-23,-6,-32,31,4,-30,-38,-11,-38,3,-21,-16,6,24,0,0,20,2,-17,-13,-52,0,2,2,-14,-19,-6,-29,0,-13,-5,-16,29,16,-11,-10,-9,-16,-40,-11,-16,17,0,-7,19,-15,1,17,14,-23,-35,-4,-56,-6,9,60,-18,-26,-32,-27,-14,10,-4,-6,2,1,-4,-31,19,-7,-2,-6,7,28,57,19,16,-7,22,31,11,-15,21,-21,3,9,28,76,-40,8,-44,-22,-37,21,0,26,-20,-22,1,-17,53,-15,6,-19,29,21,31,15,2,6,4,-21,8,-7,-25,-19,6,-3,21,16,-18,3,-13,-21,-27,-24,19,43,4,-13,3,-20,23,-5,21,-14,8,-2,16,-12,-19,-11,0,-24,18,-18,-23,-7,-5,-14,20,25,-20,1,21,1,1,-15,7,2,20,-15,-36,31,-13,-29,-14,21,-40,-10,-34,12,-16,-23,7,-26,7,-1,-24,0,-43,2,17,33,-7,-10,11,6,7,18,10,-26,-17,9,-31,16,-19,-47,-31,11,-26,-2,-8,13,-25,-17,-8,-8,19,-24,-35,-16,-8,-10,1,16,-27,-17,-4,14,1,24,0,-21,-46,-11,-30,-29,5,-31,-7,37,10,33,11,-3,-10,10,-27,34,4,-17,1,-23,-12,-22,-4,55,-14,-12,23,-14,-18,-16,-2,-2,-51,3,-29,-29,30,-14,-12,-16,0,29,-3,-2,-8,-16,-6,29,5,5,-17,-19,-19,-7,-8,31,-14,-13,40,-21,-19,-33,4,20,-18,11,-18,30,18,-18,12,-13,0,9,8,-14,-29,-25,-14,-15,35,-16,-31,-23,-18,-2,14,12,-9,-18,31,-18,-4,10,0,21,24,-16,-38,16,-45,-30,-49,-19,-16,-35,-36,16,-2,-3,-3,-28,-23,3,-27,-7,-9,-11,-15,14,6,54,-2,15,39,3,7,-30,-17,-15,-40,24,-23,-28,-44,-28,-18,-20,-34,17,-21,-3,-16,-28,-29,-4,-26,6,-6,-40,-18,12,-29,24,-5,15,47,33,0,-31,-53,-33,-53,31,-17,-28,-26,-9,9,0,-17,4,-21,18,-46,21,-22,-2,0,11,8,-29,-17,21,-30,37,-5,20,56,54,-2,-19,-14,-10,-45,5,-2,-29,-32,-19,16,23,-22,-35,-29,-1,-6,31,-5,-3,2,-6,-11,-24,-32,39,-11,25,29,43,46,4,-6,23,12,24,-34,39,15,9,15,-6,0,14,2,-13,-23,-10,6,31,5,1,-7,-5,-28,-6,-22,-23,4,-6,42,28,5,13,-12,-30,-4,-18,-29,53,-36,-2,-34,0,-24,-31,-36,27,-8,11,-17,-17,-18,23,-17,-36,-21,-23,-12,26,-5,-7,21,18,28,-11,7,-48,-23,-21,-28,51,-15,-12,-36,3,-24,-5,-28,27,5,-3,-6,-3,-20,9,-9,-6,-13,-32,-23,-7,-24,24,3,37,34,-17,4,-47,-24,-24,-34,28,-28,9,-38,17,-12,10,-26,9,6,-24,-27,16,-33,7,14,9,-2,12,-13,-15,-34,24,42,24,40,-18,9,-37,2,-21,-11,31,-14,9,-34,-8,-16,22,-36,7,3,-17,-4,12,-8,-10,-8,-7,-9,10,8,10,-5,14,21,40,28,-1,1,-28,18,-10,1,-5,14,40,-5,7,-14,27,-37,11,6,-2,-5,-14,-2,8,-3,-23,4,-12,-6,13,-41,13,28,0,-19,-6,-18,-33,-19,-24,-27,71,-11,23,-43,16,-9,-28,-54,33,-17,26,-11,-10,-21,0,1,-14,-20,8,-14,-20,-36,50,49,0,31,-1,3,-22,20,6,-21,26,-24,18,-49,11,-13,-4,-53,-6,-5,13,-21,19,-7,-15,-2,-25,-21,-19,-17,-21,-26,62,26,-10,40,-32,-6,-49,23,-22,-34,16,-15,25,-35,21,-7,11,-24,-3,-10,-4,-26,61,-16,-8,-19,-18,13,13,-13,-24,-35,59,21,40,53,-25,-5,-54,0,-4,-7,-14,-31,39,-18,-3,-13,18,3,23,12,-16,-9,31,12,22,-25,6,2,4,10,-11,-32,50,53,54,42,-49,-7,-39,26,-12,-2,6,-8,49,-14,-6,-8,20,-1,28,31,-9,11,2,5,55,-4,20,11,1,-1,-50,-24,71,3,36,4,-55,-6,-9,-7,-24,11,23,0,25,24,-16,-67,2,-27,-2,3,-58,21,-33,6,28,-47,-26,-2,-13,-21,-20,-22,-8,3,-19,-20,31,-32,-13,16,4,-9,10,28,-43,19,21,-47,-33,-40,-14,12,-27,10,2,-8,-6,-35,54,8,-21,-8,5,28,-6,61,44,-16,-46,18,9,27,10,-3,11,-28,-6,-32,-9,-66,-13,-25,-21,2,-28,-10,14,4,18,-11,32,14,-35,5,23,2,-5,-12,-13,-21,-1,21,-38,-26,-2,-10,20,-24,8,-1,-10,-63,3,19,-10,-19,-13,-17,42,10,10,-25,7,-37,0,40,57,-16,-18,-24,-5,-28,40,9,-26,-8,-10,-19,27,-3,12,13,-38,-42,20,9,24,-30,-13,15,-24,6,36,-20,-5,-24,-5,-25,-7,1,-31,-2,17,-25,20,4,10,-22,-23,26,-15,-23,15,7,5,-12,28,-29,-13,-33,10,-13,-17,30,16,21,-83,-4,11,-1,-12,-6,10,6,-34,12,50,-17,0,12,-17,-10,-11,-35,58,7,22,42,-42,-43,-3,9,21,15,27,-42,-2,5,25,-1,2,-5,-1,24,32,70,60,10,-26,28,6,37,-6,-10,-13,-2,22,-8,5,26,-38,-34,-12,-15,-38,66,70,-32,-19,2,83,5,-26,-21,2,16,15,6,30,2,9,26,60,-9,2,-10,7,41,-20,-21,12,13,9,52,12,-9,-21,-24,-9,-3,-5,23,11,-22,3,1,92,1,-8,-25,28,-11,31,5,49,-16,-4,-22,-1,36,-17,0,-13,13,37,30,29,-11,7,-29,-20,11,1,8,-41,-11,-15,-14,-16,-17,-7,-11,-25,0,-25,4,4,12,-5,30,13,-20,-21,21,-23,-21,34,-15,20,-64,2,19,-12,20,17,13,-77,-17,-27,-13,-5,22,-20,-32,-42,11,-18,-17,-2,3,6,-13,-21,-7,48,-8,6,23,-44,16,-15,-19,-5,1,10,-22,-14,-15,-1,-1,18,-18,15,1,11,0,11,-21,15,18,2,25,24,-46,40,-2,33,54,-2,25,-71,22,-38,-34,15,-18,60,-16,-9,-30,58,-16,8,-14,53,8,-20,56,88,-30,-3,11,94,7,-6,-34,24,22,-21,15,-19,10,-18,4,-23,-4,-9,-38,31,-15,-16,-1,-2,-2,11,-9,27,22,-27,23,82,-40,18,-8,73,-22,-34,-16,-1,44,-20,-6,-24,-4,39,7,14,-17,-6,-9,-11,41,-13,12,-68,-26,-1,-1,0,-21,-41,14,-14,-11,-39,-8,-3,-6,-6,14,-24,-5,-17,-11,-24,9,22,-10,16,-1,8,30,-15,7,22,21,-55,-12,-34,-9,15,-2,-27,-49,-24,24,-9,-25,14,-7,24,-8,2,15,30,11,-11,21,-29,12,-21,21,-11,22,13,2,-6,-5,-23,-1,-19,-13,37,-33,-30,-27,-21,7,18,7,32,-10,-21,-24,4,10,4,20,19,-2,-53,49,-30,-10,-14,14,-12,-28,17,-10,13,-32,-44,-1,26,-6,35,22,0,-3,-1,10,28,23,-37,-31,43,-3,14,20,16,17,-18,16,-6,0,-22,-36,5,9,22,18,-6,6,-15,-1,-27,6,6,24,-4,-13,-27,-13,17,1,-28,-28,19,-16,-9,-22,-16,10,13,-2,-8,-15,-29,30,-27,21,-9,16,-46,5,-20,0,-18,-13,8,-3,6,-3,12,-3,-1,-33,12,2,-9,27,7,-16,-19,-27,10,-17,14,14,-10,-28,-63,20,-24,10,-13,-20,1,-10,32,21,-2,-43,-22,15,15,-18,6,4,35,-7,-27,30,-3,4,-30,11,-11,3,-13,59,-26,-24,-6,6,-22,18,-1,-5,-9,-32,35,30,18,-35,-18,21,-10,7,21,8,8,-8,16,19,-26,-43,-9,-8,-19,29,7,13,-34,-22,15,6,16,-30,20,16,-30,-36,-17,41,16,-20,-14,6,-17,6,27,21,-23,-10,34,15,26,5,18,9,-18,11,17,-9,-40,9,-17,-3,20,6,2,34,-13,4,4,-5,22,5,13,10,-35,0,-4,13,18,-21,31,-36,14,-5,-6,6,12,5,-4,-19,-25,34,-36,17,-19,29,-42,-14,-16,-2,-1,-6,9,4,-8,-2,-13,10,-16,25,-4,-10,10,2,10,21,-13,-5,-1,15,28,23,-21,-6,-36,-13,11,19,-20,10,-13,-36,-12,26,19,14,22,-11,60,-3,26,-7,7,17,32,-12,-30,-26,32,-11,39,-3,42,1,-18,22,1,-6,-28,-6,-3,2,-25,-2,1,5,5,1,12,-1,21,14,-30,1,-15,34,2,-7,-6,-46,-24,16,3,-3,4,16,-38,37,1,35,2,-35,26,-7,-24,-38,19,25,-8,-13,5,7,34,14,-17,4,-31,49,-27,16,-6,3,0,21,24,9,21,5,-16,-1,-13,2,11,9,-14,-3,6,-37,19,10,2,1,-11,10,25,-8,8,11,-29,35,-9,4,-3,12,10,15,35,1,2,3,-3,11,20,-18,-18,19,-48,4,21,-22,11,4,-4,3,1,18,-32,-13,-4,6,-21,1,7,-42,-9,-18,9,-32,-16,-42,-26,20,-28,-18,-31,-18,9,14,-16,25,-19,-16,-42,-3,-28,36,11,28,14,-17,-5,0,4,23,20,-12,-1,-19,-10,-32,12,-13,-22,34,40,22,-5,-16,-12,-12,-8,2,-22,0,15,-11,10,44,-12,22,-20,-1,12,-9,-14,3,1,0,39,-46,-19,-7,8,-22,-39,32,26,29,-43,11,1,-33,6,-18,-9,-22,27,33,-11,-21,-24,34,-17,-8,57,5,0,9,-7,24,-13,-14,-4,4,21,-53,-14,17,-29,8,-39,0,-3,10,-37,5,5,-9,11,-13,-3,2,-24,34,-22,-23,-11,-17,-5,42,1,16,19,21,8,6,21,-39,-12,-17,-30,13,38,18,-8,0,-24,11,-21,-34,24,-22,23,-13,-1,27,28,-12,12,38,-14,-9,9,-48,6,-4,14,-4,-26,-20,-4,-16,5,-60,-16,-17,39,-2,14,-6,29,-7,-21,-18,13,33,-10,7,-11,-7,6,0,7,-16,40,14,7,40,17,4,8,-8,-21,-42,26,5,-2,1,3,-9,-1,-53,50,-2,38,23,8,85,-15,1,-16,2,-5,12,-49,14,-8,11,35,18,-13,42,37,-5,-23,1,21,1,16,45,-39,-32,2,-1,39,-14,60,81,-47,-17,-39,15,39,-2,38,10,-16,31,-31,22,-1,33,-21,19,55,-10,-6,13,-2,3,-19,20,2,-3,-21,38,42,19,-15,7,31,-21,-20,-1,-21,-9,38,-13,-9,42,-7,-25,16,-9,21,1,9,-35,-17,-4,-7,13,18,1,18,-6,-14,45,-9,-6,-33,-2,26,-12,63,27,6,4,-41,12,6,-27,20,9,-32,-7,6,-35,-56,-10,50,1,24,-34,22,5,32,-18,-24,-10,43,-9,-6,4,-16,-2,-15,-12,-59,-5,18,-23,-15,-26,-12,43,23,50,-1,11,-52,-13,7,-65,-5,-22,-60,-7,6,-10,-55,-46,20,-11,-6,16,-12,18,-32,-39,-85,-19,-18,21,-27,-7,-14,-5,2,26,-38,49,7,7,-16,-17,-44,-48,3,90,-21,-17,-24,-45,35,-14,20,12,-45,-7,-65,-11,-33,-16,11,44,-17,14,-29,7,9,13,-16,12,30,-15,-11,17,9,-7,40,19,-11,-3,-16,-22,50,28,-31,-20,-8,-30,-11,-16,6,5,20,-8,-10,19,10,-11,23,-25,13,-20,-4,-40,-7,-2,8,14,23,-21,33,21,37,16,-17,-4,-38,-2,-3,-30,38,11,14,0,-25,-13,-7,-28,-4,19,-11,45,5,-47,-43,-14,12,6,0,-45,21,30,25,10,-6,18,-1,-5,46,4,-17,3,29,-30,-1,9,3,-12,-24,-24,-12,86,45,27,-36,-5,-34,-16,-22,-50,-44,-46,-17,15,-15,12,-37,-6,-1,7,14,26,-14,21,-11,-43,-75,-41,-32,16,-1,-17,27,55,10,22,-26,13,3,-14,-36,15,-50,-29,-3,20,-20,29,-52,-7,9,15,-10,-50,-43,60,-8,-22,2,-33,24,68,-14,44,-5,16,-17,17,20,-2,39,-2,8,65,-7,5,31,-3,-12,-8,-13,21,-2,30,-30,-6,-14,-25,-9,-11,38,12,37,-8,-26,45,-37,-24,-12,-29,18,-7,-18,-34,29,23,20,5,44,-5,20,13,52,47,-34,-18,-24,0,13,-34,36,17,37,28,0,-32,0,-16,2,-14,8,-7,-8,-13,4,19,28,-22,-2,-16,-20,-20,-31,5,-25,-11,-29,7,11,-17,23,-21,-16,6,4,-4,-21,12,6,-22,10,-39,8,-5,-13,-24,6,8,8,-1,-12,25,10,-33,6,25,-49,-20,-13,39,11,-10,20,18,-10,10,-18,-1,3,17,12,-26,1,-13,31,12,-33,-7,-27,35,-7,1,-24,-13,2,-21,9,17,-37,-20,18,6,-5,-34,-14,10,-31,3,26,11,11,46,-4,-4,16,-13,28,23,-18,-3,-14,42,3,28,0,-2,10,-44,-1,-19,-19,-22,18,-6,31,-18,-30,6,-6,0,30,3,-23,-3,19,-7,11,-3,3,-22,-17,27,-17,7,-3,12,-11,-14,-11,18,16,34,-23,-19,-22,-16,13,0,-42,-14,-17,17,-3,-9,-25,1,-29,-10,-7,-14,3,-37,-22,-4,-10,0,5,-30,11,-11,-41,-11,-35,-6,-13,-17,-26,-4,-38,-31,10,-44,-33,-13,-8,-7,-22,6,8,-6,-17,15,10,6,11,14,7,24,7,-24,0,11,-27,15,-7,23,-19,23,3,24,5,-30,13,-13,-31,-15,9,-4,11,23,4,-6,-20,-14,35,-23,-9,-14,-5,84,-5,5,-32,-11,-17,13,-17,-37,-27,-16,8,-17,55,-32,26,-57,-48,-18,3,-8,21,52,8,16,-31,-20,15,-26,-6,-18,19,77,18,41,-36,-18,22,4,-4,-5,12,-20,-17,-1,61,-24,-4,-30,-40,-11,0,-12,21,58,15,12,21,-7,12,-25,46,10,28,36,30,68,-17,-13,57,8,35,23,46,2,-54,-7,5,-27,-44,-9,-14,-8,32,-15,14,8,-16,-8,7,-8,12,-15,-30,4,-25,-16,-12,-8,9,-4,-4,-11,-8,-4,-17,-14,-25,-12,16,-1,-11,-26,21,-6,-6,-10,-13,-16,15,-2,1,31,11,3,-27,5,-5,4,3,-8,28,-10,-17,-13,-35,14,-26,-36,-27,-5,-26,-16,10,-8,-25,10,21,-7,15,-12,-18,-8,4,-12,19,-7,-40,-3,-22,32,6,-2,29,0,-10,22,-14,-38,-38,-49,-5,-43,-3,5,13,-24,-26,19,-2,-9,0,33,11,-16,38,-58,-1,-30,-23,-3,7,84,-2,4,-21,-3,12,17,18,-9,-2,-24,-30,9,41,-23,-35,-11,-17,11,-30,15,34,33,12,-14,12,-28,6,22,43,-26,24,45,26,24,-47,-5,33,30,24,-22,-1,-5,-22,6,21,-21,-5,-33,-1,-30,-9,5,33,22,9,19,-1,-9,6,17,16,-16,-24,-11,-31,-11,11,-13,-10,-5,-18,-6,-4,-10,-39,-1,12,17,5,18,12,-6,-8,-13,-10,6,13,10,-28,30,37,-14,17,-15,-11,12,-15,-9,3,-16,-9,-22,-17,9,5,-23,-37,0,-9,-9,-14,-28,-3,13,20,-11,-17,-8,5,-7,32,7,21,8,20,-11,-20,-10,-16,-7,28,26,2,-8,30,-9,13,-22,-25,-31,-21,4,-27,21,10,21,-15,1,-1,-19,13,-27,49,-21,-21,-11,-2,11,-1,33,2,-9,-18,18,-9,-6,19,-18,5,-11,-29,3,-21,17,-29,42,8,19,-13,30,-3,-19,20,-28,14,-31,-14,13,-12,-4,17,31,17,5,-31,26,39,12,-5,-37,-5,6,16,-5,-17,-8,-13,34,-4,-7,-30,35,4,-21,2,15,5,16,2,16,17,-2,-12,-9,-31,1,11,-10,4,2,3,-9,10,7,-30,-4,-6,14,-13,-12,-5,-2,1,1,-5,20,19,27,-4,12,5,-1,2,10,-12,23,-18,1,-8,17,19,-28,7,32,13,4,6,8,-33,-27,-14,9,6,6,5,-8,-16,28,8,16,-6,11,13,6,-8,-2,-11,1,-14,1,27,28,10,-18,12,28,6,-6,9,-20,-2,-4,1,10,-1,9,-4,-1,-6,-18,19,-10,16,31,-24,2,-20,10,-2,-18,-10,-9,16,6,12,6,2,-8,-2,-11,11,16,13,22,8,-8,-31,18,-6,23,-17,-21,20,-20,-11,16,-21,2,-34,-3,25,-2,0,-24,-33,-13,-13,0,-25,1,4,-8,13,-4,11,-2,0,-4,-21,-3,19,41,-16,-35,-1,-24,20,-5,-14,-13,-18,-10,-33,-19,-14,-21,-14,-14,-17,-22,-3,24,-4,-5,-24,-3,-23,2,-7,11,19,3,-6,19,-9,8,-2,-18,-12,0,-1,2,2,3,-20,-17,14,2,2,6,-9,-20,19,2,-16,14,-19,8,9,30,10,-17,12,13,13,8,-1,-11,6,-20,-1,22,-25,15,-10,-2,-6,-15,19,1,31,-1,-13,-7,12,-23,-18,-15,-6,14,16,3,30,-31,-6,1,16,-10,5,-9,11,-20,-11,12,7,-5,-18,-15,3,-8,11,-13,30,-5,4,-5,2,3,-19,15,-23,18,5,-6,18,-31,-26,-13,19,-10,12,-15,6,-31,-6,13,5,-29,10,-23,-20,8,6,-18,-6,7,28,-4,-3,-20,-21,-21,-14,15,48,-4,-8,-33,-16,6,10,-12,18,19,-7,0,25,-3,9,-6,-23,3,-21,5,-1,2,4,16,-20,-5,16,23,9,10,-10,-13,-48,7,12,-18,-3,14,-12,3,5,20,2,-11,-6,16,27,-12,8,-3,-20,-9,1,10,9,17,18,0,25,-4,6,13,-50,9,-11,17,16,-57,-7,14,23,10,16,-10,1,-9,-30,32,7,5,12,-9,-20,-22,3,-8,39,-3,12,19,27,-11,-14,10,-15,19,-20,-14,8,-39,-13,0,-7,3,32,4,-34,-21,-3,23,5,12,8,-22,1,-10,-2,-23,31,-13,-19,11,7,18,-45,3,-15,7,-31,-35,-17,-43,-51,-18,22,-4,21,22,-7,-32,-28,8,3,-15,2,-17,-9,-8,-16,-24,-3,23,11,-3,4,7,-38,-3,-30,22,19,-9,-24,37,-48,-5,-1,-11,-5,16,5,29,-8,1,40,14,-35,-9,-25,2,12,-18,1,-7,-3,-23,-2,9,3,2,-65,-5,-16,16,2,-47,1,3,19,-11,-19,23,-24,7,30,8,-5,-34,-15,-15,-30,-31,-5,-10,-1,-28,48,-17,11,-15,5,14,-61,-14,-23,4,-9,22,27,-7,19,0,12,-6,-30,-7,16,12,0,-24,-4,1,-22,-17,-30,-15,16,-45,63,-5,36,0,-23,11,-32,-13,32,-6,-2,8,62,-11,-8,1,9,0,-18,-7,-37,-1,26,-3,-27,4,-7,9,-34,-2,11,-36,20,8,24,-5,-54,-4,-22,0,-4,17,-10,-24,32,-21,-4,-5,22,13,0,-16,-2,33,28,-10,-8,12,8,7,-23,5,-2,-9,3,16,30,17,-25,-11,-28,25,16,-13,-19,22,-44,-28,3,-19,14,33,24,19,40,-6,3,14,-16,3,-43,32,14,10,-15,-12,18,-8,3,16,-9,12,-32,-4,6,5,38,29,19,-10,14,0,-30,19,-12,-6,68,36,-31,-11,2,-12,-25,-13,20,8,-24,-51,-18,-22,8,-22,-30,69,-25,-5,-44,-1,98,76,58,-26,8,0,4,-1,-10,-16,59,14,-9,-40,5,-10,-27,12,4,-15,2,-32,-2,11,30,18,-32,24,-47,-38,6,-11,38,1,32,-32,24,3,-5,13,-16,10,-8,-19,13,-26,-37,2,-36,5,-31,4,2,-28,14,38,32,7,-44,-13,-31,-15,30,8,-6,-56,-15,-32,14,6,-22,43,-23,9,-29,36,17,-9,-46,5,-10,13,-27,18,-37,-28,-12,23,25,9,-21,-28,-14,-3,52,7,-2,-36,-29,-30,26,1,7,27,7,13,38,16,-9,2,17,29,-34,18,-6,22,-23,9,14,28,-15,24,9,-5,-12,-26,-18,7,16,19,0,12,3,5,5,5,-16,-7,23,36,-35,18,27,15,-22,-10,-10,-14,-31,-9,-22,-6,-17,-25,-6,35,-6,-21,-40,15,45,3,-7,3,-28,17,11,-8,-7,-7,-25,20,15,-12,23,18,-31,-31,-7,-29,1,-7,2,-8,-15,21,7,10,-28,-31,-12,23,9,-44,-30,-8,-17,16,-27,30,1,13,-18,39,3,-14,12,5,-41,-11,-10,-5,1,3,4,36,2,20,3,12,-25,-6,46,-9,-25,7,-30,2,13,12,-22,24,-9,21,-27,62,-9,7,-16,-1,-7,26,6,9,-21,1,8,52,1,14,-16,21,-22,-12,61,50,-11,-30,-34,-5,34,16,-18,-3,3,12,-40,-22,-12,-48,17,-40,-19,-1,31,-4,-8,-7,-17,-2,-24,-5,-29,-9,-42,5,29,-25,-32,13,0,4,20,-8,-3,-32,12,18,-34,3,-12,-20,3,15,-1,27,-9,17,-1,-9,21,5,-27,-29,-6,-41,-50,-28,25,3,-23,-55,-4,1,53,-2,24,-21,-21,4,-81,4,-54,-16,10,38,16,11,-11,28,-32,-10,15,-5,-32,0,-3,-46,-29,-40,53,2,-41,-68,-44,-9,47,4,53,-37,-33,19,-51,10,-31,-24,0,36,53,22,-1,7,7,-14,39,-12,-21,5,-13,-38,-14,-23,15,29,-37,-43,-18,-14,48,2,43,-18,-13,4,-2,9,3,-9,25,34,63,20,-3,4,-1,-10,6,-9,-14,1,-24,-15,0,-7,58,30,3,-28,-16,-11,33,8,30,18,20,19,18,13,34,6,-12,-46,-4,22,22,21,5,55,23,-3,4,16,8,13,0,32,4,-37,0,34,-9,8,9,-11,-4,-7,20,17,2,-20,-6,-24,-16,-8,-38,19,2,14,6,6,7,34,-9,-27,1,-13,10,-11,24,-6,-29,-12,-13,10,-5,-12,34,-3,-22,24,-30,15,-26,12,9,65,-34,13,-13,16,0,-10,6,18,-7,-4,-18,1,-7,-25,90,16,-50,-67,-61,6,13,3,16,-13,-19,31,-49,16,-21,-7,-9,62,18,20,-11,29,-8,-9,21,-19,-13,16,-18,1,-38,-18,56,-7,-58,-22,-63,-10,8,-2,45,-31,-51,13,-29,19,-14,-23,-9,24,34,39,-15,9,19,-61,41,-15,-32,-15,6,26,-25,-41,5,-8,2,-45,-43,-6,38,5,47,-29,-28,2,41,5,31,-6,0,-27,14,-12,14,-5,29,34,1,-13,4,-5,-3,-8,0,20,42,-3,34,34,12,1,13,-10,-17,5,33,7,46,-30,-8,-20,2,-8,2,-26,8,5,-2,5,25,26,-9,-29,-5,-2,-1,9,5,-33,-3,4,-13,17,-1,-4,4,11,-2,-2,-6,8,-18,-12,10,23,-29,38,-23,-4,-13,9,6,7,-11,-8,-18,-14,0,-6,47,-14,-40,16,-40,7,-30,-3,20,12,8,5,-36,14,-31,-22,-26,20,-23,46,-19,-18,-14,-21,4,24,-8,17,-49,-19,-46,-24,75,-15,-58,-37,-43,-13,-10,-15,38,8,-21,12,-15,31,-36,-19,-21,26,-8,29,-3,13,22,0,72,-3,-14,-26,6,4,-17,-43,70,25,-37,-25,-17,-3,15,-6,39,-4,-28,-15,-5,-21,16,-13,-29,-23,22,17,2,21,2,2,-10,15,9,-21,21,-9,-22,17,19,21,11,-11,-7,6,5,9,-12,-15,10,0,9,-45,-12,-17,-20,-26,16,12,13,19,-1,13,13,17,-3,-40,5,2,10,9,-9,-15,-7,14,-17,17,-27,4,18,14,13,-26,-2,12,-18,7,-5,2,2,5,0,-8,-6,-28,-12,47,-5,-20,-15,-13,-3,-2,-9,-30,-37,4,-30,14,-6,-19,17,-7,51,-24,-22,-38,-18,-17,-38,-15,-24,15,-4,-12,-2,-3,-2,24,10,7,-36,-28,-29,-4,29,-6,-59,-26,-31,-1,-25,-11,12,1,20,-20,-16,22,1,-1,5,3,-50,31,12,3,8,0,-22,11,33,-17,-26,16,-22,-32,29,2,-31,-14,-29,14,-18,-5,27,-12,12,-2,-2,-24,-15,15,-39,-28,46,12,10,-18,1,58,-30,21,16,-12,13,-19,-28,6,26,-5,-3,25,10,19,-9,4,-12,-13,9,-3,11,-19,-3,6,-42,-20,17,16,-10,-7,-13,19,-15,3,1,-20,-5,-25,27,29,-15,-17,4,-10,3,22,0,2,-3,24,-4,-21,-6,-16,0,22,-6,9,16,16,5,-31,-3,-12,2,3,-2,22,-13,-31,34,9,2,-13,7,33,10,10,-13,-13,-5,12,53,-36,-3,-20,17,-16,-40,-36,0,0,-8,-9,-4,15,-2,-14,40,33,-13,-27,33,17,36,-25,-4,52,-7,-8,9,-9,4,27,10,-32,8,11,-3,-4,-6,-14,-39,4,3,12,40,19,-22,-26,36,6,-25,0,17,13,50,-9,5,41,-8,1,-5,9,3,14,33,5,-9,-10,4,-15,47,-49,-21,-15,-26,-15,33,-7,-10,-6,-32,13,-11,5,-1,-2,-62,22,-20,-31,-13,7,-14,-5,-24,5,37,23,-12,-27,22,10,34,-60,-12,7,-27,-14,16,18,-25,16,-19,-5,1,-3,-10,-5,-15,-23,-16,-27,-31,0,-9,-10,-4,-10,16,21,-3,0,11,15,-1,13,-25,-15,-14,12,-20,13,-80,13,1,20,-2,-16,6,1,-8,-24,-25,-5,-16,4,23,-8,9,31,21,-10,27,25,0,37,9,23,-32,31,19,13,-19,-30,-50,-6,41,39,-33,-16,37,-10,3,-16,3,1,-55,-26,-9,-4,16,46,-4,-36,9,33,45,8,62,2,40,-3,41,21,6,-25,49,8,38,-47,24,13,26,19,27,3,-19,20,-26,19,-22,11,4,-5,-1,13,-42,-11,17,9,-11,-25,-25,0,-10,-10,28,-24,41,-14,-35,9,-10,26,-16,-11,-21,25,15,8,23,6,16,-7,-38,4,14,23,-32,-14,-8,-10,-13,-40,-17,4,-5,-39,20,-2,-5,17,-30,-28,2,1,-12,-14,-13,7,-11,-14,4,7,-2,-17,5,-23,8,15,-50,-9,10,10,-44,11,-36,0,-23,-7,-5,-28,-57,-1,-10,7,-10,-36,-3,-37,-54,9,-54,-23,-33,10,2,-20,5,14,-1,-22,-26,21,6,4,-34,21,-28,-17,6,-19,-24,-47,-81,-28,-6,37,-35,-46,47,-13,-61,-35,-16,-26,-68,-27,-27,7,24,37,-32,-20,44,24,43,26,7,-2,30,5,8,16,-9,-15,21,-33,5,-14,-16,31,31,6,-11,-7,-16,-5,-56,12,30,36,-20,-3,-4,29,-6,-19,24,1,3,-4,13,34,7,19,-12,-14,56,-17,0,31,37,37,-10,24,3,7,12,20,54,-14,16,-4,1,-9,-5,26,3,30,-5,-19,15,22,22,-10,7,-14,-7,3,-7,30,-6,10,43,36,-29,12,-6,-5,-10,27,35,13,-11,-4,21,-15,-2,9,-43,10,-12,18,-4,26,1,3,-27,16,-29,-13,-39,19,16,19,-9,-16,10,0,4,36,-79,1,13,12,-12,-7,28,30,11,-39,-35,33,16,35,-9,36,-15,1,4,-6,-41,-22,-55,-34,14,29,-50,-58,50,26,-23,-13,-28,-32,-31,-34,-50,5,18,26,7,-28,-10,60,43,55,-8,9,25,8,-29,9,-25,-12,-9,-7,-6,9,-44,31,17,40,-13,-24,-35,-5,-21,-14,5,6,-8,5,-15,9,3,-29,-12,0,-5,-3,14,-15,-5,5,-25,2,4,-11,-19,16,22,-1,3,16,-10,-13,17,-13,27,-8,20,17,-21,-18,-25,10,-4,26,-1,-7,-4,17,16,-16,-2,-20,-21,-2,-17,11,-5,26,-2,-25,-39,-11,-19,-2,-11,0,0,6,-16,23,22,-10,12,18,-31,6,7,17,-15,2,-3,7,9,10,-45,22,-33,11,1,12,-48,-51,-1,2,-9,6,-41,-30,-24,5,-30,13,17,3,25,-22,-45,46,27,-9,-40,19,-24,4,13,6,-14,-6,-47,-9,15,-5,-43,-63,34,16,-14,-15,-12,-39,-34,-39,-49,12,12,23,-12,-1,-18,25,39,18,-24,30,-3,41,-1,5,-3,-24,-7,5,3,2,-49,13,-19,31,-15,-1,-26,-21,-19,-16,-36,-4,42,15,-21,-9,-2,-11,3,-15,2,31,11,-11,-15,5,-2,-22,45,18,-28,6,7,1,22,15,-23,-27,36,-6,15,4,-19,14,15,5,-14,4,-4,6,1,-23,5,11,2,-25,-13,-8,25,0,21,7,-10,26,-28,1,-1,-11,-30,20,17,-4,31,17,-19,0,55,-11,22,21,-1,-19,12,21,-10,27,-1,-1,8,4,4,12,-11,-21,-7,16,-52,-14,-4,-2,14,-1,-13,-14,15,12,-35,-12,16,-16,28,-1,-6,27,3,2,-9,-4,20,-16,12,14,-1,25,-6,-23,9,-23,-46,-42,29,9,-7,15,2,-20,-17,-13,-27,-11,0,20,9,8,38,5,11,-12,-5,16,18,0,33,-3,-4,12,46,2,25,-3,-29,18,-31,-9,36,0,-16,-3,-17,-3,4,-3,20,18,-15,-6,21,14,26,14,-20,-18,13,-35,7,-14,-4,46,-61,7,-16,-3,-26,-28,-10,-6,-26,26,29,24,8,-10,-35,-20,9,30,7,-7,10,-19,35,7,-22,-20,-20,-53,25,-6,1,20,-61,-32,-3,-12,6,-23,-45,-9,-66,26,55,44,12,-13,-1,-16,-13,-20,48,-25,33,26,21,9,-29,-18,-16,-28,12,-7,-1,-2,-49,3,8,1,20,-4,-37,12,-9,41,64,2,-17,5,12,-7,-24,26,57,-29,1,47,2,22,-28,-20,4,-7,9,16,-7,18,-19,11,-9,23,-1,-19,-40,25,8,6,17,-15,-48,16,12,-1,-32,1,18,-8,-25,1,-19,-29,-58,6,11,16,4,24,1,20,-22,49,-8,2,-22,-16,-6,18,-18,17,-9,-30,-49,5,10,14,-39,-16,-13,-12,15,22,40,15,-10,10,19,-8,5,-10,-29,20,-63,23,-1,-27,-10,-11,6,-15,22,-8,-1,3,30,6,-10,-14,2,31,-1,-1,10,-50,23,-31,-5,-23,-4,-46,3,-3,-18,-13,-57,-5,-12,6,9,-10,-32,13,-43,15,17,-15,-20,-11,-41,-11,-34,-15,13,-13,-33,-16,17,-23,-22,-21,-16,-55,-10,-1,-26,4,-40,-9,4,9,16,-32,-35,-3,-31,18,-5,-1,-48,15,-15,-9,-22,-4,-5,-13,-9,27,-9,-20,-27,-35,-7,-37,-4,4,-32,1,-29,7,-5,13,19,-22,-29,17,19,-16,-33,-23,-47,16,7,-1,-18,-17,0,-3,1,20,-18,-20,-24,-6,4,13,12,13,-12,26,-42,26,-9,-7,-11,-2,-2,31,18,8,-29,-23,-28,15,25,2,-14,-19,-5,10,-62,88,23,23,-16,67,4,26,26,-13,-4,21,0,8,-7,-34,-15,14,39,-28,88,-9,38,3,-4,-1,42,-17,36,17,-22,11,-46,3,3,-4,-17,30,-5,17,-8,15,5,17,-10,-5,-13,6,16,19,-4,-1,22,-3,4,-23,-49,-4,23,3,17,-13,-15,-7,-13,-23,3,-40,-33,4,-24,-30,5,15,18,-12,-21,-2,-5,-2,-17,9,-36,-5,-61,11,10,-68,-30,20,20,9,20,-12,-16,-5,-1,0,5,-28,-29,-41,-28,-28,20,-11,20,4,-30,-2,-17,-8,-9,26,-15,10,-14,-27,36,6,-19,7,-13,12,-2,-28,-2,0,3,9,18,-4,-11,-14,-27,-3,20,-4,27,55,-52,33,-15,30,-30,37,-15,29,10,-1,41,40,14,-9,-18,4,1,-19,31,27,-3,42,-9,17,-29,70,-8,35,-25,4,-14,6,7,26,-19,-29,-15,-26,6,1,38,1,-21,1,8,18,14,2,35,7,-2,31,-39,11,-9,15,-12,55,-6,53,-2,4,-28,-14,6,22,-22,2,-3,-1,-20,4,47,23,-64,-34,4,13,44,10,31,-6,5,11,-6,-18,-30,-23,-5,20,-12,12,4,22,3,9,10,27,-8,-21,-26,22,13,-13,12,11,-19,-28,7,25,7,18,14,-13,-25,-9,19,-10,12,-27,-12,-32,-16,-23,16,-7,27,11,-7,-16,1,-16,-22,20,-6,5,-61,10,32,6,16,13,-24,6,-3,-18,10,-10,2,-12,26,11,-17,-25,-29,-26,3,-6,20,21,-3,10,25,32,-23,-2,-13,26,14,22,3,24,7,-12,-29,-3,-10,19,31,33,-13,-21,-20,-24,-33,20,-3,21,-4,-5,29,35,25,3,-3,-23,19,-16,-5,1,19,5,-4,31,31,29,14,23,3,-12,-15,14,5,32,-21,16,-5,50,10,30,-3,-33,-17,-11,10,7,-3,-18,1,4,10,-6,29,29,-4,5,16,11,35,17,20,-9,15,2,0,5,-27,2,-1,40,4,29,14,-6,-21,-7,12,15,3,-12,-8,6,17,-19,1,-3,-15,20,11,3,28,26,6,16,-34,1,1,-5,8,3,-14,-35,5,0,29,0,0,-7,-16,13,-2,-14,-14,9,16,-9,-25,-18,11,8,-14,-25,-5,6,22,-13,-14,-7,-25,-21,43,-5,-38,-20,-13,-4,13,10,37,6,11,-10,8,7,-9,-11,3,-2,-10,17,2,1,-14,-26,42,-11,-6,9,11}\n\n#define CONV2_BIAS {55,50,34,43,-37,35,-21,10,35,-53,-76,7,14,-1,92,20}\n\n#define CONV3_WT {15,10,3,1,-20,-11,5,-18,-9,-1,-4,-11,-5,-19,-26,-15,13,5,1,7,6,16,1,-20,3,35,0,-2,8,12,-41,-5,-20,4,6,3,-3,0,-28,-13,6,16,-4,-4,1,8,17,2,-4,-10,-9,-11,3,-2,-4,-9,-21,-10,-18,2,-6,-18,27,5,2,5,-5,-3,-4,-2,-16,17,1,-17,-13,-12,-1,-18,10,6,7,-4,-1,7,1,-4,7,-8,0,4,12,-4,-5,-13,8,-17,0,-22,-2,5,12,20,3,-6,4,10,16,4,-3,-7,0,-15,-17,-1,14,25,2,3,-15,-11,1,-4,-2,-14,-2,5,12,-2,5,-13,8,-1,-4,0,-6,12,-3,-22,-20,7,3,11,8,6,6,2,10,7,-5,-6,-6,18,-2,-23,2,1,-12,-9,-3,-2,0,-3,-9,4,-16,-3,-7,-23,-10,-8,-1,-26,-3,9,30,-16,-11,-13,-9,-11,-14,5,5,-9,-16,1,10,-5,-18,-14,31,-6,-1,1,5,-7,1,2,-17,3,8,1,2,-3,-4,3,-6,7,23,-10,-6,-3,-9,-9,-38,14,-3,9,-10,-3,17,13,-6,12,22,8,8,-6,9,9,-6,13,-1,-11,12,-2,-4,-3,-2,17,2,-8,-15,-2,-9,-10,-9,-19,2,-11,6,-5,-5,8,28,2,-23,12,-19,-12,-33,2,-8,-17,-3,-15,-1,23,-18,9,23,2,-9,18,-17,-29,17,9,21,6,13,3,13,32,-4,0,-7,10,-2,-2,-10,-5,-4,-5,8,-1,-1,-9,-20,11,1,4,-10,1,-1,-6,-24,-1,-6,-2,11,6,7,-9,2,8,-6,-8,-19,11,6,-10,5,-5,0,-14,18,-11,13,5,3,-7,0,6,-21,4,2,12,-14,3,-14,0,-10,-6,10,0,-21,17,3,19,-19,-2,13,21,-10,-11,-5,-18,-10,6,25,1,-19,0,2,-11,-36,-13,11,-24,4,-16,-3,-28,0,1,-9,-6,-3,-1,6,-11,-19,3,5,-6,-7,16,-22,-19,-11,-20,6,-2,-1,-12,24,3,-27,-2,-15,-18,-2,-3,5,-12,-8,-4,-23,1,5,19,-30,12,-5,-4,-1,10,-1,13,2,-4,-12,6,-3,2,13,5,-18,-3,2,1,4,20,13,8,22,-6,-3,8,-12,-10,-28,12,-12,-5,5,-12,-6,13,1,-17,-32,-11,20,-14,-9,-6,-11,-1,-8,-2,-13,-10,-1,31,-12,21,-32,-2,-14,-1,0,11,-1,-1,-13,16,-10,-8,-10,20,-2,1,3,-7,-17,-1,-12,-4,-14,-16,-20,-1,-2,-4,-3,11,16,6,-12,-11,3,0,2,-1,-2,-18,-21,-4,5,-9,12,16,7,21,9,13,-4,2,4,0,-21,-17,-3,2,-10,-24,-10,7,3,-15,3,-11,1,1,5,-8,0,-7,3,0,-3,2,0,31,-5,7,0,6,-13,-7,11,-15,-1,-13,2,13,-2,8,25,-6,-1,-16,-3,7,3,-21,10,0,-14,13,17,7,0,-7,14,10,-1,-6,-8,-14,-6,-16,4,-26,-11,-5,-1,-14,15,10,26,-1,-27,-22,6,23,-16,-14,-1,-12,-26,-21,-3,-5,1,-9,-13,-9,-9,-12,0,-6,-3,-6,-9,-2,-10,-3,-13,5,-4,4,-2,1,-3,1,-3,-13,6,-5,3,-18,-11,-6,-19,-2,-13,12,4,-10,23,-8,-23,15,10,-3,18,4,-5,2,5,10,1,-16,15,-14,2,33,-5,-4,5,-11,-19,-4,6,5,16,-14,20,12,6,-14,-24,-29,-11,1,16,-6,11,-8,-25,7,-9,-6,7,20,-19,-3,-7,-19,2,-8,15,-7,-5,2,-11,-11,-6,-4,4,-7,-1,-4,15,-2,-3,-2,7,-9,-16,-6,-4,-19,5,-6,6,12,14,-2,-3,-1,17,3,-11,-5,25,4,15,-7,8,7,1,-19,9,-32,19,17,6,4,8,2,-5,29,28,-9,14,14,-13,-3,5,-9,-20,-17,4,-12,0,-4,-2,14,9,5,9,-28,-15,8,-8,11,-16,-34,8,-3,-2,4,8,-20,-1,-11,-19,-14,-1,-14,-5,-3,25,-16,12,13,14,22,6,-4,1,-12,3,-15,3,-14,-12,-5,23,4,-13,3,-22,19,8,-3,-29,9,-12,-21,-12,-18,-15,-9,8,-6,1,-5,-21,7,-2,1,3,-9,-16,27,-11,-19,8,0,0,-1,-2,-9,-28,-25,-24,2,-7,-5,-20,1,-27,-15,2,8,-13,-1,-1,3,-21,-6,-10,9,4,15,-15,12,-12,-10,-6,-15,2,0,5,0,-2,-18,4,-8,-3,4,1,-9,-1,16,-8,20,11,7,12,-4,-34,11,-21,-6,-9,-12,-18,-39,7,14,-14,-1,-11,4,4,-5,-21,2,-7,9,-5,-9,20,31,17,-18,-14,-1,-6,1,-6,-14,-21,-11,-6,3,8,-4,5,26,2,-18,0,19,0,4,3,-8,2,-10,-6,13,7,-3,3,16,-7,-11,9,-11,19,-9,-6,-5,2,-1,-1,-8,-10,13,7,-9,-12,-2,0,24,10,-7,13,13,14,19,-6,0,-19,-14,10,-21,15,-1,-11,-3,21,0,1,23,-37,1,3,-9,0,13,10,13,31,-29,-3,-1,9,-2,-8,-11,-11,-6,-5,-17,15,-20,0,11,7,12,6,13,0,-12,-8,-13,-2,-3,-5,-1,-10,-6,4,6,0,8,-8,-7,10,-5,-6,-2,-23,-4,-4,-13,3,16,-1,16,5,-3,-12,9,-5,-2,11,-16,13,15,7,-12,0,-4,-18,-9,-7,4,-25,-6,-6,6,-19,-5,13,9,-1,-5,3,4,-7,16,5,-8,-6,3,5,1,-6,4,14,-4,14,2,2,-10,13,23,7,3,5,11,3,-13,-4,9,12,-6,-7,-2,-11,-3,0,-6,2,-2,23,8,-4,-13,-1,-7,4,-9,4,9,-8,-3,-8,5,-12,-14,-15,-13,-1,3,14,1,-9,4,-2,-8,-2,18,-5,-5,10,-4,-2,-8,12,30,-10,17,1,-10,-1,-15,-17,17,6,-3,-4,0,1,-13,0,2,-14,3,-4,-18,6,-12,9,12,-12,3,13,5,-6,-4,-7,2,-17,11,-7,3,-7,-2,12,0,-9,21,1,9,24,13,11,-2,-18,2,-3,-1,-14,-13,-14,2,-1,0,-2,19,-8,-3,-9,6,-20,-9,-5,-5,-4,-9,-17,-4,-4,3,-3,14,11,3,1,6,-20,12,-9,-16,-12,1,4,-6,-7,6,3,-5,0,-14,-2,20,-12,-2,-29,-15,-10,6,14,-17,1,-23,4,-2,-5,0,3,5,4,12,-20,1,6,-2,-1,1,-7,2,-2,-23,0,0,3,8,0,1,-20,17,-16,-7,-12,-2,5,1,-6,-15,6,-8,3,5,-14,-11,-2,3,-1,7,-2,13,-13,4,6,21,-18,-1,9,-7,-12,2,-12,-9,-6,1,10,5,-12,-5,5,-1,-18,-15,-13,19,1,10,-21,1,-8,8,-2,-5,-13,-8,9,0,-17,-11,-9,0,6,13,-4,10,0,-19,0,15,-15,-3,15,-7,-9,-8,-3,-5,2,5,-8,17,-5,1,-11,3,-10,10,8,4,11,-1,4,-12,-10,-11,9,-1,2,-6,-3,16,2,14,-15,2,0,0,8,-3,-20,-16,13,-1,-14,2,8,4,13,5,2,14,7,-26,11,2,-1,-13,-5,2,-9,1,-9,-3,-6,-2,19,-2,-26,0,8,-19,14,2,-8,2,-13,-16,-1,2,-12,-8,32,9,-23,-3,15,19,-22,2,25,-4,-1,-16,10,8,-18,4,23,8,4,8,-9,-12,-7,2,21,-4,3,-13,-13,-10,-12,-2,-13,-20,11,5,-8,8,-2,14,13,-5,8,-2,-10,-16,-4,-2,7,-7,12,-13,-5,10,11,18,10,6,12,-9,-12,17,15,3,13,7,-26,-13,16,-8,18,-9,1,8,-7,-3,4,6,11,-19,10,6,-4,-10,13,5,-16,-2,32,-2,-11,-2,-4,15,-30,-5,13,17,-14,9,-4,10,-30,-14,16,-17,0,-11,-8,-37,-5,9,-36,-6,-8,11,3,18,-11,-6,-1,-8,5,-10,0,-9,-7,4,-20,-7,-1,16,-5,-8,-3,-10,-7,-5,9,-2,-15,-11,2,8,-9,-18,16,7,-13,-1,0,10,-12,-12,13,21,-20,7,8,-17,-6,-9,15,9,11,-7,-17,-4,-11,-34,-5,0,-19,9,-15,-28,-10,0,-13,13,19,-7,-10,-10,-4,-8,4,-7,-15,18,18,10,-27,-9,-14,3,7,20,-5,1,-10,10,-3,-16,-1,2,14,-18,-2,-3,-2,5,8,12,-7,7,-9,14,1,-12,2,7,-12,4,-6,-7,-21,-3,15,0,-14,-9,-11,-11,3,-7,0,-4,-22,-15,2,-8,-25,11,15,6,8,2,4,-7,5,-2,-4,-13,-13,-17,-3,9,-9,-5,3,-5,-4,-1,-9,-7,3,-29,-1,0,-9,6,9,6,-13,-2,-5,10,0,4,-9,-3,12,-17,-3,-5,2,-3,13,2,-5,-6,-2,7,-8,9,5,5,-2,-15,-6,0,-9,-21,9,13,-13,-19,2,4,-2,-9,2,-12,4,-21,15,2,-12,0,-2,-17,-1,11,-7,2,27,-16,16,0,22,-18,-2,-8,-19,-16,-6,23,-12,-20,5,-24,-15,-3,-8,7,-1,-6,-1,-28,-6,0,11,-20,-1,-14,8,-8,-3,11,-4,-8,2,-15,-8,7,3,8,18,-20,-6,-17,3,-25,-6,-11,-15,-7,-12,20,3,0,-9,-31,20,-11,-16,-14,5,-5,-19,-10,-20,-11,-10,17,4,-18,-4,-5,-12,-6,-13,-11,-4,-8,1,-28,7,7,-7,16,1,-7,2,3,1,19,25,-10,12,-13,16,2,11,7,1,-2,5,8,-9,-7,0,3,27,-2,-11,-3,2,8,23,4,-7,-7,-3,-5,6,1,3,-1,12,8,3,-15,-2,0,-7,1,8,9,18,26,10,13,1,-7,17,2,-13,-2,17,-19,-7,-7,0,-4,6,-3,-5,-9,-12,-13,7,-11,-2,-11,5,-1,15,-12,-24,7,-13,0,-1,24,4,-21,-4,27,16,-9,-2,5,-7,-11,-19,-6,-7,33,2,6,9,-15,15,11,-16,-3,-26,13,-7,5,-15,-12,13,-9,-7,-1,3,-10,8,18,-2,-14,0,0,-5,-2,15,6,-4,15,-18,23,-2,-9,20,8,-21,-16,0,-8,11,-28,11,-8,2,-2,-11,6,-18,-11,-1,4,-16,-7,2,11,-15,-26,11,3,-20,-1,-14,14,-6,-8,-4,-16,3,6,13,-4,9,9,3,-14,-13,-11,13,5,0,-4,9,4,-13,10,-1,-19,-1,-5,-6,-12,-14,-23,-1,-19,-2,2,19,38,-8,-18,11,-2,-7,-12,14,-7,-18,-1,6,3,4,-12,-5,-20,3,8,4,4,-22,-5,-20,-2,10,-1,-3,-7,3,-2,9,-23,3,13,20,-3,19,-18,-29,-12,-4,-6,7,-2,-18,-8,2,-13,4,3,10,0,-1,15,5,-8,-5,2,14,18,4,-1,5,4,13,2,-1,-11,-2,20,16,12,3,-5,-16,1,10,3,9,13,3,-14,18,8,7,-1,8,-3,-22,7,-28,-7,8,19,-19,-12,2,3,-9,-1,13,2,9,-9,-4,-18,-19,0,-6,-1,0,-14,5,16,-14,-23,-14,-29,-12,-2,17,-11,-1,28,21,6,1,-2,5,1,-10,6,17,8,-2,-16,-11,0,-6,-1,-2,-18,6,1,0,-5,-3,5,-3,1,9,-16,-12,-13,-13,-7,-11,-11,4,26,5,-5,-4,1,-6,2,13,2,-21,-9,-12,-7,-24,-26,5,28,-8,-15,10,-23,-7,8,20,35,-4,-12,-19,-16,-21,-16,-4,-7,-16,10,9,9,-24,0,-4,8,-1,-5,1,15,8,-26,-23,0,2,1,-17,3,7,16,-14,1,-9,-7,-10,-22,8,-4,-6,-18,-14,-7,-19,3,-10,4,13,-4,-2,-2,-10,-24,-1,-18,3,-16,-7,2,-2,7,-12,1,-3,-32,-6,2,1,-31,-6,-24,-2,15,-13,-6,11,-6,9,2,26,14,1,9,-17,-22,-11,-16,5,-6,4,3,15,32,0,17,2,0,3,32,5,-8,-16,13,-1,-13,7,0,-8,-12,-18,-2,-22,-11,8,-11,-5,-17,-2,7,-9,-22,-4,-10,-6,-8,-4,1,8,4,25,-6,13,-3,-8,1,-10,-25,-5,-5,-10,-13,-2,19,-11,-7,10,9,-13,-19,-4,4,1,-6,5,1,-8,-7,8,4,-11,2,3,14,-3,-15,-18,14,-6,-4,24,-11,-4,1,-13,-8,-7,13,2,2,30,1,-18,32,-18,-15,24,6,5,-2,-24,2,-21,-1,8,-23,-3,21,-5,-5,-8,-9,7,-9,-13,-12,-17,-13,-2,5,21,6,5,10,-12,-16,-1,29,21,3,-7,-31,4,-25,-6,18,-8,10,-7,-2,-14,-19,3,26,33,10,0,-10,5,-11,-20,-4,-9,-14,10,-16,-12,6,21,3,10,-14,-20,4,-29,12,-8,9,1,29,-13,-4,9,-12,-20,-10,-1,-6,18,7,-16,-1,-25,14,-10,1,-22,6,8,-10,-27,-13,-8,-11,2,-1,1,13,-15,-1,15,-5,8,3,-8,3,-3,7,6,2,-3,-18,17,-15,-9,-21,0,0,18,-16,-22,-9,-9,-9,9,-16,-12,-17,25,-11,-15,-9,11,-21,21,-14,-9,7,-12,-24,-7,-5,-2,0,11,27,-12,0,25,17,2,8,23,-6,13,0,-10,8,-12,3,-25,10,12,2,-29,5,-6,-18,16,6,-9,2,-1,17,-9,-1,0,14,-2,-1,-2,-10,0,-16,-19,-15,6,18,-12,19,5,-10,43,-1,4,6,-8,-6,18,-11,6,-12,6,5,17,-34,-17,-3,-6,-17,-4,4,-1,3,12,5,41,10,-16,-16,-15,8,-6,-8,-27,6,-14,-14,-11,-13,-10,22,11,2,4,-5,-7,-2,-11,-10,-19,0,14,-8,-10,-1,-1,-7,10,6,-20,-11,-8,13,-2,-17,2,-11,-8,4,1,5,-10,-18,3,-9,-1,-10,-13,-4,15,2,11,8,-11,4,0,-17,19,0,3,-18,16,-10,1,-14,-5,-3,-10,7,-11,0,-9,5,-4,-1,16,4,-2,-24,6,9,-18,-22,-5,-9,1,-9,-3,-14,-7,-3,-16,18,37,-7,1,0,-3,-4,-1,2,12,-7,-3,-11,4,1,11,-9,-1,16,5,24,10,6,-5,1,-1,6,-10,-11,-7,-1,6,3,12,-1,2,5,-17,-1,6,13,8,-4,-11,-24,0,-2,0,1,16,10,17,6,-6,-4,8,-1,16,-8,-10,-6,-5,-9,14,1,-22,-13,6,1,-11,-18,1,4,10,-1,0,-1,-25,-4,-6,-8,-2,5,-2,20,9,1,-18,22,-9,-8,11,-25,1,5,5,-12,7,5,-15,15,-4,15,1,3,0,-17,1,-21,-11,-4,4,6,-4,4,-2,-12,-18,-3,-9,3,-10,-23,-8,-14,-1,-14,14,-7,4,-7,-4,4,-19,-14,-13,-9,-2,0,1,-2,-11,-5,8,1,15,-6,-2,-1,-13,-12,-9,18,-2,-8,-1,0,8,12,-4,-8,-23,-8,0,6,-4,-8,-4,32,-28,-3,1,-9,6,-24,-8,-11,12,22,7,1,6,-4,1,11,3,-6,-6,-22,14,1,14,-3,1,6,-11,-1,-8,-9,-1,0,-2,-14,-13,-7,9,-4,9,-15,12,13,-22,6,-1,-21,-2,-25,9,-7,-13,-11,16,9,4,20,12,-8,-25,12,0,-6,-12,14,6,1,9,-4,1,4,-3,-2,-21,-7,13,-1,-13,3,5,-1,-11,2,-16,-15,-6,-35,3,-11,0,11,47,-1,-13,3,7,-15,-2,-1,-9,-25,6,-12,-10,-15,-6,6,19,-1,-4,-15,7,-13,0,-4,2,1,4,15,-24,-23,18,22,-3,0,8,-1,5,-19,22,1,15,8,12,10,-1,-5,-5,14,-31,18,-8,10,-19,-17,1,2,-3,23,-6,-8,7,-3,-3,-2,1,-14,-16,12,-3,-14,0,0,-7,27,-6,-15,-8,13,-1,-23,47,-19,-15,13,3,-5,4,-4,-2,3,9,-34,-2,1,7,-22,20,-14,0,-2,26,-5,-17,-4,-5,-5,-7,10,-16,-28,13,-7,8,-13,-12,11,0,1,-14,-13,4,20,-9,2,3,-14,-5,-4,-10,1,-5,32,-26,12,-13,-9,-23,6,-1,-10,5,-2,-4,3,-25,-5,-2,-6,-5,17,23,0,-6,22,-9,29,-8,7,-14,-5,-9,1,-8,-13,28,1,6,-5,6,-1,-6,-20,15,-4,-2,-5,-25,-6,-19,-14,31,-10,-17,4,-6,-7,12,-2,-8,-7,-5,-7,-12,-13,-9,5,1,4,-4,-13,17,6,2,-1,3,3,-23,12,-8,19,-5,-7,-9,17,-8,-4,-2,3,-1,-13,-30,25,-17,-25,9,1,-1,2,-31,6,-5,-21,-15,2,1,-11,4,20,-10,-17,5,-3,-2,6,3,12,0,-11,13,12,0,-9,-1,-13,11,0,-2,-17,5,0,-15,8,5,-6,-5,-3,4,7,13,15,5,-10,0,-14,-10,-7,-9,-9,7,-4,-15,-11,12,-7,-2,13,-28,-7,-14,-2,-8,16,-9,-3,-8,16,-4,14,1,-12,1,-10,1,-7,-16,-7,0,7,-25,13,5,-17,-10,-2,-11,27,3,11,-2,-2,2,10,4,-11,-9,-6,3,-18,22,15,-4,-2,-9,-7,-2,1,-5,-15,-3,11,-20,2,6,-2,4,-6,4,1,-2,13,-9,2,-5,-13,6,1,0,-3,16,12,-13,0,10,-18,6,-12,-14,0,6,18,30,-3,-19,-16,0,21,-15,-1,-4,-4,8,-10,18,5,-2,-20,-6,-8,8,-8,21,0,-16,-19,6,17,-4,-22,24,-13,4,-8,4,-27,14,8,5,-11,0,-10,4,1,21,16,1,0,6,-23,-5,-10,-25,-17,16,-12,15,-11,9,-2,29,13,3,21,2,-34,-1,-11,1,-14,13,-1,-19,-7,-3,-9,-14,-14,-5,17,22,-24,17,12,-12,-23,0,-3,-8,-3,-3,5,-9,-24,-16,7,-19,5,-7,5,-2,-11,-8,1,-10,17,18,4,6,-6,7,9,-12,20,-10,-18,6,-2,4,0,-15,-2,0,15,6,-8,-20,6,-4,-3,-7,-5,-10,0,-4,-19,-10,-22,4,-2,20,7,-4,-15,-2,-7,-1,6,8,1,-15,-8,-17,-9,-9,-1,4,-3,7,-9,8,-7,-11,2,-9,-4,-5,-17,4,15,-2,24,21,10,-1,-2,-13,9,7,-4,-24,-25,-17,6,12,21,6,13,-18,8,1,-6,-9,8,-26,-14,-9,-28,6,22,19,4,-6,13,-17,5,-11,12,-7,-21,-2,-21,-5,-7,21,-3,-17,-11,-13,1,-15,2,-6,-22,-1,-8,-7,-1,8,-6,14,-3,-17,-2,-10,18,9,-6,-15,-15,3,-5,-17,1,3,-10,10,-7,-4,27,-1,-1,22,16,4,4,9,-13,-3,3,7,-6,-13,-43,0,3,21,-10,-3,-2,13,2,-11,-12,2,-11,-19,-12,-5,-10,-18,15,11,-6,-10,-7,-4,-17,8,14,-4,-4,-16,-10,-26,-19,-11,-9,-8,15,11,-11,-5,-19,-4,9,4,8,10,8,14,-10,4,16,2,17,13,-13,-2,2,18,12,1,6,3,10,18,4,-14,8,-2,13,5,-3,-9,-20,37,-16,-19,18,2,-15,-21,5,-1,-9,3,-12,-11,-2,16,-2,1,-12,-6,-3,-3,-27,-10,-16,16,22,-13,22,16,-17,-8,-23,-1,7,-15,9,-6,5,-22,-6,15,3,-7,-1,26,9,-3,-6,-5,8,4,8,-11,-5,2,-14,7,7,15,-6,19,14,9,-5,8,9,0,2,11,-4,15,-8,-4,4,-4,-4,-8,-5,-5,-4,-20,-9,-5,-40,-40,-20,-3,60,-16,-24,-3,-25,-23,-20,-4,4,-10,-5,-1,2,-17,-18,-19,35,25,-32,4,20,-6,-25,-25,-10,2,-2,2,2,1,8,-25,-1,12,-6,-15,11,-7,-18,-5,11,10,-10,19,-8,7,-13,-6,-13,-1,-8,1,0,-23,1,5,5,3,8,6,-6,1,-7,15,-7,-8,1,-1,-2,-9,-2,-6,0,-25,-4,-7,-13,-3,-4,-13,68,-31,-6,-7,-27,-10,7,-18,12,-1,12,-11,16,-12,20,-7,-4,-9,7,14,-14,-10,3,-10,-9,4,15,-22,3,-2,-1,-25,-26,0,8,-12,-19,-15,1,7,12,3,-21,9,-3,3,6,-16,-11,-1,-8,0,-4,-2,1,-2,9,1,-2,-8,6,-12,-12,-4,-7,0,6,-10,7,-6,5,2,6,15,-6,-2,-7,-8,-7,-26,5,-23,2,11,-25,-15,5,-26,8,-8,-10,5,3,4,22,-7,-30,0,16,10,-16,5,-7,-13,-8,-8,-2,-7,17,9,14,2,-28,6,-2,0,16,8,9,5,-10,3,-7,1,9,-2,14,28,-11,-2,-6,7,19,6,-7,8,-2,14,9,-14,5,-6,-8,22,-12,5,1,-4,6,14,4,3,1,18,10,-6,-8,-24,-5,-2,-4,-5,-15,-4,-5,-1,-7,-14,-11,15,7,2,-2,-7,2,-3,13,3,-12,-11,-1,10,-9,-28,2,12,-18,-3,-12,0,-4,-17,-6,-5,14,2,-16,-1,-19,-7,2,-16,-8,6,-4,14,-8,-7,-15,-6,5,36,-8,1,-20,11,5,1,-2,9,-1,-5,6,-21,-1,-7,9,16,-5,13,1,1,-14,-17,9,23,-10,14,-6,-4,-13,-9,-16,-21,-13,15,-21,-3,-19,3,25,8,-14,9,1,-9,-12,3,8,-3,-8,23,-5,-13,-16,-11,-6,-14,-15,-10,12,-13,-3,-10,19,-9,-18,-11,-9,-8,-7,-9,-12,-3,-10,-2,-22,-6,4,3,-10,3,-4,-1,-23,6,-2,-7,14,-6,14,10,-17,-13,-13,-13,-7,-11,-4,-6,-5,8,-12,26,-22,0,-9,9,-10,-27,-13,-4,3,0,11,-11,-1,25,0,24,-2,-5,-19,27,13,-15,-11,1,38,5,-3,8,-8,5,-14,2,-19,-6,0,-8,39,-10,-13,11,2,19,-11,26,-18,-12,0,4,-20,-4,-10,-16,-10,-17,9,-6,-3,-7,-1,-4,-19,0,-1,15,4,9,8,5,-2,-2,-12,-3,-9,-14,-4,-4,0,-9,-3,4,-7,-20,-5,12,5,-13,10,-3,8,2,24,-8,-10,-6,6,-20,11,-15,-9,21,1,-27,27,-1,-12,-17,10,-1,-10,-4,16,-7,9,2,22,-3,1,18,10,24,4,-1,-8,1,15,-7,-9,-13,-4,1,10,-8,-8,-3,12,3,-9,1,-3,-11,13,0,15,2,3,-6,0,2,-1,11,22,13,-13,-25,21,-1,-7,13,3,-9,7,-15,5,-29,-4,-37,-7,-18,-2,11,-2,17,15,-13,10,-18,4,-18,-8,-6,11,-1,-2,-17,2,10,-6,-21,2,-11,1,17,-4,-12,-12,-4,5,16,-9,18,4,1,8,6,-7,-6,-7,6,7,4,-1,-1,2,1,6,20,10,-26,2,-5,-3,29,-4,12,7,11,5,17,7,0,-9,-13,2,0,-11,-10,-16,-15,-1,9,-5,13,3,16,1,13,-1,-1,8,10,4,-12,-13,6,5,9,-11,-14,8,-3,12,9,2,-12,8,3,-2,-9,-12,-11,-2,-9,18,-22,11,-10,5,1,4,-10,-20,8,-1,-13,1,-10,-4,-7,-6,-12,4,-5,-12,12,-13,-25,21,-10,-15,9,-5,20,-2,14,-19,-9,7,-12,-2,-10,-5,-39,13,2,-2,-16,7,-15,-11,-6,-4,3,0,-15,-7,-7,-10,-11,-18,-5,-9,-21,-12,2,5,-9,6,11,-8,-9,5,-11,3,-4,-10,0,6,-21,5,8,19,4,-18,27,-25,-6,15,-4,-17,-23,-14,-7,-4,-10,13,-15,4,6,-5,1,-18,-8,-7,2,-10,-1,6,10,-1,-6,-22,3,2,5,-16,-11,-4,0,1,-10,-3,23,-14,-6,7,-30,3,20,-15,3,16,-22,5,-16,-7,-8,7,9,3,-20,-8,-14,4,4,-4,-15,22,-1,-11,-5,6,-5,4,9,12,12,7,-13,22,0,5,-3,17,11,6,-14,-5,0,-3,-12,-13,1,3,24,18,8,-19,13,-8,2,1,-20,-11,-1,26,26,-16,6,1,5,-8,-7,-2,1,17,-17,-33,8,16,-30,16,89,-24,13,8,-16,-3,8,16,14,15,-24,-14,3,-16,-9,4,-6,9,-1,9,1,-13,3,-4,-5,20,-9,5,16,-9,-10,0,-1,16,5,5,-5,-19,-8,-4,-8,11,7,14,39,-9,14,-13,-14,-5,12,-1,13,-5,2,-16,6,-10,-14,23,-17,1,3,-2,-18,-13,-8,-20,18,-2,-19,16,-1,5,-12,0,0,24,-19,-26,11,0,-12,8,-3,-13,-9,0,8,-13,3,10,15,-3,12,2,-3,-2,19,3,-9,15,2,4,-4,-3,2,4,-11,4,-2,1,-5,-5,7,-6,-1,4,-1,-2,-8,-10,-14,-6,1,-8,11,-10,-9,-17,1,-3,-16,-8,0,15,4,-13,4,6,-23,8,3,9,-19,-6,-6,1,-9,1,-11,11,4,-7,-3,-3,-6,6,-14,18,-6,-1,0,-3,-4,4,4,-6,-12,8,6,-17,0,-8,-5,-3,-2,-15,-6,-8,8,4,-4,-20,6,-5,5,0,0,-15,-6,-1,-10,-7,-12,-10,15,-7,-23,-36,-5,-9,19,19,-5,-14,-13,-11,21,-15,-21,-21,-16,6,5,0,-10,2,11,16,-4,-16,-11,-1,6,-5,-10,-2,-15,-11,18,2,5,1,-3,5,-1,-6,2,9,0,-17,7,-16,6,-16,-15,6,20,2,-2,-17,-2,12,-9,1,11,-28,-4,4,-11,7,-8,-4,-2,1,-2,-7,1,11,4,0,-4,1,-14,-3,13,4,-9,-23,17,-10,-5,-23,1,4,-8,3,2,0,-2,9,16,1,20,-12,8,-11,-2,1,-3,6,-8,-8,12,-13,4,-5,5,4,3,-10,7,-4,-2,10,12,10,-4,0,34,-7,17,7,15,0,-9,16,0,-8,-12,-2,-6,-7,-7,23,-8,-25,-19,15,-33,-5,3,6,4,-9,1,-11,-5,-6,-2,11,-8,-4,-31,11,0,-16,-1,30,-7,-10,-9,-22,-15,-9,1,-2,-5,30,-23,13,1,2,15,5,-1,4,-17,-11,2,7,-9,10,-2,2,-5,-9,-11,-17,-2,-1,-2,14,-2,-7,-6,-4,-12,3,16,-1,-1,2,-1,-17,9,-24,4,-12,-22,1,-5,-28,-29,18,-12,9,-11,7,-25,3,-1,-28,-3,-13,-7,-12,1,-22,-11,-7,-15,1,-24,13,-9,-19,13,20,-18,-13,1,-22,-9,-22,-4,-32,-22,45,-9,14,-6,-3,-5,31,-4,-13,-12,-24,-1,-6,9,0,-11,-9,-1,7,-2,-3,-5,15,-1,-8,-13,-16,-3,0,-3,-6,-5,-6,-8,-8,-13,-9,31,-8,11,-8,-16,5,-11,-4,7,28,23,13,16,26,-22,11,6,-13,-1,-5,6,-8,-2,-15,-7,-8,16,10,-4,4,-24,3,15,-23,7,-9,22,-5,7,0,18,-24,-12,12,-4,7,-4,4,1,-23,3,-12,-5,-6,0,-1,31,-16,10,0,7,11,19,-18,-4,0,10,-4,-19,-2,-18,6,7,16,3,-9,-5,10,3,0,-10,18,2,8,-10,-13,-15,-6,-2,1,8,6,0,-2,-3,-10,23,6,-5,-2,-1,2,23,0,2,-15,-9,-3,-5,10,-20,4,-4,-21,5,-17,34,17,-10,-2,-5,2,-6,6,-3,2,-9,-9,1,-14,-7,-21,-7,-9,-6,4,-15,-6,10,-10,10,7,11,-26,-12,-10,9,-24,4,-20,10,7,7,13,24,8,-3,17,-14,11,-2,1,-19,9,-16,-8,-6,-9,-10,-8,-4,-1,-8,-2,8,-3,12,26,2,7,-5,-11,-3,-12,-6,-2,-14,9,-4,-1,4,-1,1,-2,0,-3,11,-9,-28,6,-10,-1,-20,3,-6,0,10,-9,-23,-20,-11,2,-11,-12,-5,-11,-26,3,17,-30,-2,-3,9,13,-23,-8,4,-9,-8,-11,-1,2,-12,0,16,-12,0,1,-12,-15,-13,-13,-28,14,9,-19,-16,0,-5,-12,2,-7,-1,-7,5,13,27,7,9,20,-27,-22,-7,-7,-23,-17,1,-2,9,5,-6,9,30,29,-10,19,-20,11,-19,-9,-4,-20,-17,27,-5,20,4,4,-5,13,-17,19,-30,-3,-23,-2,13,1,-6,3,-15,-29,5,-13,-18,30,21,34,-15,0,-12,40,12,1,-13,-11,-4,-20,-8,0,-8,-11,2,-8,-4,-10,10,-2,-6,-14,3,-9,0,-5,-4,0,-20,-29,-12,6,0,-1,10,-4,-10,-16,22,-14,3,3,-4,19,11,0,-13,34,-14,1,-4,-7,-15,-18,-8,4,-7,12,18,19,2,5,-6,11,0,-5,-13,-14,-6,-1,-4,-6,-7,-9,3,1,-4,23,-6,21,6,-1,2,10,-1,7,-9,3,6,-3,-10,13,29,-1,10,-12,8,13,-15,2,1,15,1,-3,-8,-12,-20,-15,-19,-11,8,-9,-9,19,-6,3,-4,-21,-13,8,-12,-5,-9,-6,-7,-7,15,17,-13,10,-4,-8,-22,-8,10,8,-7,13,20,16,11,2,1,-10,5,-5,-13,-14,-5,-9,-3,-5,-15,8,7,5,12,11,6,-5,-3,0,10,4,-14,6,3,3,-7,8,-7,-9,-19,-13,-13,-4,-4,-7,-4,1,-11,-8,3,22,11,-4,-3,26,-29,-18,3,-7,2,14,5,2,4,9,6,-6,3,3,4,-14,27,21,-13,4,2,6,10,-3,22,9,-5,-16,18,-1,-18,-17,22,4,-14,5,20,10,-10,-1,27,-10,-18,7,5,-7,8,2,-3,6,-7,-5,-3,10,3,-10,-13,12,5,-3,-1,3,7,6,-7,-11,-9,0,4,-8,-16,-2,5,-15,-30,-2,0,-14,2,2,-16,-23,5,3,-3,-8,-27,-13,-11,-11,-8,-6,-14,-31,6,-12,11,0,24,13,-2,-2,-7,-23,-23,9,3,-16,-20,-11,-31,-9,22,0,8,-5,6,-19,-14,-2,7,-4,-13,-8,-15,-7,-12,-17,28,-8,-8,-4,-8,-10,-15,-11,-3,4,20,-18,-4,-11,1,-9,-11,-31,0,-11,11,28,8,-5,-5,1,15,7,4,-2,21,19,-18,-22,8,9,-2,14,11,-1,5,-7,7,1,-2,-10,24,-12,-3,-19,11,21,-1,15,27,-7,-20,1,-15,-6,-13,-10,-2,-13,18,1,-5,-7,2,-5,0,-17,8,9,-8,12,1,-8,-5,-13,8,-2,2,3,-6,2,4,-12,-12,-1,7,7,-2,5,9,3,14,-9,-12,4,-12,-16,1,10,-3,10,-21,-9,-8,5,6,2,1,-10,2,2,-2,12,-20,2,6,-7,0,14,-7,-4,13,-13,2,-10,5,14,-1,-6,8,-12,-22,-11,-12,-15,-5,-17,-14,-8,18,9,-21,1,-9,-3,-13,-17,-3,-12,4,-17,5,5,19,-12,2,1,-1,-2,-7,3,-16,4,3,-8,-4,21,1,6,16,-28,7,0,-18,17,-17,-2,-2,0,-10,5,17,-16,-9,16,-9,-1,-3,-5,-4,5,3,19,5,16,11,-10,17,-8,8,-5,5,-4,-1,-14,12,-20,27,2,-6,0,-20,0,15,5,-4,-28,-18,1,10,2,-5,-12,9,-13,-3,-12,-15,9,25,-16,4,-3,-4,-12,-3,-23,-2,-12,3,-2,16,8,-7,0,-5,8,14,-7,13,-21,-2,-22,5,-5,0,-11,-15,-7,14,-30,25,6,1,25,4,-15,3,-7,-9,-5,15,-12,10,-1,6,-9,9,-2,17,7,4,-24,2,11,-11,-23,4,4,-8,-14,-13,35,-7,-15,-12,-6,3,-23,7,13,-4,-3,15,-1,-9,-7,-3,19,-12,-13,4,-9,-1,-18,5,-20,6,-1,4,3,-4,0,0,-27,-16,6,-3,-4,-7,0,2,-19,16,-1,-2,5,-5,-7,13,-15,7,10,-28,16,1,17,9,-4,-6,4,-7,-6,11,-18,-18,-13,13,10,-16,23,-11,4,2,11,-24,-8,5,-16,15,3,-22,2,-9,-10,-18,-16,-24,0,0,17,7,-12,8,-6,8,14,-7,15,14,-18,12,-19,-5,-4,4,-9,15,-15,4,14,-7,17,1,-4,11,15,8,-11,9,-12,-8,13,1,-13,9,8,3,3,-3,-25,-21,5,3,13,16,4,3,-16,28,-11,-11,5,2,-37,-13,-2,-1,42,-16,28,6,-11,-7,-1,-5,-2,-10,-15,21,2,6,-4,-4,-7,-25,-20,-41,9,-18,-9,22,7,-10,0,-2,15,-18,-8,39,-8,19,-25,17,-4,-5,-6,5,6,-12,9,-2,-28,-11,-17,11,8,-2,-13,0,-15,0,-13,7,-6,10,4,9,7,0,-7,6,-20,1,-18,2,9,2,-20,-3,-12,-16,14,-12,-16,-6,21,-7,-11,26,-16,16,-1,-10,0,-24,-7,-11,-17,-27,-6,3,-21,-15,-21,-4,-22,-34,-1,-27,-17,-13,2,0,3,-8,-11,8,7,11,8,9,-5,3,-26,13,-3,9,28,-13,8,15,-15,0,-14,-19,0,5,11,15,-3,8,-13,-9,-5,-7,-11,-11,6,-7,3,2,-4,5,-18,13,7,17,1,-16,-4,-4,5,-18,-27,16,19,9,9,9,7,2,0,9,4,-29,-15,4,-11,-14,8,1,9,-24,-2,-6,-33,-34,11,-8,6,-1,3,22,-11,-13,28,0,11,-19,16,4,1,5,-25,-8,14,14,2,-9,6,6,-2,4,-9,2,-6,5,27,6,-3,4,1,-8,14,-8,-3,-17,-10,-13,-4,-6,-14,-11,8,-20,-4,-5,29,-13,33,-3,-26,-3,-8,-14,-10,-24,12,-19,-8,1,12,1,26,16,2,-21,19,4,0,6,-7,-5,-2,2,3,5,7,-10,-23,8,-23,-3,-12,-3,5,-6,3,6,-4,16,5,1,-20,-13,-15,-27,14,-3,-1,-6,-4,1,25,21,-5,-2,-6,-3,0,19,8,0,17,4,-26,-13,-9,-11,8,-2,-7,-12,-2,-15,9,6,15,-4,23,5,-10,18,-6,2,-10,-7,-1,3,-9,-5,2,9,4,-3,-24,-9,-17,14,13,23,-15,5,3,-8,-5,-2,-1,-10,-25,-17,-18,14,-21,-17,7,-3,-6,9,-6,-9,2,-5,-4,-13,-13,-11,-3,-6,-9,-3,1,18,2,0,4,-3,-15,-12,3,-6,1,6,6,4,-19,16,-2,-4,26,7,-20,26,-20,-13,36,-4,-9,8,5,-9,13,9,38,-5,-1,17,-21,9,-6,0,-4,7,-21,9,-5,-9,-7,-6,31,-6,2,16,-2,-1,-15,-29,4,18,8,-8,2,10,0,-15,5,-18,-12,-7,-24,-11,-24,0,-13,2,10,8,7,-2,-6,2,11,13,-1,0,-11,-11,-8,-8,-17,-12,-17,40,-2,-16,-20,-3,16,-21,-16,-12,-3,11,-11,-20,-8,1,-5,-8,-25,-27,11,8,-20,-4,-17,8,19,-14,-1,9,-5,7,-13,-5,7,-8,2,-9,-10,-19,18,-1,31,-16,-5,-8,11,16,6,-22,-2,15,-14,-10,5,-7,-7,-13,-2,-5,-3,12,-11,15,17,-19,9,9,12,-27,7,-3,-15,-20,-18,-12,-7,-12,-18,-29,-21,-4,-21,-9,-13,-3,26,-12,-6,0,3,34,4,-4,-4,-12,-9,-8,2,-34,1,-14,-26,13,1,15,18,9,17,25,-23,-8,-17,-5,3,3,9,-11,-18,1,6,2,2,-1,2,3,-13,0,7,9,14,8,-4,8,5,-10,-5,-4,-1,9,9,19,5,18,9,14,17,0,3,19,-10,-7,-16,-22,-15,-2,-8,8,10,-16,-10,2,-16,-23,-10,-28,6,0,-18,-15,5,3,4,12,1,4,2,4,-13,-14,0,-7,-1,3,-15,-13,2,-11,-9,-7,1,5,-3,0,-12,15,-2,-10,14,-3,-21,-2,17,-3,-13,1,-22,2,4,14,1,-1,25,-10,-20,1,35,3,-11,2,-2,2,-4,-17,-18,-6,32,-11,-9,-13,-13,-2,24,2,-7,-1,5,15,-1,-10,-15,-18,-17,-16,19,-16,7,19,-11,-13,7,9,1,7,-2,1,6,17,-14,-9,15,-13,5,20,2,-6,-1,-7,-9,-28,-13,0,-2,10,-17,1,4,-12,15,16,-16,13,-6,-9,4,-4,4,6,-7,-3,-3,0,3,-19,-1,19,-7,16,4,0,-4,15,1,-16,3,9,13,-3,-11,-19,0,1,-15,18,-15,-9,0,3,-22,8,13,-24,-4,-10,-8,10,25,-2,9,-11,3,22,9,-9,-1,16,9,7,-7,1,-7,11,-17,-14,-14,-12,-15,-2,-1,-19,0,-17,7,-9,-23,29,4,-9,0,4,-15,-29,0,10,-17,-2,9,-12,3,-12,-9,7,34,-1,24,30,-20,-1,17,2,-18,9,-11,-14,2,11,9,8,12,6,-3,0,-28,-5,-16,-13,-3,1,-19,-5,15,-8,-4,-20,-8,7,19,11,-5,11,5,9,-7,-16,-21,11,-20,-11,-9,-29,-2,12,-8,-17,6,0,-1,-9,3,-23,-8,-19,-17,-16,4,10,7,22,-13,-26,-3,-13,-16,-11,-6,-19,16,-4,2,5,3,10,8,3,0,-2,-20,-14,4,3,-21,-6,11,5,-13,8,3,-9,-9,17,-3,-1,-5,-22,-3,-10,-3,1,-1,-8,-3,0,3,7,2,-1,20,-6,-14,11,-14,3,6,-8,-5,-7,-10,4,-14,-10,-4,-4,-18,16,-7,3,7,-8,-2,-2,-23,7,-14,-12,11,1,-6,-6,1,11,13,5,-4,6,-4,-8,-8,12,-9,1,4,-20,-21,2,15,-6,23,9,2,7,-5,-6,14,17,8,1,-10,-9,-22,3,13,-3,9,-3,-7,10,-4,-1,8,-7,-32,29,-13,-20,2,0,-4,-2,4,-15,16,9,19,6,-9,-17,4,36,-11,4,17,29,-10,-24,-4,24,6,19,4,-19,11,-4,0,-20,-17,-10,-14,3,-17,-5,-1,6,-5,22,-11,8,-5,-4,-18,-13,-12,-4,18,-13,-14,-9,-6,15,1,7,-8,25,-10,-10,1,5,7,-3,-2,-24,-2,-6,8,7,16,0,-11,5,12,-18,-33,-34,1,-13,-11,3,19,6,-4,-13,11,-5,-6,12,-5,-13,-5,-9,13,4,8,24,-8,-17,-15,1,-13,-17,-6,-19,9,-12,-3,-13,-1,4,-24,6,4,-5,1,2,-2,-34,4,-18,-3,-14,-7,-14,7,-19,-6,-3,-6,-2,12,8,-15,-14,3,-1,1,-2,-3,12,12,-6,-25,-20,-4,-4,10,-7,-21,-20,-2,-14,21,14,-3,-29,5,-11,-18,-18,5,4,-4,13,-19,-20,-18,48,-5,3,9,-11,23,0,-23,-14,-22,3,-30,4,-24,-21,-16,1,1,11,2,-4,10,5,-21,-25,18,14,-27,-3,-11,-4,-20,10,-10,19,4,-5,17,4,-2,22,11,0,-5,-4,-9,-8,-4,22,1,29,0,23,18,-2,-7,0,-11,-8,-12,1,7,-6,8,3,-15,19,-7,-11,-19,-11,-6,-23,-14,7,-15,-5,-23,-7,-22,-2,-4,12,12,-9,-14,-5,-12,-5,-9,15,-18,-8,-16,-9,-20,-15,-18,-7,5,-11,-3,-7,9,-1,8,-2,-18,-4,-16,4,11,-8,-11,-10,9,-12,-12,14,-5,5,-1,-1,8,-6,4,-13,-13,9,-2,6,15,-7,-5,3,4,-1,-6,-7,0,5,1,6,3,16,-8,27,-12,8,1,-6,0,-10,-8,10,1,2,-11,-2,2,-9,-3,6,1,15,2,-16,-15,-1,-7,7,-14,8,-6,-11,-15,-8,-12,-6,-5,4,3,-13,7,-8,21,7,-4,4,6,15,16,-14,3,1,16,-10,-10,2,-7,7,10,7,14,-3,13,4,8,-7,18,9,13,12,-2,-5,-7,-5,-2,-9,-12,8,11,-14,0,-15,6,4,-2,11,-2,-5,-3,-4,-27,-4,14,-8,5,-20,9,6,-7,-1,-1,22,-1,-11,13,-10,-23,-1,1,-11,7,-21,10,8,-11,-8,-12,24,2,-18,-10,-12,0,-9,-13,1,-21,-16,-14,4,-4,-17,-10,-7,-9,-7,-6,7,6,-3,-8,0,-5,-7,0,9,12,1,-4,8,-7,-2,-5,21,0,3,-6,15,-6,-14,-6,5,-3,17,-10,13,1,-5,11,14,5,-13,17,1,11,8,4,9,-1,-10,-7,17,-3,-19,11,6,4,-7,31,-7,-13,4,1,5,12,-10,-27,2,18,-25,0,-13,-12,-6,10,-10,-8,10,-8,17,-5,-21,-11,-13,0,-1,5,-5,20,-1,12,-8,-13,0,1,0,14,-14,9,0,1,-18,-2,6,-3,-13,7,18,-8,7,28,3,18,15,-1,-12,9,-10,8,3,12,-10,-7,-3,-12,2,-12,13,-12,5,-6,8,-10,-12,4,-18,-2,-7,3,3,-19,7,-17,-12,-23,10,-20,-19,18,23,8,-31,-15,19,-12,-27,2,-6,-22,-23,-16,-6,13,-12,-7,34,11,-25,15,15,-2,-6,5,-11,-11,-13,-9,-19,13,-1,12,12,6,-27,-3,-12,-15,-7,24,6,8,0,-11,-21,8,-6,-13,-9,-7,-16,-13,12,-14,3,-17,3,9,-13,9,-2,2,-9,-17,-6,0,-5,-16,9,-3,14,-4,9,3,-20,-7,17,-6,-22,13,-2,-6,-9,-8,21,-10,-10,-3,16,-10,-13,2,2,8,-11,-7,0,-11,-14,-2,13,-3,-7,2,14,-22,-15,4,1,5,3,6,2,-7,-10,-4,-5,-16,-16,11,-6,-5,-10,-24,1,-14,8,9,-23,9,-10,-12,-7,0,3,-8,2,13,10,-12,4,-19,-1,18,-8,9,-5,-5,-1,2,5,25,9,17,8,-11,15,-4,0,3,0,13,-1,-1,-12,-16,-11,-10,17,-2,5,11,0,12,-11,-10,-4,12,0,11,5,-1,-11,9,9,-15,1,-11,1,5,0,-15,0,14,2,4,-1,-7,-7,29,8,-15,10,0,-14,3,8,-7,12,-3,-24,3,10,0,-21,-21,-13,-17,-33,-30,22,18,-6,-7,13,-29,-33,-11,3,-6,-17,-13,-12,-18,-29,-23,33,13,-4,-16,31,17,-12,8,31,15,-9,-3,12,-17,-21,-19,4,-10,6,3,-3,20,16,10,-4,5,5,14,4,-9,6,-14,-10,-5,4,5,-29,-7,-3,-2,-17,-20,1,-13,9,-9,24,0,-7,15,1,-5,23,-1,-12,17,9,-19,-7,-1,-4,-18,-27,-7,2,9,-5,-8,2,-1,-5,18,1,-23,-1,-9,-5,-10,5,-7,5,-15,3,-20,-15,5,-14,26,-7,-9,-8,-11,-12,-15,-1,-2,9,-8,12,-11,-17,6,-12,-8,-12,5,12,7,-16,-6,-6,7,-6,6,12,22,-3,0,-17,-10,8,-9,18,2,6,7,4,-8,-15,16,-5,-2,15,14,-9,3,13,-5,2,15,-7,-10,5,-4,-8,-6,-2,-5,-7,2,19,12,5,-7,-6,3,10,-11,3,15,-16,7,-2,-1,-14,-1,-4,17,10,4,-20,-2,2,-13,-15,-11,-33,-9,-12,-13,-7,7,13,-14,-13,16,3,-9,-3,12,-3,-6,-10,6,-7,9,13,11,2,2,4,-11,-8,-16,-10,3,-8,18,-18,0,-4,14,0,-5,6,1,2,-16,-16,9,-11,-10,8,1,-3,-1,18,5,-23,8,8,2,1,-19,-4,1,9,-6,16,-4,6,-4,5,-7,0,-6,2,14,10,-2,-8,12,1,-30,14,12,-7,-11,-7,-8,-7,8,4,-23,-15,1,-10,1,-8,3,8,2,-13,8,17,7,-7,1,4,-9,1,-16,-23,-10,0,5,17,-2,-7,13,9,7,-2,-7,-3,15,4,-23,-16,-7,-6,-16,-15,14,0,-6,0,5,-11,12,-9,-2,-4,-5,-11,-3,-7,-12,0,-12,2,-12,4,15,-7,25,0,11,7,8,12,23,15,-18,2,-4,5,-16,9,-3,-13,0,-7,-14,-19,16,19,7,5,7,-3,-2,-5,4,10,-3,-3,-15,9,-8,-7,5,-4,-2,-3,8,5,-4,0,-9,-4,18,11,-2,6,5,-11,1,-8,33,2,-12,1,-5,4,-7,24,19,-14,15,-17,-1,-7,4,-15,-8,-6,-4,-16,12,1,17,5,-2,-19,0,-4,-15,-13,-1,4,-9,-8,-7,-14,26,9,-2,6,-5,-16,-1,4,-23,-15,-22,-12,-13,-2,-8,4,-13,15,4,2,-11,-5,11,16,-10,-8,-13,-12,4,-7,-21,1,-8,10,17,-2,-9,24,11,13,-4,-8,1,4,-2,11,6,-4,6,-11,-7,-10,15,6,-11,-17,-6,1,11,-12,-3,-5,-15,12,12,-18,-8,-10,-3,-25,-16,-4,-19,2,-13,3,-8,-19,-5,12,9,-13,-8,-4,-1,-8,-2,1,-14,-2,-7,2,-14,-7,-19,16,-9,0,5,-13,-4,6,7,5,-6,3,-1,0,1,-14,-7,-1,-6,-3,20,3,6,10,-7,3,-7,11,8,3,-14,4,8,-4,6,-8,-4,-14,18,5,-2,-13,-3,-5,-13,-3,-10,-2,-5,12,-9,2,2,-10,10,-27,-2,12,-20,-6,-9,3,-9,-16,3,15,4,12,-3,-12,-5,-19,-20,-4,-2,-9,-19,-1,-27,-14,-10,2,-6,27,11,-20,3,-24,-1,2,-5,-1,-16,8,-15,-13,4,-5,2,-7,14,8,8,-25,-10,-8,2,-13,-14,3,5,9,-7,25,2,-19,-3,-9,-3,-27,-12,-18,-6,-16,-18,-1,-7,-3,-7,8,6,-12,7,-15,-1,-29,-7,-10,-7,-2,-4,6,-23,-10,9,27,13,-12,-8,-6,7,-27,-37,-8,15,-1,-10,15,-19,-6,-5,5,10,-14,-1,-4,13,-10,-30,-19,39,-12,-16,8,-19,11,-5,9,5,12,8,9,0,-15,-13,15,3,-2,-7,10,15,-4,-7,2,-3,14,-1,-9,-5,4,-6,-18,-14,3,6,-7,-5,-8,2,-10,1,19,-5,-31,-17,5,-3,3,4,19,10,-8,18,-1,23,10,8,20,-11,-12,-13,18,-11,-10,10,11,17,1,5,2,-9,7,-12,7,-19,2,2,26,-13,4,35,-1,15,-2,-20,4,-25,-4,-4,8,-18,-5,-29,-16,16,-23,8,1,16,-15,-2,24,-1,-1,-2,8,-24,-3,-11,-8,-11,-12,-5,3,0,-19,-11,8,1,-22,-21,4,-18,2,-7,-20,-24,-32,21,18,3,8,2,-17,3,5,-25,-2,-11,-13,8,-19,-5,-28,4,24,-3,-1,-19,-7,-10,-14,-9,9,-10,-6,-28,-16,-10,-8,1,3,1,3,-2,5,10,2,-8,-16,-16,-6,-10,-2,17,-5,14,-19,10,17,-6,-6,-14,8,16,15,-9,-16,5,-1,-4,-9,-3,8,0,5,-2,-3,-10,-10,1,10,-14,-8,-18,-1,-12,-15,-2,20,9,-6,0,-2,-1,3,-18,-12,-11,-18,-1,-27,9,1,-17,3,-6,13,4,-10,-12,-10,-10,0,6,2,-18,-6,1,0,-13,-7,7,4,5,-2,2,15,-8,27,5,-12,-14,3,5,4,-14,-14,10,-20,4,8,2,31,-10,8,-5,-3,-1,-12,-6,-17,-1,-9,8,14,-1,3,-4,4,-1,16,-5,-5,-4,10,-15,-14,10,11,15,12,1,-3,1,-21,9,15,0,-22,14,-5,2,-1,23,-17,8,18,-7,-12,7,-1,-8,6,6,12,14,-9,5,-5,13,12,6,-8,12,3,-8,27,1,-10,15,-5,2,-4,-11,-20,-21,1,-19,7,-3,-6,8,5,14,10,-9,-15,-6,-6,-3,-22,-18,14,-6,-16,8,4,29,-12,-14,-12,-20,0,3,5,-28,-12,18,-9,-14,1,-8,-15,-11,-34,-11,-23,-9,-12,-13,13,-17,-9,26,-6,-13,1,-9,12,-3,-16,-21,-16,10,-11,5,14,-13,-15,9,-2,-18,-21,-10,4,-21,-6,6,8,13,20,20,2,8,14,-8,0,13,9,0,7,1,-21,10,3,10,-17,2,-10,9,-12,-10,32,18,-10,11,-2,9,-7,-11,10,-3,5,-4,-14,16,-14,3,-12,17,1,-3,6,-3,-8,-29,5,0,3,-7,-4,11,-13,-18,-12,19,6,-4,7,-17,-15,-15,5,26,13,-2,-2,-1,0,16,5,5,-8,4,4,-6,-1,11,-3,-11,-2,8,-10,-9,-1,1,-11,-2,-6,-7,3,-14,-7,3,19,4,14,7,-18,-11,-5,-12,10,-8,-8,1,16,0,23,-26,12,13,-23,21,-10,-13,-13,2,3,6,3,1,-16,-20,20,-12,-5,4,4,-1,-6,10,-11,16,5,-2,-10,-1,15,-23,-7,4,-13,-2,18,-22,-19,-5,-9,6,-10,4,-20,-1,38,-5,-5,7,-24,-4,15,-20,-13,19,1,21,2,4,8,6,1,-10,-13,18,4,18,15,-1,-12,-7,-5,-12,7,-7,-1,1,10,-10,-8,5,3,14,-9,-7,-3,-11,1,-7,-11,3,-19,8,-1,-6,0,-10,7,-4,-4,-13,-3,3,-3,3,3,-7,-18,1,-8,-15,-1,-4,-3,-12,4,-5,-10,0,-3,-8,-5,0,4,11,-12,20,-5,9,-18,-31,6,-15,12,6,-21,6,-11,-9,33,9,5,18,6,-15,23,9,-28,-1,23,12,-6,-10,10,-15,19,22,-16,-2,-21,2,5,29,-32,11,0,9,-2,-2,4,-14,-1,7,-9,6,-24,15,16,-1,-24,0,-2,-5,-3,-2,34,8,3,8,2,-6,-2,-1,12,-33,8,16,11,-6,-2,-8,2,-13,13,2,2,8,-5,-3,-15,-34,-8,1,-6,-17,-5,-29,-13,-9,48,8,-12,-4,4,-7,3,-10,-13,18,-14,-9,-5,-13,-11,-2,-6,-2,-1,-13,-18,-7,-14,2,-30,9,-18,6,7,7,-6,-4,-2,-1,-1,0,8,-2,-17,-10,-7,-2,2,11,1,4,12,10,2,-6,7,-12,-5,-2,3,-20,4,8,-1,10,6,0,-12,-10,10,-17,12,4,13,-25,-13,-11,-1,17,-17,-10,13,-11,-3,0,-22,-6,-14,-13,-17,0,-6,2,14,20,4,-19,-8,-16,-2,-8,-28,-20,5,-10,-7,12,27,9,-8,-4,0,0,15,7,1,-13,-20,-21,1,-7,-4,-8,18,15,-10,-11,17,10,8,-4,6,10,-6,-3,-2,-19,2,-17,6,5,8,2,7,13,4,-14,-1,10,1,-6,0,-10,26,-18,1,6,-18,-8,-10,4,-18,-5,9,0,-8,-5,4,1,-3,17,-10,15,-15,-8,-1,-1,9,1,-16,-4,-18,10,-4,-32,-3,-4,-1,5,9,14,-5,-3,-10,1,-3,-10,-14,3,-1,2,-5,-11,-7,-5,-7,-4,-1,-3,-10,15,7,8,7,7,1,-12,19,-7,-5,10,13,9,13,-21,-6,-6,-15,-1,1,20,-21,-9,-18,1,9,-5,1,4,0,15,-5,-12,7,4,5,0,3,9,-15,-10,2,3,6,8,14,-15,3,-6,-17,-11,-15,24,-5,-11,-15,-14,-1,1,1,-1,-2,-23,-18,-4,-5,-5,-23,17,1,10,-20,-23,-7,-7,-18,-23,-1,0,-3,10,-3,10,-6,28,2,-8,7,-6,6,0,33,0,1,-12,-4,-5,-8,8,-6,18,-3,9,-10,14,-23,6,-2,11,6,7,-2,6,8,-2,-17,-11,-11,12,27,-13,-9,8,12,6,-4,-12,4,2,-14,-4,-5,0,-18,3,17,-15,-1,10,24,18,9,-1,17,6,-1,-6,-13,8,-26,14,27,-11,-2,-1,-3,-21,-2,-1,7,6,-20,-5,-20,-14,-14,-7,11,-9,-4,-30,20,-5,-7,-18,14,1,-3,21,-19,3,16,7,8,-25,-15,-22,4,-8,10,-17,-15,7,0,-8,8,-3,-12,-7,0,-5,-7,-11,17,3,14,-7,-13,-4,23,-12,-2,-13,-11,16,-8,-12,-2,12,10,12,-7,-18,-1,-13,20,-23,-5,-35,-9,12,-3,-23,-1,-6,0,7,1,13,-11,3,11,1,13,-12,-24,9,-12,2,11,-27,3,-7,0,3,-10,9,12,4,-13,7,-2,-12,15,1,5,-18,3,13,-7,-2,-17,-7,-9,19,-2,-1,-13,11,-18,-16,12,-12,5,11,-9,2,-4,-12,14,15,-9,-4,-10,13,-8,-14,12,-7,28,1,-14,-11,-7,0,9,3,-22,-9,1,12,-8,-26,-6,-22,8,19,-10,-4,12,9,-1,-13,1,6,-1,-5,-2,-8,13,-16,1,3,2,16,-2,2,-9,17,4,-7,-8,5,11,-8,-3,-12,-13,-4,29,4,1,-32,0,-19,3,-7,-15,2,-1,-12,-1,-8,2,-19,-6,22,15,-10,1,13,-13,-12,-2,16,3,-16,-4,-4,13,-14,-3,-2,9,4,-5,-6,-13,-6,-5,-8,-6,-22,0,1,-5,-14,-9,-3,16,3,5,-10,2,-4,0,-6,-1,-17,2,9,11,-15,-15,-8,-5,-16,-2,0,-1,23,15,-23,7,8,-1,-28,20,-11,-2,-25,15,-17,-6,6,19,-6,-13,-8,5,-19,-1,-28,0,-11,-6,2,15,-2,-15,10,28,10,0,5,4,-6,1,4,7,11,34,-27,-12,2,-11,-15,-2,3,2,-15,-9,-27,11,19,-2,1,6,-3,-26,-12,1,5,-18,-4,-7,1,-15,-14,9,6,-10,4,-7,-13,-12,-26,-6,14,2,6,-3,-10,-21,-19,-6,9,-6,-1,-26,-17,-17,12,-14,9,0,-5,-7,-15,8,7,-9,8,-7,30,-9,5,-15,-2,6,15,-3,12,2,7,4,6,10,11,7,29,-1,-6,-17,0,-11,3,-13,7,-9,1,-25,-10,21,23,2,-4,12,2,-11,-4,-1,-1,-15,-12,1,3,-11,-11,13,-1,-6,17,2,-4,-7,-8,-22,0,-12,-7,-9,-23,1,-14,6,32,12,11,-31,2,-24,13,-17,-25,-18,-4,-7,-21,3,1,-22,31,-12,-5,-21,22,-11,-10,18,4,7,3,7,6,9,-10,-2,-19,-22,-11,-10,13,2,-5,8,1,6,6,-8,3,-10,-3,-9,-9,-8,-11,-11,-2,1,4,-7,-8,-3,11,-1,15,-6,-4,11,0,0,6,0,3,1,-1,-12,-15,-7,-10,-4,7,3,-9,11,9,-9,9,4,7,-6,12,-1,-5,-16,-7,-1,-12,2,24,-4,11,11,1,-6,-2,-3,0,15,17,-19,21,-2,11,11,-9,16,-10,-10,2,-4,4,0,3,4,-6,-2,-6,5,4,9,-13,8,2,-7,9,-18,9,-7,-1,-2,1,-2,9,1,15,9,-4,11,6,6,-3,-10,5,6,-10,-21,-24,-6,-3,1,15,0,-6,2,-2,6,-5,-14,6,-9,-7,-17,-14,-2,-5,3,-21,3,-2,-10,-1,-15,-14,-5,0,-4,-13,-8,-5,-13,6,-7,-9,8,-15,14,-20,1,4,-20,-9,-18,21,17,1,6,-2,-8,-2,9,-22,8,-8,-14,-22,4,-15,-17,41,6,-24,4,-16,-6,-14,-3,-17,-21,-11,-9,27,17,0,-21,27,-12,-39,-4,-19,-6,-27,10,2,-7,-11,5,6,2,-1,-11,-9,6,-8,3,-5,-11,-11,14,0,-14,7,-14,-11,8,-8,3,-12,1,-6,4,8,-13,-13,11,-14,9,-1,-14,4,-10,-2,-19,-5,8,10,-8,15,-11,2,6,-17,13,-7,7,-14,-12,-11,-15,6,8,-2,-3,-9,9,8,7,-13,10,-5,25,4,1,-8,34,0,-9,-6,4,-23,-2,-27,-22,-4,-3,-22,-6,17,1,-6,-23,-13,4,-13,3,-17,2,-17,-5,11,-8,0,-9,-4,-5,-14,-2,-20,8,-21,8,6,1,-9,3,-18,-12,1,4,-9,-11,2,-23,-20,24,6,2,8,-4,1,-11,5,-7,-18,-8,-1,-4,10,-7,-25,-6,15,5,16,5,21,3,-10,1,-21,33,-3,5,10,25,-6,-10,9,22,-4,-5,-1,-13,10,20,6,-16,10,17,-2,2,-2,12,-15,-15,4,0,-9,-1,3,19,20,-8,-5,15,-6,17,-16,8,-2,-14,11,4,-6,3,-5,-1,13,-4,14,9,-10,3,-8,-5,-4,-7,2,13,-15,6,-3,-10,5,2,0,9,0,-13,4,5,-4,-20,8,10,9,-12,-15,-6,-12,-15,-13,-10,6,-1,4,-1,-1,-13,1,-1,-4,-14,5,2,4,23,2,-8,16,4,9,-9,-11,-9,2,8,-7,-6,-2,12,15,26,-2,-7,-1,-1,-10,10,-9,17,5,6,-10,-6,-6,15,20,30,20,-20,-3,8,-4,-11,-11,-5,-8,11,-4,-8,3,-5,1,11,-9,-5,-8,-7,12,-3,-5,-3,9,-11,-18,-3,-10,0,-13,15,-7,-16,-18,-20,-6,-2,13,-4,-3,-14,-20,15,-19,1,-20,-1,-13,-5,6,-11,-19,-23,15,18,-11,0,33,-3,-7,6,7,8,-5,7,-19,0,-12,-18,-2,-5,-8,0,9,2,-8,-7,5,-19,-15,-6,7,-3,19,-1,-14,-18,1,-7,-3,9,-2,-15,-10,-27,6,-5,19,22,23,8,-12,-9,-8,-4,-16,-10,-6,21,-6,-14,4,-8,4,28,1,2,-13,-11,-21,-16,-16,-22,-21,-6,-18,-19,-4,-1,-12,-5,-14,-11,18,7,-27,-16,0,-9,-2,-5,20,-10,-13,-7,2,-2,-17,8,-7,-12,-17,-6,-3,-5,-5,-10,7,-12,-14,-21,22,-29,28,28,0,0,-5,-6,-15,1,19,-4,-5,-21,7,-13,6,0,8,12,10,-4,-14,-8,-14,-16,-10,23,0,-11,1,-31,-9,-8,-1,-3,-4,-25,-12,7,-12,-15,-16,-12,19,-10,-15,-24,20,-2,-8,-21,-15,-4,6,-22,-18,-2,-10,9,16,16,-20,5,40,6,3,17,19,-12,5,-1,-7,-30,-35,5,-10,-7,-2,-1,1,-1,-28,14,19,-14,3,28,2,-14,-23,0,14,-9,-14,18,-8,-8,-18,-16,0,-5,12,8,-8,8,-8,0,33,3,-5,-14,-8,-32,-14,0,-13,-14,3,1,4,-2,-7,16,11,3,-2,-6,5,7,27,-8,-16,-17,-4,-3,12,-5,12,4,-20,5,8,6,0,-18,6,24,15,7,-2,-11,-13,1,2,13,-27,3,40,1,-14,-10,-19,-3,19,30,1,4,17,1,-12,3,2,-1,14,-6,4,-11,-9,0,-17,10,-8,19,10,3,2,-5,-7,4,1,11,0,-9,18,15,-6,15,-6,14,8,13,2,13,11,5,2,4,-5,-2,4,7,-2,-5,10,6,12,4,-8,-16,-10,-6,-3,15,-6,0,-16,-5,3,5,16,2,-10,21,-4,-2,14,-4,10,8,-8,0,-5,-19,9,11,-4,-4,3,16,-8,-6,18,-1,6,-5,0,11,-5,-4,-9,-5,2,10,-8,5,-18,-14,13,-5,24,0,2,5,-9,-1,-23,-7,-3,-12,-10,-10,4,8,12,12,7,-14,11,-20,-10,1,8,-11,1,19,4,-17,1,2,-11,-3,-11,-19,-12,-34,2,-1,-15,-9,-12,8,-2,0,-14,6,2,-6,-22,-24,15,-6,1,-2,-26,-2,-12,-8,20,-9,12,-4,-16,1,-13,-8,4,-5,4,17,-14,1,-7,-20,14,16,7,5,-17,8,14,2,-12,0,-2,-13,-14,0,-3,-4,1,18,12,-5,4,8,4,-4,22,0,-3,3,1,-8,3,-7,0,-5,8,-2,-12,-2,-14,-14,-6,-7,18,-1,-9,-1,-25,-13,-13,14,5,-6,-19,11,-4,-10,25,12,14,-7,2,18,-11,8,0,4,6,1,-11,8,0,1,0,18,-8,18,-11,-3,-2,-4,-9,12,-3,15,2,-2,5,1,-19,4,-15,-11,-14,5,-2,-6,-7,9,9,2,0,-5,1,-8,0,10,5,-5,19,-8,-7,10,-11,-8,6,15,5,-8,-19,8,-5,12,0,2,-4,-6,-6,6,-1,-8,-5,1,-8,-1,-4,4,36,-18,0,6,7,-9,-4,20,2,1,-13,14,4,0,1,-8,24,-4,5,5,-10,-23,4,17,-11,-1,0,1,-6,0,9,-6,-11,-15,-8,-9,2,13,-4,-8,-10,19,9,-13,10,1,-18,-12,5,10,-10,4,3,-6,-20,-8,-5,-2,-5,-5,12,8,5,-1,-5,5,-16,-1,-9,5,-13,-15,-8,-5,-16,-8,-19,-7,-12,-11,-5,20,3,2,14,-9,-2,-13,-10,-22,-9,-3,1,-8,3,14,-20,5,-9,-1,-27,-13,-10,-1,-21,12,-6,-9,1,-5,1,2,2,4,-15,1,-12,-9,-14,-2,-16,20,-21,-1,-6,21,-2,-11,20,7,-7,10,-9,7,4,17,10,1,5,9,4,3,15,-18,-13,-5,6,-1,-3,-1,-8,3,-13,-1,1,8,-13,3,-9,-13,-12,4,-22,5,28,17,22,0,-28,-22,-25,19,5,4,4,8,-20,9,-25,-12,-5,10,-1,-18,-38,-11,-13,17,-3,0,-5,28,-4,23,-9,13,8,11,-4,1,-32,-14,-21,8,-12,6,-8,40,-13,-8,-15,-17,-2,-3,-8,-3,-15,4,-10,14,-13,7,-17,-19,-19,-14,-16,-5,21,26,8,-11,1,-1,-9,-6,-20,-7,-22,-16,10,11,13,-15,-8,29,1,-22,2,-2,-21,-3,-18,0,1,-4,4,1,7,-2,-9,-28,5,-12,-28,-10,11,0,5,-16,1,-1,-7,-10,1,10,2,15,2,4,0,-12,-4,15,-17,4,-21,7,-10,11,12,-19,0,-8,-21,18,-15,6,-15,2,2,-2,6,8,-2,-5,19,-12,-8,-2,-9,-4,-8,-11,-10,-4,7,3,20,11,11,10,21,-6,-6,-10,-4,-5,-9,-3,-23,-10,2,4,-6,-7,5,1,-5,5,-9,-14,-2,-5,-21,3,5,-27,40,-10,17,5,-12,-23,-7,4,-24,-9,3,15,5,9,12,19,24,-6,16,6,13,5,0,-4,-6,-34,-19,6,-3,-7,-19,-11,15,10,13,1,17,-15,10,1,0,-6,-9,1,-10,-1,10,-19,-5,34,20,-20,51,-4,9,8,-4,-19,-32,-9,-10,-13,10,-6,-16,15,-12,-17,24,21,-13,9,-7,-20,-22,8,-2,-29,-9,6,9,-10,-1,-14,2,6,-27,-9,-20,-3,31,2,33,6,-7,-17,-1,3,3,11,8,16,-15,1,-16,8,-10,-3,1,1,3,-3,1,-6,1,5,-6,8,-16,-4,2,17,-7,16,-11,-2,-11,-6,-13,0,-14,-12,-16,-12,9,-7,-14,-10,-5,13,-11,10,10,-11,-11,7,-12,-11,-18,-21,-1,-7,3,-4,-35,1,-10,9,14,12,-2,-15,-9,-9,-2,-20,-7,-8,11,14,-17,9,10,4,-17,5,-13,10,-12,-2,-13,-8,0,-1,-28,8,-6,-13,-8,-1,3,3,9,13,-5,-6,-9,11,-2,12,-9,0,25,3,-12,14,-5,8,-14,-6,-7,-17,-11,-24,0,9,-5,-10,5,-5,-27,32,1,-2,-7,2,9,-12,-1,-11,6,1,40,-8,-8,-7,-16,-6,-13,-5,-1,-25,5,1,14,-21,3,-17,52,-17,-5,13,-19,-10,-17,-10,-5,-19,-8,-3,15,-3,-18,-9,-6,-24,17,8,-2,-6,-38,-9,-8,-5,11,-18,14,-7,-33,-25,20,8,5,23,5,0,-3,8,-10,18,4,4,-1,4,5,-12,7,2,2,15,4,3,-8,12,-5,-7,-11,-4,11,-8,-7,14,4,-4,-6,-7,11,-19,-21,13,-1,3,16,10,-3,-13,-7,4,-9,-5,13,9,-16,12,-7,-7,-13,-22,-9,-9,4,-27,-16,-11,-4,-2,-31,-29,-6,-8,-15,-10,-10,-2,5,-7,0,-20,-24,-13,1,5,2,-23,-9,-1,9,8,-3,14,0,-3,2,-7,23,-11,1,-2,17,-5,-2,16,10,-9,-12,13,-11,-17,-12,-16,5,9,4,-14,-17,-4,5,-7,-2,12,-3,13,3,0,-9,-2,-5,22,-3,-21,-7,5,6,-1,-16,5,-19,-5,-7,-2,20,-12,2,1,-7,6,1,-22,7,17,4,-18,0,5,10,-16,2,-15,1,-14,1,30,2,0,5,12,-2,-6,-6,15,9,-7,1,-3,15,-8,1,4,10,10,-6,2,0,-10,-8,7,1,-32,-13,-13,4,-16,-8,-4,1,-12,-12,-15,-13,4,-6,1,-1,-21,-9,-14,-15,-2,11,-20,5,-3,-3,-13,-1,-7,-8,-13,-6,8,4,1,7,3,-15,16,16,6,0,16,-9,-17,5,7,5,8,-5,-3,-6,-13,-11,13,7,-2,12,3,1,11,-1,9,-13,9,2,8,20,0,3,-2,3,13,-2,10,-15,3,-12,2,4,-25,-14,-1,14,-7,-5,9,-6,-9,-10,1,23,21,-9,-4,-13,-11,-3,-2,-4,-12,4,-5,-4,-2,-1,-13,11,-18,-19,4,-23,-7,-4,21,8,-13,-4,9,13,1,-4,-3,0,-16,6,-4,-19,7,7,0,0,-12,-10,-6,-7,-7,-2,-13,3,-1,3,-2,-15,5,10,0,10,8,9,-6,5,5,1,13,-11,8,-1,14,-3,-6,-1,-3,-4,0,-1,0,-4,-4,-3,6,11,-9,18,14,-24,-16,13,2,-12,-1,14,-12,8,9,-2,-4,12,-7,7,32,-3,-24,-18,-5,-9,-29,6,4,0,-14,-5,-22,24,21,32,6,-13,-4,-11,3,-18,8,1,-2,2,-5,23,-4,-7,27,-15,-17,-23,2,-22,-5,-13,30,12,-5,4,0,6,11,-7,-14,-13,2,-11,-19,-2,-9,5,19,-5,-7,-8,-2,-13,-11,-6,-8,4,-5,10,-2,15,-12,10,-9,-11,-4,-9,-3,4,-23,-9,4,3,-11,-21,-7,16,4,-4,11,-8,-13,8,-2,4,-14,28,-17,-14,3,-13,-10,0,32,10,1,2,-13,-6,-11,11,17,13,-12,-8,-9,23,25,23,-9,20,-10,17,4,-2,0,-22,-5,12,-9,5,-8,4,10,15,-12,13,-15,-5,5,21,-5,-10,-2,18,6,2,0,14,-3,10,-15,-9,-1,-11,-6,0,13,8,1,-15,23,-11,-2,-17,-16,18,27,5,0,-16,13,2,-5,-14,-18,-25,11,-23,6,13,-19,-16,7,-25,-15,19,-5,13,-8,15,21,-1,-23,-7,7,5,-7,-11,1,-11,-22,6,-3,-1,10,-7,-8,-12,-5,2,8,-7,-9,0,2,10,-11,-7,26,7,17,-1,-26,1,2,7,4,15,7,0,-6,9,9,-14,-3,-11,-11,-19,-8,24,16,-4,0,-6,11,-8,-17,-13,-14,-4,-3,-23,-9,-33,0,-12,1,-3,0,7,-3,2,-25,-12,6,17,2,-6,-5,1,23,-20,0,-10,-11,5,-24,-8,3,-29,4,-20,1,-2,-1,2,8,-12,3,-1,5,-14,-11,-14,8,-12,16,-5,-15,14,-10,20,2,-12,7,-12,-14,-12,-14,7,-8,6,6,-1,-4,8,-6,-7,-10,-3,10,-15,10,-4,26,-24,-4,-10,-22,-18,9,-10,3,-24,2,-13,5,-1,-4,-5,8,11,-3,-2,-8,14,-5,0,-6,-5,9,-23,1,-15,4,-16,-12,-7,2,10,-16,7,-9,-5,-13,-10,6,0,9,2,9,-4,4,-20,16,4,-11,19,-12,2,-1,-2,25,2,9,11,10,22,-20,-16,2,-3,-9,-6,-5,4,16,-7,4,8}\n\n#define CONV3_BIAS {18,36,-46,-45,64,8,13,-19,28,1,14,-57,23,20,-2,32,48,-11,85,73,-7,52,125,33,125,13,92,-72,89,-1,11,70}\n\n#define IP1_WT {38,-13,5,-20,15,-4,-3,13,36,-19,10,14,-18,-17,-11,15,25,-18,-16,-9,-9,-8,-4,21,-11,10,4,6,7,9,-14,-9,17,-6,1,8,18,5,14,12,0,2,9,-8,-3,15,-7,2,-18,-6,-26,20,-6,9,10,-2,12,11,-10,-7,18,-12,-12,41,18,6,11,-3,-1,2,11,24,1,22,9,6,4,33,-18,-12,-26,-22,7,3,-2,-8,-3,-8,19,-16,28,-18,1,2,16,-26,-30,-18,-12,-30,9,9,-7,13,7,12,-11,16,-2,-1,14,-10,15,11,4,-15,-5,-12,7,22,-15,-12,-7,1,22,1,-12,29,3,1,-3,-12,-5,-7,-1,22,20,-6,-20,25,3,5,1,2,-17,-2,-2,4,4,0,15,-19,6,-7,-20,11,-18,-26,14,1,0,-9,4,-8,11,-16,-1,15,-16,-7,17,-13,-10,1,2,8,14,-2,-16,32,-10,-10,12,-16,9,-11,-10,-15,3,9,-30,58,4,-20,6,-10,-6,11,0,-1,13,14,-14,0,-3,-12,-4,22,2,2,14,1,10,1,-12,-8,17,-12,-1,-10,-9,-9,-2,11,-28,-25,-6,-5,4,10,-3,11,6,16,13,-3,-6,5,35,-12,-1,5,26,-3,-29,2,-4,-6,-15,-6,-11,8,-8,-12,1,-13,-2,7,12,-16,7,-5,11,20,-6,-2,42,21,36,-4,-12,1,-4,25,6,0,-12,5,28,-5,1,5,-15,1,-2,1,-5,-4,-10,41,-14,9,-11,-23,0,33,0,-9,13,-9,-3,6,1,4,1,3,-9,4,2,-16,-2,21,-32,-9,6,-12,-2,3,-7,29,-8,-27,10,-3,-3,10,-20,-3,12,0,-4,-4,-11,7,-6,8,2,-11,6,7,-6,-13,-2,-4,17,-11,5,0,11,1,4,-6,-17,-9,-25,7,4,4,21,17,14,-5,4,-12,-17,5,46,-7,17,-10,22,0,-9,-13,-13,12,-4,1,-4,-17,-2,-7,-14,-14,-14,7,9,-11,-2,3,6,15,4,6,3,8,20,10,16,-4,-20,-10,25,7,-4,5,3,1,-2,-2,8,2,9,-2,-6,2,-5,-11,4,1,24,-10,-11,11,-17,-4,-5,-14,11,2,2,0,10,13,-31,9,-14,13,19,21,-29,-10,4,9,-33,3,9,0,-13,-16,-1,-3,-4,20,3,-2,12,-6,-38,-16,-17,-8,10,12,18,-10,-8,16,25,8,-4,-1,4,-12,-6,-8,-2,11,-10,2,-16,-11,40,-17,11,5,4,-21,-1,25,33,-5,12,-7,1,6,2,-4,5,-17,17,12,-18,3,6,-8,-9,33,-5,10,-22,-3,16,-3,-22,29,45,-5,-5,-19,11,13,-10,-12,-15,8,1,16,14,-3,-4,7,-9,-5,-6,1,2,5,-15,-32,-11,-9,8,-8,9,3,-18,-4,23,12,4,-14,36,3,-4,41,14,-3,-2,2,-3,12,4,-4,8,-15,-2,7,8,8,3,2,4,11,-1,10,-26,12,-7,11,-16,-1,28,-25,19,8,-5,-8,-3,-8,-4,16,-8,-14,-9,3,16,8,8,8,4,-12,3,-6,-12,3,22,-7,-21,-11,-14,-4,-1,7,-10,-3,6,13,-14,61,-10,-14,-15,-3,13,5,-30,-20,-15,-25,5,10,-9,12,8,-1,-7,5,-17,-1,-13,0,11,-6,60,5,0,-20,6,21,-22,6,-12,-9,1,-3,1,-19,-21,-7,-4,7,-15,-6,-9,11,-5,-5,12,-12,6,8,15,2,-6,-23,-23,0,-4,6,-8,-9,-21,31,-5,3,-5,1,5,-1,-7,-6,30,-14,-3,11,11,5,-4,0,15,-7,-8,-3,-4,2,-15,-4,-20,-7,13,-10,-15,-19,-25,-16,76,-15,17,26,2,7,-16,-17,-14,-1,-9,21,-4,-5,2,42,-6,2,-8,-6,6,6,-5,3,-10,-2,6,14,-12,0,4,22,26,-5,-12,-1,-4,28,19,2,11,-22,27,-20,-6,15,-9,1,-10,-9,4,-6,-5,4,0,2,5,-11,-9,-11,-6,16,22,-4,-3,2,1,-7,11,6,6,8,-13,-9,-16,7,1,7,-16,-15,-2,-3,11,3,-12,6,-17,-15,18,-5,11,8,-10,-8,22,5,-6,-4,-17,-10,-2,12,-16,2,-7,-5,12,4,-18,1,9,-14,-5,1,-4,13,-6,-2,11,-8,4,1,-8,-8,0,1,6,-4,23,4,-3,-7,1,20,-11,-8,1,-14,3,12,10,-6,-5,44,11,5,-2,-3,24,3,6,2,1,0,-13,7,2,13,-9,7,9,2,-14,2,27,-14,1,-10,3,1,23,-10,6,4,-5,12,11,-7,-3,-7,1,-11,-9,12,-21,7,-10,-9,-14,17,-2,-2,-4,2,24,-8,-12,-4,4,14,5,21,12,-7,0,-3,3,-12,0,2,5,-5,11,-4,6,-2,33,-10,-2,15,-6,-10,12,-10,5,6,7,-2,11,3,1,16,2,-11,-6,11,-10,-5,-3,6,-7,-27,5,1,-1,-2,-2,3,-18,0,4,-10,4,1,-3,-10,5,-7,13,-16,-15,22,2,8,-2,16,23,-11,19,-3,-12,-11,9,-11,-24,8,-17,-5,-3,-22,6,2,8,12,-17,10,4,-1,-6,0,-17,5,5,-1,-22,1,1,3,31,-7,6,-3,5,6,8,-4,-1,-11,11,-12,-10,31,-8,-2,-10,-9,28,2,-10,-8,-19,6,7,4,-16,17,-5,9,-17,-11,-3,13,15,-14,-5,10,-19,0,-2,7,-6,1,2,13,3,4,-14,-1,-14,-7,-11,46,18,2,6,-10,-18,55,14,-4,-1,3,7,-12,23,19,8,0,-12,9,-4,-11,-10,-21,7,9,4,-16,-2,-6,18,-14,-15,-9,-11,-10,-8,3,4,-21,3,-9,9,13,0,19,8,-12,-8,-30,1,6,6,9,-23,-1,3,-25,39,-27,11,-19,8,-12,7,17,0,10,-7,-5,-2,19,-3,-12,-20,9,4,18,4,4,10,-6,10,-20,1,6,-3,6,4,5,-7,-3,-6,-8,5,16,14,12,-20,2,-6,9,-14,-2,-26,2,12,12,-15,-16,14,6,3,-8,-5,-1,-4,0,-12,1,6,6,1,8,-4,-9,-13,-5,-16,42,-11,7,-8,-21,-2,-5,-13,-15,-11,-7,5,-11,15,32,-3,-10,6,-10,11,-8,10,19,-17,-28,-1,-14,-8,-12,-5,2,-12,3,31,5,-19,33,3,10,-9,-1,4,-15,1,12,0,-8,-20,2,2,-13,1,-5,11,0,-17,1,-8,5,4,3,15,27,4,-2,5,-36,2,-2,-16,0,12,-5,-3,6,31,-12,-14,0,-8,-1,-14,8,29,-8,-2,5,-3,1,-12,-4,10,12,-4,-8,19,-1,-15,-1,9,14,2,-16,-2,15,3,10,-11,-5,-2,2,9,2,-12,4,11,0,3,2,-10,-11,15,1,0,-23,3,-3,-23,0,-6,-12,-1,11,-12,-13,2,-4,-5,-3,17,0,0,0,9,-3,4,5,-9,-11,4,-5,7,-9,-1,-9,11,-7,-16,-3,-9,-7,-11,8,-2,-6,3,11,3,-4,-7,-14,1,12,-12,-1,-9,15,19,8,5,2,26,7,-19,-7,-17,-4,-7,-1,33,-15,1,-8,1,-4,-6,-5,-3,-14,10,-1,-2,12,6,8,-7,26,-6,-12,6,0,31,-9,19,-11,-2,14,-6,16,-1,1,5,6,-4,-13,4,11,-6,2,7,-6,-15,2,-3,7,-3,-13,2,-5,-6,6,4,-4,11,-2,32,-3,12,0,20,-1,-8,-1,-10,5,18,-37,-13,-5,16,-3,11,6,10,-3,-2,9,1,-17,1,-13,4,4,5,-6,2,1,11,-18,-7,-11,11,-2,-9,-3,7,0,-16,6,3,3,9,-9,1,26,-9,3,-6,-12,3,1,17,1,-5,4,2,3,-22,6,-18,-18,-17,-15,27,6,9,5,9,12,-9,-2,-13,-3,-12,10,0,-3,-8,-3,8,7,16,1,-9,38,14,-9,-8,0,-8,6,-11,-19,-3,-9,-18,13,5,-5,13,-4,-2,-8,-15,5,42,-14,-4,0,0,-3,12,-2,-5,5,18,-39,13,-6,12,7,13,6,8,0,7,2,-49,23,-15,-11,23,3,1,11,-1,-3,7,-1,-26,24,7,-2,-11,3,15,2,14,3,-5,21,-19,-17,4,-4,-16,-18,9,-11,25,1,5,-7,7,-2,-15,0,-5,6,10,-2,5,7,-12,-8,-4,10,16,0,-32,7,-7,-26,-24,20,-5,4,-6,2,-5,-4,-3,6,13,-17,10,14,-3,-11,-9,15,4,1,-11,-8,-10,0,20,18,19,-5,22,-11,23,-2,-8,5,9,11,2,-11,31,-14,0,-14,1,11,-6,28,30,-7,-7,9,14,-6,8,1,-5,22,17,-19,-18,-13,5,18,3,11,-1,3,3,-7,4,-11,-3,-9,-30,20,-18,14,8,11,-1,23,-13,5,-11,0,-8,-4,-5,-9,10,2,2,0,17,14,-21,25,-18,-2,-8,0,1,0,-1,-29,17,-4,-18,18,-10,7,9,3,-3,0,-5,23,18,8,9,9,17,-14,4,10,-10,3,-13,-4,-3,6,-9,21,-25,2,6,-2,-26,23,-9,1,20,8,9,-12,-2,3,-6,-2,-10,-6,5,-3,23,-7,14,-7,-14,3,-7,-4,-16,-6,13,-3,-5,-5,30,-6,7,7,6,5,-23,12,8,-18,-14,-6,23,-14,-5,4,-1,19,18,1,-6,6,-14,-2,9,21,5,5,-1,2,2,-8,4,-5,2,-8,-14,-1,-3,15,13,6,-10,0,3,1,5,-12,12,-6,10,-7,16,3,22,10,-6,25,-19,-2,-11,-15,8,-14,6,-9,10,-3,8,5,-2,-13,-10,-4,-5,0,-1,-5,-1,-16,-3,3,6,4,22,9,17,-2,-6,-16,25,1,4,4,23,-10,0,-2,-26,10,2,25,22,-1,0,1,-16,-5,-7,-10,-22,-14,10,-7,15,31,15,-17,-7,36,12,-22,-3,-7,10,8,-2,2,7,-4,8,2,-11,6,17,-15,2,-22,-33,-19,19,-23,-8,1,9,-10,10,2,4,5,-6,17,6,0,11,-8,-10,-18,-6,-2,21,3,-11,-1,4,6,2,17,15,-13,-1,7,27,-11,-1,-2,2,-9,2,5,3,2,-3,-3,3,18,12,-1,11,-7,24,-7,-5,-9,16,3,6,-5,8,7,1,-12,-2,15,9,-18,1,-1,-12,0,-5,5,9,-17,31,-4,-8,-10,-12,9,-2,9,4,-18,12,-11,-6,5,0,3,16,2,1,10,-16,-4,9,-6,-3,-2,9,-10,-16,12,5,9,-6,31,11,-2,-16,-12,10,3,1,-9,-8,10,4,-7,-6,-15,6,-10,4,17,-24,17,2,-33,9,-23,-1,-1,32,-5,16,-8,3,12,21,-1,-24,-1,-24,27,-3,-8,18,-1,-10,-7,45,-39,-18,2,-4,-6,5,5,-19,34,15,36,11,8,-7,-14,-11,0,0,-11,2,6,-18,-25,-17,1,-3,-15,-31,37,-9,-14,10,-24,1,-16,1,13,-21,-11,-5,15,5,6,27,4,27,24,-5,-19,37,-19,-18,-10,-17,-17,-16,-1,18,14,11,12,6,35,-17,35,-14,-12,-5,7,1,-8,-9,10,-8,-14,1,23,1,-24,-7,-4,-20,49,18,15,8,-12,-30,10,0,-7,-8,10,-3,-2,6,-25,-22,-10,-10,0,1,9,-18,-7,6,-11,11,-6,7,-12,1,-16,-15,-10,22,-5,86,-12,16,-41,-11,-1,-1,12,26,11,-7,12,-20,42,6,8,16,6,-27,4,2,-24,-20,7,43,-15,-5,-2,-8,3,-15,12,-16,-4,5,-5,1,2,9,3,-17,19,4,-11,-1,8,0,-13,6,-10,15,12,-28,-14,55,-4,13,16,-42,-5,46,-10,-8,-3,-14,-13,-15,0,26,-7,-8,25,34,-12,-34,22,-10,-9,-17,-5,11,-11,-14,-6,-6,-9,0,14,7,-14,-19,7,-8,37,-13,-7,-7,17,-16,19,23,-14,-13,-7,-18,9,18,-20,-25,1,-22,-26,14,-28,16,-17,-6,4,6,-26,-6,-5,-6,-17,-5,-5,19,13,22,-16,-14,4,-8,-15,3,2,8,7,-3,-6,-2,17,9,5,1,-12,-14,0,-14,-9,11,15,39,-5,-25,2,-18,-5,4,-1,23,18,-9,-7,2,22,-10,10,-13,37,14,-11,-9,-6,-5,14,-6,-9,-8,0,-8,6,28,-7,7,25,-13,-6,25,-3,7,-11,-14,-8,-7,-14,15,10,6,11,33,-2,-23,-16,10,14,-3,8,-10,0,-14,17,7,2,24,-6,-9,23,-1,-19,-7,14,-14,-4,-2,6,2,5,6,-1,-11,9,5,-7,9,-7,-6,14,-14,-6,3,9,0,-1,-4,2,14,-22,-11,18,8,-36,2,-1,9,-14,-4,2,-8,4,-1,5,-8,29,-16,10,-1,1,-8,35,1,10,4,-17,-13,15,-4,0,0,22,-31,4,18,-7,0,-2,-11,-15,29,10,3,7,3,5,-16,26,-6,33,-8,8,2,-7,9,12,11,10,11,10,2,-4,-17,9,-16,-29,-7,-1,-19,29,-11,0,3,-3,1,26,23,-3,7,-4,19,-5,-29,20,21,7,-4,3,-23,-5,-11,3,1,-27,-5,20,-12,22,-5,7,14,-6,-15,-16,5,-19,-7,11,-2,-16,-7,-12,-12,-21,-9,3,-9,1,-14,11,-11,-9,6,-27,-13,-7,-6,4,49,-7,4,9,-13,-12,56,4,11,14,-15,12,19,-4,-25,11,-17,-22,15,4,-6,-8,2,-5,0,-11,1,-23,-6,3,21,-12,-1,-7,-22,-23,-1,19,1,-7,-10,-20,5,-8,5,-21,-1,-2,13,-6,-11,5,-9,-9,-13,18,-3,2,5,-12,-6,30,-13,-4,-18,20,0,8,-8,8,4,0,-7,6,5,6,29,9,42,-2,-12,7,14,-10,-13,1,-1,-17,8,-19,4,-17,-13,-20,8,25,-1,-17,19,10,5,10,-6,3,-12,14,30,-6,-11,-8,-4,-17,-12,-9,-12,41,-16,-21,-2,-15,22,2,9,2,-5,5,2,22,-8,-13,-19,56,-16,6,33,-4,35,-3,10,-15,13,-11,-5,11,0,1,-5,3,-6,21,-12,-6,-16,7,15,-6,-5,-15,1,-8,1,-3,-17,-29,-2,1,-12,9,-8,-8,-8,30,10,18,17,-34,10,5,2,17,-14,-6,-3,0,-22,6,20,-32,-5,-21,-16,8,-8,1,-2,16,-3,-6,-20,-13,5,3,10,13,-9,-13,11,0,4,5,-10,-9,5,-19,10,-4,-11,-3,-12,-4,-11,-7,-21,-30,-10,6,14,8,-2,-1,16,1,19,-15,-14,4,-1,-4,4,-7,12,-13,-12,29,-1,3,0,2,4,-11,-3,-3,-22,4,-6,3,6,9,-25,16,-4,-14,36,3,5,2,-15,-4,1,-11,13,-4,-3,-4,0,-4,-3,44,14,-2,-7,-7,13,-1,-6,-9,2,0,28,-13,-8,-6,1,-5,-6,-9,6,6,10,-3,6,-2,12,-15,5,0,0,17,-2,-18,4,6,2,3,-7,-2,-10,-19,-4,-7,-3,-4,3,9,-17,10,-4,-10,-12,-2,-10,7,-22,-7,-7,1,7,-2,6,-8,-8,7,18,9,-5,3,-6,-4,-10,4,-14,-11,-7,9,13,1,-5,-15,27,7,-4,-13,0,-9,11,8,11,0,-1,0,-4,9,5,9,-15,5,-10,27,-8,6,11,15,-11,13,-25,-15,-16,-9,9,-4,14,-7,-6,-2,-2,3,2,-21,-8,-1,-22,-5,-27,-6,4,9,7,13,0,-7,-2,-8,-12,5,6,-5,-8,-7,-2,-5,8,7,-16,1,16,1,4,0,-6,11,7,-14,-6,15,-4,17,-5,-1,5,24,5,5,-14,11,-8,-6,-18,-3,-14,-13,3,-4,-10,8,-7,19,-2,4,6,36,22,8,18,-20,-8,10,-7,1,-12,8,-5,4,-8,7,-2,-3,-7,-6,-16,0,-9,11,10,3,-1,-9,-6,0,-3,-8,-11,2,-13,19,-1,-22,4,0,-6,0,-10,-12,12,7,-12,-5,-17,3,-12,-4,12,-5,27,19,-11,10,-6,13,7,1,-1,27,-8,12,7,6,-2,-6,6,-7,-16,24,-10,-2,-12,-11,13,-10,-5,-19,-27,-14,-11,1,-1,-15,-2,18,-19,-10,3,3,-3,19,9,-11,-8,-5,24,-3,2,20,-18,-24,-5,11,4,14,14,2,-9,8,0,-9,-12,-2,12,-2,17,-19,-17,4,16,17,-10,5,-5,14,15,5,20,-10,3,-8,24,-16,-4,-1,4,-20,-10,-20,-5,-2,5,2,5,6,-22,-18,3,-8,-7,5,5,-3,12,0,18,-8,12,-2,13,-4,2,3,-4,11,-15,-13,-14,11,0,-4,-10,-10,-22,17,25,20,-4,-10,-5,34,-2,29,3,4,-12,-8,-11,9,-10,13,-16,-5,3,-2,6,8,-4,-5,-10,1,-2,-6,15,3,14,-7,-5,6,-5,-2,13,7,-9,-13,-10,14,-7,-4,6,-2,8,-15,29,15,-14,15,-8,48,-2,-13,-3,-8,-6,-20,12,-3,6,-9,-16,-4,-8,-8,31,-6,11,-3,0,-10,-10,-6,17,6,-12,1,18,-10,1,9,2,3,2,-27,17,-5,-8,-6,-7,-2,6,-15,-12,-12,13,-12,-10,1,-6,10,13,7,0,-13,8,-18,0,25,7,-7,4,-8,-5,1,9,-3,-2,-12,-3,-4,-22,-7,4,6,18,1,1,-11,-7,7,5,-3,15,-6,5,10,-22,11,-9,-16,10,-6,6,2,21,-2,-1,2,12,-10,-2,-4,5,3,20,3,10,-9,-7,-4,-10,12,-14,-6,2,1,-8,7,5,0,-9,-4,46,-14,4,12,-13,3,2,0,8,4,31,-13,6,-7,1,-14,-2,8,4,-12,9,-13,-7,5,4,1,10,-7,-14,-6,-7,10,15,1,-4,-4,11,-2,-3,-13,15,-4,-11,-8,4,2,7,10,-1,-7,37,-15,-3,-7,-16,2,13,11,-3,-23,3,-19,-5,-2,-21,9,-8,1,0,8,10,-4,0,-4,-17,11,6,9,-22,12,-11,11,-1,14,10,22,2,1,6,-11,-7,-4,-4,5,-5,-13,9,-9,-5,-7,-9,-17,1,9,-2,3,0,7,-1,16,-5,14,-4,3,-6,-12,8,16,1,7,-14,1,0,-4,9,-14,1,1,7,13,-3,11,7,9,5,-12,5,-8,0,-2,18,-15,-9,-5,-13,12,-7,-5,2,13,-11,3,2,19,21,-16,-8,12,13,7,4,2,-18,-4,-5,-6,-16,-12,-16,0,4,9,4,-10,9,0,-7,10,-8,6,-5,6,-20,-14,-6,-5,3,-23,-10,-4,18,3,-10,6,-7,15,-8,7,0,-22,3,-21,-2,5,-11,33,2,-6,6,-13,-7,14,1,10,0,13,-20,-16,-15,21,-16,16,5,40,5,1,15,-10,8,17,2,-21,-24,3,-9,5,3,-4,-6,-7,-13,-4,0,2,-23,28,-4,0,6,0,3,11,1,-13,-6,-8,16,-3,36,2,8,6,-12,20,6,8,9,-7,-5,6,3,-1,16,-14,-10,-1,40,-16,-5,12,26,-1,5,-3,23,21,-14,-5,0,2,-3,15,6,-13,5,-14,-4,-1,-16,-13,-16,20,-1,23,0,-38,-2,-10,17,16,-9,-24,-9,7,17,9,-8,-10,11,0,-26,6,-5,-5,-8,-17,1,1,10,0,-11,-16,-18,-10,5,11,14,7,-22,5,-1,-1,-9,1,-5,18,-17,17,-15,-6,-7,31,-4,-4,-1,4,6,-2,-4,-11,1,-15,-3,-5,11,1,1,-16,-6,-1,7,4,-5,18,0,-9,2,17,-14,-15,-8,-25,-7,-9,13,14,5,12,-4,31,-6,2,-1,0,7,3,-18,18,-5,-7,14,-13,-11,-6,-10,-6,2,-16,-14,26,9,-3,28,-9,9,7,-2,-2,-15,-1,3,9,-6,-24,-2,2,-7,-1,3,3,21,-3,3,-7,-10,18,-1,-7,14,1,22,-10,-18,-5,26,7,-6,-6,-8,-6,-2,7,2,-18,10,9,9,3,-2,5,-11,16,27,-5,-5,-16,-12,-14,-3,7,2,-16,-17,-1,-10,7,0,-8,22,-9,7,-5,-1,5,4,13,-6,8,7,-10,-2,-5,-8,4,-1,-2,7,-16,0,-2,-12,3,-10,-3,-2,1,-8,-1,-13,5,5,9,16,-4,14,6,12,4,7,29,14,3,-4,-6,-3,22,-23,-5,15,-28,5,2,8,-12,5,-18,8,5,-3,-18,-8,4,-17,18,5,-6,-8,-12,0,-5,-2,-10,1,6,-17,6,10,-8,-6,17,2,-5,5,11,1,-5,-4,-26,-3,14,-10,-4,3,-11,-11,-16,-3,-1,-5,2,9,2,24,17,8,4,-4,38,16,14,6,-6,-11,-2,14,-10,11,-11,12,4,-8,-8,-26,-13,13,-8,-14,21,1,-8,10,11,22,-17,7,-4,-7,-10,0,-11,18,9,5,0,10,-17,0,-2,2,15,1,-2,-7,-2,2,17,-6,-14,-13,7,11,3,1,14,0,10,8,-11,20,-19,0,-4,16,8,-13,3,4,-1,4,0,29,-12,-24,26,4,11,-14,-12,-10,15,15,-5,1,6,-3,-8,3,-13,-15,7,-6,1,-3,-11,2,-18,14,-1,-17,-2,12,12,-6,12,-23,-13,9,-18,4,0,5,-3,-14,20,7,-6,-6,-11,10,-7,-6,6,-24,4,-18,26,-23,-2,18,-14,-13,-3,-10,28,-4,30,-22,9,-13,-17,11,-19,-9,-12,14,2,-6,25,27,0,1,-7,-17,-6,-16,4,1,13,-12,-6,-6,-11,2,-12,-22,17,-5,-15,-7,-4,5,15,35,0,-3,10,-14,13,-16,4,7,-5,12,-1,11,-2,-23,-9,-3,10,-8,-3,-5,9,12,-3,-12,-4,6,3,-26,-7,5,-24,-11,-3,-9,23,-9,-32,-16,3,30,0,16,7,5,-1,0,-15,-7,40,-20,-6,-9,-2,-13,-7,-2,-2,-4,0,-22,-4,12,-14,5,-1,-3,-6,-8,2,41,32,-10,-6,3,-10,-15,-16,10,-12,-7,-12,-5,-13,51,4,-9,5,-16,15,2,1,-10,40,-14,9,36,1,-16,-7,-3,6,5,25,23,-15,-6,-14,-11,-4,-2,-9,3,-2,17,-5,-4,0,10,17,18,-1,1,-17,3,8,-6,6,15,-1,2,-14,5,-10,7,-5,11,-1,0,-10,3,13,1,-10,16,7,-8,-6,-6,-13,-3,9,20,4,2,-13,-9,-22,-8,-2,-16,12,5,-16,7,-15,9,6,1,5,2,8,9,-7,15,-2,7,35,-11,0,-2,1,1,-9,17,-7,7,-7,-20,-8,11,-2,6,9,0,10,-4,-11,29,7,0,-2,-10,-15,-3,-1,-4,4,-15,-27,1,12,22,-10,-3,20,-17,19,7,-3,5,37,-4,9,18,-3,-7,-12,-3,15,2,0,16,-11,-12,7,8,10,-2,-15,20,-14,2,13,-1,6,4,13,17,15,6,8,-6,9,-7,6,16,4,-2,-3,-7,14,-14,2,-3,-10,-7,-14,4,8,-3,10,0,12,-4,4,5,-5,-10,17,42,-9,2,5,2,5,3,-3,-14,12,2,6,4,-41,-6,2,-3,9,3,0,-7,-8,7,1,-3,11,-3,0,-11,4,2,-3,23,-11,-3,-8,10,-21,26,12,-9,16,-8,16,2,-8,13,-13,-8,-16,-18,18,-19,8,-3,2,-6,-21,8,1,-13,-17,-14,-7,6,18,-21,-36,16,8,20,-13,-8,-16,8,-9,2,-3,2,-5,-5,-7,-3,-12,-4,0,3,-7,-5,-9,12,17,-16,-6,-18,-19,7,25,-12,-17,9,1,-14,-3,-14,6,4,-17,-5,-1,-13,-7,-4,15,-6,5,1,-5,1,-4,-2,1,3,9,-28,-9,-28,-10,28,-3,-12,-6,24,6,-5,-7,-6,1,5,1,38,-34,-3,-14,-15,14,-4,37,2,-8,-21,-21,-6,-13,1,6,-46,-12,-8,-5,5,10,3,-15,28,-10,4,-4,-12,2,1,5,-13,10,19,-12,2,7,-8,-3,0,-13,-33,-5,10,0,13,-2,-2,1,-21,-6,6,-19,-3,14,-21,9,7,6,23,-1,-23,-13,8,-2,16,1,0,-4,11,7,5,-6,-11,-10,0,1,20,6,12,-2,-1,-5,20,-14,5,44,4,1,-7,-7,10,1,-12,22,6,1,10,-6,-9,4,3,3,0,5,-1,0,0,13,-10,-1,-14,13,0,8,11,-14,-15,19,-11,-4,-3,-15,2,4,-9,37,11,-28,-4,-6,-4,-2,-17,-3,-2,-5,-28,19,15,-8,-30,-1,-13,4,6,-3,8,-9,18,6,-2,-24,-14,-13,-16,3,12,34,8,9,0,-3,-9,18,-13,0,-8,-11,19,-1,15,-6,37,7,-12,-1,11,-2,-12,3,-3,-29,2,-10,0,-7,36,-18,-10,-4,-9,0,3,-1,12,-8,-6,-14,13,18,24,12,-1,-4,40,3,-10,10,4,-3,21,14,13,-2,11,12,-5,-11,-6,11,-2,18,7,4,-3,-3,-2,10,6,6,6,-11,9,-14,-14,6,17,11,0,0,1,-1,8,-3,1,-3,5,0,14,-3,4,12,3,-4,-1,-19,-9,-6,3,-1,-1,-7,8,7,10,-14,10,-19,-7,3,10,-8,-2,-1,2,-7,-8,-7,2,26,2,17,-3,5,0,6,4,32,-3,-4,-3,-13,-11,-7,-10,12,4,11,33,0,-12,-10,11,5,16,-7,9,-4,-4,-16,-8,-8,14,2,9,-6,-5,-11,-6,14,-13,-6,-5,-8,-7,-3,-11,28,9,8,6,5,10,-11,-8,3,-23,-16,1,12,-14,0,-2,18,3,-10,5,25,9,-20,0,15,-3,1,4,1,-10,-7,-7,16,23,-7,21,0,-14,2,3,6,-14,-3,-15,-5,-15,-4,-8,14,5,4,-19,4,-6,-18,-8,15,-2,8,-4,3,-6,-5,-11,14,16,-10,-12,-3,-10,6,-1,-6,-9,12,-4,-9,-8,-1,-4,30,-4,24,-11,16,-2,7,6,27,5,-10,-2,0,17,-8,-14,-7,-10,3,27,29,-19,-11,-5,2,-10,-1,-14,2,-2,0,-9,1,-2,23,-23,15,-8,-12,21,4,14,-6,-1,-11,-1,10,-5,11,16,-3,9,35,-7,2,1,6,-4,-11,-7,-14,-3,-8,18,9,12,7,-12,34,-1,-27,9,11,7,-9,-8,9,6,-9,-4,7,-4,-10,10,10,-11,6,-7,4,-11,-6,0,-4,-1,10,-2,15,-13,13,-31,24,1,-13,-19,8,-2,-5,7,-4,10,-4,-10,-10,-10,-8,-1,-10,-8,-3,1,-9,-3,1,1,-11,-2,6,-10,34,-5,12,-15,34,-1,-20}\n\n#define IP1_BIAS {30,-121,-51,77,40,20,46,-35,28,-33}\n\n#define CONV1_BIAS_LSHIFT 6\n#define CONV1_OUT_RSHIFT 9\n#define CONV2_BIAS_LSHIFT 4\n#define CONV2_OUT_RSHIFT 9\n#define CONV3_BIAS_LSHIFT 1\n#define CONV3_OUT_RSHIFT 7\n#define IP1_BIAS_LSHIFT 1\n#define IP1_OUT_RSHIFT 8\n#define INPUT_MEAN_SHIFT {125,123,114}\n#define INPUT_RIGHT_SHIFT {8,8,8}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-cifar10/readme_iar.txt",
    "content": "CMSIS NN Lib example arm_nnexample_cifar10 for\n  Cortex-M0, Cortex-M3, Cortex-M4 and Cortex-M7.\n\nThe example is configured for IAR Embedded Workbench for ARM Simulator.\n\nWhen changing target, remember to change the ARM_MATH_CMx and __FPU_PRESENT\nPreprocessor defines for C/C++ Compiler\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-gru/arm_nnexamples_gru.cpp",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2018 Arm Limited. All rights reserved.\n*\n*\n* Project:       CMSIS NN Library\n* Title:         arm_nnexamples_gru.cpp\n*\n* Description:   Gated Recurrent Unit Example\n*\n* Target Processor: Cortex-M4/Cortex-M7\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of Arm LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n/**\n * @ingroup groupExamples\n */\n\n/**\n * @defgroup GRUExample Gated Recurrent Unit Example\n *\n * \\par Description:\n * \\par\n * Demonstrates a gated recurrent unit (GRU) example with the use of fully-connected,\n * Tanh/Sigmoid activation functions.\n *\n * \\par Model definition:\n * \\par\n * GRU is a type of recurrent neural network (RNN). It contains two sigmoid gates and one hidden\n * state. \n * \\par\n * The computation can be summarized as:\n * <pre>z[t] = sigmoid( W_z &sdot; {h[t-1],x[t]} )\n * r[t] = sigmoid( W_r &sdot; {h[t-1],x[t]} ) \n * n[t] = tanh( W_n &sdot; [r[t] &times; {h[t-1], x[t]} ) \n * h[t] = (1 - z[t]) &times; h[t-1] + z[t] &times; n[t] </pre>\n * \\image html GRU.gif \"Gate Recurrent Unit Diagram\"\n *\n * \\par Variables Description:\n * \\par\n * \\li \\c update_gate_weights, \\c reset_gate_weights, \\c hidden_state_weights are weights corresponding to update gate (W_z), reset gate (W_r), and hidden state (W_n).\n * \\li \\c update_gate_bias, \\c reset_gate_bias, \\c hidden_state_bias are layer bias arrays\n * \\li \\c test_input1, \\c test_input2, \\c test_history are the inputs and initial history\n *\n * \\par\n * The buffer is allocated as:\n * \\par\n * | reset | input | history | update | hidden_state |\n * \\par\n * In this way, the concatination is automatically done since (reset, input) and (input, history)\n * are physically concatinated in memory.\n * \\par\n *  The ordering of the weight matrix should be adjusted accordingly.\n *\n  *\n * \n * \\par CMSIS DSP Software Library Functions Used:\n * \\par\n * - arm_fully_connected_mat_q7_vec_q15_opt()\n * - arm_nn_activations_direct_q15()\n * - arm_mult_q15()\n * - arm_offset_q15()\n * - arm_sub_q15()\n * - arm_copy_q15()\n *\n * <b> Refer  </b>\n * \\link arm_nnexamples_gru.cpp \\endlink\n *\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include \"arm_nnexamples_gru_test_data.h\"\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n#ifdef _RTE_\n#include \"RTE_Components.h\"\n#ifdef RTE_Compiler_EventRecorder\n#include \"EventRecorder.h\"\n#endif\n#endif\n\n#define DIM_HISTORY 32\n#define DIM_INPUT 32\n#define DIM_VEC 64\n\n#define USE_X4\n\n#ifndef USE_X4\nstatic q7_t update_gate_weights[DIM_VEC * DIM_HISTORY] = UPDATE_GATE_WEIGHT_X2;\nstatic q7_t reset_gate_weights[DIM_VEC * DIM_HISTORY] = RESET_GATE_WEIGHT_X2;\nstatic q7_t hidden_state_weights[DIM_VEC * DIM_HISTORY] = HIDDEN_STATE_WEIGHT_X2;\n#else\nstatic q7_t update_gate_weights[DIM_VEC * DIM_HISTORY] = UPDATE_GATE_WEIGHT_X4;\nstatic q7_t reset_gate_weights[DIM_VEC * DIM_HISTORY] = RESET_GATE_WEIGHT_X4;\nstatic q7_t hidden_state_weights[DIM_VEC * DIM_HISTORY] = HIDDEN_STATE_WEIGHT_X4;\n#endif\n\nstatic q7_t update_gate_bias[DIM_HISTORY] = UPDATE_GATE_BIAS;\nstatic q7_t reset_gate_bias[DIM_HISTORY] = RESET_GATE_BIAS;\nstatic q7_t hidden_state_bias[DIM_HISTORY] = HIDDEN_STATE_BIAS;\n\nstatic q15_t test_input1[DIM_INPUT] = INPUT_DATA1;\nstatic q15_t test_input2[DIM_INPUT] = INPUT_DATA2;\nstatic q15_t test_history[DIM_HISTORY] = HISTORY_DATA;\n\nq15_t     scratch_buffer[DIM_HISTORY * 4 + DIM_INPUT];\n\nvoid gru_example(q15_t * scratch_input, uint16_t input_size, uint16_t history_size,\n                 q7_t * weights_update, q7_t * weights_reset, q7_t * weights_hidden_state,\n                 q7_t * bias_update, q7_t * bias_reset, q7_t * bias_hidden_state)\n{\n  q15_t    *reset = scratch_input;\n  q15_t    *input = scratch_input + history_size;\n  q15_t    *history = scratch_input + history_size + input_size;\n  q15_t    *update = scratch_input + 2 * history_size + input_size;\n  q15_t    *hidden_state = scratch_input + 3 * history_size + input_size;\n\n  // reset gate calculation\n  // the range of the output can be adjusted with bias_shift and output_shift\n#ifndef USE_X4\n  arm_fully_connected_mat_q7_vec_q15(input, weights_reset, input_size + history_size, history_size, 0, 15, bias_reset,\n                                     reset, NULL);\n#else\n  arm_fully_connected_mat_q7_vec_q15_opt(input, weights_reset, input_size + history_size, history_size, 0, 15,\n                                         bias_reset, reset, NULL);\n#endif\n  // sigmoid function, the size of the integer bit-width should be consistent with out_shift\n  arm_nn_activations_direct_q15(reset, history_size, 0, ARM_SIGMOID);\n  arm_mult_q15(history, reset, reset, history_size);\n\n  // update gate calculation\n  // the range of the output can be adjusted with bias_shift and output_shift\n#ifndef USE_X4\n  arm_fully_connected_mat_q7_vec_q15(input, weights_update, input_size + history_size, history_size, 0, 15,\n                                     bias_update, update, NULL);\n#else\n  arm_fully_connected_mat_q7_vec_q15_opt(input, weights_update, input_size + history_size, history_size, 0, 15,\n                                         bias_update, update, NULL);\n#endif\n\n  // sigmoid function, the size of the integer bit-width should be consistent with out_shift\n  arm_nn_activations_direct_q15(update, history_size, 0, ARM_SIGMOID);\n\n  // hidden state calculation\n#ifndef USE_X4\n  arm_fully_connected_mat_q7_vec_q15(reset, weights_hidden_state, input_size + history_size, history_size, 0, 15,\n                                     bias_hidden_state, hidden_state, NULL);\n#else\n  arm_fully_connected_mat_q7_vec_q15_opt(reset, weights_hidden_state, input_size + history_size, history_size, 0, 15,\n                                         bias_hidden_state, hidden_state, NULL);\n#endif\n\n  // tanh function, the size of the integer bit-width should be consistent with out_shift\n  arm_nn_activations_direct_q15(hidden_state, history_size, 0, ARM_TANH);\n  arm_mult_q15(update, hidden_state, hidden_state, history_size);\n\n  // we calculate z - 1 here\n  // so final addition becomes substraction\n  arm_offset_q15(update, 0x8000, update, history_size);\n  // multiply history\n  arm_mult_q15(history, update, update, history_size);\n  // calculate history_out\n  arm_sub_q15(hidden_state, update, history, history_size);\n\n  return;\n}\n\nint main()\n{\n  #ifdef RTE_Compiler_EventRecorder\n  EventRecorderInitialize (EventRecordAll, 1);  // initialize and start Event Recorder\n  #endif\n\n  printf(\"Start GRU execution\\n\");\n  int       input_size = DIM_INPUT;\n  int       history_size = DIM_HISTORY;\n\n  // copy over the input data \n  arm_copy_q15(test_input1, scratch_buffer + history_size, input_size);\n  arm_copy_q15(test_history, scratch_buffer + history_size + input_size, history_size);\n\n  gru_example(scratch_buffer, input_size, history_size,\n              update_gate_weights, reset_gate_weights, hidden_state_weights,\n              update_gate_bias, reset_gate_bias, hidden_state_bias);\n  printf(\"Complete first iteration on GRU\\n\");\n\n  arm_copy_q15(test_input2, scratch_buffer + history_size, input_size);\n  gru_example(scratch_buffer, input_size, history_size,\n              update_gate_weights, reset_gate_weights, hidden_state_weights,\n              update_gate_bias, reset_gate_bias, hidden_state_bias);\n  printf(\"Complete second iteration on GRU\\n\");\n\n  return 0;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-gru/arm_nnexamples_gru_test_data.h",
    "content": "#define UPDATE_GATE_WEIGHT_X2 {-62,83,-58,-89,-80,1,-93,31,101,95,121,-83,71,18,-98,-5,44,-100,-16,-73,25,62,34,-22,-16,42,9,-125,60,-78,15,-76,-76,-63,71,-25,78,-66,38,-118,-71,-120,-80,28,33,51,82,-105,26,-47,38,86,-114,44,90,-98,105,-123,24,95,-12,11,49,-35,78,104,104,17,-116,-40,-83,4,88,-110,-111,-98,18,-89,120,-84,66,-69,-8,-22,-91,-29,-41,110,55,-124,-67,103,-40,-100,1,-25,-68,-62,-89,-75,-20,-78,101,-92,-51,-97,-54,59,-78,41,34,-102,-9,-53,56,103,-55,13,81,-75,-20,-37,29,36,110,84,-80,-127,-68,-33,-70,-16,-42,-9,-104,107,-81,-16,42,-74,-63,-4,-128,-109,-105,55,-51,-68,-88,19,-39,116,-7,66,52,-29,63,-94,71,-2,-127,31,-103,120,124,41,-13,-23,127,59,-22,54,-2,32,-87,-109,85,-31,-5,-59,-122,-97,-14,-88,-19,43,-30,115,42,14,10,121,28,-63,83,-85,101,40,23,-39,74,-99,73,50,-20,123,-88,-13,-126,-25,70,-11,16,-28,121,-29,20,-69,104,117,-40,-1,-97,-12,31,32,15,-32,77,31,16,40,107,-52,-52,-89,-17,124,-95,54,48,-40,37,24,-46,42,119,5,-118,-45,-10,106,83,57,-74,-10,-56,85,37,-25,83,-31,-54,111,-78,-96,-114,-65,-100,28,-31,-111,33,66,74,-43,112,119,-80,-26,74,-81,-123,55,-126,32,-66,110,-86,-118,-21,15,16,26,13,-109,41,-16,88,81,-82,-55,-89,109,-52,118,-39,57,-16,86,-68,-10,-19,110,-50,-17,-84,103,-3,94,-8,50,15,-44,-87,6,18,8,61,66,-108,-67,-6,107,-68,25,25,25,-82,71,62,121,-31,-4,17,-6,-60,-17,116,-67,45,117,-90,12,-68,20,121,-65,-43,74,-104,-42,-69,35,4,-17,5,95,-82,18,65,43,-57,89,1,-8,37,-51,10,67,4,-50,-18,81,-120,44,98,16,-98,25,127,88,-111,-49,114,111,-17,-74,40,-18,35,19,31,48,-23,53,102,41,89,-27,87,-54,-121,-113,97,125,125,-108,58,-17,8,70,-67,-55,59,42,-85,78,27,16,66,67,54,-74,33,-19,72,77,126,-122,-7,-109,58,78,-88,15,2,16,37,-34,-114,-88,-53,88,115,19,7,-67,93,80,-48,-11,-61,31,38,29,-59,-70,0,25,106,-7,-44,53,62,19,-64,109,70,-103,-114,97,57,112,24,-66,-127,29,29,-31,-87,-125,54,-98,101,-39,56,-88,-63,-113,-73,-91,80,112,-27,-75,-42,-5,79,60,-55,23,-61,66,51,39,-91,96,-60,-64,-1,75,55,-108,73,38,75,-113,-9,-92,-92,-3,-30,93,-27,-100,-55,125,52,72,110,12,84,-83,65,-79,92,11,87,-106,35,-38,-24,-79,15,-11,-109,-22,95,82,-1,-2,-113,116,-64,93,-62,-11,101,35,-91,51,-6,21,29,25,-16,68,-103,-111,-23,-123,-80,24,-17,-7,53,23,114,-13,-105,-88,120,13,-25,-40,29,-38,-43,3,2,-121,-110,54,-43,30,66,28,60,-81,-6,-8,126,-80,64,-42,126,75,-69,-116,-41,81,94,31,-116,5,-46,5,-21,-105,78,-20,-34,54,46,-124,120,-83,44,-17,-52,-23,-110,34,-35,31,61,88,-108,-38,31,117,-26,38,-57,65,9,0,59,124,14,-39,-95,-91,107,-34,85,-83,-31,-68,-78,-86,21,-118,56,60,-3,-116,33,53,-94,85,77,91,-94,100,-89,97,88,111,36,74,-110,7,-74,91,-112,21,32,-59,98,36,10,-41,44,-114,-88,92,111,72,43,58,42,-125,-11,96,126,25,96,-105,-128,-70,85,-82,-17,103,23,-37,76,58,108,16,-116,-44,22,89,0,6,-108,27,-34,88,-125,22,-45,-116,28,-29,-70,-3,-81,-80,42,119,105,-40,-109,105,64,5,72,-32,-95,90,60,6,-29,40,-19,57,89,-50,34,-123,-32,-18,20,9,-19,-81,-45,-120,-120,20,2,18,70,75,100,64,126,-9,63,-82,114,-62,106,-11,104,-9,-13,88,-40,101,73,108,52,33,116,-54,-114,-47,85,2,-117,-80,100,-20,98,-75,-83,-24,-125,-91,-97,95,-46,15,-94,-21,53,-27,-18,65,87,112,38,-115,-27,37,-84,1,103,85,-50,36,-49,-119,68,20,119,-113,43,-67,105,44,4,-48,16,-42,83,-39,106,31,-34,-76,-51,68,82,-111,-116,-104,-118,109,-29,-6,-91,81,-102,-76,-82,64,121,27,-98,-24,-88,36,115,59,-84,-121,4,29,45,73,110,-56,-12,109,-88,85,-30,87,18,118,23,21,106,40,115,78,-72,-103,11,83,44,117,-63,98,30,115,123,-39,25,15,84,52,46,77,64,-104,125,-13,34,125,65,6,57,-128,-2,115,7,-65,-73,82,72,-109,99,43,-94,-106,-39,-4,-127,58,123,-128,29,-80,4,51,109,-50,-38,25,-13,-52,-106,87,76,44,78,101,16,-102,-20,104,23,107,-88,18,-85,119,-21,-53,-84,-7,-8,-114,23,-54,74,80,77,-40,19,-75,-41,60,77,82,-96,-121,-43,114,-124,-1,-75,32,34,-117,21,64,-87,-100,-29,-36,-45,-46,-111,4,-44,-94,-117,100,-25,-27,105,95,15,88,25,-38,-88,122,62,-62,-28,95,-86,125,-83,-9,-100,101,-124,22,21,-91,50,-100,-27,-92,115,86,85,33,-112,-43,61,114,62,-31,-84,-7,5,-26,-10,-21,-89,60,-96,48,-34,88,-80,-91,92,12,118,-2,-38,83,-50,-109,-111,-26,-109,-78,-7,84,60,-95,15,-71,112,126,71,36,39,-42,-85,-126,-68,105,-18,-127,48,-41,57,-93,13,-25,-71,66,-43,-23,122,4,-70,123,115,124,-61,-32,18,-18,49,123,-101,37,-50,-111,-73,124,-18,54,-64,93,-69,16,112,21,-56,56,127,113,-48,-57,-4,85,-84,53,44,28,-126,-59,-11,94,58,-64,112,82,127,58,50,5,-6,-102,90,-18,-86,104,17,108,-64,-22,73,-102,-17,-31,-11,-105,-40,-49,84,-82,104,57,30,112,-119,-92,78,-92,35,90,-45,-13,-75,-125,-19,-83,-75,29,15,-33,127,-14,29,-80,61,41,67,-14,-18,101,101,108,-24,-61,-90,-59,-48,-114,1,-14,106,52,109,-45,-100,74,-33,-68,-94,-68,-22,-99,31,-86,85,-27,-70,69,127,92,125,-95,117,-87,-8,-71,18,94,-90,103,-31,-1,-50,-60,-2,96,31,-1,-98,75,104,-6,-38,-24,127,94,-48,97,-96,4,-108,106,76,-31,-7,-41,58,-13,-72,-81,-116,-24,-45,46,-20,114,97,-14,125,11,22,26,27,-2,-88,-28,-76,119,50,52,66,65,120,-42,-43,-59,-56,-28,-42,-87,-18,-47,-85,74,119,97,-6,-127,-86,30,18,-43,48,-73,22,-5,34,122,9,115,-32,-63,-13,61,119,18,-113,-12,80,26,-39,-76,-101,-104,-6,48,38,-82,-52,-91,-38,112,110,115,76,69,100,-116,109,3,-35,16,94,24,110,86,25,-5,84,2,62,57,-121,-28,-108,29,127,-25,89,16,-86,15,-68,97,-115,-73,-110,-13,41,16,-47,-74,75,-71,-52,-20,-29,3,-34,68,-2,-29,63,-5,95,-79,26,-42,-91,-109,-19,107,-102,62,111,-35,80,36,55,-65,26,76,-86,26,-88,-116,110,84,-62,-13,120,-31,-47,-32,84,-98,58,74,18,-22,5,-83,-3,11,53,114,32,-118,16,-91,-74,-67,-68,78,-34,102,88,-80,-5,63,-35,22,-87,-97,-30,-76,94,116,44,-109,-122,38,112,-103,99,-119,49,35,107,108,47,54,11,-50,-73,37,-56,71,-125,108,-47,15,-115,-65,-90,-13,-27,-16,-94,72,-101,-74,-58,27,121,-91,110,-101,45,-54,105,-8,-88,-66,-71,-128,-35,-53,-50,-51,-85,113,96,16,-72,-80,-54,78,47,75,-82,-115,-53,40,-39,54,-43,23,-35,43,81,125,-8,51,49,-91,122,123,-102,-65,-78,19,14,51,-68,60,43,-36,105,44,-100,36,89,-40,123,31,105,26,-128,63,-49,-115,48,96,-91,-73,99,37,2,3,-52,-103,-11,10,31,-106,-119,-67,118,-71,-67,-52,-12,43,-21,99,-64,-88,64,100,-62,-11,-32,23,-90,68,-102,116,-21,-78,1,108,-2,116,-122,114,53,-33,102,65,33,73,92,-79,-51,-50,-65,49,76,119,-51,15,-21,95,-109,80,17,7,115,115,-117,-77,-39,-115,-19,-83,-35,-122,56,94,1,-13,83,8,-84,72,-88,87,77,-82,-125,-18,75,10,-106,51,-59,120,-85,22,-45,-68,-44,-38,64,38,-75,-69,122,88,53,18,41,-108,48,38,-127,34,-85,36,-116,-96,56,105,38,76,92,-41,99,-101,-100,112,74,57,60,85,-14,95,0,-73,-46,12,-93,-14,-78,-1,-2,-10,34,111,115,-91,16,-79,76,-108,-8,-84,33,111,-98,2,-6,8,0,-77,1,52,18,-5,-77,-46,-80,-20,-61,-30,-81,-73,-7,49,-107,-25,-97,-125,69,-89,31,-124,-108,76,96,58,88,24,49,79,11,-43,-60,100,108,62,21,-72,-111,81,46,-108,-107,29,90,-13,55,-23,-63,-10,-128,-124,86,88,3,-39,-39,98,-57,-24,-97,-124,85,-84,-78,4,11,59,-73,120,66,21,-73,20,-95,91,-53,76,98,-29,49,-76,-74,-67,-80,-29,-106,111,60,32,-127,-87,104,30,95,-21,93,-23,-97,26,-46,63,12,-28,123,12,30,102,-115,36,74,-54,-54,-103,-57,-95,-72,-60,24,-14,-41,27,9,19,-74,-12,-65,-7,17,122,-85,123,16,-127,22,75,-85,-28,-50,125,-102,-28,24,120,-53,-128,-108,-65,-37,60,-53,-10,28,-38,-11,71,-45,21,-77,-108,-115,-24,103,-29,121,-23,11,-102,-115,-108,-78,-55,84,-17,-58,-8,-118,-119,-56,1,-109,42,-94,51,54,6,-30,56,12,23,-10,121,-113,-74,9,12,0,-93,67,51,-110,44,-69,-40,-72,49,-16,-31,-16,9,-43,7,90,96,-63,-24,-74,-26,35,-16,109,-101,38,87,-13,11,-18,-54,33,37,106,84,79,80,23,-76,-80,-45,-106,56,3,-103,-92,86,-81,68,90,-126,-125,102,-83,-36,83,97,-39,-44,-14,-14,79,-9,-31,119,114,29,-27,-29,55,-72,-3,54,49,-40,22,-37,54,68,71,66,-66,-23,49,69,-73,83,-14,-70,9,117,-63,111,65,66,92,58,-56,15,20,52,-72,-4,34,-94,119,-95}\n\n#define UPDATE_GATE_WEIGHT_X4 {-62,78,83,104,-68,28,-33,-63,-58,104,-89,17,-70,83,-16,-85,-80,-116,1,-40,-42,101,-9,40,-93,-83,31,4,-104,23,107,-39,101,88,95,-110,-81,74,-16,-99,121,-111,-83,-98,42,73,-74,50,71,18,18,-89,-63,-20,-4,123,-98,120,-5,-84,-128,-88,-109,-13,44,66,-100,-69,-105,-126,55,-25,-16,-8,-73,-22,-51,70,-68,-11,25,-91,62,-29,-88,16,19,-28,34,-41,-22,110,-39,121,116,-29,-16,55,42,-124,-7,20,66,-69,9,-67,-125,103,52,104,-29,117,60,-40,-78,-100,63,-40,-94,-1,15,1,-76,-25,71,-97,-2,-12,-76,-68,-63,-62,-127,31,31,32,71,-89,-25,-75,-103,15,120,-32,78,-20,-66,-78,124,77,41,31,38,101,-118,-92,-13,16,-23,40,-71,-51,-120,-97,127,107,59,-52,-80,-54,28,59,-22,-52,54,-89,33,-78,51,41,-2,-17,32,124,82,34,-105,-102,-87,-95,-109,54,26,-9,-47,-53,85,48,-31,-40,38,56,86,103,-5,37,-59,24,-114,-55,44,13,-122,-46,-97,42,90,81,-98,-75,-14,119,-88,5,105,-20,-123,-37,-19,-118,43,-45,24,29,95,36,-30,-10,115,106,-12,110,11,84,42,83,14,57,49,-80,-35,-127,10,-74,121,-10,-56,-8,85,50,-120,37,44,-34,37,15,-25,-44,98,-114,16,-88,83,-87,-31,6,-98,-53,25,88,-54,18,111,8,127,115,88,19,-78,61,-96,66,-111,7,-49,-67,-114,-108,-65,-67,114,93,111,80,-100,-6,28,107,-17,-48,-74,-11,-31,-68,-111,25,40,-61,-18,31,33,25,66,25,35,38,19,29,74,-82,-43,71,31,-59,48,-70,112,62,119,121,-23,0,53,25,-80,-31,-26,-4,102,106,41,-7,74,17,-81,-6,89,-44,-27,53,-123,-60,55,-17,87,62,-54,19,-126,116,32,-67,-121,-64,-113,109,-66,45,110,117,97,70,125,-103,-86,-90,-118,12,125,-114,-108,97,-21,-68,15,20,58,57,-17,112,16,121,26,-65,8,24,70,-66,13,-43,-109,74,-67,-127,-55,29,41,-104,-16,-42,59,29,42,-31,88,-69,81,35,-85,-87,78,-125,-82,4,-55,-17,27,54,16,-98,-89,5,109,95,66,101,67,-39,-52,-82,118,18,54,56,-74,-88,-39,65,57,43,33,-63,-19,-113,-16,-57,86,89,72,-73,77,-91,-68,1,-10,-8,126,80,-122,112,-19,37,110,-51,-7,-27,-109,-75,-50,10,-17,67,58,-42,78,-5,-84,4,103,-50,-88,79,15,60,-3,-18,94,81,2,-55,16,23,-61,-16,66,68,-52,44,-23,-114,51,-103,39,-111,-110,-88,34,92,-91,-23,96,-123,-35,111,31,72,-60,-80,-64,24,61,43,88,58,-1,-17,75,-7,-108,42,-38,-125,55,53,-108,23,31,-11,117,96,73,114,38,-13,-26,126,38,25,75,-105,-113,-88,-57,96,65,-105,-9,120,-92,13,9,-128,0,-70,-92,-25,-3,-40,59,85,124,-82,-30,29,93,-38,14,-17,-39,103,-27,-43,-100,3,-95,23,-91,-37,-55,2,125,-121,107,76,-34,58,52,-110,72,54,85,108,-83,16,110,-43,12,30,-31,-116,-68,-44,84,66,-83,28,-78,22,-86,89,65,60,-79,-81,21,0,-118,6,92,-6,11,-8,56,-108,60,27,87,126,-106,-80,-3,-34,-116,88,35,64,-38,-42,33,-125,53,22,-24,126,-79,75,-94,-45,85,-116,15,-69,-11,-116,77,28,91,-29,-109,-41,-22,81,-94,-70,100,-3,95,94,82,31,-89,-81,97,-80,-1,-116,-2,5,88,42,111,119,-113,-46,116,5,36,105,74,-40,-64,-21,93,-105,-110,-109,7,105,-62,78,-11,-20,-74,64,91,5,101,-34,35,54,-112,72,21,-32,-91,46,51,-124,32,-95,-59,90,-6,120,21,-83,98,60,36,6,29,44,25,-17,10,-29,-41,40,-19,-18,57,65,110,4,-56,51,89,87,-50,112,-12,109,109,-50,34,38,-123,-115,-88,-38,85,25,-32,-27,-18,37,-30,-13,87,-52,20,-84,9,1,18,-106,118,87,-19,103,-81,85,23,76,21,44,-45,-50,-120,36,106,78,40,101,-120,-49,20,-119,115,16,78,-102,2,68,18,20,-72,-20,-103,104,70,119,75,-113,11,23,83,107,100,43,64,-67,44,-88,117,18,126,105,-9,44,-63,-85,98,119,63,4,-82,-48,30,-21,115,-53,114,16,-62,-42,123,-84,-39,-7,106,83,-11,-39,25,-8,15,-114,104,106,-9,31,84,23,52,-54,-13,-34,88,-76,46,74,77,80,-40,-51,101,68,64,77,-104,-40,73,82,108,-111,125,19,-13,-75,52,-116,33,-104,34,-41,125,60,116,-118,-54,109,65,77,6,82,-114,-29,-47,-6,57,-96,-128,-121,85,-91,2,81,-2,-43,115,114,-117,-102,-80,-76,7,-124,-65,-1,100,-82,-20,64,-73,-75,82,32,98,121,-75,27,72,34,-109,-117,-83,-98,-24,-24,99,21,43,64,-125,-88,-91,36,-94,-87,-106,-100,-97,115,95,59,-39,-29,-4,-36,-46,-84,15,-121,-127,-45,58,-46,-94,4,-21,29,123,-111,-128,4,53,45,-27,73,29,-44,-80,-94,-117,-109,100,-78,-84,-18,53,101,-25,-7,-27,84,44,101,28,108,105,60,95,-95,-126,-24,-59,-61,15,15,88,-71,-11,-90,94,-59,25,112,-38,126,58,-48,-64,-114,-88,71,122,36,112,1,82,-14,62,39,-62,-42,127,106,58,52,-28,-85,95,-126,50,109,5,-45,-86,-68,125,105,-6,-100,-102,74,-83,-18,-9,-127,90,-33,-18,-68,-100,48,101,-41,-86,-94,104,-68,-124,57,22,-93,17,-22,108,-99,21,13,-91,-25,-64,31,-22,-86,50,-71,-100,66,73,85,-102,-27,-27,-43,-92,-23,-17,-70,-31,69,115,122,86,4,-11,127,-105,92,85,-70,33,123,-40,125,-49,-95,-112,115,-43,124,84,117,-82,-87,61,-61,114,-32,104,-8,57,-71,62,18,-31,-18,30,18,112,94,-84,49,-7,123,-119,-90,-92,103,5,-101,-26,37,78,-31,-92,-1,-10,-50,-21,-111,35,-50,90,-60,-89,-73,60,124,-45,-2,-13,96,-96,-18,48,54,-75,31,-125,-1,-34,-64,88,93,-19,-98,-83,75,-80,-69,-91,16,-75,104,29,-6,92,112,12,21,15,-38,-33,-24,118,-56,-2,56,127,127,-14,94,-38,127,83,113,29,-48,-80,97,-50,-48,-109,-57,61,-96,41,4,-111,-4,-26,85,67,-108,-14,106,76,-113,-31,-12,-2,-30,-29,-76,-7,80,-41,26,63,94,-5,116,58,-39,-13,-76,95,44,-79,-109,-72,-101,-81,-104,26,-122,-42,38,-116,-6,-24,48,-91,112,-109,-103,-45,38,46,-82,-19,99,107,-119,-20,-52,114,-91,-102,49,62,35,97,-38,-14,112,111,107,-35,108,125,110,11,115,80,47,36,54,22,76,26,69,55,11,-65,-50,27,100,-2,-116,26,-73,76,37,-88,109,-28,3,-86,-56,26,71,-76,-35,119,16,-88,-125,-116,108,50,94,52,24,110,-47,84,15,66,110,65,86,-62,-115,-13,-65,120,25,-42,-5,120,-90,-31,-13,-43,84,-59,2,-47,-27,-32,-16,-56,62,-28,57,84,-94,-98,72,-42,-121,-87,-28,58,-101,74,-74,-18,-108,-47,29,18,-58,-22,27,-85,127,74,-25,5,121,-83,-91,119,89,97,16,-3,110,11,-101,-6,-86,-127,15,53,45,114,-54,-86,-68,30,97,32,105,-118,-8,18,-115,-43,-73,16,-88,-91,-66,48,-110,-73,-13,-74,-71,-67,-128,22,41,-5,16,-68,-35,78,-53,34,-47,122,-74,-34,-50,102,-51,9,75,115,-71,88,-85,-80,113,-32,-52,-63,-20,-5,96,63,16,-13,-29,61,3,-35,-72,22,-80,119,-34,18,68,-87,-54,-97,78,47,-12,75,43,-88,115,87,-91,-82,-21,-115,99,77,16,-82,-79,-53,-64,40,-88,-125,76,-18,-108,-39,64,54,100,75,-8,10,-84,-43,-62,23,-11,-106,33,51,111,-35,-32,43,23,-59,-98,120,2,81,-90,125,68,-85,-6,22,8,-8,-102,51,116,-45,0,-68,-77,49,-21,-91,-78,-44,1,-38,52,122,1,123,108,64,18,38,-5,-102,-2,-65,116,-75,-77,-69,-46,-78,-122,19,114,122,-80,88,-20,14,53,51,-33,53,-61,18,-30,-68,102,60,65,41,-81,-108,-73,43,33,-36,73,48,-7,38,49,105,92,44,-79,-127,-107,34,-25,-100,-51,36,-50,-85,-97,36,-125,89,-65,-40,49,-116,69,-96,-89,123,76,31,119,56,31,105,-124,105,-51,26,15,38,-108,76,76,-128,-21,63,95,92,96,-41,58,-49,-109,-115,80,99,88,-101,24,48,17,96,7,-100,49,112,79,-91,115,-73,115,74,11,57,-43,99,-117,37,-77,60,-60,85,100,2,-39,3,-115,-14,108,95,62,-52,-19,-103,-83,0,21,-73,-72,-11,-35,10,-122,-46,-111,12,81,31,56,-106,94,-93,46,-14,-108,-119,1,-67,-13,-78,-107,-1,29,118,83,-71,8,-2,90,-10,-13,-67,-84,-52,72,34,55,111,-23,-63,-54,-10,-103,-118,3,-119,-103,-128,-57,-124,-95,-56,-92,1,86,86,-72,88,-60,-109,-81,42,68,3,24,-39,-14,-94,90,51,-126,-39,-41,98,27,54,-125,6,102,-57,9,-24,19,-30,-83,56,-36,-97,-74,-124,-12,12,83,23,97,85,-65,-84,-7,-10,-39,121,-44,-78,17,4,122,-113,-14,-74,-14,11,-85,59,123,9,79,12,-9,-73,16,120,-127,0,-31,-93,119,66,22,21,75,67,114,51,29,-73,-85,20,-28,-110,-27,44,-29,-95,-50,91,125,-69,55,-40,-72,-53,-102,76,-28,-72,-3,49,54,98,24,-29,120,-16,49,-31,-40,49,-53,-76,-128,-16,22,9,-37,-74,-108,-67,-65,-43,54,7,68,-80,-37,-29,60,90,71,96,66,-106,-53,111,-10,-63,-66,-24,-23,60,28,32,-38,-74,49,-26,69,-127,-11,-87,71,35,-73,-16,83,104,-45,30,21,109,-14,-101,-70,95,-77,-21,-108,38,9,87,117,93,-115,-23,-24,-13,-63,11,111,-97,103,26,-29,-18,65,-54,66,-46,121,63,-23,33,92,37,58,12,11,-28,-102,106,-56,84,15,123,-115,12,-108,79,20,80,52,30,-78,102,-55,23,-72,-76,-4,-115,84,36,-17,-80,34,-45,-94,74,-58,-54,-8,-106,119,56,-95}\n\n#define RESET_GATE_WEIGHT_X2 {65,-28,-36,70,67,55,86,-53,23,25,-19,59,67,43,-92,48,94,-113,60,-58,24,76,-15,-19,15,36,-74,115,-59,3,34,-43,21,-125,-45,127,92,-5,-65,-103,-83,51,42,109,-51,-39,-97,-64,-4,57,79,-42,88,-4,-108,83,-4,20,86,82,-87,95,12,-69,28,30,-97,-13,-33,-48,75,119,18,31,-83,-59,-114,-21,127,34,-27,-26,-47,86,-83,-49,8,29,-48,-31,-94,-59,-49,-36,0,28,-64,113,65,-8,47,-55,-49,112,-40,-39,-100,-42,32,82,27,-78,-105,3,19,88,15,-121,-120,7,-9,-107,-23,104,114,66,113,-102,-90,24,80,-34,106,48,-91,-11,22,-96,-82,75,26,-42,59,-45,23,78,79,-76,6,20,63,-118,-125,-42,111,-80,-79,-59,-121,-79,83,49,-95,-49,81,15,-11,-54,-45,64,-30,-49,81,-57,71,91,113,-46,-63,-4,-96,-95,-27,5,-52,35,67,112,58,-62,48,112,106,80,-19,103,4,-32,-118,-74,12,13,-126,-20,-5,115,-74,-30,123,-74,-66,11,-99,-16,-102,-100,-81,-20,-24,92,-79,-31,44,-24,-85,-123,5,-52,-111,73,29,28,-19,18,23,-112,-32,-52,-38,99,-59,-52,-31,87,124,28,-42,-39,81,-87,-24,16,47,20,36,1,-70,121,124,13,1,30,112,87,-86,11,36,-18,74,-104,-100,-14,0,-24,28,-53,53,66,-63,-109,-10,-50,-15,63,34,82,-59,85,-44,105,-10,-27,99,5,-105,-69,-75,2,-47,-66,71,-30,73,-11,-45,93,47,-37,-34,-8,90,-106,103,112,65,-100,-25,-13,38,74,54,27,-81,-8,19,49,94,118,-121,-116,120,-71,-87,36,-65,-112,8,-59,-106,-40,-16,68,87,-109,53,12,-7,9,6,67,78,8,-42,-123,79,-93,-102,-40,12,-66,-109,47,15,-8,-5,51,-62,111,8,-66,-82,-102,120,68,-67,9,-73,-69,-79,56,-36,-10,-69,-99,-2,-11,-66,76,37,4,92,1,-89,74,85,-124,-25,40,106,-102,42,-19,-30,0,-70,82,84,106,-84,48,16,37,33,-114,38,-29,-117,51,101,26,56,127,-81,-76,38,-124,103,-25,54,-21,-112,40,102,3,63,36,-54,16,-18,114,39,5,105,83,117,-92,-5,-14,-102,-87,-48,-77,-19,-82,-55,119,-95,-43,97,126,-48,-50,-97,-25,-102,-53,47,111,66,-82,-16,-38,76,-15,23,20,88,-19,125,-90,107,-31,102,107,30,-111,71,38,26,43,-85,82,29,-99,126,-109,21,-42,-107,-115,-123,30,-46,39,4,-19,-44,-69,86,41,4,33,57,-110,95,-22,123,71,1,119,77,90,105,81,-68,74,-38,-109,6,-82,-20,-115,-104,38,27,-44,82,-107,99,-41,-28,-55,100,10,-42,7,91,56,-91,113,-91,70,-66,-48,-18,109,-27,42,-89,-20,-63,-41,77,-13,73,10,-74,-51,88,28,50,-5,7,92,18,-98,-41,-14,8,-16,99,30,-109,7,52,110,-120,-17,33,53,1,106,-99,-14,-93,-46,-60,7,-54,100,91,93,89,-84,118,58,-84,38,57,-24,-25,22,-52,119,-85,-75,-79,60,-97,1,-13,54,-43,98,-92,65,37,-110,64,21,-18,-111,-9,86,90,42,-71,-29,86,-10,-15,-20,106,-45,-22,44,105,55,-61,-89,-119,31,93,-97,-35,9,-113,86,-113,22,-68,-29,-36,-123,98,79,34,-29,71,44,49,56,93,4,63,-3,45,12,54,-96,27,-55,-72,84,69,27,-28,-111,-57,-41,92,-106,-90,55,105,-60,94,34,94,-1,112,-86,-55,-58,68,-65,37,110,-107,-62,66,61,-69,-52,27,-61,70,-56,-116,-101,-103,127,-98,-79,25,-117,40,33,111,10,-3,-65,1,84,-41,5,-93,-85,-96,78,54,43,70,77,-53,-71,-38,48,103,-88,115,94,20,-5,-125,-7,-61,30,-25,-57,-42,-100,63,-114,40,-53,123,50,-7,121,75,67,75,3,-38,-101,-44,-46,54,38,-22,4,18,102,-126,44,86,-10,-1,118,98,102,-125,74,32,18,74,73,72,64,47,105,-72,5,73,98,9,39,18,10,-68,81,-128,-89,27,-51,51,16,119,-71,-53,51,-84,107,-116,7,73,106,20,52,-85,-74,-103,-18,29,-13,73,106,-92,107,-115,5,65,83,-79,-7,98,-42,-33,82,-64,75,-32,100,-67,-122,84,43,-111,114,-99,46,12,99,43,50,-24,-88,-60,111,68,64,54,-105,-120,119,68,5,51,63,89,-57,-75,-25,-35,-28,42,-64,101,-103,-35,-99,-96,-18,-64,-94,-46,89,-65,-38,-1,-97,127,-67,84,-18,86,115,60,-78,-109,-61,-93,-67,-87,-80,124,26,-9,111,115,-88,-71,-86,-71,-65,-15,108,-25,111,9,86,-115,-55,-23,57,27,103,108,-28,65,86,68,114,62,126,-4,33,-34,-123,87,-76,-104,-126,26,-13,44,108,105,12,-35,-58,3,-5,-32,91,49,89,88,37,38,119,-125,-48,37,53,85,-73,67,116,-116,-127,103,127,-115,92,-35,-83,-45,25,-96,-13,-90,41,-27,105,119,85,27,-3,-64,93,17,-53,104,-70,-43,65,45,-90,61,-31,-49,-99,84,46,93,-37,84,-79,13,-59,-76,62,19,-11,-96,-104,-3,-8,-78,92,98,50,-7,-39,-82,37,-126,127,-113,67,94,115,-9,-33,-57,26,-67,9,28,-8,81,-98,-10,84,34,111,-95,127,75,38,-7,-2,-71,-62,-72,99,-74,25,123,114,51,-28,103,-110,43,113,7,58,75,-95,-52,19,-112,101,26,65,-115,-91,85,-5,-45,110,-103,-34,-69,50,-15,-19,-110,-44,-7,-112,-93,29,50,-84,-55,-41,11,19,-31,-47,-62,-12,-105,-47,68,-124,-47,-113,-55,30,25,55,-14,85,-66,-5,-105,62,-27,-89,-124,-84,112,34,52,25,104,32,-30,84,-46,-38,60,-2,-107,-95,-86,-25,117,60,-121,32,84,8,-88,-1,91,-46,-76,81,44,79,105,-105,82,20,59,-115,96,21,-113,19,92,122,76,36,-112,78,16,38,73,69,54,97,41,-49,78,-71,-69,95,-85,117,10,-98,25,72,126,47,-17,4,-44,-32,-16,-12,105,76,4,-82,-91,-21,-117,30,-67,46,-8,-125,84,-51,94,0,-60,127,99,43,60,16,55,-16,-121,-61,-115,38,25,17,35,23,68,9,-107,-44,118,119,43,99,-95,40,42,-70,54,19,92,-36,82,-35,122,-96,54,-29,-50,100,-79,-71,-99,-60,-2,-100,41,97,-93,-58,-123,126,-102,81,-5,83,110,-50,58,-86,41,-126,43,-49,98,-59,94,-91,115,16,-3,-58,-30,-109,110,-114,124,22,-88,-79,-29,-100,54,-33,23,-1,-77,52,-126,114,70,-50,90,82,-13,-25,-125,16,48,101,-93,19,-103,67,-1,-32,28,-72,-26,73,45,-22,83,-68,-61,89,57,-37,90,16,-38,-124,47,-5,-113,81,71,-30,-46,-18,-52,-104,-40,49,-101,106,38,6,125,-70,25,-88,-50,-77,-12,53,110,-84,23,-109,-53,112,2,88,101,-55,-10,-72,123,-35,42,-15,98,-85,48,-100,-54,123,52,-105,7,-28,86,-125,85,12,86,-34,103,-8,-65,-24,88,-43,57,-16,114,-98,101,81,34,-83,-8,3,-27,5,110,-24,-80,9,85,-108,96,-93,-34,76,-107,71,84,-98,-10,-94,71,71,-38,-96,-112,100,127,52,-32,-127,102,61,-119,-46,-119,125,109,-23,-80,-11,-68,84,-53,35,-115,105,-88,72,110,109,17,-121,80,-87,-72,-123,-31,13,71,63,-126,107,115,-100,27,39,10,75,-128,58,103,-104,126,-59,31,89,-67,97,-96,-69,87,19,99,49,111,9,91,-98,-4,-118,103,-63,-92,-74,106,-53,52,122,12,24,123,-126,-105,104,38,107,118,10,74,-38,14,-11,76,-112,-112,30,-47,95,112,65,-94,120,21,85,33,52,55,-54,-57,-77,-16,52,88,-81,-77,52,0,90,-126,66,88,-81,83,50,81,-28,-56,-36,-8,50,4,115,58,-30,-53,-78,-114,-16,-100,33,-80,-6,96,108,4,-27,-90,8,48,-118,-112,22,-56,114,-66,4,-11,-48,118,61,104,118,-27,13,52,2,74,112,-127,48,27,59,-37,-58,18,85,-5,-41,-91,-32,-56,-5,-40,-117,-89,-48,-8,-32,43,-75,-118,-109,-92,-122,67,88,107,79,-90,30,-65,-102,-100,-112,-104,57,-33,-103,69,-26,15,-12,106,-17,50,-20,33,51,14,98,-118,-82,63,-65,-40,-89,-8,-75,-16,-1,-13,118,76,34,-100,83,-10,72,26,-13,50,92,69,12,-33,-66,76,62,-47,-10,-31,60,-52,52,74,77,30,59,-98,-78,-124,107,38,-121,97,-39,-12,-1,63,-112,71,-65,9,-66,-31,50,39,77,56,-81,-125,-109,-36,-62,-74,12,31,-128,64,62,86,-9,26,69,-45,-35,46,39,95,78,-22,81,-5,-22,90,-47,-36,58,65,88,-89,37,81,115,-3,-108,52,7,-32,80,-96,-24,-22,104,-95,-3,117,59,105,66,-113,28,55,-75,46,45,-118,79,-3,-113,119,-114,-3,-64,56,34,118,67,32,25,-8,1,-64,91,112,31,-88,91,-53,115,33,-3,14,-43,82,-42,-57,-128,-124,127,-69,-112,98,-40,-9,-35,29,-87,-74,27,120,77,-70,93,39,95,118,-39,82,83,-26,60,106,-116,43,8,-114,66,28,5,-95,111,-11,68,24,44,65,-93,26,50,13,100,-33,-93,99,6,0,77,98,5,-10,84,77,46,4,-13,-31,-83,84,-78,-97,-58,76,-71,-6,2,27,-73,81,100,-126,-7,117,-10,-6,118,52,-4,25,56,43,-26,-43,-64,23,-44,-108,-53,45,-117,91,-88,-45,-87,63,120,82,70,73,-108,89,-12,35,-81,-98,-124,-114,-126,86,21,-35,-32,-105,122,111,98,77,38,-18,-7,-48,69,22,74,-127,-62,-47,-20,-8,9,-48,-2,-53,-58,-37,51,27,-91,57,69,-27,-91,76,-127,78,76,-108,-1,13,-71,-41,38,46,60,-5,-73,-98,123,106,35,-38,-102,2,125,25,-63,-110,9,25,-106,-21,-113,-111,97,-33,33,83,55,123,72,-11,-78,-85,35,56,-110,-18,118,9,85,-100,-65,126,24,-18,50,-32,98,40,114,59,-60,-6,-72,-68,16,21,-10,-6,113,-23,-24,-27,-116,-126,119,6,-78,118,15,-53,7,113,3,83,52,44,-44,-53,-85,78,-108,-83,-128,63,-10,-122,-92,24,28,21,-87}\n\n#define RESET_GATE_WEIGHT_X4 {65,28,-28,30,-90,106,24,80,-36,-97,70,-13,80,-19,-34,103,67,-33,55,-48,106,4,48,-32,86,75,-53,119,-91,-118,-11,-74,23,18,25,31,22,12,-96,13,-19,-83,59,-59,-82,-126,75,-20,67,-114,43,-21,26,-5,-42,115,-92,127,48,34,59,-74,-45,-30,94,-27,-113,-26,23,123,78,-74,60,-47,-58,86,79,-66,-76,11,24,-83,76,-49,6,-99,20,-16,-15,8,-19,29,63,-102,-118,-100,15,-48,36,-31,-125,-81,-42,-20,-74,-94,115,-59,111,-24,-80,92,-59,-49,3,-36,-79,-79,-59,-31,34,0,-43,28,-121,44,-79,-24,21,-64,-125,113,83,-85,49,-123,-45,65,127,-8,-95,5,-49,-52,92,47,-5,-55,81,-111,15,73,-65,-49,-103,112,-11,29,-54,28,-83,-40,51,-39,-45,-19,64,18,42,-100,109,-42,-30,23,-49,-112,-51,32,-39,82,81,-32,-57,-52,-97,27,-64,-78,71,-38,91,99,-4,-105,57,3,113,-59,-46,-52,79,19,-42,88,-63,-31,-4,87,88,15,-4,-121,-96,124,-95,28,-108,-120,83,7,-27,-42,5,-39,-4,-9,20,-107,-52,81,35,-87,86,-23,82,104,67,-24,112,16,-87,114,95,66,58,47,-62,20,12,113,-69,-102,48,36,112,1,-70,54,121,27,-2,-102,-11,-87,124,-81,13,-8,-66,-48,76,-77,1,19,30,49,37,-19,4,-82,112,94,87,118,92,-55,1,119,-86,-121,11,-116,-89,-95,74,-43,36,120,-18,-71,85,97,-124,126,74,-87,-104,36,-25,-48,40,-50,-100,-65,-14,-112,106,-97,-102,-25,0,8,-24,-59,42,-102,-19,-53,28,-106,-53,-40,-30,47,0,111,53,-16,66,68,-70,66,82,-82,-63,87,-109,-109,84,-16,106,-38,-10,53,-50,12,-84,76,48,-15,-15,-7,63,9,16,23,37,20,34,6,82,67,33,88,-114,-19,-59,78,85,8,38,125,-29,-90,-44,-42,105,-123,-117,107,51,-31,-10,79,-27,-93,101,102,26,107,99,-102,5,-40,56,30,127,-111,-105,12,-69,-66,-81,71,-76,38,-75,-109,2,47,38,26,-124,43,-47,15,-66,-8,103,-85,-25,82,71,-5,-30,51,54,29,-21,-99,73,-62,-11,111,-112,126,40,-109,-45,8,93,-66,102,21,3,-42,47,-82,-37,-102,63,-107,36,-115,-34,120,-8,68,-54,-123,16,30,90,-67,-106,9,-18,-46,114,39,103,-73,112,-69,39,4,5,-19,65,-79,-100,56,105,-44,83,-69,-25,-36,-13,-10,117,86,-92,41,38,-69,74,-99,-5,4,-14,33,57,-41,-110,-14,-15,68,-20,-65,95,8,-22,-16,106,37,-45,110,123,99,71,30,-22,-107,44,-62,1,-109,119,7,105,66,55,61,77,52,90,110,-61,-69,-89,-52,105,-120,81,-17,-119,27,31,-61,-68,33,74,53,93,70,-97,-56,-38,1,-109,106,-35,-116,9,-101,6,-99,-82,-14,-113,-103,86,127,-20,-93,-115,-46,-113,-98,22,-79,-104,-60,38,7,-68,25,-29,-117,27,-54,-44,100,-36,40,-123,33,82,91,-107,93,98,111,79,10,99,89,-41,-84,34,-3,-29,-65,-28,118,-55,58,71,1,44,84,100,-84,10,38,49,-41,56,5,-42,57,7,-24,93,-93,4,-85,91,-25,56,22,63,-96,-3,78,-91,-52,113,119,45,54,12,43,-91,-85,70,-75,54,70,-96,77,-66,-79,-48,60,27,-53,-55,-71,-18,-97,109,1,-72,-38,84,48,-27,-13,42,54,69,103,27,-88,-89,-43,-20,98,-28,115,-111,94,-63,-92,-41,65,-57,20,-41,-5,77,37,-13,-110,92,-125,-106,-7,73,64,10,21,-90,-61,55,30,-74,-18,-51,-111,105,-25,-60,-57,88,-9,28,86,94,-42,34,-100,50,90,-5,42,94,63,-1,-114,7,-71,92,-29,112,40,-86,-53,18,86,-98,-10,-55,123,-58,50,-7,-103,121,-18,-46,-35,89,-58,75,29,67,-13,-65,3,-38,-5,75,73,3,106,-1,-32,-97,91,-38,-92,-101,107,127,49,-67,89,-44,-115,-46,5,84,88,-18,37,54,65,38,83,86,38,115,119,-22,-79,4,-7,60,-125,-78,-48,18,98,102,-42,-109,37,-61,53,-126,-33,44,82,-93,85,-67,-73,86,-64,-10,75,-87,67,-80,116,-1,-32,118,100,124,-116,26,-127,98,-67,102,-122,-9,103,111,127,-125,84,74,43,115,-115,-88,92,32,-111,18,114,-71,-35,-86,-83,74,-99,73,46,-71,-45,-65,25,72,12,64,99,-15,-96,108,-13,47,43,105,50,-25,-90,111,41,-72,-24,5,-88,9,-27,86,105,73,-60,98,111,-115,119,-55,85,9,68,39,64,-23,27,57,-3,18,54,10,-105,27,-64,103,93,-68,-120,81,119,108,17,-28,-53,-128,68,-89,5,65,104,86,-70,27,51,-51,63,68,-43,114,65,51,89,16,-57,62,45,126,-90,119,-75,-71,-25,-4,61,33,-31,-53,-35,51,-28,-34,-49,-123,-99,-84,42,107,-64,87,84,-76,46,-116,101,7,-103,-104,93,-126,-37,73,-35,106,-99,26,84,-13,-79,20,-96,52,-18,44,13,108,-59,-85,-64,-74,-94,105,-76,12,62,19,-115,-11,-91,117,-67,60,46,-96,85,-104,-5,-121,-8,32,-125,-3,-45,-8,110,84,84,8,-51,-78,-103,92,-34,-88,94,-1,0,98,-69,50,50,91,-60,-46,127,-7,-15,-39,-19,-76,99,81,43,-82,-110,37,-44,44,60,79,16,-126,-7,127,-112,105,55,-105,-16,-113,-93,67,29,82,-121,20,-61,94,50,115,-84,59,-115,-115,38,-9,-55,-33,-41,96,25,21,17,-57,11,26,19,-113,35,19,23,-67,-31,9,-47,92,68,122,9,28,-62,-8,-12,76,-107,36,-44,81,-105,-98,-47,-112,118,78,119,-10,68,84,-124,16,43,38,99,34,-47,111,-113,73,-95,69,40,-95,-55,127,30,54,42,97,-70,75,25,38,55,41,54,-49,19,-7,-14,-2,85,78,92,-71,-36,-71,-66,-62,-5,-69,82,95,-35,-72,-105,99,62,-85,122,117,-96,-74,-27,25,-89,10,54,-98,-29,123,-124,114,-84,25,-50,72,100,51,112,-28,34,126,-79,47,-71,103,52,-110,25,-17,-99,4,-60,43,104,113,32,-44,-2,-32,-100,7,-30,58,84,-16,41,-12,97,75,-46,-95,-38,105,-93,76,-58,-52,60,19,-2,4,-123,-82,126,-112,-107,101,-95,-91,-102,-21,81,26,-86,65,-25,-117,-5,30,83,110,-38,-50,-124,57,-31,-16,13,58,47,-86,-5,114,71,-98,63,41,-113,-126,81,101,-126,81,107,43,71,-49,-30,34,115,-83,-100,98,-46,-59,-18,-8,27,3,39,94,-52,-91,-104,-27,10,5,75,115,-40,16,49,110,-128,-24,58,-3,-101,-58,106,-80,103,9,-104,-30,38,-109,6,85,126,-108,-59,110,125,-114,-70,96,31,-93,89,124,25,22,-88,-34,-67,76,97,-88,-50,-79,-77,-107,-96,71,-69,-29,-12,-100,53,84,87,-98,19,54,110,-33,-84,-10,99,-94,49,23,23,-1,-109,71,111,71,9,-77,-53,52,112,-38,91,-96,-98,-126,2,114,88,-112,-4,100,-118,70,101,-50,-55,127,103,52,-63,90,-10,82,-72,-32,-92,-127,-74,-13,123,-25,-35,102,106,61,-53,-125,42,16,-15,-119,52,-46,122,48,98,101,-85,-119,12,125,24,-93,48,19,-100,109,123,-23,-126,-103,-54,67,123,-80,-105,-11,104,-1,52,-32,-105,-68,38,84,107,28,7,-72,-28,-53,118,35,10,-26,86,73,-125,-115,74,105,-38,45,85,-22,12,-88,14,72,-11,83,86,-68,-34,110,76,109,-112,-61,103,89,-8,17,-112,-121,30,57,-65,-37,-24,80,-47,-87,95,90,88,16,-43,-72,112,-123,65,-94,52,120,2,-16,26,-1,69,21,74,85,112,-13,-45,118,-35,33,-127,52,48,76,46,34,39,55,27,-54,59,-100,95,83,78,-57,-37,-77,-58,-10,-22,72,81,-16,18,52,85,26,-5,-13,-22,88,-5,-81,-41,50,90,92,-47,-77,-91,52,-32,69,-36,12,58,0,-56,90,-5,-33,65,-66,88,-126,-40,66,-117,76,-89,62,37,88,-89,-81,-48,-47,81,-10,115,83,-8,50,-32,-31,-3,60,-108,81,43,-28,-75,-52,52,52,7,-56,-118,-36,-109,74,-32,77,80,-8,-92,50,-122,30,-96,59,-24,4,67,115,88,-98,-22,-78,104,58,107,-30,79,-124,-95,107,-3,-53,-90,-78,30,38,117,-121,59,-114,-65,-16,-102,97,105,-39,66,-100,-100,33,-112,-12,-113,-1,28,-80,-104,-6,57,63,55,-112,-75,96,-33,108,-103,71,46,-65,45,4,69,-27,-26,9,-118,-66,79,-90,15,8,-12,-31,-3,50,-113,48,106,-118,-17,39,119,77,-114,-112,50,22,-20,56,-3,-81,-64,-56,33,114,51,-125,56,-109,34,-66,14,4,98,-36,118,-62,67,-11,-118,-48,-82,-74,32,12,25,118,63,61,-65,31,-8,-128,1,104,-40,118,-89,64,-64,62,91,-27,-8,13,-75,86,112,-9,31,-88,-10,91,84,111,123,98,72,-53,77,115,46,77,-11,38,-78,33,4,-3,-13,-18,-85,-7,35,14,-31,-43,-83,-48,56,69,-110,82,84,-42,-78,22,-18,74,118,-57,-97,-128,-58,-127,9,-62,85,-124,76,127,-71,-47,-100,-20,-65,-69,-6,-112,2,-8,126,9,24,98,27,-40,-73,-48,-18,-2,50,-9,81,-35,100,-53,-32,-58,98,29,-126,-87,-7,-37,40,51,114,-74,117,27,-10,27,59,-91,-60,120,-6,77,118,57,-6,69,-72,-70,52,93,-4,-27,-68,-91,16,39,25,95,56,76,21,-127,-10,118,43,-39,-26,78,-6,76,113,82,-43,83,-64,-108,-23,-1,-24,-26,23,60,-44,13,-27,-71,-116,106,-108,-116,-53,-41,-126,38,119,43,45,8,-117,46,6,60,-78,-114,91,66,-88,-5,118,-73,15,28,-45,5,-87,-98,-53,123,7,-95,63,111,120,106,113,35,3,-11,82,68,70,-38,83,-102,52,24,73,44,-108,2,44,125,-44,65,89,-93,-12,25,-53,-63,-85,26,35,50,-81,-110,78,9,-108,13,-98,100,-124,25,-83,-106,-128,-33,-114,-93,-126,-21,63,-113,-10,99,86,6,21,-111,-122,97,-92,0,-35,77,-32,-33,24,33,28,98,-105,5,122,83,21,55,-87}\n\n#define HIDDEN_STATE_WEIGHT_X2 {-3,-33,59,21,117,70,0,44,108,108,-47,-80,-118,34,88,-91,-123,-108,8,51,26,82,-80,107,-100,-69,97,-90,17,19,63,111,-40,-125,110,24,58,-69,26,-31,-65,-37,-47,-41,-109,106,-100,108,-99,108,116,104,86,-50,-45,10,-53,112,34,96,-10,-39,-32,-25,69,102,-2,-4,-25,121,-1,-28,-48,-100,0,-128,60,-73,42,-32,118,-88,-113,-112,-113,70,-98,118,95,77,-52,123,-99,72,26,-102,-32,120,113,22,6,-68,84,-33,103,66,111,60,-76,33,10,25,-43,93,41,-79,110,13,67,107,-113,90,58,64,-125,79,-85,-18,76,80,-59,11,-18,-74,15,-102,99,-19,117,99,65,-50,-108,-121,-9,-104,33,94,-95,110,-48,-97,76,36,1,-58,86,-115,45,-88,38,51,123,-23,-20,-43,-37,15,91,-85,-88,6,-96,58,78,13,23,1,-43,62,-70,-108,44,30,74,90,79,-80,-20,71,-21,0,60,19,-59,-52,44,-14,77,92,-69,121,-123,-27,119,-84,79,87,24,85,118,1,-51,-96,60,102,-6,15,96,120,-109,6,35,11,-119,-109,-18,16,-112,91,-126,71,-29,121,-21,-120,37,57,-117,-39,93,56,-73,-104,77,-107,-52,111,-61,-4,44,-119,67,72,-66,36,-127,-113,-124,123,21,98,84,86,76,23,78,7,-127,-4,1,-46,-107,59,-21,53,-65,-99,-15,-98,53,-31,7,64,7,105,51,-75,50,-52,48,101,-126,-120,5,34,3,81,-39,70,41,112,25,30,79,-6,107,-11,-97,92,-84,67,49,107,60,101,-37,27,-91,-61,-96,120,-113,87,-46,68,64,102,-86,-60,13,-71,56,-105,90,-9,-35,27,103,120,39,23,-39,-1,-85,-95,-6,119,-41,-2,-69,102,102,-119,-3,-11,-125,-111,40,-115,-41,-117,-44,-7,83,123,-21,23,99,-107,43,100,-99,-3,89,3,-113,103,47,-94,-69,-38,-28,-37,49,-117,-49,-126,17,-98,37,92,55,-116,-70,-50,77,120,47,124,78,114,67,-48,6,-42,-115,85,116,-114,-46,-50,-13,70,-101,110,-55,20,-51,125,-19,-9,-15,46,30,-27,-123,114,-50,-30,-72,76,-83,71,47,-45,74,102,44,108,-26,108,-113,-43,110,-91,37,-69,76,-33,106,-76,-96,20,-117,63,-33,-5,11,-121,-51,63,-56,59,-16,-33,114,74,124,73,99,-50,51,-71,118,106,30,-92,26,-40,119,-121,2,-45,9,0,-5,-2,-89,88,-11,-85,-60,19,81,-96,75,82,-40,124,89,-36,-117,-100,-2,-34,112,101,39,-101,-106,60,59,-126,-32,96,68,-53,87,20,54,-24,46,-95,65,-112,22,60,122,-22,-106,-124,97,-37,-86,95,-110,-8,44,58,-12,-120,-45,-86,-32,-86,-94,-14,15,29,-8,-114,71,70,-93,-69,100,-123,-18,-47,-12,127,104,-102,93,-11,-73,121,87,-79,-92,46,92,-108,-107,79,121,-71,-89,16,-11,-52,72,-114,-32,-60,-9,-57,-4,10,-81,-22,68,74,76,-68,-127,96,-84,69,-3,-26,-106,-3,-87,-65,105,109,122,-103,31,-108,-86,-5,-39,85,88,67,-82,0,-25,93,61,-62,5,-54,-114,-51,-9,-114,20,49,-26,38,19,39,-103,33,-120,37,-97,32,-89,119,111,-124,-99,78,-49,-128,76,-18,-12,-109,96,90,-73,-104,59,-59,-92,123,55,54,-120,-80,-48,-16,-95,96,36,118,-119,-58,93,45,-43,-75,64,38,-2,-72,-111,22,-89,-75,-120,-42,45,108,59,-105,40,27,32,-66,121,-22,-71,-9,118,124,60,-96,47,4,14,-27,64,70,47,-91,-70,1,-44,94,-46,53,4,23,-124,-92,-95,83,-49,-81,40,-80,48,0,39,1,-113,32,40,-21,-1,-110,102,1,-74,-51,40,108,-35,-36,89,84,123,-48,-115,-115,83,-61,114,-127,-61,114,100,-82,-45,60,87,60,19,86,97,-68,40,-66,75,86,-32,-128,88,-57,-27,77,3,-27,43,-39,-62,66,5,-82,45,-104,-78,34,57,96,89,-90,66,-10,37,-110,-30,82,-58,13,94,12,115,35,117,0,80,61,-7,107,-104,-21,21,-70,-93,-94,-51,-61,39,-62,64,-82,-109,76,84,58,-47,-100,52,46,-51,88,91,8,-47,108,-80,25,-58,111,-59,-83,-75,92,98,110,54,106,65,-47,-120,-5,90,-123,101,-61,-85,-93,109,88,0,8,59,86,56,126,17,-26,58,-101,-25,35,0,-123,-3,-56,112,-128,8,17,-52,88,31,-3,105,-56,68,-1,-94,96,-19,10,-22,-88,-10,119,-44,19,42,75,-86,18,-107,89,-82,-120,76,40,84,-122,29,33,-47,17,-50,-13,23,-66,-46,85,-29,-110,42,-68,8,99,-93,-29,101,16,52,-13,127,0,86,-117,-92,-70,-32,-27,127,-123,1,34,-13,92,114,-11,29,-103,-121,-54,20,73,16,74,108,16,-61,89,50,-30,-14,116,44,-31,16,96,24,-51,7,39,-87,-69,-61,-98,61,-46,113,85,-95,103,67,99,-66,-45,-42,-70,96,104,5,-111,69,-25,99,-118,23,109,11,4,-41,-94,73,100,96,6,90,-75,-25,79,-13,-43,-6,-12,51,12,40,124,-56,81,-8,59,-60,-26,-54,33,122,85,53,-99,125,19,-26,94,41,-5,46,-48,-70,-10,41,102,-1,-98,-9,15,29,46,-66,-118,-53,45,119,-127,94,53,-58,90,124,5,-110,-98,-80,-77,77,29,19,105,-121,92,9,-124,50,-119,59,40,67,104,-12,13,103,101,47,-51,34,-66,-101,-117,112,-5,118,-48,-60,-114,38,-71,2,51,114,80,115,-5,116,20,16,-47,-19,30,24,-68,7,-30,-3,-64,-7,-34,-12,44,34,-91,-97,116,112,-99,108,-75,17,26,-14,-61,80,22,-7,34,47,-93,45,106,121,78,43,-97,39,-99,-68,-72,-7,64,-49,-82,-127,78,-64,48,18,15,126,-125,-111,-69,-111,10,-46,111,-75,123,-44,-67,-31,-96,-67,-53,-53,-106,67,-101,23,62,30,9,-114,-12,-57,-38,-78,95,-10,-3,110,88,123,-26,78,-125,114,53,10,-57,26,38,-51,73,92,-124,79,15,75,-62,109,-113,-67,1,35,52,-36,55,7,111,-43,109,101,88,122,-21,-32,-87,59,16,-122,-109,-118,17,-22,-39,53,-105,77,90,-24,-65,43,-27,113,30,-117,-30,106,37,55,59,54,-70,99,99,-73,120,97,-39,-88,-54,101,51,-76,70,-121,-68,23,-73,-31,75,-8,-63,-123,-93,96,-81,99,-95,28,-36,55,-104,32,-64,41,-97,95,-89,126,-26,-25,126,2,-26,-54,110,-86,110,74,-3,-110,56,-60,-49,117,-82,-55,-103,-112,70,-85,85,-63,82,7,75,-61,90,32,35,-115,72,73,-121,63,-84,-52,-29,-59,-4,29,64,119,127,58,-117,48,126,120,-115,-15,-10,27,27,-81,117,-5,121,-72,113,31,-13,10,27,-106,-51,81,-96,-22,19,-78,6,71,-34,123,118,75,-23,-72,-97,111,-121,0,80,28,52,95,59,-116,72,80,-75,-62,88,23,-102,13,6,113,-85,98,45,-96,-32,94,-7,12,-9,86,18,59,-15,75,13,-70,50,-93,52,67,53,-31,19,45,-111,36,39,-91,-77,104,71,7,-44,-76,3,-62,121,43,37,-7,-96,-6,57,-104,30,-126,-94,118,-44,91,29,124,-86,-13,55,41,-41,91,-112,-25,103,81,-70,-112,113,-25,-73,-82,16,67,-5,104,56,66,-115,-90,-126,106,80,-78,-51,-15,-68,-3,102,-10,-123,-10,-71,-111,86,48,-45,101,81,-114,-94,77,-127,-96,-100,86,109,-33,15,-34,60,88,-86,-63,-103,-46,101,-127,-88,90,-37,82,-125,-28,-6,61,-104,77,0,-52,59,-9,-82,59,-78,79,80,-77,-125,-95,16,26,-55,-16,15,-76,-9,56,110,85,-102,-23,-12,-6,-97,-34,32,-79,-95,71,126,127,30,-112,-115,75,-8,125,103,-118,65,-43,107,46,96,-41,-87,-64,-18,126,82,10,81,45,95,61,9,28,-113,-71,47,117,26,-81,73,49,-55,-126,-33,62,-84,-87,-56,-71,97,49,-124,-76,-9,97,119,-23,127,-29,20,-66,-80,-122,40,-2,116,126,-120,-48,124,57,-107,104,80,-13,81,118,33,88,119,-110,33,-35,-75,-6,89,-41,99,46,127,-36,54,-55,50,24,51,49,-71,37,-117,114,6,110,88,84,-30,-45,-50,113,-12,-57,59,-18,49,99,-124,46,-48,88,-82,-121,-97,15,-73,-128,-121,46,30,-93,-109,-15,-86,-2,75,1,-32,-27,-86,-13,-38,48,10,-36,-107,-27,-48,88,-7,-88,98,-83,61,-81,20,-123,18,-41,-127,-55,-66,24,-107,73,30,-42,-74,124,-43,-125,102,98,6,32,24,-123,32,113,105,-81,117,-41,-54,-113,-126,-28,31,-56,-64,-6,-103,-36,-2,-59,34,-40,-64,-39,-64,-74,-105,50,-86,-66,-14,-71,35,-116,-20,15,-119,-12,90,-117,-29,13,-8,-75,57,67,124,-38,66,113,-80,113,105,45,-74,-80,108,-24,-3,36,62,-8,109,-40,-101,106,12,-47,-113,-118,-12,-3,-86,-52,-93,-24,-62,-119,-93,67,39,4,-18,-103,24,1,71,93,95,-113,-7,34,-10,-77,-74,96,86,52,-2,-45,-71,-48,124,-97,1,23,-59,-117,-74,58,-31,-115,114,-14,-115,77,82,100,67,117,-16,-64,105,-19,59,124,124,-116,-33,22,-115,30,102,91,98,-124,38,12,-38,-23,-106,52,75,-45,74,-6,-29,31,117,20,99,66,27,-92,127,-67,-53,68,-66,-26,35,114,-84,-74,-94,-14,-43,-106,-32,-67,-27,28,29,-32,-101,-60,-55,-6,-101,-42,61,111,107,-87,-67,102,-36,119,-81,-54,52,-114,5,-26,115,-7,44,-30,-21,-67,33,-92,29,-30,3,7,-101,-83,-115,29,68,49,-70,-40,-116,63,-49,115,97,123,119,22,-13,47,-4,-14,-94,94,-122,56,58,57,-127,-60,-46,29,94,-105,49,-72,94,20,-8,104,35,-90,19,-26,24,-7,109,10,-9,80,-105,0,126,94,105,63,85,43,-63,-2,-32,39,-119,-12,-108,33,-67,127,-66,-23,-123,8,41,-21,-30,117,20,-85,-39,-87,2,96,-12,-128,83,67,-53,-101,3,-3,-22,-16,51,125,-125,-76,25,42,101,101,35,-36,103,85,-71,-24,6,26,105,60,112,-91,69,13,21,10,-93,22,-111,0,-38,4,-34,45,-86,121,-42,-54,7}\n\n#define HIDDEN_STATE_WEIGHT_X4 {-3,69,-33,102,76,60,80,19,59,-2,21,-4,-59,-59,11,-52,117,-25,70,121,-18,44,-74,-14,0,-1,44,-28,15,77,-102,92,108,-48,108,-100,99,-69,-19,121,-47,0,-80,-128,117,-123,99,-27,-118,60,34,-73,65,119,-50,-84,88,42,-91,-32,-108,79,-121,87,-123,118,-108,-88,-9,24,-104,85,8,-113,51,-112,33,118,94,1,26,-113,82,70,-95,-51,110,-96,-80,-98,107,118,-48,60,-97,102,-100,95,-69,77,76,-6,36,15,97,-52,-90,123,1,96,-58,120,17,-99,19,72,86,-109,-115,6,63,26,111,-102,45,35,-88,11,-40,-32,-125,120,38,-119,51,-109,110,113,24,22,123,-18,-23,16,58,6,-69,-68,-20,-112,-43,91,26,84,-31,-33,-37,-126,15,71,-65,103,-37,66,91,-29,-85,121,-47,111,-41,60,-88,-21,6,-120,-109,-76,106,33,-96,37,58,57,-100,10,108,25,78,-117,13,-39,-99,-43,108,93,23,93,1,56,116,41,104,-79,-43,-73,62,-104,86,110,-50,13,-70,77,-108,-107,-45,67,10,107,44,-52,30,111,-53,-113,112,90,74,-61,90,-4,34,58,96,64,79,44,-80,-119,-10,-125,-39,79,-20,67,71,72,-32,-85,-25,-18,-21,-66,0,36,-127,-96,-113,120,49,76,-117,-33,-124,-113,123,87,-49,106,-126,-76,21,-46,98,68,17,-96,-98,20,84,64,86,102,37,-117,92,63,76,-86,23,-60,55,-33,-116,-5,78,13,7,-71,-70,11,-50,-121,-127,56,-4,-105,77,-51,120,63,1,90,-46,-9,47,-56,124,59,-107,-35,59,27,78,-16,114,-33,-21,103,53,120,67,114,-48,74,-65,39,-99,23,6,124,-42,73,-15,-39,-98,-1,-115,99,85,-50,53,-85,-31,-95,116,51,-114,-71,7,-6,64,119,-46,118,-50,106,7,-41,105,-2,-13,30,70,-92,51,-69,-75,102,-101,26,110,-40,50,102,-52,-119,-55,119,20,-121,48,-3,101,-11,-51,2,125,-45,-126,-125,-120,-111,-19,9,-9,0,5,40,34,-115,-15,-5,46,-2,3,-41,81,-117,30,-89,-27,88,-39,-44,70,-7,-123,-11,114,-85,41,83,112,123,-50,-60,-30,19,25,-21,30,23,-72,81,76,-96,79,99,-6,-107,-83,75,71,82,107,43,-11,100,47,-40,-45,124,-97,-99,92,-3,74,89,102,-36,-84,89,67,3,44,-117,108,-100,49,-113,107,103,-26,-2,108,-34,60,47,101,-94,-113,112,-43,101,-37,-69,27,-38,110,39,-91,-101,-91,-28,-61,-37,37,-106,-69,60,59,121,-126,-71,-97,47,32,4,-32,-89,96,16,-89,14,119,-27,68,-11,-53,-52,111,64,-124,70,87,72,20,-114,-99,47,78,-91,54,-32,-24,-60,-49,-70,-128,1,46,-9,-95,-57,76,-44,-18,94,65,-4,-112,10,-12,-46,-109,53,22,-81,60,-22,96,4,90,23,122,68,-22,74,-73,-124,-104,-92,-106,76,-124,-68,59,-95,-59,83,97,-127,-37,96,-92,-49,123,-81,-86,-84,95,69,55,40,54,-80,-110,-3,-8,-26,-120,48,-80,0,44,-106,58,-3,-48,39,-16,1,-12,-87,-120,-65,-95,-113,96,32,-45,105,-86,109,36,40,118,-21,-32,122,-86,-103,-119,-1,-58,-110,-94,31,-14,-108,93,102,45,1,15,-86,29,-5,-43,-74,-75,-51,-8,-39,-114,85,64,40,38,108,71,88,70,67,-2,-35,-72,-36,-93,-82,-69,0,-111,89,22,84,100,-25,-123,93,-89,123,-75,-48,-18,61,-47,-62,-120,-115,-42,-115,-12,5,127,-54,45,83,108,-61,104,-114,-102,-51,59,114,-105,-127,93,-9,-11,-114,40,-61,27,114,-73,20,121,49,32,100,-66,-82,87,-26,-79,38,121,-45,-22,60,-92,19,46,39,-71,87,-9,60,92,-103,-108,33,118,19,124,86,-107,-120,79,37,60,97,-96,-68,40,-51,-66,88,-10,-61,119,89,75,91,86,8,-44,50,19,-30,-32,-47,-128,108,42,-14,75,116,88,-80,-57,25,-86,44,18,-31,-27,-58,77,111,-107,16,89,96,3,-59,-27,-83,-82,24,-120,-51,43,-75,-39,92,76,7,40,39,-62,98,66,110,84,-87,-122,-69,5,54,-82,106,29,-61,33,-98,45,65,-104,-47,-47,61,17,-46,-78,-120,34,-5,-50,113,-13,85,57,90,96,-123,23,-95,-66,103,89,101,-90,-61,-46,67,85,99,66,-85,-10,-93,-29,-66,-110,-45,37,109,-110,88,42,-42,-68,-70,-30,0,82,8,8,96,99,104,-58,59,13,86,-93,5,-29,-111,94,56,12,126,101,69,16,-25,115,17,35,-26,52,99,-13,-118,117,58,0,-101,127,23,0,109,80,-25,61,35,86,11,-117,4,-7,0,107,-123,-92,-41,-70,-94,-104,-3,-21,-56,-32,73,-27,100,21,112,-70,-128,127,96,-123,6,-93,8,-94,17,1,90,34,-75,-51,-52,-61,88,-13,-25,92,79,39,31,-62,-3,114,-13,-11,-43,64,105,-82,-56,29,-6,-103,-12,-109,68,76,-1,-121,51,-54,12,84,-94,58,96,20,40,73,124,-47,-19,-100,10,16,-56,74,81,52,-22,46,-88,108,-8,16,59,-60,-101,-26,-117,-127,-36,78,55,-54,112,33,-5,-64,7,48,111,122,118,85,-48,18,-43,15,109,53,-60,-99,-114,126,101,-125,88,125,38,19,-71,-111,122,-69,-21,-26,2,94,51,-111,-32,10,-87,41,114,-5,80,-46,59,111,16,46,115,-48,-5,-75,-122,123,-109,-70,116,-10,20,-44,-118,-67,17,41,16,102,-47,-31,-22,-96,-39,-1,-19,-98,30,-67,53,-53,-105,-9,24,15,-68,-53,77,-106,90,29,7,46,-30,67,-24,-101,-65,-66,-3,-118,-64,23,43,62,-27,-53,-7,45,-34,30,113,9,30,119,-12,-127,44,-114,-117,-12,-30,94,34,53,-91,-57,106,-38,37,-58,-97,90,116,-78,55,95,59,124,112,5,-99,-10,54,-3,-70,-110,108,-98,-75,110,99,88,99,-80,17,-77,26,123,-73,-26,120,77,-14,29,-61,78,97,-125,-39,19,80,105,22,114,-88,53,-54,-121,-7,92,34,10,101,-57,51,9,47,-124,-93,26,-76,38,70,50,45,-119,106,-51,-121,73,-68,59,121,40,78,92,23,-124,-73,67,43,104,-97,79,-31,15,75,-12,39,13,-99,75,-8,-62,-63,103,-68,101,-72,109,-123,-113,-93,47,-7,-51,64,-67,96,1,-81,34,-49,-66,-82,35,99,52,-95,28,27,-36,27,-93,-15,52,-68,55,-81,-104,117,67,-3,53,102,32,-5,-64,121,-31,-10,19,-123,41,-72,-97,113,45,-10,-111,-71,95,31,-89,-13,36,-111,39,86,126,10,-26,27,-91,48,-77,-45,-25,-106,126,-51,104,101,71,81,2,81,-26,-96,7,-114,-44,-94,-54,-22,110,19,-76,77,3,-127,-86,-78,110,6,-62,-96,121,-100,74,71,-3,-34,43,86,37,109,-110,123,56,118,-7,-33,-96,15,-60,75,-49,-23,-6,-34,57,60,117,-72,-82,-97,-104,88,30,-86,-55,111,-103,-121,-126,-63,-94,-103,-112,0,70,80,118,-46,-44,101,-85,28,85,52,91,-127,29,-88,-63,95,82,59,124,90,-86,-37,7,-116,75,72,-13,82,55,-125,-61,80,90,-75,41,-28,-41,-6,32,-62,35,88,91,61,-112,-104,-115,23,72,-102,-25,77,103,0,73,13,-121,6,81,-52,-70,59,63,113,-84,-85,-112,-9,113,-82,-52,98,-29,45,-25,59,-73,-78,-59,-96,-4,-32,-82,79,16,80,29,94,64,-7,67,-77,-5,-125,119,12,127,-9,104,-95,56,16,58,86,-117,18,66,26,-115,-55,48,59,126,-15,-90,-16,-126,15,120,75,-115,13,106,-76,80,-9,-15,-70,-10,50,-78,56,-51,110,85,-29,-102,20,15,-56,-73,-64,-23,-66,-12,-80,-128,-6,-121,-103,-6,-122,-97,40,46,-36,30,-2,-34,-2,32,116,-93,-59,-109,34,-79,126,-95,-120,-15,-40,-86,-64,71,-48,126,124,-2,-39,75,-64,127,57,30,-107,1,-74,-32,-105,-112,104,-115,80,-27,50,-86,-86,75,-13,-8,81,-13,-66,-38,-14,125,118,103,33,48,-71,10,35,-118,88,65,119,-36,-116,-107,-20,-43,-110,107,33,-27,15,-48,-119,46,-35,96,-75,88,-12,-7,90,-41,-6,-87,89,-88,-117,98,-29,-64,-41,-18,99,-83,13,61,-8,126,46,82,127,-81,-75,20,57,10,-36,81,54,-123,67,18,124,45,-55,95,50,-41,-38,-127,66,61,24,9,51,-55,113,-66,-80,28,49,-113,-71,24,113,-107,105,-71,37,47,-117,73,45,30,-74,117,114,26,6,-42,-80,-74,108,-81,110,73,88,124,-24,-43,-3,49,84,-55,-30,-125,36,102,62,-126,-45,-33,-50,98,-8,6,109,62,113,-84,-12,32,-40,24,-101,-87,-57,-56,59,-123,106,32,12,-71,-18,97,49,113,-47,105,-113,49,99,-124,-124,-81,-118,117,-12,-76,46,-9,-48,-41,-3,-54,-86,97,88,119,-82,-113,-52,-126,-93,-23,-121,127,-97,-28,-24,31,-62,-119,52,-93,75,7,33,-101,-67,67,-45,39,74,-83,127,-115,-66,4,-6,-18,-29,29,-23,68,-123,-103,31,24,117,49,8,-70,41,1,20,71,99,-40,-21,-116,-30,93,66,95,27,63,117,-49,20,-113,-92,-7,127,115,-85,97,-39,34,-67,-10,-53,123,-87,119,2,-77,68,-74,-66,22,96,-13,-12,96,-26,86,35,47,-128,-4,83,52,114,-2,-84,-14,67,-94,-53,-45,-74,-71,-94,94,-101,-122,3,-48,-14,124,-43,56,-3,58,-22,-97,-106,1,-32,57,-16,-127,51,23,-67,-59,-27,-60,125,-46,-125,-117,28,-74,29,29,-76,94,25,58,-32,-31,-101,-105,42,49,101,-115,-60,114,-55,-72,101,94,35,-14,-6,-115,-101,20,-36,-8,103,77,-42,82,61,104,85,35,-71,100,111,67,107,-90,-24,19,6,117,-87,-16,-67,-26,26,24,105,-64,102,105,-36,-7,60,109,112,-19,119,59,-81,10,-91,-9,69,124,-54,124,52,80,13,-105,21,-116,-114,-33,5,0,10,126,-93,22,-26,-115,115,94,22,105,-111,30,-7,102,44,63,0,85,-38,91,-30,98,-21,43,4,-63,-34,-124,-67,38,33,-2,45,-32,-86,12,-92,-38,29,39,121,-119,-42,-23,-30,-106,3,-12,-54,-108,7}\n\n#define UPDATE_GATE_BIAS {-85,78,113,70,33,38,8,114,70,-35,-67,65,31,-24,-70,-124,-89,104,124,-122,111,61,-87,75,-61,-98,83,-69,-63,45,-11,103}\n\n#define RESET_GATE_BIAS {-77,67,-93,-3,98,59,-121,33,49,50,41,91,-115,-33,71,47,-70,45,89,-115,72,106,-22,100,97,-100,-95,108,-33,3,14,30}\n\n#define HIDDEN_STATE_BIAS {-85,78,113,70,33,38,8,114,70,-35,-67,65,31,-24,-70,-124,-89,104,124,-122,111,61,-87,75,-61,-98,83,-69,-63,45,-11,103}\n\n#define INPUT_DATA1 {-367,-338,0,-89,453,-413,-343,-16,42,418,201,274,-352,477,-290,-92,266,-49,342,453,-398,247,-153,328,217,342,85,69,-38,351,73,128}\n\n#define INPUT_DATA2 {280,41,-322,61,315,350,504,-227,-221,-483,352,252,455,-236,344,364,-378,229,-187,-498,295,357,-511,58,-349,-458,-420,-66,-400,-379,477,-60}\n\n#define HISTORY_DATA {-38,53,105,-79,-463,51,-343,-226,-435,-282,218,441,-299,-215,-109,335,340,-471,-109,273,33,-245,-469,170,-26,-59,192,-119,76,-6,236,-145}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Examples/IAR/iar_nn_examples/NN-example-gru/readme_iar.txt",
    "content": "CMSIS NN Lib example arm_nnexample_gru0 for\n  Cortex-M0, Cortex-M3, Cortex-M4 and Cortex-M7.\n\nThe example is configured for IAR Embedded Workbench for ARM Simulator.\n\nWhen changing target, remember to change the ARM_MATH_CMx and __FPU_PRESENT\nPreprocessor defines for C/C++ Compiler"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Include/arm_nn_tables.h",
    "content": "/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nn_tables.h\n * Description:  Extern declaration for NN tables\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n * -------------------------------------------------------------------- */\n/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef _ARM_NN_TABLES_H\n#define _ARM_NN_TABLES_H\n\n#include \"arm_math.h\"\n\n/**\n* @brief tables for various activation functions\n*\n*/\n\nextern const q15_t sigmoidTable_q15[256];\nextern const q7_t sigmoidTable_q7[256];\n\nextern const q7_t tanhTable_q7[256];\nextern const q15_t tanhTable_q15[256];\n\n  /**\n   * @brief 2-way tables for various activation functions\n   *\n   * 2-way table, H table for value larger than 1/4\n   * L table for value smaller than 1/4, H table for remaining\n   * We have this only for the q15_t version. It does not make\n   * sense to have it for q7_t type\n   */\nextern const q15_t sigmoidHTable_q15[192];\nextern const q15_t sigmoidLTable_q15[128];\n\n#endif                          /*  ARM_NN_TABLES_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Include/arm_nnfunctions.h",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nnfunctions.h\n * Description:  Public header file for CMSIS NN Library\n *\n * $Date:        13. July 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n * -------------------------------------------------------------------- */\n\n/**\n   \\mainpage CMSIS NN Software Library\n   *\n   * Introduction\n   * ------------\n   *\n   * This user manual describes the CMSIS NN software library,\n   * a collection of efficient neural network kernels developed to maximize the\n   * performance and minimize the memory footprint of neural networks on Cortex-M processor cores.\n   *\n   * The library is divided into a number of functions each covering a specific category:\n   * - Neural Network Convolution Functions\n   * - Neural Network Activation Functions\n   * - Fully-connected Layer Functions\n   * - Neural Network Pooling Functions\n   * - Softmax Functions\n   * - Neural Network Support Functions\n   *\n   * The library has separate functions for operating on different weight and activation data\n   * types including 8-bit integers (q7_t) and 16-bit integers (q15_t). The descrition of the\n   * kernels are included in the function description. The implementation details are also\n   * described in this paper [1].\n   *\n   * Block Diagram\n   * --------\n   * \\image html CMSIS-NN-OVERVIEW.PNG\n   *\n   * Examples\n   * --------\n   *\n   * The library ships with a number of examples which demonstrate how to use the library functions.\n   *\n   * Pre-processor Macros\n   * ------------\n   *\n   * Each library project have differant pre-processor macros.\n   *\n   * - ARM_MATH_DSP:\n   *\n   * Define macro ARM_MATH_DSP, If the silicon supports DSP instructions.\n   *\n   * - ARM_MATH_BIG_ENDIAN:\n   *\n   * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.\n   *\n   * - ARM_NN_TRUNCATE:\n   *\n   * Define macro ARM_NN_TRUNCATE to use floor instead of round-to-the-nearest-int for the computation.\n   *\n   * Copyright Notice\n   * ------------\n   *\n   * Copyright (C) 2010-2018 Arm Limited. All rights reserved.\n   *\n   * [1] CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs https://arxiv.org/abs/1801.06601\n   */\n\n/**\n * @defgroup groupNN Neural Network Functions\n * These functions perform basic operations for neural network layers.\n */\n\n#ifndef _ARM_NNFUNCTIONS_H\n#define _ARM_NNFUNCTIONS_H\n\n#include \"arm_nnsupportfunctions.h\"\n#include \"arm_nn_tables.h\"\n\n#define USE_INTRINSIC\n\n//#define ARM_NN_TRUNCATE /* This config the rounding model to floor or round to the nearest int */\n\n#ifdef __cplusplus\nextern    \"C\"\n{\n#endif\n\n/**\n * @defgroup NNConv Neural Network Convolution Functions\n *\n * Perform convolution layer\n *\n * The convolution is implemented in 2 steps: im2col and GEMM\n *\n * im2col is a process of converting each patch of image data into\n * a column. After im2col, the convolution is computed as matrix-matrix\n * multiplication.\n *\n * To reduce the memory footprint, the im2col is performed partially.\n * Each iteration, only a few column (i.e., patches) are generated and\n * computed with GEMM kernels similar to CMSIS-DSP arm_mat_mult functions.\n *\n */\n\n  /**\n   * @brief Basic Q7 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_convolve_HWC_q7_basic(const q7_t * Im_in,\n                                         const uint16_t dim_im_in,\n                                         const uint16_t ch_im_in,\n                                         const q7_t * wt,\n                                         const uint16_t ch_im_out,\n                                         const uint16_t dim_kernel,\n                                         const uint16_t padding,\n                                         const uint16_t stride,\n                                         const q7_t * bias,\n                                         const uint16_t bias_shift,\n                                         const uint16_t out_shift,\n                                         q7_t * Im_out,\n                                         const uint16_t dim_im_out,\n                                         q15_t * bufferA,\n                                         q7_t * bufferB);\n\n  /**\n   * @brief Basic Q7 convolution function (non-sqaure shape)\n   * @param[in]       Im_in        pointer to input tensor\n   * @param[in]       dim_im_in_x  input tensor dimention x\n   * @param[in]       dim_im_in_y  input tensor dimention y\n   * @param[in]       ch_im_in     number of input tensor channels\n   * @param[in]       wt           pointer to kernel weights\n   * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel_x filter kernel size x\n   * @param[in]       dim_kernel_y filter kernel size y\n   * @param[in]       padding_x    padding size x\n   * @param[in]       padding_y    padding size y\n   * @param[in]       stride_x     convolution stride x\n   * @param[in]       stride_y     convolution stride y\n   * @param[in]       bias         pointer to bias\n   * @param[in]       bias_shift   amount of left-shift for bias\n   * @param[in]       out_shift    amount of right-shift for output\n   * @param[in,out]   Im_out       pointer to output tensor\n   * @param[in]       dim_im_out_x output tensor dimension x\n   * @param[in]       dim_im_out_y output tensor dimension y\n   * @param[in,out]   bufferA      pointer to buffer space for input\n   * @param[in,out]   bufferB      pointer to buffer space for output\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   */\n\n    arm_status arm_convolve_HWC_q7_basic_nonsquare(const q7_t * Im_in,\n                                                  const uint16_t dim_im_in_x,\n                                                  const uint16_t dim_im_in_y,\n                                                  const uint16_t ch_im_in,\n                                                  const q7_t * wt,\n                                                  const uint16_t ch_im_out,\n                                                  const uint16_t dim_kernel_x,\n                                                  const uint16_t dim_kernel_y,\n                                                  const uint16_t padding_x,\n                                                  const uint16_t padding_y,\n                                                  const uint16_t stride_x,\n                                                  const uint16_t stride_y,\n                                                  const q7_t * bias,\n                                                  const uint16_t bias_shift,\n                                                  const uint16_t out_shift,\n                                                  q7_t * Im_out,\n                                                  const uint16_t dim_im_out_x,\n                                                  const uint16_t dim_im_out_y,\n                                                  q15_t * bufferA,\n                                                  q7_t * bufferB);\n\n  /**\n   * @brief Basic Q15 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_convolve_HWC_q15_basic(const q15_t * Im_in,\n                                          const uint16_t dim_im_in,\n                                          const uint16_t ch_im_in,\n                                          const q15_t * wt,\n                                          const uint16_t ch_im_out,\n                                          const uint16_t dim_kernel,\n                                          const uint16_t padding,\n                                          const uint16_t stride,\n                                          const q15_t * bias,\n                                          const uint16_t bias_shift,\n                                          const uint16_t out_shift,\n                                          q15_t * Im_out,\n                                          const uint16_t dim_im_out,\n                                          q15_t * bufferA,\n                                          q7_t * bufferB);\n\n  /**\n   * @brief Fast Q7 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * This function is the version with full list of optimization tricks, but with\n   * some contraints:\n   *   ch_im_in is multiple of 4\n   *   ch_im_out is multiple of 2\n   */\n\n    arm_status arm_convolve_HWC_q7_fast(const q7_t * Im_in,\n                                        const uint16_t dim_im_in,\n                                        const uint16_t ch_im_in,\n                                        const q7_t * wt,\n                                        const uint16_t ch_im_out,\n                                        const uint16_t dim_kernel,\n                                        const uint16_t padding,\n                                        const uint16_t stride,\n                                        const q7_t * bias,\n                                        const uint16_t bias_shift,\n                                        const uint16_t out_shift,\n                                        q7_t * Im_out,\n                                        const uint16_t dim_im_out,\n                                        q15_t * bufferA,\n                                        q7_t * bufferB);\n\n  /**\n   * @brief Fast Q7 convolution function (non-sqaure shape)\n   * @param[in]       Im_in        pointer to input tensor\n   * @param[in]       dim_im_in_x  input tensor dimention x\n   * @param[in]       dim_im_in_y  input tensor dimention y\n   * @param[in]       ch_im_in     number of input tensor channels\n   * @param[in]       wt           pointer to kernel weights\n   * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel_x filter kernel size x\n   * @param[in]       dim_kernel_y filter kernel size y\n   * @param[in]       padding_x    padding size x\n   * @param[in]       padding_y    padding size y\n   * @param[in]       stride_x     convolution stride x\n   * @param[in]       stride_y     convolution stride y\n   * @param[in]       bias         pointer to bias\n   * @param[in]       bias_shift   amount of left-shift for bias\n   * @param[in]       out_shift    amount of right-shift for output\n   * @param[in,out]   Im_out       pointer to output tensor\n   * @param[in]       dim_im_out_x output tensor dimension x\n   * @param[in]       dim_im_out_y output tensor dimension y\n   * @param[in,out]   bufferA      pointer to buffer space for input\n   * @param[in,out]   bufferB      pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * This function is the version with full list of optimization tricks, but with\n   * some contraints:\n   *   ch_im_in is multiple of 4\n   *   ch_im_out is multiple of 2\n   */\n\n    arm_status arm_convolve_HWC_q7_fast_nonsquare(const q7_t * Im_in,\n                                                  const uint16_t dim_im_in_x,\n                                                  const uint16_t dim_im_in_y,\n                                                  const uint16_t ch_im_in,\n                                                  const q7_t * wt,\n                                                  const uint16_t ch_im_out,\n                                                  const uint16_t dim_kernel_x,\n                                                  const uint16_t dim_kernel_y,\n                                                  const uint16_t padding_x,\n                                                  const uint16_t padding_y,\n                                                  const uint16_t stride_x,\n                                                  const uint16_t stride_y,\n                                                  const q7_t * bias,\n                                                  const uint16_t bias_shift,\n                                                  const uint16_t out_shift,\n                                                  q7_t * Im_out,\n                                                  const uint16_t dim_im_out_x,\n                                                  const uint16_t dim_im_out_y,\n                                                  q15_t * bufferA,\n                                                  q7_t * bufferB);\n\n  /**\n   * @brief Fast Q7 version of 1x1 convolution (non-sqaure shape)\n   * @param[in]       Im_in        pointer to input tensor\n   * @param[in]       dim_im_in_x  input tensor dimention x\n   * @param[in]       dim_im_in_y  input tensor dimention y\n   * @param[in]       ch_im_in     number of input tensor channels\n   * @param[in]       wt           pointer to kernel weights\n   * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel_x filter kernel size x\n   * @param[in]       dim_kernel_y filter kernel size y\n   * @param[in]       padding_x    padding size x\n   * @param[in]       padding_y    padding size y\n   * @param[in]       stride_x     convolution stride x\n   * @param[in]       stride_y     convolution stride y\n   * @param[in]       bias         pointer to bias\n   * @param[in]       bias_shift   amount of left-shift for bias\n   * @param[in]       out_shift    amount of right-shift for output\n   * @param[in,out]   Im_out       pointer to output tensor\n   * @param[in]       dim_im_out_x output tensor dimension x\n   * @param[in]       dim_im_out_y output tensor dimension y\n   * @param[in,out]   bufferA      pointer to buffer space for input\n   * @param[in,out]   bufferB      pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * This function implement convolution with 1x1 kernel size (i.e., dim_kernel_x=1\n   * and dim_kernel_y=1). It can be used for\n   * second half of MobileNets after depthwise separable convolution.\n   *\n   * This function is the version with full list of optimization tricks, but with\n   * some contraints:\n   *   ch_im_in is multiple of 4\n   *   ch_im_out is multiple of 2\n   */\n    arm_status arm_convolve_1x1_HWC_q7_fast_nonsquare(const q7_t * Im_in,\n                                                      const uint16_t dim_im_in_x,\n                                                      const uint16_t dim_im_in_y,\n                                                      const uint16_t ch_im_in,\n                                                      const q7_t * wt,\n                                                      const uint16_t ch_im_out,\n                                                      const uint16_t dim_kernel_x,\n                                                      const uint16_t dim_kernel_y,\n                                                      const uint16_t padding_x,\n                                                      const uint16_t padding_y,\n                                                      const uint16_t stride_x,\n                                                      const uint16_t stride_y,\n                                                      const q7_t * bias,\n                                                      const uint16_t bias_shift,\n                                                      const uint16_t out_shift,\n                                                      q7_t * Im_out,\n                                                      const uint16_t dim_im_out_x,\n                                                      const uint16_t dim_im_out_y,\n                                                      q15_t * bufferA,\n                                                      q7_t * bufferB);\n\n  /**\n   * @brief Q7 version of convolution for RGB image\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * This kernel is written exclusively for convolution with ch_im_in\n   * equals 3. This applies on the first layer of CNNs which has input\n   * image with RGB format.\n   */\n\n    arm_status arm_convolve_HWC_q7_RGB(const q7_t * Im_in,\n                                       const uint16_t dim_im_in,\n                                       const uint16_t ch_im_in,\n                                       const q7_t * wt,\n                                       const uint16_t ch_im_out,\n                                       const uint16_t dim_kernel,\n                                       const uint16_t padding,\n                                       const uint16_t stride,\n                                       const q7_t * bias,\n                                       const uint16_t bias_shift,\n                                       const uint16_t out_shift,\n                                       q7_t * Im_out,\n                                       const uint16_t dim_im_out,\n                                       q15_t * bufferA,\n                                       q7_t * bufferB);\n\n  /**\n   * @brief Fast Q15 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * This function is the version with full list of optimization tricks, but with\n   * some contraints:\n   *   ch_im_in is multiple of 2\n   *   ch_im_out is multiple of 2\n   */\n\n    arm_status arm_convolve_HWC_q15_fast(const q15_t * Im_in,\n                                         const uint16_t dim_im_in,\n                                         const uint16_t ch_im_in,\n                                         const q15_t * wt,\n                                         const uint16_t ch_im_out,\n                                         const uint16_t dim_kernel,\n                                         const uint16_t padding,\n                                         const uint16_t stride,\n                                         const q15_t * bias,\n                                         const uint16_t bias_shift,\n                                         const uint16_t out_shift,\n                                         q15_t * Im_out,\n                                         const uint16_t dim_im_out,\n                                         q15_t * bufferA,\n                                         q7_t * bufferB);\n\n  /**\n   * @brief Fast Q15 convolution function (non-sqaure shape)\n   * @param[in]       Im_in        pointer to input tensor\n   * @param[in]       dim_im_in_x  input tensor dimention x\n   * @param[in]       dim_im_in_y  input tensor dimention y\n   * @param[in]       ch_im_in     number of input tensor channels\n   * @param[in]       wt           pointer to kernel weights\n   * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel_x filter kernel size x\n   * @param[in]       dim_kernel_y filter kernel size y\n   * @param[in]       padding_x    padding size x\n   * @param[in]       padding_y    padding size y\n   * @param[in]       stride_x     convolution stride x\n   * @param[in]       stride_y     convolution stride y\n   * @param[in]       bias         pointer to bias\n   * @param[in]       bias_shift   amount of left-shift for bias\n   * @param[in]       out_shift    amount of right-shift for output\n   * @param[in,out]   Im_out       pointer to output tensor\n   * @param[in]       dim_im_out_x output tensor dimension x\n   * @param[in]       dim_im_out_y output tensor dimension y\n   * @param[in,out]   bufferA      pointer to buffer space for input\n   * @param[in,out]   bufferB      pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel\n   *\n   * bufferB size: 0\n   *\n   * <b>Input dimension constraints:</b>\n   *\n   * ch_im_in is multiple of 2\n   *\n   * ch_im_out is multipe of 2\n   *\n   */\n\n    arm_status\n    arm_convolve_HWC_q15_fast_nonsquare(const q15_t * Im_in,\n                              const uint16_t dim_im_in_x,\n                              const uint16_t dim_im_in_y,\n                              const uint16_t ch_im_in,\n                              const q15_t * wt,\n                              const uint16_t ch_im_out,\n                              const uint16_t dim_kernel_x,\n                              const uint16_t dim_kernel_y,\n                              const uint16_t padding_x,\n                              const uint16_t padding_y,\n                              const uint16_t stride_x,\n                              const uint16_t stride_y,\n                              const q15_t * bias,\n                              const uint16_t bias_shift,\n                              const uint16_t out_shift,\n                              q15_t * Im_out,\n                              const uint16_t dim_im_out_x,\n                              const uint16_t dim_im_out_y,\n                              q15_t * bufferA,\n                              q7_t * bufferB);\n\n  /**\n   * @brief Q7 depthwise separable convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * This function is the version with full list of optimization tricks, but with\n   * some contraints:\n   *   ch_im_in is multiple of 2\n   *   ch_im_out is multiple of 2\n   */\n\n    arm_status arm_depthwise_separable_conv_HWC_q7(const q7_t * Im_in,\n                                                   const uint16_t dim_im_in,\n                                                   const uint16_t ch_im_in,\n                                                   const q7_t * wt,\n                                                   const uint16_t ch_im_out,\n                                                   const uint16_t dim_kernel,\n                                                   const uint16_t padding,\n                                                   const uint16_t stride,\n                                                   const q7_t * bias,\n                                                   const uint16_t bias_shift,\n                                                   const uint16_t out_shift,\n                                                   q7_t * Im_out,\n                                                   const uint16_t dim_im_out,\n                                                   q15_t * bufferA,\n                                                   q7_t * bufferB);\n\n  /**\n   * @brief Q7 depthwise separable convolution function (non-square shape)\n   * @param[in]       Im_in         pointer to input tensor\n   * @param[in]       dim_im_in_x   input tensor dimention x\n   * @param[in]       dim_im_in_y   input tensor dimention y\n   * @param[in]       ch_im_in      number of input tensor channels\n   * @param[in]       wt            pointer to kernel weights\n   * @param[in]       ch_im_out     number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel_x  filter kernel size x\n   * @param[in]       dim_kernel_y  filter kernel size y\n   * @param[in]       padding_x     padding sizes x\n   * @param[in]       padding_y     padding sizes y\n   * @param[in]       stride_x      convolution stride x\n   * @param[in]       stride_y      convolution stride y\n   * @param[in]       bias          pointer to bias\n   * @param[in]       bias_shift    amount of left-shift for bias\n   * @param[in]       out_shift     amount of right-shift for output\n   * @param[in,out]   Im_out        pointer to output tensor\n   * @param[in]       dim_im_out_x  output tensor dimension x\n   * @param[in]       dim_im_out_y  output tensor dimension y\n   * @param[in,out]   bufferA       pointer to buffer space for input\n   * @param[in,out]   bufferB       pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * This function is the version with full list of optimization tricks, but with\n   * some contraints:\n   *   ch_im_in is multiple of 2\n   *   ch_im_out is multiple of 2\n   */\n    arm_status arm_depthwise_separable_conv_HWC_q7_nonsquare(const q7_t * Im_in,\n                                                             const uint16_t dim_im_in_x,\n                                                             const uint16_t dim_im_in_y,\n                                                             const uint16_t ch_im_in,\n                                                             const q7_t * wt,\n                                                             const uint16_t ch_im_out,\n                                                             const uint16_t dim_kernel_x,\n                                                             const uint16_t dim_kernel_y,\n                                                             const uint16_t padding_x,\n                                                             const uint16_t padding_y,\n                                                             const uint16_t stride_x,\n                                                             const uint16_t stride_y,\n                                                             const q7_t * bias,\n                                                             const uint16_t bias_shift,\n                                                             const uint16_t out_shift,\n                                                             q7_t * Im_out,\n                                                             const uint16_t dim_im_out_x,\n                                                             const uint16_t dim_im_out_y,\n                                                             q15_t * bufferA,\n                                                             q7_t * bufferB);\n\n\n/**\n * @defgroup FC Fully-connected Layer Functions\n *\n * Perform fully-connected layer\n *\n * Fully-connected layer is basically a matrix-vector multiplication\n * with bias. The matrix is the weights and the input/output vectors\n * are the activation values. Supported {weight, activation} precisions\n * include {8-bit, 8-bit}, {16-bit, 16-bit}, and {8-bit, 16-bit}.\n *\n * Here we have two types of kernel functions. The basic function\n * implements the function using regular GEMV approach. The opt functions\n * operates with weights in interleaved formats.\n *\n */\n\n  /**\n   * @brief Q7 basic fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_fully_connected_q7(const q7_t * pV,\n                                      const q7_t * pM,\n                                      const uint16_t dim_vec,\n                                      const uint16_t num_of_rows,\n                                      const uint16_t bias_shift,\n                                      const uint16_t out_shift,\n                                      const q7_t * bias,\n                                      q7_t * pOut,\n                                      q15_t * vec_buffer);\n\n  /**\n   * @brief Q7 opt fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_fully_connected_q7_opt(const q7_t * pV,\n                                          const q7_t * pM,\n                                          const uint16_t dim_vec,\n                                          const uint16_t num_of_rows,\n                                          const uint16_t bias_shift,\n                                          const uint16_t out_shift,\n                                          const q7_t * bias,\n                                          q7_t * pOut,\n                                          q15_t * vec_buffer);\n\n  /**\n   * @brief Q15 basic fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_fully_connected_q15(const q15_t * pV,\n                                       const q15_t * pM,\n                                       const uint16_t dim_vec,\n                                       const uint16_t num_of_rows,\n                                       const uint16_t bias_shift,\n                                       const uint16_t out_shift,\n                                       const q15_t * bias,\n                                       q15_t * pOut,\n                                       q15_t * vec_buffer);\n\n  /**\n   * @brief Q15 opt fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_fully_connected_q15_opt(const q15_t * pV,\n                                           const q15_t * pM,\n                                           const uint16_t dim_vec,\n                                           const uint16_t num_of_rows,\n                                           const uint16_t bias_shift,\n                                           const uint16_t out_shift,\n                                           const q15_t * bias,\n                                           q15_t * pOut,\n                                           q15_t * vec_buffer);\n\n  /**\n   * @brief Mixed Q15-Q7 fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_fully_connected_mat_q7_vec_q15(const q15_t * pV,\n                                                  const q7_t * pM,\n                                                  const uint16_t dim_vec,\n                                                  const uint16_t num_of_rows,\n                                                  const uint16_t bias_shift,\n                                                  const uint16_t out_shift,\n                                                  const q7_t * bias,\n                                                  q15_t * pOut,\n                                                  q15_t * vec_buffer);\n\n  /**\n   * @brief Mixed Q15-Q7 opt fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   */\n\n    arm_status arm_fully_connected_mat_q7_vec_q15_opt(const q15_t * pV,\n                                                      const q7_t * pM,\n                                                      const uint16_t dim_vec,\n                                                      const uint16_t num_of_rows,\n                                                      const uint16_t bias_shift,\n                                                      const uint16_t out_shift,\n                                                      const q7_t * bias,\n                                                      q15_t * pOut,\n                                                      q15_t * vec_buffer);\n\n/**\n * @brief Matrix-Multiplication Kernels for Convolution\n *\n * These functions are used within convolution layer functions for\n * matrix multiplication.\n *\n * The implementation is similar to CMSIS-DSP arm_mat_mult functions\n * with one Q7 and one Q15 operands. The Q15 operand is the im2col\n * output which is always with 2 columns.\n *\n */\n\n  /**\n   * @brief Matrix-multiplication function for convolution\n   * @param[in]       pA          pointer to operand A\n   * @param[in]       pInBuffer   pointer to operand B, always conssists of 2 vectors\n   * @param[in]       ch_im_out   numRow of A\n   * @param[in]       numCol_A    numCol of A\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        the bias\n   * @param[in,out]   pOut        pointer to output\n   * @return     The function returns the incremented output pointer\n   */\n\n    q7_t     *arm_nn_mat_mult_kernel_q7_q15(const q7_t * pA,\n                                            const q15_t * pInBuffer,\n                                            const uint16_t ch_im_out,\n                                            const uint16_t numCol_A,\n                                            const uint16_t bias_shift,\n                                            const uint16_t out_shift,\n                                            const q7_t * bias,\n                                            q7_t * pOut);\n\n  /**\n   * @brief Matrix-multiplication function for convolution with reordered columns\n   * @param[in]       pA          pointer to operand A\n   * @param[in]       pInBuffer   pointer to operand B, always conssists of 2 vectors\n   * @param[in]       ch_im_out   numRow of A\n   * @param[in]       numCol_A    numCol of A\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        the bias\n   * @param[in,out]   pOut        pointer to output\n   * @return     The function returns the incremented output pointer\n   */\n\n    q7_t     *arm_nn_mat_mult_kernel_q7_q15_reordered(const q7_t * pA,\n                                                      const q15_t * pInBuffer,\n                                                      const uint16_t ch_im_out,\n                                                      const uint16_t numCol_A,\n                                                      const uint16_t bias_shift,\n                                                      const uint16_t out_shift,\n                                                      const q7_t * bias,\n                                                      q7_t * pOut);\n\n#ifdef __cplusplus\n}\n#endif\n\n/*\n *  Other functions\n *  These layers are typically not timing critical\n *  Basic implementation is supported here\n */\n\n#ifdef __cplusplus\nextern    \"C\"\n{\n#endif\n\n/**\n * @defgroup Acti Neural Network Activation Functions\n *\n * Perform activation layers, including ReLU (Rectified Linear Unit),\n * sigmoid and tanh\n *\n */\n\n  /**\n   * @brief Q7 RELU function\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @return none.\n   */\n\n    void      arm_relu_q7(q7_t * data, uint16_t size);\n\n  /**\n   * @brief Q15 RELU function\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @return none.\n   */\n\n    void      arm_relu_q15(q15_t * data, uint16_t size);\n\n  /**\n   * @brief Q7 neural network activation function using direct table look-up\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @param[in]       int_width   bit-width of the integer part, assume to be smaller than 3\n   * @param[in]       type        type of activation functions\n   * @return none.\n   */\n\n    void      arm_nn_activations_direct_q7(q7_t * data, uint16_t size, uint16_t int_width,\n                                           arm_nn_activation_type type);\n\n  /**\n   * @brief Q15 neural network activation function using direct table look-up\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @param[in]       int_width   bit-width of the integer part, assume to be smaller than 3\n   * @param[in]       type        type of activation functions\n   * @return none.\n   */\n\n    void      arm_nn_activations_direct_q15(q15_t * data, uint16_t size, uint16_t int_width,\n                                            arm_nn_activation_type type);\n\n/**\n * @defgroup Pooling Neural Network Pooling Functions\n *\n * Perform pooling functions, including max pooling and average pooling\n *\n */\n\n  /**\n   * @brief Q7 max pooling function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @return none.\n   *\n   */\n\n    void      arm_maxpool_q7_HWC(q7_t * Im_in,\n                                 const uint16_t dim_im_in,\n                                 const uint16_t ch_im_in,\n                                 const uint16_t dim_kernel,\n                                 const uint16_t padding,\n                                 const uint16_t stride,\n                                 const uint16_t dim_im_out,\n                                 q7_t * bufferA,\n                                 q7_t * Im_out);\n\n  /**\n   * @brief Q7 average pooling function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @return none.\n   *\n   */\n\n    void      arm_avepool_q7_HWC(q7_t * Im_in,\n                                 const uint16_t dim_im_in,\n                                 const uint16_t ch_im_in,\n                                 const uint16_t dim_kernel,\n                                 const uint16_t padding,\n                                 const uint16_t stride,\n                                 const uint16_t dim_im_out,\n                                 q7_t * bufferA,\n                                 q7_t * Im_out);\n\n/**\n * @defgroup Softmax Softmax Functions\n *\n * EXP(2) based softmax function\n *\n */\n\n  /**\n   * @brief Q7 softmax function\n   * @param[in]       vec_in      pointer to input vector\n   * @param[in]       dim_vec     input vector dimention\n   * @param[out]      p_out       pointer to output vector\n   * @return none.\n   *\n   */\n\n    void      arm_softmax_q7(const q7_t * vec_in, const uint16_t dim_vec, q7_t * p_out);\n\n  /**\n   * @brief Q15 softmax function\n   * @param[in]       vec_in      pointer to input vector\n   * @param[in]       dim_vec     input vector dimention\n   * @param[out]      p_out       pointer to output vector\n   * @return none.\n   *\n   */\n\n    void      arm_softmax_q15(const q15_t * vec_in, const uint16_t dim_vec, q15_t * p_out);\n\n  /**\n   * @brief uint8 depthwise convolution function with asymmetric quantization for even number of channel multiplier\n   *        and input channels. Unless specified otherwise, arguments are mandatory.\n   *\n   * @param[in]     input     Pointer to input tensor\n   * @param[in]     input_x   Width of input tensor\n   * @param[in]     input_y   Height of input tensor\n   * @param[in]     input_ch  Channels in input tensor\n   * @param[in]     kernel    Pointer to kernel weights\n   * @param[in]     kernel_x  Width of kernel\n   * @param[in]     kernel_y  Height of kernel\n   * @param[in]     ch_mult   Number of channel multiplier\n   * @param[in]     pad_x     Padding sizes x\n   * @param[in]     pad_y     Padding sizes y\n   * @param[in]     stride_x  Convolution stride along the width\n   * @param[in]     stride_y  Convolution stride along the height\n   * @param[in]     dilation_x Dilation along width. Not used and intended for future enhancement.\n   * @param[in]     dilation_y Dilation along height. Not used and intended for future enhancement.\n   * @param[in]     bias       Pointer to optional bias values. If no bias is\n   *                           availble, NULL is expected\n   * @param[in]     input_offset  Input tensor zero offset\n   * @param[in]     filter_offset Kernel tensor zero offset\n   * @param[in]     output_offset Output tensor zero offset\n   * @param[in,out] output        Pointer to output tensor\n   * @param[in]     output_x  Width of output tensor\n   * @param[in]     output_y  Height of output tensor\n   * @param[in]     output_activation_min   Minimum value to clamp the output to. Range : {0, 255}\n   * @param[in]     output_activation_max   Minimum value to clamp the output to. Range : {0, 255}\n   * @param[in]     out_shift  Amount of right-shift for output\n   * @param[in]     out_mult   Output multiplier for requantization\n   * @return        The function returns one of the following\n   *                <code>ARM_MATH_SIZE_MISMATCH</code> - Not supported dimension of tensors\n   *                <code>ARM_MATH_SUCCESS</code> - Successful operation\n   *                <code>ARM_MATH_ARGUMENT_ERROR</code> - Implementation not available\n   *\n   * <b> Input constraints</b>\n   * ch_mult  is multiple of 2\n   * kernel_x is multiple of 2\n   *\n   */\n    arm_status arm_depthwise_conv_u8_basic_ver1(const uint8_t *input,\n                                                const uint16_t input_x,\n                                                const uint16_t input_y,\n                                                const uint16_t input_ch,\n                                                const uint8_t *kernel,\n                                                const uint16_t kernel_x,\n                                                const uint16_t kernel_y,\n                                                const int16_t ch_mult,\n                                                const int16_t pad_x,\n                                                const int16_t pad_y,\n                                                const int16_t stride_x,\n                                                const int16_t stride_y,\n                                                const int16_t dilation_x,\n                                                const int16_t dilation_y,\n                                                const int32_t *bias,\n                                                const int32_t input_offset,\n                                                const int32_t filter_offset,\n                                                const int32_t output_offset,\n                                                uint8_t *output,\n                                                const uint16_t output_x,\n                                                const uint16_t output_y,\n                                                const int32_t output_activation_min,\n                                                const int32_t output_activation_max,\n                                                const int32_t out_shift,\n                                                const int32_t out_mult);\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Include/arm_nnsupportfunctions.h",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nnsupportfunctions.h\n * Description:  Public header file of support functions for CMSIS NN Library\n *\n * $Date:        13. July 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n * -------------------------------------------------------------------- */\n\n#ifndef _ARM_NNSUPPORTFUNCTIONS_H_\n#define _ARM_NNSUPPORTFUNCTIONS_H_\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n\n#ifdef __cplusplus\nextern    \"C\"\n{\n#endif\n\n#define LEFT_SHIFT(_shift)  (_shift > 0 ? _shift : 0)\n#define RIGHT_SHIFT(_shift) (_shift > 0 ? 0 : -_shift)\n#define Q31_MIN (0x80000000L)\n#define Q31_MAX (0x7FFFFFFFL)\n\n/**\n * @brief Union for SIMD access of Q31/Q15/Q7 types\n */\nunion arm_nnword\n{\n    q31_t     word;\n               /**< Q31 type */\n    q15_t     half_words[2];\n               /**< Q15 type */\n    q7_t      bytes[4];\n               /**< Q7 type */\n};\n\n/**\n * @brief Struct for specifying activation function types\n *\n */\ntypedef enum\n{\n    ARM_SIGMOID = 0,\n                /**< Sigmoid activation function */\n    ARM_TANH = 1,\n             /**< Tanh activation function */\n} arm_nn_activation_type;\n\n/**\n * @defgroup nndata_convert Neural Network Data Conversion Functions\n *\n * Perform data type conversion in-between neural network operations\n *\n */\n\n/**\n * @brief Converts the elements of the Q7 vector to Q15 vector without left-shift\n * @param[in]       *pSrc points to the Q7 input vector\n * @param[out]      *pDst points to the Q15 output vector\n * @param[in]       blockSize length of the input vector\n * @return none.\n *\n */\n\nvoid      arm_q7_to_q15_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize);\n\n/**\n * @brief  Converts the elements of the Q7 vector to reordered Q15 vector without left-shift\n * @param[in]       *pSrc points to the Q7 input vector\n * @param[out]      *pDst points to the Q15 output vector\n * @param[in]       blockSize length of the input vector\n * @return none.\n *\n */\n\nvoid      arm_q7_to_q15_reordered_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize);\n\n#if defined (ARM_MATH_DSP)\n\n/**\n * @brief read and expand one Q7 word into two Q15 words\n */\n\n__STATIC_FORCEINLINE void *read_and_pad(void *source, q31_t * out1, q31_t * out2)\n{\n        q31_t     inA = *__SIMD32(source)++;\n        q31_t     inAbuf1 = __SXTB16(__ROR(inA, 8));\n        q31_t     inAbuf2 = __SXTB16(inA);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        *out2 = __PKHTB(inAbuf1, inAbuf2, 16);\n        *out1 = __PKHBT(inAbuf2, inAbuf1, 16);\n#else\n        *out1 = __PKHTB(inAbuf1, inAbuf2, 16);\n        *out2 = __PKHBT(inAbuf2, inAbuf1, 16);\n#endif\n\n        return source;\n}\n\n/**\n * @brief read and expand one Q7 word into two Q15 words with reordering\n */\n\n__STATIC_FORCEINLINE void *read_and_pad_reordered(void *source, q31_t * out1, q31_t * out2)\n{\n        q31_t     inA = *__SIMD32(source)++;\n#ifndef ARM_MATH_BIG_ENDIAN\n        *out2 = __SXTB16(__ROR(inA, 8));\n        *out1 = __SXTB16(inA);\n#else\n        *out1 = __SXTB16(__ROR(inA, 8));\n        *out2 = __SXTB16(inA);\n#endif\n\n        return source;\n}\n#endif\n\n/**\n * @defgroup NNBasicMath Basic Math Functions for Neural Network Computation\n *\n * Basic Math Functions for Neural Network Computation\n *\n */\n\n/**\n * @brief           Q7 vector multiplication with variable output shifts\n * @param[in]       *pSrcA        pointer to the first input vector\n * @param[in]       *pSrcB        pointer to the second input vector\n * @param[out]      *pDst         pointer to the output vector\n * @param[in]       out_shift     amount of right-shift for output\n * @param[in]       blockSize     number of samples in each vector\n * @return none.\n *\n * <b>Scaling and Overflow Behavior:</b>\n * \\par\n * The function uses saturating arithmetic.\n * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.\n */\n\nvoid arm_nn_mult_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  const uint16_t out_shift,\n  uint32_t blockSize);\n\n/**\n * @brief           Q7 vector multiplication with variable output shifts\n * @param[in]       *pSrcA        pointer to the first input vector\n * @param[in]       *pSrcB        pointer to the second input vector\n * @param[out]      *pDst         pointer to the output vector\n * @param[in]       out_shift     amount of right-shift for output\n * @param[in]       blockSize     number of samples in each vector\n * @return none.\n *\n * <b>Scaling and Overflow Behavior:</b>\n * \\par\n * The function uses saturating arithmetic.\n * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.\n */\n\nvoid arm_nn_mult_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  const uint16_t out_shift,\n  uint32_t blockSize);\n\n/**\n * @brief macro for adding rounding offset\n */\n#ifndef ARM_NN_TRUNCATE\n    #define NN_ROUND(out_shift) ( (0x1u << out_shift) >> 1 )\n#else\n    #define NN_ROUND(out_shift) 0\n#endif\n\n/**\n * @brief           Saturating doubling high multiply. Result matches\n *                  NEON instruction VQRDMULH.\n * @param[in]       m1        Multiplicand\n * @param[in]       m2        Multiplier\n * @return          Result of multiplication.\n *\n */\n__STATIC_FORCEINLINE q31_t arm_nn_sat_doubling_high_mult(const q31_t m1, const q31_t m2)\n{\n    q31_t result = 0;\n    // Rounding offset to add for a right shift of 31\n    q63_t mult = 1 << 30;\n\n    if ((m1 < 0) ^ (m2 < 0))\n    {\n        mult = 1 - mult;\n    }\n    // Gets resolved as a SMLAL instruction\n    mult = mult + (q63_t)m1 * m2;\n\n    // Utilize all of the upper 32 bits. This is the doubling step\n    // as well.\n    result = mult / (1UL << 31);\n\n    if ((m1 == m2) && (m1 == Q31_MIN))\n    {\n        result = Q31_MAX;\n    }\n    return result;\n}\n\n/**\n * @brief           Rounding divide by power of two.\n * @param[in]       dividend - Dividend\n * @param[in]       exponent - Divisor = power(2, exponent)\n *                             Range: [0, 31]\n * @return          Rounded result of division. Midpoint is rounded away from zero.\n *\n */\n__STATIC_FORCEINLINE q31_t arm_nn_divide_by_power_of_two(const q31_t dividend, const q31_t exponent)\n{\n    q31_t result = 0;\n    const q31_t remainder_mask = (1l << exponent) - 1;\n    int32_t remainder = remainder_mask & dividend;\n\n    // Basic division\n    result = dividend >> exponent;\n\n    // Adjust 'result' for rounding (mid point away from zero)\n    q31_t threshold = remainder_mask >> 1;\n    if (result < 0)\n    {\n        threshold++;\n    }\n    if (remainder > threshold)\n    {\n        result++;\n    }\n\n    return result;\n}\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM0/startup_ARMCM0.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM0.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM0 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM0/system_ARMCM0.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM0.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM0 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM0.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM3/startup_ARMCM3.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM3.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM3 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00080000\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM3/system_ARMCM3.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM3.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM3 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ARMCM3.h\"\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM4/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000C00\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM4/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device Series\n * @version  V5.00\n * @date     07. September 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000UL)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5U * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1U)\n  SCB->CPACR |= ((3U << 10U*2U) |           /* set CP10 Full Access */\n                 (3U << 11U*2U)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM4_FP/startup_ARMCM4.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM4.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM4 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00004000\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00100000\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM4_FP/system_ARMCM4.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM4.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM4 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM4)\n  #include \"ARMCM4.h\"\n#elif defined (ARMCM4_FP)\n  #include \"ARMCM4_FP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1)\n  SCB->CPACR |= ((3U << 10*2) |           /* set CP10 Full Access */\n                 (3U << 11*2)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM7_SP/startup_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     startup_ARMCM7.s\n * @brief    CMSIS Core Device Startup File for\n *           ARMCM7 Device Series\n * @version  V5.00\n * @date     26. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include <stdint.h>\n\n\n/*----------------------------------------------------------------------------\n  Linker generated Symbols\n *----------------------------------------------------------------------------*/\nextern uint32_t __etext;\nextern uint32_t __data_start__;\nextern uint32_t __data_end__;\nextern uint32_t __copy_table_start__;\nextern uint32_t __copy_table_end__;\nextern uint32_t __zero_table_start__;\nextern uint32_t __zero_table_end__;\nextern uint32_t __bss_start__;\nextern uint32_t __bss_end__;\nextern uint32_t __StackTop;\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Handler Function Prototype\n *----------------------------------------------------------------------------*/\ntypedef void( *pFunc )( void );\n\n\n/*----------------------------------------------------------------------------\n  External References\n *----------------------------------------------------------------------------*/\n#ifndef __START\nextern void  _start(void) __attribute__((noreturn));    /* PreeMain (C library entry point) */\n#else\nextern int  __START(void) __attribute__((noreturn));    /* main entry point */\n#endif\n\n#ifndef __NO_SYSTEM_INIT\nextern void SystemInit (void);            /* CMSIS System Initialization      */\n#endif\n\n\n/*----------------------------------------------------------------------------\n  Internal References\n *----------------------------------------------------------------------------*/\nvoid Default_Handler(void);                          /* Default empty handler */\nvoid Reset_Handler(void);                            /* Reset Handler */\n\n\n/*----------------------------------------------------------------------------\n  User Initial Stack & Heap\n *----------------------------------------------------------------------------*/\n#ifndef __STACK_SIZE\n  #define\t__STACK_SIZE  0x00000400\n#endif\nstatic uint8_t stack[__STACK_SIZE] __attribute__ ((aligned(8), used, section(\".stack\")));\n\n#ifndef __HEAP_SIZE\n  #define\t__HEAP_SIZE   0x00000C00\n#endif\n#if __HEAP_SIZE > 0\nstatic uint8_t heap[__HEAP_SIZE]   __attribute__ ((aligned(8), used, section(\".heap\")));\n#endif\n\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Handler\n *----------------------------------------------------------------------------*/\n/* Cortex-M7 Processor Exceptions */\nvoid NMI_Handler         (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid HardFault_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MemManage_Handler   (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid BusFault_Handler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UsageFault_Handler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SVC_Handler         (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid DebugMon_Handler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid PendSV_Handler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SysTick_Handler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\n\n/* ARMCM7 Specific Interrupts */\nvoid WDT_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid RTC_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid TIM0_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid TIM2_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MCIA_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid MCIB_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART0_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART1_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART2_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART4_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid AACI_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CLCD_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid ENET_IRQHandler     (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid USBDC_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid USBHC_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CHLCD_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid FLEXRAY_IRQHandler  (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CAN_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid LIN_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid I2C_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid CPU_CLCD_IRQHandler (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid UART3_IRQHandler    (void) __attribute__ ((weak, alias(\"Default_Handler\")));\nvoid SPI_IRQHandler      (void) __attribute__ ((weak, alias(\"Default_Handler\")));\n\n\n/*----------------------------------------------------------------------------\n  Exception / Interrupt Vector table\n *----------------------------------------------------------------------------*/\nconst pFunc __Vectors[] __attribute__ ((section(\".vectors\"))) = {\n  /* Cortex-M7 Exceptions Handler */\n  (pFunc)((uint32_t)&__StackTop),           /*      Initial Stack Pointer     */\n  Reset_Handler,                            /*      Reset Handler             */\n  NMI_Handler,                              /*      NMI Handler               */\n  HardFault_Handler,                        /*      Hard Fault Handler        */\n  MemManage_Handler,                        /*      MPU Fault Handler         */\n  BusFault_Handler,                         /*      Bus Fault Handler         */\n  UsageFault_Handler,                       /*      Usage Fault Handler       */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  0,                                        /*      Reserved                  */\n  SVC_Handler,                              /*      SVCall Handler            */\n  DebugMon_Handler,                         /*      Debug Monitor Handler     */\n  0,                                        /*      Reserved                  */\n  PendSV_Handler,                           /*      PendSV Handler            */\n  SysTick_Handler,                          /*      SysTick Handler           */\n\n  /* External interrupts */\n  WDT_IRQHandler,                           /*  0:  Watchdog Timer            */\n  RTC_IRQHandler,                           /*  1:  Real Time Clock           */\n  TIM0_IRQHandler,                          /*  2:  Timer0 / Timer1           */\n  TIM2_IRQHandler,                          /*  3:  Timer2 / Timer3           */\n  MCIA_IRQHandler,                          /*  4:  MCIa                      */\n  MCIB_IRQHandler,                          /*  5:  MCIb                      */\n  UART0_IRQHandler,                         /*  6:  UART0 - DUT FPGA          */\n  UART1_IRQHandler,                         /*  7:  UART1 - DUT FPGA          */\n  UART2_IRQHandler,                         /*  8:  UART2 - DUT FPGA          */\n  UART4_IRQHandler,                         /*  9:  UART4 - not connected     */\n  AACI_IRQHandler,                          /* 10: AACI / AC97                */\n  CLCD_IRQHandler,                          /* 11: CLCD Combined Interrupt    */\n  ENET_IRQHandler,                          /* 12: Ethernet                   */\n  USBDC_IRQHandler,                         /* 13: USB Device                 */\n  USBHC_IRQHandler,                         /* 14: USB Host Controller        */\n  CHLCD_IRQHandler,                         /* 15: Character LCD              */\n  FLEXRAY_IRQHandler,                       /* 16: Flexray                    */\n  CAN_IRQHandler,                           /* 17: CAN                        */\n  LIN_IRQHandler,                           /* 18: LIN                        */\n  I2C_IRQHandler,                           /* 19: I2C ADC/DAC                */\n  0,                                        /* 20: Reserved                   */\n  0,                                        /* 21: Reserved                   */\n  0,                                        /* 22: Reserved                   */\n  0,                                        /* 23: Reserved                   */\n  0,                                        /* 24: Reserved                   */\n  0,                                        /* 25: Reserved                   */\n  0,                                        /* 26: Reserved                   */\n  0,                                        /* 27: Reserved                   */\n  CPU_CLCD_IRQHandler,                      /* 28: Reserved - CPU FPGA CLCD   */\n  0,                                        /* 29: Reserved - CPU FPGA        */\n  UART3_IRQHandler,                         /* 30: UART3    - CPU FPGA        */\n  SPI_IRQHandler                            /* 31: SPI Touchscreen - CPU FPGA */\n};\n\n\n/*----------------------------------------------------------------------------\n  Reset Handler called on controller reset\n *----------------------------------------------------------------------------*/\nvoid Reset_Handler(void) {\n  uint32_t *pSrc, *pDest;\n  uint32_t *pTable __attribute__((unused));\n\n/*  Firstly it copies data from read only memory to RAM. There are two schemes\n *  to copy. One can copy more than one sections. Another can only copy\n *  one section.  The former scheme needs more instructions and read-only\n *  data to implement than the latter.\n *  Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes.  */\n\n#ifdef __STARTUP_COPY_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of triplets, each of which specify:\n *    offset 0: LMA of start of a section to copy from\n *    offset 4: VMA of start of a section to copy to\n *    offset 8: size of the section to copy. Must be multiply of 4\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n  pTable = &__copy_table_start__;\n\n  for (; pTable < &__copy_table_end__; pTable = pTable + 3) {\n\t\tpSrc  = (uint32_t*)*(pTable + 0);\n\t\tpDest = (uint32_t*)*(pTable + 1);\n\t\tfor (; pDest < (uint32_t*)(*(pTable + 1) + *(pTable + 2)) ; ) {\n      *pDest++ = *pSrc++;\n\t\t}\n\t}\n#else\n/*  Single section scheme.\n *\n *  The ranges of copy from/to are specified by following symbols\n *    __etext: LMA of start of the section to copy from. Usually end of text\n *    __data_start__: VMA of start of the section to copy to\n *    __data_end__: VMA of end of the section to copy to\n *\n *  All addresses must be aligned to 4 bytes boundary.\n */\n  pSrc  = &__etext;\n  pDest = &__data_start__;\n\n  for ( ; pDest < &__data_end__ ; ) {\n    *pDest++ = *pSrc++;\n  }\n#endif /*__STARTUP_COPY_MULTIPLE */\n\n/*  This part of work usually is done in C library startup code. Otherwise,\n *  define this macro to enable it in this startup.\n *\n *  There are two schemes too. One can clear multiple BSS sections. Another\n *  can only clear one section. The former is more size expensive than the\n *  latter.\n *\n *  Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.\n *  Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later.\n */\n#ifdef __STARTUP_CLEAR_BSS_MULTIPLE\n/*  Multiple sections scheme.\n *\n *  Between symbol address __copy_table_start__ and __copy_table_end__,\n *  there are array of tuples specifying:\n *    offset 0: Start of a BSS section\n *    offset 4: Size of this BSS section. Must be multiply of 4\n */\n  pTable = &__zero_table_start__;\n\n  for (; pTable < &__zero_table_end__; pTable = pTable + 2) {\n\t\tpDest = (uint32_t*)*(pTable + 0);\n\t\tfor (; pDest < (uint32_t*)(*(pTable + 0) + *(pTable + 1)) ; ) {\n      *pDest++ = 0;\n\t\t}\n\t}\n#elif defined (__STARTUP_CLEAR_BSS)\n/*  Single BSS section scheme.\n *\n *  The BSS section is specified by following symbols\n *    __bss_start__: start of the BSS section.\n *    __bss_end__: end of the BSS section.\n *\n *  Both addresses must be aligned to 4 bytes boundary.\n */\n  pDest = &__bss_start__;\n\n  for ( ; pDest < &__bss_end__ ; ) {\n    *pDest++ = 0UL;\n  }\n#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */\n\n#ifndef __NO_SYSTEM_INIT\n\tSystemInit();\n#endif\n\n#ifndef __START\n#define __START _start\n#endif\n\t__START();\n\n}\n\n\n/*----------------------------------------------------------------------------\n  Default Handler for Exceptions / Interrupts\n *----------------------------------------------------------------------------*/\nvoid Default_Handler(void) {\n\n\twhile(1);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM7_SP/startup_ARMCM7.s",
    "content": ";/**************************************************************************//**\n; * @file     startup_ARMCM7.s\n; * @brief    CMSIS Core Device Startup File for\n; *           ARMCM7 Device Series\n; * @version  V5.00\n; * @date     02. March 2016\n; ******************************************************************************/\n;/*\n; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n; *\n; * SPDX-License-Identifier: Apache-2.0\n; *\n; * Licensed under the Apache License, Version 2.0 (the License); you may\n; * not use this file except in compliance with the License.\n; * You may obtain a copy of the License at\n; *\n; * www.apache.org/licenses/LICENSE-2.0\n; *\n; * Unless required by applicable law or agreed to in writing, software\n; * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n; * See the License for the specific language governing permissions and\n; * limitations under the License.\n; */\n\n;/*\n;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------\n;*/\n\n\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00080000\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp              ; Top of Stack\n                DCD     Reset_Handler             ; Reset Handler\n                DCD     NMI_Handler               ; NMI Handler\n                DCD     HardFault_Handler         ; Hard Fault Handler\n                DCD     MemManage_Handler         ; MPU Fault Handler\n                DCD     BusFault_Handler          ; Bus Fault Handler\n                DCD     UsageFault_Handler        ; Usage Fault Handler\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     0                         ; Reserved\n                DCD     SVC_Handler               ; SVCall Handler\n                DCD     DebugMon_Handler          ; Debug Monitor Handler\n                DCD     0                         ; Reserved\n                DCD     PendSV_Handler            ; PendSV Handler\n                DCD     SysTick_Handler           ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WDT_IRQHandler            ;  0:  Watchdog Timer\n                DCD     RTC_IRQHandler            ;  1:  Real Time Clock\n                DCD     TIM0_IRQHandler           ;  2:  Timer0 / Timer1\n                DCD     TIM2_IRQHandler           ;  3:  Timer2 / Timer3\n                DCD     MCIA_IRQHandler           ;  4:  MCIa\n                DCD     MCIB_IRQHandler           ;  5:  MCIb\n                DCD     UART0_IRQHandler          ;  6:  UART0 - DUT FPGA\n                DCD     UART1_IRQHandler          ;  7:  UART1 - DUT FPGA\n                DCD     UART2_IRQHandler          ;  8:  UART2 - DUT FPGA\n                DCD     UART4_IRQHandler          ;  9:  UART4 - not connected\n                DCD     AACI_IRQHandler           ; 10: AACI / AC97\n                DCD     CLCD_IRQHandler           ; 11: CLCD Combined Interrupt\n                DCD     ENET_IRQHandler           ; 12: Ethernet\n                DCD     USBDC_IRQHandler          ; 13: USB Device\n                DCD     USBHC_IRQHandler          ; 14: USB Host Controller\n                DCD     CHLCD_IRQHandler          ; 15: Character LCD\n                DCD     FLEXRAY_IRQHandler        ; 16: Flexray\n                DCD     CAN_IRQHandler            ; 17: CAN\n                DCD     LIN_IRQHandler            ; 18: LIN\n                DCD     I2C_IRQHandler            ; 19: I2C ADC/DAC\n                DCD     0                         ; 20: Reserved\n                DCD     0                         ; 21: Reserved\n                DCD     0                         ; 22: Reserved\n                DCD     0                         ; 23: Reserved\n                DCD     0                         ; 24: Reserved\n                DCD     0                         ; 25: Reserved\n                DCD     0                         ; 26: Reserved\n                DCD     0                         ; 27: Reserved\n                DCD     CPU_CLCD_IRQHandler       ; 28: Reserved - CPU FPGA CLCD\n                DCD     0                         ; 29: Reserved - CPU FPGA\n                DCD     UART3_IRQHandler          ; 30: UART3    - CPU FPGA\n                DCD     SPI_IRQHandler            ; 31: SPI Touchscreen - CPU FPGA\n__Vectors_End\n\n__Vectors_Size  EQU     __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n\n; Reset Handler\n\nReset_Handler   PROC\n                EXPORT  Reset_Handler             [WEAK]\n                IMPORT  SystemInit\n                IMPORT  __main\n                LDR     R0, =SystemInit\n                BLX     R0\n                LDR     R0, =__main\n                BX      R0\n                ENDP\n\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler               [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler         [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler         [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler          [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler        [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler               [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler          [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler            [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler           [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WDT_IRQHandler            [WEAK]\n                EXPORT  RTC_IRQHandler            [WEAK]\n                EXPORT  TIM0_IRQHandler           [WEAK]\n                EXPORT  TIM2_IRQHandler           [WEAK]\n                EXPORT  MCIA_IRQHandler           [WEAK]\n                EXPORT  MCIB_IRQHandler           [WEAK]\n                EXPORT  UART0_IRQHandler          [WEAK]\n                EXPORT  UART1_IRQHandler          [WEAK]\n                EXPORT  UART2_IRQHandler          [WEAK]\n                EXPORT  UART3_IRQHandler          [WEAK]\n                EXPORT  UART4_IRQHandler          [WEAK]\n                EXPORT  AACI_IRQHandler           [WEAK]\n                EXPORT  CLCD_IRQHandler           [WEAK]\n                EXPORT  ENET_IRQHandler           [WEAK]\n                EXPORT  USBDC_IRQHandler          [WEAK]\n                EXPORT  USBHC_IRQHandler          [WEAK]\n                EXPORT  CHLCD_IRQHandler          [WEAK]\n                EXPORT  FLEXRAY_IRQHandler        [WEAK]\n                EXPORT  CAN_IRQHandler            [WEAK]\n                EXPORT  LIN_IRQHandler            [WEAK]\n                EXPORT  I2C_IRQHandler            [WEAK]\n                EXPORT  CPU_CLCD_IRQHandler       [WEAK]\n                EXPORT  SPI_IRQHandler            [WEAK]\n\nWDT_IRQHandler\nRTC_IRQHandler\nTIM0_IRQHandler\nTIM2_IRQHandler\nMCIA_IRQHandler\nMCIB_IRQHandler\nUART0_IRQHandler\nUART1_IRQHandler\nUART2_IRQHandler\nUART3_IRQHandler\nUART4_IRQHandler\nAACI_IRQHandler\nCLCD_IRQHandler\nENET_IRQHandler\nUSBDC_IRQHandler\nUSBHC_IRQHandler\nCHLCD_IRQHandler\nFLEXRAY_IRQHandler\nCAN_IRQHandler\nLIN_IRQHandler\nI2C_IRQHandler\nCPU_CLCD_IRQHandler\nSPI_IRQHandler\n                B       .\n\n                ENDP\n\n\n                ALIGN\n\n\n; User Initial Stack & Heap\n\n                IF      :DEF:__MICROLIB\n\n                EXPORT  __initial_sp\n                EXPORT  __heap_base\n                EXPORT  __heap_limit\n\n                ELSE\n\n                IMPORT  __use_two_region_memory\n                EXPORT  __user_initial_stackheap\n\n__user_initial_stackheap PROC\n                LDR     R0, =  Heap_Mem\n                LDR     R1, =(Stack_Mem + Stack_Size)\n                LDR     R2, = (Heap_Mem +  Heap_Size)\n                LDR     R3, = Stack_Mem\n                BX      LR\n                ENDP\n\n                ALIGN\n\n                ENDIF\n\n\n                END\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/ARMCM7_SP/system_ARMCM7.c",
    "content": "/**************************************************************************//**\n * @file     system_ARMCM7.c\n * @brief    CMSIS Device System Source File for\n *           ARMCM7 Device Series\n * @version  V5.00\n * @date     08. April 2016\n ******************************************************************************/\n/*\n * Copyright (c) 2009-2016 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#if defined (ARMCM7)\n  #include \"ARMCM7.h\"\n#elif defined (ARMCM7_SP)\n  #include \"ARMCM7_SP.h\"\n#elif defined (ARMCM7_DP)\n  #include \"ARMCM7_DP.h\"\n#else\n  #error device not specified!\n#endif\n\n/*----------------------------------------------------------------------------\n  Define clocks\n *----------------------------------------------------------------------------*/\n#define  XTAL            ( 5000000U)      /* Oscillator frequency */\n\n#define  SYSTEM_CLOCK    (5 * XTAL)\n\n\n/*----------------------------------------------------------------------------\n  Externals\n *----------------------------------------------------------------------------*/\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  extern uint32_t __Vectors;\n#endif\n\n/*----------------------------------------------------------------------------\n  System Core Clock Variable\n *----------------------------------------------------------------------------*/\nuint32_t SystemCoreClock = SYSTEM_CLOCK;\n\n\n/*----------------------------------------------------------------------------\n  System Core Clock update function\n *----------------------------------------------------------------------------*/\nvoid SystemCoreClockUpdate (void)\n{\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n\n/*----------------------------------------------------------------------------\n  System initialization function\n *----------------------------------------------------------------------------*/\nvoid SystemInit (void)\n{\n\n#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1)\n  SCB->VTOR = (uint32_t) &__Vectors;\n#endif\n\n#if defined (__FPU_USED) && (__FPU_USED == 1)\n  SCB->CPACR |= ((3U << 10*2) |           /* set CP10 Full Access */\n                 (3U << 11*2)  );         /* set CP11 Full Access */\n#endif\n\n#ifdef UNALIGNED_SUPPORT_DISABLE\n  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;\n#endif\n\n  SystemCoreClock = SYSTEM_CLOCK;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/STM32F411RETx/startup_stm32f411xe.s",
    "content": ";******************** (C) COPYRIGHT 2016 STMicroelectronics ********************\n;* File Name          : startup_stm32f411xe.s\n;* Author             : MCD Application Team\n;* Version            : V2.6.0\n;* Date               : 04-November-2016\n;* Description        : STM32F411xExx devices vector table for MDK-ARM toolchain. \n;*                      This module performs:\n;*                      - Set the initial SP\n;*                      - Set the initial PC == Reset_Handler\n;*                      - Set the vector table entries with the exceptions ISR address\n;*                      - Branches to __main in the C library (which eventually\n;*                        calls main()).\n;*                      After Reset the CortexM4 processor is in Thread mode,\n;*                      priority is Privileged, and the Stack is set to Main.\n;* <<< Use Configuration Wizard in Context Menu >>>   \n;*******************************************************************************\n; \n;* Redistribution and use in source and binary forms, with or without modification,\n;* are permitted provided that the following conditions are met:\n;*   1. Redistributions of source code must retain the above copyright notice,\n;*      this list of conditions and the following disclaimer.\n;*   2. Redistributions in binary form must reproduce the above copyright notice,\n;*      this list of conditions and the following disclaimer in the documentation\n;*      and/or other materials provided with the distribution.\n;*   3. Neither the name of STMicroelectronics nor the names of its contributors\n;*      may be used to endorse or promote products derived from this software\n;*      without specific prior written permission.\n;*\n;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n; \n;*******************************************************************************\n\n; Amount of memory (in bytes) allocated for Stack\n; Tailor this value to your application needs\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size      EQU     0x00000400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size       EQU     0x00000200\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp               ; Top of Stack\n                DCD     Reset_Handler              ; Reset Handler\n                DCD     NMI_Handler                ; NMI Handler\n                DCD     HardFault_Handler          ; Hard Fault Handler\n                DCD     MemManage_Handler          ; MPU Fault Handler\n                DCD     BusFault_Handler           ; Bus Fault Handler\n                DCD     UsageFault_Handler         ; Usage Fault Handler\n                DCD     0                          ; Reserved\n                DCD     0                          ; Reserved\n                DCD     0                          ; Reserved\n                DCD     0                          ; Reserved\n                DCD     SVC_Handler                ; SVCall Handler\n                DCD     DebugMon_Handler           ; Debug Monitor Handler\n                DCD     0                          ; Reserved\n                DCD     PendSV_Handler             ; PendSV Handler\n                DCD     SysTick_Handler            ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WWDG_IRQHandler                   ; Window WatchDog                                        \n                DCD     PVD_IRQHandler                    ; PVD through EXTI Line detection                        \n                DCD     TAMP_STAMP_IRQHandler             ; Tamper and TimeStamps through the EXTI line            \n                DCD     RTC_WKUP_IRQHandler               ; RTC Wakeup through the EXTI line                       \n                DCD     FLASH_IRQHandler                  ; FLASH                                           \n                DCD     RCC_IRQHandler                    ; RCC                                             \n                DCD     EXTI0_IRQHandler                  ; EXTI Line0                                             \n                DCD     EXTI1_IRQHandler                  ; EXTI Line1                                             \n                DCD     EXTI2_IRQHandler                  ; EXTI Line2                                             \n                DCD     EXTI3_IRQHandler                  ; EXTI Line3                                             \n                DCD     EXTI4_IRQHandler                  ; EXTI Line4                                             \n                DCD     DMA1_Stream0_IRQHandler           ; DMA1 Stream 0                                   \n                DCD     DMA1_Stream1_IRQHandler           ; DMA1 Stream 1                                   \n                DCD     DMA1_Stream2_IRQHandler           ; DMA1 Stream 2                                   \n                DCD     DMA1_Stream3_IRQHandler           ; DMA1 Stream 3                                   \n                DCD     DMA1_Stream4_IRQHandler           ; DMA1 Stream 4                                   \n                DCD     DMA1_Stream5_IRQHandler           ; DMA1 Stream 5                                   \n                DCD     DMA1_Stream6_IRQHandler           ; DMA1 Stream 6                                   \n                DCD     ADC_IRQHandler                    ; ADC1, ADC2 and ADC3s                            \n                DCD     0                                 ; Reserved                                                \n                DCD     0                                 ; Reserved                                               \n                DCD     0                                 ; Reserved                                             \n                DCD     0                                 ; Reserved                                               \n                DCD     EXTI9_5_IRQHandler                ; External Line[9:5]s                                    \n                DCD     TIM1_BRK_TIM9_IRQHandler          ; TIM1 Break and TIM9                   \n                DCD     TIM1_UP_TIM10_IRQHandler          ; TIM1 Update and TIM10                 \n                DCD     TIM1_TRG_COM_TIM11_IRQHandler     ; TIM1 Trigger and Commutation and TIM11\n                DCD     TIM1_CC_IRQHandler                ; TIM1 Capture Compare                                   \n                DCD     TIM2_IRQHandler                   ; TIM2                                            \n                DCD     TIM3_IRQHandler                   ; TIM3                                            \n                DCD     TIM4_IRQHandler                   ; TIM4                                            \n                DCD     I2C1_EV_IRQHandler                ; I2C1 Event                                             \n                DCD     I2C1_ER_IRQHandler                ; I2C1 Error                                             \n                DCD     I2C2_EV_IRQHandler                ; I2C2 Event                                             \n                DCD     I2C2_ER_IRQHandler                ; I2C2 Error                                               \n                DCD     SPI1_IRQHandler                   ; SPI1                                            \n                DCD     SPI2_IRQHandler                   ; SPI2                                            \n                DCD     USART1_IRQHandler                 ; USART1                                          \n                DCD     USART2_IRQHandler                 ; USART2                                          \n                DCD     0                                 ; Reserved                                          \n                DCD     EXTI15_10_IRQHandler              ; External Line[15:10]s                                  \n                DCD     RTC_Alarm_IRQHandler              ; RTC Alarm (A and B) through EXTI Line                  \n                DCD     OTG_FS_WKUP_IRQHandler            ; USB OTG FS Wakeup through EXTI line                        \n                DCD     0                                 ; Reserved                  \n                DCD     0                                 ; Reserved                 \n                DCD     0                                 ; Reserved\n                DCD     0                                 ; Reserved                                   \n                DCD     DMA1_Stream7_IRQHandler           ; DMA1 Stream7                                           \n                DCD     0                                 ; Reserved                                             \n                DCD     SDIO_IRQHandler                   ; SDIO                                            \n                DCD     TIM5_IRQHandler                   ; TIM5                                            \n                DCD     SPI3_IRQHandler                   ; SPI3                                            \n                DCD     0                                 ; Reserved                                           \n                DCD     0                                 ; Reserved                                           \n                DCD     0                                 ; Reserved                   \n                DCD     0                                 ; Reserved                   \n                DCD     DMA2_Stream0_IRQHandler           ; DMA2 Stream 0                                   \n                DCD     DMA2_Stream1_IRQHandler           ; DMA2 Stream 1                                   \n                DCD     DMA2_Stream2_IRQHandler           ; DMA2 Stream 2                                   \n                DCD     DMA2_Stream3_IRQHandler           ; DMA2 Stream 3                                   \n                DCD     DMA2_Stream4_IRQHandler           ; DMA2 Stream 4\n                DCD     0                                 ; Reserved  \n                DCD     0                                 ; Reserved  \n                DCD     0                                 ; Reserved                                              \n                DCD     0                                 ; Reserved                                               \n                DCD     0                                 ; Reserved                                               \n                DCD     0                                 ; Reserved                                               \n                DCD     OTG_FS_IRQHandler                 ; USB OTG FS                                      \n                DCD     DMA2_Stream5_IRQHandler           ; DMA2 Stream 5                                   \n                DCD     DMA2_Stream6_IRQHandler           ; DMA2 Stream 6                                   \n                DCD     DMA2_Stream7_IRQHandler           ; DMA2 Stream 7                                   \n                DCD     USART6_IRQHandler                 ; USART6                                           \n                DCD     I2C3_EV_IRQHandler                ; I2C3 event                                             \n                DCD     I2C3_ER_IRQHandler                ; I2C3 error                                             \n                DCD     0                                 ; Reserved                     \n                DCD     0                                 ; Reserved                       \n                DCD     0                                 ; Reserved                         \n                DCD     0                                 ; Reserved                                    \n                DCD     0                                 ; Reserved  \n                DCD     0                                 ; Reserved\t\t\t\t                              \n                DCD     0                                 ; Reserved\n                DCD     FPU_IRQHandler                    ; FPU\n                DCD     0                                 ; Reserved\n\t\t        DCD     0                                 ; Reserved\n\t\t        DCD     SPI4_IRQHandler                   ; SPI4\n\t\t\t\tDCD     SPI5_IRQHandler                   ; SPI5\n                                         \n__Vectors_End\n\n__Vectors_Size  EQU  __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n; Reset handler\nReset_Handler    PROC\n                 EXPORT  Reset_Handler             [WEAK]\n        IMPORT  SystemInit\n        IMPORT  __main\n\n                 LDR     R0, =SystemInit\n                 BLX     R0\n                 LDR     R0, =__main\n                 BX      R0\n                 ENDP\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler                [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler          [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler          [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler           [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler         [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler                [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler           [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler             [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler            [WEAK]\n                B       .\n                ENDP\n\nDefault_Handler PROC\n\n                EXPORT  WWDG_IRQHandler                   [WEAK]                                        \n                EXPORT  PVD_IRQHandler                    [WEAK]                      \n                EXPORT  TAMP_STAMP_IRQHandler             [WEAK]         \n                EXPORT  RTC_WKUP_IRQHandler               [WEAK]                     \n                EXPORT  FLASH_IRQHandler                  [WEAK]                                         \n                EXPORT  RCC_IRQHandler                    [WEAK]                                            \n                EXPORT  EXTI0_IRQHandler                  [WEAK]                                            \n                EXPORT  EXTI1_IRQHandler                  [WEAK]                                             \n                EXPORT  EXTI2_IRQHandler                  [WEAK]                                            \n                EXPORT  EXTI3_IRQHandler                  [WEAK]                                           \n                EXPORT  EXTI4_IRQHandler                  [WEAK]                                            \n                EXPORT  DMA1_Stream0_IRQHandler           [WEAK]                                \n                EXPORT  DMA1_Stream1_IRQHandler           [WEAK]                                   \n                EXPORT  DMA1_Stream2_IRQHandler           [WEAK]                                   \n                EXPORT  DMA1_Stream3_IRQHandler           [WEAK]                                   \n                EXPORT  DMA1_Stream4_IRQHandler           [WEAK]                                   \n                EXPORT  DMA1_Stream5_IRQHandler           [WEAK]                                   \n                EXPORT  DMA1_Stream6_IRQHandler           [WEAK]                                   \n                EXPORT  ADC_IRQHandler                    [WEAK]                                                                        \n                EXPORT  EXTI9_5_IRQHandler                [WEAK]                                    \n                EXPORT  TIM1_BRK_TIM9_IRQHandler          [WEAK]                  \n                EXPORT  TIM1_UP_TIM10_IRQHandler          [WEAK]                \n                EXPORT  TIM1_TRG_COM_TIM11_IRQHandler     [WEAK] \n                EXPORT  TIM1_CC_IRQHandler                [WEAK]                                   \n                EXPORT  TIM2_IRQHandler                   [WEAK]                                            \n                EXPORT  TIM3_IRQHandler                   [WEAK]                                            \n                EXPORT  TIM4_IRQHandler                   [WEAK]                                            \n                EXPORT  I2C1_EV_IRQHandler                [WEAK]                                             \n                EXPORT  I2C1_ER_IRQHandler                [WEAK]                                             \n                EXPORT  I2C2_EV_IRQHandler                [WEAK]                                            \n                EXPORT  I2C2_ER_IRQHandler                [WEAK]                                               \n                EXPORT  SPI1_IRQHandler                   [WEAK]                                           \n                EXPORT  SPI2_IRQHandler                   [WEAK]                                            \n                EXPORT  USART1_IRQHandler                 [WEAK]                                          \n                EXPORT  USART2_IRQHandler                 [WEAK]                                                                                  \n                EXPORT  EXTI15_10_IRQHandler              [WEAK]                                  \n                EXPORT  RTC_Alarm_IRQHandler              [WEAK]                  \n                EXPORT  OTG_FS_WKUP_IRQHandler            [WEAK]                        \n                EXPORT  DMA1_Stream7_IRQHandler           [WEAK]                                                                                     \n                EXPORT  SDIO_IRQHandler                   [WEAK]                                             \n                EXPORT  TIM5_IRQHandler                   [WEAK]                                             \n                EXPORT  SPI3_IRQHandler                   [WEAK]                                                               \n                EXPORT  DMA2_Stream0_IRQHandler           [WEAK]                                  \n                EXPORT  DMA2_Stream1_IRQHandler           [WEAK]                                   \n                EXPORT  DMA2_Stream2_IRQHandler           [WEAK]                                    \n                EXPORT  DMA2_Stream3_IRQHandler           [WEAK]                                    \n                EXPORT  DMA2_Stream4_IRQHandler           [WEAK]                                                                                                     \n                EXPORT  OTG_FS_IRQHandler                 [WEAK]                                       \n                EXPORT  DMA2_Stream5_IRQHandler           [WEAK]                                   \n                EXPORT  DMA2_Stream6_IRQHandler           [WEAK]                                   \n                EXPORT  DMA2_Stream7_IRQHandler           [WEAK]                                   \n                EXPORT  USART6_IRQHandler                 [WEAK]                                           \n                EXPORT  I2C3_EV_IRQHandler                [WEAK]                                              \n                EXPORT  I2C3_ER_IRQHandler                [WEAK]                                              \n                EXPORT  FPU_IRQHandler                    [WEAK]\n\t\t\t\tEXPORT  SPI4_IRQHandler                   [WEAK]\n                EXPORT  SPI5_IRQHandler                   [WEAK]\n\nWWDG_IRQHandler                                                       \nPVD_IRQHandler                                      \nTAMP_STAMP_IRQHandler                  \nRTC_WKUP_IRQHandler                                \nFLASH_IRQHandler                                                       \nRCC_IRQHandler                                                            \nEXTI0_IRQHandler                                                          \nEXTI1_IRQHandler                                                           \nEXTI2_IRQHandler                                                          \nEXTI3_IRQHandler                                                         \nEXTI4_IRQHandler                                                          \nDMA1_Stream0_IRQHandler                                       \nDMA1_Stream1_IRQHandler                                          \nDMA1_Stream2_IRQHandler                                          \nDMA1_Stream3_IRQHandler                                          \nDMA1_Stream4_IRQHandler                                          \nDMA1_Stream5_IRQHandler                                          \nDMA1_Stream6_IRQHandler                                          \nADC_IRQHandler                                                                                                    \nEXTI9_5_IRQHandler                                                \nTIM1_BRK_TIM9_IRQHandler                        \nTIM1_UP_TIM10_IRQHandler                      \nTIM1_TRG_COM_TIM11_IRQHandler  \nTIM1_CC_IRQHandler                                               \nTIM2_IRQHandler                                                           \nTIM3_IRQHandler                                                           \nTIM4_IRQHandler                                                           \nI2C1_EV_IRQHandler                                                         \nI2C1_ER_IRQHandler                                                         \nI2C2_EV_IRQHandler                                                        \nI2C2_ER_IRQHandler                                                           \nSPI1_IRQHandler                                                          \nSPI2_IRQHandler                                                           \nUSART1_IRQHandler                                                       \nUSART2_IRQHandler                                                                                                           \nEXTI15_10_IRQHandler                                            \nRTC_Alarm_IRQHandler                            \nOTG_FS_WKUP_IRQHandler                                                                           \nDMA1_Stream7_IRQHandler                                                                                                             \nSDIO_IRQHandler                                                            \nTIM5_IRQHandler                                                            \nSPI3_IRQHandler                                                                                     \nDMA2_Stream0_IRQHandler                                         \nDMA2_Stream1_IRQHandler                                          \nDMA2_Stream2_IRQHandler                                           \nDMA2_Stream3_IRQHandler                                           \nDMA2_Stream4_IRQHandler                                                                                                                                  \nOTG_FS_IRQHandler                                                    \nDMA2_Stream5_IRQHandler                                          \nDMA2_Stream6_IRQHandler                                          \nDMA2_Stream7_IRQHandler                                          \nUSART6_IRQHandler                                                        \nI2C3_EV_IRQHandler                                                          \nI2C3_ER_IRQHandler                                                          \nFPU_IRQHandler\nSPI4_IRQHandler\nSPI5_IRQHandler\n\n                B       .\n\n                ENDP\n\n                ALIGN\n\n;*******************************************************************************\n; User Stack and Heap initialization\n;*******************************************************************************\n                 IF      :DEF:__MICROLIB\n                \n                 EXPORT  __initial_sp\n                 EXPORT  __heap_base\n                 EXPORT  __heap_limit\n                \n                 ELSE\n                \n                 IMPORT  __use_two_region_memory\n                 EXPORT  __user_initial_stackheap\n                 \n__user_initial_stackheap\n\n                 LDR     R0, =  Heap_Mem\n                 LDR     R1, =(Stack_Mem + Stack_Size)\n                 LDR     R2, = (Heap_Mem +  Heap_Size)\n                 LDR     R3, = Stack_Mem\n                 BX      LR\n\n                 ALIGN\n\n                 ENDIF\n\n                 END\n\n;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/Device/STM32F411RETx/system_stm32f4xx.c",
    "content": "/**\n  ******************************************************************************\n  * @file    system_stm32f4xx.c\n  * @author  MCD Application Team\n  * @version V2.6.0\n  * @date    04-November-2016\n  * @brief   CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.\n  *\n  *   This file provides two functions and one global variable to be called from \n  *   user application:\n  *      - SystemInit(): This function is called at startup just after reset and \n  *                      before branch to main program. This call is made inside\n  *                      the \"startup_stm32f4xx.s\" file.\n  *\n  *      - SystemCoreClock variable: Contains the core clock (HCLK), it can be used\n  *                                  by the user application to setup the SysTick \n  *                                  timer or configure other parameters.\n  *                                     \n  *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must\n  *                                 be called whenever the core clock is changed\n  *                                 during program execution.\n  *\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * <h2><center>&copy; COPYRIGHT 2016 STMicroelectronics</center></h2>\n  *\n  * Redistribution and use in source and binary forms, with or without modification,\n  * are permitted provided that the following conditions are met:\n  *   1. Redistributions of source code must retain the above copyright notice,\n  *      this list of conditions and the following disclaimer.\n  *   2. Redistributions in binary form must reproduce the above copyright notice,\n  *      this list of conditions and the following disclaimer in the documentation\n  *      and/or other materials provided with the distribution.\n  *   3. Neither the name of STMicroelectronics nor the names of its contributors\n  *      may be used to endorse or promote products derived from this software\n  *      without specific prior written permission.\n  *\n  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n  *\n  ******************************************************************************\n  */\n\n/** @addtogroup CMSIS\n  * @{\n  */\n\n/** @addtogroup stm32f4xx_system\n  * @{\n  */  \n  \n/** @addtogroup STM32F4xx_System_Private_Includes\n  * @{\n  */\n\n\n#include \"stm32f4xx.h\"\n\n#if !defined  (HSE_VALUE) \n  #define HSE_VALUE    ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */\n#endif /* HSE_VALUE */\n\n#if !defined  (HSI_VALUE)\n  #define HSI_VALUE    ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/\n#endif /* HSI_VALUE */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32F4xx_System_Private_TypesDefinitions\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32F4xx_System_Private_Defines\n  * @{\n  */\n\n/************************* Miscellaneous Configuration ************************/\n/*!< Uncomment the following line if you need to use external SRAM or SDRAM as data memory  */\n#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\\\n || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\\\n || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)\n/* #define DATA_IN_ExtSRAM */\n#endif /* STM32F40xxx || STM32F41xxx || STM32F42xxx || STM32F43xxx || STM32F469xx || STM32F479xx ||\\\n          STM32F412Zx || STM32F412Vx */\n \n#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\\\n || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)\n/* #define DATA_IN_ExtSDRAM */\n#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\\\n          STM32F479xx */\n\n/*!< Uncomment the following line if you need to relocate your vector Table in\n     Internal SRAM. */\n/* #define VECT_TAB_SRAM */\n#define VECT_TAB_OFFSET  0x00 /*!< Vector Table base offset field. \n                                   This value must be a multiple of 0x200. */\n/******************************************************************************/\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32F4xx_System_Private_Macros\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32F4xx_System_Private_Variables\n  * @{\n  */\n  /* This variable is updated in three ways:\n      1) by calling CMSIS function SystemCoreClockUpdate()\n      2) by calling HAL API function HAL_RCC_GetHCLKFreq()\n      3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency \n         Note: If you use this function to configure the system clock; then there\n               is no need to call the 2 first functions listed above, since SystemCoreClock\n               variable is updated automatically.\n  */\nuint32_t SystemCoreClock = 16000000;\nconst uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};\nconst uint8_t APBPrescTable[8]  = {0, 0, 0, 0, 1, 2, 3, 4};\n/**\n  * @}\n  */\n\n/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes\n  * @{\n  */\n\n#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)\n  static void SystemInit_ExtMemCtl(void); \n#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */\n\n/**\n  * @}\n  */\n\n/** @addtogroup STM32F4xx_System_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Setup the microcontroller system\n  *         Initialize the FPU setting, vector table location and External memory \n  *         configuration.\n  * @param  None\n  * @retval None\n  */\nvoid SystemInit(void)\n{\n  /* FPU settings ------------------------------------------------------------*/\n  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */\n  #endif\n  /* Reset the RCC clock configuration to the default reset state ------------*/\n  /* Set HSION bit */\n  RCC->CR |= (uint32_t)0x00000001;\n\n  /* Reset CFGR register */\n  RCC->CFGR = 0x00000000;\n\n  /* Reset HSEON, CSSON and PLLON bits */\n  RCC->CR &= (uint32_t)0xFEF6FFFF;\n\n  /* Reset PLLCFGR register */\n  RCC->PLLCFGR = 0x24003010;\n\n  /* Reset HSEBYP bit */\n  RCC->CR &= (uint32_t)0xFFFBFFFF;\n\n  /* Disable all interrupts */\n  RCC->CIR = 0x00000000;\n\n#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)\n  SystemInit_ExtMemCtl(); \n#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */\n\n  /* Configure the Vector Table location add offset address ------------------*/\n#ifdef VECT_TAB_SRAM\n  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */\n#else\n  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */\n#endif\n}\n\n/**\n   * @brief  Update SystemCoreClock variable according to Clock Register Values.\n  *         The SystemCoreClock variable contains the core clock (HCLK), it can\n  *         be used by the user application to setup the SysTick timer or configure\n  *         other parameters.\n  *           \n  * @note   Each time the core clock (HCLK) changes, this function must be called\n  *         to update SystemCoreClock variable value. Otherwise, any configuration\n  *         based on this variable will be incorrect.         \n  *     \n  * @note   - The system frequency computed by this function is not the real \n  *           frequency in the chip. It is calculated based on the predefined \n  *           constant and the selected clock source:\n  *             \n  *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)\n  *                                              \n  *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)\n  *                          \n  *           - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) \n  *             or HSI_VALUE(*) multiplied/divided by the PLL factors.\n  *         \n  *         (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value\n  *             16 MHz) but the real value may vary depending on the variations\n  *             in voltage and temperature.   \n  *    \n  *         (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value\n  *              depends on the application requirements), user has to ensure that HSE_VALUE\n  *              is same as the real frequency of the crystal used. Otherwise, this function\n  *              may have wrong result.\n  *                \n  *         - The result of this function could be not correct when using fractional\n  *           value for HSE crystal.\n  *     \n  * @param  None\n  * @retval None\n  */\nvoid SystemCoreClockUpdate(void)\n{\n  uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;\n  \n  /* Get SYSCLK source -------------------------------------------------------*/\n  tmp = RCC->CFGR & RCC_CFGR_SWS;\n\n  switch (tmp)\n  {\n    case 0x00:  /* HSI used as system clock source */\n      SystemCoreClock = HSI_VALUE;\n      break;\n    case 0x04:  /* HSE used as system clock source */\n      SystemCoreClock = HSE_VALUE;\n      break;\n    case 0x08:  /* PLL used as system clock source */\n\n      /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N\n         SYSCLK = PLL_VCO / PLL_P\n         */    \n      pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;\n      pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;\n      \n      if (pllsource != 0)\n      {\n        /* HSE used as PLL clock source */\n        pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);\n      }\n      else\n      {\n        /* HSI used as PLL clock source */\n        pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);\n      }\n\n      pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;\n      SystemCoreClock = pllvco/pllp;\n      break;\n    default:\n      SystemCoreClock = HSI_VALUE;\n      break;\n  }\n  /* Compute HCLK frequency --------------------------------------------------*/\n  /* Get HCLK prescaler */\n  tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];\n  /* HCLK frequency */\n  SystemCoreClock >>= tmp;\n}\n\n#if defined (DATA_IN_ExtSRAM) && defined (DATA_IN_ExtSDRAM)\n#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\\\n || defined(STM32F469xx) || defined(STM32F479xx)\n/**\n  * @brief  Setup the external memory controller.\n  *         Called in startup_stm32f4xx.s before jump to main.\n  *         This function configures the external memories (SRAM/SDRAM)\n  *         This SRAM/SDRAM will be used as program data memory (including heap and stack).\n  * @param  None\n  * @retval None\n  */\nvoid SystemInit_ExtMemCtl(void)\n{\n  __IO uint32_t tmp = 0x00;\n\n  register uint32_t tmpreg = 0, timeout = 0xFFFF;\n  register __IO uint32_t index;\n\n  /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface clock */\n  RCC->AHB1ENR |= 0x000001F8;\n\n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\n  \n  /* Connect PDx pins to FMC Alternate function */\n  GPIOD->AFR[0]  = 0x00CCC0CC;\n  GPIOD->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PDx pins in Alternate function mode */  \n  GPIOD->MODER   = 0xAAAA0A8A;\n  /* Configure PDx pins speed to 100 MHz */  \n  GPIOD->OSPEEDR = 0xFFFF0FCF;\n  /* Configure PDx pins Output type to push-pull */  \n  GPIOD->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PDx pins */ \n  GPIOD->PUPDR   = 0x00000000;\n\n  /* Connect PEx pins to FMC Alternate function */\n  GPIOE->AFR[0]  = 0xC00CC0CC;\n  GPIOE->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PEx pins in Alternate function mode */ \n  GPIOE->MODER   = 0xAAAA828A;\n  /* Configure PEx pins speed to 100 MHz */ \n  GPIOE->OSPEEDR = 0xFFFFC3CF;\n  /* Configure PEx pins Output type to push-pull */  \n  GPIOE->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PEx pins */ \n  GPIOE->PUPDR   = 0x00000000;\n  \n  /* Connect PFx pins to FMC Alternate function */\n  GPIOF->AFR[0]  = 0xCCCCCCCC;\n  GPIOF->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PFx pins in Alternate function mode */   \n  GPIOF->MODER   = 0xAA800AAA;\n  /* Configure PFx pins speed to 50 MHz */ \n  GPIOF->OSPEEDR = 0xAA800AAA;\n  /* Configure PFx pins Output type to push-pull */  \n  GPIOF->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PFx pins */ \n  GPIOF->PUPDR   = 0x00000000;\n\n  /* Connect PGx pins to FMC Alternate function */\n  GPIOG->AFR[0]  = 0xCCCCCCCC;\n  GPIOG->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PGx pins in Alternate function mode */ \n  GPIOG->MODER   = 0xAAAAAAAA;\n  /* Configure PGx pins speed to 50 MHz */ \n  GPIOG->OSPEEDR = 0xAAAAAAAA;\n  /* Configure PGx pins Output type to push-pull */  \n  GPIOG->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PGx pins */ \n  GPIOG->PUPDR   = 0x00000000;\n  \n  /* Connect PHx pins to FMC Alternate function */\n  GPIOH->AFR[0]  = 0x00C0CC00;\n  GPIOH->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PHx pins in Alternate function mode */ \n  GPIOH->MODER   = 0xAAAA08A0;\n  /* Configure PHx pins speed to 50 MHz */ \n  GPIOH->OSPEEDR = 0xAAAA08A0;\n  /* Configure PHx pins Output type to push-pull */  \n  GPIOH->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PHx pins */ \n  GPIOH->PUPDR   = 0x00000000;\n  \n  /* Connect PIx pins to FMC Alternate function */\n  GPIOI->AFR[0]  = 0xCCCCCCCC;\n  GPIOI->AFR[1]  = 0x00000CC0;\n  /* Configure PIx pins in Alternate function mode */ \n  GPIOI->MODER   = 0x0028AAAA;\n  /* Configure PIx pins speed to 50 MHz */ \n  GPIOI->OSPEEDR = 0x0028AAAA;\n  /* Configure PIx pins Output type to push-pull */  \n  GPIOI->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PIx pins */ \n  GPIOI->PUPDR   = 0x00000000;\n  \n/*-- FMC Configuration -------------------------------------------------------*/\n  /* Enable the FMC interface clock */\n  RCC->AHB3ENR |= 0x00000001;\n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\n\n  FMC_Bank5_6->SDCR[0] = 0x000019E4;\n  FMC_Bank5_6->SDTR[0] = 0x01115351;      \n  \n  /* SDRAM initialization sequence */\n  /* Clock enable command */\n  FMC_Bank5_6->SDCMR = 0x00000011; \n  tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  }\n\n  /* Delay */\n  for (index = 0; index<1000; index++);\n  \n  /* PALL command */\n  FMC_Bank5_6->SDCMR = 0x00000012;           \n  timeout = 0xFFFF;\n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  }\n  \n  /* Auto refresh command */\n  FMC_Bank5_6->SDCMR = 0x00000073;\n  timeout = 0xFFFF;\n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  }\n \n  /* MRD register program */\n  FMC_Bank5_6->SDCMR = 0x00046014;\n  timeout = 0xFFFF;\n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  } \n  \n  /* Set refresh count */\n  tmpreg = FMC_Bank5_6->SDRTR;\n  FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));\n  \n  /* Disable write protection */\n  tmpreg = FMC_Bank5_6->SDCR[0]; \n  FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);\n\n#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\n  /* Configure and enable Bank1_SRAM2 */\n  FMC_Bank1->BTCR[2]  = 0x00001011;\n  FMC_Bank1->BTCR[3]  = 0x00000201;\n  FMC_Bank1E->BWTR[2] = 0x0fffffff;\n#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ \n#if defined(STM32F469xx) || defined(STM32F479xx)\n  /* Configure and enable Bank1_SRAM2 */\n  FMC_Bank1->BTCR[2]  = 0x00001091;\n  FMC_Bank1->BTCR[3]  = 0x00110212;\n  FMC_Bank1E->BWTR[2] = 0x0fffffff;\n#endif /* STM32F469xx || STM32F479xx */\n\n  (void)(tmp); \n}\n#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */\n#elif defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)\n/**\n  * @brief  Setup the external memory controller.\n  *         Called in startup_stm32f4xx.s before jump to main.\n  *         This function configures the external memories (SRAM/SDRAM)\n  *         This SRAM/SDRAM will be used as program data memory (including heap and stack).\n  * @param  None\n  * @retval None\n  */\nvoid SystemInit_ExtMemCtl(void)\n{\n  __IO uint32_t tmp = 0x00;\n#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\\\n || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)\n#if defined (DATA_IN_ExtSDRAM)\n  register uint32_t tmpreg = 0, timeout = 0xFFFF;\n  register __IO uint32_t index;\n\n#if defined(STM32F446xx)\n  /* Enable GPIOA, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG interface\n      clock */\n  RCC->AHB1ENR |= 0x0000007D;\n#else\n  /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface \n      clock */\n  RCC->AHB1ENR |= 0x000001F8;\n#endif /* STM32F446xx */  \n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\n  \n#if defined(STM32F446xx)\n  /* Connect PAx pins to FMC Alternate function */\n  GPIOA->AFR[0]  |= 0xC0000000;\n  GPIOA->AFR[1]  |= 0x00000000;\n  /* Configure PDx pins in Alternate function mode */\n  GPIOA->MODER   |= 0x00008000;\n  /* Configure PDx pins speed to 50 MHz */\n  GPIOA->OSPEEDR |= 0x00008000;\n  /* Configure PDx pins Output type to push-pull */\n  GPIOA->OTYPER  |= 0x00000000;\n  /* No pull-up, pull-down for PDx pins */\n  GPIOA->PUPDR   |= 0x00000000;\n\n  /* Connect PCx pins to FMC Alternate function */\n  GPIOC->AFR[0]  |= 0x00CC0000;\n  GPIOC->AFR[1]  |= 0x00000000;\n  /* Configure PDx pins in Alternate function mode */\n  GPIOC->MODER   |= 0x00000A00;\n  /* Configure PDx pins speed to 50 MHz */\n  GPIOC->OSPEEDR |= 0x00000A00;\n  /* Configure PDx pins Output type to push-pull */\n  GPIOC->OTYPER  |= 0x00000000;\n  /* No pull-up, pull-down for PDx pins */\n  GPIOC->PUPDR   |= 0x00000000;\n#endif /* STM32F446xx */\n\n  /* Connect PDx pins to FMC Alternate function */\n  GPIOD->AFR[0]  = 0x000000CC;\n  GPIOD->AFR[1]  = 0xCC000CCC;\n  /* Configure PDx pins in Alternate function mode */  \n  GPIOD->MODER   = 0xA02A000A;\n  /* Configure PDx pins speed to 50 MHz */  \n  GPIOD->OSPEEDR = 0xA02A000A;\n  /* Configure PDx pins Output type to push-pull */  \n  GPIOD->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PDx pins */ \n  GPIOD->PUPDR   = 0x00000000;\n\n  /* Connect PEx pins to FMC Alternate function */\n  GPIOE->AFR[0]  = 0xC00000CC;\n  GPIOE->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PEx pins in Alternate function mode */ \n  GPIOE->MODER   = 0xAAAA800A;\n  /* Configure PEx pins speed to 50 MHz */ \n  GPIOE->OSPEEDR = 0xAAAA800A;\n  /* Configure PEx pins Output type to push-pull */  \n  GPIOE->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PEx pins */ \n  GPIOE->PUPDR   = 0x00000000;\n\n  /* Connect PFx pins to FMC Alternate function */\n  GPIOF->AFR[0]  = 0xCCCCCCCC;\n  GPIOF->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PFx pins in Alternate function mode */   \n  GPIOF->MODER   = 0xAA800AAA;\n  /* Configure PFx pins speed to 50 MHz */ \n  GPIOF->OSPEEDR = 0xAA800AAA;\n  /* Configure PFx pins Output type to push-pull */  \n  GPIOF->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PFx pins */ \n  GPIOF->PUPDR   = 0x00000000;\n\n  /* Connect PGx pins to FMC Alternate function */\n  GPIOG->AFR[0]  = 0xCCCCCCCC;\n  GPIOG->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PGx pins in Alternate function mode */ \n  GPIOG->MODER   = 0xAAAAAAAA;\n  /* Configure PGx pins speed to 50 MHz */ \n  GPIOG->OSPEEDR = 0xAAAAAAAA;\n  /* Configure PGx pins Output type to push-pull */  \n  GPIOG->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PGx pins */ \n  GPIOG->PUPDR   = 0x00000000;\n\n#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\\\n || defined(STM32F469xx) || defined(STM32F479xx)  \n  /* Connect PHx pins to FMC Alternate function */\n  GPIOH->AFR[0]  = 0x00C0CC00;\n  GPIOH->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PHx pins in Alternate function mode */ \n  GPIOH->MODER   = 0xAAAA08A0;\n  /* Configure PHx pins speed to 50 MHz */ \n  GPIOH->OSPEEDR = 0xAAAA08A0;\n  /* Configure PHx pins Output type to push-pull */  \n  GPIOH->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PHx pins */ \n  GPIOH->PUPDR   = 0x00000000;\n  \n  /* Connect PIx pins to FMC Alternate function */\n  GPIOI->AFR[0]  = 0xCCCCCCCC;\n  GPIOI->AFR[1]  = 0x00000CC0;\n  /* Configure PIx pins in Alternate function mode */ \n  GPIOI->MODER   = 0x0028AAAA;\n  /* Configure PIx pins speed to 50 MHz */ \n  GPIOI->OSPEEDR = 0x0028AAAA;\n  /* Configure PIx pins Output type to push-pull */  \n  GPIOI->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PIx pins */ \n  GPIOI->PUPDR   = 0x00000000;\n#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */\n  \n/*-- FMC Configuration -------------------------------------------------------*/\n  /* Enable the FMC interface clock */\n  RCC->AHB3ENR |= 0x00000001;\n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\n\n  /* Configure and enable SDRAM bank1 */\n#if defined(STM32F446xx)\n  FMC_Bank5_6->SDCR[0] = 0x00001954;\n#else  \n  FMC_Bank5_6->SDCR[0] = 0x000019E4;\n#endif /* STM32F446xx */\n  FMC_Bank5_6->SDTR[0] = 0x01115351;      \n  \n  /* SDRAM initialization sequence */\n  /* Clock enable command */\n  FMC_Bank5_6->SDCMR = 0x00000011; \n  tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  }\n\n  /* Delay */\n  for (index = 0; index<1000; index++);\n  \n  /* PALL command */\n  FMC_Bank5_6->SDCMR = 0x00000012;           \n  timeout = 0xFFFF;\n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  }\n  \n  /* Auto refresh command */\n#if defined(STM32F446xx)\n  FMC_Bank5_6->SDCMR = 0x000000F3;\n#else  \n  FMC_Bank5_6->SDCMR = 0x00000073;\n#endif /* STM32F446xx */\n  timeout = 0xFFFF;\n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  }\n \n  /* MRD register program */\n#if defined(STM32F446xx)\n  FMC_Bank5_6->SDCMR = 0x00044014;\n#else  \n  FMC_Bank5_6->SDCMR = 0x00046014;\n#endif /* STM32F446xx */\n  timeout = 0xFFFF;\n  while((tmpreg != 0) && (timeout-- > 0))\n  {\n    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; \n  } \n  \n  /* Set refresh count */\n  tmpreg = FMC_Bank5_6->SDRTR;\n#if defined(STM32F446xx)\n  FMC_Bank5_6->SDRTR = (tmpreg | (0x0000050C<<1));\n#else    \n  FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));\n#endif /* STM32F446xx */\n  \n  /* Disable write protection */\n  tmpreg = FMC_Bank5_6->SDCR[0]; \n  FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);\n#endif /* DATA_IN_ExtSDRAM */\n#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */\n\n#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\\\n || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\\\n || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)\n\n#if defined(DATA_IN_ExtSRAM)\n/*-- GPIOs Configuration -----------------------------------------------------*/\n   /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */\n  RCC->AHB1ENR   |= 0x00000078;\n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);\n  \n  /* Connect PDx pins to FMC Alternate function */\n  GPIOD->AFR[0]  = 0x00CCC0CC;\n  GPIOD->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PDx pins in Alternate function mode */  \n  GPIOD->MODER   = 0xAAAA0A8A;\n  /* Configure PDx pins speed to 100 MHz */  \n  GPIOD->OSPEEDR = 0xFFFF0FCF;\n  /* Configure PDx pins Output type to push-pull */  \n  GPIOD->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PDx pins */ \n  GPIOD->PUPDR   = 0x00000000;\n\n  /* Connect PEx pins to FMC Alternate function */\n  GPIOE->AFR[0]  = 0xC00CC0CC;\n  GPIOE->AFR[1]  = 0xCCCCCCCC;\n  /* Configure PEx pins in Alternate function mode */ \n  GPIOE->MODER   = 0xAAAA828A;\n  /* Configure PEx pins speed to 100 MHz */ \n  GPIOE->OSPEEDR = 0xFFFFC3CF;\n  /* Configure PEx pins Output type to push-pull */  \n  GPIOE->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PEx pins */ \n  GPIOE->PUPDR   = 0x00000000;\n\n  /* Connect PFx pins to FMC Alternate function */\n  GPIOF->AFR[0]  = 0x00CCCCCC;\n  GPIOF->AFR[1]  = 0xCCCC0000;\n  /* Configure PFx pins in Alternate function mode */   \n  GPIOF->MODER   = 0xAA000AAA;\n  /* Configure PFx pins speed to 100 MHz */ \n  GPIOF->OSPEEDR = 0xFF000FFF;\n  /* Configure PFx pins Output type to push-pull */  \n  GPIOF->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PFx pins */ \n  GPIOF->PUPDR   = 0x00000000;\n\n  /* Connect PGx pins to FMC Alternate function */\n  GPIOG->AFR[0]  = 0x00CCCCCC;\n  GPIOG->AFR[1]  = 0x000000C0;\n  /* Configure PGx pins in Alternate function mode */ \n  GPIOG->MODER   = 0x00085AAA;\n  /* Configure PGx pins speed to 100 MHz */ \n  GPIOG->OSPEEDR = 0x000CAFFF;\n  /* Configure PGx pins Output type to push-pull */  \n  GPIOG->OTYPER  = 0x00000000;\n  /* No pull-up, pull-down for PGx pins */ \n  GPIOG->PUPDR   = 0x00000000;\n  \n/*-- FMC/FSMC Configuration --------------------------------------------------*/\n  /* Enable the FMC/FSMC interface clock */\n  RCC->AHB3ENR         |= 0x00000001;\n\n#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\n  /* Configure and enable Bank1_SRAM2 */\n  FMC_Bank1->BTCR[2]  = 0x00001011;\n  FMC_Bank1->BTCR[3]  = 0x00000201;\n  FMC_Bank1E->BWTR[2] = 0x0fffffff;\n#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ \n#if defined(STM32F469xx) || defined(STM32F479xx)\n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\n  /* Configure and enable Bank1_SRAM2 */\n  FMC_Bank1->BTCR[2]  = 0x00001091;\n  FMC_Bank1->BTCR[3]  = 0x00110212;\n  FMC_Bank1E->BWTR[2] = 0x0fffffff;\n#endif /* STM32F469xx || STM32F479xx */\n#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)\\\n   || defined(STM32F412Zx) || defined(STM32F412Vx)\n  /* Delay after an RCC peripheral clock enabling */\n  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FSMCEN);\n  /* Configure and enable Bank1_SRAM2 */\n  FSMC_Bank1->BTCR[2]  = 0x00001011;\n  FSMC_Bank1->BTCR[3]  = 0x00000201;\n  FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF;\n#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx */\n\n#endif /* DATA_IN_ExtSRAM */\n#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\\\n          STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Vx  */ \n  (void)(tmp); \n}\n#endif /* DATA_IN_ExtSRAM && DATA_IN_ExtSDRAM */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM0/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_cifar10' \n * Target:  'ARMCM0' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM0.h\"\n\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM3/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_nn_test' \n * Target:  'ARMCM3' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM3.h\"\n\n#define RTE_Compiler_IO_STDERR          /* Compiler I/O: STDERR */\n          #define RTE_Compiler_IO_STDERR_ITM      /* Compiler I/O: STDERR ITM */\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n#define RTE_Compiler_IO_TTY             /* Compiler I/O: TTY */\n          #define RTE_Compiler_IO_TTY_ITM         /* Compiler I/O: TTY ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM4_FP/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_nn_test' \n * Target:  'ARMCM4_FP' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM4_FP.h\"\n\n#define RTE_Compiler_IO_STDERR          /* Compiler I/O: STDERR */\n          #define RTE_Compiler_IO_STDERR_ITM      /* Compiler I/O: STDERR ITM */\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n#define RTE_Compiler_IO_TTY             /* Compiler I/O: TTY */\n          #define RTE_Compiler_IO_TTY_ITM         /* Compiler I/O: TTY ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM7_SP/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'arm_nnexamples_nn_test' \n * Target:  'ARMCM7_SP' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"ARMCM7_SP.h\"\n\n#define RTE_Compiler_IO_STDERR          /* Compiler I/O: STDERR */\n          #define RTE_Compiler_IO_STDERR_ITM      /* Compiler I/O: STDERR ITM */\n#define RTE_Compiler_IO_STDOUT          /* Compiler I/O: STDOUT */\n          #define RTE_Compiler_IO_STDOUT_ITM      /* Compiler I/O: STDOUT ITM */\n#define RTE_Compiler_IO_TTY             /* Compiler I/O: TTY */\n          #define RTE_Compiler_IO_TTY_ITM         /* Compiler I/O: TTY ITM */\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_convolve_HWC_q15_ref(const q15_t * Im_in,  // input image\n                              const uint16_t dim_im_in, // input image dimention\n                              const uint16_t ch_im_in,  // number of input image channels\n                              const q15_t * wt, // kernel weights \n                              const uint16_t ch_im_out, // number of filters, i.e., output image channels\n                              const uint16_t dim_kernel,    // filter kernel size\n                              const uint16_t padding,   // padding sizes\n                              const uint16_t stride,    // stride\n                              const q15_t * bias,   // bias\n                              const uint16_t bias_shift, const uint16_t out_shift, q15_t * Im_out,  // output image\n                              const uint16_t dim_im_out,    // output image dimension\n                              q15_t * bufferA,  //buffer space for input\n                              q7_t * bufferB    //buffer space for output\n    )\n{\n    int       i, j, k, l, m, n;\n    int       conv_out;\n    int       in_row, in_col;\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out; j++)\n        {\n            for (k = 0; k < dim_im_out; k++)\n            {\n#ifndef ARM_NN_TRUNCATE\n                conv_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1));\n#else\n                conv_out = bias[i] << bias_shift;\n#endif\n                for (m = 0; m < dim_kernel; m++)\n                {\n                    for (n = 0; n < dim_kernel; n++)\n                    {\n                        in_row = stride * j + m - padding;\n                        in_col = stride * k + n - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out += Im_in[(in_row * dim_im_in + in_col) * ch_im_in + l] *\n                                    wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid\narm_convolve_HWC_q15_nonsquare_ref(const q15_t * Im_in,\n                          const uint16_t dim_im_in_x,\n                          const uint16_t dim_im_in_y,\n                          const uint16_t ch_im_in,\n                          const q15_t * wt,\n                          const uint16_t ch_im_out,\n                          const uint16_t dim_kernel_x,\n                          const uint16_t dim_kernel_y,\n                          const uint16_t padding_x,\n                          const uint16_t padding_y,\n                          const uint16_t stride_x,\n                          const uint16_t stride_y,\n                          const q15_t * bias,\n                          const uint16_t bias_shift,\n                          const uint16_t out_shift,\n                          q15_t * Im_out,\n                          const uint16_t dim_im_out_x,\n                          const uint16_t dim_im_out_y, \n                          q15_t * bufferA, \n                          q7_t * bufferB)\n\n{\t\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out_y; j++)\n        {\n            for (k = 0; k < dim_im_out_x; k++)\n            {\n#ifndef ARM_NN_TRUNCATE\n                conv_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1));\n#else\n                conv_out = bias[i] << bias_shift;\n#endif\n                for (m = 0; m < dim_kernel_y; m++)\n                {\n                    for (n = 0; n < dim_kernel_x; n++)\n                    {\n                        in_row = stride_y * j + m - padding_y;\n                        in_col = stride_x * k + n - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in +\n                                          l] * wt[i * ch_im_in * dim_kernel_x * dim_kernel_y + (m * dim_kernel_x +\n                                                                                            n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16);\n            }\n        }\n    }\n}\t\n\n\t\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_convolve_HWC_q7_ref(const q7_t * Im_in,    // input image\n                             const uint16_t dim_im_in,  // input image dimention\n                             const uint16_t ch_im_in,   // number of input image channels\n                             const q7_t * wt,   // kernel weights \n                             const uint16_t ch_im_out,  // number of filters, i.e., output image channels\n                             const uint16_t dim_kernel, // filter kernel size\n                             const uint16_t padding,    // padding sizes\n                             const uint16_t stride, // stride\n                             const q7_t * bias, // bias\n                             const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out,    // output image\n                             const uint16_t dim_im_out, // output image dimension\n                             q15_t * bufferA,   //buffer space for input\n                             q7_t * bufferB //buffer space for output\n    )\n{\n    int       i, j, k, l, m, n;\n    int       conv_out;\n    int       in_row, in_col;\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out; j++)\n        {\n            for (k = 0; k < dim_im_out; k++)\n            {\n#ifndef ARM_NN_TRUNCATE\n                conv_out = ((q31_t) (bias[i]) << bias_shift) + (0x1 << (out_shift - 1));\n#else\n                conv_out = bias[i] << bias_shift;\n#endif\n                for (m = 0; m < dim_kernel; m++)\n                {\n                    for (n = 0; n < dim_kernel; n++)\n                    {\n                        // if-for implementation\n                        in_row = stride * j + m - padding;\n                        in_col = stride * k + n - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out += Im_in[(in_row * dim_im_in + in_col) * ch_im_in + l] *\n                                    wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_convolve_HWC_q7_ref_nonsquare(const q7_t * Im_in,  // input image\n                                       const uint16_t dim_im_in_x,  // input image dimention x\n                                       const uint16_t dim_im_in_y,  // input image dimention y\n                                       const uint16_t ch_im_in, // number of input image channels\n                                       const q7_t * wt, // kernel weights \n                                       const uint16_t ch_im_out,    // number of filters, i.e., output image channels\n                                       const uint16_t dim_kernel_x, // filter kernel size x\n                                       const uint16_t dim_kernel_y, // filter kernel size y\n                                       const uint16_t padding_x,    // padding sizes x\n                                       const uint16_t padding_y,    // padding sizes y\n                                       const uint16_t stride_x, // stride x\n                                       const uint16_t stride_y, // stride y\n                                       const q7_t * bias,   // bias\n                                       const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out,  // output image\n                                       const uint16_t dim_im_out_x, // output image dimension x\n                                       const uint16_t dim_im_out_y, // output image dimension y\n                                       q15_t * bufferA, //buffer space for input\n                                       q7_t * bufferB   //buffer space for output\n    )\n{\n    int       i, j, k, l, m, n;\n    int       conv_out;\n    int       in_row, in_col;\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out_y; j++)\n        {\n            for (k = 0; k < dim_im_out_x; k++)\n            {\n#ifndef ARM_NN_TRUNCATE\n                conv_out = ((q31_t) (bias[i]) << bias_shift) + (0x1 << (out_shift - 1));\n#else\n                conv_out = bias[i] << bias_shift;\n#endif\n                for (m = 0; m < dim_kernel_y; m++)\n                {\n                    for (n = 0; n < dim_kernel_x; n++)\n                    {\n                        // if-for implementation\n                        in_row = stride_y * j + m - padding_y;\n                        in_col = stride_x * k + n - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] *\n                                    wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + (m * dim_kernel_x + n) * ch_im_in +\n                                       l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_depthwise_separable_conv_HWC_q7_ref(const q7_t * Im_in,    // input image\n                                             const uint16_t dim_im_in,  // input image dimention\n                                             const uint16_t ch_im_in,   // number of input image channels\n                                             const q7_t * wt,   // kernel weights \n                                             const uint16_t ch_im_out,  // number of filters, i.e., output image channels\n                                             const uint16_t dim_kernel, // filter kernel size\n                                             const uint16_t padding,    // padding sizes\n                                             const uint16_t stride, // stride\n                                             const q7_t * bias, // bias\n                                             const uint16_t bias_shift, // amount of left-shift for bias\n                                             const uint16_t out_shift,  // amount of right-shift for output\n                                             q7_t * Im_out, // output image\n                                             const uint16_t dim_im_out, // output image dimension\n                                             q15_t * bufferA,   //buffer space for input\n                                             q7_t * bufferB //buffer space for output\n    )\n{\n    int       i_out_y, i_out_x, i_ch_out;\n    int       i_ker_y, i_ker_x;\n    for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++)\n            {\n                // for each output\n#ifndef ARM_NN_TRUNCATE\n                int       conv_out = (bias[i_ch_out] << bias_shift) + (0x1 << (out_shift - 1));\n#else\n                int       conv_out = bias[i_ch_out] << bias_shift;\n#endif\n                for (i_ker_y = 0; i_ker_y < dim_kernel; i_ker_y++)\n                {\n                    for (i_ker_x = 0; i_ker_x < dim_kernel; i_ker_x++)\n                    {\n                        int       in_row = stride * i_out_y + i_ker_y - padding;\n                        int       in_col = stride * i_out_x + i_ker_x - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            conv_out += Im_in[(in_row * dim_im_in + in_col) * ch_im_in + i_ch_out] *\n                                wt[(i_ker_y * dim_kernel + i_ker_x) * ch_im_out + i_ch_out];\n                        }\n                    }\n                }\n                Im_out[(i_out_y * dim_im_out + i_out_x) * ch_im_out + i_ch_out] =\n                    (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_depthwise_separable_conv_HWC_q7_ref_nonsquare(const q7_t * Im_in,  // input image\n                                                       const uint16_t dim_im_in_x,  // input image dimention x\n                                                       const uint16_t dim_im_in_y,  // input image dimention y\n                                                       const uint16_t ch_im_in, // number of input image channels\n                                                       const q7_t * wt, // kernel weights \n                                                       const uint16_t ch_im_out,    // number of filters, i.e., output image channels\n                                                       const uint16_t dim_kernel_x, // filter kernel size x\n                                                       const uint16_t dim_kernel_y, // filter kernel size y\n                                                       const uint16_t padding_x,    // padding sizes x\n                                                       const uint16_t padding_y,    // padding sizes y\n                                                       const uint16_t stride_x, // stride x\n                                                       const uint16_t stride_y, // stride y\n                                                       const q7_t * bias,   // bias\n                                                       const uint16_t bias_shift,   // amount of left-shift for bias\n                                                       const uint16_t out_shift,    // amount of right-shift for output\n                                                       q7_t * Im_out,   // output image\n                                                       const uint16_t dim_im_out_x, // output image dimension x\n                                                       const uint16_t dim_im_out_y, // output image dimension y\n                                                       q15_t * bufferA, //buffer space for input\n                                                       q7_t * bufferB   //buffer space for output\n    )\n{\n    int       i_out_y, i_out_x, i_ch_out;\n    int       i_ker_y, i_ker_x;\n    for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++)\n            {\n                // for each output\n#ifndef ARM_NN_TRUNCATE\n                int       conv_out = (bias[i_ch_out] << bias_shift) + (0x1 << (out_shift - 1));\n#else\n                int       conv_out = bias[i_ch_out] << bias_shift;\n#endif\n                for (i_ker_y = 0; i_ker_y < dim_kernel_y; i_ker_y++)\n                {\n                    for (i_ker_x = 0; i_ker_x < dim_kernel_x; i_ker_x++)\n                    {\n                        int       in_row = stride_y * i_out_y + i_ker_y - padding_y;\n                        int       in_col = stride_x * i_out_x + i_ker_x - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + i_ch_out] *\n                                wt[(i_ker_y * dim_kernel_x + i_ker_x) * ch_im_out + i_ch_out];\n                        }\n                    }\n                }\n                Im_out[(i_out_y * dim_im_out_x + i_out_x) * ch_im_out + i_ch_out] =\n                    (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_opt_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_fully_connected_mat_q7_vec_q15_opt_ref(const q15_t * pV,   // pointer to vector\n                                                const q7_t * pM,    // pointer to matrix\n                                                const uint16_t dim_vec, // length of the vector\n                                                const uint16_t num_of_rows, // numCol of A\n                                                const uint16_t bias_shift,  // amount of left-shift for bias\n                                                const uint16_t out_shift,   // amount of right-shift for output\n                                                const q7_t * bias, q15_t * pOut,    // output operand\n                                                q15_t * vec_buffer)\n{\n\n    uint16_t  rowCnt = num_of_rows >> 2;\n    const q7_t *pB = pM;\n    const q15_t *pA;\n    q15_t    *pO = pOut;\n    const q7_t *pBias = bias;\n\n    while (rowCnt)\n    {\n        pA = pV;\n#ifndef ARM_NN_TRUNCATE\n        q31_t     sum = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum2 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum3 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum4 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        q31_t     sum = *pBias++ << bias_shift;\n        q31_t     sum2 = *pBias++ << bias_shift;\n        q31_t     sum3 = *pBias++ << bias_shift;\n        q31_t     sum4 = *pBias++ << bias_shift;\n#endif\n\n        uint16_t  colCnt = dim_vec >> 1;\n\n        while (colCnt)\n        {\n            q15_t     inA1 = *pA++;\n            q15_t     inA2 = *pA++;\n\n            q7_t      inB1 = *pB++;\n            q7_t      inB3 = *pB++;\n            q7_t      inB2 = *pB++;\n            q7_t      inB4 = *pB++;\n\n            sum += inA1 * inB1 + inA2 * inB2;\n            sum2 += inA1 * inB3 + inA2 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum3 += inA1 * inB1 + inA2 * inB2;\n            sum4 += inA1 * inB3 + inA2 * inB4;\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x1;\n        while (colCnt)\n        {\n            q15_t     inA = *pA++;\n            q7_t      inB = *pB++;\n            sum += inA * inB;\n            inB = *pB++;\n            sum2 += inA * inB;\n            inB = *pB++;\n            sum3 += inA * inB;\n            inB = *pB++;\n            sum4 += inA * inB;\n\n            colCnt--;\n        }\n        *pO++ = (q15_t) __SSAT((sum >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16);\n\n        rowCnt--;\n    }\n\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        pA = pV;\n#ifndef ARM_NN_TRUNCATE\n        int       ip_out = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        int       ip_out = *pBias++ << bias_shift;\n#endif\n        for (int j = 0; j < dim_vec; j++)\n        {\n            q15_t     inA = *pA++;\n            q7_t      inB = *pB++;\n            ip_out += inA * inB;\n        }\n        *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16);\n\n        rowCnt--;\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_fully_connected_mat_q7_vec_q15_ref(const q15_t * pV,   // pointer to vector\n                                            const q7_t * pM,    // pointer to matrix\n                                            const uint16_t dim_vec, // length of the vector\n                                            const uint16_t num_of_rows, // numCol of A\n                                            const uint16_t bias_shift,  // amount of left-shift for bias\n                                            const uint16_t out_shift,   // amount of right-shift for output\n                                            const q7_t * bias, q15_t * pOut,    // output operand\n                                            q15_t * vec_buffer)\n{\n    for (int i = 0; i < num_of_rows; i++)\n    {\n#ifndef ARM_NN_TRUNCATE\n        int       ip_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        int       ip_out = bias[i] << bias_shift;\n#endif\n        for (int j = 0; j < dim_vec; j++)\n        {\n            ip_out += pV[j] * pM[i * dim_vec + j];\n        }\n        pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16);\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_opt_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_fully_connected_q15_opt_ref(const q15_t * pV,  // pointer to vector\n                                     const q15_t * pM,  // pointer to matrix\n                                     const uint16_t dim_vec,    // length of the vector\n                                     const uint16_t num_of_rows,    // numCol of A\n                                     const uint16_t bias_shift, // amount of left-shift for bias\n                                     const uint16_t out_shift,  // amount of right-shift for output\n                                     const q15_t * bias, q15_t * pOut,  // output operand\n                                     q15_t * vec_buffer)\n{\n\n    uint16_t  rowCnt = num_of_rows >> 2;\n    const q15_t *pB = pM;\n    const q15_t *pA;\n    q15_t    *pO = pOut;\n    const q15_t *pBias = bias;\n\n    while (rowCnt)\n    {\n        pA = pV;\n#ifndef ARM_NN_TRUNCATE\n        q31_t     sum = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum2 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum3 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum4 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        q31_t     sum = *pBias++ << bias_shift;\n        q31_t     sum2 = *pBias++ << bias_shift;\n        q31_t     sum3 = *pBias++ << bias_shift;\n        q31_t     sum4 = *pBias++ << bias_shift;\n#endif\n\n        uint16_t  colCnt = dim_vec >> 1;\n\n        while (colCnt)\n        {\n            q15_t     inA1 = *pA++;\n            q15_t     inA2 = *pA++;\n\n            q15_t     inB1 = *pB++;\n            q15_t     inB2 = *pB++;\n            sum += inA1 * inB1 + inA2 * inB2;\n\n            inB1 = *pB++;\n            inB2 = *pB++;\n            sum2 += inA1 * inB1 + inA2 * inB2;\n\n            inB1 = *pB++;\n            inB2 = *pB++;\n            sum3 += inA1 * inB1 + inA2 * inB2;\n\n            inB1 = *pB++;\n            inB2 = *pB++;\n            sum4 += inA1 * inB1 + inA2 * inB2;\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x1;\n        while (colCnt)\n        {\n            q15_t     inA = *pA++;\n            q15_t     inB = *pB++;\n            sum += inA * inB;\n            inB = *pB++;\n            sum2 += inA * inB;\n            inB = *pB++;\n            sum3 += inA * inB;\n            inB = *pB++;\n            sum4 += inA * inB;\n            colCnt--;\n        }\n        *pO++ = (q15_t) __SSAT((sum >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16);\n\n        rowCnt--;\n    }\n\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        pA = pV;\n#ifndef ARM_NN_TRUNCATE\n        int       ip_out = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        int       ip_out = *pBias++ << bias_shift;\n#endif\n        for (int j = 0; j < dim_vec; j++)\n        {\n            q15_t     inA = *pA++;\n            q15_t     inB = *pB++;\n            ip_out += inA * inB;\n        }\n        *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16);\n\n        rowCnt--;\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_fully_connected_q15_ref(const q15_t * pV,  // pointer to vector\n                                 const q15_t * pM,  // pointer to matrix\n                                 const uint16_t dim_vec,    // length of the vector\n                                 const uint16_t num_of_rows,    // numCol of A\n                                 const uint16_t bias_shift, // amount of left-shift for bias\n                                 const uint16_t out_shift,  // amount of right-shift for output\n                                 const q15_t * bias, q15_t * pOut,  // output operand\n                                 q15_t * vec_buffer)\n{\n    for (int i = 0; i < num_of_rows; i++)\n    {\n#ifndef ARM_NN_TRUNCATE\n        int       ip_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        int       ip_out = bias[i] << bias_shift;\n#endif\n        for (int j = 0; j < dim_vec; j++)\n        {\n            ip_out += pV[j] * pM[i * dim_vec + j];\n        }\n        pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16);\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_opt_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_fully_connected_q7_opt_ref(const q7_t * pV,    // pointer to vector\n                                    const q7_t * pM,    // pointer to matrix\n                                    const uint16_t dim_vec, // length of the vector\n                                    const uint16_t num_of_rows, // numCol of A\n                                    const uint16_t bias_shift,  // amount of left-shift for bias\n                                    const uint16_t out_shift,   // amount of right-shift for output\n                                    const q7_t * bias, q7_t * pOut, // output operand\n                                    q15_t * vec_buffer)\n{\n\n    uint16_t  rowCnt = num_of_rows >> 2;\n    const q7_t *pB = pM;\n    const q7_t *pA;\n    q7_t     *pO = pOut;\n    const q7_t *pBias = bias;\n\n    while (rowCnt)\n    {\n        pA = pV;\n#ifndef ARM_NN_TRUNCATE\n        q31_t     sum = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum2 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum3 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n        q31_t     sum4 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        q31_t     sum = *pBias++ << bias_shift;\n        q31_t     sum2 = *pBias++ << bias_shift;\n        q31_t     sum3 = *pBias++ << bias_shift;\n        q31_t     sum4 = *pBias++ << bias_shift;\n#endif\n\n        uint16_t  colCnt = dim_vec >> 2;\n\n        while (colCnt)\n        {\n            q7_t      inA1 = *pA++;\n            q7_t      inA3 = *pA++;\n            q7_t      inA2 = *pA++;\n            q7_t      inA4 = *pA++;\n\n            q7_t      inB1 = *pB++;\n            q7_t      inB3 = *pB++;\n            q7_t      inB2 = *pB++;\n            q7_t      inB4 = *pB++;\n\n            sum += inA1 * inB1 + inA2 * inB2;\n            sum2 += inA1 * inB3 + inA2 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum3 += inA1 * inB1 + inA2 * inB2;\n            sum4 += inA1 * inB3 + inA2 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum += inA3 * inB1 + inA4 * inB2;\n            sum2 += inA3 * inB3 + inA4 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum3 += inA3 * inB1 + inA4 * inB2;\n            sum4 += inA3 * inB3 + inA4 * inB4;\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q7_t      inA = *pA++;\n            q7_t      inB = *pB++;\n            sum += inA * inB;\n            inB = *pB++;\n            sum2 += inA * inB;\n            inB = *pB++;\n            sum3 += inA * inB;\n            inB = *pB++;\n            sum4 += inA * inB;\n\n            colCnt--;\n        }\n        *pO++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        *pO++ = (q7_t) __SSAT((sum2 >> out_shift), 8);\n        *pO++ = (q7_t) __SSAT((sum3 >> out_shift), 8);\n        *pO++ = (q7_t) __SSAT((sum4 >> out_shift), 8);\n\n        rowCnt--;\n    }\n\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        pA = pV;\n#ifndef ARM_NN_TRUNCATE\n        int       ip_out = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        int       ip_out = *pBias++ << bias_shift;\n#endif\n        for (int j = 0; j < dim_vec; j++)\n        {\n            q7_t      inA = *pA++;\n            q7_t      inB = *pB++;\n            ip_out += inA * inB;\n        }\n        *pO++ = (q7_t) __SSAT((ip_out >> out_shift), 8);\n\n        rowCnt--;\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_fully_connected_q7_ref(const q7_t * pV,    // pointer to vector\n                                const q7_t * pM,    // pointer to matrix\n                                const uint16_t dim_vec, // length of the vector\n                                const uint16_t num_of_rows, // numCol of A\n                                const uint16_t bias_shift,  // amount of left-shift for bias\n                                const uint16_t out_shift,   // amount of right-shift for output\n                                const q7_t * bias, q7_t * pOut, // output operand\n                                q15_t * vec_buffer)\n{\n    for (int i = 0; i < num_of_rows; i++)\n    {\n#ifndef ARM_NN_TRUNCATE\n        int       ip_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1));\n#else\n        int       ip_out = bias[i] << bias_shift;\n#endif\n        for (int j = 0; j < dim_vec; j++)\n        {\n            ip_out += pV[j] * pM[i * dim_vec + j];\n        }\n        pOut[i] = (q7_t) __SSAT((ip_out >> out_shift), 8);\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_nn_mult_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\nvoid      arm_nn_mult_q7_ref(q7_t * pSrcA, \n                             q7_t * pSrcB, \n                             q7_t * pDst, \n                             const uint16_t out_shift, \n                             uint32_t blockSize) {\n    uint16_t  i;\n\nfor (i = 0; i < blockSize; i++)\n    {\n\t\tq31_t product = pSrcA[i] * pSrcB[i];\n#ifndef ARM_NN_TRUNCATE\n        pDst[i] = (q7_t)__SSAT((product + (0x1 << (out_shift - 1)))>>out_shift, 8);\n#else\n        pDst[i] = (q7_t)__SSAT(product >> out_shift, 8);\n#endif\n    }\n}\n\nvoid     arm_nn_mult_q15_ref(q15_t * pSrcA, \n                             q15_t * pSrcB, \n                             q15_t * pDst, \n                             const uint16_t out_shift, \n                             uint32_t blockSize) {\n    uint16_t  i;\n\nfor (i = 0; i < blockSize; i++)\n    {\n\t\tq31_t product = pSrcA[i] * pSrcB[i];\n#ifndef ARM_NN_TRUNCATE\n        pDst[i] = (q15_t)__SSAT((product + (0x1 << (out_shift - 1)))>>out_shift, 16);\n#else\n        pDst[i] = (q15_t)__SSAT(product >> out_shift, 16);\n#endif\n\n\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_pool_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"ref_functions.h\"\n\nvoid arm_avepool_q7_HWC_ref(const q7_t * Im_in, // input image\n                            const uint16_t dim_im_in,   // input image dimension\n                            const uint16_t ch_im_in,    // number of input image channels\n                            const uint16_t dim_kernel,  // window kernel size\n                            const uint16_t padding, // padding sizes\n                            const uint16_t stride,  // stride\n                            const uint16_t dim_im_out,  // output image dimension\n                            q7_t * bufferA, // a buffer for local storage\n                            q7_t * Im_out)\n{\n    int16_t   i_ch_in, i_x, i_y;\n    int16_t   k_x, k_y;\n\n    for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++)\n    {\n        for (i_y = 0; i_y < dim_im_out; i_y++)\n        {\n            for (i_x = 0; i_x < dim_im_out; i_x++)\n            {\n                int       sum = 0;\n                int       count = 0;\n                for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++)\n                {\n                    for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++)\n                    {\n                        if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in)\n                        {\n                            sum += Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)];\n                            count++;\n                        }\n                    }\n                }\n                Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = sum / count;\n            }\n        }\n    }\n}\n\nvoid arm_maxpool_q7_HWC_ref(const q7_t * Im_in, // input image\n                            const uint16_t dim_im_in,   // input image dimension\n                            const uint16_t ch_im_in,    // number of input image channels\n                            const uint16_t dim_kernel,  // window kernel size\n                            const uint16_t padding, // padding sizes\n                            const uint16_t stride,  // stride\n                            const uint16_t dim_im_out,  // output image dimension\n                            q7_t * bufferA, // a buffer for local storage\n                            q7_t * Im_out)\n{\n    int16_t   i_ch_in, i_x, i_y;\n    int16_t   k_x, k_y;\n\n    for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++)\n    {\n        for (i_y = 0; i_y < dim_im_out; i_y++)\n        {\n            for (i_x = 0; i_x < dim_im_out; i_x++)\n            {\n                int       max = -129;\n                for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++)\n                {\n                    for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++)\n                    {\n                        if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in)\n                        {\n                            if (Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)] > max)\n                            {\n                                max = Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)];\n                            }\n                        }\n                    }\n                }\n                Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = max;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_relu_ref.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\nvoid arm_relu_q7_ref(q7_t * data, uint16_t size)\n{\n    uint16_t  i;\n\n    for (i = 0; i < size; i++)\n    {\n        if (data[i] < 0)\n            data[i] = 0;\n    }\n}\n\nvoid arm_relu_q15_ref(q15_t * data, uint16_t size)\n{\n    uint16_t  i;\n\n    for (i = 0; i < size; i++)\n    {\n        if (data[i] < 0)\n            data[i] = 0;\n    }\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/fully_connected_testing_weights.h",
    "content": "#define IP2_WEIGHT {18,-12,-120,-75,60,-92,62,106,43,43,-108,-80,78,76,94,13,-125,63,54,-121,-61,26,60,-125,-79,112,-45,-97,-59,-100,28,35,-15,26,-41,-65,-99,106,115,109,-20,-75,83,-106,51,-55,25,-126,15,-46,-73,62,-89,-15,-37,-79,-12,43,-30,120,46,116,113,11,-57,-81,113,-53,4,117,18,-31,101,65,125,60,76,91,-53,-63,-74,73,-47,-51,-87,-27,-126,-12,107,103,79,113,-41,93,124,122,-72,67,93,-103,-97,-61,62,-17,10,30,124,-119,-17,31,-60,4,88,-76,18,25,-109,-47,19,33,102,71,66,-42,-111,8,-4,-44,78,40,-19,107,-118,11,-105,-116,48,0,-73,-101,-55,-20,-81,71,-121,60,107,110,103,-28,88,-85,34,-90,12,-105,-21,-10,-115,118,-84,97,86,-67,-80,-43,-107,115,108,-49,-59,22,19,122,-76,82,-16,93,67,-100,-57,-41,-43,99,-1,-69,-79,54,-46,24,-59,-1,77,-94,111,-20,-35,108,54,3,107,-59,17,-112,106,-108,95,37,63,60,9,-65,-63,7,-118,-69,-48,111,120,40,44,63,-67,108,26,-37,127,96,-54,-1,21,88,-24,-112,-115,-27,-9,59,-89,22,109,45,47,-42,68,-72,94,55,-121,-23,-2,83,105,-18,104,-34,29,-80,58,-104,-6,-20,53,-86,-5,115,94,39,100,70,-70,-69,-121,-106,-43,94,83,120,121,-93,-97,90,0,-26,-87,6,-26,1,94,67,-26,-71,-21,64,53,35,-46,-102,-58,-103,-7,-34,15,-19,117,-27,59,20,111,-31,-31,43,-36,-19,49,94,-17,119,32,118,110,-19,121,24,30,-74,-12,-38,52,21,-38,98,-58,63,-115,-84,29,22,-93,63,-127,-113,56,25,-2,43,88,107,29,14,116,88,-24,115,-22,-14,-65,116,-119,-95,88,57,-64,18,-127,8,-123,-51,-80,75,-8,-98,2,-109,19,76,40,3,117,121,-4,61,92,-56,21,94,47,-32,24,-50,-38,-26,111,-61,118,-111,94,-14,-74,51,-38,-116,111,62,-39,-121,97,109,-45,-122,-37,-62,108,-74,73,34,59,-21,-20,37,-2,-102,45,121,-41,-116,80,-2,110,-52,-39,62,-12,-127,52,99,13,124,-15,-89,89,85,67,-119,110,-38,-13,-14,-53,-97,119,-121,16,14,-53,-65,-118,26,-4,19,111,-44,22,-57,81,110,-26,-70,45,55,-55,108,-122,-78,-34,24,-69,90,-48,-76,-80,-123,-49,10,113,89,58,119,68,-26,109,-35,-90,88,-90,-66,-24,78,-122,-84,82,76,93,106,123,-52,2,-19,-125,38,36,105,31,3,-99,-27,74,54,-29,8,40,30,-111,21,-118,87,95,58,-29,-117,84,-83,114,-75,96,64,94,-23,-44,46,-77,-82,62,104,74,26,-91,7,63,81,14,-27,33,41,31,-9,64,-19,60,-79,21,-120,49,26,63,-8,105,-116,-58,65,87,-38,-27,109,-97,-50,63,83,-70,111,32,-70,104,22,-123,74,-61,98,60,58,-13,-80,-37,-62,76,-82,-26,76,109,25,81,78,-104,96,-29,-9,-6,-46,-120,54,-33,-30,-108,41,22,110,-54,78,52,14,-40,-70,59,-101,-38,61,-122,77,46,116,-3,-21,-124,-23,41,80,83,29,-71,-43,9,101,77,35,-119,2,93,-30,22,-62,97,-12,29,40,41,36,106,-87,21,93,-41,-112,60,-100,81,91,-89,-10,79,-69,-7,-113,111,-47,51,-23,14,16,-56,98,26,-50,121,127,-104,39,-38,44,-22,-73,-69,125,61,15,-78,-119,-47,-15,-44,-90,-72,29,61,92,109,-10,25,-16,-49,-31,-109,121,5,-2,-125,10,53,80,-13,46,38,1,73,116,66,75,-18,-50,99,-44,-126,-60,-126,-26,-57,-121,-35,105,57,77,112,44,56,83,66,-94,106,60,-119,-124,-25,57,104,106,122,-52,-51,-38,68,47,64,-50,25,-64,-72,-127,73,124,-51,-96,116,53,75,-18,97,97,-96,-12,-16,46,29,105,-118,11,53,-31,-127,-98,-126,2,-115,-116,12,-47,-70,-106,-41,73,-115,-55,-96,126,-124,-41,-48,-43,-6,18,-107,-106,-59,86,-5,85,89,-17,91,-71,103,-116,-122,-80,99,-26,-87,-14,-4,-110,52,-44,-124,-47,15,104,-52,-16,18,62,92,-92,-81,101,94,38,45,-77,-103,-124,74,67,70,-113,25,25,-53,-125,124,33,-84,-119,118,105,-70,-101,-108,-48,111,118,-91,-49,38,102,105,24,56,-95,-119,-45,-96,88,33,126,-101,74,-30,17,-35,24,-23,123,47,-41,-82,91,-3,60,15,-4,46,38,49,-8,-35,82,28,110,8,-58,-108,-124,60,125,-5,49,31,69,-73,94,-25,75,107,75,-1,53,-32,66,20,121,-75,-39,-13,-84,120,15,8,-33,-46,-30,-121,-119,-17,73,-102,-36,103,-20,11,-62,-80,-111,69,-84,-37,38,82,-87,8,69,-110,80,66,-41,122,102,125,-90,72,109,-120,-25,-56,-43,-44,-93,48,63,-59,-30,106,85,-83,-68,44,112,-75,-61,-127,-4,21,-124,-79,-111,-65,68,0,-111,62,-14,41,27,53,68,69,102,-55,122,99,-5,-74,74,2,96,71,107,49,88,19,55,10,84,-124,2,10,-47,-66,-1,-61,-70,3,-101,37,113,120,33,3,18,3,52,-86,38,91,-88,-48,-115,104,-20,49,-25,26,-108,-82,86,80,-125,-86,-73,-109,-72,-49,108,56,-8,-103,-10,-115,-99,97,-120,15,-94,-52,90,-1,-39,-1,-2,89,-103,-69,-82,-63,-32,59,101,-23,-83,-67,-112,-23,-12,-47,-105,-85,-117,-9,-80,-34,-38,108,-77,89,112,-63,28,-69,70,-99,47,59,82,16,-89,47,-78,-21,-101,23,115,-98,-89,23,83,-113,-26,6,-15,101,-72,95,15,-116,46,107,117,67,-98,45,21,-30,10,108,120,99,-30,-91,-96,100,53,-62,-126,54,103,96,-20,-57,14,-128,123,-104,-7,-62,-49,-94,105,108,-104,52,5,-91,114,62,102,-103,10,84,1,30,-102,-17,-112,91,-115,14,1,54,-110,4,99,-10,-35,78,84,78,-66,120,-110,-29,-92,105,-96,118,64,81,48,-127,-32,-9,51,69,-31,40,-84,111,4,-123,-43,54,55,100,-61,19,33,-65,-50,-27,42,120,-66,-126,-17,36,107,2,53,80,95,-94,17,64,50,-25,29,9,-67,-101,-24,82,97,-53,-58,-119,-40,-10,8,-99,60,-29,79,-79,-43,-127,-73,26,-60,-26,114,-82,-19,-111,49,3,-54,100,67,45,72,-84,-50,-17,123,54,-94,-86,80,-9,-87,-51,-57,-32,-92,123,40,-93,-44,-61,-24,-128,-85,-52,-56,-52,51,32,-23,-108,-32,8,-69,9,-2,84,-36,24,126,-80,-73,3,42,20,30,-46,-29,25,89,-30,48,115,37,57,-47,-95,-100,-77,-38,-8,26,-37,-23,-31,124,65,67,-87,35,19,-80,107,-71,120,106,21,-28,69,24,-110,103,-43,-68,94,95,-105,28,-16,-49,-6,88,121,-36,-83,28,-101,102,-28,40,-7,-108,28,97,11,-98,117,80,2,-92,-62,-43,-67,113,74,59,18,-72,-124,-126,-52,102,-128,-14,125,-116,-40,21,82,13,-2,59,-111,-110,-125,-44,-94,109,111,49,-71,40,-52,1,2,-73,-62,-40,-30,-93,-43,25,-103,-94,-110,126,-112,78,32,24,-95,-121,101,25,95,66,-63,5,72,-61,-83,-66,-88,-57,118,113,-110,92,-44,-3,15,24,-14,-114,14,33,-76,-75,80,76,-110,122,-56,101,12,66,-89,21,-76,42,86,-49,77,65,97,127,-20,43,0,-117,115,9,-83,-27,119,15,-122,4,21,-47,72,-113,-68,-98,-124,-89,125,-90,-83,35,-74,79,101,-65,127,60,-118,104,73,44,-41,-111,79,54,-70,-52,-97,10,18,-17,91,-46,-72,3,-35,-23,44,84,-11,-17,-11,-45,-38,67,75,-100,3,54,-16,-22,66,-98,-79,41,-110,-49,-76,-6,-33,-109,30,6,-18,84,63,50,-119,64,-127,-79,101,-91,59,-87,-51,0,-18,-23,-102,-99,120,-28,123,-86,59,-81,-22,-13,43,107,-13,-92,78,95,-10,26,-108,36,-57,-44,-118,-93,-62,-77,-33,-6,-50,-122,-103,-20,57,24,3,-25,-95,-91,-47,74,14,20,16,23,52,78,-15,-17,69,13,-98,126,84,115,74,-125,23,62,110,34,124,-38,111,6,106,-24,82,53,-102,-53,-36,7,60,1,19,80,-26,-111,58,83,-76,-19,112,121,41,-45,69,112,-95,98,-126,68,-37,-109,-55,-70,77,-97,35,-61,12,-58,54,-36,93,-48,4,10,104,102,37,70,4,10,-18,33,26,0,60,69,-49,26,66,-114,-22,-72,-96,124,16,-6,-92,-52,83,103,96,77,-99,4,80,10,-119,-108,-117,122,39,-13,-72,-7,77,-91,58,111,3,29,52,93,116,-123,-16,44,-60,107,60,-57,83,15,42,33,-93,-16,60,-97,53,86,5,-76,120,-42,-88,-35,18,12,110,-4,-62,84,2,-46,-14,-99,27,96,96,-69,15,102,79,-84,-24,-7,-64,-49,107,-51,17,108,-3,-41,-104,122,-123,-2,-58,-69,-36,-69,-33,81,-78,12,0,11,-63,125,97,58,-43,-63,-49,48,73,-78,-87,-88,-94,94,97,56,-31,-27,-113,125,-128,-25,-65,5,67,71,-26,7,40,-115,-55,-119,74,-34,-111,-42,-77,-15,-80,41,71,-121,-62,54,-95,-76,122,-115,101,-80,36,82,-55,-25,11,11,105,39,-98,-80,-77,-45,-58,93,-118,64,126,124,-46,1,26,113,37,107,108,-117,-127,123,-17,-120,-64,-35,-99,10,81,2,55,-110,-122,-120,-3,-24,-11,109,126,72,60,-18,92,-79,32,84,2,103,-7,-22,-7,-2,-108,-40,-55,45,47,14,-77,-60,50,43,-98,67,-52,51,101,107,105,45,-24,52,93,46,-61,-45,-36,-63,-33,-33,50,-81,-30,38,-124,73,-106,-90,54,-116,-86,-77,76,-63,-5,121,-22,-79,-73,-87,29,69,68,5,87,-85,-36,43,124,0,-62,104,72,-98,-63,-90,76,88,52,12,107,63,119,-54,102,-30,80,-63,-50,51,-5,79,110,-101,-11,32,80,-90,-22,-28,78,42,-76,89,-22,74,111,9,-78,28,-76,-17,20,-113,44,99,-82,31,-94,40,42,-75,-10,57,27,41,-29,42,-104,127,-70,-119,115,-77,54,114,-5,89,-63,9,-51,-68,-117,99,13,-23,103,-30,-117,76,78,112,-118,-16,-87,41,-23,72,67,-4,-69,30,-16,-18,-97,-111,-93,-68,-104,-112,55,-92,123,52,-14,-78,3,69,61,-35,-108,68,88,87,-114,-81,-126,26,-94,-111,80,10,47,43,98,28,-115,-122,103,-88,20,-58,79,33,103,-48,118,102,6,86,35,52,126,123,-62,62,-37,-126,-52,65,84,28,127,49,120,-67,-80,-8,96,-60,-25,100,-47,-14,103,-79,-29,-11,75,-77,-29,-56,1,-88,75,39,-36,-12,-71,-77,34,-98,-35,-103,-89,-41,-106,-86,-56,-36,-119,113,-17,-1,118,48,-59,101,-9,-51,-117,4,-71,31,23,6,80,3,40,-52,18,103,-127,50,75,-102,-56,0,47,-16,29,-15,-38,-32,-10,97,60,-4,-77,-105,-38,115,32,-14,5,-57,34,-22,-125,107,-32,99,115,64,-114,-90,118,-101,-25,125,33,-98,105,-88,85,-121,-66,-62,-46,-108,49,-19,-15,86,-83,49,50,42,-25,-128,-3,-89,-107,99,-116,-101,-45,-44,5,-53,57,-96,107,-77,-119,127,-76,99,-94,45,59,-6,-1,6,108,-71,-46,-35,-3,-26,4,104,-106,23,-51,52,104,-67,-74,-38,-125,-107,-9,-24,-93,75,-123,80,-68,28,-98,-119,-69,15,91,105,-17,46,-110,4,76,39,106,18,23,-55,69,-77,7,105,-16,-19,53,38,-95,100,46,73,23,44,86,19,64,87,-28,76,-1,81,-59,-123,-39,70,127,-120,81,89,110,-27,-54,-92,36,70,-45,-3,-12,-72,88,-109,96,123,-80,26,101,87,-113,-100,-45,0,29,122,111,-86,-67,-104,-87,-6,-109,-49,94,110,-85,113,93,-49,-110,-48,67,-85,34,-60,50,89,-34,-1,-46,12,3,-74,-25,0,-23,-48,-100,-98,54,-126,101,95,68,127,-118,-22,9,-106,84,95,-124,-31,-90,-39,18,23,10,7,45,35,52,6,-102,37,40,-31,-9,-33,69,-95,119,-36,6,-124,-3,-100,75,-91,126,106,77,126,112,-72,-60,53,-127,90,-112,45,115,69,32,61,69,-82,56,80,-40,-115,50,-124,34,-13,109,35,-21,-19,-82,90,65,-93,10,-121,106,39,114,-81,10,-43,-58,91,-26,-88,125,-36,93,-19,70,40,121,-26,-124,-28,-28,-70,18,-94,-120,109,10,100,-19,96,-78,-26,62,127,60,91,-6,-52,-64,-52,34,-47,47,-85,-49,-2,-44,91,56,-100,90,-62,124,-113,-67,-127,-15,-67,-39,10,53,87,38,41,3,-58,83,14,36,109,13,57,32,-37,-97,-18,-4,3,5,-33,-31,-7,46,73,-1,-120,-117,33,-82,91,76,84,-35,-128,100,41,117,-102,126,71,-50,18,41,16,-109,117,-86,102,-36,56,-66,-77,-92,-67,-70,-66,75,49,98,53,-36,50,103,62,61,-15,61,11,-19,-51,126,79,14,76,32,-120,35,-21,106,93,66,-74,4,13,19,-18,68,-90,-91,55,93,27,68,70,-64,-97,13,-32,-112,65,-116,91,3,37,13,-77,21,-17,83,53,-56,69,-86,55,-107,-116,106,-49,2,-5,-59,63,124,16,30,-81,-27,-61,-60,65,92,103,72,39,-88,113,112,-31,-52,55,-46,53,-58,-50,50,51,57,-71,-112,-99,42,76,-33,58,2,115,-111,15,27,-49,114,74,-63,5,123,-108,-73,-56,8,-26,-122,-35,88,40,18,51,52,20,65,-35,-24,-41,-7,67,65,-47,20,8,-118,51,107,36,17,96,-108,-69,-40,-72,-61,-67,-17,-109,61,-26,59,-83,-31,10,-25,-62,-47,-113,65,46,25,13,86,-61,-14,113,-52,64,-100,0,110,34,-64,-35,-88,121,-84,81,46,33,-19,22,-23,106,49,40,4,-76,-89,53,110,86,-50,-71,-67,28,14,49,-123,-66,-18,66,-100,-83,111,101,54,18,-70,63,9,-48,-70,-115,-22,21,-71,-14,-74,65,-71,-2,-77,53,-62,-35,-127,-100,33,24,-5,-87,65,82,52,0,87,-37,20,104,-62,-52,31,11,29,-45,-58,-54,107,126,-119,-113,-47,-9,-72,-77,43,102,-116,-4,-79,-120,-90,79,-117,39,1,53,-91,127,123,41,-70,-104,38,31,-53,-85,-18,-127,45,18,13,-59,-5,-75,-110,1,24,-60,28,-110,58,-9,0,43,-104,92,-125,106,-91,-16,-75,-1,113,-115,-83,-95,66,-25,63,-120,-96,-26,101,51,83,27,47,-75,60,83,63,-58,-26,42,-88,-22,111,116,-72,-5,-65,-44,-78,-70,12,-109,95,-71,-27,125,9,-6,-72,104,-39,70,98,-38,48,117,67,-66,-117,-125,-89,49,-72,-71,127,-67,8,8,36,-76,-71,-105,-127,70,-100,-78,115,-84,32,38,78,26,85,43,62,-79,56,-78,113,-2,-12,-37,4,49,-17,123,-87,51,36,-90,-62,-27,11,47,73,-1,-37,18,75,18,19,-109,30,44,-96,91,-21,-115,-88,85,108,-17,-18,52,111,32,-88,108,66,-9,113,13,-117,-44,-49,15,-37,27,28,-57,-15,125,106,43,60,98,-21,-119,36,42,52,6,65,52,23,-39,60,-46,-61,100,50,116,111,8,-128,87,29,-27,-42,93,122,125,50,-82,45,95,-86,6,-10,21,-23,87,21,61,-14,-102,27,-64,43,8,3,-118,-97,-82,-66,-119,-82,56,-13,90,-109,-36,-116,-21,-42,64,-38,-55,-77,-14,-97,93,126,-10,77,39,-78,64,-39,46,-17,27,114,114,-88,80,-86,-88,-20,-121,-7,97,-20,100,82,-3,81,-108,-10,-40,53,-54,59,-103,31,-58,96,85,87,-76,118,-60,24,-41,78,84,38,-56,121,39,-101,55,6,103,40,-39,117,44,-26,-67,14,-33,-71,36,-38,-88,73,-5,28,-41,-21,-31,33,-53,82,93,54,-28,-63,31,-17,94,-48,-128,115,-62,-89,36,-28,-4,-48,75,-104,25,113,-76,-52,103,24,-96,-24,-44,107,-17,124,-95,-75,122,-64,122,51,74,121,106,-45,41,-77,-91,97,-17,87,111,106,-25,-38,-109,-87,-91,42,-71,-97,-111,-69,18,77,66,46,96,10,24,-89,16,-25,10,-1,-114,26,123,68,46,75,-115,44,-125,-121,-60,112,48,-110,-50,-10,-55,-10,75,4,-79,53,-84,99,98,-36,56,52,-66,67,-126,-77,29,-31,-88,-35,26,62,79,-79,-10,-114,-52,110,-21,-22,124,47,-114,-18,-101,-105,-44,-50,-114,-12,-104,-77,-38,-128,60,-81,-110,30,101,13,107,-57,-69,-40,14,-97,-50,-54,92,-60,59,127,-128,-95,95,-8,0,-119,83,24,-96,-106,-84,96,-29,14,-80,82,-120,-28,-116,-55,-78,-31,95,112,-82,68,92,-121,74,75,-62,24,-5,97,6,42,-123,-99,82,-82,-70,56,16,118,-84,66,111,80,-82,-15,-104,69,-12,-76,-23,-69,-55,-46,-48,22,79,16,-51,34,-115,64,23,-106,-77,71,-8,107,46,-22,34,-14,60,-80,117,-8,89,-108,123,25,-58,15,-25,64,-114,-19,69,50,95,-7,-95,120,98,106,-41,-31,-120,-127,88,71,53,41,-50,-68,-80,40,55,96,26,-8,-6,54,96,106,98,-60,-71,90,60,-17,48,24,17,-36,10,95,74,126,-123,51,79,118,115,69,-106,-78,65,121,77,96,78,-70,-49,91,27,-91,-51,62,53,-68,5,-96,-108,12,-45,79,-19,-80,-61,-30,-40,127,-117,77,83,22,116,19,-70,70,-95,95,-77,-120,59,24,-41,79,-100,95,-112,-22,89,-99,77,94,60,84,-5,112,55,-33,-92,63,88,-89,-88,-23,123,-20,-6,115,22,29,125,-46,65,-118,77,-50,94,-31,24,111,-107,63,19,-71,22,-69,-102,-26,-26,22,85,111,126,-55,46,90,-13,34,77,-5,61,43,-29,-60,13,114,107,19,-64,-107,108,-101,-63,103,51,32,-26,79,-115,-91,22,-120,-58,33,-83,-114,95,-48,-126,84,-112,-38,-38,54,-52,-113,46,111,-38,-111,-69,55,26,-43,-88,-81,94,-96,120,102,54,80,-68,-10,11,53,-68,102,32,-50,-60,50,20,124,-27,-57,15,87,-92,57,-50,51,49,-70,-124,32,-76,-51,-3,-38,22,-9,-18,102,-78,49,27,-96,-47,-9,89,-81,-39,37,-82,-70,-88,-104,46,95,31,-17,10,-62,-66,68,26,118,-104,-50,-50,-17,-108,24,-120,-88,22,-31,59,-7,-5,-15,75,101,-102,-17,106,57,12,93,-99,-105,24,51,-14,-7,107,-111,46,98,75,-8,-101,121,42,5,4,89,-110,-42,21,-14,-110,-46,49,-67,-64,-20,-85,72,41,-89,95,79,89,-97,43,48,14,121,109,-53,-50,35,-35,-103,12,-97,-111,-17,2,-89,28,-126,-36,-96,-98,71,-98,-9,74,-59,112,81,-89,-123,31,115,28,110,-20,-109,101,-107,-98,122,-101,15,47,27,-63,-19,85,-113,99,-67,109,-45,55,5,18,-97,31,117,-3,104,-8,11,24,-63,34,-86,42,-65,55,16,103,51,-82,-121,73,-61,104,76,-115,-92,30,86,-30,-110,-51,-115,-43,-108,-13,114,-89,-104,-51,-26,-112,-83,-29,79,8,112,-30,-47,94,71,-21,89,-38,7,-57,-70,105,62,-116,76,-12,95,-94,114,9,55,7,-46,-95,-105,96,61,24,88,25,-126,42,31,69,20,-93,-86,126,-79,97,39,87,-74,-104,-71,66,-83,87,-81,108,75,8,1,-121,120,-10,-1,-29,-47,-20,38,-73,67,7,52,-89,100,-57,92,9,-38,-58,-71,-112,-57,108,-121,-17,-127,-59,40,0,-69,-45,-98,115,-67,49,55,-76,-97,57,-94,-67,-60,97,-25,-13,-77,91,-54,118,36,-122,14,63,29,-66,-41,-87,2,9,-83,14,-42,34,25,-36,54,19,93,95,69,77,115,115,-67,-20,90,110,70,-83,-68,65,28,122,-51,102,-112,123,-55,-6,-88,42,76,-8,-96,127,117,-121,-97,36,62,120,90,-58,-89,79,56,-114,-1,62,69,-44,-96,-49,-18,102,6,-43,-9,-26,34,-127,83,-97,-74,-48,0,118,52,-66,42,-74,126,-89,-107,-37,-72,-114,64,-109,51,-2,34,-104,47,-122,-20,65,-48,24,81,2,-29,122,44,-11,61,27,11,114,75,21,18,22,39,114,-46,-109,124,-41,59,-99,-28,55,53,24,77,-63,51,118,122,101,-48,11,71,91,18,37,-41,-86,65,-69,-48,15,-101,-2,-43,122,20,-102,-58,-97,-88,25,3,47,22,-91,51,37,-14,70,118,-2,-47,25,49,111,45,83,15,-70,-96,8,23,112,-8,-79,-89,49,68,-35,118,101,-1,39,11,-51,98,-5,-67,-64,52,-41,-128,-128,30,-128,74,113,-85,-25,30,-22,2,127,-20,13,-85,-92,-32,-4,-21,31,-105,3,-47,22,35,5,29,-82,126,62,83,-28,-4,-94,93,-93,-120,44,16,19,-67,-70,5,-31,-100,85,80,30,123,-89,-9,52,2,87,79,105,45,82,-93,-46,99,-110,87,-13,-4,-52,19,7,17,54,-92,-118,-127,-24,71,-79,55,-102,0,30,-71,-42,-6,-112,-78,-55,85,29,-32,-103,-54,72,27,-76,-95,30,-7,-6,67,112,76,-79,84,-56,7,-84,85,33,-86,-39,-77,-27,103,100,99,-43,105,68,12,85,44,-92,76,-109,31,20,27,-28,-39,78,30,94,46,-28,-79,76,-103,-26,25,52,-21,-79,9,26,-26,-84,-17,-102,15,-120,70,-100,89,55,-3,-125,-80,-65,-27,89,-41,74,-8,-63,77,99,-9,-9,89,87,74,-101,-44,-16,112,100,102,9,-47,-40,-41,15,-53,-88,59,-44,93,-8,-51,26,76,-54,21,102,94,23,-81,9,110,-125,-76,59,-45,22,-78,72,19,98,127,21,-113,12,62,-80,-27,-21,58,-38,7,-112,-109,-111,-123,32,73,-29,-65,8,23,20,-58,106,-101,-30,20,-93,-36,-38,48,31,57,-26,-76,-93,93,-33,-99,12,25,-68,64,-90,120,-86,82,-102,103,-11,56,-96,104,3,101,83,-82,8,36,-38,-72,98,-94,112,-112,-83,-60,-123,125,86,96,64,17,89,113,34,2,68,51,-85,109,-92,102,50,64,-57,-64,114,66,-37,-120,-32,-102,96,-38,-90,-114,-81,46,-15,108,72,19,118,-98,64,33,-58,-93,-13,70,-93,41,67,93,-61,99,-53,88,-79,-64,-85,48,-67,56,-54,-46,58,2,-14,58,-127,-72,73,34,-12,-50,-50,31,48,-75,33,-89,-7,-93,-76,-95,-96,-52,85,122,35,-14,73,-30,-107,-112,127,-22,74,85,-127,44,13,-78,-85,-63,-86,-121,-58,126,-117,71,113,59,-95,117,41,48,-73,2,-89,34,18,-3,90,112,15,-26,-5,69,46,-24,99,-6,35,38,-33,-55,52,104,53,77,-114,-37,43,-36,-70,114,36,88,-43,-81,53,-99,75,108,-70,92,99,-6,102,-80,-128,-112,119,-107,-22,36,27,123,105,-80,76,-103,83,127,20,-7,14,-52,76,-23,-128,123,63,-65,-111,-53,25,100,-6,40,40,34,-42,-25,-44,-40,8,-36,-46,84,41,-123,106,117,-89,69,-53,-33,-58,-41,90,-114,-68,26,-80,-124,8,-77,92,-49,103,-48,-27,-77,-50,-96,-113,-6,55,-5,-60,106,112,-6,-111,-89,-127,-38,-33,99,83,-88,113,-2,-23,-73,-7,-88,-49,76,69,-42,35,46,58,-96,67,29,84,117,52,-97,93,-113,64,123,-90,-104,109,-41,-26,-50,-48,85,-52,41,104,-20,38,45,25,-105,37,85,15,-92,79,-23,81,-125,-40,-49,18,1,-124,-34,-125,59,-97,65,68,93,64,38,-5,-31,-59,-74,43,-104,-62,-100,95,14,-85,-60,-56,-37,37,116,27,41,106,63,124,64,75,109,72,47,44,-128,-119,60,28,105,58,20,-104,-35,-98,63,118,-61,-11,-28,32,-97,92,57,114,99,47,-80,92,39,-115,-55,-35,-57,-79,4,-113,28,43,124,-31,-119,-83,56,101,-114,-53,116,-102,-126,-73,-124,-97,46,83,-17,49,-17,-13,96,23,3,-60,-93,-73,23,4,-35,-119,-71,5,-118,30,-51,71,112,121,-95,97,23,-37,47,55,102,-6,17,107,-16,-70,124,-81,28,-5,71,77,-70,43,20,71,44,-72,-125,88,123,32,40,-27,98,62,-6,35,47,49,-74,20,-56,-112,82,-50,22,113,82,-11,102,-67,114,-6,-41,123,41,-73,-102,-65,-97,-39,-41,70,-25,-21,96,58,74,119,-125,-112,-101,-57,87,116,-29,-25,-79,24,8,-83,17,76,-28,40,25,80,-59,-77,61,-50,41,69,-21,38,-56,61,26,114,32,49,50,-47,5,-53,29,-43,41,-5,-80,38,-112,49,49,-26,-34,-54,-95,50,103,16,95,28,-31,-126,-31,-2,-48,74,122,-83,-73,-22,-122,89,52,-12,13,18,117,-80,52,-36,88,-57,-37,32,-107,33,-55,15,78,80,23,-30,-44,126,125,124,12,125,73,-3,-8,37,-15,8,29,70,73,92,19,63,-5,24,-123,60,53,-14,-27,-92,20,-12,-38,49,-43,9,-118,111,39,110,50,-16,98,-85,21,23,30,-9,93,-96,77,52,-107,-58,-19,-72,69,21,-127,-43,-43,19,-39,121,-103,-125,58,-105,2,90,92,-49,-74,-95,-52,119,81,38,-13,-63,11,112,-2,125,-34,-82,81,13,65,-43,-88,-74,5,17,-112,-41,26,60,-71,58,-93,-92,-75,-65,-24,-49,119,55,-118,-4,125,34,7,97,20,60,-3,105,-44,-111,-96,-73,53,-79,-83,-53,59,33,-20,-3,-89,117,59,98,-104,-43,-48,19,100,60,-125,76,58,-125,94,78,-40,23,-49,46,85,45,-108,-126,-108,-19,-101,-27,-68,-111,-16,-62,-4,123,18,98,-82,110,-81,-41,-120,76,-41,-76,123,21,-55,58,-24,-86,-125,-94,-37,-127,-77,31,108,-2,30,-24,123,116,10,-16,104,-111,-68,80,-113,62,-64,64,-78,-81,127,101,125,-15,-54,87,-48,-108,86,-119,-55,52,122,-118,47,-121,59,-84,-45,54,-97,-72,94,-38,114,-105,8,-53,-61,69,-113,-27,-30,75,-37,13,-51,24,-49,-122,12,97,111,29,68,-111,-35,21,50,-9,-105,-94,90,43,52,-80,0,-100,61,100,-68,-89,103,-52,-105,29,-128,109,-32,52,-88,77,59,6,38,69,-31,-110,-85,102,112,93,-64,-79,-51,-117,70,11,-51,100,102,-120,-48,79,123,-86,-32,5,5,-108,116,111,-34,-47,-90,79,-17,40,-59,-85,95,-69,-9,42,12,-77,54,-75,-3,68,-128,-88,-32,118,-126,19,20,56,118,-84,-30,-87,87,99,-19,-125,-62,-31,123,-19,-56,-83,21,87,1,-38,-96,73,-30,20,22,95,35,45,87,-61,48,10,80,125,122,24,33,27,37,85,-30,-54,-99,-7,-75,68,-63,-28,-22,14,-84,82,-89,-17,-82,-63,123,-76,77,107,89,-46,49,-69,-88,96,48,5,73,122,33,-16,67,-67,-92,-33,87,-68,113,-23,-45,93,69,-128,-8,-39,87,-91,-104,-76,13,71,-17,-20,-128,111,80,-43,55,34,110,85,-128,-111,48,-109,102,-52,-93,-26,-25,-88,90,81,123,88,-119,-54,63,-96,3,-13,-40,-48,-41,-79,-10,86,69,-62,65,105,-116,49,-107,-98,-38,23,-76,120,86,-74,-69,119,19,-58,-13,100,23,-121,-4,-85,-85,-41,93,117,-52,-75,89,119,55,-13,31,98,-51,110,18,-17,4,73,90,106,99,86,74,-80,45,-18,102,74,-83,-119,124,75,-72,-18,-27,93,-9,-77,-65,-33,86,-76,-94,-11,29,63,-69,-106,-115,107,81,9,-117,44,77,-4,-36,-109,-78,-40,-94,-79,15,-59,40,42,117,44,-44,-51,71,124,-65,73,-46,59,-61,59,45,-56,-95,-96,16,10,-28,-94,120,67,-92,86,-86,-43,-7,-95,112,-37,74,55,-21,-75,-112,97,-20,73,52,-53,-59,-120,71,-40,58,91,85,77,49,-15,-82,-86,-39,-67,-122,-91,-118,-30,-36,-7,50,-89,93,30,17,-99,-104,107,-76,8,-37,-14,101,-15,83,92,101,-82,-46,-91,45,-74,-122,-70,-93,-41,-50,-38,120,-17,-106,-118,98,80,-49,-70,-52,13,-29,39,-119,55,62,-43,-82,-40,-89,-59,112,-120,40,8,9,-81,-62,-6,84,-63,80,-2,-82,-17,-47,100,-64,100,5,13,-128,-81,-122,100,87,29,-100,-49,6,53,-103,52,86,4,-41,17,-126,63,16,79,-89,92,-123,120,34,-102,77,90,-65,-62,101,-36,63,-19,-125,113,-18,-120,-85,-50,55,-34,-69,101,-108,-46,106,-31,12,37,21,-53,-64,122,121,-73,109,-74,-74,-110,-122,54,6,31,114,-20,-63,-25,111,69,119,80,-24,-25,87,-11,-113,-76,-103,111,10,2,94,-22,124,-117,90,52,-85,92,15,-76,-24,-74,102,-57,-47,86,-77,67,-110,95,64,-118,-84,-113,-1,-123,5,5,-108,-28,-33,47,20,-126,58,-45,34,-128,57,-44,-23,-124,123,-13,-125,-87,-75,-60,-124,125,-127,-105,-77,63,-103,122,-3,-106,-99,51,4,65,-115,105,-115,98,-36,32,110,-24,-33,84,76,10,29,22,-85,45,-126,-108,30,-56,-121,47,-121,-114,82,-34,-21,-107,-46,60,-78,29,2,-87,109,-68,-25,-84,80,106,-62,-64,-73,-72,42,29,-46,10,-43,76,-12,-121,-5,39,86,73,74,-32,-115,-99,112,-10,-68,-38,-18,103,22,-122,-119,-52,-76,-124,13,127,47,1,-29,26,-108,-17,-86,52,-28,-81,-35,-1,-99,68,94,12,97,-24,-98,70,63,-96,-58,-37,105,-48,-62,107,-113,12,121,42,105,-7,112,86,-18,116,117,82,123,-54,2,-110,76,-118,54,57,82,68,92,22,76,-109,96,-71,-88,56,81,108,-8,76,-98,-104,-80,-116,77,-44,16,1,-103,-127,32,-25,-109,-127,-6,83,123,33,56,38,8,4,89,40,-116,77,-109,28,12,-88,89,-65,-27,-87,22,-37,62,23,68,15,30,-43,-49,-42,-32,-74,-11,104,-24,-78,-20,50,-9,96,-73,90,116,-68,-43,47,2,-84,-115,2,-39,3,-17,-21,-114,-104,38,114,-68,23,-97,-96,-25,68,-39,93,80,-117,-27,-96,-21,23,-50,-109,44,75,38,-8,-16,-99,-110,-29,34,-128,117,-4,53,-77,-110,-35,77,100,-117,-4,-101,-40,108,-86,65,-44,15,-63,-83,80,-50,34,-61,113,18,-29,-31,25,-128,-4,-105,89,120,3,-107,-29,31,-38,26,102,-7,-6,-34,-44,-2,25,-23,-30,108,25,124,100,-48,-46,-60,-71,62,-118,-89,58,-73,96,-128,73,-87,-99,63,-24,124,-86,38,34,-51,27,-71,53,117,99,-7,121,-9,-35,-108,-64,-105,99,-42,-6,72,-22,-19,36,107,-109,90,-27,32,-112,76,106,-81,-63,-57,-29,-11,-24,-118,77,-80,111,-52,48,-37,123,67,-124,-64,-101,34,100,-62,-37,113,-68,122,43,112,-86,-110,64,-33,-17,29,38,-90,107,40,-58,91,23,64,58,-101,94,-22,78,-36,48,-8,-49,28,15,-90,36,103,45,127,-89,-84,-56,-27,103,45,-112,121,104,-13,118,24,-84,-66,122,121,12,-78,-2,22,-59,92,7,116,92,-115,62,-3,-126,-24,113,122,-71,0,-68,-105,59,-62,18,110,-24,13,48,50,8,19,64,-127,74,-46,-86,-99,14,-115,-18,-124,-42,51,-27,-26,-119,-99,97,82,-47,47,117,78,-59,-109,-13,-61,-49,12,-86,-91,47,-64,-71,-79,67,-33,56,6,-33,-29,-76,-16,95,94,-76,-72,45,27,-117,-99,27,-37,47,-58,69,-90,100,107,23,-44,-76,-50,-9,113,20,44,121,-125,100,43,81,45,-66,104,-65,-31,-54,-81,-13,20,-54,-23,-35,37,44,78,61,-102,-106,46,-79,-52,-59,57,-18,28,81,-110,-94,44,83,-43,-51,19,-78,7,80,99,59,-61,100,21,96,100,-55,-108,-90,-41,94,-37,53,14,48,116,-4,111,-9,-32,88,-61,-15,79,36,-55,67,-35,38,13,-82,-61,-61,-70,14,34,30,-99,4,-29,41,-94,14,-58,45,90,-24,-63,54,3,110,113,-18,36,-5,39,82,121,-101,-81,107,-57,-4,-51,114,-77,105,-82,-15,83,-53,44,14,51,-58,-44,106,-79,-21,-106,-47,114,-91,-76,-55,81,-128,94,118,90,2,116,-69,103,14,-62,-35,-32,127,117,77,87,-115,-16,-3,-104,-67,-39,-91,61,-5,-34,-62,102,-123,89,-38,111,-2,92,-29,-2,-66,124,107,98,-74,-93,-58,-65,-103,-38,-23,88,82,99,76,67,56,-62,-121,-17,-80,-77,-4,-45,77,-85,-75,116,7,0,76,71,-104,-70,98,-66,26,44,27,63,-44,-97,-13,37,-7,8,-125,11,100,47,77,112,73,67,68,-96,23,-35,48,-56,-11,29,-78,116,-72,123,39,-21,10,-21,47,18,40,-7,-8,1,-50,18,35,-103,-99,-49,7,-10,84,34,-11,-62,-105,38,-55,-101,-46,-103,-3,44,-90,-78,-71,-103,70,-60,-93,59,48,3,60,11,-112,-44,88,102,52,-77,-90,46,101,47,32,-19,-78,8,-36,-66,60,-71,39,-100,103,127,-95,109,11,87,-71,-106,-118,72,73,119,37,-41,68,-41,38,-84,110,-63,77,112,72,-90,63,125,76,46,95,101,95,8,18,77,2,2,114,99,-88,65,13,48,11,28,99,32,101,-94,84,19,-48,4,5,-26,105,-14,-36,68,-20,-43,8,28,-98,97,-89,-47,102,-67,-41,49,20,50,-118,-121,-74,82,-68,81,102,7,99,-89,85,2,71,9,-104,124,81,-110,17,73,-32,81,-15,7,119,116,-26,-12,39,-43,96,-68,3,-88,-93,-56,-36,66,77,102,-80,1,-44,-81,63,83,-80,29,56,-124,-60,80,96,126,-74,53,-16,-117,6,52,-57,45,20,2,-33,34,27,-16,21,127,76,-105,56,68,6,-26,-21,35,-108,46,10,-58,80,-100,-77,63,-10,111,71,-22,-3,95,104,-90,-38,-11,-104,-31,111,-113,26,-4,-2,-30,-2,58,100,-112,49,-76,101,-40,-106,-45,-126,39,-24,5,-97,-90,-84,-113,-77,-18,41,63,-25,42,16,-85,90,-4,-80,-2,-117,21,-75,-35,28,-118,-20,45,83,88,122,30,-78,-127,54,-13,96,34,9,103,-88,92,120,-59,-87,48,86,116,-36,-38,-65,103,104,-70,-1,90,66,-35,71,-54,-7,-107,-3,-78,-49,-105,-87,82,22,29,-3,-13,23,108,87,-65,-39,78,37,-13,-19,59,6,83,118,85,3,58,5,-113,-23,-47,58,83,25,-85,-80,87,86,84,-75,-111,106,-89,-17,71,32,-81,106,-30,-125,-50,95,-74,-14,-86,-78,102,53,-66,89,95,-35,39,-83,32,-86,-56,103,71,110,-79,-97,-107,-24,29,-19,84,103,87,48,-13,-14,-40,17,-64,-74,21,74,-29,2,53,-84,4,-113,50,66,92,26,5,34,9,-126,109,67,19,116,85,-87,-53,12,-99,87,63,100,-80,-62,85,-99,60,-6,-80,-59,17,-56,-111,-7,-114,21,-13,-110,-115,112,70,-70,-40,-47,64,87,74,59,52,-96,-79,-61,12,32,-119,57,80,27,89,16,-95,-78,23,90,-14,-42,-117,-49,40,-2,-122,-94,-47,101,-47,43,-94,22,96,7,-7,30,78,-110,-19,-66,-86,4,-83,118,-105,83,46,-104,75,88,20,-82,-106,-80,-71,52,121,117,-39,77,3,105,-112,49,54,15,33,61,-48,6,-76,2,-101,-54,8,-50,-36,-105,-55,126,2,76,10,95,44,-85,-53,3,-75,-42,-102,6,-70,-9,88,91,33,84,-18,-28,21,33,-65,-97,-87,73,103,-96,-67,93,39,-58,-49,92,-48,-75,54,61,123,-29,-68,16,-84,-90,14,-84,-100,-37,82,57,-61,84,63,101,9,-97,-124,-31,102,98,-57,-77,26,-110,-16,102,119,80,-38,-54,-35,-45,-115,-114,123,-35,-99,111,-52,10,-99,-112,-16,99,30,-50,109,-66,70,48,-62,-45,37,-25,125,22,19,54,61,116,-52,108,70,120,9,-56,71,-8,-64,-5,-99,-7,65,-60,23,13,79,-63,-79,96,22,89,61,-41,-51,51,88,-61,-12,45,15,-71,-9,51,29,-105,-82,33,13,-29,-73,43,123,33,-86,-90,41,106,10,-124,52,11,114,82,-60,30,-47,-118,-6,117,-33,-5,1,-57,0,-60,27,-17,21,46,-83,-121,98,-59,92,4,-21,-109,-88,75,-40,80,97,-32,9,127,-2,-15,109,17,-55,-53,-94,65,79,64,-29,-24,-123,-121,-109,-99,-43,10,-111,-79,-124,68,-55,-83,-85,103,112,-122,-101,29,0,97,-61,-67,95,10,-86,53,-42,-119,12,-42,-24,20,3,123,87,74,-12,-102,105,-6,85,10,116,24,40,96,-5,-7,19,43,-104,121,32,7,-6,16,91,-70,80,39,62,44,29,-114,68,51,50,-51,17,-120,27,-52,-43,109,49,0,-13,74,26,83,-44,-108,96,99,5,-33,-69,-35,-80,47,-13,-117,-65,-78,110,61,-75,107,88,-100,-55,-64,-73,-29,65,26,-86,77,-54,127,-56,-77,61,65,10,-18,-57,28,2,-63,125,-116,88,12,-112,106,78,-36,4,-98,63,-57,83,-32,40,-19,-72,36,-59,3,10,-114,26,-1,-87,32,-36,13,8,-112,124,-50,-1,-28,-47,63,10,-28,69,-42,-101,15,-89,19,59,-76,115,14,68,-83,68,-2,-19,19,-93,31,61,29,116,121,-80,-84,115,69,75,-22,68,-51,-27,-106,105,-109,-48,-65,54,123,100,-13,-110,-79,103,-28,10,124,91,114,95,13,39,-34,-101,-128,-121,-18,-35,-102,101,-127,74,-107,-100,-19,-84,-56,-33,109,-48,29,-65,-86,-26,-111,-119,113,-35,-95,-24,125,-85,-105,9,-76,2,11,90,22,48,44,-2,76,-11,72,91,-93,79,-28,92,-39,-23,50,-34,91,56,-101,-86,3,-113,53,46,52,-108,25,57,117,-108,-59,105,-127,-108,65,-92,15,-71,-23,114,108,120,-36,77,-23,54,-100,-65,112,118,69,-118,-78,-43,-56,94,-47,30,-49,-111,-17,-109,-105,-41,-25,-80,-38,111,40,11,112,-95,-68,-13,-103,-46,-91,108,32,52,-76,-30,39,-52,-57,-15,-63,-48,-23,-57,27,29,117,-74,-112,20,109,24,4,25,-64,125,-1,-63,-29,-25,-89,83,-3,28,-63,30,47,1,-1,-29,22,24,43,-18,69,19,90,-37,27,-51,69,98,-13,-96,72,61,44,-103,72,74,92,83,98,94,92,79,-26,115,60,-73,-73,-98,34,-90,58,51,-77,-51,67,-124,-50,28,-54,-43,-111,35,-97,-50,22,83,98,29,13,-44,56,65,66,-31,-111,79,124,-28,-72,118,-88,116,-125,-66,-120,78,-79,-42,90,-115,-123,-19,-98,-86,68,40,-91,125,65,91,-111,114,90,5,-68,-52,97,59,64,102,107,1,25,-64,64,-21,29,115,15,-8,74,10,-104,-99,35,-94,20,43,-22,-44,23,-106,104,54,72,49,-12,40,33,-12,-108,-85,-48,-123,-111,-105,-107,-116,54,-25,-17,46,26,32,-31,42,-21,30,20,94,-33,35,-30,33,15,28,40,98,83,-102,-88,11,-8,95,-73,-109,81,77,-44,115,-36,86,43,-16,-98,-72,-33,6,-18,-27,-116,-113,14,-91,-17,28,-64,-1,-58,119,-16,109,-8,-17,108,-58,43,-54,-80,-75,117,-58,-72,-51,4,-33,20,123,-97,-15,41,93,24,-86,-87,-123,-40,2,-111,57,60,11,-45,83,-43,-62,-125,-97,-51,-12,94,-74,-37,-123,-31,2,18,8,37,-1,-105,40,43,40,-63,77,-53,86,-95,-96,120,107,-67,18,38,-70,111,14,-109,98,-72,60,7,-121,-10,-128,36,101,20,126,-72,-29,-11,95,27,-74,-51,-115,18,-101,16,-59,-43,68,38,106,-110,38,-122,-46,-61,77,-110,-23,62,-33,32,-96,38,53,84,-80,34,-115,91,-19,106,35,7,18,-51,88,109,-114,-121,51,-76,-43,-87,-46,15,-55,83,74,-38,-3,43,82,-5,85,-100,-55,127,117,-75,90,92,106,-41,-39,-120,-41,35,5,83,126,62,-105,-33,117,-81,69,110,43,-122,43,100,45,-46,-104,-2,21,75,27,90,-82,80,110,24,-40,113,64,-79,110,97,-121,-14,-128,-60,-30,-91,7,-89,36,85,57,-17,15,11,91,-98,64,38,-96,67,-71,0,44,-8,119,123,38,-122,45,7,-6,-92,-111,-67,27,-95,-126,86,40,46,30,90,-123,105,127,81,-70,4,-123,86,21,-125,-12,-25,-119,42,22,46,78,50,-123,-112,-83,-19,86,-33,-109,104,-28,111,69,-48,61,53,-80,-102,56,105,88,74,6,-49,123,88,60,9,122,-32,94,-60,-80,73,-27,-9,113,34,-66,-93,-117,-35,51,36,45,-95,88,95,4,-22,98,-38,102,119,-40,-115,82,-80,88,77,-97,-49,99,10,-71,-3,-82,-124,-27,25,74,-9,21,-33,77,-43,44,-15,112,100,85,-124,90,-10,83,59,64,-108,-89,-1,77,-14,-74,84,-128,-11,41,74,80,95,-69,3,-86,-111,-26,-34,-54,-37,81,112,-40,-44,32,-83,-55,-62,52,-33,127,106,-69,17,-70,48,-34,0,-92,44,-110,22,113,-51,30,73,30,86,89,-90,-95,69,30,125,54,4,6,3,-80,-76,16,53,-67,-27,-42,-105,-98,-32,-66,-93,126,107,45,-110,19,125,54,121,102,52,-121,119,103,49,-32,90,-115,60,54,-77,-94,59,-119,42,-42,-6,106,-5,-90,-6,-74,-32,-81,113,-103,-69,-126,119,-90,7,24,52,115,-52,-96,59,74,-113,32,69,5,127,-38,-91,126,-126,74,-90,94,50,-39,-117,-22,-102,-106,-98,109,52,122,12,-111,123,-100,-87,35,-54,14,-89,126,-119,88,-107,62,-88,56,95,9,-95,-106,-25,69,84,-67,35,-42,-76,-61,-99,-88,-82,-24,-20,-26,75,109,74,27,-100,-55,-77,72,-6,52,76,96,-100,67,53,5,111,48,-16,38,89,3,-1,-115,59,-19,-16,-34,-61,-94,-115,-16,90,-110,116,65,-121,-117,104,109,-107,-26,-72,123,108,-49,55,36,-100,91,59,-93,-7,40,77,-91,84,80,102,-108,-113,-104,-22,-64,-90,-57,-37,-63,78,33,-95,-78,102,20,-105,94,24,59,-81,-39,120,54,-40,-56,-45,9,-107,-104,74,72,29,-45,91,-18,-106,11,91,-51,62,-87,-109,70,126,-49,-117,119,-89,-117,79,-124,-95,-93,21,108,122,39,18,48,3,-107,30,-99,-19,103,-91,83,-110,41,107,-78,99,-23,58,-99,39,50,-47,89,126,-119,58,123,31,7,23,43,-17,64,65,93,7,-26,-107,50,-11,-63,-24,-39,2,-55,-119,68,6,119,-90,-16,-92,93,111,-79,-89,78,-4,95,-7,-65,32,-100,35,-20,76,114,-126,-69,-13,-127,-43,-11,62,-107,77,10,114,-76,94,85,-97,99,50,-76,-57,-72,-117,86,9,28,124,14,-108,26,19,37,83,38,-125,21,-56,-42,51,-69,-3,-108,51,70,15,33,-125,-36,-122,-34,126,29,25,103,9,66,-126,54,-54,105,-9,-124,59,-105,78,76,3,101,-94,-67,-71,90,-7,62,-77,94,26,49,-14,-112,55,67,92,-26,97,80,-36,-13,106,33,-111,-110,51,-12,118,21,-75,-25,14,75,2,-109,123,-11,98,77,109,-47,6,22,-38,124,-100,61,27,-124,89,-54,-108,-28,123,-99,-24,-77,115,70,105,-32,49,-83,-99,-29,87,-11,79,26,77,-83,-22,-38,-13,-56,-82,10,-66,4,-69,-26,-19,-7,91,-58,35,101,-31,80,-5,-37,53,-73,-126,90,-76,20,-51,-1,55,51,-93,96,-39,-81,-64,-111,65,-47,46,-87,-65,-89,100,-36,-5,-9,-2,81,-37,-97,98,-25,117,-75,79,-81,-118,112,76,-105,120,34,-116,23,-125,-13,77,-73,87,-115,-108,-44,19,-96,-103,89,-56,-60,52,-3,-105,-59,37,-43,124,76,-2,25,57,92,-57,113,-20,22,79,32,122,48,115,-85,-6,-35,-103,9,13,93,-26,-123,-98,109,7,29,4,92,-54,-89,52,-92,74,8,55,13,97,-49,87,-26,-28,-11,14,72,-29,112,-82,12,4,50,-24,63,-112,84,74,122,23,57,-58,-125,20,-85,104,-32,125,126,-86,50,-83,14,-82,107,-124,26,101,-55,-118,-72,-100,-105,102,-111,-76,123,47,103,10,-14,-109,56,-70,104,27,-18,-33,30,41,-56,122,-117,-56,-76,-45,49,41,-34,-45,-35,100,77,-36,-24,0,102,88,123,11,116,47,-1,-9,-3,78,127,-108,33,64,27,-115,30,110,-105,-92,-15,56,21,20,-70,15,47,127,9,-21,122,83,105,117,21,10,-5,31,-91,-126,63,-7,-128,-20,46,106,22,3,-102,96,110,-106,71,-93,-52,112,121,-117,-74,-49,-7,118,121,78,76,-94,93,108,52,-67,-10,-103,54,62,109,5,81,-90,-100,24,109,22,30,-48,-36,-61,-36,119,120,-47,-92,112,-125,-41,-7,-11,-106,50,-23,32,84,-125,79,-36,-6,68,41,-97,-102,-51,-72,114,-105,126,-127,-13,53,-112,-71,38,44,-98,0,93,123,-60,-19,69,108,-68,-106,-68,-53,-55,-21,-37,118,-117,-121,52,-52,88,-36,63,-82,-72,-77,-25,68,115,112,62,-124,-71,122,-68,30,42,110,98,-42,27,22,-112,22,-56,-64,74,72,-92,32,-119,-50,-69,-64,-106,-59,83,9,125,20,49,-65,-128,-33,102,-28,46,97,28,74,-47,-59,-32,-113,-96,33,-54,20,-18,7,107,-61,51,6,104,23,15,-128,123,-92,-12,-75,0,-37,-89,-17,-14,-106,126,-5,-25,57,39,-66,102,82,32,28,97,-78,33,93,125,53,4,-74,-102,121,-51,-126,84,57,34,127,22,97,4,-24,88,-23,-65,-63,89,85,119,-99,97,6,94,-107,-69,18,107,-79,-25,-71,68,14,-16,-75,-21,30,-20,106,98,71,38,105,48,-41,110,-45,-70,68,8,-42,-82,110,29,-32,71,60,-77,-53,-20,6,-94,-90,88,107,28,74,58,-95,-19,26,-63,-73,88,4,21,125,82,-71,16,85,107,-67,-48,119,-17,27,-63,49,102,-78,-20,31,98,125,64,56,-100,23,-82,-89,-65,10,49,-105,-38,18,48,-50,-114,-23,87,71,-84,-28,-101,-65,34,-112,-18,38,-80,-120,-95,90,-79,-27,92,28,8,63,49,30,3,-85,-111,-114,52,-111,-53,42,-118,22,119,35,65,21,-8,3,72,-89,-111,-121,-29,45,-125,53,-122,-24,49,-64,-80,-107,-23,125,-84,-91,-115,102,26,124,-9,-72,67,-57,29,-34,57,15,-2,-14,16,-84,5,-95,115,-97,15,-58,39,2,-24,80,-37,55,-62,-43,24,38,11,-110,-76,54,-58,-109,112,24,-65,6,-127,-94,78,107,-67,21,-23,16,-29,62,48,-53,46,41,-123,-39,51,-82,114,83,14,93,41,-59,69,-23,-17,50,-113,-41,-117,40,-95,2,4,45,23,75,-110,-90,74,-18,77,9,113,97,66,-102,-76,-16,78,2,49,-105,71,-105,94,-43,74,-86,-89,71,126,117,-51,-72,73,-27,-100,116,17,-60,-83,-55,42,-45,-37,91,-100,-75,-51,-11,90,41,102,-99,-108,-8,28,114,-24,-41,127,36,-23,118,-44,8,-41,48,-62,-127,-89,124,3,89,-1,19,38,-64,-128,123,121,14,-99,-79,-19,23,88,-53,-80,-35,119,38,51,84,-104,-50,-103,10,-41,-39,-88,-118,-37,-55,46,-41,123,1,-94,-50,-24,119,-86,-110,93,59,51,-56,71,-48,0,-110,4,-4,-56,-99,-99,-31,29,-21,-65,-23,116,1,93,3,25,-29,95,-1,-109,33,77,21,-116,78,40,-124,14,-114,-50,35,116,-19,-52,112,26,-110,47,-120,72,-36,19,-97,-53,-28,-64,71,4,104,101,-2,44,-26,-102,-4,-18,8,30,-35,6,39,-93,-39,44,-3,-92,16,-87,-38,51,-87,-82,79,17,-20,28,-18,-118,-21,-19,-18,127,-48,19,-43,36,93,42,-46,-34,-70,-121,-51,-128,83,20,-19,120,37,-8,118,58,30,-95,63,-108,-55,-1,-80,78,1,34,37,71,-16,8,20,-55,8,-15,122,107,-125,-21,111,38,75,87,12,-20,-77,115,26,-102,-86,94,-85,-97,-109,29,95,-48,-22,-117,-104,-28,-94,91,-65,51,-79,-51,-90,97,112,3,59,73,16,-119,-88,-21,52,4,-66,-107,85,-114,71,87,-68,116,11,-3,-123,-22,81,-77,-72,108,19,118,-18,-54,21,-35,24,1,76,9,72,-58,-31,-1,-124,-19,121,-47,71,118,-83,-12,54,40,-125,45,23,-121,-46,81,-16,-73,-127,56,-117,-112,-99,-128,-81,51,52,10,27,97,67,112,67,-1,-97,-94,-42,27,91,-28,-9,-82,-112,50,12,108,3,-42,86,22,115,-72,74,3,-17,28,38,79,-29,113,32,-27,-61,-87,-99,119,-53,112,-82,-17,100,-111,80,112,-106,72,94,-124,12,-29,-88,95,54,-107,-123,64,-3,124,-83,-63,120,-91,-46,-117,123,-21,-108,-65,-26,-63,-115,-54,126,81,27,80,-6,-56,71,-91,-22,46,23,-39,26,42,61,74,46,0,-56,28,28,-75,66,-20,45,-72,-86,36,-73,-41,14,115,97,102,20,55,46,-120,-26,-18,-24,-46,99,47,-2,10,-57,24,10,90,43,123,10,-90,112,99,-16,54,-3,107,-72,-84,-125,30,112,127,76,-107,114,-120,49,-117,-9,-109,116,-103,52,-108,-37,-68,-2,-107,24,-110,6,-53,-6,44,13,66,-92,29,34,-57,-41,-49,45,47,99,-15,-11,-104,127,-110,3,68,24,-97,-97,49,89,-9,-1,-53,-6,-18,-36,-18,-108,-97,-118,-104,21,-11,-55,-16,59,-72,-118,-23,87,-79,-118,-49,31,116,-62,40,88,-7,-18,-91,-36,54,28,103,44,-16,-121,-2,-122,17,38,44,91,-70,52,110,29,-53,-88,-102,-101,-91,85,115,-50,33,-24,-66,-43,-14,126,-30,81,34,88,51,-85,-37,123,64,-74,25,-82,-17,124,40,-74,63,14,-41,52,-65,-118,78,24,-15,-91,-115,-89,121,93,-28,49,-28,14,-37,-49,-100,93,-7,98,-99,86,23,-111,114,58,-26,5,22,-20,-51,-29,21,-67,57,39,5,-79,-87,94,26,-36,77,-69,127,114,31,-69,62,-44,127,-26,-84,-119,34,70,-108,53,-125,7,-12,-76,121,-125,-85,-19,-43,-121,34,-59,-4,-54,12,-89,67,-38,15,100,-44,-92,34,-7,38,-19,110,-45,6,-45,17,121,-71,36,-46,-32,53,117,82,36,101,-47,7,-108,-71,-25,117,-112,104,93,115,-116,-90,55,8,-4,109,-83,104,-54,64,14,60,89,6,-70,109,115,27,26,-74,77,48,1,-26,-21,82,-50,-39,-87,-115,-26,-41,11,17,46,-84,102,65,-5,67,24,19,-43,-105,-11,77,-44,-30,20,-11,44,-71,-84,2,98,95,-9,40,-111,-95,112,-96,85,-102,-53,113,-73,68,12,84,75,72,-59,63,-35,-81,-58,0,-67,-13,5,-14,-37,-45,72,-90,89,49,12,120,34,-37,123,-104,113,-75,25,-100,-113,58,-99,11,-58,41,64,-93,43,53,-90,-75,92,122,-39,-26,14,-108,-81,18,-125,33,41,10,53,-74,-77,69,89,65,72,-12,13,40,105,44,-20,-109,-37,-64,-47,36,-98,-62,-38,-56,-112,-53,-96,60,29,58,-84,104,36,-103,37,-93,38,19,107,-120,24,-122,38,35,-8,-4,-65,7,9,-61,-33,48,0,-99,10,-61,104,108,-83,122,14,23,89,104,107,-100,31,-111,-45,-5,16,-6,84,-15,-105,-27,-28,-31,-86,-119,35,-106,-19,-45,-5,38,113,-14,70,-100,118,39,102,59,44,90,-47,59,-28,-94,-85,75,1,-124,-45,-90,36,86,-45,-16,19,122,-57,-111,11,-53,19,-36,-32,79,123,114,-124,-116,67,-110,-3,47,-19,-21,-33,63,-121,14,50,30,-11,-94,-10,-41,65,7,18,13,-3,106,73,116,2,-7,31,-6,113,-15,117,-121,60,68,117,-101,-57,-15,-27,114,36,-27,-34,29,-100,79,19,12,-27,-14,-4,-120,116,-83,124,2,110,-37,67,99,-43,-103,-64,-31,-30,-100,-25,-94,-16,-62,-80,12,-128,-64,-3,0,95,102,-61,-42,51,93,-74,18,70,98,-60,-67,-2,-89,52,-35,0,-80,-70,39,16,-115,69,-115,127,39,65,-4,-67,-43,22,127,-83,59,99,91,-33,115,-86,4,-5,107,-68,-40,-56,20,37,94,31,-62,-100,-85,83,14,-65,-7,106,61,-70,-77,87,104,-59,-23,-108,125,-119,-39,-102,-126,96,6,72,61,-127,88,-57,111,-62,65,68,-32,-78,5,-65,61,46,97,125,-47,16,81,-20,-77,66,44,116,-80,-18,14,-77,-88,60,111,1,93,-64,-55,97,53,26,80,-23,20,-52,73,55,42,-13,-85,-17,-11,-54,-31,-109,-102,64,-87,104,-105,-121,86,67,32,44,72,-84,-67,-62,-54,28,-61,-46,-124,-100,-120,-49,53,-102,-113,-19,-54,-114,-115,127,27,-21,-27,-44,-86,-126,108,110,-120,85,67,-58,-91,-128,-68,10,-64,-65,-33,67,-32,41,-17,45,-121,-78,-114,74,117,26,56,-125,69,-117,43,52,-38,-19,-42,-4,110,95,-89,35,82,-83,54,-37,-39,-24,103,37,-65,-5,120,4,64,-88,69,54,-23,104,-100,-73,-80,-126,77,-18,-15,27,45,1,-40,51,108,-74,-69,121,-45,27,110,-74,43,60,68,-79,-7,-111,-1,-63,-59,0,-90,96,-12,103,58,39,-18,88,-62,-26,-19,-111,51,73,-82,50,-84,-126,-23,-110,11,4,-11,49,-54,-69,-50,-27,65,20,-19,-27,75,-46,-98,-42,-74,53,-23,10,-59,-99,106,-87,-83,-4,-2,95,-12,85,58,-12,-9,88,-2,86,35,-81,5,-120,-87,-9,-40,78,-9,76,-32,-101,80,-98,97,24,-56,25,109,74,99,15,-78,-15,98,-17,-102,-79,69,74,123,94,59,104,-85,-80,-123,-19,84,-124,44,-87,95,-64,-120,105,-27,-71,-92,116,-110,-26,-101,-123,87,11,62,-79,-79,-91,98,9,-36,-112,-113,94,87,-29,108,38,47,116,-110,-6,-11,-118,-67,93,-31,-36,46,-53,117,-24,82,-76,121,7,108,-107,84,-39,-82,75,-31,51,78,-92,-69,61,26,-67,-127,-49,-37,-67,17,78,-47,-31,68,77,116,105,-74,45,42,-59,-109,-89,-10,-26,64,-28,109,114,80,-71,-64,56,-75,16,-50,-20,96,-23,-39,42,-84,46,94,61,-100,-43,-63,35,54,110,37,48,54,9,32,-40,17,-100,33,-33,-103,-90,-86,5,21,45,-75,89,45,-78,-18,-55,-97,23,-15,-5,-108,-41,-102,-9,10,42,-36,-28,-17,-84,-53,-76,117,104,80,-112,-10,87,51,32,96,-87,-15,47,-44,-16,44,-55,-34,-122,-65,89,-59,61,93,-70,-10,-124,-64,-65,-118,64,-88,-100,-68,26,-44,51,-51,-112,53,-38,43,48,-60,-55,-101,116,-42,-89,-59,-47,-41,37,-122,61,109,-97,-94,-99,85,-128,11,120,-32,-71,59,-84,50,-26,-111,118,-10,-74,-105,85,-63,75,-73,96,-122,108,12,-2,122,2,22,-128,-8,15,-50,20,14,-58,-99,-91,62,66,32,19,112,-38,-9,-101,-40,50,68,58,-117,51,94,-18,112,19,88,-47,73,-109,81,67,-49,121,-67,-113,52,-116,-38,-53,18,83,124,34,-116,66,74,-47,-96,-64,76,-125,74,97,36,-53,-30,118,14,-23,97,-10,-87,-54,-103,-22,-122,-6,80,-82,-44,-59,-56,65,-66,-65,-73,-84,82,-66,127,-63,24,-26,38,105,-109,110,62,-17,-51,15,-123,-96,-122,-111,114,-52,122,120,-49,-51,-19,28,-11,-22,-55,77,54,99,-121,30,36,19,-84,-53,59,-118,-127,-18,81,-94,-75,101,106,94,5,35,87,-114,84,-93,112,-55,34,84,82,-100,102,114,38,-66,41,89,-73,-107,-67,16,-119,61,22,119,7,-103,-84,34,-116,20,67,-57,61,-38,-94,-96,-51,-44,54,10,-62,15,108,-68,-123,25,-122,67,-41,1,-77,67,-4,3,-120,8,106,86,-26,71,10,-19,121,52,29,84,52,-27,73,81,9,35,-73,-15,-62,100,-19,93,5,-30,31,-71,-43,-63,10,3,-103,-41,10,-16,94,101,-8,-11,44,105,-113,87,21,-75,30,-79,-44,55,-113,-105,36,42,-100,-128,93,-122,-99,-72,-86,90,-9,-106,29,-58,33,85,45,-49,-115,38,-114,-76,115,-13,43,77,-82,23,-3,117,93,101,-1,-89,-71,-113,123,5,3,-64,36,69,-124,97,65,-109,-62,106,33,81,-46,-40,-33,28,-89,-67,117,29,-110,98,-36,102,47,91,55,-67,-34,57,31,-124,13,99,108,-9,105,99,40,-95,-64,114,-108,-60,-4,-28,-1,-126,-1,121,-80,103,-4,-104,-78,-92,20,120,113,-19,-46,-13,11,-105,110,19,-82,76,-85,89,-103,107,-35,-14,-56,-92,-95,83,10,123,-73,113,-82,-53,-128,-6,44,-64,126,44,-63,67,-25,45,-69,48,-76,47,6,89,115,-17,-100,-92,-106,33,-79,-60,44,74,106,-90,-120,-107,-59,89,33,96,66,70,-104,102,-35,-4,14,101,99,-3,-120,105,122,35,48,-125,7,101,-95,86,-39,-8,90,-112,127,-77,13,-36,27,-83,48,-10,-40,102,97,50,-48,-111,110,45,-72,-4,-86,33,-13,126,95,67,-1,-4,-66,-91,119,67,-32,35,-124,-36,31,25,118,21,-2,-24,126,49,-102,74,100,-127,-15,89,84,-83,-17,-25,-54,35,-123,28,-98,52,-27,75,-45,-116,85,-112,-43,104,51,36,-84,82,-122,35,98,-20,-17,-62,-99,92,92,-26,85,108,-70,-118,-78,-85,-56,-2,-60,-115,54,-77,-8,-28,-57,-81,-16,-57,-92,40,89,-58,-19,-125,-31,-90,44,-117,-88,46,-12,96,-93,112,-67,50,-41,0,81,-26,-128,117,-53,65,-85,54,105,-124,-84,-5,-16,13,101,92,-51,-115,98,109,40,-23,43,-41,-28,-45,-10,18,5,-125,48,-116,111,-54,19,20,33,82,30,-123,55,120,3,79,-32,-55,70,90,-33,60,121,1,-28,77,-64,22,-95,37,-40,83,33,-107,-72,-96,-47,59,-76,117,-34,-13,-81,-38,117,36,-106,93,33,-86,-118,81,-71,-49,-126,-74,-61,66,73,-91,80,-98,-56,-31,60,4,36,-104,24,-53,-106,44,-120,5,90,79,83,-88,34,71,-32,-78,-50,-39,-42,-21,98,60,86,79,6,43,-27,32,-6,57,-54,-98,71,23,-60,22,-126,-86,64,-28,-128,-40,63,53,-31,-124,-98,13,-98,-81,-52,107,-46,71,34,-9,108,-50,9,16,64,93,-6,11,125,2,45,18,15,-15,116,111,109,-47,-107,-17,127,-19,125,-95,97,-79,41,56,44,46,-8,-12,86,36,-56,-92,4,-111,127,76,95,77,75,87,67,91,5,-35,89,43,-80,47,-84,11,0,-33,-44,-73,-104,46,-48,-28,-38,49,105,-30,-95,102,-112,-62,-1,72,-54,-56,49,85,47,41,114,42,-67,-97,9,7,113,-85,-22,58,90,25,118,-111,-62,-47,-81,-5,42,65,-111,89,-126,-46,-22,45,118,25,-29,74,-62,-77,124,-1,123,123,-46,-74,-24,-115,-5,-111,-82,24,-1,109,-70,-13,-1,37,121,-66,-119,-36,19,-61,-62,-6,82,-103,48,94,-24,15,-106,90,13,124,-94,16,83,-38,98,-30,-101,52,105,-13,3,-98,58,111,-61,-16,-32,-47,5,41,28,-126,86,5,22,77,-34,-55,64,100,-104,44,59,121,70,-7,110,-12,-19,68,-124,30,-97,105,17,14,-100,-48,56,26,108,-78,-56,-3,81,58,-14,-73,-83,51,-51,-116,-20,114,55,49,106,-64,-75,24,57,18,-113,74,-86,-14,109,-124,-21,-121,-78,46,-104,62,-39,34,-47,-110,77,-107,-23,43,-82,32,-111,-75,1,33,78,60,56,-6,120,-90,-92,-35,77,11,-42,-81,-123,64,-78,-43,118,52,-62,-96,53,8,70,-64,41,6,80,-20,-104,-124,-101,90,-24,-17,-11,99,105,88,122,-114,67,-122,69,7,56,23,67,61,74,-65,0,-50,-29,21,-76,84,85,-42,-60,103,-102,107,-24,-110,61,-102,102,-27,-81,-110,4,-79,-9,0,58,-38,62,94,-99,-44,64,76,8,-74,-118,-96,102,-40,112,-81,83,-72,97,-9,-102,-126,101,62,-44,-122,-107,25,-35,107,-100,-124,-65,1,109,-102,0,-96,37,-84,26,-67,91,46,83,-23,16,57,-70,75,-14,-123,-72,-102,38,79,-78,25,-121,-112,58,-9,-128,-70,30,-40,-51,122,27,-92,-8,119,-115,-125,71,-40,115,54,104,71,65,120,-95,14,-96,-69,-89,13,-56,2,26,71,-70,87,126,11,-6,94,-31,110,43,97,-22,-83,-93,-79,34,-116,-102,44,43,-54,-65,81,89,51,76,42,-28,18,115,-33,108,-17,88,61,101,-42,27,39,-20,120,-2,-83,26,-100,67,-13,27,-60,-120,-15,-7,59,-39,-53,107,-54,-44,-123,-110,104,-119,122,-90,102,-51,1,-85,30,-75,82,-94,6,39,-92,3,60,-2,2,43,-71,-110,-55,-102,116,116,-128,-85,70,48,93,-83,-127,82,-35,119,109,-107,48,-23,-8,-127,95,81,88,-109,-45,73,46,89,-107,15,-11,-108,-67,66,108,59,-80,25,-64,108,-29,53,72,75,23,-29,-9,7,-30,103,-6,29,-63,57,54,74,-115,-3,116,-54,68,-31,-13,-115,85,120,-69,-79,-44,75,117,-28,-67,121,-46,56,-83,114,-86,11,7,121,119,-49,7,87,-117,-105,21,50,9,65,-122,-13,16,127,100,121,-43,56,45,59,18,-70,-17,43,-40,-19,123,-22,56,35,-16,55,67,-23,-60,12,101,48,68,25,118,103,-85,-7,42,-52,-32,-11,-44,31,71,-72,-15,114,75,112,-37,8,-32,69,-21,-30,-78,106,9,-109,-15,37,-106,65,127,47,115,24,-119,-103,-20,-8,95,90,-7,113,37,-103,-113,87,-79,92,-11,31,-49,-21,-64,89,62,91,-109,65,-2,62,-48,-55,-25,86,29,-81,0,-23,-5,-4,58,65,123,-121,-108,119,-104,117,-68,52,118,75,-19,-64,-126,72,73,-121,-91,42,-104,0,-1,-103,-104,16,-109,-50,-29,-32,109,-9,-19,-105,-103,-50,77,-123,-23,-99,-95,58,-14,-90,-21,-38,24,-74,94,-121,-98,110,95,4,-48,122,-69,21,23,57,-50,76,-112,32,48,-38,116,-62,-54,-57,-39,-32,121,60,-67,-41,-107,31,29,65,122,90,107,-128,126,101,115,76,-109,-59,-58,-52,56,-114,-115,102,19,55,-53,-83,-61,-103,-26,-63,123,113,14,-83,-59,59,-104,3,7,-1,-39,-51,61,25,36,-84,-30,65,69,-66,-75,66,29,9,-128,99,-70,-18,1,-68,-22,-96,41,14,-54,11,-5,62,-115,-87,-40,57,-53,-117,70,-12,32,-123,31,-44,-63,16,-43,-34,126,-82,-115,68,-121,98,-68,4,-80,5,35,35,-53,17,70,34,14,125,-122,80,80,50,113,-39,52,-34,7,89,-87,-118,-25,-94,58,118,-69,-112,55,17,116,53,33,-84,22,-49,55,48,48,-102,78,76,-55,112,101,-75,-55,63,32,98,19,79,95,-13,67,113,15,-22,-123,51,34,114,-10,88,-62,59,88,23,53,109,-42,24,-21,61,25,-34,24,50,24,6,-95,-102,-85,65,127,62,-59,41,55,-67,-99,11,78,61,-108,64,58,-54,21,-119,76,-9,64,23,-48,-82,54,6,52,103,59,123,-35,55,24,35,-68,-56,-39,-74,32,17,-29,-7,37,62,-103,-58,19,-37,-123,28,-53,30,101,46,88,-127,14,72,27,-124,8,94,-56,-90,-97,-80,-17,90,-32,-12,107,92,-110,0,54,-36,-69,37,-95,-74,98,-57,-72,-38,79,-8,-31,77,122,-62,-118,68,-6,90,109,-1,121,114,91,-51,-58,73,13,-110,40,59,-25,-121,-65,31,-87,25,35,-72,-22,52,-60,15,-117,-37,26,-15,-32,99,94,-94,-53,117,-7,-108,10,-82,-55,-58,-28,-6,122,103,121,31,-68,11,-26,60,-66,-97,81,117,65,90,73,-11,102,-56,104,12,-75,20,-116,76,-116,-115,32,74,-46,94,105,53,74,-8,-21,45,-2,-65,108,-5,39,94,62,20,-61,36,-97,10,8,54,-117,61,40,-123,24,-16,63,24,-4,11,28,61,-104,127,-46,-90,114,72,-70,-105,-7,60,-51,-35,-5,71,-113,102,-66,-83,111,52,-128,6,100,114,84,-77,-52,50,-94,-33,56,55,-114,44,91,63,113,-5,127,66,-73,55,68,13,-76,10,-95,94,93,-124,28,-82,-117,37,31,-27,-36,-72,-31,-66,69,56,-8,-123,-102,76,-113,40,18,95,47,76,-90,73,-84,-46,-75,55,25,7,-95,38,-34,72,18,-84,-104,62,-92,-5,-77,-67,85,16,122,63,-31,64,97,-23,-55,-63,11,-90,-105,-80,57,5,-60,10,34,56,-39,-102,-104,-87,-85,23,-96,121,75,32,10,7,61,45,19,-110,106,58,-50,67,49,76,19,81,19,-65,-25,16,-79,80,96,125,107,93,-119,-43,13,15,-76,-127,-29,38,-29,-95,-43,-92,-120,-126,22,-39,-34,-81,-91,43,113,-13,-7,105,94,126,100,-79,77,7,25,-99,113,115,-125,26,2,-5,106,-89,76,-106,-70,-92,-71,-104,48,-16,88,-21,123,82,-58,109,7,-47,-62,-62,121,-75,122,-100,-103,51,86,95,101,-99,115,27,-8,-97,-109,50,-68,-15,64,126,76,-94,-94,87,-13,-45,11,62,-27,35,126,-56,-115,12,39,54,108,-127,-17,-76,-95,61,-98,-10,-14,-65,-52,87,9,45,-66,-110,114,-65,-54,-7,-115,-126,86,32,-21,24,97,-117,-50,-52,49,-106,-116,53,-39,15,112,99,90,111,34,24,-70,16,80,-85,-29,113,-90,-21,69,120,-111,47,73,110,-36,108,21,-117,-72,-63,-15,84,-65,13,-40,-96,57,-15,44,126,-114,51,1,105,40,-20,77,76,44,34,-115,-28,-114,22,-108,-96,110,-128,42,69,87,-68,-96,-57,89,66,-86,-32,43,-14,41,-114,16,106,-27,-22,23,23,16,-57,72,-53,116,9,59,44,20,46,29,77,-42,-17,-119,-66,1,-75,-88,33,-94,107,78,-28,-125,-96,-27,-71,-43,-52,-74,-126,-86,-77,33,37,22,-105,124,-5,80,-124,65,29,14,-23,2,13,102,-11,-86,0,24,76,-18,63,-66,111,5,-15,76,-125,126,-82,-92,43,-3,-59,-126,-99,-46,37,-76,10,-127,-80,21,98,24,-62,-99,62,-51,85,70,43,-112,-97,111,-111,120,-54,-56,-52,-93,-30,53,-107,53,53,21,-104,-97,-30,89,25,-54,-62,54,88,-83,74,109,120,85,15,48,76,76,-74,50,-36,-52,-99,-112,121,54,18,-75,-40,30,-64,-72,110,28,-7,45,-91,-65,115,-67,-20,22,107,14,103,-71,-102,92,-33,33,-72,-4,92,100,110,-70,91,-27,-52,-63,116,64,-124,50,-37,-48,-93,-23,51,56,-77,87,55,61,-37,-23,-96,19,-73,79,119,3,-34,31,65,86,-127,-120,21,-39,-117,-78,-18,109,89,-33,-42,49,5,-28,65,40,52,-99,-27,114,-28,42,36,38,-46,-36,-88,-8,-94,45,116,-120,48,-109,78,-22,-20,50,74,11,-11,-16,-73,-127,45,109,24,28,-113,102,-33,109,111,-70,-40,33,-112,81,19,40,6,9,65,-25,-38,45,122,-57,-69,-65,-28,37,86,42,-113,119,11,60,-114,4,69,125,93,-60,-52,-58,-72,76,-8,93,77,69,107,-42,-84,-28,100,38,41,-119,-115,-114,-80,-111,95,-113,-122,37,-10,-118,-21,-6,-45,87,-30,88,44,54,101,95,-29,122,124,-101,-72,92,28,-74,6,-29,83,-48,67,43,-92,94,-69,-99,20,124,22,13,-76,-104,-46,-74,-83,-61,48,-81,-115,93,7,-85,-125,-81,-37,81,-28,-85,-14,-79,10,74,86,91,65,127,-66,87,-30,24,126,45,114,-32,-7,-25,-9,-45,-113,28,-53,-106,19,53,85,65,91,-67,-107,-106,-103,-31,49,27,59,-52,113,119,90,125,126,-13,90,7,58,-93,78,-124,-59,80,-59,34,105,-49,-100,-119,-126,-86,73,-54,22,-71,88,112,36,60,-9,88,-96,-113,-70,-83,-105,126,36,-9,118,-33,58,-47,-17,29,-86,98,13,-103,-106,79,69,-102,37,-104,-35,97,53,-99,38,72,100,-88,121,112,116,26,-32,-105,-98,97,82,-125,64,81,-81,12,68,-86,-56,-80,5,123,21,48,-122,-99,50,10,-98,94,-30,51,-86,-97,-24,-95,109,-11,61,-1,-24,-103,-125,-28,-101,73,-111,-32,-41,75,117,96,-9,36,68,-34,121,-122,-83,-42,84,41,-116,-101,-29,-51,-104,-32,65,-37,-49,-117,-22,106,110,-20,73,-5,-105,59,-96,-79,-47,-115,-115,-103,83,5,-104,-126,97,94,39,107,1,-105,-91,-103,-70,-92,121,82,89,-85,-103,-5,122,-43,-10,94,-59,-116,-12,72,-73,54,17,-43,71,127,-7,-125,-31,-57,126,56,-96,-37,36,112,-80,-42,26,-118,81,124,59,96,-36,-31,8,-49,-80,83,62,-52,38,-106,122,-112,93,32,-47,-67,56,41,-120,110,43,-44,-31,119,-64,98,54,76,64,-28,122,95,-7,63,-41,-48,-95,76,71,-94,125,-82,-91,59,65,125,20,109,-42,23,78,3,-91,-29,-19,-84,37,-21,59,-80,-84,-50,-77,-46,-42,75,6,-14,-46,-102,-81,-94,-102,-68,91,-26,-85,-61,-43,-128,-84,-55,87,-45,-67,90,-24,91,-20,117,81,-2,124,65,-113,124,54,-116,-106,41,106,-12,55,6,-93,7,31,-44,54,-50,-16,-119,-17,-23,14,88,22,-41,-9,-3,52,78,-33,-61,-16,114,-101,-57,46,-113,-76,112,121,-82,2,-3,-50,117,-74,104,67,64,-45,84,-36,125,30,11,-16,40,-69,83,-80,115,-127,-72,-41,103,-16,71,-33,-38,22,-39,-81,54,72,-73,20,-105,65,61,97,57,-122,23,106,-111,-87,-72,-97,115,89,113,57,38,-67,-25,-29,-93,116,-123,113,-68,-111,92,46,-25,27,-44,-11,79,101,-30,12,-89,-29,82,68,22,-17,-52,71,105,52,85,-112,-72,34,-109,17,86,-55,42,-90,22,67,119,43,-80,-14,51,40,-73,85,-51,102,95,28,-44,82,-28,-74,127,-104,31,58,-27,92,-125,-125,80,47,-47,24,-24,37,-71,123,91,49,102,67,-42,-111,97,41,48,-111,-45,81,-31,72,-64,38,-118,70,-114,-102,42,7,-87,-41,-9,-54,118,-48,121,-105,19,-28,-109,-84,-108,110,-55,-107,122,-74,99,69,100,85,-105,83,-66,-78,-8,-51,-88,-102,40,-5,-9,-110,3,-36,-20,120,-121,-97,-53,-37,-80,-46,-101,85,-61,-46,-22,117,-80,-120,64,-3,120,-46,-117,-121,-122,-53,-9,15,127,-29,11,-32,9,11,-87,86,15,57,-59,100,-90,64,-47,121,-34,-43,52,91,-116,-35,122,117,122,-90,115,-128,112,29,66,-73,39,95,-107,44,124,-31,18,-104,102,59,78,-14,-47,-30,41,-21,26,18,122,-19,43,-66,59,28,105,45,-3,98,-77,60,100,81,-22,8,3,80,105,-87,62,116,-21,83,31,-95,112,-114,-126,-58,8,121,-65,46,-112,-94,79,-128,112,24,99,-114,83,28,-104,89,-18,-121,-10,16,-73,-18,-97,69,-94,-81,-18,108,-86,53,-87,-17,-30,99,-23,54,1,-111,11,-52,-63,112,-55,-125,60,56,70,4,-103,114,89,114,-80,53,-50,49,90,-97,-54,-89,126,-17,110,-99,-30,-9,-71,95,74,63,92,-38,26,111,61,37,53,-76,27,110,-96,101,63,21,-99,121,68,-10,-124,-17,32,-83,-19,-92,-72,-26,-78,108,105,-80,115,60,-10,52,-74,-46,-77,-70,123,109,-77,-48,57,-54,-30,-37,22,-90,66,-41,112,-125,-1,89,120,-93,68,-103,-97,1,7,94,116,-108,39,-102,-7,-113,79,-90,56,-76,-8,38,27,123,-40,-111,87,-47,105,114,77,-9,-69,54,-109,34,-25,85,-65,-16,106,-94,-75,-103,87,12,-123,101,-41,-3,-1,-7,48,-46,56,-1,92,-18,-4,120,-46,110,96,81,21,92,-37,-54,36,121,-18,86,-55,118,101,87,55,49,79,-96,-28,19,56,71,-27,-127,110,104,107,30,65,-128,-107,110,-20,-57,112,-103,-41,88,12,113,117,-5,46,33,-20,-115,-113,-106,-19,101,-120,5,-125,-89,-107,-33,-116,-69,107,-85,-101,-39,44,31,-69,108,-124,-2,67,15,37,32,41,0,-20,78,59,79,-8,-80,-50,-82,-115,-6,12,1,-30,-85,-90,7,-61,96,-81,99,97,51,123,-107,-68,-102,127,-82,58,23,11,42,62,-82,-51,-59,-40,73,76,0,66,-42,103,-104,59,25,-48,-25,-99,55,-9,43,123,82,-108,53,-32,-20,-4,-36,39,23,-48,100,-1,-114,20,-108,74,114,-12,83,111,-77,89,-14,-37,74,6,126,-52,29,109,62,110,-108,38,-32,55,36,-92,-16,88,60,-84,0,-3,96,-50,36,3,-111,92,-3,-13,-23,19,-122,-32,-35,43,-48,52,5,62,78,27,-86,-59,-114,-19,60,-111,-75,0,-120,122,125,77,-128,-124,11,-112,29,74,18,15,43,82,58,63,-69,-26,-90,63,125,25,122,39,48,-64,-103,-107,41,-105,-122,84,46,-95,-57,39,36,76,-3,19,-21,-57,-56,-47,34,-30,-41,-128,-47,-10,66,118,37,119,48,76,97,95,-119,-71,17,66,-128,47,96,15,83,-48,117,-22,-43,-68,-44,-128,102,17,-16,62,-34,85,79,80,-11,-2,123,-123,-68,-36,126,98,-5,99,-56,71,76,23,45,69,38,28,-9,-96,-80,-107,-9,-87,1,53,69,-10,-69,-74,-107,-38,83,-7,-46,105,-117,-30,49,-126,-29,-55,35,56,-18,-4,95,119,-9,-114,9,29,-32,-19,-55,-123,72,-30,-17,-56,-117,121,-92,-18,-11,67,-71,33,28,-9,92,48,-100,-7,-120,-18,-37,16,-105,-18,106,98,124,45,-45,46,90,-39,-120,-67,120,125,88,-12,125,-42,114,-84,-8,-63,-17,-109,41,80,-57,19,82,9,-87,-4,-58,-52,-60,-76,20,41,43,126,-19,-110,-26,32,-107,126,8,-74,29,108,59,28,71,-39,-12,100,-82,89,118,97,-96,-77,-41,31,4,-119,-38,85,-23,7,116,53,-115,-35,117,-67,-122,75,109,18,50,115,99,97,-72,-94,-48,-22,-122,-21,-22,81,47,108,51,-68,-115,109,7,91,-56,11,-6,12,-15,-62,2,26,-100,52,111,5,60,-52,82,110,93,-116,-31,-62,-2,83,113,10,20,-82,-58,-78,0,52,-108,-67,121,20,-18,79,90,79,94,35,88,68,92,20,46,67,79,-21,-23,27,68,-50,-9,-16,-113,-76,30,-35,-86,-10,17,-102,-88,-89,-112,-99,-67,-123,-108,84,110,-9,-92,-57,73,31,-107,98,60,111,-82,-127,88,45,64,116,-125,29,-115,-33,-81,-127,-121,109,112,126,126,-76,37,56,39,-45,-35,-53,69,-74,94,58,62,35,-120,-17,9,29,-92,-66,-110,-71,-96,-52,-25,-55,-98,23,102,115,-84,-115,3,29,83,61,27,-40,38,-8,-102,95,-83,-115,96,-2,-90,74,0,-13,-39,98,-119,117,-78,-87,36,98,-30,-96,-110,-122,-105,0,-113,-23,-115,86,31,-86,21,-91,54,15,-29,112,120,-128,18,-35,-67,15,77,33,115,-18,74,-51,126,99,-6,46,37,-13,-33,-47,92,-88,-108,-43,-25,-74,59,-67,-89,9,8,92,-126,-82,22,88,-51,-48,41,-111,-55,103,-36,-41,29,-11,-6,30,67,25,-109,-47,-43,-120,-15,-40,-69,-120,19,-113,-61,78,-21,-121,-127,125,30,-20,95,16,122,10,111,-37,107,-77,43,-97,-98,106,-121,-86,-94,-104,-39,86,10,-44,99,-14,37,-52,113,-37,-49,-44,10,-61,-55,2,-107,36,78,52,115,76,83,54,125,86,20,97,36,55,18,-114,-49,83,-48,-23,-90,83,69,-73,57,-128,-85,-16,-11,49,84,-15,9,83,4,-60,100,126,-41,-81,80,-16,114,-2,-92,60,28,77,118,102,45,86,50,79,29,1,81,126,53,15,79,-110,-113,-87,-55,-95,-46,75,-29,-56,88,-90,-17,-4,-24,-57,4,-101,-38,-86,54,-80,26,70,-97,-112,-53,-57,-58,-97,-38,2,-30,30,-53,60,102,-113,-78,9,39,-9,28,-37,69,-11,98,-78,11,-9,-38,54,-27,65,-86,101,-82,102,-36,-66,-55,-123,-1,107,94,41,-103,-47,-21,26,-40,-57,43,127,127,121,124,-126,-104,105,-121,-39,9,-107,121,125,-67,-79,64,-77,88,-47,-96,-78,27,-19,41,-57,36,39,-54,101,46,-27,-48,-95,-60,27,77,-26,-23,-52,122,-101,101,-96,44,-48,-7,-109,23,53,65,17,-119,52,-15,110,-49,-124,-17,62,-122,-91,95,-56,-100,-81,77,-10,30,-124,34,79,-9,117,85,-70,3,-64,24,-29,-78,-106,97,46,-16,35,54,-44,117,52,-29,54,68,-120,-11,111,81,0,-123,-4,-42,5,-69,34,51,-113,-116,-108,-91,34,126,-56,126,74,-20,-98,20,75,87,-63,-123,-85,6,-70,8,72,-60,-25,-78,19,62,-32,13,6,-48,-83,20,-20,70,-30,-114,48,-107,-60,99,-10,101,-50,7,116,-33,15,-73,41,27,-82,-117,-56,-25,10,9,85,108,44,20,-69,92,28,-61,116,-55,1,-25,31,75,-68,-21,21,-3,22,41,-111,-22,25,25,12,-32,-10,84,41,-3,-11,96,-83,85,-33,-59,74,107,-80,-40,-102,123,-28,18,-93,115,-66,117,-128,-88,-10,-99,101,58,-3,-51,-47,40,4,-36,50,28,-57,-126,-91,100,44,-47,36,-124,117,-46,-47,109,-65,112,-43,51,-48,-116,51,-113,-106,71,115,-123,-111,-82,-18,-126,10,94,98,-39,-50,-60,-58,-14,43,-124,18,25,98,-99,86,77,35,-85,-58,-127,10,-23,79,60,119,28,3,-11,-44,7,-70,108,115,-122,58,66,-96,55,76,-2,-1,15,98,-121,84,-120,94,121,-80,-58,84,110,92,107,-125,-61,75,-4,-94,-52,-7,3,84,96,12,-48,-16,-25,-36,6,-91,70,-80,-22,91,61,-82,-77,83,111,-47,22,-82,65,28,119,63,-71,94,-53,-74,-119,57,-103,-81,12,-26,-73,-113,124,100,-91,-102,-90,24,113,11,3,-18,-4,-50,-73,72,-2,-16,121,94,-70,106,-62,-105,-50,4,-46,-34,-52,-31,-15,-89,62,-11,-78,43,-36,-104,-118,-68,87,-106,-2,-86,112,-51,3,-24,120,-78,-20,14,44,-58,103,-70,-15,10,93,9,15,-66,-75,74,-106,-117,-65,-8,16,-10,-31,107,-114,125,-44,-84,-75,26,-97,2,12,-27,-117,80,45,-115,-29,8,97,-74,108,75,-60,17,-119,1,-14,10,-14,-18,81,-81,11,8,29,-110,122,122,-24,-35,-120,113,-78,86,27,-31,87,-89,76,9,-114,-29,-75,-43,-12,-70,-118,-94,-1,70,62,-56,34,-32,-99,-126,-15,97,-38,-86,88,-37,20,94,119,103,64,41,-44,-66,-78,33,22,-67,120,-109,84,-106,-62,-34,12,104,36,-88,21,-35,52,-78,74,37,6,121,70,-78,-109,26,8,-18,42,102,-104,22,25,87,120,-8,125,-90,-82,127,-100,1,6,102,-72,78,-42,-100,-59,-87,-125,-13,-86,34,43,-12,-109,-61,13,36,87,-108,29,33,24,-124,-36,-114,34,-88,114,-41,21,-115,-71,-3,-108,36,-31,19,57,-95,97,-114,46,-121,-102,114,77,76,82,79,11,124,-82,-124,-50,31,92,113,-100,-102,27,-88,122,4,-87,7,102,118,30,-98,-84,72,-73,24,-112,-97,-125,-29,58,-101,52,48,82,111,78,71,88,-40,-58,-28,11,-94,125,-6,12,-18,50,-62,78,-18,-62,102,29,127,80,-31,-126,7,114,-25,-100,-116,120,-75,69,25,26,124,-23,-68,-15,-79,-5,-14,108,4,11,-69,-41,75,59,-72,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58}\n\n#define IP4_WEIGHT {18,-44,-120,40,104,61,29,-56,-12,78,-75,-19,-34,92,-80,21,60,107,62,11,58,94,-6,-32,-92,-118,106,-105,-104,47,-20,24,43,-116,-108,0,53,-50,-5,-26,43,48,-80,-73,-86,-38,115,111,78,-101,94,-20,94,-61,100,-111,76,-55,13,-81,39,118,70,94,-125,71,54,60,-70,-14,-121,51,63,-121,-121,107,-69,-74,-106,-38,-61,110,60,-28,-43,-116,83,62,26,103,-125,88,94,111,120,-39,-79,-85,-45,-90,121,-121,-97,109,112,34,-97,12,-93,97,90,-45,-59,-105,28,-10,0,-122,-87,-62,-100,-21,35,-115,-26,-37,6,108,-15,118,-41,97,-26,-74,94,34,26,-84,-65,86,1,73,67,59,-99,-67,115,-43,-26,-21,-21,37,106,-80,109,-107,-71,-20,64,-2,-20,115,83,-49,53,-102,-46,121,-75,108,-106,-59,35,45,-102,-41,51,22,25,122,-58,-116,-7,-2,-55,19,-126,-76,-103,80,-34,110,15,82,-73,93,15,-52,117,62,-46,-16,62,67,-19,-39,-27,-12,-89,-100,-37,-41,59,-127,111,99,-15,-57,-79,-43,20,52,-31,13,-12,99,-30,-69,-31,124,-36,-89,43,-1,120,-79,43,-15,-19,89,46,54,113,24,49,85,-17,-119,116,-46,11,-59,94,67,119,110,-57,-1,113,-94,32,-38,110,-14,-81,77,-53,111,118,-13,-19,-53,4,-20,18,108,121,-97,30,-121,117,-35,-31,54,24,119,-74,16,101,3,125,-59,-12,14,52,-65,65,107,60,17,-38,-53,21,-118,76,-112,-53,-108,-38,26,-58,19,91,106,-63,95,98,-4,63,111,-74,37,-47,60,-115,-44,29,-57,73,63,-51,9,-84,22,22,81,-87,-65,-126,7,-93,110,-127,-70,-27,-63,-12,-118,63,-26,-113,45,107,-69,79,111,56,55,-2,108,103,-48,113,120,25,-55,43,-122,-41,40,124,63,88,-78,29,24,93,44,122,-67,107,-34,14,-69,-72,108,93,-37,116,90,-24,-76,67,26,-103,127,88,-48,115,-80,-97,96,62,-1,-22,-123,-65,10,-61,-54,-17,21,-14,-49,116,113,10,88,124,-112,-119,89,88,119,30,-24,-119,-115,-95,58,57,68,-17,-27,-60,59,-64,-26,-127,-35,31,-9,4,-89,18,109,8,-90,88,22,18,45,-123,88,-80,-66,-76,109,25,47,-51,-90,75,-24,-109,-42,19,-72,-8,78,2,-84,-47,68,33,94,-98,-122,-109,82,102,55,66,-23,19,76,40,106,71,-121,-42,-2,76,93,3,123,-111,83,117,-52,8,105,121,2,-4,-18,-4,-19,-125,80,36,29,25,123,-72,-41,38,83,105,-71,-64,47,-127,-82,31,-43,-99,101,73,91,-51,60,3,9,-27,77,124,-3,-96,15,74,35,-29,2,116,-4,75,38,54,-119,8,93,53,46,-18,49,40,-30,-111,-62,97,-8,-96,82,30,22,21,97,97,-35,-12,28,-118,-12,95,40,-16,110,29,-58,87,29,58,41,46,8,105,-108,-29,36,84,-87,-118,-124,53,125,-117,106,-83,21,11,60,-31,-5,114,93,96,-112,-127,49,-126,69,-75,-41,64,60,-98,31,2,-73,94,-100,-44,91,-115,94,12,75,-23,81,46,-89,-116,-25,-47,107,-77,-10,62,-69,-70,75,-41,53,-82,79,104,-7,-106,-1,73,-32,74,-113,-91,-47,-115,66,-96,121,26,111,7,51,-55,20,126,-75,63,-23,14,16,-124,-39,-48,-84,81,14,-27,-56,-41,-13,-43,120,33,98,31,-50,-6,15,-107,-33,41,26,-9,121,18,8,-106,-46,64,127,60,39,-59,-30,-5,-119,-19,-104,-79,-38,86,-121,85,-17,21,44,49,-73,89,73,91,-36,-120,-22,26,-69,-17,-102,-71,103,63,125,105,15,103,-20,-122,-62,-8,61,-116,-78,-116,11,-80,-80,-58,-119,87,-15,99,-111,-87,-84,65,-47,-38,-44,-26,69,-14,-37,-27,-90,-97,29,-4,38,52,-87,109,-72,-50,61,-110,82,-44,8,63,92,-70,-10,-124,69,15,80,83,109,111,25,-47,-110,104,66,32,-16,104,-31,-52,-41,18,102,-70,-49,22,-109,-16,122,62,125,-123,121,-61,-2,92,-90,-81,109,74,5,98,-125,-92,72,101,-120,60,10,-13,80,94,-25,45,-43,58,53,-80,-13,38,-56,-77,-44,-37,46,76,1,-103,-93,74,63,-62,38,-82,73,-124,48,67,-59,-26,116,109,75,70,-30,25,85,76,66,25,-18,-113,106,25,-83,81,-50,-104,-44,-53,-68,124,112,78,99,96,-126,-125,44,33,-75,-29,-60,-6,-26,-84,-61,118,-4,-9,-126,-46,-57,-119,-127,105,21,-120,-121,-33,105,-70,-124,-108,-111,54,-35,-30,57,-101,-79,-48,-65,-108,77,22,44,111,68,-91,-111,41,112,110,56,118,0,-49,62,-54,83,52,-94,38,-14,105,27,78,66,14,106,102,41,24,53,-40,60,59,-124,56,68,-119,102,-70,-119,-101,-25,-95,69,-45,-55,-38,57,-122,106,-96,122,33,-5,61,104,77,122,88,99,126,-74,46,-52,-3,-38,-101,74,-30,96,116,-51,-21,68,74,2,17,71,-124,47,-35,107,-23,64,24,49,41,-50,-23,88,19,-30,10,-96,3,-14,100,-116,55,-91,84,100,-54,125,67,-40,-124,53,10,-126,45,21,-84,13,2,-62,-47,54,72,82,-50,-2,-66,103,-61,-20,-17,59,54,-110,-1,96,-70,-57,123,-111,-94,-125,3,14,37,123,-86,-44,-9,109,-101,-128,113,-104,80,-94,-87,111,120,-7,3,-49,-51,49,-32,40,33,-62,18,-94,-57,-71,-92,-52,3,105,-86,-104,123,1,-93,-73,52,108,38,52,40,2,-44,-62,91,5,-48,114,-61,-40,-128,-93,-88,-91,-115,62,-24,-30,-85,-43,104,102,49,10,-52,25,-52,-94,-20,-103,-25,84,-56,-103,51,-110,26,1,-82,-102,32,126,-108,78,-108,30,86,-17,-23,-112,-32,32,80,-112,-86,-115,8,24,9,-121,-125,91,-73,14,-69,-95,-2,101,-109,1,-49,-110,84,25,24,66,-72,54,108,4,-36,95,126,-63,56,99,-103,-35,-80,5,3,-61,-8,-10,-10,78,-73,72,42,-83,-115,84,97,-66,20,-66,-46,-57,-99,78,-120,120,30,-88,-29,118,15,-110,-52,-92,25,113,-30,92,-94,-29,90,105,89,-110,48,-44,-1,-96,-1,64,115,-3,57,24,-39,118,-2,81,37,15,-47,-14,89,48,-69,-32,-95,-114,-77,33,-103,-127,-82,-9,-100,14,-38,-76,-63,51,59,-31,-8,-75,-37,76,-32,69,101,40,26,80,-23,-110,-23,-84,-67,4,-31,122,65,101,-83,111,-112,-123,124,-56,67,12,-23,-43,-47,55,-87,66,19,21,-12,54,-105,100,35,-89,-80,-76,-85,-61,-9,33,107,42,120,-49,-117,19,-80,-65,-71,86,106,77,-34,-50,108,42,21,65,69,127,-38,-27,-77,120,-28,97,24,-20,89,-66,-63,-17,-110,43,-43,-117,112,-126,28,36,103,0,-68,115,-69,107,-99,53,94,9,-105,-27,70,2,47,80,95,-83,28,119,59,95,16,17,-16,15,-6,4,82,-94,-89,64,-49,-122,88,21,47,50,-21,29,121,-47,-83,-113,-78,-25,-101,9,-36,72,28,-68,23,-67,-98,-24,-101,-98,-28,-89,115,-101,-89,82,102,-124,40,125,23,97,-113,-58,-7,-90,28,35,83,-53,-26,-119,-108,-83,97,-74,6,-40,101,8,11,79,117,-65,-15,-10,-72,-99,-98,101,80,127,95,60,-116,79,2,60,-62,104,15,-29,46,-79,-92,-118,-43,73,107,-43,67,-73,-67,44,74,-111,117,-127,-98,26,113,-41,59,79,45,-60,-30,114,18,54,-124,-52,21,-26,10,-82,-72,-70,-126,-97,108,-19,-52,10,120,-111,102,18,99,49,-128,-17,91,83,-72,-19,-3,45,-104,14,-46,-76,3,112,-41,47,122,-77,-35,121,44,-45,-123,-60,-58,43,-23,41,84,69,-2,50,-69,-98,-11,112,-11,98,-36,67,-33,51,-17,-95,-45,-126,-69,-52,81,101,-38,68,75,-109,-78,107,0,45,67,-37,-100,-55,12,105,11,-24,3,-70,-16,-97,-63,52,97,46,54,77,-22,35,125,93,58,-61,66,-61,-79,-58,-43,-45,-49,-63,-98,12,41,54,-63,-36,48,-33,-110,-36,-76,-48,73,-33,-87,-81,-49,93,-6,4,-78,50,-88,-30,-33,10,30,102,-94,38,97,73,-109,104,6,37,94,-124,56,-106,-18,70,63,10,-31,-90,-113,-116,84,4,50,-18,-27,54,125,-86,-119,33,-127,0,-128,-77,-65,-63,64,26,-79,60,-25,76,5,-5,101,69,59,26,67,121,-26,-79,-91,-49,-87,66,71,-22,7,-73,-51,-114,-18,-72,40,-87,-55,69,0,-22,-23,-96,-115,29,-119,68,-102,124,120,-6,74,5,-111,-85,-99,16,-28,-92,-34,87,-42,-36,123,-52,59,103,-77,43,-80,0,-86,83,-81,96,-15,124,41,-62,-22,77,43,4,71,104,-62,-98,-13,-99,107,80,-121,72,54,-63,-13,10,78,-108,-95,-90,122,88,-92,-119,95,-117,-76,76,-115,52,-10,122,-108,-13,101,12,36,63,26,39,36,-72,-80,107,82,119,-57,-7,-118,-91,-55,-54,11,-30,-44,77,-93,58,-25,102,11,80,-62,111,-33,29,105,-63,-98,51,-77,3,-6,52,39,-50,-80,-5,-50,93,-103,-123,-77,79,-58,-101,-122,116,-20,-16,-45,110,93,-11,57,44,3,107,-118,32,126,-90,24,-60,-25,60,64,80,124,-22,-95,-57,-47,15,-46,-28,26,42,-91,83,74,42,1,78,113,-76,14,33,16,-16,37,89,108,74,20,-93,23,60,107,-22,-117,111,52,-97,-15,86,-127,9,-17,28,78,53,-17,5,123,-78,-120,-76,69,-76,-98,-42,-64,-17,-99,-113,13,120,126,-88,-35,20,10,44,84,-35,74,12,81,99,55,31,115,18,-125,110,2,-82,-110,-94,23,-4,110,84,-122,40,-3,-75,62,-62,34,2,-120,42,-24,-10,124,-46,111,-99,-11,57,126,41,-38,-14,6,27,109,27,72,-29,106,96,82,-69,60,42,92,127,-24,96,53,15,-18,-104,-79,-70,-102,102,-36,-84,32,-119,2,-77,-53,79,7,-24,84,115,103,54,60,-7,19,-49,-7,114,-7,89,1,-64,80,107,-22,-5,-2,-63,-26,-51,-108,9,-111,17,-40,-51,58,108,-55,-68,-117,-51,13,4,-17,-33,-110,-95,99,-117,-23,-71,46,69,4,119,103,31,-117,6,76,-36,106,-124,-30,23,76,80,39,6,18,-3,78,3,-118,-52,23,-100,69,-91,112,40,-16,18,-55,75,-77,126,-87,103,-23,50,7,106,-16,126,41,-127,72,75,105,77,-19,112,67,-102,-69,0,53,-72,-95,53,-4,-56,30,47,38,-60,100,-127,-16,-16,-97,-15,46,90,23,45,-18,29,-111,-38,73,-112,44,115,-93,-32,-104,97,86,69,64,61,-68,-10,-112,60,19,32,87,69,55,-4,123,-105,-28,-82,-1,80,-92,-77,52,-38,76,56,81,-40,-14,115,3,-14,-59,-115,-39,-124,-78,32,69,5,-123,50,70,34,61,-57,-108,-22,127,-13,81,35,-35,34,68,-125,-120,109,89,-21,88,107,-114,99,110,-19,-54,90,87,-32,-81,115,-27,-82,-92,65,-126,64,-94,-90,36,-93,-45,-121,26,-114,-111,118,70,10,-3,106,80,-101,47,125,-12,39,88,-81,10,-25,43,33,-72,114,-109,10,98,-98,-115,-88,96,-43,-80,91,28,105,-122,85,123,-58,26,-26,103,-121,20,-62,101,-88,-113,-36,-88,-66,-58,-46,87,125,-100,93,79,-108,103,-19,-45,-19,29,40,33,49,-48,-15,0,70,122,121,118,86,6,49,111,-26,-67,-28,102,-83,86,50,-86,-124,-104,-28,35,42,126,-128,-87,-70,-109,-94,52,-25,123,-3,-6,18,-49,-120,-62,-89,-37,99,94,109,-85,100,62,-107,-126,-116,110,10,113,-19,-52,-101,84,-44,93,96,-110,-26,65,-45,28,5,-49,-78,-48,62,127,-53,120,-96,67,127,34,91,49,57,-67,107,-85,60,-60,-6,-80,-77,96,127,50,-52,-34,-52,-8,-119,-60,-76,89,-64,-1,34,-25,99,-47,45,-46,-47,3,-85,100,-94,-14,59,12,47,-74,-49,103,-6,-29,6,-25,-2,-23,91,-79,-1,-11,108,0,-44,-48,56,75,-71,-29,-35,-100,-100,54,-62,-77,-46,-56,-3,-98,90,-126,124,1,-26,75,104,101,-113,68,-127,-88,4,39,-106,95,-67,127,-15,-36,23,-71,52,-118,-67,9,10,-12,-51,-77,104,-22,-39,-106,53,34,-67,-35,-38,84,87,-124,41,-98,-74,-103,-125,95,38,-31,3,-89,-107,-106,-24,-90,-58,18,14,-41,-9,-86,-93,-39,83,23,36,-56,75,-119,80,10,109,45,57,-36,-123,113,-68,7,13,35,32,-17,28,118,-119,52,-37,-102,-18,-1,-98,48,-69,6,-97,37,-4,-59,15,40,3,101,91,-31,5,-9,105,-9,-33,-31,-71,46,-99,-71,70,-77,-38,-7,-112,73,42,-2,98,53,48,-1,76,-117,58,-62,117,-127,-66,-120,-33,33,2,-35,67,-100,-117,-82,115,76,15,33,-125,-5,49,91,-111,84,27,24,-89,-87,-72,-35,-49,100,74,65,-71,52,-67,-128,114,41,-63,82,127,0,8,117,5,126,-108,87,8,20,-76,-102,123,71,-73,-37,36,104,-71,-50,-56,41,-26,-62,-105,31,70,18,8,16,-122,-52,-127,11,-100,-109,-35,-86,40,29,-78,-58,-84,117,88,102,18,-45,115,-54,32,-36,51,-66,20,107,38,-119,26,56,52,-77,65,126,78,-113,85,-92,-35,-70,-41,-47,43,-72,-79,-67,-24,-66,-7,-9,62,-77,56,75,67,98,-47,43,-78,-116,-2,49,65,53,20,102,113,-4,-12,-36,8,103,51,-79,-37,-90,49,50,-118,62,107,-120,4,79,-17,61,36,61,96,-117,123,1,51,-15,17,11,-108,39,-87,53,36,-19,-69,126,-72,-91,-90,123,-27,-51,-40,79,-61,127,-62,41,11,14,-67,32,-109,-70,47,38,-1,76,-17,-120,61,-104,73,31,-37,35,-26,106,-83,-53,18,-18,18,-21,59,93,-31,-85,75,-127,19,66,10,4,-62,45,-109,13,44,-74,-25,13,-47,18,30,-59,-96,19,-113,68,46,-5,91,-110,-115,-18,65,-90,25,-75,-21,1,-88,-91,13,93,-61,24,85,28,-17,55,86,27,-14,-60,108,-110,-18,68,113,-64,64,58,52,0,32,70,-52,-97,-100,-9,111,43,-88,13,0,-112,34,-104,108,-125,-9,-32,110,65,-64,92,66,106,113,-116,-35,3,121,-91,13,-75,-44,91,-88,37,-84,-16,-117,-1,-49,13,81,21,33,113,15,-83,27,-77,46,-17,-19,-115,-37,-95,28,83,22,-56,106,66,-57,63,125,53,-23,69,49,-25,-15,-120,106,-86,40,-107,-76,-96,43,101,98,55,4,-116,-89,-26,60,51,-21,106,53,2,86,83,-119,47,42,-49,110,-5,-50,27,36,-75,52,-59,-71,124,28,60,6,63,52,63,-67,16,14,83,65,-58,23,30,49,-27,-66,-26,-39,-88,-46,-81,-123,-61,-18,42,60,-22,-61,-60,66,92,-83,111,100,-72,116,65,-100,103,111,116,50,-5,111,72,101,-88,18,-65,8,-78,87,39,54,113,-70,-44,-128,-70,29,112,63,-52,-48,12,-27,95,93,-31,9,55,-70,-109,-42,-71,122,-46,-115,-58,21,-27,125,9,-82,53,-22,-50,-71,125,50,-6,45,50,-14,-72,95,51,-74,104,-86,57,65,-39,6,-10,-76,-23,103,127,17,-95,10,21,-52,87,24,-128,-36,95,95,21,-96,-14,-44,-8,74,-119,-123,61,-24,-102,107,0,126,83,51,27,-17,43,-95,24,79,-106,115,-64,124,8,-75,-96,118,-84,69,3,122,-97,122,96,-106,14,65,-118,-64,-82,51,-29,-78,-80,121,-66,74,-82,106,82,77,-28,78,-119,121,56,-45,-120,96,-116,-70,-13,41,-109,-91,-55,-49,-31,27,90,-77,-36,97,-78,91,95,-91,-116,-17,-42,111,112,-51,68,53,-21,87,64,106,-82,62,92,-68,-38,-25,-77,-109,-121,5,75,-108,-55,-38,-14,-87,74,-96,-62,12,-97,-91,126,-71,24,-45,97,-19,93,42,-10,-97,-5,79,6,-80,77,-111,-78,18,42,-61,-99,-40,39,-69,64,77,-123,-30,82,127,-39,66,-17,96,-82,-117,56,83,46,46,27,10,-70,77,16,22,114,24,-88,16,118,116,66,-70,114,-89,80,-25,-84,19,111,70,-86,10,-20,-114,80,-95,-15,-77,-88,-1,-121,26,-82,95,-104,-120,-7,123,-20,46,69,59,-76,-41,97,68,100,75,-12,24,-23,79,82,-115,81,-125,-69,-100,-46,-112,-3,44,-108,-121,-55,95,-48,-22,-10,-60,53,48,22,89,16,77,-40,112,-54,-110,79,-99,-51,94,59,-50,31,-55,34,60,64,-5,-103,-10,-58,-10,-115,84,23,112,96,75,87,-79,-106,55,71,-92,85,4,-76,53,-77,-33,-8,63,118,-84,24,98,107,88,-22,-88,-60,99,-41,-36,46,-89,34,-23,78,56,38,-66,-14,123,-80,-6,84,52,-56,67,60,-20,117,115,121,-126,-101,29,-8,22,-108,125,39,-77,55,-31,89,29,123,-46,6,-88,40,26,25,65,15,77,103,-35,-39,62,-58,-118,-25,-50,117,79,-26,-10,64,94,-19,24,44,-79,-67,-114,-114,-31,69,111,14,-52,-71,-21,50,-107,-7,19,-33,110,36,-22,95,63,-95,-71,-38,124,73,-114,120,22,106,-102,-88,47,-5,-18,98,-69,-41,-26,28,-101,-21,-44,-31,-26,-127,85,-41,-105,-31,-50,-120,22,88,111,33,-114,82,-104,71,126,41,46,-53,-12,93,-77,53,-55,-50,90,54,-38,-63,60,-68,-13,40,77,-28,-128,31,-81,-80,34,55,-5,-17,-110,-48,101,96,61,-8,-29,94,30,-128,13,26,43,-6,-60,115,107,-89,-69,54,13,106,107,-62,-57,36,-40,96,114,98,19,-28,14,-48,-50,-60,-64,90,108,-4,-97,75,-54,-71,-107,60,-101,-104,92,-17,-63,25,-60,48,103,113,59,24,51,32,-101,79,42,71,-83,89,65,-26,121,-115,5,-21,-68,-38,28,-91,4,-120,-110,7,122,-70,102,22,89,-58,-42,-57,-51,105,-112,33,21,-114,-110,62,123,76,-6,-83,-14,95,-46,-116,-55,-12,-88,-48,49,84,-64,95,42,114,-8,-126,-67,-112,-20,-94,76,9,-96,-38,-85,54,41,55,127,-46,-121,-38,72,-52,-89,7,117,-95,-97,-113,95,111,89,-105,36,61,120,46,79,-38,-97,96,62,24,90,-111,43,55,14,88,-58,-126,79,-69,48,26,121,25,-89,42,56,-43,109,-81,-50,31,-114,20,62,-88,-53,94,35,69,-1,-93,69,-96,-35,102,12,-86,-44,-79,-49,120,-103,54,-97,126,-96,97,-18,80,-111,-10,2,39,102,-74,-43,-68,-17,11,-89,87,6,-104,-9,53,28,102,-36,-71,-26,-83,-127,-68,-126,32,-96,66,34,87,83,-50,-98,50,-98,-81,-97,75,-48,-60,71,20,-9,108,-74,8,0,124,74,-57,112,1,118,120,-66,-27,-59,15,81,-121,52,-10,42,87,-89,57,31,-1,-74,-47,-89,-92,-123,-50,115,-29,126,-20,-107,51,28,-70,-20,38,-37,67,-114,49,110,-124,-109,-73,-72,7,64,32,101,-51,-98,52,-109,100,-2,-76,-107,-3,122,-89,51,-57,34,-38,-101,-9,47,92,-104,-38,-122,22,15,-18,27,9,47,-58,-20,102,-63,49,85,-71,65,-57,24,-78,-19,27,-113,-112,-48,108,81,-96,99,-9,109,-121,2,-127,122,-47,-67,89,-45,-17,-29,-59,44,-81,55,37,18,40,-11,-69,27,-39,5,-82,-97,0,61,-45,11,-70,31,-104,-3,-98,114,-67,21,-88,117,46,104,115,75,49,18,95,-8,-17,24,55,22,-97,114,31,11,10,-63,-76,39,57,-46,-62,34,68,42,-94,-109,-60,-41,-66,-86,26,-65,-67,124,97,59,118,55,-50,103,-25,-99,-77,55,-104,16,-50,51,-13,-28,91,53,-17,-82,24,73,-54,24,36,-63,-108,-121,-120,-61,118,77,-122,51,-88,104,-31,-115,14,118,29,101,22,76,59,-92,63,122,-66,-48,-7,30,-15,-30,-41,11,2,91,-5,86,75,-110,-87,71,9,18,101,-51,-17,-43,-83,37,-42,-86,-102,-115,106,-108,14,-41,34,65,57,-13,93,-89,25,-69,54,15,12,114,-99,-104,-36,-48,19,-101,-105,-51,51,-112,93,-2,69,122,24,-26,-14,-83,95,-43,77,20,-7,-29,-111,8,115,-102,-67,-97,107,79,46,112,115,-58,-20,-88,98,-30,90,25,75,-47,110,3,-8,94,70,47,22,-103,51,72,58,-12,7,-50,-91,-54,37,27,-38,-50,-112,31,-14,-76,118,30,-109,48,-123,33,70,-95,-2,-7,-111,-75,32,-89,-47,-6,49,112,73,-7,-65,-76,25,67,111,76,-29,-93,8,-95,45,-79,15,-56,23,-96,-58,85,83,84,-70,7,20,-52,106,122,-96,-84,23,33,-101,35,20,73,8,85,112,-86,-30,-14,-93,-30,-8,-39,-89,-27,-36,-107,48,127,-79,-77,49,103,-38,-112,31,-22,68,100,118,-43,57,74,-76,-127,-35,99,101,105,-26,85,-93,44,-1,68,11,85,93,13,-99,-85,39,12,-51,44,-33,-78,12,-63,98,-92,-67,-109,25,-86,64,-58,-5,76,-64,31,-68,-121,-90,126,52,20,-128,-28,120,-117,82,113,-41,27,-128,-39,-86,71,-102,59,30,78,74,94,103,-95,56,41,-128,30,113,46,-11,117,-96,48,-85,-28,30,76,104,-73,101,-89,-25,-79,-22,-103,3,2,83,34,2,-26,-20,52,-82,18,36,90,127,25,13,-21,8,-3,-38,112,-85,-79,-32,26,-72,15,-94,-5,-92,9,-4,-26,98,-26,112,69,-21,-84,-105,-102,-112,46,-60,99,31,-17,3,15,-83,-24,-123,-6,-47,-120,35,-100,125,35,96,-33,22,70,5,89,86,38,64,-55,29,55,126,-125,17,52,113,53,-82,-3,62,-80,89,104,34,77,83,-65,-4,89,2,-114,51,43,-28,-27,-94,-41,68,-37,-85,-36,93,74,-120,-63,109,-70,102,36,-93,-8,44,77,-92,114,50,88,16,99,-67,-9,64,-43,-64,53,19,-9,-70,89,-57,-81,114,-99,5,87,-100,-101,66,75,-120,-70,-31,74,85,-44,-37,108,-32,92,80,-16,123,100,-102,99,-38,102,30,112,-89,102,96,-6,-90,-80,-9,9,2,-40,-114,-128,46,119,52,-47,87,-41,-81,-112,-15,-107,79,15,45,-88,108,-22,19,27,105,-53,82,59,72,36,118,123,-93,-44,99,-8,-98,105,33,76,-46,93,-110,-51,64,-80,-58,-103,87,26,-4,-54,-93,83,70,20,-13,76,-52,21,-13,127,-93,-7,19,102,17,23,41,14,93,76,7,94,54,-81,67,-52,-61,-23,-92,9,-127,-125,99,-128,88,63,-118,110,-24,-76,-53,123,-79,-65,71,59,55,22,-64,-111,48,25,-79,-45,-102,-78,-85,-53,-67,100,0,72,-71,98,56,-6,-46,40,30,19,-42,127,-54,40,58,34,-6,21,-78,12,2,-42,58,-44,-112,-113,-55,62,-14,-25,-127,-40,85,-80,-72,8,29,-27,73,-36,-32,-21,34,-46,84,75,-123,72,-41,-92,41,-12,41,109,106,47,123,20,-73,-38,117,44,69,-119,-102,49,-97,9,-89,-128,-53,60,-65,-43,-39,-118,-33,28,-41,58,-41,111,-25,110,-58,105,90,20,70,39,-21,50,-114,-104,26,-98,96,-16,74,-85,-68,-35,-80,63,58,98,119,21,-124,118,-77,-11,-125,23,-101,-9,8,-61,92,-28,-112,30,-57,93,-49,32,-48,92,87,-96,-29,52,103,-97,-27,57,116,77,-25,-107,-77,114,-96,47,-79,-58,8,-72,-50,99,-113,-80,24,-19,-83,69,-6,92,-5,-115,17,21,-28,-43,55,39,-60,-55,76,-127,40,-43,106,-35,-6,-79,25,19,-59,121,112,-57,-111,4,80,-39,-77,-103,-89,-113,-38,43,61,-125,41,-105,-127,28,-33,124,-50,58,69,2,99,-31,-88,-83,-21,90,-56,-49,83,-119,113,56,38,92,61,-74,-2,101,-73,-53,26,-95,32,119,-23,-114,-7,116,114,-52,49,81,-88,-102,76,-73,50,38,5,-63,-49,-126,69,-124,-47,-13,-53,11,-42,-97,46,83,29,112,41,125,35,46,58,-17,-43,-2,-5,-34,-96,49,29,-13,-80,-82,-112,13,67,-17,84,96,38,81,49,65,117,23,-97,-60,49,-43,-34,-74,52,3,93,-93,-26,-88,-54,5,-113,-73,123,4,-95,17,103,-41,64,23,-90,-35,50,-112,16,26,-104,-119,-41,5,95,60,-31,58,109,-71,-26,-118,28,-71,-126,-93,-50,30,85,71,-31,-92,-48,-65,-48,-51,-52,112,-2,-75,74,-24,41,121,-20,97,122,-49,-73,55,104,-95,38,23,-83,119,-22,-118,45,-37,-105,55,-122,-4,52,34,25,47,37,102,89,125,-12,7,85,-6,-92,107,13,97,117,60,15,17,79,-16,18,20,-80,-3,-23,-70,-125,-81,52,105,88,-111,81,124,-40,28,-36,-44,-57,-96,-49,-5,1,77,-37,-73,-107,-79,18,71,-124,-70,32,53,33,-83,-34,43,59,71,-55,-53,78,33,-125,20,-97,44,15,59,80,-20,65,-72,93,88,23,-3,-44,117,68,-125,64,123,-30,-89,126,59,38,32,-31,-27,125,98,12,-43,-5,40,-59,98,124,-104,125,-48,-74,62,-104,35,73,19,-8,60,43,-6,-62,47,-3,100,37,-125,-100,49,14,20,-15,76,29,-125,95,-74,-85,-56,8,58,70,94,-60,-112,-37,-50,73,78,19,23,-56,82,37,22,92,-40,63,-49,116,113,41,-11,-5,46,-123,45,27,82,106,102,24,85,60,-108,63,-67,53,-126,124,114,-14,-108,64,-6,-27,-19,-101,102,-68,93,-45,-4,69,-109,-27,112,-111,-64,93,-36,-128,-78,-16,-79,-4,-117,-8,-40,87,-79,-62,-51,123,70,-39,-94,-91,15,18,11,-82,100,-104,-59,13,42,98,-51,110,102,-76,40,71,117,-81,-120,-120,79,-17,44,-128,-51,-41,-48,76,123,-20,-44,111,71,-41,-86,123,5,80,124,55,73,-76,-32,21,5,-43,-65,34,-46,-55,-108,-24,111,110,59,-128,59,58,116,-86,-34,85,-61,-111,45,-125,-47,-37,79,48,-56,102,-96,-94,-90,-127,-17,-109,-95,-52,16,-77,40,108,-85,-93,10,-25,-94,31,-59,-2,95,-26,-28,-88,120,30,-69,123,42,90,67,123,86,-24,-9,116,12,81,-92,88,-86,10,-77,104,-75,-119,-43,63,-95,-16,54,-111,-3,-54,-7,-96,112,-68,68,-113,-88,3,-37,-40,55,80,-128,62,-32,-13,74,-48,-21,-64,118,-78,19,-41,-75,-10,97,64,-126,-81,20,-79,-112,86,-20,127,56,125,-84,69,73,65,-53,101,118,-15,-30,-62,52,105,-59,-54,-87,-48,99,-116,-120,-107,-40,87,87,-108,-19,49,71,-98,58,86,-125,-55,-31,-38,91,-76,77,-119,-62,52,123,23,85,120,49,122,-19,47,-83,86,-15,-69,-86,-118,-56,-121,21,-74,-82,119,-39,59,87,-45,-38,19,-67,-13,-91,-84,1,54,-96,-58,-122,100,-118,-97,73,94,20,23,-30,-4,-7,-72,-30,-38,22,-121,-36,-85,50,114,95,8,45,-85,-89,93,30,-105,35,-53,87,-41,93,117,17,-61,-61,-113,10,-52,-99,89,107,69,48,-27,80,-75,-104,119,-76,-30,125,-37,24,55,8,31,-14,75,122,13,33,-13,-37,98,101,-51,27,-49,85,-51,-15,18,92,24,37,-122,-30,110,83,-17,101,12,-54,111,-7,4,-82,90,-91,97,-99,29,-75,73,-46,106,45,68,68,-35,-28,99,-74,74,-70,-111,-63,21,-22,86,-122,-80,-93,50,14,-105,82,45,-41,102,-38,-9,-84,-94,-89,-18,-50,74,120,90,-17,52,-63,-83,-17,124,-118,43,-82,-80,123,-119,-106,75,98,0,-76,61,107,-72,80,-27,-70,-100,77,100,89,-18,-49,93,-52,-68,-46,103,-69,-9,13,-65,39,-89,49,-52,-88,-77,-29,-33,-119,-105,96,-128,5,86,55,-94,-43,29,48,109,73,-76,62,-11,-82,-32,122,-88,-16,29,-40,-69,-59,52,33,77,67,63,-89,-106,112,59,-67,38,-33,-115,-120,81,8,6,-92,69,87,107,40,9,9,-31,-68,-117,-81,-110,113,44,-62,-85,-23,77,-6,84,-126,80,-45,105,75,-62,-8,-63,58,-2,34,-48,38,107,-16,-82,-128,-47,-44,-113,-99,121,-29,-17,57,100,-23,12,-110,42,34,-64,-124,5,-13,105,-128,112,-4,100,123,13,-125,-7,117,86,53,-128,-87,-122,-60,-18,-77,117,-35,-81,-75,100,-124,116,-110,82,77,87,125,-100,-105,123,100,2,-4,29,-127,-49,-77,-54,-117,-110,-101,6,63,-103,122,76,-40,54,-86,53,-103,52,-3,-118,108,57,65,86,-106,-41,51,82,-44,92,-63,4,-99,17,4,68,15,22,-83,-126,65,16,105,76,80,96,34,63,-115,79,-115,-109,-50,-71,-61,-89,98,-123,32,-88,113,81,-29,92,-36,120,110,56,18,108,-31,34,-24,77,84,-8,25,-98,-4,-102,-33,90,76,76,-128,-104,-105,-65,10,101,22,-80,89,77,3,-62,29,-36,-85,-116,120,-44,-107,63,45,-125,-108,16,-29,-103,-38,-19,-126,113,30,1,31,-127,26,-18,-56,-85,47,32,102,-109,-6,-120,-121,-50,-121,-25,-7,-127,-34,55,-114,-69,-34,-6,-44,123,25,-34,82,101,-21,83,-2,33,-23,-108,-107,106,60,56,-30,8,25,-46,-46,-31,-78,38,108,4,124,12,29,21,-87,89,100,-116,-46,37,2,-53,109,40,-48,77,-60,-64,-68,121,-84,-109,-71,12,-118,122,-25,-73,80,28,62,-88,-89,109,106,-74,-64,89,58,-27,96,-74,-62,-110,-73,-65,-73,-87,-128,-122,-72,6,29,22,73,62,-99,54,42,31,-46,-37,-87,23,63,114,10,-63,76,68,-24,30,-86,-20,-43,-25,-12,15,124,-43,38,111,-121,119,39,-49,34,-32,27,69,-5,80,86,-42,-51,-74,-71,-24,73,87,-32,-11,53,-24,99,-25,74,-11,-115,104,117,-78,-7,-113,-99,-103,-10,-20,121,-9,-35,-76,112,111,-68,50,-9,96,-108,10,-38,94,103,-73,-64,116,99,2,-18,-22,22,90,-105,-68,-42,124,-122,90,-52,-43,-6,2,-22,-117,-119,52,-76,47,72,-84,-19,-85,-124,15,127,-115,36,-39,-109,92,13,-76,47,2,107,3,90,-24,1,102,26,-17,-27,-114,-112,-74,-29,-57,-108,-21,32,-104,76,-47,-17,-77,52,38,106,-68,-63,86,-86,67,-28,114,-81,23,-57,-110,-81,64,-1,-97,-29,-25,-24,95,-35,-118,-99,-96,-11,68,-118,-84,68,-1,12,-39,77,80,111,-113,94,-123,97,93,-80,-117,-52,5,-24,-108,70,-27,48,-21,123,5,-98,-28,63,-96,-37,23,67,-33,-96,-50,-124,47,-58,-109,-64,20,-37,44,-101,34,95,-62,-76,-57,39,-51,10,100,94,-37,-72,-4,-21,114,-21,113,45,122,-117,-77,47,-82,40,-68,27,43,-99,105,18,-15,-7,112,27,-110,47,83,-8,44,-50,-86,-37,64,-58,-53,1,14,18,-33,69,29,100,51,35,-44,-99,-17,-90,38,107,-58,-103,106,-49,-90,23,40,-76,-79,7,-106,84,107,-44,-58,-50,-21,-10,-47,34,91,-9,64,20,114,-11,-76,-105,23,113,58,44,-91,-62,-55,38,-101,121,-22,100,81,-55,94,-46,94,-125,78,43,-128,-101,118,-103,-36,81,-8,-66,90,-3,116,-90,48,45,-49,104,2,44,-69,-78,28,-65,-90,-54,103,-71,-62,70,15,-31,36,-81,14,-103,-35,-60,103,-13,127,-54,-32,-93,117,48,45,20,-89,-23,127,59,77,3,-84,-35,-27,44,87,60,-16,-112,-56,37,103,78,-115,11,-3,-44,45,61,121,-106,-104,88,-39,52,-112,-102,104,46,-67,102,-91,-77,-13,-79,24,-59,61,-90,-34,101,118,-52,-84,57,-5,46,-62,47,-66,-18,121,81,102,32,89,-78,122,28,12,-110,-123,-19,-38,8,-78,-94,22,83,111,-36,92,60,-2,44,-59,-43,-2,-66,-29,-71,92,-51,116,-78,-2,39,124,103,7,19,92,7,-66,-100,107,127,-115,80,-3,59,98,-95,-93,11,62,99,-126,-61,-74,109,-58,87,-24,100,122,96,-65,-71,-38,-118,113,21,-71,100,-103,-106,-23,72,0,-55,-105,-90,88,73,99,37,-68,-108,59,-41,82,119,76,-41,-62,94,110,53,67,68,-62,38,18,-37,-24,14,56,-41,-121,-84,13,48,50,-4,-17,110,-77,77,48,116,8,111,-80,-63,-4,112,19,-9,-127,88,-45,72,-85,63,64,-32,74,-61,77,-90,-75,125,-46,-15,-99,36,116,76,0,95,-86,79,14,-55,7,46,76,101,-115,67,-124,38,71,95,-70,18,-18,-35,-42,13,-104,8,98,77,51,-82,-26,-61,-66,2,44,114,-27,-61,-119,-70,26,2,27,99,-99,14,82,30,63,-88,-97,13,97,34,-47,-99,-44,65,-13,48,47,4,78,41,37,11,8,99,117,-29,-59,-94,-7,28,-125,32,-109,14,-61,45,11,101,47,84,-13,-58,-49,90,100,-94,77,19,12,-24,-91,54,112,-48,67,5,-86,-63,47,3,73,4,68,-26,-64,110,-79,-18,-96,105,-35,-36,-71,113,67,36,23,-14,48,68,-33,-5,6,82,-56,-20,29,8,56,39,-33,121,-11,-43,-78,28,-29,-101,116,-98,-76,-81,-72,97,-16,107,123,-89,-47,-84,-67,-77,-107,105,29,49,102,-113,-41,-18,-24,-112,-19,54,49,41,50,-25,84,15,87,61,20,63,-118,42,103,33,48,-48,-121,16,82,90,-13,6,-40,2,-74,-85,-68,-4,-14,-76,17,-101,81,-80,7,-117,-64,-54,21,-50,102,-2,99,21,-74,8,74,-36,-89,-75,2,28,-29,-105,53,126,85,-35,71,-118,2,-55,-84,2,9,-20,124,83,4,76,50,95,-104,45,81,88,-113,10,66,44,-110,122,73,-78,92,-85,5,3,17,30,-32,-127,26,-53,34,-75,81,54,7,96,9,-42,109,6,-15,-13,119,34,-126,-102,67,-70,116,9,-12,-88,19,-9,85,91,-26,103,39,92,116,88,-87,33,-43,120,-68,-87,-53,84,-99,-28,96,-59,3,48,12,-18,87,21,-88,86,-56,-36,63,33,-80,-97,-93,116,-36,-38,100,-65,-62,-87,66,-65,102,104,85,73,60,-96,77,103,-80,-70,-99,103,-6,-67,1,-1,-81,66,-80,93,17,-58,-44,90,63,-35,-59,39,-56,-49,83,71,29,-7,-111,92,-114,-75,-80,-54,56,-107,-7,-48,21,54,-124,-3,80,-49,-13,61,-115,-29,-60,-78,96,-105,-110,123,112,-68,126,-87,53,22,70,16,-40,-90,-74,82,-16,29,-70,-84,-47,14,-117,-3,52,23,64,-84,74,-37,6,-13,-57,108,87,-100,59,82,45,87,2,-39,52,57,-79,84,20,-65,-33,78,-96,-61,-61,63,34,37,-16,-19,12,101,-119,-97,27,-13,21,59,32,9,57,-124,127,6,-105,118,80,-31,89,98,76,83,56,85,27,102,16,-57,68,3,-26,5,-95,-77,23,-110,6,58,-21,-113,-78,26,90,-16,35,-23,46,58,-14,102,-117,80,-108,-47,10,83,-42,119,-49,-38,-58,25,-100,-80,40,-54,-122,-45,80,-85,-77,87,-2,-35,-94,-115,63,86,111,-75,-47,-114,-47,-35,-10,84,71,-111,101,123,43,-99,-22,106,95,-17,-94,111,96,10,-3,-89,104,71,22,-52,7,-99,-90,32,-11,106,-7,-112,78,99,-38,-81,-104,-30,30,-16,-110,30,-31,-125,-113,95,-19,-50,-86,-66,111,-50,26,-74,-66,109,4,70,-4,-14,-30,-78,-83,48,-105,-45,-2,-86,-2,102,118,-62,83,37,58,53,-112,89,46,-25,75,22,100,-66,49,95,-104,125,88,19,-76,-35,-40,-83,20,54,-106,116,101,39,-106,32,-82,61,-80,-52,-45,-86,39,103,-71,108,121,120,-126,-56,-24,71,52,70,117,9,5,110,-39,-56,-97,-79,77,71,-90,-97,3,-8,-64,-102,-99,-6,59,-100,115,112,-5,105,-7,85,-76,-65,14,118,65,10,23,24,68,69,68,-78,-60,116,13,40,-83,-118,-2,-43,79,96,-79,-7,-19,-56,-93,-47,-63,-5,96,19,19,94,31,30,22,43,61,121,61,-49,116,-17,89,-104,-41,32,29,-111,121,-109,-51,7,88,16,-80,-105,115,-25,51,-6,-61,91,-84,-41,69,-80,-12,-70,15,39,75,-38,68,40,45,80,-71,62,-22,111,-51,11,-9,44,29,-114,-27,112,105,-68,51,29,-105,68,-106,-95,-109,-13,-82,51,13,-51,-48,-103,54,-91,33,50,-29,17,-65,-46,123,108,-73,-120,123,-52,100,32,-110,-76,43,27,33,-43,-13,52,-79,-30,-86,109,41,0,103,39,10,-57,-90,49,106,-13,-28,-52,124,-15,10,74,52,83,91,-63,95,-23,-124,26,11,-44,114,-48,13,-57,114,-108,-60,99,39,27,-101,117,82,96,30,5,-34,29,-128,-74,-47,-33,-6,-35,-121,-112,-35,109,-118,-69,117,-80,-18,20,-102,24,-33,47,1,-117,101,4,74,-64,-5,-13,-57,-65,-127,25,-107,125,0,-78,27,61,-100,-1,-84,-29,-60,110,-17,-75,-19,-63,-56,-25,21,107,-83,-100,-33,-89,-48,-3,46,88,-121,-55,109,83,29,28,98,-64,92,-29,-65,-63,-26,47,-59,-73,4,65,-86,30,-111,1,-21,26,-88,77,-119,-1,-35,22,-109,-86,75,-54,113,-29,-95,24,-40,127,97,-77,-24,43,-85,69,80,-56,-32,61,125,-18,-105,19,9,65,-2,-18,9,90,2,27,127,10,-15,-57,-76,-37,11,-51,109,28,-55,-63,90,69,48,-13,17,2,-53,125,22,98,44,-96,-94,-116,79,12,-2,72,-11,44,65,88,64,-112,76,61,72,-103,-29,106,-123,-36,91,72,79,92,-24,78,-121,4,-93,74,-28,83,-109,-98,-43,-57,92,98,-23,92,-99,63,10,83,-39,94,50,79,-111,-32,-124,-19,-34,-26,56,60,-79,40,68,-72,91,115,-101,-73,-55,36,-85,3,-86,-73,-113,34,-83,-59,103,10,3,-98,53,-90,112,-114,-101,-1,46,58,-108,-77,-122,26,29,-87,52,51,25,-51,0,32,-61,13,57,67,-108,-50,97,-36,-67,8,117,-124,-59,28,95,-112,-86,-50,105,-54,-108,-111,10,124,53,-1,-127,-43,65,35,-42,-28,12,63,-92,-97,-71,22,-119,-47,-42,10,15,-50,-23,83,-24,-28,3,-42,114,98,120,13,20,69,123,-101,108,29,-36,-44,87,15,77,56,74,-89,-23,65,-12,19,54,66,-31,-16,79,-8,-43,111,-46,-48,-111,109,124,-17,-87,69,15,61,-28,108,118,43,-55,53,74,-102,-72,-58,-88,-54,83,-80,-38,56,116,-80,-66,117,-3,105,82,74,-125,-75,-120,-58,43,88,-5,6,78,-72,-42,4,85,-49,-55,88,-79,-51,90,-33,-100,123,127,60,-115,20,-19,-97,117,9,90,-32,-123,123,-98,-15,-75,122,92,94,-86,41,40,24,106,-60,-39,73,68,93,-91,-86,-41,-80,-120,-27,125,-87,91,-40,-41,-9,5,34,65,-123,-111,2,35,113,83,-66,114,-111,5,60,126,-93,-105,-35,90,57,-68,11,62,-117,-33,51,-52,-45,59,-43,117,36,69,-95,97,83,64,-62,-81,45,110,88,102,-125,1,-51,43,95,43,-22,107,-97,25,-12,-122,4,100,98,-64,94,-21,-37,45,-38,-104,119,64,-74,29,-123,-46,102,-2,-40,115,-31,-8,18,21,-115,27,-80,15,2,74,8,75,82,90,88,10,37,-99,-105,-82,77,110,-49,-104,-1,35,40,80,-97,24,99,-94,43,43,-63,-40,10,64,-3,20,40,-22,77,113,-71,-79,-82,-44,-53,-106,-95,110,-124,-121,25,23,86,104,-96,97,-27,-14,74,54,120,49,-67,-128,-9,-30,-33,72,107,-12,18,-60,21,-91,77,40,38,-12,111,7,-43,36,-15,33,-70,-108,14,-89,44,85,112,-85,-109,-123,-72,57,100,15,-124,-48,98,-111,60,-17,85,11,90,-105,7,-116,-10,91,-10,64,59,-107,-121,54,-128,-98,83,38,64,-25,36,46,20,-96,-108,-71,-1,-17,101,26,126,67,-89,0,77,32,-72,42,-11,44,-14,119,84,-31,-29,-21,95,-8,-74,123,-128,30,27,94,-51,38,-11,45,74,20,-74,-33,-115,-122,41,7,80,35,18,33,16,-6,95,-111,3,-30,-101,15,-59,-92,-69,-67,-86,28,-43,98,38,27,-111,-126,-34,40,68,83,106,-95,-26,86,-54,-102,-110,11,-122,40,-37,30,112,-88,38,-8,-46,46,81,90,-40,95,-61,-109,-110,-123,-44,127,-83,-73,77,81,-23,105,32,81,-55,77,62,115,32,-70,-62,-123,-33,-44,-33,-36,-96,4,52,86,127,86,38,-16,84,21,106,-12,17,43,53,-98,-80,-125,-69,-25,-70,-72,34,6,91,-119,48,22,0,-33,-115,-18,-19,42,-34,46,-92,-27,106,-113,7,78,44,-123,22,-116,35,14,18,50,-110,-112,113,-91,-51,28,109,-83,-51,86,73,-17,88,-64,-114,-19,30,-33,30,-1,-121,-109,86,-58,51,104,89,119,-76,-28,-90,-95,-100,30,-77,-23,-14,-99,55,69,-55,125,72,58,-112,39,67,54,-6,6,76,50,92,89,97,4,52,3,96,-47,-26,126,80,-80,-100,16,53,-119,-36,123,106,-76,67,53,5,58,-13,31,33,-67,111,-42,-16,7,-111,43,51,-27,48,-105,38,23,-110,-17,-12,-98,89,-66,-1,64,118,93,-75,-32,3,-93,-115,65,21,7,-25,126,59,45,-16,-26,14,50,2,107,-19,-110,-34,-107,75,-11,-109,19,-61,54,-115,-63,123,-39,98,125,-94,121,-16,-24,-11,2,77,102,90,-121,116,-55,109,68,6,52,-110,119,65,-119,-47,6,22,103,-121,-32,104,119,-38,-16,-100,49,-117,90,109,-90,124,-92,61,-115,-107,54,-72,93,27,-79,89,60,-26,-77,123,111,-124,-89,-54,-94,108,-119,55,78,-108,95,123,59,-49,42,36,-4,-28,-7,-99,-42,-100,106,59,-65,-24,-100,115,-6,91,-5,-93,32,-77,35,70,-90,-7,-74,77,-20,105,114,49,-6,40,-32,-91,76,-32,-126,-83,-81,84,-103,102,-69,-99,-127,87,113,80,-69,-108,-13,-29,-43,-11,-126,-113,-90,-22,-11,79,-107,77,119,-104,7,-64,62,26,77,-83,24,-90,115,-37,10,-22,-76,-13,52,-57,-52,-63,114,-38,94,-56,-96,78,74,-95,85,-82,99,-66,59,33,-113,-78,-97,10,50,4,32,102,5,-105,-76,-69,-72,-19,69,20,127,94,-57,-26,-117,-7,-38,24,126,-81,86,91,28,35,-91,59,-126,-39,9,-58,124,101,74,120,94,-40,14,-31,26,-5,-90,54,50,-56,-108,80,19,-37,-39,-45,-22,-107,37,53,38,-126,-117,9,-102,-104,83,-73,-125,90,-106,74,109,29,21,-76,-42,-51,-98,72,52,-45,-56,20,51,-1,122,91,-111,-106,-69,55,-108,-93,12,-18,123,11,-3,51,51,96,-100,91,35,62,70,-39,33,-64,-87,-51,-54,-87,15,-81,-125,-111,14,-109,126,126,-36,65,-34,46,-89,70,-119,-49,-122,-47,126,-87,88,-117,62,-89,29,-65,103,100,-107,119,-88,-117,25,-89,9,-36,56,79,9,-95,66,-5,54,-2,95,-124,-95,-93,-126,-9,-54,81,-106,21,69,122,105,-37,-124,98,-25,108,84,39,-9,-97,59,-25,-67,18,-42,3,-105,117,76,79,35,48,-76,-107,78,-75,3,-81,-61,30,-88,-19,101,-118,-67,76,-99,-99,-82,103,-94,112,-71,-105,-24,-91,-26,-110,90,120,62,-116,-20,83,75,41,-7,34,-77,23,109,107,94,-125,74,-78,26,-13,27,99,49,77,-73,100,-115,-36,0,88,123,-65,87,77,-108,-24,93,-23,-60,-63,-44,0,-96,88,-19,89,108,119,19,102,-103,123,69,85,-68,-99,89,11,-60,47,-106,97,-53,94,-56,116,52,-1,-68,6,-55,-107,-3,-9,-59,78,-21,-69,118,107,-105,-3,37,127,-37,18,-117,-79,-43,-108,76,64,-121,-25,-52,68,124,33,-2,27,52,-71,88,14,25,-115,92,110,-36,-16,-82,-21,57,30,-57,-105,63,-75,-72,30,113,-92,22,56,-77,-20,68,98,-20,-15,79,21,-25,106,115,71,32,20,48,15,112,38,-124,48,122,-70,115,47,62,105,-71,-41,-85,127,-35,-21,122,110,30,-70,-6,9,-103,122,-68,-45,42,68,9,83,93,117,110,8,-42,-82,13,105,-26,21,98,-42,27,110,-123,10,109,31,22,29,22,71,-98,-5,7,-91,-112,-32,-56,60,29,-126,92,-7,-64,-77,72,-20,4,63,-54,-128,74,-53,-92,6,-89,-20,-92,106,32,-94,-50,88,52,46,74,22,-119,-90,-69,107,8,3,13,96,-64,28,-59,58,55,-102,97,110,-106,74,83,-95,-49,-106,-26,-93,9,-19,20,-63,87,71,-28,-52,125,26,49,-73,-11,112,72,-117,-65,88,-33,21,14,121,-29,-74,-128,4,102,125,112,-49,12,118,-28,82,97,16,-82,-7,4,121,46,-71,28,85,50,78,63,-94,74,107,-59,-48,-24,76,-112,93,-47,-67,-32,119,84,108,122,-67,-113,-17,33,-63,74,52,23,-10,-96,27,-54,49,57,-103,-125,62,20,102,7,-20,-58,54,20,109,-18,-78,107,31,-85,5,-32,-90,-61,98,6,64,104,81,125,-100,51,125,104,56,126,24,50,22,23,-100,-128,-82,-86,109,-83,30,15,23,123,-89,14,-48,107,-61,-92,-65,-75,49,-82,-36,-124,-36,-12,10,0,-105,26,119,-55,-47,-37,-38,-17,48,101,120,-118,-92,-89,18,-14,-50,-72,112,-105,-41,-106,-114,-5,87,-100,-125,102,-7,126,-23,-25,71,-111,-11,123,50,57,-84,-66,-101,-76,-106,47,-23,39,-28,102,-65,103,32,-14,-125,82,34,28,-18,10,84,-109,79,32,-112,97,38,56,-36,104,68,-78,-80,93,-95,-70,-6,27,41,33,-120,125,90,-18,-97,30,-51,53,-79,-74,92,-33,-102,41,-72,4,-27,-102,28,-56,114,-117,126,121,8,-126,49,122,-105,-56,-127,-51,63,84,30,-76,-13,49,-112,57,3,127,-111,-45,53,41,-71,34,-85,22,-114,-34,38,97,52,-45,44,4,-111,-35,-98,-24,-53,42,74,22,-89,-19,-119,112,-21,-118,-86,119,71,-52,-88,26,52,35,126,21,-51,-110,4,-120,-107,65,117,-8,-72,47,-66,72,85,3,73,-89,-100,-36,-114,-97,87,72,-27,-111,116,19,71,-53,-68,-121,17,45,-83,-28,116,71,-3,-29,-60,-125,-55,-64,11,4,-123,53,42,-24,-37,104,-22,-2,-77,-122,-45,49,91,101,81,44,-72,-64,-100,-107,-51,-26,108,-4,118,-80,-75,-23,-11,-102,19,-18,-18,125,90,-91,102,8,-54,-35,-35,-84,41,-115,-99,30,21,6,24,102,-108,124,28,39,1,-39,9,26,-8,-9,114,-93,76,44,72,-72,-24,-57,127,-3,-58,16,-1,67,-41,29,36,-92,-31,-87,-124,-34,-23,15,-44,-38,-19,-87,-47,57,118,-2,8,51,121,-82,71,-14,-41,-84,-62,79,118,-20,-12,16,48,5,-127,17,-83,28,54,-95,-89,-97,3,-18,40,-21,45,115,124,15,89,-118,-125,-19,23,-58,-1,2,38,-18,-121,-48,81,39,19,-24,-64,127,-46,19,-16,80,-128,55,121,-43,-73,93,56,-37,123,-62,14,36,-127,42,-117,-43,-99,38,-19,-46,-112,-70,-128,24,-79,11,23,-34,-99,-121,-81,-110,88,54,-80,-51,51,83,10,-76,-53,-58,-35,-128,52,20,27,-109,119,24,51,-19,97,37,112,112,38,-65,84,120,67,-8,67,6,-104,-94,-103,118,-1,30,-94,-127,-50,78,10,58,-97,-95,-42,107,-41,21,-88,63,27,-55,-28,-67,-39,-23,-118,-108,91,-1,-9,16,-37,62,46,-80,-82,1,50,-29,-55,48,-41,78,-112,34,12,-53,123,41,-94,37,108,-16,-42,46,1,-123,-50,71,3,8,86,-39,-24,-82,-86,20,22,8,-72,51,119,114,-110,-55,115,-15,74,83,93,93,51,122,3,-125,28,14,59,41,-56,107,-17,-21,38,-59,71,-23,0,111,79,75,113,69,-48,-17,-110,38,-29,87,32,50,4,-41,-56,12,-27,-77,-87,-113,-4,-117,-99,-20,-61,115,-99,40,-99,2,29,26,119,-86,112,-95,-31,4,-21,-102,-53,94,-82,45,-65,75,116,-85,-17,-109,-111,23,-23,-110,1,-97,100,29,80,-90,93,-18,25,95,112,-22,72,74,3,77,-29,-48,-106,-117,94,9,95,97,-109,-104,-124,-94,-29,113,-1,66,33,-28,12,91,-88,-102,77,-16,-116,-65,95,-79,-107,-76,21,78,78,51,54,-51,-123,2,40,-105,14,-90,64,112,124,49,-124,71,-114,97,-3,3,-83,-105,-50,59,-63,94,35,73,120,-43,116,16,-91,-46,-18,123,-97,-26,84,-119,72,-117,-108,-21,-118,-84,75,34,-59,-108,-104,-26,-11,70,63,53,-81,-65,21,-63,-55,-108,-35,-125,-58,-115,-16,126,-72,7,0,-76,-13,-54,59,81,-118,-12,-67,121,5,27,-23,-6,-79,-125,-14,-19,-45,80,87,-56,-118,-85,-37,-43,72,71,-49,-22,116,-121,-90,-59,49,-91,31,46,-62,34,89,-4,12,23,40,26,-7,-54,120,-89,-37,-39,88,42,-18,12,34,67,123,61,-91,46,54,-38,-104,100,-75,74,-36,0,28,15,113,-44,25,-56,103,28,-16,-92,-100,-7,58,28,44,-75,-121,34,-113,38,-99,66,-2,45,17,-19,11,-45,41,-20,-122,-72,38,110,-58,6,64,-86,44,-73,-70,-45,-93,121,53,36,91,-41,52,17,43,-71,-90,14,110,97,-53,36,-75,-32,122,115,29,102,-88,-46,92,53,-39,20,-102,46,-91,117,-26,36,-108,55,-101,-120,85,82,14,101,-81,-26,115,-24,33,-47,18,-108,33,-18,-50,-46,-24,7,-125,-71,41,99,-66,-2,-14,-25,10,-112,-74,47,-43,10,126,117,53,104,-77,-57,-30,10,34,93,69,-116,65,24,81,90,88,115,89,-90,72,43,51,10,-37,55,-12,-4,40,123,-85,-90,123,8,13,109,105,112,64,-16,25,-83,44,-54,-109,99,-74,54,-82,104,-20,64,-37,-3,-17,-72,40,14,-64,89,36,107,124,-84,-74,60,-47,6,-98,-125,63,112,-41,-70,-62,115,-56,30,14,127,52,109,-38,27,-112,76,-65,114,78,26,-53,77,60,-107,-118,-120,24,-74,-96,48,29,49,-15,-9,-115,1,58,-21,104,-117,-91,-109,-89,-26,-84,82,36,116,121,52,-28,-50,-103,-87,-93,-103,93,-108,49,-39,37,-115,38,-37,-28,-2,-37,-26,19,11,-120,-68,14,-107,-49,-41,107,17,24,24,-100,6,-7,46,-122,102,35,-110,93,-53,98,-84,38,65,-8,-6,-99,13,23,-5,-4,24,7,44,86,66,-111,67,-65,19,9,-92,114,34,-26,-43,-61,-11,48,29,58,-57,5,-105,-33,77,0,-41,22,45,-51,-44,-99,20,-61,-49,-20,47,-29,-30,10,-11,104,99,21,-11,57,44,108,-84,122,-15,-67,-104,39,-71,-83,2,14,127,5,3,-87,98,23,-9,104,-110,-79,68,94,95,89,40,107,24,26,-97,77,-111,-100,112,-111,-97,-36,49,-69,-95,31,-96,-45,89,127,-1,31,85,-5,-53,-6,-9,114,-53,-69,-102,16,113,84,-6,62,-73,-15,-18,-44,68,-105,-36,127,12,-27,-28,-42,-86,93,-121,-19,67,51,-31,51,-119,-74,86,-111,32,73,35,18,-19,98,44,-82,-84,-84,-106,70,-45,-60,72,50,-67,-126,-5,-67,113,-89,-62,-23,28,11,38,-2,-14,52,-54,-110,-61,4,70,-35,118,-80,-46,-11,-100,-54,-100,0,39,-70,-124,49,-120,-69,102,39,44,-115,-49,-50,-102,65,59,16,90,69,53,-27,-113,20,-47,-115,-28,39,-19,-19,-114,75,59,127,-94,65,-54,-27,-115,-46,-85,-4,1,-43,127,-98,-21,-74,75,-67,-124,22,27,-42,-27,53,-45,127,36,59,-44,-23,-126,-59,-90,-83,86,99,-86,10,108,-99,-45,91,19,115,110,106,85,-83,-16,-33,122,-86,-120,-87,67,-4,-57,4,11,107,-58,-2,-128,-12,-111,-5,-53,-68,-91,95,-68,85,19,-40,-32,20,10,58,-65,-9,-36,-56,79,37,-64,-12,-33,88,123,94,-124,-62,67,-2,41,35,114,31,-116,-100,-32,86,-17,-81,67,-85,-3,14,45,5,-78,-87,-110,83,47,-65,-121,-120,-114,-9,-19,-7,-33,61,74,-40,26,-9,-21,106,63,-70,117,78,56,76,-121,-77,50,104,-125,-32,-117,80,14,87,30,-59,69,-101,43,-98,-11,-23,-10,125,52,97,-19,-56,-94,-108,-41,-119,-38,24,-42,25,65,-39,18,-126,-4,109,95,99,7,-102,13,96,110,74,-89,15,-3,6,73,61,35,-78,-83,98,106,72,116,-127,82,-15,54,-17,2,88,31,111,-37,-102,-24,69,-7,-57,-6,-62,-39,-79,103,74,113,65,117,-32,37,123,-5,59,-15,68,-121,-78,-65,94,120,104,60,5,117,61,4,-85,-88,-123,68,-65,-101,46,64,-80,69,-19,-57,97,-27,-47,54,84,104,44,-15,125,114,16,-23,-124,-100,-87,36,81,-34,-77,-73,95,-126,-120,-27,-20,29,66,-80,-64,77,105,-100,44,19,-80,-18,-27,27,-92,79,116,12,-18,-15,-71,45,116,-27,14,-4,-88,1,-110,51,-101,-14,-77,-120,60,-40,-26,108,-123,116,111,124,93,-74,87,121,62,-83,1,2,-64,-69,11,-45,-79,110,-55,67,53,27,-79,-74,98,-37,97,99,26,110,-91,43,9,-43,80,-64,20,60,-36,-79,-113,-103,-23,-31,-52,68,-112,-7,94,-30,73,-25,42,-111,87,-63,108,-100,55,-94,-13,-1,-29,-59,38,-16,-85,-80,-11,0,47,96,-110,-62,-17,12,-54,-90,116,-12,-6,-128,-31,-3,-102,103,-11,39,-67,-64,-109,0,64,58,-118,-18,93,95,-87,88,-31,102,104,-62,-36,-61,-105,-26,46,-53,93,-24,-10,-54,121,-22,29,117,-70,82,-124,-103,52,-122,84,-76,-64,7,-118,-6,52,-82,73,121,-65,108,64,80,-27,-44,81,-107,-88,-39,-68,-59,9,65,-73,84,-100,-82,26,-56,35,-66,-15,75,-44,51,-51,-65,-62,-84,-19,-31,51,78,-112,-73,100,82,93,-92,53,61,43,-66,5,-63,31,-69,-38,26,48,127,-30,24,-71,-67,-60,-49,-101,-26,-43,105,10,-127,-55,-37,116,38,-63,-109,3,-67,-42,78,-59,110,-103,-17,10,17,-89,-47,-47,62,-41,-51,-16,-31,-41,77,-122,15,94,-96,-8,68,37,116,61,-123,101,-122,-11,105,109,45,-94,-111,44,-52,-113,-74,-97,42,-99,114,105,122,87,-59,85,-89,11,120,21,-51,30,-109,-128,-10,120,-49,-75,-19,-79,-26,-32,-28,59,28,-44,-22,-113,64,-71,109,-84,-11,55,-55,-105,114,50,-71,-111,77,36,99,-100,80,-26,-64,118,54,42,-121,-128,56,-10,16,-105,30,93,19,-99,-75,-74,-50,85,36,-122,-84,-72,-20,-63,-23,-73,-53,-86,-118,-9,96,75,-39,96,59,90,-127,-106,42,-122,46,12,-18,29,-94,33,-84,108,94,-2,81,-58,-75,85,61,122,-43,22,101,45,94,-115,-100,2,-63,-128,106,-49,5,38,35,-8,110,-50,35,-114,-114,115,54,15,37,20,87,-76,84,-13,48,14,9,-99,-93,43,-55,-82,54,-58,32,-91,112,77,34,23,-40,62,-100,32,84,-3,-100,93,17,66,33,19,82,117,102,101,-33,112,-90,-9,114,-1,-66,-71,-103,-38,-86,-101,38,-89,41,-113,5,-40,45,68,89,123,-107,3,21,50,-75,58,-73,5,-67,-64,89,-117,-78,94,16,36,61,-124,45,51,-18,-18,-119,69,22,97,-55,112,23,88,119,65,-103,-62,-97,19,-15,-47,7,-109,-84,106,-5,73,-41,81,34,33,20,-46,-108,-109,-102,67,-116,81,67,-40,-9,-49,42,-67,-57,-33,-38,-89,10,121,-36,-113,61,28,-94,-67,-28,52,-84,-38,-96,117,-44,-110,-17,-116,-53,-53,-51,29,54,98,-76,18,104,124,10,-36,15,47,117,83,80,34,-62,102,108,91,-112,-116,87,74,-68,55,25,-34,-10,66,51,-47,-123,-67,-122,57,32,-96,-87,76,67,31,1,13,96,-64,-15,-125,-41,-124,-77,99,47,74,-16,36,67,108,3,105,-44,97,44,-53,-4,-9,-120,99,-55,-30,-122,14,8,40,86,-64,-34,118,-65,-23,106,-95,-26,114,89,97,71,-108,-59,-10,10,-60,61,-87,-19,-4,-28,-32,-126,-124,-123,109,120,-107,-1,35,-1,-36,55,-47,3,-17,121,31,103,118,79,127,-55,125,-80,25,-4,21,-32,-19,70,-95,-104,-2,-92,126,90,97,60,41,-78,-24,20,49,-33,-79,121,56,120,-102,-19,100,1,44,77,-8,113,74,-46,-127,-28,46,-64,-12,-13,-15,-105,84,22,86,37,-56,11,89,110,-83,-95,36,-40,-92,19,-17,76,-54,83,4,-107,127,-82,-25,-85,35,33,-111,-72,76,89,-123,107,-98,-96,95,59,75,-103,28,-35,52,-47,77,-76,87,-14,-27,-92,-45,117,67,-13,5,-56,75,-95,-116,-34,91,-81,-35,83,85,123,-43,-38,89,36,-80,10,-112,-73,104,117,43,-106,47,113,51,-53,-84,93,-84,-86,0,-82,36,-128,82,33,11,-118,-33,-6,-122,-64,98,81,-44,-49,-104,44,35,126,-20,-71,-73,-126,46,44,-17,67,-99,-74,-48,66,-38,-63,-62,-25,92,-61,-28,73,49,45,92,48,85,-91,105,-98,-95,-69,-26,-76,108,80,-30,-56,102,47,-70,89,-78,-31,-112,4,-1,6,-118,115,-85,60,-62,36,72,-17,-56,-92,-60,-104,-54,-53,49,-100,-2,-106,-115,24,-56,-106,85,33,54,-60,-8,44,47,5,114,-79,-77,44,-28,-120,41,90,42,74,-57,-90,-16,79,-67,-88,9,106,-81,-120,-57,83,-97,34,7,-107,-92,89,89,71,113,-78,-22,-59,40,33,-58,-32,-85,-50,58,96,-19,70,-31,-39,90,-21,118,66,-125,-104,-90,-42,25,98,-111,102,44,-4,-88,60,-62,79,-81,-35,-117,14,46,86,-47,6,-5,101,-12,-3,-93,43,42,32,-111,99,96,-120,112,-27,65,-6,89,105,-67,35,-41,57,-126,-98,-22,122,50,48,0,-54,-46,71,45,-125,81,101,-128,23,118,22,-29,7,-26,-95,117,-60,25,-126,74,86,-53,-8,-85,-86,-62,-28,124,-39,65,90,54,64,-77,-128,-1,-112,105,-77,-84,-40,123,53,-46,127,-124,13,-5,63,123,-31,-74,-36,-16,-83,101,-124,-24,13,-5,27,13,48,92,-98,-115,-98,-111,-10,-51,102,98,-81,-82,107,-1,-40,-115,97,109,-52,24,-46,109,50,40,-111,43,71,-70,-9,-1,-48,-23,110,-41,34,-13,108,37,45,-28,-4,-10,-50,121,16,-119,-72,-45,-86,18,9,-66,64,-36,33,5,126,48,93,19,11,-62,-13,-125,95,-116,-6,-61,125,-6,67,111,-4,19,2,82,18,48,-1,-54,-66,20,45,-103,15,94,-91,33,-15,-24,119,82,116,15,67,30,111,-106,90,80,124,-104,71,66,120,59,13,-20,-94,-124,65,108,-95,-80,16,-101,-38,-24,14,25,-69,108,83,90,98,-17,-96,-64,-89,-29,-30,-11,52,105,13,53,2,75,-101,99,105,88,-56,72,26,23,-13,122,-98,67,71,-29,87,7,3,-114,58,-122,-70,-9,126,-30,111,69,-16,56,11,103,94,29,-61,7,-32,23,-6,-6,-31,-63,-47,67,41,74,110,57,97,74,5,61,28,-65,43,54,-22,-115,-126,0,5,-29,-83,-3,-79,-54,86,-50,22,21,-93,116,34,68,77,-76,-55,85,-116,-31,44,-115,-34,84,64,-42,-102,-13,43,85,100,-60,44,-102,-54,120,81,-79,-104,103,59,107,-65,-69,89,-44,121,-24,-7,61,51,75,42,-28,70,-110,110,-102,76,117,-28,-67,-12,102,68,-81,18,121,-33,56,-19,-27,-124,-110,115,-46,108,-83,30,4,105,-9,-17,114,61,11,-97,-79,17,0,88,-86,101,7,14,58,-48,62,-42,121,39,-49,-100,-38,56,94,27,119,-20,7,26,-99,-78,64,120,87,-83,-105,108,-44,-56,76,-2,-117,26,21,-3,8,58,-118,-100,50,-13,65,81,-74,-14,-96,67,9,27,-122,-73,102,51,112,-60,-13,-15,127,-83,-40,-51,-81,-120,16,-7,100,-116,83,114,97,59,121,-53,56,-20,-72,55,-9,-39,-43,107,45,49,-102,-64,101,-54,59,-123,-70,106,-126,-75,62,-44,18,-110,-17,24,-44,18,-107,104,43,122,-19,57,-122,-113,25,-119,-40,-90,123,74,-35,-14,-100,102,-22,1,35,-86,107,109,-124,-51,56,-85,-16,-124,-65,-121,109,30,55,82,-23,-21,1,-78,-102,-75,67,-94,-60,46,0,62,37,6,12,-92,48,-104,-96,-39,-84,39,101,3,68,34,26,-110,91,60,25,2,103,-47,-67,77,46,-2,118,43,-85,-107,83,43,16,-71,-7,-55,-52,-23,-23,-82,57,-110,42,-102,-32,32,-70,-75,-14,116,-11,-128,31,-111,75,1,-123,116,-44,-85,71,33,-72,60,38,70,-72,93,114,78,-102,56,79,48,-15,-83,75,-6,-78,-90,-121,-127,112,-35,8,120,25,-92,-112,82,-37,119,-32,-35,58,11,-128,109,69,48,-30,77,-9,-42,-70,-107,-21,-23,-78,-81,30,64,-51,-8,106,95,-109,-123,-40,-78,122,-127,9,81,-15,-43,27,52,-8,88,37,-45,65,118,-92,-62,119,-109,-106,73,127,-96,-115,8,71,46,47,-107,24,53,-125,70,-40,89,115,15,-119,-64,115,-11,-103,41,54,-108,-20,6,104,-67,-8,95,102,-7,55,15,73,-123,-110,90,19,113,-53,-22,13,51,40,37,-83,-113,-103,34,59,-10,-121,-103,-61,87,-26,114,-25,88,-65,-79,-63,-11,113,-62,31,88,25,92,123,31,14,59,-87,23,35,-49,-83,-64,59,53,-72,-42,52,-21,-59,89,-104,109,-22,24,-60,62,3,-109,-1,-21,15,25,-37,91,7,65,-39,61,-117,-34,26,-2,-51,-48,25,24,-15,24,99,62,61,-55,36,50,-32,6,94,-25,-84,29,65,-95,-94,-85,117,86,-30,-81,69,-102,-53,65,-7,0,-66,-5,66,127,-108,-59,-82,-23,-75,-4,29,62,10,41,-55,58,9,123,99,55,-58,-99,-6,65,-128,-121,-70,-67,-28,11,122,-108,-18,-104,-68,78,103,-108,31,119,1,117,-22,61,121,64,-68,-68,-96,118,14,58,11,21,60,52,41,75,-54,-54,-26,-119,-66,-19,11,-126,62,76,-97,64,117,-64,-5,72,-115,-9,81,23,65,73,-87,-91,57,-48,90,54,-11,-121,-40,42,-53,-82,73,6,102,-104,-117,-1,-12,52,-56,59,12,0,70,-103,32,103,104,123,-75,-104,-123,-109,-44,-35,20,24,76,16,31,-50,-63,55,-116,35,-116,-29,16,109,-34,-68,-115,-39,74,-32,-43,-9,126,-56,32,-74,-46,-19,-82,-103,68,32,94,-29,53,-105,-115,-50,-121,17,105,-7,74,77,98,-23,4,37,-8,-103,45,-123,-68,-99,-80,62,-21,-58,-2,-95,5,-14,35,19,-65,-123,-5,58,35,-90,-53,-37,108,28,39,-21,17,24,34,-53,94,101,20,-38,70,-74,14,30,62,46,-61,94,125,-98,80,88,36,14,10,-121,-122,110,80,-127,-97,72,8,95,50,-48,-39,27,54,8,61,4,113,122,52,-124,-117,94,40,-69,-34,23,89,-56,-123,-97,-16,21,7,57,-87,-90,24,-80,63,-50,-118,-112,-94,-17,24,-32,11,76,-25,32,58,90,-4,-12,28,48,118,116,-112,107,61,-110,127,-38,-69,-62,55,92,-104,0,-46,-54,17,-39,53,54,-90,-69,72,-57,116,-32,33,-36,114,37,-70,121,-84,-67,-49,-95,-105,98,60,60,22,-41,55,-74,-7,-57,-51,-107,48,29,-102,-72,-35,79,71,31,48,65,78,-38,-5,-8,-113,122,76,107,112,-31,102,122,-83,90,-55,-128,101,77,-66,-62,111,126,-75,115,63,-118,52,-6,6,101,-55,76,32,68,-128,90,100,-109,98,-58,79,109,114,121,-77,-59,19,-52,95,-1,84,114,-52,56,-13,91,50,-114,67,-51,-94,-115,113,-58,-33,56,-92,-114,-126,80,-125,-29,-82,55,-120,44,22,-85,126,113,-92,91,-39,113,-81,-90,43,69,-59,63,-34,-5,-91,-21,-3,120,-126,127,43,-73,-13,-111,-99,73,37,66,113,55,-7,47,-46,110,-76,68,105,-76,126,-36,10,21,-80,13,94,10,100,108,-127,-117,21,-95,-79,93,7,-72,98,-15,-62,94,77,-124,25,-63,24,84,-99,28,-99,-117,115,-65,62,-40,85,-82,113,37,-125,13,-51,-96,70,31,26,-36,-5,57,43,44,-97,-27,2,-72,106,-15,-112,126,111,-31,-89,69,-106,-114,-111,1,-54,-66,76,56,-70,51,120,105,-56,-8,-92,-102,-104,40,-52,77,-30,-123,-71,76,48,-20,-93,76,53,-113,-16,18,-21,44,-107,-115,53,40,88,95,123,34,53,-28,21,47,82,-90,109,-114,-104,-108,-30,76,-58,73,7,22,-97,-96,89,-84,-47,-75,-62,110,25,42,-62,-46,-62,55,121,-128,-54,69,54,25,-75,-95,-100,87,88,-96,74,7,122,38,-103,-68,-83,-57,109,-34,51,18,95,89,120,-86,15,72,86,-84,101,66,85,-32,48,-104,-99,-92,27,43,76,41,-74,62,115,-5,-8,-14,76,-114,50,-77,-97,85,50,16,-36,-27,-99,-67,-109,16,-68,106,-52,-22,-112,122,-15,-31,126,23,121,16,18,63,64,64,76,23,54,-57,-75,97,-94,-55,87,72,-40,116,-64,-23,-94,-63,-13,-53,30,9,-72,11,-45,-105,62,59,110,20,-7,-90,11,-80,-27,44,28,46,45,57,35,-60,-56,29,-91,-42,115,5,126,10,-115,77,-65,-17,-67,34,12,-39,54,-119,-20,1,107,56,39,-102,108,-66,22,-75,14,-104,-127,-85,-76,-88,103,-94,-102,-87,-17,23,-95,33,-71,107,92,-96,61,75,-10,78,-33,-125,-72,121,-98,32,-14,-28,33,-96,-4,10,-65,61,87,-27,92,-43,110,7,-52,45,9,-71,100,-52,-70,19,45,106,-110,-74,91,-86,-52,-110,-66,58,114,-126,-27,-77,-63,-50,-65,49,-7,33,116,22,-124,67,-54,76,-115,37,64,-105,50,19,-126,19,32,124,-37,80,-93,81,86,-65,-21,-5,-48,-124,-23,-25,24,-79,-117,65,51,14,-77,16,97,80,-50,29,56,-23,87,96,-52,107,-106,2,55,102,-37,125,49,93,-116,13,61,-11,-23,-119,53,13,15,-86,-96,24,-73,-43,-39,15,112,0,19,76,79,-76,99,-29,111,-18,119,-66,-34,-127,90,38,34,63,3,111,31,-29,24,5,65,-95,-70,-15,86,-43,16,76,-127,-120,6,-39,83,97,-31,-99,126,21,-29,-117,-48,53,-57,38,56,-78,67,109,-92,72,-96,-88,36,-18,43,89,94,100,-37,121,112,-33,-69,49,20,112,-80,26,26,-42,-99,5,124,116,-42,-32,-118,-28,22,40,-76,-105,81,97,59,65,13,52,-104,-98,124,82,96,-99,-46,114,-83,-125,-36,81,8,-27,-74,-28,-61,64,-31,-81,-49,42,48,38,-115,12,-80,-86,62,36,-81,-46,93,68,83,-56,-52,-36,7,-8,-125,-80,38,123,122,-88,-85,-94,-81,5,-106,21,-112,45,-37,-120,-28,48,93,-99,-47,116,81,48,-85,-122,32,50,-67,-109,-14,-22,10,10,56,94,-120,78,-79,-20,74,-98,41,-30,110,50,86,11,65,51,43,-97,-31,74,91,-11,127,-86,-44,-24,119,-16,-66,-127,-30,-95,-64,-11,54,-73,87,45,24,109,98,61,76,109,126,28,114,-1,64,-103,122,24,45,-113,-32,-24,-28,-125,95,102,-7,109,-9,-28,-7,73,-41,-33,-25,111,-45,-101,63,-111,-48,-70,-113,33,-53,-32,-95,75,71,-40,28,-112,-106,-41,76,117,-94,81,19,40,85,96,125,36,-91,19,53,6,65,-9,-82,68,59,9,91,-25,-107,-34,65,-122,20,65,-67,-38,-106,121,125,-83,109,45,-103,-57,49,-42,-42,41,78,122,-31,-69,27,84,23,-116,3,-65,59,37,113,-101,-91,-51,-19,-28,-52,86,119,-29,-29,-104,-84,42,90,119,126,-32,37,-37,59,-113,125,11,-13,65,-21,-49,-80,60,90,4,58,-117,-84,106,-77,-114,7,69,-93,-22,-50,110,-46,125,78,-60,-59,-20,-42,-5,6,93,-124,-52,80,73,75,-105,-14,-58,-59,76,105,59,-46,-79,-81,-72,34,-8,-49,-96,-102,-47,-94,93,-100,69,-126,-115,-102,-103,91,77,-119,107,-86,-115,-68,83,-26,-42,73,-28,22,5,-85,-126,-43,-84,-54,100,-71,-104,-61,97,-128,38,88,-119,36,94,-84,107,87,41,112,-115,60,39,-55,1,-45,-114,-9,-111,-96,-105,-67,-103,-24,-80,88,95,-113,-91,90,-70,91,-113,-70,37,-105,-92,-20,82,81,-122,-83,-10,126,121,117,89,-2,-118,36,-6,118,-85,124,-5,-113,-21,-9,-45,-33,-103,65,122,124,87,58,88,-17,-43,54,94,-106,-30,-47,44,29,-10,-116,-59,41,54,-86,95,13,-116,106,72,55,101,98,-29,-103,-12,-12,-73,6,122,-106,-101,69,54,-93,-43,31,124,79,-72,-102,17,7,71,-44,92,37,127,54,28,-104,-7,-50,-74,-35,-125,-16,-119,28,-23,82,122,63,122,-38,-17,-44,14,-28,117,92,-90,26,88,-74,-41,-104,115,111,112,37,22,127,-9,31,-128,61,29,53,-3,58,78,92,66,-76,39,110,52,-27,-33,-125,-73,27,95,-96,-61,-125,114,47,-107,101,124,21,-16,80,-101,-47,44,63,-31,-99,-57,24,-113,37,18,121,102,-10,46,-24,-76,-71,-104,68,59,-124,112,123,-82,49,78,-17,-47,-83,121,91,2,102,-14,32,-30,-19,-3,67,117,-111,41,-92,26,-26,-50,-42,-74,97,-21,-72,18,-78,104,41,64,-111,122,108,43,-80,67,48,-45,-45,-19,105,-66,115,84,81,125,72,59,60,105,52,-36,-31,30,-64,28,-10,45,-74,11,38,40,70,-3,-46,-77,-70,-16,-118,-69,-114,98,-77,60,123,83,-102,115,7,100,109,-22,-48,-80,42,-127,-87,81,-77,8,57,-72,-41,103,-54,3,-54,105,-37,-41,-9,-16,118,80,-30,-87,22,71,-48,-38,-105,62,-90,-21,-41,-33,121,22,19,116,66,83,112,-39,-28,54,-84,31,-125,112,89,-81,-109,72,-108,-95,-1,-114,120,-73,110,-105,-107,-126,-93,8,-103,20,-55,65,122,-58,68,121,-97,61,-74,57,69,-65,1,-112,94,97,99,-122,100,46,7,-94,116,23,85,-111,83,79,-108,112,-102,106,-105,-87,-66,-128,39,24,-7,-72,-78,115,-51,99,-113,83,-90,-97,-8,89,-88,-114,79,28,56,113,-102,38,-5,-104,-76,-18,38,57,40,-67,-9,89,-8,-121,27,-25,-110,-93,-36,-10,123,-73,-111,-29,3,116,-20,16,-40,-18,87,-123,120,-68,-97,-97,-47,-94,114,113,-121,-111,-53,69,105,-81,77,92,-37,-25,-46,-18,-9,-86,54,46,-80,27,-101,108,-69,53,-109,-44,85,79,-46,-87,34,-30,85,-11,-61,101,-22,-17,-25,99,-65,-30,117,-89,-120,-23,-16,1,-94,12,-80,-29,64,54,106,-111,-75,82,-3,22,-46,11,-103,-63,12,68,120,-17,-117,-52,87,112,-123,-52,-121,105,-53,-55,101,60,-3,71,-122,52,-9,-125,-41,56,-1,85,15,-72,-29,70,-7,-103,-46,-112,127,34,11,4,48,114,56,-109,-32,86,11,89,-1,-80,-18,17,9,-55,-87,114,92,53,-4,42,86,22,57,-50,120,90,110,-90,15,67,-59,49,-46,-97,96,119,100,-80,64,-54,81,126,92,43,-90,-14,-47,-89,21,-17,-37,51,121,-73,-43,110,-54,-30,121,40,-34,85,52,-99,36,-9,-18,-51,91,-71,86,102,-116,95,-55,95,-35,74,118,101,-114,55,-108,-48,-60,-22,20,87,20,49,74,117,-76,-43,41,79,114,-28,83,-68,43,-128,-19,-96,-12,19,111,-44,126,102,-110,56,-77,-27,-14,17,-26,62,-107,71,89,-127,-37,-16,32,-34,126,110,74,107,126,85,8,80,29,104,6,30,-52,79,-74,-11,108,65,29,-107,62,-2,59,-123,71,-128,109,110,110,123,28,-68,-39,-20,-108,112,-32,-36,-12,98,-82,-57,38,-103,55,126,100,-5,89,-41,36,12,-16,99,118,71,-96,88,-92,113,88,-56,97,76,-77,117,60,46,0,23,-41,69,4,-5,-84,33,-3,45,31,38,-119,-20,96,-113,36,28,-38,-96,-23,-115,-50,-106,3,-9,85,-80,7,-19,-111,-120,-3,-107,116,-87,-115,101,92,5,-13,-9,53,1,-35,-125,-23,-107,-122,53,117,-10,-122,-89,19,-33,-32,69,-67,-69,75,-116,-35,107,-48,-74,109,-38,50,-69,43,-85,52,-107,18,83,115,-101,5,44,78,-7,99,105,-72,-39,62,31,27,-46,97,-117,-94,-69,-86,-124,-114,-30,-48,-126,-122,108,-59,-2,-19,49,-22,-29,-21,67,60,37,-75,-55,-22,56,47,15,-111,32,0,35,81,-18,108,41,-120,-20,125,-4,51,119,-115,0,122,78,77,95,-68,-9,109,59,-128,-8,11,-114,7,29,-56,79,-124,-80,-112,9,91,-32,11,-50,29,-115,18,-19,-6,-123,-15,-82,74,-6,15,-55,12,72,-62,12,43,-30,58,-30,2,-56,-100,1,82,-85,63,-17,26,-117,52,-90,-69,-61,-90,121,111,-18,60,7,-26,96,63,-92,5,-11,-52,-81,125,97,122,67,82,33,93,99,25,51,39,-71,110,28,-116,123,48,-68,-103,-9,-31,48,-2,-107,-64,-102,-107,92,-62,-100,83,127,41,58,-122,-7,113,-18,20,-82,-105,23,84,-120,10,-37,-82,11,46,62,-57,16,-58,-18,0,42,-95,-82,39,-105,-78,106,52,-51,36,-40,-3,98,-108,45,121,-59,76,73,19,124,-67,-45,20,76,-21,66,-56,46,-18,-39,90,0,-57,-42,-47,90,79,-120,79,103,34,59,-41,-67,94,125,88,-104,-30,25,-128,120,35,88,68,-48,-47,-99,66,-12,92,-42,46,-25,-10,55,118,125,20,114,67,-9,37,123,48,-84,79,-63,-23,43,119,82,76,-8,-21,-17,27,-108,97,-32,-119,-109,68,80,-9,53,95,-20,-71,41,-50,-57,-16,-4,17,39,-128,19,-113,9,30,-36,66,23,47,82,-76,-87,-35,-48,96,-4,-86,100,15,-58,-10,-1,83,-52,17,-102,37,-89,-33,-2,-23,60,122,-88,-13,-112,-47,-92,-52,28,-101,-99,92,-123,-108,77,101,102,44,-67,-88,-108,-43,118,-96,45,-48,84,-25,-9,59,86,-7,79,23,110,-74,-92,-67,50,-109,29,53,-57,-89,31,8,1,65,126,-119,73,9,-107,92,81,17,53,52,98,-126,111,22,15,-15,-110,-49,60,-82,-82,88,79,110,-113,-124,-127,-51,45,41,-87,-17,-95,-122,88,-48,64,-111,-55,62,-46,-91,116,-55,29,-36,75,95,-56,-100,-125,103,-115,-41,-29,-56,88,-81,-33,29,-127,-6,-90,77,-4,30,-81,-11,-121,30,-17,-10,-24,-124,109,67,126,-109,-57,34,-101,-9,112,25,126,-47,4,79,-38,117,-76,-43,56,-15,-86,85,-80,3,37,-120,39,-40,54,-70,26,-64,-45,-69,-53,19,70,24,-112,-78,-35,-120,69,-113,-97,-29,-53,-106,-74,-61,58,-21,-57,97,-97,-16,94,78,62,-121,-58,46,-38,35,35,-127,-17,30,2,54,30,117,-120,125,9,-20,-30,-44,-53,52,29,95,-66,122,60,-29,-113,68,-92,16,-110,10,102,54,-78,-120,-71,111,-52,107,9,-11,-9,81,-96,-37,-25,-77,39,111,28,0,-55,43,23,-98,-37,-123,-11,-42,-98,-97,102,106,69,-4,98,5,115,-121,-115,-94,-78,-69,-9,51,-84,-86,3,-104,11,34,-38,-113,29,-39,61,10,54,-116,65,-91,83,86,27,-44,-27,-108,-86,34,-40,99,-8,37,101,126,102,126,38,-14,-102,-52,-82,-56,-36,74,95,113,-115,-49,-66,-20,-123,20,-83,-37,96,-44,-55,-98,-1,75,-2,10,74,-55,107,87,41,-123,-90,-61,0,2,94,-63,-103,-85,-13,-107,98,78,-47,6,26,8,-39,36,-119,52,-21,-70,-40,72,117,115,-87,83,-57,-60,127,-78,-78,76,36,54,43,-25,127,19,98,125,-96,20,121,62,-126,13,-30,86,-110,97,124,-32,-104,6,-122,36,0,18,105,-48,-39,20,-105,55,-113,-114,-121,-83,9,-20,-23,-49,86,-48,-107,70,125,-114,-115,83,31,-23,121,-30,-67,48,-86,-90,-91,69,-79,-107,-77,99,21,83,54,-73,64,-60,88,-10,15,57,112,-85,-47,101,-78,7,-29,-128,120,-16,-96,-50,27,116,-128,-11,-35,84,-19,-33,-57,-73,18,49,-67,-15,41,15,36,41,15,9,33,4,39,27,101,-117,77,83,115,-60,-54,-82,46,-56,-18,100,-51,-41,-27,-25,-95,9,74,126,126,-81,-48,10,-60,85,99,80,27,108,-6,-16,77,44,46,114,-26,20,-69,15,28,-121,107,-59,125,-125,92,98,-61,84,-114,-87,-44,-13,116,-120,1,121,-84,-86,26,43,-55,94,-25,-80,-75,34,-97,-12,31,-58,-68,110,2,-109,-27,13,75,84,-21,92,12,-61,-117,36,21,107,22,-61,80,87,-115,29,-3,-125,41,75,45,-108,-29,33,-111,-4,25,-52,8,24,-74,-36,-22,-94,25,-7,97,-124,108,-114,12,3,-10,96,75,34,17,114,-32,84,84,12,-60,-88,-119,-41,41,-48,-11,-25,1,21,10,-71,-3,-16,96,-36,-14,-115,-14,-3,-83,6,-33,70,-18,-108,-81,-31,85,-91,-59,-80,81,36,11,19,74,-22,-80,61,8,57,-110,97,107,91,-40,-82,29,-95,122,-114,-102,-77,-28,111,122,46,-35,-102,123,83,18,-47,-24,-121,-120,114,-93,22,-66,65,113,77,86,82,115,-82,117,28,-78,76,27,79,-128,119,-10,-71,-31,11,-89,-82,-88,63,-99,94,87,124,76,-124,101,-53,-3,-119,9,-50,-29,92,58,-74,-51,57,-114,31,-75,113,-47,-103,4,12,-43,-100,-70,27,40,-81,-36,-26,-12,-102,-118,-88,50,-73,-57,124,-94,122,70,-87,28,-113,-126,100,-1,4,62,7,-91,-91,44,-90,-56,102,-32,30,100,-102,-47,24,34,118,-99,-98,36,113,117,3,-126,-84,97,-73,-124,11,-46,-18,-15,72,-38,24,-47,-4,-65,-73,-86,-112,-37,-125,109,-50,112,72,88,-97,20,-29,-43,-2,-48,121,94,58,103,52,51,-16,-116,94,119,-101,64,48,51,-70,-106,-62,41,82,-66,78,-113,106,71,-105,-44,111,-78,71,115,-50,-111,-46,33,88,-67,-58,-123,4,-82,-34,22,-40,120,-28,-18,-52,10,-15,-109,11,-106,125,-126,-31,94,-89,84,-94,-62,-6,98,62,-50,-78,-34,12,104,50,-39,-11,-60,43,12,-18,36,-62,-58,-36,43,-118,-88,78,-35,-62,-14,-104,-124,-68,21,-18,52,102,18,87,98,-2,-78,29,37,80,25,-106,-99,-86,74,127,6,-31,86,112,35,3,121,-126,-78,114,77,-51,-85,-24,70,7,-109,-25,-58,120,10,-20,26,-100,-18,120,-127,-78,-23,14,8,-116,42,-75,79,44,119,103,102,69,22,26,60,-58,28,-70,-104,25,25,124,3,-15,-44,93,87,-23,-8,-15,-11,10,7,9,120,-68,125,-79,-70,15,115,-75,-90,-5,127,108,108,-66,-122,74,-82,-14,-100,4,58,-106,-96,-65,1,11,102,-41,66,-117,55,-8,6,-69,-72,75,76,16,78,59,-2,-10,-42,-72,-1,-31,-100,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58}\n\n#define IP4_q7_q15_WEIGHT {18,-44,-12,78,104,61,-34,92,-120,40,-75,-19,29,-56,-80,21,60,107,-92,-118,58,94,-104,47,62,11,106,-105,-6,-32,-20,24,43,-116,43,48,53,-50,-86,-38,-108,0,-80,-73,-5,-26,115,111,78,-101,76,-55,94,-61,39,118,94,-20,13,-81,100,-111,70,94,-125,71,63,-121,-70,-14,-69,-74,54,60,-121,107,-121,51,-106,-38,-61,110,26,103,-43,-116,94,111,60,-28,-125,88,83,62,120,-39,-79,-85,112,34,121,-121,-93,97,-45,-90,-97,12,-97,109,90,-45,-59,-105,-100,-21,0,-122,-26,-37,28,-10,35,-115,-87,-62,6,108,-15,118,26,-84,-26,-74,1,73,-41,97,-65,86,94,34,67,59,-99,-67,106,-80,-26,-21,-71,-20,115,-43,109,-107,-21,37,64,-2,-20,115,-75,108,53,-102,35,45,83,-49,-106,-59,-46,121,-102,-41,51,22,-55,19,-58,-116,-103,80,25,122,-126,-76,-7,-2,-34,110,15,82,-46,-16,15,-52,-19,-39,-73,93,62,67,117,62,-27,-12,-89,-100,-15,-57,59,-127,20,52,-37,-41,-79,-43,111,99,-31,13,-12,99,43,-1,-31,124,43,-15,-30,-69,120,-79,-36,-89,-19,89,46,54,116,-46,49,85,94,67,113,24,11,-59,-17,-119,119,110,-57,-1,-81,77,32,-38,118,-13,113,-94,-53,111,110,-14,-19,-53,4,-20,117,-35,121,-97,24,119,18,108,-31,54,30,-121,-74,16,101,3,65,107,-12,14,-38,-53,125,-59,60,17,52,-65,21,-118,76,-112,91,106,-38,26,98,-4,-53,-108,-63,95,-58,19,63,111,-74,37,73,63,-115,-44,-84,22,-47,60,-51,9,29,-57,22,81,-87,-65,-27,-63,-93,110,63,-26,-126,7,-12,-118,-127,-70,-113,45,107,-69,103,-48,56,55,25,-55,79,111,113,120,-2,108,43,-122,-41,40,93,44,88,-78,107,-34,124,63,122,-67,29,24,14,-69,-72,108,67,26,116,90,88,-48,93,-37,-103,127,-24,-76,115,-80,-97,96,-61,-54,-22,-123,-14,-49,62,-1,-17,21,-65,10,116,113,10,88,30,-24,-119,89,-95,58,124,-112,-119,-115,88,119,57,68,-17,-27,31,-9,-64,-26,18,109,-60,59,4,-89,-127,-35,8,-90,88,22,-76,109,-123,88,-51,-90,18,45,25,47,-80,-66,75,-24,-109,-42,-47,68,-8,78,-98,-122,19,-72,33,94,2,-84,-109,82,102,55,71,-121,19,76,76,93,66,-23,-42,-2,40,106,3,123,-111,83,8,105,117,-52,121,2,-4,-18,-4,-19,-125,80,38,83,25,123,-64,47,36,29,105,-71,-72,-41,-127,-82,31,-43,3,9,73,91,124,-3,-99,101,-27,77,-51,60,-96,15,74,35,54,-119,116,-4,53,46,-29,2,8,93,75,38,-18,49,40,-30,30,22,97,-8,97,-35,-111,-62,21,97,-96,82,-12,28,-118,-12,87,29,-16,110,46,8,95,40,58,41,29,-58,105,-108,-29,36,-117,106,-118,-124,11,60,84,-87,-83,21,53,125,-31,-5,114,93,-75,-41,-127,49,-98,31,96,-112,64,60,-126,69,2,-73,94,-100,-23,81,-115,94,-116,-25,-44,91,46,-89,12,75,-47,107,-77,-10,-82,79,-70,75,-106,-1,62,-69,104,-7,-41,53,73,-32,74,-113,26,111,-115,66,-55,20,-91,-47,7,51,-96,121,126,-75,63,-23,81,14,-124,-39,-41,-13,14,16,-27,-56,-48,-84,-43,120,33,98,41,26,-6,15,18,8,31,-50,-9,121,-107,-33,-106,-46,64,127,-19,-104,-59,-30,86,-121,60,39,-79,-38,-5,-119,85,-17,21,44,-120,-22,89,73,-17,-102,49,-73,26,-69,91,-36,-71,103,63,125,-8,61,103,-20,-116,11,105,15,-116,-78,-122,-62,-80,-80,-58,-119,65,-47,99,-111,-26,69,87,-15,-38,-44,-87,-84,-14,-37,-27,-90,109,-72,-4,38,-110,82,-97,29,-50,61,52,-87,-44,8,63,92,83,109,-124,69,-47,-110,-70,-10,111,25,15,80,104,66,32,-16,-70,-49,-52,-41,-16,122,104,-31,22,-109,18,102,62,125,-123,121,74,5,92,-90,-92,72,-61,-2,98,-125,-81,109,101,-120,60,10,58,53,94,-25,38,-56,-13,80,-80,-13,45,-43,-77,-44,-37,46,-62,38,-103,-93,-124,48,76,1,-82,73,74,63,67,-59,-26,116,76,66,70,-30,-113,106,109,75,25,-18,25,85,25,-83,81,-50,78,99,-53,-68,-125,44,-104,-44,96,-126,124,112,33,-75,-29,-60,-9,-126,-84,-61,-119,-127,-6,-26,-46,-57,118,-4,105,21,-120,-121,54,-35,-70,-124,-101,-79,-33,105,-30,57,-108,-111,-48,-65,-108,77,41,112,111,68,118,0,22,44,110,56,-91,-111,-49,62,-54,83,78,66,38,-14,102,41,52,-94,14,106,105,27,24,53,-40,60,-70,-119,56,68,-95,69,59,-124,-101,-25,-119,102,-45,-55,-38,57,61,104,-96,122,88,99,-122,106,77,122,33,-5,126,-74,46,-52,116,-51,-101,74,74,2,-3,-38,-21,68,-30,96,17,71,-124,47,-23,64,-35,107,24,49,41,-50,-23,88,19,-30,55,-91,3,-14,-54,125,10,-96,84,100,100,-116,67,-40,-124,53,2,-62,45,21,72,82,10,-126,-47,54,-84,13,-50,-2,-66,103,-1,96,-17,59,123,-111,-61,-20,-70,-57,54,-110,-94,-125,3,14,-101,-128,-86,-44,80,-94,37,123,113,-104,-9,109,-87,111,120,-7,33,-62,-51,49,-57,-71,3,-49,18,-94,-32,40,-92,-52,3,105,52,108,123,1,40,2,-86,-104,38,52,-93,-73,-44,-62,91,5,-88,-91,-61,-40,-24,-30,-48,114,-115,62,-128,-93,-85,-43,104,102,-20,-103,-52,25,-56,-103,49,10,-25,84,-52,-94,51,-110,26,1,-108,30,32,126,-23,-112,-82,-102,86,-17,-108,78,-32,32,80,-112,-125,91,8,24,-69,-95,-86,-115,-73,14,9,-121,-2,101,-109,1,-72,54,84,25,-36,95,-49,-110,108,4,24,66,126,-63,56,99,-8,-10,-80,5,-73,72,-103,-35,-10,78,3,-61,42,-83,-115,84,-99,78,20,-66,30,-88,97,-66,-120,120,-46,-57,-29,118,15,-110,-94,-29,25,113,89,-110,-52,-92,90,105,-30,92,48,-44,-1,-96,-39,118,115,-3,37,15,-1,64,-2,81,57,24,-47,-14,89,48,-103,-127,-95,-114,-100,14,-69,-32,-82,-9,-77,33,-38,-76,-63,51,-32,69,-8,-75,26,80,59,-31,101,40,-37,76,-23,-110,-23,-84,-83,111,-31,122,124,-56,-67,4,-112,-123,65,101,67,12,-23,-43,-12,54,-87,66,35,-89,-47,55,-105,100,19,21,-80,-76,-85,-61,-117,19,107,42,-71,86,-9,33,-80,-65,120,-49,106,77,-34,-50,-38,-27,21,65,-28,97,108,42,-77,120,69,127,24,-20,89,-66,112,-126,-110,43,103,0,-63,-17,28,36,-43,-117,-68,115,-69,107,70,2,94,9,95,-83,-99,53,47,80,-105,-27,28,119,59,95,82,-94,-16,15,-49,-122,16,17,-89,64,-6,4,88,21,47,50,-78,-25,121,-47,-36,72,-21,29,-101,9,-83,-113,28,-68,23,-67,115,-101,-101,-98,102,-124,-98,-24,-89,82,-28,-89,40,125,23,97,83,-53,-7,-90,-108,-83,-113,-58,-26,-119,28,35,97,-74,6,-40,-15,-10,11,79,-98,101,101,8,-72,-99,117,-65,80,127,95,60,15,-29,2,60,-92,-118,-116,79,46,-79,-62,104,-43,73,107,-43,117,-127,-67,44,113,-41,67,-73,-98,26,74,-111,59,79,45,-60,21,-26,18,54,-72,-70,-30,114,10,-82,-124,-52,-126,-97,108,-19,120,-111,-52,10,102,18,99,49,-128,-17,91,83,-46,-76,-3,45,-41,47,-72,-19,3,112,-104,14,122,-77,-35,121,-23,41,-123,-60,-2,50,44,-45,84,69,-58,43,-69,-98,-11,112,-17,-95,-36,67,-69,-52,-11,98,-45,-126,-33,51,81,101,-38,68,67,-37,-78,107,12,105,75,-109,-100,-55,0,45,11,-24,3,-70,54,77,-63,52,125,93,-16,-97,-22,35,97,46,58,-61,66,-61,-98,12,-43,-45,-63,-36,-79,-58,41,54,-49,-63,48,-33,-110,-36,-49,93,73,-33,-78,50,-76,-48,-6,4,-87,-81,-88,-30,-33,10,-109,104,-94,38,94,-124,30,102,6,37,97,73,56,-106,-18,70,84,4,-31,-90,-27,54,63,10,50,-18,-113,-116,125,-86,-119,33,64,26,-128,-77,-25,76,-127,0,-79,60,-65,-63,5,-5,101,69,-91,-49,67,121,71,-22,59,26,-87,66,-26,-79,7,-73,-51,-114,0,-22,40,-87,-115,29,-18,-72,-23,-96,-55,69,-119,68,-102,124,-99,16,74,5,-34,87,120,-6,-28,-92,-111,-85,-42,-36,123,-52,-86,83,-77,43,-15,124,59,103,-81,96,-80,0,41,-62,-22,77,-13,-99,71,104,-121,72,43,4,107,80,-62,-98,54,-63,-13,10,-92,-119,-95,-90,-76,76,78,-108,95,-117,122,88,-115,52,-10,122,26,39,101,12,-80,107,-108,-13,36,-72,36,63,82,119,-57,-7,-44,77,-55,-54,-25,102,-118,-91,-93,58,11,-30,11,80,-62,111,-77,3,105,-63,39,-50,-33,29,-6,52,-98,51,-80,-5,-50,93,-122,116,-77,79,-45,110,-103,-123,-20,-16,-58,-101,93,-11,57,44,24,-60,-118,32,64,80,3,107,-25,60,126,-90,124,-22,-95,-57,-91,83,-46,-28,1,78,-47,15,74,42,26,42,113,-76,14,33,20,-93,37,89,107,-22,16,-16,23,60,108,74,-117,111,52,-97,78,53,-127,9,123,-78,-15,86,-17,5,-17,28,-120,-76,69,-76,13,120,-64,-17,-35,20,-98,-42,126,-88,-99,-113,10,44,84,-35,115,18,81,99,2,-82,74,12,-125,110,55,31,-110,-94,23,-4,62,-62,-122,40,-120,42,110,84,34,2,-3,-75,-24,-10,124,-46,-38,-14,-11,57,109,27,111,-99,6,27,126,41,72,-29,106,96,-24,96,60,42,-18,-104,82,-69,53,15,92,127,-79,-70,-102,102,-53,79,32,-119,84,115,-36,-84,7,-24,2,-77,103,54,60,-7,1,-64,-7,114,-22,-5,19,-49,80,107,-7,89,-2,-63,-26,-51,-111,17,-108,9,-40,-51,58,108,-55,-68,-117,-51,99,-117,-17,-33,46,69,13,4,-23,-71,-110,-95,4,119,103,31,-30,23,76,-36,39,6,-117,6,76,80,106,-124,18,-3,78,3,112,40,23,-100,-55,75,-118,-52,-16,18,69,-91,-77,126,-87,103,41,-127,7,106,105,77,-23,50,72,75,-16,126,-19,112,67,-102,-4,-56,53,-72,38,-60,-69,0,30,47,-95,53,100,-127,-16,-16,-18,29,46,90,73,-112,-97,-15,-111,-38,23,45,44,115,-93,-32,-68,-10,86,69,19,32,-104,97,-112,60,64,61,87,69,55,-4,-92,-77,-28,-82,76,56,123,-105,52,-38,-1,80,81,-40,-14,115,-78,32,-59,-115,-123,50,3,-14,69,5,-39,-124,70,34,61,-57,-35,34,127,-13,-120,109,-108,-22,68,-125,81,35,89,-21,88,107,87,-32,110,-19,-27,-82,-114,99,-81,115,-54,90,-92,65,-126,64,26,-114,36,-93,70,10,-94,-90,-111,118,-45,-121,-3,106,80,-101,10,-25,-12,39,-72,114,47,125,43,33,88,-81,-109,10,98,-98,28,105,96,-43,123,-58,-115,-88,-122,85,-80,91,26,-26,103,-121,-88,-66,101,-88,87,125,20,-62,-58,-46,-113,-36,-100,93,79,-108,33,49,-45,-19,0,70,103,-19,-48,-15,29,40,122,121,118,86,102,-83,111,-26,-86,-124,6,49,86,50,-67,-28,-104,-28,35,42,52,-25,-87,-70,-6,18,126,-128,123,-3,-109,-94,-49,-120,-62,-89,62,-107,94,109,110,10,-37,99,-126,-116,-85,100,113,-19,-52,-101,65,-45,93,96,-49,-78,84,-44,28,5,-110,-26,-48,62,127,-53,49,57,67,127,-85,60,120,-96,-67,107,34,91,-60,-6,-80,-77,-8,-119,50,-52,89,-64,96,127,-60,-76,-34,-52,-1,34,-25,99,100,-94,-46,-47,12,47,-47,45,-14,59,3,-85,-74,-49,103,-6,-79,-1,-25,-2,0,-44,-29,6,-11,108,-23,91,-48,56,75,-71,-77,-46,-100,-100,-98,90,-29,-35,-56,-3,54,-62,-126,124,1,-26,-88,4,101,-113,95,-67,75,104,39,-106,68,-127,127,-15,-36,23,-12,-51,-118,-67,-22,-39,-71,52,-77,104,9,10,-106,53,34,-67,-98,-74,84,87,95,38,-35,-38,-103,-125,-124,41,-31,3,-89,-107,-41,-9,-90,-58,-39,83,-106,-24,-86,-93,18,14,23,36,-56,75,-36,-123,10,109,7,13,-119,80,113,-68,45,57,35,32,-17,28,-1,-98,52,-37,6,-97,118,-119,48,-69,-102,-18,37,-4,-59,15,101,91,40,3,-31,5,-9,105,-9,-33,-31,-71,-7,-112,-71,70,-2,98,46,-99,73,42,-77,-38,53,48,-1,76,-120,-33,-62,117,-35,67,-117,58,33,2,-127,-66,-100,-117,-82,115,91,-111,33,-125,24,-89,76,15,84,27,-5,49,-87,-72,-35,-49,-128,114,65,-71,82,127,100,74,41,-63,52,-67,0,8,117,5,-102,123,87,8,-37,36,126,-108,71,-73,20,-76,104,-71,-50,-56,18,8,-62,-105,-52,-127,41,-26,16,-122,31,70,11,-100,-109,-35,117,88,29,-78,-45,115,-86,40,102,18,-58,-84,-54,32,-36,51,56,52,107,38,126,78,-66,20,-77,65,-119,26,-113,85,-92,-35,-67,-24,-47,43,-9,62,-70,-41,-66,-7,-72,-79,-77,56,75,67,49,65,43,-78,102,113,98,-47,53,20,-116,-2,-4,-12,-36,8,50,-118,-79,-37,-120,4,103,51,62,107,-90,49,79,-17,61,36,-15,17,-117,123,39,-87,61,96,11,-108,1,51,53,36,-19,-69,-51,-40,-91,-90,127,-62,126,-72,79,-61,123,-27,41,11,14,-67,76,-17,-70,47,-104,73,32,-109,-120,61,38,-1,31,-37,35,-26,-21,59,-53,18,-85,75,106,-83,93,-31,-18,18,-127,19,66,10,-74,-25,45,-109,18,30,4,-62,13,-47,13,44,-59,-96,19,-113,-18,65,-5,91,-75,-21,68,46,-90,25,-110,-115,1,-88,-91,13,55,86,24,85,-60,108,93,-61,27,-14,28,-17,-110,-18,68,113,70,-52,58,52,-9,111,-64,64,-97,-100,0,32,43,-88,13,0,-32,110,-104,108,92,66,-112,34,65,-64,-125,-9,106,113,-116,-35,91,-88,-91,13,-16,-117,3,121,37,-84,-75,-44,-1,-49,13,81,-77,46,113,15,-115,-37,21,33,-17,-19,-83,27,-95,28,83,22,53,-23,66,-57,-25,-15,-56,106,69,49,63,125,-120,106,-86,40,55,4,-96,43,-26,60,-107,-76,-116,-89,101,98,51,-21,106,53,-49,110,83,-119,27,36,2,86,-5,-50,47,42,-75,52,-59,-71,63,-67,60,6,83,65,124,28,16,14,63,52,-58,23,30,49,-81,-123,-26,-39,42,60,-27,-66,-61,-18,-88,-46,-22,-61,-60,66,65,-100,111,100,116,50,92,-83,103,111,-72,116,-5,111,72,101,39,54,-65,8,-44,-128,-88,18,113,-70,-78,87,-70,29,112,63,-31,9,12,-27,-109,-42,-52,-48,55,-70,95,93,-71,122,-46,-115,53,-22,-27,125,125,50,-58,21,-50,-71,9,-82,-6,45,50,-14,51,-74,-72,95,104,-86,57,65,-39,6,-10,-76,21,-52,127,17,-128,-36,-23,103,87,24,-95,10,95,95,21,-96,61,-24,-8,74,0,126,-14,-44,-102,107,-119,-123,83,51,27,-17,-64,124,24,79,-96,118,43,-95,8,-75,-106,115,-84,69,3,122,-118,-64,96,-106,-29,-78,-97,122,-82,51,14,65,-80,121,-66,74,-119,121,82,77,-120,96,-82,106,56,-45,-28,78,-116,-70,-13,41,90,-77,-55,-49,-78,91,-109,-91,-36,97,-31,27,95,-91,-116,-17,-21,87,112,-51,-82,62,-42,111,64,106,68,53,92,-68,-38,-25,-55,-38,-121,5,74,-96,-77,-109,-14,-87,75,-108,-62,12,-97,-91,93,42,24,-45,-5,79,126,-71,-10,-97,97,-19,6,-80,77,-111,39,-69,42,-61,-123,-30,-78,18,64,77,-99,-40,82,127,-39,66,46,46,-82,-117,-70,77,-17,96,27,10,56,83,16,22,114,24,114,-89,118,116,-84,19,-88,16,80,-25,66,-70,111,70,-86,10,-88,-1,80,-95,-82,95,-20,-114,-121,26,-15,-77,-104,-120,-7,123,97,68,69,59,-12,24,-20,46,100,75,-76,-41,-23,79,82,-115,-3,44,-69,-100,-55,95,81,-125,-108,-121,-46,-112,-48,-22,-10,-60,-40,112,22,89,79,-99,53,48,-54,-110,16,77,-51,94,59,-50,-103,-10,34,60,-115,84,31,-55,-58,-10,64,-5,23,112,96,75,85,4,-106,55,-77,-33,87,-79,-76,53,71,-92,-8,63,118,-84,-60,99,107,88,46,-89,24,98,-41,-36,-22,-88,34,-23,78,56,84,52,-14,123,60,-20,38,-66,-56,67,-80,-6,117,115,121,-126,39,-77,-8,22,89,29,-101,29,55,-31,-108,125,123,-46,6,-88,103,-35,25,65,-58,-118,40,26,-39,62,15,77,-25,-50,117,79,44,-79,64,94,-114,-31,-26,-10,-67,-114,-19,24,69,111,14,-52,-33,110,50,-107,95,63,-71,-21,36,-22,-7,19,-95,-71,-38,124,-88,47,120,22,98,-69,73,-114,-5,-18,106,-102,-41,-26,28,-101,-41,-105,-31,-26,-120,22,-21,-44,-31,-50,-127,85,88,111,33,-114,-53,-12,71,126,53,-55,82,-104,93,-77,41,46,-50,90,54,-38,-28,-128,-68,-13,-80,34,-63,60,31,-81,40,77,55,-5,-17,-110,94,30,96,61,26,43,-48,101,-128,13,-8,-29,-6,-60,115,107,-62,-57,54,13,96,114,-89,-69,36,-40,106,107,98,19,-28,14,-4,-97,-60,-64,-71,-107,-48,-50,75,-54,90,108,60,-101,-104,92,25,-60,-17,-63,48,103,113,59,24,51,32,-101,-26,121,71,-83,-21,-68,79,42,-115,5,89,65,-38,28,-91,4,22,89,7,122,-57,-51,-120,-110,-58,-42,-70,102,105,-112,33,21,-83,-14,62,123,-116,-55,-114,-110,95,-46,76,-6,-12,-88,-48,49,-126,-67,95,42,-94,76,84,-64,-112,-20,114,-8,9,-96,-38,-85,-38,72,55,127,7,117,54,41,-52,-89,-46,-121,-95,-97,-113,95,46,79,-105,36,96,62,111,89,-38,-97,61,120,24,90,-111,43,-69,48,88,-58,25,-89,55,14,26,121,-126,79,42,56,-43,109,-88,-53,31,-114,69,-1,-81,-50,94,35,20,62,-93,69,-96,-35,120,-103,-86,-44,126,-96,102,12,54,-97,-79,-49,97,-18,80,-111,-68,-17,39,102,87,6,-10,2,11,-89,-74,-43,-104,-9,53,28,-68,-126,-71,-26,66,34,102,-36,32,-96,-83,-127,87,83,-50,-98,-60,71,-81,-97,108,-74,50,-98,20,-9,75,-48,8,0,124,74,-27,-59,1,118,-121,52,-57,112,15,81,120,-66,-10,42,87,-89,-92,-123,-1,-74,-29,126,57,31,-50,115,-47,-89,-20,-107,51,28,49,110,38,-37,-73,-72,-70,-20,-124,-109,67,-114,7,64,32,101,-76,-107,52,-109,-89,51,-51,-98,-3,122,100,-2,-57,34,-38,-101,22,15,92,-104,9,47,-9,47,-18,27,-38,-122,-58,-20,102,-63,-78,-19,-71,65,-112,-48,49,85,27,-113,-57,24,108,81,-96,99,-47,-67,-121,2,-17,-29,-9,109,89,-45,-127,122,-59,44,-81,55,-39,5,40,-11,0,61,37,18,-82,-97,-69,27,-45,11,-70,31,-88,117,-98,114,115,75,-104,-3,46,104,-67,21,49,18,95,-8,31,11,55,22,-76,39,-17,24,10,-63,-97,114,57,-46,-62,34,-66,-86,-94,-109,-67,124,68,42,26,-65,-60,-41,97,59,118,55,-104,16,-25,-99,-13,-28,-50,103,-50,51,-77,55,91,53,-17,-82,-108,-121,-54,24,118,77,24,73,-120,-61,36,-63,-122,51,-88,104,22,76,14,118,63,122,-31,-115,59,-92,29,101,-66,-48,-7,30,-5,86,-41,11,-87,71,-15,-30,75,-110,2,91,9,18,101,-51,-102,-115,-83,37,14,-41,-17,-43,106,-108,-42,-86,34,65,57,-13,12,114,25,-69,-36,-48,93,-89,-99,-104,54,15,19,-101,-105,-51,24,-26,93,-2,95,-43,51,-112,-14,-83,69,122,77,20,-7,-29,107,79,115,-102,115,-58,-111,8,46,112,-67,-97,-20,-88,98,-30,75,-47,90,25,110,3,-8,94,70,47,22,-103,-91,-54,58,-12,-38,-50,51,72,37,27,7,-50,-112,31,-14,-76,70,-95,-109,48,-111,-75,118,30,-2,-7,-123,33,32,-89,-47,-6,25,67,73,-7,-29,-93,49,112,111,76,-65,-76,8,-95,45,-79,83,84,23,-96,20,-52,15,-56,-70,7,-58,85,106,122,-96,-84,8,85,-101,35,-30,-14,23,33,112,-86,20,73,-93,-30,-8,-39,-79,-77,-36,-107,-38,-112,-89,-27,49,103,48,127,31,-22,68,100,-35,99,57,74,-26,85,118,-43,101,105,-76,-127,-93,44,-1,68,39,12,93,13,-33,-78,11,85,-51,44,-99,-85,12,-63,98,-92,-5,76,25,-86,-68,-121,-67,-109,-64,31,64,-58,-90,126,52,20,-41,27,120,-117,-86,71,-128,-28,-128,-39,82,113,-102,59,30,78,-128,30,103,-95,-11,117,74,94,113,46,56,41,-96,48,-85,-28,-25,-79,104,-73,3,2,30,76,-22,-103,101,-89,83,34,2,-26,127,25,-82,18,8,-3,-20,52,13,-21,36,90,-38,112,-85,-79,-92,9,-72,15,98,-26,-32,26,-4,-26,-94,-5,112,69,-21,-84,31,-17,-112,46,-83,-24,-105,-102,3,15,-60,99,-123,-6,-47,-120,22,70,125,35,86,38,35,-100,5,89,96,-33,64,-55,29,55,-82,-3,17,52,89,104,126,-125,62,-80,113,53,34,77,83,-65,-28,-27,2,-114,68,-37,-4,89,-94,-41,51,43,-85,-36,93,74,-93,-8,109,-70,-92,114,-120,-63,44,77,102,36,50,88,16,99,19,-9,64,-43,-57,-81,-67,-9,-70,89,-64,53,114,-99,5,87,-31,74,66,75,-37,108,-100,-101,85,-44,-120,-70,-32,92,80,-16,30,112,-102,99,96,-6,123,100,-89,102,-38,102,-90,-80,-9,9,52,-47,-114,-128,-81,-112,2,-40,87,-41,46,119,-15,-107,79,15,105,-53,108,-22,72,36,45,-88,82,59,19,27,118,123,-93,-44,-46,93,-98,105,64,-80,99,-8,-110,-51,33,76,-58,-103,87,26,-13,76,-93,83,-13,127,-4,-54,-52,21,70,20,-93,-7,19,102,7,94,41,14,67,-52,17,23,54,-81,93,76,-61,-23,-92,9,-118,110,99,-128,-53,123,-127,-125,-24,-76,88,63,-79,-65,71,59,-79,-45,-64,-111,-85,-53,55,22,-102,-78,48,25,-67,100,0,72,30,19,56,-6,-54,40,-71,98,-42,127,-46,40,58,34,-6,21,-112,-113,2,-42,-14,-25,-78,12,-55,62,58,-44,-127,-40,85,-80,29,-27,-72,8,73,-36,-32,-21,34,-46,84,75,41,109,-41,-92,123,20,-123,72,106,47,41,-12,-73,-38,117,44,-89,-128,-102,49,-65,-43,69,-119,-53,60,-97,9,-39,-118,-33,28,-58,105,-41,111,70,39,-41,58,90,20,-25,110,-21,50,-114,-104,-68,-35,96,-16,58,98,26,-98,-80,63,74,-85,119,21,-124,118,8,-61,-125,23,-112,30,-77,-11,92,-28,-101,-9,-57,93,-49,32,103,-97,87,-96,116,77,-48,92,-27,57,-29,52,-25,-107,-77,114,-50,99,-79,-58,24,-19,-96,47,-113,-80,8,-72,-83,69,-6,92,55,39,17,21,76,-127,-5,-115,-60,-55,-28,-43,40,-43,106,-35,112,-57,25,19,80,-39,-6,-79,-111,4,-59,121,-77,-103,-89,-113,-127,28,61,-125,-50,58,-38,43,-33,124,41,-105,69,2,99,-31,83,-119,-21,90,38,92,-88,-83,113,56,-56,-49,61,-74,-2,101,-23,-114,26,-95,114,-52,-73,-53,-7,116,32,119,49,81,-88,-102,-49,-126,50,38,-47,-13,76,-73,69,-124,5,-63,-53,11,-42,-97,35,46,29,112,-43,-2,46,83,58,-17,41,125,-5,-34,-96,49,67,-17,-80,-82,38,81,29,-13,84,96,-112,13,49,65,117,23,52,3,49,-43,-26,-88,-97,-60,93,-93,-34,-74,-54,5,-113,-73,64,23,-95,17,50,-112,123,4,-90,-35,103,-41,16,26,-104,-119,109,-71,95,60,28,-71,-41,5,-26,-118,-31,58,-126,-93,-50,30,-48,-51,-31,-92,-2,-75,85,71,-52,112,-48,-65,74,-24,41,121,104,-95,122,-49,-83,119,-20,97,38,23,-73,55,-22,-118,45,-37,25,47,-122,-4,89,125,-105,55,37,102,52,34,-12,7,85,-6,15,17,13,97,18,20,-92,107,79,-16,117,60,-80,-3,-23,-70,81,124,52,105,-36,-44,-125,-81,-40,28,88,-111,-57,-96,-49,-5,18,71,-37,-73,32,53,1,77,-124,-70,-107,-79,33,-83,-34,43,-125,20,-55,-53,15,59,59,71,-97,44,78,33,80,-20,65,-72,68,-125,23,-3,-30,-89,93,88,64,123,-44,117,126,59,38,32,-5,40,125,98,124,-104,-31,-27,-59,98,12,-43,125,-48,-74,62,43,-6,73,19,-3,100,-104,35,-62,47,-8,60,37,-125,-100,49,95,-74,-15,76,8,58,14,20,-85,-56,29,-125,70,94,-60,-112,-56,82,73,78,92,-40,-37,-50,37,22,19,23,63,-49,116,113,27,82,-5,46,24,85,41,-11,106,102,-123,45,60,-108,63,-67,124,114,53,-126,-14,-108,64,-6,-27,-19,-101,102,-27,112,-45,-4,93,-36,-68,93,-111,-64,69,-109,-128,-78,-16,-79,-62,-51,-8,-40,-39,-94,-4,-117,123,70,87,-79,-91,15,18,11,98,-51,-104,-59,-76,40,-82,100,110,102,13,42,71,117,-81,-120,-41,-48,-17,44,-20,-44,-120,79,76,123,-128,-51,111,71,-41,-86,-76,-32,80,124,-43,-65,123,5,21,5,55,73,34,-46,-55,-108,58,116,110,59,85,-61,-24,111,-86,-34,-128,59,-111,45,-125,-47,-94,-90,48,-56,-109,-95,-37,79,-127,-17,102,-96,-52,16,-77,40,31,-59,-93,10,-26,-28,108,-85,-2,95,-25,-94,-88,120,30,-69,-24,-9,90,67,81,-92,123,42,116,12,123,86,88,-86,10,-77,-16,54,-119,-43,-54,-7,104,-75,-111,-3,63,-95,-96,112,-68,68,80,-128,3,-37,-13,74,-113,-88,62,-32,-40,55,-48,-21,-64,118,64,-126,-41,-75,-79,-112,-78,19,-81,20,-10,97,86,-20,127,56,101,118,69,73,-62,52,125,-84,-15,-30,65,-53,105,-59,-54,-87,87,87,-116,-120,49,71,-48,99,-108,-19,-107,-40,-98,58,86,-125,-119,-62,-38,91,23,85,-55,-31,52,123,-76,77,120,49,122,-19,-118,-56,86,-15,-74,-82,47,-83,-121,21,-69,-86,119,-39,59,87,-84,1,19,-67,-58,-122,-45,-38,54,-96,-13,-91,100,-118,-97,73,-72,-30,23,-30,-121,-36,94,20,-38,22,-4,-7,-85,50,114,95,-105,35,-85,-89,-41,93,8,45,-53,87,93,30,117,17,-61,-61,69,48,-52,-99,-75,-104,-113,10,-27,80,89,107,119,-76,-30,125,75,122,55,8,-13,-37,-37,24,13,33,31,-14,98,101,-51,27,24,37,-51,-15,110,83,-49,85,-122,-30,18,92,-17,101,12,-54,97,-99,4,-82,73,-46,111,-7,29,-75,90,-91,106,45,68,68,-111,-63,99,-74,86,-122,-35,-28,21,-22,74,-70,-80,-93,50,14,-9,-84,45,-41,-18,-50,-105,82,-94,-89,102,-38,74,120,90,-17,43,-82,-83,-17,-119,-106,52,-63,-80,123,124,-118,75,98,0,-76,-100,77,-72,80,-18,-49,61,107,100,89,-27,-70,93,-52,-68,-46,-89,49,-9,13,-77,-29,103,-69,-52,-88,-65,39,-33,-119,-105,96,29,48,86,55,-76,62,-128,5,109,73,-94,-43,-11,-82,-32,122,52,33,29,-40,63,-89,-88,-16,77,67,-69,-59,-106,112,59,-67,6,-92,-115,-120,107,40,38,-33,69,87,81,8,9,9,-31,-68,-110,113,-117,-81,44,-62,-85,-23,77,-6,84,-126,-63,58,105,75,-48,38,80,-45,-2,34,-62,-8,107,-16,-82,-128,-17,57,-113,-99,12,-110,-47,-44,100,-23,121,-29,42,34,-64,-124,100,123,105,-128,-7,117,5,-13,13,-125,112,-4,86,53,-128,-87,-81,-75,-18,-77,116,-110,-122,-60,100,-124,117,-35,82,77,87,125,29,-127,123,100,-54,-117,-100,-105,-49,-77,2,-4,-110,-101,6,63,53,-103,76,-40,-118,108,-103,122,52,-3,54,-86,57,65,86,-106,4,-99,82,-44,68,15,-41,51,17,4,92,-63,22,-83,-126,65,63,-115,76,80,-109,-50,16,105,79,-115,96,34,-71,-61,-89,98,92,-36,-88,113,56,18,-123,32,120,110,81,-29,108,-31,34,-24,-102,-33,-8,25,76,-128,77,84,90,76,-98,-4,-104,-105,-65,10,-62,29,-80,89,-116,120,101,22,-36,-85,77,3,-44,-107,63,45,-19,-126,16,-29,1,31,-125,-108,113,30,-103,-38,-127,26,-18,-56,-120,-121,32,102,-25,-7,-85,47,-50,-121,-109,-6,-127,-34,55,-114,-34,82,-6,-44,83,-2,-69,-34,101,-21,123,25,33,-23,-108,-107,-46,-46,56,-30,38,108,106,60,-31,-78,8,25,4,124,12,29,37,2,89,100,40,-48,21,-87,-53,109,-116,-46,77,-60,-64,-68,122,-25,-109,-71,28,62,121,-84,-73,80,12,-118,-88,-89,109,106,-74,-62,89,58,-65,-73,-74,-64,-110,-73,-27,96,-87,-128,-122,-72,54,42,22,73,-37,-87,6,29,31,-46,62,-99,23,63,114,10,-20,-43,68,-24,15,124,-63,76,-25,-12,30,-86,-43,38,111,-121,69,-5,-49,34,-42,-51,119,39,80,86,-32,27,-74,-71,-24,73,-25,74,-11,53,104,117,87,-32,-11,-115,-24,99,-78,-7,-113,-99,-76,112,-20,121,50,-9,-103,-10,111,-68,-9,-35,96,-108,10,-38,2,-18,-73,-64,90,-105,94,103,-22,22,116,99,-68,-42,124,-122,-117,-119,-43,-6,47,72,90,-52,52,-76,2,-22,-84,-19,-85,-124,92,13,-115,36,2,107,15,127,-76,47,-39,-109,3,90,-24,1,-74,-29,-17,-27,-21,32,102,26,-57,-108,-114,-112,-104,76,-47,-17,86,-86,38,106,114,-81,-77,52,67,-28,-68,-63,23,-57,-110,-81,95,-35,-97,-29,-96,-11,64,-1,-118,-99,-25,-24,68,-118,-84,68,-113,94,-39,77,93,-80,-1,12,-123,97,80,111,-117,-52,5,-24,5,-98,-27,48,-96,-37,-108,70,-28,63,-21,123,23,67,-33,-96,47,-58,-50,-124,-109,-64,20,-37,44,-101,34,95,100,94,-57,39,-4,-21,-62,-76,-37,-72,-51,10,114,-21,113,45,-68,27,-77,47,105,18,122,-117,43,-99,-82,40,-15,-7,112,27,-86,-37,83,-8,-53,1,-110,47,64,-58,44,-50,14,18,-33,69,-17,-90,51,35,-58,-103,29,100,38,107,-44,-99,106,-49,-90,23,107,-44,-79,7,-21,-10,40,-76,-58,-50,-106,84,-47,34,91,-9,23,113,114,-11,-91,-62,64,20,58,44,-76,-105,-55,38,-101,121,94,-125,81,-55,-128,-101,-22,100,78,43,94,-46,118,-103,-36,81,48,45,90,-3,2,44,-8,-66,-49,104,116,-90,-69,-78,28,-65,15,-31,103,-71,14,-103,-90,-54,36,-81,-62,70,-35,-60,103,-13,45,20,-32,-93,127,59,127,-54,-89,-23,117,48,77,3,-84,-35,-56,37,87,60,-115,11,-27,44,103,78,-16,-112,-3,-44,45,61,-112,-102,-104,88,-67,102,121,-106,104,46,-39,52,-91,-77,-13,-79,118,-52,61,-90,-5,46,24,-59,-84,57,-34,101,-62,47,-66,-18,122,28,102,32,-123,-19,121,81,12,-110,89,-78,-38,8,-78,-94,-2,44,111,-36,-2,-66,22,83,-59,-43,92,60,-29,-71,92,-51,7,19,-2,39,-66,-100,116,-78,92,7,124,103,107,127,-115,80,62,99,98,-95,-74,109,-3,59,-126,-61,-93,11,-58,87,-24,100,113,21,-65,-71,-103,-106,122,96,-71,100,-38,-118,-23,72,0,-55,-68,-108,88,73,82,119,-105,-90,59,-41,99,37,76,-41,-62,94,18,-37,67,68,56,-41,110,53,-24,14,-62,38,-121,-84,13,48,48,116,-17,110,-80,-63,50,-4,8,111,-77,77,-4,112,19,-9,64,-32,-45,72,77,-90,-127,88,74,-61,-85,63,-75,125,-46,-15,-86,79,116,76,7,46,-99,36,14,-55,0,95,76,101,-115,67,-18,-35,71,95,-104,8,-124,38,-42,13,-70,18,98,77,51,-82,-27,-61,-66,2,26,2,-26,-61,-119,-70,44,114,27,99,-99,14,97,34,63,-88,-44,65,82,30,-47,-99,-97,13,-13,48,47,4,117,-29,37,11,-7,28,78,41,-59,-94,8,99,-125,32,-109,14,-13,-58,11,101,100,-94,-61,45,-49,90,47,84,77,19,12,-24,-86,-63,112,-48,73,4,-91,54,47,3,67,5,68,-26,-64,110,-71,113,-96,105,23,-14,-79,-18,67,36,-35,-36,48,68,-33,-5,56,39,-56,-20,-11,-43,6,82,-33,121,29,8,-78,28,-29,-101,-76,-81,116,-98,-72,97,-16,107,123,-89,-47,-84,102,-113,-107,105,-24,-112,-67,-77,-41,-18,29,49,-19,54,49,41,20,63,84,15,103,33,50,-25,-118,42,87,61,48,-48,-121,16,-74,-85,-13,6,-14,-76,82,90,-68,-4,-40,2,17,-101,81,-80,102,-2,-64,-54,-74,8,7,-117,99,21,21,-50,74,-36,-89,-75,85,-35,-29,-105,2,-55,2,28,71,-118,53,126,-84,2,9,-20,-104,45,4,76,-113,10,124,83,81,88,50,95,66,44,-110,122,17,30,92,-85,26,-53,73,-78,-32,-127,5,3,34,-75,81,54,-15,-13,9,-42,-126,-102,7,96,119,34,109,6,67,-70,116,9,-26,103,19,-9,116,88,-12,-88,39,92,85,91,-87,33,-43,120,96,-59,-53,84,12,-18,-68,-87,3,48,-99,-28,87,21,-88,86,-93,116,63,33,100,-65,-56,-36,-36,-38,-80,-97,-62,-87,66,-65,77,103,85,73,-99,103,102,104,-80,-70,60,-96,-6,-67,1,-1,-44,90,-80,93,-59,39,-81,66,63,-35,17,-58,-56,-49,83,71,-80,-54,-111,92,-7,-48,29,-7,56,-107,-114,-75,21,54,-124,-3,-60,-78,-13,61,-110,123,80,-49,96,-105,-115,-29,112,-68,126,-87,-74,82,70,16,-70,-84,53,22,-16,29,-40,-90,-47,14,-117,-3,6,-13,64,-84,87,-100,52,23,-57,108,74,-37,59,82,45,87,20,-65,52,57,-96,-61,2,-39,-33,78,-79,84,-61,63,34,37,27,-13,12,101,32,9,-16,-19,21,59,-119,-97,57,-124,127,6,76,83,80,-31,27,102,-105,118,56,85,89,98,16,-57,68,3,6,58,-95,-77,-78,26,-26,5,-21,-113,23,-110,90,-16,35,-23,-108,-47,-14,102,-42,119,46,58,10,83,-117,80,-49,-38,-58,25,80,-85,40,-54,-2,-35,-100,-80,-77,87,-122,-45,-94,-115,63,86,-10,84,-47,-114,101,123,111,-75,71,-111,-47,-35,43,-99,-22,106,-3,-89,-94,111,22,-52,95,-17,104,71,96,10,7,-99,-90,32,-38,-81,-7,-112,30,-16,-11,106,-104,-30,78,99,-110,30,-31,-125,111,-50,-19,-50,-66,109,-113,95,26,-74,-86,-66,4,70,-4,-14,-2,-86,-83,48,118,-62,-30,-78,-2,102,-105,-45,83,37,58,53,100,-66,46,-25,-104,125,-112,89,49,95,75,22,88,19,-76,-35,101,39,20,54,-82,61,-40,-83,-106,32,-106,116,-80,-52,-45,-86,-126,-56,-71,108,52,70,39,103,-24,71,121,120,117,9,5,110,-97,-79,-39,-56,77,71,-90,-97,3,-8,-64,-102,-5,105,59,-100,-76,-65,-99,-6,-7,85,115,112,14,118,65,10,-60,116,68,69,-83,-118,23,24,13,40,68,-78,-2,-43,79,96,-63,-5,-19,-56,19,94,-79,-7,96,19,-93,-47,31,30,22,43,89,-104,61,-49,29,-111,61,121,-41,32,116,-17,121,-109,-51,7,51,-6,-80,-105,-84,-41,88,16,-61,91,115,-25,69,-80,-12,-70,45,80,75,-38,-22,111,15,39,-71,62,68,40,-51,11,-9,44,51,29,-27,112,-106,-95,29,-114,-105,68,105,-68,-109,-13,-82,51,33,50,-48,-103,-65,-46,13,-51,-29,17,54,-91,123,108,-73,-120,43,27,100,32,-13,52,123,-52,33,-43,-110,-76,-79,-30,-86,109,-90,49,103,39,-28,-52,41,0,106,-13,10,-57,124,-15,10,74,-124,26,91,-63,114,-48,52,83,11,-44,95,-23,13,-57,114,-108,82,96,39,27,-34,29,-60,99,30,5,-101,117,-128,-74,-47,-33,-118,-69,-121,-112,-18,20,-6,-35,117,-80,-35,109,-102,24,-33,47,-5,-13,101,4,-127,25,1,-117,-57,-65,74,-64,-107,125,0,-78,-60,110,-100,-1,-19,-63,27,61,-17,-75,-84,-29,-56,-25,21,107,46,88,-33,-89,109,83,-83,-100,-121,-55,-48,-3,29,28,98,-64,-59,-73,-65,-63,-86,30,92,-29,4,65,-26,47,-111,1,-21,26,-109,-86,-119,-1,113,-29,-88,77,75,-54,-35,22,-95,24,-40,127,80,-56,-24,43,125,-18,97,-77,-32,61,-85,69,-105,19,9,65,127,10,9,90,-76,-37,-2,-18,-15,-57,2,27,11,-51,109,28,17,2,90,69,22,98,-55,-63,-53,125,48,-13,44,-96,-94,-116,65,88,-2,72,76,61,79,12,64,-112,-11,44,72,-103,-29,106,-24,78,91,72,-93,74,-123,-36,-121,4,79,92,-28,83,-109,-98,-99,63,92,98,-39,94,-43,-57,10,83,-23,92,50,79,-111,-32,-79,40,-34,-26,91,115,-124,-19,68,-72,56,60,-101,-73,-55,36,-83,-59,-86,-73,3,-98,-85,3,103,10,-113,34,53,-90,112,-114,-122,26,46,58,52,51,-101,-1,29,-87,-108,-77,25,-51,0,32,97,-36,57,67,117,-124,-61,13,-67,8,-108,-50,-59,28,95,-112,10,124,105,-54,-127,-43,-86,-50,53,-1,-108,-111,65,35,-42,-28,-119,-47,-92,-97,15,-50,12,63,-42,10,-71,22,-23,83,-24,-28,20,69,114,98,108,29,3,-42,123,-101,120,13,-36,-44,87,15,74,-89,77,56,-23,65,-12,19,54,66,-31,-16,-111,109,-43,111,-87,69,79,-8,124,-17,-46,-48,15,61,-28,108,-72,-58,-55,53,83,-80,118,43,-88,-54,74,-102,-38,56,116,-80,-125,-75,-3,105,43,88,-66,117,-120,-58,82,74,-5,6,78,-72,-79,-51,85,-49,-100,123,-42,4,90,-33,-55,88,127,60,-115,20,-123,123,117,9,-75,122,-19,-97,-98,-15,90,-32,92,94,-86,41,68,93,106,-60,-41,-80,40,24,-91,-86,-39,73,-120,-27,125,-87,65,-123,-41,-9,35,113,91,-40,-111,2,5,34,83,-66,114,-111,90,57,126,-93,62,-117,5,60,-68,11,-105,-35,-33,51,-52,-45,97,83,117,36,-81,45,59,-43,64,-62,69,-95,110,88,102,-125,107,-97,43,95,-122,4,1,-51,25,-12,43,-22,100,98,-64,94,64,-74,45,-38,-46,102,-21,-37,29,-123,-104,119,-2,-40,115,-31,15,2,21,-115,75,82,-8,18,74,8,27,-80,90,88,10,37,-104,-1,-82,77,80,-97,-99,-105,35,40,110,-49,24,99,-94,43,20,40,-40,10,113,-71,43,-63,-22,77,64,-3,-79,-82,-44,-53,23,86,110,-124,97,-27,-106,-95,104,-96,-121,25,-14,74,54,120,72,107,-128,-9,-60,21,49,-67,-12,18,-30,-33,-91,77,40,38,33,-70,7,-43,-89,44,-12,111,-108,14,36,-15,85,112,-85,-109,-48,98,57,100,-17,85,-123,-72,-111,60,15,-124,11,90,-105,7,-107,-121,91,-10,-98,83,-116,-10,54,-128,64,59,38,64,-25,36,-17,101,-96,-108,67,-89,46,20,26,126,-71,-1,0,77,32,-72,-31,-29,44,-14,-8,-74,42,-11,-21,95,119,84,123,-128,30,27,20,-74,38,-11,-122,41,94,-51,-33,-115,45,74,7,80,35,18,-30,-101,-6,95,-92,-69,33,16,15,-59,-111,3,-67,-86,28,-43,40,68,27,-111,-95,-26,98,38,83,106,-126,-34,86,-54,-102,-110,-88,38,40,-37,46,81,11,-122,-8,-46,30,112,90,-40,95,-61,-73,77,-123,-44,105,32,-109,-110,81,-23,127,-83,81,-55,77,62,-44,-33,-70,-62,4,52,115,32,-36,-96,-123,-33,86,127,86,38,43,53,21,106,-125,-69,-16,84,-98,-80,-12,17,-25,-70,-72,34,-33,-115,-119,48,42,-34,6,91,-18,-19,22,0,46,-92,-27,106,-116,35,78,44,50,-110,-113,7,14,18,-123,22,-112,113,-91,-51,-17,88,-83,-51,-19,30,28,109,-64,-114,86,73,-33,30,-1,-121,-58,51,-109,86,104,89,119,-76,-28,-90,-95,-100,69,-55,-23,-14,58,-112,30,-77,125,72,-99,55,39,67,54,-6,4,52,50,92,-47,-26,6,76,3,96,89,97,126,80,-80,-100,-76,67,-119,-36,58,-13,16,53,53,5,123,106,31,33,-67,111,-27,48,7,-111,23,-110,-42,-16,-105,38,43,51,-17,-12,-98,89,-32,3,64,118,65,21,-66,-1,-93,-115,93,-75,7,-25,126,59,107,-19,-26,14,-107,75,45,-16,-110,-34,50,2,-11,-109,19,-61,125,-94,-63,123,-24,-11,54,-115,121,-16,-39,98,2,77,102,90,52,-110,-55,109,-119,-47,-121,116,119,65,68,6,6,22,103,-121,49,-117,119,-38,-90,124,-32,104,90,109,-16,-100,-92,61,-115,-107,60,-26,93,27,111,-124,54,-72,-77,123,-79,89,-89,-54,-94,108,59,-49,78,-108,-4,-28,-119,55,42,36,95,123,-7,-99,-42,-100,-6,91,-65,-24,32,-77,106,59,-5,-93,-100,115,35,70,-90,-7,-6,40,-20,105,76,-32,-74,77,-32,-91,114,49,-126,-83,-81,84,113,80,-69,-99,-13,-29,-103,102,-69,-108,-127,87,-43,-11,-126,-113,119,-104,-11,79,62,26,-90,-22,7,-64,-107,77,77,-83,24,-90,52,-57,10,-22,114,-38,115,-37,-52,-63,-76,-13,94,-56,-96,78,59,33,85,-82,-97,10,74,-95,-113,-78,99,-66,50,4,32,102,69,20,-76,-69,-57,-26,5,-105,127,94,-72,-19,-117,-7,-38,24,-91,59,86,91,9,-58,126,-81,-126,-39,28,35,124,101,74,120,-90,54,14,-31,-108,80,94,-40,50,-56,26,-5,19,-37,-39,-45,-117,9,37,53,83,-73,-22,-107,-102,-104,38,-126,-125,90,-106,74,-98,72,21,-76,-56,20,109,29,52,-45,-42,-51,51,-1,122,91,12,-18,-69,55,-3,51,-111,-106,123,11,-108,-93,51,96,-100,91,-87,-51,70,-39,15,-81,35,62,-54,-87,33,-64,-125,-111,14,-109,-89,70,-36,65,-122,-47,126,126,-119,-49,-34,46,126,-87,88,-117,-107,119,29,-65,25,-89,62,-89,-88,-117,103,100,9,-36,56,79,95,-124,66,-5,-126,-9,9,-95,-95,-93,54,-2,-54,81,-106,21,-25,108,105,-37,-9,-97,69,122,84,39,-124,98,59,-25,-67,18,35,48,-105,117,78,-75,-42,3,-76,-107,76,79,3,-81,-61,30,-99,-99,101,-118,-94,112,-88,-19,-82,103,-67,76,-71,-105,-24,-91,-20,83,90,120,-7,34,-26,-110,75,41,62,-116,-77,23,109,107,74,-78,94,-125,26,-13,27,99,49,77,-73,100,87,77,0,88,93,-23,-115,-36,-108,-24,123,-65,-60,-63,-44,0,19,102,-19,89,69,85,-96,88,-103,123,108,119,-68,-99,89,11,-56,116,-106,97,-68,6,-60,47,52,-1,-53,94,-55,-107,-3,-9,-105,-3,-21,-69,-37,18,-59,78,37,127,118,107,-117,-79,-43,-108,124,33,-121,-25,52,-71,76,64,-2,27,-52,68,88,14,25,-115,57,30,-36,-16,63,-75,92,110,-57,-105,-82,-21,-72,30,113,-92,-20,-15,-77,-20,-25,106,22,56,79,21,68,98,115,71,32,20,122,-70,112,38,62,105,48,15,115,47,-124,48,-71,-41,-85,127,-6,9,122,110,-68,-45,-35,-21,-103,122,30,-70,42,68,9,83,13,105,110,8,98,-42,93,117,-26,21,-42,-82,27,110,-123,10,-98,-5,22,29,-112,-32,109,31,7,-91,22,71,-56,60,29,-126,4,63,-64,-77,74,-53,92,-7,-54,-128,72,-20,-92,6,-89,-20,52,46,32,-94,-119,-90,-92,106,74,22,-50,88,-69,107,8,3,55,-102,-64,28,-106,74,13,96,97,110,-59,58,83,-95,-49,-106,87,71,9,-19,125,26,-26,-93,-28,-52,20,-63,49,-73,-11,112,14,121,-65,88,-128,4,72,-117,-29,-74,-33,21,102,125,112,-49,-82,-7,-28,82,46,-71,12,118,4,121,97,16,28,85,50,78,-24,76,74,107,-47,-67,63,-94,-112,93,-59,-48,-32,119,84,108,74,52,-113,-17,-96,27,122,-67,23,-10,33,-63,-54,49,57,-103,-58,54,20,102,-18,-78,-125,62,20,109,7,-20,107,31,-85,5,104,81,-61,98,51,125,-32,-90,125,-100,6,64,104,56,126,24,-86,109,23,-100,15,23,50,22,-83,30,-128,-82,123,-89,14,-48,-82,-36,-92,-65,-12,10,107,-61,-124,-36,-75,49,0,-105,26,119,101,120,-37,-38,-89,18,-55,-47,-118,-92,-17,48,-14,-50,-72,112,-100,-125,-106,-114,126,-23,-105,-41,102,-7,-5,87,-25,71,-111,-11,-76,-106,57,-84,39,-28,123,50,47,-23,-66,-101,102,-65,103,32,10,84,82,34,32,-112,-14,-125,-109,79,28,-18,97,38,56,-36,-70,-6,-78,-80,33,-120,104,68,27,41,93,-95,125,90,-18,-97,-33,-102,53,-79,4,-27,30,-51,41,-72,-74,92,-102,28,-56,114,122,-105,121,8,-51,63,-117,126,-56,-127,-126,49,84,30,-76,-13,-45,53,57,3,34,-85,49,-112,41,-71,127,-111,22,-114,-34,38,-45,44,97,52,4,-111,-35,-98,-24,-53,42,74,-118,-86,-19,-119,-52,-88,22,-89,119,71,112,-21,26,52,35,126,65,117,-110,4,47,-66,21,-51,-8,-72,-120,-107,72,85,3,73,72,-27,-36,-114,19,71,-89,-100,-111,116,-97,87,-53,-68,-121,17,-29,-60,-28,116,-64,11,45,-83,-125,-55,71,-3,4,-123,53,42,-122,-45,104,-22,101,81,-24,-37,49,91,-2,-77,44,-72,-64,-100,-80,-75,-26,108,-102,19,-107,-51,-23,-11,-4,118,-18,-18,125,90,-84,41,8,-54,30,21,-91,102,-115,-99,-35,-35,6,24,102,-108,26,-8,39,1,-93,76,124,28,-9,114,-39,9,44,72,-72,-24,67,-41,-3,-58,-92,-31,-57,127,29,36,16,-1,-87,-124,-34,-23,57,118,-38,-19,51,121,15,-44,-2,8,-87,-47,-82,71,-14,-41,16,48,79,118,17,-83,-84,-62,5,-127,-20,-12,28,54,-95,-89,115,124,-18,40,-118,-125,-97,3,15,89,-21,45,-19,23,-58,-1,39,19,-18,-121,127,-46,2,38,-24,-64,-48,81,19,-16,80,-128,-37,123,-43,-73,36,-127,55,121,-62,14,93,56,42,-117,-43,-99,24,-79,-46,-112,-34,-99,38,-19,11,23,-70,-128,-121,-81,-110,88,-76,-53,-51,51,-128,52,54,-80,-58,-35,83,10,20,27,-109,119,112,38,-19,97,120,67,24,51,-65,84,37,112,-8,67,6,-104,-127,-50,118,-1,58,-97,-94,-103,78,10,30,-94,-95,-42,107,-41,-67,-39,63,27,-108,91,21,-88,-23,-118,-55,-28,-1,-9,16,-37,-29,-55,-80,-82,78,-112,62,46,48,-41,1,50,34,12,-53,123,46,1,37,108,71,3,41,-94,-123,-50,-16,-42,8,86,-39,-24,51,119,20,22,-55,115,-82,-86,114,-110,8,-72,-15,74,83,93,14,59,122,3,107,-17,93,51,41,-56,-125,28,-21,38,-59,71,69,-48,111,79,38,-29,-23,0,-17,-110,75,113,87,32,50,4,-113,-4,12,-27,-20,-61,-41,-56,-117,-99,-77,-87,115,-99,40,-99,-95,-31,26,119,-102,-53,2,29,4,-21,-86,112,94,-82,45,-65,23,-23,-85,-17,-97,100,75,116,-110,1,-109,-111,29,80,-90,93,74,3,95,112,-48,-106,-18,25,77,-29,-22,72,-117,94,9,95,113,-1,-104,-124,-28,12,97,-109,66,33,-94,-29,91,-88,-102,77,-76,21,-65,95,51,54,-16,-116,78,78,-79,-107,-51,-123,2,40,49,-124,-90,64,97,-3,-105,14,71,-114,112,124,3,-83,-105,-50,94,35,59,-63,73,120,-43,116,16,-91,-46,-18,-117,-108,-26,84,-84,75,123,-97,-21,-118,-119,72,34,-59,-108,-104,-65,21,70,63,-108,-35,-26,-11,-63,-55,53,-81,-125,-58,-115,-16,-54,59,7,0,-12,-67,126,-72,81,-118,-76,-13,121,5,27,-23,80,87,-125,-14,-85,-37,-6,-79,-56,-118,-19,-45,-43,72,71,-49,-91,31,-121,-90,34,89,-22,116,46,-62,-59,49,-4,12,23,40,-39,88,-54,120,12,34,26,-7,42,-18,-89,-37,67,123,61,-91,74,-36,-38,-104,15,113,46,54,0,28,100,-75,-44,25,-56,103,28,44,-92,-100,34,-113,28,-16,-75,-121,-7,58,38,-99,66,-2,-20,-122,-19,11,110,-58,45,17,-72,38,-45,41,6,64,-86,44,36,91,-45,-93,17,43,-73,-70,-41,52,121,53,-71,-90,14,110,115,29,36,-75,-46,92,97,-53,102,-88,-32,122,53,-39,20,-102,55,-101,117,-26,82,14,46,-91,-120,85,36,-108,101,-81,-26,115,-18,-50,-47,18,7,-125,-24,33,-46,-24,-108,33,-71,41,99,-66,47,-43,-25,10,117,53,-2,-14,10,126,-112,-74,104,-77,-57,-30,24,81,93,69,115,89,10,34,90,88,-116,65,-90,72,43,51,123,-85,55,-12,8,13,10,-37,-90,123,-4,40,109,105,112,64,99,-74,-83,44,104,-20,-16,25,54,-82,-54,-109,64,-37,-3,-17,107,124,14,-64,60,-47,-72,40,-84,-74,89,36,6,-98,-125,63,30,14,-70,-62,109,-38,112,-41,127,52,115,-56,27,-112,76,-65,-107,-118,26,-53,-74,-96,114,78,-120,24,77,60,48,29,49,-15,-117,-91,1,58,-26,-84,-9,-115,-109,-89,-21,104,82,36,116,121,-103,93,-50,-103,-39,37,52,-28,-108,49,-87,-93,-115,38,-37,-28,-68,14,-26,19,-41,107,-2,-37,-107,-49,11,-120,17,24,24,-100,-110,93,46,-122,-84,38,6,-7,-53,98,102,35,65,-8,-6,-99,44,86,-5,-4,67,-65,13,23,66,-111,24,7,19,9,-92,114,29,58,-43,-61,-105,-33,34,-26,-57,5,-11,48,77,0,-41,22,-49,-20,-44,-99,-30,10,45,-51,47,-29,20,-61,-11,104,99,21,-15,-67,44,108,-71,-83,-11,57,-104,39,-84,122,2,14,127,5,-110,-79,98,23,95,89,3,-87,68,94,-9,104,40,107,24,26,-97,-36,-111,-100,-95,31,-97,77,49,-69,112,-111,-96,-45,89,127,-9,114,85,-5,-102,16,-1,31,-53,-69,-53,-6,113,84,-6,62,-18,-44,-73,-15,68,-105,-36,127,12,-27,-28,-42,-31,51,-121,-19,86,-111,-86,93,-119,-74,67,51,32,73,35,18,-106,70,44,-82,72,50,-19,98,-45,-60,-84,-84,-67,-126,-5,-67,38,-2,-62,-23,-54,-110,113,-89,-14,52,28,11,-61,4,70,-35,-100,0,-46,-11,-124,49,118,-80,39,-70,-100,-54,-120,-69,102,39,59,16,-49,-50,53,-27,44,-115,90,69,-102,65,-113,20,-47,-115,59,127,-19,-19,-54,-27,-28,39,-94,65,-114,75,-115,-46,-85,-4,75,-67,127,-98,27,-42,1,-43,-124,22,-21,-74,-27,53,-45,127,-90,-83,-44,-23,-86,10,36,59,86,99,-126,-59,108,-99,-45,91,-16,-33,110,106,-120,-87,19,115,122,-86,85,-83,67,-4,-57,4,-111,-5,-58,-2,-91,95,11,107,-53,-68,-128,-12,-68,85,19,-40,-36,-56,10,58,-64,-12,-32,20,79,37,-65,-9,-33,88,123,94,114,31,67,-2,-32,86,-124,-62,-116,-100,41,35,-17,-81,67,-85,-110,83,45,5,-121,-120,-3,14,47,-65,-78,-87,-114,-9,-19,-7,-21,106,74,-40,117,78,-33,61,63,-70,26,-9,56,76,-121,-77,14,87,-125,-32,69,-101,50,104,30,-59,-117,80,43,-98,-11,-23,-94,-108,52,97,-38,24,-10,125,-41,-119,-19,-56,-42,25,65,-39,7,-102,-4,109,110,74,18,-126,13,96,95,99,-89,15,-3,6,106,72,35,-78,82,-15,73,61,116,-127,-83,98,54,-17,2,88,-7,-57,-37,-102,-39,-79,31,111,-6,-62,-24,69,103,74,113,65,-15,68,37,123,-65,94,117,-32,-121,-78,-5,59,120,104,60,5,68,-65,4,-85,64,-80,117,61,-101,46,-88,-123,69,-19,-57,97,-15,125,54,84,-23,-124,-27,-47,114,16,104,44,-100,-87,36,81,-27,-20,-73,95,-80,-64,-34,-77,29,66,-126,-120,77,105,-100,44,79,116,-18,-27,-15,-71,19,-80,12,-18,27,-92,45,116,-27,14,-14,-77,1,-110,-40,-26,-4,-88,-120,60,51,-101,108,-123,116,111,-83,1,-74,87,-69,11,124,93,2,-64,121,62,-45,-79,110,-55,-37,97,27,-79,110,-91,67,53,99,26,-74,98,43,9,-43,80,-103,-23,60,-36,68,-112,-64,20,-31,-52,-79,-113,-7,94,-30,73,-100,55,-111,87,-1,-29,-25,42,-94,-13,-63,108,-59,38,-16,-85,-62,-17,0,47,-90,116,-80,-11,12,-54,96,-110,-12,-6,-128,-31,-64,-109,103,-11,58,-118,-3,-102,0,64,39,-67,-18,93,95,-87,102,104,88,-31,-62,-36,-61,-105,-26,46,-53,93,117,-70,-54,121,-103,52,-24,-10,82,-124,-22,29,-122,84,-76,-64,121,-65,-6,52,80,-27,7,-118,108,64,-82,73,-44,81,-107,-88,84,-100,-59,9,-56,35,-39,-68,-82,26,65,-73,-66,-15,75,-44,-31,51,-65,-62,-73,100,51,-51,78,-112,-84,-19,82,93,-92,53,-69,-38,-66,5,127,-30,61,43,26,48,-63,31,24,-71,-67,-60,-127,-55,-26,-43,38,-63,-49,-101,-37,116,105,10,-109,3,-67,-42,17,-89,110,-103,62,-41,78,-59,-47,-47,-17,10,-51,-16,-31,-41,68,37,15,94,-123,101,77,-122,116,61,-96,-8,-122,-11,105,109,-74,-97,-111,44,114,105,45,-94,42,-99,-52,-113,122,87,-59,85,-109,-128,120,21,-49,-75,-89,11,-10,120,-51,30,-19,-79,-26,-32,64,-71,28,-44,-11,55,-28,59,109,-84,-22,-113,-55,-105,114,50,80,-26,77,36,54,42,-71,-111,-64,118,99,-100,-121,-128,56,-10,-75,-74,30,93,36,-122,16,-105,-50,85,19,-99,-84,-72,-20,-63,96,75,-53,-86,59,90,-23,-73,-39,96,-118,-9,-127,-106,42,-122,-84,108,-18,29,81,-58,46,12,94,-2,-94,33,-75,85,61,122,-100,2,101,45,106,-49,-43,22,-63,-128,94,-115,5,38,35,-8,54,15,35,-114,87,-76,110,-50,37,20,-114,115,84,-13,48,14,54,-58,-93,43,112,77,9,-99,32,-91,-55,-82,34,23,-40,62,17,66,84,-3,82,117,-100,32,33,19,-100,93,102,101,-33,112,-103,-38,114,-1,38,-89,-90,-9,-86,-101,-66,-71,41,-113,5,-40,21,50,89,123,-73,5,45,68,-75,58,-107,3,-67,-64,89,-117,45,51,16,36,-119,69,-78,94,-18,-18,61,-124,22,97,-55,112,-97,19,119,65,7,-109,23,88,-15,-47,-103,-62,-84,106,-5,73,-108,-109,34,33,-116,81,-41,81,-102,67,20,-46,67,-40,-9,-49,10,121,-57,-33,61,28,42,-67,-36,-113,-38,-89,-94,-67,-28,52,-17,-116,-96,117,-51,29,-84,-38,-53,-53,-44,-110,54,98,-76,18,117,83,10,-36,-62,102,104,124,80,34,15,47,108,91,-112,-116,-10,66,-68,55,-123,-67,87,74,51,-47,25,-34,-122,57,32,-96,96,-64,67,31,-41,-124,-87,76,-15,-125,1,13,-77,99,47,74,-44,97,67,108,-4,-9,-16,36,44,-53,3,105,-120,99,-55,-30,-34,118,8,40,106,-95,-122,14,-65,-23,86,-64,-26,114,89,97,-59,-10,71,-108,10,-60,61,-87,-19,-4,-28,-32,-1,35,-123,109,55,-47,-126,-124,-1,-36,120,-107,3,-17,121,31,-80,25,79,127,-32,-19,103,118,-4,21,-55,125,70,-95,-104,-2,-78,-24,90,97,-33,-79,-92,126,20,49,60,41,121,56,120,-102,113,74,1,44,-28,46,-19,100,-46,-127,77,-8,-64,-12,-13,-15,11,89,22,86,-95,36,-105,84,110,-83,37,-56,-40,-92,19,-17,-82,-25,83,4,33,-111,76,-54,-85,35,-107,127,-72,76,89,-123,-103,28,-96,95,-47,77,107,-98,-35,52,59,75,-76,87,-14,-27,-56,75,117,67,-34,91,-92,-45,-95,-116,-13,5,-81,-35,83,85,10,-112,-38,89,117,43,123,-43,-73,104,36,-80,-106,47,113,51,-82,36,93,-84,33,11,-53,-84,-128,82,-86,0,-118,-33,-6,-122,44,35,81,-44,-71,-73,-64,98,126,-20,-49,-104,-126,46,44,-17,-63,-62,-74,-48,-61,-28,67,-99,-25,92,66,-38,73,49,45,92,-69,-26,-91,105,80,-30,48,85,-76,108,-98,-95,-56,102,47,-70,6,-118,-31,-112,60,-62,89,-78,115,-85,4,-1,36,72,-17,-56,-100,-2,-104,-54,24,-56,-92,-60,-106,-115,-53,49,-106,85,33,54,-79,-77,44,47,-120,41,-60,-8,44,-28,5,114,90,42,74,-57,106,-81,79,-67,83,-97,-90,-16,-120,-57,-88,9,34,7,-107,-92,-59,40,71,113,-32,-85,89,89,33,-58,-78,-22,-50,58,96,-19,66,-125,-39,90,-42,25,70,-31,-104,-90,-21,118,98,-111,102,44,-35,-117,60,-62,86,-47,-4,-88,14,46,79,-81,6,-5,101,-12,99,96,43,42,-27,65,-3,-93,-120,112,32,-111,-6,89,105,-67,122,50,57,-126,-54,-46,35,-41,48,0,-98,-22,71,45,-125,81,7,-26,23,118,-60,25,101,-128,-95,117,22,-29,-126,74,86,-53,-39,65,-86,-62,64,-77,-8,-85,90,54,-28,124,-128,-1,-112,105,127,-124,-40,123,63,123,-77,-84,13,-5,53,-46,-31,-74,-36,-16,27,13,-124,-24,-98,-115,-83,101,48,92,13,-5,-98,-111,-10,-51,-40,-115,-81,-82,-52,24,102,98,97,109,107,-1,-46,109,50,40,-48,-23,71,-70,34,-13,-111,43,110,-41,-9,-1,108,37,45,-28,-72,-45,-50,121,9,-66,-4,-10,-86,18,16,-119,64,-36,33,5,-13,-125,93,19,-6,-61,126,48,95,-116,11,-62,125,-6,67,111,-1,-54,2,82,45,-103,-4,19,-66,20,18,48,15,94,-91,33,119,82,-15,-24,116,15,67,30,111,-106,90,80,13,-20,71,66,65,108,124,-104,-94,-124,120,59,-95,-80,16,-101,83,90,14,25,-96,-64,-38,-24,98,-17,-69,108,-89,-29,-30,-11,-101,99,13,53,-56,72,52,105,105,88,2,75,26,23,-13,122,3,-114,71,-29,-70,-9,-98,67,58,-122,87,7,126,-30,111,69,-61,7,11,103,-6,-6,-16,56,-32,23,94,29,-31,-63,-47,67,5,61,110,57,43,54,41,74,28,-65,97,74,-22,-115,-126,0,86,-50,-83,-3,-93,116,5,-29,22,21,-79,-54,34,68,77,-76,-34,84,-116,-31,-102,-13,-55,85,64,-42,44,-115,43,85,100,-60,-104,103,-54,120,-65,-69,44,-102,59,107,81,-79,89,-44,121,-24,70,-110,51,75,76,117,-7,61,110,-102,42,-28,-28,-67,-12,102,-19,-27,18,121,115,-46,68,-81,-124,-110,-33,56,108,-83,30,4,-97,-79,-17,114,88,-86,105,-9,17,0,61,11,101,7,14,58,-100,-38,-42,121,27,119,-48,62,56,94,39,-49,-20,7,26,-99,108,-44,120,87,-2,-117,-78,64,-56,76,-83,-105,26,21,-3,8,81,-74,-100,50,67,9,58,-118,-14,-96,-13,65,27,-122,-73,102,-83,-40,-60,-13,-120,16,51,112,-51,-81,-15,127,-7,100,-116,83,-20,-72,59,121,-39,-43,114,97,55,-9,-53,56,107,45,49,-102,106,-126,-54,59,-44,18,-64,101,-75,62,-123,-70,-110,-17,24,-44,57,-122,104,43,-119,-40,18,-107,-113,25,122,-19,-90,123,74,-35,-86,107,102,-22,-51,56,-14,-100,109,-124,1,35,-85,-16,-124,-65,-21,1,30,55,-75,67,-121,109,-78,-102,82,-23,-94,-60,46,0,-104,-96,6,12,39,101,62,37,-39,-84,-92,48,3,68,34,26,-47,-67,60,25,-2,118,-110,91,77,46,2,103,43,-85,-107,83,-23,-23,-71,-7,-110,42,43,16,-82,57,-55,-52,-102,-32,32,-70,-111,75,116,-11,116,-44,-75,-14,1,-123,-128,31,-85,71,33,-72,78,-102,70,-72,48,-15,60,38,56,79,93,114,-83,75,-6,-78,120,25,-127,112,82,-37,-90,-121,-92,-112,-35,8,119,-32,-35,58,77,-9,109,69,-107,-21,11,-128,-42,-70,48,-30,-23,-78,-81,30,-123,-40,-8,106,-127,9,64,-51,-78,122,95,-109,81,-15,-43,27,118,-92,88,37,-109,-106,52,-8,-62,119,-45,65,73,127,-96,-115,53,-125,46,47,89,115,8,71,70,-40,-107,24,15,-119,-64,115,41,54,-11,-103,-108,-20,6,104,-67,-8,95,102,90,19,15,73,-22,13,-7,55,113,-53,-123,-110,51,40,37,-83,-103,-61,34,59,114,-25,-113,-103,87,-26,-10,-121,88,-65,-79,-63,92,123,-62,31,59,-87,-11,113,31,14,88,25,23,35,-49,-83,-21,-59,53,-72,109,-22,-64,59,89,-104,-42,52,24,-60,62,3,91,7,-21,15,61,-117,-109,-1,65,-39,25,-37,-34,26,-2,-51,62,61,24,-15,50,-32,-48,25,-55,36,24,99,6,94,-25,-84,86,-30,-95,-94,-102,-53,29,65,-81,69,-85,117,65,-7,0,-66,-23,-75,127,-108,62,10,-5,66,-4,29,-59,-82,41,-55,58,9,65,-128,55,-58,-67,-28,123,99,-121,-70,-99,-6,11,122,-108,-18,119,1,78,103,61,121,-104,-68,117,-22,-108,31,64,-68,-68,-96,52,41,58,11,-54,-26,118,14,75,-54,21,60,-119,-66,-19,11,-64,-5,76,-97,-9,81,-126,62,72,-115,64,117,23,65,73,-87,-121,-40,-48,90,-82,73,-91,57,42,-53,54,-11,6,102,-104,-117,0,70,52,-56,103,104,-1,-12,-103,32,59,12,123,-75,-104,-123,16,31,-35,20,55,-116,-109,-44,-50,-63,24,76,35,-116,-29,16,-32,-43,-68,-115,-56,32,109,-34,-9,126,-39,74,-74,-46,-19,-82,-105,-115,32,94,17,105,-103,68,-50,-121,-29,53,-7,74,77,98,-123,-68,37,-8,62,-21,-23,4,-99,-80,-103,45,-58,-2,-95,5,58,35,19,-65,-37,108,-14,35,-90,-53,-123,-5,28,39,-21,17,-38,70,-53,94,30,62,24,34,-74,14,101,20,46,-61,94,125,-121,-122,88,36,-127,-97,-98,80,110,80,14,10,72,8,95,50,4,113,27,54,-124,-117,-48,-39,122,52,8,61,94,40,-69,-34,21,7,-56,-123,-90,24,23,89,57,-87,-97,-16,-80,63,-50,-118,76,-25,-17,24,90,-4,-112,-94,32,58,-32,11,-12,28,48,118,-38,-69,107,61,92,-104,116,-112,-62,55,-110,127,0,-46,-54,17,-57,116,54,-90,-36,114,-39,53,-32,33,-69,72,37,-70,121,-84,60,22,-95,-105,-74,-7,-67,-49,-41,55,98,60,-57,-51,-107,48,31,48,-72,-35,-38,-5,29,-102,65,78,79,71,-8,-113,122,76,90,-55,-31,102,77,-66,107,112,-128,101,122,-83,-62,111,126,-75,101,-55,-118,52,68,-128,115,63,76,32,-6,6,90,100,-109,98,-59,19,109,114,-1,84,-58,79,-52,95,121,-77,114,-52,56,-13,-114,67,91,50,-51,-94,-115,113,-58,-33,56,-92,55,-120,80,-125,-85,126,-114,-126,44,22,-29,-82,113,-92,91,-39,63,-34,-90,43,-21,-3,113,-81,-5,-91,69,-59,120,-126,127,43,66,113,-111,-99,47,-46,-73,-13,55,-7,73,37,110,-76,68,105,13,94,-36,10,108,-127,-76,126,10,100,21,-80,-117,21,-95,-79,94,77,-72,98,-63,24,93,7,-124,25,-15,-62,84,-99,28,-99,-82,113,-65,62,13,-51,-117,115,37,-125,-40,85,-96,70,31,26,-27,2,57,43,-15,-112,-36,-5,-72,106,44,-97,126,111,-31,-89,-66,76,-114,-111,51,120,69,-106,56,-70,1,-54,105,-56,-8,-92,-123,-71,40,-52,-20,-93,-102,-104,76,48,77,-30,76,53,-113,-16,40,88,44,-107,34,53,18,-21,95,123,-115,53,-28,21,47,82,76,-58,-114,-104,22,-97,-90,109,73,7,-108,-30,-96,89,-84,-47,-46,-62,110,25,-128,-54,-75,-62,55,121,42,-62,69,54,25,-75,7,122,87,88,-68,-83,-95,-100,38,-103,-96,74,-57,109,-34,51,72,86,89,120,66,85,18,95,-84,101,-86,15,-32,48,-104,-99,62,115,43,76,-14,76,-92,27,-5,-8,41,-74,-114,50,-77,-97,-67,-109,16,-36,106,-52,85,50,16,-68,-27,-99,-22,-112,122,-15,63,64,23,121,23,54,-31,126,64,76,16,18,-57,-75,97,-94,-23,-94,72,-40,-53,30,-55,87,-63,-13,116,-64,9,-72,11,-45,-90,11,59,110,44,28,-105,62,-80,-27,20,-7,46,45,57,35,5,126,29,-91,77,-65,-60,-56,10,-115,-42,115,-17,-67,34,12,56,39,-119,-20,-66,22,-39,54,-102,108,1,107,-75,14,-104,-127,-87,-17,-88,103,33,-71,-85,-76,23,-95,-94,-102,107,92,-96,61,121,-98,78,-33,-28,33,75,-10,32,-14,-125,-72,-96,-4,10,-65,7,-52,-27,92,-71,100,61,87,45,9,-43,110,-52,-70,19,45,-110,-66,-74,91,-126,-27,106,-110,58,114,-86,-52,-77,-63,-50,-65,67,-54,33,116,37,64,49,-7,76,-115,22,-124,-105,50,19,-126,81,86,124,-37,-5,-48,19,32,-65,-21,80,-93,-124,-23,-25,24,16,97,65,51,29,56,-79,-117,80,-50,14,-77,-23,87,96,-52,125,49,2,55,13,61,107,-106,93,-116,102,-37,-11,-23,-119,53,-43,-39,-86,-96,0,19,13,15,15,112,24,-73,76,79,-76,99,-127,90,-18,119,63,3,-29,111,38,34,-66,-34,111,31,-29,24,-95,-70,5,65,-15,86,-43,16,76,-127,-120,6,21,-29,97,-31,53,-57,-39,83,-117,-48,-99,126,38,56,-78,67,-18,43,72,-96,100,-37,109,-92,89,94,-88,36,121,112,-33,-69,-42,-99,112,-80,116,-42,49,20,5,124,26,26,-32,-118,-28,22,65,13,-105,81,-98,124,40,-76,52,-104,97,59,82,96,-99,-46,-27,-74,-125,-36,64,-31,114,-83,-28,-61,81,8,-81,-49,42,48,36,-81,12,-80,68,83,38,-115,-46,93,-86,62,-56,-52,-36,7,-88,-85,-80,38,5,-106,-8,-125,-94,-81,123,122,21,-112,45,-37,116,81,48,93,-122,32,-120,-28,48,-85,-99,-47,50,-67,-109,-14,78,-79,10,56,-98,41,-22,10,-20,74,94,-120,-30,110,50,86,74,91,51,43,-86,-44,11,65,-11,127,-97,-31,-24,119,-16,-66,-73,87,-95,-64,109,98,-127,-30,45,24,-11,54,61,76,109,126,24,45,-1,64,-24,-28,28,114,-113,-32,-103,122,-125,95,102,-7,-33,-25,-28,-7,-101,63,109,-9,111,-45,73,-41,-111,-48,-70,-113,-40,28,-32,-95,-41,76,33,-53,-112,-106,75,71,117,-94,81,19,19,53,96,125,-9,-82,40,85,6,65,36,-91,68,59,9,91,65,-67,-34,65,121,125,-25,-107,-38,-106,-122,20,-83,109,45,-103,122,-31,-42,-42,84,23,-57,49,-69,27,41,78,-116,3,-65,59,-28,-52,-101,-91,-29,-29,37,113,86,119,-51,-19,-104,-84,42,90,-113,125,-32,37,65,-21,119,126,11,-13,-37,59,-49,-80,60,90,-114,7,-117,-84,-22,-50,4,58,69,-93,106,-77,110,-46,125,78,93,-124,-20,-42,73,75,-60,-59,-52,80,-5,6,-105,-14,-58,-59,-72,34,59,-46,-96,-102,76,105,-8,-49,-79,-81,-47,-94,93,-100,77,-119,-115,-102,-115,-68,69,-126,107,-86,-103,91,83,-26,-42,73,-84,-54,5,-85,-104,-61,-28,22,100,-71,-126,-43,97,-128,38,88,41,112,94,-84,39,-55,-119,36,-115,60,107,87,1,-45,-114,-9,-80,88,-105,-67,-91,90,-111,-96,95,-113,-103,-24,-70,91,-113,-70,-122,-83,-92,-20,121,117,37,-105,-10,126,82,81,89,-2,-118,36,-21,-9,-85,124,-103,65,-6,118,-45,-33,-5,-113,122,124,87,58,-30,-47,-43,54,-10,-116,88,-17,44,29,94,-106,-59,41,54,-86,101,98,-116,106,-12,-12,95,13,-29,-103,72,55,-73,6,122,-106,124,79,54,-93,17,7,-101,69,-72,-102,-43,31,71,-44,92,37,28,-104,127,54,-7,-50,-74,-35,-125,-16,-119,28,-17,-44,122,63,117,92,-23,82,14,-28,122,-38,-90,26,88,-74,22,127,115,111,-128,61,-41,-104,-9,31,112,37,29,53,-3,58,52,-27,66,-76,-73,27,78,92,-33,-125,39,110,95,-96,-61,-125,-16,80,-107,101,44,63,114,47,-101,-47,124,21,-31,-99,-57,24,46,-24,18,121,-104,68,-113,37,-76,-71,102,-10,59,-124,112,123,121,91,78,-17,-14,32,-82,49,2,102,-47,-83,-30,-19,-3,67,-50,-42,41,-92,-21,-72,117,-111,-74,97,26,-26,18,-78,104,41,67,48,122,108,-19,105,64,-111,-45,-45,43,-80,-66,115,84,81,-36,-31,59,60,28,-10,125,72,30,-64,105,52,45,-74,11,38,-16,-118,-3,-46,98,-77,40,70,-69,-114,-77,-70,60,123,83,-102,-80,42,100,109,81,-77,115,7,-127,-87,-22,-48,8,57,-72,-41,-41,-9,3,-54,80,-30,103,-54,-16,118,105,-37,-87,22,71,-48,-33,121,62,-90,116,66,-38,-105,22,19,-21,-41,83,112,-39,-28,-81,-109,31,-125,-95,-1,54,-84,72,-108,112,89,-114,120,-73,110,20,-55,-126,-93,-58,68,-105,-107,65,122,8,-103,121,-97,61,-74,97,99,-65,1,46,7,57,69,-122,100,-112,94,-94,116,23,85,106,-105,79,-108,-128,39,-111,83,-87,-66,112,-102,24,-7,-72,-78,-97,-8,99,-113,-114,79,115,-51,89,-88,83,-90,28,56,113,-102,57,40,-104,-76,89,-8,38,-5,-67,-9,-18,38,-121,27,-25,-110,-29,3,-10,123,16,-40,-93,-36,116,-20,-73,-111,-18,87,-123,120,113,-121,-97,-47,69,105,-68,-97,-111,-53,-94,114,-81,77,92,-37,46,-80,-18,-9,108,-69,-25,-46,27,-101,-86,54,53,-109,-44,85,-11,-61,-87,34,-17,-25,79,-46,101,-22,-30,85,99,-65,-30,117,12,-80,-23,-16,54,106,-89,-120,-29,64,1,-94,-111,-75,82,-3,68,120,11,-103,-52,87,22,-46,-17,-117,-63,12,112,-123,-52,-121,71,-122,-55,101,-125,-41,105,-53,52,-9,60,-3,56,-1,85,15,-112,127,70,-7,4,48,-72,-29,34,11,-103,-46,114,56,-109,-32,17,9,89,-1,114,92,86,11,-55,-87,-80,-18,53,-4,42,86,-90,15,-50,120,49,-46,22,57,67,-59,90,110,-97,96,119,100,43,-90,-54,81,-89,21,-80,64,-14,-47,126,92,-17,-37,51,121,40,-34,110,-54,-99,36,-73,-43,85,52,-30,121,-9,-18,-51,91,102,-116,-71,86,95,-55,95,-35,74,118,101,-114,87,20,-48,-60,117,-76,55,-108,49,74,-22,20,-43,41,79,114,-96,-12,-68,43,-44,126,-28,83,19,111,-128,-19,102,-110,56,-77,71,89,17,-26,-16,32,-27,-14,-127,-37,62,-107,-34,126,110,74,104,6,85,8,79,-74,107,126,30,-52,80,29,-11,108,65,29,-128,109,-2,59,123,28,-107,62,110,110,-123,71,-68,-39,-20,-108,-57,38,-36,-12,126,100,112,-32,-103,55,98,-82,-5,89,-41,36,88,-92,99,118,-56,97,12,-16,113,88,71,-96,76,-77,117,60,-5,-84,23,-41,45,31,46,0,33,-3,69,4,38,-119,-20,96,-115,-50,28,-38,-9,85,-113,36,-106,3,-96,-23,-80,7,-19,-111,101,92,-107,116,-9,53,-120,-3,5,-13,-87,-115,1,-35,-125,-23,-89,19,53,117,69,-67,-107,-122,-33,-32,-10,-122,-69,75,-116,-35,-69,43,-74,109,-107,18,107,-48,-85,52,-38,50,83,115,-101,5,-39,62,-7,99,-46,97,44,78,31,27,105,-72,-117,-94,-69,-86,108,-59,-30,-48,49,-22,-124,-114,-2,-19,-126,-122,-29,-21,67,60,15,-111,-55,-22,35,81,37,-75,32,0,56,47,-18,108,41,-120,0,122,-4,51,95,-68,-20,125,78,77,119,-115,-9,109,59,-128,79,-124,-114,7,9,91,-8,11,-80,-112,29,-56,-32,11,-50,29,-82,74,-19,-6,-55,12,-115,18,-6,15,-123,-15,72,-62,12,43,1,82,-30,2,-17,26,-30,58,-85,63,-56,-100,-117,52,-90,-69,7,-26,121,111,-92,5,-61,-90,96,63,-18,60,-11,-52,-81,125,99,25,67,82,-71,110,97,122,51,39,33,93,28,-116,123,48,-107,-64,-9,-31,92,-62,-68,-103,-102,-107,48,-2,-100,83,127,41,-82,-105,-7,113,-120,10,58,-122,23,84,-18,20,-37,-82,11,46,42,-95,16,-58,-105,-78,62,-57,-82,39,-18,0,106,52,-51,36,-59,76,98,-108,124,-67,-40,-3,73,19,45,121,-45,20,76,-21,0,-57,46,-18,90,79,66,-56,-42,-47,-39,90,-120,79,103,34,-104,-30,-67,94,120,35,59,-41,25,-128,125,88,88,68,-48,-47,-25,-10,-12,92,125,20,-99,66,55,118,-42,46,114,67,-9,37,43,119,-84,79,-8,-21,123,48,82,76,-63,-23,-17,27,-108,97,53,95,-109,68,41,-50,-32,-119,-20,-71,80,-9,-57,-16,-4,17,-36,66,19,-113,82,-76,39,-128,23,47,9,30,-87,-35,-48,96,100,15,-4,-86,-58,-10,-1,83,-52,17,-102,37,-88,-13,-2,-23,-92,-52,-89,-33,-112,-47,60,122,28,-101,-99,92,-67,-88,77,101,118,-96,-123,-108,-108,-43,102,44,45,-48,84,-25,110,-74,86,-7,50,-109,-9,59,-92,-67,79,23,29,53,-57,-89,73,9,1,65,81,17,31,8,-107,92,126,-119,53,52,98,-126,60,-82,15,-15,79,110,111,22,-82,88,-110,-49,-113,-124,-127,-51,88,-48,-87,-17,-55,62,45,41,64,-111,-95,-122,-46,-91,116,-55,-125,103,75,95,-29,-56,29,-36,-115,-41,-56,-100,88,-81,-33,29,-81,-11,-90,77,-17,-10,-127,-6,-121,30,-4,30,-24,-124,109,67,112,25,-57,34,4,79,126,-109,126,-47,-101,-9,-38,117,-76,-43,37,-120,-86,85,54,-70,56,-15,39,-40,-80,3,26,-64,-45,-69,-35,-120,70,24,-97,-29,-53,19,69,-113,-112,-78,-53,-106,-74,-61,94,78,-57,97,-58,46,58,-21,62,-121,-97,-16,-38,35,35,-127,-120,125,2,54,-30,-44,-17,30,9,-20,30,117,-53,52,29,95,-92,16,60,-29,102,54,-66,122,-110,10,-113,68,-78,-120,-71,111,-96,-37,9,-11,39,111,-52,107,-25,-77,-9,81,28,0,-55,43,-98,-97,-37,-123,69,-4,23,-98,102,106,-11,-42,98,5,115,-121,-84,-86,-78,-69,11,34,-115,-94,3,-104,-9,51,-38,-113,29,-39,83,86,54,-116,-27,-108,61,10,27,-44,65,-91,-86,34,-40,99,38,-14,101,126,-82,-56,-8,37,-102,-52,102,126,-36,74,95,113,-83,-37,-66,-20,-55,-98,-115,-49,96,-44,-123,20,-1,75,-2,10,-90,-61,107,87,94,-63,74,-55,0,2,41,-123,-103,-85,-13,-107,-39,36,-47,6,-21,-70,98,78,-119,52,26,8,-40,72,117,115,-78,76,-57,-60,43,-25,-87,83,36,54,127,-78,127,19,98,125,-30,86,121,62,124,-32,-96,20,-110,97,-126,13,-104,6,-122,36,-105,55,105,-48,-121,-83,0,18,-113,-114,-39,20,9,-20,-23,-49,-115,83,-107,70,121,-30,86,-48,31,-23,125,-114,-67,48,-86,-90,21,83,-79,-107,64,-60,-91,69,54,-73,-77,99,88,-10,15,57,-29,-128,-47,101,-96,-50,112,-85,120,-16,-78,7,27,116,-128,-11,18,49,-19,-33,41,15,-35,84,-67,-15,-57,-73,36,41,15,9,77,83,39,27,-54,-82,33,4,115,-60,101,-117,46,-56,-18,100,74,126,-27,-25,-48,10,-51,-41,126,-81,-95,9,-60,85,99,80,-6,-16,27,108,77,44,46,114,-26,20,-69,15,92,98,107,-59,-114,-87,28,-121,-61,84,125,-125,-44,-13,116,-120,-55,94,-84,-86,-75,34,1,121,-25,-80,26,43,-97,-12,31,-58,75,84,2,-109,12,-61,-68,110,-21,92,-27,13,-117,36,21,107,-3,-125,80,87,45,-108,22,-61,41,75,-115,29,-29,33,-111,-4,-22,-94,8,24,97,-124,25,-52,25,-7,-74,-36,108,-114,12,3,-32,84,75,34,-60,-88,-10,96,84,12,17,114,-119,-41,41,-48,-3,-16,1,21,-14,-115,-11,-25,96,-36,10,-71,-14,-3,-83,6,85,-91,-18,-108,81,36,-33,70,-59,-80,-81,-31,11,19,74,-22,107,91,8,57,29,-95,-80,61,-40,-82,-110,97,122,-114,-102,-77,123,83,122,46,-24,-121,-28,111,18,-47,-35,-102,-120,114,-93,22,115,-82,113,77,-78,76,-66,65,117,28,86,82,27,79,-128,119,-88,63,-31,11,87,124,-10,-71,-99,94,-89,-82,76,-124,101,-53,58,-74,9,-50,-114,31,-3,-119,-51,57,-29,92,-75,113,-47,-103,40,-81,-43,-100,-12,-102,4,12,-36,-26,-70,27,-118,-88,50,-73,28,-113,-94,122,-1,4,-57,124,-126,100,70,-87,62,7,-91,-91,100,-102,-56,102,34,118,44,-90,-47,24,-32,30,-99,-98,36,113,-124,11,-126,-84,-15,72,117,3,-46,-18,97,-73,-38,24,-47,-4,109,-50,-86,-112,88,-97,-65,-73,112,72,-37,-125,20,-29,-43,-2,51,-16,94,58,119,-101,-48,121,-116,94,103,52,64,48,51,-70,-113,106,41,82,-44,111,-106,-62,71,-105,-66,78,-78,71,115,-50,-123,4,33,88,22,-40,-111,-46,-82,-34,-67,-58,120,-28,-18,-52,-126,-31,-109,11,84,-94,10,-15,94,-89,-106,125,-62,-6,98,62,-39,-11,-34,12,12,-18,-50,-78,-60,43,104,50,36,-62,-58,-36,-14,-104,-88,78,21,-18,43,-118,-124,-68,-35,-62,52,102,18,87,25,-106,-78,29,74,127,98,-2,-99,-86,37,80,6,-31,86,112,77,-51,121,-126,70,7,35,3,-85,-24,-78,114,-109,-25,-58,120,-127,-78,26,-100,8,-116,10,-20,-23,14,-18,120,42,-75,79,44,60,-58,102,69,-104,25,119,103,28,-70,22,26,25,124,3,-15,-11,10,87,-23,120,-68,-44,93,7,9,-8,-15,125,-79,-70,15,108,-66,-90,-5,-82,-14,115,-75,-122,74,127,108,-100,4,58,-106,66,-117,1,11,6,-69,-96,-65,55,-8,102,-41,-72,75,76,16,-2,-10,78,59,-42,-72,-1,-31,-100,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58}\n\n#define IP4_WEIGHT_Q15 {18,-12,-44,78,104,-34,61,92,-120,-75,40,-19,29,-80,-56,21,60,-92,107,-118,58,-104,94,47,62,106,11,-105,-6,-20,-32,24,43,43,-116,48,53,-86,-50,-38,-108,-80,0,-73,-5,115,-26,111,78,76,-101,-55,94,39,-61,118,94,13,-20,-81,100,70,-111,94,-125,63,71,-121,-70,-69,-14,-74,54,-121,60,107,-121,-106,51,-38,-61,26,110,103,-43,94,-116,111,60,-125,-28,88,83,120,62,-39,-79,112,-85,34,121,-93,-121,97,-45,-97,-90,12,-97,90,109,-45,-59,-100,-105,-21,0,-26,-122,-37,28,35,-10,-115,-87,6,-62,108,-15,26,118,-84,-26,1,-74,73,-41,-65,97,86,94,67,34,59,-99,106,-67,-80,-26,-71,-21,-20,115,109,-43,-107,-21,64,37,-2,-20,-75,115,108,53,35,-102,45,83,-106,-49,-59,-46,-102,121,-41,51,-55,22,19,-58,-103,-116,80,25,-126,122,-76,-7,-34,-2,110,15,-46,82,-16,15,-19,-52,-39,-73,62,93,67,117,-27,62,-12,-89,-15,-100,-57,59,20,-127,52,-37,-79,-41,-43,111,-31,99,13,-12,43,99,-1,-31,43,124,-15,-30,120,-69,-79,-36,-19,-89,89,46,116,54,-46,49,94,85,67,113,11,24,-59,-17,119,-119,110,-57,-81,-1,77,32,118,-38,-13,113,-53,-94,111,110,-19,-14,-53,4,117,-20,-35,121,24,-97,119,18,-31,108,54,30,-74,-121,16,101,65,3,107,-12,-38,14,-53,125,60,-59,17,52,21,-65,-118,76,91,-112,106,-38,98,26,-4,-53,-63,-108,95,-58,63,19,111,-74,73,37,63,-115,-84,-44,22,-47,-51,60,9,29,22,-57,81,-87,-27,-65,-63,-93,63,110,-26,-126,-12,7,-118,-127,-113,-70,45,107,103,-69,-48,56,25,55,-55,79,113,111,120,-2,43,108,-122,-41,93,40,44,88,107,-78,-34,124,122,63,-67,29,14,24,-69,-72,67,108,26,116,88,90,-48,93,-103,-37,127,-24,115,-76,-80,-97,-61,96,-54,-22,-14,-123,-49,62,-17,-1,21,-65,116,10,113,10,30,88,-24,-119,-95,89,58,124,-119,-112,-115,88,57,119,68,-17,31,-27,-9,-64,18,-26,109,-60,4,59,-89,-127,8,-35,-90,88,-76,22,109,-123,-51,88,-90,18,25,45,47,-80,75,-66,-24,-109,-47,-42,68,-8,-98,78,-122,19,33,-72,94,2,-109,-84,82,102,71,55,-121,19,76,76,93,66,-42,-23,-2,40,3,106,123,-111,8,83,105,117,121,-52,2,-4,-18,-4,-19,-125,38,80,83,25,-64,123,47,36,105,29,-71,-72,-127,-41,-82,31,3,-43,9,73,124,91,-3,-99,-27,101,77,-51,-96,60,15,74,54,35,-119,116,53,-4,46,-29,8,2,93,75,-18,38,49,40,30,-30,22,97,97,-8,-35,-111,21,-62,97,-96,-12,82,28,-118,87,-12,29,-16,46,110,8,95,58,40,41,29,105,-58,-108,-29,-117,36,106,-118,11,-124,60,84,-83,-87,21,53,-31,125,-5,114,-75,93,-41,-127,-98,49,31,96,64,-112,60,-126,2,69,-73,94,-23,-100,81,-115,-116,94,-25,-44,46,91,-89,12,-47,75,107,-77,-82,-10,79,-70,-106,75,-1,62,104,-69,-7,-41,73,53,-32,74,26,-113,111,-115,-55,66,20,-91,7,-47,51,-96,126,121,-75,63,81,-23,14,-124,-41,-39,-13,14,-27,16,-56,-48,-43,-84,120,33,41,98,26,-6,18,15,8,31,-9,-50,121,-107,-106,-33,-46,64,-19,127,-104,-59,86,-30,-121,60,-79,39,-38,-5,85,-119,-17,21,-120,44,-22,89,-17,73,-102,49,26,-73,-69,91,-71,-36,103,63,-8,125,61,103,-116,-20,11,105,-116,15,-78,-122,-80,-62,-80,-58,65,-119,-47,99,-26,-111,69,87,-38,-15,-44,-87,-14,-84,-37,-27,109,-90,-72,-4,-110,38,82,-97,-50,29,61,52,-44,-87,8,63,83,92,109,-124,-47,69,-110,-70,111,-10,25,15,104,80,66,32,-70,-16,-49,-52,-16,-41,122,104,22,-31,-109,18,62,102,125,-123,74,121,5,92,-92,-90,72,-61,98,-2,-125,-81,101,109,-120,60,58,10,53,94,38,-25,-56,-13,-80,80,-13,45,-77,-43,-44,-37,-62,46,38,-103,-124,-93,48,76,-82,1,73,74,67,63,-59,-26,76,116,66,70,-113,-30,106,109,25,75,-18,25,25,85,-83,81,78,-50,99,-53,-125,-68,44,-104,96,-44,-126,124,33,112,-75,-29,-9,-60,-126,-84,-119,-61,-127,-6,-46,-26,-57,118,105,-4,21,-120,54,-121,-35,-70,-101,-124,-79,-33,-30,105,57,-108,-48,-111,-65,-108,41,77,112,111,118,68,0,22,110,44,56,-91,-49,-111,62,-54,78,83,66,38,102,-14,41,52,14,-94,106,105,24,27,53,-40,-70,60,-119,56,-95,68,69,59,-101,-124,-25,-119,-45,102,-55,-38,61,57,104,-96,88,122,99,-122,77,106,122,33,126,-5,-74,46,116,-52,-51,-101,74,74,2,-3,-21,-38,68,-30,17,96,71,-124,-23,47,64,-35,24,107,49,41,-50,-23,88,19,55,-30,-91,3,-54,-14,125,10,84,-96,100,100,67,-116,-40,-124,2,53,-62,45,72,21,82,10,-47,-126,54,-84,-50,13,-2,-66,-1,103,96,-17,123,59,-111,-61,-70,-20,-57,54,-94,-110,-125,3,-101,14,-128,-86,80,-44,-94,37,113,123,-104,-9,-87,109,111,120,33,-7,-62,-51,-57,49,-71,3,18,-49,-94,-32,-92,40,-52,3,52,105,108,123,40,1,2,-86,38,-104,52,-93,-44,-73,-62,91,-88,5,-91,-61,-24,-40,-30,-48,-115,114,62,-128,-85,-93,-43,104,-20,102,-103,-52,-56,25,-103,49,-25,10,84,-52,51,-94,-110,26,-108,1,30,32,-23,126,-112,-82,86,-102,-17,-108,-32,78,32,80,-125,-112,91,8,-69,24,-95,-86,-73,-115,14,9,-2,-121,101,-109,-72,1,54,84,-36,25,95,-49,108,-110,4,24,126,66,-63,56,-8,99,-10,-80,-73,5,72,-103,-10,-35,78,3,42,-61,-83,-115,-99,84,78,20,30,-66,-88,97,-120,-66,120,-46,-29,-57,118,15,-94,-110,-29,25,89,113,-110,-52,90,-92,105,-30,48,92,-44,-1,-39,-96,118,115,37,-3,15,-1,-2,64,81,57,-47,24,-14,89,-103,48,-127,-95,-100,-114,14,-69,-82,-32,-9,-77,-38,33,-76,-63,-32,51,69,-8,26,-75,80,59,101,-31,40,-37,-23,76,-110,-23,-83,-84,111,-31,124,122,-56,-67,-112,4,-123,65,67,101,12,-23,-12,-43,54,-87,35,66,-89,-47,-105,55,100,19,-80,21,-76,-85,-117,-61,19,107,-71,42,86,-9,-80,33,-65,120,106,-49,77,-34,-38,-50,-27,21,-28,65,97,108,-77,42,120,69,24,127,-20,89,112,-66,-126,-110,103,43,0,-63,28,-17,36,-43,-68,-117,115,-69,70,107,2,94,95,9,-83,-99,47,53,80,-105,28,-27,119,59,82,95,-94,-16,-49,15,-122,16,-89,17,64,-6,88,4,21,47,-78,50,-25,121,-36,-47,72,-21,-101,29,9,-83,28,-113,-68,23,115,-67,-101,-101,102,-98,-124,-98,-89,-24,82,-28,40,-89,125,23,83,97,-53,-7,-108,-90,-83,-113,-26,-58,-119,28,97,35,-74,6,-15,-40,-10,11,-98,79,101,101,-72,8,-99,117,80,-65,127,95,15,60,-29,2,-92,60,-118,-116,46,79,-79,-62,-43,104,73,107,117,-43,-127,-67,113,44,-41,67,-98,-73,26,74,59,-111,79,45,21,-60,-26,18,-72,54,-70,-30,10,114,-82,-124,-126,-52,-97,108,120,-19,-111,-52,102,10,18,99,49,-128,-17,91,-46,83,-76,-3,-41,45,47,-72,3,-19,112,-104,122,14,-77,-35,-23,121,41,-123,-2,-60,50,44,84,-45,69,-58,-69,43,-98,-11,-17,112,-95,-36,-69,67,-52,-11,-45,98,-126,-33,81,51,101,-38,67,68,-37,-78,12,107,105,75,-100,-109,-55,0,11,45,-24,3,54,-70,77,-63,125,52,93,-16,-22,-97,35,97,58,46,-61,66,-98,-61,12,-43,-63,-45,-36,-79,41,-58,54,-49,48,-63,-33,-110,-49,-36,93,73,-78,-33,50,-76,-6,-48,4,-87,-88,-81,-30,-33,-109,10,104,-94,94,38,-124,30,6,102,37,97,56,73,-106,-18,84,70,4,-31,-27,-90,54,63,50,10,-18,-113,125,-116,-86,-119,64,33,26,-128,-25,-77,76,-127,-79,0,60,-65,5,-63,-5,101,-91,69,-49,67,71,121,-22,59,-87,26,66,-26,7,-79,-73,-51,0,-114,-22,40,-115,-87,29,-18,-23,-72,-96,-55,-119,69,68,-102,-99,124,16,74,-34,5,87,120,-28,-6,-92,-111,-42,-85,-36,123,-86,-52,83,-77,-15,43,124,59,-81,103,96,-80,41,0,-62,-22,-13,77,-99,71,-121,104,72,43,107,4,80,-62,54,-98,-63,-13,-92,10,-119,-95,-76,-90,76,78,95,-108,-117,122,-115,88,52,-10,26,122,39,101,-80,12,107,-108,36,-13,-72,36,82,63,119,-57,-44,-7,77,-55,-25,-54,102,-118,-93,-91,58,11,11,-30,80,-62,-77,111,3,105,39,-63,-50,-33,-6,29,52,-98,-80,51,-5,-50,-122,93,116,-77,-45,79,110,-103,-20,-123,-16,-58,93,-101,-11,57,24,44,-60,-118,64,32,80,3,-25,107,60,126,124,-90,-22,-95,-91,-57,83,-46,1,-28,78,-47,74,15,42,26,113,42,-76,14,20,33,-93,37,107,89,-22,16,23,-16,60,108,-117,74,111,52,78,-97,53,-127,123,9,-78,-15,-17,86,5,-17,-120,28,-76,69,13,-76,120,-64,-35,-17,20,-98,126,-42,-88,-99,10,-113,44,84,115,-35,18,81,2,99,-82,74,-125,12,110,55,-110,31,-94,23,62,-4,-62,-122,-120,40,42,110,34,84,2,-3,-24,-75,-10,124,-38,-46,-14,-11,109,57,27,111,6,-99,27,126,72,41,-29,106,-24,96,96,60,-18,42,-104,82,53,-69,15,92,-79,127,-70,-102,-53,102,79,32,84,-119,115,-36,7,-84,-24,2,103,-77,54,60,1,-7,-64,-7,-22,114,-5,19,80,-49,107,-7,-2,89,-63,-26,-111,-51,17,-108,-40,9,-51,58,108,-55,-68,-117,99,-51,-117,-17,46,-33,69,13,-23,4,-71,-110,4,-95,119,103,-30,31,23,76,39,-36,6,-117,76,6,80,106,18,-124,-3,78,112,3,40,23,-55,-100,75,-118,-16,-52,18,69,-77,-91,126,-87,41,103,-127,7,105,106,77,-23,72,50,75,-16,-19,126,112,67,-4,-102,-56,53,38,-72,-60,-69,30,0,47,-95,100,53,-127,-16,-18,-16,29,46,73,90,-112,-97,-111,-15,-38,23,44,45,115,-93,-68,-32,-10,86,19,69,32,-104,-112,97,60,64,87,61,69,55,-92,-4,-77,-28,76,-82,56,123,52,-105,-38,-1,81,80,-40,-14,-78,115,32,-59,-123,-115,50,3,69,-14,5,-39,70,-124,34,61,-35,-57,34,127,-120,-13,109,-108,68,-22,-125,81,89,35,-21,88,87,107,-32,110,-27,-19,-82,-114,-81,99,115,-54,-92,90,65,-126,26,64,-114,36,70,-93,10,-94,-111,-90,118,-45,-3,-121,106,80,10,-101,-25,-12,-72,39,114,47,43,125,33,88,-109,-81,10,98,28,-98,105,96,123,-43,-58,-115,-122,-88,85,-80,26,91,-26,103,-88,-121,-66,101,87,-88,125,20,-58,-62,-46,-113,-100,-36,93,79,33,-108,49,-45,0,-19,70,103,-48,-19,-15,29,122,40,121,118,102,86,-83,111,-86,-26,-124,6,86,49,50,-67,-104,-28,-28,35,52,42,-25,-87,-6,-70,18,126,123,-128,-3,-109,-49,-94,-120,-62,62,-89,-107,94,110,109,10,-37,-126,99,-116,-85,113,100,-19,-52,65,-101,-45,93,-49,96,-78,84,28,-44,5,-110,-48,-26,62,127,49,-53,57,67,-85,127,60,120,-67,-96,107,34,-60,91,-6,-80,-8,-77,-119,50,89,-52,-64,96,-60,127,-76,-34,-1,-52,34,-25,100,99,-94,-46,12,-47,47,-47,-14,45,59,3,-74,-85,-49,103,-79,-6,-1,-25,0,-2,-44,-29,-11,6,108,-23,-48,91,56,75,-77,-71,-46,-100,-98,-100,90,-29,-56,-35,-3,54,-126,-62,124,1,-88,-26,4,101,95,-113,-67,75,39,104,-106,68,127,-127,-15,-36,-12,23,-51,-118,-22,-67,-39,-71,-77,52,104,9,-106,10,53,34,-98,-67,-74,84,95,87,38,-35,-103,-38,-125,-124,-31,41,3,-89,-41,-107,-9,-90,-39,-58,83,-106,-86,-24,-93,18,23,14,36,-56,-36,75,-123,10,7,109,13,-119,113,80,-68,45,35,57,32,-17,-1,28,-98,52,6,-37,-97,118,48,-119,-69,-102,37,-18,-4,-59,101,15,91,40,-31,3,5,-9,105,-9,-33,-31,-7,-71,-112,-71,-2,70,98,46,73,-99,42,-77,53,-38,48,-1,-120,76,-33,-62,-35,117,67,-117,33,58,2,-127,-100,-66,-117,-82,91,115,-111,33,24,-125,-89,76,84,15,27,-5,-87,49,-72,-35,-128,-49,114,65,82,-71,127,100,41,74,-63,52,0,-67,8,117,-102,5,123,87,-37,8,36,126,71,-108,-73,20,104,-76,-71,-50,18,-56,8,-62,-52,-105,-127,41,16,-26,-122,31,11,70,-100,-109,117,-35,88,29,-45,-78,115,-86,102,40,18,-58,-54,-84,32,-36,56,51,52,107,126,38,78,-66,-77,20,65,-119,-113,26,85,-92,-67,-35,-24,-47,-9,43,62,-70,-66,-41,-7,-72,-77,-79,56,75,49,67,65,43,102,-78,113,98,53,-47,20,-116,-4,-2,-12,-36,50,8,-118,-79,-120,-37,4,103,62,51,107,-90,79,49,-17,61,-15,36,17,-117,39,123,-87,61,11,96,-108,1,53,51,36,-19,-51,-69,-40,-91,127,-90,-62,126,79,-72,-61,123,41,-27,11,14,76,-67,-17,-70,-104,47,73,32,-120,-109,61,38,31,-1,-37,35,-21,-26,59,-53,-85,18,75,106,93,-83,-31,-18,-127,18,19,66,-74,10,-25,45,18,-109,30,4,13,-62,-47,13,-59,44,-96,19,-18,-113,65,-5,-75,91,-21,68,-90,46,25,-110,1,-115,-88,-91,55,13,86,24,-60,85,108,93,27,-61,-14,28,-110,-17,-18,68,70,113,-52,58,-9,52,111,-64,-97,64,-100,0,43,32,-88,13,-32,0,110,-104,92,108,66,-112,65,34,-64,-125,106,-9,113,-116,91,-35,-88,-91,-16,13,-117,3,37,121,-84,-75,-1,-44,-49,13,-77,81,46,113,-115,15,-37,21,-17,33,-19,-83,-95,27,28,83,53,22,-23,66,-25,-57,-15,-56,69,106,49,63,-120,125,106,-86,55,40,4,-96,-26,43,60,-107,-116,-76,-89,101,51,98,-21,106,-49,53,110,83,27,-119,36,2,-5,86,-50,47,-75,42,52,-59,63,-71,-67,60,83,6,65,124,16,28,14,63,-58,52,23,30,-81,49,-123,-26,42,-39,60,-27,-61,-66,-18,-88,-22,-46,-61,-60,65,66,-100,111,116,100,50,92,103,-83,111,-72,-5,116,111,72,39,101,54,-65,-44,8,-128,-88,113,18,-70,-78,-70,87,29,112,-31,63,9,12,-109,-27,-42,-52,55,-48,-70,95,-71,93,122,-46,53,-115,-22,-27,125,125,50,-58,-50,21,-71,9,-6,-82,45,50,51,-14,-74,-72,104,95,-86,57,65,-39,6,-10,21,-76,-52,127,-128,17,-36,-23,87,103,24,-95,95,10,95,21,61,-96,-24,-8,0,74,126,-14,-102,-44,107,-119,83,-123,51,27,-64,-17,124,24,-96,79,118,43,8,-95,-75,-106,-84,115,69,3,-118,122,-64,96,-29,-106,-78,-97,-82,122,51,14,-80,65,121,-66,-119,74,121,82,-120,77,96,-82,56,106,-45,-28,-116,78,-70,-13,90,41,-77,-55,-78,-49,91,-109,-36,-91,97,-31,95,27,-91,-116,-21,-17,87,112,-82,-51,62,-42,64,111,106,68,92,53,-68,-38,-55,-25,-38,-121,74,5,-96,-77,-14,-109,-87,75,-62,-108,12,-97,93,-91,42,24,-5,-45,79,126,-10,-71,-97,97,6,-19,-80,77,39,-111,-69,42,-123,-61,-30,-78,64,18,77,-99,82,-40,127,-39,46,66,46,-82,-70,-117,77,-17,27,96,10,56,16,83,22,114,114,24,-89,118,-84,116,19,-88,80,16,-25,66,111,-70,70,-86,-88,10,-1,80,-82,-95,95,-20,-121,-114,26,-15,-104,-77,-120,-7,97,123,68,69,-12,59,24,-20,100,46,75,-76,-23,-41,79,82,-3,-115,44,-69,-55,-100,95,81,-108,-125,-121,-46,-48,-112,-22,-10,-40,-60,112,22,79,89,-99,53,-54,48,-110,16,-51,77,94,59,-103,-50,-10,34,-115,60,84,31,-58,-55,-10,64,23,-5,112,96,85,75,4,-106,-77,55,-33,87,-76,-79,53,71,-8,-92,63,118,-60,-84,99,107,46,88,-89,24,-41,98,-36,-22,34,-88,-23,78,84,56,52,-14,60,123,-20,38,-56,-66,67,-80,117,-6,115,121,39,-126,-77,-8,89,22,29,-101,55,29,-31,-108,123,125,-46,6,103,-88,-35,25,-58,65,-118,40,-39,26,62,15,-25,77,-50,117,44,79,-79,64,-114,94,-31,-26,-67,-10,-114,-19,69,24,111,14,-33,-52,110,50,95,-107,63,-71,36,-21,-22,-7,-95,19,-71,-38,-88,124,47,120,98,22,-69,73,-5,-114,-18,106,-41,-102,-26,28,-41,-101,-105,-31,-120,-26,22,-21,-31,-44,-50,-127,88,85,111,33,-53,-114,-12,71,53,126,-55,82,93,-104,-77,41,-50,46,90,54,-28,-38,-128,-68,-80,-13,34,-63,31,60,-81,40,55,77,-5,-17,94,-110,30,96,26,61,43,-48,-128,101,13,-8,-6,-29,-60,115,-62,107,-57,54,96,13,114,-89,36,-69,-40,106,98,107,19,-28,-4,14,-97,-60,-71,-64,-107,-48,75,-50,-54,90,60,108,-101,-104,25,92,-60,-17,48,-63,103,113,59,24,51,32,-26,-101,121,71,-21,-83,-68,79,-115,42,5,89,-38,65,28,-91,22,4,89,7,-57,122,-51,-120,-58,-110,-42,-70,105,102,-112,33,-83,21,-14,62,-116,123,-55,-114,95,-110,-46,76,-12,-6,-88,-48,-126,49,-67,95,-94,42,76,84,-112,-64,-20,114,9,-8,-96,-38,-38,-85,72,55,7,127,117,54,-52,41,-89,-46,-95,-121,-97,-113,46,95,79,-105,96,36,62,111,-38,89,-97,61,24,120,90,-111,-69,43,48,88,25,-58,-89,55,26,14,121,-126,42,79,56,-43,-88,109,-53,31,69,-114,-1,-81,94,-50,35,20,-93,62,69,-96,120,-35,-103,-86,126,-44,-96,102,54,12,-97,-79,97,-49,-18,80,-68,-111,-17,39,87,102,6,-10,11,2,-89,-74,-104,-43,-9,53,-68,28,-126,-71,66,-26,34,102,32,-36,-96,-83,87,-127,83,-50,-60,-98,71,-81,108,-97,-74,50,20,-98,-9,75,8,-48,0,124,-27,74,-59,1,-121,118,52,-57,15,112,81,120,-10,-66,42,87,-92,-89,-123,-1,-29,-74,126,57,-50,31,115,-47,-20,-89,-107,51,49,28,110,38,-73,-37,-72,-70,-124,-20,-109,67,7,-114,64,32,-76,101,-107,52,-89,-109,51,-51,-3,-98,122,100,-57,-2,34,-38,22,-101,15,92,9,-104,47,-9,-18,47,27,-38,-58,-122,-20,102,-78,-63,-19,-71,-112,65,-48,49,27,85,-113,-57,108,24,81,-96,-47,99,-67,-121,-17,2,-29,-9,89,109,-45,-127,-59,122,44,-81,-39,55,5,40,0,-11,61,37,-82,18,-97,-69,-45,27,11,-70,-88,31,117,-98,115,114,75,-104,46,-3,104,-67,49,21,18,95,31,-8,11,55,-76,22,39,-17,10,24,-63,-97,57,114,-46,-62,-66,34,-86,-94,-67,-109,124,68,26,42,-65,-60,97,-41,59,118,-104,55,16,-25,-13,-99,-28,-50,-50,103,51,-77,91,55,53,-17,-108,-82,-121,-54,118,24,77,24,-120,73,-61,36,-122,-63,51,-88,22,104,76,14,63,118,122,-31,59,-115,-92,29,-66,101,-48,-7,-5,30,86,-41,-87,11,71,-15,75,-30,-110,2,9,91,18,101,-102,-51,-115,-83,14,37,-41,-17,106,-43,-108,-42,34,-86,65,57,12,-13,114,25,-36,-69,-48,93,-99,-89,-104,54,19,15,-101,-105,24,-51,-26,93,95,-2,-43,51,-14,-112,-83,69,77,122,20,-7,107,-29,79,115,115,-102,-58,-111,46,8,112,-67,-20,-97,-88,98,75,-30,-47,90,110,25,3,-8,94,70,47,22,-91,-103,-54,58,-38,-12,-50,51,37,72,27,7,-112,-50,31,-14,70,-76,-95,-109,-111,48,-75,118,-2,30,-7,-123,32,33,-89,-47,25,-6,67,73,-29,-7,-93,49,111,112,76,-65,8,-76,-95,45,83,-79,84,23,20,-96,-52,15,-70,-56,7,-58,106,85,122,-96,8,-84,85,-101,-30,35,-14,23,112,33,-86,20,-93,73,-30,-8,-79,-39,-77,-36,-38,-107,-112,-89,49,-27,103,48,31,127,-22,68,-35,100,99,57,-26,74,85,118,101,-43,105,-76,-93,-127,44,-1,39,68,12,93,-33,13,-78,11,-51,85,44,-99,12,-85,-63,98,-5,-92,76,25,-68,-86,-121,-67,-64,-109,31,64,-90,-58,126,52,-41,20,27,120,-86,-117,71,-128,-128,-28,-39,82,-102,113,59,30,-128,78,30,103,-11,-95,117,74,113,94,46,56,-96,41,48,-85,-25,-28,-79,104,3,-73,2,30,-22,76,-103,101,83,-89,34,2,127,-26,25,-82,8,18,-3,-20,13,52,-21,36,-38,90,112,-85,-92,-79,9,-72,98,15,-26,-32,-4,26,-26,-94,112,-5,69,-21,31,-84,-17,-112,-83,46,-24,-105,3,-102,15,-60,-123,99,-6,-47,22,-120,70,125,86,35,38,35,5,-100,89,96,64,-33,-55,29,-82,55,-3,17,89,52,104,126,62,-125,-80,113,34,53,77,83,-28,-65,-27,2,68,-114,-37,-4,-94,89,-41,51,-85,43,-36,93,-93,74,-8,109,-92,-70,114,-120,44,-63,77,102,50,36,88,16,19,99,-9,64,-57,-43,-81,-67,-70,-9,89,-64,114,53,-99,5,-31,87,74,66,-37,75,108,-100,85,-101,-44,-120,-32,-70,92,80,30,-16,112,-102,96,99,-6,123,-89,100,102,-38,-90,102,-80,-9,52,9,-47,-114,-81,-128,-112,2,87,-40,-41,46,-15,119,-107,79,105,15,-53,108,72,-22,36,45,82,-88,59,19,118,27,123,-93,-46,-44,93,-98,64,105,-80,99,-110,-8,-51,33,-58,76,-103,87,-13,26,76,-93,-13,83,127,-4,-52,-54,21,70,-93,20,-7,19,7,102,94,41,67,14,-52,17,54,23,-81,93,-61,76,-23,-92,-118,9,110,99,-53,-128,123,-127,-24,-125,-76,88,-79,63,-65,71,-79,59,-45,-64,-85,-111,-53,55,-102,22,-78,48,-67,25,100,0,30,72,19,56,-54,-6,40,-71,-42,98,127,-46,58,40,34,-6,-112,21,-113,2,-14,-42,-25,-78,-55,12,62,58,-127,-44,-40,85,29,-80,-27,-72,73,8,-36,-32,-21,34,-46,84,41,75,109,-41,123,-92,20,-123,106,72,47,41,-73,-12,-38,117,-89,44,-128,-102,-65,49,-43,69,-53,-119,60,-97,-39,9,-118,-33,-58,28,105,-41,70,111,39,-41,90,58,20,-25,-21,110,50,-114,-68,-104,-35,96,58,-16,98,26,-80,-98,63,74,119,-85,21,-124,8,118,-61,-125,-112,23,30,-77,92,-11,-28,-101,-57,-9,93,-49,103,32,-97,87,116,-96,77,-48,-27,92,57,-29,-25,52,-107,-77,-50,114,99,-79,24,-58,-19,-96,-113,47,-80,8,-83,-72,69,-6,55,92,39,17,76,21,-127,-5,-60,-115,-55,-28,40,-43,-43,106,112,-35,-57,25,80,19,-39,-6,-111,-79,4,-59,-77,121,-103,-89,-127,-113,28,61,-50,-125,58,-38,-33,43,124,41,69,-105,2,99,83,-31,-119,-21,38,90,92,-88,113,-83,56,-56,61,-49,-74,-2,-23,101,-114,26,114,-95,-52,-73,-7,-53,116,32,49,119,81,-88,-49,-102,-126,50,-47,38,-13,76,69,-73,-124,5,-53,-63,11,-42,35,-97,46,29,-43,112,-2,46,58,83,-17,41,-5,125,-34,-96,67,49,-17,-80,38,-82,81,29,84,-13,96,-112,49,13,65,117,52,23,3,49,-26,-43,-88,-97,93,-60,-93,-34,-54,-74,5,-113,64,-73,23,-95,50,17,-112,123,-90,4,-35,103,16,-41,26,-104,109,-119,-71,95,28,60,-71,-41,-26,5,-118,-31,-126,58,-93,-50,-48,30,-51,-31,-2,-92,-75,85,-52,71,112,-48,74,-65,-24,41,104,121,-95,122,-83,-49,119,-20,38,97,23,-73,-22,55,-118,45,25,-37,47,-122,89,-4,125,-105,37,55,102,52,-12,34,7,85,15,-6,17,13,18,97,20,-92,79,107,-16,117,-80,60,-3,-23,81,-70,124,52,-36,105,-44,-125,-40,-81,28,88,-57,-111,-96,-49,18,-5,71,-37,32,-73,53,1,-124,77,-70,-107,33,-79,-83,-34,-125,43,20,-55,15,-53,59,59,-97,71,44,78,80,33,-20,65,68,-72,-125,23,-30,-3,-89,93,64,88,123,-44,126,117,59,38,-5,32,40,125,124,98,-104,-31,-59,-27,98,12,125,-43,-48,-74,43,62,-6,73,-3,19,100,-104,-62,35,47,-8,37,60,-125,-100,95,49,-74,-15,8,76,58,14,-85,20,-56,29,70,-125,94,-60,-56,-112,82,73,92,78,-40,-37,37,-50,22,19,63,23,-49,116,27,113,82,-5,24,46,85,41,106,-11,102,-123,60,45,-108,63,124,-67,114,53,-14,-126,-108,64,-6,-27,-19,-101,-27,102,112,-45,93,-4,-36,-68,-111,93,-64,69,-128,-109,-78,-16,-62,-79,-51,-8,-39,-40,-94,-4,123,-117,70,87,-91,-79,15,18,98,11,-51,-104,-76,-59,40,-82,110,100,102,13,71,42,117,-81,-41,-120,-48,-17,-20,44,-44,-120,76,79,123,-128,111,-51,71,-41,-76,-86,-32,80,-43,124,-65,123,21,5,5,55,34,73,-46,-55,58,-108,116,110,85,59,-61,-24,-86,111,-34,-128,-111,59,45,-125,-94,-47,-90,48,-109,-56,-95,-37,-127,79,-17,102,-52,-96,16,-77,31,40,-59,-93,-26,10,-28,108,-2,-85,95,-25,-88,-94,120,30,-24,-69,-9,90,81,67,-92,123,116,42,12,123,88,86,-86,10,-16,-77,54,-119,-54,-43,-7,104,-111,-75,-3,63,-96,-95,112,-68,80,68,-128,3,-13,-37,74,-113,62,-88,-32,-40,-48,55,-21,-64,64,118,-126,-41,-79,-75,-112,-78,-81,19,20,-10,86,97,-20,127,101,56,118,69,-62,73,52,125,-15,-84,-30,65,105,-53,-59,-54,87,-87,87,-116,49,-120,71,-48,-108,99,-19,-107,-98,-40,58,86,-119,-125,-62,-38,23,91,85,-55,52,-31,123,-76,120,77,49,122,-118,-19,-56,86,-74,-15,-82,47,-121,-83,21,-69,119,-86,-39,59,-84,87,1,19,-58,-67,-122,-45,54,-38,-96,-13,100,-91,-118,-97,-72,73,-30,23,-121,-30,-36,94,-38,20,22,-4,-85,-7,50,114,-105,95,35,-85,-41,-89,93,8,-53,45,87,93,117,30,17,-61,69,-61,48,-52,-75,-99,-104,-113,-27,10,80,89,119,107,-76,-30,75,125,122,55,-13,8,-37,-37,13,24,33,31,98,-14,101,-51,24,27,37,-51,110,-15,83,-49,-122,85,-30,18,-17,92,101,12,97,-54,-99,4,73,-82,-46,111,29,-7,-75,90,106,-91,45,68,-111,68,-63,99,86,-74,-122,-35,21,-28,-22,74,-80,-70,-93,50,-9,14,-84,45,-18,-41,-50,-105,-94,82,-89,102,74,-38,120,90,43,-17,-82,-83,-119,-17,-106,52,-80,-63,123,124,75,-118,98,0,-100,-76,77,-72,-18,80,-49,61,100,107,89,-27,93,-70,-52,-68,-89,-46,49,-9,-77,13,-29,103,-52,-69,-88,-65,-33,39,-119,-105,29,96,48,86,-76,55,62,-128,109,5,73,-94,-11,-43,-82,-32,52,122,33,29,63,-40,-89,-88,77,-16,67,-69,-106,-59,112,59,6,-67,-92,-115,107,-120,40,38,69,-33,87,81,9,8,9,-31,-110,-68,113,-117,44,-81,-62,-85,-23,77,-6,84,-63,-126,58,105,-48,75,38,80,-2,-45,34,-62,107,-8,-16,-82,-17,-128,57,-113,12,-99,-110,-47,100,-44,-23,121,42,-29,34,-64,100,-124,123,105,-7,-128,117,5,13,-13,-125,112,86,-4,53,-128,-81,-87,-75,-18,116,-77,-110,-122,100,-60,-124,117,82,-35,77,87,29,125,-127,123,-54,100,-117,-100,-49,-105,-77,2,-110,-4,-101,6,53,63,-103,76,-118,-40,108,-103,52,122,-3,54,57,-86,65,86,4,-106,-99,82,68,-44,15,-41,17,51,4,92,22,-63,-83,-126,63,65,-115,76,-109,80,-50,16,79,105,-115,96,-71,34,-61,-89,92,98,-36,-88,56,113,18,-123,120,32,110,81,108,-29,-31,34,-102,-24,-33,-8,76,25,-128,77,90,84,76,-98,-104,-4,-105,-65,-62,10,29,-80,-116,89,120,101,-36,22,-85,77,-44,3,-107,63,-19,45,-126,16,1,-29,31,-125,113,-108,30,-103,-127,-38,26,-18,-120,-56,-121,32,-25,102,-7,-85,-50,47,-121,-109,-127,-6,-34,55,-34,-114,82,-6,83,-44,-2,-69,101,-34,-21,123,33,25,-23,-108,-46,-107,-46,56,38,-30,108,106,-31,60,-78,8,4,25,124,12,37,29,2,89,40,100,-48,21,-53,-87,109,-116,77,-46,-60,-64,122,-68,-25,-109,28,-71,62,121,-73,-84,80,12,-88,-118,-89,109,-74,106,-62,89,-65,58,-73,-74,-110,-64,-73,-27,-87,96,-128,-122,54,-72,42,22,-37,73,-87,6,31,29,-46,62,23,-99,63,114,-20,10,-43,68,15,-24,124,-63,-25,76,-12,30,-43,-86,38,111,69,-121,-5,-49,-42,34,-51,119,80,39,86,-32,-74,27,-71,-24,-25,73,74,-11,104,53,117,87,-11,-32,-115,-24,-78,99,-7,-113,-76,-99,112,-20,50,121,-9,-103,111,-10,-68,-9,96,-35,-108,10,2,-38,-18,-73,90,-64,-105,94,-22,103,22,116,-68,99,-42,124,-117,-122,-119,-43,47,-6,72,90,52,-52,-76,2,-84,-22,-19,-85,92,-124,13,-115,2,36,107,15,-76,127,47,-39,3,-109,90,-24,-74,1,-29,-17,-21,-27,32,102,-57,26,-108,-114,-104,-112,76,-47,86,-17,-86,38,114,106,-81,-77,67,52,-28,-68,23,-63,-57,-110,95,-81,-35,-97,-96,-29,-11,64,-118,-1,-99,-25,68,-24,-118,-84,-113,68,94,-39,93,77,-80,-1,-123,12,97,80,-117,111,-52,5,5,-24,-98,-27,-96,48,-37,-108,-28,70,63,-21,23,123,67,-33,47,-96,-58,-50,-109,-124,-64,20,-37,44,-101,34,100,95,94,-57,-4,39,-21,-62,-37,-76,-72,-51,114,10,-21,113,-68,45,27,-77,105,47,18,122,43,-117,-99,-82,-15,40,-7,112,-86,27,-37,83,-53,-8,1,-110,64,47,-58,44,14,-50,18,-33,-17,69,-90,51,-58,35,-103,29,38,100,107,-44,106,-99,-49,-90,107,23,-44,-79,-21,7,-10,40,-58,-76,-50,-106,-47,84,34,91,23,-9,113,114,-91,-11,-62,64,58,20,44,-76,-55,-105,38,-101,94,121,-125,81,-128,-55,-101,-22,78,100,43,94,118,-46,-103,-36,48,81,45,90,2,-3,44,-8,-49,-66,104,116,-69,-90,-78,28,15,-65,-31,103,14,-71,-103,-90,36,-54,-81,-62,-35,70,-60,103,45,-13,20,-32,127,-93,59,127,-89,-54,-23,117,77,48,3,-84,-56,-35,37,87,-115,60,11,-27,103,44,78,-16,-3,-112,-44,45,-112,61,-102,-104,-67,88,102,121,104,-106,46,-39,-91,52,-77,-13,118,-79,-52,61,-5,-90,46,24,-84,-59,57,-34,-62,101,47,-66,122,-18,28,102,-123,32,-19,121,12,81,-110,89,-38,-78,8,-78,-2,-94,44,111,-2,-36,-66,22,-59,83,-43,92,-29,60,-71,92,7,-51,19,-2,-66,39,-100,116,92,-78,7,124,107,103,127,-115,62,80,99,98,-74,-95,109,-3,-126,59,-61,-93,-58,11,87,-24,113,100,21,-65,-103,-71,-106,122,-71,96,100,-38,-23,-118,72,0,-68,-55,-108,88,82,73,119,-105,59,-90,-41,99,76,37,-41,-62,18,94,-37,67,56,68,-41,110,-24,53,14,-62,-121,38,-84,13,48,48,116,-17,-80,110,-63,50,8,-4,111,-77,-4,77,112,19,64,-9,-32,-45,77,72,-90,-127,74,88,-61,-85,-75,63,125,-46,-86,-15,79,116,7,76,46,-99,14,36,-55,0,76,95,101,-115,-18,67,-35,71,-104,95,8,-124,-42,38,13,-70,98,18,77,51,-27,-82,-61,-66,26,2,2,-26,-119,-61,-70,44,27,114,99,-99,97,14,34,63,-44,-88,65,82,-47,30,-99,-97,-13,13,48,47,117,4,-29,37,-7,11,28,78,-59,41,-94,8,-125,99,32,-109,-13,14,-58,11,100,101,-94,-61,-49,45,90,47,77,84,19,12,-86,-24,-63,112,73,-48,4,-91,47,54,3,67,68,5,-26,-64,-71,110,113,-96,23,105,-14,-79,67,-18,36,-35,48,-36,68,-33,56,-5,39,-56,-11,-20,-43,6,-33,82,121,29,-78,8,28,-29,-76,-101,-81,116,-72,-98,97,-16,107,123,-89,-47,102,-84,-113,-107,-24,105,-112,-67,-41,-77,-18,29,-19,49,54,49,20,41,63,84,103,15,33,50,-118,-25,42,87,48,61,-48,-121,-74,16,-85,-13,-14,6,-76,82,-68,90,-4,-40,17,2,-101,81,102,-80,-2,-64,-74,-54,8,7,99,-117,21,21,74,-50,-36,-89,85,-75,-35,-29,2,-105,-55,2,71,28,-118,53,-84,126,2,9,-104,-20,45,4,-113,76,10,124,81,83,88,50,66,95,44,-110,17,122,30,92,26,-85,-53,73,-32,-78,-127,5,34,3,-75,81,-15,54,-13,9,-126,-42,-102,7,119,96,34,109,67,6,-70,116,-26,9,103,19,116,-9,88,-12,39,-88,92,85,-87,91,33,-43,96,120,-59,-53,12,84,-18,-68,3,-87,48,-99,87,-28,21,-88,-93,86,116,63,100,33,-65,-56,-36,-36,-38,-80,-62,-97,-87,66,77,-65,103,85,-99,73,103,102,-80,104,-70,60,-6,-96,-67,1,-44,-1,90,-80,-59,93,39,-81,63,66,-35,17,-56,-58,-49,83,-80,71,-54,-111,-7,92,-48,29,56,-7,-107,-114,21,-75,54,-124,-60,-3,-78,-13,-110,61,123,80,96,-49,-105,-115,112,-29,-68,126,-74,-87,82,70,-70,16,-84,53,-16,22,29,-40,-47,-90,14,-117,6,-3,-13,64,87,-84,-100,52,-57,23,108,74,59,-37,82,45,20,87,-65,52,-96,57,-61,2,-33,-39,78,-79,-61,84,63,34,27,37,-13,12,32,101,9,-16,21,-19,59,-119,57,-97,-124,127,76,6,83,80,27,-31,102,-105,56,118,85,89,16,98,-57,68,6,3,58,-95,-78,-77,26,-26,-21,5,-113,23,90,-110,-16,35,-108,-23,-47,-14,-42,102,119,46,10,58,83,-117,-49,80,-38,-58,80,25,-85,40,-2,-54,-35,-100,-77,-80,87,-122,-94,-45,-115,63,-10,86,84,-47,101,-114,123,111,71,-75,-111,-47,43,-35,-99,-22,-3,106,-89,-94,22,111,-52,95,104,-17,71,96,7,10,-99,-90,-38,32,-81,-7,30,-112,-16,-11,-104,106,-30,78,-110,99,30,-31,111,-125,-50,-19,-66,-50,109,-113,26,95,-74,-86,4,-66,70,-4,-2,-14,-86,-83,118,48,-62,-30,-2,-78,102,-105,83,-45,37,58,100,53,-66,46,-104,-25,125,-112,49,89,95,75,88,22,19,-76,101,-35,39,20,-82,54,61,-40,-106,-83,32,-106,-80,116,-52,-45,-126,-86,-56,-71,52,108,70,39,-24,103,71,121,117,120,9,5,-97,110,-79,-39,77,-56,71,-90,-97,3,-8,-64,-5,-102,105,59,-76,-100,-65,-99,-7,-6,85,115,14,112,118,65,-60,10,116,68,-83,69,-118,23,13,24,40,68,-2,-78,-43,79,-63,96,-5,-19,19,-56,94,-79,96,-7,19,-93,31,-47,30,22,89,43,-104,61,29,-49,-111,61,-41,121,32,116,121,-17,-109,-51,51,7,-6,-80,-84,-105,-41,88,-61,16,91,115,69,-25,-80,-12,45,-70,80,75,-22,-38,111,15,-71,39,62,68,-51,40,11,-9,51,44,29,-27,-106,112,-95,29,-105,-114,68,105,-109,-68,-13,-82,33,51,50,-48,-65,-103,-46,13,-29,-51,17,54,123,-91,108,-73,43,-120,27,100,-13,32,52,123,33,-52,-43,-110,-79,-76,-30,-86,-90,109,49,103,-28,39,-52,41,106,0,-13,10,124,-57,-15,10,-124,74,26,91,114,-63,-48,52,11,83,-44,95,13,-23,-57,114,82,-108,96,39,-34,27,29,-60,30,99,5,-101,-128,117,-74,-47,-118,-33,-69,-121,-18,-112,20,-6,117,-35,-80,-35,-102,109,24,-33,-5,47,-13,101,-127,4,25,1,-57,-117,-65,74,-107,-64,125,0,-60,-78,110,-100,-19,-1,-63,27,-17,61,-75,-84,-56,-29,-25,21,46,107,88,-33,109,-89,83,-83,-121,-100,-55,-48,29,-3,28,98,-59,-64,-73,-65,-86,-63,30,92,4,-29,65,-26,-111,47,1,-21,-109,26,-86,-119,113,-1,-29,-88,75,77,-54,-35,-95,22,24,-40,80,127,-56,-24,125,43,-18,97,-32,-77,61,-85,-105,69,19,9,127,65,10,9,-76,90,-37,-2,-15,-18,-57,2,11,27,-51,109,17,28,2,90,22,69,98,-55,-53,-63,125,48,44,-13,-96,-94,65,-116,88,-2,76,72,61,79,64,12,-112,-11,72,44,-103,-29,-24,106,78,91,-93,72,74,-123,-121,-36,4,79,-28,92,83,-109,-99,-98,63,92,-39,98,94,-43,10,-57,83,-23,50,92,79,-111,-79,-32,40,-34,91,-26,115,-124,68,-19,-72,56,-101,60,-73,-55,-83,36,-59,-86,3,-73,-98,-85,103,3,10,-113,53,34,-90,112,-122,-114,26,46,52,58,51,-101,29,-1,-87,-108,25,-77,-51,0,97,32,-36,57,117,67,-124,-61,-67,13,8,-108,-59,-50,28,95,10,-112,124,105,-127,-54,-43,-86,53,-50,-1,-108,65,-111,35,-42,-119,-28,-47,-92,15,-97,-50,12,-42,63,10,-71,-23,22,83,-24,20,-28,69,114,108,98,29,3,123,-42,-101,120,-36,13,-44,87,74,15,-89,77,-23,56,65,-12,19,54,66,-31,-111,-16,109,-43,-87,111,69,79,124,-8,-17,-46,15,-48,61,-28,-72,108,-58,-55,83,53,-80,118,-88,43,-54,74,-38,-102,56,116,-125,-80,-75,-3,43,105,88,-66,-120,117,-58,82,-5,74,6,78,-79,-72,-51,85,-100,-49,123,-42,90,4,-33,-55,127,88,60,-115,-123,20,123,117,-75,9,122,-19,-98,-97,-15,90,92,-32,94,-86,68,41,93,106,-41,-60,-80,40,-91,24,-86,-39,-120,73,-27,125,65,-87,-123,-41,35,-9,113,91,-111,-40,2,5,83,34,-66,114,90,-111,57,126,62,-93,-117,5,-68,60,11,-105,-33,-35,51,-52,97,-45,83,117,-81,36,45,59,64,-43,-62,69,110,-95,88,102,107,-125,-97,43,-122,95,4,1,25,-51,-12,43,100,-22,98,-64,64,94,-74,45,-46,-38,102,-21,29,-37,-123,-104,-2,119,-40,115,15,-31,2,21,75,-115,82,-8,74,18,8,27,90,-80,88,10,-104,37,-1,-82,80,77,-97,-99,35,-105,40,110,24,-49,99,-94,20,43,40,-40,113,10,-71,43,-22,-63,77,64,-79,-3,-82,-44,23,-53,86,110,97,-124,-27,-106,104,-95,-96,-121,-14,25,74,54,72,120,107,-128,-60,-9,21,49,-12,-67,18,-30,-91,-33,77,40,33,38,-70,7,-89,-43,44,-12,-108,111,14,36,85,-15,112,-85,-48,-109,98,57,-17,100,85,-123,-111,-72,60,15,11,-124,90,-105,-107,7,-121,91,-98,-10,83,-116,54,-10,-128,64,38,59,64,-25,-17,36,101,-96,67,-108,-89,46,26,20,126,-71,0,-1,77,32,-31,-72,-29,44,-8,-14,-74,42,-21,-11,95,119,123,84,-128,30,20,27,-74,38,-122,-11,41,94,-33,-51,-115,45,7,74,80,35,-30,18,-101,-6,-92,95,-69,33,15,16,-59,-111,-67,3,-86,28,40,-43,68,27,-95,-111,-26,98,83,38,106,-126,86,-34,-54,-102,-88,-110,38,40,46,-37,81,11,-8,-122,-46,30,90,112,-40,95,-73,-61,77,-123,105,-44,32,-109,81,-110,-23,127,81,-83,-55,77,-44,62,-33,-70,4,-62,52,115,-36,32,-96,-123,86,-33,127,86,43,38,53,21,-125,106,-69,-16,-98,84,-80,-12,-25,17,-70,-72,-33,34,-115,-119,42,48,-34,6,-18,91,-19,22,46,0,-92,-27,-116,106,35,78,50,44,-110,-113,14,7,18,-123,-112,22,113,-91,-17,-51,88,-83,-19,-51,30,28,-64,109,-114,86,-33,73,30,-1,-58,-121,51,-109,104,86,89,119,-76,-28,-90,-95,69,-100,-55,-23,58,-14,-112,30,125,-77,72,-99,39,55,67,54,4,-6,52,50,-47,92,-26,6,3,76,96,89,126,97,80,-80,-76,-100,67,-119,58,-36,-13,16,53,53,5,123,31,106,33,-67,-27,111,48,7,23,-111,-110,-42,-105,-16,38,43,-17,51,-12,-98,-32,89,3,64,65,118,21,-66,-93,-1,-115,93,7,-75,-25,126,107,59,-19,-26,-107,14,75,45,-110,-16,-34,50,-11,2,-109,19,125,-61,-94,-63,-24,123,-11,54,121,-115,-16,-39,2,98,77,102,52,90,-110,-55,-119,109,-47,-121,119,116,65,68,6,6,22,103,49,-121,-117,119,-90,-38,124,-32,90,104,109,-16,-92,-100,61,-115,60,-107,-26,93,111,27,-124,54,-77,-72,123,-79,-89,89,-54,-94,59,108,-49,78,-4,-108,-28,-119,42,55,36,95,-7,123,-99,-42,-6,-100,91,-65,32,-24,-77,106,-5,59,-93,-100,35,115,70,-90,-6,-7,40,-20,76,105,-32,-74,-32,77,-91,114,-126,49,-83,-81,113,84,80,-69,-13,-99,-29,-103,-69,102,-108,-127,-43,87,-11,-126,119,-113,-104,-11,62,79,26,-90,7,-22,-64,-107,77,77,-83,24,52,-90,-57,10,114,-22,-38,115,-52,-37,-63,-76,94,-13,-56,-96,59,78,33,85,-97,-82,10,74,-113,-95,-78,99,50,-66,4,32,69,102,20,-76,-57,-69,-26,5,127,-105,94,-72,-117,-19,-7,-38,-91,24,59,86,9,91,-58,126,-126,-81,-39,28,124,35,101,74,-90,120,54,14,-108,-31,80,94,50,-40,-56,26,19,-5,-37,-39,-117,-45,9,37,83,53,-73,-22,-102,-107,-104,38,-125,-126,90,-106,-98,74,72,21,-56,-76,20,109,52,29,-45,-42,51,-51,-1,122,12,91,-18,-69,-3,55,51,-111,123,-106,11,-108,51,-93,96,-100,-87,91,-51,70,15,-39,-81,35,-54,62,-87,33,-125,-64,-111,14,-89,-109,70,-36,-122,65,-47,126,-119,126,-49,-34,126,46,-87,88,-107,-117,119,29,25,-65,-89,62,-88,-89,-117,103,9,100,-36,56,95,79,-124,66,-126,-5,-9,9,-95,-95,-93,54,-54,-2,81,-106,-25,21,108,105,-9,-37,-97,69,84,122,39,-124,59,98,-25,-67,35,18,48,-105,78,117,-75,-42,-76,3,-107,76,3,79,-81,-61,-99,30,-99,101,-94,-118,112,-88,-82,-19,103,-67,-71,76,-105,-24,-20,-91,83,90,-7,120,34,-26,75,-110,41,62,-77,-116,23,109,74,107,-78,94,26,-125,-13,27,99,49,77,-73,87,100,77,0,93,88,-23,-115,-108,-36,-24,123,-60,-65,-63,-44,19,0,102,-19,69,89,85,-96,-103,88,123,108,-68,119,-99,89,-56,11,116,-106,-68,97,6,-60,52,47,-1,-53,-55,94,-107,-3,-105,-9,-3,-21,-37,-69,18,-59,37,78,127,118,-117,107,-79,-43,124,-108,33,-121,52,-25,-71,76,-2,64,27,-52,88,68,14,25,57,-115,30,-36,63,-16,-75,92,-57,110,-105,-82,-72,-21,30,113,-20,-92,-15,-77,-25,-20,106,22,79,56,21,68,115,98,71,32,122,20,-70,112,62,38,105,48,115,15,47,-124,-71,48,-41,-85,-6,127,9,122,-68,110,-45,-35,-103,-21,122,30,42,-70,68,9,13,83,105,110,98,8,-42,93,-26,117,21,-42,27,-82,110,-123,-98,10,-5,22,-112,29,-32,109,7,31,-91,22,-56,71,60,29,4,-126,63,-64,74,-77,-53,92,-54,-7,-128,72,-92,-20,6,-89,52,-20,46,32,-119,-94,-90,-92,74,106,22,-50,-69,88,107,8,55,3,-102,-64,-106,28,74,13,97,96,110,-59,83,58,-95,-49,87,-106,71,9,125,-19,26,-26,-28,-93,-52,20,49,-63,-73,-11,14,112,121,-65,-128,88,4,72,-29,-117,-74,-33,102,21,125,112,-82,-49,-7,-28,46,82,-71,12,4,118,121,97,28,16,85,50,-24,78,76,74,-47,107,-67,63,-112,-94,93,-59,-32,-48,119,84,74,108,52,-113,-96,-17,27,122,23,-67,-10,33,-54,-63,49,57,-58,-103,54,20,-18,102,-78,-125,20,62,109,7,107,-20,31,-85,104,5,81,-61,51,98,125,-32,125,-90,-100,6,104,64,56,126,-86,24,109,23,15,-100,23,50,-83,22,30,-128,123,-82,-89,14,-82,-48,-36,-92,-12,-65,10,107,-124,-61,-36,-75,0,49,-105,26,101,119,120,-37,-89,-38,18,-55,-118,-47,-92,-17,-14,48,-50,-72,-100,112,-125,-106,126,-114,-23,-105,102,-41,-7,-5,-25,87,71,-111,-76,-11,-106,57,39,-84,-28,123,47,50,-23,-66,102,-101,-65,103,10,32,84,82,32,34,-112,-14,-109,-125,79,28,97,-18,38,56,-70,-36,-6,-78,33,-80,-120,104,27,68,41,93,125,-95,90,-18,-33,-97,-102,53,4,-79,-27,30,41,-51,-72,-74,-102,92,28,-56,122,114,-105,121,-51,8,63,-117,-56,126,-127,-126,84,49,30,-76,-45,-13,53,57,34,3,-85,49,41,-112,-71,127,22,-111,-114,-34,-45,38,44,97,4,52,-111,-35,-98,-24,-53,42,-118,74,-86,-19,-52,-119,-88,22,119,-89,71,112,26,-21,52,35,65,126,117,-110,47,4,-66,21,-8,-51,-72,-120,72,-107,85,3,72,73,-27,-36,19,-114,71,-89,-111,-100,116,-97,-53,87,-68,-121,-29,17,-60,-28,-64,116,11,45,-125,-83,-55,71,4,-3,-123,53,-122,42,-45,104,101,-22,81,-24,49,-37,91,-2,44,-77,-72,-64,-80,-100,-75,-26,-102,108,19,-107,-23,-51,-11,-4,-18,118,-18,125,-84,90,41,8,30,-54,21,-91,-115,102,-99,-35,6,-35,24,102,26,-108,-8,39,-93,1,76,124,-9,28,114,-39,44,9,72,-72,67,-24,-41,-3,-92,-58,-31,-57,29,127,36,16,-87,-1,-124,-34,57,-23,118,-38,51,-19,121,15,-2,-44,8,-87,-82,-47,71,-14,16,-41,48,79,17,118,-83,-84,5,-62,-127,-20,28,-12,54,-95,115,-89,124,-18,-118,40,-125,-97,15,3,89,-21,-19,45,23,-58,39,-1,19,-18,127,-121,-46,2,-24,38,-64,-48,19,81,-16,80,-37,-128,123,-43,36,-73,-127,55,-62,121,14,93,42,56,-117,-43,24,-99,-79,-46,-34,-112,-99,38,11,-19,23,-70,-121,-128,-81,-110,-76,88,-53,-51,-128,51,52,54,-58,-80,-35,83,20,10,27,-109,112,119,38,-19,120,97,67,24,-65,51,84,37,-8,112,67,6,-127,-104,-50,118,58,-1,-97,-94,78,-103,10,30,-95,-94,-42,107,-67,-41,-39,63,-108,27,91,21,-23,-88,-118,-55,-1,-28,-9,16,-29,-37,-55,-80,78,-82,-112,62,48,46,-41,1,34,50,12,-53,46,123,1,37,71,108,3,41,-123,-94,-50,-16,8,-42,86,-39,51,-24,119,20,-55,22,115,-82,114,-86,-110,8,-15,-72,74,83,14,93,59,122,107,3,-17,93,41,51,-56,-125,-21,28,38,-59,69,71,-48,111,38,79,-29,-23,-17,0,-110,75,87,113,32,50,-113,4,-4,12,-20,-27,-61,-41,-117,-56,-99,-77,115,-87,-99,40,-95,-99,-31,26,-102,119,-53,2,4,29,-21,-86,94,112,-82,45,23,-65,-23,-85,-97,-17,100,75,-110,116,1,-109,29,-111,80,-90,74,93,3,95,-48,112,-106,-18,77,25,-29,-22,-117,72,94,9,113,95,-1,-104,-28,-124,12,97,66,-109,33,-94,91,-29,-88,-102,-76,77,21,-65,51,95,54,-16,78,-116,78,-79,-51,-107,-123,2,49,40,-124,-90,97,64,-3,-105,71,14,-114,112,3,124,-83,-105,94,-50,35,59,73,-63,120,-43,116,16,-91,-46,-117,-18,-108,-26,-84,84,75,123,-21,-97,-118,-119,34,72,-59,-108,-65,-104,21,70,-108,63,-35,-26,-63,-11,-55,53,-125,-81,-58,-115,-54,-16,59,7,-12,0,-67,126,81,-72,-118,-76,121,-13,5,27,80,-23,87,-125,-85,-14,-37,-6,-56,-79,-118,-19,-43,-45,72,71,-91,-49,31,-121,34,-90,89,-22,46,116,-62,-59,-4,49,12,23,-39,40,88,-54,12,120,34,26,42,-7,-18,-89,67,-37,123,61,74,-91,-36,-38,15,-104,113,46,0,54,28,100,-44,-75,25,-56,28,103,44,-92,34,-100,-113,28,-75,-16,-121,-7,38,58,-99,66,-20,-2,-122,-19,110,11,-58,45,-72,17,38,-45,6,41,64,-86,36,44,91,-45,17,-93,43,-73,-41,-70,52,121,-71,53,-90,14,115,110,29,36,-46,-75,92,97,102,-53,-88,-32,53,122,-39,20,55,-102,-101,117,82,-26,14,46,-120,-91,85,36,101,-108,-81,-26,-18,115,-50,-47,7,18,-125,-24,-46,33,-24,-108,-71,33,41,99,47,-66,-43,-25,117,10,53,-2,10,-14,126,-112,104,-74,-77,-57,24,-30,81,93,115,69,89,10,90,34,88,-116,-90,65,72,43,123,51,-85,55,8,-12,13,10,-90,-37,123,-4,109,40,105,112,99,64,-74,-83,104,44,-20,-16,54,25,-82,-54,64,-109,-37,-3,107,-17,124,14,60,-64,-47,-72,-84,40,-74,89,6,36,-98,-125,30,63,14,-70,109,-62,-38,112,127,-41,52,115,27,-56,-112,76,-107,-65,-118,26,-74,-53,-96,114,-120,78,24,77,48,60,29,49,-117,-15,-91,1,-26,58,-84,-9,-109,-115,-89,-21,82,104,36,116,-103,121,93,-50,-39,-103,37,52,-108,-28,49,-87,-115,-93,38,-37,-68,-28,14,-26,-41,19,107,-2,-107,-37,-49,11,17,-120,24,24,-110,-100,93,46,-84,-122,38,6,-53,-7,98,102,65,35,-8,-6,44,-99,86,-5,67,-4,-65,13,66,23,-111,24,19,7,9,-92,29,114,58,-43,-105,-61,-33,34,-57,-26,5,-11,77,48,0,-41,-49,22,-20,-44,-30,-99,10,45,47,-51,-29,20,-11,-61,104,99,-15,21,-67,44,-71,108,-83,-11,-104,57,39,-84,2,122,14,127,-110,5,-79,98,95,23,89,3,68,-87,94,-9,40,104,107,24,-97,26,-36,-111,-95,-100,31,-97,49,77,-69,112,-96,-111,-45,89,-9,127,114,85,-102,-5,16,-1,-53,31,-69,-53,113,-6,84,-6,-18,62,-44,-73,68,-15,-105,-36,127,12,-27,-28,-31,-42,51,-121,86,-19,-111,-86,-119,93,-74,67,32,51,73,35,-106,18,70,44,72,-82,50,-19,-45,98,-60,-84,-67,-84,-126,-5,38,-67,-2,-62,-54,-23,-110,113,-14,-89,52,28,-61,11,4,70,-100,-35,0,-46,-124,-11,49,118,39,-80,-70,-100,-120,-54,-69,102,59,39,16,-49,53,-50,-27,44,90,-115,69,-102,-113,65,20,-47,59,-115,127,-19,-54,-19,-27,-28,-94,39,65,-114,-115,75,-46,-85,75,-4,-67,127,27,-98,-42,1,-124,-43,22,-21,-27,-74,53,-45,-90,127,-83,-44,-86,-23,10,36,86,59,99,-126,108,-59,-99,-45,-16,91,-33,110,-120,106,-87,19,122,115,-86,85,67,-83,-4,-57,-111,4,-5,-58,-91,-2,95,11,-53,107,-68,-128,-68,-12,85,19,-36,-40,-56,10,-64,58,-12,-32,79,20,37,-65,-33,-9,88,123,114,94,31,67,-32,-2,86,-124,-116,-62,-100,41,-17,35,-81,67,-110,-85,83,45,-121,5,-120,-3,47,14,-65,-78,-114,-87,-9,-19,-21,-7,106,74,117,-40,78,-33,63,61,-70,26,56,-9,76,-121,14,-77,87,-125,69,-32,-101,50,30,104,-59,-117,43,80,-98,-11,-94,-23,-108,52,-38,97,24,-10,-41,125,-119,-19,-42,-56,25,65,7,-39,-102,-4,110,109,74,18,13,-126,96,95,-89,99,15,-3,106,6,72,35,82,-78,-15,73,116,61,-127,-83,54,98,-17,2,-7,88,-57,-37,-39,-102,-79,31,-6,111,-62,-24,103,69,74,113,-15,65,68,37,-65,123,94,117,-121,-32,-78,-5,120,59,104,60,68,5,-65,4,64,-85,-80,117,-101,61,46,-88,69,-123,-19,-57,-15,97,125,54,-23,84,-124,-27,114,-47,16,104,-100,44,-87,36,-27,81,-20,-73,-80,95,-64,-34,29,-77,66,-126,77,-120,105,-100,79,44,116,-18,-15,-27,-71,19,12,-80,-18,27,45,-92,116,-27,-14,14,-77,1,-40,-110,-26,-4,-120,-88,60,51,108,-101,-123,116,-83,111,1,-74,-69,87,11,124,2,93,-64,121,-45,62,-79,110,-37,-55,97,27,110,-79,-91,67,99,53,26,-74,43,98,9,-43,-103,80,-23,60,68,-36,-112,-64,-31,20,-52,-79,-7,-113,94,-30,-100,73,55,-111,-1,87,-29,-25,-94,42,-13,-63,-59,108,38,-16,-62,-85,-17,0,-90,47,116,-80,12,-11,-54,96,-12,-110,-6,-128,-64,-31,-109,103,58,-11,-118,-3,0,-102,64,39,-18,-67,93,95,102,-87,104,88,-62,-31,-36,-61,-105,-26,46,-53,117,93,-70,-54,-103,121,52,-24,82,-10,-124,-22,-122,29,84,-76,121,-64,-65,-6,80,52,-27,7,108,-118,64,-82,-44,73,81,-107,84,-88,-100,-59,-56,9,35,-39,-82,-68,26,65,-66,-73,-15,75,-31,-44,51,-65,-73,-62,100,51,78,-51,-112,-84,82,-19,93,-92,-69,53,-38,-66,127,5,-30,61,26,43,48,-63,24,31,-71,-67,-127,-60,-55,-26,38,-43,-63,-49,-37,-101,116,105,-109,10,3,-67,17,-42,-89,110,62,-103,-41,78,-47,-59,-47,-17,-51,10,-16,-31,68,-41,37,15,-123,94,101,77,116,-122,61,-96,-122,-8,-11,105,-74,109,-97,-111,114,44,105,45,42,-94,-99,-52,122,-113,87,-59,-109,85,-128,120,-49,21,-75,-89,-10,11,120,-51,-19,30,-79,-26,64,-32,-71,28,-11,-44,55,-28,109,59,-84,-22,-55,-113,-105,114,80,50,-26,77,54,36,42,-71,-64,-111,118,99,-121,-100,-128,56,-75,-10,-74,30,36,93,-122,16,-50,-105,85,19,-84,-99,-72,-20,96,-63,75,-53,59,-86,90,-23,-39,-73,96,-118,-127,-9,-106,42,-84,-122,108,-18,81,29,-58,46,94,12,-2,-94,-75,33,85,61,-100,122,2,101,106,45,-49,-43,-63,22,-128,94,5,-115,38,35,54,-8,15,35,87,-114,-76,110,37,-50,20,-114,84,115,-13,48,54,14,-58,-93,112,43,77,9,32,-99,-91,-55,34,-82,23,-40,17,62,66,84,82,-3,117,-100,33,32,19,-100,102,93,101,-33,-103,112,-38,114,38,-1,-89,-90,-86,-9,-101,-66,41,-71,-113,5,21,-40,50,89,-73,123,5,45,-75,68,58,-107,-67,3,-64,89,45,-117,51,16,-119,36,69,-78,-18,94,-18,61,22,-124,97,-55,-97,112,19,119,7,65,-109,23,-15,88,-47,-103,-84,-62,106,-5,-108,73,-109,34,-116,33,81,-41,-102,81,67,20,67,-46,-40,-9,10,-49,121,-57,61,-33,28,42,-36,-67,-113,-38,-94,-89,-67,-28,-17,52,-116,-96,-51,117,29,-84,-53,-38,-53,-44,54,-110,98,-76,117,18,83,10,-62,-36,102,104,80,124,34,15,108,47,91,-112,-10,-116,66,-68,-123,55,-67,87,51,74,-47,25,-122,-34,57,32,96,-96,-64,67,-41,31,-124,-87,-15,76,-125,1,-77,13,99,47,-44,74,97,67,-4,108,-9,-16,44,36,-53,3,-120,105,99,-55,-34,-30,118,8,106,40,-95,-122,-65,14,-23,86,-26,-64,114,89,-59,97,-10,71,10,-108,-60,61,-87,-19,-4,-28,-1,-32,35,-123,55,109,-47,-126,-1,-124,-36,120,3,-107,-17,121,-80,31,25,79,-32,127,-19,103,-4,118,21,-55,70,125,-95,-104,-78,-2,-24,90,-33,97,-79,-92,20,126,49,60,121,41,56,120,113,-102,74,1,-28,44,46,-19,-46,100,-127,77,-64,-8,-12,-13,11,-15,89,22,-95,86,36,-105,110,84,-83,37,-40,-56,-92,19,-82,-17,-25,83,33,4,-111,76,-85,-54,35,-107,-72,127,76,89,-103,-123,28,-96,-47,95,77,107,-35,-98,52,59,-76,75,87,-14,-56,-27,75,117,-34,67,91,-92,-95,-45,-116,-13,-81,5,-35,83,10,85,-112,-38,117,89,43,123,-73,-43,104,36,-106,-80,47,113,-82,51,36,93,33,-84,11,-53,-128,-84,82,-86,-118,0,-33,-6,44,-122,35,81,-71,-44,-73,-64,126,98,-20,-49,-126,-104,46,44,-63,-17,-62,-74,-61,-48,-28,67,-25,-99,92,66,73,-38,49,45,-69,92,-26,-91,80,105,-30,48,-76,85,108,-98,-56,-95,102,47,6,-70,-118,-31,60,-112,-62,89,115,-78,-85,4,36,-1,72,-17,-100,-56,-2,-104,24,-54,-56,-92,-106,-60,-115,-53,-106,49,85,33,-79,54,-77,44,-120,47,41,-60,44,-8,-28,5,90,114,42,74,106,-57,-81,79,83,-67,-97,-90,-120,-16,-57,-88,34,9,7,-107,-59,-92,40,71,-32,113,-85,89,33,89,-58,-78,-50,-22,58,96,66,-19,-125,-39,-42,90,25,70,-104,-31,-90,-21,98,118,-111,102,-35,44,-117,60,86,-62,-47,-4,14,-88,46,79,6,-81,-5,101,99,-12,96,43,-27,42,65,-3,-120,-93,112,32,-6,-111,89,105,122,-67,50,57,-54,-126,-46,35,48,-41,0,-98,71,-22,45,-125,7,81,-26,23,-60,118,25,101,-95,-128,117,22,-126,-29,74,86,-39,-53,65,-86,64,-62,-77,-8,90,-85,54,-28,-128,124,-1,-112,127,105,-124,-40,63,123,123,-77,13,-84,-5,53,-31,-46,-74,-36,27,-16,13,-124,-98,-24,-115,-83,48,101,92,13,-98,-5,-111,-10,-40,-51,-115,-81,-52,-82,24,102,97,98,109,107,-46,-1,109,50,-48,40,-23,71,34,-70,-13,-111,110,43,-41,-9,108,-1,37,45,-72,-28,-45,-50,9,121,-66,-4,-86,-10,18,16,64,-119,-36,33,-13,5,-125,93,-6,19,-61,126,95,48,-116,11,125,-62,-6,67,-1,111,-54,2,45,82,-103,-4,-66,19,20,18,15,48,94,-91,119,33,82,-15,116,-24,15,67,30,111,-106,90,13,80,-20,71,65,66,108,124,-94,-104,-124,120,-95,59,-80,16,83,-101,90,14,-96,25,-64,-38,98,-24,-17,-69,-89,108,-29,-30,-101,-11,99,13,-56,53,72,52,105,105,88,2,26,75,23,-13,3,122,-114,71,-70,-29,-9,-98,58,67,-122,87,126,7,-30,111,-61,69,7,11,-6,103,-6,-16,-32,56,23,94,-31,29,-63,-47,5,67,61,110,43,57,54,41,28,74,-65,97,-22,74,-115,-126,86,0,-50,-83,-93,-3,116,5,22,-29,21,-79,34,-54,68,77,-34,-76,84,-116,-102,-31,-13,-55,64,85,-42,44,43,-115,85,100,-104,-60,103,-54,-65,120,-69,44,59,-102,107,81,89,-79,-44,121,70,-24,-110,51,76,75,117,-7,110,61,-102,42,-28,-28,-67,-12,-19,102,-27,18,115,121,-46,68,-124,-81,-110,-33,108,56,-83,30,-97,4,-79,-17,88,114,-86,105,17,-9,0,61,101,11,7,14,-100,58,-38,-42,27,121,119,-48,56,62,94,39,-20,-49,7,26,108,-99,-44,120,-2,87,-117,-78,-56,64,76,-83,26,-105,21,-3,81,8,-74,-100,67,50,9,58,-14,-118,-96,-13,27,65,-122,-73,-83,102,-40,-60,-120,-13,16,51,-51,112,-81,-15,-7,127,100,-116,-20,83,-72,59,-39,121,-43,114,55,97,-9,-53,107,56,45,49,106,-102,-126,-54,-44,59,18,-64,-75,101,62,-123,-110,-70,-17,24,57,-44,-122,104,-119,43,-40,18,-113,-107,25,122,-90,-19,123,74,-86,-35,107,102,-51,-22,56,-14,109,-100,-124,1,-85,35,-16,-124,-21,-65,1,30,-75,55,67,-121,-78,109,-102,82,-94,-23,-60,46,-104,0,-96,6,39,12,101,62,-39,37,-84,-92,3,48,68,34,-47,26,-67,60,-2,25,118,-110,77,91,46,2,43,103,-85,-107,-23,83,-23,-71,-110,-7,42,43,-82,16,57,-55,-102,-52,-32,32,-111,-70,75,116,116,-11,-44,-75,1,-14,-123,-128,-85,31,71,33,78,-72,-102,70,48,-72,-15,60,56,38,79,93,-83,114,75,-6,120,-78,25,-127,82,112,-37,-90,-92,-121,-112,-35,119,8,-32,-35,77,58,-9,109,-107,69,-21,11,-42,-128,-70,48,-23,-30,-78,-81,-123,30,-40,-8,-127,106,9,64,-78,-51,122,95,81,-109,-15,-43,118,27,-92,88,-109,37,-106,52,-62,-8,119,-45,73,65,127,-96,53,-115,-125,46,89,47,115,8,70,71,-40,-107,15,24,-119,-64,41,115,54,-11,-108,-103,-20,6,104,-67,-8,95,90,102,19,15,-22,73,13,-7,113,55,-53,-123,51,-110,40,37,-103,-83,-61,34,114,59,-25,-113,87,-103,-26,-10,88,-121,-65,-79,92,-63,123,-62,59,31,-87,-11,31,113,14,88,23,25,35,-49,-21,-83,-59,53,109,-72,-22,-64,89,59,-104,-42,24,52,-60,62,91,3,7,-21,61,15,-117,-109,65,-1,-39,25,-34,-37,26,-2,62,-51,61,24,50,-15,-32,-48,-55,25,36,24,6,99,94,-25,86,-84,-30,-95,-102,-94,-53,29,-81,65,69,-85,65,117,-7,0,-23,-66,-75,127,62,-108,10,-5,-4,66,29,-59,41,-82,-55,58,65,9,-128,55,-67,-58,-28,123,-121,99,-70,-99,11,-6,122,-108,119,-18,1,78,61,103,121,-104,117,-68,-22,-108,64,31,-68,-68,52,-96,41,58,-54,11,-26,118,75,14,-54,21,-119,60,-66,-19,-64,11,-5,76,-9,-97,81,-126,72,62,-115,64,23,117,65,73,-121,-87,-40,-48,-82,90,73,-91,42,57,-53,54,6,-11,102,-104,0,-117,70,52,103,-56,104,-1,-103,-12,32,59,123,12,-75,-104,16,-123,31,-35,55,20,-116,-109,-50,-44,-63,24,35,76,-116,-29,-32,16,-43,-68,-56,-115,32,109,-9,-34,126,-39,-74,74,-46,-19,-105,-82,-115,32,17,94,105,-103,-50,68,-121,-29,-7,53,74,77,-123,98,-68,37,62,-8,-21,-23,-99,4,-80,-103,-58,45,-2,-95,58,5,35,19,-37,-65,108,-14,-90,35,-53,-123,28,-5,39,-21,-38,17,70,-53,30,94,62,24,-74,34,14,101,46,20,-61,94,-121,125,-122,88,-127,36,-97,-98,110,80,80,14,72,10,8,95,4,50,113,27,-124,54,-117,-48,122,-39,52,8,94,61,40,-69,21,-34,7,-56,-90,-123,24,23,57,89,-87,-97,-80,-16,63,-50,76,-118,-25,-17,90,24,-4,-112,32,-94,58,-32,-12,11,28,48,-38,118,-69,107,92,61,-104,116,-62,-112,55,-110,0,127,-46,-54,-57,17,116,54,-36,-90,114,-39,-32,53,33,-69,37,72,-70,121,60,-84,22,-95,-74,-105,-7,-67,-41,-49,55,98,-57,60,-51,-107,31,48,48,-72,-38,-35,-5,29,65,-102,78,79,-8,71,-113,122,90,76,-55,-31,77,102,-66,107,-128,112,101,122,-62,-83,111,126,101,-75,-55,-118,68,52,-128,115,76,63,32,-6,90,6,100,-109,-59,98,19,109,-1,114,84,-58,-52,79,95,121,114,-77,-52,56,-114,-13,67,91,-51,50,-94,-115,113,-58,-33,56,55,-92,-120,80,-85,-125,126,-114,44,-126,22,-29,113,-82,-92,91,63,-39,-34,-90,-21,43,-3,113,-5,-81,-91,69,120,-59,-126,127,66,43,113,-111,47,-99,-46,-73,55,-13,-7,73,110,37,-76,68,13,105,94,-36,108,10,-127,-76,10,126,100,21,-117,-80,21,-95,94,-79,77,-72,-63,98,24,93,-124,7,25,-15,84,-62,-99,28,-82,-99,113,-65,13,62,-51,-117,37,115,-125,-40,-96,85,70,31,-27,26,2,57,-15,43,-112,-36,-72,-5,106,44,126,-97,111,-31,-66,-89,76,-114,51,-111,120,69,56,-106,-70,1,105,-54,-56,-8,-123,-92,-71,40,-20,-52,-93,-102,76,-104,48,77,76,-30,53,-113,40,-16,88,44,34,-107,53,18,95,-21,123,-115,-28,53,21,47,76,82,-58,-114,22,-104,-97,-90,73,109,7,-108,-96,-30,89,-84,-46,-47,-62,110,-128,25,-54,-75,55,-62,121,42,69,-62,54,25,7,-75,122,87,-68,88,-83,-95,38,-100,-103,-96,-57,74,109,-34,72,51,86,89,66,120,85,18,-84,95,101,-86,-32,15,48,-104,62,-99,115,43,-14,76,76,-92,-5,27,-8,41,-114,-74,50,-77,-67,-97,-109,16,106,-36,-52,85,16,50,-68,-27,-22,-99,-112,122,63,-15,64,23,23,121,54,-31,64,126,76,16,-57,18,-75,97,-23,-94,-94,72,-53,-40,30,-55,-63,87,-13,116,9,-64,-72,11,-90,-45,11,59,44,110,28,-105,-80,62,-27,20,46,-7,45,57,5,35,126,29,77,-91,-65,-60,10,-56,-115,-42,-17,115,-67,34,56,12,39,-119,-66,-20,22,-39,-102,54,108,1,-75,107,14,-104,-87,-127,-17,-88,33,103,-71,-85,23,-76,-95,-94,107,-102,92,-96,121,61,-98,78,-28,-33,33,75,32,-10,-14,-125,-96,-72,-4,10,7,-65,-52,-27,-71,92,100,61,45,87,9,-43,-52,110,-70,19,-110,45,-66,-74,-126,91,-27,106,58,-110,114,-86,-77,-52,-63,-50,67,-65,-54,33,37,116,64,49,76,-7,-115,22,-105,-124,50,19,81,-126,86,124,-5,-37,-48,19,-65,32,-21,80,-124,-93,-23,-25,16,24,97,65,29,51,56,-79,80,-117,-50,14,-23,-77,87,96,125,-52,49,2,13,55,61,107,93,-106,-116,102,-11,-37,-23,-119,-43,53,-39,-86,0,-96,19,13,15,15,112,24,76,-73,79,-76,-127,99,90,-18,63,119,3,-29,38,111,34,-66,111,-34,31,-29,-95,24,-70,5,-15,65,86,-43,16,76,-127,-120,21,6,-29,97,53,-31,-57,-39,-117,83,-48,-99,38,126,56,-78,-18,67,43,72,100,-96,-37,109,89,-92,94,-88,121,36,112,-33,-42,-69,-99,112,116,-80,-42,49,5,20,124,26,-32,26,-118,-28,65,22,13,-105,-98,81,124,40,52,-76,-104,97,82,59,96,-99,-27,-46,-74,-125,64,-36,-31,114,-28,-83,-61,81,-81,8,-49,42,36,48,-81,12,68,-80,83,38,-46,-115,93,-86,-56,62,-52,-36,-88,7,-85,-80,5,38,-106,-8,-94,-125,-81,123,21,122,-112,45,116,-37,81,48,-122,93,32,-120,48,-28,-85,-99,50,-47,-67,-109,78,-14,-79,10,-98,56,41,-22,-20,10,74,94,-30,-120,110,50,74,86,91,51,-86,43,-44,11,-11,65,127,-97,-24,-31,119,-16,-73,-66,87,-95,109,-64,98,-127,45,-30,24,-11,61,54,76,109,24,126,45,-1,-24,64,-28,28,-113,114,-32,-103,-125,122,95,102,-33,-7,-25,-28,-101,-7,63,109,111,-9,-45,73,-111,-41,-48,-70,-40,-113,28,-32,-41,-95,76,33,-112,-53,-106,75,117,71,-94,81,19,19,53,96,-9,125,-82,40,6,85,65,36,68,-91,59,9,65,91,-67,-34,121,65,125,-25,-38,-107,-106,-122,-83,20,109,45,122,-103,-31,-42,84,-42,23,-57,-69,49,27,41,-116,78,3,-65,-28,59,-52,-101,-29,-91,-29,37,86,113,119,-51,-104,-19,-84,42,-113,90,125,-32,65,37,-21,119,11,126,-13,-37,-49,59,-80,60,-114,90,7,-117,-22,-84,-50,4,69,58,-93,106,110,-77,-46,125,93,78,-124,-20,73,-42,75,-60,-52,-59,80,-5,-105,6,-14,-58,-72,-59,34,59,-96,-46,-102,76,-8,105,-49,-79,-47,-81,-94,93,77,-100,-119,-115,-115,-102,-68,69,107,-126,-86,-103,83,91,-26,-42,-84,73,-54,5,-104,-85,-61,-28,100,22,-71,-126,97,-43,-128,38,41,88,112,94,39,-84,-55,-119,-115,36,60,107,1,87,-45,-114,-80,-9,88,-105,-91,-67,90,-111,95,-96,-113,-103,-70,-24,91,-113,-122,-70,-83,-92,121,-20,117,37,-10,-105,126,82,89,81,-2,-118,-21,36,-9,-85,-103,124,65,-6,-45,118,-33,-5,122,-113,124,87,-30,58,-47,-43,-10,54,-116,88,44,-17,29,94,-59,-106,41,54,101,-86,98,-116,-12,106,-12,95,-29,13,-103,72,-73,55,6,122,124,-106,79,54,17,-93,7,-101,-72,69,-102,-43,71,31,-44,92,28,37,-104,127,-7,54,-50,-74,-35,-125,-16,-119,-17,28,-44,122,117,63,92,-23,14,82,-28,122,-90,-38,26,88,22,-74,127,115,-128,111,61,-41,-9,-104,31,112,29,37,53,-3,52,58,-27,66,-73,-76,27,78,-33,92,-125,39,95,110,-96,-61,-16,-125,80,-107,44,101,63,114,-101,47,-47,124,-31,21,-99,-57,46,24,-24,18,-104,121,68,-113,-76,37,-71,102,59,-10,-124,112,121,123,91,78,-14,-17,32,-82,2,49,102,-47,-30,-83,-19,-3,-50,67,-42,41,-21,-92,-72,117,-74,-111,97,26,18,-26,-78,104,67,41,48,122,-19,108,105,64,-45,-111,-45,43,-66,-80,115,84,-36,81,-31,59,28,60,-10,125,30,72,-64,105,45,52,-74,11,-16,38,-118,-3,98,-46,-77,40,-69,70,-114,-77,60,-70,123,83,-80,-102,42,100,81,109,-77,115,-127,7,-87,-22,8,-48,57,-72,-41,-41,-9,3,80,-54,-30,103,-16,-54,118,105,-87,-37,22,71,-33,-48,121,62,116,-90,66,-38,22,-105,19,-21,83,-41,112,-39,-81,-28,-109,31,-95,-125,-1,54,72,-84,-108,112,-114,89,120,-73,20,110,-55,-126,-58,-93,68,-105,65,-107,122,8,121,-103,-97,61,97,-74,99,-65,46,1,7,57,-122,69,100,-112,-94,94,116,23,106,85,-105,79,-128,-108,39,-111,-87,83,-66,112,24,-102,-7,-72,-97,-78,-8,99,-114,-113,79,115,89,-51,-88,83,28,-90,56,113,57,-102,40,-104,89,-76,-8,38,-67,-5,-9,-18,-121,38,27,-25,-29,-110,3,-10,16,123,-40,-93,116,-36,-20,-73,-18,-111,87,-123,113,120,-121,-97,69,-47,105,-68,-111,-97,-53,-94,-81,114,77,92,46,-37,-80,-18,108,-9,-69,-25,27,-46,-101,-86,53,54,-109,-44,-11,85,-61,-87,-17,34,-25,79,101,-46,-22,-30,99,85,-65,-30,12,117,-80,-23,54,-16,106,-89,-29,-120,64,1,-111,-94,-75,82,68,-3,120,11,-52,-103,87,22,-17,-46,-117,-63,112,12,-123,-52,71,-121,-122,-55,-125,101,-41,105,52,-53,-9,60,56,-3,-1,85,-112,15,127,70,4,-7,48,-72,34,-29,11,-103,114,-46,56,-109,17,-32,9,89,114,-1,92,86,-55,11,-87,-80,53,-18,-4,42,-90,86,15,-50,49,120,-46,22,67,57,-59,90,-97,110,96,119,43,100,-90,-54,-89,81,21,-80,-14,64,-47,126,-17,92,-37,51,40,121,-34,110,-99,-54,36,-73,85,-43,52,-30,-9,121,-18,-51,102,91,-116,-71,95,86,-55,95,-35,74,118,101,87,-114,20,-48,117,-60,-76,55,49,-108,74,-22,-43,20,41,79,-96,114,-12,-68,-44,43,126,-28,19,83,111,-128,102,-19,-110,56,71,-77,89,17,-16,-26,32,-27,-127,-14,-37,62,-34,-107,126,110,104,74,6,85,79,8,-74,107,30,126,-52,80,-11,29,108,65,-128,29,109,-2,123,59,28,-107,110,62,110,-123,-68,71,-39,-20,-57,-108,38,-36,126,-12,100,112,-103,-32,55,98,-5,-82,89,-41,88,36,-92,99,-56,118,97,12,113,-16,88,71,76,-96,-77,117,-5,60,-84,23,45,-41,31,46,33,0,-3,69,38,4,-119,-20,-115,96,-50,28,-9,-38,85,-113,-106,36,3,-96,-80,-23,7,-19,101,-111,92,-107,-9,116,53,-120,5,-3,-13,-87,1,-115,-35,-125,-89,-23,19,53,69,117,-67,-107,-33,-122,-32,-10,-69,-122,75,-116,-69,-35,43,-74,-107,109,18,107,-85,-48,52,-38,83,50,115,-101,-39,5,62,-7,-46,99,97,44,31,78,27,105,-117,-72,-94,-69,108,-86,-59,-30,49,-48,-22,-124,-2,-114,-19,-126,-29,-122,-21,67,15,60,-111,-55,35,-22,81,37,32,-75,0,56,-18,47,108,41,0,-120,122,-4,95,51,-68,-20,78,125,77,119,-9,-115,109,59,79,-128,-124,-114,9,7,91,-8,-80,11,-112,29,-32,-56,11,-50,-82,29,74,-19,-55,-6,12,-115,-6,18,15,-123,72,-15,-62,12,1,43,82,-30,-17,2,26,-30,-85,58,63,-56,-117,-100,52,-90,7,-69,-26,121,-92,111,5,-61,96,-90,63,-18,-11,60,-52,-81,99,125,25,67,-71,82,110,97,51,122,39,33,28,93,-116,123,-107,48,-64,-9,92,-31,-62,-68,-102,-103,-107,48,-100,-2,83,127,-82,41,-105,-7,-120,113,10,58,23,-122,84,-18,-37,20,-82,11,42,46,-95,16,-105,-58,-78,62,-82,-57,39,-18,106,0,52,-51,-59,36,76,98,124,-108,-67,-40,73,-3,19,45,-45,121,20,76,0,-21,-57,46,90,-18,79,66,-42,-56,-47,-39,-120,90,79,103,-104,34,-30,-67,120,94,35,59,25,-41,-128,125,88,88,68,-48,-25,-47,-10,-12,125,92,20,-99,55,66,118,-42,114,46,67,-9,43,37,119,-84,-8,79,-21,123,82,48,76,-63,-17,-23,27,-108,53,97,95,-109,41,68,-50,-32,-20,-119,-71,80,-57,-9,-16,-4,-36,17,66,19,82,-113,-76,39,23,-128,47,9,-87,30,-35,-48,100,96,15,-4,-58,-86,-10,-1,83,-52,17,-102,-88,37,-13,-2,-92,-23,-52,-89,-112,-33,-47,60,28,122,-101,-99,-67,92,-88,77,118,101,-96,-123,-108,-108,-43,102,45,44,-48,84,110,-25,-74,86,50,-7,-109,-9,-92,59,-67,79,29,23,53,-57,73,-89,9,1,81,65,17,31,-107,8,92,126,53,-119,52,98,60,-126,-82,15,79,-15,110,111,-82,22,88,-110,-113,-49,-124,-127,88,-51,-48,-87,-55,-17,62,45,64,41,-111,-95,-46,-122,-91,116,-125,-55,103,75,-29,95,-56,29,-115,-36,-41,-56,88,-100,-81,-33,-81,29,-11,-90,-17,77,-10,-127,-121,-6,30,-4,-24,30,-124,109,112,67,25,-57,4,34,79,126,126,-109,-47,-101,-38,-9,117,-76,37,-43,-120,-86,54,85,-70,56,39,-15,-40,-80,26,3,-64,-45,-35,-69,-120,70,-97,24,-29,-53,69,19,-113,-112,-53,-78,-106,-74,94,-61,78,-57,-58,97,46,58,62,-21,-121,-97,-38,-16,35,35,-120,-127,125,2,-30,54,-44,-17,9,30,-20,30,-53,117,52,29,-92,95,16,60,102,-29,54,-66,-110,122,10,-113,-78,68,-120,-71,-96,111,-37,9,39,-11,111,-52,-25,107,-77,-9,28,81,0,-55,-98,43,-97,-37,69,-123,-4,23,102,-98,106,-11,98,-42,5,115,-84,-121,-86,-78,11,-69,34,-115,3,-94,-104,-9,-38,51,-113,29,83,-39,86,54,-27,-116,-108,61,27,10,-44,65,-86,-91,34,-40,38,99,-14,101,-82,126,-56,-8,-102,37,-52,102,-36,126,74,95,-83,113,-37,-66,-55,-20,-98,-115,96,-49,-44,-123,-1,20,75,-2,-90,10,-61,107,94,87,-63,74,0,-55,2,41,-103,-123,-85,-13,-39,-107,36,-47,-21,6,-70,98,-119,78,52,26,-40,8,72,117,-78,115,76,-57,43,-60,-25,-87,36,83,54,127,127,-78,19,98,-30,125,86,121,124,62,-32,-96,-110,20,97,-126,-104,13,6,-122,-105,36,55,105,-121,-48,-83,0,-113,18,-114,-39,9,20,-20,-23,-115,-49,83,-107,121,70,-30,86,31,-48,-23,125,-67,-114,48,-86,21,-90,83,-79,64,-107,-60,-91,54,69,-73,-77,88,99,-10,15,-29,57,-128,-47,-96,101,-50,112,120,-85,-16,-78,27,7,116,-128,18,-11,49,-19,41,-33,15,-35,-67,84,-15,-57,36,-73,41,15,77,9,83,39,-54,27,-82,33,115,4,-60,101,46,-117,-56,-18,74,100,126,-27,-48,-25,10,-51,126,-41,-81,-95,-60,9,85,99,-6,80,-16,27,77,108,44,46,114,-26,20,-69,92,15,98,107,-114,-59,-87,28,-61,-121,84,125,-44,-125,-13,116,-55,-120,94,-84,-75,-86,34,1,-25,121,-80,26,-97,43,-12,31,75,-58,84,2,12,-109,-61,-68,-21,110,92,-27,-117,13,36,21,-3,107,-125,80,45,87,-108,22,41,-61,75,-115,-29,29,33,-111,-22,-4,-94,8,97,24,-124,25,25,-52,-7,-74,108,-36,-114,12,-32,3,84,75,-60,34,-88,-10,84,96,12,17,-119,114,-41,41,-3,-48,-16,1,-14,21,-115,-11,96,-25,-36,10,-14,-71,-3,-83,85,6,-91,-18,81,-108,36,-33,-59,70,-80,-81,11,-31,19,74,107,-22,91,8,29,57,-95,-80,-40,61,-82,-110,122,97,-114,-102,123,-77,83,122,-24,46,-121,-28,18,111,-47,-35,-120,-102,114,-93,115,22,-82,113,-78,77,76,-66,117,65,28,86,27,82,79,-128,-88,119,63,-31,87,11,124,-10,-99,-71,94,-89,76,-82,-124,101,58,-53,-74,9,-114,-50,31,-3,-51,-119,57,-29,-75,92,113,-47,40,-103,-81,-43,-12,-100,-102,4,-36,12,-26,-70,-118,27,-88,50,28,-73,-113,-94,-1,122,4,-57,-126,124,100,70,62,-87,7,-91,100,-91,-102,-56,34,102,118,44,-47,-90,24,-32,-99,30,-98,36,-124,113,11,-126,-15,-84,72,117,-46,3,-18,97,-38,-73,24,-47,109,-4,-50,-86,88,-112,-97,-65,112,-73,72,-37,20,-125,-29,-43,51,-2,-16,94,119,58,-101,-48,-116,121,94,103,64,52,48,51,-113,-70,106,41,-44,82,111,-106,71,-62,-105,-66,-78,78,71,115,-123,-50,4,33,22,88,-40,-111,-82,-46,-34,-67,120,-58,-28,-18,-126,-52,-31,-109,84,11,-94,10,94,-15,-89,-106,-62,125,-6,98,-39,62,-11,-34,12,12,-18,-50,-60,-78,43,104,36,50,-62,-58,-14,-36,-104,-88,21,78,-18,43,-124,-118,-68,-35,52,-62,102,18,25,87,-106,-78,74,29,127,98,-99,-2,-86,37,6,80,-31,86,77,112,-51,121,70,-126,7,35,-85,3,-24,-78,-109,114,-25,-58,-127,120,-78,26,8,-100,-116,10,-23,-20,14,-18,42,120,-75,79,60,44,-58,102,-104,69,25,119,28,103,-70,22,25,26,124,3,-11,-15,10,87,120,-23,-68,-44,7,93,9,-8,125,-15,-79,-70,108,15,-66,-90,-82,-5,-14,115,-122,-75,74,127,-100,108,4,58,66,-106,-117,1,6,11,-69,-96,55,-65,-8,102,-72,-41,75,76,-2,16,-10,78,-42,59,-72,-1,-31,-100,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/ref_functions.h",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef _REF_FUNCTIONS_H_\n#define _REF_FUNCTIONS_H_\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n//#include \"arm_nnsupportfunctions.h\"\n#include \"fully_connected_testing_weights.h\"\n\n#ifdef __cplusplus\nextern    \"C\"\n{\n#endif\n\n/*\n *\n * Convolution reference implemenation\n *\n */\n\n    void      arm_convolve_HWC_q7_ref(const q7_t * Im_in,   // input image\n                                      const uint16_t dim_im_in, // input image dimention\n                                      const uint16_t ch_im_in,  // number of input image channels\n                                      const q7_t * wt,  // kernel weights \n                                      const uint16_t ch_im_out, // number of filters, i.e., output image channels\n                                      const uint16_t dim_kernel,    // filter kernel size\n                                      const uint16_t padding,   // padding sizes\n                                      const uint16_t stride,    // stride\n                                      const q7_t * bias,    // bias\n                                      const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out,   // output image\n                                      const uint16_t dim_im_out,    // output image dimension\n                                      q15_t * bufferA,  //buffer space for input\n                                      q7_t * bufferB    //buffer space for output\n        );\n\n    void      arm_convolve_HWC_q7_ref_nonsquare(const q7_t * Im_in, // input image\n                                                const uint16_t dim_im_in_x, // input image dimention x\n                                                const uint16_t dim_im_in_y, // input image dimention y\n                                                const uint16_t ch_im_in,    // number of input image channels\n                                                const q7_t * wt,    // kernel weights \n                                                const uint16_t ch_im_out,   // number of filters, i.e., output image channels\n                                                const uint16_t dim_kernel_x,    // filter kernel size x\n                                                const uint16_t dim_kernel_y,    // filter kernel size y\n                                                const uint16_t padding_x,   // padding sizes x\n                                                const uint16_t padding_y,   // padding sizes y\n                                                const uint16_t stride_x,    // stride x\n                                                const uint16_t stride_y,    // stride y\n                                                const q7_t * bias,  // bias\n                                                const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out, // output image\n                                                const uint16_t dim_im_out_x,    // output image dimension x\n                                                const uint16_t dim_im_out_y,    // output image dimension y\n                                                q15_t * bufferA,    //buffer space for input\n                                                q7_t * bufferB  //buffer space for output\n        );\n\n    void      arm_convolve_HWC_q15_ref(const q15_t * Im_in, // input image\n                                       const uint16_t dim_im_in,    // input image dimention\n                                       const uint16_t ch_im_in, // number of input image channels\n                                       const q15_t * wt,    // kernel weights \n                                       const uint16_t ch_im_out,    // number of filters, i.e., output image channels\n                                       const uint16_t dim_kernel,   // filter kernel size\n                                       const uint16_t padding,  // padding sizes\n                                       const uint16_t stride,   // stride\n                                       const q15_t * bias,  // bias\n                                       const uint16_t bias_shift, const uint16_t out_shift, q15_t * Im_out, // output image\n                                       const uint16_t dim_im_out,   // output image dimension\n                                       q15_t * bufferA, //buffer space for input\n                                       q7_t * bufferB   //buffer space for output\n        );\n    void      arm_convolve_HWC_q15_nonsquare_ref(const q15_t * Im_in,\n                                                      const uint16_t dim_im_in_x,\n                                                      const uint16_t dim_im_in_y,\n                                                      const uint16_t ch_im_in,\n                                                      const q15_t * wt,\n                                                      const uint16_t ch_im_out,\n                                                      const uint16_t dim_kernel_x,\n                                                      const uint16_t dim_kernel_y,\n                                                      const uint16_t padding_x,\n                                                      const uint16_t padding_y,\n                                                      const uint16_t stride_x,\n                                                      const uint16_t stride_y,\n                                                      const q15_t * bias,\n                                                      const uint16_t bias_shift,\n                                                      const uint16_t out_shift,\n                                                      q15_t * Im_out,\n                                                      const uint16_t dim_im_out_x,\n                                                      const uint16_t dim_im_out_y, \n                                                      q15_t * bufferA, \n                                                      q7_t * bufferB);\n\t\t\t\t\t\t\t\t\t\t\t\t\t  \n    void      arm_depthwise_separable_conv_HWC_q7_ref(const q7_t * Im_in,   // input image\n                                                      const uint16_t dim_im_in, // input image dimention\n                                                      const uint16_t ch_im_in,  // number of input image channels\n                                                      const q7_t * wt,  // kernel weights \n                                                      const uint16_t ch_im_out, // number of filters, i.e., output image channels\n                                                      const uint16_t dim_kernel,    // filter kernel size\n                                                      const uint16_t padding,   // padding sizes\n                                                      const uint16_t stride,    // stride\n                                                      const q7_t * bias,    // bias\n                                                      const uint16_t bias_shift,    // amount of left-shift for bias\n                                                      const uint16_t out_shift, // amount of right-shift for output\n                                                      q7_t * Im_out,    // output image\n                                                      const uint16_t dim_im_out,    // output image dimension\n                                                      q15_t * bufferA,  //buffer space for input\n                                                      q7_t * bufferB    //buffer space for output\n        );\n    void      arm_depthwise_separable_conv_HWC_q7_ref_nonsquare(const q7_t * Im_in, // input image\n                                                                const uint16_t dim_im_in_x, // input image dimention x\n                                                                const uint16_t dim_im_in_y, // input image dimention y\n                                                                const uint16_t ch_im_in,    // number of input image channels\n                                                                const q7_t * wt,    // kernel weights \n                                                                const uint16_t ch_im_out,   // number of filters, i.e., output image channels\n                                                                const uint16_t dim_kernel_x,    // filter kernel size x\n                                                                const uint16_t dim_kernel_y,    // filter kernel size y\n                                                                const uint16_t padding_x,   // padding sizes x\n                                                                const uint16_t padding_y,   // padding sizes y\n                                                                const uint16_t stride_x,    // stride x\n                                                                const uint16_t stride_y,    // stride y\n                                                                const q7_t * bias,  // bias\n                                                                const uint16_t bias_shift,  // amount of left-shift for bias\n                                                                const uint16_t out_shift,   // amount of right-shift for output\n                                                                q7_t * Im_out,  // output image\n                                                                const uint16_t dim_im_out_x,    // output image dimension x\n                                                                const uint16_t dim_im_out_y,    // output image dimension y\n                                                                q15_t * bufferA,    //buffer space for input\n                                                                q7_t * bufferB  //buffer space for output\n        );\n\n/*\n *\n * Fully-connected reference implemenation\n *\n */\n\n    void      arm_fully_connected_q7_ref(const q7_t * pV,   // pointer to vector\n                                         const q7_t * pM,   // pointer to matrix\n                                         const uint16_t dim_vec,    // length of the vector\n                                         const uint16_t num_of_rows,    // numCol of A\n                                         const uint16_t bias_shift, // amount of left-shift for bias\n                                         const uint16_t out_shift,  // amount of right-shift for output\n                                         const q7_t * bias, q7_t * pOut,    // output operand\n                                         q15_t * vec_buffer);\n\n    void      arm_fully_connected_q15_ref(const q15_t * pV, // pointer to vector\n                                          const q15_t * pM, // pointer to matrix\n                                          const uint16_t dim_vec,   // length of the vector\n                                          const uint16_t num_of_rows,   // numCol of A\n                                          const uint16_t bias_shift,    // amount of left-shift for bias\n                                          const uint16_t out_shift, // amount of right-shift for output\n                                          const q15_t * bias, q15_t * pOut, // output operand\n                                          q15_t * vec_buffer);\n\n    void      arm_fully_connected_mat_q7_vec_q15_ref(const q15_t * pV,  // pointer to vector\n                                                     const q7_t * pM,   // pointer to matrix\n                                                     const uint16_t dim_vec,    // length of the vector\n                                                     const uint16_t num_of_rows,    // numCol of A\n                                                     const uint16_t bias_shift, // amount of left-shift for bias\n                                                     const uint16_t out_shift,  // amount of right-shift for output\n                                                     const q7_t * bias, q15_t * pOut,   // output operand\n                                                     q15_t * vec_buffer);\n\n    void      arm_fully_connected_q7_opt_ref(const q7_t * pV,   // pointer to vector\n                                             const q7_t * pM,   // pointer to matrix\n                                             const uint16_t dim_vec,    // length of the vector\n                                             const uint16_t num_of_rows,    // numCol of A\n                                             const uint16_t bias_shift, // amount of left-shift for bias\n                                             const uint16_t out_shift,  // amount of right-shift for output\n                                             const q7_t * bias, q7_t * pOut,    // output operand\n                                             q15_t * vec_buffer);\n\n    void      arm_fully_connected_q15_opt_ref(const q15_t * pV, // pointer to vector\n                                              const q15_t * pM, // pointer to matrix\n                                              const uint16_t dim_vec,   // length of the vector\n                                              const uint16_t num_of_rows,   // numCol of A\n                                              const uint16_t bias_shift,    // amount of left-shift for bias\n                                              const uint16_t out_shift, // amount of right-shift for output\n                                              const q15_t * bias, q15_t * pOut, // output operand\n                                              q15_t * vec_buffer);\n\n    void      arm_fully_connected_mat_q7_vec_q15_opt_ref(const q15_t * pV,  // pointer to vector\n                                                         const q7_t * pM,   // pointer to matrix\n                                                         const uint16_t dim_vec,    // length of the vector\n                                                         const uint16_t num_of_rows,    // numCol of A\n                                                         const uint16_t bias_shift, // amount of left-shift for bias\n                                                         const uint16_t out_shift,  // amount of right-shift for output\n                                                         const q7_t * bias, q15_t * pOut,   // output operand\n                                                         q15_t * vec_buffer);\n\n/*\n *\n * Pooling reference implemenation\n *\n */\n\n    void      arm_avepool_q7_HWC_ref(const q7_t * Im_in,    // input image\n                                     const uint16_t dim_im_in,  // input image dimension\n                                     const uint16_t ch_im_in,   // number of input image channels\n                                     const uint16_t dim_kernel, // window kernel size\n                                     const uint16_t padding,    // padding sizes\n                                     const uint16_t stride, // stride\n                                     const uint16_t dim_im_out, // output image dimension\n                                     q7_t * bufferA,    // a buffer for local storage\n                                     q7_t * Im_out);\n\n    void      arm_maxpool_q7_HWC_ref(const q7_t * Im_in,    // input image\n                                     const uint16_t dim_im_in,  // input image dimension\n                                     const uint16_t ch_im_in,   // number of input image channels\n                                     const uint16_t dim_kernel, // window kernel size\n                                     const uint16_t padding,    // padding sizes\n                                     const uint16_t stride, // stride\n                                     const uint16_t dim_im_out, // output image dimension\n                                     q7_t * bufferA,    // a buffer for local storage\n                                     q7_t * Im_out);\n\n/*\n *\n * Other reference implemenation\n *\n */\n\n    void      arm_relu_q7_ref(q7_t * data, uint16_t size);\n\n    void      arm_relu_q15_ref(q15_t * data, uint16_t size);\n\n    void      arm_nn_mult_q7_ref(q7_t * pSrcA, q7_t * pSrcB, q7_t * pDst, const uint16_t out_shift, uint32_t blockSize);\n\n    void      arm_nn_mult_q15_ref(q15_t * pSrcA, q15_t * pSrcB, q15_t * pDst, const uint16_t out_shift, uint32_t blockSize);\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.cpp",
    "content": "/* ----------------------------------------------------------------------\n* Copyright (C) 2010-2018 Arm Limited. All rights reserved.\n*\n*\n* Project:       CMSIS NN Library\n* Title:         arm_nnexamples_nn_test.cpp\n*\n* Description:   Example code for NN kernel testing.\n*\n* Target Processor: Cortex-M cores\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions\n* are met:\n*   - Redistributions of source code must retain the above copyright\n*     notice, this list of conditions and the following disclaimer.\n*   - Redistributions in binary form must reproduce the above copyright\n*     notice, this list of conditions and the following disclaimer in\n*     the documentation and/or other materials provided with the\n*     distribution.\n*   - Neither the name of ARM LIMITED nor the names of its contributors\n*     may be used to endorse or promote products derived from this\n*     software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n* \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n* -------------------------------------------------------------------- */\n\n#include \"arm_nnexamples_nn_test.h\"\n\n//#define TEST_SIGMOID\n//#define TEST_TANH\n#define TEST_POOL\n#define TEST_RELU\n#define TEST_IP\n#define TEST_CONV\n#define TEST_NONSQUARE\n#define TEST_NNMULT\n\nint test_index = 0;\nq7_t test_flags[50];\nbool test_pass;\n\nint main()\n{\n    printf(\"start tests\\n\");\n\n    srand(1);\n\n    // common pointers for testing data\n    q7_t     *test1;\n    q15_t    *test2;\n    q7_t     *test3;\n    q15_t    *test4;\n\n    for (test_index = 0; test_index<50; test_index++) {\n        test_flags[test_index] = -1;\n    }\n    test_index = 0;\n\n#ifdef TEST_NNMULT\n#define NNMULT_DIM 128\n    test1 = new q7_t[NNMULT_DIM*2];\n    test2 = new q15_t[NNMULT_DIM*2];\n    test3 = new q7_t[NNMULT_DIM*2];\n    test4 = new q15_t[NNMULT_DIM*2];\n\n    q7_t * mult_out_q7 = test3;\n    q7_t * mult_ref_q7 = test3 + NNMULT_DIM;\n    q15_t * mult_out_q15 = test4;\n    q15_t * mult_ref_q15 = test4 + NNMULT_DIM;\n\n    for (int i=0;i<NNMULT_DIM*2;i++) {\n        test1[i] = (rand() % 256 - 128);\n        test2[i] = (rand() % 65536 - 32768);\n    }\n\n    // Test q7\n    arm_nn_mult_q7(test1, test1+NNMULT_DIM, mult_out_q7, 5, NNMULT_DIM);\n\n    arm_nn_mult_q7_ref(test1, test1+NNMULT_DIM, mult_ref_q7, 5, NNMULT_DIM);\n\n    verify_results_q7(mult_out_q7, mult_ref_q7, NNMULT_DIM);\n\n    arm_nn_mult_q7(test1, test1+NNMULT_DIM, mult_out_q7, 9, NNMULT_DIM);\n\n    arm_nn_mult_q7_ref(test1, test1+NNMULT_DIM, mult_ref_q7, 9, NNMULT_DIM);\n\n    verify_results_q7(mult_out_q7, mult_ref_q7, NNMULT_DIM);\n\n    // Test q15\n    arm_nn_mult_q15(test2, test2+NNMULT_DIM, mult_out_q15, 13, NNMULT_DIM);\n\n    arm_nn_mult_q15_ref(test2, test2+NNMULT_DIM, mult_ref_q15, 13, NNMULT_DIM);\n\n    verify_results_q15(mult_out_q15, mult_ref_q15, NNMULT_DIM);\n\n    arm_nn_mult_q15(test2, test2+NNMULT_DIM, mult_out_q15, 18, NNMULT_DIM);\n\n    arm_nn_mult_q15_ref(test2, test2+NNMULT_DIM, mult_ref_q15, 18, NNMULT_DIM);\n\n    verify_results_q15(mult_out_q15, mult_ref_q15, NNMULT_DIM);\n\n#endif\n\n#ifdef TEST_SIGMOID\n\n#define SIGMOID_DIM 128\n\n    /* This part tests the running of sigmoid functions */\n\n    test1 = new q7_t[SIGMOID_DIM];\n    test2 = new q15_t[SIGMOID_DIM];\n    test3 = new q7_t[SIGMOID_DIM];\n    test4 = new q15_t[SIGMOID_DIM];\n\n    srand(1);\n\n    for (int i = 0; i < SIGMOID_DIM; i++)\n    {\n        test1[i] = (rand() % 256 - 128);\n        test2[i] = (rand() % 65536 - 32768);\n        test3[i] = test1[i];\n        test4[i] = test2[i];\n    }\n\n    arm_nn_activations_direct_q7(test3, SIGMOID_DIM, 3, ARM_SIGMOID);\n\n    for (int i = 0; i < SIGMOID_DIM; i++)\n    {\n        printf(\"in: %d  out: %d\\n\", test1[i], test3[i]);\n    }\n\n    printf(\"start testing q15_t sigmoid\\n\\n\");\n\n    arm_nn_activations_direct_q15(test4, SIGMOID_DIM, 3, ARM_SIGMOID);\n\n    for (int i = 0; i < SIGMOID_DIM; i++)\n    {\n        printf(\"in: %d  out: %d\\n\", test2[i], test4[i]);\n    }\n\n    delete[]test1;\n    delete[]test2;\n    delete[]test3;\n    delete[]test4;\n\n#endif\n\n#ifdef TEST_TANH\n\n#define TANH_DIM 128\n\n    /* This part tests the running of sigmoid functions */\n\n    test1 = new q7_t[TANH_DIM];\n    test2 = new q15_t[TANH_DIM];\n    test3 = new q7_t[TANH_DIM];\n    test4 = new q15_t[TANH_DIM];\n\n    srand(1);\n\n    for (int i = 0; i < TANH_DIM; i++)\n    {\n        test1[i] = (rand() % 256 - 128);\n        test2[i] = (rand() % 65536 - 32768);\n        test3[i] = test1[i];\n        test4[i] = test2[i];\n    }\n\n    arm_nn_activations_direct_q7(test3, TANH_DIM, 3, ARM_TANH);\n\n    printf(\"start testing q7_t tanh\\n\\n\");\n\n    for (int i = 0; i < TANH_DIM; i++)\n    {\n        printf(\"in: %d  out: %d\\n\", test1[i], test3[i]);\n    }\n\n    printf(\"start testing q15_t tanh\\n\\n\");\n\n    arm_nn_activations_direct_q15(test4, TANH_DIM, 3, ARM_TANH);\n\n    for (int i = 0; i < TANH_DIM; i++)\n    {\n        printf(\"in: %d  out: %d\\n\", test2[i], test4[i]);\n    }\n\n    delete[]test1;\n    delete[]test2;\n    delete[]test3;\n    delete[]test4;\n\n#endif\n\n#ifdef TEST_POOL\n\n#define POOL_IM_DIM 32\n#define POOL_IM_CH 8\n\n    test1 = new q7_t[POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH * 2];\n    test2 = new q15_t[POOL_IM_DIM * POOL_IM_CH];\n    test3 = new q7_t[POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH];\n\n    for (int i = 0; i < POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH; i++)\n    {\n        test1[i] = (rand() % 256 - 128);\n    }\n\n    q7_t     *img_in = test1 + POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH;\n    q7_t     *pool_out_ref = test3;\n    q7_t     *pool_out_opt = test3 + POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH / 2;\n\n    for (int i = 0; i < POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH; i++)\n    {\n        test3[i] = 0;\n    }\n\n    // copy over the img input\n    for (int i = 0; i < POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH; i++)\n    {\n        img_in[i] = test1[i];\n    }\n\n    initialize_results_q7(pool_out_ref, pool_out_opt, POOL_IM_DIM / 2 * POOL_IM_DIM / 2 * POOL_IM_CH);\n\n    printf(\"Start maxpool reference implementation\\n\");\n\n    arm_maxpool_q7_HWC_ref(img_in, POOL_IM_DIM, POOL_IM_CH, 3, 0, 2, POOL_IM_DIM / 2, (q7_t *) test2, pool_out_ref);\n\n    // copy over the img input\n    for (int i = 0; i < POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH; i++)\n    {\n        img_in[i] = test1[i];\n    }\n\n    printf(\"Start maxpool opt implementation\\n\");\n\n    arm_maxpool_q7_HWC(img_in, POOL_IM_DIM, POOL_IM_CH, 3, 0, 2, POOL_IM_DIM / 2, (q7_t *) test2, pool_out_opt);\n\n    verify_results_q7(pool_out_ref, pool_out_opt, POOL_IM_DIM / 2 * POOL_IM_DIM / 2 * POOL_IM_CH);\n\n    // copy over the img input\n    for (int i = 0; i < POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH; i++)\n    {\n        img_in[i] = test1[i];\n    }\n\n    // copy over the img input\n    for (int i = 0; i < POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH; i++)\n    {\n        img_in[i] = test1[i];\n    }\n\n    printf(\"Start avepool ref implementation\\n\");\n\n    arm_avepool_q7_HWC_ref(img_in, POOL_IM_DIM, POOL_IM_CH, 3, 0, 2, POOL_IM_DIM / 2, (q7_t *) test2, pool_out_ref);\n\n    // copy over the img input\n    for (int i = 0; i < POOL_IM_DIM * POOL_IM_DIM * POOL_IM_CH; i++)\n    {\n        img_in[i] = test1[i];\n    }\n\n    printf(\"Start avepool opt implementation\\n\");\n\n    arm_avepool_q7_HWC(img_in, POOL_IM_DIM, POOL_IM_CH, 3, 0, 2, POOL_IM_DIM / 2, (q7_t *) test2, pool_out_opt);\n\n    // special check here\n    bool      if_ave_pool_match = true;\n    for (int i = 0; i < POOL_IM_DIM / 2 * POOL_IM_DIM / 2 * POOL_IM_CH; i++)\n    {\n        // we tolerate at most difference of 1 here because of rounding errors\n        if (pool_out_ref[i] - pool_out_opt[i] >= 2 || pool_out_opt[i] - pool_out_ref[i] >= 2)\n        {\n            printf(\"Output mismatch at %d, expected %d, actual %d\\n\", i, pool_out_ref[i], pool_out_opt[i]);\n            if_ave_pool_match = false;\n        }\n    }\n    if (if_ave_pool_match == true)\n    {\n        printf(\"Outputs match.\\n\");\n    }\n\n    delete[]test1;\n    delete[]test2;\n    delete[]test3;\n\n#endif\n\n#ifdef TEST_RELU\n\n#define RELU_DIM 127\n\n    test1 = new q7_t[RELU_DIM];\n    test2 = new q15_t[RELU_DIM];\n    test3 = new q7_t[RELU_DIM];\n    test4 = new q15_t[RELU_DIM];\n\n    for (int i = 0; i < RELU_DIM; i++)\n    {\n        test1[i] = (rand() % 256 - 128);\n        test2[i] = (rand() % 65536 - 32768);\n        test3[i] = test1[i];\n        test4[i] = test2[i];\n    }\n\n    q7_t     *relu_ref_data_q7 = test1;\n    q7_t     *relu_opt_data_q7 = test3;\n    q15_t    *relu_ref_data_q15 = test2;\n    q15_t    *relu_opt_data_q15 = test4;\n\n    printf(\"Start ref relu q7 implementation\\n\");\n\n    arm_relu_q7_ref(relu_ref_data_q7, RELU_DIM);\n\n    printf(\"Start opt relu q7 implementation\\n\");\n\n    arm_relu_q7(relu_opt_data_q7, RELU_DIM);\n\n    verify_results_q7(relu_ref_data_q7, relu_opt_data_q7, RELU_DIM);\n\n    printf(\"Start ref relu q15 implementation\\n\");\n\n    arm_relu_q15_ref(relu_ref_data_q15, RELU_DIM);\n\n    printf(\"Start opt relu q15 implementation\\n\");\n\n    arm_relu_q15(relu_opt_data_q15, RELU_DIM);\n\n    verify_results_q15(relu_ref_data_q15, relu_opt_data_q15, RELU_DIM);\n\n    delete[]test1;\n    delete[]test2;\n    delete[]test3;\n    delete[]test4;\n\n#endif\n\n#ifdef TEST_IP\n\n#define IP_ROW_DIM 127\n#define IP_COL_DIM 127\n\n    q7_t      ip_weights[IP_ROW_DIM * IP_COL_DIM] = IP2_WEIGHT;\n    q7_t      ip_q7_opt_weights[IP_ROW_DIM * IP_COL_DIM] = IP4_WEIGHT;\n    q7_t      ip_q7_q15_opt_weights[IP_ROW_DIM * IP_COL_DIM] = IP4_q7_q15_WEIGHT;\n    q15_t     ip_q15_weights[IP_ROW_DIM * IP_COL_DIM] = IP2_WEIGHT;\n    q15_t     ip_q15_opt_weights[IP_ROW_DIM * IP_COL_DIM] = IP4_WEIGHT_Q15;\n\n    test1 = new q7_t[IP_COL_DIM + IP_ROW_DIM];\n    test2 = new q15_t[IP_COL_DIM];\n    test3 = new q7_t[IP_ROW_DIM * 3];\n    test4 = new q15_t[IP_COL_DIM + IP_ROW_DIM * 2];\n\n    for (int i = 0; i < IP_ROW_DIM + IP_COL_DIM; i++)\n    {\n        test1[i] = rand() % 256 - 100;\n    }\n    for (int i = 0; i < IP_ROW_DIM * 3; i++)\n    {\n        test3[i] = 0;\n    }\n\n    q7_t     *ip_bias_q7 = test1 + IP_COL_DIM;\n\n    q7_t     *ip_out_q7_ref = test3;\n    q7_t     *ip_out_q7_opt = test3 + IP_ROW_DIM;\n    q7_t     *ip_out_q7_opt_fast = test3 + 2 * IP_ROW_DIM;\n    q15_t    *ip_out_q15_ref = test4 + IP_COL_DIM;\n    q15_t    *ip_out_q15_opt = test4 + IP_COL_DIM + IP_ROW_DIM;\n\n    initialize_results_q7(ip_out_q7_ref, ip_out_q7_opt, IP_ROW_DIM);\n    initialize_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM);\n    initialize_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM);\n\n    printf(\"Start ref q7 implementation\\n\");\n\n    arm_fully_connected_q7_ref(test1, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q7_ref, test2);\n\n    printf(\"Start q7 implementation\\n\");\n\n    arm_fully_connected_q7(test1, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q7_opt, test2);\n\n    verify_results_q7(ip_out_q7_ref, ip_out_q7_opt, IP_ROW_DIM);\n\n    printf(\"Start q7 ref opt implementation\\n\");\n\n    arm_fully_connected_q7_opt_ref(test1, ip_q7_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7,\n                                   ip_out_q7_opt_fast, test2);\n\n    verify_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM);\n\n    printf(\"Start q7 opt implementation\\n\");\n\n    arm_fully_connected_q7_opt(test1, ip_q7_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q7_opt_fast,\n                               test2);\n\n    verify_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM);\n\n    for (int i = 0; i < IP_ROW_DIM + IP_COL_DIM; i++)\n    {\n        test4[i] = (rand() % 65536 - 32768);\n    }\n\n    initialize_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    printf(\"Start ref q15 implementation\\n\");\n\n    arm_fully_connected_q15_ref(test4, ip_q15_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_ref, NULL);\n\n    printf(\"Start q15 implementation\\n\");\n\n    arm_fully_connected_q15(test4, ip_q15_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_opt, NULL);\n\n    verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    printf(\"Start ref opt q15 implementation\\n\");\n\n    arm_fully_connected_q15_opt_ref(test4, ip_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_opt,\n                                    NULL);\n\n    verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    printf(\"Start opt q15 implementation\\n\");\n\n    arm_fully_connected_q15_opt(test4, ip_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_opt, NULL);\n\n    verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    initialize_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    printf(\"Start ref q7_q15 implementation\\n\");\n\n    arm_fully_connected_mat_q7_vec_q15_ref(test4, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q15_ref,\n                                           test2);\n\n    printf(\"Start q7_q15 implementation\\n\");\n\n    arm_fully_connected_mat_q7_vec_q15(test4, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q15_opt,\n                                       test2);\n\n    verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    printf(\"Start ref opt q7_q15 implementation\\n\");\n\n    arm_fully_connected_mat_q7_vec_q15_opt_ref(test4, ip_q7_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7,\n                                               ip_out_q15_opt, test2);\n\n    verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    printf(\"Start opt q7_q15 implementation\\n\");\n\n    arm_fully_connected_mat_q7_vec_q15_opt(test4, ip_q7_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7,\n                                           ip_out_q15_opt, test2);\n\n    verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM);\n\n    delete[]test1;\n    delete[]test2;\n    delete[]test3;\n    delete[]test4;\n\n#endif\n\n#ifdef TEST_NONSQUARE\n\n/* Use RCONV to differential with square CONV */\n\n#define RCONV_IM_DIM_X 10\n#define RCONV_IM_DIM_Y 8\n#define RCONV_IM_CH 4\n#define RCONV_KER_DIM_X 5\n#define RCONV_KER_DIM_Y 3\n#define RCONV_STRIDE_X 1\n#define RCONV_STRIDE_Y 1\n#define RCONV_PADDING_X 2\n#define RCONV_PADDING_Y 1\n#define RCONV_OUT_CH 4\n#define RCONV_OUT_DIM_X 10\n#define RCONV_OUT_DIM_Y 8\n\n    test1 = new q7_t[RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH];\n    test2 = new q15_t[2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH];\n    test3 =\n        new q7_t[RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH];\n\n    for (int i = 0; i < RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH; i++)\n    {\n        test1[i] = rand() % 256 - 100;\n    }\n\n    for (int i = 0;\n         i < RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH; i++)\n    {\n        test3[i] = rand() % 256 - 100;\n    }\n\n    q7_t     *rconv_weight_q7 = test1;\n    q7_t     *rconv_bias_q7 = test1 + RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH;\n\n    q15_t    *rconv_buf = test2;\n\n    q7_t     *rconv_im_in_q7 = test3;\n    q7_t     *rconv_im_out_ref_q7 = test3 + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH;\n    q7_t     *rconv_im_out_opt_q7 =\n        test3 + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH;\n\n    initialize_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    printf(\"start conv q7 nonsquare ref implementation\\n\");\n    arm_convolve_HWC_q7_ref_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7,\n                                      RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y,\n                                      RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_ref_q7,\n                                      RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    printf(\"start conv q7 nonsquare opt implementation\\n\");\n    arm_convolve_HWC_q7_fast_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7,\n                                       RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y,\n                                       RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_opt_q7,\n                                       RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    initialize_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    printf(\"start conv q7 nonsquare ref implementation\\n\");\n    arm_convolve_HWC_q7_ref_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7,\n                                      RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y,\n                                      RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_ref_q7,\n                                      RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    printf(\"start conv q7 nonsquare basic implementation\\n\");\n    arm_convolve_HWC_q7_basic_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7,\n                                       RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y,\n                                       RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_opt_q7,\n                                       RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    initialize_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    printf(\"start 1x1 conv q7 nonsquare fast implementation\\n\");\n    arm_convolve_HWC_q7_fast_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7,\n                                       RCONV_OUT_CH, 1, 1, 0, 0, RCONV_STRIDE_X,\n                                       RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_ref_q7, RCONV_OUT_DIM_X,\n                                       RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    printf(\"start 1x1 conv q7 nonsquare dedicated function implementation\\n\");\n    arm_convolve_1x1_HWC_q7_fast_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7,\n                                           RCONV_OUT_CH, 1, 1, 0, 0, RCONV_STRIDE_X,\n                                           RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_opt_q7, RCONV_OUT_DIM_X,\n                                           RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    printf(\"start depthwise separable conv q7 nonsquare ref implementation\\n\");\n    arm_depthwise_separable_conv_HWC_q7_ref_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH,\n                                                      rconv_weight_q7, RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y,\n                                                      RCONV_PADDING_X, RCONV_PADDING_Y, RCONV_STRIDE_X, RCONV_STRIDE_Y,\n                                                      rconv_bias_q7, 1, 7, rconv_im_out_ref_q7, RCONV_OUT_DIM_X,\n                                                      RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    printf(\"start depthwise separable conv q7 nonsquare opt implementation\\n\");\n    arm_depthwise_separable_conv_HWC_q7_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH,\n                                                  rconv_weight_q7, RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y,\n                                                  RCONV_PADDING_X, RCONV_PADDING_Y, RCONV_STRIDE_X, RCONV_STRIDE_Y,\n                                                  rconv_bias_q7, 1, 7, rconv_im_out_opt_q7, RCONV_OUT_DIM_X,\n                                                  RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    delete[]test1;\n    delete[]test2;\n    delete[]test3;\n\t\n\ttest2 = new q15_t[RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH]; // weights + bias\n\ttest4 = new q15_t[2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH   //buffer\n\t         + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH]; // i/o\n\n    for (int i = 0; i < RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH; i++)\n    {\n        test2[i] = rand() % 256 - 100;\n    }\n\n    for (int i = 0;\n         i < 2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH\n         + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH;\n        i++)\n    {\n        test4[i] = rand() % 256 - 100;\n    }\n\n    q15_t     *rconv_weight_q15 = test2;\n    q15_t     *rconv_bias_q15 = test2 + RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH;\n\n    rconv_buf = test4;\n\n    q15_t     *rconv_im_in_q15 = test4 + 2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH;\n    q15_t     *rconv_im_out_ref_q15 = rconv_im_in_q15 + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH;\n    q15_t     *rconv_im_out_opt_q15 = rconv_im_out_ref_q15 + RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH;\n\n    initialize_results_q15(rconv_im_out_ref_q15, rconv_im_out_opt_q15, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\n    printf(\"start conv q15 nonsquare ref implementation\\n\");\n    arm_convolve_HWC_q15_nonsquare_ref(rconv_im_in_q15, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q15,\n                                      RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y,\n                                      RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q15, 1, 7, rconv_im_out_ref_q15,\n                                      RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    printf(\"start conv q5 nonsquare opt implementation\\n\");\n    arm_convolve_HWC_q15_fast_nonsquare(rconv_im_in_q15, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q15,\n                                       RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y,\n                                       RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q15, 1, 7, rconv_im_out_opt_q15,\n                                       RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL);\n\n    verify_results_q15(rconv_im_out_ref_q15, rconv_im_out_opt_q15, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH);\n\t\n    delete [] test2;\n    delete [] test4;\n#endif\n\n#ifdef TEST_CONV\n\n#define CONV_IM_DIM 16\n#define CONV_IM_CH 16\n#define CONV_KER_DIM 5\n#define CONV_OUT_CH 16\n#define CONV_OUT_DIM 16\n\n    test1 = new q7_t[CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH];\n    test2 =\n        new q15_t[CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH +\n                  2 * CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH];\n    test3 = new q7_t[CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH];\n    test4 = new q15_t[CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH];\n\n    for (int i = 0; i < CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH; i++)\n    {\n        test1[i] = rand() % 256 - 100;\n    }\n\n    for (int i = 0;\n         i <\n         CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH +\n         2 * CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH; i++)\n    {\n        test2[i] = (rand() % 65536 - 32768);\n    }\n\n    for (int i = 0; i < CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH; i++)\n    {\n        test3[i] = rand() % 256 - 100;\n    }\n\n    for (int i = 0; i < CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH; i++)\n    {\n        test4[i] = (rand() % 65536 - 32768);\n    }\n\n    q7_t     *conv_weight_q7 = test1;\n    q7_t     *conv_bias_q7 = test1 + CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH;\n\n    q15_t    *conv_weight_q15 = test2;\n    q15_t    *conv_buf = test2 + CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH;\n    q15_t    *conv_bias_q15 =\n        test2 + CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH +\n        2 * CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH;\n\n    q7_t     *conv_im_in_q7 = test3;\n    q7_t     *conv_im_out_ref_q7 = test3 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH;\n    q7_t     *conv_im_out_opt_q7 =\n        test3 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH;\n\n    q15_t    *conv_im_in_q15 = test4;\n    q15_t    *conv_im_out_ref_q15 = test4 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH;\n    q15_t    *conv_im_out_opt_q15 =\n        test4 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH;\n\n    initialize_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    printf(\"start q7 ref implementation\\n\");\n\n    arm_convolve_HWC_q7_ref(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7,\n                            CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_ref_q7,\n                            CONV_OUT_DIM, conv_buf, NULL);\n\n    printf(\"start q7 basic implementation\\n\");\n\n    arm_convolve_HWC_q7_basic(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7,\n                              CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7,\n                              CONV_OUT_DIM, conv_buf, NULL);\n\n    verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    printf(\"start q7 fast implementation\\n\");\n\n    arm_convolve_HWC_q7_fast(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7,\n                             CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7,\n                             CONV_OUT_DIM, conv_buf, NULL);\n\n    verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    // testing with RGB\n    printf(\"start q7 ref implementation for RGB\\n\");\n\n    arm_convolve_HWC_q7_ref(conv_im_in_q7, CONV_IM_DIM, 3, conv_weight_q7,\n                            CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_ref_q7,\n                            CONV_OUT_DIM, conv_buf, NULL);\n\n    printf(\"start q7 basic implementation for RGB\\n\");\n\n    arm_convolve_HWC_q7_basic(conv_im_in_q7, CONV_IM_DIM, 3, conv_weight_q7,\n                              CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7,\n                              CONV_OUT_DIM, conv_buf, NULL);\n\n    verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    printf(\"start q7 RGB implementation for RGB\\n\");\n\n    arm_convolve_HWC_q7_RGB(conv_im_in_q7, CONV_IM_DIM, 3, conv_weight_q7,\n                            CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7,\n                            CONV_OUT_DIM, conv_buf, NULL);\n\n    verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    // testing q15\n    initialize_results_q15(conv_im_out_ref_q15, conv_im_out_opt_q15, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    printf(\"start q15 ref implementation\\n\");\n\n    arm_convolve_HWC_q15_ref(conv_im_in_q15, CONV_IM_DIM, CONV_IM_CH, conv_weight_q15,\n                             CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q15, 0, 15, conv_im_out_ref_q15,\n                             CONV_OUT_DIM, conv_buf, NULL);\n\n    printf(\"start q15 basic implementation\\n\");\n\n    arm_convolve_HWC_q15_basic(conv_im_in_q15, CONV_IM_DIM, CONV_IM_CH, conv_weight_q15,\n                               CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q15, 0, 15, conv_im_out_opt_q15,\n                               CONV_OUT_DIM, conv_buf, NULL);\n\n    verify_results_q15(conv_im_out_ref_q15, conv_im_out_opt_q15, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    printf(\"start q15 fast implementation\\n\");\n\n    arm_convolve_HWC_q15_fast(conv_im_in_q15, CONV_IM_DIM, CONV_IM_CH, conv_weight_q15,\n                              CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q15, 0, 15, conv_im_out_opt_q15,\n                              CONV_OUT_DIM, conv_buf, NULL);\n\n    verify_results_q15(conv_im_out_ref_q15, conv_im_out_opt_q15, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    // depthwise separable conv\n    initialize_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    printf(\"start q7 depthwise_separable_conv ref implementation\\n\");\n\n    arm_depthwise_separable_conv_HWC_q7_ref(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7,\n                                            CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_ref_q7,\n                                            CONV_OUT_DIM, conv_buf, NULL);\n\n    printf(\"start q7 depthwise_separable_conv implementation\\n\");\n\n    arm_depthwise_separable_conv_HWC_q7(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7,\n                                        CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7,\n                                        CONV_OUT_DIM, conv_buf, NULL);\n\n    verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH);\n\n    delete[]test1;\n    delete[]test2;\n    delete[]test3;\n    delete[]test4;\n\n#endif\n\n    test_pass = true;\n    test_index = 0;\n    while (test_flags[test_index] != -1) {\n        if (test_flags[test_index]) {\n             test_pass = false;\n        }\n        test_index ++;\n    }\n    if (test_pass) {\n        printf(\"All tests passed\\n\");\n    } else {\n        printf(\"Test failed passed\\n\");\n    }\n\n    return 0;\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.h",
    "content": "#ifndef _MAIN_H_\n#define _MAIN_H_\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"arm_math.h\"\n\n#include \"arm_nnfunctions.h\"\n#include \"ref_functions.h\"\n\nextern int test_index;\nextern q7_t test_flags[50];\n\nvoid initialize_results_q7(q7_t * ref, q7_t * opt, int length)\n{\n    arm_fill_q7(0, ref, length);\n    arm_fill_q7(37, opt, length);\n}\n\nvoid initialize_results_q15(q15_t * ref, q15_t * opt, int length)\n{\n    arm_fill_q15(0, ref, length);\n    arm_fill_q15(0x5F5, opt, length);\n}\n\nvoid verify_results_q7(q7_t * ref, q7_t * opt, int length)\n{\n\n    bool      if_match = true;\n\n    for (int i = 0; i < length; i++)\n    {\n        if (ref[i] != opt[i])\n        {\n            printf(\"Output mismatch at %d, expected %d, actual %d\\r\\n\", i, ref[i], opt[i]);\n\n            if_match = false;\n        }\n    }\n\n    if (if_match == true)\n    {\n        printf(\"Outputs match.\\r\\n\\r\\n\");\n        test_flags[test_index++] = 0;\n    } else {\n        test_flags[test_index++] = 1;\n    }\n\n}\n\nvoid verify_results_q15(q15_t * ref, q15_t * opt, int length)\n{\n\n    bool      if_match = true;\n\n    for (int i = 0; i < length; i++)\n    {\n        if (ref[i] != opt[i])\n        {\n            printf(\"Output mismatch at %d, expected %d, actual %d\\r\\n\", i, ref[i], opt[i]);\n\n            if_match = false;\n        }\n    }\n\n    if (if_match == true)\n    {\n        printf(\"Outputs match.\\r\\n\\r\\n\");\n        test_flags[test_index++] = 0;\n    } else {\n        test_flags[test_index++] = 1;\n    }\n\n}\n\n#endif\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/readme.txt",
    "content": "CMSIS DSP_Lib example arm_nnexample_nn_test for\n  Cortex-M3, Cortex-M4 and Cortex-M7.\n\nThe example is configured for uVision Simulator.\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nn_activations_q15.c\n * Description:  Q15 neural network activation function using direct table look-up\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup Acti\n * @{\n */\n\n  /**\n   * @brief Q15 neural network activation function using direct table look-up\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @param[in]       int_width   bit-width of the integer part, assume to be smaller than 3\n   * @param[in]       type        type of activation functions\n   * @return none.\n   *\n   * @details\n   * \n   * This is the direct table look-up approach.\n   *\n   * Assume here the integer part of the fixed-point is <= 3.\n   * More than 3 just not making much sense, makes no difference with\n   * saturation followed by any of these activation functions. \n   */\n\nvoid arm_nn_activations_direct_q15(q15_t * data, uint16_t size, uint16_t int_width, arm_nn_activation_type type)\n{\n    uint16_t  i = size;\n    q15_t    *pIn = data;\n    q15_t    *pOut = data;\n    uint16_t  shift_size = 8 + 3 - int_width;\n    uint32_t  bit_mask = 0x7FF >> int_width;\n    uint32_t  full_frac = bit_mask + 1;\n    const q15_t *lookup_table;\n\n    switch (type)\n    {\n    case ARM_SIGMOID:\n        lookup_table = sigmoidTable_q15;\n        break;\n    case ARM_TANH:\n    default:\n        lookup_table = tanhTable_q15;\n        break;\n    }\n\n    while (i)\n    {\n        q15_t     out;\n        q15_t     in = *pIn++;\n        q15_t     frac = (uint32_t) in & bit_mask;\n        q15_t     value = lookup_table[__USAT(in >> shift_size, 8)];\n        q15_t     value2 = lookup_table[__USAT(1 + (in >> shift_size), 8)];\n\n        /* doing the interpolation here for better accuracy */\n        out = ((q31_t) (full_frac - frac) * value + (q31_t) value2 * frac) >> shift_size;\n\n        *pOut++ = out;\n        i--;\n    }\n\n}\n\n/**\n * @} end of Acti group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nn_activations_q7.c\n * Description:  Q7 neural network activation function using direct table look-up\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_common_tables.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup Acti\n * @{\n */\n\n  /**\n   * @brief Q7 neural network activation function using direct table look-up\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @param[in]       int_width   bit-width of the integer part, assume to be smaller than 3\n   * @param[in]       type        type of activation functions\n   * @return none.\n   *\n   * @details\n   * \n   * This is the direct table look-up approach.\n   *\n   * Assume here the integer part of the fixed-point is <= 3.\n   * More than 3 just not making much sense, makes no difference with\n   * saturation followed by any of these activation functions. \n   */\n\nvoid arm_nn_activations_direct_q7(q7_t * data, uint16_t size, uint16_t int_width, arm_nn_activation_type type)\n{\n    uint16_t  i = size;\n    q7_t     *pIn = data;\n    q7_t     *pOut = data;\n    q7_t      in;\n    q7_t      out;\n    uint16_t  shift_size = 3 - int_width;\n    const q7_t *lookup_table;\n    switch (type)\n    {\n    case ARM_SIGMOID:\n        lookup_table = sigmoidTable_q7;\n        break;\n    case ARM_TANH:\n    default:\n        lookup_table = tanhTable_q7;\n        break;\n    }\n    while (i)\n    {\n        in = *pIn++;\n        out = lookup_table[(uint8_t) (in >> shift_size)];\n        *pOut++ = out;\n        i--;\n    }\n}\n\n/**\n * @} end of Acti group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_relu_q15.c\n * Description:  Q15 version of ReLU\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup Acti\n * @{\n */\n\n  /**\n   * @brief Q15 RELU function\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @return none.\n   * \n   * @details\n   *\n   * Optimized relu with QSUB instructions.\n   *\n   */\n\nvoid arm_relu_q15(q15_t * data, uint16_t size)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    uint16_t  i = size >> 1;\n    q15_t    *pIn = data;\n    q15_t    *pOut = data;\n    q31_t     in;\n    q31_t     buf;\n    q31_t     mask;\n\n    while (i)\n    {\n        in = *__SIMD32(pIn)++;\n\n        /* extract the first bit */\n        buf = __ROR(in & 0x80008000, 15);\n\n        /* if MSB=1, mask will be 0xFF, 0x0 otherwise */\n        mask = __QSUB16(0x00000000, buf);\n\n        *__SIMD32(pOut)++ = in & (~mask);\n        i--;\n    }\n\n    if (size & 0x1)\n    {\n        if (*pIn < 0)\n        {\n            *pIn = 0;\n        }\n        pIn++;\n    }\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    uint16_t  i;\n\n    for (i = 0; i < size; i++)\n    {\n        if (data[i] < 0)\n            data[i] = 0;\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n}\n\n/**\n * @} end of Acti group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_relu_q7.c\n * Description:  Q7 version of ReLU\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup Acti\n * @{\n */\n\n  /**\n   * @brief Q7 RELU function\n   * @param[in,out]   data        pointer to input\n   * @param[in]       size        number of elements\n   * @return none.\n   * \n   * @details\n   *\n   * Optimized relu with QSUB instructions.\n   *\n   */\n\nvoid arm_relu_q7(q7_t * data, uint16_t size)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    uint16_t  i = size >> 2;\n    q7_t     *pIn = data;\n    q7_t     *pOut = data;\n    q31_t     in;\n    q31_t     buf;\n    q31_t     mask;\n\n    while (i)\n    {\n        in = *__SIMD32(pIn)++;\n\n        /* extract the first bit */\n        buf = __ROR(in & 0x80808080, 7);\n\n        /* if MSB=1, mask will be 0xFF, 0x0 otherwise */\n        mask = __QSUB8(0x00000000, buf);\n\n        *__SIMD32(pOut)++ = in & (~mask);\n        i--;\n    }\n\n    i = size & 0x3;\n    while (i)\n    {\n        if (*pIn < 0)\n        {\n            *pIn = 0;\n        }\n        pIn++;\n        i--;\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\n    uint16_t  i;\n\n    for (i = 0; i < size; i++)\n    {\n        if (data[i] < 0)\n            data[i] = 0;\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n}\n\n/**\n * @} end of Acti group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_1x1_HWC_q7_fast_nonsquare.c\n * Description:  Fast Q7 version of 1x1 convolution (non-square shape)\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n/**\n * @brief Fast Q7 version of 1x1 convolution (non-sqaure shape)\n * @param[in]       Im_in        pointer to input tensor\n * @param[in]       dim_im_in_x  input tensor dimention x\n * @param[in]       dim_im_in_y  input tensor dimention y\n * @param[in]       ch_im_in     number of input tensor channels\n * @param[in]       wt           pointer to kernel weights\n * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n * @param[in]       dim_kernel_x filter kernel size x\n * @param[in]       dim_kernel_y filter kernel size y\n * @param[in]       padding_x    padding size x\n * @param[in]       padding_y    padding size y\n * @param[in]       stride_x     convolution stride x\n * @param[in]       stride_y     convolution stride y\n * @param[in]       bias         pointer to bias\n * @param[in]       bias_shift   amount of left-shift for bias\n * @param[in]       out_shift    amount of right-shift for output\n * @param[in,out]   Im_out       pointer to output tensor\n * @param[in]       dim_im_out_x output tensor dimension x\n * @param[in]       dim_im_out_y output tensor dimension y\n * @param[in,out]   bufferA      pointer to buffer space for input \n * @param[in,out]   bufferB      pointer to buffer space for output\n * @return     The function returns either\n * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n *\n * This function is optimized for convolution with 1x1 kernel size (i.e., dim_kernel_x=1\n * and dim_kernel_y=1). It can be used for the second half of MobileNets [1] after depthwise \n * separable convolution.\n *\n * This function is the version with full list of optimization tricks, but with\n * some contraints:\n *   ch_im_in is multiple of 4\n *   ch_im_out is multiple of 2\n *\n * [1] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications\n * https://arxiv.org/abs/1704.04861\n */\n\narm_status arm_convolve_1x1_HWC_q7_fast_nonsquare(const q7_t * Im_in,\n                                                  const uint16_t dim_im_in_x,\n                                                  const uint16_t dim_im_in_y,\n                                                  const uint16_t ch_im_in,\n                                                  const q7_t * wt,\n                                                  const uint16_t ch_im_out,\n                                                  const uint16_t dim_kernel_x,\n                                                  const uint16_t dim_kernel_y,\n                                                  const uint16_t padding_x,\n                                                  const uint16_t padding_y,\n                                                  const uint16_t stride_x,\n                                                  const uint16_t stride_y,\n                                                  const q7_t * bias,\n                                                  const uint16_t bias_shift,\n                                                  const uint16_t out_shift,\n                                                  q7_t * Im_out,\n                                                  const uint16_t dim_im_out_x,\n                                                  const uint16_t dim_im_out_y, \n                                                  q15_t * bufferA, \n                                                  q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_out_y, i_out_x;\n    int16_t   i_ch_out;\n\n    /* -----------------------\n     *  Here we use bufferA as q15_t internally as computation are done with q15_t level\n     *  im2col are done to output in q15_t format from q7_t input\n     */\n\n    q15_t    *pBuffer = bufferA;\n    q7_t     *pOut = Im_out;\n\n    if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0 || dim_kernel_x != 1 || dim_kernel_y != 1\n        || padding_x != 0 || padding_y != 0 || stride_x != 1 || stride_y != 1)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_out_y * dim_im_in_x + i_out_x) * ch_im_in, pBuffer,\n                                             ch_im_in);\n            pBuffer += ch_im_in;\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in, bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* check if there is left-over for compute */\n    if (pBuffer != bufferA)\n    {\n        const q7_t *pA = wt;\n        for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++)\n        {\n            q31_t     sum = ((q31_t)(bias[i_ch_out]) << bias_shift) + NN_ROUND(out_shift);\n            q15_t    *pB = bufferA;\n            /* basically each time it process 4 entries */\n            uint16_t  colCnt = ch_im_in * dim_kernel_x * dim_kernel_y >> 2;\n\n            while (colCnt)\n            {\n\n                q31_t     inA1, inA2;\n                q31_t     inB1, inB2;\n\n                pA = (const q7_t *)read_and_pad_reordered((void *)pA, &inA1, &inA2);\n\n                inB1 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA1, inB1, sum);\n                inB2 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA2, inB2, sum);\n\n                colCnt--;\n            }\n            colCnt = ch_im_in * dim_kernel_y * dim_kernel_x & 0x3;\n            while (colCnt)\n            {\n                q7_t      inA1 = *pA++;\n                q15_t     inB1 = *pB++;\n                sum += inA1 * inB1;\n                colCnt--;\n            }\n            *pOut = (q7_t) __SSAT((sum >> out_shift), 8);\n            pOut++;\n\n        }\n\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\t\t\n    int       i, j, k, l, m, n;\n    int       conv_out;\n    int       in_row, in_col;\n\n    if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0 || dim_kernel_x != 1 || dim_kernel_y != 1\n        || padding_x != 0 || padding_y != 0 || stride_x != 1 || stride_y != 1)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out_y; j++)\n        {\n            for (k = 0; k < dim_im_out_x; k++)\n            {\n                conv_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel_y; m++)\n                {\n                    for (n = 0; n < dim_kernel_x; n++)\n                    {\n                        // if-for implementation\n                        in_row = stride_y * j + m - padding_y;\n                        in_col = stride_x * k + n - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] *\n                                    wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + (m * dim_kernel_y + n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q15_basic.c\n * Description:  Q15 version of convolution\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n  /**\n   * @brief Basic Q15 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code> \n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size: ch_im_in*dim_kernel*dim_kernel\n   *\n   * bufferB size: 0\n   *\n   * This basic version is designed to work for any input tensor and weight\n   * dimension. \n   */\n\narm_status\narm_convolve_HWC_q15_basic(const q15_t * Im_in,\n                           const uint16_t dim_im_in,\n                           const uint16_t ch_im_in,\n                           const q15_t * wt,\n                           const uint16_t ch_im_out,\n                           const uint16_t dim_kernel,\n                           const uint16_t padding,\n                           const uint16_t stride,\n                           const q15_t * bias,\n                           const uint16_t bias_shift,\n                           const uint16_t out_shift,\n                           q15_t * Im_out, \n                           const uint16_t dim_im_out, \n                           q15_t * bufferA, \n                           q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    uint16_t  im2col_out_pixel_index = 0;\n    q15_t    *pBuffer = bufferA;\n    q15_t    *pOut = Im_out;\n    q15_t    *im_buffer = bufferA;\n    const q15_t *pA;\n    int       i;\n\n    /* This part implements the im2col function */\n    for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* Filling 0 for out-of-bound paddings */\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        /* arm_copy_q15((q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */\n                        memcpy(pBuffer, (q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, sizeof(q15_t)*ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            pA = wt;\n            for (i = 0; i < ch_im_out; i++)\n            {\n                q31_t     sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                q15_t    *pB = im_buffer;\n                uint16_t  colCnt = ch_im_in * dim_kernel * dim_kernel >> 2;\n                while (colCnt)\n                {\n                    q31_t     inA1 = *__SIMD32(pA)++;\n                    q31_t     inB1 = *__SIMD32(pB)++;\n                    q31_t     inA2 = *__SIMD32(pA)++;\n                    q31_t     inB2 = *__SIMD32(pB)++;\n\n                    sum = __SMLAD(inA1, inB1, sum);\n                    sum = __SMLAD(inA2, inB2, sum);\n\n                    colCnt--;\n                }\n                colCnt = ch_im_in * dim_kernel * dim_kernel & 0x3;\n                while (colCnt)\n                {\n                    q15_t     inA1 = *pA++;\n                    q15_t     inB1 = *pB++;\n                    sum += inA1 * inB1;\n                    colCnt--;\n                }\n                *pOut = (q15_t) __SSAT((sum >> out_shift), 16);\n                pOut++;\n            }\n\n            /* counter reset */\n            pBuffer = im_buffer;\n            im2col_out_pixel_index++;\n        }\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out; j++)\n        {\n            for (k = 0; k < dim_im_out; k++)\n            {\n                conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel; m++)\n                {\n                    for (n = 0; n < dim_kernel; n++)\n                    {\n                        in_row = stride * j + m - padding;\n                        in_col = stride * k + n - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in + in_col) * ch_im_in +\n                                          l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel +\n                                                                                            n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q15_fast.c\n * Description:  Fast Q15 version of convolution\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n  /**\n   * @brief Fast Q15 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input \n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel\n   *\n   * bufferB size: 0\n   *\n   * <b>Input dimension constraints:</b>\n   *\n   * ch_im_in is multiple of 2 \n   *\n   * ch_im_out is multipe of 2\n   *\n   */\n\narm_status\narm_convolve_HWC_q15_fast(const q15_t * Im_in,\n                          const uint16_t dim_im_in,\n                          const uint16_t ch_im_in,\n                          const q15_t * wt,\n                          const uint16_t ch_im_out,\n                          const uint16_t dim_kernel,\n                          const uint16_t padding,\n                          const uint16_t stride,\n                          const q15_t * bias,\n                          const uint16_t bias_shift,\n                          const uint16_t out_shift,\n                          q15_t * Im_out, \n                          const uint16_t dim_im_out, \n                          q15_t * bufferA, \n                          q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    q15_t    *pBuffer = bufferA;\n    q15_t    *im_buffer = bufferA;\n    q15_t    *pOut = Im_out;\n\n    if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    /* This part implements the im2col function */\n    for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        /* arm_copy_q15((q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */\n                        memcpy(pBuffer, (q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, sizeof(q15_t)*ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (i_out_x & 0x1)\n            {\n                int       i;\n                /* initialize the matrix pointers for A */\n                const q15_t *pA = wt;\n\n                /* set up the second output pointers */\n                q15_t    *pOut2 = pOut + ch_im_out;\n\n                /* this loop over rows in A */\n                for (i = 0; i < ch_im_out; i += 2)\n                {\n                    /* setup pointers for B */\n                    q15_t    *pB = im_buffer;\n                    const q15_t *pB2 = pB + ch_im_in * dim_kernel * dim_kernel;\n\n                    /* aling the second pointer for A */\n                    const q15_t *pA2 = pA + ch_im_in * dim_kernel * dim_kernel;\n\n                    /* init the sum with bias */\n                    q31_t     sum =  ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                    q31_t     sum2 = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                    q31_t     sum3 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift);\n                    q31_t     sum4 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift);\n\n                    uint16_t  colCnt = ch_im_in * dim_kernel * dim_kernel >> 1;\n                    /* accumulate over the vector */\n                    while (colCnt)\n                    {\n                        q31_t     inA1 = *__SIMD32(pA)++;\n                        q31_t     inB1 = *__SIMD32(pB)++;\n                        q31_t     inA2 = *__SIMD32(pA2)++;\n                        q31_t     inB2 = *__SIMD32(pB2)++;\n\n                        sum = __SMLAD(inA1, inB1, sum);\n                        sum2 = __SMLAD(inA1, inB2, sum2);\n                        sum3 = __SMLAD(inA2, inB1, sum3);\n                        sum4 = __SMLAD(inA2, inB2, sum4);\n\n                        colCnt--;\n                    }           /* while over colCnt */\n                    colCnt = ch_im_in * dim_kernel * dim_kernel & 0x1;\n                    while (colCnt)\n                    {\n                        q15_t     inA1 = *pA++;\n                        q15_t     inB1 = *pB++;\n                        q15_t     inA2 = *pA2++;\n                        q15_t     inB2 = *pB2++;\n\n                        sum += inA1 * inB1;\n                        sum2 += inA1 * inB2;\n                        sum3 += inA2 * inB1;\n                        sum4 += inA2 * inB2;\n                        colCnt--;\n                    }           /* while over colCnt */\n                    *pOut++ = (q15_t) __SSAT(sum >> out_shift, 16);\n                    *pOut++ = (q15_t) __SSAT(sum3 >> out_shift, 16);\n                    *pOut2++ = (q15_t) __SSAT(sum2 >> out_shift, 16);\n                    *pOut2++ = (q15_t) __SSAT(sum4 >> out_shift, 16);\n\n                    /* skip the row computed with A2 */\n                    pA += ch_im_in * dim_kernel * dim_kernel;\n                }               /* for over ch_im_out */\n\n                pOut += ch_im_out;\n                /* counter reset */\n                pBuffer = im_buffer;\n            }\n        }\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out; j++)\n        {\n            for (k = 0; k < dim_im_out; k++)\n            {\n                conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel; m++)\n                {\n                    for (n = 0; n < dim_kernel; n++)\n                    {\n                        in_row = stride * j + m - padding;\n                        in_col = stride * k + n - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in + in_col) * ch_im_in +\n                                          l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel +\n                                                                                            n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q15_fast.c\n * Description:  Fast Q15 version of convolution\n *\n * $Date:        24. May 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n  /**\n   * @brief Fast Q15 convolution function (non-sqaure shape)\n   * @param[in]       Im_in        pointer to input tensor\n   * @param[in]       dim_im_in_x  input tensor dimention x\n   * @param[in]       dim_im_in_y  input tensor dimention y\n   * @param[in]       ch_im_in     number of input tensor channels\n   * @param[in]       wt           pointer to kernel weights\n   * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel_x filter kernel size x\n   * @param[in]       dim_kernel_y filter kernel size y\n   * @param[in]       padding_x    padding size x\n   * @param[in]       padding_y    padding size y\n   * @param[in]       stride_x     convolution stride x\n   * @param[in]       stride_y     convolution stride y\n   * @param[in]       bias         pointer to bias\n   * @param[in]       bias_shift   amount of left-shift for bias\n   * @param[in]       out_shift    amount of right-shift for output\n   * @param[in,out]   Im_out       pointer to output tensor\n   * @param[in]       dim_im_out_x output tensor dimension x\n   * @param[in]       dim_im_out_y output tensor dimension y\n   * @param[in,out]   bufferA      pointer to buffer space for input \n   * @param[in,out]   bufferB      pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel\n   *\n   * bufferB size: 0\n   *\n   * <b>Input dimension constraints:</b>\n   *\n   * ch_im_in is multiple of 2 \n   *\n   * ch_im_out is multipe of 2\n   *\n   */\n\narm_status\narm_convolve_HWC_q15_fast_nonsquare(const q15_t * Im_in,\n                                    const uint16_t dim_im_in_x,\n                                    const uint16_t dim_im_in_y,\n                                    const uint16_t ch_im_in,\n                                    const q15_t * wt,\n                                    const uint16_t ch_im_out,\n                                    const uint16_t dim_kernel_x,\n                                    const uint16_t dim_kernel_y,\n                                    const uint16_t padding_x,\n                                    const uint16_t padding_y,\n                                    const uint16_t stride_x,\n                                    const uint16_t stride_y,\n                                    const q15_t * bias,\n                                    const uint16_t bias_shift,\n                                    const uint16_t out_shift,\n                                    q15_t * Im_out,\n                                    const uint16_t dim_im_out_x,\n                                    const uint16_t dim_im_out_y, \n                                    q15_t * bufferA, \n                                    q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    q15_t    *pBuffer = bufferA;\n    q15_t    *im_buffer = bufferA;\n    q15_t    *pOut = Im_out;\n\n    if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    /* This part implements the im2col function */\n    for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        /* arm_copy_q15((q15_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */\n                        memcpy(pBuffer, (q15_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, sizeof(q15_t)*ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (i_out_x & 0x1)\n            {\n                int       i;\n                /* initialize the matrix pointers for A */\n                const q15_t *pA = wt;\n\n                /* set up the second output pointers */\n                q15_t    *pOut2 = pOut + ch_im_out;\n\n                /* this loop over rows in A */\n                for (i = 0; i < ch_im_out; i += 2)\n                {\n                    /* setup pointers for B */\n                    q15_t    *pB = im_buffer;\n                    const q15_t *pB2 = pB + ch_im_in * dim_kernel_y * dim_kernel_x;\n\n                    /* aling the second pointer for A */\n                    const q15_t *pA2 = pA + ch_im_in * dim_kernel_y * dim_kernel_x;\n\n                    /* init the sum with bias */\n                    q31_t     sum =  ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                    q31_t     sum2 = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                    q31_t     sum3 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift);\n                    q31_t     sum4 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift);\n\n                    uint16_t  colCnt = ch_im_in * dim_kernel_y * dim_kernel_x >> 1;\n                    /* accumulate over the vector */\n                    while (colCnt)\n                    {\n                        q31_t     inA1 = *__SIMD32(pA)++;\n                        q31_t     inB1 = *__SIMD32(pB)++;\n                        q31_t     inA2 = *__SIMD32(pA2)++;\n                        q31_t     inB2 = *__SIMD32(pB2)++;\n\n                        sum = __SMLAD(inA1, inB1, sum);\n                        sum2 = __SMLAD(inA1, inB2, sum2);\n                        sum3 = __SMLAD(inA2, inB1, sum3);\n                        sum4 = __SMLAD(inA2, inB2, sum4);\n\n                        colCnt--;\n                    }           /* while over colCnt */\n                    colCnt = ch_im_in * dim_kernel_y * dim_kernel_x & 0x1;\n                    while (colCnt)\n                    {\n                        q15_t     inA1 = *pA++;\n                        q15_t     inB1 = *pB++;\n                        q15_t     inA2 = *pA2++;\n                        q15_t     inB2 = *pB2++;\n\n                        sum += inA1 * inB1;\n                        sum2 += inA1 * inB2;\n                        sum3 += inA2 * inB1;\n                        sum4 += inA2 * inB2;\n                        colCnt--;\n                    }           /* while over colCnt */\n                    *pOut++ = (q15_t) __SSAT(sum >> out_shift, 16);\n                    *pOut++ = (q15_t) __SSAT(sum3 >> out_shift, 16);\n                    *pOut2++ = (q15_t) __SSAT(sum2 >> out_shift, 16);\n                    *pOut2++ = (q15_t) __SSAT(sum4 >> out_shift, 16);\n\n                    /* skip the row computed with A2 */\n                    pA += ch_im_in * dim_kernel_y * dim_kernel_x;\n                }               /* for over ch_im_out */\n\n                pOut += ch_im_out;\n                /* counter reset */\n                pBuffer = im_buffer;\n            }\n        }\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out_y; j++)\n        {\n            for (k = 0; k < dim_im_out_x; k++)\n            {\n                conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel_y; m++)\n                {\n                    for (n = 0; n < dim_kernel_x; n++)\n                    {\n                        in_row = stride_y * j + m - padding_y;\n                        in_col = stride_x * k + n - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in +\n                                          l] * wt[i * ch_im_in * dim_kernel_x * dim_kernel_y + (m * dim_kernel_x +\n                                                                                            n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q7_RGB.c\n * Description:  Q7 version of convolution for RGB image\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n  /**\n   * @brief Q7 convolution function for RGB image\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel\n   *\n   * bufferB size: 0\n   *\n   * <b>Input dimension constraints:</b>\n   *\n   * ch_im_in equals 3\n   *\n   * This kernel is written exclusively for convolution with ch_im_in\n   * equals 3. This applies on the first layer of CNNs which has input\n   * image with RGB format.\n   */\n\narm_status\narm_convolve_HWC_q7_RGB(const q7_t * Im_in,\n                        const uint16_t dim_im_in,\n                        const uint16_t ch_im_in,\n                        const q7_t * wt,\n                        const uint16_t ch_im_out,\n                        const uint16_t dim_kernel,\n                        const uint16_t padding,\n                        const uint16_t stride,\n                        const q7_t * bias,\n                        const uint16_t bias_shift,\n                        const uint16_t out_shift,\n                        q7_t * Im_out, const uint16_t dim_im_out, q15_t * bufferA, q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    /*\n     *  Here we use bufferA as q15_t internally as computation are done with q15_t level\n     *  im2col are done to output in q15_t format from q7_t input\n     */\n    q15_t    *pBuffer = bufferA;\n    q7_t     *pOut = Im_out;\n\n    // check if number of input channels is 3\n    if (ch_im_in != 3)\n    {\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n    // This part implements the im2col function\n    for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* Equivalent to arm_fill_q15(0, pBuffer, ch_im_in) with assumption: ch_im_in = 3 */\n                        *__SIMD32(pBuffer) = 0x0;\n                        *(pBuffer + 2) = 0;\n                        pBuffer += 3;\n                    } else\n                    {\n                        /* \n                         * Equivalent to:\n                         *  arm_q7_to_q15_no_shift( (q7_t*)Im_in+(i_ker_y*dim_im_in+i_ker_x)*3, pBuffer, 3);\n                         */\n\n                        const q7_t *pPixel = Im_in + (i_ker_y * dim_im_in + i_ker_x) * 3;\n                        q31_t     buf = *__SIMD32(pPixel);\n\n                        union arm_nnword top;\n                        union arm_nnword bottom;\n\n                        top.word = __SXTB16(buf);\n                        bottom.word = __SXTB16(__ROR(buf, 8));\n\n#ifndef ARM_MATH_BIG_ENDIAN\n                        /*\n                         *  little-endian, | omit | 3rd  | 2nd  | 1st  |\n                         *                MSB                         LSB\n                         *   top | 3rd | 1st |; bottom | omit | 2nd |\n                         *\n                         *  version 1, need to swap 2nd and 3rd weight\n                         * *__SIMD32(pBuffer) = top.word;\n                         * *(pBuffer+2) = bottom.half_words[0];\n                         *\n                         *  version 2, no weight shuffling required\n                         */\n                        *pBuffer++ = top.half_words[0];\n                        *__SIMD32(pBuffer) = __PKHBT(bottom.word, top.word, 0);\n#else\n                        /*\n                         *  big-endian,    | 1st  | 2nd  | 3rd  | omit | \n                         *                MSB                         LSB\n                         *  top | 2nd | omit |; bottom | 1st | 3rd |\n                         * \n                         *  version 1, need to swap 2nd and 3rd weight\n                         * *__SIMD32(pBuffer) = bottom.word;\n                         * *(pBuffer+2) = top.half_words[1];\n                         * \n                         *  version 2, no weight shuffling required\n                         */\n                        *pBuffer++ = bottom.half_words[0];\n                        *__SIMD32(pBuffer) = __PKHTB(top.word, bottom.word, 0);\n#endif\n                        pBuffer += 2;\n                    }\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * 3 * dim_kernel * dim_kernel)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15(wt, bufferA,\n                                                  ch_im_out,\n                                                  3 * dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut);\n\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* left-over because odd number of output pixels */\n    if (pBuffer != bufferA)\n    {\n        const q7_t *pA = wt;\n        int       i;\n\n        for (i = 0; i < ch_im_out; i++)\n        {\n            q31_t     sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n            q15_t    *pB = bufferA;\n            /* basically each time it process 4 entries */\n            uint16_t  colCnt = 3 * dim_kernel * dim_kernel >> 2;\n\n            while (colCnt)\n            {\n\n                q31_t     inA1, inA2;\n                q31_t     inB1, inB2;\n\n                pA = (q7_t *) read_and_pad((void *)pA, &inA1, &inA2);\n\n                inB1 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA1, inB1, sum);\n                inB2 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA2, inB2, sum);\n\n                colCnt--;\n            }\n            colCnt = 3 * dim_kernel * dim_kernel & 0x3;\n            while (colCnt)\n            {\n                q7_t      inA1 = *pA++;\n                q15_t     inB1 = *pB++;\n                sum += inA1 * inB1;\n                colCnt--;\n            }\n            *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        }\n    }\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    // check if number of input channels is 3\n    if (ch_im_in != 3)\n    {\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out; j++)\n        {\n            for (k = 0; k < dim_im_out; k++)\n            {\n                conv_out = (bias[i] << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel; m++)\n                {\n                    for (n = 0; n < dim_kernel; n++)\n                    {\n                        /* if-for implementation */\n                        in_row = stride * j + m - padding;\n                        in_col = stride * k + n - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in + in_col) * ch_im_in +\n                                          l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel +\n                                                                                            n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return (ARM_MATH_SUCCESS);\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q7_basic.c\n * Description:\t Q7 version of convolution\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n  /**\n   * @brief Basic Q7 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input \n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code> \n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel\n   *\n   * bufferB size: 0\n   *\n   * This basic version is designed to work for any input tensor and weight\n   * dimension. \n   */\n\narm_status\narm_convolve_HWC_q7_basic(const q7_t * Im_in,\n                          const uint16_t dim_im_in,\n                          const uint16_t ch_im_in,\n                          const q7_t * wt,\n                          const uint16_t ch_im_out,\n                          const uint16_t dim_kernel,\n                          const uint16_t padding,\n                          const uint16_t stride,\n                          const q7_t * bias,\n                          const uint16_t bias_shift,\n                          const uint16_t out_shift,\n                          q7_t * Im_out, \n                          const uint16_t dim_im_out, \n                          q15_t * bufferA, \n                          q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    /* \n     *  Here we use bufferA as q15_t internally as computation are done with q15_t level\n     *  im2col are done to output in q15_t format from q7_t input\n     */\n    q15_t    *pBuffer = bufferA;\n    q7_t     *pOut = Im_out;\n\n    /* This part implements the im2col function */\n    for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* Filling 0 for out-of-bound paddings */\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        /* Copying the pixel data to column */\n                        arm_q7_to_q15_no_shift((q7_t *)\n                                               Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            /* Computation is filed for every 2 columns */\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15(wt, bufferA,\n                                                  ch_im_out,\n                                                  ch_im_in *\n                                                  dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut);\n\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* left-over because odd number of output pixels */\n    if (pBuffer != bufferA)\n    {\n        const q7_t *pA = wt;\n        int       i;\n\n        for (i = 0; i < ch_im_out; i++)\n        {\n            /* Load the accumulator with bias first */\n            q31_t     sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n\n            /* Point to the beging of the im2col buffer */\n            q15_t    *pB = bufferA;\n\n            /* Each time it process 4 entries */\n            uint16_t  colCnt = ch_im_in * dim_kernel * dim_kernel >> 2;\n\n            while (colCnt)\n            {\n                q31_t     inA1, inA2;\n                q31_t     inB1, inB2;\n\n                pA = (q7_t *) read_and_pad((void *)pA, &inA1, &inA2);\n\n                inB1 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA1, inB1, sum);\n                inB2 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA2, inB2, sum);\n\n                colCnt--;\n            }\n            colCnt = ch_im_in * dim_kernel * dim_kernel & 0x3;\n            while (colCnt)\n            {\n                q7_t      inA1 = *pA++;\n                q15_t     inB1 = *pB++;\n                sum += inA1 * inB1;\n                colCnt--;\n            }\n            *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        }\n    }\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out; j++)\n        {\n            for (k = 0; k < dim_im_out; k++)\n            {\n                conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel; m++)\n                {\n                    for (n = 0; n < dim_kernel; n++)\n                    {\n                        // if-for implementation\n                        in_row = stride * j + m - padding;\n                        in_col = stride * k + n - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in + in_col) * ch_im_in +\n                                          l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel +\n                                                                                            n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q7_basic.c\n * Description:\t Q7 version of convolution\n *\n * $Date:        13. July 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n  /**\n   * @brief Basic Q7 convolution function (non-sqaure shape)\n   * @param[in]       Im_in        pointer to input tensor\n   * @param[in]       dim_im_in_x  input tensor dimention x\n   * @param[in]       dim_im_in_y  input tensor dimention y\n   * @param[in]       ch_im_in     number of input tensor channels\n   * @param[in]       wt           pointer to kernel weights\n   * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel_x filter kernel size x\n   * @param[in]       dim_kernel_y filter kernel size y\n   * @param[in]       padding_x    padding size x\n   * @param[in]       padding_y    padding size y\n   * @param[in]       stride_x     convolution stride x\n   * @param[in]       stride_y     convolution stride y\n   * @param[in]       bias         pointer to bias\n   * @param[in]       bias_shift   amount of left-shift for bias\n   * @param[in]       out_shift    amount of right-shift for output\n   * @param[in,out]   Im_out       pointer to output tensor\n   * @param[in]       dim_im_out_x output tensor dimension x\n   * @param[in]       dim_im_out_y output tensor dimension y\n   * @param[in,out]   bufferA      pointer to buffer space for input\n   * @param[in,out]   bufferB      pointer to buffer space for output\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   */\n\narm_status arm_convolve_HWC_q7_basic_nonsquare(const q7_t * Im_in,\n                                               const uint16_t dim_im_in_x,\n                                               const uint16_t dim_im_in_y,\n                                               const uint16_t ch_im_in,\n                                               const q7_t * wt,\n                                               const uint16_t ch_im_out,\n                                               const uint16_t dim_kernel_x,\n                                               const uint16_t dim_kernel_y,\n                                               const uint16_t padding_x,\n                                               const uint16_t padding_y,\n                                               const uint16_t stride_x,\n                                               const uint16_t stride_y,\n                                               const q7_t * bias,\n                                               const uint16_t bias_shift,\n                                               const uint16_t out_shift,\n                                               q7_t * Im_out,\n                                               const uint16_t dim_im_out_x,\n                                               const uint16_t dim_im_out_y,\n                                               q15_t * bufferA,\n                                               q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    /* \n     *  Here we use bufferA as q15_t internally as computation are done with q15_t level\n     *  im2col are done to output in q15_t format from q7_t input\n     */\n    q15_t    *pBuffer = bufferA;\n    q7_t     *pOut = Im_out;\n\n    /* This part implements the im2col function */\n    for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x)\n                    {\n                        /* Filling 0 for out-of-bound paddings */\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        /* Copying the pixel data to column */\n                        arm_q7_to_q15_no_shift((q7_t *)\n                                               Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            /* Computation is filed for every 2 columns */\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_y * dim_kernel_x)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15(wt, bufferA,\n                                                  ch_im_out,\n                                                  ch_im_in *\n                                                  dim_kernel_y * dim_kernel_x, bias_shift, out_shift, bias, pOut);\n\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* left-over because odd number of output pixels */\n    if (pBuffer != bufferA)\n    {\n        const q7_t *pA = wt;\n        int       i;\n\n        for (i = 0; i < ch_im_out; i++)\n        {\n            /* Load the accumulator with bias first */\n            q31_t     sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n\n            /* Point to the beging of the im2col buffer */\n            q15_t    *pB = bufferA;\n\n            /* Each time it process 4 entries */\n            uint16_t  colCnt = ch_im_in * dim_kernel_y * dim_kernel_x >> 2;\n\n            while (colCnt)\n            {\n                q31_t     inA1, inA2;\n                q31_t     inB1, inB2;\n\n                pA = (q7_t *) read_and_pad((void *)pA, &inA1, &inA2);\n\n                inB1 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA1, inB1, sum);\n                inB2 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA2, inB2, sum);\n\n                colCnt--;\n            }\n            colCnt = ch_im_in * dim_kernel_y * dim_kernel_x & 0x3;\n            while (colCnt)\n            {\n                q7_t      inA1 = *pA++;\n                q15_t     inB1 = *pB++;\n                sum += inA1 * inB1;\n                colCnt--;\n            }\n            *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        }\n    }\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out_y; j++)\n        {\n            for (k = 0; k < dim_im_out_x; k++)\n            {\n                conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel_y; m++)\n                {\n                    for (n = 0; n < dim_kernel_x; n++)\n                    {\n                        // if-for implementation\n                        in_row = stride_y * j + m - padding_y;\n                        in_col = stride_x * k + n - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] * \n                                         wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + \n                                         (m * dim_kernel_x + n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q7_fast.c\n * Description:  Fast Q7 version of convolution\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n  /**\n   * @brief Fast Q7 convolution function\n   * @param[in]       Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       wt          pointer to kernel weights\n   * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       bias        pointer to bias\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input \n   * @param[in,out]   bufferB     pointer to buffer space for output\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel\n   *\n   * bufferB size: 0\n   *\n   * <b>Input dimension constraints:</b>\n   *\n   * ch_im_in is multiple of 4    ( because of the SIMD32 read and swap )\n   *\n   * ch_im_out is multipe of 2    ( bacause 2x2 mat_mult kernel )\n   *\n   * The im2col converts the Q7 tensor input into Q15 column, which is stored in\n   * bufferA. There is reordering happenning during this im2col process with\n   * arm_q7_to_q15_reordered_no_shift. For every four elements, the second and\n   * third elements are swapped. \n   *\n   * The computation kernel arm_nn_mat_mult_kernel_q7_q15_reordered does the\n   * GEMM computation with the reordered columns.\n   *\n   * To speed-up the determination of the padding condition, we split the\n   * computation into 3x3 parts, i.e., {top, mid, bottom} X {left, mid, right}.\n   * This reduces the total number of boundary condition checks and improves\n   * the data copying performance.\n   */\n\narm_status\narm_convolve_HWC_q7_fast(const q7_t * Im_in,\n                         const uint16_t dim_im_in,\n                         const uint16_t ch_im_in,\n                         const q7_t * wt,\n                         const uint16_t ch_im_out,\n                         const uint16_t dim_kernel,\n                         const uint16_t padding,\n                         const uint16_t stride,\n                         const q7_t * bias,\n                         const uint16_t bias_shift,\n                         const uint16_t out_shift,\n                         q7_t * Im_out, \n                         const uint16_t dim_im_out, \n                         q15_t * bufferA, \n                         q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    /*\n     *  Here we use bufferA as q15_t internally as computation are done with q15_t level\n     *  im2col are done to output in q15_t format from q7_t input\n     */\n\n    q15_t    *pBuffer = bufferA;\n    q7_t     *pOut = Im_out;\n\n    if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    /*\n     *  Here we split the entire matrix into three regions depending on the padding situation\n     *    Top: i_out_y from 0 to padding - 1\n     * Middle: i_out_y from padding to dim_im_out-padding-1\n     * Bottom: i_out_y from dim_im_out-padding to dim_im_out-1\n     */\n\n    /* top part */\n    for (i_out_y = 0; i_out_y < padding; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift\n                            ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt,\n                                                            bufferA,\n                                                            ch_im_out,\n                                                            ch_im_in\n                                                            *\n                                                            dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* middle part, here we also divide the x into left, mid and right */\n    for (; i_out_y < dim_im_out - padding; i_out_y++)\n    {\n\n        /* left part */\n        for (i_out_x = 0; i_out_x < padding; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift\n                            ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt,\n                                                            bufferA,\n                                                            ch_im_out,\n                                                            ch_im_in\n                                                            *\n                                                            dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n\n        /* mid part */\n        for (; i_out_x < dim_im_out - padding; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in\n                                                 +\n                                                 (i_ker_y *\n                                                  dim_im_in +\n                                                  i_out_x *\n                                                  stride - padding) * ch_im_in, pBuffer, ch_im_in * dim_kernel);\n                pBuffer += ch_im_in * dim_kernel;\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt,\n                                                            bufferA,\n                                                            ch_im_out,\n                                                            ch_im_in\n                                                            *\n                                                            dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n\n        /* right part */\n        for (; i_out_x < dim_im_out; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift\n                            ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt,\n                                                            bufferA,\n                                                            ch_im_out,\n                                                            ch_im_in\n                                                            *\n                                                            dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    for (; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift\n                            ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt,\n                                                            bufferA,\n                                                            ch_im_out,\n                                                            ch_im_in\n                                                            *\n                                                            dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* check if there is left-over for compute */\n    if (pBuffer != bufferA)\n    {\n        const q7_t *pA = wt;\n        int       i;\n\n        for (i = 0; i < ch_im_out; i++)\n        {\n            q31_t     sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift);\n            q15_t    *pB = bufferA;\n            /* each time it process 4 entries */\n            uint16_t  colCnt = ch_im_in * dim_kernel * dim_kernel >> 2;\n\n            while (colCnt)\n            {\n\n                q31_t     inA1, inA2;\n                q31_t     inB1, inB2;\n\n                pA = (q7_t *) read_and_pad_reordered((void *)pA, &inA1, &inA2);\n\n                inB1 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA1, inB1, sum);\n                inB2 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA2, inB2, sum);\n\n                colCnt--;\n            }\n            colCnt = ch_im_in * dim_kernel * dim_kernel & 0x3;\n            while (colCnt)\n            {\n                q7_t      inA1 = *pA++;\n                q15_t     inB1 = *pB++;\n                sum += inA1 * inB1;\n                colCnt--;\n            }\n            *pOut = (q7_t) __SSAT((sum >> out_shift), 8);\n            pOut++;\n\n        }\n\n    }\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\n    uint16_t  i, j, k, l, m, n;\n    int       conv_out;\n    signed char in_row, in_col;\n\n    if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out; j++)\n        {\n            for (k = 0; k < dim_im_out; k++)\n            {\n                conv_out = (bias[i] << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel; m++)\n                {\n                    for (n = 0; n < dim_kernel; n++)\n                    {\n                        // if-for implementation\n                        in_row = stride * j + m - padding;\n                        in_col = stride * k + n - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out +=\n                                    Im_in[(in_row * dim_im_in + in_col) * ch_im_in +\n                                          l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel +\n                                                                                            n) * ch_im_in + l];\n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_convolve_HWC_q7_fast_nonsquare.c\n * Description:  Fast Q7 version of convolution (non-sqaure shape)\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n/**\n * @brief Fast Q7 convolution function (non-sqaure shape)\n * @param[in]       Im_in        pointer to input tensor\n * @param[in]       dim_im_in_x  input tensor dimention x\n * @param[in]       dim_im_in_y  input tensor dimention y\n * @param[in]       ch_im_in     number of input tensor channels\n * @param[in]       wt           pointer to kernel weights\n * @param[in]       ch_im_out    number of filters, i.e., output tensor channels\n * @param[in]       dim_kernel_x filter kernel size x\n * @param[in]       dim_kernel_y filter kernel size y\n * @param[in]       padding_x    padding size x\n * @param[in]       padding_y    padding size y\n * @param[in]       stride_x     convolution stride x\n * @param[in]       stride_y     convolution stride y\n * @param[in]       bias         pointer to bias\n * @param[in]       bias_shift   amount of left-shift for bias\n * @param[in]       out_shift    amount of right-shift for output\n * @param[in,out]   Im_out       pointer to output tensor\n * @param[in]       dim_im_out_x output tensor dimension x\n * @param[in]       dim_im_out_y output tensor dimension y\n * @param[in,out]   bufferA      pointer to buffer space for input \n * @param[in,out]   bufferB      pointer to buffer space for output\n * @return     The function returns either\n * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n *\n * This function is the version with full list of optimization tricks, but with\n * some contraints:\n *   ch_im_in is multiple of 4\n *   ch_im_out is multiple of 2\n */\n\narm_status arm_convolve_HWC_q7_fast_nonsquare(const q7_t * Im_in,\n                                              const uint16_t dim_im_in_x,\n                                              const uint16_t dim_im_in_y,\n                                              const uint16_t ch_im_in,\n                                              const q7_t * wt,\n                                              const uint16_t ch_im_out,\n                                              const uint16_t dim_kernel_x,\n                                              const uint16_t dim_kernel_y,\n                                              const uint16_t padding_x,\n                                              const uint16_t padding_y,\n                                              const uint16_t stride_x,\n                                              const uint16_t stride_y,\n                                              const q7_t * bias,\n                                              const uint16_t bias_shift,\n                                              const uint16_t out_shift,\n                                              q7_t * Im_out,\n                                              const uint16_t dim_im_out_x,\n                                              const uint16_t dim_im_out_y, \n                                              q15_t * bufferA, \n                                              q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_out_y, i_out_x, i_ker_y, i_ker_x;\n\n    /* -----------------------\n     *  Here we use bufferA as q15_t internally as computation are done with q15_t level\n     *  im2col are done to output in q15_t format from q7_t input\n     */\n\n    q15_t    *pBuffer = bufferA;\n    q7_t     *pOut = Im_out;\n\n    if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    /*\n     *  Here we split the entire matrix into three regions depending on the padding situation\n     *    Top: i_out_y from 0 to padding - 1\n     * Middle: i_out_y from padding to dim_im_out-padding-1\n     * Bottom: i_out_y from dim_im_out-padding to dim_im_out-1\n     */\n\n    /* top part */\n    for (i_out_y = 0; i_out_y < padding_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y;\n                 i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x;\n                     i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in,\n                                                         pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y,\n                                                  bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* middle part, here we also divide the x into left, mid and right */\n    for (; i_out_y < dim_im_out_y - padding_y; i_out_y++)\n    {\n\n        /* left part */\n        for (i_out_x = 0; i_out_x < padding_x; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y;\n                 i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x;\n                     i_ker_x++)\n                {\n                    if (i_ker_x < 0 || i_ker_x >= dim_im_in_x)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in,\n                                                         pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y,\n                                                  bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n\n        /* mid part */\n        for (; i_out_x < dim_im_out_x - padding_x; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y;\n                 i_ker_y++)\n            {\n                arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in +\n                                                 (i_ker_y * dim_im_in_x + i_out_x * stride_x - padding_x) * ch_im_in,\n                                                 pBuffer, ch_im_in * dim_kernel_x);\n                pBuffer += ch_im_in * dim_kernel_x;\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y,\n                                                  bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n\n        /* right part */\n        for (; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y;\n                 i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x;\n                     i_ker_x++)\n                {\n                    if (i_ker_x < 0 || i_ker_x >= dim_im_in_x)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in,\n                                                         pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y,\n                                                  bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    for (; i_out_y < dim_im_out_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            /* This part implements the im2col function */\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y;\n                 i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x;\n                     i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x)\n                    {\n                        /* arm_fill_q15(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, sizeof(q15_t)*ch_im_in);\n                    } else\n                    {\n                        arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in,\n                                                         pBuffer, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y)\n            {\n                pOut =\n                    arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y,\n                                                  bias_shift, out_shift, bias, pOut);\n                /* counter reset */\n                pBuffer = bufferA;\n            }\n        }\n    }\n\n    /* check if there is left-over for compute */\n    if (pBuffer != bufferA)\n    {\n        const q7_t *pA = wt;\n        int       i;\n        for (i = 0; i < ch_im_out; i++)\n        {\n            q31_t     sum = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n            q15_t    *pB = bufferA;\n            /* basically each time it process 4 entries */\n            uint16_t  colCnt = ch_im_in * dim_kernel_x * dim_kernel_y >> 2;\n\n            while (colCnt)\n            {\n\n                q31_t     inA1, inA2;\n                q31_t     inB1, inB2;\n\n                pA = (const q7_t *)read_and_pad_reordered((void *)pA, &inA1, &inA2);\n\n                inB1 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA1, inB1, sum);\n                inB2 = *__SIMD32(pB)++;\n                sum = __SMLAD(inA2, inB2, sum);\n\n                colCnt--;\n            }\n            colCnt = (ch_im_in * dim_kernel_y * dim_kernel_x) & 0x3;\n            while (colCnt)\n            {\n                q7_t      inA1 = *pA++;\n                q15_t     inB1 = *pB++;\n                sum += inA1 * inB1;\n                colCnt--;\n            }\n            *pOut = (q7_t) __SSAT((sum >> out_shift), 8);\n            pOut++;\n\n        }\n\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    int       i, j, k, l, m, n;\n    int       conv_out;\n    int       in_row, in_col;\n\n    if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0)\n    {\n        /* check if the input dimension meets the constraints */\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i = 0; i < ch_im_out; i++)\n    {\n        for (j = 0; j < dim_im_out_y; j++)\n        {\n            for (k = 0; k < dim_im_out_x; k++)\n            {\n                conv_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n                for (m = 0; m < dim_kernel_y; m++)\n                {\n                    for (n = 0; n < dim_kernel_x; n++)\n                    {\n                        /* if-for implementation */\n                        in_row = stride_y * j + m - padding_y;\n                        in_col = stride_x * k + n - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            for (l = 0; l < ch_im_in; l++)\n                            {\n                                conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] *\n                                    wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + (m * dim_kernel_x + n) * ch_im_in + l];      \n                            }\n                        }\n                    }\n                }\n                Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_conv_u8_basic_ver1.c",
    "content": "/*\n * Copyright (C) 2010-2019 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_depthwise_conv_u8_basic_ver1.c\n * Description:  u8 depthwise convolution function\n *\n * $Date:        June, 2019\n * $Revision:    V.0.8.0\n *\n * Target :  Cortex-M cores with DSP extension\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n#include <stdint.h>\n#include <stdio.h>\n\n#define DILATION_X (1)\n#define DILATION_Y (1)\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n/**\n * @brief uint8 depthwise convolution function with asymmetric quantization for even number of channel multiplier\n *        and input channels. Unless specified otherwise, arguments are mandatory. Both square and non-square inputs\n *        are accepted.\n *\n * @param[in]     input     Pointer to input tensor\n * @param[in]     input_x   Width of input tensor\n * @param[in]     input_y   Height of input tensor\n * @param[in]     input_ch  Channels in input tensor\n * @param[in]     kernel    Pointer to kernel weights\n * @param[in]     kernel_x  Width of kernel\n * @param[in]     kernel_y  Height of kernel\n * @param[in]     ch_mult   Number of channel multiplier\n * @param[in]     pad_x     Padding sizes x\n * @param[in]     pad_y     Padding sizes y\n * @param[in]     stride_x  Convolution stride along the width\n * @param[in]     stride_y  Convolution stride along the height\n * @param[in]     dilation_x Dilation along width. Not used and intended for future enhancement.\n * @param[in]     dilation_y Dilation along height. Not used and intended for future enhancement.\n * @param[in]     bias       Pointer to optional bias values. If no bias is\n *                           availble, NULL is expected\n * @param[in]     input_offset  Input tensor zero offset\n * @param[in]     filter_offset Kernel tensor zero offset\n * @param[in]     output_offset Output tensor zero offset\n * @param[in,out] output        Pointer to output tensor\n * @param[in]     output_x  Width of output tensor\n * @param[in]     output_y  Height of output tensor\n * @param[in]     output_activation_min   Minimum value to clamp the output to. Range : {0, 255}\n * @param[in]     output_activation_max   Minimum value to clamp the output to. Range : {0, 255}\n * @param[in]     out_shift  Amount of right-shift for output\n * @param[in]     out_mult   Output multiplier for requantization\n * @return        The function returns one of the following\n *                <code>ARM_MATH_SIZE_MISMATCH</code> - Not supported dimension of tensors\n *                <code>ARM_MATH_SUCCESS</code> - Successful operation\n *                <code>ARM_MATH_ARGUMENT_ERROR</code> - Implementation not available\n *\n * <b> Input constraints</b>\n * ch_mult  is multiple of 2\n * kernel_x is multiple of 2\n *\n */\n\narm_status arm_depthwise_conv_u8_basic_ver1(const uint8_t *input,\n                                            const uint16_t input_x,\n                                            const uint16_t input_y,\n                                            const uint16_t input_ch,\n                                            const uint8_t *kernel,\n                                            const uint16_t kernel_x,\n                                            const uint16_t kernel_y,\n                                            const int16_t ch_mult,\n                                            const int16_t pad_x,\n                                            const int16_t pad_y,\n                                            const int16_t stride_x,\n                                            const int16_t stride_y,\n                                            const int16_t dilation_x,\n                                            const int16_t dilation_y,\n                                            const int32_t *bias,\n                                            const int32_t input_offset,\n                                            const int32_t filter_offset,\n                                            const int32_t output_offset,\n                                            uint8_t *output,\n                                            const uint16_t output_x,\n                                            const uint16_t output_y,\n                                            const int32_t output_activation_min,\n                                            const int32_t output_activation_max,\n                                            const int32_t out_shift,\n                                            const int32_t out_mult)\n{\n    arm_status status = ARM_MATH_SUCCESS;\n #if defined (ARM_MATH_DSP)\n    int i_out = 0;\n    (void)dilation_x;\n    (void)dilation_y;\n\n    const int32_t input_offset_pkd = (input_offset & 0xFFFF) | (input_offset & 0xFFFF) << 16;\n    const int32_t kernel_offset_pkd = (filter_offset & 0xFFFF) | (filter_offset & 0xFFFF) << 16;\n\n    if (0 != ch_mult % 2 || 0 != kernel_x % 2)\n    {\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (int i_out_y = 0; i_out_y < output_y; i_out_y++)\n    {\n        const int16_t base_idx_y = (i_out_y * stride_y) - pad_y;\n        for (int i_out_x = 0; i_out_x < output_x; i_out_x++)\n        {\n            const int16_t base_idx_x = (i_out_x * stride_x) - pad_x;\n            for (int i_input_ch = 0; i_input_ch < input_ch; i_input_ch++)\n            {\n                for (int i_ch_mult = 0; i_ch_mult < ch_mult; i_ch_mult += 2)\n                {\n                    const int idx_out_ch = i_ch_mult + i_input_ch * ch_mult;\n\n                    int32_t acc_0 = 0;\n                    int32_t acc_1 = 0;\n                    if (NULL != bias)\n                    {\n                        acc_0 = bias[idx_out_ch];\n                        acc_1 = bias[idx_out_ch + 1];\n                    }\n\n                    for (int i_ker_y = 0; i_ker_y < kernel_y; i_ker_y++)\n                    {\n                        const int32_t idx_y = base_idx_y + DILATION_Y * i_ker_y;\n                        const int32_t y_in_range = (idx_y >= 0) && (idx_y < input_y);\n\n                        for (int i_ker_x = 0; i_ker_x < kernel_x; i_ker_x += 2)\n                        {\n                            if (1 == y_in_range)\n                            {\n                                const int32_t idx_x = base_idx_x + DILATION_X * i_ker_x;\n                                const int32_t idx_x1 = base_idx_x + DILATION_X * (i_ker_x + 1);\n                                /* Range check for first input */\n                                if (idx_x >= 0 && idx_x < input_x)\n                                {\n                                    const int32_t idx_0 = (idx_y * input_x + idx_x) * input_ch + i_input_ch;\n\n                                    const int32_t ker_idx_0 =\n                                        (i_ker_y * kernel_x + i_ker_x) * (input_ch * ch_mult) + idx_out_ch;\n                                    const int32_t ker_idx_1 = ker_idx_0 + input_ch * ch_mult;\n\n                                    int32_t input_pkd = input[idx_0] | (input[idx_0 + input_ch] << 16);\n                                    int32_t kernel_pkd = kernel[ker_idx_0] | (kernel[ker_idx_1] << 16);\n\n                                    input_pkd = __SADD16(input_pkd, input_offset_pkd);\n                                    kernel_pkd = __SADD16(kernel_pkd, kernel_offset_pkd);\n                                    /* Range check for second input */\n                                    if (idx_x1 >= input_x)\n                                    {\n                                        input_pkd &= 0xFFFF;\n                                    }\n                                    acc_0 = __SMLAD(input_pkd, kernel_pkd, acc_0);\n\n                                    kernel_pkd = kernel[ker_idx_0 + 1] | (kernel[ker_idx_1 + 1] << 16);\n                                    kernel_pkd = __SADD16(kernel_pkd, kernel_offset_pkd);\n                                    acc_1 = __SMLAD(input_pkd, kernel_pkd, acc_1);\n                                }\n                            }\n                        }\n                    }\n\n                    /* Requantize and clamp output to provided range */\n                    acc_0 = arm_nn_divide_by_power_of_two(arm_nn_sat_doubling_high_mult(\n                                                              acc_0 * (1 << LEFT_SHIFT(out_shift)), out_mult),\n                                                          RIGHT_SHIFT(out_shift));\n\n                    acc_0 += output_offset;\n\n                    if (output_activation_min > acc_0)\n                    {\n                        acc_0 = output_activation_min;\n                    }\n\n                    if (acc_0 > output_activation_max)\n                    {\n                        acc_0 = output_activation_max;\n                    }\n                    output[i_out++] = acc_0;\n\n                    /* Requantize and clamp output to provided range */\n                    acc_1 = arm_nn_divide_by_power_of_two(arm_nn_sat_doubling_high_mult(\n                                                              acc_1 * (1 << LEFT_SHIFT(out_shift)), out_mult),\n                                                          RIGHT_SHIFT(out_shift));\n                    acc_1 += output_offset;\n\n                    if (output_activation_min > acc_1)\n                    {\n                        acc_1 = output_activation_min;\n                    }\n\n                    if (acc_1 > output_activation_max)\n                    {\n                        acc_1 = output_activation_max;\n                    }\n                    output[i_out++] = acc_1;\n                }\n            }\n        }\n    }\n#else\n    /* No available implementation. */\n    status = ARM_MATH_ARGUMENT_ERROR;\n#endif\n    return status;\n}\n\n/**\n * @} end of NNConv group\n */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_depthwise_separable_conv_HWC_q7.c\n * Description:  Q7 depthwise separable convolution function\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n/**\n * @brief Q7 depthwise separable convolution function\n * @param[in]       Im_in       pointer to input tensor\n * @param[in]       dim_im_in   input tensor dimention\n * @param[in]       ch_im_in    number of input tensor channels\n * @param[in]       wt          pointer to kernel weights\n * @param[in]       ch_im_out   number of filters, i.e., output tensor channels\n * @param[in]       dim_kernel  filter kernel size\n * @param[in]       padding     padding sizes\n * @param[in]       stride      convolution stride\n * @param[in]       bias        pointer to bias\n * @param[in]       bias_shift  amount of left-shift for bias\n * @param[in]       out_shift   amount of right-shift for output\n * @param[in,out]   Im_out      pointer to output tensor\n * @param[in]       dim_im_out  output tensor dimension\n * @param[in,out]   bufferA     pointer to buffer space for input\n * @param[in,out]   bufferB     pointer to buffer space for output\n * @return     The function returns either\n * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n *\n * @details\n *\n * <b>Buffer size:</b>\n *\n * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel\n *\n * bufferB size: 0\n *\n * <b>Input dimension constraints:</b>\n *\n * ch_im_in equals ch_im_out\n *\n * Implementation:\n * There are 3 nested loop here:\n * Inner loop: calculate each output value with MAC instruction over an accumulator\n * Mid   loop: loop over different output channel\n * Outer loop: loop over different output (x, y)\n */\n\narm_status arm_depthwise_separable_conv_HWC_q7(const q7_t * Im_in,\n                                               const uint16_t dim_im_in,\n                                               const uint16_t ch_im_in,\n                                               const q7_t * wt,\n                                               const uint16_t ch_im_out,\n                                               const uint16_t dim_kernel,\n                                               const uint16_t padding,\n                                               const uint16_t stride,\n                                               const q7_t * bias,\n                                               const uint16_t bias_shift,\n                                               const uint16_t out_shift,\n                                               q7_t * Im_out, \n                                               const uint16_t dim_im_out, \n                                               q15_t * bufferA, \n                                               q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_out_y, i_out_x;\n    int16_t   i_ker_y, i_ker_x;\n    q7_t     *colBuffer = (q7_t *) bufferA;\n    q7_t     *pBuffer = colBuffer;\n    const q7_t *pBias = bias;\n    q7_t     *pOut = Im_out;\n    uint16_t  rowCnt;\n    uint16_t  row_shift;\n\n    /* do some checking here, basically ch_im_in == ch_im_out */\n    if (ch_im_in != ch_im_out)\n    {\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            /* we first do im2col here */\n            for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in)\n                    {\n                        /* arm_fill_q7(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, ch_im_in);\n                    } else\n                    {\n                        /* arm_copy_q7((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */\n                        memcpy(pBuffer, (q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            /* we will do the computation here for each channel */\n            rowCnt = ch_im_out >> 2;\n            row_shift = 0;\n            pBias = bias;\n\n            while (rowCnt)\n            {\n                q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n                uint16_t  colCnt = (dim_kernel * dim_kernel) >> 1;\n                q7_t     *pB = colBuffer + row_shift;\n                const q7_t *pA = wt + row_shift;\n                row_shift += 4;\n\n#ifdef USE_INTRINSIC\n\n#ifndef ARM_MATH_BIG_ENDIAN\n\n                while (colCnt)\n                {\n                    q31_t     inA1, inA2, inB1, inB2, opA, opB;\n\n                    inB1 = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    opB = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    inB2 = __PKHTB(opB, inB1, 16);\n                    inB1 = __PKHBT(inB1, opB, 16);\n                    inA1 = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    opB = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    inA2 = __PKHTB(opB, inA1, 16);\n                    inA1 = __PKHBT(inA1, opB, 16);\n                    opA = __SXTB16(inA1);\n                    opB = __SXTB16(inB1);\n                    sum = __SMLAD(opA, opB, sum);\n                    opA = __SXTB16(__ROR(inA1, 8));\n                    opB = __SXTB16(__ROR(inB1, 8));\n                    sum2 = __SMLAD(opA, opB, sum2);\n                    opA = __SXTB16(inA2);\n                    opB = __SXTB16(inB2);\n                    sum3 = __SMLAD(opA, opB, sum3);\n                    opA = __SXTB16(__ROR(inA2, 8));\n                    opB = __SXTB16(__ROR(inB2, 8));\n                    sum4 = __SMLAD(opA, opB, sum4);\n                    colCnt--;\n                }\n#else\n\n                while (colCnt)\n                {\n                    q31_t     inA1, inA2, inB1, inB2, opA, opB;\n\n                    inB1 = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    opB = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    inB2 = __PKHBT(opB, inB1, 16);\n                    inB1 = __PKHTB(inB1, opB, 16);\n                    inA1 = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    opB = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    inA2 = __PKHBT(opB, inA1, 16);\n                    inA1 = __PKHTB(inA1, opB, 16);\n                    opA = __SXTB16(inA1);\n                    opB = __SXTB16(inB1);\n                    sum2 = __SMLAD(opA, opB, sum2);\n                    opA = __SXTB16(__ROR(inA1, 8));\n                    opB = __SXTB16(__ROR(inB1, 8));\n                    sum = __SMLAD(opA, opB, sum);\n                    opA = __SXTB16(inA2);\n                    opB = __SXTB16(inB2);\n                    sum4 = __SMLAD(opA, opB, sum4);\n                    opA = __SXTB16(__ROR(inA2, 8));\n                    opB = __SXTB16(__ROR(inB2, 8));\n                    sum3 = __SMLAD(opA, opB, sum3);\n                    colCnt--;\n                }\n\n#endif                          /* ARM_MATH_BIG_ENDIAN */\n\n#else\n\n#ifndef ARM_MATH_BIG_ENDIAN\n                /*\n                 *   r0    r1    r2    r3    r4   r5\n                 *  inA1, inA2, inB1, inB2, opA, opB\n                 */\n\n                asm volatile (\"COL_LOOP_%=:\\n\"\n                              \"ldr.w r2, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"pkhtb r3, r5, r2, ASR #16\\n\"\n                              \"pkhbt r2, r2, r5, LSL #16\\n\"\n                              \"ldr.w r0, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"pkhtb r1, r5, r0, ASR #16\\n\"\n                              \"pkhbt r0, r0, r5, LSL #16\\n\"\n                              \"sxtb16 r4, r0\\n\"\n                              \"sxtb16 r5, r2\\n\"\n                              \"smlad %[sum], r4, r5, %[sum]\\n\"\n                              \"mov.w r4, r0, ror #8\\n\"\n                              \"mov.w r5, r2, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum2], r4, r5, %[sum2]\\n\"\n                              \"sxtb16 r4, r1\\n\"\n                              \"sxtb16 r5, r3\\n\"\n                              \"smlad %[sum3], r4, r5, %[sum3]\\n\"\n                              \"mov.w r4, r1, ror #8\\n\"\n                              \"mov.w r5, r3, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum4], r4, r5, %[sum4]\\n\"\n                              \"subs %[colCnt], #1\\n\"\n                              \"bne COL_LOOP_%=\\n\":[sum]\n                              \"+r\"(sum),[sum2] \"+r\"(sum2),\n                              [sum3] \"+r\"(sum3),\n                              [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),\n                              [pA] \"+r\"(pA):[colCnt]\n                              \"r\"(colCnt),[ch_im_in] \"r\"(ch_im_in):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\", \"r5\");\n#else\n                /*\n                 *  r0    r1    r2    r3    r4   r5\n                 * inA1, inA2, inB1, inB2, opA, opB\n                 */\n                asm volatile (\"COL_LOOP_%=:\\n\"\n                              \"ldr.w r2, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"pkhbt r3, r5, r2, LSL #16\\n\"\n                              \"pkhtb r2, r2, r5, ASR #16\\n\"\n                              \"ldr.w r0, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"pkhbt r1, r5, r0, LSL #16\\n\"\n                              \"pkhtb r0, r0, r5, ASR #16\\n\"\n                              \"sxtb16 r4, r0\\n\"\n                              \"sxtb16 r5, r2\\n\"\n                              \"smlad %[sum2], r4, r5, %[sum2]\\n\"\n                              \"mov.w r4, r0, ror #8\\n\"\n                              \"mov.w r5, r2, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum], r4, r5, %[sum]\\n\"\n                              \"sxtb16 r4, r1\\n\"\n                              \"sxtb16 r5, r3\\n\"\n                              \"smlad %[sum4], r4, r5, %[sum4]\\n\"\n                              \"mov.w r4, r1, ror #8\\n\"\n                              \"mov.w r5, r3, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum3], r4, r5, %[sum3]\\n\"\n                              \"subs %[colCnt], #1\\n\"\n                              \"bne COL_LOOP_%=\\n\":[sum]\n                              \"+r\"(sum),[sum2] \"+r\"(sum2),\n                              [sum3] \"+r\"(sum3),\n                              [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),\n                              [pA] \"+r\"(pA):[colCnt]\n                              \"r\"(colCnt),[ch_im_in] \"r\"(ch_im_in):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\", \"r5\");\n\n#endif                          /* ARM_MATH_BIG_ENDIAN */\n\n#endif                          /* USE_INTRINSIC */\n\n                colCnt = (dim_kernel * dim_kernel) & 0x1;\n                while (colCnt)\n                {\n                    union arm_nnword inA, inB;\n                    inA.word = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    inB.word = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    sum += inA.bytes[0] * inB.bytes[0];\n                    sum2 += inA.bytes[1] * inB.bytes[1];\n                    sum3 += inA.bytes[2] * inB.bytes[2];\n                    sum4 += inA.bytes[3] * inB.bytes[3];\n                    colCnt--;\n                }\n\n                *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n                *pOut++ = (q7_t) __SSAT((sum2 >> out_shift), 8);\n                *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8);\n                *pOut++ = (q7_t) __SSAT((sum4 >> out_shift), 8);\n\n                rowCnt--;\n            }\n\n            rowCnt = ch_im_out & 0x3;\n            while (rowCnt)\n            {\n                q7_t     *pB = colBuffer + row_shift;\n                const q7_t *pA = wt + row_shift;\n                q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                uint16_t  colCnt = (dim_kernel * dim_kernel);\n\n                row_shift += 1;\n\n                while (colCnt)\n                {\n                    q7_t      A1 = *pA;\n                    q7_t      B1 = *pB;\n                    pA += ch_im_in;\n                    pB += ch_im_in;\n                    sum += A1 * B1;\n\n                    colCnt--;\n                }\n                *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n                rowCnt--;\n            }\n\n            /* clear counter and pointers */\n            pBuffer = colBuffer;\n        }\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    int       i_out_y, i_out_x, i_ch_out, i_ker_x, i_ker_y;\n    int       conv_out;\n\n    /* do some checking here, basically ch_im_in == ch_im_out */\n    if (ch_im_in != ch_im_out)\n    {\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++)\n        {\n            for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++)\n            {\n                // for each output\n                conv_out = ((q31_t)(bias[i_ch_out]) << bias_shift) + NN_ROUND(out_shift);\n                for (i_ker_y = 0; i_ker_y < dim_kernel; i_ker_y++)\n                {\n                    for (i_ker_x = 0; i_ker_x < dim_kernel; i_ker_x++)\n                    {\n                        int       in_row = stride * i_out_y + i_ker_y - padding;\n                        int       in_col = stride * i_out_x + i_ker_x - padding;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in)\n                        {\n                            conv_out +=\n                                Im_in[(in_row *\n                                       dim_im_in +\n                                       in_col) *\n                                      ch_im_in +\n                                      i_ch_out] * wt[(i_ker_y * dim_kernel + i_ker_x) * ch_im_out + i_ch_out];\n                        }\n                    }\n                }\n                Im_out[(i_out_y * dim_im_out +\n                        i_out_x) * ch_im_out + i_ch_out] = (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_depthwise_separable_conv_HWC_q7_nonsquare.c\n * Description:  Q7 depthwise separable convolution function (non-square shape)\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup NNConv\n * @{\n */\n\n/**\n * @brief Q7 depthwise separable convolution function (non-square shape)\n * @param[in]       Im_in         pointer to input tensor\n * @param[in]       dim_im_in_x   input tensor dimention x\n * @param[in]       dim_im_in_y   input tensor dimention y\n * @param[in]       ch_im_in      number of input tensor channels\n * @param[in]       wt            pointer to kernel weights\n * @param[in]       ch_im_out     number of filters, i.e., output tensor channels\n * @param[in]       dim_kernel_x  filter kernel size x\n * @param[in]       dim_kernel_y  filter kernel size y\n * @param[in]       padding_x     padding sizes x\n * @param[in]       padding_y     padding sizes y\n * @param[in]       stride_x      convolution stride x\n * @param[in]       stride_y      convolution stride y\n * @param[in]       bias          pointer to bias\n * @param[in]       bias_shift    amount of left-shift for bias\n * @param[in]       out_shift     amount of right-shift for output\n * @param[in,out]   Im_out        pointer to output tensor\n * @param[in]       dim_im_out_x  output tensor dimension x\n * @param[in]       dim_im_out_y  output tensor dimension y\n * @param[in,out]   bufferA       pointer to buffer space for input \n * @param[in,out]   bufferB       pointer to buffer space for output\n * @return     The function returns either\n * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n *\n * This function is the version with full list of optimization tricks, but with\n * some contraints:\n *   ch_im_in is multiple of 2\n *   ch_im_out is multiple of 2\n */\n\narm_status arm_depthwise_separable_conv_HWC_q7_nonsquare(const q7_t * Im_in,\n                                                         const uint16_t dim_im_in_x,\n                                                         const uint16_t dim_im_in_y,\n                                                         const uint16_t ch_im_in,\n                                                         const q7_t * wt,\n                                                         const uint16_t ch_im_out,\n                                                         const uint16_t dim_kernel_x,\n                                                         const uint16_t dim_kernel_y,\n                                                         const uint16_t padding_x,\n                                                         const uint16_t padding_y,\n                                                         const uint16_t stride_x,\n                                                         const uint16_t stride_y,\n                                                         const q7_t * bias,\n                                                         const uint16_t bias_shift,\n                                                         const uint16_t out_shift,\n                                                         q7_t * Im_out,\n                                                         const uint16_t dim_im_out_x,\n                                                         const uint16_t dim_im_out_y, \n                                                         q15_t * bufferA, \n                                                         q7_t * bufferB)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n/*\n * Implementation:\n * There are 3 nested loop here:\n * Inner loop: calculate each output value with MAC instruction over an accumulator\n * Mid   loop: loop over different output channel\n * Outer loop: loop over different output (x, y)\n *\n */\n\n    int16_t   i_out_y, i_out_x;\n    int16_t   i_ker_y, i_ker_x;\n    q7_t     *colBuffer = (q7_t *) bufferA;\n    q7_t     *pBuffer = colBuffer;\n    const q7_t *pBias = bias;\n    q7_t     *pOut = Im_out;\n    uint16_t  rowCnt;\n    uint16_t  row_shift;\n\n    /* do some checking here, basically ch_im_in == ch_im_out */\n    if (ch_im_in != ch_im_out)\n    {\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            /* we first do im2col here */\n            for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y;\n                 i_ker_y++)\n            {\n                for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x;\n                     i_ker_x++)\n                {\n                    if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x)\n                    {\n                        /* arm_fill_q7(0, pBuffer, ch_im_in); */\n                        memset(pBuffer, 0, ch_im_in);\n                    } else\n                    {\n                        /* arm_copy_q7((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */\n                        memcpy(pBuffer, (q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, ch_im_in);\n                    }\n                    pBuffer += ch_im_in;\n                }\n            }\n\n            /* we will do the computation here for each channel */\n            rowCnt = ch_im_out >> 2;\n            row_shift = 0;\n            pBias = bias;\n\n            while (rowCnt)\n            {\n                q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n                uint16_t  colCnt = (dim_kernel_x * dim_kernel_y) >> 1;\n                q7_t     *pB = colBuffer + row_shift;\n                const q7_t *pA = wt + row_shift;\n                row_shift += 4;\n\n#ifdef USE_INTRINSIC\n\n#ifndef ARM_MATH_BIG_ENDIAN\n\n                while (colCnt)\n                {\n                    q31_t     inA1, inA2, inB1, inB2, opA, opB;\n\n                    inB1 = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    opB = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    inB2 = __PKHTB(opB, inB1, 16);\n                    inB1 = __PKHBT(inB1, opB, 16);\n                    inA1 = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    opB = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    inA2 = __PKHTB(opB, inA1, 16);\n                    inA1 = __PKHBT(inA1, opB, 16);\n                    opA = __SXTB16(inA1);\n                    opB = __SXTB16(inB1);\n                    sum = __SMLAD(opA, opB, sum);\n                    opA = __SXTB16(__ROR(inA1, 8));\n                    opB = __SXTB16(__ROR(inB1, 8));\n                    sum2 = __SMLAD(opA, opB, sum2);\n                    opA = __SXTB16(inA2);\n                    opB = __SXTB16(inB2);\n                    sum3 = __SMLAD(opA, opB, sum3);\n                    opA = __SXTB16(__ROR(inA2, 8));\n                    opB = __SXTB16(__ROR(inB2, 8));\n                    sum4 = __SMLAD(opA, opB, sum4);\n                    colCnt--;\n                }\n#else\n\n                while (colCnt)\n                {\n                    q31_t     inA1, inA2, inB1, inB2, opA, opB;\n\n                    inB1 = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    opB = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    inB2 = __PKHBT(opB, inB1, 16);\n                    inB1 = __PKHTB(inB1, opB, 16);\n                    inA1 = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    opB = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    inA2 = __PKHBT(opB, inA1, 16);\n                    inA1 = __PKHTB(inA1, opB, 16);\n                    opA = __SXTB16(inA1);\n                    opB = __SXTB16(inB1);\n                    sum2 = __SMLAD(opA, opB, sum2);\n                    opA = __SXTB16(__ROR(inA1, 8));\n                    opB = __SXTB16(__ROR(inB1, 8));\n                    sum = __SMLAD(opA, opB, sum);\n                    opA = __SXTB16(inA2);\n                    opB = __SXTB16(inB2);\n                    sum4 = __SMLAD(opA, opB, sum4);\n                    opA = __SXTB16(__ROR(inA2, 8));\n                    opB = __SXTB16(__ROR(inB2, 8));\n                    sum3 = __SMLAD(opA, opB, sum3);\n                    colCnt--;\n                }\n\n#endif                          /* ARM_MATH_BIG_ENDIAN */\n\n#else\n\n#ifndef ARM_MATH_BIG_ENDIAN\n                //  r0    r1    r2    r3    r4   r5\n                // inA1, inA2, inB1, inB2, opA, opB\n                asm volatile (\"COL_LOOP:\\n\"\n                              \"ldr.w r2, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"pkhtb r3, r5, r2, ASR #16\\n\"\n                              \"pkhbt r2, r2, r5, LSL #16\\n\"\n                              \"ldr.w r0, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"pkhtb r1, r5, r0, ASR #16\\n\"\n                              \"pkhbt r0, r0, r5, LSL #16\\n\"\n                              \"sxtb16 r4, r0\\n\"\n                              \"sxtb16 r5, r2\\n\"\n                              \"smlad %[sum], r4, r5, %[sum]\\n\"\n                              \"mov.w r4, r0, ror #8\\n\"\n                              \"mov.w r5, r2, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum2], r4, r5, %[sum2]\\n\"\n                              \"sxtb16 r4, r1\\n\"\n                              \"sxtb16 r5, r3\\n\"\n                              \"smlad %[sum3], r4, r5, %[sum3]\\n\"\n                              \"mov.w r4, r1, ror #8\\n\"\n                              \"mov.w r5, r3, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum4], r4, r5, %[sum4]\\n\"\n                              \"subs %[colCnt], #1\\n\"\n                              \"bne COL_LOOP\\n\":[sum] \"+r\"(sum),[sum2] \"+r\"(sum2),[sum3] \"+r\"(sum3),\n                              [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),[pA] \"+r\"(pA):[colCnt] \"r\"(colCnt),\n                              [ch_im_in] \"r\"(ch_im_in):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\", \"r5\");\n#else\n                //  r0    r1    r2    r3    r4   r5\n                // inA1, inA2, inB1, inB2, opA, opB\n                asm volatile (\"COL_LOOP:\\n\"\n                              \"ldr.w r2, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pB], #0]\\n\"\n                              \"add.w %[pB], %[pB], %[ch_im_in]\\n\"\n                              \"pkhbt r3, r5, r2, LSL #16\\n\"\n                              \"pkhtb r2, r2, r5, ASR #16\\n\"\n                              \"ldr.w r0, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"ldr.w r5, [%[pA], #0]\\n\"\n                              \"add.w %[pA], %[pA], %[ch_im_in]\\n\"\n                              \"pkhbt r1, r5, r0, LSL #16\\n\"\n                              \"pkhtb r0, r0, r5, ASR #16\\n\"\n                              \"sxtb16 r4, r0\\n\"\n                              \"sxtb16 r5, r2\\n\"\n                              \"smlad %[sum2], r4, r5, %[sum2]\\n\"\n                              \"mov.w r4, r0, ror #8\\n\"\n                              \"mov.w r5, r2, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum], r4, r5, %[sum]\\n\"\n                              \"sxtb16 r4, r1\\n\"\n                              \"sxtb16 r5, r3\\n\"\n                              \"smlad %[sum4], r4, r5, %[sum4]\\n\"\n                              \"mov.w r4, r1, ror #8\\n\"\n                              \"mov.w r5, r3, ror #8\\n\"\n                              \"sxtb16 r4, r4\\n\"\n                              \"sxtb16 r5, r5\\n\"\n                              \"smlad %[sum3], r4, r5, %[sum3]\\n\"\n                              \"subs %[colCnt], #1\\n\"\n                              \"bne COL_LOOP\\n\":[sum] \"+r\"(sum),[sum2] \"+r\"(sum2),[sum3] \"+r\"(sum3),\n                              [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),[pA] \"+r\"(pA):[colCnt] \"r\"(colCnt),\n                              [ch_im_in] \"r\"(ch_im_in):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\", \"r5\");\n#endif                          /*ARM_MATH_BIG_ENDIAN */\n\n#endif                          /* USE_INTRINSIC */\n\n                colCnt = (dim_kernel_x * dim_kernel_y) & 0x1;\n                while (colCnt)\n                {\n                    union arm_nnword inA, inB;\n                    inA.word = *__SIMD32(pA);\n                    pA += ch_im_in;\n                    inB.word = *__SIMD32(pB);\n                    pB += ch_im_in;\n                    sum += inA.bytes[0] * inB.bytes[0];\n                    sum2 += inA.bytes[1] * inB.bytes[1];\n                    sum3 += inA.bytes[2] * inB.bytes[2];\n                    sum4 += inA.bytes[3] * inB.bytes[3];\n                    colCnt--;\n                }\n\n                *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n                *pOut++ = (q7_t) __SSAT((sum2 >> out_shift), 8);\n                *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8);\n                *pOut++ = (q7_t) __SSAT((sum4 >> out_shift), 8);\n\n                rowCnt--;\n            }\n\n            rowCnt = ch_im_out & 0x3;\n            while (rowCnt)\n            {\n                q7_t     *pB = colBuffer + row_shift;\n                const q7_t *pA = wt + row_shift;\n                q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n                uint16_t  colCnt = (dim_kernel_x * dim_kernel_y);\n\n                row_shift += 1;\n\n                while (colCnt)\n                {\n                    q7_t      A1 = *pA;\n                    q7_t      B1 = *pB;\n                    pA += ch_im_in;\n                    pB += ch_im_in;\n                    sum += A1 * B1;\n\n                    colCnt--;\n                }\n                *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n                rowCnt--;\n            }\n\n            // clear counter and pointers\n            pBuffer = colBuffer;\n        }\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    int       i_out_y, i_out_x, i_ch_out;\n    int       i_ker_y, i_ker_x; \n\n    /* do some checking here, basically ch_im_in == ch_im_out */\n    if (ch_im_in != ch_im_out)\n    {\n        return ARM_MATH_SIZE_MISMATCH;\n    }\n\n    for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++)\n    {\n        for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++)\n        {\n            for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++)\n            {\n                // for each output \n                int       conv_out = ((q31_t)(bias[i_ch_out]) << bias_shift) + NN_ROUND(out_shift);\n                for (i_ker_y = 0; i_ker_y < dim_kernel_y; i_ker_y++)\n                {\n                    for (i_ker_x = 0; i_ker_x < dim_kernel_x; i_ker_x++)\n                    {\n                        int       in_row = stride_y * i_out_y + i_ker_y - padding_y;\n                        int       in_col = stride_x * i_out_x + i_ker_x - padding_x;\n                        if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x)\n                        {\n                            conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + i_ch_out] *                        \n                                wt[(i_ker_y * dim_kernel_x + i_ker_x) * ch_im_out + i_ch_out];\n                        }\n                    }\n                }\n                Im_out[(i_out_y * dim_im_out_x + i_out_x) * ch_im_out + i_ch_out] =\n                    (q7_t) __SSAT((conv_out >> out_shift), 8);\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n\n    /* Return to application */\n    return ARM_MATH_SUCCESS;\n\n}\n\n/**\n * @} end of NNConv group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nn_mat_mult_kernel_q7_q15.c\n * Description:  Matrix-multiplication function for convolution\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n  /**\n   * @brief Matrix-multiplication function for convolution\n   * @param[in]       pA          pointer to operand A\n   * @param[in]       pInBuffer   pointer to operand B, always conssists of 2 vectors\n   * @param[in]       ch_im_out   numRow of A\n   * @param[in]       numCol_A    numCol of A\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        the bias\n   * @param[in,out]   pOut        pointer to output\n   * @return     The function returns the incremented output pointer\n   *\n   * @details\n   *\n   * This function does the matrix multiplication with weight matrix\n   * and 2 columns from im2col. \n   */\n\nq7_t     *arm_nn_mat_mult_kernel_q7_q15(const q7_t * pA,\n                                        const q15_t * pInBuffer,\n                                        const uint16_t ch_im_out,\n                                        const uint16_t numCol_A,\n                                        const uint16_t bias_shift,\n                                        const uint16_t out_shift, \n                                        const q7_t * bias, \n                                        q7_t * pOut)\n{\n#if defined (ARM_MATH_DSP)\n    /* set up the second output pointers */\n    q7_t     *pOut2 = pOut + ch_im_out;\n    const q7_t *pBias = bias;\n\n    uint16_t  rowCnt = ch_im_out >> 1;\n    /* this loop over rows in A */\n    while (rowCnt)\n    {\n        /* setup pointers for B */\n        const q15_t *pB = pInBuffer;\n        const q15_t *pB2 = pB + numCol_A;\n\n        /* align the second pointer for A */\n        const q7_t *pA2 = pA + numCol_A;\n\n        /* init the sum with bias */\n        q31_t     sum =  ((q31_t)(*pBias) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum3 = ((q31_t)(*pBias) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = numCol_A >> 2;\n        /* accumulate over the vector */\n        while (colCnt)\n        {\n            q31_t     inA11, inA12, inA21, inA22;\n            q31_t     inB1 = *__SIMD32(pB)++;\n            q31_t     inB2 = *__SIMD32(pB2)++;\n\n            pA = (q7_t *) read_and_pad((void *)pA, &inA11, &inA12);\n            pA2 = (q7_t *) read_and_pad((void *)pA2, &inA21, &inA22);\n\n            sum = __SMLAD(inA11, inB1, sum);\n            sum2 = __SMLAD(inA11, inB2, sum2);\n            sum3 = __SMLAD(inA21, inB1, sum3);\n            sum4 = __SMLAD(inA21, inB2, sum4);\n\n            inB1 = *__SIMD32(pB)++;\n            inB2 = *__SIMD32(pB2)++;\n\n            sum = __SMLAD(inA12, inB1, sum);\n            sum2 = __SMLAD(inA12, inB2, sum2);\n            sum3 = __SMLAD(inA22, inB1, sum3);\n            sum4 = __SMLAD(inA22, inB2, sum4);\n\n            colCnt--;\n        }                       /* while over colCnt */\n        colCnt = numCol_A & 0x3;\n        while (colCnt)\n        {\n            q7_t      inA1 = *pA++;\n            q15_t     inB1 = *pB++;\n            q7_t      inA2 = *pA2++;\n            q15_t     inB2 = *pB2++;\n\n            sum += inA1 * inB1;\n            sum2 += inA1 * inB2;\n            sum3 += inA2 * inB1;\n            sum4 += inA2 * inB2;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8);\n        *pOut2++ = (q7_t) __SSAT((sum2 >> out_shift), 8);\n        *pOut2++ = (q7_t) __SSAT((sum4 >> out_shift), 8);\n\n        /* skip the row computed with A2 */\n        pA += numCol_A;\n        rowCnt--;\n    }                           /* for over ch_im_out */\n\n    /* compute left-over row if any */\n    if (ch_im_out & 0x1)\n    {\n        /* setup pointers for B */\n        const q15_t *pB = pInBuffer;\n        const q15_t *pB2 = pB + numCol_A;\n\n        /* load the bias */\n        q31_t     sum = ((q31_t)(*pBias) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = numCol_A >> 2;\n        while (colCnt)\n        {\n            q31_t     inA11, inA12;\n            q31_t     inB1 = *__SIMD32(pB)++;\n            q31_t     inB2 = *__SIMD32(pB2)++;\n\n            pA = (q7_t *) read_and_pad((void *)pA, &inA11, &inA12);\n\n            sum = __SMLAD(inA11, inB1, sum);\n            sum2 = __SMLAD(inA11, inB2, sum2);\n\n            inB1 = *__SIMD32(pB)++;\n            inB2 = *__SIMD32(pB2)++;\n            sum = __SMLAD(inA12, inB1, sum);\n            sum2 = __SMLAD(inA12, inB2, sum2);\n\n            colCnt--;\n        }\n        colCnt = numCol_A & 0x3;\n        while (colCnt)\n        {\n            q7_t      inA1 = *pA++;\n            q15_t     inB1 = *pB++;\n            q15_t     inB2 = *pB2++;\n\n            sum += inA1 * inB1;\n            sum2 += inA1 * inB2;\n            colCnt--;\n        }\n\n        *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        *pOut2++ = (q7_t) __SSAT((sum2 >> out_shift), 8);\n    }\n\n    pOut += ch_im_out;\n\n    /* return the new output pointer with offset */\n    return pOut;\n#else\n    /* To be completed */\n    return NULL;\n#endif                          /* ARM_MATH_DSP */\n\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nn_mat_mult_kernel_q7_q15_reordered.c\n * Description:  Matrix-multiplication function for convolution with reordered columns\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n * -------------------------------------------------------------------- */\n\n#include \"arm_nnfunctions.h\"\n#include \"arm_math.h\"\n\n  /**\n   * @brief Matrix-multiplication function for convolution with reordered columns\n   * @param[in]       pA          pointer to operand A\n   * @param[in]       pInBuffer   pointer to operand B, always conssists of 2 vectors\n   * @param[in]       ch_im_out   numRow of A\n   * @param[in]       numCol_A    numCol of A\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        the bias\n   * @param[in,out]   pOut        pointer to output\n   * @return     The function returns the incremented output pointer\n   *\n   * @details\n   *\n   * This function assumes that data in pInBuffer are reordered\n   */\n\nq7_t     *arm_nn_mat_mult_kernel_q7_q15_reordered(const q7_t * pA,\n                                                  const q15_t * pInBuffer,\n                                                  const uint16_t ch_im_out,\n                                                  const uint16_t numCol_A,\n                                                  const uint16_t bias_shift,\n                                                  const uint16_t out_shift, \n                                                  const q7_t * bias, \n                                                  q7_t * pOut)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* set up the second output pointers */\n    q7_t     *pOut2 = pOut + ch_im_out;\n    int       i;\n\n    /* this loop over rows in A */\n    for (i = 0; i < ch_im_out; i += 2)\n    {\n        /* setup pointers for B */\n        const q15_t *pB = pInBuffer;\n        const q15_t *pB2 = pB + numCol_A;\n\n        /* align the second pointer for A */\n        const q7_t *pA2 = pA + numCol_A;\n\n        /* init the sum with bias */\n        q31_t     sum =  ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum3 = ((q31_t)(bias[i + 1]) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum4 = ((q31_t)(bias[i + 1]) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = numCol_A >> 2;\n        /* accumulate over the vector */\n        while (colCnt)\n        {\n            q31_t     inA11, inA12, inA21, inA22;\n            q31_t     inB1 = *__SIMD32(pB)++;\n            q31_t     inB2 = *__SIMD32(pB2)++;\n\n            pA = (q7_t *) read_and_pad_reordered((void *)pA, &inA11, &inA12);\n            pA2 = (q7_t *) read_and_pad_reordered((void *)pA2, &inA21, &inA22);\n\n            sum = __SMLAD(inA11, inB1, sum);\n            sum2 = __SMLAD(inA11, inB2, sum2);\n            sum3 = __SMLAD(inA21, inB1, sum3);\n            sum4 = __SMLAD(inA21, inB2, sum4);\n\n            inB1 = *__SIMD32(pB)++;\n            inB2 = *__SIMD32(pB2)++;\n\n            sum = __SMLAD(inA12, inB1, sum);\n            sum2 = __SMLAD(inA12, inB2, sum2);\n            sum3 = __SMLAD(inA22, inB1, sum3);\n            sum4 = __SMLAD(inA22, inB2, sum4);\n\n            colCnt--;\n        }                       /* while over colCnt */\n        colCnt = numCol_A & 0x3;\n        while (colCnt)\n        {\n            q7_t      inA1 = *pA++;\n            q15_t     inB1 = *pB++;\n            q7_t      inA2 = *pA2++;\n            q15_t     inB2 = *pB2++;\n\n            sum += inA1 * inB1;\n            sum2 += inA1 * inB2;\n            sum3 += inA2 * inB1;\n            sum4 += inA2 * inB2;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8);\n        *pOut2++ = (q7_t) __SSAT((sum2 >> out_shift), 8);\n        *pOut2++ = (q7_t) __SSAT((sum4 >> out_shift), 8);\n\n        /* skip the row computed with A2 */\n        pA += numCol_A;\n    }                           /* for over ch_im_out */\n\n    pOut += ch_im_out;\n\n    /* return the new output pointer with offset */\n    return pOut;\n#else\n    /* To be completed */\n    return NULL;\n#endif                          /* ARM_MATH_DSP */\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_fully_connected_mat_q7_vec_q15.c\n * Description:  Mixed Q15-Q7 fully-connected layer function\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup FC\n * @{\n */\n\n  /**\n   * @brief Mixed Q15-Q7 fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * vec_buffer size: 0\n   *\n   *  Q7_Q15 version of the fully connected layer\n   *\n   *  Weights are in q7_t and Activations are in q15_t\n   *\n   */\n\narm_status\narm_fully_connected_mat_q7_vec_q15(const q15_t * pV,\n                                   const q7_t * pM,\n                                   const uint16_t dim_vec,\n                                   const uint16_t num_of_rows,\n                                   const uint16_t bias_shift,\n                                   const uint16_t out_shift, \n                                   const q7_t * bias, \n                                   q15_t * pOut, \n                                   q15_t * vec_buffer)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    const q7_t *pB = pM;\n    const q7_t *pB2;\n    q15_t    *pO = pOut;\n    const q7_t *pBias = bias;\n    const q15_t *pA = pV;\n\n    uint16_t  rowCnt = num_of_rows >> 1;\n\n    while (rowCnt)\n    {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = pV;\n        pB2 = pB + dim_vec;\n\n        while (colCnt)\n        {\n            q31_t     inV, inM11, inM12, inM21, inM22;\n            pB = (q7_t *) read_and_pad((void *)pB, &inM11, &inM12);\n            pB2 = (q7_t *) read_and_pad((void *)pB2, &inM21, &inM22);\n\n            inV = *__SIMD32(pA)++;\n\n            sum = __SMLAD(inV, inM11, sum);\n            sum2 = __SMLAD(inV, inM21, sum2);\n\n            inV = *__SIMD32(pA)++;\n\n            sum = __SMLAD(inV, inM12, sum);\n            sum2 = __SMLAD(inV, inM22, sum2);\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q7_t      inM = *pB++;\n            q7_t      inM2 = *pB2++;\n\n            sum += inV * inM;\n            sum2 += inV * inM2;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum2 >> out_shift), 16));\n\n        /*adjust the pointers and counters */\n        pB += dim_vec;\n        rowCnt--;\n    }\n\n    /* left-over part of the rows */\n    rowCnt = num_of_rows & 0x1;\n\n    while (rowCnt)\n    {\n        q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = pV;\n\n        while (colCnt)\n        {\n            q31_t     inV1, inV2, inM11, inM12;\n\n            pB = (q7_t *) read_and_pad((void *)pB, &inM11, &inM12);\n\n            inV1 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV1, inM11, sum);\n\n            inV2 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV2, inM12, sum);\n\n            colCnt--;\n        }\n\n        /* left-over of the vector */\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q7_t      inM = *pB++;\n            sum += inV * inM;\n            colCnt--;\n        }\n\n        *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16));\n\n        rowCnt--;\n    }\n\n#else\n    int       i, j;\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    for (i = 0; i < num_of_rows; i++)\n    {\n        int       ip_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n        for (j = 0; j < dim_vec; j++)\n        {\n            ip_out += pV[j] * pM[i * dim_vec + j];\n        }\n        pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16);\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to ARM_MATH_SUCCESS */\n    return (ARM_MATH_SUCCESS);\n\n}\n\n/**\n * @} end of FC group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_fully_connected_mat_q7_vec_q15_opt.c\n * Description:  Mixed Q15-Q7 opt fully-connected layer function\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup FC\n * @{\n */\n\n  /**\n   * @brief Mixed Q15-Q7 opt fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * vec_buffer size: 0\n   *\n   *  Q7_Q15 version of the fully connected layer\n   *\n   *  Weights are in q7_t and Activations are in q15_t\n   *\n   *  Limitation: x4 version requires weight reordering to work\n   *\n   *  Here we use only one pointer to read 4 rows in the weight\n   *  matrix. So if the original q7_t matrix looks like this:\n   *\n   *  | a11 | a12 | a13 | a14 | a15 | a16 | a17 |\n   *\n   *  | a21 | a22 | a23 | a24 | a25 | a26 | a27 |\n   *\n   *  | a31 | a32 | a33 | a34 | a35 | a36 | a37 |\n   *\n   *  | a41 | a42 | a43 | a44 | a45 | a46 | a47 |\n   *\n   *  | a51 | a52 | a53 | a54 | a55 | a56 | a57 |\n   *\n   *  | a61 | a62 | a63 | a64 | a65 | a66 | a67 |\n   *\n   *  We operates on multiple-of-4 rows, so the first four rows becomes\n   *\n   *  | a11 | a21 | a12 | a22 | a31 | a41 | a32 | a42 |\n   *\n   *  | a13 | a23 | a14 | a24 | a33 | a43 | a34 | a44 |\n   *\n   *  | a15 | a25 | a16 | a26 | a35 | a45 | a36 | a46 |\n   *\n   *  The column left over will be in-order.\n   *  which is:\n   *  | a17 | a27 | a37 | a47 |\n   *\n   *  For the left-over rows, we do 1x1 computation, so the data remains\n   *  as its original order. \n   *\n   *  So the stored weight matrix looks like this:\n   *\n   *  | a11 | a21 | a12 | a22 | a31 | a41 |\n   *\n   *  | a32 | a42 | a13 | a23 | a14 | a24 |\n   *\n   *  | a33 | a43 | a34 | a44 | a15 | a25 |\n   *\n   *  | a16 | a26 | a35 | a45 | a36 | a46 |\n   *\n   *  | a17 | a27 | a37 | a47 | a51 | a52 |\n   *\n   *  | a53 | a54 | a55 | a56 | a57 | a61 |\n   *\n   *  | a62 | a63 | a64 | a65 | a66 | a67 |\n   *\n   */\n\narm_status\narm_fully_connected_mat_q7_vec_q15_opt(const q15_t * pV,\n                                       const q7_t * pM,\n                                       const uint16_t dim_vec,\n                                       const uint16_t num_of_rows,\n                                       const uint16_t bias_shift,\n                                       const uint16_t out_shift, const q7_t * bias, q15_t * pOut, q15_t * vec_buffer)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    const q7_t *pB = pM;\n    q15_t    *pO = pOut;\n    const q7_t *pBias = bias;\n    const q15_t *pA = pV;\n\n    uint16_t  rowCnt = num_of_rows >> 2;\n\n    while (rowCnt)\n    {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 1;\n\n        pA = pV;\n\n#ifdef USE_INTRINSIC\n\n#ifndef ARM_MATH_BIG_ENDIAN\n\n        while (colCnt)\n        {\n            q31_t     inM11, inM12, inM13, inM14;\n            q31_t     inV;\n\n            inV = *__SIMD32(pA)++;\n            inM11 = *__SIMD32(pB)++;\n            inM12 = __SXTB16(__ROR(inM11, 8));\n            inM11 = __SXTB16(inM11);\n            sum = __SMLAD(inM11, inV, sum);\n            sum2 = __SMLAD(inM12, inV, sum2);\n            inM13 = *__SIMD32(pB)++;\n            inM14 = __SXTB16(__ROR(inM13, 8));\n            inM13 = __SXTB16(inM13);\n            sum3 = __SMLAD(inM13, inV, sum3);\n            sum4 = __SMLAD(inM14, inV, sum4);\n            colCnt--;\n        }\n\n#else\n\n        while (colCnt)\n        {\n            q31_t     inM11, inM12, inM13, inM14;\n            q31_t     inV;\n\n            inV = *__SIMD32(pA)++;\n            inM11 = *__SIMD32(pB)++;\n            inM12 = __SXTB16(__ROR(inM11, 8));\n            inM11 = __SXTB16(inM11);\n            sum = __SMLAD(inM12, inV, sum);\n            sum2 = __SMLAD(inM11, inV, sum2);\n            inM13 = *__SIMD32(pB)++;\n            inM14 = __SXTB16(__ROR(inM13, 8));\n            inM13 = __SXTB16(inM13);\n            sum3 = __SMLAD(inM14, inV, sum3);\n            sum4 = __SMLAD(inM13, inV, sum4);\n            colCnt--;\n        }\n\n#endif                          /* ARM_MATH_BIG_ENDIAN */\n\n#else\n\n        /*\n         * register needed:\n         * loop counter: colCnt\n         * accumulators: sum, sum2, sum3, sum4\n         * pointers: pB, pA\n         * weight data: inM11, inM12, inM13, inM14\n         * activation data: inV\n         */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        asm volatile (\"COL_LOOP_%=:\\n\"\n                      \"ldr.w r4, [%[pA]], #4\\n\"\n                      \"ldr.w r1, [%[pB]], #8\\n\"\n                      \"mov.w r0, r1, ror #8\\n\"\n                      \"sxtb16 r0, r0\\n\"\n                      \"sxtb16 r1, r1\\n\"\n                      \"smlad %[sum], r4, r1, %[sum]\\n\"\n                      \"smlad %[sum2], r4, r0, %[sum2]\\n\"\n                      \"ldr.w r3, [%[pB], #-4]\\n\"\n                      \"mov.w r2, r3, ror #8\\n\"\n                      \"sxtb16 r2, r2\\n\"\n                      \"sxtb16 r3, r3\\n\"\n                      \"smlad %[sum3], r4, r3, %[sum3]\\n\"\n                      \"smlad %[sum4], r4, r2, %[sum4]\\n\"\n                      \"subs %[colCnt], #1\\n\"\n                      \"bne COL_LOOP_%=\\n\":[sum] \"+r\"(sum),\n                      [sum2] \"+r\"(sum2),[sum3] \"+r\"(sum3),\n                      [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),[pA] \"+r\"(pA):[colCnt] \"r\"(colCnt):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\");\n#else\n        asm volatile (\"COL_LOOP_%=:\\n\"\n                      \"ldr.w r4, [%[pA]], #4\\n\"\n                      \"ldr.w r1, [%[pB]], #8\\n\"\n                      \"mov.w r0, r1, ror #8\\n\"\n                      \"sxtb16 r0, r0\\n\"\n                      \"sxtb16 r1, r1\\n\"\n                      \"smlad %[sum], r4, r0, %[sum]\\n\"\n                      \"smlad %[sum2], r4, r1, %[sum2]\\n\"\n                      \"ldr.w r3, [%[pB], #-4]\\n\"\n                      \"mov.w r2, r3, ror #8\\n\"\n                      \"sxtb16 r2, r2\\n\"\n                      \"sxtb16 r3, r3\\n\"\n                      \"smlad %[sum3], r4, r2, %[sum3]\\n\"\n                      \"smlad %[sum4], r4, r3, %[sum4]\\n\"\n                      \"subs %[colCnt], #1\\n\"\n                      \"bne COL_LOOP_%=\\n\":[sum] \"+r\"(sum),\n                      [sum2] \"+r\"(sum2),[sum3] \"+r\"(sum3),\n                      [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),[pA] \"+r\"(pA):[colCnt] \"r\"(colCnt):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\");\n#endif                          /* ARM_MATH_BIG_ENDIAN */\n\n#endif                          /* USE_INTRINSIC */\n\n        colCnt = dim_vec & 0x1;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q7_t      inM = *pB++;\n            q7_t      inM2 = *pB++;\n            q7_t      inM3 = *pB++;\n            q7_t      inM4 = *pB++;\n\n            sum += inV * inM;\n            sum2 += inV * inM2;\n            sum3 += inV * inM3;\n            sum4 += inV * inM4;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum2 >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum3 >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum4 >> out_shift), 16));\n\n        /* adjust the pointers and counters */\n        rowCnt--;\n    }\n\n    /* left-over part of the rows */\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = pV;\n\n        while (colCnt)\n        {\n            q31_t     inV1, inV2, inM11, inM12;\n\n            pB = (q7_t *) read_and_pad((void *)pB, &inM11, &inM12);\n\n            inV1 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV1, inM11, sum);\n\n            inV2 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV2, inM12, sum);\n\n            colCnt--;\n        }\n\n        /* left-over of the vector */\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q7_t      inM = *pB++;\n            sum += inV * inM;\n            colCnt--;\n        }\n\n        *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16));\n\n        rowCnt--;\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    uint16_t  rowCnt = num_of_rows >> 2;\n    const q7_t *pB = pM;\n    const q15_t *pA;\n    q15_t    *pO = pOut;\n    const q7_t *pBias = bias;\n\n    while (rowCnt)\n    {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); \n        q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); \n        uint16_t  colCnt = dim_vec >> 1;\n\n        pA = pV;\n\n        while (colCnt)\n        {\n            q15_t     inA1 = *pA++;\n            q15_t     inA2 = *pA++;\n\n            q7_t      inB1 = *pB++;\n            q7_t      inB3 = *pB++;\n            q7_t      inB2 = *pB++;\n            q7_t      inB4 = *pB++;\n\n            sum += inA1 * inB1 + inA2 * inB2;\n            sum2 += inA1 * inB3 + inA2 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum3 += inA1 * inB1 + inA2 * inB2;\n            sum4 += inA1 * inB3 + inA2 * inB4;\n\n            colCnt--;\n        }\n\n        colCnt = dim_vec & 0x1;\n        while (colCnt)\n        {\n            q15_t     inA = *pA++;\n            q7_t      inB = *pB++;\n            sum += inA * inB;\n            inB = *pB++;\n            sum2 += inA * inB;\n            inB = *pB++;\n            sum3 += inA * inB;\n            inB = *pB++;\n            sum4 += inA * inB;\n\n            colCnt--;\n        }\n        *pO++ = (q15_t) __SSAT((sum >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16);\n\n        rowCnt--;\n    }\n\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        int       ip_out = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        int       j;\n\n        pA = pV;\n        for (j = 0; j < dim_vec; j++)\n        {\n            q15_t     inA = *pA++;\n            q7_t      inB = *pB++;\n            ip_out += inA * inB;\n        }\n        *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16);\n\n        rowCnt--;\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to ARM_MATH_SUCCESS */\n    return (ARM_MATH_SUCCESS);\n\n}\n\n/**\n * @} end of FC group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_fully_connected_q15.c\n * Description:  Q15 basic fully-connected layer function\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup FC\n * @{\n */\n\n  /**\n   * @brief Q15 opt fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * vec_buffer size: 0\n   *\n   */\n\narm_status\narm_fully_connected_q15(const q15_t * pV,\n                        const q15_t * pM,\n                        const uint16_t dim_vec,\n                        const uint16_t num_of_rows,\n                        const uint16_t bias_shift,\n                        const uint16_t out_shift, \n                        const q15_t * bias, \n                        q15_t * pOut,\n                        q15_t * vec_buffer)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    const q15_t *pB = pM;\n    const q15_t *pB2 = pB + dim_vec;\n    q15_t    *pO = pOut;\n    const q15_t    *pA;\n    const q15_t    *pBias = bias;\n    uint16_t rowCnt = num_of_rows >> 1;\n\n    /* this loop loops over different output */\n    while (rowCnt) {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = pV;\n        pB2 = pB + dim_vec;\n\n        while (colCnt)\n        {\n            q31_t     inV1, inM1, inM2;\n            inV1 = *__SIMD32(pA)++;\n            inM1 = *__SIMD32(pB)++;\n            sum = __SMLAD(inV1, inM1, sum);\n            inM2 = *__SIMD32(pB2)++;\n            sum2 = __SMLAD(inV1, inM2, sum2);\n\n            inV1 = *__SIMD32(pA)++;\n            inM1 = *__SIMD32(pB)++;\n            sum = __SMLAD(inV1, inM1, sum);\n            inM2 = *__SIMD32(pB2)++;\n            sum2 = __SMLAD(inV1, inM2, sum2);\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q15_t     inM = *pB++;\n            q15_t     inM2 = *pB2++;\n\n            sum += inV * inM;\n            sum2 += inV * inM2;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pO++ =  (q15_t) (__SSAT((sum >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum2>> out_shift), 16));\n\t\t\n        /* adjust the pointers and counters */\n        pB = pB + dim_vec;\n        rowCnt --;\n    }\n\n    rowCnt = num_of_rows & 0x1;\n\n    while (rowCnt) {\n        q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = pV;\n      \n        while (colCnt) {\n            q31_t     inV1, inM1;\n            inV1 = *__SIMD32(pA)++;\n            inM1 = *__SIMD32(pB)++;\n            sum = __SMLAD(inV1, inM1, sum);\n            \n            inV1 = *__SIMD32(pA)++;\n            inM1 = *__SIMD32(pB)++;\n            sum = __SMLAD(inV1, inM1, sum);\n\t\t\t\t\n            colCnt--;\n\t}\n\t\t\t\n\t/* left-over of the vector */\n\tcolCnt = dim_vec & 0x3;\n\twhile(colCnt) {\n            q15_t     inV = *pA++;\n            q15_t     inM = *pB++;\n\n            sum += inV * inM;\n\n            colCnt--;\n\t}\n\n        *pO++ =  (q15_t) (__SSAT((sum >> out_shift), 16));\n\t\t\t\n        rowCnt --;\n    }\n\n#else\n    int       i, j;\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    for (i = 0; i < num_of_rows; i++)\n    {\n        int       ip_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n        for (j = 0; j < dim_vec; j++)\n        {\n            ip_out += pV[j] * pM[i * dim_vec + j];\n        }\n        pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16);\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to application */\n    return (ARM_MATH_SUCCESS);\n\n}\n\n/**\n * @} end of FC group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_fully_connected_q15_opt.c\n * Description:  Q15 opt fully-connected layer function\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup FC\n * @{\n */\n\n  /**\n   * @brief Q15 opt fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * vec_buffer size: 0\n   *\n   *  Here we use only one pointer to read 4 rows in the weight\n   *  matrix. So if the original matrix looks like this:\n   *\n   *  | a11 | a12 | a13 |\n   *\n   *  | a21 | a22 | a23 |\n   *\n   *  | a31 | a32 | a33 |\n   *\n   *  | a41 | a42 | a43 |\n   *\n   *  | a51 | a52 | a53 |\n   *\n   *  | a61 | a62 | a63 |\n   *\n   *  We operates on multiple-of-4 rows, so the first four rows becomes\n   *\n   *  | a11 | a12 | a21 | a22 | a31 | a32 | a41 | a42 |\n   *\n   *  | a13 | a23 | a33 | a43 |\n   *\n   *  Remaining rows are kept the same original order.\n   *\n   *  So the stored weight matrix looks like this:\n   *\n   *\n   *  | a11 | a12 | a21 | a22 | a31 | a32 | a41 | a42 |\n   *\n   *  | a13 | a23 | a33 | a43 | a51 | a52 | a53 | a61 |\n   *\n   *  | a62 | a63 |\n   */\n\narm_status\narm_fully_connected_q15_opt(const q15_t * pV,\n                            const q15_t * pM,\n                            const uint16_t dim_vec,\n                            const uint16_t num_of_rows,\n                            const uint16_t bias_shift,\n                            const uint16_t out_shift, \n                            const q15_t * bias, \n                            q15_t * pOut, \n                            q15_t * vec_buffer)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    const q15_t *pB = pM;\n    q15_t    *pO = pOut;\n    const q15_t *pBias = bias;\n    const q15_t *pA = pV;\n\n    uint16_t  rowCnt = num_of_rows >> 2;\n\n    while (rowCnt)\n    {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); \n        q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); \n        q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); \n\n        uint16_t  colCnt = dim_vec >> 1;\n\n        pA = pV;\n\n#ifdef USE_INTRINSIC\n\n        while (colCnt)\n        {\n            q31_t     inM11, inM12, inM13, inM14;\n            q31_t     inV;\n\n            inV = *__SIMD32(pA)++;\n            inM11 = *__SIMD32(pB)++;\n            sum = __SMLAD(inV, inM11, sum);\n            inM12 = *__SIMD32(pB)++;\n            sum2 = __SMLAD(inV, inM12, sum2);\n            inM13 = *__SIMD32(pB)++;\n            sum3 = __SMLAD(inV, inM13, sum3);\n            inM14 = *__SIMD32(pB)++;\n            sum4 = __SMLAD(inV, inM14, sum4);\n            colCnt--;\n        }\n\n#else\n\n        /*\n         * register needed:\n         * loop counter: colCnt\n         * accumulators: sum, sum2, sum3, sum4\n         * pointers: pB, pA\n         * weight data: inM11, inM12, inM13, inM14\n         * activation data: inV\n         */\n\n        asm volatile (\"COL_LOOP_%=:\\n\"\n                      \"ldr.w r4, [%[pA]], #4\\n\"\n                      \"ldr.w r0, [%[pB]], #16\\n\"\n                      \"smlad %[sum], r4, r0, %[sum]\\n\"\n                      \"ldr.w r1, [%[pB] , #-12]\\n\"\n                      \"smlad %[sum2], r4, r1, %[sum2]\\n\"\n                      \"ldr.w r2, [%[pB] , #-8]\\n\"\n                      \"smlad %[sum3], r4, r2, %[sum3]\\n\"\n                      \"ldr.w r3, [%[pB] , #-4]\\n\"\n                      \"smlad %[sum4], r4, r3, %[sum4]\\n\"\n                      \"subs %[colCnt], #1\\n\"\n                      \"bne COL_LOOP_%=\\n\":[sum] \"+r\"(sum),\n                      [sum2] \"+r\"(sum2),[sum3] \"+r\"(sum3),\n                      [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),[pA] \"+r\"(pA):[colCnt] \"r\"(colCnt):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\");\n\n#endif                          /* USE_INTRINSIC */\n\n        colCnt = dim_vec & 0x1;\n        while (colCnt)\n        {\n\n            q15_t     inV = *pA++;\n            q15_t     inM = *pB++;\n            q15_t     inM2 = *pB++;\n            q15_t     inM3 = *pB++;\n            q15_t     inM4 = *pB++;\n\n            sum += inV * inM;\n            sum2 += inV * inM2;\n            sum3 += inV * inM3;\n            sum4 += inV * inM4;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum2 >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum3 >> out_shift), 16));\n        *pO++ = (q15_t) (__SSAT((sum4 >> out_shift), 16));\n\n        /* adjust the pointers and counters */\n        rowCnt--;\n    }\n\n    /* left-over part of the rows */\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = pV;\n\n        while (colCnt)\n        {\n            q31_t     inV1, inV2, inM1, inM2;\n\n            inM1 = *__SIMD32(pB)++;\n            inV1 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV1, inM1, sum);\n\n            inM2 = *__SIMD32(pB)++;\n            inV2 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV2, inM2, sum);\n\n            colCnt--;\n        }\n\n        /* left-over of the vector */\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q15_t     inM = *pB++;\n            sum += inV * inM;\n            colCnt--;\n        }\n\n        *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16));\n\n        rowCnt--;\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    uint16_t  rowCnt = num_of_rows >> 2;\n    const q15_t *pB = pM;\n    const q15_t *pA;\n    q15_t    *pO = pOut;\n    const q15_t *pBias = bias;\n\n    while (rowCnt)\n    {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 1;\n\n        pA = pV;\n        while (colCnt)\n        {\n            q15_t     inA1 = *pA++;\n            q15_t     inA2 = *pA++;\n\n            q15_t     inB1 = *pB++;\n            q15_t     inB2 = *pB++;\n            sum += inA1 * inB1 + inA2 * inB2;\n\n            inB1 = *pB++;\n            inB2 = *pB++;\n            sum2 += inA1 * inB1 + inA2 * inB2;\n\n            inB1 = *pB++;\n            inB2 = *pB++;\n            sum3 += inA1 * inB1 + inA2 * inB2;\n\n            inB1 = *pB++;\n            inB2 = *pB++;\n            sum4 += inA1 * inB1 + inA2 * inB2;\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x1;\n        while (colCnt)\n        {\n            q15_t     inA = *pA++;\n            q15_t     inB = *pB++;\n            sum += inA * inB;\n            inB = *pB++;\n            sum2 += inA * inB;\n            inB = *pB++;\n            sum3 += inA * inB;\n            inB = *pB++;\n            sum4 += inA * inB;\n            colCnt--;\n        }\n        *pO++ = (q15_t) __SSAT((sum >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16);\n        *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16);\n\n        rowCnt--;\n    }\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        int       ip_out = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        int       j;\n\n        pA = pV;\n        for (j = 0; j < dim_vec; j++)\n        {\n            q15_t     inA = *pA++;\n            q15_t     inB = *pB++;\n            ip_out += inA * inB;\n        }\n        *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16);\n\n        rowCnt--;\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to ARM_MATH_SUCCESS */\n    return (ARM_MATH_SUCCESS);\n\n}\n\n/**\n * @} end of FC group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_fully_connected_q7.c\n * Description:  Q7 basic fully-connected layer function\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup FC\n * @{\n */\n\n  /**\n   * @brief Q7 basic fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * vec_buffer size: dim_vec\n   *\n   * This basic function is designed to work with regular weight\n   * matrix without interleaving.\n   *\n   */\n\narm_status\narm_fully_connected_q7(const q7_t * pV,\n                       const q7_t * pM,\n                       const uint16_t dim_vec,\n                       const uint16_t num_of_rows,\n                       const uint16_t bias_shift,\n                       const uint16_t out_shift, const q7_t * bias, q7_t * pOut, q15_t * vec_buffer)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    const q7_t *pB = pM;\n    const q7_t *pB2;\n    q7_t     *pO = pOut;\n    const q7_t *pBias = bias;\n    q15_t    *pA;\n    uint16_t  rowCnt = num_of_rows >> 1;\n\n    /* expand the vector into the buffer */\n    arm_q7_to_q15_reordered_no_shift(pV, vec_buffer, dim_vec);\n\n    while (rowCnt)\n    {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = vec_buffer;\n        pB2 = pB + dim_vec;\n\n        while (colCnt)\n        {\n            q31_t     inV, inM11, inM12, inM21, inM22;\n            pB = (q7_t *) read_and_pad_reordered((void *)pB, &inM11, &inM12);\n            pB2 = (q7_t *) read_and_pad_reordered((void *)pB2, &inM21, &inM22);\n\n            inV = *__SIMD32(pA)++;\n\n            sum = __SMLAD(inV, inM11, sum);\n            sum2 = __SMLAD(inV, inM21, sum2);\n\n            inV = *__SIMD32(pA)++;\n\n            sum = __SMLAD(inV, inM12, sum);\n            sum2 = __SMLAD(inV, inM22, sum2);\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q7_t      inV = *pA++;\n            q15_t     inM = *pB++;\n            q15_t     inM2 = *pB2++;\n\n            sum += inV * inM;\n            sum2 += inV * inM2;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8));\n        *pO++ = (q7_t) (__SSAT((sum2 >> out_shift), 8));\n\n        /* adjust the pointers and counters */\n        pB += dim_vec;\n        rowCnt--;\n    }\n\n    /* left-over part of the rows */\n    rowCnt = num_of_rows & 0x1;\n\n    while (rowCnt)\n    {\n        uint16_t  colCnt = dim_vec >> 2;\n        q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        pA = vec_buffer;\n\n        while (colCnt)\n        {\n            q31_t     inV1, inV2, inM11, inM12;\n\n            pB = (q7_t *) read_and_pad_reordered((void *)pB, &inM11, &inM12);\n\n            inV1 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV1, inM11, sum);\n\n            inV2 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV2, inM12, sum);\n\n            colCnt--;\n        }\n\n        /* left-over of the vector */\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q7_t      inV = *pA++;\n            q15_t     inM = *pB++;\n            sum += inV * inM;\n            colCnt--;\n        }\n\n        *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8));\n\n        rowCnt--;\n    }\n\n#else\n    int       i, j;\n\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    for (i = 0; i < num_of_rows; i++)\n    {\n        int       ip_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift);\n        for (j = 0; j < dim_vec; j++)\n        {\n            ip_out += pV[j] * pM[i * dim_vec + j];\n        }\n        pOut[i] = (q7_t) __SSAT((ip_out >> out_shift), 8);\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to ARM_MATH_SUCCESS */\n    return (ARM_MATH_SUCCESS);\n\n}\n\n/**\n * @} end of FC group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_fully_connected_q7_opt.c\n * Description:  Q7 basic fully-connected layer function\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup FC\n * @{\n */\n\n  /**\n   * @brief Q7 opt fully-connected layer function\n   * @param[in]       pV          pointer to input vector\n   * @param[in]       pM          pointer to matrix weights\n   * @param[in]       dim_vec     length of the vector\n   * @param[in]       num_of_rows number of rows in weight matrix\n   * @param[in]       bias_shift  amount of left-shift for bias\n   * @param[in]       out_shift   amount of right-shift for output\n   * @param[in]       bias        pointer to bias\n   * @param[in,out]   pOut        pointer to output vector\n   * @param[in,out]   vec_buffer  pointer to buffer space for input\n   * @return     The function returns <code>ARM_MATH_SUCCESS</code>\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * vec_buffer size: dim_vec\n   *\n   * This opt function is designed to work with interleaved weight\n   * matrix. The vector input is assumed in q7_t format, we call\n   *  arm_q7_to_q15_no_shift_shuffle function to expand into\n   *  q15_t format with certain weight re-ordering, refer to the function\n   *  comments for more details.\n   *  Here we use only one pointer to read 4 rows in the weight\n   *  matrix. So if the original q7_t matrix looks like this:\n   *\n   *  | a11 | a12 | a13 | a14 | a15 | a16 | a17 |\n   *\n   *  | a21 | a22 | a23 | a24 | a25 | a26 | a27 |\n   *\n   *  | a31 | a32 | a33 | a34 | a35 | a36 | a37 |\n   *\n   *  | a41 | a42 | a43 | a44 | a45 | a46 | a47 |\n   *\n   *  | a51 | a52 | a53 | a54 | a55 | a56 | a57 |\n   *\n   *  | a61 | a62 | a63 | a64 | a65 | a66 | a67 |\n   *\n   *\n   *  We operates on multiple-of-4 rows, so the first four rows becomes\n   *\n   *  | a11 | a21 | a13 | a23 | a31 | a41 | a33 | a43 |\n   *\n   *  | a12 | a22 | a14 | a24 | a32 | a42 | a34 | a44 |\n   *\n   *  | a15 | a25 | a35 | a45 | a16 | a26 | a36 | a46 |\n   *\n   *  So within the kernel, we first read the re-ordered vector in as:\n   *\n   *  | b1  | b3  | and | b2  | b4  |\n   *\n   *  the four q31_t weights will look like\n   *\n   *  | a11 | a13 |, | a21 | a23 |, | a31 | a33 |, | a41 | a43 |\n   *\n   *  | a12 | a14 |, | a22 | a24 |, | a32 | a34 |, | a42 | a44 |\n   *\n   *  The column left over will be in-order.\n   *  which is:\n   *\n   *  | a17 | a27 | a37 | a47 |\n   *\n   *  For the left-over rows, we do 1x1 computation, so the data remains\n   *  as its original order. \n   *\n   *  So the stored weight matrix looks like this:\n   *\n   *  | a11 | a21 | a13 | a23 | a31 | a41 |\n   *\n   *  | a33 | a43 | a12 | a22 | a14 | a24 |\n   *\n   *  | a32 | a42 | a34 | a44 | a15 | a25 |\n   *\n   *  | a35 | a45 | a16 | a26 | a36 | a46 |\n   *\n   *  | a17 | a27 | a37 | a47 | a51 | a52 |\n   *\n   *  | a53 | a54 | a55 | a56 | a57 | a61 |\n   *\n   *  | a62 | a63 | a64 | a65 | a66 | a67 |\n   *\n   *\n   */\n\narm_status\narm_fully_connected_q7_opt(const q7_t * pV,\n                           const q7_t * pM,\n                           const uint16_t dim_vec,\n                           const uint16_t num_of_rows,\n                           const uint16_t bias_shift,\n                           const uint16_t out_shift, \n                           const q7_t * bias, \n                           q7_t * pOut, \n                           q15_t * vec_buffer)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    const q7_t *pB = pM;\n    q7_t     *pO = pOut;\n    const q7_t *pBias = bias;\n    q15_t    *pA;\n    uint16_t  rowCnt = num_of_rows >> 2;\n\n    arm_q7_to_q15_reordered_no_shift(pV, vec_buffer, dim_vec);\n\n    while (rowCnt)\n    {\n\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = vec_buffer;\n\n#ifdef USE_INTRINSIC\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        while (colCnt)\n        {\n            q31_t     inM11, inM12, inM13, inM14;\n            q31_t     inV;\n\n            inV = *__SIMD32(pA)++;\n            inM11 = *__SIMD32(pB)++;\n            inM12 = __SXTB16(__ROR(inM11, 8));\n            inM11 = __SXTB16(inM11);\n            sum = __SMLAD(inM11, inV, sum);\n            sum2 = __SMLAD(inM12, inV, sum2);\n            inM13 = *__SIMD32(pB)++;\n            inM14 = __SXTB16(__ROR(inM13, 8));\n            inM13 = __SXTB16(inM13);\n            sum3 = __SMLAD(inM13, inV, sum3);\n            sum4 = __SMLAD(inM14, inV, sum4);\n\n            inV = *__SIMD32(pA)++;\n            inM11 = *__SIMD32(pB)++;\n            inM12 = __SXTB16(__ROR(inM11, 8));\n            inM11 = __SXTB16(inM11);\n            sum = __SMLAD(inM11, inV, sum);\n            sum2 = __SMLAD(inM12, inV, sum2);\n            inM13 = *__SIMD32(pB)++;\n            inM14 = __SXTB16(__ROR(inM13, 8));\n            inM13 = __SXTB16(inM13);\n            sum3 = __SMLAD(inM13, inV, sum3);\n            sum4 = __SMLAD(inM14, inV, sum4);\n            colCnt--;\n        }\n#else\n        while (colCnt)\n        {\n            q31_t     inM11, inM12, inM13, inM14;\n            q31_t     inV;\n\n            inV = *__SIMD32(pA)++;\n            inM11 = *__SIMD32(pB)++;\n            inM12 = __SXTB16(__ROR(inM11, 8));\n            inM11 = __SXTB16(inM11);\n            sum = __SMLAD(inM12, inV, sum);\n            sum2 = __SMLAD(inM11, inV, sum2);\n            inM13 = *__SIMD32(pB)++;\n            inM14 = __SXTB16(__ROR(inM13, 8));\n            inM13 = __SXTB16(inM13);\n            sum3 = __SMLAD(inM14, inV, sum3);\n            sum4 = __SMLAD(inM13, inV, sum4);\n\n            inV = *__SIMD32(pA)++;\n            inM11 = *__SIMD32(pB)++;\n            inM12 = __SXTB16(__ROR(inM11, 8));\n            inM11 = __SXTB16(inM11);\n            sum = __SMLAD(inM12, inV, sum);\n            sum2 = __SMLAD(inM11, inV, sum2);\n            inM13 = *__SIMD32(pB)++;\n            inM14 = __SXTB16(__ROR(inM13, 8));\n            inM13 = __SXTB16(inM13);\n            sum3 = __SMLAD(inM14, inV, sum3);\n            sum4 = __SMLAD(inM13, inV, sum4);\n            colCnt--;\n        }\n#endif                          /* ARM_MATH_BIG_ENDIAN */\n\n#else\n\n        /*\n         * register needed:\n         * loop counter: colCnt\n         * accumulators: sum, sum2, sum3, sum4\n         * pointers: pB, pA\n         * weight data: inM11, inM12, inM13, inM14\n         * activation data: inV\n         */\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        asm volatile (\"COL_LOOP_%=:\\n\"\n                      \"ldr.w r4, [%[pA]], #8\\n\"\n                      \"ldr.w r1, [%[pB]], #16\\n\"\n                      \"mov.w r0, r1, ror #8\\n\"\n                      \"sxtb16 r0, r0\\n\"\n                      \"sxtb16 r1, r1\\n\"\n                      \"smlad %[sum], r4, r1, %[sum]\\n\"\n                      \"smlad %[sum2], r4, r0, %[sum2]\\n\"\n                      \"ldr.w r3, [%[pB], #-12]\\n\"\n                      \"mov.w r2, r3, ror #8\\n\"\n                      \"sxtb16 r2, r2\\n\"\n                      \"sxtb16 r3, r3\\n\"\n                      \"smlad %[sum3], r4, r3, %[sum3]\\n\"\n                      \"smlad %[sum4], r4, r2, %[sum4]\\n\"\n                      \"ldr.w r4, [%[pA], #-4]\\n\"\n                      \"ldr.w r1, [%[pB], #-8]\\n\"\n                      \"mov.w r0, r1, ror #8\\n\"\n                      \"sxtb16 r0, r0\\n\"\n                      \"sxtb16 r1, r1\\n\"\n                      \"smlad %[sum], r4, r1, %[sum]\\n\"\n                      \"smlad %[sum2], r4, r0, %[sum2]\\n\"\n                      \"ldr.w r3, [%[pB], #-4]\\n\"\n                      \"mov.w r2, r3, ror #8\\n\"\n                      \"sxtb16 r2, r2\\n\"\n                      \"sxtb16 r3, r3\\n\"\n                      \"smlad %[sum3], r4, r3, %[sum3]\\n\"\n                      \"smlad %[sum4], r4, r2, %[sum4]\\n\"\n                      \"subs %[colCnt], #1\\n\"\n                      \"bne COL_LOOP_%=\\n\":[sum] \"+r\"(sum),\n                      [sum2] \"+r\"(sum2),[sum3] \"+r\"(sum3),\n                      [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),[pA] \"+r\"(pA):[colCnt] \"r\"(colCnt):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\");\n#else\n        asm volatile (\"COL_LOOP_%=:\\n\"\n                      \"ldr.w r4, [%[pA]], #8\\n\"\n                      \"ldr.w r1, [%[pB]], #16\\n\"\n                      \"mov.w r0, r1, ror #8\\n\"\n                      \"sxtb16 r0, r0\\n\"\n                      \"sxtb16 r1, r1\\n\"\n                      \"smlad %[sum], r4, r0, %[sum]\\n\"\n                      \"smlad %[sum2], r4, r1, %[sum2]\\n\"\n                      \"ldr.w r3, [%[pB], #-12]\\n\"\n                      \"mov.w r2, r3, ror #8\\n\"\n                      \"sxtb16 r2, r2\\n\"\n                      \"sxtb16 r3, r3\\n\"\n                      \"smlad %[sum3], r4, r2, %[sum3]\\n\"\n                      \"smlad %[sum4], r4, r3, %[sum4]\\n\"\n                      \"ldr.w r4, [%[pA], #-4]\\n\"\n                      \"ldr.w r1, [%[pB], #-8]\\n\"\n                      \"mov.w r0, r1, ror #8\\n\"\n                      \"sxtb16 r0, r0\\n\"\n                      \"sxtb16 r1, r1\\n\"\n                      \"smlad %[sum], r4, r0, %[sum]\\n\"\n                      \"smlad %[sum2], r4, r1, %[sum2]\\n\"\n                      \"ldr.w r3, [%[pB], #-4]\\n\"\n                      \"mov.w r2, r3, ror #8\\n\"\n                      \"sxtb16 r2, r2\\n\"\n                      \"sxtb16 r3, r3\\n\"\n                      \"smlad %[sum3], r4, r2, %[sum3]\\n\"\n                      \"smlad %[sum4], r4, r3, %[sum4]\\n\"\n                      \"subs %[colCnt], #1\\n\"\n                      \"bne COL_LOOP_%=\\n\":[sum] \"+r\"(sum),\n                      [sum2] \"+r\"(sum2),[sum3] \"+r\"(sum3),\n                      [sum4] \"+r\"(sum4),[pB] \"+r\"(pB),[pA] \"+r\"(pA):[colCnt] \"r\"(colCnt):\"r0\", \"r1\", \"r2\", \"r3\", \"r4\");\n#endif                          /* ARM_MATH_BIG_ENDIAN */\n\n#endif                          /* USE_INTRINSIC */\n\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q7_t      inM = *pB++;\n            q7_t      inM2 = *pB++;\n            q7_t      inM3 = *pB++;\n            q7_t      inM4 = *pB++;\n\n            sum += inV * inM;\n            sum2 += inV * inM2;\n            sum3 += inV * inM3;\n            sum4 += inV * inM4;\n            colCnt--;\n        }                       /* while over colCnt */\n        *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8));\n        *pO++ = (q7_t) (__SSAT((sum2 >> out_shift), 8));\n        *pO++ = (q7_t) (__SSAT((sum3 >> out_shift), 8));\n        *pO++ = (q7_t) (__SSAT((sum4 >> out_shift), 8));\n\n        /* adjust the pointers and counters */\n        rowCnt--;\n    }\n\n    /* left-over part of the rows */\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        q31_t     sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = vec_buffer;\n\n        while (colCnt)\n        {\n            q31_t     inV1, inV2, inM11, inM12;\n\n            pB = (q7_t *) read_and_pad_reordered((void *)pB, &inM11, &inM12);\n\n            inV1 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV1, inM11, sum);\n\n            inV2 = *__SIMD32(pA)++;\n            sum = __SMLAD(inV2, inM12, sum);\n\n            colCnt--;\n        }\n\n        /* left-over of the vector */\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q15_t     inV = *pA++;\n            q7_t      inM = *pB++;\n            sum += inV * inM;\n            colCnt--;\n        }\n\n        *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8));\n\n        rowCnt--;\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n    uint16_t  rowCnt = num_of_rows >> 2;\n    const q7_t *pB = pM;\n    const q7_t *pA;\n    q7_t     *pO = pOut;\n    const q7_t *pBias = bias;\n\n    while (rowCnt)\n    {\n        q31_t     sum =  ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n        q31_t     sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        uint16_t  colCnt = dim_vec >> 2;\n\n        pA = pV;\n\n        while (colCnt)\n        {\n            q7_t      inA1 = *pA++;\n            q7_t      inA3 = *pA++;\n            q7_t      inA2 = *pA++;\n            q7_t      inA4 = *pA++;\n\n            q7_t      inB1 = *pB++;\n            q7_t      inB3 = *pB++;\n            q7_t      inB2 = *pB++;\n            q7_t      inB4 = *pB++;\n\n            sum += inA1 * inB1 + inA2 * inB2;\n            sum2 += inA1 * inB3 + inA2 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum3 += inA1 * inB1 + inA2 * inB2;\n            sum4 += inA1 * inB3 + inA2 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum += inA3 * inB1 + inA4 * inB2;\n            sum2 += inA3 * inB3 + inA4 * inB4;\n\n            inB1 = *pB++;\n            inB3 = *pB++;\n            inB2 = *pB++;\n            inB4 = *pB++;\n\n            sum3 += inA3 * inB1 + inA4 * inB2;\n            sum4 += inA3 * inB3 + inA4 * inB4;\n\n            colCnt--;\n        }\n        colCnt = dim_vec & 0x3;\n        while (colCnt)\n        {\n            q7_t      inA = *pA++;\n            q7_t      inB = *pB++;\n            sum += inA * inB;\n            inB = *pB++;\n            sum2 += inA * inB;\n            inB = *pB++;\n            sum3 += inA * inB;\n            inB = *pB++;\n            sum4 += inA * inB;\n\n            colCnt--;\n        }\n        *pO++ = (q7_t) __SSAT((sum >> out_shift), 8);\n        *pO++ = (q7_t) __SSAT((sum2 >> out_shift), 8);\n        *pO++ = (q7_t) __SSAT((sum3 >> out_shift), 8);\n        *pO++ = (q7_t) __SSAT((sum4 >> out_shift), 8);\n\n        rowCnt--;\n    }\n\n    rowCnt = num_of_rows & 0x3;\n\n    while (rowCnt)\n    {\n        int       ip_out = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift);\n\n        int       j;\n\n        pA = pV;\n        for (j = 0; j < dim_vec; j++)\n        {\n            q7_t      inA = *pA++;\n            q7_t      inB = *pB++;\n            ip_out += inA * inB;\n        }\n        *pO++ = (q7_t) __SSAT((ip_out >> out_shift), 8);\n\n        rowCnt--;\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n    /* Return to ARM_MATH_SUCCESS */\n    return (ARM_MATH_SUCCESS);\n\n}\n\n/**\n * @} end of FC group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q15.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nn_mult_q15.c\n * Description:  Q15 vector multiplication with variable output shifts\n *\n * $Date:        13. July 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_nnfunctions.h\"\n\n/**    \n * @ingroup groupSupport    \n */\n\n/**\n * @addtogroup NNBasicMath\n * @{\n */\n\n\n/**\n * @brief           Q7 vector multiplication with variable output shifts\n * @param[in]       *pSrcA        pointer to the first input vector\n * @param[in]       *pSrcB        pointer to the second input vector\n * @param[out]      *pDst         pointer to the output vector\n * @param[in]       out_shift     amount of right-shift for output\n * @param[in]       blockSize     number of samples in each vector\n * @return none.\n *\n * <b>Scaling and Overflow Behavior:</b>\n * \\par\n * The function uses saturating arithmetic.\n * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.\n */\n\nvoid arm_nn_mult_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  const uint16_t out_shift,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* loop counters */\n\n#if defined (ARM_MATH_DSP)\n\n/* Run the below code for Cortex-M4 and Cortex-M3 */\n  q31_t inA1, inA2, inB1, inB2;                  /* temporary input variables */\n  q15_t out1, out2, out3, out4;                  /* temporary output variables */\n  q31_t mul1, mul2, mul3, mul4;                  /* temporary variables */\n\n  /* loop Unrolling */\n  blkCnt = blockSize >> 2U;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* read two samples at a time from sourceA */\n    inA1 = *__SIMD32(pSrcA)++;\n    /* read two samples at a time from sourceB */\n    inB1 = *__SIMD32(pSrcB)++;\n    /* read two samples at a time from sourceA */\n    inA2 = *__SIMD32(pSrcA)++;\n    /* read two samples at a time from sourceB */\n    inB2 = *__SIMD32(pSrcB)++;\n\n    /* multiply mul = sourceA * sourceB */\n    mul1 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));\n    mul2 = (q31_t) ((q15_t) inA1 * (q15_t) inB1);\n    mul3 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB2 >> 16));\n    mul4 = (q31_t) ((q15_t) inA2 * (q15_t) inB2);\n\n    /* saturate result to 16 bit */\n    out1 = (q15_t) __SSAT((mul1 + NN_ROUND(out_shift)) >> out_shift, 16);\n    out2 = (q15_t) __SSAT((mul2 + NN_ROUND(out_shift)) >> out_shift, 16);\n    out3 = (q15_t) __SSAT((mul3 + NN_ROUND(out_shift)) >> out_shift, 16);\n    out4 = (q15_t) __SSAT((mul4 + NN_ROUND(out_shift)) >> out_shift, 16);\n\n    /* store the result */\n#ifndef ARM_MATH_BIG_ENDIAN\n\n    *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16);\n    *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16);\n\n#else\n\n    *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16);\n    *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16);\n\n#endif /* #ifndef ARM_MATH_BIG_ENDIAN */\n\n    /* Decrement the blockSize loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Run the below code for Cortex-M0 */\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n    /* Multiply the inputs and store the result in the destination buffer */\n    *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 16);\n\n    /* Decrement the blockSize loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n * @} end of NNBasicMath group\n */\n\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q7.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nn_mult_q7.c\n * Description:  Q7 vector multiplication with variable output shifts\n *\n * $Date:        13. July 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_nnfunctions.h\"\n\n/**    \n * @ingroup groupSupport    \n */\n\n/**\n * @addtogroup NNBasicMath\n * @{\n */\n\n/**\n * @brief           Q7 vector multiplication with variable output shifts\n * @param[in]       *pSrcA        pointer to the first input vector\n * @param[in]       *pSrcB        pointer to the second input vector\n * @param[out]      *pDst         pointer to the output vector\n * @param[in]       out_shift     amount of right-shift for output\n * @param[in]       blockSize     number of samples in each vector\n * @return none.\n *\n * <b>Scaling and Overflow Behavior:</b>\n * \\par\n * The function uses saturating arithmetic.\n * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.\n */\n\nvoid arm_nn_mult_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  const uint16_t out_shift,\n  uint32_t blockSize)\n{\n  uint32_t blkCnt;                               /* loop counters */\n\n#if defined (ARM_MATH_DSP)\n\n/* Run the below code for Cortex-M4 and Cortex-M3 */\n  q7_t out1, out2, out3, out4;                   /* Temporary variables to store the product */\n\n  /* loop Unrolling */\n  blkCnt = blockSize >> 2U;\n\n  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.\n   ** a second loop below computes the remaining 1 to 3 samples. */\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n    /* Multiply the inputs and store the results in temporary variables */\n    out1 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8);\n    out2 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8);\n    out3 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8);\n    out4 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8);\n\n    /* Store the results of 4 inputs in the destination buffer in single cycle by packing */\n    *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4);\n\n    /* Decrement the blockSize loop counter */\n    blkCnt--;\n  }\n\n  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.\n   ** No loop unrolling is used. */\n  blkCnt = blockSize % 0x4U;\n\n#else\n\n  /* Run the below code for Cortex-M0 */\n\n  /* Initialize blkCnt with number of samples */\n  blkCnt = blockSize;\n\n#endif /* #if defined (ARM_MATH_DSP) */\n\n\n  while (blkCnt > 0U)\n  {\n    /* C = A * B */\n    /* Multiply the inputs and store the result in the destination buffer */\n    *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8);\n\n    /* Decrement the blockSize loop counter */\n    blkCnt--;\n  }\n}\n\n/**\n * @} end of NNBasicMath group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_nntables.c\n * Description:  Converts the elements of the Q7 vector to Q15 vector without left-shift\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_nnsupportfunctions.h\"\n\n/**\n * @brief tables for various activation functions\n *\n * This file include the declaration of common tables.\n * Most of them are used for activation functions \n *\n * Assumption:\n * Unified table: input is 3.x format, i.e, range of [-8, 8)\n * sigmoid(8) = 0.9996646498695336\n * tanh(8) = 0.9999997749296758\n * The accuracy here should be good enough\n *\n * 2-stage HL table: \n *\n * The entire input range is divided into two parts:\n *\n * Low range table: 0x000x xxxx or 0x111x xxxx \n * table entry will be the binary number excluding the first\n * two digits, i.e., 0x0x xxxx or 0x1x xxxx\n * \n *\n *\n * High range table 0x0010 0000 -- 0x0111 1111\n *                  0x1000 0000 -- 0x1101 1111\n * \n * For positive numbers, table entry will be\n * 0x0010 0000 -- 0x0111 1111 minus 0x0010 0000\n * i.e., 0x0000 0000 - 0x0101 11111\n *\n * same thing for the negative numbers, table entry will be\n * 0x1000 0000 -- 0x1101 1111 minux 0x0010 0000\n * i.e., 0x0110 0000 - 0x1011 1111\n */\n\nconst q7_t sigmoidTable_q7[256] = {\n    0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e,\n    0x50, 0x52, 0x53, 0x55, 0x57, 0x59, 0x5a, 0x5c,\n    0x5e, 0x5f, 0x61, 0x62, 0x63, 0x65, 0x66, 0x67,\n    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,\n    0x71, 0x72, 0x72, 0x73, 0x74, 0x74, 0x75, 0x76,\n    0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a,\n    0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,\n    0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e,\n    0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\n    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\n    0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,\n    0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04,\n    0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06,\n    0x06, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09,\n    0x0a, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e,\n    0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\n    0x17, 0x19, 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x21,\n    0x22, 0x24, 0x26, 0x27, 0x29, 0x2b, 0x2d, 0x2e,\n    0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e,\n};\n\nconst q15_t sigmoidTable_q15[256] = {\n    0x4000, 0x4200, 0x43ff, 0x45fc, 0x47f5, 0x49eb, 0x4bdc, 0x4dc8,\n    0x4fad, 0x518a, 0x5360, 0x552c, 0x56ef, 0x58a8, 0x5a57, 0x5bfb,\n    0x5d93, 0x5f20, 0x60a1, 0x6216, 0x637f, 0x64db, 0x662b, 0x676f,\n    0x68a6, 0x69d2, 0x6af1, 0x6c05, 0x6d0d, 0x6e09, 0x6efb, 0x6fe2,\n    0x70be, 0x7190, 0x7258, 0x7316, 0x73cc, 0x7478, 0x751b, 0x75b7,\n    0x764a, 0x76d6, 0x775b, 0x77d8, 0x784f, 0x78c0, 0x792a, 0x798f,\n    0x79ee, 0x7a48, 0x7a9d, 0x7aed, 0x7b39, 0x7b80, 0x7bc4, 0x7c03,\n    0x7c3f, 0x7c78, 0x7cad, 0x7ce0, 0x7d0f, 0x7d3c, 0x7d66, 0x7d8d,\n    0x7db3, 0x7dd6, 0x7df7, 0x7e16, 0x7e33, 0x7e4f, 0x7e69, 0x7e81,\n    0x7e98, 0x7eae, 0x7ec2, 0x7ed5, 0x7ee7, 0x7ef8, 0x7f08, 0x7f17,\n    0x7f25, 0x7f32, 0x7f3e, 0x7f4a, 0x7f55, 0x7f5f, 0x7f69, 0x7f72,\n    0x7f7b, 0x7f83, 0x7f8a, 0x7f91, 0x7f98, 0x7f9e, 0x7fa4, 0x7faa,\n    0x7faf, 0x7fb4, 0x7fb8, 0x7fbd, 0x7fc1, 0x7fc5, 0x7fc8, 0x7fcc,\n    0x7fcf, 0x7fd2, 0x7fd5, 0x7fd7, 0x7fda, 0x7fdc, 0x7fde, 0x7fe0,\n    0x7fe2, 0x7fe4, 0x7fe6, 0x7fe7, 0x7fe9, 0x7fea, 0x7feb, 0x7fed,\n    0x7fee, 0x7fef, 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff4,\n    0x000b, 0x000c, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011,\n    0x0012, 0x0013, 0x0015, 0x0016, 0x0017, 0x0019, 0x001a, 0x001c,\n    0x001e, 0x0020, 0x0022, 0x0024, 0x0026, 0x0029, 0x002b, 0x002e,\n    0x0031, 0x0034, 0x0038, 0x003b, 0x003f, 0x0043, 0x0048, 0x004c,\n    0x0051, 0x0056, 0x005c, 0x0062, 0x0068, 0x006f, 0x0076, 0x007d,\n    0x0085, 0x008e, 0x0097, 0x00a1, 0x00ab, 0x00b6, 0x00c2, 0x00ce,\n    0x00db, 0x00e9, 0x00f8, 0x0108, 0x0119, 0x012b, 0x013e, 0x0152,\n    0x0168, 0x017f, 0x0197, 0x01b1, 0x01cd, 0x01ea, 0x0209, 0x022a,\n    0x024d, 0x0273, 0x029a, 0x02c4, 0x02f1, 0x0320, 0x0353, 0x0388,\n    0x03c1, 0x03fd, 0x043c, 0x0480, 0x04c7, 0x0513, 0x0563, 0x05b8,\n    0x0612, 0x0671, 0x06d6, 0x0740, 0x07b1, 0x0828, 0x08a5, 0x092a,\n    0x09b6, 0x0a49, 0x0ae5, 0x0b88, 0x0c34, 0x0cea, 0x0da8, 0x0e70,\n    0x0f42, 0x101e, 0x1105, 0x11f7, 0x12f3, 0x13fb, 0x150f, 0x162e,\n    0x175a, 0x1891, 0x19d5, 0x1b25, 0x1c81, 0x1dea, 0x1f5f, 0x20e0,\n    0x226d, 0x2405, 0x25a9, 0x2758, 0x2911, 0x2ad4, 0x2ca0, 0x2e76,\n    0x3053, 0x3238, 0x3424, 0x3615, 0x380b, 0x3a04, 0x3c01, 0x3e00,\n};\n\nconst q15_t sigmoidLTable_q15[128] = {\n    0x4000, 0x4100, 0x4200, 0x42ff, 0x43ff, 0x44fd, 0x45fc, 0x46f9,\n    0x47f5, 0x48f1, 0x49eb, 0x4ae5, 0x4bdc, 0x4cd3, 0x4dc8, 0x4ebb,\n    0x4fad, 0x509c, 0x518a, 0x5276, 0x5360, 0x5447, 0x552c, 0x560f,\n    0x56ef, 0x57cd, 0x58a8, 0x5981, 0x5a57, 0x5b2a, 0x5bfb, 0x5cc9,\n    0x5d93, 0x5e5b, 0x5f20, 0x5fe2, 0x60a1, 0x615d, 0x6216, 0x62cc,\n    0x637f, 0x642e, 0x64db, 0x6584, 0x662b, 0x66ce, 0x676f, 0x680c,\n    0x68a6, 0x693d, 0x69d2, 0x6a63, 0x6af1, 0x6b7c, 0x6c05, 0x6c8a,\n    0x6d0d, 0x6d8d, 0x6e09, 0x6e84, 0x6efb, 0x6f70, 0x6fe2, 0x7051,\n    0x0f42, 0x0faf, 0x101e, 0x1090, 0x1105, 0x117c, 0x11f7, 0x1273,\n    0x12f3, 0x1376, 0x13fb, 0x1484, 0x150f, 0x159d, 0x162e, 0x16c3,\n    0x175a, 0x17f4, 0x1891, 0x1932, 0x19d5, 0x1a7c, 0x1b25, 0x1bd2,\n    0x1c81, 0x1d34, 0x1dea, 0x1ea3, 0x1f5f, 0x201e, 0x20e0, 0x21a5,\n    0x226d, 0x2337, 0x2405, 0x24d6, 0x25a9, 0x267f, 0x2758, 0x2833,\n    0x2911, 0x29f1, 0x2ad4, 0x2bb9, 0x2ca0, 0x2d8a, 0x2e76, 0x2f64,\n    0x3053, 0x3145, 0x3238, 0x332d, 0x3424, 0x351b, 0x3615, 0x370f,\n    0x380b, 0x3907, 0x3a04, 0x3b03, 0x3c01, 0x3d01, 0x3e00, 0x3f00,\n};\n\nconst q15_t sigmoidHTable_q15[192] = {\n    0x70be, 0x7190, 0x7258, 0x7316, 0x73cc, 0x7478, 0x751b, 0x75b7,\n    0x764a, 0x76d6, 0x775b, 0x77d8, 0x784f, 0x78c0, 0x792a, 0x798f,\n    0x79ee, 0x7a48, 0x7a9d, 0x7aed, 0x7b39, 0x7b80, 0x7bc4, 0x7c03,\n    0x7c3f, 0x7c78, 0x7cad, 0x7ce0, 0x7d0f, 0x7d3c, 0x7d66, 0x7d8d,\n    0x7db3, 0x7dd6, 0x7df7, 0x7e16, 0x7e33, 0x7e4f, 0x7e69, 0x7e81,\n    0x7e98, 0x7eae, 0x7ec2, 0x7ed5, 0x7ee7, 0x7ef8, 0x7f08, 0x7f17,\n    0x7f25, 0x7f32, 0x7f3e, 0x7f4a, 0x7f55, 0x7f5f, 0x7f69, 0x7f72,\n    0x7f7b, 0x7f83, 0x7f8a, 0x7f91, 0x7f98, 0x7f9e, 0x7fa4, 0x7faa,\n    0x7faf, 0x7fb4, 0x7fb8, 0x7fbd, 0x7fc1, 0x7fc5, 0x7fc8, 0x7fcc,\n    0x7fcf, 0x7fd2, 0x7fd5, 0x7fd7, 0x7fda, 0x7fdc, 0x7fde, 0x7fe0,\n    0x7fe2, 0x7fe4, 0x7fe6, 0x7fe7, 0x7fe9, 0x7fea, 0x7feb, 0x7fed,\n    0x7fee, 0x7fef, 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff4,\n    0x000b, 0x000c, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011,\n    0x0012, 0x0013, 0x0015, 0x0016, 0x0017, 0x0019, 0x001a, 0x001c,\n    0x001e, 0x0020, 0x0022, 0x0024, 0x0026, 0x0029, 0x002b, 0x002e,\n    0x0031, 0x0034, 0x0038, 0x003b, 0x003f, 0x0043, 0x0048, 0x004c,\n    0x0051, 0x0056, 0x005c, 0x0062, 0x0068, 0x006f, 0x0076, 0x007d,\n    0x0085, 0x008e, 0x0097, 0x00a1, 0x00ab, 0x00b6, 0x00c2, 0x00ce,\n    0x00db, 0x00e9, 0x00f8, 0x0108, 0x0119, 0x012b, 0x013e, 0x0152,\n    0x0168, 0x017f, 0x0197, 0x01b1, 0x01cd, 0x01ea, 0x0209, 0x022a,\n    0x024d, 0x0273, 0x029a, 0x02c4, 0x02f1, 0x0320, 0x0353, 0x0388,\n    0x03c1, 0x03fd, 0x043c, 0x0480, 0x04c7, 0x0513, 0x0563, 0x05b8,\n    0x0612, 0x0671, 0x06d6, 0x0740, 0x07b1, 0x0828, 0x08a5, 0x092a,\n    0x09b6, 0x0a49, 0x0ae5, 0x0b88, 0x0c34, 0x0cea, 0x0da8, 0x0e70,\n};\n\nconst q7_t tanhTable_q7[256] = {\n    0x00, 0x08, 0x10, 0x18, 0x1f, 0x27, 0x2e, 0x35,\n    0x3b, 0x41, 0x47, 0x4c, 0x51, 0x56, 0x5a, 0x5e,\n    0x61, 0x65, 0x68, 0x6a, 0x6d, 0x6f, 0x71, 0x72,\n    0x74, 0x75, 0x76, 0x78, 0x78, 0x79, 0x7a, 0x7b,\n    0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e,\n    0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,\n    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81,\n    0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82,\n    0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84,\n    0x85, 0x85, 0x86, 0x87, 0x88, 0x88, 0x8a, 0x8b,\n    0x8c, 0x8e, 0x8f, 0x91, 0x93, 0x96, 0x98, 0x9b,\n    0x9f, 0xa2, 0xa6, 0xaa, 0xaf, 0xb4, 0xb9, 0xbf,\n    0xc5, 0xcb, 0xd2, 0xd9, 0xe1, 0xe8, 0xf0, 0xf8,\n};\n\nconst q15_t tanhTable_q15[256] = {\n    0x0000, 0x07fd, 0x0feb, 0x17b9, 0x1f59, 0x26bf, 0x2ddf, 0x34ae,\n    0x3b27, 0x4142, 0x46fd, 0x4c56, 0x514d, 0x55e2, 0x5a1a, 0x5df6,\n    0x617c, 0x64b0, 0x6797, 0x6a37, 0x6c95, 0x6eb5, 0x709e, 0x7254,\n    0x73dc, 0x753a, 0x7672, 0x7788, 0x787f, 0x795b, 0x7a1e, 0x7acb,\n    0x7b65, 0x7bee, 0x7c66, 0x7cd1, 0x7d30, 0x7d84, 0x7dce, 0x7e0f,\n    0x7e49, 0x7e7d, 0x7eaa, 0x7ed2, 0x7ef5, 0x7f14, 0x7f30, 0x7f48,\n    0x7f5e, 0x7f71, 0x7f82, 0x7f91, 0x7f9e, 0x7fa9, 0x7fb3, 0x7fbc,\n    0x7fc4, 0x7fcb, 0x7fd1, 0x7fd7, 0x7fdc, 0x7fe0, 0x7fe4, 0x7fe7,\n    0x7fea, 0x7fed, 0x7fef, 0x7ff1, 0x7ff3, 0x7ff4, 0x7ff6, 0x7ff7,\n    0x7ff8, 0x7ff9, 0x7ffa, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffc, 0x7ffd,\n    0x7ffd, 0x7ffd, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8002, 0x8002, 0x8002, 0x8002, 0x8003,\n    0x8003, 0x8003, 0x8004, 0x8004, 0x8005, 0x8006, 0x8006, 0x8007,\n    0x8008, 0x8009, 0x800a, 0x800c, 0x800d, 0x800f, 0x8011, 0x8013,\n    0x8016, 0x8019, 0x801c, 0x8020, 0x8024, 0x8029, 0x802f, 0x8035,\n    0x803c, 0x8044, 0x804d, 0x8057, 0x8062, 0x806f, 0x807e, 0x808f,\n    0x80a2, 0x80b8, 0x80d0, 0x80ec, 0x810b, 0x812e, 0x8156, 0x8183,\n    0x81b7, 0x81f1, 0x8232, 0x827c, 0x82d0, 0x832f, 0x839a, 0x8412,\n    0x849b, 0x8535, 0x85e2, 0x86a5, 0x8781, 0x8878, 0x898e, 0x8ac6,\n    0x8c24, 0x8dac, 0x8f62, 0x914b, 0x936b, 0x95c9, 0x9869, 0x9b50,\n    0x9e84, 0xa20a, 0xa5e6, 0xaa1e, 0xaeb3, 0xb3aa, 0xb903, 0xbebe,\n    0xc4d9, 0xcb52, 0xd221, 0xd941, 0xe0a7, 0xe847, 0xf015, 0xf803,\n};\n\nconst q15_t tanhLTable_q15[128] = {\n    0x0000, 0x0400, 0x07fd, 0x0bf7, 0x0feb, 0x13d7, 0x17b9, 0x1b90,\n    0x1f59, 0x2314, 0x26bf, 0x2a58, 0x2ddf, 0x3151, 0x34ae, 0x37f6,\n    0x3b27, 0x3e40, 0x4142, 0x442c, 0x46fd, 0x49b6, 0x4c56, 0x4edd,\n    0x514d, 0x53a3, 0x55e2, 0x580a, 0x5a1a, 0x5c13, 0x5df6, 0x5fc4,\n    0x617c, 0x6320, 0x64b0, 0x662d, 0x6797, 0x68f0, 0x6a37, 0x6b6e,\n    0x6c95, 0x6dac, 0x6eb5, 0x6fb0, 0x709e, 0x717f, 0x7254, 0x731e,\n    0x73dc, 0x7490, 0x753a, 0x75da, 0x7672, 0x7701, 0x7788, 0x7807,\n    0x787f, 0x78f0, 0x795b, 0x79bf, 0x7a1e, 0x7a77, 0x7acb, 0x7b1b,\n    0x849b, 0x84e5, 0x8535, 0x8589, 0x85e2, 0x8641, 0x86a5, 0x8710,\n    0x8781, 0x87f9, 0x8878, 0x88ff, 0x898e, 0x8a26, 0x8ac6, 0x8b70,\n    0x8c24, 0x8ce2, 0x8dac, 0x8e81, 0x8f62, 0x9050, 0x914b, 0x9254,\n    0x936b, 0x9492, 0x95c9, 0x9710, 0x9869, 0x99d3, 0x9b50, 0x9ce0,\n    0x9e84, 0xa03c, 0xa20a, 0xa3ed, 0xa5e6, 0xa7f6, 0xaa1e, 0xac5d,\n    0xaeb3, 0xb123, 0xb3aa, 0xb64a, 0xb903, 0xbbd4, 0xbebe, 0xc1c0,\n    0xc4d9, 0xc80a, 0xcb52, 0xceaf, 0xd221, 0xd5a8, 0xd941, 0xdcec,\n    0xe0a7, 0xe470, 0xe847, 0xec29, 0xf015, 0xf409, 0xf803, 0xfc00,\n};\n\nconst q15_t tanhHTable_q15[192] = {\n    0x7b65, 0x7bee, 0x7c66, 0x7cd1, 0x7d30, 0x7d84, 0x7dce, 0x7e0f,\n    0x7e49, 0x7e7d, 0x7eaa, 0x7ed2, 0x7ef5, 0x7f14, 0x7f30, 0x7f48,\n    0x7f5e, 0x7f71, 0x7f82, 0x7f91, 0x7f9e, 0x7fa9, 0x7fb3, 0x7fbc,\n    0x7fc4, 0x7fcb, 0x7fd1, 0x7fd7, 0x7fdc, 0x7fe0, 0x7fe4, 0x7fe7,\n    0x7fea, 0x7fed, 0x7fef, 0x7ff1, 0x7ff3, 0x7ff4, 0x7ff6, 0x7ff7,\n    0x7ff8, 0x7ff9, 0x7ffa, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffc, 0x7ffd,\n    0x7ffd, 0x7ffd, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,\n    0x8000, 0x8000, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8002, 0x8002, 0x8002, 0x8002, 0x8003,\n    0x8003, 0x8003, 0x8004, 0x8004, 0x8005, 0x8006, 0x8006, 0x8007,\n    0x8008, 0x8009, 0x800a, 0x800c, 0x800d, 0x800f, 0x8011, 0x8013,\n    0x8016, 0x8019, 0x801c, 0x8020, 0x8024, 0x8029, 0x802f, 0x8035,\n    0x803c, 0x8044, 0x804d, 0x8057, 0x8062, 0x806f, 0x807e, 0x808f,\n    0x80a2, 0x80b8, 0x80d0, 0x80ec, 0x810b, 0x812e, 0x8156, 0x8183,\n    0x81b7, 0x81f1, 0x8232, 0x827c, 0x82d0, 0x832f, 0x839a, 0x8412,\n};\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_q7_to_q15_no_shift.c\n * Description:  Converts the elements of the Q7 vector to Q15 vector without left-shift\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_nnsupportfunctions.h\"\n\n/**    \n * @ingroup groupSupport    \n */\n\n/**    \n * @addtogroup nndata_convert    \n * @{    \n */\n\n/**    \n * @brief Converts the elements of the Q7 vector to Q15 vector without left-shift \n * @param[in]       *pSrc points to the Q7 input vector    \n * @param[out]      *pDst points to the Q15 output vector   \n * @param[in]       blockSize length of the input vector    \n * @return none.    \n *    \n * \\par Description:    \n *    \n * The equation used for the conversion process is:    \n *   \n * <pre>    \n * \tpDst[n] = (q15_t) pSrc[n];   0 <= n < blockSize.    \n * </pre>    \n *   \n */\n\nvoid arm_q7_to_q15_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize)\n{\n    const q7_t *pIn = pSrc;     /* Src pointer */\n    uint32_t  blkCnt;           /* loop counter */\n\n#ifndef ARM_MATH_CM0_FAMILY\n    q31_t     in;\n    q31_t     in1, in2;\n    q31_t     out1, out2;\n\n    /* Run the below code for Cortex-M4 and Cortex-M3 */\n\n    /*loop Unrolling */\n    blkCnt = blockSize >> 2u;\n\n    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    \n     ** a second loop below computes the remaining 1 to 3 samples. */\n    while (blkCnt > 0u)\n    {\n        /* C = (q15_t) A << 8 */\n        /* convert from q7 to q15 and then store the results in the destination buffer */\n        in = *__SIMD32(pIn)++;\n\n        /* rotatate in by 8 and extend two q7_t values to q15_t values */\n        in1 = __SXTB16(__ROR(in, 8));\n\n        /* extend remainig two q7_t values to q15_t values */\n        in2 = __SXTB16(in);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n\n        out2 = __PKHTB(in1, in2, 16);\n        out1 = __PKHBT(in2, in1, 16);\n\n#else\n\n        out1 = __PKHTB(in1, in2, 16);\n        out2 = __PKHBT(in2, in1, 16);\n\n#endif\n\n        *__SIMD32(pDst)++ = out1;\n        *__SIMD32(pDst)++ = out2;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    \n     ** No loop unrolling is used. */\n    blkCnt = blockSize % 0x4u;\n\n#else\n\n    /* Run the below code for Cortex-M0 */\n\n    /* Loop over blockSize number of values */\n    blkCnt = blockSize;\n\n#endif                          /* #ifndef ARM_MATH_CM0_FAMILY */\n\n    while (blkCnt > 0u)\n    {\n        /* C = (q15_t) A << 8 */\n        /* convert from q7 to q15 and then store the results in the destination buffer */\n        *pDst++ = (q15_t) * pIn++;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n}\n\n/**    \n * @} end of nndata_convert group   \n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_q7_to_q15_reordered_no_shift.c\n * Description:  Converts the elements of the Q7 vector to reordered Q15 vector without left-shift\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_nnsupportfunctions.h\"\n\n/**    \n * @ingroup groupSupport    \n */\n\n/**    \n * @addtogroup nndata_convert    \n * @{    \n */\n\n/**    \n * @brief Converts the elements of the Q7 vector to reordered Q15 vector without left-shift\n * @param[in]       *pSrc points to the Q7 input vector    \n * @param[out]      *pDst points to the Q15 output vector   \n * @param[in]       blockSize length of the input vector    \n * @return none.    \n *    \n * @details\n *\n * This function does the q7 to q15 expansion with re-ordering \n *\n * <pre>\n *                          |   A1   |   A2   |   A3   |   A4   |\n *\n *                           0      7 8     15 16    23 24    31\n * </pre>\n *\n * is converted into:\n *\n * <pre>\n *  |       A1       |       A3       |   and  |       A2       |       A4       |\n *\n *   0             15 16            31          0             15 16            31\n * </pre>\n *\n *\n * This looks strange but is natural considering how sign-extension is done at\n * assembly level. \n *\n * The expansion of other other oprand will follow the same rule so that the end \n * results are the same.\n *\n * The tail (i.e., last (N % 4) elements) will still be in original order.\n *   \n */\n\nvoid arm_q7_to_q15_reordered_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize)\n{\n    const q7_t *pIn = pSrc;     /* Src pointer */\n    uint32_t  blkCnt;           /* loop counter */\n\n#ifndef ARM_MATH_CM0_FAMILY\n    q31_t     in;\n    q31_t     in1, in2;\n\n    /* Run the below code for Cortex-M4 and Cortex-M3 */\n\n    /*loop Unrolling */\n    blkCnt = blockSize >> 2u;\n\n    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    \n     ** a second loop below computes the remaining 1 to 3 samples. */\n    while (blkCnt > 0u)\n    {\n        /* C = (q15_t) A << 8 */\n        /* convert from q7 to q15 and then store the results in the destination buffer */\n        in = *__SIMD32(pIn)++;\n\n        /* rotatate in by 8 and extend two q7_t values to q15_t values */\n        in1 = __SXTB16(__ROR(in, 8));\n\n        /* extend remainig two q7_t values to q15_t values */\n        in2 = __SXTB16(in);\n\n#ifndef ARM_MATH_BIG_ENDIAN\n        *__SIMD32(pDst)++ = in2;\n        *__SIMD32(pDst)++ = in1;\n#else\n        *__SIMD32(pDst)++ = in1;\n        *__SIMD32(pDst)++ = in2;\n#endif\n\n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    \n     ** No loop unrolling is used. */\n    blkCnt = blockSize % 0x4u;\n\n#else\n\n    /* Run the below code for Cortex-M0 */\n\n    /* Loop over blockSize number of values */\n    blkCnt = blockSize;\n\n#endif                          /* #ifndef ARM_MATH_CM0_FAMILY */\n\n    while (blkCnt > 0u)\n    {\n        /* C = (q15_t) A << 8 */\n        /* convert from q7 to q15 and then store the results in the destination buffer */\n        *pDst++ = (q15_t) * pIn++;\n\n        /* Decrement the loop counter */\n        blkCnt--;\n    }\n\n}\n\n/**    \n * @} end of q7_to_x group    \n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_pool_q7_HWC.c\n * Description:  Pooling function implementations\n *\n * $Date:        17. January 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n#if defined (ARM_MATH_DSP)\n\n/**\n * @brief A few utility functions used by pooling functions\n *\n * \n */\n\nstatic void buffer_scale_back_q15_to_q7(q15_t * buffer, q7_t * target, uint16_t length, uint16_t scale)\n{\n    int       i;\n\n    for (i = 0; i < length; i++)\n    {\n        target[i] = (q7_t) (buffer[i] / scale);\n    }\n}\n\nstatic void compare_and_replace_if_larger_q7(q7_t * base,   // base data\n                                             const q7_t * target,   // compare target\n                                             const uint16_t length  // data length\n    )\n{\n    q7_t     *pIn = base;\n    const q7_t     *pCom = target;\n    union arm_nnword in;\n    union arm_nnword com;\n    uint16_t  cnt = length >> 2;\n\n    while (cnt > 0u)\n    {\n        in.word = *__SIMD32(pIn);\n        com.word = *__SIMD32(pCom)++;\n\n        // if version\n        if (com.bytes[0] > in.bytes[0])\n            in.bytes[0] = com.bytes[0];\n        if (com.bytes[1] > in.bytes[1])\n            in.bytes[1] = com.bytes[1];\n        if (com.bytes[2] > in.bytes[2])\n            in.bytes[2] = com.bytes[2];\n        if (com.bytes[3] > in.bytes[3])\n            in.bytes[3] = com.bytes[3];\n\n        *__SIMD32(pIn)++ = in.word;\n\n        cnt--;\n    }\n\n    cnt = length & 0x3;\n    while (cnt > 0u)\n    {\n      if (*pCom > *pIn)\n      {\n        *pIn = *pCom;\n      }\n      pIn++;\n      pCom++;\n      cnt--;\n    }\n}\n\nstatic void accumulate_q7_to_q15(q15_t * base, q7_t * target, const uint16_t length)\n{\n    q15_t    *pCnt = base;\n    q7_t     *pV = target;\n    q31_t     v1, v2, vo1, vo2;\n    uint16_t  cnt = length >> 2;\n    q31_t     in;\n\n    while (cnt > 0u)\n    {\n        q31_t     value = *__SIMD32(pV)++;\n        v1 = __SXTB16(__ROR(value, 8));\n        v2 = __SXTB16(value);\n#ifndef ARM_MATH_BIG_ENDIAN\n\n        vo2 = __PKHTB(v1, v2, 16);\n        vo1 = __PKHBT(v2, v1, 16);\n\n#else\n\n        vo1 = __PKHTB(v1, v2, 16);\n        vo2 = __PKHBT(v2, v1, 16);\n\n#endif\n\n        in = *__SIMD32(pCnt);\n        *__SIMD32(pCnt)++ = __QADD16(vo1, in);\n\n        in = *__SIMD32(pCnt);\n        *__SIMD32(pCnt)++ = __QADD16(vo2, in);\n\n        cnt--;\n    }\n    cnt = length & 0x3;\n    while (cnt > 0u)\n    {\n        *pCnt++ += *pV++;\n        cnt--;\n    }\n}\n\n#endif                          // ARM_MATH_DSP\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup Pooling\n * @{\n */\n\n  /**\n   * @brief Q7 max pooling function\n   * @param[in, out]  Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @return none.\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size:  0\n   *\n   * The pooling function is implemented as split x-pooling then\n   * y-pooling.\n   *\n   * This pooling function is input-destructive. Input data is undefined\n   * after calling this function.\n   *\n   */\n\nvoid\narm_maxpool_q7_HWC(q7_t * Im_in,\n                   const uint16_t dim_im_in,\n                   const uint16_t ch_im_in,\n                   const uint16_t dim_kernel,\n                   const uint16_t padding,\n                   const uint16_t stride, const uint16_t dim_im_out, q7_t * bufferA, q7_t * Im_out)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    int16_t   i_x, i_y;\n\n    /* first does the pooling along x axis */\n    for (i_y = 0; i_y < dim_im_in; i_y++)\n    {\n\n        for (i_x = 0; i_x < dim_im_out; i_x++)\n        {\n            /* for each output pixel */\n            q7_t     *target = Im_in + (i_y * dim_im_in + i_x) * ch_im_in;\n            q7_t     *win_start;\n            q7_t     *win_stop;\n            if (i_x * stride - padding < 0)\n            {\n                win_start = target;\n            } else\n            {\n                win_start = Im_in + (i_y * dim_im_in + i_x * stride - padding) * ch_im_in;\n            }\n\n            if (i_x * stride - padding + dim_kernel >= dim_im_in)\n            {\n                win_stop = Im_in + (i_y * dim_im_in + dim_im_in) * ch_im_in;\n            } else\n            {\n                win_stop = Im_in + (i_y * dim_im_in + i_x * stride - padding + dim_kernel) * ch_im_in;\n            }\n\n            /* first step is to copy over initial data */\n            /* arm_copy_q7(win_start, target, ch_im_in); */\n            memmove(target, win_start, ch_im_in);\n\n            /* start the max operation from the second part */\n            win_start += ch_im_in;\n            for (; win_start < win_stop; win_start += ch_im_in)\n            {\n                compare_and_replace_if_larger_q7(target, win_start, ch_im_in);\n            }\n        }\n    }\n\n    /* then does the pooling along y axis */\n    for (i_y = 0; i_y < dim_im_out; i_y++)\n    {\n\n        /* for each output row */\n        q7_t     *target = Im_out + i_y * dim_im_out * ch_im_in;\n        q7_t     *row_start;\n        q7_t     *row_end;\n        /* setting the starting row */\n        if (i_y * stride - padding < 0)\n        {\n            row_start = Im_in;\n        } else\n        {\n            row_start = Im_in + (i_y * stride - padding) * dim_im_in * ch_im_in;\n        }\n        /* setting the stopping row */\n        if (i_y * stride - padding + dim_kernel >= dim_im_in)\n        {\n            row_end = Im_in + dim_im_in * dim_im_in * ch_im_in;\n        } else\n        {\n            row_end = Im_in + (i_y * stride - padding + dim_kernel) * dim_im_in * ch_im_in;\n        }\n\n        /* copy over the first row */\n        /* arm_copy_q7(row_start, target, dim_im_out * ch_im_in); */\n        memmove(target, row_start, dim_im_out * ch_im_in);\n\n        /* move over to next row */\n        row_start += ch_im_in * dim_im_in;\n\n        for (; row_start < row_end; row_start += dim_im_in * ch_im_in)\n        {\n            compare_and_replace_if_larger_q7(target, row_start, dim_im_out * ch_im_in);\n        }\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\n    int16_t   i_ch_in, i_x, i_y;\n    int16_t   k_x, k_y;\n\n    for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++)\n    {\n        for (i_y = 0; i_y < dim_im_out; i_y++)\n        {\n            for (i_x = 0; i_x < dim_im_out; i_x++)\n            {\n                int       max = -129;\n                for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++)\n                {\n                    for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++)\n                    {\n                        if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in)\n                        {\n                            if (Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)] > max)\n                            {\n                                max = Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)];\n                            }\n                        }\n                    }\n                }\n                Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = max;\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n}\n\n  /**\n   * @brief Q7 average pooling function\n   * @param[in,out]   Im_in       pointer to input tensor\n   * @param[in]       dim_im_in   input tensor dimention\n   * @param[in]       ch_im_in    number of input tensor channels\n   * @param[in]       dim_kernel  filter kernel size\n   * @param[in]       padding     padding sizes\n   * @param[in]       stride      convolution stride\n   * @param[in]       dim_im_out  output tensor dimension\n   * @param[in,out]   bufferA     pointer to buffer space for input\n   * @param[in,out]   Im_out      pointer to output tensor\n   * @return none.\n   *\n   * @details\n   *\n   * <b>Buffer size:</b>\n   *\n   * bufferA size:  2*dim_im_out*ch_im_in\n   *\n   * The pooling function is implemented as split x-pooling then\n   * y-pooling.\n   *\n   * This pooling function is input-destructive. Input data is undefined\n   * after calling this function.\n   *\n   */\n\nvoid\narm_avepool_q7_HWC(q7_t * Im_in,\n                   const uint16_t dim_im_in,\n                   const uint16_t ch_im_in,\n                   const uint16_t dim_kernel,\n                   const uint16_t padding,\n                   const uint16_t stride, const uint16_t dim_im_out, q7_t * bufferA, q7_t * Im_out)\n{\n\n#if defined (ARM_MATH_DSP)\n    /* Run the following code for Cortex-M4 and Cortex-M7 */\n\n    q15_t    *buffer = (q15_t *) bufferA;\n    int16_t   i_x, i_y;\n    int16_t   count = 0;\n\n    /* first does the pooling along x axis */\n    for (i_y = 0; i_y < dim_im_in; i_y++)\n    {\n\n        for (i_x = 0; i_x < dim_im_out; i_x++)\n        {\n            /* for each output pixel */\n            q7_t     *target = Im_in + (i_y * dim_im_in + i_x) * ch_im_in;\n            q7_t     *win_start;\n            q7_t     *win_stop;\n            if (i_x * stride - padding < 0)\n            {\n                win_start = target;\n            } else\n            {\n                win_start = Im_in + (i_y * dim_im_in + i_x * stride - padding) * ch_im_in;\n            }\n\n            if (i_x * stride - padding + dim_kernel >= dim_im_in)\n            {\n                win_stop = Im_in + (i_y * dim_im_in + dim_im_in) * ch_im_in;\n            } else\n            {\n                win_stop = Im_in + (i_y * dim_im_in + i_x * stride - padding + dim_kernel) * ch_im_in;\n            }\n\n            /* first step is to copy over initial data */\n            arm_q7_to_q15_no_shift(win_start, buffer, ch_im_in);\n            count = 1;\n\n            /* start the max operation from the second part */\n            win_start += ch_im_in;\n            for (; win_start < win_stop; win_start += ch_im_in)\n            {\n                accumulate_q7_to_q15(buffer, win_start, ch_im_in);\n                count++;\n            }\n            buffer_scale_back_q15_to_q7(buffer, target, ch_im_in, count);\n        }\n    }\n\n    /* then does the pooling along y axis */\n    for (i_y = 0; i_y < dim_im_out; i_y++)\n    {\n        /* for each output row */\n        q7_t     *target = Im_out + i_y * dim_im_out * ch_im_in;\n        q7_t     *row_start;\n        q7_t     *row_end;\n        /* setting the starting row */\n        if (i_y * stride - padding < 0)\n        {\n            row_start = Im_in;\n        } else\n        {\n            row_start = Im_in + (i_y * stride - padding) * dim_im_in * ch_im_in;\n        }\n        /* setting the stopping row */\n        if (i_y * stride - padding + dim_kernel >= dim_im_in)\n        {\n            row_end = Im_in + dim_im_in * dim_im_in * ch_im_in;\n        } else\n        {\n            row_end = Im_in + (i_y * stride - padding + dim_kernel) * dim_im_in * ch_im_in;\n        }\n\n        /* copy over the first row */\n        arm_q7_to_q15_no_shift(row_start, buffer, dim_im_out * ch_im_in);\n        count = 1;\n\n        /* move over to next row */\n        row_start += ch_im_in * dim_im_in;\n\n        for (; row_start < row_end; row_start += dim_im_in * ch_im_in)\n        {\n            accumulate_q7_to_q15(buffer, row_start, dim_im_out * ch_im_in);\n            count++;\n        }\n        buffer_scale_back_q15_to_q7(buffer, target, dim_im_out * ch_im_in, count);\n    }\n\n#else\n    /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */\n\n    int16_t   i_ch_in, i_x, i_y;\n    int16_t   k_x, k_y;\n\n    for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++)\n    {\n        for (i_y = 0; i_y < dim_im_out; i_y++)\n        {\n            for (i_x = 0; i_x < dim_im_out; i_x++)\n            {\n                int       sum = 0;\n                int       count = 0;\n                for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++)\n                {\n                    for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++)\n                    {\n                        if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in)\n                        {\n                            sum += Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)];\n                            count++;\n                        }\n                    }\n                }\n                Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = sum / count;\n            }\n        }\n    }\n\n#endif                          /* ARM_MATH_DSP */\n\n}\n\n/**\n * @} end of Pooling group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_softmax_q15.c\n * Description:  Q15 softmax function\n *\n * $Date:        20. February 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup Softmax\n * @{\n */\n\n  /**\n   * @brief Q15 softmax function\n   * @param[in]       vec_in      pointer to input vector\n   * @param[in]       dim_vec     input vector dimention\n   * @param[out]      p_out       pointer to output vector\n   * @return none.\n   *\n   * @details\n   *\n   *  Here, instead of typical e based softmax, we use\n   *  2-based softmax, i.e.,:\n   *\n   *  y_i = 2^(x_i) / sum(2^x_j)\n   *\n   *  The relative output will be different here.\n   *  But mathematically, the gradient will be the same\n   *  with a log(2) scaling factor.\n   *\n   */\n\nvoid arm_softmax_q15(const q15_t * vec_in, const uint16_t dim_vec, q15_t * p_out)\n{\n    q31_t     sum;\n    int16_t   i;\n    uint8_t   shift;\n    q31_t     base;\n    base = -1 * 0x100000;\n    for (i = 0; i < dim_vec; i++)\n    {\n        if (vec_in[i] > base)\n        {\n            base = vec_in[i];\n        }\n    }\n\n    /* we ignore really small values  \n     * anyway, they will be 0 after shrinking\n     * to q15_t\n     */\n    base = base - 16;\n\n    sum = 0;\n\n    for (i = 0; i < dim_vec; i++)\n    {\n        if (vec_in[i] > base)\n        {\n            shift = (uint8_t)__USAT(vec_in[i] - base, 5);\n            sum += 0x1 << shift;\n        }\n    }\n\n    /* This is effectively (0x1 << 32) / sum */\n    int64_t div_base = 0x100000000LL;\n    int output_base = (int32_t)(div_base / sum);\n\n    /* Final confidence will be output_base >> ( 17 - (vec_in[i] - base) )\n     * so 32768 (0x1<<15) -> 100% confidence when sum = 0x1 << 16, output_base = 0x1 << 16\n     * and vec_in[i]-base = 16\n     */\n    for (i = 0; i < dim_vec; i++)\n    {\n        if (vec_in[i] > base) \n        {\n            /* Here minimum value of 17+base-vec[i] will be 1 */\n            shift = (uint8_t)__USAT(17+base-vec_in[i], 5);\n            p_out[i] = (q15_t) __SSAT((output_base >> shift), 16);\n        } else\n        {\n            p_out[i] = 0;\n        }\n    }\n\n}\n\n/**\n * @} end of Softmax group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c",
    "content": "/*\n * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* ----------------------------------------------------------------------\n * Project:      CMSIS NN Library\n * Title:        arm_softmax_q7.c\n * Description:  Q7 softmax function\n *\n * $Date:        20. February 2018\n * $Revision:    V.1.0.0\n *\n * Target Processor:  Cortex-M cores\n *\n * -------------------------------------------------------------------- */\n\n#include \"arm_math.h\"\n#include \"arm_nnfunctions.h\"\n\n/**\n *  @ingroup groupNN\n */\n\n/**\n * @addtogroup Softmax\n * @{\n */\n\n  /**\n   * @brief Q7 softmax function\n   * @param[in]       vec_in      pointer to input vector\n   * @param[in]       dim_vec     input vector dimention\n   * @param[out]      p_out       pointer to output vector\n   * @return none.\n   *\n   * @details\n   *\n   *  Here, instead of typical natural logarithm e based softmax, we use\n   *  2-based softmax here, i.e.,:\n   * \n   *  y_i = 2^(x_i) / sum(2^x_j)\n   *\n   *  The relative output will be different here.\n   *  But mathematically, the gradient will be the same\n   *  with a log(2) scaling factor.\n   *\n   */\n\nvoid arm_softmax_q7(const q7_t * vec_in, const uint16_t dim_vec, q7_t * p_out)\n{\n    q31_t     sum;\n    int16_t   i;\n    uint8_t   shift;\n    q15_t     base;\n    base = -257;\n\n    /* We first search for the maximum */\n    for (i = 0; i < dim_vec; i++)\n    {\n        if (vec_in[i] > base)\n        {\n            base = vec_in[i];\n        }\n    }\n\n    /* \n     * So the base is set to max-8, meaning \n     * that we ignore really small values. \n     * anyway, they will be 0 after shrinking to q7_t.\n     */\n    base = base - 8;\n\n    sum = 0;\n\n    for (i = 0; i < dim_vec; i++)\n    {\n        if (vec_in[i] > base) \n        {\n            shift = (uint8_t)__USAT(vec_in[i] - base, 5);\n            sum += 0x1 << shift;\n        }\n    }\n\n    /* This is effectively (0x1 << 20) / sum */\n    int output_base = 0x100000 / sum;\n\n    /* \n     * Final confidence will be output_base >> ( 13 - (vec_in[i] - base) )\n     * so 128 (0x1<<7) -> 100% confidence when sum = 0x1 << 8, output_base = 0x1 << 12 \n     * and vec_in[i]-base = 8\n     */\n    for (i = 0; i < dim_vec; i++) \n    {\n        if (vec_in[i] > base) \n        {\n            /* Here minimum value of 13+base-vec_in[i] will be 5 */\n            shift = (uint8_t)__USAT(13+base-vec_in[i], 5);\n            p_out[i] = (q7_t) __SSAT((output_base >> shift), 8);\n        } else {\n            p_out[i] = 0;\n        }\n    }\n}\n\n/**\n * @} end of Softmax group\n */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS/Template/cmsis_os.h",
    "content": "/* ----------------------------------------------------------------------\n * $Date:        5. February 2013\n * $Revision:    V1.02\n *\n * Project:      CMSIS-RTOS API\n * Title:        cmsis_os.h template header file\n *\n * Version 0.02\n *    Initial Proposal Phase\n * Version 0.03\n *    osKernelStart added, optional feature: main started as thread\n *    osSemaphores have standard behavior\n *    osTimerCreate does not start the timer, added osTimerStart\n *    osThreadPass is renamed to osThreadYield\n * Version 1.01\n *    Support for C++ interface\n *     - const attribute removed from the osXxxxDef_t typedef's\n *     - const attribute added to the osXxxxDef macros\n *    Added: osTimerDelete, osMutexDelete, osSemaphoreDelete\n *    Added: osKernelInitialize\n * Version 1.02\n *    Control functions for short timeouts in microsecond resolution:\n *    Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec\n *    Removed: osSignalGet \n *----------------------------------------------------------------------------\n *\n * Copyright (c) 2013-2017 ARM LIMITED\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *---------------------------------------------------------------------------*/\n \n \n#ifndef _CMSIS_OS_H\n#define _CMSIS_OS_H\n \n/// \\note MUST REMAIN UNCHANGED: \\b osCMSIS identifies the CMSIS-RTOS API version.\n#define osCMSIS           0x10002      ///< API version (main [31:16] .sub [15:0])\n \n/// \\note CAN BE CHANGED: \\b osCMSIS_KERNEL identifies the underlying RTOS kernel and version number.\n#define osCMSIS_KERNEL    0x10000\t   ///< RTOS identification and version (main [31:16] .sub [15:0])\n \n/// \\note MUST REMAIN UNCHANGED: \\b osKernelSystemId shall be consistent in every CMSIS-RTOS.\n#define osKernelSystemId \"KERNEL V1.00\"   ///< RTOS identification string\n \n/// \\note MUST REMAIN UNCHANGED: \\b osFeature_xxx shall be consistent in every CMSIS-RTOS.\n#define osFeature_MainThread   1       ///< main thread      1=main can be thread, 0=not available\n#define osFeature_Pool         1       ///< Memory Pools:    1=available, 0=not available\n#define osFeature_MailQ        1       ///< Mail Queues:     1=available, 0=not available\n#define osFeature_MessageQ     1       ///< Message Queues:  1=available, 0=not available\n#define osFeature_Signals      8       ///< maximum number of Signal Flags available per thread\n#define osFeature_Semaphore    30      ///< maximum count for \\ref osSemaphoreCreate function\n#define osFeature_Wait         1       ///< osWait function: 1=available, 0=not available\n#define osFeature_SysTick      1       ///< osKernelSysTick functions: 1=available, 0=not available\n \n#include <stdint.h>\n#include <stddef.h>\n \n#ifdef  __cplusplus\nextern \"C\"\n{\n#endif\n \n \n// ==== Enumeration, structures, defines ====\n \n/// Priority used for thread control.\n/// \\note MUST REMAIN UNCHANGED: \\b osPriority shall be consistent in every CMSIS-RTOS.\ntypedef enum  {\n  osPriorityIdle          = -3,          ///< priority: idle (lowest)\n  osPriorityLow           = -2,          ///< priority: low\n  osPriorityBelowNormal   = -1,          ///< priority: below normal\n  osPriorityNormal        =  0,          ///< priority: normal (default)\n  osPriorityAboveNormal   = +1,          ///< priority: above normal\n  osPriorityHigh          = +2,          ///< priority: high\n  osPriorityRealtime      = +3,          ///< priority: realtime (highest)\n  osPriorityError         =  0x84        ///< system cannot determine priority or thread has illegal priority\n} osPriority;\n \n/// Timeout value.\n/// \\note MUST REMAIN UNCHANGED: \\b osWaitForever shall be consistent in every CMSIS-RTOS.\n#define osWaitForever     0xFFFFFFFF     ///< wait forever timeout value\n \n/// Status code values returned by CMSIS-RTOS functions.\n/// \\note MUST REMAIN UNCHANGED: \\b osStatus shall be consistent in every CMSIS-RTOS.\ntypedef enum  {\n  osOK                    =     0,       ///< function completed; no error or event occurred.\n  osEventSignal           =  0x08,       ///< function completed; signal event occurred.\n  osEventMessage          =  0x10,       ///< function completed; message event occurred.\n  osEventMail             =  0x20,       ///< function completed; mail event occurred.\n  osEventTimeout          =  0x40,       ///< function completed; timeout occurred.\n  osErrorParameter        =  0x80,       ///< parameter error: a mandatory parameter was missing or specified an incorrect object.\n  osErrorResource         =  0x81,       ///< resource not available: a specified resource was not available.\n  osErrorTimeoutResource  =  0xC1,       ///< resource not available within given time: a specified resource was not available within the timeout period.\n  osErrorISR              =  0x82,       ///< not allowed in ISR context: the function cannot be called from interrupt service routines.\n  osErrorISRRecursive     =  0x83,       ///< function called multiple times from ISR with same object.\n  osErrorPriority         =  0x84,       ///< system cannot determine priority or thread has illegal priority.\n  osErrorNoMemory         =  0x85,       ///< system is out of memory: it was impossible to allocate or reserve memory for the operation.\n  osErrorValue            =  0x86,       ///< value of a parameter is out of range.\n  osErrorOS               =  0xFF,       ///< unspecified RTOS error: run-time error but no other error message fits.\n  os_status_reserved      =  0x7FFFFFFF  ///< prevent from enum down-size compiler optimization.\n} osStatus;\n \n \n/// Timer type value for the timer definition.\n/// \\note MUST REMAIN UNCHANGED: \\b os_timer_type shall be consistent in every CMSIS-RTOS.\ntypedef enum  {\n  osTimerOnce             =     0,       ///< one-shot timer\n  osTimerPeriodic         =     1        ///< repeating timer\n} os_timer_type;\n \n/// Entry point of a thread.\n/// \\note MUST REMAIN UNCHANGED: \\b os_pthread shall be consistent in every CMSIS-RTOS.\ntypedef void (*os_pthread) (void const *argument);\n \n/// Entry point of a timer call back function.\n/// \\note MUST REMAIN UNCHANGED: \\b os_ptimer shall be consistent in every CMSIS-RTOS.\ntypedef void (*os_ptimer) (void const *argument);\n \n// >>> the following data type definitions may shall adapted towards a specific RTOS\n \n/// Thread ID identifies the thread (pointer to a thread control block).\n/// \\note CAN BE CHANGED: \\b os_thread_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_thread_cb *osThreadId;\n \n/// Timer ID identifies the timer (pointer to a timer control block).\n/// \\note CAN BE CHANGED: \\b os_timer_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_timer_cb *osTimerId;\n \n/// Mutex ID identifies the mutex (pointer to a mutex control block).\n/// \\note CAN BE CHANGED: \\b os_mutex_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_mutex_cb *osMutexId;\n \n/// Semaphore ID identifies the semaphore (pointer to a semaphore control block).\n/// \\note CAN BE CHANGED: \\b os_semaphore_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_semaphore_cb *osSemaphoreId;\n \n/// Pool ID identifies the memory pool (pointer to a memory pool control block).\n/// \\note CAN BE CHANGED: \\b os_pool_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_pool_cb *osPoolId;\n \n/// Message ID identifies the message queue (pointer to a message queue control block).\n/// \\note CAN BE CHANGED: \\b os_messageQ_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_messageQ_cb *osMessageQId;\n \n/// Mail ID identifies the mail queue (pointer to a mail queue control block).\n/// \\note CAN BE CHANGED: \\b os_mailQ_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_mailQ_cb *osMailQId;\n \n \n/// Thread Definition structure contains startup information of a thread.\n/// \\note CAN BE CHANGED: \\b os_thread_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_thread_def  {\n  os_pthread               pthread;    ///< start address of thread function\n  osPriority             tpriority;    ///< initial thread priority\n  uint32_t               instances;    ///< maximum number of instances of that thread function\n  uint32_t               stacksize;    ///< stack size requirements in bytes; 0 is default stack size\n} osThreadDef_t;\n \n/// Timer Definition structure contains timer parameters.\n/// \\note CAN BE CHANGED: \\b os_timer_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_timer_def  {\n  os_ptimer                 ptimer;    ///< start address of a timer function\n} osTimerDef_t;\n \n/// Mutex Definition structure contains setup information for a mutex.\n/// \\note CAN BE CHANGED: \\b os_mutex_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_mutex_def  {\n  uint32_t                   dummy;    ///< dummy value.\n} osMutexDef_t;\n \n/// Semaphore Definition structure contains setup information for a semaphore.\n/// \\note CAN BE CHANGED: \\b os_semaphore_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_semaphore_def  {\n  uint32_t                   dummy;    ///< dummy value.\n} osSemaphoreDef_t;\n \n/// Definition structure for memory block allocation.\n/// \\note CAN BE CHANGED: \\b os_pool_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_pool_def  {\n  uint32_t                 pool_sz;    ///< number of items (elements) in the pool\n  uint32_t                 item_sz;    ///< size of an item\n  void                       *pool;    ///< pointer to memory for pool\n} osPoolDef_t;\n \n/// Definition structure for message queue.\n/// \\note CAN BE CHANGED: \\b os_messageQ_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_messageQ_def  {\n  uint32_t                queue_sz;    ///< number of elements in the queue\n  uint32_t                 item_sz;    ///< size of an item\n  void                       *pool;    ///< memory array for messages\n} osMessageQDef_t;\n \n/// Definition structure for mail queue.\n/// \\note CAN BE CHANGED: \\b os_mailQ_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_mailQ_def  {\n  uint32_t                queue_sz;    ///< number of elements in the queue\n  uint32_t                 item_sz;    ///< size of an item\n  void                       *pool;    ///< memory array for mail\n} osMailQDef_t;\n \n/// Event structure contains detailed information about an event.\n/// \\note MUST REMAIN UNCHANGED: \\b os_event shall be consistent in every CMSIS-RTOS.\n///       However the struct may be extended at the end.\ntypedef struct  {\n  osStatus                 status;     ///< status code: event or error information\n  union  {\n    uint32_t                    v;     ///< message as 32-bit value\n    void                       *p;     ///< message or mail as void pointer\n    int32_t               signals;     ///< signal flags\n  } value;                             ///< event value\n  union  {\n    osMailQId             mail_id;     ///< mail id obtained by \\ref osMailCreate\n    osMessageQId       message_id;     ///< message id obtained by \\ref osMessageCreate\n  } def;                               ///< event definition\n} osEvent;\n \n \n//  ==== Kernel Control Functions ====\n \n/// Initialize the RTOS Kernel for creating objects.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osKernelInitialize shall be consistent in every CMSIS-RTOS.\nosStatus osKernelInitialize (void);\n \n/// Start the RTOS Kernel.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osKernelStart shall be consistent in every CMSIS-RTOS.\nosStatus osKernelStart (void);\n \n/// Check if the RTOS kernel is already started.\n/// \\note MUST REMAIN UNCHANGED: \\b osKernelRunning shall be consistent in every CMSIS-RTOS.\n/// \\return 0 RTOS is not started, 1 RTOS is started.\nint32_t osKernelRunning(void);\n \n#if (defined (osFeature_SysTick)  &&  (osFeature_SysTick != 0))     // System Timer available\n \n/// Get the RTOS kernel system timer counter \n/// \\note MUST REMAIN UNCHANGED: \\b osKernelSysTick shall be consistent in every CMSIS-RTOS.\n/// \\return RTOS kernel system timer as 32-bit value \nuint32_t osKernelSysTick (void);\n \n/// The RTOS kernel system timer frequency in Hz\n/// \\note Reflects the system timer setting and is typically defined in a configuration file.\n#define osKernelSysTickFrequency 100000000\n \n/// Convert a microseconds value to a RTOS kernel system timer value.\n/// \\param         microsec     time value in microseconds.\n/// \\return time value normalized to the \\ref osKernelSysTickFrequency\n#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)\n \n#endif    // System Timer available\n \n//  ==== Thread Management ====\n \n/// Create a Thread Definition with function, priority, and stack requirements.\n/// \\param         name         name of the thread function.\n/// \\param         priority     initial priority of the thread function.\n/// \\param         instances    number of possible thread instances.\n/// \\param         stacksz      stack size (in bytes) requirements for the thread function.\n/// \\note CAN BE CHANGED: The parameters to \\b osThreadDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osThreadDef(name, priority, instances, stacksz)  \\\nextern const osThreadDef_t os_thread_def_##name\n#else                            // define the object\n#define osThreadDef(name, priority, instances, stacksz)  \\\nconst osThreadDef_t os_thread_def_##name = \\\n{ (name), (priority), (instances), (stacksz)  }\n#endif\n \n/// Access a Thread definition.\n/// \\param         name          name of the thread definition object.\n/// \\note CAN BE CHANGED: The parameter to \\b osThread shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osThread(name)  \\\n&os_thread_def_##name\n \n/// Create a thread and add it to Active Threads and set it to state READY.\n/// \\param[in]     thread_def    thread definition referenced with \\ref osThread.\n/// \\param[in]     argument      pointer that is passed to the thread function as start argument.\n/// \\return thread ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadCreate shall be consistent in every CMSIS-RTOS.\nosThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument);\n \n/// Return the thread ID of the current running thread.\n/// \\return thread ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadGetId shall be consistent in every CMSIS-RTOS.\nosThreadId osThreadGetId (void);\n \n/// Terminate execution of a thread and remove it from Active Threads.\n/// \\param[in]     thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadTerminate shall be consistent in every CMSIS-RTOS.\nosStatus osThreadTerminate (osThreadId thread_id);\n \n/// Pass control to next thread that is in state \\b READY.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadYield shall be consistent in every CMSIS-RTOS.\nosStatus osThreadYield (void);\n \n/// Change priority of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     priority      new priority value for the thread function.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadSetPriority shall be consistent in every CMSIS-RTOS.\nosStatus osThreadSetPriority (osThreadId thread_id, osPriority priority);\n \n/// Get current priority of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\return current priority value of the thread function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadGetPriority shall be consistent in every CMSIS-RTOS.\nosPriority osThreadGetPriority (osThreadId thread_id);\n \n \n//  ==== Generic Wait Functions ====\n \n/// Wait for Timeout (Time Delay).\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue \"time delay\" value\n/// \\return status code that indicates the execution status of the function.\nosStatus osDelay (uint32_t millisec);\n \n#if (defined (osFeature_Wait)  &&  (osFeature_Wait != 0))     // Generic Wait available\n \n/// Wait for Signal, Message, Mail, or Timeout.\n/// \\param[in] millisec          \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out\n/// \\return event that contains signal, message, or mail information or error code.\n/// \\note MUST REMAIN UNCHANGED: \\b osWait shall be consistent in every CMSIS-RTOS.\nosEvent osWait (uint32_t millisec);\n \n#endif  // Generic Wait available\n \n \n//  ==== Timer Management Functions ====\n/// Define a Timer object.\n/// \\param         name          name of the timer object.\n/// \\param         function      name of the timer call back function.\n/// \\note CAN BE CHANGED: The parameter to \\b osTimerDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osTimerDef(name, function)  \\\nextern const osTimerDef_t os_timer_def_##name\n#else                            // define the object\n#define osTimerDef(name, function)  \\\nconst osTimerDef_t os_timer_def_##name = \\\n{ (function) }\n#endif\n \n/// Access a Timer definition.\n/// \\param         name          name of the timer object.\n/// \\note CAN BE CHANGED: The parameter to \\b osTimer shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osTimer(name) \\\n&os_timer_def_##name\n \n/// Create a timer.\n/// \\param[in]     timer_def     timer object referenced with \\ref osTimer.\n/// \\param[in]     type          osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.\n/// \\param[in]     argument      argument to the timer call back function.\n/// \\return timer ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerCreate shall be consistent in every CMSIS-RTOS.\nosTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument);\n \n/// Start or restart a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue \"time delay\" value of the timer.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerStart shall be consistent in every CMSIS-RTOS.\nosStatus osTimerStart (osTimerId timer_id, uint32_t millisec);\n \n/// Stop the timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerStop shall be consistent in every CMSIS-RTOS.\nosStatus osTimerStop (osTimerId timer_id);\n \n/// Delete a timer that was created by \\ref osTimerCreate.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerDelete shall be consistent in every CMSIS-RTOS.\nosStatus osTimerDelete (osTimerId timer_id);\n \n \n//  ==== Signal Management ====\n \n/// Set the specified Signal Flags of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     signals       specifies the signal flags of the thread that should be set.\n/// \\return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.\n/// \\note MUST REMAIN UNCHANGED: \\b osSignalSet shall be consistent in every CMSIS-RTOS.\nint32_t osSignalSet (osThreadId thread_id, int32_t signals);\n \n/// Clear the specified Signal Flags of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     signals       specifies the signal flags of the thread that shall be cleared.\n/// \\return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR.\n/// \\note MUST REMAIN UNCHANGED: \\b osSignalClear shall be consistent in every CMSIS-RTOS.\nint32_t osSignalClear (osThreadId thread_id, int32_t signals);\n \n/// Wait for one or more Signal Flags to become signaled for the current \\b RUNNING thread.\n/// \\param[in]     signals       wait until all specified signal flags set or 0 for any single signal flag.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return event flag information or error code.\n/// \\note MUST REMAIN UNCHANGED: \\b osSignalWait shall be consistent in every CMSIS-RTOS.\nosEvent osSignalWait (int32_t signals, uint32_t millisec);\n \n \n//  ==== Mutex Management ====\n \n/// Define a Mutex.\n/// \\param         name          name of the mutex object.\n/// \\note CAN BE CHANGED: The parameter to \\b osMutexDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMutexDef(name)  \\\nextern const osMutexDef_t os_mutex_def_##name\n#else                            // define the object\n#define osMutexDef(name)  \\\nconst osMutexDef_t os_mutex_def_##name = { 0 }\n#endif\n \n/// Access a Mutex definition.\n/// \\param         name          name of the mutex object.\n/// \\note CAN BE CHANGED: The parameter to \\b osMutex shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMutex(name)  \\\n&os_mutex_def_##name\n \n/// Create and Initialize a Mutex object.\n/// \\param[in]     mutex_def     mutex definition referenced with \\ref osMutex.\n/// \\return mutex ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexCreate shall be consistent in every CMSIS-RTOS.\nosMutexId osMutexCreate (const osMutexDef_t *mutex_def);\n \n/// Wait until a Mutex becomes available.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexWait shall be consistent in every CMSIS-RTOS.\nosStatus osMutexWait (osMutexId mutex_id, uint32_t millisec);\n \n/// Release a Mutex that was obtained by \\ref osMutexWait.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexRelease shall be consistent in every CMSIS-RTOS.\nosStatus osMutexRelease (osMutexId mutex_id);\n \n/// Delete a Mutex that was created by \\ref osMutexCreate.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexDelete shall be consistent in every CMSIS-RTOS.\nosStatus osMutexDelete (osMutexId mutex_id);\n \n \n//  ==== Semaphore Management Functions ====\n \n#if (defined (osFeature_Semaphore)  &&  (osFeature_Semaphore != 0))     // Semaphore available\n \n/// Define a Semaphore object.\n/// \\param         name          name of the semaphore object.\n/// \\note CAN BE CHANGED: The parameter to \\b osSemaphoreDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osSemaphoreDef(name)  \\\nextern const osSemaphoreDef_t os_semaphore_def_##name\n#else                            // define the object\n#define osSemaphoreDef(name)  \\\nconst osSemaphoreDef_t os_semaphore_def_##name = { 0 }\n#endif\n \n/// Access a Semaphore definition.\n/// \\param         name          name of the semaphore object.\n/// \\note CAN BE CHANGED: The parameter to \\b osSemaphore shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osSemaphore(name)  \\\n&os_semaphore_def_##name\n \n/// Create and Initialize a Semaphore object used for managing resources.\n/// \\param[in]     semaphore_def semaphore definition referenced with \\ref osSemaphore.\n/// \\param[in]     count         number of available resources.\n/// \\return semaphore ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreCreate shall be consistent in every CMSIS-RTOS.\nosSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count);\n \n/// Wait until a Semaphore token becomes available.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return number of available tokens, or -1 in case of incorrect parameters.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreWait shall be consistent in every CMSIS-RTOS.\nint32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec);\n \n/// Release a Semaphore token.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreRelease shall be consistent in every CMSIS-RTOS.\nosStatus osSemaphoreRelease (osSemaphoreId semaphore_id);\n \n/// Delete a Semaphore that was created by \\ref osSemaphoreCreate.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreDelete shall be consistent in every CMSIS-RTOS.\nosStatus osSemaphoreDelete (osSemaphoreId semaphore_id);\n \n#endif     // Semaphore available\n \n \n//  ==== Memory Pool Management Functions ====\n \n#if (defined (osFeature_Pool)  &&  (osFeature_Pool != 0))  // Memory Pool Management available\n \n/// \\brief Define a Memory Pool.\n/// \\param         name          name of the memory pool.\n/// \\param         no            maximum number of blocks (objects) in the memory pool.\n/// \\param         type          data type of a single block (object).\n/// \\note CAN BE CHANGED: The parameter to \\b osPoolDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osPoolDef(name, no, type)   \\\nextern const osPoolDef_t os_pool_def_##name\n#else                            // define the object\n#define osPoolDef(name, no, type)   \\\nconst osPoolDef_t os_pool_def_##name = \\\n{ (no), sizeof(type), NULL }\n#endif\n \n/// \\brief Access a Memory Pool definition.\n/// \\param         name          name of the memory pool\n/// \\note CAN BE CHANGED: The parameter to \\b osPool shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osPool(name) \\\n&os_pool_def_##name\n \n/// Create and Initialize a memory pool.\n/// \\param[in]     pool_def      memory pool definition referenced with \\ref osPool.\n/// \\return memory pool ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolCreate shall be consistent in every CMSIS-RTOS.\nosPoolId osPoolCreate (const osPoolDef_t *pool_def);\n \n/// Allocate a memory block from a memory pool.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\return address of the allocated memory block or NULL in case of no memory available.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osPoolAlloc (osPoolId pool_id);\n \n/// Allocate a memory block from a memory pool and set memory block to zero.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\return address of the allocated memory block or NULL in case of no memory available.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolCAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osPoolCAlloc (osPoolId pool_id);\n \n/// Return an allocated memory block back to a specific memory pool.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\param[in]     block         address of the allocated memory block that is returned to the memory pool.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolFree shall be consistent in every CMSIS-RTOS.\nosStatus osPoolFree (osPoolId pool_id, void *block);\n \n#endif   // Memory Pool Management available\n \n \n//  ==== Message Queue Management Functions ====\n \n#if (defined (osFeature_MessageQ)  &&  (osFeature_MessageQ != 0))     // Message Queues available\n \n/// \\brief Create a Message Queue Definition.\n/// \\param         name          name of the queue.\n/// \\param         queue_sz      maximum number of messages in the queue.\n/// \\param         type          data type of a single message element (for debugger).\n/// \\note CAN BE CHANGED: The parameter to \\b osMessageQDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMessageQDef(name, queue_sz, type)   \\\nextern const osMessageQDef_t os_messageQ_def_##name\n#else                            // define the object\n#define osMessageQDef(name, queue_sz, type)   \\\nconst osMessageQDef_t os_messageQ_def_##name = \\\n{ (queue_sz), sizeof (type)  }\n#endif\n \n/// \\brief Access a Message Queue Definition.\n/// \\param         name          name of the queue\n/// \\note CAN BE CHANGED: The parameter to \\b osMessageQ shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMessageQ(name) \\\n&os_messageQ_def_##name\n \n/// Create and Initialize a Message Queue.\n/// \\param[in]     queue_def     queue definition referenced with \\ref osMessageQ.\n/// \\param[in]     thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n/// \\return message queue ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMessageCreate shall be consistent in every CMSIS-RTOS.\nosMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id);\n \n/// Put a Message to a Queue.\n/// \\param[in]     queue_id      message queue ID obtained with \\ref osMessageCreate.\n/// \\param[in]     info          message information.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMessagePut shall be consistent in every CMSIS-RTOS.\nosStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec);\n \n/// Get a Message or Wait for a Message from a Queue.\n/// \\param[in]     queue_id      message queue ID obtained with \\ref osMessageCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return event information that includes status code.\n/// \\note MUST REMAIN UNCHANGED: \\b osMessageGet shall be consistent in every CMSIS-RTOS.\nosEvent osMessageGet (osMessageQId queue_id, uint32_t millisec);\n \n#endif     // Message Queues available\n \n \n//  ==== Mail Queue Management Functions ====\n \n#if (defined (osFeature_MailQ)  &&  (osFeature_MailQ != 0))     // Mail Queues available\n \n/// \\brief Create a Mail Queue Definition.\n/// \\param         name          name of the queue\n/// \\param         queue_sz      maximum number of messages in queue\n/// \\param         type          data type of a single message element\n/// \\note CAN BE CHANGED: The parameter to \\b osMailQDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMailQDef(name, queue_sz, type) \\\nextern const osMailQDef_t os_mailQ_def_##name\n#else                            // define the object\n#define osMailQDef(name, queue_sz, type) \\\nconst osMailQDef_t os_mailQ_def_##name =  \\\n{ (queue_sz), sizeof (type) }\n#endif\n \n/// \\brief Access a Mail Queue Definition.\n/// \\param         name          name of the queue\n/// \\note CAN BE CHANGED: The parameter to \\b osMailQ shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMailQ(name)  \\\n&os_mailQ_def_##name\n \n/// Create and Initialize mail queue.\n/// \\param[in]     queue_def     reference to the mail queue definition obtain with \\ref osMailQ\n/// \\param[in]     thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n/// \\return mail queue ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailCreate shall be consistent in every CMSIS-RTOS.\nosMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id);\n \n/// Allocate a memory block from a mail.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out\n/// \\return pointer to memory block that can be filled with mail or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osMailAlloc (osMailQId queue_id, uint32_t millisec);\n \n/// Allocate a memory block from a mail and set memory block to zero.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out\n/// \\return pointer to memory block that can be filled with mail or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailCAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osMailCAlloc (osMailQId queue_id, uint32_t millisec);\n \n/// Put a mail to a queue.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     mail          memory block previously allocated with \\ref osMailAlloc or \\ref osMailCAlloc.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailPut shall be consistent in every CMSIS-RTOS.\nosStatus osMailPut (osMailQId queue_id, void *mail);\n \n/// Get a mail from a queue.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out\n/// \\return event that contains mail information or error code.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailGet shall be consistent in every CMSIS-RTOS.\nosEvent osMailGet (osMailQId queue_id, uint32_t millisec);\n \n/// Free a memory block from a mail.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     mail          pointer to the memory block that was obtained with \\ref osMailGet.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailFree shall be consistent in every CMSIS-RTOS.\nosStatus osMailFree (osMailQId queue_id, void *mail);\n \n#endif  // Mail Queues available\n \n \n#ifdef  __cplusplus\n}\n#endif\n \n#endif  // _CMSIS_OS_H\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS2/Include/cmsis_os2.h",
    "content": "/*\n * Copyright (c) 2013-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * ----------------------------------------------------------------------\n *\n * $Date:        18. June 2018\n * $Revision:    V2.1.3\n *\n * Project:      CMSIS-RTOS2 API\n * Title:        cmsis_os2.h header file\n *\n * Version 2.1.3\n *    Additional functions allowed to be called from Interrupt Service Routines:\n *    - osThreadGetId\n * Version 2.1.2\n *    Additional functions allowed to be called from Interrupt Service Routines:\n *    - osKernelGetInfo, osKernelGetState\n * Version 2.1.1\n *    Additional functions allowed to be called from Interrupt Service Routines:\n *    - osKernelGetTickCount, osKernelGetTickFreq\n *    Changed Kernel Tick type to uint32_t:\n *    - updated: osKernelGetTickCount, osDelayUntil\n * Version 2.1.0\n *    Support for critical and uncritical sections (nesting safe):\n *    - updated: osKernelLock, osKernelUnlock\n *    - added: osKernelRestoreLock\n *    Updated Thread and Event Flags:\n *    - changed flags parameter and return type from int32_t to uint32_t\n * Version 2.0.0\n *    Initial Release\n *---------------------------------------------------------------------------*/\n \n#ifndef CMSIS_OS2_H_\n#define CMSIS_OS2_H_\n \n#ifndef __NO_RETURN\n#if   defined(__CC_ARM)\n#define __NO_RETURN __declspec(noreturn)\n#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\n#define __NO_RETURN __attribute__((__noreturn__))\n#elif defined(__GNUC__)\n#define __NO_RETURN __attribute__((__noreturn__))\n#elif defined(__ICCARM__)\n#define __NO_RETURN __noreturn\n#else\n#define __NO_RETURN\n#endif\n#endif\n \n#include <stdint.h>\n#include <stddef.h>\n \n#ifdef  __cplusplus\nextern \"C\"\n{\n#endif\n \n \n//  ==== Enumerations, structures, defines ====\n \n/// Version information.\ntypedef struct {\n  uint32_t                       api;   ///< API version (major.minor.rev: mmnnnrrrr dec).\n  uint32_t                    kernel;   ///< Kernel version (major.minor.rev: mmnnnrrrr dec).\n} osVersion_t;\n \n/// Kernel state.\ntypedef enum {\n  osKernelInactive        =  0,         ///< Inactive.\n  osKernelReady           =  1,         ///< Ready.\n  osKernelRunning         =  2,         ///< Running.\n  osKernelLocked          =  3,         ///< Locked.\n  osKernelSuspended       =  4,         ///< Suspended.\n  osKernelError           = -1,         ///< Error.\n  osKernelReserved        = 0x7FFFFFFFU ///< Prevents enum down-size compiler optimization.\n} osKernelState_t;\n \n/// Thread state.\ntypedef enum {\n  osThreadInactive        =  0,         ///< Inactive.\n  osThreadReady           =  1,         ///< Ready.\n  osThreadRunning         =  2,         ///< Running.\n  osThreadBlocked         =  3,         ///< Blocked.\n  osThreadTerminated      =  4,         ///< Terminated.\n  osThreadError           = -1,         ///< Error.\n  osThreadReserved        = 0x7FFFFFFF  ///< Prevents enum down-size compiler optimization.\n} osThreadState_t;\n \n/// Priority values.\ntypedef enum {\n  osPriorityNone          =  0,         ///< No priority (not initialized).\n  osPriorityIdle          =  1,         ///< Reserved for Idle thread.\n  osPriorityLow           =  8,         ///< Priority: low\n  osPriorityLow1          =  8+1,       ///< Priority: low + 1\n  osPriorityLow2          =  8+2,       ///< Priority: low + 2\n  osPriorityLow3          =  8+3,       ///< Priority: low + 3\n  osPriorityLow4          =  8+4,       ///< Priority: low + 4\n  osPriorityLow5          =  8+5,       ///< Priority: low + 5\n  osPriorityLow6          =  8+6,       ///< Priority: low + 6\n  osPriorityLow7          =  8+7,       ///< Priority: low + 7\n  osPriorityBelowNormal   = 16,         ///< Priority: below normal\n  osPriorityBelowNormal1  = 16+1,       ///< Priority: below normal + 1\n  osPriorityBelowNormal2  = 16+2,       ///< Priority: below normal + 2\n  osPriorityBelowNormal3  = 16+3,       ///< Priority: below normal + 3\n  osPriorityBelowNormal4  = 16+4,       ///< Priority: below normal + 4\n  osPriorityBelowNormal5  = 16+5,       ///< Priority: below normal + 5\n  osPriorityBelowNormal6  = 16+6,       ///< Priority: below normal + 6\n  osPriorityBelowNormal7  = 16+7,       ///< Priority: below normal + 7\n  osPriorityNormal        = 24,         ///< Priority: normal\n  osPriorityNormal1       = 24+1,       ///< Priority: normal + 1\n  osPriorityNormal2       = 24+2,       ///< Priority: normal + 2\n  osPriorityNormal3       = 24+3,       ///< Priority: normal + 3\n  osPriorityNormal4       = 24+4,       ///< Priority: normal + 4\n  osPriorityNormal5       = 24+5,       ///< Priority: normal + 5\n  osPriorityNormal6       = 24+6,       ///< Priority: normal + 6\n  osPriorityNormal7       = 24+7,       ///< Priority: normal + 7\n  osPriorityAboveNormal   = 32,         ///< Priority: above normal\n  osPriorityAboveNormal1  = 32+1,       ///< Priority: above normal + 1\n  osPriorityAboveNormal2  = 32+2,       ///< Priority: above normal + 2\n  osPriorityAboveNormal3  = 32+3,       ///< Priority: above normal + 3\n  osPriorityAboveNormal4  = 32+4,       ///< Priority: above normal + 4\n  osPriorityAboveNormal5  = 32+5,       ///< Priority: above normal + 5\n  osPriorityAboveNormal6  = 32+6,       ///< Priority: above normal + 6\n  osPriorityAboveNormal7  = 32+7,       ///< Priority: above normal + 7\n  osPriorityHigh          = 40,         ///< Priority: high\n  osPriorityHigh1         = 40+1,       ///< Priority: high + 1\n  osPriorityHigh2         = 40+2,       ///< Priority: high + 2\n  osPriorityHigh3         = 40+3,       ///< Priority: high + 3\n  osPriorityHigh4         = 40+4,       ///< Priority: high + 4\n  osPriorityHigh5         = 40+5,       ///< Priority: high + 5\n  osPriorityHigh6         = 40+6,       ///< Priority: high + 6\n  osPriorityHigh7         = 40+7,       ///< Priority: high + 7\n  osPriorityRealtime      = 48,         ///< Priority: realtime\n  osPriorityRealtime1     = 48+1,       ///< Priority: realtime + 1\n  osPriorityRealtime2     = 48+2,       ///< Priority: realtime + 2\n  osPriorityRealtime3     = 48+3,       ///< Priority: realtime + 3\n  osPriorityRealtime4     = 48+4,       ///< Priority: realtime + 4\n  osPriorityRealtime5     = 48+5,       ///< Priority: realtime + 5\n  osPriorityRealtime6     = 48+6,       ///< Priority: realtime + 6\n  osPriorityRealtime7     = 48+7,       ///< Priority: realtime + 7\n  osPriorityISR           = 56,         ///< Reserved for ISR deferred thread.\n  osPriorityError         = -1,         ///< System cannot determine priority or illegal priority.\n  osPriorityReserved      = 0x7FFFFFFF  ///< Prevents enum down-size compiler optimization.\n} osPriority_t;\n \n/// Entry point of a thread.\ntypedef void (*osThreadFunc_t) (void *argument);\n \n/// Timer callback function.\ntypedef void (*osTimerFunc_t) (void *argument);\n \n/// Timer type.\ntypedef enum {\n  osTimerOnce               = 0,          ///< One-shot timer.\n  osTimerPeriodic           = 1           ///< Repeating timer.\n} osTimerType_t;\n \n// Timeout value.\n#define osWaitForever         0xFFFFFFFFU ///< Wait forever timeout value.\n \n// Flags options (\\ref osThreadFlagsWait and \\ref osEventFlagsWait).\n#define osFlagsWaitAny        0x00000000U ///< Wait for any flag (default).\n#define osFlagsWaitAll        0x00000001U ///< Wait for all flags.\n#define osFlagsNoClear        0x00000002U ///< Do not clear flags which have been specified to wait for.\n \n// Flags errors (returned by osThreadFlagsXxxx and osEventFlagsXxxx).\n#define osFlagsError          0x80000000U ///< Error indicator.\n#define osFlagsErrorUnknown   0xFFFFFFFFU ///< osError (-1).\n#define osFlagsErrorTimeout   0xFFFFFFFEU ///< osErrorTimeout (-2).\n#define osFlagsErrorResource  0xFFFFFFFDU ///< osErrorResource (-3).\n#define osFlagsErrorParameter 0xFFFFFFFCU ///< osErrorParameter (-4).\n#define osFlagsErrorISR       0xFFFFFFFAU ///< osErrorISR (-6).\n \n// Thread attributes (attr_bits in \\ref osThreadAttr_t).\n#define osThreadDetached      0x00000000U ///< Thread created in detached mode (default)\n#define osThreadJoinable      0x00000001U ///< Thread created in joinable mode\n \n// Mutex attributes (attr_bits in \\ref osMutexAttr_t).\n#define osMutexRecursive      0x00000001U ///< Recursive mutex.\n#define osMutexPrioInherit    0x00000002U ///< Priority inherit protocol.\n#define osMutexRobust         0x00000008U ///< Robust mutex.\n \n/// Status code values returned by CMSIS-RTOS functions.\ntypedef enum {\n  osOK                      =  0,         ///< Operation completed successfully.\n  osError                   = -1,         ///< Unspecified RTOS error: run-time error but no other error message fits.\n  osErrorTimeout            = -2,         ///< Operation not completed within the timeout period.\n  osErrorResource           = -3,         ///< Resource not available.\n  osErrorParameter          = -4,         ///< Parameter error.\n  osErrorNoMemory           = -5,         ///< System is out of memory: it was impossible to allocate or reserve memory for the operation.\n  osErrorISR                = -6,         ///< Not allowed in ISR context: the function cannot be called from interrupt service routines.\n  osStatusReserved          = 0x7FFFFFFF  ///< Prevents enum down-size compiler optimization.\n} osStatus_t;\n \n \n/// \\details Thread ID identifies the thread.\ntypedef void *osThreadId_t;\n \n/// \\details Timer ID identifies the timer.\ntypedef void *osTimerId_t;\n \n/// \\details Event Flags ID identifies the event flags.\ntypedef void *osEventFlagsId_t;\n \n/// \\details Mutex ID identifies the mutex.\ntypedef void *osMutexId_t;\n \n/// \\details Semaphore ID identifies the semaphore.\ntypedef void *osSemaphoreId_t;\n \n/// \\details Memory Pool ID identifies the memory pool.\ntypedef void *osMemoryPoolId_t;\n \n/// \\details Message Queue ID identifies the message queue.\ntypedef void *osMessageQueueId_t;\n \n \n#ifndef TZ_MODULEID_T\n#define TZ_MODULEID_T\n/// \\details Data type that identifies secure software modules called by a process.\ntypedef uint32_t TZ_ModuleId_t;\n#endif\n \n \n/// Attributes structure for thread.\ntypedef struct {\n  const char                   *name;   ///< name of the thread\n  uint32_t                 attr_bits;   ///< attribute bits\n  void                      *cb_mem;    ///< memory for control block\n  uint32_t                   cb_size;   ///< size of provided memory for control block\n  void                   *stack_mem;    ///< memory for stack\n  uint32_t                stack_size;   ///< size of stack\n  osPriority_t              priority;   ///< initial thread priority (default: osPriorityNormal)\n  TZ_ModuleId_t            tz_module;   ///< TrustZone module identifier\n  uint32_t                  reserved;   ///< reserved (must be 0)\n} osThreadAttr_t;\n \n/// Attributes structure for timer.\ntypedef struct {\n  const char                   *name;   ///< name of the timer\n  uint32_t                 attr_bits;   ///< attribute bits\n  void                      *cb_mem;    ///< memory for control block\n  uint32_t                   cb_size;   ///< size of provided memory for control block\n} osTimerAttr_t;\n \n/// Attributes structure for event flags.\ntypedef struct {\n  const char                   *name;   ///< name of the event flags\n  uint32_t                 attr_bits;   ///< attribute bits\n  void                      *cb_mem;    ///< memory for control block\n  uint32_t                   cb_size;   ///< size of provided memory for control block\n} osEventFlagsAttr_t;\n \n/// Attributes structure for mutex.\ntypedef struct {\n  const char                   *name;   ///< name of the mutex\n  uint32_t                 attr_bits;   ///< attribute bits\n  void                      *cb_mem;    ///< memory for control block\n  uint32_t                   cb_size;   ///< size of provided memory for control block\n} osMutexAttr_t;\n \n/// Attributes structure for semaphore.\ntypedef struct {\n  const char                   *name;   ///< name of the semaphore\n  uint32_t                 attr_bits;   ///< attribute bits\n  void                      *cb_mem;    ///< memory for control block\n  uint32_t                   cb_size;   ///< size of provided memory for control block\n} osSemaphoreAttr_t;\n \n/// Attributes structure for memory pool.\ntypedef struct {\n  const char                   *name;   ///< name of the memory pool\n  uint32_t                 attr_bits;   ///< attribute bits\n  void                      *cb_mem;    ///< memory for control block\n  uint32_t                   cb_size;   ///< size of provided memory for control block\n  void                      *mp_mem;    ///< memory for data storage\n  uint32_t                   mp_size;   ///< size of provided memory for data storage \n} osMemoryPoolAttr_t;\n \n/// Attributes structure for message queue.\ntypedef struct {\n  const char                   *name;   ///< name of the message queue\n  uint32_t                 attr_bits;   ///< attribute bits\n  void                      *cb_mem;    ///< memory for control block\n  uint32_t                   cb_size;   ///< size of provided memory for control block\n  void                      *mq_mem;    ///< memory for data storage\n  uint32_t                   mq_size;   ///< size of provided memory for data storage \n} osMessageQueueAttr_t;\n \n \n//  ==== Kernel Management Functions ====\n \n/// Initialize the RTOS Kernel.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osKernelInitialize (void);\n \n///  Get RTOS Kernel Information.\n/// \\param[out]    version       pointer to buffer for retrieving version information.\n/// \\param[out]    id_buf        pointer to buffer for retrieving kernel identification string.\n/// \\param[in]     id_size       size of buffer for kernel identification string.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size);\n \n/// Get the current RTOS Kernel state.\n/// \\return current RTOS Kernel state.\nosKernelState_t osKernelGetState (void);\n \n/// Start the RTOS Kernel scheduler.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osKernelStart (void);\n \n/// Lock the RTOS Kernel scheduler.\n/// \\return previous lock state (1 - locked, 0 - not locked, error code if negative).\nint32_t osKernelLock (void);\n \n/// Unlock the RTOS Kernel scheduler.\n/// \\return previous lock state (1 - locked, 0 - not locked, error code if negative).\nint32_t osKernelUnlock (void);\n \n/// Restore the RTOS Kernel scheduler lock state.\n/// \\param[in]     lock          lock state obtained by \\ref osKernelLock or \\ref osKernelUnlock.\n/// \\return new lock state (1 - locked, 0 - not locked, error code if negative).\nint32_t osKernelRestoreLock (int32_t lock);\n \n/// Suspend the RTOS Kernel scheduler.\n/// \\return time in ticks, for how long the system can sleep or power-down.\nuint32_t osKernelSuspend (void);\n \n/// Resume the RTOS Kernel scheduler.\n/// \\param[in]     sleep_ticks   time in ticks for how long the system was in sleep or power-down mode.\nvoid osKernelResume (uint32_t sleep_ticks);\n \n/// Get the RTOS kernel tick count.\n/// \\return RTOS kernel current tick count.\nuint32_t osKernelGetTickCount (void);\n \n/// Get the RTOS kernel tick frequency.\n/// \\return frequency of the kernel tick in hertz, i.e. kernel ticks per second.\nuint32_t osKernelGetTickFreq (void);\n \n/// Get the RTOS kernel system timer count.\n/// \\return RTOS kernel current system timer count as 32-bit value.\nuint32_t osKernelGetSysTimerCount (void);\n \n/// Get the RTOS kernel system timer frequency.\n/// \\return frequency of the system timer in hertz, i.e. timer ticks per second.\nuint32_t osKernelGetSysTimerFreq (void);\n \n \n//  ==== Thread Management Functions ====\n \n/// Create a thread and add it to Active Threads.\n/// \\param[in]     func          thread function.\n/// \\param[in]     argument      pointer that is passed to the thread function as start argument.\n/// \\param[in]     attr          thread attributes; NULL: default values.\n/// \\return thread ID for reference by other functions or NULL in case of error.\nosThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr);\n \n/// Get name of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return name as null-terminated string.\nconst char *osThreadGetName (osThreadId_t thread_id);\n \n/// Return the thread ID of the current running thread.\n/// \\return thread ID for reference by other functions or NULL in case of error.\nosThreadId_t osThreadGetId (void);\n \n/// Get current thread state of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return current thread state of the specified thread.\nosThreadState_t osThreadGetState (osThreadId_t thread_id);\n \n/// Get stack size of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return stack size in bytes.\nuint32_t osThreadGetStackSize (osThreadId_t thread_id);\n \n/// Get available stack space of a thread based on stack watermark recording during execution.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return remaining stack space in bytes.\nuint32_t osThreadGetStackSpace (osThreadId_t thread_id);\n \n/// Change priority of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\param[in]     priority      new priority value for the thread function.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority);\n \n/// Get current priority of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return current priority value of the specified thread.\nosPriority_t osThreadGetPriority (osThreadId_t thread_id);\n \n/// Pass control to next thread that is in state \\b READY.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osThreadYield (void);\n \n/// Suspend execution of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osThreadSuspend (osThreadId_t thread_id);\n \n/// Resume execution of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osThreadResume (osThreadId_t thread_id);\n \n/// Detach a thread (thread storage can be reclaimed when thread terminates).\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osThreadDetach (osThreadId_t thread_id);\n \n/// Wait for specified thread to terminate.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osThreadJoin (osThreadId_t thread_id);\n \n/// Terminate execution of current running thread.\n__NO_RETURN void osThreadExit (void);\n \n/// Terminate execution of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osThreadTerminate (osThreadId_t thread_id);\n \n/// Get number of active threads.\n/// \\return number of active threads.\nuint32_t osThreadGetCount (void);\n \n/// Enumerate active threads.\n/// \\param[out]    thread_array  pointer to array for retrieving thread IDs.\n/// \\param[in]     array_items   maximum number of items in array for retrieving thread IDs.\n/// \\return number of enumerated threads.\nuint32_t osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items);\n \n \n//  ==== Thread Flags Functions ====\n \n/// Set the specified Thread Flags of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadNew or \\ref osThreadGetId.\n/// \\param[in]     flags         specifies the flags of the thread that shall be set.\n/// \\return thread flags after setting or error code if highest bit set.\nuint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags);\n \n/// Clear the specified Thread Flags of current running thread.\n/// \\param[in]     flags         specifies the flags of the thread that shall be cleared.\n/// \\return thread flags before clearing or error code if highest bit set.\nuint32_t osThreadFlagsClear (uint32_t flags);\n \n/// Get the current Thread Flags of current running thread.\n/// \\return current thread flags.\nuint32_t osThreadFlagsGet (void);\n \n/// Wait for one or more Thread Flags of the current running thread to become signaled.\n/// \\param[in]     flags         specifies the flags to wait for.\n/// \\param[in]     options       specifies flags options (osFlagsXxxx).\n/// \\param[in]     timeout       \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return thread flags before clearing or error code if highest bit set.\nuint32_t osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout);\n \n \n//  ==== Generic Wait Functions ====\n \n/// Wait for Timeout (Time Delay).\n/// \\param[in]     ticks         \\ref CMSIS_RTOS_TimeOutValue \"time ticks\" value\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osDelay (uint32_t ticks);\n \n/// Wait until specified time.\n/// \\param[in]     ticks         absolute time in ticks\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osDelayUntil (uint32_t ticks);\n \n \n//  ==== Timer Management Functions ====\n \n/// Create and Initialize a timer.\n/// \\param[in]     func          function pointer to callback function.\n/// \\param[in]     type          \\ref osTimerOnce for one-shot or \\ref osTimerPeriodic for periodic behavior.\n/// \\param[in]     argument      argument to the timer callback function.\n/// \\param[in]     attr          timer attributes; NULL: default values.\n/// \\return timer ID for reference by other functions or NULL in case of error.\nosTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr);\n \n/// Get name of a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerNew.\n/// \\return name as null-terminated string.\nconst char *osTimerGetName (osTimerId_t timer_id);\n \n/// Start or restart a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerNew.\n/// \\param[in]     ticks         \\ref CMSIS_RTOS_TimeOutValue \"time ticks\" value of the timer.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks);\n \n/// Stop a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osTimerStop (osTimerId_t timer_id);\n \n/// Check if a timer is running.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerNew.\n/// \\return 0 not running, 1 running.\nuint32_t osTimerIsRunning (osTimerId_t timer_id);\n \n/// Delete a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osTimerDelete (osTimerId_t timer_id);\n \n \n//  ==== Event Flags Management Functions ====\n \n/// Create and Initialize an Event Flags object.\n/// \\param[in]     attr          event flags attributes; NULL: default values.\n/// \\return event flags ID for reference by other functions or NULL in case of error.\nosEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr);\n \n/// Get name of an Event Flags object.\n/// \\param[in]     ef_id         event flags ID obtained by \\ref osEventFlagsNew.\n/// \\return name as null-terminated string.\nconst char *osEventFlagsGetName (osEventFlagsId_t ef_id);\n \n/// Set the specified Event Flags.\n/// \\param[in]     ef_id         event flags ID obtained by \\ref osEventFlagsNew.\n/// \\param[in]     flags         specifies the flags that shall be set.\n/// \\return event flags after setting or error code if highest bit set.\nuint32_t osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags);\n \n/// Clear the specified Event Flags.\n/// \\param[in]     ef_id         event flags ID obtained by \\ref osEventFlagsNew.\n/// \\param[in]     flags         specifies the flags that shall be cleared.\n/// \\return event flags before clearing or error code if highest bit set.\nuint32_t osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags);\n \n/// Get the current Event Flags.\n/// \\param[in]     ef_id         event flags ID obtained by \\ref osEventFlagsNew.\n/// \\return current event flags.\nuint32_t osEventFlagsGet (osEventFlagsId_t ef_id);\n \n/// Wait for one or more Event Flags to become signaled.\n/// \\param[in]     ef_id         event flags ID obtained by \\ref osEventFlagsNew.\n/// \\param[in]     flags         specifies the flags to wait for.\n/// \\param[in]     options       specifies flags options (osFlagsXxxx).\n/// \\param[in]     timeout       \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return event flags before clearing or error code if highest bit set.\nuint32_t osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout);\n \n/// Delete an Event Flags object.\n/// \\param[in]     ef_id         event flags ID obtained by \\ref osEventFlagsNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id);\n \n \n//  ==== Mutex Management Functions ====\n \n/// Create and Initialize a Mutex object.\n/// \\param[in]     attr          mutex attributes; NULL: default values.\n/// \\return mutex ID for reference by other functions or NULL in case of error.\nosMutexId_t osMutexNew (const osMutexAttr_t *attr);\n \n/// Get name of a Mutex object.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexNew.\n/// \\return name as null-terminated string.\nconst char *osMutexGetName (osMutexId_t mutex_id);\n \n/// Acquire a Mutex or timeout if it is locked.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexNew.\n/// \\param[in]     timeout       \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout);\n \n/// Release a Mutex that was acquired by \\ref osMutexAcquire.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMutexRelease (osMutexId_t mutex_id);\n \n/// Get Thread which owns a Mutex object.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexNew.\n/// \\return thread ID of owner thread or NULL when mutex was not acquired.\nosThreadId_t osMutexGetOwner (osMutexId_t mutex_id);\n \n/// Delete a Mutex object.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMutexDelete (osMutexId_t mutex_id);\n \n \n//  ==== Semaphore Management Functions ====\n \n/// Create and Initialize a Semaphore object.\n/// \\param[in]     max_count     maximum number of available tokens.\n/// \\param[in]     initial_count initial number of available tokens.\n/// \\param[in]     attr          semaphore attributes; NULL: default values.\n/// \\return semaphore ID for reference by other functions or NULL in case of error.\nosSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr);\n \n/// Get name of a Semaphore object.\n/// \\param[in]     semaphore_id  semaphore ID obtained by \\ref osSemaphoreNew.\n/// \\return name as null-terminated string.\nconst char *osSemaphoreGetName (osSemaphoreId_t semaphore_id);\n \n/// Acquire a Semaphore token or timeout if no tokens are available.\n/// \\param[in]     semaphore_id  semaphore ID obtained by \\ref osSemaphoreNew.\n/// \\param[in]     timeout       \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout);\n \n/// Release a Semaphore token up to the initial maximum count.\n/// \\param[in]     semaphore_id  semaphore ID obtained by \\ref osSemaphoreNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id);\n \n/// Get current Semaphore token count.\n/// \\param[in]     semaphore_id  semaphore ID obtained by \\ref osSemaphoreNew.\n/// \\return number of tokens available.\nuint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id);\n \n/// Delete a Semaphore object.\n/// \\param[in]     semaphore_id  semaphore ID obtained by \\ref osSemaphoreNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id);\n \n \n//  ==== Memory Pool Management Functions ====\n \n/// Create and Initialize a Memory Pool object.\n/// \\param[in]     block_count   maximum number of memory blocks in memory pool.\n/// \\param[in]     block_size    memory block size in bytes.\n/// \\param[in]     attr          memory pool attributes; NULL: default values.\n/// \\return memory pool ID for reference by other functions or NULL in case of error.\nosMemoryPoolId_t osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr);\n \n/// Get name of a Memory Pool object.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\return name as null-terminated string.\nconst char *osMemoryPoolGetName (osMemoryPoolId_t mp_id);\n \n/// Allocate a memory block from a Memory Pool.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\param[in]     timeout       \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return address of the allocated memory block or NULL in case of no memory is available.\nvoid *osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout);\n \n/// Return an allocated memory block back to a Memory Pool.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\param[in]     block         address of the allocated memory block to be returned to the memory pool.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id, void *block);\n \n/// Get maximum number of memory blocks in a Memory Pool.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\return maximum number of memory blocks.\nuint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id);\n \n/// Get memory block size in a Memory Pool.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\return memory block size in bytes.\nuint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id);\n \n/// Get number of memory blocks used in a Memory Pool.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\return number of memory blocks used.\nuint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id);\n \n/// Get number of memory blocks available in a Memory Pool.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\return number of memory blocks available.\nuint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id);\n \n/// Delete a Memory Pool object.\n/// \\param[in]     mp_id         memory pool ID obtained by \\ref osMemoryPoolNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id);\n \n \n//  ==== Message Queue Management Functions ====\n \n/// Create and Initialize a Message Queue object.\n/// \\param[in]     msg_count     maximum number of messages in queue.\n/// \\param[in]     msg_size      maximum message size in bytes.\n/// \\param[in]     attr          message queue attributes; NULL: default values.\n/// \\return message queue ID for reference by other functions or NULL in case of error.\nosMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr);\n \n/// Get name of a Message Queue object.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\return name as null-terminated string.\nconst char *osMessageQueueGetName (osMessageQueueId_t mq_id);\n \n/// Put a Message into a Queue or timeout if Queue is full.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\param[in]     msg_ptr       pointer to buffer with message to put into a queue.\n/// \\param[in]     msg_prio      message priority.\n/// \\param[in]     timeout       \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout);\n \n/// Get a Message from a Queue or timeout if Queue is empty.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\param[out]    msg_ptr       pointer to buffer for message to get from a queue.\n/// \\param[out]    msg_prio      pointer to buffer for message priority or NULL.\n/// \\param[in]     timeout       \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout);\n \n/// Get maximum number of messages in a Message Queue.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\return maximum number of messages.\nuint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id);\n \n/// Get maximum message size in a Memory Pool.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\return maximum message size in bytes.\nuint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id);\n \n/// Get number of queued messages in a Message Queue.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\return number of queued messages.\nuint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id);\n \n/// Get number of available slots for messages in a Message Queue.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\return number of available slots for messages.\nuint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id);\n \n/// Reset a Message Queue to initial empty state.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMessageQueueReset (osMessageQueueId_t mq_id);\n \n/// Delete a Message Queue object.\n/// \\param[in]     mq_id         message queue ID obtained by \\ref osMessageQueueNew.\n/// \\return status code that indicates the execution status of the function.\nosStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id);\n \n \n#ifdef  __cplusplus\n}\n#endif\n \n#endif  // CMSIS_OS2_H_\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS2/Include/os_tick.h",
    "content": "/**************************************************************************//**\n * @file     os_tick.h\n * @brief    CMSIS OS Tick header file\n * @version  V1.0.1\n * @date     24. November 2017\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef OS_TICK_H\n#define OS_TICK_H\n\n#include <stdint.h>\n\n/// IRQ Handler.\n#ifndef IRQHANDLER_T\n#define IRQHANDLER_T\ntypedef void (*IRQHandler_t) (void);\n#endif\n\n/// Setup OS Tick timer to generate periodic RTOS Kernel Ticks\n/// \\param[in]     freq         tick frequency in Hz\n/// \\param[in]     handler      tick IRQ handler\n/// \\return 0 on success, -1 on error.\nint32_t  OS_Tick_Setup (uint32_t freq, IRQHandler_t handler);\n\n/// Enable OS Tick timer interrupt\nvoid     OS_Tick_Enable (void);\n\n/// Disable OS Tick timer interrupt\nvoid     OS_Tick_Disable (void);\n\n/// Acknowledge execution of OS Tick timer interrupt\nvoid     OS_Tick_AcknowledgeIRQ (void);\n\n/// Get OS Tick timer IRQ number\n/// \\return OS Tick IRQ number\nint32_t  OS_Tick_GetIRQn (void);\n\n/// Get OS Tick timer clock frequency\n/// \\return OS Tick timer clock frequency in Hz\nuint32_t OS_Tick_GetClock (void);\n\n/// Get OS Tick timer interval reload value\n/// \\return OS Tick timer interval reload value\nuint32_t OS_Tick_GetInterval (void);\n\n/// Get OS Tick timer counter value\n/// \\return OS Tick timer counter value\nuint32_t OS_Tick_GetCount (void);\n\n/// Get OS Tick timer overflow status\n/// \\return OS Tick overflow status (1 - overflow, 0 - no overflow).\nuint32_t OS_Tick_GetOverflow (void);\n\n#endif  /* OS_TICK_H */\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS2/Source/os_systick.c",
    "content": "/**************************************************************************//**\n * @file     os_systick.c\n * @brief    CMSIS OS Tick SysTick implementation\n * @version  V1.0.1\n * @date     24. November 2017\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"os_tick.h\"\n\n//lint -emacro((923,9078),SCB,SysTick) \"cast from unsigned long to pointer\"\n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n\n#ifdef  SysTick\n\n#ifndef SYSTICK_IRQ_PRIORITY\n#define SYSTICK_IRQ_PRIORITY    0xFFU\n#endif\n\nstatic uint8_t PendST;\n\n// Setup OS Tick.\n__WEAK int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) {\n  uint32_t load;\n  (void)handler;\n\n  if (freq == 0U) {\n    //lint -e{904} \"Return statement before end of function\"\n    return (-1);\n  }\n\n  load = (SystemCoreClock / freq) - 1U;\n  if (load > 0x00FFFFFFU) {\n    //lint -e{904} \"Return statement before end of function\"\n    return (-1);\n  }\n\n  // Set SysTick Interrupt Priority\n#if   ((defined(__ARM_ARCH_8M_MAIN__) && (__ARM_ARCH_8M_MAIN__ != 0)) || \\\n       (defined(__CORTEX_M)           && (__CORTEX_M           == 7U)))\n  SCB->SHPR[11] = SYSTICK_IRQ_PRIORITY;\n#elif  (defined(__ARM_ARCH_8M_BASE__) && (__ARM_ARCH_8M_BASE__ != 0))\n  SCB->SHPR[1] |= ((uint32_t)SYSTICK_IRQ_PRIORITY << 24);\n#elif ((defined(__ARM_ARCH_7M__)      && (__ARM_ARCH_7M__      != 0)) || \\\n       (defined(__ARM_ARCH_7EM__)     && (__ARM_ARCH_7EM__     != 0)))\n  SCB->SHP[11]  = SYSTICK_IRQ_PRIORITY;\n#elif  (defined(__ARM_ARCH_6M__)      && (__ARM_ARCH_6M__      != 0))\n  SCB->SHP[1]  |= ((uint32_t)SYSTICK_IRQ_PRIORITY << 24);\n#else\n#error \"Unknown ARM Core!\"\n#endif\n\n  SysTick->CTRL =  SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk;\n  SysTick->LOAD =  load;\n  SysTick->VAL  =  0U;\n\n  PendST = 0U;\n\n  return (0);\n}\n\n/// Enable OS Tick.\n__WEAK void OS_Tick_Enable (void) {\n\n  if (PendST != 0U) {\n    PendST = 0U;\n    SCB->ICSR = SCB_ICSR_PENDSTSET_Msk;\n  }\n\n  SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;\n}\n\n/// Disable OS Tick.\n__WEAK void OS_Tick_Disable (void) {\n\n  SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;\n\n  if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk) != 0U) {\n    SCB->ICSR = SCB_ICSR_PENDSTCLR_Msk;\n    PendST = 1U;\n  }\n}\n\n// Acknowledge OS Tick IRQ.\n__WEAK void OS_Tick_AcknowledgeIRQ (void) {\n  (void)SysTick->CTRL;\n}\n\n// Get OS Tick IRQ number.\n__WEAK int32_t  OS_Tick_GetIRQn (void) {\n  return ((int32_t)SysTick_IRQn);\n}\n\n// Get OS Tick clock.\n__WEAK uint32_t OS_Tick_GetClock (void) {\n  return (SystemCoreClock);\n}\n\n// Get OS Tick interval.\n__WEAK uint32_t OS_Tick_GetInterval (void) {\n  return (SysTick->LOAD + 1U);\n}\n\n// Get OS Tick count value.\n__WEAK uint32_t OS_Tick_GetCount (void) {\n  uint32_t load = SysTick->LOAD;\n  return  (load - SysTick->VAL);\n}\n\n// Get OS Tick overflow status.\n__WEAK uint32_t OS_Tick_GetOverflow (void) {\n  return ((SysTick->CTRL >> 16) & 1U);\n}\n\n#endif  // SysTick\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS2/Source/os_tick_gtim.c",
    "content": "/**************************************************************************//**\n * @file     os_tick_gtim.c\n * @brief    CMSIS OS Tick implementation for Generic Timer\n * @version  V1.0.1\n * @date     24. November 2017\n ******************************************************************************/\n/*\n * Copyright (c) 2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"os_tick.h\"\n#include \"irq_ctrl.h\"\n\n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n\n#ifndef GTIM_IRQ_PRIORITY\n#define GTIM_IRQ_PRIORITY           0xFFU\n#endif\n\n#ifndef GTIM_IRQ_NUM\n#define GTIM_IRQ_NUM                SecurePhyTimer_IRQn\n#endif\n\n// Timer interrupt pending flag\nstatic uint8_t GTIM_PendIRQ;\n\n// Timer tick frequency\nstatic uint32_t GTIM_Clock;\n\n// Timer load value\nstatic uint32_t GTIM_Load;\n\n// Setup OS Tick.\nint32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) {\n  uint32_t prio, bits;\n\n  if (freq == 0U) {\n    return (-1);\n  }\n\n  GTIM_PendIRQ = 0U;\n\n  // Get timer clock\n#ifdef SCTR_BASE\n  GTIM_Clock = *(uint32_t*)(SCTR_BASE+0x20);\n#else\n  // FVP REFCLK CNTControl 100MHz\n  GTIM_Clock = 100000000UL;\n#endif\n\n  PL1_SetCounterFrequency(GTIM_Clock);\n\n  // Calculate load value\n  GTIM_Load = (GTIM_Clock / freq) - 1U;\n\n  // Disable Generic Timer and set load value\n  PL1_SetControl(0U);\n  PL1_SetLoadValue(GTIM_Load);\n\n  // Disable corresponding IRQ\n  IRQ_Disable(GTIM_IRQ_NUM);\n  IRQ_ClearPending(GTIM_IRQ_NUM);\n\n  // Determine number of implemented priority bits\n  IRQ_SetPriority(GTIM_IRQ_NUM, 0xFFU);\n\n  prio = IRQ_GetPriority(GTIM_IRQ_NUM);\n\n  // At least bits [7:4] must be implemented\n  if ((prio & 0xF0U) == 0U) {\n    return (-1);\n  }\n\n  for (bits = 0; bits < 4; bits++) {\n    if ((prio & 0x01) != 0) {\n      break;\n    }\n    prio >>= 1;\n  }\n  \n  // Adjust configured priority to the number of implemented priority bits\n  prio = (GTIM_IRQ_PRIORITY << bits) & 0xFFUL;\n\n  // Set Private Timer interrupt priority\n  IRQ_SetPriority(GTIM_IRQ_NUM, prio-1U);\n\n  // Set edge-triggered IRQ\n  IRQ_SetMode(GTIM_IRQ_NUM, IRQ_MODE_TRIG_EDGE);\n\n  // Register tick interrupt handler function\n  IRQ_SetHandler(GTIM_IRQ_NUM, handler);\n\n  // Enable corresponding interrupt\n  IRQ_Enable(GTIM_IRQ_NUM);\n\n  // Enable system counter and timer control\n#ifdef SCTR_BASE\n  *(uint32_t*)SCTR_BASE |= 3U;\n#endif\n\n  // Enable timer control\n  PL1_SetControl(1U);\n\n  return (0);\n}\n\n/// Enable OS Tick.\nvoid OS_Tick_Enable (void) {\n  uint32_t ctrl;\n\n  // Set pending interrupt if flag set\n  if (GTIM_PendIRQ != 0U) {\n    GTIM_PendIRQ = 0U;\n    IRQ_SetPending (GTIM_IRQ_NUM);\n  }\n\n  // Start the Private Timer\n  ctrl = PL1_GetControl();\n  // Set bit: Timer enable\n  ctrl |= 1U;\n  PL1_SetControl(ctrl);\n}\n\n/// Disable OS Tick.\nvoid OS_Tick_Disable (void) {\n  uint32_t ctrl;\n\n  // Stop the Private Timer\n  ctrl = PL1_GetControl();\n  // Clear bit: Timer enable\n  ctrl &= ~1U;\n  PL1_SetControl(ctrl);\n\n  // Remember pending interrupt flag\n  if (IRQ_GetPending(GTIM_IRQ_NUM) != 0) {\n    IRQ_ClearPending(GTIM_IRQ_NUM);\n    GTIM_PendIRQ = 1U;\n  }\n}\n\n// Acknowledge OS Tick IRQ.\nvoid OS_Tick_AcknowledgeIRQ (void) {\n  IRQ_ClearPending (GTIM_IRQ_NUM);\n  PL1_SetLoadValue(GTIM_Load);\n}\n\n// Get OS Tick IRQ number.\nint32_t  OS_Tick_GetIRQn (void) {\n  return (GTIM_IRQ_NUM);\n}\n\n// Get OS Tick clock.\nuint32_t OS_Tick_GetClock (void) {\n  return (GTIM_Clock);\n}\n\n// Get OS Tick interval.\nuint32_t OS_Tick_GetInterval (void) {\n  return (GTIM_Load + 1U);\n}\n\n// Get OS Tick count value.\nuint32_t OS_Tick_GetCount (void) {\n  return (GTIM_Load - PL1_GetCurrentValue());\n}\n\n// Get OS Tick overflow status.\nuint32_t OS_Tick_GetOverflow (void) {\n  CNTP_CTL_Type cntp_ctl;\n  cntp_ctl.w = PL1_GetControl();\n  return (cntp_ctl.b.ISTATUS);\n}\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS2/Source/os_tick_ptim.c",
    "content": "/**************************************************************************//**\n * @file     os_tick_ptim.c\n * @brief    CMSIS OS Tick implementation for Private Timer\n * @version  V1.0.2\n * @date     02. March 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2017-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"RTE_Components.h\"\n#include CMSIS_device_header\n\n#if defined(PTIM)\n\n#include \"os_tick.h\"\n#include \"irq_ctrl.h\"\n\n#ifndef PTIM_IRQ_PRIORITY\n#define PTIM_IRQ_PRIORITY           0xFFU\n#endif\n\nstatic uint8_t PTIM_PendIRQ;        // Timer interrupt pending flag\n\n// Setup OS Tick.\nint32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) {\n  uint32_t load;\n  uint32_t prio;\n  uint32_t bits;\n\n  if (freq == 0U) {\n    return (-1);\n  }\n\n  PTIM_PendIRQ = 0U;\n\n  // Private Timer runs with the system frequency\n  load = (SystemCoreClock / freq) - 1U;\n\n  // Disable Private Timer and set load value\n  PTIM_SetControl   (0U);\n  PTIM_SetLoadValue (load);\n\n  // Disable corresponding IRQ\n  IRQ_Disable     (PrivTimer_IRQn);\n  IRQ_ClearPending(PrivTimer_IRQn);\n\n  // Determine number of implemented priority bits\n  IRQ_SetPriority (PrivTimer_IRQn, 0xFFU);\n\n  prio = IRQ_GetPriority (PrivTimer_IRQn);\n\n  // At least bits [7:4] must be implemented\n  if ((prio & 0xF0U) == 0U) {\n    return (-1);\n  }\n\n  for (bits = 0; bits < 4; bits++) {\n    if ((prio & 0x01) != 0) {\n      break;\n    }\n    prio >>= 1;\n  }\n\n  // Adjust configured priority to the number of implemented priority bits\n  prio = (PTIM_IRQ_PRIORITY << bits) & 0xFFUL;\n\n  // Set Private Timer interrupt priority\n  IRQ_SetPriority(PrivTimer_IRQn, prio-1U);\n\n  // Set edge-triggered IRQ\n  IRQ_SetMode(PrivTimer_IRQn, IRQ_MODE_TRIG_EDGE);\n\n  // Register tick interrupt handler function\n  IRQ_SetHandler(PrivTimer_IRQn, handler);\n\n  // Enable corresponding interrupt\n  IRQ_Enable (PrivTimer_IRQn);\n\n  // Set bits: IRQ enable and Auto reload\n  PTIM_SetControl (0x06U);\n\n  return (0);\n}\n\n/// Enable OS Tick.\nvoid OS_Tick_Enable (void) {\n  uint32_t ctrl;\n\n  // Set pending interrupt if flag set\n  if (PTIM_PendIRQ != 0U) {\n    PTIM_PendIRQ = 0U;\n    IRQ_SetPending (PrivTimer_IRQn);\n  }\n\n  // Start the Private Timer\n  ctrl  = PTIM_GetControl();\n  // Set bit: Timer enable\n  ctrl |= 1U;\n  PTIM_SetControl (ctrl);\n}\n\n/// Disable OS Tick.\nvoid OS_Tick_Disable (void) {\n  uint32_t ctrl;\n\n  // Stop the Private Timer\n  ctrl  = PTIM_GetControl();\n  // Clear bit: Timer enable\n  ctrl &= ~1U;\n  PTIM_SetControl (ctrl);\n\n  // Remember pending interrupt flag\n  if (IRQ_GetPending(PrivTimer_IRQn) != 0) {\n    IRQ_ClearPending (PrivTimer_IRQn);\n    PTIM_PendIRQ = 1U;\n  }\n}\n\n// Acknowledge OS Tick IRQ.\nvoid OS_Tick_AcknowledgeIRQ (void) {\n  PTIM_ClearEventFlag();\n}\n\n// Get OS Tick IRQ number.\nint32_t  OS_Tick_GetIRQn (void) {\n  return (PrivTimer_IRQn);\n}\n\n// Get OS Tick clock.\nuint32_t OS_Tick_GetClock (void) {\n  return (SystemCoreClock);\n}\n\n// Get OS Tick interval.\nuint32_t OS_Tick_GetInterval (void) {\n  return (PTIM_GetLoadValue() + 1U);\n}\n\n// Get OS Tick count value.\nuint32_t OS_Tick_GetCount (void) {\n  uint32_t load = PTIM_GetLoadValue();\n  return  (load - PTIM_GetCurrentValue());\n}\n\n// Get OS Tick overflow status.\nuint32_t OS_Tick_GetOverflow (void) {\n  return (PTIM->ISR & 1);\n}\n\n#endif  // PTIM\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS2/Template/cmsis_os.h",
    "content": "/*\n * Copyright (c) 2013-2018 Arm Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * ----------------------------------------------------------------------\n *\n * $Date:        18. June 2018\n * $Revision:    V2.1.3\n *\n * Project:      CMSIS-RTOS API\n * Title:        cmsis_os.h template header file\n *\n * Version 0.02\n *    Initial Proposal Phase\n * Version 0.03\n *    osKernelStart added, optional feature: main started as thread\n *    osSemaphores have standard behavior\n *    osTimerCreate does not start the timer, added osTimerStart\n *    osThreadPass is renamed to osThreadYield\n * Version 1.01\n *    Support for C++ interface\n *     - const attribute removed from the osXxxxDef_t typedefs\n *     - const attribute added to the osXxxxDef macros\n *    Added: osTimerDelete, osMutexDelete, osSemaphoreDelete\n *    Added: osKernelInitialize\n * Version 1.02\n *    Control functions for short timeouts in microsecond resolution:\n *    Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec\n *    Removed: osSignalGet \n * Version 2.0.0\n *    OS objects creation without macros (dynamic creation and resource allocation):\n *     - added: osXxxxNew functions which replace osXxxxCreate\n *     - added: osXxxxAttr_t structures\n *     - deprecated: osXxxxCreate functions, osXxxxDef_t structures\n *     - deprecated: osXxxxDef and osXxxx macros\n *    osStatus codes simplified and renamed to osStatus_t\n *    osEvent return structure deprecated\n *    Kernel:\n *     - added: osKernelInfo_t and osKernelGetInfo\n *     - added: osKernelState_t and osKernelGetState (replaces osKernelRunning)\n *     - added: osKernelLock, osKernelUnlock\n *     - added: osKernelSuspend, osKernelResume\n *     - added: osKernelGetTickCount, osKernelGetTickFreq\n *     - renamed osKernelSysTick to osKernelGetSysTimerCount\n *     - replaced osKernelSysTickFrequency with osKernelGetSysTimerFreq\n *     - deprecated osKernelSysTickMicroSec\n *    Thread:\n *     - extended number of thread priorities\n *     - renamed osPrioriry to osPrioriry_t\n *     - replaced osThreadCreate with osThreadNew\n *     - added: osThreadGetName\n *     - added: osThreadState_t and osThreadGetState\n *     - added: osThreadGetStackSize, osThreadGetStackSpace\n *     - added: osThreadSuspend, osThreadResume\n *     - added: osThreadJoin, osThreadDetach, osThreadExit\n *     - added: osThreadGetCount, osThreadEnumerate\n *     - added: Thread Flags (moved from Signals) \n *    Signals:\n *     - renamed osSignals to osThreadFlags (moved to Thread Flags)\n *     - changed return value of Set/Clear/Wait functions\n *     - Clear function limited to current running thread\n *     - extended Wait function (options)\n *     - added: osThreadFlagsGet\n *    Event Flags:\n *     - added new independent object for handling Event Flags\n *    Delay and Wait functions:\n *     - added: osDelayUntil\n *     - deprecated: osWait\n *    Timer:\n *     - replaced osTimerCreate with osTimerNew\n *     - added: osTimerGetName, osTimerIsRunning\n *    Mutex:\n *     - extended: attributes (Recursive, Priority Inherit, Robust)\n *     - replaced osMutexCreate with osMutexNew\n *     - renamed osMutexWait to osMutexAcquire\n *     - added: osMutexGetName, osMutexGetOwner\n *    Semaphore:\n *     - extended: maximum and initial token count\n *     - replaced osSemaphoreCreate with osSemaphoreNew\n *     - renamed osSemaphoreWait to osSemaphoreAcquire (changed return value)\n *     - added: osSemaphoreGetName, osSemaphoreGetCount\n *    Memory Pool:\n *     - using osMemoryPool prefix instead of osPool\n *     - replaced osPoolCreate with osMemoryPoolNew\n *     - extended osMemoryPoolAlloc (timeout)\n *     - added: osMemoryPoolGetName\n *     - added: osMemoryPoolGetCapacity, osMemoryPoolGetBlockSize\n *     - added: osMemoryPoolGetCount, osMemoryPoolGetSpace\n *     - added: osMemoryPoolDelete\n *     - deprecated: osPoolCAlloc\n *    Message Queue:\n *     - extended: fixed size message instead of a single 32-bit value\n *     - using osMessageQueue prefix instead of osMessage\n *     - replaced osMessageCreate with osMessageQueueNew\n *     - updated: osMessageQueuePut, osMessageQueueGet\n *     - added: osMessageQueueGetName\n *     - added: osMessageQueueGetCapacity, osMessageQueueGetMsgSize\n *     - added: osMessageQueueGetCount, osMessageQueueGetSpace\n *     - added: osMessageQueueReset, osMessageQueueDelete\n *    Mail Queue: \n *     - deprecated (superseded by extended Message Queue functionality)\n * Version 2.1.0\n *    Support for critical and uncritical sections (nesting safe):\n *    - updated: osKernelLock, osKernelUnlock\n *    - added: osKernelRestoreLock\n *    Updated Thread and Event Flags:\n *    - changed flags parameter and return type from int32_t to uint32_t\n * Version 2.1.1\n *    Additional functions allowed to be called from Interrupt Service Routines:\n *    - osKernelGetTickCount, osKernelGetTickFreq\n *    Changed Kernel Tick type to uint32_t:\n *    - updated: osKernelGetTickCount, osDelayUntil\n * Version 2.1.2\n *    Additional functions allowed to be called from Interrupt Service Routines:\n *    - osKernelGetInfo, osKernelGetState\n * Version 2.1.3\n *    Additional functions allowed to be called from Interrupt Service Routines:\n *    - osThreadGetId\n *---------------------------------------------------------------------------*/\n \n#ifndef CMSIS_OS_H_\n#define CMSIS_OS_H_\n \n/// \\b osCMSIS identifies the CMSIS-RTOS API version.\n#define osCMSIS             0x20001U    ///< API version (main[31:16].sub[15:0])\n \n/// \\note CAN BE CHANGED: \\b osCMSIS_KERNEL identifies the underlying RTOS kernel and version number.\n#define osCMSIS_KERNEL      0x10000U    ///< RTOS identification and version (main[31:16].sub[15:0])\n \n/// \\note CAN BE CHANGED: \\b osKernelSystemId identifies the underlying RTOS kernel.\n#define osKernelSystemId \"KERNEL V1.0\"  ///< RTOS identification string\n \n/// \\note CAN BE CHANGED: \\b osFeature_xxx identifies RTOS features.\n#define osFeature_MainThread  0         ///< main thread      1=main can be thread, 0=not available\n#define osFeature_Signals     16U       ///< maximum number of Signal Flags available per thread\n#define osFeature_Semaphore   65535U    ///< maximum count for \\ref osSemaphoreCreate function\n#define osFeature_Wait        0         ///< osWait function: 1=available, 0=not available\n#define osFeature_SysTick     1         ///< osKernelSysTick functions: 1=available, 0=not available\n#define osFeature_Pool        1         ///< Memory Pools:    1=available, 0=not available\n#define osFeature_MessageQ    1         ///< Message Queues:  1=available, 0=not available\n#define osFeature_MailQ       1         ///< Mail Queues:     1=available, 0=not available\n \n#if (osCMSIS >= 0x20000U)\n#include \"cmsis_os2.h\"\n#else\n#include <stdint.h>\n#include <stddef.h>\n#endif\n \n#ifdef  __cplusplus\nextern \"C\"\n{\n#endif\n \n \n// ==== Enumerations, structures, defines ====\n \n/// Priority values.\n#if (osCMSIS < 0x20000U)\ntypedef enum {\n  osPriorityIdle          = -3,         ///< Priority: idle (lowest)\n  osPriorityLow           = -2,         ///< Priority: low\n  osPriorityBelowNormal   = -1,         ///< Priority: below normal\n  osPriorityNormal        =  0,         ///< Priority: normal (default)\n  osPriorityAboveNormal   = +1,         ///< Priority: above normal\n  osPriorityHigh          = +2,         ///< Priority: high\n  osPriorityRealtime      = +3,         ///< Priority: realtime (highest)\n  osPriorityError         = 0x84,       ///< System cannot determine priority or illegal priority.\n  osPriorityReserved      = 0x7FFFFFFF  ///< Prevents enum down-size compiler optimization.\n} osPriority;\n#else\n#define osPriority osPriority_t\n#endif\n\n/// Entry point of a thread.\ntypedef void (*os_pthread) (void const *argument);\n \n/// Entry point of a timer call back function.\ntypedef void (*os_ptimer) (void const *argument);\n \n/// Timer type.\n#if (osCMSIS < 0x20000U)\ntypedef enum {\n  osTimerOnce             = 0,          ///< One-shot timer.\n  osTimerPeriodic         = 1           ///< Repeating timer.\n} os_timer_type;\n#else\n#define os_timer_type osTimerType_t\n#endif\n \n/// Timeout value.\n#define osWaitForever       0xFFFFFFFFU ///< Wait forever timeout value.\n \n/// Status code values returned by CMSIS-RTOS functions.\n#if (osCMSIS < 0x20000U)\ntypedef enum {\n  osOK                    =    0,       ///< Function completed; no error or event occurred.\n  osEventSignal           = 0x08,       ///< Function completed; signal event occurred.\n  osEventMessage          = 0x10,       ///< Function completed; message event occurred.\n  osEventMail             = 0x20,       ///< Function completed; mail event occurred.\n  osEventTimeout          = 0x40,       ///< Function completed; timeout occurred.\n  osErrorParameter        = 0x80,       ///< Parameter error: a mandatory parameter was missing or specified an incorrect object.\n  osErrorResource         = 0x81,       ///< Resource not available: a specified resource was not available.\n  osErrorTimeoutResource  = 0xC1,       ///< Resource not available within given time: a specified resource was not available within the timeout period.\n  osErrorISR              = 0x82,       ///< Not allowed in ISR context: the function cannot be called from interrupt service routines.\n  osErrorISRRecursive     = 0x83,       ///< Function called multiple times from ISR with same object.\n  osErrorPriority         = 0x84,       ///< System cannot determine priority or thread has illegal priority.\n  osErrorNoMemory         = 0x85,       ///< System is out of memory: it was impossible to allocate or reserve memory for the operation.\n  osErrorValue            = 0x86,       ///< Value of a parameter is out of range.\n  osErrorOS               = 0xFF,       ///< Unspecified RTOS error: run-time error but no other error message fits.\n  osStatusReserved        = 0x7FFFFFFF  ///< Prevents enum down-size compiler optimization.\n} osStatus;\n#else\ntypedef int32_t                  osStatus;\n#define osEventSignal           (0x08)\n#define osEventMessage          (0x10)\n#define osEventMail             (0x20)\n#define osEventTimeout          (0x40)\n#define osErrorOS               osError\n#define osErrorTimeoutResource  osErrorTimeout\n#define osErrorISRRecursive     (-126)\n#define osErrorValue            (-127)\n#define osErrorPriority         (-128)\n#endif\n \n \n// >>> the following data type definitions may be adapted towards a specific RTOS\n \n/// Thread ID identifies the thread.\n/// \\note CAN BE CHANGED: \\b implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef void *osThreadId;\n#else\n#define osThreadId osThreadId_t\n#endif\n \n/// Timer ID identifies the timer.\n/// \\note CAN BE CHANGED: \\b implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef void *osTimerId;\n#else\n#define osTimerId osTimerId_t\n#endif\n \n/// Mutex ID identifies the mutex.\n/// \\note CAN BE CHANGED: \\b implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef void *osMutexId;\n#else\n#define osMutexId osMutexId_t\n#endif\n \n/// Semaphore ID identifies the semaphore.\n/// \\note CAN BE CHANGED: \\b implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef void *osSemaphoreId;\n#else\n#define osSemaphoreId osSemaphoreId_t\n#endif\n \n/// Pool ID identifies the memory pool.\n/// \\note CAN BE CHANGED: \\b implementation specific in every CMSIS-RTOS.\ntypedef void *osPoolId;\n \n/// Message ID identifies the message queue.\n/// \\note CAN BE CHANGED: \\b implementation specific in every CMSIS-RTOS.\ntypedef void *osMessageQId;\n \n/// Mail ID identifies the mail queue.\n/// \\note CAN BE CHANGED: \\b implementation specific in every CMSIS-RTOS.\ntypedef void *osMailQId;\n \n \n/// Thread Definition structure contains startup information of a thread.\n/// \\note CAN BE CHANGED: \\b os_thread_def is implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef struct os_thread_def {\n  os_pthread                 pthread;   ///< start address of thread function\n  osPriority               tpriority;   ///< initial thread priority\n  uint32_t                 instances;   ///< maximum number of instances of that thread function\n  uint32_t                 stacksize;   ///< stack size requirements in bytes; 0 is default stack size\n} osThreadDef_t;\n#else\ntypedef struct os_thread_def {\n  os_pthread                 pthread;   ///< start address of thread function\n  osThreadAttr_t                attr;   ///< thread attributes\n} osThreadDef_t;\n#endif\n \n/// Timer Definition structure contains timer parameters.\n/// \\note CAN BE CHANGED: \\b os_timer_def is implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef struct os_timer_def {\n  os_ptimer                   ptimer;   ///< start address of a timer function\n} osTimerDef_t;\n#else\ntypedef struct os_timer_def {\n  os_ptimer                   ptimer;   ///< start address of a timer function\n  osTimerAttr_t                 attr;   ///< timer attributes\n} osTimerDef_t;\n#endif\n \n/// Mutex Definition structure contains setup information for a mutex.\n/// \\note CAN BE CHANGED: \\b os_mutex_def is implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef struct os_mutex_def {\n  uint32_t                     dummy;   ///< dummy value\n} osMutexDef_t;\n#else\n#define osMutexDef_t osMutexAttr_t\n#endif\n \n/// Semaphore Definition structure contains setup information for a semaphore.\n/// \\note CAN BE CHANGED: \\b os_semaphore_def is implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef struct os_semaphore_def {\n  uint32_t                     dummy;   ///< dummy value\n} osSemaphoreDef_t;\n#else\n#define osSemaphoreDef_t osSemaphoreAttr_t\n#endif\n \n/// Definition structure for memory block allocation.\n/// \\note CAN BE CHANGED: \\b os_pool_def is implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef struct os_pool_def {\n  uint32_t                   pool_sz;   ///< number of items (elements) in the pool\n  uint32_t                   item_sz;   ///< size of an item\n  void                         *pool;   ///< pointer to memory for pool\n} osPoolDef_t;\n#else\ntypedef struct os_pool_def {\n  uint32_t                   pool_sz;   ///< number of items (elements) in the pool\n  uint32_t                   item_sz;   ///< size of an item\n  osMemoryPoolAttr_t            attr;   ///< memory pool attributes\n} osPoolDef_t;\n#endif\n \n/// Definition structure for message queue.\n/// \\note CAN BE CHANGED: \\b os_messageQ_def is implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef struct os_messageQ_def {\n  uint32_t                  queue_sz;   ///< number of elements in the queue\n  void                         *pool;   ///< memory array for messages\n} osMessageQDef_t;\n#else\ntypedef struct os_messageQ_def {\n  uint32_t                  queue_sz;   ///< number of elements in the queue\n  osMessageQueueAttr_t          attr;   ///< message queue attributes\n} osMessageQDef_t;\n#endif\n \n/// Definition structure for mail queue.\n/// \\note CAN BE CHANGED: \\b os_mailQ_def is implementation specific in every CMSIS-RTOS.\n#if (osCMSIS < 0x20000U)\ntypedef struct os_mailQ_def {\n  uint32_t                  queue_sz;   ///< number of elements in the queue\n  uint32_t                   item_sz;   ///< size of an item\n  void                         *pool;   ///< memory array for mail\n} osMailQDef_t;\n#else\ntypedef struct os_mailQ_def {\n  uint32_t                  queue_sz;   ///< number of elements in the queue\n  uint32_t                   item_sz;   ///< size of an item\n  void                         *mail;   ///< pointer to mail\n  osMemoryPoolAttr_t         mp_attr;   ///< memory pool attributes\n  osMessageQueueAttr_t       mq_attr;   ///< message queue attributes\n} osMailQDef_t;\n#endif\n \n \n/// Event structure contains detailed information about an event.\ntypedef struct {\n  osStatus                    status;   ///< status code: event or error information\n  union {\n    uint32_t                       v;   ///< message as 32-bit value\n    void                          *p;   ///< message or mail as void pointer\n    int32_t                  signals;   ///< signal flags\n  } value;                              ///< event value\n  union {\n    osMailQId                mail_id;   ///< mail id obtained by \\ref osMailCreate\n    osMessageQId          message_id;   ///< message id obtained by \\ref osMessageCreate\n  } def;                                ///< event definition\n} osEvent;\n \n \n//  ==== Kernel Management Functions ====\n \n/// Initialize the RTOS Kernel for creating objects.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osKernelInitialize (void);\n#endif\n \n/// Start the RTOS Kernel scheduler.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osKernelStart (void);\n#endif\n \n/// Check if the RTOS kernel is already started.\n/// \\return 0 RTOS is not started, 1 RTOS is started.\n#if (osCMSIS < 0x20000U)\nint32_t osKernelRunning(void);\n#endif\n \n#if (defined(osFeature_SysTick) && (osFeature_SysTick != 0))  // System Timer available\n \n/// Get the RTOS kernel system timer counter.\n/// \\return RTOS kernel system timer as 32-bit value \n#if (osCMSIS < 0x20000U)\nuint32_t osKernelSysTick (void);\n#else\n#define  osKernelSysTick osKernelGetSysTimerCount\n#endif\n \n/// The RTOS kernel system timer frequency in Hz.\n/// \\note Reflects the system timer setting and is typically defined in a configuration file.\n#if (osCMSIS < 0x20000U)\n#define osKernelSysTickFrequency 100000000\n#endif\n \n/// Convert a microseconds value to a RTOS kernel system timer value.\n/// \\param         microsec     time value in microseconds.\n/// \\return time value normalized to the \\ref osKernelSysTickFrequency\n#if (osCMSIS < 0x20000U)\n#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)\n#else\n#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec *  osKernelGetSysTimerFreq()) / 1000000)\n#endif\n \n#endif  // System Timer available\n \n \n//  ==== Thread Management Functions ====\n \n/// Create a Thread Definition with function, priority, and stack requirements.\n/// \\param         name          name of the thread function.\n/// \\param         priority      initial priority of the thread function.\n/// \\param         instances     number of possible thread instances.\n/// \\param         stacksz       stack size (in bytes) requirements for the thread function.\n/// \\note CAN BE CHANGED: The parameters to \\b osThreadDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osThreadDef(name, priority, instances, stacksz) \\\nextern const osThreadDef_t os_thread_def_##name\n#else                            // define the object\n#if (osCMSIS < 0x20000U)\n#define osThreadDef(name, priority, instances, stacksz) \\\nconst osThreadDef_t os_thread_def_##name = \\\n{ (name), (priority), (instances), (stacksz) }\n#else\n#define osThreadDef(name, priority, instances, stacksz) \\\nconst osThreadDef_t os_thread_def_##name = \\\n{ (name), \\\n  { NULL, osThreadDetached, NULL, 0U, NULL, 8*((stacksz+7)/8), (priority), 0U, 0U } }\n#endif\n#endif\n \n/// Access a Thread definition.\n/// \\param         name          name of the thread definition object.\n/// \\note CAN BE CHANGED: The parameter to \\b osThread shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osThread(name) \\\n&os_thread_def_##name\n \n/// Create a thread and add it to Active Threads and set it to state READY.\n/// \\param[in]     thread_def    thread definition referenced with \\ref osThread.\n/// \\param[in]     argument      pointer that is passed to the thread function as start argument.\n/// \\return thread ID for reference by other functions or NULL in case of error.\nosThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument);\n \n/// Return the thread ID of the current running thread.\n/// \\return thread ID for reference by other functions or NULL in case of error.\n#if (osCMSIS < 0x20000U)\nosThreadId osThreadGetId (void);\n#endif\n \n/// Change priority of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     priority      new priority value for the thread function.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osThreadSetPriority (osThreadId thread_id, osPriority priority);\n#endif\n \n/// Get current priority of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\return current priority value of the specified thread.\n#if (osCMSIS < 0x20000U)\nosPriority osThreadGetPriority (osThreadId thread_id);\n#endif\n \n/// Pass control to next thread that is in state \\b READY.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osThreadYield (void);\n#endif\n \n/// Terminate execution of a thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osThreadTerminate (osThreadId thread_id);\n#endif\n \n \n//  ==== Signal Management ====\n \n/// Set the specified Signal Flags of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     signals       specifies the signal flags of the thread that should be set.\n/// \\return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.\nint32_t osSignalSet (osThreadId thread_id, int32_t signals);\n \n/// Clear the specified Signal Flags of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     signals       specifies the signal flags of the thread that shall be cleared.\n/// \\return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR.\nint32_t osSignalClear (osThreadId thread_id, int32_t signals);\n \n/// Wait for one or more Signal Flags to become signaled for the current \\b RUNNING thread.\n/// \\param[in]     signals       wait until all specified signal flags set or 0 for any single signal flag.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return event flag information or error code.\nosEvent osSignalWait (int32_t signals, uint32_t millisec);\n \n \n//  ==== Generic Wait Functions ====\n \n/// Wait for Timeout (Time Delay).\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue \"time delay\" value\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osDelay (uint32_t millisec);\n#endif\n \n#if (defined (osFeature_Wait) && (osFeature_Wait != 0))  // Generic Wait available\n \n/// Wait for Signal, Message, Mail, or Timeout.\n/// \\param[in] millisec          \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out\n/// \\return event that contains signal, message, or mail information or error code.\nosEvent osWait (uint32_t millisec);\n \n#endif  // Generic Wait available\n \n \n//  ==== Timer Management Functions ====\n \n/// Define a Timer object.\n/// \\param         name          name of the timer object.\n/// \\param         function      name of the timer call back function.\n/// \\note CAN BE CHANGED: The parameter to \\b osTimerDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osTimerDef(name, function) \\\nextern const osTimerDef_t os_timer_def_##name\n#else                            // define the object\n#if (osCMSIS < 0x20000U)\n#define osTimerDef(name, function) \\\nconst osTimerDef_t os_timer_def_##name = { (function) }\n#else\n#define osTimerDef(name, function) \\\nconst osTimerDef_t os_timer_def_##name = \\\n{ (function), { NULL, 0U, NULL, 0U } }\n#endif\n#endif\n \n/// Access a Timer definition.\n/// \\param         name          name of the timer object.\n/// \\note CAN BE CHANGED: The parameter to \\b osTimer shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osTimer(name) \\\n&os_timer_def_##name\n \n/// Create and Initialize a timer.\n/// \\param[in]     timer_def     timer object referenced with \\ref osTimer.\n/// \\param[in]     type          osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.\n/// \\param[in]     argument      argument to the timer call back function.\n/// \\return timer ID for reference by other functions or NULL in case of error.\nosTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument);\n \n/// Start or restart a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue \"time delay\" value of the timer.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osTimerStart (osTimerId timer_id, uint32_t millisec);\n#endif\n \n/// Stop a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osTimerStop (osTimerId timer_id);\n#endif\n \n/// Delete a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osTimerDelete (osTimerId timer_id);\n#endif\n \n \n//  ==== Mutex Management Functions ====\n \n/// Define a Mutex.\n/// \\param         name          name of the mutex object.\n/// \\note CAN BE CHANGED: The parameter to \\b osMutexDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMutexDef(name) \\\nextern const osMutexDef_t os_mutex_def_##name\n#else                            // define the object\n#if (osCMSIS < 0x20000U)\n#define osMutexDef(name) \\\nconst osMutexDef_t os_mutex_def_##name = { 0 }\n#else\n#define osMutexDef(name) \\\nconst osMutexDef_t os_mutex_def_##name = \\\n{ NULL, osMutexRecursive | osMutexPrioInherit | osMutexRobust, NULL, 0U }\n#endif\n#endif\n \n/// Access a Mutex definition.\n/// \\param         name          name of the mutex object.\n/// \\note CAN BE CHANGED: The parameter to \\b osMutex shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMutex(name) \\\n&os_mutex_def_##name\n \n/// Create and Initialize a Mutex object.\n/// \\param[in]     mutex_def     mutex definition referenced with \\ref osMutex.\n/// \\return mutex ID for reference by other functions or NULL in case of error.\nosMutexId osMutexCreate (const osMutexDef_t *mutex_def);\n \n/// Wait until a Mutex becomes available.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osMutexWait (osMutexId mutex_id, uint32_t millisec);\n#else\n#define  osMutexWait osMutexAcquire\n#endif\n \n/// Release a Mutex that was obtained by \\ref osMutexWait.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osMutexRelease (osMutexId mutex_id);\n#endif\n \n/// Delete a Mutex object.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osMutexDelete (osMutexId mutex_id);\n#endif\n \n \n//  ==== Semaphore Management Functions ====\n \n#if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0U))  // Semaphore available\n \n/// Define a Semaphore object.\n/// \\param         name          name of the semaphore object.\n/// \\note CAN BE CHANGED: The parameter to \\b osSemaphoreDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osSemaphoreDef(name) \\\nextern const osSemaphoreDef_t os_semaphore_def_##name\n#else                            // define the object\n#if (osCMSIS < 0x20000U)\n#define osSemaphoreDef(name) \\\nconst osSemaphoreDef_t os_semaphore_def_##name = { 0 }\n#else\n#define osSemaphoreDef(name) \\\nconst osSemaphoreDef_t os_semaphore_def_##name = \\\n{ NULL, 0U, NULL, 0U }\n#endif\n#endif\n \n/// Access a Semaphore definition.\n/// \\param         name          name of the semaphore object.\n/// \\note CAN BE CHANGED: The parameter to \\b osSemaphore shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osSemaphore(name) \\\n&os_semaphore_def_##name\n \n/// Create and Initialize a Semaphore object.\n/// \\param[in]     semaphore_def semaphore definition referenced with \\ref osSemaphore.\n/// \\param[in]     count         maximum and initial number of available tokens.\n/// \\return semaphore ID for reference by other functions or NULL in case of error.\nosSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count);\n \n/// Wait until a Semaphore token becomes available.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return number of available tokens, or -1 in case of incorrect parameters.\nint32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec);\n \n/// Release a Semaphore token.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osSemaphoreRelease (osSemaphoreId semaphore_id);\n#endif\n \n/// Delete a Semaphore object.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\return status code that indicates the execution status of the function.\n#if (osCMSIS < 0x20000U)\nosStatus osSemaphoreDelete (osSemaphoreId semaphore_id);\n#endif\n \n#endif  // Semaphore available\n \n \n//  ==== Memory Pool Management Functions ====\n \n#if (defined(osFeature_Pool) && (osFeature_Pool != 0))  // Memory Pool available\n \n/// \\brief Define a Memory Pool.\n/// \\param         name          name of the memory pool.\n/// \\param         no            maximum number of blocks (objects) in the memory pool.\n/// \\param         type          data type of a single block (object).\n/// \\note CAN BE CHANGED: The parameter to \\b osPoolDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osPoolDef(name, no, type) \\\nextern const osPoolDef_t os_pool_def_##name\n#else                            // define the object\n#if (osCMSIS < 0x20000U)\n#define osPoolDef(name, no, type) \\\nconst osPoolDef_t os_pool_def_##name = \\\n{ (no), sizeof(type), NULL }\n#else\n#define osPoolDef(name, no, type) \\\nconst osPoolDef_t os_pool_def_##name = \\\n{ (no), sizeof(type), { NULL, 0U, NULL, 0U, NULL, 0U } }\n#endif\n#endif\n \n/// \\brief Access a Memory Pool definition.\n/// \\param         name          name of the memory pool\n/// \\note CAN BE CHANGED: The parameter to \\b osPool shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osPool(name) \\\n&os_pool_def_##name\n \n/// Create and Initialize a Memory Pool object.\n/// \\param[in]     pool_def      memory pool definition referenced with \\ref osPool.\n/// \\return memory pool ID for reference by other functions or NULL in case of error.\nosPoolId osPoolCreate (const osPoolDef_t *pool_def);\n \n/// Allocate a memory block from a Memory Pool.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\return address of the allocated memory block or NULL in case of no memory available.\nvoid *osPoolAlloc (osPoolId pool_id);\n \n/// Allocate a memory block from a Memory Pool and set memory block to zero.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\return address of the allocated memory block or NULL in case of no memory available.\nvoid *osPoolCAlloc (osPoolId pool_id);\n \n/// Return an allocated memory block back to a Memory Pool.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\param[in]     block         address of the allocated memory block to be returned to the memory pool.\n/// \\return status code that indicates the execution status of the function.\nosStatus osPoolFree (osPoolId pool_id, void *block);\n \n#endif  // Memory Pool available\n \n \n//  ==== Message Queue Management Functions ====\n \n#if (defined(osFeature_MessageQ) && (osFeature_MessageQ != 0))  // Message Queue available\n  \n/// \\brief Create a Message Queue Definition.\n/// \\param         name          name of the queue.\n/// \\param         queue_sz      maximum number of messages in the queue.\n/// \\param         type          data type of a single message element (for debugger).\n/// \\note CAN BE CHANGED: The parameter to \\b osMessageQDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMessageQDef(name, queue_sz, type) \\\nextern const osMessageQDef_t os_messageQ_def_##name\n#else                            // define the object\n#if (osCMSIS < 0x20000U)\n#define osMessageQDef(name, queue_sz, type) \\\nconst osMessageQDef_t os_messageQ_def_##name = \\\n{ (queue_sz), NULL }\n#else\n#define osMessageQDef(name, queue_sz, type) \\\nconst osMessageQDef_t os_messageQ_def_##name = \\\n{ (queue_sz), { NULL, 0U, NULL, 0U, NULL, 0U } }\n#endif\n#endif\n \n/// \\brief Access a Message Queue Definition.\n/// \\param         name          name of the queue\n/// \\note CAN BE CHANGED: The parameter to \\b osMessageQ shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMessageQ(name) \\\n&os_messageQ_def_##name\n \n/// Create and Initialize a Message Queue object.\n/// \\param[in]     queue_def     message queue definition referenced with \\ref osMessageQ.\n/// \\param[in]     thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n/// \\return message queue ID for reference by other functions or NULL in case of error.\nosMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id);\n \n/// Put a Message to a Queue.\n/// \\param[in]     queue_id      message queue ID obtained with \\ref osMessageCreate.\n/// \\param[in]     info          message information.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\nosStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec);\n \n/// Get a Message from a Queue or timeout if Queue is empty.\n/// \\param[in]     queue_id      message queue ID obtained with \\ref osMessageCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return event information that includes status code.\nosEvent osMessageGet (osMessageQId queue_id, uint32_t millisec);\n \n#endif  // Message Queue available\n \n \n//  ==== Mail Queue Management Functions ====\n \n#if (defined(osFeature_MailQ) && (osFeature_MailQ != 0))  // Mail Queue available\n \n/// \\brief Create a Mail Queue Definition.\n/// \\param         name          name of the queue.\n/// \\param         queue_sz      maximum number of mails in the queue.\n/// \\param         type          data type of a single mail element.\n/// \\note CAN BE CHANGED: The parameter to \\b osMailQDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMailQDef(name, queue_sz, type) \\\nextern const osMailQDef_t os_mailQ_def_##name\n#else                            // define the object\n#if (osCMSIS < 0x20000U)\n#define osMailQDef(name, queue_sz, type) \\\nconst osMailQDef_t os_mailQ_def_##name = \\\n{ (queue_sz), sizeof(type), NULL }\n#else\n#define osMailQDef(name, queue_sz, type) \\\nstatic void *os_mail_p_##name[2]; \\\nconst osMailQDef_t os_mailQ_def_##name = \\\n{ (queue_sz), sizeof(type), (&os_mail_p_##name), \\\n  { NULL, 0U, NULL, 0U, NULL, 0U }, \\\n  { NULL, 0U, NULL, 0U, NULL, 0U } }\n#endif\n#endif\n \n/// \\brief Access a Mail Queue Definition.\n/// \\param         name          name of the queue\n/// \\note CAN BE CHANGED: The parameter to \\b osMailQ shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMailQ(name) \\\n&os_mailQ_def_##name\n \n/// Create and Initialize a Mail Queue object.\n/// \\param[in]     queue_def     mail queue definition referenced with \\ref osMailQ.\n/// \\param[in]     thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n/// \\return mail queue ID for reference by other functions or NULL in case of error.\nosMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id);\n \n/// Allocate a memory block for mail from a mail memory pool.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out\n/// \\return pointer to memory block that can be filled with mail or NULL in case of error.\nvoid *osMailAlloc (osMailQId queue_id, uint32_t millisec);\n \n/// Allocate a memory block for mail from a mail memory pool and set memory block to zero.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out\n/// \\return pointer to memory block that can be filled with mail or NULL in case of error.\nvoid *osMailCAlloc (osMailQId queue_id, uint32_t millisec);\n \n/// Put a Mail into a Queue.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     mail          pointer to memory with mail to put into a queue.\n/// \\return status code that indicates the execution status of the function.\nosStatus osMailPut (osMailQId queue_id, const void *mail);\n \n/// Get a Mail from a Queue or timeout if Queue is empty.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      \\ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.\n/// \\return event information that includes status code.\nosEvent osMailGet (osMailQId queue_id, uint32_t millisec);\n \n/// Free a memory block by returning it to a mail memory pool.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     mail          pointer to memory block that was obtained with \\ref osMailGet.\n/// \\return status code that indicates the execution status of the function.\nosStatus osMailFree (osMailQId queue_id, void *mail);\n \n#endif  // Mail Queue available\n \n \n#ifdef  __cplusplus\n}\n#endif\n \n#endif  // CMSIS_OS_H_\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/RTOS2/Template/cmsis_os1.c",
    "content": "/*\n * Copyright (c) 2013-2017 ARM Limited. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * ----------------------------------------------------------------------\n *\n * $Date:        10. January 2017\n * $Revision:    V1.2\n *\n * Project:      CMSIS-RTOS API V1\n * Title:        cmsis_os_v1.c V1 module file\n *---------------------------------------------------------------------------*/\n\n#include <string.h>\n#include \"cmsis_os.h\"\n\n#if (osCMSIS >= 0x20000U)\n\n\n// Thread\nosThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument) {\n\n  if (thread_def == NULL) {\n    return (osThreadId)NULL;\n  }\n  return osThreadNew((osThreadFunc_t)thread_def->pthread, argument, &thread_def->attr);\n}\n\n\n// Signals\n\n#define SignalMask ((1U<<osFeature_Signals)-1U)\n\nint32_t osSignalSet (osThreadId thread_id, int32_t signals) {\n  uint32_t flags;\n\n  flags = osThreadFlagsSet(thread_id, (uint32_t)signals);\n  if ((flags & 0x80000000U) != 0U) {\n    return ((int32_t)0x80000000U);\n  }\n  return ((int32_t)(flags & ~((uint32_t)signals)));\n}\n\nint32_t osSignalClear (osThreadId thread_id, int32_t signals) {\n  uint32_t flags;\n\n  if (thread_id != osThreadGetId()) {\n    return ((int32_t)0x80000000U);\n  }\n  flags = osThreadFlagsClear((uint32_t)signals);\n  if ((flags & 0x80000000U) != 0U) {\n    return ((int32_t)0x80000000U);\n  }\n  return ((int32_t)flags);\n}\n\nosEvent osSignalWait (int32_t signals, uint32_t millisec) {\n  osEvent  event;\n  uint32_t flags;\n\n  if (signals != 0) {\n    flags = osThreadFlagsWait((uint32_t)signals, osFlagsWaitAll, millisec);\n  } else {\n    flags = osThreadFlagsWait(SignalMask,        osFlagsWaitAny, millisec);\n  }\n  if ((flags > 0U) && (flags < 0x80000000U)) {\n    event.status = osEventSignal;\n    event.value.signals = (int32_t)flags;\n  } else {\n    switch ((int32_t)flags) {\n      case osErrorResource:\n        event.status = osOK;\n        break;\n      case osErrorTimeout:\n        event.status = osEventTimeout;\n        break;\n      case osErrorParameter:\n        event.status = osErrorValue;\n        break;\n      default:\n        event.status = (osStatus)flags;\n        break;\n    }\n  }\n  return event;\n}\n\n\n// Timer\nosTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument) {\n\n  if (timer_def == NULL) {\n    return (osTimerId)NULL;\n  }\n  return osTimerNew((osTimerFunc_t)timer_def->ptimer, type, argument, &timer_def->attr);\n}\n\n\n// Mutex\nosMutexId osMutexCreate (const osMutexDef_t *mutex_def) {\n\n  if (mutex_def == NULL) {\n    return (osMutexId)NULL;\n  }\n  return osMutexNew(mutex_def);\n}\n\n\n// Semaphore\n\n#if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0U))\n\nosSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count) {\n\n  if (semaphore_def == NULL) {\n    return (osSemaphoreId)NULL;\n  }\n  return osSemaphoreNew((uint32_t)count, (uint32_t)count, semaphore_def);\n}\n\nint32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec) {\n  osStatus_t status;\n  uint32_t   count;\n\n  status = osSemaphoreAcquire(semaphore_id, millisec);\n  switch (status) {\n    case osOK:\n      count = osSemaphoreGetCount(semaphore_id);\n      return ((int32_t)count + 1);\n    case osErrorResource:\n    case osErrorTimeout:\n      return 0;\n    default:\n      break;\n  }\n  return -1;\n}\n\n#endif  // Semaphore\n\n\n// Memory Pool\n\n#if (defined(osFeature_Pool) && (osFeature_Pool != 0))\n\nosPoolId osPoolCreate (const osPoolDef_t *pool_def) {\n\n  if (pool_def == NULL) {\n    return (osPoolId)NULL;\n  }\n  return ((osPoolId)(osMemoryPoolNew(pool_def->pool_sz, pool_def->item_sz, &pool_def->attr)));\n}\n\nvoid *osPoolAlloc (osPoolId pool_id) {\n  return osMemoryPoolAlloc((osMemoryPoolId_t)pool_id, 0U);\n}\n\nvoid *osPoolCAlloc (osPoolId pool_id) {\n  void    *block;\n  uint32_t block_size;\n\n  block_size = osMemoryPoolGetBlockSize((osMemoryPoolId_t)pool_id);\n  if (block_size == 0U) {\n    return NULL;\n  }\n  block = osMemoryPoolAlloc((osMemoryPoolId_t)pool_id, 0U);\n  if (block != NULL) {\n    memset(block, 0, block_size);\n  }\n  return block;\n}\n\nosStatus osPoolFree (osPoolId pool_id, void *block) {\n  return osMemoryPoolFree((osMemoryPoolId_t)pool_id, block);\n}\n\n#endif  // Memory Pool\n\n\n// Message Queue\n\n#if (defined(osFeature_MessageQ) && (osFeature_MessageQ != 0))\n\nosMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id) {\n  (void)thread_id;\n\n  if (queue_def == NULL) {\n    return (osMessageQId)NULL;\n  }\n  return ((osMessageQId)(osMessageQueueNew(queue_def->queue_sz, sizeof(uint32_t), &queue_def->attr)));\n}\n\nosStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec) {\n  return osMessageQueuePut((osMessageQueueId_t)queue_id, &info, 0U, millisec);\n}\n\nosEvent osMessageGet (osMessageQId queue_id, uint32_t millisec) {\n  osStatus_t status;\n  osEvent    event;\n  uint32_t   message;\n\n  status = osMessageQueueGet((osMessageQueueId_t)queue_id, &message, NULL, millisec);\n  switch (status) {\n    case osOK:\n      event.status = osEventMessage;\n      event.value.v = message;\n      break;\n    case osErrorResource:\n      event.status = osOK;\n      break;\n    case osErrorTimeout:\n      event.status = osEventTimeout;\n      break;\n    default:\n      event.status = status;\n      break;\n  }\n  return event;\n}\n\n#endif  // Message Queue\n\n\n// Mail Queue\n\n#if (defined(osFeature_MailQ) && (osFeature_MailQ != 0))\n\ntypedef struct os_mail_queue_s {\n  osMemoryPoolId_t   mp_id;\n  osMessageQueueId_t mq_id;\n} os_mail_queue_t;\n\nosMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id) {\n  os_mail_queue_t *ptr;\n  (void)thread_id;\n\n  if (queue_def == NULL) {\n    return (osMailQId)NULL;\n  }\n\n  ptr = queue_def->mail;\n  if (ptr == NULL) {\n    return (osMailQId)NULL;\n  }\n\n  ptr->mp_id = osMemoryPoolNew  (queue_def->queue_sz, queue_def->item_sz, &queue_def->mp_attr);\n  ptr->mq_id = osMessageQueueNew(queue_def->queue_sz, sizeof(void *), &queue_def->mq_attr);\n  if ((ptr->mp_id == (osMemoryPoolId_t)NULL) || (ptr->mq_id == (osMessageQueueId_t)NULL)) {\n    if (ptr->mp_id != (osMemoryPoolId_t)NULL) {\n      osMemoryPoolDelete(ptr->mp_id);\n    }\n    if (ptr->mq_id != (osMessageQueueId_t)NULL) {\n      osMessageQueueDelete(ptr->mq_id);\n    }\n    return (osMailQId)NULL;\n  }\n\n  return (osMailQId)ptr;\n}\n\nvoid *osMailAlloc (osMailQId queue_id, uint32_t millisec) {\n  os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id;\n\n  if (ptr == NULL) {\n    return NULL;\n  }\n  return osMemoryPoolAlloc(ptr->mp_id, millisec);\n}\n\nvoid *osMailCAlloc (osMailQId queue_id, uint32_t millisec) {\n  os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id;\n  void            *block;\n  uint32_t         block_size;\n\n  if (ptr == NULL) {\n    return NULL;\n  }\n  block_size = osMemoryPoolGetBlockSize(ptr->mp_id);\n  if (block_size == 0U) {\n    return NULL;\n  }\n  block = osMemoryPoolAlloc(ptr->mp_id, millisec);\n  if (block != NULL) {\n    memset(block, 0, block_size);\n  }\n\n  return block;\n\n}\n\nosStatus osMailPut (osMailQId queue_id, const void *mail) {\n  os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id;\n\n  if (ptr == NULL) {\n    return osErrorParameter;\n  }\n  if (mail == NULL) {\n    return osErrorValue;\n  }\n  return osMessageQueuePut(ptr->mq_id, &mail, 0U, 0U);\n}\n\nosEvent osMailGet (osMailQId queue_id, uint32_t millisec) {\n  os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id;\n  osStatus_t       status;\n  osEvent          event;\n  void            *mail;\n\n  if (ptr == NULL) {\n    event.status = osErrorParameter;\n    return event;\n  }\n\n  status = osMessageQueueGet(ptr->mq_id, &mail, NULL, millisec);\n  switch (status) {\n    case osOK:\n      event.status = osEventMail;\n      event.value.p = mail;\n      break;\n    case osErrorResource:\n      event.status = osOK;\n      break;\n    case osErrorTimeout:\n      event.status = osEventTimeout;\n      break;\n    default:\n      event.status = status;\n      break;\n  }\n  return event;\n}\n\nosStatus osMailFree (osMailQId queue_id, void *mail) {\n  os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id;\n\n  if (ptr == NULL) {\n    return osErrorParameter;\n  }\n  if (mail == NULL) {\n    return osErrorValue;\n  }\n  return osMemoryPoolFree(ptr->mp_id, mail);\n}\n\n#endif  // Mail Queue\n\n\n#endif  // osCMSIS\n"
  },
  {
    "path": "SourceCode/Drivers/CMSIS/docs/General/html/LICENSE.txt",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32_hal_legacy.h\n  * @author  MCD Application Team\n  * @brief   This file contains aliases definition for the STM32Cube HAL constants\n  *          macros and functions maintained for legacy purpose.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2021 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32_HAL_LEGACY\n#define STM32_HAL_LEGACY\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n/* Exported types ------------------------------------------------------------*/\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup HAL_AES_Aliased_Defines HAL CRYP Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define AES_FLAG_RDERR                  CRYP_FLAG_RDERR\n#define AES_FLAG_WRERR                  CRYP_FLAG_WRERR\n#define AES_CLEARFLAG_CCF               CRYP_CLEARFLAG_CCF\n#define AES_CLEARFLAG_RDERR             CRYP_CLEARFLAG_RDERR\n#define AES_CLEARFLAG_WRERR             CRYP_CLEARFLAG_WRERR\n#if defined(STM32U5)\n#define CRYP_DATATYPE_32B               CRYP_NO_SWAP\n#define CRYP_DATATYPE_16B               CRYP_HALFWORD_SWAP\n#define CRYP_DATATYPE_8B                CRYP_BYTE_SWAP\n#define CRYP_DATATYPE_1B                CRYP_BIT_SWAP\n#define CRYP_CCF_CLEAR                  CRYP_CLEAR_CCF\n#define CRYP_ERR_CLEAR                  CRYP_CLEAR_RWEIF\n#endif /* STM32U5 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_ADC_Aliased_Defines HAL ADC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define ADC_RESOLUTION12b               ADC_RESOLUTION_12B\n#define ADC_RESOLUTION10b               ADC_RESOLUTION_10B\n#define ADC_RESOLUTION8b                ADC_RESOLUTION_8B\n#define ADC_RESOLUTION6b                ADC_RESOLUTION_6B\n#define OVR_DATA_OVERWRITTEN            ADC_OVR_DATA_OVERWRITTEN\n#define OVR_DATA_PRESERVED              ADC_OVR_DATA_PRESERVED\n#define EOC_SINGLE_CONV                 ADC_EOC_SINGLE_CONV\n#define EOC_SEQ_CONV                    ADC_EOC_SEQ_CONV\n#define EOC_SINGLE_SEQ_CONV             ADC_EOC_SINGLE_SEQ_CONV\n#define REGULAR_GROUP                   ADC_REGULAR_GROUP\n#define INJECTED_GROUP                  ADC_INJECTED_GROUP\n#define REGULAR_INJECTED_GROUP          ADC_REGULAR_INJECTED_GROUP\n#define AWD_EVENT                       ADC_AWD_EVENT\n#define AWD1_EVENT                      ADC_AWD1_EVENT\n#define AWD2_EVENT                      ADC_AWD2_EVENT\n#define AWD3_EVENT                      ADC_AWD3_EVENT\n#define OVR_EVENT                       ADC_OVR_EVENT\n#define JQOVF_EVENT                     ADC_JQOVF_EVENT\n#define ALL_CHANNELS                    ADC_ALL_CHANNELS\n#define REGULAR_CHANNELS                ADC_REGULAR_CHANNELS\n#define INJECTED_CHANNELS               ADC_INJECTED_CHANNELS\n#define SYSCFG_FLAG_SENSOR_ADC          ADC_FLAG_SENSOR\n#define SYSCFG_FLAG_VREF_ADC            ADC_FLAG_VREFINT\n#define ADC_CLOCKPRESCALER_PCLK_DIV1    ADC_CLOCK_SYNC_PCLK_DIV1\n#define ADC_CLOCKPRESCALER_PCLK_DIV2    ADC_CLOCK_SYNC_PCLK_DIV2\n#define ADC_CLOCKPRESCALER_PCLK_DIV4    ADC_CLOCK_SYNC_PCLK_DIV4\n#define ADC_CLOCKPRESCALER_PCLK_DIV6    ADC_CLOCK_SYNC_PCLK_DIV6\n#define ADC_CLOCKPRESCALER_PCLK_DIV8    ADC_CLOCK_SYNC_PCLK_DIV8\n#define ADC_EXTERNALTRIG0_T6_TRGO       ADC_EXTERNALTRIGCONV_T6_TRGO\n#define ADC_EXTERNALTRIG1_T21_CC2       ADC_EXTERNALTRIGCONV_T21_CC2\n#define ADC_EXTERNALTRIG2_T2_TRGO       ADC_EXTERNALTRIGCONV_T2_TRGO\n#define ADC_EXTERNALTRIG3_T2_CC4        ADC_EXTERNALTRIGCONV_T2_CC4\n#define ADC_EXTERNALTRIG4_T22_TRGO      ADC_EXTERNALTRIGCONV_T22_TRGO\n#define ADC_EXTERNALTRIG7_EXT_IT11      ADC_EXTERNALTRIGCONV_EXT_IT11\n#define ADC_CLOCK_ASYNC                 ADC_CLOCK_ASYNC_DIV1\n#define ADC_EXTERNALTRIG_EDGE_NONE      ADC_EXTERNALTRIGCONVEDGE_NONE\n#define ADC_EXTERNALTRIG_EDGE_RISING    ADC_EXTERNALTRIGCONVEDGE_RISING\n#define ADC_EXTERNALTRIG_EDGE_FALLING   ADC_EXTERNALTRIGCONVEDGE_FALLING\n#define ADC_EXTERNALTRIG_EDGE_RISINGFALLING ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING\n#define ADC_SAMPLETIME_2CYCLE_5         ADC_SAMPLETIME_2CYCLES_5\n\n#define HAL_ADC_STATE_BUSY_REG          HAL_ADC_STATE_REG_BUSY\n#define HAL_ADC_STATE_BUSY_INJ          HAL_ADC_STATE_INJ_BUSY\n#define HAL_ADC_STATE_EOC_REG           HAL_ADC_STATE_REG_EOC\n#define HAL_ADC_STATE_EOC_INJ           HAL_ADC_STATE_INJ_EOC\n#define HAL_ADC_STATE_ERROR             HAL_ADC_STATE_ERROR_INTERNAL\n#define HAL_ADC_STATE_BUSY              HAL_ADC_STATE_BUSY_INTERNAL\n#define HAL_ADC_STATE_AWD               HAL_ADC_STATE_AWD1\n\n#if defined(STM32H7)\n#define ADC_CHANNEL_VBAT_DIV4           ADC_CHANNEL_VBAT\n#endif /* STM32H7 */\n\n#if defined(STM32U5)\n#define ADC_SAMPLETIME_5CYCLE           ADC_SAMPLETIME_5CYCLES\n#define ADC_SAMPLETIME_391CYCLES_5      ADC_SAMPLETIME_391CYCLES\n#define ADC4_SAMPLETIME_160CYCLES_5     ADC4_SAMPLETIME_814CYCLES_5\n#endif /* STM32U5 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_CEC_Aliased_Defines HAL CEC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define __HAL_CEC_GET_IT __HAL_CEC_GET_FLAG\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_COMP_Aliased_Defines HAL COMP Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define COMP_WINDOWMODE_DISABLED       COMP_WINDOWMODE_DISABLE\n#define COMP_WINDOWMODE_ENABLED        COMP_WINDOWMODE_ENABLE\n#define COMP_EXTI_LINE_COMP1_EVENT     COMP_EXTI_LINE_COMP1\n#define COMP_EXTI_LINE_COMP2_EVENT     COMP_EXTI_LINE_COMP2\n#define COMP_EXTI_LINE_COMP3_EVENT     COMP_EXTI_LINE_COMP3\n#define COMP_EXTI_LINE_COMP4_EVENT     COMP_EXTI_LINE_COMP4\n#define COMP_EXTI_LINE_COMP5_EVENT     COMP_EXTI_LINE_COMP5\n#define COMP_EXTI_LINE_COMP6_EVENT     COMP_EXTI_LINE_COMP6\n#define COMP_EXTI_LINE_COMP7_EVENT     COMP_EXTI_LINE_COMP7\n#if defined(STM32L0)\n#define COMP_LPTIMCONNECTION_ENABLED   ((uint32_t)0x00000003U)    /*!< COMPX output generic naming: connected to LPTIM input 1 for COMP1, LPTIM input 2 for COMP2 */\n#endif\n#define COMP_OUTPUT_COMP6TIM2OCREFCLR  COMP_OUTPUT_COMP6_TIM2OCREFCLR\n#if defined(STM32F373xC) || defined(STM32F378xx)\n#define COMP_OUTPUT_TIM3IC1            COMP_OUTPUT_COMP1_TIM3IC1\n#define COMP_OUTPUT_TIM3OCREFCLR       COMP_OUTPUT_COMP1_TIM3OCREFCLR\n#endif /* STM32F373xC || STM32F378xx */\n\n#if defined(STM32L0) || defined(STM32L4)\n#define COMP_WINDOWMODE_ENABLE         COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON\n\n#define COMP_NONINVERTINGINPUT_IO1      COMP_INPUT_PLUS_IO1\n#define COMP_NONINVERTINGINPUT_IO2      COMP_INPUT_PLUS_IO2\n#define COMP_NONINVERTINGINPUT_IO3      COMP_INPUT_PLUS_IO3\n#define COMP_NONINVERTINGINPUT_IO4      COMP_INPUT_PLUS_IO4\n#define COMP_NONINVERTINGINPUT_IO5      COMP_INPUT_PLUS_IO5\n#define COMP_NONINVERTINGINPUT_IO6      COMP_INPUT_PLUS_IO6\n\n#define COMP_INVERTINGINPUT_1_4VREFINT  COMP_INPUT_MINUS_1_4VREFINT\n#define COMP_INVERTINGINPUT_1_2VREFINT  COMP_INPUT_MINUS_1_2VREFINT\n#define COMP_INVERTINGINPUT_3_4VREFINT  COMP_INPUT_MINUS_3_4VREFINT\n#define COMP_INVERTINGINPUT_VREFINT     COMP_INPUT_MINUS_VREFINT\n#define COMP_INVERTINGINPUT_DAC1_CH1    COMP_INPUT_MINUS_DAC1_CH1\n#define COMP_INVERTINGINPUT_DAC1_CH2    COMP_INPUT_MINUS_DAC1_CH2\n#define COMP_INVERTINGINPUT_DAC1        COMP_INPUT_MINUS_DAC1_CH1\n#define COMP_INVERTINGINPUT_DAC2        COMP_INPUT_MINUS_DAC1_CH2\n#define COMP_INVERTINGINPUT_IO1         COMP_INPUT_MINUS_IO1\n#if defined(STM32L0)\n/* Issue fixed on STM32L0 COMP driver: only 2 dedicated IO (IO1 and IO2),     */\n/* IO2 was wrongly assigned to IO shared with DAC and IO3 was corresponding   */\n/* to the second dedicated IO (only for COMP2).                               */\n#define COMP_INVERTINGINPUT_IO2         COMP_INPUT_MINUS_DAC1_CH2\n#define COMP_INVERTINGINPUT_IO3         COMP_INPUT_MINUS_IO2\n#else\n#define COMP_INVERTINGINPUT_IO2         COMP_INPUT_MINUS_IO2\n#define COMP_INVERTINGINPUT_IO3         COMP_INPUT_MINUS_IO3\n#endif\n#define COMP_INVERTINGINPUT_IO4         COMP_INPUT_MINUS_IO4\n#define COMP_INVERTINGINPUT_IO5         COMP_INPUT_MINUS_IO5\n\n#define COMP_OUTPUTLEVEL_LOW            COMP_OUTPUT_LEVEL_LOW\n#define COMP_OUTPUTLEVEL_HIGH           COMP_OUTPUT_LEVEL_HIGH\n\n/* Note: Literal \"COMP_FLAG_LOCK\" kept for legacy purpose.                    */\n/*       To check COMP lock state, use macro \"__HAL_COMP_IS_LOCKED()\".        */\n#if defined(COMP_CSR_LOCK)\n#define COMP_FLAG_LOCK                 COMP_CSR_LOCK\n#elif defined(COMP_CSR_COMP1LOCK)\n#define COMP_FLAG_LOCK                 COMP_CSR_COMP1LOCK\n#elif defined(COMP_CSR_COMPxLOCK)\n#define COMP_FLAG_LOCK                 COMP_CSR_COMPxLOCK\n#endif\n\n#if defined(STM32L4)\n#define COMP_BLANKINGSRCE_TIM1OC5        COMP_BLANKINGSRC_TIM1_OC5_COMP1\n#define COMP_BLANKINGSRCE_TIM2OC3        COMP_BLANKINGSRC_TIM2_OC3_COMP1\n#define COMP_BLANKINGSRCE_TIM3OC3        COMP_BLANKINGSRC_TIM3_OC3_COMP1\n#define COMP_BLANKINGSRCE_TIM3OC4        COMP_BLANKINGSRC_TIM3_OC4_COMP2\n#define COMP_BLANKINGSRCE_TIM8OC5        COMP_BLANKINGSRC_TIM8_OC5_COMP2\n#define COMP_BLANKINGSRCE_TIM15OC1       COMP_BLANKINGSRC_TIM15_OC1_COMP2\n#define COMP_BLANKINGSRCE_NONE           COMP_BLANKINGSRC_NONE\n#endif\n\n#if defined(STM32L0)\n#define COMP_MODE_HIGHSPEED              COMP_POWERMODE_MEDIUMSPEED\n#define COMP_MODE_LOWSPEED               COMP_POWERMODE_ULTRALOWPOWER\n#else\n#define COMP_MODE_HIGHSPEED              COMP_POWERMODE_HIGHSPEED\n#define COMP_MODE_MEDIUMSPEED            COMP_POWERMODE_MEDIUMSPEED\n#define COMP_MODE_LOWPOWER               COMP_POWERMODE_LOWPOWER\n#define COMP_MODE_ULTRALOWPOWER          COMP_POWERMODE_ULTRALOWPOWER\n#endif\n\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_CORTEX_Aliased_Defines HAL CORTEX Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig\n#if defined(STM32U5)\n#define  MPU_DEVICE_nGnRnE          MPU_DEVICE_NGNRNE\n#define  MPU_DEVICE_nGnRE           MPU_DEVICE_NGNRE\n#define  MPU_DEVICE_nGRE            MPU_DEVICE_NGRE\n#endif /* STM32U5 */\n/**\n  * @}\n  */\n\n/** @defgroup CRC_Aliases CRC API aliases\n  * @{\n  */\n#if defined(STM32H5) || defined(STM32C0)\n#else\n#define HAL_CRC_Input_Data_Reverse   HAL_CRCEx_Input_Data_Reverse    /*!< Aliased to HAL_CRCEx_Input_Data_Reverse for inter STM32 series compatibility  */\n#define HAL_CRC_Output_Data_Reverse  HAL_CRCEx_Output_Data_Reverse   /*!< Aliased to HAL_CRCEx_Output_Data_Reverse for inter STM32 series compatibility */\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_CRC_Aliased_Defines HAL CRC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define CRC_OUTPUTDATA_INVERSION_DISABLED    CRC_OUTPUTDATA_INVERSION_DISABLE\n#define CRC_OUTPUTDATA_INVERSION_ENABLED     CRC_OUTPUTDATA_INVERSION_ENABLE\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_DAC_Aliased_Defines HAL DAC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define DAC1_CHANNEL_1                                  DAC_CHANNEL_1\n#define DAC1_CHANNEL_2                                  DAC_CHANNEL_2\n#define DAC2_CHANNEL_1                                  DAC_CHANNEL_1\n#define DAC_WAVE_NONE                                   0x00000000U\n#define DAC_WAVE_NOISE                                  DAC_CR_WAVE1_0\n#define DAC_WAVE_TRIANGLE                               DAC_CR_WAVE1_1\n#define DAC_WAVEGENERATION_NONE                         DAC_WAVE_NONE\n#define DAC_WAVEGENERATION_NOISE                        DAC_WAVE_NOISE\n#define DAC_WAVEGENERATION_TRIANGLE                     DAC_WAVE_TRIANGLE\n\n#if defined(STM32G4) || defined(STM32H7) || defined (STM32U5)\n#define DAC_CHIPCONNECT_DISABLE       DAC_CHIPCONNECT_EXTERNAL\n#define DAC_CHIPCONNECT_ENABLE        DAC_CHIPCONNECT_INTERNAL\n#endif\n\n#if defined(STM32U5)\n#define DAC_TRIGGER_STOP_LPTIM1_OUT  DAC_TRIGGER_STOP_LPTIM1_CH1\n#define DAC_TRIGGER_STOP_LPTIM3_OUT  DAC_TRIGGER_STOP_LPTIM3_CH1\n#define DAC_TRIGGER_LPTIM1_OUT       DAC_TRIGGER_LPTIM1_CH1\n#define DAC_TRIGGER_LPTIM3_OUT       DAC_TRIGGER_LPTIM3_CH1\n#endif\n\n#if defined(STM32H5)\n#define DAC_TRIGGER_LPTIM1_OUT       DAC_TRIGGER_LPTIM1_CH1\n#define DAC_TRIGGER_LPTIM2_OUT       DAC_TRIGGER_LPTIM2_CH1\n#endif\n\n#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || defined(STM32F4) || defined(STM32G4)\n#define HAL_DAC_MSP_INIT_CB_ID       HAL_DAC_MSPINIT_CB_ID\n#define HAL_DAC_MSP_DEINIT_CB_ID     HAL_DAC_MSPDEINIT_CB_ID\n#endif\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_DMA_Aliased_Defines HAL DMA Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define HAL_REMAPDMA_ADC_DMA_CH2                DMA_REMAP_ADC_DMA_CH2\n#define HAL_REMAPDMA_USART1_TX_DMA_CH4          DMA_REMAP_USART1_TX_DMA_CH4\n#define HAL_REMAPDMA_USART1_RX_DMA_CH5          DMA_REMAP_USART1_RX_DMA_CH5\n#define HAL_REMAPDMA_TIM16_DMA_CH4              DMA_REMAP_TIM16_DMA_CH4\n#define HAL_REMAPDMA_TIM17_DMA_CH2              DMA_REMAP_TIM17_DMA_CH2\n#define HAL_REMAPDMA_USART3_DMA_CH32            DMA_REMAP_USART3_DMA_CH32\n#define HAL_REMAPDMA_TIM16_DMA_CH6              DMA_REMAP_TIM16_DMA_CH6\n#define HAL_REMAPDMA_TIM17_DMA_CH7              DMA_REMAP_TIM17_DMA_CH7\n#define HAL_REMAPDMA_SPI2_DMA_CH67              DMA_REMAP_SPI2_DMA_CH67\n#define HAL_REMAPDMA_USART2_DMA_CH67            DMA_REMAP_USART2_DMA_CH67\n#define HAL_REMAPDMA_I2C1_DMA_CH76              DMA_REMAP_I2C1_DMA_CH76\n#define HAL_REMAPDMA_TIM1_DMA_CH6               DMA_REMAP_TIM1_DMA_CH6\n#define HAL_REMAPDMA_TIM2_DMA_CH7               DMA_REMAP_TIM2_DMA_CH7\n#define HAL_REMAPDMA_TIM3_DMA_CH6               DMA_REMAP_TIM3_DMA_CH6\n\n#define IS_HAL_REMAPDMA                          IS_DMA_REMAP\n#define __HAL_REMAPDMA_CHANNEL_ENABLE            __HAL_DMA_REMAP_CHANNEL_ENABLE\n#define __HAL_REMAPDMA_CHANNEL_DISABLE           __HAL_DMA_REMAP_CHANNEL_DISABLE\n\n#if defined(STM32L4)\n\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI0            HAL_DMAMUX1_REQ_GEN_EXTI0\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI1            HAL_DMAMUX1_REQ_GEN_EXTI1\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI2            HAL_DMAMUX1_REQ_GEN_EXTI2\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI3            HAL_DMAMUX1_REQ_GEN_EXTI3\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI4            HAL_DMAMUX1_REQ_GEN_EXTI4\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI5            HAL_DMAMUX1_REQ_GEN_EXTI5\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI6            HAL_DMAMUX1_REQ_GEN_EXTI6\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI7            HAL_DMAMUX1_REQ_GEN_EXTI7\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI8            HAL_DMAMUX1_REQ_GEN_EXTI8\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI9            HAL_DMAMUX1_REQ_GEN_EXTI9\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI10           HAL_DMAMUX1_REQ_GEN_EXTI10\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI11           HAL_DMAMUX1_REQ_GEN_EXTI11\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI12           HAL_DMAMUX1_REQ_GEN_EXTI12\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI13           HAL_DMAMUX1_REQ_GEN_EXTI13\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI14           HAL_DMAMUX1_REQ_GEN_EXTI14\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI15           HAL_DMAMUX1_REQ_GEN_EXTI15\n#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT  HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT\n#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT  HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT\n#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT  HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT\n#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH3_EVT  HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH3_EVT\n#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT       HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT\n#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT       HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT\n#define HAL_DMAMUX1_REQUEST_GEN_DSI_TE           HAL_DMAMUX1_REQ_GEN_DSI_TE\n#define HAL_DMAMUX1_REQUEST_GEN_DSI_EOT          HAL_DMAMUX1_REQ_GEN_DSI_EOT\n#define HAL_DMAMUX1_REQUEST_GEN_DMA2D_EOT        HAL_DMAMUX1_REQ_GEN_DMA2D_EOT\n#define HAL_DMAMUX1_REQUEST_GEN_LTDC_IT          HAL_DMAMUX1_REQ_GEN_LTDC_IT\n\n#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT          HAL_DMAMUX_REQ_GEN_NO_EVENT\n#define HAL_DMAMUX_REQUEST_GEN_RISING            HAL_DMAMUX_REQ_GEN_RISING\n#define HAL_DMAMUX_REQUEST_GEN_FALLING           HAL_DMAMUX_REQ_GEN_FALLING\n#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING    HAL_DMAMUX_REQ_GEN_RISING_FALLING\n\n#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx)\n#define DMA_REQUEST_DCMI_PSSI                    DMA_REQUEST_DCMI\n#endif\n\n#endif /* STM32L4 */\n\n#if defined(STM32G0)\n#define DMA_REQUEST_DAC1_CHANNEL1                DMA_REQUEST_DAC1_CH1\n#define DMA_REQUEST_DAC1_CHANNEL2                DMA_REQUEST_DAC1_CH2\n#define DMA_REQUEST_TIM16_TRIG_COM               DMA_REQUEST_TIM16_COM\n#define DMA_REQUEST_TIM17_TRIG_COM               DMA_REQUEST_TIM17_COM\n\n#define LL_DMAMUX_REQ_TIM16_TRIG_COM             LL_DMAMUX_REQ_TIM16_COM\n#define LL_DMAMUX_REQ_TIM17_TRIG_COM             LL_DMAMUX_REQ_TIM17_COM\n#endif\n\n#if defined(STM32H7)\n\n#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1\n#define DMA_REQUEST_DAC2 DMA_REQUEST_DAC1_CH2\n\n#define BDMA_REQUEST_LP_UART1_RX BDMA_REQUEST_LPUART1_RX\n#define BDMA_REQUEST_LP_UART1_TX BDMA_REQUEST_LPUART1_TX\n\n#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT    HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT\n#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT    HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT\n#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT    HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT\n#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT         HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT\n#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT         HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT\n#define HAL_DMAMUX1_REQUEST_GEN_LPTIM3_OUT         HAL_DMAMUX1_REQ_GEN_LPTIM3_OUT\n#define HAL_DMAMUX1_REQUEST_GEN_EXTI0              HAL_DMAMUX1_REQ_GEN_EXTI0\n#define HAL_DMAMUX1_REQUEST_GEN_TIM12_TRGO         HAL_DMAMUX1_REQ_GEN_TIM12_TRGO\n\n#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH0_EVT    HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH0_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH1_EVT    HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH1_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH2_EVT    HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH2_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH3_EVT    HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH3_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH4_EVT    HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH4_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH5_EVT    HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH5_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH6_EVT    HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH6_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_WKUP    HAL_DMAMUX2_REQ_GEN_LPUART1_RX_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_WKUP    HAL_DMAMUX2_REQ_GEN_LPUART1_TX_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_WKUP        HAL_DMAMUX2_REQ_GEN_LPTIM2_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_OUT         HAL_DMAMUX2_REQ_GEN_LPTIM2_OUT\n#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_WKUP        HAL_DMAMUX2_REQ_GEN_LPTIM3_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_OUT         HAL_DMAMUX2_REQ_GEN_LPTIM3_OUT\n#define HAL_DMAMUX2_REQUEST_GEN_LPTIM4_WKUP        HAL_DMAMUX2_REQ_GEN_LPTIM4_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_LPTIM5_WKUP        HAL_DMAMUX2_REQ_GEN_LPTIM5_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_I2C4_WKUP          HAL_DMAMUX2_REQ_GEN_I2C4_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_SPI6_WKUP          HAL_DMAMUX2_REQ_GEN_SPI6_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_COMP1_OUT          HAL_DMAMUX2_REQ_GEN_COMP1_OUT\n#define HAL_DMAMUX2_REQUEST_GEN_COMP2_OUT          HAL_DMAMUX2_REQ_GEN_COMP2_OUT\n#define HAL_DMAMUX2_REQUEST_GEN_RTC_WKUP           HAL_DMAMUX2_REQ_GEN_RTC_WKUP\n#define HAL_DMAMUX2_REQUEST_GEN_EXTI0              HAL_DMAMUX2_REQ_GEN_EXTI0\n#define HAL_DMAMUX2_REQUEST_GEN_EXTI2              HAL_DMAMUX2_REQ_GEN_EXTI2\n#define HAL_DMAMUX2_REQUEST_GEN_I2C4_IT_EVT        HAL_DMAMUX2_REQ_GEN_I2C4_IT_EVT\n#define HAL_DMAMUX2_REQUEST_GEN_SPI6_IT            HAL_DMAMUX2_REQ_GEN_SPI6_IT\n#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_IT      HAL_DMAMUX2_REQ_GEN_LPUART1_TX_IT\n#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_IT      HAL_DMAMUX2_REQ_GEN_LPUART1_RX_IT\n#define HAL_DMAMUX2_REQUEST_GEN_ADC3_IT            HAL_DMAMUX2_REQ_GEN_ADC3_IT\n#define HAL_DMAMUX2_REQUEST_GEN_ADC3_AWD1_OUT      HAL_DMAMUX2_REQ_GEN_ADC3_AWD1_OUT\n#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH0_IT        HAL_DMAMUX2_REQ_GEN_BDMA_CH0_IT\n#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH1_IT        HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT\n\n#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT            HAL_DMAMUX_REQ_GEN_NO_EVENT\n#define HAL_DMAMUX_REQUEST_GEN_RISING              HAL_DMAMUX_REQ_GEN_RISING\n#define HAL_DMAMUX_REQUEST_GEN_FALLING             HAL_DMAMUX_REQ_GEN_FALLING\n#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING      HAL_DMAMUX_REQ_GEN_RISING_FALLING\n\n#define DFSDM_FILTER_EXT_TRIG_LPTIM1               DFSDM_FILTER_EXT_TRIG_LPTIM1_OUT\n#define DFSDM_FILTER_EXT_TRIG_LPTIM2               DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT\n#define DFSDM_FILTER_EXT_TRIG_LPTIM3               DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT\n\n#define DAC_TRIGGER_LP1_OUT                        DAC_TRIGGER_LPTIM1_OUT\n#define DAC_TRIGGER_LP2_OUT                        DAC_TRIGGER_LPTIM2_OUT\n\n#endif /* STM32H7 */\n\n#if defined(STM32U5)\n#define GPDMA1_REQUEST_DCMI                        GPDMA1_REQUEST_DCMI_PSSI\n#endif /* STM32U5 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_FLASH_Aliased_Defines HAL FLASH Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define TYPEPROGRAM_BYTE              FLASH_TYPEPROGRAM_BYTE\n#define TYPEPROGRAM_HALFWORD          FLASH_TYPEPROGRAM_HALFWORD\n#define TYPEPROGRAM_WORD              FLASH_TYPEPROGRAM_WORD\n#define TYPEPROGRAM_DOUBLEWORD        FLASH_TYPEPROGRAM_DOUBLEWORD\n#define TYPEERASE_SECTORS             FLASH_TYPEERASE_SECTORS\n#define TYPEERASE_PAGES               FLASH_TYPEERASE_PAGES\n#define TYPEERASE_PAGEERASE           FLASH_TYPEERASE_PAGES\n#define TYPEERASE_MASSERASE           FLASH_TYPEERASE_MASSERASE\n#define WRPSTATE_DISABLE              OB_WRPSTATE_DISABLE\n#define WRPSTATE_ENABLE               OB_WRPSTATE_ENABLE\n#define HAL_FLASH_TIMEOUT_VALUE       FLASH_TIMEOUT_VALUE\n#define OBEX_PCROP                    OPTIONBYTE_PCROP\n#define OBEX_BOOTCONFIG               OPTIONBYTE_BOOTCONFIG\n#define PCROPSTATE_DISABLE            OB_PCROP_STATE_DISABLE\n#define PCROPSTATE_ENABLE             OB_PCROP_STATE_ENABLE\n#define TYPEERASEDATA_BYTE            FLASH_TYPEERASEDATA_BYTE\n#define TYPEERASEDATA_HALFWORD        FLASH_TYPEERASEDATA_HALFWORD\n#define TYPEERASEDATA_WORD            FLASH_TYPEERASEDATA_WORD\n#define TYPEPROGRAMDATA_BYTE          FLASH_TYPEPROGRAMDATA_BYTE\n#define TYPEPROGRAMDATA_HALFWORD      FLASH_TYPEPROGRAMDATA_HALFWORD\n#define TYPEPROGRAMDATA_WORD          FLASH_TYPEPROGRAMDATA_WORD\n#define TYPEPROGRAMDATA_FASTBYTE      FLASH_TYPEPROGRAMDATA_FASTBYTE\n#define TYPEPROGRAMDATA_FASTHALFWORD  FLASH_TYPEPROGRAMDATA_FASTHALFWORD\n#define TYPEPROGRAMDATA_FASTWORD      FLASH_TYPEPROGRAMDATA_FASTWORD\n#define PAGESIZE                      FLASH_PAGE_SIZE\n#define TYPEPROGRAM_FASTBYTE          FLASH_TYPEPROGRAM_BYTE\n#define TYPEPROGRAM_FASTHALFWORD      FLASH_TYPEPROGRAM_HALFWORD\n#define TYPEPROGRAM_FASTWORD          FLASH_TYPEPROGRAM_WORD\n#define VOLTAGE_RANGE_1               FLASH_VOLTAGE_RANGE_1\n#define VOLTAGE_RANGE_2               FLASH_VOLTAGE_RANGE_2\n#define VOLTAGE_RANGE_3               FLASH_VOLTAGE_RANGE_3\n#define VOLTAGE_RANGE_4               FLASH_VOLTAGE_RANGE_4\n#define TYPEPROGRAM_FAST              FLASH_TYPEPROGRAM_FAST\n#define TYPEPROGRAM_FAST_AND_LAST     FLASH_TYPEPROGRAM_FAST_AND_LAST\n#define WRPAREA_BANK1_AREAA           OB_WRPAREA_BANK1_AREAA\n#define WRPAREA_BANK1_AREAB           OB_WRPAREA_BANK1_AREAB\n#define WRPAREA_BANK2_AREAA           OB_WRPAREA_BANK2_AREAA\n#define WRPAREA_BANK2_AREAB           OB_WRPAREA_BANK2_AREAB\n#define IWDG_STDBY_FREEZE             OB_IWDG_STDBY_FREEZE\n#define IWDG_STDBY_ACTIVE             OB_IWDG_STDBY_RUN\n#define IWDG_STOP_FREEZE              OB_IWDG_STOP_FREEZE\n#define IWDG_STOP_ACTIVE              OB_IWDG_STOP_RUN\n#define FLASH_ERROR_NONE              HAL_FLASH_ERROR_NONE\n#define FLASH_ERROR_RD                HAL_FLASH_ERROR_RD\n#define FLASH_ERROR_PG                HAL_FLASH_ERROR_PROG\n#define FLASH_ERROR_PGP               HAL_FLASH_ERROR_PGS\n#define FLASH_ERROR_WRP               HAL_FLASH_ERROR_WRP\n#define FLASH_ERROR_OPTV              HAL_FLASH_ERROR_OPTV\n#define FLASH_ERROR_OPTVUSR           HAL_FLASH_ERROR_OPTVUSR\n#define FLASH_ERROR_PROG              HAL_FLASH_ERROR_PROG\n#define FLASH_ERROR_OP                HAL_FLASH_ERROR_OPERATION\n#define FLASH_ERROR_PGA               HAL_FLASH_ERROR_PGA\n#define FLASH_ERROR_SIZE              HAL_FLASH_ERROR_SIZE\n#define FLASH_ERROR_SIZ               HAL_FLASH_ERROR_SIZE\n#define FLASH_ERROR_PGS               HAL_FLASH_ERROR_PGS\n#define FLASH_ERROR_MIS               HAL_FLASH_ERROR_MIS\n#define FLASH_ERROR_FAST              HAL_FLASH_ERROR_FAST\n#define FLASH_ERROR_FWWERR            HAL_FLASH_ERROR_FWWERR\n#define FLASH_ERROR_NOTZERO           HAL_FLASH_ERROR_NOTZERO\n#define FLASH_ERROR_OPERATION         HAL_FLASH_ERROR_OPERATION\n#define FLASH_ERROR_ERS               HAL_FLASH_ERROR_ERS\n#define OB_WDG_SW                     OB_IWDG_SW\n#define OB_WDG_HW                     OB_IWDG_HW\n#define OB_SDADC12_VDD_MONITOR_SET    OB_SDACD_VDD_MONITOR_SET\n#define OB_SDADC12_VDD_MONITOR_RESET  OB_SDACD_VDD_MONITOR_RESET\n#define OB_RAM_PARITY_CHECK_SET       OB_SRAM_PARITY_SET\n#define OB_RAM_PARITY_CHECK_RESET     OB_SRAM_PARITY_RESET\n#define IS_OB_SDADC12_VDD_MONITOR     IS_OB_SDACD_VDD_MONITOR\n#define OB_RDP_LEVEL0                 OB_RDP_LEVEL_0\n#define OB_RDP_LEVEL1                 OB_RDP_LEVEL_1\n#define OB_RDP_LEVEL2                 OB_RDP_LEVEL_2\n#if defined(STM32G0) || defined(STM32C0)\n#define OB_BOOT_LOCK_DISABLE          OB_BOOT_ENTRY_FORCED_NONE\n#define OB_BOOT_LOCK_ENABLE           OB_BOOT_ENTRY_FORCED_FLASH\n#else\n#define OB_BOOT_ENTRY_FORCED_NONE     OB_BOOT_LOCK_DISABLE\n#define OB_BOOT_ENTRY_FORCED_FLASH    OB_BOOT_LOCK_ENABLE\n#endif\n#if defined(STM32H7)\n#define FLASH_FLAG_SNECCE_BANK1RR     FLASH_FLAG_SNECCERR_BANK1\n#define FLASH_FLAG_DBECCE_BANK1RR     FLASH_FLAG_DBECCERR_BANK1\n#define FLASH_FLAG_STRBER_BANK1R      FLASH_FLAG_STRBERR_BANK1\n#define FLASH_FLAG_SNECCE_BANK2RR     FLASH_FLAG_SNECCERR_BANK2\n#define FLASH_FLAG_DBECCE_BANK2RR     FLASH_FLAG_DBECCERR_BANK2\n#define FLASH_FLAG_STRBER_BANK2R      FLASH_FLAG_STRBERR_BANK2\n#define FLASH_FLAG_WDW                FLASH_FLAG_WBNE\n#define OB_WRP_SECTOR_All             OB_WRP_SECTOR_ALL\n#endif /* STM32H7 */\n#if defined(STM32U5)\n#define OB_USER_nRST_STOP             OB_USER_NRST_STOP\n#define OB_USER_nRST_STDBY            OB_USER_NRST_STDBY\n#define OB_USER_nRST_SHDW             OB_USER_NRST_SHDW\n#define OB_USER_nSWBOOT0              OB_USER_NSWBOOT0\n#define OB_USER_nBOOT0                OB_USER_NBOOT0\n#define OB_nBOOT0_RESET               OB_NBOOT0_RESET\n#define OB_nBOOT0_SET                 OB_NBOOT0_SET\n#endif /* STM32U5 */\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_JPEG_Aliased_Macros HAL JPEG Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#if defined(STM32H7)\n#define __HAL_RCC_JPEG_CLK_ENABLE               __HAL_RCC_JPGDECEN_CLK_ENABLE\n#define __HAL_RCC_JPEG_CLK_DISABLE              __HAL_RCC_JPGDECEN_CLK_DISABLE\n#define __HAL_RCC_JPEG_FORCE_RESET              __HAL_RCC_JPGDECRST_FORCE_RESET\n#define __HAL_RCC_JPEG_RELEASE_RESET            __HAL_RCC_JPGDECRST_RELEASE_RESET\n#define __HAL_RCC_JPEG_CLK_SLEEP_ENABLE         __HAL_RCC_JPGDEC_CLK_SLEEP_ENABLE\n#define __HAL_RCC_JPEG_CLK_SLEEP_DISABLE        __HAL_RCC_JPGDEC_CLK_SLEEP_DISABLE\n#endif /* STM32H7 */\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SYSCFG_Aliased_Defines HAL SYSCFG Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA9    I2C_FASTMODEPLUS_PA9\n#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA10   I2C_FASTMODEPLUS_PA10\n#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB6    I2C_FASTMODEPLUS_PB6\n#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB7    I2C_FASTMODEPLUS_PB7\n#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB8    I2C_FASTMODEPLUS_PB8\n#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB9    I2C_FASTMODEPLUS_PB9\n#define HAL_SYSCFG_FASTMODEPLUS_I2C1       I2C_FASTMODEPLUS_I2C1\n#define HAL_SYSCFG_FASTMODEPLUS_I2C2       I2C_FASTMODEPLUS_I2C2\n#define HAL_SYSCFG_FASTMODEPLUS_I2C3       I2C_FASTMODEPLUS_I2C3\n#if defined(STM32G4)\n\n#define HAL_SYSCFG_EnableIOAnalogSwitchBooster    HAL_SYSCFG_EnableIOSwitchBooster\n#define HAL_SYSCFG_DisableIOAnalogSwitchBooster   HAL_SYSCFG_DisableIOSwitchBooster\n#define HAL_SYSCFG_EnableIOAnalogSwitchVDD        HAL_SYSCFG_EnableIOSwitchVDD\n#define HAL_SYSCFG_DisableIOAnalogSwitchVDD       HAL_SYSCFG_DisableIOSwitchVDD\n#endif /* STM32G4 */\n\n#if defined(STM32H5)\n#define SYSCFG_IT_FPU_IOC         SBS_IT_FPU_IOC\n#define SYSCFG_IT_FPU_DZC         SBS_IT_FPU_DZC\n#define SYSCFG_IT_FPU_UFC         SBS_IT_FPU_UFC\n#define SYSCFG_IT_FPU_OFC         SBS_IT_FPU_OFC\n#define SYSCFG_IT_FPU_IDC         SBS_IT_FPU_IDC\n#define SYSCFG_IT_FPU_IXC         SBS_IT_FPU_IXC\n\n#define SYSCFG_BREAK_FLASH_ECC    SBS_BREAK_FLASH_ECC\n#define SYSCFG_BREAK_PVD          SBS_BREAK_PVD\n#define SYSCFG_BREAK_SRAM_ECC     SBS_BREAK_SRAM_ECC\n#define SYSCFG_BREAK_LOCKUP       SBS_BREAK_LOCKUP\n\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE0   VREFBUF_VOLTAGE_SCALE0\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE1   VREFBUF_VOLTAGE_SCALE1\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE2   VREFBUF_VOLTAGE_SCALE2\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE3   VREFBUF_VOLTAGE_SCALE3\n\n#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE   VREFBUF_HIGH_IMPEDANCE_DISABLE\n#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE    VREFBUF_HIGH_IMPEDANCE_ENABLE\n\n#define SYSCFG_FASTMODEPLUS_PB6   SBS_FASTMODEPLUS_PB6\n#define SYSCFG_FASTMODEPLUS_PB7   SBS_FASTMODEPLUS_PB7\n#define SYSCFG_FASTMODEPLUS_PB8   SBS_FASTMODEPLUS_PB8\n#define SYSCFG_FASTMODEPLUS_PB9   SBS_FASTMODEPLUS_PB9\n\n#define SYSCFG_ETH_MII   SBS_ETH_MII\n#define SYSCFG_ETH_RMII  SBS_ETH_RMII\n#define IS_SYSCFG_ETHERNET_CONFIG  IS_SBS_ETHERNET_CONFIG\n\n#define SYSCFG_MEMORIES_ERASE_FLAG_IPMEE   SBS_MEMORIES_ERASE_FLAG_IPMEE\n#define SYSCFG_MEMORIES_ERASE_FLAG_MCLR    SBS_MEMORIES_ERASE_FLAG_MCLR\n#define IS_SYSCFG_MEMORIES_ERASE_FLAG      IS_SBS_MEMORIES_ERASE_FLAG\n\n#define IS_SYSCFG_CODE_CONFIG IS_SBS_CODE_CONFIG\n\n#define SYSCFG_MPU_NSEC   SBS_MPU_NSEC\n#define SYSCFG_VTOR_NSEC  SBS_VTOR_NSEC\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n#define SYSCFG_SAU              SBS_SAU\n#define SYSCFG_MPU_SEC          SBS_MPU_SEC\n#define SYSCFG_VTOR_AIRCR_SEC   SBS_VTOR_AIRCR_SEC\n#define SYSCFG_LOCK_ALL         SBS_LOCK_ALL\n#else\n#define SYSCFG_LOCK_ALL         SBS_LOCK_ALL\n#endif /* __ARM_FEATURE_CMSE */\n\n#define SYSCFG_CLK      SBS_CLK\n#define SYSCFG_CLASSB   SBS_CLASSB\n#define SYSCFG_FPU      SBS_FPU\n#define SYSCFG_ALL      SBS_ALL\n\n#define SYSCFG_SEC      SBS_SEC\n#define SYSCFG_NSEC     SBS_NSEC\n\n#define __HAL_SYSCFG_FPU_INTERRUPT_ENABLE   __HAL_SBS_FPU_INTERRUPT_ENABLE\n#define __HAL_SYSCFG_FPU_INTERRUPT_DISABLE  __HAL_SBS_FPU_INTERRUPT_DISABLE\n\n#define __HAL_SYSCFG_BREAK_ECC_LOCK        __HAL_SBS_BREAK_ECC_LOCK\n#define __HAL_SYSCFG_BREAK_LOCKUP_LOCK     __HAL_SBS_BREAK_LOCKUP_LOCK\n#define __HAL_SYSCFG_BREAK_PVD_LOCK        __HAL_SBS_BREAK_PVD_LOCK\n#define __HAL_SYSCFG_BREAK_SRAM_ECC_LOCK   __HAL_SBS_BREAK_SRAM_ECC_LOCK\n\n#define __HAL_SYSCFG_FASTMODEPLUS_ENABLE   __HAL_SBS_FASTMODEPLUS_ENABLE\n#define __HAL_SYSCFG_FASTMODEPLUS_DISABLE  __HAL_SBS_FASTMODEPLUS_DISABLE\n\n#define __HAL_SYSCFG_GET_MEMORIES_ERASE_STATUS    __HAL_SBS_GET_MEMORIES_ERASE_STATUS\n#define __HAL_SYSCFG_CLEAR_MEMORIES_ERASE_STATUS  __HAL_SBS_CLEAR_MEMORIES_ERASE_STATUS\n\n#define IS_SYSCFG_FPU_INTERRUPT    IS_SBS_FPU_INTERRUPT\n#define IS_SYSCFG_BREAK_CONFIG     IS_SBS_BREAK_CONFIG\n#define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE     IS_VREFBUF_VOLTAGE_SCALE\n#define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE    IS_VREFBUF_HIGH_IMPEDANCE\n#define IS_SYSCFG_VREFBUF_TRIMMING  IS_VREFBUF_TRIMMING\n#define IS_SYSCFG_FASTMODEPLUS      IS_SBS_FASTMODEPLUS\n#define IS_SYSCFG_ITEMS_ATTRIBUTES  IS_SBS_ITEMS_ATTRIBUTES\n#define IS_SYSCFG_ATTRIBUTES        IS_SBS_ATTRIBUTES\n#define IS_SYSCFG_LOCK_ITEMS        IS_SBS_LOCK_ITEMS\n\n#define HAL_SYSCFG_VREFBUF_VoltageScalingConfig   HAL_VREFBUF_VoltageScalingConfig\n#define HAL_SYSCFG_VREFBUF_HighImpedanceConfig    HAL_VREFBUF_HighImpedanceConfig\n#define HAL_SYSCFG_VREFBUF_TrimmingConfig         HAL_VREFBUF_TrimmingConfig\n#define HAL_SYSCFG_EnableVREFBUF                  HAL_EnableVREFBUF\n#define HAL_SYSCFG_DisableVREFBUF                 HAL_DisableVREFBUF\n\n#define HAL_SYSCFG_EnableIOAnalogSwitchBooster    HAL_SBS_EnableIOAnalogSwitchBooster\n#define HAL_SYSCFG_DisableIOAnalogSwitchBooster   HAL_SBS_DisableIOAnalogSwitchBooster\n#define HAL_SYSCFG_ETHInterfaceSelect             HAL_SBS_ETHInterfaceSelect\n\n#define HAL_SYSCFG_Lock     HAL_SBS_Lock\n#define HAL_SYSCFG_GetLock  HAL_SBS_GetLock\n\n#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\n#define HAL_SYSCFG_ConfigAttributes     HAL_SBS_ConfigAttributes\n#define HAL_SYSCFG_GetConfigAttributes  HAL_SBS_GetConfigAttributes\n#endif /* __ARM_FEATURE_CMSE */\n\n#endif /* STM32H5 */\n\n\n/**\n  * @}\n  */\n\n\n/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose\n  * @{\n  */\n#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)\n#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE       FMC_NAND_WAIT_FEATURE_DISABLE\n#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE        FMC_NAND_WAIT_FEATURE_ENABLE\n#define FMC_NAND_PCC_MEM_BUS_WIDTH_8            FMC_NAND_MEM_BUS_WIDTH_8\n#define FMC_NAND_PCC_MEM_BUS_WIDTH_16           FMC_NAND_MEM_BUS_WIDTH_16\n#elif defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4)\n#define FMC_NAND_WAIT_FEATURE_DISABLE           FMC_NAND_PCC_WAIT_FEATURE_DISABLE\n#define FMC_NAND_WAIT_FEATURE_ENABLE            FMC_NAND_PCC_WAIT_FEATURE_ENABLE\n#define FMC_NAND_MEM_BUS_WIDTH_8                FMC_NAND_PCC_MEM_BUS_WIDTH_8\n#define FMC_NAND_MEM_BUS_WIDTH_16               FMC_NAND_PCC_MEM_BUS_WIDTH_16\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup LL_FSMC_Aliased_Defines LL FSMC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define FSMC_NORSRAM_TYPEDEF                      FSMC_NORSRAM_TypeDef\n#define FSMC_NORSRAM_EXTENDED_TYPEDEF             FSMC_NORSRAM_EXTENDED_TypeDef\n/**\n  * @}\n  */\n\n/** @defgroup HAL_GPIO_Aliased_Macros HAL GPIO Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define GET_GPIO_SOURCE                           GPIO_GET_INDEX\n#define GET_GPIO_INDEX                            GPIO_GET_INDEX\n\n#if defined(STM32F4)\n#define GPIO_AF12_SDMMC                           GPIO_AF12_SDIO\n#define GPIO_AF12_SDMMC1                          GPIO_AF12_SDIO\n#endif\n\n#if defined(STM32F7)\n#define GPIO_AF12_SDIO                            GPIO_AF12_SDMMC1\n#define GPIO_AF12_SDMMC                           GPIO_AF12_SDMMC1\n#endif\n\n#if defined(STM32L4)\n#define GPIO_AF12_SDIO                            GPIO_AF12_SDMMC1\n#define GPIO_AF12_SDMMC                           GPIO_AF12_SDMMC1\n#endif\n\n#if defined(STM32H7)\n#define GPIO_AF7_SDIO1                            GPIO_AF7_SDMMC1\n#define GPIO_AF8_SDIO1                            GPIO_AF8_SDMMC1\n#define GPIO_AF12_SDIO1                           GPIO_AF12_SDMMC1\n#define GPIO_AF9_SDIO2                            GPIO_AF9_SDMMC2\n#define GPIO_AF10_SDIO2                           GPIO_AF10_SDMMC2\n#define GPIO_AF11_SDIO2                           GPIO_AF11_SDMMC2\n\n#if defined (STM32H743xx) || defined (STM32H753xx)  || defined (STM32H750xx) || defined (STM32H742xx) || \\\n    defined (STM32H745xx) || defined (STM32H755xx)  || defined (STM32H747xx) || defined (STM32H757xx)\n#define GPIO_AF10_OTG2_HS  GPIO_AF10_OTG2_FS\n#define GPIO_AF10_OTG1_FS  GPIO_AF10_OTG1_HS\n#define GPIO_AF12_OTG2_FS  GPIO_AF12_OTG1_FS\n#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || STM32H757xx */\n#endif /* STM32H7 */\n\n#define GPIO_AF0_LPTIM                            GPIO_AF0_LPTIM1\n#define GPIO_AF1_LPTIM                            GPIO_AF1_LPTIM1\n#define GPIO_AF2_LPTIM                            GPIO_AF2_LPTIM1\n\n#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7) || defined(STM32WB) || defined(STM32U5)\n#define  GPIO_SPEED_LOW                           GPIO_SPEED_FREQ_LOW\n#define  GPIO_SPEED_MEDIUM                        GPIO_SPEED_FREQ_MEDIUM\n#define  GPIO_SPEED_FAST                          GPIO_SPEED_FREQ_HIGH\n#define  GPIO_SPEED_HIGH                          GPIO_SPEED_FREQ_VERY_HIGH\n#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7 || STM32WB || STM32U5*/\n\n#if defined(STM32L1)\n#define  GPIO_SPEED_VERY_LOW    GPIO_SPEED_FREQ_LOW\n#define  GPIO_SPEED_LOW         GPIO_SPEED_FREQ_MEDIUM\n#define  GPIO_SPEED_MEDIUM      GPIO_SPEED_FREQ_HIGH\n#define  GPIO_SPEED_HIGH        GPIO_SPEED_FREQ_VERY_HIGH\n#endif /* STM32L1 */\n\n#if defined(STM32F0) || defined(STM32F3) || defined(STM32F1)\n#define  GPIO_SPEED_LOW    GPIO_SPEED_FREQ_LOW\n#define  GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM\n#define  GPIO_SPEED_HIGH   GPIO_SPEED_FREQ_HIGH\n#endif /* STM32F0 || STM32F3 || STM32F1 */\n\n#define GPIO_AF6_DFSDM                            GPIO_AF6_DFSDM1\n\n#if defined(STM32U5)\n#define GPIO_AF0_RTC_50Hz                         GPIO_AF0_RTC_50HZ\n#endif /* STM32U5 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_GTZC_Aliased_Defines HAL GTZC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#if defined(STM32U5)\n#define GTZC_PERIPH_DCMI                      GTZC_PERIPH_DCMI_PSSI\n#endif /* STM32U5 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_HRTIM_Aliased_Macros HAL HRTIM Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define HRTIM_TIMDELAYEDPROTECTION_DISABLED           HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED\n#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6\n#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6\n#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6\n#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68     HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6\n#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7\n#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7\n#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7\n#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79     HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7\n\n#define __HAL_HRTIM_SetCounter        __HAL_HRTIM_SETCOUNTER\n#define __HAL_HRTIM_GetCounter        __HAL_HRTIM_GETCOUNTER\n#define __HAL_HRTIM_SetPeriod         __HAL_HRTIM_SETPERIOD\n#define __HAL_HRTIM_GetPeriod         __HAL_HRTIM_GETPERIOD\n#define __HAL_HRTIM_SetClockPrescaler __HAL_HRTIM_SETCLOCKPRESCALER\n#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER\n#define __HAL_HRTIM_SetCompare        __HAL_HRTIM_SETCOMPARE\n#define __HAL_HRTIM_GetCompare        __HAL_HRTIM_GETCOMPARE\n\n#if defined(STM32G4)\n#define HAL_HRTIM_ExternalEventCounterConfig    HAL_HRTIM_ExtEventCounterConfig\n#define HAL_HRTIM_ExternalEventCounterEnable    HAL_HRTIM_ExtEventCounterEnable\n#define HAL_HRTIM_ExternalEventCounterDisable   HAL_HRTIM_ExtEventCounterDisable\n#define HAL_HRTIM_ExternalEventCounterReset     HAL_HRTIM_ExtEventCounterReset\n#define HRTIM_TIMEEVENT_A                       HRTIM_EVENTCOUNTER_A\n#define HRTIM_TIMEEVENT_B                       HRTIM_EVENTCOUNTER_B\n#define HRTIM_TIMEEVENTRESETMODE_UNCONDITIONAL  HRTIM_EVENTCOUNTER_RSTMODE_UNCONDITIONAL\n#define HRTIM_TIMEEVENTRESETMODE_CONDITIONAL    HRTIM_EVENTCOUNTER_RSTMODE_CONDITIONAL\n#endif /* STM32G4 */\n\n#if defined(STM32H7)\n#define HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTSET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTSET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTSET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTSET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTSET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTSET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTSET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTSET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTSET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTSET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTSET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTSET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTSET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTSET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTSET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTSET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTSET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTSET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTSET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTSET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTSET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTSET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTSET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTSET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTSET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTSET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTSET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTSET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTSET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTSET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTSET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTSET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTSET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTSET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTSET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTSET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTSET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTSET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTSET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTSET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTSET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTSET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTSET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTSET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTSET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTSET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTSET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTSET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTSET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTSET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9\n\n#define HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTRESET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTRESET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTRESET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTRESET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTRESET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTRESET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTRESET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTRESET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTRESET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTRESET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTRESET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTRESET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTRESET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTRESET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTRESET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTRESET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTRESET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTRESET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTRESET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTRESET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTRESET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTRESET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTRESET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTRESET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTRESET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTRESET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTRESET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTRESET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTRESET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTRESET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTRESET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTRESET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTRESET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTRESET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTRESET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTRESET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTRESET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTRESET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTRESET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTRESET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9\n#define HRTIM_OUTPUTRESET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1\n#define HRTIM_OUTPUTRESET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2\n#define HRTIM_OUTPUTRESET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3\n#define HRTIM_OUTPUTRESET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4\n#define HRTIM_OUTPUTRESET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5\n#define HRTIM_OUTPUTRESET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6\n#define HRTIM_OUTPUTRESET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7\n#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8\n#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9\n#endif /* STM32H7 */\n\n#if defined(STM32F3)\n/** @brief Constants defining available sources associated to external events.\n  */\n#define HRTIM_EVENTSRC_1              (0x00000000U)\n#define HRTIM_EVENTSRC_2              (HRTIM_EECR1_EE1SRC_0)\n#define HRTIM_EVENTSRC_3              (HRTIM_EECR1_EE1SRC_1)\n#define HRTIM_EVENTSRC_4              (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0)\n\n/** @brief Constants defining the DLL calibration periods (in micro seconds)\n  */\n#define HRTIM_CALIBRATIONRATE_7300             0x00000000U\n#define HRTIM_CALIBRATIONRATE_910              (HRTIM_DLLCR_CALRTE_0)\n#define HRTIM_CALIBRATIONRATE_114              (HRTIM_DLLCR_CALRTE_1)\n#define HRTIM_CALIBRATIONRATE_14               (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0)\n\n#endif /* STM32F3 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_I2C_Aliased_Defines HAL I2C Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define I2C_DUALADDRESS_DISABLED                I2C_DUALADDRESS_DISABLE\n#define I2C_DUALADDRESS_ENABLED                 I2C_DUALADDRESS_ENABLE\n#define I2C_GENERALCALL_DISABLED                I2C_GENERALCALL_DISABLE\n#define I2C_GENERALCALL_ENABLED                 I2C_GENERALCALL_ENABLE\n#define I2C_NOSTRETCH_DISABLED                  I2C_NOSTRETCH_DISABLE\n#define I2C_NOSTRETCH_ENABLED                   I2C_NOSTRETCH_ENABLE\n#define I2C_ANALOGFILTER_ENABLED                I2C_ANALOGFILTER_ENABLE\n#define I2C_ANALOGFILTER_DISABLED               I2C_ANALOGFILTER_DISABLE\n#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || defined(STM32L1) || defined(STM32F7)\n#define HAL_I2C_STATE_MEM_BUSY_TX               HAL_I2C_STATE_BUSY_TX\n#define HAL_I2C_STATE_MEM_BUSY_RX               HAL_I2C_STATE_BUSY_RX\n#define HAL_I2C_STATE_MASTER_BUSY_TX            HAL_I2C_STATE_BUSY_TX\n#define HAL_I2C_STATE_MASTER_BUSY_RX            HAL_I2C_STATE_BUSY_RX\n#define HAL_I2C_STATE_SLAVE_BUSY_TX             HAL_I2C_STATE_BUSY_TX\n#define HAL_I2C_STATE_SLAVE_BUSY_RX             HAL_I2C_STATE_BUSY_RX\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_IRDA_Aliased_Defines HAL IRDA Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define IRDA_ONE_BIT_SAMPLE_DISABLED            IRDA_ONE_BIT_SAMPLE_DISABLE\n#define IRDA_ONE_BIT_SAMPLE_ENABLED             IRDA_ONE_BIT_SAMPLE_ENABLE\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_IWDG_Aliased_Defines HAL IWDG Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define KR_KEY_RELOAD                   IWDG_KEY_RELOAD\n#define KR_KEY_ENABLE                   IWDG_KEY_ENABLE\n#define KR_KEY_EWA                      IWDG_KEY_WRITE_ACCESS_ENABLE\n#define KR_KEY_DWA                      IWDG_KEY_WRITE_ACCESS_DISABLE\n/**\n  * @}\n  */\n\n/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSISTION LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION\n#define LPTIM_CLOCKSAMPLETIME_2TRANSISTIONS     LPTIM_CLOCKSAMPLETIME_2TRANSITIONS\n#define LPTIM_CLOCKSAMPLETIME_4TRANSISTIONS     LPTIM_CLOCKSAMPLETIME_4TRANSITIONS\n#define LPTIM_CLOCKSAMPLETIME_8TRANSISTIONS     LPTIM_CLOCKSAMPLETIME_8TRANSITIONS\n\n#define LPTIM_CLOCKPOLARITY_RISINGEDGE          LPTIM_CLOCKPOLARITY_RISING\n#define LPTIM_CLOCKPOLARITY_FALLINGEDGE         LPTIM_CLOCKPOLARITY_FALLING\n#define LPTIM_CLOCKPOLARITY_BOTHEDGES           LPTIM_CLOCKPOLARITY_RISING_FALLING\n\n#define LPTIM_TRIGSAMPLETIME_DIRECTTRANSISTION  LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION\n#define LPTIM_TRIGSAMPLETIME_2TRANSISTIONS      LPTIM_TRIGSAMPLETIME_2TRANSITIONS\n#define LPTIM_TRIGSAMPLETIME_4TRANSISTIONS      LPTIM_TRIGSAMPLETIME_4TRANSITIONS\n#define LPTIM_TRIGSAMPLETIME_8TRANSISTIONS      LPTIM_TRIGSAMPLETIME_8TRANSITIONS\n\n/* The following 3 definition have also been present in a temporary version of lptim.h */\n/* They need to be renamed also to the right name, just in case */\n#define LPTIM_TRIGSAMPLETIME_2TRANSITION        LPTIM_TRIGSAMPLETIME_2TRANSITIONS\n#define LPTIM_TRIGSAMPLETIME_4TRANSITION        LPTIM_TRIGSAMPLETIME_4TRANSITIONS\n#define LPTIM_TRIGSAMPLETIME_8TRANSITION        LPTIM_TRIGSAMPLETIME_8TRANSITIONS\n\n\n/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define HAL_LPTIM_ReadCompare      HAL_LPTIM_ReadCapturedValue\n/**\n  * @}\n  */\n\n#if defined(STM32U5)\n#define LPTIM_ISR_CC1        LPTIM_ISR_CC1IF\n#define LPTIM_ISR_CC2        LPTIM_ISR_CC2IF\n#define LPTIM_CHANNEL_ALL    0x00000000U\n#endif /* STM32U5 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_NAND_Aliased_Defines HAL NAND Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define HAL_NAND_Read_Page              HAL_NAND_Read_Page_8b\n#define HAL_NAND_Write_Page             HAL_NAND_Write_Page_8b\n#define HAL_NAND_Read_SpareArea         HAL_NAND_Read_SpareArea_8b\n#define HAL_NAND_Write_SpareArea        HAL_NAND_Write_SpareArea_8b\n\n#define NAND_AddressTypedef             NAND_AddressTypeDef\n\n#define __ARRAY_ADDRESS                 ARRAY_ADDRESS\n#define __ADDR_1st_CYCLE                ADDR_1ST_CYCLE\n#define __ADDR_2nd_CYCLE                ADDR_2ND_CYCLE\n#define __ADDR_3rd_CYCLE                ADDR_3RD_CYCLE\n#define __ADDR_4th_CYCLE                ADDR_4TH_CYCLE\n/**\n  * @}\n  */\n\n/** @defgroup HAL_NOR_Aliased_Defines HAL NOR Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define NOR_StatusTypedef              HAL_NOR_StatusTypeDef\n#define NOR_SUCCESS                    HAL_NOR_STATUS_SUCCESS\n#define NOR_ONGOING                    HAL_NOR_STATUS_ONGOING\n#define NOR_ERROR                      HAL_NOR_STATUS_ERROR\n#define NOR_TIMEOUT                    HAL_NOR_STATUS_TIMEOUT\n\n#define __NOR_WRITE                    NOR_WRITE\n#define __NOR_ADDR_SHIFT               NOR_ADDR_SHIFT\n/**\n  * @}\n  */\n\n/** @defgroup HAL_OPAMP_Aliased_Defines HAL OPAMP Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define OPAMP_NONINVERTINGINPUT_VP0           OPAMP_NONINVERTINGINPUT_IO0\n#define OPAMP_NONINVERTINGINPUT_VP1           OPAMP_NONINVERTINGINPUT_IO1\n#define OPAMP_NONINVERTINGINPUT_VP2           OPAMP_NONINVERTINGINPUT_IO2\n#define OPAMP_NONINVERTINGINPUT_VP3           OPAMP_NONINVERTINGINPUT_IO3\n\n#define OPAMP_SEC_NONINVERTINGINPUT_VP0       OPAMP_SEC_NONINVERTINGINPUT_IO0\n#define OPAMP_SEC_NONINVERTINGINPUT_VP1       OPAMP_SEC_NONINVERTINGINPUT_IO1\n#define OPAMP_SEC_NONINVERTINGINPUT_VP2       OPAMP_SEC_NONINVERTINGINPUT_IO2\n#define OPAMP_SEC_NONINVERTINGINPUT_VP3       OPAMP_SEC_NONINVERTINGINPUT_IO3\n\n#define OPAMP_INVERTINGINPUT_VM0              OPAMP_INVERTINGINPUT_IO0\n#define OPAMP_INVERTINGINPUT_VM1              OPAMP_INVERTINGINPUT_IO1\n\n#define IOPAMP_INVERTINGINPUT_VM0             OPAMP_INVERTINGINPUT_IO0\n#define IOPAMP_INVERTINGINPUT_VM1             OPAMP_INVERTINGINPUT_IO1\n\n#define OPAMP_SEC_INVERTINGINPUT_VM0          OPAMP_SEC_INVERTINGINPUT_IO0\n#define OPAMP_SEC_INVERTINGINPUT_VM1          OPAMP_SEC_INVERTINGINPUT_IO1\n\n#define OPAMP_INVERTINGINPUT_VINM             OPAMP_SEC_INVERTINGINPUT_IO1\n\n#define OPAMP_PGACONNECT_NO                   OPAMP_PGA_CONNECT_INVERTINGINPUT_NO\n#define OPAMP_PGACONNECT_VM0                  OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0\n#define OPAMP_PGACONNECT_VM1                  OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1\n\n#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7) || defined(STM32G4)\n#define HAL_OPAMP_MSP_INIT_CB_ID       HAL_OPAMP_MSPINIT_CB_ID\n#define HAL_OPAMP_MSP_DEINIT_CB_ID     HAL_OPAMP_MSPDEINIT_CB_ID\n#endif\n\n#if defined(STM32L4) || defined(STM32L5)\n#define OPAMP_POWERMODE_NORMAL                OPAMP_POWERMODE_NORMALPOWER\n#elif defined(STM32G4)\n#define OPAMP_POWERMODE_NORMAL                OPAMP_POWERMODE_NORMALSPEED\n#endif\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_I2S_Aliased_Defines HAL I2S Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define I2S_STANDARD_PHILLIPS      I2S_STANDARD_PHILIPS\n\n#if defined(STM32H7)\n#define I2S_IT_TXE               I2S_IT_TXP\n#define I2S_IT_RXNE              I2S_IT_RXP\n\n#define I2S_FLAG_TXE             I2S_FLAG_TXP\n#define I2S_FLAG_RXNE            I2S_FLAG_RXP\n#endif\n\n#if defined(STM32F7)\n#define I2S_CLOCK_SYSCLK           I2S_CLOCK_PLL\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_PCCARD_Aliased_Defines HAL PCCARD Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n/* Compact Flash-ATA registers description */\n#define CF_DATA                       ATA_DATA\n#define CF_SECTOR_COUNT               ATA_SECTOR_COUNT\n#define CF_SECTOR_NUMBER              ATA_SECTOR_NUMBER\n#define CF_CYLINDER_LOW               ATA_CYLINDER_LOW\n#define CF_CYLINDER_HIGH              ATA_CYLINDER_HIGH\n#define CF_CARD_HEAD                  ATA_CARD_HEAD\n#define CF_STATUS_CMD                 ATA_STATUS_CMD\n#define CF_STATUS_CMD_ALTERNATE       ATA_STATUS_CMD_ALTERNATE\n#define CF_COMMON_DATA_AREA           ATA_COMMON_DATA_AREA\n\n/* Compact Flash-ATA commands */\n#define CF_READ_SECTOR_CMD            ATA_READ_SECTOR_CMD\n#define CF_WRITE_SECTOR_CMD           ATA_WRITE_SECTOR_CMD\n#define CF_ERASE_SECTOR_CMD           ATA_ERASE_SECTOR_CMD\n#define CF_IDENTIFY_CMD               ATA_IDENTIFY_CMD\n\n#define PCCARD_StatusTypedef          HAL_PCCARD_StatusTypeDef\n#define PCCARD_SUCCESS                HAL_PCCARD_STATUS_SUCCESS\n#define PCCARD_ONGOING                HAL_PCCARD_STATUS_ONGOING\n#define PCCARD_ERROR                  HAL_PCCARD_STATUS_ERROR\n#define PCCARD_TIMEOUT                HAL_PCCARD_STATUS_TIMEOUT\n/**\n  * @}\n  */\n\n/** @defgroup HAL_RTC_Aliased_Defines HAL RTC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define FORMAT_BIN                  RTC_FORMAT_BIN\n#define FORMAT_BCD                  RTC_FORMAT_BCD\n\n#define RTC_ALARMSUBSECONDMASK_None     RTC_ALARMSUBSECONDMASK_NONE\n#define RTC_TAMPERERASEBACKUP_DISABLED  RTC_TAMPER_ERASE_BACKUP_DISABLE\n#define RTC_TAMPERMASK_FLAG_DISABLED    RTC_TAMPERMASK_FLAG_DISABLE\n#define RTC_TAMPERMASK_FLAG_ENABLED     RTC_TAMPERMASK_FLAG_ENABLE\n\n#define RTC_MASKTAMPERFLAG_DISABLED     RTC_TAMPERMASK_FLAG_DISABLE\n#define RTC_MASKTAMPERFLAG_ENABLED      RTC_TAMPERMASK_FLAG_ENABLE\n#define RTC_TAMPERERASEBACKUP_ENABLED   RTC_TAMPER_ERASE_BACKUP_ENABLE\n#define RTC_TAMPER1_2_INTERRUPT         RTC_ALL_TAMPER_INTERRUPT\n#define RTC_TAMPER1_2_3_INTERRUPT       RTC_ALL_TAMPER_INTERRUPT\n\n#define RTC_TIMESTAMPPIN_PC13  RTC_TIMESTAMPPIN_DEFAULT\n#define RTC_TIMESTAMPPIN_PA0 RTC_TIMESTAMPPIN_POS1\n#define RTC_TIMESTAMPPIN_PI8 RTC_TIMESTAMPPIN_POS1\n#define RTC_TIMESTAMPPIN_PC1   RTC_TIMESTAMPPIN_POS2\n\n#define RTC_OUTPUT_REMAP_PC13  RTC_OUTPUT_REMAP_NONE\n#define RTC_OUTPUT_REMAP_PB14  RTC_OUTPUT_REMAP_POS1\n#define RTC_OUTPUT_REMAP_PB2   RTC_OUTPUT_REMAP_POS1\n\n#define RTC_TAMPERPIN_PC13 RTC_TAMPERPIN_DEFAULT\n#define RTC_TAMPERPIN_PA0  RTC_TAMPERPIN_POS1\n#define RTC_TAMPERPIN_PI8  RTC_TAMPERPIN_POS1\n\n#if defined(STM32H7)\n#define RTC_TAMPCR_TAMPXE          RTC_TAMPER_X\n#define RTC_TAMPCR_TAMPXIE         RTC_TAMPER_X_INTERRUPT\n\n#define RTC_TAMPER1_INTERRUPT      RTC_IT_TAMP1\n#define RTC_TAMPER2_INTERRUPT      RTC_IT_TAMP2\n#define RTC_TAMPER3_INTERRUPT      RTC_IT_TAMP3\n#define RTC_ALL_TAMPER_INTERRUPT   RTC_IT_TAMPALL\n#endif /* STM32H7 */\n\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_SMARTCARD_Aliased_Defines HAL SMARTCARD Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define SMARTCARD_NACK_ENABLED                  SMARTCARD_NACK_ENABLE\n#define SMARTCARD_NACK_DISABLED                 SMARTCARD_NACK_DISABLE\n\n#define SMARTCARD_ONEBIT_SAMPLING_DISABLED      SMARTCARD_ONE_BIT_SAMPLE_DISABLE\n#define SMARTCARD_ONEBIT_SAMPLING_ENABLED       SMARTCARD_ONE_BIT_SAMPLE_ENABLE\n#define SMARTCARD_ONEBIT_SAMPLING_DISABLE       SMARTCARD_ONE_BIT_SAMPLE_DISABLE\n#define SMARTCARD_ONEBIT_SAMPLING_ENABLE        SMARTCARD_ONE_BIT_SAMPLE_ENABLE\n\n#define SMARTCARD_TIMEOUT_DISABLED              SMARTCARD_TIMEOUT_DISABLE\n#define SMARTCARD_TIMEOUT_ENABLED               SMARTCARD_TIMEOUT_ENABLE\n\n#define SMARTCARD_LASTBIT_DISABLED              SMARTCARD_LASTBIT_DISABLE\n#define SMARTCARD_LASTBIT_ENABLED               SMARTCARD_LASTBIT_ENABLE\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_SMBUS_Aliased_Defines HAL SMBUS Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define SMBUS_DUALADDRESS_DISABLED      SMBUS_DUALADDRESS_DISABLE\n#define SMBUS_DUALADDRESS_ENABLED       SMBUS_DUALADDRESS_ENABLE\n#define SMBUS_GENERALCALL_DISABLED      SMBUS_GENERALCALL_DISABLE\n#define SMBUS_GENERALCALL_ENABLED       SMBUS_GENERALCALL_ENABLE\n#define SMBUS_NOSTRETCH_DISABLED        SMBUS_NOSTRETCH_DISABLE\n#define SMBUS_NOSTRETCH_ENABLED         SMBUS_NOSTRETCH_ENABLE\n#define SMBUS_ANALOGFILTER_ENABLED      SMBUS_ANALOGFILTER_ENABLE\n#define SMBUS_ANALOGFILTER_DISABLED     SMBUS_ANALOGFILTER_DISABLE\n#define SMBUS_PEC_DISABLED              SMBUS_PEC_DISABLE\n#define SMBUS_PEC_ENABLED               SMBUS_PEC_ENABLE\n#define HAL_SMBUS_STATE_SLAVE_LISTEN    HAL_SMBUS_STATE_LISTEN\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SPI_Aliased_Defines HAL SPI Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define SPI_TIMODE_DISABLED             SPI_TIMODE_DISABLE\n#define SPI_TIMODE_ENABLED              SPI_TIMODE_ENABLE\n\n#define SPI_CRCCALCULATION_DISABLED     SPI_CRCCALCULATION_DISABLE\n#define SPI_CRCCALCULATION_ENABLED      SPI_CRCCALCULATION_ENABLE\n\n#define SPI_NSS_PULSE_DISABLED          SPI_NSS_PULSE_DISABLE\n#define SPI_NSS_PULSE_ENABLED           SPI_NSS_PULSE_ENABLE\n\n#if defined(STM32H7)\n\n#define SPI_FLAG_TXE                    SPI_FLAG_TXP\n#define SPI_FLAG_RXNE                   SPI_FLAG_RXP\n\n#define SPI_IT_TXE                      SPI_IT_TXP\n#define SPI_IT_RXNE                     SPI_IT_RXP\n\n#define SPI_FRLVL_EMPTY                 SPI_RX_FIFO_0PACKET\n#define SPI_FRLVL_QUARTER_FULL          SPI_RX_FIFO_1PACKET\n#define SPI_FRLVL_HALF_FULL             SPI_RX_FIFO_2PACKET\n#define SPI_FRLVL_FULL                  SPI_RX_FIFO_3PACKET\n\n#endif /* STM32H7 */\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_TIM_Aliased_Defines HAL TIM Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define CCER_CCxE_MASK                   TIM_CCER_CCxE_MASK\n#define CCER_CCxNE_MASK                  TIM_CCER_CCxNE_MASK\n\n#define TIM_DMABase_CR1                  TIM_DMABASE_CR1\n#define TIM_DMABase_CR2                  TIM_DMABASE_CR2\n#define TIM_DMABase_SMCR                 TIM_DMABASE_SMCR\n#define TIM_DMABase_DIER                 TIM_DMABASE_DIER\n#define TIM_DMABase_SR                   TIM_DMABASE_SR\n#define TIM_DMABase_EGR                  TIM_DMABASE_EGR\n#define TIM_DMABase_CCMR1                TIM_DMABASE_CCMR1\n#define TIM_DMABase_CCMR2                TIM_DMABASE_CCMR2\n#define TIM_DMABase_CCER                 TIM_DMABASE_CCER\n#define TIM_DMABase_CNT                  TIM_DMABASE_CNT\n#define TIM_DMABase_PSC                  TIM_DMABASE_PSC\n#define TIM_DMABase_ARR                  TIM_DMABASE_ARR\n#define TIM_DMABase_RCR                  TIM_DMABASE_RCR\n#define TIM_DMABase_CCR1                 TIM_DMABASE_CCR1\n#define TIM_DMABase_CCR2                 TIM_DMABASE_CCR2\n#define TIM_DMABase_CCR3                 TIM_DMABASE_CCR3\n#define TIM_DMABase_CCR4                 TIM_DMABASE_CCR4\n#define TIM_DMABase_BDTR                 TIM_DMABASE_BDTR\n#define TIM_DMABase_DCR                  TIM_DMABASE_DCR\n#define TIM_DMABase_DMAR                 TIM_DMABASE_DMAR\n#define TIM_DMABase_OR1                  TIM_DMABASE_OR1\n#define TIM_DMABase_CCMR3                TIM_DMABASE_CCMR3\n#define TIM_DMABase_CCR5                 TIM_DMABASE_CCR5\n#define TIM_DMABase_CCR6                 TIM_DMABASE_CCR6\n#define TIM_DMABase_OR2                  TIM_DMABASE_OR2\n#define TIM_DMABase_OR3                  TIM_DMABASE_OR3\n#define TIM_DMABase_OR                   TIM_DMABASE_OR\n\n#define TIM_EventSource_Update           TIM_EVENTSOURCE_UPDATE\n#define TIM_EventSource_CC1              TIM_EVENTSOURCE_CC1\n#define TIM_EventSource_CC2              TIM_EVENTSOURCE_CC2\n#define TIM_EventSource_CC3              TIM_EVENTSOURCE_CC3\n#define TIM_EventSource_CC4              TIM_EVENTSOURCE_CC4\n#define TIM_EventSource_COM              TIM_EVENTSOURCE_COM\n#define TIM_EventSource_Trigger          TIM_EVENTSOURCE_TRIGGER\n#define TIM_EventSource_Break            TIM_EVENTSOURCE_BREAK\n#define TIM_EventSource_Break2           TIM_EVENTSOURCE_BREAK2\n\n#define TIM_DMABurstLength_1Transfer     TIM_DMABURSTLENGTH_1TRANSFER\n#define TIM_DMABurstLength_2Transfers    TIM_DMABURSTLENGTH_2TRANSFERS\n#define TIM_DMABurstLength_3Transfers    TIM_DMABURSTLENGTH_3TRANSFERS\n#define TIM_DMABurstLength_4Transfers    TIM_DMABURSTLENGTH_4TRANSFERS\n#define TIM_DMABurstLength_5Transfers    TIM_DMABURSTLENGTH_5TRANSFERS\n#define TIM_DMABurstLength_6Transfers    TIM_DMABURSTLENGTH_6TRANSFERS\n#define TIM_DMABurstLength_7Transfers    TIM_DMABURSTLENGTH_7TRANSFERS\n#define TIM_DMABurstLength_8Transfers    TIM_DMABURSTLENGTH_8TRANSFERS\n#define TIM_DMABurstLength_9Transfers    TIM_DMABURSTLENGTH_9TRANSFERS\n#define TIM_DMABurstLength_10Transfers   TIM_DMABURSTLENGTH_10TRANSFERS\n#define TIM_DMABurstLength_11Transfers   TIM_DMABURSTLENGTH_11TRANSFERS\n#define TIM_DMABurstLength_12Transfers   TIM_DMABURSTLENGTH_12TRANSFERS\n#define TIM_DMABurstLength_13Transfers   TIM_DMABURSTLENGTH_13TRANSFERS\n#define TIM_DMABurstLength_14Transfers   TIM_DMABURSTLENGTH_14TRANSFERS\n#define TIM_DMABurstLength_15Transfers   TIM_DMABURSTLENGTH_15TRANSFERS\n#define TIM_DMABurstLength_16Transfers   TIM_DMABURSTLENGTH_16TRANSFERS\n#define TIM_DMABurstLength_17Transfers   TIM_DMABURSTLENGTH_17TRANSFERS\n#define TIM_DMABurstLength_18Transfers   TIM_DMABURSTLENGTH_18TRANSFERS\n\n#if defined(STM32L0)\n#define TIM22_TI1_GPIO1   TIM22_TI1_GPIO\n#define TIM22_TI1_GPIO2   TIM22_TI1_GPIO\n#endif\n\n#if defined(STM32F3)\n#define IS_TIM_HALL_INTERFACE_INSTANCE   IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE\n#endif\n\n#if defined(STM32H7)\n#define TIM_TIM1_ETR_COMP1_OUT        TIM_TIM1_ETR_COMP1\n#define TIM_TIM1_ETR_COMP2_OUT        TIM_TIM1_ETR_COMP2\n#define TIM_TIM8_ETR_COMP1_OUT        TIM_TIM8_ETR_COMP1\n#define TIM_TIM8_ETR_COMP2_OUT        TIM_TIM8_ETR_COMP2\n#define TIM_TIM2_ETR_COMP1_OUT        TIM_TIM2_ETR_COMP1\n#define TIM_TIM2_ETR_COMP2_OUT        TIM_TIM2_ETR_COMP2\n#define TIM_TIM3_ETR_COMP1_OUT        TIM_TIM3_ETR_COMP1\n#define TIM_TIM1_TI1_COMP1_OUT        TIM_TIM1_TI1_COMP1\n#define TIM_TIM8_TI1_COMP2_OUT        TIM_TIM8_TI1_COMP2\n#define TIM_TIM2_TI4_COMP1_OUT        TIM_TIM2_TI4_COMP1\n#define TIM_TIM2_TI4_COMP2_OUT        TIM_TIM2_TI4_COMP2\n#define TIM_TIM2_TI4_COMP1COMP2_OUT   TIM_TIM2_TI4_COMP1_COMP2\n#define TIM_TIM3_TI1_COMP1_OUT        TIM_TIM3_TI1_COMP1\n#define TIM_TIM3_TI1_COMP2_OUT        TIM_TIM3_TI1_COMP2\n#define TIM_TIM3_TI1_COMP1COMP2_OUT   TIM_TIM3_TI1_COMP1_COMP2\n#endif\n\n#if defined(STM32U5) || defined(STM32MP2)\n#define OCREF_CLEAR_SELECT_Pos       OCREF_CLEAR_SELECT_POS\n#define OCREF_CLEAR_SELECT_Msk       OCREF_CLEAR_SELECT_MSK\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_TSC_Aliased_Defines HAL TSC Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define TSC_SYNC_POL_FALL        TSC_SYNC_POLARITY_FALLING\n#define TSC_SYNC_POL_RISE_HIGH   TSC_SYNC_POLARITY_RISING\n/**\n  * @}\n  */\n\n/** @defgroup HAL_UART_Aliased_Defines HAL UART Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define UART_ONEBIT_SAMPLING_DISABLED   UART_ONE_BIT_SAMPLE_DISABLE\n#define UART_ONEBIT_SAMPLING_ENABLED    UART_ONE_BIT_SAMPLE_ENABLE\n#define UART_ONE_BIT_SAMPLE_DISABLED    UART_ONE_BIT_SAMPLE_DISABLE\n#define UART_ONE_BIT_SAMPLE_ENABLED     UART_ONE_BIT_SAMPLE_ENABLE\n\n#define __HAL_UART_ONEBIT_ENABLE        __HAL_UART_ONE_BIT_SAMPLE_ENABLE\n#define __HAL_UART_ONEBIT_DISABLE       __HAL_UART_ONE_BIT_SAMPLE_DISABLE\n\n#define __DIV_SAMPLING16                UART_DIV_SAMPLING16\n#define __DIVMANT_SAMPLING16            UART_DIVMANT_SAMPLING16\n#define __DIVFRAQ_SAMPLING16            UART_DIVFRAQ_SAMPLING16\n#define __UART_BRR_SAMPLING16           UART_BRR_SAMPLING16\n\n#define __DIV_SAMPLING8                 UART_DIV_SAMPLING8\n#define __DIVMANT_SAMPLING8             UART_DIVMANT_SAMPLING8\n#define __DIVFRAQ_SAMPLING8             UART_DIVFRAQ_SAMPLING8\n#define __UART_BRR_SAMPLING8            UART_BRR_SAMPLING8\n\n#define __DIV_LPUART                    UART_DIV_LPUART\n\n#define UART_WAKEUPMETHODE_IDLELINE     UART_WAKEUPMETHOD_IDLELINE\n#define UART_WAKEUPMETHODE_ADDRESSMARK  UART_WAKEUPMETHOD_ADDRESSMARK\n\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_USART_Aliased_Defines HAL USART Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define USART_CLOCK_DISABLED            USART_CLOCK_DISABLE\n#define USART_CLOCK_ENABLED             USART_CLOCK_ENABLE\n\n#define USARTNACK_ENABLED               USART_NACK_ENABLE\n#define USARTNACK_DISABLED              USART_NACK_DISABLE\n/**\n  * @}\n  */\n\n/** @defgroup HAL_WWDG_Aliased_Defines HAL WWDG Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define CFR_BASE                    WWDG_CFR_BASE\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_CAN_Aliased_Defines HAL CAN Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define CAN_FilterFIFO0             CAN_FILTER_FIFO0\n#define CAN_FilterFIFO1             CAN_FILTER_FIFO1\n#define CAN_IT_RQCP0                CAN_IT_TME\n#define CAN_IT_RQCP1                CAN_IT_TME\n#define CAN_IT_RQCP2                CAN_IT_TME\n#define INAK_TIMEOUT                CAN_TIMEOUT_VALUE\n#define SLAK_TIMEOUT                CAN_TIMEOUT_VALUE\n#define CAN_TXSTATUS_FAILED         ((uint8_t)0x00U)\n#define CAN_TXSTATUS_OK             ((uint8_t)0x01U)\n#define CAN_TXSTATUS_PENDING        ((uint8_t)0x02U)\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_ETH_Aliased_Defines HAL ETH Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n#define VLAN_TAG                ETH_VLAN_TAG\n#define MIN_ETH_PAYLOAD         ETH_MIN_ETH_PAYLOAD\n#define MAX_ETH_PAYLOAD         ETH_MAX_ETH_PAYLOAD\n#define JUMBO_FRAME_PAYLOAD     ETH_JUMBO_FRAME_PAYLOAD\n#define MACMIIAR_CR_MASK        ETH_MACMIIAR_CR_MASK\n#define MACCR_CLEAR_MASK        ETH_MACCR_CLEAR_MASK\n#define MACFCR_CLEAR_MASK       ETH_MACFCR_CLEAR_MASK\n#define DMAOMR_CLEAR_MASK       ETH_DMAOMR_CLEAR_MASK\n\n#define ETH_MMCCR              0x00000100U\n#define ETH_MMCRIR             0x00000104U\n#define ETH_MMCTIR             0x00000108U\n#define ETH_MMCRIMR            0x0000010CU\n#define ETH_MMCTIMR            0x00000110U\n#define ETH_MMCTGFSCCR         0x0000014CU\n#define ETH_MMCTGFMSCCR        0x00000150U\n#define ETH_MMCTGFCR           0x00000168U\n#define ETH_MMCRFCECR          0x00000194U\n#define ETH_MMCRFAECR          0x00000198U\n#define ETH_MMCRGUFCR          0x000001C4U\n\n#define ETH_MAC_TXFIFO_FULL                             0x02000000U  /* Tx FIFO full */\n#define ETH_MAC_TXFIFONOT_EMPTY                         0x01000000U  /* Tx FIFO not empty */\n#define ETH_MAC_TXFIFO_WRITE_ACTIVE                     0x00400000U  /* Tx FIFO write active */\n#define ETH_MAC_TXFIFO_IDLE                             0x00000000U  /* Tx FIFO read status: Idle */\n#define ETH_MAC_TXFIFO_READ                             0x00100000U  /* Tx FIFO read status: Read (transferring data to the MAC transmitter) */\n#define ETH_MAC_TXFIFO_WAITING                          0x00200000U  /* Tx FIFO read status: Waiting for TxStatus from MAC transmitter */\n#define ETH_MAC_TXFIFO_WRITING                          0x00300000U  /* Tx FIFO read status: Writing the received TxStatus or flushing the TxFIFO */\n#define ETH_MAC_TRANSMISSION_PAUSE                      0x00080000U  /* MAC transmitter in pause */\n#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE            0x00000000U  /* MAC transmit frame controller: Idle */\n#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING         0x00020000U  /* MAC transmit frame controller: Waiting for Status of previous frame or IFG/backoff period to be over */\n#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF   0x00040000U  /* MAC transmit frame controller: Generating and transmitting a Pause control frame (in full duplex mode) */\n#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING    0x00060000U  /* MAC transmit frame controller: Transferring input frame for transmission */\n#define ETH_MAC_MII_TRANSMIT_ACTIVE           0x00010000U  /* MAC MII transmit engine active */\n#define ETH_MAC_RXFIFO_EMPTY                  0x00000000U  /* Rx FIFO fill level: empty */\n#define ETH_MAC_RXFIFO_BELOW_THRESHOLD        0x00000100U  /* Rx FIFO fill level: fill-level below flow-control de-activate threshold */\n#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD        0x00000200U  /* Rx FIFO fill level: fill-level above flow-control activate threshold */\n#define ETH_MAC_RXFIFO_FULL                   0x00000300U  /* Rx FIFO fill level: full */\n#if defined(STM32F1)\n#else\n#define ETH_MAC_READCONTROLLER_IDLE           0x00000000U  /* Rx FIFO read controller IDLE state */\n#define ETH_MAC_READCONTROLLER_READING_DATA   0x00000020U  /* Rx FIFO read controller Reading frame data */\n#define ETH_MAC_READCONTROLLER_READING_STATUS 0x00000040U  /* Rx FIFO read controller Reading frame status (or time-stamp) */\n#endif\n#define ETH_MAC_READCONTROLLER_FLUSHING       0x00000060U  /* Rx FIFO read controller Flushing the frame data and status */\n#define ETH_MAC_RXFIFO_WRITE_ACTIVE           0x00000010U  /* Rx FIFO write controller active */\n#define ETH_MAC_SMALL_FIFO_NOTACTIVE          0x00000000U  /* MAC small FIFO read / write controllers not active */\n#define ETH_MAC_SMALL_FIFO_READ_ACTIVE        0x00000002U  /* MAC small FIFO read controller active */\n#define ETH_MAC_SMALL_FIFO_WRITE_ACTIVE       0x00000004U  /* MAC small FIFO write controller active */\n#define ETH_MAC_SMALL_FIFO_RW_ACTIVE          0x00000006U  /* MAC small FIFO read / write controllers active */\n#define ETH_MAC_MII_RECEIVE_PROTOCOL_ACTIVE   0x00000001U  /* MAC MII receive protocol engine active */\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_DCMI_Aliased_Defines HAL DCMI Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define HAL_DCMI_ERROR_OVF      HAL_DCMI_ERROR_OVR\n#define DCMI_IT_OVF             DCMI_IT_OVR\n#define DCMI_FLAG_OVFRI         DCMI_FLAG_OVRRI\n#define DCMI_FLAG_OVFMI         DCMI_FLAG_OVRMI\n\n#define HAL_DCMI_ConfigCROP     HAL_DCMI_ConfigCrop\n#define HAL_DCMI_EnableCROP     HAL_DCMI_EnableCrop\n#define HAL_DCMI_DisableCROP    HAL_DCMI_DisableCrop\n\n/**\n  * @}\n  */\n\n#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \\\n  || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \\\n  || defined(STM32H7)\n/** @defgroup HAL_DMA2D_Aliased_Defines HAL DMA2D Aliased Defines maintained for legacy purpose\n  * @{\n  */\n#define DMA2D_ARGB8888          DMA2D_OUTPUT_ARGB8888\n#define DMA2D_RGB888            DMA2D_OUTPUT_RGB888\n#define DMA2D_RGB565            DMA2D_OUTPUT_RGB565\n#define DMA2D_ARGB1555          DMA2D_OUTPUT_ARGB1555\n#define DMA2D_ARGB4444          DMA2D_OUTPUT_ARGB4444\n\n#define CM_ARGB8888             DMA2D_INPUT_ARGB8888\n#define CM_RGB888               DMA2D_INPUT_RGB888\n#define CM_RGB565               DMA2D_INPUT_RGB565\n#define CM_ARGB1555             DMA2D_INPUT_ARGB1555\n#define CM_ARGB4444             DMA2D_INPUT_ARGB4444\n#define CM_L8                   DMA2D_INPUT_L8\n#define CM_AL44                 DMA2D_INPUT_AL44\n#define CM_AL88                 DMA2D_INPUT_AL88\n#define CM_L4                   DMA2D_INPUT_L4\n#define CM_A8                   DMA2D_INPUT_A8\n#define CM_A4                   DMA2D_INPUT_A4\n/**\n  * @}\n  */\n#endif  /* STM32L4 ||  STM32F7 ||  STM32F4 ||  STM32H7 */\n\n#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \\\n  || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \\\n  || defined(STM32H7) || defined(STM32U5)\n/** @defgroup DMA2D_Aliases DMA2D API Aliases\n  * @{\n  */\n#define HAL_DMA2D_DisableCLUT       HAL_DMA2D_CLUTLoading_Abort    /*!< Aliased to HAL_DMA2D_CLUTLoading_Abort\n                                                                        for compatibility with legacy code */\n/**\n  * @}\n  */\n\n#endif  /* STM32L4 ||  STM32F7 ||  STM32F4 ||  STM32H7 || STM32U5 */\n\n/** @defgroup HAL_PPP_Aliased_Defines HAL PPP Aliased Defines maintained for legacy purpose\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup HAL_CRYP_Aliased_Functions HAL CRYP Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_CRYP_ComputationCpltCallback     HAL_CRYPEx_ComputationCpltCallback\n/**\n  * @}\n  */\n\n/** @defgroup HAL_DCACHE_Aliased_Functions HAL DCACHE Aliased Functions maintained for legacy purpose\n  * @{\n  */\n\n#if defined(STM32U5)\n#define HAL_DCACHE_CleanInvalidateByAddr     HAL_DCACHE_CleanInvalidByAddr\n#define HAL_DCACHE_CleanInvalidateByAddr_IT  HAL_DCACHE_CleanInvalidByAddr_IT\n#endif /* STM32U5 */\n\n/**\n  * @}\n  */\n\n#if !defined(STM32F2)\n/** @defgroup HASH_alias HASH API alias\n  * @{\n  */\n#define HAL_HASHEx_IRQHandler   HAL_HASH_IRQHandler  /*!< Redirection for compatibility with legacy code */\n/**\n  *\n  * @}\n  */\n#endif /* STM32F2 */\n/** @defgroup HAL_HASH_Aliased_Functions HAL HASH Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_HASH_STATETypeDef        HAL_HASH_StateTypeDef\n#define HAL_HASHPhaseTypeDef         HAL_HASH_PhaseTypeDef\n#define HAL_HMAC_MD5_Finish          HAL_HASH_MD5_Finish\n#define HAL_HMAC_SHA1_Finish         HAL_HASH_SHA1_Finish\n#define HAL_HMAC_SHA224_Finish       HAL_HASH_SHA224_Finish\n#define HAL_HMAC_SHA256_Finish       HAL_HASH_SHA256_Finish\n\n/*HASH Algorithm Selection*/\n\n#define HASH_AlgoSelection_SHA1      HASH_ALGOSELECTION_SHA1\n#define HASH_AlgoSelection_SHA224    HASH_ALGOSELECTION_SHA224\n#define HASH_AlgoSelection_SHA256    HASH_ALGOSELECTION_SHA256\n#define HASH_AlgoSelection_MD5       HASH_ALGOSELECTION_MD5\n\n#define HASH_AlgoMode_HASH         HASH_ALGOMODE_HASH\n#define HASH_AlgoMode_HMAC         HASH_ALGOMODE_HMAC\n\n#define HASH_HMACKeyType_ShortKey  HASH_HMAC_KEYTYPE_SHORTKEY\n#define HASH_HMACKeyType_LongKey   HASH_HMAC_KEYTYPE_LONGKEY\n\n#if defined(STM32L4) || defined(STM32L5) || defined(STM32F2) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)\n\n#define HAL_HASH_MD5_Accumulate                HAL_HASH_MD5_Accmlt\n#define HAL_HASH_MD5_Accumulate_End            HAL_HASH_MD5_Accmlt_End\n#define HAL_HASH_MD5_Accumulate_IT             HAL_HASH_MD5_Accmlt_IT\n#define HAL_HASH_MD5_Accumulate_End_IT         HAL_HASH_MD5_Accmlt_End_IT\n\n#define HAL_HASH_SHA1_Accumulate               HAL_HASH_SHA1_Accmlt\n#define HAL_HASH_SHA1_Accumulate_End           HAL_HASH_SHA1_Accmlt_End\n#define HAL_HASH_SHA1_Accumulate_IT            HAL_HASH_SHA1_Accmlt_IT\n#define HAL_HASH_SHA1_Accumulate_End_IT        HAL_HASH_SHA1_Accmlt_End_IT\n\n#define HAL_HASHEx_SHA224_Accumulate           HAL_HASHEx_SHA224_Accmlt\n#define HAL_HASHEx_SHA224_Accumulate_End       HAL_HASHEx_SHA224_Accmlt_End\n#define HAL_HASHEx_SHA224_Accumulate_IT        HAL_HASHEx_SHA224_Accmlt_IT\n#define HAL_HASHEx_SHA224_Accumulate_End_IT    HAL_HASHEx_SHA224_Accmlt_End_IT\n\n#define HAL_HASHEx_SHA256_Accumulate           HAL_HASHEx_SHA256_Accmlt\n#define HAL_HASHEx_SHA256_Accumulate_End       HAL_HASHEx_SHA256_Accmlt_End\n#define HAL_HASHEx_SHA256_Accumulate_IT        HAL_HASHEx_SHA256_Accmlt_IT\n#define HAL_HASHEx_SHA256_Accumulate_End_IT    HAL_HASHEx_SHA256_Accmlt_End_IT\n\n#endif  /* STM32L4 || STM32L5 || STM32F2 || STM32F4 || STM32F7 || STM32H7 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_Aliased_Functions HAL Generic Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_EnableDBGSleepMode HAL_DBGMCU_EnableDBGSleepMode\n#define HAL_DisableDBGSleepMode HAL_DBGMCU_DisableDBGSleepMode\n#define HAL_EnableDBGStopMode HAL_DBGMCU_EnableDBGStopMode\n#define HAL_DisableDBGStopMode HAL_DBGMCU_DisableDBGStopMode\n#define HAL_EnableDBGStandbyMode HAL_DBGMCU_EnableDBGStandbyMode\n#define HAL_DisableDBGStandbyMode HAL_DBGMCU_DisableDBGStandbyMode\n#define HAL_DBG_LowPowerConfig(Periph, cmd) (((cmd\\\n                                              )==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph))\n#define HAL_VREFINT_OutputSelect  HAL_SYSCFG_VREFINT_OutputSelect\n#define HAL_Lock_Cmd(cmd) (((cmd)==ENABLE) ? HAL_SYSCFG_Enable_Lock_VREFINT() : HAL_SYSCFG_Disable_Lock_VREFINT())\n#if defined(STM32L0)\n#else\n#define HAL_VREFINT_Cmd(cmd) (((cmd)==ENABLE)? HAL_SYSCFG_EnableVREFINT() : HAL_SYSCFG_DisableVREFINT())\n#endif\n#define HAL_ADC_EnableBuffer_Cmd(cmd)  (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())\n#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd\\\n                                              )==ENABLE) ?  HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())\n#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ)\n#define HAL_EnableSRDomainDBGStopMode      HAL_EnableDomain3DBGStopMode\n#define HAL_DisableSRDomainDBGStopMode     HAL_DisableDomain3DBGStopMode\n#define HAL_EnableSRDomainDBGStandbyMode   HAL_EnableDomain3DBGStandbyMode\n#define HAL_DisableSRDomainDBGStandbyMode  HAL_DisableDomain3DBGStandbyMode\n#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ  || STM32H7B0xxQ */\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_FLASH_Aliased_Functions HAL FLASH Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define FLASH_HalfPageProgram      HAL_FLASHEx_HalfPageProgram\n#define FLASH_EnableRunPowerDown   HAL_FLASHEx_EnableRunPowerDown\n#define FLASH_DisableRunPowerDown  HAL_FLASHEx_DisableRunPowerDown\n#define HAL_DATA_EEPROMEx_Unlock   HAL_FLASHEx_DATAEEPROM_Unlock\n#define HAL_DATA_EEPROMEx_Lock     HAL_FLASHEx_DATAEEPROM_Lock\n#define HAL_DATA_EEPROMEx_Erase    HAL_FLASHEx_DATAEEPROM_Erase\n#define HAL_DATA_EEPROMEx_Program  HAL_FLASHEx_DATAEEPROM_Program\n\n/**\n  * @}\n */\n\n/** @defgroup HAL_I2C_Aliased_Functions HAL I2C Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_I2CEx_AnalogFilter_Config         HAL_I2CEx_ConfigAnalogFilter\n#define HAL_I2CEx_DigitalFilter_Config        HAL_I2CEx_ConfigDigitalFilter\n#define HAL_FMPI2CEx_AnalogFilter_Config      HAL_FMPI2CEx_ConfigAnalogFilter\n#define HAL_FMPI2CEx_DigitalFilter_Config     HAL_FMPI2CEx_ConfigDigitalFilter\n\n#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd\\\n                                                                 )==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))\n\n#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4) || defined(STM32L1)\n#define HAL_I2C_Master_Sequential_Transmit_IT  HAL_I2C_Master_Seq_Transmit_IT\n#define HAL_I2C_Master_Sequential_Receive_IT   HAL_I2C_Master_Seq_Receive_IT\n#define HAL_I2C_Slave_Sequential_Transmit_IT   HAL_I2C_Slave_Seq_Transmit_IT\n#define HAL_I2C_Slave_Sequential_Receive_IT    HAL_I2C_Slave_Seq_Receive_IT\n#endif /* STM32H7 || STM32WB  || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 || STM32L1 */\n#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)|| defined(STM32L1)\n#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA\n#define HAL_I2C_Master_Sequential_Receive_DMA  HAL_I2C_Master_Seq_Receive_DMA\n#define HAL_I2C_Slave_Sequential_Transmit_DMA  HAL_I2C_Slave_Seq_Transmit_DMA\n#define HAL_I2C_Slave_Sequential_Receive_DMA   HAL_I2C_Slave_Seq_Receive_DMA\n#endif /* STM32H7 || STM32WB  || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 || STM32L1 */\n\n#if defined(STM32F4)\n#define HAL_FMPI2C_Master_Sequential_Transmit_IT  HAL_FMPI2C_Master_Seq_Transmit_IT\n#define HAL_FMPI2C_Master_Sequential_Receive_IT   HAL_FMPI2C_Master_Seq_Receive_IT\n#define HAL_FMPI2C_Slave_Sequential_Transmit_IT   HAL_FMPI2C_Slave_Seq_Transmit_IT\n#define HAL_FMPI2C_Slave_Sequential_Receive_IT    HAL_FMPI2C_Slave_Seq_Receive_IT\n#define HAL_FMPI2C_Master_Sequential_Transmit_DMA HAL_FMPI2C_Master_Seq_Transmit_DMA\n#define HAL_FMPI2C_Master_Sequential_Receive_DMA  HAL_FMPI2C_Master_Seq_Receive_DMA\n#define HAL_FMPI2C_Slave_Sequential_Transmit_DMA  HAL_FMPI2C_Slave_Seq_Transmit_DMA\n#define HAL_FMPI2C_Slave_Sequential_Receive_DMA   HAL_FMPI2C_Slave_Seq_Receive_DMA\n#endif /* STM32F4 */\n/**\n  * @}\n */\n\n/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose\n  * @{\n  */\n\n#if defined(STM32G0)\n#define HAL_PWR_ConfigPVD                             HAL_PWREx_ConfigPVD\n#define HAL_PWR_EnablePVD                             HAL_PWREx_EnablePVD\n#define HAL_PWR_DisablePVD                            HAL_PWREx_DisablePVD\n#define HAL_PWR_PVD_IRQHandler                        HAL_PWREx_PVD_IRQHandler\n#endif\n#define HAL_PWR_PVDConfig                             HAL_PWR_ConfigPVD\n#define HAL_PWR_DisableBkUpReg                        HAL_PWREx_DisableBkUpReg\n#define HAL_PWR_DisableFlashPowerDown                 HAL_PWREx_DisableFlashPowerDown\n#define HAL_PWR_DisableVddio2Monitor                  HAL_PWREx_DisableVddio2Monitor\n#define HAL_PWR_EnableBkUpReg                         HAL_PWREx_EnableBkUpReg\n#define HAL_PWR_EnableFlashPowerDown                  HAL_PWREx_EnableFlashPowerDown\n#define HAL_PWR_EnableVddio2Monitor                   HAL_PWREx_EnableVddio2Monitor\n#define HAL_PWR_PVD_PVM_IRQHandler                    HAL_PWREx_PVD_PVM_IRQHandler\n#define HAL_PWR_PVDLevelConfig                        HAL_PWR_ConfigPVD\n#define HAL_PWR_Vddio2Monitor_IRQHandler              HAL_PWREx_Vddio2Monitor_IRQHandler\n#define HAL_PWR_Vddio2MonitorCallback                 HAL_PWREx_Vddio2MonitorCallback\n#define HAL_PWREx_ActivateOverDrive                   HAL_PWREx_EnableOverDrive\n#define HAL_PWREx_DeactivateOverDrive                 HAL_PWREx_DisableOverDrive\n#define HAL_PWREx_DisableSDADCAnalog                  HAL_PWREx_DisableSDADC\n#define HAL_PWREx_EnableSDADCAnalog                   HAL_PWREx_EnableSDADC\n#define HAL_PWREx_PVMConfig                           HAL_PWREx_ConfigPVM\n\n#define PWR_MODE_NORMAL                               PWR_PVD_MODE_NORMAL\n#define PWR_MODE_IT_RISING                            PWR_PVD_MODE_IT_RISING\n#define PWR_MODE_IT_FALLING                           PWR_PVD_MODE_IT_FALLING\n#define PWR_MODE_IT_RISING_FALLING                    PWR_PVD_MODE_IT_RISING_FALLING\n#define PWR_MODE_EVENT_RISING                         PWR_PVD_MODE_EVENT_RISING\n#define PWR_MODE_EVENT_FALLING                        PWR_PVD_MODE_EVENT_FALLING\n#define PWR_MODE_EVENT_RISING_FALLING                 PWR_PVD_MODE_EVENT_RISING_FALLING\n\n#define CR_OFFSET_BB                                  PWR_CR_OFFSET_BB\n#define CSR_OFFSET_BB                                 PWR_CSR_OFFSET_BB\n#define PMODE_BIT_NUMBER                              VOS_BIT_NUMBER\n#define CR_PMODE_BB                                   CR_VOS_BB\n\n#define DBP_BitNumber                                 DBP_BIT_NUMBER\n#define PVDE_BitNumber                                PVDE_BIT_NUMBER\n#define PMODE_BitNumber                               PMODE_BIT_NUMBER\n#define EWUP_BitNumber                                EWUP_BIT_NUMBER\n#define FPDS_BitNumber                                FPDS_BIT_NUMBER\n#define ODEN_BitNumber                                ODEN_BIT_NUMBER\n#define ODSWEN_BitNumber                              ODSWEN_BIT_NUMBER\n#define MRLVDS_BitNumber                              MRLVDS_BIT_NUMBER\n#define LPLVDS_BitNumber                              LPLVDS_BIT_NUMBER\n#define BRE_BitNumber                                 BRE_BIT_NUMBER\n\n#define PWR_MODE_EVT                                  PWR_PVD_MODE_NORMAL\n\n#if defined (STM32U5)\n#define PWR_SRAM1_PAGE1_STOP_RETENTION                PWR_SRAM1_PAGE1_STOP\n#define PWR_SRAM1_PAGE2_STOP_RETENTION                PWR_SRAM1_PAGE2_STOP\n#define PWR_SRAM1_PAGE3_STOP_RETENTION                PWR_SRAM1_PAGE3_STOP\n#define PWR_SRAM1_PAGE4_STOP_RETENTION                PWR_SRAM1_PAGE4_STOP\n#define PWR_SRAM1_PAGE5_STOP_RETENTION                PWR_SRAM1_PAGE5_STOP\n#define PWR_SRAM1_PAGE6_STOP_RETENTION                PWR_SRAM1_PAGE6_STOP\n#define PWR_SRAM1_PAGE7_STOP_RETENTION                PWR_SRAM1_PAGE7_STOP\n#define PWR_SRAM1_PAGE8_STOP_RETENTION                PWR_SRAM1_PAGE8_STOP\n#define PWR_SRAM1_PAGE9_STOP_RETENTION                PWR_SRAM1_PAGE9_STOP\n#define PWR_SRAM1_PAGE10_STOP_RETENTION               PWR_SRAM1_PAGE10_STOP\n#define PWR_SRAM1_PAGE11_STOP_RETENTION               PWR_SRAM1_PAGE11_STOP\n#define PWR_SRAM1_PAGE12_STOP_RETENTION               PWR_SRAM1_PAGE12_STOP\n#define PWR_SRAM1_FULL_STOP_RETENTION                 PWR_SRAM1_FULL_STOP\n\n#define PWR_SRAM2_PAGE1_STOP_RETENTION                PWR_SRAM2_PAGE1_STOP\n#define PWR_SRAM2_PAGE2_STOP_RETENTION                PWR_SRAM2_PAGE2_STOP\n#define PWR_SRAM2_FULL_STOP_RETENTION                 PWR_SRAM2_FULL_STOP\n\n#define PWR_SRAM3_PAGE1_STOP_RETENTION                PWR_SRAM3_PAGE1_STOP\n#define PWR_SRAM3_PAGE2_STOP_RETENTION                PWR_SRAM3_PAGE2_STOP\n#define PWR_SRAM3_PAGE3_STOP_RETENTION                PWR_SRAM3_PAGE3_STOP\n#define PWR_SRAM3_PAGE4_STOP_RETENTION                PWR_SRAM3_PAGE4_STOP\n#define PWR_SRAM3_PAGE5_STOP_RETENTION                PWR_SRAM3_PAGE5_STOP\n#define PWR_SRAM3_PAGE6_STOP_RETENTION                PWR_SRAM3_PAGE6_STOP\n#define PWR_SRAM3_PAGE7_STOP_RETENTION                PWR_SRAM3_PAGE7_STOP\n#define PWR_SRAM3_PAGE8_STOP_RETENTION                PWR_SRAM3_PAGE8_STOP\n#define PWR_SRAM3_PAGE9_STOP_RETENTION                PWR_SRAM3_PAGE9_STOP\n#define PWR_SRAM3_PAGE10_STOP_RETENTION               PWR_SRAM3_PAGE10_STOP\n#define PWR_SRAM3_PAGE11_STOP_RETENTION               PWR_SRAM3_PAGE11_STOP\n#define PWR_SRAM3_PAGE12_STOP_RETENTION               PWR_SRAM3_PAGE12_STOP\n#define PWR_SRAM3_PAGE13_STOP_RETENTION               PWR_SRAM3_PAGE13_STOP\n#define PWR_SRAM3_FULL_STOP_RETENTION                 PWR_SRAM3_FULL_STOP\n\n#define PWR_SRAM4_FULL_STOP_RETENTION                 PWR_SRAM4_FULL_STOP\n\n#define PWR_SRAM5_PAGE1_STOP_RETENTION                PWR_SRAM5_PAGE1_STOP\n#define PWR_SRAM5_PAGE2_STOP_RETENTION                PWR_SRAM5_PAGE2_STOP\n#define PWR_SRAM5_PAGE3_STOP_RETENTION                PWR_SRAM5_PAGE3_STOP\n#define PWR_SRAM5_PAGE4_STOP_RETENTION                PWR_SRAM5_PAGE4_STOP\n#define PWR_SRAM5_PAGE5_STOP_RETENTION                PWR_SRAM5_PAGE5_STOP\n#define PWR_SRAM5_PAGE6_STOP_RETENTION                PWR_SRAM5_PAGE6_STOP\n#define PWR_SRAM5_PAGE7_STOP_RETENTION                PWR_SRAM5_PAGE7_STOP\n#define PWR_SRAM5_PAGE8_STOP_RETENTION                PWR_SRAM5_PAGE8_STOP\n#define PWR_SRAM5_PAGE9_STOP_RETENTION                PWR_SRAM5_PAGE9_STOP\n#define PWR_SRAM5_PAGE10_STOP_RETENTION               PWR_SRAM5_PAGE10_STOP\n#define PWR_SRAM5_PAGE11_STOP_RETENTION               PWR_SRAM5_PAGE11_STOP\n#define PWR_SRAM5_PAGE12_STOP_RETENTION               PWR_SRAM5_PAGE12_STOP\n#define PWR_SRAM5_PAGE13_STOP_RETENTION               PWR_SRAM5_PAGE13_STOP\n#define PWR_SRAM5_FULL_STOP_RETENTION                 PWR_SRAM5_FULL_STOP\n\n#define PWR_ICACHE_FULL_STOP_RETENTION                PWR_ICACHE_FULL_STOP\n#define PWR_DCACHE1_FULL_STOP_RETENTION               PWR_DCACHE1_FULL_STOP\n#define PWR_DCACHE2_FULL_STOP_RETENTION               PWR_DCACHE2_FULL_STOP\n#define PWR_DMA2DRAM_FULL_STOP_RETENTION              PWR_DMA2DRAM_FULL_STOP\n#define PWR_PERIPHRAM_FULL_STOP_RETENTION             PWR_PERIPHRAM_FULL_STOP\n#define PWR_PKA32RAM_FULL_STOP_RETENTION              PWR_PKA32RAM_FULL_STOP\n#define PWR_GRAPHICPRAM_FULL_STOP_RETENTION           PWR_GRAPHICPRAM_FULL_STOP\n#define PWR_DSIRAM_FULL_STOP_RETENTION                PWR_DSIRAM_FULL_STOP\n\n#define PWR_SRAM2_PAGE1_STANDBY_RETENTION             PWR_SRAM2_PAGE1_STANDBY\n#define PWR_SRAM2_PAGE2_STANDBY_RETENTION             PWR_SRAM2_PAGE2_STANDBY\n#define PWR_SRAM2_FULL_STANDBY_RETENTION              PWR_SRAM2_FULL_STANDBY\n\n#define PWR_SRAM1_FULL_RUN_RETENTION                  PWR_SRAM1_FULL_RUN\n#define PWR_SRAM2_FULL_RUN_RETENTION                  PWR_SRAM2_FULL_RUN\n#define PWR_SRAM3_FULL_RUN_RETENTION                  PWR_SRAM3_FULL_RUN\n#define PWR_SRAM4_FULL_RUN_RETENTION                  PWR_SRAM4_FULL_RUN\n#define PWR_SRAM5_FULL_RUN_RETENTION                  PWR_SRAM5_FULL_RUN\n\n#define PWR_ALL_RAM_RUN_RETENTION_MASK                PWR_ALL_RAM_RUN_MASK\n#endif\n\n/**\n  * @}\n */\n\n/** @defgroup HAL_SMBUS_Aliased_Functions HAL SMBUS Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_SMBUS_Slave_Listen_IT          HAL_SMBUS_EnableListen_IT\n#define HAL_SMBUS_SlaveAddrCallback        HAL_SMBUS_AddrCallback\n#define HAL_SMBUS_SlaveListenCpltCallback  HAL_SMBUS_ListenCpltCallback\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SPI_Aliased_Functions HAL SPI Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_SPI_FlushRxFifo                HAL_SPIEx_FlushRxFifo\n/**\n  * @}\n  */\n\n/** @defgroup HAL_TIM_Aliased_Functions HAL TIM Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_TIM_DMADelayPulseCplt                       TIM_DMADelayPulseCplt\n#define HAL_TIM_DMAError                                TIM_DMAError\n#define HAL_TIM_DMACaptureCplt                          TIM_DMACaptureCplt\n#define HAL_TIMEx_DMACommutationCplt                    TIMEx_DMACommutationCplt\n#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4)\n#define HAL_TIM_SlaveConfigSynchronization              HAL_TIM_SlaveConfigSynchro\n#define HAL_TIM_SlaveConfigSynchronization_IT           HAL_TIM_SlaveConfigSynchro_IT\n#define HAL_TIMEx_CommutationCallback                   HAL_TIMEx_CommutCallback\n#define HAL_TIMEx_ConfigCommutationEvent                HAL_TIMEx_ConfigCommutEvent\n#define HAL_TIMEx_ConfigCommutationEvent_IT             HAL_TIMEx_ConfigCommutEvent_IT\n#define HAL_TIMEx_ConfigCommutationEvent_DMA            HAL_TIMEx_ConfigCommutEvent_DMA\n#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_UART_Aliased_Functions HAL UART Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_UART_WakeupCallback HAL_UARTEx_WakeupCallback\n/**\n  * @}\n  */\n\n/** @defgroup HAL_LTDC_Aliased_Functions HAL LTDC Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_LTDC_LineEvenCallback HAL_LTDC_LineEventCallback\n#define HAL_LTDC_Relaod           HAL_LTDC_Reload\n#define HAL_LTDC_StructInitFromVideoConfig  HAL_LTDCEx_StructInitFromVideoConfig\n#define HAL_LTDC_StructInitFromAdaptedCommandConfig  HAL_LTDCEx_StructInitFromAdaptedCommandConfig\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_PPP_Aliased_Functions HAL PPP Aliased Functions maintained for legacy purpose\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macros ------------------------------------------------------------*/\n\n/** @defgroup HAL_AES_Aliased_Macros HAL CRYP Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define AES_IT_CC                      CRYP_IT_CC\n#define AES_IT_ERR                     CRYP_IT_ERR\n#define AES_FLAG_CCF                   CRYP_FLAG_CCF\n/**\n  * @}\n  */\n\n/** @defgroup HAL_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_GET_BOOT_MODE                   __HAL_SYSCFG_GET_BOOT_MODE\n#define __HAL_REMAPMEMORY_FLASH               __HAL_SYSCFG_REMAPMEMORY_FLASH\n#define __HAL_REMAPMEMORY_SYSTEMFLASH         __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH\n#define __HAL_REMAPMEMORY_SRAM                __HAL_SYSCFG_REMAPMEMORY_SRAM\n#define __HAL_REMAPMEMORY_FMC                 __HAL_SYSCFG_REMAPMEMORY_FMC\n#define __HAL_REMAPMEMORY_FMC_SDRAM           __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM\n#define __HAL_REMAPMEMORY_FSMC                __HAL_SYSCFG_REMAPMEMORY_FSMC\n#define __HAL_REMAPMEMORY_QUADSPI             __HAL_SYSCFG_REMAPMEMORY_QUADSPI\n#define __HAL_FMC_BANK                        __HAL_SYSCFG_FMC_BANK\n#define __HAL_GET_FLAG                        __HAL_SYSCFG_GET_FLAG\n#define __HAL_CLEAR_FLAG                      __HAL_SYSCFG_CLEAR_FLAG\n#define __HAL_VREFINT_OUT_ENABLE              __HAL_SYSCFG_VREFINT_OUT_ENABLE\n#define __HAL_VREFINT_OUT_DISABLE             __HAL_SYSCFG_VREFINT_OUT_DISABLE\n#define __HAL_SYSCFG_SRAM2_WRP_ENABLE         __HAL_SYSCFG_SRAM2_WRP_0_31_ENABLE\n\n#define SYSCFG_FLAG_VREF_READY                SYSCFG_FLAG_VREFINT_READY\n#define SYSCFG_FLAG_RC48                      RCC_FLAG_HSI48\n#define IS_SYSCFG_FASTMODEPLUS_CONFIG         IS_I2C_FASTMODEPLUS\n#define UFB_MODE_BitNumber                    UFB_MODE_BIT_NUMBER\n#define CMP_PD_BitNumber                      CMP_PD_BIT_NUMBER\n\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_ADC_Aliased_Macros HAL ADC Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __ADC_ENABLE                                     __HAL_ADC_ENABLE\n#define __ADC_DISABLE                                    __HAL_ADC_DISABLE\n#define __HAL_ADC_ENABLING_CONDITIONS                    ADC_ENABLING_CONDITIONS\n#define __HAL_ADC_DISABLING_CONDITIONS                   ADC_DISABLING_CONDITIONS\n#define __HAL_ADC_IS_ENABLED                             ADC_IS_ENABLE\n#define __ADC_IS_ENABLED                                 ADC_IS_ENABLE\n#define __HAL_ADC_IS_SOFTWARE_START_REGULAR              ADC_IS_SOFTWARE_START_REGULAR\n#define __HAL_ADC_IS_SOFTWARE_START_INJECTED             ADC_IS_SOFTWARE_START_INJECTED\n#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED\n#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR          ADC_IS_CONVERSION_ONGOING_REGULAR\n#define __HAL_ADC_IS_CONVERSION_ONGOING_INJECTED         ADC_IS_CONVERSION_ONGOING_INJECTED\n#define __HAL_ADC_IS_CONVERSION_ONGOING                  ADC_IS_CONVERSION_ONGOING\n#define __HAL_ADC_CLEAR_ERRORCODE                        ADC_CLEAR_ERRORCODE\n\n#define __HAL_ADC_GET_RESOLUTION                         ADC_GET_RESOLUTION\n#define __HAL_ADC_JSQR_RK                                ADC_JSQR_RK\n#define __HAL_ADC_CFGR_AWD1CH                            ADC_CFGR_AWD1CH_SHIFT\n#define __HAL_ADC_CFGR_AWD23CR                           ADC_CFGR_AWD23CR\n#define __HAL_ADC_CFGR_INJECT_AUTO_CONVERSION            ADC_CFGR_INJECT_AUTO_CONVERSION\n#define __HAL_ADC_CFGR_INJECT_CONTEXT_QUEUE              ADC_CFGR_INJECT_CONTEXT_QUEUE\n#define __HAL_ADC_CFGR_INJECT_DISCCONTINUOUS             ADC_CFGR_INJECT_DISCCONTINUOUS\n#define __HAL_ADC_CFGR_REG_DISCCONTINUOUS                ADC_CFGR_REG_DISCCONTINUOUS\n#define __HAL_ADC_CFGR_DISCONTINUOUS_NUM                 ADC_CFGR_DISCONTINUOUS_NUM\n#define __HAL_ADC_CFGR_AUTOWAIT                          ADC_CFGR_AUTOWAIT\n#define __HAL_ADC_CFGR_CONTINUOUS                        ADC_CFGR_CONTINUOUS\n#define __HAL_ADC_CFGR_OVERRUN                           ADC_CFGR_OVERRUN\n#define __HAL_ADC_CFGR_DMACONTREQ                        ADC_CFGR_DMACONTREQ\n#define __HAL_ADC_CFGR_EXTSEL                            ADC_CFGR_EXTSEL_SET\n#define __HAL_ADC_JSQR_JEXTSEL                           ADC_JSQR_JEXTSEL_SET\n#define __HAL_ADC_OFR_CHANNEL                            ADC_OFR_CHANNEL\n#define __HAL_ADC_DIFSEL_CHANNEL                         ADC_DIFSEL_CHANNEL\n#define __HAL_ADC_CALFACT_DIFF_SET                       ADC_CALFACT_DIFF_SET\n#define __HAL_ADC_CALFACT_DIFF_GET                       ADC_CALFACT_DIFF_GET\n#define __HAL_ADC_TRX_HIGHTHRESHOLD                      ADC_TRX_HIGHTHRESHOLD\n\n#define __HAL_ADC_OFFSET_SHIFT_RESOLUTION                ADC_OFFSET_SHIFT_RESOLUTION\n#define __HAL_ADC_AWD1THRESHOLD_SHIFT_RESOLUTION         ADC_AWD1THRESHOLD_SHIFT_RESOLUTION\n#define __HAL_ADC_AWD23THRESHOLD_SHIFT_RESOLUTION        ADC_AWD23THRESHOLD_SHIFT_RESOLUTION\n#define __HAL_ADC_COMMON_REGISTER                        ADC_COMMON_REGISTER\n#define __HAL_ADC_COMMON_CCR_MULTI                       ADC_COMMON_CCR_MULTI\n#define __HAL_ADC_MULTIMODE_IS_ENABLED                   ADC_MULTIMODE_IS_ENABLE\n#define __ADC_MULTIMODE_IS_ENABLED                       ADC_MULTIMODE_IS_ENABLE\n#define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER        ADC_NONMULTIMODE_OR_MULTIMODEMASTER\n#define __HAL_ADC_COMMON_ADC_OTHER                       ADC_COMMON_ADC_OTHER\n#define __HAL_ADC_MULTI_SLAVE                            ADC_MULTI_SLAVE\n\n#define __HAL_ADC_SQR1_L                                 ADC_SQR1_L_SHIFT\n#define __HAL_ADC_JSQR_JL                                ADC_JSQR_JL_SHIFT\n#define __HAL_ADC_JSQR_RK_JL                             ADC_JSQR_RK_JL\n#define __HAL_ADC_CR1_DISCONTINUOUS_NUM                  ADC_CR1_DISCONTINUOUS_NUM\n#define __HAL_ADC_CR1_SCAN                               ADC_CR1_SCAN_SET\n#define __HAL_ADC_CONVCYCLES_MAX_RANGE                   ADC_CONVCYCLES_MAX_RANGE\n#define __HAL_ADC_CLOCK_PRESCALER_RANGE                  ADC_CLOCK_PRESCALER_RANGE\n#define __HAL_ADC_GET_CLOCK_PRESCALER                    ADC_GET_CLOCK_PRESCALER\n\n#define __HAL_ADC_SQR1                                   ADC_SQR1\n#define __HAL_ADC_SMPR1                                  ADC_SMPR1\n#define __HAL_ADC_SMPR2                                  ADC_SMPR2\n#define __HAL_ADC_SQR3_RK                                ADC_SQR3_RK\n#define __HAL_ADC_SQR2_RK                                ADC_SQR2_RK\n#define __HAL_ADC_SQR1_RK                                ADC_SQR1_RK\n#define __HAL_ADC_CR2_CONTINUOUS                         ADC_CR2_CONTINUOUS\n#define __HAL_ADC_CR1_DISCONTINUOUS                      ADC_CR1_DISCONTINUOUS\n#define __HAL_ADC_CR1_SCANCONV                           ADC_CR1_SCANCONV\n#define __HAL_ADC_CR2_EOCSelection                       ADC_CR2_EOCSelection\n#define __HAL_ADC_CR2_DMAContReq                         ADC_CR2_DMAContReq\n#define __HAL_ADC_JSQR                                   ADC_JSQR\n\n#define __HAL_ADC_CHSELR_CHANNEL                         ADC_CHSELR_CHANNEL\n#define __HAL_ADC_CFGR1_REG_DISCCONTINUOUS               ADC_CFGR1_REG_DISCCONTINUOUS\n#define __HAL_ADC_CFGR1_AUTOOFF                          ADC_CFGR1_AUTOOFF\n#define __HAL_ADC_CFGR1_AUTOWAIT                         ADC_CFGR1_AUTOWAIT\n#define __HAL_ADC_CFGR1_CONTINUOUS                       ADC_CFGR1_CONTINUOUS\n#define __HAL_ADC_CFGR1_OVERRUN                          ADC_CFGR1_OVERRUN\n#define __HAL_ADC_CFGR1_SCANDIR                          ADC_CFGR1_SCANDIR\n#define __HAL_ADC_CFGR1_DMACONTREQ                       ADC_CFGR1_DMACONTREQ\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_DHR12R1_ALIGNEMENT                        DAC_DHR12R1_ALIGNMENT\n#define __HAL_DHR12R2_ALIGNEMENT                        DAC_DHR12R2_ALIGNMENT\n#define __HAL_DHR12RD_ALIGNEMENT                        DAC_DHR12RD_ALIGNMENT\n#define IS_DAC_GENERATE_WAVE                            IS_DAC_WAVE\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_DBGMCU_Aliased_Macros HAL DBGMCU Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_FREEZE_TIM1_DBGMCU __HAL_DBGMCU_FREEZE_TIM1\n#define __HAL_UNFREEZE_TIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM1\n#define __HAL_FREEZE_TIM2_DBGMCU __HAL_DBGMCU_FREEZE_TIM2\n#define __HAL_UNFREEZE_TIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM2\n#define __HAL_FREEZE_TIM3_DBGMCU __HAL_DBGMCU_FREEZE_TIM3\n#define __HAL_UNFREEZE_TIM3_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM3\n#define __HAL_FREEZE_TIM4_DBGMCU __HAL_DBGMCU_FREEZE_TIM4\n#define __HAL_UNFREEZE_TIM4_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM4\n#define __HAL_FREEZE_TIM5_DBGMCU __HAL_DBGMCU_FREEZE_TIM5\n#define __HAL_UNFREEZE_TIM5_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM5\n#define __HAL_FREEZE_TIM6_DBGMCU __HAL_DBGMCU_FREEZE_TIM6\n#define __HAL_UNFREEZE_TIM6_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM6\n#define __HAL_FREEZE_TIM7_DBGMCU __HAL_DBGMCU_FREEZE_TIM7\n#define __HAL_UNFREEZE_TIM7_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM7\n#define __HAL_FREEZE_TIM8_DBGMCU __HAL_DBGMCU_FREEZE_TIM8\n#define __HAL_UNFREEZE_TIM8_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM8\n\n#define __HAL_FREEZE_TIM9_DBGMCU __HAL_DBGMCU_FREEZE_TIM9\n#define __HAL_UNFREEZE_TIM9_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM9\n#define __HAL_FREEZE_TIM10_DBGMCU __HAL_DBGMCU_FREEZE_TIM10\n#define __HAL_UNFREEZE_TIM10_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM10\n#define __HAL_FREEZE_TIM11_DBGMCU __HAL_DBGMCU_FREEZE_TIM11\n#define __HAL_UNFREEZE_TIM11_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM11\n#define __HAL_FREEZE_TIM12_DBGMCU __HAL_DBGMCU_FREEZE_TIM12\n#define __HAL_UNFREEZE_TIM12_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM12\n#define __HAL_FREEZE_TIM13_DBGMCU __HAL_DBGMCU_FREEZE_TIM13\n#define __HAL_UNFREEZE_TIM13_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM13\n#define __HAL_FREEZE_TIM14_DBGMCU __HAL_DBGMCU_FREEZE_TIM14\n#define __HAL_UNFREEZE_TIM14_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM14\n#define __HAL_FREEZE_CAN2_DBGMCU __HAL_DBGMCU_FREEZE_CAN2\n#define __HAL_UNFREEZE_CAN2_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN2\n\n\n#define __HAL_FREEZE_TIM15_DBGMCU __HAL_DBGMCU_FREEZE_TIM15\n#define __HAL_UNFREEZE_TIM15_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM15\n#define __HAL_FREEZE_TIM16_DBGMCU __HAL_DBGMCU_FREEZE_TIM16\n#define __HAL_UNFREEZE_TIM16_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM16\n#define __HAL_FREEZE_TIM17_DBGMCU __HAL_DBGMCU_FREEZE_TIM17\n#define __HAL_UNFREEZE_TIM17_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM17\n#define __HAL_FREEZE_RTC_DBGMCU __HAL_DBGMCU_FREEZE_RTC\n#define __HAL_UNFREEZE_RTC_DBGMCU __HAL_DBGMCU_UNFREEZE_RTC\n#if defined(STM32H7)\n#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG1\n#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UnFreeze_WWDG1\n#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG1\n#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UnFreeze_IWDG1\n#else\n#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG\n#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_WWDG\n#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG\n#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_IWDG\n#endif /* STM32H7 */\n#define __HAL_FREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT\n#define __HAL_UNFREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT\n#define __HAL_FREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT\n#define __HAL_UNFREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT\n#define __HAL_FREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT\n#define __HAL_UNFREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT\n#define __HAL_FREEZE_CAN1_DBGMCU __HAL_DBGMCU_FREEZE_CAN1\n#define __HAL_UNFREEZE_CAN1_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN1\n#define __HAL_FREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM1\n#define __HAL_UNFREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM1\n#define __HAL_FREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM2\n#define __HAL_UNFREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM2\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_COMP_Aliased_Macros HAL COMP Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#if defined(STM32F3)\n#define COMP_START                                       __HAL_COMP_ENABLE\n#define COMP_STOP                                        __HAL_COMP_DISABLE\n#define COMP_LOCK                                        __HAL_COMP_LOCK\n\n#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)\n#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \\\n                                                          __HAL_COMP_COMP6_EXTI_ENABLE_IT())\n#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \\\n                                                          __HAL_COMP_COMP6_EXTI_DISABLE_IT())\n#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \\\n                                                          __HAL_COMP_COMP6_EXTI_GET_FLAG())\n#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \\\n                                                          __HAL_COMP_COMP6_EXTI_CLEAR_FLAG())\n# endif\n# if defined(STM32F302xE) || defined(STM32F302xC)\n#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \\\n                                                          __HAL_COMP_COMP6_EXTI_ENABLE_IT())\n#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \\\n                                                          __HAL_COMP_COMP6_EXTI_DISABLE_IT())\n#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \\\n                                                          __HAL_COMP_COMP6_EXTI_GET_FLAG())\n#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \\\n                                                          __HAL_COMP_COMP6_EXTI_CLEAR_FLAG())\n# endif\n# if defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F303xC) || defined(STM32F358xx)\n#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP7_EXTI_ENABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP7_EXTI_DISABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP7_EXTI_ENABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP7_EXTI_DISABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_IT() : \\\n                                                          __HAL_COMP_COMP7_EXTI_ENABLE_IT())\n#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_IT() : \\\n                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_IT() : \\\n                                                          __HAL_COMP_COMP7_EXTI_DISABLE_IT())\n#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_GET_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_GET_FLAG() : \\\n                                                          __HAL_COMP_COMP7_EXTI_GET_FLAG())\n#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_CLEAR_FLAG() : \\\n                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_CLEAR_FLAG() : \\\n                                                          __HAL_COMP_COMP7_EXTI_CLEAR_FLAG())\n# endif\n# if defined(STM32F373xC) ||defined(STM32F378xx)\n#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\\n                                                          __HAL_COMP_COMP2_EXTI_ENABLE_IT())\n#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\\n                                                          __HAL_COMP_COMP2_EXTI_DISABLE_IT())\n#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\\n                                                          __HAL_COMP_COMP2_EXTI_GET_FLAG())\n#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\\n                                                          __HAL_COMP_COMP2_EXTI_CLEAR_FLAG())\n# endif\n#else\n#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\\n                                                          __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE())\n#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\\n                                                          __HAL_COMP_COMP2_EXTI_ENABLE_IT())\n#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\\n                                                          __HAL_COMP_COMP2_EXTI_DISABLE_IT())\n#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\\n                                                          __HAL_COMP_COMP2_EXTI_GET_FLAG())\n#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\\n                                                          __HAL_COMP_COMP2_EXTI_CLEAR_FLAG())\n#endif\n\n#define __HAL_COMP_GET_EXTI_LINE  COMP_GET_EXTI_LINE\n\n#if defined(STM32L0) || defined(STM32L4)\n/* Note: On these STM32 families, the only argument of this macro             */\n/*       is COMP_FLAG_LOCK.                                                   */\n/*       This macro is replaced by __HAL_COMP_IS_LOCKED with only HAL handle  */\n/*       argument.                                                            */\n#define __HAL_COMP_GET_FLAG(__HANDLE__, __FLAG__)  (__HAL_COMP_IS_LOCKED(__HANDLE__))\n#endif\n/**\n  * @}\n  */\n\n#if defined(STM32L0) || defined(STM32L4)\n/** @defgroup HAL_COMP_Aliased_Functions HAL COMP Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#define HAL_COMP_Start_IT       HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */\n#define HAL_COMP_Stop_IT        HAL_COMP_Stop  /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */\n/**\n  * @}\n  */\n#endif\n\n/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_WAVE_NONE) || \\\n                           ((WAVE) == DAC_WAVE_NOISE)|| \\\n                           ((WAVE) == DAC_WAVE_TRIANGLE))\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_FLASH_Aliased_Macros HAL FLASH Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define IS_WRPAREA          IS_OB_WRPAREA\n#define IS_TYPEPROGRAM      IS_FLASH_TYPEPROGRAM\n#define IS_TYPEPROGRAMFLASH IS_FLASH_TYPEPROGRAM\n#define IS_TYPEERASE        IS_FLASH_TYPEERASE\n#define IS_NBSECTORS        IS_FLASH_NBSECTORS\n#define IS_OB_WDG_SOURCE    IS_OB_IWDG_SOURCE\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_I2C_Aliased_Macros HAL I2C Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __HAL_I2C_RESET_CR2             I2C_RESET_CR2\n#define __HAL_I2C_GENERATE_START        I2C_GENERATE_START\n#if defined(STM32F1)\n#define __HAL_I2C_FREQ_RANGE            I2C_FREQRANGE\n#else\n#define __HAL_I2C_FREQ_RANGE            I2C_FREQ_RANGE\n#endif /* STM32F1 */\n#define __HAL_I2C_RISE_TIME             I2C_RISE_TIME\n#define __HAL_I2C_SPEED_STANDARD        I2C_SPEED_STANDARD\n#define __HAL_I2C_SPEED_FAST            I2C_SPEED_FAST\n#define __HAL_I2C_SPEED                 I2C_SPEED\n#define __HAL_I2C_7BIT_ADD_WRITE        I2C_7BIT_ADD_WRITE\n#define __HAL_I2C_7BIT_ADD_READ         I2C_7BIT_ADD_READ\n#define __HAL_I2C_10BIT_ADDRESS         I2C_10BIT_ADDRESS\n#define __HAL_I2C_10BIT_HEADER_WRITE    I2C_10BIT_HEADER_WRITE\n#define __HAL_I2C_10BIT_HEADER_READ     I2C_10BIT_HEADER_READ\n#define __HAL_I2C_MEM_ADD_MSB           I2C_MEM_ADD_MSB\n#define __HAL_I2C_MEM_ADD_LSB           I2C_MEM_ADD_LSB\n#define __HAL_I2C_FREQRANGE             I2C_FREQRANGE\n/**\n  * @}\n  */\n\n/** @defgroup HAL_I2S_Aliased_Macros HAL I2S Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define IS_I2S_INSTANCE                 IS_I2S_ALL_INSTANCE\n#define IS_I2S_INSTANCE_EXT             IS_I2S_ALL_INSTANCE_EXT\n\n#if defined(STM32H7)\n#define __HAL_I2S_CLEAR_FREFLAG       __HAL_I2S_CLEAR_TIFREFLAG\n#endif\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_IRDA_Aliased_Macros HAL IRDA Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __IRDA_DISABLE                  __HAL_IRDA_DISABLE\n#define __IRDA_ENABLE                   __HAL_IRDA_ENABLE\n\n#define __HAL_IRDA_GETCLOCKSOURCE       IRDA_GETCLOCKSOURCE\n#define __HAL_IRDA_MASK_COMPUTATION     IRDA_MASK_COMPUTATION\n#define __IRDA_GETCLOCKSOURCE           IRDA_GETCLOCKSOURCE\n#define __IRDA_MASK_COMPUTATION         IRDA_MASK_COMPUTATION\n\n#define IS_IRDA_ONEBIT_SAMPLE           IS_IRDA_ONE_BIT_SAMPLE\n\n\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_IWDG_Aliased_Macros HAL IWDG Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_IWDG_ENABLE_WRITE_ACCESS  IWDG_ENABLE_WRITE_ACCESS\n#define __HAL_IWDG_DISABLE_WRITE_ACCESS IWDG_DISABLE_WRITE_ACCESS\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_LPTIM_Aliased_Macros HAL LPTIM Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __HAL_LPTIM_ENABLE_INTERRUPT    __HAL_LPTIM_ENABLE_IT\n#define __HAL_LPTIM_DISABLE_INTERRUPT   __HAL_LPTIM_DISABLE_IT\n#define __HAL_LPTIM_GET_ITSTATUS        __HAL_LPTIM_GET_IT_SOURCE\n\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_OPAMP_Aliased_Macros HAL OPAMP Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __OPAMP_CSR_OPAXPD                OPAMP_CSR_OPAXPD\n#define __OPAMP_CSR_S3SELX                OPAMP_CSR_S3SELX\n#define __OPAMP_CSR_S4SELX                OPAMP_CSR_S4SELX\n#define __OPAMP_CSR_S5SELX                OPAMP_CSR_S5SELX\n#define __OPAMP_CSR_S6SELX                OPAMP_CSR_S6SELX\n#define __OPAMP_CSR_OPAXCAL_L             OPAMP_CSR_OPAXCAL_L\n#define __OPAMP_CSR_OPAXCAL_H             OPAMP_CSR_OPAXCAL_H\n#define __OPAMP_CSR_OPAXLPM               OPAMP_CSR_OPAXLPM\n#define __OPAMP_CSR_ALL_SWITCHES          OPAMP_CSR_ALL_SWITCHES\n#define __OPAMP_CSR_ANAWSELX              OPAMP_CSR_ANAWSELX\n#define __OPAMP_CSR_OPAXCALOUT            OPAMP_CSR_OPAXCALOUT\n#define __OPAMP_OFFSET_TRIM_BITSPOSITION  OPAMP_OFFSET_TRIM_BITSPOSITION\n#define __OPAMP_OFFSET_TRIM_SET           OPAMP_OFFSET_TRIM_SET\n\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_PWR_Aliased_Macros HAL PWR Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_PVD_EVENT_DISABLE                                  __HAL_PWR_PVD_EXTI_DISABLE_EVENT\n#define __HAL_PVD_EVENT_ENABLE                                   __HAL_PWR_PVD_EXTI_ENABLE_EVENT\n#define __HAL_PVD_EXTI_FALLINGTRIGGER_DISABLE                    __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE\n#define __HAL_PVD_EXTI_FALLINGTRIGGER_ENABLE                     __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE\n#define __HAL_PVD_EXTI_RISINGTRIGGER_DISABLE                     __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE\n#define __HAL_PVD_EXTI_RISINGTRIGGER_ENABLE                      __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE\n#define __HAL_PVM_EVENT_DISABLE                                  __HAL_PWR_PVM_EVENT_DISABLE\n#define __HAL_PVM_EVENT_ENABLE                                   __HAL_PWR_PVM_EVENT_ENABLE\n#define __HAL_PVM_EXTI_FALLINGTRIGGER_DISABLE                    __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_DISABLE\n#define __HAL_PVM_EXTI_FALLINGTRIGGER_ENABLE                     __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_ENABLE\n#define __HAL_PVM_EXTI_RISINGTRIGGER_DISABLE                     __HAL_PWR_PVM_EXTI_RISINGTRIGGER_DISABLE\n#define __HAL_PVM_EXTI_RISINGTRIGGER_ENABLE                      __HAL_PWR_PVM_EXTI_RISINGTRIGGER_ENABLE\n#define __HAL_PWR_INTERNALWAKEUP_DISABLE                         HAL_PWREx_DisableInternalWakeUpLine\n#define __HAL_PWR_INTERNALWAKEUP_ENABLE                          HAL_PWREx_EnableInternalWakeUpLine\n#define __HAL_PWR_PULL_UP_DOWN_CONFIG_DISABLE                    HAL_PWREx_DisablePullUpPullDownConfig\n#define __HAL_PWR_PULL_UP_DOWN_CONFIG_ENABLE                     HAL_PWREx_EnablePullUpPullDownConfig\n#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER()                  do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); } while(0)\n#define __HAL_PWR_PVD_EXTI_EVENT_DISABLE                         __HAL_PWR_PVD_EXTI_DISABLE_EVENT\n#define __HAL_PWR_PVD_EXTI_EVENT_ENABLE                          __HAL_PWR_PVD_EXTI_ENABLE_EVENT\n#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_DISABLE                __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE\n#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_ENABLE                 __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE\n#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_DISABLE                 __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE\n#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_ENABLE                  __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE\n#define __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER              __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE\n#define __HAL_PWR_PVD_EXTI_SET_RISING_EDGE_TRIGGER               __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE\n#define __HAL_PWR_PVM_DISABLE()                                  do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2();HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); } while(0)\n#define __HAL_PWR_PVM_ENABLE()                                   do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2();HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); } while(0)\n#define __HAL_PWR_SRAM2CONTENT_PRESERVE_DISABLE                  HAL_PWREx_DisableSRAM2ContentRetention\n#define __HAL_PWR_SRAM2CONTENT_PRESERVE_ENABLE                   HAL_PWREx_EnableSRAM2ContentRetention\n#define __HAL_PWR_VDDIO2_DISABLE                                 HAL_PWREx_DisableVddIO2\n#define __HAL_PWR_VDDIO2_ENABLE                                  HAL_PWREx_EnableVddIO2\n#define __HAL_PWR_VDDIO2_EXTI_CLEAR_EGDE_TRIGGER                 __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE\n#define __HAL_PWR_VDDIO2_EXTI_SET_FALLING_EGDE_TRIGGER           __HAL_PWR_VDDIO2_EXTI_ENABLE_FALLING_EDGE\n#define __HAL_PWR_VDDUSB_DISABLE                                 HAL_PWREx_DisableVddUSB\n#define __HAL_PWR_VDDUSB_ENABLE                                  HAL_PWREx_EnableVddUSB\n\n#if defined (STM32F4)\n#define __HAL_PVD_EXTI_ENABLE_IT(PWR_EXTI_LINE_PVD)         __HAL_PWR_PVD_EXTI_ENABLE_IT()\n#define __HAL_PVD_EXTI_DISABLE_IT(PWR_EXTI_LINE_PVD)        __HAL_PWR_PVD_EXTI_DISABLE_IT()\n#define __HAL_PVD_EXTI_GET_FLAG(PWR_EXTI_LINE_PVD)          __HAL_PWR_PVD_EXTI_GET_FLAG()\n#define __HAL_PVD_EXTI_CLEAR_FLAG(PWR_EXTI_LINE_PVD)        __HAL_PWR_PVD_EXTI_CLEAR_FLAG()\n#define __HAL_PVD_EXTI_GENERATE_SWIT(PWR_EXTI_LINE_PVD)     __HAL_PWR_PVD_EXTI_GENERATE_SWIT()\n#else\n#define __HAL_PVD_EXTI_CLEAR_FLAG                                __HAL_PWR_PVD_EXTI_CLEAR_FLAG\n#define __HAL_PVD_EXTI_DISABLE_IT                                __HAL_PWR_PVD_EXTI_DISABLE_IT\n#define __HAL_PVD_EXTI_ENABLE_IT                                 __HAL_PWR_PVD_EXTI_ENABLE_IT\n#define __HAL_PVD_EXTI_GENERATE_SWIT                             __HAL_PWR_PVD_EXTI_GENERATE_SWIT\n#define __HAL_PVD_EXTI_GET_FLAG                                  __HAL_PWR_PVD_EXTI_GET_FLAG\n#endif /* STM32F4 */\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_RCC_Aliased HAL RCC Aliased maintained for legacy purpose\n  * @{\n  */\n\n#define RCC_StopWakeUpClock_MSI     RCC_STOP_WAKEUPCLOCK_MSI\n#define RCC_StopWakeUpClock_HSI     RCC_STOP_WAKEUPCLOCK_HSI\n\n#define HAL_RCC_CCSCallback HAL_RCC_CSSCallback\n#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd\\\n                                         )==ENABLE) ? HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT())\n\n#define __ADC_CLK_DISABLE          __HAL_RCC_ADC_CLK_DISABLE\n#define __ADC_CLK_ENABLE           __HAL_RCC_ADC_CLK_ENABLE\n#define __ADC_CLK_SLEEP_DISABLE    __HAL_RCC_ADC_CLK_SLEEP_DISABLE\n#define __ADC_CLK_SLEEP_ENABLE     __HAL_RCC_ADC_CLK_SLEEP_ENABLE\n#define __ADC_FORCE_RESET          __HAL_RCC_ADC_FORCE_RESET\n#define __ADC_RELEASE_RESET        __HAL_RCC_ADC_RELEASE_RESET\n#define __ADC1_CLK_DISABLE         __HAL_RCC_ADC1_CLK_DISABLE\n#define __ADC1_CLK_ENABLE          __HAL_RCC_ADC1_CLK_ENABLE\n#define __ADC1_FORCE_RESET         __HAL_RCC_ADC1_FORCE_RESET\n#define __ADC1_RELEASE_RESET       __HAL_RCC_ADC1_RELEASE_RESET\n#define __ADC1_CLK_SLEEP_ENABLE    __HAL_RCC_ADC1_CLK_SLEEP_ENABLE\n#define __ADC1_CLK_SLEEP_DISABLE   __HAL_RCC_ADC1_CLK_SLEEP_DISABLE\n#define __ADC2_CLK_DISABLE         __HAL_RCC_ADC2_CLK_DISABLE\n#define __ADC2_CLK_ENABLE          __HAL_RCC_ADC2_CLK_ENABLE\n#define __ADC2_FORCE_RESET __HAL_RCC_ADC2_FORCE_RESET\n#define __ADC2_RELEASE_RESET __HAL_RCC_ADC2_RELEASE_RESET\n#define __ADC3_CLK_DISABLE __HAL_RCC_ADC3_CLK_DISABLE\n#define __ADC3_CLK_ENABLE __HAL_RCC_ADC3_CLK_ENABLE\n#define __ADC3_FORCE_RESET __HAL_RCC_ADC3_FORCE_RESET\n#define __ADC3_RELEASE_RESET __HAL_RCC_ADC3_RELEASE_RESET\n#define __AES_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE\n#define __AES_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE\n#define __AES_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE\n#define __AES_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE\n#define __AES_FORCE_RESET __HAL_RCC_AES_FORCE_RESET\n#define __AES_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET\n#define __CRYP_CLK_SLEEP_ENABLE      __HAL_RCC_CRYP_CLK_SLEEP_ENABLE\n#define __CRYP_CLK_SLEEP_DISABLE  __HAL_RCC_CRYP_CLK_SLEEP_DISABLE\n#define __CRYP_CLK_ENABLE  __HAL_RCC_CRYP_CLK_ENABLE\n#define __CRYP_CLK_DISABLE  __HAL_RCC_CRYP_CLK_DISABLE\n#define __CRYP_FORCE_RESET       __HAL_RCC_CRYP_FORCE_RESET\n#define __CRYP_RELEASE_RESET  __HAL_RCC_CRYP_RELEASE_RESET\n#define __AFIO_CLK_DISABLE __HAL_RCC_AFIO_CLK_DISABLE\n#define __AFIO_CLK_ENABLE __HAL_RCC_AFIO_CLK_ENABLE\n#define __AFIO_FORCE_RESET __HAL_RCC_AFIO_FORCE_RESET\n#define __AFIO_RELEASE_RESET __HAL_RCC_AFIO_RELEASE_RESET\n#define __AHB_FORCE_RESET __HAL_RCC_AHB_FORCE_RESET\n#define __AHB_RELEASE_RESET __HAL_RCC_AHB_RELEASE_RESET\n#define __AHB1_FORCE_RESET __HAL_RCC_AHB1_FORCE_RESET\n#define __AHB1_RELEASE_RESET __HAL_RCC_AHB1_RELEASE_RESET\n#define __AHB2_FORCE_RESET __HAL_RCC_AHB2_FORCE_RESET\n#define __AHB2_RELEASE_RESET __HAL_RCC_AHB2_RELEASE_RESET\n#define __AHB3_FORCE_RESET __HAL_RCC_AHB3_FORCE_RESET\n#define __AHB3_RELEASE_RESET __HAL_RCC_AHB3_RELEASE_RESET\n#define __APB1_FORCE_RESET __HAL_RCC_APB1_FORCE_RESET\n#define __APB1_RELEASE_RESET __HAL_RCC_APB1_RELEASE_RESET\n#define __APB2_FORCE_RESET __HAL_RCC_APB2_FORCE_RESET\n#define __APB2_RELEASE_RESET __HAL_RCC_APB2_RELEASE_RESET\n#define __BKP_CLK_DISABLE __HAL_RCC_BKP_CLK_DISABLE\n#define __BKP_CLK_ENABLE __HAL_RCC_BKP_CLK_ENABLE\n#define __BKP_FORCE_RESET __HAL_RCC_BKP_FORCE_RESET\n#define __BKP_RELEASE_RESET __HAL_RCC_BKP_RELEASE_RESET\n#define __CAN1_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE\n#define __CAN1_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE\n#define __CAN1_CLK_SLEEP_DISABLE __HAL_RCC_CAN1_CLK_SLEEP_DISABLE\n#define __CAN1_CLK_SLEEP_ENABLE __HAL_RCC_CAN1_CLK_SLEEP_ENABLE\n#define __CAN1_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET\n#define __CAN1_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET\n#define __CAN_CLK_DISABLE         __HAL_RCC_CAN1_CLK_DISABLE\n#define __CAN_CLK_ENABLE          __HAL_RCC_CAN1_CLK_ENABLE\n#define __CAN_FORCE_RESET         __HAL_RCC_CAN1_FORCE_RESET\n#define __CAN_RELEASE_RESET       __HAL_RCC_CAN1_RELEASE_RESET\n#define __CAN2_CLK_DISABLE __HAL_RCC_CAN2_CLK_DISABLE\n#define __CAN2_CLK_ENABLE __HAL_RCC_CAN2_CLK_ENABLE\n#define __CAN2_FORCE_RESET __HAL_RCC_CAN2_FORCE_RESET\n#define __CAN2_RELEASE_RESET __HAL_RCC_CAN2_RELEASE_RESET\n#define __CEC_CLK_DISABLE __HAL_RCC_CEC_CLK_DISABLE\n#define __CEC_CLK_ENABLE __HAL_RCC_CEC_CLK_ENABLE\n#define __COMP_CLK_DISABLE        __HAL_RCC_COMP_CLK_DISABLE\n#define __COMP_CLK_ENABLE         __HAL_RCC_COMP_CLK_ENABLE\n#define __COMP_FORCE_RESET        __HAL_RCC_COMP_FORCE_RESET\n#define __COMP_RELEASE_RESET      __HAL_RCC_COMP_RELEASE_RESET\n#define __COMP_CLK_SLEEP_ENABLE   __HAL_RCC_COMP_CLK_SLEEP_ENABLE\n#define __COMP_CLK_SLEEP_DISABLE  __HAL_RCC_COMP_CLK_SLEEP_DISABLE\n#define __CEC_FORCE_RESET __HAL_RCC_CEC_FORCE_RESET\n#define __CEC_RELEASE_RESET __HAL_RCC_CEC_RELEASE_RESET\n#define __CRC_CLK_DISABLE __HAL_RCC_CRC_CLK_DISABLE\n#define __CRC_CLK_ENABLE __HAL_RCC_CRC_CLK_ENABLE\n#define __CRC_CLK_SLEEP_DISABLE __HAL_RCC_CRC_CLK_SLEEP_DISABLE\n#define __CRC_CLK_SLEEP_ENABLE __HAL_RCC_CRC_CLK_SLEEP_ENABLE\n#define __CRC_FORCE_RESET __HAL_RCC_CRC_FORCE_RESET\n#define __CRC_RELEASE_RESET __HAL_RCC_CRC_RELEASE_RESET\n#define __DAC_CLK_DISABLE __HAL_RCC_DAC_CLK_DISABLE\n#define __DAC_CLK_ENABLE __HAL_RCC_DAC_CLK_ENABLE\n#define __DAC_FORCE_RESET __HAL_RCC_DAC_FORCE_RESET\n#define __DAC_RELEASE_RESET __HAL_RCC_DAC_RELEASE_RESET\n#define __DAC1_CLK_DISABLE __HAL_RCC_DAC1_CLK_DISABLE\n#define __DAC1_CLK_ENABLE __HAL_RCC_DAC1_CLK_ENABLE\n#define __DAC1_CLK_SLEEP_DISABLE __HAL_RCC_DAC1_CLK_SLEEP_DISABLE\n#define __DAC1_CLK_SLEEP_ENABLE __HAL_RCC_DAC1_CLK_SLEEP_ENABLE\n#define __DAC1_FORCE_RESET __HAL_RCC_DAC1_FORCE_RESET\n#define __DAC1_RELEASE_RESET __HAL_RCC_DAC1_RELEASE_RESET\n#define __DBGMCU_CLK_ENABLE     __HAL_RCC_DBGMCU_CLK_ENABLE\n#define __DBGMCU_CLK_DISABLE     __HAL_RCC_DBGMCU_CLK_DISABLE\n#define __DBGMCU_FORCE_RESET    __HAL_RCC_DBGMCU_FORCE_RESET\n#define __DBGMCU_RELEASE_RESET  __HAL_RCC_DBGMCU_RELEASE_RESET\n#define __DFSDM_CLK_DISABLE __HAL_RCC_DFSDM_CLK_DISABLE\n#define __DFSDM_CLK_ENABLE __HAL_RCC_DFSDM_CLK_ENABLE\n#define __DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE\n#define __DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE\n#define __DFSDM_FORCE_RESET __HAL_RCC_DFSDM_FORCE_RESET\n#define __DFSDM_RELEASE_RESET __HAL_RCC_DFSDM_RELEASE_RESET\n#define __DMA1_CLK_DISABLE __HAL_RCC_DMA1_CLK_DISABLE\n#define __DMA1_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE\n#define __DMA1_CLK_SLEEP_DISABLE __HAL_RCC_DMA1_CLK_SLEEP_DISABLE\n#define __DMA1_CLK_SLEEP_ENABLE __HAL_RCC_DMA1_CLK_SLEEP_ENABLE\n#define __DMA1_FORCE_RESET __HAL_RCC_DMA1_FORCE_RESET\n#define __DMA1_RELEASE_RESET __HAL_RCC_DMA1_RELEASE_RESET\n#define __DMA2_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE\n#define __DMA2_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE\n#define __DMA2_CLK_SLEEP_DISABLE __HAL_RCC_DMA2_CLK_SLEEP_DISABLE\n#define __DMA2_CLK_SLEEP_ENABLE __HAL_RCC_DMA2_CLK_SLEEP_ENABLE\n#define __DMA2_FORCE_RESET __HAL_RCC_DMA2_FORCE_RESET\n#define __DMA2_RELEASE_RESET __HAL_RCC_DMA2_RELEASE_RESET\n#define __ETHMAC_CLK_DISABLE __HAL_RCC_ETHMAC_CLK_DISABLE\n#define __ETHMAC_CLK_ENABLE __HAL_RCC_ETHMAC_CLK_ENABLE\n#define __ETHMAC_FORCE_RESET __HAL_RCC_ETHMAC_FORCE_RESET\n#define __ETHMAC_RELEASE_RESET __HAL_RCC_ETHMAC_RELEASE_RESET\n#define __ETHMACRX_CLK_DISABLE __HAL_RCC_ETHMACRX_CLK_DISABLE\n#define __ETHMACRX_CLK_ENABLE __HAL_RCC_ETHMACRX_CLK_ENABLE\n#define __ETHMACTX_CLK_DISABLE __HAL_RCC_ETHMACTX_CLK_DISABLE\n#define __ETHMACTX_CLK_ENABLE __HAL_RCC_ETHMACTX_CLK_ENABLE\n#define __FIREWALL_CLK_DISABLE __HAL_RCC_FIREWALL_CLK_DISABLE\n#define __FIREWALL_CLK_ENABLE __HAL_RCC_FIREWALL_CLK_ENABLE\n#define __FLASH_CLK_DISABLE __HAL_RCC_FLASH_CLK_DISABLE\n#define __FLASH_CLK_ENABLE __HAL_RCC_FLASH_CLK_ENABLE\n#define __FLASH_CLK_SLEEP_DISABLE __HAL_RCC_FLASH_CLK_SLEEP_DISABLE\n#define __FLASH_CLK_SLEEP_ENABLE __HAL_RCC_FLASH_CLK_SLEEP_ENABLE\n#define __FLASH_FORCE_RESET __HAL_RCC_FLASH_FORCE_RESET\n#define __FLASH_RELEASE_RESET __HAL_RCC_FLASH_RELEASE_RESET\n#define __FLITF_CLK_DISABLE       __HAL_RCC_FLITF_CLK_DISABLE\n#define __FLITF_CLK_ENABLE        __HAL_RCC_FLITF_CLK_ENABLE\n#define __FLITF_FORCE_RESET       __HAL_RCC_FLITF_FORCE_RESET\n#define __FLITF_RELEASE_RESET     __HAL_RCC_FLITF_RELEASE_RESET\n#define __FLITF_CLK_SLEEP_ENABLE  __HAL_RCC_FLITF_CLK_SLEEP_ENABLE\n#define __FLITF_CLK_SLEEP_DISABLE __HAL_RCC_FLITF_CLK_SLEEP_DISABLE\n#define __FMC_CLK_DISABLE __HAL_RCC_FMC_CLK_DISABLE\n#define __FMC_CLK_ENABLE __HAL_RCC_FMC_CLK_ENABLE\n#define __FMC_CLK_SLEEP_DISABLE __HAL_RCC_FMC_CLK_SLEEP_DISABLE\n#define __FMC_CLK_SLEEP_ENABLE __HAL_RCC_FMC_CLK_SLEEP_ENABLE\n#define __FMC_FORCE_RESET __HAL_RCC_FMC_FORCE_RESET\n#define __FMC_RELEASE_RESET __HAL_RCC_FMC_RELEASE_RESET\n#define __FSMC_CLK_DISABLE __HAL_RCC_FSMC_CLK_DISABLE\n#define __FSMC_CLK_ENABLE __HAL_RCC_FSMC_CLK_ENABLE\n#define __GPIOA_CLK_DISABLE __HAL_RCC_GPIOA_CLK_DISABLE\n#define __GPIOA_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE\n#define __GPIOA_CLK_SLEEP_DISABLE __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE\n#define __GPIOA_CLK_SLEEP_ENABLE __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE\n#define __GPIOA_FORCE_RESET __HAL_RCC_GPIOA_FORCE_RESET\n#define __GPIOA_RELEASE_RESET __HAL_RCC_GPIOA_RELEASE_RESET\n#define __GPIOB_CLK_DISABLE __HAL_RCC_GPIOB_CLK_DISABLE\n#define __GPIOB_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE\n#define __GPIOB_CLK_SLEEP_DISABLE __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE\n#define __GPIOB_CLK_SLEEP_ENABLE __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE\n#define __GPIOB_FORCE_RESET __HAL_RCC_GPIOB_FORCE_RESET\n#define __GPIOB_RELEASE_RESET __HAL_RCC_GPIOB_RELEASE_RESET\n#define __GPIOC_CLK_DISABLE __HAL_RCC_GPIOC_CLK_DISABLE\n#define __GPIOC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE\n#define __GPIOC_CLK_SLEEP_DISABLE __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE\n#define __GPIOC_CLK_SLEEP_ENABLE __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE\n#define __GPIOC_FORCE_RESET __HAL_RCC_GPIOC_FORCE_RESET\n#define __GPIOC_RELEASE_RESET __HAL_RCC_GPIOC_RELEASE_RESET\n#define __GPIOD_CLK_DISABLE __HAL_RCC_GPIOD_CLK_DISABLE\n#define __GPIOD_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE\n#define __GPIOD_CLK_SLEEP_DISABLE __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE\n#define __GPIOD_CLK_SLEEP_ENABLE __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE\n#define __GPIOD_FORCE_RESET __HAL_RCC_GPIOD_FORCE_RESET\n#define __GPIOD_RELEASE_RESET __HAL_RCC_GPIOD_RELEASE_RESET\n#define __GPIOE_CLK_DISABLE __HAL_RCC_GPIOE_CLK_DISABLE\n#define __GPIOE_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE\n#define __GPIOE_CLK_SLEEP_DISABLE __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE\n#define __GPIOE_CLK_SLEEP_ENABLE __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE\n#define __GPIOE_FORCE_RESET __HAL_RCC_GPIOE_FORCE_RESET\n#define __GPIOE_RELEASE_RESET __HAL_RCC_GPIOE_RELEASE_RESET\n#define __GPIOF_CLK_DISABLE __HAL_RCC_GPIOF_CLK_DISABLE\n#define __GPIOF_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE\n#define __GPIOF_CLK_SLEEP_DISABLE __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE\n#define __GPIOF_CLK_SLEEP_ENABLE __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE\n#define __GPIOF_FORCE_RESET __HAL_RCC_GPIOF_FORCE_RESET\n#define __GPIOF_RELEASE_RESET __HAL_RCC_GPIOF_RELEASE_RESET\n#define __GPIOG_CLK_DISABLE __HAL_RCC_GPIOG_CLK_DISABLE\n#define __GPIOG_CLK_ENABLE __HAL_RCC_GPIOG_CLK_ENABLE\n#define __GPIOG_CLK_SLEEP_DISABLE __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE\n#define __GPIOG_CLK_SLEEP_ENABLE __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE\n#define __GPIOG_FORCE_RESET __HAL_RCC_GPIOG_FORCE_RESET\n#define __GPIOG_RELEASE_RESET __HAL_RCC_GPIOG_RELEASE_RESET\n#define __GPIOH_CLK_DISABLE __HAL_RCC_GPIOH_CLK_DISABLE\n#define __GPIOH_CLK_ENABLE __HAL_RCC_GPIOH_CLK_ENABLE\n#define __GPIOH_CLK_SLEEP_DISABLE __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE\n#define __GPIOH_CLK_SLEEP_ENABLE __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE\n#define __GPIOH_FORCE_RESET __HAL_RCC_GPIOH_FORCE_RESET\n#define __GPIOH_RELEASE_RESET __HAL_RCC_GPIOH_RELEASE_RESET\n#define __I2C1_CLK_DISABLE __HAL_RCC_I2C1_CLK_DISABLE\n#define __I2C1_CLK_ENABLE __HAL_RCC_I2C1_CLK_ENABLE\n#define __I2C1_CLK_SLEEP_DISABLE __HAL_RCC_I2C1_CLK_SLEEP_DISABLE\n#define __I2C1_CLK_SLEEP_ENABLE __HAL_RCC_I2C1_CLK_SLEEP_ENABLE\n#define __I2C1_FORCE_RESET __HAL_RCC_I2C1_FORCE_RESET\n#define __I2C1_RELEASE_RESET __HAL_RCC_I2C1_RELEASE_RESET\n#define __I2C2_CLK_DISABLE __HAL_RCC_I2C2_CLK_DISABLE\n#define __I2C2_CLK_ENABLE __HAL_RCC_I2C2_CLK_ENABLE\n#define __I2C2_CLK_SLEEP_DISABLE __HAL_RCC_I2C2_CLK_SLEEP_DISABLE\n#define __I2C2_CLK_SLEEP_ENABLE __HAL_RCC_I2C2_CLK_SLEEP_ENABLE\n#define __I2C2_FORCE_RESET __HAL_RCC_I2C2_FORCE_RESET\n#define __I2C2_RELEASE_RESET __HAL_RCC_I2C2_RELEASE_RESET\n#define __I2C3_CLK_DISABLE __HAL_RCC_I2C3_CLK_DISABLE\n#define __I2C3_CLK_ENABLE __HAL_RCC_I2C3_CLK_ENABLE\n#define __I2C3_CLK_SLEEP_DISABLE __HAL_RCC_I2C3_CLK_SLEEP_DISABLE\n#define __I2C3_CLK_SLEEP_ENABLE __HAL_RCC_I2C3_CLK_SLEEP_ENABLE\n#define __I2C3_FORCE_RESET __HAL_RCC_I2C3_FORCE_RESET\n#define __I2C3_RELEASE_RESET __HAL_RCC_I2C3_RELEASE_RESET\n#define __LCD_CLK_DISABLE __HAL_RCC_LCD_CLK_DISABLE\n#define __LCD_CLK_ENABLE __HAL_RCC_LCD_CLK_ENABLE\n#define __LCD_CLK_SLEEP_DISABLE __HAL_RCC_LCD_CLK_SLEEP_DISABLE\n#define __LCD_CLK_SLEEP_ENABLE __HAL_RCC_LCD_CLK_SLEEP_ENABLE\n#define __LCD_FORCE_RESET __HAL_RCC_LCD_FORCE_RESET\n#define __LCD_RELEASE_RESET __HAL_RCC_LCD_RELEASE_RESET\n#define __LPTIM1_CLK_DISABLE __HAL_RCC_LPTIM1_CLK_DISABLE\n#define __LPTIM1_CLK_ENABLE __HAL_RCC_LPTIM1_CLK_ENABLE\n#define __LPTIM1_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE\n#define __LPTIM1_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE\n#define __LPTIM1_FORCE_RESET __HAL_RCC_LPTIM1_FORCE_RESET\n#define __LPTIM1_RELEASE_RESET __HAL_RCC_LPTIM1_RELEASE_RESET\n#define __LPTIM2_CLK_DISABLE __HAL_RCC_LPTIM2_CLK_DISABLE\n#define __LPTIM2_CLK_ENABLE __HAL_RCC_LPTIM2_CLK_ENABLE\n#define __LPTIM2_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE\n#define __LPTIM2_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE\n#define __LPTIM2_FORCE_RESET __HAL_RCC_LPTIM2_FORCE_RESET\n#define __LPTIM2_RELEASE_RESET __HAL_RCC_LPTIM2_RELEASE_RESET\n#define __LPUART1_CLK_DISABLE __HAL_RCC_LPUART1_CLK_DISABLE\n#define __LPUART1_CLK_ENABLE __HAL_RCC_LPUART1_CLK_ENABLE\n#define __LPUART1_CLK_SLEEP_DISABLE __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE\n#define __LPUART1_CLK_SLEEP_ENABLE __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE\n#define __LPUART1_FORCE_RESET __HAL_RCC_LPUART1_FORCE_RESET\n#define __LPUART1_RELEASE_RESET __HAL_RCC_LPUART1_RELEASE_RESET\n#define __OPAMP_CLK_DISABLE __HAL_RCC_OPAMP_CLK_DISABLE\n#define __OPAMP_CLK_ENABLE __HAL_RCC_OPAMP_CLK_ENABLE\n#define __OPAMP_CLK_SLEEP_DISABLE __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE\n#define __OPAMP_CLK_SLEEP_ENABLE __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE\n#define __OPAMP_FORCE_RESET __HAL_RCC_OPAMP_FORCE_RESET\n#define __OPAMP_RELEASE_RESET __HAL_RCC_OPAMP_RELEASE_RESET\n#define __OTGFS_CLK_DISABLE __HAL_RCC_OTGFS_CLK_DISABLE\n#define __OTGFS_CLK_ENABLE __HAL_RCC_OTGFS_CLK_ENABLE\n#define __OTGFS_CLK_SLEEP_DISABLE __HAL_RCC_OTGFS_CLK_SLEEP_DISABLE\n#define __OTGFS_CLK_SLEEP_ENABLE __HAL_RCC_OTGFS_CLK_SLEEP_ENABLE\n#define __OTGFS_FORCE_RESET __HAL_RCC_OTGFS_FORCE_RESET\n#define __OTGFS_RELEASE_RESET __HAL_RCC_OTGFS_RELEASE_RESET\n#define __PWR_CLK_DISABLE __HAL_RCC_PWR_CLK_DISABLE\n#define __PWR_CLK_ENABLE __HAL_RCC_PWR_CLK_ENABLE\n#define __PWR_CLK_SLEEP_DISABLE __HAL_RCC_PWR_CLK_SLEEP_DISABLE\n#define __PWR_CLK_SLEEP_ENABLE __HAL_RCC_PWR_CLK_SLEEP_ENABLE\n#define __PWR_FORCE_RESET __HAL_RCC_PWR_FORCE_RESET\n#define __PWR_RELEASE_RESET __HAL_RCC_PWR_RELEASE_RESET\n#define __QSPI_CLK_DISABLE __HAL_RCC_QSPI_CLK_DISABLE\n#define __QSPI_CLK_ENABLE __HAL_RCC_QSPI_CLK_ENABLE\n#define __QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QSPI_CLK_SLEEP_DISABLE\n#define __QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QSPI_CLK_SLEEP_ENABLE\n#define __QSPI_FORCE_RESET __HAL_RCC_QSPI_FORCE_RESET\n#define __QSPI_RELEASE_RESET __HAL_RCC_QSPI_RELEASE_RESET\n\n#if defined(STM32WB)\n#define __HAL_RCC_QSPI_CLK_DISABLE            __HAL_RCC_QUADSPI_CLK_DISABLE\n#define __HAL_RCC_QSPI_CLK_ENABLE             __HAL_RCC_QUADSPI_CLK_ENABLE\n#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE      __HAL_RCC_QUADSPI_CLK_SLEEP_DISABLE\n#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE       __HAL_RCC_QUADSPI_CLK_SLEEP_ENABLE\n#define __HAL_RCC_QSPI_FORCE_RESET            __HAL_RCC_QUADSPI_FORCE_RESET\n#define __HAL_RCC_QSPI_RELEASE_RESET          __HAL_RCC_QUADSPI_RELEASE_RESET\n#define __HAL_RCC_QSPI_IS_CLK_ENABLED         __HAL_RCC_QUADSPI_IS_CLK_ENABLED\n#define __HAL_RCC_QSPI_IS_CLK_DISABLED        __HAL_RCC_QUADSPI_IS_CLK_DISABLED\n#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED   __HAL_RCC_QUADSPI_IS_CLK_SLEEP_ENABLED\n#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED  __HAL_RCC_QUADSPI_IS_CLK_SLEEP_DISABLED\n#define QSPI_IRQHandler QUADSPI_IRQHandler\n#endif /* __HAL_RCC_QUADSPI_CLK_ENABLE */\n\n#define __RNG_CLK_DISABLE __HAL_RCC_RNG_CLK_DISABLE\n#define __RNG_CLK_ENABLE __HAL_RCC_RNG_CLK_ENABLE\n#define __RNG_CLK_SLEEP_DISABLE __HAL_RCC_RNG_CLK_SLEEP_DISABLE\n#define __RNG_CLK_SLEEP_ENABLE __HAL_RCC_RNG_CLK_SLEEP_ENABLE\n#define __RNG_FORCE_RESET __HAL_RCC_RNG_FORCE_RESET\n#define __RNG_RELEASE_RESET __HAL_RCC_RNG_RELEASE_RESET\n#define __SAI1_CLK_DISABLE __HAL_RCC_SAI1_CLK_DISABLE\n#define __SAI1_CLK_ENABLE __HAL_RCC_SAI1_CLK_ENABLE\n#define __SAI1_CLK_SLEEP_DISABLE __HAL_RCC_SAI1_CLK_SLEEP_DISABLE\n#define __SAI1_CLK_SLEEP_ENABLE __HAL_RCC_SAI1_CLK_SLEEP_ENABLE\n#define __SAI1_FORCE_RESET __HAL_RCC_SAI1_FORCE_RESET\n#define __SAI1_RELEASE_RESET __HAL_RCC_SAI1_RELEASE_RESET\n#define __SAI2_CLK_DISABLE __HAL_RCC_SAI2_CLK_DISABLE\n#define __SAI2_CLK_ENABLE __HAL_RCC_SAI2_CLK_ENABLE\n#define __SAI2_CLK_SLEEP_DISABLE __HAL_RCC_SAI2_CLK_SLEEP_DISABLE\n#define __SAI2_CLK_SLEEP_ENABLE __HAL_RCC_SAI2_CLK_SLEEP_ENABLE\n#define __SAI2_FORCE_RESET __HAL_RCC_SAI2_FORCE_RESET\n#define __SAI2_RELEASE_RESET __HAL_RCC_SAI2_RELEASE_RESET\n#define __SDIO_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE\n#define __SDIO_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE\n#define __SDMMC_CLK_DISABLE __HAL_RCC_SDMMC_CLK_DISABLE\n#define __SDMMC_CLK_ENABLE __HAL_RCC_SDMMC_CLK_ENABLE\n#define __SDMMC_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC_CLK_SLEEP_DISABLE\n#define __SDMMC_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC_CLK_SLEEP_ENABLE\n#define __SDMMC_FORCE_RESET __HAL_RCC_SDMMC_FORCE_RESET\n#define __SDMMC_RELEASE_RESET __HAL_RCC_SDMMC_RELEASE_RESET\n#define __SPI1_CLK_DISABLE __HAL_RCC_SPI1_CLK_DISABLE\n#define __SPI1_CLK_ENABLE __HAL_RCC_SPI1_CLK_ENABLE\n#define __SPI1_CLK_SLEEP_DISABLE __HAL_RCC_SPI1_CLK_SLEEP_DISABLE\n#define __SPI1_CLK_SLEEP_ENABLE __HAL_RCC_SPI1_CLK_SLEEP_ENABLE\n#define __SPI1_FORCE_RESET __HAL_RCC_SPI1_FORCE_RESET\n#define __SPI1_RELEASE_RESET __HAL_RCC_SPI1_RELEASE_RESET\n#define __SPI2_CLK_DISABLE __HAL_RCC_SPI2_CLK_DISABLE\n#define __SPI2_CLK_ENABLE __HAL_RCC_SPI2_CLK_ENABLE\n#define __SPI2_CLK_SLEEP_DISABLE __HAL_RCC_SPI2_CLK_SLEEP_DISABLE\n#define __SPI2_CLK_SLEEP_ENABLE __HAL_RCC_SPI2_CLK_SLEEP_ENABLE\n#define __SPI2_FORCE_RESET __HAL_RCC_SPI2_FORCE_RESET\n#define __SPI2_RELEASE_RESET __HAL_RCC_SPI2_RELEASE_RESET\n#define __SPI3_CLK_DISABLE __HAL_RCC_SPI3_CLK_DISABLE\n#define __SPI3_CLK_ENABLE __HAL_RCC_SPI3_CLK_ENABLE\n#define __SPI3_CLK_SLEEP_DISABLE __HAL_RCC_SPI3_CLK_SLEEP_DISABLE\n#define __SPI3_CLK_SLEEP_ENABLE __HAL_RCC_SPI3_CLK_SLEEP_ENABLE\n#define __SPI3_FORCE_RESET __HAL_RCC_SPI3_FORCE_RESET\n#define __SPI3_RELEASE_RESET __HAL_RCC_SPI3_RELEASE_RESET\n#define __SRAM_CLK_DISABLE __HAL_RCC_SRAM_CLK_DISABLE\n#define __SRAM_CLK_ENABLE __HAL_RCC_SRAM_CLK_ENABLE\n#define __SRAM1_CLK_SLEEP_DISABLE __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE\n#define __SRAM1_CLK_SLEEP_ENABLE __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE\n#define __SRAM2_CLK_SLEEP_DISABLE __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE\n#define __SRAM2_CLK_SLEEP_ENABLE __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE\n#define __SWPMI1_CLK_DISABLE __HAL_RCC_SWPMI1_CLK_DISABLE\n#define __SWPMI1_CLK_ENABLE __HAL_RCC_SWPMI1_CLK_ENABLE\n#define __SWPMI1_CLK_SLEEP_DISABLE __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE\n#define __SWPMI1_CLK_SLEEP_ENABLE __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE\n#define __SWPMI1_FORCE_RESET __HAL_RCC_SWPMI1_FORCE_RESET\n#define __SWPMI1_RELEASE_RESET __HAL_RCC_SWPMI1_RELEASE_RESET\n#define __SYSCFG_CLK_DISABLE __HAL_RCC_SYSCFG_CLK_DISABLE\n#define __SYSCFG_CLK_ENABLE __HAL_RCC_SYSCFG_CLK_ENABLE\n#define __SYSCFG_CLK_SLEEP_DISABLE __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE\n#define __SYSCFG_CLK_SLEEP_ENABLE __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE\n#define __SYSCFG_FORCE_RESET __HAL_RCC_SYSCFG_FORCE_RESET\n#define __SYSCFG_RELEASE_RESET __HAL_RCC_SYSCFG_RELEASE_RESET\n#define __TIM1_CLK_DISABLE __HAL_RCC_TIM1_CLK_DISABLE\n#define __TIM1_CLK_ENABLE __HAL_RCC_TIM1_CLK_ENABLE\n#define __TIM1_CLK_SLEEP_DISABLE __HAL_RCC_TIM1_CLK_SLEEP_DISABLE\n#define __TIM1_CLK_SLEEP_ENABLE __HAL_RCC_TIM1_CLK_SLEEP_ENABLE\n#define __TIM1_FORCE_RESET __HAL_RCC_TIM1_FORCE_RESET\n#define __TIM1_RELEASE_RESET __HAL_RCC_TIM1_RELEASE_RESET\n#define __TIM10_CLK_DISABLE __HAL_RCC_TIM10_CLK_DISABLE\n#define __TIM10_CLK_ENABLE __HAL_RCC_TIM10_CLK_ENABLE\n#define __TIM10_FORCE_RESET __HAL_RCC_TIM10_FORCE_RESET\n#define __TIM10_RELEASE_RESET __HAL_RCC_TIM10_RELEASE_RESET\n#define __TIM11_CLK_DISABLE __HAL_RCC_TIM11_CLK_DISABLE\n#define __TIM11_CLK_ENABLE __HAL_RCC_TIM11_CLK_ENABLE\n#define __TIM11_FORCE_RESET __HAL_RCC_TIM11_FORCE_RESET\n#define __TIM11_RELEASE_RESET __HAL_RCC_TIM11_RELEASE_RESET\n#define __TIM12_CLK_DISABLE __HAL_RCC_TIM12_CLK_DISABLE\n#define __TIM12_CLK_ENABLE __HAL_RCC_TIM12_CLK_ENABLE\n#define __TIM12_FORCE_RESET __HAL_RCC_TIM12_FORCE_RESET\n#define __TIM12_RELEASE_RESET __HAL_RCC_TIM12_RELEASE_RESET\n#define __TIM13_CLK_DISABLE __HAL_RCC_TIM13_CLK_DISABLE\n#define __TIM13_CLK_ENABLE __HAL_RCC_TIM13_CLK_ENABLE\n#define __TIM13_FORCE_RESET __HAL_RCC_TIM13_FORCE_RESET\n#define __TIM13_RELEASE_RESET __HAL_RCC_TIM13_RELEASE_RESET\n#define __TIM14_CLK_DISABLE __HAL_RCC_TIM14_CLK_DISABLE\n#define __TIM14_CLK_ENABLE __HAL_RCC_TIM14_CLK_ENABLE\n#define __TIM14_FORCE_RESET __HAL_RCC_TIM14_FORCE_RESET\n#define __TIM14_RELEASE_RESET __HAL_RCC_TIM14_RELEASE_RESET\n#define __TIM15_CLK_DISABLE __HAL_RCC_TIM15_CLK_DISABLE\n#define __TIM15_CLK_ENABLE __HAL_RCC_TIM15_CLK_ENABLE\n#define __TIM15_CLK_SLEEP_DISABLE __HAL_RCC_TIM15_CLK_SLEEP_DISABLE\n#define __TIM15_CLK_SLEEP_ENABLE __HAL_RCC_TIM15_CLK_SLEEP_ENABLE\n#define __TIM15_FORCE_RESET __HAL_RCC_TIM15_FORCE_RESET\n#define __TIM15_RELEASE_RESET __HAL_RCC_TIM15_RELEASE_RESET\n#define __TIM16_CLK_DISABLE __HAL_RCC_TIM16_CLK_DISABLE\n#define __TIM16_CLK_ENABLE __HAL_RCC_TIM16_CLK_ENABLE\n#define __TIM16_CLK_SLEEP_DISABLE __HAL_RCC_TIM16_CLK_SLEEP_DISABLE\n#define __TIM16_CLK_SLEEP_ENABLE __HAL_RCC_TIM16_CLK_SLEEP_ENABLE\n#define __TIM16_FORCE_RESET __HAL_RCC_TIM16_FORCE_RESET\n#define __TIM16_RELEASE_RESET __HAL_RCC_TIM16_RELEASE_RESET\n#define __TIM17_CLK_DISABLE __HAL_RCC_TIM17_CLK_DISABLE\n#define __TIM17_CLK_ENABLE __HAL_RCC_TIM17_CLK_ENABLE\n#define __TIM17_CLK_SLEEP_DISABLE __HAL_RCC_TIM17_CLK_SLEEP_DISABLE\n#define __TIM17_CLK_SLEEP_ENABLE __HAL_RCC_TIM17_CLK_SLEEP_ENABLE\n#define __TIM17_FORCE_RESET __HAL_RCC_TIM17_FORCE_RESET\n#define __TIM17_RELEASE_RESET __HAL_RCC_TIM17_RELEASE_RESET\n#define __TIM2_CLK_DISABLE __HAL_RCC_TIM2_CLK_DISABLE\n#define __TIM2_CLK_ENABLE __HAL_RCC_TIM2_CLK_ENABLE\n#define __TIM2_CLK_SLEEP_DISABLE __HAL_RCC_TIM2_CLK_SLEEP_DISABLE\n#define __TIM2_CLK_SLEEP_ENABLE __HAL_RCC_TIM2_CLK_SLEEP_ENABLE\n#define __TIM2_FORCE_RESET __HAL_RCC_TIM2_FORCE_RESET\n#define __TIM2_RELEASE_RESET __HAL_RCC_TIM2_RELEASE_RESET\n#define __TIM3_CLK_DISABLE __HAL_RCC_TIM3_CLK_DISABLE\n#define __TIM3_CLK_ENABLE __HAL_RCC_TIM3_CLK_ENABLE\n#define __TIM3_CLK_SLEEP_DISABLE __HAL_RCC_TIM3_CLK_SLEEP_DISABLE\n#define __TIM3_CLK_SLEEP_ENABLE __HAL_RCC_TIM3_CLK_SLEEP_ENABLE\n#define __TIM3_FORCE_RESET __HAL_RCC_TIM3_FORCE_RESET\n#define __TIM3_RELEASE_RESET __HAL_RCC_TIM3_RELEASE_RESET\n#define __TIM4_CLK_DISABLE __HAL_RCC_TIM4_CLK_DISABLE\n#define __TIM4_CLK_ENABLE __HAL_RCC_TIM4_CLK_ENABLE\n#define __TIM4_CLK_SLEEP_DISABLE __HAL_RCC_TIM4_CLK_SLEEP_DISABLE\n#define __TIM4_CLK_SLEEP_ENABLE __HAL_RCC_TIM4_CLK_SLEEP_ENABLE\n#define __TIM4_FORCE_RESET __HAL_RCC_TIM4_FORCE_RESET\n#define __TIM4_RELEASE_RESET __HAL_RCC_TIM4_RELEASE_RESET\n#define __TIM5_CLK_DISABLE __HAL_RCC_TIM5_CLK_DISABLE\n#define __TIM5_CLK_ENABLE __HAL_RCC_TIM5_CLK_ENABLE\n#define __TIM5_CLK_SLEEP_DISABLE __HAL_RCC_TIM5_CLK_SLEEP_DISABLE\n#define __TIM5_CLK_SLEEP_ENABLE __HAL_RCC_TIM5_CLK_SLEEP_ENABLE\n#define __TIM5_FORCE_RESET __HAL_RCC_TIM5_FORCE_RESET\n#define __TIM5_RELEASE_RESET __HAL_RCC_TIM5_RELEASE_RESET\n#define __TIM6_CLK_DISABLE __HAL_RCC_TIM6_CLK_DISABLE\n#define __TIM6_CLK_ENABLE __HAL_RCC_TIM6_CLK_ENABLE\n#define __TIM6_CLK_SLEEP_DISABLE __HAL_RCC_TIM6_CLK_SLEEP_DISABLE\n#define __TIM6_CLK_SLEEP_ENABLE __HAL_RCC_TIM6_CLK_SLEEP_ENABLE\n#define __TIM6_FORCE_RESET __HAL_RCC_TIM6_FORCE_RESET\n#define __TIM6_RELEASE_RESET __HAL_RCC_TIM6_RELEASE_RESET\n#define __TIM7_CLK_DISABLE __HAL_RCC_TIM7_CLK_DISABLE\n#define __TIM7_CLK_ENABLE __HAL_RCC_TIM7_CLK_ENABLE\n#define __TIM7_CLK_SLEEP_DISABLE __HAL_RCC_TIM7_CLK_SLEEP_DISABLE\n#define __TIM7_CLK_SLEEP_ENABLE __HAL_RCC_TIM7_CLK_SLEEP_ENABLE\n#define __TIM7_FORCE_RESET __HAL_RCC_TIM7_FORCE_RESET\n#define __TIM7_RELEASE_RESET __HAL_RCC_TIM7_RELEASE_RESET\n#define __TIM8_CLK_DISABLE __HAL_RCC_TIM8_CLK_DISABLE\n#define __TIM8_CLK_ENABLE __HAL_RCC_TIM8_CLK_ENABLE\n#define __TIM8_CLK_SLEEP_DISABLE __HAL_RCC_TIM8_CLK_SLEEP_DISABLE\n#define __TIM8_CLK_SLEEP_ENABLE __HAL_RCC_TIM8_CLK_SLEEP_ENABLE\n#define __TIM8_FORCE_RESET __HAL_RCC_TIM8_FORCE_RESET\n#define __TIM8_RELEASE_RESET __HAL_RCC_TIM8_RELEASE_RESET\n#define __TIM9_CLK_DISABLE __HAL_RCC_TIM9_CLK_DISABLE\n#define __TIM9_CLK_ENABLE __HAL_RCC_TIM9_CLK_ENABLE\n#define __TIM9_FORCE_RESET __HAL_RCC_TIM9_FORCE_RESET\n#define __TIM9_RELEASE_RESET __HAL_RCC_TIM9_RELEASE_RESET\n#define __TSC_CLK_DISABLE __HAL_RCC_TSC_CLK_DISABLE\n#define __TSC_CLK_ENABLE __HAL_RCC_TSC_CLK_ENABLE\n#define __TSC_CLK_SLEEP_DISABLE __HAL_RCC_TSC_CLK_SLEEP_DISABLE\n#define __TSC_CLK_SLEEP_ENABLE __HAL_RCC_TSC_CLK_SLEEP_ENABLE\n#define __TSC_FORCE_RESET __HAL_RCC_TSC_FORCE_RESET\n#define __TSC_RELEASE_RESET __HAL_RCC_TSC_RELEASE_RESET\n#define __UART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE\n#define __UART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE\n#define __UART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE\n#define __UART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE\n#define __UART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET\n#define __UART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET\n#define __UART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE\n#define __UART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE\n#define __UART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE\n#define __UART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE\n#define __UART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET\n#define __UART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET\n#define __USART1_CLK_DISABLE __HAL_RCC_USART1_CLK_DISABLE\n#define __USART1_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE\n#define __USART1_CLK_SLEEP_DISABLE __HAL_RCC_USART1_CLK_SLEEP_DISABLE\n#define __USART1_CLK_SLEEP_ENABLE __HAL_RCC_USART1_CLK_SLEEP_ENABLE\n#define __USART1_FORCE_RESET __HAL_RCC_USART1_FORCE_RESET\n#define __USART1_RELEASE_RESET __HAL_RCC_USART1_RELEASE_RESET\n#define __USART2_CLK_DISABLE __HAL_RCC_USART2_CLK_DISABLE\n#define __USART2_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE\n#define __USART2_CLK_SLEEP_DISABLE __HAL_RCC_USART2_CLK_SLEEP_DISABLE\n#define __USART2_CLK_SLEEP_ENABLE __HAL_RCC_USART2_CLK_SLEEP_ENABLE\n#define __USART2_FORCE_RESET __HAL_RCC_USART2_FORCE_RESET\n#define __USART2_RELEASE_RESET __HAL_RCC_USART2_RELEASE_RESET\n#define __USART3_CLK_DISABLE __HAL_RCC_USART3_CLK_DISABLE\n#define __USART3_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE\n#define __USART3_CLK_SLEEP_DISABLE __HAL_RCC_USART3_CLK_SLEEP_DISABLE\n#define __USART3_CLK_SLEEP_ENABLE __HAL_RCC_USART3_CLK_SLEEP_ENABLE\n#define __USART3_FORCE_RESET __HAL_RCC_USART3_FORCE_RESET\n#define __USART3_RELEASE_RESET __HAL_RCC_USART3_RELEASE_RESET\n#define __USART4_CLK_DISABLE        __HAL_RCC_UART4_CLK_DISABLE\n#define __USART4_CLK_ENABLE         __HAL_RCC_UART4_CLK_ENABLE\n#define __USART4_CLK_SLEEP_ENABLE   __HAL_RCC_UART4_CLK_SLEEP_ENABLE\n#define __USART4_CLK_SLEEP_DISABLE  __HAL_RCC_UART4_CLK_SLEEP_DISABLE\n#define __USART4_FORCE_RESET        __HAL_RCC_UART4_FORCE_RESET\n#define __USART4_RELEASE_RESET      __HAL_RCC_UART4_RELEASE_RESET\n#define __USART5_CLK_DISABLE        __HAL_RCC_UART5_CLK_DISABLE\n#define __USART5_CLK_ENABLE         __HAL_RCC_UART5_CLK_ENABLE\n#define __USART5_CLK_SLEEP_ENABLE   __HAL_RCC_UART5_CLK_SLEEP_ENABLE\n#define __USART5_CLK_SLEEP_DISABLE  __HAL_RCC_UART5_CLK_SLEEP_DISABLE\n#define __USART5_FORCE_RESET        __HAL_RCC_UART5_FORCE_RESET\n#define __USART5_RELEASE_RESET      __HAL_RCC_UART5_RELEASE_RESET\n#define __USART7_CLK_DISABLE        __HAL_RCC_UART7_CLK_DISABLE\n#define __USART7_CLK_ENABLE         __HAL_RCC_UART7_CLK_ENABLE\n#define __USART7_FORCE_RESET        __HAL_RCC_UART7_FORCE_RESET\n#define __USART7_RELEASE_RESET      __HAL_RCC_UART7_RELEASE_RESET\n#define __USART8_CLK_DISABLE        __HAL_RCC_UART8_CLK_DISABLE\n#define __USART8_CLK_ENABLE         __HAL_RCC_UART8_CLK_ENABLE\n#define __USART8_FORCE_RESET        __HAL_RCC_UART8_FORCE_RESET\n#define __USART8_RELEASE_RESET      __HAL_RCC_UART8_RELEASE_RESET\n#define __USB_CLK_DISABLE         __HAL_RCC_USB_CLK_DISABLE\n#define __USB_CLK_ENABLE          __HAL_RCC_USB_CLK_ENABLE\n#define __USB_FORCE_RESET         __HAL_RCC_USB_FORCE_RESET\n#define __USB_CLK_SLEEP_ENABLE    __HAL_RCC_USB_CLK_SLEEP_ENABLE\n#define __USB_CLK_SLEEP_DISABLE   __HAL_RCC_USB_CLK_SLEEP_DISABLE\n#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE\n#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE\n#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET\n\n#if defined(STM32H7)\n#define __HAL_RCC_WWDG_CLK_DISABLE   __HAL_RCC_WWDG1_CLK_DISABLE\n#define __HAL_RCC_WWDG_CLK_ENABLE   __HAL_RCC_WWDG1_CLK_ENABLE\n#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE  __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE\n#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE  __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE\n\n#define __HAL_RCC_WWDG_FORCE_RESET    ((void)0U)  /* Not available on the STM32H7*/\n#define __HAL_RCC_WWDG_RELEASE_RESET ((void)0U) /* Not available on the STM32H7*/\n\n\n#define  __HAL_RCC_WWDG_IS_CLK_ENABLED    __HAL_RCC_WWDG1_IS_CLK_ENABLED\n#define  __HAL_RCC_WWDG_IS_CLK_DISABLED  __HAL_RCC_WWDG1_IS_CLK_DISABLED\n#endif\n\n#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE\n#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE\n#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE\n#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE\n#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET\n#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET\n\n#define __TIM21_CLK_ENABLE   __HAL_RCC_TIM21_CLK_ENABLE\n#define __TIM21_CLK_DISABLE   __HAL_RCC_TIM21_CLK_DISABLE\n#define __TIM21_FORCE_RESET   __HAL_RCC_TIM21_FORCE_RESET\n#define __TIM21_RELEASE_RESET  __HAL_RCC_TIM21_RELEASE_RESET\n#define __TIM21_CLK_SLEEP_ENABLE   __HAL_RCC_TIM21_CLK_SLEEP_ENABLE\n#define __TIM21_CLK_SLEEP_DISABLE   __HAL_RCC_TIM21_CLK_SLEEP_DISABLE\n#define __TIM22_CLK_ENABLE   __HAL_RCC_TIM22_CLK_ENABLE\n#define __TIM22_CLK_DISABLE   __HAL_RCC_TIM22_CLK_DISABLE\n#define __TIM22_FORCE_RESET   __HAL_RCC_TIM22_FORCE_RESET\n#define __TIM22_RELEASE_RESET  __HAL_RCC_TIM22_RELEASE_RESET\n#define __TIM22_CLK_SLEEP_ENABLE   __HAL_RCC_TIM22_CLK_SLEEP_ENABLE\n#define __TIM22_CLK_SLEEP_DISABLE   __HAL_RCC_TIM22_CLK_SLEEP_DISABLE\n#define __CRS_CLK_DISABLE __HAL_RCC_CRS_CLK_DISABLE\n#define __CRS_CLK_ENABLE __HAL_RCC_CRS_CLK_ENABLE\n#define __CRS_CLK_SLEEP_DISABLE __HAL_RCC_CRS_CLK_SLEEP_DISABLE\n#define __CRS_CLK_SLEEP_ENABLE __HAL_RCC_CRS_CLK_SLEEP_ENABLE\n#define __CRS_FORCE_RESET __HAL_RCC_CRS_FORCE_RESET\n#define __CRS_RELEASE_RESET __HAL_RCC_CRS_RELEASE_RESET\n#define __RCC_BACKUPRESET_FORCE __HAL_RCC_BACKUPRESET_FORCE\n#define __RCC_BACKUPRESET_RELEASE __HAL_RCC_BACKUPRESET_RELEASE\n\n#define __USB_OTG_FS_FORCE_RESET  __HAL_RCC_USB_OTG_FS_FORCE_RESET\n#define __USB_OTG_FS_RELEASE_RESET  __HAL_RCC_USB_OTG_FS_RELEASE_RESET\n#define __USB_OTG_FS_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE\n#define __USB_OTG_FS_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE\n#define __USB_OTG_HS_CLK_DISABLE  __HAL_RCC_USB_OTG_HS_CLK_DISABLE\n#define __USB_OTG_HS_CLK_ENABLE          __HAL_RCC_USB_OTG_HS_CLK_ENABLE\n#define __USB_OTG_HS_ULPI_CLK_ENABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE\n#define __USB_OTG_HS_ULPI_CLK_DISABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE\n#define __TIM9_CLK_SLEEP_ENABLE          __HAL_RCC_TIM9_CLK_SLEEP_ENABLE\n#define __TIM9_CLK_SLEEP_DISABLE  __HAL_RCC_TIM9_CLK_SLEEP_DISABLE\n#define __TIM10_CLK_SLEEP_ENABLE  __HAL_RCC_TIM10_CLK_SLEEP_ENABLE\n#define __TIM10_CLK_SLEEP_DISABLE  __HAL_RCC_TIM10_CLK_SLEEP_DISABLE\n#define __TIM11_CLK_SLEEP_ENABLE  __HAL_RCC_TIM11_CLK_SLEEP_ENABLE\n#define __TIM11_CLK_SLEEP_DISABLE  __HAL_RCC_TIM11_CLK_SLEEP_DISABLE\n#define __ETHMACPTP_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE\n#define __ETHMACPTP_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE\n#define __ETHMACPTP_CLK_ENABLE          __HAL_RCC_ETHMACPTP_CLK_ENABLE\n#define __ETHMACPTP_CLK_DISABLE          __HAL_RCC_ETHMACPTP_CLK_DISABLE\n#define __HASH_CLK_ENABLE          __HAL_RCC_HASH_CLK_ENABLE\n#define __HASH_FORCE_RESET          __HAL_RCC_HASH_FORCE_RESET\n#define __HASH_RELEASE_RESET          __HAL_RCC_HASH_RELEASE_RESET\n#define __HASH_CLK_SLEEP_ENABLE          __HAL_RCC_HASH_CLK_SLEEP_ENABLE\n#define __HASH_CLK_SLEEP_DISABLE  __HAL_RCC_HASH_CLK_SLEEP_DISABLE\n#define __HASH_CLK_DISABLE            __HAL_RCC_HASH_CLK_DISABLE\n#define __SPI5_CLK_ENABLE          __HAL_RCC_SPI5_CLK_ENABLE\n#define __SPI5_CLK_DISABLE              __HAL_RCC_SPI5_CLK_DISABLE\n#define __SPI5_FORCE_RESET          __HAL_RCC_SPI5_FORCE_RESET\n#define __SPI5_RELEASE_RESET          __HAL_RCC_SPI5_RELEASE_RESET\n#define __SPI5_CLK_SLEEP_ENABLE          __HAL_RCC_SPI5_CLK_SLEEP_ENABLE\n#define __SPI5_CLK_SLEEP_DISABLE  __HAL_RCC_SPI5_CLK_SLEEP_DISABLE\n#define __SPI6_CLK_ENABLE          __HAL_RCC_SPI6_CLK_ENABLE\n#define __SPI6_CLK_DISABLE          __HAL_RCC_SPI6_CLK_DISABLE\n#define __SPI6_FORCE_RESET          __HAL_RCC_SPI6_FORCE_RESET\n#define __SPI6_RELEASE_RESET         __HAL_RCC_SPI6_RELEASE_RESET\n#define __SPI6_CLK_SLEEP_ENABLE          __HAL_RCC_SPI6_CLK_SLEEP_ENABLE\n#define __SPI6_CLK_SLEEP_DISABLE  __HAL_RCC_SPI6_CLK_SLEEP_DISABLE\n#define __LTDC_CLK_ENABLE          __HAL_RCC_LTDC_CLK_ENABLE\n#define __LTDC_CLK_DISABLE          __HAL_RCC_LTDC_CLK_DISABLE\n#define __LTDC_FORCE_RESET          __HAL_RCC_LTDC_FORCE_RESET\n#define __LTDC_RELEASE_RESET          __HAL_RCC_LTDC_RELEASE_RESET\n#define __LTDC_CLK_SLEEP_ENABLE          __HAL_RCC_LTDC_CLK_SLEEP_ENABLE\n#define __ETHMAC_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE\n#define __ETHMAC_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE\n#define __ETHMACTX_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE\n#define __ETHMACTX_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE\n#define __ETHMACRX_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE\n#define __ETHMACRX_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE\n#define __TIM12_CLK_SLEEP_ENABLE  __HAL_RCC_TIM12_CLK_SLEEP_ENABLE\n#define __TIM12_CLK_SLEEP_DISABLE  __HAL_RCC_TIM12_CLK_SLEEP_DISABLE\n#define __TIM13_CLK_SLEEP_ENABLE  __HAL_RCC_TIM13_CLK_SLEEP_ENABLE\n#define __TIM13_CLK_SLEEP_DISABLE  __HAL_RCC_TIM13_CLK_SLEEP_DISABLE\n#define __TIM14_CLK_SLEEP_ENABLE  __HAL_RCC_TIM14_CLK_SLEEP_ENABLE\n#define __TIM14_CLK_SLEEP_DISABLE  __HAL_RCC_TIM14_CLK_SLEEP_DISABLE\n#define __BKPSRAM_CLK_ENABLE          __HAL_RCC_BKPSRAM_CLK_ENABLE\n#define __BKPSRAM_CLK_DISABLE          __HAL_RCC_BKPSRAM_CLK_DISABLE\n#define __BKPSRAM_CLK_SLEEP_ENABLE  __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE\n#define __BKPSRAM_CLK_SLEEP_DISABLE  __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE\n#define __CCMDATARAMEN_CLK_ENABLE  __HAL_RCC_CCMDATARAMEN_CLK_ENABLE\n#define __CCMDATARAMEN_CLK_DISABLE  __HAL_RCC_CCMDATARAMEN_CLK_DISABLE\n#define __USART6_CLK_ENABLE          __HAL_RCC_USART6_CLK_ENABLE\n#define __USART6_CLK_DISABLE          __HAL_RCC_USART6_CLK_DISABLE\n#define __USART6_FORCE_RESET        __HAL_RCC_USART6_FORCE_RESET\n#define __USART6_RELEASE_RESET        __HAL_RCC_USART6_RELEASE_RESET\n#define __USART6_CLK_SLEEP_ENABLE  __HAL_RCC_USART6_CLK_SLEEP_ENABLE\n#define __USART6_CLK_SLEEP_DISABLE  __HAL_RCC_USART6_CLK_SLEEP_DISABLE\n#define __SPI4_CLK_ENABLE          __HAL_RCC_SPI4_CLK_ENABLE\n#define __SPI4_CLK_DISABLE          __HAL_RCC_SPI4_CLK_DISABLE\n#define __SPI4_FORCE_RESET          __HAL_RCC_SPI4_FORCE_RESET\n#define __SPI4_RELEASE_RESET        __HAL_RCC_SPI4_RELEASE_RESET\n#define __SPI4_CLK_SLEEP_ENABLE   __HAL_RCC_SPI4_CLK_SLEEP_ENABLE\n#define __SPI4_CLK_SLEEP_DISABLE  __HAL_RCC_SPI4_CLK_SLEEP_DISABLE\n#define __GPIOI_CLK_ENABLE          __HAL_RCC_GPIOI_CLK_ENABLE\n#define __GPIOI_CLK_DISABLE          __HAL_RCC_GPIOI_CLK_DISABLE\n#define __GPIOI_FORCE_RESET          __HAL_RCC_GPIOI_FORCE_RESET\n#define __GPIOI_RELEASE_RESET          __HAL_RCC_GPIOI_RELEASE_RESET\n#define __GPIOI_CLK_SLEEP_ENABLE  __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE\n#define __GPIOI_CLK_SLEEP_DISABLE  __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE\n#define __GPIOJ_CLK_ENABLE          __HAL_RCC_GPIOJ_CLK_ENABLE\n#define __GPIOJ_CLK_DISABLE          __HAL_RCC_GPIOJ_CLK_DISABLE\n#define __GPIOJ_FORCE_RESET         __HAL_RCC_GPIOJ_FORCE_RESET\n#define __GPIOJ_RELEASE_RESET          __HAL_RCC_GPIOJ_RELEASE_RESET\n#define __GPIOJ_CLK_SLEEP_ENABLE  __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE\n#define __GPIOJ_CLK_SLEEP_DISABLE  __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE\n#define __GPIOK_CLK_ENABLE          __HAL_RCC_GPIOK_CLK_ENABLE\n#define __GPIOK_CLK_DISABLE          __HAL_RCC_GPIOK_CLK_DISABLE\n#define __GPIOK_RELEASE_RESET          __HAL_RCC_GPIOK_RELEASE_RESET\n#define __GPIOK_CLK_SLEEP_ENABLE  __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE\n#define __GPIOK_CLK_SLEEP_DISABLE  __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE\n#define __ETH_CLK_ENABLE          __HAL_RCC_ETH_CLK_ENABLE\n#define __ETH_CLK_DISABLE          __HAL_RCC_ETH_CLK_DISABLE\n#define __DCMI_CLK_ENABLE          __HAL_RCC_DCMI_CLK_ENABLE\n#define __DCMI_CLK_DISABLE          __HAL_RCC_DCMI_CLK_DISABLE\n#define __DCMI_FORCE_RESET          __HAL_RCC_DCMI_FORCE_RESET\n#define __DCMI_RELEASE_RESET          __HAL_RCC_DCMI_RELEASE_RESET\n#define __DCMI_CLK_SLEEP_ENABLE   __HAL_RCC_DCMI_CLK_SLEEP_ENABLE\n#define __DCMI_CLK_SLEEP_DISABLE  __HAL_RCC_DCMI_CLK_SLEEP_DISABLE\n#define __UART7_CLK_ENABLE          __HAL_RCC_UART7_CLK_ENABLE\n#define __UART7_CLK_DISABLE          __HAL_RCC_UART7_CLK_DISABLE\n#define __UART7_RELEASE_RESET       __HAL_RCC_UART7_RELEASE_RESET\n#define __UART7_FORCE_RESET       __HAL_RCC_UART7_FORCE_RESET\n#define __UART7_CLK_SLEEP_ENABLE  __HAL_RCC_UART7_CLK_SLEEP_ENABLE\n#define __UART7_CLK_SLEEP_DISABLE  __HAL_RCC_UART7_CLK_SLEEP_DISABLE\n#define __UART8_CLK_ENABLE          __HAL_RCC_UART8_CLK_ENABLE\n#define __UART8_CLK_DISABLE          __HAL_RCC_UART8_CLK_DISABLE\n#define __UART8_FORCE_RESET          __HAL_RCC_UART8_FORCE_RESET\n#define __UART8_RELEASE_RESET          __HAL_RCC_UART8_RELEASE_RESET\n#define __UART8_CLK_SLEEP_ENABLE  __HAL_RCC_UART8_CLK_SLEEP_ENABLE\n#define __UART8_CLK_SLEEP_DISABLE  __HAL_RCC_UART8_CLK_SLEEP_DISABLE\n#define __OTGHS_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE\n#define __OTGHS_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE\n#define __OTGHS_FORCE_RESET          __HAL_RCC_USB_OTG_HS_FORCE_RESET\n#define __OTGHS_RELEASE_RESET          __HAL_RCC_USB_OTG_HS_RELEASE_RESET\n#define __OTGHSULPI_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE\n#define __OTGHSULPI_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE\n#define __HAL_RCC_OTGHS_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE\n#define __HAL_RCC_OTGHS_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE\n#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED\n#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED\n#define __HAL_RCC_OTGHS_FORCE_RESET          __HAL_RCC_USB_OTG_HS_FORCE_RESET\n#define __HAL_RCC_OTGHS_RELEASE_RESET          __HAL_RCC_USB_OTG_HS_RELEASE_RESET\n#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE      __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE\n#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE     __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE\n#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_ENABLED  __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED\n#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED\n#define __SRAM3_CLK_SLEEP_ENABLE       __HAL_RCC_SRAM3_CLK_SLEEP_ENABLE\n#define __CAN2_CLK_SLEEP_ENABLE        __HAL_RCC_CAN2_CLK_SLEEP_ENABLE\n#define __CAN2_CLK_SLEEP_DISABLE       __HAL_RCC_CAN2_CLK_SLEEP_DISABLE\n#define __DAC_CLK_SLEEP_ENABLE         __HAL_RCC_DAC_CLK_SLEEP_ENABLE\n#define __DAC_CLK_SLEEP_DISABLE        __HAL_RCC_DAC_CLK_SLEEP_DISABLE\n#define __ADC2_CLK_SLEEP_ENABLE        __HAL_RCC_ADC2_CLK_SLEEP_ENABLE\n#define __ADC2_CLK_SLEEP_DISABLE       __HAL_RCC_ADC2_CLK_SLEEP_DISABLE\n#define __ADC3_CLK_SLEEP_ENABLE        __HAL_RCC_ADC3_CLK_SLEEP_ENABLE\n#define __ADC3_CLK_SLEEP_DISABLE       __HAL_RCC_ADC3_CLK_SLEEP_DISABLE\n#define __FSMC_FORCE_RESET             __HAL_RCC_FSMC_FORCE_RESET\n#define __FSMC_RELEASE_RESET           __HAL_RCC_FSMC_RELEASE_RESET\n#define __FSMC_CLK_SLEEP_ENABLE        __HAL_RCC_FSMC_CLK_SLEEP_ENABLE\n#define __FSMC_CLK_SLEEP_DISABLE       __HAL_RCC_FSMC_CLK_SLEEP_DISABLE\n#define __SDIO_FORCE_RESET             __HAL_RCC_SDIO_FORCE_RESET\n#define __SDIO_RELEASE_RESET           __HAL_RCC_SDIO_RELEASE_RESET\n#define __SDIO_CLK_SLEEP_DISABLE       __HAL_RCC_SDIO_CLK_SLEEP_DISABLE\n#define __SDIO_CLK_SLEEP_ENABLE        __HAL_RCC_SDIO_CLK_SLEEP_ENABLE\n#define __DMA2D_CLK_ENABLE             __HAL_RCC_DMA2D_CLK_ENABLE\n#define __DMA2D_CLK_DISABLE            __HAL_RCC_DMA2D_CLK_DISABLE\n#define __DMA2D_FORCE_RESET            __HAL_RCC_DMA2D_FORCE_RESET\n#define __DMA2D_RELEASE_RESET          __HAL_RCC_DMA2D_RELEASE_RESET\n#define __DMA2D_CLK_SLEEP_ENABLE       __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE\n#define __DMA2D_CLK_SLEEP_DISABLE      __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE\n\n/* alias define maintained for legacy */\n#define __HAL_RCC_OTGFS_FORCE_RESET    __HAL_RCC_USB_OTG_FS_FORCE_RESET\n#define __HAL_RCC_OTGFS_RELEASE_RESET  __HAL_RCC_USB_OTG_FS_RELEASE_RESET\n\n#define __ADC12_CLK_ENABLE          __HAL_RCC_ADC12_CLK_ENABLE\n#define __ADC12_CLK_DISABLE         __HAL_RCC_ADC12_CLK_DISABLE\n#define __ADC34_CLK_ENABLE          __HAL_RCC_ADC34_CLK_ENABLE\n#define __ADC34_CLK_DISABLE         __HAL_RCC_ADC34_CLK_DISABLE\n#define __DAC2_CLK_ENABLE           __HAL_RCC_DAC2_CLK_ENABLE\n#define __DAC2_CLK_DISABLE          __HAL_RCC_DAC2_CLK_DISABLE\n#define __TIM18_CLK_ENABLE          __HAL_RCC_TIM18_CLK_ENABLE\n#define __TIM18_CLK_DISABLE         __HAL_RCC_TIM18_CLK_DISABLE\n#define __TIM19_CLK_ENABLE          __HAL_RCC_TIM19_CLK_ENABLE\n#define __TIM19_CLK_DISABLE         __HAL_RCC_TIM19_CLK_DISABLE\n#define __TIM20_CLK_ENABLE          __HAL_RCC_TIM20_CLK_ENABLE\n#define __TIM20_CLK_DISABLE         __HAL_RCC_TIM20_CLK_DISABLE\n#define __HRTIM1_CLK_ENABLE         __HAL_RCC_HRTIM1_CLK_ENABLE\n#define __HRTIM1_CLK_DISABLE        __HAL_RCC_HRTIM1_CLK_DISABLE\n#define __SDADC1_CLK_ENABLE         __HAL_RCC_SDADC1_CLK_ENABLE\n#define __SDADC2_CLK_ENABLE         __HAL_RCC_SDADC2_CLK_ENABLE\n#define __SDADC3_CLK_ENABLE         __HAL_RCC_SDADC3_CLK_ENABLE\n#define __SDADC1_CLK_DISABLE        __HAL_RCC_SDADC1_CLK_DISABLE\n#define __SDADC2_CLK_DISABLE        __HAL_RCC_SDADC2_CLK_DISABLE\n#define __SDADC3_CLK_DISABLE        __HAL_RCC_SDADC3_CLK_DISABLE\n\n#define __ADC12_FORCE_RESET         __HAL_RCC_ADC12_FORCE_RESET\n#define __ADC12_RELEASE_RESET       __HAL_RCC_ADC12_RELEASE_RESET\n#define __ADC34_FORCE_RESET         __HAL_RCC_ADC34_FORCE_RESET\n#define __ADC34_RELEASE_RESET       __HAL_RCC_ADC34_RELEASE_RESET\n#define __DAC2_FORCE_RESET          __HAL_RCC_DAC2_FORCE_RESET\n#define __DAC2_RELEASE_RESET        __HAL_RCC_DAC2_RELEASE_RESET\n#define __TIM18_FORCE_RESET         __HAL_RCC_TIM18_FORCE_RESET\n#define __TIM18_RELEASE_RESET       __HAL_RCC_TIM18_RELEASE_RESET\n#define __TIM19_FORCE_RESET         __HAL_RCC_TIM19_FORCE_RESET\n#define __TIM19_RELEASE_RESET       __HAL_RCC_TIM19_RELEASE_RESET\n#define __TIM20_FORCE_RESET         __HAL_RCC_TIM20_FORCE_RESET\n#define __TIM20_RELEASE_RESET       __HAL_RCC_TIM20_RELEASE_RESET\n#define __HRTIM1_FORCE_RESET        __HAL_RCC_HRTIM1_FORCE_RESET\n#define __HRTIM1_RELEASE_RESET      __HAL_RCC_HRTIM1_RELEASE_RESET\n#define __SDADC1_FORCE_RESET        __HAL_RCC_SDADC1_FORCE_RESET\n#define __SDADC2_FORCE_RESET        __HAL_RCC_SDADC2_FORCE_RESET\n#define __SDADC3_FORCE_RESET        __HAL_RCC_SDADC3_FORCE_RESET\n#define __SDADC1_RELEASE_RESET      __HAL_RCC_SDADC1_RELEASE_RESET\n#define __SDADC2_RELEASE_RESET      __HAL_RCC_SDADC2_RELEASE_RESET\n#define __SDADC3_RELEASE_RESET      __HAL_RCC_SDADC3_RELEASE_RESET\n\n#define __ADC1_IS_CLK_ENABLED       __HAL_RCC_ADC1_IS_CLK_ENABLED\n#define __ADC1_IS_CLK_DISABLED      __HAL_RCC_ADC1_IS_CLK_DISABLED\n#define __ADC12_IS_CLK_ENABLED      __HAL_RCC_ADC12_IS_CLK_ENABLED\n#define __ADC12_IS_CLK_DISABLED     __HAL_RCC_ADC12_IS_CLK_DISABLED\n#define __ADC34_IS_CLK_ENABLED      __HAL_RCC_ADC34_IS_CLK_ENABLED\n#define __ADC34_IS_CLK_DISABLED     __HAL_RCC_ADC34_IS_CLK_DISABLED\n#define __CEC_IS_CLK_ENABLED        __HAL_RCC_CEC_IS_CLK_ENABLED\n#define __CEC_IS_CLK_DISABLED       __HAL_RCC_CEC_IS_CLK_DISABLED\n#define __CRC_IS_CLK_ENABLED        __HAL_RCC_CRC_IS_CLK_ENABLED\n#define __CRC_IS_CLK_DISABLED       __HAL_RCC_CRC_IS_CLK_DISABLED\n#define __DAC1_IS_CLK_ENABLED       __HAL_RCC_DAC1_IS_CLK_ENABLED\n#define __DAC1_IS_CLK_DISABLED      __HAL_RCC_DAC1_IS_CLK_DISABLED\n#define __DAC2_IS_CLK_ENABLED       __HAL_RCC_DAC2_IS_CLK_ENABLED\n#define __DAC2_IS_CLK_DISABLED      __HAL_RCC_DAC2_IS_CLK_DISABLED\n#define __DMA1_IS_CLK_ENABLED       __HAL_RCC_DMA1_IS_CLK_ENABLED\n#define __DMA1_IS_CLK_DISABLED      __HAL_RCC_DMA1_IS_CLK_DISABLED\n#define __DMA2_IS_CLK_ENABLED       __HAL_RCC_DMA2_IS_CLK_ENABLED\n#define __DMA2_IS_CLK_DISABLED      __HAL_RCC_DMA2_IS_CLK_DISABLED\n#define __FLITF_IS_CLK_ENABLED      __HAL_RCC_FLITF_IS_CLK_ENABLED\n#define __FLITF_IS_CLK_DISABLED     __HAL_RCC_FLITF_IS_CLK_DISABLED\n#define __FMC_IS_CLK_ENABLED        __HAL_RCC_FMC_IS_CLK_ENABLED\n#define __FMC_IS_CLK_DISABLED       __HAL_RCC_FMC_IS_CLK_DISABLED\n#define __GPIOA_IS_CLK_ENABLED      __HAL_RCC_GPIOA_IS_CLK_ENABLED\n#define __GPIOA_IS_CLK_DISABLED     __HAL_RCC_GPIOA_IS_CLK_DISABLED\n#define __GPIOB_IS_CLK_ENABLED      __HAL_RCC_GPIOB_IS_CLK_ENABLED\n#define __GPIOB_IS_CLK_DISABLED     __HAL_RCC_GPIOB_IS_CLK_DISABLED\n#define __GPIOC_IS_CLK_ENABLED      __HAL_RCC_GPIOC_IS_CLK_ENABLED\n#define __GPIOC_IS_CLK_DISABLED     __HAL_RCC_GPIOC_IS_CLK_DISABLED\n#define __GPIOD_IS_CLK_ENABLED      __HAL_RCC_GPIOD_IS_CLK_ENABLED\n#define __GPIOD_IS_CLK_DISABLED     __HAL_RCC_GPIOD_IS_CLK_DISABLED\n#define __GPIOE_IS_CLK_ENABLED      __HAL_RCC_GPIOE_IS_CLK_ENABLED\n#define __GPIOE_IS_CLK_DISABLED     __HAL_RCC_GPIOE_IS_CLK_DISABLED\n#define __GPIOF_IS_CLK_ENABLED      __HAL_RCC_GPIOF_IS_CLK_ENABLED\n#define __GPIOF_IS_CLK_DISABLED     __HAL_RCC_GPIOF_IS_CLK_DISABLED\n#define __GPIOG_IS_CLK_ENABLED      __HAL_RCC_GPIOG_IS_CLK_ENABLED\n#define __GPIOG_IS_CLK_DISABLED     __HAL_RCC_GPIOG_IS_CLK_DISABLED\n#define __GPIOH_IS_CLK_ENABLED      __HAL_RCC_GPIOH_IS_CLK_ENABLED\n#define __GPIOH_IS_CLK_DISABLED     __HAL_RCC_GPIOH_IS_CLK_DISABLED\n#define __HRTIM1_IS_CLK_ENABLED     __HAL_RCC_HRTIM1_IS_CLK_ENABLED\n#define __HRTIM1_IS_CLK_DISABLED    __HAL_RCC_HRTIM1_IS_CLK_DISABLED\n#define __I2C1_IS_CLK_ENABLED       __HAL_RCC_I2C1_IS_CLK_ENABLED\n#define __I2C1_IS_CLK_DISABLED      __HAL_RCC_I2C1_IS_CLK_DISABLED\n#define __I2C2_IS_CLK_ENABLED       __HAL_RCC_I2C2_IS_CLK_ENABLED\n#define __I2C2_IS_CLK_DISABLED      __HAL_RCC_I2C2_IS_CLK_DISABLED\n#define __I2C3_IS_CLK_ENABLED       __HAL_RCC_I2C3_IS_CLK_ENABLED\n#define __I2C3_IS_CLK_DISABLED      __HAL_RCC_I2C3_IS_CLK_DISABLED\n#define __PWR_IS_CLK_ENABLED        __HAL_RCC_PWR_IS_CLK_ENABLED\n#define __PWR_IS_CLK_DISABLED       __HAL_RCC_PWR_IS_CLK_DISABLED\n#define __SYSCFG_IS_CLK_ENABLED     __HAL_RCC_SYSCFG_IS_CLK_ENABLED\n#define __SYSCFG_IS_CLK_DISABLED    __HAL_RCC_SYSCFG_IS_CLK_DISABLED\n#define __SPI1_IS_CLK_ENABLED       __HAL_RCC_SPI1_IS_CLK_ENABLED\n#define __SPI1_IS_CLK_DISABLED      __HAL_RCC_SPI1_IS_CLK_DISABLED\n#define __SPI2_IS_CLK_ENABLED       __HAL_RCC_SPI2_IS_CLK_ENABLED\n#define __SPI2_IS_CLK_DISABLED      __HAL_RCC_SPI2_IS_CLK_DISABLED\n#define __SPI3_IS_CLK_ENABLED       __HAL_RCC_SPI3_IS_CLK_ENABLED\n#define __SPI3_IS_CLK_DISABLED      __HAL_RCC_SPI3_IS_CLK_DISABLED\n#define __SPI4_IS_CLK_ENABLED       __HAL_RCC_SPI4_IS_CLK_ENABLED\n#define __SPI4_IS_CLK_DISABLED      __HAL_RCC_SPI4_IS_CLK_DISABLED\n#define __SDADC1_IS_CLK_ENABLED     __HAL_RCC_SDADC1_IS_CLK_ENABLED\n#define __SDADC1_IS_CLK_DISABLED    __HAL_RCC_SDADC1_IS_CLK_DISABLED\n#define __SDADC2_IS_CLK_ENABLED     __HAL_RCC_SDADC2_IS_CLK_ENABLED\n#define __SDADC2_IS_CLK_DISABLED    __HAL_RCC_SDADC2_IS_CLK_DISABLED\n#define __SDADC3_IS_CLK_ENABLED     __HAL_RCC_SDADC3_IS_CLK_ENABLED\n#define __SDADC3_IS_CLK_DISABLED    __HAL_RCC_SDADC3_IS_CLK_DISABLED\n#define __SRAM_IS_CLK_ENABLED       __HAL_RCC_SRAM_IS_CLK_ENABLED\n#define __SRAM_IS_CLK_DISABLED      __HAL_RCC_SRAM_IS_CLK_DISABLED\n#define __TIM1_IS_CLK_ENABLED       __HAL_RCC_TIM1_IS_CLK_ENABLED\n#define __TIM1_IS_CLK_DISABLED      __HAL_RCC_TIM1_IS_CLK_DISABLED\n#define __TIM2_IS_CLK_ENABLED       __HAL_RCC_TIM2_IS_CLK_ENABLED\n#define __TIM2_IS_CLK_DISABLED      __HAL_RCC_TIM2_IS_CLK_DISABLED\n#define __TIM3_IS_CLK_ENABLED       __HAL_RCC_TIM3_IS_CLK_ENABLED\n#define __TIM3_IS_CLK_DISABLED      __HAL_RCC_TIM3_IS_CLK_DISABLED\n#define __TIM4_IS_CLK_ENABLED       __HAL_RCC_TIM4_IS_CLK_ENABLED\n#define __TIM4_IS_CLK_DISABLED      __HAL_RCC_TIM4_IS_CLK_DISABLED\n#define __TIM5_IS_CLK_ENABLED       __HAL_RCC_TIM5_IS_CLK_ENABLED\n#define __TIM5_IS_CLK_DISABLED      __HAL_RCC_TIM5_IS_CLK_DISABLED\n#define __TIM6_IS_CLK_ENABLED       __HAL_RCC_TIM6_IS_CLK_ENABLED\n#define __TIM6_IS_CLK_DISABLED      __HAL_RCC_TIM6_IS_CLK_DISABLED\n#define __TIM7_IS_CLK_ENABLED       __HAL_RCC_TIM7_IS_CLK_ENABLED\n#define __TIM7_IS_CLK_DISABLED      __HAL_RCC_TIM7_IS_CLK_DISABLED\n#define __TIM8_IS_CLK_ENABLED       __HAL_RCC_TIM8_IS_CLK_ENABLED\n#define __TIM8_IS_CLK_DISABLED      __HAL_RCC_TIM8_IS_CLK_DISABLED\n#define __TIM12_IS_CLK_ENABLED      __HAL_RCC_TIM12_IS_CLK_ENABLED\n#define __TIM12_IS_CLK_DISABLED     __HAL_RCC_TIM12_IS_CLK_DISABLED\n#define __TIM13_IS_CLK_ENABLED      __HAL_RCC_TIM13_IS_CLK_ENABLED\n#define __TIM13_IS_CLK_DISABLED     __HAL_RCC_TIM13_IS_CLK_DISABLED\n#define __TIM14_IS_CLK_ENABLED      __HAL_RCC_TIM14_IS_CLK_ENABLED\n#define __TIM14_IS_CLK_DISABLED     __HAL_RCC_TIM14_IS_CLK_DISABLED\n#define __TIM15_IS_CLK_ENABLED      __HAL_RCC_TIM15_IS_CLK_ENABLED\n#define __TIM15_IS_CLK_DISABLED     __HAL_RCC_TIM15_IS_CLK_DISABLED\n#define __TIM16_IS_CLK_ENABLED      __HAL_RCC_TIM16_IS_CLK_ENABLED\n#define __TIM16_IS_CLK_DISABLED     __HAL_RCC_TIM16_IS_CLK_DISABLED\n#define __TIM17_IS_CLK_ENABLED      __HAL_RCC_TIM17_IS_CLK_ENABLED\n#define __TIM17_IS_CLK_DISABLED     __HAL_RCC_TIM17_IS_CLK_DISABLED\n#define __TIM18_IS_CLK_ENABLED      __HAL_RCC_TIM18_IS_CLK_ENABLED\n#define __TIM18_IS_CLK_DISABLED     __HAL_RCC_TIM18_IS_CLK_DISABLED\n#define __TIM19_IS_CLK_ENABLED      __HAL_RCC_TIM19_IS_CLK_ENABLED\n#define __TIM19_IS_CLK_DISABLED     __HAL_RCC_TIM19_IS_CLK_DISABLED\n#define __TIM20_IS_CLK_ENABLED      __HAL_RCC_TIM20_IS_CLK_ENABLED\n#define __TIM20_IS_CLK_DISABLED     __HAL_RCC_TIM20_IS_CLK_DISABLED\n#define __TSC_IS_CLK_ENABLED        __HAL_RCC_TSC_IS_CLK_ENABLED\n#define __TSC_IS_CLK_DISABLED       __HAL_RCC_TSC_IS_CLK_DISABLED\n#define __UART4_IS_CLK_ENABLED      __HAL_RCC_UART4_IS_CLK_ENABLED\n#define __UART4_IS_CLK_DISABLED     __HAL_RCC_UART4_IS_CLK_DISABLED\n#define __UART5_IS_CLK_ENABLED      __HAL_RCC_UART5_IS_CLK_ENABLED\n#define __UART5_IS_CLK_DISABLED     __HAL_RCC_UART5_IS_CLK_DISABLED\n#define __USART1_IS_CLK_ENABLED     __HAL_RCC_USART1_IS_CLK_ENABLED\n#define __USART1_IS_CLK_DISABLED    __HAL_RCC_USART1_IS_CLK_DISABLED\n#define __USART2_IS_CLK_ENABLED     __HAL_RCC_USART2_IS_CLK_ENABLED\n#define __USART2_IS_CLK_DISABLED    __HAL_RCC_USART2_IS_CLK_DISABLED\n#define __USART3_IS_CLK_ENABLED     __HAL_RCC_USART3_IS_CLK_ENABLED\n#define __USART3_IS_CLK_DISABLED    __HAL_RCC_USART3_IS_CLK_DISABLED\n#define __USB_IS_CLK_ENABLED        __HAL_RCC_USB_IS_CLK_ENABLED\n#define __USB_IS_CLK_DISABLED       __HAL_RCC_USB_IS_CLK_DISABLED\n#define __WWDG_IS_CLK_ENABLED       __HAL_RCC_WWDG_IS_CLK_ENABLED\n#define __WWDG_IS_CLK_DISABLED      __HAL_RCC_WWDG_IS_CLK_DISABLED\n\n#if defined(STM32L1)\n#define __HAL_RCC_CRYP_CLK_DISABLE         __HAL_RCC_AES_CLK_DISABLE\n#define __HAL_RCC_CRYP_CLK_ENABLE          __HAL_RCC_AES_CLK_ENABLE\n#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE   __HAL_RCC_AES_CLK_SLEEP_DISABLE\n#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE    __HAL_RCC_AES_CLK_SLEEP_ENABLE\n#define __HAL_RCC_CRYP_FORCE_RESET         __HAL_RCC_AES_FORCE_RESET\n#define __HAL_RCC_CRYP_RELEASE_RESET       __HAL_RCC_AES_RELEASE_RESET\n#endif /* STM32L1 */\n\n#if defined(STM32F4)\n#define __HAL_RCC_SDMMC1_FORCE_RESET       __HAL_RCC_SDIO_FORCE_RESET\n#define __HAL_RCC_SDMMC1_RELEASE_RESET     __HAL_RCC_SDIO_RELEASE_RESET\n#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE  __HAL_RCC_SDIO_CLK_SLEEP_ENABLE\n#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE\n#define __HAL_RCC_SDMMC1_CLK_ENABLE        __HAL_RCC_SDIO_CLK_ENABLE\n#define __HAL_RCC_SDMMC1_CLK_DISABLE       __HAL_RCC_SDIO_CLK_DISABLE\n#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED    __HAL_RCC_SDIO_IS_CLK_ENABLED\n#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED   __HAL_RCC_SDIO_IS_CLK_DISABLED\n#define Sdmmc1ClockSelection               SdioClockSelection\n#define RCC_PERIPHCLK_SDMMC1               RCC_PERIPHCLK_SDIO\n#define RCC_SDMMC1CLKSOURCE_CLK48          RCC_SDIOCLKSOURCE_CK48\n#define RCC_SDMMC1CLKSOURCE_SYSCLK         RCC_SDIOCLKSOURCE_SYSCLK\n#define __HAL_RCC_SDMMC1_CONFIG            __HAL_RCC_SDIO_CONFIG\n#define __HAL_RCC_GET_SDMMC1_SOURCE        __HAL_RCC_GET_SDIO_SOURCE\n#endif\n\n#if defined(STM32F7) || defined(STM32L4)\n#define __HAL_RCC_SDIO_FORCE_RESET         __HAL_RCC_SDMMC1_FORCE_RESET\n#define __HAL_RCC_SDIO_RELEASE_RESET       __HAL_RCC_SDMMC1_RELEASE_RESET\n#define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE    __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE\n#define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE   __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE\n#define __HAL_RCC_SDIO_CLK_ENABLE          __HAL_RCC_SDMMC1_CLK_ENABLE\n#define __HAL_RCC_SDIO_CLK_DISABLE         __HAL_RCC_SDMMC1_CLK_DISABLE\n#define __HAL_RCC_SDIO_IS_CLK_ENABLED      __HAL_RCC_SDMMC1_IS_CLK_ENABLED\n#define __HAL_RCC_SDIO_IS_CLK_DISABLED     __HAL_RCC_SDMMC1_IS_CLK_DISABLED\n#define SdioClockSelection                 Sdmmc1ClockSelection\n#define RCC_PERIPHCLK_SDIO                 RCC_PERIPHCLK_SDMMC1\n#define __HAL_RCC_SDIO_CONFIG              __HAL_RCC_SDMMC1_CONFIG\n#define __HAL_RCC_GET_SDIO_SOURCE          __HAL_RCC_GET_SDMMC1_SOURCE\n#endif\n\n#if defined(STM32F7)\n#define RCC_SDIOCLKSOURCE_CLK48             RCC_SDMMC1CLKSOURCE_CLK48\n#define RCC_SDIOCLKSOURCE_SYSCLK           RCC_SDMMC1CLKSOURCE_SYSCLK\n#endif\n\n#if defined(STM32H7)\n#define __HAL_RCC_USB_OTG_HS_CLK_ENABLE()              __HAL_RCC_USB1_OTG_HS_CLK_ENABLE()\n#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE()         __HAL_RCC_USB1_OTG_HS_ULPI_CLK_ENABLE()\n#define __HAL_RCC_USB_OTG_HS_CLK_DISABLE()             __HAL_RCC_USB1_OTG_HS_CLK_DISABLE()\n#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE()        __HAL_RCC_USB1_OTG_HS_ULPI_CLK_DISABLE()\n#define __HAL_RCC_USB_OTG_HS_FORCE_RESET()             __HAL_RCC_USB1_OTG_HS_FORCE_RESET()\n#define __HAL_RCC_USB_OTG_HS_RELEASE_RESET()           __HAL_RCC_USB1_OTG_HS_RELEASE_RESET()\n#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE()        __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_ENABLE()\n#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE()   __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE()\n#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE()       __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_DISABLE()\n#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE()  __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE()\n\n#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE()             __HAL_RCC_USB2_OTG_FS_CLK_ENABLE()\n#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_ENABLE()        __HAL_RCC_USB2_OTG_FS_ULPI_CLK_ENABLE()\n#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE()            __HAL_RCC_USB2_OTG_FS_CLK_DISABLE()\n#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_DISABLE()       __HAL_RCC_USB2_OTG_FS_ULPI_CLK_DISABLE()\n#define __HAL_RCC_USB_OTG_FS_FORCE_RESET()            __HAL_RCC_USB2_OTG_FS_FORCE_RESET()\n#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET()          __HAL_RCC_USB2_OTG_FS_RELEASE_RESET()\n#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE()       __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_ENABLE()\n#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_ENABLE()  __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE()\n#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE()      __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_DISABLE()\n#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE()\n#endif\n\n#define __HAL_RCC_I2SCLK            __HAL_RCC_I2S_CONFIG\n#define __HAL_RCC_I2SCLK_CONFIG     __HAL_RCC_I2S_CONFIG\n\n#define __RCC_PLLSRC                RCC_GET_PLL_OSCSOURCE\n\n#define IS_RCC_MSIRANGE             IS_RCC_MSI_CLOCK_RANGE\n#define IS_RCC_RTCCLK_SOURCE        IS_RCC_RTCCLKSOURCE\n#define IS_RCC_SYSCLK_DIV           IS_RCC_HCLK\n#define IS_RCC_HCLK_DIV             IS_RCC_PCLK\n#define IS_RCC_PERIPHCLK            IS_RCC_PERIPHCLOCK\n\n#define RCC_IT_HSI14                RCC_IT_HSI14RDY\n\n#define RCC_IT_CSSLSE               RCC_IT_LSECSS\n#define RCC_IT_CSSHSE               RCC_IT_CSS\n\n#define RCC_PLLMUL_3                RCC_PLL_MUL3\n#define RCC_PLLMUL_4                RCC_PLL_MUL4\n#define RCC_PLLMUL_6                RCC_PLL_MUL6\n#define RCC_PLLMUL_8                RCC_PLL_MUL8\n#define RCC_PLLMUL_12               RCC_PLL_MUL12\n#define RCC_PLLMUL_16               RCC_PLL_MUL16\n#define RCC_PLLMUL_24               RCC_PLL_MUL24\n#define RCC_PLLMUL_32               RCC_PLL_MUL32\n#define RCC_PLLMUL_48               RCC_PLL_MUL48\n\n#define RCC_PLLDIV_2                RCC_PLL_DIV2\n#define RCC_PLLDIV_3                RCC_PLL_DIV3\n#define RCC_PLLDIV_4                RCC_PLL_DIV4\n\n#define IS_RCC_MCOSOURCE            IS_RCC_MCO1SOURCE\n#define __HAL_RCC_MCO_CONFIG        __HAL_RCC_MCO1_CONFIG\n#define RCC_MCO_NODIV               RCC_MCODIV_1\n#define RCC_MCO_DIV1                RCC_MCODIV_1\n#define RCC_MCO_DIV2                RCC_MCODIV_2\n#define RCC_MCO_DIV4                RCC_MCODIV_4\n#define RCC_MCO_DIV8                RCC_MCODIV_8\n#define RCC_MCO_DIV16               RCC_MCODIV_16\n#define RCC_MCO_DIV32               RCC_MCODIV_32\n#define RCC_MCO_DIV64               RCC_MCODIV_64\n#define RCC_MCO_DIV128              RCC_MCODIV_128\n#define RCC_MCOSOURCE_NONE          RCC_MCO1SOURCE_NOCLOCK\n#define RCC_MCOSOURCE_LSI           RCC_MCO1SOURCE_LSI\n#define RCC_MCOSOURCE_LSE           RCC_MCO1SOURCE_LSE\n#define RCC_MCOSOURCE_SYSCLK        RCC_MCO1SOURCE_SYSCLK\n#define RCC_MCOSOURCE_HSI           RCC_MCO1SOURCE_HSI\n#define RCC_MCOSOURCE_HSI14         RCC_MCO1SOURCE_HSI14\n#define RCC_MCOSOURCE_HSI48         RCC_MCO1SOURCE_HSI48\n#define RCC_MCOSOURCE_HSE           RCC_MCO1SOURCE_HSE\n#define RCC_MCOSOURCE_PLLCLK_DIV1   RCC_MCO1SOURCE_PLLCLK\n#define RCC_MCOSOURCE_PLLCLK_NODIV  RCC_MCO1SOURCE_PLLCLK\n#define RCC_MCOSOURCE_PLLCLK_DIV2   RCC_MCO1SOURCE_PLLCLK_DIV2\n\n#if defined(STM32GK)\n#define RCC_RTCCLKSOURCE_NO_CLK     RCC_RTCCLKSOURCE_DISABLE\n#define RCC_RTCCLKSOURCE_NONE       RCC_RTCCLKSOURCE_DISABLE\n#elif defined(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || defined(STM32WL) || defined(STM32C0) || defined(STM32V7) || defined(STM32N6)\n#define RCC_RTCCLKSOURCE_NO_CLK     RCC_RTCCLKSOURCE_NONE\n#else\n#define RCC_RTCCLKSOURCE_NONE       RCC_RTCCLKSOURCE_NO_CLK\n#endif\n\n#define RCC_USBCLK_PLLSAI1          RCC_USBCLKSOURCE_PLLSAI1\n#define RCC_USBCLK_PLL              RCC_USBCLKSOURCE_PLL\n#define RCC_USBCLK_MSI              RCC_USBCLKSOURCE_MSI\n#define RCC_USBCLKSOURCE_PLLCLK     RCC_USBCLKSOURCE_PLL\n#define RCC_USBPLLCLK_DIV1          RCC_USBCLKSOURCE_PLL\n#define RCC_USBPLLCLK_DIV1_5        RCC_USBCLKSOURCE_PLL_DIV1_5\n#define RCC_USBPLLCLK_DIV2          RCC_USBCLKSOURCE_PLL_DIV2\n#define RCC_USBPLLCLK_DIV3          RCC_USBCLKSOURCE_PLL_DIV3\n\n#define HSION_BitNumber        RCC_HSION_BIT_NUMBER\n#define HSION_BITNUMBER        RCC_HSION_BIT_NUMBER\n#define HSEON_BitNumber        RCC_HSEON_BIT_NUMBER\n#define HSEON_BITNUMBER        RCC_HSEON_BIT_NUMBER\n#define MSION_BITNUMBER        RCC_MSION_BIT_NUMBER\n#define CSSON_BitNumber        RCC_CSSON_BIT_NUMBER\n#define CSSON_BITNUMBER        RCC_CSSON_BIT_NUMBER\n#define PLLON_BitNumber        RCC_PLLON_BIT_NUMBER\n#define PLLON_BITNUMBER        RCC_PLLON_BIT_NUMBER\n#define PLLI2SON_BitNumber     RCC_PLLI2SON_BIT_NUMBER\n#define I2SSRC_BitNumber       RCC_I2SSRC_BIT_NUMBER\n#define RTCEN_BitNumber        RCC_RTCEN_BIT_NUMBER\n#define RTCEN_BITNUMBER        RCC_RTCEN_BIT_NUMBER\n#define BDRST_BitNumber        RCC_BDRST_BIT_NUMBER\n#define BDRST_BITNUMBER        RCC_BDRST_BIT_NUMBER\n#define RTCRST_BITNUMBER       RCC_RTCRST_BIT_NUMBER\n#define LSION_BitNumber        RCC_LSION_BIT_NUMBER\n#define LSION_BITNUMBER        RCC_LSION_BIT_NUMBER\n#define LSEON_BitNumber        RCC_LSEON_BIT_NUMBER\n#define LSEON_BITNUMBER        RCC_LSEON_BIT_NUMBER\n#define LSEBYP_BITNUMBER       RCC_LSEBYP_BIT_NUMBER\n#define PLLSAION_BitNumber     RCC_PLLSAION_BIT_NUMBER\n#define TIMPRE_BitNumber       RCC_TIMPRE_BIT_NUMBER\n#define RMVF_BitNumber         RCC_RMVF_BIT_NUMBER\n#define RMVF_BITNUMBER         RCC_RMVF_BIT_NUMBER\n#define RCC_CR2_HSI14TRIM_BitNumber RCC_HSI14TRIM_BIT_NUMBER\n#define CR_BYTE2_ADDRESS       RCC_CR_BYTE2_ADDRESS\n#define CIR_BYTE1_ADDRESS      RCC_CIR_BYTE1_ADDRESS\n#define CIR_BYTE2_ADDRESS      RCC_CIR_BYTE2_ADDRESS\n#define BDCR_BYTE0_ADDRESS     RCC_BDCR_BYTE0_ADDRESS\n#define DBP_TIMEOUT_VALUE      RCC_DBP_TIMEOUT_VALUE\n#define LSE_TIMEOUT_VALUE      RCC_LSE_TIMEOUT_VALUE\n\n#define CR_HSION_BB            RCC_CR_HSION_BB\n#define CR_CSSON_BB            RCC_CR_CSSON_BB\n#define CR_PLLON_BB            RCC_CR_PLLON_BB\n#define CR_PLLI2SON_BB         RCC_CR_PLLI2SON_BB\n#define CR_MSION_BB            RCC_CR_MSION_BB\n#define CSR_LSION_BB           RCC_CSR_LSION_BB\n#define CSR_LSEON_BB           RCC_CSR_LSEON_BB\n#define CSR_LSEBYP_BB          RCC_CSR_LSEBYP_BB\n#define CSR_RTCEN_BB           RCC_CSR_RTCEN_BB\n#define CSR_RTCRST_BB          RCC_CSR_RTCRST_BB\n#define CFGR_I2SSRC_BB         RCC_CFGR_I2SSRC_BB\n#define BDCR_RTCEN_BB          RCC_BDCR_RTCEN_BB\n#define BDCR_BDRST_BB          RCC_BDCR_BDRST_BB\n#define CR_HSEON_BB            RCC_CR_HSEON_BB\n#define CSR_RMVF_BB            RCC_CSR_RMVF_BB\n#define CR_PLLSAION_BB         RCC_CR_PLLSAION_BB\n#define DCKCFGR_TIMPRE_BB      RCC_DCKCFGR_TIMPRE_BB\n\n#define __HAL_RCC_CRS_ENABLE_FREQ_ERROR_COUNTER     __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE\n#define __HAL_RCC_CRS_DISABLE_FREQ_ERROR_COUNTER    __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE\n#define __HAL_RCC_CRS_ENABLE_AUTOMATIC_CALIB        __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE\n#define __HAL_RCC_CRS_DISABLE_AUTOMATIC_CALIB       __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE\n#define __HAL_RCC_CRS_CALCULATE_RELOADVALUE         __HAL_RCC_CRS_RELOADVALUE_CALCULATE\n\n#define __HAL_RCC_GET_IT_SOURCE                     __HAL_RCC_GET_IT\n\n#define RCC_CRS_SYNCWARM       RCC_CRS_SYNCWARN\n#define RCC_CRS_TRIMOV         RCC_CRS_TRIMOVF\n\n#define RCC_PERIPHCLK_CK48               RCC_PERIPHCLK_CLK48\n#define RCC_CK48CLKSOURCE_PLLQ           RCC_CLK48CLKSOURCE_PLLQ\n#define RCC_CK48CLKSOURCE_PLLSAIP        RCC_CLK48CLKSOURCE_PLLSAIP\n#define RCC_CK48CLKSOURCE_PLLI2SQ        RCC_CLK48CLKSOURCE_PLLI2SQ\n#define IS_RCC_CK48CLKSOURCE             IS_RCC_CLK48CLKSOURCE\n#define RCC_SDIOCLKSOURCE_CK48           RCC_SDIOCLKSOURCE_CLK48\n\n#define __HAL_RCC_DFSDM_CLK_ENABLE             __HAL_RCC_DFSDM1_CLK_ENABLE\n#define __HAL_RCC_DFSDM_CLK_DISABLE            __HAL_RCC_DFSDM1_CLK_DISABLE\n#define __HAL_RCC_DFSDM_IS_CLK_ENABLED         __HAL_RCC_DFSDM1_IS_CLK_ENABLED\n#define __HAL_RCC_DFSDM_IS_CLK_DISABLED        __HAL_RCC_DFSDM1_IS_CLK_DISABLED\n#define __HAL_RCC_DFSDM_FORCE_RESET            __HAL_RCC_DFSDM1_FORCE_RESET\n#define __HAL_RCC_DFSDM_RELEASE_RESET          __HAL_RCC_DFSDM1_RELEASE_RESET\n#define __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE       __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE\n#define __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE      __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE\n#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_ENABLED   __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED\n#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_DISABLED  __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED\n#define DfsdmClockSelection         Dfsdm1ClockSelection\n#define RCC_PERIPHCLK_DFSDM         RCC_PERIPHCLK_DFSDM1\n#define RCC_DFSDMCLKSOURCE_PCLK     RCC_DFSDM1CLKSOURCE_PCLK2\n#define RCC_DFSDMCLKSOURCE_SYSCLK   RCC_DFSDM1CLKSOURCE_SYSCLK\n#define __HAL_RCC_DFSDM_CONFIG      __HAL_RCC_DFSDM1_CONFIG\n#define __HAL_RCC_GET_DFSDM_SOURCE  __HAL_RCC_GET_DFSDM1_SOURCE\n#define RCC_DFSDM1CLKSOURCE_PCLK    RCC_DFSDM1CLKSOURCE_PCLK2\n#define RCC_SWPMI1CLKSOURCE_PCLK    RCC_SWPMI1CLKSOURCE_PCLK1\n#define RCC_LPTIM1CLKSOURCE_PCLK    RCC_LPTIM1CLKSOURCE_PCLK1\n#define RCC_LPTIM2CLKSOURCE_PCLK    RCC_LPTIM2CLKSOURCE_PCLK1\n\n#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB1    RCC_DFSDM1AUDIOCLKSOURCE_I2S1\n#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB2    RCC_DFSDM1AUDIOCLKSOURCE_I2S2\n#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB1    RCC_DFSDM2AUDIOCLKSOURCE_I2S1\n#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB2    RCC_DFSDM2AUDIOCLKSOURCE_I2S2\n#define RCC_DFSDM1CLKSOURCE_APB2            RCC_DFSDM1CLKSOURCE_PCLK2\n#define RCC_DFSDM2CLKSOURCE_APB2            RCC_DFSDM2CLKSOURCE_PCLK2\n#define RCC_FMPI2C1CLKSOURCE_APB            RCC_FMPI2C1CLKSOURCE_PCLK1\n#if defined(STM32U5)\n#define MSIKPLLModeSEL  RCC_MSIKPLL_MODE_SEL\n#define MSISPLLModeSEL  RCC_MSISPLL_MODE_SEL\n#define __HAL_RCC_AHB21_CLK_DISABLE           __HAL_RCC_AHB2_1_CLK_DISABLE\n#define __HAL_RCC_AHB22_CLK_DISABLE           __HAL_RCC_AHB2_2_CLK_DISABLE\n#define __HAL_RCC_AHB1_CLK_Disable_Clear      __HAL_RCC_AHB1_CLK_ENABLE\n#define __HAL_RCC_AHB21_CLK_Disable_Clear     __HAL_RCC_AHB2_1_CLK_ENABLE\n#define __HAL_RCC_AHB22_CLK_Disable_Clear     __HAL_RCC_AHB2_2_CLK_ENABLE\n#define __HAL_RCC_AHB3_CLK_Disable_Clear      __HAL_RCC_AHB3_CLK_ENABLE\n#define __HAL_RCC_APB1_CLK_Disable_Clear      __HAL_RCC_APB1_CLK_ENABLE\n#define __HAL_RCC_APB2_CLK_Disable_Clear      __HAL_RCC_APB2_CLK_ENABLE\n#define __HAL_RCC_APB3_CLK_Disable_Clear      __HAL_RCC_APB3_CLK_ENABLE\n#define IS_RCC_MSIPLLModeSelection            IS_RCC_MSIPLLMODE_SELECT\n#define RCC_PERIPHCLK_CLK48                   RCC_PERIPHCLK_ICLK\n#define RCC_CLK48CLKSOURCE_HSI48              RCC_ICLK_CLKSOURCE_HSI48\n#define RCC_CLK48CLKSOURCE_PLL2               RCC_ICLK_CLKSOURCE_PLL2\n#define RCC_CLK48CLKSOURCE_PLL1               RCC_ICLK_CLKSOURCE_PLL1\n#define RCC_CLK48CLKSOURCE_MSIK               RCC_ICLK_CLKSOURCE_MSIK\n#define __HAL_RCC_ADC1_CLK_ENABLE            __HAL_RCC_ADC12_CLK_ENABLE\n#define __HAL_RCC_ADC1_CLK_DISABLE          __HAL_RCC_ADC12_CLK_DISABLE\n#define __HAL_RCC_ADC1_IS_CLK_ENABLED       __HAL_RCC_ADC12_IS_CLK_ENABLED\n#define __HAL_RCC_ADC1_IS_CLK_DISABLED      __HAL_RCC_ADC12_IS_CLK_DISABLED\n#define __HAL_RCC_ADC1_FORCE_RESET          __HAL_RCC_ADC12_FORCE_RESET\n#define __HAL_RCC_ADC1_RELEASE_RESET        __HAL_RCC_ADC12_RELEASE_RESET\n#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE     __HAL_RCC_ADC12_CLK_SLEEP_ENABLE\n#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE    __HAL_RCC_ADC12_CLK_SLEEP_DISABLE\n#endif\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_RNG_Aliased_Macros HAL RNG Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define  HAL_RNG_ReadyCallback(__HANDLE__)  HAL_RNG_ReadyDataCallback((__HANDLE__), uint32_t random32bit)\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5) || defined (STM32GK) || defined (STM32WB_GEN2) || defined (STM32WBA) || defined (STM32V7) || defined (STM32H5) || defined (STM32C0)\n#else\n#define __HAL_RTC_CLEAR_FLAG                      __HAL_RTC_EXTI_CLEAR_FLAG\n#endif\n#define __HAL_RTC_DISABLE_IT                      __HAL_RTC_EXTI_DISABLE_IT\n#define __HAL_RTC_ENABLE_IT                       __HAL_RTC_EXTI_ENABLE_IT\n\n#if defined (STM32F1)\n#define __HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT)  __HAL_RTC_ALARM_EXTI_CLEAR_FLAG()\n\n#define __HAL_RTC_EXTI_ENABLE_IT(RTC_EXTI_LINE_ALARM_EVENT)   __HAL_RTC_ALARM_EXTI_ENABLE_IT()\n\n#define __HAL_RTC_EXTI_DISABLE_IT(RTC_EXTI_LINE_ALARM_EVENT)  __HAL_RTC_ALARM_EXTI_DISABLE_IT()\n\n#define __HAL_RTC_EXTI_GET_FLAG(RTC_EXTI_LINE_ALARM_EVENT)    __HAL_RTC_ALARM_EXTI_GET_FLAG()\n\n#define __HAL_RTC_EXTI_GENERATE_SWIT(RTC_EXTI_LINE_ALARM_EVENT)   __HAL_RTC_ALARM_EXTI_GENERATE_SWIT()\n#else\n#define __HAL_RTC_EXTI_CLEAR_FLAG(__EXTI_LINE__)  (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() : \\\n                                                   (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() : \\\n                                                    __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()))\n#define __HAL_RTC_EXTI_ENABLE_IT(__EXTI_LINE__)   (((__EXTI_LINE__)  == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_ENABLE_IT() : \\\n                                                   (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() : \\\n                                                    __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()))\n#define __HAL_RTC_EXTI_DISABLE_IT(__EXTI_LINE__)  (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_DISABLE_IT() : \\\n                                                   (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() : \\\n                                                    __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()))\n#define __HAL_RTC_EXTI_GET_FLAG(__EXTI_LINE__)    (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GET_FLAG() : \\\n                                                   (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() : \\\n                                                    __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()))\n#define __HAL_RTC_EXTI_GENERATE_SWIT(__EXTI_LINE__)   (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() : \\\n                                                       (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() :  \\\n                                                        __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()))\n#endif   /* STM32F1 */\n\n#define IS_ALARM                                  IS_RTC_ALARM\n#define IS_ALARM_MASK                             IS_RTC_ALARM_MASK\n#define IS_TAMPER                                 IS_RTC_TAMPER\n#define IS_TAMPER_ERASE_MODE                      IS_RTC_TAMPER_ERASE_MODE\n#define IS_TAMPER_FILTER                          IS_RTC_TAMPER_FILTER\n#define IS_TAMPER_INTERRUPT                       IS_RTC_TAMPER_INTERRUPT\n#define IS_TAMPER_MASKFLAG_STATE                  IS_RTC_TAMPER_MASKFLAG_STATE\n#define IS_TAMPER_PRECHARGE_DURATION              IS_RTC_TAMPER_PRECHARGE_DURATION\n#define IS_TAMPER_PULLUP_STATE                    IS_RTC_TAMPER_PULLUP_STATE\n#define IS_TAMPER_SAMPLING_FREQ                   IS_RTC_TAMPER_SAMPLING_FREQ\n#define IS_TAMPER_TIMESTAMPONTAMPER_DETECTION     IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION\n#define IS_TAMPER_TRIGGER                         IS_RTC_TAMPER_TRIGGER\n#define IS_WAKEUP_CLOCK                           IS_RTC_WAKEUP_CLOCK\n#define IS_WAKEUP_COUNTER                         IS_RTC_WAKEUP_COUNTER\n\n#define __RTC_WRITEPROTECTION_ENABLE  __HAL_RTC_WRITEPROTECTION_ENABLE\n#define __RTC_WRITEPROTECTION_DISABLE  __HAL_RTC_WRITEPROTECTION_DISABLE\n\n#if defined (STM32H5)\n#define __HAL_RCC_RTCAPB_CLK_ENABLE   __HAL_RCC_RTC_CLK_ENABLE\n#endif   /* STM32H5 */\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SD_Aliased_Macros HAL SD/MMC Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define SD_OCR_CID_CSD_OVERWRIETE   SD_OCR_CID_CSD_OVERWRITE\n#define SD_CMD_SD_APP_STAUS         SD_CMD_SD_APP_STATUS\n\n#if !defined(STM32F1) && !defined(STM32F2) && !defined(STM32F4) && !defined(STM32F7) && !defined(STM32L1)\n#define eMMC_HIGH_VOLTAGE_RANGE     EMMC_HIGH_VOLTAGE_RANGE\n#define eMMC_DUAL_VOLTAGE_RANGE     EMMC_DUAL_VOLTAGE_RANGE\n#define eMMC_LOW_VOLTAGE_RANGE      EMMC_LOW_VOLTAGE_RANGE\n\n#define SDMMC_NSpeed_CLK_DIV        SDMMC_NSPEED_CLK_DIV\n#define SDMMC_HSpeed_CLK_DIV        SDMMC_HSPEED_CLK_DIV\n#endif\n\n#if defined(STM32F4) || defined(STM32F2)\n#define  SD_SDMMC_DISABLED          SD_SDIO_DISABLED\n#define  SD_SDMMC_FUNCTION_BUSY     SD_SDIO_FUNCTION_BUSY\n#define  SD_SDMMC_FUNCTION_FAILED   SD_SDIO_FUNCTION_FAILED\n#define  SD_SDMMC_UNKNOWN_FUNCTION  SD_SDIO_UNKNOWN_FUNCTION\n#define  SD_CMD_SDMMC_SEN_OP_COND   SD_CMD_SDIO_SEN_OP_COND\n#define  SD_CMD_SDMMC_RW_DIRECT     SD_CMD_SDIO_RW_DIRECT\n#define  SD_CMD_SDMMC_RW_EXTENDED   SD_CMD_SDIO_RW_EXTENDED\n#define  __HAL_SD_SDMMC_ENABLE      __HAL_SD_SDIO_ENABLE\n#define  __HAL_SD_SDMMC_DISABLE     __HAL_SD_SDIO_DISABLE\n#define  __HAL_SD_SDMMC_DMA_ENABLE  __HAL_SD_SDIO_DMA_ENABLE\n#define  __HAL_SD_SDMMC_DMA_DISABLE __HAL_SD_SDIO_DMA_DISABL\n#define  __HAL_SD_SDMMC_ENABLE_IT   __HAL_SD_SDIO_ENABLE_IT\n#define  __HAL_SD_SDMMC_DISABLE_IT  __HAL_SD_SDIO_DISABLE_IT\n#define  __HAL_SD_SDMMC_GET_FLAG    __HAL_SD_SDIO_GET_FLAG\n#define  __HAL_SD_SDMMC_CLEAR_FLAG  __HAL_SD_SDIO_CLEAR_FLAG\n#define  __HAL_SD_SDMMC_GET_IT      __HAL_SD_SDIO_GET_IT\n#define  __HAL_SD_SDMMC_CLEAR_IT    __HAL_SD_SDIO_CLEAR_IT\n#define  SDMMC_STATIC_FLAGS         SDIO_STATIC_FLAGS\n#define  SDMMC_CMD0TIMEOUT          SDIO_CMD0TIMEOUT\n#define  SD_SDMMC_SEND_IF_COND      SD_SDIO_SEND_IF_COND\n/* alias CMSIS */\n#define  SDMMC1_IRQn                SDIO_IRQn\n#define  SDMMC1_IRQHandler          SDIO_IRQHandler\n#endif\n\n#if defined(STM32F7) || defined(STM32L4)\n#define  SD_SDIO_DISABLED           SD_SDMMC_DISABLED\n#define  SD_SDIO_FUNCTION_BUSY      SD_SDMMC_FUNCTION_BUSY\n#define  SD_SDIO_FUNCTION_FAILED    SD_SDMMC_FUNCTION_FAILED\n#define  SD_SDIO_UNKNOWN_FUNCTION   SD_SDMMC_UNKNOWN_FUNCTION\n#define  SD_CMD_SDIO_SEN_OP_COND    SD_CMD_SDMMC_SEN_OP_COND\n#define  SD_CMD_SDIO_RW_DIRECT      SD_CMD_SDMMC_RW_DIRECT\n#define  SD_CMD_SDIO_RW_EXTENDED    SD_CMD_SDMMC_RW_EXTENDED\n#define  __HAL_SD_SDIO_ENABLE       __HAL_SD_SDMMC_ENABLE\n#define  __HAL_SD_SDIO_DISABLE      __HAL_SD_SDMMC_DISABLE\n#define  __HAL_SD_SDIO_DMA_ENABLE   __HAL_SD_SDMMC_DMA_ENABLE\n#define  __HAL_SD_SDIO_DMA_DISABL   __HAL_SD_SDMMC_DMA_DISABLE\n#define  __HAL_SD_SDIO_ENABLE_IT    __HAL_SD_SDMMC_ENABLE_IT\n#define  __HAL_SD_SDIO_DISABLE_IT   __HAL_SD_SDMMC_DISABLE_IT\n#define  __HAL_SD_SDIO_GET_FLAG     __HAL_SD_SDMMC_GET_FLAG\n#define  __HAL_SD_SDIO_CLEAR_FLAG   __HAL_SD_SDMMC_CLEAR_FLAG\n#define  __HAL_SD_SDIO_GET_IT       __HAL_SD_SDMMC_GET_IT\n#define  __HAL_SD_SDIO_CLEAR_IT     __HAL_SD_SDMMC_CLEAR_IT\n#define  SDIO_STATIC_FLAGS          SDMMC_STATIC_FLAGS\n#define  SDIO_CMD0TIMEOUT           SDMMC_CMD0TIMEOUT\n#define  SD_SDIO_SEND_IF_COND       SD_SDMMC_SEND_IF_COND\n/* alias CMSIS for compatibilities */\n#define  SDIO_IRQn                  SDMMC1_IRQn\n#define  SDIO_IRQHandler            SDMMC1_IRQHandler\n#endif\n\n#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2) || defined(STM32L4) || defined(STM32H7)\n#define  HAL_SD_CardCIDTypedef       HAL_SD_CardCIDTypeDef\n#define  HAL_SD_CardCSDTypedef       HAL_SD_CardCSDTypeDef\n#define  HAL_SD_CardStatusTypedef    HAL_SD_CardStatusTypeDef\n#define  HAL_SD_CardStateTypedef     HAL_SD_CardStateTypeDef\n#endif\n\n#if defined(STM32H7) || defined(STM32L5)\n#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback   HAL_MMCEx_Read_DMADoubleBuf0CpltCallback\n#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback   HAL_MMCEx_Read_DMADoubleBuf1CpltCallback\n#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback  HAL_MMCEx_Write_DMADoubleBuf0CpltCallback\n#define HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback  HAL_MMCEx_Write_DMADoubleBuf1CpltCallback\n#define HAL_SDEx_Read_DMADoubleBuffer0CpltCallback    HAL_SDEx_Read_DMADoubleBuf0CpltCallback\n#define HAL_SDEx_Read_DMADoubleBuffer1CpltCallback    HAL_SDEx_Read_DMADoubleBuf1CpltCallback\n#define HAL_SDEx_Write_DMADoubleBuffer0CpltCallback   HAL_SDEx_Write_DMADoubleBuf0CpltCallback\n#define HAL_SDEx_Write_DMADoubleBuffer1CpltCallback   HAL_SDEx_Write_DMADoubleBuf1CpltCallback\n#define HAL_SD_DriveTransciver_1_8V_Callback          HAL_SD_DriveTransceiver_1_8V_Callback\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SMARTCARD_Aliased_Macros HAL SMARTCARD Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __SMARTCARD_ENABLE_IT           __HAL_SMARTCARD_ENABLE_IT\n#define __SMARTCARD_DISABLE_IT          __HAL_SMARTCARD_DISABLE_IT\n#define __SMARTCARD_ENABLE              __HAL_SMARTCARD_ENABLE\n#define __SMARTCARD_DISABLE             __HAL_SMARTCARD_DISABLE\n#define __SMARTCARD_DMA_REQUEST_ENABLE  __HAL_SMARTCARD_DMA_REQUEST_ENABLE\n#define __SMARTCARD_DMA_REQUEST_DISABLE __HAL_SMARTCARD_DMA_REQUEST_DISABLE\n\n#define __HAL_SMARTCARD_GETCLOCKSOURCE  SMARTCARD_GETCLOCKSOURCE\n#define __SMARTCARD_GETCLOCKSOURCE      SMARTCARD_GETCLOCKSOURCE\n\n#define IS_SMARTCARD_ONEBIT_SAMPLING    IS_SMARTCARD_ONE_BIT_SAMPLE\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SMBUS_Aliased_Macros HAL SMBUS Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_SMBUS_RESET_CR1           SMBUS_RESET_CR1\n#define __HAL_SMBUS_RESET_CR2           SMBUS_RESET_CR2\n#define __HAL_SMBUS_GENERATE_START      SMBUS_GENERATE_START\n#define __HAL_SMBUS_GET_ADDR_MATCH      SMBUS_GET_ADDR_MATCH\n#define __HAL_SMBUS_GET_DIR             SMBUS_GET_DIR\n#define __HAL_SMBUS_GET_STOP_MODE       SMBUS_GET_STOP_MODE\n#define __HAL_SMBUS_GET_PEC_MODE        SMBUS_GET_PEC_MODE\n#define __HAL_SMBUS_GET_ALERT_ENABLED   SMBUS_GET_ALERT_ENABLED\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SPI_Aliased_Macros HAL SPI Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __HAL_SPI_1LINE_TX              SPI_1LINE_TX\n#define __HAL_SPI_1LINE_RX              SPI_1LINE_RX\n#define __HAL_SPI_RESET_CRC             SPI_RESET_CRC\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_UART_Aliased_Macros HAL UART Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __HAL_UART_GETCLOCKSOURCE       UART_GETCLOCKSOURCE\n#define __HAL_UART_MASK_COMPUTATION     UART_MASK_COMPUTATION\n#define __UART_GETCLOCKSOURCE           UART_GETCLOCKSOURCE\n#define __UART_MASK_COMPUTATION         UART_MASK_COMPUTATION\n\n#define IS_UART_WAKEUPMETHODE           IS_UART_WAKEUPMETHOD\n\n#define IS_UART_ONEBIT_SAMPLE           IS_UART_ONE_BIT_SAMPLE\n#define IS_UART_ONEBIT_SAMPLING         IS_UART_ONE_BIT_SAMPLE\n\n/**\n  * @}\n  */\n\n\n/** @defgroup HAL_USART_Aliased_Macros HAL USART Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __USART_ENABLE_IT               __HAL_USART_ENABLE_IT\n#define __USART_DISABLE_IT              __HAL_USART_DISABLE_IT\n#define __USART_ENABLE                  __HAL_USART_ENABLE\n#define __USART_DISABLE                 __HAL_USART_DISABLE\n\n#define __HAL_USART_GETCLOCKSOURCE      USART_GETCLOCKSOURCE\n#define __USART_GETCLOCKSOURCE          USART_GETCLOCKSOURCE\n\n#if defined(STM32F0) || defined(STM32F3) || defined(STM32F7)\n#define USART_OVERSAMPLING_16               0x00000000U\n#define USART_OVERSAMPLING_8                USART_CR1_OVER8\n\n#define IS_USART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == USART_OVERSAMPLING_16) || \\\n                                             ((__SAMPLING__) == USART_OVERSAMPLING_8))\n#endif /* STM32F0 || STM32F3 || STM32F7 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_USB_Aliased_Macros HAL USB Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define USB_EXTI_LINE_WAKEUP                               USB_WAKEUP_EXTI_LINE\n\n#define USB_FS_EXTI_TRIGGER_RISING_EDGE                    USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE\n#define USB_FS_EXTI_TRIGGER_FALLING_EDGE                   USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE\n#define USB_FS_EXTI_TRIGGER_BOTH_EDGE                      USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE\n#define USB_FS_EXTI_LINE_WAKEUP                            USB_OTG_FS_WAKEUP_EXTI_LINE\n\n#define USB_HS_EXTI_TRIGGER_RISING_EDGE                    USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE\n#define USB_HS_EXTI_TRIGGER_FALLING_EDGE                   USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE\n#define USB_HS_EXTI_TRIGGER_BOTH_EDGE                      USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE\n#define USB_HS_EXTI_LINE_WAKEUP                            USB_OTG_HS_WAKEUP_EXTI_LINE\n\n#define __HAL_USB_EXTI_ENABLE_IT                           __HAL_USB_WAKEUP_EXTI_ENABLE_IT\n#define __HAL_USB_EXTI_DISABLE_IT                          __HAL_USB_WAKEUP_EXTI_DISABLE_IT\n#define __HAL_USB_EXTI_GET_FLAG                            __HAL_USB_WAKEUP_EXTI_GET_FLAG\n#define __HAL_USB_EXTI_CLEAR_FLAG                          __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG\n#define __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER             __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE\n#define __HAL_USB_EXTI_SET_FALLING_EDGE_TRIGGER            __HAL_USB_WAKEUP_EXTI_ENABLE_FALLING_EDGE\n#define __HAL_USB_EXTI_SET_FALLINGRISING_TRIGGER           __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE\n\n#define __HAL_USB_FS_EXTI_ENABLE_IT                        __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT\n#define __HAL_USB_FS_EXTI_DISABLE_IT                       __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT\n#define __HAL_USB_FS_EXTI_GET_FLAG                         __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG\n#define __HAL_USB_FS_EXTI_CLEAR_FLAG                       __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG\n#define __HAL_USB_FS_EXTI_SET_RISING_EGDE_TRIGGER          __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE\n#define __HAL_USB_FS_EXTI_SET_FALLING_EGDE_TRIGGER         __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE\n#define __HAL_USB_FS_EXTI_SET_FALLINGRISING_TRIGGER        __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE\n#define __HAL_USB_FS_EXTI_GENERATE_SWIT                    __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT\n\n#define __HAL_USB_HS_EXTI_ENABLE_IT                        __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT\n#define __HAL_USB_HS_EXTI_DISABLE_IT                       __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT\n#define __HAL_USB_HS_EXTI_GET_FLAG                         __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG\n#define __HAL_USB_HS_EXTI_CLEAR_FLAG                       __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG\n#define __HAL_USB_HS_EXTI_SET_RISING_EGDE_TRIGGER          __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE\n#define __HAL_USB_HS_EXTI_SET_FALLING_EGDE_TRIGGER         __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_FALLING_EDGE\n#define __HAL_USB_HS_EXTI_SET_FALLINGRISING_TRIGGER        __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE\n#define __HAL_USB_HS_EXTI_GENERATE_SWIT                    __HAL_USB_OTG_HS_WAKEUP_EXTI_GENERATE_SWIT\n\n#define HAL_PCD_ActiveRemoteWakeup                         HAL_PCD_ActivateRemoteWakeup\n#define HAL_PCD_DeActiveRemoteWakeup                       HAL_PCD_DeActivateRemoteWakeup\n\n#define HAL_PCD_SetTxFiFo                                  HAL_PCDEx_SetTxFiFo\n#define HAL_PCD_SetRxFiFo                                  HAL_PCDEx_SetRxFiFo\n/**\n  * @}\n  */\n\n/** @defgroup HAL_TIM_Aliased_Macros HAL TIM Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_TIM_SetICPrescalerValue   TIM_SET_ICPRESCALERVALUE\n#define __HAL_TIM_ResetICPrescalerValue TIM_RESET_ICPRESCALERVALUE\n\n#define TIM_GET_ITSTATUS                __HAL_TIM_GET_IT_SOURCE\n#define TIM_GET_CLEAR_IT                __HAL_TIM_CLEAR_IT\n\n#define __HAL_TIM_GET_ITSTATUS          __HAL_TIM_GET_IT_SOURCE\n\n#define __HAL_TIM_DIRECTION_STATUS      __HAL_TIM_IS_TIM_COUNTING_DOWN\n#define __HAL_TIM_PRESCALER             __HAL_TIM_SET_PRESCALER\n#define __HAL_TIM_SetCounter            __HAL_TIM_SET_COUNTER\n#define __HAL_TIM_GetCounter            __HAL_TIM_GET_COUNTER\n#define __HAL_TIM_SetAutoreload         __HAL_TIM_SET_AUTORELOAD\n#define __HAL_TIM_GetAutoreload         __HAL_TIM_GET_AUTORELOAD\n#define __HAL_TIM_SetClockDivision      __HAL_TIM_SET_CLOCKDIVISION\n#define __HAL_TIM_GetClockDivision      __HAL_TIM_GET_CLOCKDIVISION\n#define __HAL_TIM_SetICPrescaler        __HAL_TIM_SET_ICPRESCALER\n#define __HAL_TIM_GetICPrescaler        __HAL_TIM_GET_ICPRESCALER\n#define __HAL_TIM_SetCompare            __HAL_TIM_SET_COMPARE\n#define __HAL_TIM_GetCompare            __HAL_TIM_GET_COMPARE\n\n#define TIM_BREAKINPUTSOURCE_DFSDM  TIM_BREAKINPUTSOURCE_DFSDM1\n/**\n  * @}\n  */\n\n/** @defgroup HAL_ETH_Aliased_Macros HAL ETH Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n#define __HAL_ETH_EXTI_ENABLE_IT                   __HAL_ETH_WAKEUP_EXTI_ENABLE_IT\n#define __HAL_ETH_EXTI_DISABLE_IT                  __HAL_ETH_WAKEUP_EXTI_DISABLE_IT\n#define __HAL_ETH_EXTI_GET_FLAG                    __HAL_ETH_WAKEUP_EXTI_GET_FLAG\n#define __HAL_ETH_EXTI_CLEAR_FLAG                  __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG\n#define __HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER     __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE_TRIGGER\n#define __HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER    __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE_TRIGGER\n#define __HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER   __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER\n\n#define ETH_PROMISCIOUSMODE_ENABLE   ETH_PROMISCUOUS_MODE_ENABLE\n#define ETH_PROMISCIOUSMODE_DISABLE  ETH_PROMISCUOUS_MODE_DISABLE\n#define IS_ETH_PROMISCIOUS_MODE      IS_ETH_PROMISCUOUS_MODE\n/**\n  * @}\n  */\n\n/** @defgroup HAL_LTDC_Aliased_Macros HAL LTDC Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define __HAL_LTDC_LAYER LTDC_LAYER\n#define __HAL_LTDC_RELOAD_CONFIG  __HAL_LTDC_RELOAD_IMMEDIATE_CONFIG\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SAI_Aliased_Macros HAL SAI Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#define SAI_OUTPUTDRIVE_DISABLED          SAI_OUTPUTDRIVE_DISABLE\n#define SAI_OUTPUTDRIVE_ENABLED           SAI_OUTPUTDRIVE_ENABLE\n#define SAI_MASTERDIVIDER_ENABLED         SAI_MASTERDIVIDER_ENABLE\n#define SAI_MASTERDIVIDER_DISABLED        SAI_MASTERDIVIDER_DISABLE\n#define SAI_STREOMODE                     SAI_STEREOMODE\n#define SAI_FIFOStatus_Empty              SAI_FIFOSTATUS_EMPTY\n#define SAI_FIFOStatus_Less1QuarterFull   SAI_FIFOSTATUS_LESS1QUARTERFULL\n#define SAI_FIFOStatus_1QuarterFull       SAI_FIFOSTATUS_1QUARTERFULL\n#define SAI_FIFOStatus_HalfFull           SAI_FIFOSTATUS_HALFFULL\n#define SAI_FIFOStatus_3QuartersFull      SAI_FIFOSTATUS_3QUARTERFULL\n#define SAI_FIFOStatus_Full               SAI_FIFOSTATUS_FULL\n#define IS_SAI_BLOCK_MONO_STREO_MODE      IS_SAI_BLOCK_MONO_STEREO_MODE\n#define SAI_SYNCHRONOUS_EXT               SAI_SYNCHRONOUS_EXT_SAI1\n#define SAI_SYNCEXT_IN_ENABLE             SAI_SYNCEXT_OUTBLOCKA_ENABLE\n/**\n  * @}\n  */\n\n/** @defgroup HAL_SPDIFRX_Aliased_Macros HAL SPDIFRX Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#if defined(STM32H7)\n#define HAL_SPDIFRX_ReceiveControlFlow      HAL_SPDIFRX_ReceiveCtrlFlow\n#define HAL_SPDIFRX_ReceiveControlFlow_IT   HAL_SPDIFRX_ReceiveCtrlFlow_IT\n#define HAL_SPDIFRX_ReceiveControlFlow_DMA  HAL_SPDIFRX_ReceiveCtrlFlow_DMA\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose\n  * @{\n  */\n#if defined (STM32H7) || defined (STM32G4) || defined (STM32F3)\n#define HAL_HRTIM_WaveformCounterStart_IT      HAL_HRTIM_WaveformCountStart_IT\n#define HAL_HRTIM_WaveformCounterStart_DMA     HAL_HRTIM_WaveformCountStart_DMA\n#define HAL_HRTIM_WaveformCounterStart         HAL_HRTIM_WaveformCountStart\n#define HAL_HRTIM_WaveformCounterStop_IT       HAL_HRTIM_WaveformCountStop_IT\n#define HAL_HRTIM_WaveformCounterStop_DMA      HAL_HRTIM_WaveformCountStop_DMA\n#define HAL_HRTIM_WaveformCounterStop          HAL_HRTIM_WaveformCountStop\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup HAL_QSPI_Aliased_Macros HAL QSPI Aliased Macros maintained for legacy purpose\n  * @{\n  */\n#if defined (STM32L4) || defined (STM32F4) || defined (STM32F7) || defined(STM32H7)\n#define HAL_QPSI_TIMEOUT_DEFAULT_VALUE HAL_QSPI_TIMEOUT_DEFAULT_VALUE\n#endif /* STM32L4 || STM32F4 || STM32F7 */\n/**\n  * @}\n  */\n\n/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32_HAL_LEGACY */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal.h\n  * @author  MCD Application Team\n  * @brief   This file contains all the functions prototypes for the HAL\n  *          module driver.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.</center></h2>\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_H\n#define STM32H7xx_HAL_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_conf.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup HAL\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup HAL_TICK_FREQ Tick Frequency\n  * @{\n  */\ntypedef enum\n{\n  HAL_TICK_FREQ_10HZ         = 100U,\n  HAL_TICK_FREQ_100HZ        = 10U,\n  HAL_TICK_FREQ_1KHZ         = 1U,\n  HAL_TICK_FREQ_DEFAULT      = HAL_TICK_FREQ_1KHZ\n} HAL_TickFreqTypeDef;\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup REV_ID device revision ID\n  * @{\n  */\n#define REV_ID_Y ((uint32_t)0x1003)  /*!< STM32H7 rev.Y */\n#define REV_ID_B ((uint32_t)0x2000)  /*!< STM32H7 rev.B */\n#define REV_ID_X ((uint32_t)0x2001)  /*!< STM32H7 rev.X */\n#define REV_ID_V ((uint32_t)0x2003)  /*!< STM32H7 rev.V */\n\n/**\n  * @}\n  */\n\n/** @defgroup SYSCFG_VREFBUF_VoltageScale VREFBUF Voltage Scale\n  * @{\n  */\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE0   VREFBUF_CSR_VRS_OUT1   /*!< Voltage reference scale 0 (VREF_OUT1) */\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE1   VREFBUF_CSR_VRS_OUT2   /*!< Voltage reference scale 1 (VREF_OUT2) */\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE2   VREFBUF_CSR_VRS_OUT3   /*!< Voltage reference scale 2 (VREF_OUT3) */\n#define SYSCFG_VREFBUF_VOLTAGE_SCALE3   VREFBUF_CSR_VRS_OUT4   /*!< Voltage reference scale 3 (VREF_OUT4) */\n\n\n#define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE(__SCALE__)  (((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE0) || \\\n                                                     ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE1) || \\\n                                                     ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE2) || \\\n                                                     ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE3))\n\n\n/**\n  * @}\n  */\n\n/** @defgroup SYSCFG_VREFBUF_HighImpedance VREFBUF High Impedance\n  * @{\n  */\n#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE  ((uint32_t)0x00000000) /*!< VREF_plus pin is internally connected to Voltage reference buffer output */\n#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE   VREFBUF_CSR_HIZ        /*!< VREF_plus pin is high impedance */\n\n#define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE(__VALUE__)  (((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE) || \\\n                                                      ((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE))\n\n#define IS_SYSCFG_VREFBUF_TRIMMING(__VALUE__)  (((__VALUE__) > 0UL) && ((__VALUE__) <= VREFBUF_CCR_TRIM))\n\n/**\n  * @}\n  */\n\n#if !defined(SYSCFG_PMCR_BOOSTEN)\n/** @defgroup SYSCFG_FastModePlus_GPIO Fast-mode Plus on GPIO\n  * @{\n  */\n\n/** @brief  Fast-mode Plus driving capability on a specific GPIO\n  */\n#define SYSCFG_FASTMODEPLUS_PB6        SYSCFG_PMCR_I2C_PB6_FMP  /*!< Enable Fast-mode Plus on PB6 */\n#define SYSCFG_FASTMODEPLUS_PB7        SYSCFG_PMCR_I2C_PB7_FMP  /*!< Enable Fast-mode Plus on PB7 */\n#define SYSCFG_FASTMODEPLUS_PB8        SYSCFG_PMCR_I2C_PB8_FMP  /*!< Enable Fast-mode Plus on PB8 */\n#define SYSCFG_FASTMODEPLUS_PB9        SYSCFG_PMCR_I2C_PB9_FMP  /*!< Enable Fast-mode Plus on PB9 */\n\n#define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \\\n                                         (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \\\n                                         (((__PIN__) & SYSCFG_FASTMODEPLUS_PB8) == SYSCFG_FASTMODEPLUS_PB8) || \\\n                                         (((__PIN__) & SYSCFG_FASTMODEPLUS_PB9) == SYSCFG_FASTMODEPLUS_PB9))\n\n/**\n  * @}\n  */\n#endif /* ! SYSCFG_PMCR_BOOSTEN */\n\n\n#if defined(SYSCFG_ADC2ALT_ADC2_ROUT0) || defined(SYSCFG_ADC2ALT_ADC2_ROUT1)\n/** @defgroup SYSCFG_Adc2_Alternate_Connection SYSCFG ADC2 Alternate Connection\n  * @{\n  */\n\n/** @brief  Adc2 Alternate Connection on Vinp[16] and Vinp[17]\n  */\n#define SYSCFG_ADC2_ROUT0_DAC1_1       ((uint32_t)0x00000000)      /*!< DAC1_out1 connected to ADC2 VINP[16] */\n#define SYSCFG_ADC2_ROUT0_VBAT4         SYSCFG_ADC2ALT_ADC2_ROUT0  /*!< VBAT/4 connected to ADC2 VINP[16] */\n#define SYSCFG_ADC2_ROUT1_DAC1_2        ((uint32_t)0x00000000)     /*!< DAC1_out2 connected to ADC2 VINP[17] */\n#define SYSCFG_ADC2_ROUT1_VREFINT       SYSCFG_ADC2ALT_ADC2_ROUT1  /*!< VREFINT connected to ADC2 VINP[17] */\n\n#define IS_SYSCFG_ADC2ALT_ROUT0(__VALUE__)  (((__VALUE__) == SYSCFG_ADC2_ROUT0_DAC1_1) || \\\n                                             ((__VALUE__) == SYSCFG_ADC2_ROUT0_VBAT4))\n#define IS_SYSCFG_ADC2ALT_ROUT1(__VALUE__)  (((__VALUE__) == SYSCFG_ADC2_ROUT1_DAC1_2) || \\\n                                             ((__VALUE__) == SYSCFG_ADC2_ROUT1_VREFINT))\n\n/**\n  * @}\n  */\n#endif /*SYSCFG_ADC2ALT_ADC2_ROUT0 || SYSCFG_ADC2ALT_ADC2_ROUT1*/\n\n\n/** @defgroup SYSCFG_Ethernet_Config  Ethernet Config\n  * @{\n  */\n#define SYSCFG_ETH_MII                      ((uint32_t)0x00000000)  /*!< Select the Media Independent Interface */\n#define SYSCFG_ETH_RMII                     SYSCFG_PMCR_EPIS_SEL_2  /*!< Select the Reduced Media Independent Interface */\n\n#define IS_SYSCFG_ETHERNET_CONFIG(CONFIG) (((CONFIG) == SYSCFG_ETH_MII)        || \\\n                                          ((CONFIG) == SYSCFG_ETH_RMII))\n\n/**\n  * @}\n  */\n\n\n/** @defgroup SYSCFG_Analog_Switch_Config  Analog Switch Config\n  * @{\n  */\n#define SYSCFG_SWITCH_PA0                       SYSCFG_PMCR_PA0SO  /*!< Select PA0 analog switch */\n#define SYSCFG_SWITCH_PA1                       SYSCFG_PMCR_PA1SO  /*!< Select PA1 analog switch */\n#define SYSCFG_SWITCH_PC2                       SYSCFG_PMCR_PC2SO  /*!< Select PC2 analog switch */\n#define SYSCFG_SWITCH_PC3                       SYSCFG_PMCR_PC3SO  /*!< Select PC3 analog switch */\n\n\n\n\n#define SYSCFG_SWITCH_PA0_OPEN                       SYSCFG_PMCR_PA0SO       /*!< PA0 analog switch opened */\n#define SYSCFG_SWITCH_PA0_CLOSE                      ((uint32_t)0x00000000)  /*!< PA0 analog switch closed */\n#define SYSCFG_SWITCH_PA1_OPEN                       SYSCFG_PMCR_PA1SO       /*!< PA1 analog switch opened */\n#define SYSCFG_SWITCH_PA1_CLOSE                      ((uint32_t)0x00000000)  /*!< PA1 analog switch closed*/\n#define SYSCFG_SWITCH_PC2_OPEN                       SYSCFG_PMCR_PC2SO       /*!< PC2 analog switch opened */\n#define SYSCFG_SWITCH_PC2_CLOSE                      ((uint32_t)0x00000000)  /*!< PC2 analog switch closed */\n#define SYSCFG_SWITCH_PC3_OPEN                       SYSCFG_PMCR_PC3SO       /*!< PC3 analog switch opened */\n#define SYSCFG_SWITCH_PC3_CLOSE                      ((uint32_t)0x00000000)  /*!< PC3 analog switch closed */\n\n/**\n  * @}\n  */\n\n#define IS_SYSCFG_ANALOG_SWITCH(SWITCH)    ((((SWITCH) & SYSCFG_SWITCH_PA0) == SYSCFG_SWITCH_PA0)|| \\\n                                           (((SWITCH) & SYSCFG_SWITCH_PA1) == SYSCFG_SWITCH_PA1) || \\\n                                           (((SWITCH) & SYSCFG_SWITCH_PC2) == SYSCFG_SWITCH_PC2) || \\\n                                           (((SWITCH) & SYSCFG_SWITCH_PC3) == SYSCFG_SWITCH_PC3))\n\n\n#define IS_SYSCFG_SWITCH_STATE(STATE)      ((((STATE) & SYSCFG_SWITCH_PA0_OPEN) == SYSCFG_SWITCH_PA0_OPEN)    || \\\n                                           (((STATE) & SYSCFG_SWITCH_PA0_CLOSE) == SYSCFG_SWITCH_PA0_CLOSE)   || \\\n                                           (((STATE) & SYSCFG_SWITCH_PA1_OPEN) == SYSCFG_SWITCH_PA1_OPEN)     || \\\n                                           (((STATE) & SYSCFG_SWITCH_PA1_CLOSE) == SYSCFG_SWITCH_PA1_CLOSE)   || \\\n                                           (((STATE) & SYSCFG_SWITCH_PC2_OPEN) == SYSCFG_SWITCH_PC2_OPEN)     || \\\n                                           (((STATE) & SYSCFG_SWITCH_PC2_CLOSE) == SYSCFG_SWITCH_PC2_CLOSE)   || \\\n                                           (((STATE) & SYSCFG_SWITCH_PC3_OPEN) == SYSCFG_SWITCH_PC3_OPEN)     || \\\n                                           (((STATE) & SYSCFG_SWITCH_PC3_CLOSE) == SYSCFG_SWITCH_PC3_CLOSE))\n\n\n/** @defgroup SYSCFG_Boot_Config  Boot Config\n  * @{\n  */\n#define SYSCFG_BOOT_ADDR0                    ((uint32_t)0x00000000)  /*!< Select Boot address0 */\n#define SYSCFG_BOOT_ADDR1                    ((uint32_t)0x00000001)  /*!< Select Boot address1 */\n\n#define IS_SYSCFG_BOOT_REGISTER(REGISTER) (((REGISTER) == SYSCFG_BOOT_ADDR0)|| \\\n                                          ((REGISTER) == SYSCFG_BOOT_ADDR1))\n\n#define IS_SYSCFG_BOOT_ADDRESS(ADDRESS) ((ADDRESS) < PERIPH_BASE)\n\n/**\n  * @}\n  */\n\n\n/** @defgroup SYSCFG_IOCompenstionCell_Config  IOCompenstionCell Config\n  * @{\n  */\n#define SYSCFG_CELL_CODE                    ((uint32_t)0x00000000)  /*!< Select Code from the cell */\n#define SYSCFG_REGISTER_CODE                 SYSCFG_CCCSR_CS        /*!< Code from the SYSCFG compensation cell code register */\n\n#define IS_SYSCFG_CODE_SELECT(SELECT) (((SELECT) == SYSCFG_CELL_CODE)|| \\\n                                        ((SELECT) == SYSCFG_REGISTER_CODE))\n\n#define IS_SYSCFG_CODE_CONFIG(CONFIG) ((CONFIG) < (0x10UL))\n\n/**\n  * @}\n  */\n\n\n\n\n/** @defgroup EXTI_Event_Input_Config  Event Input Config\n  * @{\n  */\n\n#define EXTI_MODE_IT          ((uint32_t)0x00010000)\n#define EXTI_MODE_EVT         ((uint32_t)0x00020000)\n#define EXTI_RISING_EDGE      ((uint32_t)0x00100000)\n#define EXTI_FALLING_EDGE     ((uint32_t)0x00200000)\n\n#define IS_EXTI_EDGE_LINE(EDGE) (((EDGE) == EXTI_RISING_EDGE) || ((EDGE) == EXTI_FALLING_EDGE))\n#define IS_EXTI_MODE_LINE(MODE) (((MODE) == EXTI_MODE_IT) || ((MODE) == EXTI_MODE_EVT))\n\n#define EXTI_LINE0       ((uint32_t)0x00)  /*!< External interrupt LINE 0  */\n#define EXTI_LINE1       ((uint32_t)0x01)  /*!< External interrupt LINE 1  */\n#define EXTI_LINE2       ((uint32_t)0x02)  /*!< External interrupt LINE 2  */\n#define EXTI_LINE3       ((uint32_t)0x03)  /*!< External interrupt LINE 3  */\n#define EXTI_LINE4       ((uint32_t)0x04)  /*!< External interrupt LINE 4  */\n#define EXTI_LINE5       ((uint32_t)0x05)  /*!< External interrupt LINE 5  */\n#define EXTI_LINE6       ((uint32_t)0x06)  /*!< External interrupt LINE 6  */\n#define EXTI_LINE7       ((uint32_t)0x07)  /*!< External interrupt LINE 7  */\n#define EXTI_LINE8       ((uint32_t)0x08)  /*!< External interrupt LINE 8  */\n#define EXTI_LINE9       ((uint32_t)0x09)  /*!< External interrupt LINE 9  */\n#define EXTI_LINE10      ((uint32_t)0x0A)  /*!< External interrupt LINE 10 */\n#define EXTI_LINE11      ((uint32_t)0x0B)  /*!< External interrupt LINE 11 */\n#define EXTI_LINE12      ((uint32_t)0x0C)  /*!< External interrupt LINE 12 */\n#define EXTI_LINE13      ((uint32_t)0x0D)  /*!< External interrupt LINE 13 */\n#define EXTI_LINE14      ((uint32_t)0x0E)  /*!< External interrupt LINE 14 */\n#define EXTI_LINE15      ((uint32_t)0x0F)  /*!< External interrupt LINE 15 */\n#define EXTI_LINE16      ((uint32_t)0x10)\n#define EXTI_LINE17      ((uint32_t)0x11)\n#define EXTI_LINE18      ((uint32_t)0x12)\n#define EXTI_LINE19      ((uint32_t)0x13)\n#define EXTI_LINE20      ((uint32_t)0x14)\n#define EXTI_LINE21      ((uint32_t)0x15)\n#define EXTI_LINE22      ((uint32_t)0x16)\n#define EXTI_LINE23      ((uint32_t)0x17)\n#define EXTI_LINE24      ((uint32_t)0x18)\n#define EXTI_LINE25      ((uint32_t)0x19)\n#define EXTI_LINE26      ((uint32_t)0x1A)\n#define EXTI_LINE27      ((uint32_t)0x1B)\n#define EXTI_LINE28      ((uint32_t)0x1C)\n#define EXTI_LINE29      ((uint32_t)0x1D)\n#define EXTI_LINE30      ((uint32_t)0x1E)\n#define EXTI_LINE31      ((uint32_t)0x1F)\n#define EXTI_LINE32      ((uint32_t)0x20)\n#define EXTI_LINE33      ((uint32_t)0x21)\n#define EXTI_LINE34      ((uint32_t)0x22)\n#define EXTI_LINE35      ((uint32_t)0x23)\n#define EXTI_LINE36      ((uint32_t)0x24)\n#define EXTI_LINE37      ((uint32_t)0x25)\n#define EXTI_LINE38      ((uint32_t)0x26)\n#define EXTI_LINE39      ((uint32_t)0x27)\n\n#define EXTI_LINE40      ((uint32_t)0x28)\n#define EXTI_LINE41      ((uint32_t)0x29)\n#define EXTI_LINE42      ((uint32_t)0x2A)\n#define EXTI_LINE43      ((uint32_t)0x2B)\n#define EXTI_LINE44      ((uint32_t)0x2C)  /* Not available in all family lines */\n/* EXTI_LINE45 Reserved */\n#if defined(DUAL_CORE)\n#define EXTI_LINE46      ((uint32_t)0x2E)\n#else\n/* EXTI_LINE46 Reserved */\n#endif /* DUAL_CORE */\n#define EXTI_LINE47      ((uint32_t)0x2F)\n#define EXTI_LINE48      ((uint32_t)0x30)\n#define EXTI_LINE49      ((uint32_t)0x31)\n#define EXTI_LINE50      ((uint32_t)0x32)\n#define EXTI_LINE51      ((uint32_t)0x33)\n#define EXTI_LINE52      ((uint32_t)0x34)\n#define EXTI_LINE53      ((uint32_t)0x35)\n#define EXTI_LINE54      ((uint32_t)0x36)\n#define EXTI_LINE55      ((uint32_t)0x37)\n#define EXTI_LINE56      ((uint32_t)0x38)\n#define EXTI_LINE57      ((uint32_t)0x39)\n#define EXTI_LINE58      ((uint32_t)0x3A)\n#define EXTI_LINE59      ((uint32_t)0x3B)\n#define EXTI_LINE60      ((uint32_t)0x3C)\n#define EXTI_LINE61      ((uint32_t)0x3D)\n#define EXTI_LINE62      ((uint32_t)0x3E)\n#define EXTI_LINE63      ((uint32_t)0x3F)\n#define EXTI_LINE64      ((uint32_t)0x40)\n#define EXTI_LINE65      ((uint32_t)0x41)\n#define EXTI_LINE66      ((uint32_t)0x42)\n#define EXTI_LINE67      ((uint32_t)0x43)\n#define EXTI_LINE68      ((uint32_t)0x44)\n#define EXTI_LINE69      ((uint32_t)0x45)\n#define EXTI_LINE70      ((uint32_t)0x46)\n#define EXTI_LINE71      ((uint32_t)0x47)\n#define EXTI_LINE72      ((uint32_t)0x48)\n#define EXTI_LINE73      ((uint32_t)0x49)\n#define EXTI_LINE74      ((uint32_t)0x4A)\n#define EXTI_LINE75      ((uint32_t)0x4B)  /* Not available in all family lines */\n#define EXTI_LINE76      ((uint32_t)0x4C)  /* Not available in all family lines */\n#if defined(DUAL_CORE)\n#define EXTI_LINE77      ((uint32_t)0x4D)\n#define EXTI_LINE78      ((uint32_t)0x4E)\n#define EXTI_LINE79      ((uint32_t)0x4F)\n#define EXTI_LINE80      ((uint32_t)0x50)\n#else\n/* EXTI_LINE77 Reserved */\n/* EXTI_LINE78 Reserved */\n/* EXTI_LINE79 Reserved */\n/* EXTI_LINE80 Reserved */\n#endif /* DUAL_CORE */\n/* EXTI_LINE81   Reserved */\n#if defined(DUAL_CORE)\n#define EXTI_LINE82      ((uint32_t)0x52)\n#else\n/* EXTI_LINE82 Reserved */\n#endif /* DUAL_CORE */\n/* EXTI_LINE83   Reserved */\n#if defined(DUAL_CORE)\n#define EXTI_LINE84      ((uint32_t)0x54)\n#else\n/* EXTI_LINE84 Reserved */\n#endif /* DUAL_CORE */\n#define EXTI_LINE85      ((uint32_t)0x55)\n#define EXTI_LINE86      ((uint32_t)0x56)  /* Not available in all family lines */\n#define EXTI_LINE87      ((uint32_t)0x57)\n#define EXTI_LINE88      ((uint32_t)0x58)  /* Not available in all family lines */\n#define EXTI_LINE89      ((uint32_t)0x59)  /* Not available in all family lines */\n#define EXTI_LINE90      ((uint32_t)0x5A)  /* Not available in all family lines */\n#define EXTI_LINE91      ((uint32_t)0x5B)  /* Not available in all family lines */\n\n#if defined(DUAL_CORE)\n#define IS_HAL_EXTI_CONFIG_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1) || \\\n                                ((LINE) == EXTI_LINE2)  || ((LINE) == EXTI_LINE3)   || \\\n                                ((LINE) == EXTI_LINE4)  || ((LINE) == EXTI_LINE5)   || \\\n                                ((LINE) == EXTI_LINE6)  || ((LINE) == EXTI_LINE7)   || \\\n                                ((LINE) == EXTI_LINE8)  || ((LINE) == EXTI_LINE9)   || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11)  || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13)  || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15)  || \\\n                                ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17)  || \\\n                                ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19)  || \\\n                                ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21)  || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE51)  || \\\n                                ((LINE) == EXTI_LINE82) || ((LINE) == EXTI_LINE84)  || \\\n                                ((LINE) == EXTI_LINE85) || ((LINE) == EXTI_LINE86))\n#else\n#define IS_HAL_EXTI_CONFIG_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1)|| \\\n                                ((LINE) == EXTI_LINE2)  || ((LINE) == EXTI_LINE3)   || \\\n                                ((LINE) == EXTI_LINE4)  || ((LINE) == EXTI_LINE5)   || \\\n                                ((LINE) == EXTI_LINE6)  || ((LINE) == EXTI_LINE7)   || \\\n                                ((LINE) == EXTI_LINE8)  || ((LINE) == EXTI_LINE9)   || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11)  || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13)  || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15)  || \\\n                                ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17)  || \\\n                                ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19)  || \\\n                                ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21)  || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE51)  || \\\n                                ((LINE) == EXTI_LINE85) || ((LINE) == EXTI_LINE86))\n#endif /* DUAL_CORE */\n\n#if defined(DUAL_CORE)\n#define IS_EXTI_ALL_LINE(LINE) (((LINE) == EXTI_LINE0)  || ((LINE) == EXTI_LINE1)  || \\\n                                ((LINE) == EXTI_LINE2)  || ((LINE) == EXTI_LINE3)  || \\\n                                ((LINE) == EXTI_LINE4)  || ((LINE) == EXTI_LINE5)  || \\\n                                ((LINE) == EXTI_LINE6)  || ((LINE) == EXTI_LINE7)  || \\\n                                ((LINE) == EXTI_LINE8)  || ((LINE) == EXTI_LINE9)  || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \\\n                                ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \\\n                                ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \\\n                                ((LINE) == EXTI_LINE22) || ((LINE) == EXTI_LINE23) || \\\n                                ((LINE) == EXTI_LINE24) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE26) || ((LINE) == EXTI_LINE27) || \\\n                                ((LINE) == EXTI_LINE28) || ((LINE) == EXTI_LINE29) || \\\n                                ((LINE) == EXTI_LINE30) || ((LINE) == EXTI_LINE31) || \\\n                                ((LINE) == EXTI_LINE32) || ((LINE) == EXTI_LINE33) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE36) || ((LINE) == EXTI_LINE37) || \\\n                                ((LINE) == EXTI_LINE38) || ((LINE) == EXTI_LINE39) || \\\n                                ((LINE) == EXTI_LINE40) || ((LINE) == EXTI_LINE41) || \\\n                                ((LINE) == EXTI_LINE42) || ((LINE) == EXTI_LINE43) || \\\n                                ((LINE) == EXTI_LINE44) || ((LINE) == EXTI_LINE46) || \\\n                                ((LINE) == EXTI_LINE47) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \\\n                                ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE54) || \\\n                                ((LINE) == EXTI_LINE55) || ((LINE) == EXTI_LINE56) || \\\n                                ((LINE) == EXTI_LINE57) || ((LINE) == EXTI_LINE58) || \\\n                                ((LINE) == EXTI_LINE59) || ((LINE) == EXTI_LINE60) || \\\n                                ((LINE) == EXTI_LINE61) || ((LINE) == EXTI_LINE62) || \\\n                                ((LINE) == EXTI_LINE63) || ((LINE) == EXTI_LINE64) || \\\n                                ((LINE) == EXTI_LINE65) || ((LINE) == EXTI_LINE66) || \\\n                                ((LINE) == EXTI_LINE67) || ((LINE) == EXTI_LINE68) || \\\n                                ((LINE) == EXTI_LINE69) || ((LINE) == EXTI_LINE70) || \\\n                                ((LINE) == EXTI_LINE71) || ((LINE) == EXTI_LINE72) || \\\n                                ((LINE) == EXTI_LINE73) || ((LINE) == EXTI_LINE74) || \\\n                                ((LINE) == EXTI_LINE75) || ((LINE) == EXTI_LINE76) || \\\n                                ((LINE) == EXTI_LINE77) || ((LINE) == EXTI_LINE79) || \\\n                                ((LINE) == EXTI_LINE84) || ((LINE) == EXTI_LINE85) || \\\n                                ((LINE) == EXTI_LINE86) || ((LINE) == EXTI_LINE87) || \\\n                                ((LINE) == EXTI_LINE78) || \\\n                                ((LINE) == EXTI_LINE80) || ((LINE) == EXTI_LINE82))\n#else\n#define IS_EXTI_ALL_LINE(LINE) (((LINE) == EXTI_LINE0)  || ((LINE) == EXTI_LINE1)  || \\\n                                ((LINE) == EXTI_LINE2)  || ((LINE) == EXTI_LINE3)  || \\\n                                ((LINE) == EXTI_LINE4)  || ((LINE) == EXTI_LINE5)  || \\\n                                ((LINE) == EXTI_LINE6)  || ((LINE) == EXTI_LINE7)  || \\\n                                ((LINE) == EXTI_LINE8)  || ((LINE) == EXTI_LINE9)  || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \\\n                                ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \\\n                                ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \\\n                                ((LINE) == EXTI_LINE22) || ((LINE) == EXTI_LINE23) || \\\n                                ((LINE) == EXTI_LINE24) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE26) || ((LINE) == EXTI_LINE27) || \\\n                                ((LINE) == EXTI_LINE28) || ((LINE) == EXTI_LINE29) || \\\n                                ((LINE) == EXTI_LINE30) || ((LINE) == EXTI_LINE31) || \\\n                                ((LINE) == EXTI_LINE32) || ((LINE) == EXTI_LINE33) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE36) || ((LINE) == EXTI_LINE37) || \\\n                                ((LINE) == EXTI_LINE38) || ((LINE) == EXTI_LINE39) || \\\n                                ((LINE) == EXTI_LINE40) || ((LINE) == EXTI_LINE41) || \\\n                                ((LINE) == EXTI_LINE42) || ((LINE) == EXTI_LINE43) || \\\n                                ((LINE) == EXTI_LINE44) || \\\n                                ((LINE) == EXTI_LINE47) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \\\n                                ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE54) || \\\n                                ((LINE) == EXTI_LINE55) || ((LINE) == EXTI_LINE56) || \\\n                                ((LINE) == EXTI_LINE57) || ((LINE) == EXTI_LINE58) || \\\n                                ((LINE) == EXTI_LINE59) || ((LINE) == EXTI_LINE60) || \\\n                                ((LINE) == EXTI_LINE61) || ((LINE) == EXTI_LINE62) || \\\n                                ((LINE) == EXTI_LINE63) || ((LINE) == EXTI_LINE64) || \\\n                                ((LINE) == EXTI_LINE65) || ((LINE) == EXTI_LINE66) || \\\n                                ((LINE) == EXTI_LINE67) || ((LINE) == EXTI_LINE68) || \\\n                                ((LINE) == EXTI_LINE69) || ((LINE) == EXTI_LINE70) || \\\n                                ((LINE) == EXTI_LINE71) || ((LINE) == EXTI_LINE72) || \\\n                                ((LINE) == EXTI_LINE73) || ((LINE) == EXTI_LINE74) || \\\n                                ((LINE) == EXTI_LINE75) || ((LINE) == EXTI_LINE76) || \\\n                                ((LINE) == EXTI_LINE85) || \\\n                                ((LINE) == EXTI_LINE86) || ((LINE) == EXTI_LINE87) || \\\n                                ((LINE) == EXTI_LINE88) || ((LINE) == EXTI_LINE89) || \\\n                                ((LINE) == EXTI_LINE90) || ((LINE) == EXTI_LINE91))\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n#define IS_EXTI_D1_LINE(LINE) (((LINE) == EXTI_LINE0)  || ((LINE) == EXTI_LINE1)  || \\\n                                ((LINE) == EXTI_LINE2)  || ((LINE) == EXTI_LINE3)  || \\\n                                ((LINE) == EXTI_LINE4)  || ((LINE) == EXTI_LINE5)  || \\\n                                ((LINE) == EXTI_LINE6)  || ((LINE) == EXTI_LINE7)  || \\\n                                ((LINE) == EXTI_LINE8)  || ((LINE) == EXTI_LINE9)  || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \\\n                                ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \\\n                                ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \\\n                                ((LINE) == EXTI_LINE22) || ((LINE) == EXTI_LINE23) || \\\n                                ((LINE) == EXTI_LINE24) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE26) || ((LINE) == EXTI_LINE27) || \\\n                                ((LINE) == EXTI_LINE28) || ((LINE) == EXTI_LINE29) || \\\n                                ((LINE) == EXTI_LINE30) || ((LINE) == EXTI_LINE31) || \\\n                                ((LINE) == EXTI_LINE32) || ((LINE) == EXTI_LINE33) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE36) || ((LINE) == EXTI_LINE37) || \\\n                                ((LINE) == EXTI_LINE38) || ((LINE) == EXTI_LINE39) || \\\n                                ((LINE) == EXTI_LINE40) || ((LINE) == EXTI_LINE41) || \\\n                                ((LINE) == EXTI_LINE42) || ((LINE) == EXTI_LINE43) || \\\n                                ((LINE) == EXTI_LINE44) || ((LINE) == EXTI_LINE46) || \\\n                                ((LINE) == EXTI_LINE47) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \\\n                                ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE54) || \\\n                                ((LINE) == EXTI_LINE55) || ((LINE) == EXTI_LINE56) || \\\n                                ((LINE) == EXTI_LINE57) || ((LINE) == EXTI_LINE58) || \\\n                                ((LINE) == EXTI_LINE59) || ((LINE) == EXTI_LINE60) || \\\n                                ((LINE) == EXTI_LINE61) || ((LINE) == EXTI_LINE62) || \\\n                                ((LINE) == EXTI_LINE63) || ((LINE) == EXTI_LINE64) || \\\n                                ((LINE) == EXTI_LINE65) || ((LINE) == EXTI_LINE66) || \\\n                                ((LINE) == EXTI_LINE67) || ((LINE) == EXTI_LINE68) || \\\n                                ((LINE) == EXTI_LINE69) || ((LINE) == EXTI_LINE70) || \\\n                                ((LINE) == EXTI_LINE71) || ((LINE) == EXTI_LINE72) || \\\n                                ((LINE) == EXTI_LINE73) || ((LINE) == EXTI_LINE74) || \\\n                                ((LINE) == EXTI_LINE75) || ((LINE) == EXTI_LINE76) || \\\n                                ((LINE) == EXTI_LINE77) || ((LINE) == EXTI_LINE79) || \\\n                                ((LINE) == EXTI_LINE84) || ((LINE) == EXTI_LINE85) || \\\n                                ((LINE) == EXTI_LINE86) || ((LINE) == EXTI_LINE87))\n#else\n#define IS_EXTI_D1_LINE(LINE) (((LINE) == EXTI_LINE0)  || ((LINE) == EXTI_LINE1)  || \\\n                                ((LINE) == EXTI_LINE2)  || ((LINE) == EXTI_LINE3)  || \\\n                                ((LINE) == EXTI_LINE4)  || ((LINE) == EXTI_LINE5)  || \\\n                                ((LINE) == EXTI_LINE6)  || ((LINE) == EXTI_LINE7)  || \\\n                                ((LINE) == EXTI_LINE8)  || ((LINE) == EXTI_LINE9)  || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \\\n                                ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \\\n                                ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \\\n                                ((LINE) == EXTI_LINE22) || ((LINE) == EXTI_LINE23) || \\\n                                ((LINE) == EXTI_LINE24) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE26) || ((LINE) == EXTI_LINE27) || \\\n                                ((LINE) == EXTI_LINE28) || ((LINE) == EXTI_LINE29) || \\\n                                ((LINE) == EXTI_LINE30) || ((LINE) == EXTI_LINE31) || \\\n                                ((LINE) == EXTI_LINE32) || ((LINE) == EXTI_LINE33) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE36) || ((LINE) == EXTI_LINE37) || \\\n                                ((LINE) == EXTI_LINE38) || ((LINE) == EXTI_LINE39) || \\\n                                ((LINE) == EXTI_LINE40) || ((LINE) == EXTI_LINE41) || \\\n                                ((LINE) == EXTI_LINE42) || ((LINE) == EXTI_LINE43) || \\\n                                ((LINE) == EXTI_LINE44) || \\\n                                ((LINE) == EXTI_LINE47) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \\\n                                ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE54) || \\\n                                ((LINE) == EXTI_LINE55) || ((LINE) == EXTI_LINE56) || \\\n                                ((LINE) == EXTI_LINE57) || ((LINE) == EXTI_LINE58) || \\\n                                ((LINE) == EXTI_LINE59) || ((LINE) == EXTI_LINE60) || \\\n                                ((LINE) == EXTI_LINE61) || ((LINE) == EXTI_LINE62) || \\\n                                ((LINE) == EXTI_LINE63) || ((LINE) == EXTI_LINE64) || \\\n                                ((LINE) == EXTI_LINE65) || ((LINE) == EXTI_LINE66) || \\\n                                ((LINE) == EXTI_LINE67) || ((LINE) == EXTI_LINE68) || \\\n                                ((LINE) == EXTI_LINE69) || ((LINE) == EXTI_LINE70) || \\\n                                ((LINE) == EXTI_LINE71) || ((LINE) == EXTI_LINE72) || \\\n                                ((LINE) == EXTI_LINE73) || ((LINE) == EXTI_LINE74) || \\\n                                ((LINE) == EXTI_LINE75) || ((LINE) == EXTI_LINE76) || \\\n                                ((LINE) == EXTI_LINE85) || \\\n                                ((LINE) == EXTI_LINE86) || ((LINE) == EXTI_LINE87) || \\\n                                ((LINE) == EXTI_LINE88) || ((LINE) == EXTI_LINE89) || \\\n                                ((LINE) == EXTI_LINE90) || ((LINE) == EXTI_LINE91))\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n#define IS_EXTI_D2_LINE(LINE) (((LINE) == EXTI_LINE0)  || ((LINE) == EXTI_LINE1)    || \\\n                                ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3)   || \\\n                                ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5)   || \\\n                                ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7)   || \\\n                                ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9)   || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \\\n                                ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \\\n                                ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \\\n                                ((LINE) == EXTI_LINE22) || ((LINE) == EXTI_LINE23) || \\\n                                ((LINE) == EXTI_LINE24) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE26) || ((LINE) == EXTI_LINE27) || \\\n                                ((LINE) == EXTI_LINE28) || ((LINE) == EXTI_LINE29) || \\\n                                ((LINE) == EXTI_LINE30) || ((LINE) == EXTI_LINE31) || \\\n                                ((LINE) == EXTI_LINE32) || ((LINE) == EXTI_LINE33) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE36) || ((LINE) == EXTI_LINE37) || \\\n                                ((LINE) == EXTI_LINE38) || ((LINE) == EXTI_LINE39) || \\\n                                ((LINE) == EXTI_LINE40) || ((LINE) == EXTI_LINE41) || \\\n                                ((LINE) == EXTI_LINE42) || ((LINE) == EXTI_LINE43) || \\\n                                ((LINE) == EXTI_LINE44) || ((LINE) == EXTI_LINE46) || \\\n                                ((LINE) == EXTI_LINE47) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \\\n                                ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE54) || \\\n                                ((LINE) == EXTI_LINE55) || ((LINE) == EXTI_LINE56) || \\\n                                ((LINE) == EXTI_LINE57) || ((LINE) == EXTI_LINE58) || \\\n                                ((LINE) == EXTI_LINE59) || ((LINE) == EXTI_LINE60) || \\\n                                ((LINE) == EXTI_LINE61) || ((LINE) == EXTI_LINE62) || \\\n                                ((LINE) == EXTI_LINE63) || ((LINE) == EXTI_LINE64) || \\\n                                ((LINE) == EXTI_LINE65) || ((LINE) == EXTI_LINE66) || \\\n                                ((LINE) == EXTI_LINE67) || ((LINE) == EXTI_LINE68) || \\\n                                ((LINE) == EXTI_LINE69) || ((LINE) == EXTI_LINE70) || \\\n                                ((LINE) == EXTI_LINE71) || ((LINE) == EXTI_LINE72) || \\\n                                ((LINE) == EXTI_LINE73) || ((LINE) == EXTI_LINE74) || \\\n                                ((LINE) == EXTI_LINE75) || ((LINE) == EXTI_LINE76) || \\\n                                ((LINE) == EXTI_LINE78) || ((LINE) == EXTI_LINE80) || \\\n                                ((LINE) == EXTI_LINE82) || ((LINE) == EXTI_LINE85) || \\\n                                ((LINE) == EXTI_LINE86) || ((LINE) == EXTI_LINE87))\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n#define IS_EXTI_D3_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1)    || \\\n                                ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3)   || \\\n                                ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5)   || \\\n                                ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7)   || \\\n                                ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9)   || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE19) || ((LINE) == EXTI_LINE20) || \\\n                                ((LINE) == EXTI_LINE21) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE41) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \\\n                                ((LINE) == EXTI_LINE53))\n#elif (POWER_DOMAINS_NUMBER == 3U)\n#define IS_EXTI_D3_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1)    || \\\n                                ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3)   || \\\n                                ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5)   || \\\n                                ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7)   || \\\n                                ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9)   || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE19) || ((LINE) == EXTI_LINE20) || \\\n                                ((LINE) == EXTI_LINE21) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE41) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \\\n                                ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE88))\n#else\n#define IS_EXTI_D3_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1)    || \\\n                                ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3)   || \\\n                                ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5)   || \\\n                                ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7)   || \\\n                                ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9)   || \\\n                                ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \\\n                                ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \\\n                                ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \\\n                                ((LINE) == EXTI_LINE19) || ((LINE) == EXTI_LINE20) || \\\n                                ((LINE) == EXTI_LINE21) || ((LINE) == EXTI_LINE25) || \\\n                                ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \\\n                                ((LINE) == EXTI_LINE41) || ((LINE) == EXTI_LINE48) || \\\n                                ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \\\n                                ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE88))\n#endif /*DUAL_CORE*/\n\n\n#define  BDMA_CH6_CLEAR           ((uint32_t)0x00000000)   /*!< BDMA ch6 event selected as D3 domain pendclear source*/\n#define  BDMA_CH7_CLEAR           ((uint32_t)0x00000001)   /*!< BDMA ch7 event selected as D3 domain pendclear source*/\n#if defined (LPTIM4)\n#define  LPTIM4_OUT_CLEAR         ((uint32_t)0x00000002)   /*!< LPTIM4 out selected as D3 domain pendclear source*/\n#else\n#define  LPTIM2_OUT_CLEAR         ((uint32_t)0x00000002)   /*!< LPTIM2 out selected as D3 domain pendclear source*/\n#endif /* LPTIM4 */\n#if defined (LPTIM5)\n#define  LPTIM5_OUT_CLEAR         ((uint32_t)0x00000003)   /*!< LPTIM5 out selected as D3 domain pendclear source*/\n#else\n#define  LPTIM3_OUT_CLEAR         ((uint32_t)0x00000003)   /*!< LPTIM3 out selected as D3 domain pendclear source*/\n#endif /* LPTIM5 */\n#if defined (LPTIM4) && defined (LPTIM5)\n#define IS_EXTI_D3_CLEAR(SOURCE) (((SOURCE) == BDMA_CH6_CLEAR) || ((SOURCE) == BDMA_CH7_CLEAR)    || \\\n                                 ((SOURCE) == LPTIM4_OUT_CLEAR) || ((SOURCE) == LPTIM5_OUT_CLEAR))\n#else\n#define IS_EXTI_D3_CLEAR(SOURCE) (((SOURCE) == BDMA_CH6_CLEAR) || ((SOURCE) == BDMA_CH7_CLEAR)    || \\\n                                 ((SOURCE) == LPTIM2_OUT_CLEAR) || ((SOURCE) == LPTIM3_OUT_CLEAR))\n#endif /* LPTIM4 LPTIM5 */\n/**\n  * @}\n  */\n\n\n/** @defgroup FMC_SwapBankMapping_Config  SwapBankMapping Config\n  * @{\n  */\n#define FMC_SWAPBMAP_DISABLE             (0x00000000U)\n#define FMC_SWAPBMAP_SDRAM_SRAM          FMC_BCR1_BMAP_0\n#define FMC_SWAPBMAP_SDRAMB2             FMC_BCR1_BMAP_1\n\n#define IS_FMC_SWAPBMAP_MODE(__MODE__) (((__MODE__) == FMC_SWAPBMAP_DISABLE)    || \\\n                                        ((__MODE__) == FMC_SWAPBMAP_SDRAM_SRAM) || \\\n                                        ((__MODE__) == FMC_SWAPBMAP_SDRAMB2))\n/**\n  * @}\n  */\n\n\n/* Exported macro ------------------------------------------------------------*/\n#if defined(DUAL_CORE)\n/** @defgroup ART_Exported_Macros ART Exported Macros\n  * @{\n  */\n\n/** @brief  ART Enable Macro.\n  *         Enable the Cortex-M4 ART cache.\n  */\n#define __HAL_ART_ENABLE()   SET_BIT(ART->CTR, ART_CTR_EN)\n\n/** @brief  ART Disable Macro.\n  *         Disable the Cortex-M4 ART cache.\n  */\n#define __HAL_ART_DISABLE()   CLEAR_BIT(ART->CTR, ART_CTR_EN)\n\n/** @brief  ART Cache BaseAddress Config.\n  *         Configure the Cortex-M4 ART cache Base Address.\n  */\n#define __HAL_ART_CONFIG_BASE_ADDRESS(__BASE_ADDRESS__)   MODIFY_REG(ART->CTR, ART_CTR_PCACHEADDR, (((__BASE_ADDRESS__) >> 12U) & 0x000FFF00UL))\n\n/**\n  * @}\n  */\n#endif /* DUAL_CORE */\n\n/** @defgroup SYSCFG_Exported_Macros SYSCFG Exported Macros\n  * @{\n  */\n\n/** @brief  SYSCFG Break AXIRAM double ECC lock.\n  *         Enable and lock the connection of AXIRAM double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_AXISRAM_DBL_ECC_LOCK()     SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML)\n\n/** @brief  SYSCFG Break ITCM double ECC lock.\n  *         Enable and lock the connection of ITCM double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_ITCM_DBL_ECC_LOCK()        SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_ITCML)\n\n/** @brief  SYSCFG Break DTCM double ECC lock.\n  *         Enable and lock the connection of DTCM double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_DTCM_DBL_ECC_LOCK()        SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_DTCML)\n\n/** @brief  SYSCFG Break SRAM1 double ECC lock.\n  *         Enable and lock the connection of SRAM1 double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_SRAM1_DBL_ECC_LOCK()       SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_SRAM1L)\n\n/** @brief  SYSCFG Break SRAM2 double ECC lock.\n  *         Enable and lock the connection of SRAM2 double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_SRAM2_DBL_ECC_LOCK()       SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_SRAM2L)\n\n/** @brief  SYSCFG Break SRAM3 double ECC lock.\n  *         Enable and lock the connection of SRAM3 double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_SRAM3_DBL_ECC_LOCK()       SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_SRAM3L)\n\n/** @brief  SYSCFG Break SRAM4 double ECC lock.\n  *         Enable and lock the connection of SRAM4 double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_SRAM4_DBL_ECC_LOCK()       SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_SRAM4L)\n\n/** @brief  SYSCFG Break Backup SRAM double ECC lock.\n  *         Enable and lock the connection of Backup SRAM double ECC error to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_BKRAM_DBL_ECC_LOCK()       SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_BKRAML)\n\n/** @brief  SYSCFG Break Cortex-M7 Lockup lock.\n  *         Enable and lock the connection of Cortex-M7 LOCKUP output to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_CM7_LOCKUP_LOCK()          SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_CM7L)\n\n/** @brief  SYSCFG Break FLASH double ECC lock.\n  *         Enable and lock the connection of Flash double ECC error connection to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_FLASH_DBL_ECC_LOCK()       SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_FLASHL)\n\n/** @brief  SYSCFG Break PVD lock.\n  *         Enable and lock the PVD connection to Timer1/8/15/16/17 and HRTIMER Break input, as well as the PVDE and PLS[2:0] in the PWR_CR1 register.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_PVD_LOCK()                 SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_PVDL)\n\n#if defined(DUAL_CORE)\n/** @brief  SYSCFG Break Cortex-M4 Lockup lock.\n  *         Enable and lock the connection of Cortex-M4 LOCKUP output to TIM1/8/15/16/17 and HRTIMER Break input.\n  * @note   The selected configuration is locked and can be unlocked only by system reset.\n            This feature is available on STM32H7 rev.B and above.\n  */\n#define __HAL_SYSCFG_BREAK_CM4_LOCKUP_LOCK()          SET_BIT(SYSCFG->CFGR, SYSCFG_CFGR_CM4L)\n#endif /* DUAL_CORE */\n\n#if !defined(SYSCFG_PMCR_BOOSTEN)\n/** @brief  Fast-mode Plus driving capability enable/disable macros\n  * @param __FASTMODEPLUS__  This parameter can be a value of :\n  *     @arg @ref SYSCFG_FASTMODEPLUS_PB6 Fast-mode Plus driving capability activation on PB6\n  *     @arg @ref SYSCFG_FASTMODEPLUS_PB7 Fast-mode Plus driving capability activation on PB7\n  *     @arg @ref SYSCFG_FASTMODEPLUS_PB8 Fast-mode Plus driving capability activation on PB8\n  *     @arg @ref SYSCFG_FASTMODEPLUS_PB9 Fast-mode Plus driving capability activation on PB9\n  */\n#define __HAL_SYSCFG_FASTMODEPLUS_ENABLE(__FASTMODEPLUS__)  do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\\\n                                                                SET_BIT(SYSCFG->PMCR, (__FASTMODEPLUS__));\\\n                                                               }while(0)\n\n#define __HAL_SYSCFG_FASTMODEPLUS_DISABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\\\n                                                                CLEAR_BIT(SYSCFG->PMCR, (__FASTMODEPLUS__));\\\n                                                               }while(0)\n\n#endif /* !SYSCFG_PMCR_BOOSTEN */\n/**\n  * @}\n  */\n\n/** @brief  Freeze/Unfreeze Peripherals in Debug mode\n  */\n#define __HAL_DBGMCU_FREEZE_WWDG1()          (DBGMCU->APB3FZ1 |= (DBGMCU_APB3FZ1_DBG_WWDG1))\n\n#define __HAL_DBGMCU_FREEZE_TIM2()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM2))\n#define __HAL_DBGMCU_FREEZE_TIM3()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM3))\n#define __HAL_DBGMCU_FREEZE_TIM4()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM4))\n#define __HAL_DBGMCU_FREEZE_TIM5()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM5))\n#define __HAL_DBGMCU_FREEZE_TIM6()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM6))\n#define __HAL_DBGMCU_FREEZE_TIM7()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM7))\n#define __HAL_DBGMCU_FREEZE_TIM12()          (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM12))\n#define __HAL_DBGMCU_FREEZE_TIM13()          (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM13))\n#define __HAL_DBGMCU_FREEZE_TIM14()          (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM14))\n#define __HAL_DBGMCU_FREEZE_LPTIM1()         (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_LPTIM1))\n#define __HAL_DBGMCU_FREEZE_I2C1()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_I2C1))\n#define __HAL_DBGMCU_FREEZE_I2C2()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_I2C2))\n#define __HAL_DBGMCU_FREEZE_I2C3()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_I2C3))\n#if defined(I2C5)\n#define __HAL_DBGMCU_FREEZE_I2C5()           (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_I2C5))\n#endif /*I2C5*/\n#if defined(DBGMCU_APB1HFZ1_DBG_FDCAN)\n#define __HAL_DBGMCU_FREEZE_FDCAN()          (DBGMCU->APB1HFZ1 |= (DBGMCU_APB1HFZ1_DBG_FDCAN))\n#endif /*DBGMCU_APB1HFZ1_DBG_FDCAN*/\n\n#if defined(TIM23)\n#define __HAL_DBGMCU_FREEZE_TIM23()           (DBGMCU->APB1HFZ1 |= (DBGMCU_APB1HFZ1_DBG_TIM23))\n#endif /*TIM23*/\n#if defined(TIM24)\n#define __HAL_DBGMCU_FREEZE_TIM24()           (DBGMCU->APB1HFZ1 |= (DBGMCU_APB1HFZ1_DBG_TIM24))\n#endif /*TIM24*/\n\n#define __HAL_DBGMCU_FREEZE_TIM1()           (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM1))\n#define __HAL_DBGMCU_FREEZE_TIM8()           (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM8))\n#define __HAL_DBGMCU_FREEZE_TIM15()          (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM15))\n#define __HAL_DBGMCU_FREEZE_TIM16()          (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM16))\n#define __HAL_DBGMCU_FREEZE_TIM17()          (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM17))\n#define __HAL_DBGMCU_FREEZE_HRTIM()          (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_HRTIM))\n\n#define __HAL_DBGMCU_FREEZE_I2C4()           (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_I2C4))\n#define __HAL_DBGMCU_FREEZE_LPTIM2()         (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM2))\n#define __HAL_DBGMCU_FREEZE_LPTIM3()         (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM3))\n#define __HAL_DBGMCU_FREEZE_LPTIM4()         (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM4))\n#define __HAL_DBGMCU_FREEZE_LPTIM5()         (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM5))\n#define __HAL_DBGMCU_FREEZE_RTC()            (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_RTC))\n#define __HAL_DBGMCU_FREEZE_IWDG1()          (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_IWDG1))\n\n\n#define __HAL_DBGMCU_UnFreeze_WWDG1()          (DBGMCU->APB3FZ1  &= ~ (DBGMCU_APB3FZ1_DBG_WWDG1))\n\n#define __HAL_DBGMCU_UnFreeze_TIM2()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM2))\n#define __HAL_DBGMCU_UnFreeze_TIM3()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM3))\n#define __HAL_DBGMCU_UnFreeze_TIM4()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM4))\n#define __HAL_DBGMCU_UnFreeze_TIM5()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM5))\n#define __HAL_DBGMCU_UnFreeze_TIM6()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM6))\n#define __HAL_DBGMCU_UnFreeze_TIM7()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM7))\n#define __HAL_DBGMCU_UnFreeze_TIM12()          (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM12))\n#define __HAL_DBGMCU_UnFreeze_TIM13()          (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM13))\n#define __HAL_DBGMCU_UnFreeze_TIM14()          (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_TIM14))\n#define __HAL_DBGMCU_UnFreeze_LPTIM1()         (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_LPTIM1))\n#define __HAL_DBGMCU_UnFreeze_I2C1()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_I2C1))\n#define __HAL_DBGMCU_UnFreeze_I2C2()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_I2C2))\n#define __HAL_DBGMCU_UnFreeze_I2C3()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_I2C3))\n#if defined(I2C5)\n#define __HAL_DBGMCU_UnFreeze_I2C5()           (DBGMCU->APB1LFZ1  &= ~ (DBGMCU_APB1LFZ1_DBG_I2C5))\n#endif /*I2C5*/\n#if defined(DBGMCU_APB1HFZ1_DBG_FDCAN)\n#define __HAL_DBGMCU_UnFreeze_FDCAN()          (DBGMCU->APB1HFZ1  &= ~ (DBGMCU_APB1HFZ1_DBG_FDCAN))\n#endif /*DBGMCU_APB1HFZ1_DBG_FDCAN*/\n\n#if defined(TIM23)\n#define __HAL_DBGMCU_UnFreeze_TIM23()          (DBGMCU->APB1HFZ1 &= ~ (DBGMCU_APB1HFZ1_DBG_TIM23))\n#endif /*TIM23*/\n#if defined(TIM24)\n#define __HAL_DBGMCU_UnFreeze_TIM24()          (DBGMCU->APB1HFZ1 &= ~ (DBGMCU_APB1HFZ1_DBG_TIM24))\n#endif /*TIM24*/\n\n#define __HAL_DBGMCU_UnFreeze_TIM1()           (DBGMCU->APB2FZ1  &= ~ (DBGMCU_APB2FZ1_DBG_TIM1))\n#define __HAL_DBGMCU_UnFreeze_TIM8()           (DBGMCU->APB2FZ1  &= ~ (DBGMCU_APB2FZ1_DBG_TIM8))\n#define __HAL_DBGMCU_UnFreeze_TIM15()          (DBGMCU->APB2FZ1  &= ~ (DBGMCU_APB2FZ1_DBG_TIM15))\n#define __HAL_DBGMCU_UnFreeze_TIM16()          (DBGMCU->APB2FZ1  &= ~ (DBGMCU_APB2FZ1_DBG_TIM16))\n#define __HAL_DBGMCU_UnFreeze_TIM17()          (DBGMCU->APB2FZ1  &= ~ (DBGMCU_APB2FZ1_DBG_TIM17))\n#define __HAL_DBGMCU_UnFreeze_HRTIM()          (DBGMCU->APB2FZ1  &= ~ (DBGMCU_APB2FZ1_DBG_HRTIM))\n\n#define __HAL_DBGMCU_UnFreeze_I2C4()           (DBGMCU->APB4FZ1  &= ~ (DBGMCU_APB4FZ1_DBG_I2C4))\n#define __HAL_DBGMCU_UnFreeze_LPTIM2()         (DBGMCU->APB4FZ1  &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM2))\n#define __HAL_DBGMCU_UnFreeze_LPTIM3()         (DBGMCU->APB4FZ1  &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM3))\n#define __HAL_DBGMCU_UnFreeze_LPTIM4()         (DBGMCU->APB4FZ1  &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM4))\n#define __HAL_DBGMCU_UnFreeze_LPTIM5()         (DBGMCU->APB4FZ1  &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM5))\n#define __HAL_DBGMCU_UnFreeze_RTC()            (DBGMCU->APB4FZ1  &= ~ (DBGMCU_APB4FZ1_DBG_RTC))\n#define __HAL_DBGMCU_UnFreeze_IWDG1()          (DBGMCU->APB4FZ1  &= ~ (DBGMCU_APB4FZ1_DBG_IWDG1))\n\n\n#if defined(DUAL_CORE)\n#define __HAL_DBGMCU_FREEZE2_IWDG2()          (DBGMCU->APB4FZ2  |= (DBGMCU_APB4FZ2_DBG_IWDG2))\n#define __HAL_DBGMCU_FREEZE2_WWDG2()          (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_WWDG2))\n\n#define __HAL_DBGMCU_UnFreeze2_IWDG2()        (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_IWDG2))\n#define __HAL_DBGMCU_UnFreeze2_WWDG2()        (DBGMCU->APB1LFZ2 &= ~ (DBGMCU_APB1LFZ2_DBG_WWDG2))\n\n\n#define __HAL_DBGMCU_FREEZE2_WWDG1()          (DBGMCU->APB3FZ2 |= (DBGMCU_APB3FZ2_DBG_WWDG1))\n\n#define __HAL_DBGMCU_FREEZE2_TIM2()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM2))\n#define __HAL_DBGMCU_FREEZE2_TIM3()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM3))\n#define __HAL_DBGMCU_FREEZE2_TIM4()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM4))\n#define __HAL_DBGMCU_FREEZE2_TIM5()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM5))\n#define __HAL_DBGMCU_FREEZE2_TIM6()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM6))\n#define __HAL_DBGMCU_FREEZE2_TIM7()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM7))\n#define __HAL_DBGMCU_FREEZE2_TIM12()          (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM12))\n#define __HAL_DBGMCU_FREEZE2_TIM13()          (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM13))\n#define __HAL_DBGMCU_FREEZE2_TIM14()          (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_TIM14))\n#define __HAL_DBGMCU_FREEZE2_LPTIM1()         (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_LPTIM1))\n#define __HAL_DBGMCU_FREEZE2_I2C1()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_I2C1))\n#define __HAL_DBGMCU_FREEZE2_I2C2()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_I2C2))\n#define __HAL_DBGMCU_FREEZE2_I2C3()           (DBGMCU->APB1LFZ2 |= (DBGMCU_APB1LFZ2_DBG_I2C3))\n#define __HAL_DBGMCU_FREEZE2_FDCAN()          (DBGMCU->APB1HFZ2 |= (DBGMCU_APB1HFZ2_DBG_FDCAN))\n\n\n#define __HAL_DBGMCU_FREEZE2_TIM1()           (DBGMCU->APB2FZ2 |= (DBGMCU_APB2FZ2_DBG_TIM1))\n#define __HAL_DBGMCU_FREEZE2_TIM8()           (DBGMCU->APB2FZ2 |= (DBGMCU_APB2FZ2_DBG_TIM8))\n#define __HAL_DBGMCU_FREEZE2_TIM15()          (DBGMCU->APB2FZ2 |= (DBGMCU_APB2FZ2_DBG_TIM15))\n#define __HAL_DBGMCU_FREEZE2_TIM16()          (DBGMCU->APB2FZ2 |= (DBGMCU_APB2FZ2_DBG_TIM16))\n#define __HAL_DBGMCU_FREEZE2_TIM17()          (DBGMCU->APB2FZ2 |= (DBGMCU_APB2FZ2_DBG_TIM17))\n#define __HAL_DBGMCU_FREEZE2_HRTIM()          (DBGMCU->APB2FZ2 |= (DBGMCU_APB2FZ2_DBG_HRTIM))\n\n#define __HAL_DBGMCU_FREEZE2_I2C4()           (DBGMCU->APB4FZ2 |= (DBGMCU_APB4FZ2_DBG_I2C4))\n#define __HAL_DBGMCU_FREEZE2_LPTIM2()         (DBGMCU->APB4FZ2 |= (DBGMCU_APB4FZ2_DBG_LPTIM2))\n#define __HAL_DBGMCU_FREEZE2_LPTIM3()         (DBGMCU->APB4FZ2 |= (DBGMCU_APB4FZ2_DBG_LPTIM3))\n#define __HAL_DBGMCU_FREEZE2_LPTIM4()         (DBGMCU->APB4FZ2 |= (DBGMCU_APB4FZ2_DBG_LPTIM4))\n#define __HAL_DBGMCU_FREEZE2_LPTIM5()         (DBGMCU->APB4FZ2 |= (DBGMCU_APB4FZ2_DBG_LPTIM5))\n#define __HAL_DBGMCU_FREEZE2_RTC()            (DBGMCU->APB4FZ2 |= (DBGMCU_APB4FZ2_DBG_RTC))\n#define __HAL_DBGMCU_FREEZE2_IWDG1()          (DBGMCU->APB4FZ2 |= (DBGMCU_APB4FZ2_DBG_IWDG1))\n\n#define __HAL_DBGMCU_UnFreeze2_WWDG1()          (DBGMCU->APB3FZ2  &= ~ (DBGMCU_APB3FZ2_DBG_WWDG1))\n\n#define __HAL_DBGMCU_UnFreeze2_TIM2()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM2))\n#define __HAL_DBGMCU_UnFreeze2_TIM3()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM3))\n#define __HAL_DBGMCU_UnFreeze2_TIM4()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM4))\n#define __HAL_DBGMCU_UnFreeze2_TIM5()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM5))\n#define __HAL_DBGMCU_UnFreeze2_TIM6()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM6))\n#define __HAL_DBGMCU_UnFreeze2_TIM7()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM7))\n#define __HAL_DBGMCU_UnFreeze2_TIM12()          (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM12))\n#define __HAL_DBGMCU_UnFreeze2_TIM13()          (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM13))\n#define __HAL_DBGMCU_UnFreeze2_TIM14()          (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_TIM14))\n#define __HAL_DBGMCU_UnFreeze2_LPTIM1()         (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_LPTIM1))\n#define __HAL_DBGMCU_UnFreeze2_I2C1()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_I2C1))\n#define __HAL_DBGMCU_UnFreeze2_I2C2()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_I2C2))\n#define __HAL_DBGMCU_UnFreeze2_I2C3()           (DBGMCU->APB1LFZ2  &= ~ (DBGMCU_APB1LFZ2_DBG_I2C3))\n#define __HAL_DBGMCU_UnFreeze2_FDCAN()          (DBGMCU->APB1HFZ2  &= ~ (DBGMCU_APB1HFZ2_DBG_FDCAN))\n\n\n#define __HAL_DBGMCU_UnFreeze2_TIM1()           (DBGMCU->APB2FZ2  &= ~ (DBGMCU_APB2FZ2_DBG_TIM1))\n#define __HAL_DBGMCU_UnFreeze2_TIM8()           (DBGMCU->APB2FZ2  &= ~ (DBGMCU_APB2FZ2_DBG_TIM8))\n#define __HAL_DBGMCU_UnFreeze2_TIM15()          (DBGMCU->APB2FZ2  &= ~ (DBGMCU_APB2FZ2_DBG_TIM15))\n#define __HAL_DBGMCU_UnFreeze2_TIM16()          (DBGMCU->APB2FZ2  &= ~ (DBGMCU_APB2FZ2_DBG_TIM16))\n#define __HAL_DBGMCU_UnFreeze2_TIM17()          (DBGMCU->APB2FZ2  &= ~ (DBGMCU_APB2FZ2_DBG_TIM17))\n#define __HAL_DBGMCU_UnFreeze2_HRTIM()          (DBGMCU->APB2FZ2  &= ~ (DBGMCU_APB2FZ2_DBG_HRTIM))\n\n#define __HAL_DBGMCU_UnFreeze2_I2C4()           (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_I2C4))\n#define __HAL_DBGMCU_UnFreeze2_LPTIM2()         (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_LPTIM2))\n#define __HAL_DBGMCU_UnFreeze2_LPTIM3()         (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_LPTIM3))\n#define __HAL_DBGMCU_UnFreeze2_LPTIM4()         (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_LPTIM4))\n#define __HAL_DBGMCU_UnFreeze2_LPTIM5()         (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_LPTIM5))\n#define __HAL_DBGMCU_UnFreeze2_RTC()            (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_RTC))\n#define __HAL_DBGMCU_UnFreeze2_IWDG1()          (DBGMCU->APB4FZ2  &= ~ (DBGMCU_APB4FZ2_DBG_IWDG1))\n\n#endif /*DUAL_CORE*/\n\n/** @defgroup HAL_Private_Macros HAL Private Macros\n  * @{\n  */\n#define IS_TICKFREQ(FREQ) (((FREQ) == HAL_TICK_FREQ_10HZ)  || \\\n                           ((FREQ) == HAL_TICK_FREQ_100HZ) || \\\n                           ((FREQ) == HAL_TICK_FREQ_1KHZ))\n/**\n  * @}\n  */\n\n/* Exported variables --------------------------------------------------------*/\n\n/** @addtogroup HAL_Exported_Variables\n  * @{\n  */\nextern __IO uint32_t uwTick;\nextern uint32_t uwTickPrio;\nextern HAL_TickFreqTypeDef uwTickFreq;\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n\n/* Initialization and de-initialization functions  ******************************/\nHAL_StatusTypeDef HAL_Init(void);\nHAL_StatusTypeDef HAL_DeInit(void);\nvoid HAL_MspInit(void);\nvoid HAL_MspDeInit(void);\nHAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority);\n\n/* Peripheral Control functions  ************************************************/\nvoid HAL_IncTick(void);\nvoid HAL_Delay(uint32_t Delay);\nuint32_t HAL_GetTick(void);\nuint32_t HAL_GetTickPrio(void);\nHAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq);\nHAL_TickFreqTypeDef HAL_GetTickFreq(void);\nvoid HAL_SuspendTick(void);\nvoid HAL_ResumeTick(void);\nuint32_t HAL_GetHalVersion(void);\nuint32_t HAL_GetREVID(void);\nuint32_t HAL_GetDEVID(void);\nuint32_t HAL_GetUIDw0(void);\nuint32_t HAL_GetUIDw1(void);\nuint32_t HAL_GetUIDw2(void);\n#if defined(SYSCFG_PMCR_EPIS_SEL)\nvoid HAL_SYSCFG_ETHInterfaceSelect(uint32_t SYSCFG_ETHInterface);\n#endif /* SYSCFG_PMCR_EPIS_SEL */\nvoid HAL_SYSCFG_AnalogSwitchConfig(uint32_t SYSCFG_AnalogSwitch , uint32_t SYSCFG_SwitchState );\n#if defined(SYSCFG_PMCR_BOOSTEN)\nvoid HAL_SYSCFG_EnableBOOST(void);\nvoid HAL_SYSCFG_DisableBOOST(void);\n#endif /* SYSCFG_PMCR_BOOSTEN */\n\n#if defined (SYSCFG_UR2_BOOT_ADD0) ||  defined (SYSCFG_UR2_BCM7_ADD0)\nvoid HAL_SYSCFG_CM7BootAddConfig(uint32_t BootRegister, uint32_t BootAddress);\n#endif /* SYSCFG_UR2_BOOT_ADD0 || SYSCFG_UR2_BCM7_ADD0*/\n\n#if defined(DUAL_CORE)\nvoid HAL_SYSCFG_CM4BootAddConfig(uint32_t BootRegister, uint32_t BootAddress);\nvoid HAL_SYSCFG_EnableCM7BOOT(void);\nvoid HAL_SYSCFG_DisableCM7BOOT(void);\nvoid HAL_SYSCFG_EnableCM4BOOT(void);\nvoid HAL_SYSCFG_DisableCM4BOOT(void);\n#endif /*DUAL_CORE*/\nvoid HAL_EnableCompensationCell(void);\nvoid HAL_DisableCompensationCell(void);\nvoid HAL_SYSCFG_EnableIOSpeedOptimize(void);\nvoid HAL_SYSCFG_DisableIOSpeedOptimize(void);\nvoid HAL_SYSCFG_CompensationCodeSelect(uint32_t SYSCFG_CompCode);\nvoid HAL_SYSCFG_CompensationCodeConfig(uint32_t SYSCFG_PMOSCode, uint32_t SYSCFG_NMOSCode);\n#if defined(SYSCFG_CCCR_NCC_MMC)\nvoid HAL_SYSCFG_VDDMMC_CompensationCodeConfig(uint32_t SYSCFG_PMOSCode, uint32_t SYSCFG_NMOSCode);\n#endif /* SYSCFG_CCCR_NCC_MMC */\nvoid HAL_DBGMCU_EnableDBGSleepMode(void);\nvoid HAL_DBGMCU_DisableDBGSleepMode(void);\nvoid HAL_DBGMCU_EnableDBGStopMode(void);\nvoid HAL_DBGMCU_DisableDBGStopMode(void);\nvoid HAL_DBGMCU_EnableDBGStandbyMode(void);\nvoid HAL_DBGMCU_DisableDBGStandbyMode(void);\n#if defined(DUAL_CORE)\nvoid HAL_EnableDomain2DBGSleepMode(void);\nvoid HAL_DisableDomain2DBGSleepMode(void);\nvoid HAL_EnableDomain2DBGStopMode(void);\nvoid HAL_DisableDomain2DBGStopMode(void);\nvoid HAL_EnableDomain2DBGStandbyMode(void);\nvoid HAL_DisableDomain2DBGStandbyMode(void);\n#endif /*DUAL_CORE*/\n#if defined(DBGMCU_CR_DBG_STOPD3)\nvoid HAL_EnableDomain3DBGStopMode(void);\nvoid HAL_DisableDomain3DBGStopMode(void);\n#endif /*DBGMCU_CR_DBG_STOPD3*/\n#if defined(DBGMCU_CR_DBG_STANDBYD3)\nvoid HAL_EnableDomain3DBGStandbyMode(void);\nvoid HAL_DisableDomain3DBGStandbyMode(void);\n#endif /*DBGMCU_CR_DBG_STANDBYD3*/\nvoid HAL_EXTI_EdgeConfig(uint32_t EXTI_Line , uint32_t EXTI_Edge );\nvoid HAL_EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);\n#if defined(DUAL_CORE)\nvoid HAL_EXTI_D2_ClearFlag(uint32_t EXTI_Line);\n#endif /*DUAL_CORE*/\nvoid HAL_EXTI_D1_ClearFlag(uint32_t EXTI_Line);\nvoid HAL_EXTI_D1_EventInputConfig(uint32_t EXTI_Line , uint32_t EXTI_Mode,  uint32_t EXTI_LineCmd);\n#if defined(DUAL_CORE)\nvoid HAL_EXTI_D2_EventInputConfig(uint32_t EXTI_Line , uint32_t EXTI_Mode,  uint32_t EXTI_LineCmd);\n#endif /*DUAL_CORE*/\nvoid HAL_EXTI_D3_EventInputConfig(uint32_t EXTI_Line, uint32_t EXTI_LineCmd , uint32_t EXTI_ClearSrc);\nvoid HAL_SetFMCMemorySwappingConfig(uint32_t BankMapConfig);\nuint32_t HAL_GetFMCMemorySwappingConfig(void);\nvoid HAL_SYSCFG_VREFBUF_VoltageScalingConfig(uint32_t VoltageScaling);\nvoid HAL_SYSCFG_VREFBUF_HighImpedanceConfig(uint32_t Mode);\nvoid HAL_SYSCFG_VREFBUF_TrimmingConfig(uint32_t TrimmingValue);\nHAL_StatusTypeDef HAL_SYSCFG_EnableVREFBUF(void);\nvoid HAL_SYSCFG_DisableVREFBUF(void);\n#if defined(SYSCFG_ADC2ALT_ADC2_ROUT0)\nvoid HAL_SYSCFG_ADC2ALT_Rout0Config(uint32_t Adc2AltRout0);\n#endif /*SYSCFG_ADC2ALT_ADC2_ROUT0*/\n#if defined(SYSCFG_ADC2ALT_ADC2_ROUT1)\nvoid HAL_SYSCFG_ADC2ALT_Rout1Config(uint32_t Adc2AltRout1);\n#endif /*SYSCFG_ADC2ALT_ADC2_ROUT1*/\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_H */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_cortex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_cortex.h\n  * @author  MCD Application Team\n  * @brief   Header file of CORTEX HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_CORTEX_H\n#define STM32H7xx_HAL_CORTEX_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup CORTEX\n  * @{\n  */\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup CORTEX_Exported_Types Cortex Exported Types\n  * @{\n  */\n\n#if (__MPU_PRESENT == 1)\n/** @defgroup CORTEX_MPU_Region_Initialization_Structure_definition MPU Region Initialization Structure Definition\n  * @brief  MPU Region initialization structure\n  * @{\n  */\ntypedef struct\n{\n  uint8_t                Enable;                /*!< Specifies the status of the region.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Enable                 */\n  uint8_t                Number;                /*!< Specifies the number of the region to protect.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Number                 */\n  uint32_t               BaseAddress;           /*!< Specifies the base address of the region to protect.                           */\n  uint8_t                Size;                  /*!< Specifies the size of the region to protect.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Size                   */\n  uint8_t                SubRegionDisable;      /*!< Specifies the number of the subregion protection to disable.\n                                                     This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF    */\n  uint8_t                TypeExtField;          /*!< Specifies the TEX field level.\n                                                     This parameter can be a value of @ref CORTEX_MPU_TEX_Levels                    */\n  uint8_t                AccessPermission;      /*!< Specifies the region access permission type.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Permission_Attributes  */\n  uint8_t                DisableExec;           /*!< Specifies the instruction access status.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Instruction_Access            */\n  uint8_t                IsShareable;           /*!< Specifies the shareability status of the protected region.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Access_Shareable              */\n  uint8_t                IsCacheable;           /*!< Specifies the cacheable status of the region protected.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Access_Cacheable              */\n  uint8_t                IsBufferable;          /*!< Specifies the bufferable status of the protected region.\n                                                     This parameter can be a value of @ref CORTEX_MPU_Access_Bufferable             */\n}MPU_Region_InitTypeDef;\n/**\n  * @}\n  */\n#endif /* __MPU_PRESENT */\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants\n  * @{\n  */\n\n/** @defgroup CORTEX_Preemption_Priority_Group CORTEX Preemption Priority Group\n  * @{\n  */\n#define NVIC_PRIORITYGROUP_0         ((uint32_t)0x00000007) /*!< 0 bits for pre-emption priority\n                                                                 4 bits for subpriority */\n#define NVIC_PRIORITYGROUP_1         ((uint32_t)0x00000006) /*!< 1 bits for pre-emption priority\n                                                                 3 bits for subpriority */\n#define NVIC_PRIORITYGROUP_2         ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority\n                                                                 2 bits for subpriority */\n#define NVIC_PRIORITYGROUP_3         ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority\n                                                                 1 bits for subpriority */\n#define NVIC_PRIORITYGROUP_4         ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority\n                                                                 0 bits for subpriority */\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_SysTick_clock_source CORTEX _SysTick clock source\n  * @{\n  */\n#define SYSTICK_CLKSOURCE_HCLK_DIV8    ((uint32_t)0x00000000)\n#define SYSTICK_CLKSOURCE_HCLK         ((uint32_t)0x00000004)\n\n/**\n  * @}\n  */\n\n#if (__MPU_PRESENT == 1)\n/** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control MPU HFNMI and PRIVILEGED Access control\n  * @{\n  */\n#define  MPU_HFNMI_PRIVDEF_NONE      ((uint32_t)0x00000000)\n#define  MPU_HARDFAULT_NMI           ((uint32_t)0x00000002)\n#define  MPU_PRIVILEGED_DEFAULT      ((uint32_t)0x00000004)\n#define  MPU_HFNMI_PRIVDEF           ((uint32_t)0x00000006)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Region_Enable CORTEX MPU Region Enable\n  * @{\n  */\n#define  MPU_REGION_ENABLE     ((uint8_t)0x01)\n#define  MPU_REGION_DISABLE    ((uint8_t)0x00)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Instruction_Access CORTEX MPU Instruction Access\n  * @{\n  */\n#define  MPU_INSTRUCTION_ACCESS_ENABLE      ((uint8_t)0x00)\n#define  MPU_INSTRUCTION_ACCESS_DISABLE     ((uint8_t)0x01)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Access_Shareable CORTEX MPU Instruction Access Shareable\n  * @{\n  */\n#define  MPU_ACCESS_SHAREABLE        ((uint8_t)0x01)\n#define  MPU_ACCESS_NOT_SHAREABLE    ((uint8_t)0x00)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Access_Cacheable CORTEX MPU Instruction Access Cacheable\n  * @{\n  */\n#define  MPU_ACCESS_CACHEABLE         ((uint8_t)0x01)\n#define  MPU_ACCESS_NOT_CACHEABLE     ((uint8_t)0x00)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Access_Bufferable CORTEX MPU Instruction Access Bufferable\n  * @{\n  */\n#define  MPU_ACCESS_BUFFERABLE         ((uint8_t)0x01)\n#define  MPU_ACCESS_NOT_BUFFERABLE     ((uint8_t)0x00)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_TEX_Levels MPU TEX Levels\n  * @{\n  */\n#define  MPU_TEX_LEVEL0    ((uint8_t)0x00)\n#define  MPU_TEX_LEVEL1    ((uint8_t)0x01)\n#define  MPU_TEX_LEVEL2    ((uint8_t)0x02)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Region_Size CORTEX MPU Region Size\n  * @{\n  */\n#define   MPU_REGION_SIZE_32B      ((uint8_t)0x04)\n#define   MPU_REGION_SIZE_64B      ((uint8_t)0x05)\n#define   MPU_REGION_SIZE_128B     ((uint8_t)0x06)\n#define   MPU_REGION_SIZE_256B     ((uint8_t)0x07)\n#define   MPU_REGION_SIZE_512B     ((uint8_t)0x08)\n#define   MPU_REGION_SIZE_1KB      ((uint8_t)0x09)\n#define   MPU_REGION_SIZE_2KB      ((uint8_t)0x0A)\n#define   MPU_REGION_SIZE_4KB      ((uint8_t)0x0B)\n#define   MPU_REGION_SIZE_8KB      ((uint8_t)0x0C)\n#define   MPU_REGION_SIZE_16KB     ((uint8_t)0x0D)\n#define   MPU_REGION_SIZE_32KB     ((uint8_t)0x0E)\n#define   MPU_REGION_SIZE_64KB     ((uint8_t)0x0F)\n#define   MPU_REGION_SIZE_128KB    ((uint8_t)0x10)\n#define   MPU_REGION_SIZE_256KB    ((uint8_t)0x11)\n#define   MPU_REGION_SIZE_512KB    ((uint8_t)0x12)\n#define   MPU_REGION_SIZE_1MB      ((uint8_t)0x13)\n#define   MPU_REGION_SIZE_2MB      ((uint8_t)0x14)\n#define   MPU_REGION_SIZE_4MB      ((uint8_t)0x15)\n#define   MPU_REGION_SIZE_8MB      ((uint8_t)0x16)\n#define   MPU_REGION_SIZE_16MB     ((uint8_t)0x17)\n#define   MPU_REGION_SIZE_32MB     ((uint8_t)0x18)\n#define   MPU_REGION_SIZE_64MB     ((uint8_t)0x19)\n#define   MPU_REGION_SIZE_128MB    ((uint8_t)0x1A)\n#define   MPU_REGION_SIZE_256MB    ((uint8_t)0x1B)\n#define   MPU_REGION_SIZE_512MB    ((uint8_t)0x1C)\n#define   MPU_REGION_SIZE_1GB      ((uint8_t)0x1D)\n#define   MPU_REGION_SIZE_2GB      ((uint8_t)0x1E)\n#define   MPU_REGION_SIZE_4GB      ((uint8_t)0x1F)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Region_Permission_Attributes CORTEX MPU Region Permission Attributes\n  * @{\n  */\n#define  MPU_REGION_NO_ACCESS      ((uint8_t)0x00)\n#define  MPU_REGION_PRIV_RW        ((uint8_t)0x01)\n#define  MPU_REGION_PRIV_RW_URO    ((uint8_t)0x02)\n#define  MPU_REGION_FULL_ACCESS    ((uint8_t)0x03)\n#define  MPU_REGION_PRIV_RO        ((uint8_t)0x05)\n#define  MPU_REGION_PRIV_RO_URO    ((uint8_t)0x06)\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_MPU_Region_Number CORTEX MPU Region Number\n  * @{\n  */\n#define  MPU_REGION_NUMBER0    ((uint8_t)0x00)\n#define  MPU_REGION_NUMBER1    ((uint8_t)0x01)\n#define  MPU_REGION_NUMBER2    ((uint8_t)0x02)\n#define  MPU_REGION_NUMBER3    ((uint8_t)0x03)\n#define  MPU_REGION_NUMBER4    ((uint8_t)0x04)\n#define  MPU_REGION_NUMBER5    ((uint8_t)0x05)\n#define  MPU_REGION_NUMBER6    ((uint8_t)0x06)\n#define  MPU_REGION_NUMBER7    ((uint8_t)0x07)\n#if !defined(CORE_CM4)\n#define  MPU_REGION_NUMBER8    ((uint8_t)0x08)\n#define  MPU_REGION_NUMBER9    ((uint8_t)0x09)\n#define  MPU_REGION_NUMBER10   ((uint8_t)0x0A)\n#define  MPU_REGION_NUMBER11   ((uint8_t)0x0B)\n#define  MPU_REGION_NUMBER12   ((uint8_t)0x0C)\n#define  MPU_REGION_NUMBER13   ((uint8_t)0x0D)\n#define  MPU_REGION_NUMBER14   ((uint8_t)0x0E)\n#define  MPU_REGION_NUMBER15   ((uint8_t)0x0F)\n#endif /* !defined(CORE_CM4) */\n\n/**\n  * @}\n  */\n#endif /* __MPU_PRESENT */\n\n/**\n  * @}\n  */\n\n\n/* Exported Macros -----------------------------------------------------------*/\n/** @defgroup CORTEX_Exported_Macros CORTEX Exported Macros\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n\n\n/** @defgroup CORTEX_CPU_Identifier CORTEX_CPU_Identifier\n  * @{\n  */\n#define CM7_CPUID        ((uint32_t)0x00000003)\n\n#if defined(DUAL_CORE)\n#define CM4_CPUID        ((uint32_t)0x00000001)\n#endif /*DUAL_CORE*/\n/**\n  * @}\n  */\n\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup CORTEX_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup CORTEX_Exported_Functions_Group1\n * @{\n */\n/* Initialization and de-initialization functions *****************************/\nvoid HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup);\nvoid HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);\nvoid HAL_NVIC_EnableIRQ(IRQn_Type IRQn);\nvoid HAL_NVIC_DisableIRQ(IRQn_Type IRQn);\nvoid HAL_NVIC_SystemReset(void);\nuint32_t HAL_SYSTICK_Config(uint32_t TicksNumb);\n/**\n  * @}\n  */\n\n/** @addtogroup CORTEX_Exported_Functions_Group2\n * @{\n */\n/* Peripheral Control functions ***********************************************/\n#if (__MPU_PRESENT == 1)\nvoid HAL_MPU_Enable(uint32_t MPU_Control);\nvoid HAL_MPU_Disable(void);\nvoid HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init);\n#endif /* __MPU_PRESENT */\nuint32_t HAL_NVIC_GetPriorityGrouping(void);\nvoid HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority);\nuint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn);\nvoid HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn);\nvoid HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn);\nuint32_t HAL_NVIC_GetActive(IRQn_Type IRQn);\nvoid HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource);\nvoid HAL_SYSTICK_IRQHandler(void);\nvoid HAL_SYSTICK_Callback(void);\nuint32_t HAL_GetCurrentCPUID(void);\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup CORTEX_Private_Macros CORTEX Private Macros\n  * @{\n  */\n#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PRIORITYGROUP_0) || \\\n                                       ((GROUP) == NVIC_PRIORITYGROUP_1) || \\\n                                       ((GROUP) == NVIC_PRIORITYGROUP_2) || \\\n                                       ((GROUP) == NVIC_PRIORITYGROUP_3) || \\\n                                       ((GROUP) == NVIC_PRIORITYGROUP_4))\n\n#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY)  ((PRIORITY) < 0x10UL)\n\n#define IS_NVIC_SUB_PRIORITY(PRIORITY)         ((PRIORITY) < 0x10UL)\n\n#define IS_NVIC_DEVICE_IRQ(IRQ)                (((int32_t)IRQ) >= 0x00)\n\n#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \\\n                                       ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8))\n\n#if (__MPU_PRESENT == 1)\n#define IS_MPU_REGION_ENABLE(STATE) (((STATE) == MPU_REGION_ENABLE) || \\\n                                     ((STATE) == MPU_REGION_DISABLE))\n\n#define IS_MPU_INSTRUCTION_ACCESS(STATE) (((STATE) == MPU_INSTRUCTION_ACCESS_ENABLE) || \\\n                                          ((STATE) == MPU_INSTRUCTION_ACCESS_DISABLE))\n\n#define IS_MPU_ACCESS_SHAREABLE(STATE)   (((STATE) == MPU_ACCESS_SHAREABLE) || \\\n                                          ((STATE) == MPU_ACCESS_NOT_SHAREABLE))\n\n#define IS_MPU_ACCESS_CACHEABLE(STATE)   (((STATE) == MPU_ACCESS_CACHEABLE) || \\\n                                          ((STATE) == MPU_ACCESS_NOT_CACHEABLE))\n\n#define IS_MPU_ACCESS_BUFFERABLE(STATE)   (((STATE) == MPU_ACCESS_BUFFERABLE) || \\\n                                          ((STATE) == MPU_ACCESS_NOT_BUFFERABLE))\n\n#define IS_MPU_TEX_LEVEL(TYPE) (((TYPE) == MPU_TEX_LEVEL0)  || \\\n                                ((TYPE) == MPU_TEX_LEVEL1)  || \\\n                                ((TYPE) == MPU_TEX_LEVEL2))\n\n#define IS_MPU_REGION_PERMISSION_ATTRIBUTE(TYPE) (((TYPE) == MPU_REGION_NO_ACCESS)   || \\\n                                                  ((TYPE) == MPU_REGION_PRIV_RW)     || \\\n                                                  ((TYPE) == MPU_REGION_PRIV_RW_URO) || \\\n                                                  ((TYPE) == MPU_REGION_FULL_ACCESS) || \\\n                                                  ((TYPE) == MPU_REGION_PRIV_RO)     || \\\n                                                  ((TYPE) == MPU_REGION_PRIV_RO_URO))\n\n#if !defined(CORE_CM4)\n#define IS_MPU_REGION_NUMBER(NUMBER)    (((NUMBER) == MPU_REGION_NUMBER0)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER1)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER2)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER3)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER4)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER5)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER6)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER7)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER8)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER9)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER10) || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER11) || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER12) || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER13) || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER14) || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER15))\n#else\n#define IS_MPU_REGION_NUMBER(NUMBER)    (((NUMBER) == MPU_REGION_NUMBER0)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER1)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER2)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER3)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER4)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER5)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER6)  || \\\n                                         ((NUMBER) == MPU_REGION_NUMBER7))\n#endif /* !defined(CORE_CM4) */\n\n#define IS_MPU_REGION_SIZE(SIZE)    (((SIZE) == MPU_REGION_SIZE_32B)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_64B)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_128B)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_256B)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_512B)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_1KB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_2KB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_4KB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_8KB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_16KB)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_32KB)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_64KB)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_128KB) || \\\n                                     ((SIZE) == MPU_REGION_SIZE_256KB) || \\\n                                     ((SIZE) == MPU_REGION_SIZE_512KB) || \\\n                                     ((SIZE) == MPU_REGION_SIZE_1MB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_2MB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_4MB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_8MB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_16MB)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_32MB)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_64MB)  || \\\n                                     ((SIZE) == MPU_REGION_SIZE_128MB) || \\\n                                     ((SIZE) == MPU_REGION_SIZE_256MB) || \\\n                                     ((SIZE) == MPU_REGION_SIZE_512MB) || \\\n                                     ((SIZE) == MPU_REGION_SIZE_1GB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_2GB)   || \\\n                                     ((SIZE) == MPU_REGION_SIZE_4GB))\n\n#define IS_MPU_SUB_REGION_DISABLE(SUBREGION)  ((SUBREGION) < (uint16_t)0x00FF)\n#endif /* __MPU_PRESENT */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_CORTEX_H */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_def.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_def.h\n  * @author  MCD Application Team\n  * @brief   This file contains HAL common defines, enumeration, macros and\n  *          structures definitions.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_DEF\n#define STM32H7xx_HAL_DEF\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx.h\"\n#include \"Legacy/stm32_hal_legacy.h\"\n#include <stddef.h>\n#include <math.h>\n\n/* Exported types ------------------------------------------------------------*/\n\n/**\n  * @brief  HAL Status structures definition\n  */\ntypedef enum\n{\n  HAL_OK       = 0x00,\n  HAL_ERROR    = 0x01,\n  HAL_BUSY     = 0x02,\n  HAL_TIMEOUT  = 0x03\n} HAL_StatusTypeDef;\n\n/**\n  * @brief  HAL Lock structures definition\n  */\ntypedef enum\n{\n  HAL_UNLOCKED = 0x00,\n  HAL_LOCKED   = 0x01\n} HAL_LockTypeDef;\n\n/* Exported macro ------------------------------------------------------------*/\n\n#define HAL_MAX_DELAY      0xFFFFFFFFU\n\n#define HAL_IS_BIT_SET(REG, BIT)         (((REG) & (BIT)) == (BIT))\n#define HAL_IS_BIT_CLR(REG, BIT)         (((REG) & (BIT)) == 0U)\n\n#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__)               \\\n                        do{                                                      \\\n                              (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \\\n                              (__DMA_HANDLE__).Parent = (__HANDLE__);             \\\n                          } while(0)\n\n#define UNUSED(x) ((void)(x))\n\n/** @brief Reset the Handle's State field.\n  * @param __HANDLE__: specifies the Peripheral Handle.\n  * @note  This macro can be used for the following purpose: \n  *          - When the Handle is declared as local variable; before passing it as parameter\n  *            to HAL_PPP_Init() for the first time, it is mandatory to use this macro \n  *            to set to 0 the Handle's \"State\" field.\n  *            Otherwise, \"State\" field may have any random value and the first time the function \n  *            HAL_PPP_Init() is called, the low level hardware initialization will be missed\n  *            (i.e. HAL_PPP_MspInit() will not be executed).\n  *          - When there is a need to reconfigure the low level hardware: instead of calling\n  *            HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init().\n  *            In this later function, when the Handle's \"State\" field is set to 0, it will execute the function\n  *            HAL_PPP_MspInit() which will reconfigure the low level hardware.\n  * @retval None\n  */\n#define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0)\n\n#if (USE_RTOS == 1)\n  #error \" USE_RTOS should be 0 in the current HAL release \"\n#else\n  #define __HAL_LOCK(__HANDLE__)                                           \\\n                                do{                                        \\\n                                    if((__HANDLE__)->Lock == HAL_LOCKED)   \\\n                                    {                                      \\\n                                       return HAL_BUSY;                    \\\n                                    }                                      \\\n                                    else                                   \\\n                                    {                                      \\\n                                       (__HANDLE__)->Lock = HAL_LOCKED;    \\\n                                    }                                      \\\n                                  }while (0)\n\n  #define __HAL_UNLOCK(__HANDLE__)                                          \\\n                                  do{                                       \\\n                                      (__HANDLE__)->Lock = HAL_UNLOCKED;    \\\n                                    }while (0)\n#endif /* USE_RTOS */\n\n\n#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 */\n  #ifndef __weak\n    #define __weak  __attribute__((weak))\n  #endif\n  #ifndef __packed\n    #define __packed  __attribute__((packed))\n  #endif\n#elif defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */\n  #ifndef __weak\n    #define __weak   __attribute__((weak))\n  #endif /* __weak */\n  #ifndef __packed\n    #define __packed __attribute__((__packed__))\n  #endif /* __packed */\n#endif /* __GNUC__ */\n\n\n/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive \"#pragma data_alignment=4\" must be used instead */\n#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 */\n  #ifndef __ALIGN_BEGIN\n    #define __ALIGN_BEGIN\n  #endif\n  #ifndef __ALIGN_END\n    #define __ALIGN_END      __attribute__ ((aligned (4)))\n  #endif\n#elif defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */\n  #ifndef __ALIGN_END\n    #define __ALIGN_END    __attribute__ ((aligned (4)))\n  #endif /* __ALIGN_END */\n  #ifndef __ALIGN_BEGIN\n    #define __ALIGN_BEGIN\n  #endif /* __ALIGN_BEGIN */\n#else\n  #ifndef __ALIGN_END\n    #define __ALIGN_END\n  #endif /* __ALIGN_END */\n  #ifndef __ALIGN_BEGIN\n    #if defined   (__CC_ARM)      /* ARM Compiler V5 */\n      #define __ALIGN_BEGIN    __align(4)\n    #elif defined (__ICCARM__)    /* IAR Compiler */\n      #define __ALIGN_BEGIN\n    #endif /* __CC_ARM */\n  #endif /* __ALIGN_BEGIN */\n#endif /* __GNUC__ */\n\n/* Macro to get variable aligned on 32-bytes,needed for cache maintenance purpose */\n#if defined   (__GNUC__)        /* GNU Compiler */\n  #define ALIGN_32BYTES(buf)  buf __attribute__ ((aligned (32)))                                    \n#elif defined (__ICCARM__)    /* IAR Compiler */\n  #define ALIGN_32BYTES(buf) _Pragma(\"data_alignment=32\") buf  \n#elif defined   (__CC_ARM)      /* ARM Compiler */\n  #define ALIGN_32BYTES(buf) __align(32) buf  \n#endif\n\n/**\n  * @brief  __RAM_FUNC definition\n  */\n#if defined ( __CC_ARM   ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))\n/* ARM Compiler V4/V5 and V6\n   --------------------------\n   RAM functions are defined using the toolchain options.\n   Functions that are executed in RAM should reside in a separate source module.\n   Using the 'Options for File' dialog you can simply change the 'Code / Const'\n   area of a module to a memory space in physical RAM.\n   Available memory areas are declared in the 'Target' tab of the 'Options for Target'\n   dialog.\n*/\n#define __RAM_FUNC\n\n#elif defined ( __ICCARM__ )\n/* ICCARM Compiler\n   ---------------\n   RAM functions are defined using a specific toolchain keyword \"__ramfunc\".\n*/\n#define __RAM_FUNC __ramfunc\n\n#elif defined   (  __GNUC__  )\n/* GNU Compiler\n   ------------\n  RAM functions are defined using a specific toolchain attribute\n   \"__attribute__((section(\".RamFunc\")))\".\n*/\n#define __RAM_FUNC __attribute__((section(\".RamFunc\")))\n\n#endif\n\n/**\n  * @brief  __NOINLINE definition\n  */\n#if defined ( __CC_ARM   ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) || defined   (  __GNUC__  )\n/* ARM V4/V5 and V6 & GNU Compiler\n   -------------------------------\n*/\n#define __NOINLINE __attribute__ ( (noinline) )\n\n#elif defined ( __ICCARM__ )\n/* ICCARM Compiler\n   ---------------\n*/\n#define __NOINLINE _Pragma(\"optimize = no_inline\")\n\n#endif\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_DEF */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dma.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_dma.h\n  * @author  MCD Application Team\n  * @brief   Header file of DMA HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_DMA_H\n#define STM32H7xx_HAL_DMA_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup DMA\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n\n/** @defgroup DMA_Exported_Types DMA Exported Types\n  * @brief    DMA Exported Types\n  * @{\n  */\n\n/**\n  * @brief  DMA Configuration Structure definition\n  */\ntypedef struct\n{\n  uint32_t Request;               /*!< Specifies the request selected for the specified stream.\n                                           This parameter can be a value of @ref DMA_Request_selection              */\n\n  uint32_t Direction;            /*!< Specifies if the data will be transferred from memory to peripheral,\n                                      from memory to memory or from peripheral to memory.\n                                      This parameter can be a value of @ref DMA_Data_transfer_direction              */\n\n  uint32_t PeriphInc;            /*!< Specifies whether the Peripheral address register should be incremented or not.\n                                      This parameter can be a value of @ref DMA_Peripheral_incremented_mode          */\n\n  uint32_t MemInc;               /*!< Specifies whether the memory address register should be incremented or not.\n                                      This parameter can be a value of @ref DMA_Memory_incremented_mode              */\n\n  uint32_t PeriphDataAlignment;  /*!< Specifies the Peripheral data width.\n                                      This parameter can be a value of @ref DMA_Peripheral_data_size                 */\n\n  uint32_t MemDataAlignment;     /*!< Specifies the Memory data width.\n                                      This parameter can be a value of @ref DMA_Memory_data_size                     */\n\n  uint32_t Mode;                 /*!< Specifies the operation mode of the DMAy Streamx.\n                                      This parameter can be a value of @ref DMA_mode\n                                      @note The circular buffer mode cannot be used if the memory-to-memory\n                                            data transfer is configured on the selected Stream                        */\n\n  uint32_t Priority;             /*!< Specifies the software priority for the DMAy Streamx.\n                                      This parameter can be a value of @ref DMA_Priority_level                        */\n\n  uint32_t FIFOMode;             /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream.\n                                      This parameter can be a value of @ref DMA_FIFO_direct_mode\n                                      @note The Direct mode (FIFO mode disabled) cannot be used if the\n                                            memory-to-memory data transfer is configured on the selected stream       */\n\n  uint32_t FIFOThreshold;        /*!< Specifies the FIFO threshold level.\n                                      This parameter can be a value of @ref DMA_FIFO_threshold_level                  */\n\n  uint32_t MemBurst;             /*!< Specifies the Burst transfer configuration for the memory transfers.\n                                      It specifies the amount of data to be transferred in a single non interruptible\n                                      transaction.\n                                      This parameter can be a value of @ref DMA_Memory_burst\n                                      @note The burst mode is possible only if the address Increment mode is enabled. */\n\n  uint32_t PeriphBurst;          /*!< Specifies the Burst transfer configuration for the peripheral transfers.\n                                      It specifies the amount of data to be transferred in a single non interruptible\n                                      transaction.\n                                      This parameter can be a value of @ref DMA_Peripheral_burst\n                                      @note The burst mode is possible only if the address Increment mode is enabled. */\n}DMA_InitTypeDef;\n\n/**\n  * @brief  HAL DMA State structures definition\n  */\ntypedef enum\n{\n  HAL_DMA_STATE_RESET             = 0x00U,  /*!< DMA not yet initialized or disabled */\n  HAL_DMA_STATE_READY             = 0x01U,  /*!< DMA initialized and ready for use   */\n  HAL_DMA_STATE_BUSY              = 0x02U,  /*!< DMA process is ongoing              */\n  HAL_DMA_STATE_ERROR             = 0x03U,  /*!< DMA error state                     */\n  HAL_DMA_STATE_ABORT             = 0x04U,  /*!< DMA Abort state                     */\n}HAL_DMA_StateTypeDef;\n\n/**\n  * @brief  HAL DMA Transfer complete level structure definition\n  */\ntypedef enum\n{\n  HAL_DMA_FULL_TRANSFER      = 0x00U,    /*!< Full transfer     */\n  HAL_DMA_HALF_TRANSFER      = 0x01U,    /*!< Half Transfer     */\n}HAL_DMA_LevelCompleteTypeDef;\n\n/**\n  * @brief  HAL DMA Callbacks IDs structure definition\n  */\ntypedef enum\n{\n  HAL_DMA_XFER_CPLT_CB_ID          = 0x00U,    /*!< Full transfer     */\n  HAL_DMA_XFER_HALFCPLT_CB_ID      = 0x01U,    /*!< Half Transfer     */\n  HAL_DMA_XFER_M1CPLT_CB_ID        = 0x02U,    /*!< M1 Full Transfer  */\n  HAL_DMA_XFER_M1HALFCPLT_CB_ID    = 0x03U,    /*!< M1 Half Transfer  */\n  HAL_DMA_XFER_ERROR_CB_ID         = 0x04U,    /*!< Error             */\n  HAL_DMA_XFER_ABORT_CB_ID         = 0x05U,    /*!< Abort             */\n  HAL_DMA_XFER_ALL_CB_ID           = 0x06U     /*!< All               */\n}HAL_DMA_CallbackIDTypeDef;\n\n/**\n  * @brief  DMA handle Structure definition\n  */\ntypedef struct __DMA_HandleTypeDef\n{\n  void                            *Instance;                                                        /*!< Register base address                         */\n\n  DMA_InitTypeDef                 Init;                                                             /*!< DMA communication parameters                  */\n\n  HAL_LockTypeDef                 Lock;                                                             /*!< DMA locking object                            */\n\n  __IO HAL_DMA_StateTypeDef       State;                                                            /*!< DMA transfer state                            */\n\n  void                            *Parent;                                                          /*!< Parent object state                           */\n\n  void                            (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma);         /*!< DMA transfer complete callback                */\n\n  void                            (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma);     /*!< DMA Half transfer complete callback           */\n\n  void                            (* XferM1CpltCallback)( struct __DMA_HandleTypeDef * hdma);       /*!< DMA transfer complete Memory1 callback        */\n\n  void                            (* XferM1HalfCpltCallback)( struct __DMA_HandleTypeDef * hdma);   /*!< DMA transfer Half complete Memory1 callback   */\n\n  void                            (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma);        /*!< DMA transfer error callback                   */\n\n  void                            (* XferAbortCallback)( struct __DMA_HandleTypeDef * hdma);        /*!< DMA transfer Abort callback                   */\n\n __IO uint32_t                    ErrorCode;                                                        /*!< DMA Error code                                */\n\n uint32_t                         StreamBaseAddress;                                                /*!< DMA Stream Base Address                       */\n\n uint32_t                         StreamIndex;                                                      /*!< DMA Stream Index                              */\n\n DMAMUX_Channel_TypeDef           *DMAmuxChannel;                                                   /*!< DMAMUX Channel Base Address                   */\n\n DMAMUX_ChannelStatus_TypeDef     *DMAmuxChannelStatus;                                             /*!< DMAMUX Channels Status Base Address           */\n\n uint32_t                         DMAmuxChannelStatusMask;                                          /*!< DMAMUX Channel Status Mask                    */\n\n\n DMAMUX_RequestGen_TypeDef        *DMAmuxRequestGen;                                                /*!< DMAMUX request generator Base Address         */\n\n DMAMUX_RequestGenStatus_TypeDef  *DMAmuxRequestGenStatus;                                          /*!< DMAMUX request generator Status Address       */\n\n uint32_t                         DMAmuxRequestGenStatusMask;                                       /*!< DMAMUX request generator Status mask          */\n\n}DMA_HandleTypeDef;\n\n/**\n  * @}\n  */\n\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup DMA_Exported_Constants DMA Exported Constants\n  * @brief    DMA Exported constants\n  * @{\n  */\n\n/** @defgroup DMA_Error_Code DMA Error Code\n  * @brief    DMA Error Code\n  * @{\n  */\n#define HAL_DMA_ERROR_NONE            (0x00000000U)    /*!< No error                                */\n#define HAL_DMA_ERROR_TE              (0x00000001U)    /*!< Transfer error                          */\n#define HAL_DMA_ERROR_FE              (0x00000002U)    /*!< FIFO error                              */\n#define HAL_DMA_ERROR_DME             (0x00000004U)    /*!< Direct Mode error                       */\n#define HAL_DMA_ERROR_TIMEOUT         (0x00000020U)    /*!< Timeout error                           */\n#define HAL_DMA_ERROR_PARAM           (0x00000040U)    /*!< Parameter error                         */\n#define HAL_DMA_ERROR_NO_XFER         (0x00000080U)    /*!< Abort requested with no Xfer ongoing    */\n#define HAL_DMA_ERROR_NOT_SUPPORTED   (0x00000100U)    /*!< Not supported mode                      */\n#define HAL_DMA_ERROR_SYNC            (0x00000200U)    /*!< DMAMUX sync overrun  error              */\n#define HAL_DMA_ERROR_REQGEN          (0x00000400U)    /*!< DMAMUX request generator overrun  error */\n#define HAL_DMA_ERROR_BUSY            (0x00000800U)    /*!< DMA Busy                          error */\n\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Request_selection DMA Request selection\n  * @brief    DMA Request selection\n  * @{\n  */\n/* DMAMUX1 requests */\n#define DMA_REQUEST_MEM2MEM          0U  /*!< memory to memory transfer   */\n\n#define DMA_REQUEST_GENERATOR0       1U  /*!< DMAMUX1 request generator 0 */\n#define DMA_REQUEST_GENERATOR1       2U  /*!< DMAMUX1 request generator 1 */\n#define DMA_REQUEST_GENERATOR2       3U  /*!< DMAMUX1 request generator 2 */\n#define DMA_REQUEST_GENERATOR3       4U  /*!< DMAMUX1 request generator 3 */\n#define DMA_REQUEST_GENERATOR4       5U  /*!< DMAMUX1 request generator 4 */\n#define DMA_REQUEST_GENERATOR5       6U  /*!< DMAMUX1 request generator 5 */\n#define DMA_REQUEST_GENERATOR6       7U  /*!< DMAMUX1 request generator 6 */\n#define DMA_REQUEST_GENERATOR7       8U  /*!< DMAMUX1 request generator 7 */\n\n#define DMA_REQUEST_ADC1             9U  /*!< DMAMUX1 ADC1 request */\n#define DMA_REQUEST_ADC2             10U /*!< DMAMUX1 ADC2 request */\n\n#define DMA_REQUEST_TIM1_CH1         11U  /*!< DMAMUX1 TIM1 CH1 request  */\n#define DMA_REQUEST_TIM1_CH2         12U  /*!< DMAMUX1 TIM1 CH2 request  */\n#define DMA_REQUEST_TIM1_CH3         13U  /*!< DMAMUX1 TIM1 CH3 request  */\n#define DMA_REQUEST_TIM1_CH4         14U  /*!< DMAMUX1 TIM1 CH4 request  */\n#define DMA_REQUEST_TIM1_UP          15U  /*!< DMAMUX1 TIM1 UP request   */\n#define DMA_REQUEST_TIM1_TRIG        16U  /*!< DMAMUX1 TIM1 TRIG request */\n#define DMA_REQUEST_TIM1_COM         17U  /*!< DMAMUX1 TIM1 COM request  */\n\n#define DMA_REQUEST_TIM2_CH1         18U  /*!< DMAMUX1 TIM2 CH1 request  */\n#define DMA_REQUEST_TIM2_CH2         19U  /*!< DMAMUX1 TIM2 CH2 request  */\n#define DMA_REQUEST_TIM2_CH3         20U  /*!< DMAMUX1 TIM2 CH3 request  */\n#define DMA_REQUEST_TIM2_CH4         21U  /*!< DMAMUX1 TIM2 CH4 request  */\n#define DMA_REQUEST_TIM2_UP          22U  /*!< DMAMUX1 TIM2 UP request   */\n\n#define DMA_REQUEST_TIM3_CH1         23U  /*!< DMAMUX1 TIM3 CH1 request  */\n#define DMA_REQUEST_TIM3_CH2         24U  /*!< DMAMUX1 TIM3 CH2 request  */\n#define DMA_REQUEST_TIM3_CH3         25U  /*!< DMAMUX1 TIM3 CH3 request  */\n#define DMA_REQUEST_TIM3_CH4         26U  /*!< DMAMUX1 TIM3 CH4 request  */\n#define DMA_REQUEST_TIM3_UP          27U  /*!< DMAMUX1 TIM3 UP request   */\n#define DMA_REQUEST_TIM3_TRIG        28U  /*!< DMAMUX1 TIM3 TRIG request */\n\n#define DMA_REQUEST_TIM4_CH1         29U  /*!< DMAMUX1 TIM4 CH1 request  */\n#define DMA_REQUEST_TIM4_CH2         30U  /*!< DMAMUX1 TIM4 CH2 request  */\n#define DMA_REQUEST_TIM4_CH3         31U  /*!< DMAMUX1 TIM4 CH3 request  */\n#define DMA_REQUEST_TIM4_UP          32U  /*!< DMAMUX1 TIM4 UP request   */\n\n#define DMA_REQUEST_I2C1_RX          33U  /*!< DMAMUX1 I2C1 RX request   */\n#define DMA_REQUEST_I2C1_TX          34U  /*!< DMAMUX1 I2C1 TX request   */\n#define DMA_REQUEST_I2C2_RX          35U  /*!< DMAMUX1 I2C2 RX request   */\n#define DMA_REQUEST_I2C2_TX          36U  /*!< DMAMUX1 I2C2 TX request   */\n\n#define DMA_REQUEST_SPI1_RX          37U  /*!< DMAMUX1 SPI1 RX request   */\n#define DMA_REQUEST_SPI1_TX          38U  /*!< DMAMUX1 SPI1 TX request   */\n#define DMA_REQUEST_SPI2_RX          39U  /*!< DMAMUX1 SPI2 RX request   */\n#define DMA_REQUEST_SPI2_TX          40U  /*!< DMAMUX1 SPI2 TX request   */\n\n#define DMA_REQUEST_USART1_RX        41U  /*!< DMAMUX1 USART1 RX request */\n#define DMA_REQUEST_USART1_TX        42U  /*!< DMAMUX1 USART1 TX request */\n#define DMA_REQUEST_USART2_RX        43U  /*!< DMAMUX1 USART2 RX request */\n#define DMA_REQUEST_USART2_TX        44U  /*!< DMAMUX1 USART2 TX request */\n#define DMA_REQUEST_USART3_RX        45U  /*!< DMAMUX1 USART3 RX request */\n#define DMA_REQUEST_USART3_TX        46U  /*!< DMAMUX1 USART3 TX request */\n\n#define DMA_REQUEST_TIM8_CH1         47U  /*!< DMAMUX1 TIM8 CH1 request  */\n#define DMA_REQUEST_TIM8_CH2         48U  /*!< DMAMUX1 TIM8 CH2 request  */\n#define DMA_REQUEST_TIM8_CH3         49U  /*!< DMAMUX1 TIM8 CH3 request  */\n#define DMA_REQUEST_TIM8_CH4         50U  /*!< DMAMUX1 TIM8 CH4 request  */\n#define DMA_REQUEST_TIM8_UP          51U  /*!< DMAMUX1 TIM8 UP request   */\n#define DMA_REQUEST_TIM8_TRIG        52U  /*!< DMAMUX1 TIM8 TRIG request */\n#define DMA_REQUEST_TIM8_COM         53U  /*!< DMAMUX1 TIM8 COM request  */\n\n#define DMA_REQUEST_TIM5_CH1         55U  /*!< DMAMUX1 TIM5 CH1 request  */\n#define DMA_REQUEST_TIM5_CH2         56U  /*!< DMAMUX1 TIM5 CH2 request  */\n#define DMA_REQUEST_TIM5_CH3         57U  /*!< DMAMUX1 TIM5 CH3 request  */\n#define DMA_REQUEST_TIM5_CH4         58U  /*!< DMAMUX1 TIM5 CH4 request  */\n#define DMA_REQUEST_TIM5_UP          59U  /*!< DMAMUX1 TIM5 UP request   */\n#define DMA_REQUEST_TIM5_TRIG        60U  /*!< DMAMUX1 TIM5 TRIG request */\n\n#define DMA_REQUEST_SPI3_RX          61U  /*!< DMAMUX1 SPI3 RX request   */\n#define DMA_REQUEST_SPI3_TX          62U  /*!< DMAMUX1 SPI3 TX request   */\n\n#define DMA_REQUEST_UART4_RX         63U  /*!< DMAMUX1 UART4 RX request */\n#define DMA_REQUEST_UART4_TX         64U  /*!< DMAMUX1 UART4 TX request */\n#define DMA_REQUEST_UART5_RX         65U  /*!< DMAMUX1 UART5 RX request */\n#define DMA_REQUEST_UART5_TX         66U  /*!< DMAMUX1 UART5 TX request */\n\n#define DMA_REQUEST_DAC1_CH1         67U  /*!< DMAMUX1 DAC1 Channel 1 request */\n#define DMA_REQUEST_DAC1_CH2         68U  /*!< DMAMUX1 DAC1 Channel 2 request */\n\n#define DMA_REQUEST_TIM6_UP          69U  /*!< DMAMUX1 TIM6 UP request   */\n#define DMA_REQUEST_TIM7_UP          70U  /*!< DMAMUX1 TIM7 UP request   */\n\n#define DMA_REQUEST_USART6_RX        71U  /*!< DMAMUX1 USART6 RX request */\n#define DMA_REQUEST_USART6_TX        72U  /*!< DMAMUX1 USART6 TX request */\n\n#define DMA_REQUEST_I2C3_RX          73U  /*!< DMAMUX1 I2C3 RX request   */\n#define DMA_REQUEST_I2C3_TX          74U  /*!< DMAMUX1 I2C3 TX request   */\n\n#if defined (PSSI)\n#define DMA_REQUEST_DCMI_PSSI        75U  /*!< DMAMUX1 DCMI/PSSI request    */\n#define DMA_REQUEST_DCMI             DMA_REQUEST_DCMI_PSSI /* Legacy define */\n#else\n#define DMA_REQUEST_DCMI             75U  /*!< DMAMUX1 DCMI request         */\n#endif /* PSSI */\n\n#define DMA_REQUEST_CRYP_IN          76U  /*!< DMAMUX1 CRYP IN request   */\n#define DMA_REQUEST_CRYP_OUT         77U  /*!< DMAMUX1 CRYP OUT request  */\n\n#define DMA_REQUEST_HASH_IN          78U  /*!< DMAMUX1 HASH IN request   */\n\n#define DMA_REQUEST_UART7_RX         79U  /*!< DMAMUX1 UART7 RX request  */\n#define DMA_REQUEST_UART7_TX         80U  /*!< DMAMUX1 UART7 TX request  */\n#define DMA_REQUEST_UART8_RX         81U  /*!< DMAMUX1 UART8 RX request  */\n#define DMA_REQUEST_UART8_TX         82U  /*!< DMAMUX1 UART8 TX request  */\n\n#define DMA_REQUEST_SPI4_RX          83U  /*!< DMAMUX1 SPI4 RX request   */\n#define DMA_REQUEST_SPI4_TX          84U  /*!< DMAMUX1 SPI4 TX request   */\n#define DMA_REQUEST_SPI5_RX          85U  /*!< DMAMUX1 SPI5 RX request   */\n#define DMA_REQUEST_SPI5_TX          86U  /*!< DMAMUX1 SPI5 TX request   */\n\n#define DMA_REQUEST_SAI1_A           87U  /*!< DMAMUX1 SAI1 A request    */\n#define DMA_REQUEST_SAI1_B           88U  /*!< DMAMUX1 SAI1 B request    */\n\n#if defined(SAI2)\n#define DMA_REQUEST_SAI2_A           89U  /*!< DMAMUX1 SAI2 A request    */\n#define DMA_REQUEST_SAI2_B           90U  /*!< DMAMUX1 SAI2 B request    */\n#endif /* SAI2 */\n\n#define DMA_REQUEST_SWPMI_RX         91U  /*!< DMAMUX1 SWPMI RX request  */\n#define DMA_REQUEST_SWPMI_TX         92U  /*!< DMAMUX1 SWPMI TX request  */\n\n#define DMA_REQUEST_SPDIF_RX_DT      93U  /*!< DMAMUX1 SPDIF RXDT request*/\n#define DMA_REQUEST_SPDIF_RX_CS      94U  /*!< DMAMUX1 SPDIF RXCS request*/\n\n#if defined(HRTIM1)\n#define DMA_REQUEST_HRTIM_MASTER     95U  /*!< DMAMUX1 HRTIM1 Master request 1 */\n#define DMA_REQUEST_HRTIM_TIMER_A    96U  /*!< DMAMUX1 HRTIM1 Timer A request 2 */\n#define DMA_REQUEST_HRTIM_TIMER_B    97U  /*!< DMAMUX1 HRTIM1 Timer B request 3 */\n#define DMA_REQUEST_HRTIM_TIMER_C    98U  /*!< DMAMUX1 HRTIM1 Timer C request 4 */\n#define DMA_REQUEST_HRTIM_TIMER_D    99U  /*!< DMAMUX1 HRTIM1 Timer D request 5 */\n#define DMA_REQUEST_HRTIM_TIMER_E   100U  /*!< DMAMUX1 HRTIM1 Timer E request 6*/\n#endif /* HRTIM1 */\n\n#define DMA_REQUEST_DFSDM1_FLT0     101U  /*!< DMAMUX1 DFSDM Filter0 request */\n#define DMA_REQUEST_DFSDM1_FLT1     102U  /*!< DMAMUX1 DFSDM Filter1 request */\n#define DMA_REQUEST_DFSDM1_FLT2     103U  /*!< DMAMUX1 DFSDM Filter2 request */\n#define DMA_REQUEST_DFSDM1_FLT3     104U  /*!< DMAMUX1 DFSDM Filter3 request */\n\n#define DMA_REQUEST_TIM15_CH1       105U  /*!< DMAMUX1 TIM15 CH1 request  */\n#define DMA_REQUEST_TIM15_UP        106U  /*!< DMAMUX1 TIM15 UP request   */\n#define DMA_REQUEST_TIM15_TRIG      107U  /*!< DMAMUX1 TIM15 TRIG request */\n#define DMA_REQUEST_TIM15_COM       108U  /*!< DMAMUX1 TIM15 COM request  */\n\n#define DMA_REQUEST_TIM16_CH1       109U  /*!< DMAMUX1 TIM16 CH1 request  */\n#define DMA_REQUEST_TIM16_UP        110U  /*!< DMAMUX1 TIM16 UP request   */\n\n#define DMA_REQUEST_TIM17_CH1       111U  /*!< DMAMUX1 TIM17 CH1 request  */\n#define DMA_REQUEST_TIM17_UP        112U  /*!< DMAMUX1 TIM17 UP request   */\n\n#if defined(SAI3)\n#define DMA_REQUEST_SAI3_A          113U  /*!< DMAMUX1 SAI3 A request  */\n#define DMA_REQUEST_SAI3_B          114U  /*!< DMAMUX1 SAI3 B request  */\n#endif /* SAI3 */\n\n#if defined(ADC3)\n#define DMA_REQUEST_ADC3            115U  /*!< DMAMUX1 ADC3 request  */\n#endif /* ADC3 */\n\n#if defined(UART9)\n#define DMA_REQUEST_UART9_RX        116U  /*!< DMAMUX1 UART9 request  */\n#define DMA_REQUEST_UART9_TX        117U  /*!< DMAMUX1 UART9 request  */\n#endif /* UART9 */\n\n#if defined(USART10)\n#define DMA_REQUEST_USART10_RX      118U  /*!< DMAMUX1 USART10 request  */\n#define DMA_REQUEST_USART10_TX      119U  /*!< DMAMUX1 USART10 request  */\n#endif /* USART10 */\n\n#if defined(FMAC)\n#define DMA_REQUEST_FMAC_READ       120U  /*!< DMAMUX1 FMAC Read request  */\n#define DMA_REQUEST_FMAC_WRITE      121U  /*!< DMAMUX1 FMAC Write request */\n#endif /* FMAC */\n\n#if defined(CORDIC)\n#define DMA_REQUEST_CORDIC_READ     122U  /*!< DMAMUX1 CORDIC Read request  */\n#define DMA_REQUEST_CORDIC_WRITE    123U  /*!< DMAMUX1 CORDIC Write request */\n#endif /* CORDIC */\n\n#if defined(I2C5)\n#define DMA_REQUEST_I2C5_RX         124U  /*!< DMAMUX1 I2C5 RX request   */\n#define DMA_REQUEST_I2C5_TX         125U  /*!< DMAMUX1 I2C5 TX request   */\n#endif /* I2C5 */\n\n#if defined(TIM23)\n#define DMA_REQUEST_TIM23_CH1        126U  /*!< DMAMUX1 TIM23 CH1 request  */\n#define DMA_REQUEST_TIM23_CH2        127U  /*!< DMAMUX1 TIM23 CH2 request  */\n#define DMA_REQUEST_TIM23_CH3        128U  /*!< DMAMUX1 TIM23 CH3 request  */\n#define DMA_REQUEST_TIM23_CH4        129U  /*!< DMAMUX1 TIM23 CH4 request  */\n#define DMA_REQUEST_TIM23_UP         130U  /*!< DMAMUX1 TIM23 UP request   */\n#define DMA_REQUEST_TIM23_TRIG       131U  /*!< DMAMUX1 TIM23 TRIG request */\n#endif /* TIM23 */\n\n#if defined(TIM24)\n#define DMA_REQUEST_TIM24_CH1        132U  /*!< DMAMUX1 TIM24 CH1 request  */\n#define DMA_REQUEST_TIM24_CH2        133U  /*!< DMAMUX1 TIM24 CH2 request  */\n#define DMA_REQUEST_TIM24_CH3        134U  /*!< DMAMUX1 TIM24 CH3 request  */\n#define DMA_REQUEST_TIM24_CH4        135U  /*!< DMAMUX1 TIM24 CH4 request  */\n#define DMA_REQUEST_TIM24_UP         136U  /*!< DMAMUX1 TIM24 UP request   */\n#define DMA_REQUEST_TIM24_TRIG       137U  /*!< DMAMUX1 TIM24 TRIG request */\n#endif /* TIM24 */\n\n/* DMAMUX2 requests */\n#define BDMA_REQUEST_MEM2MEM          0U  /*!< memory to memory transfer   */\n#define BDMA_REQUEST_GENERATOR0       1U  /*!< DMAMUX2 request generator 0 */\n#define BDMA_REQUEST_GENERATOR1       2U  /*!< DMAMUX2 request generator 1 */\n#define BDMA_REQUEST_GENERATOR2       3U  /*!< DMAMUX2 request generator 2 */\n#define BDMA_REQUEST_GENERATOR3       4U  /*!< DMAMUX2 request generator 3 */\n#define BDMA_REQUEST_GENERATOR4       5U  /*!< DMAMUX2 request generator 4 */\n#define BDMA_REQUEST_GENERATOR5       6U  /*!< DMAMUX2 request generator 5 */\n#define BDMA_REQUEST_GENERATOR6       7U  /*!< DMAMUX2 request generator 6 */\n#define BDMA_REQUEST_GENERATOR7       8U  /*!< DMAMUX2 request generator 7 */\n#define BDMA_REQUEST_LPUART1_RX       9U  /*!< DMAMUX2 LP_UART1_RX request */\n#define BDMA_REQUEST_LPUART1_TX      10U  /*!< DMAMUX2 LP_UART1_TX request */\n#define BDMA_REQUEST_SPI6_RX         11U  /*!< DMAMUX2 SPI6 RX request     */\n#define BDMA_REQUEST_SPI6_TX         12U  /*!< DMAMUX2 SPI6 TX request     */\n#define BDMA_REQUEST_I2C4_RX         13U  /*!< DMAMUX2 I2C4 RX request     */\n#define BDMA_REQUEST_I2C4_TX         14U  /*!< DMAMUX2 I2C4 TX request     */\n#if defined(SAI4)\n#define BDMA_REQUEST_SAI4_A          15U  /*!< DMAMUX2 SAI4 A request      */\n#define BDMA_REQUEST_SAI4_B          16U  /*!< DMAMUX2 SAI4 B request      */\n#endif /* SAI4 */\n#if defined(ADC3)\n#define BDMA_REQUEST_ADC3            17U  /*!< DMAMUX2 ADC3 request        */\n#endif /* ADC3 */\n#if defined(DAC2)\n#define BDMA_REQUEST_DAC2_CH1        17U  /*!< DMAMUX2 DAC2 CH1 request    */\n#endif /* DAC2 */\n#if defined(DFSDM2_Channel0)\n#define BDMA_REQUEST_DFSDM2_FLT0     18U  /*!< DMAMUX2 DFSDM2 request      */\n#endif /* DFSDM1_Channel0 */\n\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Data_transfer_direction DMA Data transfer direction\n  * @brief    DMA data transfer direction\n  * @{\n  */\n#define DMA_PERIPH_TO_MEMORY         ((uint32_t)0x00000000U)      /*!< Peripheral to memory direction */\n#define DMA_MEMORY_TO_PERIPH         ((uint32_t)DMA_SxCR_DIR_0)  /*!< Memory to peripheral direction */\n#define DMA_MEMORY_TO_MEMORY         ((uint32_t)DMA_SxCR_DIR_1)  /*!< Memory to memory direction     */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode\n  * @brief    DMA peripheral incremented mode\n  * @{\n  */\n#define DMA_PINC_ENABLE        ((uint32_t)DMA_SxCR_PINC)  /*!< Peripheral increment mode enable  */\n#define DMA_PINC_DISABLE       ((uint32_t)0x00000000U)     /*!< Peripheral increment mode disable */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode\n  * @brief    DMA memory incremented mode\n  * @{\n  */\n#define DMA_MINC_ENABLE         ((uint32_t)DMA_SxCR_MINC)  /*!< Memory increment mode enable  */\n#define DMA_MINC_DISABLE        ((uint32_t)0x00000000U)     /*!< Memory increment mode disable */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Peripheral_data_size DMA Peripheral data size\n  * @brief    DMA peripheral data size\n  * @{\n  */\n#define DMA_PDATAALIGN_BYTE          ((uint32_t)0x00000000U)       /*!< Peripheral data alignment: Byte      */\n#define DMA_PDATAALIGN_HALFWORD      ((uint32_t)DMA_SxCR_PSIZE_0)  /*!< Peripheral data alignment: HalfWord  */\n#define DMA_PDATAALIGN_WORD          ((uint32_t)DMA_SxCR_PSIZE_1)  /*!< Peripheral data alignment: Word      */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Memory_data_size DMA Memory data size\n  * @brief    DMA memory data size\n  * @{\n  */\n#define DMA_MDATAALIGN_BYTE          ((uint32_t)0x00000000U)       /*!< Memory data alignment: Byte     */\n#define DMA_MDATAALIGN_HALFWORD      ((uint32_t)DMA_SxCR_MSIZE_0)  /*!< Memory data alignment: HalfWord */\n#define DMA_MDATAALIGN_WORD          ((uint32_t)DMA_SxCR_MSIZE_1)  /*!< Memory data alignment: Word     */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_mode DMA mode\n  * @brief    DMA mode\n  * @{\n  */\n#define DMA_NORMAL              ((uint32_t)0x00000000U)                  /*!< Normal mode                                    */\n#define DMA_CIRCULAR            ((uint32_t)DMA_SxCR_CIRC)                /*!< Circular mode                                  */\n#define DMA_PFCTRL              ((uint32_t)DMA_SxCR_PFCTRL)              /*!< Peripheral flow control mode                   */\n#define DMA_DOUBLE_BUFFER_M0    ((uint32_t)DMA_SxCR_DBM)                 /*!< Double buffer mode with first target memory M0 */\n#define DMA_DOUBLE_BUFFER_M1    ((uint32_t)(DMA_SxCR_DBM | DMA_SxCR_CT)) /*!< Double buffer mode with first target memory M1 */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Priority_level DMA Priority level\n  * @brief    DMA priority levels\n  * @{\n  */\n#define DMA_PRIORITY_LOW             ((uint32_t)0x00000000U)    /*!< Priority level: Low       */\n#define DMA_PRIORITY_MEDIUM          ((uint32_t)DMA_SxCR_PL_0)  /*!< Priority level: Medium    */\n#define DMA_PRIORITY_HIGH            ((uint32_t)DMA_SxCR_PL_1)  /*!< Priority level: High      */\n#define DMA_PRIORITY_VERY_HIGH       ((uint32_t)DMA_SxCR_PL)    /*!< Priority level: Very High */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_FIFO_direct_mode DMA FIFO direct mode\n  * @brief    DMA FIFO direct mode\n  * @{\n  */\n#define DMA_FIFOMODE_DISABLE        ((uint32_t)0x00000000U)       /*!< FIFO mode disable */\n#define DMA_FIFOMODE_ENABLE         ((uint32_t)DMA_SxFCR_DMDIS)  /*!< FIFO mode enable  */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_FIFO_threshold_level DMA FIFO threshold level\n  * @brief    DMA FIFO level\n  * @{\n  */\n#define DMA_FIFO_THRESHOLD_1QUARTERFULL       ((uint32_t)0x00000000U)       /*!< FIFO threshold 1 quart full configuration  */\n#define DMA_FIFO_THRESHOLD_HALFFULL           ((uint32_t)DMA_SxFCR_FTH_0)  /*!< FIFO threshold half full configuration     */\n#define DMA_FIFO_THRESHOLD_3QUARTERSFULL      ((uint32_t)DMA_SxFCR_FTH_1)  /*!< FIFO threshold 3 quarts full configuration */\n#define DMA_FIFO_THRESHOLD_FULL               ((uint32_t)DMA_SxFCR_FTH)    /*!< FIFO threshold full configuration          */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Memory_burst DMA Memory burst\n  * @brief    DMA memory burst\n  * @{\n  */\n#define DMA_MBURST_SINGLE       ((uint32_t)0x00000000U)\n#define DMA_MBURST_INC4         ((uint32_t)DMA_SxCR_MBURST_0)\n#define DMA_MBURST_INC8         ((uint32_t)DMA_SxCR_MBURST_1)\n#define DMA_MBURST_INC16        ((uint32_t)DMA_SxCR_MBURST)\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Peripheral_burst DMA Peripheral burst\n  * @brief    DMA peripheral burst\n  * @{\n  */\n#define DMA_PBURST_SINGLE       ((uint32_t)0x00000000U)\n#define DMA_PBURST_INC4         ((uint32_t)DMA_SxCR_PBURST_0)\n#define DMA_PBURST_INC8         ((uint32_t)DMA_SxCR_PBURST_1)\n#define DMA_PBURST_INC16        ((uint32_t)DMA_SxCR_PBURST)\n/**\n  * @}\n  */\n\n/** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions\n  * @brief    DMA interrupts definition\n  * @{\n  */\n#define DMA_IT_TC                         ((uint32_t)DMA_SxCR_TCIE)\n#define DMA_IT_HT                         ((uint32_t)DMA_SxCR_HTIE)\n#define DMA_IT_TE                         ((uint32_t)DMA_SxCR_TEIE)\n#define DMA_IT_DME                        ((uint32_t)DMA_SxCR_DMEIE)\n#define DMA_IT_FE                         ((uint32_t)0x00000080U)\n/**\n  * @}\n  */\n\n/** @defgroup DMA_flag_definitions DMA flag definitions\n  * @brief    DMA flag definitions\n  * @{\n  */\n#define DMA_FLAG_FEIF0_4                    ((uint32_t)0x00000001U)\n#define DMA_FLAG_DMEIF0_4                   ((uint32_t)0x00000004U)\n#define DMA_FLAG_TEIF0_4                    ((uint32_t)0x00000008U)\n#define DMA_FLAG_HTIF0_4                    ((uint32_t)0x00000010U)\n#define DMA_FLAG_TCIF0_4                    ((uint32_t)0x00000020U)\n#define DMA_FLAG_FEIF1_5                    ((uint32_t)0x00000040U)\n#define DMA_FLAG_DMEIF1_5                   ((uint32_t)0x00000100U)\n#define DMA_FLAG_TEIF1_5                    ((uint32_t)0x00000200U)\n#define DMA_FLAG_HTIF1_5                    ((uint32_t)0x00000400U)\n#define DMA_FLAG_TCIF1_5                    ((uint32_t)0x00000800U)\n#define DMA_FLAG_FEIF2_6                    ((uint32_t)0x00010000U)\n#define DMA_FLAG_DMEIF2_6                   ((uint32_t)0x00040000U)\n#define DMA_FLAG_TEIF2_6                    ((uint32_t)0x00080000U)\n#define DMA_FLAG_HTIF2_6                    ((uint32_t)0x00100000U)\n#define DMA_FLAG_TCIF2_6                    ((uint32_t)0x00200000U)\n#define DMA_FLAG_FEIF3_7                    ((uint32_t)0x00400000U)\n#define DMA_FLAG_DMEIF3_7                   ((uint32_t)0x01000000U)\n#define DMA_FLAG_TEIF3_7                    ((uint32_t)0x02000000U)\n#define DMA_FLAG_HTIF3_7                    ((uint32_t)0x04000000U)\n#define DMA_FLAG_TCIF3_7                    ((uint32_t)0x08000000U)\n/**\n  * @}\n  */\n\n/** @defgroup BDMA_flag_definitions BDMA flag definitions\n  * @brief    BDMA flag definitions\n  * @{\n  */\n#define BDMA_FLAG_GL0                      ((uint32_t)0x00000001)\n#define BDMA_FLAG_TC0                      ((uint32_t)0x00000002)\n#define BDMA_FLAG_HT0                      ((uint32_t)0x00000004)\n#define BDMA_FLAG_TE0                      ((uint32_t)0x00000008)\n#define BDMA_FLAG_GL1                      ((uint32_t)0x00000010)\n#define BDMA_FLAG_TC1                      ((uint32_t)0x00000020)\n#define BDMA_FLAG_HT1                      ((uint32_t)0x00000040)\n#define BDMA_FLAG_TE1                      ((uint32_t)0x00000080)\n#define BDMA_FLAG_GL2                      ((uint32_t)0x00000100)\n#define BDMA_FLAG_TC2                      ((uint32_t)0x00000200)\n#define BDMA_FLAG_HT2                      ((uint32_t)0x00000400)\n#define BDMA_FLAG_TE2                      ((uint32_t)0x00000800)\n#define BDMA_FLAG_GL3                      ((uint32_t)0x00001000)\n#define BDMA_FLAG_TC3                      ((uint32_t)0x00002000)\n#define BDMA_FLAG_HT3                      ((uint32_t)0x00004000)\n#define BDMA_FLAG_TE3                      ((uint32_t)0x00008000)\n#define BDMA_FLAG_GL4                      ((uint32_t)0x00010000)\n#define BDMA_FLAG_TC4                      ((uint32_t)0x00020000)\n#define BDMA_FLAG_HT4                      ((uint32_t)0x00040000)\n#define BDMA_FLAG_TE4                      ((uint32_t)0x00080000)\n#define BDMA_FLAG_GL5                      ((uint32_t)0x00100000)\n#define BDMA_FLAG_TC5                      ((uint32_t)0x00200000)\n#define BDMA_FLAG_HT5                      ((uint32_t)0x00400000)\n#define BDMA_FLAG_TE5                      ((uint32_t)0x00800000)\n#define BDMA_FLAG_GL6                      ((uint32_t)0x01000000)\n#define BDMA_FLAG_TC6                      ((uint32_t)0x02000000)\n#define BDMA_FLAG_HT6                      ((uint32_t)0x04000000)\n#define BDMA_FLAG_TE6                      ((uint32_t)0x08000000)\n#define BDMA_FLAG_GL7                      ((uint32_t)0x10000000)\n#define BDMA_FLAG_TC7                      ((uint32_t)0x20000000)\n#define BDMA_FLAG_HT7                      ((uint32_t)0x40000000)\n#define BDMA_FLAG_TE7                      ((uint32_t)0x80000000)\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup DMA_Exported_Macros DMA Exported Macros\n  * @{\n  */\n\n/** @brief Reset DMA handle state\n  * @param  __HANDLE__: specifies the DMA handle.\n  * @retval None\n  */\n#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET)\n\n/**\n  * @brief  Return the current DMA Stream FIFO filled level.\n  * @param  __HANDLE__: DMA handle\n  * @retval The FIFO filling state.\n  *           - DMA_FIFOStatus_Less1QuarterFull: when FIFO is less than 1 quarter-full\n  *                                              and not empty.\n  *           - DMA_FIFOStatus_1QuarterFull: if more than 1 quarter-full.\n  *           - DMA_FIFOStatus_HalfFull: if more than 1 half-full.\n  *           - DMA_FIFOStatus_3QuartersFull: if more than 3 quarters-full.\n  *           - DMA_FIFOStatus_Empty: when FIFO is empty\n  *           - DMA_FIFOStatus_Full: when FIFO is full\n  */\n#define __HAL_DMA_GET_FS(__HANDLE__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR & (DMA_SxFCR_FS)) : 0)\n\n/**\n  * @brief  Enable the specified DMA Stream.\n  * @param  __HANDLE__: DMA handle\n  * @retval None\n  */\n#define __HAL_DMA_ENABLE(__HANDLE__) \\\n((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR |=  DMA_SxCR_EN) : \\\n(((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR |=  BDMA_CCR_EN))\n\n/**\n  * @brief  Disable the specified DMA Stream.\n  * @param  __HANDLE__: DMA handle\n  * @retval None\n  */\n#define __HAL_DMA_DISABLE(__HANDLE__) \\\n((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR &=  ~DMA_SxCR_EN) : \\\n(((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR &=  ~BDMA_CCR_EN))\n\n/* Interrupt & Flag management */\n\n/**\n  * @brief  Return the current DMA Stream transfer complete flag.\n  * @param  __HANDLE__: DMA handle\n  * @retval The specified transfer complete flag index.\n  */\n#if defined(BDMA1)\n#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_FLAG_TC0  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_FLAG_TC0  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_FLAG_TC1  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_FLAG_TC1  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_FLAG_TC2  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_FLAG_TC2  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_FLAG_TC3  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_FLAG_TC3  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_FLAG_TC4  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_FLAG_TC4  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_FLAG_TC5  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_FLAG_TC5  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_FLAG_TC6  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_FLAG_TC6  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_FLAG_TC7  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_FLAG_TC7  :\\\n (uint32_t)0x00000000)\n#else\n#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TCIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TCIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TCIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TCIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_FLAG_TC0   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_FLAG_TC1   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_FLAG_TC2   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_FLAG_TC3   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_FLAG_TC4   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_FLAG_TC5   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_FLAG_TC6   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_FLAG_TC7   :\\\n (uint32_t)0x00000000)\n#endif /* BDMA1 */\n\n/**\n  * @brief  Return the current DMA Stream half transfer complete flag.\n  * @param  __HANDLE__: DMA handle\n  * @retval The specified half transfer complete flag index.\n  */\n#if defined(BDMA1)\n#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_FLAG_HT0  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_FLAG_HT0  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_FLAG_HT1  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_FLAG_HT1  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_FLAG_HT2  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_FLAG_HT2  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_FLAG_HT3  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_FLAG_HT3  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_FLAG_HT4  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_FLAG_HT4  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_FLAG_HT5  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_FLAG_HT5  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_FLAG_HT6  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_FLAG_HT6  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_FLAG_HT7  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_FLAG_HT7  :\\\n (uint32_t)0x00000000)\n#else\n#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_HTIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_HTIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_HTIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_HTIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_FLAG_HT0   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_FLAG_HT1   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_FLAG_HT2   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_FLAG_HT3   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_FLAG_HT4   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_FLAG_HT5   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_FLAG_HT6   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_FLAG_HT7   :\\\n (uint32_t)0x00000000)\n#endif /* BDMA1 */\n\n/**\n  * @brief  Return the current DMA Stream transfer error flag.\n  * @param  __HANDLE__: DMA handle\n  * @retval The specified transfer error flag index.\n  */\n#if defined(BDMA1)\n#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_FLAG_TE0  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_FLAG_TE0  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_FLAG_TE1  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_FLAG_TE1  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_FLAG_TE2  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_FLAG_TE2  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_FLAG_TE3  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_FLAG_TE3  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_FLAG_TE4  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_FLAG_TE4  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_FLAG_TE5  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_FLAG_TE5  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_FLAG_TE6  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_FLAG_TE6  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_FLAG_TE7  :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_FLAG_TE7  :\\\n (uint32_t)0x00000000)\n#else\n#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_FLAG_TE0   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_FLAG_TE1   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_FLAG_TE2   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_FLAG_TE3   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_FLAG_TE4   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_FLAG_TE5   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_FLAG_TE6   :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_FLAG_TE7   :\\\n (uint32_t)0x00000000)\n#endif /* BDMA1 */\n\n/**\n  * @brief  Return the current DMA Stream FIFO error flag.\n  * @param  __HANDLE__: DMA handle\n  * @retval The specified FIFO error flag index.\n  */\n#define __HAL_DMA_GET_FE_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_FEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_FEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_FEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_FEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_FEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_FEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_FEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_FEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_FEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_FEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_FEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_FEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_FEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_FEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_FEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_FEIF3_7 :\\\n  (uint32_t)0x00000000)\n\n/**\n  * @brief  Return the current DMA Stream direct mode error flag.\n  * @param  __HANDLE__: DMA handle\n  * @retval The specified direct mode error flag index.\n  */\n#define __HAL_DMA_GET_DME_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_DMEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_DMEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_DMEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_DMEIF0_4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_DMEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_DMEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_DMEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_DMEIF1_5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_DMEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_DMEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_DMEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_DMEIF2_6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_DMEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_DMEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_DMEIF3_7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_DMEIF3_7 :\\\n  (uint32_t)0x00000000)\n\n/**\n  * @brief  Returns the current BDMA Channel Global interrupt flag.\n  * @param  __HANDLE__: DMA handle\n  * @retval The specified transfer error flag index.\n  */\n#if defined(BDMA1)\n#define __HAL_BDMA_GET_GI_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_ISR_GIF0 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_ISR_GIF0 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_ISR_GIF1 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_ISR_GIF1 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_ISR_GIF2 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_ISR_GIF2 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_ISR_GIF3 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_ISR_GIF3 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_ISR_GIF4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_ISR_GIF4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_ISR_GIF5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_ISR_GIF5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_ISR_GIF6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_ISR_GIF6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_ISR_GIF7 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_ISR_GIF7 :\\\n (uint32_t)0x00000000)\n#else\n#define __HAL_BDMA_GET_GI_FLAG_INDEX(__HANDLE__)\\\n(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_ISR_GIF0 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_ISR_GIF1 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_ISR_GIF2 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_ISR_GIF3 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_ISR_GIF4 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_ISR_GIF5 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_ISR_GIF6 :\\\n ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_ISR_GIF7 :\\\n  (uint32_t)0x00000000)\n#endif /* BDMA1 */\n\n/**\n  * @brief  Get the DMA Stream pending flags.\n  * @param  __HANDLE__: DMA handle\n  * @param  __FLAG__: Get the specified flag.\n  *          This parameter can be any combination of the following values:\n  *            @arg DMA_FLAG_TCIFx: Transfer complete flag.\n  *            @arg DMA_FLAG_HTIFx: Half transfer complete flag.\n  *            @arg DMA_FLAG_TEIFx: Transfer error flag.\n  *            @arg DMA_FLAG_DMEIFx: Direct mode error flag.\n  *            @arg DMA_FLAG_FEIFx: FIFO error flag.\n  *         Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.\n  * @retval The state of FLAG (SET or RESET).\n  */\n#if defined(BDMA1)\n#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\\\n(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)BDMA1_Channel7)?  (BDMA2->ISR & (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7  )?  (BDMA1->ISR & (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3  )?  (DMA2->HISR & (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7  )?  (DMA2->LISR & (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3  )?  (DMA1->HISR & (__FLAG__)) : (DMA1->LISR & (__FLAG__)))\n#else\n#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\\\n(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7)? (BDMA->ISR & (__FLAG__))  :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HISR & (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LISR & (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HISR & (__FLAG__)) : (DMA1->LISR & (__FLAG__)))\n#endif /* BDMA1 */\n\n/**\n  * @brief  Clear the DMA Stream pending flags.\n  * @param  __HANDLE__: DMA handle\n  * @param  __FLAG__: specifies the flag to clear.\n  *          This parameter can be any combination of the following values:\n  *            @arg DMA_FLAG_TCIFx: Transfer complete flag.\n  *            @arg DMA_FLAG_HTIFx: Half transfer complete flag.\n  *            @arg DMA_FLAG_TEIFx: Transfer error flag.\n  *            @arg DMA_FLAG_DMEIFx: Direct mode error flag.\n  *            @arg DMA_FLAG_FEIFx: FIFO error flag.\n  *         Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.\n  * @retval None\n  */\n#if defined(BDMA1)\n#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \\\n(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)BDMA1_Channel7)? (BDMA2->IFCR = (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7)?  (BDMA1->IFCR = (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)?  (DMA2->HIFCR = (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)?  (DMA2->LIFCR = (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)?  (DMA1->HIFCR = (__FLAG__)) : (DMA1->LIFCR = (__FLAG__)))\n#else\n#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \\\n(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7)? (BDMA->IFCR = (__FLAG__))  :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HIFCR = (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LIFCR = (__FLAG__)) :\\\n ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HIFCR = (__FLAG__)) : (DMA1->LIFCR = (__FLAG__)))\n#endif /* BDMA1 */\n\n#define DMA_TO_BDMA_IT(__DMA_IT__) \\\n((((__DMA_IT__) & (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)) == (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)) ? (BDMA_CCR_TCIE | BDMA_CCR_HTIE |BDMA_CCR_TEIE) :\\\n (((__DMA_IT__) & (DMA_IT_TC | DMA_IT_HT)) == (DMA_IT_TC | DMA_IT_HT)) ? (BDMA_CCR_TCIE | BDMA_CCR_HTIE) :\\\n (((__DMA_IT__) & (DMA_IT_HT | DMA_IT_TE)) == (DMA_IT_HT | DMA_IT_TE)) ? (BDMA_CCR_HTIE |BDMA_CCR_TEIE)  :\\\n (((__DMA_IT__) & (DMA_IT_TC | DMA_IT_TE)) == (DMA_IT_TC | DMA_IT_TE)) ? (BDMA_CCR_TCIE |BDMA_CCR_TEIE)  :\\\n ((__DMA_IT__) == DMA_IT_TC) ? BDMA_CCR_TCIE :\\\n ((__DMA_IT__) == DMA_IT_HT) ? BDMA_CCR_HTIE :\\\n ((__DMA_IT__) == DMA_IT_TE) ? BDMA_CCR_TEIE :\\\n (uint32_t)0x00000000)\n\n\n#define __HAL_BDMA_CHANNEL_ENABLE_IT(__HANDLE__, __INTERRUPT__) \\\n(((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR |= (DMA_TO_BDMA_IT(__INTERRUPT__)))\n\n#define __HAL_DMA_STREAM_ENABLE_IT(__HANDLE__, __INTERRUPT__)   (((__INTERRUPT__) != DMA_IT_FE)? \\\n(((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR |= (__INTERRUPT__)) : (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR |= (__INTERRUPT__)))\n\n/**\n  * @brief  Enable the specified DMA Stream interrupts.\n  * @param  __HANDLE__: DMA handle\n  * @param  __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled.\n  *        This parameter can be one of the following values:\n  *           @arg DMA_IT_TC: Transfer complete interrupt mask.\n  *           @arg DMA_IT_HT: Half transfer complete interrupt mask.\n  *           @arg DMA_IT_TE: Transfer error interrupt mask.\n  *           @arg DMA_IT_FE: FIFO error interrupt mask.\n  *           @arg DMA_IT_DME: Direct mode error interrupt.\n  * @retval None\n  */\n#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))?\\\n                                                        (__HAL_DMA_STREAM_ENABLE_IT((__HANDLE__), (__INTERRUPT__))) :\\\n                                                        (__HAL_BDMA_CHANNEL_ENABLE_IT((__HANDLE__), (__INTERRUPT__))))\n\n\n#define __HAL_BDMA_CHANNEL_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR &= ~(DMA_TO_BDMA_IT(__INTERRUPT__)))\n\n#define __HAL_DMA_STREAM_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (((__INTERRUPT__) != DMA_IT_FE)? \\\n(((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR &= ~(__INTERRUPT__)) : (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR &= ~(__INTERRUPT__)))\n\n/**\n  * @brief  Disable the specified DMA Stream interrupts.\n  * @param  __HANDLE__: DMA handle\n  * @param  __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled.\n  *         This parameter can be one of the following values:\n  *            @arg DMA_IT_TC: Transfer complete interrupt mask.\n  *            @arg DMA_IT_HT: Half transfer complete interrupt mask.\n  *            @arg DMA_IT_TE: Transfer error interrupt mask.\n  *            @arg DMA_IT_FE: FIFO error interrupt mask.\n  *            @arg DMA_IT_DME: Direct mode error interrupt.\n  * @retval None\n  */\n#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))?\\\n                                                         (__HAL_DMA_STREAM_DISABLE_IT((__HANDLE__), (__INTERRUPT__))) :\\\n                                                         (__HAL_BDMA_CHANNEL_DISABLE_IT((__HANDLE__), (__INTERRUPT__))))\n\n\n#define __HAL_BDMA_CHANNEL_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  ((((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR & (DMA_TO_BDMA_IT(__INTERRUPT__))))\n\n#define __HAL_DMA_STREAM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  (((__INTERRUPT__) != DMA_IT_FE)? \\\n                                                        (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR & (__INTERRUPT__)) : \\\n                                                        (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR & (__INTERRUPT__)))\n\n/**\n  * @brief  Check whether the specified DMA Stream interrupt is enabled or not.\n  * @param  __HANDLE__: DMA handle\n  * @param  __INTERRUPT__: specifies the DMA interrupt source to check.\n  *         This parameter can be one of the following values:\n  *            @arg DMA_IT_TC: Transfer complete interrupt mask.\n  *            @arg DMA_IT_HT: Half transfer complete interrupt mask.\n  *            @arg DMA_IT_TE: Transfer error interrupt mask.\n  *            @arg DMA_IT_FE: FIFO error interrupt mask.\n  *            @arg DMA_IT_DME: Direct mode error interrupt.\n  * @retval The state of DMA_IT.\n  */\n#define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? \\\n                                                            (__HAL_DMA_STREAM_GET_IT_SOURCE((__HANDLE__), (__INTERRUPT__))) :\\\n                                                            (__HAL_BDMA_CHANNEL_GET_IT_SOURCE((__HANDLE__), (__INTERRUPT__))))\n\n/**\n  * @brief  Writes the number of data units to be transferred on the DMA Stream.\n  * @param  __HANDLE__: DMA handle\n  * @param  __COUNTER__: Number of data units to be transferred (from 0 to 65535)\n  *          Number of data items depends only on the Peripheral data format.\n  *\n  * @note   If Peripheral data format is Bytes: number of data units is equal\n  *         to total number of bytes to be transferred.\n  *\n  * @note   If Peripheral data format is Half-Word: number of data units is\n  *         equal to total number of bytes to be transferred / 2.\n  *\n  * @note   If Peripheral data format is Word: number of data units is equal\n  *         to total  number of bytes to be transferred / 4.\n  *\n  * @retval The number of remaining data units in the current DMAy Streamx transfer.\n  */\n#define __HAL_DMA_SET_COUNTER(__HANDLE__, __COUNTER__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? \\\n                                                        (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->NDTR = (uint16_t)(__COUNTER__)) :\\\n                                                        (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CNDTR = (uint16_t)(__COUNTER__)))\n\n/**\n  * @brief  Returns the number of remaining data units in the current DMAy Streamx transfer.\n  * @param  __HANDLE__: DMA handle\n  *\n  * @retval The number of remaining data units in the current DMA Stream transfer.\n  */\n#define __HAL_DMA_GET_COUNTER(__HANDLE__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? \\\n                                           (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->NDTR) :\\\n                                           (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CNDTR))\n\n/**\n  * @}\n  */\n\n/* Include DMA HAL Extension module */\n#include \"stm32h7xx_hal_dma_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup DMA_Exported_Functions DMA Exported Functions\n  * @brief    DMA Exported functions\n  * @{\n  */\n\n/** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions\n  * @brief   Initialization and de-initialization functions\n  * @{\n  */\nHAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma);\nHAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma);\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Exported_Functions_Group2 I/O operation functions\n  * @brief   I/O operation functions\n  * @{\n  */\nHAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\nHAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\nHAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);\nHAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma);\nHAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout);\nvoid              HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma);\nHAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma));\nHAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID);\n\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Exported_Functions_Group3 Peripheral State functions\n  * @brief    Peripheral State functions\n  * @{\n  */\nHAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma);\nuint32_t             HAL_DMA_GetError(DMA_HandleTypeDef *hdma);\n/**\n  * @}\n  */\n/**\n  * @}\n  */\n/* Private Constants -------------------------------------------------------------*/\n/** @defgroup DMA_Private_Constants DMA Private Constants\n  * @brief    DMA private defines and constants\n  * @{\n  */\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup DMA_Private_Macros DMA Private Macros\n  * @brief    DMA private macros\n  * @{\n  */\n\n#if defined(TIM24)\n#define IS_DMA_REQUEST(REQUEST) (((REQUEST) <= DMA_REQUEST_TIM24_TRIG))\n#elif defined(ADC3)\n#define IS_DMA_REQUEST(REQUEST) (((REQUEST) <= DMA_REQUEST_ADC3))\n#else\n#define IS_DMA_REQUEST(REQUEST) (((REQUEST) <= DMA_REQUEST_USART10_TX))\n#endif /* TIM24 */\n\n#if defined(ADC3)\n#define IS_BDMA_REQUEST(REQUEST) (((REQUEST) <= BDMA_REQUEST_ADC3))\n#else\n#define IS_BDMA_REQUEST(REQUEST) (((REQUEST) <= BDMA_REQUEST_DFSDM2_FLT0))\n#endif /* ADC3 */\n\n#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \\\n                                     ((DIRECTION) == DMA_MEMORY_TO_PERIPH)  || \\\n                                     ((DIRECTION) == DMA_MEMORY_TO_MEMORY))\n\n#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x01U) && ((SIZE) < 0x10000U))\n\n#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \\\n                                            ((STATE) == DMA_PINC_DISABLE))\n\n#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE)  || \\\n                                        ((STATE) == DMA_MINC_DISABLE))\n\n#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE)     || \\\n                                           ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \\\n                                           ((SIZE) == DMA_PDATAALIGN_WORD))\n\n#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE)     || \\\n                                       ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \\\n                                       ((SIZE) == DMA_MDATAALIGN_WORD ))\n\n#define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL )           || \\\n                           ((MODE) == DMA_CIRCULAR)          || \\\n                           ((MODE) == DMA_PFCTRL)            || \\\n                           ((MODE) == DMA_DOUBLE_BUFFER_M0)  || \\\n                           ((MODE) == DMA_DOUBLE_BUFFER_M1))\n\n#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW )   || \\\n                                   ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \\\n                                   ((PRIORITY) == DMA_PRIORITY_HIGH)   || \\\n                                   ((PRIORITY) == DMA_PRIORITY_VERY_HIGH))\n\n#define IS_DMA_FIFO_MODE_STATE(STATE) (((STATE) == DMA_FIFOMODE_DISABLE ) || \\\n                                       ((STATE) == DMA_FIFOMODE_ENABLE))\n\n#define IS_DMA_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == DMA_FIFO_THRESHOLD_1QUARTERFULL ) || \\\n                                          ((THRESHOLD) == DMA_FIFO_THRESHOLD_HALFFULL)      || \\\n                                          ((THRESHOLD) == DMA_FIFO_THRESHOLD_3QUARTERSFULL) || \\\n                                          ((THRESHOLD) == DMA_FIFO_THRESHOLD_FULL))\n\n#define IS_DMA_MEMORY_BURST(BURST) (((BURST) == DMA_MBURST_SINGLE) || \\\n                                    ((BURST) == DMA_MBURST_INC4)   || \\\n                                    ((BURST) == DMA_MBURST_INC8)   || \\\n                                    ((BURST) == DMA_MBURST_INC16))\n\n#define IS_DMA_PERIPHERAL_BURST(BURST) (((BURST) == DMA_PBURST_SINGLE) || \\\n                                        ((BURST) == DMA_PBURST_INC4)   || \\\n                                        ((BURST) == DMA_PBURST_INC8)   || \\\n                                        ((BURST) == DMA_PBURST_INC16))\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup DMA_Private_Functions DMA Private Functions\n  * @brief    DMA private  functions\n  * @{\n  */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_DMA_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dma_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_dma_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of DMA HAL extension module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_DMA_EX_H\n#define STM32H7xx_HAL_DMA_EX_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup DMAEx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup DMAEx_Exported_Types DMAEx Exported Types\n  * @brief DMAEx Exported types\n  * @{\n  */\n\n/**\n  * @brief  HAL DMA Memory definition\n  */\ntypedef enum\n{\n  MEMORY0      = 0x00U,    /*!< Memory 0     */\n  MEMORY1      = 0x01U,    /*!< Memory 1     */\n\n}HAL_DMA_MemoryTypeDef;\n\n/**\n  * @brief  HAL DMAMUX Synchronization configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t SyncSignalID;  /*!< Specifies the synchronization signal gating the DMA request in periodic mode.\n                              This parameter can be a value of @ref DMAEx_MUX_SyncSignalID_selection */\n\n  uint32_t SyncPolarity;  /*!< Specifies the polarity of the signal on which the DMA request is synchronized.\n                              This parameter can be a value of @ref DMAEx_MUX_SyncPolarity_selection */\n\n  FunctionalState SyncEnable;  /*!< Specifies if the synchronization shall be enabled or disabled\n                                    This parameter can take the value ENABLE or DISABLE*/\n\n\n  FunctionalState EventEnable;    /*!< Specifies if an event shall be generated once the RequestNumber is reached.\n                                       This parameter can take the value ENABLE or DISABLE */\n\n  uint32_t RequestNumber; /*!< Specifies the number of DMA request that will be authorized after a sync event.\n                               This parameters can be in the range 1 to 32 */\n\n}HAL_DMA_MuxSyncConfigTypeDef;\n\n\n/**\n  * @brief  HAL DMAMUX request generator parameters structure definition\n  */\ntypedef struct\n{\n uint32_t SignalID;      /*!< Specifies the ID of the signal used for DMAMUX request generator\n                              This parameter can be a value of @ref DMAEx_MUX_SignalGeneratorID_selection */\n\n  uint32_t Polarity;       /*!< Specifies the polarity of the signal on which the request is generated.\n                             This parameter can be a value of @ref DMAEx_MUX_RequestGeneneratorPolarity_selection */\n\n  uint32_t RequestNumber;  /*!< Specifies the number of DMA request that will be generated after a signal event.\n                                This parameters can be in the range 1 to 32 */\n\n}HAL_DMA_MuxRequestGeneratorConfigTypeDef;\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup DMAEx_Exported_Constants DMA Exported Constants\n  * @brief    DMAEx Exported constants\n  * @{\n  */\n\n/** @defgroup DMAEx_MUX_SyncSignalID_selection DMAEx MUX SyncSignalID selection\n  * @brief    DMAEx MUX SyncSignalID selection\n  * @{\n  */\n#define HAL_DMAMUX1_SYNC_DMAMUX1_CH0_EVT   0U   /*!< DMAMUX1 synchronization Signal is DMAMUX1 Channel0 Event */\n#define HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT   1U   /*!< DMAMUX1 synchronization Signal is DMAMUX1 Channel1 Event */\n#define HAL_DMAMUX1_SYNC_DMAMUX1_CH2_EVT   2U   /*!< DMAMUX1 synchronization Signal is DMAMUX1 Channel2 Event */\n#define HAL_DMAMUX1_SYNC_LPTIM1_OUT        3U   /*!< DMAMUX1 synchronization Signal is LPTIM1 OUT             */\n#define HAL_DMAMUX1_SYNC_LPTIM2_OUT        4U   /*!< DMAMUX1 synchronization Signal is LPTIM2 OUT             */\n#define HAL_DMAMUX1_SYNC_LPTIM3_OUT        5U   /*!< DMAMUX1 synchronization Signal is LPTIM3 OUT             */\n#define HAL_DMAMUX1_SYNC_EXTI0             6U   /*!< DMAMUX1 synchronization Signal is EXTI0 IT               */\n#define HAL_DMAMUX1_SYNC_TIM12_TRGO        7U   /*!< DMAMUX1 synchronization Signal is TIM12 TRGO             */\n\n#define HAL_DMAMUX2_SYNC_DMAMUX2_CH0_EVT   0U   /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel0 Event */\n#define HAL_DMAMUX2_SYNC_DMAMUX2_CH1_EVT   1U   /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel1 Event */\n#define HAL_DMAMUX2_SYNC_DMAMUX2_CH2_EVT   2U   /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel2 Event */\n#define HAL_DMAMUX2_SYNC_DMAMUX2_CH3_EVT   3U   /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel3 Event */\n#define HAL_DMAMUX2_SYNC_DMAMUX2_CH4_EVT   4U   /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel4 Event */\n#define HAL_DMAMUX2_SYNC_DMAMUX2_CH5_EVT   5U   /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel5 Event */\n#define HAL_DMAMUX2_SYNC_LPUART1_RX_WKUP   6U   /*!< DMAMUX2 synchronization Signal is LPUART1 RX Wakeup      */\n#define HAL_DMAMUX2_SYNC_LPUART1_TX_WKUP   7U   /*!< DMAMUX2 synchronization Signal is LPUART1 TX Wakeup      */\n#define HAL_DMAMUX2_SYNC_LPTIM2_OUT        8U   /*!< DMAMUX2 synchronization Signal is LPTIM2 output          */\n#define HAL_DMAMUX2_SYNC_LPTIM3_OUT        9U   /*!< DMAMUX2 synchronization Signal is LPTIM3 output          */\n#define HAL_DMAMUX2_SYNC_I2C4_WKUP        10U   /*!< DMAMUX2 synchronization Signal is I2C4 Wakeup            */\n#define HAL_DMAMUX2_SYNC_SPI6_WKUP        11U   /*!< DMAMUX2 synchronization Signal is SPI6 Wakeup            */\n#define HAL_DMAMUX2_SYNC_COMP1_OUT        12U   /*!< DMAMUX2 synchronization Signal is Comparator 1 output    */\n#define HAL_DMAMUX2_SYNC_RTC_WKUP         13U   /*!< DMAMUX2 synchronization Signal is RTC Wakeup             */\n#define HAL_DMAMUX2_SYNC_EXTI0            14U   /*!< DMAMUX2 synchronization Signal is EXTI0 IT               */\n#define HAL_DMAMUX2_SYNC_EXTI2            15U   /*!< DMAMUX2 synchronization Signal is EXTI2 IT               */\n\n/**\n  * @}\n  */\n\n/** @defgroup DMAEx_MUX_SyncPolarity_selection DMAEx MUX SyncPolarity selection\n  * @brief    DMAEx MUX SyncPolarity selection\n  * @{\n  */\n#define HAL_DMAMUX_SYNC_NO_EVENT        0x00000000U             /*!< block synchronization events                    */\n#define HAL_DMAMUX_SYNC_RISING          DMAMUX_CxCR_SPOL_0      /*!< synchronize with rising edge events             */\n#define HAL_DMAMUX_SYNC_FALLING         DMAMUX_CxCR_SPOL_1      /*!< synchronize with falling edge events            */\n#define HAL_DMAMUX_SYNC_RISING_FALLING  DMAMUX_CxCR_SPOL        /*!< synchronize with rising and falling edge events */\n\n/**\n  * @}\n  */\n\n\n/** @defgroup DMAEx_MUX_SignalGeneratorID_selection DMAEx MUX SignalGeneratorID selection\n  * @brief    DMAEx MUX SignalGeneratorID selection\n  * @{\n  */\n#define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT   0U   /*!< DMAMUX1 Request generator Signal is DMAMUX1 Channel0 Event */\n#define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT   1U   /*!< DMAMUX1 Request generator Signal is DMAMUX1 Channel1 Event */\n#define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT   2U   /*!< DMAMUX1 Request generator Signal is DMAMUX1 Channel2 Event */\n#define HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT        3U   /*!< DMAMUX1 Request generator Signal is LPTIM1 OUT             */\n#define HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT        4U   /*!< DMAMUX1 Request generator Signal is LPTIM2 OUT             */\n#define HAL_DMAMUX1_REQ_GEN_LPTIM3_OUT        5U   /*!< DMAMUX1 Request generator Signal is LPTIM3 OUT             */\n#define HAL_DMAMUX1_REQ_GEN_EXTI0             6U   /*!< DMAMUX1 Request generator Signal is EXTI0 IT               */\n#define HAL_DMAMUX1_REQ_GEN_TIM12_TRGO        7U   /*!< DMAMUX1 Request generator Signal is TIM12 TRGO             */\n\n#define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH0_EVT   0U   /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel0 Event */\n#define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH1_EVT   1U   /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel1 Event */\n#define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH2_EVT   2U   /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel2 Event */\n#define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH3_EVT   3U   /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel3 Event */\n#define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH4_EVT   4U   /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel4 Event */\n#define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH5_EVT   5U   /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel5 Event */\n#define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH6_EVT   6U   /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel6 Event */\n#define HAL_DMAMUX2_REQ_GEN_LPUART1_RX_WKUP   7U   /*!< DMAMUX2 Request generator Signal is LPUART1 RX Wakeup      */\n#define HAL_DMAMUX2_REQ_GEN_LPUART1_TX_WKUP   8U   /*!< DMAMUX2 Request generator Signal is LPUART1 TX Wakeup      */\n#define HAL_DMAMUX2_REQ_GEN_LPTIM2_WKUP       9U   /*!< DMAMUX2 Request generator Signal is LPTIM2 Wakeup          */\n#define HAL_DMAMUX2_REQ_GEN_LPTIM2_OUT       10U   /*!< DMAMUX2 Request generator Signal is LPTIM2 OUT             */\n#define HAL_DMAMUX2_REQ_GEN_LPTIM3_WKUP      11U   /*!< DMAMUX2 Request generator Signal is LPTIM3 Wakeup          */\n#define HAL_DMAMUX2_REQ_GEN_LPTIM3_OUT       12U   /*!< DMAMUX2 Request generator Signal is LPTIM3 OUT             */\n#if defined(LPTIM4)\n#define HAL_DMAMUX2_REQ_GEN_LPTIM4_WKUP      13U   /*!< DMAMUX2 Request generator Signal is LPTIM4 Wakeup          */\n#endif /* LPTIM4 */\n#if defined(LPTIM5)\n#define HAL_DMAMUX2_REQ_GEN_LPTIM5_WKUP      14U   /*!< DMAMUX2 Request generator Signal is LPTIM5 Wakeup          */\n#endif /* LPTIM5 */\n#define HAL_DMAMUX2_REQ_GEN_I2C4_WKUP        15U   /*!< DMAMUX2 Request generator Signal is I2C4 Wakeup            */\n#define HAL_DMAMUX2_REQ_GEN_SPI6_WKUP        16U   /*!< DMAMUX2 Request generator Signal is SPI6 Wakeup            */\n#define HAL_DMAMUX2_REQ_GEN_COMP1_OUT        17U   /*!< DMAMUX2 Request generator Signal is Comparator 1 output    */\n#define HAL_DMAMUX2_REQ_GEN_COMP2_OUT        18U   /*!< DMAMUX2 Request generator Signal is Comparator 2 output    */\n#define HAL_DMAMUX2_REQ_GEN_RTC_WKUP         19U   /*!< DMAMUX2 Request generator Signal is RTC Wakeup             */\n#define HAL_DMAMUX2_REQ_GEN_EXTI0            20U   /*!< DMAMUX2 Request generator Signal is EXTI0                  */\n#define HAL_DMAMUX2_REQ_GEN_EXTI2            21U   /*!< DMAMUX2 Request generator Signal is EXTI2                  */\n#define HAL_DMAMUX2_REQ_GEN_I2C4_IT_EVT      22U   /*!< DMAMUX2 Request generator Signal is I2C4 IT Event          */\n#define HAL_DMAMUX2_REQ_GEN_SPI6_IT          23U   /*!< DMAMUX2 Request generator Signal is SPI6 IT                */\n#define HAL_DMAMUX2_REQ_GEN_LPUART1_TX_IT    24U   /*!< DMAMUX2 Request generator Signal is LPUART1 Tx IT          */\n#define HAL_DMAMUX2_REQ_GEN_LPUART1_RX_IT    25U   /*!< DMAMUX2 Request generator Signal is LPUART1 Rx IT          */\n#if defined(ADC3)\n#define HAL_DMAMUX2_REQ_GEN_ADC3_IT          26U   /*!< DMAMUX2 Request generator Signal is ADC3 IT                */\n#define HAL_DMAMUX2_REQ_GEN_ADC3_AWD1_OUT    27U   /*!< DMAMUX2 Request generator Signal is ADC3 Analog Watchdog 1 output */\n#endif /* ADC3 */\n#define HAL_DMAMUX2_REQ_GEN_BDMA_CH0_IT      28U   /*!< DMAMUX2 Request generator Signal is BDMA Channel 0 IT      */\n#define HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT      29U   /*!< DMAMUX2 Request generator Signal is BDMA Channel 1 IT      */\n\n\n/**\n  * @}\n  */\n\n/** @defgroup DMAEx_MUX_RequestGeneneratorPolarity_selection DMAEx MUX RequestGeneneratorPolarity selection\n  * @brief    DMAEx MUX RequestGeneneratorPolarity selection\n  * @{\n  */\n#define HAL_DMAMUX_REQ_GEN_NO_EVENT        0x00000000U           /*!< block request generator events                     */\n#define HAL_DMAMUX_REQ_GEN_RISING          DMAMUX_RGxCR_GPOL_0  /*!< generate request on rising edge events             */\n#define HAL_DMAMUX_REQ_GEN_FALLING         DMAMUX_RGxCR_GPOL_1  /*!< generate request on falling edge events            */\n#define HAL_DMAMUX_REQ_GEN_RISING_FALLING  DMAMUX_RGxCR_GPOL    /*!< generate request on rising and falling edge events */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup DMAEx_Exported_Functions DMAEx Exported Functions\n  * @brief   DMAEx Exported functions\n  * @{\n  */\n\n/** @defgroup DMAEx_Exported_Functions_Group1 Extended features functions\n  * @brief   Extended features functions\n  * @{\n  */\n\n/* IO operation functions *******************************************************/\nHAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength);\nHAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength);\nHAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory);\nHAL_StatusTypeDef HAL_DMAEx_ConfigMuxSync(DMA_HandleTypeDef *hdma, HAL_DMA_MuxSyncConfigTypeDef *pSyncConfig);\nHAL_StatusTypeDef HAL_DMAEx_ConfigMuxRequestGenerator (DMA_HandleTypeDef *hdma, HAL_DMA_MuxRequestGeneratorConfigTypeDef *pRequestGeneratorConfig);\nHAL_StatusTypeDef HAL_DMAEx_EnableMuxRequestGenerator (DMA_HandleTypeDef *hdma);\nHAL_StatusTypeDef HAL_DMAEx_DisableMuxRequestGenerator (DMA_HandleTypeDef *hdma);\n\nvoid HAL_DMAEx_MUX_IRQHandler(DMA_HandleTypeDef *hdma);\n/**\n  * @}\n  */\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup DMAEx_Private_Macros DMA Private Macros\n  * @brief    DMAEx private macros\n  * @{\n  */\n\n#define IS_DMA_DMAMUX_SYNC_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX1_SYNC_TIM12_TRGO)\n#define IS_BDMA_DMAMUX_SYNC_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX2_SYNC_EXTI2)\n\n#define IS_DMAMUX_SYNC_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0U) && ((REQUEST_NUMBER) <= 32U))\n\n#define IS_DMAMUX_SYNC_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_SYNC_NO_EVENT)    || \\\n                                           ((POLARITY) == HAL_DMAMUX_SYNC_RISING)   || \\\n                                           ((POLARITY) == HAL_DMAMUX_SYNC_FALLING)  || \\\n                                           ((POLARITY) == HAL_DMAMUX_SYNC_RISING_FALLING))\n\n#define IS_DMAMUX_SYNC_STATE(SYNC) (((SYNC) == DISABLE)   || ((SYNC) == ENABLE))\n\n#define IS_DMAMUX_SYNC_EVENT(EVENT) (((EVENT) == DISABLE)   || \\\n                                     ((EVENT) == ENABLE))\n\n#define IS_DMA_DMAMUX_REQUEST_GEN_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX1_REQ_GEN_TIM12_TRGO)\n#define IS_BDMA_DMAMUX_REQUEST_GEN_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT)\n\n#define IS_DMAMUX_REQUEST_GEN_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0U) && ((REQUEST_NUMBER) <= 32U))\n\n#define IS_DMAMUX_REQUEST_GEN_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_REQ_GEN_NO_EVENT) || \\\n                                                  ((POLARITY) == HAL_DMAMUX_REQ_GEN_RISING)   || \\\n                                                  ((POLARITY) == HAL_DMAMUX_REQ_GEN_FALLING)   || \\\n                                                  ((POLARITY) == HAL_DMAMUX_REQ_GEN_RISING_FALLING))\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup DMAEx_Private_Functions DMAEx Private Functions\n  * @brief DMAEx Private functions\n  * @{\n  */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_DMA_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_exti.h\n  * @author  MCD Application Team\n  * @brief   Header file of EXTI HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_EXTI_H\n#define STM32H7xx_HAL_EXTI_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup EXTI EXTI\n  * @brief EXTI HAL module driver\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n\n/** @defgroup EXTI_Exported_Types EXTI Exported Types\n  * @{\n  */\ntypedef enum\n{\n  HAL_EXTI_COMMON_CB_ID          = 0x00U,\n} EXTI_CallbackIDTypeDef;\n\n\n/**\n  * @brief  EXTI Handle structure definition\n  */\ntypedef struct\n{\n  uint32_t Line;                    /*!<  Exti line number */\n  void (* PendingCallback)(void);   /*!<  Exti pending callback */\n} EXTI_HandleTypeDef;\n\n/**\n  * @brief  EXTI Configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t Line;           /*!< The Exti line to be configured. This parameter\n                                can be a value of @ref EXTI_Line */\n  uint32_t Mode;           /*!< The Exit Mode to be configured for a core.\n                                This parameter can be a combination of @ref EXTI_Mode */\n  uint32_t Trigger;        /*!< The Exti Trigger to be configured. This parameter\n                                can be a value of @ref EXTI_Trigger */\n  uint32_t GPIOSel;        /*!< The Exti GPIO multiplexer selection to be configured.\n                                This parameter is only possible for line 0 to 15. It\n                                can be a value of @ref EXTI_GPIOSel */\n\n  uint32_t PendClearSource; /*!< Specifies the event pending clear source for D3/SRD\n                                 domain. This parameter can be a value of @ref\n                                 EXTI_PendClear_Source */\n\n} EXTI_ConfigTypeDef;\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup EXTI_Exported_Constants EXTI Exported Constants\n  * @{\n  */\n\n/** @defgroup EXTI_Line  EXTI Line\n  * @{\n  */\n#define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x00U)\n#define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x01U)\n#define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x02U)\n#define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x03U)\n#define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x04U)\n#define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x05U)\n#define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x06U)\n#define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x07U)\n#define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x08U)\n#define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x09U)\n#define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0AU)\n#define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0BU)\n#define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0CU)\n#define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0DU)\n#define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0EU)\n#define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0FU)\n#define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x10U)\n#define EXTI_LINE_17                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x11U)\n#define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x12U)\n#define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x13U)\n#define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x14U)\n#define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x15U)\n#define EXTI_LINE_22                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)\n#define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)\n#define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x18U)\n#define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x19U)\n#define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)\n#define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)\n#define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1CU)\n#define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1DU)\n#define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1EU)\n#define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1FU)\n#define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x00U)\n#define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x01U)\n#define EXTI_LINE_34                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x02U)\n#define EXTI_LINE_35                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x03U)\n#define EXTI_LINE_36                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x04U)\n#define EXTI_LINE_37                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x05U)\n#define EXTI_LINE_38                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x06U)\n#define EXTI_LINE_39                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x07U)\n#define EXTI_LINE_40                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x08U)\n#define EXTI_LINE_41                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x09U)\n#define EXTI_LINE_42                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0AU)\n#define EXTI_LINE_43                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0BU)\n#if !defined(USB2_OTG_FS)\n#define EXTI_LINE_44                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0CU)\n#else\n#define EXTI_LINE_44                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0CU)\n#endif /* USB2_OTG_FS */\n#define EXTI_LINE_45                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0DU)\n#if defined(DSI)\n#define EXTI_LINE_46                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0EU)\n#else\n#define EXTI_LINE_46                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0EU)\n#endif /* DSI */\n#define EXTI_LINE_47                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0FU)\n#define EXTI_LINE_48                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x10U)\n#define EXTI_LINE_49                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x11U)\n#define EXTI_LINE_50                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x12U)\n#define EXTI_LINE_51                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x13U)\n#if defined(LPTIM4)\n#define EXTI_LINE_52                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x14U)\n#else\n#define EXTI_LINE_52                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x14U)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define EXTI_LINE_53                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x15U)\n#else\n#define EXTI_LINE_53                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x15U)\n#endif /*LPTIM5*/\n#define EXTI_LINE_54                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)\n#define EXTI_LINE_55                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)\n#define EXTI_LINE_56                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x18U)\n#if defined(EXTI_IMR2_IM57)\n#define EXTI_LINE_57                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x19U)\n#else\n#define EXTI_LINE_57                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x19U)\n#endif /*EXTI_IMR2_IM57*/\n#define EXTI_LINE_58                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)\n#if defined(EXTI_IMR2_IM59)\n#define EXTI_LINE_59                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)\n#else\n#define EXTI_LINE_59                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x1BU)\n#endif /*EXTI_IMR2_IM59*/\n#define EXTI_LINE_60                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1CU)\n#define EXTI_LINE_61                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1DU)\n#define EXTI_LINE_62                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1EU)\n#define EXTI_LINE_63                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1FU)\n#define EXTI_LINE_64                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x00U)\n#define EXTI_LINE_65                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x01U)\n#define EXTI_LINE_66                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x02U)\n#define EXTI_LINE_67                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x03U)\n#define EXTI_LINE_68                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x04U)\n#define EXTI_LINE_69                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x05U)\n#define EXTI_LINE_70                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x06U)\n#define EXTI_LINE_71                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x07U)\n#define EXTI_LINE_72                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x08U)\n#define EXTI_LINE_73                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x09U)\n#define EXTI_LINE_74                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0AU)\n#if defined(ADC3)\n#define EXTI_LINE_75                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0BU)\n#else\n#define EXTI_LINE_75                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 |  EXTI_TARGET_MSK_NONE   | 0x0BU)\n#endif /* ADC3 */\n#if defined(SAI4)\n#define EXTI_LINE_76                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0CU)\n#else\n#define EXTI_LINE_76                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 |  EXTI_TARGET_MSK_NONE   | 0x0CU)\n#endif /* SAI4 */\n#if defined (DUAL_CORE)\n#define EXTI_LINE_77                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x0DU)\n#define EXTI_LINE_78                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x0EU)\n#define EXTI_LINE_79                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x0FU)\n#define EXTI_LINE_80                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x10U)\n#else\n#define EXTI_LINE_77                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0DU)\n#define EXTI_LINE_78                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0EU)\n#define EXTI_LINE_79                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0FU)\n#define EXTI_LINE_80                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x10U)\n#endif /* DUAL_CORE */\n#define EXTI_LINE_81                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x11U)\n#if defined (DUAL_CORE)\n#define EXTI_LINE_82                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x12U)\n#else\n#define EXTI_LINE_82                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x12U)\n#endif /* DUAL_CORE */\n#define EXTI_LINE_83                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x13U)\n#if defined (DUAL_CORE)\n#define EXTI_LINE_84                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x14U)\n#else\n#define EXTI_LINE_84                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x14U)\n#endif /* DUAL_CORE */\n#define EXTI_LINE_85                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x15U)\n#if defined(ETH)\n#define EXTI_LINE_86                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)\n#else\n#define EXTI_LINE_86                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x16U)\n#endif /* ETH */\n#define EXTI_LINE_87                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)\n#if defined(DTS)\n#define EXTI_LINE_88                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL | 0x18U)\n#endif /* DTS */\n#if defined(EXTI_IMR3_IM89)\n#define EXTI_LINE_89                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x19U)\n#endif /*EXTI_IMR3_IM89*/\n#if defined(EXTI_IMR3_IM90)\n#define EXTI_LINE_90                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)\n#endif /*EXTI_IMR3_IM90*/\n#if defined(I2C5)\n#define EXTI_LINE_91                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)\n#endif /*I2C5*/\n\n/**\n  * @}\n  */\n\n/** @defgroup EXTI_Mode  EXTI Mode\n  * @{\n  */\n#define EXTI_MODE_NONE                      0x00000000U\n#define EXTI_MODE_INTERRUPT                 0x00000001U\n#define EXTI_MODE_EVENT                     0x00000002U\n#if defined(DUAL_CORE)\n#define EXTI_MODE_CORE1_INTERRUPT           EXTI_MODE_INTERRUPT\n#define EXTI_MODE_CORE1_EVENT               EXTI_MODE_EVENT\n#define EXTI_MODE_CORE2_INTERRUPT           0x00000010U\n#define EXTI_MODE_CORE2_EVENT               0x00000020U\n#endif /* DUAL_CORE */\n/**\n  * @}\n  */\n\n/** @defgroup EXTI_Trigger  EXTI Trigger\n  * @{\n  */\n#define EXTI_TRIGGER_NONE                   0x00000000U\n#define EXTI_TRIGGER_RISING                 0x00000001U\n#define EXTI_TRIGGER_FALLING                0x00000002U\n#define EXTI_TRIGGER_RISING_FALLING         (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)\n/**\n  * @}\n  */\n\n/** @defgroup EXTI_GPIOSel  EXTI GPIOSel\n  * @brief\n  * @{\n  */\n#define EXTI_GPIOA                          0x00000000U\n#define EXTI_GPIOB                          0x00000001U\n#define EXTI_GPIOC                          0x00000002U\n#define EXTI_GPIOD                          0x00000003U\n#define EXTI_GPIOE                          0x00000004U\n#define EXTI_GPIOF                          0x00000005U\n#define EXTI_GPIOG                          0x00000006U\n#define EXTI_GPIOH                          0x00000007U\n#if defined(GPIOI)\n#define EXTI_GPIOI                          0x00000008U\n#endif /*GPIOI*/\n#define EXTI_GPIOJ                          0x00000009U\n#define EXTI_GPIOK                          0x0000000AU\n\n/**\n  * @}\n  */\n\n/** @defgroup EXTI_PendClear_Source  EXTI PendClear Source\n  * @brief\n  * @{\n  */\n#define EXTI_D3_PENDCLR_SRC_NONE       0x00000000U /*!< No D3 domain pendclear source , PMRx register to be set to zero  */\n#define EXTI_D3_PENDCLR_SRC_DMACH6     0x00000001U /*!< DMA ch6 event selected as D3 domain pendclear source, PMRx register to be set to 1 */\n#define EXTI_D3_PENDCLR_SRC_DMACH7     0x00000002U /*!< DMA ch7 event selected as D3 domain pendclear source, PMRx register to be set to 1*/\n#if defined (LPTIM4)\n#define EXTI_D3_PENDCLR_SRC_LPTIM4     0x00000003U /*!< LPTIM4 out selected as D3 domain pendclear source, PMRx register to be set to 1    */\n#else\n#define EXTI_D3_PENDCLR_SRC_LPTIM2     0x00000003U /*!< LPTIM2 out selected as D3 domain pendclear source, PMRx register to be set to 1    */\n#endif\n#if defined (LPTIM5)\n#define EXTI_D3_PENDCLR_SRC_LPTIM5     0x00000004U /*!< LPTIM5 out selected as D3 domain pendclear source, PMRx register to be set to 1    */\n#else\n#define EXTI_D3_PENDCLR_SRC_LPTIM3     0x00000004U /*!< LPTIM3 out selected as D3 domain pendclear source, PMRx register to be set to 1    */\n#endif\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup EXTI_Exported_Macros EXTI Exported Macros\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private constants --------------------------------------------------------*/\n/** @defgroup EXTI_Private_Constants EXTI Private Constants\n  * @{\n  */\n/**\n  * @brief  EXTI Line property definition\n  */\n#define EXTI_PROPERTY_SHIFT                 24U\n#define EXTI_DIRECT                         (0x01UL << EXTI_PROPERTY_SHIFT)\n#define EXTI_CONFIG                         (0x02UL << EXTI_PROPERTY_SHIFT)\n#define EXTI_GPIO                           ((0x04UL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)\n#define EXTI_RESERVED                       (0x08UL << EXTI_PROPERTY_SHIFT)\n#define EXTI_PROPERTY_MASK                  (EXTI_DIRECT | EXTI_CONFIG | EXTI_GPIO)\n\n/**\n  * @brief  EXTI Event presence definition\n  */\n#define EXTI_EVENT_PRESENCE_SHIFT           28U\n#define EXTI_EVENT                          (0x01UL << EXTI_EVENT_PRESENCE_SHIFT)\n#define EXTI_EVENT_PRESENCE_MASK            (EXTI_EVENT)\n\n/**\n  * @brief  EXTI Register and bit usage\n  */\n#define EXTI_REG_SHIFT                      16U\n#define EXTI_REG1                           (0x00UL << EXTI_REG_SHIFT)\n#define EXTI_REG2                           (0x01UL << EXTI_REG_SHIFT)\n#define EXTI_REG3                           (0x02UL << EXTI_REG_SHIFT)\n#define EXTI_REG_MASK                       (EXTI_REG1 | EXTI_REG2 | EXTI_REG3)\n#define EXTI_PIN_MASK                       0x0000001FUL\n\n/**\n  * @brief  EXTI Target and bit usage\n  */\n#define EXTI_TARGET_SHIFT                   20U\n#define EXTI_TARGET_MSK_NONE                (0x00UL << EXTI_TARGET_SHIFT)\n#define EXTI_TARGET_MSK_D3SRD               (0x01UL << EXTI_TARGET_SHIFT)\n#define EXTI_TARGET_MSK_CPU1                (0x02UL << EXTI_TARGET_SHIFT)\n#if defined (DUAL_CORE)\n#define EXTI_TARGET_MSK_CPU2                (0x04UL << EXTI_TARGET_SHIFT)\n#define EXTI_TARGET_MASK                    (EXTI_TARGET_MSK_D3SRD | EXTI_TARGET_MSK_CPU1 | EXTI_TARGET_MSK_CPU2)\n#define EXTI_TARGET_MSK_ALL_CPU             (EXTI_TARGET_MSK_CPU1 | EXTI_TARGET_MSK_CPU2)\n#else\n#define EXTI_TARGET_MASK                    (EXTI_TARGET_MSK_D3SRD | EXTI_TARGET_MSK_CPU1)\n#define EXTI_TARGET_MSK_ALL_CPU              EXTI_TARGET_MSK_CPU1\n#endif /* DUAL_CORE */\n#define EXTI_TARGET_MSK_ALL                  EXTI_TARGET_MASK\n\n/**\n  * @brief  EXTI Mask for interrupt & event mode\n  */\n#if defined (DUAL_CORE)\n#define EXTI_MODE_MASK                      (EXTI_MODE_CORE1_EVENT | EXTI_MODE_CORE1_INTERRUPT | EXTI_MODE_CORE2_INTERRUPT | EXTI_MODE_CORE2_EVENT)\n#else\n#define EXTI_MODE_MASK                      (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT)\n#endif /* DUAL_CORE */\n\n/**\n  * @brief  EXTI Mask for trigger possibilities\n  */\n#define EXTI_TRIGGER_MASK                   (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)\n\n/**\n  * @brief  EXTI Line number\n  */\n#if (STM32H7_DEV_ID == 0x483UL)\n#define EXTI_LINE_NB                        92UL\n#elif (STM32H7_DEV_ID == 0x480UL)\n#define EXTI_LINE_NB                        89UL\n#else\n#define EXTI_LINE_NB                        88UL\n#endif /* EXTI_LINE_91 */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup EXTI_Private_Macros EXTI Private Macros\n  * @{\n  */\n#define IS_EXTI_PROPERTY(__EXTI_LINE__)      ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_DIRECT) || \\\n                                             (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG)          || \\\n                                             (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO))\n#if defined (DUAL_CORE)\n#define IS_EXTI_TARGET(__EXTI_LINE__)        ((((__EXTI_LINE__) & EXTI_TARGET_MASK)   == EXTI_TARGET_MSK_CPU1)      || \\\n                                             (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_CPU2)    || \\\n                                             (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL_CPU) || \\\n                                             (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL))\n#else\n#define IS_EXTI_TARGET(__EXTI_LINE__)        ((((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_CPU1)   || \\\n                                             (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL))\n#endif\n\n#define IS_EXTI_LINE(__EXTI_LINE__)          ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_EVENT_PRESENCE_MASK |\\\n                                              EXTI_REG_MASK | EXTI_PIN_MASK | EXTI_TARGET_MASK)) == 0x00UL) && \\\n                                              IS_EXTI_PROPERTY(__EXTI_LINE__) && IS_EXTI_TARGET(__EXTI_LINE__) && \\\n                                             (((__EXTI_LINE__) & (EXTI_REG_MASK | EXTI_PIN_MASK))      < \\\n                                             (((EXTI_LINE_NB / 32UL) << EXTI_REG_SHIFT) | (EXTI_LINE_NB % 32UL))))\n\n#define IS_EXTI_MODE(__MODE__)               (((__MODE__) & ~EXTI_MODE_MASK) == 0x00UL)\n\n#define IS_EXTI_TRIGGER(__EXTI_LINE__)       (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00UL)\n\n#define IS_EXTI_PENDING_EDGE(__EXTI_LINE__)  (((__EXTI_LINE__) == EXTI_TRIGGER_RISING) || \\\n                                             ((__EXTI_LINE__) == EXTI_TRIGGER_FALLING)|| \\\n                                             ((__EXTI_LINE__) == EXTI_TRIGGER_RISING_FALLING))\n\n#define IS_EXTI_CONFIG_LINE(__EXTI_LINE__)   (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00UL)\n\n#if defined(GPIOI)\n#define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\\n                                         ((__PORT__) == EXTI_GPIOB) || \\\n                                         ((__PORT__) == EXTI_GPIOC) || \\\n                                         ((__PORT__) == EXTI_GPIOD) || \\\n                                         ((__PORT__) == EXTI_GPIOE) || \\\n                                         ((__PORT__) == EXTI_GPIOF) || \\\n                                         ((__PORT__) == EXTI_GPIOG) || \\\n                                         ((__PORT__) == EXTI_GPIOH) || \\\n                                         ((__PORT__) == EXTI_GPIOI) || \\\n                                         ((__PORT__) == EXTI_GPIOJ) || \\\n                                         ((__PORT__) == EXTI_GPIOK))\n#else\n#define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\\n                                         ((__PORT__) == EXTI_GPIOB) || \\\n                                         ((__PORT__) == EXTI_GPIOC) || \\\n                                         ((__PORT__) == EXTI_GPIOD) || \\\n                                         ((__PORT__) == EXTI_GPIOE) || \\\n                                         ((__PORT__) == EXTI_GPIOF) || \\\n                                         ((__PORT__) == EXTI_GPIOG) || \\\n                                         ((__PORT__) == EXTI_GPIOH) || \\\n                                         ((__PORT__) == EXTI_GPIOJ) || \\\n                                         ((__PORT__) == EXTI_GPIOK))\n#endif /*GPIOI*/\n\n#define IS_EXTI_GPIO_PIN(__PIN__)       ((__PIN__) < 16UL)\n#if defined (LPTIM4) && defined (LPTIM5)\n#define IS_EXTI_D3_PENDCLR_SRC(__SRC__) (((__SRC__) == EXTI_D3_PENDCLR_SRC_NONE) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH6) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH7) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM4) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM5))\n#else\n#define IS_EXTI_D3_PENDCLR_SRC(__SRC__) (((__SRC__) == EXTI_D3_PENDCLR_SRC_NONE) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH6) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH7) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM2) || \\\n                                         ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM3))\n#endif /* LPTIM4 && LPTIM5 */\n\n/**\n  * @}\n  */\n\n\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup EXTI_Exported_Functions EXTI Exported Functions\n  * @brief    EXTI Exported Functions\n  * @{\n  */\n\n/** @defgroup EXTI_Exported_Functions_Group1 Configuration functions\n  * @brief    Configuration functions\n  * @{\n  */\n/* Configuration functions ****************************************************/\nHAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);\nHAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);\nHAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti);\nHAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void));\nHAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine);\n/**\n  * @}\n  */\n\n/** @defgroup EXTI_Exported_Functions_Group2 IO operation functions\n  * @brief    IO operation functions\n  * @{\n  */\n/* IO operation functions *****************************************************/\nvoid              HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti);\nuint32_t          HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);\nvoid              HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);\nvoid              HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_EXTI_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_flash.h\n  * @author  MCD Application Team\n  * @brief   Header file of FLASH HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_FLASH_H\n#define STM32H7xx_HAL_FLASH_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup FLASH\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup FLASH_Exported_Types FLASH Exported Types\n  * @{\n  */\n\n/**\n  * @brief  FLASH Procedure structure definition\n  */\ntypedef enum\n{\n  FLASH_PROC_NONE = 0U,\n  FLASH_PROC_SECTERASE_BANK1,\n  FLASH_PROC_MASSERASE_BANK1,\n  FLASH_PROC_PROGRAM_BANK1,\n  FLASH_PROC_SECTERASE_BANK2,\n  FLASH_PROC_MASSERASE_BANK2,\n  FLASH_PROC_PROGRAM_BANK2,\n  FLASH_PROC_ALLBANK_MASSERASE\n} FLASH_ProcedureTypeDef;\n\n\n/**\n  * @brief  FLASH handle Structure definition\n  */\ntypedef struct\n{\n  __IO FLASH_ProcedureTypeDef ProcedureOnGoing;   /*!< Internal variable to indicate which procedure is ongoing or not in IT context */\n\n  __IO uint32_t               NbSectorsToErase;   /*!< Internal variable to save the remaining sectors to erase in IT context        */\n\n  __IO uint32_t               VoltageForErase;    /*!< Internal variable to provide voltage range selected by user in IT context     */\n\n  __IO uint32_t               Sector;             /*!< Internal variable to define the current sector which is erasing               */\n\n  __IO uint32_t               Address;            /*!< Internal variable to save address selected for program                        */\n\n  HAL_LockTypeDef             Lock;               /*!< FLASH locking object                                                          */\n\n  __IO uint32_t               ErrorCode;          /*!< FLASH error code                                                              */\n\n}FLASH_ProcessTypeDef;\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup FLASH_Exported_Constants FLASH Exported Constants\n  * @{\n  */\n\n/** @defgroup FLASH_Error_Code FLASH Error Code\n  * @brief    FLASH Error Code\n  * @{\n  */\n#define HAL_FLASH_ERROR_NONE         0x00000000U               /*!< No error                              */\n\n#define HAL_FLASH_ERROR_WRP          FLASH_FLAG_WRPERR         /*!< Write Protection Error                */\n#define HAL_FLASH_ERROR_PGS          FLASH_FLAG_PGSERR         /*!< Program Sequence Error                */\n#define HAL_FLASH_ERROR_STRB         FLASH_FLAG_STRBERR        /*!< Strobe Error                          */\n#define HAL_FLASH_ERROR_INC          FLASH_FLAG_INCERR         /*!< Inconsistency Error                   */\n#if defined (FLASH_SR_OPERR)\n#define HAL_FLASH_ERROR_OPE          FLASH_FLAG_OPERR          /*!< Operation Error                       */\n#endif /* FLASH_SR_OPERR */\n#define HAL_FLASH_ERROR_RDP          FLASH_FLAG_RDPERR         /*!< Read Protection Error                 */\n#define HAL_FLASH_ERROR_RDS          FLASH_FLAG_RDSERR         /*!< Read Secured Error                    */\n#define HAL_FLASH_ERROR_SNECC        FLASH_FLAG_SNECCERR       /*!< ECC Single Correction Error           */\n#define HAL_FLASH_ERROR_DBECC        FLASH_FLAG_DBECCERR       /*!< ECC Double Detection Error            */\n#define HAL_FLASH_ERROR_CRCRD        FLASH_FLAG_CRCRDERR       /*!< CRC Read Error                        */\n\n#define HAL_FLASH_ERROR_WRP_BANK1    FLASH_FLAG_WRPERR_BANK1   /*!< Write Protection Error on Bank 1      */\n#define HAL_FLASH_ERROR_PGS_BANK1    FLASH_FLAG_PGSERR_BANK1   /*!< Program Sequence Error on Bank 1      */\n#define HAL_FLASH_ERROR_STRB_BANK1   FLASH_FLAG_STRBERR_BANK1  /*!< Strobe Error on Bank 1                */\n#define HAL_FLASH_ERROR_INC_BANK1    FLASH_FLAG_INCERR_BANK1   /*!< Inconsistency Error on Bank 1         */\n#if defined (FLASH_SR_OPERR)\n#define HAL_FLASH_ERROR_OPE_BANK1    FLASH_FLAG_OPERR_BANK1    /*!< Operation Error on Bank 1             */\n#endif /* FLASH_SR_OPERR */\n#define HAL_FLASH_ERROR_RDP_BANK1    FLASH_FLAG_RDPERR_BANK1   /*!< Read Protection Error on Bank 1       */\n#define HAL_FLASH_ERROR_RDS_BANK1    FLASH_FLAG_RDSERR_BANK1   /*!< Read Secured Error on Bank 1          */\n#define HAL_FLASH_ERROR_SNECC_BANK1  FLASH_FLAG_SNECCERR_BANK1 /*!< ECC Single Correction Error on Bank 1 */\n#define HAL_FLASH_ERROR_DBECC_BANK1  FLASH_FLAG_DBECCERR_BANK1 /*!< ECC Double Detection Error on Bank 1  */\n#define HAL_FLASH_ERROR_CRCRD_BANK1  FLASH_FLAG_CRCRDERR_BANK1 /*!< CRC Read Error on Bank1               */\n\n#define HAL_FLASH_ERROR_WRP_BANK2    FLASH_FLAG_WRPERR_BANK2    /*!< Write Protection Error on Bank 2      */\n#define HAL_FLASH_ERROR_PGS_BANK2    FLASH_FLAG_PGSERR_BANK2    /*!< Program Sequence Error on Bank 2      */\n#define HAL_FLASH_ERROR_STRB_BANK2   FLASH_FLAG_STRBERR_BANK2   /*!< Strobe Error on Bank 2                */\n#define HAL_FLASH_ERROR_INC_BANK2    FLASH_FLAG_INCERR_BANK2    /*!< Inconsistency Error on Bank 2         */\n#if defined (FLASH_SR_OPERR)\n#define HAL_FLASH_ERROR_OPE_BANK2    FLASH_FLAG_OPERR_BANK2     /*!< Operation Error on Bank 2             */\n#endif /* FLASH_SR_OPERR */\n#define HAL_FLASH_ERROR_RDP_BANK2    FLASH_FLAG_RDPERR_BANK2    /*!< Read Protection Error on Bank 2       */\n#define HAL_FLASH_ERROR_RDS_BANK2    FLASH_FLAG_RDSERR_BANK2    /*!< Read Secured Error on Bank 2          */\n#define HAL_FLASH_ERROR_SNECC_BANK2  FLASH_FLAG_SNECCERR_BANK2  /*!< ECC Single Correction Error on Bank 2 */\n#define HAL_FLASH_ERROR_DBECC_BANK2  FLASH_FLAG_DBECCERR_BANK2  /*!< ECC Double Detection Error on Bank 2  */\n#define HAL_FLASH_ERROR_CRCRD_BANK2  FLASH_FLAG_CRCRDERR_BANK2  /*!< CRC Read Error on Bank2               */\n\n#define HAL_FLASH_ERROR_OB_CHANGE    FLASH_OPTSR_OPTCHANGEERR   /*!< Option Byte Change Error              */\n/**\n  * @}\n  */\n\n/** @defgroup FLASH_Type_Program FLASH Type Program\n  * @{\n  */\n#define FLASH_TYPEPROGRAM_FLASHWORD  0x01U        /*!< Program a flash word at a specified address */\n#if defined (FLASH_OPTCR_PG_OTP)\n#define FLASH_TYPEPROGRAM_OTPWORD    0x02U        /*!< Program an OTP word at a specified address  */\n#endif /* FLASH_OPTCR_PG_OTP */\n/**\n  * @}\n  */\n\n/** @defgroup FLASH_Flag_definition FLASH Flag definition\n  * @brief Flag definition\n  * @{\n  */\n#define FLASH_FLAG_BSY                     FLASH_SR_BSY             /*!< FLASH Busy flag */\n#define FLASH_FLAG_WBNE                    FLASH_SR_WBNE            /*!< Write Buffer Not Empty flag */\n#define FLASH_FLAG_QW                      FLASH_SR_QW              /*!< Wait Queue on flag */\n#define FLASH_FLAG_CRC_BUSY                FLASH_SR_CRC_BUSY        /*!< CRC Busy flag */\n#define FLASH_FLAG_EOP                     FLASH_SR_EOP             /*!< End Of Program on flag */\n#define FLASH_FLAG_WRPERR                  FLASH_SR_WRPERR          /*!< Write Protection Error on flag */\n#define FLASH_FLAG_PGSERR                  FLASH_SR_PGSERR          /*!< Program Sequence Error on flag */\n#define FLASH_FLAG_STRBERR                 FLASH_SR_STRBERR         /*!< Strobe Error flag */\n#define FLASH_FLAG_INCERR                  FLASH_SR_INCERR          /*!< Inconsistency Error on flag */\n#if defined (FLASH_SR_OPERR)\n#define FLASH_FLAG_OPERR                   FLASH_SR_OPERR           /*!< Operation Error on flag */\n#endif /* FLASH_SR_OPERR */\n#define FLASH_FLAG_RDPERR                  FLASH_SR_RDPERR          /*!< Read Protection Error on flag */\n#define FLASH_FLAG_RDSERR                  FLASH_SR_RDSERR          /*!< Read Secured Error on flag */\n#define FLASH_FLAG_SNECCERR                FLASH_SR_SNECCERR        /*!< Single ECC Error Correction on flag */\n#define FLASH_FLAG_DBECCERR                FLASH_SR_DBECCERR        /*!< Double Detection ECC Error on flag */\n#define FLASH_FLAG_CRCEND                  FLASH_SR_CRCEND          /*!< CRC End of Calculation flag */\n#define FLASH_FLAG_CRCRDERR                FLASH_SR_CRCRDERR        /*!< CRC Read Error on bank flag */\n\n#define FLASH_FLAG_BSY_BANK1               FLASH_SR_BSY             /*!< FLASH Bank 1 Busy flag */\n#define FLASH_FLAG_WBNE_BANK1              FLASH_SR_WBNE            /*!< Write Buffer Not Empty on Bank 1 flag */\n#define FLASH_FLAG_QW_BANK1                FLASH_SR_QW              /*!< Wait Queue on Bank 1 flag */\n#define FLASH_FLAG_CRC_BUSY_BANK1          FLASH_SR_CRC_BUSY        /*!< CRC Busy on Bank 1 flag */\n#define FLASH_FLAG_EOP_BANK1               FLASH_SR_EOP             /*!< End Of Program on Bank 1 flag */\n#define FLASH_FLAG_WRPERR_BANK1            FLASH_SR_WRPERR          /*!< Write Protection Error on Bank 1 flag */\n#define FLASH_FLAG_PGSERR_BANK1            FLASH_SR_PGSERR          /*!< Program Sequence Error on Bank 1 flag */\n#define FLASH_FLAG_STRBERR_BANK1           FLASH_SR_STRBERR         /*!< Strobe Error on Bank 1 flag */\n#define FLASH_FLAG_INCERR_BANK1            FLASH_SR_INCERR          /*!< Inconsistency Error on Bank 1 flag */\n#if defined (FLASH_SR_OPERR)\n#define FLASH_FLAG_OPERR_BANK1             FLASH_SR_OPERR           /*!< Operation Error on Bank 1 flag */\n#endif /* FLASH_SR_OPERR */\n#define FLASH_FLAG_RDPERR_BANK1            FLASH_SR_RDPERR          /*!< Read Protection Error on Bank 1 flag */\n#define FLASH_FLAG_RDSERR_BANK1            FLASH_SR_RDSERR          /*!< Read Secured Error on Bank 1 flag */\n#define FLASH_FLAG_SNECCERR_BANK1          FLASH_SR_SNECCERR        /*!< Single ECC Error Correction on Bank 1 flag */\n#define FLASH_FLAG_DBECCERR_BANK1          FLASH_SR_DBECCERR        /*!< Double Detection ECC Error on Bank 1 flag */\n#define FLASH_FLAG_CRCEND_BANK1            FLASH_SR_CRCEND          /*!< CRC End of Calculation on Bank 1 flag */\n#define FLASH_FLAG_CRCRDERR_BANK1          FLASH_SR_CRCRDERR        /*!< CRC Read error on Bank 1 flag */\n\n#if defined (FLASH_SR_OPERR)\n#define FLASH_FLAG_ALL_ERRORS_BANK1       (FLASH_FLAG_WRPERR_BANK1   | FLASH_FLAG_PGSERR_BANK1   | \\\n                                           FLASH_FLAG_STRBERR_BANK1  | FLASH_FLAG_INCERR_BANK1   | \\\n                                           FLASH_FLAG_OPERR_BANK1    | FLASH_FLAG_RDPERR_BANK1   | \\\n                                           FLASH_FLAG_RDSERR_BANK1   | FLASH_FLAG_SNECCERR_BANK1 | \\\n                                           FLASH_FLAG_DBECCERR_BANK1 | FLASH_FLAG_CRCRDERR_BANK1) /*!< All Bank 1 error flags */\n#else\n#define FLASH_FLAG_ALL_ERRORS_BANK1       (FLASH_FLAG_WRPERR_BANK1   | FLASH_FLAG_PGSERR_BANK1   | \\\n                                           FLASH_FLAG_STRBERR_BANK1  | FLASH_FLAG_INCERR_BANK1   | \\\n                                           FLASH_FLAG_RDPERR_BANK1   | FLASH_FLAG_RDSERR_BANK1   | \\\n                                           FLASH_FLAG_SNECCERR_BANK1 | FLASH_FLAG_DBECCERR_BANK1 | \\\n                                           FLASH_FLAG_CRCRDERR_BANK1) /*!< All Bank 1 error flags */\n#endif /* FLASH_SR_OPERR */\n\n#define FLASH_FLAG_ALL_BANK1              (FLASH_FLAG_BSY_BANK1      | FLASH_FLAG_WBNE_BANK1     | \\\n                                           FLASH_FLAG_QW_BANK1       | FLASH_FLAG_CRC_BUSY_BANK1 | \\\n                                           FLASH_FLAG_EOP_BANK1      | FLASH_FLAG_CRCEND_BANK1   | \\\n                                           FLASH_FLAG_ALL_ERRORS_BANK1) /*!< All Bank 1 flags */\n\n#define FLASH_FLAG_BSY_BANK2               (FLASH_SR_BSY      | 0x80000000U)        /*!< FLASH Bank 2 Busy flag */\n#define FLASH_FLAG_WBNE_BANK2              (FLASH_SR_WBNE     | 0x80000000U)        /*!< Write Buffer Not Empty on Bank 2 flag */\n#define FLASH_FLAG_QW_BANK2                (FLASH_SR_QW       | 0x80000000U)        /*!< Wait Queue on Bank 2 flag */\n#define FLASH_FLAG_CRC_BUSY_BANK2          (FLASH_SR_CRC_BUSY | 0x80000000U)        /*!< CRC Busy on Bank 2 flag */\n#define FLASH_FLAG_EOP_BANK2               (FLASH_SR_EOP      | 0x80000000U)        /*!< End Of Program on Bank 2 flag */\n#define FLASH_FLAG_WRPERR_BANK2            (FLASH_SR_WRPERR   | 0x80000000U)        /*!< Write Protection Error on Bank 2 flag */\n#define FLASH_FLAG_PGSERR_BANK2            (FLASH_SR_PGSERR   | 0x80000000U)        /*!< Program Sequence Error on Bank 2 flag */\n#define FLASH_FLAG_STRBERR_BANK2           (FLASH_SR_STRBERR  | 0x80000000U)        /*!< Strobe Error on Bank 2 flag */\n#define FLASH_FLAG_INCERR_BANK2            (FLASH_SR_INCERR   | 0x80000000U)        /*!< Inconsistency Error on Bank 2 flag */\n#if defined (FLASH_SR_OPERR)\n#define FLASH_FLAG_OPERR_BANK2             (FLASH_SR_OPERR    | 0x80000000U)        /*!< Operation Error on Bank 2 flag */\n#endif /* FLASH_SR_OPERR */\n#define FLASH_FLAG_RDPERR_BANK2            (FLASH_SR_RDPERR   | 0x80000000U)        /*!< Read Protection Error on Bank 2 flag */\n#define FLASH_FLAG_RDSERR_BANK2            (FLASH_SR_RDSERR   | 0x80000000U)        /*!< Read Secured Error on Bank 2 flag */\n#define FLASH_FLAG_SNECCERR_BANK2          (FLASH_SR_SNECCERR | 0x80000000U)        /*!< Single ECC Error Correction on Bank 2 flag */\n#define FLASH_FLAG_DBECCERR_BANK2          (FLASH_SR_DBECCERR | 0x80000000U)        /*!< Double Detection ECC Error on Bank 2 flag */\n#define FLASH_FLAG_CRCEND_BANK2            (FLASH_SR_CRCEND   | 0x80000000U)        /*!< CRC End of Calculation on Bank 2 flag */\n#define FLASH_FLAG_CRCRDERR_BANK2          (FLASH_SR_CRCRDERR | 0x80000000U)        /*!< CRC Read error on Bank 2 flag */\n\n#if defined (FLASH_SR_OPERR)\n#define FLASH_FLAG_ALL_ERRORS_BANK2       (FLASH_FLAG_WRPERR_BANK2   | FLASH_FLAG_PGSERR_BANK2   | \\\n                                           FLASH_FLAG_STRBERR_BANK2  | FLASH_FLAG_INCERR_BANK2   | \\\n                                           FLASH_FLAG_OPERR_BANK2    | FLASH_FLAG_RDPERR_BANK2   | \\\n                                           FLASH_FLAG_RDSERR_BANK2   | FLASH_FLAG_SNECCERR_BANK2 | \\\n                                           FLASH_FLAG_DBECCERR_BANK2 | FLASH_FLAG_CRCRDERR_BANK2) /*!< All Bank 2 error flags */\n#else\n#define FLASH_FLAG_ALL_ERRORS_BANK2       (FLASH_FLAG_WRPERR_BANK2   | FLASH_FLAG_PGSERR_BANK2   | \\\n                                           FLASH_FLAG_STRBERR_BANK2  | FLASH_FLAG_INCERR_BANK2   | \\\n                                           FLASH_FLAG_RDPERR_BANK2   | FLASH_FLAG_RDSERR_BANK2   | \\\n                                           FLASH_FLAG_SNECCERR_BANK2 | FLASH_FLAG_DBECCERR_BANK2 | \\\n                                           FLASH_FLAG_CRCRDERR_BANK2) /*!< All Bank 2 error flags */\n#endif /* FLASH_SR_OPERR */\n\n#define FLASH_FLAG_ALL_BANK2              (FLASH_FLAG_BSY_BANK2      | FLASH_FLAG_WBNE_BANK2     | \\\n                                           FLASH_FLAG_QW_BANK2       | FLASH_FLAG_CRC_BUSY_BANK2 | \\\n                                           FLASH_FLAG_EOP_BANK2      | FLASH_FLAG_CRCEND_BANK2   | \\\n                                           FLASH_FLAG_ALL_ERRORS_BANK2) /*!< All Bank 2 flags */\n/**\n  * @}\n  */\n\n/** @defgroup FLASH_Interrupt_definition FLASH Interrupt definition\n  * @brief FLASH Interrupt definition\n  * @{\n  */\n#define FLASH_IT_EOP_BANK1                  FLASH_CR_EOPIE       /*!< End of FLASH Bank 1 Operation Interrupt source */\n#define FLASH_IT_WRPERR_BANK1               FLASH_CR_WRPERRIE    /*!< Write Protection Error on Bank 1 Interrupt source */\n#define FLASH_IT_PGSERR_BANK1               FLASH_CR_PGSERRIE    /*!< Program Sequence Error on Bank 1 Interrupt source */\n#define FLASH_IT_STRBERR_BANK1              FLASH_CR_STRBERRIE   /*!< Strobe Error on Bank 1 Interrupt source */\n#define FLASH_IT_INCERR_BANK1               FLASH_CR_INCERRIE    /*!< Inconsistency Error on Bank 1 Interrupt source */\n#if defined (FLASH_CR_OPERRIE)\n#define FLASH_IT_OPERR_BANK1                FLASH_CR_OPERRIE     /*!< Operation Error on Bank 1 Interrupt source */\n#endif /* FLASH_CR_OPERRIE */\n#define FLASH_IT_RDPERR_BANK1               FLASH_CR_RDPERRIE    /*!< Read protection Error on Bank 1 Interrupt source */\n#define FLASH_IT_RDSERR_BANK1               FLASH_CR_RDSERRIE    /*!< Read Secured Error on Bank 1 Interrupt source */\n#define FLASH_IT_SNECCERR_BANK1             FLASH_CR_SNECCERRIE  /*!< Single ECC Error Correction on Bank 1 Interrupt source */\n#define FLASH_IT_DBECCERR_BANK1             FLASH_CR_DBECCERRIE  /*!< Double Detection ECC Error on Bank 1 Interrupt source */\n#define FLASH_IT_CRCEND_BANK1               FLASH_CR_CRCENDIE    /*!< CRC End on Bank 1 Interrupt source */\n#define FLASH_IT_CRCRDERR_BANK1             FLASH_CR_CRCRDERRIE  /*!< CRC Read error on Bank 1 Interrupt source */\n\n#if defined (FLASH_CR_OPERRIE)\n#define FLASH_IT_ALL_BANK1                 (FLASH_IT_EOP_BANK1       | FLASH_IT_WRPERR_BANK1    | \\\n                                            FLASH_IT_PGSERR_BANK1    | FLASH_IT_STRBERR_BANK1   | \\\n                                            FLASH_IT_INCERR_BANK1    | FLASH_IT_OPERR_BANK1     | \\\n                                            FLASH_IT_RDPERR_BANK1    | FLASH_IT_RDSERR_BANK1    | \\\n                                            FLASH_IT_SNECCERR_BANK1  | FLASH_IT_DBECCERR_BANK1  | \\\n                                            FLASH_IT_CRCEND_BANK1    | FLASH_IT_CRCRDERR_BANK1) /*!< All Bank 1 Interrupt sources */\n#else\n#define FLASH_IT_ALL_BANK1                 (FLASH_IT_EOP_BANK1       | FLASH_IT_WRPERR_BANK1    | \\\n                                            FLASH_IT_PGSERR_BANK1    | FLASH_IT_STRBERR_BANK1   | \\\n                                            FLASH_IT_INCERR_BANK1    | FLASH_IT_RDPERR_BANK1    | \\\n                                            FLASH_IT_RDSERR_BANK1    | FLASH_IT_SNECCERR_BANK1  | \\\n                                            FLASH_IT_DBECCERR_BANK1  | FLASH_IT_CRCEND_BANK1    | \\\n                                            FLASH_IT_CRCRDERR_BANK1) /*!< All Bank 1 Interrupt sources */\n#endif /* FLASH_CR_OPERRIE */\n\n#define FLASH_IT_EOP_BANK2                 (FLASH_CR_EOPIE      | 0x80000000U)  /*!< End of FLASH Bank 2 Operation Interrupt source */\n#define FLASH_IT_WRPERR_BANK2              (FLASH_CR_WRPERRIE   | 0x80000000U)  /*!< Write Protection Error on Bank 2 Interrupt source */\n#define FLASH_IT_PGSERR_BANK2              (FLASH_CR_PGSERRIE   | 0x80000000U)  /*!< Program Sequence Error on Bank 2 Interrupt source */\n#define FLASH_IT_STRBERR_BANK2             (FLASH_CR_STRBERRIE  | 0x80000000U)  /*!< Strobe Error on Bank 2 Interrupt source */\n#define FLASH_IT_INCERR_BANK2              (FLASH_CR_INCERRIE   | 0x80000000U)  /*!< Inconsistency Error on Bank 2 Interrupt source */\n#if defined (FLASH_CR_OPERRIE)\n#define FLASH_IT_OPERR_BANK2               (FLASH_CR_OPERRIE    | 0x80000000U)  /*!< Operation Error on Bank 2 Interrupt source */\n#endif /* FLASH_CR_OPERRIE */\n#define FLASH_IT_RDPERR_BANK2              (FLASH_CR_RDPERRIE   | 0x80000000U)  /*!< Read protection Error on Bank 2 Interrupt source */\n#define FLASH_IT_RDSERR_BANK2              (FLASH_CR_RDSERRIE   | 0x80000000U)  /*!< Read Secured Error on Bank 2 Interrupt source */\n#define FLASH_IT_SNECCERR_BANK2            (FLASH_CR_SNECCERRIE | 0x80000000U)  /*!< Single ECC Error Correction on Bank 2 Interrupt source */\n#define FLASH_IT_DBECCERR_BANK2            (FLASH_CR_DBECCERRIE | 0x80000000U)  /*!< Double Detection ECC Error on Bank 2 Interrupt source */\n#define FLASH_IT_CRCEND_BANK2              (FLASH_CR_CRCENDIE   | 0x80000000U)  /*!< CRC End on Bank 2 Interrupt source */\n#define FLASH_IT_CRCRDERR_BANK2            (FLASH_CR_CRCRDERRIE | 0x80000000U)  /*!< CRC Read Error on Bank 2 Interrupt source */\n\n#if defined (FLASH_CR_OPERRIE)\n#define FLASH_IT_ALL_BANK2                 (FLASH_IT_EOP_BANK2       | FLASH_IT_WRPERR_BANK2    | \\\n                                            FLASH_IT_PGSERR_BANK2    | FLASH_IT_STRBERR_BANK2   | \\\n                                            FLASH_IT_INCERR_BANK2    | FLASH_IT_OPERR_BANK2     | \\\n                                            FLASH_IT_RDPERR_BANK2    | FLASH_IT_RDSERR_BANK2    | \\\n                                            FLASH_IT_SNECCERR_BANK2  | FLASH_IT_DBECCERR_BANK2  | \\\n                                            FLASH_IT_CRCEND_BANK2    | FLASH_IT_CRCRDERR_BANK2) /*!< All Bank 2 Interrupt sources */\n#else\n#define FLASH_IT_ALL_BANK2                 (FLASH_IT_EOP_BANK2       | FLASH_IT_WRPERR_BANK2    | \\\n                                            FLASH_IT_PGSERR_BANK2    | FLASH_IT_STRBERR_BANK2   | \\\n                                            FLASH_IT_INCERR_BANK2    | FLASH_IT_RDPERR_BANK2    | \\\n                                            FLASH_IT_RDSERR_BANK2    | FLASH_IT_SNECCERR_BANK2  | \\\n                                            FLASH_IT_DBECCERR_BANK2  | FLASH_IT_CRCEND_BANK2    | \\\n                                            FLASH_IT_CRCRDERR_BANK2) /*!< All Bank 2 Interrupt sources */\n#endif /* FLASH_CR_OPERRIE */\n/**\n  * @}\n  */\n\n#if defined (FLASH_CR_PSIZE)\n/** @defgroup FLASH_Program_Parallelism FLASH Program Parallelism\n  * @{\n  */\n#define FLASH_PSIZE_BYTE           0x00000000U       /*!< Flash program/erase by 8 bits  */\n#define FLASH_PSIZE_HALF_WORD      FLASH_CR_PSIZE_0  /*!< Flash program/erase by 16 bits */\n#define FLASH_PSIZE_WORD           FLASH_CR_PSIZE_1  /*!< Flash program/erase by 32 bits */\n#define FLASH_PSIZE_DOUBLE_WORD    FLASH_CR_PSIZE    /*!< Flash program/erase by 64 bits */\n/**\n  * @}\n  */\n#endif /* FLASH_CR_PSIZE */\n\n\n/** @defgroup FLASH_Keys FLASH Keys\n  * @{\n  */\n#define FLASH_KEY1                 0x45670123U\n#define FLASH_KEY2                 0xCDEF89ABU\n#define FLASH_OPT_KEY1             0x08192A3BU\n#define FLASH_OPT_KEY2             0x4C5D6E7FU\n/**\n  * @}\n  */\n\n/** @defgroup FLASH_Sectors FLASH Sectors\n  * @{\n  */\n#define FLASH_SECTOR_0             0U       /*!< Sector Number 0   */\n#define FLASH_SECTOR_1             1U       /*!< Sector Number 1   */\n#define FLASH_SECTOR_2             2U       /*!< Sector Number 2   */\n#define FLASH_SECTOR_3             3U       /*!< Sector Number 3   */\n#define FLASH_SECTOR_4             4U       /*!< Sector Number 4   */\n#define FLASH_SECTOR_5             5U       /*!< Sector Number 5   */\n#define FLASH_SECTOR_6             6U       /*!< Sector Number 6   */\n#define FLASH_SECTOR_7             7U       /*!< Sector Number 7   */\n#if (FLASH_SECTOR_TOTAL == 128)\n#define FLASH_SECTOR_8             8U       /*!< Sector Number 8   */\n#define FLASH_SECTOR_9             9U       /*!< Sector Number 9   */\n#define FLASH_SECTOR_10            10U      /*!< Sector Number 10  */\n#define FLASH_SECTOR_11            11U      /*!< Sector Number 11  */\n#define FLASH_SECTOR_12            12U      /*!< Sector Number 12  */\n#define FLASH_SECTOR_13            13U      /*!< Sector Number 13  */\n#define FLASH_SECTOR_14            14U      /*!< Sector Number 14  */\n#define FLASH_SECTOR_15            15U      /*!< Sector Number 15  */\n#define FLASH_SECTOR_16            16U      /*!< Sector Number 16  */\n#define FLASH_SECTOR_17            17U      /*!< Sector Number 17  */\n#define FLASH_SECTOR_18            18U      /*!< Sector Number 18  */\n#define FLASH_SECTOR_19            19U      /*!< Sector Number 19  */\n#define FLASH_SECTOR_20            20U      /*!< Sector Number 20  */\n#define FLASH_SECTOR_21            21U      /*!< Sector Number 21  */\n#define FLASH_SECTOR_22            22U      /*!< Sector Number 22  */\n#define FLASH_SECTOR_23            23U      /*!< Sector Number 23  */\n#define FLASH_SECTOR_24            24U      /*!< Sector Number 24  */\n#define FLASH_SECTOR_25            25U      /*!< Sector Number 25  */\n#define FLASH_SECTOR_26            26U      /*!< Sector Number 26  */\n#define FLASH_SECTOR_27            27U      /*!< Sector Number 27  */\n#define FLASH_SECTOR_28            28U      /*!< Sector Number 28  */\n#define FLASH_SECTOR_29            29U      /*!< Sector Number 29  */\n#define FLASH_SECTOR_30            30U      /*!< Sector Number 30  */\n#define FLASH_SECTOR_31            31U      /*!< Sector Number 31  */\n#define FLASH_SECTOR_32            32U      /*!< Sector Number 32  */\n#define FLASH_SECTOR_33            33U      /*!< Sector Number 33  */\n#define FLASH_SECTOR_34            34U      /*!< Sector Number 34  */\n#define FLASH_SECTOR_35            35U      /*!< Sector Number 35  */\n#define FLASH_SECTOR_36            36U      /*!< Sector Number 36  */\n#define FLASH_SECTOR_37            37U      /*!< Sector Number 37  */\n#define FLASH_SECTOR_38            38U      /*!< Sector Number 38  */\n#define FLASH_SECTOR_39            39U      /*!< Sector Number 39  */\n#define FLASH_SECTOR_40            40U      /*!< Sector Number 40  */\n#define FLASH_SECTOR_41            41U      /*!< Sector Number 41  */\n#define FLASH_SECTOR_42            42U      /*!< Sector Number 42  */\n#define FLASH_SECTOR_43            43U      /*!< Sector Number 43  */\n#define FLASH_SECTOR_44            44U      /*!< Sector Number 44  */\n#define FLASH_SECTOR_45            45U      /*!< Sector Number 45  */\n#define FLASH_SECTOR_46            46U      /*!< Sector Number 46  */\n#define FLASH_SECTOR_47            47U      /*!< Sector Number 47  */\n#define FLASH_SECTOR_48            48U      /*!< Sector Number 48  */\n#define FLASH_SECTOR_49            49U      /*!< Sector Number 49  */\n#define FLASH_SECTOR_50            50U      /*!< Sector Number 50  */\n#define FLASH_SECTOR_51            51U      /*!< Sector Number 51  */\n#define FLASH_SECTOR_52            52U      /*!< Sector Number 52  */\n#define FLASH_SECTOR_53            53U      /*!< Sector Number 53  */\n#define FLASH_SECTOR_54            54U      /*!< Sector Number 54  */\n#define FLASH_SECTOR_55            55U      /*!< Sector Number 55  */\n#define FLASH_SECTOR_56            56U      /*!< Sector Number 56  */\n#define FLASH_SECTOR_57            57U      /*!< Sector Number 57  */\n#define FLASH_SECTOR_58            58U      /*!< Sector Number 58  */\n#define FLASH_SECTOR_59            59U      /*!< Sector Number 59  */\n#define FLASH_SECTOR_60            60U      /*!< Sector Number 60  */\n#define FLASH_SECTOR_61            61U      /*!< Sector Number 61  */\n#define FLASH_SECTOR_62            62U      /*!< Sector Number 62  */\n#define FLASH_SECTOR_63            63U      /*!< Sector Number 63  */\n#define FLASH_SECTOR_64            64U      /*!< Sector Number 64  */\n#define FLASH_SECTOR_65            65U      /*!< Sector Number 65  */\n#define FLASH_SECTOR_66            66U      /*!< Sector Number 66  */\n#define FLASH_SECTOR_67            67U      /*!< Sector Number 67  */\n#define FLASH_SECTOR_68            68U      /*!< Sector Number 68  */\n#define FLASH_SECTOR_69            69U      /*!< Sector Number 69  */\n#define FLASH_SECTOR_70            70U      /*!< Sector Number 70  */\n#define FLASH_SECTOR_71            71U      /*!< Sector Number 71  */\n#define FLASH_SECTOR_72            72U      /*!< Sector Number 72  */\n#define FLASH_SECTOR_73            73U      /*!< Sector Number 73  */\n#define FLASH_SECTOR_74            74U      /*!< Sector Number 74  */\n#define FLASH_SECTOR_75            75U      /*!< Sector Number 75  */\n#define FLASH_SECTOR_76            76U      /*!< Sector Number 76  */\n#define FLASH_SECTOR_77            77U      /*!< Sector Number 77  */\n#define FLASH_SECTOR_78            78U      /*!< Sector Number 78  */\n#define FLASH_SECTOR_79            79U      /*!< Sector Number 79  */\n#define FLASH_SECTOR_80            80U      /*!< Sector Number 80  */\n#define FLASH_SECTOR_81            81U      /*!< Sector Number 81  */\n#define FLASH_SECTOR_82            82U      /*!< Sector Number 82  */\n#define FLASH_SECTOR_83            83U      /*!< Sector Number 83  */\n#define FLASH_SECTOR_84            84U      /*!< Sector Number 84  */\n#define FLASH_SECTOR_85            85U      /*!< Sector Number 85  */\n#define FLASH_SECTOR_86            86U      /*!< Sector Number 86  */\n#define FLASH_SECTOR_87            87U      /*!< Sector Number 87  */\n#define FLASH_SECTOR_88            88U      /*!< Sector Number 88  */\n#define FLASH_SECTOR_89            89U      /*!< Sector Number 89  */\n#define FLASH_SECTOR_90            90U      /*!< Sector Number 90  */\n#define FLASH_SECTOR_91            91U      /*!< Sector Number 91  */\n#define FLASH_SECTOR_92            92U      /*!< Sector Number 92  */\n#define FLASH_SECTOR_93            93U      /*!< Sector Number 93  */\n#define FLASH_SECTOR_94            94U      /*!< Sector Number 94  */\n#define FLASH_SECTOR_95            95U      /*!< Sector Number 95  */\n#define FLASH_SECTOR_96            96U      /*!< Sector Number 96  */\n#define FLASH_SECTOR_97            97U      /*!< Sector Number 97  */\n#define FLASH_SECTOR_98            98U      /*!< Sector Number 98  */\n#define FLASH_SECTOR_99            99U      /*!< Sector Number 99  */\n#define FLASH_SECTOR_100           100U     /*!< Sector Number 100 */\n#define FLASH_SECTOR_101           101U     /*!< Sector Number 101 */\n#define FLASH_SECTOR_102           102U     /*!< Sector Number 102 */\n#define FLASH_SECTOR_103           103U     /*!< Sector Number 103 */\n#define FLASH_SECTOR_104           104U     /*!< Sector Number 104 */\n#define FLASH_SECTOR_105           105U     /*!< Sector Number 105 */\n#define FLASH_SECTOR_106           106U     /*!< Sector Number 106 */\n#define FLASH_SECTOR_107           107U     /*!< Sector Number 107 */\n#define FLASH_SECTOR_108           108U     /*!< Sector Number 108 */\n#define FLASH_SECTOR_109           109U     /*!< Sector Number 109 */\n#define FLASH_SECTOR_110           110U     /*!< Sector Number 110 */\n#define FLASH_SECTOR_111           111U     /*!< Sector Number 111 */\n#define FLASH_SECTOR_112           112U     /*!< Sector Number 112 */\n#define FLASH_SECTOR_113           113U     /*!< Sector Number 113 */\n#define FLASH_SECTOR_114           114U     /*!< Sector Number 114 */\n#define FLASH_SECTOR_115           115U     /*!< Sector Number 115 */\n#define FLASH_SECTOR_116           116U     /*!< Sector Number 116 */\n#define FLASH_SECTOR_117           117U     /*!< Sector Number 117 */\n#define FLASH_SECTOR_118           118U     /*!< Sector Number 118 */\n#define FLASH_SECTOR_119           119U     /*!< Sector Number 119 */\n#define FLASH_SECTOR_120           120U     /*!< Sector Number 120 */\n#define FLASH_SECTOR_121           121U     /*!< Sector Number 121 */\n#define FLASH_SECTOR_122           122U     /*!< Sector Number 122 */\n#define FLASH_SECTOR_123           123U     /*!< Sector Number 123 */\n#define FLASH_SECTOR_124           124U     /*!< Sector Number 124 */\n#define FLASH_SECTOR_125           125U     /*!< Sector Number 125 */\n#define FLASH_SECTOR_126           126U     /*!< Sector Number 126 */\n#define FLASH_SECTOR_127           127U     /*!< Sector Number 127 */\n#endif /* FLASH_SECTOR_TOTAL == 128 */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup FLASH_Exported_Macros FLASH Exported Macros\n  * @{\n  */\n/**\n  * @brief  Set the FLASH Latency.\n  * @param  __LATENCY__: FLASH Latency\n  *         The value of this parameter depend on device used within the same series\n  * @retval none\n  */\n#define __HAL_FLASH_SET_LATENCY(__LATENCY__) \\\n                  MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(__LATENCY__))\n\n/**\n  * @brief  Get the FLASH Latency.\n  * @retval FLASH Latency\n  *          The value of this parameter depend on device used within the same series\n  */\n#define __HAL_FLASH_GET_LATENCY()     (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))\n\n/**\n  * @brief  Enable the specified FLASH interrupt.\n  * @param  __INTERRUPT__ : FLASH interrupt\n  *   In case of Bank 1 This parameter can be any combination of the following values:\n  *     @arg FLASH_IT_EOP_BANK1       : End of FLASH Bank 1 Operation Interrupt source\n  *     @arg FLASH_IT_WRPERR_BANK1    : Write Protection Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_PGSERR_BANK1    : Program Sequence Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_STRBERR_BANK1   : Strobe Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_INCERR_BANK1    : Inconsistency Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_OPERR_BANK1     : Operation Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_RDPERR_BANK1    : Read protection Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_RDSERR_BANK1    : Read secure Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_SNECCERR_BANK1  : Single ECC Error Correction on Bank 1 Interrupt source\n  *     @arg FLASH_IT_DBECCERR_BANK1  : Double Detection ECC Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_CRCEND_BANK1    : CRC End on Bank 1 Interrupt source\n  *     @arg FLASH_IT_CRCRDERR_BANK1  : CRC Read error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_ALL_BANK1       : All Bank 1 Interrupt sources\n  *\n  *   In case of Bank 2, this parameter can be any combination of the following values:\n  *     @arg FLASH_IT_EOP_BANK2       : End of FLASH Bank 2 Operation Interrupt source\n  *     @arg FLASH_IT_WRPERR_BANK2    : Write Protection Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_PGSERR_BANK2    : Program Sequence Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_STRBERR_BANK2   : Strobe Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_INCERR_BANK2    : Inconsistency Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_OPERR_BANK2     : Operation Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_RDPERR_BANK2    : Read protection Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_RDSERR_BANK2    : Read secure Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_SNECCERR_BANK2  : Single ECC Error Correction on Bank 2 Interrupt source\n  *     @arg FLASH_IT_DBECCERR_BANK2  : Double Detection ECC Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_CRCEND_BANK2    : CRC End on Bank 2 Interrupt source\n  *     @arg FLASH_IT_CRCRDERR_BANK2  : CRC Read error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_ALL_BANK2       : All Bank 2 Interrupt sources\n  * @retval none\n  */\n\n#define __HAL_FLASH_ENABLE_IT_BANK1(__INTERRUPT__)      (FLASH->CR1 |= (__INTERRUPT__))\n\n#define __HAL_FLASH_ENABLE_IT_BANK2(__INTERRUPT__)      (FLASH->CR2 |= ((__INTERRUPT__) & 0x7FFFFFFFU))\n\n#if defined (DUAL_BANK)\n#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__)    (IS_FLASH_IT_BANK1(__INTERRUPT__) ? \\\n                                                 __HAL_FLASH_ENABLE_IT_BANK1(__INTERRUPT__) : \\\n                                                 __HAL_FLASH_ENABLE_IT_BANK2(__INTERRUPT__))\n#else\n#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__)    __HAL_FLASH_ENABLE_IT_BANK1(__INTERRUPT__)\n#endif /* DUAL_BANK */\n\n\n/**\n  * @brief  Disable the specified FLASH interrupt.\n  * @param  __INTERRUPT__ : FLASH interrupt\n  *   In case of Bank 1 This parameter can be any combination of the following values:\n  *     @arg FLASH_IT_EOP_BANK1       : End of FLASH Bank 1 Operation Interrupt source\n  *     @arg FLASH_IT_WRPERR_BANK1    : Write Protection Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_PGSERR_BANK1    : Program Sequence Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_STRBERR_BANK1   : Strobe Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_INCERR_BANK1    : Inconsistency Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_OPERR_BANK1     : Operation Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_RDPERR_BANK1    : Read protection Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_RDSERR_BANK1    : Read secure Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_SNECCERR_BANK1  : Single ECC Error Correction on Bank 1 Interrupt source\n  *     @arg FLASH_IT_DBECCERR_BANK1  : Double Detection ECC Error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_CRCEND_BANK1    : CRC End on Bank 1 Interrupt source\n  *     @arg FLASH_IT_CRCRDERR_BANK1  : CRC Read error on Bank 1 Interrupt source\n  *     @arg FLASH_IT_ALL_BANK1       : All Bank 1 Interrupt sources\n  *\n  *   In case of Bank 2, this parameter can be any combination of the following values:\n  *     @arg FLASH_IT_EOP_BANK2       : End of FLASH Bank 2 Operation Interrupt source\n  *     @arg FLASH_IT_WRPERR_BANK2    : Write Protection Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_PGSERR_BANK2    : Program Sequence Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_STRBERR_BANK2   : Strobe Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_INCERR_BANK2    : Inconsistency Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_OPERR_BANK2     : Operation Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_RDPERR_BANK2    : Read protection Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_RDSERR_BANK2    : Read secure Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_SNECCERR_BANK2  : Single ECC Error Correction on Bank 2 Interrupt source\n  *     @arg FLASH_IT_DBECCERR_BANK2  : Double Detection ECC Error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_CRCEND_BANK2    : CRC End on Bank 2 Interrupt source\n  *     @arg FLASH_IT_CRCRDERR_BANK2  : CRC Read error on Bank 2 Interrupt source\n  *     @arg FLASH_IT_ALL_BANK2       : All Bank 2 Interrupt sources\n  * @retval none\n  */\n\n#define __HAL_FLASH_DISABLE_IT_BANK1(__INTERRUPT__)  (FLASH->CR1 &= ~(uint32_t)(__INTERRUPT__))\n\n#define __HAL_FLASH_DISABLE_IT_BANK2(__INTERRUPT__)  (FLASH->CR2 &= ~(uint32_t)((__INTERRUPT__) & 0x7FFFFFFFU))\n\n#if defined (DUAL_BANK)\n#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__)  (IS_FLASH_IT_BANK1(__INTERRUPT__) ? \\\n                                                __HAL_FLASH_DISABLE_IT_BANK1(__INTERRUPT__) : \\\n                                                __HAL_FLASH_DISABLE_IT_BANK2(__INTERRUPT__))\n#else\n#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__)  __HAL_FLASH_DISABLE_IT_BANK1(__INTERRUPT__)\n#endif /* DUAL_BANK */\n\n\n/**\n  * @brief  Checks whether the specified FLASH flag is set or not.\n  * @param  __FLAG__: specifies the FLASH flag to check.\n  *   In case of Bank 1 This parameter can be one of the following values :\n  *     @arg FLASH_FLAG_BSY_BANK1      : FLASH Bank 1 Busy flag\n  *     @arg FLASH_FLAG_WBNE_BANK1     : Write Buffer Not Empty on Bank 1 flag\n  *     @arg FLASH_FLAG_QW_BANK1       : Wait Queue on Bank 1 flag\n  *     @arg FLASH_FLAG_CRC_BUSY_BANK1 : CRC module is working on Bank 1 flag\n  *     @arg FLASH_FLAG_EOP_BANK1      : End Of Program on Bank 1 flag\n  *     @arg FLASH_FLAG_WRPERR_BANK1   : Write Protection Error on Bank 1 flag\n  *     @arg FLASH_FLAG_PGSERR_BANK1   : Program Sequence Error on Bank 1 flag\n  *     @arg FLASH_FLAG_STRBER_BANK1   : Program Alignment Error on Bank 1 flag\n  *     @arg FLASH_FLAG_INCERR_BANK1   : Inconsistency Error on Bank 1 flag\n  *     @arg FLASH_FLAG_OPERR_BANK1    : Operation Error on Bank 1 flag\n  *     @arg FLASH_FLAG_RDPERR_BANK1   : Read Protection Error on Bank 1 flag\n  *     @arg FLASH_FLAG_RDSERR_BANK1   : Read secure  Error on Bank 1 flag\n  *     @arg FLASH_FLAG_SNECCE_BANK1   : Single ECC Error Correction on Bank 1 flag\n  *     @arg FLASH_FLAG_DBECCE_BANK1   : Double Detection ECC Error on Bank 1 flag\n  *     @arg FLASH_FLAG_CRCEND_BANK1   : CRC End on Bank 1 flag\n  *     @arg FLASH_FLAG_CRCRDERR_BANK1 : CRC Read error on Bank 1 flag\n  *\n  *   In case of Bank 2 This parameter can be one of the following values :\n  *     @arg FLASH_FLAG_BSY_BANK2      : FLASH Bank 2 Busy flag\n  *     @arg FLASH_FLAG_WBNE_BANK2     : Write Buffer Not Empty on Bank 2 flag\n  *     @arg FLASH_FLAG_QW_BANK2       : Wait Queue on Bank 2 flag\n  *     @arg FLASH_FLAG_CRC_BUSY_BANK2 : CRC module is working on Bank 2 flag\n  *     @arg FLASH_FLAG_EOP_BANK2      : End Of Program on Bank 2 flag\n  *     @arg FLASH_FLAG_WRPERR_BANK2   : Write Protection Error on Bank 2 flag\n  *     @arg FLASH_FLAG_PGSERR_BANK2   : Program Sequence Error on Bank 2 flag\n  *     @arg FLASH_FLAG_STRBER_BANK2   : Program Alignment Error on Bank 2 flag\n  *     @arg FLASH_FLAG_INCERR_BANK2   : Inconsistency Error on Bank 2 flag\n  *     @arg FLASH_FLAG_OPERR_BANK2    : Operation Error on Bank 2 flag\n  *     @arg FLASH_FLAG_RDPERR_BANK2   : Read Protection Error on Bank 2 flag\n  *     @arg FLASH_FLAG_RDSERR_BANK2   : Read secure  Error on Bank 2 flag\n  *     @arg FLASH_FLAG_SNECCE_BANK2   : Single ECC Error Correction on Bank 2 flag\n  *     @arg FLASH_FLAG_DBECCE_BANK2   : Double Detection ECC Error on Bank 2 flag\n  *     @arg FLASH_FLAG_CRCEND_BANK2   : CRC End on Bank 2 flag\n  *     @arg FLASH_FLAG_CRCRDERR_BANK2 : CRC Read error on Bank 2 flag\n  * @retval The new state of FLASH_FLAG (SET or RESET).\n  */\n#define __HAL_FLASH_GET_FLAG_BANK1(__FLAG__)     (READ_BIT(FLASH->SR1, (__FLAG__)) == (__FLAG__))\n\n#define __HAL_FLASH_GET_FLAG_BANK2(__FLAG__)     (READ_BIT(FLASH->SR2, ((__FLAG__) & 0x7FFFFFFFU)) == (((__FLAG__) & 0x7FFFFFFFU)))\n\n#if defined (DUAL_BANK)\n#define __HAL_FLASH_GET_FLAG(__FLAG__)           (IS_FLASH_FLAG_BANK1(__FLAG__) ?  __HAL_FLASH_GET_FLAG_BANK1(__FLAG__) : \\\n                                                  __HAL_FLASH_GET_FLAG_BANK2(__FLAG__))\n#else\n#define __HAL_FLASH_GET_FLAG(__FLAG__)           __HAL_FLASH_GET_FLAG_BANK1(__FLAG__)\n#endif /* DUAL_BANK */\n\n\n/**\n  * @brief  Clear the specified FLASH flag.\n  * @param  __FLAG__: specifies the FLASH flags to clear.\n  *    In case of Bank 1, this parameter can be any combination of the following values:\n  *     @arg FLASH_FLAG_EOP_BANK1        : End Of Program on Bank 1 flag\n  *     @arg FLASH_FLAG_WRPERR_BANK1     : Write Protection Error on Bank 1 flag\n  *     @arg FLASH_FLAG_PGSERR_BANK1     : Program Sequence Error on Bank 1 flag\n  *     @arg FLASH_FLAG_STRBER_BANK1     : Program Alignment Error on Bank 1 flag\n  *     @arg FLASH_FLAG_INCERR_BANK1     : Inconsistency Error on Bank 1 flag\n  *     @arg FLASH_FLAG_OPERR_BANK1      : Operation Error on Bank 1 flag\n  *     @arg FLASH_FLAG_RDPERR_BANK1     : Read Protection Error on Bank 1 flag\n  *     @arg FLASH_FLAG_RDSERR_BANK1     : Read secure  Error on Bank 1 flag\n  *     @arg FLASH_FLAG_SNECCE_BANK1     : Single ECC Error Correction on Bank 1 flag\n  *     @arg FLASH_FLAG_DBECCE_BANK1     : Double Detection ECC Error on Bank 1 flag\n  *     @arg FLASH_FLAG_CRCEND_BANK1     : CRC End on Bank 1 flag\n  *     @arg FLASH_FLAG_CRCRDERR_BANK1   : CRC Read error on Bank 1 flag\n  *     @arg FLASH_FLAG_ALL_ERRORS_BANK1 : All Bank 1 error flags\n  *     @arg FLASH_FLAG_ALL_BANK1        : All Bank 1 flags\n  *\n  *   In case of Bank 2, this parameter can be any combination of the following values :\n  *     @arg FLASH_FLAG_EOP_BANK2        : End Of Program on Bank 2 flag\n  *     @arg FLASH_FLAG_WRPERR_BANK2     : Write Protection Error on Bank 2 flag\n  *     @arg FLASH_FLAG_PGSERR_BANK2     : Program Sequence Error on Bank 2 flag\n  *     @arg FLASH_FLAG_STRBER_BANK2     : Program Alignment Error on Bank 2 flag\n  *     @arg FLASH_FLAG_INCERR_BANK2     : Inconsistency Error on Bank 2 flag\n  *     @arg FLASH_FLAG_OPERR_BANK2      : Operation Error on Bank 2 flag\n  *     @arg FLASH_FLAG_RDPERR_BANK2     : Read Protection Error on Bank 2 flag\n  *     @arg FLASH_FLAG_RDSERR_BANK2     : Read secure  Error on Bank 2 flag\n  *     @arg FLASH_FLAG_SNECCE_BANK2     : Single ECC Error Correction on Bank 2 flag\n  *     @arg FLASH_FLAG_DBECCE_BANK2     : Double Detection ECC Error on Bank 2 flag\n  *     @arg FLASH_FLAG_CRCEND_BANK2     : CRC End on Bank 2 flag\n  *     @arg FLASH_FLAG_CRCRDERR_BANK2   : CRC Read error on Bank 2 flag\n  *     @arg FLASH_FLAG_ALL_ERRORS_BANK2 : All Bank 2 error flags\n  *     @arg FLASH_FLAG_ALL_BANK2        : All Bank 2 flags\n  * @retval none\n  */\n\n#define __HAL_FLASH_CLEAR_FLAG_BANK1(__FLAG__)    WRITE_REG(FLASH->CCR1, (__FLAG__))\n\n#define __HAL_FLASH_CLEAR_FLAG_BANK2(__FLAG__)    WRITE_REG(FLASH->CCR2, ((__FLAG__) & 0x7FFFFFFFU))\n\n#if defined (DUAL_BANK)\n#define __HAL_FLASH_CLEAR_FLAG(__FLAG__)         (IS_FLASH_FLAG_BANK1(__FLAG__) ?  __HAL_FLASH_CLEAR_FLAG_BANK1(__FLAG__) : \\\n                                                  __HAL_FLASH_CLEAR_FLAG_BANK2(__FLAG__))\n#else\n#define __HAL_FLASH_CLEAR_FLAG(__FLAG__)         __HAL_FLASH_CLEAR_FLAG_BANK1(__FLAG__)\n#endif /* DUAL_BANK */\n\n/**\n  * @}\n  */\n\n/* Include FLASH HAL Extension module */\n#include \"stm32h7xx_hal_flash_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup FLASH_Exported_Functions\n  * @{\n  */\n/** @addtogroup FLASH_Exported_Functions_Group1\n  * @{\n  */\n/* Program operation functions  ***********************************************/\nHAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t FlashAddress, uint32_t DataAddress);\nHAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t FlashAddress, uint32_t DataAddress);\n/* FLASH IRQ handler method */\nvoid HAL_FLASH_IRQHandler(void);\n/* Callbacks in non blocking modes */\nvoid HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);\nvoid HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);\n/**\n  * @}\n  */\n\n/** @addtogroup FLASH_Exported_Functions_Group2\n  * @{\n  */\n/* Peripheral Control functions  **********************************************/\nHAL_StatusTypeDef HAL_FLASH_Unlock(void);\nHAL_StatusTypeDef HAL_FLASH_Lock(void);\nHAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);\nHAL_StatusTypeDef HAL_FLASH_OB_Lock(void);\n/* Option bytes control */\nHAL_StatusTypeDef HAL_FLASH_OB_Launch(void);\n/**\n  * @}\n  */\n\n/** @addtogroup FLASH_Exported_Functions_Group3\n  * @{\n  */\n/* Peripheral State functions  ************************************************/\nuint32_t HAL_FLASH_GetError(void);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/** @defgroup FLASH_Private_Variables FLASH Private Variables\n  * @{\n  */\nextern FLASH_ProcessTypeDef pFlash;\n/**\n  * @}\n  */\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup FLASH_Private_Constants FLASH Private Constants\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup FLASH_Private_Macros FLASH Private Macros\n  * @{\n  */\n\n#if defined (FLASH_OPTCR_PG_OTP)\n#define IS_FLASH_TYPEPROGRAM(VALUE)      (((VALUE) == FLASH_TYPEPROGRAM_FLASHWORD) || \\\n                                          ((VALUE) == FLASH_TYPEPROGRAM_OTPWORD))\n#else\n#define IS_FLASH_TYPEPROGRAM(VALUE)      ((VALUE) == FLASH_TYPEPROGRAM_FLASHWORD)\n#endif /* FLASH_OPTCR_PG_OTP */\n\n#define IS_FLASH_IT_BANK1(IT)            (((IT) & FLASH_IT_ALL_BANK1) == (IT))\n#if defined (DUAL_BANK)\n#define IS_FLASH_IT_BANK2(IT)            (((IT) & FLASH_IT_ALL_BANK2) == (IT))\n#endif /* DUAL_BANK */\n\n#define IS_FLASH_FLAG_BANK1(FLAG)        (((FLAG) & FLASH_FLAG_ALL_BANK1) == (FLAG))\n#if defined (DUAL_BANK)\n#define IS_FLASH_FLAG_BANK2(FLAG)        (((FLAG) & FLASH_FLAG_ALL_BANK2) == (FLAG))\n#endif /* DUAL_BANK */\n\n#if defined (DUAL_BANK)\n#define IS_FLASH_PROGRAM_ADDRESS_BANK1(ADDRESS) (((ADDRESS) >= FLASH_BANK1_BASE) && ((ADDRESS) < FLASH_BANK2_BASE))\n#define IS_FLASH_PROGRAM_ADDRESS_BANK2(ADDRESS) (((ADDRESS) >= FLASH_BANK2_BASE ) && ((ADDRESS) <= FLASH_END))\n#else\n#define IS_FLASH_PROGRAM_ADDRESS_BANK1(ADDRESS) (((ADDRESS) >= FLASH_BANK1_BASE) && ((ADDRESS) <= FLASH_END))\n#endif /* DUAL_BANK */\n\n#if defined (DUAL_BANK)\n#if defined (FLASH_OPTCR_PG_OTP)\n#define IS_FLASH_PROGRAM_ADDRESS_OTP(ADDRESS)   (((ADDRESS) >= 0x08FFF000U) && ((ADDRESS) <= 0x08FFF3FFU))\n#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS)       (IS_FLASH_PROGRAM_ADDRESS_BANK1(ADDRESS) || \\\n                                                 IS_FLASH_PROGRAM_ADDRESS_BANK2(ADDRESS) || \\\n                                                 IS_FLASH_PROGRAM_ADDRESS_OTP(ADDRESS))\n#else\n#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS)       (IS_FLASH_PROGRAM_ADDRESS_BANK1(ADDRESS) || \\\n                                                 IS_FLASH_PROGRAM_ADDRESS_BANK2(ADDRESS))\n#endif /* FLASH_OPTCR_PG_OTP */\n#else\n#if defined (FLASH_OPTCR_PG_OTP)\n#define IS_FLASH_PROGRAM_ADDRESS_OTP(ADDRESS)   (((ADDRESS) >= 0x08FFF000U) && ((ADDRESS) <= 0x08FFF3FFU))\n#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS)       (IS_FLASH_PROGRAM_ADDRESS_BANK1(ADDRESS) || \\\n                                                 IS_FLASH_PROGRAM_ADDRESS_OTP(ADDRESS))\n#else\n#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS)       (IS_FLASH_PROGRAM_ADDRESS_BANK1(ADDRESS))\n#endif /* FLASH_OPTCR_PG_OTP */\n#endif /* DUAL_BANK */\n\n#define IS_BOOT_ADDRESS(ADDRESS)         ((ADDRESS) <= (0x3FFF0000U))\n\n#if defined (DUAL_BANK)\n#define IS_FLASH_BANK(BANK)              (((BANK) == FLASH_BANK_1)  || \\\n                                          ((BANK) == FLASH_BANK_2)  || \\\n                                          ((BANK) == FLASH_BANK_BOTH))\n#define IS_FLASH_BANK_EXCLUSIVE(BANK)    (((BANK) == FLASH_BANK_1)  || \\\n                                          ((BANK) == FLASH_BANK_2))\n#else\n#define IS_FLASH_BANK(BANK)              ((BANK) == FLASH_BANK_1)\n#define IS_FLASH_BANK_EXCLUSIVE(BANK)    ((BANK) == FLASH_BANK_1)\n#endif /* DUAL_BANK */\n\n/**\n  * @}\n  */\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup FLASH_Private_Functions FLASH Private functions\n  * @{\n  */\nHAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout, uint32_t Bank);\nHAL_StatusTypeDef FLASH_OB_WaitForLastOperation(uint32_t Timeout);\nHAL_StatusTypeDef FLASH_CRC_WaitForLastOperation(uint32_t Timeout, uint32_t Bank);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_FLASH_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_flash_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of FLASH HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_FLASH_EX_H\n#define STM32H7xx_HAL_FLASH_EX_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup FLASHEx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup FLASHEx_Exported_Types FLASH Exported Types\n  * @{\n  */\n\n/**\n  * @brief  FLASH Erase structure definition\n  */\ntypedef struct\n{\n  uint32_t TypeErase;   /*!< Mass erase or sector Erase.\n                             This parameter can be a value of @ref FLASHEx_Type_Erase */\n\n  uint32_t Banks;       /*!< Select banks to erase when Mass erase is enabled.\n                             This parameter must be a value of @ref FLASHEx_Banks */\n\n  uint32_t Sector;      /*!< Initial FLASH sector to erase when Mass erase is disabled\n                             This parameter must be a value of @ref FLASH_Sectors */\n\n  uint32_t NbSectors;   /*!< Number of sectors to be erased.\n                             This parameter must be a value between 1 and (max number of sectors - value of Initial sector)*/\n\n  uint32_t VoltageRange;/*!< The device voltage range which defines the erase parallelism\n                             This parameter must be a value of @ref FLASHEx_Voltage_Range */\n\n} FLASH_EraseInitTypeDef;\n\n\n/**\n  * @brief  FLASH Option Bytes Program structure definition\n  */\ntypedef struct\n{\n  uint32_t OptionType;     /*!< Option byte to be configured.\n                                This parameter can be a value of @ref FLASHEx_Option_Type */\n\n  uint32_t WRPState;       /*!< Write protection activation or deactivation.\n                                This parameter can be a value of @ref FLASHEx_WRP_State */\n\n  uint32_t WRPSector;      /*!< Specifies the sector(s) to be write protected.\n                                The value of this parameter depend on device used within the same series */\n\n  uint32_t RDPLevel;       /*!< Set the read protection level.\n                                This parameter can be a value of @ref FLASHEx_Option_Bytes_Read_Protection */\n\n  uint32_t BORLevel;       /*!< Set the BOR Level.\n                                This parameter can be a value of @ref FLASHEx_BOR_Reset_Level */\n\n  uint32_t USERType;       /*!< User option byte(s) to be configured (used for OPTIONBYTE_USER).\n                                This parameter can be a combination of @ref FLASHEx_OB_USER_Type */\n\n  uint32_t USERConfig;     /*!< Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY /\n                                IWDG_FREEZE_STOP / IWDG_FREEZE_SANDBY / IO_HSLV / SWAP_BANK_OPT */\n\n  uint32_t Banks;          /*!< Select banks for WRP , PCROP and secure area config .\n                                This parameter must be a value of @ref FLASHEx_Banks */\n\n  uint32_t PCROPConfig;    /*!< specifies if the PCROP area shall be erased or not\n                                when RDP level decreased from Level 1 to Level 0 or during a mass erase.\n                                This parameter must be a value of @ref FLASHEx_OB_PCROP_RDP enumeration */\n\n  uint32_t PCROPStartAddr; /*!< PCROP Start address (used for OPTIONBYTE_PCROP).\n                                This parameter must be a value between begin and end of a bank */\n\n  uint32_t PCROPEndAddr;   /*!< PCROP End address (used for OPTIONBYTE_PCROP).\n                                This parameter must be a value between PCROP Start address and end of a bank */\n\n  uint32_t BootConfig;     /*!< Specifies if the Boot Address to be configured BOOT_ADD0, BOOT_ADD1\n                                or both. This parameter must be a value of @ref FLASHEx_OB_BOOT_OPTION enumeration */\n\n  uint32_t BootAddr0;      /*!< Boot Address 0.\n                                This parameter must be a value between begin and end of a bank */\n\n  uint32_t BootAddr1;      /*!< Boot Address 1.\n                                This parameter must be a value between begin and end of a bank */\n#if defined(DUAL_CORE)\n  uint32_t CM4BootConfig;  /*!< specifies if the CM4 boot Address to be configured BOOT_ADD0, BOOT_ADD1\n                                or both.\n                                This parameter must be a value of @ref FLASHEx_OB_BOOT_OPTION enumeration */\n\n  uint32_t CM4BootAddr0;   /*!< CM4 Boot Address 0.\n                                This parameter must be a value between begin and end of a bank */\n\n  uint32_t CM4BootAddr1;   /*!< CM4 Boot Address 1.\n                                This parameter must be a value between begin and end of a bank */\n#endif /*DUAL_CORE*/\n\n  uint32_t SecureAreaConfig;    /*!< specifies if the bank secured area shall be erased or not\n                                     when RDP level decreased from Level 1 to Level 0 or during a mass erase.\n                                     This parameter must be a value of @ref FLASHEx_OB_SECURE_RDP enumeration */\n\n  uint32_t SecureAreaStartAddr; /*!< Bank Secure area Start address.\n                                     This parameter must be a value between begin address and end address of bank1 */\n\n  uint32_t SecureAreaEndAddr;   /*!< Bank Secure area End address.\n                                     This parameter must be a value between Secure Area Start address and end address of a bank1 */\n\n#if defined (FLASH_OTPBL_LOCKBL)\n  uint32_t OTPBlockLock;   /*!< Specifies the OTP block(s) to be locked.\n                                This parameter must be a value of @ref FLASHEx_OTP_Blocks */\n#endif /* FLASH_OTPBL_LOCKBL */\n\n#if defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n  uint32_t SharedRamConfig; /*!< Specifies the configuration of TCM / AXI shared RAM.\n                                 This parameter must be a value of @ref FLASHEx_OB_TCM_AXI_SHARED */\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n\n#if defined (FLASH_OPTSR2_CPUFREQ_BOOST)\n  uint32_t FreqBoostState;  /*!< Specifies the state of CPU Frequency Boost.\n                                 This parameter must be a value of @ref FLASHEx_OB_CPUFREQ_BOOST */\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n\n} FLASH_OBProgramInitTypeDef;\n\n/**\n  * @brief  FLASH Erase structure definition\n  */\ntypedef struct\n{\n  uint32_t TypeCRC;      /*!< CRC Selection Type.\n                              This parameter can be a value of @ref FLASHEx_CRC_Selection_Type */\n\n  uint32_t BurstSize;    /*!< CRC Burst Size.\n                              This parameter can be a value of @ref FLASHEx_CRC_Burst_Size */\n\n  uint32_t Bank;         /*!< Select bank where CRC computation is enabled.\n                              This parameter must be FLASH_BANK_1 or FLASH_BANK_2 */\n\n  uint32_t Sector;       /*!< Initial FLASH sector from which starts the CRC computation\n                              This parameter must be a value of @ref FLASH_Sectors */\n\n  uint32_t NbSectors;    /*!< Number of sectors to be computed.\n                              This parameter must be a value between 1 and (max number of sectors - value of Initial sector)*/\n\n  uint32_t CRCStartAddr; /*!< CRC Start address.\n                              This parameter must be a value between begin address and end address of a bank */\n\n  uint32_t CRCEndAddr;   /*!< CRC End address.\n                              This parameter must be a value between CRC Start address and end address of a bank */\n\n} FLASH_CRCInitTypeDef;\n\n/**\n  * @}\n  */\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup FLASHEx_Exported_Constants FLASH Exported Constants\n  * @{\n  */\n\n/** @defgroup FLASHEx_Type_Erase FLASH Type Erase\n  * @{\n  */\n#define FLASH_TYPEERASE_SECTORS      0x00U  /*!< Sectors erase only          */\n#define FLASH_TYPEERASE_MASSERASE    0x01U  /*!< Flash Mass erase activation */\n/**\n  * @}\n  */\n\n#if defined (FLASH_CR_PSIZE)\n/** @defgroup FLASHEx_Voltage_Range FLASH Voltage Range\n  * @{\n  */\n#define FLASH_VOLTAGE_RANGE_1        0x00000000U       /*!< Flash program/erase by 8 bits  */\n#define FLASH_VOLTAGE_RANGE_2        FLASH_CR_PSIZE_0  /*!< Flash program/erase by 16 bits */\n#define FLASH_VOLTAGE_RANGE_3        FLASH_CR_PSIZE_1  /*!< Flash program/erase by 32 bits */\n#define FLASH_VOLTAGE_RANGE_4        FLASH_CR_PSIZE    /*!< Flash program/erase by 64 bits */\n/**\n  * @}\n  */\n#endif /* FLASH_CR_PSIZE */\n\n/** @defgroup FLASHEx_WRP_State FLASH WRP State\n  * @{\n  */\n#define OB_WRPSTATE_DISABLE          0x00000000U  /*!< Disable the write protection of the desired bank 1 sectors */\n#define OB_WRPSTATE_ENABLE           0x00000001U  /*!< Enable the write protection of the desired bank 1 sectors  */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Type FLASH Option Type\n  * @{\n  */\n#define OPTIONBYTE_WRP           0x01U  /*!< WRP option byte configuration  */\n#define OPTIONBYTE_RDP           0x02U  /*!< RDP option byte configuration  */\n#define OPTIONBYTE_USER          0x04U  /*!< USER option byte configuration */\n#define OPTIONBYTE_PCROP         0x08U  /*!< PCROP option byte configuration */\n#define OPTIONBYTE_BOR           0x10U  /*!< BOR option byte configuration */\n#define OPTIONBYTE_SECURE_AREA   0x20U  /*!< secure area option byte configuration */\n#if defined (DUAL_CORE)\n#define OPTIONBYTE_CM7_BOOTADD   0x40U  /*!< CM7 BOOT ADD option byte configuration */\n#define OPTIONBYTE_CM4_BOOTADD   0x80U  /*!< CM4 BOOT ADD option byte configuration */\n#define OPTIONBYTE_BOOTADD       OPTIONBYTE_CM7_BOOTADD  /*!< BOOT ADD option byte configuration */\n#else /* Single core */\n#define OPTIONBYTE_BOOTADD       0x40U  /*!< BOOT ADD option byte configuration */\n#endif /*DUAL_CORE*/\n#if defined (FLASH_OTPBL_LOCKBL)\n#define OPTIONBYTE_OTP_LOCK      0x80U  /*!< OTP Lock option byte configuration */\n#endif /* FLASH_OTPBL_LOCKBL */\n#if defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n#define OPTIONBYTE_SHARED_RAM    0x100U /*!< TCM / AXI Shared RAM option byte configuration */\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n#if defined (FLASH_OPTSR2_CPUFREQ_BOOST)\n#define OPTIONBYTE_FREQ_BOOST    0x200U /*!< CPU Frequency Boost option byte configuration */\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n\n#if defined (DUAL_CORE)\n#define OPTIONBYTE_ALL           (OPTIONBYTE_WRP         | OPTIONBYTE_RDP        | OPTIONBYTE_USER        |\\\n                                  OPTIONBYTE_PCROP       | OPTIONBYTE_BOR        | OPTIONBYTE_SECURE_AREA |\\\n                                  OPTIONBYTE_CM7_BOOTADD | OPTIONBYTE_CM4_BOOTADD) /*!< All option byte configuration */\n#elif defined (FLASH_OTPBL_LOCKBL)\n#define OPTIONBYTE_ALL           (OPTIONBYTE_WRP         | OPTIONBYTE_RDP        | OPTIONBYTE_USER        |\\\n                                  OPTIONBYTE_PCROP       | OPTIONBYTE_BOR        | OPTIONBYTE_SECURE_AREA |\\\n                                  OPTIONBYTE_BOOTADD     | OPTIONBYTE_OTP_LOCK)    /*!< All option byte configuration */\n#elif defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n#define OPTIONBYTE_ALL           (OPTIONBYTE_WRP         | OPTIONBYTE_RDP        | OPTIONBYTE_USER        |\\\n                                  OPTIONBYTE_PCROP       | OPTIONBYTE_BOR        | OPTIONBYTE_SECURE_AREA |\\\n                                  OPTIONBYTE_BOOTADD     | OPTIONBYTE_SHARED_RAM | OPTIONBYTE_FREQ_BOOST) /*!< All option byte configuration */\n#else\n#define OPTIONBYTE_ALL           (OPTIONBYTE_WRP         | OPTIONBYTE_RDP        | OPTIONBYTE_USER        |\\\n                                  OPTIONBYTE_PCROP       | OPTIONBYTE_BOR        | OPTIONBYTE_SECURE_AREA |\\\n                                  OPTIONBYTE_BOOTADD)                              /*!< All option byte configuration */\n#endif /* DUAL_CORE */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Bytes_Read_Protection FLASH Option Bytes Read Protection\n  * @{\n  */\n#define OB_RDP_LEVEL_0       0xAA00U\n#define OB_RDP_LEVEL_1       0x5500U\n#define OB_RDP_LEVEL_2       0xCC00U   /*!< Warning: When enabling read protection level 2\n                                            it s no more possible to go back to level 1 or 0 */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Bytes_IWatchdog FLASH Option Bytes IWatchdog\n  * @{\n  */\n#define OB_IWDG_SW           OB_IWDG1_SW  /*!< Software IWDG selected */\n#define OB_IWDG_HW           OB_IWDG1_HW  /*!< Hardware IWDG selected */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Bytes_nRST_STOP FLASH Option Bytes nRST_STOP\n  * @{\n  */\n#define OB_STOP_NO_RST       0x40U /*!< No reset generated when entering in STOP */\n#define OB_STOP_RST          0x00U /*!< Reset generated when entering in STOP    */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Bytes_nRST_STDBY FLASH Option Bytes nRST_STDBY\n  * @{\n  */\n#define OB_STDBY_NO_RST      0x80U /*!< No reset generated when entering in STANDBY */\n#define OB_STDBY_RST         0x00U /*!< Reset generated when entering in STANDBY    */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_STOP FLASH IWDG Counter Freeze in STOP\n  * @{\n  */\n#define OB_IWDG_STOP_FREEZE  0x00000000U /*!< Freeze IWDG counter in STOP mode */\n#define OB_IWDG_STOP_ACTIVE  FLASH_OPTSR_FZ_IWDG_STOP /*!< IWDG counter active in STOP mode */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_SANDBY FLASH IWDG Counter Freeze in STANDBY\n  * @{\n  */\n#define OB_IWDG_STDBY_FREEZE 0x00000000U /*!< Freeze IWDG counter in STANDBY mode */\n#define OB_IWDG_STDBY_ACTIVE FLASH_OPTSR_FZ_IWDG_SDBY  /*!< IWDG counter active in STANDBY mode */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_BOR_Reset_Level FLASH BOR Reset Level\n  * @{\n  */\n#define OB_BOR_LEVEL0        0x00000000U                /*!< Reset level threshold is set to 1.6V */\n#define OB_BOR_LEVEL1        FLASH_OPTSR_BOR_LEV_0      /*!< Reset level threshold is set to 2.1V */\n#define OB_BOR_LEVEL2        FLASH_OPTSR_BOR_LEV_1      /*!< Reset level threshold is set to 2.4V */\n#define OB_BOR_LEVEL3        (FLASH_OPTSR_BOR_LEV_1 | FLASH_OPTSR_BOR_LEV_0) /*!< Reset level threshold is set to 2.7V  */\n/**\n  * @}\n  */\n\n\n\n/** @defgroup FLASHEx_Boot_Address FLASH Boot Address\n  * @{\n  */\n#define OB_BOOTADDR_ITCM_RAM     0x0000U  /*!< Boot from ITCM RAM (0x00000000)                 */\n#define OB_BOOTADDR_SYSTEM       0x0040U  /*!< Boot from System memory bootloader (0x00100000) */\n#define OB_BOOTADDR_ITCM_FLASH   0x0080U  /*!< Boot from Flash on ITCM interface (0x00200000)  */\n#define OB_BOOTADDR_AXIM_FLASH   0x2000U  /*!< Boot from Flash on AXIM interface (0x08000000)  */\n#define OB_BOOTADDR_DTCM_RAM     0x8000U  /*!< Boot from DTCM RAM (0x20000000)                 */\n#define OB_BOOTADDR_SRAM1        0x8004U  /*!< Boot from SRAM1 (0x20010000)                    */\n#define OB_BOOTADDR_SRAM2        0x8013U  /*!< Boot from SRAM2 (0x2004C000)                    */\n/**\n  * @}\n  */\n\n/** @defgroup FLASH_Latency FLASH Latency\n  * @{\n  */\n#define FLASH_LATENCY_0          FLASH_ACR_LATENCY_0WS   /*!< FLASH Zero Latency cycle      */\n#define FLASH_LATENCY_1          FLASH_ACR_LATENCY_1WS   /*!< FLASH One Latency cycle       */\n#define FLASH_LATENCY_2          FLASH_ACR_LATENCY_2WS   /*!< FLASH Two Latency cycles      */\n#define FLASH_LATENCY_3          FLASH_ACR_LATENCY_3WS   /*!< FLASH Three Latency cycles    */\n#define FLASH_LATENCY_4          FLASH_ACR_LATENCY_4WS   /*!< FLASH Four Latency cycles     */\n#define FLASH_LATENCY_5          FLASH_ACR_LATENCY_5WS   /*!< FLASH Five Latency cycles     */\n#define FLASH_LATENCY_6          FLASH_ACR_LATENCY_6WS   /*!< FLASH Six Latency cycles      */\n#define FLASH_LATENCY_7          FLASH_ACR_LATENCY_7WS   /*!< FLASH Seven Latency cycles    */\n\n/* Unused FLASH Latency defines */\n#define FLASH_LATENCY_8          FLASH_ACR_LATENCY_8WS   /*!< FLASH Eight Latency cycle     */\n#define FLASH_LATENCY_9          FLASH_ACR_LATENCY_9WS   /*!< FLASH Nine Latency cycle      */\n#define FLASH_LATENCY_10         FLASH_ACR_LATENCY_10WS  /*!< FLASH Ten Latency cycles      */\n#define FLASH_LATENCY_11         FLASH_ACR_LATENCY_11WS  /*!< FLASH Eleven Latency cycles   */\n#define FLASH_LATENCY_12         FLASH_ACR_LATENCY_12WS  /*!< FLASH Twelve Latency cycles   */\n#define FLASH_LATENCY_13         FLASH_ACR_LATENCY_13WS  /*!< FLASH Thirteen Latency cycles */\n#define FLASH_LATENCY_14         FLASH_ACR_LATENCY_14WS  /*!< FLASH Fourteen Latency cycles */\n#define FLASH_LATENCY_15         FLASH_ACR_LATENCY_15WS  /*!< FLASH Fifteen Latency cycles  */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Banks FLASH Banks\n  * @{\n  */\n#define FLASH_BANK_1             0x01U                         /*!< Bank 1   */\n#if defined (DUAL_BANK)\n#define FLASH_BANK_2             0x02U                         /*!< Bank 2   */\n#define FLASH_BANK_BOTH          (FLASH_BANK_1 | FLASH_BANK_2) /*!< Bank1 and Bank2 */\n#endif /* DUAL_BANK */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_PCROP_RDP  FLASHEx OB PCROP RDP\n  * @{\n  */\n#define OB_PCROP_RDP_NOT_ERASE   0x00000000U     /*!< PCROP area is not erased when the RDP level\n                                                      is decreased from Level 1 to Level 0 or during a mass erase */\n#define OB_PCROP_RDP_ERASE       FLASH_PRAR_DMEP /*!< PCROP area is erased when the RDP level is\n                                                      decreased from Level 1 to Level 0 (full mass erase) */\n\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection\n  * @{\n  */\n#if (FLASH_SECTOR_TOTAL == 128)\n#define OB_WRP_SECTOR_0TO3       0x00000001U /*!< Write protection of Sector0  to Sector3    */\n#define OB_WRP_SECTOR_4TO7       0x00000002U /*!< Write protection of Sector4  to Sector7    */\n#define OB_WRP_SECTOR_8TO11      0x00000004U /*!< Write protection of Sector8  to Sector11   */\n#define OB_WRP_SECTOR_12TO15     0x00000008U /*!< Write protection of Sector12 to Sector15   */\n#define OB_WRP_SECTOR_16TO19     0x00000010U /*!< Write protection of Sector16 to Sector19   */\n#define OB_WRP_SECTOR_20TO23     0x00000020U /*!< Write protection of Sector20 to Sector23   */\n#define OB_WRP_SECTOR_24TO27     0x00000040U /*!< Write protection of Sector24 to Sector27   */\n#define OB_WRP_SECTOR_28TO31     0x00000080U /*!< Write protection of Sector28 to Sector31   */\n#define OB_WRP_SECTOR_32TO35     0x00000100U /*!< Write protection of Sector32 to Sector35   */\n#define OB_WRP_SECTOR_36TO39     0x00000200U /*!< Write protection of Sector36 to Sector39   */\n#define OB_WRP_SECTOR_40TO43     0x00000400U /*!< Write protection of Sector40 to Sector43   */\n#define OB_WRP_SECTOR_44TO47     0x00000800U /*!< Write protection of Sector44 to Sector47   */\n#define OB_WRP_SECTOR_48TO51     0x00001000U /*!< Write protection of Sector48 to Sector51   */\n#define OB_WRP_SECTOR_52TO55     0x00002000U /*!< Write protection of Sector52 to Sector55   */\n#define OB_WRP_SECTOR_56TO59     0x00004000U /*!< Write protection of Sector56 to Sector59   */\n#define OB_WRP_SECTOR_60TO63     0x00008000U /*!< Write protection of Sector60 to Sector63   */\n#define OB_WRP_SECTOR_64TO67     0x00010000U /*!< Write protection of Sector64 to Sector67   */\n#define OB_WRP_SECTOR_68TO71     0x00020000U /*!< Write protection of Sector68 to Sector71   */\n#define OB_WRP_SECTOR_72TO75     0x00040000U /*!< Write protection of Sector72 to Sector75   */\n#define OB_WRP_SECTOR_76TO79     0x00080000U /*!< Write protection of Sector76 to Sector79   */\n#define OB_WRP_SECTOR_80TO83     0x00100000U /*!< Write protection of Sector80 to Sector83   */\n#define OB_WRP_SECTOR_84TO87     0x00200000U /*!< Write protection of Sector84 to Sector87   */\n#define OB_WRP_SECTOR_88TO91     0x00400000U /*!< Write protection of Sector88 to Sector91   */\n#define OB_WRP_SECTOR_92TO95     0x00800000U /*!< Write protection of Sector92 to Sector95   */\n#define OB_WRP_SECTOR_96TO99     0x01000000U /*!< Write protection of Sector96  to Sector99  */\n#define OB_WRP_SECTOR_100TO103   0x02000000U /*!< Write protection of Sector100 to Sector103 */\n#define OB_WRP_SECTOR_104TO107   0x04000000U /*!< Write protection of Sector104 to Sector107 */\n#define OB_WRP_SECTOR_108TO111   0x08000000U /*!< Write protection of Sector108 to Sector111 */\n#define OB_WRP_SECTOR_112TO115   0x10000000U /*!< Write protection of Sector112 to Sector115 */\n#define OB_WRP_SECTOR_116TO119   0x20000000U /*!< Write protection of Sector116 to Sector119 */\n#define OB_WRP_SECTOR_120TO123   0x40000000U /*!< Write protection of Sector120 to Sector123 */\n#define OB_WRP_SECTOR_124TO127   0x80000000U /*!< Write protection of Sector124 to Sector127 */\n#define OB_WRP_SECTOR_ALL        0xFFFFFFFFU /*!< Write protection of all Sectors            */\n#else\n#define OB_WRP_SECTOR_0          0x00000001U /*!< Write protection of Sector0                */\n#define OB_WRP_SECTOR_1          0x00000002U /*!< Write protection of Sector1                */\n#define OB_WRP_SECTOR_2          0x00000004U /*!< Write protection of Sector2                */\n#define OB_WRP_SECTOR_3          0x00000008U /*!< Write protection of Sector3                */\n#define OB_WRP_SECTOR_4          0x00000010U /*!< Write protection of Sector4                */\n#define OB_WRP_SECTOR_5          0x00000020U /*!< Write protection of Sector5                */\n#define OB_WRP_SECTOR_6          0x00000040U /*!< Write protection of Sector6                */\n#define OB_WRP_SECTOR_7          0x00000080U /*!< Write protection of Sector7                */\n#define OB_WRP_SECTOR_ALL        0x000000FFU /*!< Write protection of all Sectors            */\n#endif /* FLASH_SECTOR_TOTAL == 128 */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_SECURITY  FLASHEx OB SECURITY\n  * @{\n  */\n#define OB_SECURITY_DISABLE   0x00000000U             /*!< security enabled */\n#define OB_SECURITY_ENABLE    FLASH_OPTSR_SECURITY    /*!< security disabled */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_ST_RAM_SIZE  FLASHEx OB ST RAM SIZE\n  * @{\n  */\n#define OB_ST_RAM_SIZE_2KB    0x00000000U               /*!< 2 Kbytes reserved to ST code */\n#define OB_ST_RAM_SIZE_4KB    FLASH_OPTSR_ST_RAM_SIZE_0 /*!< 4 Kbytes reserved to ST code */\n#define OB_ST_RAM_SIZE_8KB    FLASH_OPTSR_ST_RAM_SIZE_1 /*!< 8 Kbytes reserved to ST code */\n#define OB_ST_RAM_SIZE_16KB   FLASH_OPTSR_ST_RAM_SIZE   /*!< 16 Kbytes reserved to ST code */\n/**\n  * @}\n  */\n\n#if defined(DUAL_CORE)\n/** @defgroup FLASHEx_OB_BCM7  FLASHEx OB BCM7\n  * @{\n  */\n#define OB_BCM7_DISABLE       0x00000000U              /*!< CM7 Boot disabled */\n#define OB_BCM7_ENABLE        FLASH_OPTSR_BCM7         /*!< CM7 Boot enabled */\n\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_BCM4  FLASHEx OB BCM4\n  * @{\n  */\n#define OB_BCM4_DISABLE       0x00000000U              /*!< CM4 Boot disabled */\n#define OB_BCM4_ENABLE        FLASH_OPTSR_BCM4         /*!< CM4 Boot enabled */\n/**\n  * @}\n  */\n#endif /* DUAL_CORE */\n\n/** @defgroup FLASHEx_OB_IWDG1_SW  FLASHEx OB IWDG1 SW\n  * @{\n  */\n#define OB_IWDG1_SW            FLASH_OPTSR_IWDG1_SW /*!< Hardware independent watchdog 1 */\n#define OB_IWDG1_HW            0x00000000U          /*!< Software independent watchdog 1 */\n/**\n  * @}\n  */\n\n#if defined(DUAL_CORE)\n/** @defgroup FLASHEx_OB_IWDG2_SW  FLASHEx OB IWDG2 SW\n  * @{\n  */\n#define OB_IWDG2_SW            FLASH_OPTSR_IWDG2_SW  /*!< Hardware independent watchdog 2*/\n#define OB_IWDG2_HW            0x00000000U           /*!< Software independent watchdog 2*/\n/**\n  * @}\n  */\n#endif\n\n/** @defgroup FLASHEx_OB_NRST_STOP_D1  FLASHEx OB NRST STOP D1\n  * @{\n  */\n#define OB_STOP_RST_D1         0x00000000U              /*!< Reset generated when entering the D1 to stop mode */\n#define OB_STOP_NO_RST_D1      FLASH_OPTSR_NRST_STOP_D1 /*!< No reset generated when entering the D1 to stop mode */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_NRST_STDBY_D1  FLASHEx OB NRST STDBY D1\n  * @{\n  */\n#define OB_STDBY_RST_D1        0x00000000U              /*!< Reset generated when entering the D1 to standby mode */\n#define OB_STDBY_NO_RST_D1     FLASH_OPTSR_NRST_STBY_D1 /*!< No reset generated when entering the D1 to standby mode */\n/**\n  * @}\n  */\n\n#if defined (FLASH_OPTSR_NRST_STOP_D2)\n/** @defgroup FLASHEx_OB_NRST_STOP_D2  FLASHEx OB NRST STOP D2\n  * @{\n  */\n#define OB_STOP_RST_D2         0x00000000U              /*!< Reset generated when entering the D2 to stop mode */\n#define OB_STOP_NO_RST_D2      FLASH_OPTSR_NRST_STOP_D2 /*!< No reset generated when entering the D2 to stop mode */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_NRST_STDBY_D2  FLASHEx OB NRST STDBY D2\n  * @{\n  */\n#define OB_STDBY_RST_D2        0x00000000U              /*!< Reset generated when entering the D2 to standby mode */\n#define OB_STDBY_NO_RST_D2     FLASH_OPTSR_NRST_STBY_D2 /*!< No reset generated when entering the D2 to standby mode */\n/**\n  * @}\n  */\n#endif /* FLASH_OPTSR_NRST_STOP_D2 */\n\n#if defined (DUAL_BANK)\n/** @defgroup FLASHEx_OB_SWAP_BANK  FLASHEx OB SWAP BANK\n  * @{\n  */\n#define OB_SWAP_BANK_DISABLE   0x00000000U               /*!< Bank swap disabled */\n#define OB_SWAP_BANK_ENABLE    FLASH_OPTSR_SWAP_BANK_OPT /*!< Bank swap enabled */\n/**\n  * @}\n  */\n#endif /* DUAL_BANK */\n\n/** @defgroup FLASHEx_OB_IOHSLV FLASHEx OB IOHSLV\n  * @{\n  */\n#define OB_IOHSLV_DISABLE      0x00000000U         /*!< IOHSLV disabled */\n#define OB_IOHSLV_ENABLE       FLASH_OPTSR_IO_HSLV /*!< IOHSLV enabled */\n/**\n  * @}\n  */\n\n#if defined (FLASH_OPTSR_VDDMMC_HSLV)\n/** @defgroup FLASHEx_OB_VDDMMC_HSLV FLASHEx OB VDDMMC HSLV\n  * @{\n  */\n#define OB_VDDMMC_HSLV_DISABLE 0x00000000U             /*!< VDDMMC HSLV disabled */\n#define OB_VDDMMC_HSLV_ENABLE  FLASH_OPTSR_VDDMMC_HSLV /*!< VDDMMC HSLV enabled */\n/**\n  * @}\n  */\n#endif /* FLASH_OPTSR_VDDMMC_HSLV */\n\n#if defined (FLASH_OPTSR2_CPUFREQ_BOOST)\n/** @defgroup FLASHEx_OB_CPUFREQ_BOOST FLASHEx OB CPUFREQ BOOST\n  * @{\n  */\n#define OB_CPUFREQ_BOOST_DISABLE     0x00000000U                /*!< CPUFREQ BOOST disabled */\n#define OB_CPUFREQ_BOOST_ENABLE      FLASH_OPTSR2_CPUFREQ_BOOST /*!< CPUFREQ BOOST enabled */\n/**\n  * @}\n  */\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n\n#if defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n/** @defgroup FLASHEx_OB_TCM_AXI_SHARED  FLASHEx OB TCM AXI SHARED\n  * @{\n  */\n#define OB_TCM_AXI_SHARED_ITCM64KB   0x00000000U                   /*!< 64KB ITCM / 320KB system AXI  */\n#define OB_TCM_AXI_SHARED_ITCM128KB  FLASH_OPTSR2_TCM_AXI_SHARED_0 /*!< 128KB ITCM / 256KB system AXI */\n#define OB_TCM_AXI_SHARED_ITCM192KB  FLASH_OPTSR2_TCM_AXI_SHARED_1 /*!< 192KB ITCM / 192KB system AXI */\n#define OB_TCM_AXI_SHARED_ITCM256KB  FLASH_OPTSR2_TCM_AXI_SHARED   /*!< 256KB ITCM / 128KB system AXI */\n/**\n  * @}\n  */\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n\n /** @defgroup FLASHEx_OB_USER_Type  FLASHEx OB USER Type\n  * @{\n  */\n#define OB_USER_IWDG1_SW          0x0001U /*!< Independent watchdog selection */\n#define OB_USER_NRST_STOP_D1      0x0002U /*!< Reset when entering Stop mode selection*/\n#define OB_USER_NRST_STDBY_D1     0x0004U /*!< Reset when entering standby mode selection*/\n#define OB_USER_IWDG_STOP         0x0008U /*!< Independent watchdog counter freeze in stop mode */\n#define OB_USER_IWDG_STDBY        0x0010U /*!< Independent watchdog counter freeze in standby mode */\n#define OB_USER_ST_RAM_SIZE       0x0020U /*!< dedicated DTCM Ram size selection */\n#define OB_USER_SECURITY          0x0040U /*!< security selection */\n#define OB_USER_IOHSLV            0x0080U /*!< IO HSLV selection */\n#if defined (DUAL_BANK)\n#define OB_USER_SWAP_BANK         0x0100U /*!< Bank swap selection */\n#endif /* DUAL_BANK */\n#if defined (FLASH_OPTSR_VDDMMC_HSLV)\n#define OB_USER_VDDMMC_HSLV       0x0200U /*!< VDDMMC HSLV selection */\n#endif /* FLASH_OPTSR_VDDMMC_HSLV */\n#if defined (DUAL_CORE)\n#define OB_USER_IWDG2_SW          0x0200U /*!< Window watchdog selection */\n#define OB_USER_BCM4              0x0400U /*!< CM4 boot selection */\n#define OB_USER_BCM7              0x0800U /*!< CM7 boot selection */\n#endif /*DUAL_CORE*/\n#if defined (FLASH_OPTSR_NRST_STOP_D2)\n#define OB_USER_NRST_STOP_D2      0x1000U /*!< Reset when entering Stop mode selection */\n#define OB_USER_NRST_STDBY_D2     0x2000U /*!< Reset when entering standby mode selection */\n#endif /* FLASH_OPTSR_NRST_STOP_D2 */\n\n#if defined (DUAL_CORE)\n#define OB_USER_ALL (OB_USER_IWDG1_SW     | OB_USER_NRST_STOP_D1 | OB_USER_NRST_STDBY_D1 |\\\n                     OB_USER_IWDG_STOP    | OB_USER_IWDG_STDBY   | OB_USER_ST_RAM_SIZE   |\\\n                     OB_USER_SECURITY     | OB_USER_IOHSLV       | OB_USER_SWAP_BANK     |\\\n                     OB_USER_IWDG2_SW     | OB_USER_BCM4         | OB_USER_BCM7          |\\\n                     OB_USER_NRST_STOP_D2 | OB_USER_NRST_STDBY_D2)\n#elif defined (FLASH_OPTSR_VDDMMC_HSLV)\n#if defined (DUAL_BANK)\n#define OB_USER_ALL (OB_USER_IWDG1_SW     | OB_USER_NRST_STOP_D1 | OB_USER_NRST_STDBY_D1 |\\\n                     OB_USER_IWDG_STOP    | OB_USER_IWDG_STDBY   | OB_USER_ST_RAM_SIZE   |\\\n                     OB_USER_SECURITY     | OB_USER_IOHSLV       | OB_USER_SWAP_BANK     |\\\n                     OB_USER_VDDMMC_HSLV)\n#else\n#define OB_USER_ALL (OB_USER_IWDG1_SW     | OB_USER_NRST_STOP_D1 | OB_USER_NRST_STDBY_D1 |\\\n                     OB_USER_IWDG_STOP    | OB_USER_IWDG_STDBY   | OB_USER_ST_RAM_SIZE   |\\\n                     OB_USER_SECURITY     | OB_USER_IOHSLV                               |\\\n                     OB_USER_VDDMMC_HSLV)\n#endif /* DUAL_BANK */\n#elif defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n#define OB_USER_ALL (OB_USER_IWDG1_SW     | OB_USER_NRST_STOP_D1 | OB_USER_NRST_STDBY_D1 |\\\n                     OB_USER_IWDG_STOP    | OB_USER_IWDG_STDBY   | OB_USER_ST_RAM_SIZE   |\\\n                     OB_USER_SECURITY     | OB_USER_IOHSLV                               |\\\n                     OB_USER_NRST_STOP_D2 | OB_USER_NRST_STDBY_D2)\n#else /* Single core */\n#if defined (DUAL_BANK)\n#define OB_USER_ALL (OB_USER_IWDG1_SW     | OB_USER_NRST_STOP_D1 | OB_USER_NRST_STDBY_D1 |\\\n                     OB_USER_IWDG_STOP    | OB_USER_IWDG_STDBY   | OB_USER_ST_RAM_SIZE   |\\\n                     OB_USER_SECURITY     | OB_USER_IOHSLV       | OB_USER_SWAP_BANK     )\n#else\n#define OB_USER_ALL (OB_USER_IWDG1_SW     | OB_USER_NRST_STOP_D1 | OB_USER_NRST_STDBY_D1 |\\\n                     OB_USER_IWDG_STOP    | OB_USER_IWDG_STDBY   | OB_USER_ST_RAM_SIZE   |\\\n                     OB_USER_SECURITY     | OB_USER_IOHSLV                               )\n#endif /* DUAL_BANK */\n#endif /* DUAL_CORE */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_BOOT_OPTION  FLASHEx OB BOOT OPTION\n  * @{\n  */\n#define OB_BOOT_ADD0           0x01U       /*!< Select Boot Address 0 */\n#define OB_BOOT_ADD1           0x02U       /*!< Select Boot Address 1 */\n#define OB_BOOT_ADD_BOTH       0x03U       /*!< Select Boot Address 0 and 1 */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_OB_SECURE_RDP  FLASHEx OB SECURE RDP\n  * @{\n  */\n#define OB_SECURE_RDP_NOT_ERASE   0x00000000U     /*!< Secure area is not erased when the RDP level\n                                                       is decreased from Level 1 to Level 0 or during a mass erase */\n#define OB_SECURE_RDP_ERASE       FLASH_SCAR_DMES /*!< Secure area is erased when the RDP level is\n                                                       decreased from Level 1 to Level 0 (full mass erase) */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_CRC_Selection_Type FLASH CRC Selection Type\n  * @{\n  */\n#define FLASH_CRC_ADDR         0x00000000U              /*!< CRC selection type by address  */\n#define FLASH_CRC_SECTORS      FLASH_CRCCR_CRC_BY_SECT  /*!< CRC selection type by sectors  */\n#define FLASH_CRC_BANK         (FLASH_CRCCR_ALL_BANK | FLASH_CRCCR_CRC_BY_SECT) /*!< CRC selection type by bank */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_CRC_Burst_Size FLASH CRC Burst Size\n  * @{\n  */\n#define FLASH_CRC_BURST_SIZE_4    0x00000000U              /*!< Every burst has a size of 4 Flash words (256-bit)  */\n#define FLASH_CRC_BURST_SIZE_16   FLASH_CRCCR_CRC_BURST_0  /*!< Every burst has a size of 16 Flash words (256-bit)   */\n#define FLASH_CRC_BURST_SIZE_64   FLASH_CRCCR_CRC_BURST_1  /*!< Every burst has a size of 64 Flash words (256-bit)   */\n#define FLASH_CRC_BURST_SIZE_256  FLASH_CRCCR_CRC_BURST    /*!< Every burst has a size of 256 Flash words (256-bit) */\n/**\n  * @}\n  */\n\n/** @defgroup FLASHEx_Programming_Delay FLASH Programming Delay\n  * @{\n  */\n#define FLASH_PROGRAMMING_DELAY_0   0x00000000U            /*!< programming delay set for Flash running at 70 MHz or below          */\n#define FLASH_PROGRAMMING_DELAY_1   FLASH_ACR_WRHIGHFREQ_0 /*!< programming delay set for Flash running between 70 MHz and 185 MHz  */\n#define FLASH_PROGRAMMING_DELAY_2   FLASH_ACR_WRHIGHFREQ_1 /*!< programming delay set for Flash running between 185 MHz and 225 MHz */\n#define FLASH_PROGRAMMING_DELAY_3   FLASH_ACR_WRHIGHFREQ   /*!< programming delay set for Flash at startup */\n/**\n  * @}\n  */\n\n#if defined (FLASH_OTPBL_LOCKBL)\n/** @defgroup FLASHEx_OTP_Blocks FLASH OTP blocks\n  * @{\n  */\n#define FLASH_OTP_BLOCK_0          0x00000001U /*!< OTP Block0     */\n#define FLASH_OTP_BLOCK_1          0x00000002U /*!< OTP Block1     */\n#define FLASH_OTP_BLOCK_2          0x00000004U /*!< OTP Block2     */\n#define FLASH_OTP_BLOCK_3          0x00000008U /*!< OTP Block3     */\n#define FLASH_OTP_BLOCK_4          0x00000010U /*!< OTP Block4     */\n#define FLASH_OTP_BLOCK_5          0x00000020U /*!< OTP Block5     */\n#define FLASH_OTP_BLOCK_6          0x00000040U /*!< OTP Block6     */\n#define FLASH_OTP_BLOCK_7          0x00000080U /*!< OTP Block7     */\n#define FLASH_OTP_BLOCK_8          0x00000100U /*!< OTP Block8     */\n#define FLASH_OTP_BLOCK_9          0x00000200U /*!< OTP Block9     */\n#define FLASH_OTP_BLOCK_10         0x00000400U /*!< OTP Block10    */\n#define FLASH_OTP_BLOCK_11         0x00000800U /*!< OTP Block11    */\n#define FLASH_OTP_BLOCK_12         0x00001000U /*!< OTP Block12    */\n#define FLASH_OTP_BLOCK_13         0x00002000U /*!< OTP Block13    */\n#define FLASH_OTP_BLOCK_14         0x00004000U /*!< OTP Block14    */\n#define FLASH_OTP_BLOCK_15         0x00008000U /*!< OTP Block15    */\n#define FLASH_OTP_BLOCK_ALL        0x0000FFFFU /*!< OTP All Blocks */\n/**\n  * @}\n  */\n#endif /* FLASH_OTPBL_LOCKBL */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup FLASHEx_Exported_Macros FLASH Exported Macros\n  * @{\n  */\n/**\n  * @brief  Calculate the FLASH Boot Base Address (BOOT_ADD0 or BOOT_ADD1)\n  * @note   Returned value BOOT_ADDx[15:0] corresponds to boot address [29:14].\n  * @param  __ADDRESS__: FLASH Boot Address (in the range 0x0000 0000 to 0x2004 FFFF with a granularity of 16KB)\n  * @retval The FLASH Boot Base Address\n  */\n#define __HAL_FLASH_CALC_BOOT_BASE_ADR(__ADDRESS__) ((__ADDRESS__) >> 14U)\n /**\n  * @}\n  */\n\n#if defined (FLASH_CR_PSIZE)\n/**\n  * @brief  Set the FLASH Program/Erase parallelism.\n  * @param  __PSIZE__ FLASH Program/Erase parallelism\n  *         This parameter can be a value of @ref FLASH_Program_Parallelism\n  * @param  __BANK__: Flash bank (FLASH_BANK_1 or FLASH_BANK_2)\n  * @retval none\n  */\n#if defined (DUAL_BANK)\n#define __HAL_FLASH_SET_PSIZE(__PSIZE__, __BANK__) (((__BANK__) == FLASH_BANK_1)  ? \\\n                              MODIFY_REG(FLASH->CR1, FLASH_CR_PSIZE, (__PSIZE__)) : \\\n                              MODIFY_REG(FLASH->CR2, FLASH_CR_PSIZE, (__PSIZE__)))\n#else\n#define __HAL_FLASH_SET_PSIZE(__PSIZE__, __BANK__)  MODIFY_REG(FLASH->CR1, FLASH_CR_PSIZE, (__PSIZE__))\n#endif /* DUAL_BANK */\n\n/**\n  * @brief  Get the FLASH Program/Erase parallelism.\n  * @param  __BANK__ Flash bank (FLASH_BANK_1 or FLASH_BANK_2)\n  * @retval FLASH Program/Erase parallelism\n  *         This return value can be a value of @ref FLASH_Program_Parallelism\n  */\n#if defined (DUAL_BANK)\n#define __HAL_FLASH_GET_PSIZE(__BANK__) (((__BANK__) == FLASH_BANK_1) ? \\\n                              READ_BIT((FLASH->CR1), FLASH_CR_PSIZE)  : \\\n                              READ_BIT((FLASH->CR2), FLASH_CR_PSIZE))\n#else\n#define __HAL_FLASH_GET_PSIZE(__BANK__)  READ_BIT((FLASH->CR1), FLASH_CR_PSIZE)\n#endif /* DUAL_BANK */\n\n#endif /* FLASH_CR_PSIZE */\n\n/**\n  * @brief  Set the FLASH Programming Delay.\n  * @param  __DELAY__ FLASH Programming Delay\n  *         This parameter can be a value of @ref FLASHEx_Programming_Delay\n  * @retval none\n  */\n#define __HAL_FLASH_SET_PROGRAM_DELAY(__DELAY__)  MODIFY_REG(FLASH->ACR, FLASH_ACR_WRHIGHFREQ, (__DELAY__))\n\n/**\n  * @brief  Get the FLASH Programming Delay.\n  * @retval FLASH Programming Delay\n  *         This return value can be a value of @ref FLASHEx_Programming_Delay\n  */\n#define __HAL_FLASH_GET_PROGRAM_DELAY()     READ_BIT(FLASH->ACR, FLASH_ACR_WRHIGHFREQ)\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup FLASHEx_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup FLASHEx_Exported_Functions_Group1\n  * @{\n  */\n/* Extension Program operation functions  *************************************/\nHAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError);\nHAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit);\nHAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit);\nvoid              HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit);\n\nHAL_StatusTypeDef HAL_FLASHEx_Unlock_Bank1(void);\nHAL_StatusTypeDef HAL_FLASHEx_Lock_Bank1(void);\n#if defined (DUAL_BANK)\nHAL_StatusTypeDef HAL_FLASHEx_Unlock_Bank2(void);\nHAL_StatusTypeDef HAL_FLASHEx_Lock_Bank2(void);\n#endif /* DUAL_BANK */\n\nHAL_StatusTypeDef HAL_FLASHEx_ComputeCRC(FLASH_CRCInitTypeDef *pCRCInit, uint32_t *CRC_Result);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup FLASHEx_Private_Macros FLASHEx Private Macros\n  * @{\n  */\n\n/** @defgroup FLASHEx_IS_FLASH_Definitions FLASHEx Private macros to check input parameters\n  * @{\n  */\n\n#define IS_FLASH_TYPEERASE(VALUE)        (((VALUE) == FLASH_TYPEERASE_SECTORS) || \\\n                                          ((VALUE) == FLASH_TYPEERASE_MASSERASE))\n\n#if defined (FLASH_CR_PSIZE)\n#define IS_VOLTAGERANGE(RANGE)           (((RANGE) == FLASH_VOLTAGE_RANGE_1) || \\\n                                          ((RANGE) == FLASH_VOLTAGE_RANGE_2) || \\\n                                          ((RANGE) == FLASH_VOLTAGE_RANGE_3) || \\\n                                          ((RANGE) == FLASH_VOLTAGE_RANGE_4))\n#endif /* FLASH_CR_PSIZE */\n\n#define IS_WRPSTATE(VALUE)               (((VALUE) == OB_WRPSTATE_DISABLE) || \\\n                                          ((VALUE) == OB_WRPSTATE_ENABLE))\n\n#define IS_OPTIONBYTE(VALUE)             ((((VALUE) & OPTIONBYTE_ALL) != 0U) && \\\n                                          (((VALUE) & ~OPTIONBYTE_ALL) == 0U))\n\n#define IS_OB_BOOT_ADDRESS(ADDRESS)      ((ADDRESS) <= 0x8013U)\n\n#define IS_OB_RDP_LEVEL(LEVEL)           (((LEVEL) == OB_RDP_LEVEL_0)   ||\\\n                                          ((LEVEL) == OB_RDP_LEVEL_1)   ||\\\n                                          ((LEVEL) == OB_RDP_LEVEL_2))\n\n#define IS_OB_IWDG_SOURCE(SOURCE)        (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))\n\n#define IS_OB_STOP_SOURCE(SOURCE)        (((SOURCE) == OB_STOP_NO_RST) || ((SOURCE) == OB_STOP_RST))\n\n#define IS_OB_STDBY_SOURCE(SOURCE)       (((SOURCE) == OB_STDBY_NO_RST) || ((SOURCE) == OB_STDBY_RST))\n\n#define IS_OB_IWDG_STOP_FREEZE(FREEZE)   (((FREEZE) == OB_IWDG_STOP_FREEZE) || ((FREEZE) == OB_IWDG_STOP_ACTIVE))\n\n#define IS_OB_IWDG_STDBY_FREEZE(FREEZE)  (((FREEZE) == OB_IWDG_STDBY_FREEZE) || ((FREEZE) == OB_IWDG_STDBY_ACTIVE))\n\n#define IS_OB_BOR_LEVEL(LEVEL)           (((LEVEL) == OB_BOR_LEVEL0) || ((LEVEL) == OB_BOR_LEVEL1) || \\\n                                          ((LEVEL) == OB_BOR_LEVEL2) || ((LEVEL) == OB_BOR_LEVEL3))\n\n#define IS_FLASH_LATENCY(LATENCY)        (((LATENCY) == FLASH_LATENCY_0)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_1)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_2)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_3)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_4)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_5)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_6)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_7)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_8)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_9)  || \\\n                                          ((LATENCY) == FLASH_LATENCY_10) || \\\n                                          ((LATENCY) == FLASH_LATENCY_11) || \\\n                                          ((LATENCY) == FLASH_LATENCY_12) || \\\n                                          ((LATENCY) == FLASH_LATENCY_13) || \\\n                                          ((LATENCY) == FLASH_LATENCY_14) || \\\n                                          ((LATENCY) == FLASH_LATENCY_15))\n\n#define IS_FLASH_SECTOR(SECTOR)          ((SECTOR) < FLASH_SECTOR_TOTAL)\n\n#if (FLASH_SECTOR_TOTAL == 8U)\n#define IS_OB_WRP_SECTOR(SECTOR)         ((((SECTOR) & 0xFFFFFF00U) == 0x00000000U) && ((SECTOR) != 0x00000000U))\n#else\n#define IS_OB_WRP_SECTOR(SECTOR)         ((SECTOR) != 0x00000000U)\n#endif /* FLASH_SECTOR_TOTAL == 8U */\n\n#define IS_OB_PCROP_RDP(CONFIG)          (((CONFIG) == OB_PCROP_RDP_NOT_ERASE) || \\\n                                          ((CONFIG) == OB_PCROP_RDP_ERASE))\n\n#define IS_OB_SECURE_RDP(CONFIG)         (((CONFIG) == OB_SECURE_RDP_NOT_ERASE) || \\\n                                          ((CONFIG) == OB_SECURE_RDP_ERASE))\n\n#if defined (DUAL_BANK)\n#define IS_OB_USER_SWAP_BANK(VALUE)      (((VALUE) == OB_SWAP_BANK_DISABLE) || ((VALUE) == OB_SWAP_BANK_ENABLE))\n#endif /* DUAL_BANK */\n\n#define IS_OB_USER_IOHSLV(VALUE)         (((VALUE) == OB_IOHSLV_DISABLE) || ((VALUE) == OB_IOHSLV_ENABLE))\n\n#if defined (FLASH_OPTSR_VDDMMC_HSLV)\n#define IS_OB_USER_VDDMMC_HSLV(VALUE)    (((VALUE) == OB_VDDMMC_HSLV_DISABLE) || ((VALUE) == OB_VDDMMC_HSLV_ENABLE))\n#endif /* FLASH_OPTSR_VDDMMC_HSLV */\n\n#define IS_OB_IWDG1_SOURCE(SOURCE)       (((SOURCE) == OB_IWDG1_SW) || ((SOURCE) == OB_IWDG1_HW))\n#if defined (DUAL_CORE)\n#define IS_OB_IWDG2_SOURCE(SOURCE)       (((SOURCE) == OB_IWDG2_SW) || ((SOURCE) == OB_IWDG2_HW))\n#endif /* DUAL_CORE */\n#define IS_OB_STOP_D1_RESET(VALUE)       (((VALUE) == OB_STOP_NO_RST_D1) || ((VALUE) == OB_STOP_RST_D1))\n\n#define IS_OB_STDBY_D1_RESET(VALUE)      (((VALUE) == OB_STDBY_NO_RST_D1) || ((VALUE) == OB_STDBY_RST_D1))\n\n#define IS_OB_USER_IWDG_STOP(VALUE)      (((VALUE) == OB_IWDG_STOP_FREEZE) || ((VALUE) == OB_IWDG_STOP_ACTIVE))\n\n#define IS_OB_USER_IWDG_STDBY(VALUE)     (((VALUE) == OB_IWDG_STDBY_FREEZE) || ((VALUE) == OB_IWDG_STDBY_ACTIVE))\n\n#define IS_OB_USER_ST_RAM_SIZE(VALUE)    (((VALUE) == OB_ST_RAM_SIZE_2KB) || ((VALUE) == OB_ST_RAM_SIZE_4KB) || \\\n                                          ((VALUE) == OB_ST_RAM_SIZE_8KB) || ((VALUE) == OB_ST_RAM_SIZE_16KB))\n\n#define IS_OB_USER_SECURITY(VALUE)       (((VALUE) == OB_SECURITY_ENABLE) || ((VALUE) == OB_SECURITY_DISABLE))\n\n#if defined (DUAL_CORE)\n#define IS_OB_USER_BCM4(VALUE)           (((VALUE) == OB_BCM4_DISABLE) || ((VALUE) == OB_BCM4_ENABLE))\n\n#define IS_OB_USER_BCM7(VALUE)           (((VALUE) == OB_BCM7_DISABLE) || ((VALUE) == OB_BCM7_ENABLE))\n#endif /* DUAL_CORE */\n\n#if defined (FLASH_OPTSR_NRST_STOP_D2)\n#define IS_OB_STOP_D2_RESET(VALUE)       (((VALUE) == OB_STOP_NO_RST_D2) || ((VALUE) == OB_STOP_RST_D2))\n\n#define IS_OB_STDBY_D2_RESET(VALUE)      (((VALUE) == OB_STDBY_NO_RST_D2) || ((VALUE) == OB_STDBY_RST_D2))\n#endif /* FLASH_OPTSR_NRST_STOP_D2 */\n\n#if defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n#define IS_OB_USER_TCM_AXI_SHARED(VALUE) (((VALUE) == OB_TCM_AXI_SHARED_ITCM64KB) || ((VALUE) == OB_TCM_AXI_SHARED_ITCM128KB) || \\\n                                          ((VALUE) == OB_TCM_AXI_SHARED_ITCM192KB) || ((VALUE) == OB_TCM_AXI_SHARED_ITCM256KB))\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n\n#if defined (FLASH_OPTSR2_CPUFREQ_BOOST)\n#define IS_OB_USER_CPUFREQ_BOOST(VALUE)  (((VALUE) == OB_CPUFREQ_BOOST_DISABLE) || ((VALUE) == OB_CPUFREQ_BOOST_ENABLE))\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n\n#define IS_OB_USER_TYPE(TYPE)            ((((TYPE) & OB_USER_ALL) != 0U) && \\\n                                          (((TYPE) & ~OB_USER_ALL) == 0U))\n\n#define IS_OB_BOOT_ADD_OPTION(VALUE)     (((VALUE) == OB_BOOT_ADD0)  || \\\n                                          ((VALUE) == OB_BOOT_ADD1)  || \\\n                                          ((VALUE) == OB_BOOT_ADD_BOTH))\n\n#define IS_FLASH_TYPECRC(VALUE)          (((VALUE) == FLASH_CRC_ADDR)    || \\\n                                          ((VALUE) == FLASH_CRC_SECTORS) || \\\n                                          ((VALUE) == FLASH_CRC_BANK))\n\n#if defined (FLASH_OTPBL_LOCKBL)\n#define IS_OTP_BLOCK(VALUE)              ((((VALUE) & 0xFFFF0000U) == 0x00000000U) && ((VALUE) != 0x00000000U))\n#endif /* FLASH_OTPBL_LOCKBL */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup FLASHEx_Private_Functions FLASHEx Private Functions\n  * @{\n  */\nvoid FLASH_Erase_Sector(uint32_t Sector, uint32_t Banks, uint32_t VoltageRange);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_FLASH_EX_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_gpio.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_gpio.h\n  * @author  MCD Application Team\n  * @brief   Header file of GPIO HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_GPIO_H\n#define STM32H7xx_HAL_GPIO_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup GPIO\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup GPIO_Exported_Types GPIO Exported Types\n  * @{\n  */\n\n/**\n  * @brief   GPIO Init structure definition\n  */\ntypedef struct\n{\n  uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.\n                           This parameter can be any value of @ref GPIO_pins_define */\n\n  uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.\n                           This parameter can be a value of @ref GPIO_mode_define */\n\n  uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.\n                           This parameter can be a value of @ref GPIO_pull_define */\n\n  uint32_t Speed;     /*!< Specifies the speed for the selected pins.\n                           This parameter can be a value of @ref GPIO_speed_define */\n\n  uint32_t Alternate;  /*!< Peripheral to be connected to the selected pins.\n                            This parameter can be a value of @ref GPIO_Alternate_function_selection */\n} GPIO_InitTypeDef;\n\n/**\n  * @brief  GPIO Bit SET and Bit RESET enumeration\n  */\ntypedef enum\n{\n  GPIO_PIN_RESET = 0U,\n  GPIO_PIN_SET\n} GPIO_PinState;\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup GPIO_Exported_Constants  GPIO Exported Constants\n  * @{\n  */\n\n/** @defgroup GPIO_pins_define  GPIO pins define\n  * @{\n  */\n#define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */\n#define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */\n#define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */\n#define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */\n#define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */\n#define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */\n#define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */\n#define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */\n#define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */\n#define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */\n#define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */\n#define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */\n#define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */\n#define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */\n#define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */\n#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */\n#define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */\n\n#define GPIO_PIN_MASK              (0x0000FFFFU) /* PIN mask for assert test */\n/**\n  * @}\n  */\n\n/** @defgroup GPIO_mode_define  GPIO mode define\n  * @brief GPIO Configuration Mode\n  *        Elements values convention: 0x00WX00YZ\n  *           - W  : EXTI trigger detection on 3 bits\n  *           - X  : EXTI mode (IT or Event) on 2 bits\n  *           - Y  : Output type (Push Pull or Open Drain) on 1 bit\n  *           - Z  : GPIO mode (Input, Output, Alternate or Analog) on 2 bits\n  * @{\n  */\n#define GPIO_MODE_INPUT                 MODE_INPUT                                                  /*!< Input Floating Mode                                                */\n#define GPIO_MODE_OUTPUT_PP             (MODE_OUTPUT | OUTPUT_PP)                                   /*!< Output Push Pull Mode                                              */\n#define GPIO_MODE_OUTPUT_OD             (MODE_OUTPUT | OUTPUT_OD)                                   /*!< Output Open Drain Mode                                             */\n#define GPIO_MODE_AF_PP                 (MODE_AF | OUTPUT_PP)                                       /*!< Alternate Function Push Pull Mode                                  */\n#define GPIO_MODE_AF_OD                 (MODE_AF | OUTPUT_OD)                                       /*!< Alternate Function Open Drain Mode                                 */\n#define GPIO_MODE_ANALOG                MODE_ANALOG                                                 /*!< Analog Mode                                                        */\n#define GPIO_MODE_IT_RISING             (MODE_INPUT | EXTI_IT | TRIGGER_RISING)                     /*!< External Interrupt Mode with Rising edge trigger detection         */\n#define GPIO_MODE_IT_FALLING            (MODE_INPUT | EXTI_IT | TRIGGER_FALLING)                    /*!< External Interrupt Mode with Falling edge trigger detection        */\n#define GPIO_MODE_IT_RISING_FALLING     (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection */\n\n#define GPIO_MODE_EVT_RISING            (MODE_INPUT | EXTI_EVT | TRIGGER_RISING)                    /*!< External Event Mode with Rising edge trigger detection             */\n#define GPIO_MODE_EVT_FALLING           (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING)                   /*!< External Event Mode with Falling edge trigger detection            */\n#define GPIO_MODE_EVT_RISING_FALLING    (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING)  /*!< External Event Mode with Rising/Falling edge trigger detection     */\n/**\n  * @}\n  */\n\n/** @defgroup GPIO_speed_define  GPIO speed define\n  * @brief GPIO Output Maximum frequency\n  * @{\n  */\n#define  GPIO_SPEED_FREQ_LOW         (0x00000000U)  /*!< Low speed     */\n#define  GPIO_SPEED_FREQ_MEDIUM      (0x00000001U)  /*!< Medium speed  */\n#define  GPIO_SPEED_FREQ_HIGH        (0x00000002U)  /*!< Fast speed    */\n#define  GPIO_SPEED_FREQ_VERY_HIGH   (0x00000003U)  /*!< High speed    */\n/**\n  * @}\n  */\n\n/** @defgroup GPIO_pull_define  GPIO pull define\n  * @brief GPIO Pull-Up or Pull-Down Activation\n  * @{\n  */\n#define  GPIO_NOPULL        (0x00000000U)   /*!< No Pull-up or Pull-down activation  */\n#define  GPIO_PULLUP        (0x00000001U)   /*!< Pull-up activation                  */\n#define  GPIO_PULLDOWN      (0x00000002U)   /*!< Pull-down activation                */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup GPIO_Exported_Macros GPIO Exported Macros\n  * @{\n  */\n\n/**\n  * @brief  Checks whether the specified EXTI line flag is set or not.\n  * @param  __EXTI_LINE__: specifies the EXTI line flag to check.\n  *         This parameter can be GPIO_PIN_x where x can be(0..15)\n  * @retval The new state of __EXTI_LINE__ (SET or RESET).\n  */\n#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR1 & (__EXTI_LINE__))\n\n/**\n  * @brief  Clears the EXTI's line pending flags.\n  * @param  __EXTI_LINE__: specifies the EXTI lines flags to clear.\n  *         This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\n  * @retval None\n  */\n#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR1 = (__EXTI_LINE__))\n\n/**\n  * @brief  Checks whether the specified EXTI line is asserted or not.\n  * @param  __EXTI_LINE__: specifies the EXTI line to check.\n  *          This parameter can be GPIO_PIN_x where x can be(0..15)\n  * @retval The new state of __EXTI_LINE__ (SET or RESET).\n  */\n#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR1 & (__EXTI_LINE__))\n\n/**\n  * @brief  Clears the EXTI's line pending bits.\n  * @param  __EXTI_LINE__: specifies the EXTI lines to clear.\n  *          This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\n  * @retval None\n  */\n#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR1 = (__EXTI_LINE__))\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Checks whether the specified EXTI line flag is set or not.\n  * @param  __EXTI_LINE__: specifies the EXTI line flag to check.\n  *         This parameter can be GPIO_PIN_x where x can be(0..15)\n  * @retval The new state of __EXTI_LINE__ (SET or RESET).\n  */\n#define __HAL_GPIO_EXTID2_GET_FLAG(__EXTI_LINE__) (EXTI->C2PR1 & (__EXTI_LINE__))\n\n/**\n  * @brief  Clears the EXTI's line pending flags.\n  * @param  __EXTI_LINE__: specifies the EXTI lines flags to clear.\n  *         This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\n  * @retval None\n  */\n#define __HAL_GPIO_EXTID2_CLEAR_FLAG(__EXTI_LINE__) (EXTI->C2PR1 = (__EXTI_LINE__))\n\n/**\n  * @brief  Checks whether the specified EXTI line is asserted or not.\n  * @param  __EXTI_LINE__: specifies the EXTI line to check.\n  *          This parameter can be GPIO_PIN_x where x can be(0..15)\n  * @retval The new state of __EXTI_LINE__ (SET or RESET).\n  */\n#define __HAL_GPIO_EXTID2_GET_IT(__EXTI_LINE__) (EXTI->C2PR1 & (__EXTI_LINE__))\n\n/**\n  * @brief  Clears the EXTI's line pending bits.\n  * @param  __EXTI_LINE__: specifies the EXTI lines to clear.\n  *          This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\n  * @retval None\n  */\n#define __HAL_GPIO_EXTID2_CLEAR_IT(__EXTI_LINE__) (EXTI->C2PR1 = (__EXTI_LINE__))\n#endif\n\n/**\n  * @brief  Generates a Software interrupt on selected EXTI line.\n  * @param  __EXTI_LINE__: specifies the EXTI line to check.\n  *          This parameter can be GPIO_PIN_x where x can be(0..15)\n  * @retval None\n  */\n#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER1 |= (__EXTI_LINE__))\n/**\n  * @}\n  */\n\n/* Include GPIO HAL Extension module */\n#include \"stm32h7xx_hal_gpio_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup GPIO_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup GPIO_Exported_Functions_Group1\n  * @{\n  */\n/* Initialization and de-initialization functions *****************************/\nvoid  HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);\nvoid  HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);\n/**\n  * @}\n  */\n\n/** @addtogroup GPIO_Exported_Functions_Group2\n  * @{\n  */\n/* IO operation functions *****************************************************/\nGPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);\nvoid HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);\nvoid HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);\nHAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);\nvoid HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);\nvoid HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup GPIO_Private_Constants GPIO Private Constants\n  * @{\n  */\n#define GPIO_MODE_Pos                           0u\n#define GPIO_MODE                               (0x3uL << GPIO_MODE_Pos)\n#define MODE_INPUT                              (0x0uL << GPIO_MODE_Pos)\n#define MODE_OUTPUT                             (0x1uL << GPIO_MODE_Pos)\n#define MODE_AF                                 (0x2uL << GPIO_MODE_Pos)\n#define MODE_ANALOG                             (0x3uL << GPIO_MODE_Pos)\n#define OUTPUT_TYPE_Pos                         4u\n#define OUTPUT_TYPE                             (0x1uL << OUTPUT_TYPE_Pos)\n#define OUTPUT_PP                               (0x0uL << OUTPUT_TYPE_Pos)\n#define OUTPUT_OD                               (0x1uL << OUTPUT_TYPE_Pos)\n#define EXTI_MODE_Pos                           16u\n#define EXTI_MODE                               (0x3uL << EXTI_MODE_Pos)\n#define EXTI_IT                                 (0x1uL << EXTI_MODE_Pos)\n#define EXTI_EVT                                (0x2uL << EXTI_MODE_Pos)\n#define TRIGGER_MODE_Pos                         20u\n#define TRIGGER_MODE                            (0x7uL << TRIGGER_MODE_Pos)\n#define TRIGGER_RISING                          (0x1uL << TRIGGER_MODE_Pos)\n#define TRIGGER_FALLING                         (0x2uL << TRIGGER_MODE_Pos)\n#define TRIGGER_LEVEL                           (0x4uL << TRIGGER_MODE_Pos)\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup GPIO_Private_Macros GPIO Private Macros\n  * @{\n  */\n#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))\n#define IS_GPIO_PIN(__PIN__)        ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U) &&\\\n                                     (((uint32_t)(__PIN__) & ~GPIO_PIN_MASK) == 0x00U))\n#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT)              ||\\\n                            ((MODE) == GPIO_MODE_OUTPUT_PP)          ||\\\n                            ((MODE) == GPIO_MODE_OUTPUT_OD)          ||\\\n                            ((MODE) == GPIO_MODE_AF_PP)              ||\\\n                            ((MODE) == GPIO_MODE_AF_OD)              ||\\\n                            ((MODE) == GPIO_MODE_IT_RISING)          ||\\\n                            ((MODE) == GPIO_MODE_IT_FALLING)         ||\\\n                            ((MODE) == GPIO_MODE_IT_RISING_FALLING)  ||\\\n                            ((MODE) == GPIO_MODE_EVT_RISING)         ||\\\n                            ((MODE) == GPIO_MODE_EVT_FALLING)        ||\\\n                            ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\\\n                            ((MODE) == GPIO_MODE_ANALOG))\n#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW)  || ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || \\\n                              ((SPEED) == GPIO_SPEED_FREQ_HIGH) || ((SPEED) == GPIO_SPEED_FREQ_VERY_HIGH))\n\n#define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \\\n                            ((PULL) == GPIO_PULLDOWN))\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup GPIO_Private_Functions GPIO Private Functions\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_GPIO_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_gpio_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_gpio_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of GPIO HAL Extension module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_GPIO_EX_H\n#define STM32H7xx_HAL_GPIO_EX_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup GPIOEx GPIOEx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup GPIOEx_Exported_Constants GPIO Exported Constants\n  * @{\n  */\n\n/** @defgroup GPIO_Alternate_function_selection GPIO Alternate Function Selection\n  * @{\n  */\n\n/**\n  * @brief   AF 0 selection\n  */\n#define GPIO_AF0_RTC_50Hz      ((uint8_t)0x00)  /* RTC_50Hz Alternate Function mapping                                                     */\n#define GPIO_AF0_MCO           ((uint8_t)0x00)  /* MCO (MCO1 and MCO2) Alternate Function mapping                                          */\n#define GPIO_AF0_SWJ           ((uint8_t)0x00)  /* SWJ (SWD and JTAG) Alternate Function mapping                                           */\n#define GPIO_AF0_LCDBIAS       ((uint8_t)0x00)  /* LCDBIAS Alternate Function mapping                                                      */\n#define GPIO_AF0_TRACE         ((uint8_t)0x00)  /* TRACE Alternate Function mapping                                                        */\n#if defined (PWR_CPUCR_PDDS_D2) /* PWR D1 and D2 domains exists */\n#define GPIO_AF0_C1DSLEEP      ((uint8_t)0x00)  /* Cortex-M7 Deep Sleep Alternate Function mapping : available on STM32H7 Rev.B and above  */\n#define GPIO_AF0_C1SLEEP       ((uint8_t)0x00)  /* Cortex-M7 Sleep Alternate Function mapping : available on STM32H7 Rev.B and above       */\n#define GPIO_AF0_D1PWREN       ((uint8_t)0x00)  /* Domain 1 PWR enable Alternate Function mapping : available on STM32H7 Rev.B and above   */\n#define GPIO_AF0_D2PWREN       ((uint8_t)0x00)  /* Domain 2 PWR enable Alternate Function mapping : available on STM32H7 Rev.B and above   */\n#if defined(DUAL_CORE)\n#define GPIO_AF0_C2DSLEEP      ((uint8_t)0x00)  /* Cortex-M4 Deep Sleep Alternate Function mapping : available on STM32H7 Rev.B and above  */\n#define GPIO_AF0_C2SLEEP       ((uint8_t)0x00)  /* Cortex-M4 Sleep Alternate Function mapping : available on STM32H7 Rev.B and above       */\n#endif /* DUAL_CORE */\n#endif /* PWR_CPUCR_PDDS_D2 */\n\n/**\n  * @brief   AF 1 selection\n  */\n#define GPIO_AF1_TIM1          ((uint8_t)0x01)  /* TIM1 Alternate Function mapping   */\n#define GPIO_AF1_TIM2          ((uint8_t)0x01)  /* TIM2 Alternate Function mapping   */\n#define GPIO_AF1_TIM16         ((uint8_t)0x01)  /* TIM16 Alternate Function mapping  */\n#define GPIO_AF1_TIM17         ((uint8_t)0x01)  /* TIM17 Alternate Function mapping  */\n#define GPIO_AF1_LPTIM1        ((uint8_t)0x01)  /* LPTIM1 Alternate Function mapping */\n#if defined(HRTIM1)\n#define GPIO_AF1_HRTIM1        ((uint8_t)0x01)  /* HRTIM1 Alternate Function mapping */\n#endif /* HRTIM1 */\n#if defined(SAI4)\n#define GPIO_AF1_SAI4          ((uint8_t)0x01)  /* SAI4 Alternate Function mapping : available on STM32H72xxx/STM32H73xxx */\n#endif /* SAI4 */\n#define GPIO_AF1_FMC           ((uint8_t)0x01)  /* FMC Alternate Function mapping : available on STM32H72xxx/STM32H73xxx */\n\n\n/**\n  * @brief   AF 2 selection\n  */\n#define GPIO_AF2_TIM3          ((uint8_t)0x02)  /* TIM3 Alternate Function mapping   */\n#define GPIO_AF2_TIM4          ((uint8_t)0x02)  /* TIM4 Alternate Function mapping   */\n#define GPIO_AF2_TIM5          ((uint8_t)0x02)  /* TIM5 Alternate Function mapping   */\n#define GPIO_AF2_TIM12         ((uint8_t)0x02)  /* TIM12 Alternate Function mapping  */\n#define GPIO_AF2_SAI1          ((uint8_t)0x02)  /* SAI1 Alternate Function mapping   */\n#if defined(HRTIM1)\n#define GPIO_AF2_HRTIM1        ((uint8_t)0x02)  /* HRTIM1 Alternate Function mapping */\n#endif /* HRTIM1 */\n#define GPIO_AF2_TIM15         ((uint8_t)0x02)  /* TIM15 Alternate Function mapping : available on STM32H7A3xxx/STM32H7B3xxx/STM32H7B0xxx and STM32H72xxx/STM32H73xxx */\n#if defined(FDCAN3)\n#define GPIO_AF2_FDCAN3        ((uint8_t)0x02)  /* FDCAN3 Alternate Function mapping */\n#endif /*FDCAN3*/\n\n/**\n  * @brief   AF 3 selection\n  */\n#define GPIO_AF3_TIM8          ((uint8_t)0x03)  /* TIM8 Alternate Function mapping   */\n#define GPIO_AF3_LPTIM2        ((uint8_t)0x03)  /* LPTIM2 Alternate Function mapping */\n#define GPIO_AF3_DFSDM1        ((uint8_t)0x03)  /* DFSDM Alternate Function mapping  */\n#define GPIO_AF3_LPTIM3        ((uint8_t)0x03)  /* LPTIM3 Alternate Function mapping */\n#define GPIO_AF3_LPTIM4        ((uint8_t)0x03)  /* LPTIM4 Alternate Function mapping */\n#define GPIO_AF3_LPTIM5        ((uint8_t)0x03)  /* LPTIM5 Alternate Function mapping */\n#define GPIO_AF3_LPUART        ((uint8_t)0x03)  /* LPUART Alternate Function mapping */\n#if defined(OCTOSPIM)\n#define GPIO_AF3_OCTOSPIM_P1   ((uint8_t)0x03)  /* OCTOSPI Manager Port 1 Alternate Function mapping */\n#define GPIO_AF3_OCTOSPIM_P2   ((uint8_t)0x03)  /* OCTOSPI Manager Port 2 Alternate Function mapping */\n#endif /* OCTOSPIM */\n#if defined(HRTIM1)\n#define GPIO_AF3_HRTIM1        ((uint8_t)0x03)  /* HRTIM1 Alternate Function mapping */\n#endif /* HRTIM1 */\n#define GPIO_AF3_LTDC          ((uint8_t)0x03)  /* LTDC Alternate Function mapping : available on STM32H72xxx/STM32H73xxx */\n\n/**\n  * @brief   AF 4 selection\n  */\n#define GPIO_AF4_I2C1          ((uint8_t)0x04)  /* I2C1 Alternate Function mapping   */\n#define GPIO_AF4_I2C2          ((uint8_t)0x04)  /* I2C2 Alternate Function mapping   */\n#define GPIO_AF4_I2C3          ((uint8_t)0x04)  /* I2C3 Alternate Function mapping   */\n#define GPIO_AF4_I2C4          ((uint8_t)0x04)  /* I2C4 Alternate Function mapping   */\n#if defined(I2C5)\n#define GPIO_AF4_I2C5          ((uint8_t)0x04)  /* I2C5 Alternate Function mapping   */\n#endif /* I2C5*/\n#define GPIO_AF4_TIM15         ((uint8_t)0x04)  /* TIM15 Alternate Function mapping  */\n#define GPIO_AF4_CEC           ((uint8_t)0x04)  /* CEC Alternate Function mapping    */\n#define GPIO_AF4_LPTIM2        ((uint8_t)0x04)  /* LPTIM2 Alternate Function mapping */\n#define GPIO_AF4_USART1        ((uint8_t)0x04)  /* USART1 Alternate Function mapping */\n#if defined(USART10)\n#define GPIO_AF4_USART10       ((uint8_t)0x04)  /* USART10 Alternate Function mapping : available on STM32H72xxx/STM32H73xxx */\n#endif /*USART10*/\n#define GPIO_AF4_DFSDM1        ((uint8_t)0x04)  /* DFSDM  Alternate Function mapping */\n#if defined(DFSDM2_BASE)\n#define GPIO_AF4_DFSDM2        ((uint8_t)0x04)  /* DFSDM2 Alternate Function mapping */\n#endif /* DFSDM2_BASE */\n#define GPIO_AF4_DCMI          ((uint8_t)0x04)   /* DCMI Alternate Function mapping : available on STM32H7A3xxx/STM32H7B3xxx/STM32H7B0xxx and STM32H72xxx/STM32H73xxx */\n#if defined(PSSI)\n#define GPIO_AF4_PSSI          ((uint8_t)0x04)  /* PSSI Alternate Function mapping   */\n#endif /* PSSI */\n#if defined(OCTOSPIM)\n#define GPIO_AF4_OCTOSPIM_P1   ((uint8_t)0x04)  /* OCTOSPI Manager Port 1 Alternate Function mapping  : available on STM32H72xxx/STM32H73xxx */\n#endif /* OCTOSPIM */\n\n/**\n  * @brief   AF 5 selection\n  */\n#define GPIO_AF5_SPI1          ((uint8_t)0x05)  /* SPI1 Alternate Function mapping   */\n#define GPIO_AF5_SPI2          ((uint8_t)0x05)  /* SPI2 Alternate Function mapping   */\n#define GPIO_AF5_SPI3          ((uint8_t)0x05)  /* SPI3 Alternate Function mapping   */\n#define GPIO_AF5_SPI4          ((uint8_t)0x05)  /* SPI4 Alternate Function mapping   */\n#define GPIO_AF5_SPI5          ((uint8_t)0x05)  /* SPI5 Alternate Function mapping   */\n#define GPIO_AF5_SPI6          ((uint8_t)0x05)  /* SPI6 Alternate Function mapping   */\n#define GPIO_AF5_CEC           ((uint8_t)0x05)  /* CEC  Alternate Function mapping   */\n#if defined(FDCAN3)\n#define GPIO_AF5_FDCAN3        ((uint8_t)0x05)  /* FDCAN3 Alternate Function mapping */\n#endif /*FDCAN3*/\n\n/**\n  * @brief   AF 6 selection\n  */\n#define GPIO_AF6_SPI2          ((uint8_t)0x06)  /* SPI2 Alternate Function mapping   */\n#define GPIO_AF6_SPI3          ((uint8_t)0x06)  /* SPI3 Alternate Function mapping   */\n#define GPIO_AF6_SAI1          ((uint8_t)0x06)  /* SAI1 Alternate Function mapping   */\n#define GPIO_AF6_I2C4          ((uint8_t)0x06)  /* I2C4 Alternate Function mapping   */\n#if defined(I2C5)\n#define GPIO_AF6_I2C5          ((uint8_t)0x06)  /* I2C5 Alternate Function mapping   */\n#endif /* I2C5*/\n#define GPIO_AF6_DFSDM1        ((uint8_t)0x06)  /* DFSDM Alternate Function mapping  */\n#define GPIO_AF6_UART4         ((uint8_t)0x06)  /* UART4 Alternate Function mapping  */\n#if defined(DFSDM2_BASE)\n#define GPIO_AF6_DFSDM2        ((uint8_t)0x06)  /* DFSDM2 Alternate Function mapping */\n#endif /* DFSDM2_BASE */\n#if defined(SAI3)\n#define GPIO_AF6_SAI3          ((uint8_t)0x06)  /* SAI3 Alternate Function mapping   */\n#endif /* SAI3 */\n#if defined(OCTOSPIM)\n#define GPIO_AF6_OCTOSPIM_P1   ((uint8_t)0x06)  /* OCTOSPI Manager Port 1 Alternate Function mapping */\n#endif /* OCTOSPIM */\n\n/**\n  * @brief   AF 7 selection\n  */\n#define GPIO_AF7_SPI2          ((uint8_t)0x07)  /* SPI2 Alternate Function mapping   */\n#define GPIO_AF7_SPI3          ((uint8_t)0x07)  /* SPI3 Alternate Function mapping   */\n#define GPIO_AF7_SPI6          ((uint8_t)0x07)  /* SPI6 Alternate Function mapping   */\n#define GPIO_AF7_USART1        ((uint8_t)0x07)  /* USART1 Alternate Function mapping */\n#define GPIO_AF7_USART2        ((uint8_t)0x07)  /* USART2 Alternate Function mapping */\n#define GPIO_AF7_USART3        ((uint8_t)0x07)  /* USART3 Alternate Function mapping */\n#define GPIO_AF7_USART6        ((uint8_t)0x07)  /* USART6 Alternate Function mapping */\n#define GPIO_AF7_UART7         ((uint8_t)0x07)  /* UART7 Alternate Function mapping  */\n#define GPIO_AF7_SDMMC1        ((uint8_t)0x07)  /* SDMMC1 Alternate Function mapping */\n\n/**\n  * @brief   AF 8 selection\n  */\n#define GPIO_AF8_SPI6          ((uint8_t)0x08)  /* SPI6 Alternate Function mapping   */\n#if defined(SAI2)\n#define GPIO_AF8_SAI2          ((uint8_t)0x08)  /* SAI2 Alternate Function mapping   */\n#endif /*SAI2*/\n#define GPIO_AF8_UART4         ((uint8_t)0x08)  /* UART4 Alternate Function mapping  */\n#define GPIO_AF8_UART5         ((uint8_t)0x08)  /* UART5 Alternate Function mapping  */\n#define GPIO_AF8_UART8         ((uint8_t)0x08)  /* UART8 Alternate Function mapping  */\n#define GPIO_AF8_SPDIF         ((uint8_t)0x08)  /* SPDIF Alternate Function mapping  */\n#define GPIO_AF8_LPUART        ((uint8_t)0x08)  /* LPUART Alternate Function mapping */\n#define GPIO_AF8_SDMMC1        ((uint8_t)0x08)  /* SDMMC1 Alternate Function mapping */\n#if defined(SAI4)\n#define GPIO_AF8_SAI4          ((uint8_t)0x08)  /* SAI4 Alternate Function mapping   */\n#endif /* SAI4 */\n\n/**\n  * @brief   AF 9 selection\n  */\n#define GPIO_AF9_FDCAN1        ((uint8_t)0x09)  /* FDCAN1 Alternate Function mapping   */\n#define GPIO_AF9_FDCAN2        ((uint8_t)0x09)  /* FDCAN2 Alternate Function mapping   */\n#define GPIO_AF9_TIM13         ((uint8_t)0x09)  /* TIM13 Alternate Function mapping    */\n#define GPIO_AF9_TIM14         ((uint8_t)0x09)  /* TIM14 Alternate Function mapping    */\n#define GPIO_AF9_SDMMC2        ((uint8_t)0x09)  /* SDMMC2 Alternate Function mapping   */\n#define GPIO_AF9_LTDC          ((uint8_t)0x09)  /* LTDC Alternate Function mapping     */\n#define GPIO_AF9_SPDIF         ((uint8_t)0x09)  /* SPDIF Alternate Function mapping    */\n#define GPIO_AF9_FMC           ((uint8_t)0x09)  /* FMC Alternate Function mapping      */\n#if defined(QUADSPI)\n#define GPIO_AF9_QUADSPI       ((uint8_t)0x09)  /* QUADSPI Alternate Function mapping  */\n#endif /* QUADSPI */\n#if defined(SAI4)\n#define GPIO_AF9_SAI4          ((uint8_t)0x09)  /* SAI4 Alternate Function mapping     */\n#endif /* SAI4 */\n#if defined(OCTOSPIM)\n#define GPIO_AF9_OCTOSPIM_P1   ((uint8_t)0x09)  /* OCTOSPI Manager Port 1 Alternate Function mapping */\n#define GPIO_AF9_OCTOSPIM_P2   ((uint8_t)0x09)  /* OCTOSPI Manager Port 2 Alternate Function mapping */\n#endif /* OCTOSPIM */\n\n/**\n  * @brief   AF 10 selection\n  */\n#if defined(SAI2)\n#define GPIO_AF10_SAI2          ((uint8_t)0x0A)  /* SAI2 Alternate Function mapping                                             */\n#endif /*SAI2*/\n#define GPIO_AF10_SDMMC2        ((uint8_t)0x0A)  /* SDMMC2 Alternate Function mapping                                           */\n#if defined(USB2_OTG_FS)\n#define GPIO_AF10_OTG2_FS       ((uint8_t)0x0A)  /* OTG2_FS Alternate Function mapping                                          */\n#endif /*USB2_OTG_FS*/\n#define GPIO_AF10_COMP1         ((uint8_t)0x0A)  /* COMP1 Alternate Function mapping                                            */\n#define GPIO_AF10_COMP2         ((uint8_t)0x0A)  /* COMP2 Alternate Function mapping                                            */\n#if defined(LTDC)\n#define GPIO_AF10_LTDC          ((uint8_t)0x0A)  /* LTDC Alternate Function mapping                                             */\n#endif /*LTDC*/\n#define GPIO_AF10_CRS_SYNC      ((uint8_t)0x0A)  /* CRS Sync Alternate Function mapping : available on STM32H7 Rev.B and above  */\n#if defined(QUADSPI)\n#define GPIO_AF10_QUADSPI       ((uint8_t)0x0A)  /* QUADSPI Alternate Function mapping                                          */\n#endif /* QUADSPI */\n#if defined(SAI4)\n#define GPIO_AF10_SAI4          ((uint8_t)0x0A)  /* SAI4 Alternate Function mapping                                             */\n#endif /* SAI4 */\n#if !defined(USB2_OTG_FS)\n#define GPIO_AF10_OTG1_FS       ((uint8_t)0x0A)  /* OTG1_FS Alternate Function mapping : available on STM32H7A3xxx/STM32H7B3xxx/STM32H7B0xxx and STM32H72xxx/STM32H73xxx */\n#endif /* !USB2_OTG_FS */\n#define GPIO_AF10_OTG1_HS       ((uint8_t)0x0A)  /* OTG1_HS Alternate Function mapping                                          */\n#if defined(OCTOSPIM)\n#define GPIO_AF10_OCTOSPIM_P1   ((uint8_t)0x0A)  /* OCTOSPI Manager Port 1 Alternate Function mapping */\n#endif /* OCTOSPIM */\n#define GPIO_AF10_TIM8          ((uint8_t)0x0A)  /* TIM8 Alternate Function mapping                                             */\n#define GPIO_AF10_FMC           ((uint8_t)0x0A)  /* FMC Alternate Function mapping : available on STM32H7A3xxx/STM32H7B3xxx/STM32H7B0xxx and STM32H72xxx/STM32H73xxx */\n\n/**\n  * @brief   AF 11 selection\n  */\n#define GPIO_AF11_SWP           ((uint8_t)0x0B)  /* SWP Alternate Function mapping     */\n#define GPIO_AF11_MDIOS         ((uint8_t)0x0B)  /* MDIOS Alternate Function mapping   */\n#define GPIO_AF11_UART7         ((uint8_t)0x0B)  /* UART7 Alternate Function mapping   */\n#define GPIO_AF11_SDMMC2        ((uint8_t)0x0B)  /* SDMMC2 Alternate Function mapping  */\n#define GPIO_AF11_DFSDM1        ((uint8_t)0x0B)  /* DFSDM1 Alternate Function mapping  */\n#define GPIO_AF11_COMP1         ((uint8_t)0x0B)  /* COMP1 Alternate Function mapping   */\n#define GPIO_AF11_COMP2         ((uint8_t)0x0B)  /* COMP2 Alternate Function mapping   */\n#define GPIO_AF11_TIM1          ((uint8_t)0x0B)  /* TIM1 Alternate Function mapping    */\n#define GPIO_AF11_TIM8          ((uint8_t)0x0B)  /* TIM8 Alternate Function mapping    */\n#define GPIO_AF11_I2C4          ((uint8_t)0x0B)  /* I2C4 Alternate Function mapping    */\n#if defined(DFSDM2_BASE)\n#define GPIO_AF11_DFSDM2        ((uint8_t)0x0B)  /* DFSDM2 Alternate Function mapping  */\n#endif /* DFSDM2_BASE */\n#if defined(USART10)\n#define GPIO_AF11_USART10       ((uint8_t)0x0B)  /* USART10 Alternate Function mapping */\n#endif /* USART10 */\n#if defined(UART9)\n#define GPIO_AF11_UART9         ((uint8_t)0x0B)  /* UART9 Alternate Function mapping   */\n#endif /* UART9 */\n#if defined(ETH)\n#define GPIO_AF11_ETH           ((uint8_t)0x0B)  /* ETH Alternate Function mapping     */\n#endif /* ETH */\n#if defined(LTDC)\n#define GPIO_AF11_LTDC          ((uint8_t)0x0B)  /* LTDC Alternate Function mapping : available on STM32H7A3xxx/STM32H7B3xxx/STM32H7B0xxx and STM32H72xxx/STM32H73xxx */\n#endif /*LTDC*/\n#if defined(OCTOSPIM)\n#define GPIO_AF11_OCTOSPIM_P1   ((uint8_t)0x0B)  /* OCTOSPI Manager Port 1 Alternate Function mapping */\n#endif /* OCTOSPIM */\n\n/**\n  * @brief   AF 12 selection\n  */\n#define GPIO_AF12_FMC           ((uint8_t)0x0C)  /* FMC Alternate Function mapping     */\n#define GPIO_AF12_SDMMC1        ((uint8_t)0x0C)  /* SDMMC1 Alternate Function mapping  */\n#define GPIO_AF12_MDIOS         ((uint8_t)0x0C)  /* MDIOS Alternate Function mapping   */\n#define GPIO_AF12_COMP1         ((uint8_t)0x0C)  /* COMP1 Alternate Function mapping   */\n#define GPIO_AF12_COMP2         ((uint8_t)0x0C)  /* COMP2 Alternate Function mapping   */\n#define GPIO_AF12_TIM1          ((uint8_t)0x0C)  /* TIM1 Alternate Function mapping    */\n#define GPIO_AF12_TIM8          ((uint8_t)0x0C)  /* TIM8 Alternate Function mapping    */\n#if defined(LTDC)\n#define GPIO_AF12_LTDC          ((uint8_t)0x0C)  /* LTDC Alternate Function mapping    */\n#endif /*LTDC*/\n#if defined(USB2_OTG_FS)\n#define GPIO_AF12_OTG1_FS       ((uint8_t)0x0C)  /* OTG1_FS Alternate Function mapping */\n#endif /* USB2_OTG_FS */\n#if defined(OCTOSPIM)\n#define GPIO_AF12_OCTOSPIM_P1   ((uint8_t)0x0C)  /* OCTOSPI Manager Port 1 Alternate Function mapping */\n#endif /* OCTOSPIM */\n\n/**\n  * @brief   AF 13 selection\n  */\n#define GPIO_AF13_DCMI          ((uint8_t)0x0D)   /* DCMI Alternate Function mapping  */\n#define GPIO_AF13_COMP1         ((uint8_t)0x0D)   /* COMP1 Alternate Function mapping */\n#define GPIO_AF13_COMP2         ((uint8_t)0x0D)   /* COMP2 Alternate Function mapping */\n#if defined(LTDC)\n#define GPIO_AF13_LTDC          ((uint8_t)0x0D)   /* LTDC Alternate Function mapping  */\n#endif /*LTDC*/\n#if defined(DSI)\n#define GPIO_AF13_DSI           ((uint8_t)0x0D)   /* DSI Alternate Function mapping   */\n#endif /* DSI */\n#if defined(PSSI)\n#define GPIO_AF13_PSSI          ((uint8_t)0x0D)   /* PSSI Alternate Function mapping  */\n#endif /* PSSI */\n#define GPIO_AF13_TIM1          ((uint8_t)0x0D)    /* TIM1 Alternate Function mapping */\n#if defined(TIM23)\n#define GPIO_AF13_TIM23         ((uint8_t)0x0D)    /* TIM23 Alternate Function mapping */\n#endif  /*TIM23*/\n\n/**\n  * @brief   AF 14 selection\n  */\n#define GPIO_AF14_LTDC         ((uint8_t)0x0E)   /* LTDC Alternate Function mapping  */\n#define GPIO_AF14_UART5        ((uint8_t)0x0E)   /* UART5 Alternate Function mapping */\n#if defined(TIM24)\n#define GPIO_AF14_TIM24        ((uint8_t)0x0E)   /* TIM24 Alternate Function mapping */\n#endif  /*TIM24*/\n\n/**\n  * @brief   AF 15 selection\n  */\n#define GPIO_AF15_EVENTOUT      ((uint8_t)0x0F)  /* EVENTOUT Alternate Function mapping */\n\n#define IS_GPIO_AF(AF)   ((AF) <= (uint8_t)0x0F)\n\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup GPIOEx_Exported_Macros GPIO Exported Macros\n  * @{\n  */\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup GPIOEx_Exported_Functions GPIO Exported Functions\n  * @{\n  */\n/**\n  * @}\n  */\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup GPIOEx_Private_Constants GPIO Private Constants\n  * @{\n  */\n\n/**\n  * @brief   GPIO pin available on the platform\n  */\n/* Defines the available pins per GPIOs */\n#define GPIOA_PIN_AVAILABLE  GPIO_PIN_All\n#define GPIOB_PIN_AVAILABLE  GPIO_PIN_All\n#define GPIOC_PIN_AVAILABLE  GPIO_PIN_All\n#define GPIOD_PIN_AVAILABLE  GPIO_PIN_All\n#define GPIOE_PIN_AVAILABLE  GPIO_PIN_All\n#define GPIOF_PIN_AVAILABLE  GPIO_PIN_All\n#define GPIOG_PIN_AVAILABLE  GPIO_PIN_All\n#if defined(GPIOI)\n#define GPIOI_PIN_AVAILABLE  GPIO_PIN_All\n#endif /*GPIOI*/\n#if defined(GPIOI)\n#define GPIOJ_PIN_AVAILABLE  GPIO_PIN_All\n#else\n#define GPIOJ_PIN_AVAILABLE  (GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 )\n#endif /* GPIOI */\n#define GPIOH_PIN_AVAILABLE  GPIO_PIN_All\n#if defined(GPIOI)\n#define GPIOK_PIN_AVAILABLE  (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | \\\n                              GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)\n#else\n#define GPIOK_PIN_AVAILABLE  (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 )\n#endif /* GPIOI */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup GPIOEx_Private_Macros GPIO Private Macros\n  * @{\n  */\n/** @defgroup GPIOEx_Get_Port_Index GPIO Get Port Index\n  * @{\n  */\n#if defined(GPIOI)\n#define GPIO_GET_INDEX(__GPIOx__)  (((__GPIOx__) == (GPIOA))? 0UL :\\\n                                    ((__GPIOx__) == (GPIOB))? 1UL :\\\n                                    ((__GPIOx__) == (GPIOC))? 2UL :\\\n                                    ((__GPIOx__) == (GPIOD))? 3UL :\\\n                                    ((__GPIOx__) == (GPIOE))? 4UL :\\\n                                    ((__GPIOx__) == (GPIOF))? 5UL :\\\n                                    ((__GPIOx__) == (GPIOG))? 6UL :\\\n                                    ((__GPIOx__) == (GPIOH))? 7UL :\\\n                                    ((__GPIOx__) == (GPIOI))? 8UL :\\\n                                    ((__GPIOx__) == (GPIOJ))? 9UL : 10UL)\n#else\n#define GPIO_GET_INDEX(__GPIOx__)  (((__GPIOx__) == (GPIOA))? 0UL :\\\n                                    ((__GPIOx__) == (GPIOB))? 1UL :\\\n                                    ((__GPIOx__) == (GPIOC))? 2UL :\\\n                                    ((__GPIOx__) == (GPIOD))? 3UL :\\\n                                    ((__GPIOx__) == (GPIOE))? 4UL :\\\n                                    ((__GPIOx__) == (GPIOF))? 5UL :\\\n                                    ((__GPIOx__) == (GPIOG))? 6UL :\\\n                                    ((__GPIOx__) == (GPIOH))? 7UL :\\\n                                    ((__GPIOx__) == (GPIOJ))? 9UL : 10UL)\n#endif /* GPIOI */\n\n/**\n  * @}\n  */\n\n/** @defgroup GPIOEx_IS_Alternat_function_selection GPIO Check Alternate Function\n  * @{\n  */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup GPIOEx_Private_Functions GPIO Private Functions\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_GPIO_EX_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_hsem.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_hsem.h\n  * @author  MCD Application Team\n  * @brief   Header file of HSEM HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_HSEM_H\n#define STM32H7xx_HAL_HSEM_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n   * @{\n   */\n\n/** @addtogroup HSEM\n   * @{\n   */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup HSEM_Exported_Macros HSEM Exported Macros\n  * @{\n  */\n\n/**\n  * @brief  SemID to mask helper Macro.\n  * @param  __SEMID__: semaphore ID from 0 to 31\n  * @retval Semaphore Mask.\n  */\n#define __HAL_HSEM_SEMID_TO_MASK(__SEMID__) (1 << (__SEMID__))\n\n/**\n  * @brief  Enables the specified HSEM interrupts.\n  * @param  __SEM_MASK__: semaphores Mask\n  * @retval None.\n  */\n#if defined(DUAL_CORE)\n#define __HAL_HSEM_ENABLE_IT(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \\\n                                            (HSEM->C1IER |= (__SEM_MASK__)) : \\\n                                            (HSEM->C2IER |= (__SEM_MASK__)))\n#else\n#define __HAL_HSEM_ENABLE_IT(__SEM_MASK__) (HSEM->IER |= (__SEM_MASK__))\n#endif /* DUAL_CORE */\n/**\n  * @brief  Disables the specified HSEM interrupts.\n  * @param  __SEM_MASK__: semaphores Mask\n  * @retval None.\n  */\n#if defined(DUAL_CORE)\n#define __HAL_HSEM_DISABLE_IT(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \\\n                                             (HSEM->C1IER &= ~(__SEM_MASK__)) :       \\\n                                             (HSEM->C2IER &= ~(__SEM_MASK__)))\n#else\n#define __HAL_HSEM_DISABLE_IT(__SEM_MASK__) (HSEM->IER &= ~(__SEM_MASK__))\n#endif /* DUAL_CORE */\n\n/**\n  * @brief  Checks whether interrupt has occurred or not for semaphores specified by a mask.\n  * @param  __SEM_MASK__: semaphores Mask\n  * @retval semaphores Mask : Semaphores where an interrupt occurred.\n  */\n#if defined(DUAL_CORE)\n#define __HAL_HSEM_GET_IT(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \\\n                                         ((__SEM_MASK__) & HSEM->C1MISR) :        \\\n                                         ((__SEM_MASK__) & HSEM->C2MISR1))\n#else\n#define __HAL_HSEM_GET_IT(__SEM_MASK__) ((__SEM_MASK__) & HSEM->MISR)\n#endif /* DUAL_CORE */\n\n/**\n  * @brief  Get the semaphores release status flags.\n  * @param  __SEM_MASK__: semaphores Mask\n  * @retval semaphores Mask : Semaphores where Release flags rise.\n  */\n#if defined(DUAL_CORE)\n#define __HAL_HSEM_GET_FLAG(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \\\n                                           (__SEM_MASK__) & HSEM->C1ISR :           \\\n                                           (__SEM_MASK__) & HSEM->C2ISR)\n#else\n#define __HAL_HSEM_GET_FLAG(__SEM_MASK__) ((__SEM_MASK__) & HSEM->ISR)\n#endif /* DUAL_CORE */\n\n/**\n  * @brief  Clears the HSEM Interrupt flags.\n  * @param  __SEM_MASK__: semaphores Mask\n  * @retval None.\n  */\n#if defined(DUAL_CORE)\n#define __HAL_HSEM_CLEAR_FLAG(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \\\n                                             (HSEM->C1ICR |= (__SEM_MASK__)) :        \\\n                                             (HSEM->C2ICR |= (__SEM_MASK__)))\n#else\n#define __HAL_HSEM_CLEAR_FLAG(__SEM_MASK__) (HSEM->ICR |= (__SEM_MASK__))\n#endif /* DUAL_CORE */\n\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup HSEM_Exported_Functions HSEM Exported Functions\n  * @{\n  */\n\n/** @addtogroup HSEM_Exported_Functions_Group1 Take and Release functions\n  * @brief    HSEM Take and Release functions\n  * @{\n  */\n\n/* HSEM semaphore take (lock) using 2-Step  method ****************************/\nHAL_StatusTypeDef  HAL_HSEM_Take(uint32_t SemID, uint32_t ProcessID);\n/* HSEM semaphore fast take (lock) using 1-Step  method ***********************/\nHAL_StatusTypeDef  HAL_HSEM_FastTake(uint32_t SemID);\n/* HSEM Release  **************************************************************/\nvoid  HAL_HSEM_Release(uint32_t SemID, uint32_t ProcessID);\n/* HSEM Release All************************************************************/\nvoid HAL_HSEM_ReleaseAll(uint32_t Key, uint32_t CoreID);\n/* HSEM Check semaphore state Taken or not   **********************************/\nuint32_t HAL_HSEM_IsSemTaken(uint32_t SemID);\n\n/**\n  * @}\n  */\n\n/** @addtogroup HSEM_Exported_Functions_Group2 HSEM Set and Get Key functions\n  * @brief    HSEM Set and Get Key functions.\n  * @{\n  */\n/* HSEM Set Clear Key *********************************************************/\nvoid  HAL_HSEM_SetClearKey(uint32_t Key);\n/* HSEM Get Clear Key *********************************************************/\nuint32_t HAL_HSEM_GetClearKey(void);\n/**\n  * @}\n  */\n\n/** @addtogroup HSEM_Exported_Functions_Group3\n  * @brief   HSEM Notification functions\n  * @{\n  */\n/* HSEM Activate HSEM Notification (When a semaphore is released) ) *****************/\nvoid HAL_HSEM_ActivateNotification(uint32_t SemMask);\n/* HSEM Deactivate HSEM Notification (When a semaphore is released)  ****************/\nvoid HAL_HSEM_DeactivateNotification(uint32_t SemMask);\n/* HSEM Free Callback (When a semaphore is released)  *******************************/\nvoid HAL_HSEM_FreeCallback(uint32_t SemMask);\n/* HSEM IRQ Handler  **********************************************************/\nvoid HAL_HSEM_IRQHandler(void);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup HSEM_Private_Macros HSEM Private Macros\n  * @{\n  */\n\n#define IS_HSEM_SEMID(__SEMID__) ((__SEMID__) <= HSEM_SEMID_MAX )\n\n#define IS_HSEM_PROCESSID(__PROCESSID__) ((__PROCESSID__) <= HSEM_PROCESSID_MAX )\n\n#define IS_HSEM_KEY(__KEY__) ((__KEY__) <= HSEM_CLEAR_KEY_MAX )\n\n#if defined(DUAL_CORE)\n#define IS_HSEM_COREID(__COREID__) (((__COREID__) == HSEM_CPU1_COREID) || \\\n                                    ((__COREID__) == HSEM_CPU2_COREID))\n#else\n#define IS_HSEM_COREID(__COREID__) ((__COREID__) == HSEM_CPU1_COREID)\n#endif\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_HSEM_H */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_i2c.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_i2c.h\n  * @author  MCD Application Team\n  * @brief   Header file of I2C HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_I2C_H\n#define STM32H7xx_HAL_I2C_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup I2C\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup I2C_Exported_Types I2C Exported Types\n  * @{\n  */\n\n/** @defgroup I2C_Configuration_Structure_definition I2C Configuration Structure definition\n  * @brief  I2C Configuration Structure definition\n  * @{\n  */\ntypedef struct\n{\n  uint32_t Timing;              /*!< Specifies the I2C_TIMINGR_register value.\n                                     This parameter calculated by referring to I2C initialization section\n                                     in Reference manual */\n\n  uint32_t OwnAddress1;         /*!< Specifies the first device own address.\n                                     This parameter can be a 7-bit or 10-bit address. */\n\n  uint32_t AddressingMode;      /*!< Specifies if 7-bit or 10-bit addressing mode is selected.\n                                     This parameter can be a value of @ref I2C_ADDRESSING_MODE */\n\n  uint32_t DualAddressMode;     /*!< Specifies if dual addressing mode is selected.\n                                     This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */\n\n  uint32_t OwnAddress2;         /*!< Specifies the second device own address if dual addressing mode is selected\n                                     This parameter can be a 7-bit address. */\n\n  uint32_t OwnAddress2Masks;    /*!< Specifies the acknowledge mask address second device own address if dual addressing\n                                     mode is selected.\n                                     This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */\n\n  uint32_t GeneralCallMode;     /*!< Specifies if general call mode is selected.\n                                     This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */\n\n  uint32_t NoStretchMode;       /*!< Specifies if nostretch mode is selected.\n                                     This parameter can be a value of @ref I2C_NOSTRETCH_MODE */\n\n} I2C_InitTypeDef;\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_state_structure_definition HAL state structure definition\n  * @brief  HAL State structure definition\n  * @note  HAL I2C State value coding follow below described bitmap :\\n\n  *          b7-b6  Error information\\n\n  *             00 : No Error\\n\n  *             01 : Abort (Abort user request on going)\\n\n  *             10 : Timeout\\n\n  *             11 : Error\\n\n  *          b5     Peripheral initialization status\\n\n  *             0  : Reset (peripheral not initialized)\\n\n  *             1  : Init done (peripheral initialized and ready to use. HAL I2C Init function called)\\n\n  *          b4     (not used)\\n\n  *             x  : Should be set to 0\\n\n  *          b3\\n\n  *             0  : Ready or Busy (No Listen mode ongoing)\\n\n  *             1  : Listen (peripheral in Address Listen Mode)\\n\n  *          b2     Intrinsic process state\\n\n  *             0  : Ready\\n\n  *             1  : Busy (peripheral busy with some configuration or internal operations)\\n\n  *          b1     Rx state\\n\n  *             0  : Ready (no Rx operation ongoing)\\n\n  *             1  : Busy (Rx operation ongoing)\\n\n  *          b0     Tx state\\n\n  *             0  : Ready (no Tx operation ongoing)\\n\n  *             1  : Busy (Tx operation ongoing)\n  * @{\n  */\ntypedef enum\n{\n  HAL_I2C_STATE_RESET             = 0x00U,   /*!< Peripheral is not yet Initialized         */\n  HAL_I2C_STATE_READY             = 0x20U,   /*!< Peripheral Initialized and ready for use  */\n  HAL_I2C_STATE_BUSY              = 0x24U,   /*!< An internal process is ongoing            */\n  HAL_I2C_STATE_BUSY_TX           = 0x21U,   /*!< Data Transmission process is ongoing      */\n  HAL_I2C_STATE_BUSY_RX           = 0x22U,   /*!< Data Reception process is ongoing         */\n  HAL_I2C_STATE_LISTEN            = 0x28U,   /*!< Address Listen Mode is ongoing            */\n  HAL_I2C_STATE_BUSY_TX_LISTEN    = 0x29U,   /*!< Address Listen Mode and Data Transmission\n                                                 process is ongoing                         */\n  HAL_I2C_STATE_BUSY_RX_LISTEN    = 0x2AU,   /*!< Address Listen Mode and Data Reception\n                                                 process is ongoing                         */\n  HAL_I2C_STATE_ABORT             = 0x60U,   /*!< Abort user request ongoing                */\n  HAL_I2C_STATE_TIMEOUT           = 0xA0U,   /*!< Timeout state                             */\n  HAL_I2C_STATE_ERROR             = 0xE0U    /*!< Error                                     */\n\n} HAL_I2C_StateTypeDef;\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_mode_structure_definition HAL mode structure definition\n  * @brief  HAL Mode structure definition\n  * @note  HAL I2C Mode value coding follow below described bitmap :\\n\n  *          b7     (not used)\\n\n  *             x  : Should be set to 0\\n\n  *          b6\\n\n  *             0  : None\\n\n  *             1  : Memory (HAL I2C communication is in Memory Mode)\\n\n  *          b5\\n\n  *             0  : None\\n\n  *             1  : Slave (HAL I2C communication is in Slave Mode)\\n\n  *          b4\\n\n  *             0  : None\\n\n  *             1  : Master (HAL I2C communication is in Master Mode)\\n\n  *          b3-b2-b1-b0  (not used)\\n\n  *             xxxx : Should be set to 0000\n  * @{\n  */\ntypedef enum\n{\n  HAL_I2C_MODE_NONE               = 0x00U,   /*!< No I2C communication on going             */\n  HAL_I2C_MODE_MASTER             = 0x10U,   /*!< I2C communication is in Master Mode       */\n  HAL_I2C_MODE_SLAVE              = 0x20U,   /*!< I2C communication is in Slave Mode        */\n  HAL_I2C_MODE_MEM                = 0x40U    /*!< I2C communication is in Memory Mode       */\n\n} HAL_I2C_ModeTypeDef;\n\n/**\n  * @}\n  */\n\n/** @defgroup I2C_Error_Code_definition I2C Error Code definition\n  * @brief  I2C Error Code definition\n  * @{\n  */\n#define HAL_I2C_ERROR_NONE      (0x00000000U)    /*!< No error              */\n#define HAL_I2C_ERROR_BERR      (0x00000001U)    /*!< BERR error            */\n#define HAL_I2C_ERROR_ARLO      (0x00000002U)    /*!< ARLO error            */\n#define HAL_I2C_ERROR_AF        (0x00000004U)    /*!< ACKF error            */\n#define HAL_I2C_ERROR_OVR       (0x00000008U)    /*!< OVR error             */\n#define HAL_I2C_ERROR_DMA       (0x00000010U)    /*!< DMA transfer error    */\n#define HAL_I2C_ERROR_TIMEOUT   (0x00000020U)    /*!< Timeout error         */\n#define HAL_I2C_ERROR_SIZE      (0x00000040U)    /*!< Size Management error */\n#define HAL_I2C_ERROR_DMA_PARAM (0x00000080U)    /*!< DMA Parameter Error   */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n#define HAL_I2C_ERROR_INVALID_CALLBACK  (0x00000100U)    /*!< Invalid Callback error */\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n#define HAL_I2C_ERROR_INVALID_PARAM     (0x00000200U)    /*!< Invalid Parameters error  */\n/**\n  * @}\n  */\n\n/** @defgroup I2C_handle_Structure_definition I2C handle Structure definition\n  * @brief  I2C handle Structure definition\n  * @{\n  */\ntypedef struct __I2C_HandleTypeDef\n{\n  I2C_TypeDef                *Instance;      /*!< I2C registers base address                */\n\n  I2C_InitTypeDef            Init;           /*!< I2C communication parameters              */\n\n  uint8_t                    *pBuffPtr;      /*!< Pointer to I2C transfer buffer            */\n\n  uint16_t                   XferSize;       /*!< I2C transfer size                         */\n\n  __IO uint16_t              XferCount;      /*!< I2C transfer counter                      */\n\n  __IO uint32_t              XferOptions;    /*!< I2C sequantial transfer options, this parameter can\n                                                  be a value of @ref I2C_XFEROPTIONS */\n\n  __IO uint32_t              PreviousState;  /*!< I2C communication Previous state          */\n\n  HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);\n  /*!< I2C transfer IRQ handler function pointer */\n\n  DMA_HandleTypeDef          *hdmatx;        /*!< I2C Tx DMA handle parameters              */\n\n  DMA_HandleTypeDef          *hdmarx;        /*!< I2C Rx DMA handle parameters              */\n\n  HAL_LockTypeDef            Lock;           /*!< I2C locking object                        */\n\n  __IO HAL_I2C_StateTypeDef  State;          /*!< I2C communication state                   */\n\n  __IO HAL_I2C_ModeTypeDef   Mode;           /*!< I2C communication mode                    */\n\n  __IO uint32_t              ErrorCode;      /*!< I2C Error code                            */\n\n  __IO uint32_t              AddrEventCount; /*!< I2C Address Event counter                 */\n\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n  void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Master Tx Transfer completed callback */\n  void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Master Rx Transfer completed callback */\n  void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Slave Tx Transfer completed callback  */\n  void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Slave Rx Transfer completed callback  */\n  void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Listen Complete callback              */\n  void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Memory Tx Transfer completed callback */\n  void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Memory Rx Transfer completed callback */\n  void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Error callback                        */\n  void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Abort callback                        */\n\n  void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode);\n  /*!< I2C Slave Address Match callback */\n\n  void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Msp Init callback                     */\n  void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c);\n  /*!< I2C Msp DeInit callback                   */\n\n#endif  /* USE_HAL_I2C_REGISTER_CALLBACKS */\n} I2C_HandleTypeDef;\n\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n/**\n  * @brief  HAL I2C Callback ID enumeration definition\n  */\ntypedef enum\n{\n  HAL_I2C_MASTER_TX_COMPLETE_CB_ID      = 0x00U,    /*!< I2C Master Tx Transfer completed callback ID  */\n  HAL_I2C_MASTER_RX_COMPLETE_CB_ID      = 0x01U,    /*!< I2C Master Rx Transfer completed callback ID  */\n  HAL_I2C_SLAVE_TX_COMPLETE_CB_ID       = 0x02U,    /*!< I2C Slave Tx Transfer completed callback ID   */\n  HAL_I2C_SLAVE_RX_COMPLETE_CB_ID       = 0x03U,    /*!< I2C Slave Rx Transfer completed callback ID   */\n  HAL_I2C_LISTEN_COMPLETE_CB_ID         = 0x04U,    /*!< I2C Listen Complete callback ID               */\n  HAL_I2C_MEM_TX_COMPLETE_CB_ID         = 0x05U,    /*!< I2C Memory Tx Transfer callback ID            */\n  HAL_I2C_MEM_RX_COMPLETE_CB_ID         = 0x06U,    /*!< I2C Memory Rx Transfer completed callback ID  */\n  HAL_I2C_ERROR_CB_ID                   = 0x07U,    /*!< I2C Error callback ID                         */\n  HAL_I2C_ABORT_CB_ID                   = 0x08U,    /*!< I2C Abort callback ID                         */\n\n  HAL_I2C_MSPINIT_CB_ID                 = 0x09U,    /*!< I2C Msp Init callback ID                      */\n  HAL_I2C_MSPDEINIT_CB_ID               = 0x0AU     /*!< I2C Msp DeInit callback ID                    */\n\n} HAL_I2C_CallbackIDTypeDef;\n\n/**\n  * @brief  HAL I2C Callback pointer definition\n  */\ntypedef  void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c);\n/*!< pointer to an I2C callback function */\ntypedef  void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection,\n                                          uint16_t AddrMatchCode);\n/*!< pointer to an I2C Address Match callback function */\n\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup I2C_Exported_Constants I2C Exported Constants\n  * @{\n  */\n\n/** @defgroup I2C_XFEROPTIONS  I2C Sequential Transfer Options\n  * @{\n  */\n#define I2C_FIRST_FRAME                 ((uint32_t)I2C_SOFTEND_MODE)\n#define I2C_FIRST_AND_NEXT_FRAME        ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE))\n#define I2C_NEXT_FRAME                  ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE))\n#define I2C_FIRST_AND_LAST_FRAME        ((uint32_t)I2C_AUTOEND_MODE)\n#define I2C_LAST_FRAME                  ((uint32_t)I2C_AUTOEND_MODE)\n#define I2C_LAST_FRAME_NO_STOP          ((uint32_t)I2C_SOFTEND_MODE)\n\n/* List of XferOptions in usage of :\n * 1- Restart condition in all use cases (direction change or not)\n */\n#define  I2C_OTHER_FRAME                (0x000000AAU)\n#define  I2C_OTHER_AND_LAST_FRAME       (0x0000AA00U)\n/**\n  * @}\n  */\n\n/** @defgroup I2C_ADDRESSING_MODE I2C Addressing Mode\n  * @{\n  */\n#define I2C_ADDRESSINGMODE_7BIT         (0x00000001U)\n#define I2C_ADDRESSINGMODE_10BIT        (0x00000002U)\n/**\n  * @}\n  */\n\n/** @defgroup I2C_DUAL_ADDRESSING_MODE I2C Dual Addressing Mode\n  * @{\n  */\n#define I2C_DUALADDRESS_DISABLE         (0x00000000U)\n#define I2C_DUALADDRESS_ENABLE          I2C_OAR2_OA2EN\n/**\n  * @}\n  */\n\n/** @defgroup I2C_OWN_ADDRESS2_MASKS I2C Own Address2 Masks\n  * @{\n  */\n#define I2C_OA2_NOMASK                  ((uint8_t)0x00U)\n#define I2C_OA2_MASK01                  ((uint8_t)0x01U)\n#define I2C_OA2_MASK02                  ((uint8_t)0x02U)\n#define I2C_OA2_MASK03                  ((uint8_t)0x03U)\n#define I2C_OA2_MASK04                  ((uint8_t)0x04U)\n#define I2C_OA2_MASK05                  ((uint8_t)0x05U)\n#define I2C_OA2_MASK06                  ((uint8_t)0x06U)\n#define I2C_OA2_MASK07                  ((uint8_t)0x07U)\n/**\n  * @}\n  */\n\n/** @defgroup I2C_GENERAL_CALL_ADDRESSING_MODE I2C General Call Addressing Mode\n  * @{\n  */\n#define I2C_GENERALCALL_DISABLE         (0x00000000U)\n#define I2C_GENERALCALL_ENABLE          I2C_CR1_GCEN\n/**\n  * @}\n  */\n\n/** @defgroup I2C_NOSTRETCH_MODE I2C No-Stretch Mode\n  * @{\n  */\n#define I2C_NOSTRETCH_DISABLE           (0x00000000U)\n#define I2C_NOSTRETCH_ENABLE            I2C_CR1_NOSTRETCH\n/**\n  * @}\n  */\n\n/** @defgroup I2C_MEMORY_ADDRESS_SIZE I2C Memory Address Size\n  * @{\n  */\n#define I2C_MEMADD_SIZE_8BIT            (0x00000001U)\n#define I2C_MEMADD_SIZE_16BIT           (0x00000002U)\n/**\n  * @}\n  */\n\n/** @defgroup I2C_XFERDIRECTION I2C Transfer Direction Master Point of View\n  * @{\n  */\n#define I2C_DIRECTION_TRANSMIT          (0x00000000U)\n#define I2C_DIRECTION_RECEIVE           (0x00000001U)\n/**\n  * @}\n  */\n\n/** @defgroup I2C_RELOAD_END_MODE I2C Reload End Mode\n  * @{\n  */\n#define  I2C_RELOAD_MODE                I2C_CR2_RELOAD\n#define  I2C_AUTOEND_MODE               I2C_CR2_AUTOEND\n#define  I2C_SOFTEND_MODE               (0x00000000U)\n/**\n  * @}\n  */\n\n/** @defgroup I2C_START_STOP_MODE I2C Start or Stop Mode\n  * @{\n  */\n#define  I2C_NO_STARTSTOP               (0x00000000U)\n#define  I2C_GENERATE_STOP              (uint32_t)(0x80000000U | I2C_CR2_STOP)\n#define  I2C_GENERATE_START_READ        (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN)\n#define  I2C_GENERATE_START_WRITE       (uint32_t)(0x80000000U | I2C_CR2_START)\n/**\n  * @}\n  */\n\n/** @defgroup I2C_Interrupt_configuration_definition I2C Interrupt configuration definition\n  * @brief I2C Interrupt definition\n  *        Elements values convention: 0xXXXXXXXX\n  *           - XXXXXXXX  : Interrupt control mask\n  * @{\n  */\n#define I2C_IT_ERRI                     I2C_CR1_ERRIE\n#define I2C_IT_TCI                      I2C_CR1_TCIE\n#define I2C_IT_STOPI                    I2C_CR1_STOPIE\n#define I2C_IT_NACKI                    I2C_CR1_NACKIE\n#define I2C_IT_ADDRI                    I2C_CR1_ADDRIE\n#define I2C_IT_RXI                      I2C_CR1_RXIE\n#define I2C_IT_TXI                      I2C_CR1_TXIE\n/**\n  * @}\n  */\n\n/** @defgroup I2C_Flag_definition I2C Flag definition\n  * @{\n  */\n#define I2C_FLAG_TXE                    I2C_ISR_TXE\n#define I2C_FLAG_TXIS                   I2C_ISR_TXIS\n#define I2C_FLAG_RXNE                   I2C_ISR_RXNE\n#define I2C_FLAG_ADDR                   I2C_ISR_ADDR\n#define I2C_FLAG_AF                     I2C_ISR_NACKF\n#define I2C_FLAG_STOPF                  I2C_ISR_STOPF\n#define I2C_FLAG_TC                     I2C_ISR_TC\n#define I2C_FLAG_TCR                    I2C_ISR_TCR\n#define I2C_FLAG_BERR                   I2C_ISR_BERR\n#define I2C_FLAG_ARLO                   I2C_ISR_ARLO\n#define I2C_FLAG_OVR                    I2C_ISR_OVR\n#define I2C_FLAG_PECERR                 I2C_ISR_PECERR\n#define I2C_FLAG_TIMEOUT                I2C_ISR_TIMEOUT\n#define I2C_FLAG_ALERT                  I2C_ISR_ALERT\n#define I2C_FLAG_BUSY                   I2C_ISR_BUSY\n#define I2C_FLAG_DIR                    I2C_ISR_DIR\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macros -----------------------------------------------------------*/\n\n/** @defgroup I2C_Exported_Macros I2C Exported Macros\n  * @{\n  */\n\n/** @brief Reset I2C handle state.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @retval None\n  */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                do{                                             \\\n                                                                    (__HANDLE__)->State = HAL_I2C_STATE_RESET;  \\\n                                                                    (__HANDLE__)->MspInitCallback = NULL;       \\\n                                                                    (__HANDLE__)->MspDeInitCallback = NULL;     \\\n                                                                  } while(0)\n#else\n#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                ((__HANDLE__)->State = HAL_I2C_STATE_RESET)\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n\n/** @brief  Enable the specified I2C interrupt.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @param  __INTERRUPT__ specifies the interrupt source to enable.\n  *        This parameter can be one of the following values:\n  *            @arg @ref I2C_IT_ERRI  Errors interrupt enable\n  *            @arg @ref I2C_IT_TCI   Transfer complete interrupt enable\n  *            @arg @ref I2C_IT_STOPI STOP detection interrupt enable\n  *            @arg @ref I2C_IT_NACKI NACK received interrupt enable\n  *            @arg @ref I2C_IT_ADDRI Address match interrupt enable\n  *            @arg @ref I2C_IT_RXI   RX interrupt enable\n  *            @arg @ref I2C_IT_TXI   TX interrupt enable\n  *\n  * @retval None\n  */\n#define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__)          ((__HANDLE__)->Instance->CR1 |= (__INTERRUPT__))\n\n/** @brief  Disable the specified I2C interrupt.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @param  __INTERRUPT__ specifies the interrupt source to disable.\n  *        This parameter can be one of the following values:\n  *            @arg @ref I2C_IT_ERRI  Errors interrupt enable\n  *            @arg @ref I2C_IT_TCI   Transfer complete interrupt enable\n  *            @arg @ref I2C_IT_STOPI STOP detection interrupt enable\n  *            @arg @ref I2C_IT_NACKI NACK received interrupt enable\n  *            @arg @ref I2C_IT_ADDRI Address match interrupt enable\n  *            @arg @ref I2C_IT_RXI   RX interrupt enable\n  *            @arg @ref I2C_IT_TXI   TX interrupt enable\n  *\n  * @retval None\n  */\n#define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__)         ((__HANDLE__)->Instance->CR1 &= (~(__INTERRUPT__)))\n\n/** @brief  Check whether the specified I2C interrupt source is enabled or not.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @param  __INTERRUPT__ specifies the I2C interrupt source to check.\n  *          This parameter can be one of the following values:\n  *            @arg @ref I2C_IT_ERRI  Errors interrupt enable\n  *            @arg @ref I2C_IT_TCI   Transfer complete interrupt enable\n  *            @arg @ref I2C_IT_STOPI STOP detection interrupt enable\n  *            @arg @ref I2C_IT_NACKI NACK received interrupt enable\n  *            @arg @ref I2C_IT_ADDRI Address match interrupt enable\n  *            @arg @ref I2C_IT_RXI   RX interrupt enable\n  *            @arg @ref I2C_IT_TXI   TX interrupt enable\n  *\n  * @retval The new state of __INTERRUPT__ (SET or RESET).\n  */\n#define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)      ((((__HANDLE__)->Instance->CR1 & \\\n                                                                   (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)\n\n/** @brief  Check whether the specified I2C flag is set or not.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @param  __FLAG__ specifies the flag to check.\n  *        This parameter can be one of the following values:\n  *            @arg @ref I2C_FLAG_TXE     Transmit data register empty\n  *            @arg @ref I2C_FLAG_TXIS    Transmit interrupt status\n  *            @arg @ref I2C_FLAG_RXNE    Receive data register not empty\n  *            @arg @ref I2C_FLAG_ADDR    Address matched (slave mode)\n  *            @arg @ref I2C_FLAG_AF      Acknowledge failure received flag\n  *            @arg @ref I2C_FLAG_STOPF   STOP detection flag\n  *            @arg @ref I2C_FLAG_TC      Transfer complete (master mode)\n  *            @arg @ref I2C_FLAG_TCR     Transfer complete reload\n  *            @arg @ref I2C_FLAG_BERR    Bus error\n  *            @arg @ref I2C_FLAG_ARLO    Arbitration lost\n  *            @arg @ref I2C_FLAG_OVR     Overrun/Underrun\n  *            @arg @ref I2C_FLAG_PECERR  PEC error in reception\n  *            @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag\n  *            @arg @ref I2C_FLAG_ALERT   SMBus alert\n  *            @arg @ref I2C_FLAG_BUSY    Bus busy\n  *            @arg @ref I2C_FLAG_DIR     Transfer direction (slave mode)\n  *\n  * @retval The new state of __FLAG__ (SET or RESET).\n  */\n#define I2C_FLAG_MASK  (0x0001FFFFU)\n#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & \\\n                                                    (__FLAG__)) == (__FLAG__)) ? SET : RESET)\n\n/** @brief  Clear the I2C pending flags which are cleared by writing 1 in a specific bit.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @param  __FLAG__ specifies the flag to clear.\n  *          This parameter can be any combination of the following values:\n  *            @arg @ref I2C_FLAG_TXE     Transmit data register empty\n  *            @arg @ref I2C_FLAG_ADDR    Address matched (slave mode)\n  *            @arg @ref I2C_FLAG_AF      Acknowledge failure received flag\n  *            @arg @ref I2C_FLAG_STOPF   STOP detection flag\n  *            @arg @ref I2C_FLAG_BERR    Bus error\n  *            @arg @ref I2C_FLAG_ARLO    Arbitration lost\n  *            @arg @ref I2C_FLAG_OVR     Overrun/Underrun\n  *            @arg @ref I2C_FLAG_PECERR  PEC error in reception\n  *            @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag\n  *            @arg @ref I2C_FLAG_ALERT   SMBus alert\n  *\n  * @retval None\n  */\n#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? \\\n                                                    ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \\\n                                                    ((__HANDLE__)->Instance->ICR = (__FLAG__)))\n\n/** @brief  Enable the specified I2C peripheral.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @retval None\n  */\n#define __HAL_I2C_ENABLE(__HANDLE__)                         (SET_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))\n\n/** @brief  Disable the specified I2C peripheral.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @retval None\n  */\n#define __HAL_I2C_DISABLE(__HANDLE__)                        (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))\n\n/** @brief  Generate a Non-Acknowledge I2C peripheral in Slave mode.\n  * @param  __HANDLE__ specifies the I2C Handle.\n  * @retval None\n  */\n#define __HAL_I2C_GENERATE_NACK(__HANDLE__)                  (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK))\n/**\n  * @}\n  */\n\n/* Include I2C HAL Extended module */\n#include \"stm32h7xx_hal_i2c_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup I2C_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions\n  * @{\n  */\n/* Initialization and de-initialization functions******************************/\nHAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c);\nHAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c);\n\n/* Callbacks Register/UnRegister functions  ***********************************/\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\nHAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID,\n                                           pI2C_CallbackTypeDef pCallback);\nHAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID);\n\nHAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback);\nHAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n/**\n  * @}\n  */\n\n/** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions\n  * @{\n  */\n/* IO operation functions  ****************************************************/\n/******* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                          uint16_t Size, uint32_t Timeout);\nHAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                         uint16_t Size, uint32_t Timeout);\nHAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                         uint32_t Timeout);\nHAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                        uint32_t Timeout);\nHAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                    uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);\nHAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                   uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);\nHAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials,\n                                        uint32_t Timeout);\n\n/******* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                             uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                            uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\n\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                 uint16_t Size, uint32_t XferOptions);\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                uint16_t Size, uint32_t XferOptions);\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                                uint32_t XferOptions);\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                               uint32_t XferOptions);\nHAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c);\nHAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c);\nHAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress);\n\n/******* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                              uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                             uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                        uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\n\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                  uint16_t Size, uint32_t XferOptions);\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                 uint16_t Size, uint32_t XferOptions);\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                                 uint32_t XferOptions);\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                                uint32_t XferOptions);\n/**\n  * @}\n  */\n\n/** @addtogroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks\n  * @{\n  */\n/******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */\nvoid HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode);\nvoid HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c);\nvoid HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c);\n/**\n  * @}\n  */\n\n/** @addtogroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions\n  * @{\n  */\n/* Peripheral State, Mode and Error functions  *********************************/\nHAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c);\nHAL_I2C_ModeTypeDef  HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c);\nuint32_t             HAL_I2C_GetError(I2C_HandleTypeDef *hi2c);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup I2C_Private_Constants I2C Private Constants\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup I2C_Private_Macro I2C Private Macros\n  * @{\n  */\n\n#define IS_I2C_ADDRESSING_MODE(MODE)    (((MODE) == I2C_ADDRESSINGMODE_7BIT) || \\\n                                         ((MODE) == I2C_ADDRESSINGMODE_10BIT))\n\n#define IS_I2C_DUAL_ADDRESS(ADDRESS)    (((ADDRESS) == I2C_DUALADDRESS_DISABLE) || \\\n                                         ((ADDRESS) == I2C_DUALADDRESS_ENABLE))\n\n#define IS_I2C_OWN_ADDRESS2_MASK(MASK)  (((MASK) == I2C_OA2_NOMASK)  || \\\n                                         ((MASK) == I2C_OA2_MASK01) || \\\n                                         ((MASK) == I2C_OA2_MASK02) || \\\n                                         ((MASK) == I2C_OA2_MASK03) || \\\n                                         ((MASK) == I2C_OA2_MASK04) || \\\n                                         ((MASK) == I2C_OA2_MASK05) || \\\n                                         ((MASK) == I2C_OA2_MASK06) || \\\n                                         ((MASK) == I2C_OA2_MASK07))\n\n#define IS_I2C_GENERAL_CALL(CALL)       (((CALL) == I2C_GENERALCALL_DISABLE) || \\\n                                         ((CALL) == I2C_GENERALCALL_ENABLE))\n\n#define IS_I2C_NO_STRETCH(STRETCH)      (((STRETCH) == I2C_NOSTRETCH_DISABLE) || \\\n                                         ((STRETCH) == I2C_NOSTRETCH_ENABLE))\n\n#define IS_I2C_MEMADD_SIZE(SIZE)        (((SIZE) == I2C_MEMADD_SIZE_8BIT) || \\\n                                         ((SIZE) == I2C_MEMADD_SIZE_16BIT))\n\n#define IS_TRANSFER_MODE(MODE)          (((MODE) == I2C_RELOAD_MODE)   || \\\n                                         ((MODE) == I2C_AUTOEND_MODE) || \\\n                                         ((MODE) == I2C_SOFTEND_MODE))\n\n#define IS_TRANSFER_REQUEST(REQUEST)    (((REQUEST) == I2C_GENERATE_STOP)        || \\\n                                         ((REQUEST) == I2C_GENERATE_START_READ)  || \\\n                                         ((REQUEST) == I2C_GENERATE_START_WRITE) || \\\n                                         ((REQUEST) == I2C_NO_STARTSTOP))\n\n#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST)  (((REQUEST) == I2C_FIRST_FRAME)          || \\\n                                                   ((REQUEST) == I2C_FIRST_AND_NEXT_FRAME) || \\\n                                                   ((REQUEST) == I2C_NEXT_FRAME)           || \\\n                                                   ((REQUEST) == I2C_FIRST_AND_LAST_FRAME) || \\\n                                                   ((REQUEST) == I2C_LAST_FRAME)           || \\\n                                                   ((REQUEST) == I2C_LAST_FRAME_NO_STOP)   || \\\n                                                   IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))\n\n#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_OTHER_FRAME)     || \\\n                                                        ((REQUEST) == I2C_OTHER_AND_LAST_FRAME))\n\n#define I2C_RESET_CR2(__HANDLE__)                 ((__HANDLE__)->Instance->CR2 &= \\\n                                                   (uint32_t)~((uint32_t)(I2C_CR2_SADD   | I2C_CR2_HEAD10R | \\\n                                                                          I2C_CR2_NBYTES | I2C_CR2_RELOAD  | \\\n                                                                          I2C_CR2_RD_WRN)))\n\n#define I2C_GET_ADDR_MATCH(__HANDLE__)            ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) \\\n                                                              >> 16U))\n#define I2C_GET_DIR(__HANDLE__)                   ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) \\\n                                                             >> 16U))\n#define I2C_GET_STOP_MODE(__HANDLE__)             ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND)\n#define I2C_GET_OWN_ADDRESS1(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1))\n#define I2C_GET_OWN_ADDRESS2(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2))\n\n#define IS_I2C_OWN_ADDRESS1(ADDRESS1)             ((ADDRESS1) <= 0x000003FFU)\n#define IS_I2C_OWN_ADDRESS2(ADDRESS2)             ((ADDRESS2) <= (uint16_t)0x00FFU)\n\n#define I2C_MEM_ADD_MSB(__ADDRESS__)              ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & \\\n                                                                         (uint16_t)(0xFF00U))) >> 8U)))\n#define I2C_MEM_ADD_LSB(__ADDRESS__)              ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU))))\n\n#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? \\\n                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \\\n                                                                 (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & \\\n                                                                (~I2C_CR2_RD_WRN)) : \\\n                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \\\n                                                                 (I2C_CR2_ADD10) | (I2C_CR2_START)) & \\\n                                                                (~I2C_CR2_RD_WRN)))\n\n#define I2C_CHECK_FLAG(__ISR__, __FLAG__)         ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == \\\n                                                    ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET)\n#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__)      ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET)\n/**\n  * @}\n  */\n\n/* Private Functions ---------------------------------------------------------*/\n/** @defgroup I2C_Private_Functions I2C Private Functions\n  * @{\n  */\n/* Private functions are defined in stm32h7xx_hal_i2c.c file */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n\n#endif /* STM32H7xx_HAL_I2C_H */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_i2c_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_i2c_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of I2C HAL Extended module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_I2C_EX_H\n#define STM32H7xx_HAL_I2C_EX_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup I2CEx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants\n  * @{\n  */\n\n/** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter\n  * @{\n  */\n#define I2C_ANALOGFILTER_ENABLE         0x00000000U\n#define I2C_ANALOGFILTER_DISABLE        I2C_CR1_ANFOFF\n/**\n  * @}\n  */\n\n/** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus\n  * @{\n  */\n#define I2C_FMP_NOT_SUPPORTED           0xAAAA0000U                                     /*!< Fast Mode Plus not supported       */\n#define I2C_FASTMODEPLUS_PB6            SYSCFG_PMCR_I2C_PB6_FMP                        /*!< Enable Fast Mode Plus on PB6       */\n#define I2C_FASTMODEPLUS_PB7            SYSCFG_PMCR_I2C_PB7_FMP                        /*!< Enable Fast Mode Plus on PB7       */\n#define I2C_FASTMODEPLUS_PB8            SYSCFG_PMCR_I2C_PB8_FMP                        /*!< Enable Fast Mode Plus on PB8       */\n#define I2C_FASTMODEPLUS_PB9            SYSCFG_PMCR_I2C_PB9_FMP                        /*!< Enable Fast Mode Plus on PB9       */\n#define I2C_FASTMODEPLUS_I2C1           SYSCFG_PMCR_I2C1_FMP                           /*!< Enable Fast Mode Plus on I2C1 pins */\n#define I2C_FASTMODEPLUS_I2C2           SYSCFG_PMCR_I2C2_FMP                           /*!< Enable Fast Mode Plus on I2C2 pins */\n#define I2C_FASTMODEPLUS_I2C3           SYSCFG_PMCR_I2C3_FMP                           /*!< Enable Fast Mode Plus on I2C3 pins */\n#define I2C_FASTMODEPLUS_I2C4           SYSCFG_PMCR_I2C4_FMP                           /*!< Enable Fast Mode Plus on I2C4 pins */\n#if defined(SYSCFG_PMCR_I2C5_FMP)\n#define I2C_FASTMODEPLUS_I2C5           SYSCFG_PMCR_I2C5_FMP                           /*!< Enable Fast Mode Plus on I2C5 pins */\n#else\n#define I2C_FASTMODEPLUS_I2C5           (uint32_t)(0x00001000U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C5 not supported  */\n#endif /* SYSCFG_PMCR_I2C5_FMP */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions\n  * @{\n  */\n\n/** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions\n  * @{\n  */\n/* Peripheral Control functions  ************************************************/\nHAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter);\nHAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter);\n/**\n  * @}\n  */\n\n/** @addtogroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions\n  * @{\n  */\nHAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c);\nHAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c);\n/**\n  * @}\n  */\n\n/** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions\n  * @{\n  */\nvoid HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);\nvoid HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup I2CEx_Private_Constants I2C Extended Private Constants\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup I2CEx_Private_Macro I2C Extended Private Macros\n  * @{\n  */\n#define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \\\n                                         ((FILTER) == I2C_ANALOGFILTER_DISABLE))\n\n#define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)\n\n#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \\\n                                         (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \\\n                                         (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \\\n                                         (((__CONFIG__) & I2C_FASTMODEPLUS_PB9)  == I2C_FASTMODEPLUS_PB9)  || \\\n                                         (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \\\n                                         (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \\\n                                         (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \\\n                                         (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4))\n/**\n  * @}\n  */\n\n/* Private Functions ---------------------------------------------------------*/\n/** @defgroup I2CEx_Private_Functions I2C Extended Private Functions\n  * @{\n  */\n/* Private functions are defined in stm32h7xx_hal_i2c_ex.c file */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_I2C_EX_H */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_mdma.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_mdma.h\n  * @author  MCD Application Team\n  * @brief   Header file of DMA HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_MDMA_H\n#define STM32H7xx_HAL_MDMA_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup MDMA\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n\n/** @defgroup MDMA_Exported_Types MDMA Exported Types\n  * @brief    MDMA Exported Types\n  * @{\n  */\n\n/**\n  * @brief  MDMA Configuration Structure definition\n  */\ntypedef struct\n{\n\n  uint32_t Request;                 /*!< Specifies the MDMA request.\n                                        This parameter can be a value of @ref MDMA_Request_selection*/\n\n  uint32_t TransferTriggerMode;     /*!< Specifies the Trigger Transfer mode : each request triggers a :\n                                         a buffer transfer, a block transfer, a repeated block transfer or a linked list transfer\n                                         This parameter can be a value of @ref MDMA_Transfer_TriggerMode  */\n\n  uint32_t Priority;                 /*!< Specifies the software priority for the MDMAy channelx.\n                                         This parameter can be a value of @ref MDMA_Priority_level */\n\n  uint32_t Endianness;                /*!< Specifies if the MDMA transactions preserve the Little endianness.\n                                         This parameter can be a value of @ref MDMA_Endianness */\n\n  uint32_t SourceInc;                /*!< Specifies if the Source increment mode .\n                                         This parameter can be a value of @ref MDMA_Source_increment_mode */\n\n  uint32_t DestinationInc;           /*!< Specifies if the Destination increment mode .\n                                         This parameter can be a value of @ref MDMA_Destination_increment_mode */\n\n  uint32_t SourceDataSize;           /*!< Specifies the source data size.\n                                         This parameter can be a value of @ref MDMA_Source_data_size */\n\n  uint32_t DestDataSize;             /*!< Specifies the destination data size.\n                                          This parameter can be a value of @ref MDMA_Destination_data_size */\n\n\n  uint32_t DataAlignment;            /*!< Specifies the source to destination Memory data packing/padding mode.\n                                            This parameter can be a value of @ref MDMA_data_Alignment */\n\n  uint32_t BufferTransferLength;      /*!< Specifies the buffer Transfer Length (number of bytes),\n                                          this is the number of bytes to be transferred in a single transfer (1 byte to 128 bytes)*/\n\n  uint32_t SourceBurst;              /*!< Specifies the Burst transfer configuration for the source memory transfers.\n                                         It specifies the amount of data to be transferred in a single non interruptible\n                                         transaction.\n                                         This parameter can be a value of @ref MDMA_Source_burst\n                                         @note : the burst may be FIXED/INCR based on SourceInc value ,\n                                         the BURST must be programmed as to ensure that the burst size will be lower than than\n                                         BufferTransferLength */\n\n  uint32_t DestBurst;                 /*!< Specifies the Burst transfer configuration for the destination memory transfers.\n                                           It specifies the amount of data to be transferred in a single non interruptible\n                                           transaction.\n                                           This parameter can be a value of @ref MDMA_Destination_burst\n                                           @note : the burst may be FIXED/INCR based on DestinationInc value ,\n                                           the BURST must be programmed as to ensure that the burst size will be lower than than\n                                           BufferTransferLength */\n\n  int32_t SourceBlockAddressOffset;   /*!< this field specifies the Next block source address offset\n                                           signed value : if > 0 then  increment the next block source Address by offset from where the last block ends\n                                                          if < 0 then  decrement the next block source Address by offset from where the last block ends\n                                                          if == 0, the next block source address starts from where the last block ends\n                                       */\n\n\n  int32_t DestBlockAddressOffset;      /*!< this field specifies the Next block destination address offset\n                                           signed value : if > 0 then  increment the next block destination Address by offset from where the last block ends\n                                                          if < 0 then  decrement the next block destination Address by offset from where the last block ends\n                                                          if == 0, the next block destination address starts from where the last block ends\n                                       */\n\n}MDMA_InitTypeDef;\n\n/**\n  * @brief  HAL MDMA linked list node structure definition\n  * @note   The Linked list node allows to define a new MDMA configuration\n  *         (CTCR ,CBNDTR ,CSAR ,CDAR ,CBRUR, CLAR, CTBR, CMAR and CMDR registers).\n  *         When CLAR register is configured to a non NULL value , each time a transfer ends,\n  *         a new configuration (linked list node) is automatically loaded from the address given in CLAR register.\n  */\ntypedef struct\n{\n  __IO uint32_t CTCR;     /*!< New CTCR register configuration for the given MDMA linked list node   */\n  __IO uint32_t CBNDTR;   /*!< New CBNDTR register configuration for the given MDMA linked list node */\n  __IO uint32_t CSAR;     /*!< New CSAR register configuration for the given MDMA linked list node   */\n  __IO uint32_t CDAR;     /*!< New CDAR register configuration for the given MDMA linked list node   */\n  __IO uint32_t CBRUR;    /*!< New CBRUR register configuration for the given MDMA linked list node  */\n  __IO uint32_t CLAR;     /*!< New CLAR register configuration for the given MDMA linked list node   */\n  __IO uint32_t CTBR;     /*!< New CTBR register configuration for the given MDMA linked list node   */\n  __IO uint32_t Reserved; /*!< Reserved register                                                     */\n  __IO uint32_t CMAR;     /*!< New CMAR register configuration for the given MDMA linked list node   */\n  __IO uint32_t CMDR;     /*!< New CMDR register configuration for the given MDMA linked list node   */\n\n}MDMA_LinkNodeTypeDef;\n\n/**\n  * @brief  HAL MDMA linked list node configuration structure definition\n  * @note   used with HAL_MDMA_LinkedList_CreateNode function\n  */\ntypedef struct\n{\n  MDMA_InitTypeDef Init;            /*!< configuration of the specified MDMA Linked List Node    */\n  uint32_t         SrcAddress;      /*!< The source memory address for the Linked list Node      */\n  uint32_t         DstAddress;      /*!< The destination memory address for the Linked list Node */\n  uint32_t         BlockDataLength; /*!< The data length of a block in bytes                     */\n  uint32_t         BlockCount;      /*!< The number of blocks to be transferred                  */\n\n  uint32_t PostRequestMaskAddress;  /*!< specifies the address to be updated (written) with PostRequestMaskData after a request is served.\n                                         PostRequestMaskAddress and PostRequestMaskData could be used to automatically clear a peripheral flag when the request is served  */\n\n  uint32_t PostRequestMaskData;     /*!< specifies the value to be written to PostRequestMaskAddress after a request is served.\n                                         PostRequestMaskAddress and PostRequestMaskData could be used to automatically clear a peripheral flag when the request is served  */\n\n\n}MDMA_LinkNodeConfTypeDef;\n\n\n/**\n  * @brief  HAL MDMA State structure definition\n  */\ntypedef enum\n{\n  HAL_MDMA_STATE_RESET               = 0x00U,  /*!< MDMA not yet initialized or disabled */\n  HAL_MDMA_STATE_READY               = 0x01U,  /*!< MDMA initialized and ready for use   */\n  HAL_MDMA_STATE_BUSY                = 0x02U,  /*!< MDMA process is ongoing              */\n  HAL_MDMA_STATE_ERROR               = 0x03U,  /*!< MDMA error state                     */\n  HAL_MDMA_STATE_ABORT               = 0x04U,  /*!< MDMA Abort state                     */\n\n}HAL_MDMA_StateTypeDef;\n\n/**\n  * @brief  HAL MDMA Level Complete structure definition\n  */\ntypedef enum\n{\n  HAL_MDMA_FULL_TRANSFER         = 0x00U,   /*!< Full transfer         */\n  HAL_MDMA_BUFFER_TRANSFER       = 0x01U,   /*!< Buffer Transfer       */\n  HAL_MDMA_BLOCK_TRANSFER        = 0x02U,   /*!< Block Transfer        */\n  HAL_MDMA_REPEAT_BLOCK_TRANSFER = 0x03U    /*!< repeat block Transfer */\n\n}HAL_MDMA_LevelCompleteTypeDef;\n\n/**\n  * @brief  HAL MDMA Callbacks IDs structure definition\n  */\ntypedef enum\n{\n  HAL_MDMA_XFER_CPLT_CB_ID          = 0x00U,    /*!< Full transfer           */\n  HAL_MDMA_XFER_BUFFERCPLT_CB_ID    = 0x01U,    /*!< Buffer Transfer         */\n  HAL_MDMA_XFER_BLOCKCPLT_CB_ID     = 0x02U,    /*!< Block Transfer          */\n  HAL_MDMA_XFER_REPBLOCKCPLT_CB_ID  = 0x03U,    /*!< Repeated Block Transfer */\n  HAL_MDMA_XFER_ERROR_CB_ID         = 0x04U,    /*!< Error                   */\n  HAL_MDMA_XFER_ABORT_CB_ID         = 0x05U,    /*!< Abort                   */\n  HAL_MDMA_XFER_ALL_CB_ID           = 0x06U     /*!< All                     */\n\n}HAL_MDMA_CallbackIDTypeDef;\n\n\n/**\n  * @brief  MDMA handle Structure definition\n  */\ntypedef struct __MDMA_HandleTypeDef\n{\n  MDMA_Channel_TypeDef *Instance;                                                              /*!< Register base address                  */\n\n  MDMA_InitTypeDef      Init;                                                                  /*!< MDMA communication parameters          */\n\n  HAL_LockTypeDef       Lock;                                                                  /*!< MDMA locking object                    */\n\n  __IO HAL_MDMA_StateTypeDef  State;                                                           /*!< MDMA transfer state                    */\n\n  void                  *Parent;                                                               /*!< Parent object state                    */\n\n  void                  (* XferCpltCallback)( struct __MDMA_HandleTypeDef * hmdma);            /*!< MDMA transfer complete callback        */\n\n  void                  (* XferBufferCpltCallback)( struct __MDMA_HandleTypeDef * hmdma);      /*!< MDMA buffer transfer complete callback */\n\n  void                  (* XferBlockCpltCallback)( struct __MDMA_HandleTypeDef * hmdma);       /*!< MDMA block transfer complete callback  */\n\n  void                  (* XferRepeatBlockCpltCallback)( struct __MDMA_HandleTypeDef * hmdma); /*!< MDMA block transfer repeat callback    */\n\n  void                  (* XferErrorCallback)( struct __MDMA_HandleTypeDef * hmdma);           /*!< MDMA transfer error callback           */\n\n  void                  (* XferAbortCallback)( struct __MDMA_HandleTypeDef * hmdma);           /*!< MDMA transfer Abort callback           */\n\n\n  MDMA_LinkNodeTypeDef *FirstLinkedListNodeAddress;                                             /*!< specifies the first node address of the transfer list\n                                                                                                     (after the initial node defined by the Init struct)\n                                                                                                     this parameter is used internally by the MDMA driver\n                                                                                                     to construct the linked list node\n                                                                                                */\n\n  MDMA_LinkNodeTypeDef *LastLinkedListNodeAddress;                                             /*!< specifies the last node address of the transfer list\n                                                                                                    this parameter is used internally by the MDMA driver\n                                                                                                    to construct the linked list node\n                                                                                                */\n  uint32_t LinkedListNodeCounter;                                                               /*!< Number of nodes in the MDMA linked list */\n\n  __IO uint32_t          ErrorCode;                                                            /*!< MDMA Error code                        */\n\n} MDMA_HandleTypeDef;\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup MDMA_Exported_Constants MDMA Exported Constants\n  * @brief    MDMA Exported constants\n  * @{\n  */\n\n/** @defgroup MDMA_Error_Codes MDMA Error Codes\n  * @brief    MDMA Error Codes\n  * @{\n  */\n#define HAL_MDMA_ERROR_NONE        ((uint32_t)0x00000000U)   /*!< No error                               */\n#define HAL_MDMA_ERROR_READ_XFER   ((uint32_t)0x00000001U)   /*!< Read Transfer error                    */\n#define HAL_MDMA_ERROR_WRITE_XFER  ((uint32_t)0x00000002U)   /*!< Write Transfer error                   */\n#define HAL_MDMA_ERROR_MASK_DATA   ((uint32_t)0x00000004U)   /*!< Error Mask Data error                  */\n#define HAL_MDMA_ERROR_LINKED_LIST ((uint32_t)0x00000008U)   /*!< Linked list Data error                 */\n#define HAL_MDMA_ERROR_ALIGNMENT   ((uint32_t)0x00000010U)   /*!< Address/Size alignment  error          */\n#define HAL_MDMA_ERROR_BLOCK_SIZE  ((uint32_t)0x00000020U)   /*!< Block Size error                       */\n#define HAL_MDMA_ERROR_TIMEOUT     ((uint32_t)0x00000040U)   /*!< Timeout error                          */\n#define HAL_MDMA_ERROR_NO_XFER     ((uint32_t)0x00000080U)   /*!< Abort or SW trigger requested with no Xfer ongoing   */\n#define HAL_MDMA_ERROR_BUSY        ((uint32_t)0x00000100U)   /*!< DeInit or SW trigger requested with Xfer ongoing   */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Request_selection MDMA Request selection\n  * @brief    MDMA_Request_selection\n  * @{\n  */\n\n#define MDMA_REQUEST_DMA1_Stream0_TC      ((uint32_t)0x00000000U)  /*!< MDMA HW request is DMA1 Stream 0 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA1_Stream1_TC      ((uint32_t)0x00000001U)  /*!< MDMA HW request is DMA1 Stream 1 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA1_Stream2_TC      ((uint32_t)0x00000002U)  /*!< MDMA HW request is DMA1 Stream 2 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA1_Stream3_TC      ((uint32_t)0x00000003U)  /*!< MDMA HW request is DMA1 Stream 3 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA1_Stream4_TC      ((uint32_t)0x00000004U)  /*!< MDMA HW request is DMA1 Stream 4 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA1_Stream5_TC      ((uint32_t)0x00000005U)  /*!< MDMA HW request is DMA1 Stream 5 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA1_Stream6_TC      ((uint32_t)0x00000006U)  /*!< MDMA HW request is DMA1 Stream 6 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA1_Stream7_TC      ((uint32_t)0x00000007U)  /*!< MDMA HW request is DMA1 Stream 7 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream0_TC      ((uint32_t)0x00000008U)  /*!< MDMA HW request is DMA2 Stream 0 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream1_TC      ((uint32_t)0x00000009U)  /*!< MDMA HW request is DMA2 Stream 1 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream2_TC      ((uint32_t)0x0000000AU)  /*!< MDMA HW request is DMA2 Stream 2 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream3_TC      ((uint32_t)0x0000000BU)  /*!< MDMA HW request is DMA2 Stream 3 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream4_TC      ((uint32_t)0x0000000CU)  /*!< MDMA HW request is DMA2 Stream 4 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream5_TC      ((uint32_t)0x0000000DU)  /*!< MDMA HW request is DMA2 Stream 5 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream6_TC      ((uint32_t)0x0000000EU)  /*!< MDMA HW request is DMA2 Stream 6 Transfer Complete Flag   */\n#define MDMA_REQUEST_DMA2_Stream7_TC      ((uint32_t)0x0000000FU)  /*!< MDMA HW request is DMA2 Stream 7 Transfer Complete Flag   */\n#if defined (LTDC)\n#define MDMA_REQUEST_LTDC_LINE_IT         ((uint32_t)0x00000010U)  /*!< MDMA HW request is LTDC Line interrupt Flag               */\n#endif /* LTDC */\n#if defined (JPEG)\n#define MDMA_REQUEST_JPEG_INFIFO_TH       ((uint32_t)0x00000011U)  /*!< MDMA HW request is JPEG Input FIFO threshold Flag         */\n#define MDMA_REQUEST_JPEG_INFIFO_NF       ((uint32_t)0x00000012U)  /*!< MDMA HW request is JPEG Input FIFO not full Flag          */\n#define MDMA_REQUEST_JPEG_OUTFIFO_TH      ((uint32_t)0x00000013U)  /*!< MDMA HW request is JPEG Output FIFO threshold Flag        */\n#define MDMA_REQUEST_JPEG_OUTFIFO_NE      ((uint32_t)0x00000014U)  /*!< MDMA HW request is JPEG Output FIFO not empty Flag        */\n#define MDMA_REQUEST_JPEG_END_CONVERSION  ((uint32_t)0x00000015U)  /*!< MDMA HW request is JPEG End of conversion Flag            */\n#endif /* JPEG */\n#if defined (OCTOSPI1)\n#define MDMA_REQUEST_OCTOSPI1_FIFO_TH     ((uint32_t)0x00000016U)  /*!< MDMA HW request is OCTOSPI1 FIFO threshold Flag           */\n#define MDMA_REQUEST_OCTOSPI1_TC          ((uint32_t)0x00000017U)  /*!< MDMA HW request is OCTOSPI1 Transfer complete Flag        */\n#endif /* OCTOSPI1 */\n#if defined (QUADSPI)\n#define MDMA_REQUEST_QUADSPI_FIFO_TH      ((uint32_t)0x00000016U)  /*!< MDMA HW request is QSPI FIFO threshold Flag               */\n#define MDMA_REQUEST_QUADSPI_TC           ((uint32_t)0x00000017U)  /*!< MDMA HW request is QSPI Transfer complete Flag            */\n#endif /* QUADSPI */\n#define MDMA_REQUEST_DMA2D_CLUT_TC        ((uint32_t)0x00000018U)  /*!< MDMA HW request is DMA2D CLUT Transfer Complete Flag      */\n#define MDMA_REQUEST_DMA2D_TC             ((uint32_t)0x00000019U)  /*!< MDMA HW request is DMA2D Transfer Complete Flag           */\n#define MDMA_REQUEST_DMA2D_TW             ((uint32_t)0x0000001AU)  /*!< MDMA HW request is DMA2D Transfer Watermark Flag          */\n\n#if defined (DSI)\n#define MDMA_REQUEST_DSI_TEARING_EFFECT   ((uint32_t)0x0000001BU)  /*!< MDMA HW request is DSI Tearing Effect Flag                */\n#define MDMA_REQUEST_DSI_END_REFRESH      ((uint32_t)0x0000001CU)  /*!< MDMA HW request is DSI End of refresh  Flag               */\n#endif /* DSI */\n\n#define MDMA_REQUEST_SDMMC1_END_DATA      ((uint32_t)0x0000001DU)  /*!< MDMA HW request is SDMMC1 End of Data Flag                */\n\n#define MDMA_REQUEST_SDMMC1_DMA_ENDBUFFER ((uint32_t)0x0000001EU)  /*!< MDMA HW request is SDMMC1 Internal DMA buffer End Flag    */\n#define MDMA_REQUEST_SDMMC1_COMMAND_END   ((uint32_t)0x0000001FU)  /*!< MDMA HW request is SDMMC1 Command End Flag                */\n\n#if defined (OCTOSPI2)\n#define MDMA_REQUEST_OCTOSPI2_FIFO_TH     ((uint32_t)0x00000020U)  /*!< MDMA HW request is OCTOSPI2 FIFO threshold Flag           */\n#define MDMA_REQUEST_OCTOSPI2_TC          ((uint32_t)0x00000021U)  /*!< MDMA HW request is OCTOSPI2 Transfer complete Flag        */\n#endif /* OCTOSPI2 */\n\n#define MDMA_REQUEST_SW                   ((uint32_t)0x40000000U) /*!< MDMA SW request                                            */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Transfer_TriggerMode MDMA Transfer Trigger  Mode\n  * @brief    MDMA Transfer Trigger Mode\n  * @{\n  */\n#define MDMA_BUFFER_TRANSFER          ((uint32_t)0x00000000U)        /*!< Each MDMA request (SW or HW) triggers a buffer transfer                                */\n#define MDMA_BLOCK_TRANSFER           ((uint32_t)MDMA_CTCR_TRGM_0)   /*!< Each MDMA request (SW or HW) triggers a block transfer                                 */\n#define MDMA_REPEAT_BLOCK_TRANSFER    ((uint32_t)MDMA_CTCR_TRGM_1)   /*!< Each MDMA request (SW or HW) triggers a repeated block transfer                        */\n#define MDMA_FULL_TRANSFER            ((uint32_t)MDMA_CTCR_TRGM)     /*!< Each MDMA request (SW or HW) triggers a Full transfer or a linked list transfer if any */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Priority_level MDMA Priority level\n  * @brief    MDMA Priority level\n  * @{\n  */\n#define MDMA_PRIORITY_LOW             ((uint32_t)0x00000000U)     /*!< Priority level: Low      */\n#define MDMA_PRIORITY_MEDIUM          ((uint32_t)MDMA_CCR_PL_0)  /*!< Priority level: Medium    */\n#define MDMA_PRIORITY_HIGH            ((uint32_t)MDMA_CCR_PL_1)  /*!< Priority level: High      */\n#define MDMA_PRIORITY_VERY_HIGH       ((uint32_t)MDMA_CCR_PL)    /*!< Priority level: Very High */\n\n/**\n  * @}\n  */\n\n\n/** @defgroup MDMA_Endianness MDMA Endianness\n  * @brief    MDMA Endianness\n  * @{\n  */\n#define MDMA_LITTLE_ENDIANNESS_PRESERVE          ((uint32_t)0x00000000U)   /*!< little endianness preserve                                               */\n#define MDMA_LITTLE_BYTE_ENDIANNESS_EXCHANGE     ((uint32_t)MDMA_CCR_BEX)  /*!< BYTEs endianness exchange when destination data size is > Byte           */\n#define MDMA_LITTLE_HALFWORD_ENDIANNESS_EXCHANGE ((uint32_t)MDMA_CCR_HEX)  /*!< HALF WORDs endianness exchange when destination data size is > HALF WORD */\n#define MDMA_LITTLE_WORD_ENDIANNESS_EXCHANGE     ((uint32_t)MDMA_CCR_WEX)  /*!< WORDs endianness exchange  when destination data size is > DOUBLE WORD   */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Source_increment_mode MDMA Source increment mode\n  * @brief    MDMA Source increment mode\n  * @{\n  */\n#define MDMA_SRC_INC_DISABLE      ((uint32_t)0x00000000U)                                     /*!< Source address pointer is fixed                                   */\n#define MDMA_SRC_INC_BYTE         ((uint32_t)MDMA_CTCR_SINC_1)                                /*!< Source address pointer is incremented by a BYTE (8 bits)          */\n#define MDMA_SRC_INC_HALFWORD     ((uint32_t)MDMA_CTCR_SINC_1 | (uint32_t)MDMA_CTCR_SINCOS_0) /*!< Source address pointer is incremented by a half Word (16 bits)    */\n#define MDMA_SRC_INC_WORD         ((uint32_t)MDMA_CTCR_SINC_1 | (uint32_t)MDMA_CTCR_SINCOS_1) /*!< Source address pointer is incremented by a Word (32 bits)         */\n#define MDMA_SRC_INC_DOUBLEWORD   ((uint32_t)MDMA_CTCR_SINC_1 | (uint32_t)MDMA_CTCR_SINCOS)   /*!< Source address pointer is incremented by a double Word (64 bits)) */\n#define MDMA_SRC_DEC_BYTE         ((uint32_t)MDMA_CTCR_SINC)                                  /*!< Source address pointer is decremented by a BYTE (8 bits)          */\n#define MDMA_SRC_DEC_HALFWORD     ((uint32_t)MDMA_CTCR_SINC | (uint32_t)MDMA_CTCR_SINCOS_0)   /*!< Source address pointer is decremented by a half Word (16 bits)    */\n#define MDMA_SRC_DEC_WORD         ((uint32_t)MDMA_CTCR_SINC | (uint32_t)MDMA_CTCR_SINCOS_1)   /*!< Source address pointer is decremented by a Word (32 bits)         */\n#define MDMA_SRC_DEC_DOUBLEWORD   ((uint32_t)MDMA_CTCR_SINC | (uint32_t)MDMA_CTCR_SINCOS)     /*!< Source address pointer is decremented by a double Word (64 bits)) */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Destination_increment_mode MDMA Destination increment mode\n  * @brief    MDMA Destination increment mode\n  * @{\n  */\n#define MDMA_DEST_INC_DISABLE      ((uint32_t)0x00000000U)                                     /*!< Source address pointer is fixed                                   */\n#define MDMA_DEST_INC_BYTE         ((uint32_t)MDMA_CTCR_DINC_1)                                /*!< Source address pointer is incremented by a BYTE (8 bits)          */\n#define MDMA_DEST_INC_HALFWORD     ((uint32_t)MDMA_CTCR_DINC_1 | (uint32_t)MDMA_CTCR_DINCOS_0) /*!< Source address pointer is incremented by a half Word (16 bits)    */\n#define MDMA_DEST_INC_WORD         ((uint32_t)MDMA_CTCR_DINC_1 | (uint32_t)MDMA_CTCR_DINCOS_1) /*!< Source address pointer is incremented by a Word (32 bits)         */\n#define MDMA_DEST_INC_DOUBLEWORD   ((uint32_t)MDMA_CTCR_DINC_1 | (uint32_t)MDMA_CTCR_DINCOS)   /*!< Source address pointer is incremented by a double Word (64 bits)) */\n#define MDMA_DEST_DEC_BYTE         ((uint32_t)MDMA_CTCR_DINC)                                  /*!< Source address pointer is decremented by a BYTE (8 bits)          */\n#define MDMA_DEST_DEC_HALFWORD     ((uint32_t)MDMA_CTCR_DINC | (uint32_t)MDMA_CTCR_DINCOS_0)   /*!< Source address pointer is decremented by a half Word (16 bits)    */\n#define MDMA_DEST_DEC_WORD         ((uint32_t)MDMA_CTCR_DINC | (uint32_t)MDMA_CTCR_DINCOS_1)   /*!< Source address pointer is decremented by a Word (32 bits)         */\n#define MDMA_DEST_DEC_DOUBLEWORD   ((uint32_t)MDMA_CTCR_DINC | (uint32_t)MDMA_CTCR_DINCOS)     /*!< Source address pointer is decremented by a double Word (64 bits)) */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Source_data_size MDMA Source data size\n  * @brief    MDMA Source data size\n  * @{\n  */\n#define MDMA_SRC_DATASIZE_BYTE        ((uint32_t)0x00000000U)         /*!< Source data size is Byte        */\n#define MDMA_SRC_DATASIZE_HALFWORD    ((uint32_t)MDMA_CTCR_SSIZE_0)   /*!< Source data size is half word   */\n#define MDMA_SRC_DATASIZE_WORD        ((uint32_t)MDMA_CTCR_SSIZE_1)   /*!< Source data size is word        */\n#define MDMA_SRC_DATASIZE_DOUBLEWORD  ((uint32_t)MDMA_CTCR_SSIZE)     /*!< Source data size is double word */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Destination_data_size MDMA Destination data size\n  * @brief    MDMA Destination data size\n  * @{\n  */\n#define MDMA_DEST_DATASIZE_BYTE        ((uint32_t)0x00000000U)         /*!< Destination data size is Byte        */\n#define MDMA_DEST_DATASIZE_HALFWORD    ((uint32_t)MDMA_CTCR_DSIZE_0)   /*!< Destination data size is half word   */\n#define MDMA_DEST_DATASIZE_WORD        ((uint32_t)MDMA_CTCR_DSIZE_1)   /*!< Destination data size is word        */\n#define MDMA_DEST_DATASIZE_DOUBLEWORD  ((uint32_t)MDMA_CTCR_DSIZE)     /*!< Destination data size is double word */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_data_Alignment MDMA data alignment\n  * @brief    MDMA data alignment\n  * @{\n  */\n#define MDMA_DATAALIGN_PACKENABLE        ((uint32_t)MDMA_CTCR_PKE)     /*!< The source data is packed/un-packed into the destination data size\n                                                                            All data are right aligned, in Little Endien mode.                                              */\n#define MDMA_DATAALIGN_RIGHT            ((uint32_t)0x00000000U)        /*!< Right Aligned, padded w/ 0s (default)                                                           */\n#define MDMA_DATAALIGN_RIGHT_SIGNED     ((uint32_t)MDMA_CTCR_PAM_0)    /*!< Right Aligned, Sign extended ,\n                                                                            Note : this mode is allowed only if the Source data size is smaller than Destination data size  */\n#define MDMA_DATAALIGN_LEFT             ((uint32_t)MDMA_CTCR_PAM_1)    /*!< Left Aligned (padded with 0s)                                                                   */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Source_burst MDMA Source burst\n  * @brief    MDMA Source burst\n  * @{\n  */\n#define MDMA_SOURCE_BURST_SINGLE        ((uint32_t)0x00000000U)                                       /*!< single transfer */\n#define MDMA_SOURCE_BURST_2BEATS        ((uint32_t)MDMA_CTCR_SBURST_0)                                /*!< Burst 2 beats   */\n#define MDMA_SOURCE_BURST_4BEATS        ((uint32_t)MDMA_CTCR_SBURST_1)                                /*!< Burst 4 beats   */\n#define MDMA_SOURCE_BURST_8BEATS        ((uint32_t)MDMA_CTCR_SBURST_0 | (uint32_t)MDMA_CTCR_SBURST_1) /*!< Burst 8 beats   */\n#define MDMA_SOURCE_BURST_16BEATS       ((uint32_t)MDMA_CTCR_SBURST_2)                                /*!< Burst 16 beats  */\n#define MDMA_SOURCE_BURST_32BEATS       ((uint32_t)MDMA_CTCR_SBURST_0 | (uint32_t)MDMA_CTCR_SBURST_2) /*!< Burst 32 beats  */\n#define MDMA_SOURCE_BURST_64BEATS       ((uint32_t)MDMA_CTCR_SBURST_1 | (uint32_t)MDMA_CTCR_SBURST_2) /*!< Burst 64 beats  */\n#define MDMA_SOURCE_BURST_128BEATS      ((uint32_t)MDMA_CTCR_SBURST)                                  /*!< Burst 128 beats */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_Destination_burst MDMA Destination burst\n  * @brief    MDMA Destination burst\n  * @{\n  */\n#define MDMA_DEST_BURST_SINGLE        ((uint32_t)0x00000000U)                                        /*!< single transfer */\n#define MDMA_DEST_BURST_2BEATS        ((uint32_t)MDMA_CTCR_DBURST_0)                                 /*!< Burst 2 beats   */\n#define MDMA_DEST_BURST_4BEATS        ((uint32_t)MDMA_CTCR_DBURST_1)                                 /*!< Burst 4 beats   */\n#define MDMA_DEST_BURST_8BEATS        ((uint32_t)MDMA_CTCR_DBURST_0 | (uint32_t)MDMA_CTCR_DBURST_1)  /*!< Burst 8 beats   */\n#define MDMA_DEST_BURST_16BEATS       ((uint32_t)MDMA_CTCR_DBURST_2)                                 /*!< Burst 16 beats  */\n#define MDMA_DEST_BURST_32BEATS       ((uint32_t)MDMA_CTCR_DBURST_0 | (uint32_t)MDMA_CTCR_DBURST_2)  /*!< Burst 32 beats  */\n#define MDMA_DEST_BURST_64BEATS       ((uint32_t)MDMA_CTCR_DBURST_1 | (uint32_t)MDMA_CTCR_DBURST_2)  /*!< Burst 64 beats  */\n#define MDMA_DEST_BURST_128BEATS      ((uint32_t)MDMA_CTCR_DBURST)                                   /*!< Burst 128 beats */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_interrupt_enable_definitions MDMA interrupt enable definitions\n  * @brief    MDMA interrupt enable definitions\n  * @{\n  */\n#define MDMA_IT_TE   ((uint32_t)MDMA_CCR_TEIE)   /*!< Transfer Error interrupt            */\n#define MDMA_IT_CTC  ((uint32_t)MDMA_CCR_CTCIE)  /*!< Channel Transfer Complete interrupt */\n#define MDMA_IT_BRT  ((uint32_t)MDMA_CCR_BRTIE)  /*!< Block Repeat Transfer interrupt     */\n#define MDMA_IT_BT   ((uint32_t)MDMA_CCR_BTIE)   /*!< Block Transfer interrupt            */\n#define MDMA_IT_BFTC ((uint32_t)MDMA_CCR_TCIE)   /*!< Buffer Transfer Complete interrupt  */\n\n/**\n  * @}\n  */\n\n/** @defgroup MDMA_flag_definitions MDMA flag definitions\n  * @brief    MDMA flag definitions\n  * @{\n  */\n#define MDMA_FLAG_TE    ((uint32_t)MDMA_CISR_TEIF)  /*!< Transfer Error flag                 */\n#define MDMA_FLAG_CTC   ((uint32_t)MDMA_CISR_CTCIF) /*!< Channel Transfer Complete flag      */\n#define MDMA_FLAG_BRT   ((uint32_t)MDMA_CISR_BRTIF) /*!< Block Repeat Transfer complete flag */\n#define MDMA_FLAG_BT    ((uint32_t)MDMA_CISR_BTIF)  /*!< Block Transfer complete flag        */\n#define MDMA_FLAG_BFTC  ((uint32_t)MDMA_CISR_TCIF)  /*!< BuFfer Transfer complete flag       */\n#define MDMA_FLAG_CRQA  ((uint32_t)MDMA_CISR_CRQA)  /*!< Channel request Active flag          */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n\n/** @defgroup MDMA_Exported_Macros MDMA Exported Macros\n  * @{\n  */\n\n/**\n  * @brief  Enable the specified MDMA Channel.\n  * @param  __HANDLE__: MDMA handle\n  * @retval None\n  */\n#define __HAL_MDMA_ENABLE(__HANDLE__)  ((__HANDLE__)->Instance->CCR |=  MDMA_CCR_EN)\n\n/**\n  * @brief  Disable the specified MDMA Channel.\n  * @param  __HANDLE__: MDMA handle\n  * @retval None\n  */\n#define __HAL_MDMA_DISABLE(__HANDLE__)  ((__HANDLE__)->Instance->CCR &=  ~MDMA_CCR_EN)\n\n/**\n  * @brief  Get the MDMA Channel pending flags.\n  * @param  __HANDLE__: MDMA handle\n  * @param  __FLAG__: Get the specified flag.\n  *          This parameter can be any combination of the following values:\n  *            @arg MDMA_FLAG_TE   : Transfer Error flag.\n  *            @arg MDMA_FLAG_CTC  : Channel Transfer Complete flag.\n  *            @arg MDMA_FLAG_BRT  : Block Repeat Transfer flag.\n  *            @arg MDMA_FLAG_BT   : Block Transfer complete flag.\n  *            @arg MDMA_FLAG_BFTC : BuFfer Transfer Complete flag.\n  *            @arg MDMA_FLAG_CRQA : Channel request Active flag.\n  * @retval The state of FLAG (SET or RESET).\n  */\n#define __HAL_MDMA_GET_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->CISR & (__FLAG__))\n\n/**\n  * @brief  Clear the MDMA Stream pending flags.\n  * @param  __HANDLE__: MDMA handle\n  * @param  __FLAG__: specifies the flag to clear.\n  *          This parameter can be any combination of the following values:\n  *            @arg MDMA_FLAG_TE   : Transfer Error flag.\n  *            @arg MDMA_FLAG_CTC  : Channel Transfer Complete flag.\n  *            @arg MDMA_FLAG_BRT  : Block Repeat Transfer flag.\n  *            @arg MDMA_FLAG_BT   : Block Transfer complete flag.\n  *            @arg MDMA_FLAG_BFTC : BuFfer Transfer Complete flag.\n  * @retval None\n  */\n#define __HAL_MDMA_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->CIFCR = (__FLAG__))\n\n/**\n  * @brief  Enables the specified MDMA Channel interrupts.\n  * @param  __HANDLE__: MDMA handle\n  * @param __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled.\n  *          This parameter can be any combination of the following values:\n  *            @arg MDMA_IT_TE   :  Transfer Error interrupt mask\n  *            @arg MDMA_IT_CTC  :  Channel Transfer Complete interrupt mask\n  *            @arg MDMA_IT_BRT  :  Block Repeat Transfer interrupt mask\n  *            @arg MDMA_IT_BT   :  Block Transfer interrupt mask\n  *            @arg MDMA_IT_BFTC :  BuFfer Transfer Complete interrupt mask\n  * @retval None\n  */\n#define __HAL_MDMA_ENABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->CCR |= (__INTERRUPT__))\n\n/**\n  * @brief  Disables the specified MDMA Channel interrupts.\n  * @param  __HANDLE__: MDMA handle\n  * @param __INTERRUPT__: specifies the MDMA interrupt sources to be enabled or disabled.\n  *          This parameter can be any combination of the following values:\n  *            @arg MDMA_IT_TE   :  Transfer Error interrupt mask\n  *            @arg MDMA_IT_CTC  :  Channel Transfer Complete interrupt mask\n  *            @arg MDMA_IT_BRT  :  Block Repeat Transfer interrupt mask\n  *            @arg MDMA_IT_BT   :  Block Transfer interrupt mask\n  *            @arg MDMA_IT_BFTC :  BuFfer Transfer Complete interrupt mask\n  * @retval None\n  */\n#define __HAL_MDMA_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CCR &= ~(__INTERRUPT__))\n\n/**\n  * @brief  Checks whether the specified MDMA Channel interrupt is enabled or not.\n  * @param  __HANDLE__: MDMA handle\n  * @param  __INTERRUPT__: specifies the MDMA interrupt source to check.\n  *            @arg MDMA_IT_TE   :  Transfer Error interrupt mask\n  *            @arg MDMA_IT_CTC  :  Channel Transfer Complete interrupt mask\n  *            @arg MDMA_IT_BRT  :  Block Repeat Transfer interrupt mask\n  *            @arg MDMA_IT_BT   :  Block Transfer interrupt mask\n  *            @arg MDMA_IT_BFTC :  BuFfer Transfer Complete interrupt mask\n  * @retval The state of MDMA_IT (SET or RESET).\n  */\n#define __HAL_MDMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  (((__HANDLE__)->Instance->CCR & (__INTERRUPT__)))\n\n/**\n  * @brief  Writes the number of data in bytes to be transferred on the MDMA Channelx.\n  * @param  __HANDLE__ : MDMA handle\n  * @param  __COUNTER__: Number of data in bytes to be transferred.\n  * @retval None\n  */\n#define __HAL_MDMA_SET_COUNTER(__HANDLE__, __COUNTER__)  ((__HANDLE__)->Instance->CBNDTR |= ((__COUNTER__) & MDMA_CBNDTR_BNDT))\n\n/**\n  * @brief  Returns the number of remaining data in bytes in the current MDMA Channelx transfer.\n  * @param  __HANDLE__ : MDMA handle\n  * @retval The number of remaining data in bytes in the current MDMA Channelx transfer.\n  */\n#define __HAL_MDMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CBNDTR & MDMA_CBNDTR_BNDT)\n\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup MDMA_Exported_Functions  MDMA Exported Functions\n  * @{\n  */\n\n/* Initialization and de-initialization functions *****************************/\n/** @defgroup MDMA_Exported_Functions_Group1 Initialization and de-initialization functions\n  * @brief   Initialization and de-initialization functions\n  * @{\n  */\nHAL_StatusTypeDef HAL_MDMA_Init(MDMA_HandleTypeDef *hmdma);\nHAL_StatusTypeDef HAL_MDMA_DeInit (MDMA_HandleTypeDef *hmdma);\nHAL_StatusTypeDef HAL_MDMA_ConfigPostRequestMask(MDMA_HandleTypeDef *hmdma, uint32_t MaskAddress, uint32_t MaskData);\n\nHAL_StatusTypeDef HAL_MDMA_RegisterCallback(MDMA_HandleTypeDef *hmdma, HAL_MDMA_CallbackIDTypeDef CallbackID, void (* pCallback)(MDMA_HandleTypeDef *_hmdma));\nHAL_StatusTypeDef HAL_MDMA_UnRegisterCallback(MDMA_HandleTypeDef *hmdma, HAL_MDMA_CallbackIDTypeDef CallbackID);\n\n/**\n  * @}\n  */\n\n/* Linked list operation functions ********************************************/\n/** @defgroup MDMA_Exported_Functions_Group2 Linked List operation functions\n  * @brief   Linked list operation functions\n  * @{\n  */\n\nHAL_StatusTypeDef HAL_MDMA_LinkedList_CreateNode(MDMA_LinkNodeTypeDef *pNode, MDMA_LinkNodeConfTypeDef *pNodeConfig);\nHAL_StatusTypeDef HAL_MDMA_LinkedList_AddNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNewNode, MDMA_LinkNodeTypeDef *pPrevNode);\nHAL_StatusTypeDef HAL_MDMA_LinkedList_RemoveNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNode);\nHAL_StatusTypeDef HAL_MDMA_LinkedList_EnableCircularMode(MDMA_HandleTypeDef *hmdma);\nHAL_StatusTypeDef HAL_MDMA_LinkedList_DisableCircularMode(MDMA_HandleTypeDef *hmdma);\n\n\n/**\n  * @}\n  */\n\n/* IO operation functions *****************************************************/\n/** @defgroup MDMA_Exported_Functions_Group3 I/O operation functions\n  * @brief   I/O operation functions\n  * @{\n  */\nHAL_StatusTypeDef HAL_MDMA_Start (MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t BlockDataLength, uint32_t BlockCount);\nHAL_StatusTypeDef HAL_MDMA_Start_IT(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t BlockDataLength, uint32_t BlockCount);\nHAL_StatusTypeDef HAL_MDMA_Abort(MDMA_HandleTypeDef *hmdma);\nHAL_StatusTypeDef HAL_MDMA_Abort_IT(MDMA_HandleTypeDef *hmdma);\nHAL_StatusTypeDef HAL_MDMA_PollForTransfer(MDMA_HandleTypeDef *hmdma, HAL_MDMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout);\nHAL_StatusTypeDef HAL_MDMA_GenerateSWRequest(MDMA_HandleTypeDef *hmdma);\nvoid HAL_MDMA_IRQHandler(MDMA_HandleTypeDef *hmdma);\n\n/**\n  * @}\n  */\n\n/* Peripheral State and Error functions ***************************************/\n/** @defgroup MDMA_Exported_Functions_Group4 Peripheral State functions\n  * @brief    Peripheral State functions\n  * @{\n  */\nHAL_MDMA_StateTypeDef HAL_MDMA_GetState(MDMA_HandleTypeDef *hmdma);\nuint32_t              HAL_MDMA_GetError(MDMA_HandleTypeDef *hmdma);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private types -------------------------------------------------------------*/\n/** @defgroup MDMA_Private_Types MDMA Private Types\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private defines -----------------------------------------------------------*/\n/** @defgroup MDMA_Private_Defines MDMA Private Defines\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private variables ---------------------------------------------------------*/\n/** @defgroup MDMA_Private_Variables MDMA Private Variables\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup MDMA_Private_Constants MDMA Private Constants\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup MDMA_Private_Macros MDMA Private Macros\n  * @{\n  */\n\n#define IS_MDMA_LEVEL_COMPLETE(__LEVEL__) (((__LEVEL__) == HAL_MDMA_FULL_TRANSFER )  || \\\n                                           ((__LEVEL__) == HAL_MDMA_BUFFER_TRANSFER )|| \\\n                                           ((__LEVEL__) == HAL_MDMA_BLOCK_TRANSFER ) || \\\n                                           ((__LEVEL__) == HAL_MDMA_REPEAT_BLOCK_TRANSFER ))\n\n\n#define IS_MDMA_PRIORITY(__PRIORITY__) (((__PRIORITY__) == MDMA_PRIORITY_LOW )   || \\\n                                        ((__PRIORITY__) == MDMA_PRIORITY_MEDIUM) || \\\n                                        ((__PRIORITY__) == MDMA_PRIORITY_HIGH)   || \\\n                                        ((__PRIORITY__) == MDMA_PRIORITY_VERY_HIGH))\n\n#define IS_MDMA_ENDIANNESS_MODE(__ENDIANNESS__) (((__ENDIANNESS__) == MDMA_LITTLE_ENDIANNESS_PRESERVE )         || \\\n                                                 ((__ENDIANNESS__) == MDMA_LITTLE_BYTE_ENDIANNESS_EXCHANGE)     || \\\n                                                 ((__ENDIANNESS__) == MDMA_LITTLE_HALFWORD_ENDIANNESS_EXCHANGE) || \\\n                                                 ((__ENDIANNESS__) == MDMA_LITTLE_WORD_ENDIANNESS_EXCHANGE))\n\n\n#if defined (OCTOSPI2)\n#define IS_MDMA_REQUEST(__REQUEST__) (((__REQUEST__) == MDMA_REQUEST_SW ) || ((__REQUEST__) <= MDMA_REQUEST_OCTOSPI2_TC))\n#else\n#define IS_MDMA_REQUEST(__REQUEST__) (((__REQUEST__) == MDMA_REQUEST_SW ) || ((__REQUEST__) <= MDMA_REQUEST_SDMMC1_COMMAND_END))\n#endif /* OCTOSPI2 */\n\n#define IS_MDMA_SOURCE_INC(__INC__) (((__INC__) == MDMA_SRC_INC_DISABLE )   || \\\n                                     ((__INC__) == MDMA_SRC_INC_BYTE )      || \\\n                                     ((__INC__) == MDMA_SRC_INC_HALFWORD )  || \\\n                                     ((__INC__) == MDMA_SRC_INC_WORD )      || \\\n                                     ((__INC__) == MDMA_SRC_INC_DOUBLEWORD) || \\\n                                     ((__INC__) == MDMA_SRC_DEC_BYTE)       || \\\n                                     ((__INC__) == MDMA_SRC_DEC_HALFWORD)   || \\\n                                     ((__INC__) == MDMA_SRC_DEC_WORD)       || \\\n                                     ((__INC__) == MDMA_SRC_DEC_DOUBLEWORD))\n\n#define IS_MDMA_DESTINATION_INC(__INC__) (((__INC__) == MDMA_DEST_INC_DISABLE )   || \\\n                                          ((__INC__) == MDMA_DEST_INC_BYTE )      || \\\n                                          ((__INC__) == MDMA_DEST_INC_HALFWORD )  || \\\n                                          ((__INC__) == MDMA_DEST_INC_WORD )      || \\\n                                          ((__INC__) == MDMA_DEST_INC_DOUBLEWORD) || \\\n                                          ((__INC__) == MDMA_DEST_DEC_BYTE)       || \\\n                                          ((__INC__) == MDMA_DEST_DEC_HALFWORD)   || \\\n                                          ((__INC__) == MDMA_DEST_DEC_WORD)       || \\\n                                          ((__INC__) == MDMA_DEST_DEC_DOUBLEWORD))\n\n#define IS_MDMA_SOURCE_DATASIZE(__SIZE__) (((__SIZE__) == MDMA_SRC_DATASIZE_BYTE )     || \\\n                                           ((__SIZE__) == MDMA_SRC_DATASIZE_HALFWORD ) || \\\n                                           ((__SIZE__) == MDMA_SRC_DATASIZE_WORD )     || \\\n                                           ((__SIZE__) == MDMA_SRC_DATASIZE_DOUBLEWORD))\n\n#define IS_MDMA_DESTINATION_DATASIZE(__SIZE__) (((__SIZE__) == MDMA_DEST_DATASIZE_BYTE )     || \\\n                                                ((__SIZE__) == MDMA_DEST_DATASIZE_HALFWORD ) || \\\n                                                ((__SIZE__) == MDMA_DEST_DATASIZE_WORD )     || \\\n                                                ((__SIZE__) == MDMA_DEST_DATASIZE_DOUBLEWORD))\n\n#define IS_MDMA_DATA_ALIGNMENT(__ALIGNMENT__) (((__ALIGNMENT__) == MDMA_DATAALIGN_PACKENABLE )    || \\\n                                               ((__ALIGNMENT__) == MDMA_DATAALIGN_RIGHT )         || \\\n                                               ((__ALIGNMENT__) == MDMA_DATAALIGN_RIGHT_SIGNED )  || \\\n                                               ((__ALIGNMENT__) == MDMA_DATAALIGN_LEFT))\n\n\n#define IS_MDMA_SOURCE_BURST(__BURST__) (((__BURST__) == MDMA_SOURCE_BURST_SINGLE ) || \\\n                                         ((__BURST__) == MDMA_SOURCE_BURST_2BEATS ) || \\\n                                         ((__BURST__) == MDMA_SOURCE_BURST_4BEATS ) || \\\n                                         ((__BURST__) == MDMA_SOURCE_BURST_8BEATS)  || \\\n                                         ((__BURST__) == MDMA_SOURCE_BURST_16BEATS) || \\\n                                         ((__BURST__) == MDMA_SOURCE_BURST_32BEATS) || \\\n                                         ((__BURST__) == MDMA_SOURCE_BURST_64BEATS) || \\\n                                         ((__BURST__) == MDMA_SOURCE_BURST_128BEATS))\n\n\n#define IS_MDMA_DESTINATION_BURST(__BURST__) (((__BURST__) == MDMA_DEST_BURST_SINGLE ) || \\\n                                              ((__BURST__) == MDMA_DEST_BURST_2BEATS ) || \\\n                                              ((__BURST__) == MDMA_DEST_BURST_4BEATS ) || \\\n                                              ((__BURST__) == MDMA_DEST_BURST_8BEATS)  || \\\n                                              ((__BURST__) == MDMA_DEST_BURST_16BEATS) || \\\n                                              ((__BURST__) == MDMA_DEST_BURST_32BEATS) || \\\n                                              ((__BURST__) == MDMA_DEST_BURST_64BEATS) || \\\n                                              ((__BURST__) == MDMA_DEST_BURST_128BEATS))\n\n #define IS_MDMA_TRANSFER_TRIGGER_MODE(__MODE__) (((__MODE__) == MDMA_BUFFER_TRANSFER )      || \\\n                                                  ((__MODE__) == MDMA_BLOCK_TRANSFER )        || \\\n                                                  ((__MODE__) == MDMA_REPEAT_BLOCK_TRANSFER ) || \\\n                                                  ((__MODE__) == MDMA_FULL_TRANSFER))\n\n#define IS_MDMA_BUFFER_TRANSFER_LENGTH(__LENGTH__) (((__LENGTH__) >= 0x00000001U) && ((__LENGTH__) < 0x000000FFU))\n\n#define IS_MDMA_BLOCK_COUNT(__COUNT__) (((__COUNT__) > 0U ) && ((__COUNT__) <= 4096U))\n\n#define IS_MDMA_TRANSFER_LENGTH(SIZE) (((SIZE) > 0U) && ((SIZE) <= 65536U))\n\n#define IS_MDMA_BLOCK_ADDR_OFFSET(__BLOCK_ADD_OFFSET__) (((__BLOCK_ADD_OFFSET__) > (-65536)) && ((__BLOCK_ADD_OFFSET__) < 65536))\n\n/**\n  * @}\n  */\n\n/* Private functions prototypes ----------------------------------------------*/\n/** @defgroup MDMA_Private_Functions_Prototypes MDMA Private Functions Prototypes\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup MDMA_Private_Functions MDMA Private Functions\n  * @{\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_MDMA_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pwr.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_pwr.h\n  * @author  MCD Application Team\n  * @brief   Header file of PWR HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_PWR_H\n#define STM32H7xx_HAL_PWR_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif /* __cplusplus */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup PWR\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n\n/** @defgroup PWR_Exported_Types PWR Exported Types\n  * @{\n  */\n\n/**\n  * @brief  PWR PVD configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t PVDLevel; /*!< PVDLevel: Specifies the PVD detection level. This\n                                    parameter can be a value of @ref\n                                    PWR_PVD_detection_level.\n                     */\n\n  uint32_t Mode;     /*!< Mode: Specifies the EXTI operating mode for the PVD\n                                event. This parameter can be a value of @ref\n                                PWR_PVD_Mode.\n                     */\n}PWR_PVDTypeDef;\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup PWR_Exported_Constants PWR Exported Constants\n  * @{\n  */\n\n/** @defgroup PWR_PVD_detection_level PWR PVD detection level\n  * @{\n  */\n#define PWR_PVDLEVEL_0  PWR_CR1_PLS_LEV0  /*!< Programmable voltage detector\n                                               level 0 selection : 1V95       */\n#define PWR_PVDLEVEL_1  PWR_CR1_PLS_LEV1  /*!< Programmable voltage detector\n                                               level 1 selection : 2V1        */\n#define PWR_PVDLEVEL_2  PWR_CR1_PLS_LEV2  /*!< Programmable voltage detector\n                                               level 2 selection : 2V25       */\n#define PWR_PVDLEVEL_3  PWR_CR1_PLS_LEV3  /*!< Programmable voltage detector\n                                               level 3 selection : 2V4        */\n#define PWR_PVDLEVEL_4  PWR_CR1_PLS_LEV4  /*!< Programmable voltage detector\n                                               level 4 selection : 2V55       */\n#define PWR_PVDLEVEL_5  PWR_CR1_PLS_LEV5  /*!< Programmable voltage detector\n                                               level 5 selection : 2V7        */\n#define PWR_PVDLEVEL_6  PWR_CR1_PLS_LEV6  /*!< Programmable voltage detector\n                                               level 6 selection : 2V85       */\n#define PWR_PVDLEVEL_7  PWR_CR1_PLS_LEV7  /*!< External input analog voltage\n                                               (Compare internally to VREF)   */\n/**\n  * @}\n  */\n\n/** @defgroup PWR_PVD_Mode PWR PVD Mode\n  * @{\n  */\n#define PWR_PVD_MODE_NORMAL               (0x00000000U) /*!< Basic mode is used                                        */\n#define PWR_PVD_MODE_IT_RISING            (0x00010001U) /*!< Interrupt Mode with Rising edge trigger detection         */\n#define PWR_PVD_MODE_IT_FALLING           (0x00010002U) /*!< Interrupt Mode with Falling edge trigger detection        */\n#define PWR_PVD_MODE_IT_RISING_FALLING    (0x00010003U) /*!< Interrupt Mode with Rising/Falling edge trigger detection */\n#define PWR_PVD_MODE_EVENT_RISING         (0x00020001U) /*!< Event Mode with Rising edge trigger detection             */\n#define PWR_PVD_MODE_EVENT_FALLING        (0x00020002U) /*!< Event Mode with Falling edge trigger detection            */\n#define PWR_PVD_MODE_EVENT_RISING_FALLING (0x00020003U) /*!< Event Mode with Rising/Falling edge trigger detection     */\n/**\n  * @}\n  */\n\n/** @defgroup PWR_Regulator_state_in_STOP_mode PWR Regulator state in SLEEP/STOP mode\n  * @{\n  */\n#define PWR_MAINREGULATOR_ON      (0U)\n#define PWR_LOWPOWERREGULATOR_ON  PWR_CR1_LPDS\n/**\n  * @}\n  */\n\n/** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry\n  * @{\n  */\n#define PWR_SLEEPENTRY_WFI  (0x01U)\n#define PWR_SLEEPENTRY_WFE  (0x02U)\n/**\n  * @}\n  */\n\n/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry\n  * @{\n  */\n#define PWR_STOPENTRY_WFI  (0x01U)\n#define PWR_STOPENTRY_WFE  (0x02U)\n/**\n  * @}\n  */\n\n/** @defgroup PWR_Regulator_Voltage_Scale PWR Regulator Voltage Scale\n  * @{\n  */\n#if defined(PWR_SRDCR_VOS)\n#define PWR_REGULATOR_VOLTAGE_SCALE0  (PWR_SRDCR_VOS_1 | PWR_SRDCR_VOS_0)\n#define PWR_REGULATOR_VOLTAGE_SCALE1  (PWR_SRDCR_VOS_1)\n#define PWR_REGULATOR_VOLTAGE_SCALE2  (PWR_SRDCR_VOS_0)\n#define PWR_REGULATOR_VOLTAGE_SCALE3  (0U)\n#else\n#define PWR_REGULATOR_VOLTAGE_SCALE0  (0U)\n#define PWR_REGULATOR_VOLTAGE_SCALE1  (PWR_D3CR_VOS_1 | PWR_D3CR_VOS_0)\n#define PWR_REGULATOR_VOLTAGE_SCALE2  (PWR_D3CR_VOS_1)\n#define PWR_REGULATOR_VOLTAGE_SCALE3  (PWR_D3CR_VOS_0)\n#endif /* PWR_SRDCR_VOS */\n/**\n  * @}\n  */\n\n/** @defgroup PWR_Flag PWR Flag\n  * @{\n  */\n/* PWR CPU flag */\n#define PWR_FLAG_STOP       (0x01U)\n#if defined (PWR_CPUCR_SBF_D2)\n#define PWR_FLAG_SB_D1      (0x02U)\n#define PWR_FLAG_SB_D2      (0x03U)\n#endif /* defined (PWR_CPUCR_SBF_D2) */\n#define PWR_FLAG_SB         (0x04U)\n#if defined (DUAL_CORE)\n#define PWR_FLAG_CPU_HOLD   (0x05U)\n#define PWR_FLAG_CPU2_HOLD  (0x06U)\n#define PWR_FLAG2_STOP      (0x07U)\n#define PWR_FLAG2_SB_D1     (0x08U)\n#define PWR_FLAG2_SB_D2     (0x09U)\n#define PWR_FLAG2_SB        (0x0AU)\n#endif /* defined (DUAL_CORE) */\n#define PWR_FLAG_PVDO       (0x0BU)\n#define PWR_FLAG_AVDO       (0x0CU)\n#define PWR_FLAG_ACTVOSRDY  (0x0DU)\n#define PWR_FLAG_ACTVOS     (0x0EU)\n#define PWR_FLAG_BRR        (0x0FU)\n#define PWR_FLAG_VOSRDY     (0x10U)\n#if defined (SMPS)\n#define PWR_FLAG_SMPSEXTRDY (0x11U)\n#else\n#define PWR_FLAG_SCUEN      (0x11U)\n#endif /* defined (SMPS) */\n#if defined (PWR_CSR1_MMCVDO)\n#define PWR_FLAG_MMCVDO     (0x12U)\n#endif /* defined (PWR_CSR1_MMCVDO) */\n#define PWR_FLAG_USB33RDY   (0x13U)\n#define PWR_FLAG_TEMPH      (0x14U)\n#define PWR_FLAG_TEMPL      (0x15U)\n#define PWR_FLAG_VBATH      (0x16U)\n#define PWR_FLAG_VBATL      (0x17U)\n\n/* PWR Wake up flag */\n#define PWR_FLAG_WKUP1 PWR_WKUPCR_WKUPC1\n#define PWR_FLAG_WKUP2 PWR_WKUPCR_WKUPC2\n#define PWR_FLAG_WKUP3 PWR_WKUPCR_WKUPC3\n#define PWR_FLAG_WKUP4 PWR_WKUPCR_WKUPC4\n#define PWR_FLAG_WKUP5 PWR_WKUPCR_WKUPC5\n#define PWR_FLAG_WKUP6 PWR_WKUPCR_WKUPC6\n/**\n  * @}\n  */\n\n/** @defgroup PWR_ENABLE_WUP_Mask PWR Enable WUP Mask\n  * @{\n  */\n#define  PWR_EWUP_MASK  (0x0FFF3F3FU)\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup PWR_Exported_Macro PWR Exported Macro\n  * @{\n  */\n\n/** @brief  Configure the main internal regulator output voltage.\n  * @param  __REGULATOR__ : Specifies the regulator output voltage to achieve a\n  *                         trade-off between performance and power consumption\n  *                         when the device does not operate at the maximum\n  *                         frequency (refer to the datasheet for more details).\n  *          This parameter can be one of the following values:\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE0 : Regulator voltage output\n  *                                                Scale 0 mode.\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE1 : Regulator voltage output\n  *                                                Scale 1 mode.\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE2 : Regulator voltage output\n  *                                                Scale 2 mode.\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE3 : Regulator voltage output\n  *                                                Scale 3 mode.\n  * @note   For STM32H74x and STM32H75x lines, configuring Voltage Scale 0 is\n  *         only possible when Vcore is supplied from LDO (Low DropOut). The\n  *         SYSCFG Clock must be enabled through __HAL_RCC_SYSCFG_CLK_ENABLE()\n  *         macro before configuring Voltage Scale 0 using\n  *         __HAL_PWR_VOLTAGESCALING_CONFIG().\n  *         Transition to Voltage Scale 0 is only possible when the system is\n  *         already in Voltage Scale 1.\n  *         Transition from Voltage Scale 0 is only possible to Voltage Scale 1\n  *         then once in Voltage Scale 1 it is possible to switch to another\n  *         voltage scale.\n  *         After each regulator voltage setting, wait on VOSRDY flag to be set\n  *         using macro __HAL_PWR_GET_FLAG().\n  *         To enter low power mode , and if current regulator voltage is\n  *         Voltage Scale 0 then first switch to Voltage Scale 1 before entering\n  *         low power mode.\n  * @retval None.\n  */\n#if defined (PWR_SRDCR_VOS) /* STM32H7Axxx and STM32H7Bxxx lines */\n#define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__)                         \\\ndo {                                                                           \\\n      __IO uint32_t tmpreg = 0x00;                                             \\\n      /* Configure the Voltage Scaling */                                      \\\n      MODIFY_REG(PWR->SRDCR, PWR_SRDCR_VOS, (__REGULATOR__));                  \\\n      /* Delay after setting the voltage scaling */                            \\\n      tmpreg = READ_BIT(PWR->SRDCR, PWR_SRDCR_VOS);                            \\\n      UNUSED(tmpreg);                                                          \\\n} while(0)\n#else /* 3 power domains devices */\n#if defined(SYSCFG_PWRCR_ODEN) /* STM32H74xxx and STM32H75xxx lines */\n#define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__)                         \\\ndo {                                                                           \\\n      __IO uint32_t tmpreg = 0x00;                                             \\\n      /* Check the voltage scaling to be configured */                         \\\n      if((__REGULATOR__) == PWR_REGULATOR_VOLTAGE_SCALE0)                      \\\n      {                                                                        \\\n        /* Configure the Voltage Scaling 1 */                                  \\\n        MODIFY_REG(PWR->D3CR, PWR_D3CR_VOS, PWR_REGULATOR_VOLTAGE_SCALE1);     \\\n        /* Delay after setting the voltage scaling */                          \\\n        tmpreg = READ_BIT(PWR->D3CR, PWR_D3CR_VOS);                            \\\n        /* Enable the PWR overdrive */                                         \\\n        SET_BIT(SYSCFG->PWRCR, SYSCFG_PWRCR_ODEN);                             \\\n        /* Delay after setting the syscfg boost setting */                     \\\n        tmpreg = READ_BIT(SYSCFG->PWRCR, SYSCFG_PWRCR_ODEN);                   \\\n      }                                                                        \\\n      else                                                                     \\\n      {                                                                        \\\n        /* Disable the PWR overdrive */                                        \\\n        CLEAR_BIT(SYSCFG->PWRCR, SYSCFG_PWRCR_ODEN);                           \\\n        /* Delay after setting the syscfg boost setting */                     \\\n        tmpreg = READ_BIT(SYSCFG->PWRCR, SYSCFG_PWRCR_ODEN);                   \\\n        /* Configure the Voltage Scaling x */                                  \\\n        MODIFY_REG(PWR->D3CR, PWR_D3CR_VOS, (__REGULATOR__));                  \\\n        /* Delay after setting the voltage scaling */                          \\\n        tmpreg = READ_BIT(PWR->D3CR, PWR_D3CR_VOS);                            \\\n      }                                                                        \\\n      UNUSED(tmpreg);                                                          \\\n} while(0)\n#else /* STM32H72xxx and STM32H73xxx lines */\n#define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__)                         \\\ndo {                                                                           \\\n      __IO uint32_t tmpreg = 0x00;                                             \\\n      /* Configure the Voltage Scaling */                                      \\\n      MODIFY_REG (PWR->D3CR, PWR_D3CR_VOS, (__REGULATOR__));                   \\\n      /* Delay after setting the voltage scaling */                            \\\n      tmpreg = READ_BIT(PWR->D3CR, PWR_D3CR_VOS);                              \\\n      UNUSED(tmpreg);                                                          \\\n} while(0)\n#endif /* defined(SYSCFG_PWRCR_ODEN) */\n#endif /* defined (PWR_SRDCR_VOS) */\n\n/** @brief  Check PWR flags are set or not.\n  * @param  __FLAG__ : Specifies the flag to check.\n  *           This parameter can be one of the following values:\n  *            @arg PWR_FLAG_PVDO : PVD Output. This flag is valid only if PVD\n  *                                 is enabled by the HAL_PWR_EnablePVD()\n  *                                 function.\n  *                                 The PVD is stopped by STANDBY mode. For this\n  *                                 reason, this bit is equal to 0 after STANDBY\n  *                                 or reset until the PVDE bit is set.\n  *            @arg PWR_FLAG_AVDO : AVD Output. This flag is valid only if AVD\n  *                                 is enabled by the HAL_PWREx_EnableAVD()\n  *                                 function. The AVD is stopped by STANDBY mode.\n  *                                 For this reason, this bit is equal to 0\n  *                                 after STANDBY or reset until the AVDE bit\n  *                                 is set.\n  *            @arg PWR_FLAG_ACTVOSRDY : This flag indicates that the Regulator\n  *                                      voltage scaling output selection is\n  *                                      ready.\n  *            @arg PWR_FLAG_BRR : Backup regulator ready flag. This bit is not\n  *                                reset when the device wakes up from STANDBY\n  *                                mode or by a system reset or power-on reset.\n  *            @arg PWR_FLAG_VOSRDY : This flag indicates that the Regulator\n  *                                   voltage scaling output selection is ready.\n  *                                mode or by a system reset or power-on reset.\n  *            @arg PWR_FLAG_USB33RDY : This flag indicates that the USB supply\n  *                                     from regulator is ready.\n  *            @arg PWR_FLAG_TEMPH : This flag indicates that the temperature\n  *                                  equal or above high threshold level.\n  *            @arg PWR_FLAG_TEMPL : This flag indicates that the temperature\n  *                                  equal or below low threshold level.\n  *            @arg PWR_FLAG_VBATH : This flag indicates that VBAT level equal\n  *                                  or above high threshold level.\n  *            @arg PWR_FLAG_VBATL : This flag indicates that VBAT level equal\n  *                                  or below low threshold level.\n  *            @arg PWR_FLAG_STOP : This flag indicates that the system entered\n  *                                 in STOP mode.\n  *            @arg PWR_FLAG_SB : This flag indicates that the system entered in\n  *                               STANDBY mode.\n  *            @arg PWR_FLAG_SB_D1 : This flag indicates that the D1 domain\n  *                                  entered in STANDBY mode.\n  *            @arg PWR_FLAG_SB_D2 : This flag indicates that the D2 domain\n  *                                  entered in STANDBY mode.\n  *            @arg PWR_FLAG2_STOP : This flag indicates that the system entered\n  *                                 in STOP mode.\n  *            @arg PWR_FLAG2_SB : This flag indicates that the system entered\n  *                                in STANDBY mode.\n  *            @arg PWR_FLAG2_SB_D1 : This flag indicates that the D1 domain\n  *                                   entered in STANDBY mode.\n  *            @arg PWR_FLAG2_SB_D2 : This flag indicates that the D2 domain\n  *                                   entered in STANDBY mode.\n  *            @arg PWR_FLAG_CPU_HOLD : This flag indicates that the CPU1 wakes\n  *                                     up with hold.\n  *            @arg PWR_FLAG_CPU2_HOLD : This flag indicates that the CPU2 wakes\n  *                                      up with hold.\n  *            @arg PWR_FLAG_SMPSEXTRDY : This flag indicates that the SMPS\n  *                                       External supply is sready.\n  *            @arg PWR_FLAG_SCUEN : This flag indicates that the supply\n  *                                  configuration update is enabled.\n  *            @arg PWR_FLAG_MMCVDO : This flag indicates that the VDDMMC is\n  *                                   above or equal to 1.2 V.\n  * @note   The PWR_FLAG_PVDO, PWR_FLAG_AVDO, PWR_FLAG_ACTVOSRDY, PWR_FLAG_BRR,\n  *         PWR_FLAG_VOSRDY, PWR_FLAG_USB33RDY, PWR_FLAG_TEMPH, PWR_FLAG_TEMPL,\n  *         PWR_FLAG_VBATH, PWR_FLAG_VBATL, PWR_FLAG_STOP and PWR_FLAG_SB flags\n  *         are used for all H7 family lines.\n  *         The PWR_FLAG2_STOP, PWR_FLAG2_SB, PWR_FLAG2_SB_D1, PWR_FLAG2_SB_D2,\n  *         PWR_FLAG_CPU_HOLD and PWR_FLAG_CPU2_HOLD flags are used only for H7\n  *         dual core lines.\n  *         The PWR_FLAG_SB_D1 and PWR_FLAG_SB_D2 flags are used for all H7\n  *         family except STM32H7Axxx and STM32H7Bxxx lines.\n  *         The PWR_FLAG_MMCVDO flag is used only for STM32H7Axxx and\n  *         STM32H7Bxxx lines.\n  *         The PWR_FLAG_SCUEN flag is used for devices that support only LDO\n  *         regulator.\n  *         The PWR_FLAG_SMPSEXTRDY flag is used for devices that support LDO\n  *         and SMPS regulators.\n  * @retval The (__FLAG__) state (TRUE or FALSE).\n  */\n#if defined (DUAL_CORE) /* Dual core lines */\n#define __HAL_PWR_GET_FLAG(__FLAG__)                                                              \\\n(((__FLAG__) == PWR_FLAG_PVDO)       ? ((PWR->CSR1 & PWR_CSR1_PVDO)       == PWR_CSR1_PVDO)      :\\\n ((__FLAG__) == PWR_FLAG_AVDO)       ? ((PWR->CSR1 & PWR_CSR1_AVDO)       == PWR_CSR1_AVDO)      :\\\n ((__FLAG__) == PWR_FLAG_ACTVOSRDY)  ? ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY)  == PWR_CSR1_ACTVOSRDY) :\\\n ((__FLAG__) == PWR_FLAG_VOSRDY)     ? ((PWR->D3CR & PWR_D3CR_VOSRDY)     == PWR_D3CR_VOSRDY)    :\\\n ((__FLAG__) == PWR_FLAG_SMPSEXTRDY) ? ((PWR->CR3 & PWR_CR3_SMPSEXTRDY)   == PWR_CR3_SMPSEXTRDY) :\\\n ((__FLAG__) == PWR_FLAG_BRR)        ? ((PWR->CR2 & PWR_CR2_BRRDY)        == PWR_CR2_BRRDY)      :\\\n ((__FLAG__) == PWR_FLAG_CPU_HOLD)   ? ((PWR->CPU2CR & PWR_CPU2CR_HOLD1F) == PWR_CPU2CR_HOLD1F)  :\\\n ((__FLAG__) == PWR_FLAG_CPU2_HOLD)  ? ((PWR->CPUCR & PWR_CPUCR_HOLD2F)   == PWR_CPUCR_HOLD2F)   :\\\n ((__FLAG__) == PWR_FLAG_SB)         ? ((PWR->CPUCR & PWR_CPUCR_SBF)      == PWR_CPUCR_SBF)      :\\\n ((__FLAG__) == PWR_FLAG2_SB)        ? ((PWR->CPU2CR & PWR_CPU2CR_SBF)    == PWR_CPU2CR_SBF)     :\\\n ((__FLAG__) == PWR_FLAG_STOP)       ? ((PWR->CPUCR & PWR_CPUCR_STOPF)    == PWR_CPUCR_STOPF)    :\\\n ((__FLAG__) == PWR_FLAG2_STOP)      ? ((PWR->CPU2CR & PWR_CPU2CR_STOPF)  == PWR_CPU2CR_STOPF)   :\\\n ((__FLAG__) == PWR_FLAG_SB_D1)      ? ((PWR->CPUCR & PWR_CPUCR_SBF_D1)   == PWR_CPUCR_SBF_D1)   :\\\n ((__FLAG__) == PWR_FLAG2_SB_D1)     ? ((PWR->CPU2CR & PWR_CPU2CR_SBF_D1) == PWR_CPU2CR_SBF_D1)  :\\\n ((__FLAG__) == PWR_FLAG_SB_D2)      ? ((PWR->CPUCR & PWR_CPUCR_SBF_D2)   == PWR_CPUCR_SBF_D2)   :\\\n ((__FLAG__) == PWR_FLAG2_SB_D2)     ? ((PWR->CPU2CR & PWR_CPU2CR_SBF_D2) == PWR_CPU2CR_SBF_D2)  :\\\n ((__FLAG__) == PWR_FLAG_USB33RDY)   ? ((PWR->CR3 & PWR_CR3_USB33RDY)     == PWR_CR3_USB33RDY)   :\\\n ((__FLAG__) == PWR_FLAG_TEMPH)      ? ((PWR->CR2 & PWR_CR2_TEMPH)        == PWR_CR2_TEMPH)      :\\\n ((__FLAG__) == PWR_FLAG_TEMPL)      ? ((PWR->CR2 & PWR_CR2_TEMPL)        == PWR_CR2_TEMPL)      :\\\n ((__FLAG__) == PWR_FLAG_VBATH)      ? ((PWR->CR2 & PWR_CR2_VBATH)        == PWR_CR2_VBATH)      :\\\n ((PWR->CR2 & PWR_CR2_VBATL) == PWR_CR2_VBATL))\n#else /* Single core lines */\n#if defined (PWR_CPUCR_SBF_D2) /* STM32H72x, STM32H73x, STM32H74x and STM32H75x lines */\n#if defined (SMPS) /* STM32H725 and STM32H735 lines */\n#define __HAL_PWR_GET_FLAG(__FLAG__)                                                              \\\n(((__FLAG__) == PWR_FLAG_PVDO)       ? ((PWR->CSR1 & PWR_CSR1_PVDO)      == PWR_CSR1_PVDO)       :\\\n ((__FLAG__) == PWR_FLAG_AVDO)       ? ((PWR->CSR1 & PWR_CSR1_AVDO)      == PWR_CSR1_AVDO)       :\\\n ((__FLAG__) == PWR_FLAG_ACTVOSRDY)  ? ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == PWR_CSR1_ACTVOSRDY)  :\\\n ((__FLAG__) == PWR_FLAG_VOSRDY)     ? ((PWR->D3CR & PWR_D3CR_VOSRDY)    == PWR_D3CR_VOSRDY)     :\\\n ((__FLAG__) == PWR_FLAG_SMPSEXTRDY) ? ((PWR->CR3 & PWR_FLAG_SMPSEXTRDY) == PWR_FLAG_SMPSEXTRDY) :\\\n ((__FLAG__) == PWR_FLAG_BRR)        ? ((PWR->CR2 & PWR_CR2_BRRDY)       == PWR_CR2_BRRDY)       :\\\n ((__FLAG__) == PWR_FLAG_SB)         ? ((PWR->CPUCR & PWR_CPUCR_SBF)     == PWR_CPUCR_SBF)       :\\\n ((__FLAG__) == PWR_FLAG_STOP)       ? ((PWR->CPUCR & PWR_CPUCR_STOPF)   == PWR_CPUCR_STOPF)     :\\\n ((__FLAG__) == PWR_FLAG_SB_D1)      ? ((PWR->CPUCR & PWR_CPUCR_SBF_D1)  == PWR_CPUCR_SBF_D1)    :\\\n ((__FLAG__) == PWR_FLAG_SB_D2)      ? ((PWR->CPUCR & PWR_CPUCR_SBF_D2)  == PWR_CPUCR_SBF_D2)    :\\\n ((__FLAG__) == PWR_FLAG_USB33RDY)   ? ((PWR->CR3 & PWR_CR3_USB33RDY)    == PWR_CR3_USB33RDY)    :\\\n ((__FLAG__) == PWR_FLAG_TEMPH)      ? ((PWR->CR2 & PWR_CR2_TEMPH)       == PWR_CR2_TEMPH)       :\\\n ((__FLAG__) == PWR_FLAG_TEMPL)      ? ((PWR->CR2 & PWR_CR2_TEMPL)       == PWR_CR2_TEMPL)       :\\\n ((__FLAG__) == PWR_FLAG_VBATH)      ? ((PWR->CR2 & PWR_CR2_VBATH)       == PWR_CR2_VBATH)       :\\\n ((PWR->CR2 & PWR_CR2_VBATL) == PWR_CR2_VBATL))\n#else /* STM32H723, STM32H733, STM32H742, STM32H743, STM32H750 and STM32H753 lines */\n#define __HAL_PWR_GET_FLAG(__FLAG__)                                                            \\\n(((__FLAG__) == PWR_FLAG_PVDO)      ? ((PWR->CSR1 & PWR_CSR1_PVDO)      == PWR_CSR1_PVDO)      :\\\n ((__FLAG__) == PWR_FLAG_AVDO)      ? ((PWR->CSR1 & PWR_CSR1_AVDO)      == PWR_CSR1_AVDO)      :\\\n ((__FLAG__) == PWR_FLAG_ACTVOSRDY) ? ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == PWR_CSR1_ACTVOSRDY) :\\\n ((__FLAG__) == PWR_FLAG_VOSRDY)    ? ((PWR->D3CR & PWR_D3CR_VOSRDY)    == PWR_D3CR_VOSRDY)    :\\\n ((__FLAG__) == PWR_FLAG_SCUEN)     ? ((PWR->CR3 & PWR_CR3_SCUEN)       == PWR_CR3_SCUEN)      :\\\n ((__FLAG__) == PWR_FLAG_BRR)       ? ((PWR->CR2 & PWR_CR2_BRRDY)       == PWR_CR2_BRRDY)      :\\\n ((__FLAG__) == PWR_FLAG_SB)        ? ((PWR->CPUCR & PWR_CPUCR_SBF)     == PWR_CPUCR_SBF)      :\\\n ((__FLAG__) == PWR_FLAG_STOP)      ? ((PWR->CPUCR & PWR_CPUCR_STOPF)   == PWR_CPUCR_STOPF)    :\\\n ((__FLAG__) == PWR_FLAG_SB_D1)     ? ((PWR->CPUCR & PWR_CPUCR_SBF_D1)  == PWR_CPUCR_SBF_D1)   :\\\n ((__FLAG__) == PWR_FLAG_SB_D2)     ? ((PWR->CPUCR & PWR_CPUCR_SBF_D2)  == PWR_CPUCR_SBF_D2)   :\\\n ((__FLAG__) == PWR_FLAG_USB33RDY)  ? ((PWR->CR3 & PWR_CR3_USB33RDY)    == PWR_CR3_USB33RDY)   :\\\n ((__FLAG__) == PWR_FLAG_TEMPH)     ? ((PWR->CR2 & PWR_CR2_TEMPH)       == PWR_CR2_TEMPH)      :\\\n ((__FLAG__) == PWR_FLAG_TEMPL)     ? ((PWR->CR2 & PWR_CR2_TEMPL)       == PWR_CR2_TEMPL)      :\\\n ((__FLAG__) == PWR_FLAG_VBATH)     ? ((PWR->CR2 & PWR_CR2_VBATH)       == PWR_CR2_VBATH)      :\\\n ((PWR->CR2 & PWR_CR2_VBATL) == PWR_CR2_VBATL))\n#endif /* defined (SMPS) */\n#else /* STM32H7Axxx and STM32H7Bxxx lines */\n#if defined (SMPS) /* STM32H7AxxQ and STM32H7BxxQ lines */\n#define __HAL_PWR_GET_FLAG(__FLAG__)                                                             \\\n(((__FLAG__) == PWR_FLAG_PVDO)       ? ((PWR->CSR1 & PWR_CSR1_PVDO)      == PWR_CSR1_PVDO)      :\\\n ((__FLAG__) == PWR_FLAG_AVDO)       ? ((PWR->CSR1 & PWR_CSR1_AVDO)      == PWR_CSR1_AVDO)      :\\\n ((__FLAG__) == PWR_FLAG_ACTVOSRDY)  ? ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == PWR_CSR1_ACTVOSRDY) :\\\n ((__FLAG__) == PWR_FLAG_BRR)        ? ((PWR->CR2 & PWR_CR2_BRRDY)       == PWR_CR2_BRRDY)      :\\\n ((__FLAG__) == PWR_FLAG_VOSRDY)     ? ((PWR->SRDCR & PWR_SRDCR_VOSRDY)  == PWR_SRDCR_VOSRDY)   :\\\n ((__FLAG__) == PWR_FLAG_STOP)       ? ((PWR->CPUCR & PWR_CPUCR_STOPF)   == PWR_CPUCR_STOPF)    :\\\n ((__FLAG__) == PWR_FLAG_SB)         ? ((PWR->CPUCR & PWR_CPUCR_SBF)     == PWR_CPUCR_SBF)      :\\\n ((__FLAG__) == PWR_FLAG_MMCVDO)     ? ((PWR->CSR1 & PWR_CSR1_MMCVDO)    == PWR_CSR1_MMCVDO)    :\\\n ((__FLAG__) == PWR_FLAG_SMPSEXTRDY) ? ((PWR->CR3 & PWR_CR3_SMPSEXTRDY)  == PWR_CR3_SMPSEXTRDY) :\\\n ((__FLAG__) == PWR_FLAG_USB33RDY)   ? ((PWR->CR3 & PWR_CR3_USB33RDY)    == PWR_CR3_USB33RDY)   :\\\n ((__FLAG__) == PWR_FLAG_TEMPH)      ? ((PWR->CR2 & PWR_CR2_TEMPH)       == PWR_CR2_TEMPH)      :\\\n ((__FLAG__) == PWR_FLAG_TEMPL)      ? ((PWR->CR2 & PWR_CR2_TEMPL)       == PWR_CR2_TEMPL)      :\\\n ((__FLAG__) == PWR_FLAG_VBATH)      ? ((PWR->CR2 & PWR_CR2_VBATH)       == PWR_CR2_VBATH)      :\\\n ((PWR->CR2 & PWR_CR2_VBATL) == PWR_CR2_VBATL))\n#else /* STM32H7Axx and STM32H7Bxx lines */\n#define __HAL_PWR_GET_FLAG(__FLAG__)                                                            \\\n(((__FLAG__) == PWR_FLAG_PVDO)      ? ((PWR->CSR1 & PWR_CSR1_PVDO)      == PWR_CSR1_PVDO)      :\\\n ((__FLAG__) == PWR_FLAG_AVDO)      ? ((PWR->CSR1 & PWR_CSR1_AVDO)      == PWR_CSR1_AVDO)      :\\\n ((__FLAG__) == PWR_FLAG_ACTVOSRDY) ? ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == PWR_CSR1_ACTVOSRDY) :\\\n ((__FLAG__) == PWR_FLAG_BRR)       ? ((PWR->CR2 & PWR_CR2_BRRDY)       == PWR_CR2_BRRDY)      :\\\n ((__FLAG__) == PWR_FLAG_VOSRDY)    ? ((PWR->SRDCR & PWR_SRDCR_VOSRDY)  == PWR_SRDCR_VOSRDY)   :\\\n ((__FLAG__) == PWR_FLAG_SCUEN)     ? ((PWR->CR3 & PWR_CR3_SCUEN)       == PWR_CR3_SCUEN)      :\\\n ((__FLAG__) == PWR_FLAG_STOP)      ? ((PWR->CPUCR & PWR_CPUCR_STOPF)   == PWR_CPUCR_STOPF)    :\\\n ((__FLAG__) == PWR_FLAG_SB)        ? ((PWR->CPUCR & PWR_CPUCR_SBF)     == PWR_CPUCR_SBF)      :\\\n ((__FLAG__) == PWR_FLAG_MMCVDO)    ? ((PWR->CSR1 & PWR_CSR1_MMCVDO)    == PWR_CSR1_MMCVDO)    :\\\n ((__FLAG__) == PWR_FLAG_USB33RDY)  ? ((PWR->CR3 & PWR_CR3_USB33RDY)    == PWR_CR3_USB33RDY)   :\\\n ((__FLAG__) == PWR_FLAG_TEMPH)     ? ((PWR->CR2 & PWR_CR2_TEMPH)       == PWR_CR2_TEMPH)      :\\\n ((__FLAG__) == PWR_FLAG_TEMPL)     ? ((PWR->CR2 & PWR_CR2_TEMPL)       == PWR_CR2_TEMPL)      :\\\n ((__FLAG__) == PWR_FLAG_VBATH)     ? ((PWR->CR2 & PWR_CR2_VBATH)       == PWR_CR2_VBATH)      :\\\n ((PWR->CR2 & PWR_CR2_VBATL) == PWR_CR2_VBATL))\n#endif /* SMPS */\n#endif /* PWR_CPUCR_SBF_D2 */\n#endif /* DUAL_CORE */\n\n/** @brief  Check PWR wake up flags are set or not.\n  * @param  __FLAG__: specifies the wake up flag to check.\n  *           This parameter can be one of the following values:\n  *            @arg PWR_FLAG_WKUP1 : This parameter clear Wake up line 1 flag.\n  *            @arg PWR_FLAG_WKUP2 : This parameter clear Wake up line 2 flag.\n  *            @arg PWR_FLAG_WKUP3 : This parameter clear Wake up line 3 flag.\n  *            @arg PWR_FLAG_WKUP4 : This parameter clear Wake up line 4 flag.\n  *            @arg PWR_FLAG_WKUP5 : This parameter clear Wake up line 5 flag.\n  *            @arg PWR_FLAG_WKUP6 : This parameter clear Wake up line 6 flag.\n  * @note   The PWR_FLAG_WKUP3 and PWR_FLAG_WKUP5 are available only for devices\n  *         that support GPIOI port.\n  * @retval The (__FLAG__) state (TRUE or FALSE).\n  */\n#define __HAL_PWR_GET_WAKEUPFLAG(__FLAG__) ((PWR->WKUPFR & (__FLAG__)) ? 0 : 1)\n\n#if defined (DUAL_CORE)\n/** @brief  Clear CPU PWR flags.\n  * @param  __FLAG__ : Specifies the flag to clear.\n  * @note   This parameter is not used for the STM32H7 family and is kept as\n  *         parameter just to maintain compatibility with other families.\n  * @note   This macro clear all CPU flags STOPF, SBF, SBF_D1, and SBF_D2.\n  *           This parameter can be one of the following values :\n  *            @arg PWR_CPU_FLAGS : Clear HOLD2F, STOPF, SBF, SBF_D1, and SBF_D2\n  *                                 CPU flags.\n  * @retval None.\n  */\n#define __HAL_PWR_CLEAR_FLAG(__FLAG__)      \\\ndo {                                        \\\n     SET_BIT(PWR->CPUCR, PWR_CPUCR_CSSF);   \\\n     SET_BIT(PWR->CPU2CR, PWR_CPU2CR_CSSF); \\\n} while(0)\n#else\n/** @brief  Clear CPU PWR flags.\n  * @param  __FLAG__ : Specifies the flag to clear.\n  * @note   This parameter is not used for the STM32H7 family and is kept as\n  *         parameter just to maintain compatibility with other families.\n  * @note   This macro clear all CPU flags.\n  *         For single core devices except STM32H7Axxx and STM32H7Bxxx, CPU\n  *         flags are STOPF, SBF, SBF_D1 and SBF_D2.\n  *         For STM32H7Axxx and STM32H7Bxxx lines, CPU flags are STOPF and SBF.\n  * @retval None.\n  */\n#define __HAL_PWR_CLEAR_FLAG(__FLAG__) SET_BIT(PWR->CPUCR, PWR_CPUCR_CSSF)\n#endif /* defined (DUAL_CORE) */\n\n/** @brief  Clear PWR wake up flags.\n  * @param  __FLAG__ : Specifies the wake up flag to be cleared.\n  *           This parameter can be one of the following values :\n  *            @arg PWR_FLAG_WKUP1 : This parameter clear Wake up line 1 flag.\n  *            @arg PWR_FLAG_WKUP2 : This parameter clear Wake up line 2 flag.\n  *            @arg PWR_FLAG_WKUP3 : This parameter clear Wake up line 3 flag.\n  *            @arg PWR_FLAG_WKUP4 : This parameter clear Wake up line 4 flag.\n  *            @arg PWR_FLAG_WKUP5 : This parameter clear Wake up line 5 flag.\n  *            @arg PWR_FLAG_WKUP6 : This parameter clear Wake up line 6 flag.\n  * @note   The PWR_FLAG_WKUP3 and PWR_FLAG_WKUP5 are available only for devices\n  *         that support GPIOI port.\n  * @retval None.\n  */\n#define __HAL_PWR_CLEAR_WAKEUPFLAG(__FLAG__) SET_BIT(PWR->WKUPCR, (__FLAG__))\n\n/**\n  * @brief Enable the PVD EXTI Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR1, PWR_EXTI_LINE_PVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Enable the PVD EXTI D2 Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTID2_ENABLE_IT() SET_BIT(EXTI_D2->IMR1, PWR_EXTI_LINE_PVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief Disable the PVD EXTI Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR1, PWR_EXTI_LINE_PVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Disable the PVD EXTI D2 Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTID2_DISABLE_IT() CLEAR_BIT(EXTI_D2->IMR1, PWR_EXTI_LINE_PVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief   Enable event on PVD EXTI Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR1, PWR_EXTI_LINE_PVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Enable event on PVD EXTI D2 Line.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTID2_ENABLE_EVENT() SET_BIT(EXTI_D2->EMR1, PWR_EXTI_LINE_PVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief   Disable event on PVD EXTI Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR1, PWR_EXTI_LINE_PVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Disable event on PVD EXTI D2 Line.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTID2_DISABLE_EVENT() CLEAR_BIT(EXTI_D2->EMR1, PWR_EXTI_LINE_PVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief Enable the PVD Rising Interrupt Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR1, PWR_EXTI_LINE_PVD)\n\n/**\n  * @brief Disable the PVD Rising Interrupt Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR1, PWR_EXTI_LINE_PVD)\n\n/**\n  * @brief Enable the PVD Falling Interrupt Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR1, PWR_EXTI_LINE_PVD)\n\n/**\n  * @brief Disable the PVD Falling Interrupt Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR1, PWR_EXTI_LINE_PVD)\n\n/**\n  * @brief Enable the PVD Rising & Falling Interrupt Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE() \\\ndo {                                                    \\\n      __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();          \\\n      __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE();         \\\n} while(0);\n\n/**\n  * @brief Disable the PVD Rising & Falling Interrupt Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE() \\\ndo {                                                     \\\n      __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();          \\\n      __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE();         \\\n} while(0);\n\n/**\n  * @brief Check whether the specified PVD EXTI interrupt flag is set or not.\n  * @retval EXTI PVD Line Status.\n  */\n#define __HAL_PWR_PVD_EXTI_GET_FLAG() ((READ_BIT(EXTI->PR1, PWR_EXTI_LINE_PVD) == PWR_EXTI_LINE_PVD) ? 1UL : 0UL)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Checks whether the specified PVD EXTI interrupt flag is set or not.\n  * @retval EXTI D2 PVD Line Status.\n  */\n#define __HAL_PWR_PVD_EXTID2_GET_FLAG() ((READ_BIT(EXTI_D2->PR1, PWR_EXTI_LINE_PVD) == PWR_EXTI_LINE_PVD) ? 1UL : 0UL)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief Clear the PVD EXTI flag.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_CLEAR_FLAG() SET_BIT(EXTI->PR1, PWR_EXTI_LINE_PVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Clear the PVD EXTI D2 flag.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTID2_CLEAR_FLAG() SET_BIT(EXTI_D2->PR1, PWR_EXTI_LINE_PVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief  Generates a Software interrupt on PVD EXTI line.\n  * @retval None.\n  */\n#define __HAL_PWR_PVD_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER1, PWR_EXTI_LINE_PVD)\n/**\n  * @}\n  */\n\n/* Include PWR HAL Extension module */\n#include \"stm32h7xx_hal_pwr_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup PWR_Exported_Functions PWR Exported Functions\n  * @{\n  */\n\n/** @addtogroup PWR_Exported_Functions_Group1 Initialization and De-Initialization Functions\n  * @{\n  */\n/* Initialization and de-initialization functions *****************************/\nvoid HAL_PWR_DeInit            (void);\nvoid HAL_PWR_EnableBkUpAccess  (void);\nvoid HAL_PWR_DisableBkUpAccess (void);\n/**\n  * @}\n  */\n\n/** @addtogroup PWR_Exported_Functions_Group2 Peripheral Control Functions\n  * @{\n  */\n/* Peripheral Control functions  **********************************************/\n/* PVD configuration */\nvoid HAL_PWR_ConfigPVD  (PWR_PVDTypeDef *sConfigPVD);\nvoid HAL_PWR_EnablePVD  (void);\nvoid HAL_PWR_DisablePVD (void);\n\n/* WakeUp pins configuration */\nvoid HAL_PWR_EnableWakeUpPin  (uint32_t WakeUpPinPolarity);\nvoid HAL_PWR_DisableWakeUpPin (uint32_t WakeUpPinx);\n\n/* Low Power modes entry */\nvoid HAL_PWR_EnterSTOPMode    (uint32_t Regulator, uint8_t STOPEntry);\nvoid HAL_PWR_EnterSLEEPMode   (uint32_t Regulator, uint8_t SLEEPEntry);\nvoid HAL_PWR_EnterSTANDBYMode (void);\n\n/* Power PVD IRQ Handler */\nvoid HAL_PWR_PVD_IRQHandler (void);\nvoid HAL_PWR_PVDCallback    (void);\n\n/* Cortex System Control functions  *******************************************/\nvoid HAL_PWR_EnableSleepOnExit  (void);\nvoid HAL_PWR_DisableSleepOnExit (void);\nvoid HAL_PWR_EnableSEVOnPend    (void);\nvoid HAL_PWR_DisableSEVOnPend   (void);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup PWR_Private_Constants PWR Private Constants\n  * @{\n  */\n\n/** @defgroup PWR_PVD_EXTI_Line PWR PVD EXTI Line\n  * @{\n  */\n#define PWR_EXTI_LINE_PVD  EXTI_IMR1_IM16 /*!< External interrupt line 16\n                                               Connected to the PVD EXTI Line */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup PWR_Private_Macros PWR Private Macros\n  * @{\n  */\n\n/** @defgroup PWR_IS_PWR_Definitions PWR Private macros to check input parameters\n  * @{\n  */\n/* Check PVD level parameter */\n#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLEVEL_0) ||\\\n                                 ((LEVEL) == PWR_PVDLEVEL_1) ||\\\n                                 ((LEVEL) == PWR_PVDLEVEL_2) ||\\\n                                 ((LEVEL) == PWR_PVDLEVEL_3) ||\\\n                                 ((LEVEL) == PWR_PVDLEVEL_4) ||\\\n                                 ((LEVEL) == PWR_PVDLEVEL_5) ||\\\n                                 ((LEVEL) == PWR_PVDLEVEL_6) ||\\\n                                 ((LEVEL) == PWR_PVDLEVEL_7))\n\n/* Check PVD mode parameter */\n#define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_IT_RISING)            ||\\\n                               ((MODE) == PWR_PVD_MODE_IT_FALLING)           ||\\\n                               ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING)    ||\\\n                               ((MODE) == PWR_PVD_MODE_EVENT_RISING)         ||\\\n                               ((MODE) == PWR_PVD_MODE_EVENT_FALLING)        ||\\\n                               ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING) ||\\\n                               ((MODE) == PWR_PVD_MODE_NORMAL))\n\n/* Check low power regulator parameter */\n#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON)   ||\\\n                                     ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON))\n\n/* Check low power mode entry parameter */\n#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) ||\\\n                                   ((ENTRY) == PWR_SLEEPENTRY_WFE))\n\n/* Check low power mode entry parameter */\n#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) ||\\\n                                  ((ENTRY) == PWR_STOPENTRY_WFE))\n\n/* Check voltage scale level parameter */\n#define IS_PWR_REGULATOR_VOLTAGE(VOLTAGE) (((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE0) || \\\n                                           ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \\\n                                           ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE2) || \\\n                                           ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE3))\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif /* __cplusplus */\n\n#endif /* STM32H7xx_HAL_PWR_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pwr_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_pwr_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of PWR HAL Extension module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_PWR_EX_H\n#define STM32H7xx_HAL_PWR_EX_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif /* __cplusplus */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup PWREx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup PWREx_Exported_Types PWREx Exported Types\n  * @{\n  */\n/**\n  * @brief  PWREx AVD configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t AVDLevel; /*!< AVDLevel : Specifies the AVD detection level. This\n                                     parameter can be a value of @ref\n                                     PWREx_AVD_detection_level\n                     */\n\n  uint32_t Mode;     /*!< Mode : Specifies the EXTI operating mode for the AVD\n                                 event. This parameter can be a value of @ref\n                                 PWREx_AVD_Mode.\n                     */\n}PWREx_AVDTypeDef;\n\n/**\n  * @brief  PWREx Wakeup pin configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t WakeUpPin;   /*!< WakeUpPin: Specifies the Wake-Up pin to be enabled.\n                                        This parameter can be a value of @ref\n                                        PWREx_WakeUp_Pins\n                        */\n\n  uint32_t PinPolarity; /*!< PinPolarity: Specifies the Wake-Up pin polarity.\n                                          This parameter can be a value of @ref\n                                          PWREx_PIN_Polarity\n                        */\n\n  uint32_t PinPull;     /*!< PinPull: Specifies the Wake-Up pin pull. This\n                                      parameter can be a value of @ref\n                                      PWREx_PIN_Pull\n                        */\n}PWREx_WakeupPinTypeDef;\n\n#if defined (PWR_CSR1_MMCVDO)\n/**\n  * @brief  PWR VDDMMC voltage level enum definition\n  */\ntypedef enum\n{\n  PWR_MMC_VOLTAGE_BELOW_1V2,      /*!< VDDMMC is below 1V2          */\n  PWR_MMC_VOLTAGE_EQUAL_ABOVE_1V2 /*!< VDDMMC is above or equal 1V2 */\n} PWREx_MMC_VoltageLevel;\n#endif /* defined (PWR_CSR1_MMCVDO) */\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup PWREx_Exported_Constants PWREx Exported Constants\n  * @{\n  */\n/** @defgroup PWREx_WakeUp_Pins PWREx Wake-Up Pins\n  * @{\n  */\n/* High level and No pull (default configuration) */\n#define PWR_WAKEUP_PIN6      PWR_WKUPEPR_WKUPEN6\n#if defined (PWR_WKUPEPR_WKUPEN5)\n#define PWR_WAKEUP_PIN5      PWR_WKUPEPR_WKUPEN5\n#endif /* defined (PWR_WKUPEPR_WKUPEN5) */\n#define PWR_WAKEUP_PIN4      PWR_WKUPEPR_WKUPEN4\n#if defined (PWR_WKUPEPR_WKUPEN3)\n#define PWR_WAKEUP_PIN3      PWR_WKUPEPR_WKUPEN3\n#endif /* defined (PWR_WKUPEPR_WKUPEN3) */\n#define PWR_WAKEUP_PIN2      PWR_WKUPEPR_WKUPEN2\n#define PWR_WAKEUP_PIN1      PWR_WKUPEPR_WKUPEN1\n\n/* High level and No pull */\n#define PWR_WAKEUP_PIN6_HIGH PWR_WKUPEPR_WKUPEN6\n#if defined (PWR_WKUPEPR_WKUPEN5)\n#define PWR_WAKEUP_PIN5_HIGH PWR_WKUPEPR_WKUPEN5\n#endif /* defined (PWR_WKUPEPR_WKUPEN5) */\n#define PWR_WAKEUP_PIN4_HIGH PWR_WKUPEPR_WKUPEN4\n#if defined (PWR_WKUPEPR_WKUPEN3)\n#define PWR_WAKEUP_PIN3_HIGH PWR_WKUPEPR_WKUPEN3\n#endif /* defined (PWR_WKUPEPR_WKUPEN3) */\n#define PWR_WAKEUP_PIN2_HIGH PWR_WKUPEPR_WKUPEN2\n#define PWR_WAKEUP_PIN1_HIGH PWR_WKUPEPR_WKUPEN1\n\n/* Low level and No pull */\n#define PWR_WAKEUP_PIN6_LOW  (PWR_WKUPEPR_WKUPP6 | PWR_WKUPEPR_WKUPEN6)\n#if defined (PWR_WKUPEPR_WKUPP5)\n#define PWR_WAKEUP_PIN5_LOW  (PWR_WKUPEPR_WKUPP5 | PWR_WKUPEPR_WKUPEN5)\n#endif /* defined (PWR_WKUPEPR_WKUPP5) */\n#define PWR_WAKEUP_PIN4_LOW  (PWR_WKUPEPR_WKUPP4 | PWR_WKUPEPR_WKUPEN4)\n#if defined (PWR_WKUPEPR_WKUPP3)\n#define PWR_WAKEUP_PIN3_LOW  (PWR_WKUPEPR_WKUPP3 | PWR_WKUPEPR_WKUPEN3)\n#endif /* defined (PWR_WKUPEPR_WKUPP3) */\n#define PWR_WAKEUP_PIN2_LOW  (PWR_WKUPEPR_WKUPP2 | PWR_WKUPEPR_WKUPEN2)\n#define PWR_WAKEUP_PIN1_LOW  (PWR_WKUPEPR_WKUPP1 | PWR_WKUPEPR_WKUPEN1)\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_PIN_Polarity PWREx Pin Polarity configuration\n  * @{\n  */\n#define PWR_PIN_POLARITY_HIGH (0x00000000U)\n#define PWR_PIN_POLARITY_LOW  (0x00000001U)\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_PIN_Pull PWREx Pin Pull configuration\n  * @{\n  */\n#define PWR_PIN_NO_PULL   (0x00000000U)\n#define PWR_PIN_PULL_UP   (0x00000001U)\n#define PWR_PIN_PULL_DOWN (0x00000002U)\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_Wakeup_Pins_Flags PWREx Wakeup Pins Flags.\n  * @{\n  */\n#define PWR_WAKEUP_FLAG1 PWR_WKUPFR_WKUPF1 /*!< Wakeup flag on PA0  */\n#define PWR_WAKEUP_FLAG2 PWR_WKUPFR_WKUPF2 /*!< Wakeup flag on PA2  */\n#if defined (PWR_WKUPFR_WKUPF3)\n#define PWR_WAKEUP_FLAG3 PWR_WKUPFR_WKUPF3 /*!< Wakeup flag on PI8  */\n#endif /* defined (PWR_WKUPFR_WKUPF3) */\n#define PWR_WAKEUP_FLAG4 PWR_WKUPFR_WKUPF4 /*!< Wakeup flag on PC13 */\n#if defined (PWR_WKUPFR_WKUPF5)\n#define PWR_WAKEUP_FLAG5 PWR_WKUPFR_WKUPF5 /*!< Wakeup flag on PI11 */\n#endif /* defined (PWR_WKUPFR_WKUPF5) */\n#define PWR_WAKEUP_FLAG6 PWR_WKUPFR_WKUPF6 /*!< Wakeup flag on PC1  */\n#if defined (PWR_WKUPFR_WKUPF3)\n#define PWR_WAKEUP_FLAG_ALL (PWR_WKUPFR_WKUPF1 | PWR_WKUPFR_WKUPF2 |\\\n                             PWR_WKUPFR_WKUPF3 | PWR_WKUPFR_WKUPF4 |\\\n                             PWR_WKUPFR_WKUPF5 | PWR_WKUPFR_WKUPF6)\n#else\n#define PWR_WAKEUP_FLAG_ALL (PWR_WKUPFR_WKUPF1 | PWR_WKUPFR_WKUPF2 |\\\n                             PWR_WKUPFR_WKUPF4 | PWR_WKUPFR_WKUPF6)\n#endif /* defined (PWR_WKUPFR_WKUPF3) */\n/**\n  * @}\n  */\n\n#if defined (DUAL_CORE)\n/** @defgroup PWREx_Core_Select PWREx Core definition\n  * @{\n  */\n#define PWR_CORE_CPU1 (0x00000000U)\n#define PWR_CORE_CPU2 (0x00000001U)\n/**\n  * @}\n  */\n#endif /* defined (DUAL_CORE) */\n\n/** @defgroup PWREx_Domains PWREx Domains definition\n  * @{\n  */\n#define PWR_D1_DOMAIN (0x00000000U)\n#if defined (PWR_CPUCR_PDDS_D2)\n#define PWR_D2_DOMAIN (0x00000001U)\n#endif /* defined (PWR_CPUCR_PDDS_D2) */\n#define PWR_D3_DOMAIN (0x00000002U)\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_Domain_Flags PWREx Domain Flags definition\n  * @{\n  */\n#if defined (DUAL_CORE)\n#define PWR_D1_DOMAIN_FLAGS  (0x00000000U)\n#define PWR_D2_DOMAIN_FLAGS  (0x00000001U)\n#define PWR_ALL_DOMAIN_FLAGS (0x00000002U)\n#else\n#define PWR_CPU_FLAGS       (0x00000000U)\n#endif /* defined (DUAL_CORE) */\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_D3_State PWREx D3 Domain State\n  * @{\n  */\n#define PWR_D3_DOMAIN_STOP (0x00000000U)\n#define PWR_D3_DOMAIN_RUN  (0x00000800U)\n\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_Supply_configuration PWREx Supply configuration\n  * @{\n  */\n#define PWR_LDO_SUPPLY                      PWR_CR3_LDOEN                                                               /*!< Core domains are supplied from the LDO                                                                     */\n#if defined (SMPS)\n#define PWR_DIRECT_SMPS_SUPPLY              PWR_CR3_SMPSEN                                                              /*!< Core domains are supplied from the SMPS only                                                               */\n#define PWR_SMPS_1V8_SUPPLIES_LDO           (PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEN    | PWR_CR3_LDOEN)                   /*!< The SMPS 1.8V output supplies the LDO which supplies the Core domains                                       */\n#define PWR_SMPS_2V5_SUPPLIES_LDO           (PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEN    | PWR_CR3_LDOEN)                   /*!< The SMPS 2.5V output supplies the LDO which supplies the Core domains                                       */\n#define PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO   (PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN)  /*!< The SMPS 1.8V output supplies an external circuits and the LDO. The Core domains are supplied from the LDO */\n#define PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO   (PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN)  /*!< The SMPS 2.5V output supplies an external circuits and the LDO. The Core domains are supplied from the LDO */\n#define PWR_SMPS_1V8_SUPPLIES_EXT           (PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS) /*!< The SMPS 1.8V output supplies an external source which supplies the Core domains                            */\n#define PWR_SMPS_2V5_SUPPLIES_EXT           (PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS) /*!< The SMPS 2.5V output supplies an external source which supplies the Core domains                            */\n#endif /* defined (SMPS) */\n#define PWR_EXTERNAL_SOURCE_SUPPLY          PWR_CR3_BYPASS                                                              /*!< The SMPS disabled and the LDO Bypass. The Core domains are supplied from an external source                 */\n\n#if defined (SMPS)\n#define PWR_SUPPLY_CONFIG_MASK (PWR_CR3_SMPSLEVEL | PWR_CR3_SMPSEXTHP | \\\n                                PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)\n#else\n#define PWR_SUPPLY_CONFIG_MASK (PWR_CR3_SCUEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)\n#endif /* defined (SMPS) */\n/**\n  * @}\n  */\n\n\n/** @defgroup PWREx_AVD_detection_level PWREx AVD detection level\n  * @{\n  */\n#define PWR_AVDLEVEL_0 PWR_CR1_ALS_LEV0 /*!< Analog voltage detector level 0\n                                             selection : 1V7                 */\n#define PWR_AVDLEVEL_1 PWR_CR1_ALS_LEV1 /*!< Analog voltage detector level 1\n                                             selection : 2V1                 */\n#define PWR_AVDLEVEL_2 PWR_CR1_ALS_LEV2 /*!< Analog voltage detector level 2\n                                             selection : 2V5                 */\n#define PWR_AVDLEVEL_3 PWR_CR1_ALS_LEV3 /*!< Analog voltage detector level 3\n                                             selection : 2V8                 */\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_AVD_Mode PWREx AVD Mode\n  * @{\n  */\n#define PWR_AVD_MODE_NORMAL               (0x00000000U)   /*!< Basic mode is used                                                 */\n#define PWR_AVD_MODE_IT_RISING            (0x00010001U)   /*!< External Interrupt Mode with Rising edge trigger detection         */\n#define PWR_AVD_MODE_IT_FALLING           (0x00010002U)   /*!< External Interrupt Mode with Falling edge trigger detection        */\n#define PWR_AVD_MODE_IT_RISING_FALLING    (0x00010003U)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection */\n#define PWR_AVD_MODE_EVENT_RISING         (0x00020001U)   /*!< Event Mode with Rising edge trigger detection                      */\n#define PWR_AVD_MODE_EVENT_FALLING        (0x00020002U)   /*!< Event Mode with Falling edge trigger detection                     */\n#define PWR_AVD_MODE_EVENT_RISING_FALLING (0x00020003U)   /*!< Event Mode with Rising/Falling edge trigger detection              */\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_Regulator_Voltage_Scale PWREx Regulator Voltage Scale\n  * @{\n  */\n#define PWR_REGULATOR_SVOS_SCALE5 (PWR_CR1_SVOS_0)\n#define PWR_REGULATOR_SVOS_SCALE4 (PWR_CR1_SVOS_1)\n#define PWR_REGULATOR_SVOS_SCALE3 (PWR_CR1_SVOS_0 | PWR_CR1_SVOS_1)\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_VBAT_Battery_Charging_Resistor PWR battery charging resistor selection\n  * @{\n  */\n#define PWR_BATTERY_CHARGING_RESISTOR_5    (0x00000000U) /*!< VBAT charging through a 5 kOhms resistor   */\n#define PWR_BATTERY_CHARGING_RESISTOR_1_5  PWR_CR3_VBRS  /*!< VBAT charging through a 1.5 kOhms resistor */\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_VBAT_Thresholds PWREx VBAT Thresholds\n  * @{\n  */\n#define PWR_VBAT_BETWEEN_HIGH_LOW_THRESHOLD  (0x00000000U)\n#define PWR_VBAT_BELOW_LOW_THRESHOLD         PWR_CR2_VBATL\n#define PWR_VBAT_ABOVE_HIGH_THRESHOLD        PWR_CR2_VBATH\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_TEMP_Thresholds PWREx Temperature Thresholds\n  * @{\n  */\n#define PWR_TEMP_BETWEEN_HIGH_LOW_THRESHOLD  (0x00000000U)\n#define PWR_TEMP_BELOW_LOW_THRESHOLD         PWR_CR2_TEMPL\n#define PWR_TEMP_ABOVE_HIGH_THRESHOLD        PWR_CR2_TEMPH\n/**\n  * @}\n  */\n/** @defgroup PWREx_AVD_EXTI_Line PWREx AVD EXTI Line 16\n  * @{\n  */\n#define PWR_EXTI_LINE_AVD EXTI_IMR1_IM16 /*!< External interrupt line 16\n                                              Connected to the AVD EXTI Line */\n/**\n  * @}\n  */\n\n#if defined (PWR_CR1_SRDRAMSO)\n/** @defgroup PWREx_Memory_Shut_Off Memory shut-off block selection\n  * @{\n  */\n#define PWR_SRD_AHB_MEMORY_BLOCK        PWR_CR1_SRDRAMSO    /*!< SmartRun domain AHB memory shut-off in DStop/DStop2 low-power mode         */\n#define PWR_USB_FDCAN_MEMORY_BLOCK      PWR_CR1_HSITFSO     /*!< High-speed interfaces USB and FDCAN memories shut-off in DStop/DStop2 mode */\n#define PWR_GFXMMU_JPEG_MEMORY_BLOCK    PWR_CR1_GFXSO       /*!< GFXMMU and JPEG memories shut-off in DStop/DStop2 mode                     */\n#define PWR_TCM_ECM_MEMORY_BLOCK        PWR_CR1_ITCMSO      /*!< Instruction TCM and ETM memories shut-off in DStop/DStop2 mode             */\n#define PWR_RAM1_AHB_MEMORY_BLOCK       PWR_CR1_AHBRAM1SO   /*!< AHB RAM1 shut-off in DStop/DStop2 mode                                     */\n#define PWR_RAM2_AHB_MEMORY_BLOCK       PWR_CR1_AHBRAM2SO   /*!< AHB RAM2 shut-off in DStop/DStop2 mode                                     */\n#define PWR_RAM1_AXI_MEMORY_BLOCK       PWR_CR1_AXIRAM1SO   /*!< AXI RAM1 shut-off in DStop/DStop2 mode                                     */\n#define PWR_RAM2_AXI_MEMORY_BLOCK       PWR_CR1_AXIRAM2SO   /*!< AXI RAM2 shut-off in DStop/DStop2 mode                                     */\n#define PWR_RAM3_AXI_MEMORY_BLOCK       PWR_CR1_AXIRAM3SO   /*!< AXI RAM3 shut-off in DStop/DStop2 mode                                     */\n#define PWR_MEMORY_BLOCK_KEEP_ON        0U                  /*!< Memory content is kept in DStop or DStop2 mode                             */\n#define PWR_MEMORY_BLOCK_SHUT_OFF       1U                  /*!< Memory content is lost in DStop or DStop2 mode                             */\n/**\n  * @}\n  */\n#endif /* defined (PWR_CR1_SRDRAMSO) */\n/**\n  * @}\n  */\n\n/* Exported macro ------------------------------------------------------------*/\n\n/** @defgroup PWREx_Exported_Macro PWREx Exported Macro\n  *  @{\n  */\n\n/**\n  * @brief Enable the AVD EXTI Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR1, PWR_EXTI_LINE_AVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Enable the AVD EXTI D2 Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTID2_ENABLE_IT() SET_BIT(EXTI_D2->IMR1, PWR_EXTI_LINE_AVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief Disable the AVD EXTI Line 16\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR1, PWR_EXTI_LINE_AVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Disable the AVD EXTI D2 Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTID2_DISABLE_IT() CLEAR_BIT(EXTI_D2->IMR1, PWR_EXTI_LINE_AVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief Enable event on AVD EXTI Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR1, PWR_EXTI_LINE_AVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Enable event on AVD EXTI D2 Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTID2_ENABLE_EVENT() SET_BIT(EXTI_D2->EMR1, PWR_EXTI_LINE_AVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief Disable event on AVD EXTI Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR1, PWR_EXTI_LINE_AVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Disable event on AVD EXTI D2 Line 16.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTID2_DISABLE_EVENT() CLEAR_BIT(EXTI_D2->EMR1, PWR_EXTI_LINE_AVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief Enable the AVD Extended Interrupt Rising Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR1, PWR_EXTI_LINE_AVD)\n\n/**\n  * @brief Disable the AVD Extended Interrupt Rising Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR1, PWR_EXTI_LINE_AVD)\n\n/**\n  * @brief Enable the AVD Extended Interrupt Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR1, PWR_EXTI_LINE_AVD)\n\n/**\n  * @brief Disable the AVD Extended Interrupt Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR1, PWR_EXTI_LINE_AVD)\n\n/**\n  * @brief Enable the AVD Extended Interrupt Rising and Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_ENABLE_RISING_FALLING_EDGE() \\\ndo {                                                    \\\n     __HAL_PWR_AVD_EXTI_ENABLE_RISING_EDGE();           \\\n     __HAL_PWR_AVD_EXTI_ENABLE_FALLING_EDGE();          \\\n} while(0);\n\n/**\n  * @brief Disable the AVD Extended Interrupt Rising & Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_DISABLE_RISING_FALLING_EDGE() \\\ndo {                                                     \\\n     __HAL_PWR_AVD_EXTI_DISABLE_RISING_EDGE();           \\\n     __HAL_PWR_AVD_EXTI_DISABLE_FALLING_EDGE();          \\\n} while(0);\n\n/**\n  * @brief Check whether the specified AVD EXTI interrupt flag is set or not.\n  * @retval EXTI AVD Line Status.\n  */\n#define __HAL_PWR_AVD_EXTI_GET_FLAG() ((READ_BIT(EXTI->PR1, PWR_EXTI_LINE_AVD) == PWR_EXTI_LINE_AVD) ? 1UL : 0UL)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Check whether the specified AVD EXTI D2 interrupt flag is set or not.\n  * @retval EXTI D2 AVD Line Status.\n  */\n#define __HAL_PWR_AVD_EXTID2_GET_FLAG() ((READ_BIT(EXTI_D2->PR1, PWR_EXTI_LINE_AVD) == PWR_EXTI_LINE_AVD) ? 1UL : 0UL)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief  Clear the AVD EXTI flag.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_CLEAR_FLAG() SET_BIT(EXTI->PR1, PWR_EXTI_LINE_AVD)\n\n#if defined (DUAL_CORE)\n/**\n  * @brief  Clear the AVD EXTI D2 flag.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTID2_CLEAR_FLAG() SET_BIT(EXTI_D2->PR1, PWR_EXTI_LINE_AVD)\n#endif /* defined (DUAL_CORE) */\n\n/**\n  * @brief  Generates a Software interrupt on AVD EXTI line.\n  * @retval None.\n  */\n#define __HAL_PWR_AVD_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER1, PWR_EXTI_LINE_AVD)\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n\n/** @addtogroup PWREx_Exported_Functions PWREx Exported Functions\n  * @{\n  */\n\n/** @addtogroup PWREx_Exported_Functions_Group1 Power Supply Control Functions\n  * @{\n  */\nHAL_StatusTypeDef HAL_PWREx_ConfigSupply                  (uint32_t SupplySource);\nuint32_t          HAL_PWREx_GetSupplyConfig               (void);\nHAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling         (uint32_t VoltageScaling);\nuint32_t          HAL_PWREx_GetVoltageRange               (void);\nHAL_StatusTypeDef HAL_PWREx_ControlStopModeVoltageScaling (uint32_t VoltageScaling);\nuint32_t          HAL_PWREx_GetStopModeVoltageRange       (void);\n/**\n  * @}\n  */\n\n/** @addtogroup PWREx_Exported_Functions_Group2 Low Power Control Functions\n  * @{\n  */\n/* System low power control functions */\n#if defined (PWR_CPUCR_RETDS_CD)\nvoid HAL_PWREx_EnterSTOP2Mode    (uint32_t Regulator, uint8_t STOPEntry);\n#endif /* defined (PWR_CPUCR_RETDS_CD) */\nvoid HAL_PWREx_EnterSTOPMode     (uint32_t Regulator, uint8_t STOPEntry, uint32_t Domain);\nvoid HAL_PWREx_EnterSTANDBYMode  (uint32_t Domain);\nvoid HAL_PWREx_ConfigD3Domain    (uint32_t D3State);\n/* Clear Cortex-Mx pending flag */\nvoid HAL_PWREx_ClearPendingEvent (void);\n#if defined (DUAL_CORE)\n/* Clear domain flags */\nvoid HAL_PWREx_ClearDomainFlags (uint32_t DomainFlags);\n/* Core Hold/Release functions */\nHAL_StatusTypeDef HAL_PWREx_HoldCore    (uint32_t CPU);\nvoid              HAL_PWREx_ReleaseCore (uint32_t CPU);\n#endif /* defined (DUAL_CORE) */\n/* Flash low power control functions */\nvoid HAL_PWREx_EnableFlashPowerDown  (void);\nvoid HAL_PWREx_DisableFlashPowerDown (void);\n#if defined (PWR_CR1_SRDRAMSO)\n/* Memory shut-off functions */\nvoid HAL_PWREx_EnableMemoryShutOff  (uint32_t MemoryBlock);\nvoid HAL_PWREx_DisableMemoryShutOff (uint32_t MemoryBlock);\n#endif /* defined(PWR_CR1_SRDRAMSO) */\n/* Wakeup Pins control functions */\nvoid HAL_PWREx_EnableWakeUpPin              (PWREx_WakeupPinTypeDef *sPinParams);\nvoid HAL_PWREx_DisableWakeUpPin             (uint32_t WakeUpPin);\nuint32_t HAL_PWREx_GetWakeupFlag            (uint32_t WakeUpFlag);\nHAL_StatusTypeDef HAL_PWREx_ClearWakeupFlag (uint32_t WakeUpFlag);\n/* Power Wakeup PIN IRQ Handler */\nvoid HAL_PWREx_WAKEUP_PIN_IRQHandler (void);\nvoid HAL_PWREx_WKUP1_Callback        (void);\nvoid HAL_PWREx_WKUP2_Callback        (void);\n#if defined (PWR_WKUPEPR_WKUPEN3)\nvoid HAL_PWREx_WKUP3_Callback        (void);\n#endif /* defined (PWR_WKUPEPR_WKUPEN3) */\nvoid HAL_PWREx_WKUP4_Callback        (void);\n#if defined (PWR_WKUPEPR_WKUPEN5)\nvoid HAL_PWREx_WKUP5_Callback        (void);\n#endif /* defined (PWR_WKUPEPR_WKUPEN5) */\nvoid HAL_PWREx_WKUP6_Callback        (void);\n/**\n  * @}\n  */\n\n/** @addtogroup PWREx_Exported_Functions_Group3 Peripherals control functions\n  * @{\n  */\n/* Backup regulator control functions */\nHAL_StatusTypeDef HAL_PWREx_EnableBkUpReg  (void);\nHAL_StatusTypeDef HAL_PWREx_DisableBkUpReg (void);\n/* USB regulator control functions */\nHAL_StatusTypeDef HAL_PWREx_EnableUSBReg  (void);\nHAL_StatusTypeDef HAL_PWREx_DisableUSBReg (void);\nvoid HAL_PWREx_EnableUSBVoltageDetector   (void);\nvoid HAL_PWREx_DisableUSBVoltageDetector  (void);\n/* Battery control functions */\nvoid HAL_PWREx_EnableBatteryCharging  (uint32_t ResistorValue);\nvoid HAL_PWREx_DisableBatteryCharging (void);\n#if defined (PWR_CR1_BOOSTE)\n/* Analog Booster functions */\nvoid HAL_PWREx_EnableAnalogBooster  (void);\nvoid HAL_PWREx_DisableAnalogBooster (void);\n#endif /* PWR_CR1_BOOSTE */\n/**\n  * @}\n  */\n\n/** @addtogroup PWREx_Exported_Functions_Group4 Power Monitoring functions\n  * @{\n  */\n/* Power VBAT/Temperature monitoring functions */\nvoid HAL_PWREx_EnableMonitoring        (void);\nvoid HAL_PWREx_DisableMonitoring       (void);\nuint32_t HAL_PWREx_GetTemperatureLevel (void);\nuint32_t HAL_PWREx_GetVBATLevel        (void);\n#if defined (PWR_CSR1_MMCVDO)\nPWREx_MMC_VoltageLevel HAL_PWREx_GetMMCVoltage (void);\n#endif /* PWR_CSR1_MMCVDO */\n/* Power AVD configuration functions */\nvoid HAL_PWREx_ConfigAVD  (PWREx_AVDTypeDef *sConfigAVD);\nvoid HAL_PWREx_EnableAVD  (void);\nvoid HAL_PWREx_DisableAVD (void);\n/* Power PVD/AVD IRQ Handler */\nvoid HAL_PWREx_PVD_AVD_IRQHandler (void);\nvoid HAL_PWREx_AVDCallback        (void);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup PWREx_Private_Macros PWREx Private Macros\n  * @{\n  */\n\n/** @defgroup PWREx_IS_PWR_Definitions PWREx Private macros to check input parameters\n  * @{\n  */\n/* Check PWR regulator configuration parameter */\n#if defined (SMPS)\n#define IS_PWR_SUPPLY(PWR_SOURCE) (((PWR_SOURCE) == PWR_LDO_SUPPLY)                    ||\\\n                                   ((PWR_SOURCE) == PWR_DIRECT_SMPS_SUPPLY)            ||\\\n                                   ((PWR_SOURCE) == PWR_SMPS_1V8_SUPPLIES_LDO)         ||\\\n                                   ((PWR_SOURCE) == PWR_SMPS_2V5_SUPPLIES_LDO)         ||\\\n                                   ((PWR_SOURCE) == PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO) ||\\\n                                   ((PWR_SOURCE) == PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO) ||\\\n                                   ((PWR_SOURCE) == PWR_SMPS_1V8_SUPPLIES_EXT)         ||\\\n                                   ((PWR_SOURCE) == PWR_SMPS_2V5_SUPPLIES_EXT)         ||\\\n                                   ((PWR_SOURCE) == PWR_EXTERNAL_SOURCE_SUPPLY))\n\n#else\n#define IS_PWR_SUPPLY(PWR_SOURCE) (((PWR_SOURCE) == PWR_LDO_SUPPLY) ||\\\n                                   ((PWR_SOURCE) == PWR_EXTERNAL_SOURCE_SUPPLY))\n#endif /* defined (SMPS) */\n\n/* Check PWR regulator configuration in STOP mode parameter */\n#define IS_PWR_STOP_MODE_REGULATOR_VOLTAGE(VOLTAGE) (((VOLTAGE) == PWR_REGULATOR_SVOS_SCALE3)  ||\\\n                                                     ((VOLTAGE) == PWR_REGULATOR_SVOS_SCALE4)  ||\\\n                                                     ((VOLTAGE) == PWR_REGULATOR_SVOS_SCALE5))\n\n/* Check PWR domain parameter */\n#if defined (PWR_CPUCR_PDDS_D2)\n#define IS_PWR_DOMAIN(DOMAIN) (((DOMAIN) == PWR_D1_DOMAIN) ||\\\n                               ((DOMAIN) == PWR_D2_DOMAIN) ||\\\n                               ((DOMAIN) == PWR_D3_DOMAIN))\n#else\n#define IS_PWR_DOMAIN(DOMAIN) (((DOMAIN) == PWR_D1_DOMAIN) ||\\\n                               ((DOMAIN) == PWR_D3_DOMAIN))\n#endif /* defined (PWR_CPUCR_PDDS_D2) */\n\n/* Check D3/SRD domain state parameter */\n#define IS_D3_STATE(STATE) (((STATE) == PWR_D3_DOMAIN_STOP) ||\\\n                            ((STATE) == PWR_D3_DOMAIN_RUN))\n\n/* Check wake up pin parameter */\n#if defined (PWR_WKUPEPR_WKUPEN3)\n#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN2)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN3)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN4)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN5)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN6)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN1_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN2_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN3_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN4_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN5_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN6_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN1_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN2_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN3_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN4_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN5_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN6_LOW))\n#else\n#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN2)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN4)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN6)      ||\\\n                                ((PIN) == PWR_WAKEUP_PIN1_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN2_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN4_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN6_HIGH) ||\\\n                                ((PIN) == PWR_WAKEUP_PIN1_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN2_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN4_LOW)  ||\\\n                                ((PIN) == PWR_WAKEUP_PIN6_LOW))\n#endif /* defined (PWR_WKUPEPR_WKUPEN3) */\n\n/* Check wake up pin polarity parameter */\n#define IS_PWR_WAKEUP_PIN_POLARITY(POLARITY) (((POLARITY) == PWR_PIN_POLARITY_HIGH) ||\\\n                                              ((POLARITY) == PWR_PIN_POLARITY_LOW))\n\n/* Check wake up pin pull configuration parameter */\n#define IS_PWR_WAKEUP_PIN_PULL(PULL) (((PULL) == PWR_PIN_NO_PULL) ||\\\n                                      ((PULL) == PWR_PIN_PULL_UP) ||\\\n                                      ((PULL) == PWR_PIN_PULL_DOWN))\n\n/* Check wake up flag parameter */\n#if defined (PWR_WKUPEPR_WKUPEN3)\n#define IS_PWR_WAKEUP_FLAG(FLAG) (((FLAG) == PWR_WAKEUP_FLAG1) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG2) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG3) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG4) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG5) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG6) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG_ALL))\n#else\n#define IS_PWR_WAKEUP_FLAG(FLAG) (((FLAG) == PWR_WAKEUP_FLAG1) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG2) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG4) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG6) ||\\\n                                  ((FLAG) == PWR_WAKEUP_FLAG_ALL))\n#endif /* defined (PWR_WKUPEPR_WKUPEN3) */\n\n/* Check wake up flag parameter */\n#define IS_PWR_AVD_LEVEL(LEVEL) (((LEVEL) == PWR_AVDLEVEL_0) ||\\\n                                 ((LEVEL) == PWR_AVDLEVEL_1) ||\\\n                                 ((LEVEL) == PWR_AVDLEVEL_2) ||\\\n                                 ((LEVEL) == PWR_AVDLEVEL_3))\n\n/* Check AVD mode parameter */\n#define IS_PWR_AVD_MODE(MODE) (((MODE) == PWR_AVD_MODE_IT_RISING)         ||\\\n                               ((MODE) == PWR_AVD_MODE_IT_FALLING)        ||\\\n                               ((MODE) == PWR_AVD_MODE_IT_RISING_FALLING) ||\\\n                               ((MODE) == PWR_AVD_MODE_EVENT_RISING)      ||\\\n                               ((MODE) == PWR_AVD_MODE_EVENT_FALLING)     ||\\\n                               ((MODE) == PWR_AVD_MODE_NORMAL)            ||\\\n                               ((MODE) == PWR_AVD_MODE_EVENT_RISING_FALLING))\n\n/* Check resistor battery parameter */\n#define IS_PWR_BATTERY_RESISTOR_SELECT(RESISTOR) (((RESISTOR) == PWR_BATTERY_CHARGING_RESISTOR_5) ||\\\n                                                  ((RESISTOR) == PWR_BATTERY_CHARGING_RESISTOR_1_5))\n/* Check D1/CD CPU ID parameter */\n#define IS_PWR_D1_CPU(CPU) ((CPU) == CM7_CPUID)\n\n#if defined (DUAL_CORE)\n/* Check CPU parameter */\n#define IS_PWR_CORE(CPU)  (((CPU) == PWR_CORE_CPU1) || ((CPU) == PWR_CORE_CPU2))\n\n/* Check D2 CPU ID parameter */\n#define IS_PWR_D2_CPU(CPU) ((CPU) == CM4_CPUID)\n\n/* Check PWR domain flag parameter */\n#define IS_PWR_DOMAIN_FLAG(FLAG)  (((FLAG) == PWR_D1_DOMAIN_FLAGS) || \\\n                                   ((FLAG) == PWR_D2_DOMAIN_FLAGS) || \\\n                                   ((FLAG) == PWR_ALL_DOMAIN_FLAGS))\n#endif /* defined (DUAL_CORE) */\n\n#if defined (PWR_CR1_SRDRAMSO)\n/* Check memory block parameter */\n#define IS_PWR_MEMORY_BLOCK(BLOCK) (((BLOCK) == PWR_SRD_AHB_MEMORY_BLOCK)     || \\\n                                    ((BLOCK) == PWR_USB_FDCAN_MEMORY_BLOCK)   || \\\n                                    ((BLOCK) == PWR_GFXMMU_JPEG_MEMORY_BLOCK) || \\\n                                    ((BLOCK) == PWR_TCM_ECM_MEMORY_BLOCK)     || \\\n                                    ((BLOCK) == PWR_RAM1_AHB_MEMORY_BLOCK)    || \\\n                                    ((BLOCK) == PWR_RAM2_AHB_MEMORY_BLOCK)    || \\\n                                    ((BLOCK) == PWR_RAM1_AXI_MEMORY_BLOCK)    || \\\n                                    ((BLOCK) == PWR_RAM2_AXI_MEMORY_BLOCK)    || \\\n                                    ((BLOCK) == PWR_RAM3_AXI_MEMORY_BLOCK))\n#endif /* defined (PWR_CR1_SRDRAMSO) */\n/**\n  * @}\n  */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n#ifdef __cplusplus\n}\n#endif /* __cplusplus */\n\n\n#endif /* STM32H7xx_HAL_PWR_EX_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rcc.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_rcc.h\n  * @author  MCD Application Team\n  * @brief   Header file of RCC HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_RCC_H\n#define STM32H7xx_HAL_RCC_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup RCC\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n\n/** @defgroup RCC_Exported_Types RCC Exported Types\n  * @{\n  */\n\n/**\n  * @brief  RCC PLL configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t PLLState;   /*!< The new state of the PLL.\n                            This parameter can be a value of @ref RCC_PLL_Config                      */\n\n  uint32_t PLLSource;  /*!< RCC_PLLSource: PLL entry clock source.\n                            This parameter must be a value of @ref RCC_PLL_Clock_Source               */\n\n  uint32_t PLLM;       /*!< PLLM: Division factor for PLL VCO input clock.\n                            This parameter must be a number between Min_Data = 1 and Max_Data = 63    */\n\n  uint32_t PLLN;       /*!< PLLN: Multiplication factor for PLL VCO output clock.\n                            This parameter must be a number between Min_Data = 4 and Max_Data = 512 \n                            or between Min_Data = 8 and Max_Data = 420(*)\n                            (*) : For stm32h7a3xx and stm32h7b3xx family lines.                       */                        \n\n  uint32_t PLLP;       /*!< PLLP: Division factor for system clock.\n                            This parameter must be a number between Min_Data = 2 and Max_Data = 128\n                          odd division factors are not allowed                                        */\n\n  uint32_t PLLQ;       /*!< PLLQ: Division factor for peripheral clocks.\n                            This parameter must be a number between Min_Data = 1 and Max_Data = 128   */\n\n  uint32_t PLLR;       /*!< PLLR: Division factor for peripheral clocks.\n                            This parameter must be a number between Min_Data = 1 and Max_Data = 128   */\n  uint32_t PLLRGE;     /*!<PLLRGE: PLL1 clock Input range\n                         This parameter must be a value of @ref RCC_PLL1_VCI_Range                    */\n  uint32_t PLLVCOSEL;  /*!<PLLVCOSEL: PLL1 clock Output range\n                         This parameter must be a value of @ref RCC_PLL1_VCO_Range                    */\n\n  uint32_t PLLFRACN;   /*!<PLLFRACN: Specifies Fractional Part Of The Multiplication Factor for\n                        PLL1 VCO It should be a value between 0 and 8191                              */\n\n}RCC_PLLInitTypeDef;\n\n/**\n  * @brief  RCC Internal/External Oscillator (HSE, HSI, CSI, LSE and LSI) configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t OscillatorType;       /*!< The oscillators to be configured.\n                                      This parameter can be a value of @ref RCC_Oscillator_Type                   */\n\n  uint32_t HSEState;             /*!< The new state of the HSE.\n                                      This parameter can be a value of @ref RCC_HSE_Config                        */\n\n  uint32_t LSEState;             /*!< The new state of the LSE.\n                                      This parameter can be a value of @ref RCC_LSE_Config                        */\n\n  uint32_t HSIState;             /*!< The new state of the HSI.\n                                      This parameter can be a value of @ref RCC_HSI_Config                        */\n\n  uint32_t HSICalibrationValue;  /*!< The calibration trimming value.\n                                      This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x3F for STM32H7 rev.Y\n                                      This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F for STM32H7 rev.B and above */\n\n  uint32_t LSIState;             /*!< The new state of the LSI.\n                                      This parameter can be a value of @ref RCC_LSI_Config                        */\n\n uint32_t HSI48State;            /*!< The new state of the HSI48.\n                                      This parameter can be a value of @ref RCC_HSI48_Config                      */\n\n  uint32_t CSIState;             /*!< The new state of the CSI.\n                                      This parameter can be a value of @ref RCC_CSI_Config */\n\n  uint32_t CSICalibrationValue;  /*!< The calibration trimming value.\n                                      This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x1F for STM32H7 rev.Y\n                                      This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x3F for STM32H7 rev.B and above */\n\n  RCC_PLLInitTypeDef PLL;        /*!< PLL structure parameters                                                    */\n\n}RCC_OscInitTypeDef;\n\n/**\n  * @brief  RCC System, AHB and APB busses clock configuration structure definition\n  */\ntypedef struct\n{\n  uint32_t ClockType;             /*!< The clock to be configured.\n                                       This parameter can be a value of @ref RCC_System_Clock_Type                          */\n\n  uint32_t SYSCLKSource;          /*!< The clock source (SYSCLKS) used as system clock.\n                                       This parameter can be a value of @ref RCC_System_Clock_Source                        */\n\n  uint32_t SYSCLKDivider;         /*!< The system clock  divider. This parameter can be\n                                       a value of @ref RCC_SYS_Clock_Source                                                 */\n\n  uint32_t AHBCLKDivider;         /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK).\n                                       This parameter can be a value of @ref RCC_HCLK_Clock_Source                          */\n\n  uint32_t APB3CLKDivider;        /*!< The APB3 clock (D1PCLK1) divider. This clock is derived from the AHB clock (HCLK).\n                                       This parameter can be a value of @ref RCC_APB3_Clock_Source                        */\n\n  uint32_t APB1CLKDivider;        /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK).\n                                       This parameter can be a value of @ref RCC_APB1_Clock_Source                        */\n  uint32_t APB2CLKDivider;        /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK).\n                                       This parameter can be a value of @ref RCC_APB2_Clock_Source                        */\n  uint32_t APB4CLKDivider;      /*!< The APB4 clock (D3PCLK1) divider. This clock is derived from the AHB clock (HCLK).\n                                       This parameter can be a value of @ref RCC_APB4_Clock_Source                        */\n}RCC_ClkInitTypeDef;\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n\n/** @defgroup RCC_Exported_Constants RCC Exported Constants\n  * @{\n  */\n\n/** @defgroup RCC_Oscillator_Type  RCC Oscillator Type\n  * @{\n  */\n#define RCC_OSCILLATORTYPE_NONE        (0x00000000U)\n#define RCC_OSCILLATORTYPE_HSE         (0x00000001U)\n#define RCC_OSCILLATORTYPE_HSI         (0x00000002U)\n#define RCC_OSCILLATORTYPE_LSE         (0x00000004U)\n#define RCC_OSCILLATORTYPE_LSI         (0x00000008U)\n#define RCC_OSCILLATORTYPE_CSI         (0x00000010U)\n#define RCC_OSCILLATORTYPE_HSI48       (0x00000020U)\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_HSE_Config  RCC HSE Config\n  * @{\n  */\n#define RCC_HSE_OFF                    (0x00000000U)\n#define RCC_HSE_ON                     RCC_CR_HSEON\n#define RCC_HSE_BYPASS                 ((uint32_t)(RCC_CR_HSEBYP | RCC_CR_HSEON))\n#if defined(RCC_CR_HSEEXT)\n#define RCC_HSE_BYPASS_DIGITAL         ((uint32_t)(RCC_CR_HSEEXT | RCC_CR_HSEBYP | RCC_CR_HSEON))\n#endif /* RCC_CR_HSEEXT */\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_LSE_Config  RCC LSE Config\n  * @{\n  */\n#define RCC_LSE_OFF                    (0x00000000U)\n#define RCC_LSE_ON                     RCC_BDCR_LSEON\n#define RCC_LSE_BYPASS                 ((uint32_t)(RCC_BDCR_LSEBYP | RCC_BDCR_LSEON))\n#if defined(RCC_BDCR_LSEEXT)\n#define RCC_LSE_BYPASS_DIGITAL         ((uint32_t)(RCC_BDCR_LSEEXT | RCC_BDCR_LSEBYP | RCC_BDCR_LSEON))\n#endif /* RCC_BDCR_LSEEXT */\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_HSI_Config  RCC HSI Config\n  * @{\n  */\n#define RCC_HSI_OFF                      (0x00000000U)           /*!< HSI clock deactivation */\n#define RCC_HSI_ON                       RCC_CR_HSION                     /*!< HSI clock activation */\n\n#define RCC_HSI_DIV1                     (RCC_CR_HSIDIV_1 | RCC_CR_HSION) /*!< HSI_DIV1 clock activation */\n#define RCC_HSI_DIV2                     (RCC_CR_HSIDIV_2 | RCC_CR_HSION) /*!< HSI_DIV2 clock activation */\n#define RCC_HSI_DIV4                     (RCC_CR_HSIDIV_4 | RCC_CR_HSION) /*!< HSI_DIV4 clock activation */\n#define RCC_HSI_DIV8                     (RCC_CR_HSIDIV | RCC_CR_HSION)   /*!< HSI_DIV8 clock activation */\n\n\n#define RCC_HSICALIBRATION_DEFAULT       (0x40U)         /* Default HSI calibration trimming value for STM32H7 rev.V and above. (0x20 value for rev.Y handled within __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST macro ) */\n/**\n  * @}\n  */\n\n/** @defgroup RCC_HSI48_Config  RCC HSI48 Config\n  * @{\n  */\n#define RCC_HSI48_OFF                      ((uint8_t)0x00)\n#define RCC_HSI48_ON                       ((uint8_t)0x01)\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_LSI_Config  RCC LSI Config\n  * @{\n  */\n#define RCC_LSI_OFF                    (0x00000000U)\n#define RCC_LSI_ON                     RCC_CSR_LSION\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_CSI_Config  RCC CSI Config\n  * @{\n  */\n#define RCC_CSI_OFF                    (0x00000000U)\n#define RCC_CSI_ON                     RCC_CR_CSION\n\n#define RCC_CSICALIBRATION_DEFAULT     (0x20U)         /* Default CSI calibration trimming value for STM32H7 rev.V and above. (0x10 value for rev.Y handled within __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST macro ) */\n/**\n  * @}\n  */\n\n/** @defgroup RCC_PLL_Config  RCC PLL Config\n  * @{\n  */\n#define RCC_PLL_NONE                   (0x00000000U)\n#define RCC_PLL_OFF                    (0x00000001U)\n#define RCC_PLL_ON                     (0x00000002U)\n\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_PLL_Clock_Source  RCC PLL Clock Source\n  * @{\n  */\n#define RCC_PLLSOURCE_HSI              (0x00000000U)\n#define RCC_PLLSOURCE_CSI              (0x00000001U)\n#define RCC_PLLSOURCE_HSE              (0x00000002U)\n#define RCC_PLLSOURCE_NONE             (0x00000003U)\n/**\n  * @}\n  */\n\n/** @defgroup RCC_PLL_Clock_Output  RCC PLL Clock Output\n  * @{\n  */\n#define RCC_PLL1_DIVP                RCC_PLLCFGR_DIVP1EN\n#define RCC_PLL1_DIVQ                RCC_PLLCFGR_DIVQ1EN\n#define RCC_PLL1_DIVR                RCC_PLLCFGR_DIVR1EN\n\n/**\n  * @}\n  */\n\n\n\n/** @defgroup RCC_PLL1_VCI_Range  RCC PLL1 VCI Range\n  * @{\n  */\n#define RCC_PLL1VCIRANGE_0                RCC_PLLCFGR_PLL1RGE_0       /*!< Clock range frequency between 1 and 2 MHz  */\n#define RCC_PLL1VCIRANGE_1                RCC_PLLCFGR_PLL1RGE_1       /*!< Clock range frequency between 2 and 4 MHz  */\n#define RCC_PLL1VCIRANGE_2                RCC_PLLCFGR_PLL1RGE_2       /*!< Clock range frequency between 4 and 8 MHz  */\n#define RCC_PLL1VCIRANGE_3                RCC_PLLCFGR_PLL1RGE_3       /*!< Clock range frequency between 8 and 16 MHz */\n\n\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_PLL1_VCO_Range  RCC PLL1 VCO Range\n  * @{\n  */\n#define RCC_PLL1VCOWIDE                 (0x00000000U)\n#define RCC_PLL1VCOMEDIUM               RCC_PLLCFGR_PLL1VCOSEL\n\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_System_Clock_Type  RCC System Clock Type\n  * @{\n  */\n#define RCC_CLOCKTYPE_SYSCLK           (0x00000001U)\n#define RCC_CLOCKTYPE_HCLK             (0x00000002U)\n#define RCC_CLOCKTYPE_D1PCLK1          (0x00000004U)\n#define RCC_CLOCKTYPE_PCLK1            (0x00000008U)\n#define RCC_CLOCKTYPE_PCLK2            (0x00000010U)\n#define RCC_CLOCKTYPE_D3PCLK1          (0x00000020U)\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_System_Clock_Source  RCC System Clock Source\n  * @{\n  */\n#define RCC_SYSCLKSOURCE_CSI           RCC_CFGR_SW_CSI\n#define RCC_SYSCLKSOURCE_HSI           RCC_CFGR_SW_HSI\n#define RCC_SYSCLKSOURCE_HSE           RCC_CFGR_SW_HSE\n#define RCC_SYSCLKSOURCE_PLLCLK        RCC_CFGR_SW_PLL1\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_System_Clock_Source_Status System Clock Source Status\n  * @{\n  */\n#define RCC_SYSCLKSOURCE_STATUS_CSI    RCC_CFGR_SWS_CSI   /*!< CSI used as system clock */\n#define RCC_SYSCLKSOURCE_STATUS_HSI    RCC_CFGR_SWS_HSI   /*!< HSI used as system clock */\n#define RCC_SYSCLKSOURCE_STATUS_HSE    RCC_CFGR_SWS_HSE   /*!< HSE used as system clock */\n#define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_PLL1  /*!< PLL1 used as system clock */\n/**\n  * @}\n  */\n\n/** @defgroup RCC_SYS_Clock_Source  RCC SYS Clock Source\n  * @{\n  */\n#if defined(RCC_D1CFGR_D1CPRE_DIV1)\n#define RCC_SYSCLK_DIV1                RCC_D1CFGR_D1CPRE_DIV1\n#define RCC_SYSCLK_DIV2                RCC_D1CFGR_D1CPRE_DIV2\n#define RCC_SYSCLK_DIV4                RCC_D1CFGR_D1CPRE_DIV4\n#define RCC_SYSCLK_DIV8                RCC_D1CFGR_D1CPRE_DIV8\n#define RCC_SYSCLK_DIV16               RCC_D1CFGR_D1CPRE_DIV16\n#define RCC_SYSCLK_DIV64               RCC_D1CFGR_D1CPRE_DIV64\n#define RCC_SYSCLK_DIV128              RCC_D1CFGR_D1CPRE_DIV128\n#define RCC_SYSCLK_DIV256              RCC_D1CFGR_D1CPRE_DIV256\n#define RCC_SYSCLK_DIV512              RCC_D1CFGR_D1CPRE_DIV512\n#else\n#define RCC_SYSCLK_DIV1                RCC_CDCFGR1_CDCPRE_DIV1\n#define RCC_SYSCLK_DIV2                RCC_CDCFGR1_CDCPRE_DIV2\n#define RCC_SYSCLK_DIV4                RCC_CDCFGR1_CDCPRE_DIV4\n#define RCC_SYSCLK_DIV8                RCC_CDCFGR1_CDCPRE_DIV8\n#define RCC_SYSCLK_DIV16               RCC_CDCFGR1_CDCPRE_DIV16\n#define RCC_SYSCLK_DIV64               RCC_CDCFGR1_CDCPRE_DIV64\n#define RCC_SYSCLK_DIV128              RCC_CDCFGR1_CDCPRE_DIV128\n#define RCC_SYSCLK_DIV256              RCC_CDCFGR1_CDCPRE_DIV256\n#define RCC_SYSCLK_DIV512              RCC_CDCFGR1_CDCPRE_DIV512\n#endif\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_HCLK_Clock_Source  RCC HCLK Clock Source\n  * @{\n  */\n#if defined(RCC_D1CFGR_HPRE_DIV1)\n#define RCC_HCLK_DIV1                RCC_D1CFGR_HPRE_DIV1\n#define RCC_HCLK_DIV2                RCC_D1CFGR_HPRE_DIV2\n#define RCC_HCLK_DIV4                RCC_D1CFGR_HPRE_DIV4\n#define RCC_HCLK_DIV8                RCC_D1CFGR_HPRE_DIV8\n#define RCC_HCLK_DIV16               RCC_D1CFGR_HPRE_DIV16\n#define RCC_HCLK_DIV64               RCC_D1CFGR_HPRE_DIV64\n#define RCC_HCLK_DIV128              RCC_D1CFGR_HPRE_DIV128\n#define RCC_HCLK_DIV256              RCC_D1CFGR_HPRE_DIV256\n#define RCC_HCLK_DIV512              RCC_D1CFGR_HPRE_DIV512\n#else\n#define RCC_HCLK_DIV1                RCC_CDCFGR1_HPRE_DIV1\n#define RCC_HCLK_DIV2                RCC_CDCFGR1_HPRE_DIV2\n#define RCC_HCLK_DIV4                RCC_CDCFGR1_HPRE_DIV4\n#define RCC_HCLK_DIV8                RCC_CDCFGR1_HPRE_DIV8\n#define RCC_HCLK_DIV16               RCC_CDCFGR1_HPRE_DIV16\n#define RCC_HCLK_DIV64               RCC_CDCFGR1_HPRE_DIV64\n#define RCC_HCLK_DIV128              RCC_CDCFGR1_HPRE_DIV128\n#define RCC_HCLK_DIV256              RCC_CDCFGR1_HPRE_DIV256\n#define RCC_HCLK_DIV512              RCC_CDCFGR1_HPRE_DIV512\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup RCC_APB3_Clock_Source  RCC APB3 Clock Source\n  * @{\n  */\n#if defined (RCC_D1CFGR_D1PPRE_DIV1)\n#define RCC_APB3_DIV1                  RCC_D1CFGR_D1PPRE_DIV1\n#define RCC_APB3_DIV2                  RCC_D1CFGR_D1PPRE_DIV2\n#define RCC_APB3_DIV4                  RCC_D1CFGR_D1PPRE_DIV4\n#define RCC_APB3_DIV8                  RCC_D1CFGR_D1PPRE_DIV8\n#define RCC_APB3_DIV16                 RCC_D1CFGR_D1PPRE_DIV16\n#else\n#define RCC_APB3_DIV1                  RCC_CDCFGR1_CDPPRE_DIV1\n#define RCC_APB3_DIV2                  RCC_CDCFGR1_CDPPRE_DIV2\n#define RCC_APB3_DIV4                  RCC_CDCFGR1_CDPPRE_DIV4\n#define RCC_APB3_DIV8                  RCC_CDCFGR1_CDPPRE_DIV8\n#define RCC_APB3_DIV16                 RCC_CDCFGR1_CDPPRE_DIV16\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup RCC_APB1_Clock_Source  RCC APB1 Clock Source\n  * @{\n  */\n#if defined (RCC_D2CFGR_D2PPRE1_DIV1)\n#define RCC_APB1_DIV1                  RCC_D2CFGR_D2PPRE1_DIV1\n#define RCC_APB1_DIV2                  RCC_D2CFGR_D2PPRE1_DIV2\n#define RCC_APB1_DIV4                  RCC_D2CFGR_D2PPRE1_DIV4\n#define RCC_APB1_DIV8                  RCC_D2CFGR_D2PPRE1_DIV8\n#define RCC_APB1_DIV16                 RCC_D2CFGR_D2PPRE1_DIV16\n#else\n#define RCC_APB1_DIV1                  RCC_CDCFGR2_CDPPRE1_DIV1\n#define RCC_APB1_DIV2                  RCC_CDCFGR2_CDPPRE1_DIV2\n#define RCC_APB1_DIV4                  RCC_CDCFGR2_CDPPRE1_DIV4\n#define RCC_APB1_DIV8                  RCC_CDCFGR2_CDPPRE1_DIV8\n#define RCC_APB1_DIV16                 RCC_CDCFGR2_CDPPRE1_DIV16\n#endif\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_APB2_Clock_Source  RCC APB2 Clock Source\n  * @{\n  */\n#if defined (RCC_D2CFGR_D2PPRE2_DIV1)\n#define RCC_APB2_DIV1                  RCC_D2CFGR_D2PPRE2_DIV1\n#define RCC_APB2_DIV2                  RCC_D2CFGR_D2PPRE2_DIV2\n#define RCC_APB2_DIV4                  RCC_D2CFGR_D2PPRE2_DIV4\n#define RCC_APB2_DIV8                  RCC_D2CFGR_D2PPRE2_DIV8\n#define RCC_APB2_DIV16                 RCC_D2CFGR_D2PPRE2_DIV16\n#else\n#define RCC_APB2_DIV1                  RCC_CDCFGR2_CDPPRE2_DIV1\n#define RCC_APB2_DIV2                  RCC_CDCFGR2_CDPPRE2_DIV2\n#define RCC_APB2_DIV4                  RCC_CDCFGR2_CDPPRE2_DIV4\n#define RCC_APB2_DIV8                  RCC_CDCFGR2_CDPPRE2_DIV8\n#define RCC_APB2_DIV16                 RCC_CDCFGR2_CDPPRE2_DIV16\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup RCC_APB4_Clock_Source  RCC APB4 Clock Source\n  * @{\n  */\n#if defined(RCC_D3CFGR_D3PPRE_DIV1)\n#define RCC_APB4_DIV1                  RCC_D3CFGR_D3PPRE_DIV1\n#define RCC_APB4_DIV2                  RCC_D3CFGR_D3PPRE_DIV2\n#define RCC_APB4_DIV4                  RCC_D3CFGR_D3PPRE_DIV4\n#define RCC_APB4_DIV8                  RCC_D3CFGR_D3PPRE_DIV8\n#define RCC_APB4_DIV16                 RCC_D3CFGR_D3PPRE_DIV16\n#else\n#define RCC_APB4_DIV1                  RCC_SRDCFGR_SRDPPRE_DIV1\n#define RCC_APB4_DIV2                  RCC_SRDCFGR_SRDPPRE_DIV2\n#define RCC_APB4_DIV4                  RCC_SRDCFGR_SRDPPRE_DIV4\n#define RCC_APB4_DIV8                  RCC_SRDCFGR_SRDPPRE_DIV8\n#define RCC_APB4_DIV16                 RCC_SRDCFGR_SRDPPRE_DIV16\n#endif\n/**\n  * @}\n  */\n\n/** @defgroup RCC_RTC_Clock_Source  RCC RTC Clock Source\n  * @{\n  */\n#define RCC_RTCCLKSOURCE_NO_CLK          (0x00000000U)\n#define RCC_RTCCLKSOURCE_LSE             (0x00000100U)\n#define RCC_RTCCLKSOURCE_LSI             (0x00000200U)\n#define RCC_RTCCLKSOURCE_HSE_DIV2        (0x00002300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV3        (0x00003300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV4        (0x00004300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV5        (0x00005300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV6        (0x00006300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV7        (0x00007300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV8        (0x00008300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV9        (0x00009300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV10       (0x0000A300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV11       (0x0000B300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV12       (0x0000C300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV13       (0x0000D300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV14       (0x0000E300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV15       (0x0000F300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV16       (0x00010300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV17       (0x00011300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV18       (0x00012300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV19       (0x00013300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV20       (0x00014300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV21       (0x00015300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV22       (0x00016300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV23       (0x00017300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV24       (0x00018300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV25       (0x00019300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV26       (0x0001A300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV27       (0x0001B300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV28       (0x0001C300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV29       (0x0001D300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV30       (0x0001E300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV31       (0x0001F300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV32       (0x00020300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV33       (0x00021300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV34       (0x00022300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV35       (0x00023300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV36       (0x00024300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV37       (0x00025300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV38       (0x00026300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV39       (0x00027300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV40       (0x00028300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV41       (0x00029300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV42       (0x0002A300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV43       (0x0002B300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV44       (0x0002C300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV45       (0x0002D300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV46       (0x0002E300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV47       (0x0002F300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV48       (0x00030300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV49       (0x00031300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV50       (0x00032300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV51       (0x00033300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV52       (0x00034300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV53       (0x00035300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV54       (0x00036300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV55       (0x00037300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV56       (0x00038300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV57       (0x00039300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV58       (0x0003A300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV59       (0x0003B300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV60       (0x0003C300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV61       (0x0003D300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV62       (0x0003E300U)\n#define RCC_RTCCLKSOURCE_HSE_DIV63       (0x0003F300U)\n\n\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_MCO_Index  RCC MCO Index\n  * @{\n  */\n#define RCC_MCO1                         (0x00000000U)\n#define RCC_MCO2                         (0x00000001U)\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_MCO1_Clock_Source  RCC MCO1 Clock Source\n  * @{\n  */\n#define RCC_MCO1SOURCE_HSI               (0x00000000U)\n#define RCC_MCO1SOURCE_LSE               RCC_CFGR_MCO1_0\n#define RCC_MCO1SOURCE_HSE               RCC_CFGR_MCO1_1\n#define RCC_MCO1SOURCE_PLL1QCLK          ((uint32_t)RCC_CFGR_MCO1_0 | RCC_CFGR_MCO1_1)\n#define RCC_MCO1SOURCE_HSI48              RCC_CFGR_MCO1_2\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_MCO2_Clock_Source  RCC MCO2 Clock Source\n  * @{\n  */\n#define RCC_MCO2SOURCE_SYSCLK            (0x00000000U)\n#define RCC_MCO2SOURCE_PLL2PCLK          RCC_CFGR_MCO2_0\n#define RCC_MCO2SOURCE_HSE               RCC_CFGR_MCO2_1\n#define RCC_MCO2SOURCE_PLLCLK            ((uint32_t)RCC_CFGR_MCO2_0 | RCC_CFGR_MCO2_1)\n#define RCC_MCO2SOURCE_CSICLK            RCC_CFGR_MCO2_2\n#define RCC_MCO2SOURCE_LSICLK            ((uint32_t)RCC_CFGR_MCO2_0 | RCC_CFGR_MCO2_2)\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_MCOx_Clock_Prescaler  RCC MCOx Clock Prescaler\n  * @{\n  */\n#define RCC_MCODIV_1                    RCC_CFGR_MCO1PRE_0\n#define RCC_MCODIV_2                    RCC_CFGR_MCO1PRE_1\n#define RCC_MCODIV_3                    ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1)\n#define RCC_MCODIV_4                    RCC_CFGR_MCO1PRE_2\n#define RCC_MCODIV_5                    ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2)\n#define RCC_MCODIV_6                    ((uint32_t)RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2)\n#define RCC_MCODIV_7                    ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2)\n#define RCC_MCODIV_8                    RCC_CFGR_MCO1PRE_3\n#define RCC_MCODIV_9                    ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_3)\n#define RCC_MCODIV_10                   ((uint32_t)RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_3)\n#define RCC_MCODIV_11                   ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_3)\n#define RCC_MCODIV_12                   ((uint32_t)RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3)\n#define RCC_MCODIV_13                   ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3)\n#define RCC_MCODIV_14                   ((uint32_t)RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3)\n#define RCC_MCODIV_15                   RCC_CFGR_MCO1PRE\n\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_Interrupt  RCC Interrupt\n  * @{\n  */\n#define RCC_IT_LSIRDY                  (0x00000001U)\n#define RCC_IT_LSERDY                  (0x00000002U)\n#define RCC_IT_HSIRDY                  (0x00000004U)\n#define RCC_IT_HSERDY                  (0x00000008U)\n#define RCC_IT_CSIRDY                  (0x00000010U)\n#define RCC_IT_HSI48RDY                (0x00000020U)\n#define RCC_IT_PLLRDY                  (0x00000040U)\n#define RCC_IT_PLL2RDY                 (0x00000080U)\n#define RCC_IT_PLL3RDY                 (0x00000100U)\n#define RCC_IT_LSECSS                  (0x00000200U)\n#define RCC_IT_CSS                     (0x00000400U)\n/**\n  * @}\n  */\n\n/** @defgroup RCC_Flag  RCC Flag\n  *        Elements values convention: XXXYYYYYb\n  *           - YYYYY  : Flag position in the register\n  *           - XXX  : Register index\n  *                 - 001: CR register\n  *                 - 010: BDCR register\n  *                 - 011: CSR register\n  *                 - 100: RSR register\n  * @{\n  */\n/* Flags in the CR register */\n#define RCC_FLAG_HSIRDY                ((uint8_t)0x22)\n#define RCC_FLAG_HSIDIV                ((uint8_t)0x25)\n#define RCC_FLAG_CSIRDY                ((uint8_t)0x28)\n#define RCC_FLAG_HSI48RDY              ((uint8_t)0x2D)\n#if defined(RCC_CR_D1CKRDY)\n#define RCC_FLAG_D1CKRDY               ((uint8_t)0x2E)\n#else\n#define RCC_FLAG_CPUCKRDY              ((uint8_t)0x2E)\n#define RCC_FLAG_D1CKRDY               RCC_FLAG_CPUCKRDY   /* alias */\n#endif /* RCC_CR_D1CKRDY */\n#if defined(RCC_CR_D2CKRDY)\n#define RCC_FLAG_D2CKRDY               ((uint8_t)0x2F)\n#else\n#define RCC_FLAG_CDCKRDY               ((uint8_t)0x2F)\n#define RCC_FLAG_D2CKRDY               RCC_FLAG_CDCKRDY    /* alias */\n#endif /* RCC_CR_D2CKRDY */\n#define RCC_FLAG_HSERDY                ((uint8_t)0x31)\n#define RCC_FLAG_PLLRDY                ((uint8_t)0x39)\n#define RCC_FLAG_PLL2RDY               ((uint8_t)0x3B)\n#define RCC_FLAG_PLL3RDY               ((uint8_t)0x3D)\n/* Flags in the BDCR register */\n#define RCC_FLAG_LSERDY                ((uint8_t)0x41)\n\n/* Flags in the CSR register */\n#define RCC_FLAG_LSIRDY                ((uint8_t)0x61)\n\n/* Flags in the RSR register */\n#if defined(RCC_RSR_CPURSTF)\n#define RCC_FLAG_CPURST                ((uint8_t)0x91)\n#endif /* RCC_RSR_CPURSTF */\n\n#if defined(RCC_RSR_D1RSTF)\n#define RCC_FLAG_D1RST                 ((uint8_t)0x93)\n#else\n#define RCC_FLAG_CDRST                 ((uint8_t)0x93)\n#endif /* RCC_RSR_D1RSTF */\n#if defined(RCC_RSR_D2RSTF)\n#define RCC_FLAG_D2RST                 ((uint8_t)0x94)\n#endif /* RCC_RSR_D2RSTF */\n#define RCC_FLAG_BORRST                ((uint8_t)0x95)\n#define RCC_FLAG_PINRST                ((uint8_t)0x96)\n#define RCC_FLAG_PORRST                ((uint8_t)0x97)\n#define RCC_FLAG_SFTRST                ((uint8_t)0x98)\n#define RCC_FLAG_IWDG1RST              ((uint8_t)0x9A)\n#define RCC_FLAG_WWDG1RST              ((uint8_t)0x9C)\n#define RCC_FLAG_LPWR1RST              ((uint8_t)0x9E)\n#define RCC_FLAG_LPWR2RST              ((uint8_t)0x9F)\n\n#if defined(DUAL_CORE)\n#define RCC_FLAG_C1RST                 (RCC_FLAG_CPURST)\n#define RCC_FLAG_C2RST                 ((uint8_t)0x92)\n#define RCC_FLAG_SFTR1ST               (RCC_FLAG_SFTRST)\n#define RCC_FLAG_SFTR2ST               ((uint8_t)0x99)\n#define RCC_FLAG_WWDG2RST              ((uint8_t)0x9D)\n#define RCC_FLAG_IWDG2RST              ((uint8_t)0x9B)\n#endif /*DUAL_CORE*/\n\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_LSEDrive_Config LSE Drive Config\n  * @{\n  */\n#define RCC_LSEDRIVE_LOW                 (0x00000000U) /*!< LSE low drive capability */\n#define RCC_LSEDRIVE_MEDIUMLOW           RCC_BDCR_LSEDRV_0      /*!< LSE medium low drive capability */\n#define RCC_LSEDRIVE_MEDIUMHIGH          RCC_BDCR_LSEDRV_1      /*!< LSE medium high drive capability */\n#define RCC_LSEDRIVE_HIGH                RCC_BDCR_LSEDRV        /*!< LSE high drive capability */\n/**\n  * @}\n  */\n\n/** @defgroup RCC_Stop_WakeUpClock  RCC Stop WakeUpClock\n  * @{\n  */\n#define RCC_STOP_WAKEUPCLOCK_HSI       (0x00000000U)\n#define RCC_STOP_WAKEUPCLOCK_CSI       RCC_CFGR_STOPWUCK\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_Stop_KernelWakeUpClock  RCC Stop KernelWakeUpClock\n  * @{\n  */\n#define RCC_STOP_KERWAKEUPCLOCK_HSI       (0x00000000U)\n#define RCC_STOP_KERWAKEUPCLOCK_CSI        RCC_CFGR_STOPKERWUCK\n\n\n/**\n  * @}\n  */\n\n#if defined(RCC_VER_X)\n#define HAL_RCC_REV_Y_HSITRIM_Pos  (12U)\n#define HAL_RCC_REV_Y_HSITRIM_Msk  (0x3F000U)\n#define HAL_RCC_REV_Y_CSITRIM_Pos  (26U)\n#define HAL_RCC_REV_Y_CSITRIM_Msk  (0x7C000000U)\n#endif /* RCC_VER_X */\n\n/**\n  * @}\n  */\n\n/* Exported macros -----------------------------------------------------------*/\n\n/** @defgroup RCC_Exported_Macros RCC Exported Macros\n  * @{\n  */\n\n/** @brief  Enable or disable the AHB3 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n#define __HAL_RCC_MDMA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_MDMAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_MDMAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_DMA2D_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_DMA2DEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_DMA2DEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(JPEG)\n#define __HAL_RCC_JPGDECEN_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_JPGDECEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_JPGDECEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* JPEG */\n\n#define __HAL_RCC_FMC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* QUADSPI */\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OSPI1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OSPI1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* OCTOSPI1 */\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OSPI2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OSPI2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* OCTOSPI2 */\n#if defined(OCTOSPIM)\n#define __HAL_RCC_OCTOSPIM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_IOMNGREN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_IOMNGREN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* OCTOSPIM */\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OTFDEC1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OTFDEC1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* OTFDEC1 */\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OTFDEC2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_OTFDEC2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* OTFDEC2 */\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_GFXMMUEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_GFXMMUEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* GFXMMU */\n#define __HAL_RCC_SDMMC1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_SDMMC1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_SDMMC1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_MDMA_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_MDMAEN))\n#define __HAL_RCC_DMA2D_CLK_DISABLE()           (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_DMA2DEN))\n#if defined(JPEG)\n#define __HAL_RCC_JPGDECEN_CLK_DISABLE()        (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_JPGDECEN))\n#endif /* JPEG */\n#define __HAL_RCC_FMC_CLK_DISABLE()             (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_FMCEN))\n\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_QSPIEN))\n#endif /* QUADSPI */\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_OSPI1EN))\n#endif /* OCTOSPII */\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_OSPI2EN))\n#endif /* OCTOSPI2 */\n#define __HAL_RCC_SDMMC1_CLK_DISABLE()          (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_SDMMC1EN))\n#if defined(OCTOSPIM)\n#define __HAL_RCC_OCTOSPIM_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_IOMNGREN))\n#endif /* OCTOSPIM */\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_OTFDEC1EN))\n#endif /* OTOFDEC1 */\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_OTFDEC2EN))\n#endif /* OTOFDEC2 */\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_CLK_DISABLE()            (RCC->AHB3ENR &= ~ (RCC_AHB3ENR_GFXMMUEN))\n#endif /* GFXMMU */\n\n/** @brief  Get the enable or disable status of the AHB3 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_MDMA_IS_CLK_ENABLED()          ((RCC->AHB3ENR & RCC_AHB3ENR_MDMAEN)   != 0U)\n#define __HAL_RCC_DMA2D_IS_CLK_ENABLED()         ((RCC->AHB3ENR & RCC_AHB3ENR_DMA2DEN)  != 0U)\n#if defined(JPEG)\n#define __HAL_RCC_JPGDECEN_IS_CLK_ENABLED()      ((RCC->AHB3ENR & RCC_AHB3ENR_JPGDECEN) != 0U)\n#endif /* JPEG */\n#define __HAL_RCC_FMC_IS_CLK_ENABLED()           ((RCC->AHB3ENR & RCC_AHB3ENR_FMCEN)    != 0U)\n#if defined (QUADSPI)\n#define __HAL_RCC_QSPI_IS_CLK_ENABLED()          ((RCC->AHB3ENR & RCC_AHB3ENR_QSPIEN)   != 0U)\n#endif /* QUADSPI */\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_IS_CLK_ENABLED()          ((RCC->AHB3ENR & RCC_AHB3ENR_OSPI1EN)   != 0U)\n#endif /* OCTOSPII */\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_IS_CLK_ENABLED()          ((RCC->AHB3ENR & RCC_AHB3ENR_OSPI2EN)   != 0U)\n#endif /* OCTOSPI2 */\n#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED()        ((RCC->AHB3ENR & RCC_AHB3ENR_SDMMC1EN) != 0U)\n#if defined(OCTOSPIM)\n#define __HAL_RCC_OCTOSPIM_IS_CLK_ENABLED()        ((RCC->AHB3ENR & RCC_AHB3ENR_IOMNGREN) != 0U)\n#endif /* OCTOSPIM */\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_IS_CLK_ENABLED()        ((RCC->AHB3ENR & RCC_AHB3ENR_OTFDEC1EN) != 0U)\n#endif /* OTOFDEC1 */\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_IS_CLK_ENABLED()        ((RCC->AHB3ENR & RCC_AHB3ENR_OTFDEC2EN) != 0U)\n#endif /* OTOFDEC2 */\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_IS_CLK_ENABLED()        ((RCC->AHB3ENR & RCC_AHB3ENR_GFXMMUEN) != 0U)\n#endif /* GFXMMU */\n\n#define __HAL_RCC_MDMA_IS_CLK_DISABLED()         ((RCC->AHB3ENR & RCC_AHB3ENR_MDMAEN)   == 0U)\n#define __HAL_RCC_DMA2D_IS_CLK_DISABLED()        ((RCC->AHB3ENR & RCC_AHB3ENR_DMA2DEN)  == 0U)\n#if defined(JPEG)\n#define __HAL_RCC_JPGDECEN_IS_CLK_DISABLED()     ((RCC->AHB3ENR & RCC_AHB3ENR_JPGDECEN) == 0U)\n#endif /* JPEG */\n#define __HAL_RCC_FMC_IS_CLK_DISABLED()          ((RCC->AHB3ENR & RCC_AHB3ENR_FMCEN)    == 0U)\n#if defined (QUADSPI)\n#define __HAL_RCC_QSPI_IS_CLK_DISABLED()         ((RCC->AHB3ENR & RCC_AHB3ENR_QSPIEN)   == 0U)\n#endif /* QUADSPI */\n#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED()       ((RCC->AHB3ENR & RCC_AHB3ENR_SDMMC1EN) == 0U)\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_IS_CLK_DISABLED()        ((RCC->AHB3ENR & RCC_AHB3ENR_OSPI1EN) == 0U)\n#endif\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_IS_CLK_DISABLED()     ((RCC->AHB3ENR & RCC_AHB3ENR_OSPI2EN) == 0U)\n#endif\n#if defined(OCTOSPIM)\n#define __HAL_RCC_OCTOSPIM_IS_CLK_DISABLED()     ((RCC->AHB3ENR & RCC_AHB3ENR_IOMNGREN) == 0U)\n#endif\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_IS_CLK_DISABLED()      ((RCC->AHB3ENR & RCC_AHB3ENR_OTFDEC1EN) == 0U)\n#endif\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_IS_CLK_DISABLED()      ((RCC->AHB3ENR & RCC_AHB3ENR_OTFDEC2EN) == 0U)\n#endif\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_IS_CLK_DISABLED()       ((RCC->AHB3ENR & RCC_AHB3ENR_GFXMMUEN) == 0U)\n#endif\n/** @brief  Enable or disable the AHB1 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_DMA1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_DMA2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_ADC12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ADC12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ADC12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ARTEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ARTEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*DUAL_CORE*/\n\n#if defined(RCC_AHB1ENR_CRCEN)\n#define __HAL_RCC_CRC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETH1MACEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETH1MACEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_ETH1TX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETH1TXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETH1TXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_ETH1RX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETH1RXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETH1RXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#define __HAL_RCC_USB1_OTG_HS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB1OTGHSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB1OTGHSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_USB1_OTG_HS_ULPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB1OTGHSULPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB1OTGHSULPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB2OTGHSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB2OTGHSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_USB2_OTG_FS_ULPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB2OTGHSULPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_USB2OTGHSULPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#define __HAL_RCC_DMA1_CLK_DISABLE()             (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_DMA1EN))\n#define __HAL_RCC_DMA2_CLK_DISABLE()             (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_DMA2EN))\n#define __HAL_RCC_ADC12_CLK_DISABLE()            (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_ADC12EN))\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_CLK_DISABLE()              (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_ARTEN))\n#endif /*DUAL_CORE*/\n#if defined(RCC_AHB1ENR_CRCEN)\n#define __HAL_RCC_CRC_CLK_DISABLE()              (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_CRCEN))\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_CLK_DISABLE()          (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1MACEN))\n#define __HAL_RCC_ETH1TX_CLK_DISABLE()           (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1TXEN))\n#define __HAL_RCC_ETH1RX_CLK_DISABLE()           (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1RXEN))\n#endif\n#define __HAL_RCC_USB1_OTG_HS_CLK_DISABLE()      (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_USB1OTGHSEN))\n#define __HAL_RCC_USB1_OTG_HS_ULPI_CLK_DISABLE() (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_USB1OTGHSULPIEN))\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_CLK_DISABLE()      (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_USB2OTGHSEN))\n#define __HAL_RCC_USB2_OTG_FS_ULPI_CLK_DISABLE() (RCC->AHB1ENR &= ~ (RCC_AHB1ENR_USB2OTGHSULPIEN))\n#endif /* USB2_OTG_FS */\n\n/** @brief  Get the enable or disable status of the AHB1 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_DMA1_IS_CLK_ENABLED()              ((RCC->AHB1ENR & RCC_AHB1ENR_DMA1EN)          != 0U)\n#define __HAL_RCC_DMA2_IS_CLK_ENABLED()              ((RCC->AHB1ENR & RCC_AHB1ENR_DMA2EN)          != 0U)\n#define __HAL_RCC_ADC12_IS_CLK_ENABLED()             ((RCC->AHB1ENR & RCC_AHB1ENR_ADC12EN)         != 0U)\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_IS_CLK_ENABLED()               ((RCC->AHB1ENR & RCC_AHB1ENR_ARTEN)           != 0U)\n#endif /*DUAL_CORE*/\n#if defined(RCC_AHB1ENR_CRCEN)\n#define __HAL_RCC_CRC_IS_CLK_ENABLED()              ((RCC->AHB1ENR & RCC_AHB1ENR_CRCEN)       != 0U)\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_IS_CLK_ENABLED()           ((RCC->AHB1ENR & RCC_AHB1ENR_ETH1MACEN)       != 0U)\n#define __HAL_RCC_ETH1TX_IS_CLK_ENABLED()            ((RCC->AHB1ENR & RCC_AHB1ENR_ETH1TXEN)        != 0U)\n#define __HAL_RCC_ETH1RX_IS_CLK_ENABLED()            ((RCC->AHB1ENR & RCC_AHB1ENR_ETH1RXEN)        != 0U)\n#endif\n#define __HAL_RCC_USB1_OTG_HS_IS_CLK_ENABLED()       ((RCC->AHB1ENR & RCC_AHB1ENR_USB1OTGHSEN)     != 0U)\n#define __HAL_RCC_USB1_OTG_HS_ULPI_IS_CLK_ENABLED()  ((RCC->AHB1ENR & RCC_AHB1ENR_USB1OTGHSULPIEN) != 0U)\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_IS_CLK_ENABLED()       ((RCC->AHB1ENR & RCC_AHB1ENR_USB2OTGHSEN)     != 0U)\n#define __HAL_RCC_USB2_OTG_FS_ULPI_IS_CLK_ENABLED()  ((RCC->AHB1ENR & RCC_AHB1ENR_USB2OTGHSULPIEN) != 0U)\n#endif /* USB2_OTG_FS */\n\n#define __HAL_RCC_DMA1_IS_CLK_DISABLED()             ((RCC->AHB1ENR & RCC_AHB1ENR_DMA1EN)          == 0U)\n#define __HAL_RCC_DMA2_IS_CLK_DISABLED()             ((RCC->AHB1ENR & RCC_AHB1ENR_DMA2EN)          == 0U)\n#define __HAL_RCC_ADC12_IS_CLK_DISABLED()            ((RCC->AHB1ENR & RCC_AHB1ENR_ADC12EN)         == 0U)\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_IS_CLK_DISABLED()              ((RCC->AHB1ENR & RCC_AHB1ENR_ARTEN)           == 0U)\n#endif /*DUAL_CORE*/\n#if defined(RCC_AHB1ENR_CRCEN)\n#define __HAL_RCC_CRC_IS_CLK_DISABLED()              ((RCC->AHB1ENR & RCC_AHB1ENR_CRCEN)           == 0U)\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_IS_CLK_DISABLED()          ((RCC->AHB1ENR & RCC_AHB1ENR_ETH1MACEN)       == 0U)\n#define __HAL_RCC_ETH1TX_IS_CLK_DISABLED()           ((RCC->AHB1ENR & RCC_AHB1ENR_ETH1TXEN)        == 0U)\n#define __HAL_RCC_ETH1RX_IS_CLK_DISABLED()           ((RCC->AHB1ENR & RCC_AHB1ENR_ETH1RXEN)        == 0U)\n#endif\n#define __HAL_RCC_USB1_OTG_HS_IS_CLK_DISABLED()      ((RCC->AHB1ENR & RCC_AHB1ENR_USB1OTGHSEN)     == 0U)\n#define __HAL_RCC_USB1_OTG_HS_ULPI_IS_CLK_DISABLED() ((RCC->AHB1ENR & RCC_AHB1ENR_USB1OTGHSULPIEN) == 0U)\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_IS_CLK_DISABLED()      ((RCC->AHB1ENR & RCC_AHB1ENR_USB2OTGHSEN)     == 0U)\n#define __HAL_RCC_USB2_OTG_FS_ULPI_IS_CLK_DISABLED() ((RCC->AHB1ENR & RCC_AHB1ENR_USB2OTGHSULPIEN) == 0U)\n#endif /* USB2_OTG_FS */\n\n/** @brief  Enable or disable the AHB2 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMI_PSSIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMI_PSSIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_DCMI_CLK_ENABLE()  __HAL_RCC_DCMI_PSSI_CLK_ENABLE()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* DCMI && PSSI */\n\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* CRYP */\n\n#if defined(HASH)\n#define __HAL_RCC_HASH_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HASHEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HASHEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* HASH */\n\n#define __HAL_RCC_RNG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SDMMC2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_SDMMC2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_SDMMC2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_FMACEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_FMACEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* FMAC */\n    \n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CORDICEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CORDICEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* CORDIC */\n\n#if defined(RCC_AHB2ENR_D2SRAM1EN)\n#define __HAL_RCC_D2SRAM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_D2SRAM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_D2SRAM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#else\n#define __HAL_RCC_AHBSRAM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AHBSRAM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AHBSRAM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* RCC_AHB2ENR_D2SRAM1EN */\n\n#if defined(RCC_AHB2ENR_D2SRAM2EN)\n#define __HAL_RCC_D2SRAM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_D2SRAM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_D2SRAM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#else\n#define __HAL_RCC_AHBSRAM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AHBSRAM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AHBSRAM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* RCC_AHB2ENR_D2SRAM2EN */\n\n#if defined(RCC_AHB2ENR_D2SRAM3EN)\n#define __HAL_RCC_D2SRAM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_D2SRAM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_D2SRAM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#if defined(RCC_AHB2ENR_HSEMEN)\n#define __HAL_RCC_HSEM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HSEMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HSEMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* RCC_AHB2ENR_HSEMEN */\n\n#if defined(BDMA1)\n#define __HAL_RCC_BDMA1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_BDMA1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_BDMA1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* BDMA1 */\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_CLK_DISABLE()         (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_DCMI_PSSIEN))\n#define __HAL_RCC_DCMI_CLK_DISABLE()              __HAL_RCC_DCMI_PSSI_CLK_DISABLE()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_CLK_DISABLE()             (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_DCMIEN))\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_CLK_DISABLE()             (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_CRYPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_CLK_DISABLE()             (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_HASHEN))\n#endif /* HASH */\n#define __HAL_RCC_RNG_CLK_DISABLE()              (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_RNGEN))\n#define __HAL_RCC_SDMMC2_CLK_DISABLE()           (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_SDMMC2EN))\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_CLK_DISABLE()             (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_FMACEN))\n#endif /* FMAC */\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_CLK_DISABLE()           (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_CORDICEN))\n#endif /* CORDIC */\n#if defined(RCC_AHB2ENR_D2SRAM1EN)\n#define __HAL_RCC_D2SRAM1_CLK_DISABLE()          (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM1EN))\n#else\n#define __HAL_RCC_AHBSRAM1_CLK_DISABLE()         (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_AHBSRAM1EN))\n#endif /* RCC_AHB2ENR_D2SRAM1EN */\n#if defined(RCC_AHB2ENR_D2SRAM2EN)\n#define __HAL_RCC_D2SRAM2_CLK_DISABLE()          (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM2EN))\n#else\n#define __HAL_RCC_AHBSRAM2_CLK_DISABLE()         (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_AHBSRAM2EN))\n#endif /* RCC_AHB2ENR_D2SRAM2EN */\n#if defined(RCC_AHB2ENR_D2SRAM3EN)\n#define __HAL_RCC_D2SRAM3_CLK_DISABLE()          (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM3EN))\n#endif\n#if defined(RCC_AHB2ENR_HSEMEN)\n#define __HAL_RCC_HSEM_CLK_DISABLE()             (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_HSEMEN))\n#endif\n#if defined(BDMA1)\n#define __HAL_RCC_BDMA1_CLK_DISABLE()            (RCC->AHB2ENR &= ~ (RCC_AHB2ENR_BDMA1EN))\n#endif\n\n/** @brief  Get the enable or disable status of the AHB2 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_IS_CLK_ENABLED()         ((RCC->AHB2ENR & RCC_AHB2ENR_DCMI_PSSIEN)    != 0U)\n#define __HAL_RCC_DCMI_IS_CLK_ENABLED()              __HAL_RCC_DCMI_PSSI_IS_CLK_ENABLED()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_IS_CLK_ENABLED()              ((RCC->AHB2ENR & RCC_AHB2ENR_DCMIEN)    != 0U)\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_IS_CLK_ENABLED()              ((RCC->AHB2ENR & RCC_AHB2ENR_CRYPEN)    != 0U)\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_IS_CLK_ENABLED()              ((RCC->AHB2ENR & RCC_AHB2ENR_HASHEN)    != 0U)\n#endif /* HASH */\n#define __HAL_RCC_RNG_IS_CLK_ENABLED()               ((RCC->AHB2ENR & RCC_AHB2ENR_RNGEN)     != 0U)\n#define __HAL_RCC_SDMMC2_IS_CLK_ENABLED()            ((RCC->AHB2ENR & RCC_AHB2ENR_SDMMC2EN)  != 0U)\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_IS_CLK_ENABLED()              ((RCC->AHB2ENR & RCC_AHB2ENR_FMACEN)  != 0U)\n#endif /* FMAC */\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_IS_CLK_ENABLED()            ((RCC->AHB2ENR & RCC_AHB2ENR_CORDICEN)  != 0U)\n#endif /* CORDIC */\n#if defined(RCC_AHB2ENR_D2SRAM1EN)\n#define __HAL_RCC_D2SRAM1_IS_CLK_ENABLED()           ((RCC->AHB2ENR & RCC_AHB2ENR_D2SRAM1EN) != 0U)\n#else\n#define __HAL_RCC_AHBSRAM1_IS_CLK_ENABLED()          ((RCC->AHB2ENR & RCC_AHB2ENR_AHBSRAM1EN) != 0U)\n#endif /* RCC_AHB2ENR_D2SRAM1EN */\n#if defined(RCC_AHB2ENR_D2SRAM2EN)\n#define __HAL_RCC_D2SRAM2_IS_CLK_ENABLED()           ((RCC->AHB2ENR & RCC_AHB2ENR_D2SRAM2EN) != 0U)\n#else\n#define __HAL_RCC_AHBSRAM2_IS_CLK_ENABLED()          ((RCC->AHB2ENR & RCC_AHB2ENR_AHBSRAM2EN) != 0U)\n#endif /* RCC_AHB2ENR_D2SRAM2EN */\n#if defined(RCC_AHB2ENR_D2SRAM3EN)\n#define __HAL_RCC_D2SRAM3_IS_CLK_ENABLED()           ((RCC->AHB2ENR & RCC_AHB2ENR_D2SRAM3EN) != 0U)\n#endif\n#if defined(RCC_AHB2ENR_HSEMEN)\n#define __HAL_RCC_HSEM_IS_CLK_ENABLED()              ((RCC->AHB2ENR & RCC_AHB2ENR_HSEMEN)    != 0U)\n#endif\n#if defined(BDMA1)\n#define __HAL_RCC_BDMA1_IS_CLK_ENABLED()             ((RCC->AHB2ENR & RCC_AHB2ENR_BDMA1EN)  != 0U)\n#endif\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_IS_CLK_DISABLED()        ((RCC->AHB2ENR & RCC_AHB2ENR_DCMI_PSSIEN)    == 0U)\n#define __HAL_RCC_DCMI_IS_CLK_DISABLED()             __HAL_RCC_DCMI_PSSI_IS_CLK_DISABLED()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_IS_CLK_DISABLED()             ((RCC->AHB2ENR & RCC_AHB2ENR_DCMIEN)    == 0U)\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_IS_CLK_DISABLED()             ((RCC->AHB2ENR & RCC_AHB2ENR_CRYPEN)    == 0U)\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_IS_CLK_DISABLED()             ((RCC->AHB2ENR & RCC_AHB2ENR_HASHEN)    == 0U)\n#endif /* HASH */\n#define __HAL_RCC_RNG_IS_CLK_DISABLED()              ((RCC->AHB2ENR & RCC_AHB2ENR_RNGEN)     == 0U)\n#define __HAL_RCC_SDMMC2_IS_CLK_DISABLED()           ((RCC->AHB2ENR & RCC_AHB2ENR_SDMMC2EN)  == 0U)\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_IS_CLK_DISABLED()             ((RCC->AHB2ENR & RCC_AHB2ENR_FMACEN)  == 0U)\n#endif /* FMAC */\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_IS_CLK_DISABLED()           ((RCC->AHB2ENR & RCC_AHB2ENR_CORDICEN)  == 0U)\n#endif /* CORDIC */\n#if defined(RCC_AHB2ENR_D2SRAM1EN)\n#define __HAL_RCC_D2SRAM1_IS_CLK_DISABLED()          ((RCC->AHB2ENR & RCC_AHB2ENR_D2SRAM1EN) == 0U)\n#else\n#define __HAL_RCC_AHBSRAM1_IS_CLK_DISABLED()         ((RCC->AHB2ENR & RCC_AHB2ENR_AHBSRAM1EN) == 0U)\n#endif /* RCC_AHB2ENR_D2SRAM1EN */\n#if defined(RCC_AHB2ENR_D2SRAM2EN)\n#define __HAL_RCC_D2SRAM2_IS_CLK_DISABLED()          ((RCC->AHB2ENR & RCC_AHB2ENR_D2SRAM2EN) == 0U)\n#else\n#define __HAL_RCC_AHBSRAM2_IS_CLK_DISABLED()         ((RCC->AHB2ENR & RCC_AHB2ENR_AHBSRAM2EN) == 0U)\n#endif /* RCC_AHB2ENR_D2SRAM2EN */\n#if defined(RCC_AHB2ENR_D2SRAM3EN)\n#define __HAL_RCC_D2SRAM3_IS_CLK_DISABLED()          ((RCC->AHB2ENR & RCC_AHB2ENR_D2SRAM3EN) == 0U)\n#endif\n#if defined(RCC_AHB2ENR_HSEMEN)\n#define __HAL_RCC_HSEM_IS_CLK_DISABLED()             ((RCC->AHB2ENR & RCC_AHB2ENR_HSEMEN)    == 0U)\n#endif\n#if defined(BDMA1)\n#define __HAL_RCC_BDMA1_IS_CLK_DISABLED()            ((RCC->AHB2ENR & RCC_AHB2ENR_BDMA1EN)   == 0U)\n#endif\n\n/** @brief  Enable or disable the AHB4 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_GPIOA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOB_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOBEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOBEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOD_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIODEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIODEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOE_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOEEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOEEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOF_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOFEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOFEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOH_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOHEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOHEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* GPIOI */\n\n#define __HAL_RCC_GPIOJ_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOJEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOJEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_GPIOK_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOKEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOKEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(RCC_AHB4ENR_CRCEN)\n#define __HAL_RCC_CRC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_CRCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_CRCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_BDMA2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_BDMA2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_BDMA_CLK_ENABLE()  __HAL_RCC_BDMA2_CLK_ENABLE()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_BDMAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_BDMAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_ADC3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_ADC3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#if defined(RCC_AHB4ENR_HSEMEN)\n#define __HAL_RCC_HSEM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_HSEMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_HSEMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#if defined(RCC_AHB4ENR_SRDSRAMEN)\n#define __HAL_RCC_SRDSRAM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_SRDSRAMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_SRDSRAMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif\n\n#define __HAL_RCC_BKPRAM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_BKPRAMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_BKPRAMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_GPIOA_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOAEN)\n#define __HAL_RCC_GPIOB_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOBEN)\n#define __HAL_RCC_GPIOC_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOCEN)\n#define __HAL_RCC_GPIOD_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIODEN)\n#define __HAL_RCC_GPIOE_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOEEN)\n#define __HAL_RCC_GPIOF_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOFEN)\n#define __HAL_RCC_GPIOG_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOGEN)\n#define __HAL_RCC_GPIOH_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOHEN)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOIEN)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOJEN)\n#define __HAL_RCC_GPIOK_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOKEN)\n#if defined(RCC_AHB4ENR_CRCEN)\n#define __HAL_RCC_CRC_CLK_DISABLE()             (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_CRCEN)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_CLK_DISABLE()           (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_BDMA2EN)\n#define __HAL_RCC_BDMA_CLK_DISABLE()            __HAL_RCC_BDMA2_CLK_DISABLE()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_CLK_DISABLE()            (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_BDMAEN)\n#endif\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_CLK_DISABLE()            (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_ADC3EN)\n#endif\n#if defined(RCC_AHB4ENR_HSEMEN)\n#define __HAL_RCC_HSEM_CLK_DISABLE()            (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_HSEMEN)\n#endif\n#if defined(RCC_AHB4ENR_SRDSRAMEN)\n#define __HAL_RCC_SRDSRAM_CLK_DISABLE()         (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_SRDSRAMEN)\n#endif\n#define __HAL_RCC_BKPRAM_CLK_DISABLE()          (RCC->AHB4ENR) &= ~ (RCC_AHB4ENR_BKPRAMEN)\n\n\n/** @brief  Get the enable or disable status of the AHB4 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_GPIOA_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOAEN)  != 0U)\n#define __HAL_RCC_GPIOB_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOBEN)  != 0U)\n#define __HAL_RCC_GPIOC_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOCEN)  != 0U)\n#define __HAL_RCC_GPIOD_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIODEN)  != 0U)\n#define __HAL_RCC_GPIOE_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOEEN)  != 0U)\n#define __HAL_RCC_GPIOF_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOFEN)  != 0U)\n#define __HAL_RCC_GPIOG_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOGEN)  != 0U)\n#define __HAL_RCC_GPIOH_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOHEN)  != 0U)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOIEN)  != 0U)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOJEN)  != 0U)\n#define __HAL_RCC_GPIOK_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOKEN)  != 0U)\n#if defined(RCC_AHB4ENR_CRCEN)\n#define __HAL_RCC_CRC_IS_CLK_ENABLED()              ((RCC->AHB4ENR & RCC_AHB4ENR_CRCEN)    != 0U)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_IS_CLK_ENABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_BDMA2EN)   != 0U)\n#define __HAL_RCC_BDMA_IS_CLK_ENABLED()  __HAL_RCC_BDMA2_IS_CLK_ENABLED()            /* for API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_IS_CLK_ENABLED()             ((RCC->AHB4ENR & RCC_AHB4ENR_BDMAEN)   != 0U)\n#endif\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_IS_CLK_ENABLED()             ((RCC->AHB4ENR & RCC_AHB4ENR_ADC3EN)   != 0U)\n#endif\n#if defined(RCC_AHB4ENR_HSEMEN)\n#define __HAL_RCC_HSEM_IS_CLK_ENABLED()             ((RCC->AHB4ENR & RCC_AHB4ENR_HSEMEN)   != 0U)\n#endif\n#if defined(RCC_AHB4ENR_SRDSRAMEN)\n#define __HAL_RCC_SRDSRAM_IS_CLK_ENABLED()          ((RCC->AHB4ENR & RCC_AHB4ENR_SRDSRAMEN) != 0U)\n#endif\n#define __HAL_RCC_BKPRAM_IS_CLK_ENABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_BKPRAMEN) != 0U)\n\n#define __HAL_RCC_GPIOA_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOAEN)  == 0U)\n#define __HAL_RCC_GPIOB_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOBEN)  == 0U)\n#define __HAL_RCC_GPIOC_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOCEN)  == 0U)\n#define __HAL_RCC_GPIOD_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIODEN)  == 0U)\n#define __HAL_RCC_GPIOE_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOEEN)  == 0U)\n#define __HAL_RCC_GPIOF_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOFEN)  == 0U)\n#define __HAL_RCC_GPIOG_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOGEN)  == 0U)\n#define __HAL_RCC_GPIOH_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOHEN)  == 0U)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOIEN)  == 0U)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOJEN)  == 0U)\n#define __HAL_RCC_GPIOK_IS_CLK_DISABLED()           ((RCC->AHB4ENR & RCC_AHB4ENR_GPIOKEN)  == 0U)\n\n#if defined(RCC_AHB4ENR_CRCEN)\n#define __HAL_RCC_CRC_IS_CLK_DISABLED()             ((RCC->AHB4ENR & RCC_AHB4ENR_CRCEN)    == 0U)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_IS_CLK_DISABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_BDMA2EN)   == 0U)\n#define __HAL_RCC_BDMA_IS_CLK_DISABLED()  __HAL_RCC_BDMA2_IS_CLK_DISABLED()           /* for API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_IS_CLK_DISABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_BDMAEN)   == 0U)\n#endif\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_IS_CLK_DISABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_ADC3EN)   == 0U)\n#endif\n#if defined(RCC_AHB4ENR_HSEMEN)\n#define __HAL_RCC_HSEM_IS_CLK_DISABLED()            ((RCC->AHB4ENR & RCC_AHB4ENR_HSEMEN)   == 0U)\n#endif\n#if defined(RCC_AHB4ENR_SRDSRAMEN)\n#define __HAL_RCC_SRDSRAM_IS_CLK_DISABLED()         ((RCC->AHB4ENR & RCC_AHB4ENR_SRDSRAMEN)   == 0U)\n#endif\n#define __HAL_RCC_BKPRAM_IS_CLK_DISABLED()          ((RCC->AHB4ENR & RCC_AHB4ENR_BKPRAMEN) == 0U)\n\n\n/** @brief  Enable or disable the APB3 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB3ENR, RCC_APB3ENR_LTDCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LTDCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* LTDC */\n\n#if defined(DSI)\n#define __HAL_RCC_DSI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB3ENR, RCC_APB3ENR_DSIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_DSIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*DSI*/\n\n#define __HAL_RCC_WWDG1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB3ENR, RCC_APB3ENR_WWDG1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_WWDG1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_CLK_DISABLE()           (RCC->APB3ENR) &= ~ (RCC_APB3ENR_LTDCEN)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_CLK_DISABLE()            (RCC->APB3ENR) &= ~ (RCC_APB3ENR_DSIEN)\n#endif /*DSI*/\n#define __HAL_RCC_WWDG1_CLK_DISABLE()          (RCC->APB3ENR) &= ~ (RCC_APB3ENR_WWDG1EN)\n\n/** @brief  Get the enable or disable status of the APB3 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_IS_CLK_ENABLED()            ((RCC->APB3ENR & RCC_APB3ENR_LTDCEN)  != 0U)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_IS_CLK_ENABLED()             ((RCC->APB3ENR & RCC_APB3ENR_DSIEN)   != 0U)\n#endif /*DSI*/\n#define __HAL_RCC_WWDG1_IS_CLK_ENABLED()           ((RCC->APB3ENR & RCC_APB3ENR_WWDG1EN) != 0U)\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_IS_CLK_DISABLED()           ((RCC->APB3ENR & RCC_APB3ENR_LTDCEN)  == 0U)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_IS_CLK_DISABLED()            ((RCC->APB3ENR & RCC_APB3ENR_DSIEN)   == 0U)\n#endif /*DSI*/\n#define __HAL_RCC_WWDG1_IS_CLK_DISABLED()          ((RCC->APB3ENR & RCC_APB3ENR_WWDG1EN) == 0U)\n\n\n/** @brief  Enable or disable the APB1 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_TIM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM7_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM7EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM7EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM13_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM13EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM13EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM14_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM14EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_TIM14EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_LPTIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_LPTIM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_LPTIM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_WWDG2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_WWDG2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*DUAL_CORE*/\n\n#define __HAL_RCC_SPI2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_SPI2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_SPI2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SPI3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_SPI3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_SPI3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SPDIFRX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_SPDIFRXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_SPDIFRXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_USART2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_USART2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_USART2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_USART3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_USART3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_USART3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_UART4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_UART4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_UART4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_UART5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_UART5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_UART5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_I2C1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_I2C2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_I2C3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_I2C5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* I2C5 */\n\n#define __HAL_RCC_CEC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_CECEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_CECEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_DAC12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_DAC12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_DAC12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_UART7_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_UART7EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_UART7EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_UART8_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1LENR, RCC_APB1LENR_UART8EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1LENR, RCC_APB1LENR_UART8EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_CRS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1HENR, RCC_APB1HENR_CRSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1HENR, RCC_APB1HENR_CRSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SWPMI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1HENR, RCC_APB1HENR_SWPMIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1HENR, RCC_APB1HENR_SWPMIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_OPAMP_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1HENR, RCC_APB1HENR_OPAMPEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1HENR, RCC_APB1HENR_OPAMPEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_MDIOS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1HENR, RCC_APB1HENR_MDIOSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1HENR, RCC_APB1HENR_MDIOSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_FDCAN_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1HENR, RCC_APB1HENR_FDCANEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1HENR, RCC_APB1HENR_FDCANEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1HENR, RCC_APB1HENR_TIM23EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1HENR, RCC_APB1HENR_TIM23EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*  TIM23 */\n\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB1HENR, RCC_APB1HENR_TIM24EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB1HENR, RCC_APB1HENR_TIM24EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*  TIM24 */\n\n#define __HAL_RCC_TIM2_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM2EN)\n#define __HAL_RCC_TIM3_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM3EN)\n#define __HAL_RCC_TIM4_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM4EN)\n#define __HAL_RCC_TIM5_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM5EN)\n#define __HAL_RCC_TIM6_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM6EN)\n#define __HAL_RCC_TIM7_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM7EN)\n#define __HAL_RCC_TIM12_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM12EN)\n#define __HAL_RCC_TIM13_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM13EN)\n#define __HAL_RCC_TIM14_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_TIM14EN)\n#define __HAL_RCC_LPTIM1_CLK_DISABLE()         (RCC->APB1LENR) &= ~ (RCC_APB1LENR_LPTIM1EN)\n\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_WWDG2EN)\n#endif /*DUAL_CORE*/\n\n#define __HAL_RCC_SPI2_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_SPI2EN)\n#define __HAL_RCC_SPI3_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_SPI3EN)\n#define __HAL_RCC_SPDIFRX_CLK_DISABLE()        (RCC->APB1LENR) &= ~ (RCC_APB1LENR_SPDIFRXEN)\n#define __HAL_RCC_USART2_CLK_DISABLE()         (RCC->APB1LENR) &= ~ (RCC_APB1LENR_USART2EN)\n#define __HAL_RCC_USART3_CLK_DISABLE()         (RCC->APB1LENR) &= ~ (RCC_APB1LENR_USART3EN)\n#define __HAL_RCC_UART4_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_UART4EN)\n#define __HAL_RCC_UART5_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_UART5EN)\n#define __HAL_RCC_I2C1_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_I2C1EN)\n#define __HAL_RCC_I2C2_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_I2C2EN)\n#define __HAL_RCC_I2C3_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_I2C3EN)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_CLK_DISABLE()           (RCC->APB1LENR) &= ~ (RCC_APB1LENR_I2C5EN)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_CLK_DISABLE()            (RCC->APB1LENR) &= ~ (RCC_APB1LENR_CECEN)\n#define __HAL_RCC_DAC12_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_DAC12EN)\n#define __HAL_RCC_UART7_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_UART7EN)\n#define __HAL_RCC_UART8_CLK_DISABLE()          (RCC->APB1LENR) &= ~ (RCC_APB1LENR_UART8EN)\n#define __HAL_RCC_CRS_CLK_DISABLE()            (RCC->APB1HENR) &= ~ (RCC_APB1HENR_CRSEN)\n#define __HAL_RCC_SWPMI1_CLK_DISABLE()          (RCC->APB1HENR) &= ~ (RCC_APB1HENR_SWPMIEN)\n#define __HAL_RCC_OPAMP_CLK_DISABLE()          (RCC->APB1HENR) &= ~ (RCC_APB1HENR_OPAMPEN)\n#define __HAL_RCC_MDIOS_CLK_DISABLE()          (RCC->APB1HENR) &= ~ (RCC_APB1HENR_MDIOSEN)\n#define __HAL_RCC_FDCAN_CLK_DISABLE()          (RCC->APB1HENR) &= ~ (RCC_APB1HENR_FDCANEN)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_CLK_DISABLE()          (RCC->APB1HENR) &= ~ (RCC_APB1HENR_TIM23EN)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_CLK_DISABLE()          (RCC->APB1HENR) &= ~ (RCC_APB1HENR_TIM24EN)\n#endif /* TIM24 */\n\n\n/** @brief  Get the enable or disable status of the APB1 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_TIM2_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_TIM2EN)    != 0U)\n#define __HAL_RCC_TIM3_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_TIM3EN)    != 0U)\n#define __HAL_RCC_TIM4_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_TIM4EN)    != 0U)\n#define __HAL_RCC_TIM5_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_TIM5EN)    != 0U)\n#define __HAL_RCC_TIM6_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_TIM6EN)    != 0U)\n#define __HAL_RCC_TIM7_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_TIM7EN)    != 0U)\n#define __HAL_RCC_TIM12_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM12EN)   != 0U)\n#define __HAL_RCC_TIM13_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM13EN)   != 0U)\n#define __HAL_RCC_TIM14_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM14EN)   != 0U)\n#define __HAL_RCC_LPTIM1_IS_CLK_ENABLED()          ((RCC->APB1LENR & RCC_APB1LENR_LPTIM1EN)  != 0U)\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_WWDG2EN)   != 0U)\n#endif /*DUAL_CORE*/\n#define __HAL_RCC_SPI2_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_SPI2EN)    != 0U)\n#define __HAL_RCC_SPI3_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_SPI3EN)    != 0U)\n#define __HAL_RCC_SPDIFRX_IS_CLK_ENABLED()         ((RCC->APB1LENR & RCC_APB1LENR_SPDIFRXEN) != 0U)\n#define __HAL_RCC_USART2_IS_CLK_ENABLED()          ((RCC->APB1LENR & RCC_APB1LENR_USART2EN)  != 0U)\n#define __HAL_RCC_USART3_IS_CLK_ENABLED()          ((RCC->APB1LENR & RCC_APB1LENR_USART3EN)  != 0U)\n#define __HAL_RCC_UART4_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_UART4EN)   != 0U)\n#define __HAL_RCC_UART5_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_UART5EN)   != 0U)\n#define __HAL_RCC_I2C1_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_I2C1EN)    != 0U)\n#define __HAL_RCC_I2C2_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_I2C2EN)    != 0U)\n#define __HAL_RCC_I2C3_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_I2C3EN)    != 0U)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_IS_CLK_ENABLED()            ((RCC->APB1LENR & RCC_APB1LENR_I2C5EN)    != 0U)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_IS_CLK_ENABLED()             ((RCC->APB1LENR & RCC_APB1LENR_CECEN)     != 0U)\n#define __HAL_RCC_DAC12_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_DAC12EN)   != 0U)\n#define __HAL_RCC_UART7_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_UART7EN)   != 0U)\n#define __HAL_RCC_UART8_IS_CLK_ENABLED()           ((RCC->APB1LENR & RCC_APB1LENR_UART8EN)   != 0U)\n#define __HAL_RCC_CRS_IS_CLK_ENABLED()             ((RCC->APB1HENR & RCC_APB1HENR_CRSEN)     != 0U)\n#define __HAL_RCC_SWPMI1_IS_CLK_ENABLED()          ((RCC->APB1HENR & RCC_APB1HENR_SWPMIEN)   != 0U)\n#define __HAL_RCC_OPAMP_IS_CLK_ENABLED()           ((RCC->APB1HENR & RCC_APB1HENR_OPAMPEN)   != 0U)\n#define __HAL_RCC_MDIOS_IS_CLK_ENABLED()           ((RCC->APB1HENR & RCC_APB1HENR_MDIOSEN)   != 0U)\n#define __HAL_RCC_FDCAN_IS_CLK_ENABLED()           ((RCC->APB1HENR & RCC_APB1HENR_FDCANEN)   != 0U)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_IS_CLK_ENABLED()           ((RCC->APB1HENR & RCC_APB1HENR_TIM23EN)   != 0U)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_IS_CLK_ENABLED()           ((RCC->APB1HENR & RCC_APB1HENR_TIM24EN)   != 0U) \n#endif /* TIM24 */\n\n#define __HAL_RCC_TIM2_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM2EN)    == 0U)\n#define __HAL_RCC_TIM3_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM3EN)    == 0U)\n#define __HAL_RCC_TIM4_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM4EN)    == 0U)\n#define __HAL_RCC_TIM5_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM5EN)    == 0U)\n#define __HAL_RCC_TIM6_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM6EN)    == 0U)\n#define __HAL_RCC_TIM7_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_TIM7EN)    == 0U)\n#define __HAL_RCC_TIM12_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_TIM12EN)   == 0U)\n#define __HAL_RCC_TIM13_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_TIM13EN)   == 0U)\n#define __HAL_RCC_TIM14_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_TIM14EN)   == 0U)\n#define __HAL_RCC_LPTIM1_IS_CLK_DISABLED()         ((RCC->APB1LENR & RCC_APB1LENR_LPTIM1EN)  == 0U)\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_WWDG2EN)   == 0U)\n#endif /*DUAL_CORE*/\n#define __HAL_RCC_SPI2_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_SPI2EN)    == 0U)\n#define __HAL_RCC_SPI3_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_SPI3EN)    == 0U)\n#define __HAL_RCC_SPDIFRX_IS_CLK_DISABLED()        ((RCC->APB1LENR & RCC_APB1LENR_SPDIFRXEN) == 0U)\n#define __HAL_RCC_USART2_IS_CLK_DISABLED()         ((RCC->APB1LENR & RCC_APB1LENR_USART2EN)  == 0U)\n#define __HAL_RCC_USART3_IS_CLK_DISABLED()         ((RCC->APB1LENR & RCC_APB1LENR_USART3EN)  == 0U)\n#define __HAL_RCC_UART4_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_UART4EN)   == 0U)\n#define __HAL_RCC_UART5_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_UART5EN)   == 0U)\n#define __HAL_RCC_I2C1_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_I2C1EN)    == 0U)\n#define __HAL_RCC_I2C2_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_I2C2EN)    == 0U)\n#define __HAL_RCC_I2C3_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_I2C3EN)    == 0U)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_IS_CLK_DISABLED()           ((RCC->APB1LENR & RCC_APB1LENR_I2C5EN)    == 0U)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_IS_CLK_DISABLED()            ((RCC->APB1LENR & RCC_APB1LENR_CECEN)     == 0U)\n#define __HAL_RCC_DAC12_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_DAC12EN)   == 0U)\n#define __HAL_RCC_UART7_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_UART7EN)   == 0U)\n#define __HAL_RCC_UART8_IS_CLK_DISABLED()          ((RCC->APB1LENR & RCC_APB1LENR_UART8EN)   == 0U)\n#define __HAL_RCC_CRS_IS_CLK_DISABLED()            ((RCC->APB1HENR & RCC_APB1HENR_CRSEN)     == 0U)\n#define __HAL_RCC_SWPMI1_IS_CLK_DISABLED()         ((RCC->APB1HENR & RCC_APB1HENR_SWPMIEN)   == 0U)\n#define __HAL_RCC_OPAMP_IS_CLK_DISABLED()          ((RCC->APB1HENR & RCC_APB1HENR_OPAMPEN)   == 0U)\n#define __HAL_RCC_MDIOS_IS_CLK_DISABLED()          ((RCC->APB1HENR & RCC_APB1HENR_MDIOSEN)   == 0U)\n#define __HAL_RCC_FDCAN_IS_CLK_DISABLED()          ((RCC->APB1HENR & RCC_APB1HENR_FDCANEN)   == 0U)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_IS_CLK_DISABLED()          ((RCC->APB1HENR & RCC_APB1HENR_TIM23EN)   == 0U)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_IS_CLK_DISABLED()          ((RCC->APB1HENR & RCC_APB1HENR_TIM24EN)   == 0U)\n#endif /* TIM24 */\n\n\n/** @brief  Enable or disable the APB2 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_TIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM8_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_USART1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_USART6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(UART9)\n#define __HAL_RCC_UART9_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_UART9EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_UART9EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*UART9*/\n\n#if defined(USART10)\n#define __HAL_RCC_USART10_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART10EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART10EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*USART10*/\n\n#define __HAL_RCC_SPI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SPI4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM15_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM16_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_TIM17_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SPI5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SAI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*SAI2*/\n\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*SAI3*/\n\n#define __HAL_RCC_DFSDM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_HRTIMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_HRTIMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*HRTIM1*/\n\n#define __HAL_RCC_TIM1_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_TIM1EN)\n#define __HAL_RCC_TIM8_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_TIM8EN)\n#define __HAL_RCC_USART1_CLK_DISABLE()         (RCC->APB2ENR) &= ~ (RCC_APB2ENR_USART1EN)\n#define __HAL_RCC_USART6_CLK_DISABLE()         (RCC->APB2ENR) &= ~ (RCC_APB2ENR_USART6EN)\n#if defined(UART9)\n#define __HAL_RCC_UART9_CLK_DISABLE()          (RCC->APB2ENR) &= ~ (RCC_APB2ENR_UART9EN)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_CLK_DISABLE()        (RCC->APB2ENR) &= ~ (RCC_APB2ENR_USART10EN)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_SPI1EN)\n#define __HAL_RCC_SPI4_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_SPI4EN)\n#define __HAL_RCC_TIM15_CLK_DISABLE()          (RCC->APB2ENR) &= ~ (RCC_APB2ENR_TIM15EN)\n#define __HAL_RCC_TIM16_CLK_DISABLE()          (RCC->APB2ENR) &= ~ (RCC_APB2ENR_TIM16EN)\n#define __HAL_RCC_TIM17_CLK_DISABLE()          (RCC->APB2ENR) &= ~ (RCC_APB2ENR_TIM17EN)\n#define __HAL_RCC_SPI5_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_SPI5EN)\n#define __HAL_RCC_SAI1_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_SAI1EN)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_SAI2EN)\n#endif /*SAI2*/\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_CLK_DISABLE()           (RCC->APB2ENR) &= ~ (RCC_APB2ENR_SAI3EN)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_CLK_DISABLE()         (RCC->APB2ENR) &= ~ (RCC_APB2ENR_DFSDM1EN)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_CLK_DISABLE()         (RCC->APB2ENR) &= ~ (RCC_APB2ENR_HRTIMEN)\n#endif /*HRTIM*/\n\n/** @brief  Get the enable or disable status of the APB2 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_TIM1_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_TIM1EN)   != 0U)\n#define __HAL_RCC_TIM8_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_TIM8EN)   != 0U)\n#define __HAL_RCC_USART1_IS_CLK_ENABLED()          ((RCC->APB2ENR & RCC_APB2ENR_USART1EN) != 0U)\n#define __HAL_RCC_USART6_IS_CLK_ENABLED()          ((RCC->APB2ENR & RCC_APB2ENR_USART6EN) != 0U)\n#if defined(UART9)\n#define __HAL_RCC_UART9_IS_CLK_ENABLED()           ((RCC->APB2ENR & RCC_APB2ENR_UART9EN) != 0U)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_IS_CLK_ENABLED()         ((RCC->APB2ENR & RCC_APB2ENR_USART10EN) != 0U)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_SPI1EN)   != 0U)\n#define __HAL_RCC_SPI4_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_SPI4EN)   != 0U)\n#define __HAL_RCC_TIM15_IS_CLK_ENABLED()           ((RCC->APB2ENR & RCC_APB2ENR_TIM15EN)  != 0U)\n#define __HAL_RCC_TIM16_IS_CLK_ENABLED()           ((RCC->APB2ENR & RCC_APB2ENR_TIM16EN)  != 0U)\n#define __HAL_RCC_TIM17_IS_CLK_ENABLED()           ((RCC->APB2ENR & RCC_APB2ENR_TIM17EN)  != 0U)\n#define __HAL_RCC_SPI5_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_SPI5EN)   != 0U)\n#define __HAL_RCC_SAI1_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_SAI1EN)   != 0U)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_SAI2EN)   != 0U)\n#endif /*SAI2*/\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_IS_CLK_ENABLED()            ((RCC->APB2ENR & RCC_APB2ENR_SAI3EN)   != 0U)\n#endif /* SAI3 */\n#define __HAL_RCC_DFSDM1_IS_CLK_ENABLED()          ((RCC->APB2ENR & RCC_APB2ENR_DFSDM1EN) != 0U)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_IS_CLK_ENABLED()          ((RCC->APB2ENR & RCC_APB2ENR_HRTIMEN)  != 0U)\n#endif /*HRTIM1*/\n\n#define __HAL_RCC_TIM1_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_TIM1EN)   == 0U)\n#define __HAL_RCC_TIM8_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_TIM8EN)   == 0U)\n#define __HAL_RCC_USART1_IS_CLK_DISABLED()         ((RCC->APB2ENR & RCC_APB2ENR_USART1EN) == 0U)\n#define __HAL_RCC_USART6_IS_CLK_DISABLED()         ((RCC->APB2ENR & RCC_APB2ENR_USART6EN) == 0U)\n#if defined(UART9)\n#define __HAL_RCC_UART9_IS_CLK_DISABLED()         ((RCC->APB2ENR & RCC_APB2ENR_UART9EN) == 0U)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_IS_CLK_DISABLED()         ((RCC->APB2ENR & RCC_APB2ENR_USART10EN) == 0U)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_SPI1EN)   == 0U)\n#define __HAL_RCC_SPI4_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_SPI4EN)   == 0U)\n#define __HAL_RCC_TIM15_IS_CLK_DISABLED()          ((RCC->APB2ENR & RCC_APB2ENR_TIM15EN)  == 0U)\n#define __HAL_RCC_TIM16_IS_CLK_DISABLED()          ((RCC->APB2ENR & RCC_APB2ENR_TIM16EN)  == 0U)\n#define __HAL_RCC_TIM17_IS_CLK_DISABLED()          ((RCC->APB2ENR & RCC_APB2ENR_TIM17EN)  == 0U)\n#define __HAL_RCC_SPI5_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_SPI5EN)   == 0U)\n#define __HAL_RCC_SAI1_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_SAI1EN)   == 0U)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_SAI2EN)   == 0U)\n#endif /*SAI2*/\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_IS_CLK_DISABLED()           ((RCC->APB2ENR & RCC_APB2ENR_SAI3EN)   == 0U)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_IS_CLK_DISABLED()         ((RCC->APB2ENR & RCC_APB2ENR_DFSDM1EN) == 0U)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_IS_CLK_DISABLED()         ((RCC->APB2ENR & RCC_APB2ENR_HRTIMEN)  == 0U)\n#endif /*HRTIM1*/\n\n/** @brief  Enable or disable the APB4 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_SYSCFG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_SYSCFGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_SYSCFGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_LPUART1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_LPUART1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_LPUART1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_SPI6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_SPI6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_SPI6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_I2C4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_I2C4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_I2C4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_LPTIM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_LPTIM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* LPTIM4 */\n\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_LPTIM5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* LPTIM5 */\n\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_DAC2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_DAC2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*  DAC2 */\n\n#define __HAL_RCC_COMP12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_COMP12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_COMP12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_VREF_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_VREFEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_VREFEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_SAI4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_SAI4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* SAI4 */\n\n#define __HAL_RCC_RTC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_RTCAPBEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_RTCAPBEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(DTS)\n#define __HAL_RCC_DTS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_DTSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_DTSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*DTS*/\n\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC->APB4ENR, RCC_APB4ENR_DFSDM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC->APB4ENR, RCC_APB4ENR_DFSDM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /*DFSDM2*/\n\n#define __HAL_RCC_SYSCFG_CLK_DISABLE()           (RCC->APB4ENR) &= ~ (RCC_APB4ENR_SYSCFGEN)\n#define __HAL_RCC_LPUART1_CLK_DISABLE()          (RCC->APB4ENR) &= ~ (RCC_APB4ENR_LPUART1EN)\n#define __HAL_RCC_SPI6_CLK_DISABLE()             (RCC->APB4ENR) &= ~ (RCC_APB4ENR_SPI6EN)\n#define __HAL_RCC_I2C4_CLK_DISABLE()             (RCC->APB4ENR) &= ~ (RCC_APB4ENR_I2C4EN)\n#define __HAL_RCC_LPTIM2_CLK_DISABLE()           (RCC->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM2EN)\n#define __HAL_RCC_LPTIM3_CLK_DISABLE()           (RCC->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM3EN)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_CLK_DISABLE()           (RCC->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM4EN)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_CLK_DISABLE()           (RCC->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM5EN)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_CLK_DISABLE()             (RCC->APB4ENR) &= ~ (RCC_APB4ENR_DAC2EN)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_CLK_DISABLE()           (RCC->APB4ENR) &= ~ (RCC_APB4ENR_COMP12EN)\n#define __HAL_RCC_VREF_CLK_DISABLE()             (RCC->APB4ENR) &= ~ (RCC_APB4ENR_VREFEN)\n#define __HAL_RCC_RTC_CLK_DISABLE()              (RCC->APB4ENR) &= ~ (RCC_APB4ENR_RTCAPBEN)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_CLK_DISABLE()             (RCC->APB4ENR) &= ~ (RCC_APB4ENR_SAI4EN)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_CLK_DISABLE()              (RCC->APB4ENR) &= ~ (RCC_APB4ENR_DTSEN)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_CLK_DISABLE()           (RCC->APB4ENR) &= ~ (RCC_APB4ENR_DFSDM2EN)\n#endif /*DFSDM2*/\n\n/** @brief  Get the enable or disable status of the APB4 peripheral clock\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_SYSCFG_IS_CLK_ENABLED()            ((RCC->APB4ENR & RCC_APB4ENR_SYSCFGEN)  != 0U)\n#define __HAL_RCC_LPUART1_IS_CLK_ENABLED()           ((RCC->APB4ENR & RCC_APB4ENR_LPUART1EN) != 0U)\n#define __HAL_RCC_SPI6_IS_CLK_ENABLED()              ((RCC->APB4ENR & RCC_APB4ENR_SPI6EN)    != 0U)\n#define __HAL_RCC_I2C4_IS_CLK_ENABLED()              ((RCC->APB4ENR & RCC_APB4ENR_I2C4EN)    != 0U)\n#define __HAL_RCC_LPTIM2_IS_CLK_ENABLED()            ((RCC->APB4ENR & RCC_APB4ENR_LPTIM2EN)  != 0U)\n#define __HAL_RCC_LPTIM3_IS_CLK_ENABLED()            ((RCC->APB4ENR & RCC_APB4ENR_LPTIM3EN)  != 0U)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_IS_CLK_ENABLED()            ((RCC->APB4ENR & RCC_APB4ENR_LPTIM4EN)  != 0U)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_IS_CLK_ENABLED()            ((RCC->APB4ENR & RCC_APB4ENR_LPTIM5EN)  != 0U)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_IS_CLK_ENABLED()              ((RCC->APB4ENR & RCC_APB4ENR_DAC2EN)  != 0U)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_IS_CLK_ENABLED()            ((RCC->APB4ENR & RCC_APB4ENR_COMP12EN)  != 0U)\n#define __HAL_RCC_VREF_IS_CLK_ENABLED()              ((RCC->APB4ENR & RCC_APB4ENR_VREFEN)    != 0U)\n#define __HAL_RCC_RTC_IS_CLK_ENABLED()               ((RCC->APB4ENR & RCC_APB4ENR_RTCAPBEN)  != 0U)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_IS_CLK_ENABLED()              ((RCC->APB4ENR & RCC_APB4ENR_SAI4EN)    != 0U)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_IS_CLK_ENABLED()               ((RCC->APB4ENR & RCC_APB4ENR_DTSEN)    != 0U)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_IS_CLK_ENABLED()              ((RCC->APB4ENR & RCC_APB4ENR_DFSDM2EN)    != 0U)\n#endif /*DFSDM2*/\n\n#define __HAL_RCC_SYSCFG_IS_CLK_DISABLED()           ((RCC->APB4ENR & RCC_APB4ENR_SYSCFGEN)  == 0U)\n#define __HAL_RCC_LPUART1_IS_CLK_DISABLED()          ((RCC->APB4ENR & RCC_APB4ENR_LPUART1EN) == 0U)\n#define __HAL_RCC_SPI6_IS_CLK_DISABLED()             ((RCC->APB4ENR & RCC_APB4ENR_SPI6EN)    == 0U)\n#define __HAL_RCC_I2C4_IS_CLK_DISABLED()             ((RCC->APB4ENR & RCC_APB4ENR_I2C4EN)    == 0U)\n#define __HAL_RCC_LPTIM2_IS_CLK_DISABLED()           ((RCC->APB4ENR & RCC_APB4ENR_LPTIM2EN)  == 0U)\n#define __HAL_RCC_LPTIM3_IS_CLK_DISABLED()           ((RCC->APB4ENR & RCC_APB4ENR_LPTIM3EN)  == 0U)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_IS_CLK_DISABLED()           ((RCC->APB4ENR & RCC_APB4ENR_LPTIM4EN)  == 0U)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_IS_CLK_DISABLED()           ((RCC->APB4ENR & RCC_APB4ENR_LPTIM5EN)  == 0U)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_IS_CLK_DISABLED()             ((RCC->APB4ENR & RCC_APB4ENR_DAC2EN)  == 0U)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_IS_CLK_DISABLED()           ((RCC->APB4ENR & RCC_APB4ENR_COMP12EN)  == 0U)\n#define __HAL_RCC_VREF_IS_CLK_DISABLED()             ((RCC->APB4ENR & RCC_APB4ENR_VREFEN)    == 0U)\n#define __HAL_RCC_RTC_IS_CLK_DISABLED()              ((RCC->APB4ENR & RCC_APB4ENR_RTCAPBEN)  == 0U)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_IS_CLK_DISABLED()             ((RCC->APB4ENR & RCC_APB4ENR_SAI4EN)    == 0U)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_IS_CLK_DISABLED()              ((RCC->APB4ENR & RCC_APB4ENR_DTSEN)    == 0U)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_IS_CLK_DISABLED()          ((RCC->APB4ENR & RCC_APB4ENR_DFSDM2EN)    == 0U)\n#endif /*DFSDM2*/\n\n#if defined(DUAL_CORE)\n\n/* Exported macros for RCC_C1 -------------------------------------------------*/\n\n/** @brief  Enable or disable the AHB3 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_MDMA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_MDMAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_MDMAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_DMA2D_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_DMA2DEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_DMA2DEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_JPGDECEN_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_JPGDECEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_JPGDECEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C1_FMC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_FMCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_FMCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_QSPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SDMMC1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_SDMMC1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB3ENR, RCC_AHB3ENR_SDMMC1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n\n\n#define __HAL_RCC_C1_MDMA_CLK_DISABLE()            (RCC_C1->AHB3ENR &= ~ (RCC_AHB3ENR_MDMAEN))\n#define __HAL_RCC_C1_DMA2D_CLK_DISABLE()           (RCC_C1->AHB3ENR &= ~ (RCC_AHB3ENR_DMA2DEN))\n#define __HAL_RCC_C1_JPGDECEN_CLK_DISABLE()        (RCC_C1->AHB3ENR &= ~ (RCC_AHB3ENR_JPGDECEN))\n#define __HAL_RCC_C1_FMC_CLK_DISABLE()             (RCC_C1->AHB3ENR &= ~ (RCC_AHB3ENR_FMCEN))\n#define __HAL_RCC_C1_QSPI_CLK_DISABLE()            (RCC_C1->AHB3ENR &= ~ (RCC_AHB3ENR_QSPIEN))\n#define __HAL_RCC_C1_SDMMC1_CLK_DISABLE()          (RCC_C1->AHB3ENR &= ~ (RCC_AHB3ENR_SDMMC1EN))\n\n\n\n\n/** @brief  Enable or disable the AHB1 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_DMA1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_DMA2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_ADC12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ADC12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ADC12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_ART_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ARTEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ARTEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_ETH1MAC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ETH1MACEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ETH1MACEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_ETH1TX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ETH1TXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ETH1TXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_ETH1RX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ETH1RXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_ETH1RXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C1_USB1_OTG_HS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB1OTGHSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB1OTGHSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_USB1_OTG_HS_ULPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB1OTGHSULPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB1OTGHSULPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_USB2_OTG_FS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB2OTGHSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB2OTGHSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_USB2_OTG_FS_ULPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB2OTGHSULPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB1ENR, RCC_AHB1ENR_USB2OTGHSULPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_DMA1_CLK_DISABLE()             (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_DMA1EN))\n#define __HAL_RCC_C1_DMA2_CLK_DISABLE()             (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_DMA2EN))\n#define __HAL_RCC_C1_ADC12_CLK_DISABLE()            (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_ADC12EN))\n#define __HAL_RCC_C1_ART_CLK_DISABLE()              (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_ARTEN))\n#define __HAL_RCC_C1_ETH1MAC_CLK_DISABLE()          (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1MACEN))\n#define __HAL_RCC_C1_ETH1TX_CLK_DISABLE()           (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1TXEN))\n#define __HAL_RCC_C1_ETH1RX_CLK_DISABLE()           (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1RXEN))\n#define __HAL_RCC_C1_USB1_OTG_HS_CLK_DISABLE()      (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_USB1OTGHSEN))\n#define __HAL_RCC_C1_USB1_OTG_HS_ULPI_CLK_DISABLE() (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_USB1OTGHSULPIEN))\n#define __HAL_RCC_C1_USB2_OTG_FS_CLK_DISABLE()      (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_USB2OTGHSEN))\n#define __HAL_RCC_C1_USB2_OTG_FS_ULPI_CLK_DISABLE() (RCC_C1->AHB1ENR &= ~ (RCC_AHB1ENR_USB2OTGHSULPIEN))\n\n/** @brief  Enable or disable the AHB2 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_DCMI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#if defined(CRYP)\n#define __HAL_RCC_C1_CRYP_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* CRYP */\n\n#if defined(HASH)\n#define __HAL_RCC_C1_HASH_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_HASHEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_HASHEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* HASH */\n\n#define __HAL_RCC_C1_RNG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_RNGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_RNGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SDMMC2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_SDMMC2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_SDMMC2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_D2SRAM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_D2SRAM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_D2SRAM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_D2SRAM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_D2SRAM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_D2SRAM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_D2SRAM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_D2SRAM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB2ENR, RCC_AHB2ENR_D2SRAM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_DCMI_CLK_DISABLE()             (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_DCMIEN))\n#if defined(CRYP)\n#define __HAL_RCC_C1_CRYP_CLK_DISABLE()             (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_CRYPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_C1_HASH_CLK_DISABLE()             (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_HASHEN))\n#endif /* HASH */\n#define __HAL_RCC_C1_RNG_CLK_DISABLE()              (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_RNGEN))\n#define __HAL_RCC_C1_SDMMC2_CLK_DISABLE()           (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_SDMMC2EN))\n#define __HAL_RCC_C1_D2SRAM1_CLK_DISABLE()          (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM1EN))\n#define __HAL_RCC_C1_D2SRAM2_CLK_DISABLE()          (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM2EN))\n#define __HAL_RCC_C1_D2SRAM3_CLK_DISABLE()          (RCC_C1->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM3EN))\n\n/** @brief  Enable or disable the AHB4 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_GPIOA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOB_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOBEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOBEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOD_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIODEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIODEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOE_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOEEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOEEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOF_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOFEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOFEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOH_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOHEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOHEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOJ_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOJEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOJEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_GPIOK_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOKEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_GPIOKEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_CRC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_CRCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_CRCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_BDMA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_BDMAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_BDMAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_ADC3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_ADC3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_ADC3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_HSEM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_HSEMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_HSEMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_BKPRAM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_BKPRAMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->AHB4ENR, RCC_AHB4ENR_BKPRAMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C1_GPIOA_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOAEN)\n#define __HAL_RCC_C1_GPIOB_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOBEN)\n#define __HAL_RCC_C1_GPIOC_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOCEN)\n#define __HAL_RCC_C1_GPIOD_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIODEN)\n#define __HAL_RCC_C1_GPIOE_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOEEN)\n#define __HAL_RCC_C1_GPIOF_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOFEN)\n#define __HAL_RCC_C1_GPIOG_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOGEN)\n#define __HAL_RCC_C1_GPIOH_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOHEN)\n#define __HAL_RCC_C1_GPIOI_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOIEN)\n#define __HAL_RCC_C1_GPIOJ_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOJEN)\n#define __HAL_RCC_C1_GPIOK_CLK_DISABLE()           (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOKEN)\n#define __HAL_RCC_C1_CRC_CLK_DISABLE()             (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_CRCEN)\n#define __HAL_RCC_C1_BDMA_CLK_DISABLE()            (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_BDMAEN)\n#define __HAL_RCC_C1_ADC3_CLK_DISABLE()            (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_ADC3EN)\n#define __HAL_RCC_C1_HSEM_CLK_DISABLE()            (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_HSEMEN)\n#define __HAL_RCC_C1_BKPRAM_CLK_DISABLE()          (RCC_C1->AHB4ENR) &= ~ (RCC_AHB4ENR_BKPRAMEN)\n\n\n/** @brief  Enable or disable the APB3 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_LTDC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB3ENR, RCC_APB3ENR_LTDCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB3ENR, RCC_APB3ENR_LTDCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_DSI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB3ENR, RCC_APB3ENR_DSIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB3ENR, RCC_APB3ENR_DSIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_WWDG1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB3ENR, RCC_APB3ENR_WWDG1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB3ENR, RCC_APB3ENR_WWDG1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_LTDC_CLK_DISABLE()           (RCC_C1->APB3ENR) &= ~ (RCC_APB3ENR_LTDCEN)\n#define __HAL_RCC_C1_DSI_CLK_DISABLE()            (RCC_C1->APB3ENR) &= ~ (RCC_APB3ENR_DSIEN)\n#define __HAL_RCC_C1_WWDG1_CLK_DISABLE()          (RCC_C1->APB3ENR) &= ~ (RCC_APB3ENR_WWDG1EN)\n\n/** @brief  Enable or disable the APB1 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_TIM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM7_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM7EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM7EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM13_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM13EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM13EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM14_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM14EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_TIM14EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_LPTIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_LPTIM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_LPTIM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_WWDG2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_WWDG2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_WWDG2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SPI2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_SPI2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_SPI2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SPI3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_SPI3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_SPI3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SPDIFRX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_SPDIFRXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_SPDIFRXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_USART2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_USART2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_USART2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_USART3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_USART3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_USART3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_UART4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_UART5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_I2C1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_I2C1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_I2C1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_I2C2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_I2C2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_I2C2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_I2C3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_I2C3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_I2C3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_CEC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_CECEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_CECEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_DAC12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_DAC12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_DAC12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_UART7_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART7EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART7EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_UART8_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART8EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1LENR, RCC_APB1LENR_UART8EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_CRS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_CRSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_CRSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SWPMI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_SWPMIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_SWPMIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_OPAMP_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_OPAMPEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_OPAMPEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_MDIOS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_MDIOSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_MDIOSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_FDCAN_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_FDCANEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB1HENR, RCC_APB1HENR_FDCANEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C1_TIM2_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM2EN)\n#define __HAL_RCC_C1_TIM3_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM3EN)\n#define __HAL_RCC_C1_TIM4_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM4EN)\n#define __HAL_RCC_C1_TIM5_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM5EN)\n#define __HAL_RCC_C1_TIM6_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM6EN)\n#define __HAL_RCC_C1_TIM7_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM7EN)\n#define __HAL_RCC_C1_TIM12_CLK_DISABLE()          (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM12EN)\n#define __HAL_RCC_C1_TIM13_CLK_DISABLE()          (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM13EN)\n#define __HAL_RCC_C1_TIM14_CLK_DISABLE()          (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_TIM14EN)\n#define __HAL_RCC_C1_LPTIM1_CLK_DISABLE()         (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_LPTIM1EN)\n#define __HAL_RCC_C1_WWDG2_CLK_DISABLE()          (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_WWDG2EN)\n#define __HAL_RCC_C1_SPI2_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_SPI2EN)\n#define __HAL_RCC_C1_SPI3_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_SPI3EN)\n#define __HAL_RCC_C1_SPDIFRX_CLK_DISABLE()        (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_SPDIFRXEN)\n#define __HAL_RCC_C1_USART2_CLK_DISABLE()         (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_USART2EN)\n#define __HAL_RCC_C1_USART3_CLK_DISABLE()         (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_USART3EN)\n#define __HAL_RCC_C1_UART4_CLK_DISABLE()          (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_UART4EN)\n#define __HAL_RCC_C1_UART5_CLK_DISABLE()          (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_UART5EN)\n#define __HAL_RCC_C1_I2C1_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_I2C1EN)\n#define __HAL_RCC_C1_I2C2_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_I2C2EN)\n#define __HAL_RCC_C1_I2C3_CLK_DISABLE()           (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_I2C3EN)\n#define __HAL_RCC_C1_CEC_CLK_DISABLE()            (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_CECEN)\n#define __HAL_RCC_C1_DAC12_CLK_DISABLE()          (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_DAC12EN)\n#define __HAL_RCC_C1_UART7_CLK_DISABLE()         (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_UART7EN)\n#define __HAL_RCC_C1_UART8_CLK_DISABLE()         (RCC_C1->APB1LENR) &= ~ (RCC_APB1LENR_UART8EN)\n#define __HAL_RCC_C1_CRS_CLK_DISABLE()            (RCC_C1->APB1HENR) &= ~ (RCC_APB1HENR_CRSEN)\n#define __HAL_RCC_C1_SWPMI_CLK_DISABLE()          (RCC_C1->APB1HENR) &= ~ (RCC_APB1HENR_SWPMIEN)\n#define __HAL_RCC_C1_OPAMP_CLK_DISABLE()          (RCC_C1->APB1HENR) &= ~ (RCC_APB1HENR_OPAMPEN)\n#define __HAL_RCC_C1_MDIOS_CLK_DISABLE()          (RCC_C1->APB1HENR) &= ~ (RCC_APB1HENR_MDIOSEN)\n#define __HAL_RCC_C1_FDCAN_CLK_DISABLE()          (RCC_C1->APB1HENR) &= ~ (RCC_APB1HENR_FDCANEN)\n\n/** @brief  Enable or disable the APB2 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_TIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM8_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM8EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM8EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_USART1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_USART1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_USART1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_USART6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_USART6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_USART6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SPI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SPI1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SPI1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SPI4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SPI4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SPI4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM15_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM15EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM15EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM16_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM16EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM16EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM17_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM17EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_TIM17EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SPI5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SPI5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SPI5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SAI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SAI1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SAI1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SAI2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SAI2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SAI2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SAI3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SAI3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_SAI3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_DFSDM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_HRTIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_HRTIMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB2ENR, RCC_APB2ENR_HRTIMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_TIM1_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_TIM1EN)\n#define __HAL_RCC_C1_TIM8_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_TIM8EN)\n#define __HAL_RCC_C1_USART1_CLK_DISABLE()         (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_USART1EN)\n#define __HAL_RCC_C1_USART6_CLK_DISABLE()         (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_USART6EN)\n#define __HAL_RCC_C1_SPI1_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_SPI1EN)\n#define __HAL_RCC_C1_SPI4_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_SPI4EN)\n#define __HAL_RCC_C1_TIM15_CLK_DISABLE()          (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_TIM15EN)\n#define __HAL_RCC_C1_TIM16_CLK_DISABLE()          (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_TIM16EN)\n#define __HAL_RCC_C1_TIM17_CLK_DISABLE()          (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_TIM17EN)\n#define __HAL_RCC_C1_SPI5_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_SPI5EN)\n#define __HAL_RCC_C1_SAI1_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_SAI1EN)\n#define __HAL_RCC_C1_SAI2_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_SAI2EN)\n#define __HAL_RCC_C1_SAI3_CLK_DISABLE()           (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_SAI3EN)\n#define __HAL_RCC_C1_DFSDM1_CLK_DISABLE()         (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_DFSDM1EN)\n#define __HAL_RCC_C1_HRTIM1_CLK_DISABLE()         (RCC_C1->APB2ENR) &= ~ (RCC_APB2ENR_HRTIMEN)\n\n/** @brief  Enable or disable the APB4 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C1_SYSCFG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_SYSCFGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_SYSCFGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_LPUART1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPUART1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPUART1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SPI6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_SPI6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_SPI6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_I2C4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_I2C4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_I2C4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_LPTIM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_LPTIM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_LPTIM4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_LPTIM5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_LPTIM5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_COMP12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_COMP12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_COMP12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C1_VREF_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_VREFEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_VREFEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_RTC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_RTCAPBEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_RTCAPBEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C1_SAI4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_SAI4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C1->APB4ENR, RCC_APB4ENR_SAI4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C1_SYSCFG_CLK_DISABLE()           (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_SYSCFGEN)\n#define __HAL_RCC_C1_LPUART1_CLK_DISABLE()          (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_LPUART1EN)\n#define __HAL_RCC_C1_SPI6_CLK_DISABLE()             (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_SPI6EN)\n#define __HAL_RCC_C1_I2C4_CLK_DISABLE()             (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_I2C4EN)\n#define __HAL_RCC_C1_LPTIM2_CLK_DISABLE()           (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM2EN)\n#define __HAL_RCC_C1_LPTIM3_CLK_DISABLE()           (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM3EN)\n#define __HAL_RCC_C1_LPTIM4_CLK_DISABLE()           (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM4EN)\n#define __HAL_RCC_C1_LPTIM5_CLK_DISABLE()           (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM5EN)\n#define __HAL_RCC_C1_COMP12_CLK_DISABLE()           (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_COMP12EN)\n#define __HAL_RCC_C1_VREF_CLK_DISABLE()             (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_VREFEN)\n#define __HAL_RCC_C1_RTC_CLK_DISABLE()              (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_RTCAPBEN)\n#define __HAL_RCC_C1_SAI4_CLK_DISABLE()             (RCC_C1->APB4ENR) &= ~ (RCC_APB4ENR_SAI4EN)\n\n/* Exported macros for RCC_C2 -------------------------------------------------*/\n\n/** @brief  Enable or disable the AHB3 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n\n#define __HAL_RCC_C2_MDMA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_MDMAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_MDMAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_DMA2D_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_DMA2DEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_DMA2DEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_JPGDECEN_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_JPGDECEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_JPGDECEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_FLASH_C2_ALLOCATE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_FLASHEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_FLASHEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_DTCM1_C2_ALLOCATE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_DTCM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_DTCM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_DTCM2_C2_ALLOCATE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_DTCM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_DTCM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_ITCM_C2_ALLOCATE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_ITCMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_ITCMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_D1SRAM1_C2_ALLOCATE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_AXISRAMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_AXISRAMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_FMC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_FMCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_FMCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_QSPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SDMMC1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_SDMMC1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB3ENR, RCC_AHB3ENR_SDMMC1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n\n\n#define __HAL_RCC_C2_MDMA_CLK_DISABLE()            (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_MDMAEN))\n#define __HAL_RCC_C2_DMA2D_CLK_DISABLE()           (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_DMA2DEN))\n#define __HAL_RCC_C2_JPGDECEN_CLK_DISABLE()        (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_JPGDECEN))\n#define __HAL_RCC_C2_FMC_CLK_DISABLE()             (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_FMCEN))\n#define __HAL_RCC_C2_QSPI_CLK_DISABLE()            (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_QSPIEN))\n#define __HAL_RCC_C2_SDMMC1_CLK_DISABLE()          (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_SDMMC1EN))\n#define __HAL_RCC_FLASH_C2_DEALLOCATE()            (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_FLASHEN))\n#define __HAL_RCC_DTCM1_C2_DEALLOCATE()            (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_DTCM1EN))\n#define __HAL_RCC_DTCM2_C2_DEALLOCATE()            (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_DTCM2EN))\n#define __HAL_RCC_ITCM_C2_DEALLOCATE()             (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_ITCMEN))\n#define __HAL_RCC_D1SRAM1_C2_DEALLOCATE()          (RCC_C2->AHB3ENR &= ~ (RCC_AHB3ENR_AXISRAMEN))\n\n/** @brief  Enable or disable the AHB1 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C2_DMA1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_DMA2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_ADC12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ADC12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ADC12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_ART_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ARTEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ARTEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_ETH1MAC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ETH1MACEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ETH1MACEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_ETH1TX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ETH1TXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ETH1TXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_ETH1RX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ETH1RXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_ETH1RXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USB1_OTG_HS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB1OTGHSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB1OTGHSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USB1_OTG_HS_ULPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB1OTGHSULPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB1OTGHSULPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USB2_OTG_FS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB2OTGHSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB2OTGHSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USB2_OTG_FS_ULPI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB2OTGHSULPIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB1ENR, RCC_AHB1ENR_USB2OTGHSULPIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C2_DMA1_CLK_DISABLE()             (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_DMA1EN))\n#define __HAL_RCC_C2_DMA2_CLK_DISABLE()             (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_DMA2EN))\n#define __HAL_RCC_C2_ADC12_CLK_DISABLE()            (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_ADC12EN))\n#define __HAL_RCC_C2_ART_CLK_DISABLE()              (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_ARTEN))\n#define __HAL_RCC_C2_ETH1MAC_CLK_DISABLE()          (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1MACEN))\n#define __HAL_RCC_C2_ETH1TX_CLK_DISABLE()           (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1TXEN))\n#define __HAL_RCC_C2_ETH1RX_CLK_DISABLE()           (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_ETH1RXEN))\n#define __HAL_RCC_C2_USB1_OTG_HS_CLK_DISABLE()      (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_USB1OTGHSEN))\n#define __HAL_RCC_C2_USB1_OTG_HS_ULPI_CLK_DISABLE() (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_USB1OTGHSULPIEN))\n#define __HAL_RCC_C2_USB2_OTG_FS_CLK_DISABLE()      (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_USB2OTGHSEN))\n#define __HAL_RCC_C2_USB2_OTG_FS_ULPI_CLK_DISABLE() (RCC_C2->AHB1ENR &= ~ (RCC_AHB1ENR_USB2OTGHSULPIEN))\n\n/** @brief  Enable or disable the AHB2 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C2_DCMI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#if defined(CRYP)\n#define __HAL_RCC_C2_CRYP_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* CRYP */\n\n#if defined(HASH)\n#define __HAL_RCC_C2_HASH_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_HASHEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_HASHEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n#endif /* HASH */\n\n#define __HAL_RCC_C2_RNG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_RNGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_RNGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SDMMC2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_SDMMC2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_SDMMC2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_D2SRAM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_D2SRAM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_D2SRAM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_D2SRAM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_D2SRAM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_D2SRAM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_D2SRAM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_D2SRAM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB2ENR, RCC_AHB2ENR_D2SRAM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_DCMI_CLK_DISABLE()             (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_DCMIEN))\n#if defined(CRYP)\n#define __HAL_RCC_C2_CRYP_CLK_DISABLE()             (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_CRYPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_C2_HASH_CLK_DISABLE()             (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_HASHEN))\n#endif /* HASH */\n#define __HAL_RCC_C2_RNG_CLK_DISABLE()              (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_RNGEN))\n#define __HAL_RCC_C2_SDMMC2_CLK_DISABLE()           (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_SDMMC2EN))\n#define __HAL_RCC_C2_D2SRAM1_CLK_DISABLE()          (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM1EN))\n#define __HAL_RCC_C2_D2SRAM2_CLK_DISABLE()          (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM2EN))\n#define __HAL_RCC_C2_D2SRAM3_CLK_DISABLE()          (RCC_C2->AHB2ENR &= ~ (RCC_AHB2ENR_D2SRAM3EN))\n\n/** @brief  Enable or disable the AHB4 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C2_GPIOA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOB_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOBEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOBEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOD_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIODEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIODEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOE_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOEEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOEEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOF_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOFEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOFEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOH_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOHEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOHEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOJ_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOJEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOJEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_GPIOK_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOKEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_GPIOKEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_CRC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_CRCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_CRCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_BDMA_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_BDMAEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_BDMAEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_ADC3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_ADC3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_ADC3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_HSEM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_HSEMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_HSEMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_BKPRAM_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_BKPRAMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->AHB4ENR, RCC_AHB4ENR_BKPRAMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C2_GPIOA_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOAEN)\n#define __HAL_RCC_C2_GPIOB_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOBEN)\n#define __HAL_RCC_C2_GPIOC_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOCEN)\n#define __HAL_RCC_C2_GPIOD_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIODEN)\n#define __HAL_RCC_C2_GPIOE_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOEEN)\n#define __HAL_RCC_C2_GPIOF_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOFEN)\n#define __HAL_RCC_C2_GPIOG_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOGEN)\n#define __HAL_RCC_C2_GPIOH_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOHEN)\n#define __HAL_RCC_C2_GPIOI_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOIEN)\n#define __HAL_RCC_C2_GPIOJ_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOJEN)\n#define __HAL_RCC_C2_GPIOK_CLK_DISABLE()           (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_GPIOKEN)\n#define __HAL_RCC_C2_CRC_CLK_DISABLE()             (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_CRCEN)\n#define __HAL_RCC_C2_BDMA_CLK_DISABLE()            (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_BDMAEN)\n#define __HAL_RCC_C2_ADC3_CLK_DISABLE()            (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_ADC3EN)\n#define __HAL_RCC_C2_HSEM_CLK_DISABLE()            (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_HSEMEN)\n#define __HAL_RCC_C2_BKPRAM_CLK_DISABLE()          (RCC_C2->AHB4ENR) &= ~ (RCC_AHB4ENR_BKPRAMEN)\n\n\n/** @brief  Enable or disable the APB3 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C2_LTDC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB3ENR, RCC_APB3ENR_LTDCEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB3ENR, RCC_APB3ENR_LTDCEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_DSI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB3ENR, RCC_APB3ENR_DSIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB3ENR, RCC_APB3ENR_DSIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_WWDG1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB3ENR, RCC_APB3ENR_WWDG1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB3ENR, RCC_APB3ENR_WWDG1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_LTDC_CLK_DISABLE()           (RCC_C2->APB3ENR) &= ~ (RCC_APB3ENR_LTDCEN)\n#define __HAL_RCC_C2_DSI_CLK_DISABLE()            (RCC_C2->APB3ENR) &= ~ (RCC_APB3ENR_DSIEN)\n#define __HAL_RCC_C2_WWDG1_CLK_DISABLE()          (RCC_C2->APB3ENR) &= ~ (RCC_APB3ENR_WWDG1EN)\n\n/** @brief  Enable or disable the APB1 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C2_TIM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM7_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM7EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM7EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM13_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM13EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM13EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM14_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM14EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_TIM14EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_LPTIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_LPTIM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_LPTIM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_WWDG2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_WWDG2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_WWDG2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SPI2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_SPI2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_SPI2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SPI3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_SPI3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_SPI3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SPDIFRX_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_SPDIFRXEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_SPDIFRXEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USART2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_USART2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_USART2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USART3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_USART3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_USART3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_UART4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_UART5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_I2C1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_I2C1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_I2C1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_I2C2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_I2C2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_I2C2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_I2C3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_I2C3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_I2C3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_CEC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_CECEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_CECEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_DAC12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_DAC12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_DAC12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_UART7_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART7EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART7EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_UART8_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART8EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1LENR, RCC_APB1LENR_UART8EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_CRS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_CRSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_CRSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SWPMI_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_SWPMIEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_SWPMIEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_OPAMP_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_OPAMPEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_OPAMPEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_MDIOS_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_MDIOSEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_MDIOSEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_FDCAN_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_FDCANEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB1HENR, RCC_APB1HENR_FDCANEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n#define __HAL_RCC_C2_TIM2_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM2EN)\n#define __HAL_RCC_C2_TIM3_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM3EN)\n#define __HAL_RCC_C2_TIM4_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM4EN)\n#define __HAL_RCC_C2_TIM5_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM5EN)\n#define __HAL_RCC_C2_TIM6_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM6EN)\n#define __HAL_RCC_C2_TIM7_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM7EN)\n#define __HAL_RCC_C2_TIM12_CLK_DISABLE()          (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM12EN)\n#define __HAL_RCC_C2_TIM13_CLK_DISABLE()          (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM13EN)\n#define __HAL_RCC_C2_TIM14_CLK_DISABLE()          (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_TIM14EN)\n#define __HAL_RCC_C2_LPTIM1_CLK_DISABLE()         (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_LPTIM1EN)\n#define __HAL_RCC_C2_WWDG2_CLK_DISABLE()          (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_WWDG2EN)\n#define __HAL_RCC_C2_SPI2_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_SPI2EN)\n#define __HAL_RCC_C2_SPI3_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_SPI3EN)\n#define __HAL_RCC_C2_SPDIFRX_CLK_DISABLE()        (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_SPDIFRXEN)\n#define __HAL_RCC_C2_USART2_CLK_DISABLE()         (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_USART2EN)\n#define __HAL_RCC_C2_USART3_CLK_DISABLE()         (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_USART3EN)\n#define __HAL_RCC_C2_UART4_CLK_DISABLE()          (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_UART4EN)\n#define __HAL_RCC_C2_UART5_CLK_DISABLE()          (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_UART5EN)\n#define __HAL_RCC_C2_I2C1_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_I2C1EN)\n#define __HAL_RCC_C2_I2C2_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_I2C2EN)\n#define __HAL_RCC_C2_I2C3_CLK_DISABLE()           (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_I2C3EN)\n#define __HAL_RCC_C2_CEC_CLK_DISABLE()            (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_CECEN)\n#define __HAL_RCC_C2_DAC12_CLK_DISABLE()          (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_DAC12EN)\n#define __HAL_RCC_C2_UART7_CLK_DISABLE()         (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_UART7EN)\n#define __HAL_RCC_C2_UART8_CLK_DISABLE()         (RCC_C2->APB1LENR) &= ~ (RCC_APB1LENR_UART8EN)\n#define __HAL_RCC_C2_CRS_CLK_DISABLE()            (RCC_C2->APB1HENR) &= ~ (RCC_APB1HENR_CRSEN)\n#define __HAL_RCC_C2_SWPMI_CLK_DISABLE()          (RCC_C2->APB1HENR) &= ~ (RCC_APB1HENR_SWPMIEN)\n#define __HAL_RCC_C2_OPAMP_CLK_DISABLE()          (RCC_C2->APB1HENR) &= ~ (RCC_APB1HENR_OPAMPEN)\n#define __HAL_RCC_C2_MDIOS_CLK_DISABLE()          (RCC_C2->APB1HENR) &= ~ (RCC_APB1HENR_MDIOSEN)\n#define __HAL_RCC_C2_FDCAN_CLK_DISABLE()          (RCC_C2->APB1HENR) &= ~ (RCC_APB1HENR_FDCANEN)\n\n/** @brief  Enable or disable the APB2 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C2_TIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM8_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM8EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM8EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USART1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_USART1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_USART1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_USART6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_USART6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_USART6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SPI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SPI1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SPI1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SPI4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SPI4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SPI4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM15_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM15EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM15EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM16_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM16EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM16EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM17_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM17EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_TIM17EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SPI5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SPI5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SPI5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SAI1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SAI1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SAI1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SAI2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SAI2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SAI2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SAI3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SAI3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_SAI3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_DFSDM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_HRTIM1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_HRTIMEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB2ENR, RCC_APB2ENR_HRTIMEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_TIM1_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_TIM1EN)\n#define __HAL_RCC_C2_TIM8_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_TIM8EN)\n#define __HAL_RCC_C2_USART1_CLK_DISABLE()         (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_USART1EN)\n#define __HAL_RCC_C2_USART6_CLK_DISABLE()         (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_USART6EN)\n#define __HAL_RCC_C2_SPI1_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_SPI1EN)\n#define __HAL_RCC_C2_SPI4_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_SPI4EN)\n#define __HAL_RCC_C2_TIM15_CLK_DISABLE()          (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_TIM15EN)\n#define __HAL_RCC_C2_TIM16_CLK_DISABLE()          (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_TIM16EN)\n#define __HAL_RCC_C2_TIM17_CLK_DISABLE()          (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_TIM17EN)\n#define __HAL_RCC_C2_SPI5_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_SPI5EN)\n#define __HAL_RCC_C2_SAI1_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_SAI1EN)\n#define __HAL_RCC_C2_SAI2_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_SAI2EN)\n#define __HAL_RCC_C2_SAI3_CLK_DISABLE()           (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_SAI3EN)\n#define __HAL_RCC_C2_DFSDM1_CLK_DISABLE()         (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_DFSDM1EN)\n#define __HAL_RCC_C2_HRTIM1_CLK_DISABLE()         (RCC_C2->APB2ENR) &= ~ (RCC_APB2ENR_HRTIMEN)\n\n/** @brief  Enable or disable the APB4 peripheral clock.\n  * @note   After reset, the peripheral clock (used for registers read/write access)\n  *         is disabled and the application software has to enable this clock before\n  *         using it.\n  */\n\n#define __HAL_RCC_C2_SYSCFG_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_SYSCFGEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_SYSCFGEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_LPUART1_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPUART1EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPUART1EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SPI6_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_SPI6EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_SPI6EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_I2C4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_I2C4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_I2C4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_LPTIM2_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM2EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM2EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_LPTIM3_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM3EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM3EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_LPTIM4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_LPTIM5_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM5EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_LPTIM5EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_COMP12_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_COMP12EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_COMP12EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_VREF_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_VREFEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_VREFEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_RTC_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_RTCAPBEN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_RTCAPBEN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n#define __HAL_RCC_C2_SAI4_CLK_ENABLE()   do { \\\n                                        __IO uint32_t tmpreg; \\\n                                        SET_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_SAI4EN);\\\n                                        /* Delay after an RCC peripheral clock enabling */ \\\n                                        tmpreg = READ_BIT(RCC_C2->APB4ENR, RCC_APB4ENR_SAI4EN);\\\n                                        UNUSED(tmpreg); \\\n                                       } while(0)\n\n\n\n#define __HAL_RCC_C2_SYSCFG_CLK_DISABLE()           (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_SYSCFGEN)\n#define __HAL_RCC_C2_LPUART1_CLK_DISABLE()          (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_LPUART1EN)\n#define __HAL_RCC_C2_SPI6_CLK_DISABLE()             (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_SPI6EN)\n#define __HAL_RCC_C2_I2C4_CLK_DISABLE()             (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_I2C4EN)\n#define __HAL_RCC_C2_LPTIM2_CLK_DISABLE()           (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM2EN)\n#define __HAL_RCC_C2_LPTIM3_CLK_DISABLE()           (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM3EN)\n#define __HAL_RCC_C2_LPTIM4_CLK_DISABLE()           (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM4EN)\n#define __HAL_RCC_C2_LPTIM5_CLK_DISABLE()           (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_LPTIM5EN)\n#define __HAL_RCC_C2_COMP12_CLK_DISABLE()           (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_COMP12EN)\n#define __HAL_RCC_C2_VREF_CLK_DISABLE()             (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_VREFEN)\n#define __HAL_RCC_C2_RTC_CLK_DISABLE()              (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_RTCAPBEN)\n#define __HAL_RCC_C2_SAI4_CLK_DISABLE()             (RCC_C2->APB4ENR) &= ~ (RCC_APB4ENR_SAI4EN)\n\n#endif /*DUAL_CORE*/\n\n/** @brief  Enable or disable the AHB3 peripheral reset.\n  */\n\n#if (STM32H7_DEV_ID == 0x450UL)\n#define __HAL_RCC_AHB3_FORCE_RESET()          (RCC->AHB3RSTR = 0x00015031U)  /* Resets MDMA, DMA2D, JPEG, FMC, QSPI and SDMMC1 */\n#elif  (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_AHB3_FORCE_RESET()          (RCC->AHB3RSTR = 0x01E95031U)  /* Resets MDMA, DMA2D, JPEG, FMC, OSPI1, SDMMC1, OSPI2, IOMNGR, OTFD1, OTFD2 and GFXMMU */\n#else\n#define __HAL_RCC_AHB3_FORCE_RESET()          (RCC->AHB3RSTR = 0x00E95011U)  /* Resets MDMA, DMA2D, FMC, OSPI1, SDMMC1, OSPI2, IOMNGR, OTFD1, OTFD2 */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#define __HAL_RCC_MDMA_FORCE_RESET()          (RCC->AHB3RSTR |= (RCC_AHB3RSTR_MDMARST))\n#define __HAL_RCC_DMA2D_FORCE_RESET()         (RCC->AHB3RSTR |= (RCC_AHB3RSTR_DMA2DRST))\n#if defined(JPEG)\n#define __HAL_RCC_JPGDECRST_FORCE_RESET()     (RCC->AHB3RSTR |= (RCC_AHB3RSTR_JPGDECRST))\n#endif /* JPEG */\n#define __HAL_RCC_FMC_FORCE_RESET()           (RCC->AHB3RSTR |= (RCC_AHB3RSTR_FMCRST))\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_FORCE_RESET()          (RCC->AHB3RSTR |= (RCC_AHB3RSTR_QSPIRST))\n#endif /*QUADSPI*/\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_FORCE_RESET()         (RCC->AHB3RSTR |= (RCC_AHB3RSTR_OSPI1RST))\n#endif /*OCTOSPI1*/\n#define __HAL_RCC_SDMMC1_FORCE_RESET()        (RCC->AHB3RSTR |= (RCC_AHB3RSTR_SDMMC1RST))\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_FORCE_RESET()         (RCC->AHB3RSTR |= (RCC_AHB3RSTR_OSPI2RST))\n#endif /*OCTOSPI2*/\n#if defined(OCTOSPIM)\n#define __HAL_RCC_IOMNGR_FORCE_RESET()      (RCC->AHB3RSTR |= (RCC_AHB3RSTR_IOMNGRRST))\n#endif /*OCTOSPIM*/\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_FORCE_RESET()         (RCC->AHB3RSTR |= (RCC_AHB3RSTR_OTFDEC1RST))\n#endif /*OTFDEC1*/\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_FORCE_RESET()         (RCC->AHB3RSTR |= (RCC_AHB3RSTR_OTFDEC2RST))\n#endif /*OTFDEC2*/\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_FORCE_RESET()        (RCC->AHB3RSTR |= (RCC_AHB3RSTR_GFXMMURST))\n#endif /*GFXMMU*/\n\n#define __HAL_RCC_AHB3_RELEASE_RESET()        (RCC->AHB3RSTR = 0x00)\n#define __HAL_RCC_MDMA_RELEASE_RESET()        (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_MDMARST))\n#define __HAL_RCC_DMA2D_RELEASE_RESET()       (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_DMA2DRST))\n#if defined(JPEG)\n#define __HAL_RCC_JPGDECRST_RELEASE_RESET()   (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_JPGDECRST))\n#endif /* JPEG */\n#define __HAL_RCC_FMC_RELEASE_RESET()         (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_FMCRST))\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_RELEASE_RESET()        (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_QSPIRST))\n#endif /*QUADSPI*/\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_RELEASE_RESET()       (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_OSPI1RST))\n#endif /*OCTOSPI1*/\n#define __HAL_RCC_SDMMC1_RELEASE_RESET()      (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_SDMMC1RST))\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_RELEASE_RESET()       (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_OSPI2RST))\n#endif /*OCTOSPI2*/\n#if defined(OCTOSPIM)\n#define __HAL_RCC_IOMNGR_RELEASE_RESET()      (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_IOMNGRRST))\n#endif /*OCTOSPIM*/\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_RELEASE_RESET()       (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_OTFDEC1RST))\n#endif /*OTFDEC1*/\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_RELEASE_RESET()       (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_OTFDEC2RST))\n#endif /*OTFDEC2*/\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_RELEASE_RESET()      (RCC->AHB3RSTR &= ~ (RCC_AHB3RSTR_GFXMMURST))\n#endif /*GFXMMU*/\n\n\n\n/** @brief  Force or release the AHB1 peripheral reset.\n  */\n#if (STM32H7_DEV_ID == 0x450UL)\n#define __HAL_RCC_AHB1_FORCE_RESET()             (RCC->AHB1RSTR = 0x0A00C023U)  /* Resets DMA1, DMA2, ADC12, ART, ETHMAC, USB1OTG and USB2OTG */\n#elif  (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_AHB1_FORCE_RESET()             (RCC->AHB1RSTR = 0x02000223U)  /* Resets DMA1, DMA2, ADC12, CRC and USB1OTG */\n#else\n#define __HAL_RCC_AHB1_FORCE_RESET()             (RCC->AHB1RSTR = 0x02008023U)  /* Resets DMA1, DMA2, ADC12, ETHMAC and USB1OTG */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#define __HAL_RCC_DMA1_FORCE_RESET()             (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA1RST))\n#define __HAL_RCC_DMA2_FORCE_RESET()             (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA2RST))\n#define __HAL_RCC_ADC12_FORCE_RESET()            (RCC->AHB1RSTR |= (RCC_AHB1RSTR_ADC12RST))\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_FORCE_RESET()              (RCC->AHB1RSTR |= (RCC_AHB1RSTR_ARTRST))\n#endif /*DUAL_CORE*/\n#if defined(RCC_AHB1RSTR_CRCRST)\n#define __HAL_RCC_CRC_FORCE_RESET()            (RCC->AHB1RSTR |= (RCC_AHB1RSTR_CRCRST))\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_FORCE_RESET()          (RCC->AHB1RSTR |= (RCC_AHB1RSTR_ETH1MACRST))\n#endif /*ETH*/\n#define __HAL_RCC_USB1_OTG_HS_FORCE_RESET()      (RCC->AHB1RSTR |= (RCC_AHB1RSTR_USB1OTGHSRST))\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_FORCE_RESET()      (RCC->AHB1RSTR |= (RCC_AHB1RSTR_USB2OTGHSRST))\n#endif /*USB2_OTG_FS*/\n\n#define __HAL_RCC_AHB1_RELEASE_RESET()           (RCC->AHB1RSTR = 0x00U)\n#define __HAL_RCC_DMA1_RELEASE_RESET()             (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_DMA1RST))\n#define __HAL_RCC_DMA2_RELEASE_RESET()             (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_DMA2RST))\n#define __HAL_RCC_ADC12_RELEASE_RESET()            (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_ADC12RST))\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_RELEASE_RESET()              (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_ARTRST))\n#endif /*DUAL_CORE*/\n#if defined(RCC_AHB1RSTR_CRCRST)\n#define __HAL_RCC_CRC_RELEASE_RESET()                (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_CRCRST))\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_RELEASE_RESET()          (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_ETH1MACRST))\n#endif /*ETH*/\n#define __HAL_RCC_USB1_OTG_HS_RELEASE_RESET()      (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_USB1OTGHSRST))\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_RELEASE_RESET()      (RCC->AHB1RSTR &= ~ (RCC_AHB1RSTR_USB2OTGHSRST))\n#endif /*USB2_OTG_FS*/\n\n/** @brief  Force or release the AHB2 peripheral reset.\n  */\n#if (STM32H7_DEV_ID == 0x450UL)\n#define __HAL_RCC_AHB2_FORCE_RESET()             (RCC->AHB2RSTR = 0x00000271U)  /* Resets DCMI, CRYPT, HASH, RNG and SDMMC2 */\n#elif  (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_AHB2_FORCE_RESET()             (RCC->AHB2RSTR = 0x00000A75U)  /* Resets DCMI_PSSI, HSEM, CRYPT, HASH, RNG, SDMMC2 and BDMA1 */\n#else\n#define __HAL_RCC_AHB2_FORCE_RESET()             (RCC->AHB2RSTR = 0x00030271U)  /* Resets DCMI_PSSI, CRYPT, HASH, RNG, SDMMC2, FMAC and CORDIC */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_FORCE_RESET()        (RCC->AHB2RSTR |= (RCC_AHB2RSTR_DCMI_PSSIRST))\n#define __HAL_RCC_DCMI_FORCE_RESET()             __HAL_RCC_DCMI_PSSI_FORCE_RESET()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_FORCE_RESET()             (RCC->AHB2RSTR |= (RCC_AHB2RSTR_DCMIRST))\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_FORCE_RESET()             (RCC->AHB2RSTR |= (RCC_AHB2RSTR_CRYPRST))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_FORCE_RESET()             (RCC->AHB2RSTR |= (RCC_AHB2RSTR_HASHRST))\n#endif /* HASH */\n#define __HAL_RCC_RNG_FORCE_RESET()              (RCC->AHB2RSTR |= (RCC_AHB2RSTR_RNGRST))\n#define __HAL_RCC_SDMMC2_FORCE_RESET()           (RCC->AHB2RSTR |= (RCC_AHB2RSTR_SDMMC2RST))\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_FORCE_RESET()             (RCC->AHB2RSTR |= (RCC_AHB2RSTR_FMACRST))\n#endif /*FMAC*/\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_FORCE_RESET()           (RCC->AHB2RSTR |= (RCC_AHB2RSTR_CORDICRST))\n#endif /*CORDIC*/\n#if defined(RCC_AHB2RSTR_HSEMRST)\n#define __HAL_RCC_HSEM_FORCE_RESET()             (RCC->AHB2RSTR |= (RCC_AHB2RSTR_HSEMRST))\n#endif\n#if defined(BDMA1)\n#define __HAL_RCC_BDMA1_FORCE_RESET()           (RCC->AHB2RSTR |= (RCC_AHB2RSTR_BDMA1RST))\n#endif /*BDMA1*/\n\n#define __HAL_RCC_AHB2_RELEASE_RESET()           (RCC->AHB2RSTR = 0x00U)\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_RELEASE_RESET()        (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_DCMI_PSSIRST))\n#define __HAL_RCC_DCMI_RELEASE_RESET()             __HAL_RCC_DCMI_PSSI_RELEASE_RESET()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_RELEASE_RESET()             (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_DCMIRST))\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_RELEASE_RESET()             (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_CRYPRST))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_RELEASE_RESET()             (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_HASHRST))\n#endif /* HASH */\n#define __HAL_RCC_RNG_RELEASE_RESET()              (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_RNGRST))\n#define __HAL_RCC_SDMMC2_RELEASE_RESET()           (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_SDMMC2RST))\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_RELEASE_RESET()             (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_FMACRST))\n#endif /*FMAC*/\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_RELEASE_RESET()           (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_CORDICRST))\n#endif /*CORDIC*/\n#if defined(RCC_AHB2RSTR_HSEMRST)\n#define __HAL_RCC_HSEM_RELEASE_RESET()             (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_HSEMRST))\n#endif\n#if defined(BDMA1)\n#define __HAL_RCC_BDMA1_RELEASE_RESET()           (RCC->AHB2RSTR &= ~ (RCC_AHB2RSTR_BDMA1RST))\n#endif /*BDMA1*/\n\n\n/** @brief  Force or release the AHB4 peripheral reset.\n  */\n\n#if (STM32H7_DEV_ID == 0x450UL)\n#define __HAL_RCC_AHB4_FORCE_RESET()            (RCC->AHB4RSTR = 0x032807FFU)  /* Resets GPIOA..GPIOK, CRC, BDMA, ADC3 and HSEM */\n#elif  (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_AHB4_FORCE_RESET()            (RCC->AHB4RSTR = 0x002007FFU)  /* Resets GPIOA..GPIOK and BDMA2 */\n#else\n#define __HAL_RCC_AHB4_FORCE_RESET()            (RCC->AHB4RSTR = 0x032806FFU)  /* Resets GPIOA..GPIOH, GPIOJ, GPIOK, CRC, BDMA, ADC3 and HSEM */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#define __HAL_RCC_GPIOA_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOARST)\n#define __HAL_RCC_GPIOB_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOBRST)\n#define __HAL_RCC_GPIOC_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOCRST)\n#define __HAL_RCC_GPIOD_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIODRST)\n#define __HAL_RCC_GPIOE_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOERST)\n#define __HAL_RCC_GPIOF_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOFRST)\n#define __HAL_RCC_GPIOG_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOGRST)\n#define __HAL_RCC_GPIOH_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOHRST)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOIRST)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOJRST)\n#define __HAL_RCC_GPIOK_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_GPIOKRST)\n#if defined(RCC_AHB4RSTR_CRCRST)\n#define __HAL_RCC_CRC_FORCE_RESET()             (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_CRCRST)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_FORCE_RESET()           (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_BDMA2RST)\n#define __HAL_RCC_BDMA_FORCE_RESET()            __HAL_RCC_BDMA2_FORCE_RESET()         /* for API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_FORCE_RESET()            (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_BDMARST)\n#endif /*BDMA2*/\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_FORCE_RESET()            (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_ADC3RST)\n#endif /*ADC3*/\n#if defined(RCC_AHB4RSTR_HSEMRST)\n#define __HAL_RCC_HSEM_FORCE_RESET()            (RCC->AHB4RSTR) |= (RCC_AHB4RSTR_HSEMRST)\n#endif\n\n#define __HAL_RCC_AHB4_RELEASE_RESET()          (RCC->AHB4RSTR = 0x00U)\n#define __HAL_RCC_GPIOA_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOARST)\n#define __HAL_RCC_GPIOB_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOBRST)\n#define __HAL_RCC_GPIOC_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOCRST)\n#define __HAL_RCC_GPIOD_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIODRST)\n#define __HAL_RCC_GPIOE_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOERST)\n#define __HAL_RCC_GPIOF_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOFRST)\n#define __HAL_RCC_GPIOG_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOGRST)\n#define __HAL_RCC_GPIOH_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOHRST)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOIRST)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOJRST)\n#define __HAL_RCC_GPIOK_RELEASE_RESET()           (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_GPIOKRST)\n#if defined(RCC_AHB4RSTR_CRCRST)\n#define __HAL_RCC_CRC_RELEASE_RESET()             (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_CRCRST)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_RELEASE_RESET()            (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_BDMA2RST)\n#define __HAL_RCC_BDMA_RELEASE_RESET()   __HAL_RCC_BDMA2_RELEASE_RESET()      /* for API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_RELEASE_RESET()            (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_BDMARST)\n#endif /*BDMA2*/\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_RELEASE_RESET()            (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_ADC3RST)\n#endif /*ADC3*/\n#if defined(RCC_AHB4RSTR_HSEMRST)\n#define __HAL_RCC_HSEM_RELEASE_RESET()            (RCC->AHB4RSTR) &= ~ (RCC_AHB4RSTR_HSEMRST)\n#endif\n\n/** @brief  Force or release the APB3 peripheral reset.\n  */\n#if (STM32H7_DEV_ID == 0x450UL)\n#define __HAL_RCC_APB3_FORCE_RESET()           (RCC->APB3RSTR = 0x00000018U) /* Rests LTDC and DSI */\n#else\n#define __HAL_RCC_APB3_FORCE_RESET()           (RCC->APB3RSTR = 0x00000008U) /* Rests LTDC */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_FORCE_RESET()           (RCC->APB3RSTR) |= (RCC_APB3RSTR_LTDCRST)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_FORCE_RESET()            (RCC->APB3RSTR) |= (RCC_APB3RSTR_DSIRST)\n#endif /*DSI*/\n\n#define __HAL_RCC_APB3_RELEASE_RESET()         (RCC->APB3RSTR = 0x00U)\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_RELEASE_RESET()           (RCC->APB3RSTR) &= ~ (RCC_APB3RSTR_LTDCRST)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_RELEASE_RESET()            (RCC->APB3RSTR) &= ~ (RCC_APB3RSTR_DSIRST)\n#endif /*DSI*/\n\n/** @brief  Force or release the APB1 peripheral reset.\n  */\n#if (STM32H7_DEV_ID == 0x450UL) || (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_APB1L_FORCE_RESET()          (RCC->APB1LRSTR = 0xE8FFC3FFU) /* Resets TIM2..TIM7, TIM12..TIM14, LPTIM1, SPI2, SPI3, SPDIFRX, USART2, USART3, UART4, UART5, I2C1..I2C3, CEC, DAC1(2), UART7 and UART8 */\n#else\n#define __HAL_RCC_APB1L_FORCE_RESET()          (RCC->APB1LRSTR = 0xEAFFC3FFU) /* Resets TIM2..TIM7, TIM12..TIM14, LPTIM1, SPI2, SPI3, SPDIFRX, USART2, USART3, UART4, UART5, I2C1..I2C3, I2C5, CEC, DAC12, UART7 and UART8 */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#if (STM32H7_DEV_ID == 0x450UL) || (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_APB1H_FORCE_RESET()          (RCC->APB1HRSTR = 0x00000136U) /* Resets CRS, SWP, OPAMP, MDIOS and FDCAN */\n#else\n#define __HAL_RCC_APB1H_FORCE_RESET()          (RCC->APB1HRSTR = 0x03000136U) /* Resets CRS, SWP, OPAMP, MDIOS, FDCAN, TIM23 and TIM24 */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#define __HAL_RCC_TIM2_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM2RST)\n#define __HAL_RCC_TIM3_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM3RST)\n#define __HAL_RCC_TIM4_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM4RST)\n#define __HAL_RCC_TIM5_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM5RST)\n#define __HAL_RCC_TIM6_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM6RST)\n#define __HAL_RCC_TIM7_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM7RST)\n#define __HAL_RCC_TIM12_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM12RST)\n#define __HAL_RCC_TIM13_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM13RST)\n#define __HAL_RCC_TIM14_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_TIM14RST)\n#define __HAL_RCC_LPTIM1_FORCE_RESET()         (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_LPTIM1RST)\n#define __HAL_RCC_SPI2_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_SPI2RST)\n#define __HAL_RCC_SPI3_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_SPI3RST)\n#define __HAL_RCC_SPDIFRX_FORCE_RESET()        (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_SPDIFRXRST)\n#define __HAL_RCC_USART2_FORCE_RESET()         (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_USART2RST)\n#define __HAL_RCC_USART3_FORCE_RESET()         (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_USART3RST)\n#define __HAL_RCC_UART4_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_UART4RST)\n#define __HAL_RCC_UART5_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_UART5RST)\n#define __HAL_RCC_I2C1_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_I2C1RST)\n#define __HAL_RCC_I2C2_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_I2C2RST)\n#define __HAL_RCC_I2C3_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_I2C3RST)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_FORCE_RESET()           (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_I2C5RST)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_FORCE_RESET()            (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_CECRST)\n#define __HAL_RCC_DAC12_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_DAC12RST)\n#define __HAL_RCC_UART7_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_UART7RST)\n#define __HAL_RCC_UART8_FORCE_RESET()          (RCC->APB1LRSTR) |= (RCC_APB1LRSTR_UART8RST)\n#define __HAL_RCC_CRS_FORCE_RESET()            (RCC->APB1HRSTR) |= (RCC_APB1HRSTR_CRSRST)\n#define __HAL_RCC_SWPMI1_FORCE_RESET()          (RCC->APB1HRSTR) |= (RCC_APB1HRSTR_SWPMIRST)\n#define __HAL_RCC_OPAMP_FORCE_RESET()          (RCC->APB1HRSTR) |= (RCC_APB1HRSTR_OPAMPRST)\n#define __HAL_RCC_MDIOS_FORCE_RESET()          (RCC->APB1HRSTR) |= (RCC_APB1HRSTR_MDIOSRST)\n#define __HAL_RCC_FDCAN_FORCE_RESET()          (RCC->APB1HRSTR) |= (RCC_APB1HRSTR_FDCANRST)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_FORCE_RESET()          (RCC->APB1HRSTR) |= (RCC_APB1HRSTR_TIM23RST)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_FORCE_RESET()          (RCC->APB1HRSTR) |= (RCC_APB1HRSTR_TIM24RST)\n#endif /* TIM24 */\n\n#define __HAL_RCC_APB1L_RELEASE_RESET()       (RCC->APB1LRSTR = 0x00U)\n#define __HAL_RCC_APB1H_RELEASE_RESET()       (RCC->APB1HRSTR = 0x00U)\n#define __HAL_RCC_TIM2_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM2RST)\n#define __HAL_RCC_TIM3_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM3RST)\n#define __HAL_RCC_TIM4_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM4RST)\n#define __HAL_RCC_TIM5_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM5RST)\n#define __HAL_RCC_TIM6_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM6RST)\n#define __HAL_RCC_TIM7_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM7RST)\n#define __HAL_RCC_TIM12_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM12RST)\n#define __HAL_RCC_TIM13_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM13RST)\n#define __HAL_RCC_TIM14_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_TIM14RST)\n#define __HAL_RCC_LPTIM1_RELEASE_RESET()         (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_LPTIM1RST)\n#define __HAL_RCC_SPI2_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_SPI2RST)\n#define __HAL_RCC_SPI3_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_SPI3RST)\n#define __HAL_RCC_SPDIFRX_RELEASE_RESET()        (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_SPDIFRXRST)\n#define __HAL_RCC_USART2_RELEASE_RESET()         (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_USART2RST)\n#define __HAL_RCC_USART3_RELEASE_RESET()         (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_USART3RST)\n#define __HAL_RCC_UART4_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_UART4RST)\n#define __HAL_RCC_UART5_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_UART5RST)\n#define __HAL_RCC_I2C1_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_I2C1RST)\n#define __HAL_RCC_I2C2_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_I2C2RST)\n#define __HAL_RCC_I2C3_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_I2C3RST)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_RELEASE_RESET()           (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_I2C5RST)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_RELEASE_RESET()            (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_CECRST)\n#define __HAL_RCC_DAC12_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_DAC12RST)\n#define __HAL_RCC_UART7_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_UART7RST)\n#define __HAL_RCC_UART8_RELEASE_RESET()          (RCC->APB1LRSTR) &= ~ (RCC_APB1LRSTR_UART8RST)\n#define __HAL_RCC_CRS_RELEASE_RESET()            (RCC->APB1HRSTR) &= ~ (RCC_APB1HRSTR_CRSRST)\n#define __HAL_RCC_SWPMI1_RELEASE_RESET()          (RCC->APB1HRSTR) &= ~ (RCC_APB1HRSTR_SWPMIRST)\n#define __HAL_RCC_OPAMP_RELEASE_RESET()          (RCC->APB1HRSTR) &= ~ (RCC_APB1HRSTR_OPAMPRST)\n#define __HAL_RCC_MDIOS_RELEASE_RESET()          (RCC->APB1HRSTR) &= ~ (RCC_APB1HRSTR_MDIOSRST)\n#define __HAL_RCC_FDCAN_RELEASE_RESET()          (RCC->APB1HRSTR) &= ~ (RCC_APB1HRSTR_FDCANRST)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_RELEASE_RESET()          (RCC->APB1HRSTR) &= ~ (RCC_APB1HRSTR_TIM23RST)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_RELEASE_RESET()          (RCC->APB1HRSTR) &= ~ (RCC_APB1HRSTR_TIM24RST)\n#endif /* TIM24 */\n\n/** @brief  Force or release the APB2 peripheral reset.\n  */\n#if (STM32H7_DEV_ID == 0x450UL)\n#define __HAL_RCC_APB2_FORCE_RESET()            (RCC->APB2RSTR = 0x31D73033U)  /* Resets TIM1, TIM8, USART1, USART6, SPI1, SPI4, TIM15..TIM17, SPI5, SAI1..SAI3, DFSDM1 and HRTIM */\n#elif  (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_APB2_FORCE_RESET()            (RCC->APB2RSTR = 0x40D730F3U)  /* Resets TIM1, TIM8, USART1, USART6, UART9, USART10, SPI1, SPI4, TIM15..TIM17, SPI5, SAI1, SAI2 and DFSDM1 */\n#else\n#define __HAL_RCC_APB2_FORCE_RESET()            (RCC->APB2RSTR = 0x405730F3U)  /* Resets TIM1, TIM8, USART1, USART6, UART9, USART10, SPI1, SPI4, TIM15..TIM17, SPI5, SAI1 and DFSDM1 */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#define __HAL_RCC_TIM1_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_TIM1RST)\n#define __HAL_RCC_TIM8_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_TIM8RST)\n#define __HAL_RCC_USART1_FORCE_RESET()         (RCC->APB2RSTR) |= (RCC_APB2RSTR_USART1RST)\n#define __HAL_RCC_USART6_FORCE_RESET()         (RCC->APB2RSTR) |= (RCC_APB2RSTR_USART6RST)\n#if defined(UART9)\n#define __HAL_RCC_UART9_FORCE_RESET()         (RCC->APB2RSTR) |= (RCC_APB2RSTR_UART9RST)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_FORCE_RESET()         (RCC->APB2RSTR) |= (RCC_APB2RSTR_USART10RST)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_SPI1RST)\n#define __HAL_RCC_SPI4_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_SPI4RST)\n#define __HAL_RCC_TIM15_FORCE_RESET()          (RCC->APB2RSTR) |= (RCC_APB2RSTR_TIM15RST)\n#define __HAL_RCC_TIM16_FORCE_RESET()          (RCC->APB2RSTR) |= (RCC_APB2RSTR_TIM16RST)\n#define __HAL_RCC_TIM17_FORCE_RESET()          (RCC->APB2RSTR) |= (RCC_APB2RSTR_TIM17RST)\n#define __HAL_RCC_SPI5_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_SPI5RST)\n#define __HAL_RCC_SAI1_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_SAI1RST)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_SAI2RST)\n#endif /* SAI2 */\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_FORCE_RESET()           (RCC->APB2RSTR) |= (RCC_APB2RSTR_SAI3RST)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_FORCE_RESET()         (RCC->APB2RSTR) |= (RCC_APB2RSTR_DFSDM1RST)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_FORCE_RESET()         (RCC->APB2RSTR) |= (RCC_APB2RSTR_HRTIMRST)\n#endif /*HRTIM1*/\n\n#define __HAL_RCC_APB2_RELEASE_RESET()         (RCC->APB2RSTR = 0x00U)\n#define __HAL_RCC_TIM1_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_TIM1RST)\n#define __HAL_RCC_TIM8_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_TIM8RST)\n#define __HAL_RCC_USART1_RELEASE_RESET()         (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_USART1RST)\n#define __HAL_RCC_USART6_RELEASE_RESET()         (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_USART6RST)\n#if defined(UART9)\n#define __HAL_RCC_UART9_RELEASE_RESET()         (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_UART9RST)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_RELEASE_RESET()         (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_USART10RST)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_SPI1RST)\n#define __HAL_RCC_SPI4_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_SPI4RST)\n#define __HAL_RCC_TIM15_RELEASE_RESET()          (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_TIM15RST)\n#define __HAL_RCC_TIM16_RELEASE_RESET()          (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_TIM16RST)\n#define __HAL_RCC_TIM17_RELEASE_RESET()          (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_TIM17RST)\n#define __HAL_RCC_SPI5_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_SPI5RST)\n#define __HAL_RCC_SAI1_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_SAI1RST)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_SAI2RST)\n#endif /* SAI2 */\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_RELEASE_RESET()           (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_SAI3RST)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_RELEASE_RESET()         (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_DFSDM1RST)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_RELEASE_RESET()         (RCC->APB2RSTR) &= ~ (RCC_APB2RSTR_HRTIMRST)\n#endif /*HRTIM1*/\n\n/** @brief  Force or release the APB4 peripheral reset.\n  */\n\n#if (STM32H7_DEV_ID == 0x450UL)\n#define __HAL_RCC_APB4_FORCE_RESET()            (RCC->APB4RSTR = 0x0020DEAAU)  /* Resets SYSCFG, LPUART1, SPI6, I2C4, LPTIM2..LPTIM5, COMP12, VREF and SAI4 */\n#elif  (STM32H7_DEV_ID == 0x480UL)\n#define __HAL_RCC_APB4_FORCE_RESET()            (RCC->APB4RSTR = 0x0C00E6AAU)  /* Resets SYSCFG, LPUART1, SPI6, I2C4, LPTIM2, LPTIM3, DAC2, COMP12, VREF, DTS and DFSDM2 */\n#else\n#define __HAL_RCC_APB4_FORCE_RESET()            (RCC->APB4RSTR = 0x0420DEAAU)  /* Resets SYSCFG, LPUART1, SPI6, I2C4, LPTIM2..LPTIM5, COMP12, VREF, SAI4 and DTS */\n#endif /* STM32H7_DEV_ID == 0x450UL */\n#define __HAL_RCC_SYSCFG_FORCE_RESET()           (RCC->APB4RSTR) |= (RCC_APB4RSTR_SYSCFGRST)\n#define __HAL_RCC_LPUART1_FORCE_RESET()          (RCC->APB4RSTR) |= (RCC_APB4RSTR_LPUART1RST)\n#define __HAL_RCC_SPI6_FORCE_RESET()             (RCC->APB4RSTR) |= (RCC_APB4RSTR_SPI6RST)\n#define __HAL_RCC_I2C4_FORCE_RESET()             (RCC->APB4RSTR) |= (RCC_APB4RSTR_I2C4RST)\n#define __HAL_RCC_LPTIM2_FORCE_RESET()           (RCC->APB4RSTR) |= (RCC_APB4RSTR_LPTIM2RST)\n#define __HAL_RCC_LPTIM3_FORCE_RESET()           (RCC->APB4RSTR) |= (RCC_APB4RSTR_LPTIM3RST)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_FORCE_RESET()           (RCC->APB4RSTR) |= (RCC_APB4RSTR_LPTIM4RST)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_FORCE_RESET()           (RCC->APB4RSTR) |= (RCC_APB4RSTR_LPTIM5RST)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_FORCE_RESET()             (RCC->APB4RSTR) |= (RCC_APB4RSTR_DAC2RST)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_FORCE_RESET()           (RCC->APB4RSTR) |= (RCC_APB4RSTR_COMP12RST)\n#define __HAL_RCC_VREF_FORCE_RESET()             (RCC->APB4RSTR) |= (RCC_APB4RSTR_VREFRST)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_FORCE_RESET()             (RCC->APB4RSTR) |= (RCC_APB4RSTR_SAI4RST)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_FORCE_RESET()              (RCC->APB4RSTR) |= (RCC_APB4RSTR_DTSRST)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_FORCE_RESET()           (RCC->APB4RSTR) |= (RCC_APB4RSTR_DFSDM2RST)\n#endif /*DFSDM2*/\n\n#define __HAL_RCC_APB4_RELEASE_RESET()           (RCC->APB4RSTR = 0x00U)\n#define __HAL_RCC_SYSCFG_RELEASE_RESET()           (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_SYSCFGRST)\n#define __HAL_RCC_LPUART1_RELEASE_RESET()          (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_LPUART1RST)\n#define __HAL_RCC_SPI6_RELEASE_RESET()             (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_SPI6RST)\n#define __HAL_RCC_I2C4_RELEASE_RESET()             (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_I2C4RST)\n#define __HAL_RCC_LPTIM2_RELEASE_RESET()           (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_LPTIM2RST)\n#define __HAL_RCC_LPTIM3_RELEASE_RESET()           (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_LPTIM3RST)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_RELEASE_RESET()           (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_LPTIM4RST)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_RELEASE_RESET()           (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_LPTIM5RST)\n#endif /*LPTIM5*/\n#if defined(RCC_APB4RSTR_DAC2RST)\n#define __HAL_RCC_DAC2_RELEASE_RESET()             (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_DAC2RST)\n#endif\n#define __HAL_RCC_COMP12_RELEASE_RESET()           (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_COMP12RST)\n#define __HAL_RCC_VREF_RELEASE_RESET()             (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_VREFRST)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_RELEASE_RESET()             (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_SAI4RST)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_RELEASE_RESET()              (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_DTSRST)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_RELEASE_RESET()           (RCC->APB4RSTR) &= ~ (RCC_APB4RSTR_DFSDM2RST)\n#endif /*DFSDM2*/\n\n/** @brief  Enable or disable the AHB3 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n\n#define __HAL_RCC_MDMA_CLK_SLEEP_ENABLE()            (RCC->AHB3LPENR |= (RCC_AHB3LPENR_MDMALPEN))\n#define __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE()           (RCC->AHB3LPENR |= (RCC_AHB3LPENR_DMA2DLPEN))\n#if defined(JPEG)\n#define __HAL_RCC_JPGDEC_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_JPGDECLPEN))\n#endif /* JPEG */\n#define __HAL_RCC_FLASH_CLK_SLEEP_ENABLE()           (RCC->AHB3LPENR |= (RCC_AHB3LPENR_FLASHLPEN))\n#define __HAL_RCC_FMC_CLK_SLEEP_ENABLE()             (RCC->AHB3LPENR |= (RCC_AHB3LPENR_FMCLPEN))\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE()            (RCC->AHB3LPENR |= (RCC_AHB3LPENR_QSPILPEN))\n#endif /*QUADSPI*/\n#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_SDMMC1LPEN))\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_OSPI1LPEN))\n#endif /*OCTOSPI1*/\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_OSPI2LPEN))\n#endif /*OCTOSPI2*/\n#if defined(OCTOSPIM)\n#define __HAL_RCC_IOMNGR_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_IOMNGRLPEN))\n#endif /*OCTOSPIM*/\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_OTFDEC1LPEN))\n#endif /*OTFDEC1*/\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_OTFDEC2LPEN))\n#endif /*OTFDEC2*/\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_GFXMMULPEN))\n#endif /*GFXMMU*/\n#if defined(CD_AXISRAM2_BASE)\n#define __HAL_RCC_AXISRAM2_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_AXISRAM2LPEN))\n#endif\n#if defined(CD_AXISRAM3_BASE)\n#define __HAL_RCC_AXISRAM3_CLK_SLEEP_ENABLE()          (RCC->AHB3LPENR |= (RCC_AHB3LPENR_AXISRAM3LPEN))\n#endif\n#define __HAL_RCC_DTCM1_CLK_SLEEP_ENABLE()           (RCC->AHB3LPENR |= (RCC_AHB3LPENR_DTCM1LPEN))\n#define __HAL_RCC_DTCM2_CLK_SLEEP_ENABLE()           (RCC->AHB3LPENR |= (RCC_AHB3LPENR_DTCM2LPEN))\n#define __HAL_RCC_ITCM_CLK_SLEEP_ENABLE()            (RCC->AHB3LPENR |= (RCC_AHB3LPENR_ITCMLPEN))\n#if defined(RCC_AHB3LPENR_AXISRAMLPEN)\n#define __HAL_RCC_D1SRAM1_CLK_SLEEP_ENABLE()         (RCC->AHB3LPENR |= (RCC_AHB3LPENR_AXISRAMLPEN))\n#define __HAL_RCC_AXISRAM_CLK_SLEEP_ENABLE           __HAL_RCC_D1SRAM1_CLK_SLEEP_ENABLE\n#else\n#define __HAL_RCC_AXISRAM1_CLK_SLEEP_ENABLE()        (RCC->AHB3LPENR |= (RCC_AHB3LPENR_AXISRAM1LPEN))\n#define __HAL_RCC_D1SRAM1_CLK_SLEEP_ENABLE           __HAL_RCC_AXISRAM1_CLK_SLEEP_ENABLE  /* For backward compatibility */\n#endif /* RCC_AHB3LPENR_AXISRAMLPEN */\n\n#define __HAL_RCC_MDMA_CLK_SLEEP_DISABLE()            (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_MDMALPEN))\n#define __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_DMA2DLPEN))\n#if defined(JPEG)\n#define __HAL_RCC_JPGDEC_CLK_SLEEP_DISABLE()          (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_JPGDECLPEN))\n#endif /* JPEG */\n#define __HAL_RCC_FLASH_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_FLASHLPEN))\n#define __HAL_RCC_FMC_CLK_SLEEP_DISABLE()             (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_FMCLPEN))\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE()            (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_QSPILPEN))\n#endif /*QUADSPI*/\n#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE()          (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_SDMMC1LPEN))\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_OSPI1LPEN))\n#endif /*OCTOSPI1*/\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_OSPI2LPEN))\n#endif /*OCTOSPI2*/\n#if defined(OCTOSPIM)\n#define __HAL_RCC_IOMNGR_CLK_SLEEP_DISABLE()          (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_IOMNGRLPEN))\n#endif /*OCTOSPIM*/\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_OTFDEC1LPEN))\n#endif /*OTFDEC1*/\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_OTFDEC2LPEN))\n#endif /*OTFDEC2*/\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_GFXMMULPEN))\n#endif /*GFXMMU*/\n#if defined(CD_AXISRAM2_BASE)\n#define __HAL_RCC_AXISRAM2_CLK_SLEEP_DISABLE()         (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_AXISRAM2LPEN))\n#endif\n#if defined(CD_AXISRAM3_BASE)\n#define __HAL_RCC_AXISRAM3_CLK_SLEEP_DISABLE()         (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_AXISRAM3LPEN))\n#endif\n#define __HAL_RCC_DTCM1_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_DTCM1LPEN))\n#define __HAL_RCC_DTCM2_CLK_SLEEP_DISABLE()           (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_DTCM2LPEN))\n#define __HAL_RCC_ITCM_CLK_SLEEP_DISABLE()            (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_ITCMLPEN))\n#if defined(RCC_AHB3LPENR_AXISRAMLPEN)\n#define __HAL_RCC_D1SRAM1_CLK_SLEEP_DISABLE()         (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_AXISRAMLPEN))\n#define __HAL_RCC_AXISRAM_CLK_SLEEP_DISABLE           __HAL_RCC_D1SRAM1_CLK_SLEEP_DISABLE\n#else\n#define __HAL_RCC_AXISRAM1_CLK_SLEEP_DISABLE()        (RCC->AHB3LPENR &= ~ (RCC_AHB3LPENR_AXISRAM1LPEN))\n#define __HAL_RCC_D1SRAM1_CLK_SLEEP_DISABLE          __HAL_RCC_AXISRAM1_CLK_SLEEP_DISABLE      /* For backward compatibility */\n#endif  /* RCC_AHB3LPENR_AXISRAMLPEN */\n\n/** @brief  Get the enable or disable status of the AHB3 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#define __HAL_RCC_MDMA_IS_CLK_SLEEP_ENABLED()             ((RCC->AHB3LPENR & RCC_AHB3LPENR_MDMALPEN)    != 0U)\n#define __HAL_RCC_DMA2D_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_DMA2DLPEN)   != 0U)\n#if defined(JPEG)\n#define __HAL_RCC_JPGDEC_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_JPGDECLPEN)  != 0U)\n#endif /* JPEG */\n#define __HAL_RCC_FLASH_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_FLASHLPEN)   != 0U)\n#define __HAL_RCC_FMC_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB3LPENR & RCC_AHB3LPENR_FMCLPEN)     != 0U)\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED()             ((RCC->AHB3LPENR & RCC_AHB3LPENR_QSPILPEN)    != 0U)\n#endif /*QUADSPI*/\n#define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_SDMMC1LPEN)  != 0U)\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OSPI1LPEN)    != 0U)\n#endif /*OCTOSPI1*/\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OSPI2LPEN)    != 0U)\n#endif /*OCTOSPI2*/\n#if defined(OCTOSPIM)\n#define __HAL_RCC_IOMNGR_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_IOMNGRLPEN)   != 0U)\n#endif /*OCTOSPIM*/\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OTFDEC1LPEN) != 0U)\n#endif /*OTFDEC1*/\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OTFDEC2LPEN) != 0U)\n#endif /*OTFDEC2*/\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_GFXMMULPEN)    != 0U)\n#endif /*GFXMMU*/\n#if defined(CD_AXISRAM2_BASE)\n#define __HAL_RCC_AXISRAM2_IS_CLK_SLEEP_ENABLED()         ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAM2LPEN)   != 0U)\n#endif\n#if defined(CD_AXISRAM3_BASE)\n#define __HAL_RCC_AXISRAM3_IS_CLK_SLEEP_ENABLED()         ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAM3LPEN)   != 0U)\n#endif\n#define __HAL_RCC_DTCM1_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_DTCM1LPEN)   != 0U)\n#define __HAL_RCC_DTCM2_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_DTCM2LPEN)   != 0U)\n#define __HAL_RCC_ITCM_IS_CLK_SLEEP_ENABLED()             ((RCC->AHB3LPENR & RCC_AHB3LPENR_ITCMLPEN)    != 0U)\n#if defined(RCC_AHB3LPENR_AXISRAMLPEN)\n#define __HAL_RCC_D1SRAM1_IS_CLK_SLEEP_ENABLED()          ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAMLPEN) != 0U)\n#else\n#define __HAL_RCC_AXISRAM1_IS_CLK_SLEEP_ENABLED()         ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAM1LPEN) != 0U)\n#endif\n\n#define __HAL_RCC_MDMA_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_MDMALPEN)    == 0U)\n#define __HAL_RCC_DMA2D_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_DMA2DLPEN)   == 0U)\n#if defined(JPEG)\n#define __HAL_RCC_JPGDEC_IS_CLK_SLEEP_DISABLED()          ((RCC->AHB3LPENR & RCC_AHB3LPENR_JPGDECLPEN)  == 0U)\n#endif /* JPEG */\n#define __HAL_RCC_FLASH_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_FLASHLPEN)   == 0U)\n#define __HAL_RCC_FMC_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB3LPENR & RCC_AHB3LPENR_FMCLPEN)     == 0U)\n#if defined(QUADSPI)\n#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_QSPILPEN)    == 0U)\n#endif /*QUADSPI*/\n#define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_DISABLED()          ((RCC->AHB3LPENR & RCC_AHB3LPENR_SDMMC1LPEN)  == 0U)\n#if defined(OCTOSPI1)\n#define __HAL_RCC_OSPI1_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OSPI1LPEN)  == 0U)\n#endif /*OCTOSPI1*/\n#if defined(OCTOSPI2)\n#define __HAL_RCC_OSPI2_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OSPI2LPEN)  == 0U)\n#endif /*OCTOSPI2*/\n#if defined(OCTOSPIM)\n#define __HAL_RCC_IOMNGR_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_IOMNGRLPEN) == 0U)\n#endif /*OCTOSPIM*/\n#if defined(OTFDEC1)\n#define __HAL_RCC_OTFDEC1_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OTFDEC1LPEN)  == 0U)\n#endif /*OTFDEC1*/\n#if defined(OTFDEC2)\n#define __HAL_RCC_OTFDEC2_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_OTFDEC2LPEN)  == 0U)\n#endif /*OTFDEC2*/\n#if defined(GFXMMU)\n#define __HAL_RCC_GFXMMU_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_GFXMMULPEN)  == 0U)\n#endif /*GFXMMU*/\n#if defined(CD_AXISRAM2_BASE)\n#define __HAL_RCC_AXISRAM2_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAM2LPEN)  == 0U)\n#endif\n#if defined(CD_AXISRAM3_BASE)\n#define __HAL_RCC_AXISRAM3_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAM3LPEN)  == 0U)\n#endif\n#define __HAL_RCC_DTCM1_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_DTCM1LPEN)   == 0U)\n#define __HAL_RCC_DTCM2_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB3LPENR & RCC_AHB3LPENR_DTCM2LPEN)   == 0U)\n#define __HAL_RCC_ITCM_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB3LPENR & RCC_AHB3LPENR_ITCMLPEN)    == 0U)\n#if defined(RCC_AHB3LPENR_AXISRAMLPEN)\n#define __HAL_RCC_D1SRAM1_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAMLPEN) == 0U)\n#else\n#define __HAL_RCC_AXISRAM1_IS_CLK_SLEEP_DISABLED()        ((RCC->AHB3LPENR & RCC_AHB3LPENR_AXISRAML1PEN) == 0U)\n#endif /* RCC_AHB3LPENR_AXISRAMLPEN */\n\n/** @brief  ENABLE or disable the AHB1 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE()             (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA1LPEN))\n#define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE()             (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA2LPEN))\n#define __HAL_RCC_ADC12_CLK_SLEEP_ENABLE()            (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ADC12LPEN))\n#if defined(RCC_AHB1LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_CLK_SLEEP_ENABLE()              (RCC->AHB1LPENR |= (RCC_AHB1LPENR_CRCLPEN))\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_CLK_SLEEP_ENABLE()          (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETH1MACLPEN))\n#endif /*ETH*/\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_CLK_SLEEP_ENABLE()              (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ARTLPEN))\n#endif /*DUAL_CORE*/\n#if defined(ETH)\n#define __HAL_RCC_ETH1TX_CLK_SLEEP_ENABLE()           (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETH1TXLPEN))\n#define __HAL_RCC_ETH1RX_CLK_SLEEP_ENABLE()           (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETH1RXLPEN))\n#endif /*ETH*/\n#define __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_ENABLE()      (RCC->AHB1LPENR |= (RCC_AHB1LPENR_USB1OTGHSLPEN))\n#define __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_USB1OTGHSULPILPEN))\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_ENABLE()      (RCC->AHB1LPENR |= (RCC_AHB1LPENR_USB2OTGHSLPEN))\n#define __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_USB2OTGHSULPILPEN))\n#endif /* USB2_OTG_FS */\n\n#define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE()             (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_DMA1LPEN))\n#define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE()             (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_DMA2LPEN))\n#define __HAL_RCC_ADC12_CLK_SLEEP_DISABLE()            (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_ADC12LPEN))\n#if defined(RCC_AHB1LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_CLK_SLEEP_DISABLE()              (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_CRCLPEN))\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_CLK_SLEEP_DISABLE()          (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1MACLPEN))\n#endif  /*ETH*/\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_CLK_SLEEP_DISABLE()              (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_ARTLPEN))\n#endif /*DUAL_CORE*/\n#if defined(ETH)\n#define __HAL_RCC_ETH1TX_CLK_SLEEP_DISABLE()           (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1TXLPEN))\n#define __HAL_RCC_ETH1RX_CLK_SLEEP_DISABLE()           (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1RXLPEN))\n#endif  /*ETH*/\n#define __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_DISABLE()      (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB1OTGHSLPEN))\n#define __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB1OTGHSULPILPEN))\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_DISABLE()      (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB2OTGHSLPEN))\n#define __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB2OTGHSULPILPEN))\n#endif /* USB2_OTG_FS */\n\n/** @brief  Get the enable or disable status of the AHB1 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA1LPEN))          != 0U)\n#define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2LPEN))          != 0U)\n#define __HAL_RCC_ADC12_IS_CLK_SLEEP_ENABLED()             ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ADC12LPEN))         != 0U)\n#if defined(RCC_AHB1LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED()                ((RCC->AHB1LPENR & (RCC_AHB1LPENR_CRCLPEN))         != 0U)\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETH1MACLPEN))       != 0U)\n#endif  /*ETH*/\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_IS_CLK_SLEEP_ENABLED()               ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ARTLPEN))       != 0U)\n#endif /*DUAL_CORE*/\n#if defined(ETH)\n#define __HAL_RCC_ETH1TX_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETH1TXLPEN))        != 0U)\n#define __HAL_RCC_ETH1RX_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETH1RXLPEN))        != 0U)\n#endif  /*ETH*/\n#define __HAL_RCC_USB1_OTG_HS_IS_CLK_SLEEP_ENABLED()       ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB1OTGHSLPEN))     != 0U)\n#define __HAL_RCC_USB1_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED()  ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB1OTGHSULPILPEN)) != 0U)\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_IS_CLK_SLEEP_ENABLED()       ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB2OTGHSLPEN))     != 0U)\n#define __HAL_RCC_USB2_OTG_FS_ULPI_IS_CLK_SLEEP_ENABLED()  ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB2OTGHSULPILPEN)) != 0U)\n#endif /* USB2_OTG_FS */\n\n#define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA1LPEN))          == 0U)\n#define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2LPEN))          == 0U)\n#define __HAL_RCC_ADC12_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ADC12LPEN))         == 0U)\n#if defined(RCC_AHB1LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED()              ((RCC->AHB1LPENR & (RCC_AHB1LPENR_CRCLPEN))           == 0U)\n#endif\n#if defined(ETH)\n#define __HAL_RCC_ETH1MAC_IS_CLK_SLEEP_DISABLED()          ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETH1MACLPEN))       == 0U)\n#endif /* ETH */\n#if defined(DUAL_CORE)\n#define __HAL_RCC_ART_IS_CLK_SLEEP_DISABLED()              ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ARTLPEN))           == 0U)\n#endif /*DUAL_CORE*/\n#if defined(ETH)\n#define __HAL_RCC_ETH1TX_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETH1TXLPEN))        == 0U)\n#define __HAL_RCC_ETH1RX_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETH1RXLPEN))        == 0U)\n#endif /* ETH */\n#define __HAL_RCC_USB1_OTG_HS_IS_CLK_SLEEP_DISABLED()      ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB1OTGHSLPEN))     == 0U)\n#define __HAL_RCC_USB1_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB1OTGHSULPILPEN)) == 0U)\n#if defined(USB2_OTG_FS)\n#define __HAL_RCC_USB2_OTG_FS_IS_CLK_SLEEP_DISABLED()      ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB2OTGHSLPEN))     == 0U)\n#define __HAL_RCC_USB2_OTG_FS_ULPI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_USB2OTGHSULPILPEN)) == 0U)\n#endif /* USB2_OTG_FS */\n\n\n/** @brief  ENABLE or disable the AHB2 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_CLK_SLEEP_ENABLE()        (RCC->AHB2LPENR |= (RCC_AHB2LPENR_DCMI_PSSILPEN))\n#define __HAL_RCC_DCMI_CLK_SLEEP_ENABLE()             __HAL_RCC_DCMI_PSSI_CLK_SLEEP_ENABLE()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_CLK_SLEEP_ENABLE()             (RCC->AHB2LPENR |= (RCC_AHB2LPENR_DCMILPEN))\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE()             (RCC->AHB2LPENR |= (RCC_AHB2LPENR_CRYPLPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_CLK_SLEEP_ENABLE()             (RCC->AHB2LPENR |= (RCC_AHB2LPENR_HASHLPEN))\n#endif /* HASH */\n#define __HAL_RCC_RNG_CLK_SLEEP_ENABLE()              (RCC->AHB2LPENR |= (RCC_AHB2LPENR_RNGLPEN))\n#define __HAL_RCC_SDMMC2_CLK_SLEEP_ENABLE()           (RCC->AHB2LPENR |= (RCC_AHB2LPENR_SDMMC2LPEN))\n#if defined(RCC_AHB2LPENR_DFSDMDMALPEN)\n#define __HAL_RCC_DFSDMDMA_CLK_SLEEP_ENABLE()         (RCC->AHB2LPENR |= (RCC_AHB2LPENR_DFSDMDMALPEN))\n#endif\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_CLK_SLEEP_ENABLE()             (RCC->AHB2LPENR |= (RCC_AHB2LPENR_FMACLPEN))\n#endif /* FMAC */\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_CLK_SLEEP_ENABLE()           (RCC->AHB2LPENR |= (RCC_AHB2LPENR_CORDICLPEN))\n#endif /* CORDIC */\n#if defined(RCC_AHB2LPENR_D2SRAM1LPEN)\n#define __HAL_RCC_D2SRAM1_CLK_SLEEP_ENABLE()          (RCC->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM1LPEN))\n#else\n#define __HAL_RCC_AHBSRAM1_CLK_SLEEP_ENABLE()         (RCC->AHB2LPENR |= (RCC_AHB2LPENR_AHBSRAM1LPEN))\n#endif /* RCC_AHB2LPENR_D2SRAM1LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM2LPEN)\n#define __HAL_RCC_D2SRAM2_CLK_SLEEP_ENABLE()          (RCC->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM2LPEN))\n#else\n#define __HAL_RCC_AHBSRAM2_CLK_SLEEP_ENABLE()         (RCC->AHB2LPENR |= (RCC_AHB2LPENR_AHBSRAM2LPEN))\n#endif /* RCC_AHB2LPENR_D2SRAM2LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM3LPEN)\n#define __HAL_RCC_D2SRAM3_CLK_SLEEP_ENABLE()          (RCC->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM3LPEN))\n#endif\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_CLK_SLEEP_DISABLE()        (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_DCMI_PSSILPEN))\n#define __HAL_RCC_DCMI_CLK_SLEEP_DISABLE()             __HAL_RCC_DCMI_PSSI_CLK_SLEEP_DISABLE()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_CLK_SLEEP_DISABLE()             (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_DCMILPEN))\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE()             (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_CRYPLPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_CLK_SLEEP_DISABLE()             (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_HASHLPEN))\n#endif /* HASH */\n#define __HAL_RCC_RNG_CLK_SLEEP_DISABLE()              (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_RNGLPEN))\n#define __HAL_RCC_SDMMC2_CLK_SLEEP_DISABLE()           (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_SDMMC2LPEN))\n#if defined(RCC_AHB2LPENR_DFSDMDMALPEN)\n#define __HAL_RCC_DFSDMDMA_CLK_SLEEP_DISABLE()         (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_DFSDMDMALPEN))\n#endif\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_CLK_SLEEP_DISABLE()             (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_FMACLPEN))\n#endif /* FMAC */\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_CLK_SLEEP_DISABLE()           (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_CORDICLPEN))\n#endif /* CORDIC */\n#if defined(RCC_AHB2LPENR_D2SRAM1LPEN)\n#define __HAL_RCC_D2SRAM1_CLK_SLEEP_DISABLE()          (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM1LPEN))\n#else\n#define __HAL_RCC_AHBSRAM1_CLK_SLEEP_DISABLE()         (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_AHBSRAM1LPEN))\n#endif /* RCC_AHB2LPENR_D2SRAM1LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM2LPEN)\n#define __HAL_RCC_D2SRAM2_CLK_SLEEP_DISABLE()          (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM2LPEN))\n#else\n#define __HAL_RCC_AHBSRAM2_CLK_SLEEP_DISABLE()          (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_AHBSRAM2LPEN))\n#endif /* RCC_AHB2LPENR_D2SRAM2LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM3LPEN)\n#define __HAL_RCC_D2SRAM3_CLK_SLEEP_DISABLE()          (RCC->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM3LPEN))\n#endif\n\n/** @brief  Get the enable or disable status of the AHB2 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_IS_CLK_SLEEP_ENABLED()         ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMI_PSSILPEN))    != 0U)\n#define __HAL_RCC_DCMI_IS_CLK_SLEEP_ENABLED()              __HAL_RCC_DCMI_PSSI_IS_CLK_SLEEP_ENABLED()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMILPEN))    != 0U)\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CRYPLPEN))    != 0U)\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB2LPENR & (RCC_AHB2LPENR_HASHLPEN))    != 0U)\n#endif /* HASH */\n#define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED()               ((RCC->AHB2LPENR & (RCC_AHB2LPENR_RNGLPEN))     != 0U)\n#define __HAL_RCC_SDMMC2_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB2LPENR & (RCC_AHB2LPENR_SDMMC2LPEN))  != 0U)\n#if defined(RCC_AHB2LPENR_DFSDMDMALPEN)\n#define __HAL_RCC_DFSDMDMA_IS_CLK_SLEEP_ENABLED()          ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DFSDMDMALPEN)) != 0U)\n#endif\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB2LPENR & (RCC_AHB2LPENR_FMACLPEN)) != 0U)\n#endif /* FMAC */\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CORDICLPEN)) != 0U)\n#endif /* CORDIC */\n#if defined(RCC_AHB2LPENR_D2SRAM1LPEN)\n#define __HAL_RCC_D2SRAM1_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB2LPENR & (RCC_AHB2LPENR_D2SRAM1LPEN)) != 0U)\n#else\n#define __HAL_RCC_AHBSRAM1_IS_CLK_SLEEP_ENABLED()          ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AHBSRAM1LPEN)) != 0U)\n#endif /* RCC_AHB2LPENR_D2SRAM1LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM2LPEN)\n#define __HAL_RCC_D2SRAM2_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB2LPENR & (RCC_AHB2LPENR_D2SRAM2LPEN)) != 0U)\n#else\n#define __HAL_RCC_AHBSRAM2_IS_CLK_SLEEP_ENABLED()          ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AHBSRAM2LPEN)) != 0U)\n#endif /* RCC_AHB2LPENR_D2SRAM2LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM3LPEN)\n#define __HAL_RCC_D2SRAM3_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB2LPENR & (RCC_AHB2LPENR_D2SRAM3LPEN)) != 0U)\n#endif /* RCC_AHB2LPENR_D2SRAM3LPEN */\n\n#if defined(DCMI) && defined(PSSI)\n#define __HAL_RCC_DCMI_PSSI_IS_CLK_SLEEP_DISABLED()        ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMI_PSSILPEN))    == 0U)\n#define __HAL_RCC_DCMI_IS_CLK_SLEEP_DISABLED()             __HAL_RCC_DCMI_PSSI_IS_CLK_SLEEP_DISABLED()  /* for API backward compatibility*/\n#else\n#define __HAL_RCC_DCMI_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMILPEN))    == 0U)\n#endif /* DCMI && PSSI */\n#if defined(CRYP)\n#define __HAL_RCC_CRYP_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CRYPLPEN))    == 0U)\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_HASH_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB2LPENR & (RCC_AHB2LPENR_HASHLPEN))    == 0U)\n#endif /* HASH */\n#define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED()              ((RCC->AHB2LPENR & (RCC_AHB2LPENR_RNGLPEN))     == 0U)\n#if defined(RCC_AHB2LPENR_DFSDMDMALPEN)\n#define __HAL_RCC_DFSDMDMA_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DFSDMDMALPEN)) == 0U)\n#endif\n#define __HAL_RCC_SDMMC2_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB2LPENR & (RCC_AHB2LPENR_SDMMC2LPEN))  == 0U)\n#if defined(FMAC)\n#define __HAL_RCC_FMAC_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB2LPENR & (RCC_AHB2LPENR_FMACLPEN))  == 0U)\n#endif /* FMAC */\n#if defined(CORDIC)\n#define __HAL_RCC_CORDIC_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CORDICLPEN))  == 0U)\n#endif /* CORDIC */\n#if defined(RCC_AHB2LPENR_D2SRAM1LPEN)\n#define __HAL_RCC_D2SRAM1_IS_CLK_SLEEP_DISABLED()          ((RCC->AHB2LPENR & (RCC_AHB2LPENR_D2SRAM1LPEN)) == 0U)\n#else\n#define __HAL_RCC_AHBSRAM1_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AHBSRAM1LPEN)) == 0U)\n#endif /* RCC_AHB2LPENR_D2SRAM1LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM2LPEN)\n#define __HAL_RCC_D2SRAM2_IS_CLK_SLEEP_DISABLED()          ((RCC->AHB2LPENR & (RCC_AHB2LPENR_D2SRAM2LPEN)) == 0U)\n#else\n#define __HAL_RCC_AHBSRAM2_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AHBSRAM2LPEN)) == 0U)\n#endif /* RCC_AHB2LPENR_D2SRAM2LPEN */\n#if defined(RCC_AHB2LPENR_D2SRAM3LPEN)\n#define __HAL_RCC_D2SRAM3_IS_CLK_SLEEP_DISABLED()          ((RCC->AHB2LPENR & (RCC_AHB2LPENR_D2SRAM3LPEN)) == 0U)\n#endif /* RCC_AHB2LPENR_D2SRAM1LPEN*/\n\n\n/** @brief  ENABLE or disable the AHB4 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOALPEN)\n#define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOBLPEN)\n#define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOCLPEN)\n#define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIODLPEN)\n#define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOELPEN)\n#define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOFLPEN)\n#define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOGLPEN)\n#define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOHLPEN)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOILPEN)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOJLPEN)\n#define __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE()           (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOKLPEN)\n#if defined(RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_CLK_SLEEP_ENABLE()             (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_CRCLPEN)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_CLK_SLEEP_ENABLE()            (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_BDMA2LPEN)\n#define __HAL_RCC_BDMA_CLK_SLEEP_ENABLE  __HAL_RCC_BDMA2_CLK_SLEEP_ENABLE /* for API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_CLK_SLEEP_ENABLE()            (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_BDMALPEN)\n#endif /* BDMA2 */\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_CLK_SLEEP_ENABLE()            (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_ADC3LPEN)\n#endif /* ADC3 */\n#define __HAL_RCC_BKPRAM_CLK_SLEEP_ENABLE()          (RCC->AHB4LPENR) |= (RCC_AHB4LPENR_BKPRAMLPEN)\n#if defined(RCC_AHB4LPENR_SRDSRAMLPEN)\n#define __HAL_RCC_SRDSRAM_CLK_SLEEP_ENABLE()         (RCC->AHB4LPENR  |= (RCC_AHB4LPENR_SRDSRAMLPEN))\n#define __HAL_RCC_D3SRAM1_CLK_SLEEP_ENABLE  __HAL_RCC_SRDSRAM_CLK_SLEEP_ENABLE /* for API backward compatibility*/\n#else\n#define __HAL_RCC_D3SRAM1_CLK_SLEEP_ENABLE()         (RCC->AHB4LPENR  |= (RCC_AHB4LPENR_D3SRAM1LPEN))\n#endif /* RCC_AHB4LPENR_SRDSRAMLPEN */\n\n#define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOALPEN)\n#define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOBLPEN)\n#define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOCLPEN)\n#define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIODLPEN)\n#define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOELPEN)\n#define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOFLPEN)\n#define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOGLPEN)\n#define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOHLPEN)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOILPEN)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOJLPEN)\n#define __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE()           (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOKLPEN)\n#if defined(RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_CLK_SLEEP_DISABLE()             (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_CRCLPEN)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_CLK_SLEEP_DISABLE()            (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_BDMA2LPEN)\n#define __HAL_RCC_BDMA_CLK_SLEEP_DISABLE  __HAL_RCC_BDMA2_CLK_SLEEP_DISABLE  /* For API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_CLK_SLEEP_DISABLE()            (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_BDMALPEN)\n#endif /*BDMA2*/\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_CLK_SLEEP_DISABLE()            (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_ADC3LPEN)\n#endif /*ADC3*/\n#define __HAL_RCC_BKPRAM_CLK_SLEEP_DISABLE()          (RCC->AHB4LPENR) &= ~ (RCC_AHB4LPENR_BKPRAMLPEN)\n#if defined(RCC_AHB4LPENR_SRDSRAMLPEN)\n#define __HAL_RCC_SRDSRAM_CLK_SLEEP_DISABLE()         (RCC->AHB4LPENR  &= ~ (RCC_AHB4LPENR_SRDSRAMLPEN))\n#define __HAL_RCC_D3SRAM1_CLK_SLEEP_DISABLE  __HAL_RCC_SRDSRAM_CLK_SLEEP_DISABLE\n#else\n#define __HAL_RCC_D3SRAM1_CLK_SLEEP_DISABLE()         (RCC->AHB4LPENR  &= ~ (RCC_AHB4LPENR_D3SRAM1LPEN))\n#endif\n\n\n/** @brief  Get the enable or disable status of the AHB4 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOALPEN))   != 0U)\n#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOBLPEN))   != 0U)\n#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOCLPEN))   != 0U)\n#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIODLPEN))   != 0U)\n#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOELPEN))   != 0U)\n#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOFLPEN))   != 0U)\n#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOGLPEN))   != 0U)\n#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOHLPEN))   != 0U)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOILPEN))   != 0U)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOJLPEN))   != 0U)\n#define __HAL_RCC_GPIOK_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOKLPEN))   != 0U)\n#if defined(RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED()              ((RCC->AHB4LPENR & (RCC_AHB4LPENR_CRCLPEN))     != 0U)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_IS_CLK_SLEEP_ENABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_BDMA2LPEN))    != 0U)\n#define __HAL_RCC_BDMA_IS_CLK_SLEEP_ENABLED __HAL_RCC_BDMA2_IS_CLK_SLEEP_ENABLED  /* For API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_IS_CLK_SLEEP_ENABLED()             ((RCC->AHB4LPENR & (RCC_AHB4LPENR_BDMALPEN))    != 0U)\n#endif /*BDMA2*/\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_IS_CLK_SLEEP_ENABLED()             ((RCC->AHB4LPENR & (RCC_AHB4LPENR_ADC3LPEN))    != 0U)\n#endif /*ADC3*/\n#define __HAL_RCC_BKPRAM_IS_CLK_SLEEP_ENABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_BKPRAMLPEN))  != 0U)\n#if defined(RCC_AHB4LPENR_SRDSRAMLPEN)\n#define __HAL_RCC_SRDSRAM_IS_CLK_SLEEP_ENABLED()          ((RCC->AHB4LPENR & (RCC_AHB4LPENR_SRDSRAMLPEN)) != 0U)\n#define __HAL_RCC_D3SRAM1_IS_CLK_SLEEP_ENABLED  __HAL_RCC_SRDSRAM_IS_CLK_SLEEP_ENABLED  /* For API backward compatibility*/\n#else\n#define __HAL_RCC_D3SRAM1_IS_CLK_SLEEP_ENABLED()          ((RCC->AHB4LPENR & (RCC_AHB4LPENR_D3SRAM1LPEN)) != 0U)\n#endif\n\n#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOALPEN))   == 0U)\n#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOBLPEN))   == 0U)\n#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOCLPEN))   == 0U)\n#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIODLPEN))   == 0U)\n#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOELPEN))   == 0U)\n#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOFLPEN))   == 0U)\n#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOGLPEN))   == 0U)\n#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOHLPEN))   == 0U)\n#if defined(GPIOI)\n#define __HAL_RCC_GPIOI_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOILPEN))   == 0U)\n#endif /* GPIOI */\n#define __HAL_RCC_GPIOJ_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOJLPEN))   == 0U)\n#define __HAL_RCC_GPIOK_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_GPIOKLPEN))   == 0U)\n#if defined(RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED()             ((RCC->AHB4LPENR & (RCC_AHB4LPENR_CRCLPEN))     == 0U)\n#endif\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_IS_CLK_SLEEP_DISABLED()           ((RCC->AHB4LPENR & (RCC_AHB4LPENR_BDMA2LPEN))  == 0U)\n#define __HAL_RCC_BDMA_IS_CLK_SLEEP_DISABLED __HAL_RCC_BDMA2_IS_CLK_SLEEP_DISABLED  /* For API backward compatibility*/\n#else\n#define __HAL_RCC_BDMA_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_BDMALPEN))    == 0U)\n#endif /*BDMA2*/\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_IS_CLK_SLEEP_DISABLED()            ((RCC->AHB4LPENR & (RCC_AHB4LPENR_ADC3LPEN))    == 0U)\n#endif /*ADC3*/\n#define __HAL_RCC_BKPRAM_IS_CLK_SLEEP_DISABLED()          ((RCC->AHB4LPENR & (RCC_AHB4LPENR_BKPRAMLPEN))  == 0U)\n#if defined(RCC_AHB4LPENR_SRDSRAMLPEN)\n#define __HAL_RCC_SRDSRAM_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB4LPENR & (RCC_AHB4LPENR_SRDSRAMLPEN)) == 0U)\n#define __HAL_RCC_D3SRAM1_IS_CLK_SLEEP_DISABLED  __HAL_RCC_SRDSRAM_IS_CLK_SLEEP_DISABLED  /* For API backward compatibility*/\n#else\n#define __HAL_RCC_D3SRAM1_IS_CLK_SLEEP_DISABLED()         ((RCC->AHB4LPENR & (RCC_AHB4LPENR_D3SRAM1LPEN)) == 0U)\n#endif\n\n\n/** @brief  ENABLE or disable the APB3 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_CLK_SLEEP_ENABLE()           (RCC->APB3LPENR) |= (RCC_APB3LPENR_LTDCLPEN)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_CLK_SLEEP_ENABLE()            (RCC->APB3LPENR) |= (RCC_APB3LPENR_DSILPEN)\n#endif /*DSI*/\n#define __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE()          (RCC->APB3LPENR) |= (RCC_APB3LPENR_WWDG1LPEN)\n\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_CLK_SLEEP_DISABLE()           (RCC->APB3LPENR) &= ~ (RCC_APB3LPENR_LTDCLPEN)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_CLK_SLEEP_DISABLE()            (RCC->APB3LPENR) &= ~ (RCC_APB3LPENR_DSILPEN)\n#endif /*DSI*/\n#define __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE()          (RCC->APB3LPENR) &= ~ (RCC_APB3LPENR_WWDG1LPEN)\n\n\n/** @brief  Get the enable or disable status of the APB3 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_IS_CLK_SLEEP_ENABLED()            ((RCC->APB3LPENR & (RCC_APB3LPENR_LTDCLPEN))  != 0U)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_IS_CLK_SLEEP_ENABLED()             ((RCC->APB3LPENR & (RCC_APB3LPENR_DSILPEN))   != 0U)\n#endif /*DSI*/\n#define __HAL_RCC_WWDG1_IS_CLK_SLEEP_ENABLED()           ((RCC->APB3LPENR & (RCC_APB3LPENR_WWDG1LPEN)) != 0U)\n\n#if defined(LTDC)\n#define __HAL_RCC_LTDC_IS_CLK_SLEEP_DISABLED()           ((RCC->APB3LPENR & (RCC_APB3LPENR_LTDCLPEN))  == 0U)\n#endif /* LTDC */\n#if defined(DSI)\n#define __HAL_RCC_DSI_IS_CLK_SLEEP_DISABLED()            ((RCC->APB3LPENR & (RCC_APB3LPENR_DSILPEN))   == 0U)\n#endif /*DSI*/\n#define __HAL_RCC_WWDG1_IS_CLK_SLEEP_DISABLED()          ((RCC->APB3LPENR & (RCC_APB3LPENR_WWDG1LPEN)) == 0U)\n\n\n/** @brief  ENABLE or disable the APB1 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM2LPEN)\n#define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM3LPEN)\n#define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM4LPEN)\n#define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM5LPEN)\n#define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM6LPEN)\n#define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM7LPEN)\n#define __HAL_RCC_TIM12_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM12LPEN)\n#define __HAL_RCC_TIM13_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM13LPEN)\n#define __HAL_RCC_TIM14_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_TIM14LPEN)\n#define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE()         (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_LPTIM1LPEN)\n\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_WWDG2LPEN)\n#endif /*DUAL_CORE*/\n\n#define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_SPI2LPEN)\n#define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_SPI3LPEN)\n#define __HAL_RCC_SPDIFRX_CLK_SLEEP_ENABLE()        (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_SPDIFRXLPEN)\n#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE()         (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_USART2LPEN)\n#define __HAL_RCC_USART3_CLK_SLEEP_ENABLE()         (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_USART3LPEN)\n#define __HAL_RCC_UART4_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_UART4LPEN)\n#define __HAL_RCC_UART5_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_UART5LPEN)\n#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_I2C1LPEN)\n#define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_I2C2LPEN)\n#define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_I2C3LPEN)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_CLK_SLEEP_ENABLE()           (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_I2C5LPEN)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_CLK_SLEEP_ENABLE()            (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_CECLPEN)\n#define __HAL_RCC_DAC12_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_DAC12LPEN)\n#define __HAL_RCC_UART7_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_UART7LPEN)\n#define __HAL_RCC_UART8_CLK_SLEEP_ENABLE()          (RCC->APB1LLPENR) |= (RCC_APB1LLPENR_UART8LPEN)\n#define __HAL_RCC_CRS_CLK_SLEEP_ENABLE()            (RCC->APB1HLPENR) |= (RCC_APB1HLPENR_CRSLPEN)\n#define __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE()          (RCC->APB1HLPENR) |= (RCC_APB1HLPENR_SWPMILPEN)\n#define __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE()          (RCC->APB1HLPENR) |= (RCC_APB1HLPENR_OPAMPLPEN)\n#define __HAL_RCC_MDIOS_CLK_SLEEP_ENABLE()          (RCC->APB1HLPENR) |= (RCC_APB1HLPENR_MDIOSLPEN)\n#define __HAL_RCC_FDCAN_CLK_SLEEP_ENABLE()          (RCC->APB1HLPENR) |= (RCC_APB1HLPENR_FDCANLPEN)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_CLK_SLEEP_ENABLE()          (RCC->APB1HLPENR) |= (RCC_APB1HLPENR_TIM23LPEN)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_CLK_SLEEP_ENABLE()          (RCC->APB1HLPENR) |= (RCC_APB1HLPENR_TIM24LPEN)\n#endif /* TIM24 */\n\n\n#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM2LPEN)\n#define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM3LPEN)\n#define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM4LPEN)\n#define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM5LPEN)\n#define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM6LPEN)\n#define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM7LPEN)\n#define __HAL_RCC_TIM12_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM12LPEN)\n#define __HAL_RCC_TIM13_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM13LPEN)\n#define __HAL_RCC_TIM14_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM14LPEN)\n#define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE()         (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_LPTIM1LPEN)\n\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_WWDG2LPEN)\n#endif /*DUAL_CORE*/\n\n#define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPI2LPEN)\n#define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPI3LPEN)\n#define __HAL_RCC_SPDIFRX_CLK_SLEEP_DISABLE()        (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPDIFRXLPEN)\n#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE()         (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_USART2LPEN)\n#define __HAL_RCC_USART3_CLK_SLEEP_DISABLE()         (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_USART3LPEN)\n#define __HAL_RCC_UART4_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART4LPEN)\n#define __HAL_RCC_UART5_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART5LPEN)\n#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C1LPEN)\n#define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C2LPEN)\n#define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C3LPEN)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_CLK_SLEEP_DISABLE()           (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C5LPEN)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_CLK_SLEEP_DISABLE()            (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_CECLPEN)\n#define __HAL_RCC_DAC12_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_DAC12LPEN)\n#define __HAL_RCC_UART7_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART7LPEN)\n#define __HAL_RCC_UART8_CLK_SLEEP_DISABLE()          (RCC->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART8LPEN)\n#define __HAL_RCC_CRS_CLK_SLEEP_DISABLE()            (RCC->APB1HLPENR) &= ~ (RCC_APB1HLPENR_CRSLPEN)\n#define __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE()          (RCC->APB1HLPENR) &= ~ (RCC_APB1HLPENR_SWPMILPEN)\n#define __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE()          (RCC->APB1HLPENR) &= ~ (RCC_APB1HLPENR_OPAMPLPEN)\n#define __HAL_RCC_MDIOS_CLK_SLEEP_DISABLE()          (RCC->APB1HLPENR) &= ~ (RCC_APB1HLPENR_MDIOSLPEN)\n#define __HAL_RCC_FDCAN_CLK_SLEEP_DISABLE()          (RCC->APB1HLPENR) &= ~ (RCC_APB1HLPENR_FDCANLPEN)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_CLK_SLEEP_DISABLE()          (RCC->APB1HLPENR) &= ~ (RCC_APB1HLPENR_TIM23LPEN)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_CLK_SLEEP_DISABLE()          (RCC->APB1HLPENR) &= ~ (RCC_APB1HLPENR_TIM24LPEN)\n#endif /* TIM24 */\n\n\n/** @brief  Get the enable or disable status of the APB1 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM2LPEN))    != 0U)\n#define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM3LPEN))    != 0U)\n#define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM4LPEN))    != 0U)\n#define __HAL_RCC_TIM5_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM5LPEN))    != 0U)\n#define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM6LPEN))    != 0U)\n#define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM7LPEN))    != 0U)\n#define __HAL_RCC_TIM12_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM12LPEN))   != 0U)\n#define __HAL_RCC_TIM13_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM13LPEN))   != 0U)\n#define __HAL_RCC_TIM14_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM14LPEN))   != 0U)\n#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_LPTIM1LPEN))  != 0U)\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_WWDG2LPEN))   != 0U)\n#endif /*DUAL_CORE*/\n#define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_SPI2LPEN))    != 0U)\n#define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_SPI3LPEN))    != 0U)\n#define __HAL_RCC_SPDIFRX_IS_CLK_SLEEP_ENABLED()         ((RCC->APB1LLPENR & (RCC_APB1LLPENR_SPDIFRXLPEN)) != 0U)\n#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_USART2LPEN))  != 0U)\n#define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_USART3LPEN))  != 0U)\n#define __HAL_RCC_UART4_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART4LPEN))   != 0U)\n#define __HAL_RCC_UART5_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART5LPEN))   != 0U)\n#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C1LPEN))    != 0U)\n#define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C2LPEN))    != 0U)\n#define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C3LPEN))    != 0U)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_IS_CLK_SLEEP_ENABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C5LPEN))    != 0U)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_IS_CLK_SLEEP_ENABLED()             ((RCC->APB1LLPENR & (RCC_APB1LLPENR_CECLPEN))     != 0U)\n#define __HAL_RCC_DAC12_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_DAC12LPEN))   != 0U)\n#define __HAL_RCC_UART7_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART7LPEN))   != 0U)\n#define __HAL_RCC_UART8_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART8LPEN))   != 0U)\n#define __HAL_RCC_CRS_IS_CLK_SLEEP_ENABLED()             ((RCC->APB1HLPENR & (RCC_APB1HLPENR_CRSLPEN))     != 0U)\n#define __HAL_RCC_SWPMI1_IS_CLK_SLEEP_ENABLED()          ((RCC->APB1HLPENR & (RCC_APB1HLPENR_SWPMILPEN))   != 0U)\n#define __HAL_RCC_OPAMP_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1HLPENR & (RCC_APB1HLPENR_OPAMPLPEN))   != 0U)\n#define __HAL_RCC_MDIOS_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1HLPENR & (RCC_APB1HLPENR_MDIOSLPEN))   != 0U)\n#define __HAL_RCC_FDCAN_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1HLPENR & (RCC_APB1HLPENR_FDCANLPEN))   != 0U)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1HLPENR & (RCC_APB1HLPENR_TIM23LPEN))   != 0U)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_IS_CLK_SLEEP_ENABLED()           ((RCC->APB1HLPENR & (RCC_APB1HLPENR_TIM24LPEN))   != 0U)\n#endif /* TIM24 */\n\n#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM2LPEN))    == 0U)\n#define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM3LPEN))    == 0U)\n#define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM4LPEN))    == 0U)\n#define __HAL_RCC_TIM5_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM5LPEN))    == 0U)\n#define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM6LPEN))    == 0U)\n#define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM7LPEN))    == 0U)\n#define __HAL_RCC_TIM12_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM12LPEN))   == 0U)\n#define __HAL_RCC_TIM13_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM13LPEN))   == 0U)\n#define __HAL_RCC_TIM14_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_TIM14LPEN))   == 0U)\n#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED()         ((RCC->APB1LLPENR & (RCC_APB1LLPENR_LPTIM1LPEN))  == 0U)\n#if defined(DUAL_CORE)\n#define __HAL_RCC_WWDG2_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_WWDG2LPEN))   == 0U)\n#endif /*DUAL_CORE*/\n#define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_SPI2LPEN))    == 0U)\n#define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_SPI3LPEN))    == 0U)\n#define __HAL_RCC_SPDIFRX_IS_CLK_SLEEP_DISABLED()        ((RCC->APB1LLPENR & (RCC_APB1LLPENR_SPDIFRXLPEN)) == 0U)\n#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED()         ((RCC->APB1LLPENR & (RCC_APB1LLPENR_USART2LPEN))  == 0U)\n#define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED()         ((RCC->APB1LLPENR & (RCC_APB1LLPENR_USART3LPEN))  == 0U)\n#define __HAL_RCC_UART4_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART4LPEN))   == 0U)\n#define __HAL_RCC_UART5_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART5LPEN))   == 0U)\n#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C1LPEN))    == 0U)\n#define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C2LPEN))    == 0U)\n#define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C3LPEN))    == 0U)\n#if defined(I2C5)\n#define __HAL_RCC_I2C5_IS_CLK_SLEEP_DISABLED()           ((RCC->APB1LLPENR & (RCC_APB1LLPENR_I2C5LPEN))    == 0U)\n#endif /* I2C5 */\n#define __HAL_RCC_CEC_IS_CLK_SLEEP_DISABLED()            ((RCC->APB1LLPENR & (RCC_APB1LLPENR_CECLPEN))     == 0U)\n#define __HAL_RCC_DAC12_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_DAC12LPEN))   == 0U)\n#define __HAL_RCC_UART7_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART7LPEN))   == 0U)\n#define __HAL_RCC_UART8_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1LLPENR & (RCC_APB1LLPENR_UART8LPEN))   == 0U)\n#define __HAL_RCC_CRS_IS_CLK_SLEEP_DISABLED()            ((RCC->APB1HLPENR & (RCC_APB1HLPENR_CRSLPEN))     == 0U)\n#define __HAL_RCC_SWPMI1_IS_CLK_SLEEP_DISABLED()         ((RCC->APB1HLPENR & (RCC_APB1HLPENR_SWPMILPEN))   == 0U)\n#define __HAL_RCC_OPAMP_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1HLPENR & (RCC_APB1HLPENR_OPAMPLPEN))   == 0U)\n#define __HAL_RCC_MDIOS_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1HLPENR & (RCC_APB1HLPENR_MDIOSLPEN))   == 0U)\n#define __HAL_RCC_FDCAN_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1HLPENR & (RCC_APB1HLPENR_FDCANLPEN))   == 0U)\n#if defined(TIM23)\n#define __HAL_RCC_TIM23_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1HLPENR & (RCC_APB1HLPENR_TIM23LPEN))   == 0U)\n#endif /* TIM23 */\n#if defined(TIM24)\n#define __HAL_RCC_TIM24_IS_CLK_SLEEP_DISABLED()          ((RCC->APB1HLPENR & (RCC_APB1HLPENR_TIM24LPEN))   == 0U)\n#endif /* TIM24 */\n\n\n/** @brief  ENABLE or disable the APB2 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_TIM1LPEN)\n#define __HAL_RCC_TIM8_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_TIM8LPEN)\n#define __HAL_RCC_USART1_CLK_SLEEP_ENABLE()         (RCC->APB2LPENR) |= (RCC_APB2LPENR_USART1LPEN)\n#define __HAL_RCC_USART6_CLK_SLEEP_ENABLE()         (RCC->APB2LPENR) |= (RCC_APB2LPENR_USART6LPEN)\n#if defined(UART9)\n#define __HAL_RCC_UART9_CLK_SLEEP_ENABLE()          (RCC->APB2LPENR) |= (RCC_APB2LPENR_UART9LPEN)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_CLK_SLEEP_ENABLE()        (RCC->APB2LPENR) |= (RCC_APB2LPENR_USART10LPEN)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_SPI1LPEN)\n#define __HAL_RCC_SPI4_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_SPI4LPEN)\n#define __HAL_RCC_TIM15_CLK_SLEEP_ENABLE()          (RCC->APB2LPENR) |= (RCC_APB2LPENR_TIM15LPEN)\n#define __HAL_RCC_TIM16_CLK_SLEEP_ENABLE()          (RCC->APB2LPENR) |= (RCC_APB2LPENR_TIM16LPEN)\n#define __HAL_RCC_TIM17_CLK_SLEEP_ENABLE()          (RCC->APB2LPENR) |= (RCC_APB2LPENR_TIM17LPEN)\n#define __HAL_RCC_SPI5_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_SPI5LPEN)\n#define __HAL_RCC_SAI1_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_SAI1LPEN)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_SAI2LPEN)\n#endif /* SAI2 */\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_CLK_SLEEP_ENABLE()           (RCC->APB2LPENR) |= (RCC_APB2LPENR_SAI3LPEN)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE()         (RCC->APB2LPENR) |= (RCC_APB2LPENR_DFSDM1LPEN)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_CLK_SLEEP_ENABLE()         (RCC->APB2LPENR) |= (RCC_APB2LPENR_HRTIMLPEN)\n#endif /*HRTIM1*/\n\n#define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM1LPEN)\n#define __HAL_RCC_TIM8_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM8LPEN)\n#define __HAL_RCC_USART1_CLK_SLEEP_DISABLE()         (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_USART1LPEN)\n#define __HAL_RCC_USART6_CLK_SLEEP_DISABLE()         (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_USART6LPEN)\n#if defined(UART9)\n#define __HAL_RCC_UART9_CLK_SLEEP_DISABLE()          (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_UART9LPEN)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_CLK_SLEEP_DISABLE()         (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_USART10LPEN)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI1LPEN)\n#define __HAL_RCC_SPI4_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI4LPEN)\n#define __HAL_RCC_TIM15_CLK_SLEEP_DISABLE()          (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM15LPEN)\n#define __HAL_RCC_TIM16_CLK_SLEEP_DISABLE()          (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM16LPEN)\n#define __HAL_RCC_TIM17_CLK_SLEEP_DISABLE()          (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM17LPEN)\n#define __HAL_RCC_SPI5_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI5LPEN)\n#define __HAL_RCC_SAI1_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI1LPEN)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI2LPEN)\n#endif /* SAI2 */\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_CLK_SLEEP_DISABLE()           (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI3LPEN)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE()         (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_DFSDM1LPEN)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_CLK_SLEEP_DISABLE()         (RCC->APB2LPENR) &= ~ (RCC_APB2LPENR_HRTIMLPEN)\n#endif /*HRTIM1*/\n\n\n/** @brief  Get the enable or disable status of the APB2 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#define __HAL_RCC_TIM1_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM1LPEN))   != 0U)\n#define __HAL_RCC_TIM8_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM8LPEN))   != 0U)\n#define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) != 0U)\n#define __HAL_RCC_USART6_IS_CLK_SLEEP_ENABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_USART6LPEN)) != 0U)\n#if defined(UART9)\n#define __HAL_RCC_UART9_IS_CLK_SLEEP_ENABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_UART9LPEN)) != 0U)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_IS_CLK_SLEEP_ENABLED()         ((RCC->APB2LPENR & (RCC_APB2LPENR_USART10LPEN)) != 0U)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN))   != 0U)\n#define __HAL_RCC_SPI4_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI4LPEN))   != 0U)\n#define __HAL_RCC_TIM15_IS_CLK_SLEEP_ENABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM15LPEN))  != 0U)\n#define __HAL_RCC_TIM16_IS_CLK_SLEEP_ENABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM16LPEN))  != 0U)\n#define __HAL_RCC_TIM17_IS_CLK_SLEEP_ENABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM17LPEN))  != 0U)\n#define __HAL_RCC_SPI5_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI5LPEN))   != 0U)\n#define __HAL_RCC_SAI1_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI1LPEN))   != 0U)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI2LPEN))   != 0U)\n#endif /* SAI2 */\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_IS_CLK_SLEEP_ENABLED()            ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI3LPEN))   != 0U)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_DFSDM1LPEN)) != 0U)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_IS_CLK_SLEEP_ENABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_HRTIMLPEN))  != 0U)\n#endif /*HRTIM1*/\n\n#define __HAL_RCC_TIM1_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM1LPEN))   == 0U)\n#define __HAL_RCC_TIM8_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM8LPEN))   == 0U)\n#define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED()         ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) == 0U)\n#define __HAL_RCC_USART6_IS_CLK_SLEEP_DISABLED()         ((RCC->APB2LPENR & (RCC_APB2LPENR_USART6LPEN)) == 0U)\n#if defined(UART9)\n#define __HAL_RCC_USART9_IS_CLK_SLEEP_DISABLED()         ((RCC->APB2LPENR & (RCC_APB2LPENR_USART9LPEN)) == 0U)\n#endif /*UART9*/\n#if defined(USART10)\n#define __HAL_RCC_USART10_IS_CLK_SLEEP_DISABLED()        ((RCC->APB2LPENR & (RCC_APB2LPENR_USART10LPEN)) == 0U)\n#endif /*USART10*/\n#define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN))   == 0U)\n#define __HAL_RCC_SPI4_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI4LPEN))   == 0U)\n#define __HAL_RCC_TIM15_IS_CLK_SLEEP_DISABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM15LPEN))  == 0U)\n#define __HAL_RCC_TIM16_IS_CLK_SLEEP_DISABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM16LPEN))  == 0U)\n#define __HAL_RCC_TIM17_IS_CLK_SLEEP_DISABLED()          ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM17LPEN))  == 0U)\n#define __HAL_RCC_SPI5_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI5LPEN))   == 0U)\n#define __HAL_RCC_SAI1_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI1LPEN))   == 0U)\n#if defined(SAI2)\n#define __HAL_RCC_SAI2_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI2LPEN))   == 0U)\n#endif /* SAI2 */\n#if defined(SAI3)\n#define __HAL_RCC_SAI3_IS_CLK_SLEEP_DISABLED()           ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI3LPEN))   == 0U)\n#endif /*SAI3*/\n#define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED()         ((RCC->APB2LPENR & (RCC_APB2LPENR_DFSDM1LPEN)) == 0U)\n#if defined(HRTIM1)\n#define __HAL_RCC_HRTIM1_IS_CLK_SLEEP_DISABLED()         ((RCC->APB2LPENR & (RCC_APB2LPENR_HRTIMLPEN))  == 0U)\n#endif /*HRTIM1*/\n\n/** @brief  ENABLE or disable the APB4 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_SYSCFGLPEN)\n#define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE()          (RCC->APB4LPENR) |= (RCC_APB4LPENR_LPUART1LPEN)\n#define __HAL_RCC_SPI6_CLK_SLEEP_ENABLE()             (RCC->APB4LPENR) |= (RCC_APB4LPENR_SPI6LPEN)\n#define __HAL_RCC_I2C4_CLK_SLEEP_ENABLE()             (RCC->APB4LPENR) |= (RCC_APB4LPENR_I2C4LPEN)\n#define __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_LPTIM2LPEN)\n#define __HAL_RCC_LPTIM3_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_LPTIM3LPEN)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_LPTIM4LPEN)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_LPTIM5LPEN)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_DAC2LPEN)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_COMP12LPEN)\n#define __HAL_RCC_VREF_CLK_SLEEP_ENABLE()             (RCC->APB4LPENR) |= (RCC_APB4LPENR_VREFLPEN)\n#define __HAL_RCC_RTC_CLK_SLEEP_ENABLE()              (RCC->APB4LPENR) |= (RCC_APB4LPENR_RTCAPBLPEN)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_CLK_SLEEP_ENABLE()             (RCC->APB4LPENR) |= (RCC_APB4LPENR_SAI4LPEN)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_CLK_SLEEP_ENABLE()              (RCC->APB4LPENR) |= (RCC_APB4LPENR_DTSLPEN)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_CLK_SLEEP_ENABLE()           (RCC->APB4LPENR) |= (RCC_APB4LPENR_DFSDM2LPEN)\n#endif /*DFSDM2*/\n\n#define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE()           (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_SYSCFGLPEN)\n#define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE()          (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_LPUART1LPEN)\n#define __HAL_RCC_SPI6_CLK_SLEEP_DISABLE()             (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_SPI6LPEN)\n#define __HAL_RCC_I2C4_CLK_SLEEP_DISABLE()             (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_I2C4LPEN)\n#define __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE()           (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM2LPEN)\n#define __HAL_RCC_LPTIM3_CLK_SLEEP_DISABLE()           (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM3LPEN)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_CLK_SLEEP_DISABLE()           (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM4LPEN)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_CLK_SLEEP_DISABLE()           (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM5LPEN)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_CLK_SLEEP_DISABLE()             (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_DAC2LPEN)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_CLK_SLEEP_DISABLE()           (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_COMP12LPEN)\n#define __HAL_RCC_VREF_CLK_SLEEP_DISABLE()             (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_VREFLPEN)\n#define __HAL_RCC_RTC_CLK_SLEEP_DISABLE()              (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_RTCAPBLPEN)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_CLK_SLEEP_DISABLE()             (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_SAI4LPEN)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_CLK_SLEEP_DISABLE()              (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_DTSLPEN)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_CLK_SLEEP_DISABLE()          (RCC->APB4LPENR) &= ~ (RCC_APB4LPENR_DFSDM2LPEN)\n#endif /*DFSDM2*/\n\n\n/** @brief  Get the enable or disable status of the APB4 peripheral clock during Low Poser (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED()            ((RCC->APB4LPENR & (RCC_APB4LPENR_SYSCFGLPEN))  != 0U)\n#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_LPUART1LPEN)) != 0U)\n#define __HAL_RCC_SPI6_IS_CLK_SLEEP_ENABLED()              ((RCC->APB4LPENR & (RCC_APB4LPENR_SPI6LPEN))    != 0U)\n#define __HAL_RCC_I2C4_IS_CLK_SLEEP_ENABLED()              ((RCC->APB4LPENR & (RCC_APB4LPENR_I2C4LPEN))    != 0U)\n#define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_ENABLED()            ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM2LPEN))  != 0U)\n#define __HAL_RCC_LPTIM3_IS_CLK_SLEEP_ENABLED()            ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM3LPEN))  != 0U)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_IS_CLK_SLEEP_ENABLED()            ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM4LPEN))  != 0U)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_IS_CLK_SLEEP_ENABLED()            ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM5LPEN))  != 0U)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_IS_CLK_SLEEP_ENABLED()              ((RCC->APB4LPENR & (RCC_APB4LPENR_DAC2LPEN))  != 0U)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_IS_CLK_SLEEP_ENABLED()            ((RCC->APB4LPENR & (RCC_APB4LPENR_COMP12LPEN))  != 0U)\n#define __HAL_RCC_VREF_IS_CLK_SLEEP_ENABLED()              ((RCC->APB4LPENR & (RCC_APB4LPENR_VREFLPEN))    != 0U)\n#define __HAL_RCC_RTC_IS_CLK_SLEEP_ENABLED()               ((RCC->APB4LPENR & (RCC_APB4LPENR_RTCAPBLPEN))  != 0U)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_IS_CLK_SLEEP_ENABLED()              ((RCC->APB4LPENR & (RCC_APB4LPENR_SAI4LPEN))    != 0U)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_IS_CLK_SLEEP_ENABLED()               ((RCC->APB4LPENR & (RCC_APB4LPENR_DTSLPEN))    != 0U)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_IS_CLK_SLEEP_ENABLED()            ((RCC->APB4LPENR & (RCC_APB4LPENR_DFSDM2LPEN)) != 0U)\n#endif /*DFSDM2*/\n\n#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_SYSCFGLPEN))  == 0U)\n#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED()          ((RCC->APB4LPENR & (RCC_APB4LPENR_LPUART1LPEN)) == 0U)\n#define __HAL_RCC_SPI6_IS_CLK_SLEEP_DISABLED()             ((RCC->APB4LPENR & (RCC_APB4LPENR_SPI6LPEN))    == 0U)\n#define __HAL_RCC_I2C4_IS_CLK_SLEEP_DISABLED()             ((RCC->APB4LPENR & (RCC_APB4LPENR_I2C4LPEN))    == 0U)\n#define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_DISABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM2LPEN))  == 0U)\n#define __HAL_RCC_LPTIM3_IS_CLK_SLEEP_DISABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM3LPEN))  == 0U)\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_IS_CLK_SLEEP_DISABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM4LPEN))  == 0U)\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_IS_CLK_SLEEP_DISABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_LPTIM5LPEN))  == 0U)\n#endif /*LPTIM5*/\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_IS_CLK_SLEEP_DISABLED()             ((RCC->APB4LPENR & (RCC_APB4LPENR_DAC2LPEN))  == 0U)\n#endif /*DAC2*/\n#define __HAL_RCC_COMP12_IS_CLK_SLEEP_DISABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_COMP12LPEN))  == 0U)\n#define __HAL_RCC_VREF_IS_CLK_SLEEP_DISABLED()             ((RCC->APB4LPENR & (RCC_APB4LPENR_VREFLPEN))    == 0U)\n#define __HAL_RCC_RTC_IS_CLK_SLEEP_DISABLED()              ((RCC->APB4LPENR & (RCC_APB4LPENR_RTCAPBLPEN))  == 0U)\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_IS_CLK_SLEEP_DISABLED()             ((RCC->APB4LPENR & (RCC_APB4LPENR_SAI4LPEN))    == 0U)\n#endif /*SAI4*/\n#if defined(DTS)\n#define __HAL_RCC_DTS_IS_CLK_SLEEP_DISABLED()              ((RCC->APB4LPENR & (RCC_APB4LPENR_DTSLPEN))    == 0U)\n#endif /*DTS*/\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_IS_CLK_SLEEP_DISABLED()           ((RCC->APB4LPENR & (RCC_APB4LPENR_DFSDM2LPEN)) == 0U)\n#endif /*DFSDM2*/\n\n\n#if defined(DUAL_CORE)\n\n/** @brief  Enable or disable the RCC_C1 AHB3 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n#define __HAL_RCC_C1_MDMA_CLK_SLEEP_ENABLE()            (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_MDMALPEN))\n#define __HAL_RCC_C1_DMA2D_CLK_SLEEP_ENABLE()           (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_DMA2DLPEN))\n#define __HAL_RCC_C1_JPGDEC_CLK_SLEEP_ENABLE()          (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_JPGDECLPEN))\n#define __HAL_RCC_C1_FLASH_CLK_SLEEP_ENABLE()           (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_FLASHLPEN))\n#define __HAL_RCC_C1_FMC_CLK_SLEEP_ENABLE()             (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_FMCLPEN))\n#define __HAL_RCC_C1_QSPI_CLK_SLEEP_ENABLE()            (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_QSPILPEN))\n#define __HAL_RCC_C1_SDMMC1_CLK_SLEEP_ENABLE()          (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_SDMMC1LPEN))\n#define __HAL_RCC_C1_DTCM1_CLK_SLEEP_ENABLE()           (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_DTCM1LPEN))\n#define __HAL_RCC_C1_DTCM2_CLK_SLEEP_ENABLE()           (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_DTCM2LPEN))\n#define __HAL_RCC_C1_ITCM_CLK_SLEEP_ENABLE()            (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_ITCMLPEN))\n#define __HAL_RCC_C1_D1SRAM1_CLK_SLEEP_ENABLE()         (RCC_C1->AHB3LPENR |= (RCC_AHB3LPENR_AXISRAMLPEN))\n\n\n#define __HAL_RCC_C1_MDMA_CLK_SLEEP_DISABLE()            (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_MDMALPEN))\n#define __HAL_RCC_C1_DMA2D_CLK_SLEEP_DISABLE()           (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_DMA2DLPEN))\n#define __HAL_RCC_C1_JPGDEC_CLK_SLEEP_DISABLE()          (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_JPGDECLPEN))\n#define __HAL_RCC_C1_FLASH_CLK_SLEEP_DISABLE()           (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_FLASHLPEN))\n#define __HAL_RCC_C1_FMC_CLK_SLEEP_DISABLE()             (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_FMCLPEN))\n#define __HAL_RCC_C1_QSPI_CLK_SLEEP_DISABLE()            (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_QSPILPEN))\n#define __HAL_RCC_C1_SDMMC1_CLK_SLEEP_DISABLE()          (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_SDMMC1LPEN))\n#define __HAL_RCC_C1_DTCM1_CLK_SLEEP_DISABLE()           (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_DTCM1LPEN))\n#define __HAL_RCC_C1_DTCM2_CLK_SLEEP_DISABLE()           (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_DTCM2LPEN))\n#define __HAL_RCC_C1_ITCM_CLK_SLEEP_DISABLE()            (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_ITCMLPEN))\n#define __HAL_RCC_C1_D1SRAM1_CLK_SLEEP_DISABLE()         (RCC_C1->AHB3LPENR &= ~ (RCC_AHB3LPENR_AXISRAMLPEN))\n\n\n\n/** @brief  ENABLE or disable the AHB1 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C1_DMA1_CLK_SLEEP_ENABLE()             (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_DMA1LPEN))\n#define __HAL_RCC_C1_DMA2_CLK_SLEEP_ENABLE()             (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_DMA2LPEN))\n#define __HAL_RCC_C1_ADC12_CLK_SLEEP_ENABLE()            (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_ADC12LPEN))\n#define __HAL_RCC_C1_ETH1MAC_CLK_SLEEP_ENABLE()          (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_ETH1MACLPEN))\n#define __HAL_RCC_C1_ETH1TX_CLK_SLEEP_ENABLE()           (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_ETH1TXLPEN))\n#define __HAL_RCC_C1_ETH1RX_CLK_SLEEP_ENABLE()           (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_ETH1RXLPEN))\n#define __HAL_RCC_C1_USB1_OTG_HS_CLK_SLEEP_ENABLE()      (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_USB1OTGHSLPEN))\n#define __HAL_RCC_C1_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE() (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_USB1OTGHSULPILPEN))\n#define __HAL_RCC_C1_USB2_OTG_FS_CLK_SLEEP_ENABLE()      (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_USB2OTGHSLPEN))\n#define __HAL_RCC_C1_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE() (RCC_C1->AHB1LPENR |= (RCC_AHB1LPENR_USB2OTGHSULPILPEN))\n\n#define __HAL_RCC_C1_DMA1_CLK_SLEEP_DISABLE()             (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_DMA1LPEN))\n#define __HAL_RCC_C1_DMA2_CLK_SLEEP_DISABLE()             (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_DMA2LPEN))\n#define __HAL_RCC_C1_ADC12_CLK_SLEEP_DISABLE()            (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_ADC12LPEN))\n#define __HAL_RCC_C1_ETH1MAC_CLK_SLEEP_DISABLE()          (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1MACLPEN))\n#define __HAL_RCC_C1_ETH1TX_CLK_SLEEP_DISABLE()           (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1TXLPEN))\n#define __HAL_RCC_C1_ETH1RX_CLK_SLEEP_DISABLE()           (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1RXLPEN))\n#define __HAL_RCC_C1_USB1_OTG_HS_CLK_SLEEP_DISABLE()      (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB1OTGHSLPEN))\n#define __HAL_RCC_C1_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE() (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB1OTGHSULPILPEN))\n#define __HAL_RCC_C1_USB2_OTG_FS_CLK_SLEEP_DISABLE()      (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB2OTGHSLPEN))\n#define __HAL_RCC_C1_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE() (RCC_C1->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB2OTGHSULPILPEN))\n\n/** @brief  ENABLE or disable the AHB2 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C1_DCMI_CLK_SLEEP_ENABLE()             (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_DCMILPEN))\n#if defined(CRYP)\n#define __HAL_RCC_C1_CRYP_CLK_SLEEP_ENABLE()             (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_CRYPLPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_C1_HASH_CLK_SLEEP_ENABLE()             (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_HASHLPEN))\n#endif /* HASH */\n#define __HAL_RCC_C1_RNG_CLK_SLEEP_ENABLE()              (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_RNGLPEN))\n#define __HAL_RCC_C1_SDMMC2_CLK_SLEEP_ENABLE()           (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_SDMMC2LPEN))\n#define __HAL_RCC_C1_D2SRAM1_CLK_SLEEP_ENABLE()          (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM1LPEN))\n#define __HAL_RCC_C1_D2SRAM2_CLK_SLEEP_ENABLE()          (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM2LPEN))\n#define __HAL_RCC_C1_D2SRAM3_CLK_SLEEP_ENABLE()          (RCC_C1->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM3LPEN))\n\n#define __HAL_RCC_C1_DCMI_CLK_SLEEP_DISABLE()             (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_DCMILPEN))\n#if defined(CRYP)\n#define __HAL_RCC_C1_CRYP_CLK_SLEEP_DISABLE()             (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_CRYPLPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_C1_HASH_CLK_SLEEP_DISABLE()             (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_HASHLPEN))\n#endif /* HASH */\n#define __HAL_RCC_C1_RNG_CLK_SLEEP_DISABLE()              (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_RNGLPEN))\n#define __HAL_RCC_C1_SDMMC2_CLK_SLEEP_DISABLE()           (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_SDMMC2LPEN))\n#define __HAL_RCC_C1_D2SRAM1_CLK_SLEEP_DISABLE()          (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM1LPEN))\n#define __HAL_RCC_C1_D2SRAM2_CLK_SLEEP_DISABLE()          (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM2LPEN))\n#define __HAL_RCC_C1_D2SRAM3_CLK_SLEEP_DISABLE()          (RCC_C1->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM3LPEN))\n\n/** @brief  ENABLE or disable the AHB4 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C1_GPIOA_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOALPEN)\n#define __HAL_RCC_C1_GPIOB_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOBLPEN)\n#define __HAL_RCC_C1_GPIOC_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOCLPEN)\n#define __HAL_RCC_C1_GPIOD_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIODLPEN)\n#define __HAL_RCC_C1_GPIOE_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOELPEN)\n#define __HAL_RCC_C1_GPIOF_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOFLPEN)\n#define __HAL_RCC_C1_GPIOG_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOGLPEN)\n#define __HAL_RCC_C1_GPIOH_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOHLPEN)\n#define __HAL_RCC_C1_GPIOI_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOILPEN)\n#define __HAL_RCC_C1_GPIOJ_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOJLPEN)\n#define __HAL_RCC_C1_GPIOK_CLK_SLEEP_ENABLE()           (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOKLPEN)\n#define __HAL_RCC_C1_CRC_CLK_SLEEP_ENABLE()             (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_C1_BDMA_CLK_SLEEP_ENABLE()            (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_BDMALPEN)\n#define __HAL_RCC_C1_ADC3_CLK_SLEEP_ENABLE()            (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_ADC3LPEN)\n#define __HAL_RCC_C1_BKPRAM_CLK_SLEEP_ENABLE()          (RCC_C1->AHB4LPENR) |= (RCC_AHB4LPENR_BKPRAMLPEN)\n#define __HAL_RCC_C1_D3SRAM1_CLK_SLEEP_ENABLE()         (RCC_C1->AHB4LPENR  |= (RCC_AHB4LPENR_D3SRAM1LPEN))\n\n#define __HAL_RCC_C1_GPIOA_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOALPEN)\n#define __HAL_RCC_C1_GPIOB_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOBLPEN)\n#define __HAL_RCC_C1_GPIOC_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOCLPEN)\n#define __HAL_RCC_C1_GPIOD_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIODLPEN)\n#define __HAL_RCC_C1_GPIOE_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOELPEN)\n#define __HAL_RCC_C1_GPIOF_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOFLPEN)\n#define __HAL_RCC_C1_GPIOG_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOGLPEN)\n#define __HAL_RCC_C1_GPIOH_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOHLPEN)\n#define __HAL_RCC_C1_GPIOI_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOILPEN)\n#define __HAL_RCC_C1_GPIOJ_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOJLPEN)\n#define __HAL_RCC_C1_GPIOK_CLK_SLEEP_DISABLE()           (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOKLPEN)\n#define __HAL_RCC_C1_CRC_CLK_SLEEP_DISABLE()             (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_C1_BDMA_CLK_SLEEP_DISABLE()            (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_BDMALPEN)\n#define __HAL_RCC_C1_ADC3_CLK_SLEEP_DISABLE()            (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_ADC3LPEN)\n#define __HAL_RCC_C1_BKPRAM_CLK_SLEEP_DISABLE()          (RCC_C1->AHB4LPENR) &= ~ (RCC_AHB4LPENR_BKPRAMLPEN)\n#define __HAL_RCC_C1_D3SRAM1_CLK_SLEEP_DISABLE()         (RCC_C1->AHB4LPENR  &= ~ (RCC_AHB4LPENR_D3SRAM1LPEN))\n\n/** @brief  ENABLE or disable the APB3 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C1_LTDC_CLK_SLEEP_ENABLE()           (RCC_C1->APB3LPENR) |= (RCC_APB3LPENR_LTDCLPEN)\n#define __HAL_RCC_C1_DSI_CLK_SLEEP_ENABLE()            (RCC_C1->APB3LPENR) |= (RCC_APB3LPENR_DSILPEN)\n#define __HAL_RCC_C1_WWDG1_CLK_SLEEP_ENABLE()          (RCC_C1->APB3LPENR) |= (RCC_APB3LPENR_WWDG1LPEN)\n\n#define __HAL_RCC_C1_LTDC_CLK_SLEEP_DISABLE()           (RCC_C1->APB3LPENR) &= ~ (RCC_APB3LPENR_LTDCLPEN)\n#define __HAL_RCC_C1_DSI_CLK_SLEEP_DISABLE()            (RCC_C1->APB3LPENR) &= ~ (RCC_APB3LPENR_DSILPEN)\n#define __HAL_RCC_C1_WWDG1_CLK_SLEEP_DISABLE()          (RCC_C1->APB3LPENR) &= ~ (RCC_APB3LPENR_WWDG1LPEN)\n\n/** @brief  ENABLE or disable the APB1 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C1_TIM2_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM2LPEN)\n#define __HAL_RCC_C1_TIM3_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM3LPEN)\n#define __HAL_RCC_C1_TIM4_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM4LPEN)\n#define __HAL_RCC_C1_TIM5_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM5LPEN)\n#define __HAL_RCC_C1_TIM6_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM6LPEN)\n#define __HAL_RCC_C1_TIM7_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM7LPEN)\n#define __HAL_RCC_C1_TIM12_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM12LPEN)\n#define __HAL_RCC_C1_TIM13_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM13LPEN)\n#define __HAL_RCC_C1_TIM14_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_TIM14LPEN)\n#define __HAL_RCC_C1_LPTIM1_CLK_SLEEP_ENABLE()         (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_LPTIM1LPEN)\n#define __HAL_RCC_C1_WWDG2_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_WWDG2LPEN)\n#define __HAL_RCC_C1_SPI2_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_SPI2LPEN)\n#define __HAL_RCC_C1_SPI3_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_SPI3LPEN)\n#define __HAL_RCC_C1_SPDIFRX_CLK_SLEEP_ENABLE()        (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_SPDIFRXLPEN)\n#define __HAL_RCC_C1_USART2_CLK_SLEEP_ENABLE()         (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_USART2LPEN)\n#define __HAL_RCC_C1_USART3_CLK_SLEEP_ENABLE()         (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_USART3LPEN)\n#define __HAL_RCC_C1_UART4_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_UART4LPEN)\n#define __HAL_RCC_C1_UART5_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_UART5LPEN)\n#define __HAL_RCC_C1_I2C1_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_I2C1LPEN)\n#define __HAL_RCC_C1_I2C2_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_I2C2LPEN)\n#define __HAL_RCC_C1_I2C3_CLK_SLEEP_ENABLE()           (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_I2C3LPEN)\n#define __HAL_RCC_C1_CEC_CLK_SLEEP_ENABLE()            (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_CECLPEN)\n#define __HAL_RCC_C1_DAC12_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_DAC12LPEN)\n#define __HAL_RCC_C1_UART7_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_UART7LPEN)\n#define __HAL_RCC_C1_UART8_CLK_SLEEP_ENABLE()          (RCC_C1->APB1LLPENR) |= (RCC_APB1LLPENR_UART8LPEN)\n#define __HAL_RCC_C1_CRS_CLK_SLEEP_ENABLE()            (RCC_C1->APB1HLPENR) |= (RCC_APB1HLPENR_CRSLPEN)\n#define __HAL_RCC_C1_SWPMI_CLK_SLEEP_ENABLE()          (RCC_C1->APB1HLPENR) |= (RCC_APB1HLPENR_SWPMILPEN)\n#define __HAL_RCC_C1_OPAMP_CLK_SLEEP_ENABLE()          (RCC_C1->APB1HLPENR) |= (RCC_APB1HLPENR_OPAMPLPEN)\n#define __HAL_RCC_C1_MDIOS_CLK_SLEEP_ENABLE()          (RCC_C1->APB1HLPENR) |= (RCC_APB1HLPENR_MDIOSLPEN)\n#define __HAL_RCC_C1_FDCAN_CLK_SLEEP_ENABLE()          (RCC_C1->APB1HLPENR) |= (RCC_APB1HLPENR_FDCANLPEN)\n\n\n#define __HAL_RCC_C1_TIM2_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM2LPEN)\n#define __HAL_RCC_C1_TIM3_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM3LPEN)\n#define __HAL_RCC_C1_TIM4_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM4LPEN)\n#define __HAL_RCC_C1_TIM5_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM5LPEN)\n#define __HAL_RCC_C1_TIM6_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM6LPEN)\n#define __HAL_RCC_C1_TIM7_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM7LPEN)\n#define __HAL_RCC_C1_TIM12_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM12LPEN)\n#define __HAL_RCC_C1_TIM13_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM13LPEN)\n#define __HAL_RCC_C1_TIM14_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM14LPEN)\n#define __HAL_RCC_C1_LPTIM1_CLK_SLEEP_DISABLE()         (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_LPTIM1LPEN)\n#define __HAL_RCC_C1_WWDG2_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_WWDG2LPEN)\n#define __HAL_RCC_C1_SPI2_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPI2LPEN)\n#define __HAL_RCC_C1_SPI3_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPI3LPEN)\n#define __HAL_RCC_C1_SPDIFRX_CLK_SLEEP_DISABLE()        (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPDIFRXLPEN)\n#define __HAL_RCC_C1_USART2_CLK_SLEEP_DISABLE()         (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_USART2LPEN)\n#define __HAL_RCC_C1_USART3_CLK_SLEEP_DISABLE()         (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_USART3LPEN)\n#define __HAL_RCC_C1_UART4_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART4LPEN)\n#define __HAL_RCC_C1_UART5_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART5LPEN)\n#define __HAL_RCC_C1_I2C1_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C1LPEN)\n#define __HAL_RCC_C1_I2C2_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C2LPEN)\n#define __HAL_RCC_C1_I2C3_CLK_SLEEP_DISABLE()           (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C3LPEN)\n#define __HAL_RCC_C1_CEC_CLK_SLEEP_DISABLE()            (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_CECLPEN)\n#define __HAL_RCC_C1_DAC12_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_DAC12LPEN)\n#define __HAL_RCC_C1_UART7_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART7LPEN)\n#define __HAL_RCC_C1_UART8_CLK_SLEEP_DISABLE()          (RCC_C1->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART8LPEN)\n#define __HAL_RCC_C1_CRS_CLK_SLEEP_DISABLE()            (RCC_C1->APB1HLPENR) &= ~ (RCC_APB1HLPENR_CRSLPEN)\n#define __HAL_RCC_C1_SWPMI_CLK_SLEEP_DISABLE()          (RCC_C1->APB1HLPENR) &= ~ (RCC_APB1HLPENR_SWPMILPEN)\n#define __HAL_RCC_C1_OPAMP_CLK_SLEEP_DISABLE()          (RCC_C1->APB1HLPENR) &= ~ (RCC_APB1HLPENR_OPAMPLPEN)\n#define __HAL_RCC_C1_MDIOS_CLK_SLEEP_DISABLE()          (RCC_C1->APB1HLPENR) &= ~ (RCC_APB1HLPENR_MDIOSLPEN)\n#define __HAL_RCC_C1_FDCAN_CLK_SLEEP_DISABLE()          (RCC_C1->APB1HLPENR) &= ~ (RCC_APB1HLPENR_FDCANLPEN)\n\n/** @brief  ENABLE or disable the APB2 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C1_TIM1_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_TIM1LPEN)\n#define __HAL_RCC_C1_TIM8_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_TIM8LPEN)\n#define __HAL_RCC_C1_USART1_CLK_SLEEP_ENABLE()         (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_USART1LPEN)\n#define __HAL_RCC_C1_USART6_CLK_SLEEP_ENABLE()         (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_USART6LPEN)\n#define __HAL_RCC_C1_SPI1_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_SPI1LPEN)\n#define __HAL_RCC_C1_SPI4_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_SPI4LPEN)\n#define __HAL_RCC_C1_TIM15_CLK_SLEEP_ENABLE()          (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_TIM15LPEN)\n#define __HAL_RCC_C1_TIM16_CLK_SLEEP_ENABLE()          (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_TIM16LPEN)\n#define __HAL_RCC_C1_TIM17_CLK_SLEEP_ENABLE()          (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_TIM17LPEN)\n#define __HAL_RCC_C1_SPI5_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_SPI5LPEN)\n#define __HAL_RCC_C1_SAI1_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_SAI1LPEN)\n#define __HAL_RCC_C1_SAI2_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_SAI2LPEN)\n#define __HAL_RCC_C1_SAI3_CLK_SLEEP_ENABLE()           (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_SAI3LPEN)\n#define __HAL_RCC_C1_DFSDM1_CLK_SLEEP_ENABLE()         (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_DFSDM1LPEN)\n#define __HAL_RCC_C1_HRTIM1_CLK_SLEEP_ENABLE()         (RCC_C1->APB2LPENR) |= (RCC_APB2LPENR_HRTIMLPEN)\n\n#define __HAL_RCC_C1_TIM1_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM1LPEN)\n#define __HAL_RCC_C1_TIM8_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM8LPEN)\n#define __HAL_RCC_C1_USART1_CLK_SLEEP_DISABLE()         (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_USART1LPEN)\n#define __HAL_RCC_C1_USART6_CLK_SLEEP_DISABLE()         (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_USART6LPEN)\n#define __HAL_RCC_C1_SPI1_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI1LPEN)\n#define __HAL_RCC_C1_SPI4_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI4LPEN)\n#define __HAL_RCC_C1_TIM15_CLK_SLEEP_DISABLE()          (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM15LPEN)\n#define __HAL_RCC_C1_TIM16_CLK_SLEEP_DISABLE()          (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM16LPEN)\n#define __HAL_RCC_C1_TIM17_CLK_SLEEP_DISABLE()          (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM17LPEN)\n#define __HAL_RCC_C1_SPI5_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI5LPEN)\n#define __HAL_RCC_C1_SAI1_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI1LPEN)\n#define __HAL_RCC_C1_SAI2_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI2LPEN)\n#define __HAL_RCC_C1_SAI3_CLK_SLEEP_DISABLE()           (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI3LPEN)\n#define __HAL_RCC_C1_DFSDM1_CLK_SLEEP_DISABLE()         (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_DFSDM1LPEN)\n#define __HAL_RCC_C1_HRTIM1_CLK_SLEEP_DISABLE()         (RCC_C1->APB2LPENR) &= ~ (RCC_APB2LPENR_HRTIMLPEN)\n\n/** @brief  ENABLE or disable the APB4 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C1_SYSCFG_CLK_SLEEP_ENABLE()           (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_SYSCFGLPEN)\n#define __HAL_RCC_C1_LPUART1_CLK_SLEEP_ENABLE()          (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_LPUART1LPEN)\n#define __HAL_RCC_C1_SPI6_CLK_SLEEP_ENABLE()             (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_SPI6LPEN)\n#define __HAL_RCC_C1_I2C4_CLK_SLEEP_ENABLE()             (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_I2C4LPEN)\n#define __HAL_RCC_C1_LPTIM2_CLK_SLEEP_ENABLE()           (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_LPTIM2LPEN)\n#define __HAL_RCC_C1_LPTIM3_CLK_SLEEP_ENABLE()           (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_LPTIM3LPEN)\n#define __HAL_RCC_C1_LPTIM4_CLK_SLEEP_ENABLE()           (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_LPTIM4LPEN)\n#define __HAL_RCC_C1_LPTIM5_CLK_SLEEP_ENABLE()           (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_LPTIM5LPEN)\n#define __HAL_RCC_C1_COMP12_CLK_SLEEP_ENABLE()           (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_COMP12LPEN)\n#define __HAL_RCC_C1_VREF_CLK_SLEEP_ENABLE()             (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_VREFLPEN)\n#define __HAL_RCC_C1_SAI4_CLK_SLEEP_ENABLE()             (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_SAI4LPEN)\n#define __HAL_RCC_C1_RTC_CLK_SLEEP_ENABLE()              (RCC_C1->APB4LPENR) |= (RCC_APB4LPENR_RTCAPBLPEN)\n\n\n#define __HAL_RCC_C1_SYSCFG_CLK_SLEEP_DISABLE()           (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_SYSCFGLPEN)\n#define __HAL_RCC_C1_LPUART1_CLK_SLEEP_DISABLE()          (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_LPUART1LPEN)\n#define __HAL_RCC_C1_SPI6_CLK_SLEEP_DISABLE()             (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_SPI6LPEN)\n#define __HAL_RCC_C1_I2C4_CLK_SLEEP_DISABLE()             (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_I2C4LPEN)\n#define __HAL_RCC_C1_LPTIM2_CLK_SLEEP_DISABLE()           (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM2LPEN)\n#define __HAL_RCC_C1_LPTIM3_CLK_SLEEP_DISABLE()           (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM3LPEN)\n#define __HAL_RCC_C1_LPTIM4_CLK_SLEEP_DISABLE()           (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM4LPEN)\n#define __HAL_RCC_C1_LPTIM5_CLK_SLEEP_DISABLE()           (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM5LPEN)\n#define __HAL_RCC_C1_COMP12_CLK_SLEEP_DISABLE()           (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_COMP12LPEN)\n#define __HAL_RCC_C1_VREF_CLK_SLEEP_DISABLE()             (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_VREFLPEN)\n#define __HAL_RCC_C1_SAI4_CLK_SLEEP_DISABLE()             (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_SAI4LPEN)\n#define __HAL_RCC_C1_RTC_CLK_SLEEP_DISABLE()              (RCC_C1->APB4LPENR) &= ~ (RCC_APB4LPENR_RTCAPBLPEN)\n\n/** @brief  Enable or disable the RCC_C2 AHB3 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is enabled again.\n  * @note   By default, all peripheral clocks are enabled during SLEEP mode.\n  */\n\n\n#define __HAL_RCC_C2_MDMA_CLK_SLEEP_ENABLE()            (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_MDMALPEN))\n#define __HAL_RCC_C2_DMA2D_CLK_SLEEP_ENABLE()           (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_DMA2DLPEN))\n#define __HAL_RCC_C2_JPGDEC_CLK_SLEEP_ENABLE()          (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_JPGDECLPEN))\n#define __HAL_RCC_C2_FLASH_CLK_SLEEP_ENABLE()           (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_FLASHLPEN))\n#define __HAL_RCC_C2_FMC_CLK_SLEEP_ENABLE()             (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_FMCLPEN))\n#define __HAL_RCC_C2_QSPI_CLK_SLEEP_ENABLE()            (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_QSPILPEN))\n#define __HAL_RCC_C2_SDMMC1_CLK_SLEEP_ENABLE()          (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_SDMMC1LPEN))\n#define __HAL_RCC_C2_DTCM1_CLK_SLEEP_ENABLE()           (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_DTCM1LPEN))\n#define __HAL_RCC_C2_DTCM2_CLK_SLEEP_ENABLE()           (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_DTCM2LPEN))\n#define __HAL_RCC_C2_ITCM_CLK_SLEEP_ENABLE()            (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_ITCMLPEN))\n#define __HAL_RCC_C2_D1SRAM1_CLK_SLEEP_ENABLE()         (RCC_C2->AHB3LPENR |= (RCC_AHB3LPENR_AXISRAMLPEN))\n\n\n#define __HAL_RCC_C2_MDMA_CLK_SLEEP_DISABLE()            (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_MDMALPEN))\n#define __HAL_RCC_C2_DMA2D_CLK_SLEEP_DISABLE()           (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_DMA2DLPEN))\n#define __HAL_RCC_C2_JPGDEC_CLK_SLEEP_DISABLE()          (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_JPGDECLPEN))\n#define __HAL_RCC_C2_FLASH_CLK_SLEEP_DISABLE()           (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_FLASHLPEN))\n#define __HAL_RCC_C2_FMC_CLK_SLEEP_DISABLE()             (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_FMCLPEN))\n#define __HAL_RCC_C2_QSPI_CLK_SLEEP_DISABLE()            (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_QSPILPEN))\n#define __HAL_RCC_C2_SDMMC1_CLK_SLEEP_DISABLE()          (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_SDMMC1LPEN))\n#define __HAL_RCC_C2_DTCM1_CLK_SLEEP_DISABLE()           (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_DTCM1LPEN))\n#define __HAL_RCC_C2_DTCM2_CLK_SLEEP_DISABLE()           (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_DTCM2LPEN))\n#define __HAL_RCC_C2_ITCM_CLK_SLEEP_DISABLE()            (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_ITCMLPEN))\n#define __HAL_RCC_C2_D1SRAM1_CLK_SLEEP_DISABLE()         (RCC_C2->AHB3LPENR &= ~ (RCC_AHB3LPENR_AXISRAMLPEN))\n\n\n\n/** @brief  ENABLE or disable the AHB1 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C2_DMA1_CLK_SLEEP_ENABLE()             (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_DMA1LPEN))\n#define __HAL_RCC_C2_DMA2_CLK_SLEEP_ENABLE()             (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_DMA2LPEN))\n#define __HAL_RCC_C2_ADC12_CLK_SLEEP_ENABLE()            (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_ADC12LPEN))\n#define __HAL_RCC_C2_ETH1MAC_CLK_SLEEP_ENABLE()          (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_ETH1MACLPEN))\n#define __HAL_RCC_C2_ETH1TX_CLK_SLEEP_ENABLE()           (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_ETH1TXLPEN))\n#define __HAL_RCC_C2_ETH1RX_CLK_SLEEP_ENABLE()           (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_ETH1RXLPEN))\n#define __HAL_RCC_C2_USB1_OTG_HS_CLK_SLEEP_ENABLE()      (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_USB1OTGHSLPEN))\n#define __HAL_RCC_C2_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE() (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_USB1OTGHSULPILPEN))\n#define __HAL_RCC_C2_USB2_OTG_FS_CLK_SLEEP_ENABLE()      (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_USB2OTGHSLPEN))\n#define __HAL_RCC_C2_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE() (RCC_C2->AHB1LPENR |= (RCC_AHB1LPENR_USB2OTGHSULPILPEN))\n\n#define __HAL_RCC_C2_DMA1_CLK_SLEEP_DISABLE()             (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_DMA1LPEN))\n#define __HAL_RCC_C2_DMA2_CLK_SLEEP_DISABLE()             (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_DMA2LPEN))\n#define __HAL_RCC_C2_ADC12_CLK_SLEEP_DISABLE()            (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_ADC12LPEN))\n#define __HAL_RCC_C2_ETH1MAC_CLK_SLEEP_DISABLE()          (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1MACLPEN))\n#define __HAL_RCC_C2_ETH1TX_CLK_SLEEP_DISABLE()           (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1TXLPEN))\n#define __HAL_RCC_C2_ETH1RX_CLK_SLEEP_DISABLE()           (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_ETH1RXLPEN))\n#define __HAL_RCC_C2_USB1_OTG_HS_CLK_SLEEP_DISABLE()      (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB1OTGHSLPEN))\n#define __HAL_RCC_C2_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE() (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB1OTGHSULPILPEN))\n#define __HAL_RCC_C2_USB2_OTG_FS_CLK_SLEEP_DISABLE()      (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB2OTGHSLPEN))\n#define __HAL_RCC_C2_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE() (RCC_C2->AHB1LPENR &= ~ (RCC_AHB1LPENR_USB2OTGHSULPILPEN))\n\n/** @brief  ENABLE or disable the AHB2 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C2_DCMI_CLK_SLEEP_ENABLE()             (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_DCMILPEN))\n#if defined(CRYP)\n#define __HAL_RCC_C2_CRYP_CLK_SLEEP_ENABLE()             (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_CRYPLPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_C2_HASH_CLK_SLEEP_ENABLE()             (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_HASHLPEN))\n#endif /* HASH */\n#define __HAL_RCC_C2_RNG_CLK_SLEEP_ENABLE()              (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_RNGLPEN))\n#define __HAL_RCC_C2_SDMMC2_CLK_SLEEP_ENABLE()           (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_SDMMC2LPEN))\n#define __HAL_RCC_C2_D2SRAM1_CLK_SLEEP_ENABLE()          (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM1LPEN))\n#define __HAL_RCC_C2_D2SRAM2_CLK_SLEEP_ENABLE()          (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM2LPEN))\n#define __HAL_RCC_C2_D2SRAM3_CLK_SLEEP_ENABLE()          (RCC_C2->AHB2LPENR |= (RCC_AHB2LPENR_D2SRAM3LPEN))\n\n#define __HAL_RCC_C2_DCMI_CLK_SLEEP_DISABLE()             (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_DCMILPEN))\n#if defined(CRYP)\n#define __HAL_RCC_C2_CRYP_CLK_SLEEP_DISABLE()             (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_CRYPLPEN))\n#endif /* CRYP */\n#if defined(HASH)\n#define __HAL_RCC_C2_HASH_CLK_SLEEP_DISABLE()             (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_HASHLPEN))\n#endif /* HASH */\n#define __HAL_RCC_C2_RNG_CLK_SLEEP_DISABLE()              (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_RNGLPEN))\n#define __HAL_RCC_C2_SDMMC2_CLK_SLEEP_DISABLE()           (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_SDMMC2LPEN))\n#define __HAL_RCC_C2_D2SRAM1_CLK_SLEEP_DISABLE()          (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM1LPEN))\n#define __HAL_RCC_C2_D2SRAM2_CLK_SLEEP_DISABLE()          (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM2LPEN))\n#define __HAL_RCC_C2_D2SRAM3_CLK_SLEEP_DISABLE()          (RCC_C2->AHB2LPENR &= ~ (RCC_AHB2LPENR_D2SRAM3LPEN))\n\n/** @brief  ENABLE or disable the AHB4 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C2_GPIOA_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOALPEN)\n#define __HAL_RCC_C2_GPIOB_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOBLPEN)\n#define __HAL_RCC_C2_GPIOC_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOCLPEN)\n#define __HAL_RCC_C2_GPIOD_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIODLPEN)\n#define __HAL_RCC_C2_GPIOE_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOELPEN)\n#define __HAL_RCC_C2_GPIOF_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOFLPEN)\n#define __HAL_RCC_C2_GPIOG_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOGLPEN)\n#define __HAL_RCC_C2_GPIOH_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOHLPEN)\n#define __HAL_RCC_C2_GPIOI_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOILPEN)\n#define __HAL_RCC_C2_GPIOJ_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOJLPEN)\n#define __HAL_RCC_C2_GPIOK_CLK_SLEEP_ENABLE()           (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_GPIOKLPEN)\n#define __HAL_RCC_C2_CRC_CLK_SLEEP_ENABLE()             (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_C2_BDMA_CLK_SLEEP_ENABLE()            (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_BDMALPEN)\n#define __HAL_RCC_C2_ADC3_CLK_SLEEP_ENABLE()            (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_ADC3LPEN)\n#define __HAL_RCC_C2_BKPRAM_CLK_SLEEP_ENABLE()          (RCC_C2->AHB4LPENR) |= (RCC_AHB4LPENR_BKPRAMLPEN)\n#define __HAL_RCC_C2_D3SRAM1_CLK_SLEEP_ENABLE()         (RCC_C2->AHB4LPENR  |= (RCC_AHB4LPENR_D3SRAM1LPEN))\n\n#define __HAL_RCC_C2_GPIOA_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOALPEN)\n#define __HAL_RCC_C2_GPIOB_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOBLPEN)\n#define __HAL_RCC_C2_GPIOC_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOCLPEN)\n#define __HAL_RCC_C2_GPIOD_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIODLPEN)\n#define __HAL_RCC_C2_GPIOE_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOELPEN)\n#define __HAL_RCC_C2_GPIOF_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOFLPEN)\n#define __HAL_RCC_C2_GPIOG_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOGLPEN)\n#define __HAL_RCC_C2_GPIOH_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOHLPEN)\n#define __HAL_RCC_C2_GPIOI_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOILPEN)\n#define __HAL_RCC_C2_GPIOJ_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOJLPEN)\n#define __HAL_RCC_C2_GPIOK_CLK_SLEEP_DISABLE()           (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_GPIOKLPEN)\n#define __HAL_RCC_C2_CRC_CLK_SLEEP_DISABLE()             (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_CRCLPEN)\n#define __HAL_RCC_C2_BDMA_CLK_SLEEP_DISABLE()            (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_BDMALPEN)\n#define __HAL_RCC_C2_ADC3_CLK_SLEEP_DISABLE()            (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_ADC3LPEN)\n#define __HAL_RCC_C2_BKPRAM_CLK_SLEEP_DISABLE()          (RCC_C2->AHB4LPENR) &= ~ (RCC_AHB4LPENR_BKPRAMLPEN)\n#define __HAL_RCC_C2_D3SRAM1_CLK_SLEEP_DISABLE()         (RCC_C2->AHB4LPENR  &= ~ (RCC_AHB4LPENR_D3SRAM1LPEN))\n\n/** @brief  ENABLE or disable the APB3 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C2_LTDC_CLK_SLEEP_ENABLE()           (RCC_C2->APB3LPENR) |= (RCC_APB3LPENR_LTDCLPEN)\n#define __HAL_RCC_C2_DSI_CLK_SLEEP_ENABLE()            (RCC_C2->APB3LPENR) |= (RCC_APB3LPENR_DSILPEN)\n#define __HAL_RCC_C2_WWDG1_CLK_SLEEP_ENABLE()          (RCC_C2->APB3LPENR) |= (RCC_APB3LPENR_WWDG1LPEN)\n\n#define __HAL_RCC_C2_LTDC_CLK_SLEEP_DISABLE()           (RCC_C2->APB3LPENR) &= ~ (RCC_APB3LPENR_LTDCLPEN)\n#define __HAL_RCC_C2_DSI_CLK_SLEEP_DISABLE()            (RCC_C2->APB3LPENR) &= ~ (RCC_APB3LPENR_DSILPEN)\n#define __HAL_RCC_C2_WWDG1_CLK_SLEEP_DISABLE()          (RCC_C2->APB3LPENR) &= ~ (RCC_APB3LPENR_WWDG1LPEN)\n\n/** @brief  ENABLE or disable the APB1 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C2_TIM2_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM2LPEN)\n#define __HAL_RCC_C2_TIM3_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM3LPEN)\n#define __HAL_RCC_C2_TIM4_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM4LPEN)\n#define __HAL_RCC_C2_TIM5_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM5LPEN)\n#define __HAL_RCC_C2_TIM6_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM6LPEN)\n#define __HAL_RCC_C2_TIM7_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM7LPEN)\n#define __HAL_RCC_C2_TIM12_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM12LPEN)\n#define __HAL_RCC_C2_TIM13_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM13LPEN)\n#define __HAL_RCC_C2_TIM14_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_TIM14LPEN)\n#define __HAL_RCC_C2_LPTIM1_CLK_SLEEP_ENABLE()         (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_LPTIM1LPEN)\n#define __HAL_RCC_C2_WWDG2_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_WWDG2LPEN)\n#define __HAL_RCC_C2_SPI2_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_SPI2LPEN)\n#define __HAL_RCC_C2_SPI3_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_SPI3LPEN)\n#define __HAL_RCC_C2_SPDIFRX_CLK_SLEEP_ENABLE()        (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_SPDIFRXLPEN)\n#define __HAL_RCC_C2_USART2_CLK_SLEEP_ENABLE()         (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_USART2LPEN)\n#define __HAL_RCC_C2_USART3_CLK_SLEEP_ENABLE()         (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_USART3LPEN)\n#define __HAL_RCC_C2_UART4_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_UART4LPEN)\n#define __HAL_RCC_C2_UART5_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_UART5LPEN)\n#define __HAL_RCC_C2_I2C1_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_I2C1LPEN)\n#define __HAL_RCC_C2_I2C2_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_I2C2LPEN)\n#define __HAL_RCC_C2_I2C3_CLK_SLEEP_ENABLE()           (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_I2C3LPEN)\n#define __HAL_RCC_C2_CEC_CLK_SLEEP_ENABLE()            (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_CECLPEN)\n#define __HAL_RCC_C2_DAC12_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_DAC12LPEN)\n#define __HAL_RCC_C2_UART7_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_UART7LPEN)\n#define __HAL_RCC_C2_UART8_CLK_SLEEP_ENABLE()          (RCC_C2->APB1LLPENR) |= (RCC_APB1LLPENR_UART8LPEN)\n#define __HAL_RCC_C2_CRS_CLK_SLEEP_ENABLE()            (RCC_C2->APB1HLPENR) |= (RCC_APB1HLPENR_CRSLPEN)\n#define __HAL_RCC_C2_SWPMI_CLK_SLEEP_ENABLE()          (RCC_C2->APB1HLPENR) |= (RCC_APB1HLPENR_SWPMILPEN)\n#define __HAL_RCC_C2_OPAMP_CLK_SLEEP_ENABLE()          (RCC_C2->APB1HLPENR) |= (RCC_APB1HLPENR_OPAMPLPEN)\n#define __HAL_RCC_C2_MDIOS_CLK_SLEEP_ENABLE()          (RCC_C2->APB1HLPENR) |= (RCC_APB1HLPENR_MDIOSLPEN)\n#define __HAL_RCC_C2_FDCAN_CLK_SLEEP_ENABLE()          (RCC_C2->APB1HLPENR) |= (RCC_APB1HLPENR_FDCANLPEN)\n\n\n#define __HAL_RCC_C2_TIM2_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM2LPEN)\n#define __HAL_RCC_C2_TIM3_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM3LPEN)\n#define __HAL_RCC_C2_TIM4_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM4LPEN)\n#define __HAL_RCC_C2_TIM5_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM5LPEN)\n#define __HAL_RCC_C2_TIM6_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM6LPEN)\n#define __HAL_RCC_C2_TIM7_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM7LPEN)\n#define __HAL_RCC_C2_TIM12_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM12LPEN)\n#define __HAL_RCC_C2_TIM13_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM13LPEN)\n#define __HAL_RCC_C2_TIM14_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_TIM14LPEN)\n#define __HAL_RCC_C2_LPTIM1_CLK_SLEEP_DISABLE()         (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_LPTIM1LPEN)\n#define __HAL_RCC_C2_WWDG2_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_WWDG2LPEN)\n#define __HAL_RCC_C2_SPI2_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPI2LPEN)\n#define __HAL_RCC_C2_SPI3_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPI3LPEN)\n#define __HAL_RCC_C2_SPDIFRX_CLK_SLEEP_DISABLE()        (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_SPDIFRXLPEN)\n#define __HAL_RCC_C2_USART2_CLK_SLEEP_DISABLE()         (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_USART2LPEN)\n#define __HAL_RCC_C2_USART3_CLK_SLEEP_DISABLE()         (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_USART3LPEN)\n#define __HAL_RCC_C2_UART4_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART4LPEN)\n#define __HAL_RCC_C2_UART5_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART5LPEN)\n#define __HAL_RCC_C2_I2C1_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C1LPEN)\n#define __HAL_RCC_C2_I2C2_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C2LPEN)\n#define __HAL_RCC_C2_I2C3_CLK_SLEEP_DISABLE()           (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_I2C3LPEN)\n#define __HAL_RCC_C2_CEC_CLK_SLEEP_DISABLE()            (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_CECLPEN)\n#define __HAL_RCC_C2_DAC12_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_DAC12LPEN)\n#define __HAL_RCC_C2_UART7_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART7LPEN)\n#define __HAL_RCC_C2_UART8_CLK_SLEEP_DISABLE()          (RCC_C2->APB1LLPENR) &= ~ (RCC_APB1LLPENR_UART8LPEN)\n#define __HAL_RCC_C2_CRS_CLK_SLEEP_DISABLE()            (RCC_C2->APB1HLPENR) &= ~ (RCC_APB1HLPENR_CRSLPEN)\n#define __HAL_RCC_C2_SWPMI_CLK_SLEEP_DISABLE()          (RCC_C2->APB1HLPENR) &= ~ (RCC_APB1HLPENR_SWPMILPEN)\n#define __HAL_RCC_C2_OPAMP_CLK_SLEEP_DISABLE()          (RCC_C2->APB1HLPENR) &= ~ (RCC_APB1HLPENR_OPAMPLPEN)\n#define __HAL_RCC_C2_MDIOS_CLK_SLEEP_DISABLE()          (RCC_C2->APB1HLPENR) &= ~ (RCC_APB1HLPENR_MDIOSLPEN)\n#define __HAL_RCC_C2_FDCAN_CLK_SLEEP_DISABLE()          (RCC_C2->APB1HLPENR) &= ~ (RCC_APB1HLPENR_FDCANLPEN)\n\n/** @brief  ENABLE or disable the APB2 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C2_TIM1_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_TIM1LPEN)\n#define __HAL_RCC_C2_TIM8_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_TIM8LPEN)\n#define __HAL_RCC_C2_USART1_CLK_SLEEP_ENABLE()         (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_USART1LPEN)\n#define __HAL_RCC_C2_USART6_CLK_SLEEP_ENABLE()         (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_USART6LPEN)\n#define __HAL_RCC_C2_SPI1_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_SPI1LPEN)\n#define __HAL_RCC_C2_SPI4_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_SPI4LPEN)\n#define __HAL_RCC_C2_TIM15_CLK_SLEEP_ENABLE()          (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_TIM15LPEN)\n#define __HAL_RCC_C2_TIM16_CLK_SLEEP_ENABLE()          (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_TIM16LPEN)\n#define __HAL_RCC_C2_TIM17_CLK_SLEEP_ENABLE()          (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_TIM17LPEN)\n#define __HAL_RCC_C2_SPI5_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_SPI5LPEN)\n#define __HAL_RCC_C2_SAI1_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_SAI1LPEN)\n#define __HAL_RCC_C2_SAI2_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_SAI2LPEN)\n#define __HAL_RCC_C2_SAI3_CLK_SLEEP_ENABLE()           (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_SAI3LPEN)\n#define __HAL_RCC_C2_DFSDM1_CLK_SLEEP_ENABLE()         (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_DFSDM1LPEN)\n#define __HAL_RCC_C2_HRTIM1_CLK_SLEEP_ENABLE()         (RCC_C2->APB2LPENR) |= (RCC_APB2LPENR_HRTIMLPEN)\n\n#define __HAL_RCC_C2_TIM1_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM1LPEN)\n#define __HAL_RCC_C2_TIM8_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM8LPEN)\n#define __HAL_RCC_C2_USART1_CLK_SLEEP_DISABLE()         (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_USART1LPEN)\n#define __HAL_RCC_C2_USART6_CLK_SLEEP_DISABLE()         (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_USART6LPEN)\n#define __HAL_RCC_C2_SPI1_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI1LPEN)\n#define __HAL_RCC_C2_SPI4_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI4LPEN)\n#define __HAL_RCC_C2_TIM15_CLK_SLEEP_DISABLE()          (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM15LPEN)\n#define __HAL_RCC_C2_TIM16_CLK_SLEEP_DISABLE()          (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM16LPEN)\n#define __HAL_RCC_C2_TIM17_CLK_SLEEP_DISABLE()          (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_TIM17LPEN)\n#define __HAL_RCC_C2_SPI5_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_SPI5LPEN)\n#define __HAL_RCC_C2_SAI1_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI1LPEN)\n#define __HAL_RCC_C2_SAI2_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI2LPEN)\n#define __HAL_RCC_C2_SAI3_CLK_SLEEP_DISABLE()           (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_SAI3LPEN)\n#define __HAL_RCC_C2_DFSDM1_CLK_SLEEP_DISABLE()         (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_DFSDM1LPEN)\n#define __HAL_RCC_C2_HRTIM1_CLK_SLEEP_DISABLE()         (RCC_C2->APB2LPENR) &= ~ (RCC_APB2LPENR_HRTIMLPEN)\n\n/** @brief  ENABLE or disable the APB4 peripheral clock during Low Power (Sleep) mode.\n  * @note   Peripheral clock gating in SLEEP mode can be used to further reduce\n  *         power consumption.\n  * @note   After wakeup from SLEEP mode, the peripheral clock is ENABLEd again.\n  * @note   By default, all peripheral clocks are ENABLEd during SLEEP mode.\n  */\n\n#define __HAL_RCC_C2_SYSCFG_CLK_SLEEP_ENABLE()           (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_SYSCFGLPEN)\n#define __HAL_RCC_C2_LPUART1_CLK_SLEEP_ENABLE()          (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_LPUART1LPEN)\n#define __HAL_RCC_C2_SPI6_CLK_SLEEP_ENABLE()             (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_SPI6LPEN)\n#define __HAL_RCC_C2_I2C4_CLK_SLEEP_ENABLE()             (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_I2C4LPEN)\n#define __HAL_RCC_C2_LPTIM2_CLK_SLEEP_ENABLE()           (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_LPTIM2LPEN)\n#define __HAL_RCC_C2_LPTIM3_CLK_SLEEP_ENABLE()           (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_LPTIM3LPEN)\n#define __HAL_RCC_C2_LPTIM4_CLK_SLEEP_ENABLE()           (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_LPTIM4LPEN)\n#define __HAL_RCC_C2_LPTIM5_CLK_SLEEP_ENABLE()           (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_LPTIM5LPEN)\n#define __HAL_RCC_C2_COMP12_CLK_SLEEP_ENABLE()           (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_COMP12LPEN)\n#define __HAL_RCC_C2_VREF_CLK_SLEEP_ENABLE()             (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_VREFLPEN)\n#define __HAL_RCC_C2_SAI4_CLK_SLEEP_ENABLE()             (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_SAI4LPEN)\n#define __HAL_RCC_C2_RTC_CLK_SLEEP_ENABLE()              (RCC_C2->APB4LPENR) |= (RCC_APB4LPENR_RTCAPBLPEN)\n\n#define __HAL_RCC_C2_SYSCFG_CLK_SLEEP_DISABLE()           (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_SYSCFGLPEN)\n#define __HAL_RCC_C2_LPUART1_CLK_SLEEP_DISABLE()          (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_LPUART1LPEN)\n#define __HAL_RCC_C2_SPI6_CLK_SLEEP_DISABLE()             (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_SPI6LPEN)\n#define __HAL_RCC_C2_I2C4_CLK_SLEEP_DISABLE()             (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_I2C4LPEN)\n#define __HAL_RCC_C2_LPTIM2_CLK_SLEEP_DISABLE()           (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM2LPEN)\n#define __HAL_RCC_C2_LPTIM3_CLK_SLEEP_DISABLE()           (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM3LPEN)\n#define __HAL_RCC_C2_LPTIM4_CLK_SLEEP_DISABLE()           (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM4LPEN)\n#define __HAL_RCC_C2_LPTIM5_CLK_SLEEP_DISABLE()           (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_LPTIM5LPEN)\n#define __HAL_RCC_C2_COMP12_CLK_SLEEP_DISABLE()           (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_COMP12LPEN)\n#define __HAL_RCC_C2_VREF_CLK_SLEEP_DISABLE()             (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_VREFLPEN)\n#define __HAL_RCC_C2_SAI4_CLK_SLEEP_DISABLE()             (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_SAI4LPEN)\n#define __HAL_RCC_C2_RTC_CLK_SLEEP_DISABLE()              (RCC_C2->APB4LPENR) &= ~ (RCC_APB4LPENR_RTCAPBLPEN)\n\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n/** @brief  Enable or disable peripheral bus clock  when D3 domain is in DRUN\n  * @note   After reset (default config), peripheral clock is disabled when both CPUs are in CSTOP\n  */\n#else\n/** @brief  Enable or disable peripheral bus clock  when D3 domain is in DRUN\n  * @note   After reset (default config), peripheral clock is disabled when CPU is in CSTOP\n  */\n#endif /*DUAL_CORE*/\n\n#if defined(RCC_D3AMR_BDMAAMEN)\n#define __HAL_RCC_BDMA_CLKAM_ENABLE()             (RCC->D3AMR) |= (RCC_D3AMR_BDMAAMEN)\n#endif\n#if defined(RCC_D3AMR_LPUART1AMEN)\n#define __HAL_RCC_LPUART1_CLKAM_ENABLE()          (RCC->D3AMR) |= (RCC_D3AMR_LPUART1AMEN)\n#endif\n#if defined(RCC_D3AMR_SPI6AMEN)\n#define __HAL_RCC_SPI6_CLKAM_ENABLE()             (RCC->D3AMR) |= (RCC_D3AMR_SPI6AMEN)\n#endif\n#if defined(RCC_D3AMR_I2C4AMEN)\n#define __HAL_RCC_I2C4_CLKAM_ENABLE()             (RCC->D3AMR) |= (RCC_D3AMR_I2C4AMEN)\n#endif\n#if defined(RCC_D3AMR_LPTIM2AMEN)\n#define __HAL_RCC_LPTIM2_CLKAM_ENABLE()           (RCC->D3AMR) |= (RCC_D3AMR_LPTIM2AMEN)\n#endif\n#if defined(RCC_D3AMR_LPTIM3AMEN)\n#define __HAL_RCC_LPTIM3_CLKAM_ENABLE()           (RCC->D3AMR) |= (RCC_D3AMR_LPTIM3AMEN)\n#endif\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_CLKAM_ENABLE()           (RCC->D3AMR) |= (RCC_D3AMR_LPTIM4AMEN)\n#endif\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_CLKAM_ENABLE()           (RCC->D3AMR) |= (RCC_D3AMR_LPTIM5AMEN)\n#endif\n#if defined(RCC_D3AMR_COMP12AMEN)\n#define __HAL_RCC_COMP12_CLKAM_ENABLE()           (RCC->D3AMR) |= (RCC_D3AMR_COMP12AMEN)\n#endif\n#if defined(RCC_D3AMR_VREFAMEN)\n#define __HAL_RCC_VREF_CLKAM_ENABLE()             (RCC->D3AMR) |= (RCC_D3AMR_VREFAMEN)\n#endif\n#if defined(RCC_D3AMR_RTCAMEN)\n#define __HAL_RCC_RTC_CLKAM_ENABLE()              (RCC->D3AMR) |= (RCC_D3AMR_RTCAMEN)\n#endif\n#if defined(RCC_D3AMR_CRCAMEN)\n#define __HAL_RCC_CRC_CLKAM_ENABLE()              (RCC->D3AMR) |= (RCC_D3AMR_CRCAMEN)\n#endif\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_CLKAM_ENABLE()             (RCC->D3AMR) |= (RCC_D3AMR_SAI4AMEN)\n#endif\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_CLKAM_ENABLE()             (RCC->D3AMR) |= (RCC_D3AMR_ADC3AMEN)\n#endif\n#if defined(RCC_D3AMR_DTSAMEN)\n#define __HAL_RCC_DTS_CLKAM_ENABLE()              (RCC->D3AMR) |= (RCC_D3AMR_DTSAMEN)\n#endif\n#if defined(RCC_D3AMR_BKPRAMAMEN)\n#define __HAL_RCC_BKPRAM_CLKAM_ENABLE()           (RCC->D3AMR) |= (RCC_D3AMR_BKPRAMAMEN)\n#endif\n#if defined(RCC_D3AMR_SRAM4AMEN)\n#define __HAL_RCC_D3SRAM1_CLKAM_ENABLE()          (RCC->D3AMR) |= (RCC_D3AMR_SRAM4AMEN)\n#endif\n\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_CLKAM_ENABLE()            (RCC->SRDAMR) |= (RCC_SRDAMR_BDMA2AMEN)\n#endif\n#if defined(RCC_SRDAMR_GPIOAMEN)\n#define __HAL_RCC_GPIO_CLKAM_ENABLE()             (RCC->SRDAMR) |= (RCC_SRDAMR_GPIOAMEN)\n#endif\n#if defined(RCC_SRDAMR_LPUART1AMEN)\n#define __HAL_RCC_LPUART1_CLKAM_ENABLE()          (RCC->SRDAMR) |= (RCC_SRDAMR_LPUART1AMEN)\n#endif\n#if defined(RCC_SRDAMR_SPI6AMEN)\n#define __HAL_RCC_SPI6_CLKAM_ENABLE()             (RCC->SRDAMR) |= (RCC_SRDAMR_SPI6AMEN)\n#endif\n#if defined(RCC_SRDAMR_I2C4AMEN)\n#define __HAL_RCC_I2C4_CLKAM_ENABLE()             (RCC->SRDAMR) |= (RCC_SRDAMR_I2C4AMEN)\n#endif\n#if defined(RCC_SRDAMR_LPTIM2AMEN)\n#define __HAL_RCC_LPTIM2_CLKAM_ENABLE()           (RCC->SRDAMR) |= (RCC_SRDAMR_LPTIM2AMEN)\n#endif\n#if defined(RCC_SRDAMR_LPTIM3AMEN)\n#define __HAL_RCC_LPTIM3_CLKAM_ENABLE()           (RCC->SRDAMR) |= (RCC_SRDAMR_LPTIM3AMEN)\n#endif\n#if defined(DAC2)\n#define __HAL_RCC_DAC2_CLKAM_ENABLE()             (RCC->SRDAMR) |= (RCC_SRDAMR_DAC2AMEN)\n#endif\n#if defined(RCC_SRDAMR_COMP12AMEN)\n#define __HAL_RCC_COMP12_CLKAM_ENABLE()           (RCC->SRDAMR) |= (RCC_SRDAMR_COMP12AMEN)\n#endif\n#if defined(RCC_SRDAMR_VREFAMEN)\n#define __HAL_RCC_VREF_CLKAM_ENABLE()             (RCC->SRDAMR) |= (RCC_SRDAMR_VREFAMEN)\n#endif\n#if defined(RCC_SRDAMR_RTCAMEN)\n#define __HAL_RCC_RTC_CLKAM_ENABLE()              (RCC->SRDAMR) |= (RCC_SRDAMR_RTCAMEN)\n#endif\n#if defined(RCC_SRDAMR_DTSAMEN)\n#define __HAL_RCC_DTS_CLKAM_ENABLE()              (RCC->SRDAMR) |= (RCC_SRDAMR_DTSAMEN)\n#endif\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_CLKAM_ENABLE()           (RCC->SRDAMR) |= (RCC_SRDAMR_DFSDM2AMEN)\n#endif\n#if defined(RCC_SRDAMR_BKPRAMAMEN)\n#define __HAL_RCC_BKPRAM_CLKAM_ENABLE()           (RCC->SRDAMR) |= (RCC_SRDAMR_BKPRAMAMEN)\n#endif\n#if defined(RCC_SRDAMR_SRDSRAMAMEN)\n#define __HAL_RCC_SRDSRAM_CLKAM_ENABLE()          (RCC->SRDAMR) |= (RCC_SRDAMR_SRDSRAMAMEN)\n#endif\n\n#if defined(RCC_D3AMR_BDMAAMEN)\n#define __HAL_RCC_BDMA_CLKAM_DISABLE()             (RCC->D3AMR) &= ~ (RCC_D3AMR_BDMAAMEN)\n#endif\n#if defined(RCC_D3AMR_LPUART1AMEN)\n#define __HAL_RCC_LPUART1_CLKAM_DISABLE()          (RCC->D3AMR) &= ~ (RCC_D3AMR_LPUART1AMEN)\n#endif\n#if defined(RCC_D3AMR_SPI6AMEN)\n#define __HAL_RCC_SPI6_CLKAM_DISABLE()             (RCC->D3AMR) &= ~ (RCC_D3AMR_SPI6AMEN)\n#endif\n#if defined(RCC_D3AMR_I2C4AMEN)\n#define __HAL_RCC_I2C4_CLKAM_DISABLE()             (RCC->D3AMR) &= ~ (RCC_D3AMR_I2C4AMEN)\n#endif\n#if defined(RCC_D3AMR_LPTIM2AMEN)\n#define __HAL_RCC_LPTIM2_CLKAM_DISABLE()           (RCC->D3AMR) &= ~ (RCC_D3AMR_LPTIM2AMEN)\n#endif\n#if defined(RCC_D3AMR_LPTIM3AMEN)\n#define __HAL_RCC_LPTIM3_CLKAM_DISABLE()           (RCC->D3AMR) &= ~ (RCC_D3AMR_LPTIM3AMEN)\n#endif\n#if defined(LPTIM4)\n#define __HAL_RCC_LPTIM4_CLKAM_DISABLE()           (RCC->D3AMR) &= ~ (RCC_D3AMR_LPTIM4AMEN)\n#endif\n#if defined(LPTIM5)\n#define __HAL_RCC_LPTIM5_CLKAM_DISABLE()           (RCC->D3AMR) &= ~ (RCC_D3AMR_LPTIM5AMEN)\n#endif\n#if defined(RCC_D3AMR_COMP12AMEN)\n#define __HAL_RCC_COMP12_CLKAM_DISABLE()           (RCC->D3AMR) &= ~ (RCC_D3AMR_COMP12AMEN)\n#endif\n#if defined(RCC_D3AMR_VREFAMEN)\n#define __HAL_RCC_VREF_CLKAM_DISABLE()             (RCC->D3AMR) &= ~ (RCC_D3AMR_VREFAMEN)\n#endif\n#if defined(RCC_D3AMR_RTCAMEN)\n#define __HAL_RCC_RTC_CLKAM_DISABLE()              (RCC->D3AMR) &= ~ (RCC_D3AMR_RTCAMEN)\n#endif\n#if defined(RCC_D3AMR_CRCAMEN)\n#define __HAL_RCC_CRC_CLKAM_DISABLE()              (RCC->D3AMR) &= ~ (RCC_D3AMR_CRCAMEN)\n#endif\n#if defined(SAI4)\n#define __HAL_RCC_SAI4_CLKAM_DISABLE()             (RCC->D3AMR) &= ~ (RCC_D3AMR_SAI4AMEN)\n#endif\n#if defined(ADC3)\n#define __HAL_RCC_ADC3_CLKAM_DISABLE()             (RCC->D3AMR) &= ~ (RCC_D3AMR_ADC3AMEN)\n#endif\n#if defined(RCC_D3AMR_DTSAMEN)\n#define __HAL_RCC_DTS_CLKAM_DISABLE()              (RCC->D3AMR) &= ~ (RCC_D3AMR_DTSAMEN)\n#endif\n#if defined(RCC_D3AMR_BKPRAMAMEN)\n#define __HAL_RCC_BKPRAM_CLKAM_DISABLE()           (RCC->D3AMR) &= ~ (RCC_D3AMR_BKPRAMAMEN)\n#endif\n#if defined(RCC_D3AMR_SRAM4AMEN)\n#define __HAL_RCC_D3SRAM1_CLKAM_DISABLE()          (RCC->D3AMR)&= ~ (RCC_D3AMR_SRAM4AMEN)\n#endif\n\n#if defined(BDMA2)\n#define __HAL_RCC_BDMA2_CLKAM_DISABLE()            (RCC->SRDAMR) &= ~ (RCC_SRDAMR_BDMA2AMEN)\n#endif\n#if defined(RCC_SRDAMR_GPIOAMEN)\n#define __HAL_RCC_GPIO_CLKAM_DISABLE()             (RCC->SRDAMR) &= ~ (RCC_SRDAMR_GPIOAMEN)\n#endif\n#if defined(RCC_SRDAMR_LPUART1AMEN)\n#define __HAL_RCC_LPUART1_CLKAM_DISABLE()          (RCC->SRDAMR) &= ~ (RCC_SRDAMR_LPUART1AMEN)\n#endif\n#if defined(RCC_SRDAMR_SPI6AMEN)\n#define __HAL_RCC_SPI6_CLKAM_DISABLE()             (RCC->SRDAMR) &= ~ (RCC_SRDAMR_SPI6AMEN)\n#endif\n#if defined(RCC_SRDAMR_I2C4AMEN)\n#define __HAL_RCC_I2C4_CLKAM_DISABLE()             (RCC->SRDAMR) &= ~ (RCC_SRDAMR_I2C4AMEN)\n#endif\n#if defined(RCC_SRDAMR_LPTIM2AMEN)\n#define __HAL_RCC_LPTIM2_CLKAM_DISABLE()           (RCC->SRDAMR) &= ~ (RCC_SRDAMR_LPTIM2AMEN)\n#endif\n#if defined(RCC_SRDAMR_LPTIM3AMEN)\n#define __HAL_RCC_LPTIM3_CLKAM_DISABLE()           (RCC->SRDAMR) &= ~ (RCC_SRDAMR_LPTIM3AMEN)\n#endif\n#if defined(RCC_SRDAMR_DAC2AMEN)\n#define __HAL_RCC_DAC2_CLKAM_DISABLE()             (RCC->SRDAMR) &= ~ (RCC_SRDAMR_DAC2AMEN)\n#endif\n#if defined(RCC_SRDAMR_COMP12AMEN)\n#define __HAL_RCC_COMP12_CLKAM_DISABLE()           (RCC->SRDAMR) &= ~ (RCC_SRDAMR_COMP12AMEN)\n#endif\n#if defined(RCC_SRDAMR_VREFAMEN)\n#define __HAL_RCC_VREF_CLKAM_DISABLE()             (RCC->SRDAMR) &= ~ (RCC_SRDAMR_VREFAMEN)\n#endif\n#if defined(RCC_SRDAMR_RTCAMEN)\n#define __HAL_RCC_RTC_CLKAM_DISABLE()              (RCC->SRDAMR) &= ~(RCC_SRDAMR_RTCAMEN)\n#endif\n#if defined(RCC_SRDAMR_DTSAMEN)\n#define __HAL_RCC_DTS_CLKAM_DISABLE()              (RCC->SRDAMR) &= ~(RCC_SRDAMR_DTSAMEN)\n#endif\n#if defined(DFSDM2_BASE)\n#define __HAL_RCC_DFSDM2_CLKAM_DISABLE()           (RCC->SRDAMR) &= ~(RCC_SRDAMR_DFSDM2AMEN)\n#endif\n#if defined(RCC_SRDAMR_BKPRAMAMEN)\n#define __HAL_RCC_BKPRAM_CLKAM_DISABLE()           (RCC->SRDAMR) &= ~ (RCC_SRDAMR_BKPRAMAMEN)\n#endif\n#if defined(RCC_SRDAMR_SRDSRAMAMEN)\n#define __HAL_RCC_SRDSRAM_CLKAM_DISABLE()          (RCC->SRDAMR) &= ~ (RCC_SRDAMR_SRDSRAMAMEN)\n#endif\n\n\n#if defined(RCC_CKGAENR_AXICKG)\n/** @brief  Macro to enable or disable the RCC_CKGAENR bits (AXI clocks gating enable register).\n  */\n\n#define __HAL_RCC_AXI_CLKGA_ENABLE()             (RCC->CKGAENR) |= (RCC_CKGAENR_AXICKG)\n#define __HAL_RCC_AHB_CLKGA_ENABLE()             (RCC->CKGAENR) |= (RCC_CKGAENR_AHBCKG)\n#define __HAL_RCC_CPU_CLKGA_ENABLE()             (RCC->CKGAENR) |= (RCC_CKGAENR_CPUCKG)\n#define __HAL_RCC_SDMMC_CLKGA_ENABLE()           (RCC->CKGAENR) |= (RCC_CKGAENR_SDMMCCKG)\n#define __HAL_RCC_MDMA_CLKGA_ENABLE()            (RCC->CKGAENR) |= (RCC_CKGAENR_MDMACKG)\n#define __HAL_RCC_DMA2D_CLKGA_ENABLE()           (RCC->CKGAENR) |= (RCC_CKGAENR_DMA2DCKG)\n#define __HAL_RCC_LTDC_CLKGA_ENABLE()            (RCC->CKGAENR) |= (RCC_CKGAENR_LTDCCKG)\n#define __HAL_RCC_GFXMMUM_CLKGA_ENABLE()         (RCC->CKGAENR) |= (RCC_CKGAENR_GFXMMUMCKG)\n#define __HAL_RCC_AHB12_CLKGA_ENABLE()           (RCC->CKGAENR) |= (RCC_CKGAENR_AHB12CKG)\n#define __HAL_RCC_AHB34_CLKGA_ENABLE()           (RCC->CKGAENR) |= (RCC_CKGAENR_AHB34CKG)\n#define __HAL_RCC_FLIFT_CLKGA_ENABLE()           (RCC->CKGAENR) |= (RCC_CKGAENR_FLIFTCKG)\n#define __HAL_RCC_OCTOSPI2_CLKGA_ENABLE()        (RCC->CKGAENR) |= (RCC_CKGAENR_OCTOSPI2CKG)\n#define __HAL_RCC_FMC_CLKGA_ENABLE()             (RCC->CKGAENR) |= (RCC_CKGAENR_FMCCKG)\n#define __HAL_RCC_OCTOSPI1_CLKGA_ENABLE()        (RCC->CKGAENR) |= (RCC_CKGAENR_OCTOSPI1CKG)\n#define __HAL_RCC_AXIRAM1_CLKGA_ENABLE()         (RCC->CKGAENR) |= (RCC_CKGAENR_AXIRAM1CKG)\n#define __HAL_RCC_AXIRAM2_CLKGA_ENABLE()         (RCC->CKGAENR) |= (RCC_CKGAENR_AXIRAM2CKG)\n#define __HAL_RCC_AXIRAM3_CLKGA_ENABLE()         (RCC->CKGAENR) |= (RCC_CKGAENR_AXIRAM3CKG)\n#define __HAL_RCC_GFXMMUS_CLKGA_ENABLE()         (RCC->CKGAENR) |= (RCC_CKGAENR_GFXMMUSCKG)\n#define __HAL_RCC_ECCRAM_CLKGA_ENABLE()          (RCC->CKGAENR) |= (RCC_CKGAENR_ECCRAMCKG)\n#define __HAL_RCC_EXTI_CLKGA_ENABLE()            (RCC->CKGAENR) |= (RCC_CKGAENR_EXTICKG)\n#define __HAL_RCC_JTAG_CLKGA_ENABLE()            (RCC->CKGAENR) |= (RCC_CKGAENR_JTAGCKG)\n\n\n#define __HAL_RCC_AXI_CLKGA_DISABLE()             (RCC->CKGAENR) &= ~ (RCC_CKGAENR_AXICKG)\n#define __HAL_RCC_AHB_CLKGA_DISABLE()             (RCC->CKGAENR) &= ~ (RCC_CKGAENR_AHBCKG)\n#define __HAL_RCC_CPU_CLKGA_DISABLE()             (RCC->CKGAENR) &= ~ (RCC_CKGAENR_CPUCKG)\n#define __HAL_RCC_SDMMC_CLKGA_DISABLE()           (RCC->CKGAENR) &= ~ (RCC_CKGAENR_SDMMCCKG)\n#define __HAL_RCC_MDMA_CLKGA_DISABLE()            (RCC->CKGAENR) &= ~ (RCC_CKGAENR_MDMACKG)\n#define __HAL_RCC_DMA2D_CLKGA_DISABLE()           (RCC->CKGAENR) &= ~ (RCC_CKGAENR_DMA2DCKG)\n#define __HAL_RCC_LTDC_CLKGA_DISABLE()            (RCC->CKGAENR) &= ~ (RCC_CKGAENR_LTDCCKG)\n#define __HAL_RCC_GFXMMUM_CLKGA_DISABLE()         (RCC->CKGAENR) &= ~ (RCC_CKGAENR_GFXMMUMCKG)\n#define __HAL_RCC_AHB12_CLKGA_DISABLE()           (RCC->CKGAENR) &= ~ (RCC_CKGAENR_AHB12CKG)\n#define __HAL_RCC_AHB34_CLKGA_DISABLE()           (RCC->CKGAENR) &= ~ (RCC_CKGAENR_AHB34CKG)\n#define __HAL_RCC_FLIFT_CLKGA_DISABLE()           (RCC->CKGAENR) &= ~ (RCC_CKGAENR_FLIFTCKG)\n#define __HAL_RCC_OCTOSPI2_CLKGA_DISABLE()        (RCC->CKGAENR) &= ~ (RCC_CKGAENR_OCTOSPI2CKG)\n#define __HAL_RCC_FMC_CLKGA_DISABLE()             (RCC->CKGAENR) &= ~ (RCC_CKGAENR_FMCCKG)\n#define __HAL_RCC_OCTOSPI1_CLKGA_DISABLE()        (RCC->CKGAENR) &= ~ (RCC_CKGAENR_OCTOSPI1CKG)\n#define __HAL_RCC_AXIRAM1_CLKGA_DISABLE()         (RCC->CKGAENR) &= ~ (RCC_CKGAENR_AXIRAM1CKG)\n#define __HAL_RCC_AXIRAM2_CLKGA_DISABLE()         (RCC->CKGAENR) &= ~ (RCC_CKGAENR_AXIRAM2CKG)\n#define __HAL_RCC_AXIRAM3_CLKGA_DISABLE()         (RCC->CKGAENR) &= ~ (RCC_CKGAENR_AXIRAM3CKG)\n#define __HAL_RCC_GFXMMUS_CLKGA_DISABLE()         (RCC->CKGAENR) &= ~ (RCC_CKGAENR_GFXMMUSCKG)\n#define __HAL_RCC_ECCRAM_CLKGA_DISABLE()          (RCC->CKGAENR) &= ~ (RCC_CKGAENR_ECCRAMCKG)\n#define __HAL_RCC_EXTI_CLKGA_DISABLE()            (RCC->CKGAENR) &= ~ (RCC_CKGAENR_EXTICKG)\n#define __HAL_RCC_JTAG_CLKGA_DISABLE()            (RCC->CKGAENR) &= ~ (RCC_CKGAENR_JTAGCKG)\n\n#endif /* RCC_CKGAENR_AXICKG */\n\n\n\n\n/** @brief  Macro to enable or disable the Internal High Speed oscillator (HSI).\n  * @note     After enabling the HSI, the application software should wait on\n  *           HSIRDY flag to be set indicating that HSI clock is stable and can\n  *           be used to clock the PLL and/or system clock.\n  * @note     HSI can not be stopped if it is used directly or through the PLL\n  *           as system clock. In this case, you have to select another source\n  *           of the system clock then stop the HSI.\n  * @note     The HSI is stopped by hardware when entering STOP and STANDBY modes.\n  * @param    __STATE__ specifies the new state of the HSI.\n  *           This parameter can be one of the following values:\n  *            @arg RCC_HSI_OFF turn OFF the HSI oscillator\n  *            @arg RCC_HSI_ON turn ON the HSI oscillator\n  *            @arg RCC_HSI_DIV1 turn ON the HSI oscillator and divide it by 1 (default after reset)\n  *            @arg RCC_HSI_DIV2 turn ON the HSI oscillator and divide it by 2\n  *            @arg RCC_HSI_DIV4 turn ON the HSI oscillator and divide it by 4\n  *            @arg RCC_HSI_DIV8 turn ON the HSI oscillator and divide it by 8\n  * @note   When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator\n  *         clock cycles.\n  */\n#define __HAL_RCC_HSI_CONFIG(__STATE__) \\\n                  MODIFY_REG(RCC->CR, RCC_CR_HSION | RCC_CR_HSIDIV , (uint32_t)(__STATE__))\n\n\n/** @brief  Macro to get the HSI divider.\n  * @retval The HSI divider. The returned value can be one\n  *         of the following:\n  *            - RCC_CR_HSIDIV_1  HSI oscillator divided by 1 (default after reset)\n  *            - RCC_CR_HSIDIV_2  HSI oscillator divided by 2\n  *            - RCC_CR_HSIDIV_4  HSI oscillator divided by 4\n  *            - RCC_CR_HSIDIV_8  HSI oscillator divided by 8\n  */\n#define __HAL_RCC_GET_HSI_DIVIDER() ((uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSIDIV)))\n\n/** @brief  Macros to enable or disable the Internal High Speed oscillator (HSI).\n  * @note   The HSI is stopped by hardware when entering STOP and STANDBY modes.\n  *         It is used (enabled by hardware) as system clock source after start-up\n  *         from Reset, wakeup from STOP and STANDBY mode, or in case of failure\n  *         of the HSE used directly or indirectly as system clock (if the Clock\n  *         Security System CSS is enabled).\n  * @note   HSI can not be stopped if it is used as system clock source. In this case,\n  *         you have to select another source of the system clock then stop the HSI.\n  * @note   After enabling the HSI, the application software should wait on HSIRDY\n  *         flag to be set indicating that HSI clock is stable and can be used as\n  *         system clock source.\n  *         This parameter can be: ENABLE or DISABLE.\n  * @note   When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator\n  *         clock cycles.\n  */\n#define __HAL_RCC_HSI_ENABLE()  SET_BIT(RCC->CR, RCC_CR_HSION)\n#define __HAL_RCC_HSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSION)\n\n\n/** @brief  Macro to adjust the Internal High Speed oscillator (HSI) calibration value.\n  * @note   The calibration is used to compensate for the variations in voltage\n  *         and temperature that influence the frequency of the internal HSI RC.\n  * @param  __HSICalibrationValue__: specifies the calibration trimming value.\n  *         This parameter must be a number between 0 and 0x7F (3F for Rev Y device).\n  */\n#if defined(RCC_VER_X)\n#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICalibrationValue__)                                                                   \\\n           do {                                                                                                                          \\\n              if(HAL_GetREVID() <= REV_ID_Y)                                                                                             \\\n             {                                                                                                                           \\\n                if((__HSICalibrationValue__) == RCC_HSICALIBRATION_DEFAULT)                                                              \\\n                {                                                                                                                        \\\n                  MODIFY_REG(RCC->HSICFGR, HAL_RCC_REV_Y_HSITRIM_Msk, ((uint32_t)0x20) << HAL_RCC_REV_Y_HSITRIM_Pos);                    \\\n                }                                                                                                                        \\\n                else                                                                                                                     \\\n                {                                                                                                                        \\\n               MODIFY_REG(RCC->HSICFGR, HAL_RCC_REV_Y_HSITRIM_Msk, (uint32_t)(__HSICalibrationValue__) << HAL_RCC_REV_Y_HSITRIM_Pos);    \\\n             }                                                                                                                           \\\n              }                                                                                                                          \\\n             else                                                                                                                        \\\n             {                                                                                                                           \\\n               MODIFY_REG(RCC->HSICFGR, RCC_HSICFGR_HSITRIM, (uint32_t)(__HSICalibrationValue__) << RCC_HSICFGR_HSITRIM_Pos);            \\\n             }                                                                                                                           \\\n           } while(0)\n\n#else\n#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICalibrationValue__)                                                                   \\\n               MODIFY_REG(RCC->HSICFGR, RCC_HSICFGR_HSITRIM, (uint32_t)(__HSICalibrationValue__) << RCC_HSICFGR_HSITRIM_Pos);\n#endif /*RCC_VER_X*/\n/**\n  * @brief    Macros to enable or disable the force of the Internal High Speed oscillator (HSI)\n  *           in STOP mode to be quickly available as kernel clock for some peripherals.\n  * @note     Keeping the HSI ON in STOP mode allows to avoid slowing down the communication\n  *           speed because of the HSI start-up time.\n  * @note     The enable of this function has not effect on the HSION bit.\n  *           This parameter can be: ENABLE or DISABLE.\n  * @retval None\n  */\n#define __HAL_RCC_HSISTOP_ENABLE()     SET_BIT(RCC->CR, RCC_CR_HSIKERON)\n#define __HAL_RCC_HSISTOP_DISABLE()    CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON)\n\n\n/**\n  * @brief  Macro to enable or disable the Internal High Speed oscillator for USB (HSI48).\n  * @note   After enabling the HSI48, the application software should wait on\n  *         HSI48RDY flag to be set indicating that HSI48 clock is stable and can\n  *         be used to clock the USB.\n  * @note   The HSI48 is stopped by hardware when entering STOP and STANDBY modes.\n  */\n#define __HAL_RCC_HSI48_ENABLE()    SET_BIT(RCC->CR, RCC_CR_HSI48ON);\n\n#define __HAL_RCC_HSI48_DISABLE()   CLEAR_BIT(RCC->CR, RCC_CR_HSI48ON);\n\n/**\n  * @brief  Macros to enable or disable the Internal  oscillator (CSI).\n  * @note     The CSI is stopped by hardware when entering STOP and STANDBY modes.\n  *           It is used (enabled by hardware) as system clock source after\n  *           start-up from Reset, wakeup from STOP and STANDBY mode, or in case\n  *           of failure of the HSE used directly or indirectly as system clock\n  *           (if the Clock Security System CSS is enabled).\n  * @note     CSI can not be stopped if it is used as system clock source.\n  *           In this case, you have to select another source of the system\n  *           clock then stop the CSI.\n  * @note     After enabling the CSI, the application software should wait on\n  *           CSIRDY flag to be set indicating that CSI clock is stable and can\n  *           be used as system clock source.\n  * @note     When the CSI is stopped, CSIRDY flag goes low after 6 CSI oscillator\n  *           clock cycles.\n  */\n#define __HAL_RCC_CSI_ENABLE()  SET_BIT(RCC->CR, RCC_CR_CSION)\n#define __HAL_RCC_CSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_CSION)\n\n/** @brief  Macro Adjusts the Internal  oscillator (CSI) calibration value.\n  * @note   The calibration is used to compensate for the variations in voltage\n  *         and temperature that influence the frequency of the internal CSI RC.\n  * @param  __CSICalibrationValue__: specifies the calibration trimming value.\n  *         This parameter must be a number between 0 and 0x1F.\n  */\n#if defined(RCC_VER_X)\n#define __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(__CSICalibrationValue__)                                                                   \\\n           do {                                                                                                                          \\\n             if(HAL_GetREVID() <= REV_ID_Y)                                                                                              \\\n             {                                                                                                                           \\\n                if((__CSICalibrationValue__) == RCC_CSICALIBRATION_DEFAULT)                                                              \\\n                {                                                                                                                        \\\n                  MODIFY_REG(RCC->HSICFGR, HAL_RCC_REV_Y_CSITRIM_Msk, ((uint32_t)0x10) << HAL_RCC_REV_Y_CSITRIM_Pos);                    \\\n                }                                                                                                                        \\\n                else                                                                                                                     \\\n                {                                                                                                                        \\\n                  MODIFY_REG(RCC->HSICFGR, HAL_RCC_REV_Y_CSITRIM_Msk, (uint32_t)(__CSICalibrationValue__) << HAL_RCC_REV_Y_CSITRIM_Pos); \\\n                }                                                                                                                        \\\n             }                                                                                                                           \\\n             else                                                                                                                        \\\n             {                                                                                                                           \\\n               MODIFY_REG(RCC->CSICFGR, RCC_CSICFGR_CSITRIM, (uint32_t)(__CSICalibrationValue__) << RCC_CSICFGR_CSITRIM_Pos);            \\\n             }                                                                                                                           \\\n           } while(0)\n\n#else\n#define __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(__CSICalibrationValue__)                                                                   \\\n           do {                                                                                                                          \\\n               MODIFY_REG(RCC->CSICFGR, RCC_CSICFGR_CSITRIM, (uint32_t)(__CSICalibrationValue__) << RCC_CSICFGR_CSITRIM_Pos);            \\\n               } while(0)\n\n#endif /*RCC_VER_X*/\n/**\n  * @brief    Macros to enable or disable the force of the Low-power Internal oscillator (CSI)\n  *           in STOP mode to be quickly available as kernel clock for USARTs and I2Cs.\n  * @note     Keeping the CSI ON in STOP mode allows to avoid slowing down the communication\n  *           speed because of the CSI start-up time.\n  * @note     The enable of this function has not effect on the CSION bit.\n  *           This parameter can be: ENABLE or DISABLE.\n  * @retval None\n  */\n#define __HAL_RCC_CSISTOP_ENABLE()     SET_BIT(RCC->CR, RCC_CR_CSIKERON)\n#define __HAL_RCC_CSISTOP_DISABLE()    CLEAR_BIT(RCC->CR, RCC_CR_CSIKERON)\n\n\n/** @brief  Macros to enable or disable the Internal Low Speed oscillator (LSI).\n  * @note   After enabling the LSI, the application software should wait on\n  *         LSIRDY flag to be set indicating that LSI clock is stable and can\n  *         be used to clock the IWDG and/or the RTC.\n  * @note   LSI can not be disabled if the IWDG is running.\n  * @note   When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator\n  *         clock cycles.\n  */\n#define __HAL_RCC_LSI_ENABLE()         SET_BIT(RCC->CSR, RCC_CSR_LSION)\n#define __HAL_RCC_LSI_DISABLE()        CLEAR_BIT(RCC->CSR, RCC_CSR_LSION)\n\n/**\n  * @brief  Macro to configure the External High Speed oscillator (__HSE__).\n  * @note   After enabling the HSE (RCC_HSE_ON, RCC_HSE_BYPASS or RCC_HSE_BYPASS_DIGITAL),\n  *         the application software should wait on HSERDY flag to be set indicating\n  *         that HSE clock is stable and can be used to clock the PLL and/or system clock.\n  * @note   HSE state can not be changed if it is used directly or through the\n  *         PLL as system clock. In this case, you have to select another source\n  *         of the system clock then change the HSE state (ex. disable it).\n  * @note   The HSE is stopped by hardware when entering STOP and STANDBY modes.\n  * @note   This function reset the CSSON bit, so if the clock security system(CSS)\n  *         was previously enabled you have to enable it again after calling this\n  *         function.\n  * @param  __STATE__: specifies the new state of the HSE.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_HSE_OFF: turn OFF the HSE oscillator, HSERDY flag goes low after\n  *                              6 HSE oscillator clock cycles.\n  *            @arg RCC_HSE_ON: turn ON the HSE oscillator.\n  *            @arg RCC_HSE_BYPASS: HSE oscillator bypassed with external clock.\n  *            @arg RCC_HSE_BYPASS_DIGITAL: HSE oscillator bypassed with digital external clock. (*)\n  *\n  * (*): Only available on stm32h7a3xx, stm32h7b3xx and stm32h7b0xx family lines.\n  */\n#if defined(RCC_CR_HSEEXT)\n#define __HAL_RCC_HSE_CONFIG(__STATE__)                                \\\n                    do {                                               \\\n                      if ((__STATE__) == RCC_HSE_ON)                   \\\n                      {                                                \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEON);                \\\n                      }                                                \\\n                      else if ((__STATE__) == RCC_HSE_OFF)             \\\n                      {                                                \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);              \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEEXT);             \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);             \\\n                      }                                                \\\n                      else if ((__STATE__) == RCC_HSE_BYPASS)          \\\n                      {                                                \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEBYP);               \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEEXT);             \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEON);                \\\n                      }                                                \\\n                      else if((__STATE__) == RCC_HSE_BYPASS_DIGITAL)   \\\n                      {                                                \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEBYP);               \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEEXT);               \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEON);                \\\n                      }                                                \\\n                      else                                             \\\n                      {                                                \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);              \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);             \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEEXT);             \\\n                      }                                                \\\n                    } while(0)\n#else\n#define __HAL_RCC_HSE_CONFIG(__STATE__)                         \\\n                    do {                                        \\\n                      if ((__STATE__) == RCC_HSE_ON)            \\\n                      {                                         \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEON);         \\\n                      }                                         \\\n                      else if ((__STATE__) == RCC_HSE_OFF)      \\\n                      {                                         \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);       \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);      \\\n                      }                                         \\\n                      else if ((__STATE__) == RCC_HSE_BYPASS)   \\\n                      {                                         \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEBYP);        \\\n                        SET_BIT(RCC->CR, RCC_CR_HSEON);         \\\n                      }                                         \\\n                      else                                      \\\n                      {                                         \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);       \\\n                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);      \\\n                      }                                         \\\n                    } while(0)\n#endif /* RCC_CR_HSEEXT */\n\n/** @defgroup RCC_LSE_Configuration LSE Configuration\n  * @{\n  */\n\n/**\n  * @brief  Macro to configure the External Low Speed oscillator (LSE).\n  * @note   Transition LSE Bypass to LSE On and LSE On to LSE Bypass are not supported by this macro.\n  *         User should request a transition to LSE Off first and then LSE On or LSE Bypass.\n  * @note   The external input clock can have a frequency up to 1 MHz and be low swing (analog) or digital(*).\n            A duty cycle close to 50% is recommended.\n  * @note   As the LSE is in the Backup domain and write access is denied to\n  *         this domain after reset, you have to enable write access using\n  *         HAL_PWR_EnableBkUpAccess() function before to configure the LSE\n  *         (to be done once after reset).\n  * @note   After enabling the LSE (RCC_LSE_ON, RCC_LSE_BYPASS or RCC_LSE_BYPASS_DIGITAL*), the application\n  *         software should wait on LSERDY flag to be set indicating that LSE clock\n  *         is stable and can be used to clock the RTC.\n  * @note   If the RTC is used, the LSE bypass must not be configured in digital mode but in low swing analog mode (*)\n  * @param  __STATE__: specifies the new state of the LSE.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_LSE_OFF: turn OFF the LSE oscillator, LSERDY flag goes low after\n  *                              6 LSE oscillator clock cycles.\n  *            @arg RCC_LSE_ON: turn ON the LSE oscillator.\n  *            @arg RCC_LSE_BYPASS: LSE oscillator bypassed with external clock.\n  *            @arg RCC_LSE_BYPASS_DIGITAL: LSE oscillator bypassed with external digital clock. (*)\n  *\n  *         (*) Available on some STM32H7 lines only.\n  */\n#if defined(RCC_BDCR_LSEEXT)\n#define __HAL_RCC_LSE_CONFIG(__STATE__) \\\n                    do {                                               \\\n                      if((__STATE__) == RCC_LSE_ON)                    \\\n                      {                                                \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);            \\\n                      }                                                \\\n                      else if((__STATE__) == RCC_LSE_OFF)              \\\n                      {                                                \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);          \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEEXT);         \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);         \\\n                      }                                                \\\n                      else if((__STATE__) == RCC_LSE_BYPASS)           \\\n                      {                                                \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);           \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEEXT);         \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);            \\\n                      }                                                \\\n                      else if((__STATE__) == RCC_LSE_BYPASS_DIGITAL)   \\\n                      {                                                \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);           \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEEXT);           \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);            \\\n                      }                                                \\\n                      else                                             \\\n                      {                                                \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);          \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);         \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEEXT);         \\\n                      }                                                \\\n                    } while(0)\n#else\n\n#define __HAL_RCC_LSE_CONFIG(__STATE__) \\\n                    do {                                       \\\n                      if((__STATE__) == RCC_LSE_ON)            \\\n                      {                                        \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);    \\\n                      }                                        \\\n                      else if((__STATE__) == RCC_LSE_OFF)      \\\n                      {                                        \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);  \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \\\n                      }                                        \\\n                      else if((__STATE__) == RCC_LSE_BYPASS)   \\\n                      {                                        \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);   \\\n                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);    \\\n                      }                                        \\\n                      else                                     \\\n                      {                                        \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);  \\\n                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \\\n                      }                                        \\\n                    } while(0)\n\n#endif /* RCC_BDCR_LSEEXT */\n/**\n  * @}\n  */\n\n/** @brief  Macros to enable or disable the the RTC clock.\n  * @note   These macros must be used only after the RTC clock source was selected.\n  */\n#define __HAL_RCC_RTC_ENABLE()         SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN)\n#define __HAL_RCC_RTC_DISABLE()        CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN)\n\n/** @brief  Macros to configure the RTC clock (RTCCLK).\n  * @note   As the RTC clock configuration bits are in the Backup domain and write\n  *         access is denied to this domain after reset, you have to enable write\n  *         access using the Power Backup Access macro before to configure\n  *         the RTC clock source (to be done once after reset).\n  * @note   Once the RTC clock is configured it can't be changed unless the\n  *         Backup domain is reset using __HAL_RCC_BackupReset_RELEASE() macro, or by\n  *         a Power On Reset (POR).\n  * @param  __RTCCLKSource__: specifies the RTC clock source.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_RTCCLKSOURCE_LSE: LSE selected as RTC clock.\n  *            @arg RCC_RTCCLKSOURCE_LSI: LSI selected as RTC clock.\n  *            @arg RCC_RTCCLKSOURCE_HSE_DIVx: HSE clock divided by x selected\n  *                                            as RTC clock, where x:[2,31]\n  * @note   If the LSE or LSI is used as RTC clock source, the RTC continues to\n  *         work in STOP and STANDBY modes, and can be used as wakeup source.\n  *         However, when the HSE clock is used as RTC clock source, the RTC\n  *         cannot be used in STOP and STANDBY modes.\n  * @note   The maximum input clock frequency for RTC is 1MHz (when using HSE as\n  *         RTC clock source).\n  */\n#define __HAL_RCC_RTC_CLKPRESCALER(__RTCCLKSource__) (((__RTCCLKSource__) & RCC_BDCR_RTCSEL) == RCC_BDCR_RTCSEL) ?    \\\n                                                 MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, (((__RTCCLKSource__) & 0xFFFFCFFU) >> 4)) : CLEAR_BIT(RCC->CFGR, RCC_CFGR_RTCPRE)\n\n#define __HAL_RCC_RTC_CONFIG(__RTCCLKSource__) do { __HAL_RCC_RTC_CLKPRESCALER(__RTCCLKSource__);    \\\n                                                    RCC->BDCR |= ((__RTCCLKSource__) & 0x00000FFFU);  \\\n                                                   } while (0)\n\n#define  __HAL_RCC_GET_RTC_SOURCE() ((uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)))\n\n\n/** @brief  Macros to force or release the Backup domain reset.\n  * @note   This function resets the RTC peripheral (including the backup registers)\n  *         and the RTC clock source selection in RCC_BDCR register.\n  * @note   The BKPSRAM is not affected by this reset.\n  */\n#define __HAL_RCC_BACKUPRESET_FORCE()   SET_BIT(RCC->BDCR, RCC_BDCR_BDRST)\n#define __HAL_RCC_BACKUPRESET_RELEASE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST)\n\n/** @brief  Macros to enable or disable the main PLL.\n  * @note   After enabling the main PLL, the application software should wait on\n  *         PLLRDY flag to be set indicating that PLL clock is stable and can\n  *         be used as system clock source.\n  * @note   The main PLL can not be disabled if it is used as system clock source\n  * @note   The main PLL is disabled by hardware when entering STOP and STANDBY modes.\n  */\n#define __HAL_RCC_PLL_ENABLE()         SET_BIT(RCC->CR, RCC_CR_PLL1ON)\n#define __HAL_RCC_PLL_DISABLE()        CLEAR_BIT(RCC->CR, RCC_CR_PLL1ON)\n\n/**\n  * @brief  Enables or disables each clock output (PLL_P_CLK, PLL_Q_CLK, PLL_R_CLK)\n  * @note   Enabling/disabling  those Clocks can be done only when the PLL is disabled.\n  *         This is mainly used to save Power.\n  *        (The ck_pll_p of the System PLL cannot be stopped if used as System Clock).\n  * @param  __RCC_PLL1ClockOut__: specifies the PLL clock to be outputted\n  *          This parameter can be one of the following values:\n  *            @arg RCC_PLL1_DIVP: This clock is used to generate system clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *            @arg RCC_PLL1_DIVQ: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *            @arg RCC_PLL1_DIVR: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *\n  * (*) : For stm32h72xxx and stm32h73xxx family lines and requires to enable the CPU_FREQ_BOOST flash option byte, 520MHZ otherwise.\n  * (**) : For stm32h74xx and stm32h75xx family lines and requires the board to be connected on LDO regulator not SMPS, 400MHZ otherwise.\n  * (***): For stm32h7a3xx, stm32h7b3xx and stm32h7b0xx family lines.\n  *\n  * @retval None\n  */\n#define __HAL_RCC_PLLCLKOUT_ENABLE(__RCC_PLL1ClockOut__)   SET_BIT(RCC->PLLCFGR, (__RCC_PLL1ClockOut__))\n\n#define __HAL_RCC_PLLCLKOUT_DISABLE(__RCC_PLL1ClockOut__)  CLEAR_BIT(RCC->PLLCFGR, (__RCC_PLL1ClockOut__))\n\n\n/**\n  * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL1 VCO\n  * @note   Enabling/disabling  Fractional Part can be any time  without the need to stop the PLL1\n  * @retval None\n  */\n#define __HAL_RCC_PLLFRACN_ENABLE()   SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN)\n\n#define __HAL_RCC_PLLFRACN_DISABLE()  CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN)\n\n\n/**\n  * @brief  Macro to configures the main PLL clock source, multiplication and division factors.\n  * @note   This function must be used only when the main PLL is disabled.\n  *\n  * @param  __RCC_PLLSOURCE__: specifies the PLL entry clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_PLLSOURCE_CSI: CSI oscillator clock selected as PLL clock entry\n  *            @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry\n  *            @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry\n  * @note   This clock source (__RCC_PLLSource__) is common for the main PLL1 (main PLL) and PLL2 & PLL3 .\n  *\n  * @param  __PLLM1__: specifies the division factor for PLL VCO input clock\n  *          This parameter must be a number between 1 and 63.\n  * @note   You have to set the PLLM parameter correctly to ensure that the VCO input\n  *         frequency ranges from 1 to 16 MHz.\n  *\n  * @param  __PLLN1__: specifies the multiplication factor for PLL VCO output clock\n  *          This parameter must be a number between 4 and 512 or between 8 and 420(*).\n  * @note   You have to set the PLLN parameter correctly to ensure that the VCO\n  *         output frequency is between 150 and 420 MHz (when in medium VCO range) or\n  *         between 192 and 836 MHZ or between 128 and 560 MHZ(*) (when in wide VCO range)\n  *\n  * @param  __PLLP1__: specifies the division factor for system  clock.\n  *          This parameter must be a number between 2 or 1(**) and 128 (where odd numbers are not allowed) \n  *\n  * @param  __PLLQ1__: specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 1 and 128\n  *\n  * @param  __PLLR1__: specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 1 and 128\n  *\n  * @note   To insure an optimal behavior of the PLL when one of the post-divider (DIVP, DIVQ or DIVR)\n  *         is not used, application shall clear the enable bit (DIVyEN) and assign lowest possible \n  *         value to  __PLL1P__, __PLL1Q__ or __PLL1R__ parameters.\n  * @retval None\n  *\n  *  (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  *  (**): For stm32h72xxx and stm32h73xxx family lines.\n  */\n\n\n#define __HAL_RCC_PLL_CONFIG(__RCC_PLLSOURCE__, __PLLM1__, __PLLN1__, __PLLP1__, __PLLQ1__,__PLLR1__ ) \\\n                  do{ MODIFY_REG(RCC->PLLCKSELR, (RCC_PLLCKSELR_PLLSRC | RCC_PLLCKSELR_DIVM1) , ((__RCC_PLLSOURCE__) | ( (__PLLM1__) <<4U)));  \\\n                      WRITE_REG (RCC->PLL1DIVR , ( (((__PLLN1__) - 1U )& RCC_PLL1DIVR_N1) | ((((__PLLP1__) -1U ) << 9U) & RCC_PLL1DIVR_P1) | \\\n                                ((((__PLLQ1__) -1U) << 16U)& RCC_PLL1DIVR_Q1) | ((((__PLLR1__) - 1U) << 24U)& RCC_PLL1DIVR_R1))); \\\n                    } while(0)\n\n\n/** @brief  Macro to configure the PLLs clock source.\n  * @note   This function must be used only when all PLLs are disabled.\n  * @param  __PLLSOURCE__: specifies the PLLs entry clock source.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PLLSOURCE_CSI: CSI oscillator clock selected as PLL clock entry\n  *            @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry\n  *            @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry\n  *\n  */\n#define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLLSOURCE__) MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_PLLSRC, (__PLLSOURCE__))\n\n\n/**\n  * @brief  Macro to configures the main PLL clock Fractional Part Of The Multiplication Factor\n  *\n  * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL1 VCO\n  *\n  * @param  __RCC_PLL1FRACN__: specifies Fractional Part Of The Multiplication Factor for PLL1 VCO\n  *                            It should be a value between 0 and 8191\n  * @note   Warning: The software has to set correctly these bits to insure that the VCO\n  *                  output frequency is between its valid frequency range, which is:\n  *                   192 to 836 MHz or 128 to 560 MHz(*) if PLL1VCOSEL = 0\n  *                   150 to 420 MHz if PLL1VCOSEL = 1.\n  *\n  * (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  *\n  * @retval None\n  */\n #define  __HAL_RCC_PLLFRACN_CONFIG(__RCC_PLL1FRACN__) MODIFY_REG(RCC->PLL1FRACR, RCC_PLL1FRACR_FRACN1, (uint32_t)(__RCC_PLL1FRACN__) << RCC_PLL1FRACR_FRACN1_Pos)\n\n\n/** @brief  Macro to select  the PLL1  reference frequency range.\n  * @param  __RCC_PLL1VCIRange__: specifies the PLL1 input frequency range\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PLL1VCIRANGE_0: Range frequency is between 1 and 2 MHz\n  *            @arg RCC_PLL1VCIRANGE_1: Range frequency is between 2 and 4 MHz\n  *            @arg RCC_PLL1VCIRANGE_2: Range frequency is between 4 and 8 MHz\n  *            @arg RCC_PLL1VCIRANGE_3: Range frequency is between 8 and 16 MHz\n  * @retval None\n  */\n#define __HAL_RCC_PLL_VCIRANGE(__RCC_PLL1VCIRange__) \\\n                  MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1RGE, (__RCC_PLL1VCIRange__))\n\n\n/** @brief  Macro to select  the PLL1  reference frequency range.\n  * @param  __RCC_PLL1VCORange__: specifies the PLL1 input frequency range\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PLL1VCOWIDE: Range frequency is between 192 and 836 MHz or between 128 to 560 MHz(*)\n  *            @arg RCC_PLL1VCOMEDIUM: Range frequency is between 150 and 420 MHz\n  *\n  * (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  *\n  * @retval None\n  */\n#define __HAL_RCC_PLL_VCORANGE(__RCC_PLL1VCORange__) \\\n                  MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1VCOSEL, (__RCC_PLL1VCORange__))\n\n\n\n/** @brief  Macro to get the clock source used as system clock.\n  * @retval The clock source used as system clock. The returned value can be one\n  *         of the following:\n  *              - RCC_CFGR_SWS_CSI: CSI used as system clock.\n  *              - RCC_CFGR_SWS_HSI: HSI used as system clock.\n  *              - RCC_CFGR_SWS_HSE: HSE used as system clock.\n  *              - RCC_CFGR_SWS_PLL: PLL used as system clock.\n  */\n#define __HAL_RCC_GET_SYSCLK_SOURCE() ((uint32_t)(RCC->CFGR & RCC_CFGR_SWS))\n\n\n/**\n  * @brief Macro to configure the system clock source.\n  * @param __RCC_SYSCLKSOURCE__: specifies the system clock source.\n  * This parameter can be one of the following values:\n  *              - RCC_SYSCLKSOURCE_HSI: HSI oscillator is used as system clock source.\n  *              - RCC_SYSCLKSOURCE_CSI: CSI oscillator is used as system clock source.\n  *              - RCC_SYSCLKSOURCE_HSE: HSE oscillator is used as system clock source.\n  *              - RCC_SYSCLKSOURCE_PLLCLK: PLL output is used as system clock source.\n  */\n#define __HAL_RCC_SYSCLK_CONFIG(__RCC_SYSCLKSOURCE__) MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__RCC_SYSCLKSOURCE__))\n\n/** @brief  Macro to get the oscillator used as PLL clock source.\n  * @retval The oscillator used as PLL clock source. The returned value can be one\n  *         of the following:\n  *              - RCC_PLLSOURCE_NONE: No oscillator is used as PLL clock source.\n  *              - RCC_PLLSOURCE_CSI: CSI oscillator is used as PLL clock source.\n  *              - RCC_PLLSOURCE_HSI: HSI oscillator is used as PLL clock source.\n  *              - RCC_PLLSOURCE_HSE: HSE oscillator is used as PLL clock source.\n  */\n#define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC))\n\n/** @defgroup RCCEx_MCOx_Clock_Config RCC Extended MCOx Clock Config\n  * @{\n  */\n\n/** @brief  Macro to configure the MCO1 clock.\n  * @param  __MCOCLKSOURCE__ specifies the MCO clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_MCO1SOURCE_HSI: HSI clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_LSE: LSE clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_HSE: HSE clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_PLL1QCLK:  PLL1Q clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_HSI48: HSI48 (48MHZ) selected as MCO1 source\n  * @param  __MCODIV__ specifies the MCO clock prescaler.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_MCODIV_1 up to RCC_MCODIV_15  : divider applied to MCO1 clock\n  */\n#define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \\\n                 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), ((__MCOCLKSOURCE__) | (__MCODIV__)))\n\n/** @brief  Macro to configure the MCO2 clock.\n  * @param  __MCOCLKSOURCE__ specifies the MCO clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_MCO2SOURCE_SYSCLK: System clock (SYSCLK) selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_PLL2PCLK: PLL2P clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_HSE: HSE clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_PLLCLK:  PLL1P clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_CSICLK:  CSI clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_LSICLK:  LSI clock selected as MCO2 source\n  * @param  __MCODIV__ specifies the MCO clock prescaler.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_MCODIV_1 up to RCC_MCODIV_15  : divider applied to MCO2 clock\n  */\n#define __HAL_RCC_MCO2_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \\\n    MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), ((__MCOCLKSOURCE__) | ((__MCODIV__) << 7)));\n\n/**\n  * @}\n  */\n\n/**\n  * @brief  Macro to configure the External Low Speed oscillator (LSE) drive capability.\n  * @note   As the LSE is in the Backup domain and write access is denied to\n  *         this domain after reset, you have to enable write access using\n  *         HAL_PWR_EnableBkUpAccess() function before to configure the LSE\n  *         (to be done once after reset).\n  * @note   On STM32H7 Rev.B and above devices this can't be updated while LSE is ON.\n  * @param  __LSEDRIVE__: specifies the new state of the LSE drive capability.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_LSEDRIVE_LOW: LSE oscillator low drive capability.\n  *            @arg RCC_LSEDRIVE_MEDIUMLOW: LSE oscillator medium low drive capability.\n  *            @arg RCC_LSEDRIVE_MEDIUMHIGH: LSE oscillator medium high drive capability.\n  *            @arg RCC_LSEDRIVE_HIGH: LSE oscillator high drive capability.\n  * @retval None\n  */\n#if defined(RCC_VER_X)\n#define __HAL_RCC_LSEDRIVE_CONFIG(__LSEDRIVE__) \\\n           do{                                                                                                                                \\\n             if((HAL_GetREVID() <= REV_ID_Y) && (((__LSEDRIVE__) == RCC_LSEDRIVE_MEDIUMLOW) || ((__LSEDRIVE__) == RCC_LSEDRIVE_MEDIUMHIGH)))  \\\n             {                                                                                                                                \\\n              MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (~(uint32_t)(__LSEDRIVE__)) & RCC_BDCR_LSEDRV_Msk);                                      \\\n             }                                                                                                                                \\\n             else                                                                                                                             \\\n             {                                                                                                                                \\\n               MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__LSEDRIVE__));                                                              \\\n             }                                                                                                                                \\\n           } while(0)\n#else\n#define __HAL_RCC_LSEDRIVE_CONFIG(__LSEDRIVE__) \\\n               MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__LSEDRIVE__));\n#endif /*RCC_VER_X*/\n/**\n  * @brief  Macro to configure the wake up from stop clock.\n  * @param  __RCC_STOPWUCLK__: specifies the clock source used after wake up from stop\n  *         This parameter can be one of the following values:\n  *            @arg RCC_STOP_WAKEUPCLOCK_CSI: CSI selected as system clock source\n  *            @arg RCC_STOP_WAKEUPCLOCK_HSI: HSI selected as system clock source\n  * @retval None\n  */\n#define __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(__RCC_STOPWUCLK__) \\\n                  MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPWUCK, (__RCC_STOPWUCLK__))\n\n/**\n  * @brief  Macro to configure the Kernel wake up from stop clock.\n  * @param  __RCC_STOPKERWUCLK__: specifies the Kernel clock source used after wake up from stop\n  *         This parameter can be one of the following values:\n  *            @arg RCC_STOP_KERWAKEUPCLOCK_CSI: CSI selected as Kernel clock source\n  *            @arg RCC_STOP_KERWAKEUPCLOCK_HSI: HSI selected as Kernel clock source\n  * @retval None\n  */\n#define __HAL_RCC_KERWAKEUPSTOP_CLK_CONFIG(__RCC_STOPKERWUCLK__) \\\n                  MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPKERWUCK, (__RCC_STOPKERWUCLK__))\n\n/** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management\n  * @brief macros to manage the specified RCC Flags and interrupts.\n  * @{\n  */\n/** @brief  Enable RCC interrupt.\n  * @param  __INTERRUPT__: specifies the RCC interrupt sources to be enabled.\n  *         This parameter can be any combination of the following values:\n  *            @arg RCC_IT_LSIRDY: LSI ready interrupt\n  *            @arg RCC_IT_LSERDY: LSE ready interrupt\n  *            @arg RCC_IT_CSIRDY: HSI ready interrupt\n  *            @arg RCC_IT_HSIRDY: HSI ready interrupt\n  *            @arg RCC_IT_HSERDY: HSE ready interrupt\n  *            @arg RCC_IT_HSI48RDY: HSI48 ready interrupt\n  *            @arg RCC_IT_PLLRDY: main PLL ready interrupt\n  *            @arg RCC_IT_PLL2RDY: PLL2 ready interrupt\n  *            @arg RCC_IT_PLL3RDY: PLL3 ready interrupt\n  *            @arg RCC_IT_LSECSS: Clock security system interrupt\n  */\n#define __HAL_RCC_ENABLE_IT(__INTERRUPT__) SET_BIT(RCC->CIER, (__INTERRUPT__))\n\n/** @brief Disable RCC interrupt\n  * @param  __INTERRUPT__: specifies the RCC interrupt sources to be disabled.\n  *         This parameter can be any combination of the following values:\n  *            @arg RCC_IT_LSIRDY: LSI ready interrupt\n  *            @arg RCC_IT_LSERDY: LSE ready interrupt\n  *            @arg RCC_IT_CSIRDY: HSI ready interrupt\n  *            @arg RCC_IT_HSIRDY: HSI ready interrupt\n  *            @arg RCC_IT_HSERDY: HSE ready interrupt\n  *            @arg RCC_IT_HSI48RDY: HSI48 ready interrupt\n  *            @arg RCC_IT_PLLRDY: main PLL ready interrupt\n  *            @arg RCC_IT_PLL2RDY: PLL2 ready interrupt\n  *            @arg RCC_IT_PLL3RDY: PLL3 ready interrupt\n  *            @arg RCC_IT_LSECSS: Clock security system interrupt\n  */\n#define __HAL_RCC_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(RCC->CIER, (__INTERRUPT__))\n\n/** @brief  Clear the RCC's interrupt pending bits\n  * @param  __INTERRUPT__: specifies the interrupt pending bit to clear.\n  *         This parameter can be any combination of the following values:\n  *            @arg RCC_IT_LSIRDY: LSI ready interrupt\n  *            @arg RCC_IT_LSERDY: LSE ready interrupt\n  *            @arg RCC_IT_CSIRDY: CSI ready interrupt\n  *            @arg RCC_IT_HSIRDY: HSI ready interrupt\n  *            @arg RCC_IT_HSERDY: HSE ready interrupt\n  *            @arg RCC_IT_HSI48RDY: HSI48 ready interrupt\n  *            @arg RCC_IT_PLLRDY: main PLL ready interrupt\n  *            @arg RCC_IT_PLL2RDY: PLL2 ready interrupt\n  *            @arg RCC_IT_PLL3RDY: PLL3 ready interrupt\n  *            @arg RCC_IT_HSECSS: HSE Clock Security interrupt\n  *            @arg RCC_IT_LSECSS: Clock security system interrupt\n  */\n#define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (RCC->CICR = (__INTERRUPT__))\n\n/** @brief  Check the RCC's interrupt has occurred or not.\n  * @param  __INTERRUPT__: specifies the RCC interrupt source to check.\n  *         This parameter can be any combination of the following values:\n  *            @arg RCC_IT_LSIRDY: LSI ready interrupt\n  *            @arg RCC_IT_LSERDY: LSE ready interrupt\n  *            @arg RCC_IT_CSIRDY: CSI ready interrupt\n  *            @arg RCC_IT_HSIRDY: HSI ready interrupt\n  *            @arg RCC_IT_HSERDY: HSE ready interrupt\n  *            @arg RCC_IT_HSI48RDY: HSI48 ready interrupt\n  *            @arg RCC_IT_PLLRDY: main PLL ready interrupt\n  *            @arg RCC_IT_PLL2RDY: PLL2 ready interrupt\n  *            @arg RCC_IT_PLL3RDY: PLL3 ready interrupt\n  *            @arg RCC_IT_HSECSS: HSE Clock Security interrupt\n  *            @arg RCC_IT_LSECSS: Clock security system interrupt\n  * @retval The new state of __INTERRUPT__ (TRUE or FALSE).\n  */\n#define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIFR & (__INTERRUPT__)) == (__INTERRUPT__))\n\n/** @brief Set RMVF bit to clear the reset flags.\n  */\n#define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->RSR |= RCC_RSR_RMVF)\n\n#if defined(DUAL_CORE)\n#define __HAL_RCC_C1_CLEAR_RESET_FLAGS() (RCC_C1->RSR |= RCC_RSR_RMVF)\n\n#define __HAL_RCC_C2_CLEAR_RESET_FLAGS() (RCC_C2->RSR |= RCC_RSR_RMVF)\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n/** @brief  Check RCC flag is set or not.\n  * @param  __FLAG__: specifies the flag to check.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_FLAG_HSIRDY: HSI oscillator clock ready\n  *            @arg RCC_FLAG_HSIDIV: HSI divider flag\n  *            @arg RCC_FLAG_CSIRDY: CSI oscillator clock ready\n  *            @arg RCC_FLAG_HSI48RDY: HSI48 oscillator clock ready\n  *            @arg RCC_FLAG_HSERDY:  HSE oscillator clock ready\n  *            @arg RCC_FLAG_D1CKRDY:  Domain1 clock ready\n  *            @arg RCC_FLAG_D2CKRDY:  Domain2 clock ready\n  *            @arg RCC_FLAG_PLLRDY:  PLL1 clock ready\n  *            @arg RCC_FLAG_PLL2RDY: PLL2 clock ready\n  *            @arg RCC_FLAG_PLL3RDY: PLL3 clock ready\n  *            @arg RCC_FLAG_LSERDY: LSE oscillator clock ready\n  *            @arg RCC_FLAG_LSIRDY: LSI oscillator clock ready\n  *            @arg RCC_FLAG_C1RST:  CPU reset flag\n  *            @arg RCC_FLAG_C2RST:  CPU2 reset flag\n  *            @arg RCC_FLAG_D1RST:  D1 domain power switch reset flag\n  *            @arg RCC_FLAG_D2RST:  D2 domain power switch reset flag\n  *            @arg RCC_FLAG_BORRST: BOR reset flag\n  *            @arg RCC_FLAG_PINRST: Pin reset\n  *            @arg RCC_FLAG_PORRST: POR/PDR  reset\n  *            @arg RCC_FLAG_SFTR1ST: System reset from CPU reset flag\n  *            @arg RCC_FLAG_SFTR2ST: System reset from CPU2 reset flag\n  *            @arg RCC_FLAG_BORRST:   D2 domain power switch reset flag\n  *            @arg RCC_FLAG_IWDG1RST: CPU Independent Watchdog reset\n  *            @arg RCC_FLAG_IWDG2RST: CPU2 Independent Watchdog reset\n  *            @arg RCC_FLAG_WWDG2RST: Window Watchdog2 reset\n  *            @arg RCC_FLAG_WWDG1RST: Window Watchdog1 reset\n  *            @arg RCC_FLAG_LPWR1RST: Reset due to illegal D1 DSTANDBY or CPU CSTOP flag\n  *            @arg RCC_FLAG_LPWR2RST: Reset due to illegal D2 DSTANDBY or CPU2 CSTOP flag\n  * @retval The new state of __FLAG__ (TRUE or FALSE).\n  */\n#define RCC_FLAG_MASK  ((uint8_t)0x1F)\n#define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U)? RCC->CR :((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \\\n((((__FLAG__) >> 5U) == 3U)? RCC->CSR : ((((__FLAG__) >> 5U) == 4U)? RCC->RSR :RCC->CIFR))))  & (1U << ((__FLAG__) & RCC_FLAG_MASK)))!= 0U)? 1U : 0U)\n\n#define __HAL_RCC_C1_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U)? RCC->CR :((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \\\n((((__FLAG__) >> 5U) == 3U)? RCC->CSR : ((((__FLAG__) >> 5U) == 4U)? RCC_C1->RSR :RCC->CIFR))))  & (1U << ((__FLAG__) & RCC_FLAG_MASK)))!= 0U)? 1U : 0U)\n\n#define __HAL_RCC_C2_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U)? RCC->CR :((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \\\n((((__FLAG__) >> 5U) == 3U)? RCC->CSR : ((((__FLAG__) >> 5U) == 4U)? RCC_C2->RSR :RCC->CIFR))))  & (1U << ((__FLAG__) & RCC_FLAG_MASK)))!= 0U)? 1U : 0U)\n\n#else\n\n/** @brief  Check RCC flag is set or not.\n  * @param  __FLAG__: specifies the flag to check.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_FLAG_HSIRDY: HSI oscillator clock ready\n  *            @arg RCC_FLAG_HSIDIV: HSI divider flag\n  *            @arg RCC_FLAG_CSIRDY: CSI oscillator clock ready\n  *            @arg RCC_FLAG_HSI48RDY: HSI48 oscillator clock ready\n  *            @arg RCC_FLAG_HSERDY:  HSE oscillator clock ready\n  *            @arg RCC_FLAG_D1CKRDY:  Domain1 clock ready (*)\n  *            @arg RCC_FLAG_D2CKRDY:  Domain2 clock ready (*)\n  *            @arg RCC_FLAG_CPUCKRDY: CPU Domain clock ready (CPU, APB3, bus matrix1 and related memories) (*)\n  *            @arg RCC_FLAG_CDCKRDY:  CPU Domain clock ready (*)\n  *            @arg RCC_FLAG_PLLRDY:  PLL1 clock ready\n  *            @arg RCC_FLAG_PLL2RDY: PLL2 clock ready\n  *            @arg RCC_FLAG_PLL3RDY: PLL3 clock ready\n  *            @arg RCC_FLAG_LSERDY: LSE oscillator clock ready\n  *            @arg RCC_FLAG_LSIRDY: LSI oscillator clock ready\n  *            @arg RCC_FLAG_CPURST: CPU reset flag\n  *            @arg RCC_FLAG_D1RST:  D1 domain power switch reset flag (*)\n  *            @arg RCC_FLAG_D2RST:  D2 domain power switch reset flag (*)\n  *            @arg RCC_FLAG_CDRST:  CD domain power switch reset flag (*)\n  *            @arg RCC_FLAG_BORRST: BOR reset flag\n  *            @arg RCC_FLAG_PINRST: Pin reset\n  *            @arg RCC_FLAG_PORRST: POR/PDR  reset\n  *            @arg RCC_FLAG_SFTRST: System reset from CPU reset flag\n  *            @arg RCC_FLAG_BORRST:   D2 domain power switch reset flag\n  *            @arg RCC_FLAG_IWDG1RST: CPU Independent Watchdog reset\n  *            @arg RCC_FLAG_WWDG1RST: Window Watchdog1 reset\n  *            @arg RCC_FLAG_LPWR1RST: Reset due to illegal D1 DSTANDBY or CPU CSTOP flag\n  *            @arg RCC_FLAG_LPWR2RST: Reset due to illegal D2 DSTANDBY flag\n  * @retval The new state of __FLAG__ (TRUE or FALSE).\n  *\n  *  (*) Available on some STM32H7 lines only.\n  */\n#define RCC_FLAG_MASK  ((uint8_t)0x1F)\n#define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U)? RCC->CR :((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \\\n((((__FLAG__) >> 5U) == 3U)? RCC->CSR : ((((__FLAG__) >> 5U) == 4U)? RCC->RSR :RCC->CIFR))))  & (1UL << ((__FLAG__) & RCC_FLAG_MASK)))!= 0U)? 1U : 0U)\n#endif /*DUAL_CORE*/\n\n/**\n  * @}\n  */\n\n#define RCC_GET_PLL_OSCSOURCE() ((RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC) >> RCC_PLLCKSELR_PLLSRC_Pos)\n\n/**\n  * @}\n  */\n\n/* Include RCC HAL Extension module */\n#include \"stm32h7xx_hal_rcc_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n /** @addtogroup RCC_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup RCC_Exported_Functions_Group1\n  * @{\n  */\n/* Initialization and de-initialization functions  ******************************/\nHAL_StatusTypeDef HAL_RCC_DeInit(void);\nHAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);\nHAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency);\n\n/**\n  * @}\n  */\n\n/** @addtogroup RCC_Exported_Functions_Group2\n  * @{\n  */\n/* Peripheral Control functions  ************************************************/\nvoid     HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv);\nvoid     HAL_RCC_EnableCSS(void);\nvoid     HAL_RCC_DisableCSS(void);\nuint32_t HAL_RCC_GetSysClockFreq(void);\nuint32_t HAL_RCC_GetHCLKFreq(void);\nuint32_t HAL_RCC_GetPCLK1Freq(void);\nuint32_t HAL_RCC_GetPCLK2Freq(void);\nvoid     HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);\nvoid     HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency);\n/* CSS NMI IRQ handler */\nvoid     HAL_RCC_NMI_IRQHandler(void);\n/* User Callbacks in non blocking mode (IT mode) */\nvoid     HAL_RCC_CCSCallback(void);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup RCC_Private_Constants RCC Private Constants\n  * @{\n  */\n\n#define HSE_TIMEOUT_VALUE          HSE_STARTUP_TIMEOUT\n#define HSI_TIMEOUT_VALUE          (2U)    /* 2 ms */\n#define HSI48_TIMEOUT_VALUE        (2U)    /* 2 ms */\n#define CSI_TIMEOUT_VALUE          (2U)    /* 2 ms */\n#define LSI_TIMEOUT_VALUE          (2U)    /* 2 ms */\n#define PLL_TIMEOUT_VALUE          (2U)    /* 2 ms */\n#define CLOCKSWITCH_TIMEOUT_VALUE  (5000U) /* 5 s  */\n#define RCC_DBP_TIMEOUT_VALUE      (100U)\n#define RCC_LSE_TIMEOUT_VALUE      LSE_STARTUP_TIMEOUT\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @addtogroup RCC_Private_Macros RCC Private Macros\n  * @{\n  */\n\n/** @defgroup RCC_IS_RCC_Definitions RCC Private macros to check input parameters\n  * @{\n  */\n\n#define IS_RCC_OSCILLATORTYPE(OSCILLATOR) (((OSCILLATOR) == RCC_OSCILLATORTYPE_NONE)                           || \\\n                                           (((OSCILLATOR) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \\\n                                           (((OSCILLATOR) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \\\n                                           (((OSCILLATOR) & RCC_OSCILLATORTYPE_CSI) == RCC_OSCILLATORTYPE_CSI) || \\\n                                           (((OSCILLATOR) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \\\n                                           (((OSCILLATOR) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) || \\\n                                           (((OSCILLATOR) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48))\n\n#if defined(RCC_CR_HSEEXT)\n#define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \\\n                         ((HSE) == RCC_HSE_BYPASS) || ((HSE) == RCC_HSE_BYPASS_DIGITAL))\n#else\n#define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \\\n                         ((HSE) == RCC_HSE_BYPASS))\n#endif /* RCC_CR_HSEEXT */\n\n#if defined(RCC_BDCR_LSEEXT)\n#define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \\\n                         ((LSE) == RCC_LSE_BYPASS) || ((LSE) == RCC_LSE_BYPASS_DIGITAL))\n#else\n#define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \\\n                         ((LSE) == RCC_LSE_BYPASS))\n#endif /* RCC_BDCR_LSEEXT */\n\n#define IS_RCC_HSI(HSI) (((HSI) == RCC_HSI_OFF) || ((HSI) == RCC_HSI_ON)    || \\\n                         ((HSI) == RCC_HSI_DIV1) || ((HSI) == RCC_HSI_DIV2) || \\\n                         ((HSI) == RCC_HSI_DIV4) || ((HSI) == RCC_HSI_DIV8))\n\n#define IS_RCC_HSI48(HSI48) (((HSI48) == RCC_HSI48_OFF) || ((HSI48) == RCC_HSI48_ON))\n\n#define IS_RCC_LSI(LSI) (((LSI) == RCC_LSI_OFF) || ((LSI) == RCC_LSI_ON))\n\n#define IS_RCC_CSI(CSI) (((CSI) == RCC_CSI_OFF) || ((CSI) == RCC_CSI_ON))\n\n#define IS_RCC_PLL(PLL) (((PLL) == RCC_PLL_NONE) ||((PLL) == RCC_PLL_OFF) || \\\n                         ((PLL) == RCC_PLL_ON))\n\n#define IS_RCC_PLLSOURCE(SOURCE) (((SOURCE) == RCC_PLLSOURCE_CSI)  || \\\n                                  ((SOURCE) == RCC_PLLSOURCE_HSI)  || \\\n                                  ((SOURCE) == RCC_PLLSOURCE_NONE) || \\\n                                  ((SOURCE) == RCC_PLLSOURCE_HSE))\n\n#define IS_RCC_PLLRGE_VALUE(VALUE) (((VALUE) == RCC_PLL1VCIRANGE_0) || \\\n                                    ((VALUE) == RCC_PLL1VCIRANGE_1) || \\\n                                    ((VALUE) == RCC_PLL1VCIRANGE_2) || \\\n                                    ((VALUE) == RCC_PLL1VCIRANGE_3))\n\n#define IS_RCC_PLLVCO_VALUE(VALUE) (((VALUE) == RCC_PLL1VCOWIDE) || ((VALUE) == RCC_PLL1VCOMEDIUM))\n\n#define IS_RCC_PLLFRACN_VALUE(VALUE) ((VALUE) <= 8191U)\n\n#define IS_RCC_PLLM_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 63U))\n#if !defined(RCC_VER_2_0)\n#define IS_RCC_PLLN_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))\n#else\n#define IS_RCC_PLLN_VALUE(VALUE) ((8U <= (VALUE)) && ((VALUE) <= 420U))\n#endif /* !RCC_VER_2_0 */\n#define IS_RCC_PLLP_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n#define IS_RCC_PLLQ_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n#define IS_RCC_PLLR_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n\n#define IS_RCC_PLLCLOCKOUT_VALUE(VALUE) (((VALUE) == RCC_PLL1_DIVP) || \\\n                                         ((VALUE) == RCC_PLL1_DIVQ) || \\\n                                         ((VALUE) == RCC_PLL1_DIVR))\n\n#define IS_RCC_CLOCKTYPE(CLK) ((1U <= (CLK)) && ((CLK) <= 0x3FU))\n\n#define IS_RCC_SYSCLKSOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSOURCE_CSI) || \\\n                                     ((SOURCE) == RCC_SYSCLKSOURCE_HSI) || \\\n                                     ((SOURCE) == RCC_SYSCLKSOURCE_HSE) || \\\n                                     ((SOURCE) == RCC_SYSCLKSOURCE_PLLCLK))\n\n#define IS_RCC_SYSCLK(SYSCLK) (((SYSCLK) == RCC_SYSCLK_DIV1)   || ((SYSCLK) == RCC_SYSCLK_DIV2)   || \\\n                               ((SYSCLK) == RCC_SYSCLK_DIV4)   || ((SYSCLK) == RCC_SYSCLK_DIV8)   || \\\n                               ((SYSCLK) == RCC_SYSCLK_DIV16)  || ((SYSCLK) == RCC_SYSCLK_DIV64)  || \\\n                               ((SYSCLK) == RCC_SYSCLK_DIV128) || ((SYSCLK) == RCC_SYSCLK_DIV256) || \\\n                               ((SYSCLK) == RCC_SYSCLK_DIV512))\n\n\n#define IS_RCC_HCLK(HCLK) (((HCLK) == RCC_HCLK_DIV1)   || ((HCLK) == RCC_HCLK_DIV2)   || \\\n                           ((HCLK) == RCC_HCLK_DIV4)   || ((HCLK) == RCC_HCLK_DIV8)   || \\\n                           ((HCLK) == RCC_HCLK_DIV16)  || ((HCLK) == RCC_HCLK_DIV64)  || \\\n                           ((HCLK) == RCC_HCLK_DIV128) || ((HCLK) == RCC_HCLK_DIV256) || \\\n                           ((HCLK) == RCC_HCLK_DIV512))\n\n#define IS_RCC_CDPCLK1(CDPCLK1) (((CDPCLK1) == RCC_APB3_DIV1) || ((CDPCLK1) == RCC_APB3_DIV2) || \\\n                                 ((CDPCLK1) == RCC_APB3_DIV4) || ((CDPCLK1) == RCC_APB3_DIV8) || \\\n                                 ((CDPCLK1) == RCC_APB3_DIV16))\n\n#define IS_RCC_D1PCLK1 IS_RCC_CDPCLK1  /* for legacy compatibility between H7 lines */\n\n#define IS_RCC_PCLK1(PCLK1) (((PCLK1) == RCC_APB1_DIV1) || ((PCLK1) == RCC_APB1_DIV2) || \\\n                             ((PCLK1) == RCC_APB1_DIV4) || ((PCLK1) == RCC_APB1_DIV8) || \\\n                            ((PCLK1) == RCC_APB1_DIV16))\n\n#define IS_RCC_PCLK2(PCLK2) (((PCLK2) == RCC_APB2_DIV1) || ((PCLK2) == RCC_APB2_DIV2) || \\\n                             ((PCLK2) == RCC_APB2_DIV4) || ((PCLK2) == RCC_APB2_DIV8) || \\\n                             ((PCLK2) == RCC_APB2_DIV16))\n\n#define IS_RCC_SRDPCLK1(SRDPCLK1) (((SRDPCLK1) == RCC_APB4_DIV1) || ((SRDPCLK1) == RCC_APB4_DIV2) || \\\n                                  ((SRDPCLK1) == RCC_APB4_DIV4)  || ((SRDPCLK1) == RCC_APB4_DIV8) || \\\n                                  ((SRDPCLK1) == RCC_APB4_DIV16))\n\n#define IS_RCC_D3PCLK1 IS_RCC_SRDPCLK1 /* for legacy compatibility between H7 lines*/\n\n#define IS_RCC_RTCCLKSOURCE(SOURCE) (((SOURCE) == RCC_RTCCLKSOURCE_LSE)       || ((SOURCE) == RCC_RTCCLKSOURCE_LSI)       || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV2)  || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV3)  || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV4)  || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV5)  || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV6)  || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV7)  || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV8)  || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV9)  || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV10) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV11) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV12) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV13) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV14) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV15) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV16) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV17) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV18) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV19) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV20) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV21) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV22) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV23) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV24) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV25) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV26) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV27) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV28) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV29) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV30) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV31) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV32) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV33) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV34) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV35) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV36) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV37) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV38) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV39) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV40) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV41) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV42) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV43) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV44) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV45) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV46) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV47) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV48) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV49) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV50) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV51) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV52) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV53) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV54) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV55) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV56) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV57) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV58) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV59) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV60) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV61) || \\\n                                     ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV62) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV63))\n\n#define IS_RCC_MCO(MCOx) (((MCOx) == RCC_MCO1) || ((MCOx) == RCC_MCO2))\n\n#define IS_RCC_MCO1SOURCE(SOURCE) (((SOURCE) == RCC_MCO1SOURCE_HSI) || ((SOURCE) == RCC_MCO1SOURCE_LSE)       || \\\n                                   ((SOURCE) == RCC_MCO1SOURCE_HSE) || ((SOURCE) == RCC_MCO1SOURCE_PLL1QCLK)  || \\\n                                   ((SOURCE) == RCC_MCO1SOURCE_HSI48))\n\n#define IS_RCC_MCO2SOURCE(SOURCE) (((SOURCE) == RCC_MCO2SOURCE_SYSCLK)    || ((SOURCE) == RCC_MCO2SOURCE_PLL2PCLK) || \\\n                                   ((SOURCE) == RCC_MCO2SOURCE_HSE)       || ((SOURCE) == RCC_MCO2SOURCE_PLLCLK)   || \\\n                                   ((SOURCE) == RCC_MCO2SOURCE_CSICLK)    || ((SOURCE) == RCC_MCO2SOURCE_LSICLK))\n\n#define IS_RCC_MCODIV(DIV) (((DIV) == RCC_MCODIV_1)  || ((DIV) == RCC_MCODIV_2)   || \\\n                            ((DIV) == RCC_MCODIV_3)  || ((DIV) == RCC_MCODIV_4)   || \\\n                            ((DIV) == RCC_MCODIV_5)  || ((DIV) == RCC_MCODIV_6)   || \\\n                            ((DIV) == RCC_MCODIV_7)  || ((DIV) == RCC_MCODIV_8)   || \\\n                            ((DIV) == RCC_MCODIV_9)  || ((DIV) == RCC_MCODIV_10)  || \\\n                            ((DIV) == RCC_MCODIV_11) || ((DIV) == RCC_MCODIV_12)  || \\\n                            ((DIV) == RCC_MCODIV_13) || ((DIV) == RCC_MCODIV_14)  || \\\n                            ((DIV) == RCC_MCODIV_15))\n\n#if defined(DUAL_CORE)\n#define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY)    || ((FLAG) == RCC_FLAG_CSIRDY)  || \\\n                           ((FLAG) == RCC_FLAG_HSI48RDY)  || ((FLAG) == RCC_FLAG_HSERDY)  || \\\n                           ((FLAG) == RCC_FLAG_D1CKRDY)   || ((FLAG) == RCC_FLAG_D2CKRDY) || \\\n                           ((FLAG) == RCC_FLAG_PLLRDY)    || ((FLAG) == RCC_FLAG_PLL2RDY) || \\\n                           ((FLAG) == RCC_FLAG_PLL3RDY)   || ((FLAG) == RCC_FLAG_LSERDY)  || \\\n                           ((FLAG) == RCC_FLAG_LSIRDY)    || \\\n                           ((FLAG) == RCC_FLAG_C1RST)     || ((FLAG) == RCC_FLAG_C2RST)   || \\\n                           ((FLAG) == RCC_FLAG_SFTR2ST)   || ((FLAG) == RCC_FLAG_WWDG2RST)|| \\\n                           ((FLAG) == RCC_FLAG_IWDG2RST)  || ((FLAG) == RCC_FLAG_D1RST)   || \\\n                           ((FLAG) == RCC_FLAG_D2RST)     || ((FLAG) == RCC_FLAG_BORRST)  || \\\n                           ((FLAG) == RCC_FLAG_PINRST)    || ((FLAG) == RCC_FLAG_PORRST)  || \\\n                           ((FLAG) == RCC_FLAG_SFTR1ST)   || ((FLAG) == RCC_FLAG_IWDG1RST)|| \\\n                           ((FLAG) == RCC_FLAG_WWDG1RST)  || ((FLAG) == RCC_FLAG_LPWR1RST)|| \\\n                           ((FLAG) == RCC_FLAG_LPWR2RST)  || ((FLAG) == RCC_FLAG_HSIDIV))\n\n#else\n\n#if defined(RCC_CR_D2CKRDY)\n#define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY)    || ((FLAG) == RCC_FLAG_CSIRDY)  || \\\n                           ((FLAG) == RCC_FLAG_HSI48RDY)  || ((FLAG) == RCC_FLAG_HSERDY)  || \\\n                           ((FLAG) == RCC_FLAG_D1CKRDY)   || ((FLAG) == RCC_FLAG_D2CKRDY) || \\\n                           ((FLAG) == RCC_FLAG_PLLRDY)    || ((FLAG) == RCC_FLAG_PLL2RDY) || \\\n                           ((FLAG) == RCC_FLAG_PLL3RDY)   || ((FLAG) == RCC_FLAG_LSERDY)  || \\\n                           ((FLAG) == RCC_FLAG_LSIRDY)    || \\\n                           ((FLAG) == RCC_FLAG_CPURST)    || ((FLAG) == RCC_FLAG_D1RST)   || \\\n                           ((FLAG) == RCC_FLAG_D2RST)     || ((FLAG) == RCC_FLAG_BORRST)  || \\\n                           ((FLAG) == RCC_FLAG_PINRST)    || ((FLAG) == RCC_FLAG_PORRST)  || \\\n                           ((FLAG) == RCC_FLAG_SFTRST)    || ((FLAG) == RCC_FLAG_IWDG1RST)|| \\\n                           ((FLAG) == RCC_FLAG_WWDG1RST)  || ((FLAG) == RCC_FLAG_LPWR1RST)|| \\\n                           ((FLAG) == RCC_FLAG_LPWR2RST)  || ((FLAG) == RCC_FLAG_HSIDIV ))\n#else\n#define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY)    || ((FLAG) == RCC_FLAG_CSIRDY)  || \\\n                           ((FLAG) == RCC_FLAG_HSI48RDY)  || ((FLAG) == RCC_FLAG_HSERDY)  || \\\n                           ((FLAG) == RCC_FLAG_CPUCKRDY)  || ((FLAG) == RCC_FLAG_CDCKRDY) || \\\n                           ((FLAG) == RCC_FLAG_PLLRDY)    || ((FLAG) == RCC_FLAG_PLL2RDY) || \\\n                           ((FLAG) == RCC_FLAG_PLL3RDY)   || ((FLAG) == RCC_FLAG_LSERDY)  || \\\n                           ((FLAG) == RCC_FLAG_LSIRDY)    || \\\n                           ((FLAG) == RCC_FLAG_CDRST)     || ((FLAG) == RCC_FLAG_BORRST)  || \\\n                           ((FLAG) == RCC_FLAG_PINRST)    || ((FLAG) == RCC_FLAG_PORRST)  || \\\n                           ((FLAG) == RCC_FLAG_SFTRST)    || ((FLAG) == RCC_FLAG_IWDG1RST)|| \\\n                           ((FLAG) == RCC_FLAG_WWDG1RST)  || ((FLAG) == RCC_FLAG_LPWR1RST)|| \\\n                           ((FLAG) == RCC_FLAG_LPWR2RST)  || ((FLAG) == RCC_FLAG_HSIDIV ))\n#endif /* RCC_CR_D2CKRDY */\n\n#endif /*DUAL_CORE*/\n\n#define IS_RCC_HSICALIBRATION_VALUE(VALUE) ((VALUE) <= 0x7FU)\n#define IS_RCC_CSICALIBRATION_VALUE(VALUE) ((VALUE) <= 0x3FU)\n\n#define IS_RCC_STOP_WAKEUPCLOCK(SOURCE) (((SOURCE) == RCC_STOP_WAKEUPCLOCK_CSI) || \\\n                                         ((SOURCE) == RCC_STOP_WAKEUPCLOCK_HSI))\n\n#define IS_RCC_STOP_KERWAKEUPCLOCK(SOURCE) (((SOURCE) == RCC_STOP_KERWAKEUPCLOCK_CSI) || \\\n                                          ((SOURCE) == RCC_STOP_KERWAKEUPCLOCK_HSI))\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_RCC_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rcc_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_rcc_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of RCC HAL Extension module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_RCC_EX_H\n#define STM32H7xx_HAL_RCC_EX_H\n\n#ifdef __cplusplus\n extern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup RCCEx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup RCCEx_Exported_Types RCCEx Exported Types\n  * @{\n  */\n\n/**\n  * @brief  PLL2 Clock structure definition\n  */\ntypedef struct\n{\n\n  uint32_t PLL2M;       /*!< PLL2M: Division factor for PLL2 VCO input clock.\n                             This parameter must be a number between Min_Data = 1 and Max_Data = 63    */\n\n  uint32_t PLL2N;       /*!< PLL2N: Multiplication factor for PLL2 VCO output clock.\n                             This parameter must be a number between Min_Data = 4 and Max_Data = 512\n                             or between Min_Data = 8 and Max_Data = 420(*)\n                             (*) : For stm32h7a3xx and stm32h7b3xx family lines.                       */   \n\n  uint32_t PLL2P;       /*!< PLL2P: Division factor for system clock.\n                             This parameter must be a number between Min_Data = 2 and Max_Data = 128\n                             odd division factors are not allowed                                      */\n\n  uint32_t PLL2Q;        /*!< PLL2Q: Division factor for peripheral clocks.\n                             This parameter must be a number between Min_Data = 1 and Max_Data = 128   */\n\n  uint32_t PLL2R;        /*!< PLL2R: Division factor for peripheral clocks.\n                             This parameter must be a number between Min_Data = 1 and Max_Data = 128   */\n  uint32_t PLL2RGE;      /*!<PLL2RGE: PLL2 clock Input range\n                          This parameter must be a value of @ref RCC_PLL2_VCI_Range                    */\n  uint32_t PLL2VCOSEL;   /*!<PLL2VCOSEL: PLL2 clock Output range\n                          This parameter must be a value of @ref RCC_PLL2_VCO_Range                    */\n\n  uint32_t PLL2FRACN;    /*!<PLL2FRACN: Specifies Fractional Part Of The Multiplication Factor for\n                            PLL2 VCO It should be a value between 0 and 8191                           */\n}RCC_PLL2InitTypeDef;\n\n/**\n  * @brief  PLL3 Clock structure definition\n  */\ntypedef struct\n{\n\n  uint32_t PLL3M;       /*!< PLL3M: Division factor for PLL3 VCO input clock.\n                             This parameter must be a number between Min_Data = 1 and Max_Data = 63    */\n\n  uint32_t PLL3N;       /*!< PLL3N: Multiplication factor for PLL3 VCO output clock.\n                             This parameter must be a number between Min_Data = 4 and Max_Data = 512\n                             or between Min_Data = 8 and Max_Data = 420(*)\n                             (*) : For stm32h7a3xx and stm32h7b3xx family lines.                       */  \n\n  uint32_t PLL3P;       /*!< PLL3P: Division factor for system clock.\n                             This parameter must be a number between Min_Data = 2 and Max_Data = 128\n                             odd division factors are not allowed                                      */\n\n  uint32_t PLL3Q;        /*!< PLL3Q: Division factor for peripheral clocks.\n                             This parameter must be a number between Min_Data = 1 and Max_Data = 128   */\n\n  uint32_t PLL3R;        /*!< PLL3R: Division factor for peripheral clocks.\n                             This parameter must be a number between Min_Data = 1 and Max_Data = 128   */\n  uint32_t PLL3RGE;      /*!<PLL3RGE: PLL3 clock Input range\n                          This parameter must be a value of @ref RCC_PLL3_VCI_Range                    */\n  uint32_t PLL3VCOSEL;   /*!<PLL3VCOSEL: PLL3 clock Output range\n                          This parameter must be a value of @ref RCC_PLL3_VCO_Range                    */\n\n  uint32_t PLL3FRACN;    /*!<PLL3FRACN: Specifies Fractional Part Of The Multiplication Factor for\n                            PLL3 VCO It should be a value between 0 and 8191                           */\n}RCC_PLL3InitTypeDef;\n\n/**\n  * @brief  RCC PLL1 Clocks structure definition\n  */\ntypedef struct\n{\n  uint32_t PLL1_P_Frequency;\n  uint32_t PLL1_Q_Frequency;\n  uint32_t PLL1_R_Frequency;\n}PLL1_ClocksTypeDef;\n\n/**\n  * @brief  RCC PLL2 Clocks structure definition\n  */\ntypedef struct\n{\n  uint32_t PLL2_P_Frequency;\n  uint32_t PLL2_Q_Frequency;\n  uint32_t PLL2_R_Frequency;\n}PLL2_ClocksTypeDef;\n\n/**\n  * @brief  RCC PLL3 Clocks structure definition\n  */\ntypedef struct\n{\n  uint32_t PLL3_P_Frequency;\n  uint32_t PLL3_Q_Frequency;\n  uint32_t PLL3_R_Frequency;\n}PLL3_ClocksTypeDef;\n\n\n/**\n  * @brief  RCC extended clocks structure definition\n  */\ntypedef struct\n{\n  uint32_t PeriphClockSelection;   /*!< The Extended Clock to be configured.\n                                        This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */\n\n  RCC_PLL2InitTypeDef PLL2;        /*!< PLL2structure parameters.\n                                        This parameter will be used only when PLL2 is selected as kernel clock Source for some peripherals */\n\n  RCC_PLL3InitTypeDef PLL3;        /*!< PLL3 structure parameters.\n                                        This parameter will be used only when PLL2 is selected as kernel clock Source for some peripherals */\n\n  uint32_t FmcClockSelection;     /*!< Specifies FMC clock source\n                                        This parameter can be a value of @ref RCCEx_FMC_Clock_Source     */\n\n#if defined(QUADSPI)\n  uint32_t QspiClockSelection;    /*!< Specifies QSPI clock source\n                                        This parameter can be a value of @ref RCCEx_QSPI_Clock_Source    */\n#endif /* QUADSPI */\n\n#if defined(OCTOSPI1) || defined(OCTOSPI2)\n  uint32_t OspiClockSelection;    /*!< Specifies OSPI clock source\n                                        This parameter can be a value of @ref RCCEx_OSPI_Clock_Source    */\n#endif /*(OCTOSPI1) || (OCTOSPI2)*/\n\n\n#if defined(DSI)\n  uint32_t DsiClockSelection;     /*!< Specifies DSI clock source\n                                     This parameter can be a value of @ref RCCEx_DSI_Clock_Source        */\n#endif /* DSI */\n\n  uint32_t SdmmcClockSelection;    /*!< Specifies SDMMC clock source\n                                        This parameter can be a value of @ref RCCEx_SDMMC_Clock_Source   */\n\n  uint32_t CkperClockSelection;   /*!< Specifies CKPER clock source\n                                        This parameter can be a value of @ref RCCEx_CLKP_Clock_Source   */\n\n  uint32_t Sai1ClockSelection;     /*!< Specifies SAI1 clock source\n                                        This parameter can be a value of @ref RCCEx_SAI1_Clock_Source    */\n\n#if defined(SAI3)\n  uint32_t Sai23ClockSelection;     /*!< Specifies SAI2/3 clock source\n                                         This parameter can be a value of @ref RCCEx_SAI23_Clock_Source  */\n#endif /* SAI3 */\n\n#if defined(RCC_CDCCIP1R_SAI2ASEL)\n  uint32_t Sai2AClockSelection;     /*!< Specifies SAI2A clock source\n                                        This parameter can be a value of @ref RCCEx_SAI2A_Clock_Source  */\n#endif /* RCC_CDCCIP1R_SAI2ASEL */\n\n#if defined(RCC_CDCCIP1R_SAI2BSEL)\n  uint32_t Sai2BClockSelection;     /*!< Specifies SAI2B clock source\n                                         This parameter can be a value of @ref RCCEx_SAI2B_Clock_Source    */\n#endif /* RCC_CDCCIP1R_SAI2BSEL */\n\n  uint32_t Spi123ClockSelection;     /*!< Specifies SPI1/2/3 clock source\n                                          This parameter can be a value of @ref RCCEx_SPI123_Clock_Source    */\n\n  uint32_t Spi45ClockSelection;     /*!< Specifies SPI4/5 clock source\n                                         This parameter can be a value of @ref RCCEx_SPI45_Clock_Source    */\n\n  uint32_t SpdifrxClockSelection;   /*!< Specifies SPDIFRX Clock clock source\n                                        This parameter can be a value of @ref RCCEx_SPDIFRX_Clock_Source */\n\n  uint32_t Dfsdm1ClockSelection;    /*!< Specifies DFSDM1 Clock clock source\n                                        This parameter can be a value of @ref RCCEx_DFSDM1_Clock_Source  */\n\n#if defined(DFSDM2_BASE)\n  uint32_t Dfsdm2ClockSelection;    /*!< Specifies DFSDM2 Clock clock source\n                                        This parameter can be a value of @ref RCCEx_DFSDM2_Clock_Source  */\n#endif /* DFSDM2_BASE */\n\n#if defined(FDCAN1) || defined(FDCAN2)\n  uint32_t FdcanClockSelection;   /*!< Specifies FDCAN Clock clock source\n                                        This parameter can be a value of @ref RCCEx_FDCAN_Clock_Source   */\n#endif /*FDCAN1 || FDCAN2*/\n\n  uint32_t Swpmi1ClockSelection;   /*!< Specifies SWPMI1 Clock clock source\n                                        This parameter can be a value of @ref RCCEx_SWPMI1_Clock_Source  */\n\n  uint32_t Usart234578ClockSelection;   /*!< Specifies USART2/3/4/5/7/8 clock source\n                                             This parameter can be a value of @ref RCCEx_USART234578_Clock_Source  */\n\n  uint32_t Usart16ClockSelection;  /*!< Specifies USART1/6 clock source\n                                        This parameter can be a value of @ref RCCEx_USART16_Clock_Source  */\n\n   uint32_t RngClockSelection;      /*!< Specifies RNG clock source\n                                        This parameter can be a value of @ref RCCEx_RNG_Clock_Source     */\n\n#if defined(I2C5)\n   uint32_t I2c1235ClockSelection;  /*!< Specifies I2C1/2/3/5 clock source\n                                        This parameter can be a value of @ref RCCEx_I2C1235_Clock_Source    */\n#else \n   uint32_t I2c123ClockSelection;   /*!< Specifies I2C1/2/3 clock source\n                                        This parameter can be a value of @ref RCCEx_I2C1235_Clock_Source    */\n#endif /*I2C5*/\n\n  uint32_t UsbClockSelection;      /*!< Specifies USB clock source\n                                        This parameter can be a value of @ref RCCEx_USB_Clock_Source     */\n\n  uint32_t CecClockSelection;     /*!< Specifies CEC clock source\n                                        This parameter can be a value of @ref RCCEx_CEC_Clock_Source     */\n\n  uint32_t Lptim1ClockSelection;   /*!< Specifies LPTIM1 clock source\n                                        This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source  */\n\n  uint32_t Lpuart1ClockSelection;  /*!< Specifies LPUART1 clock source\n                                        This parameter can be a value of @ref RCCEx_LPUART1_Clock_Source */\n\n  uint32_t I2c4ClockSelection;     /*!< Specifies I2C4 clock source\n                                        This parameter can be a value of @ref RCCEx_I2C4_Clock_Source    */\n\n  uint32_t Lptim2ClockSelection;   /*!< Specifies LPTIM2 clock source\n                                        This parameter can be a value of @ref RCCEx_LPTIM2_Clock_Source  */\n\n  uint32_t Lptim345ClockSelection;   /*!< Specifies LPTIM3/4/5 clock source\n                                          This parameter can be a value of @ref RCCEx_LPTIM345_Clock_Source  */\n\n  uint32_t AdcClockSelection;      /*!< Specifies ADC interface clock source\n                                        This parameter can be a value of @ref RCCEx_ADC_Clock_Source     */\n#if defined(SAI4)\n  uint32_t Sai4AClockSelection;     /*!< Specifies SAI4A clock source\n                                        This parameter can be a value of @ref RCCEx_SAI4A_Clock_Source   */\n\n  uint32_t Sai4BClockSelection;     /*!< Specifies SAI4B clock source\n                                        This parameter can be a value of @ref RCCEx_SAI4B_Clock_Source   */\n#endif /* SAI4 */\n\n  uint32_t Spi6ClockSelection;     /*!< Specifies SPI6 clock source\n                                        This parameter can be a value of @ref RCCEx_SPI6_Clock_Source    */\n\n  uint32_t RTCClockSelection;      /*!< Specifies RTC Clock clock source\n                                        This parameter can be a value of @ref RCC_RTC_Clock_Source       */\n\n#if defined(HRTIM1)\n  uint32_t Hrtim1ClockSelection;      /*!< Specifies HRTIM1 Clock clock source\n                                        This parameter can be a value of @ref RCCEx_HRTIM1_Clock_Source   */\n#endif /* HRTIM1 */\n\n  uint32_t TIMPresSelection;       /*!< Specifies TIM Clock Prescalers Selection.\n                                       This parameter can be a value of @ref RCCEx_TIM_Prescaler_Selection */\n}RCC_PeriphCLKInitTypeDef;\n\n/*!< Alias for Inter STM32H7 lines compatibility regarding RCC_PeriphCLKInitTypeDef field : I2C5 available on some lines only  */\n#if defined(I2C5)\n#define I2c123ClockSelection I2c1235ClockSelection\n#else\n#define I2c1235ClockSelection I2c123ClockSelection\n#endif /*I2C5*/\n\n\n/**\n  * @brief RCC_CRS Init structure definition\n  */\ntypedef struct\n{\n  uint32_t Prescaler;             /*!< Specifies the division factor of the SYNC signal.\n                                     This parameter can be a value of @ref RCCEx_CRS_SynchroDivider  */\n\n  uint32_t Source;                /*!< Specifies the SYNC signal source.\n                                     This parameter can be a value of @ref RCCEx_CRS_SynchroSource   */\n\n  uint32_t Polarity;              /*!< Specifies the input polarity for the SYNC signal source.\n                                     This parameter can be a value of @ref RCCEx_CRS_SynchroPolarity */\n\n  uint32_t ReloadValue;           /*!< Specifies the value to be loaded in the frequency error counter with each SYNC event.\n                                      It can be calculated in using macro __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__)\n                                     This parameter must be a number between 0 and 0xFFFF or a value of @ref RCCEx_CRS_ReloadValueDefault .*/\n\n  uint32_t ErrorLimitValue;       /*!< Specifies the value to be used to evaluate the captured frequency error value.\n                                     This parameter must be a number between 0 and 0xFF or a value of @ref RCCEx_CRS_ErrorLimitDefault */\n\n  uint32_t HSI48CalibrationValue; /*!< Specifies a user-programmable trimming value to the HSI48 oscillator.\n                                     This parameter must be a number between 0 and 0x3F or a value of @ref RCCEx_CRS_HSI48CalibrationDefault */\n\n}RCC_CRSInitTypeDef;\n\n/**\n  * @brief RCC_CRS Synchronization structure definition\n  */\ntypedef struct\n{\n  uint32_t ReloadValue;           /*!< Specifies the value loaded in the Counter reload value.\n                                     This parameter must be a number between 0 and 0xFFFF */\n\n  uint32_t HSI48CalibrationValue; /*!< Specifies value loaded in HSI48 oscillator smooth trimming.\n                                     This parameter must be a number between 0 and 0x3F */\n\n  uint32_t FreqErrorCapture;      /*!< Specifies the value loaded in the .FECAP, the frequency error counter\n                                                                    value latched in the time of the last SYNC event.\n                                    This parameter must be a number between 0 and 0xFFFF */\n\n  uint32_t FreqErrorDirection;    /*!< Specifies the value loaded in the .FEDIR, the counting direction of the\n                                                                    frequency error counter latched in the time of the last SYNC event.\n                                                                    It shows whether the actual frequency is below or above the target.\n                                    This parameter must be a value of @ref RCCEx_CRS_FreqErrorDirection*/\n\n}RCC_CRSSynchroInfoTypeDef;\n\n/**\n  * @}\n  */\n\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup RCCEx_Exported_Constants  RCCEx Exported Constants\n  * @{\n  */\n\n/** @defgroup RCCEx_Periph_Clock_Selection  RCCEx Periph Clock Selection\n  * @{\n  */\n\n#if defined(UART9) && defined(USART10)\n#define RCC_PERIPHCLK_USART16910       (0x00000001U)\n#define RCC_PERIPHCLK_USART1           RCC_PERIPHCLK_USART16910\n#define RCC_PERIPHCLK_USART6           RCC_PERIPHCLK_USART16910\n#define RCC_PERIPHCLK_UART9            RCC_PERIPHCLK_USART16910\n#define RCC_PERIPHCLK_USART10          RCC_PERIPHCLK_USART16910\n/*alias*/\n#define RCC_PERIPHCLK_USART16          RCC_PERIPHCLK_USART16910\n#else\n#define RCC_PERIPHCLK_USART16          (0x00000001U)\n#define RCC_PERIPHCLK_USART1           RCC_PERIPHCLK_USART16\n#define RCC_PERIPHCLK_USART6           RCC_PERIPHCLK_USART16\n/* alias */\n#define RCC_PERIPHCLK_USART16910       RCC_PERIPHCLK_USART16\n#endif /* UART9 && USART10*/\n#define RCC_PERIPHCLK_USART234578      (0x00000002U)\n#define RCC_PERIPHCLK_USART2           RCC_PERIPHCLK_USART234578\n#define RCC_PERIPHCLK_USART3           RCC_PERIPHCLK_USART234578\n#define RCC_PERIPHCLK_UART4            RCC_PERIPHCLK_USART234578\n#define RCC_PERIPHCLK_UART5            RCC_PERIPHCLK_USART234578\n#define RCC_PERIPHCLK_UART7            RCC_PERIPHCLK_USART234578\n#define RCC_PERIPHCLK_UART8            RCC_PERIPHCLK_USART234578\n#define RCC_PERIPHCLK_LPUART1          (0x00000004U)\n#if defined(I2C5)\n#define RCC_PERIPHCLK_I2C1235          (0x00000008U)\n#define RCC_PERIPHCLK_I2C1             RCC_PERIPHCLK_I2C1235\n#define RCC_PERIPHCLK_I2C2             RCC_PERIPHCLK_I2C1235\n#define RCC_PERIPHCLK_I2C3             RCC_PERIPHCLK_I2C1235\n/* alias */\n#define RCC_PERIPHCLK_I2C123           RCC_PERIPHCLK_I2C1235\n#else\n#define RCC_PERIPHCLK_I2C123           (0x00000008U)\n#define RCC_PERIPHCLK_I2C1             RCC_PERIPHCLK_I2C123\n#define RCC_PERIPHCLK_I2C2             RCC_PERIPHCLK_I2C123\n#define RCC_PERIPHCLK_I2C3             RCC_PERIPHCLK_I2C123\n#endif /*I2C5*/\n#define RCC_PERIPHCLK_I2C4             (0x00000010U)\n#if defined(I2C5)\n#define RCC_PERIPHCLK_I2C5             RCC_PERIPHCLK_I2C1235\n#endif /*I2C5*/\n#define RCC_PERIPHCLK_LPTIM1           (0x00000020U)\n#define RCC_PERIPHCLK_LPTIM2           (0x00000040U)\n#define RCC_PERIPHCLK_LPTIM345         (0x00000080U)\n#define RCC_PERIPHCLK_LPTIM3           RCC_PERIPHCLK_LPTIM345\n#if defined(LPTIM4)\n#define RCC_PERIPHCLK_LPTIM4           RCC_PERIPHCLK_LPTIM345\n#endif /*LPTIM4*/\n#if defined(LPTIM5)\n#define RCC_PERIPHCLK_LPTIM5           RCC_PERIPHCLK_LPTIM345\n#endif /*LPTIM5*/\n#define RCC_PERIPHCLK_SAI1             (0x00000100U)\n#if defined(SAI3)\n#define RCC_PERIPHCLK_SAI23            (0x00000200U)\n#define RCC_PERIPHCLK_SAI2             RCC_PERIPHCLK_SAI23\n#define RCC_PERIPHCLK_SAI3             RCC_PERIPHCLK_SAI23\n#endif /* SAI3 */\n#if defined(RCC_CDCCIP1R_SAI2ASEL_0)\n#define RCC_PERIPHCLK_SAI2A            (0x00000200U)\n#endif /* RCC_CDCCIP1R_SAI2ASEL_0 */\n#if defined(RCC_CDCCIP1R_SAI2BSEL_0)\n#define RCC_PERIPHCLK_SAI2B            (0x00000400U)\n#endif /* RCC_CDCCIP1R_SAI2BSEL_0 */\n#if defined(SAI4)\n#define RCC_PERIPHCLK_SAI4A            (0x00000400U)\n#define RCC_PERIPHCLK_SAI4B            (0x00000800U)\n#endif /* SAI4 */\n#define RCC_PERIPHCLK_SPI123           (0x00001000U)\n#define RCC_PERIPHCLK_SPI1             RCC_PERIPHCLK_SPI123\n#define RCC_PERIPHCLK_SPI2             RCC_PERIPHCLK_SPI123\n#define RCC_PERIPHCLK_SPI3             RCC_PERIPHCLK_SPI123\n#define RCC_PERIPHCLK_SPI45            (0x00002000U)\n#define RCC_PERIPHCLK_SPI4             RCC_PERIPHCLK_SPI45\n#define RCC_PERIPHCLK_SPI5             RCC_PERIPHCLK_SPI45\n#define RCC_PERIPHCLK_SPI6             (0x00004000U)\n#define RCC_PERIPHCLK_FDCAN            (0x00008000U)\n#define RCC_PERIPHCLK_SDMMC            (0x00010000U)\n#define RCC_PERIPHCLK_RNG              (0x00020000U)\n#define RCC_PERIPHCLK_USB              (0x00040000U)\n#define RCC_PERIPHCLK_ADC              (0x00080000U)\n#define RCC_PERIPHCLK_SWPMI1           (0x00100000U)\n#define RCC_PERIPHCLK_DFSDM1           (0x00200000U)\n#if defined(DFSDM2_BASE)\n#define RCC_PERIPHCLK_DFSDM2           (0x00000800U)\n#endif /* DFSDM2 */\n#define RCC_PERIPHCLK_RTC              (0x00400000U)\n#define RCC_PERIPHCLK_CEC              (0x00800000U)\n#define RCC_PERIPHCLK_FMC              (0x01000000U)\n#if defined(QUADSPI)\n#define RCC_PERIPHCLK_QSPI             (0x02000000U)\n#endif /* QUADSPI */\n#if defined(OCTOSPI1) || defined(OCTOSPI2)\n#define RCC_PERIPHCLK_OSPI             (0x02000000U)\n#endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */\n#define RCC_PERIPHCLK_DSI              (0x04000000U)\n#define RCC_PERIPHCLK_SPDIFRX          (0x08000000U)\n#if defined(HRTIM1)\n#define RCC_PERIPHCLK_HRTIM1           (0x10000000U)\n#endif /* HRTIM1 */\n#if defined(LTDC)\n#define RCC_PERIPHCLK_LTDC             (0x20000000U)\n#endif /* LTDC */\n#define RCC_PERIPHCLK_TIM              (0x40000000U)\n#define RCC_PERIPHCLK_CKPER            (0x80000000U)\n\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_PLL2_Clock_Output  RCC PLL2 Clock Output\n  * @{\n  */\n#define RCC_PLL2_DIVP                RCC_PLLCFGR_DIVP2EN\n#define RCC_PLL2_DIVQ                RCC_PLLCFGR_DIVQ2EN\n#define RCC_PLL2_DIVR                RCC_PLLCFGR_DIVR2EN\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_PLL3_Clock_Output  RCC PLL3 Clock Output\n  * @{\n  */\n#define RCC_PLL3_DIVP                RCC_PLLCFGR_DIVP3EN\n#define RCC_PLL3_DIVQ                RCC_PLLCFGR_DIVQ3EN\n#define RCC_PLL3_DIVR                RCC_PLLCFGR_DIVR3EN\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_PLL2_VCI_Range  RCC PLL2 VCI Range\n  * @{\n  */\n#define RCC_PLL2VCIRANGE_0                RCC_PLLCFGR_PLL2RGE_0        /*!< Clock range frequency between 1 and 2 MHz  */\n#define RCC_PLL2VCIRANGE_1                RCC_PLLCFGR_PLL2RGE_1        /*!< Clock range frequency between 2 and 4 MHz  */\n#define RCC_PLL2VCIRANGE_2                RCC_PLLCFGR_PLL2RGE_2        /*!< Clock range frequency between 4 and 8 MHz  */\n#define RCC_PLL2VCIRANGE_3                RCC_PLLCFGR_PLL2RGE_3        /*!< Clock range frequency between 8 and 16 MHz */\n\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_PLL2_VCO_Range  RCC PLL2 VCO Range\n  * @{\n  */\n#define RCC_PLL2VCOWIDE                 (0x00000000U)\n#define RCC_PLL2VCOMEDIUM               RCC_PLLCFGR_PLL2VCOSEL\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_PLL3_VCI_Range  RCC PLL3 VCI Range\n  * @{\n  */\n#define RCC_PLL3VCIRANGE_0                RCC_PLLCFGR_PLL3RGE_0         /*!< Clock range frequency between 1 and 2 MHz  */\n#define RCC_PLL3VCIRANGE_1                RCC_PLLCFGR_PLL3RGE_1         /*!< Clock range frequency between 2 and 4 MHz  */\n#define RCC_PLL3VCIRANGE_2                RCC_PLLCFGR_PLL3RGE_2         /*!< Clock range frequency between 4 and 8 MHz  */\n#define RCC_PLL3VCIRANGE_3                RCC_PLLCFGR_PLL3RGE_3         /*!< Clock range frequency between 8 and 16 MHz */\n\n/**\n  * @}\n  */\n\n\n/** @defgroup RCC_PLL3_VCO_Range  RCC PLL3 VCO Range\n  * @{\n  */\n#define RCC_PLL3VCOWIDE                 (0x00000000U)\n#define RCC_PLL3VCOMEDIUM               RCC_PLLCFGR_PLL3VCOSEL\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_USART16_Clock_Source  RCCEx USART1/6 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP2R_USART16SEL)\n#define RCC_USART16CLKSOURCE_D2PCLK2    (0x00000000U)\n/* alias */\n#define RCC_USART16CLKSOURCE_PCLK2        RCC_USART16CLKSOURCE_D2PCLK2\n#define RCC_USART16CLKSOURCE_PLL2         RCC_D2CCIP2R_USART16SEL_0\n#define RCC_USART16CLKSOURCE_PLL3         RCC_D2CCIP2R_USART16SEL_1\n#define RCC_USART16CLKSOURCE_HSI         (RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_1)\n#define RCC_USART16CLKSOURCE_CSI          RCC_D2CCIP2R_USART16SEL_2\n#define RCC_USART16CLKSOURCE_LSE         (RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_2)\n\n#elif defined(RCC_CDCCIP2R_USART16910SEL)\n#define RCC_USART16910CLKSOURCE_CDPCLK2   (0x00000000U)\n/* alias */\n#define RCC_USART16910CLKSOURCE_D2PCLK2   RCC_USART16910CLKSOURCE_CDPCLK2\n#define RCC_USART16910CLKSOURCE_PLL2      RCC_CDCCIP2R_USART16910SEL_0\n#define RCC_USART16910CLKSOURCE_PLL3      RCC_CDCCIP2R_USART16910SEL_1\n#define RCC_USART16910CLKSOURCE_HSI      (RCC_CDCCIP2R_USART16910SEL_0 | RCC_CDCCIP2R_USART16910SEL_1)\n#define RCC_USART16910CLKSOURCE_CSI       RCC_CDCCIP2R_USART16910SEL_2\n#define RCC_USART16910CLKSOURCE_LSE      (RCC_CDCCIP2R_USART16910SEL_0 | RCC_CDCCIP2R_USART16910SEL_2)\n\n/*  Aliases */\n#define RCC_USART16CLKSOURCE_CDPCLK2     RCC_USART16910CLKSOURCE_CDPCLK2\n#define RCC_USART16CLKSOURCE_PCLK2       RCC_USART16CLKSOURCE_CDPCLK2\n#define RCC_USART16CLKSOURCE_D2PCLK2     RCC_USART16CLKSOURCE_CDPCLK2\n#define RCC_USART16CLKSOURCE_PLL2        RCC_USART16910CLKSOURCE_PLL2\n#define RCC_USART16CLKSOURCE_PLL3        RCC_USART16910CLKSOURCE_PLL3\n#define RCC_USART16CLKSOURCE_HSI         RCC_USART16910CLKSOURCE_HSI\n#define RCC_USART16CLKSOURCE_CSI         RCC_USART16910CLKSOURCE_CSI\n#define RCC_USART16CLKSOURCE_LSE         RCC_USART16910CLKSOURCE_LSE\n\n#else  /* RCC_D2CCIP2R_USART16910SEL */\n#define RCC_USART16910CLKSOURCE_D2PCLK2   (0x00000000U)\n#define RCC_USART16910CLKSOURCE_PLL2      RCC_D2CCIP2R_USART16910SEL_0\n#define RCC_USART16910CLKSOURCE_PLL3      RCC_D2CCIP2R_USART16910SEL_1\n#define RCC_USART16910CLKSOURCE_HSI      (RCC_D2CCIP2R_USART16910SEL_0 | RCC_D2CCIP2R_USART16910SEL_1)\n#define RCC_USART16910CLKSOURCE_CSI       RCC_D2CCIP2R_USART16910SEL_2\n#define RCC_USART16910CLKSOURCE_LSE      (RCC_D2CCIP2R_USART16910SEL_0 | RCC_D2CCIP2R_USART16910SEL_2)\n\n/*  Aliases */\n#define RCC_USART16CLKSOURCE_D2PCLK2     RCC_USART16910CLKSOURCE_D2PCLK2\n#define RCC_USART16CLKSOURCE_PCLK2       RCC_USART16910CLKSOURCE_D2PCLK2\n#define RCC_USART16CLKSOURCE_PLL2        RCC_USART16910CLKSOURCE_PLL2\n#define RCC_USART16CLKSOURCE_PLL3        RCC_USART16910CLKSOURCE_PLL3\n#define RCC_USART16CLKSOURCE_HSI         RCC_USART16910CLKSOURCE_HSI\n#define RCC_USART16CLKSOURCE_CSI         RCC_USART16910CLKSOURCE_CSI\n#define RCC_USART16CLKSOURCE_LSE         RCC_USART16910CLKSOURCE_LSE\n#endif /* RCC_D2CCIP2R_USART16SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_USART1_Clock_Source  RCCEx USART1 Clock Source\n  * @{\n  */\n#define RCC_USART1CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2\n#define RCC_USART1CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2\n#define RCC_USART1CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3\n#define RCC_USART1CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI\n#define RCC_USART1CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI\n#define RCC_USART1CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_USART6_Clock_Source  RCCEx USART6 Clock Source\n  * @{\n  */\n#define RCC_USART6CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2\n#define RCC_USART6CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2\n#define RCC_USART6CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3\n#define RCC_USART6CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI\n#define RCC_USART6CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI\n#define RCC_USART6CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE\n\n/**\n  * @}\n  */\n\n#if defined(UART9)\n/** @defgroup RCCEx_UART9_Clock_Source  RCCEx UART9 Clock Source\n  * @{\n  */\n#define RCC_UART9CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2\n#define RCC_UART9CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2\n#define RCC_UART9CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3\n#define RCC_UART9CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI\n#define RCC_UART9CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI\n#define RCC_UART9CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE\n/**\n  * @}\n  */\n#endif /* UART9 */\n\n#if defined(USART10)\n/** @defgroup RCCEx_USART10_Clock_Source  RCCEx USART10 Clock Source\n  * @{\n  */\n#define RCC_USART10CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2\n#define RCC_USART10CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2\n#define RCC_USART10CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3\n#define RCC_USART10CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI\n#define RCC_USART10CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI\n#define RCC_USART10CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE\n/**\n  * @}\n  */\n#endif /* USART10 */\n\n/** @defgroup RCCEx_USART234578_Clock_Source  RCCEx USART2/3/4/5/7/8 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP2R_USART28SEL)\n#define RCC_USART234578CLKSOURCE_D2PCLK1    (0x00000000U)\n/* alias */\n#define RCC_USART234578CLKSOURCE_PCLK1      RCC_USART234578CLKSOURCE_D2PCLK1\n#define RCC_USART234578CLKSOURCE_PLL2       RCC_D2CCIP2R_USART28SEL_0\n#define RCC_USART234578CLKSOURCE_PLL3       RCC_D2CCIP2R_USART28SEL_1\n#define RCC_USART234578CLKSOURCE_HSI        (RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_1)\n#define RCC_USART234578CLKSOURCE_CSI        RCC_D2CCIP2R_USART28SEL_2\n#define RCC_USART234578CLKSOURCE_LSE        (RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_2)\n#else\n#define RCC_USART234578CLKSOURCE_CDPCLK1   (0x00000000U)\n/* alias */\n#define RCC_USART234578CLKSOURCE_PCLK1     RCC_USART234578CLKSOURCE_CDPCLK1\n#define RCC_USART234578CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_CDPCLK1\n#define RCC_USART234578CLKSOURCE_PLL2      RCC_CDCCIP2R_USART234578SEL_0\n#define RCC_USART234578CLKSOURCE_PLL3      RCC_CDCCIP2R_USART234578SEL_1\n#define RCC_USART234578CLKSOURCE_HSI      (RCC_CDCCIP2R_USART234578SEL_0 | RCC_CDCCIP2R_USART234578SEL_1)\n#define RCC_USART234578CLKSOURCE_CSI       RCC_CDCCIP2R_USART234578SEL_2\n#define RCC_USART234578CLKSOURCE_LSE      (RCC_CDCCIP2R_USART234578SEL_0 | RCC_CDCCIP2R_USART234578SEL_2)\n#endif /* RCC_D2CCIP2R_USART28SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_USART2_Clock_Source  RCCEx USART2 Clock Source\n  * @{\n  */\n#define RCC_USART2CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1\n#define RCC_USART2CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2\n#define RCC_USART2CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3\n#define RCC_USART2CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI\n#define RCC_USART2CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI\n#define RCC_USART2CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_USART3_Clock_Source  RCCEx USART3 Clock Source\n  * @{\n  */\n#define RCC_USART3CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1\n#define RCC_USART3CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2\n#define RCC_USART3CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3\n#define RCC_USART3CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI\n#define RCC_USART3CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI\n#define RCC_USART3CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_UART4_Clock_Source  RCCEx UART4 Clock Source\n  * @{\n  */\n#define RCC_UART4CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1\n#define RCC_UART4CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2\n#define RCC_UART4CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3\n#define RCC_UART4CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI\n#define RCC_UART4CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI\n#define RCC_UART4CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_UART5_Clock_Source  RCCEx UART5 Clock Source\n  * @{\n  */\n#define RCC_UART5CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1\n#define RCC_UART5CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2\n#define RCC_UART5CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3\n#define RCC_UART5CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI\n#define RCC_UART5CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI\n#define RCC_UART5CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_UART7_Clock_Source  RCCEx UART7 Clock Source\n  * @{\n  */\n#define RCC_UART7CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1\n#define RCC_UART7CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2\n#define RCC_UART7CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3\n#define RCC_UART7CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI\n#define RCC_UART7CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI\n#define RCC_UART7CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_UART8_Clock_Source  RCCEx UART8 Clock Source\n  * @{\n  */\n#define RCC_UART8CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1\n#define RCC_UART8CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2\n#define RCC_UART8CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3\n#define RCC_UART8CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI\n#define RCC_UART8CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI\n#define RCC_UART8CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_LPUART1_Clock_Source  RCCEx LPUART1 Clock Source\n  * @{\n  */\n#if defined(RCC_D3CCIPR_LPUART1SEL)\n#define RCC_LPUART1CLKSOURCE_D3PCLK1    (0x00000000U)\n/* alias */\n#define RCC_LPUART1CLKSOURCE_PCLK4     RCC_LPUART1CLKSOURCE_D3PCLK1\n#define RCC_LPUART1CLKSOURCE_PLL2      RCC_D3CCIPR_LPUART1SEL_0\n#define RCC_LPUART1CLKSOURCE_PLL3      RCC_D3CCIPR_LPUART1SEL_1\n#define RCC_LPUART1CLKSOURCE_HSI       (RCC_D3CCIPR_LPUART1SEL_0 | RCC_D3CCIPR_LPUART1SEL_1)\n#define RCC_LPUART1CLKSOURCE_CSI        RCC_D3CCIPR_LPUART1SEL_2\n#define RCC_LPUART1CLKSOURCE_LSE       (RCC_D3CCIPR_LPUART1SEL_2 | RCC_D3CCIPR_LPUART1SEL_0)\n#else\n#define RCC_LPUART1CLKSOURCE_SRDPCLK4   (0x00000000U)\n/* alias*/\n#define RCC_LPUART1CLKSOURCE_PCLK4     RCC_LPUART1CLKSOURCE_SRDPCLK4\n#define RCC_LPUART1CLKSOURCE_D3PCLK1   RCC_LPUART1CLKSOURCE_SRDPCLK4\n#define RCC_LPUART1CLKSOURCE_PLL2      RCC_SRDCCIPR_LPUART1SEL_0\n#define RCC_LPUART1CLKSOURCE_PLL3      RCC_SRDCCIPR_LPUART1SEL_1\n#define RCC_LPUART1CLKSOURCE_HSI       (RCC_SRDCCIPR_LPUART1SEL_0 | RCC_SRDCCIPR_LPUART1SEL_1)\n#define RCC_LPUART1CLKSOURCE_CSI        RCC_SRDCCIPR_LPUART1SEL_2\n#define RCC_LPUART1CLKSOURCE_LSE       (RCC_SRDCCIPR_LPUART1SEL_2 | RCC_SRDCCIPR_LPUART1SEL_0)\n#endif /* RCC_D3CCIPR_LPUART1SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_I2C1235_Clock_Source  RCCEx I2C1/2/3/5 Clock Source\n  * @{\n  */\n#if defined (RCC_D2CCIP2R_I2C123SEL)\n#define RCC_I2C123CLKSOURCE_D2PCLK1      (0x00000000U)\n#define RCC_I2C123CLKSOURCE_PLL3         RCC_D2CCIP2R_I2C123SEL_0\n#define RCC_I2C123CLKSOURCE_HSI          RCC_D2CCIP2R_I2C123SEL_1\n#define RCC_I2C123CLKSOURCE_CSI         (RCC_D2CCIP2R_I2C123SEL_0 | RCC_D2CCIP2R_I2C123SEL_1)\n/* aliases */\n#define RCC_I2C1235CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1\n#define RCC_I2C1235CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3\n#define RCC_I2C1235CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI\n#define RCC_I2C1235CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI\n#elif defined(RCC_CDCCIP2R_I2C123SEL)\n#define RCC_I2C123CLKSOURCE_CDPCLK1      (0x00000000U)\n/* alias */\n#define RCC_I2C123CLKSOURCE_D2PCLK1      RCC_I2C123CLKSOURCE_CDPCLK1\n#define RCC_I2C123CLKSOURCE_PLL3         RCC_CDCCIP2R_I2C123SEL_0\n#define RCC_I2C123CLKSOURCE_HSI          RCC_CDCCIP2R_I2C123SEL_1\n#define RCC_I2C123CLKSOURCE_CSI         (RCC_CDCCIP2R_I2C123SEL_0 | RCC_CDCCIP2R_I2C123SEL_1)\n/* aliases */\n#define RCC_I2C1235CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1\n#define RCC_I2C1235CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3\n#define RCC_I2C1235CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI\n#define RCC_I2C1235CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI\n#elif defined(I2C5)\n#define RCC_I2C1235CLKSOURCE_D2PCLK1      (0x00000000U)\n#define RCC_I2C1235CLKSOURCE_PLL3        RCC_D2CCIP2R_I2C1235SEL_0\n#define RCC_I2C1235CLKSOURCE_HSI         RCC_D2CCIP2R_I2C1235SEL_1\n#define RCC_I2C1235CLKSOURCE_CSI         (RCC_D2CCIP2R_I2C1235SEL_0 | RCC_D2CCIP2R_I2C1235SEL_1)\n/* aliases */\n#define RCC_I2C123CLKSOURCE_D2PCLK1      RCC_I2C1235CLKSOURCE_D2PCLK1\n#define RCC_I2C123CLKSOURCE_PLL3         RCC_I2C1235CLKSOURCE_PLL3\n#define RCC_I2C123CLKSOURCE_HSI          RCC_I2C1235CLKSOURCE_HSI\n#define RCC_I2C123CLKSOURCE_CSI          RCC_I2C1235CLKSOURCE_CSI\n#endif /* RCC_D2CCIP2R_I2C123SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_I2C1_Clock_Source  RCCEx I2C1 Clock Source\n  * @{\n  */\n#if defined(I2C5)\n#define RCC_I2C1CLKSOURCE_D2PCLK1     RCC_I2C1235CLKSOURCE_D2PCLK1\n#define RCC_I2C1CLKSOURCE_PLL3        RCC_I2C1235CLKSOURCE_PLL3\n#define RCC_I2C1CLKSOURCE_HSI         RCC_I2C1235CLKSOURCE_HSI\n#define RCC_I2C1CLKSOURCE_CSI         RCC_I2C1235CLKSOURCE_CSI\n#else\n#define RCC_I2C1CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1\n#define RCC_I2C1CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3\n#define RCC_I2C1CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI\n#define RCC_I2C1CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI\n#endif /*I2C5*/\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_I2C2_Clock_Source  RCCEx I2C2 Clock Source\n  * @{\n  */\n#if defined(I2C5)\n#define RCC_I2C2CLKSOURCE_D2PCLK1     RCC_I2C1235CLKSOURCE_D2PCLK1\n#define RCC_I2C2CLKSOURCE_PLL3        RCC_I2C1235CLKSOURCE_PLL3\n#define RCC_I2C2CLKSOURCE_HSI         RCC_I2C1235CLKSOURCE_HSI\n#define RCC_I2C2CLKSOURCE_CSI         RCC_I2C1235CLKSOURCE_CSI\n#else\n#define RCC_I2C2CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1\n#define RCC_I2C2CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3\n#define RCC_I2C2CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI\n#define RCC_I2C2CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI\n#endif /*I2C5*/\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_I2C3_Clock_Source  RCCEx I2C3 Clock Source\n  * @{\n  */\n#if defined(I2C5)\n#define RCC_I2C3CLKSOURCE_D2PCLK1     RCC_I2C1235CLKSOURCE_D2PCLK1\n#define RCC_I2C3CLKSOURCE_PLL3        RCC_I2C1235CLKSOURCE_PLL3\n#define RCC_I2C3CLKSOURCE_HSI         RCC_I2C1235CLKSOURCE_HSI\n#define RCC_I2C3CLKSOURCE_CSI         RCC_I2C1235CLKSOURCE_CSI\n#else\n#define RCC_I2C3CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1\n#define RCC_I2C3CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3\n#define RCC_I2C3CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI\n#define RCC_I2C3CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI\n#endif /*I2C5*/\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_I2C4_Clock_Source  RCCEx I2C4 Clock Source\n  * @{\n  */\n#if defined(RCC_D3CCIPR_I2C4SEL)\n#define RCC_I2C4CLKSOURCE_D3PCLK1      (0x00000000U)\n#define RCC_I2C4CLKSOURCE_PLL3         RCC_D3CCIPR_I2C4SEL_0\n#define RCC_I2C4CLKSOURCE_HSI          RCC_D3CCIPR_I2C4SEL_1\n#define RCC_I2C4CLKSOURCE_CSI         (RCC_D3CCIPR_I2C4SEL_0 | RCC_D3CCIPR_I2C4SEL_1)\n#else\n#define RCC_I2C4CLKSOURCE_SRDPCLK4     (0x00000000U)\n/* alias */\n#define RCC_I2C4CLKSOURCE_D3PCLK1     RCC_I2C4CLKSOURCE_SRDPCLK4\n#define RCC_I2C4CLKSOURCE_PLL3         RCC_SRDCCIPR_I2C4SEL_0\n#define RCC_I2C4CLKSOURCE_HSI          RCC_SRDCCIPR_I2C4SEL_1\n#define RCC_I2C4CLKSOURCE_CSI         (RCC_SRDCCIPR_I2C4SEL_0 | RCC_SRDCCIPR_I2C4SEL_1)\n#endif /* RCC_D3CCIPR_I2C4SEL */\n\n/**\n  * @}\n  */\n#if defined(I2C5)\n/** @defgroup RCCEx_I2C5_Clock_Source  RCCEx I2C5 Clock Source\n  * @{\n  */\n#define RCC_I2C5CLKSOURCE_D2PCLK1      RCC_I2C1235CLKSOURCE_D2PCLK1\n#define RCC_I2C5CLKSOURCE_PLL3         RCC_I2C1235CLKSOURCE_PLL3\n#define RCC_I2C5CLKSOURCE_HSI          RCC_I2C1235CLKSOURCE_HSI\n#define RCC_I2C5CLKSOURCE_CSI          RCC_I2C1235CLKSOURCE_CSI\n\n/**\n  * @}\n  */\n#endif /*I2C5*/\n\n/** @defgroup RCCEx_RNG_Clock_Source  RCCEx RNG Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP2R_RNGSEL)\n#define RCC_RNGCLKSOURCE_HSI48        (0x00000000U)\n#define RCC_RNGCLKSOURCE_PLL           RCC_D2CCIP2R_RNGSEL_0\n#define RCC_RNGCLKSOURCE_LSE           RCC_D2CCIP2R_RNGSEL_1\n#define RCC_RNGCLKSOURCE_LSI           RCC_D2CCIP2R_RNGSEL\n#else\n#define RCC_RNGCLKSOURCE_HSI48        (0x00000000U)\n#define RCC_RNGCLKSOURCE_PLL           RCC_CDCCIP2R_RNGSEL_0\n#define RCC_RNGCLKSOURCE_LSE           RCC_CDCCIP2R_RNGSEL_1\n#define RCC_RNGCLKSOURCE_LSI           RCC_CDCCIP2R_RNGSEL\n#endif /* RCC_D2CCIP2R_RNGSEL */\n\n/**\n  * @}\n  */\n#if defined(HRTIM1)\n\n/** @defgroup RCCEx_HRTIM1_Clock_Source RCC Extended HRTIM1 Clock Source\n  * @{\n  */\n#define RCC_HRTIM1CLK_TIMCLK                (0x00000000U)\n#define RCC_HRTIM1CLK_CPUCLK                RCC_CFGR_HRTIMSEL\n\n/**\n  * @}\n  */\n#endif /*HRTIM1*/\n\n/** @defgroup RCCEx_USB_Clock_Source  RCCEx USB Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP2R_USBSEL)\n#define RCC_USBCLKSOURCE_PLL                  RCC_D2CCIP2R_USBSEL_0\n#define RCC_USBCLKSOURCE_PLL3                 RCC_D2CCIP2R_USBSEL_1\n#define RCC_USBCLKSOURCE_HSI48                RCC_D2CCIP2R_USBSEL\n#else\n#define RCC_USBCLKSOURCE_PLL                  RCC_CDCCIP2R_USBSEL_0\n#define RCC_USBCLKSOURCE_PLL3                 RCC_CDCCIP2R_USBSEL_1\n#define RCC_USBCLKSOURCE_HSI48                RCC_CDCCIP2R_USBSEL\n#endif /* RCC_D2CCIP2R_USBSEL */\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SAI1_Clock_Source SAI1 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP1R_SAI1SEL)\n#define RCC_SAI1CLKSOURCE_PLL         (0x00000000U)\n#define RCC_SAI1CLKSOURCE_PLL2         RCC_D2CCIP1R_SAI1SEL_0\n#define RCC_SAI1CLKSOURCE_PLL3         RCC_D2CCIP1R_SAI1SEL_1\n#define RCC_SAI1CLKSOURCE_PIN         (RCC_D2CCIP1R_SAI1SEL_0 | RCC_D2CCIP1R_SAI1SEL_1)\n#define RCC_SAI1CLKSOURCE_CLKP         RCC_D2CCIP1R_SAI1SEL_2\n#else\n#define RCC_SAI1CLKSOURCE_PLL         (0x00000000U)\n#define RCC_SAI1CLKSOURCE_PLL2         RCC_CDCCIP1R_SAI1SEL_0\n#define RCC_SAI1CLKSOURCE_PLL3         RCC_CDCCIP1R_SAI1SEL_1\n#define RCC_SAI1CLKSOURCE_PIN         (RCC_CDCCIP1R_SAI1SEL_0 | RCC_CDCCIP1R_SAI1SEL_1)\n#define RCC_SAI1CLKSOURCE_CLKP         RCC_CDCCIP1R_SAI1SEL_2\n#endif /* RCC_D2CCIP1R_SAI1SEL */\n/**\n  * @}\n  */\n\n#if defined(SAI3)\n/** @defgroup RCCEx_SAI23_Clock_Source SAI2/3 Clock Source\n  * @{\n  */\n#define RCC_SAI23CLKSOURCE_PLL         (0x00000000U)\n#define RCC_SAI23CLKSOURCE_PLL2         RCC_D2CCIP1R_SAI23SEL_0\n#define RCC_SAI23CLKSOURCE_PLL3         RCC_D2CCIP1R_SAI23SEL_1\n#define RCC_SAI23CLKSOURCE_PIN         (RCC_D2CCIP1R_SAI23SEL_0 | RCC_D2CCIP1R_SAI23SEL_1)\n#define RCC_SAI23CLKSOURCE_CLKP         RCC_D2CCIP1R_SAI23SEL_2\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SAI2_Clock_Source SAI2 Clock Source\n  * @{\n  */\n#define RCC_SAI2CLKSOURCE_PLL         RCC_SAI23CLKSOURCE_PLL\n#define RCC_SAI2CLKSOURCE_PLL2        RCC_SAI23CLKSOURCE_PLL2\n#define RCC_SAI2CLKSOURCE_PLL3        RCC_SAI23CLKSOURCE_PLL3\n#define RCC_SAI2CLKSOURCE_PIN         RCC_SAI23CLKSOURCE_PIN\n#define RCC_SAI2CLKSOURCE_CLKP        RCC_SAI23CLKSOURCE_CLKP\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SAI3_Clock_Source SAI3 Clock Source\n  * @{\n  */\n#define RCC_SAI3CLKSOURCE_PLL         RCC_SAI23CLKSOURCE_PLL\n#define RCC_SAI3CLKSOURCE_PLL2        RCC_SAI23CLKSOURCE_PLL2\n#define RCC_SAI3CLKSOURCE_PLL3        RCC_SAI23CLKSOURCE_PLL3\n#define RCC_SAI3CLKSOURCE_PIN         RCC_SAI23CLKSOURCE_PIN\n#define RCC_SAI3CLKSOURCE_CLKP        RCC_SAI23CLKSOURCE_CLKP\n/**\n  * @}\n  */\n#endif /* SAI3 */\n\n#if defined(RCC_CDCCIP1R_SAI2ASEL)\n/** @defgroup RCCEx_SAI2A_Clock_Source SAI2A Clock Source\n  * @{\n  */\n#define RCC_SAI2ACLKSOURCE_PLL         (0x00000000U)\n#define RCC_SAI2ACLKSOURCE_PLL2         RCC_CDCCIP1R_SAI2ASEL_0\n#define RCC_SAI2ACLKSOURCE_PLL3         RCC_CDCCIP1R_SAI2ASEL_1\n#define RCC_SAI2ACLKSOURCE_PIN         (RCC_CDCCIP1R_SAI2ASEL_0 | RCC_CDCCIP1R_SAI2ASEL_1)\n#define RCC_SAI2ACLKSOURCE_CLKP         RCC_CDCCIP1R_SAI2ASEL_2\n#define RCC_SAI2ACLKSOURCE_SPDIF       (RCC_CDCCIP1R_SAI2ASEL_0 | RCC_CDCCIP1R_SAI2ASEL_2)\n /**\n  * @}\n  */\n#endif /* RCC_CDCCIP1R_SAI2ASEL */\n\n#if defined(RCC_CDCCIP1R_SAI2BSEL)\n/** @defgroup RCCEx_SAI2B_Clock_Source SAI2B Clock Source\n  * @{\n  */\n#define RCC_SAI2BCLKSOURCE_PLL         (0x00000000U)\n#define RCC_SAI2BCLKSOURCE_PLL2         RCC_CDCCIP1R_SAI2BSEL_0\n#define RCC_SAI2BCLKSOURCE_PLL3         RCC_CDCCIP1R_SAI2BSEL_1\n#define RCC_SAI2BCLKSOURCE_PIN         (RCC_CDCCIP1R_SAI2BSEL_0 | RCC_CDCCIP1R_SAI2BSEL_1)\n#define RCC_SAI2BCLKSOURCE_CLKP         RCC_CDCCIP1R_SAI2BSEL_2\n#define RCC_SAI2BCLKSOURCE_SPDIF       (RCC_CDCCIP1R_SAI2BSEL_0 | RCC_CDCCIP1R_SAI2BSEL_2)\n/**\n  * @}\n  */\n#endif /* RCC_CDCCIP1R_SAI2BSEL */\n\n\n/** @defgroup RCCEx_SPI123_Clock_Source SPI1/2/3 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP1R_SPI123SEL)\n#define RCC_SPI123CLKSOURCE_PLL         (0x00000000U)\n#define RCC_SPI123CLKSOURCE_PLL2         RCC_D2CCIP1R_SPI123SEL_0\n#define RCC_SPI123CLKSOURCE_PLL3         RCC_D2CCIP1R_SPI123SEL_1\n#define RCC_SPI123CLKSOURCE_PIN         (RCC_D2CCIP1R_SPI123SEL_0 | RCC_D2CCIP1R_SPI123SEL_1)\n#define RCC_SPI123CLKSOURCE_CLKP         RCC_D2CCIP1R_SPI123SEL_2\n#else\n#define RCC_SPI123CLKSOURCE_PLL         (0x00000000U)\n#define RCC_SPI123CLKSOURCE_PLL2         RCC_CDCCIP1R_SPI123SEL_0\n#define RCC_SPI123CLKSOURCE_PLL3         RCC_CDCCIP1R_SPI123SEL_1\n#define RCC_SPI123CLKSOURCE_PIN         (RCC_CDCCIP1R_SPI123SEL_0 | RCC_CDCCIP1R_SPI123SEL_1)\n#define RCC_SPI123CLKSOURCE_CLKP         RCC_CDCCIP1R_SPI123SEL_2\n#endif /* RCC_D2CCIP1R_SPI123SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SPI1_Clock_Source SPI1 Clock Source\n  * @{\n  */\n#define RCC_SPI1CLKSOURCE_PLL         RCC_SPI123CLKSOURCE_PLL\n#define RCC_SPI1CLKSOURCE_PLL2        RCC_SPI123CLKSOURCE_PLL2\n#define RCC_SPI1CLKSOURCE_PLL3        RCC_SPI123CLKSOURCE_PLL3\n#define RCC_SPI1CLKSOURCE_PIN         RCC_SPI123CLKSOURCE_PIN\n#define RCC_SPI1CLKSOURCE_CLKP        RCC_SPI123CLKSOURCE_CLKP\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SPI2_Clock_Source SPI2 Clock Source\n  * @{\n  */\n#define RCC_SPI2CLKSOURCE_PLL         RCC_SPI123CLKSOURCE_PLL\n#define RCC_SPI2CLKSOURCE_PLL2        RCC_SPI123CLKSOURCE_PLL2\n#define RCC_SPI2CLKSOURCE_PLL3        RCC_SPI123CLKSOURCE_PLL3\n#define RCC_SPI2CLKSOURCE_PIN         RCC_SPI123CLKSOURCE_PIN\n#define RCC_SPI2CLKSOURCE_CLKP        RCC_SPI123CLKSOURCE_CLKP\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SPI3_Clock_Source SPI3 Clock Source\n  * @{\n  */\n#define RCC_SPI3CLKSOURCE_PLL         RCC_SPI123CLKSOURCE_PLL\n#define RCC_SPI3CLKSOURCE_PLL2        RCC_SPI123CLKSOURCE_PLL2\n#define RCC_SPI3CLKSOURCE_PLL3        RCC_SPI123CLKSOURCE_PLL3\n#define RCC_SPI3CLKSOURCE_PIN         RCC_SPI123CLKSOURCE_PIN\n#define RCC_SPI3CLKSOURCE_CLKP        RCC_SPI123CLKSOURCE_CLKP\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SPI45_Clock_Source SPI4/5 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP1R_SPI45SEL)\n#define RCC_SPI45CLKSOURCE_D2PCLK1     (0x00000000U)\n#define RCC_SPI45CLKSOURCE_PCLK1        RCC_SPI45CLKSOURCE_D2PCLK1\n#define RCC_SPI45CLKSOURCE_PLL2         RCC_D2CCIP1R_SPI45SEL_0\n#define RCC_SPI45CLKSOURCE_PLL3         RCC_D2CCIP1R_SPI45SEL_1\n#define RCC_SPI45CLKSOURCE_HSI         (RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_1)\n#define RCC_SPI45CLKSOURCE_CSI          RCC_D2CCIP1R_SPI45SEL_2\n#define RCC_SPI45CLKSOURCE_HSE         (RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_2)\n#else\n#define RCC_SPI45CLKSOURCE_CDPCLK1     (0x00000000U)\n/* aliases */\n#define RCC_SPI45CLKSOURCE_D2PCLK1      RCC_SPI45CLKSOURCE_CDPCLK1  /* D2PCLK1 is used in STM32H74xxx, STM32H75xxx, STM32H72xxx and STM32H73xxx family lines */\n#define RCC_SPI45CLKSOURCE_PCLK1        RCC_SPI45CLKSOURCE_CDPCLK1\n#define RCC_SPI45CLKSOURCE_PLL2         RCC_CDCCIP1R_SPI45SEL_0\n#define RCC_SPI45CLKSOURCE_PLL3         RCC_CDCCIP1R_SPI45SEL_1\n#define RCC_SPI45CLKSOURCE_HSI         (RCC_CDCCIP1R_SPI45SEL_0 | RCC_CDCCIP1R_SPI45SEL_1)\n#define RCC_SPI45CLKSOURCE_CSI          RCC_CDCCIP1R_SPI45SEL_2\n#define RCC_SPI45CLKSOURCE_HSE         (RCC_CDCCIP1R_SPI45SEL_0 | RCC_CDCCIP1R_SPI45SEL_2)\n#endif /* RCC_D2CCIP1R_SPI45SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SPI4_Clock_Source SPI4 Clock Source\n  * @{\n  */\n#define RCC_SPI4CLKSOURCE_D2PCLK1     RCC_SPI45CLKSOURCE_D2PCLK1\n#define RCC_SPI4CLKSOURCE_PLL2        RCC_SPI45CLKSOURCE_PLL2\n#define RCC_SPI4CLKSOURCE_PLL3        RCC_SPI45CLKSOURCE_PLL3\n#define RCC_SPI4CLKSOURCE_HSI         RCC_SPI45CLKSOURCE_HSI\n#define RCC_SPI4CLKSOURCE_CSI         RCC_SPI45CLKSOURCE_CSI\n#define RCC_SPI4CLKSOURCE_HSE         RCC_SPI45CLKSOURCE_HSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SPI5_Clock_Source SPI5 Clock Source\n  * @{\n  */\n#define RCC_SPI5CLKSOURCE_D2PCLK1     RCC_SPI45CLKSOURCE_D2PCLK1\n#define RCC_SPI5CLKSOURCE_PLL2        RCC_SPI45CLKSOURCE_PLL2\n#define RCC_SPI5CLKSOURCE_PLL3        RCC_SPI45CLKSOURCE_PLL3\n#define RCC_SPI5CLKSOURCE_HSI         RCC_SPI45CLKSOURCE_HSI\n#define RCC_SPI5CLKSOURCE_CSI         RCC_SPI45CLKSOURCE_CSI\n#define RCC_SPI5CLKSOURCE_HSE         RCC_SPI45CLKSOURCE_HSE\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SPI6_Clock_Source SPI6 Clock Source\n  * @{\n  */\n#if defined(RCC_D3CCIPR_SPI6SEL)\n#define RCC_SPI6CLKSOURCE_D3PCLK1     (0x00000000U)\n#define RCC_SPI6CLKSOURCE_PCLK4        RCC_SPI6CLKSOURCE_D3PCLK1\n#define RCC_SPI6CLKSOURCE_PLL2         RCC_D3CCIPR_SPI6SEL_0\n#define RCC_SPI6CLKSOURCE_PLL3         RCC_D3CCIPR_SPI6SEL_1\n#define RCC_SPI6CLKSOURCE_HSI         (RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_1)\n#define RCC_SPI6CLKSOURCE_CSI          RCC_D3CCIPR_SPI6SEL_2\n#define RCC_SPI6CLKSOURCE_HSE         (RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_2)\n#else\n#define RCC_SPI6CLKSOURCE_SRDPCLK4    (0x00000000U)\n/* alias */\n#define RCC_SPI6CLKSOURCE_D3PCLK1      RCC_SPI6CLKSOURCE_SRDPCLK4  /* D3PCLK1 is used in STM32H74xxx, STM32H75xxx, STM32H72xxx and STM32H73xxx family lines */\n#define RCC_SPI6CLKSOURCE_PCLK4        RCC_SPI6CLKSOURCE_SRDPCLK4\n#define RCC_SPI6CLKSOURCE_PLL2         RCC_SRDCCIPR_SPI6SEL_0\n#define RCC_SPI6CLKSOURCE_PLL3         RCC_SRDCCIPR_SPI6SEL_1\n#define RCC_SPI6CLKSOURCE_HSI         (RCC_SRDCCIPR_SPI6SEL_0 | RCC_SRDCCIPR_SPI6SEL_1)\n#define RCC_SPI6CLKSOURCE_CSI          RCC_SRDCCIPR_SPI6SEL_2\n#define RCC_SPI6CLKSOURCE_HSE         (RCC_SRDCCIPR_SPI6SEL_0 | RCC_SRDCCIPR_SPI6SEL_2)\n#define RCC_SPI6CLKSOURCE_PIN         (RCC_SRDCCIPR_SPI6SEL_1 | RCC_SRDCCIPR_SPI6SEL_2)\n#endif /* RCC_D3CCIPR_SPI6SEL */\n\n/**\n  * @}\n  */\n\n\n#if defined(SAI4_Block_A)\n/** @defgroup RCCEx_SAI4A_Clock_Source SAI4A Clock Source\n  * @{\n  */\n#define RCC_SAI4ACLKSOURCE_PLL         (0x00000000U)\n#define RCC_SAI4ACLKSOURCE_PLL2         RCC_D3CCIPR_SAI4ASEL_0\n#define RCC_SAI4ACLKSOURCE_PLL3         RCC_D3CCIPR_SAI4ASEL_1\n#define RCC_SAI4ACLKSOURCE_PIN         (RCC_D3CCIPR_SAI4ASEL_0 | RCC_D3CCIPR_SAI4ASEL_1)\n#define RCC_SAI4ACLKSOURCE_CLKP         RCC_D3CCIPR_SAI4ASEL_2\n#if defined(RCC_VER_3_0)\n#define RCC_SAI4ACLKSOURCE_SPDIF       (RCC_D3CCIPR_SAI4ASEL_2 | RCC_D3CCIPR_SAI4ASEL_0)\n#endif /*RCC_VER_3_0*/\n\n/**\n  * @}\n  */\n#endif /* SAI4_Block_A */\n\n\n\n#if defined(SAI4_Block_B)\n/** @defgroup RCCEx_SAI4B_Clock_Source SAI4B Clock Source\n  * @{\n  */\n#define RCC_SAI4BCLKSOURCE_PLL         (0x00000000U)\n#define RCC_SAI4BCLKSOURCE_PLL2         RCC_D3CCIPR_SAI4BSEL_0\n#define RCC_SAI4BCLKSOURCE_PLL3         RCC_D3CCIPR_SAI4BSEL_1\n#define RCC_SAI4BCLKSOURCE_PIN         (RCC_D3CCIPR_SAI4BSEL_0 | RCC_D3CCIPR_SAI4BSEL_1)\n#define RCC_SAI4BCLKSOURCE_CLKP         RCC_D3CCIPR_SAI4BSEL_2\n#if defined(RCC_VER_3_0)\n#define RCC_SAI4BCLKSOURCE_SPDIF       (RCC_D3CCIPR_SAI4BSEL_2 | RCC_D3CCIPR_SAI4BSEL_0)\n#endif /* RCC_VER_3_0 */\n\n/**\n  * @}\n  */\n#endif /* SAI4_Block_B */\n\n\n/** @defgroup RCCEx_LPTIM1_Clock_Source  RCCEx LPTIM1 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP2R_LPTIM1SEL)\n#define RCC_LPTIM1CLKSOURCE_D2PCLK1        (0x00000000U)\n/* alias */\n#define RCC_LPTIM1CLKSOURCE_PCLK1         RCC_LPTIM1CLKSOURCE_D2PCLK1\n#define RCC_LPTIM1CLKSOURCE_PLL2          RCC_D2CCIP2R_LPTIM1SEL_0\n#define RCC_LPTIM1CLKSOURCE_PLL3          RCC_D2CCIP2R_LPTIM1SEL_1\n#define RCC_LPTIM1CLKSOURCE_LSE          (RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_1)\n#define RCC_LPTIM1CLKSOURCE_LSI           RCC_D2CCIP2R_LPTIM1SEL_2\n#define RCC_LPTIM1CLKSOURCE_CLKP         (RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_2)\n#else\n#define RCC_LPTIM1CLKSOURCE_CDPCLK1        (0x00000000U)\n/* alias */\n#define RCC_LPTIM1CLKSOURCE_PCLK1         RCC_LPTIM1CLKSOURCE_CDPCLK1\n#define RCC_LPTIM1CLKSOURCE_D2PCLK1       RCC_LPTIM1CLKSOURCE_CDPCLK1\n#define RCC_LPTIM1CLKSOURCE_PLL2          RCC_CDCCIP2R_LPTIM1SEL_0\n#define RCC_LPTIM1CLKSOURCE_PLL3          RCC_CDCCIP2R_LPTIM1SEL_1\n#define RCC_LPTIM1CLKSOURCE_LSE          (RCC_CDCCIP2R_LPTIM1SEL_0 | RCC_CDCCIP2R_LPTIM1SEL_1)\n#define RCC_LPTIM1CLKSOURCE_LSI           RCC_CDCCIP2R_LPTIM1SEL_2\n#define RCC_LPTIM1CLKSOURCE_CLKP         (RCC_CDCCIP2R_LPTIM1SEL_0 | RCC_CDCCIP2R_LPTIM1SEL_2)\n#endif /* RCC_D2CCIP2R_LPTIM1SEL */\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_LPTIM2_Clock_Source  RCCEx LPTIM2 Clock Source\n  * @{\n  */\n#if defined(RCC_D3CCIPR_LPTIM2SEL)\n#define RCC_LPTIM2CLKSOURCE_D3PCLK1       (0x00000000U)\n/* alias */\n#define RCC_LPTIM2CLKSOURCE_PCLK4         RCC_LPTIM2CLKSOURCE_D3PCLK1\n#define RCC_LPTIM2CLKSOURCE_PLL2          RCC_D3CCIPR_LPTIM2SEL_0\n#define RCC_LPTIM2CLKSOURCE_PLL3          RCC_D3CCIPR_LPTIM2SEL_1\n#define RCC_LPTIM2CLKSOURCE_LSE          (RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_1)\n#define RCC_LPTIM2CLKSOURCE_LSI           RCC_D3CCIPR_LPTIM2SEL_2\n#define RCC_LPTIM2CLKSOURCE_CLKP         (RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_2)\n#else\n#define RCC_LPTIM2CLKSOURCE_SRDPCLK4       (0x00000000U)\n/*alias*/\n#define RCC_LPTIM2CLKSOURCE_PCLK4         RCC_LPTIM2CLKSOURCE_SRDPCLK4\n#define RCC_LPTIM2CLKSOURCE_D3PCLK1       RCC_LPTIM2CLKSOURCE_SRDPCLK4\n#define RCC_LPTIM2CLKSOURCE_PLL2          RCC_SRDCCIPR_LPTIM2SEL_0\n#define RCC_LPTIM2CLKSOURCE_PLL3          RCC_SRDCCIPR_LPTIM2SEL_1\n#define RCC_LPTIM2CLKSOURCE_LSE          (RCC_SRDCCIPR_LPTIM2SEL_0 | RCC_SRDCCIPR_LPTIM2SEL_1)\n#define RCC_LPTIM2CLKSOURCE_LSI           RCC_SRDCCIPR_LPTIM2SEL_2\n#define RCC_LPTIM2CLKSOURCE_CLKP         (RCC_SRDCCIPR_LPTIM2SEL_0 | RCC_SRDCCIPR_LPTIM2SEL_2)\n#endif /* RCC_D3CCIPR_LPTIM2SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_LPTIM345_Clock_Source  RCCEx LPTIM3/4/5 Clock Source\n  * @{\n  */\n#if defined(RCC_D3CCIPR_LPTIM345SEL)\n#define RCC_LPTIM345CLKSOURCE_D3PCLK1        (0x00000000U)\n/* alias*/\n#define RCC_LPTIM345CLKSOURCE_PCLK4         RCC_LPTIM345CLKSOURCE_D3PCLK1\n#define RCC_LPTIM345CLKSOURCE_PLL2          RCC_D3CCIPR_LPTIM345SEL_0\n#define RCC_LPTIM345CLKSOURCE_PLL3          RCC_D3CCIPR_LPTIM345SEL_1\n#define RCC_LPTIM345CLKSOURCE_LSE          (RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_1)\n#define RCC_LPTIM345CLKSOURCE_LSI           RCC_D3CCIPR_LPTIM345SEL_2\n#define RCC_LPTIM345CLKSOURCE_CLKP         (RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_2)\n#else\n#define RCC_LPTIM345CLKSOURCE_SRDPCLK4      (0x00000000U)\n/* alias */\n#define RCC_LPTIM345CLKSOURCE_PCLK4         RCC_LPTIM345CLKSOURCE_SRDPCLK4\n#define RCC_LPTIM345CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_SRDPCLK4\n#define RCC_LPTIM345CLKSOURCE_PLL2          RCC_SRDCCIPR_LPTIM3SEL_0\n#define RCC_LPTIM345CLKSOURCE_PLL3          RCC_SRDCCIPR_LPTIM3SEL_1\n#define RCC_LPTIM345CLKSOURCE_LSE          (RCC_SRDCCIPR_LPTIM3SEL_0 | RCC_SRDCCIPR_LPTIM3SEL_1)\n#define RCC_LPTIM345CLKSOURCE_LSI           RCC_SRDCCIPR_LPTIM3SEL_2\n#define RCC_LPTIM345CLKSOURCE_CLKP         (RCC_SRDCCIPR_LPTIM3SEL_0 | RCC_SRDCCIPR_LPTIM3SEL_2)\n#endif /* RCC_D3CCIPR_LPTIM345SEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_LPTIM3_Clock_Source  RCCEx LPTIM3 Clock Source\n  * @{\n  */\n#define RCC_LPTIM3CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_D3PCLK1\n#define RCC_LPTIM3CLKSOURCE_PLL2          RCC_LPTIM345CLKSOURCE_PLL2\n#define RCC_LPTIM3CLKSOURCE_PLL3          RCC_LPTIM345CLKSOURCE_PLL3\n#define RCC_LPTIM3CLKSOURCE_LSE           RCC_LPTIM345CLKSOURCE_LSE\n#define RCC_LPTIM3CLKSOURCE_LSI           RCC_LPTIM345CLKSOURCE_LSI\n#define RCC_LPTIM3CLKSOURCE_CLKP          RCC_LPTIM345CLKSOURCE_CLKP\n\n/**\n  * @}\n  */\n#if defined(LPTIM4)\n/** @defgroup RCCEx_LPTIM4_Clock_Source  RCCEx LPTIM4 Clock Source\n  * @{\n  */\n#define RCC_LPTIM4CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_D3PCLK1\n#define RCC_LPTIM4CLKSOURCE_PLL2          RCC_LPTIM345CLKSOURCE_PLL2\n#define RCC_LPTIM4CLKSOURCE_PLL3          RCC_LPTIM345CLKSOURCE_PLL3\n#define RCC_LPTIM4CLKSOURCE_LSE           RCC_LPTIM345CLKSOURCE_LSE\n#define RCC_LPTIM4CLKSOURCE_LSI           RCC_LPTIM345CLKSOURCE_LSI\n#define RCC_LPTIM4CLKSOURCE_CLKP          RCC_LPTIM345CLKSOURCE_CLKP\n/**\n  * @}\n  */\n#endif /* LPTIM4 */\n\n#if defined(LPTIM5)\n/** @defgroup RCCEx_LPTIM5_Clock_Source  RCCEx LPTIM5 Clock Source\n  * @{\n  */\n#define RCC_LPTIM5CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_D3PCLK1\n#define RCC_LPTIM5CLKSOURCE_PLL2          RCC_LPTIM345CLKSOURCE_PLL2\n#define RCC_LPTIM5CLKSOURCE_PLL3          RCC_LPTIM345CLKSOURCE_PLL3\n#define RCC_LPTIM5CLKSOURCE_LSE           RCC_LPTIM345CLKSOURCE_LSE\n#define RCC_LPTIM5CLKSOURCE_LSI           RCC_LPTIM345CLKSOURCE_LSI\n#define RCC_LPTIM5CLKSOURCE_CLKP          RCC_LPTIM345CLKSOURCE_CLKP\n\n/**\n  * @}\n  */\n#endif /* LPTIM5 */\n\n#if defined(QUADSPI)\n/** @defgroup RCCEx_QSPI_Clock_Source  RCCEx QSPI Clock Source\n  * @{\n  */\n#define RCC_QSPICLKSOURCE_D1HCLK       (0x00000000U)\n#define RCC_QSPICLKSOURCE_PLL          RCC_D1CCIPR_QSPISEL_0\n#define RCC_QSPICLKSOURCE_PLL2         RCC_D1CCIPR_QSPISEL_1\n#define RCC_QSPICLKSOURCE_CLKP         RCC_D1CCIPR_QSPISEL\n\n/**\n  * @}\n  */\n#endif /* QUADSPI */\n\n\n#if defined(OCTOSPI1) || defined(OCTOSPI2)\n/** @defgroup RCCEx_OSPI_Clock_Source  RCCEx OSPI Clock Source\n  * @{\n  */\n\n#if defined(RCC_CDCCIPR_OCTOSPISEL)\n#define RCC_OSPICLKSOURCE_CDHCLK       (0x00000000U)\n/*aliases*/\n#define RCC_OSPICLKSOURCE_D1HCLK       RCC_OSPICLKSOURCE_CDHCLK\n#define RCC_OSPICLKSOURCE_HCLK         RCC_OSPICLKSOURCE_CDHCLK\n#define RCC_OSPICLKSOURCE_PLL          RCC_CDCCIPR_OCTOSPISEL_0\n#define RCC_OSPICLKSOURCE_PLL2         RCC_CDCCIPR_OCTOSPISEL_1\n#define RCC_OSPICLKSOURCE_CLKP         RCC_CDCCIPR_OCTOSPISEL\n#else\n#define RCC_OSPICLKSOURCE_D1HCLK       (0x00000000U)\n#define RCC_OSPICLKSOURCE_HCLK         RCC_OSPICLKSOURCE_D1HCLK\n#define RCC_OSPICLKSOURCE_PLL          RCC_D1CCIPR_OCTOSPISEL_0\n#define RCC_OSPICLKSOURCE_PLL2         RCC_D1CCIPR_OCTOSPISEL_1\n#define RCC_OSPICLKSOURCE_CLKP         RCC_D1CCIPR_OCTOSPISEL\n#endif /* RCC_CDCCIPR_OCTOSPISEL */\n\n\n/**\n  * @}\n  */\n#endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */\n\n#if defined(DSI)\n/** @defgroup RCCEx_DSI_Clock_Source  RCCEx DSI Clock Source\n  * @{\n  */\n#define RCC_DSICLKSOURCE_PHY       (0x00000000U)\n#define RCC_DSICLKSOURCE_PLL2       RCC_D1CCIPR_DSISEL\n\n/**\n  * @}\n  */\n#endif /* DSI */\n\n/** @defgroup RCCEx_FMC_Clock_Source  RCCEx FMC Clock Source\n  * @{\n  */\n#if defined(RCC_D1CCIPR_FMCSEL)\n#define RCC_FMCCLKSOURCE_D1HCLK       (0x00000000U)\n#define RCC_FMCCLKSOURCE_HCLK         RCC_FMCCLKSOURCE_D1HCLK\n#define RCC_FMCCLKSOURCE_PLL          RCC_D1CCIPR_FMCSEL_0\n#define RCC_FMCCLKSOURCE_PLL2         RCC_D1CCIPR_FMCSEL_1\n#define RCC_FMCCLKSOURCE_CLKP         RCC_D1CCIPR_FMCSEL\n#else\n#define RCC_FMCCLKSOURCE_CDHCLK       (0x00000000U)\n#define RCC_FMCCLKSOURCE_HCLK         RCC_FMCCLKSOURCE_CDHCLK\n/*alias*/\n#define RCC_FMCCLKSOURCE_D1HCLK       RCC_FMCCLKSOURCE_CDHCLK\n#define RCC_FMCCLKSOURCE_PLL          RCC_CDCCIPR_FMCSEL_0\n#define RCC_FMCCLKSOURCE_PLL2         RCC_CDCCIPR_FMCSEL_1\n#define RCC_FMCCLKSOURCE_CLKP         RCC_CDCCIPR_FMCSEL\n#endif /* RCC_D1CCIPR_FMCSEL */\n/**\n  * @}\n  */\n\n#if defined(FDCAN1) || defined(FDCAN2)\n/** @defgroup RCCEx_FDCAN_Clock_Source  RCCEx FDCAN Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP1R_FDCANSEL)\n#define RCC_FDCANCLKSOURCE_HSE         (0x00000000U)\n#define RCC_FDCANCLKSOURCE_PLL          RCC_D2CCIP1R_FDCANSEL_0\n#define RCC_FDCANCLKSOURCE_PLL2         RCC_D2CCIP1R_FDCANSEL_1\n#else\n#define RCC_FDCANCLKSOURCE_HSE         (0x00000000U)\n#define RCC_FDCANCLKSOURCE_PLL          RCC_CDCCIP1R_FDCANSEL_0\n#define RCC_FDCANCLKSOURCE_PLL2         RCC_CDCCIP1R_FDCANSEL_1\n#endif /* D3_SRAM_BASE */\n/**\n  * @}\n  */\n#endif /*FDCAN1 || FDCAN2*/\n\n\n/** @defgroup RCCEx_SDMMC_Clock_Source  RCCEx SDMMC Clock Source\n  * @{\n  */\n#if defined(RCC_D1CCIPR_SDMMCSEL)\n#define RCC_SDMMCCLKSOURCE_PLL           (0x00000000U)\n#define RCC_SDMMCCLKSOURCE_PLL2           RCC_D1CCIPR_SDMMCSEL\n#else\n#define RCC_SDMMCCLKSOURCE_PLL           (0x00000000U)\n#define RCC_SDMMCCLKSOURCE_PLL2           RCC_CDCCIPR_SDMMCSEL\n#endif /* RCC_D1CCIPR_SDMMCSEL */\n/**\n  * @}\n  */\n\n\n/** @defgroup RCCEx_ADC_Clock_Source  RCCEx ADC Clock Source\n  * @{\n  */\n#if defined(RCC_D3CCIPR_ADCSEL_0)\n#define RCC_ADCCLKSOURCE_PLL2       (0x00000000U)\n#define RCC_ADCCLKSOURCE_PLL3       RCC_D3CCIPR_ADCSEL_0\n#define RCC_ADCCLKSOURCE_CLKP       RCC_D3CCIPR_ADCSEL_1\n#else\n#define RCC_ADCCLKSOURCE_PLL2       (0x00000000U)\n#define RCC_ADCCLKSOURCE_PLL3       RCC_SRDCCIPR_ADCSEL_0\n#define RCC_ADCCLKSOURCE_CLKP       RCC_SRDCCIPR_ADCSEL_1\n#endif /* RCC_D3CCIPR_ADCSEL_0  */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_SWPMI1_Clock_Source  RCCEx SWPMI1 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP1R_SWPSEL)\n#define RCC_SWPMI1CLKSOURCE_D2PCLK1       (0x00000000U)\n#define RCC_SWPMI1CLKSOURCE_HSI            RCC_D2CCIP1R_SWPSEL\n#else\n#define RCC_SWPMI1CLKSOURCE_CDPCLK1       (0x00000000U)\n/* alias */\n#define RCC_SWPMI1CLKSOURCE_D2PCLK1        RCC_SWPMI1CLKSOURCE_CDPCLK1\n#define RCC_SWPMI1CLKSOURCE_HSI            RCC_CDCCIP1R_SWPSEL\n#endif /* RCC_D2CCIP1R_SWPSEL */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_DFSDM1_Clock_Source  RCCEx DFSDM1 Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP1R_DFSDM1SEL)\n#define RCC_DFSDM1CLKSOURCE_D2PCLK1        (0x00000000U)\n#define RCC_DFSDM1CLKSOURCE_SYS            RCC_D2CCIP1R_DFSDM1SEL\n#else\n#define RCC_DFSDM1CLKSOURCE_CDPCLK1        (0x00000000U)\n/* alias */\n#define RCC_DFSDM1CLKSOURCE_D2PCLK1        RCC_DFSDM1CLKSOURCE_CDPCLK1\n#define RCC_DFSDM1CLKSOURCE_SYS            RCC_CDCCIP1R_DFSDM1SEL\n#endif /* RCC_D2CCIP1R_DFSDM1SEL */\n/**\n  * @}\n  */\n\n#if defined(DFSDM2_BASE)\n/** @defgroup RCCEx_DFSDM2_Clock_Source  RCCEx DFSDM2 Clock Source\n  * @{\n  */\n#define RCC_DFSDM2CLKSOURCE_SRDPCLK4       (0x00000000U)\n/* alias */\n#define RCC_DFSDM2CLKSOURCE_SRDPCLK1       RCC_DFSDM2CLKSOURCE_SRDPCLK4\n#define RCC_DFSDM2CLKSOURCE_SYS            RCC_SRDCCIPR_DFSDM2SEL\n/**\n  * @}\n  */\n#endif /* DFSDM2 */\n\n/** @defgroup RCCEx_SPDIFRX_Clock_Source  RCCEx SPDIFRX Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP1R_SPDIFSEL_0)\n#define RCC_SPDIFRXCLKSOURCE_PLL        (0x00000000U)\n#define RCC_SPDIFRXCLKSOURCE_PLL2       RCC_D2CCIP1R_SPDIFSEL_0\n#define RCC_SPDIFRXCLKSOURCE_PLL3       RCC_D2CCIP1R_SPDIFSEL_1\n#define RCC_SPDIFRXCLKSOURCE_HSI        RCC_D2CCIP1R_SPDIFSEL\n#else\n#define RCC_SPDIFRXCLKSOURCE_PLL        (0x00000000U)\n#define RCC_SPDIFRXCLKSOURCE_PLL2       RCC_CDCCIP1R_SPDIFSEL_0\n#define RCC_SPDIFRXCLKSOURCE_PLL3       RCC_CDCCIP1R_SPDIFSEL_1\n#define RCC_SPDIFRXCLKSOURCE_HSI        RCC_CDCCIP1R_SPDIFSEL\n#endif /* RCC_D2CCIP1R_SPDIFSEL_0 */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CEC_Clock_Source  RCCEx CEC Clock Source\n  * @{\n  */\n#if defined(RCC_D2CCIP2R_CECSEL_0)\n#define RCC_CECCLKSOURCE_LSE        (0x00000000U)\n#define RCC_CECCLKSOURCE_LSI         RCC_D2CCIP2R_CECSEL_0\n#define RCC_CECCLKSOURCE_CSI         RCC_D2CCIP2R_CECSEL_1\n#else\n#define RCC_CECCLKSOURCE_LSE        (0x00000000U)\n#define RCC_CECCLKSOURCE_LSI         RCC_CDCCIP2R_CECSEL_0\n#define RCC_CECCLKSOURCE_CSI         RCC_CDCCIP2R_CECSEL_1\n#endif /* RCC_D2CCIP2R_CECSEL_0 */\n/**\n  * @}\n  */\n\n\n/** @defgroup RCCEx_CLKP_Clock_Source  RCCEx CLKP Clock Source\n  * @{\n  */\n#if defined(RCC_D1CCIPR_CKPERSEL_0)\n#define RCC_CLKPSOURCE_HSI        (0x00000000U)\n#define RCC_CLKPSOURCE_CSI         RCC_D1CCIPR_CKPERSEL_0\n#define RCC_CLKPSOURCE_HSE         RCC_D1CCIPR_CKPERSEL_1\n#else\n#define RCC_CLKPSOURCE_HSI        (0x00000000U)\n#define RCC_CLKPSOURCE_CSI         RCC_CDCCIPR_CKPERSEL_0\n#define RCC_CLKPSOURCE_HSE         RCC_CDCCIPR_CKPERSEL_1\n#endif /* RCC_D1CCIPR_CKPERSEL_0 */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_TIM_Prescaler_Selection RCCEx TIM Prescaler Selection\n  * @{\n  */\n#define RCC_TIMPRES_DESACTIVATED        (0x00000000U)\n#define RCC_TIMPRES_ACTIVATED            RCC_CFGR_TIMPRE\n\n/**\n  * @}\n  */\n\n#if defined(DUAL_CORE)\n\n/** @defgroup RCCEx_RCC_BootCx RCCEx RCC BootCx\n  * @{\n  */\n#define RCC_BOOT_C1        RCC_GCR_BOOT_C1\n#define RCC_BOOT_C2        RCC_GCR_BOOT_C2\n\n/**\n  * @}\n  */\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n/** @defgroup RCCEx_RCC_WWDGx  RCCEx RCC WWDGx\n  * @{\n  */\n#define RCC_WWDG1        RCC_GCR_WW1RSC\n#define RCC_WWDG2        RCC_GCR_WW2RSC\n\n/**\n  * @}\n  */\n\n#else\n\n/** @defgroup RCCEx_RCC_WWDGx  RCCEx RCC WWDGx\n  * @{\n  */\n#define RCC_WWDG1        RCC_GCR_WW1RSC\n\n/**\n  * @}\n  */\n\n#endif /*DUAL_CORE*/\n\n/** @defgroup RCCEx_EXTI_LINE_LSECSS  RCC LSE CSS external interrupt line\n  * @{\n  */\n#define RCC_EXTI_LINE_LSECSS           EXTI_IMR1_IM18        /*!< External interrupt line 18 connected to the LSE CSS EXTI Line */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_Status RCCEx CRS Status\n  * @{\n  */\n#define RCC_CRS_NONE                   (0x00000000U)\n#define RCC_CRS_TIMEOUT                (0x00000001U)\n#define RCC_CRS_SYNCOK                 (0x00000002U)\n#define RCC_CRS_SYNCWARN               (0x00000004U)\n#define RCC_CRS_SYNCERR                (0x00000008U)\n#define RCC_CRS_SYNCMISS               (0x00000010U)\n#define RCC_CRS_TRIMOVF                (0x00000020U)\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_SynchroSource RCCEx CRS SynchroSource\n  * @{\n  */\n#define RCC_CRS_SYNC_SOURCE_PIN       (0x00000000U)                            /*!< Synchro Signal source external pin, Available on STM32H7 Rev.B and above devices only */\n#define RCC_CRS_SYNC_SOURCE_LSE        CRS_CFGR_SYNCSRC_0                      /*!< Synchro Signal source LSE */\n#define RCC_CRS_SYNC_SOURCE_USB1       CRS_CFGR_SYNCSRC_1                      /*!< Synchro Signal source USB1 SOF (default) */\n#define RCC_CRS_SYNC_SOURCE_USB2      (CRS_CFGR_SYNCSRC_1|CRS_CFGR_SYNCSRC_0)  /*!< Synchro Signal source USB2 SOF */\n\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_SynchroDivider RCCEx CRS SynchroDivider\n  * @{\n  */\n#define RCC_CRS_SYNC_DIV1        (0x00000000U)           /*!< Synchro Signal not divided (default) */\n#define RCC_CRS_SYNC_DIV2        CRS_CFGR_SYNCDIV_0                         /*!< Synchro Signal divided by 2 */\n#define RCC_CRS_SYNC_DIV4        CRS_CFGR_SYNCDIV_1                         /*!< Synchro Signal divided by 4 */\n#define RCC_CRS_SYNC_DIV8        (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0)  /*!< Synchro Signal divided by 8 */\n#define RCC_CRS_SYNC_DIV16       CRS_CFGR_SYNCDIV_2                        /*!< Synchro Signal divided by 16 */\n#define RCC_CRS_SYNC_DIV32       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */\n#define RCC_CRS_SYNC_DIV64       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */\n#define RCC_CRS_SYNC_DIV128      CRS_CFGR_SYNCDIV                         /*!< Synchro Signal divided by 128 */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_SynchroPolarity RCCEx CRS SynchroPolarity\n  * @{\n  */\n#define RCC_CRS_SYNC_POLARITY_RISING   (0x00000000U) /*!< Synchro Active on rising edge (default) */\n#define RCC_CRS_SYNC_POLARITY_FALLING  CRS_CFGR_SYNCPOL        /*!< Synchro Active on falling edge */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_ReloadValueDefault RCCEx CRS ReloadValueDefault\n  * @{\n  */\n#define RCC_CRS_RELOADVALUE_DEFAULT    (0x0000BB7FU) /*!< The reset value of the RELOAD field corresponds\n                                                                    to a target frequency of 48 MHz and a synchronization signal frequency of 1 kHz (SOF signal from USB). */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_ErrorLimitDefault RCCEx CRS ErrorLimitDefault\n  * @{\n  */\n#define RCC_CRS_ERRORLIMIT_DEFAULT     (0x00000022U) /*!< Default Frequency error limit */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_HSI48CalibrationDefault RCCEx CRS HSI48CalibrationDefault\n  * @{\n  */\n#define RCC_CRS_HSI48CALIBRATION_DEFAULT (0x00000020U) /*!< The default value is 32, which corresponds to the middle of the trimming interval.\n                                                                      The trimming step is around 67 kHz between two consecutive TRIM steps. A higher TRIM value\n                                                                      corresponds to a higher output frequency */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_FreqErrorDirection RCCEx CRS FreqErrorDirection\n  * @{\n  */\n#define RCC_CRS_FREQERRORDIR_UP        (0x00000000U)   /*!< Upcounting direction, the actual frequency is above the target */\n#define RCC_CRS_FREQERRORDIR_DOWN      (CRS_ISR_FEDIR) /*!< Downcounting direction, the actual frequency is below the target */\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_Interrupt_Sources RCCEx CRS Interrupt Sources\n  * @{\n  */\n#define RCC_CRS_IT_SYNCOK              CRS_CR_SYNCOKIE       /*!< SYNC event OK */\n#define RCC_CRS_IT_SYNCWARN            CRS_CR_SYNCWARNIE     /*!< SYNC warning */\n#define RCC_CRS_IT_ERR                 CRS_CR_ERRIE          /*!< Error */\n#define RCC_CRS_IT_ESYNC               CRS_CR_ESYNCIE        /*!< Expected SYNC */\n#define RCC_CRS_IT_SYNCERR             CRS_CR_ERRIE          /*!< SYNC error */\n#define RCC_CRS_IT_SYNCMISS            CRS_CR_ERRIE          /*!< SYNC missed */\n#define RCC_CRS_IT_TRIMOVF             CRS_CR_ERRIE          /*!< Trimming overflow or underflow */\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_CRS_Flags RCCEx CRS Flags\n  * @{\n  */\n#define RCC_CRS_FLAG_SYNCOK            CRS_ISR_SYNCOKF       /*!< SYNC event OK flag     */\n#define RCC_CRS_FLAG_SYNCWARN          CRS_ISR_SYNCWARNF     /*!< SYNC warning flag      */\n#define RCC_CRS_FLAG_ERR               CRS_ISR_ERRF          /*!< Error flag        */\n#define RCC_CRS_FLAG_ESYNC             CRS_ISR_ESYNCF        /*!< Expected SYNC flag     */\n#define RCC_CRS_FLAG_SYNCERR           CRS_ISR_SYNCERR       /*!< SYNC error */\n#define RCC_CRS_FLAG_SYNCMISS          CRS_ISR_SYNCMISS      /*!< SYNC missed*/\n#define RCC_CRS_FLAG_TRIMOVF           CRS_ISR_TRIMOVF       /*!< Trimming overflow or underflow */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros\n  * @{\n  */\n\n/** @brief  Macros to enable or disable PLL2.\n  * @note   After enabling PLL2, the application software should wait on\n  *         PLL2RDY flag to be set indicating that PLL2 clock is stable and can\n  *         be used as kernel clock source.\n  * @note   PLL2 is disabled by hardware when entering STOP and STANDBY modes.\n  */\n#define __HAL_RCC_PLL2_ENABLE()         SET_BIT(RCC->CR, RCC_CR_PLL2ON)\n#define __HAL_RCC_PLL2_DISABLE()        CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON)\n\n/**\n  * @brief  Enables or disables each clock output (PLL2_P_CLK, PLL2_Q_CLK, PLL2_R_CLK)\n  * @note   Enabling/disabling  those Clocks can be done only when the PLL2 is disabled,\n  *         This is mainly used to save Power.\n  * @param  __RCC_PLL2ClockOut__ Specifies the PLL2 clock to be outputted\n  *          This parameter can be one of the following values:\n  *            @arg RCC_PLL2_DIVP: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *            @arg RCC_PLL2_DIVQ: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *            @arg RCC_PLL2_DIVR: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *\n  * (*) : For stm32h72xxx and stm32h73xxx family lines and requires to enable the CPU_FREQ_BOOST flash option byte, 520MHZ otherwise.\n  * (**) : For stm32h74xx and stm32h75xx family lines and requires the board to be connected on LDO regulator not SMPS, 400MHZ otherwise.\n  * (***): For stm32h7a3xx, stm32h7b3xx and stm32h7b0xx family lines.\n  *\n  * @retval None\n  */\n#define __HAL_RCC_PLL2CLKOUT_ENABLE(__RCC_PLL2ClockOut__)   SET_BIT(RCC->PLLCFGR, (__RCC_PLL2ClockOut__))\n\n#define __HAL_RCC_PLL2CLKOUT_DISABLE(__RCC_PLL2ClockOut__)  CLEAR_BIT(RCC->PLLCFGR, (__RCC_PLL2ClockOut__))\n\n/**\n  * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL2 VCO\n  * @note   Enabling/disabling  Fractional Part can be any time  without the need to stop the PLL2\n  * @retval None\n  */\n#define __HAL_RCC_PLL2FRACN_ENABLE()   SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN)\n\n#define __HAL_RCC_PLL2FRACN_DISABLE()  CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN)\n\n/**\n  * @brief  Macro to configures the PLL2  multiplication and division factors.\n  * @note   This function must be used only when PLL2 is disabled.\n  *\n  * @param  __PLL2M__ specifies the division factor for PLL2 VCO input clock\n  *          This parameter must be a number between 1 and 63.\n  * @note   You have to set the PLLM parameter correctly to ensure that the VCO input\n  *         frequency ranges from 1 to 16 MHz.\n  *\n  * @param  __PLL2N__ specifies the multiplication factor for PLL2 VCO output clock\n  *          This parameter must be a number between 4 and 512 or between 8 and 420(*).\n  * @note   You have to set the PLL2N parameter correctly to ensure that the VCO\n  *         output frequency is between 150 and 420 MHz (when in medium VCO range) or\n  *         between 192 and 836 MHZ or between 128 and 560 MHZ(*) (when in wide VCO range)\n  *\n  * @param  __PLL2P__ specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 1 and 128.\n  *\n  * @param  __PLL2Q__ specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 1 and 128.\n  *\n  * @param  __PLL2R__ specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 1 and 128.\n  *\n  * @note   To insure an optimal behavior of the PLL when one of the post-divider (DIVP, DIVQ or DIVR)\n  *         is not used, application shall clear the enable bit (DIVyEN) and assign lowest possible\n  *         value to  __PLL2P__, __PLL2Q__ or __PLL2R__ parameters.\n  * @retval None\n  *\n  *  (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  */\n\n#define __HAL_RCC_PLL2_CONFIG(__PLL2M__, __PLL2N__, __PLL2P__, __PLL2Q__,__PLL2R__ ) \\\n                  do{ \\\n                       MODIFY_REG(RCC->PLLCKSELR, ( RCC_PLLCKSELR_DIVM2) , ( (__PLL2M__) <<12U));  \\\n                       WRITE_REG (RCC->PLL2DIVR , ( (((__PLL2N__) - 1U ) & RCC_PLL2DIVR_N2) | ((((__PLL2P__) -1U ) << 9U) & RCC_PLL2DIVR_P2) | \\\n                       ((((__PLL2Q__) -1U) << 16U) & RCC_PLL2DIVR_Q2) | ((((__PLL2R__)- 1U) << 24U) & RCC_PLL2DIVR_R2))); \\\n                    } while(0)\n\n/**\n  * @brief  Macro to configures PLL2 clock Fractional Part Of The Multiplication Factor\n  *\n  * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL2 VCO\n  *\n  * @param  __RCC_PLL2FRACN__ Specifies Fractional Part Of The Multiplication factor for PLL2 VCO\n  *                           It should be a value between 0 and 8191\n  * @note   Warning: the software has to set correctly these bits to insure that the VCO\n  *                  output frequency is between its valid frequency range, which is:\n  *                  192 to 836 MHz or 128 to 560 MHz(*) if PLL2VCOSEL = 0\n  *                  150 to 420 MHz if PLL2VCOSEL = 1.\n  *\n  * (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  *\n  * @retval None\n  */\n#define  __HAL_RCC_PLL2FRACN_CONFIG(__RCC_PLL2FRACN__) \\\n                 MODIFY_REG(RCC->PLL2FRACR, RCC_PLL2FRACR_FRACN2,((uint32_t)(__RCC_PLL2FRACN__) << RCC_PLL2FRACR_FRACN2_Pos))\n\n/** @brief  Macro to select  the PLL2  reference frequency range.\n  * @param  __RCC_PLL2VCIRange__ specifies the PLL2 input frequency range\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PLL2VCIRANGE_0: Range frequency is between 1 and 2 MHz\n  *            @arg RCC_PLL2VCIRANGE_1: Range frequency is between 2 and 4 MHz\n  *            @arg RCC_PLL2VCIRANGE_2: Range frequency is between 4 and 8 MHz\n  *            @arg RCC_PLL2VCIRANGE_3: Range frequency is between 8 and 16 MHz\n  * @retval None\n  */\n#define __HAL_RCC_PLL2_VCIRANGE(__RCC_PLL2VCIRange__) \\\n                  MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2RGE, (__RCC_PLL2VCIRange__))\n\n\n/** @brief  Macro to select  the PLL2  reference frequency range.\n  * @param  __RCC_PLL2VCORange__ Specifies the PLL2 input frequency range\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PLL2VCOWIDE: Range frequency is between 192 and 836 MHz or between 128 to 560 MHz(*)\n  *            @arg RCC_PLL2VCOMEDIUM: Range frequency is between 150 and 420 MHz\n  *\n  * (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  *\n  * @retval None\n  */\n#define __HAL_RCC_PLL2_VCORANGE(__RCC_PLL2VCORange__) \\\n                  MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2VCOSEL, (__RCC_PLL2VCORange__))\n\n/** @brief  Macros to enable or disable the main PLL3.\n  * @note   After enabling  PLL3, the application software should wait on\n  *         PLL3RDY flag to be set indicating that PLL3 clock is stable and can\n  *         be used as kernel clock source.\n  * @note   PLL3 is disabled by hardware when entering STOP and STANDBY modes.\n  */\n#define __HAL_RCC_PLL3_ENABLE()         SET_BIT(RCC->CR, RCC_CR_PLL3ON)\n#define __HAL_RCC_PLL3_DISABLE()        CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON)\n\n/**\n  * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL3 VCO\n  * @note   Enabling/disabling  Fractional Part can be any time  without the need to stop the PLL3\n  * @retval None\n  */\n#define __HAL_RCC_PLL3FRACN_ENABLE()   SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN)\n\n#define __HAL_RCC_PLL3FRACN_DISABLE()  CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN)\n\n/**\n  * @brief  Enables or disables each clock output (PLL3_P_CLK, PLL3_Q_CLK, PLL3_R_CLK)\n  * @note   Enabling/disabling  those Clocks can be done only when the PLL3 is disabled,\n  *         This is mainly used to save Power.\n  * @param  __RCC_PLL3ClockOut__ specifies the PLL3 clock to be outputted\n  *          This parameter can be one of the following values:\n  *            @arg RCC_PLL3_DIVP: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *            @arg RCC_PLL3_DIVQ: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *            @arg RCC_PLL3_DIVR: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)\n  *\n  * (*) : For stm32h72xxx and stm32h73xxx family lines and requires to enable the CPU_FREQ_BOOST flash option byte, 520MHZ otherwise.\n  * (**) : For stm32h74xx and stm32h75xx family lines and requires the board to be connected on LDO regulator not SMPS, 400MHZ otherwise.\n  * (***): For stm32h7a3xx, stm32h7b3xx and stm32h7b0xx family lines.\n  *\n  * @retval None\n  */\n#define __HAL_RCC_PLL3CLKOUT_ENABLE(__RCC_PLL3ClockOut__)   SET_BIT(RCC->PLLCFGR, (__RCC_PLL3ClockOut__))\n\n#define __HAL_RCC_PLL3CLKOUT_DISABLE(__RCC_PLL3ClockOut__)  CLEAR_BIT(RCC->PLLCFGR, (__RCC_PLL3ClockOut__))\n\n/**\n  * @brief  Macro to configures the PLL3  multiplication and division factors.\n  * @note   This function must be used only when PLL3 is disabled.\n  *\n  * @param  __PLL3M__ specifies the division factor for PLL3 VCO input clock\n  *          This parameter must be a number between 1 and 63.\n  * @note   You have to set the PLLM parameter correctly to ensure that the VCO input\n  *         frequency ranges from 1 to 16 MHz.\n  *\n  * @param  __PLL3N__ specifies the multiplication factor for PLL3 VCO output clock\n  *          This parameter must be a number between 4 and 512.\n  * @note   You have to set the PLL3N parameter correctly to ensure that the VCO\n  *         output frequency is between 150 and 420 MHz (when in medium VCO range) or\n  *         between 192 and 836 MHZ or between 128 and 560 MHZ(*) (when in wide VCO range)\n  *\n  * @param  __PLL3P__ specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 2 and 128 (where odd numbers not allowed)\n  *\n  * @param  __PLL3Q__ specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 1 and 128\n  *\n  * @param  __PLL3R__ specifies the division factor for peripheral kernel clocks\n  *          This parameter must be a number between 1 and 128\n  *\n  * @note   To insure an optimal behavior of the PLL when one of the post-divider (DIVP, DIVQ or DIVR)\n  *         is not used, application shall clear the enable bit (DIVyEN) and assign lowest possible\n  *         value to  __PLL3P__, __PLL3Q__ or __PLL3R__ parameters.\n  * @retval None\n  *\n  *  (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  */\n\n#define __HAL_RCC_PLL3_CONFIG(__PLL3M__, __PLL3N__, __PLL3P__, __PLL3Q__,__PLL3R__ ) \\\n                  do{ MODIFY_REG(RCC->PLLCKSELR, ( RCC_PLLCKSELR_DIVM3) , ( (__PLL3M__) <<20U));  \\\n                         WRITE_REG (RCC->PLL3DIVR , ( (((__PLL3N__) - 1U ) & RCC_PLL3DIVR_N3) | ((((__PLL3P__) -1U ) << 9U) & RCC_PLL3DIVR_P3) | \\\n                                   ((((__PLL3Q__) -1U) << 16U) & RCC_PLL3DIVR_Q3) | ((((__PLL3R__) - 1U) << 24U) & RCC_PLL3DIVR_R3))); \\\n                       } while(0)\n\n\n\n/**\n  * @brief  Macro to configures  PLL3 clock Fractional Part of The Multiplication Factor\n  *\n  * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL3 VCO\n  *\n  * @param  __RCC_PLL3FRACN__ specifies Fractional Part Of The Multiplication Factor for PLL3 VCO\n  *                            It should be a value between 0 and 8191\n  * @note   Warning: the software has to set correctly these bits to insure that the VCO\n  *                  output frequency is between its valid frequency range, which is:\n  *                  192 to 836 MHz or 128 to 560 MHz(*) if PLL3VCOSEL = 0\n  *                  150 to 420 MHz if PLL3VCOSEL = 1.\n  *\n  * (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  *\n  * @retval None\n  */\n #define  __HAL_RCC_PLL3FRACN_CONFIG(__RCC_PLL3FRACN__) MODIFY_REG(RCC->PLL3FRACR, RCC_PLL3FRACR_FRACN3, (uint32_t)(__RCC_PLL3FRACN__) << RCC_PLL3FRACR_FRACN3_Pos)\n\n/** @brief  Macro to select  the PLL3  reference frequency range.\n  * @param  __RCC_PLL3VCIRange__ specifies the PLL1 input frequency range\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PLL3VCIRANGE_0: Range frequency is between 1 and 2 MHz\n  *            @arg RCC_PLL3VCIRANGE_1: Range frequency is between 2 and 4 MHz\n  *            @arg RCC_PLL3VCIRANGE_2: Range frequency is between 4 and 8 MHz\n  *            @arg RCC_PLL3VCIRANGE_3: Range frequency is between 8 and 16 MHz\n  * @retval None\n  */\n#define __HAL_RCC_PLL3_VCIRANGE(__RCC_PLL3VCIRange__) \\\n                  MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3RGE, (__RCC_PLL3VCIRange__))\n\n\n/** @brief  Macro to select  the PLL3  reference frequency range.\n  * @param  __RCC_PLL3VCORange__ specifies the PLL1 input frequency range\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PLL3VCOWIDE: Range frequency is between 192 and 836 MHz  or between 128 to 560 MHz(*)\n  *            @arg RCC_PLL3VCOMEDIUM: Range frequency is between 150 and 420 MHz\n  *\n  * (*) : For stm32h7a3xx and stm32h7b3xx family lines.\n  *\n  * @retval None\n  */\n#define __HAL_RCC_PLL3_VCORANGE(__RCC_PLL3VCORange__) \\\n                  MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3VCOSEL, (__RCC_PLL3VCORange__))\n/**\n  * @brief  Macro to Configure the SAI1 clock source.\n  * @param  __RCC_SAI1CLKSource__ defines the SAI1 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI1CLKSOURCE_PLL: SAI1 clock = PLL\n  *             @arg RCC_SAI1CLKSOURCE_PLL2: SAI1 clock = PLL2\n  *             @arg RCC_SAI1CLKSOURCE_PLL3: SAI1 clock = PLL3\n  *             @arg RCC_SAI1CLKSOURCE_OSC: SAI1 clock  = OSC\n  *             @arg RCC_SAI1CLKSOURCE_PIN: SAI1 clock = External Clock\n  * @retval None\n  */\n#if defined(RCC_D2CCIP1R_SAI1SEL)\n#define __HAL_RCC_SAI1_CONFIG(__RCC_SAI1CLKSource__ )\\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI1SEL, (__RCC_SAI1CLKSource__))\n#else\n#define __HAL_RCC_SAI1_CONFIG(__RCC_SAI1CLKSource__ )\\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI1SEL, (__RCC_SAI1CLKSource__))\n#endif /* RCC_D2CCIP1R_SAI1SEL */\n\n/** @brief  Macro to get the SAI1 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI1CLKSOURCE_PLL: SAI1 clock = PLL\n  *             @arg RCC_SAI1CLKSOURCE_PLL2: SAI1 clock = PLL2\n  *             @arg RCC_SAI1CLKSOURCE_PLL3: SAI1 clock = PLL3\n  *             @arg RCC_SAI1CLKSOURCE_CLKP: SAI1 clock  = CLKP\n  *             @arg RCC_SAI1CLKSOURCE_PIN: SAI1 clock = External Clock\n  */\n#if defined(RCC_D2CCIP1R_SAI1SEL)\n#define __HAL_RCC_GET_SAI1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI1SEL)))\n#else\n#define __HAL_RCC_GET_SAI1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI1SEL)))\n#endif /* RCC_D2CCIP1R_SAI1SEL */\n\n/**\n  * @brief  Macro to Configure the SPDIFRX clock source.\n  * @param  __RCC_SPDIFCLKSource__ defines the SPDIFRX clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3,  or internal OSC clock\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPDIFRXCLKSOURCE_PLL:  SPDIFRX clock = PLL\n  *             @arg RCC_SPDIFRXCLKSOURCE_PLL2: SPDIFRX clock = PLL2\n  *             @arg RCC_SPDIFRXCLKSOURCE_PLL3: SPDIFRX clock = PLL3\n  *             @arg RCC_SPDIFRXCLKSOURCE_HSI:  SPDIFRX clock  = HSI\n  * @retval None\n  */\n#if defined(RCC_D2CCIP1R_SPDIFSEL)\n#define __HAL_RCC_SPDIFRX_CONFIG(__RCC_SPDIFCLKSource__ )\\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL, (__RCC_SPDIFCLKSource__))\n#else\n#define __HAL_RCC_SPDIFRX_CONFIG(__RCC_SPDIFCLKSource__ )\\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SPDIFSEL, (__RCC_SPDIFCLKSource__))\n#endif /* RCC_D2CCIP1R_SPDIFSEL */\n\n/**\n  * @brief  Macro to get the SPDIFRX clock source.\n  * @retval None\n  */\n#if defined(RCC_D2CCIP1R_SPDIFSEL)\n#define __HAL_RCC_GET_SPDIFRX_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL)))\n#else\n#define __HAL_RCC_GET_SPDIFRX_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SPDIFSEL)))\n#endif /* RCC_D2CCIP1R_SPDIFSEL */\n\n#if defined(SAI3)\n/**\n  * @brief  Macro to Configure the SAI2/3 clock source.\n  * @param  __RCC_SAI23CLKSource__ defines the SAI2/3 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI23CLKSOURCE_PLL: SAI2/3 clock = PLL\n  *             @arg RCC_SAI23CLKSOURCE_PLL2: SAI2/3 clock = PLL2\n  *             @arg RCC_SAI23CLKSOURCE_PLL3: SAI2/3 clock = PLL3\n  *             @arg RCC_SAI23CLKSOURCE_CLKP: SAI2/3 clock  = CLKP\n  *             @arg RCC_SAI23CLKSOURCE_PIN: SAI2/3 clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SAI23_CONFIG(__RCC_SAI23CLKSource__ )\\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI23SEL, (__RCC_SAI23CLKSource__))\n\n/** @brief  Macro to get the SAI2/3 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI23CLKSOURCE_PLL: SAI2/3 clock = PLL\n  *             @arg RCC_SAI23CLKSOURCE_PLL2: SAI2/3 clock = PLL2\n  *             @arg RCC_SAI23CLKSOURCE_PLL3: SAI2/3 clock = PLL3\n  *             @arg RCC_SAI23CLKSOURCE_CLKP: SAI2/3 clock  = CLKP\n  *             @arg RCC_SAI23CLKSOURCE_PIN: SAI2/3 clock = External Clock\n  */\n#define __HAL_RCC_GET_SAI23_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI23SEL)))\n\n/**\n  * @brief  Macro to Configure the SAI2 clock source.\n  * @param  __RCC_SAI2CLKSource__ defines the SAI2 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI2CLKSOURCE_PLL: SAI2 clock = PLL\n  *             @arg RCC_SAI2CLKSOURCE_PLL2: SAI2 clock = PLL2\n  *             @arg RCC_SAI2CLKSOURCE_PLL3: SAI2 clock = PLL3\n  *             @arg RCC_SAI2CLKSOURCE_CLKP: SAI2 clock  = CLKP\n  *             @arg RCC_SAI2CLKSOURCE_PIN: SAI2 clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SAI2_CONFIG  __HAL_RCC_SAI23_CONFIG\n\n/** @brief  Macro to get the SAI2 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI2CLKSOURCE_PLL: SAI2 clock = PLL\n  *             @arg RCC_SAI2CLKSOURCE_PLL2: SAI2 clock = PLL2\n  *             @arg RCC_SAI2CLKSOURCE_PLL3: SAI2 clock = PLL3\n  *             @arg RCC_SAI2CLKSOURCE_CLKP: SAI2 clock  = CLKP\n  *             @arg RCC_SAI2CLKSOURCE_PIN: SAI2 clock = External Clock\n  */\n#define __HAL_RCC_GET_SAI2_SOURCE  __HAL_RCC_GET_SAI23_SOURCE\n\n/**\n  * @brief  Macro to Configure the SAI3 clock source.\n  * @param  __RCC_SAI3CLKSource__ defines the SAI3 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI3CLKSOURCE_PLL: SAI3 clock = PLL\n  *             @arg RCC_SAI3CLKSOURCE_PLL2: SAI3 clock = PLL2\n  *             @arg RCC_SAI3CLKSOURCE_PLL3: SAI3 clock = PLL3\n  *             @arg RCC_SAI3CLKSOURCE_CLKP: SAI3 clock  = CLKP\n  *             @arg RCC_SAI3CLKSOURCE_PIN: SAI3 clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SAI3_CONFIG __HAL_RCC_SAI23_CONFIG\n\n/** @brief  Macro to get the SAI3 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI3CLKSOURCE_PLL: SAI3 clock = PLL\n  *             @arg RCC_SAI3CLKSOURCE_PLL2: SAI3 clock = PLL2\n  *             @arg RCC_SAI3CLKSOURCE_PLL3: SAI3 clock = PLL3\n  *             @arg RCC_SAI3CLKSOURCE_CLKP: SAI3 clock  = CLKP\n  *             @arg RCC_SAI3CLKSOURCE_PIN: SAI3 clock = External Clock\n  */\n#define __HAL_RCC_GET_SAI3_SOURCE  __HAL_RCC_GET_SAI23_SOURCE\n#endif /* SAI3 */\n\n#if defined(RCC_CDCCIP1R_SAI2ASEL)\n/**\n  * @brief  Macro to Configure the SAI2A clock source.\n  * @param  __RCC_SAI2ACLKSource__ defines the SAI2A clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI2ACLKSOURCE_PLL: SAI2A clock = PLL\n  *             @arg RCC_SAI2ACLKSOURCE_PLL2: SAI2A clock = PLL2\n  *             @arg RCC_SAI2ACLKSOURCE_PLL3: SAI2A clock = PLL3\n  *             @arg RCC_SAI2ACLKSOURCE_CLKP: SAI2A clock  = CLKP\n  *             @arg RCC_SAI2ACLKSOURCE_PIN: SAI2A clock = External Clock\n  *             @arg RCC_SAI2ACLKSOURCE_SPDIF: SAI2A clock = SPDIF Clock\n  * @retval None\n  */\n#define __HAL_RCC_SAI2A_CONFIG(__RCC_SAI2ACLKSource__ )\\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2ASEL, (__RCC_SAI2ACLKSource__))\n\n/** @brief  Macro to get the SAI2A clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI2CLKSOURCE_PLL: SAI2A clock = PLL\n  *             @arg RCC_SAI2CLKSOURCE_PLL2: SAI2A clock = PLL2\n  *             @arg RCC_SAI2CLKSOURCE_PLL3: SAI2A clock = PLL3\n  *             @arg RCC_SAI2CLKSOURCE_CLKP: SAI2A clock  = CLKP\n  *             @arg RCC_SAI2CLKSOURCE_PIN: SAI2A clock = External Clock\n  *             @arg RCC_SAI2ACLKSOURCE_SPDIF: SAI2A clock = SPDIF Clock\n  */\n#define __HAL_RCC_GET_SAI2A_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2ASEL)))\n#endif /* defined(RCC_CDCCIP1R_SAI2ASEL) */\n\n#if defined(RCC_CDCCIP1R_SAI2BSEL)\n/**\n  * @brief  Macro to Configure the SAI2B clock source.\n  * @param  __RCC_SAI2BCLKSource__ defines the SAI2B clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI2BCLKSOURCE_PLL: SAI2B clock = PLL\n  *             @arg RCC_SAI2BCLKSOURCE_PLL2: SAI2B clock = PLL2\n  *             @arg RCC_SAI2BCLKSOURCE_PLL3: SAI2B clock = PLL3\n  *             @arg RCC_SAI2BCLKSOURCE_CLKP: SAI2B clock  = CLKP\n  *             @arg RCC_SAI2BCLKSOURCE_PIN: SAI2B clock = External Clock\n  *             @arg RCC_SAI2BCLKSOURCE_SPDIF: SAI2B clock = SPDIF Clock\n  * @retval None\n  */\n#define __HAL_RCC_SAI2B_CONFIG(__RCC_SAI2BCLKSource__ )\\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2BSEL, (__RCC_SAI2BCLKSource__))\n\n/** @brief  Macro to get the SAI2B clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI2BCLKSOURCE_PLL: SAI2B clock = PLL\n  *             @arg RCC_SAI2BCLKSOURCE_PLL2: SAI2B clock = PLL2\n  *             @arg RCC_SAI2BCLKSOURCE_PLL3: SAI2B clock = PLL3\n  *             @arg RCC_SAI2BCLKSOURCE_CLKP: SAI2B clock  = CLKP\n  *             @arg RCC_SAI2BCLKSOURCE_PIN: SAI2B clock = External Clock\n  *             @arg RCC_SAI2BCLKSOURCE_SPDIF: SAI2B clock = SPDIF Clock\n  */\n#define __HAL_RCC_GET_SAI2B_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2BSEL)))\n#endif /* defined(RCC_CDCCIP1R_SAI2BSEL) */\n\n\n#if defined(SAI4_Block_A)\n/**\n  * @brief  Macro to Configure the SAI4A clock source.\n  * @param  __RCC_SAI4ACLKSource__ defines the SAI4A clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI4ACLKSOURCE_PLL: SAI4A clock = PLL\n  *             @arg RCC_SAI4ACLKSOURCE_PLL2: SAI4A clock = PLL2\n  *             @arg RCC_SAI4ACLKSOURCE_PLL3: SAI4A clock = PLL3\n  *             @arg RCC_SAI4ACLKSOURCE_CLKP: SAI4A clock  = CLKP\n  *             @arg RCC_SAI4ACLKSOURCE_PIN: SAI4A clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SAI4A_CONFIG(__RCC_SAI4ACLKSource__ )\\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_SAI4ASEL, (__RCC_SAI4ACLKSource__))\n\n/** @brief  Macro to get the SAI4A clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI4ACLKSOURCE_PLL: SAI4B clock = PLL\n  *             @arg RCC_SAI4ACLKSOURCE_PLL2: SAI4B clock = PLL2\n  *             @arg RCC_SAI4ACLKSOURCE_PLL3: SAI4B clock = PLL3\n  *             @arg RCC_SAI4ACLKSOURCE_CLKP: SAI4B clock  = CLKP\n  *             @arg RCC_SAI4ACLKSOURCE_PIN: SAI4B clock = External Clock\n  */\n#define __HAL_RCC_GET_SAI4A_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_SAI4ASEL)))\n#endif /* SAI4_Block_A */\n\n#if defined(SAI4_Block_B)\n/**\n  * @brief  Macro to Configure the SAI4B clock source.\n  * @param  __RCC_SAI4BCLKSource__ defines the SAI4B clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SAI4BCLKSOURCE_PLL: SAI4B clock = PLL\n  *             @arg RCC_SAI4BCLKSOURCE_PLL2: SAI4B clock = PLL2\n  *             @arg RCC_SAI4BCLKSOURCE_PLL3: SAI4B clock = PLL3\n  *             @arg RCC_SAI4BCLKSOURCE_CLKP: SAI4B clock  = CLKP\n  *             @arg RCC_SAI4BCLKSOURCE_PIN: SAI4B clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SAI4B_CONFIG(__RCC_SAI4BCLKSource__ )\\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_SAI4BSEL, (__RCC_SAI4BCLKSource__))\n\n/** @brief  Macro to get the SAI4B clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SAI4BCLKSOURCE_PLL: SAI4B clock = PLL\n  *             @arg RCC_SAI4BCLKSOURCE_PLL2: SAI4B clock = PLL2\n  *             @arg RCC_SAI4BCLKSOURCE_PLL3: SAI4B clock = PLL3\n  *             @arg RCC_SAI4BCLKSOURCE_CLKP: SAI4B clock  = CLKP\n  *             @arg RCC_SAI4BCLKSOURCE_PIN: SAI4B clock = External Clock\n  */\n#define __HAL_RCC_GET_SAI4B_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_SAI4BSEL)))\n#endif /* SAI4_Block_B */\n\n/** @brief macro to configure the I2C1/2/3/5* clock (I2C123CLK).\n  *\n  * @param  __I2C1235CLKSource__ specifies the I2C1/2/3/5* clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_I2C123CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1/2/3/5* clock\n  *            @arg RCC_I2C123CLKSOURCE_PLL3: PLL3 selected as I2C1/2/3/5* clock\n  *            @arg RCC_I2C123CLKSOURCE_HSI: HSI selected as I2C1/2/3/5* clock\n  *            @arg RCC_I2C123CLKSOURCE_CSI: CSI selected as I2C1/2/3/5* clock\n  *\n  * (**): Available on stm32h72xxx and stm32h73xxx family lines.\n  */\n#if defined(RCC_D2CCIP2R_I2C123SEL)\n#define __HAL_RCC_I2C123_CONFIG(__I2C1235CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C123SEL, (uint32_t)(__I2C1235CLKSource__))\n#elif defined(RCC_CDCCIP2R_I2C123SEL)\n#define __HAL_RCC_I2C123_CONFIG(__I2C1235CLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_I2C123SEL, (uint32_t)(__I2C1235CLKSource__))\n#else /* RCC_D2CCIP2R_I2C1235SEL */\n#define __HAL_RCC_I2C1235_CONFIG(__I2C1235CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C1235SEL, (uint32_t)(__I2C1235CLKSource__))\n/* alias */\n#define __HAL_RCC_I2C123_CONFIG  __HAL_RCC_I2C1235_CONFIG\n#endif /* RCC_D2CCIP2R_I2C123SEL */\n\n/** @brief  macro to get the I2C1/2/3/5* clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_I2C123CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1/2/3/5* clock\n  *            @arg RCC_I2C123CLKSOURCE_PLL3: PLL3 selected as I2C1/2/3/5* clock\n  *            @arg RCC_I2C123CLKSOURCE_HSI: HSI selected as I2C1/2/3/5* clock\n  *            @arg RCC_I2C123CLKSOURCE_CSI: CSI selected as I2C1/2/3/5* clock\n  *\n  * (**): Available on stm32h72xxx and stm32h73xxx family lines.\n  */\n#if defined(RCC_D2CCIP2R_I2C123SEL)\n#define __HAL_RCC_GET_I2C123_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C123SEL)))\n#elif defined(RCC_CDCCIP2R_I2C123SEL)\n#define __HAL_RCC_GET_I2C123_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_I2C123SEL)))\n#else /* RCC_D2CCIP2R_I2C1235SEL */\n#define __HAL_RCC_GET_I2C1235_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C1235SEL)))\n/* alias */\n#define __HAL_RCC_GET_I2C123_SOURCE  __HAL_RCC_GET_I2C1235_SOURCE\n#endif /* RCC_D2CCIP2R_I2C123SEL */\n\n/** @brief macro to configure the I2C1 clock (I2C1CLK).\n  *\n  * @param  __I2C1CLKSource__ specifies the I2C1 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_I2C1CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1 clock\n  *            @arg RCC_I2C1CLKSOURCE_PLL3: PLL3 selected as I2C1 clock\n  *            @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock\n  *            @arg RCC_I2C1CLKSOURCE_CSI: CSI selected as I2C1 clock\n  */\n#if defined(I2C5)\n#define __HAL_RCC_I2C1_CONFIG  __HAL_RCC_I2C1235_CONFIG\n#else\n#define __HAL_RCC_I2C1_CONFIG  __HAL_RCC_I2C123_CONFIG\n#endif /*I2C5*/\n\n/** @brief  macro to get the I2C1 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_I2C1CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1 clock\n  *            @arg RCC_I2C1CLKSOURCE_PLL3: PLL3 selected as I2C1 clock\n  *            @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock\n  *            @arg RCC_I2C1CLKSOURCE_CSI: CSI selected as I2C1 clock\n  */\n#if defined(I2C5)\n#define __HAL_RCC_GET_I2C1_SOURCE __HAL_RCC_GET_I2C1235_SOURCE\n#else\n#define __HAL_RCC_GET_I2C1_SOURCE __HAL_RCC_GET_I2C123_SOURCE\n#endif /*I2C5*/\n\n/** @brief macro to configure the I2C2 clock (I2C2CLK).\n  *\n  * @param  __I2C2CLKSource__ specifies the I2C2 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_I2C2CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C2 clock\n  *            @arg RCC_I2C2CLKSOURCE_PLL3: PLL3 selected as I2C2 clock\n  *            @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock\n  *            @arg RCC_I2C2CLKSOURCE_CSI: CSI selected as I2C2 clock\n  */\n#if defined(I2C5)\n#define __HAL_RCC_I2C2_CONFIG __HAL_RCC_I2C1235_CONFIG\n#else\n#define __HAL_RCC_I2C2_CONFIG __HAL_RCC_I2C123_CONFIG\n#endif /*I2C5*/\n\n/** @brief  macro to get the I2C2 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_I2C2CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C2 clock\n  *            @arg RCC_I2C2CLKSOURCE_PLL3: PLL3 selected as I2C2 clock\n  *            @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock\n  *            @arg RCC_I2C2CLKSOURCE_CSI: CSI selected as I2C2 clock\n  */\n#if defined(I2C5)\n#define __HAL_RCC_GET_I2C2_SOURCE __HAL_RCC_GET_I2C1235_SOURCE\n#else\n#define __HAL_RCC_GET_I2C2_SOURCE __HAL_RCC_GET_I2C123_SOURCE\n#endif /*I2C5*/\n\n/** @brief macro to configure the I2C3 clock (I2C3CLK).\n  *\n  * @param  __I2C3CLKSource__ specifies the I2C3 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_I2C3CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C3 clock\n  *            @arg RCC_I2C3CLKSOURCE_PLL3: PLL3 selected as I2C3 clock\n  *            @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock\n  *            @arg RCC_I2C3CLKSOURCE_CSI: CSI selected as I2C3 clock\n  */\n#if defined(I2C5)\n#define __HAL_RCC_I2C3_CONFIG __HAL_RCC_I2C1235_CONFIG\n#else\n#define __HAL_RCC_I2C3_CONFIG __HAL_RCC_I2C123_CONFIG\n#endif /*I2C5*/\n\n/** @brief  macro to get the I2C3 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_I2C3CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C3 clock\n  *            @arg RCC_I2C3CLKSOURCE_PLL3: PLL3 selected as I2C3 clock\n  *            @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock\n  *            @arg RCC_I2C3CLKSOURCE_CSI: CSI selected as I2C3 clock\n  */\n#if defined(I2C5)\n#define __HAL_RCC_GET_I2C3_SOURCE __HAL_RCC_GET_I2C1235_SOURCE\n#else\n#define __HAL_RCC_GET_I2C3_SOURCE __HAL_RCC_GET_I2C123_SOURCE\n#endif /*I2C5*/\n\n/** @brief macro to configure the I2C4 clock (I2C4CLK).\n  *\n  * @param  __I2C4CLKSource__ specifies the I2C4 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_I2C4CLKSOURCE_D3PCLK1: D3PCLK1 selected as I2C4 clock\n  *            @arg RCC_I2C4CLKSOURCE_PLL3: PLL3 selected as I2C4 clock\n  *            @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock\n  *            @arg RCC_I2C4CLKSOURCE_CSI: CSI selected as I2C4 clock\n  */\n#if defined(RCC_D3CCIPR_I2C4SEL)\n#define __HAL_RCC_I2C4_CONFIG(__I2C4CLKSource__) \\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_I2C4SEL, (uint32_t)(__I2C4CLKSource__))\n#else\n#define __HAL_RCC_I2C4_CONFIG(__I2C4CLKSource__) \\\n                  MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_I2C4SEL, (uint32_t)(__I2C4CLKSource__))\n#endif /* RCC_D3CCIPR_I2C4SEL */\n\n/** @brief  macro to get the I2C4 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_I2C4CLKSOURCE_D3PCLK1: D3PCLK1 selected as I2C4 clock\n  *            @arg RCC_I2C4CLKSOURCE_PLL3: PLL3 selected as I2C4 clock\n  *            @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock\n  *            @arg RCC_I2C4CLKSOURCE_CSI: CSI selected as I2C4 clock\n  */\n#if defined(RCC_D3CCIPR_I2C4SEL)\n#define __HAL_RCC_GET_I2C4_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_I2C4SEL)))\n#else\n#define __HAL_RCC_GET_I2C4_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_I2C4SEL)))\n#endif /* RCC_D3CCIPR_I2C4SEL */\n\n#if defined(I2C5)\n/** @brief macro to configure the I2C5 clock (I2C5CLK).\n  *\n  * @param  __I2C5CLKSource__ specifies the I2C5 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_I2C5CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C5 clock\n  *            @arg RCC_I2C5CLKSOURCE_PLL3: PLL3 selected as I2C5 clock\n  *            @arg RCC_I2C5CLKSOURCE_HSI: HSI selected as I2C5 clock\n  *            @arg RCC_I2C5CLKSOURCE_CSI: CSI selected as I2C5 clock\n  */\n#define __HAL_RCC_I2C5_CONFIG  __HAL_RCC_I2C1235_CONFIG\n#endif /* I2C5 */\n\n#if defined(I2C5)\n/** @brief  macro to get the I2C5 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_I2C5CLKSOURCE_D2PCLK1: D2PCLK5 selected as I2C5 clock\n  *            @arg RCC_I2C5CLKSOURCE_PLL3: PLL3 selected as I2C5 clock\n  *            @arg RCC_I2C5CLKSOURCE_HSI: HSI selected as I2C5 clock\n  *            @arg RCC_I2C5CLKSOURCE_CSI: CSI selected as I2C5 clock\n  */\n#define __HAL_RCC_GET_I2C5_SOURCE __HAL_RCC_GET_I2C1235_SOURCE\n#endif /* I2C5 */\n\n/** @brief macro to configure the USART1/6/9* /10* clock (USART16CLK).\n  *\n  * @param  __USART16910CLKSource__ specifies the USART1/6/9* /10* clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_USART16CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_HSI: HSI selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_CSI: CSI Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_LSE: LSE selected as USART1/6/9* /10* clock\n  *\n  * (*) : Available on some STM32H7 lines only.\n  */\n#if defined(RCC_D2CCIP2R_USART16SEL)\n#define __HAL_RCC_USART16_CONFIG(__USART16910CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16SEL, (uint32_t)(__USART16910CLKSource__))\n#elif defined(RCC_CDCCIP2R_USART16910SEL)\n#define __HAL_RCC_USART16910_CONFIG(__USART16910CLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_USART16910SEL, (uint32_t)(__USART16910CLKSource__))\n/* alias */\n#define __HAL_RCC_USART16_CONFIG  __HAL_RCC_USART16910_CONFIG\n#else  /* RCC_D2CCIP2R_USART16910SEL */\n#define __HAL_RCC_USART16910_CONFIG(__USART16910CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16910SEL, (uint32_t)(__USART16910CLKSource__))\n/* alias */\n#define __HAL_RCC_USART16_CONFIG  __HAL_RCC_USART16910_CONFIG\n#endif /* RCC_D2CCIP2R_USART16SEL */\n\n/** @brief  macro to get the USART1/6/9* /10* clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USART16CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_HSI: HSI selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_CSI: CSI Clock selected as USART1/6/9* /10* clock\n  *            @arg RCC_USART16CLKSOURCE_LSE: LSE selected as USART1/6/9* /10* clock\n  *\n  * (*) : Available on some STM32H7 lines only.\n  */\n#if defined(RCC_D2CCIP2R_USART16SEL)\n#define __HAL_RCC_GET_USART16_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16SEL)))\n#elif defined(RCC_CDCCIP2R_USART16910SEL)\n#define __HAL_RCC_GET_USART16910_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_USART16910SEL)))\n/* alias*/\n#define  __HAL_RCC_GET_USART16_SOURCE  __HAL_RCC_GET_USART16910_SOURCE\n#else  /* RCC_D2CCIP2R_USART16910SEL */\n#define __HAL_RCC_GET_USART16910_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16910SEL)))\n/* alias */\n#define __HAL_RCC_GET_USART16_SOURCE  __HAL_RCC_GET_USART16910_SOURCE\n#endif /* RCC_D2CCIP2R_USART16SEL */\n\n/** @brief macro to configure the USART234578 clock (USART234578CLK).\n  *\n  * @param  __USART234578CLKSource__ specifies the USART2/3/4/5/7/8 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_USART234578CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_HSI: HSI selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_CSI: CSI Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_LSE: LSE selected as USART2/3/4/5/7/8 clock\n  */\n#if defined(RCC_D2CCIP2R_USART28SEL)\n#define __HAL_RCC_USART234578_CONFIG(__USART234578CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USART28SEL, (uint32_t)(__USART234578CLKSource__))\n#else\n#define __HAL_RCC_USART234578_CONFIG(__USART234578CLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_USART234578SEL, (uint32_t)(__USART234578CLKSource__))\n#endif /* RCC_D2CCIP2R_USART28SEL */\n\n/** @brief  macro to get the USART2/3/4/5/7/8 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USART234578CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_HSI: HSI selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_CSI: CSI Clock selected as USART2/3/4/5/7/8 clock\n  *            @arg RCC_USART234578CLKSOURCE_LSE: LSE selected as USART2/3/4/5/7/8 clock\n  */\n#if defined(RCC_D2CCIP2R_USART28SEL)\n#define __HAL_RCC_GET_USART234578_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USART28SEL)))\n#else\n#define __HAL_RCC_GET_USART234578_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_USART234578SEL)))\n#endif /* RCC_D2CCIP2R_USART28SEL */\n\n/** @brief macro to configure the USART1 clock (USART1CLK).\n  *\n  * @param  __USART1CLKSource__ specifies the USART1 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_USART1CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_CSI: CSI Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock\n  */\n#define __HAL_RCC_USART1_CONFIG  __HAL_RCC_USART16_CONFIG\n\n/** @brief  macro to get the USART1 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USART1CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_CSI: CSI Clock selected as USART1 clock\n  *            @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock\n  */\n#define __HAL_RCC_GET_USART1_SOURCE  __HAL_RCC_GET_USART16_SOURCE\n\n/** @brief macro to configure the USART2 clock (USART2CLK).\n  *\n  * @param  __USART2CLKSource__ specifies the USART2 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_USART2CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_CSI: CSI Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock\n  */\n#define __HAL_RCC_USART2_CONFIG  __HAL_RCC_USART234578_CONFIG\n\n/** @brief  macro to get the USART2 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USART2CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_CSI: CSI Clock selected as USART2 clock\n  *            @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock\n  */\n#define __HAL_RCC_GET_USART2_SOURCE __HAL_RCC_GET_USART234578_SOURCE\n\n/** @brief macro to configure the USART3 clock (USART3CLK).\n  *\n  * @param  __USART3CLKSource__ specifies the USART3 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_USART3CLKSOURCE_D2PCLK1: APB1 Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_PLL2: PLL2_Q Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_PLL3: PLL3_Q Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_CSI: CSI Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock\n  */\n#define __HAL_RCC_USART3_CONFIG  __HAL_RCC_USART234578_CONFIG\n\n/** @brief  macro to get the USART3 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USART2CLKSOURCE_D2PCLK1: APB1 Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_PLL2: PLL2_Q Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_PLL3: PLL3_Q Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_CSI: CSI Clock selected as USART3 clock\n  *            @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock\n  */\n#define __HAL_RCC_GET_USART3_SOURCE  __HAL_RCC_GET_USART234578_SOURCE\n\n/** @brief macro to configure the UART4 clock (UART4CLK).\n  *\n  * @param  __UART4CLKSource__ specifies the UART4 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_UART4CLKSOURCE_D2PCLK1: APB1 Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_PLL2: PLL2_Q Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_PLL3: PLL3_Q Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_CSI: CSI Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock\n  */\n#define __HAL_RCC_UART4_CONFIG  __HAL_RCC_USART234578_CONFIG\n\n/** @brief  macro to get the UART4 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_UART4CLKSOURCE_D2PCLK1: APB1 Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_PLL2: PLL2_Q Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_PLL3: PLL3_Q Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_CSI: CSI Clock selected as UART4 clock\n  *            @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock\n  */\n#define __HAL_RCC_GET_UART4_SOURCE  __HAL_RCC_GET_USART234578_SOURCE\n\n/** @brief macro to configure the UART5 clock (UART5CLK).\n  *\n  * @param  __UART5CLKSource__ specifies the UART5 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_UART5CLKSOURCE_D2PCLK1: APB1 Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_PLL2: PLL2_Q Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_PLL3: PLL3_Q Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_CSI: CSI Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock\n  */\n#define __HAL_RCC_UART5_CONFIG  __HAL_RCC_USART234578_CONFIG\n\n/** @brief  macro to get the UART5 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_UART5CLKSOURCE_D2PCLK1: APB1 Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_PLL2: PLL2_Q Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_PLL3: PLL3_Q Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_CSI: CSI Clock selected as UART5 clock\n  *            @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock\n  */\n#define __HAL_RCC_GET_UART5_SOURCE  __HAL_RCC_GET_USART234578_SOURCE\n\n/** @brief macro to configure the USART6 clock (USART6CLK).\n  *\n  * @param  __USART6CLKSource__ specifies the USART6 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_USART6CLKSOURCE_D2PCLK2: APB2 Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_PLL2: PLL2_Q Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_PLL3: PLL3_Q Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_CSI: CSI Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock\n  */\n#define __HAL_RCC_USART6_CONFIG  __HAL_RCC_USART16_CONFIG\n\n/** @brief  macro to get the USART6 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USART6CLKSOURCE_D2PCLK2: APB2 Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_PLL2: PLL2_Q Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_PLL3: PLL3_Q Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_CSI: CSI Clock selected as USART6 clock\n  *            @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock\n  */\n#define __HAL_RCC_GET_USART6_SOURCE  __HAL_RCC_GET_USART16_SOURCE\n\n/** @brief macro to configure the UART5 clock (UART7CLK).\n  *\n  * @param  __UART7CLKSource__ specifies the UART7 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_UART7CLKSOURCE_D2PCLK1: APB1 Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_PLL2: PLL2_Q Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_PLL3: PLL3_Q Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_CSI: CSI Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock\n  */\n#define __HAL_RCC_UART7_CONFIG  __HAL_RCC_USART234578_CONFIG\n\n/** @brief  macro to get the UART7 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_UART7CLKSOURCE_D2PCLK1: APB1 Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_PLL2: PLL2_Q Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_PLL3: PLL3_Q Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_CSI: CSI Clock selected as UART7 clock\n  *            @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock\n  */\n#define __HAL_RCC_GET_UART7_SOURCE  __HAL_RCC_GET_USART234578_SOURCE\n\n/** @brief macro to configure the UART8 clock (UART8CLK).\n  *\n  * @param  __UART8CLKSource__ specifies the UART8 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_UART8CLKSOURCE_D2PCLK1: APB1 Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_PLL2: PLL2_Q Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_PLL3: PLL3_Q Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_CSI: CSI Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock\n  */\n#define __HAL_RCC_UART8_CONFIG  __HAL_RCC_USART234578_CONFIG\n\n/** @brief  macro to get the UART8 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_UART8CLKSOURCE_D2PCLK1: APB1 Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_PLL2: PLL2_Q Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_PLL3: PLL3_Q Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_CSI: CSI Clock selected as UART8 clock\n  *            @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock\n  */\n#define __HAL_RCC_GET_UART8_SOURCE  __HAL_RCC_GET_USART234578_SOURCE\n\n#if defined(UART9)\n/** @brief macro to configure the UART9 clock (UART9CLK).\n  *\n  * @param  __UART8CLKSource__ specifies the UART8 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_UART9CLKSOURCE_D2PCLK1: APB1 Clock selected as UART9 clock\n  *            @arg RCC_UART9CLKSOURCE_PLL2: PLL2_Q Clock selected as UART9 clock\n  *            @arg RCC_UART9CLKSOURCE_PLL3: PLL3_Q Clock selected as UART9 clock\n  *            @arg RCC_UART9CLKSOURCE_HSI: HSI selected as UART9 clock\n  *            @arg RCC_UART9CLKSOURCE_CSI: CSI Clock selected as UART9 clock\n  *            @arg RCC_UART9CLKSOURCE_LSE: LSE selected as UART9 clock\n  */\n#define __HAL_RCC_UART9_CONFIG  __HAL_RCC_USART16_CONFIG\n\n/** @brief  macro to get the UART9 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_UART9CLKSOURCE_D2PCLK1: APB1 Clock selected as UART99 clock\n  *            @arg RCC_UART9CLKSOURCE_PLL2: PLL2_Q Clock selected as UART99 clock\n  *            @arg RCC_UART9CLKSOURCE_PLL3: PLL3_Q Clock selected as UART99 clock\n  *            @arg RCC_UART9CLKSOURCE_HSI: HSI selected as UART9 clock\n  *            @arg RCC_UART9CLKSOURCE_CSI: CSI Clock selected as UART9 clock\n  *            @arg RCC_UART9CLKSOURCE_LSE: LSE selected as UART9 clock\n  */\n#define __HAL_RCC_GET_UART9_SOURCE  __HAL_RCC_GET_USART16_SOURCE\n#endif /* UART9 */\n\n#if defined(USART10)\n/** @brief macro to configure the USART10 clock (USART10CLK).\n  *\n  * @param  __UART8CLKSource__ specifies the UART8 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_USART10CLKSOURCE_D2PCLK1: APB1 Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_PLL2: PLL2_Q Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_PLL3: PLL3_Q Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_HSI: HSI selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_CSI: CSI Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_LSE: LSE selected as USART10 clock\n  */\n#define __HAL_RCC_USART10_CONFIG  __HAL_RCC_USART16_CONFIG\n\n/** @brief  macro to get the USART10 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USART10CLKSOURCE_D2PCLK1: APB1 Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_PLL2: PLL2_Q Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_PLL3: PLL3_Q Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_HSI: HSI selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_CSI: CSI Clock selected as USART10 clock\n  *            @arg RCC_USART10CLKSOURCE_LSE: LSE selected as USART10 clock\n  */\n#define __HAL_RCC_GET_USART10_SOURCE  __HAL_RCC_GET_USART16_SOURCE\n#endif /* USART10 */\n\n/** @brief macro to configure the LPUART1 clock (LPUART1CLK).\n  *\n  * @param  __LPUART1CLKSource__ specifies the LPUART1 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_LPUART1CLKSOURCE_D3PCLK1: APB4 Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_PLL2: PLL2_Q Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_PLL3: PLL3_Q Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_HSI: HSI selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_CSI: CSI Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_LSE: LSE selected as LPUART1 clock\n  */\n#if defined (RCC_D3CCIPR_LPUART1SEL)\n#define __HAL_RCC_LPUART1_CONFIG(__LPUART1CLKSource__) \\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL, (uint32_t)(__LPUART1CLKSource__))\n#else\n#define __HAL_RCC_LPUART1_CONFIG(__LPUART1CLKSource__) \\\n                  MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_LPUART1SEL, (uint32_t)(__LPUART1CLKSource__))\n#endif /* RCC_D3CCIPR_LPUART1SEL */\n\n/** @brief  macro to get the LPUART1 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_LPUART1CLKSOURCE_D3PCLK1: APB4 Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_PLL2: PLL2_Q Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_PLL3: PLL3_Q Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_HSI: HSI selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_CSI: CSI Clock selected as LPUART1 clock\n  *            @arg RCC_LPUART1CLKSOURCE_LSE: LSE selected as LPUART1 clock\n  */\n#if defined (RCC_D3CCIPR_LPUART1SEL)\n#define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL)))\n#else\n#define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_LPUART1SEL)))\n#endif /* RCC_D3CCIPR_LPUART1SEL */\n\n/** @brief  macro to configure the LPTIM1 clock source.\n  *\n  * @param  __LPTIM1CLKSource__ specifies the LPTIM1 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_LPTIM1CLKSOURCE_D2PCLK1: APB1 Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_LSI: LSI Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_CLKP: CLKP selected as LPTIM1 clock\n  */\n#if defined(RCC_D2CCIP2R_LPTIM1SEL)\n#define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_LPTIM1SEL, (uint32_t)(__LPTIM1CLKSource__))\n#else\n#define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1CLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_LPTIM1SEL, (uint32_t)(__LPTIM1CLKSource__))\n#endif /* RCC_D2CCIP2R_LPTIM1SEL */\n\n/** @brief  macro to get the LPTIM1 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_LPTIM1CLKSOURCE_D2PCLK1: APB1 Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_LSI: LSI Clock selected as LPTIM1 clock\n  *            @arg RCC_LPTIM1CLKSOURCE_CLKP: CLKP selected as LPTIM1 clock\n  */\n#if defined(RCC_D2CCIP2R_LPTIM1SEL)\n#define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_LPTIM1SEL)))\n#else\n#define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_LPTIM1SEL)))\n#endif /* RCC_D2CCIP2R_LPTIM1SEL */\n\n/** @brief  macro to configure the LPTIM2 clock source.\n  *\n  * @param  __LPTIM2CLKSource__ specifies the LPTIM2 clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_LPTIM2CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_LSE: LSE selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_LSI: LSI Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_CLKP: CLKP selected as LPTIM2 clock\n  */\n#if defined(RCC_D3CCIPR_LPTIM2SEL)\n#define __HAL_RCC_LPTIM2_CONFIG(__LPTIM2CLKSource__) \\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM2SEL, (uint32_t)(__LPTIM2CLKSource__))\n#else\n#define __HAL_RCC_LPTIM2_CONFIG(__LPTIM2CLKSource__) \\\n                  MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM2SEL, (uint32_t)(__LPTIM2CLKSource__))\n#endif /* RCC_D3CCIPR_LPTIM2SEL */\n\n/** @brief  macro to get the LPTIM2 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_LPTIM2CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_LSE: LSE selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_LSI: LSI Clock selected as LPTIM2 clock\n  *            @arg RCC_LPTIM2CLKSOURCE_CLKP: CLKP selected as LPTIM2 clock\n  */\n#if defined(RCC_D3CCIPR_LPTIM2SEL)\n#define __HAL_RCC_GET_LPTIM2_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM2SEL)))\n#else\n#define __HAL_RCC_GET_LPTIM2_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM2SEL)))\n#endif /* RCC_D3CCIPR_LPTIM2SEL */\n\n/** @brief  macro to configure the LPTIM3/4/5 clock source.\n  *\n  * @param  __LPTIM345CLKSource__ specifies the LPTIM3/4/5 clock source.\n  *            @arg RCC_LPTIM345CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_LSE: LSE selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_LSI: LSI Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_CLKP: CLKP selected as LPTIM3/4/5 clock\n  */\n#if defined(RCC_D3CCIPR_LPTIM345SEL)\n#define __HAL_RCC_LPTIM345_CONFIG(__LPTIM345CLKSource__) \\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM345SEL, (uint32_t)(__LPTIM345CLKSource__))\n#else\n#define __HAL_RCC_LPTIM345_CONFIG(__LPTIM345CLKSource__) \\\n                  MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM3SEL, (uint32_t)(__LPTIM345CLKSource__))\n#endif /* RCC_D3CCIPR_LPTIM345SEL */\n\n/** @brief  macro to get the LPTIM3/4/5 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_LPTIM345CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_LSE: LSE selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_LSI: LSI Clock selected as LPTIM3/4/5 clock\n  *            @arg RCC_LPTIM345CLKSOURCE_CLKP: CLKP selected as LPTIM3/4/5 clock\n  */\n#if defined(RCC_D3CCIPR_LPTIM345SEL)\n#define __HAL_RCC_GET_LPTIM345_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM345SEL)))\n#else\n#define __HAL_RCC_GET_LPTIM345_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM3SEL)))\n#endif /* RCC_D3CCIPR_LPTIM345SEL */\n\n/** @brief  macro to configure the LPTIM3 clock source.\n  *\n  * @param  __LPTIM3CLKSource__ specifies the LPTIM3 clock source.\n  *            @arg RCC_LPTIM3CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_LSE: LSE selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_LSI: LSI Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_CLKP: CLKP selected as LPTIM3 clock\n  */\n#define __HAL_RCC_LPTIM3_CONFIG  __HAL_RCC_LPTIM345_CONFIG\n\n/** @brief  macro to get the LPTIM3 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_LPTIM3CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_LSE: LSE selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_LSI: LSI Clock selected as LPTIM3 clock\n  *            @arg RCC_LPTIM3CLKSOURCE_CLKP: CLKP selected as LPTIM3 clock\n  */\n#define __HAL_RCC_GET_LPTIM3_SOURCE  __HAL_RCC_GET_LPTIM345_SOURCE\n\n#if defined(LPTIM4)\n/** @brief  macro to configure the LPTIM4 clock source.\n  *\n  * @param  __LPTIM4CLKSource__ specifies the LPTIM4 clock source.\n  *            @arg RCC_LPTIM4CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_LSE: LSE selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_LSI: LSI Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_CLKP: CLKP selected as LPTIM4 clock\n  */\n#define __HAL_RCC_LPTIM4_CONFIG  __HAL_RCC_LPTIM345_CONFIG\n\n\n/** @brief  macro to get the LPTIM4 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_LPTIM4CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_LSE: LSE selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_LSI: LSI Clock selected as LPTIM4 clock\n  *            @arg RCC_LPTIM4CLKSOURCE_CLKP: CLKP selected as LPTIM4 clock\n  */\n#define __HAL_RCC_GET_LPTIM4_SOURCE  __HAL_RCC_GET_LPTIM345_SOURCE\n#endif /* LPTIM4 */\n\n#if defined(LPTIM5)\n/** @brief  macro to configure the LPTIM5 clock source.\n  *\n  * @param  __LPTIM5CLKSource__ specifies the LPTIM5 clock source.\n  *            @arg RCC_LPTIM5CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_LSE: LSE selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_LSI: LSI Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_CLKP: CLKP selected as LPTIM5 clock\n  */\n#define __HAL_RCC_LPTIM5_CONFIG  __HAL_RCC_LPTIM345_CONFIG\n\n\n/** @brief  macro to get the LPTIM5 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_LPTIM5CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_LSE: LSE selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_LSI: LSI Clock selected as LPTIM5 clock\n  *            @arg RCC_LPTIM5CLKSOURCE_CLKP: CLKP selected as LPTIM5 clock\n  */\n#define __HAL_RCC_GET_LPTIM5_SOURCE  __HAL_RCC_GET_LPTIM345_SOURCE\n#endif /* LPTIM5 */\n\n#if defined(QUADSPI)\n/** @brief  macro to configure the QSPI clock source.\n  *\n  * @param  __QSPICLKSource__ specifies the QSPI clock source.\n  *            @arg RCC_RCC_QSPICLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as QSPI clock\n  *            @arg RCC_RCC_QSPICLKSOURCE_PLL   : PLL1_Q Clock selected as QSPI clock\n  *            @arg RCC_RCC_QSPICLKSOURCE_PLL2  : PLL2_R Clock selected as QSPI clock\n  *            @arg RCC_RCC_QSPICLKSOURCE_CLKP    CLKP selected as QSPI clock\n  */\n#define __HAL_RCC_QSPI_CONFIG(__QSPICLKSource__) \\\n                  MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL, (uint32_t)(__QSPICLKSource__))\n\n\n/** @brief  macro to get the QSPI clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_RCC_QSPICLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as QSPI clock\n  *            @arg RCC_RCC_QSPICLKSOURCE_PLL   : PLL1_Q Clock selected as QSPI clock\n  *            @arg RCC_RCC_QSPICLKSOURCE_PLL2  : PLL2_R Clock selected as QSPI clock\n  *            @arg RCC_RCC_QSPICLKSOURCE_CLKP    CLKP selected as QSPI clock\n  */\n#define __HAL_RCC_GET_QSPI_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL)))\n#endif /* QUADSPI */\n\n#if defined(OCTOSPI1) || defined(OCTOSPI2)\n/** @brief  macro to configure the OSPI clock source.\n  *\n  * @param  __OSPICLKSource__ specifies the OSPI clock source.\n  *            @arg RCC_RCC_OSPICLKSOURCE_CDHCLK: Domain1 HCLK Clock selected as OSPI clock\n  *            @arg RCC_RCC_OSPICLKSOURCE_PLL   : PLL1_Q Clock selected as OSPI clock\n  *            @arg RCC_RCC_OSPICLKSOURCE_PLL2  : PLL2_R Clock selected as OSPI clock\n  *            @arg RCC_RCC_OSPICLKSOURCE_CLKP    CLKP selected as OSPI clock\n  */\n#if defined(RCC_CDCCIPR_OCTOSPISEL)\n#define __HAL_RCC_OSPI_CONFIG(__OSPICLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_OCTOSPISEL, (uint32_t)(__OSPICLKSource__))\n#else\n#define __HAL_RCC_OSPI_CONFIG(__OSPICLKSource__) \\\n                  MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_OCTOSPISEL, (uint32_t)(__OSPICLKSource__))\n#endif /* RCC_CDCCIPR_OCTOSPISEL */\n\n/** @brief  macro to get the OSPI clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_RCC_OSPICLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as OSPI clock\n  *            @arg RCC_RCC_OSPICLKSOURCE_PLL   : PLL1_Q Clock selected as OSPI clock\n  *            @arg RCC_RCC_OSPICLKSOURCE_PLL2  : PLL2_R Clock selected as OSPI clock\n  *            @arg RCC_RCC_OSPICLKSOURCE_CLKP    CLKP selected as OSPI clock\n  */\n#if defined(RCC_CDCCIPR_OCTOSPISEL)\n#define __HAL_RCC_GET_OSPI_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_OCTOSPISEL)))\n#else\n#define __HAL_RCC_GET_OSPI_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_OCTOSPISEL)))\n#endif /* RCC_CDCCIPR_OCTOSPISEL */\n#endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */\n\n\n#if defined(DSI)\n/** @brief  macro to configure the DSI clock source.\n  *\n  * @param  __DSICLKSource__ specifies the DSI clock source.\n  *            @arg RCC_RCC_DSICLKSOURCE_PHY:DSI clock from PHY is selected as DSI byte lane clock\n  *            @arg RCC_RCC_DSICLKSOURCE_PLL2   : PLL2_Q Clock clock is selected as DSI byte lane clock\n  */\n#define __HAL_RCC_DSI_CONFIG(__DSICLKSource__) \\\n                  MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL, (uint32_t)(__DSICLKSource__))\n\n\n/** @brief  macro to get the DSI clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_RCC_DSICLKSOURCE_PHY: DSI clock from PHY is selected as DSI byte lane clock\n  *            @arg RCC_RCC_DSICLKSOURCE_PLL2: PLL2_Q Clock clock is selected as DSI byte lane clock\n  */\n#define __HAL_RCC_GET_DSI_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL)))\n#endif /*DSI*/\n\n/** @brief  macro to configure the FMC clock source.\n  *\n  * @param  __FMCCLKSource__ specifies the FMC clock source.\n  *            @arg RCC_RCC_FMCCLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as FMC clock\n  *            @arg RCC_RCC_FMCCLKSOURCE_PLL   : PLL1_Q Clock selected as FMC clock\n  *            @arg RCC_RCC_FMCCLKSOURCE_PLL2  : PLL2_R Clock selected as FMC clock\n  *            @arg RCC_RCC_FMCCLKSOURCE_CLKP    CLKP selected as FMC clock\n  */\n#if defined(RCC_D1CCIPR_FMCSEL)\n#define __HAL_RCC_FMC_CONFIG(__FMCCLKSource__) \\\n                  MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL, (uint32_t)(__FMCCLKSource__))\n#else\n#define __HAL_RCC_FMC_CONFIG(__FMCCLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_FMCSEL, (uint32_t)(__FMCCLKSource__))\n#endif /* RCC_D1CCIPR_FMCSEL */\n\n/** @brief  macro to get the FMC clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_RCC_FMCCLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as FMC clock\n  *            @arg RCC_RCC_FMCCLKSOURCE_PLL   : PLL1_Q Clock selected as FMC clock\n  *            @arg RCC_RCC_FMCCLKSOURCE_PLL2  : PLL2_R Clock selected as FMC clock\n  *            @arg RCC_RCC_FMCCLKSOURCE_CLKP    CLKP selected as FMC clock\n  */\n#if defined(RCC_D1CCIPR_FMCSEL)\n#define __HAL_RCC_GET_FMC_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL)))\n#else\n#define __HAL_RCC_GET_FMC_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_FMCSEL)))\n#endif /* RCC_D1CCIPR_FMCSEL */\n\n/** @brief  Macro to configure the USB clock (USBCLK).\n  * @param  __USBCLKSource__ specifies the USB clock source.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_USBCLKSOURCE_PLL:   PLL1Q selected as USB clock\n  *            @arg RCC_USBCLKSOURCE_PLL3:  PLL3Q Clock selected as USB clock\n  *            @arg RCC_USBCLKSOURCE_HSI48: RC48 MHZ Clock selected as USB clock\n  */\n#if defined(RCC_D2CCIP2R_USBSEL)\n#define __HAL_RCC_USB_CONFIG(__USBCLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL, (uint32_t)(__USBCLKSource__))\n#else\n#define __HAL_RCC_USB_CONFIG(__USBCLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_USBSEL, (uint32_t)(__USBCLKSource__))\n#endif /* RCC_D2CCIP2R_USBSEL */\n\n/** @brief  Macro to get the USB clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_USBCLKSOURCE_PLL:   PLL1Q selected as USB clock\n  *            @arg RCC_USBCLKSOURCE_PLL3:  PLL3Q Clock selected as USB clock\n  *            @arg RCC_USBCLKSOURCE_HSI48: RC48 MHZ Clock selected as USB clock\n  */\n#if defined(RCC_D2CCIP2R_USBSEL)\n#define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL)))\n#else\n#define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_USBSEL)))\n#endif /* RCC_D2CCIP2R_USBSEL */\n\n/** @brief  Macro to configure the ADC clock\n  * @param  __ADCCLKSource__ specifies the ADC digital interface clock source.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_ADCCLKSOURCE_PLL2: PLL2_P Clock selected as ADC clock\n  *            @arg RCC_ADCCLKSOURCE_PLL3: PLL3_R Clock selected as ADC clock\n  *            @arg RCC_ADCCLKSOURCE_CLKP: CLKP Clock selected as ADC clock\n  */\n#if defined(RCC_D3CCIPR_ADCSEL)\n#define __HAL_RCC_ADC_CONFIG(__ADCCLKSource__) \\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL, (uint32_t)(__ADCCLKSource__))\n#else\n#define __HAL_RCC_ADC_CONFIG(__ADCCLKSource__) \\\n                  MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_ADCSEL, (uint32_t)(__ADCCLKSource__))\n#endif /* RCC_D3CCIPR_ADCSEL */\n\n/** @brief  Macro to get the ADC clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_ADCCLKSOURCE_PLL2: PLL2_P Clock selected as ADC clock\n  *            @arg RCC_ADCCLKSOURCE_PLL3: PLL3_R Clock selected as ADC clock\n  *            @arg RCC_ADCCLKSOURCE_CLKP: CLKP Clock selected as ADC clock\n  */\n#if defined(RCC_D3CCIPR_ADCSEL)\n#define __HAL_RCC_GET_ADC_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL)))\n#else\n#define __HAL_RCC_GET_ADC_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_ADCSEL)))\n#endif /* RCC_D3CCIPR_ADCSEL */\n\n /** @brief  Macro to configure the SWPMI1 clock\n  * @param  __SWPMI1CLKSource__ specifies the SWPMI1  clock source.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_SWPMI1CLKSOURCE_D2PCLK1:  D2PCLK1 Clock selected as SWPMI1 clock\n  *            @arg RCC_SWPMI1CLKSOURCE_HSI: HSI Clock selected as SWPMI1 clock\n  */\n#if defined(RCC_D2CCIP1R_SWPSEL)\n#define __HAL_RCC_SWPMI1_CONFIG(__SWPMI1CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL, (uint32_t)(__SWPMI1CLKSource__))\n#else\n#define __HAL_RCC_SWPMI1_CONFIG(__SWPMI1CLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SWPSEL, (uint32_t)(__SWPMI1CLKSource__))\n#endif /* RCC_D2CCIP1R_SWPSEL */\n\n/** @brief  Macro to get the SWPMI1 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_SWPMI1CLKSOURCE_D2PCLK1:  D2PCLK1 Clock selected as SWPMI1 clock\n  *            @arg RCC_SWPMI1CLKSOURCE_HSI: HSI Clock selected as SWPMI1 clock\n  */\n#if defined(RCC_D2CCIP1R_SWPSEL)\n#define __HAL_RCC_GET_SWPMI1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL)))\n#else\n#define __HAL_RCC_GET_SWPMI1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SWPSEL)))\n#endif /* RCC_D2CCIP1R_SWPSEL */\n\n /** @brief  Macro to configure the DFSDM1 clock\n  * @param  __DFSDM1CLKSource__ specifies the DFSDM1  clock source.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_DFSDM1CLKSOURCE_D2PCLK:  D2PCLK Clock selected as DFSDM1 clock\n  *            @arg RCC_DFSDM1CLKSOURCE_SYS:     System Clock selected as DFSDM1 clock\n  */\n#if defined(RCC_D2CCIP1R_DFSDM1SEL)\n#define __HAL_RCC_DFSDM1_CONFIG(__DFSDM1CLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL, (uint32_t)(__DFSDM1CLKSource__))\n#else\n#define __HAL_RCC_DFSDM1_CONFIG(__DFSDM1CLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_DFSDM1SEL, (uint32_t)(__DFSDM1CLKSource__))\n#endif /* RCC_D2CCIP1R_DFSDM1SEL */\n\n/** @brief  Macro to get the DFSDM1 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_DFSDM1CLKSOURCE_D2PCLK:  D2PCLK Clock selected as DFSDM1 clock\n  *            @arg RCC_DFSDM1CLKSOURCE_SYS:   System Clock selected as DFSDM1 clock\n  */\n#if defined (RCC_D2CCIP1R_DFSDM1SEL)\n#define __HAL_RCC_GET_DFSDM1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL)))\n#else\n#define __HAL_RCC_GET_DFSDM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_DFSDM1SEL)))\n#endif /* RCC_D2CCIP1R_DFSDM1SEL */\n\n#if defined(DFSDM2_BASE)\n /** @brief  Macro to configure the DFSDM2 clock\n  * @param  __DFSDM2CLKSource__ specifies the DFSDM2  clock source.\n  *         This parameter can be one of the following values:\n  *            @arg RCC_DFSDM2CLKSOURCE_SRDPCLK1:  SRDPCLK1 (APB4) selected as DFSDM2 clock\n  *            @arg RCC_DFSDM2CLKSOURCE_SYS:   System Clock selected as DFSDM2 clock\n  */\n#define __HAL_RCC_DFSDM2_CONFIG(__DFSDM2CLKSource__) \\\n                  MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_DFSDM2SEL, (uint32_t)(__DFSDM2CLKSource__))\n\n/** @brief  Macro to get the DFSDM2 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_DFSDM2CLKSOURCE_SRDPCLK1:  SRDPCLK1 (APB4) Clock selected as DFSDM2 clock\n  *            @arg RCC_DFSDM2CLKSOURCE_SYS:   System Clock selected as DFSDM2 clock\n  */\n#define __HAL_RCC_GET_DFSDM2_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_DFSDM2SEL)))\n#endif /* DFSDM2 */\n\n/** @brief macro to configure the CEC clock (CECCLK).\n  *\n  * @param  __CECCLKSource__ specifies the CEC clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock\n  *            @arg RCC_CECCLKSOURCE_LSI: LSI selected as CEC clock\n  *            @arg RCC_CECCLKSOURCE_CSI: CSI Clock selected as CEC clock\n  */\n#if defined(RCC_D2CCIP2R_CECSEL)\n#define __HAL_RCC_CEC_CONFIG(__CECCLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL, (uint32_t)(__CECCLKSource__))\n#else\n#define __HAL_RCC_CEC_CONFIG(__CECCLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_CECSEL, (uint32_t)(__CECCLKSource__))\n#endif /* RCC_D2CCIP2R_CECSEL */\n\n/** @brief  macro to get the CEC clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock\n  *            @arg RCC_CECCLKSOURCE_LSI: LSI selected as CEC clock\n  *            @arg RCC_CECCLKSOURCE_CSI: CSI Clock selected as CEC clock\n  */\n#if defined(RCC_D2CCIP2R_CECSEL)\n#define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL)))\n#else\n#define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_CECSEL)))\n#endif /* RCC_D2CCIP2R_CECSEL */\n\n/** @brief  Macro to configure the CLKP : Oscillator clock for peripheral\n  * @param  __CLKPSource__ specifies Oscillator clock for peripheral\n  *         This parameter can be one of the following values:\n  *            @arg RCC_CLKPSOURCE_HSI: HSI selected Oscillator clock for peripheral\n  *            @arg RCC_CLKPSOURCE_CSI: CSI selected Oscillator clock for peripheral\n  *            @arg RCC_CLKPSOURCE_HSE: HSE selected Oscillator clock for peripheral\n  */\n#if defined(RCC_D1CCIPR_CKPERSEL)\n#define __HAL_RCC_CLKP_CONFIG(__CLKPSource__) \\\n                  MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL, (uint32_t)(__CLKPSource__))\n#else\n#define __HAL_RCC_CLKP_CONFIG(__CLKPSource__) \\\n                  MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_CKPERSEL, (uint32_t)(__CLKPSource__))\n#endif /* RCC_D1CCIPR_CKPERSEL */\n\n/** @brief  Macro to get the Oscillator clock for peripheral  source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_CLKPSOURCE_HSI: HSI selected Oscillator clock for peripheral\n  *            @arg RCC_CLKPSOURCE_CSI: CSI selected Oscillator clock for peripheral\n  *            @arg RCC_CLKPSOURCE_HSE: HSE selected Oscillator clock for peripheral\n  */\n#if defined(RCC_D1CCIPR_CKPERSEL)\n#define __HAL_RCC_GET_CLKP_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL)))\n#else\n#define __HAL_RCC_GET_CLKP_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_CKPERSEL)))\n#endif /* RCC_D1CCIPR_CKPERSEL */\n\n#if defined(FDCAN1) || defined(FDCAN2)\n/** @brief  Macro to configure the FDCAN clock\n  * @param  __FDCANCLKSource__ specifies  clock source  for FDCAN\n  *         This parameter can be one of the following values:\n  *            @arg RCC_FDCANCLKSOURCE_HSE: HSE selected as FDCAN clock\n  *            @arg RCC_FDCANCLKSOURCE_PLL: PLL selected as FDCAN clock\n  *            @arg RCC_FDCANCLKSOURCE_PLL2: PLL2 selected as FDCAN clock\n  */\n#if defined(RCC_D2CCIP1R_FDCANSEL)\n#define __HAL_RCC_FDCAN_CONFIG(__FDCANCLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL, (uint32_t)(__FDCANCLKSource__))\n#else\n#define __HAL_RCC_FDCAN_CONFIG(__FDCANCLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_FDCANSEL, (uint32_t)(__FDCANCLKSource__))\n#endif /* RCC_D2CCIP1R_FDCANSEL */\n\n/** @brief  Macro to get the FDCAN clock\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_FDCANCLKSOURCE_HSE: HSE selected as FDCAN clock\n  *            @arg RCC_FDCANCLKSOURCE_PLL: PLL selected as FDCAN clock\n  *            @arg RCC_FDCANCLKSOURCE_PLL2: PLL2 selected as FDCAN clock\n  */\n#if defined(RCC_D2CCIP1R_FDCANSEL)\n#define __HAL_RCC_GET_FDCAN_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL)))\n#else\n#define __HAL_RCC_GET_FDCAN_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_FDCANSEL)))\n#endif /* RCC_D2CCIP1R_FDCANSEL */\n\n#endif /*FDCAN1 || FDCAN2*/\n\n/**\n  * @brief  Macro to Configure the SPI1/2/3 clock source.\n  * @param  __RCC_SPI123CLKSource__ defines the SPI1/2/3 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI123CLKSOURCE_PLL: SPI1/2/3 clock = PLL\n  *             @arg RCC_SPI123CLKSOURCE_PLL2: SPI1/2/3 clock = PLL2\n  *             @arg RCC_SPI123CLKSOURCE_PLL3: SPI1/2/3 clock = PLL3\n  *             @arg RCC_SPI123CLKSOURCE_CLKP: SPI1/2/3 clock  = CLKP\n  *             @arg RCC_SPI123CLKSOURCE_PIN: SPI1/2/3 clock = External Clock\n  * @retval None\n  */\n#if defined(RCC_D2CCIP1R_SPI123SEL)\n#define __HAL_RCC_SPI123_CONFIG(__RCC_SPI123CLKSource__ )\\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI123SEL, (__RCC_SPI123CLKSource__))\n#else\n#define __HAL_RCC_SPI123_CONFIG(__RCC_SPI123CLKSource__ )\\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI123SEL, (__RCC_SPI123CLKSource__))\n#endif /* RCC_D2CCIP1R_SPI123SEL */\n\n/** @brief  Macro to get the SPI1/2/3 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI123CLKSOURCE_PLL: SPI1/2/3 clock = PLL\n  *             @arg RCC_SPI123CLKSOURCE_PLL2: SPI1/2/3 clock = PLL2\n  *             @arg RCC_SPI123CLKSOURCE_PLL3: SPI1/2/3 clock = PLL3\n  *             @arg RCC_SPI123CLKSOURCE_CLKP: SPI1/2/3 clock  = CLKP\n  *             @arg RCC_SPI123CLKSOURCE_PIN: SPI1/2/3 clock = External Clock\n  */\n#if defined(RCC_D2CCIP1R_SPI123SEL)\n#define __HAL_RCC_GET_SPI123_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI123SEL)))\n#else\n#define __HAL_RCC_GET_SPI123_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI123SEL)))\n#endif /* RCC_D2CCIP1R_SPI123SEL */\n\n/**\n  * @brief  Macro to Configure the SPI1 clock source.\n  * @param  __RCC_SPI1CLKSource__ defines the SPI1 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI1CLKSOURCE_PLL: SPI1 clock = PLL\n  *             @arg RCC_SPI1CLKSOURCE_PLL2: SPI1 clock = PLL2\n  *             @arg RCC_SPI1CLKSOURCE_PLL3: SPI1 clock = PLL3\n  *             @arg RCC_SPI1CLKSOURCE_CLKP: SPI1 clock  = CLKP\n  *             @arg RCC_SPI1CLKSOURCE_PIN: SPI1 clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SPI1_CONFIG  __HAL_RCC_SPI123_CONFIG\n\n/** @brief  Macro to get the SPI1 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI1CLKSOURCE_PLL: SPI1 clock = PLL\n  *             @arg RCC_SPI1CLKSOURCE_PLL2: SPI1 clock = PLL2\n  *             @arg RCC_SPI1CLKSOURCE_PLL3: SPI1 clock = PLL3\n  *             @arg RCC_SPI1CLKSOURCE_CLKP: SPI1 clock  = CLKP\n  *             @arg RCC_SPI1CLKSOURCE_PIN: SPI1 clock = External Clock\n  */\n#define __HAL_RCC_GET_SPI1_SOURCE  __HAL_RCC_GET_SPI123_SOURCE\n\n/**\n  * @brief  Macro to Configure the SPI2 clock source.\n  * @param  __RCC_SPI2CLKSource__ defines the SPI2 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI2CLKSOURCE_PLL: SPI2 clock = PLL\n  *             @arg RCC_SPI2CLKSOURCE_PLL2: SPI2 clock = PLL2\n  *             @arg RCC_SPI2CLKSOURCE_PLL3: SPI2 clock = PLL3\n  *             @arg RCC_SPI2CLKSOURCE_CLKP: SPI2 clock  = CLKP\n  *             @arg RCC_SPI2CLKSOURCE_PIN: SPI2 clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SPI2_CONFIG  __HAL_RCC_SPI123_CONFIG\n\n/** @brief  Macro to get the SPI2 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI2CLKSOURCE_PLL: SPI2 clock = PLL\n  *             @arg RCC_SPI2CLKSOURCE_PLL2: SPI2 clock = PLL2\n  *             @arg RCC_SPI2CLKSOURCE_PLL3: SPI2 clock = PLL3\n  *             @arg RCC_SPI2CLKSOURCE_CLKP: SPI2 clock  = CLKP\n  *             @arg RCC_SPI2CLKSOURCE_PIN: SPI2 clock = External Clock\n  */\n#define __HAL_RCC_GET_SPI2_SOURCE  __HAL_RCC_GET_SPI123_SOURCE\n\n/**\n  * @brief  Macro to Configure the SPI3 clock source.\n  * @param  __RCC_SPI3CLKSource__ defines the SPI3 clock source. This clock is derived\n  *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI3CLKSOURCE_PLL: SPI3 clock = PLL\n  *             @arg RCC_SPI3CLKSOURCE_PLL2: SPI3 clock = PLL2\n  *             @arg RCC_SPI3CLKSOURCE_PLL3: SPI3 clock = PLL3\n  *             @arg RCC_SPI3CLKSOURCE_CLKP: SPI3 clock  = CLKP\n  *             @arg RCC_SPI3CLKSOURCE_PIN: SPI3 clock = External Clock\n  * @retval None\n  */\n#define __HAL_RCC_SPI3_CONFIG  __HAL_RCC_SPI123_CONFIG\n\n/** @brief  Macro to get the SPI3 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI3CLKSOURCE_PLL: SPI3 clock = PLL\n  *             @arg RCC_SPI3CLKSOURCE_PLL2: SPI3 clock = PLL2\n  *             @arg RCC_SPI3CLKSOURCE_PLL3: SPI3 clock = PLL3\n  *             @arg RCC_SPI3CLKSOURCE_CLKP: SPI3 clock  = CLKP\n  *             @arg RCC_SPI3CLKSOURCE_PIN: SPI3 clock = External Clock\n  */\n#define __HAL_RCC_GET_SPI3_SOURCE  __HAL_RCC_GET_SPI123_SOURCE\n\n/**\n  * @brief  Macro to Configure the SPI4/5 clock source.\n  * @param  __RCC_SPI45CLKSource__ defines the SPI4/5 clock source. This clock is derived\n  *         from system PCLK, PLL2, PLL3, OSC\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI45CLKSOURCE_D2PCLK1:SPI4/5 clock = D2PCLK1\n  *             @arg RCC_SPI45CLKSOURCE_PLL2:   SPI4/5 clock = PLL2\n  *             @arg RCC_SPI45CLKSOURCE_PLL3:   SPI4/5 clock = PLL3\n  *             @arg RCC_SPI45CLKSOURCE_HSI:    SPI4/5 clock = HSI\n  *             @arg RCC_SPI45CLKSOURCE_CSI:    SPI4/5 clock = CSI\n  *             @arg RCC_SPI45CLKSOURCE_HSE:    SPI4/5 clock = HSE\n  * @retval None\n  */\n#if defined(RCC_D2CCIP1R_SPI45SEL)\n#define __HAL_RCC_SPI45_CONFIG(__RCC_SPI45CLKSource__ )\\\n                  MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI45SEL, (__RCC_SPI45CLKSource__))\n#else\n#define __HAL_RCC_SPI45_CONFIG(__RCC_SPI45CLKSource__ )\\\n                  MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI45SEL, (__RCC_SPI45CLKSource__))\n#endif /* RCC_D2CCIP1R_SPI45SEL */\n\n/** @brief  Macro to get the SPI4/5 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI45CLKSOURCE_D2PCLK1:SPI4/5 clock = D2PCLK1\n  *             @arg RCC_SPI45CLKSOURCE_PLL2:   SPI4/5 clock = PLL2\n  *             @arg RCC_SPI45CLKSOURCE_PLL3:   SPI4/5 clock = PLL3\n  *             @arg RCC_SPI45CLKSOURCE_HSI:    SPI4/5 clock = HSI\n  *             @arg RCC_SPI45CLKSOURCE_CSI:    SPI4/5 clock = CSI\n  *             @arg RCC_SPI45CLKSOURCE_HSE:    SPI4/5 clock = HSE\n*/\n#if defined(RCC_D2CCIP1R_SPI45SEL)\n#define __HAL_RCC_GET_SPI45_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI45SEL)))\n#else\n#define __HAL_RCC_GET_SPI45_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI45SEL)))\n#endif /* RCC_D2CCIP1R_SPI45SEL */\n\n/**\n  * @brief  Macro to Configure the SPI4 clock source.\n  * @param  __RCC_SPI4CLKSource__ defines the SPI4 clock source. This clock is derived\n  *         from system PCLK, PLL2, PLL3, OSC\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI4CLKSOURCE_D2PCLK1:SPI4 clock = D2PCLK1\n  *             @arg RCC_SPI4CLKSOURCE_PLL2:   SPI4 clock = PLL2\n  *             @arg RCC_SPI4CLKSOURCE_PLL3:   SPI4 clock = PLL3\n  *             @arg RCC_SPI4CLKSOURCE_HSI:    SPI4 clock = HSI\n  *             @arg RCC_SPI4CLKSOURCE_CSI:    SPI4 clock = CSI\n  *             @arg RCC_SPI4CLKSOURCE_HSE:    SPI4 clock = HSE\n  * @retval None\n  */\n#define __HAL_RCC_SPI4_CONFIG  __HAL_RCC_SPI45_CONFIG\n\n/** @brief  Macro to get the SPI4 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI4CLKSOURCE_D2PCLK1:SPI4 clock = D2PCLK1\n  *             @arg RCC_SPI4CLKSOURCE_PLL2:   SPI4 clock = PLL2\n  *             @arg RCC_SPI4CLKSOURCE_PLL3:   SPI4 clock = PLL3\n  *             @arg RCC_SPI4CLKSOURCE_HSI:    SPI4 clock = HSI\n  *             @arg RCC_SPI4CLKSOURCE_CSI:    SPI4 clock = CSI\n  *             @arg RCC_SPI4CLKSOURCE_HSE:    SPI4 clock = HSE\n*/\n#define __HAL_RCC_GET_SPI4_SOURCE  __HAL_RCC_GET_SPI45_SOURCE\n\n/**\n  * @brief  Macro to Configure the SPI5 clock source.\n  * @param  __RCC_SPI5CLKSource__ defines the SPI5 clock source. This clock is derived\n  *         from system PCLK, PLL2, PLL3, OSC\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI5CLKSOURCE_D2PCLK1:SPI5 clock = D2PCLK1\n  *             @arg RCC_SPI5CLKSOURCE_PLL2:   SPI5 clock = PLL2\n  *             @arg RCC_SPI5CLKSOURCE_PLL3:   SPI5 clock = PLL3\n  *             @arg RCC_SPI5CLKSOURCE_HSI:    SPI5 clock = HSI\n  *             @arg RCC_SPI5CLKSOURCE_CSI:    SPI5 clock = CSI\n  *             @arg RCC_SPI5CLKSOURCE_HSE:    SPI5 clock = HSE\n  * @retval None\n  */\n#define __HAL_RCC_SPI5_CONFIG  __HAL_RCC_SPI45_CONFIG\n\n/** @brief  Macro to get the SPI5 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI5CLKSOURCE_D2PCLK1:SPI5 clock = D2PCLK1\n  *             @arg RCC_SPI5CLKSOURCE_PLL2:   SPI5 clock = PLL2\n  *             @arg RCC_SPI5CLKSOURCE_PLL3:   SPI5 clock = PLL3\n  *             @arg RCC_SPI5CLKSOURCE_HSI:    SPI5 clock = HSI\n  *             @arg RCC_SPI5CLKSOURCE_CSI:    SPI5 clock = CSI\n  *             @arg RCC_SPI5CLKSOURCE_HSE:    SPI5 clock = HSE\n*/\n#define __HAL_RCC_GET_SPI5_SOURCE  __HAL_RCC_GET_SPI45_SOURCE\n\n/**\n  * @brief  Macro to Configure the SPI6 clock source.\n  * @param  __RCC_SPI6CLKSource__ defines the SPI6 clock source. This clock is derived\n  *         from system PCLK, PLL2, PLL3, OSC\n  *          This parameter can be one of the following values:\n  *             @arg RCC_SPI6CLKSOURCE_D3PCLK1:SPI6 clock = D2PCLK1\n  *             @arg RCC_SPI6CLKSOURCE_PLL2:   SPI6 clock = PLL2\n  *             @arg RCC_SPI6CLKSOURCE_PLL3:   SPI6 clock = PLL3\n  *             @arg RCC_SPI6CLKSOURCE_HSI:    SPI6 clock = HSI\n  *             @arg RCC_SPI6CLKSOURCE_CSI:    SPI6 clock = CSI\n  *             @arg RCC_SPI6CLKSOURCE_HSE:    SPI6 clock = HSE\n  *             @arg RCC_SPI6CLKSOURCE_PIN:    SPI6 clock = I2S_CKIN (*)\n  *\n  * @retval None\n  *\n  * (*) : Available on stm32h7a3xx and stm32h7b3xx family lines.\n  *\n  */\n#if defined(RCC_D3CCIPR_SPI6SEL)\n#define __HAL_RCC_SPI6_CONFIG(__RCC_SPI6CLKSource__ )\\\n                  MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_SPI6SEL, (__RCC_SPI6CLKSource__))\n#else\n#define __HAL_RCC_SPI6_CONFIG(__RCC_SPI6CLKSource__ )\\\n                  MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_SPI6SEL, (__RCC_SPI6CLKSource__))\n#endif /* RCC_D3CCIPR_SPI6SEL */\n\n/** @brief  Macro to get the SPI6 clock source.\n  * @retval The clock source can be one of the following values:\n  *             @arg RCC_SPI6CLKSOURCE_D3PCLK1:SPI6 clock = D2PCLK1\n  *             @arg RCC_SPI6CLKSOURCE_PLL2:   SPI6 clock = PLL2\n  *             @arg RCC_SPI6CLKSOURCE_PLL3:   SPI6 clock = PLL3\n  *             @arg RCC_SPI6CLKSOURCE_HSI:    SPI6 clock = HSI\n  *             @arg RCC_SPI6CLKSOURCE_CSI:    SPI6 clock = CSI\n  *             @arg RCC_SPI6CLKSOURCE_HSE:    SPI6 clock = HSE\n  *                @arg RCC_SPI6CLKSOURCE_PIN:    SPI6 clock = I2S_CKIN\n*/\n#if defined(RCC_D3CCIPR_SPI6SEL)\n#define __HAL_RCC_GET_SPI6_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_SPI6SEL)))\n#else\n#define __HAL_RCC_GET_SPI6_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_SPI6SEL)))\n#endif /* RCC_D3CCIPR_SPI6SEL */\n\n/** @brief  Macro to configure the SDMMC clock\n  * @param  __SDMMCCLKSource__ specifies  clock source  for SDMMC\n  *         This parameter can be one of the following values:\n  *            @arg RCC_SDMMCCLKSOURCE_PLL:  PLLQ selected as SDMMC clock\n  *            @arg RCC_SDMMCCLKSOURCE_PLL2: PLL2R selected as SDMMC clock\n  */\n#if defined(RCC_D1CCIPR_SDMMCSEL)\n#define __HAL_RCC_SDMMC_CONFIG(__SDMMCCLKSource__) \\\n                  MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL, (uint32_t)(__SDMMCCLKSource__))\n#else\n#define __HAL_RCC_SDMMC_CONFIG(__SDMMCCLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_SDMMCSEL, (uint32_t)(__SDMMCCLKSource__))\n#endif /* RCC_D1CCIPR_SDMMCSEL */\n\n/** @brief  Macro to get the SDMMC clock\n  */\n#if defined(RCC_D1CCIPR_SDMMCSEL)\n#define __HAL_RCC_GET_SDMMC_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL)))\n#else\n#define __HAL_RCC_GET_SDMMC_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_SDMMCSEL)))\n#endif /* RCC_D1CCIPR_SDMMCSEL */\n\n/** @brief macro to configure the RNG clock (RNGCLK).\n  *\n  * @param  __RNGCLKSource__ specifies the RNG clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_RNGCLKSOURCE_HSI48: HSI48 selected as RNG clock\n  *            @arg RCC_RNGCLKSOURCE_PLL: PLL1Q selected as RNG clock\n  *            @arg RCC_RNGCLKSOURCE_LSE: LSE selected as RNG clock\n  *            @arg RCC_RNGCLKSOURCE_LSI: LSI selected as RNG clock\n  */\n#if defined(RCC_D2CCIP2R_RNGSEL)\n#define __HAL_RCC_RNG_CONFIG(__RNGCLKSource__) \\\n                  MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL, (uint32_t)(__RNGCLKSource__))\n#else\n#define __HAL_RCC_RNG_CONFIG(__RNGCLKSource__) \\\n                  MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_RNGSEL, (uint32_t)(__RNGCLKSource__))\n#endif /* RCC_D2CCIP2R_RNGSEL */\n\n/** @brief  macro to get the RNG clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg RCC_RNGCLKSOURCE_HSI48: HSI48 selected as RNG clock\n  *            @arg RCC_RNGCLKSOURCE_PLL: PLL1Q selected as RNG clock\n  *            @arg RCC_RNGCLKSOURCE_LSE: LSE selected as RNG clock\n  *            @arg RCC_RNGCLKSOURCE_LSI: LSI selected as RNG clock\n  */\n#if defined(RCC_D2CCIP2R_RNGSEL)\n#define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL)))\n#else\n#define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_RNGSEL)))\n#endif /* RCC_D2CCIP2R_RNGSEL */\n\n#if defined(HRTIM1)\n/** @brief  Macro to configure the HRTIM1 prescaler clock source.\n  * @param  __HRTIM1CLKSource__ specifies the HRTIM1 prescaler clock source.\n  *         This parameter can be one of the following values:\n  *            @arg @ref RCC_HRTIM1CLK_TIMCLK    Timers  clock  selected as HRTIM1 prescaler clock\n  *            @arg @ref RCC_HRTIM1CLK_CPUCLK CPU Clock selected as HRTIM1 clock\n  */\n#define __HAL_RCC_HRTIM1_CONFIG(__HRTIM1CLKSource__) \\\n                  MODIFY_REG(RCC->CFGR, RCC_CFGR_HRTIMSEL, (uint32_t)(__HRTIM1CLKSource__))\n\n/** @brief  Macro to get the HRTIM1 clock source.\n  * @retval The clock source can be one of the following values:\n  *            @arg @ref RCC_HRTIM1CLK_TIMCLK   Timers  clock  selected as HRTIM1 prescaler clock\n  *            @arg @ref RCC_HRTIM1CLK_CPUCLK CPU Clock selected as HRTIM1 clock\n  */\n#define __HAL_RCC_GET_HRTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HRTIMSEL)))\n#endif /* HRTIM1 */\n\n/** @brief  Macro to configure the Timers clocks prescalers\n  * @param  __PRESC__  specifies the Timers clocks prescalers selection\n  *         This parameter can be one of the following values:\n  *            @arg RCC_TIMPRES_DESACTIVATED: The Timers kernels clocks prescaler is\n  *                 equal to rcc_hclk1 if D2PPREx is corresponding to division by 1 or 2,\n  *                 else it is equal to 2 x Frcc_pclkx_d2 (default after reset)\n  *            @arg RCC_TIMPRES_ACTIVATED: The Timers kernels clocks prescaler is\n  *                 equal to rcc_hclk1 if D2PPREx is corresponding to division by 1, 2 or 4,\n  *                 else it is equal to 4 x Frcc_pclkx_d2\n  */\n#define __HAL_RCC_TIMCLKPRESCALER(__PRESC__) do {RCC->CFGR &= ~(RCC_CFGR_TIMPRE);\\\n                                                 RCC->CFGR |= (__PRESC__);       \\\n                                                }while(0)\n\n/**\n  * @brief Enable the RCC LSE CSS Extended Interrupt Line.\n  * @retval None\n  */\n#define __HAL_RCC_LSECSS_EXTI_ENABLE_IT()      SET_BIT(EXTI->IMR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Disable the RCC LSE CSS Extended Interrupt Line.\n  * @retval None\n  */\n#define __HAL_RCC_LSECSS_EXTI_DISABLE_IT()     CLEAR_BIT(EXTI->IMR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Enable the RCC LSE CSS Event Line.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_ENABLE_EVENT()   SET_BIT(EXTI->EMR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Disable the RCC LSE CSS Event Line.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_DISABLE_EVENT()  CLEAR_BIT(EXTI->EMR1, RCC_EXTI_LINE_LSECSS)\n\n#if defined(DUAL_CORE)\n/**\n  * @brief Enable the RCC LSE CSS Extended Interrupt Line for CM4.\n  * @retval None\n  */\n#define __HAL_RCC_C2_LSECSS_EXTI_ENABLE_IT()       SET_BIT(EXTI->C2IMR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Disable the RCC LSE CSS Extended Interrupt Line for CM4.\n  * @retval None\n  */\n#define __HAL_RCC_C2_LSECSS_EXTI_DISABLE_IT()      CLEAR_BIT(EXTI->C2IMR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Enable the RCC LSE CSS Event Line for CM4.\n  * @retval None.\n  */\n#define __HAL_RCC_C2_LSECSS_EXTI_ENABLE_EVENT()    SET_BIT(EXTI->C2EMR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Disable the RCC LSE CSS Event Line for CM4.\n  * @retval None.\n  */\n#define __HAL_RCC_C2_LSECSS_EXTI_DISABLE_EVENT()   CLEAR_BIT(EXTI->C2EMR1, RCC_EXTI_LINE_LSECSS)\n#endif /* DUAL_CORE */\n\n/**\n  * @brief  Enable the RCC LSE CSS Extended Interrupt Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE()  SET_BIT(EXTI->FTSR1, RCC_EXTI_LINE_LSECSS)\n\n\n/**\n  * @brief Disable the RCC LSE CSS Extended Interrupt Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR1, RCC_EXTI_LINE_LSECSS)\n\n\n/**\n  * @brief  Enable the RCC LSE CSS Extended Interrupt Rising Trigger.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Disable the RCC LSE CSS Extended Interrupt Rising Trigger.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR1, RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Enable the RCC LSE CSS Extended Interrupt Rising & Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_FALLING_EDGE()  \\\n  do {                                                      \\\n    __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE();             \\\n    __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE();            \\\n  } while(0)\n\n/**\n  * @brief Disable the RCC LSE CSS Extended Interrupt Rising & Falling Trigger.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_FALLING_EDGE()  \\\n  do {                                                       \\\n    __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE();             \\\n    __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE();            \\\n  } while(0)\n\n/**\n  * @brief Check whether the specified RCC LSE CSS EXTI interrupt flag is set or not.\n  * @retval EXTI RCC LSE CSS Line Status.\n  */\n#define __HAL_RCC_LSECSS_EXTI_GET_FLAG()       (READ_BIT(EXTI->PR1, RCC_EXTI_LINE_LSECSS) == RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Clear the RCC LSE CSS EXTI flag.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_CLEAR_FLAG()     WRITE_REG(EXTI->PR1, RCC_EXTI_LINE_LSECSS)\n\n#if defined(DUAL_CORE)\n/**\n  * @brief Check whether the specified RCC LSE CSS EXTI interrupt flag is set or not for CM4.\n  * @retval EXTI RCC LSE CSS Line Status.\n  */\n#define __HAL_RCC_C2_LSECSS_EXTI_GET_FLAG()       (READ_BIT(EXTI->C2PR1, RCC_EXTI_LINE_LSECSS) == RCC_EXTI_LINE_LSECSS)\n\n/**\n  * @brief Clear the RCC LSE CSS EXTI flag or not for CM4.\n  * @retval None.\n  */\n#define __HAL_RCC_C2_LSECSS_EXTI_CLEAR_FLAG()     WRITE_REG(EXTI->C2PR1, RCC_EXTI_LINE_LSECSS)\n#endif /* DUAL_CORE */\n/**\n  * @brief Generate a Software interrupt on the RCC LSE CSS EXTI line.\n  * @retval None.\n  */\n#define __HAL_RCC_LSECSS_EXTI_GENERATE_SWIT()  SET_BIT(EXTI->SWIER1, RCC_EXTI_LINE_LSECSS)\n \n/**\n  * @brief  Enable the specified CRS interrupts.\n  * @param  __INTERRUPT__ specifies the CRS interrupt sources to be enabled.\n  *          This parameter can be any combination of the following values:\n  *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt\n  *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt\n  *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt\n  *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt\n  * @retval None\n  */\n#define __HAL_RCC_CRS_ENABLE_IT(__INTERRUPT__)   SET_BIT(CRS->CR, (__INTERRUPT__))\n\n/**\n  * @brief  Disable the specified CRS interrupts.\n  * @param  __INTERRUPT__ specifies the CRS interrupt sources to be disabled.\n  *          This parameter can be any combination of the following values:\n  *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt\n  *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt\n  *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt\n  *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt\n  * @retval None\n  */\n#define __HAL_RCC_CRS_DISABLE_IT(__INTERRUPT__)  CLEAR_BIT(CRS->CR, (__INTERRUPT__))\n\n/** @brief  Check whether the CRS interrupt has occurred or not.\n  * @param  __INTERRUPT__ specifies the CRS interrupt source to check.\n  *         This parameter can be one of the following values:\n  *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt\n  *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt\n  *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt\n  *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt\n  * @retval The new state of __INTERRUPT__ (SET or RESET).\n  */\n#define __HAL_RCC_CRS_GET_IT_SOURCE(__INTERRUPT__)  ((READ_BIT(CRS->CR, (__INTERRUPT__)) != 0U) ? SET : RESET)\n\n/** @brief  Clear the CRS interrupt pending bits\n  * @param  __INTERRUPT__ specifies the interrupt pending bit to clear.\n  *         This parameter can be any combination of the following values:\n  *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt\n  *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt\n  *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt\n  *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt\n  *              @arg @ref RCC_CRS_IT_TRIMOVF  Trimming overflow or underflow interrupt\n  *              @arg @ref RCC_CRS_IT_SYNCERR  SYNC error interrupt\n  *              @arg @ref RCC_CRS_IT_SYNCMISS  SYNC missed interrupt\n  */\n/* CRS IT Error Mask */\n#define  RCC_CRS_IT_ERROR_MASK                 ((uint32_t)(RCC_CRS_IT_TRIMOVF | RCC_CRS_IT_SYNCERR | RCC_CRS_IT_SYNCMISS))\n\n#define __HAL_RCC_CRS_CLEAR_IT(__INTERRUPT__)  do { \\\n                                                 if(((__INTERRUPT__) & RCC_CRS_IT_ERROR_MASK) != 0U) \\\n                                                 { \\\n                                                   WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__INTERRUPT__) & ~RCC_CRS_IT_ERROR_MASK)); \\\n                                                 } \\\n                                                 else \\\n                                                 { \\\n                                                   WRITE_REG(CRS->ICR, (__INTERRUPT__)); \\\n                                                 } \\\n                                               } while(0)\n\n/**\n  * @brief  Check whether the specified CRS flag is set or not.\n  * @param  __FLAG__ specifies the flag to check.\n  *          This parameter can be one of the following values:\n  *              @arg @ref RCC_CRS_FLAG_SYNCOK  SYNC event OK\n  *              @arg @ref RCC_CRS_FLAG_SYNCWARN  SYNC warning\n  *              @arg @ref RCC_CRS_FLAG_ERR  Error\n  *              @arg @ref RCC_CRS_FLAG_ESYNC  Expected SYNC\n  *              @arg @ref RCC_CRS_FLAG_TRIMOVF  Trimming overflow or underflow\n  *              @arg @ref RCC_CRS_FLAG_SYNCERR  SYNC error\n  *              @arg @ref RCC_CRS_FLAG_SYNCMISS  SYNC missed\n  * @retval The new state of _FLAG_ (TRUE or FALSE).\n  */\n#define __HAL_RCC_CRS_GET_FLAG(__FLAG__)  (READ_BIT(CRS->ISR, (__FLAG__)) == (__FLAG__))\n\n/**\n  * @brief  Clear the CRS specified FLAG.\n  * @param __FLAG__ specifies the flag to clear.\n  *          This parameter can be one of the following values:\n  *              @arg @ref RCC_CRS_FLAG_SYNCOK  SYNC event OK\n  *              @arg @ref RCC_CRS_FLAG_SYNCWARN  SYNC warning\n  *              @arg @ref RCC_CRS_FLAG_ERR  Error\n  *              @arg @ref RCC_CRS_FLAG_ESYNC  Expected SYNC\n  *              @arg @ref RCC_CRS_FLAG_TRIMOVF  Trimming overflow or underflow\n  *              @arg @ref RCC_CRS_FLAG_SYNCERR  SYNC error\n  *              @arg @ref RCC_CRS_FLAG_SYNCMISS  SYNC missed\n  * @note RCC_CRS_FLAG_ERR clears RCC_CRS_FLAG_TRIMOVF, RCC_CRS_FLAG_SYNCERR, RCC_CRS_FLAG_SYNCMISS and consequently RCC_CRS_FLAG_ERR\n  * @retval None\n  */\n\n/* CRS Flag Error Mask */\n#define RCC_CRS_FLAG_ERROR_MASK                ((uint32_t)(RCC_CRS_FLAG_TRIMOVF | RCC_CRS_FLAG_SYNCERR | RCC_CRS_FLAG_SYNCMISS))\n\n#define __HAL_RCC_CRS_CLEAR_FLAG(__FLAG__)     do { \\\n                                                 if(((__FLAG__) & RCC_CRS_FLAG_ERROR_MASK) != 0U) \\\n                                                 { \\\n                                                   WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__FLAG__) & ~RCC_CRS_FLAG_ERROR_MASK)); \\\n                                                 } \\\n                                                 else \\\n                                                 { \\\n                                                   WRITE_REG(CRS->ICR, (__FLAG__)); \\\n                                                 } \\\n                                               } while(0)\n\n /** @defgroup RCCEx_CRS_Extended_Features RCCEx CRS Extended Features\n  * @{\n  */\n/**\n  * @brief  Enable the oscillator clock for frequency error counter.\n  * @note   when the CEN bit is set the CRS_CFGR register becomes write-protected.\n  * @retval None\n  */\n#define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE()  SET_BIT(CRS->CR, CRS_CR_CEN)\n\n/**\n  * @brief  Disable the oscillator clock for frequency error counter.\n  * @retval None\n  */\n#define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_CEN)\n\n/**\n  * @brief  Enable the automatic hardware adjustment of TRIM bits.\n  * @note   When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected.\n  * @retval None\n  */\n#define __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE()     SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)\n\n/**\n  * @brief  Enable or disable the automatic hardware adjustment of TRIM bits.\n  * @retval None\n  */\n#define __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE()    CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)\n\n/**\n  * @brief  Macro to calculate reload value to be set in CRS register according to target and sync frequencies\n  * @note   The RELOAD value should be selected according to the ratio between the target frequency and the frequency\n  *             of the synchronization source after pre-scaling. It is then decreased by one in order to\n  *             reach the expected synchronization on the zero value. The formula is the following:\n  *             RELOAD = (fTARGET / fSYNC) -1\n  * @param  __FTARGET__ Target frequency (value in Hz)\n  * @param  __FSYNC__ Synchronization signal frequency (value in Hz)\n  * @retval None\n  */\n#define __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__)  (((__FTARGET__) / (__FSYNC__)) - 1U)\n\n\n/**\n  * @}\n  */\n\n\n/**\n  * @}\n  */\n\n\n/* Exported functions --------------------------------------------------------*/\n /** @addtogroup RCCEx_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup RCCEx_Exported_Functions_Group1\n  * @{\n  */\nHAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit);\nvoid HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit);\nuint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk);\nuint32_t HAL_RCCEx_GetD1PCLK1Freq(void);\nuint32_t HAL_RCCEx_GetD3PCLK1Freq(void);\nuint32_t HAL_RCCEx_GetD1SysClockFreq(void);\nvoid     HAL_RCCEx_GetPLL1ClockFreq(PLL1_ClocksTypeDef* PLL1_Clocks);\nvoid     HAL_RCCEx_GetPLL2ClockFreq(PLL2_ClocksTypeDef* PLL2_Clocks);\nvoid     HAL_RCCEx_GetPLL3ClockFreq(PLL3_ClocksTypeDef* PLL3_Clocks);\n/**\n  * @}\n  */\n\n/** @addtogroup RCCEx_Exported_Functions_Group2\n  * @{\n  */\nvoid HAL_RCCEx_WakeUpStopCLKConfig(uint32_t WakeUpClk);\nvoid HAL_RCCEx_KerWakeUpStopCLKConfig(uint32_t WakeUpClk);\nvoid HAL_RCCEx_EnableLSECSS(void);\nvoid HAL_RCCEx_DisableLSECSS(void);\nvoid HAL_RCCEx_EnableLSECSS_IT(void);\nvoid HAL_RCCEx_LSECSS_IRQHandler(void);\nvoid HAL_RCCEx_LSECSS_Callback(void);\n#if defined(DUAL_CORE)\nvoid HAL_RCCEx_EnableBootCore(uint32_t RCC_BootCx);\n#endif /*DUAL_CORE*/\n#if defined(RCC_GCR_WW1RSC)\nvoid HAL_RCCEx_WWDGxSysResetConfig(uint32_t RCC_WWDGx);\n#endif /*RCC_GCR_WW1RSC*/\n/**\n  * @}\n  */\n\n\n/** @addtogroup RCCEx_Exported_Functions_Group3\n  * @{\n  */\n\nvoid     HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit);\nvoid     HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void);\nvoid     HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo);\nuint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout);\nvoid     HAL_RCCEx_CRS_IRQHandler(void);\nvoid     HAL_RCCEx_CRS_SyncOkCallback(void);\nvoid     HAL_RCCEx_CRS_SyncWarnCallback(void);\nvoid     HAL_RCCEx_CRS_ExpectedSyncCallback(void);\nvoid     HAL_RCCEx_CRS_ErrorCallback(uint32_t Error);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n /* Private macros ------------------------------------------------------------*/\n/** @addtogroup RCCEx_Private_Macros RCCEx Private Macros\n  * @{\n  */\n/** @defgroup RCCEx_IS_RCC_Definitions RCC Private macros to check input parameters\n  * @{\n  */\n\n#define IS_RCC_PLL2CLOCKOUT_VALUE(VALUE) (((VALUE) == RCC_PLL2_DIVP) || \\\n                                         ((VALUE) == RCC_PLL2_DIVQ)  || \\\n                                         ((VALUE) == RCC_PLL2_DIVR))\n\n#define IS_RCC_PLL3CLOCKOUT_VALUE(VALUE) (((VALUE) == RCC_PLL3_DIVP) || \\\n                                          ((VALUE) == RCC_PLL3_DIVQ) || \\\n                                          ((VALUE) == RCC_PLL3_DIVR))\n\n#if defined(RCC_D2CCIP2R_USART16SEL)\n#define IS_RCC_USART16CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART16CLKSOURCE_D2PCLK2)|| \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_PLL2)   || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_PLL3)   || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_CSI)    || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_LSE)    || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_HSI))\n#else\n#define IS_RCC_USART16CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART16CLKSOURCE_D2PCLK2)|| \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_CDPCLK2)|| \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_PLL2)   || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_PLL3)   || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_CSI)    || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_LSE)    || \\\n                                         ((SOURCE) == RCC_USART16CLKSOURCE_HSI))\n/* alias*/\n#define IS_RCC_USART16910CLKSOURCE    IS_RCC_USART16CLKSOURCE\n#endif /* RCC_D2CCIP2R_USART16SEL */\n\n#if defined(RCC_D2CCIP2R_USART28SEL)\n#define IS_RCC_USART234578CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART234578CLKSOURCE_D2PCLK1)|| \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_PLL2)   || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_PLL3)   || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_CSI)    || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_LSE)    || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_HSI))\n#else\n#define IS_RCC_USART234578CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART234578CLKSOURCE_D2PCLK1)|| \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_CDPCLK1)|| \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_PLL2)   || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_PLL3)   || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_CSI)    || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_LSE)    || \\\n                                             ((SOURCE) == RCC_USART234578CLKSOURCE_HSI))\n#endif /* RCC_D2CCIP2R_USART28SEL */\n\n#define IS_RCC_USART1CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART1CLKSOURCE_D2PCLK2)|| \\\n                                        ((SOURCE) == RCC_USART1CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_USART1CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_USART1CLKSOURCE_CSI)    || \\\n                                        ((SOURCE) == RCC_USART1CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_USART1CLKSOURCE_HSI))\n\n#define IS_RCC_USART2CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART2CLKSOURCE_D2PCLK1)|| \\\n                                        ((SOURCE) == RCC_USART2CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_USART2CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_USART2CLKSOURCE_CSI)    || \\\n                                        ((SOURCE) == RCC_USART2CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_USART2CLKSOURCE_HSI))\n\n#define IS_RCC_USART3CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART3CLKSOURCE_D2PCLK1)|| \\\n                                        ((SOURCE) == RCC_USART3CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_USART3CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_USART3CLKSOURCE_CSI)    || \\\n                                        ((SOURCE) == RCC_USART3CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_USART3CLKSOURCE_HSI))\n\n#define IS_RCC_UART4CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART4CLKSOURCE_D2PCLK1) || \\\n                                        ((SOURCE) == RCC_UART4CLKSOURCE_PLL2)    || \\\n                                        ((SOURCE) == RCC_UART4CLKSOURCE_PLL3)    || \\\n                                        ((SOURCE) == RCC_UART4CLKSOURCE_CSI)     || \\\n                                        ((SOURCE) == RCC_UART4CLKSOURCE_LSE)     || \\\n                                        ((SOURCE) == RCC_UART4CLKSOURCE_HSI))\n\n#define IS_RCC_UART5CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART5CLKSOURCE_D2PCLK1) || \\\n                                        ((SOURCE) == RCC_UART5CLKSOURCE_PLL2)    || \\\n                                        ((SOURCE) == RCC_UART5CLKSOURCE_PLL3)    || \\\n                                        ((SOURCE) == RCC_UART5CLKSOURCE_CSI)     || \\\n                                        ((SOURCE) == RCC_UART5CLKSOURCE_LSE)     || \\\n                                        ((SOURCE) == RCC_UART5CLKSOURCE_HSI))\n\n#define IS_RCC_USART6CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART6CLKSOURCE_D2PCLK2)|| \\\n                                        ((SOURCE) == RCC_USART6CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_USART6CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_USART6CLKSOURCE_CSI)    || \\\n                                        ((SOURCE) == RCC_USART6CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_USART6CLKSOURCE_HSI))\n\n#define IS_RCC_UART7CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART7CLKSOURCE_D2PCLK1) || \\\n                                        ((SOURCE) == RCC_UART7CLKSOURCE_PLL2)    || \\\n                                        ((SOURCE) == RCC_UART7CLKSOURCE_PLL3)    || \\\n                                        ((SOURCE) == RCC_UART7CLKSOURCE_CSI)     || \\\n                                        ((SOURCE) == RCC_UART7CLKSOURCE_LSE)     || \\\n                                        ((SOURCE) == RCC_UART7CLKSOURCE_HSI))\n\n#define IS_RCC_UART8CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART8CLKSOURCE_D2PCLK1) || \\\n                                        ((SOURCE) == RCC_UART8CLKSOURCE_PLL2)    || \\\n                                        ((SOURCE) == RCC_UART8CLKSOURCE_PLL3)    || \\\n                                        ((SOURCE) == RCC_UART8CLKSOURCE_CSI)     || \\\n                                        ((SOURCE) == RCC_UART8CLKSOURCE_LSE)     || \\\n                                        ((SOURCE) == RCC_UART8CLKSOURCE_HSI))\n\n#if defined(UART9)\n#define IS_RCC_UART9CLKSOURCE(SOURCE) (((SOURCE) == RCC_UART9CLKSOURCE_D2PCLK2)|| \\\n                                        ((SOURCE) == RCC_UART9CLKSOURCE_PLL2)  || \\\n                                        ((SOURCE) == RCC_UART9CLKSOURCE_PLL3)  || \\\n                                        ((SOURCE) == RCC_UART9CLKSOURCE_CSI)   || \\\n                                        ((SOURCE) == RCC_UART9CLKSOURCE_LSE)   || \\\n                                        ((SOURCE) == RCC_UART9CLKSOURCE_HSI))\n#endif\n\n#if defined(USART10)\n#define IS_RCC_USART10CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART10CLKSOURCE_D2PCLK2)|| \\\n                                        ((SOURCE) == RCC_USART10CLKSOURCE_PLL2)    || \\\n                                        ((SOURCE) == RCC_USART10CLKSOURCE_PLL3)    || \\\n                                        ((SOURCE) == RCC_USART10CLKSOURCE_CSI)     || \\\n                                        ((SOURCE) == RCC_USART10CLKSOURCE_LSE)     || \\\n                                        ((SOURCE) == RCC_USART10CLKSOURCE_HSI))\n#endif\n\n#define IS_RCC_LPUART1CLKSOURCE(SOURCE) (((SOURCE) == RCC_LPUART1CLKSOURCE_D3PCLK1) || \\\n                                         ((SOURCE) == RCC_LPUART1CLKSOURCE_PLL2)    || \\\n                                         ((SOURCE) == RCC_LPUART1CLKSOURCE_PLL3)    || \\\n                                         ((SOURCE) == RCC_LPUART1CLKSOURCE_CSI)     || \\\n                                         ((SOURCE) == RCC_LPUART1CLKSOURCE_LSE)     || \\\n                                         ((SOURCE) == RCC_LPUART1CLKSOURCE_HSI))\n\n#if defined(I2C5)\n#define IS_RCC_I2C1235CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C1235CLKSOURCE_PLL3)   || \\\n                                          ((SOURCE) == RCC_I2C1235CLKSOURCE_HSI)     || \\\n                                          ((SOURCE) == RCC_I2C1235CLKSOURCE_D2PCLK1) || \\\n                                          ((SOURCE) == RCC_I2C1235CLKSOURCE_CSI))\n\n#define IS_RCC_I2C123CLKSOURCE    IS_RCC_I2C1235CLKSOURCE  /* For  API Backward compatibility */\n#else\n#define IS_RCC_I2C123CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C123CLKSOURCE_PLL3)   || \\\n                                          ((SOURCE) == RCC_I2C123CLKSOURCE_HSI)    || \\\n                                          ((SOURCE) == RCC_I2C123CLKSOURCE_D2PCLK1)|| \\\n                                          ((SOURCE) == RCC_I2C123CLKSOURCE_CSI))\n#endif /*I2C5*/\n\n#define IS_RCC_I2C1CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C1CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_I2C1CLKSOURCE_HSI)    || \\\n                                        ((SOURCE) == RCC_I2C1CLKSOURCE_D2PCLK1)|| \\\n                                        ((SOURCE) == RCC_I2C1CLKSOURCE_CSI))\n\n#define IS_RCC_I2C2CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C2CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_I2C2CLKSOURCE_HSI)    || \\\n                                        ((SOURCE) == RCC_I2C2CLKSOURCE_D2PCLK1)|| \\\n                                        ((SOURCE) == RCC_I2C2CLKSOURCE_CSI))\n\n#define IS_RCC_I2C3CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C3CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_I2C3CLKSOURCE_HSI)    || \\\n                                        ((SOURCE) == RCC_I2C3CLKSOURCE_D2PCLK1)|| \\\n                                        ((SOURCE) == RCC_I2C3CLKSOURCE_CSI))\n\n#define IS_RCC_I2C4CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C4CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_I2C4CLKSOURCE_HSI)    || \\\n                                        ((SOURCE) == RCC_I2C4CLKSOURCE_D3PCLK1)|| \\\n                                        ((SOURCE) == RCC_I2C3CLKSOURCE_CSI))\n\n#if defined(I2C5)\n#define IS_RCC_I2C5CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C5CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_I2C5CLKSOURCE_HSI)    || \\\n                                        ((SOURCE) == RCC_I2C5CLKSOURCE_D2PCLK1)|| \\\n                                        ((SOURCE) == RCC_I2C5CLKSOURCE_CSI))\n#endif /*I2C5*/\n\n#define IS_RCC_RNGCLKSOURCE(SOURCE)    (((SOURCE) == RCC_RNGCLKSOURCE_HSI48)|| \\\n                                        ((SOURCE) == RCC_RNGCLKSOURCE_PLL)  || \\\n                                        ((SOURCE) == RCC_RNGCLKSOURCE_LSE)  || \\\n                                        ((SOURCE) == RCC_RNGCLKSOURCE_LSI))\n\n#if defined(HRTIM1)\n#define IS_RCC_HRTIM1CLKSOURCE(SOURCE) (((SOURCE) == RCC_HRTIM1CLK_TIMCLK) || \\\n                                        ((SOURCE) == RCC_HRTIM1CLK_CPUCLK))\n#endif\n\n#define IS_RCC_USBCLKSOURCE(SOURCE)    (((SOURCE) == RCC_USBCLKSOURCE_PLL)  || \\\n                                        ((SOURCE) == RCC_USBCLKSOURCE_PLL3) || \\\n                                        ((SOURCE) == RCC_USBCLKSOURCE_HSI48))\n\n#define IS_RCC_SAI1CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI1CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI1CLKSOURCE_PIN))\n\n#if defined(SAI3)\n#define IS_RCC_SAI23CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI23CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI23CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI23CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI23CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI23CLKSOURCE_PIN))\n\n#define IS_RCC_SAI2CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI2CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI2CLKSOURCE_PIN))\n\n\n#define IS_RCC_SAI3CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI3CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI3CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI3CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI3CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI3CLKSOURCE_PIN))\n#endif\n\n#if defined(RCC_CDCCIP1R_SAI2ASEL)\n#define IS_RCC_SAI2ACLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI2ACLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI2ACLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI2ACLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI2ACLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI2ACLKSOURCE_PIN) || \\\n                ((__SOURCE__) == RCC_SAI2ACLKSOURCE_SPDIF))\n#endif\n\n#if defined(RCC_CDCCIP1R_SAI2BSEL)\n#define IS_RCC_SAI2BCLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI2BCLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI2BCLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI2BCLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI2BCLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI2BCLKSOURCE_PIN) || \\\n                ((__SOURCE__) == RCC_SAI2BCLKSOURCE_SPDIF))\n#endif\n\n#define IS_RCC_SPI123CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI123CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SPI123CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SPI123CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SPI123CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SPI123CLKSOURCE_PIN))\n\n#define IS_RCC_SPI1CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SPI1CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SPI1CLKSOURCE_PIN))\n\n#define IS_RCC_SPI2CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SPI2CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SPI2CLKSOURCE_PIN))\n\n#define IS_RCC_SPI3CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SPI3CLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SPI3CLKSOURCE_PIN))\n\n#define IS_RCC_SPI45CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI45CLKSOURCE_D2PCLK1)  || \\\n                ((__SOURCE__) == RCC_SPI45CLKSOURCE_PLL2)     || \\\n                ((__SOURCE__) == RCC_SPI45CLKSOURCE_PLL3)     || \\\n                ((__SOURCE__) == RCC_SPI45CLKSOURCE_HSI)      || \\\n                ((__SOURCE__) == RCC_SPI45CLKSOURCE_CSI)      || \\\n                ((__SOURCE__) == RCC_SPI45CLKSOURCE_HSE))\n\n#define IS_RCC_SPI4CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI4CLKSOURCE_D2PCLK1)  || \\\n                ((__SOURCE__) == RCC_SPI4CLKSOURCE_PLL2)     || \\\n                ((__SOURCE__) == RCC_SPI4CLKSOURCE_PLL3)     || \\\n                ((__SOURCE__) == RCC_SPI4CLKSOURCE_HSI)      || \\\n                ((__SOURCE__) == RCC_SPI4CLKSOURCE_CSI)      || \\\n                ((__SOURCE__) == RCC_SPI4CLKSOURCE_HSE))\n\n#define IS_RCC_SPI5CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI5CLKSOURCE_D2PCLK1)|| \\\n                ((__SOURCE__) == RCC_SPI5CLKSOURCE_PLL2)   || \\\n                ((__SOURCE__) == RCC_SPI5CLKSOURCE_PLL3)   || \\\n                ((__SOURCE__) == RCC_SPI5CLKSOURCE_HSI)    || \\\n                ((__SOURCE__) == RCC_SPI5CLKSOURCE_CSI)    || \\\n                ((__SOURCE__) == RCC_SPI5CLKSOURCE_HSE))\n\n#if defined(RCC_D3CCIPR_SPI6SEL)\n#define IS_RCC_SPI6CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI6CLKSOURCE_D3PCLK1) || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL2)    || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL3)    || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSI)     || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_CSI)     || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSE))\n#else\n#define IS_RCC_SPI6CLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SPI6CLKSOURCE_D3PCLK1) || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL2)    || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL3)    || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSI)     || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_CSI)     || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSE)     || \\\n                ((__SOURCE__) == RCC_SPI6CLKSOURCE_PIN))\n#endif /* RCC_D3CCIPR_SPI6SEL */\n\n#if defined(SAI4)\n#define IS_RCC_SAI4ACLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI4ACLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI4ACLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI4ACLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI4ACLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI4ACLKSOURCE_PIN))\n\n#define IS_RCC_SAI4BCLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_SAI4BCLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SAI4BCLKSOURCE_PLL2) || \\\n                ((__SOURCE__) == RCC_SAI4BCLKSOURCE_PLL3) || \\\n                ((__SOURCE__) == RCC_SAI4BCLKSOURCE_CLKP) || \\\n                ((__SOURCE__) == RCC_SAI4BCLKSOURCE_PIN))\n#endif /*SAI4*/\n\n#define IS_RCC_PLL3M_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 63U))\n#define IS_RCC_PLL3N_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))\n#define IS_RCC_PLL3P_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n#define IS_RCC_PLL3Q_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n#define IS_RCC_PLL3R_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n\n#define IS_RCC_PLL2M_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 63U))\n#define IS_RCC_PLL2N_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))\n#define IS_RCC_PLL2P_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n#define IS_RCC_PLL2Q_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n#define IS_RCC_PLL2R_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))\n\n#define IS_RCC_PLL2RGE_VALUE(VALUE) (((VALUE) == RCC_PLL2VCIRANGE_0)  || \\\n                                    ((VALUE) == RCC_PLL2VCIRANGE_1)   || \\\n                                    ((VALUE) == RCC_PLL2VCIRANGE_2)   || \\\n                                    ((VALUE) == RCC_PLL2VCIRANGE_3))\n\n#define IS_RCC_PLL3RGE_VALUE(VALUE) (((VALUE) == RCC_PLL3VCIRANGE_0)  || \\\n                                    ((VALUE) == RCC_PLL3VCIRANGE_1)   || \\\n                                    ((VALUE) == RCC_PLL3VCIRANGE_2)   || \\\n                                    ((VALUE) == RCC_PLL3VCIRANGE_3))\n\n#define IS_RCC_PLL2VCO_VALUE(VALUE) (((VALUE) == RCC_PLL2VCOWIDE)  || \\\n                                    ((VALUE) == RCC_PLL2VCOMEDIUM))\n\n#define IS_RCC_PLL3VCO_VALUE(VALUE) (((VALUE) == RCC_PLL3VCOWIDE)  || \\\n                                    ((VALUE) == RCC_PLL3VCOMEDIUM))\n\n#define IS_RCC_LPTIM1CLK(SOURCE)       (((SOURCE) == RCC_LPTIM1CLKSOURCE_D2PCLK1)|| \\\n                                        ((SOURCE) == RCC_LPTIM1CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_LPTIM1CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSI)    || \\\n                                        ((SOURCE) == RCC_LPTIM1CLKSOURCE_CLKP))\n\n#define IS_RCC_LPTIM2CLK(SOURCE)       (((SOURCE) == RCC_LPTIM2CLKSOURCE_D3PCLK1)|| \\\n                                        ((SOURCE) == RCC_LPTIM2CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_LPTIM2CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_LPTIM2CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_LPTIM2CLKSOURCE_LSI)    || \\\n                                        ((SOURCE) == RCC_LPTIM2CLKSOURCE_CLKP))\n\n#define IS_RCC_LPTIM345CLK(SOURCE)     (((SOURCE) == RCC_LPTIM345CLKSOURCE_D3PCLK1)|| \\\n                                        ((SOURCE) == RCC_LPTIM345CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_LPTIM345CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_LPTIM345CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_LPTIM345CLKSOURCE_LSI)    || \\\n                                        ((SOURCE) == RCC_LPTIM345CLKSOURCE_CLKP))\n\n#define IS_RCC_LPTIM3CLK(SOURCE)       (((SOURCE) == RCC_LPTIM3CLKSOURCE_D3PCLK1)  || \\\n                                        ((SOURCE) == RCC_LPTIM3CLKSOURCE_PLL2)     || \\\n                                        ((SOURCE) == RCC_LPTIM3CLKSOURCE_PLL3)     || \\\n                                        ((SOURCE) == RCC_LPTIM3CLKSOURCE_LSE)      || \\\n                                        ((SOURCE) == RCC_LPTIM3CLKSOURCE_LSI)      || \\\n                                        ((SOURCE) == RCC_LPTIM3CLKSOURCE_CLKP))\n\n#if defined(LPTIM4)\n#define IS_RCC_LPTIM4CLK(SOURCE)       (((SOURCE) == RCC_LPTIM4CLKSOURCE_D3PCLK1)|| \\\n                                        ((SOURCE) == RCC_LPTIM4CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_LPTIM4CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_LPTIM4CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_LPTIM4CLKSOURCE_LSI)    || \\\n                                        ((SOURCE) == RCC_LPTIM4CLKSOURCE_CLKP))\n#endif /* LPTIM4*/\n\n#if defined(LPTIM5)\n#define IS_RCC_LPTIM5CLK(SOURCE)       (((SOURCE) == RCC_LPTIM5CLKSOURCE_D3PCLK1)|| \\\n                                        ((SOURCE) == RCC_LPTIM5CLKSOURCE_PLL2)   || \\\n                                        ((SOURCE) == RCC_LPTIM5CLKSOURCE_PLL3)   || \\\n                                        ((SOURCE) == RCC_LPTIM5CLKSOURCE_LSE)    || \\\n                                        ((SOURCE) == RCC_LPTIM5CLKSOURCE_LSI)    || \\\n                                        ((SOURCE) == RCC_LPTIM5CLKSOURCE_CLKP))\n#endif /*LPTIM5*/\n\n#if defined(QUADSPI)\n#define IS_RCC_QSPICLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_QSPICLKSOURCE_D1HCLK)  || \\\n                ((__SOURCE__) == RCC_QSPICLKSOURCE_PLL)     || \\\n                ((__SOURCE__) == RCC_QSPICLKSOURCE_PLL2)    || \\\n                ((__SOURCE__) == RCC_QSPICLKSOURCE_CLKP))\n#endif /*QUADSPI*/\n\n#if defined(OCTOSPI1) || defined(OCTOSPI1)\n#define IS_RCC_OSPICLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_OSPICLKSOURCE_D1HCLK)  || \\\n                ((__SOURCE__) == RCC_OSPICLKSOURCE_PLL)     || \\\n                ((__SOURCE__) == RCC_OSPICLKSOURCE_PLL2)    || \\\n                ((__SOURCE__) == RCC_OSPICLKSOURCE_CLKP))\n#endif /*OCTOSPI1 || OCTOSPI1*/\n\n#if defined(DSI)\n#define IS_RCC_DSICLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_DSICLKSOURCE_PHY)  || \\\n                ((__SOURCE__) == RCC_DSICLKSOURCE_PLL2))\n#endif /*DSI*/\n\n#define IS_RCC_FMCCLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_FMCCLKSOURCE_D1HCLK)  || \\\n                ((__SOURCE__) == RCC_FMCCLKSOURCE_PLL)     || \\\n                ((__SOURCE__) == RCC_FMCCLKSOURCE_PLL2)    || \\\n                ((__SOURCE__) == RCC_FMCCLKSOURCE_CLKP))\n\n#if defined(FDCAN1) || defined(FDCAN2)\n#define IS_RCC_FDCANCLK(__SOURCE__)   \\\n               (((__SOURCE__) == RCC_FDCANCLKSOURCE_HSE)  || \\\n                ((__SOURCE__) == RCC_FDCANCLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_FDCANCLKSOURCE_PLL2))\n#endif /*FDCAN1 || FDCAN2*/\n\n#define IS_RCC_SDMMC(__SOURCE__)   \\\n                (((__SOURCE__) == RCC_SDMMCCLKSOURCE_PLL)  || \\\n                ((__SOURCE__) == RCC_SDMMCCLKSOURCE_PLL2))\n\n#define IS_RCC_ADCCLKSOURCE(SOURCE)    (((SOURCE) == RCC_ADCCLKSOURCE_PLL2) || \\\n                                        ((SOURCE) == RCC_ADCCLKSOURCE_PLL3) || \\\n                                        ((SOURCE) == RCC_ADCCLKSOURCE_CLKP))\n\n#define IS_RCC_SWPMI1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SWPMI1CLKSOURCE_D2PCLK1) || \\\n                                        ((SOURCE) == RCC_SWPMI1CLKSOURCE_HSI))\n\n#define IS_RCC_DFSDM1CLKSOURCE(SOURCE)  (((SOURCE) == RCC_DFSDM1CLKSOURCE_D2PCLK1) || \\\n                                         ((SOURCE) == RCC_DFSDM1CLKSOURCE_SYS))\n\n#if defined(DFSDM2_BASE)\n#define IS_RCC_DFSDM2CLKSOURCE(SOURCE)  (((SOURCE) == RCC_DFSDM2CLKSOURCE_SRDPCLK1) || \\\n                                        ((SOURCE) == RCC_DFSDM2CLKSOURCE_SYS))\n#endif /*DFSDM2*/\n\n#define IS_RCC_SPDIFRXCLKSOURCE(SOURCE)(((SOURCE) == RCC_SPDIFRXCLKSOURCE_PLL)  || \\\n                                        ((SOURCE) == RCC_SPDIFRXCLKSOURCE_PLL2) || \\\n                                        ((SOURCE) == RCC_SPDIFRXCLKSOURCE_PLL3) || \\\n                                        ((SOURCE) == RCC_SPDIFRXCLKSOURCE_HSI))\n\n#define IS_RCC_CECCLKSOURCE(SOURCE)  (((SOURCE) == RCC_CECCLKSOURCE_LSE) || \\\n                                      ((SOURCE) == RCC_CECCLKSOURCE_LSI) || \\\n                                      ((SOURCE) == RCC_CECCLKSOURCE_CSI))\n\n#define IS_RCC_CLKPSOURCE(SOURCE)   (((SOURCE) == RCC_CLKPSOURCE_HSI)  || \\\n                                      ((SOURCE) == RCC_CLKPSOURCE_CSI) || \\\n                                      ((SOURCE) == RCC_CLKPSOURCE_HSE))\n#define IS_RCC_TIMPRES(VALUE)  \\\n               (((VALUE) == RCC_TIMPRES_DESACTIVATED) || \\\n                ((VALUE) == RCC_TIMPRES_ACTIVATED))\n\n#if defined(DUAL_CORE)\n#define IS_RCC_BOOT_CORE(CORE)   (((CORE) == RCC_BOOT_C1)  || \\\n                                  ((CORE) == RCC_BOOT_C2))\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n#define IS_RCC_SCOPE_WWDG(WWDG)   (((WWDG) == RCC_WWDG1)  || \\\n                                  ((WWDG) == RCC_WWDG2))\n#else\n#define IS_RCC_SCOPE_WWDG(WWDG)   ((WWDG) == RCC_WWDG1)\n\n#endif /*DUAL_CORE*/\n\n#define IS_RCC_CRS_SYNC_SOURCE(__SOURCE__) (((__SOURCE__) == RCC_CRS_SYNC_SOURCE_USB2) || \\\n                                            ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_LSE)  || \\\n                                            ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_USB1) || \\\n                                            ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_PIN))\n\n#define IS_RCC_CRS_SYNC_DIV(__DIV__)       (((__DIV__) == RCC_CRS_SYNC_DIV1)  || ((__DIV__) == RCC_CRS_SYNC_DIV2)  || \\\n                                            ((__DIV__) == RCC_CRS_SYNC_DIV4)  || ((__DIV__) == RCC_CRS_SYNC_DIV8)  || \\\n                                            ((__DIV__) == RCC_CRS_SYNC_DIV16) || ((__DIV__) == RCC_CRS_SYNC_DIV32) || \\\n                                            ((__DIV__) == RCC_CRS_SYNC_DIV64) || ((__DIV__) == RCC_CRS_SYNC_DIV128))\n\n#define IS_RCC_CRS_SYNC_POLARITY(__POLARITY__) (((__POLARITY__) == RCC_CRS_SYNC_POLARITY_RISING) || \\\n                                                ((__POLARITY__) == RCC_CRS_SYNC_POLARITY_FALLING))\n\n#define IS_RCC_CRS_RELOADVALUE(__VALUE__)  (((__VALUE__) <= 0xFFFFU))\n\n#define IS_RCC_CRS_ERRORLIMIT(__VALUE__)   (((__VALUE__) <= 0xFFU))\n\n#define IS_RCC_CRS_HSI48CALIBRATION(__VALUE__) (((__VALUE__) <= 0x3FU))\n\n#define IS_RCC_CRS_FREQERRORDIR(__DIR__)   (((__DIR__) == RCC_CRS_FREQERRORDIR_UP) || \\\n                                            ((__DIR__) == RCC_CRS_FREQERRORDIR_DOWN))\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_RCC_EX_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_tim.h\n  * @author  MCD Application Team\n  * @brief   Header file of TIM HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_TIM_H\n#define STM32H7xx_HAL_TIM_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup TIM\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup TIM_Exported_Types TIM Exported Types\n  * @{\n  */\n\n/**\n  * @brief  TIM Time base Configuration Structure definition\n  */\ntypedef struct\n{\n  uint32_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.\n                                   This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\n\n  uint32_t CounterMode;       /*!< Specifies the counter mode.\n                                   This parameter can be a value of @ref TIM_Counter_Mode */\n\n  uint32_t Period;            /*!< Specifies the period value to be loaded into the active\n                                   Auto-Reload Register at the next update event.\n                                   This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.  */\n\n  uint32_t ClockDivision;     /*!< Specifies the clock division.\n                                   This parameter can be a value of @ref TIM_ClockDivision */\n\n  uint32_t RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter\n                                    reaches zero, an update event is generated and counting restarts\n                                    from the RCR value (N).\n                                    This means in PWM mode that (N+1) corresponds to:\n                                        - the number of PWM periods in edge-aligned mode\n                                        - the number of half PWM period in center-aligned mode\n                                     GP timers: this parameter must be a number between Min_Data = 0x00 and\n                                     Max_Data = 0xFF.\n                                     Advanced timers: this parameter must be a number between Min_Data = 0x0000 and\n                                     Max_Data = 0xFFFF. */\n\n  uint32_t AutoReloadPreload;  /*!< Specifies the auto-reload preload.\n                                   This parameter can be a value of @ref TIM_AutoReloadPreload */\n} TIM_Base_InitTypeDef;\n\n/**\n  * @brief  TIM Output Compare Configuration Structure definition\n  */\ntypedef struct\n{\n  uint32_t OCMode;        /*!< Specifies the TIM mode.\n                               This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */\n\n  uint32_t Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.\n                               This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\n\n  uint32_t OCPolarity;    /*!< Specifies the output polarity.\n                               This parameter can be a value of @ref TIM_Output_Compare_Polarity */\n\n  uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.\n                               This parameter can be a value of @ref TIM_Output_Compare_N_Polarity\n                               @note This parameter is valid only for timer instances supporting break feature. */\n\n  uint32_t OCFastMode;    /*!< Specifies the Fast mode state.\n                               This parameter can be a value of @ref TIM_Output_Fast_State\n                               @note This parameter is valid only in PWM1 and PWM2 mode. */\n\n\n  uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.\n                               This parameter can be a value of @ref TIM_Output_Compare_Idle_State\n                               @note This parameter is valid only for timer instances supporting break feature. */\n\n  uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.\n                               This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State\n                               @note This parameter is valid only for timer instances supporting break feature. */\n} TIM_OC_InitTypeDef;\n\n/**\n  * @brief  TIM One Pulse Mode Configuration Structure definition\n  */\ntypedef struct\n{\n  uint32_t OCMode;        /*!< Specifies the TIM mode.\n                               This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */\n\n  uint32_t Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.\n                               This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\n\n  uint32_t OCPolarity;    /*!< Specifies the output polarity.\n                               This parameter can be a value of @ref TIM_Output_Compare_Polarity */\n\n  uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.\n                               This parameter can be a value of @ref TIM_Output_Compare_N_Polarity\n                               @note This parameter is valid only for timer instances supporting break feature. */\n\n  uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.\n                               This parameter can be a value of @ref TIM_Output_Compare_Idle_State\n                               @note This parameter is valid only for timer instances supporting break feature. */\n\n  uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.\n                               This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State\n                               @note This parameter is valid only for timer instances supporting break feature. */\n\n  uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.\n                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */\n\n  uint32_t ICSelection;   /*!< Specifies the input.\n                              This parameter can be a value of @ref TIM_Input_Capture_Selection */\n\n  uint32_t ICFilter;      /*!< Specifies the input capture filter.\n                              This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n} TIM_OnePulse_InitTypeDef;\n\n/**\n  * @brief  TIM Input Capture Configuration Structure definition\n  */\ntypedef struct\n{\n  uint32_t  ICPolarity;  /*!< Specifies the active edge of the input signal.\n                              This parameter can be a value of @ref TIM_Input_Capture_Polarity */\n\n  uint32_t ICSelection;  /*!< Specifies the input.\n                              This parameter can be a value of @ref TIM_Input_Capture_Selection */\n\n  uint32_t ICPrescaler;  /*!< Specifies the Input Capture Prescaler.\n                              This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\n\n  uint32_t ICFilter;     /*!< Specifies the input capture filter.\n                              This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n} TIM_IC_InitTypeDef;\n\n/**\n  * @brief  TIM Encoder Configuration Structure definition\n  */\ntypedef struct\n{\n  uint32_t EncoderMode;   /*!< Specifies the active edge of the input signal.\n                               This parameter can be a value of @ref TIM_Encoder_Mode */\n\n  uint32_t IC1Polarity;   /*!< Specifies the active edge of the input signal.\n                               This parameter can be a value of @ref TIM_Encoder_Input_Polarity */\n\n  uint32_t IC1Selection;  /*!< Specifies the input.\n                               This parameter can be a value of @ref TIM_Input_Capture_Selection */\n\n  uint32_t IC1Prescaler;  /*!< Specifies the Input Capture Prescaler.\n                               This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\n\n  uint32_t IC1Filter;     /*!< Specifies the input capture filter.\n                               This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n\n  uint32_t IC2Polarity;   /*!< Specifies the active edge of the input signal.\n                               This parameter can be a value of @ref TIM_Encoder_Input_Polarity */\n\n  uint32_t IC2Selection;  /*!< Specifies the input.\n                              This parameter can be a value of @ref TIM_Input_Capture_Selection */\n\n  uint32_t IC2Prescaler;  /*!< Specifies the Input Capture Prescaler.\n                               This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\n\n  uint32_t IC2Filter;     /*!< Specifies the input capture filter.\n                               This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n} TIM_Encoder_InitTypeDef;\n\n/**\n  * @brief  Clock Configuration Handle Structure definition\n  */\ntypedef struct\n{\n  uint32_t ClockSource;     /*!< TIM clock sources\n                                 This parameter can be a value of @ref TIM_Clock_Source */\n  uint32_t ClockPolarity;   /*!< TIM clock polarity\n                                 This parameter can be a value of @ref TIM_Clock_Polarity */\n  uint32_t ClockPrescaler;  /*!< TIM clock prescaler\n                                 This parameter can be a value of @ref TIM_Clock_Prescaler */\n  uint32_t ClockFilter;     /*!< TIM clock filter\n                                 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n} TIM_ClockConfigTypeDef;\n\n/**\n  * @brief  TIM Clear Input Configuration Handle Structure definition\n  */\ntypedef struct\n{\n  uint32_t ClearInputState;      /*!< TIM clear Input state\n                                      This parameter can be ENABLE or DISABLE */\n  uint32_t ClearInputSource;     /*!< TIM clear Input sources\n                                      This parameter can be a value of @ref TIM_ClearInput_Source */\n  uint32_t ClearInputPolarity;   /*!< TIM Clear Input polarity\n                                      This parameter can be a value of @ref TIM_ClearInput_Polarity */\n  uint32_t ClearInputPrescaler;  /*!< TIM Clear Input prescaler\n                                      This parameter must be 0: When OCRef clear feature is used with ETR source,\n                                      ETR prescaler must be off */\n  uint32_t ClearInputFilter;     /*!< TIM Clear Input filter\n                                      This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n} TIM_ClearInputConfigTypeDef;\n\n/**\n  * @brief  TIM Master configuration Structure definition\n  * @note   Advanced timers provide TRGO2 internal line which is redirected\n  *         to the ADC\n  */\ntypedef struct\n{\n  uint32_t  MasterOutputTrigger;   /*!< Trigger output (TRGO) selection\n                                        This parameter can be a value of @ref TIM_Master_Mode_Selection */\n  uint32_t  MasterOutputTrigger2;  /*!< Trigger output2 (TRGO2) selection\n                                        This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */\n  uint32_t  MasterSlaveMode;       /*!< Master/slave mode selection\n                                        This parameter can be a value of @ref TIM_Master_Slave_Mode\n                                        @note When the Master/slave mode is enabled, the effect of\n                                        an event on the trigger input (TRGI) is delayed to allow a\n                                        perfect synchronization between the current timer and its\n                                        slaves (through TRGO). It is not mandatory in case of timer\n                                        synchronization mode. */\n} TIM_MasterConfigTypeDef;\n\n/**\n  * @brief  TIM Slave configuration Structure definition\n  */\ntypedef struct\n{\n  uint32_t  SlaveMode;         /*!< Slave mode selection\n                                    This parameter can be a value of @ref TIM_Slave_Mode */\n  uint32_t  InputTrigger;      /*!< Input Trigger source\n                                    This parameter can be a value of @ref TIM_Trigger_Selection */\n  uint32_t  TriggerPolarity;   /*!< Input Trigger polarity\n                                    This parameter can be a value of @ref TIM_Trigger_Polarity */\n  uint32_t  TriggerPrescaler;  /*!< Input trigger prescaler\n                                    This parameter can be a value of @ref TIM_Trigger_Prescaler */\n  uint32_t  TriggerFilter;     /*!< Input trigger filter\n                                    This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF  */\n\n} TIM_SlaveConfigTypeDef;\n\n/**\n  * @brief  TIM Break input(s) and Dead time configuration Structure definition\n  * @note   2 break inputs can be configured (BKIN and BKIN2) with configurable\n  *        filter and polarity.\n  */\ntypedef struct\n{\n  uint32_t OffStateRunMode;      /*!< TIM off state in run mode, This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */\n\n  uint32_t OffStateIDLEMode;     /*!< TIM off state in IDLE mode, This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */\n\n  uint32_t LockLevel;            /*!< TIM Lock level, This parameter can be a value of @ref TIM_Lock_level */\n\n  uint32_t DeadTime;             /*!< TIM dead Time, This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */\n\n  uint32_t BreakState;           /*!< TIM Break State, This parameter can be a value of @ref TIM_Break_Input_enable_disable */\n\n  uint32_t BreakPolarity;        /*!< TIM Break input polarity, This parameter can be a value of @ref TIM_Break_Polarity */\n\n  uint32_t BreakFilter;          /*!< Specifies the break input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n\n#if defined(TIM_BDTR_BKBID)\n  uint32_t BreakAFMode;          /*!< Specifies the alternate function mode of the break input.This parameter can be a value of @ref TIM_Break_Input_AF_Mode */\n\n#endif /* TIM_BDTR_BKBID */\n  uint32_t Break2State;          /*!< TIM Break2 State, This parameter can be a value of @ref TIM_Break2_Input_enable_disable */\n\n  uint32_t Break2Polarity;       /*!< TIM Break2 input polarity, This parameter can be a value of @ref TIM_Break2_Polarity */\n\n  uint32_t Break2Filter;         /*!< TIM break2 input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n\n#if defined(TIM_BDTR_BKBID)\n  uint32_t Break2AFMode;         /*!< Specifies the alternate function mode of the break2 input.This parameter can be a value of @ref TIM_Break2_Input_AF_Mode */\n\n#endif /* TIM_BDTR_BKBID */\n  uint32_t AutomaticOutput;      /*!< TIM Automatic Output Enable state, This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */\n\n} TIM_BreakDeadTimeConfigTypeDef;\n\n/**\n  * @brief  HAL State structures definition\n  */\ntypedef enum\n{\n  HAL_TIM_STATE_RESET             = 0x00U,    /*!< Peripheral not yet initialized or disabled  */\n  HAL_TIM_STATE_READY             = 0x01U,    /*!< Peripheral Initialized and ready for use    */\n  HAL_TIM_STATE_BUSY              = 0x02U,    /*!< An internal process is ongoing              */\n  HAL_TIM_STATE_TIMEOUT           = 0x03U,    /*!< Timeout state                               */\n  HAL_TIM_STATE_ERROR             = 0x04U     /*!< Reception process is ongoing                */\n} HAL_TIM_StateTypeDef;\n\n/**\n  * @brief  TIM Channel States definition\n  */\ntypedef enum\n{\n  HAL_TIM_CHANNEL_STATE_RESET             = 0x00U,    /*!< TIM Channel initial state                         */\n  HAL_TIM_CHANNEL_STATE_READY             = 0x01U,    /*!< TIM Channel ready for use                         */\n  HAL_TIM_CHANNEL_STATE_BUSY              = 0x02U,    /*!< An internal process is ongoing on the TIM channel */\n} HAL_TIM_ChannelStateTypeDef;\n\n/**\n  * @brief  DMA Burst States definition\n  */\ntypedef enum\n{\n  HAL_DMA_BURST_STATE_RESET             = 0x00U,    /*!< DMA Burst initial state */\n  HAL_DMA_BURST_STATE_READY             = 0x01U,    /*!< DMA Burst ready for use */\n  HAL_DMA_BURST_STATE_BUSY              = 0x02U,    /*!< Ongoing DMA Burst       */\n} HAL_TIM_DMABurstStateTypeDef;\n\n/**\n  * @brief  HAL Active channel structures definition\n  */\ntypedef enum\n{\n  HAL_TIM_ACTIVE_CHANNEL_1        = 0x01U,    /*!< The active channel is 1     */\n  HAL_TIM_ACTIVE_CHANNEL_2        = 0x02U,    /*!< The active channel is 2     */\n  HAL_TIM_ACTIVE_CHANNEL_3        = 0x04U,    /*!< The active channel is 3     */\n  HAL_TIM_ACTIVE_CHANNEL_4        = 0x08U,    /*!< The active channel is 4     */\n  HAL_TIM_ACTIVE_CHANNEL_5        = 0x10U,    /*!< The active channel is 5     */\n  HAL_TIM_ACTIVE_CHANNEL_6        = 0x20U,    /*!< The active channel is 6     */\n  HAL_TIM_ACTIVE_CHANNEL_CLEARED  = 0x00U     /*!< All active channels cleared */\n} HAL_TIM_ActiveChannel;\n\n/**\n  * @brief  TIM Time Base Handle Structure definition\n  */\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\ntypedef struct __TIM_HandleTypeDef\n#else\ntypedef struct\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n{\n  TIM_TypeDef                        *Instance;         /*!< Register base address                             */\n  TIM_Base_InitTypeDef               Init;              /*!< TIM Time Base required parameters                 */\n  HAL_TIM_ActiveChannel              Channel;           /*!< Active channel                                    */\n  DMA_HandleTypeDef                  *hdma[7];          /*!< DMA Handlers array\n                                                             This array is accessed by a @ref DMA_Handle_index */\n  HAL_LockTypeDef                    Lock;              /*!< Locking object                                    */\n  __IO HAL_TIM_StateTypeDef          State;             /*!< TIM operation state                               */\n  __IO HAL_TIM_ChannelStateTypeDef   ChannelState[6];   /*!< TIM channel operation state                       */\n  __IO HAL_TIM_ChannelStateTypeDef   ChannelNState[4];  /*!< TIM complementary channel operation state         */\n  __IO HAL_TIM_DMABurstStateTypeDef  DMABurstState;     /*!< DMA burst operation state                         */\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim);              /*!< TIM Base Msp Init Callback                              */\n  void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);            /*!< TIM Base Msp DeInit Callback                            */\n  void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim);                /*!< TIM IC Msp Init Callback                                */\n  void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);              /*!< TIM IC Msp DeInit Callback                              */\n  void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim);                /*!< TIM OC Msp Init Callback                                */\n  void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);              /*!< TIM OC Msp DeInit Callback                              */\n  void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim);               /*!< TIM PWM Msp Init Callback                               */\n  void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);             /*!< TIM PWM Msp DeInit Callback                             */\n  void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim);          /*!< TIM One Pulse Msp Init Callback                         */\n  void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);        /*!< TIM One Pulse Msp DeInit Callback                       */\n  void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim);           /*!< TIM Encoder Msp Init Callback                           */\n  void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);         /*!< TIM Encoder Msp DeInit Callback                         */\n  void (* HallSensor_MspInitCallback)(struct __TIM_HandleTypeDef *htim);        /*!< TIM Hall Sensor Msp Init Callback                       */\n  void (* HallSensor_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);      /*!< TIM Hall Sensor Msp DeInit Callback                     */\n  void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim);             /*!< TIM Period Elapsed Callback                             */\n  void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);     /*!< TIM Period Elapsed half complete Callback               */\n  void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim);                   /*!< TIM Trigger Callback                                    */\n  void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);           /*!< TIM Trigger half complete Callback                      */\n  void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim);                /*!< TIM Input Capture Callback                              */\n  void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);        /*!< TIM Input Capture half complete Callback                */\n  void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim);           /*!< TIM Output Compare Delay Elapsed Callback               */\n  void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim);         /*!< TIM PWM Pulse Finished Callback                         */\n  void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished half complete Callback           */\n  void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim);                     /*!< TIM Error Callback                                      */\n  void (* CommutationCallback)(struct __TIM_HandleTypeDef *htim);               /*!< TIM Commutation Callback                                */\n  void (* CommutationHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);       /*!< TIM Commutation half complete Callback                  */\n  void (* BreakCallback)(struct __TIM_HandleTypeDef *htim);                     /*!< TIM Break Callback                                      */\n  void (* Break2Callback)(struct __TIM_HandleTypeDef *htim);                    /*!< TIM Break2 Callback                                     */\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n} TIM_HandleTypeDef;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n/**\n  * @brief  HAL TIM Callback ID enumeration definition\n  */\ntypedef enum\n{\n  HAL_TIM_BASE_MSPINIT_CB_ID              = 0x00U   /*!< TIM Base MspInit Callback ID                              */\n  , HAL_TIM_BASE_MSPDEINIT_CB_ID          = 0x01U   /*!< TIM Base MspDeInit Callback ID                            */\n  , HAL_TIM_IC_MSPINIT_CB_ID              = 0x02U   /*!< TIM IC MspInit Callback ID                                */\n  , HAL_TIM_IC_MSPDEINIT_CB_ID            = 0x03U   /*!< TIM IC MspDeInit Callback ID                              */\n  , HAL_TIM_OC_MSPINIT_CB_ID              = 0x04U   /*!< TIM OC MspInit Callback ID                                */\n  , HAL_TIM_OC_MSPDEINIT_CB_ID            = 0x05U   /*!< TIM OC MspDeInit Callback ID                              */\n  , HAL_TIM_PWM_MSPINIT_CB_ID             = 0x06U   /*!< TIM PWM MspInit Callback ID                               */\n  , HAL_TIM_PWM_MSPDEINIT_CB_ID           = 0x07U   /*!< TIM PWM MspDeInit Callback ID                             */\n  , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID       = 0x08U   /*!< TIM One Pulse MspInit Callback ID                         */\n  , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID     = 0x09U   /*!< TIM One Pulse MspDeInit Callback ID                       */\n  , HAL_TIM_ENCODER_MSPINIT_CB_ID         = 0x0AU   /*!< TIM Encoder MspInit Callback ID                           */\n  , HAL_TIM_ENCODER_MSPDEINIT_CB_ID       = 0x0BU   /*!< TIM Encoder MspDeInit Callback ID                         */\n  , HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID     = 0x0CU   /*!< TIM Hall Sensor MspDeInit Callback ID                     */\n  , HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID   = 0x0DU   /*!< TIM Hall Sensor MspDeInit Callback ID                     */\n  , HAL_TIM_PERIOD_ELAPSED_CB_ID          = 0x0EU   /*!< TIM Period Elapsed Callback ID                             */\n  , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID     = 0x0FU   /*!< TIM Period Elapsed half complete Callback ID               */\n  , HAL_TIM_TRIGGER_CB_ID                 = 0x10U   /*!< TIM Trigger Callback ID                                    */\n  , HAL_TIM_TRIGGER_HALF_CB_ID            = 0x11U   /*!< TIM Trigger half complete Callback ID                      */\n\n  , HAL_TIM_IC_CAPTURE_CB_ID              = 0x12U   /*!< TIM Input Capture Callback ID                              */\n  , HAL_TIM_IC_CAPTURE_HALF_CB_ID         = 0x13U   /*!< TIM Input Capture half complete Callback ID                */\n  , HAL_TIM_OC_DELAY_ELAPSED_CB_ID        = 0x14U   /*!< TIM Output Compare Delay Elapsed Callback ID               */\n  , HAL_TIM_PWM_PULSE_FINISHED_CB_ID      = 0x15U   /*!< TIM PWM Pulse Finished Callback ID           */\n  , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U   /*!< TIM PWM Pulse Finished half complete Callback ID           */\n  , HAL_TIM_ERROR_CB_ID                   = 0x17U   /*!< TIM Error Callback ID                                      */\n  , HAL_TIM_COMMUTATION_CB_ID             = 0x18U   /*!< TIM Commutation Callback ID                                */\n  , HAL_TIM_COMMUTATION_HALF_CB_ID        = 0x19U   /*!< TIM Commutation half complete Callback ID                  */\n  , HAL_TIM_BREAK_CB_ID                   = 0x1AU   /*!< TIM Break Callback ID                                      */\n  , HAL_TIM_BREAK2_CB_ID                  = 0x1BU   /*!< TIM Break2 Callback ID                                     */\n} HAL_TIM_CallbackIDTypeDef;\n\n/**\n  * @brief  HAL TIM Callback pointer definition\n  */\ntypedef  void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim);  /*!< pointer to the TIM callback function */\n\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n/* End of exported types -----------------------------------------------------*/\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup TIM_Exported_Constants TIM Exported Constants\n  * @{\n  */\n\n/** @defgroup TIM_ClearInput_Source TIM Clear Input Source\n  * @{\n  */\n#define TIM_CLEARINPUTSOURCE_NONE           0x00000000U   /*!< OCREF_CLR is disabled */\n#define TIM_CLEARINPUTSOURCE_ETR            0x00000001U   /*!< OCREF_CLR is connected to ETRF input */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_DMA_Base_address TIM DMA Base Address\n  * @{\n  */\n#define TIM_DMABASE_CR1                    0x00000000U\n#define TIM_DMABASE_CR2                    0x00000001U\n#define TIM_DMABASE_SMCR                   0x00000002U\n#define TIM_DMABASE_DIER                   0x00000003U\n#define TIM_DMABASE_SR                     0x00000004U\n#define TIM_DMABASE_EGR                    0x00000005U\n#define TIM_DMABASE_CCMR1                  0x00000006U\n#define TIM_DMABASE_CCMR2                  0x00000007U\n#define TIM_DMABASE_CCER                   0x00000008U\n#define TIM_DMABASE_CNT                    0x00000009U\n#define TIM_DMABASE_PSC                    0x0000000AU\n#define TIM_DMABASE_ARR                    0x0000000BU\n#define TIM_DMABASE_RCR                    0x0000000CU\n#define TIM_DMABASE_CCR1                   0x0000000DU\n#define TIM_DMABASE_CCR2                   0x0000000EU\n#define TIM_DMABASE_CCR3                   0x0000000FU\n#define TIM_DMABASE_CCR4                   0x00000010U\n#define TIM_DMABASE_BDTR                   0x00000011U\n#define TIM_DMABASE_DCR                    0x00000012U\n#define TIM_DMABASE_DMAR                   0x00000013U\n#define TIM_DMABASE_CCMR3                  0x00000015U\n#define TIM_DMABASE_CCR5                   0x00000016U\n#define TIM_DMABASE_CCR6                   0x00000017U\n#if   defined(TIM_BREAK_INPUT_SUPPORT)\n#define TIM_DMABASE_AF1                    0x00000018U\n#define TIM_DMABASE_AF2                    0x00000019U\n#endif /* TIM_BREAK_INPUT_SUPPORT */\n#define TIM_DMABASE_TISEL                  0x0000001AU\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Event_Source TIM Event Source\n  * @{\n  */\n#define TIM_EVENTSOURCE_UPDATE              TIM_EGR_UG     /*!< Reinitialize the counter and generates an update of the registers */\n#define TIM_EVENTSOURCE_CC1                 TIM_EGR_CC1G   /*!< A capture/compare event is generated on channel 1 */\n#define TIM_EVENTSOURCE_CC2                 TIM_EGR_CC2G   /*!< A capture/compare event is generated on channel 2 */\n#define TIM_EVENTSOURCE_CC3                 TIM_EGR_CC3G   /*!< A capture/compare event is generated on channel 3 */\n#define TIM_EVENTSOURCE_CC4                 TIM_EGR_CC4G   /*!< A capture/compare event is generated on channel 4 */\n#define TIM_EVENTSOURCE_COM                 TIM_EGR_COMG   /*!< A commutation event is generated */\n#define TIM_EVENTSOURCE_TRIGGER             TIM_EGR_TG     /*!< A trigger event is generated */\n#define TIM_EVENTSOURCE_BREAK               TIM_EGR_BG     /*!< A break event is generated */\n#define TIM_EVENTSOURCE_BREAK2              TIM_EGR_B2G    /*!< A break 2 event is generated */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Input_Channel_Polarity TIM Input Channel polarity\n  * @{\n  */\n#define  TIM_INPUTCHANNELPOLARITY_RISING      0x00000000U                       /*!< Polarity for TIx source */\n#define  TIM_INPUTCHANNELPOLARITY_FALLING     TIM_CCER_CC1P                     /*!< Polarity for TIx source */\n#define  TIM_INPUTCHANNELPOLARITY_BOTHEDGE    (TIM_CCER_CC1P | TIM_CCER_CC1NP)  /*!< Polarity for TIx source */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_ETR_Polarity TIM ETR Polarity\n  * @{\n  */\n#define TIM_ETRPOLARITY_INVERTED              TIM_SMCR_ETP                      /*!< Polarity for ETR source */\n#define TIM_ETRPOLARITY_NONINVERTED           0x00000000U                       /*!< Polarity for ETR source */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler\n  * @{\n  */\n#define TIM_ETRPRESCALER_DIV1                 0x00000000U                       /*!< No prescaler is used */\n#define TIM_ETRPRESCALER_DIV2                 TIM_SMCR_ETPS_0                   /*!< ETR input source is divided by 2 */\n#define TIM_ETRPRESCALER_DIV4                 TIM_SMCR_ETPS_1                   /*!< ETR input source is divided by 4 */\n#define TIM_ETRPRESCALER_DIV8                 TIM_SMCR_ETPS                     /*!< ETR input source is divided by 8 */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Counter_Mode TIM Counter Mode\n  * @{\n  */\n#define TIM_COUNTERMODE_UP                 0x00000000U                          /*!< Counter used as up-counter   */\n#define TIM_COUNTERMODE_DOWN               TIM_CR1_DIR                          /*!< Counter used as down-counter */\n#define TIM_COUNTERMODE_CENTERALIGNED1     TIM_CR1_CMS_0                        /*!< Center-aligned mode 1        */\n#define TIM_COUNTERMODE_CENTERALIGNED2     TIM_CR1_CMS_1                        /*!< Center-aligned mode 2        */\n#define TIM_COUNTERMODE_CENTERALIGNED3     TIM_CR1_CMS                          /*!< Center-aligned mode 3        */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Update_Interrupt_Flag_Remap TIM Update Interrupt Flag Remap\n  * @{\n  */\n#define TIM_UIFREMAP_DISABLE               0x00000000U                          /*!< Update interrupt flag remap disabled */\n#define TIM_UIFREMAP_ENABLE                TIM_CR1_UIFREMAP                     /*!< Update interrupt flag remap enabled */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_ClockDivision TIM Clock Division\n  * @{\n  */\n#define TIM_CLOCKDIVISION_DIV1             0x00000000U                          /*!< Clock division: tDTS=tCK_INT   */\n#define TIM_CLOCKDIVISION_DIV2             TIM_CR1_CKD_0                        /*!< Clock division: tDTS=2*tCK_INT */\n#define TIM_CLOCKDIVISION_DIV4             TIM_CR1_CKD_1                        /*!< Clock division: tDTS=4*tCK_INT */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Compare_State TIM Output Compare State\n  * @{\n  */\n#define TIM_OUTPUTSTATE_DISABLE            0x00000000U                          /*!< Capture/Compare 1 output disabled */\n#define TIM_OUTPUTSTATE_ENABLE             TIM_CCER_CC1E                        /*!< Capture/Compare 1 output enabled */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_AutoReloadPreload TIM Auto-Reload Preload\n  * @{\n  */\n#define TIM_AUTORELOAD_PRELOAD_DISABLE                0x00000000U               /*!< TIMx_ARR register is not buffered */\n#define TIM_AUTORELOAD_PRELOAD_ENABLE                 TIM_CR1_ARPE              /*!< TIMx_ARR register is buffered */\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Fast_State TIM Output Fast State\n  * @{\n  */\n#define TIM_OCFAST_DISABLE                 0x00000000U                          /*!< Output Compare fast disable */\n#define TIM_OCFAST_ENABLE                  TIM_CCMR1_OC1FE                      /*!< Output Compare fast enable  */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State\n  * @{\n  */\n#define TIM_OUTPUTNSTATE_DISABLE           0x00000000U                          /*!< OCxN is disabled  */\n#define TIM_OUTPUTNSTATE_ENABLE            TIM_CCER_CC1NE                       /*!< OCxN is enabled   */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity\n  * @{\n  */\n#define TIM_OCPOLARITY_HIGH                0x00000000U                          /*!< Capture/Compare output polarity  */\n#define TIM_OCPOLARITY_LOW                 TIM_CCER_CC1P                        /*!< Capture/Compare output polarity  */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Compare_N_Polarity TIM Complementary Output Compare Polarity\n  * @{\n  */\n#define TIM_OCNPOLARITY_HIGH               0x00000000U                          /*!< Capture/Compare complementary output polarity */\n#define TIM_OCNPOLARITY_LOW                TIM_CCER_CC1NP                       /*!< Capture/Compare complementary output polarity */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Compare_Idle_State TIM Output Compare Idle State\n  * @{\n  */\n#define TIM_OCIDLESTATE_SET                TIM_CR2_OIS1                         /*!< Output Idle state: OCx=1 when MOE=0 */\n#define TIM_OCIDLESTATE_RESET              0x00000000U                          /*!< Output Idle state: OCx=0 when MOE=0 */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Compare_N_Idle_State TIM Complementary Output Compare Idle State\n  * @{\n  */\n#define TIM_OCNIDLESTATE_SET               TIM_CR2_OIS1N                        /*!< Complementary output Idle state: OCxN=1 when MOE=0 */\n#define TIM_OCNIDLESTATE_RESET             0x00000000U                          /*!< Complementary output Idle state: OCxN=0 when MOE=0 */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity\n  * @{\n  */\n#define  TIM_ICPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING      /*!< Capture triggered by rising edge on timer input                  */\n#define  TIM_ICPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING     /*!< Capture triggered by falling edge on timer input                 */\n#define  TIM_ICPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE    /*!< Capture triggered by both rising and falling edges on timer input*/\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity\n  * @{\n  */\n#define  TIM_ENCODERINPUTPOLARITY_RISING   TIM_INPUTCHANNELPOLARITY_RISING      /*!< Encoder input with rising edge polarity  */\n#define  TIM_ENCODERINPUTPOLARITY_FALLING  TIM_INPUTCHANNELPOLARITY_FALLING     /*!< Encoder input with falling edge polarity */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection\n  * @{\n  */\n#define TIM_ICSELECTION_DIRECTTI           TIM_CCMR1_CC1S_0                     /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively */\n#define TIM_ICSELECTION_INDIRECTTI         TIM_CCMR1_CC1S_1                     /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC2, IC1, IC4 or IC3, respectively */\n#define TIM_ICSELECTION_TRC                TIM_CCMR1_CC1S                       /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler\n  * @{\n  */\n#define TIM_ICPSC_DIV1                     0x00000000U                          /*!< Capture performed each time an edge is detected on the capture input */\n#define TIM_ICPSC_DIV2                     TIM_CCMR1_IC1PSC_0                   /*!< Capture performed once every 2 events                                */\n#define TIM_ICPSC_DIV4                     TIM_CCMR1_IC1PSC_1                   /*!< Capture performed once every 4 events                                */\n#define TIM_ICPSC_DIV8                     TIM_CCMR1_IC1PSC                     /*!< Capture performed once every 8 events                                */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode\n  * @{\n  */\n#define TIM_OPMODE_SINGLE                  TIM_CR1_OPM                          /*!< Counter stops counting at the next update event */\n#define TIM_OPMODE_REPETITIVE              0x00000000U                          /*!< Counter is not stopped at update event          */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Encoder_Mode TIM Encoder Mode\n  * @{\n  */\n#define TIM_ENCODERMODE_TI1                      TIM_SMCR_SMS_0                                                      /*!< Quadrature encoder mode 1, x2 mode, counts up/down on TI1FP1 edge depending on TI2FP2 level  */\n#define TIM_ENCODERMODE_TI2                      TIM_SMCR_SMS_1                                                      /*!< Quadrature encoder mode 2, x2 mode, counts up/down on TI2FP2 edge depending on TI1FP1 level. */\n#define TIM_ENCODERMODE_TI12                     (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)                                   /*!< Quadrature encoder mode 3, x4 mode, counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Interrupt_definition TIM interrupt Definition\n  * @{\n  */\n#define TIM_IT_UPDATE                      TIM_DIER_UIE                         /*!< Update interrupt            */\n#define TIM_IT_CC1                         TIM_DIER_CC1IE                       /*!< Capture/Compare 1 interrupt */\n#define TIM_IT_CC2                         TIM_DIER_CC2IE                       /*!< Capture/Compare 2 interrupt */\n#define TIM_IT_CC3                         TIM_DIER_CC3IE                       /*!< Capture/Compare 3 interrupt */\n#define TIM_IT_CC4                         TIM_DIER_CC4IE                       /*!< Capture/Compare 4 interrupt */\n#define TIM_IT_COM                         TIM_DIER_COMIE                       /*!< Commutation interrupt       */\n#define TIM_IT_TRIGGER                     TIM_DIER_TIE                         /*!< Trigger interrupt           */\n#define TIM_IT_BREAK                       TIM_DIER_BIE                         /*!< Break interrupt             */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Commutation_Source  TIM Commutation Source\n  * @{\n  */\n#define TIM_COMMUTATION_TRGI              TIM_CR2_CCUS                          /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit or when an rising edge occurs on trigger input */\n#define TIM_COMMUTATION_SOFTWARE          0x00000000U                           /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_DMA_sources TIM DMA Sources\n  * @{\n  */\n#define TIM_DMA_UPDATE                     TIM_DIER_UDE                         /*!< DMA request is triggered by the update event */\n#define TIM_DMA_CC1                        TIM_DIER_CC1DE                       /*!< DMA request is triggered by the capture/compare macth 1 event */\n#define TIM_DMA_CC2                        TIM_DIER_CC2DE                       /*!< DMA request is triggered by the capture/compare macth 2 event event */\n#define TIM_DMA_CC3                        TIM_DIER_CC3DE                       /*!< DMA request is triggered by the capture/compare macth 3 event event */\n#define TIM_DMA_CC4                        TIM_DIER_CC4DE                       /*!< DMA request is triggered by the capture/compare macth 4 event event */\n#define TIM_DMA_COM                        TIM_DIER_COMDE                       /*!< DMA request is triggered by the commutation event */\n#define TIM_DMA_TRIGGER                    TIM_DIER_TDE                         /*!< DMA request is triggered by the trigger event */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_CC_DMA_Request CCx DMA request selection\n  * @{\n  */\n#define TIM_CCDMAREQUEST_CC                 0x00000000U                         /*!< CCx DMA request sent when capture or compare match event occurs */\n#define TIM_CCDMAREQUEST_UPDATE             TIM_CR2_CCDS                        /*!< CCx DMA requests sent when update event occurs */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Flag_definition TIM Flag Definition\n  * @{\n  */\n#define TIM_FLAG_UPDATE                    TIM_SR_UIF                           /*!< Update interrupt flag         */\n#define TIM_FLAG_CC1                       TIM_SR_CC1IF                         /*!< Capture/Compare 1 interrupt flag */\n#define TIM_FLAG_CC2                       TIM_SR_CC2IF                         /*!< Capture/Compare 2 interrupt flag */\n#define TIM_FLAG_CC3                       TIM_SR_CC3IF                         /*!< Capture/Compare 3 interrupt flag */\n#define TIM_FLAG_CC4                       TIM_SR_CC4IF                         /*!< Capture/Compare 4 interrupt flag */\n#define TIM_FLAG_CC5                       TIM_SR_CC5IF                         /*!< Capture/Compare 5 interrupt flag */\n#define TIM_FLAG_CC6                       TIM_SR_CC6IF                         /*!< Capture/Compare 6 interrupt flag */\n#define TIM_FLAG_COM                       TIM_SR_COMIF                         /*!< Commutation interrupt flag    */\n#define TIM_FLAG_TRIGGER                   TIM_SR_TIF                           /*!< Trigger interrupt flag        */\n#define TIM_FLAG_BREAK                     TIM_SR_BIF                           /*!< Break interrupt flag          */\n#define TIM_FLAG_BREAK2                    TIM_SR_B2IF                          /*!< Break 2 interrupt flag        */\n#define TIM_FLAG_SYSTEM_BREAK              TIM_SR_SBIF                          /*!< System Break interrupt flag   */\n#define TIM_FLAG_CC1OF                     TIM_SR_CC1OF                         /*!< Capture 1 overcapture flag    */\n#define TIM_FLAG_CC2OF                     TIM_SR_CC2OF                         /*!< Capture 2 overcapture flag    */\n#define TIM_FLAG_CC3OF                     TIM_SR_CC3OF                         /*!< Capture 3 overcapture flag    */\n#define TIM_FLAG_CC4OF                     TIM_SR_CC4OF                         /*!< Capture 4 overcapture flag    */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Channel TIM Channel\n  * @{\n  */\n#define TIM_CHANNEL_1                      0x00000000U                          /*!< Capture/compare channel 1 identifier      */\n#define TIM_CHANNEL_2                      0x00000004U                          /*!< Capture/compare channel 2 identifier      */\n#define TIM_CHANNEL_3                      0x00000008U                          /*!< Capture/compare channel 3 identifier      */\n#define TIM_CHANNEL_4                      0x0000000CU                          /*!< Capture/compare channel 4 identifier      */\n#define TIM_CHANNEL_5                      0x00000010U                          /*!< Compare channel 5 identifier              */\n#define TIM_CHANNEL_6                      0x00000014U                          /*!< Compare channel 6 identifier              */\n#define TIM_CHANNEL_ALL                    0x0000003CU                          /*!< Global Capture/compare channel identifier  */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Clock_Source TIM Clock Source\n  * @{\n  */\n#define TIM_CLOCKSOURCE_INTERNAL    TIM_SMCR_ETPS_0      /*!< Internal clock source                                 */\n#define TIM_CLOCKSOURCE_ETRMODE1    TIM_TS_ETRF          /*!< External clock source mode 1 (ETRF)                   */\n#define TIM_CLOCKSOURCE_ETRMODE2    TIM_SMCR_ETPS_1      /*!< External clock source mode 2                          */\n#define TIM_CLOCKSOURCE_TI1ED       TIM_TS_TI1F_ED       /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */\n#define TIM_CLOCKSOURCE_TI1         TIM_TS_TI1FP1        /*!< External clock source mode 1 (TTI1FP1)                */\n#define TIM_CLOCKSOURCE_TI2         TIM_TS_TI2FP2        /*!< External clock source mode 1 (TTI2FP2)                */\n#define TIM_CLOCKSOURCE_ITR0        TIM_TS_ITR0          /*!< External clock source mode 1 (ITR0)                   */\n#define TIM_CLOCKSOURCE_ITR1        TIM_TS_ITR1          /*!< External clock source mode 1 (ITR1)                   */\n#define TIM_CLOCKSOURCE_ITR2        TIM_TS_ITR2          /*!< External clock source mode 1 (ITR2)                   */\n#define TIM_CLOCKSOURCE_ITR3        TIM_TS_ITR3          /*!< External clock source mode 1 (ITR3)                   */\n#define TIM_CLOCKSOURCE_ITR4        TIM_TS_ITR4          /*!< External clock source mode 1 (ITR4)                   */\n#define TIM_CLOCKSOURCE_ITR5        TIM_TS_ITR5          /*!< External clock source mode 1 (ITR5)                   */\n#define TIM_CLOCKSOURCE_ITR6        TIM_TS_ITR6          /*!< External clock source mode 1 (ITR6)                   */\n#define TIM_CLOCKSOURCE_ITR7        TIM_TS_ITR7          /*!< External clock source mode 1 (ITR7)                   */\n#define TIM_CLOCKSOURCE_ITR8        TIM_TS_ITR8          /*!< External clock source mode 1 (ITR8)                   */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Clock_Polarity TIM Clock Polarity\n  * @{\n  */\n#define TIM_CLOCKPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED           /*!< Polarity for ETRx clock sources */\n#define TIM_CLOCKPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED        /*!< Polarity for ETRx clock sources */\n#define TIM_CLOCKPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING    /*!< Polarity for TIx clock sources */\n#define TIM_CLOCKPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING   /*!< Polarity for TIx clock sources */\n#define TIM_CLOCKPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE  /*!< Polarity for TIx clock sources */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler\n  * @{\n  */\n#define TIM_CLOCKPRESCALER_DIV1                 TIM_ETRPRESCALER_DIV1           /*!< No prescaler is used                                                     */\n#define TIM_CLOCKPRESCALER_DIV2                 TIM_ETRPRESCALER_DIV2           /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */\n#define TIM_CLOCKPRESCALER_DIV4                 TIM_ETRPRESCALER_DIV4           /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */\n#define TIM_CLOCKPRESCALER_DIV8                 TIM_ETRPRESCALER_DIV8           /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity\n  * @{\n  */\n#define TIM_CLEARINPUTPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED      /*!< Polarity for ETRx pin */\n#define TIM_CLEARINPUTPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED   /*!< Polarity for ETRx pin */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler\n  * @{\n  */\n#define TIM_CLEARINPUTPRESCALER_DIV1              TIM_ETRPRESCALER_DIV1         /*!< No prescaler is used                                                   */\n#define TIM_CLEARINPUTPRESCALER_DIV2              TIM_ETRPRESCALER_DIV2         /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */\n#define TIM_CLEARINPUTPRESCALER_DIV4              TIM_ETRPRESCALER_DIV4         /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */\n#define TIM_CLEARINPUTPRESCALER_DIV8              TIM_ETRPRESCALER_DIV8         /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state TIM OSSR OffState Selection for Run mode state\n  * @{\n  */\n#define TIM_OSSR_ENABLE                          TIM_BDTR_OSSR                  /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer)           */\n#define TIM_OSSR_DISABLE                         0x00000000U                    /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state TIM OSSI OffState Selection for Idle mode state\n  * @{\n  */\n#define TIM_OSSI_ENABLE                          TIM_BDTR_OSSI                  /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer)           */\n#define TIM_OSSI_DISABLE                         0x00000000U                    /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */\n/**\n  * @}\n  */\n/** @defgroup TIM_Lock_level  TIM Lock level\n  * @{\n  */\n#define TIM_LOCKLEVEL_OFF                  0x00000000U                          /*!< LOCK OFF     */\n#define TIM_LOCKLEVEL_1                    TIM_BDTR_LOCK_0                      /*!< LOCK Level 1 */\n#define TIM_LOCKLEVEL_2                    TIM_BDTR_LOCK_1                      /*!< LOCK Level 2 */\n#define TIM_LOCKLEVEL_3                    TIM_BDTR_LOCK                        /*!< LOCK Level 3 */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Break_Input_enable_disable TIM Break Input Enable\n  * @{\n  */\n#define TIM_BREAK_ENABLE                   TIM_BDTR_BKE                         /*!< Break input BRK is enabled  */\n#define TIM_BREAK_DISABLE                  0x00000000U                          /*!< Break input BRK is disabled */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Break_Polarity TIM Break Input Polarity\n  * @{\n  */\n#define TIM_BREAKPOLARITY_LOW              0x00000000U                          /*!< Break input BRK is active low  */\n#define TIM_BREAKPOLARITY_HIGH             TIM_BDTR_BKP                         /*!< Break input BRK is active high */\n/**\n  * @}\n  */\n#if  defined(TIM_BDTR_BKBID)\n\n/** @defgroup TIM_Break_Input_AF_Mode TIM Break Input Alternate Function Mode\n  * @{\n  */\n#define TIM_BREAK_AFMODE_INPUT             0x00000000U                          /*!< Break input BRK in input mode */\n#define TIM_BREAK_AFMODE_BIDIRECTIONAL     TIM_BDTR_BKBID                       /*!< Break input BRK in bidirectional mode */\n/**\n  * @}\n  */\n#endif /*TIM_BDTR_BKBID */\n\n/** @defgroup TIM_Break2_Input_enable_disable TIM Break input 2 Enable\n  * @{\n  */\n#define TIM_BREAK2_DISABLE                 0x00000000U                          /*!< Break input BRK2 is disabled  */\n#define TIM_BREAK2_ENABLE                  TIM_BDTR_BK2E                        /*!< Break input BRK2 is enabled  */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Break2_Polarity TIM Break Input 2 Polarity\n  * @{\n  */\n#define TIM_BREAK2POLARITY_LOW             0x00000000U                          /*!< Break input BRK2 is active low   */\n#define TIM_BREAK2POLARITY_HIGH            TIM_BDTR_BK2P                        /*!< Break input BRK2 is active high  */\n/**\n  * @}\n  */\n#if defined(TIM_BDTR_BKBID)\n\n/** @defgroup TIM_Break2_Input_AF_Mode TIM Break2 Input Alternate Function Mode\n  * @{\n  */\n#define TIM_BREAK2_AFMODE_INPUT            0x00000000U                          /*!< Break2 input BRK2 in input mode */\n#define TIM_BREAK2_AFMODE_BIDIRECTIONAL    TIM_BDTR_BK2BID                      /*!< Break2 input BRK2 in bidirectional mode */\n/**\n  * @}\n  */\n#endif /* TIM_BDTR_BKBID */\n\n/** @defgroup TIM_AOE_Bit_Set_Reset TIM Automatic Output Enable\n  * @{\n  */\n#define TIM_AUTOMATICOUTPUT_DISABLE        0x00000000U                          /*!< MOE can be set only by software */\n#define TIM_AUTOMATICOUTPUT_ENABLE         TIM_BDTR_AOE                         /*!< MOE can be set by software or automatically at the next update event (if none of the break inputs BRK and BRK2 is active) */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Group_Channel5 TIM Group Channel 5 and Channel 1, 2 or 3\n  * @{\n  */\n#define TIM_GROUPCH5_NONE                  0x00000000U                          /*!< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */\n#define TIM_GROUPCH5_OC1REFC               TIM_CCR5_GC5C1                       /*!< OC1REFC is the logical AND of OC1REFC and OC5REF    */\n#define TIM_GROUPCH5_OC2REFC               TIM_CCR5_GC5C2                       /*!< OC2REFC is the logical AND of OC2REFC and OC5REF    */\n#define TIM_GROUPCH5_OC3REFC               TIM_CCR5_GC5C3                       /*!< OC3REFC is the logical AND of OC3REFC and OC5REF    */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection\n  * @{\n  */\n#define TIM_TRGO_RESET            0x00000000U                                      /*!< TIMx_EGR.UG bit is used as trigger output (TRGO)              */\n#define TIM_TRGO_ENABLE           TIM_CR2_MMS_0                                    /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO)             */\n#define TIM_TRGO_UPDATE           TIM_CR2_MMS_1                                    /*!< Update event is used as trigger output (TRGO)                 */\n#define TIM_TRGO_OC1              (TIM_CR2_MMS_1 | TIM_CR2_MMS_0)                  /*!< Capture or a compare match 1 is used as trigger output (TRGO) */\n#define TIM_TRGO_OC1REF           TIM_CR2_MMS_2                                    /*!< OC1REF signal is used as trigger output (TRGO)                */\n#define TIM_TRGO_OC2REF           (TIM_CR2_MMS_2 | TIM_CR2_MMS_0)                  /*!< OC2REF signal is used as trigger output(TRGO)                 */\n#define TIM_TRGO_OC3REF           (TIM_CR2_MMS_2 | TIM_CR2_MMS_1)                  /*!< OC3REF signal is used as trigger output(TRGO)                 */\n#define TIM_TRGO_OC4REF           (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0)  /*!< OC4REF signal is used as trigger output(TRGO)                 */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Master_Mode_Selection_2 TIM Master Mode Selection 2 (TRGO2)\n  * @{\n  */\n#define TIM_TRGO2_RESET                          0x00000000U                                                         /*!< TIMx_EGR.UG bit is used as trigger output (TRGO2)              */\n#define TIM_TRGO2_ENABLE                         TIM_CR2_MMS2_0                                                      /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO2)             */\n#define TIM_TRGO2_UPDATE                         TIM_CR2_MMS2_1                                                      /*!< Update event is used as trigger output (TRGO2)                 */\n#define TIM_TRGO2_OC1                            (TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0)                                   /*!< Capture or a compare match 1 is used as trigger output (TRGO2) */\n#define TIM_TRGO2_OC1REF                         TIM_CR2_MMS2_2                                                      /*!< OC1REF signal is used as trigger output (TRGO2)                */\n#define TIM_TRGO2_OC2REF                         (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0)                                   /*!< OC2REF signal is used as trigger output (TRGO2)                */\n#define TIM_TRGO2_OC3REF                         (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1)                                   /*!< OC3REF signal is used as trigger output (TRGO2)                */\n#define TIM_TRGO2_OC4REF                         (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0)                  /*!< OC4REF signal is used as trigger output (TRGO2)                */\n#define TIM_TRGO2_OC5REF                         TIM_CR2_MMS2_3                                                      /*!< OC5REF signal is used as trigger output (TRGO2)                */\n#define TIM_TRGO2_OC6REF                         (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_0)                                   /*!< OC6REF signal is used as trigger output (TRGO2)                */\n#define TIM_TRGO2_OC4REF_RISINGFALLING           (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1)                                   /*!< OC4REF rising or falling edges generate pulses on TRGO2        */\n#define TIM_TRGO2_OC6REF_RISINGFALLING           (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0)                  /*!< OC6REF rising or falling edges generate pulses on TRGO2        */\n#define TIM_TRGO2_OC4REF_RISING_OC6REF_RISING    (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2)                                   /*!< OC4REF or OC6REF rising edges generate pulses on TRGO2         */\n#define TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING   (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0)                  /*!< OC4REF rising or OC6REF falling edges generate pulses on TRGO2 */\n#define TIM_TRGO2_OC5REF_RISING_OC6REF_RISING    (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 |TIM_CR2_MMS2_1)                   /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2         */\n#define TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING   (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2         */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Master_Slave_Mode TIM Master/Slave Mode\n  * @{\n  */\n#define TIM_MASTERSLAVEMODE_ENABLE         TIM_SMCR_MSM                         /*!< No action */\n#define TIM_MASTERSLAVEMODE_DISABLE        0x00000000U                          /*!< Master/slave mode is selected */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Slave_Mode TIM Slave mode\n  * @{\n  */\n#define TIM_SLAVEMODE_DISABLE                0x00000000U                                        /*!< Slave mode disabled           */\n#define TIM_SLAVEMODE_RESET                  TIM_SMCR_SMS_2                                     /*!< Reset Mode                    */\n#define TIM_SLAVEMODE_GATED                  (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0)                  /*!< Gated Mode                    */\n#define TIM_SLAVEMODE_TRIGGER                (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1)                  /*!< Trigger Mode                  */\n#define TIM_SLAVEMODE_EXTERNAL1              (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< External Clock Mode 1         */\n#define TIM_SLAVEMODE_COMBINED_RESETTRIGGER  TIM_SMCR_SMS_3                                     /*!< Combined reset + trigger mode */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM Modes\n  * @{\n  */\n#define TIM_OCMODE_TIMING                   0x00000000U                                              /*!< Frozen                                 */\n#define TIM_OCMODE_ACTIVE                   TIM_CCMR1_OC1M_0                                         /*!< Set channel to active level on match   */\n#define TIM_OCMODE_INACTIVE                 TIM_CCMR1_OC1M_1                                         /*!< Set channel to inactive level on match */\n#define TIM_OCMODE_TOGGLE                   (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)                    /*!< Toggle                                 */\n#define TIM_OCMODE_PWM1                     (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1)                    /*!< PWM mode 1                             */\n#define TIM_OCMODE_PWM2                     (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2                             */\n#define TIM_OCMODE_FORCED_ACTIVE            (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)                    /*!< Force active level                     */\n#define TIM_OCMODE_FORCED_INACTIVE          TIM_CCMR1_OC1M_2                                         /*!< Force inactive level                   */\n#define TIM_OCMODE_RETRIGERRABLE_OPM1      TIM_CCMR1_OC1M_3                                          /*!< Retrigerrable OPM mode 1               */\n#define TIM_OCMODE_RETRIGERRABLE_OPM2      (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0)                     /*!< Retrigerrable OPM mode 2               */\n#define TIM_OCMODE_COMBINED_PWM1           (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2)                     /*!< Combined PWM mode 1                    */\n#define TIM_OCMODE_COMBINED_PWM2           (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_2)  /*!< Combined PWM mode 2                    */\n#define TIM_OCMODE_ASSYMETRIC_PWM1         (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2)  /*!< Asymmetric PWM mode 1                  */\n#define TIM_OCMODE_ASSYMETRIC_PWM2         TIM_CCMR1_OC1M                                            /*!< Asymmetric PWM mode 2                  */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Trigger_Selection TIM Trigger Selection\n  * @{\n  */\n#define TIM_TS_ITR0          0x00000000U                                                       /*!< Internal Trigger 0 (ITR0)              */\n#define TIM_TS_ITR1          TIM_SMCR_TS_0                                                     /*!< Internal Trigger 1 (ITR1)              */\n#define TIM_TS_ITR2          TIM_SMCR_TS_1                                                     /*!< Internal Trigger 2 (ITR2)              */\n#define TIM_TS_ITR3          (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)                                   /*!< Internal Trigger 3 (ITR3)              */\n#define TIM_TS_ITR4          (TIM_SMCR_TS_3)                                                   /*!< Internal Trigger 4 (ITR4)              */\n#define TIM_TS_ITR5          (TIM_SMCR_TS_0 | TIM_SMCR_TS_3)                                   /*!< Internal Trigger 5 (ITR5)              */\n#define TIM_TS_ITR6          (TIM_SMCR_TS_1 | TIM_SMCR_TS_3)                                   /*!< Internal Trigger 6 (ITR6)              */\n#define TIM_TS_ITR7          (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_3)                   /*!< Internal Trigger 7 (ITR7)              */\n#define TIM_TS_ITR8          (TIM_SMCR_TS_2 | TIM_SMCR_TS_3)                                   /*!< Internal Trigger 8 (ITR8)              */\n#define TIM_TS_ITR9          (TIM_SMCR_TS_0 | TIM_SMCR_TS_2 | TIM_SMCR_TS_3)                   /*!< Internal Trigger 9 (ITR9)              */\n#define TIM_TS_ITR10         (TIM_SMCR_TS_1 | TIM_SMCR_TS_2 | TIM_SMCR_TS_3)                   /*!< Internal Trigger 10 (ITR10)            */\n#define TIM_TS_ITR11         (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2 | TIM_SMCR_TS_3)   /*!< Internal Trigger 11 (ITR11)            */\n#define TIM_TS_ITR12         (TIM_SMCR_TS_4)                                                   /*!< Internal Trigger 12 (ITR12)            */\n#define TIM_TS_ITR13         (TIM_SMCR_TS_0 | TIM_SMCR_TS_4)                                   /*!< Internal Trigger 13 (ITR13)            */\n#define TIM_TS_TI1F_ED       TIM_SMCR_TS_2                                                     /*!< TI1 Edge Detector (TI1F_ED)            */\n#define TIM_TS_TI1FP1        (TIM_SMCR_TS_0 | TIM_SMCR_TS_2)                                   /*!< Filtered Timer Input 1 (TI1FP1)        */\n#define TIM_TS_TI2FP2        (TIM_SMCR_TS_1 | TIM_SMCR_TS_2)                                   /*!< Filtered Timer Input 2 (TI2FP2)        */\n#define TIM_TS_ETRF          (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2)                   /*!< Filtered External Trigger input (ETRF) */\n#define TIM_TS_NONE          0x0000FFFFU                                                       /*!< No trigger selected                    */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity\n  * @{\n  */\n#define TIM_TRIGGERPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED               /*!< Polarity for ETRx trigger sources             */\n#define TIM_TRIGGERPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED            /*!< Polarity for ETRx trigger sources             */\n#define TIM_TRIGGERPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING        /*!< Polarity for TIxFPx or TI1_ED trigger sources */\n#define TIM_TRIGGERPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING       /*!< Polarity for TIxFPx or TI1_ED trigger sources */\n#define TIM_TRIGGERPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE      /*!< Polarity for TIxFPx or TI1_ED trigger sources */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler\n  * @{\n  */\n#define TIM_TRIGGERPRESCALER_DIV1             TIM_ETRPRESCALER_DIV1             /*!< No prescaler is used                                                       */\n#define TIM_TRIGGERPRESCALER_DIV2             TIM_ETRPRESCALER_DIV2             /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */\n#define TIM_TRIGGERPRESCALER_DIV4             TIM_ETRPRESCALER_DIV4             /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */\n#define TIM_TRIGGERPRESCALER_DIV8             TIM_ETRPRESCALER_DIV8             /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_TI1_Selection TIM TI1 Input Selection\n  * @{\n  */\n#define TIM_TI1SELECTION_CH1               0x00000000U                          /*!< The TIMx_CH1 pin is connected to TI1 input */\n#define TIM_TI1SELECTION_XORCOMBINATION    TIM_CR2_TI1S                         /*!< The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length\n  * @{\n  */\n#define TIM_DMABURSTLENGTH_1TRANSFER       0x00000000U                          /*!< The transfer is done to 1 register starting from TIMx_CR1 + TIMx_DCR.DBA   */\n#define TIM_DMABURSTLENGTH_2TRANSFERS      0x00000100U                          /*!< The transfer is done to 2 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_3TRANSFERS      0x00000200U                          /*!< The transfer is done to 3 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_4TRANSFERS      0x00000300U                          /*!< The transfer is done to 4 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_5TRANSFERS      0x00000400U                          /*!< The transfer is done to 5 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_6TRANSFERS      0x00000500U                          /*!< The transfer is done to 6 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_7TRANSFERS      0x00000600U                          /*!< The transfer is done to 7 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_8TRANSFERS      0x00000700U                          /*!< The transfer is done to 8 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_9TRANSFERS      0x00000800U                          /*!< The transfer is done to 9 registers starting from TIMx_CR1 + TIMx_DCR.DBA  */\n#define TIM_DMABURSTLENGTH_10TRANSFERS     0x00000900U                          /*!< The transfer is done to 10 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_11TRANSFERS     0x00000A00U                          /*!< The transfer is done to 11 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_12TRANSFERS     0x00000B00U                          /*!< The transfer is done to 12 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_13TRANSFERS     0x00000C00U                          /*!< The transfer is done to 13 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_14TRANSFERS     0x00000D00U                          /*!< The transfer is done to 14 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_15TRANSFERS     0x00000E00U                          /*!< The transfer is done to 15 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_16TRANSFERS     0x00000F00U                          /*!< The transfer is done to 16 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_17TRANSFERS     0x00001000U                          /*!< The transfer is done to 17 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n#define TIM_DMABURSTLENGTH_18TRANSFERS     0x00001100U                          /*!< The transfer is done to 18 registers starting from TIMx_CR1 + TIMx_DCR.DBA */\n/**\n  * @}\n  */\n\n/** @defgroup DMA_Handle_index TIM DMA Handle Index\n  * @{\n  */\n#define TIM_DMA_ID_UPDATE                ((uint16_t) 0x0000)       /*!< Index of the DMA handle used for Update DMA requests */\n#define TIM_DMA_ID_CC1                   ((uint16_t) 0x0001)       /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */\n#define TIM_DMA_ID_CC2                   ((uint16_t) 0x0002)       /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */\n#define TIM_DMA_ID_CC3                   ((uint16_t) 0x0003)       /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */\n#define TIM_DMA_ID_CC4                   ((uint16_t) 0x0004)       /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */\n#define TIM_DMA_ID_COMMUTATION           ((uint16_t) 0x0005)       /*!< Index of the DMA handle used for Commutation DMA requests */\n#define TIM_DMA_ID_TRIGGER               ((uint16_t) 0x0006)       /*!< Index of the DMA handle used for Trigger DMA requests */\n/**\n  * @}\n  */\n\n/** @defgroup Channel_CC_State TIM Capture/Compare Channel State\n  * @{\n  */\n#define TIM_CCx_ENABLE                   0x00000001U                            /*!< Input or output channel is enabled */\n#define TIM_CCx_DISABLE                  0x00000000U                            /*!< Input or output channel is disabled */\n#define TIM_CCxN_ENABLE                  0x00000004U                            /*!< Complementary output channel is enabled */\n#define TIM_CCxN_DISABLE                 0x00000000U                            /*!< Complementary output channel is enabled */\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Break_System TIM Break System\n  * @{\n  */\n#define TIM_BREAK_SYSTEM_ECC                 SYSCFG_CFGR2_ECCL   /*!< Enables and locks the ECC error signal with Break Input of TIM1/8/15/16/17 */\n#define TIM_BREAK_SYSTEM_PVD                 SYSCFG_CFGR2_PVDL   /*!< Enables and locks the PVD connection with TIM1/8/15/16/17 Break Input and also the PVDE and PLS bits of the Power Control Interface */\n#define TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR   SYSCFG_CFGR2_SPL    /*!< Enables and locks the SRAM_PARITY error signal with Break Input of TIM1/8/15/16/17 */\n#define TIM_BREAK_SYSTEM_LOCKUP              SYSCFG_CFGR2_CLL    /*!< Enables and locks the LOCKUP output of CortexM4 with Break Input of TIM1/8/15/16/17 */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* End of exported constants -------------------------------------------------*/\n\n/* Exported macros -----------------------------------------------------------*/\n/** @defgroup TIM_Exported_Macros TIM Exported Macros\n  * @{\n  */\n\n/** @brief  Reset TIM handle state.\n  * @param  __HANDLE__ TIM handle.\n  * @retval None\n  */\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do {                                                               \\\n                                                      (__HANDLE__)->State            = HAL_TIM_STATE_RESET;         \\\n                                                      (__HANDLE__)->ChannelState[0]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[1]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[2]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[3]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[4]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[5]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->DMABurstState    = HAL_DMA_BURST_STATE_RESET;   \\\n                                                      (__HANDLE__)->Base_MspInitCallback         = NULL;            \\\n                                                      (__HANDLE__)->Base_MspDeInitCallback       = NULL;            \\\n                                                      (__HANDLE__)->IC_MspInitCallback           = NULL;            \\\n                                                      (__HANDLE__)->IC_MspDeInitCallback         = NULL;            \\\n                                                      (__HANDLE__)->OC_MspInitCallback           = NULL;            \\\n                                                      (__HANDLE__)->OC_MspDeInitCallback         = NULL;            \\\n                                                      (__HANDLE__)->PWM_MspInitCallback          = NULL;            \\\n                                                      (__HANDLE__)->PWM_MspDeInitCallback        = NULL;            \\\n                                                      (__HANDLE__)->OnePulse_MspInitCallback     = NULL;            \\\n                                                      (__HANDLE__)->OnePulse_MspDeInitCallback   = NULL;            \\\n                                                      (__HANDLE__)->Encoder_MspInitCallback      = NULL;            \\\n                                                      (__HANDLE__)->Encoder_MspDeInitCallback    = NULL;            \\\n                                                      (__HANDLE__)->HallSensor_MspInitCallback   = NULL;            \\\n                                                      (__HANDLE__)->HallSensor_MspDeInitCallback = NULL;            \\\n                                                     } while(0)\n#else\n#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do {                                                               \\\n                                                      (__HANDLE__)->State            = HAL_TIM_STATE_RESET;         \\\n                                                      (__HANDLE__)->ChannelState[0]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[1]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[2]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[3]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[4]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelState[5]  = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \\\n                                                      (__HANDLE__)->DMABurstState    = HAL_DMA_BURST_STATE_RESET;   \\\n                                                     } while(0)\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n/**\n  * @brief  Enable the TIM peripheral.\n  * @param  __HANDLE__ TIM handle\n  * @retval None\n  */\n#define __HAL_TIM_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN))\n\n/**\n  * @brief  Enable the TIM main Output.\n  * @param  __HANDLE__ TIM handle\n  * @retval None\n  */\n#define __HAL_TIM_MOE_ENABLE(__HANDLE__)             ((__HANDLE__)->Instance->BDTR|=(TIM_BDTR_MOE))\n\n/**\n  * @brief  Disable the TIM peripheral.\n  * @param  __HANDLE__ TIM handle\n  * @retval None\n  */\n#define __HAL_TIM_DISABLE(__HANDLE__) \\\n  do { \\\n    if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \\\n    { \\\n      if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \\\n      { \\\n        (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \\\n      } \\\n    } \\\n  } while(0)\n\n/**\n  * @brief  Disable the TIM main Output.\n  * @param  __HANDLE__ TIM handle\n  * @retval None\n  * @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been\n  *       disabled\n  */\n#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \\\n  do { \\\n    if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \\\n    { \\\n      if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \\\n      { \\\n        (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \\\n      } \\\n    } \\\n  } while(0)\n\n/**\n  * @brief  Disable the TIM main Output.\n  * @param  __HANDLE__ TIM handle\n  * @retval None\n  * @note The Main Output Enable of a timer instance is disabled unconditionally\n  */\n#define __HAL_TIM_MOE_DISABLE_UNCONDITIONALLY(__HANDLE__)  (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE)\n\n/** @brief  Enable the specified TIM interrupt.\n  * @param  __HANDLE__ specifies the TIM Handle.\n  * @param  __INTERRUPT__ specifies the TIM interrupt source to enable.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_IT_UPDATE: Update interrupt\n  *            @arg TIM_IT_CC1:   Capture/Compare 1 interrupt\n  *            @arg TIM_IT_CC2:  Capture/Compare 2 interrupt\n  *            @arg TIM_IT_CC3:  Capture/Compare 3 interrupt\n  *            @arg TIM_IT_CC4:  Capture/Compare 4 interrupt\n  *            @arg TIM_IT_COM:   Commutation interrupt\n  *            @arg TIM_IT_TRIGGER: Trigger interrupt\n  *            @arg TIM_IT_BREAK: Break interrupt\n  * @retval None\n  */\n#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__))\n\n/** @brief  Disable the specified TIM interrupt.\n  * @param  __HANDLE__ specifies the TIM Handle.\n  * @param  __INTERRUPT__ specifies the TIM interrupt source to disable.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_IT_UPDATE: Update interrupt\n  *            @arg TIM_IT_CC1:   Capture/Compare 1 interrupt\n  *            @arg TIM_IT_CC2:  Capture/Compare 2 interrupt\n  *            @arg TIM_IT_CC3:  Capture/Compare 3 interrupt\n  *            @arg TIM_IT_CC4:  Capture/Compare 4 interrupt\n  *            @arg TIM_IT_COM:   Commutation interrupt\n  *            @arg TIM_IT_TRIGGER: Trigger interrupt\n  *            @arg TIM_IT_BREAK: Break interrupt\n  * @retval None\n  */\n#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__))\n\n/** @brief  Enable the specified DMA request.\n  * @param  __HANDLE__ specifies the TIM Handle.\n  * @param  __DMA__ specifies the TIM DMA request to enable.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_DMA_UPDATE: Update DMA request\n  *            @arg TIM_DMA_CC1:   Capture/Compare 1 DMA request\n  *            @arg TIM_DMA_CC2:  Capture/Compare 2 DMA request\n  *            @arg TIM_DMA_CC3:  Capture/Compare 3 DMA request\n  *            @arg TIM_DMA_CC4:  Capture/Compare 4 DMA request\n  *            @arg TIM_DMA_COM:   Commutation DMA request\n  *            @arg TIM_DMA_TRIGGER: Trigger DMA request\n  * @retval None\n  */\n#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__)         ((__HANDLE__)->Instance->DIER |= (__DMA__))\n\n/** @brief  Disable the specified DMA request.\n  * @param  __HANDLE__ specifies the TIM Handle.\n  * @param  __DMA__ specifies the TIM DMA request to disable.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_DMA_UPDATE: Update DMA request\n  *            @arg TIM_DMA_CC1:   Capture/Compare 1 DMA request\n  *            @arg TIM_DMA_CC2:  Capture/Compare 2 DMA request\n  *            @arg TIM_DMA_CC3:  Capture/Compare 3 DMA request\n  *            @arg TIM_DMA_CC4:  Capture/Compare 4 DMA request\n  *            @arg TIM_DMA_COM:   Commutation DMA request\n  *            @arg TIM_DMA_TRIGGER: Trigger DMA request\n  * @retval None\n  */\n#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__)        ((__HANDLE__)->Instance->DIER &= ~(__DMA__))\n\n/** @brief  Check whether the specified TIM interrupt flag is set or not.\n  * @param  __HANDLE__ specifies the TIM Handle.\n  * @param  __FLAG__ specifies the TIM interrupt flag to check.\n  *        This parameter can be one of the following values:\n  *            @arg TIM_FLAG_UPDATE: Update interrupt flag\n  *            @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag\n  *            @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag\n  *            @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag\n  *            @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag\n  *            @arg TIM_FLAG_CC5: Compare 5 interrupt flag\n  *            @arg TIM_FLAG_CC6: Compare 6 interrupt flag\n  *            @arg TIM_FLAG_COM:  Commutation interrupt flag\n  *            @arg TIM_FLAG_TRIGGER: Trigger interrupt flag\n  *            @arg TIM_FLAG_BREAK: Break interrupt flag\n  *            @arg TIM_FLAG_BREAK2: Break 2 interrupt flag\n  *            @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag\n  *            @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag\n  *            @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag\n  *            @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag\n  *            @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag\n  * @retval The new state of __FLAG__ (TRUE or FALSE).\n  */\n#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__)          (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__))\n\n/** @brief  Clear the specified TIM interrupt flag.\n  * @param  __HANDLE__ specifies the TIM Handle.\n  * @param  __FLAG__ specifies the TIM interrupt flag to clear.\n  *        This parameter can be one of the following values:\n  *            @arg TIM_FLAG_UPDATE: Update interrupt flag\n  *            @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag\n  *            @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag\n  *            @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag\n  *            @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag\n  *            @arg TIM_FLAG_CC5: Compare 5 interrupt flag\n  *            @arg TIM_FLAG_CC6: Compare 6 interrupt flag\n  *            @arg TIM_FLAG_COM:  Commutation interrupt flag\n  *            @arg TIM_FLAG_TRIGGER: Trigger interrupt flag\n  *            @arg TIM_FLAG_BREAK: Break interrupt flag\n  *            @arg TIM_FLAG_BREAK2: Break 2 interrupt flag\n  *            @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag\n  *            @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag\n  *            @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag\n  *            @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag\n  *            @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag\n  * @retval The new state of __FLAG__ (TRUE or FALSE).\n  */\n#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__)        ((__HANDLE__)->Instance->SR = ~(__FLAG__))\n\n/**\n  * @brief  Check whether the specified TIM interrupt source is enabled or not.\n  * @param  __HANDLE__ TIM handle\n  * @param  __INTERRUPT__ specifies the TIM interrupt source to check.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_IT_UPDATE: Update interrupt\n  *            @arg TIM_IT_CC1:   Capture/Compare 1 interrupt\n  *            @arg TIM_IT_CC2:  Capture/Compare 2 interrupt\n  *            @arg TIM_IT_CC3:  Capture/Compare 3 interrupt\n  *            @arg TIM_IT_CC4:  Capture/Compare 4 interrupt\n  *            @arg TIM_IT_COM:   Commutation interrupt\n  *            @arg TIM_IT_TRIGGER: Trigger interrupt\n  *            @arg TIM_IT_BREAK: Break interrupt\n  * @retval The state of TIM_IT (SET or RESET).\n  */\n#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \\\n                                                             == (__INTERRUPT__)) ? SET : RESET)\n\n/** @brief Clear the TIM interrupt pending bits.\n  * @param  __HANDLE__ TIM handle\n  * @param  __INTERRUPT__ specifies the interrupt pending bit to clear.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_IT_UPDATE: Update interrupt\n  *            @arg TIM_IT_CC1:   Capture/Compare 1 interrupt\n  *            @arg TIM_IT_CC2:  Capture/Compare 2 interrupt\n  *            @arg TIM_IT_CC3:  Capture/Compare 3 interrupt\n  *            @arg TIM_IT_CC4:  Capture/Compare 4 interrupt\n  *            @arg TIM_IT_COM:   Commutation interrupt\n  *            @arg TIM_IT_TRIGGER: Trigger interrupt\n  *            @arg TIM_IT_BREAK: Break interrupt\n  * @retval None\n  */\n#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__)      ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))\n\n/**\n  * @brief  Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31).\n  * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read\n  *       in an atomic way.\n  * @param  __HANDLE__ TIM handle.\n  * @retval None\nmode.\n  */\n#define __HAL_TIM_UIFREMAP_ENABLE(__HANDLE__)    (((__HANDLE__)->Instance->CR1 |= TIM_CR1_UIFREMAP))\n\n/**\n  * @brief  Disable update interrupt flag (UIF) remapping.\n  * @param  __HANDLE__ TIM handle.\n  * @retval None\nmode.\n  */\n#define __HAL_TIM_UIFREMAP_DISABLE(__HANDLE__)    (((__HANDLE__)->Instance->CR1 &= ~TIM_CR1_UIFREMAP))\n\n/**\n  * @brief  Get update interrupt flag (UIF) copy status.\n  * @param  __COUNTER__ Counter value.\n  * @retval The state of UIFCPY (TRUE or FALSE).\nmode.\n  */\n#define __HAL_TIM_GET_UIFCPY(__COUNTER__)    (((__COUNTER__) & (TIM_CNT_UIFCPY)) == (TIM_CNT_UIFCPY))\n\n/**\n  * @brief  Indicates whether or not the TIM Counter is used as downcounter.\n  * @param  __HANDLE__ TIM handle.\n  * @retval False (Counter used as upcounter) or True (Counter used as downcounter)\n  * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode\n  *       or Encoder mode.\n  */\n#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__)    (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))\n\n/**\n  * @brief  Set the TIM Prescaler on runtime.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __PRESC__ specifies the Prescaler new value.\n  * @retval None\n  */\n#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__)       ((__HANDLE__)->Instance->PSC = (__PRESC__))\n\n/**\n  * @brief  Set the TIM Counter Register value on runtime.\n  * Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in\n  *      case of 32 bits counter TIM instance.\n  *      Bit 31 of CNT can be enabled/disabled using __HAL_TIM_UIFREMAP_ENABLE()/__HAL_TIM_UIFREMAP_DISABLE() macros.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __COUNTER__ specifies the Counter register new value.\n  * @retval None\n  */\n#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__)  ((__HANDLE__)->Instance->CNT = (__COUNTER__))\n\n/**\n  * @brief  Get the TIM Counter Register value on runtime.\n  * @param  __HANDLE__ TIM handle.\n  * @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)\n  */\n#define __HAL_TIM_GET_COUNTER(__HANDLE__)  ((__HANDLE__)->Instance->CNT)\n\n/**\n  * @brief  Set the TIM Autoreload Register value on runtime without calling another time any Init function.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __AUTORELOAD__ specifies the Counter register new value.\n  * @retval None\n  */\n#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \\\n  do{                                                    \\\n    (__HANDLE__)->Instance->ARR = (__AUTORELOAD__);  \\\n    (__HANDLE__)->Init.Period = (__AUTORELOAD__);    \\\n  } while(0)\n\n/**\n  * @brief  Get the TIM Autoreload Register value on runtime.\n  * @param  __HANDLE__ TIM handle.\n  * @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)\n  */\n#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__)  ((__HANDLE__)->Instance->ARR)\n\n/**\n  * @brief  Set the TIM Clock Division value on runtime without calling another time any Init function.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CKD__ specifies the clock division value.\n  *          This parameter can be one of the following value:\n  *            @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT\n  *            @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT\n  *            @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT\n  * @retval None\n  */\n#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \\\n  do{                                                   \\\n    (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD);  \\\n    (__HANDLE__)->Instance->CR1 |= (__CKD__);       \\\n    (__HANDLE__)->Init.ClockDivision = (__CKD__);   \\\n  } while(0)\n\n/**\n  * @brief  Get the TIM Clock Division value on runtime.\n  * @param  __HANDLE__ TIM handle.\n  * @retval The clock division can be one of the following values:\n  *            @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT\n  *            @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT\n  *            @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT\n  */\n#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__)  ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)\n\n/**\n  * @brief  Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel()\n  *         function.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @param  __ICPSC__ specifies the Input Capture4 prescaler new value.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICPSC_DIV1: no prescaler\n  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events\n  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events\n  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events\n  * @retval None\n  */\n#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \\\n  do{                                                    \\\n    TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__));  \\\n    TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \\\n  } while(0)\n\n/**\n  * @brief  Get the TIM Input Capture prescaler on runtime.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: get input capture 1 prescaler value\n  *            @arg TIM_CHANNEL_2: get input capture 2 prescaler value\n  *            @arg TIM_CHANNEL_3: get input capture 3 prescaler value\n  *            @arg TIM_CHANNEL_4: get input capture 4 prescaler value\n  * @retval The input capture prescaler can be one of the following values:\n  *            @arg TIM_ICPSC_DIV1: no prescaler\n  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events\n  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events\n  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events\n  */\n#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__)  \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\\\n   (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U)\n\n/**\n  * @brief  Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @param  __COMPARE__ specifies the Capture Compare register new value.\n  * @retval None\n  */\n#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\\\n   ((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))\n\n/**\n  * @brief  Get the TIM Capture Compare Register value on runtime.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channel associated with the capture compare register\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: get capture/compare 1 register value\n  *            @arg TIM_CHANNEL_2: get capture/compare 2 register value\n  *            @arg TIM_CHANNEL_3: get capture/compare 3 register value\n  *            @arg TIM_CHANNEL_4: get capture/compare 4 register value\n  *            @arg TIM_CHANNEL_5: get capture/compare 5 register value\n  *            @arg TIM_CHANNEL_6: get capture/compare 6 register value\n  * @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)\n  */\n#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\\\n   ((__HANDLE__)->Instance->CCR6))\n\n/**\n  * @brief  Set the TIM Output compare preload.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval None\n  */\n#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__)    \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\\\n   ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))\n\n/**\n  * @brief  Reset the TIM Output compare preload.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval None\n  */\n#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__)    \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5PE) :\\\n   ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6PE))\n\n/**\n  * @brief  Enable fast mode for a given channel.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @note  When fast mode is enabled an active edge on the trigger input acts\n  *        like a compare match on CCx output. Delay to sample the trigger\n  *        input and to activate CCx output is reduced to 3 clock cycles.\n  * @note  Fast mode acts only if the channel is configured in PWM1 or PWM2 mode.\n  * @retval None\n  */\n#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__)    \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5FE) :\\\n   ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6FE))\n\n/**\n  * @brief  Disable fast mode for a given channel.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @note  When fast mode is disabled CCx output behaves normally depending\n  *        on counter and CCRx values even when the trigger is ON. The minimum\n  *        delay to activate CCx output when an active edge occurs on the\n  *        trigger input is 5 clock cycles.\n  * @retval None\n  */\n#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__)    \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE) :\\\n   ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE))\n\n/**\n  * @brief  Set the Update Request Source (URS) bit of the TIMx_CR1 register.\n  * @param  __HANDLE__ TIM handle.\n  * @note  When the URS bit of the TIMx_CR1 register is set, only counter\n  *        overflow/underflow generates an update interrupt or DMA request (if\n  *        enabled)\n  * @retval None\n  */\n#define __HAL_TIM_URS_ENABLE(__HANDLE__)  ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)\n\n/**\n  * @brief  Reset the Update Request Source (URS) bit of the TIMx_CR1 register.\n  * @param  __HANDLE__ TIM handle.\n  * @note  When the URS bit of the TIMx_CR1 register is reset, any of the\n  *        following events generate an update interrupt or DMA request (if\n  *        enabled):\n  *           _ Counter overflow underflow\n  *           _ Setting the UG bit\n  *           _ Update generation through the slave mode controller\n  * @retval None\n  */\n#define __HAL_TIM_URS_DISABLE(__HANDLE__)  ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)\n\n/**\n  * @brief  Set the TIM Capture x input polarity on runtime.\n  * @param  __HANDLE__ TIM handle.\n  * @param  __CHANNEL__ TIM Channels to be configured.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @param  __POLARITY__ Polarity for TIx source\n  *            @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge\n  *            @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge\n  *            @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge\n  * @retval None\n  */\n#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__)    \\\n  do{                                                                     \\\n    TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__));               \\\n    TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \\\n  }while(0)\n\n/** @brief  Select the Capture/compare DMA request source.\n  * @param  __HANDLE__ specifies the TIM Handle.\n  * @param  __CCDMA__ specifies Capture/compare DMA request source\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CCDMAREQUEST_CC: CCx DMA request generated on Capture/Compare event\n  *            @arg TIM_CCDMAREQUEST_UPDATE: CCx DMA request generated on Update event\n  * @retval None\n  */\n#define __HAL_TIM_SELECT_CCDMAREQUEST(__HANDLE__, __CCDMA__)    \\\n  MODIFY_REG((__HANDLE__)->Instance->CR2, TIM_CR2_CCDS, (__CCDMA__))\n\n/**\n  * @}\n  */\n/* End of exported macros ----------------------------------------------------*/\n\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup TIM_Private_Constants TIM Private Constants\n  * @{\n  */\n/* The counter of a timer instance is disabled only if all the CCx and CCxN\n   channels have been disabled */\n#define TIM_CCER_CCxE_MASK  ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E))\n#define TIM_CCER_CCxNE_MASK ((uint32_t)(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE))\n/**\n  * @}\n  */\n/* End of private constants --------------------------------------------------*/\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup TIM_Private_Macros TIM Private Macros\n  * @{\n  */\n#define IS_TIM_CLEARINPUT_SOURCE(__MODE__)  (((__MODE__) == TIM_CLEARINPUTSOURCE_NONE)      || \\\n                                             ((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))\n\n#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1)   || \\\n                                   ((__BASE__) == TIM_DMABASE_CR2)   || \\\n                                   ((__BASE__) == TIM_DMABASE_SMCR)  || \\\n                                   ((__BASE__) == TIM_DMABASE_DIER)  || \\\n                                   ((__BASE__) == TIM_DMABASE_SR)    || \\\n                                   ((__BASE__) == TIM_DMABASE_EGR)   || \\\n                                   ((__BASE__) == TIM_DMABASE_CCMR1) || \\\n                                   ((__BASE__) == TIM_DMABASE_CCMR2) || \\\n                                   ((__BASE__) == TIM_DMABASE_CCER)  || \\\n                                   ((__BASE__) == TIM_DMABASE_CNT)   || \\\n                                   ((__BASE__) == TIM_DMABASE_PSC)   || \\\n                                   ((__BASE__) == TIM_DMABASE_ARR)   || \\\n                                   ((__BASE__) == TIM_DMABASE_RCR)   || \\\n                                   ((__BASE__) == TIM_DMABASE_CCR1)  || \\\n                                   ((__BASE__) == TIM_DMABASE_CCR2)  || \\\n                                   ((__BASE__) == TIM_DMABASE_CCR3)  || \\\n                                   ((__BASE__) == TIM_DMABASE_CCR4)  || \\\n                                   ((__BASE__) == TIM_DMABASE_BDTR)  || \\\n                                   ((__BASE__) == TIM_DMABASE_CCMR3) || \\\n                                   ((__BASE__) == TIM_DMABASE_CCR5)  || \\\n                                   ((__BASE__) == TIM_DMABASE_CCR6)  || \\\n                                   ((__BASE__) == TIM_DMABASE_AF1)   || \\\n                                   ((__BASE__) == TIM_DMABASE_AF2)   || \\\n                                   ((__BASE__) == TIM_DMABASE_TISEL))\n\n\n#define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFE00U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))\n\n#define IS_TIM_COUNTER_MODE(__MODE__)      (((__MODE__) == TIM_COUNTERMODE_UP)              || \\\n                                            ((__MODE__) == TIM_COUNTERMODE_DOWN)            || \\\n                                            ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1)  || \\\n                                            ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2)  || \\\n                                            ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))\n\n#define IS_TIM_UIFREMAP_MODE(__MODE__)     (((__MODE__) == TIM_UIFREMAP_DISABLE) || \\\n                                            ((__MODE__) == TIM_UIFREMAP_ENALE))\n\n#define IS_TIM_CLOCKDIVISION_DIV(__DIV__)  (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \\\n                                            ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \\\n                                            ((__DIV__) == TIM_CLOCKDIVISION_DIV4))\n\n#define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \\\n                                            ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE))\n\n#define IS_TIM_FAST_STATE(__STATE__)       (((__STATE__) == TIM_OCFAST_DISABLE) || \\\n                                            ((__STATE__) == TIM_OCFAST_ENABLE))\n\n#define IS_TIM_OC_POLARITY(__POLARITY__)   (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \\\n                                            ((__POLARITY__) == TIM_OCPOLARITY_LOW))\n\n#define IS_TIM_OCN_POLARITY(__POLARITY__)  (((__POLARITY__) == TIM_OCNPOLARITY_HIGH) || \\\n                                            ((__POLARITY__) == TIM_OCNPOLARITY_LOW))\n\n#define IS_TIM_OCIDLE_STATE(__STATE__)     (((__STATE__) == TIM_OCIDLESTATE_SET) || \\\n                                            ((__STATE__) == TIM_OCIDLESTATE_RESET))\n\n#define IS_TIM_OCNIDLE_STATE(__STATE__)    (((__STATE__) == TIM_OCNIDLESTATE_SET) || \\\n                                            ((__STATE__) == TIM_OCNIDLESTATE_RESET))\n\n#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__)   (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING)   || \\\n                                                      ((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING))\n\n#define IS_TIM_IC_POLARITY(__POLARITY__)   (((__POLARITY__) == TIM_ICPOLARITY_RISING)   || \\\n                                            ((__POLARITY__) == TIM_ICPOLARITY_FALLING)  || \\\n                                            ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))\n\n#define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \\\n                                            ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \\\n                                            ((__SELECTION__) == TIM_ICSELECTION_TRC))\n\n#define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \\\n                                            ((__PRESCALER__) == TIM_ICPSC_DIV2) || \\\n                                            ((__PRESCALER__) == TIM_ICPSC_DIV4) || \\\n                                            ((__PRESCALER__) == TIM_ICPSC_DIV8))\n\n#define IS_TIM_OPM_MODE(__MODE__)          (((__MODE__) == TIM_OPMODE_SINGLE) || \\\n                                            ((__MODE__) == TIM_OPMODE_REPETITIVE))\n\n#define IS_TIM_ENCODER_MODE(__MODE__)      (((__MODE__) == TIM_ENCODERMODE_TI1) || \\\n                                            ((__MODE__) == TIM_ENCODERMODE_TI2) || \\\n                                            ((__MODE__) == TIM_ENCODERMODE_TI12))\n\n#define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFF80FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))\n\n#define IS_TIM_CHANNELS(__CHANNEL__)       (((__CHANNEL__) == TIM_CHANNEL_1) || \\\n                                            ((__CHANNEL__) == TIM_CHANNEL_2) || \\\n                                            ((__CHANNEL__) == TIM_CHANNEL_3) || \\\n                                            ((__CHANNEL__) == TIM_CHANNEL_4) || \\\n                                            ((__CHANNEL__) == TIM_CHANNEL_5) || \\\n                                            ((__CHANNEL__) == TIM_CHANNEL_6) || \\\n                                            ((__CHANNEL__) == TIM_CHANNEL_ALL))\n\n#define IS_TIM_OPM_CHANNELS(__CHANNEL__)   (((__CHANNEL__) == TIM_CHANNEL_1) || \\\n                                            ((__CHANNEL__) == TIM_CHANNEL_2))\n\n#define IS_TIM_COMPLEMENTARY_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \\\n                                                    ((__CHANNEL__) == TIM_CHANNEL_2) || \\\n                                                    ((__CHANNEL__) == TIM_CHANNEL_3))\n\n#define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1) || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED)    || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_TI1)      || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_TI2)      || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0)     || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1)     || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2)     || \\\n                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3))\n\n#define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED)    || \\\n                                            ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \\\n                                            ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING)      || \\\n                                            ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING)     || \\\n                                            ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE))\n\n#define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \\\n                                              ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \\\n                                              ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \\\n                                              ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8))\n\n#define IS_TIM_CLOCKFILTER(__ICFILTER__)      ((__ICFILTER__) <= 0xFU)\n\n#define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \\\n                                                  ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED))\n\n#define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \\\n                                                    ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \\\n                                                    ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \\\n                                                    ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8))\n\n#define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)\n\n#define IS_TIM_OSSR_STATE(__STATE__)       (((__STATE__) == TIM_OSSR_ENABLE) || \\\n                                            ((__STATE__) == TIM_OSSR_DISABLE))\n\n#define IS_TIM_OSSI_STATE(__STATE__)       (((__STATE__) == TIM_OSSI_ENABLE) || \\\n                                            ((__STATE__) == TIM_OSSI_DISABLE))\n\n#define IS_TIM_LOCK_LEVEL(__LEVEL__)       (((__LEVEL__) == TIM_LOCKLEVEL_OFF) || \\\n                                            ((__LEVEL__) == TIM_LOCKLEVEL_1)   || \\\n                                            ((__LEVEL__) == TIM_LOCKLEVEL_2)   || \\\n                                            ((__LEVEL__) == TIM_LOCKLEVEL_3))\n\n#define IS_TIM_BREAK_FILTER(__BRKFILTER__) ((__BRKFILTER__) <= 0xFUL)\n\n\n#define IS_TIM_BREAK_STATE(__STATE__)      (((__STATE__) == TIM_BREAK_ENABLE) || \\\n                                            ((__STATE__) == TIM_BREAK_DISABLE))\n\n#define IS_TIM_BREAK_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKPOLARITY_LOW) || \\\n                                             ((__POLARITY__) == TIM_BREAKPOLARITY_HIGH))\n#if  defined(TIM_BDTR_BKBID)\n\n#define IS_TIM_BREAK_AFMODE(__AFMODE__) (((__AFMODE__) == TIM_BREAK_AFMODE_INPUT) || \\\n                                         ((__AFMODE__) == TIM_BREAK_AFMODE_BIDIRECTIONAL))\n\n#endif /* TIM_BDTR_BKBID */\n\n#define IS_TIM_BREAK2_STATE(__STATE__)     (((__STATE__) == TIM_BREAK2_ENABLE) || \\\n                                            ((__STATE__) == TIM_BREAK2_DISABLE))\n\n#define IS_TIM_BREAK2_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAK2POLARITY_LOW) || \\\n                                              ((__POLARITY__) == TIM_BREAK2POLARITY_HIGH))\n#if  defined(TIM_BDTR_BKBID)\n\n#define IS_TIM_BREAK2_AFMODE(__AFMODE__) (((__AFMODE__) == TIM_BREAK2_AFMODE_INPUT) || \\\n                                          ((__AFMODE__) == TIM_BREAK2_AFMODE_BIDIRECTIONAL))\n\n#endif /* TIM_BDTR_BKBID */\n\n#define IS_TIM_AUTOMATIC_OUTPUT_STATE(__STATE__) (((__STATE__) == TIM_AUTOMATICOUTPUT_ENABLE) || \\\n                                                  ((__STATE__) == TIM_AUTOMATICOUTPUT_DISABLE))\n\n#define IS_TIM_GROUPCH5(__OCREF__) ((((__OCREF__) & 0x1FFFFFFFU) == 0x00000000U))\n\n#define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET)  || \\\n                                        ((__SOURCE__) == TIM_TRGO_ENABLE) || \\\n                                        ((__SOURCE__) == TIM_TRGO_UPDATE) || \\\n                                        ((__SOURCE__) == TIM_TRGO_OC1)    || \\\n                                        ((__SOURCE__) == TIM_TRGO_OC1REF) || \\\n                                        ((__SOURCE__) == TIM_TRGO_OC2REF) || \\\n                                        ((__SOURCE__) == TIM_TRGO_OC3REF) || \\\n                                        ((__SOURCE__) == TIM_TRGO_OC4REF))\n\n#define IS_TIM_TRGO2_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO2_RESET)                        || \\\n                                         ((__SOURCE__) == TIM_TRGO2_ENABLE)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_UPDATE)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC1)                          || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC1REF)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC2REF)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC3REF)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC3REF)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC4REF)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC5REF)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC6REF)                       || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC4REF_RISINGFALLING)         || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC6REF_RISINGFALLING)         || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_RISING)  || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING) || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_RISING)  || \\\n                                         ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING))\n\n#define IS_TIM_MSM_STATE(__STATE__)      (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \\\n                                          ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE))\n\n#define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE)   || \\\n                                     ((__MODE__) == TIM_SLAVEMODE_RESET)     || \\\n                                     ((__MODE__) == TIM_SLAVEMODE_GATED)     || \\\n                                     ((__MODE__) == TIM_SLAVEMODE_TRIGGER)   || \\\n                                     ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1) || \\\n                                     ((__MODE__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))\n\n#define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1)               || \\\n                                   ((__MODE__) == TIM_OCMODE_PWM2)               || \\\n                                   ((__MODE__) == TIM_OCMODE_COMBINED_PWM1)      || \\\n                                   ((__MODE__) == TIM_OCMODE_COMBINED_PWM2)      || \\\n                                   ((__MODE__) == TIM_OCMODE_ASSYMETRIC_PWM1)    || \\\n                                   ((__MODE__) == TIM_OCMODE_ASSYMETRIC_PWM2))\n\n#define IS_TIM_OC_MODE(__MODE__)  (((__MODE__) == TIM_OCMODE_TIMING)             || \\\n                                   ((__MODE__) == TIM_OCMODE_ACTIVE)             || \\\n                                   ((__MODE__) == TIM_OCMODE_INACTIVE)           || \\\n                                   ((__MODE__) == TIM_OCMODE_TOGGLE)             || \\\n                                   ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE)      || \\\n                                   ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE)    || \\\n                                   ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM1) || \\\n                                   ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM2))\n\n#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR1)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR2)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR3)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR4)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR5)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR6)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR7)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR8)    || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR12)   || \\\n                                                 ((__SELECTION__) == TIM_TS_ITR13)   || \\\n                                                 ((__SELECTION__) == TIM_TS_TI1F_ED) || \\\n                                                 ((__SELECTION__) == TIM_TS_TI1FP1)  || \\\n                                                 ((__SELECTION__) == TIM_TS_TI2FP2)  || \\\n                                                 ((__SELECTION__) == TIM_TS_ETRF))\n\n#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR1)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR2)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR3)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR4)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR5)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR6)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR7)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR8)  || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR12) || \\\n                                                               ((__SELECTION__) == TIM_TS_ITR13) || \\\n                                                               ((__SELECTION__) == TIM_TS_NONE))\n\n#define IS_TIM_TRIGGERPOLARITY(__POLARITY__)   (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED   ) || \\\n                                                ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \\\n                                                ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING     ) || \\\n                                                ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING    ) || \\\n                                                ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE   ))\n\n#define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \\\n                                                ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \\\n                                                ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \\\n                                                ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8))\n\n#define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)\n\n#define IS_TIM_TI1SELECTION(__TI1SELECTION__)  (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \\\n                                                ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION))\n\n#define IS_TIM_DMA_LENGTH(__LENGTH__)      (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER)   || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS)  || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \\\n                                            ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS))\n\n#define IS_TIM_DMA_DATA_LENGTH(LENGTH) (((LENGTH) >= 0x1U) && ((LENGTH) < 0x10000U))\n\n#define IS_TIM_IC_FILTER(__ICFILTER__)   ((__ICFILTER__) <= 0xFU)\n\n#define IS_TIM_DEADTIME(__DEADTIME__)    ((__DEADTIME__) <= 0xFFU)\n\n#define IS_TIM_BREAK_SYSTEM(__CONFIG__)    (((__CONFIG__) == TIM_BREAK_SYSTEM_ECC)                  || \\\n                                            ((__CONFIG__) == TIM_BREAK_SYSTEM_PVD)                  || \\\n                                            ((__CONFIG__) == TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR)    || \\\n                                            ((__CONFIG__) == TIM_BREAK_SYSTEM_LOCKUP))\n\n#define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) (((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER) || \\\n                                                       ((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))\n\n#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\\\n   ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))\n\n#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\\\n   ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC))\n\n#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\\\n   ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))\n\n#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\\\n   ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))\n\n#define TIM_CHANNEL_STATE_GET(__HANDLE__, __CHANNEL__)\\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelState[0] :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelState[1] :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelState[2] :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? (__HANDLE__)->ChannelState[3] :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? (__HANDLE__)->ChannelState[4] :\\\n   (__HANDLE__)->ChannelState[5])\n\n#define TIM_CHANNEL_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->ChannelState[4] = (__CHANNEL_STATE__)) :\\\n   ((__HANDLE__)->ChannelState[5] = (__CHANNEL_STATE__)))\n\n#define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__,  __CHANNEL_STATE__) do { \\\n                                                                       (__HANDLE__)->ChannelState[0]  = \\\n                                                                       (__CHANNEL_STATE__);  \\\n                                                                       (__HANDLE__)->ChannelState[1]  = \\\n                                                                       (__CHANNEL_STATE__);  \\\n                                                                       (__HANDLE__)->ChannelState[2]  = \\\n                                                                       (__CHANNEL_STATE__);  \\\n                                                                       (__HANDLE__)->ChannelState[3]  = \\\n                                                                       (__CHANNEL_STATE__);  \\\n                                                                       (__HANDLE__)->ChannelState[4]  = \\\n                                                                       (__CHANNEL_STATE__);  \\\n                                                                       (__HANDLE__)->ChannelState[5]  = \\\n                                                                       (__CHANNEL_STATE__);  \\\n                                                                     } while(0)\n\n#define TIM_CHANNEL_N_STATE_GET(__HANDLE__, __CHANNEL__)\\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelNState[0] :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelNState[1] :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelNState[2] :\\\n   (__HANDLE__)->ChannelNState[3])\n\n#define TIM_CHANNEL_N_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \\\n  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelNState[0] = (__CHANNEL_STATE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelNState[1] = (__CHANNEL_STATE__)) :\\\n   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelNState[2] = (__CHANNEL_STATE__)) :\\\n   ((__HANDLE__)->ChannelNState[3] = (__CHANNEL_STATE__)))\n\n#define TIM_CHANNEL_N_STATE_SET_ALL(__HANDLE__,  __CHANNEL_STATE__) do { \\\n                                                                         (__HANDLE__)->ChannelNState[0] = \\\n                                                                         (__CHANNEL_STATE__);  \\\n                                                                         (__HANDLE__)->ChannelNState[1] = \\\n                                                                         (__CHANNEL_STATE__);  \\\n                                                                         (__HANDLE__)->ChannelNState[2] = \\\n                                                                         (__CHANNEL_STATE__);  \\\n                                                                         (__HANDLE__)->ChannelNState[3] = \\\n                                                                         (__CHANNEL_STATE__);  \\\n                                                                       } while(0)\n\n/**\n  * @}\n  */\n/* End of private macros -----------------------------------------------------*/\n\n/* Include TIM HAL Extended module */\n#include \"stm32h7xx_hal_tim_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup TIM_Exported_Functions TIM Exported Functions\n  * @{\n  */\n\n/** @addtogroup TIM_Exported_Functions_Group1 TIM Time Base functions\n  *  @brief   Time Base functions\n  * @{\n  */\n/* Time Base functions ********************************************************/\nHAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim);\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);\nHAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim);\n/**\n  * @}\n  */\n\n/** @addtogroup TIM_Exported_Functions_Group2 TIM Output Compare functions\n  *  @brief   TIM Output Compare functions\n  * @{\n  */\n/* Timer Output Compare functions *********************************************/\nHAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim);\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\nHAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIM_Exported_Functions_Group3 TIM PWM functions\n  *  @brief   TIM PWM functions\n  * @{\n  */\n/* Timer PWM functions ********************************************************/\nHAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim);\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\nHAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIM_Exported_Functions_Group4 TIM Input Capture functions\n  *  @brief   TIM Input Capture functions\n  * @{\n  */\n/* Timer Input Capture functions **********************************************/\nHAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim);\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\nHAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIM_Exported_Functions_Group5 TIM One Pulse functions\n  *  @brief   TIM One Pulse functions\n  * @{\n  */\n/* Timer One Pulse functions **************************************************/\nHAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode);\nHAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim);\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\nHAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\nHAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIM_Exported_Functions_Group6 TIM Encoder functions\n  *  @brief   TIM Encoder functions\n  * @{\n  */\n/* Timer Encoder functions ****************************************************/\nHAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef *sConfig);\nHAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim);\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,\n                                            uint32_t *pData2, uint16_t Length);\nHAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIM_Exported_Functions_Group7 TIM IRQ handler management\n  *  @brief   IRQ handler management\n  * @{\n  */\n/* Interrupt Handler functions  ***********************************************/\nvoid HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions\n  *  @brief   Peripheral Control functions\n  * @{\n  */\n/* Control functions  *********************************************************/\nHAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,\n                                                 uint32_t OutputChannel,  uint32_t InputChannel);\nHAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig,\n                                           uint32_t Channel);\nHAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);\nHAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);\nHAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);\nHAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);\nHAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                              uint32_t BurstRequestSrc, uint32_t  *BurstBuffer, uint32_t  BurstLength);\nHAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                                   uint32_t BurstRequestSrc, uint32_t *BurstBuffer,\n                                                   uint32_t BurstLength,  uint32_t DataLength);\nHAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);\nHAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                             uint32_t BurstRequestSrc, uint32_t  *BurstBuffer, uint32_t  BurstLength);\nHAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                                  uint32_t BurstRequestSrc, uint32_t  *BurstBuffer,\n                                                  uint32_t  BurstLength, uint32_t  DataLength);\nHAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);\nHAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);\nuint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions\n  *  @brief   TIM Callbacks functions\n  * @{\n  */\n/* Callback in non blocking modes (Interrupt and DMA) *************************/\nvoid HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);\n\n/* Callbacks Register/UnRegister functions  ***********************************/\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\nHAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,\n                                           pTIM_CallbackTypeDef pCallback);\nHAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions\n  *  @brief  Peripheral State functions\n  * @{\n  */\n/* Peripheral State functions  ************************************************/\nHAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);\nHAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim);\nHAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim);\nHAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim);\nHAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim);\nHAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);\n\n/* Peripheral Channel state functions  ************************************************/\nHAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(TIM_HandleTypeDef *htim);\nHAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(TIM_HandleTypeDef *htim,  uint32_t Channel);\nHAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(TIM_HandleTypeDef *htim);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* End of exported functions -------------------------------------------------*/\n\n/* Private functions----------------------------------------------------------*/\n/** @defgroup TIM_Private_Functions TIM Private Functions\n  * @{\n  */\nvoid TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);\nvoid TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);\nvoid TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\nvoid TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler,\n                       uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter);\n\nvoid TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma);\nvoid TIM_DMAError(DMA_HandleTypeDef *hdma);\nvoid TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma);\nvoid TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma);\nvoid TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\nvoid TIM_ResetCallback(TIM_HandleTypeDef *htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n/* End of private functions --------------------------------------------------*/\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_TIM_H */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_tim_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of TIM HAL Extended module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_TIM_EX_H\n#define STM32H7xx_HAL_TIM_EX_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup TIMEx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup TIMEx_Exported_Types TIM Extended Exported Types\n  * @{\n  */\n\n/**\n  * @brief  TIM Hall sensor Configuration Structure definition\n  */\n\ntypedef struct\n{\n  uint32_t IC1Polarity;         /*!< Specifies the active edge of the input signal.\n                                     This parameter can be a value of @ref TIM_Input_Capture_Polarity */\n\n  uint32_t IC1Prescaler;        /*!< Specifies the Input Capture Prescaler.\n                                     This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\n\n  uint32_t IC1Filter;           /*!< Specifies the input capture filter.\n                                     This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\n\n  uint32_t Commutation_Delay;   /*!< Specifies the pulse value to be loaded into the Capture Compare Register.\n                                     This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\n} TIM_HallSensor_InitTypeDef;\n#if defined(TIM_BREAK_INPUT_SUPPORT)\n\n/**\n  * @brief  TIM Break/Break2 input configuration\n  */\ntypedef struct\n{\n  uint32_t Source;         /*!< Specifies the source of the timer break input.\n                                This parameter can be a value of @ref TIMEx_Break_Input_Source */\n  uint32_t Enable;         /*!< Specifies whether or not the break input source is enabled.\n                                This parameter can be a value of @ref TIMEx_Break_Input_Source_Enable */\n  uint32_t Polarity;       /*!< Specifies the break input source polarity.\n                                This parameter can be a value of @ref TIMEx_Break_Input_Source_Polarity\n                                Not relevant when analog watchdog output of the DFSDM1 used as break input source */\n} TIMEx_BreakInputConfigTypeDef;\n\n#endif /* TIM_BREAK_INPUT_SUPPORT */\n/**\n  * @}\n  */\n/* End of exported types -----------------------------------------------------*/\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup TIMEx_Exported_Constants TIM Extended Exported Constants\n  * @{\n  */\n\n/** @defgroup TIMEx_Remap TIM Extended Remapping\n  * @{\n  */\n#define TIM_TIM1_ETR_GPIO        0x00000000U                                                 /* !< TIM1_ETR is connected to GPIO */\n#define TIM_TIM1_ETR_COMP1       TIM1_AF1_ETRSEL_0                                           /* !< TIM1_ETR is connected to COMP1 OUT */\n#define TIM_TIM1_ETR_COMP2       TIM1_AF1_ETRSEL_1                                           /* !< TIM1_ETR is connected to COMP2 OUT */\n#define TIM_TIM1_ETR_ADC1_AWD1   (TIM1_AF1_ETRSEL_1 | TIM1_AF1_ETRSEL_0)                     /* !< TIM1_ETR is connected to ADC1 AWD1 */\n#define TIM_TIM1_ETR_ADC1_AWD2   (TIM1_AF1_ETRSEL_2)                                         /* !< TIM1_ETR is connected to ADC1 AWD2 */\n#define TIM_TIM1_ETR_ADC1_AWD3   (TIM1_AF1_ETRSEL_2 | TIM1_AF1_ETRSEL_0)                     /* !< TIM1_ETR is connected to ADC1 AWD3 */\n#define TIM_TIM1_ETR_ADC3_AWD1   (TIM1_AF1_ETRSEL_2 | TIM1_AF1_ETRSEL_1)                     /* !< TIM1_ETR is connected to ADC3 AWD1 */\n#define TIM_TIM1_ETR_ADC3_AWD2   (TIM1_AF1_ETRSEL_2 | TIM1_AF1_ETRSEL_1 | TIM1_AF1_ETRSEL_0) /* !< TIM1_ETR is connected to ADC3 AWD2 */\n#define TIM_TIM1_ETR_ADC3_AWD3   TIM1_AF1_ETRSEL_3                                           /* !< TIM1_ETR is connected to ADC3 AWD3 */\n\n#define TIM_TIM8_ETR_GPIO        0x00000000U                                                 /* !< TIM8_ETR is connected to GPIO */\n#define TIM_TIM8_ETR_COMP1       TIM8_AF1_ETRSEL_0                                           /* !< TIM8_ETR is connected to COMP1 OUT */\n#define TIM_TIM8_ETR_COMP2       TIM8_AF1_ETRSEL_1                                           /* !< TIM8_ETR is connected to COMP2 OUT */\n#define TIM_TIM8_ETR_ADC2_AWD1   (TIM8_AF1_ETRSEL_1 | TIM8_AF1_ETRSEL_0)                     /* !< TIM8_ETR is connected to ADC2 AWD1 */\n#define TIM_TIM8_ETR_ADC2_AWD2   (TIM8_AF1_ETRSEL_2)                                         /* !< TIM8_ETR is connected to ADC2 AWD2 */\n#define TIM_TIM8_ETR_ADC2_AWD3   (TIM8_AF1_ETRSEL_2 | TIM8_AF1_ETRSEL_0)                     /* !< TIM8_ETR is connected to ADC2 AWD3 */\n#define TIM_TIM8_ETR_ADC3_AWD1   (TIM8_AF1_ETRSEL_2 | TIM8_AF1_ETRSEL_1)                     /* !< TIM8_ETR is connected to ADC3 AWD1 */\n#define TIM_TIM8_ETR_ADC3_AWD2   (TIM8_AF1_ETRSEL_2 | TIM8_AF1_ETRSEL_1 | TIM8_AF1_ETRSEL_0) /* !< TIM8_ETR is connected to ADC3 AWD2 */\n#define TIM_TIM8_ETR_ADC3_AWD3   TIM8_AF1_ETRSEL_3                                           /* !< TIM8_ETR is connected to ADC3 AWD3 */\n\n#define TIM_TIM2_ETR_GPIO        0x00000000U                             /* !< TIM2_ETR is connected to GPIO */\n#define TIM_TIM2_ETR_COMP1       (TIM2_AF1_ETRSEL_0)                     /* !< TIM2_ETR is connected to COMP1 OUT */\n#define TIM_TIM2_ETR_COMP2       (TIM2_AF1_ETRSEL_1)                     /* !< TIM2_ETR is connected to COMP2 OUT */\n#define TIM_TIM2_ETR_RCC_LSE     (TIM2_AF1_ETRSEL_1 | TIM8_AF1_ETRSEL_0) /* !< TIM2_ETR is connected to RCC LSE */\n#define TIM_TIM2_ETR_SAI1_FSA    TIM2_AF1_ETRSEL_2                       /* !< TIM2_ETR is connected to SAI1 FS_A */\n#define TIM_TIM2_ETR_SAI1_FSB    (TIM2_AF1_ETRSEL_2 | TIM8_AF1_ETRSEL_0) /* !< TIM2_ETR is connected to SAI1 FS_B */\n\n#define TIM_TIM3_ETR_GPIO        0x00000000U          /* !< TIM3_ETR is connected to GPIO */\n#define TIM_TIM3_ETR_COMP1       TIM3_AF1_ETRSEL_0    /* !< TIM3_ETR is connected to COMP1 OUT */\n\n#define TIM_TIM5_ETR_GPIO        0x00000000U          /* !< TIM5_ETR is connected to GPIO */\n#define TIM_TIM5_ETR_SAI2_FSA    TIM5_AF1_ETRSEL_0    /* !< TIM5_ETR is connected to SAI2 FS_A */\n#define TIM_TIM5_ETR_SAI2_FSB    TIM5_AF1_ETRSEL_1    /* !< TIM5_ETR is connected to SAI2 FS_B */\n#define TIM_TIM5_ETR_SAI4_FSA    TIM5_AF1_ETRSEL_0    /* !< TIM5_ETR is connected to SAI4 FS_A */\n#define TIM_TIM5_ETR_SAI4_FSB    TIM5_AF1_ETRSEL_1    /* !< TIM5_ETR is connected to SAI4 FS_B */\n\n#define TIM_TIM23_ETR_GPIO       0x00000000U          /* !< TIM23_ETR is connected to GPIO */\n#define TIM_TIM23_ETR_COMP1      (TIM2_AF1_ETRSEL_0)  /* !< TIM23_ETR is connected to COMP1 OUT */\n#define TIM_TIM23_ETR_COMP2      (TIM2_AF1_ETRSEL_1)  /* !< TIM23_ETR is connected to COMP2 OUT */\n\n#define TIM_TIM24_ETR_GPIO        0x00000000U                                /* !< TIM24_ETR is connected to GPIO */\n#define TIM_TIM24_ETR_SAI4_FSA    TIM5_AF1_ETRSEL_0                          /* !< TIM24_ETR is connected to SAI4 FS_A */\n#define TIM_TIM24_ETR_SAI4_FSB    TIM5_AF1_ETRSEL_1                          /* !< TIM24_ETR is connected to SAI4 FS_B */\n#define TIM_TIM24_ETR_SAI1_FSA    (TIM2_AF1_ETRSEL_1 | TIM8_AF1_ETRSEL_0)    /* !< TIM24_ETR is connected to SAI1 FS_A */\n#define TIM_TIM24_ETR_SAI1_FSB    TIM2_AF1_ETRSEL_2                          /* !< TIM24_ETR is connected to SAI1 FS_B */\n/**\n  * @}\n  */\n#if defined(TIM_BREAK_INPUT_SUPPORT)\n\n/** @defgroup TIMEx_Break_Input TIM Extended Break input\n  * @{\n  */\n#define TIM_BREAKINPUT_BRK     0x00000001U                                      /*!< Timer break input  */\n#define TIM_BREAKINPUT_BRK2    0x00000002U                                      /*!< Timer break2 input */\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Break_Input_Source TIM Extended Break input source\n  * @{\n  */\n#define TIM_BREAKINPUTSOURCE_BKIN     0x00000001U                               /* !< An external source (GPIO) is connected to the BKIN pin  */\n#define TIM_BREAKINPUTSOURCE_COMP1    0x00000002U                               /* !< The COMP1 output is connected to the break input */\n#define TIM_BREAKINPUTSOURCE_COMP2    0x00000004U                               /* !< The COMP2 output is connected to the break input */\n#define TIM_BREAKINPUTSOURCE_DFSDM1   0x00000008U                               /* !< The analog watchdog output of the DFSDM1 peripheral is connected to the break input */\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Break_Input_Source_Enable TIM Extended Break input source enabling\n  * @{\n  */\n#define TIM_BREAKINPUTSOURCE_DISABLE     0x00000000U                            /*!< Break input source is disabled */\n#define TIM_BREAKINPUTSOURCE_ENABLE      0x00000001U                            /*!< Break input source is enabled */\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Break_Input_Source_Polarity TIM Extended Break input polarity\n  * @{\n  */\n#define TIM_BREAKINPUTSOURCE_POLARITY_LOW     0x00000001U                       /*!< Break input source is active low */\n#define TIM_BREAKINPUTSOURCE_POLARITY_HIGH    0x00000000U                       /*!< Break input source is active_high */\n/**\n  * @}\n  */\n#endif /* TIM_BREAK_INPUT_SUPPORT */\n\n/** @defgroup TIMEx_Timer_Input_Selection TIM Extended Timer input selection\n  * @{\n  */\n#define TIM_TIM1_TI1_GPIO                          0x00000000U                               /* !< TIM1_TI1 is connected to GPIO */\n#define TIM_TIM1_TI1_COMP1                         TIM_TISEL_TI1SEL_0                        /* !< TIM1_TI1 is connected to COMP1 OUT */\n\n#define TIM_TIM8_TI1_GPIO                          0x00000000U                               /* !< TIM8_TI1 is connected to GPIO */\n#define TIM_TIM8_TI1_COMP2                         TIM_TISEL_TI1SEL_0                        /* !< TIM8_TI1 is connected to COMP2 OUT */\n\n#define TIM_TIM2_TI4_GPIO                          0x00000000U                               /* !< TIM2_TI4 is connected to GPIO */\n#define TIM_TIM2_TI4_COMP1                         TIM_TISEL_TI4SEL_0                        /* !< TIM2_TI4 is connected to COMP1 OUT */\n#define TIM_TIM2_TI4_COMP2                         TIM_TISEL_TI4SEL_1                        /* !< TIM2_TI4 is connected to COMP2 OUT */\n#define TIM_TIM2_TI4_COMP1_COMP2                   (TIM_TISEL_TI4SEL_0 | TIM_TISEL_TI4SEL_1) /* !< TIM2_TI4 is connected to COMP2 OUT OR COMP2 OUT */\n\n#define TIM_TIM3_TI1_GPIO                          0x00000000U                               /* !< TIM3_TI1 is connected to GPIO */\n#define TIM_TIM3_TI1_COMP1                         TIM_TISEL_TI1SEL_0                        /* !< TIM3_TI1 is connected to COMP1 OUT */\n#define TIM_TIM3_TI1_COMP2                         TIM_TISEL_TI1SEL_1                        /* !< TIM3_TI1 is connected to COMP2 OUT */\n#define TIM_TIM3_TI1_COMP1_COMP2                   (TIM_TISEL_TI1SEL_0 | TIM_TISEL_TI1SEL_1) /* !< TIM3_TI1 is connected to COMP1 OUT or COMP2 OUT */\n\n#define TIM_TIM5_TI1_GPIO                          0x00000000U                               /* !< TIM5_TI1 is connected to GPIO */\n#define TIM_TIM5_TI1_CAN_TMP                       TIM_TISEL_TI1SEL_0                        /* !< TIM5_TI1 is connected to CAN TMP */\n#define TIM_TIM5_TI1_CAN_RTP                       TIM_TISEL_TI1SEL_1                        /* !< TIM5_TI1 is connected to CAN RTP */\n\n#define TIM_TIM12_TI1_GPIO                         0x00000000U                               /* !< TIM12 TI1 is connected to GPIO */\n#define TIM_TIM12_TI1_SPDIF_FS                     TIM_TISEL_TI1SEL_0                        /* !< TIM12 TI1 is connected to SPDIF FS */\n\n#define TIM_TIM15_TI1_GPIO                         0x00000000U                               /* !< TIM15_TI1 is connected to GPIO */\n#define TIM_TIM15_TI1_TIM2_CH1                     TIM_TISEL_TI1SEL_0                        /* !< TIM15_TI1 is connected to TIM2 CH1 */\n#define TIM_TIM15_TI1_TIM3_CH1                     TIM_TISEL_TI1SEL_1                        /* !< TIM15_TI1 is connected to TIM3 CH1 */\n#define TIM_TIM15_TI1_TIM4_CH1                     (TIM_TISEL_TI1SEL_0 | TIM_TISEL_TI1SEL_1) /* !< TIM15_TI1 is connected to TIM4 CH1 */\n#define TIM_TIM15_TI1_RCC_LSE                      (TIM_TISEL_TI1SEL_2)                      /* !< TIM15_TI1 is connected to RCC LSE  */\n#define TIM_TIM15_TI1_RCC_CSI                      (TIM_TISEL_TI1SEL_2 | TIM_TISEL_TI1SEL_0) /* !< TIM15_TI1 is connected to RCC CSI  */\n#define TIM_TIM15_TI1_RCC_MCO2                     (TIM_TISEL_TI1SEL_2 | TIM_TISEL_TI1SEL_1) /* !< TIM15_TI1 is connected to RCC MCO2 */\n\n#define TIM_TIM15_TI2_GPIO                         0x00000000U                               /* !< TIM15_TI2 is connected to GPIO */\n#define TIM_TIM15_TI2_TIM2_CH2                     (TIM_TISEL_TI2SEL_0)                      /* !< TIM15_TI2 is connected to TIM2 CH2 */\n#define TIM_TIM15_TI2_TIM3_CH2                     (TIM_TISEL_TI2SEL_1)                      /* !< TIM15_TI2 is connected to TIM3 CH2 */\n#define TIM_TIM15_TI2_TIM4_CH2                     (TIM_TISEL_TI2SEL_0 | TIM_TISEL_TI2SEL_1) /* !< TIM15_TI2 is connected to TIM4 CH2 */\n\n#define TIM_TIM16_TI1_GPIO                         0x00000000U                               /* !< TIM16 TI1 is connected to GPIO */\n#define TIM_TIM16_TI1_RCC_LSI                      TIM_TISEL_TI1SEL_0                        /* !< TIM16 TI1 is connected to RCC LSI */\n#define TIM_TIM16_TI1_RCC_LSE                      TIM_TISEL_TI1SEL_1                        /* !< TIM16 TI1 is connected to RCC LSE */\n#define TIM_TIM16_TI1_WKUP_IT                      (TIM_TISEL_TI1SEL_0 | TIM_TISEL_TI1SEL_1) /* !< TIM16 TI1 is connected to WKUP_IT */\n\n#define TIM_TIM17_TI1_GPIO                         0x00000000U                               /* !< TIM17 TI1 is connected to GPIO */\n#define TIM_TIM17_TI1_SPDIF_FS                     TIM_TISEL_TI1SEL_0                        /* !< TIM17 TI1 is connected to SPDIF FS */\n#define TIM_TIM17_TI1_RCC_HSE1MHZ                  TIM_TISEL_TI1SEL_1                        /* !< TIM17 TI1 is connected to RCC HSE 1Mhz */\n#define TIM_TIM17_TI1_RCC_MCO1                     (TIM_TISEL_TI1SEL_0 | TIM_TISEL_TI1SEL_1) /* !< TIM17 TI1 is connected to RCC MCO1 */\n\n#define TIM_TIM23_TI4_GPIO                         0x00000000U                               /* !< TIM23_TI4 is connected to GPIO */\n#define TIM_TIM23_TI4_COMP1                        TIM_TISEL_TI4SEL_0                        /* !< TIM23_TI4 is connected to COMP1 OUT */\n#define TIM_TIM23_TI4_COMP2                        TIM_TISEL_TI4SEL_1                        /* !< TIM23_TI4 is connected to COMP2 OUT */\n#define TIM_TIM23_TI4_COMP1_COMP2                  (TIM_TISEL_TI4SEL_0 | TIM_TISEL_TI4SEL_1) /* !< TIM23_TI4 is connected to COMP1 OUT or COMP2 OUT */\n\n#define TIM_TIM24_TI1_GPIO                         0x00000000U                               /* !< TIM24_TI1 is connected to GPIO */\n#define TIM_TIM24_TI1_CAN_TMP                      TIM_TISEL_TI1SEL_0                        /* !< TIM24_TI1 is connected to CAN TMP  */\n#define TIM_TIM24_TI1_CAN_RTP                      TIM_TISEL_TI1SEL_1                        /* !< TIM24_TI1 is connected to CAN RTP  */\n#define TIM_TIM24_TI1_CAN_SOC                      (TIM_TISEL_TI4SEL_0 | TIM_TISEL_TI4SEL_1) /* !< TIM24_TI1 is connected to CAN SOC */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* End of exported constants -------------------------------------------------*/\n\n/* Exported macro ------------------------------------------------------------*/\n/** @defgroup TIMEx_Exported_Macros TIM Extended Exported Macros\n  * @{\n  */\n\n/**\n  * @}\n  */\n/* End of exported macro -----------------------------------------------------*/\n\n/* Private macro -------------------------------------------------------------*/\n/** @defgroup TIMEx_Private_Macros TIM Extended Private Macros\n  * @{\n  */\n#define IS_TIM_BREAKINPUT(__BREAKINPUT__)  (((__BREAKINPUT__) == TIM_BREAKINPUT_BRK)  || \\\n                                            ((__BREAKINPUT__) == TIM_BREAKINPUT_BRK2))\n\n#define IS_TIM_BREAKINPUTSOURCE(__SOURCE__)  (((__SOURCE__) == TIM_BREAKINPUTSOURCE_BKIN)  || \\\n                                              ((__SOURCE__) == TIM_BREAKINPUTSOURCE_COMP1) || \\\n                                              ((__SOURCE__) == TIM_BREAKINPUTSOURCE_COMP2) || \\\n                                              ((__SOURCE__) == TIM_BREAKINPUTSOURCE_DFSDM1))\n\n#define IS_TIM_BREAKINPUTSOURCE_STATE(__STATE__)  (((__STATE__) == TIM_BREAKINPUTSOURCE_DISABLE)  || \\\n                                                   ((__STATE__) == TIM_BREAKINPUTSOURCE_ENABLE))\n\n#define IS_TIM_BREAKINPUTSOURCE_POLARITY(__POLARITY__)  (((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_LOW)  || \\\n                                                         ((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_HIGH))\n\n#define IS_TIM_TISEL(__TISEL__)  (((__TISEL__) == TIM_TIM1_TI1_GPIO)         ||\\\n                                  ((__TISEL__) == TIM_TIM1_TI1_COMP1)        ||\\\n                                  ((__TISEL__) == TIM_TIM8_TI1_GPIO)         ||\\\n                                  ((__TISEL__) == TIM_TIM8_TI1_COMP2)        ||\\\n                                  ((__TISEL__) == TIM_TIM2_TI4_GPIO)         ||\\\n                                  ((__TISEL__) == TIM_TIM2_TI4_COMP1)        ||\\\n                                  ((__TISEL__) == TIM_TIM2_TI4_COMP2)        ||\\\n                                  ((__TISEL__) == TIM_TIM2_TI4_COMP1_COMP2)  ||\\\n                                  ((__TISEL__) == TIM_TIM3_TI1_GPIO)         ||\\\n                                  ((__TISEL__) == TIM_TIM3_TI1_COMP1)        ||\\\n                                  ((__TISEL__) == TIM_TIM3_TI1_COMP2)        ||\\\n                                  ((__TISEL__) == TIM_TIM3_TI1_COMP1_COMP2)  ||\\\n                                  ((__TISEL__) == TIM_TIM5_TI1_GPIO)         ||\\\n                                  ((__TISEL__) == TIM_TIM5_TI1_CAN_TMP)      ||\\\n                                  ((__TISEL__) == TIM_TIM5_TI1_CAN_RTP)      ||\\\n                                  ((__TISEL__) == TIM_TIM12_TI1_SPDIF_FS)    ||\\\n                                  ((__TISEL__) == TIM_TIM12_TI1_GPIO)        ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI1_GPIO)        ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI1_TIM2_CH1)    ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI1_TIM3_CH1)    ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI1_TIM4_CH1)    ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI1_RCC_LSE)     ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI1_RCC_CSI)     ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI1_RCC_MCO2)    ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI2_GPIO)        ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI2_TIM2_CH2)    ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI2_TIM3_CH2)    ||\\\n                                  ((__TISEL__) == TIM_TIM15_TI2_TIM4_CH2)    ||\\\n                                  ((__TISEL__) == TIM_TIM16_TI1_GPIO)        ||\\\n                                  ((__TISEL__) == TIM_TIM16_TI1_RCC_LSI)     ||\\\n                                  ((__TISEL__) == TIM_TIM16_TI1_RCC_LSE)     ||\\\n                                  ((__TISEL__) == TIM_TIM16_TI1_WKUP_IT)     ||\\\n                                  ((__TISEL__) == TIM_TIM17_TI1_GPIO)        ||\\\n                                  ((__TISEL__) == TIM_TIM17_TI1_SPDIF_FS)    ||\\\n                                  ((__TISEL__) == TIM_TIM17_TI1_RCC_HSE1MHZ) ||\\\n                                  ((__TISEL__) == TIM_TIM17_TI1_RCC_MCO1)    ||\\\n                                  ((__TISEL__) == TIM_TIM23_TI4_GPIO)        ||\\\n                                  ((__TISEL__) == TIM_TIM23_TI4_COMP1)       ||\\\n                                  ((__TISEL__) == TIM_TIM23_TI4_COMP2)       ||\\\n                                  ((__TISEL__) == TIM_TIM23_TI4_COMP1_COMP2) ||\\\n                                  ((__TISEL__) == TIM_TIM24_TI1_GPIO)        ||\\\n                                  ((__TISEL__) == TIM_TIM24_TI1_CAN_TMP)     ||\\\n                                  ((__TISEL__) == TIM_TIM24_TI1_CAN_RTP)     ||\\\n                                  ((__TISEL__) == TIM_TIM24_TI1_CAN_SOC))\n\n#define IS_TIM_REMAP(__RREMAP__)     (((__RREMAP__) == TIM_TIM1_ETR_GPIO)      ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_ADC1_AWD1) ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_ADC1_AWD2) ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_ADC1_AWD3) ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_ADC3_AWD1) ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_ADC3_AWD2) ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_ADC3_AWD3) ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_COMP1)     ||\\\n                                      ((__RREMAP__) == TIM_TIM1_ETR_COMP2)     ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_GPIO)      ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_ADC2_AWD1) ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_ADC2_AWD2) ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_ADC2_AWD3) ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_ADC3_AWD1) ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_ADC3_AWD2) ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_ADC3_AWD3) ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_COMP1)     ||\\\n                                      ((__RREMAP__) == TIM_TIM8_ETR_COMP2)     ||\\\n                                      ((__RREMAP__) == TIM_TIM2_ETR_GPIO)      ||\\\n                                      ((__RREMAP__) == TIM_TIM2_ETR_COMP1)     ||\\\n                                      ((__RREMAP__) == TIM_TIM2_ETR_COMP2)     ||\\\n                                      ((__RREMAP__) == TIM_TIM2_ETR_RCC_LSE)   ||\\\n                                      ((__RREMAP__) == TIM_TIM2_ETR_SAI1_FSA)  ||\\\n                                      ((__RREMAP__) == TIM_TIM2_ETR_SAI1_FSB)  ||\\\n                                      ((__RREMAP__) == TIM_TIM3_ETR_GPIO)      ||\\\n                                      ((__RREMAP__) == TIM_TIM3_ETR_COMP1)     ||\\\n                                      ((__RREMAP__) == TIM_TIM5_ETR_GPIO)      ||\\\n                                      ((__RREMAP__) == TIM_TIM5_ETR_SAI2_FSA)  ||\\\n                                      ((__RREMAP__) == TIM_TIM5_ETR_SAI2_FSB)  ||\\\n                                      ((__RREMAP__) == TIM_TIM23_ETR_GPIO)     ||\\\n                                      ((__RREMAP__) == TIM_TIM23_ETR_COMP1)    ||\\\n                                      ((__RREMAP__) == TIM_TIM23_ETR_COMP2)    ||\\\n                                      ((__RREMAP__) == TIM_TIM24_ETR_GPIO)     ||\\\n                                      ((__RREMAP__) == TIM_TIM24_ETR_SAI4_FSA) ||\\\n                                      ((__RREMAP__) == TIM_TIM24_ETR_SAI4_FSB) ||\\\n                                      ((__RREMAP__) == TIM_TIM24_ETR_SAI1_FSA) ||\\\n                                      ((__RREMAP__) == TIM_TIM24_ETR_SAI1_FSB))\n\n/**\n  * @}\n  */\n/* End of private macro ------------------------------------------------------*/\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup TIMEx_Exported_Functions TIM Extended Exported Functions\n  * @{\n  */\n\n/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions\n  *  @brief    Timer Hall Sensor functions\n  * @{\n  */\n/*  Timer Hall Sensor functions  **********************************************/\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);\n\nvoid HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim);\nvoid HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim);\n\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim);\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim);\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim);\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim);\n/**\n  * @}\n  */\n\n/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions\n  *  @brief   Timer Complementary Output Compare functions\n  * @{\n  */\n/*  Timer Complementary Output Compare functions  *****************************/\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\n\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\n\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\nHAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions\n  *  @brief    Timer Complementary PWM functions\n  * @{\n  */\n/*  Timer Complementary PWM functions  ****************************************/\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\n\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\n/* Non-Blocking mode: DMA */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions\n  *  @brief    Timer Complementary One Pulse functions\n  * @{\n  */\n/*  Timer Complementary One Pulse functions  **********************************/\n/* Blocking mode: Polling */\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\n\n/* Non-Blocking mode: Interrupt */\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\n/**\n  * @}\n  */\n\n/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions\n  *  @brief    Peripheral Control functions\n  * @{\n  */\n/* Extended Control functions  ************************************************/\nHAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t  InputTrigger,\n                                              uint32_t  CommutationSource);\nHAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t  InputTrigger,\n                                                 uint32_t  CommutationSource);\nHAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t  InputTrigger,\n                                                  uint32_t  CommutationSource);\nHAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,\n                                                        TIM_MasterConfigTypeDef *sMasterConfig);\nHAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,\n                                                TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);\n#if defined(TIM_BREAK_INPUT_SUPPORT)\nHAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput,\n                                             TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);\n#endif /* TIM_BREAK_INPUT_SUPPORT */\nHAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);\nHAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);\nHAL_StatusTypeDef  HAL_TIMEx_TISelection(TIM_HandleTypeDef *htim, uint32_t TISelection, uint32_t Channel);\n#if defined(TIM_BDTR_BKBID)\n\nHAL_StatusTypeDef HAL_TIMEx_DisarmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput);\nHAL_StatusTypeDef HAL_TIMEx_ReArmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput);\n#endif /* TIM_BDTR_BKBID */\n/**\n  * @}\n  */\n\n/** @addtogroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions\n  * @brief    Extended Callbacks functions\n  * @{\n  */\n/* Extended Callback **********************************************************/\nvoid HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim);\nvoid HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim);\n/**\n  * @}\n  */\n\n/** @addtogroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions\n  * @brief    Extended Peripheral State functions\n  * @{\n  */\n/* Extended Peripheral State functions  ***************************************/\nHAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim);\nHAL_TIM_ChannelStateTypeDef HAL_TIMEx_GetChannelNState(TIM_HandleTypeDef *htim,  uint32_t ChannelN);\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n/* End of exported functions -------------------------------------------------*/\n\n/* Private functions----------------------------------------------------------*/\n/** @addtogroup TIMEx_Private_Functions TIM Extended Private Functions\n  * @{\n  */\nvoid TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);\nvoid TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma);\n/**\n  * @}\n  */\n/* End of private functions --------------------------------------------------*/\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n\n#endif /* STM32H7xx_HAL_TIM_EX_H */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_uart.h\n  * @author  MCD Application Team\n  * @brief   Header file of UART HAL module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_UART_H\n#define STM32H7xx_HAL_UART_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup UART\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup UART_Exported_Types UART Exported Types\n  * @{\n  */\n\n/**\n  * @brief UART Init Structure definition\n  */\ntypedef struct\n{\n  uint32_t BaudRate;                /*!< This member configures the UART communication baud rate.\n                                         The baud rate register is computed using the following formula:\n                                         LPUART:\n                                         =======\n                                         Baud Rate Register = ((256 * lpuart_ker_ckpres) / ((huart->Init.BaudRate)))\n                                         where lpuart_ker_ck_pres is the UART input clock divided by a prescaler\n                                         UART:\n                                         =====\n                                         - If oversampling is 16 or in LIN mode,\n                                            Baud Rate Register = ((uart_ker_ckpres) / ((huart->Init.BaudRate)))\n                                         - If oversampling is 8,\n                                            Baud Rate Register[15:4] = ((2 * uart_ker_ckpres) /\n                                            ((huart->Init.BaudRate)))[15:4]\n                                            Baud Rate Register[3] =  0\n                                            Baud Rate Register[2:0] =  (((2 * uart_ker_ckpres) /\n                                            ((huart->Init.BaudRate)))[3:0]) >> 1\n                                         where uart_ker_ck_pres is the UART input clock divided by a prescaler */\n\n  uint32_t WordLength;              /*!< Specifies the number of data bits transmitted or received in a frame.\n                                         This parameter can be a value of @ref UARTEx_Word_Length. */\n\n  uint32_t StopBits;                /*!< Specifies the number of stop bits transmitted.\n                                         This parameter can be a value of @ref UART_Stop_Bits. */\n\n  uint32_t Parity;                  /*!< Specifies the parity mode.\n                                         This parameter can be a value of @ref UART_Parity\n                                         @note When parity is enabled, the computed parity is inserted\n                                               at the MSB position of the transmitted data (9th bit when\n                                               the word length is set to 9 data bits; 8th bit when the\n                                               word length is set to 8 data bits). */\n\n  uint32_t Mode;                    /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.\n                                         This parameter can be a value of @ref UART_Mode. */\n\n  uint32_t HwFlowCtl;               /*!< Specifies whether the hardware flow control mode is enabled\n                                         or disabled.\n                                         This parameter can be a value of @ref UART_Hardware_Flow_Control. */\n\n  uint32_t OverSampling;            /*!< Specifies whether the Over sampling 8 is enabled or disabled,\n                                         to achieve higher speed (up to f_PCLK/8).\n                                         This parameter can be a value of @ref UART_Over_Sampling. */\n\n  uint32_t OneBitSampling;          /*!< Specifies whether a single sample or three samples' majority vote is selected.\n                                         Selecting the single sample method increases the receiver tolerance to clock\n                                         deviations. This parameter can be a value of @ref UART_OneBit_Sampling. */\n\n  uint32_t ClockPrescaler;          /*!< Specifies the prescaler value used to divide the UART clock source.\n                                         This parameter can be a value of @ref UART_ClockPrescaler. */\n\n} UART_InitTypeDef;\n\n/**\n  * @brief  UART Advanced Features initialization structure definition\n  */\ntypedef struct\n{\n  uint32_t AdvFeatureInit;        /*!< Specifies which advanced UART features is initialized. Several\n                                       Advanced Features may be initialized at the same time .\n                                       This parameter can be a value of\n                                       @ref UART_Advanced_Features_Initialization_Type. */\n\n  uint32_t TxPinLevelInvert;      /*!< Specifies whether the TX pin active level is inverted.\n                                       This parameter can be a value of @ref UART_Tx_Inv. */\n\n  uint32_t RxPinLevelInvert;      /*!< Specifies whether the RX pin active level is inverted.\n                                       This parameter can be a value of @ref UART_Rx_Inv. */\n\n  uint32_t DataInvert;            /*!< Specifies whether data are inverted (positive/direct logic\n                                       vs negative/inverted logic).\n                                       This parameter can be a value of @ref UART_Data_Inv. */\n\n  uint32_t Swap;                  /*!< Specifies whether TX and RX pins are swapped.\n                                       This parameter can be a value of @ref UART_Rx_Tx_Swap. */\n\n  uint32_t OverrunDisable;        /*!< Specifies whether the reception overrun detection is disabled.\n                                       This parameter can be a value of @ref UART_Overrun_Disable. */\n\n  uint32_t DMADisableonRxError;   /*!< Specifies whether the DMA is disabled in case of reception error.\n                                       This parameter can be a value of @ref UART_DMA_Disable_on_Rx_Error. */\n\n  uint32_t AutoBaudRateEnable;    /*!< Specifies whether auto Baud rate detection is enabled.\n                                       This parameter can be a value of @ref UART_AutoBaudRate_Enable. */\n\n  uint32_t AutoBaudRateMode;      /*!< If auto Baud rate detection is enabled, specifies how the rate\n                                       detection is carried out.\n                                       This parameter can be a value of @ref UART_AutoBaud_Rate_Mode. */\n\n  uint32_t MSBFirst;              /*!< Specifies whether MSB is sent first on UART line.\n                                       This parameter can be a value of @ref UART_MSB_First. */\n} UART_AdvFeatureInitTypeDef;\n\n/**\n  * @brief HAL UART State definition\n  * @note  HAL UART State value is a combination of 2 different substates:\n  *        gState and RxState (see @ref UART_State_Definition).\n  *        - gState contains UART state information related to global Handle management\n  *          and also information related to Tx operations.\n  *          gState value coding follow below described bitmap :\n  *          b7-b6  Error information\n  *             00 : No Error\n  *             01 : (Not Used)\n  *             10 : Timeout\n  *             11 : Error\n  *          b5     Peripheral initialization status\n  *             0  : Reset (Peripheral not initialized)\n  *             1  : Init done (Peripheral initialized. HAL UART Init function already called)\n  *          b4-b3  (not used)\n  *             xx : Should be set to 00\n  *          b2     Intrinsic process state\n  *             0  : Ready\n  *             1  : Busy (Peripheral busy with some configuration or internal operations)\n  *          b1     (not used)\n  *             x  : Should be set to 0\n  *          b0     Tx state\n  *             0  : Ready (no Tx operation ongoing)\n  *             1  : Busy (Tx operation ongoing)\n  *        - RxState contains information related to Rx operations.\n  *          RxState value coding follow below described bitmap :\n  *          b7-b6  (not used)\n  *             xx : Should be set to 00\n  *          b5     Peripheral initialization status\n  *             0  : Reset (Peripheral not initialized)\n  *             1  : Init done (Peripheral initialized)\n  *          b4-b2  (not used)\n  *            xxx : Should be set to 000\n  *          b1     Rx state\n  *             0  : Ready (no Rx operation ongoing)\n  *             1  : Busy (Rx operation ongoing)\n  *          b0     (not used)\n  *             x  : Should be set to 0.\n  */\ntypedef uint32_t HAL_UART_StateTypeDef;\n\n/**\n  * @brief UART clock sources definition\n  */\ntypedef enum\n{\n  UART_CLOCKSOURCE_D2PCLK1    = 0x00U,    /*!< Domain2 PCLK1 clock source */\n  UART_CLOCKSOURCE_D2PCLK2    = 0x01U,    /*!< Domain2 PCLK2 clock source */\n  UART_CLOCKSOURCE_D3PCLK1    = 0x02U,    /*!< Domain3 PCLK1 clock source */\n  UART_CLOCKSOURCE_PLL2       = 0x04U,    /*!< PLL2Q clock source         */\n  UART_CLOCKSOURCE_PLL3       = 0x08U,    /*!< PLL3Q clock source         */\n  UART_CLOCKSOURCE_HSI        = 0x10U,    /*!< HSI clock source           */\n  UART_CLOCKSOURCE_CSI        = 0x20U,    /*!< CSI clock source           */\n  UART_CLOCKSOURCE_LSE        = 0x40U,    /*!< LSE clock source           */\n  UART_CLOCKSOURCE_UNDEFINED  = 0x80U     /*!< Undefined clock source     */\n} UART_ClockSourceTypeDef;\n\n/**\n  * @brief HAL UART Reception type definition\n  * @note  HAL UART Reception type value aims to identify which type of Reception is ongoing.\n  *        It is expected to admit following values :\n  *           HAL_UART_RECEPTION_STANDARD         = 0x00U,\n  *           HAL_UART_RECEPTION_TOIDLE           = 0x01U,\n  *           HAL_UART_RECEPTION_TORTO            = 0x02U,\n  *           HAL_UART_RECEPTION_TOCHARMATCH      = 0x03U,\n  */\ntypedef uint32_t HAL_UART_RxTypeTypeDef;\n\n/**\n  * @brief  UART handle Structure definition\n  */\ntypedef struct __UART_HandleTypeDef\n{\n  USART_TypeDef            *Instance;                /*!< UART registers base address        */\n\n  UART_InitTypeDef         Init;                     /*!< UART communication parameters      */\n\n  UART_AdvFeatureInitTypeDef AdvancedInit;           /*!< UART Advanced Features initialization parameters */\n\n  const uint8_t            *pTxBuffPtr;              /*!< Pointer to UART Tx transfer Buffer */\n\n  uint16_t                 TxXferSize;               /*!< UART Tx Transfer size              */\n\n  __IO uint16_t            TxXferCount;              /*!< UART Tx Transfer Counter           */\n\n  uint8_t                  *pRxBuffPtr;              /*!< Pointer to UART Rx transfer Buffer */\n\n  uint16_t                 RxXferSize;               /*!< UART Rx Transfer size              */\n\n  __IO uint16_t            RxXferCount;              /*!< UART Rx Transfer Counter           */\n\n  uint16_t                 Mask;                     /*!< UART Rx RDR register mask          */\n\n  uint32_t                 FifoMode;                 /*!< Specifies if the FIFO mode is being used.\n                                                          This parameter can be a value of @ref UARTEx_FIFO_mode. */\n\n  uint16_t                 NbRxDataToProcess;        /*!< Number of data to process during RX ISR execution */\n\n  uint16_t                 NbTxDataToProcess;        /*!< Number of data to process during TX ISR execution */\n\n  __IO HAL_UART_RxTypeTypeDef ReceptionType;         /*!< Type of ongoing reception          */\n\n  void (*RxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */\n\n  void (*TxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */\n\n  DMA_HandleTypeDef        *hdmatx;                  /*!< UART Tx DMA Handle parameters      */\n\n  DMA_HandleTypeDef        *hdmarx;                  /*!< UART Rx DMA Handle parameters      */\n\n  HAL_LockTypeDef           Lock;                    /*!< Locking object                     */\n\n  __IO HAL_UART_StateTypeDef    gState;              /*!< UART state information related to global Handle management\n                                                          and also related to Tx operations. This parameter\n                                                          can be a value of @ref HAL_UART_StateTypeDef */\n\n  __IO HAL_UART_StateTypeDef    RxState;             /*!< UART state information related to Rx operations. This\n                                                          parameter can be a value of @ref HAL_UART_StateTypeDef */\n\n  __IO uint32_t                 ErrorCode;           /*!< UART Error code                    */\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  void (* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart);        /*!< UART Tx Half Complete Callback        */\n  void (* TxCpltCallback)(struct __UART_HandleTypeDef *huart);            /*!< UART Tx Complete Callback             */\n  void (* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart);        /*!< UART Rx Half Complete Callback        */\n  void (* RxCpltCallback)(struct __UART_HandleTypeDef *huart);            /*!< UART Rx Complete Callback             */\n  void (* ErrorCallback)(struct __UART_HandleTypeDef *huart);             /*!< UART Error Callback                   */\n  void (* AbortCpltCallback)(struct __UART_HandleTypeDef *huart);         /*!< UART Abort Complete Callback          */\n  void (* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Transmit Complete Callback */\n  void (* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart);  /*!< UART Abort Receive Complete Callback  */\n  void (* WakeupCallback)(struct __UART_HandleTypeDef *huart);            /*!< UART Wakeup Callback                  */\n  void (* RxFifoFullCallback)(struct __UART_HandleTypeDef *huart);        /*!< UART Rx Fifo Full Callback            */\n  void (* TxFifoEmptyCallback)(struct __UART_HandleTypeDef *huart);       /*!< UART Tx Fifo Empty Callback           */\n  void (* RxEventCallback)(struct __UART_HandleTypeDef *huart, uint16_t Pos); /*!< UART Reception Event Callback     */\n\n  void (* MspInitCallback)(struct __UART_HandleTypeDef *huart);           /*!< UART Msp Init callback                */\n  void (* MspDeInitCallback)(struct __UART_HandleTypeDef *huart);         /*!< UART Msp DeInit callback              */\n#endif  /* USE_HAL_UART_REGISTER_CALLBACKS */\n\n} UART_HandleTypeDef;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n/**\n  * @brief  HAL UART Callback ID enumeration definition\n  */\ntypedef enum\n{\n  HAL_UART_TX_HALFCOMPLETE_CB_ID         = 0x00U,    /*!< UART Tx Half Complete Callback ID        */\n  HAL_UART_TX_COMPLETE_CB_ID             = 0x01U,    /*!< UART Tx Complete Callback ID             */\n  HAL_UART_RX_HALFCOMPLETE_CB_ID         = 0x02U,    /*!< UART Rx Half Complete Callback ID        */\n  HAL_UART_RX_COMPLETE_CB_ID             = 0x03U,    /*!< UART Rx Complete Callback ID             */\n  HAL_UART_ERROR_CB_ID                   = 0x04U,    /*!< UART Error Callback ID                   */\n  HAL_UART_ABORT_COMPLETE_CB_ID          = 0x05U,    /*!< UART Abort Complete Callback ID          */\n  HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x06U,    /*!< UART Abort Transmit Complete Callback ID */\n  HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID  = 0x07U,    /*!< UART Abort Receive Complete Callback ID  */\n  HAL_UART_WAKEUP_CB_ID                  = 0x08U,    /*!< UART Wakeup Callback ID                  */\n  HAL_UART_RX_FIFO_FULL_CB_ID            = 0x09U,    /*!< UART Rx Fifo Full Callback ID            */\n  HAL_UART_TX_FIFO_EMPTY_CB_ID           = 0x0AU,    /*!< UART Tx Fifo Empty Callback ID           */\n\n  HAL_UART_MSPINIT_CB_ID                 = 0x0BU,    /*!< UART MspInit callback ID                 */\n  HAL_UART_MSPDEINIT_CB_ID               = 0x0CU     /*!< UART MspDeInit callback ID               */\n\n} HAL_UART_CallbackIDTypeDef;\n\n/**\n  * @brief  HAL UART Callback pointer definition\n  */\ntypedef  void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer to an UART callback function */\ntypedef  void (*pUART_RxEventCallbackTypeDef)\n(struct __UART_HandleTypeDef *huart, uint16_t Pos); /*!< pointer to a UART Rx Event specific callback function */\n\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup UART_Exported_Constants UART Exported Constants\n  * @{\n  */\n\n/** @defgroup UART_State_Definition UART State Code Definition\n  * @{\n  */\n#define  HAL_UART_STATE_RESET         0x00000000U    /*!< Peripheral is not initialized\n                                                          Value is allowed for gState and RxState */\n#define  HAL_UART_STATE_READY         0x00000020U    /*!< Peripheral Initialized and ready for use\n                                                          Value is allowed for gState and RxState */\n#define  HAL_UART_STATE_BUSY          0x00000024U    /*!< an internal process is ongoing\n                                                          Value is allowed for gState only */\n#define  HAL_UART_STATE_BUSY_TX       0x00000021U    /*!< Data Transmission process is ongoing\n                                                          Value is allowed for gState only */\n#define  HAL_UART_STATE_BUSY_RX       0x00000022U    /*!< Data Reception process is ongoing\n                                                          Value is allowed for RxState only */\n#define  HAL_UART_STATE_BUSY_TX_RX    0x00000023U    /*!< Data Transmission and Reception process is ongoing\n                                                          Not to be used for neither gState nor RxState.Value is result\n                                                          of combination (Or) between gState and RxState values */\n#define  HAL_UART_STATE_TIMEOUT       0x000000A0U    /*!< Timeout state\n                                                          Value is allowed for gState only */\n#define  HAL_UART_STATE_ERROR         0x000000E0U    /*!< Error\n                                                          Value is allowed for gState only */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Error_Definition   UART Error Definition\n  * @{\n  */\n#define  HAL_UART_ERROR_NONE             (0x00000000U)    /*!< No error                */\n#define  HAL_UART_ERROR_PE               (0x00000001U)    /*!< Parity error            */\n#define  HAL_UART_ERROR_NE               (0x00000002U)    /*!< Noise error             */\n#define  HAL_UART_ERROR_FE               (0x00000004U)    /*!< Frame error             */\n#define  HAL_UART_ERROR_ORE              (0x00000008U)    /*!< Overrun error           */\n#define  HAL_UART_ERROR_DMA              (0x00000010U)    /*!< DMA transfer error      */\n#define  HAL_UART_ERROR_RTO              (0x00000020U)    /*!< Receiver Timeout error  */\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n#define  HAL_UART_ERROR_INVALID_CALLBACK (0x00000040U)    /*!< Invalid Callback error  */\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Stop_Bits   UART Number of Stop Bits\n  * @{\n  */\n#define UART_STOPBITS_0_5                    USART_CR2_STOP_0                     /*!< UART frame with 0.5 stop bit  */\n#define UART_STOPBITS_1                     0x00000000U                           /*!< UART frame with 1 stop bit    */\n#define UART_STOPBITS_1_5                   (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< UART frame with 1.5 stop bits */\n#define UART_STOPBITS_2                      USART_CR2_STOP_1                     /*!< UART frame with 2 stop bits   */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Parity  UART Parity\n  * @{\n  */\n#define UART_PARITY_NONE                    0x00000000U                        /*!< No parity   */\n#define UART_PARITY_EVEN                    USART_CR1_PCE                      /*!< Even parity */\n#define UART_PARITY_ODD                     (USART_CR1_PCE | USART_CR1_PS)     /*!< Odd parity  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Hardware_Flow_Control UART Hardware Flow Control\n  * @{\n  */\n#define UART_HWCONTROL_NONE                  0x00000000U                          /*!< No hardware control       */\n#define UART_HWCONTROL_RTS                   USART_CR3_RTSE                       /*!< Request To Send           */\n#define UART_HWCONTROL_CTS                   USART_CR3_CTSE                       /*!< Clear To Send             */\n#define UART_HWCONTROL_RTS_CTS               (USART_CR3_RTSE | USART_CR3_CTSE)    /*!< Request and Clear To Send */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Mode UART Transfer Mode\n  * @{\n  */\n#define UART_MODE_RX                        USART_CR1_RE                    /*!< RX mode        */\n#define UART_MODE_TX                        USART_CR1_TE                    /*!< TX mode        */\n#define UART_MODE_TX_RX                     (USART_CR1_TE |USART_CR1_RE)    /*!< RX and TX mode */\n/**\n  * @}\n  */\n\n/** @defgroup UART_State  UART State\n  * @{\n  */\n#define UART_STATE_DISABLE                  0x00000000U         /*!< UART disabled  */\n#define UART_STATE_ENABLE                   USART_CR1_UE        /*!< UART enabled   */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Over_Sampling UART Over Sampling\n  * @{\n  */\n#define UART_OVERSAMPLING_16                0x00000000U         /*!< Oversampling by 16 */\n#define UART_OVERSAMPLING_8                 USART_CR1_OVER8     /*!< Oversampling by 8  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_OneBit_Sampling UART One Bit Sampling Method\n  * @{\n  */\n#define UART_ONE_BIT_SAMPLE_DISABLE         0x00000000U         /*!< One-bit sampling disable */\n#define UART_ONE_BIT_SAMPLE_ENABLE          USART_CR3_ONEBIT    /*!< One-bit sampling enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_ClockPrescaler  UART Clock Prescaler\n  * @{\n  */\n#define UART_PRESCALER_DIV1    0x00000000U  /*!< fclk_pres = fclk     */\n#define UART_PRESCALER_DIV2    0x00000001U  /*!< fclk_pres = fclk/2   */\n#define UART_PRESCALER_DIV4    0x00000002U  /*!< fclk_pres = fclk/4   */\n#define UART_PRESCALER_DIV6    0x00000003U  /*!< fclk_pres = fclk/6   */\n#define UART_PRESCALER_DIV8    0x00000004U  /*!< fclk_pres = fclk/8   */\n#define UART_PRESCALER_DIV10   0x00000005U  /*!< fclk_pres = fclk/10  */\n#define UART_PRESCALER_DIV12   0x00000006U  /*!< fclk_pres = fclk/12  */\n#define UART_PRESCALER_DIV16   0x00000007U  /*!< fclk_pres = fclk/16  */\n#define UART_PRESCALER_DIV32   0x00000008U  /*!< fclk_pres = fclk/32  */\n#define UART_PRESCALER_DIV64   0x00000009U  /*!< fclk_pres = fclk/64  */\n#define UART_PRESCALER_DIV128  0x0000000AU  /*!< fclk_pres = fclk/128 */\n#define UART_PRESCALER_DIV256  0x0000000BU  /*!< fclk_pres = fclk/256 */\n/**\n  * @}\n  */\n\n/** @defgroup UART_AutoBaud_Rate_Mode    UART Advanced Feature AutoBaud Rate Mode\n  * @{\n  */\n#define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT    0x00000000U           /*!< Auto Baud rate detection\n                                                                              on start bit              */\n#define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE USART_CR2_ABRMODE_0   /*!< Auto Baud rate detection\n                                                                              on falling edge           */\n#define UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME   USART_CR2_ABRMODE_1   /*!< Auto Baud rate detection\n                                                                              on 0x7F frame detection   */\n#define UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME   USART_CR2_ABRMODE     /*!< Auto Baud rate detection\n                                                                              on 0x55 frame detection   */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Receiver_Timeout UART Receiver Timeout\n  * @{\n  */\n#define UART_RECEIVER_TIMEOUT_DISABLE       0x00000000U                /*!< UART Receiver Timeout disable */\n#define UART_RECEIVER_TIMEOUT_ENABLE        USART_CR2_RTOEN            /*!< UART Receiver Timeout enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_LIN    UART Local Interconnection Network mode\n  * @{\n  */\n#define UART_LIN_DISABLE                    0x00000000U                /*!< Local Interconnect Network disable */\n#define UART_LIN_ENABLE                     USART_CR2_LINEN            /*!< Local Interconnect Network enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_LIN_Break_Detection  UART LIN Break Detection\n  * @{\n  */\n#define UART_LINBREAKDETECTLENGTH_10B       0x00000000U                /*!< LIN 10-bit break detection length */\n#define UART_LINBREAKDETECTLENGTH_11B       USART_CR2_LBDL             /*!< LIN 11-bit break detection length  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_DMA_Tx    UART DMA Tx\n  * @{\n  */\n#define UART_DMA_TX_DISABLE                 0x00000000U                /*!< UART DMA TX disabled */\n#define UART_DMA_TX_ENABLE                  USART_CR3_DMAT             /*!< UART DMA TX enabled  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_DMA_Rx   UART DMA Rx\n  * @{\n  */\n#define UART_DMA_RX_DISABLE                 0x00000000U                 /*!< UART DMA RX disabled */\n#define UART_DMA_RX_ENABLE                  USART_CR3_DMAR              /*!< UART DMA RX enabled  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Half_Duplex_Selection  UART Half Duplex Selection\n  * @{\n  */\n#define UART_HALF_DUPLEX_DISABLE            0x00000000U                 /*!< UART half-duplex disabled */\n#define UART_HALF_DUPLEX_ENABLE             USART_CR3_HDSEL             /*!< UART half-duplex enabled  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_WakeUp_Methods   UART WakeUp Methods\n  * @{\n  */\n#define UART_WAKEUPMETHOD_IDLELINE          0x00000000U                 /*!< UART wake-up on idle line    */\n#define UART_WAKEUPMETHOD_ADDRESSMARK       USART_CR1_WAKE              /*!< UART wake-up on address mark */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Request_Parameters UART Request Parameters\n  * @{\n  */\n#define UART_AUTOBAUD_REQUEST               USART_RQR_ABRRQ        /*!< Auto-Baud Rate Request      */\n#define UART_SENDBREAK_REQUEST              USART_RQR_SBKRQ        /*!< Send Break Request          */\n#define UART_MUTE_MODE_REQUEST              USART_RQR_MMRQ         /*!< Mute Mode Request           */\n#define UART_RXDATA_FLUSH_REQUEST           USART_RQR_RXFRQ        /*!< Receive Data flush Request  */\n#define UART_TXDATA_FLUSH_REQUEST           USART_RQR_TXFRQ        /*!< Transmit data flush Request */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Advanced_Features_Initialization_Type  UART Advanced Feature Initialization Type\n  * @{\n  */\n#define UART_ADVFEATURE_NO_INIT                 0x00000000U          /*!< No advanced feature initialization       */\n#define UART_ADVFEATURE_TXINVERT_INIT           0x00000001U          /*!< TX pin active level inversion            */\n#define UART_ADVFEATURE_RXINVERT_INIT           0x00000002U          /*!< RX pin active level inversion            */\n#define UART_ADVFEATURE_DATAINVERT_INIT         0x00000004U          /*!< Binary data inversion                    */\n#define UART_ADVFEATURE_SWAP_INIT               0x00000008U          /*!< TX/RX pins swap                          */\n#define UART_ADVFEATURE_RXOVERRUNDISABLE_INIT   0x00000010U          /*!< RX overrun disable                       */\n#define UART_ADVFEATURE_DMADISABLEONERROR_INIT  0x00000020U          /*!< DMA disable on Reception Error           */\n#define UART_ADVFEATURE_AUTOBAUDRATE_INIT       0x00000040U          /*!< Auto Baud rate detection initialization  */\n#define UART_ADVFEATURE_MSBFIRST_INIT           0x00000080U          /*!< Most significant bit sent/received first */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Tx_Inv UART Advanced Feature TX Pin Active Level Inversion\n  * @{\n  */\n#define UART_ADVFEATURE_TXINV_DISABLE       0x00000000U             /*!< TX pin active level inversion disable */\n#define UART_ADVFEATURE_TXINV_ENABLE        USART_CR2_TXINV         /*!< TX pin active level inversion enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Rx_Inv UART Advanced Feature RX Pin Active Level Inversion\n  * @{\n  */\n#define UART_ADVFEATURE_RXINV_DISABLE       0x00000000U             /*!< RX pin active level inversion disable */\n#define UART_ADVFEATURE_RXINV_ENABLE        USART_CR2_RXINV         /*!< RX pin active level inversion enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Data_Inv  UART Advanced Feature Binary Data Inversion\n  * @{\n  */\n#define UART_ADVFEATURE_DATAINV_DISABLE     0x00000000U             /*!< Binary data inversion disable */\n#define UART_ADVFEATURE_DATAINV_ENABLE      USART_CR2_DATAINV       /*!< Binary data inversion enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Rx_Tx_Swap UART Advanced Feature RX TX Pins Swap\n  * @{\n  */\n#define UART_ADVFEATURE_SWAP_DISABLE        0x00000000U             /*!< TX/RX pins swap disable */\n#define UART_ADVFEATURE_SWAP_ENABLE         USART_CR2_SWAP          /*!< TX/RX pins swap enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Overrun_Disable  UART Advanced Feature Overrun Disable\n  * @{\n  */\n#define UART_ADVFEATURE_OVERRUN_ENABLE      0x00000000U             /*!< RX overrun enable  */\n#define UART_ADVFEATURE_OVERRUN_DISABLE     USART_CR3_OVRDIS        /*!< RX overrun disable */\n/**\n  * @}\n  */\n\n/** @defgroup UART_AutoBaudRate_Enable  UART Advanced Feature Auto BaudRate Enable\n  * @{\n  */\n#define UART_ADVFEATURE_AUTOBAUDRATE_DISABLE   0x00000000U          /*!< RX Auto Baud rate detection enable  */\n#define UART_ADVFEATURE_AUTOBAUDRATE_ENABLE    USART_CR2_ABREN      /*!< RX Auto Baud rate detection disable */\n/**\n  * @}\n  */\n\n/** @defgroup UART_DMA_Disable_on_Rx_Error   UART Advanced Feature DMA Disable On Rx Error\n  * @{\n  */\n#define UART_ADVFEATURE_DMA_ENABLEONRXERROR    0x00000000U          /*!< DMA enable on Reception Error  */\n#define UART_ADVFEATURE_DMA_DISABLEONRXERROR   USART_CR3_DDRE       /*!< DMA disable on Reception Error */\n/**\n  * @}\n  */\n\n/** @defgroup UART_MSB_First   UART Advanced Feature MSB First\n  * @{\n  */\n#define UART_ADVFEATURE_MSBFIRST_DISABLE    0x00000000U             /*!< Most significant bit sent/received\n                                                                         first disable                      */\n#define UART_ADVFEATURE_MSBFIRST_ENABLE     USART_CR2_MSBFIRST      /*!< Most significant bit sent/received\n                                                                         first enable                       */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Stop_Mode_Enable   UART Advanced Feature Stop Mode Enable\n  * @{\n  */\n#define UART_ADVFEATURE_STOPMODE_DISABLE    0x00000000U             /*!< UART stop mode disable */\n#define UART_ADVFEATURE_STOPMODE_ENABLE     USART_CR1_UESM          /*!< UART stop mode enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Mute_Mode   UART Advanced Feature Mute Mode Enable\n  * @{\n  */\n#define UART_ADVFEATURE_MUTEMODE_DISABLE    0x00000000U             /*!< UART mute mode disable */\n#define UART_ADVFEATURE_MUTEMODE_ENABLE     USART_CR1_MME           /*!< UART mute mode enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_CR2_ADDRESS_LSB_POS    UART Address-matching LSB Position In CR2 Register\n  * @{\n  */\n#define UART_CR2_ADDRESS_LSB_POS             24U             /*!< UART address-matching LSB position in CR2 register */\n/**\n  * @}\n  */\n\n/** @defgroup UART_WakeUp_from_Stop_Selection   UART WakeUp From Stop Selection\n  * @{\n  */\n#define UART_WAKEUP_ON_ADDRESS              0x00000000U             /*!< UART wake-up on address                     */\n#define UART_WAKEUP_ON_STARTBIT             USART_CR3_WUS_1         /*!< UART wake-up on start bit                   */\n#define UART_WAKEUP_ON_READDATA_NONEMPTY    USART_CR3_WUS           /*!< UART wake-up on receive data register\n                                                                         not empty or RXFIFO is not empty            */\n/**\n  * @}\n  */\n\n/** @defgroup UART_DriverEnable_Polarity      UART DriverEnable Polarity\n  * @{\n  */\n#define UART_DE_POLARITY_HIGH               0x00000000U             /*!< Driver enable signal is active high */\n#define UART_DE_POLARITY_LOW                USART_CR3_DEP           /*!< Driver enable signal is active low  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_CR1_DEAT_ADDRESS_LSB_POS    UART Driver Enable Assertion Time LSB Position In CR1 Register\n  * @{\n  */\n#define UART_CR1_DEAT_ADDRESS_LSB_POS       21U      /*!< UART Driver Enable assertion time LSB\n                                                          position in CR1 register */\n/**\n  * @}\n  */\n\n/** @defgroup UART_CR1_DEDT_ADDRESS_LSB_POS    UART Driver Enable DeAssertion Time LSB Position In CR1 Register\n  * @{\n  */\n#define UART_CR1_DEDT_ADDRESS_LSB_POS       16U      /*!< UART Driver Enable de-assertion time LSB\n                                                          position in CR1 register */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Interruption_Mask    UART Interruptions Flag Mask\n  * @{\n  */\n#define UART_IT_MASK                        0x001FU  /*!< UART interruptions flags mask */\n/**\n  * @}\n  */\n\n/** @defgroup UART_TimeOut_Value    UART polling-based communications time-out value\n  * @{\n  */\n#define HAL_UART_TIMEOUT_VALUE              0x1FFFFFFU  /*!< UART polling-based communications time-out value */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Flags     UART Status Flags\n  *        Elements values convention: 0xXXXX\n  *           - 0xXXXX  : Flag mask in the ISR register\n  * @{\n  */\n#define UART_FLAG_TXFT                      USART_ISR_TXFT          /*!< UART TXFIFO threshold flag                */\n#define UART_FLAG_RXFT                      USART_ISR_RXFT          /*!< UART RXFIFO threshold flag                */\n#define UART_FLAG_RXFF                      USART_ISR_RXFF          /*!< UART RXFIFO Full flag                     */\n#define UART_FLAG_TXFE                      USART_ISR_TXFE          /*!< UART TXFIFO Empty flag                    */\n#define UART_FLAG_REACK                     USART_ISR_REACK         /*!< UART receive enable acknowledge flag      */\n#define UART_FLAG_TEACK                     USART_ISR_TEACK         /*!< UART transmit enable acknowledge flag     */\n#define UART_FLAG_WUF                       USART_ISR_WUF           /*!< UART wake-up from stop mode flag          */\n#define UART_FLAG_RWU                       USART_ISR_RWU           /*!< UART receiver wake-up from mute mode flag */\n#define UART_FLAG_SBKF                      USART_ISR_SBKF          /*!< UART send break flag                      */\n#define UART_FLAG_CMF                       USART_ISR_CMF           /*!< UART character match flag                 */\n#define UART_FLAG_BUSY                      USART_ISR_BUSY          /*!< UART busy flag                            */\n#define UART_FLAG_ABRF                      USART_ISR_ABRF          /*!< UART auto Baud rate flag                  */\n#define UART_FLAG_ABRE                      USART_ISR_ABRE          /*!< UART auto Baud rate error                 */\n#define UART_FLAG_RTOF                      USART_ISR_RTOF          /*!< UART receiver timeout flag                */\n#define UART_FLAG_CTS                       USART_ISR_CTS           /*!< UART clear to send flag                   */\n#define UART_FLAG_CTSIF                     USART_ISR_CTSIF         /*!< UART clear to send interrupt flag         */\n#define UART_FLAG_LBDF                      USART_ISR_LBDF          /*!< UART LIN break detection flag             */\n#define UART_FLAG_TXE                       USART_ISR_TXE_TXFNF     /*!< UART transmit data register empty         */\n#define UART_FLAG_TXFNF                     USART_ISR_TXE_TXFNF     /*!< UART TXFIFO not full                      */\n#define UART_FLAG_TC                        USART_ISR_TC            /*!< UART transmission complete                */\n#define UART_FLAG_RXNE                      USART_ISR_RXNE_RXFNE    /*!< UART read data register not empty         */\n#define UART_FLAG_RXFNE                     USART_ISR_RXNE_RXFNE    /*!< UART RXFIFO not empty                     */\n#define UART_FLAG_IDLE                      USART_ISR_IDLE          /*!< UART idle flag                            */\n#define UART_FLAG_ORE                       USART_ISR_ORE           /*!< UART overrun error                        */\n#define UART_FLAG_NE                        USART_ISR_NE            /*!< UART noise error                          */\n#define UART_FLAG_FE                        USART_ISR_FE            /*!< UART frame error                          */\n#define UART_FLAG_PE                        USART_ISR_PE            /*!< UART parity error                         */\n/**\n  * @}\n  */\n\n/** @defgroup UART_Interrupt_definition   UART Interrupts Definition\n  *        Elements values convention: 000ZZZZZ0XXYYYYYb\n  *           - YYYYY  : Interrupt source position in the XX register (5bits)\n  *           - XX  : Interrupt source register (2bits)\n  *                 - 01: CR1 register\n  *                 - 10: CR2 register\n  *                 - 11: CR3 register\n  *           - ZZZZZ  : Flag position in the ISR register(5bits)\n  *        Elements values convention: 000000000XXYYYYYb\n  *           - YYYYY  : Interrupt source position in the XX register (5bits)\n  *           - XX  : Interrupt source register (2bits)\n  *                 - 01: CR1 register\n  *                 - 10: CR2 register\n  *                 - 11: CR3 register\n  *        Elements values convention: 0000ZZZZ00000000b\n  *           - ZZZZ  : Flag position in the ISR register(4bits)\n  * @{\n  */\n#define UART_IT_PE                          0x0028U              /*!< UART parity error interruption                 */\n#define UART_IT_TXE                         0x0727U              /*!< UART transmit data register empty interruption */\n#define UART_IT_TXFNF                       0x0727U              /*!< UART TX FIFO not full interruption             */\n#define UART_IT_TC                          0x0626U              /*!< UART transmission complete interruption        */\n#define UART_IT_RXNE                        0x0525U              /*!< UART read data register not empty interruption */\n#define UART_IT_RXFNE                       0x0525U              /*!< UART RXFIFO not empty interruption             */\n#define UART_IT_IDLE                        0x0424U              /*!< UART idle interruption                         */\n#define UART_IT_LBD                         0x0846U              /*!< UART LIN break detection interruption          */\n#define UART_IT_CTS                         0x096AU              /*!< UART CTS interruption                          */\n#define UART_IT_CM                          0x112EU              /*!< UART character match interruption              */\n#define UART_IT_WUF                         0x1476U              /*!< UART wake-up from stop mode interruption       */\n#define UART_IT_RXFF                        0x183FU              /*!< UART RXFIFO full interruption                  */\n#define UART_IT_TXFE                        0x173EU              /*!< UART TXFIFO empty interruption                 */\n#define UART_IT_RXFT                        0x1A7CU              /*!< UART RXFIFO threshold reached interruption     */\n#define UART_IT_TXFT                        0x1B77U              /*!< UART TXFIFO threshold reached interruption     */\n#define UART_IT_RTO                         0x0B3AU              /*!< UART receiver timeout interruption             */\n\n#define UART_IT_ERR                         0x0060U              /*!< UART error interruption                        */\n\n#define UART_IT_ORE                         0x0300U              /*!< UART overrun error interruption                */\n#define UART_IT_NE                          0x0200U              /*!< UART noise error interruption                  */\n#define UART_IT_FE                          0x0100U              /*!< UART frame error interruption                  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_IT_CLEAR_Flags  UART Interruption Clear Flags\n  * @{\n  */\n#define UART_CLEAR_PEF                       USART_ICR_PECF            /*!< Parity Error Clear Flag           */\n#define UART_CLEAR_FEF                       USART_ICR_FECF            /*!< Framing Error Clear Flag          */\n#define UART_CLEAR_NEF                       USART_ICR_NECF            /*!< Noise Error detected Clear Flag   */\n#define UART_CLEAR_OREF                      USART_ICR_ORECF           /*!< Overrun Error Clear Flag          */\n#define UART_CLEAR_IDLEF                     USART_ICR_IDLECF          /*!< IDLE line detected Clear Flag     */\n#define UART_CLEAR_TXFECF                    USART_ICR_TXFECF          /*!< TXFIFO empty clear flag           */\n#define UART_CLEAR_TCF                       USART_ICR_TCCF            /*!< Transmission Complete Clear Flag  */\n#define UART_CLEAR_LBDF                      USART_ICR_LBDCF           /*!< LIN Break Detection Clear Flag    */\n#define UART_CLEAR_CTSF                      USART_ICR_CTSCF           /*!< CTS Interrupt Clear Flag          */\n#define UART_CLEAR_CMF                       USART_ICR_CMCF            /*!< Character Match Clear Flag        */\n#define UART_CLEAR_WUF                       USART_ICR_WUCF            /*!< Wake Up from stop mode Clear Flag */\n#define UART_CLEAR_RTOF                      USART_ICR_RTOCF           /*!< UART receiver timeout clear flag  */\n/**\n  * @}\n  */\n\n/** @defgroup UART_RECEPTION_TYPE_Values  UART Reception type values\n  * @{\n  */\n#define HAL_UART_RECEPTION_STANDARD          (0x00000000U)             /*!< Standard reception                       */\n#define HAL_UART_RECEPTION_TOIDLE            (0x00000001U)             /*!< Reception till completion or IDLE event  */\n#define HAL_UART_RECEPTION_TORTO             (0x00000002U)             /*!< Reception till completion or RTO event   */\n#define HAL_UART_RECEPTION_TOCHARMATCH       (0x00000003U)             /*!< Reception till completion or CM event    */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macros -----------------------------------------------------------*/\n/** @defgroup UART_Exported_Macros UART Exported Macros\n  * @{\n  */\n\n/** @brief  Reset UART handle states.\n  * @param  __HANDLE__ UART handle.\n  * @retval None\n  */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n#define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \\\n                                                       (__HANDLE__)->gState = HAL_UART_STATE_RESET;      \\\n                                                       (__HANDLE__)->RxState = HAL_UART_STATE_RESET;     \\\n                                                       (__HANDLE__)->MspInitCallback = NULL;             \\\n                                                       (__HANDLE__)->MspDeInitCallback = NULL;           \\\n                                                     } while(0U)\n#else\n#define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \\\n                                                       (__HANDLE__)->gState = HAL_UART_STATE_RESET;      \\\n                                                       (__HANDLE__)->RxState = HAL_UART_STATE_RESET;     \\\n                                                     } while(0U)\n#endif /*USE_HAL_UART_REGISTER_CALLBACKS */\n\n/** @brief  Flush the UART Data registers.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__)  \\\n  do{                \\\n    SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \\\n    SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \\\n  }  while(0U)\n\n/** @brief  Clear the specified UART pending flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __FLAG__ specifies the flag to check.\n  *          This parameter can be any combination of the following values:\n  *            @arg @ref UART_CLEAR_PEF      Parity Error Clear Flag\n  *            @arg @ref UART_CLEAR_FEF      Framing Error Clear Flag\n  *            @arg @ref UART_CLEAR_NEF      Noise detected Clear Flag\n  *            @arg @ref UART_CLEAR_OREF     Overrun Error Clear Flag\n  *            @arg @ref UART_CLEAR_IDLEF    IDLE line detected Clear Flag\n  *            @arg @ref UART_CLEAR_TXFECF   TXFIFO empty clear Flag\n  *            @arg @ref UART_CLEAR_TCF      Transmission Complete Clear Flag\n  *            @arg @ref UART_CLEAR_RTOF     Receiver Timeout clear flag\n  *            @arg @ref UART_CLEAR_LBDF     LIN Break Detection Clear Flag\n  *            @arg @ref UART_CLEAR_CTSF     CTS Interrupt Clear Flag\n  *            @arg @ref UART_CLEAR_CMF      Character Match Clear Flag\n  *            @arg @ref UART_CLEAR_WUF      Wake Up from stop mode Clear Flag\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))\n\n/** @brief  Clear the UART PE pending flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_PEFLAG(__HANDLE__)   __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_PEF)\n\n/** @brief  Clear the UART FE pending flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_FEFLAG(__HANDLE__)   __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_FEF)\n\n/** @brief  Clear the UART NE pending flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_NEFLAG(__HANDLE__)  __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_NEF)\n\n/** @brief  Clear the UART ORE pending flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_OREFLAG(__HANDLE__)   __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_OREF)\n\n/** @brief  Clear the UART IDLE pending flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__)   __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_IDLEF)\n\n/** @brief  Clear the UART TX FIFO empty clear flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_TXFECF(__HANDLE__)   __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_TXFECF)\n\n/** @brief  Check whether the specified UART flag is set or not.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __FLAG__ specifies the flag to check.\n  *        This parameter can be one of the following values:\n  *            @arg @ref UART_FLAG_TXFT  TXFIFO threshold flag\n  *            @arg @ref UART_FLAG_RXFT  RXFIFO threshold flag\n  *            @arg @ref UART_FLAG_RXFF  RXFIFO Full flag\n  *            @arg @ref UART_FLAG_TXFE  TXFIFO Empty flag\n  *            @arg @ref UART_FLAG_REACK Receive enable acknowledge flag\n  *            @arg @ref UART_FLAG_TEACK Transmit enable acknowledge flag\n  *            @arg @ref UART_FLAG_WUF   Wake up from stop mode flag\n  *            @arg @ref UART_FLAG_RWU   Receiver wake up flag (if the UART in mute mode)\n  *            @arg @ref UART_FLAG_SBKF  Send Break flag\n  *            @arg @ref UART_FLAG_CMF   Character match flag\n  *            @arg @ref UART_FLAG_BUSY  Busy flag\n  *            @arg @ref UART_FLAG_ABRF  Auto Baud rate detection flag\n  *            @arg @ref UART_FLAG_ABRE  Auto Baud rate detection error flag\n  *            @arg @ref UART_FLAG_CTS   CTS Change flag\n  *            @arg @ref UART_FLAG_LBDF  LIN Break detection flag\n  *            @arg @ref UART_FLAG_TXE   Transmit data register empty flag\n  *            @arg @ref UART_FLAG_TXFNF UART TXFIFO not full flag\n  *            @arg @ref UART_FLAG_TC    Transmission Complete flag\n  *            @arg @ref UART_FLAG_RXNE  Receive data register not empty flag\n  *            @arg @ref UART_FLAG_RXFNE UART RXFIFO not empty flag\n  *            @arg @ref UART_FLAG_RTOF  Receiver Timeout flag\n  *            @arg @ref UART_FLAG_IDLE  Idle Line detection flag\n  *            @arg @ref UART_FLAG_ORE   Overrun Error flag\n  *            @arg @ref UART_FLAG_NE    Noise Error flag\n  *            @arg @ref UART_FLAG_FE    Framing Error flag\n  *            @arg @ref UART_FLAG_PE    Parity Error flag\n  * @retval The new state of __FLAG__ (TRUE or FALSE).\n  */\n#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))\n\n/** @brief  Enable the specified UART interrupt.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __INTERRUPT__ specifies the UART interrupt source to enable.\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_IT_RXFF  RXFIFO Full interrupt\n  *            @arg @ref UART_IT_TXFE  TXFIFO Empty interrupt\n  *            @arg @ref UART_IT_RXFT  RXFIFO threshold interrupt\n  *            @arg @ref UART_IT_TXFT  TXFIFO threshold interrupt\n  *            @arg @ref UART_IT_WUF   Wakeup from stop mode interrupt\n  *            @arg @ref UART_IT_CM    Character match interrupt\n  *            @arg @ref UART_IT_CTS   CTS change interrupt\n  *            @arg @ref UART_IT_LBD   LIN Break detection interrupt\n  *            @arg @ref UART_IT_TXE   Transmit Data Register empty interrupt\n  *            @arg @ref UART_IT_TXFNF TX FIFO not full interrupt\n  *            @arg @ref UART_IT_TC    Transmission complete interrupt\n  *            @arg @ref UART_IT_RXNE  Receive Data register not empty interrupt\n  *            @arg @ref UART_IT_RXFNE RXFIFO not empty interrupt\n  *            @arg @ref UART_IT_RTO   Receive Timeout interrupt\n  *            @arg @ref UART_IT_IDLE  Idle line detection interrupt\n  *            @arg @ref UART_IT_PE    Parity Error interrupt\n  *            @arg @ref UART_IT_ERR   Error interrupt (frame error, noise error, overrun error)\n  * @retval None\n  */\n#define __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__)   (\\\n                                                           ((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)?\\\n                                                           ((__HANDLE__)->Instance->CR1 |= (1U <<\\\n                                                               ((__INTERRUPT__) & UART_IT_MASK))): \\\n                                                           ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)?\\\n                                                           ((__HANDLE__)->Instance->CR2 |= (1U <<\\\n                                                               ((__INTERRUPT__) & UART_IT_MASK))): \\\n                                                           ((__HANDLE__)->Instance->CR3 |= (1U <<\\\n                                                               ((__INTERRUPT__) & UART_IT_MASK))))\n\n/** @brief  Disable the specified UART interrupt.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __INTERRUPT__ specifies the UART interrupt source to disable.\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_IT_RXFF  RXFIFO Full interrupt\n  *            @arg @ref UART_IT_TXFE  TXFIFO Empty interrupt\n  *            @arg @ref UART_IT_RXFT  RXFIFO threshold interrupt\n  *            @arg @ref UART_IT_TXFT  TXFIFO threshold interrupt\n  *            @arg @ref UART_IT_WUF   Wakeup from stop mode interrupt\n  *            @arg @ref UART_IT_CM    Character match interrupt\n  *            @arg @ref UART_IT_CTS   CTS change interrupt\n  *            @arg @ref UART_IT_LBD   LIN Break detection interrupt\n  *            @arg @ref UART_IT_TXE   Transmit Data Register empty interrupt\n  *            @arg @ref UART_IT_TXFNF TX FIFO not full interrupt\n  *            @arg @ref UART_IT_TC    Transmission complete interrupt\n  *            @arg @ref UART_IT_RXNE  Receive Data register not empty interrupt\n  *            @arg @ref UART_IT_RXFNE RXFIFO not empty interrupt\n  *            @arg @ref UART_IT_RTO   Receive Timeout interrupt\n  *            @arg @ref UART_IT_IDLE  Idle line detection interrupt\n  *            @arg @ref UART_IT_PE    Parity Error interrupt\n  *            @arg @ref UART_IT_ERR   Error interrupt (Frame error, noise error, overrun error)\n  * @retval None\n  */\n#define __HAL_UART_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (\\\n                                                           ((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)?\\\n                                                           ((__HANDLE__)->Instance->CR1 &= ~ (1U <<\\\n                                                               ((__INTERRUPT__) & UART_IT_MASK))): \\\n                                                           ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)?\\\n                                                           ((__HANDLE__)->Instance->CR2 &= ~ (1U <<\\\n                                                               ((__INTERRUPT__) & UART_IT_MASK))): \\\n                                                           ((__HANDLE__)->Instance->CR3 &= ~ (1U <<\\\n                                                               ((__INTERRUPT__) & UART_IT_MASK))))\n\n/** @brief  Check whether the specified UART interrupt has occurred or not.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __INTERRUPT__ specifies the UART interrupt to check.\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_IT_RXFF  RXFIFO Full interrupt\n  *            @arg @ref UART_IT_TXFE  TXFIFO Empty interrupt\n  *            @arg @ref UART_IT_RXFT  RXFIFO threshold interrupt\n  *            @arg @ref UART_IT_TXFT  TXFIFO threshold interrupt\n  *            @arg @ref UART_IT_WUF   Wakeup from stop mode interrupt\n  *            @arg @ref UART_IT_CM    Character match interrupt\n  *            @arg @ref UART_IT_CTS   CTS change interrupt\n  *            @arg @ref UART_IT_LBD   LIN Break detection interrupt\n  *            @arg @ref UART_IT_TXE   Transmit Data Register empty interrupt\n  *            @arg @ref UART_IT_TXFNF TX FIFO not full interrupt\n  *            @arg @ref UART_IT_TC    Transmission complete interrupt\n  *            @arg @ref UART_IT_RXNE  Receive Data register not empty interrupt\n  *            @arg @ref UART_IT_RXFNE RXFIFO not empty interrupt\n  *            @arg @ref UART_IT_RTO   Receive Timeout interrupt\n  *            @arg @ref UART_IT_IDLE  Idle line detection interrupt\n  *            @arg @ref UART_IT_PE    Parity Error interrupt\n  *            @arg @ref UART_IT_ERR   Error interrupt (Frame error, noise error, overrun error)\n  * @retval The new state of __INTERRUPT__ (SET or RESET).\n  */\n#define __HAL_UART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\\\n                                                        & (1U << ((__INTERRUPT__)>> 8U))) != RESET) ? SET : RESET)\n\n/** @brief  Check whether the specified UART interrupt source is enabled or not.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __INTERRUPT__ specifies the UART interrupt source to check.\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_IT_RXFF  RXFIFO Full interrupt\n  *            @arg @ref UART_IT_TXFE  TXFIFO Empty interrupt\n  *            @arg @ref UART_IT_RXFT  RXFIFO threshold interrupt\n  *            @arg @ref UART_IT_TXFT  TXFIFO threshold interrupt\n  *            @arg @ref UART_IT_WUF   Wakeup from stop mode interrupt\n  *            @arg @ref UART_IT_CM    Character match interrupt\n  *            @arg @ref UART_IT_CTS   CTS change interrupt\n  *            @arg @ref UART_IT_LBD   LIN Break detection interrupt\n  *            @arg @ref UART_IT_TXE   Transmit Data Register empty interrupt\n  *            @arg @ref UART_IT_TXFNF TX FIFO not full interrupt\n  *            @arg @ref UART_IT_TC    Transmission complete interrupt\n  *            @arg @ref UART_IT_RXNE  Receive Data register not empty interrupt\n  *            @arg @ref UART_IT_RXFNE RXFIFO not empty interrupt\n  *            @arg @ref UART_IT_RTO   Receive Timeout interrupt\n  *            @arg @ref UART_IT_IDLE  Idle line detection interrupt\n  *            @arg @ref UART_IT_PE    Parity Error interrupt\n  *            @arg @ref UART_IT_ERR   Error interrupt (Frame error, noise error, overrun error)\n  * @retval The new state of __INTERRUPT__ (SET or RESET).\n  */\n#define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U) ?\\\n                                                                (__HANDLE__)->Instance->CR1 : \\\n                                                                (((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U) ?\\\n                                                                 (__HANDLE__)->Instance->CR2 : \\\n                                                                 (__HANDLE__)->Instance->CR3)) & (1U <<\\\n                                                                     (((uint16_t)(__INTERRUPT__)) &\\\n                                                                      UART_IT_MASK)))  != RESET) ? SET : RESET)\n\n/** @brief  Clear the specified UART ISR flag, in setting the proper ICR register flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __IT_CLEAR__ specifies the interrupt clear register flag that needs to be set\n  *                       to clear the corresponding interrupt\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_CLEAR_PEF    Parity Error Clear Flag\n  *            @arg @ref UART_CLEAR_FEF    Framing Error Clear Flag\n  *            @arg @ref UART_CLEAR_NEF    Noise detected Clear Flag\n  *            @arg @ref UART_CLEAR_OREF   Overrun Error Clear Flag\n  *            @arg @ref UART_CLEAR_IDLEF  IDLE line detected Clear Flag\n  *            @arg @ref UART_CLEAR_RTOF   Receiver timeout clear flag\n  *            @arg @ref UART_CLEAR_TXFECF TXFIFO empty Clear Flag\n  *            @arg @ref UART_CLEAR_TCF    Transmission Complete Clear Flag\n  *            @arg @ref UART_CLEAR_LBDF   LIN Break Detection Clear Flag\n  *            @arg @ref UART_CLEAR_CTSF   CTS Interrupt Clear Flag\n  *            @arg @ref UART_CLEAR_CMF    Character Match Clear Flag\n  *            @arg @ref UART_CLEAR_WUF    Wake Up from stop mode Clear Flag\n  * @retval None\n  */\n#define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))\n\n/** @brief  Set a specific UART request flag.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __REQ__ specifies the request flag to set\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_AUTOBAUD_REQUEST Auto-Baud Rate Request\n  *            @arg @ref UART_SENDBREAK_REQUEST Send Break Request\n  *            @arg @ref UART_MUTE_MODE_REQUEST Mute Mode Request\n  *            @arg @ref UART_RXDATA_FLUSH_REQUEST Receive Data flush Request\n  *            @arg @ref UART_TXDATA_FLUSH_REQUEST Transmit data flush Request\n  * @retval None\n  */\n#define __HAL_UART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__))\n\n/** @brief  Enable the UART one bit sample method.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)\n\n/** @brief  Disable the UART one bit sample method.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= ~USART_CR3_ONEBIT)\n\n/** @brief  Enable UART.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_ENABLE(__HANDLE__)                   ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)\n\n/** @brief  Disable UART.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_DISABLE(__HANDLE__)                  ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)\n\n/** @brief  Enable CTS flow control.\n  * @note   This macro allows to enable CTS hardware flow control for a given UART instance,\n  *         without need to call HAL_UART_Init() function.\n  *         As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\n  * @note   As macro is expected to be used for modifying CTS Hw flow control feature activation, without need\n  *         for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\n  *           - UART instance should have already been initialised (through call of HAL_UART_Init() )\n  *           - macro could only be called when corresponding UART instance is disabled\n  *             (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable\n  *              macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__)               \\\n  do{                                                             \\\n    ATOMIC_SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE);  \\\n    (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE;               \\\n  } while(0U)\n\n/** @brief  Disable CTS flow control.\n  * @note   This macro allows to disable CTS hardware flow control for a given UART instance,\n  *         without need to call HAL_UART_Init() function.\n  *         As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\n  * @note   As macro is expected to be used for modifying CTS Hw flow control feature activation, without need\n  *         for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\n  *           - UART instance should have already been initialised (through call of HAL_UART_Init() )\n  *           - macro could only be called when corresponding UART instance is disabled\n  *             (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable\n  *              macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__)               \\\n  do{                                                              \\\n    ATOMIC_CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \\\n    (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE);             \\\n  } while(0U)\n\n/** @brief  Enable RTS flow control.\n  * @note   This macro allows to enable RTS hardware flow control for a given UART instance,\n  *         without need to call HAL_UART_Init() function.\n  *         As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\n  * @note   As macro is expected to be used for modifying RTS Hw flow control feature activation, without need\n  *         for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\n  *           - UART instance should have already been initialised (through call of HAL_UART_Init() )\n  *           - macro could only be called when corresponding UART instance is disabled\n  *             (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable\n  *              macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__)              \\\n  do{                                                            \\\n    ATOMIC_SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \\\n    (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE;              \\\n  } while(0U)\n\n/** @brief  Disable RTS flow control.\n  * @note   This macro allows to disable RTS hardware flow control for a given UART instance,\n  *         without need to call HAL_UART_Init() function.\n  *         As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\n  * @note   As macro is expected to be used for modifying RTS Hw flow control feature activation, without need\n  *         for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\n  *           - UART instance should have already been initialised (through call of HAL_UART_Init() )\n  *           - macro could only be called when corresponding UART instance is disabled\n  *             (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable\n  *              macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None\n  */\n#define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__)              \\\n  do{                                                             \\\n    ATOMIC_CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\\\n    (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE);            \\\n  } while(0U)\n/**\n  * @}\n  */\n\n/* Private macros --------------------------------------------------------*/\n/** @defgroup UART_Private_Macros   UART Private Macros\n  * @{\n  */\n/** @brief  Get UART clok division factor from clock prescaler value.\n  * @param  __CLOCKPRESCALER__ UART prescaler value.\n  * @retval UART clock division factor\n  */\n#define UART_GET_DIV_FACTOR(__CLOCKPRESCALER__) \\\n  (((__CLOCKPRESCALER__) == UART_PRESCALER_DIV1)   ? 1U :       \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV2)   ? 2U :       \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV4)   ? 4U :       \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV6)   ? 6U :       \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV8)   ? 8U :       \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV10)  ? 10U :      \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV12)  ? 12U :      \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV16)  ? 16U :      \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV32)  ? 32U :      \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV64)  ? 64U :      \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) ? 128U :     \\\n   ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV256) ? 256U : 1U)\n\n/** @brief  BRR division operation to set BRR register with LPUART.\n  * @param  __PCLK__ LPUART clock.\n  * @param  __BAUD__ Baud rate set by the user.\n  * @param  __CLOCKPRESCALER__ UART prescaler value.\n  * @retval Division result\n  */\n#define UART_DIV_LPUART(__PCLK__, __BAUD__, __CLOCKPRESCALER__)                        \\\n  ((uint32_t)((((((uint64_t)(__PCLK__))/(UARTPrescTable[(__CLOCKPRESCALER__)]))*256U)+ \\\n               (uint32_t)((__BAUD__)/2U)) / (__BAUD__))                                \\\n  )\n\n/** @brief  BRR division operation to set BRR register in 8-bit oversampling mode.\n  * @param  __PCLK__ UART clock.\n  * @param  __BAUD__ Baud rate set by the user.\n  * @param  __CLOCKPRESCALER__ UART prescaler value.\n  * @retval Division result\n  */\n#define UART_DIV_SAMPLING8(__PCLK__, __BAUD__, __CLOCKPRESCALER__)                        \\\n  (((((__PCLK__)/UARTPrescTable[(__CLOCKPRESCALER__)])*2U) + ((__BAUD__)/2U)) / (__BAUD__))\n\n/** @brief  BRR division operation to set BRR register in 16-bit oversampling mode.\n  * @param  __PCLK__ UART clock.\n  * @param  __BAUD__ Baud rate set by the user.\n  * @param  __CLOCKPRESCALER__ UART prescaler value.\n  * @retval Division result\n  */\n#define UART_DIV_SAMPLING16(__PCLK__, __BAUD__, __CLOCKPRESCALER__)                       \\\n  ((((__PCLK__)/UARTPrescTable[(__CLOCKPRESCALER__)]) + ((__BAUD__)/2U)) / (__BAUD__))\n\n/** @brief  Check whether or not UART instance is Low Power UART.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval SET (instance is LPUART) or RESET (instance isn't LPUART)\n  */\n#define UART_INSTANCE_LOWPOWER(__HANDLE__) (IS_LPUART_INSTANCE((__HANDLE__)->Instance))\n\n/** @brief  Check UART Baud rate.\n  * @param  __BAUDRATE__ Baudrate specified by the user.\n  *         The maximum Baud Rate is derived from the maximum clock on H7 (i.e. 100 MHz)\n  *         divided by the smallest oversampling used on the USART (i.e. 8)\n  * @retval SET (__BAUDRATE__ is valid) or RESET (__BAUDRATE__ is invalid)\n  */\n#define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 12500001U)\n\n/** @brief  Check UART assertion time.\n  * @param  __TIME__ 5-bit value assertion time.\n  * @retval Test result (TRUE or FALSE).\n  */\n#define IS_UART_ASSERTIONTIME(__TIME__)    ((__TIME__) <= 0x1FU)\n\n/** @brief  Check UART deassertion time.\n  * @param  __TIME__ 5-bit value deassertion time.\n  * @retval Test result (TRUE or FALSE).\n  */\n#define IS_UART_DEASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU)\n\n/**\n  * @brief Ensure that UART frame number of stop bits is valid.\n  * @param __STOPBITS__ UART frame number of stop bits.\n  * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid)\n  */\n#define IS_UART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_0_5) || \\\n                                        ((__STOPBITS__) == UART_STOPBITS_1)   || \\\n                                        ((__STOPBITS__) == UART_STOPBITS_1_5) || \\\n                                        ((__STOPBITS__) == UART_STOPBITS_2))\n\n/**\n  * @brief Ensure that LPUART frame number of stop bits is valid.\n  * @param __STOPBITS__ LPUART frame number of stop bits.\n  * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid)\n  */\n#define IS_LPUART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_1) || \\\n                                          ((__STOPBITS__) == UART_STOPBITS_2))\n\n/**\n  * @brief Ensure that UART frame parity is valid.\n  * @param __PARITY__ UART frame parity.\n  * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid)\n  */\n#define IS_UART_PARITY(__PARITY__) (((__PARITY__) == UART_PARITY_NONE) || \\\n                                    ((__PARITY__) == UART_PARITY_EVEN) || \\\n                                    ((__PARITY__) == UART_PARITY_ODD))\n\n/**\n  * @brief Ensure that UART hardware flow control is valid.\n  * @param __CONTROL__ UART hardware flow control.\n  * @retval SET (__CONTROL__ is valid) or RESET (__CONTROL__ is invalid)\n  */\n#define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)\\\n  (((__CONTROL__) == UART_HWCONTROL_NONE) || \\\n   ((__CONTROL__) == UART_HWCONTROL_RTS)  || \\\n   ((__CONTROL__) == UART_HWCONTROL_CTS)  || \\\n   ((__CONTROL__) == UART_HWCONTROL_RTS_CTS))\n\n/**\n  * @brief Ensure that UART communication mode is valid.\n  * @param __MODE__ UART communication mode.\n  * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)\n  */\n#define IS_UART_MODE(__MODE__) ((((__MODE__) & (~((uint32_t)(UART_MODE_TX_RX)))) == 0x00U) && ((__MODE__) != 0x00U))\n\n/**\n  * @brief Ensure that UART state is valid.\n  * @param __STATE__ UART state.\n  * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid)\n  */\n#define IS_UART_STATE(__STATE__) (((__STATE__) == UART_STATE_DISABLE) || \\\n                                  ((__STATE__) == UART_STATE_ENABLE))\n\n/**\n  * @brief Ensure that UART oversampling is valid.\n  * @param __SAMPLING__ UART oversampling.\n  * @retval SET (__SAMPLING__ is valid) or RESET (__SAMPLING__ is invalid)\n  */\n#define IS_UART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == UART_OVERSAMPLING_16) || \\\n                                            ((__SAMPLING__) == UART_OVERSAMPLING_8))\n\n/**\n  * @brief Ensure that UART frame sampling is valid.\n  * @param __ONEBIT__ UART frame sampling.\n  * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid)\n  */\n#define IS_UART_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == UART_ONE_BIT_SAMPLE_DISABLE) || \\\n                                            ((__ONEBIT__) == UART_ONE_BIT_SAMPLE_ENABLE))\n\n/**\n  * @brief Ensure that UART auto Baud rate detection mode is valid.\n  * @param __MODE__ UART auto Baud rate detection mode.\n  * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__)  (((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT)    || \\\n                                                        ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE) || \\\n                                                        ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME)   || \\\n                                                        ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME))\n\n/**\n  * @brief Ensure that UART receiver timeout setting is valid.\n  * @param __TIMEOUT__ UART receiver timeout setting.\n  * @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid)\n  */\n#define IS_UART_RECEIVER_TIMEOUT(__TIMEOUT__)  (((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_DISABLE) || \\\n                                                ((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_ENABLE))\n\n/** @brief  Check the receiver timeout value.\n  * @note   The maximum UART receiver timeout value is 0xFFFFFF.\n  * @param  __TIMEOUTVALUE__ receiver timeout value.\n  * @retval Test result (TRUE or FALSE)\n  */\n#define IS_UART_RECEIVER_TIMEOUT_VALUE(__TIMEOUTVALUE__)  ((__TIMEOUTVALUE__) <= 0xFFFFFFU)\n\n/**\n  * @brief Ensure that UART LIN state is valid.\n  * @param __LIN__ UART LIN state.\n  * @retval SET (__LIN__ is valid) or RESET (__LIN__ is invalid)\n  */\n#define IS_UART_LIN(__LIN__)        (((__LIN__) == UART_LIN_DISABLE) || \\\n                                     ((__LIN__) == UART_LIN_ENABLE))\n\n/**\n  * @brief Ensure that UART LIN break detection length is valid.\n  * @param __LENGTH__ UART LIN break detection length.\n  * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)\n  */\n#define IS_UART_LIN_BREAK_DETECT_LENGTH(__LENGTH__) (((__LENGTH__) == UART_LINBREAKDETECTLENGTH_10B) || \\\n                                                     ((__LENGTH__) == UART_LINBREAKDETECTLENGTH_11B))\n\n/**\n  * @brief Ensure that UART DMA TX state is valid.\n  * @param __DMATX__ UART DMA TX state.\n  * @retval SET (__DMATX__ is valid) or RESET (__DMATX__ is invalid)\n  */\n#define IS_UART_DMA_TX(__DMATX__)     (((__DMATX__) == UART_DMA_TX_DISABLE) || \\\n                                       ((__DMATX__) == UART_DMA_TX_ENABLE))\n\n/**\n  * @brief Ensure that UART DMA RX state is valid.\n  * @param __DMARX__ UART DMA RX state.\n  * @retval SET (__DMARX__ is valid) or RESET (__DMARX__ is invalid)\n  */\n#define IS_UART_DMA_RX(__DMARX__)     (((__DMARX__) == UART_DMA_RX_DISABLE) || \\\n                                       ((__DMARX__) == UART_DMA_RX_ENABLE))\n\n/**\n  * @brief Ensure that UART half-duplex state is valid.\n  * @param __HDSEL__ UART half-duplex state.\n  * @retval SET (__HDSEL__ is valid) or RESET (__HDSEL__ is invalid)\n  */\n#define IS_UART_HALF_DUPLEX(__HDSEL__)     (((__HDSEL__) == UART_HALF_DUPLEX_DISABLE) || \\\n                                            ((__HDSEL__) == UART_HALF_DUPLEX_ENABLE))\n\n/**\n  * @brief Ensure that UART wake-up method is valid.\n  * @param __WAKEUP__ UART wake-up method .\n  * @retval SET (__WAKEUP__ is valid) or RESET (__WAKEUP__ is invalid)\n  */\n#define IS_UART_WAKEUPMETHOD(__WAKEUP__) (((__WAKEUP__) == UART_WAKEUPMETHOD_IDLELINE) || \\\n                                          ((__WAKEUP__) == UART_WAKEUPMETHOD_ADDRESSMARK))\n\n/**\n  * @brief Ensure that UART request parameter is valid.\n  * @param __PARAM__ UART request parameter.\n  * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid)\n  */\n#define IS_UART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == UART_AUTOBAUD_REQUEST)     || \\\n                                              ((__PARAM__) == UART_SENDBREAK_REQUEST)    || \\\n                                              ((__PARAM__) == UART_MUTE_MODE_REQUEST)    || \\\n                                              ((__PARAM__) == UART_RXDATA_FLUSH_REQUEST) || \\\n                                              ((__PARAM__) == UART_TXDATA_FLUSH_REQUEST))\n\n/**\n  * @brief Ensure that UART advanced features initialization is valid.\n  * @param __INIT__ UART advanced features initialization.\n  * @retval SET (__INIT__ is valid) or RESET (__INIT__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_INIT(__INIT__)   ((__INIT__) <= (UART_ADVFEATURE_NO_INIT                | \\\n                                                            UART_ADVFEATURE_TXINVERT_INIT          | \\\n                                                            UART_ADVFEATURE_RXINVERT_INIT          | \\\n                                                            UART_ADVFEATURE_DATAINVERT_INIT        | \\\n                                                            UART_ADVFEATURE_SWAP_INIT              | \\\n                                                            UART_ADVFEATURE_RXOVERRUNDISABLE_INIT  | \\\n                                                            UART_ADVFEATURE_DMADISABLEONERROR_INIT | \\\n                                                            UART_ADVFEATURE_AUTOBAUDRATE_INIT      | \\\n                                                            UART_ADVFEATURE_MSBFIRST_INIT))\n\n/**\n  * @brief Ensure that UART frame TX inversion setting is valid.\n  * @param __TXINV__ UART frame TX inversion setting.\n  * @retval SET (__TXINV__ is valid) or RESET (__TXINV__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == UART_ADVFEATURE_TXINV_DISABLE) || \\\n                                             ((__TXINV__) == UART_ADVFEATURE_TXINV_ENABLE))\n\n/**\n  * @brief Ensure that UART frame RX inversion setting is valid.\n  * @param __RXINV__ UART frame RX inversion setting.\n  * @retval SET (__RXINV__ is valid) or RESET (__RXINV__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == UART_ADVFEATURE_RXINV_DISABLE) || \\\n                                             ((__RXINV__) == UART_ADVFEATURE_RXINV_ENABLE))\n\n/**\n  * @brief Ensure that UART frame data inversion setting is valid.\n  * @param __DATAINV__ UART frame data inversion setting.\n  * @retval SET (__DATAINV__ is valid) or RESET (__DATAINV__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == UART_ADVFEATURE_DATAINV_DISABLE) || \\\n                                                 ((__DATAINV__) == UART_ADVFEATURE_DATAINV_ENABLE))\n\n/**\n  * @brief Ensure that UART frame RX/TX pins swap setting is valid.\n  * @param __SWAP__ UART frame RX/TX pins swap setting.\n  * @retval SET (__SWAP__ is valid) or RESET (__SWAP__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == UART_ADVFEATURE_SWAP_DISABLE) || \\\n                                           ((__SWAP__) == UART_ADVFEATURE_SWAP_ENABLE))\n\n/**\n  * @brief Ensure that UART frame overrun setting is valid.\n  * @param __OVERRUN__ UART frame overrun setting.\n  * @retval SET (__OVERRUN__ is valid) or RESET (__OVERRUN__ is invalid)\n  */\n#define IS_UART_OVERRUN(__OVERRUN__)     (((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_ENABLE) || \\\n                                          ((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_DISABLE))\n\n/**\n  * @brief Ensure that UART auto Baud rate state is valid.\n  * @param __AUTOBAUDRATE__ UART auto Baud rate state.\n  * @retval SET (__AUTOBAUDRATE__ is valid) or RESET (__AUTOBAUDRATE__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_AUTOBAUDRATE(__AUTOBAUDRATE__) (((__AUTOBAUDRATE__) == \\\n                                                            UART_ADVFEATURE_AUTOBAUDRATE_DISABLE) || \\\n                                                           ((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE))\n\n/**\n  * @brief Ensure that UART DMA enabling or disabling on error setting is valid.\n  * @param __DMA__ UART DMA enabling or disabling on error setting.\n  * @retval SET (__DMA__ is valid) or RESET (__DMA__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_DMAONRXERROR(__DMA__)  (((__DMA__) == UART_ADVFEATURE_DMA_ENABLEONRXERROR) || \\\n                                                   ((__DMA__) == UART_ADVFEATURE_DMA_DISABLEONRXERROR))\n\n/**\n  * @brief Ensure that UART frame MSB first setting is valid.\n  * @param __MSBFIRST__ UART frame MSB first setting.\n  * @retval SET (__MSBFIRST__ is valid) or RESET (__MSBFIRST__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \\\n                                                   ((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_ENABLE))\n\n/**\n  * @brief Ensure that UART stop mode state is valid.\n  * @param __STOPMODE__ UART stop mode state.\n  * @retval SET (__STOPMODE__ is valid) or RESET (__STOPMODE__ is invalid)\n  */\n#define IS_UART_ADVFEATURE_STOPMODE(__STOPMODE__) (((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_DISABLE) || \\\n                                                   ((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_ENABLE))\n\n/**\n  * @brief Ensure that UART mute mode state is valid.\n  * @param __MUTE__ UART mute mode state.\n  * @retval SET (__MUTE__ is valid) or RESET (__MUTE__ is invalid)\n  */\n#define IS_UART_MUTE_MODE(__MUTE__)       (((__MUTE__) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \\\n                                           ((__MUTE__) == UART_ADVFEATURE_MUTEMODE_ENABLE))\n\n/**\n  * @brief Ensure that UART wake-up selection is valid.\n  * @param __WAKE__ UART wake-up selection.\n  * @retval SET (__WAKE__ is valid) or RESET (__WAKE__ is invalid)\n  */\n#define IS_UART_WAKEUP_SELECTION(__WAKE__) (((__WAKE__) == UART_WAKEUP_ON_ADDRESS)           || \\\n                                            ((__WAKE__) == UART_WAKEUP_ON_STARTBIT)          || \\\n                                            ((__WAKE__) == UART_WAKEUP_ON_READDATA_NONEMPTY))\n\n/**\n  * @brief Ensure that UART driver enable polarity is valid.\n  * @param __POLARITY__ UART driver enable polarity.\n  * @retval SET (__POLARITY__ is valid) or RESET (__POLARITY__ is invalid)\n  */\n#define IS_UART_DE_POLARITY(__POLARITY__)    (((__POLARITY__) == UART_DE_POLARITY_HIGH) || \\\n                                              ((__POLARITY__) == UART_DE_POLARITY_LOW))\n\n/**\n  * @brief Ensure that UART Prescaler is valid.\n  * @param __CLOCKPRESCALER__ UART Prescaler value.\n  * @retval SET (__CLOCKPRESCALER__ is valid) or RESET (__CLOCKPRESCALER__ is invalid)\n  */\n#define IS_UART_PRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == UART_PRESCALER_DIV1)   || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV2)   || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV4)   || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV6)   || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV8)   || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV10)  || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV12)  || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV16)  || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV32)  || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV64)  || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) || \\\n                                               ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV256))\n\n/**\n  * @}\n  */\n\n/* Include UART HAL Extended module */\n#include \"stm32h7xx_hal_uart_ex.h\"\n\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup UART_Exported_Functions UART Exported Functions\n  * @{\n  */\n\n/** @addtogroup UART_Exported_Functions_Group1 Initialization and de-initialization functions\n  * @{\n  */\n\n/* Initialization and de-initialization functions  ****************************/\nHAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength);\nHAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod);\nHAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart);\nvoid HAL_UART_MspInit(UART_HandleTypeDef *huart);\nvoid HAL_UART_MspDeInit(UART_HandleTypeDef *huart);\n\n/* Callbacks Register/UnRegister functions  ***********************************/\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\nHAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID,\n                                            pUART_CallbackTypeDef pCallback);\nHAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID);\n\nHAL_StatusTypeDef HAL_UART_RegisterRxEventCallback(UART_HandleTypeDef *huart, pUART_RxEventCallbackTypeDef pCallback);\nHAL_StatusTypeDef HAL_UART_UnRegisterRxEventCallback(UART_HandleTypeDef *huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n\n/** @addtogroup UART_Exported_Functions_Group2 IO operation functions\n  * @{\n  */\n\n/* IO operation functions *****************************************************/\nHAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);\nHAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);\nHAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);\n/* Transfer Abort functions */\nHAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart);\n\nvoid HAL_UART_IRQHandler(UART_HandleTypeDef *huart);\nvoid HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);\nvoid HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);\nvoid HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);\nvoid HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);\nvoid HAL_UART_ErrorCallback(UART_HandleTypeDef *huart);\nvoid HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart);\nvoid HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart);\nvoid HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart);\n\nvoid HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size);\n\n/**\n  * @}\n  */\n\n/** @addtogroup UART_Exported_Functions_Group3 Peripheral Control functions\n  * @{\n  */\n\n/* Peripheral Control functions  ************************************************/\nvoid HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue);\nHAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart);\n\nHAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart);\nvoid HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart);\n\n/**\n  * @}\n  */\n\n/** @addtogroup UART_Exported_Functions_Group4 Peripheral State and Error functions\n  * @{\n  */\n\n/* Peripheral State and Errors functions  **************************************************/\nHAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart);\nuint32_t              HAL_UART_GetError(UART_HandleTypeDef *huart);\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private functions -----------------------------------------------------------*/\n/** @addtogroup UART_Private_Functions UART Private Functions\n  * @{\n  */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\nvoid              UART_InitCallbacksToDefault(UART_HandleTypeDef *huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\nHAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,\n                                              uint32_t Tickstart, uint32_t Timeout);\nvoid              UART_AdvFeatureConfig(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef UART_Start_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\n\n/**\n  * @}\n  */\n\n/* Private variables -----------------------------------------------------------*/\n/** @defgroup UART_Private_variables UART Private variables\n  * @{\n  */\n/* Prescaler Table used in BRR computation macros.\n   Declared as extern here to allow use of private UART macros, outside of HAL UART functions */\nextern const uint16_t UARTPrescTable[12];\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_UART_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart_ex.h",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_uart_ex.h\n  * @author  MCD Application Team\n  * @brief   Header file of UART HAL Extended module.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef STM32H7xx_HAL_UART_EX_H\n#define STM32H7xx_HAL_UART_EX_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal_def.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup UARTEx\n  * @{\n  */\n\n/* Exported types ------------------------------------------------------------*/\n/** @defgroup UARTEx_Exported_Types UARTEx Exported Types\n  * @{\n  */\n\n/**\n  * @brief  UART wake up from stop mode parameters\n  */\ntypedef struct\n{\n  uint32_t WakeUpEvent;        /*!< Specifies which event will activate the Wakeup from Stop mode flag (WUF).\n                                    This parameter can be a value of @ref UART_WakeUp_from_Stop_Selection.\n                                    If set to UART_WAKEUP_ON_ADDRESS, the two other fields below must\n                                    be filled up. */\n\n  uint16_t AddressLength;      /*!< Specifies whether the address is 4 or 7-bit long.\n                                    This parameter can be a value of @ref UARTEx_WakeUp_Address_Length.  */\n\n  uint8_t Address;             /*!< UART/USART node address (7-bit long max). */\n} UART_WakeUpTypeDef;\n\n/**\n  * @}\n  */\n\n/* Exported constants --------------------------------------------------------*/\n/** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants\n  * @{\n  */\n\n/** @defgroup UARTEx_Word_Length UARTEx Word Length\n  * @{\n  */\n#define UART_WORDLENGTH_7B          USART_CR1_M1   /*!< 7-bit long UART frame */\n#define UART_WORDLENGTH_8B          0x00000000U    /*!< 8-bit long UART frame */\n#define UART_WORDLENGTH_9B          USART_CR1_M0   /*!< 9-bit long UART frame */\n/**\n  * @}\n  */\n\n/** @defgroup UARTEx_WakeUp_Address_Length UARTEx WakeUp Address Length\n  * @{\n  */\n#define UART_ADDRESS_DETECT_4B      0x00000000U      /*!< 4-bit long wake-up address */\n#define UART_ADDRESS_DETECT_7B      USART_CR2_ADDM7  /*!< 7-bit long wake-up address */\n/**\n  * @}\n  */\n\n/** @defgroup UARTEx_FIFO_mode UARTEx FIFO mode\n  * @brief    UART FIFO mode\n  * @{\n  */\n#define UART_FIFOMODE_DISABLE       0x00000000U       /*!< FIFO mode disable */\n#define UART_FIFOMODE_ENABLE        USART_CR1_FIFOEN  /*!< FIFO mode enable  */\n/**\n  * @}\n  */\n\n/** @defgroup UARTEx_TXFIFO_threshold_level UARTEx TXFIFO threshold level\n  * @brief    UART TXFIFO threshold level\n  * @{\n  */\n#define UART_TXFIFO_THRESHOLD_1_8   0x00000000U                               /*!< TX FIFO reaches 1/8 of its depth */\n#define UART_TXFIFO_THRESHOLD_1_4   USART_CR3_TXFTCFG_0                       /*!< TX FIFO reaches 1/4 of its depth */\n#define UART_TXFIFO_THRESHOLD_1_2   USART_CR3_TXFTCFG_1                       /*!< TX FIFO reaches 1/2 of its depth */\n#define UART_TXFIFO_THRESHOLD_3_4   (USART_CR3_TXFTCFG_0|USART_CR3_TXFTCFG_1) /*!< TX FIFO reaches 3/4 of its depth */\n#define UART_TXFIFO_THRESHOLD_7_8   USART_CR3_TXFTCFG_2                       /*!< TX FIFO reaches 7/8 of its depth */\n#define UART_TXFIFO_THRESHOLD_8_8   (USART_CR3_TXFTCFG_2|USART_CR3_TXFTCFG_0) /*!< TX FIFO becomes empty            */\n/**\n  * @}\n  */\n\n/** @defgroup UARTEx_RXFIFO_threshold_level UARTEx RXFIFO threshold level\n  * @brief    UART RXFIFO threshold level\n  * @{\n  */\n#define UART_RXFIFO_THRESHOLD_1_8   0x00000000U                               /*!< RX FIFO reaches 1/8 of its depth */\n#define UART_RXFIFO_THRESHOLD_1_4   USART_CR3_RXFTCFG_0                       /*!< RX FIFO reaches 1/4 of its depth */\n#define UART_RXFIFO_THRESHOLD_1_2   USART_CR3_RXFTCFG_1                       /*!< RX FIFO reaches 1/2 of its depth */\n#define UART_RXFIFO_THRESHOLD_3_4   (USART_CR3_RXFTCFG_0|USART_CR3_RXFTCFG_1) /*!< RX FIFO reaches 3/4 of its depth */\n#define UART_RXFIFO_THRESHOLD_7_8   USART_CR3_RXFTCFG_2                       /*!< RX FIFO reaches 7/8 of its depth */\n#define UART_RXFIFO_THRESHOLD_8_8   (USART_CR3_RXFTCFG_2|USART_CR3_RXFTCFG_0) /*!< RX FIFO becomes full             */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Exported macros -----------------------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n/** @addtogroup UARTEx_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup UARTEx_Exported_Functions_Group1\n  * @{\n  */\n\n/* Initialization and de-initialization functions  ****************************/\nHAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime,\n                                   uint32_t DeassertionTime);\n\n/**\n  * @}\n  */\n\n/** @addtogroup UARTEx_Exported_Functions_Group2\n  * @{\n  */\n\nvoid HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart);\n\nvoid HAL_UARTEx_RxFifoFullCallback(UART_HandleTypeDef *huart);\nvoid HAL_UARTEx_TxFifoEmptyCallback(UART_HandleTypeDef *huart);\n\n/**\n  * @}\n  */\n\n/** @addtogroup UARTEx_Exported_Functions_Group3\n  * @{\n  */\n\n/* Peripheral Control functions  **********************************************/\nHAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);\nHAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart);\n\nHAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);\n\nHAL_StatusTypeDef HAL_UARTEx_EnableFifoMode(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart);\nHAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold);\nHAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold);\n\nHAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen,\n                                           uint32_t Timeout);\nHAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\nHAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup UARTEx_Private_Macros UARTEx Private Macros\n  * @{\n  */\n\n/** @brief  Report the UART clock source.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @param  __CLOCKSOURCE__ output variable.\n  * @retval UART clocking source, written in __CLOCKSOURCE__.\n  */\n#if defined(UART9) && defined(USART10)\n#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \\\n  do {                                                        \\\n    if((__HANDLE__)->Instance == USART1)                      \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART1_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART1CLKSOURCE_D2PCLK2:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2;       \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == USART2)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART2_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART2CLKSOURCE_D2PCLK1:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == USART3)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART3_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART3CLKSOURCE_D2PCLK1:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == UART4)                  \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART4_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART4CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if ((__HANDLE__)->Instance == UART5)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART5_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART5CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == USART6)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART6_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART6CLKSOURCE_D2PCLK2:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2;       \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == UART7)                  \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART7_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART7CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == UART8)                  \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART8_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART8CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == UART9)                  \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART9_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART9CLKSOURCE_D2PCLK2:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2;       \\\n          break;                                              \\\n        case RCC_UART9CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART9CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART9CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART9CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART9CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == USART10)                \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART10_SOURCE())                  \\\n      {                                                       \\\n        case RCC_USART10CLKSOURCE_D2PCLK2:                    \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2;       \\\n          break;                                              \\\n        case RCC_USART10CLKSOURCE_PLL2:                       \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART10CLKSOURCE_PLL3:                       \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART10CLKSOURCE_HSI:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART10CLKSOURCE_CSI:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART10CLKSOURCE_LSE:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == LPUART1)                \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_LPUART1_SOURCE())                  \\\n      {                                                       \\\n        case RCC_LPUART1CLKSOURCE_D3PCLK1:                    \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D3PCLK1;       \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_PLL2:                       \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_PLL3:                       \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_HSI:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_CSI:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_LSE:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else                                                      \\\n    {                                                         \\\n      (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;         \\\n    }                                                         \\\n  } while(0U)\n#else\n#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \\\n  do {                                                        \\\n    if((__HANDLE__)->Instance == USART1)                      \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART1_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART1CLKSOURCE_D2PCLK2:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2;       \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART1CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == USART2)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART2_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART2CLKSOURCE_D2PCLK1:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART2CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == USART3)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART3_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART3CLKSOURCE_D2PCLK1:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART3CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == UART4)                  \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART4_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART4CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART4CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if ((__HANDLE__)->Instance == UART5)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART5_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART5CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART5CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == USART6)                 \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_USART6_SOURCE())                   \\\n      {                                                       \\\n        case RCC_USART6CLKSOURCE_D2PCLK2:                     \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2;       \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_PLL2:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_PLL3:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_HSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_CSI:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_USART6CLKSOURCE_LSE:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == UART7)                  \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART7_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART7CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART7CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == UART8)                  \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_UART8_SOURCE())                    \\\n      {                                                       \\\n        case RCC_UART8CLKSOURCE_D2PCLK1:                      \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1;       \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_PLL2:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_PLL3:                         \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_HSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_CSI:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_UART8CLKSOURCE_LSE:                          \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else if((__HANDLE__)->Instance == LPUART1)                \\\n    {                                                         \\\n      switch(__HAL_RCC_GET_LPUART1_SOURCE())                  \\\n      {                                                       \\\n        case RCC_LPUART1CLKSOURCE_D3PCLK1:                    \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D3PCLK1;       \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_PLL2:                       \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2;          \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_PLL3:                       \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3;          \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_HSI:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI;           \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_CSI:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI;           \\\n          break;                                              \\\n        case RCC_LPUART1CLKSOURCE_LSE:                        \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE;           \\\n          break;                                              \\\n        default:                                              \\\n          (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;     \\\n          break;                                              \\\n      }                                                       \\\n    }                                                         \\\n    else                                                      \\\n    {                                                         \\\n      (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED;         \\\n    }                                                         \\\n  } while(0U)\n#endif  /* UART9 && USART10 */\n\n/** @brief  Report the UART mask to apply to retrieve the received data\n  *         according to the word length and to the parity bits activation.\n  * @note   If PCE = 1, the parity bit is not included in the data extracted\n  *         by the reception API().\n  *         This masking operation is not carried out in the case of\n  *         DMA transfers.\n  * @param  __HANDLE__ specifies the UART Handle.\n  * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field.\n  */\n#define UART_MASK_COMPUTATION(__HANDLE__)                             \\\n  do {                                                                \\\n    if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B)          \\\n    {                                                                 \\\n      if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE)              \\\n      {                                                               \\\n        (__HANDLE__)->Mask = 0x01FFU ;                                \\\n      }                                                               \\\n      else                                                            \\\n      {                                                               \\\n        (__HANDLE__)->Mask = 0x00FFU ;                                \\\n      }                                                               \\\n    }                                                                 \\\n    else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B)     \\\n    {                                                                 \\\n      if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE)              \\\n      {                                                               \\\n        (__HANDLE__)->Mask = 0x00FFU ;                                \\\n      }                                                               \\\n      else                                                            \\\n      {                                                               \\\n        (__HANDLE__)->Mask = 0x007FU ;                                \\\n      }                                                               \\\n    }                                                                 \\\n    else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B)     \\\n    {                                                                 \\\n      if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE)              \\\n      {                                                               \\\n        (__HANDLE__)->Mask = 0x007FU ;                                \\\n      }                                                               \\\n      else                                                            \\\n      {                                                               \\\n        (__HANDLE__)->Mask = 0x003FU ;                                \\\n      }                                                               \\\n    }                                                                 \\\n    else                                                              \\\n    {                                                                 \\\n      (__HANDLE__)->Mask = 0x0000U;                                   \\\n    }                                                                 \\\n  } while(0U)\n\n/**\n  * @brief Ensure that UART frame length is valid.\n  * @param __LENGTH__ UART frame length.\n  * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)\n  */\n#define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \\\n                                         ((__LENGTH__) == UART_WORDLENGTH_8B) || \\\n                                         ((__LENGTH__) == UART_WORDLENGTH_9B))\n\n/**\n  * @brief Ensure that UART wake-up address length is valid.\n  * @param __ADDRESS__ UART wake-up address length.\n  * @retval SET (__ADDRESS__ is valid) or RESET (__ADDRESS__ is invalid)\n  */\n#define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \\\n                                                   ((__ADDRESS__) == UART_ADDRESS_DETECT_7B))\n\n/**\n  * @brief Ensure that UART TXFIFO threshold level is valid.\n  * @param __THRESHOLD__ UART TXFIFO threshold level.\n  * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)\n  */\n#define IS_UART_TXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_1_8) || \\\n                                                 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_1_4) || \\\n                                                 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_1_2) || \\\n                                                 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_3_4) || \\\n                                                 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_7_8) || \\\n                                                 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_8_8))\n\n/**\n  * @brief Ensure that UART RXFIFO threshold level is valid.\n  * @param __THRESHOLD__ UART RXFIFO threshold level.\n  * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)\n  */\n#define IS_UART_RXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_1_8) || \\\n                                                 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_1_4) || \\\n                                                 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_1_2) || \\\n                                                 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_3_4) || \\\n                                                 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_7_8) || \\\n                                                 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_8_8))\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* STM32H7xx_HAL_UART_EX_H */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/LICENSE.txt",
    "content": "This software component is provided to you as part of a software package and\napplicable license terms are in the  Package_license file. If you received this\nsoftware component outside of a package or without applicable license terms,\nthe terms of the BSD-3-Clause license shall apply. \nYou may obtain a copy of the BSD-3-Clause at:\nhttps://opensource.org/licenses/BSD-3-Clause\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal.c\n  * @author  MCD Application Team\n  * @brief   HAL module driver.\n  *          This is the common part of the HAL initialization\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                     ##### How to use this driver #####\n  ==============================================================================\n    [..]\n    The common HAL driver contains a set of generic and common APIs that can be\n    used by the PPP peripheral drivers and the user to start using the HAL.\n    [..]\n    The HAL contains two APIs' categories:\n         (+) Common HAL APIs\n         (+) Services HAL APIs\n\n  @endverbatim\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup HAL  HAL\n  * @brief HAL module driver.\n  * @{\n  */\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/**\n * @brief STM32H7xx HAL Driver version number V1.11.0\n   */\n#define __STM32H7xx_HAL_VERSION_MAIN   (0x01UL) /*!< [31:24] main version */\n#define __STM32H7xx_HAL_VERSION_SUB1   (0x0BUL) /*!< [23:16] sub1 version */\n#define __STM32H7xx_HAL_VERSION_SUB2   (0x00UL) /*!< [15:8]  sub2 version */\n#define __STM32H7xx_HAL_VERSION_RC     (0x00UL) /*!< [7:0]  release candidate */\n#define __STM32H7xx_HAL_VERSION         ((__STM32H7xx_HAL_VERSION_MAIN << 24)\\\n                                        |(__STM32H7xx_HAL_VERSION_SUB1 << 16)\\\n                                        |(__STM32H7xx_HAL_VERSION_SUB2 << 8 )\\\n                                        |(__STM32H7xx_HAL_VERSION_RC))\n\n#define IDCODE_DEVID_MASK    ((uint32_t)0x00000FFF)\n#define VREFBUF_TIMEOUT_VALUE     (uint32_t)10   /* 10 ms  */\n\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Exported variables --------------------------------------------------------*/\n\n/** @defgroup HAL_Exported_Variables HAL Exported Variables\n  * @{\n  */\n__IO uint32_t uwTick;\nuint32_t uwTickPrio   = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */\nHAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT;  /* 1KHz */\n/**\n  * @}\n  */\n\n/* Private function prototypes -----------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n\n/** @defgroup HAL_Private_Functions  HAL Private Functions\n  * @{\n  */\n\n/** @defgroup HAL_Group1 Initialization and de-initialization Functions\n *  @brief    Initialization and de-initialization functions\n *\n@verbatim\n ===============================================================================\n              ##### Initialization and de-initialization functions #####\n ===============================================================================\n    [..]  This section provides functions allowing to:\n      (+) Initializes the Flash interface the NVIC allocation and initial clock\n          configuration. It initializes the systick also when timeout is needed\n          and the backup domain when enabled.\n      (+) De-Initializes common part of the HAL.\n      (+) Configure The time base source to have 1ms time base with a dedicated\n          Tick interrupt priority.\n        (++) SysTick timer is used by default as source of time base, but user\n             can eventually implement his proper time base source (a general purpose\n             timer for example or other time source), keeping in mind that Time base\n             duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and\n             handled in milliseconds basis.\n        (++) Time base configuration function (HAL_InitTick ()) is called automatically\n             at the beginning of the program after reset by HAL_Init() or at any time\n             when clock is configured, by HAL_RCC_ClockConfig().\n        (++) Source of time base is configured  to generate interrupts at regular\n             time intervals. Care must be taken if HAL_Delay() is called from a\n             peripheral ISR process, the Tick interrupt line must have higher priority\n            (numerically lower) than the peripheral interrupt. Otherwise the caller\n            ISR process will be blocked.\n       (++) functions affecting time base configurations are declared as __weak\n             to make  override possible  in case of other  implementations in user file.\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  This function is used to initialize the HAL Library; it must be the first\n  *         instruction to be executed in the main program (before to call any other\n  *         HAL function), it performs the following:\n  *           Configures the SysTick to generate an interrupt each 1 millisecond,\n  *           which is clocked by the HSI (at this stage, the clock is not yet\n  *           configured and thus the system is running from the internal HSI at 16 MHz).\n  *           Set NVIC Group Priority to 4.\n  *           Calls the HAL_MspInit() callback function defined in user file\n  *           \"stm32h7xx_hal_msp.c\" to do the global low level hardware initialization\n  *\n  * @note   SysTick is used as time base for the HAL_Delay() function, the application\n  *         need to ensure that the SysTick time base is always set to 1 millisecond\n  *         to have correct HAL operation.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_Init(void)\n{\n\nuint32_t common_system_clock;\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n   /* Configure Cortex-M4 Instruction cache through ART accelerator */\n   __HAL_RCC_ART_CLK_ENABLE();                   /* Enable the Cortex-M4 ART Clock */\n   __HAL_ART_CONFIG_BASE_ADDRESS(0x08100000UL);  /* Configure the Cortex-M4 ART Base address to the Flash Bank 2 : */\n   __HAL_ART_ENABLE();                           /* Enable the Cortex-M4 ART */\n#endif /* DUAL_CORE &&  CORE_CM4 */\n\n  /* Set Interrupt Group Priority */\n  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);\n\n  /* Update the SystemCoreClock global variable */\n#if defined(RCC_D1CFGR_D1CPRE)\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos]) & 0x1FU);\n#else\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos]) & 0x1FU);\n#endif\n\n  /* Update the SystemD2Clock global variable */\n#if defined(RCC_D1CFGR_HPRE)\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU));\n#else\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_HPRE)>> RCC_CDCFGR1_HPRE_Pos]) & 0x1FU));\n#endif\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  SystemCoreClock = SystemD2Clock;\n#else\n  SystemCoreClock = common_system_clock;\n#endif /* DUAL_CORE && CORE_CM4 */\n\n  /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */\n  if(HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Init the low level hardware */\n  HAL_MspInit();\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  This function de-Initializes common part of the HAL and stops the systick.\n  *         This function is optional.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DeInit(void)\n{\n  /* Reset of all peripherals */\n  __HAL_RCC_AHB3_FORCE_RESET();\n  __HAL_RCC_AHB3_RELEASE_RESET();\n\n  __HAL_RCC_AHB1_FORCE_RESET();\n  __HAL_RCC_AHB1_RELEASE_RESET();\n\n  __HAL_RCC_AHB2_FORCE_RESET();\n  __HAL_RCC_AHB2_RELEASE_RESET();\n\n  __HAL_RCC_AHB4_FORCE_RESET();\n __HAL_RCC_AHB4_RELEASE_RESET();\n\n  __HAL_RCC_APB3_FORCE_RESET();\n  __HAL_RCC_APB3_RELEASE_RESET();\n\n  __HAL_RCC_APB1L_FORCE_RESET();\n  __HAL_RCC_APB1L_RELEASE_RESET();\n\n  __HAL_RCC_APB1H_FORCE_RESET();\n  __HAL_RCC_APB1H_RELEASE_RESET();\n\n   __HAL_RCC_APB2_FORCE_RESET();\n   __HAL_RCC_APB2_RELEASE_RESET();\n\n  __HAL_RCC_APB4_FORCE_RESET();\n  __HAL_RCC_APB4_RELEASE_RESET();\n\n  /* De-Init the low level hardware */\n  HAL_MspDeInit();\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the MSP.\n  * @retval None\n  */\n__weak void HAL_MspInit(void)\n{\n  /* NOTE : This function Should not be modified, when the callback is needed,\n            the HAL_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes the MSP.\n  * @retval None\n  */\n__weak void HAL_MspDeInit(void)\n{\n  /* NOTE : This function Should not be modified, when the callback is needed,\n            the HAL_MspDeInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief This function configures the source of the time base.\n  *        The time source is configured  to have 1ms time base with a dedicated\n  *        Tick interrupt priority.\n  * @note This function is called  automatically at the beginning of program after\n  *       reset by HAL_Init() or at any time when clock is reconfigured  by HAL_RCC_ClockConfig().\n  * @note In the default implementation, SysTick timer is the source of time base.\n  *       It is used to generate interrupts at regular time intervals.\n  *       Care must be taken if HAL_Delay() is called from a peripheral ISR process,\n  *       The the SysTick interrupt must have higher priority (numerically lower)\n  *       than the peripheral interrupt. Otherwise the caller ISR process will be blocked.\n  *       The function is declared as __weak  to be overwritten  in case of other\n  *       implementation  in user file.\n  * @param TickPriority: Tick interrupt priority.\n  * @retval HAL status\n  */\n__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)\n{\n  /* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that don't take the value zero)*/\n  if((uint32_t)uwTickFreq == 0UL)\n  {\n    return HAL_ERROR;\n  }\n\n    /* Configure the SysTick to have interrupt in 1ms time basis*/\n    if (HAL_SYSTICK_Config(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq)) > 0U)\n    {\n      return HAL_ERROR;\n    }\n\n  /* Configure the SysTick IRQ priority */\n  if (TickPriority < (1UL << __NVIC_PRIO_BITS))\n  {\n    HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);\n    uwTickPrio = TickPriority;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup HAL_Group2 HAL Control functions\n *  @brief    HAL Control functions\n *\n@verbatim\n ===============================================================================\n                      ##### HAL Control functions #####\n ===============================================================================\n    [..]  This section provides functions allowing to:\n      (+) Provide a tick value in millisecond\n      (+) Provide a blocking delay in millisecond\n      (+) Suspend the time base source interrupt\n      (+) Resume the time base source interrupt\n      (+) Get the HAL API driver version\n      (+) Get the device identifier\n      (+) Get the device revision identifier\n      (+) Enable/Disable Debug module during SLEEP mode\n      (+) Enable/Disable Debug module during STOP mode\n      (+) Enable/Disable Debug module during STANDBY mode\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief This function is called to increment  a global variable \"uwTick\"\n  *        used as application time base.\n  * @note In the default implementation, this variable is incremented each 1ms\n  *       in Systick ISR.\n * @note This function is declared as __weak to be overwritten in case of other\n  *      implementations in user file.\n  * @retval None\n  */\n__weak void HAL_IncTick(void)\n{\n  uwTick += (uint32_t)uwTickFreq;\n}\n\n/**\n  * @brief Provides a tick value in millisecond.\n  * @note This function is declared as __weak to be overwritten in case of other\n  *       implementations in user file.\n  * @retval tick value\n  */\n__weak uint32_t HAL_GetTick(void)\n{\n  return uwTick;\n}\n\n/**\n  * @brief This function returns a tick priority.\n  * @retval tick priority\n  */\nuint32_t HAL_GetTickPrio(void)\n{\n  return uwTickPrio;\n}\n\n/**\n  * @brief Set new tick Freq.\n  * @retval Status\n  */\nHAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)\n{\n  HAL_StatusTypeDef status  = HAL_OK;\n  HAL_TickFreqTypeDef prevTickFreq;\n\n  assert_param(IS_TICKFREQ(Freq));\n\n  if (uwTickFreq != Freq)\n  {\n\n    /* Back up uwTickFreq frequency */\n    prevTickFreq = uwTickFreq;\n\n    /* Update uwTickFreq global variable used by HAL_InitTick() */\n    uwTickFreq = Freq;\n\n    /* Apply the new tick Freq  */\n    status = HAL_InitTick(uwTickPrio);\n    if (status != HAL_OK)\n    {\n      /* Restore previous tick frequency */\n      uwTickFreq = prevTickFreq;\n    }\n  }\n\n  return status;\n}\n\n/**\n  * @brief Return tick frequency.\n  * @retval tick period in Hz\n  */\nHAL_TickFreqTypeDef HAL_GetTickFreq(void)\n{\n  return uwTickFreq;\n}\n\n/**\n  * @brief This function provides minimum delay (in milliseconds) based\n  *        on variable incremented.\n  * @note In the default implementation , SysTick timer is the source of time base.\n  *       It is used to generate interrupts at regular time intervals where uwTick\n  *       is incremented.\n  * @note This function is declared as __weak to be overwritten in case of other\n  *       implementations in user file.\n  * @param Delay  specifies the delay time length, in milliseconds.\n  * @retval None\n  */\n__weak void HAL_Delay(uint32_t Delay)\n{\n  uint32_t tickstart = HAL_GetTick();\n  uint32_t wait = Delay;\n\n  /* Add a freq to guarantee minimum wait */\n  if (wait < HAL_MAX_DELAY)\n  {\n    wait += (uint32_t)(uwTickFreq);\n  }\n\n  while ((HAL_GetTick() - tickstart) < wait)\n  {\n  }\n}\n\n/**\n  * @brief Suspend Tick increment.\n  * @note In the default implementation , SysTick timer is the source of time base. It is\n  *       used to generate interrupts at regular time intervals. Once HAL_SuspendTick()\n  *       is called, the the SysTick interrupt will be disabled and so Tick increment\n  *       is suspended.\n  * @note This function is declared as __weak to be overwritten in case of other\n  *       implementations in user file.\n  * @retval None\n  */\n__weak void HAL_SuspendTick(void)\n{\n  /* Disable SysTick Interrupt */\n  SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;\n}\n\n/**\n  * @brief Resume Tick increment.\n  * @note In the default implementation , SysTick timer is the source of time base. It is\n  *       used to generate interrupts at regular time intervals. Once HAL_ResumeTick()\n  *       is called, the the SysTick interrupt will be enabled and so Tick increment\n  *       is resumed.\n  * @note This function is declared as __weak to be overwritten in case of other\n  *       implementations in user file.\n  * @retval None\n  */\n__weak void HAL_ResumeTick(void)\n{\n  /* Enable SysTick Interrupt */\n  SysTick->CTRL  |= SysTick_CTRL_TICKINT_Msk;\n}\n\n/**\n  * @brief  Returns the HAL revision\n  * @retval version : 0xXYZR (8bits for each decimal, R for RC)\n  */\nuint32_t HAL_GetHalVersion(void)\n{\n return __STM32H7xx_HAL_VERSION;\n}\n\n/**\n  * @brief  Returns the device revision identifier.\n  * @retval Device revision identifier\n  */\nuint32_t HAL_GetREVID(void)\n{\n   return((DBGMCU->IDCODE) >> 16);\n}\n\n/**\n  * @brief  Returns the device identifier.\n  * @retval Device identifier\n  */\nuint32_t HAL_GetDEVID(void)\n{\n   return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK);\n}\n\n/**\n  * @brief  Return the first word of the unique device identifier (UID based on 96 bits)\n  * @retval Device identifier\n  */\nuint32_t HAL_GetUIDw0(void)\n{\n  return(READ_REG(*((uint32_t *)UID_BASE)));\n}\n\n/**\n  * @brief  Return the second word of the unique device identifier (UID based on 96 bits)\n  * @retval Device identifier\n  */\nuint32_t HAL_GetUIDw1(void)\n{\n  return(READ_REG(*((uint32_t *)(UID_BASE + 4U))));\n}\n\n/**\n  * @brief  Return the third word of the unique device identifier (UID based on 96 bits)\n  * @retval Device identifier\n  */\nuint32_t HAL_GetUIDw2(void)\n{\n  return(READ_REG(*((uint32_t *)(UID_BASE + 8U))));\n}\n\n/**\n  * @brief Configure the internal voltage reference buffer voltage scale.\n  * @param VoltageScaling  specifies the output voltage to achieve\n  *          This parameter can be one of the following values:\n  *            @arg SYSCFG_VREFBUF_VOLTAGE_SCALE0: VREF_OUT1 around 2.5 V.\n  *                                                This requires VDDA equal to or higher than 2.8 V.\n  *            @arg SYSCFG_VREFBUF_VOLTAGE_SCALE1: VREF_OUT2 around 2.048 V.\n  *                                                This requires VDDA equal to or higher than 2.4 V.\n  *            @arg SYSCFG_VREFBUF_VOLTAGE_SCALE2: VREF_OUT3 around 1.8 V.\n  *                                                This requires VDDA equal to or higher than 2.1 V.\n  *            @arg SYSCFG_VREFBUF_VOLTAGE_SCALE3: VREF_OUT4 around 1.5 V.\n  *                                                This requires VDDA equal to or higher than 1.8 V.\n  * @retval None\n  */\nvoid HAL_SYSCFG_VREFBUF_VoltageScalingConfig(uint32_t VoltageScaling)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSCFG_VREFBUF_VOLTAGE_SCALE(VoltageScaling));\n\n  MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_VRS, VoltageScaling);\n}\n\n/**\n  * @brief Configure the internal voltage reference buffer high impedance mode.\n  * @param Mode  specifies the high impedance mode\n  *          This parameter can be one of the following values:\n  *            @arg SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE: VREF+ pin is internally connect to VREFINT output.\n  *            @arg SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE: VREF+ pin is high impedance.\n  * @retval None\n  */\nvoid HAL_SYSCFG_VREFBUF_HighImpedanceConfig(uint32_t Mode)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE(Mode));\n\n  MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_HIZ, Mode);\n}\n\n/**\n  * @brief  Tune the Internal Voltage Reference buffer (VREFBUF).\n  * @retval None\n  */\nvoid HAL_SYSCFG_VREFBUF_TrimmingConfig(uint32_t TrimmingValue)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSCFG_VREFBUF_TRIMMING(TrimmingValue));\n\n  MODIFY_REG(VREFBUF->CCR, VREFBUF_CCR_TRIM, TrimmingValue);\n}\n\n/**\n  * @brief  Enable the Internal Voltage Reference buffer (VREFBUF).\n  * @retval HAL_OK/HAL_TIMEOUT\n  */\nHAL_StatusTypeDef HAL_SYSCFG_EnableVREFBUF(void)\n{\n  uint32_t  tickstart;\n\n  SET_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR);\n\n  /* Get Start Tick*/\n  tickstart = HAL_GetTick();\n\n  /* Wait for VRR bit  */\n  while(READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRR) == 0UL)\n  {\n    if((HAL_GetTick() - tickstart) > VREFBUF_TIMEOUT_VALUE)\n    {\n      return HAL_TIMEOUT;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Disable the Internal Voltage Reference buffer (VREFBUF).\n  *\n  * @retval None\n  */\nvoid HAL_SYSCFG_DisableVREFBUF(void)\n{\n  CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR);\n}\n\n#if defined(SYSCFG_PMCR_EPIS_SEL)\n/**\n  * @brief  Ethernet PHY Interface Selection either MII or RMII\n  * @param  SYSCFG_ETHInterface: Selects the Ethernet PHY interface\n  *   This parameter can be one of the following values:\n  *   @arg SYSCFG_ETH_MII : Select the Media Independent Interface\n  *   @arg SYSCFG_ETH_RMII: Select the Reduced Media Independent Interface\n  * @retval None\n  */\nvoid HAL_SYSCFG_ETHInterfaceSelect(uint32_t SYSCFG_ETHInterface)\n{\n  /* Check the parameter */\n  assert_param(IS_SYSCFG_ETHERNET_CONFIG(SYSCFG_ETHInterface));\n\n  MODIFY_REG(SYSCFG->PMCR, SYSCFG_PMCR_EPIS_SEL, (uint32_t)(SYSCFG_ETHInterface));\n}\n#endif /* SYSCFG_PMCR_EPIS_SEL */\n\n/**\n  * @brief  Analog Switch control for dual analog pads.\n  * @param  SYSCFG_AnalogSwitch: Selects the analog pad\n  *   This parameter can be one or a combination of the following values:\n  *   @arg SYSCFG_SWITCH_PA0 : Select PA0 analog switch\n  *   @arg SYSCFG_SWITCH_PA1:  Select PA1 analog switch\n  *   @arg SYSCFG_SWITCH_PC2 : Select PC2 analog switch\n  *   @arg SYSCFG_SWITCH_PC3:  Select PC3 analog switch\n  * @param  SYSCFG_SwitchState: Open or Close the analog switch between dual pads (PXn and PXn_C)\n  *   This parameter can be one or a combination of the following values:\n  *   @arg SYSCFG_SWITCH_PA0_OPEN\n  *   @arg SYSCFG_SWITCH_PA0_CLOSE\n  *   @arg SYSCFG_SWITCH_PA1_OPEN\n  *   @arg SYSCFG_SWITCH_PA1_CLOSE\n  *   @arg SYSCFG_SWITCH_PC2_OPEN\n  *   @arg SYSCFG_SWITCH_PC2_CLOSE\n  *   @arg SYSCFG_SWITCH_PC3_OPEN\n  *   @arg SYSCFG_SWITCH_PC3_CLOSE\n  * @retval None\n  */\n\nvoid HAL_SYSCFG_AnalogSwitchConfig(uint32_t SYSCFG_AnalogSwitch , uint32_t SYSCFG_SwitchState )\n{\n  /* Check the parameter */\n  assert_param(IS_SYSCFG_ANALOG_SWITCH(SYSCFG_AnalogSwitch));\n  assert_param(IS_SYSCFG_SWITCH_STATE(SYSCFG_SwitchState));\n\n  MODIFY_REG(SYSCFG->PMCR, (uint32_t) SYSCFG_AnalogSwitch, (uint32_t)(SYSCFG_SwitchState));\n}\n\n#if defined(SYSCFG_PMCR_BOOSTEN)\n/**\n  * @brief  Enables the booster to reduce the total harmonic distortion of the analog\n  *         switch when the supply voltage is lower than 2.7 V.\n  * @note   Activating the booster allows to guaranty the analog switch AC performance\n  *         when the supply voltage is below 2.7 V: in this case, the analog switch\n  *         performance is the same on the full voltage range\n  * @retval None\n  */\nvoid HAL_SYSCFG_EnableBOOST(void)\n{\n SET_BIT(SYSCFG->PMCR, SYSCFG_PMCR_BOOSTEN) ;\n}\n\n/**\n  * @brief  Disables the booster\n  * @note   Activating the booster allows to guaranty the analog switch AC performance\n  *         when the supply voltage is below 2.7 V: in this case, the analog switch\n  *         performance is the same on the full voltage range\n  * @retval None\n  */\nvoid HAL_SYSCFG_DisableBOOST(void)\n{\n CLEAR_BIT(SYSCFG->PMCR, SYSCFG_PMCR_BOOSTEN) ;\n}\n#endif /* SYSCFG_PMCR_BOOSTEN */\n\n#if defined (SYSCFG_UR2_BOOT_ADD0) ||  defined (SYSCFG_UR2_BCM7_ADD0)\n/**\n  * @brief  BootCM7 address 0 configuration\n  * @param  BootRegister :Specifies the Boot Address register (Address0 or Address1)\n  *   This parameter can be one of the following values:\n  *   @arg SYSCFG_BOOT_ADDR0 : Select the boot address0\n  *   @arg SYSCFG_BOOT_ADDR1:  Select the boot address1\n  * @param  BootAddress :Specifies the CM7 Boot Address to be loaded in Address0 or Address1\n  * @retval None\n  */\nvoid HAL_SYSCFG_CM7BootAddConfig(uint32_t BootRegister, uint32_t BootAddress)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSCFG_BOOT_REGISTER(BootRegister));\n  assert_param(IS_SYSCFG_BOOT_ADDRESS(BootAddress));\n  if ( BootRegister == SYSCFG_BOOT_ADDR0 )\n  {\n    /* Configure CM7 BOOT ADD0 */\n#if defined(DUAL_CORE)\n    MODIFY_REG(SYSCFG->UR2, SYSCFG_UR2_BCM7_ADD0, ((BootAddress >> 16) << SYSCFG_UR2_BCM7_ADD0_Pos));\n#else\n    MODIFY_REG(SYSCFG->UR2, SYSCFG_UR2_BOOT_ADD0, ((BootAddress >> 16) << SYSCFG_UR2_BOOT_ADD0_Pos));\n#endif /*DUAL_CORE*/\n  }\n  else\n  {\n    /* Configure CM7 BOOT ADD1 */\n#if defined(DUAL_CORE)\n    MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BCM7_ADD1, (BootAddress >> 16));\n#else\n    MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BOOT_ADD1, (BootAddress >> 16));\n#endif /*DUAL_CORE*/\n  }\n}\n#endif /* SYSCFG_UR2_BOOT_ADD0 || SYSCFG_UR2_BCM7_ADD0 */\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  BootCM4 address 0 configuration\n  * @param  BootRegister :Specifies the Boot Address register (Address0 or Address1)\n  *   This parameter can be one of the following values:\n  *   @arg SYSCFG_BOOT_ADDR0 : Select the boot address0\n  *   @arg SYSCFG_BOOT_ADDR1:  Select the boot address1\n  * @param  BootAddress :Specifies the CM4 Boot Address to be loaded in Address0 or Address1\n  * @retval None\n  */\nvoid HAL_SYSCFG_CM4BootAddConfig(uint32_t BootRegister, uint32_t BootAddress)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSCFG_BOOT_REGISTER(BootRegister));\n  assert_param(IS_SYSCFG_BOOT_ADDRESS(BootAddress));\n\n  if ( BootRegister == SYSCFG_BOOT_ADDR0 )\n  {\n    /* Configure CM4 BOOT ADD0 */\n    MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BCM4_ADD0, ((BootAddress >> 16)<< SYSCFG_UR3_BCM4_ADD0_Pos));\n  }\n\n  else\n  {\n    /* Configure CM4 BOOT ADD1 */\n    MODIFY_REG(SYSCFG->UR4, SYSCFG_UR4_BCM4_ADD1, (BootAddress >> 16));\n  }\n}\n\n/**\n  * @brief  Enables the Cortex-M7 boot\n  * @retval None\n  */\nvoid HAL_SYSCFG_EnableCM7BOOT(void)\n{\n SET_BIT(SYSCFG->UR1, SYSCFG_UR1_BCM7);\n}\n\n/**\n  * @brief  Disables the Cortex-M7 boot\n  * @note   Disabling the boot will gate the CPU clock\n  * @retval None\n  */\nvoid HAL_SYSCFG_DisableCM7BOOT(void)\n{\n CLEAR_BIT(SYSCFG->UR1, SYSCFG_UR1_BCM7) ;\n}\n\n/**\n  * @brief  Enables the Cortex-M4 boot\n  * @retval None\n  */\nvoid HAL_SYSCFG_EnableCM4BOOT(void)\n{\n SET_BIT(SYSCFG->UR1, SYSCFG_UR1_BCM4);\n}\n\n/**\n  * @brief  Disables the Cortex-M4 boot\n  * @note   Disabling the boot will gate the CPU clock\n  * @retval None\n  */\nvoid HAL_SYSCFG_DisableCM4BOOT(void)\n{\n  CLEAR_BIT(SYSCFG->UR1, SYSCFG_UR1_BCM4);\n}\n#endif /*DUAL_CORE*/\n/**\n  * @brief  Enables the I/O Compensation Cell.\n  * @note   The I/O compensation cell can be used only when the device supply\n  *         voltage ranges from 1.62 to 2.0 V and from 2.7 to 3.6 V.\n  * @retval None\n  */\nvoid HAL_EnableCompensationCell(void)\n{\n  SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN) ;\n}\n\n/**\n  * @brief  Power-down the I/O Compensation Cell.\n  * @note   The I/O compensation cell can be used only when the device supply\n  *         voltage ranges from 1.62 to 2.0 V and from 2.7 to 3.6 V.\n  * @retval None\n  */\nvoid HAL_DisableCompensationCell(void)\n{\n  CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN);\n}\n\n\n/**\n  * @brief  To Enable optimize the I/O speed when the product voltage is low.\n  * @note   This bit is active only if PRODUCT_BELOW_25V user option bit is set. It must be\n  *         used only if the product supply voltage is below 2.5 V. Setting this bit when VDD is\n  *         higher than 2.5 V might be destructive.\n  * @retval None\n  */\nvoid HAL_SYSCFG_EnableIOSpeedOptimize(void)\n{\n#if defined(SYSCFG_CCCSR_HSLV)\n  SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV);\n#else\n  SET_BIT(SYSCFG->CCCSR, (SYSCFG_CCCSR_HSLV0| SYSCFG_CCCSR_HSLV1 | SYSCFG_CCCSR_HSLV2  | SYSCFG_CCCSR_HSLV3));\n#endif   /* SYSCFG_CCCSR_HSLV */\n}\n\n/**\n  * @brief  To Disable optimize the I/O speed when the product voltage is low.\n  * @note   This bit is active only if PRODUCT_BELOW_25V user option bit is set. It must be\n  *         used only if the product supply voltage is below 2.5 V. Setting this bit when VDD is\n  *         higher than 2.5 V might be destructive.\n  * @retval None\n  */\nvoid HAL_SYSCFG_DisableIOSpeedOptimize(void)\n{\n#if defined(SYSCFG_CCCSR_HSLV)\n  CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV);\n#else\n  CLEAR_BIT(SYSCFG->CCCSR, (SYSCFG_CCCSR_HSLV0| SYSCFG_CCCSR_HSLV1 | SYSCFG_CCCSR_HSLV2  | SYSCFG_CCCSR_HSLV3));\n#endif   /* SYSCFG_CCCSR_HSLV */\n}\n\n/**\n  * @brief  Code selection for the I/O Compensation cell\n  * @param  SYSCFG_CompCode: Selects the code to be applied for the I/O compensation cell\n  *   This parameter can be one of the following values:\n  *   @arg SYSCFG_CELL_CODE : Select Code from the cell (available in the SYSCFG_CCVR)\n  *   @arg SYSCFG_REGISTER_CODE: Select Code from the SYSCFG compensation cell code register (SYSCFG_CCCR)\n  * @retval None\n  */\nvoid HAL_SYSCFG_CompensationCodeSelect(uint32_t SYSCFG_CompCode)\n{\n  /* Check the parameter */\n  assert_param(IS_SYSCFG_CODE_SELECT(SYSCFG_CompCode));\n  MODIFY_REG(SYSCFG->CCCSR, SYSCFG_CCCSR_CS, (uint32_t)(SYSCFG_CompCode));\n}\n\n/**\n  * @brief  Code selection for the I/O Compensation cell\n  * @param  SYSCFG_PMOSCode: PMOS compensation code\n  *         This code is applied to the I/O compensation cell when the CS bit of the\n  *          SYSCFG_CMPCR is set\n  * @param  SYSCFG_NMOSCode: NMOS compensation code\n  *         This code is applied to the I/O compensation cell when the CS bit of the\n  *          SYSCFG_CMPCR is set\n  * @retval None\n  */\nvoid HAL_SYSCFG_CompensationCodeConfig(uint32_t SYSCFG_PMOSCode, uint32_t SYSCFG_NMOSCode )\n{\n  /* Check the parameter */\n  assert_param(IS_SYSCFG_CODE_CONFIG(SYSCFG_PMOSCode));\n  assert_param(IS_SYSCFG_CODE_CONFIG(SYSCFG_NMOSCode));\n  MODIFY_REG(SYSCFG->CCCR, SYSCFG_CCCR_NCC|SYSCFG_CCCR_PCC, (((uint32_t)(SYSCFG_PMOSCode)<< 4)|(uint32_t)(SYSCFG_NMOSCode)) );\n}\n\n#if defined(SYSCFG_CCCR_NCC_MMC)\n/**\n  * @brief  Code selection for the I/O Compensation cell\n  * @param  SYSCFG_PMOSCode: VDDMMC PMOS compensation code\n  *         This code is applied to the I/O compensation cell when the CS bit of the\n  *          SYSCFG_CMPCR is set\n  * @param  SYSCFG_NMOSCode: VDDMMC NMOS compensation code\n  *         This code is applied to the I/O compensation cell when the CS bit of the\n  *          SYSCFG_CMPCR is set\n  * @retval None\n  */\nvoid HAL_SYSCFG_VDDMMC_CompensationCodeConfig(uint32_t SYSCFG_PMOSCode, uint32_t SYSCFG_NMOSCode )\n{\n  /* Check the parameter */\n  assert_param(IS_SYSCFG_CODE_CONFIG(SYSCFG_PMOSCode));\n  assert_param(IS_SYSCFG_CODE_CONFIG(SYSCFG_NMOSCode));\n  MODIFY_REG(SYSCFG->CCCR, (SYSCFG_CCCR_NCC_MMC | SYSCFG_CCCR_PCC_MMC), (((uint32_t)(SYSCFG_PMOSCode)<< 4)|(uint32_t)(SYSCFG_NMOSCode)) );\n}\n#endif /* SYSCFG_CCCR_NCC_MMC */\n\n#if defined(SYSCFG_ADC2ALT_ADC2_ROUT0)\n/** @brief  SYSCFG ADC2 internal input alternate connection macros\n  * @param Adc2AltRout0 This parameter can be a value of :\n  *     @arg @ref SYSCFG_ADC2_ROUT0_DAC1_1   DAC1_out1 connected to ADC2 VINP[16]\n  *     @arg @ref SYSCFG_ADC2_ROUT0_VBAT4    VBAT/4 connected to ADC2 VINP[16]\n  */\nvoid HAL_SYSCFG_ADC2ALT_Rout0Config(uint32_t Adc2AltRout0)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSCFG_ADC2ALT_ROUT0(Adc2AltRout0));\n\n  MODIFY_REG(SYSCFG->ADC2ALT, SYSCFG_ADC2ALT_ADC2_ROUT0, Adc2AltRout0);\n}\n/**\n  * @}\n  */\n#endif /*SYSCFG_ADC2ALT_ADC2_ROUT0*/\n\n#if defined(SYSCFG_ADC2ALT_ADC2_ROUT1)\n/** @brief  SYSCFG ADC2 internal input alternate connection macros\n  * @param Adc2AltRout1  This parameter can be a value of :\n  *     @arg @ref SYSCFG_ADC2_ROUT1_DAC1_2   DAC1_out2 connected to ADC2 VINP[17]\n  *     @arg @ref SYSCFG_ADC2_ROUT1_VREFINT  VREFINT connected to ADC2 VINP[17]\n  */\nvoid HAL_SYSCFG_ADC2ALT_Rout1Config(uint32_t Adc2AltRout1)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSCFG_ADC2ALT_ROUT1(Adc2AltRout1));\n\n  MODIFY_REG(SYSCFG->ADC2ALT, SYSCFG_ADC2ALT_ADC2_ROUT1, Adc2AltRout1);\n}\n/**\n  * @}\n  */\n#endif /*SYSCFG_ADC2ALT_ADC2_ROUT1*/\n\n/**\n  * @brief  Enable the Debug Module during Domain1/CDomain SLEEP mode\n  * @retval None\n  */\nvoid HAL_DBGMCU_EnableDBGSleepMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD1);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain1/CDomain SLEEP mode\n  * @retval None\n  */\nvoid HAL_DBGMCU_DisableDBGSleepMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD1);\n}\n\n\n/**\n  * @brief  Enable the Debug Module during Domain1/CDomain STOP mode\n  * @retval None\n  */\nvoid HAL_DBGMCU_EnableDBGStopMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD1);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain1/CDomain STOP mode\n  * @retval None\n  */\nvoid HAL_DBGMCU_DisableDBGStopMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD1);\n}\n\n/**\n  * @brief  Enable the Debug Module during Domain1/CDomain STANDBY mode\n  * @retval None\n  */\nvoid HAL_DBGMCU_EnableDBGStandbyMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD1);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain1/CDomain STANDBY mode\n  * @retval None\n  */\nvoid HAL_DBGMCU_DisableDBGStandbyMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD1);\n}\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Enable the Debug Module during Domain1 SLEEP mode\n  * @retval None\n  */\nvoid HAL_EnableDomain2DBGSleepMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD2);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain2 SLEEP mode\n  * @retval None\n  */\nvoid HAL_DisableDomain2DBGSleepMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD2);\n}\n\n/**\n  * @brief  Enable the Debug Module during Domain2 STOP mode\n  * @retval None\n  */\nvoid HAL_EnableDomain2DBGStopMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD2);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain2 STOP mode\n  * @retval None\n  */\nvoid HAL_DisableDomain2DBGStopMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD2);\n}\n\n/**\n  * @brief  Enable the Debug Module during Domain2 STANDBY mode\n  * @retval None\n  */\nvoid HAL_EnableDomain2DBGStandbyMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD2);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain2 STANDBY mode\n  * @retval None\n  */\nvoid HAL_DisableDomain2DBGStandbyMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD2);\n}\n#endif /*DUAL_CORE*/\n\n#if defined(DBGMCU_CR_DBG_STOPD3)\n/**\n  * @brief  Enable the Debug Module during Domain3/SRDomain STOP mode\n  * @retval None\n  */\nvoid HAL_EnableDomain3DBGStopMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD3);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain3/SRDomain STOP mode\n  * @retval None\n  */\nvoid HAL_DisableDomain3DBGStopMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD3);\n}\n#endif /*DBGMCU_CR_DBG_STOPD3*/\n\n#if defined(DBGMCU_CR_DBG_STANDBYD3)\n/**\n  * @brief  Enable the Debug Module during Domain3/SRDomain STANDBY mode\n  * @retval None\n  */\nvoid HAL_EnableDomain3DBGStandbyMode(void)\n{\n  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD3);\n}\n\n/**\n  * @brief  Disable the Debug Module during Domain3/SRDomain STANDBY mode\n  * @retval None\n  */\nvoid HAL_DisableDomain3DBGStandbyMode(void)\n{\n  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD3);\n}\n#endif /*DBGMCU_CR_DBG_STANDBYD3*/\n\n/**\n  * @brief  Set the FMC Memory Mapping Swapping config.\n  * @param  BankMapConfig: Defines the FMC Bank mapping configuration. This parameter can be\n            FMC_SWAPBMAP_DISABLE, FMC_SWAPBMAP_SDRAM_SRAM, FMC_SWAPBMAP_SDRAMB2\n  * @retval HAL state\n  */\nvoid HAL_SetFMCMemorySwappingConfig(uint32_t BankMapConfig)\n{\n  /* Check the parameter */\n  assert_param(IS_FMC_SWAPBMAP_MODE(BankMapConfig));\n  MODIFY_REG(FMC_Bank1_R->BTCR[0], FMC_BCR1_BMAP, BankMapConfig);\n}\n\n/**\n  * @brief  Get FMC Bank mapping mode.\n  * @retval The FMC Bank mapping mode. This parameter can be\n            FMC_SWAPBMAP_DISABLE, FMC_SWAPBMAP_SDRAM_SRAM, FMC_SWAPBMAP_SDRAMB2\n*/\nuint32_t HAL_GetFMCMemorySwappingConfig(void)\n{\n  return READ_BIT(FMC_Bank1_R->BTCR[0], FMC_BCR1_BMAP);\n}\n\n/**\n  * @brief  Configure the EXTI input event line edge\n  * @note    No edge configuration for direct lines but for configurable lines:(EXTI_LINE0..EXTI_LINE21),\n  *          EXTI_LINE49,EXTI_LINE51,EXTI_LINE82,EXTI_LINE84,EXTI_LINE85 and EXTI_LINE86.\n  * @param   EXTI_Line: Specifies the EXTI LINE, it can be one of the following values,\n  *         (EXTI_LINE0....EXTI_LINE87)excluding :line45, line81,line83 which are reserved\n  * @param   EXTI_Edge: Specifies  EXTI line Edge used.\n  *          This parameter can be one of the following values :\n  *   @arg EXTI_RISING_EDGE : Configurable line, with Rising edge trigger detection\n  *   @arg EXTI_FALLING_EDGE: Configurable line, with Falling edge trigger detection\n  * @retval None\n  */\nvoid HAL_EXTI_EdgeConfig(uint32_t EXTI_Line , uint32_t EXTI_Edge )\n{\n  /* Check the parameter */\n  assert_param(IS_HAL_EXTI_CONFIG_LINE(EXTI_Line));\n  assert_param(IS_EXTI_EDGE_LINE(EXTI_Edge));\n\n  /* Clear Rising Falling edge configuration */\n  CLEAR_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI->FTSR1)) + ((EXTI_Line >> 5 ) * 0x20UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n  CLEAR_BIT( *(__IO uint32_t *) (((uint32_t) &(EXTI->RTSR1)) + ((EXTI_Line >> 5 ) * 0x20UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n\n  if( (EXTI_Edge & EXTI_RISING_EDGE) == EXTI_RISING_EDGE)\n  {\n   SET_BIT( *(__IO uint32_t *) (((uint32_t) &(EXTI->RTSR1)) + ((EXTI_Line >> 5 ) * 0x20UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n  }\n  if( (EXTI_Edge & EXTI_FALLING_EDGE) == EXTI_FALLING_EDGE)\n  {\n   SET_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI->FTSR1)) + ((EXTI_Line >> 5 ) * 0x20UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n  }\n}\n\n/**\n  * @brief  Generates a Software interrupt on selected EXTI line.\n  * @param   EXTI_Line: Specifies the EXTI LINE, it can be one of the following values,\n  *          (EXTI_LINE0..EXTI_LINE21),EXTI_LINE49,EXTI_LINE51,EXTI_LINE82,EXTI_LINE84,EXTI_LINE85 and EXTI_LINE86.\n  * @retval None\n  */\nvoid HAL_EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)\n{\n  /* Check the parameters */\n  assert_param(IS_HAL_EXTI_CONFIG_LINE(EXTI_Line));\n\n  SET_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI->SWIER1)) + ((EXTI_Line >> 5 ) * 0x20UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n}\n\n\n/**\n  * @brief  Clears the EXTI's line pending flags for Domain D1\n  * @param   EXTI_Line: Specifies the EXTI LINE, it can be one of the following values,\n  *         (EXTI_LINE0....EXTI_LINE87)excluding :line45, line81,line83 which are reserved\n  * @retval None\n  */\nvoid HAL_EXTI_D1_ClearFlag(uint32_t EXTI_Line)\n{\n  /* Check the parameters */\n assert_param(IS_EXTI_D1_LINE(EXTI_Line));\n WRITE_REG(*(__IO uint32_t *) (((uint32_t) &(EXTI_D1->PR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n\n}\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Clears the EXTI's line pending flags for Domain D2\n  * @param   EXTI_Line: Specifies the EXTI LINE, it can be one of the following values,\n  *         (EXTI_LINE0....EXTI_LINE87)excluding :line45, line81,line83 which are reserved\n  * @retval None\n  */\nvoid HAL_EXTI_D2_ClearFlag(uint32_t EXTI_Line)\n{\n  /* Check the parameters */\n assert_param(IS_EXTI_D2_LINE(EXTI_Line));\n WRITE_REG(*(__IO uint32_t *) (((uint32_t) &(EXTI_D2->PR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n}\n\n#endif /*DUAL_CORE*/\n/**\n  * @brief  Configure the EXTI input event line for Domain D1\n  * @param   EXTI_Line: Specifies the EXTI LINE, it can be one of the following values,\n  *         (EXTI_LINE0....EXTI_LINE87)excluding :line45, line81,line83 which are reserved\n  * @param   EXTI_Mode: Specifies which EXTI line is used as interrupt or an event.\n  *          This parameter can be one or a combination of the following values :\n  *   @arg EXTI_MODE_IT :  Interrupt Mode selected\n  *   @arg EXTI_MODE_EVT : Event Mode selected\n  * @param   EXTI_LineCmd controls (Enable/Disable) the EXTI line.\n\n  * @retval None\n  */\nvoid HAL_EXTI_D1_EventInputConfig(uint32_t EXTI_Line , uint32_t EXTI_Mode,  uint32_t EXTI_LineCmd )\n{\n  /* Check the parameter */\n  assert_param(IS_EXTI_D1_LINE(EXTI_Line));\n  assert_param(IS_EXTI_MODE_LINE(EXTI_Mode));\n\n  if( (EXTI_Mode & EXTI_MODE_IT) == EXTI_MODE_IT)\n  {\n     if( EXTI_LineCmd == 0UL)\n     {\n       /* Clear EXTI line configuration */\n        CLEAR_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI_D1->IMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)),(uint32_t)(1UL << (EXTI_Line & 0x1FUL)) );\n     }\n     else\n     {\n        SET_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI_D1->IMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n     }\n  }\n\n  if( (EXTI_Mode & EXTI_MODE_EVT) == EXTI_MODE_EVT)\n  {\n    if( EXTI_LineCmd == 0UL)\n    {\n      /* Clear EXTI line configuration */\n      CLEAR_BIT(  *(__IO uint32_t *) (((uint32_t) &(EXTI_D1->EMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n    }\n    else\n    {\n      SET_BIT(  *(__IO uint32_t *) (((uint32_t) &(EXTI_D1->EMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n    }\n  }\n}\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Configure the EXTI input event line for Domain D2\n  * @param   EXTI_Line: Specifies the EXTI LINE, it can be one of the following values,\n  *         (EXTI_LINE0....EXTI_LINE87)excluding :line45, line81,line83 which are reserved\n  * @param   EXTI_Mode: Specifies which EXTI line is used as interrupt or an event.\n  *          This parameter can be one or a combination of the following values :\n  *   @arg EXTI_MODE_IT :  Interrupt Mode selected\n  *   @arg EXTI_MODE_EVT : Event Mode selected\n  * @param   EXTI_LineCmd controls (Enable/Disable) the EXTI line.\n\n  * @retval None\n  */\nvoid HAL_EXTI_D2_EventInputConfig(uint32_t EXTI_Line , uint32_t EXTI_Mode,  uint32_t EXTI_LineCmd )\n{\n  /* Check the parameter */\n  assert_param(IS_EXTI_D2_LINE(EXTI_Line));\n  assert_param(IS_EXTI_MODE_LINE(EXTI_Mode));\n\n  if( (EXTI_Mode & EXTI_MODE_IT) == EXTI_MODE_IT)\n  {\n    if( EXTI_LineCmd == 0UL)\n    {\n    /* Clear EXTI line configuration */\n     CLEAR_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI_D2->IMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)),(uint32_t)(1UL << (EXTI_Line & 0x1FUL)) );\n    }\n    else\n    {\n     SET_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI_D2->IMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n    }\n  }\n\n  if( (EXTI_Mode & EXTI_MODE_EVT) == EXTI_MODE_EVT)\n  {\n    if( EXTI_LineCmd == 0UL)\n    {\n      /* Clear EXTI line configuration */\n      CLEAR_BIT(  *(__IO uint32_t *) (((uint32_t) &(EXTI_D2->EMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n    }\n    else\n    {\n      SET_BIT(  *(__IO uint32_t *) (((uint32_t) &(EXTI_D2->EMR1)) + ((EXTI_Line >> 5 ) * 0x10UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n    }\n  }\n}\n#endif /*DUAL_CORE*/\n\n/**\n  * @brief  Configure the EXTI input event line for Domain D3\n  * @param   EXTI_Line: Specifies the EXTI LINE, it can be one of the following values,\n  *         (EXTI_LINE0...EXTI_LINE15),(EXTI_LINE19...EXTI_LINE21),EXTI_LINE25, EXTI_LINE34,\n  *          EXTI_LINE35,EXTI_LINE41,(EXTI_LINE48...EXTI_LINE53)\n  * @param   EXTI_LineCmd controls (Enable/Disable) the EXTI line.\n  * @param   EXTI_ClearSrc: Specifies the clear source of D3 pending event.\n  *          This parameter can be one of the following values :\n  *   @arg BDMA_CH6_CLEAR : BDMA ch6 event selected as D3 domain pendclear source\n  *   @arg BDMA_CH7_CLEAR : BDMA ch7 event selected as D3 domain pendclear source\n  *   @arg LPTIM4_OUT_CLEAR : LPTIM4 out selected as D3 domain pendclear source\n  *   @arg LPTIM5_OUT_CLEAR : LPTIM5 out selected as D3 domain pendclear source\n  * @retval None\n  */\nvoid HAL_EXTI_D3_EventInputConfig(uint32_t EXTI_Line, uint32_t EXTI_LineCmd , uint32_t EXTI_ClearSrc  )\n{\n  __IO uint32_t *pRegv;\n\n  /* Check the parameter */\n  assert_param(IS_EXTI_D3_LINE(EXTI_Line));\n  assert_param(IS_EXTI_D3_CLEAR(EXTI_ClearSrc));\n\n  if( EXTI_LineCmd == 0UL)\n  {\n    /* Clear EXTI line configuration */\n    CLEAR_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI->D3PMR1)) + ((EXTI_Line >> 5 ) * 0x20UL)),(uint32_t)(1UL << (EXTI_Line & 0x1FUL)) );\n  }\n  else\n  {\n    SET_BIT(*(__IO uint32_t *) (((uint32_t) &(EXTI->D3PMR1)) +((EXTI_Line >> 5 ) * 0x20UL)), (uint32_t)(1UL << (EXTI_Line & 0x1FUL)));\n  }\n\n  if(((EXTI_Line>>4)%2UL) == 0UL)\n  {\n    pRegv = (__IO uint32_t *) (((uint32_t) &(EXTI->D3PCR1L)) + ((EXTI_Line >> 5 ) * 0x20UL));\n  }\n  else\n  {\n    pRegv = (__IO uint32_t *) (((uint32_t) &(EXTI->D3PCR1H)) + ((EXTI_Line >> 5 ) * 0x20UL));\n  }\n  MODIFY_REG(*pRegv, (uint32_t)(3UL << ((EXTI_Line*2UL) & 0x1FUL)), (uint32_t)(EXTI_ClearSrc << ((EXTI_Line*2UL) & 0x1FUL)));\n\n}\n\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_cortex.c\n  * @author  MCD Application Team\n  * @brief   CORTEX HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the CORTEX:\n  *           + Initialization and de-initialization functions\n  *           + Peripheral Control functions\n  *\n  @verbatim\n  ==============================================================================\n                        ##### How to use this driver #####\n  ==============================================================================\n\n    [..]\n    *** How to configure Interrupts using CORTEX HAL driver ***\n    ===========================================================\n    [..]\n    This section provides functions allowing to configure the NVIC interrupts (IRQ).\n    The Cortex-M exceptions are managed by CMSIS functions.\n\n    (#) Configure the NVIC Priority Grouping using HAL_NVIC_SetPriorityGrouping()\n        function according to the following table.\n    (#) Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority().\n    (#) Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ().\n    (#) please refer to programming manual for details in how to configure priority.\n\n     -@- When the NVIC_PRIORITYGROUP_0 is selected, IRQ preemption is no more possible.\n         The pending IRQ priority will be managed only by the sub priority.\n\n     -@- IRQ priority order (sorted by highest to lowest priority):\n        (+@) Lowest preemption priority\n        (+@) Lowest sub priority\n        (+@) Lowest hardware priority (IRQ number)\n\n    [..]\n    *** How to configure Systick using CORTEX HAL driver ***\n    ========================================================\n    [..]\n    Setup SysTick Timer for time base.\n\n   (+) The HAL_SYSTICK_Config() function calls the SysTick_Config() function which\n       is a CMSIS function that:\n        (++) Configures the SysTick Reload register with value passed as function parameter.\n        (++) Configures the SysTick IRQ priority to the lowest value (0x0F).\n        (++) Resets the SysTick Counter register.\n        (++) Configures the SysTick Counter clock source to be Core Clock Source (HCLK).\n        (++) Enables the SysTick Interrupt.\n        (++) Starts the SysTick Counter.\n\n   (+) You can change the SysTick Clock source to be HCLK_Div8 by calling the macro\n       HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the\n       HAL_SYSTICK_Config() function call. The HAL_SYSTICK_CLKSourceConfig() macro is defined\n       inside the stm32h7xx_hal_cortex.h file.\n\n   (+) You can change the SysTick IRQ priority by calling the\n       HAL_NVIC_SetPriority(SysTick_IRQn,...) function just after the HAL_SYSTICK_Config() function\n       call. The HAL_NVIC_SetPriority() call the NVIC_SetPriority() function which is a CMSIS function.\n\n   (+) To adjust the SysTick time base, use the following formula:\n\n       Reload Value = SysTick Counter Clock (Hz) x  Desired Time base (s)\n       (++) Reload Value is the parameter to be passed for HAL_SYSTICK_Config() function\n       (++) Reload Value should not exceed 0xFFFFFF\n\n  @endverbatim\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup CORTEX CORTEX\n  * @brief CORTEX HAL module driver\n  * @{\n  */\n\n#ifdef HAL_CORTEX_MODULE_ENABLED\n\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/* Private macros ------------------------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions\n  * @{\n  */\n\n\n/** @defgroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions\n *  @brief    Initialization and Configuration functions\n *\n@verbatim\n  ==============================================================================\n              ##### Initialization and de-initialization functions #####\n  ==============================================================================\n    [..]\n      This section provides the CORTEX HAL driver functions allowing to configure Interrupts\n      Systick functionalities\n\n@endverbatim\n  * @{\n  */\n\n\n/**\n  * @brief  Sets the priority grouping field (preemption priority and subpriority)\n  *         using the required unlock sequence.\n  * @param  PriorityGroup The priority grouping bits length.\n  *         This parameter can be one of the following values:\n  *         @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority\n  *                                    4 bits for subpriority\n  *         @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority\n  *                                    3 bits for subpriority\n  *         @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority\n  *                                    2 bits for subpriority\n  *         @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority\n  *                                    1 bits for subpriority\n  *         @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority\n  *                                    0 bits for subpriority\n  * @note   When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.\n  *         The pending IRQ priority will be managed only by the subpriority.\n  * @retval None\n  */\nvoid HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));\n\n  /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */\n  NVIC_SetPriorityGrouping(PriorityGroup);\n}\n\n/**\n  * @brief  Sets the priority of an interrupt.\n  * @param  IRQn External interrupt number.\n  *         This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @param  PreemptPriority The preemption priority for the IRQn channel.\n  *         This parameter can be a value between 0 and 15\n  *         A lower priority value indicates a higher priority\n  * @param  SubPriority the subpriority level for the IRQ channel.\n  *         This parameter can be a value between 0 and 15\n  *         A lower priority value indicates a higher priority.\n  * @retval None\n  */\nvoid HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)\n{\n  uint32_t prioritygroup;\n\n  /* Check the parameters */\n  assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));\n  assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));\n\n  prioritygroup = NVIC_GetPriorityGrouping();\n\n  NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));\n}\n\n/**\n  * @brief  Enables a device specific interrupt in the NVIC interrupt controller.\n  * @note   To configure interrupts priority correctly, the NVIC_PriorityGroupConfig()\n  *         function should be called before.\n  * @param  IRQn External interrupt number.\n  *         This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @retval None\n  */\nvoid HAL_NVIC_EnableIRQ(IRQn_Type IRQn)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\n\n  /* Enable interrupt */\n  NVIC_EnableIRQ(IRQn);\n}\n\n/**\n  * @brief  Disables a device specific interrupt in the NVIC interrupt controller.\n  * @param  IRQn External interrupt number.\n  *         This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @retval None\n  */\nvoid HAL_NVIC_DisableIRQ(IRQn_Type IRQn)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\n\n  /* Disable interrupt */\n  NVIC_DisableIRQ(IRQn);\n}\n\n/**\n  * @brief  Initiates a system reset request to reset the MCU.\n  * @retval None\n  */\nvoid HAL_NVIC_SystemReset(void)\n{\n  /* System Reset */\n  NVIC_SystemReset();\n}\n\n/**\n  * @brief  Initializes the System Timer and its interrupt, and starts the System Tick Timer.\n  *         Counter is in free running mode to generate periodic interrupts.\n  * @param  TicksNumb Specifies the ticks Number of ticks between two interrupts.\n  * @retval status   - 0  Function succeeded.\n  *                  - 1  Function failed.\n  */\nuint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)\n{\n   return SysTick_Config(TicksNumb);\n}\n/**\n  * @}\n  */\n\n/** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions\n *  @brief   Cortex control functions\n *\n@verbatim\n  ==============================================================================\n                      ##### Peripheral Control functions #####\n  ==============================================================================\n    [..]\n      This subsection provides a set of functions allowing to control the CORTEX\n      (NVIC, SYSTICK, MPU) functionalities.\n\n\n@endverbatim\n  * @{\n  */\n#if (__MPU_PRESENT == 1)\n/**\n  * @brief  Disables the MPU\n  * @retval None\n  */\nvoid HAL_MPU_Disable(void)\n{\n  /* Make sure outstanding transfers are done */\n  __DMB();\n\n  /* Disable fault exceptions */\n  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\n\n  /* Disable the MPU and clear the control register*/\n  MPU->CTRL = 0;\n}\n\n/**\n  * @brief  Enables the MPU\n  * @param  MPU_Control Specifies the control mode of the MPU during hard fault,\n  *         NMI, FAULTMASK and privileged access to the default memory\n  *         This parameter can be one of the following values:\n  *            @arg MPU_HFNMI_PRIVDEF_NONE\n  *            @arg MPU_HARDFAULT_NMI\n  *            @arg MPU_PRIVILEGED_DEFAULT\n  *            @arg MPU_HFNMI_PRIVDEF\n  * @retval None\n  */\nvoid HAL_MPU_Enable(uint32_t MPU_Control)\n{\n  /* Enable the MPU */\n  MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\n\n  /* Enable fault exceptions */\n  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\n\n  /* Ensure MPU setting take effects */\n  __DSB();\n  __ISB();\n}\n/**\n  * @brief  Initializes and configures the Region and the memory to be protected.\n  * @param  MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains\n  *                  the initialization and configuration information.\n  * @retval None\n  */\nvoid HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init)\n{\n  /* Check the parameters */\n  assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number));\n  assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable));\n\n  /* Set the Region number */\n  MPU->RNR = MPU_Init->Number;\n\n  if ((MPU_Init->Enable) != 0UL)\n  {\n    /* Check the parameters */\n    assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec));\n    assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission));\n    assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField));\n    assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable));\n    assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable));\n    assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable));\n    assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable));\n    assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size));\n\n    MPU->RBAR = MPU_Init->BaseAddress;\n    MPU->RASR = ((uint32_t)MPU_Init->DisableExec             << MPU_RASR_XN_Pos)   |\n                ((uint32_t)MPU_Init->AccessPermission        << MPU_RASR_AP_Pos)   |\n                ((uint32_t)MPU_Init->TypeExtField            << MPU_RASR_TEX_Pos)  |\n                ((uint32_t)MPU_Init->IsShareable             << MPU_RASR_S_Pos)    |\n                ((uint32_t)MPU_Init->IsCacheable             << MPU_RASR_C_Pos)    |\n                ((uint32_t)MPU_Init->IsBufferable            << MPU_RASR_B_Pos)    |\n                ((uint32_t)MPU_Init->SubRegionDisable        << MPU_RASR_SRD_Pos)  |\n                ((uint32_t)MPU_Init->Size                    << MPU_RASR_SIZE_Pos) |\n                ((uint32_t)MPU_Init->Enable                  << MPU_RASR_ENABLE_Pos);\n  }\n  else\n  {\n    MPU->RBAR = 0x00;\n    MPU->RASR = 0x00;\n  }\n}\n#endif /* __MPU_PRESENT */\n\n/**\n  * @brief  Gets the priority grouping field from the NVIC Interrupt Controller.\n  * @retval Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field)\n  */\nuint32_t HAL_NVIC_GetPriorityGrouping(void)\n{\n  /* Get the PRIGROUP[10:8] field value */\n  return NVIC_GetPriorityGrouping();\n}\n\n/**\n  * @brief  Gets the priority of an interrupt.\n  * @param  IRQn External interrupt number.\n  *         This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @param   PriorityGroup the priority grouping bits length.\n  *         This parameter can be one of the following values:\n  *           @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority\n  *                                      4 bits for subpriority\n  *           @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority\n  *                                      3 bits for subpriority\n  *           @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority\n  *                                      2 bits for subpriority\n  *           @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority\n  *                                      1 bits for subpriority\n  *           @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority\n  *                                      0 bits for subpriority\n  * @param  pPreemptPriority Pointer on the Preemptive priority value (starting from 0).\n  * @param  pSubPriority Pointer on the Subpriority value (starting from 0).\n  * @retval None\n  */\nvoid HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));\n /* Get priority for Cortex-M system or device specific interrupts */\n  NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority);\n}\n\n/**\n  * @brief  Sets Pending bit of an external interrupt.\n  * @param  IRQn External interrupt number\n  *         This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @retval None\n  */\nvoid HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\n\n  /* Set interrupt pending */\n  NVIC_SetPendingIRQ(IRQn);\n}\n\n/**\n  * @brief  Gets Pending Interrupt (reads the pending register in the NVIC\n  *         and returns the pending bit for the specified interrupt).\n  * @param  IRQn External interrupt number.\n  *          This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @retval status  - 0  Interrupt status is not pending.\n  *                 - 1  Interrupt status is pending.\n  */\nuint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\n\n  /* Return 1 if pending else 0 */\n  return NVIC_GetPendingIRQ(IRQn);\n}\n\n/**\n  * @brief  Clears the pending bit of an external interrupt.\n  * @param  IRQn External interrupt number.\n  *         This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @retval None\n  */\nvoid HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\n\n  /* Clear pending interrupt */\n  NVIC_ClearPendingIRQ(IRQn);\n}\n\n/**\n  * @brief Gets active interrupt ( reads the active register in NVIC and returns the active bit).\n  * @param IRQn External interrupt number\n  *         This parameter can be an enumerator of IRQn_Type enumeration\n  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h))\n  * @retval status  - 0  Interrupt status is not pending.\n  *                 - 1  Interrupt status is pending.\n  */\nuint32_t HAL_NVIC_GetActive(IRQn_Type IRQn)\n{\n  /* Check the parameters */\n  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\n\n  /* Return 1 if active else 0 */\n  return NVIC_GetActive(IRQn);\n}\n\n/**\n  * @brief  Configures the SysTick clock source.\n  * @param  CLKSource specifies the SysTick clock source.\n  *         This parameter can be one of the following values:\n  *             @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source.\n  *             @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source.\n  * @retval None\n  */\nvoid HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource)\n{\n  /* Check the parameters */\n  assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource));\n  if (CLKSource == SYSTICK_CLKSOURCE_HCLK)\n  {\n    SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;\n  }\n  else\n  {\n    SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK;\n  }\n}\n\n/**\n  * @brief  This function handles SYSTICK interrupt request.\n  * @retval None\n  */\nvoid HAL_SYSTICK_IRQHandler(void)\n{\n  HAL_SYSTICK_Callback();\n}\n\n/**\n  * @brief  SYSTICK callback.\n  * @retval None\n  */\n__weak void HAL_SYSTICK_Callback(void)\n{\n  /* NOTE : This function Should not be modified, when the callback is needed,\n            the HAL_SYSTICK_Callback could be implemented in the user file\n   */\n}\n\n#if defined(DUAL_CORE)\n\n/**\n  * @brief  Returns the current CPU ID.\n  * @retval CPU identifier\n  */\nuint32_t HAL_GetCurrentCPUID(void)\n{\n  if (((SCB->CPUID & 0x000000F0U) >> 4 )== 0x7U)\n  {\n    return  CM7_CPUID;\n  }\n  else\n  {\n    return CM4_CPUID;\n  }\n}\n\n#else\n\n/**\n* @brief  Returns the current CPU ID.\n* @retval CPU identifier\n*/\nuint32_t HAL_GetCurrentCPUID(void)\n{\n  return  CM7_CPUID;\n}\n\n#endif /*DUAL_CORE*/\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#endif /* HAL_CORTEX_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_dma.c\n  * @author  MCD Application Team\n  * @brief   DMA HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the Direct Memory Access (DMA) peripheral:\n  *           + Initialization and de-initialization functions\n  *           + IO operation functions\n  *           + Peripheral State and errors functions\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                        ##### How to use this driver #####\n  ==============================================================================\n  [..]\n   (#) Enable and configure the peripheral to be connected to the DMA Stream\n       (except for internal SRAM/FLASH memories: no initialization is\n       necessary) please refer to Reference manual for connection between peripherals\n       and DMA requests .\n\n   (#) For a given Stream, program the required configuration through the following parameters:\n       Transfer Direction, Source and Destination data formats,\n       Circular, Normal or peripheral flow control mode, Stream Priority level,\n       Source and Destination Increment mode, FIFO mode and its Threshold (if needed),\n       Burst mode for Source and/or Destination (if needed) using HAL_DMA_Init() function.\n\n     *** Polling mode IO operation ***\n     =================================\n    [..]\n          (+) Use HAL_DMA_Start() to start DMA transfer after the configuration of Source\n              address and destination address and the Length of data to be transferred\n          (+) Use HAL_DMA_PollForTransfer() to poll for the end of current transfer, in this\n              case a fixed Timeout can be configured by User depending from his application.\n\n     *** Interrupt mode IO operation ***\n     ===================================\n    [..]\n          (+) Configure the DMA interrupt priority using HAL_NVIC_SetPriority()\n          (+) Enable the DMA IRQ handler using HAL_NVIC_EnableIRQ()\n          (+) Use HAL_DMA_Start_IT() to start DMA transfer after the configuration of\n              Source address and destination address and the Length of data to be transferred. In this\n              case the DMA interrupt is configured\n          (+) Use HAL_DMA_IRQHandler() called under DMA_IRQHandler() Interrupt subroutine\n          (+) At the end of data transfer HAL_DMA_IRQHandler() function is executed and user can\n              add his own function by customization of function pointer XferCpltCallback and\n              XferErrorCallback (i.e a member of DMA handle structure).\n    [..]\n     (#) Use HAL_DMA_GetState() function to return the DMA state and HAL_DMA_GetError() in case of error\n         detection.\n\n     (#) Use HAL_DMA_Abort() function to abort the current transfer\n\n     -@-   In Memory-to-Memory transfer mode, Circular mode is not allowed.\n\n     -@-   The FIFO is used mainly to reduce bus usage and to allow data packing/unpacking: it is\n           possible to set different Data Sizes for the Peripheral and the Memory (ie. you can set\n           Half-Word data size for the peripheral to access its data register and set Word data size\n           for the Memory to gain in access time. Each two half words will be packed and written in\n           a single access to a Word in the Memory).\n\n     -@-   When FIFO is disabled, it is not allowed to configure different Data Sizes for Source\n           and Destination. In this case the Peripheral Data Size will be applied to both Source\n           and Destination.\n\n     *** DMA HAL driver macros list ***\n     =============================================\n     [..]\n       Below the list of most used macros in DMA HAL driver.\n\n      (+) __HAL_DMA_ENABLE: Enable the specified DMA Stream.\n      (+) __HAL_DMA_DISABLE: Disable the specified DMA Stream.\n      (+) __HAL_DMA_GET_FS: Return the current DMA Stream FIFO filled level.\n      (+) __HAL_DMA_ENABLE_IT: Enable the specified DMA Stream interrupts.\n      (+) __HAL_DMA_DISABLE_IT: Disable the specified DMA Stream interrupts.\n      (+) __HAL_DMA_GET_IT_SOURCE: Check whether the specified DMA Stream interrupt has occurred or not.\n\n     [..]\n      (@) You can refer to the DMA HAL driver header file for more useful macros.\n\n  @endverbatim\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup DMA DMA\n  * @brief DMA HAL module driver\n  * @{\n  */\n\n#ifdef HAL_DMA_MODULE_ENABLED\n\n/* Private types -------------------------------------------------------------*/\ntypedef struct\n{\n  __IO uint32_t ISR;   /*!< DMA interrupt status register */\n  __IO uint32_t Reserved0;\n  __IO uint32_t IFCR;  /*!< DMA interrupt flag clear register */\n} DMA_Base_Registers;\n\ntypedef struct\n{\n  __IO uint32_t ISR;   /*!< BDMA interrupt status register */\n  __IO uint32_t IFCR;  /*!< BDMA interrupt flag clear register */\n} BDMA_Base_Registers;\n\n/* Private variables ---------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/** @addtogroup DMA_Private_Constants\n * @{\n */\n#define HAL_TIMEOUT_DMA_ABORT         (5U)  /* 5 ms */\n\n#define BDMA_PERIPH_TO_MEMORY         (0x00000000U)                /*!< Peripheral to memory direction */\n#define BDMA_MEMORY_TO_PERIPH         ((uint32_t)BDMA_CCR_DIR)     /*!< Memory to peripheral direction */\n#define BDMA_MEMORY_TO_MEMORY         ((uint32_t)BDMA_CCR_MEM2MEM) /*!< Memory to memory direction     */\n\n/* DMA to BDMA conversion */\n#define DMA_TO_BDMA_DIRECTION(__DMA_DIRECTION__) (((__DMA_DIRECTION__) == DMA_MEMORY_TO_PERIPH)? BDMA_MEMORY_TO_PERIPH: \\\n                                                  ((__DMA_DIRECTION__) == DMA_MEMORY_TO_MEMORY)? BDMA_MEMORY_TO_MEMORY: \\\n                                                  BDMA_PERIPH_TO_MEMORY)\n\n#define DMA_TO_BDMA_PERIPHERAL_INC(__DMA_PERIPHERAL_INC__) ((__DMA_PERIPHERAL_INC__) >> 3U)\n#define DMA_TO_BDMA_MEMORY_INC(__DMA_MEMORY_INC__) ((__DMA_MEMORY_INC__) >> 3U)\n\n#define DMA_TO_BDMA_PDATA_SIZE(__DMA_PDATA_SIZE__) ((__DMA_PDATA_SIZE__) >> 3U)\n#define DMA_TO_BDMA_MDATA_SIZE(__DMA_MDATA_SIZE__) ((__DMA_MDATA_SIZE__) >> 3U)\n\n#define DMA_TO_BDMA_MODE(__DMA_MODE__) ((__DMA_MODE__) >> 3U)\n\n#define DMA_TO_BDMA_PRIORITY(__DMA_PRIORITY__) ((__DMA_PRIORITY__) >> 4U)\n\n#if defined(UART9)\n#define IS_DMA_UART_USART_REQUEST(__REQUEST__) ((((__REQUEST__) >= DMA_REQUEST_USART1_RX)  &&  ((__REQUEST__) <= DMA_REQUEST_USART3_TX)) || \\\n                                                 (((__REQUEST__) >= DMA_REQUEST_UART4_RX)  &&  ((__REQUEST__) <= DMA_REQUEST_UART5_TX )) || \\\n                                                 (((__REQUEST__) >= DMA_REQUEST_USART6_RX) &&  ((__REQUEST__) <= DMA_REQUEST_USART6_TX)) || \\\n                                                 (((__REQUEST__) >= DMA_REQUEST_UART7_RX)  &&  ((__REQUEST__) <= DMA_REQUEST_UART8_TX )) || \\\n                                                 (((__REQUEST__) >= DMA_REQUEST_UART9_RX)  &&  ((__REQUEST__) <= DMA_REQUEST_USART10_TX )))\n#else\n#define IS_DMA_UART_USART_REQUEST(__REQUEST__) ((((__REQUEST__) >= DMA_REQUEST_USART1_RX)  &&  ((__REQUEST__) <= DMA_REQUEST_USART3_TX)) || \\\n                                                 (((__REQUEST__) >= DMA_REQUEST_UART4_RX)  &&  ((__REQUEST__) <= DMA_REQUEST_UART5_TX )) || \\\n                                                 (((__REQUEST__) >= DMA_REQUEST_USART6_RX) &&  ((__REQUEST__) <= DMA_REQUEST_USART6_TX)) || \\\n                                                 (((__REQUEST__) >= DMA_REQUEST_UART7_RX)  &&  ((__REQUEST__) <= DMA_REQUEST_UART8_TX )))\n\n#endif\n/**\n  * @}\n  */\n/* Private macros ------------------------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n/** @addtogroup DMA_Private_Functions\n  * @{\n  */\nstatic void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\nstatic uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma);\nstatic HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma);\nstatic void DMA_CalcDMAMUXChannelBaseAndMask(DMA_HandleTypeDef *hdma);\nstatic void DMA_CalcDMAMUXRequestGenBaseAndMask(DMA_HandleTypeDef *hdma);\n\n/**\n  * @}\n  */\n\n/* Exported functions ---------------------------------------------------------*/\n/** @addtogroup DMA_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup DMA_Exported_Functions_Group1\n  *\n@verbatim\n ===============================================================================\n             ##### Initialization and de-initialization functions  #####\n ===============================================================================\n    [..]\n    This section provides functions allowing to initialize the DMA Stream source\n    and destination incrementation and data sizes, transfer direction,\n    circular/normal mode selection, memory-to-memory mode selection and Stream priority value.\n    [..]\n    The HAL_DMA_Init() function follows the DMA configuration procedures as described in\n    reference manual.\n    The HAL_DMA_DeInit function allows to deinitialize the DMA stream.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Initialize the DMA according to the specified\n  *         parameters in the DMA_InitTypeDef and create the associated handle.\n  * @param  hdma: Pointer to a DMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)\n{\n  uint32_t registerValue;\n  uint32_t tickstart = HAL_GetTick();\n  DMA_Base_Registers *regs_dma;\n  BDMA_Base_Registers *regs_bdma;\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance));\n  assert_param(IS_DMA_DIRECTION(hdma->Init.Direction));\n  assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc));\n  assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc));\n  assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment));\n  assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment));\n  assert_param(IS_DMA_MODE(hdma->Init.Mode));\n  assert_param(IS_DMA_PRIORITY(hdma->Init.Priority));\n\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    assert_param(IS_DMA_REQUEST(hdma->Init.Request));\n    assert_param(IS_DMA_FIFO_MODE_STATE(hdma->Init.FIFOMode));\n    /* Check the memory burst, peripheral burst and FIFO threshold parameters only\n       when FIFO mode is enabled */\n    if(hdma->Init.FIFOMode != DMA_FIFOMODE_DISABLE)\n    {\n      assert_param(IS_DMA_FIFO_THRESHOLD(hdma->Init.FIFOThreshold));\n      assert_param(IS_DMA_MEMORY_BURST(hdma->Init.MemBurst));\n      assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst));\n    }\n\n    /* Change DMA peripheral state */\n    hdma->State = HAL_DMA_STATE_BUSY;\n\n    /* Allocate lock resource */\n    __HAL_UNLOCK(hdma);\n\n    /* Disable the peripheral */\n    __HAL_DMA_DISABLE(hdma);\n\n    /* Check if the DMA Stream is effectively disabled */\n    while((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_EN) != 0U)\n    {\n      /* Check for the Timeout */\n      if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT)\n      {\n        /* Update error code */\n        hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;\n\n        /* Change the DMA state */\n        hdma->State = HAL_DMA_STATE_ERROR;\n\n        return HAL_ERROR;\n      }\n    }\n\n    /* Get the CR register value */\n    registerValue = ((DMA_Stream_TypeDef   *)hdma->Instance)->CR;\n\n    /* Clear CHSEL, MBURST, PBURST, PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, CT and DBM bits */\n    registerValue &= ((uint32_t)~(DMA_SxCR_MBURST | DMA_SxCR_PBURST | \\\n                        DMA_SxCR_PL    | DMA_SxCR_MSIZE  | DMA_SxCR_PSIZE  | \\\n                        DMA_SxCR_MINC  | DMA_SxCR_PINC   | DMA_SxCR_CIRC   | \\\n                        DMA_SxCR_DIR   | DMA_SxCR_CT     | DMA_SxCR_DBM));\n\n    /* Prepare the DMA Stream configuration */\n    registerValue |=  hdma->Init.Direction           |\n            hdma->Init.PeriphInc           | hdma->Init.MemInc           |\n            hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment |\n            hdma->Init.Mode                | hdma->Init.Priority;\n\n    /* the Memory burst and peripheral burst are not used when the FIFO is disabled */\n    if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE)\n    {\n      /* Get memory burst and peripheral burst */\n      registerValue |=  hdma->Init.MemBurst | hdma->Init.PeriphBurst;\n    }\n\n    /* Work around for Errata 2.22: UART/USART- DMA transfer lock: DMA stream could be\n                                    lock when transferring data to/from USART/UART */\n#if (STM32H7_DEV_ID == 0x450UL)\n    if((DBGMCU->IDCODE & 0xFFFF0000U) >= 0x20000000U)\n    {\n#endif /* STM32H7_DEV_ID == 0x450UL */\n      if(IS_DMA_UART_USART_REQUEST(hdma->Init.Request) != 0U)\n      {\n        registerValue |= DMA_SxCR_TRBUFF;\n      }\n#if (STM32H7_DEV_ID == 0x450UL)\n    }\n#endif /* STM32H7_DEV_ID == 0x450UL */\n\n    /* Write to DMA Stream CR register */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->CR = registerValue;\n\n    /* Get the FCR register value */\n    registerValue = ((DMA_Stream_TypeDef   *)hdma->Instance)->FCR;\n\n    /* Clear Direct mode and FIFO threshold bits */\n    registerValue &= (uint32_t)~(DMA_SxFCR_DMDIS | DMA_SxFCR_FTH);\n\n    /* Prepare the DMA Stream FIFO configuration */\n    registerValue |= hdma->Init.FIFOMode;\n\n    /* the FIFO threshold is not used when the FIFO mode is disabled */\n    if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE)\n    {\n      /* Get the FIFO threshold */\n      registerValue |= hdma->Init.FIFOThreshold;\n\n      /* Check compatibility between FIFO threshold level and size of the memory burst */\n      /* for INCR4, INCR8, INCR16 */\n      if(hdma->Init.MemBurst != DMA_MBURST_SINGLE)\n      {\n        if (DMA_CheckFifoParam(hdma) != HAL_OK)\n        {\n          /* Update error code */\n          hdma->ErrorCode = HAL_DMA_ERROR_PARAM;\n\n          /* Change the DMA state */\n          hdma->State = HAL_DMA_STATE_READY;\n\n          return HAL_ERROR;\n        }\n      }\n    }\n\n    /* Write to DMA Stream FCR */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->FCR = registerValue;\n\n    /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate\n       DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */\n    regs_dma = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma);\n\n    /* Clear all interrupt flags */\n    regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU);\n  }\n  else if(IS_BDMA_CHANNEL_INSTANCE(hdma->Instance) != 0U) /* BDMA instance(s) */\n  {\n    if(IS_BDMA_CHANNEL_DMAMUX_INSTANCE(hdma->Instance) != 0U)\n    {\n      /* Check the request parameter */\n      assert_param(IS_BDMA_REQUEST(hdma->Init.Request));\n    }\n\n    /* Change DMA peripheral state */\n    hdma->State = HAL_DMA_STATE_BUSY;\n\n    /* Allocate lock resource */\n    __HAL_UNLOCK(hdma);\n\n    /* Get the CR register value */\n    registerValue = ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR;\n\n    /* Clear PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, MEM2MEM, DBM and CT bits */\n    registerValue &= ((uint32_t)~(BDMA_CCR_PL    | BDMA_CCR_MSIZE   | BDMA_CCR_PSIZE  | \\\n                                  BDMA_CCR_MINC  | BDMA_CCR_PINC    | BDMA_CCR_CIRC   | \\\n                                  BDMA_CCR_DIR   | BDMA_CCR_MEM2MEM | BDMA_CCR_DBM    | \\\n                                  BDMA_CCR_CT));\n\n    /* Prepare the DMA Channel configuration */\n    registerValue |=  DMA_TO_BDMA_DIRECTION(hdma->Init.Direction)            |\n                      DMA_TO_BDMA_PERIPHERAL_INC(hdma->Init.PeriphInc)       |\n                      DMA_TO_BDMA_MEMORY_INC(hdma->Init.MemInc)              |\n                      DMA_TO_BDMA_PDATA_SIZE(hdma->Init.PeriphDataAlignment) |\n                      DMA_TO_BDMA_MDATA_SIZE(hdma->Init.MemDataAlignment)    |\n                      DMA_TO_BDMA_MODE(hdma->Init.Mode)                      |\n                      DMA_TO_BDMA_PRIORITY(hdma->Init.Priority);\n\n    /* Write to DMA Channel CR register */\n    ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR = registerValue;\n\n    /* calculation of the channel index */\n    hdma->StreamIndex = (((uint32_t)((uint32_t*)hdma->Instance) - (uint32_t)BDMA_Channel0) / ((uint32_t)BDMA_Channel1 - (uint32_t)BDMA_Channel0)) << 2U;\n\n    /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate\n    DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */\n    regs_bdma = (BDMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma);\n\n    /* Clear all interrupt flags */\n    regs_bdma->IFCR = ((BDMA_IFCR_CGIF0) << (hdma->StreamIndex & 0x1FU));\n  }\n  else\n  {\n    hdma->ErrorCode = HAL_DMA_ERROR_PARAM;\n    hdma->State     = HAL_DMA_STATE_ERROR;\n\n    return HAL_ERROR;\n  }\n\n  if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n  {\n    /* Initialize parameters for DMAMUX channel :\n    DMAmuxChannel, DMAmuxChannelStatus and DMAmuxChannelStatusMask\n    */\n    DMA_CalcDMAMUXChannelBaseAndMask(hdma);\n\n    if(hdma->Init.Direction == DMA_MEMORY_TO_MEMORY)\n    {\n      /* if memory to memory force the request to 0*/\n      hdma->Init.Request = DMA_REQUEST_MEM2MEM;\n    }\n\n    /* Set peripheral request  to DMAMUX channel */\n    hdma->DMAmuxChannel->CCR = (hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID);\n\n    /* Clear the DMAMUX synchro overrun flag */\n    hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n    /* Initialize parameters for DMAMUX request generator :\n    if the DMA request is DMA_REQUEST_GENERATOR0 to DMA_REQUEST_GENERATOR7\n    */\n    if((hdma->Init.Request >= DMA_REQUEST_GENERATOR0) && (hdma->Init.Request <= DMA_REQUEST_GENERATOR7))\n    {\n      /* Initialize parameters for DMAMUX request generator :\n      DMAmuxRequestGen, DMAmuxRequestGenStatus and DMAmuxRequestGenStatusMask */\n      DMA_CalcDMAMUXRequestGenBaseAndMask(hdma);\n\n      /* Reset the DMAMUX request generator register */\n      hdma->DMAmuxRequestGen->RGCR = 0U;\n\n      /* Clear the DMAMUX request generator overrun flag */\n      hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n    }\n    else\n    {\n      hdma->DMAmuxRequestGen = 0U;\n      hdma->DMAmuxRequestGenStatus = 0U;\n      hdma->DMAmuxRequestGenStatusMask = 0U;\n    }\n  }\n\n  /* Initialize the error code */\n  hdma->ErrorCode = HAL_DMA_ERROR_NONE;\n\n  /* Initialize the DMA state */\n  hdma->State = HAL_DMA_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the DMA peripheral\n  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma)\n{\n  DMA_Base_Registers *regs_dma;\n  BDMA_Base_Registers *regs_bdma;\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Disable the selected DMA Streamx */\n  __HAL_DMA_DISABLE(hdma);\n\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    /* Reset DMA Streamx control register */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->CR   = 0U;\n\n    /* Reset DMA Streamx number of data to transfer register */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->NDTR = 0U;\n\n    /* Reset DMA Streamx peripheral address register */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->PAR  = 0U;\n\n    /* Reset DMA Streamx memory 0 address register */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->M0AR = 0U;\n\n    /* Reset DMA Streamx memory 1 address register */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->M1AR = 0U;\n\n    /* Reset DMA Streamx FIFO control register */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->FCR  = (uint32_t)0x00000021U;\n\n    /* Get DMA steam Base Address */\n    regs_dma = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma);\n\n    /* Clear all interrupt flags at correct offset within the register */\n    regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU);\n  }\n  else if(IS_BDMA_CHANNEL_INSTANCE(hdma->Instance) != 0U) /* BDMA instance(s) */\n  {\n    /* Reset DMA Channel control register */\n    ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR  = 0U;\n\n    /* Reset DMA Channel Number of Data to Transfer register */\n    ((BDMA_Channel_TypeDef *)hdma->Instance)->CNDTR = 0U;\n\n    /* Reset DMA Channel peripheral address register */\n    ((BDMA_Channel_TypeDef *)hdma->Instance)->CPAR  = 0U;\n\n    /* Reset DMA Channel memory 0 address register */\n    ((BDMA_Channel_TypeDef *)hdma->Instance)->CM0AR = 0U;\n\n    /* Reset DMA Channel memory 1 address register */\n    ((BDMA_Channel_TypeDef *)hdma->Instance)->CM1AR = 0U;\n\n    /* Get DMA steam Base Address */\n    regs_bdma = (BDMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma);\n\n    /* Clear all interrupt flags at correct offset within the register */\n    regs_bdma->IFCR = ((BDMA_IFCR_CGIF0) << (hdma->StreamIndex & 0x1FU));\n  }\n  else\n  {\n    /* Return error status */\n    return HAL_ERROR;\n  }\n\n#if defined (BDMA1) /* No DMAMUX available for BDMA1 available on  STM32H7Ax/Bx devices only */\n  if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n#endif /* BDMA1 */\n  {\n    /* Initialize parameters for DMAMUX channel :\n    DMAmuxChannel, DMAmuxChannelStatus and DMAmuxChannelStatusMask */\n    DMA_CalcDMAMUXChannelBaseAndMask(hdma);\n\n    if(hdma->DMAmuxChannel != 0U)\n    {\n      /* Resett he DMAMUX channel that corresponds to the DMA stream */\n      hdma->DMAmuxChannel->CCR = 0U;\n\n      /* Clear the DMAMUX synchro overrun flag */\n      hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n    }\n\n    if((hdma->Init.Request >= DMA_REQUEST_GENERATOR0) && (hdma->Init.Request <= DMA_REQUEST_GENERATOR7))\n    {\n      /* Initialize parameters for DMAMUX request generator :\n      DMAmuxRequestGen, DMAmuxRequestGenStatus and DMAmuxRequestGenStatusMask */\n      DMA_CalcDMAMUXRequestGenBaseAndMask(hdma);\n\n      /* Reset the DMAMUX request generator register */\n      hdma->DMAmuxRequestGen->RGCR = 0U;\n\n      /* Clear the DMAMUX request generator overrun flag */\n      hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n    }\n\n    hdma->DMAmuxRequestGen = 0U;\n    hdma->DMAmuxRequestGenStatus = 0U;\n    hdma->DMAmuxRequestGenStatusMask = 0U;\n  }\n\n\n  /* Clean callbacks */\n  hdma->XferCpltCallback       = NULL;\n  hdma->XferHalfCpltCallback   = NULL;\n  hdma->XferM1CpltCallback     = NULL;\n  hdma->XferM1HalfCpltCallback = NULL;\n  hdma->XferErrorCallback      = NULL;\n  hdma->XferAbortCallback      = NULL;\n\n  /* Initialize the error code */\n  hdma->ErrorCode = HAL_DMA_ERROR_NONE;\n\n  /* Initialize the DMA state */\n  hdma->State = HAL_DMA_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(hdma);\n\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n/** @addtogroup DMA_Exported_Functions_Group2\n  *\n@verbatim\n ===============================================================================\n                      #####  IO operation functions  #####\n ===============================================================================\n    [..]  This section provides functions allowing to:\n      (+) Configure the source, destination address and data length and Start DMA transfer\n      (+) Configure the source, destination address and data length and\n          Start DMA transfer with interrupt\n      (+) Register and Unregister DMA callbacks\n      (+) Abort DMA transfer\n      (+) Poll for transfer complete\n      (+) Handle DMA interrupt request\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Starts the DMA Transfer.\n  * @param  hdma      : pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  SrcAddress: The source memory Buffer address\n  * @param  DstAddress: The destination memory Buffer address\n  * @param  DataLength: The length of data to be transferred from source to destination\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_DMA_BUFFER_SIZE(DataLength));\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hdma);\n\n  if(HAL_DMA_STATE_READY == hdma->State)\n  {\n    /* Change DMA peripheral state */\n    hdma->State = HAL_DMA_STATE_BUSY;\n\n    /* Initialize the error code */\n    hdma->ErrorCode = HAL_DMA_ERROR_NONE;\n\n    /* Disable the peripheral */\n    __HAL_DMA_DISABLE(hdma);\n\n    /* Configure the source, destination address and the data length */\n    DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);\n\n    /* Enable the Peripheral */\n    __HAL_DMA_ENABLE(hdma);\n  }\n  else\n  {\n    /* Set the error code to busy */\n    hdma->ErrorCode = HAL_DMA_ERROR_BUSY;\n\n    /* Process unlocked */\n    __HAL_UNLOCK(hdma);\n\n    /* Return error status */\n    status = HAL_ERROR;\n  }\n  return status;\n}\n\n/**\n  * @brief  Start the DMA Transfer with interrupt enabled.\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  SrcAddress: The source memory Buffer address\n  * @param  DstAddress: The destination memory Buffer address\n  * @param  DataLength: The length of data to be transferred from source to destination\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_DMA_BUFFER_SIZE(DataLength));\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hdma);\n\n  if(HAL_DMA_STATE_READY == hdma->State)\n  {\n    /* Change DMA peripheral state */\n    hdma->State = HAL_DMA_STATE_BUSY;\n\n    /* Initialize the error code */\n    hdma->ErrorCode = HAL_DMA_ERROR_NONE;\n\n    /* Disable the peripheral */\n    __HAL_DMA_DISABLE(hdma);\n\n    /* Configure the source, destination address and the data length */\n    DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);\n\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      /* Enable Common interrupts*/\n      MODIFY_REG(((DMA_Stream_TypeDef   *)hdma->Instance)->CR, (DMA_IT_TC | DMA_IT_TE | DMA_IT_DME | DMA_IT_HT), (DMA_IT_TC | DMA_IT_TE | DMA_IT_DME));\n\n      if(hdma->XferHalfCpltCallback != NULL)\n      {\n        /* Enable Half Transfer IT if corresponding Callback is set */\n        ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  |= DMA_IT_HT;\n      }\n    }\n    else /* BDMA channel */\n    {\n      /* Enable Common interrupts */\n      MODIFY_REG(((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR, (BDMA_CCR_TCIE | BDMA_CCR_HTIE | BDMA_CCR_TEIE), (BDMA_CCR_TCIE | BDMA_CCR_TEIE));\n\n      if(hdma->XferHalfCpltCallback != NULL)\n      {\n        /*Enable Half Transfer IT if corresponding Callback is set */\n        ((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR  |= BDMA_CCR_HTIE;\n      }\n    }\n\n    if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n    {\n      /* Check if DMAMUX Synchronization is enabled */\n      if((hdma->DMAmuxChannel->CCR & DMAMUX_CxCR_SE) != 0U)\n      {\n        /* Enable DMAMUX sync overrun IT*/\n        hdma->DMAmuxChannel->CCR |= DMAMUX_CxCR_SOIE;\n      }\n\n      if(hdma->DMAmuxRequestGen != 0U)\n      {\n        /* if using DMAMUX request generator, enable the DMAMUX request generator overrun IT*/\n        /* enable the request gen overrun IT */\n        hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_OIE;\n      }\n    }\n\n    /* Enable the Peripheral */\n    __HAL_DMA_ENABLE(hdma);\n  }\n  else\n  {\n    /* Set the error code to busy */\n    hdma->ErrorCode = HAL_DMA_ERROR_BUSY;\n\n    /* Process unlocked */\n    __HAL_UNLOCK(hdma);\n\n    /* Return error status */\n    status = HAL_ERROR;\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Aborts the DMA Transfer.\n  * @param  hdma  : pointer to a DMA_HandleTypeDef structure that contains\n  *                 the configuration information for the specified DMA Stream.\n  *\n  * @note  After disabling a DMA Stream, a check for wait until the DMA Stream is\n  *        effectively disabled is added. If a Stream is disabled\n  *        while a data transfer is ongoing, the current data will be transferred\n  *        and the Stream will be effectively disabled only after the transfer of\n  *        this single data is finished.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)\n{\n  /* calculate DMA base and stream number */\n  DMA_Base_Registers *regs_dma;\n  BDMA_Base_Registers *regs_bdma;\n  const __IO uint32_t *enableRegister;\n\n  uint32_t tickstart = HAL_GetTick();\n\n /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the DMA peripheral state */\n  if(hdma->State != HAL_DMA_STATE_BUSY)\n  {\n    hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hdma);\n\n    return HAL_ERROR;\n  }\n  else\n  {\n    /* Disable all the transfer interrupts */\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n       /* Disable DMA All Interrupts  */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME | DMA_IT_HT);\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->FCR &= ~(DMA_IT_FE);\n\n      enableRegister = (__IO uint32_t *)(&(((DMA_Stream_TypeDef   *)hdma->Instance)->CR));\n    }\n    else /* BDMA channel */\n    {\n      /* Disable DMA All Interrupts */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR  &= ~(BDMA_CCR_TCIE | BDMA_CCR_HTIE | BDMA_CCR_TEIE);\n\n      enableRegister = (__IO uint32_t *)(&(((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR));\n    }\n\n    if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n    {\n      /* disable the DMAMUX sync overrun IT */\n      hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE;\n    }\n\n    /* Disable the stream */\n    __HAL_DMA_DISABLE(hdma);\n\n    /* Check if the DMA Stream is effectively disabled */\n    while(((*enableRegister) & DMA_SxCR_EN) != 0U)\n    {\n      /* Check for the Timeout */\n      if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT)\n      {\n        /* Update error code */\n        hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;\n\n        /* Change the DMA state */\n        hdma->State = HAL_DMA_STATE_ERROR;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hdma);\n\n        return HAL_ERROR;\n      }\n    }\n\n    /* Clear all interrupt flags at correct offset within the register */\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      regs_dma = (DMA_Base_Registers *)hdma->StreamBaseAddress;\n      regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU);\n    }\n    else /* BDMA channel */\n    {\n      regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress;\n      regs_bdma->IFCR = ((BDMA_IFCR_CGIF0) << (hdma->StreamIndex & 0x1FU));\n    }\n\n    if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n    {\n      /* Clear the DMAMUX synchro overrun flag */\n      hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n      if(hdma->DMAmuxRequestGen != 0U)\n      {\n        /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT */\n        /* disable the request gen overrun IT */\n        hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE;\n\n        /* Clear the DMAMUX request generator overrun flag */\n        hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n      }\n    }\n\n    /* Change the DMA state */\n    hdma->State = HAL_DMA_STATE_READY;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hdma);\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Aborts the DMA Transfer in Interrupt mode.\n  * @param  hdma  : pointer to a DMA_HandleTypeDef structure that contains\n  *                 the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)\n{\n  BDMA_Base_Registers *regs_bdma;\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  if(hdma->State != HAL_DMA_STATE_BUSY)\n  {\n    hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;\n    return HAL_ERROR;\n  }\n  else\n  {\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      /* Set Abort State  */\n      hdma->State = HAL_DMA_STATE_ABORT;\n\n      /* Disable the stream */\n      __HAL_DMA_DISABLE(hdma);\n    }\n    else /* BDMA channel */\n    {\n      /* Disable DMA All Interrupts  */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR  &= ~(BDMA_CCR_TCIE | BDMA_CCR_HTIE | BDMA_CCR_TEIE);\n\n      /* Disable the channel */\n      __HAL_DMA_DISABLE(hdma);\n\n      if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n      {\n        /* disable the DMAMUX sync overrun IT */\n        hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE;\n\n        /* Clear all flags */\n        regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress;\n        regs_bdma->IFCR = ((BDMA_IFCR_CGIF0) << (hdma->StreamIndex & 0x1FU));\n\n        /* Clear the DMAMUX synchro overrun flag */\n        hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n        if(hdma->DMAmuxRequestGen != 0U)\n        {\n          /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT*/\n          /* disable the request gen overrun IT */\n          hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE;\n\n          /* Clear the DMAMUX request generator overrun flag */\n          hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n        }\n      }\n\n      /* Change the DMA state */\n      hdma->State = HAL_DMA_STATE_READY;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hdma);\n\n      /* Call User Abort callback */\n      if(hdma->XferAbortCallback != NULL)\n      {\n        hdma->XferAbortCallback(hdma);\n      }\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Polling for transfer complete.\n  * @param  hdma:          pointer to a DMA_HandleTypeDef structure that contains\n  *                        the configuration information for the specified DMA Stream.\n  * @param  CompleteLevel: Specifies the DMA level complete.\n  * @note   The polling mode is kept in this version for legacy. it is recommended to use the IT model instead.\n  *         This model could be used for debug purpose.\n  * @note   The HAL_DMA_PollForTransfer API cannot be used in circular and double buffering mode (automatic circular mode).\n  * @param  Timeout:       Timeout duration.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t cpltlevel_mask;\n  uint32_t tickstart = HAL_GetTick();\n\n  /* IT status register */\n  __IO uint32_t *isr_reg;\n  /* IT clear flag register */\n  __IO uint32_t *ifcr_reg;\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  if(HAL_DMA_STATE_BUSY != hdma->State)\n  {\n    /* No transfer ongoing */\n    hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;\n    __HAL_UNLOCK(hdma);\n\n    return HAL_ERROR;\n  }\n\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    /* Polling mode not supported in circular mode and double buffering mode */\n    if ((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_CIRC) != 0U)\n    {\n      hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;\n      return HAL_ERROR;\n    }\n\n    /* Get the level transfer complete flag */\n    if(CompleteLevel == HAL_DMA_FULL_TRANSFER)\n    {\n      /* Transfer Complete flag */\n      cpltlevel_mask = DMA_FLAG_TCIF0_4 << (hdma->StreamIndex & 0x1FU);\n    }\n    else\n    {\n      /* Half Transfer Complete flag */\n      cpltlevel_mask = DMA_FLAG_HTIF0_4 << (hdma->StreamIndex & 0x1FU);\n    }\n\n    isr_reg  = &(((DMA_Base_Registers *)hdma->StreamBaseAddress)->ISR);\n    ifcr_reg = &(((DMA_Base_Registers *)hdma->StreamBaseAddress)->IFCR);\n  }\n  else /* BDMA channel */\n  {\n    /* Polling mode not supported in circular mode */\n    if ((((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR & BDMA_CCR_CIRC) != 0U)\n    {\n      hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;\n      return HAL_ERROR;\n    }\n\n    /* Get the level transfer complete flag */\n    if(CompleteLevel == HAL_DMA_FULL_TRANSFER)\n    {\n      /* Transfer Complete flag */\n      cpltlevel_mask = BDMA_FLAG_TC0 << (hdma->StreamIndex & 0x1FU);\n    }\n    else\n    {\n      /* Half Transfer Complete flag */\n      cpltlevel_mask = BDMA_FLAG_HT0 << (hdma->StreamIndex & 0x1FU);\n    }\n\n    isr_reg  = &(((BDMA_Base_Registers *)hdma->StreamBaseAddress)->ISR);\n    ifcr_reg = &(((BDMA_Base_Registers *)hdma->StreamBaseAddress)->IFCR);\n  }\n\n  while(((*isr_reg) & cpltlevel_mask) == 0U)\n  {\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      if(((*isr_reg) & (DMA_FLAG_FEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n      {\n        /* Update error code */\n        hdma->ErrorCode |= HAL_DMA_ERROR_FE;\n\n        /* Clear the FIFO error flag */\n        (*ifcr_reg) = DMA_FLAG_FEIF0_4 << (hdma->StreamIndex & 0x1FU);\n      }\n\n      if(((*isr_reg) & (DMA_FLAG_DMEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n      {\n        /* Update error code */\n        hdma->ErrorCode |= HAL_DMA_ERROR_DME;\n\n        /* Clear the Direct Mode error flag */\n        (*ifcr_reg) = DMA_FLAG_DMEIF0_4 << (hdma->StreamIndex & 0x1FU);\n      }\n\n      if(((*isr_reg) & (DMA_FLAG_TEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n      {\n        /* Update error code */\n        hdma->ErrorCode |= HAL_DMA_ERROR_TE;\n\n        /* Clear the transfer error flag */\n        (*ifcr_reg) = DMA_FLAG_TEIF0_4 << (hdma->StreamIndex & 0x1FU);\n\n        /* Change the DMA state */\n        hdma->State = HAL_DMA_STATE_READY;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hdma);\n\n        return HAL_ERROR;\n      }\n    }\n    else /* BDMA channel */\n    {\n      if(((*isr_reg) & (BDMA_FLAG_TE0 << (hdma->StreamIndex & 0x1FU))) != 0U)\n      {\n        /* When a DMA transfer error occurs */\n        /* A hardware clear of its EN bits is performed */\n        /* Clear all flags */\n        (*isr_reg) = ((BDMA_ISR_GIF0) << (hdma->StreamIndex & 0x1FU));\n\n        /* Update error code */\n        hdma->ErrorCode = HAL_DMA_ERROR_TE;\n\n        /* Change the DMA state */\n        hdma->State = HAL_DMA_STATE_READY;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hdma);\n\n        return HAL_ERROR;\n      }\n    }\n\n    /* Check for the Timeout (Not applicable in circular mode)*/\n    if(Timeout != HAL_MAX_DELAY)\n    {\n      if(((HAL_GetTick() - tickstart ) > Timeout)||(Timeout == 0U))\n      {\n        /* Update error code */\n        hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;\n\n        /* if timeout then abort the current transfer */\n        /* No need to check return value: as in this case we will return HAL_ERROR with HAL_DMA_ERROR_TIMEOUT error code  */\n        (void) HAL_DMA_Abort(hdma);\n          /*\n            Note that the Abort function will\n              - Clear the transfer error flags\n              - Unlock\n              - Set the State\n          */\n\n        return HAL_ERROR;\n      }\n    }\n\n    if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n    {\n      /* Check for DMAMUX Request generator (if used) overrun status */\n      if(hdma->DMAmuxRequestGen != 0U)\n      {\n        /* if using DMAMUX request generator Check for DMAMUX request generator overrun */\n        if((hdma->DMAmuxRequestGenStatus->RGSR & hdma->DMAmuxRequestGenStatusMask) != 0U)\n        {\n          /* Clear the DMAMUX request generator overrun flag */\n          hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n\n          /* Update error code */\n          hdma->ErrorCode |= HAL_DMA_ERROR_REQGEN;\n        }\n      }\n\n      /* Check for DMAMUX Synchronization overrun */\n      if((hdma->DMAmuxChannelStatus->CSR & hdma->DMAmuxChannelStatusMask) != 0U)\n      {\n        /* Clear the DMAMUX synchro overrun flag */\n        hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n        /* Update error code */\n        hdma->ErrorCode |= HAL_DMA_ERROR_SYNC;\n      }\n    }\n  }\n\n\n  /* Get the level transfer complete flag */\n  if(CompleteLevel == HAL_DMA_FULL_TRANSFER)\n  {\n    /* Clear the half transfer and transfer complete flags */\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      (*ifcr_reg) = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << (hdma->StreamIndex & 0x1FU);\n    }\n    else /* BDMA channel */\n    {\n      (*ifcr_reg) = (BDMA_FLAG_TC0 << (hdma->StreamIndex & 0x1FU));\n    }\n\n    hdma->State = HAL_DMA_STATE_READY;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hdma);\n  }\n  else /*CompleteLevel = HAL_DMA_HALF_TRANSFER*/\n  {\n    /* Clear the half transfer and transfer complete flags */\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      (*ifcr_reg) = (DMA_FLAG_HTIF0_4) << (hdma->StreamIndex & 0x1FU);\n    }\n    else /* BDMA channel */\n    {\n      (*ifcr_reg) = (BDMA_FLAG_HT0 << (hdma->StreamIndex & 0x1FU));\n    }\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Handles DMA interrupt request.\n  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified DMA Stream.\n  * @retval None\n  */\nvoid HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)\n{\n  uint32_t tmpisr_dma, tmpisr_bdma;\n  uint32_t ccr_reg;\n  __IO uint32_t count = 0U;\n  uint32_t timeout = SystemCoreClock / 9600U;\n\n  /* calculate DMA base and stream number */\n  DMA_Base_Registers  *regs_dma  = (DMA_Base_Registers *)hdma->StreamBaseAddress;\n  BDMA_Base_Registers *regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress;\n\n  tmpisr_dma  = regs_dma->ISR;\n  tmpisr_bdma = regs_bdma->ISR;\n\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U)  /* DMA1 or DMA2 instance */\n  {\n    /* Transfer Error Interrupt management ***************************************/\n    if ((tmpisr_dma & (DMA_FLAG_TEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n    {\n      if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != 0U)\n      {\n        /* Disable the transfer error interrupt */\n        ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  &= ~(DMA_IT_TE);\n\n        /* Clear the transfer error flag */\n        regs_dma->IFCR = DMA_FLAG_TEIF0_4 << (hdma->StreamIndex & 0x1FU);\n\n        /* Update error code */\n        hdma->ErrorCode |= HAL_DMA_ERROR_TE;\n      }\n    }\n    /* FIFO Error Interrupt management ******************************************/\n    if ((tmpisr_dma & (DMA_FLAG_FEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n    {\n      if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_FE) != 0U)\n      {\n        /* Clear the FIFO error flag */\n        regs_dma->IFCR = DMA_FLAG_FEIF0_4 << (hdma->StreamIndex & 0x1FU);\n\n        /* Update error code */\n        hdma->ErrorCode |= HAL_DMA_ERROR_FE;\n      }\n    }\n    /* Direct Mode Error Interrupt management ***********************************/\n    if ((tmpisr_dma & (DMA_FLAG_DMEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n    {\n      if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_DME) != 0U)\n      {\n        /* Clear the direct mode error flag */\n        regs_dma->IFCR = DMA_FLAG_DMEIF0_4 << (hdma->StreamIndex & 0x1FU);\n\n        /* Update error code */\n        hdma->ErrorCode |= HAL_DMA_ERROR_DME;\n      }\n    }\n    /* Half Transfer Complete Interrupt management ******************************/\n    if ((tmpisr_dma & (DMA_FLAG_HTIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n    {\n      if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != 0U)\n      {\n        /* Clear the half transfer complete flag */\n        regs_dma->IFCR = DMA_FLAG_HTIF0_4 << (hdma->StreamIndex & 0x1FU);\n\n        /* Multi_Buffering mode enabled */\n        if(((((DMA_Stream_TypeDef   *)hdma->Instance)->CR) & (uint32_t)(DMA_SxCR_DBM)) != 0U)\n        {\n          /* Current memory buffer used is Memory 0 */\n          if((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_CT) == 0U)\n          {\n            if(hdma->XferHalfCpltCallback != NULL)\n            {\n              /* Half transfer callback */\n              hdma->XferHalfCpltCallback(hdma);\n            }\n          }\n          /* Current memory buffer used is Memory 1 */\n          else\n          {\n            if(hdma->XferM1HalfCpltCallback != NULL)\n            {\n              /* Half transfer callback */\n              hdma->XferM1HalfCpltCallback(hdma);\n            }\n          }\n        }\n        else\n        {\n          /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */\n          if((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_CIRC) == 0U)\n          {\n            /* Disable the half transfer interrupt */\n            ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  &= ~(DMA_IT_HT);\n          }\n\n          if(hdma->XferHalfCpltCallback != NULL)\n          {\n            /* Half transfer callback */\n            hdma->XferHalfCpltCallback(hdma);\n          }\n        }\n      }\n    }\n    /* Transfer Complete Interrupt management ***********************************/\n    if ((tmpisr_dma & (DMA_FLAG_TCIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U)\n    {\n      if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != 0U)\n      {\n        /* Clear the transfer complete flag */\n        regs_dma->IFCR = DMA_FLAG_TCIF0_4 << (hdma->StreamIndex & 0x1FU);\n\n        if(HAL_DMA_STATE_ABORT == hdma->State)\n        {\n          /* Disable all the transfer interrupts */\n          ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME);\n          ((DMA_Stream_TypeDef   *)hdma->Instance)->FCR &= ~(DMA_IT_FE);\n\n          if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))\n          {\n            ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  &= ~(DMA_IT_HT);\n          }\n\n          /* Clear all interrupt flags at correct offset within the register */\n          regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU);\n\n          /* Change the DMA state */\n          hdma->State = HAL_DMA_STATE_READY;\n\n          /* Process Unlocked */\n          __HAL_UNLOCK(hdma);\n\n          if(hdma->XferAbortCallback != NULL)\n          {\n            hdma->XferAbortCallback(hdma);\n          }\n          return;\n        }\n\n        if(((((DMA_Stream_TypeDef   *)hdma->Instance)->CR) & (uint32_t)(DMA_SxCR_DBM)) != 0U)\n        {\n          /* Current memory buffer used is Memory 0 */\n          if((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_CT) == 0U)\n          {\n            if(hdma->XferM1CpltCallback != NULL)\n            {\n              /* Transfer complete Callback for memory1 */\n              hdma->XferM1CpltCallback(hdma);\n            }\n          }\n          /* Current memory buffer used is Memory 1 */\n          else\n          {\n            if(hdma->XferCpltCallback != NULL)\n            {\n              /* Transfer complete Callback for memory0 */\n              hdma->XferCpltCallback(hdma);\n            }\n          }\n        }\n        /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */\n        else\n        {\n          if((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_CIRC) == 0U)\n          {\n            /* Disable the transfer complete interrupt */\n            ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  &= ~(DMA_IT_TC);\n\n            /* Change the DMA state */\n            hdma->State = HAL_DMA_STATE_READY;\n\n            /* Process Unlocked */\n            __HAL_UNLOCK(hdma);\n          }\n\n          if(hdma->XferCpltCallback != NULL)\n          {\n            /* Transfer complete callback */\n            hdma->XferCpltCallback(hdma);\n          }\n        }\n      }\n    }\n\n    /* manage error case */\n    if(hdma->ErrorCode != HAL_DMA_ERROR_NONE)\n    {\n      if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != 0U)\n      {\n        hdma->State = HAL_DMA_STATE_ABORT;\n\n        /* Disable the stream */\n        __HAL_DMA_DISABLE(hdma);\n\n        do\n        {\n          if (++count > timeout)\n          {\n            break;\n          }\n        }\n        while((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_EN) != 0U);\n\n        if((((DMA_Stream_TypeDef   *)hdma->Instance)->CR & DMA_SxCR_EN) != 0U)\n        {\n          /* Change the DMA state to error if DMA disable fails */\n          hdma->State = HAL_DMA_STATE_ERROR;\n        }\n        else\n        {\n          /* Change the DMA state to Ready if DMA disable success */\n          hdma->State = HAL_DMA_STATE_READY;\n        }\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hdma);\n      }\n\n      if(hdma->XferErrorCallback != NULL)\n      {\n        /* Transfer error callback */\n        hdma->XferErrorCallback(hdma);\n      }\n    }\n  }\n  else if(IS_BDMA_CHANNEL_INSTANCE(hdma->Instance) != 0U)  /* BDMA instance(s) */\n  {\n    ccr_reg = (((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR);\n\n    /* Half Transfer Complete Interrupt management ******************************/\n    if (((tmpisr_bdma & (BDMA_FLAG_HT0 << (hdma->StreamIndex & 0x1FU))) != 0U) && ((ccr_reg & BDMA_CCR_HTIE) != 0U))\n    {\n      /* Clear the half transfer complete flag */\n      regs_bdma->IFCR = (BDMA_ISR_HTIF0 << (hdma->StreamIndex & 0x1FU));\n\n      /* Disable the transfer complete interrupt if the DMA mode is Double Buffering */\n      if((ccr_reg & BDMA_CCR_DBM) != 0U)\n      {\n        /* Current memory buffer used is Memory 0 */\n        if((ccr_reg & BDMA_CCR_CT) == 0U)\n        {\n          if(hdma->XferM1HalfCpltCallback != NULL)\n          {\n            /* Half transfer Callback for Memory 1 */\n            hdma->XferM1HalfCpltCallback(hdma);\n          }\n        }\n        /* Current memory buffer used is Memory 1 */\n        else\n        {\n          if(hdma->XferHalfCpltCallback != NULL)\n          {\n            /* Half transfer Callback for Memory 0 */\n            hdma->XferHalfCpltCallback(hdma);\n          }\n        }\n      }\n      else\n      {\n        if((ccr_reg & BDMA_CCR_CIRC) == 0U)\n        {\n          /* Disable the half transfer interrupt */\n          __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);\n        }\n\n        /* DMA peripheral state is not updated in Half Transfer */\n        /* but in Transfer Complete case */\n\n       if(hdma->XferHalfCpltCallback != NULL)\n        {\n          /* Half transfer callback */\n          hdma->XferHalfCpltCallback(hdma);\n        }\n      }\n    }\n\n    /* Transfer Complete Interrupt management ***********************************/\n    else if (((tmpisr_bdma & (BDMA_FLAG_TC0 << (hdma->StreamIndex & 0x1FU))) != 0U) && ((ccr_reg & BDMA_CCR_TCIE) != 0U))\n    {\n      /* Clear the transfer complete flag */\n      regs_bdma->IFCR = (BDMA_ISR_TCIF0) << (hdma->StreamIndex & 0x1FU);\n\n      /* Disable the transfer complete interrupt if the DMA mode is Double Buffering */\n      if((ccr_reg & BDMA_CCR_DBM) != 0U)\n      {\n        /* Current memory buffer used is Memory 0 */\n        if((ccr_reg & BDMA_CCR_CT) == 0U)\n        {\n          if(hdma->XferM1CpltCallback != NULL)\n          {\n            /* Transfer complete Callback for Memory 1 */\n            hdma->XferM1CpltCallback(hdma);\n          }\n        }\n        /* Current memory buffer used is Memory 1 */\n        else\n        {\n          if(hdma->XferCpltCallback != NULL)\n          {\n            /* Transfer complete Callback for Memory 0 */\n            hdma->XferCpltCallback(hdma);\n          }\n        }\n      }\n      else\n      {\n        if((ccr_reg & BDMA_CCR_CIRC) == 0U)\n        {\n          /* Disable the transfer complete and error interrupt, if the DMA mode is not CIRCULAR */\n          __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC);\n\n          /* Change the DMA state */\n          hdma->State = HAL_DMA_STATE_READY;\n\n          /* Process Unlocked */\n          __HAL_UNLOCK(hdma);\n        }\n\n        if(hdma->XferCpltCallback != NULL)\n        {\n          /* Transfer complete callback */\n          hdma->XferCpltCallback(hdma);\n        }\n      }\n    }\n    /* Transfer Error Interrupt management **************************************/\n    else if (((tmpisr_bdma & (BDMA_FLAG_TE0 << (hdma->StreamIndex & 0x1FU))) != 0U) && ((ccr_reg & BDMA_CCR_TEIE) != 0U))\n    {\n      /* When a DMA transfer error occurs */\n      /* A hardware clear of its EN bits is performed */\n      /* Disable ALL DMA IT */\n      __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));\n\n      /* Clear all flags */\n      regs_bdma->IFCR = (BDMA_ISR_GIF0) << (hdma->StreamIndex & 0x1FU);\n\n      /* Update error code */\n      hdma->ErrorCode = HAL_DMA_ERROR_TE;\n\n      /* Change the DMA state */\n      hdma->State = HAL_DMA_STATE_READY;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hdma);\n\n      if (hdma->XferErrorCallback != NULL)\n      {\n        /* Transfer error callback */\n        hdma->XferErrorCallback(hdma);\n      }\n    }\n    else\n    {\n      /* Nothing To Do */\n    }\n  }\n  else\n  {\n    /* Nothing To Do */\n  }\n}\n\n/**\n  * @brief  Register callbacks\n  * @param  hdma:                 pointer to a DMA_HandleTypeDef structure that contains\n  *                               the configuration information for the specified DMA Stream.\n  * @param  CallbackID:           User Callback identifier\n  *                               a DMA_HandleTypeDef structure as parameter.\n  * @param  pCallback:            pointer to private callback function which has pointer to\n  *                               a DMA_HandleTypeDef structure as parameter.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma))\n{\n\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hdma);\n\n  if(HAL_DMA_STATE_READY == hdma->State)\n  {\n    switch (CallbackID)\n    {\n    case  HAL_DMA_XFER_CPLT_CB_ID:\n      hdma->XferCpltCallback = pCallback;\n      break;\n\n    case  HAL_DMA_XFER_HALFCPLT_CB_ID:\n      hdma->XferHalfCpltCallback = pCallback;\n      break;\n\n    case  HAL_DMA_XFER_M1CPLT_CB_ID:\n      hdma->XferM1CpltCallback = pCallback;\n      break;\n\n    case  HAL_DMA_XFER_M1HALFCPLT_CB_ID:\n      hdma->XferM1HalfCpltCallback = pCallback;\n      break;\n\n    case  HAL_DMA_XFER_ERROR_CB_ID:\n      hdma->XferErrorCallback = pCallback;\n      break;\n\n    case  HAL_DMA_XFER_ABORT_CB_ID:\n      hdma->XferAbortCallback = pCallback;\n      break;\n\n    default:\n      status =  HAL_ERROR;\n      break;\n    }\n  }\n  else\n  {\n    /* Return error status */\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hdma);\n\n  return status;\n}\n\n/**\n  * @brief  UnRegister callbacks\n  * @param  hdma:                 pointer to a DMA_HandleTypeDef structure that contains\n  *                               the configuration information for the specified DMA Stream.\n  * @param  CallbackID:           User Callback identifier\n  *                               a HAL_DMA_CallbackIDTypeDef ENUM as parameter.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the DMA peripheral handle */\n  if(hdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hdma);\n\n  if(HAL_DMA_STATE_READY == hdma->State)\n  {\n    switch (CallbackID)\n    {\n    case  HAL_DMA_XFER_CPLT_CB_ID:\n      hdma->XferCpltCallback = NULL;\n      break;\n\n    case  HAL_DMA_XFER_HALFCPLT_CB_ID:\n      hdma->XferHalfCpltCallback = NULL;\n      break;\n\n    case  HAL_DMA_XFER_M1CPLT_CB_ID:\n      hdma->XferM1CpltCallback = NULL;\n      break;\n\n    case  HAL_DMA_XFER_M1HALFCPLT_CB_ID:\n      hdma->XferM1HalfCpltCallback = NULL;\n      break;\n\n    case  HAL_DMA_XFER_ERROR_CB_ID:\n      hdma->XferErrorCallback = NULL;\n      break;\n\n    case  HAL_DMA_XFER_ABORT_CB_ID:\n      hdma->XferAbortCallback = NULL;\n      break;\n\n    case   HAL_DMA_XFER_ALL_CB_ID:\n      hdma->XferCpltCallback = NULL;\n      hdma->XferHalfCpltCallback = NULL;\n      hdma->XferM1CpltCallback = NULL;\n      hdma->XferM1HalfCpltCallback = NULL;\n      hdma->XferErrorCallback = NULL;\n      hdma->XferAbortCallback = NULL;\n      break;\n\n    default:\n      status = HAL_ERROR;\n      break;\n    }\n  }\n  else\n  {\n    status = HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hdma);\n\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/** @addtogroup DMA_Exported_Functions_Group3\n  *\n@verbatim\n ===============================================================================\n                    ##### State and Errors functions #####\n ===============================================================================\n    [..]\n    This subsection provides functions allowing to\n      (+) Check the DMA state\n      (+) Get error code\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Returns the DMA state.\n  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified DMA Stream.\n  * @retval HAL state\n  */\nHAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma)\n{\n  return hdma->State;\n}\n\n/**\n  * @brief  Return the DMA error code\n  * @param  hdma : pointer to a DMA_HandleTypeDef structure that contains\n  *              the configuration information for the specified DMA Stream.\n  * @retval DMA Error Code\n  */\nuint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)\n{\n  return hdma->ErrorCode;\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup DMA_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Sets the DMA Transfer parameter.\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  SrcAddress: The source memory Buffer address\n  * @param  DstAddress: The destination memory Buffer address\n  * @param  DataLength: The length of data to be transferred from source to destination\n  * @retval None\n  */\nstatic void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\n{\n  /* calculate DMA base and stream number */\n  DMA_Base_Registers  *regs_dma  = (DMA_Base_Registers *)hdma->StreamBaseAddress;\n  BDMA_Base_Registers *regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress;\n\n  if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n  {\n    /* Clear the DMAMUX synchro overrun flag */\n    hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n    if(hdma->DMAmuxRequestGen != 0U)\n    {\n      /* Clear the DMAMUX request generator overrun flag */\n      hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n    }\n  }\n\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    /* Clear all interrupt flags at correct offset within the register */\n    regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU);\n\n    /* Clear DBM bit */\n    ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= (uint32_t)(~DMA_SxCR_DBM);\n\n    /* Configure DMA Stream data length */\n    ((DMA_Stream_TypeDef *)hdma->Instance)->NDTR = DataLength;\n\n    /* Peripheral to Memory */\n    if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)\n    {\n      /* Configure DMA Stream destination address */\n      ((DMA_Stream_TypeDef *)hdma->Instance)->PAR = DstAddress;\n\n      /* Configure DMA Stream source address */\n      ((DMA_Stream_TypeDef *)hdma->Instance)->M0AR = SrcAddress;\n    }\n    /* Memory to Peripheral */\n    else\n    {\n      /* Configure DMA Stream source address */\n      ((DMA_Stream_TypeDef *)hdma->Instance)->PAR = SrcAddress;\n\n      /* Configure DMA Stream destination address */\n      ((DMA_Stream_TypeDef *)hdma->Instance)->M0AR = DstAddress;\n    }\n  }\n  else if(IS_BDMA_CHANNEL_INSTANCE(hdma->Instance) != 0U) /* BDMA instance(s) */\n  {\n    /* Clear all flags */\n    regs_bdma->IFCR = (BDMA_ISR_GIF0) << (hdma->StreamIndex & 0x1FU);\n\n    /* Configure DMA Channel data length */\n    ((BDMA_Channel_TypeDef *)hdma->Instance)->CNDTR = DataLength;\n\n    /* Peripheral to Memory */\n    if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)\n    {\n      /* Configure DMA Channel destination address */\n      ((BDMA_Channel_TypeDef *)hdma->Instance)->CPAR = DstAddress;\n\n      /* Configure DMA Channel source address */\n      ((BDMA_Channel_TypeDef *)hdma->Instance)->CM0AR = SrcAddress;\n    }\n    /* Memory to Peripheral */\n    else\n    {\n      /* Configure DMA Channel source address */\n      ((BDMA_Channel_TypeDef *)hdma->Instance)->CPAR = SrcAddress;\n\n      /* Configure DMA Channel destination address */\n      ((BDMA_Channel_TypeDef *)hdma->Instance)->CM0AR = DstAddress;\n    }\n  }\n  else\n  {\n    /* Nothing To Do */\n  }\n}\n\n/**\n  * @brief  Returns the DMA Stream base address depending on stream number\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @retval Stream base address\n  */\nstatic uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma)\n{\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    uint32_t stream_number = (((uint32_t)((uint32_t*)hdma->Instance) & 0xFFU) - 16U) / 24U;\n\n    /* lookup table for necessary bitshift of flags within status registers */\n    static const uint8_t flagBitshiftOffset[8U] = {0U, 6U, 16U, 22U, 0U, 6U, 16U, 22U};\n    hdma->StreamIndex = flagBitshiftOffset[stream_number & 0x7U];\n\n    if (stream_number > 3U)\n    {\n      /* return pointer to HISR and HIFCR */\n      hdma->StreamBaseAddress = (((uint32_t)((uint32_t*)hdma->Instance) & (uint32_t)(~0x3FFU)) + 4U);\n    }\n    else\n    {\n      /* return pointer to LISR and LIFCR */\n      hdma->StreamBaseAddress = ((uint32_t)((uint32_t*)hdma->Instance) & (uint32_t)(~0x3FFU));\n    }\n  }\n  else /* BDMA instance(s) */\n  {\n    /* return pointer to ISR and IFCR */\n    hdma->StreamBaseAddress = ((uint32_t)((uint32_t*)hdma->Instance) & (uint32_t)(~0xFFU));\n  }\n\n  return hdma->StreamBaseAddress;\n}\n\n/**\n  * @brief  Check compatibility between FIFO threshold level and size of the memory burst\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Memory Data size equal to Byte */\n  if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_BYTE)\n  {\n    switch (hdma->Init.FIFOThreshold)\n    {\n      case DMA_FIFO_THRESHOLD_1QUARTERFULL:\n      case DMA_FIFO_THRESHOLD_3QUARTERSFULL:\n\n        if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1)\n        {\n          status = HAL_ERROR;\n        }\n        break;\n\n      case DMA_FIFO_THRESHOLD_HALFFULL:\n        if (hdma->Init.MemBurst == DMA_MBURST_INC16)\n        {\n          status = HAL_ERROR;\n        }\n        break;\n\n      case DMA_FIFO_THRESHOLD_FULL:\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /* Memory Data size equal to Half-Word */\n  else if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD)\n  {\n    switch (hdma->Init.FIFOThreshold)\n    {\n      case DMA_FIFO_THRESHOLD_1QUARTERFULL:\n      case DMA_FIFO_THRESHOLD_3QUARTERSFULL:\n        status = HAL_ERROR;\n        break;\n\n      case DMA_FIFO_THRESHOLD_HALFFULL:\n        if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1)\n        {\n          status = HAL_ERROR;\n        }\n        break;\n\n      case DMA_FIFO_THRESHOLD_FULL:\n        if (hdma->Init.MemBurst == DMA_MBURST_INC16)\n        {\n          status = HAL_ERROR;\n        }\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /* Memory Data size equal to Word */\n  else\n  {\n    switch (hdma->Init.FIFOThreshold)\n    {\n      case DMA_FIFO_THRESHOLD_1QUARTERFULL:\n      case DMA_FIFO_THRESHOLD_HALFFULL:\n      case DMA_FIFO_THRESHOLD_3QUARTERSFULL:\n        status = HAL_ERROR;\n        break;\n\n      case DMA_FIFO_THRESHOLD_FULL:\n        if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1)\n        {\n          status = HAL_ERROR;\n        }\n    break;\n\n      default:\n        break;\n    }\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Updates the DMA handle with the DMAMUX  channel and status mask depending on stream number\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nstatic void DMA_CalcDMAMUXChannelBaseAndMask(DMA_HandleTypeDef *hdma)\n{\n  uint32_t stream_number;\n  uint32_t stream_baseaddress = (uint32_t)((uint32_t*)hdma->Instance);\n\n  if(IS_BDMA_CHANNEL_DMAMUX_INSTANCE(hdma->Instance) != 0U)\n  {\n    /* BDMA Channels are connected to DMAMUX2 channels */\n    stream_number = (((uint32_t)((uint32_t*)hdma->Instance) & 0xFFU) - 8U) / 20U;\n    hdma->DMAmuxChannel = (DMAMUX_Channel_TypeDef *)((uint32_t)(((uint32_t)DMAMUX2_Channel0) + (stream_number * 4U)));\n    hdma->DMAmuxChannelStatus = DMAMUX2_ChannelStatus;\n    hdma->DMAmuxChannelStatusMask = 1UL << (stream_number & 0x1FU);\n  }\n  else\n  {\n    /* DMA1/DMA2 Streams are connected to DMAMUX1 channels */\n    stream_number = (((uint32_t)((uint32_t*)hdma->Instance) & 0xFFU) - 16U) / 24U;\n\n    if((stream_baseaddress <= ((uint32_t)DMA2_Stream7) ) && \\\n       (stream_baseaddress >= ((uint32_t)DMA2_Stream0)))\n    {\n      stream_number += 8U;\n    }\n    hdma->DMAmuxChannel = (DMAMUX_Channel_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_Channel0) + (stream_number * 4U)));\n    hdma->DMAmuxChannelStatus = DMAMUX1_ChannelStatus;\n    hdma->DMAmuxChannelStatusMask = 1UL << (stream_number & 0x1FU);\n  }\n}\n\n/**\n  * @brief  Updates the DMA handle with the DMAMUX  request generator params\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nstatic void DMA_CalcDMAMUXRequestGenBaseAndMask(DMA_HandleTypeDef *hdma)\n{\n  uint32_t request =  hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID;\n\n  if((request >= DMA_REQUEST_GENERATOR0) && (request <= DMA_REQUEST_GENERATOR7))\n  {\n    if(IS_BDMA_CHANNEL_DMAMUX_INSTANCE(hdma->Instance) != 0U)\n    {\n      /* BDMA Channels are connected to DMAMUX2 request generator blocks */\n      hdma->DMAmuxRequestGen = (DMAMUX_RequestGen_TypeDef *)((uint32_t)(((uint32_t)DMAMUX2_RequestGenerator0) + ((request - 1U) * 4U)));\n\n      hdma->DMAmuxRequestGenStatus = DMAMUX2_RequestGenStatus;\n    }\n    else\n    {\n      /* DMA1 and DMA2 Streams use DMAMUX1 request generator blocks */\n      hdma->DMAmuxRequestGen = (DMAMUX_RequestGen_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_RequestGenerator0) + ((request - 1U) * 4U)));\n\n      hdma->DMAmuxRequestGenStatus = DMAMUX1_RequestGenStatus;\n    }\n\n    hdma->DMAmuxRequestGenStatusMask = 1UL << (request - 1U);\n  }\n}\n\n/**\n  * @}\n  */\n\n#endif /* HAL_DMA_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_dma_ex.c\n  * @author  MCD Application Team\n  * @brief   DMA Extension HAL module driver\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the DMA Extension peripheral:\n  *           + Extended features functions\n  *\n  @verbatim\n  ==============================================================================\n                        ##### How to use this driver #####\n  ==============================================================================\n  [..]\n  The DMA Extension HAL driver can be used as follows:\n   (+) Start a multi buffer transfer using the HAL_DMA_MultiBufferStart() function\n       for polling mode or HAL_DMA_MultiBufferStart_IT() for interrupt mode.\n\n   (+) Configure the DMA_MUX Synchronization Block using HAL_DMAEx_ConfigMuxSync function.\n   (+) Configure the DMA_MUX Request Generator Block using HAL_DMAEx_ConfigMuxRequestGenerator function.\n       Functions HAL_DMAEx_EnableMuxRequestGenerator and HAL_DMAEx_DisableMuxRequestGenerator can then be used\n       to respectively enable/disable the request generator.\n\n   (+) To handle the DMAMUX Interrupts, the function  HAL_DMAEx_MUX_IRQHandler should be called from\n       the DMAMUX IRQ handler i.e DMAMUX1_OVR_IRQHandler or DMAMUX2_OVR_IRQHandler .\n       As only one interrupt line is available for all DMAMUX channels and request generators , HAL_DMA_MUX_IRQHandler should be\n       called with, as parameter, the appropriate DMA handle as many as used DMAs in the user project\n      (exception done if a given DMA is not using the DMAMUX SYNC block neither a request generator)\n\n     -@-  In Memory-to-Memory transfer mode, Multi (Double) Buffer mode is not allowed.\n     -@-  When Multi (Double) Buffer mode is enabled, the transfer is circular by default.\n     -@-  In Multi (Double) buffer mode, it is possible to update the base address for\n          the AHB memory port on the fly (DMA_SxM0AR or DMA_SxM1AR) when the stream is enabled.\n     -@-  Multi (Double) buffer mode is possible with DMA and BDMA instances.\n\n  @endverbatim\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup DMAEx DMAEx\n  * @brief DMA Extended HAL module driver\n  * @{\n  */\n\n#ifdef HAL_DMA_MODULE_ENABLED\n\n/* Private types -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private Constants ---------------------------------------------------------*/\n/* Private macros ------------------------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n/** @addtogroup DMAEx_Private_Functions\n  * @{\n  */\n\nstatic void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\n\n/**\n  * @}\n  */\n\n/* Exported functions ---------------------------------------------------------*/\n\n/** @addtogroup DMAEx_Exported_Functions\n  * @{\n  */\n\n\n/** @addtogroup DMAEx_Exported_Functions_Group1\n  *\n@verbatim\n ===============================================================================\n                #####  Extended features functions  #####\n ===============================================================================\n    [..]  This section provides functions allowing to:\n      (+) Configure the source, destination address and data length and\n          Start MultiBuffer DMA transfer\n      (+) Configure the source, destination address and data length and\n          Start MultiBuffer DMA transfer with interrupt\n      (+) Change on the fly the memory0 or memory1 address.\n      (+) Configure the DMA_MUX Synchronization Block using HAL_DMAEx_ConfigMuxSync function.\n      (+) Configure the DMA_MUX Request Generator Block using HAL_DMAEx_ConfigMuxRequestGenerator function.\n      (+) Functions HAL_DMAEx_EnableMuxRequestGenerator and HAL_DMAEx_DisableMuxRequestGenerator can then be used\n          to respectively enable/disable the request generator.\n      (+) Handle DMAMUX interrupts using HAL_DMAEx_MUX_IRQHandler : should be called from\n          the DMAMUX IRQ handler i.e DMAMUX1_OVR_IRQHandler or DMAMUX2_OVR_IRQHandler\n\n@endverbatim\n  * @{\n  */\n\n\n/**\n  * @brief  Starts the multi_buffer DMA Transfer.\n  * @param  hdma      : pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  SrcAddress: The source memory Buffer address\n  * @param  DstAddress: The destination memory Buffer address\n  * @param  SecondMemAddress: The second memory Buffer address in case of multi buffer Transfer\n  * @param  DataLength: The length of data to be transferred from source to destination\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  __IO uint32_t *ifcRegister_Base; /* DMA Stream Interrupt Clear register */\n\n  /* Check the parameters */\n  assert_param(IS_DMA_BUFFER_SIZE(DataLength));\n  assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance));\n\n  /* Memory-to-memory transfer not supported in double buffering mode */\n  if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY)\n  {\n    hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;\n    status = HAL_ERROR;\n  }\n  else\n  {\n    /* Process Locked */\n    __HAL_LOCK(hdma);\n\n    if(HAL_DMA_STATE_READY == hdma->State)\n    {\n      /* Change DMA peripheral state */\n      hdma->State = HAL_DMA_STATE_BUSY;\n\n      /* Initialize the error code */\n      hdma->ErrorCode = HAL_DMA_ERROR_NONE;\n\n      if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n      {\n        /* Enable the Double buffer mode */\n        ((DMA_Stream_TypeDef   *)hdma->Instance)->CR |= DMA_SxCR_DBM;\n\n        /* Configure DMA Stream destination address */\n        ((DMA_Stream_TypeDef   *)hdma->Instance)->M1AR = SecondMemAddress;\n\n        /* Calculate the interrupt clear flag register (IFCR) base address  */\n        ifcRegister_Base = (uint32_t *)((uint32_t)(hdma->StreamBaseAddress + 8U));\n\n        /* Clear all flags */\n        *ifcRegister_Base = 0x3FUL << (hdma->StreamIndex & 0x1FU);\n      }\n      else /* BDMA instance(s) */\n      {\n        /* Enable the Double buffer mode */\n        ((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR |= (BDMA_CCR_DBM | BDMA_CCR_CIRC);\n\n        /* Configure DMA Stream destination address */\n        ((BDMA_Channel_TypeDef   *)hdma->Instance)->CM1AR = SecondMemAddress;\n\n        /* Calculate the interrupt clear flag register (IFCR) base address  */\n        ifcRegister_Base = (uint32_t *)((uint32_t)(hdma->StreamBaseAddress + 4U));\n\n        /* Clear all flags */\n        *ifcRegister_Base = (BDMA_ISR_GIF0) << (hdma->StreamIndex & 0x1FU);\n      }\n\n      if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n      {\n        /* Configure the source, destination address and the data length */\n        DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength);\n\n        /* Clear the DMAMUX synchro overrun flag */\n        hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n        if(hdma->DMAmuxRequestGen != 0U)\n        {\n          /* Clear the DMAMUX request generator overrun flag */\n          hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n        }\n      }\n\n      /* Enable the peripheral */\n      __HAL_DMA_ENABLE(hdma);\n    }\n    else\n    {\n      /* Set the error code to busy */\n      hdma->ErrorCode = HAL_DMA_ERROR_BUSY;\n\n      /* Return error status */\n      status = HAL_ERROR;\n    }\n  }\n  return status;\n}\n\n/**\n  * @brief  Starts the multi_buffer DMA Transfer with interrupt enabled.\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  SrcAddress: The source memory Buffer address\n  * @param  DstAddress: The destination memory Buffer address\n  * @param  SecondMemAddress: The second memory Buffer address in case of multi buffer Transfer\n  * @param  DataLength: The length of data to be transferred from source to destination\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  __IO uint32_t *ifcRegister_Base; /* DMA Stream Interrupt Clear register */\n\n  /* Check the parameters */\n  assert_param(IS_DMA_BUFFER_SIZE(DataLength));\n  assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance));\n\n  /* Memory-to-memory transfer not supported in double buffering mode */\n  if(hdma->Init.Direction == DMA_MEMORY_TO_MEMORY)\n  {\n    hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hdma);\n\n  if(HAL_DMA_STATE_READY == hdma->State)\n  {\n    /* Change DMA peripheral state */\n    hdma->State = HAL_DMA_STATE_BUSY;\n\n    /* Initialize the error code */\n    hdma->ErrorCode = HAL_DMA_ERROR_NONE;\n\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      /* Enable the Double buffer mode */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->CR |= DMA_SxCR_DBM;\n\n      /* Configure DMA Stream destination address */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->M1AR = SecondMemAddress;\n\n      /* Calculate the interrupt clear flag register (IFCR) base address  */\n      ifcRegister_Base = (uint32_t *)((uint32_t)(hdma->StreamBaseAddress + 8U));\n\n      /* Clear all flags */\n      *ifcRegister_Base = 0x3FUL << (hdma->StreamIndex & 0x1FU);\n    }\n    else /* BDMA instance(s) */\n    {\n      /* Enable the Double buffer mode */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR |= (BDMA_CCR_DBM | BDMA_CCR_CIRC);\n\n      /* Configure DMA Stream destination address */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CM1AR = SecondMemAddress;\n\n      /* Calculate the interrupt clear flag register (IFCR) base address  */\n      ifcRegister_Base = (uint32_t *)((uint32_t)(hdma->StreamBaseAddress + 4U));\n\n      /* Clear all flags */\n      *ifcRegister_Base = (BDMA_ISR_GIF0) << (hdma->StreamIndex & 0x1FU);\n    }\n\n    /* Configure the source, destination address and the data length */\n    DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength);\n\n    if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n    {\n      /* Clear the DMAMUX synchro overrun flag */\n      hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n      if(hdma->DMAmuxRequestGen != 0U)\n      {\n        /* Clear the DMAMUX request generator overrun flag */\n        hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n      }\n    }\n\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      /* Enable Common interrupts*/\n      MODIFY_REG(((DMA_Stream_TypeDef   *)hdma->Instance)->CR, (DMA_IT_TC | DMA_IT_TE | DMA_IT_DME | DMA_IT_HT), (DMA_IT_TC | DMA_IT_TE | DMA_IT_DME));\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->FCR |= DMA_IT_FE;\n\n      if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))\n      {\n        /*Enable Half Transfer IT if corresponding Callback is set*/\n        ((DMA_Stream_TypeDef   *)hdma->Instance)->CR  |= DMA_IT_HT;\n      }\n    }\n    else /* BDMA instance(s) */\n    {\n      /* Enable Common interrupts*/\n      MODIFY_REG(((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR, (BDMA_CCR_TCIE | BDMA_CCR_HTIE | BDMA_CCR_TEIE), (BDMA_CCR_TCIE | BDMA_CCR_TEIE));\n\n      if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))\n      {\n        /*Enable Half Transfer IT if corresponding Callback is set*/\n        ((BDMA_Channel_TypeDef   *)hdma->Instance)->CCR  |= BDMA_CCR_HTIE;\n      }\n    }\n\n    if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */\n    {\n      /* Check if DMAMUX Synchronization is enabled*/\n      if((hdma->DMAmuxChannel->CCR & DMAMUX_CxCR_SE) != 0U)\n      {\n        /* Enable DMAMUX sync overrun IT*/\n        hdma->DMAmuxChannel->CCR |= DMAMUX_CxCR_SOIE;\n      }\n\n      if(hdma->DMAmuxRequestGen != 0U)\n      {\n        /* if using DMAMUX request generator, enable the DMAMUX request generator overrun IT*/\n        /* enable the request gen overrun IT*/\n        hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_OIE;\n      }\n    }\n\n    /* Enable the peripheral */\n    __HAL_DMA_ENABLE(hdma);\n  }\n  else\n  {\n    /* Set the error code to busy */\n    hdma->ErrorCode = HAL_DMA_ERROR_BUSY;\n\n    /* Return error status */\n    status = HAL_ERROR;\n  }\n  return status;\n}\n\n/**\n  * @brief  Change the memory0 or memory1 address on the fly.\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  Address:    The new address\n  * @param  memory:     the memory to be changed, This parameter can be one of\n  *                     the following values:\n  *                      MEMORY0 /\n  *                      MEMORY1\n  * @note   The MEMORY0 address can be changed only when the current transfer use\n  *         MEMORY1 and the MEMORY1 address can be changed only when the current\n  *         transfer use MEMORY0.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory)\n{\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    if(memory == MEMORY0)\n    {\n      /* change the memory0 address */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->M0AR = Address;\n    }\n    else\n    {\n      /* change the memory1 address */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->M1AR = Address;\n    }\n  }\n  else /* BDMA instance(s) */\n  {\n    if(memory == MEMORY0)\n    {\n      /* change the memory0 address */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CM0AR = Address;\n    }\n    else\n    {\n      /* change the memory1 address */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CM1AR = Address;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configure the DMAMUX synchronization parameters for a given DMA stream (instance).\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  pSyncConfig : pointer to HAL_DMA_MuxSyncConfigTypeDef : contains the DMAMUX synchronization parameters\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMAEx_ConfigMuxSync(DMA_HandleTypeDef *hdma, HAL_DMA_MuxSyncConfigTypeDef *pSyncConfig)\n{\n  uint32_t syncSignalID = 0;\n  uint32_t syncPolarity = 0;\n\n  /* Check the parameters */\n  assert_param(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance));\n  assert_param(IS_DMAMUX_SYNC_STATE(pSyncConfig->SyncEnable));\n  assert_param(IS_DMAMUX_SYNC_EVENT(pSyncConfig->EventEnable));\n  assert_param(IS_DMAMUX_SYNC_REQUEST_NUMBER(pSyncConfig->RequestNumber));\n\n  if(pSyncConfig->SyncEnable == ENABLE)\n  {\n    assert_param(IS_DMAMUX_SYNC_POLARITY(pSyncConfig->SyncPolarity));\n\n    if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n    {\n      assert_param(IS_DMA_DMAMUX_SYNC_SIGNAL_ID(pSyncConfig->SyncSignalID));\n    }\n    else\n    {\n      assert_param(IS_BDMA_DMAMUX_SYNC_SIGNAL_ID(pSyncConfig->SyncSignalID));\n    }\n    syncSignalID = pSyncConfig->SyncSignalID;\n    syncPolarity = pSyncConfig->SyncPolarity;\n  }\n\n  /*Check if the DMA state is ready */\n  if(hdma->State == HAL_DMA_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hdma);\n\n    /* Disable the synchronization and event generation before applying a new config */\n    CLEAR_BIT(hdma->DMAmuxChannel->CCR,(DMAMUX_CxCR_SE | DMAMUX_CxCR_EGE));\n\n    /* Set the new synchronization parameters (and keep the request ID filled during the Init)*/\n    MODIFY_REG( hdma->DMAmuxChannel->CCR, \\\n               (~DMAMUX_CxCR_DMAREQ_ID) , \\\n               (syncSignalID << DMAMUX_CxCR_SYNC_ID_Pos)       | \\\n               ((pSyncConfig->RequestNumber - 1U) << DMAMUX_CxCR_NBREQ_Pos) | \\\n               syncPolarity | ((uint32_t)pSyncConfig->SyncEnable << DMAMUX_CxCR_SE_Pos)    | \\\n               ((uint32_t)pSyncConfig->EventEnable << DMAMUX_CxCR_EGE_Pos));\n\n      /* Process Locked */\n    __HAL_UNLOCK(hdma);\n\n    return HAL_OK;\n  }\n  else\n  {\n    /* Set the error code to busy */\n    hdma->ErrorCode = HAL_DMA_ERROR_BUSY;\n\n    /* Return error status */\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Configure the DMAMUX request generator block used by the given DMA stream (instance).\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  pRequestGeneratorConfig : pointer to HAL_DMA_MuxRequestGeneratorConfigTypeDef :\n  *         contains the request generator parameters.\n  *\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMAEx_ConfigMuxRequestGenerator (DMA_HandleTypeDef *hdma, HAL_DMA_MuxRequestGeneratorConfigTypeDef *pRequestGeneratorConfig)\n{\n  HAL_StatusTypeDef status;\n  HAL_DMA_StateTypeDef temp_state = hdma->State;\n\n  /* Check the parameters */\n  assert_param(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance));\n\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    assert_param(IS_DMA_DMAMUX_REQUEST_GEN_SIGNAL_ID(pRequestGeneratorConfig->SignalID));\n  }\n  else\n  {\n    assert_param(IS_BDMA_DMAMUX_REQUEST_GEN_SIGNAL_ID(pRequestGeneratorConfig->SignalID));\n  }\n\n\n  assert_param(IS_DMAMUX_REQUEST_GEN_POLARITY(pRequestGeneratorConfig->Polarity));\n  assert_param(IS_DMAMUX_REQUEST_GEN_REQUEST_NUMBER(pRequestGeneratorConfig->RequestNumber));\n\n  /* check if the DMA state is ready\n     and DMA is using a DMAMUX request generator block\n  */\n  if(hdma->DMAmuxRequestGen == 0U)\n  {\n    /* Set the error code to busy */\n    hdma->ErrorCode = HAL_DMA_ERROR_PARAM;\n\n    /* error status */\n    status = HAL_ERROR;\n  }\n  else if(((hdma->DMAmuxRequestGen->RGCR & DMAMUX_RGxCR_GE) == 0U) && (temp_state == HAL_DMA_STATE_READY))\n  {\n    /* RequestGenerator must be disable prior to the configuration i.e GE bit is 0 */\n\n    /* Process Locked */\n    __HAL_LOCK(hdma);\n\n    /* Set the request generator new parameters */\n    hdma->DMAmuxRequestGen->RGCR = pRequestGeneratorConfig->SignalID | \\\n                                  ((pRequestGeneratorConfig->RequestNumber - 1U) << DMAMUX_RGxCR_GNBREQ_Pos)| \\\n                                  pRequestGeneratorConfig->Polarity;\n    /* Process Locked */\n    __HAL_UNLOCK(hdma);\n\n    return HAL_OK;\n  }\n  else\n  {\n    /* Set the error code to busy */\n    hdma->ErrorCode = HAL_DMA_ERROR_BUSY;\n\n    /* error status */\n    status = HAL_ERROR;\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Enable the DMAMUX request generator block used by the given DMA stream (instance).\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMAEx_EnableMuxRequestGenerator (DMA_HandleTypeDef *hdma)\n{\n  /* Check the parameters */\n  assert_param(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance));\n\n  /* check if the DMA state is ready\n     and DMA is using a DMAMUX request generator block */\n  if((hdma->State != HAL_DMA_STATE_RESET) && (hdma->DMAmuxRequestGen != 0U))\n  {\n    /* Enable the request generator*/\n    hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_GE;\n\n   return HAL_OK;\n }\n else\n {\n   return HAL_ERROR;\n }\n}\n\n/**\n  * @brief  Disable the DMAMUX request generator block used by the given DMA stream (instance).\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_DMAEx_DisableMuxRequestGenerator (DMA_HandleTypeDef *hdma)\n{\n  /* Check the parameters */\n  assert_param(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance));\n\n  /* check if the DMA state is ready\n     and DMA is using a DMAMUX request generator block */\n  if((hdma->State != HAL_DMA_STATE_RESET) && (hdma->DMAmuxRequestGen != 0U))\n  {\n    /* Disable the request generator*/\n    hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_GE;\n\n   return HAL_OK;\n }\n else\n {\n   return HAL_ERROR;\n }\n}\n\n/**\n  * @brief  Handles DMAMUX interrupt request.\n  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified DMA Stream.\n  * @retval None\n  */\nvoid HAL_DMAEx_MUX_IRQHandler(DMA_HandleTypeDef *hdma)\n{\n  /* Check for DMAMUX Synchronization overrun */\n  if((hdma->DMAmuxChannelStatus->CSR & hdma->DMAmuxChannelStatusMask) != 0U)\n  {\n    /* Disable the synchro overrun interrupt */\n    hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE;\n\n    /* Clear the DMAMUX synchro overrun flag */\n    hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask;\n\n    /* Update error code */\n    hdma->ErrorCode |= HAL_DMA_ERROR_SYNC;\n\n    if(hdma->XferErrorCallback != NULL)\n    {\n      /* Transfer error callback */\n      hdma->XferErrorCallback(hdma);\n    }\n  }\n\n  if(hdma->DMAmuxRequestGen != 0)\n  {\n   /* if using a DMAMUX request generator block Check for DMAMUX request generator overrun */\n    if((hdma->DMAmuxRequestGenStatus->RGSR & hdma->DMAmuxRequestGenStatusMask) != 0U)\n    {\n      /* Disable the request gen overrun interrupt */\n      hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE;\n\n      /* Clear the DMAMUX request generator overrun flag */\n      hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask;\n\n      /* Update error code */\n      hdma->ErrorCode |= HAL_DMA_ERROR_REQGEN;\n\n      if(hdma->XferErrorCallback != NULL)\n      {\n        /* Transfer error callback */\n        hdma->XferErrorCallback(hdma);\n      }\n    }\n  }\n}\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup DMAEx_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Set the DMA Transfer parameter.\n  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified DMA Stream.\n  * @param  SrcAddress: The source memory Buffer address\n  * @param  DstAddress: The destination memory Buffer address\n  * @param  DataLength: The length of data to be transferred from source to destination\n  * @retval HAL status\n  */\nstatic void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\n{\n  if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */\n  {\n    /* Configure DMA Stream data length */\n    ((DMA_Stream_TypeDef   *)hdma->Instance)->NDTR = DataLength;\n\n    /* Peripheral to Memory */\n    if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)\n    {\n      /* Configure DMA Stream destination address */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->PAR = DstAddress;\n\n      /* Configure DMA Stream source address */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->M0AR = SrcAddress;\n    }\n    /* Memory to Peripheral */\n    else\n    {\n      /* Configure DMA Stream source address */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->PAR = SrcAddress;\n\n      /* Configure DMA Stream destination address */\n      ((DMA_Stream_TypeDef   *)hdma->Instance)->M0AR = DstAddress;\n    }\n  }\n  else /* BDMA instance(s) */\n  {\n    /* Configure DMA Stream data length */\n    ((BDMA_Channel_TypeDef   *)hdma->Instance)->CNDTR = DataLength;\n\n    /* Peripheral to Memory */\n    if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)\n    {\n      /* Configure DMA Stream destination address */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CPAR = DstAddress;\n\n      /* Configure DMA Stream source address */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CM0AR = SrcAddress;\n    }\n    /* Memory to Peripheral */\n    else\n    {\n      /* Configure DMA Stream source address */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CPAR = SrcAddress;\n\n      /* Configure DMA Stream destination address */\n      ((BDMA_Channel_TypeDef   *)hdma->Instance)->CM0AR = DstAddress;\n    }\n  }\n}\n\n/**\n  * @}\n  */\n\n#endif /* HAL_DMA_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_exti.c\n  * @author  MCD Application Team\n  * @brief   EXTI HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the General Purpose Input/Output (EXTI) peripheral:\n  *           + Initialization and de-initialization functions\n  *           + IO operation functions\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                    ##### EXTI Peripheral features #####\n  ==============================================================================\n  [..]\n    (+) Each Exti line can be configured within this driver.\n\n    (+) Exti line can be configured in 3 different modes\n        (++) Interrupt (CORE1 or CORE2 in case of dual core line )\n        (++) Event (CORE1 or CORE2 in case of dual core line )\n        (++) a combination of the previous\n\n    (+) Configurable Exti lines can be configured with 3 different triggers\n        (++) Rising\n        (++) Falling\n        (++) Both of them\n\n    (+) When set in interrupt mode, configurable Exti lines have two diffenrents\n        interrupt pending registers which allow to distinguish which transition\n        occurs:\n        (++) Rising edge pending interrupt\n        (++) Falling\n\n    (+) Exti lines 0 to 15 are linked to gpio pin number 0 to 15. Gpio port can\n        be selected through multiplexer.\n\n    (+) PendClearSource used to set the D3 Smart Run Domain autoamtic pend clear source.\n        It is applicable for line with wkaeup target is Any (CPU1 , CPU2 and D3 smart run domain).\n        Value can be one of the following:\n        (++)  EXTI_D3_PENDCLR_SRC_NONE : no pend clear source is selected :\n              In this case corresponding bit of D2PMRx register is set to 0\n                (+++) On a configurable Line : the D3 domain wakeup signal is\n                      automatically cleared after after the Delay + Rising Edge detect\n                (+++) On a direct Line : the D3 domain wakeup signal is\n                      cleared after the direct event input signal is cleared\n\n        (++)  EXTI_D3_PENDCLR_SRC_DMACH6 : no pend clear source is selected :\n              In this case corresponding bit of D2PMRx register is set to 1\n              and corresponding bits(2) of D3PCRxL/H is set to b00 :\n                DMA ch6 event selected as D3 domain pendclear source\n\n        (++)  EXTI_D3_PENDCLR_SRC_DMACH7 : no pend clear source is selected :\n              In this case corresponding bit of D2PMRx register is set to 1\n              and corresponding bits(2) of D3PCRxL/H is set to b01 :\n                DMA ch7 event selected as D3 domain pendclear source\n\n        (++)  EXTI_D3_PENDCLR_SRC_LPTIM4 : no pend clear source is selected :\n              In this case corresponding bit of D2PMRx register is set to 1\n              and corresponding bits(2) of D3PCRxL/H is set to b10 :\n                LPTIM4 out selected as D3 domain pendclear source\n\n        (++)  EXTI_D3_PENDCLR_SRC_LPTIM5 : no pend clear source is selected :\n              In this case corresponding bit of D2PMRx register is set to 1\n              and corresponding bits(2) of D3PCRxL/H is set to b11 :\n                LPTIM5 out selected as D3 domain pendclear source\n\n\n                     ##### How to use this driver #####\n  ==============================================================================\n  [..]\n\n    (#) Configure the EXTI line using HAL_EXTI_SetConfigLine().\n        (++) Choose the interrupt line number by setting \"Line\" member from\n             EXTI_ConfigTypeDef structure.\n        (++) Configure the interrupt and/or event mode using \"Mode\" member from\n             EXTI_ConfigTypeDef structure.\n        (++) For configurable lines, configure rising and/or falling trigger\n             \"Trigger\" member from EXTI_ConfigTypeDef structure.\n        (++) For Exti lines linked to gpio, choose gpio port using \"GPIOSel\"\n             member from GPIO_InitTypeDef structure.\n        (++) For Exti lines with wkaeup target is Any (CPU1 , CPU2 and D3 smart run domain),\n             choose gpio D3 PendClearSource using PendClearSource\n             member from EXTI_PendClear_Source structure.\n\n    (#) Get current Exti configuration of a dedicated line using\n        HAL_EXTI_GetConfigLine().\n        (++) Provide exiting handle as parameter.\n        (++) Provide pointer on EXTI_ConfigTypeDef structure as second parameter.\n\n    (#) Clear Exti configuration of a dedicated line using HAL_EXTI_GetConfigLine().\n        (++) Provide exiting handle as parameter.\n\n    (#) Register callback to treat Exti interrupts using HAL_EXTI_RegisterCallback().\n        (++) Provide exiting handle as first parameter.\n        (++) Provide which callback will be registered using one value from\n             EXTI_CallbackIDTypeDef.\n        (++) Provide callback function pointer.\n\n    (#) Get interrupt pending bit using HAL_EXTI_GetPending().\n\n    (#) Clear interrupt pending bit using HAL_EXTI_GetPending().\n\n    (#) Generate software interrupt using HAL_EXTI_GenerateSWI().\n\n  @endverbatim\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @addtogroup EXTI\n  * @{\n  */\n\n#ifdef HAL_EXTI_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private defines ------------------------------------------------------------*/\n/** @defgroup EXTI_Private_Constants EXTI Private Constants\n  * @{\n  */\n#define EXTI_MODE_OFFSET                    0x04U   /* 0x10: offset between CPU IMR/EMR registers */\n#define EXTI_CONFIG_OFFSET                  0x08U   /* 0x20: offset between CPU Rising/Falling configuration registers */\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n\n/** @addtogroup EXTI_Exported_Functions\n  * @{\n  */\n\n/** @addtogroup EXTI_Exported_Functions_Group1\n *  @brief    Configuration functions\n *\n@verbatim\n ===============================================================================\n              ##### Configuration functions #####\n ===============================================================================\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Set configuration of a dedicated Exti line.\n  * @param  hexti Exti handle.\n  * @param  pExtiConfig Pointer on EXTI configuration to be set.\n  * @retval HAL Status.\n  */\nHAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)\n{\n  __IO uint32_t *regaddr;\n  uint32_t regval;\n  uint32_t linepos;\n  uint32_t maskline;\n  uint32_t offset;\n  uint32_t pcrlinepos;\n\n  /* Check null pointer */\n  if ((hexti == NULL) || (pExtiConfig == NULL))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_EXTI_LINE(pExtiConfig->Line));\n  assert_param(IS_EXTI_MODE(pExtiConfig->Mode));\n\n  /* Assign line number to handle */\n  hexti->Line = pExtiConfig->Line;\n\n  /* compute line register offset and line mask */\n  offset = ((pExtiConfig->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);\n  linepos = (pExtiConfig->Line & EXTI_PIN_MASK);\n  maskline = (1UL << linepos);\n\n  /* Configure triggers for configurable lines */\n  if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00U)\n  {\n    assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));\n\n    /* Configure rising trigger */\n    regaddr = (__IO uint32_t *)(&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));\n    regval = *regaddr;\n\n    /* Mask or set line */\n    if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00U)\n    {\n      regval |= maskline;\n    }\n    else\n    {\n      regval &= ~maskline;\n    }\n\n    /* Store rising trigger mode */\n    *regaddr = regval;\n\n    /* Configure falling trigger */\n    regaddr = (__IO uint32_t *)(&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));\n    regval = *regaddr;\n\n    /* Mask or set line */\n    if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00U)\n    {\n      regval |= maskline;\n    }\n    else\n    {\n      regval &= ~maskline;\n    }\n\n    /* Store falling trigger mode */\n    *regaddr = regval;\n\n    /* Configure gpio port selection in case of gpio exti line */\n    if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)\n    {\n      assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel));\n      assert_param(IS_EXTI_GPIO_PIN(linepos));\n\n      regval = SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];\n      regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03U)));\n      regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03U)));\n      SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL] = regval;\n    }\n  }\n\n  /* Configure interrupt mode : read current mode */\n  regaddr = (__IO uint32_t *)(&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  /* Mask or set line */\n  if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00U)\n  {\n    regval |= maskline;\n  }\n  else\n  {\n    regval &= ~maskline;\n  }\n\n  /* Store interrupt mode */\n  *regaddr = regval;\n\n  /* The event mode cannot be configured if the line does not support it */\n  assert_param(((pExtiConfig->Line & EXTI_EVENT) == EXTI_EVENT) || ((pExtiConfig->Mode & EXTI_MODE_EVENT) != EXTI_MODE_EVENT));\n\n  /* Configure event mode : read current mode */\n  regaddr = (__IO uint32_t *)(&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  /* Mask or set line */\n  if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00U)\n  {\n    regval |= maskline;\n  }\n  else\n  {\n    regval &= ~maskline;\n  }\n\n  /* Store event mode */\n  *regaddr = regval;\n\n#if defined (DUAL_CORE)\n  /* Configure interrupt mode for Core2 : read current mode */\n  regaddr = (__IO uint32_t *)(&EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  /* Mask or set line */\n  if ((pExtiConfig->Mode & EXTI_MODE_CORE2_INTERRUPT) != 0x00U)\n  {\n    regval |= maskline;\n  }\n  else\n  {\n    regval &= ~maskline;\n  }\n\n  /* Store interrupt mode */\n  *regaddr = regval;\n\n  /* The event mode cannot be configured if the line does not support it */\n  assert_param(((pExtiConfig->Line & EXTI_EVENT) == EXTI_EVENT) || ((pExtiConfig->Mode & EXTI_MODE_CORE2_EVENT) != EXTI_MODE_CORE2_EVENT));\n\n  /* Configure event mode : read current mode */\n  regaddr = (__IO uint32_t *)(&EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  /* Mask or set line */\n  if ((pExtiConfig->Mode & EXTI_MODE_CORE2_EVENT) != 0x00U)\n  {\n    regval |= maskline;\n  }\n  else\n  {\n    regval &= ~maskline;\n  }\n\n  /* Store event mode */\n  *regaddr = regval;\n#endif /* DUAL_CORE */\n\n  /* Configure the D3 PendClear source in case of Wakeup target is Any */\n  if ((pExtiConfig->Line & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL)\n  {\n    assert_param(IS_EXTI_D3_PENDCLR_SRC(pExtiConfig->PendClearSource));\n\n    /*Calc the PMR register address for the given line */\n    regaddr = (__IO uint32_t *)(&EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));\n    regval = *regaddr;\n\n    if(pExtiConfig->PendClearSource == EXTI_D3_PENDCLR_SRC_NONE)\n    {\n      /* Clear D3PMRx register for the given line */\n      regval &= ~maskline;\n      /* Store D3PMRx register value */\n      *regaddr = regval;\n    }\n    else\n    {\n      /* Set D3PMRx register to 1 for the given line */\n      regval |= maskline;\n      /* Store D3PMRx register value */\n      *regaddr = regval;\n\n      if(linepos < 16UL)\n      {\n        regaddr = (__IO uint32_t *)(&EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));\n        pcrlinepos = 1UL << linepos;\n      }\n      else\n      {\n        regaddr = (__IO uint32_t *)(&EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));\n        pcrlinepos = 1UL << (linepos - 16UL);\n      }\n\n      regval = (*regaddr & (~(pcrlinepos * pcrlinepos * 3UL))) | (pcrlinepos * pcrlinepos * (pExtiConfig->PendClearSource - 1UL));\n      *regaddr = regval;\n    }\n  }\n\n  return HAL_OK;\n}\n\n\n/**\n  * @brief  Get configuration of a dedicated Exti line.\n  * @param  hexti Exti handle.\n  * @param  pExtiConfig Pointer on structure to store Exti configuration.\n  * @retval HAL Status.\n  */\nHAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)\n{\n  __IO uint32_t *regaddr;\n  uint32_t regval;\n  uint32_t linepos;\n  uint32_t maskline;\n  uint32_t offset;\n  uint32_t pcrlinepos;\n\n  /* Check null pointer */\n  if ((hexti == NULL) || (pExtiConfig == NULL))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameter */\n  assert_param(IS_EXTI_LINE(hexti->Line));\n\n  /* Store handle line number to configuration structure */\n  pExtiConfig->Line = hexti->Line;\n\n  /* compute line register offset and line mask */\n  offset = ((pExtiConfig->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);\n  linepos = (pExtiConfig->Line & EXTI_PIN_MASK);\n  maskline = (1UL << linepos);\n\n  /* 1] Get core mode : interrupt */\n  regaddr = (__IO uint32_t *)(&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  pExtiConfig->Mode = EXTI_MODE_NONE;\n\n  /* Check if selected line is enable */\n  if ((regval & maskline) != 0x00U)\n  {\n    pExtiConfig->Mode = EXTI_MODE_INTERRUPT;\n  }\n\n  /* Get event mode */\n  regaddr = (__IO uint32_t *)(&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  /* Check if selected line is enable */\n  if ((regval & maskline) != 0x00U)\n  {\n    pExtiConfig->Mode |= EXTI_MODE_EVENT;\n  }\n#if defined (DUAL_CORE)\n  regaddr = (__IO uint32_t *)(&EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  /* Check if selected line is enable */\n  if ((regval & maskline) != 0x00U)\n  {\n    pExtiConfig->Mode = EXTI_MODE_CORE2_INTERRUPT;\n  }\n\n  /* Get event mode */\n  regaddr = (__IO uint32_t *)(&EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = *regaddr;\n\n  /* Check if selected line is enable */\n  if ((regval & maskline) != 0x00U)\n  {\n    pExtiConfig->Mode |= EXTI_MODE_CORE2_EVENT;\n  }\n#endif /*DUAL_CORE*/\n\n  /* Get default Trigger and GPIOSel configuration */\n  pExtiConfig->Trigger = EXTI_TRIGGER_NONE;\n  pExtiConfig->GPIOSel = 0x00U;\n\n  /* 2] Get trigger for configurable lines : rising */\n  if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00U)\n  {\n    regaddr = (__IO uint32_t *)(&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));\n    regval = *regaddr;\n\n    /* Check if configuration of selected line is enable */\n    if ((regval & maskline) != 0x00U)\n    {\n      pExtiConfig->Trigger = EXTI_TRIGGER_RISING;\n    }\n\n    /* Get falling configuration */\n    regaddr = (__IO uint32_t *)(&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));\n    regval = *regaddr;\n\n    /* Check if configuration of selected line is enable */\n    if ((regval & maskline) != 0x00U)\n    {\n      pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING;\n    }\n\n    /* Get Gpio port selection for gpio lines */\n    if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)\n    {\n      assert_param(IS_EXTI_GPIO_PIN(linepos));\n\n      regval = SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];\n      pExtiConfig->GPIOSel = ((regval << (SYSCFG_EXTICR1_EXTI1_Pos * (3UL - (linepos & 0x03UL)))) >> 24U);\n    }\n  }\n\n  /* Get default Pend Clear Source */\n  pExtiConfig->PendClearSource = EXTI_D3_PENDCLR_SRC_NONE;\n\n  /* 3] Get D3 Pend Clear source */\n  if ((pExtiConfig->Line & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL)\n  {\n    regaddr = (__IO uint32_t *)(&EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));\n    if(((*regaddr) & linepos) != 0UL)\n    {\n      /* if wakeup target is any and PMR set, the read pend clear source from  D3PCRxL/H */\n      if(linepos < 16UL)\n      {\n        regaddr = (__IO uint32_t *)(&EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));\n        pcrlinepos = 1UL << linepos;\n      }\n      else\n      {\n        regaddr = (__IO uint32_t *)(&EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));\n        pcrlinepos = 1UL << (linepos - 16UL);\n      }\n\n      pExtiConfig->PendClearSource = 1UL + ((*regaddr & (pcrlinepos * pcrlinepos * 3UL)) / (pcrlinepos * pcrlinepos));\n    }\n  }\n\n  return HAL_OK;\n}\n\n\n/**\n  * @brief  Clear whole configuration of a dedicated Exti line.\n  * @param  hexti Exti handle.\n  * @retval HAL Status.\n  */\nHAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)\n{\n  __IO uint32_t *regaddr;\n  uint32_t regval;\n  uint32_t linepos;\n  uint32_t maskline;\n  uint32_t offset;\n  uint32_t pcrlinepos;\n\n  /* Check null pointer */\n  if (hexti == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameter */\n  assert_param(IS_EXTI_LINE(hexti->Line));\n\n  /* compute line register offset and line mask */\n  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);\n  linepos = (hexti->Line & EXTI_PIN_MASK);\n  maskline = (1UL << linepos);\n\n  /* 1] Clear interrupt mode */\n  regaddr = (__IO uint32_t *)(&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = (*regaddr & ~maskline);\n  *regaddr = regval;\n\n  /* 2] Clear event mode */\n  regaddr = (__IO uint32_t *)(&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = (*regaddr & ~maskline);\n  *regaddr = regval;\n\n#if defined (DUAL_CORE)\n    /* 1] Clear CM4 interrupt mode */\n  regaddr = (__IO uint32_t *)(&EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = (*regaddr & ~maskline);\n  *regaddr = regval;\n\n  /* 2] Clear CM4 event mode */\n  regaddr = (__IO uint32_t *)(&EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));\n  regval = (*regaddr & ~maskline);\n  *regaddr = regval;\n#endif /* DUAL_CORE */\n\n  /* 3] Clear triggers in case of configurable lines */\n  if ((hexti->Line & EXTI_CONFIG) != 0x00U)\n  {\n    regaddr = (__IO uint32_t *)(&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));\n    regval = (*regaddr & ~maskline);\n    *regaddr = regval;\n\n    regaddr = (__IO uint32_t *)(&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));\n    regval = (*regaddr & ~maskline);\n    *regaddr = regval;\n\n    /* Get Gpio port selection for gpio lines */\n    if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO)\n    {\n      assert_param(IS_EXTI_GPIO_PIN(linepos));\n\n      regval = SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];\n      regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03UL)));\n      SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL] = regval;\n    }\n  }\n\n  /* 4] Clear D3 Config lines */\n  if ((hexti->Line & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL)\n  {\n    regaddr = (__IO uint32_t *)(&EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));\n    *regaddr = (*regaddr & ~maskline);\n\n    if(linepos < 16UL)\n    {\n      regaddr = (__IO uint32_t *)(&EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));\n      pcrlinepos = 1UL << linepos;\n    }\n    else\n    {\n      regaddr = (__IO uint32_t *)(&EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));\n      pcrlinepos = 1UL << (linepos - 16UL);\n    }\n\n    /*Clear D3 PendClear source */\n    *regaddr &= (~(pcrlinepos * pcrlinepos * 3UL));\n  }\n\n  return HAL_OK;\n}\n\n\n/**\n  * @brief  Register callback for a dedicated Exti line.\n  * @param  hexti Exti handle.\n  * @param  CallbackID User callback identifier.\n  *         This parameter can be one of @arg @ref EXTI_CallbackIDTypeDef values.\n  * @param  pPendingCbfn function pointer to be stored as callback.\n  * @retval HAL Status.\n  */\nHAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void))\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check null pointer */\n  if (hexti == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  switch (CallbackID)\n  {\n    case  HAL_EXTI_COMMON_CB_ID:\n      hexti->PendingCallback = pPendingCbfn;\n      break;\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  return status;\n}\n\n\n/**\n  * @brief  Store line number as handle private field.\n  * @param  hexti Exti handle.\n  * @param  ExtiLine Exti line number.\n  *         This parameter can be from 0 to @ref EXTI_LINE_NB.\n  * @retval HAL Status.\n  */\nHAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine)\n{\n  /* Check the parameters */\n  assert_param(IS_EXTI_LINE(ExtiLine));\n\n  /* Check null pointer */\n  if (hexti == NULL)\n  {\n    return HAL_ERROR;\n  }\n  else\n  {\n    /* Store line number as handle private field */\n    hexti->Line = ExtiLine;\n\n    return HAL_OK;\n  }\n}\n\n\n/**\n  * @}\n  */\n\n/** @addtogroup EXTI_Exported_Functions_Group2\n *  @brief EXTI IO functions.\n *\n@verbatim\n ===============================================================================\n                       ##### IO operation functions #####\n ===============================================================================\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Handle EXTI interrupt request.\n  * @param  hexti Exti handle.\n  * @retval none.\n  */\nvoid HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)\n{\n  __IO uint32_t *regaddr;\n  uint32_t regval;\n  uint32_t maskline;\n  uint32_t offset;\n\n  /* Compute line register offset and line mask */\n  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);\n  maskline = (1UL << (hexti->Line & EXTI_PIN_MASK));\n\n#if defined(DUAL_CORE)\n  if (HAL_GetCurrentCPUID() == CM7_CPUID)\n  {\n    /* Get pending register address */\n    regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));\n  }\n  else /* Cortex-M4*/\n  {\n    /* Get pending register address */\n    regaddr = (__IO uint32_t *)(&EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));\n  }\n#else\n  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));\n#endif /* DUAL_CORE */\n\n  /* Get pending bit  */\n  regval = (*regaddr & maskline);\n\n  if (regval != 0x00U)\n  {\n    /* Clear pending bit */\n    *regaddr = maskline;\n\n    /* Call callback */\n    if (hexti->PendingCallback != NULL)\n    {\n      hexti->PendingCallback();\n    }\n  }\n}\n\n\n/**\n  * @brief  Get interrupt pending bit of a dedicated line.\n  * @param  hexti Exti handle.\n  * @param  Edge Specify which pending edge as to be checked.\n  *         This parameter can be one of the following values:\n  *           @arg @ref EXTI_TRIGGER_RISING_FALLING\n  *         This parameter is kept for compatibility with other series.\n  * @retval 1 if interrupt is pending else 0.\n  */\nuint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)\n{\n  __IO uint32_t *regaddr;\n  uint32_t regval;\n  uint32_t linepos;\n  uint32_t maskline;\n  uint32_t offset;\n\n  /* Check parameters */\n  assert_param(IS_EXTI_LINE(hexti->Line));\n  assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));\n  assert_param(IS_EXTI_PENDING_EDGE(Edge));\n\n  /* compute line register offset and line mask */\n  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);\n  linepos = (hexti->Line & EXTI_PIN_MASK);\n  maskline = (1UL << linepos);\n\n#if defined(DUAL_CORE)\n  if (HAL_GetCurrentCPUID() == CM7_CPUID)\n  {\n    /* Get pending register address */\n    regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));\n  }\n  else /* Cortex-M4 */\n  {\n    /* Get pending register address */\n    regaddr = (__IO uint32_t *)(&EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));\n  }\n#else\n  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));\n#endif /* DUAL_CORE */\n\n  /* return 1 if bit is set else 0 */\n  regval = ((*regaddr & maskline) >> linepos);\n  return regval;\n}\n\n\n/**\n  * @brief  Clear interrupt pending bit of a dedicated line.\n  * @param  hexti Exti handle.\n  * @param  Edge Specify which pending edge as to be clear.\n  *         This parameter can be one of the following values:\n  *           @arg @ref EXTI_TRIGGER_RISING_FALLING\n  *         This parameter is kept for compatibility with other series.\n  * @retval None.\n  */\nvoid HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)\n{\n  __IO uint32_t *regaddr;\n  uint32_t maskline;\n  uint32_t offset;\n\n  /* Check parameters */\n  assert_param(IS_EXTI_LINE(hexti->Line));\n  assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));\n  assert_param(IS_EXTI_PENDING_EDGE(Edge));\n\n  /* compute line register offset and line mask */\n  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);\n  maskline = (1UL << (hexti->Line & EXTI_PIN_MASK));\n\n#if defined(DUAL_CORE)\n  if (HAL_GetCurrentCPUID() == CM7_CPUID)\n  {\n    /* Get pending register address */\n    regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));\n  }\n  else /* Cortex-M4 */\n  {\n    /* Get pending register address */\n    regaddr = (__IO uint32_t *)(&EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));\n  }\n#else\n  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));\n#endif /* DUAL_CORE */\n\n  /* Clear Pending bit */\n  *regaddr =  maskline;\n}\n\n/**\n  * @brief  Generate a software interrupt for a dedicated line.\n  * @param  hexti Exti handle.\n  * @retval None.\n  */\nvoid HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)\n{\n  __IO uint32_t *regaddr;\n  uint32_t maskline;\n  uint32_t offset;\n\n  /* Check parameters */\n  assert_param(IS_EXTI_LINE(hexti->Line));\n  assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));\n\n  /* compute line register offset and line mask */\n  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);\n  maskline = (1UL << (hexti->Line & EXTI_PIN_MASK));\n\n  regaddr = (__IO uint32_t *)(&EXTI->SWIER1 + (EXTI_CONFIG_OFFSET * offset));\n  *regaddr = maskline;\n}\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#endif /* HAL_EXTI_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_flash.c\n  * @author  MCD Application Team\n  * @brief   FLASH HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the internal FLASH memory:\n  *           + Program operations functions\n  *           + Memory Control functions\n  *           + Peripheral Errors functions\n  *\n @verbatim\n  ==============================================================================\n                        ##### FLASH peripheral features #####\n  ==============================================================================\n\n  [..] The Flash memory interface manages CPU AXI I-Code and D-Code accesses\n       to the Flash memory. It implements the erase and program Flash memory operations\n       and the read and write protection mechanisms.\n\n  [..] The FLASH main features are:\n      (+) Flash memory read operations\n      (+) Flash memory program/erase operations\n      (+) Read / write protections\n      (+) Option bytes programming\n      (+) Error code correction (ECC) : Data in flash are 266-bits word\n          (10 bits added per flash word)\n\n                        ##### How to use this driver #####\n ==============================================================================\n    [..]\n      This driver provides functions and macros to configure and program the FLASH\n      memory of all STM32H7xx devices.\n\n      (#) FLASH Memory IO Programming functions:\n           (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and\n                HAL_FLASH_Lock() functions\n           (++) Program functions: 256-bit word only\n           (++) There Two modes of programming :\n            (+++) Polling mode using HAL_FLASH_Program() function\n            (+++) Interrupt mode using HAL_FLASH_Program_IT() function\n\n      (#) Interrupts and flags management functions :\n           (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler()\n           (++) Callback functions are called when the flash operations are finished :\n                HAL_FLASH_EndOfOperationCallback() when everything is ok, otherwise\n                HAL_FLASH_OperationErrorCallback()\n           (++) Get error flag status by calling HAL_FLASH_GetError()\n\n      (#) Option bytes management functions :\n           (++) Lock and Unlock the option bytes using HAL_FLASH_OB_Unlock() and\n                HAL_FLASH_OB_Lock() functions\n           (++) Launch the reload of the option bytes using HAL_FLASH_OB_Launch() function.\n                In this case, a reset is generated\n    [..]\n      In addition to these functions, this driver includes a set of macros allowing\n      to handle the following operations:\n       (+) Set the latency\n       (+) Enable/Disable the FLASH interrupts\n       (+) Monitor the FLASH flags status\n     [..]\n    (@) For any Flash memory program operation (erase or program), the CPU clock frequency\n        (HCLK) must be at least 1MHz.\n    (@) The contents of the Flash memory are not guaranteed if a device reset occurs during\n        a Flash memory operation.\n    (@) The application can simultaneously request a read and a write operation through each AXI\n        interface.\n        As the Flash memory is divided into two independent banks, the embedded Flash\n        memory interface can drive different operations at the same time on each bank. For\n        example a read, write or erase operation can be executed on bank 1 while another read,\n        write or erase operation is executed on bank 2.\n\n @endverbatim\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup FLASH FLASH\n  * @brief FLASH HAL module driver\n  * @{\n  */\n\n#ifdef HAL_FLASH_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/** @addtogroup FLASH_Private_Constants\n  * @{\n  */\n#define FLASH_TIMEOUT_VALUE              50000U /* 50 s */\n/**\n  * @}\n  */\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\nFLASH_ProcessTypeDef pFlash;\n/* Private function prototypes -----------------------------------------------*/\n/* Exported functions ---------------------------------------------------------*/\n\n/** @defgroup FLASH_Exported_Functions FLASH Exported functions\n  * @{\n  */\n\n/** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions\n *  @brief   Programming operation functions\n *\n@verbatim\n ===============================================================================\n                  ##### Programming operation functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to manage the FLASH\n    program operations.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Program a flash word at a specified address\n  * @param  TypeProgram Indicate the way to program at a specified address.\n  *         This parameter can be a value of @ref FLASH_Type_Program\n  * @param  FlashAddress specifies the address to be programmed.\n  *         This parameter shall be aligned to the Flash word:\n  *          - 256 bits for STM32H74x/5X devices (8x 32bits words)\n  *          - 128 bits for STM32H7Ax/BX devices (4x 32bits words)\n  *          - 256 bits for STM32H72x/3X devices (8x 32bits words)\n  * @param  DataAddress specifies the address of data to be programmed.\n  *         This parameter shall be 32-bit aligned\n  *\n  * @retval HAL_StatusTypeDef HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t FlashAddress, uint32_t DataAddress)\n{\n  HAL_StatusTypeDef status;\n  __IO uint32_t *dest_addr = (__IO uint32_t *)FlashAddress;\n  __IO uint32_t *src_addr = (__IO uint32_t*)DataAddress;\n  uint32_t bank;\n  uint8_t row_index = FLASH_NB_32BITWORD_IN_FLASHWORD;\n\n  /* Check the parameters */\n  assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));\n  assert_param(IS_FLASH_PROGRAM_ADDRESS(FlashAddress));\n\n  /* Process Locked */\n  __HAL_LOCK(&pFlash);\n\n#if defined (FLASH_OPTCR_PG_OTP)\n  if((IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress)) || (IS_FLASH_PROGRAM_ADDRESS_OTP(FlashAddress)))\n#else\n  if(IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress))\n#endif /* FLASH_OPTCR_PG_OTP */\n  {\n    bank = FLASH_BANK_1;\n  }\n#if defined (DUAL_BANK)\n  else if(IS_FLASH_PROGRAM_ADDRESS_BANK2(FlashAddress))\n  {\n    bank = FLASH_BANK_2;\n  }\n#endif /* DUAL_BANK */\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  /* Reset error code */\n  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;\n\n  /* Wait for last operation to be completed */\n  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, bank);\n\n  if(status == HAL_OK)\n  {\n#if defined (DUAL_BANK)\n    if(bank == FLASH_BANK_1)\n    {\n#if defined (FLASH_OPTCR_PG_OTP)\n      if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n      {\n        /* Set OTP_PG bit */\n        SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);\n      }\n      else\n#endif /* FLASH_OPTCR_PG_OTP */\n      {\n        /* Set PG bit */\n        SET_BIT(FLASH->CR1, FLASH_CR_PG);\n      }\n    }\n    else\n    {\n      /* Set PG bit */\n      SET_BIT(FLASH->CR2, FLASH_CR_PG);\n    }\n#else /* Single Bank */\n#if defined (FLASH_OPTCR_PG_OTP)\n      if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n      {\n        /* Set OTP_PG bit */\n        SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);\n      }\n      else\n#endif /* FLASH_OPTCR_PG_OTP */\n      {\n        /* Set PG bit */\n        SET_BIT(FLASH->CR1, FLASH_CR_PG);\n      }\n#endif /* DUAL_BANK */\n\n    __ISB();\n    __DSB();\n\n#if defined (FLASH_OPTCR_PG_OTP)\n    if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n    {\n      /* Program an OTP word (16 bits) */\n      *(__IO uint16_t *)FlashAddress = *(__IO uint16_t*)DataAddress;\n    }\n    else\n#endif /* FLASH_OPTCR_PG_OTP */\n    {\n      /* Program the flash word */\n      do\n      {\n        *dest_addr = *src_addr;\n        dest_addr++;\n        src_addr++;\n        row_index--;\n     } while (row_index != 0U);\n    }\n\n    __ISB();\n    __DSB();\n\n    /* Wait for last operation to be completed */\n    status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, bank);\n\n#if defined (DUAL_BANK)\n#if defined (FLASH_OPTCR_PG_OTP)\n    if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n    {\n      /* If the program operation is completed, disable the OTP_PG */\n      CLEAR_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);\n    }\n    else\n#endif /* FLASH_OPTCR_PG_OTP */\n    {\n      if(bank == FLASH_BANK_1)\n      {\n        /* If the program operation is completed, disable the PG */\n        CLEAR_BIT(FLASH->CR1, FLASH_CR_PG);\n      }\n      else\n      {\n        /* If the program operation is completed, disable the PG */\n        CLEAR_BIT(FLASH->CR2, FLASH_CR_PG);\n      }\n    }\n#else /* Single Bank */\n#if defined (FLASH_OPTCR_PG_OTP)\n    if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n    {\n      /* If the program operation is completed, disable the OTP_PG */\n      CLEAR_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);\n    }\n    else\n#endif /* FLASH_OPTCR_PG_OTP */\n    {\n      /* If the program operation is completed, disable the PG */\n      CLEAR_BIT(FLASH->CR1, FLASH_CR_PG);\n    }\n#endif /* DUAL_BANK */\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(&pFlash);\n\n  return status;\n}\n\n/**\n  * @brief  Program a flash word at a specified address with interrupt enabled.\n  * @param  TypeProgram Indicate the way to program at a specified address.\n  *                      This parameter can be a value of @ref FLASH_Type_Program\n  * @param  FlashAddress specifies the address to be programmed.\n  *         This parameter shall be aligned to the Flash word:\n  *          - 256 bits for STM32H74x/5X devices (8x 32bits words)\n  *          - 128 bits for STM32H7Ax/BX devices (4x 32bits words)\n  *          - 256 bits for STM32H72x/3X devices (8x 32bits words)\n  * @param  DataAddress specifies the address of data to be programmed.\n  *         This parameter shall be 32-bit aligned\n  *\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t FlashAddress, uint32_t DataAddress)\n{\n  HAL_StatusTypeDef status;\n  __IO uint32_t *dest_addr = (__IO uint32_t*)FlashAddress;\n  __IO uint32_t *src_addr = (__IO uint32_t*)DataAddress;\n  uint32_t bank;\n  uint8_t row_index = FLASH_NB_32BITWORD_IN_FLASHWORD;\n\n  /* Check the parameters */\n  assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));\n  assert_param(IS_FLASH_PROGRAM_ADDRESS(FlashAddress));\n\n  /* Process Locked */\n  __HAL_LOCK(&pFlash);\n\n  /* Reset error code */\n  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;\n\n#if defined (FLASH_OPTCR_PG_OTP)\n  if((IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress)) || (IS_FLASH_PROGRAM_ADDRESS_OTP(FlashAddress)))\n#else\n  if(IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress))\n#endif /* FLASH_OPTCR_PG_OTP */\n  {\n    bank = FLASH_BANK_1;\n  }\n#if defined (DUAL_BANK)\n  else if(IS_FLASH_PROGRAM_ADDRESS_BANK2(FlashAddress))\n  {\n    bank = FLASH_BANK_2;\n  }\n#endif /* DUAL_BANK */\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  /* Wait for last operation to be completed */\n  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, bank);\n\n  if (status != HAL_OK)\n  {\n    /* Process Unlocked */\n    __HAL_UNLOCK(&pFlash);\n  }\n  else\n  {\n    pFlash.Address = FlashAddress;\n\n#if defined (DUAL_BANK)\n    if(bank == FLASH_BANK_1)\n    {\n      /* Set internal variables used by the IRQ handler */\n      pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_BANK1;\n\n#if defined (FLASH_OPTCR_PG_OTP)\n      if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n      {\n        /* Set OTP_PG bit */\n        SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);\n      }\n      else\n#endif /* FLASH_OPTCR_PG_OTP */\n      {\n        /* Set PG bit */\n        SET_BIT(FLASH->CR1, FLASH_CR_PG);\n      }\n\n      /* Enable End of Operation and Error interrupts for Bank 1 */\n#if defined (FLASH_CR_OPERRIE)\n      __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1     | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                  FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_BANK1);\n#else\n      __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1     | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                  FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1);\n#endif /* FLASH_CR_OPERRIE */\n    }\n    else\n    {\n      /* Set internal variables used by the IRQ handler */\n      pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_BANK2;\n\n      /* Set PG bit */\n      SET_BIT(FLASH->CR2, FLASH_CR_PG);\n\n      /* Enable End of Operation and Error interrupts for Bank2 */\n#if defined (FLASH_CR_OPERRIE)\n      __HAL_FLASH_ENABLE_IT_BANK2(FLASH_IT_EOP_BANK2     | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BANK2 | \\\n                                  FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2 | FLASH_IT_OPERR_BANK2);\n#else\n      __HAL_FLASH_ENABLE_IT_BANK2(FLASH_IT_EOP_BANK2     | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BANK2 | \\\n                                  FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2);\n#endif /* FLASH_CR_OPERRIE */\n    }\n#else /* Single Bank */\n    /* Set internal variables used by the IRQ handler */\n    pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_BANK1;\n\n#if defined (FLASH_OPTCR_PG_OTP)\n    if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n    {\n      /* Set OTP_PG bit */\n      SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);\n    }\n    else\n#endif /* FLASH_OPTCR_PG_OTP */\n    {\n      /* Set PG bit */\n      SET_BIT(FLASH->CR1, FLASH_CR_PG);\n    }\n\n      /* Enable End of Operation and Error interrupts for Bank 1 */\n#if defined (FLASH_CR_OPERRIE)\n      __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1     | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                  FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_BANK1);\n#else\n      __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1     | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                  FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1);\n#endif /* FLASH_CR_OPERRIE */\n#endif /* DUAL_BANK */\n\n    __ISB();\n    __DSB();\n\n#if defined (FLASH_OPTCR_PG_OTP)\n    if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)\n    {\n      /* Program an OTP word (16 bits) */\n      *(__IO uint16_t *)FlashAddress = *(__IO uint16_t*)DataAddress;\n    }\n    else\n#endif /* FLASH_OPTCR_PG_OTP */\n    {\n      /* Program the flash word */\n      do\n      {\n        *dest_addr = *src_addr;\n        dest_addr++;\n        src_addr++;\n        row_index--;\n      } while (row_index != 0U);\n    }\n\n    __ISB();\n    __DSB();\n  }\n\n  return status;\n}\n\n/**\n  * @brief This function handles FLASH interrupt request.\n  * @retval None\n  */\nvoid HAL_FLASH_IRQHandler(void)\n{\n  uint32_t temp;\n  uint32_t errorflag;\n  FLASH_ProcedureTypeDef procedure;\n\n  /* Check FLASH Bank1 End of Operation flag  */\n  if(__HAL_FLASH_GET_FLAG_BANK1(FLASH_SR_EOP) != RESET)\n  {\n    if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE_BANK1)\n    {\n      /* Nb of sector to erased can be decreased */\n      pFlash.NbSectorsToErase--;\n\n      /* Check if there are still sectors to erase */\n      if(pFlash.NbSectorsToErase != 0U)\n      {\n        /* Indicate user which sector has been erased */\n        HAL_FLASH_EndOfOperationCallback(pFlash.Sector);\n\n        /* Clear bank 1 End of Operation pending bit */\n        __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);\n\n        /* Increment sector number */\n        pFlash.Sector++;\n        temp = pFlash.Sector;\n        FLASH_Erase_Sector(temp, FLASH_BANK_1, pFlash.VoltageForErase);\n      }\n      else\n      {\n        /* No more sectors to Erase, user callback can be called */\n        /* Reset Sector and stop Erase sectors procedure */\n        pFlash.Sector = 0xFFFFFFFFU;\n        pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\n\n        /* FLASH EOP interrupt user callback */\n        HAL_FLASH_EndOfOperationCallback(pFlash.Sector);\n\n        /* Clear FLASH End of Operation pending bit */\n        __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);\n      }\n    }\n    else\n    {\n      procedure = pFlash.ProcedureOnGoing;\n\n      if((procedure == FLASH_PROC_MASSERASE_BANK1) || (procedure == FLASH_PROC_ALLBANK_MASSERASE))\n      {\n        /* MassErase ended. Return the selected bank */\n        /* FLASH EOP interrupt user callback */\n        HAL_FLASH_EndOfOperationCallback(FLASH_BANK_1);\n      }\n      else if(procedure == FLASH_PROC_PROGRAM_BANK1)\n      {\n        /* Program ended. Return the selected address */\n        /* FLASH EOP interrupt user callback */\n        HAL_FLASH_EndOfOperationCallback(pFlash.Address);\n      }\n      else\n      {\n        /* Nothing to do */\n      }\n\n      if((procedure != FLASH_PROC_SECTERASE_BANK2) && \\\n         (procedure != FLASH_PROC_MASSERASE_BANK2) && \\\n         (procedure != FLASH_PROC_PROGRAM_BANK2))\n      {\n        pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\n        /* Clear FLASH End of Operation pending bit */\n        __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);\n      }\n    }\n  }\n\n#if defined (DUAL_BANK)\n /* Check FLASH Bank2 End of Operation flag  */\n  if(__HAL_FLASH_GET_FLAG_BANK2(FLASH_SR_EOP) != RESET)\n  {\n    if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE_BANK2)\n    {\n      /*Nb of sector to erased can be decreased*/\n      pFlash.NbSectorsToErase--;\n\n      /* Check if there are still sectors to erase*/\n      if(pFlash.NbSectorsToErase != 0U)\n      {\n        /*Indicate user which sector has been erased*/\n        HAL_FLASH_EndOfOperationCallback(pFlash.Sector);\n\n        /* Clear bank 2 End of Operation pending bit */\n        __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);\n\n        /*Increment sector number*/\n        pFlash.Sector++;\n        temp = pFlash.Sector;\n        FLASH_Erase_Sector(temp, FLASH_BANK_2, pFlash.VoltageForErase);\n      }\n      else\n      {\n        /* No more sectors to Erase, user callback can be called */\n        /* Reset Sector and stop Erase sectors procedure */\n        pFlash.Sector = 0xFFFFFFFFU;\n        pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\n\n        /* FLASH EOP interrupt user callback */\n        HAL_FLASH_EndOfOperationCallback(pFlash.Sector);\n\n        /* Clear FLASH End of Operation pending bit */\n        __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);\n      }\n    }\n    else\n    {\n      procedure = pFlash.ProcedureOnGoing;\n\n      if((procedure == FLASH_PROC_MASSERASE_BANK2) || (procedure == FLASH_PROC_ALLBANK_MASSERASE))\n      {\n        /*MassErase ended. Return the selected bank*/\n        /* FLASH EOP interrupt user callback */\n        HAL_FLASH_EndOfOperationCallback(FLASH_BANK_2);\n      }\n      else if(procedure == FLASH_PROC_PROGRAM_BANK2)\n      {\n        /* Program ended. Return the selected address */\n        /* FLASH EOP interrupt user callback */\n        HAL_FLASH_EndOfOperationCallback(pFlash.Address);\n      }\n      else\n      {\n        /* Nothing to do */\n      }\n\n      if((procedure != FLASH_PROC_SECTERASE_BANK1) && \\\n         (procedure != FLASH_PROC_MASSERASE_BANK1) && \\\n         (procedure != FLASH_PROC_PROGRAM_BANK1))\n      {\n        pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\n        /* Clear FLASH End of Operation pending bit */\n        __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);\n      }\n    }\n  }\n#endif /* DUAL_BANK */\n\n  /* Check FLASH Bank1 operation error flags */\n#if defined (FLASH_SR_OPERR)\n  errorflag = FLASH->SR1 & (FLASH_FLAG_WRPERR_BANK1 | FLASH_FLAG_PGSERR_BANK1 | FLASH_FLAG_STRBERR_BANK1 | \\\n                            FLASH_FLAG_INCERR_BANK1 | FLASH_FLAG_OPERR_BANK1);\n#else\n  errorflag = FLASH->SR1 & (FLASH_FLAG_WRPERR_BANK1 | FLASH_FLAG_PGSERR_BANK1 | FLASH_FLAG_STRBERR_BANK1 | \\\n                            FLASH_FLAG_INCERR_BANK1);\n#endif /* FLASH_SR_OPERR */\n\n  if(errorflag != 0U)\n  {\n    /* Save the error code */\n    pFlash.ErrorCode |= errorflag;\n\n    /* Clear error programming flags */\n    __HAL_FLASH_CLEAR_FLAG_BANK1(errorflag);\n\n    procedure = pFlash.ProcedureOnGoing;\n\n    if(procedure == FLASH_PROC_SECTERASE_BANK1)\n    {\n      /* Return the faulty sector */\n      temp = pFlash.Sector;\n      pFlash.Sector = 0xFFFFFFFFU;\n    }\n    else if((procedure == FLASH_PROC_MASSERASE_BANK1) || (procedure == FLASH_PROC_ALLBANK_MASSERASE))\n    {\n      /* Return the faulty bank */\n      temp = FLASH_BANK_1;\n    }\n    else\n    {\n      /* Return the faulty address */\n      temp = pFlash.Address;\n    }\n\n    /* Stop the procedure ongoing*/\n    pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\n\n    /* FLASH error interrupt user callback */\n    HAL_FLASH_OperationErrorCallback(temp);\n  }\n\n#if defined (DUAL_BANK)\n  /* Check FLASH Bank2 operation error flags */\n#if defined (FLASH_SR_OPERR)\n  errorflag = FLASH->SR2 & ((FLASH_FLAG_WRPERR_BANK2 | FLASH_FLAG_PGSERR_BANK2 | FLASH_FLAG_STRBERR_BANK2 | \\\n                             FLASH_FLAG_INCERR_BANK2 | FLASH_FLAG_OPERR_BANK2) & 0x7FFFFFFFU);\n#else\n  errorflag = FLASH->SR2 & ((FLASH_FLAG_WRPERR_BANK2 | FLASH_FLAG_PGSERR_BANK2 | FLASH_FLAG_STRBERR_BANK2 | \\\n                             FLASH_FLAG_INCERR_BANK2) & 0x7FFFFFFFU);\n#endif /* FLASH_SR_OPERR */\n\n  if(errorflag != 0U)\n  {\n    /* Save the error code */\n    pFlash.ErrorCode |= (errorflag | 0x80000000U);\n\n    /* Clear error programming flags */\n    __HAL_FLASH_CLEAR_FLAG_BANK2(errorflag);\n\n    procedure = pFlash.ProcedureOnGoing;\n\n    if(procedure== FLASH_PROC_SECTERASE_BANK2)\n    {\n      /*return the faulty sector*/\n      temp = pFlash.Sector;\n      pFlash.Sector = 0xFFFFFFFFU;\n    }\n    else if((procedure == FLASH_PROC_MASSERASE_BANK2) || (procedure == FLASH_PROC_ALLBANK_MASSERASE))\n    {\n      /*return the faulty bank*/\n      temp = FLASH_BANK_2;\n    }\n    else\n    {\n      /*return the faulty address*/\n      temp = pFlash.Address;\n    }\n\n    /*Stop the procedure ongoing*/\n    pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\n\n    /* FLASH error interrupt user callback */\n    HAL_FLASH_OperationErrorCallback(temp);\n  }\n#endif /* DUAL_BANK */\n\n  if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE)\n  {\n#if defined (FLASH_CR_OPERRIE)\n    /* Disable Bank1 Operation and Error source interrupt */\n    __HAL_FLASH_DISABLE_IT_BANK1(FLASH_IT_EOP_BANK1    | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                 FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_BANK1);\n\n#if defined (DUAL_BANK)\n    /* Disable Bank2 Operation and Error source interrupt */\n    __HAL_FLASH_DISABLE_IT_BANK2(FLASH_IT_EOP_BANK2    | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BANK2 | \\\n                                 FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2 | FLASH_IT_OPERR_BANK2);\n#endif /* DUAL_BANK */\n#else\n    /* Disable Bank1 Operation and Error source interrupt */\n    __HAL_FLASH_DISABLE_IT_BANK1(FLASH_IT_EOP_BANK1    | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                 FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1);\n\n#if defined (DUAL_BANK)\n    /* Disable Bank2 Operation and Error source interrupt */\n    __HAL_FLASH_DISABLE_IT_BANK2(FLASH_IT_EOP_BANK2    | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BANK2 | \\\n                                 FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2);\n#endif /* DUAL_BANK */\n#endif /* FLASH_CR_OPERRIE */\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(&pFlash);\n  }\n}\n\n/**\n  * @brief  FLASH end of operation interrupt callback\n  * @param  ReturnValue The value saved in this parameter depends on the ongoing procedure\n  *                  Mass Erase: Bank number which has been requested to erase\n  *                  Sectors Erase: Sector which has been erased\n  *                    (if 0xFFFFFFFF, it means that all the selected sectors have been erased)\n  *                  Program: Address which was selected for data program\n  * @retval None\n  */\n__weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(ReturnValue);\n\n  /* NOTE : This function Should not be modified, when the callback is needed,\n            the HAL_FLASH_EndOfOperationCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  FLASH operation error interrupt callback\n  * @param  ReturnValue The value saved in this parameter depends on the ongoing procedure\n  *                 Mass Erase: Bank number which has been requested to erase\n  *                 Sectors Erase: Sector number which returned an error\n  *                 Program: Address which was selected for data program\n  * @retval None\n  */\n__weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(ReturnValue);\n\n  /* NOTE : This function Should not be modified, when the callback is needed,\n            the HAL_FLASH_OperationErrorCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions\n *  @brief   Management functions\n *\n@verbatim\n ===============================================================================\n                      ##### Peripheral Control functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to control the FLASH\n    memory operations.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Unlock the FLASH control registers access\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASH_Unlock(void)\n{\n  if(READ_BIT(FLASH->CR1, FLASH_CR_LOCK) != 0U)\n  {\n    /* Authorize the FLASH Bank1 Registers access */\n    WRITE_REG(FLASH->KEYR1, FLASH_KEY1);\n    WRITE_REG(FLASH->KEYR1, FLASH_KEY2);\n\n    /* Verify Flash Bank1 is unlocked */\n    if (READ_BIT(FLASH->CR1, FLASH_CR_LOCK) != 0U)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n#if defined (DUAL_BANK)\n  if(READ_BIT(FLASH->CR2, FLASH_CR_LOCK) != 0U)\n  {\n    /* Authorize the FLASH Bank2 Registers access */\n    WRITE_REG(FLASH->KEYR2, FLASH_KEY1);\n    WRITE_REG(FLASH->KEYR2, FLASH_KEY2);\n\n    /* Verify Flash Bank2 is unlocked */\n    if (READ_BIT(FLASH->CR2, FLASH_CR_LOCK) != 0U)\n    {\n      return HAL_ERROR;\n    }\n  }\n#endif /* DUAL_BANK */\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Locks the FLASH control registers access\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASH_Lock(void)\n{\n  /* Set the LOCK Bit to lock the FLASH Bank1 Control Register access */\n  SET_BIT(FLASH->CR1, FLASH_CR_LOCK);\n\n  /* Verify Flash Bank1 is locked */\n  if (READ_BIT(FLASH->CR1, FLASH_CR_LOCK) == 0U)\n  {\n    return HAL_ERROR;\n  }\n\n#if defined (DUAL_BANK)\n  /* Set the LOCK Bit to lock the FLASH Bank2 Control Register access */\n  SET_BIT(FLASH->CR2, FLASH_CR_LOCK);\n\n  /* Verify Flash Bank2 is locked */\n  if (READ_BIT(FLASH->CR2, FLASH_CR_LOCK) == 0U)\n  {\n    return HAL_ERROR;\n  }\n#endif /* DUAL_BANK */\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Unlock the FLASH Option Control Registers access.\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)\n{\n  if(READ_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK) != 0U)\n  {\n    /* Authorizes the Option Byte registers programming */\n    WRITE_REG(FLASH->OPTKEYR, FLASH_OPT_KEY1);\n    WRITE_REG(FLASH->OPTKEYR, FLASH_OPT_KEY2);\n\n    /* Verify that the Option Bytes are unlocked */\n    if (READ_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK) != 0U)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Lock the FLASH Option Control Registers access.\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASH_OB_Lock(void)\n{\n  /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */\n  SET_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK);\n\n  /* Verify that the Option Bytes are locked */\n  if (READ_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK) == 0U)\n  {\n    return HAL_ERROR;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Launch the option bytes loading.\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASH_OB_Launch(void)\n{\n  HAL_StatusTypeDef status;\n\n  /* Wait for CRC computation to be completed */\n  if (FLASH_CRC_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1) != HAL_OK)\n  {\n    status = HAL_ERROR;\n  }\n#if defined (DUAL_BANK)\n  else if (FLASH_CRC_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2) != HAL_OK)\n  {\n    status = HAL_ERROR;\n  }\n#endif /* DUAL_BANK */\n  else\n  {\n    status = HAL_OK;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Set OPTSTRT Bit */\n    SET_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTSTART);\n\n    /* Wait for OB change operation to be completed */\n    status = FLASH_OB_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\n  }\n\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions\n *  @brief   Peripheral Errors functions\n *\n@verbatim\n ===============================================================================\n                ##### Peripheral Errors functions #####\n ===============================================================================\n    [..]\n    This subsection permits to get in run-time Errors of the FLASH peripheral.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Get the specific FLASH error flag.\n  * @retval HAL_FLASH_ERRORCode The returned value can be:\n  *            @arg HAL_FLASH_ERROR_NONE       : No error set\n  *\n  *            @arg HAL_FLASH_ERROR_WRP_BANK1  : Write Protection Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_PGS_BANK1  : Program Sequence Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_STRB_BANK1 : Strobe Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_INC_BANK1  : Inconsistency Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_OPE_BANK1  : Operation Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_RDP_BANK1  : Read Protection Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_RDS_BANK1  : Read Secured Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_SNECC_BANK1: ECC Single Correction Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_DBECC_BANK1: ECC Double Detection Error on Bank 1\n  *            @arg HAL_FLASH_ERROR_CRCRD_BANK1: CRC Read Error on Bank 1\n  *\n  *            @arg HAL_FLASH_ERROR_WRP_BANK2  : Write Protection Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_PGS_BANK2  : Program Sequence Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_STRB_BANK2 : Strobe Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_INC_BANK2  : Inconsistency Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_OPE_BANK2  : Operation Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_RDP_BANK2  : Read Protection Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_RDS_BANK2  : Read Secured Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_SNECC_BANK2: SNECC Error on Bank 2\n  *            @arg HAL_FLASH_ERROR_DBECC_BANK2: Double Detection ECC on Bank 2\n  *            @arg HAL_FLASH_ERROR_CRCRD_BANK2: CRC Read Error on Bank 2\n*/\n\nuint32_t HAL_FLASH_GetError(void)\n{\n   return pFlash.ErrorCode;\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n\n/** @addtogroup FLASH_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Wait for a FLASH operation to complete.\n  * @param  Timeout maximum flash operation timeout\n  * @param  Bank flash FLASH_BANK_1 or FLASH_BANK_2\n  * @retval HAL_StatusTypeDef HAL Status\n  */\nHAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout, uint32_t Bank)\n{\n  /* Wait for the FLASH operation to complete by polling on QW flag to be reset.\n     Even if the FLASH operation fails, the QW flag will be reset and an error\n     flag will be set */\n\n  uint32_t bsyflag = FLASH_FLAG_QW_BANK1;\n  uint32_t errorflag = 0;\n  uint32_t tickstart = HAL_GetTick();\n\n  assert_param(IS_FLASH_BANK_EXCLUSIVE(Bank));\n\n#if defined (DUAL_BANK)\n\n  if (Bank == FLASH_BANK_2)\n  {\n    /* Select bsyflag depending on Bank */\n    bsyflag = FLASH_FLAG_QW_BANK2;\n  }\n#endif /* DUAL_BANK */\n\n  while(__HAL_FLASH_GET_FLAG(bsyflag))\n  {\n    if(Timeout != HAL_MAX_DELAY)\n    {\n      if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n  }\n\n  /* Get Error Flags */\n  if (Bank == FLASH_BANK_1)\n  {\n    errorflag = FLASH->SR1 & FLASH_FLAG_ALL_ERRORS_BANK1;\n  }\n#if defined (DUAL_BANK)\n  else\n  {\n    errorflag = (FLASH->SR2 & FLASH_FLAG_ALL_ERRORS_BANK2) | 0x80000000U;\n  }\n#endif /* DUAL_BANK */\n\n  /* In case of error reported in Flash SR1 or SR2 register */\n  if((errorflag & 0x7FFFFFFFU) != 0U)\n  {\n    /*Save the error code*/\n    pFlash.ErrorCode |= errorflag;\n\n    /* Clear error programming flags */\n    __HAL_FLASH_CLEAR_FLAG(errorflag);\n\n    return HAL_ERROR;\n  }\n\n  /* Check FLASH End of Operation flag  */\n  if(Bank == FLASH_BANK_1)\n  {\n    if (__HAL_FLASH_GET_FLAG_BANK1(FLASH_FLAG_EOP_BANK1))\n    {\n      /* Clear FLASH End of Operation pending bit */\n      __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);\n    }\n  }\n#if defined (DUAL_BANK)\n  else\n  {\n    if (__HAL_FLASH_GET_FLAG_BANK2(FLASH_FLAG_EOP_BANK2))\n    {\n      /* Clear FLASH End of Operation pending bit */\n      __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);\n    }\n  }\n#endif /* DUAL_BANK */\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Wait for a FLASH Option Bytes change operation to complete.\n  * @param  Timeout maximum flash operation timeout\n  * @retval HAL_StatusTypeDef HAL Status\n  */\nHAL_StatusTypeDef FLASH_OB_WaitForLastOperation(uint32_t Timeout)\n{\n  /* Get timeout */\n  uint32_t tickstart = HAL_GetTick();\n\n  /* Wait for the FLASH Option Bytes change operation to complete by polling on OPT_BUSY flag to be reset */\n  while(READ_BIT(FLASH->OPTSR_CUR, FLASH_OPTSR_OPT_BUSY) != 0U)\n  {\n    if(Timeout != HAL_MAX_DELAY)\n    {\n      if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n  }\n\n  /* Check option byte change error */\n  if(READ_BIT(FLASH->OPTSR_CUR, FLASH_OPTSR_OPTCHANGEERR) != 0U)\n  {\n    /* Save the error code */\n    pFlash.ErrorCode |= HAL_FLASH_ERROR_OB_CHANGE;\n\n    /* Clear the OB error flag */\n    FLASH->OPTCCR |= FLASH_OPTCCR_CLR_OPTCHANGEERR;\n\n    return HAL_ERROR;\n  }\n\n  /* If there is no error flag set */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Wait for a FLASH CRC computation to complete.\n  * @param  Timeout maximum flash operation timeout\n  * @param  Bank flash FLASH_BANK_1 or FLASH_BANK_2\n  * @retval HAL_StatusTypeDef HAL Status\n  */\nHAL_StatusTypeDef FLASH_CRC_WaitForLastOperation(uint32_t Timeout, uint32_t Bank)\n{\n  uint32_t bsyflag;\n  uint32_t tickstart = HAL_GetTick();\n\n  assert_param(IS_FLASH_BANK_EXCLUSIVE(Bank));\n\n  /* Select bsyflag depending on Bank */\n  if(Bank == FLASH_BANK_1)\n  {\n    bsyflag = FLASH_FLAG_CRC_BUSY_BANK1;\n  }\n  else\n  {\n    bsyflag = FLASH_FLAG_CRC_BUSY_BANK2;\n  }\n\n  /* Wait for the FLASH CRC computation to complete by polling on CRC_BUSY flag to be reset */\n  while(__HAL_FLASH_GET_FLAG(bsyflag))\n  {\n    if(Timeout != HAL_MAX_DELAY)\n    {\n      if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n  }\n\n  /* Check FLASH CRC read error flag  */\n  if(Bank == FLASH_BANK_1)\n  {\n    if (__HAL_FLASH_GET_FLAG_BANK1(FLASH_FLAG_CRCRDERR_BANK1))\n    {\n      /* Save the error code */\n      pFlash.ErrorCode |= HAL_FLASH_ERROR_CRCRD_BANK1;\n\n      /* Clear FLASH CRC read error pending bit */\n      __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_CRCRDERR_BANK1);\n\n      return HAL_ERROR;\n    }\n  }\n#if defined (DUAL_BANK)\n  else\n  {\n    if (__HAL_FLASH_GET_FLAG_BANK2(FLASH_FLAG_CRCRDERR_BANK2))\n    {\n      /* Save the error code */\n      pFlash.ErrorCode |= HAL_FLASH_ERROR_CRCRD_BANK2;\n\n      /* Clear FLASH CRC read error pending bit */\n      __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_CRCRDERR_BANK2);\n\n      return HAL_ERROR;\n    }\n  }\n#endif /* DUAL_BANK */\n\n  /* If there is no error flag set */\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n#endif /* HAL_FLASH_MODULE_ENABLED */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_flash_ex.c\n  * @author  MCD Application Team\n  * @brief   Extended FLASH HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the FLASH extension peripheral:\n  *           + Extended programming operations functions\n  *\n @verbatim\n ==============================================================================\n                   ##### Flash Extension features #####\n  ==============================================================================\n\n  [..] Comparing to other previous devices, the FLASH interface for STM32H7xx\n       devices contains the following additional features\n\n       (+) Capacity up to 2 Mbyte with dual bank architecture supporting read-while-write\n           capability (RWW)\n       (+) Dual bank memory organization\n       (+) PCROP protection for all banks\n       (+) Global readout protection (RDP)\n       (+) Write protection\n       (+) Secure access only protection\n       (+) Bank / register swapping (when Dual-Bank)\n       (+) Cyclic Redundancy Check (CRC)\n\n                        ##### How to use this driver #####\n ==============================================================================\n  [..] This driver provides functions to configure and program the FLASH memory\n       of all STM32H7xx devices. It includes\n      (#) FLASH Memory Erase functions:\n           (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and\n                HAL_FLASH_Lock() functions\n           (++) Erase function: Sector erase, bank erase and dual-bank mass erase\n           (++) There are two modes of erase :\n             (+++) Polling Mode using HAL_FLASHEx_Erase()\n             (+++) Interrupt Mode using HAL_FLASHEx_Erase_IT()\n\n      (#) Option Bytes Programming functions: Use HAL_FLASHEx_OBProgram() to:\n        (++) Set/Reset the write protection per bank\n        (++) Set the Read protection Level\n        (++) Set the BOR level\n        (++) Program the user Option Bytes\n        (++) PCROP protection configuration and control per bank\n        (++) Secure area configuration and control per bank\n        (++) Core Boot address configuration\n        (++) TCM / AXI shared RAM configuration\n        (++) CPU Frequency Boost configuration\n\n      (#) FLASH Memory Lock and unlock per Bank: HAL_FLASHEx_Lock_Bank1(), HAL_FLASHEx_Unlock_Bank1(),\n          HAL_FLASHEx_Lock_Bank2() and HAL_FLASHEx_Unlock_Bank2() functions\n\n      (#) FLASH CRC computation function: Use HAL_FLASHEx_ComputeCRC() to:\n          (++) Enable CRC feature\n          (++) Program the desired burst size\n          (++) Define the user Flash Area on which the CRC has be computed\n          (++) Perform the CRC computation\n          (++) Disable CRC feature\n\n @endverbatim\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup FLASHEx  FLASHEx\n  * @brief FLASH HAL Extension module driver\n  * @{\n  */\n\n#ifdef HAL_FLASH_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/** @addtogroup FLASHEx_Private_Constants\n  * @{\n  */\n#define FLASH_TIMEOUT_VALUE       50000U /* 50 s */\n\n/**\n  * @}\n  */\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/** @defgroup FLASHEx_Private_Functions FLASHEx Private Functions\n  * @{\n  */\nstatic void FLASH_MassErase(uint32_t VoltageRange, uint32_t Banks);\nstatic void FLASH_OB_EnableWRP(uint32_t WRPSector, uint32_t Banks);\nstatic void FLASH_OB_DisableWRP(uint32_t WRPSector, uint32_t Bank);\nstatic void FLASH_OB_GetWRP(uint32_t *WRPState, uint32_t *WRPSector, uint32_t Bank);\nstatic void FLASH_OB_RDPConfig(uint32_t RDPLevel);\nstatic uint32_t FLASH_OB_GetRDP(void);\nstatic void FLASH_OB_PCROPConfig(uint32_t PCROConfigRDP, uint32_t PCROPStartAddr, uint32_t PCROPEndAddr, uint32_t Banks);\nstatic void FLASH_OB_GetPCROP(uint32_t *PCROPConfig, uint32_t *PCROPStartAddr,uint32_t *PCROPEndAddr, uint32_t Bank);\nstatic void FLASH_OB_BOR_LevelConfig(uint32_t Level);\nstatic uint32_t FLASH_OB_GetBOR(void);\nstatic void FLASH_OB_UserConfig(uint32_t UserType, uint32_t UserConfig);\nstatic uint32_t FLASH_OB_GetUser(void);\nstatic void FLASH_OB_BootAddConfig(uint32_t BootOption, uint32_t BootAddress0, uint32_t BootAddress1);\nstatic void FLASH_OB_GetBootAdd(uint32_t *BootAddress0, uint32_t *BootAddress1);\nstatic void FLASH_OB_SecureAreaConfig(uint32_t SecureAreaConfig, uint32_t SecureAreaStartAddr, uint32_t SecureAreaEndAddr, uint32_t Banks);\nstatic void FLASH_OB_GetSecureArea(uint32_t *SecureAreaConfig, uint32_t *SecureAreaStartAddr, uint32_t *SecureAreaEndAddr, uint32_t Bank);\nstatic void FLASH_CRC_AddSector(uint32_t Sector, uint32_t Bank);\nstatic void FLASH_CRC_SelectAddress(uint32_t CRCStartAddr, uint32_t CRCEndAddr, uint32_t Bank);\n\n#if defined (DUAL_CORE)\nstatic void FLASH_OB_CM4BootAddConfig(uint32_t BootOption, uint32_t BootAddress0, uint32_t BootAddress1);\nstatic void FLASH_OB_GetCM4BootAdd(uint32_t *BootAddress0, uint32_t *BootAddress1);\n#endif /*DUAL_CORE*/\n\n#if defined (FLASH_OTPBL_LOCKBL)\nstatic void FLASH_OB_OTP_LockConfig(uint32_t OTP_Block);\nstatic uint32_t FLASH_OB_OTP_GetLock(void);\n#endif /* FLASH_OTPBL_LOCKBL */\n\n#if defined (FLASH_OPTSR2_TCM_AXI_SHARED)\nstatic void FLASH_OB_SharedRAM_Config(uint32_t SharedRamConfig);\nstatic uint32_t FLASH_OB_SharedRAM_GetConfig(void);\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n\n#if defined (FLASH_OPTSR2_CPUFREQ_BOOST)\nstatic void FLASH_OB_CPUFreq_BoostConfig(uint32_t FreqBoost);\nstatic uint32_t FLASH_OB_CPUFreq_GetBoost(void);\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n/**\n  * @}\n  */\n\n/* Exported functions ---------------------------------------------------------*/\n/** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions\n  * @{\n  */\n\n/** @defgroup FLASHEx_Exported_Functions_Group1 Extended IO operation functions\n *  @brief   Extended IO operation functions\n *\n@verbatim\n ===============================================================================\n                ##### Extended programming operation functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to manage the Extension FLASH\n    programming operations Operations.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Perform a mass erase or erase the specified FLASH memory sectors\n  * @param[in]  pEraseInit pointer to an FLASH_EraseInitTypeDef structure that\n  *         contains the configuration information for the erasing.\n  *\n  * @param[out]  SectorError pointer to variable  that contains the configuration\n  *          information on faulty sector in case of error (0xFFFFFFFF means that all\n  *          the sectors have been correctly erased)\n  *\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t sector_index;\n\n  /* Check the parameters */\n  assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));\n  assert_param(IS_FLASH_BANK(pEraseInit->Banks));\n\n  /* Process Locked */\n  __HAL_LOCK(&pFlash);\n\n  /* Reset error code */\n  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;\n\n  /* Wait for last operation to be completed on Bank1 */\n  if((pEraseInit->Banks & FLASH_BANK_1) == FLASH_BANK_1)\n  {\n    if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1) != HAL_OK)\n    {\n      status = HAL_ERROR;\n    }\n  }\n\n#if defined (DUAL_BANK)\n  /* Wait for last operation to be completed on Bank2 */\n  if((pEraseInit->Banks & FLASH_BANK_2) == FLASH_BANK_2)\n  {\n    if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2) != HAL_OK)\n    {\n      status = HAL_ERROR;\n    }\n  }\n#endif /* DUAL_BANK */\n\n  if(status == HAL_OK)\n  {\n    if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)\n    {\n      /* Mass erase to be done */\n      FLASH_MassErase(pEraseInit->VoltageRange, pEraseInit->Banks);\n\n      /* Wait for last operation to be completed on Bank 1 */\n      if((pEraseInit->Banks & FLASH_BANK_1) == FLASH_BANK_1)\n      {\n        if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1) != HAL_OK)\n        {\n          status = HAL_ERROR;\n        }\n        /* if the erase operation is completed, disable the Bank1 BER Bit */\n        FLASH->CR1 &= (~FLASH_CR_BER);\n      }\n#if defined (DUAL_BANK)\n      /* Wait for last operation to be completed on Bank 2 */\n      if((pEraseInit->Banks & FLASH_BANK_2) == FLASH_BANK_2)\n      {\n        if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2) != HAL_OK)\n        {\n          status = HAL_ERROR;\n        }\n        /* if the erase operation is completed, disable the Bank2 BER Bit */\n        FLASH->CR2 &= (~FLASH_CR_BER);\n      }\n#endif /* DUAL_BANK */\n    }\n    else\n    {\n      /*Initialization of SectorError variable*/\n      *SectorError = 0xFFFFFFFFU;\n\n      /* Erase by sector by sector to be done*/\n      for(sector_index = pEraseInit->Sector; sector_index < (pEraseInit->NbSectors + pEraseInit->Sector); sector_index++)\n      {\n        FLASH_Erase_Sector(sector_index, pEraseInit->Banks, pEraseInit->VoltageRange);\n\n        if((pEraseInit->Banks & FLASH_BANK_1) == FLASH_BANK_1)\n        {\n          /* Wait for last operation to be completed */\n          status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1);\n\n          /* If the erase operation is completed, disable the SER Bit */\n          FLASH->CR1 &= (~(FLASH_CR_SER | FLASH_CR_SNB));\n        }\n#if defined (DUAL_BANK)\n        if((pEraseInit->Banks & FLASH_BANK_2) == FLASH_BANK_2)\n        {\n          /* Wait for last operation to be completed */\n          status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2);\n\n          /* If the erase operation is completed, disable the SER Bit */\n          FLASH->CR2 &= (~(FLASH_CR_SER | FLASH_CR_SNB));\n        }\n#endif /* DUAL_BANK */\n\n        if(status != HAL_OK)\n        {\n          /* In case of error, stop erase procedure and return the faulty sector */\n          *SectorError = sector_index;\n          break;\n        }\n      }\n    }\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(&pFlash);\n\n  return status;\n}\n\n/**\n  * @brief  Perform a mass erase or erase the specified FLASH memory sectors with interrupt enabled\n  * @param  pEraseInit pointer to an FLASH_EraseInitTypeDef structure that\n  *         contains the configuration information for the erasing.\n  *\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));\n  assert_param(IS_FLASH_BANK(pEraseInit->Banks));\n\n  /* Process Locked */\n  __HAL_LOCK(&pFlash);\n\n  /* Reset error code */\n  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;\n\n  /* Wait for last operation to be completed on Bank 1 */\n  if((pEraseInit->Banks & FLASH_BANK_1) == FLASH_BANK_1)\n  {\n    if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1) != HAL_OK)\n    {\n      status = HAL_ERROR;\n    }\n  }\n\n#if defined (DUAL_BANK)\n  /* Wait for last operation to be completed on Bank 2 */\n  if((pEraseInit->Banks & FLASH_BANK_2) == FLASH_BANK_2)\n  {\n    if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2) != HAL_OK)\n    {\n      status = HAL_ERROR;\n    }\n  }\n#endif /* DUAL_BANK */\n\n  if (status != HAL_OK)\n  {\n    /* Process Unlocked */\n    __HAL_UNLOCK(&pFlash);\n  }\n  else\n  {\n    if((pEraseInit->Banks & FLASH_BANK_1) == FLASH_BANK_1)\n    {\n      /* Enable End of Operation and Error interrupts for Bank 1 */\n#if defined (FLASH_CR_OPERRIE)\n      __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1     | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                  FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_BANK1);\n#else\n      __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1     | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BANK1 | \\\n                                  FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1);\n#endif /* FLASH_CR_OPERRIE */\n    }\n#if defined (DUAL_BANK)\n    if((pEraseInit->Banks & FLASH_BANK_2) == FLASH_BANK_2)\n    {\n      /* Enable End of Operation and Error interrupts for Bank 2 */\n#if defined (FLASH_CR_OPERRIE)\n      __HAL_FLASH_ENABLE_IT_BANK2(FLASH_IT_EOP_BANK2     | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BANK2 | \\\n                                  FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2 | FLASH_IT_OPERR_BANK2);\n#else\n      __HAL_FLASH_ENABLE_IT_BANK2(FLASH_IT_EOP_BANK2     | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BANK2 | \\\n                                  FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2);\n#endif /* FLASH_CR_OPERRIE */\n    }\n#endif /* DUAL_BANK */\n\n    if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)\n    {\n      /*Mass erase to be done*/\n      if(pEraseInit->Banks == FLASH_BANK_1)\n      {\n        pFlash.ProcedureOnGoing = FLASH_PROC_MASSERASE_BANK1;\n      }\n#if defined (DUAL_BANK)\n      else if(pEraseInit->Banks == FLASH_BANK_2)\n      {\n        pFlash.ProcedureOnGoing = FLASH_PROC_MASSERASE_BANK2;\n      }\n#endif /* DUAL_BANK */\n      else\n      {\n        pFlash.ProcedureOnGoing = FLASH_PROC_ALLBANK_MASSERASE;\n      }\n\n      FLASH_MassErase(pEraseInit->VoltageRange, pEraseInit->Banks);\n    }\n    else\n    {\n      /* Erase by sector to be done */\n#if defined (DUAL_BANK)\n      if(pEraseInit->Banks == FLASH_BANK_1)\n      {\n        pFlash.ProcedureOnGoing = FLASH_PROC_SECTERASE_BANK1;\n      }\n      else\n      {\n        pFlash.ProcedureOnGoing = FLASH_PROC_SECTERASE_BANK2;\n      }\n#else\n      pFlash.ProcedureOnGoing = FLASH_PROC_SECTERASE_BANK1;\n#endif /* DUAL_BANK */\n\n      pFlash.NbSectorsToErase = pEraseInit->NbSectors;\n      pFlash.Sector = pEraseInit->Sector;\n      pFlash.VoltageForErase = pEraseInit->VoltageRange;\n\n      /* Erase first sector and wait for IT */\n      FLASH_Erase_Sector(pEraseInit->Sector, pEraseInit->Banks, pEraseInit->VoltageRange);\n    }\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Program option bytes\n  * @param  pOBInit pointer to an FLASH_OBProgramInitTypeDef structure that\n  *         contains the configuration information for the programming.\n  *\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit)\n{\n  HAL_StatusTypeDef status;\n\n  /* Check the parameters */\n  assert_param(IS_OPTIONBYTE(pOBInit->OptionType));\n\n  /* Process Locked */\n  __HAL_LOCK(&pFlash);\n\n  /* Reset Error Code */\n  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;\n\n  /* Wait for last operation to be completed */\n  if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1) != HAL_OK)\n  {\n    status = HAL_ERROR;\n  }\n#if defined (DUAL_BANK)\n  else if(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2) != HAL_OK)\n  {\n    status = HAL_ERROR;\n  }\n#endif /* DUAL_BANK */\n  else\n  {\n    status = HAL_OK;\n  }\n\n  if(status == HAL_OK)\n  {\n    /*Write protection configuration*/\n    if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP)\n    {\n      assert_param(IS_WRPSTATE(pOBInit->WRPState));\n\n      if(pOBInit->WRPState == OB_WRPSTATE_ENABLE)\n      {\n        /*Enable of Write protection on the selected Sector*/\n        FLASH_OB_EnableWRP(pOBInit->WRPSector,pOBInit->Banks);\n      }\n      else\n      {\n        /*Disable of Write protection on the selected Sector*/\n        FLASH_OB_DisableWRP(pOBInit->WRPSector, pOBInit->Banks);\n      }\n    }\n\n    /* Read protection configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_RDP) != 0U)\n    {\n      /* Configure the Read protection level */\n      FLASH_OB_RDPConfig(pOBInit->RDPLevel);\n    }\n\n    /* User Configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_USER) != 0U)\n    {\n      /* Configure the user option bytes */\n      FLASH_OB_UserConfig(pOBInit->USERType, pOBInit->USERConfig);\n    }\n\n    /* PCROP Configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_PCROP) != 0U)\n    {\n      assert_param(IS_FLASH_BANK(pOBInit->Banks));\n\n      /*Configure the Proprietary code readout protection */\n      FLASH_OB_PCROPConfig(pOBInit->PCROPConfig, pOBInit->PCROPStartAddr, pOBInit->PCROPEndAddr, pOBInit->Banks);\n    }\n\n    /* BOR Level configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_BOR) == OPTIONBYTE_BOR)\n    {\n      FLASH_OB_BOR_LevelConfig(pOBInit->BORLevel);\n    }\n\n#if defined(DUAL_CORE)\n    /* CM7 Boot Address  configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_CM7_BOOTADD) == OPTIONBYTE_CM7_BOOTADD)\n    {\n      FLASH_OB_BootAddConfig(pOBInit->BootConfig, pOBInit->BootAddr0, pOBInit->BootAddr1);\n    }\n\n    /* CM4 Boot Address  configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_CM4_BOOTADD) == OPTIONBYTE_CM4_BOOTADD)\n    {\n      FLASH_OB_CM4BootAddConfig(pOBInit->CM4BootConfig, pOBInit->CM4BootAddr0, pOBInit->CM4BootAddr1);\n    }\n#else /* Single Core*/\n    /* Boot Address  configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_BOOTADD) == OPTIONBYTE_BOOTADD)\n    {\n      FLASH_OB_BootAddConfig(pOBInit->BootConfig, pOBInit->BootAddr0, pOBInit->BootAddr1);\n    }\n#endif /*DUAL_CORE*/\n\n    /* Secure area configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_SECURE_AREA) == OPTIONBYTE_SECURE_AREA)\n    {\n      FLASH_OB_SecureAreaConfig(pOBInit->SecureAreaConfig, pOBInit->SecureAreaStartAddr, pOBInit->SecureAreaEndAddr,pOBInit->Banks);\n    }\n\n#if defined(FLASH_OTPBL_LOCKBL)\n    /* OTP Block Lock configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_OTP_LOCK) == OPTIONBYTE_OTP_LOCK)\n    {\n      FLASH_OB_OTP_LockConfig(pOBInit->OTPBlockLock);\n    }\n#endif /* FLASH_OTPBL_LOCKBL */\n\n#if defined(FLASH_OPTSR2_TCM_AXI_SHARED)\n    /* TCM / AXI Shared RAM configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_SHARED_RAM) == OPTIONBYTE_SHARED_RAM)\n    {\n      FLASH_OB_SharedRAM_Config(pOBInit->SharedRamConfig);\n    }\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n\n#if defined(FLASH_OPTSR2_CPUFREQ_BOOST)\n    /* CPU Frequency Boost configuration */\n    if((pOBInit->OptionType & OPTIONBYTE_FREQ_BOOST) == OPTIONBYTE_FREQ_BOOST)\n    {\n      FLASH_OB_CPUFreq_BoostConfig(pOBInit->FreqBoostState);\n    }\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(&pFlash);\n\n  return status;\n}\n\n/**\n  * @brief Get the Option byte configuration\n  * @param  pOBInit pointer to an FLASH_OBProgramInitTypeDef structure that\n  *         contains the configuration information for the programming.\n  * @note   The parameter Banks of the pOBInit structure must be set exclusively to FLASH_BANK_1 or FLASH_BANK_2,\n  *         as this parameter is use to get the given Bank WRP, PCROP and secured area configuration.\n  *\n  * @retval None\n  */\nvoid HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit)\n{\n  pOBInit->OptionType = (OPTIONBYTE_USER | OPTIONBYTE_RDP | OPTIONBYTE_BOR);\n\n  /* Get Read protection level */\n  pOBInit->RDPLevel = FLASH_OB_GetRDP();\n\n  /* Get the user option bytes */\n  pOBInit->USERConfig = FLASH_OB_GetUser();\n\n  /*Get BOR Level*/\n  pOBInit->BORLevel = FLASH_OB_GetBOR();\n\n#if defined (DUAL_BANK)\n  if ((pOBInit->Banks == FLASH_BANK_1) || (pOBInit->Banks == FLASH_BANK_2))\n#else\n  if (pOBInit->Banks == FLASH_BANK_1)\n#endif /* DUAL_BANK */\n  {\n    pOBInit->OptionType |= (OPTIONBYTE_WRP | OPTIONBYTE_PCROP | OPTIONBYTE_SECURE_AREA);\n\n    /* Get write protection on the selected area */\n    FLASH_OB_GetWRP(&(pOBInit->WRPState), &(pOBInit->WRPSector), pOBInit->Banks);\n\n    /* Get the Proprietary code readout protection */\n    FLASH_OB_GetPCROP(&(pOBInit->PCROPConfig), &(pOBInit->PCROPStartAddr), &(pOBInit->PCROPEndAddr), pOBInit->Banks);\n\n    /*Get Bank Secure area*/\n    FLASH_OB_GetSecureArea(&(pOBInit->SecureAreaConfig), &(pOBInit->SecureAreaStartAddr), &(pOBInit->SecureAreaEndAddr), pOBInit->Banks);\n  }\n\n  /*Get Boot Address*/\n  FLASH_OB_GetBootAdd(&(pOBInit->BootAddr0), &(pOBInit->BootAddr1));\n#if defined(DUAL_CORE)\n  pOBInit->OptionType |= OPTIONBYTE_CM7_BOOTADD | OPTIONBYTE_CM4_BOOTADD;\n\n  /*Get CM4 Boot Address*/\n  FLASH_OB_GetCM4BootAdd(&(pOBInit->CM4BootAddr0), &(pOBInit->CM4BootAddr1));\n#else\n  pOBInit->OptionType |= OPTIONBYTE_BOOTADD;\n#endif /*DUAL_CORE*/\n\n#if defined (FLASH_OTPBL_LOCKBL)\n  pOBInit->OptionType |= OPTIONBYTE_OTP_LOCK;\n\n  /* Get OTP Block Lock */\n  pOBInit->OTPBlockLock = FLASH_OB_OTP_GetLock();\n#endif /* FLASH_OTPBL_LOCKBL */\n\n#if defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n  pOBInit->OptionType |= OPTIONBYTE_SHARED_RAM;\n\n  /* Get TCM / AXI Shared RAM */\n  pOBInit->SharedRamConfig = FLASH_OB_SharedRAM_GetConfig();\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n\n#if defined (FLASH_OPTSR2_CPUFREQ_BOOST)\n  pOBInit->OptionType |= OPTIONBYTE_FREQ_BOOST;\n\n  /* Get CPU Frequency Boost */\n  pOBInit->FreqBoostState = FLASH_OB_CPUFreq_GetBoost();\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n}\n\n/**\n  * @brief  Unlock the FLASH Bank1 control registers access\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASHEx_Unlock_Bank1(void)\n{\n  if(READ_BIT(FLASH->CR1, FLASH_CR_LOCK) != 0U)\n  {\n    /* Authorize the FLASH Bank1 Registers access */\n    WRITE_REG(FLASH->KEYR1, FLASH_KEY1);\n    WRITE_REG(FLASH->KEYR1, FLASH_KEY2);\n\n    /* Verify Flash Bank1 is unlocked */\n    if (READ_BIT(FLASH->CR1, FLASH_CR_LOCK) != 0U)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Locks the FLASH Bank1 control registers access\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASHEx_Lock_Bank1(void)\n{\n  /* Set the LOCK Bit to lock the FLASH Bank1 Registers access */\n  SET_BIT(FLASH->CR1, FLASH_CR_LOCK);\n  return HAL_OK;\n}\n\n#if defined (DUAL_BANK)\n/**\n  * @brief  Unlock the FLASH Bank2 control registers access\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASHEx_Unlock_Bank2(void)\n{\n  if(READ_BIT(FLASH->CR2, FLASH_CR_LOCK) != 0U)\n  {\n    /* Authorize the FLASH Bank2 Registers access */\n    WRITE_REG(FLASH->KEYR2, FLASH_KEY1);\n    WRITE_REG(FLASH->KEYR2, FLASH_KEY2);\n\n    /* Verify Flash Bank1 is unlocked */\n    if (READ_BIT(FLASH->CR2, FLASH_CR_LOCK) != 0U)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Locks the FLASH Bank2 control registers access\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_FLASHEx_Lock_Bank2(void)\n{\n  /* Set the LOCK Bit to lock the FLASH Bank2 Registers access */\n  SET_BIT(FLASH->CR2, FLASH_CR_LOCK);\n  return HAL_OK;\n}\n#endif /* DUAL_BANK */\n\n/*\n  * @brief  Perform a CRC computation on the specified FLASH memory area\n  * @param  pCRCInit pointer to an FLASH_CRCInitTypeDef structure that\n  *         contains the configuration information for the CRC computation.\n  * @note   CRC computation uses CRC-32 (Ethernet) polynomial 0x4C11DB7\n  * @note   The application should avoid running a CRC on PCROP or secure-only\n  *         user Flash memory area since it may alter the expected CRC value.\n  *         A special error flag (CRC read error: CRCRDERR) can be used to\n  *         detect such a case.\n  * @retval HAL Status\n*/\nHAL_StatusTypeDef HAL_FLASHEx_ComputeCRC(FLASH_CRCInitTypeDef *pCRCInit, uint32_t *CRC_Result)\n{\n  HAL_StatusTypeDef status;\n  uint32_t sector_index;\n\n  /* Check the parameters */\n  assert_param(IS_FLASH_BANK_EXCLUSIVE(pCRCInit->Bank));\n  assert_param(IS_FLASH_TYPECRC(pCRCInit->TypeCRC));\n\n  /* Wait for OB change operation to be completed */\n  status = FLASH_OB_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\n\n  if (status == HAL_OK)\n  {\n    if (pCRCInit->Bank == FLASH_BANK_1)\n    {\n      /* Enable CRC feature */\n      FLASH->CR1 |= FLASH_CR_CRC_EN;\n\n      /* Clear CRC flags in Status Register: CRC end of calculation and CRC read error */\n      FLASH->CCR1 |= (FLASH_CCR_CLR_CRCEND | FLASH_CCR_CLR_CRCRDERR);\n\n      /* Clear current CRC result, program burst size and define memory area on which CRC has to be computed */\n      FLASH->CRCCR1 |= FLASH_CRCCR_CLEAN_CRC | pCRCInit->BurstSize | pCRCInit->TypeCRC;\n\n      if (pCRCInit->TypeCRC == FLASH_CRC_SECTORS)\n      {\n        /* Clear sectors list */\n        FLASH->CRCCR1 |= FLASH_CRCCR_CLEAN_SECT;\n\n        /* Select CRC sectors */\n        for(sector_index = pCRCInit->Sector; sector_index < (pCRCInit->NbSectors + pCRCInit->Sector); sector_index++)\n        {\n          FLASH_CRC_AddSector(sector_index, FLASH_BANK_1);\n        }\n      }\n      else if (pCRCInit->TypeCRC == FLASH_CRC_BANK)\n      {\n        /* Enable Bank 1 CRC select bit */\n        FLASH->CRCCR1 |= FLASH_CRCCR_ALL_BANK;\n      }\n      else\n      {\n        /* Select CRC start and end addresses */\n        FLASH_CRC_SelectAddress(pCRCInit->CRCStartAddr, pCRCInit->CRCEndAddr, FLASH_BANK_1);\n      }\n\n      /* Start the CRC calculation */\n      FLASH->CRCCR1 |= FLASH_CRCCR_START_CRC;\n\n      /* Wait on CRC busy flag */\n      status = FLASH_CRC_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1);\n\n      /* Return CRC result */\n      (*CRC_Result) = FLASH->CRCDATA;\n\n      /* Disable CRC feature */\n      FLASH->CR1 &= (~FLASH_CR_CRC_EN);\n\n      /* Clear CRC flags */\n      __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_CRCEND_BANK1 | FLASH_FLAG_CRCRDERR_BANK1);\n    }\n#if defined (DUAL_BANK)\n    else\n    {\n      /* Enable CRC feature */\n      FLASH->CR2 |= FLASH_CR_CRC_EN;\n\n      /* Clear CRC flags in Status Register: CRC end of calculation and CRC read error */\n      FLASH->CCR2 |= (FLASH_CCR_CLR_CRCEND | FLASH_CCR_CLR_CRCRDERR);\n\n      /* Clear current CRC result, program burst size and define memory area on which CRC has to be computed */\n      FLASH->CRCCR2 |= FLASH_CRCCR_CLEAN_CRC | pCRCInit->BurstSize | pCRCInit->TypeCRC;\n\n      if (pCRCInit->TypeCRC == FLASH_CRC_SECTORS)\n      {\n        /* Clear sectors list */\n        FLASH->CRCCR2 |= FLASH_CRCCR_CLEAN_SECT;\n\n        /* Add CRC sectors */\n        for(sector_index = pCRCInit->Sector; sector_index < (pCRCInit->NbSectors + pCRCInit->Sector); sector_index++)\n        {\n          FLASH_CRC_AddSector(sector_index, FLASH_BANK_2);\n        }\n      }\n      else if (pCRCInit->TypeCRC == FLASH_CRC_BANK)\n      {\n        /* Enable Bank 2 CRC select bit */\n        FLASH->CRCCR2 |= FLASH_CRCCR_ALL_BANK;\n      }\n      else\n      {\n        /* Select CRC start and end addresses */\n        FLASH_CRC_SelectAddress(pCRCInit->CRCStartAddr, pCRCInit->CRCEndAddr, FLASH_BANK_2);\n      }\n\n      /* Start the CRC calculation */\n      FLASH->CRCCR2 |= FLASH_CRCCR_START_CRC;\n\n      /* Wait on CRC busy flag */\n      status = FLASH_CRC_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2);\n\n      /* Return CRC result */\n      (*CRC_Result) = FLASH->CRCDATA;\n\n      /* Disable CRC feature */\n      FLASH->CR2 &= (~FLASH_CR_CRC_EN);\n\n      /* Clear CRC flags */\n      __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_CRCEND_BANK2 | FLASH_FLAG_CRCRDERR_BANK2);\n    }\n#endif /* DUAL_BANK */\n  }\n\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n\n/** @addtogroup FLASHEx_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Mass erase of FLASH memory\n  * @param  VoltageRange The device program/erase parallelism.\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_VOLTAGE_RANGE_1 : Flash program/erase by 8 bits\n  *            @arg FLASH_VOLTAGE_RANGE_2 : Flash program/erase by 16 bits\n  *            @arg FLASH_VOLTAGE_RANGE_3 : Flash program/erase by 32 bits\n  *            @arg FLASH_VOLTAGE_RANGE_4 : Flash program/erase by 64 bits\n  *\n  * @param  Banks Banks to be erased\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_BANK_1: Bank1 to be erased\n  *            @arg FLASH_BANK_2: Bank2 to be erased\n  *            @arg FLASH_BANK_BOTH: Bank1 and Bank2 to be erased\n  *\n  * @retval HAL Status\n  */\nstatic void FLASH_MassErase(uint32_t VoltageRange, uint32_t Banks)\n{\n  /* Check the parameters */\n#if defined (FLASH_CR_PSIZE)\n  assert_param(IS_VOLTAGERANGE(VoltageRange));\n#else\n  UNUSED(VoltageRange);\n#endif /* FLASH_CR_PSIZE */\n  assert_param(IS_FLASH_BANK(Banks));\n\n#if defined (DUAL_BANK)\n  /* Flash Mass Erase */\n  if((Banks & FLASH_BANK_BOTH) == FLASH_BANK_BOTH)\n  {\n#if defined (FLASH_CR_PSIZE)\n    /* Reset Program/erase VoltageRange for Bank1 and Bank2 */\n    FLASH->CR1 &= (~FLASH_CR_PSIZE);\n    FLASH->CR2 &= (~FLASH_CR_PSIZE);\n\n    /* Set voltage range */\n    FLASH->CR1 |= VoltageRange;\n    FLASH->CR2 |= VoltageRange;\n#endif /* FLASH_CR_PSIZE */\n\n    /* Set Mass Erase Bit */\n    FLASH->OPTCR |= FLASH_OPTCR_MER;\n  }\n  else\n#endif /* DUAL_BANK */\n  {\n    /* Proceed to erase Flash Bank  */\n    if((Banks & FLASH_BANK_1) == FLASH_BANK_1)\n    {\n#if defined (FLASH_CR_PSIZE)\n      /* Set Program/erase VoltageRange for Bank1 */\n      FLASH->CR1 &= (~FLASH_CR_PSIZE);\n      FLASH->CR1 |=  VoltageRange;\n#endif /* FLASH_CR_PSIZE */\n\n      /* Erase Bank1 */\n      FLASH->CR1 |= (FLASH_CR_BER | FLASH_CR_START);\n    }\n\n#if defined (DUAL_BANK)\n    if((Banks & FLASH_BANK_2) == FLASH_BANK_2)\n    {\n#if defined (FLASH_CR_PSIZE)\n      /* Set Program/erase VoltageRange for Bank2 */\n      FLASH->CR2 &= (~FLASH_CR_PSIZE);\n      FLASH->CR2 |= VoltageRange;\n#endif /* FLASH_CR_PSIZE */\n\n      /* Erase Bank2 */\n      FLASH->CR2 |= (FLASH_CR_BER | FLASH_CR_START);\n    }\n#endif /* DUAL_BANK */\n  }\n}\n\n/**\n  * @brief  Erase the specified FLASH memory sector\n  * @param  Sector FLASH sector to erase\n  *          This parameter can be a value of @ref FLASH_Sectors\n  * @param  Banks Banks to be erased\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_BANK_1: Bank1 to be erased\n  *            @arg FLASH_BANK_2: Bank2 to be erased\n  *            @arg FLASH_BANK_BOTH: Bank1 and Bank2 to be erased\n  * @param  VoltageRange The device program/erase parallelism.\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_VOLTAGE_RANGE_1 : Flash program/erase by 8 bits\n  *            @arg FLASH_VOLTAGE_RANGE_2 : Flash program/erase by 16 bits\n  *            @arg FLASH_VOLTAGE_RANGE_3 : Flash program/erase by 32 bits\n  *            @arg FLASH_VOLTAGE_RANGE_4 : Flash program/erase by 64 bits\n  *\n  * @retval None\n  */\nvoid FLASH_Erase_Sector(uint32_t Sector, uint32_t Banks, uint32_t VoltageRange)\n{\n  assert_param(IS_FLASH_SECTOR(Sector));\n  assert_param(IS_FLASH_BANK_EXCLUSIVE(Banks));\n#if defined (FLASH_CR_PSIZE)\n  assert_param(IS_VOLTAGERANGE(VoltageRange));\n#else\n  UNUSED(VoltageRange);\n#endif /* FLASH_CR_PSIZE */\n\n  if((Banks & FLASH_BANK_1) == FLASH_BANK_1)\n  {\n#if defined (FLASH_CR_PSIZE)\n    /* Reset Program/erase VoltageRange and Sector Number for Bank1 */\n    FLASH->CR1 &= ~(FLASH_CR_PSIZE | FLASH_CR_SNB);\n\n    FLASH->CR1 |= (FLASH_CR_SER | VoltageRange | (Sector << FLASH_CR_SNB_Pos) | FLASH_CR_START);\n#else\n    /* Reset Sector Number for Bank1 */\n    FLASH->CR1 &= ~(FLASH_CR_SNB);\n\n    FLASH->CR1 |= (FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos) | FLASH_CR_START);\n#endif /* FLASH_CR_PSIZE */\n  }\n\n#if defined (DUAL_BANK)\n  if((Banks & FLASH_BANK_2) == FLASH_BANK_2)\n  {\n#if defined (FLASH_CR_PSIZE)\n    /* Reset Program/erase VoltageRange and Sector Number for Bank2 */\n    FLASH->CR2 &= ~(FLASH_CR_PSIZE | FLASH_CR_SNB);\n\n    FLASH->CR2 |= (FLASH_CR_SER | VoltageRange  | (Sector << FLASH_CR_SNB_Pos) | FLASH_CR_START);\n#else\n    /* Reset Sector Number for Bank2 */\n    FLASH->CR2 &= ~(FLASH_CR_SNB);\n\n    FLASH->CR2 |= (FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos) | FLASH_CR_START);\n#endif /* FLASH_CR_PSIZE */\n  }\n#endif /* DUAL_BANK */\n}\n\n/**\n  * @brief  Enable the write protection of the desired bank1 or bank 2 sectors\n  * @param  WRPSector specifies the sector(s) to be write protected.\n  *          This parameter can be one of the following values:\n  *            @arg WRPSector:  A combination of OB_WRP_SECTOR_0 to OB_WRP_SECTOR_7 or OB_WRP_SECTOR_ALL\n  *\n  * @param  Banks the specific bank to apply WRP sectors\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_BANK_1: enable WRP on specified bank1 sectors\n  *            @arg FLASH_BANK_2: enable WRP on specified bank2 sectors\n  *            @arg FLASH_BANK_BOTH: enable WRP on both bank1 and bank2 specified sectors\n  *\n  * @retval HAL FLASH State\n  */\nstatic void FLASH_OB_EnableWRP(uint32_t WRPSector, uint32_t Banks)\n{\n  /* Check the parameters */\n  assert_param(IS_OB_WRP_SECTOR(WRPSector));\n  assert_param(IS_FLASH_BANK(Banks));\n\n  if((Banks & FLASH_BANK_1) == FLASH_BANK_1)\n  {\n    /* Enable Write Protection for bank 1 */\n    FLASH->WPSN_PRG1 &= (~(WRPSector & FLASH_WPSN_WRPSN));\n  }\n\n#if defined (DUAL_BANK)\n  if((Banks & FLASH_BANK_2) == FLASH_BANK_2)\n  {\n    /* Enable Write Protection for bank 2 */\n    FLASH->WPSN_PRG2 &= (~(WRPSector & FLASH_WPSN_WRPSN));\n  }\n#endif /* DUAL_BANK */\n}\n\n/**\n  * @brief  Disable the write protection of the desired bank1 or bank 2 sectors\n  * @param  WRPSector specifies the sector(s) to disable write protection.\n  *          This parameter can be one of the following values:\n  *            @arg WRPSector:  A combination of FLASH_OB_WRP_SECTOR_0 to FLASH_OB_WRP_SECTOR_7 or FLASH_OB_WRP_SECTOR_ALL\n  *\n  * @param  Banks the specific bank to apply WRP sectors\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_BANK_1: disable WRP on specified bank1 sectors\n  *            @arg FLASH_BANK_2: disable WRP on specified bank2 sectors\n  *            @arg FLASH_BANK_BOTH: disable WRP on both bank1 and bank2 specified sectors\n  *\n  * @retval HAL FLASH State\n  */\nstatic void FLASH_OB_DisableWRP(uint32_t WRPSector, uint32_t Banks)\n{\n  /* Check the parameters */\n  assert_param(IS_OB_WRP_SECTOR(WRPSector));\n  assert_param(IS_FLASH_BANK(Banks));\n\n  if((Banks & FLASH_BANK_1) == FLASH_BANK_1)\n  {\n    /* Disable Write Protection for bank 1 */\n    FLASH->WPSN_PRG1 |= (WRPSector & FLASH_WPSN_WRPSN);\n  }\n\n#if defined (DUAL_BANK)\n  if((Banks & FLASH_BANK_2) == FLASH_BANK_2)\n  {\n    /* Disable Write Protection for bank 2 */\n    FLASH->WPSN_PRG2 |= (WRPSector & FLASH_WPSN_WRPSN);\n  }\n#endif /* DUAL_BANK */\n}\n\n/**\n  * @brief  Get the write protection of the given bank 1 or bank 2 sectors\n  * @param  WRPState gives the write protection state on the given bank.\n  *          This parameter can be one of the following values:\n  *          @arg WRPState: OB_WRPSTATE_DISABLE or OB_WRPSTATE_ENABLE\n\n  * @param  WRPSector gives the write protected sector(s) on the given bank .\n  *          This parameter can be one of the following values:\n  *          @arg WRPSector: A combination of FLASH_OB_WRP_SECTOR_0 to FLASH_OB_WRP_SECTOR_7 or FLASH_OB_WRP_SECTOR_ALL\n  *\n  * @param  Bank the specific bank to apply WRP sectors\n  *          This parameter can be exclusively one of the following values:\n  *            @arg FLASH_BANK_1: Get bank1 WRP sectors\n  *            @arg FLASH_BANK_2: Get bank2 WRP sectors\n  *            @arg FLASH_BANK_BOTH: note allowed in this functions\n  *\n  * @retval HAL FLASH State\n  */\nstatic void FLASH_OB_GetWRP(uint32_t *WRPState, uint32_t *WRPSector, uint32_t Bank)\n{\n  uint32_t regvalue = 0U;\n\n  if(Bank == FLASH_BANK_1)\n  {\n    regvalue = FLASH->WPSN_CUR1;\n  }\n\n#if defined (DUAL_BANK)\n  if(Bank == FLASH_BANK_2)\n  {\n    regvalue = FLASH->WPSN_CUR2;\n  }\n#endif /* DUAL_BANK */\n\n  (*WRPSector) = (~regvalue) & FLASH_WPSN_WRPSN;\n\n  if(*WRPSector == 0U)\n  {\n    (*WRPState) = OB_WRPSTATE_DISABLE;\n  }\n  else\n  {\n    (*WRPState) = OB_WRPSTATE_ENABLE;\n  }\n}\n\n/**\n  * @brief  Set the read protection level.\n  *\n  * @note   To configure the RDP level, the option lock bit OPTLOCK must be\n  *         cleared with the call of the HAL_FLASH_OB_Unlock() function.\n  * @note   To validate the RDP level, the option bytes must be reloaded\n  *         through the call of the HAL_FLASH_OB_Launch() function.\n  * @note   !!! Warning : When enabling OB_RDP level 2 it's no more possible\n  *         to go back to level 1 or 0 !!!\n  *\n  * @param  RDPLevel specifies the read protection level.\n  *         This parameter can be one of the following values:\n  *            @arg OB_RDP_LEVEL_0: No protection\n  *            @arg OB_RDP_LEVEL_1: Read protection of the memory\n  *            @arg OB_RDP_LEVEL_2: Full chip protection\n  *\n  * @retval HAL status\n  */\nstatic void FLASH_OB_RDPConfig(uint32_t RDPLevel)\n{\n  /* Check the parameters */\n  assert_param(IS_OB_RDP_LEVEL(RDPLevel));\n\n  /* Configure the RDP level in the option bytes register */\n  MODIFY_REG(FLASH->OPTSR_PRG, FLASH_OPTSR_RDP, RDPLevel);\n}\n\n/**\n  * @brief  Get the read protection level.\n  * @retval RDPLevel specifies the read protection level.\n  *         This return value can be one of the following values:\n  *            @arg OB_RDP_LEVEL_0: No protection\n  *            @arg OB_RDP_LEVEL_1: Read protection of the memory\n  *            @arg OB_RDP_LEVEL_2: Full chip protection\n  */\nstatic uint32_t FLASH_OB_GetRDP(void)\n{\n  uint32_t rdp_level = READ_BIT(FLASH->OPTSR_CUR, FLASH_OPTSR_RDP);\n  \n  if ((rdp_level != OB_RDP_LEVEL_0) && (rdp_level != OB_RDP_LEVEL_2))\n  {\n    return (OB_RDP_LEVEL_1);\n  }\n  else\n  {\n    return rdp_level;\n  }\n}\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Program the FLASH User Option Byte.\n  *\n  * @note   To configure the user option bytes, the option lock bit OPTLOCK must\n  *         be cleared with the call of the HAL_FLASH_OB_Unlock() function.\n  *\n  * @note   To validate the user option bytes, the option bytes must be reloaded\n  *         through the call of the HAL_FLASH_OB_Launch() function.\n  *\n  * @param  UserType The FLASH User Option Bytes to be modified :\n  *                   a combination of @ref FLASHEx_OB_USER_Type\n  *\n  * @param  UserConfig The FLASH User Option Bytes values:\n  *         IWDG1_SW(Bit4), IWDG2_SW(Bit 5), nRST_STOP_D1(Bit 6), nRST_STDY_D1(Bit 7),\n  *         FZ_IWDG_STOP(Bit 17), FZ_IWDG_SDBY(Bit 18), ST_RAM_SIZE(Bit[19:20]),\n  *         SECURITY(Bit 21), BCM4(Bit 22), BCM7(Bit 23), nRST_STOP_D2(Bit 24),\n  *         nRST_STDY_D2(Bit 25), IO_HSLV (Bit 29) and SWAP_BANK_OPT(Bit 31).\n  *\n  * @retval HAL status\n  */\n#else\n/**\n  * @brief  Program the FLASH User Option Byte.\n  *\n  * @note   To configure the user option bytes, the option lock bit OPTLOCK must\n  *         be cleared with the call of the HAL_FLASH_OB_Unlock() function.\n  *\n  * @note   To validate the user option bytes, the option bytes must be reloaded\n  *         through the call of the HAL_FLASH_OB_Launch() function.\n  *\n  * @param  UserType The FLASH User Option Bytes to be modified :\n  *                   a combination of @arg FLASHEx_OB_USER_Type\n  *\n  * @param  UserConfig The FLASH User Option Bytes values:\n  *         IWDG_SW(Bit4), nRST_STOP_D1(Bit 6), nRST_STDY_D1(Bit 7),\n  *         FZ_IWDG_STOP(Bit 17), FZ_IWDG_SDBY(Bit 18), ST_RAM_SIZE(Bit[19:20]),\n  *         SECURITY(Bit 21), IO_HSLV (Bit 29) and SWAP_BANK_OPT(Bit 31).\n  *\n  * @retval HAL status\n  */\n#endif /*DUAL_CORE*/\nstatic void FLASH_OB_UserConfig(uint32_t UserType, uint32_t UserConfig)\n{\n  uint32_t optr_reg_val = 0;\n  uint32_t optr_reg_mask = 0;\n\n  /* Check the parameters */\n  assert_param(IS_OB_USER_TYPE(UserType));\n\n  if((UserType & OB_USER_IWDG1_SW) != 0U)\n  {\n    /* IWDG_HW option byte should be modified */\n    assert_param(IS_OB_IWDG1_SOURCE(UserConfig & FLASH_OPTSR_IWDG1_SW));\n\n    /* Set value and mask for IWDG_HW option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_IWDG1_SW);\n    optr_reg_mask |= FLASH_OPTSR_IWDG1_SW;\n  }\n#if defined(DUAL_CORE)\n  if((UserType & OB_USER_IWDG2_SW) != 0U)\n  {\n    /* IWDG2_SW option byte should be modified */\n    assert_param(IS_OB_IWDG2_SOURCE(UserConfig & FLASH_OPTSR_IWDG2_SW));\n\n    /* Set value and mask for IWDG2_SW option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_IWDG2_SW);\n    optr_reg_mask |= FLASH_OPTSR_IWDG2_SW;\n  }\n#endif /*DUAL_CORE*/\n  if((UserType & OB_USER_NRST_STOP_D1) != 0U)\n  {\n    /* NRST_STOP option byte should be modified */\n    assert_param(IS_OB_STOP_D1_RESET(UserConfig & FLASH_OPTSR_NRST_STOP_D1));\n\n    /* Set value and mask for NRST_STOP option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_NRST_STOP_D1);\n    optr_reg_mask |= FLASH_OPTSR_NRST_STOP_D1;\n  }\n\n  if((UserType & OB_USER_NRST_STDBY_D1) != 0U)\n  {\n    /* NRST_STDBY option byte should be modified */\n    assert_param(IS_OB_STDBY_D1_RESET(UserConfig & FLASH_OPTSR_NRST_STBY_D1));\n\n    /* Set value and mask for NRST_STDBY option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_NRST_STBY_D1);\n    optr_reg_mask |= FLASH_OPTSR_NRST_STBY_D1;\n  }\n\n  if((UserType & OB_USER_IWDG_STOP) != 0U)\n  {\n    /* IWDG_STOP option byte should be modified */\n    assert_param(IS_OB_USER_IWDG_STOP(UserConfig & FLASH_OPTSR_FZ_IWDG_STOP));\n\n    /* Set value and mask for IWDG_STOP option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_FZ_IWDG_STOP);\n    optr_reg_mask |= FLASH_OPTSR_FZ_IWDG_STOP;\n  }\n\n  if((UserType & OB_USER_IWDG_STDBY) != 0U)\n  {\n    /* IWDG_STDBY option byte should be modified */\n    assert_param(IS_OB_USER_IWDG_STDBY(UserConfig & FLASH_OPTSR_FZ_IWDG_SDBY));\n\n    /* Set value and mask for IWDG_STDBY option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_FZ_IWDG_SDBY);\n    optr_reg_mask |= FLASH_OPTSR_FZ_IWDG_SDBY;\n  }\n\n  if((UserType & OB_USER_ST_RAM_SIZE) != 0U)\n  {\n    /* ST_RAM_SIZE option byte should be modified */\n    assert_param(IS_OB_USER_ST_RAM_SIZE(UserConfig & FLASH_OPTSR_ST_RAM_SIZE));\n\n    /* Set value and mask for ST_RAM_SIZE option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_ST_RAM_SIZE);\n    optr_reg_mask |= FLASH_OPTSR_ST_RAM_SIZE;\n  }\n\n  if((UserType & OB_USER_SECURITY) != 0U)\n  {\n    /* SECURITY option byte should be modified */\n    assert_param(IS_OB_USER_SECURITY(UserConfig & FLASH_OPTSR_SECURITY));\n\n    /* Set value and mask for SECURITY option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_SECURITY);\n    optr_reg_mask |= FLASH_OPTSR_SECURITY;\n  }\n\n#if defined(DUAL_CORE)\n  if((UserType & OB_USER_BCM4) != 0U)\n  {\n    /* BCM4 option byte should be modified */\n    assert_param(IS_OB_USER_BCM4(UserConfig & FLASH_OPTSR_BCM4));\n\n    /* Set value and mask for BCM4 option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_BCM4);\n    optr_reg_mask |= FLASH_OPTSR_BCM4;\n  }\n\n  if((UserType & OB_USER_BCM7) != 0U)\n  {\n    /* BCM7 option byte should be modified */\n    assert_param(IS_OB_USER_BCM7(UserConfig & FLASH_OPTSR_BCM7));\n\n    /* Set value and mask for BCM7 option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_BCM7);\n    optr_reg_mask |= FLASH_OPTSR_BCM7;\n  }\n#endif /* DUAL_CORE */\n\n#if defined (FLASH_OPTSR_NRST_STOP_D2)\n  if((UserType & OB_USER_NRST_STOP_D2) != 0U)\n  {\n    /* NRST_STOP option byte should be modified */\n    assert_param(IS_OB_STOP_D2_RESET(UserConfig & FLASH_OPTSR_NRST_STOP_D2));\n\n    /* Set value and mask for NRST_STOP option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_NRST_STOP_D2);\n    optr_reg_mask |= FLASH_OPTSR_NRST_STOP_D2;\n  }\n\n  if((UserType & OB_USER_NRST_STDBY_D2) != 0U)\n  {\n    /* NRST_STDBY option byte should be modified */\n    assert_param(IS_OB_STDBY_D2_RESET(UserConfig & FLASH_OPTSR_NRST_STBY_D2));\n\n    /* Set value and mask for NRST_STDBY option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_NRST_STBY_D2);\n    optr_reg_mask |= FLASH_OPTSR_NRST_STBY_D2;\n  }\n#endif /* FLASH_OPTSR_NRST_STOP_D2 */\n\n#if defined (DUAL_BANK)\n  if((UserType & OB_USER_SWAP_BANK) != 0U)\n  {\n    /* SWAP_BANK_OPT option byte should be modified */\n    assert_param(IS_OB_USER_SWAP_BANK(UserConfig & FLASH_OPTSR_SWAP_BANK_OPT));\n\n    /* Set value and mask for SWAP_BANK_OPT option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_SWAP_BANK_OPT);\n    optr_reg_mask |= FLASH_OPTSR_SWAP_BANK_OPT;\n  }\n#endif /* DUAL_BANK */\n\n  if((UserType & OB_USER_IOHSLV) != 0U)\n  {\n    /* IOHSLV_OPT option byte should be modified */\n    assert_param(IS_OB_USER_IOHSLV(UserConfig & FLASH_OPTSR_IO_HSLV));\n\n    /* Set value and mask for IOHSLV_OPT option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_IO_HSLV);\n    optr_reg_mask |= FLASH_OPTSR_IO_HSLV;\n  }\n\n#if defined (FLASH_OPTSR_VDDMMC_HSLV)\n  if((UserType & OB_USER_VDDMMC_HSLV) != 0U)\n  {\n    /* VDDMMC_HSLV option byte should be modified */\n    assert_param(IS_OB_USER_VDDMMC_HSLV(UserConfig & FLASH_OPTSR_VDDMMC_HSLV));\n\n    /* Set value and mask for VDDMMC_HSLV option byte */\n    optr_reg_val |= (UserConfig & FLASH_OPTSR_VDDMMC_HSLV);\n    optr_reg_mask |= FLASH_OPTSR_VDDMMC_HSLV;\n  }\n#endif /* FLASH_OPTSR_VDDMMC_HSLV */\n\n  /* Configure the option bytes register */\n  MODIFY_REG(FLASH->OPTSR_PRG, optr_reg_mask, optr_reg_val);\n}\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Return the FLASH User Option Byte value.\n  * @retval The FLASH User Option Bytes values\n  *         IWDG1_SW(Bit4), IWDG2_SW(Bit 5), nRST_STOP_D1(Bit 6), nRST_STDY_D1(Bit 7),\n  *         FZ_IWDG_STOP(Bit 17), FZ_IWDG_SDBY(Bit 18), ST_RAM_SIZE(Bit[19:20]),\n  *         SECURITY(Bit 21), BCM4(Bit 22), BCM7(Bit 23), nRST_STOP_D2(Bit 24),\n  *         nRST_STDY_D2(Bit 25), IO_HSLV (Bit 29) and SWAP_BANK_OPT(Bit 31).\n  */\n#else\n/**\n  * @brief  Return the FLASH User Option Byte value.\n  * @retval The FLASH User Option Bytes values\n  *         IWDG_SW(Bit4), nRST_STOP_D1(Bit 6), nRST_STDY_D1(Bit 7),\n  *         FZ_IWDG_STOP(Bit 17), FZ_IWDG_SDBY(Bit 18), ST_RAM_SIZE(Bit[19:20]),\n  *         SECURITY(Bit 21), IO_HSLV (Bit 29) and SWAP_BANK_OPT(Bit 31).\n  */\n#endif /*DUAL_CORE*/\nstatic uint32_t FLASH_OB_GetUser(void)\n{\n  uint32_t userConfig = READ_REG(FLASH->OPTSR_CUR);\n  userConfig &= (~(FLASH_OPTSR_BOR_LEV | FLASH_OPTSR_RDP));\n\n  return userConfig;\n}\n\n/**\n  * @brief  Configure the Proprietary code readout protection of the desired addresses\n  *\n  * @note   To configure the PCROP options, the option lock bit OPTLOCK must be\n  *         cleared with the call of the HAL_FLASH_OB_Unlock() function.\n  * @note   To validate the PCROP options, the option bytes must be reloaded\n  *         through the call of the HAL_FLASH_OB_Launch() function.\n  *\n  * @param  PCROPConfig specifies if the PCROP area for the given Bank shall be erased or not\n  *         when RDP level decreased from Level 1 to Level 0, or after a bank erase with protection removal\n  *         This parameter must be a value of @arg FLASHEx_OB_PCROP_RDP enumeration\n  *\n  * @param  PCROPStartAddr specifies the start address of the Proprietary code readout protection\n  *          This parameter can be an address between begin and end of the bank\n  *\n  * @param  PCROPEndAddr specifies the end address of the Proprietary code readout protection\n  *          This parameter can be an address between PCROPStartAddr and end of the bank\n  *\n  * @param  Banks the specific bank to apply PCROP protection\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_BANK_1: PCROP on specified bank1 area\n  *            @arg FLASH_BANK_2: PCROP on specified bank2 area\n  *            @arg FLASH_BANK_BOTH: PCROP on specified bank1 and bank2 area (same config will be applied on both banks)\n  *\n  * @retval None\n  */\nstatic void FLASH_OB_PCROPConfig(uint32_t PCROPConfig, uint32_t PCROPStartAddr, uint32_t PCROPEndAddr, uint32_t Banks)\n{\n  /* Check the parameters */\n  assert_param(IS_FLASH_BANK(Banks));\n  assert_param(IS_OB_PCROP_RDP(PCROPConfig));\n\n  if((Banks & FLASH_BANK_1) == FLASH_BANK_1)\n  {\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK1(PCROPStartAddr));\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK1(PCROPEndAddr));\n\n    /* Configure the Proprietary code readout protection */\n    FLASH->PRAR_PRG1 = ((PCROPStartAddr - FLASH_BANK1_BASE) >> 8)                                 | \\\n                       (((PCROPEndAddr - FLASH_BANK1_BASE) >> 8) << FLASH_PRAR_PROT_AREA_END_Pos) | \\\n                       PCROPConfig;\n  }\n\n#if defined (DUAL_BANK)\n  if((Banks & FLASH_BANK_2) == FLASH_BANK_2)\n  {\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK2(PCROPStartAddr));\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK2(PCROPEndAddr));\n\n    /* Configure the Proprietary code readout protection */\n    FLASH->PRAR_PRG2 = ((PCROPStartAddr - FLASH_BANK2_BASE) >> 8)                                 | \\\n                       (((PCROPEndAddr - FLASH_BANK2_BASE) >> 8) << FLASH_PRAR_PROT_AREA_END_Pos) | \\\n                       PCROPConfig;\n  }\n#endif /* DUAL_BANK */\n}\n\n/**\n  * @brief  Get the Proprietary code readout protection configuration on a given Bank\n  *\n  * @param  PCROPConfig indicates if the PCROP area for the given Bank shall be erased or not\n  *         when RDP level decreased from Level 1 to Level 0 or after a bank erase with protection removal\n  *\n  * @param  PCROPStartAddr gives the start address of the Proprietary code readout protection of the bank\n  *\n  * @param  PCROPEndAddr gives the end address of the Proprietary code readout protection of the bank\n  *\n  * @param  Bank the specific bank to apply PCROP protection\n  *          This parameter can be exclusively one of the following values:\n  *            @arg FLASH_BANK_1: PCROP on specified bank1 area\n  *            @arg FLASH_BANK_2: PCROP on specified bank2 area\n  *            @arg FLASH_BANK_BOTH: is  not allowed here\n  *\n  * @retval None\n  */\nstatic void FLASH_OB_GetPCROP(uint32_t *PCROPConfig, uint32_t *PCROPStartAddr, uint32_t *PCROPEndAddr, uint32_t Bank)\n{\n  uint32_t regvalue = 0;\n  uint32_t bankBase = 0;\n\n  if(Bank == FLASH_BANK_1)\n  {\n    regvalue = FLASH->PRAR_CUR1;\n    bankBase = FLASH_BANK1_BASE;\n  }\n\n#if defined (DUAL_BANK)\n  if(Bank == FLASH_BANK_2)\n  {\n    regvalue = FLASH->PRAR_CUR2;\n    bankBase = FLASH_BANK2_BASE;\n  }\n#endif /* DUAL_BANK */\n\n  (*PCROPConfig) =  (regvalue & FLASH_PRAR_DMEP);\n\n  (*PCROPStartAddr) = ((regvalue & FLASH_PRAR_PROT_AREA_START) << 8) + bankBase;\n  (*PCROPEndAddr) = (regvalue & FLASH_PRAR_PROT_AREA_END) >> FLASH_PRAR_PROT_AREA_END_Pos;\n  (*PCROPEndAddr) = ((*PCROPEndAddr) << 8) + bankBase;\n}\n\n/**\n  * @brief  Set the BOR Level.\n  * @param  Level specifies the Option Bytes BOR Reset Level.\n  *          This parameter can be one of the following values:\n  *            @arg OB_BOR_LEVEL0: Reset level threshold is set to 1.6V\n  *            @arg OB_BOR_LEVEL1: Reset level threshold is set to 2.1V\n  *            @arg OB_BOR_LEVEL2: Reset level threshold is set to 2.4V\n  *            @arg OB_BOR_LEVEL3: Reset level threshold is set to 2.7V\n  * @retval None\n  */\nstatic void FLASH_OB_BOR_LevelConfig(uint32_t Level)\n{\n  assert_param(IS_OB_BOR_LEVEL(Level));\n\n  /* Configure BOR_LEV option byte */\n  MODIFY_REG(FLASH->OPTSR_PRG, FLASH_OPTSR_BOR_LEV, Level);\n}\n\n/**\n  * @brief  Get the BOR Level.\n  * @retval The Option Bytes BOR Reset Level.\n  *            This parameter can be one of the following values:\n  *            @arg OB_BOR_LEVEL0: Reset level threshold is set to 1.6V\n  *            @arg OB_BOR_LEVEL1: Reset level threshold is set to 2.1V\n  *            @arg OB_BOR_LEVEL2: Reset level threshold is set to 2.4V\n  *            @arg OB_BOR_LEVEL3: Reset level threshold is set to 2.7V\n  */\nstatic uint32_t FLASH_OB_GetBOR(void)\n{\n  return (FLASH->OPTSR_CUR & FLASH_OPTSR_BOR_LEV);\n}\n\n/**\n  * @brief  Set Boot address\n  * @param  BootOption Boot address option byte to be programmed,\n  *                     This parameter must be a value of @ref FLASHEx_OB_BOOT_OPTION\n                        (OB_BOOT_ADD0, OB_BOOT_ADD1 or OB_BOOT_ADD_BOTH)\n  *\n  * @param  BootAddress0 Specifies the Boot Address 0\n  * @param  BootAddress1 Specifies the Boot Address 1\n  * @retval HAL Status\n  */\nstatic void FLASH_OB_BootAddConfig(uint32_t BootOption, uint32_t BootAddress0, uint32_t BootAddress1)\n{\n  /* Check the parameters */\n  assert_param(IS_OB_BOOT_ADD_OPTION(BootOption));\n\n  if((BootOption & OB_BOOT_ADD0) == OB_BOOT_ADD0)\n  {\n    /* Check the parameters */\n    assert_param(IS_BOOT_ADDRESS(BootAddress0));\n\n    /* Configure CM7 BOOT ADD0 */\n#if defined(DUAL_CORE)\n    MODIFY_REG(FLASH->BOOT7_PRG, FLASH_BOOT7_BCM7_ADD0, (BootAddress0 >> 16));\n#else /* Single Core*/\n    MODIFY_REG(FLASH->BOOT_PRG, FLASH_BOOT_ADD0, (BootAddress0 >> 16));\n#endif /* DUAL_CORE */\n  }\n\n  if((BootOption & OB_BOOT_ADD1) == OB_BOOT_ADD1)\n  {\n    /* Check the parameters */\n    assert_param(IS_BOOT_ADDRESS(BootAddress1));\n\n    /* Configure CM7 BOOT ADD1 */\n#if defined(DUAL_CORE)\n    MODIFY_REG(FLASH->BOOT7_PRG, FLASH_BOOT7_BCM7_ADD1, BootAddress1);\n#else /* Single Core*/\n    MODIFY_REG(FLASH->BOOT_PRG, FLASH_BOOT_ADD1, BootAddress1);\n#endif /* DUAL_CORE */\n  }\n}\n\n/**\n  * @brief  Get Boot address\n  * @param  BootAddress0 Specifies the Boot Address 0.\n  * @param  BootAddress1 Specifies the Boot Address 1.\n  * @retval HAL Status\n  */\nstatic void FLASH_OB_GetBootAdd(uint32_t *BootAddress0, uint32_t *BootAddress1)\n{\n  uint32_t regvalue;\n\n#if defined(DUAL_CORE)\n  regvalue = FLASH->BOOT7_CUR;\n\n  (*BootAddress0) = (regvalue & FLASH_BOOT7_BCM7_ADD0) << 16;\n  (*BootAddress1) = (regvalue & FLASH_BOOT7_BCM7_ADD1);\n#else /* Single Core */\n  regvalue = FLASH->BOOT_CUR;\n\n  (*BootAddress0) = (regvalue & FLASH_BOOT_ADD0) << 16;\n  (*BootAddress1) = (regvalue & FLASH_BOOT_ADD1);\n#endif /* DUAL_CORE */\n}\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Set CM4 Boot address\n  * @param  BootOption Boot address option byte to be programmed,\n  *                     This parameter must be a value of @ref FLASHEx_OB_BOOT_OPTION\n                        (OB_BOOT_ADD0, OB_BOOT_ADD1 or OB_BOOT_ADD_BOTH)\n  *\n  * @param  BootAddress0 Specifies the CM4 Boot Address 0.\n  * @param  BootAddress1 Specifies the CM4 Boot Address 1.\n  * @retval HAL Status\n  */\nstatic void FLASH_OB_CM4BootAddConfig(uint32_t BootOption, uint32_t BootAddress0, uint32_t BootAddress1)\n{\n  /* Check the parameters */\n  assert_param(IS_OB_BOOT_ADD_OPTION(BootOption));\n\n  if((BootOption & OB_BOOT_ADD0) == OB_BOOT_ADD0)\n  {\n    /* Check the parameters */\n    assert_param(IS_BOOT_ADDRESS(BootAddress0));\n\n    /* Configure CM4 BOOT ADD0 */\n    MODIFY_REG(FLASH->BOOT4_PRG, FLASH_BOOT4_BCM4_ADD0, (BootAddress0 >> 16));\n\n  }\n\n  if((BootOption & OB_BOOT_ADD1) == OB_BOOT_ADD1)\n  {\n    /* Check the parameters */\n    assert_param(IS_BOOT_ADDRESS(BootAddress1));\n\n    /* Configure CM4 BOOT ADD1 */\n    MODIFY_REG(FLASH->BOOT4_PRG, FLASH_BOOT4_BCM4_ADD1, BootAddress1);\n  }\n}\n\n/**\n  * @brief  Get CM4 Boot address\n  * @param  BootAddress0 Specifies the CM4 Boot Address 0.\n  * @param  BootAddress1 Specifies the CM4 Boot Address 1.\n  * @retval HAL Status\n  */\nstatic void FLASH_OB_GetCM4BootAdd(uint32_t *BootAddress0, uint32_t *BootAddress1)\n{\n  uint32_t regvalue;\n\n  regvalue = FLASH->BOOT4_CUR;\n\n  (*BootAddress0) = (regvalue & FLASH_BOOT4_BCM4_ADD0) << 16;\n  (*BootAddress1) = (regvalue & FLASH_BOOT4_BCM4_ADD1);\n}\n#endif /*DUAL_CORE*/\n\n/**\n  * @brief  Set secure area configuration\n  * @param  SecureAreaConfig specify if the secure area will be deleted or not\n  *         when RDP level decreased from Level 1 to Level 0 or during a mass erase.\n  *\n  * @param  SecureAreaStartAddr Specifies the secure area start address\n  * @param  SecureAreaEndAddr Specifies the secure area end address\n  * @param  Banks the specific bank to apply Security protection\n  *          This parameter can be one of the following values:\n  *            @arg FLASH_BANK_1: Secure area on specified bank1 area\n  *            @arg FLASH_BANK_2: Secure area on specified bank2 area\n  *            @arg FLASH_BANK_BOTH: Secure area on specified bank1 and bank2 area (same config will be applied on both banks)\n  * @retval None\n  */\nstatic void FLASH_OB_SecureAreaConfig(uint32_t SecureAreaConfig, uint32_t SecureAreaStartAddr, uint32_t SecureAreaEndAddr, uint32_t Banks)\n{\n  /* Check the parameters */\n  assert_param(IS_FLASH_BANK(Banks));\n  assert_param(IS_OB_SECURE_RDP(SecureAreaConfig));\n\n  if((Banks & FLASH_BANK_1) == FLASH_BANK_1)\n  {\n    /* Check the parameters */\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK1(SecureAreaStartAddr));\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK1(SecureAreaEndAddr));\n\n    /* Configure the secure area */\n    FLASH->SCAR_PRG1 = ((SecureAreaStartAddr - FLASH_BANK1_BASE) >> 8)                                | \\\n                       (((SecureAreaEndAddr - FLASH_BANK1_BASE) >> 8) << FLASH_SCAR_SEC_AREA_END_Pos) | \\\n                       (SecureAreaConfig & FLASH_SCAR_DMES);\n  }\n\n#if defined (DUAL_BANK)\n  if((Banks & FLASH_BANK_2) == FLASH_BANK_2)\n  {\n    /* Check the parameters */\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK2(SecureAreaStartAddr));\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK2(SecureAreaEndAddr));\n\n    /* Configure the secure area */\n    FLASH->SCAR_PRG2 = ((SecureAreaStartAddr - FLASH_BANK2_BASE) >> 8)                                | \\\n                       (((SecureAreaEndAddr - FLASH_BANK2_BASE) >> 8) << FLASH_SCAR_SEC_AREA_END_Pos) | \\\n                       (SecureAreaConfig & FLASH_SCAR_DMES);\n  }\n#endif /* DUAL_BANK */\n}\n\n/**\n  * @brief  Get secure area configuration\n  * @param  SecureAreaConfig indicates if the secure area will be deleted or not\n  *         when RDP level decreased from Level 1 to Level 0 or during a mass erase.\n  * @param  SecureAreaStartAddr gives the secure area start address\n  * @param  SecureAreaEndAddr gives the secure area end address\n  * @param  Bank Specifies the Bank\n  * @retval None\n  */\nstatic void FLASH_OB_GetSecureArea(uint32_t *SecureAreaConfig, uint32_t *SecureAreaStartAddr, uint32_t *SecureAreaEndAddr, uint32_t Bank)\n{\n  uint32_t regvalue = 0;\n  uint32_t bankBase = 0;\n\n  /* Check Bank parameter value */\n  if(Bank == FLASH_BANK_1)\n  {\n    regvalue = FLASH->SCAR_CUR1;\n    bankBase = FLASH_BANK1_BASE;\n  }\n\n#if defined (DUAL_BANK)\n  if(Bank == FLASH_BANK_2)\n  {\n    regvalue = FLASH->SCAR_CUR2;\n    bankBase = FLASH_BANK2_BASE;\n  }\n#endif /* DUAL_BANK */\n\n  /* Get the secure area settings */\n  (*SecureAreaConfig) = (regvalue & FLASH_SCAR_DMES);\n  (*SecureAreaStartAddr) = ((regvalue & FLASH_SCAR_SEC_AREA_START) << 8) + bankBase;\n  (*SecureAreaEndAddr) = (regvalue & FLASH_SCAR_SEC_AREA_END) >> FLASH_SCAR_SEC_AREA_END_Pos;\n  (*SecureAreaEndAddr) = ((*SecureAreaEndAddr) << 8) + bankBase;\n}\n\n/**\n  * @brief  Add a CRC sector to the list of sectors on which the CRC will be calculated\n  * @param  Sector Specifies the CRC sector number\n  * @param  Bank Specifies the Bank\n  * @retval None\n  */\nstatic void FLASH_CRC_AddSector(uint32_t Sector, uint32_t Bank)\n{\n  /* Check the parameters */\n  assert_param(IS_FLASH_SECTOR(Sector));\n\n  if (Bank == FLASH_BANK_1)\n  {\n    /* Clear CRC sector */\n    FLASH->CRCCR1 &= (~FLASH_CRCCR_CRC_SECT);\n\n    /* Select CRC Sector and activate ADD_SECT bit */\n    FLASH->CRCCR1 |= Sector | FLASH_CRCCR_ADD_SECT;\n  }\n#if defined (DUAL_BANK)\n  else\n  {\n    /* Clear CRC sector */\n    FLASH->CRCCR2 &= (~FLASH_CRCCR_CRC_SECT);\n\n    /* Select CRC Sector and activate ADD_SECT bit */\n    FLASH->CRCCR2 |= Sector | FLASH_CRCCR_ADD_SECT;\n  }\n#endif /* DUAL_BANK */\n}\n\n/**\n  * @brief  Select CRC start and end memory addresses on which the CRC will be calculated\n  * @param  CRCStartAddr Specifies the CRC start address\n  * @param  CRCEndAddr Specifies the CRC end address\n  * @param  Bank Specifies the Bank\n  * @retval None\n  */\nstatic void FLASH_CRC_SelectAddress(uint32_t CRCStartAddr, uint32_t CRCEndAddr, uint32_t Bank)\n{\n  if (Bank == FLASH_BANK_1)\n  {\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK1(CRCStartAddr));\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK1(CRCEndAddr));\n\n    /* Write CRC Start and End addresses */\n    FLASH->CRCSADD1 = CRCStartAddr;\n    FLASH->CRCEADD1 = CRCEndAddr;\n  }\n#if defined (DUAL_BANK)\n  else\n  {\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK2(CRCStartAddr));\n    assert_param(IS_FLASH_PROGRAM_ADDRESS_BANK2(CRCEndAddr));\n\n    /* Write CRC Start and End addresses */\n    FLASH->CRCSADD2 = CRCStartAddr;\n    FLASH->CRCEADD2 = CRCEndAddr;\n  }\n#endif /* DUAL_BANK */\n}\n/**\n  * @}\n  */\n\n#if defined (FLASH_OTPBL_LOCKBL)\n/**\n  * @brief  Configure the OTP Block Lock.\n  * @param  OTP_Block specifies the OTP Block to lock.\n  *         This parameter can be a value of @ref FLASHEx_OTP_Blocks\n  * @retval None\n  */\nstatic void FLASH_OB_OTP_LockConfig(uint32_t OTP_Block)\n{\n  /* Check the parameters */\n  assert_param(IS_OTP_BLOCK(OTP_Block));\n\n  /* Configure the OTP Block lock in the option bytes register */\n  FLASH->OTPBL_PRG |= (OTP_Block & FLASH_OTPBL_LOCKBL);\n}\n\n/**\n  * @brief  Get the OTP Block Lock.\n  * @retval OTP_Block specifies the OTP Block to lock.\n  *         This return value can be a value of @ref FLASHEx_OTP_Blocks\n  */\nstatic uint32_t FLASH_OB_OTP_GetLock(void)\n{\n  return (FLASH->OTPBL_CUR);\n}\n#endif /* FLASH_OTPBL_LOCKBL */\n\n#if defined (FLASH_OPTSR2_TCM_AXI_SHARED)\n/**\n  * @brief  Configure the TCM / AXI Shared RAM.\n  * @param  SharedRamConfig specifies the Shared RAM configuration.\n  *         This parameter can be a value of @ref FLASHEx_OB_TCM_AXI_SHARED\n  * @retval None\n  */\nstatic void FLASH_OB_SharedRAM_Config(uint32_t SharedRamConfig)\n{\n  /* Check the parameters */\n  assert_param(IS_OB_USER_TCM_AXI_SHARED(SharedRamConfig));\n\n  /* Configure the TCM / AXI Shared RAM in the option bytes register */\n  MODIFY_REG(FLASH->OPTSR2_PRG, FLASH_OPTSR2_TCM_AXI_SHARED, SharedRamConfig);\n}\n\n/**\n  * @brief  Get the TCM / AXI Shared RAM configuration.\n  * @retval SharedRamConfig returns the TCM / AXI Shared RAM configuration.\n  *         This return value can be a value of @ref FLASHEx_OB_TCM_AXI_SHARED\n  */\nstatic uint32_t FLASH_OB_SharedRAM_GetConfig(void)\n{\n  return (FLASH->OPTSR2_CUR & FLASH_OPTSR2_TCM_AXI_SHARED);\n}\n#endif /* FLASH_OPTSR2_TCM_AXI_SHARED */\n\n#if defined (FLASH_OPTSR2_CPUFREQ_BOOST)\n/**\n  * @brief  Configure the CPU Frequency Boost.\n  * @param  FreqBoost specifies the CPU Frequency Boost state.\n  *         This parameter can be a value of @ref FLASHEx_OB_CPUFREQ_BOOST\n  * @retval None\n  */\nstatic void FLASH_OB_CPUFreq_BoostConfig(uint32_t FreqBoost)\n{\n  /* Check the parameters */\n  assert_param(IS_OB_USER_CPUFREQ_BOOST(FreqBoost));\n\n  /* Configure the CPU Frequency Boost in the option bytes register */\n  MODIFY_REG(FLASH->OPTSR2_PRG, FLASH_OPTSR2_CPUFREQ_BOOST, FreqBoost);\n}\n\n/**\n  * @brief  Get the CPU Frequency Boost state.\n  * @retval FreqBoost returns the CPU Frequency Boost state.\n  *         This return value can be a value of @ref FLASHEx_OB_CPUFREQ_BOOST\n  */\nstatic uint32_t FLASH_OB_CPUFreq_GetBoost(void)\n{\n  return (FLASH->OPTSR2_CUR & FLASH_OPTSR2_CPUFREQ_BOOST);\n}\n#endif /* FLASH_OPTSR2_CPUFREQ_BOOST */\n\n#endif /* HAL_FLASH_MODULE_ENABLED */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_gpio.c\n  * @author  MCD Application Team\n  * @brief   GPIO HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the General Purpose Input/Output (GPIO) peripheral:\n  *           + Initialization and de-initialization functions\n  *           + IO operation functions\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                    ##### GPIO Peripheral features #####\n  ==============================================================================\n  [..]\n    (+) Each port bit of the general-purpose I/O (GPIO) ports can be individually\n        configured by software in several modes:\n        (++) Input mode\n        (++) Analog mode\n        (++) Output mode\n        (++) Alternate function mode\n        (++) External interrupt/event lines\n\n    (+) During and just after reset, the alternate functions and external interrupt\n        lines are not active and the I/O ports are configured in input floating mode.\n\n    (+) All GPIO pins have weak internal pull-up and pull-down resistors, which can be\n        activated or not.\n\n    (+) In Output or Alternate mode, each IO can be configured on open-drain or push-pull\n        type and the IO speed can be selected depending on the VDD value.\n\n    (+) The microcontroller IO pins are connected to onboard peripherals/modules through a\n        multiplexer that allows only one peripheral alternate function (AF) connected\n       to an IO pin at a time. In this way, there can be no conflict between peripherals\n       sharing the same IO pin.\n\n    (+) All ports have external interrupt/event capability. To use external interrupt\n        lines, the port must be configured in input mode. All available GPIO pins are\n        connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.\n\n  The external interrupt/event controller consists of up to 23 edge detectors\n        (16 lines are connected to GPIO) for generating event/interrupt requests (each\n        input line can be independently configured to select the type (interrupt or event)\n        and the corresponding trigger event (rising or falling or both). Each line can\n        also be masked independently.\n\n                     ##### How to use this driver #####\n  ==============================================================================\n  [..]\n    (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE().\n\n    (#) Configure the GPIO pin(s) using HAL_GPIO_Init().\n        (++) Configure the IO mode using \"Mode\" member from GPIO_InitTypeDef structure\n        (++) Activate Pull-up, Pull-down resistor using \"Pull\" member from GPIO_InitTypeDef\n             structure.\n        (++) In case of Output or alternate function mode selection: the speed is\n             configured through \"Speed\" member from GPIO_InitTypeDef structure.\n        (++) In alternate mode is selection, the alternate function connected to the IO\n             is configured through \"Alternate\" member from GPIO_InitTypeDef structure.\n        (++) Analog mode is required when a pin is to be used as ADC channel\n             or DAC output.\n        (++) In case of external interrupt/event selection the \"Mode\" member from\n             GPIO_InitTypeDef structure select the type (interrupt or event) and\n             the corresponding trigger event (rising or falling or both).\n\n    (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority\n        mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using\n        HAL_NVIC_EnableIRQ().\n\n    (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().\n\n    (#) To set/reset the level of a pin configured in output mode use\n        HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().\n\n   (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().\n\n\n    (#) During and just after reset, the alternate functions are not\n        active and the GPIO pins are configured in input floating mode (except JTAG\n        pins).\n\n    (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose\n        (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has\n        priority over the GPIO function.\n\n    (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as\n        general purpose PH0 and PH1, respectively, when the HSE oscillator is off.\n        The HSE has priority over the GPIO function.\n\n  @endverbatim\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup GPIO  GPIO\n  * @brief GPIO HAL module driver\n  * @{\n  */\n\n#ifdef HAL_GPIO_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private defines ------------------------------------------------------------*/\n/** @addtogroup GPIO_Private_Constants GPIO Private Constants\n  * @{\n  */\n\n#if defined(DUAL_CORE)\n#define EXTI_CPU1             (0x01000000U)\n#define EXTI_CPU2             (0x02000000U)\n#endif /*DUAL_CORE*/\n#define GPIO_NUMBER           (16U)\n/**\n  * @}\n  */\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup GPIO_Exported_Functions GPIO Exported Functions\n  * @{\n  */\n\n/** @defgroup GPIO_Exported_Functions_Group1 Initialization and de-initialization functions\n *  @brief    Initialization and Configuration functions\n *\n@verbatim\n ===============================================================================\n              ##### Initialization and de-initialization functions #####\n ===============================================================================\n  [..]\n    This section provides functions allowing to initialize and de-initialize the GPIOs\n    to be ready for use.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init.\n  * @param  GPIOx: where x can be (A..K) to select the GPIO peripheral.\n  * @param  GPIO_Init: pointer to a GPIO_InitTypeDef structure that contains\n  *         the configuration information for the specified GPIO peripheral.\n  * @retval None\n  */\nvoid HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)\n{\n  uint32_t position = 0x00U;\n  uint32_t iocurrent;\n  uint32_t temp;\n  EXTI_Core_TypeDef *EXTI_CurrentCPU;\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  EXTI_CurrentCPU = EXTI_D2; /* EXTI for CM4 CPU */\n#else\n  EXTI_CurrentCPU = EXTI_D1; /* EXTI for CM7 CPU */\n#endif\n\n  /* Check the parameters */\n  assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));\n  assert_param(IS_GPIO_PIN(GPIO_Init->Pin));\n  assert_param(IS_GPIO_MODE(GPIO_Init->Mode));\n\n  /* Configure the port pins */\n  while (((GPIO_Init->Pin) >> position) != 0x00U)\n  {\n    /* Get current io position */\n    iocurrent = (GPIO_Init->Pin) & (1UL << position);\n\n    if (iocurrent != 0x00U)\n    {\n      /*--------------------- GPIO Mode Configuration ------------------------*/\n      /* In case of Output or Alternate function mode selection */\n      if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF))\n      {\n        /* Check the Speed parameter */\n        assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));\n\n        /* Configure the IO Speed */\n        temp = GPIOx->OSPEEDR;\n        temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U));\n        temp |= (GPIO_Init->Speed << (position * 2U));\n        GPIOx->OSPEEDR = temp;\n\n        /* Configure the IO Output Type */\n        temp = GPIOx->OTYPER;\n        temp &= ~(GPIO_OTYPER_OT0 << position) ;\n        temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position);\n        GPIOx->OTYPER = temp;\n      }\n\n      if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG)\n      {\n       /* Check the Pull parameter */\n       assert_param(IS_GPIO_PULL(GPIO_Init->Pull));\n\n      /* Activate the Pull-up or Pull down resistor for the current IO */\n      temp = GPIOx->PUPDR;\n      temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));\n      temp |= ((GPIO_Init->Pull) << (position * 2U));\n      GPIOx->PUPDR = temp;\n      }\n\n      /* In case of Alternate function mode selection */\n      if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)\n      {\n        /* Check the Alternate function parameters */\n        assert_param(IS_GPIO_AF_INSTANCE(GPIOx));\n        assert_param(IS_GPIO_AF(GPIO_Init->Alternate));\n\n        /* Configure Alternate function mapped with the current IO */\n        temp = GPIOx->AFR[position >> 3U];\n        temp &= ~(0xFU << ((position & 0x07U) * 4U));\n        temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U));\n        GPIOx->AFR[position >> 3U] = temp;\n      }\n\n      /* Configure IO Direction mode (Input, Output, Alternate or Analog) */\n      temp = GPIOx->MODER;\n      temp &= ~(GPIO_MODER_MODE0 << (position * 2U));\n      temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));\n      GPIOx->MODER = temp;\n\n      /*--------------------- EXTI Mode Configuration ------------------------*/\n      /* Configure the External Interrupt or event for the current IO */\n      if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U)\n      {\n        /* Enable SYSCFG Clock */\n        __HAL_RCC_SYSCFG_CLK_ENABLE();\n\n        temp = SYSCFG->EXTICR[position >> 2U];\n        temp &= ~(0x0FUL << (4U * (position & 0x03U)));\n        temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)));\n        SYSCFG->EXTICR[position >> 2U] = temp;\n\n        /* Clear Rising Falling edge configuration */\n        temp = EXTI->RTSR1;\n        temp &= ~(iocurrent);\n        if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U)\n        {\n          temp |= iocurrent;\n        }\n        EXTI->RTSR1 = temp;\n\n        temp = EXTI->FTSR1;\n        temp &= ~(iocurrent);\n        if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U)\n        {\n          temp |= iocurrent;\n        }\n        EXTI->FTSR1 = temp;\n\n        temp = EXTI_CurrentCPU->EMR1;\n        temp &= ~(iocurrent);\n        if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U)\n        {\n          temp |= iocurrent;\n        }\n        EXTI_CurrentCPU->EMR1 = temp;\n\n        /* Clear EXTI line configuration */\n        temp = EXTI_CurrentCPU->IMR1;\n        temp &= ~(iocurrent);\n        if ((GPIO_Init->Mode & EXTI_IT) != 0x00U)\n        {\n          temp |= iocurrent;\n        }\n        EXTI_CurrentCPU->IMR1 = temp;\n      }\n    }\n\n    position++;\n  }\n}\n\n/**\n  * @brief  De-initializes the GPIOx peripheral registers to their default reset values.\n  * @param  GPIOx: where x can be (A..K) to select the GPIO peripheral.\n  * @param  GPIO_Pin: specifies the port bit to be written.\n  *          This parameter can be one of GPIO_PIN_x where x can be (0..15).\n  * @retval None\n  */\nvoid HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin)\n{\n  uint32_t position = 0x00U;\n  uint32_t iocurrent;\n  uint32_t tmp;\n  EXTI_Core_TypeDef *EXTI_CurrentCPU;\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  EXTI_CurrentCPU = EXTI_D2; /* EXTI for CM4 CPU */\n#else\n  EXTI_CurrentCPU = EXTI_D1; /* EXTI for CM7 CPU */\n#endif\n\n  /* Check the parameters */\n  assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));\n  assert_param(IS_GPIO_PIN(GPIO_Pin));\n\n  /* Configure the port pins */\n  while ((GPIO_Pin >> position) != 0x00U)\n  {\n    /* Get current io position */\n    iocurrent = GPIO_Pin & (1UL << position) ;\n\n    if (iocurrent != 0x00U)\n    {\n      /*------------------------- EXTI Mode Configuration --------------------*/\n      /* Clear the External Interrupt or Event for the current IO */\n      tmp = SYSCFG->EXTICR[position >> 2U];\n      tmp &= (0x0FUL << (4U * (position & 0x03U)));\n      if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))\n      {\n        /* Clear EXTI line configuration for Current CPU */\n        EXTI_CurrentCPU->IMR1 &= ~(iocurrent);\n        EXTI_CurrentCPU->EMR1 &= ~(iocurrent);\n\n        /* Clear Rising Falling edge configuration */\n        EXTI->FTSR1 &= ~(iocurrent);\n        EXTI->RTSR1 &= ~(iocurrent);\n\n        tmp = 0x0FUL << (4U * (position & 0x03U));\n        SYSCFG->EXTICR[position >> 2U] &= ~tmp;\n      }\n\n      /*------------------------- GPIO Mode Configuration --------------------*/\n      /* Configure IO in Analog Mode */\n      GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2U));\n\n      /* Configure the default Alternate Function in current IO */\n      GPIOx->AFR[position >> 3U] &= ~(0xFU << ((position & 0x07U) * 4U)) ;\n\n      /* Deactivate the Pull-up and Pull-down resistor for the current IO */\n      GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));\n\n      /* Configure the default value IO Output Type */\n      GPIOx->OTYPER  &= ~(GPIO_OTYPER_OT0 << position) ;\n\n      /* Configure the default value for IO Speed */\n      GPIOx->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U));\n    }\n\n    position++;\n  }\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup GPIO_Exported_Functions_Group2 IO operation functions\n *  @brief GPIO Read, Write, Toggle, Lock and EXTI management functions.\n *\n@verbatim\n ===============================================================================\n                       ##### IO operation functions #####\n ===============================================================================\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Reads the specified input port pin.\n  * @param  GPIOx: where x can be (A..K) to select the GPIO peripheral.\n  * @param  GPIO_Pin: specifies the port bit to read.\n  *         This parameter can be GPIO_PIN_x where x can be (0..15).\n  * @retval The input port pin value.\n  */\nGPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)\n{\n  GPIO_PinState bitstatus;\n\n  /* Check the parameters */\n  assert_param(IS_GPIO_PIN(GPIO_Pin));\n\n  if ((GPIOx->IDR & GPIO_Pin) != 0x00U)\n  {\n    bitstatus = GPIO_PIN_SET;\n  }\n  else\n  {\n    bitstatus = GPIO_PIN_RESET;\n  }\n  return bitstatus;\n}\n\n/**\n  * @brief  Sets or clears the selected data port bit.\n  *\n  * @note   This function uses GPIOx_BSRR register to allow atomic read/modify\n  *         accesses. In this way, there is no risk of an IRQ occurring between\n  *         the read and the modify access.\n  *\n  * @param  GPIOx: where x can be (A..K) to select the GPIO peripheral.\n  * @param  GPIO_Pin: specifies the port bit to be written.\n  *          This parameter can be one of GPIO_PIN_x where x can be (0..15).\n  * @param  PinState: specifies the value to be written to the selected bit.\n  *          This parameter can be one of the GPIO_PinState enum values:\n  *            @arg GPIO_PIN_RESET: to clear the port pin\n  *            @arg GPIO_PIN_SET: to set the port pin\n  * @retval None\n  */\nvoid HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)\n{\n  /* Check the parameters */\n  assert_param(IS_GPIO_PIN(GPIO_Pin));\n  assert_param(IS_GPIO_PIN_ACTION(PinState));\n\n  if (PinState != GPIO_PIN_RESET)\n  {\n    GPIOx->BSRR = GPIO_Pin;\n  }\n  else\n  {\n    GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;\n  }\n}\n\n/**\n  * @brief  Toggles the specified GPIO pins.\n  * @param  GPIOx: Where x can be (A..K) to select the GPIO peripheral.\n  * @param  GPIO_Pin: Specifies the pins to be toggled.\n  * @retval None\n  */\nvoid HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)\n{\n  uint32_t odr;\n\n  /* Check the parameters */\n  assert_param(IS_GPIO_PIN(GPIO_Pin));\n\n  /* get current Output Data Register value */\n  odr = GPIOx->ODR;\n\n  /* Set selected pins that were at low level, and reset ones that were high */\n  GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);\n}\n\n/**\n  * @brief  Locks GPIO Pins configuration registers.\n  * @note   The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR,\n  *         GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH.\n  * @note   The configuration of the locked GPIO pins can no longer be modified\n  *         until the next reset.\n  * @param  GPIOx: where x can be (A..K) to select the GPIO peripheral for STM32H7 family\n  * @param  GPIO_Pin: specifies the port bit to be locked.\n  *         This parameter can be any combination of GPIO_PIN_x where x can be (0..15).\n  * @retval None\n  */\nHAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)\n{\n  __IO uint32_t tmp = GPIO_LCKR_LCKK;\n\n  /* Check the parameters */\n  assert_param(IS_GPIO_LOCK_INSTANCE(GPIOx));\n  assert_param(IS_GPIO_PIN(GPIO_Pin));\n\n  /* Apply lock key write sequence */\n  tmp |= GPIO_Pin;\n  /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */\n  GPIOx->LCKR = tmp;\n  /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */\n  GPIOx->LCKR = GPIO_Pin;\n  /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */\n  GPIOx->LCKR = tmp;\n  /* Read LCKK register. This read is mandatory to complete key lock sequence*/\n  tmp = GPIOx->LCKR;\n\n  /* read again in order to confirm lock is active */\n  if ((GPIOx->LCKR & GPIO_LCKR_LCKK) != 0x00U)\n  {\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Handle EXTI interrupt request.\n  * @param  GPIO_Pin: Specifies the port pin connected to corresponding EXTI line.\n  * @retval None\n  */\nvoid HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)\n{\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  if (__HAL_GPIO_EXTID2_GET_IT(GPIO_Pin) != 0x00U)\n  {\n    __HAL_GPIO_EXTID2_CLEAR_IT(GPIO_Pin);\n    HAL_GPIO_EXTI_Callback(GPIO_Pin);\n  }\n#else\n  /* EXTI line interrupt detected */\n  if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00U)\n  {\n    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);\n    HAL_GPIO_EXTI_Callback(GPIO_Pin);\n  }\n#endif\n}\n\n/**\n  * @brief  EXTI line detection callback.\n  * @param  GPIO_Pin: Specifies the port pin connected to corresponding EXTI line.\n  * @retval None\n  */\n__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(GPIO_Pin);\n\n  /* NOTE: This function Should not be modified, when the callback is needed,\n           the HAL_GPIO_EXTI_Callback could be implemented in the user file\n   */\n}\n\n/**\n  * @}\n  */\n\n\n/**\n  * @}\n  */\n\n#endif /* HAL_GPIO_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_hsem.c\n  * @author  MCD Application Team\n  * @brief   HSEM HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the semaphore peripheral:\n  *           + Semaphore Take function (2-Step Procedure) , non blocking\n  *           + Semaphore FastTake function (1-Step Procedure) , non blocking\n  *           + Semaphore Status check\n  *           + Semaphore Clear Key Set and Get\n  *           + Release and release all functions\n  *           + Semaphore notification enabling and disabling and callnack functions\n  *           + IRQ handler management\n  *\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                     ##### How to use this driver #####\n  ==============================================================================\n  [..]\n      (#)Take a semaphore In 2-Step mode Using function HAL_HSEM_Take. This function takes as parameters :\n           (++) the semaphore ID from 0 to 31\n           (++) the process ID from 0 to 255\n      (#) Fast Take semaphore In 1-Step mode Using function HAL_HSEM_FastTake. This function takes as parameter :\n           (++) the semaphore ID from 0_ID to 31. Note that the process ID value is implicitly assumed as zero\n      (#) Check if a semaphore is Taken using function HAL_HSEM_IsSemTaken. This function takes as parameter :\n          (++) the semaphore ID from 0_ID to 31\n          (++) It returns 1 if the given semaphore is taken otherwise (Free) zero\n      (#)Release a semaphore using function with HAL_HSEM_Release. This function takes as parameters :\n           (++) the semaphore ID from 0 to 31\n           (++) the process ID from 0 to 255:\n           (++) Note: If ProcessID and MasterID match, semaphore is freed, and an interrupt\n         may be generated when enabled (notification activated). If ProcessID or MasterID does not match,\n         semaphore remains taken (locked)\n\n      (#)Release all semaphores at once taken by a given Master using function HAL_HSEM_Release_All\n          This function takes as parameters :\n           (++) the Release Key (value from 0 to 0xFFFF) can be Set or Get respectively by\n              HAL_HSEM_SetClearKey() or HAL_HSEM_GetClearKey functions\n           (++) the Master ID:\n           (++) Note: If the Key and MasterID match, all semaphores taken by the given CPU that corresponds\n           to MasterID  will be freed, and an interrupt may be generated when enabled (notification activated). If the\n           Key or the MasterID doesn't match, semaphores remains taken (locked)\n\n      (#)Semaphores Release all key functions:\n         (++)  HAL_HSEM_SetClearKey() to set semaphore release all Key\n         (++)  HAL_HSEM_GetClearKey() to get release all Key\n      (#)Semaphores notification functions :\n         (++)  HAL_HSEM_ActivateNotification to activate a notification callback on\n               a given semaphores Mask (bitfield). When one or more semaphores defined by the mask are released\n               the callback HAL_HSEM_FreeCallback will be asserted giving as parameters a mask of the released\n               semaphores (bitfield).\n\n         (++)  HAL_HSEM_DeactivateNotification to deactivate the notification of a given semaphores Mask (bitfield).\n         (++) See the description of the macro __HAL_HSEM_SEMID_TO_MASK to check how to calculate a semaphore mask\n                Used by the notification functions\n     *** HSEM HAL driver macros list ***\n     =============================================\n     [..] Below the list of most used macros in HSEM HAL driver.\n\n      (+) __HAL_HSEM_SEMID_TO_MASK: Helper macro to convert a Semaphore ID to a Mask.\n      [..] Example of use :\n      [..] mask = __HAL_HSEM_SEMID_TO_MASK(8)  |  __HAL_HSEM_SEMID_TO_MASK(21) | __HAL_HSEM_SEMID_TO_MASK(25).\n      [..] All next macros take as parameter a semaphore Mask (bitfiled) that can be constructed using  __HAL_HSEM_SEMID_TO_MASK as the above example.\n      (+) __HAL_HSEM_ENABLE_IT: Enable the specified semaphores Mask interrupts.\n      (+) __HAL_HSEM_DISABLE_IT: Disable the specified semaphores Mask interrupts.\n      (+) __HAL_HSEM_GET_IT: Checks whether the specified semaphore interrupt has occurred or not.\n      (+) __HAL_HSEM_GET_FLAG: Get the semaphores status release flags.\n      (+) __HAL_HSEM_CLEAR_FLAG: Clear the semaphores status release flags.\n\n  @endverbatim\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup HSEM HSEM\n  * @brief HSEM HAL module driver\n  * @{\n  */\n\n#ifdef HAL_HSEM_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n#if defined(DUAL_CORE)\n/** @defgroup HSEM_Private_Constants  HSEM Private Constants\n  * @{\n  */\n\n#ifndef HSEM_R_MASTERID\n#define HSEM_R_MASTERID HSEM_R_COREID\n#endif\n\n#ifndef HSEM_RLR_MASTERID\n#define HSEM_RLR_MASTERID HSEM_RLR_COREID\n#endif\n\n#ifndef HSEM_CR_MASTERID\n#define HSEM_CR_MASTERID HSEM_CR_COREID\n#endif\n\n/**\n  * @}\n  */  \n#endif /* DUAL_CORE */\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup HSEM_Exported_Functions  HSEM Exported Functions\n  * @{\n  */\n\n/** @defgroup HSEM_Exported_Functions_Group1 Take and Release functions\n  *  @brief    HSEM Take and Release functions\n  *\n@verbatim\n ==============================================================================\n              ##### HSEM Take and Release functions #####\n ==============================================================================\n[..] This section provides functions allowing to:\n      (+) Take a semaphore with 2 Step method\n      (+) Fast Take a semaphore with 1 Step method\n      (+) Check semaphore state Taken or not\n      (+) Release a semaphore\n      (+) Release all semaphore at once\n\n@endverbatim\n  * @{\n  */\n\n\n/**\n  * @brief  Take a semaphore in 2 Step mode.\n  * @param  SemID: semaphore ID from 0 to 31\n  * @param  ProcessID: Process ID from 0 to 255\n  * @retval HAL status\n  */\nHAL_StatusTypeDef  HAL_HSEM_Take(uint32_t SemID, uint32_t ProcessID)\n{\n  /* Check the parameters */\n  assert_param(IS_HSEM_SEMID(SemID));\n  assert_param(IS_HSEM_PROCESSID(ProcessID));\n\n#if  USE_MULTI_CORE_SHARED_CODE != 0U\n  /* First step  write R register with MasterID, processID and take bit=1*/\n  HSEM->R[SemID] = ((ProcessID & HSEM_R_PROCID) | ((HAL_GetCurrentCPUID() << POSITION_VAL(HSEM_R_MASTERID)) & HSEM_R_MASTERID) | HSEM_R_LOCK);\n\n  /* second step : read the R register . Take achieved if MasterID and processID match and take bit set to 1 */\n  if (HSEM->R[SemID] == ((ProcessID & HSEM_R_PROCID) | ((HAL_GetCurrentCPUID() << POSITION_VAL(HSEM_R_MASTERID)) & HSEM_R_MASTERID) | HSEM_R_LOCK))\n  {\n    /*take success when MasterID and ProcessID match and take bit set*/\n    return HAL_OK;\n  }\n#else\n  /* First step  write R register with MasterID, processID and take bit=1*/\n  HSEM->R[SemID] = (ProcessID | HSEM_CR_COREID_CURRENT | HSEM_R_LOCK);\n\n  /* second step : read the R register . Take achieved if MasterID and processID match and take bit set to 1 */\n  if (HSEM->R[SemID] == (ProcessID | HSEM_CR_COREID_CURRENT | HSEM_R_LOCK))\n  {\n    /*take success when MasterID and ProcessID match and take bit set*/\n    return HAL_OK;\n  }\n#endif\n\n  /* Semaphore take fails*/\n  return HAL_ERROR;\n}\n\n/**\n  * @brief  Fast Take a semaphore with 1 Step mode.\n  * @param  SemID: semaphore ID from 0 to 31\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_HSEM_FastTake(uint32_t SemID)\n{\n  /* Check the parameters */\n  assert_param(IS_HSEM_SEMID(SemID));\n\n#if  USE_MULTI_CORE_SHARED_CODE != 0U\n  /* Read the RLR register to take the semaphore */\n  if (HSEM->RLR[SemID] == (((HAL_GetCurrentCPUID() << POSITION_VAL(HSEM_R_MASTERID)) & HSEM_RLR_MASTERID) | HSEM_RLR_LOCK))\n  {\n    /*take success when MasterID match and take bit set*/\n    return HAL_OK;\n  }\n#else  \n  /* Read the RLR register to take the semaphore */\n  if (HSEM->RLR[SemID] == (HSEM_CR_COREID_CURRENT | HSEM_RLR_LOCK))\n  {\n    /*take success when MasterID match and take bit set*/\n    return HAL_OK;\n  }\n#endif\n\n  /* Semaphore take fails */\n  return HAL_ERROR;\n}\n/**\n  * @brief  Check semaphore state Taken or not.\n  * @param  SemID: semaphore ID\n  * @retval HAL HSEM state\n  */\nuint32_t HAL_HSEM_IsSemTaken(uint32_t SemID)\n{\n  return (((HSEM->R[SemID] & HSEM_R_LOCK) != 0U) ? 1UL : 0UL);\n}\n\n\n/**\n  * @brief  Release a semaphore.\n  * @param  SemID: semaphore ID from 0 to 31\n  * @param  ProcessID: Process ID from 0 to 255\n  * @retval None\n  */\nvoid  HAL_HSEM_Release(uint32_t SemID, uint32_t ProcessID)\n{\n  /* Check the parameters */\n  assert_param(IS_HSEM_SEMID(SemID));\n  assert_param(IS_HSEM_PROCESSID(ProcessID));\n\n  /* Clear the semaphore by writing to the R register : the MasterID , the processID and take bit = 0  */\n#if  USE_MULTI_CORE_SHARED_CODE != 0U\n  HSEM->R[SemID] = (ProcessID | ((HAL_GetCurrentCPUID() << POSITION_VAL(HSEM_R_MASTERID)) & HSEM_R_MASTERID));\n#else\n  HSEM->R[SemID] = (ProcessID | HSEM_CR_COREID_CURRENT);\n#endif\n\n}\n\n/**\n  * @brief  Release All semaphore used by a given Master .\n  * @param  Key: Semaphore Key , value from 0 to 0xFFFF\n  * @param  CoreID: CoreID of the CPU that is using semaphores to be released\n  * @retval None\n  */\nvoid HAL_HSEM_ReleaseAll(uint32_t Key, uint32_t CoreID)\n{\n  assert_param(IS_HSEM_KEY(Key));\n  assert_param(IS_HSEM_COREID(CoreID));\n\n  HSEM->CR = ((Key << HSEM_CR_KEY_Pos) | (CoreID << HSEM_CR_COREID_Pos));\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup HSEM_Exported_Functions_Group2 HSEM Set and Get Key functions\n  *  @brief    HSEM Set and Get Key functions.\n  *\n@verbatim\n  ==============================================================================\n              ##### HSEM Set and Get Key functions #####\n  ==============================================================================\n    [..]  This section provides functions allowing to:\n      (+) Set semaphore Key\n      (+) Get semaphore Key\n@endverbatim\n\n  * @{\n  */\n\n/**\n  * @brief  Set semaphore Key .\n  * @param  Key: Semaphore Key , value from 0 to 0xFFFF\n  * @retval None\n  */\nvoid  HAL_HSEM_SetClearKey(uint32_t Key)\n{\n  assert_param(IS_HSEM_KEY(Key));\n\n  MODIFY_REG(HSEM->KEYR, HSEM_KEYR_KEY, (Key << HSEM_KEYR_KEY_Pos));\n\n}\n\n/**\n  * @brief  Get semaphore Key .\n  * @retval Semaphore Key , value from 0 to 0xFFFF\n  */\nuint32_t HAL_HSEM_GetClearKey(void)\n{\n  return (HSEM->KEYR >> HSEM_KEYR_KEY_Pos);\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup HSEM_Exported_Functions_Group3 HSEM IRQ handler management\n  *  @brief    HSEM Notification functions.\n  *\n@verbatim\n  ==============================================================================\n      ##### HSEM IRQ handler management and Notification functions #####\n  ==============================================================================\n[..]  This section provides HSEM IRQ handler and Notification function.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Activate Semaphore release Notification for a given Semaphores Mask .\n  * @param  SemMask: Mask of Released semaphores\n  * @retval Semaphore Key\n  */\nvoid HAL_HSEM_ActivateNotification(uint32_t SemMask)\n{\n#if  USE_MULTI_CORE_SHARED_CODE != 0U\n  /*enable the semaphore mask interrupts */\n  if (HAL_GetCurrentCPUID() == HSEM_CPU1_COREID)\n  {\n    /*Use interrupt line 0 for CPU1 Master */\n    HSEM->C1IER |= SemMask;\n  }\n  else /* HSEM_CPU2_COREID */\n  {\n    /*Use interrupt line 1 for CPU2 Master*/\n    HSEM->C2IER |= SemMask;\n  }\n#else\n  HSEM_COMMON->IER |= SemMask;\n#endif\n}\n\n/**\n  * @brief  Deactivate Semaphore release Notification for a given Semaphores Mask .\n  * @param  SemMask: Mask of Released semaphores\n  * @retval Semaphore Key\n  */\nvoid HAL_HSEM_DeactivateNotification(uint32_t SemMask)\n{\n#if  USE_MULTI_CORE_SHARED_CODE != 0U\n  /*enable the semaphore mask interrupts */\n  if (HAL_GetCurrentCPUID() == HSEM_CPU1_COREID)\n  {\n    /*Use interrupt line 0 for CPU1 Master */\n    HSEM->C1IER &= ~SemMask;\n  }\n  else /* HSEM_CPU2_COREID */\n  {\n    /*Use interrupt line 1 for CPU2 Master*/\n    HSEM->C2IER &= ~SemMask;\n  }\n#else\n  HSEM_COMMON->IER &= ~SemMask;\n#endif\n}\n\n/**\n  * @brief  This function handles HSEM interrupt request\n  * @retval None\n  */\nvoid HAL_HSEM_IRQHandler(void)\n{\n  uint32_t statusreg;\n#if  USE_MULTI_CORE_SHARED_CODE != 0U\n  if (HAL_GetCurrentCPUID() == HSEM_CPU1_COREID)\n  {\n    /* Get the list of masked freed semaphores*/\n    statusreg = HSEM->C1MISR; /*Use interrupt line 0 for CPU1 Master*/\n\n    /*Disable Interrupts*/\n    HSEM->C1IER &= ~((uint32_t)statusreg);\n\n    /*Clear Flags*/\n    HSEM->C1ICR = ((uint32_t)statusreg);\n  }\n  else /* HSEM_CPU2_COREID */\n  {\n    /* Get the list of masked freed semaphores*/\n    statusreg = HSEM->C2MISR;/*Use interrupt line 1 for CPU2 Master*/\n\n    /*Disable Interrupts*/\n    HSEM->C2IER &= ~((uint32_t)statusreg);\n\n    /*Clear Flags*/\n    HSEM->C2ICR = ((uint32_t)statusreg);\n  }\n#else\n  /* Get the list of masked freed semaphores*/\n  statusreg = HSEM_COMMON->MISR;\n\n  /*Disable Interrupts*/\n  HSEM_COMMON->IER &= ~((uint32_t)statusreg);\n\n  /*Clear Flags*/\n  HSEM_COMMON->ICR = ((uint32_t)statusreg);\n\n#endif\n  /* Call FreeCallback */\n  HAL_HSEM_FreeCallback(statusreg);\n}\n\n/**\n  * @brief Semaphore Released Callback.\n  * @param SemMask: Mask of Released semaphores\n  * @retval None\n  */\n__weak void HAL_HSEM_FreeCallback(uint32_t SemMask)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(SemMask);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n  the HAL_HSEM_FreeCallback can be implemented in the user file\n    */\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#endif /* HAL_HSEM_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_i2c.c\n  * @author  MCD Application Team\n  * @brief   I2C HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the Inter Integrated Circuit (I2C) peripheral:\n  *           + Initialization and de-initialization functions\n  *           + IO operation functions\n  *           + Peripheral State and Errors functions\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                        ##### How to use this driver #####\n  ==============================================================================\n    [..]\n    The I2C HAL driver can be used as follows:\n\n    (#) Declare a I2C_HandleTypeDef handle structure, for example:\n        I2C_HandleTypeDef  hi2c;\n\n    (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API:\n        (##) Enable the I2Cx interface clock\n        (##) I2C pins configuration\n            (+++) Enable the clock for the I2C GPIOs\n            (+++) Configure I2C pins as alternate function open-drain\n        (##) NVIC configuration if you need to use interrupt process\n            (+++) Configure the I2Cx interrupt priority\n            (+++) Enable the NVIC I2C IRQ Channel\n        (##) DMA Configuration if you need to use DMA process\n            (+++) Declare a DMA_HandleTypeDef handle structure for\n                  the transmit or receive stream or channel depends on Instance\n            (+++) Enable the DMAx interface clock using\n            (+++) Configure the DMA handle parameters\n            (+++) Configure the DMA Tx or Rx stream or channel depends on Instance\n            (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle\n            (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on\n                  the DMA Tx or Rx stream or channel depends on Instance\n\n    (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addressing mode,\n        Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure.\n\n    (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level Hardware\n        (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API.\n\n    (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceReady()\n\n    (#) For I2C IO and IO MEM operations, three operation modes are available within this driver :\n\n    *** Polling mode IO operation ***\n    =================================\n    [..]\n      (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit()\n      (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive()\n      (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit()\n      (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive()\n\n    *** Polling mode IO MEM operation ***\n    =====================================\n    [..]\n      (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_Write()\n      (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_Read()\n\n\n    *** Interrupt mode IO operation ***\n    ===================================\n    [..]\n      (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Transmit_IT()\n      (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()\n      (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receive_IT()\n      (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()\n      (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmit_IT()\n      (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()\n      (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_IT()\n      (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()\n      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can\n           add their own code by customization of function pointer HAL_I2C_ErrorCallback()\n      (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()\n      (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()\n      (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.\n           This action will inform Master to generate a Stop condition to discard the communication.\n\n\n    *** Interrupt mode or DMA mode IO sequential operation ***\n    ==========================================================\n    [..]\n      (@) These interfaces allow to manage a sequential transfer with a repeated start condition\n          when a direction change during transfer\n    [..]\n      (+) A specific option field manage the different steps of a sequential transfer\n      (+) Option field values are defined through I2C_XFEROPTIONS and are listed below:\n      (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfaces in\n           no sequential mode\n      (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start condition, address\n                            and data to transfer without a final stop condition\n      (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a sequence with\n                            start condition, address and data to transfer without a final stop condition,\n                            an then permit a call the same master sequential interface several times\n                            (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit_IT()\n                            or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_DMA())\n      (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart condition, address\n                            and with new data to transfer if the direction change or manage only the new data to\n                            transfer\n                            if no direction change and without a final stop condition in both cases\n      (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart condition, address\n                            and with new data to transfer if the direction change or manage only the new data to\n                            transfer\n                            if no direction change and with a final stop condition in both cases\n      (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a restart condition\n                            after several call of the same master sequential interface several times\n                            (link with option I2C_FIRST_AND_NEXT_FRAME).\n                            Usage can, transfer several bytes one by one using\n                              HAL_I2C_Master_Seq_Transmit_IT\n                              or HAL_I2C_Master_Seq_Receive_IT\n                              or HAL_I2C_Master_Seq_Transmit_DMA\n                              or HAL_I2C_Master_Seq_Receive_DMA\n                              with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME.\n                             Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit or\n                              Receive sequence permit to call the opposite interface Receive or Transmit\n                              without stopping the communication and so generate a restart condition.\n      (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart condition after\n                            each call of the same master sequential\n                            interface.\n                            Usage can, transfer several bytes one by one with a restart with slave address between\n                            each bytes using\n                              HAL_I2C_Master_Seq_Transmit_IT\n                              or HAL_I2C_Master_Seq_Receive_IT\n                              or HAL_I2C_Master_Seq_Transmit_DMA\n                              or HAL_I2C_Master_Seq_Receive_DMA\n                              with option I2C_FIRST_FRAME then I2C_OTHER_FRAME.\n                            Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to help automatic\n                            generation of STOP condition.\n\n      (+) Different sequential I2C interfaces are listed below:\n      (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using\n            HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA()\n      (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is executed and\n            users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()\n      (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using\n            HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA()\n      (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()\n      (++) Abort a master IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()\n      (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()\n      (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT()\n            HAL_I2C_DisableListen_IT()\n      (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can\n           add their own code to check the Address Match Code and the transmission direction request by master\n           (Write/Read).\n      (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can\n          add their own code by customization of function pointer HAL_I2C_ListenCpltCallback()\n      (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using\n            HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA()\n      (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is executed and\n            users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()\n      (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using\n            HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA()\n      (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()\n      (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can\n           add their own code by customization of function pointer HAL_I2C_ErrorCallback()\n      (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.\n           This action will inform Master to generate a Stop condition to discard the communication.\n\n    *** Interrupt mode IO MEM operation ***\n    =======================================\n    [..]\n      (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address using\n          HAL_I2C_Mem_Write_IT()\n      (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback()\n      (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address using\n          HAL_I2C_Mem_Read_IT()\n      (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback()\n      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can\n           add their own code by customization of function pointer HAL_I2C_ErrorCallback()\n\n    *** DMA mode IO operation ***\n    ==============================\n    [..]\n      (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using\n          HAL_I2C_Master_Transmit_DMA()\n      (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()\n      (+) Receive in master mode an amount of data in non-blocking mode (DMA) using\n          HAL_I2C_Master_Receive_DMA()\n      (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()\n      (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using\n          HAL_I2C_Slave_Transmit_DMA()\n      (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()\n      (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using\n          HAL_I2C_Slave_Receive_DMA()\n      (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()\n      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can\n           add their own code by customization of function pointer HAL_I2C_ErrorCallback()\n      (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()\n      (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()\n      (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.\n           This action will inform Master to generate a Stop condition to discard the communication.\n\n    *** DMA mode IO MEM operation ***\n    =================================\n    [..]\n      (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using\n          HAL_I2C_Mem_Write_DMA()\n      (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback()\n      (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using\n          HAL_I2C_Mem_Read_DMA()\n      (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can\n           add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback()\n      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can\n           add their own code by customization of function pointer HAL_I2C_ErrorCallback()\n\n\n     *** I2C HAL driver macros list ***\n     ==================================\n     [..]\n       Below the list of most used macros in I2C HAL driver.\n\n      (+) __HAL_I2C_ENABLE: Enable the I2C peripheral\n      (+) __HAL_I2C_DISABLE: Disable the I2C peripheral\n      (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode\n      (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not\n      (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag\n      (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt\n      (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt\n\n     *** Callback registration ***\n     =============================================\n    [..]\n     The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1\n     allows the user to configure dynamically the driver callbacks.\n     Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback()\n     to register an interrupt callback.\n    [..]\n     Function HAL_I2C_RegisterCallback() allows to register following callbacks:\n       (+) MasterTxCpltCallback : callback for Master transmission end of transfer.\n       (+) MasterRxCpltCallback : callback for Master reception end of transfer.\n       (+) SlaveTxCpltCallback  : callback for Slave transmission end of transfer.\n       (+) SlaveRxCpltCallback  : callback for Slave reception end of transfer.\n       (+) ListenCpltCallback   : callback for end of listen mode.\n       (+) MemTxCpltCallback    : callback for Memory transmission end of transfer.\n       (+) MemRxCpltCallback    : callback for Memory reception end of transfer.\n       (+) ErrorCallback        : callback for error detection.\n       (+) AbortCpltCallback    : callback for abort completion process.\n       (+) MspInitCallback      : callback for Msp Init.\n       (+) MspDeInitCallback    : callback for Msp DeInit.\n     This function takes as parameters the HAL peripheral handle, the Callback ID\n     and a pointer to the user callback function.\n    [..]\n     For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCallback().\n    [..]\n     Use function HAL_I2C_UnRegisterCallback to reset a callback to the default\n     weak function.\n     HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,\n     and the Callback ID.\n     This function allows to reset following callbacks:\n       (+) MasterTxCpltCallback : callback for Master transmission end of transfer.\n       (+) MasterRxCpltCallback : callback for Master reception end of transfer.\n       (+) SlaveTxCpltCallback  : callback for Slave transmission end of transfer.\n       (+) SlaveRxCpltCallback  : callback for Slave reception end of transfer.\n       (+) ListenCpltCallback   : callback for end of listen mode.\n       (+) MemTxCpltCallback    : callback for Memory transmission end of transfer.\n       (+) MemRxCpltCallback    : callback for Memory reception end of transfer.\n       (+) ErrorCallback        : callback for error detection.\n       (+) AbortCpltCallback    : callback for abort completion process.\n       (+) MspInitCallback      : callback for Msp Init.\n       (+) MspDeInitCallback    : callback for Msp DeInit.\n    [..]\n     For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback().\n    [..]\n     By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET\n     all callbacks are set to the corresponding weak functions:\n     examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback().\n     Exception done for MspInit and MspDeInit functions that are\n     reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when\n     these callbacks are null (not registered beforehand).\n     If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit()\n     keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.\n    [..]\n     Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only.\n     Exception done MspInit/MspDeInit functions that can be registered/unregistered\n     in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state,\n     thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.\n     Then, the user first registers the MspInit/MspDeInit user callbacks\n     using HAL_I2C_RegisterCallback() before calling HAL_I2C_DeInit()\n     or HAL_I2C_Init() function.\n    [..]\n     When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or\n     not defined, the callback registration feature is not available and all callbacks\n     are set to the corresponding weak functions.\n\n     [..]\n       (@) You can refer to the I2C HAL driver header file for more useful macros\n\n  @endverbatim\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup I2C I2C\n  * @brief I2C HAL module driver\n  * @{\n  */\n\n#ifdef HAL_I2C_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n\n/** @defgroup I2C_Private_Define I2C Private Define\n  * @{\n  */\n#define TIMING_CLEAR_MASK   (0xF0FFFFFFU)  /*!< I2C TIMING clear register Mask */\n#define I2C_TIMEOUT_ADDR    (10000U)       /*!< 10 s  */\n#define I2C_TIMEOUT_BUSY    (25U)          /*!< 25 ms */\n#define I2C_TIMEOUT_DIR     (25U)          /*!< 25 ms */\n#define I2C_TIMEOUT_RXNE    (25U)          /*!< 25 ms */\n#define I2C_TIMEOUT_STOPF   (25U)          /*!< 25 ms */\n#define I2C_TIMEOUT_TC      (25U)          /*!< 25 ms */\n#define I2C_TIMEOUT_TCR     (25U)          /*!< 25 ms */\n#define I2C_TIMEOUT_TXIS    (25U)          /*!< 25 ms */\n#define I2C_TIMEOUT_FLAG    (25U)          /*!< 25 ms */\n\n#define MAX_NBYTE_SIZE      255U\n#define SLAVE_ADDR_SHIFT     7U\n#define SLAVE_ADDR_MSK       0x06U\n\n/* Private define for @ref PreviousState usage */\n#define I2C_STATE_MSK             ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \\\n                                                         (uint32_t)HAL_I2C_STATE_BUSY_RX) & \\\n                                              (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY))))\n/*!< Mask State define, keep only RX and TX bits */\n#define I2C_STATE_NONE            ((uint32_t)(HAL_I2C_MODE_NONE))\n/*!< Default Value */\n#define I2C_STATE_MASTER_BUSY_TX  ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \\\n                                              (uint32_t)HAL_I2C_MODE_MASTER))\n/*!< Master Busy TX, combinaison of State LSB and Mode enum */\n#define I2C_STATE_MASTER_BUSY_RX  ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \\\n                                              (uint32_t)HAL_I2C_MODE_MASTER))\n/*!< Master Busy RX, combinaison of State LSB and Mode enum */\n#define I2C_STATE_SLAVE_BUSY_TX   ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \\\n                                              (uint32_t)HAL_I2C_MODE_SLAVE))\n/*!< Slave Busy TX, combinaison of State LSB and Mode enum */\n#define I2C_STATE_SLAVE_BUSY_RX   ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \\\n                                              (uint32_t)HAL_I2C_MODE_SLAVE))\n/*!< Slave Busy RX, combinaison of State LSB and Mode enum  */\n#define I2C_STATE_MEM_BUSY_TX     ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \\\n                                              (uint32_t)HAL_I2C_MODE_MEM))\n/*!< Memory Busy TX, combinaison of State LSB and Mode enum */\n#define I2C_STATE_MEM_BUSY_RX     ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \\\n                                              (uint32_t)HAL_I2C_MODE_MEM))\n/*!< Memory Busy RX, combinaison of State LSB and Mode enum */\n\n\n/* Private define to centralize the enable/disable of Interrupts */\n#define I2C_XFER_TX_IT          (uint16_t)(0x0001U)   /*!< Bit field can be combinated with\n                                                         @ref I2C_XFER_LISTEN_IT */\n#define I2C_XFER_RX_IT          (uint16_t)(0x0002U)   /*!< Bit field can be combinated with\n                                                         @ref I2C_XFER_LISTEN_IT */\n#define I2C_XFER_LISTEN_IT      (uint16_t)(0x8000U)   /*!< Bit field can be combinated with @ref I2C_XFER_TX_IT\n                                                         and @ref I2C_XFER_RX_IT */\n\n#define I2C_XFER_ERROR_IT       (uint16_t)(0x0010U)   /*!< Bit definition to manage addition of global Error\n                                                         and NACK treatment */\n#define I2C_XFER_CPLT_IT        (uint16_t)(0x0020U)   /*!< Bit definition to manage only STOP evenement */\n#define I2C_XFER_RELOAD_IT      (uint16_t)(0x0040U)   /*!< Bit definition to manage only Reload of NBYTE */\n\n/* Private define Sequential Transfer Options default/reset value */\n#define I2C_NO_OPTION_FRAME     (0xFFFF0000U)\n/**\n  * @}\n  */\n\n/* Private macro -------------------------------------------------------------*/\n/* Macro to get remaining data to transfer on DMA side */\n#define I2C_GET_DMA_REMAIN_DATA(__HANDLE__)     __HAL_DMA_GET_COUNTER(__HANDLE__)\n\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n\n/** @defgroup I2C_Private_Functions I2C Private Functions\n  * @{\n  */\n/* Private functions to handle DMA transfer */\nstatic void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma);\nstatic void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma);\nstatic void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma);\nstatic void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma);\nstatic void I2C_DMAError(DMA_HandleTypeDef *hdma);\nstatic void I2C_DMAAbort(DMA_HandleTypeDef *hdma);\n\n/* Private functions to handle IT transfer */\nstatic void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\nstatic void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);\nstatic void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);\nstatic void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\nstatic void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\nstatic void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\nstatic void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);\n\n/* Private functions to handle IT transfer */\nstatic HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,\n                                                uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,\n                                                uint32_t Tickstart);\nstatic HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,\n                                               uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,\n                                               uint32_t Tickstart);\n\n/* Private functions for I2C transfer IRQ handler */\nstatic HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                           uint32_t ITSources);\nstatic HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                          uint32_t ITSources);\nstatic HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                            uint32_t ITSources);\nstatic HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                           uint32_t ITSources);\n\n/* Private functions to handle flags during polling transfer */\nstatic HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status,\n                                                    uint32_t Timeout, uint32_t Tickstart);\nstatic HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,\n                                                        uint32_t Tickstart);\nstatic HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,\n                                                        uint32_t Tickstart);\nstatic HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,\n                                                        uint32_t Tickstart);\nstatic HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,\n                                             uint32_t Tickstart);\n\n/* Private functions to centralize the enable/disable of Interrupts */\nstatic void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);\nstatic void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);\n\n/* Private function to treat different error callback */\nstatic void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c);\n\n/* Private function to flush TXDR register */\nstatic void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);\n\n/* Private function to handle  start, restart or stop a transfer */\nstatic void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode,\n                               uint32_t Request);\n\n/* Private function to Convert Specific options */\nstatic void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup I2C_Exported_Functions I2C Exported Functions\n  * @{\n  */\n\n/** @defgroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions\n  *  @brief    Initialization and Configuration functions\n  *\n@verbatim\n ===============================================================================\n              ##### Initialization and de-initialization functions #####\n ===============================================================================\n    [..]  This subsection provides a set of functions allowing to initialize and\n          deinitialize the I2Cx peripheral:\n\n      (+) User must Implement HAL_I2C_MspInit() function in which he configures\n          all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ).\n\n      (+) Call the function HAL_I2C_Init() to configure the selected device with\n          the selected configuration:\n        (++) Clock Timing\n        (++) Own Address 1\n        (++) Addressing mode (Master, Slave)\n        (++) Dual Addressing mode\n        (++) Own Address 2\n        (++) Own Address 2 Mask\n        (++) General call mode\n        (++) Nostretch mode\n\n      (+) Call the function HAL_I2C_DeInit() to restore the default configuration\n          of the selected I2Cx peripheral.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Initializes the I2C according to the specified parameters\n  *         in the I2C_InitTypeDef and initialize the associated handle.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)\n{\n  /* Check the I2C handle allocation */\n  if (hi2c == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\n  assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1));\n  assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode));\n  assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode));\n  assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2));\n  assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks));\n  assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode));\n  assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode));\n\n  if (hi2c->State == HAL_I2C_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    hi2c->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    /* Init the I2C Callback settings */\n    hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */\n    hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */\n    hi2c->SlaveTxCpltCallback  = HAL_I2C_SlaveTxCpltCallback;  /* Legacy weak SlaveTxCpltCallback  */\n    hi2c->SlaveRxCpltCallback  = HAL_I2C_SlaveRxCpltCallback;  /* Legacy weak SlaveRxCpltCallback  */\n    hi2c->ListenCpltCallback   = HAL_I2C_ListenCpltCallback;   /* Legacy weak ListenCpltCallback   */\n    hi2c->MemTxCpltCallback    = HAL_I2C_MemTxCpltCallback;    /* Legacy weak MemTxCpltCallback    */\n    hi2c->MemRxCpltCallback    = HAL_I2C_MemRxCpltCallback;    /* Legacy weak MemRxCpltCallback    */\n    hi2c->ErrorCallback        = HAL_I2C_ErrorCallback;        /* Legacy weak ErrorCallback        */\n    hi2c->AbortCpltCallback    = HAL_I2C_AbortCpltCallback;    /* Legacy weak AbortCpltCallback    */\n    hi2c->AddrCallback         = HAL_I2C_AddrCallback;         /* Legacy weak AddrCallback         */\n\n    if (hi2c->MspInitCallback == NULL)\n    {\n      hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit  */\n    }\n\n    /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */\n    hi2c->MspInitCallback(hi2c);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */\n    HAL_I2C_MspInit(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n\n  hi2c->State = HAL_I2C_STATE_BUSY;\n\n  /* Disable the selected I2C peripheral */\n  __HAL_I2C_DISABLE(hi2c);\n\n  /*---------------------------- I2Cx TIMINGR Configuration ------------------*/\n  /* Configure I2Cx: Frequency range */\n  hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK;\n\n  /*---------------------------- I2Cx OAR1 Configuration ---------------------*/\n  /* Disable Own Address1 before set the Own Address1 configuration */\n  hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN;\n\n  /* Configure I2Cx: Own Address1 and ack own address1 mode */\n  if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT)\n  {\n    hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1);\n  }\n  else /* I2C_ADDRESSINGMODE_10BIT */\n  {\n    hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1);\n  }\n\n  /*---------------------------- I2Cx CR2 Configuration ----------------------*/\n  /* Configure I2Cx: Addressing Master mode */\n  if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)\n  {\n    hi2c->Instance->CR2 = (I2C_CR2_ADD10);\n  }\n  /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */\n  hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK);\n\n  /*---------------------------- I2Cx OAR2 Configuration ---------------------*/\n  /* Disable Own Address2 before set the Own Address2 configuration */\n  hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE;\n\n  /* Configure I2Cx: Dual mode and Own Address2 */\n  hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \\\n                          (hi2c->Init.OwnAddress2Masks << 8));\n\n  /*---------------------------- I2Cx CR1 Configuration ----------------------*/\n  /* Configure I2Cx: Generalcall and NoStretch mode */\n  hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode);\n\n  /* Enable the selected I2C peripheral */\n  __HAL_I2C_ENABLE(hi2c);\n\n  hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n  hi2c->State = HAL_I2C_STATE_READY;\n  hi2c->PreviousState = I2C_STATE_NONE;\n  hi2c->Mode = HAL_I2C_MODE_NONE;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitialize the I2C peripheral.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)\n{\n  /* Check the I2C handle allocation */\n  if (hi2c == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\n\n  hi2c->State = HAL_I2C_STATE_BUSY;\n\n  /* Disable the I2C Peripheral Clock */\n  __HAL_I2C_DISABLE(hi2c);\n\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n  if (hi2c->MspDeInitCallback == NULL)\n  {\n    hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit  */\n  }\n\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\n  hi2c->MspDeInitCallback(hi2c);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\n  HAL_I2C_MspDeInit(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n\n  hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n  hi2c->State = HAL_I2C_STATE_RESET;\n  hi2c->PreviousState = I2C_STATE_NONE;\n  hi2c->Mode = HAL_I2C_MODE_NONE;\n\n  /* Release Lock */\n  __HAL_UNLOCK(hi2c);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Initialize the I2C MSP.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief DeInitialize the I2C MSP.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_MspDeInit could be implemented in the user file\n   */\n}\n\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n/**\n  * @brief  Register a User I2C Callback\n  *         To be used instead of the weak predefined callback\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  CallbackID ID of the callback to be registered\n  *         This parameter can be one of the following values:\n  *          @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID\n  *          @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID\n  *          @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID\n  *          @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID\n  *          @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID\n  *          @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID\n  * @param  pCallback pointer to the Callback function\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID,\n                                           pI2C_CallbackTypeDef pCallback)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  if (pCallback == NULL)\n  {\n    /* Update the error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n    return HAL_ERROR;\n  }\n  /* Process locked */\n  __HAL_LOCK(hi2c);\n\n  if (HAL_I2C_STATE_READY == hi2c->State)\n  {\n    switch (CallbackID)\n    {\n      case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :\n        hi2c->MasterTxCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :\n        hi2c->MasterRxCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :\n        hi2c->SlaveTxCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :\n        hi2c->SlaveRxCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_LISTEN_COMPLETE_CB_ID :\n        hi2c->ListenCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_MEM_TX_COMPLETE_CB_ID :\n        hi2c->MemTxCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_MEM_RX_COMPLETE_CB_ID :\n        hi2c->MemRxCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_ERROR_CB_ID :\n        hi2c->ErrorCallback = pCallback;\n        break;\n\n      case HAL_I2C_ABORT_CB_ID :\n        hi2c->AbortCpltCallback = pCallback;\n        break;\n\n      case HAL_I2C_MSPINIT_CB_ID :\n        hi2c->MspInitCallback = pCallback;\n        break;\n\n      case HAL_I2C_MSPDEINIT_CB_ID :\n        hi2c->MspDeInitCallback = pCallback;\n        break;\n\n      default :\n        /* Update the error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n        /* Return error status */\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else if (HAL_I2C_STATE_RESET == hi2c->State)\n  {\n    switch (CallbackID)\n    {\n      case HAL_I2C_MSPINIT_CB_ID :\n        hi2c->MspInitCallback = pCallback;\n        break;\n\n      case HAL_I2C_MSPDEINIT_CB_ID :\n        hi2c->MspDeInitCallback = pCallback;\n        break;\n\n      default :\n        /* Update the error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n        /* Return error status */\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else\n  {\n    /* Update the error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n    /* Return error status */\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hi2c);\n  return status;\n}\n\n/**\n  * @brief  Unregister an I2C Callback\n  *         I2C callback is redirected to the weak predefined callback\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  CallbackID ID of the callback to be unregistered\n  *         This parameter can be one of the following values:\n  *         This parameter can be one of the following values:\n  *          @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID\n  *          @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID\n  *          @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID\n  *          @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID\n  *          @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID\n  *          @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID\n  *          @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Process locked */\n  __HAL_LOCK(hi2c);\n\n  if (HAL_I2C_STATE_READY == hi2c->State)\n  {\n    switch (CallbackID)\n    {\n      case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :\n        hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */\n        break;\n\n      case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :\n        hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */\n        break;\n\n      case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :\n        hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback;   /* Legacy weak SlaveTxCpltCallback  */\n        break;\n\n      case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :\n        hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback;   /* Legacy weak SlaveRxCpltCallback  */\n        break;\n\n      case HAL_I2C_LISTEN_COMPLETE_CB_ID :\n        hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback;     /* Legacy weak ListenCpltCallback   */\n        break;\n\n      case HAL_I2C_MEM_TX_COMPLETE_CB_ID :\n        hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback;       /* Legacy weak MemTxCpltCallback    */\n        break;\n\n      case HAL_I2C_MEM_RX_COMPLETE_CB_ID :\n        hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback;       /* Legacy weak MemRxCpltCallback    */\n        break;\n\n      case HAL_I2C_ERROR_CB_ID :\n        hi2c->ErrorCallback = HAL_I2C_ErrorCallback;               /* Legacy weak ErrorCallback        */\n        break;\n\n      case HAL_I2C_ABORT_CB_ID :\n        hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback;       /* Legacy weak AbortCpltCallback    */\n        break;\n\n      case HAL_I2C_MSPINIT_CB_ID :\n        hi2c->MspInitCallback = HAL_I2C_MspInit;                   /* Legacy weak MspInit              */\n        break;\n\n      case HAL_I2C_MSPDEINIT_CB_ID :\n        hi2c->MspDeInitCallback = HAL_I2C_MspDeInit;               /* Legacy weak MspDeInit            */\n        break;\n\n      default :\n        /* Update the error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n        /* Return error status */\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else if (HAL_I2C_STATE_RESET == hi2c->State)\n  {\n    switch (CallbackID)\n    {\n      case HAL_I2C_MSPINIT_CB_ID :\n        hi2c->MspInitCallback = HAL_I2C_MspInit;                   /* Legacy weak MspInit              */\n        break;\n\n      case HAL_I2C_MSPDEINIT_CB_ID :\n        hi2c->MspDeInitCallback = HAL_I2C_MspDeInit;               /* Legacy weak MspDeInit            */\n        break;\n\n      default :\n        /* Update the error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n        /* Return error status */\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else\n  {\n    /* Update the error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n    /* Return error status */\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hi2c);\n  return status;\n}\n\n/**\n  * @brief  Register the Slave Address Match I2C Callback\n  *         To be used instead of the weak HAL_I2C_AddrCallback() predefined callback\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pCallback pointer to the Address Match Callback function\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  if (pCallback == NULL)\n  {\n    /* Update the error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n    return HAL_ERROR;\n  }\n  /* Process locked */\n  __HAL_LOCK(hi2c);\n\n  if (HAL_I2C_STATE_READY == hi2c->State)\n  {\n    hi2c->AddrCallback = pCallback;\n  }\n  else\n  {\n    /* Update the error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n    /* Return error status */\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hi2c);\n  return status;\n}\n\n/**\n  * @brief  UnRegister the Slave Address Match I2C Callback\n  *         Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined callback\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Process locked */\n  __HAL_LOCK(hi2c);\n\n  if (HAL_I2C_STATE_READY == hi2c->State)\n  {\n    hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback  */\n  }\n  else\n  {\n    /* Update the error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\n\n    /* Return error status */\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hi2c);\n  return status;\n}\n\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n\n/** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions\n  *  @brief   Data transfers functions\n  *\n@verbatim\n ===============================================================================\n                      ##### IO operation functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to manage the I2C data\n    transfers.\n\n    (#) There are two modes of transfer:\n       (++) Blocking mode : The communication is performed in the polling mode.\n            The status of all data processing is returned by the same function\n            after finishing transfer.\n       (++) No-Blocking mode : The communication is performed using Interrupts\n            or DMA. These functions return the status of the transfer startup.\n            The end of the data processing will be indicated through the\n            dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when\n            using DMA mode.\n\n    (#) Blocking mode functions are :\n        (++) HAL_I2C_Master_Transmit()\n        (++) HAL_I2C_Master_Receive()\n        (++) HAL_I2C_Slave_Transmit()\n        (++) HAL_I2C_Slave_Receive()\n        (++) HAL_I2C_Mem_Write()\n        (++) HAL_I2C_Mem_Read()\n        (++) HAL_I2C_IsDeviceReady()\n\n    (#) No-Blocking mode functions with Interrupt are :\n        (++) HAL_I2C_Master_Transmit_IT()\n        (++) HAL_I2C_Master_Receive_IT()\n        (++) HAL_I2C_Slave_Transmit_IT()\n        (++) HAL_I2C_Slave_Receive_IT()\n        (++) HAL_I2C_Mem_Write_IT()\n        (++) HAL_I2C_Mem_Read_IT()\n        (++) HAL_I2C_Master_Seq_Transmit_IT()\n        (++) HAL_I2C_Master_Seq_Receive_IT()\n        (++) HAL_I2C_Slave_Seq_Transmit_IT()\n        (++) HAL_I2C_Slave_Seq_Receive_IT()\n        (++) HAL_I2C_EnableListen_IT()\n        (++) HAL_I2C_DisableListen_IT()\n        (++) HAL_I2C_Master_Abort_IT()\n\n    (#) No-Blocking mode functions with DMA are :\n        (++) HAL_I2C_Master_Transmit_DMA()\n        (++) HAL_I2C_Master_Receive_DMA()\n        (++) HAL_I2C_Slave_Transmit_DMA()\n        (++) HAL_I2C_Slave_Receive_DMA()\n        (++) HAL_I2C_Mem_Write_DMA()\n        (++) HAL_I2C_Mem_Read_DMA()\n        (++) HAL_I2C_Master_Seq_Transmit_DMA()\n        (++) HAL_I2C_Master_Seq_Receive_DMA()\n        (++) HAL_I2C_Slave_Seq_Transmit_DMA()\n        (++) HAL_I2C_Slave_Seq_Receive_DMA()\n\n    (#) A set of Transfer Complete Callbacks are provided in non Blocking mode:\n        (++) HAL_I2C_MasterTxCpltCallback()\n        (++) HAL_I2C_MasterRxCpltCallback()\n        (++) HAL_I2C_SlaveTxCpltCallback()\n        (++) HAL_I2C_SlaveRxCpltCallback()\n        (++) HAL_I2C_MemTxCpltCallback()\n        (++) HAL_I2C_MemRxCpltCallback()\n        (++) HAL_I2C_AddrCallback()\n        (++) HAL_I2C_ListenCpltCallback()\n        (++) HAL_I2C_ErrorCallback()\n        (++) HAL_I2C_AbortCpltCallback()\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Transmits in master mode an amount of data in blocking mode.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  Timeout Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                          uint16_t Size, uint32_t Timeout)\n{\n  uint32_t tickstart;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode      = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr  = pData;\n    hi2c->XferCount = Size;\n    hi2c->XferISR   = NULL;\n\n    /* Send Slave Address */\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,\n                         I2C_GENERATE_START_WRITE);\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                         I2C_GENERATE_START_WRITE);\n    }\n\n    while (hi2c->XferCount > 0U)\n    {\n      /* Wait until TXIS flag is set */\n      if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n      {\n        return HAL_ERROR;\n      }\n      /* Write data to TXDR */\n      hi2c->Instance->TXDR = *hi2c->pBuffPtr;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferCount--;\n      hi2c->XferSize--;\n\n      if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\n      {\n        /* Wait until TCR flag is set */\n        if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\n        {\n          return HAL_ERROR;\n        }\n\n        if (hi2c->XferCount > MAX_NBYTE_SIZE)\n        {\n          hi2c->XferSize = MAX_NBYTE_SIZE;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n        else\n        {\n          hi2c->XferSize = hi2c->XferCount;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n      }\n    }\n\n    /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\n    /* Wait until STOPF flag is set */\n    if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Clear STOP Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n    /* Clear Configuration Register 2 */\n    I2C_RESET_CR2(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode  = HAL_I2C_MODE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Receives in master mode an amount of data in blocking mode.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  Timeout Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                         uint16_t Size, uint32_t Timeout)\n{\n  uint32_t tickstart;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode      = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr  = pData;\n    hi2c->XferCount = Size;\n    hi2c->XferISR   = NULL;\n\n    /* Send Slave Address */\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,\n                         I2C_GENERATE_START_READ);\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                         I2C_GENERATE_START_READ);\n    }\n\n    while (hi2c->XferCount > 0U)\n    {\n      /* Wait until RXNE flag is set */\n      if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n      {\n        return HAL_ERROR;\n      }\n\n      /* Read data from RXDR */\n      *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferSize--;\n      hi2c->XferCount--;\n\n      if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\n      {\n        /* Wait until TCR flag is set */\n        if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\n        {\n          return HAL_ERROR;\n        }\n\n        if (hi2c->XferCount > MAX_NBYTE_SIZE)\n        {\n          hi2c->XferSize = MAX_NBYTE_SIZE;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n        else\n        {\n          hi2c->XferSize = hi2c->XferCount;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n      }\n    }\n\n    /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\n    /* Wait until STOPF flag is set */\n    if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Clear STOP Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n    /* Clear Configuration Register 2 */\n    I2C_RESET_CR2(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode  = HAL_I2C_MODE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Transmits in slave mode an amount of data in blocking mode.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  Timeout Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                         uint32_t Timeout)\n{\n  uint32_t tickstart;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode      = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr  = pData;\n    hi2c->XferCount = Size;\n    hi2c->XferISR   = NULL;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Wait until ADDR flag is set */\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    /* Clear ADDR flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n\n    /* If 10bit addressing mode is selected */\n    if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)\n    {\n      /* Wait until ADDR flag is set */\n      if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)\n      {\n        /* Disable Address Acknowledge */\n        hi2c->Instance->CR2 |= I2C_CR2_NACK;\n        return HAL_ERROR;\n      }\n\n      /* Clear ADDR flag */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n    }\n\n    /* Wait until DIR flag is set Transmitter mode */\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    while (hi2c->XferCount > 0U)\n    {\n      /* Wait until TXIS flag is set */\n      if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n      {\n        /* Disable Address Acknowledge */\n        hi2c->Instance->CR2 |= I2C_CR2_NACK;\n        return HAL_ERROR;\n      }\n\n      /* Write data to TXDR */\n      hi2c->Instance->TXDR = *hi2c->pBuffPtr;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferCount--;\n    }\n\n    /* Wait until AF flag is set */\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    /* Flush TX register */\n    I2C_Flush_TXDR(hi2c);\n\n    /* Clear AF flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n    /* Wait until STOP flag is set */\n    if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n\n      return HAL_ERROR;\n    }\n\n    /* Clear STOP flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n    /* Wait until BUSY flag is reset */\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    /* Disable Address Acknowledge */\n    hi2c->Instance->CR2 |= I2C_CR2_NACK;\n\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode  = HAL_I2C_MODE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Receive in slave mode an amount of data in blocking mode\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  Timeout Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                        uint32_t Timeout)\n{\n  uint32_t tickstart;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode      = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr  = pData;\n    hi2c->XferCount = Size;\n    hi2c->XferSize = hi2c->XferCount;\n    hi2c->XferISR   = NULL;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Wait until ADDR flag is set */\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    /* Clear ADDR flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n\n    /* Wait until DIR flag is reset Receiver mode */\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    while (hi2c->XferCount > 0U)\n    {\n      /* Wait until RXNE flag is set */\n      if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n      {\n        /* Disable Address Acknowledge */\n        hi2c->Instance->CR2 |= I2C_CR2_NACK;\n\n        /* Store Last receive data if any */\n        if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET)\n        {\n          /* Read data from RXDR */\n          *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n          /* Increment Buffer pointer */\n          hi2c->pBuffPtr++;\n\n          hi2c->XferCount--;\n          hi2c->XferSize--;\n        }\n\n        return HAL_ERROR;\n      }\n\n      /* Read data from RXDR */\n      *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferCount--;\n      hi2c->XferSize--;\n    }\n\n    /* Wait until STOP flag is set */\n    if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    /* Clear STOP flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n    /* Wait until BUSY flag is reset */\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK)\n    {\n      /* Disable Address Acknowledge */\n      hi2c->Instance->CR2 |= I2C_CR2_NACK;\n      return HAL_ERROR;\n    }\n\n    /* Disable Address Acknowledge */\n    hi2c->Instance->CR2 |= I2C_CR2_NACK;\n\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode  = HAL_I2C_MODE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Transmit in master mode an amount of data in non-blocking mode with Interrupt\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                             uint16_t Size)\n{\n  uint32_t xfermode;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode        = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_IT;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    /* Send Slave Address */\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */\n    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n\n    /* Enable ERR, TC, STOP, NACK, TXI interrupt */\n    /* possible to enable all of these */\n    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Receive in master mode an amount of data in non-blocking mode with Interrupt\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                            uint16_t Size)\n{\n  uint32_t xfermode;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode        = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_IT;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    /* Send Slave Address */\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */\n    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n\n    /* Enable ERR, TC, STOP, NACK, RXI interrupt */\n    /* possible to enable all of these */\n    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Transmit in slave mode an amount of data in non-blocking mode with Interrupt\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\n{\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode        = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Slave_ISR_IT;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n\n    /* Enable ERR, TC, STOP, NACK, TXI interrupt */\n    /* possible to enable all of these */\n    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Receive in slave mode an amount of data in non-blocking mode with Interrupt\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\n{\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode        = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Slave_ISR_IT;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n\n    /* Enable ERR, TC, STOP, NACK, RXI interrupt */\n    /* possible to enable all of these */\n    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Transmit in master mode an amount of data in non-blocking mode with DMA\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                              uint16_t Size)\n{\n  uint32_t xfermode;\n  HAL_StatusTypeDef dmaxferstatus;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode        = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_DMA;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    if (hi2c->XferSize > 0U)\n    {\n      if (hi2c->hdmatx != NULL)\n      {\n        /* Set the I2C DMA transfer complete callback */\n        hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;\n\n        /* Set the DMA error callback */\n        hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\n\n        /* Set the unused DMA callbacks to NULL */\n        hi2c->hdmatx->XferHalfCpltCallback = NULL;\n        hi2c->hdmatx->XferAbortCallback = NULL;\n\n        /* Enable the DMA stream or channel depends on Instance */\n        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,\n                                         hi2c->XferSize);\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n\n      if (dmaxferstatus == HAL_OK)\n      {\n        /* Send Slave Address */\n        /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n        I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE);\n\n        /* Update XferCount value */\n        hi2c->XferCount -= hi2c->XferSize;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        /* Note : The I2C interrupts must be enabled after unlocking current process\n                  to avoid the risk of I2C interrupt handle execution before current\n                  process unlock */\n        /* Enable ERR and NACK interrupts */\n        I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\n\n        /* Enable DMA Request */\n        hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n    }\n    else\n    {\n      /* Update Transfer ISR function pointer */\n      hi2c->XferISR = I2C_Master_ISR_IT;\n\n      /* Send Slave Address */\n      /* Set NBYTES to write and generate START condition */\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                         I2C_GENERATE_START_WRITE);\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR, TC, STOP, NACK, TXI interrupt */\n      /* possible to enable all of these */\n      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Receive in master mode an amount of data in non-blocking mode with DMA\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                             uint16_t Size)\n{\n  uint32_t xfermode;\n  HAL_StatusTypeDef dmaxferstatus;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode        = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_DMA;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    if (hi2c->XferSize > 0U)\n    {\n      if (hi2c->hdmarx != NULL)\n      {\n        /* Set the I2C DMA transfer complete callback */\n        hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;\n\n        /* Set the DMA error callback */\n        hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\n\n        /* Set the unused DMA callbacks to NULL */\n        hi2c->hdmarx->XferHalfCpltCallback = NULL;\n        hi2c->hdmarx->XferAbortCallback = NULL;\n\n        /* Enable the DMA stream or channel depends on Instance */\n        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,\n                                         hi2c->XferSize);\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n\n      if (dmaxferstatus == HAL_OK)\n      {\n        /* Send Slave Address */\n        /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n        I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\n\n        /* Update XferCount value */\n        hi2c->XferCount -= hi2c->XferSize;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        /* Note : The I2C interrupts must be enabled after unlocking current process\n                  to avoid the risk of I2C interrupt handle execution before current\n                  process unlock */\n        /* Enable ERR and NACK interrupts */\n        I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\n\n        /* Enable DMA Request */\n        hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n    }\n    else\n    {\n      /* Update Transfer ISR function pointer */\n      hi2c->XferISR = I2C_Master_ISR_IT;\n\n      /* Send Slave Address */\n      /* Set NBYTES to read and generate START condition */\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                         I2C_GENERATE_START_READ);\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR, TC, STOP, NACK, TXI interrupt */\n      /* possible to enable all of these */\n      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Transmit in slave mode an amount of data in non-blocking mode with DMA\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\n{\n  HAL_StatusTypeDef dmaxferstatus;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode        = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Slave_ISR_DMA;\n\n    if (hi2c->hdmatx != NULL)\n    {\n      /* Set the I2C DMA transfer complete callback */\n      hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt;\n\n      /* Set the DMA error callback */\n      hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\n\n      /* Set the unused DMA callbacks to NULL */\n      hi2c->hdmatx->XferHalfCpltCallback = NULL;\n      hi2c->hdmatx->XferAbortCallback = NULL;\n\n      /* Enable the DMA stream or channel depends on Instance */\n      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,\n                                       hi2c->XferSize);\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (dmaxferstatus == HAL_OK)\n    {\n      /* Enable Address Acknowledge */\n      hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR, STOP, NACK, ADDR interrupts */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\n\n      /* Enable DMA Request */\n      hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Receive in slave mode an amount of data in non-blocking mode with DMA\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\n{\n  HAL_StatusTypeDef dmaxferstatus;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode        = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Slave_ISR_DMA;\n\n    if (hi2c->hdmarx != NULL)\n    {\n      /* Set the I2C DMA transfer complete callback */\n      hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt;\n\n      /* Set the DMA error callback */\n      hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\n\n      /* Set the unused DMA callbacks to NULL */\n      hi2c->hdmarx->XferHalfCpltCallback = NULL;\n      hi2c->hdmarx->XferAbortCallback = NULL;\n\n      /* Enable the DMA stream or channel depends on Instance */\n      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,\n                                       hi2c->XferSize);\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (dmaxferstatus == HAL_OK)\n    {\n      /* Enable Address Acknowledge */\n      hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR, STOP, NACK, ADDR interrupts */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\n\n      /* Enable DMA Request */\n      hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n/**\n  * @brief  Write an amount of data in blocking mode to a specific memory address\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  Timeout Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                    uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)\n{\n  uint32_t tickstart;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode      = HAL_I2C_MODE_MEM;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr  = pData;\n    hi2c->XferCount = Size;\n    hi2c->XferISR   = NULL;\n\n    /* Send Slave Address and Memory Address */\n    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK)\n    {\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n      return HAL_ERROR;\n    }\n\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\n    }\n\n    do\n    {\n      /* Wait until TXIS flag is set */\n      if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n      {\n        return HAL_ERROR;\n      }\n\n      /* Write data to TXDR */\n      hi2c->Instance->TXDR = *hi2c->pBuffPtr;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferCount--;\n      hi2c->XferSize--;\n\n      if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\n      {\n        /* Wait until TCR flag is set */\n        if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\n        {\n          return HAL_ERROR;\n        }\n\n        if (hi2c->XferCount > MAX_NBYTE_SIZE)\n        {\n          hi2c->XferSize = MAX_NBYTE_SIZE;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n        else\n        {\n          hi2c->XferSize = hi2c->XferCount;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n      }\n\n    } while (hi2c->XferCount > 0U);\n\n    /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\n    /* Wait until STOPF flag is reset */\n    if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Clear STOP Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n    /* Clear Configuration Register 2 */\n    I2C_RESET_CR2(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode  = HAL_I2C_MODE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Read an amount of data in blocking mode from a specific memory address\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  Timeout Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                   uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)\n{\n  uint32_t tickstart;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode      = HAL_I2C_MODE_MEM;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr  = pData;\n    hi2c->XferCount = Size;\n    hi2c->XferISR   = NULL;\n\n    /* Send Slave Address and Memory Address */\n    if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK)\n    {\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n      return HAL_ERROR;\n    }\n\n    /* Send Slave Address */\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,\n                         I2C_GENERATE_START_READ);\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                         I2C_GENERATE_START_READ);\n    }\n\n    do\n    {\n      /* Wait until RXNE flag is set */\n      if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK)\n      {\n        return HAL_ERROR;\n      }\n\n      /* Read data from RXDR */\n      *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferSize--;\n      hi2c->XferCount--;\n\n      if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\n      {\n        /* Wait until TCR flag is set */\n        if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\n        {\n          return HAL_ERROR;\n        }\n\n        if (hi2c->XferCount > MAX_NBYTE_SIZE)\n        {\n          hi2c->XferSize = MAX_NBYTE_SIZE;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n        else\n        {\n          hi2c->XferSize = hi2c->XferCount;\n          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                             I2C_NO_STARTSTOP);\n        }\n      }\n    } while (hi2c->XferCount > 0U);\n\n    /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\n    /* Wait until STOPF flag is reset */\n    if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Clear STOP Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n    /* Clear Configuration Register 2 */\n    I2C_RESET_CR2(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode  = HAL_I2C_MODE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n/**\n  * @brief  Write an amount of data in non-blocking mode with Interrupt to a specific memory address\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\n{\n  uint32_t tickstart;\n  uint32_t xfermode;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode        = HAL_I2C_MODE_MEM;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_IT;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    /* Send Slave Address and Memory Address */\n    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart)\n        != HAL_OK)\n    {\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n      return HAL_ERROR;\n    }\n\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n\n    /* Enable ERR, TC, STOP, NACK, TXI interrupt */\n    /* possible to enable all of these */\n    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Read an amount of data in non-blocking mode with Interrupt from a specific memory address\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\n{\n  uint32_t tickstart;\n  uint32_t xfermode;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode        = HAL_I2C_MODE_MEM;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_IT;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    /* Send Slave Address and Memory Address */\n    if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)\n    {\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n      return HAL_ERROR;\n    }\n\n    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n\n    /* Enable ERR, TC, STOP, NACK, RXI interrupt */\n    /* possible to enable all of these */\n    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n/**\n  * @brief  Write an amount of data in non-blocking mode with DMA to a specific memory address\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                        uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\n{\n  uint32_t tickstart;\n  uint32_t xfermode;\n  HAL_StatusTypeDef dmaxferstatus;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode        = HAL_I2C_MODE_MEM;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_DMA;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    /* Send Slave Address and Memory Address */\n    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart)\n        != HAL_OK)\n    {\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n      return HAL_ERROR;\n    }\n\n\n    if (hi2c->hdmatx != NULL)\n    {\n      /* Set the I2C DMA transfer complete callback */\n      hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;\n\n      /* Set the DMA error callback */\n      hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\n\n      /* Set the unused DMA callbacks to NULL */\n      hi2c->hdmatx->XferHalfCpltCallback = NULL;\n      hi2c->hdmatx->XferAbortCallback = NULL;\n\n      /* Enable the DMA stream or channel depends on Instance */\n      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,\n                                       hi2c->XferSize);\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_READY;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (dmaxferstatus == HAL_OK)\n    {\n      /* Send Slave Address */\n      /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);\n\n      /* Update XferCount value */\n      hi2c->XferCount -= hi2c->XferSize;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR and NACK interrupts */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\n\n      /* Enable DMA Request */\n      hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_READY;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Reads an amount of data in non-blocking mode with DMA from a specific memory address.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be read\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,\n                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\n{\n  uint32_t tickstart;\n  uint32_t xfermode;\n  HAL_StatusTypeDef dmaxferstatus;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Init tickstart for timeout management*/\n    tickstart = HAL_GetTick();\n\n    hi2c->State       = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode        = HAL_I2C_MODE_MEM;\n    hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->XferISR     = I2C_Master_ISR_DMA;\n\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = I2C_AUTOEND_MODE;\n    }\n\n    /* Send Slave Address and Memory Address */\n    if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)\n    {\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n      return HAL_ERROR;\n    }\n\n    if (hi2c->hdmarx != NULL)\n    {\n      /* Set the I2C DMA transfer complete callback */\n      hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;\n\n      /* Set the DMA error callback */\n      hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\n\n      /* Set the unused DMA callbacks to NULL */\n      hi2c->hdmarx->XferHalfCpltCallback = NULL;\n      hi2c->hdmarx->XferAbortCallback = NULL;\n\n      /* Enable the DMA stream or channel depends on Instance */\n      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,\n                                       hi2c->XferSize);\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_READY;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (dmaxferstatus == HAL_OK)\n    {\n      /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\n\n      /* Update XferCount value */\n      hi2c->XferCount -= hi2c->XferSize;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR and NACK interrupts */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\n\n      /* Enable DMA Request */\n      hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_READY;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Checks if target device is ready for communication.\n  * @note   This function is used with Memory devices\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  Trials Number of trials\n  * @param  Timeout Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials,\n                                        uint32_t Timeout)\n{\n  uint32_t tickstart;\n\n  __IO uint32_t I2C_Trials = 0UL;\n\n  FlagStatus tmp1;\n  FlagStatus tmp2;\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\n    {\n      return HAL_BUSY;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_BUSY;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    do\n    {\n      /* Generate Start */\n      hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress);\n\n      /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\n      /* Wait until STOPF flag is set or a NACK flag is set*/\n      tickstart = HAL_GetTick();\n\n      tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF);\n      tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF);\n\n      while ((tmp1 == RESET) && (tmp2 == RESET))\n      {\n        if (Timeout != HAL_MAX_DELAY)\n        {\n          if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\n          {\n            /* Update I2C state */\n            hi2c->State = HAL_I2C_STATE_READY;\n\n            /* Update I2C error code */\n            hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\n\n            /* Process Unlocked */\n            __HAL_UNLOCK(hi2c);\n\n            return HAL_ERROR;\n          }\n        }\n\n        tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF);\n        tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF);\n      }\n\n      /* Check if the NACKF flag has not been set */\n      if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET)\n      {\n        /* Wait until STOPF flag is reset */\n        if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)\n        {\n          return HAL_ERROR;\n        }\n\n        /* Clear STOP Flag */\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n        /* Device is ready */\n        hi2c->State = HAL_I2C_STATE_READY;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_OK;\n      }\n      else\n      {\n        /* Wait until STOPF flag is reset */\n        if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)\n        {\n          return HAL_ERROR;\n        }\n\n        /* Clear NACK Flag */\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n        /* Clear STOP Flag, auto generated with autoend*/\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n      }\n\n      /* Check if the maximum allowed number of trials has been reached */\n      if (I2C_Trials == Trials)\n      {\n        /* Generate Stop */\n        hi2c->Instance->CR2 |= I2C_CR2_STOP;\n\n        /* Wait until STOPF flag is reset */\n        if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)\n        {\n          return HAL_ERROR;\n        }\n\n        /* Clear STOP Flag */\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n      }\n\n      /* Increment Trials */\n      I2C_Trials++;\n    } while (I2C_Trials < Trials);\n\n    /* Update I2C state */\n    hi2c->State = HAL_I2C_STATE_READY;\n\n    /* Update I2C error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_ERROR;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Sequential transmit in master I2C mode an amount of data in non-blocking mode with Interrupt.\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                 uint16_t Size, uint32_t XferOptions)\n{\n  uint32_t xfermode;\n  uint32_t xferrequest = I2C_GENERATE_START_WRITE;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode      = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Master_ISR_IT;\n\n    /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = hi2c->XferOptions;\n    }\n\n    /* If transfer direction not change and there is no request to start another frame,\n       do not generate Restart Condition */\n    /* Mean Previous state is same as current state */\n    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \\\n        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\n    {\n      xferrequest = I2C_NO_STARTSTOP;\n    }\n    else\n    {\n      /* Convert OTHER_xxx XferOptions if any */\n      I2C_ConvertOtherXferOptions(hi2c);\n\n      /* Update xfermode accordingly if no reload is necessary */\n      if (hi2c->XferCount <= MAX_NBYTE_SIZE)\n      {\n        xfermode = hi2c->XferOptions;\n      }\n    }\n\n    /* Send Slave Address and set NBYTES to write */\n    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA.\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                  uint16_t Size, uint32_t XferOptions)\n{\n  uint32_t xfermode;\n  uint32_t xferrequest = I2C_GENERATE_START_WRITE;\n  HAL_StatusTypeDef dmaxferstatus;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_TX;\n    hi2c->Mode      = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Master_ISR_DMA;\n\n    /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = hi2c->XferOptions;\n    }\n\n    /* If transfer direction not change and there is no request to start another frame,\n       do not generate Restart Condition */\n    /* Mean Previous state is same as current state */\n    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \\\n        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\n    {\n      xferrequest = I2C_NO_STARTSTOP;\n    }\n    else\n    {\n      /* Convert OTHER_xxx XferOptions if any */\n      I2C_ConvertOtherXferOptions(hi2c);\n\n      /* Update xfermode accordingly if no reload is necessary */\n      if (hi2c->XferCount <= MAX_NBYTE_SIZE)\n      {\n        xfermode = hi2c->XferOptions;\n      }\n    }\n\n    if (hi2c->XferSize > 0U)\n    {\n      if (hi2c->hdmatx != NULL)\n      {\n        /* Set the I2C DMA transfer complete callback */\n        hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;\n\n        /* Set the DMA error callback */\n        hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\n\n        /* Set the unused DMA callbacks to NULL */\n        hi2c->hdmatx->XferHalfCpltCallback = NULL;\n        hi2c->hdmatx->XferAbortCallback = NULL;\n\n        /* Enable the DMA stream or channel depends on Instance */\n        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,\n                                         hi2c->XferSize);\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n\n      if (dmaxferstatus == HAL_OK)\n      {\n        /* Send Slave Address and set NBYTES to write */\n        I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\n\n        /* Update XferCount value */\n        hi2c->XferCount -= hi2c->XferSize;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        /* Note : The I2C interrupts must be enabled after unlocking current process\n                  to avoid the risk of I2C interrupt handle execution before current\n                  process unlock */\n        /* Enable ERR and NACK interrupts */\n        I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\n\n        /* Enable DMA Request */\n        hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n    }\n    else\n    {\n      /* Update Transfer ISR function pointer */\n      hi2c->XferISR = I2C_Master_ISR_IT;\n\n      /* Send Slave Address */\n      /* Set NBYTES to write and generate START condition */\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                         I2C_GENERATE_START_WRITE);\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR, TC, STOP, NACK, TXI interrupt */\n      /* possible to enable all of these */\n      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Sequential receive in master I2C mode an amount of data in non-blocking mode with Interrupt\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                uint16_t Size, uint32_t XferOptions)\n{\n  uint32_t xfermode;\n  uint32_t xferrequest = I2C_GENERATE_START_READ;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode      = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Master_ISR_IT;\n\n    /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = hi2c->XferOptions;\n    }\n\n    /* If transfer direction not change and there is no request to start another frame,\n       do not generate Restart Condition */\n    /* Mean Previous state is same as current state */\n    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \\\n        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\n    {\n      xferrequest = I2C_NO_STARTSTOP;\n    }\n    else\n    {\n      /* Convert OTHER_xxx XferOptions if any */\n      I2C_ConvertOtherXferOptions(hi2c);\n\n      /* Update xfermode accordingly if no reload is necessary */\n      if (hi2c->XferCount <= MAX_NBYTE_SIZE)\n      {\n        xfermode = hi2c->XferOptions;\n      }\n    }\n\n    /* Send Slave Address and set NBYTES to read */\n    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,\n                                                 uint16_t Size, uint32_t XferOptions)\n{\n  uint32_t xfermode;\n  uint32_t xferrequest = I2C_GENERATE_START_READ;\n  HAL_StatusTypeDef dmaxferstatus;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_RX;\n    hi2c->Mode      = HAL_I2C_MODE_MASTER;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Master_ISR_DMA;\n\n    /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n      xfermode = I2C_RELOAD_MODE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n      xfermode = hi2c->XferOptions;\n    }\n\n    /* If transfer direction not change and there is no request to start another frame,\n       do not generate Restart Condition */\n    /* Mean Previous state is same as current state */\n    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \\\n        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\n    {\n      xferrequest = I2C_NO_STARTSTOP;\n    }\n    else\n    {\n      /* Convert OTHER_xxx XferOptions if any */\n      I2C_ConvertOtherXferOptions(hi2c);\n\n      /* Update xfermode accordingly if no reload is necessary */\n      if (hi2c->XferCount <= MAX_NBYTE_SIZE)\n      {\n        xfermode = hi2c->XferOptions;\n      }\n    }\n\n    if (hi2c->XferSize > 0U)\n    {\n      if (hi2c->hdmarx != NULL)\n      {\n        /* Set the I2C DMA transfer complete callback */\n        hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;\n\n        /* Set the DMA error callback */\n        hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\n\n        /* Set the unused DMA callbacks to NULL */\n        hi2c->hdmarx->XferHalfCpltCallback = NULL;\n        hi2c->hdmarx->XferAbortCallback = NULL;\n\n        /* Enable the DMA stream or channel depends on Instance */\n        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,\n                                         hi2c->XferSize);\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n\n      if (dmaxferstatus == HAL_OK)\n      {\n        /* Send Slave Address and set NBYTES to read */\n        I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\n\n        /* Update XferCount value */\n        hi2c->XferCount -= hi2c->XferSize;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        /* Note : The I2C interrupts must be enabled after unlocking current process\n                  to avoid the risk of I2C interrupt handle execution before current\n                  process unlock */\n        /* Enable ERR and NACK interrupts */\n        I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\n\n        /* Enable DMA Request */\n        hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\n      }\n      else\n      {\n        /* Update I2C state */\n        hi2c->State     = HAL_I2C_STATE_READY;\n        hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n        /* Update I2C error code */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n    }\n    else\n    {\n      /* Update Transfer ISR function pointer */\n      hi2c->XferISR = I2C_Master_ISR_IT;\n\n      /* Send Slave Address */\n      /* Set NBYTES to read and generate START condition */\n      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,\n                         I2C_GENERATE_START_READ);\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Note : The I2C interrupts must be enabled after unlocking current process\n                to avoid the risk of I2C interrupt handle execution before current\n                process unlock */\n      /* Enable ERR, TC, STOP, NACK, TXI interrupt */\n      /* possible to enable all of these */\n      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |\n        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with Interrupt\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                                uint32_t XferOptions)\n{\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\n    /* and then toggle the HAL slave RX state to TX state */\n    if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\n    {\n      /* Disable associated Interrupts */\n      I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\n\n      /* Abort DMA Xfer if any */\n      if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\n      {\n        hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n\n        if (hi2c->hdmarx != NULL)\n        {\n          /* Set the I2C DMA Abort callback :\n           will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n          hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\n\n          /* Abort DMA RX */\n          if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\n          {\n            /* Call Directly XferAbortCallback function in case of error */\n            hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\n          }\n        }\n      }\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_TX_LISTEN;\n    hi2c->Mode      = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Slave_ISR_IT;\n\n    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE)\n    {\n      /* Clear ADDR flag after prepare the transfer parameters */\n      /* This action will generate an acknowledge to the Master */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n    }\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n    to avoid the risk of I2C interrupt handle execution before current\n    process unlock */\n    /* REnable ADDR interrupt */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with DMA\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                                 uint32_t XferOptions)\n{\n  HAL_StatusTypeDef dmaxferstatus;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);\n\n    /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\n    /* and then toggle the HAL slave RX state to TX state */\n    if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\n    {\n      /* Disable associated Interrupts */\n      I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\n\n      if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\n      {\n        /* Abort DMA Xfer if any */\n        if (hi2c->hdmarx != NULL)\n        {\n          hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n\n          /* Set the I2C DMA Abort callback :\n           will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n          hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\n\n          /* Abort DMA RX */\n          if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\n          {\n            /* Call Directly XferAbortCallback function in case of error */\n            hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\n          }\n        }\n      }\n    }\n    else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\n    {\n      if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\n      {\n        hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n\n        /* Abort DMA Xfer if any */\n        if (hi2c->hdmatx != NULL)\n        {\n          /* Set the I2C DMA Abort callback :\n           will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n          hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\n\n          /* Abort DMA TX */\n          if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\n          {\n            /* Call Directly XferAbortCallback function in case of error */\n            hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\n          }\n        }\n      }\n    }\n    else\n    {\n      /* Nothing to do */\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_TX_LISTEN;\n    hi2c->Mode      = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Slave_ISR_DMA;\n\n    if (hi2c->hdmatx != NULL)\n    {\n      /* Set the I2C DMA transfer complete callback */\n      hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt;\n\n      /* Set the DMA error callback */\n      hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\n\n      /* Set the unused DMA callbacks to NULL */\n      hi2c->hdmatx->XferHalfCpltCallback = NULL;\n      hi2c->hdmatx->XferAbortCallback = NULL;\n\n      /* Enable the DMA stream or channel depends on Instance */\n      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,\n                                       hi2c->XferSize);\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (dmaxferstatus == HAL_OK)\n    {\n      /* Update XferCount value */\n      hi2c->XferCount -= hi2c->XferSize;\n\n      /* Reset XferSize */\n      hi2c->XferSize = 0;\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE)\n    {\n      /* Clear ADDR flag after prepare the transfer parameters */\n      /* This action will generate an acknowledge to the Master */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n    }\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Enable DMA Request */\n    hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n    to avoid the risk of I2C interrupt handle execution before current\n    process unlock */\n    /* Enable ERR, STOP, NACK, ADDR interrupts */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with Interrupt\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                               uint32_t XferOptions)\n{\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\n    /* and then toggle the HAL slave TX state to RX state */\n    if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\n    {\n      /* Disable associated Interrupts */\n      I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\n\n      if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\n      {\n        hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n\n        /* Abort DMA Xfer if any */\n        if (hi2c->hdmatx != NULL)\n        {\n          /* Set the I2C DMA Abort callback :\n           will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n          hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\n\n          /* Abort DMA TX */\n          if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\n          {\n            /* Call Directly XferAbortCallback function in case of error */\n            hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\n          }\n        }\n      }\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_RX_LISTEN;\n    hi2c->Mode      = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Slave_ISR_IT;\n\n    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT)\n    {\n      /* Clear ADDR flag after prepare the transfer parameters */\n      /* This action will generate an acknowledge to the Master */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n    }\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n    to avoid the risk of I2C interrupt handle execution before current\n    process unlock */\n    /* REnable ADDR interrupt */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with DMA\n  * @note   This interface allow to manage repeated start condition when a direction change during transfer\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  pData Pointer to data buffer\n  * @param  Size Amount of data to be sent\n  * @param  XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,\n                                                uint32_t XferOptions)\n{\n  HAL_StatusTypeDef dmaxferstatus;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\n\n  if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\n      return  HAL_ERROR;\n    }\n\n    /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);\n\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\n    /* and then toggle the HAL slave TX state to RX state */\n    if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\n    {\n      /* Disable associated Interrupts */\n      I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\n\n      if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\n      {\n        /* Abort DMA Xfer if any */\n        if (hi2c->hdmatx != NULL)\n        {\n          hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n\n          /* Set the I2C DMA Abort callback :\n           will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n          hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\n\n          /* Abort DMA TX */\n          if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\n          {\n            /* Call Directly XferAbortCallback function in case of error */\n            hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\n          }\n        }\n      }\n    }\n    else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\n    {\n      if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\n      {\n        hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n\n        /* Abort DMA Xfer if any */\n        if (hi2c->hdmarx != NULL)\n        {\n          /* Set the I2C DMA Abort callback :\n           will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n          hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\n\n          /* Abort DMA RX */\n          if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\n          {\n            /* Call Directly XferAbortCallback function in case of error */\n            hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\n          }\n        }\n      }\n    }\n    else\n    {\n      /* Nothing to do */\n    }\n\n    hi2c->State     = HAL_I2C_STATE_BUSY_RX_LISTEN;\n    hi2c->Mode      = HAL_I2C_MODE_SLAVE;\n    hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n\n    /* Enable Address Acknowledge */\n    hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\n\n    /* Prepare transfer parameters */\n    hi2c->pBuffPtr    = pData;\n    hi2c->XferCount   = Size;\n    hi2c->XferSize    = hi2c->XferCount;\n    hi2c->XferOptions = XferOptions;\n    hi2c->XferISR     = I2C_Slave_ISR_DMA;\n\n    if (hi2c->hdmarx != NULL)\n    {\n      /* Set the I2C DMA transfer complete callback */\n      hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt;\n\n      /* Set the DMA error callback */\n      hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\n\n      /* Set the unused DMA callbacks to NULL */\n      hi2c->hdmarx->XferHalfCpltCallback = NULL;\n      hi2c->hdmarx->XferAbortCallback = NULL;\n\n      /* Enable the DMA stream or channel depends on Instance */\n      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR,\n                                       (uint32_t)pData, hi2c->XferSize);\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (dmaxferstatus == HAL_OK)\n    {\n      /* Update XferCount value */\n      hi2c->XferCount -= hi2c->XferSize;\n\n      /* Reset XferSize */\n      hi2c->XferSize = 0;\n    }\n    else\n    {\n      /* Update I2C state */\n      hi2c->State     = HAL_I2C_STATE_LISTEN;\n      hi2c->Mode      = HAL_I2C_MODE_NONE;\n\n      /* Update I2C error code */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n\n    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT)\n    {\n      /* Clear ADDR flag after prepare the transfer parameters */\n      /* This action will generate an acknowledge to the Master */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n    }\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Enable DMA Request */\n    hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n    to avoid the risk of I2C interrupt handle execution before current\n    process unlock */\n    /* REnable ADDR interrupt */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Enable the Address listen mode with Interrupt.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)\n{\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    hi2c->State = HAL_I2C_STATE_LISTEN;\n    hi2c->XferISR = I2C_Slave_ISR_IT;\n\n    /* Enable the Address Match interrupt */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Disable the Address listen mode with Interrupt.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)\n{\n  /* Declaration of tmp to prevent undefined behavior of volatile usage */\n  uint32_t tmp;\n\n  /* Disable Address listen mode only if a transfer is not ongoing */\n  if (hi2c->State == HAL_I2C_STATE_LISTEN)\n  {\n    tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK;\n    hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode);\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode = HAL_I2C_MODE_NONE;\n    hi2c->XferISR = NULL;\n\n    /* Disable the Address Match interrupt */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Abort a master I2C IT or DMA process communication with Interrupt.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)\n{\n  if (hi2c->Mode == HAL_I2C_MODE_MASTER)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    /* Disable Interrupts and Store Previous state */\n    if (hi2c->State == HAL_I2C_STATE_BUSY_TX)\n    {\n      I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\n      hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX;\n    }\n    else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\n    {\n      I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\n      hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;\n    }\n    else\n    {\n      /* Do nothing */\n    }\n\n    /* Set State at HAL_I2C_STATE_ABORT */\n    hi2c->State = HAL_I2C_STATE_ABORT;\n\n    /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */\n    /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfer */\n    I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Note : The I2C interrupts must be enabled after unlocking current process\n              to avoid the risk of I2C interrupt handle execution before current\n              process unlock */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    /* Wrong usage of abort function */\n    /* This function should be used only in case of abort monitored by master device */\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks\n  * @{\n  */\n\n/**\n  * @brief  This function handles I2C event interrupt request.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\nvoid HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c)\n{\n  /* Get current IT Flags and IT sources value */\n  uint32_t itflags   = READ_REG(hi2c->Instance->ISR);\n  uint32_t itsources = READ_REG(hi2c->Instance->CR1);\n\n  /* I2C events treatment -------------------------------------*/\n  if (hi2c->XferISR != NULL)\n  {\n    hi2c->XferISR(hi2c, itflags, itsources);\n  }\n}\n\n/**\n  * @brief  This function handles I2C error interrupt request.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\nvoid HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)\n{\n  uint32_t itflags   = READ_REG(hi2c->Instance->ISR);\n  uint32_t itsources = READ_REG(hi2c->Instance->CR1);\n  uint32_t tmperror;\n\n  /* I2C Bus error interrupt occurred ------------------------------------*/\n  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))\n  {\n    hi2c->ErrorCode |= HAL_I2C_ERROR_BERR;\n\n    /* Clear BERR flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR);\n  }\n\n  /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/\n  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))\n  {\n    hi2c->ErrorCode |= HAL_I2C_ERROR_OVR;\n\n    /* Clear OVR flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR);\n  }\n\n  /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/\n  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))\n  {\n    hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO;\n\n    /* Clear ARLO flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO);\n  }\n\n  /* Store current volatile hi2c->ErrorCode, misra rule */\n  tmperror = hi2c->ErrorCode;\n\n  /* Call the Error Callback in case of Error detected */\n  if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) !=  HAL_I2C_ERROR_NONE)\n  {\n    I2C_ITError(hi2c, tmperror);\n  }\n}\n\n/**\n  * @brief  Master Tx Transfer completed callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_MasterTxCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Master Rx Transfer completed callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_MasterRxCpltCallback could be implemented in the user file\n   */\n}\n\n/** @brief  Slave Tx Transfer completed callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Slave Rx Transfer completed callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Slave Address Match callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFERDIRECTION\n  * @param  AddrMatchCode Address Match Code\n  * @retval None\n  */\n__weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n  UNUSED(TransferDirection);\n  UNUSED(AddrMatchCode);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_AddrCallback() could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Listen Complete callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_ListenCpltCallback() could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Memory Tx Transfer completed callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_MemTxCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Memory Rx Transfer completed callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_MemRxCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  I2C error callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_ErrorCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  I2C abort callback.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval None\n  */\n__weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(hi2c);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_I2C_AbortCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions\n  *  @brief   Peripheral State, Mode and Error functions\n  *\n@verbatim\n ===============================================================================\n            ##### Peripheral State, Mode and Error functions #####\n ===============================================================================\n    [..]\n    This subsection permit to get in run-time the status of the peripheral\n    and the data flow.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Return the I2C handle state.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @retval HAL state\n  */\nHAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c)\n{\n  /* Return I2C handle state */\n  return hi2c->State;\n}\n\n/**\n  * @brief  Returns the I2C Master, Slave, Memory or no mode.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *         the configuration information for I2C module\n  * @retval HAL mode\n  */\nHAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c)\n{\n  return hi2c->Mode;\n}\n\n/**\n  * @brief  Return the I2C error code.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *              the configuration information for the specified I2C.\n  * @retval I2C Error Code\n  */\nuint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c)\n{\n  return hi2c->ErrorCode;\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup I2C_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  ITFlags Interrupt flags to handle.\n  * @param  ITSources Interrupt sources enabled.\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                           uint32_t ITSources)\n{\n  uint16_t devaddress;\n  uint32_t tmpITFlags = ITFlags;\n\n  /* Process Locked */\n  __HAL_LOCK(hi2c);\n\n  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\n  {\n    /* Clear NACK Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n    /* Set corresponding Error Code */\n    /* No need to generate STOP, it is automatically done */\n    /* Error callback will be send during stop flag treatment */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\n\n    /* Flush TX register */\n    I2C_Flush_TXDR(hi2c);\n  }\n  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))\n  {\n    /* Remove RXNE flag on temporary variable as read done */\n    tmpITFlags &= ~I2C_FLAG_RXNE;\n\n    /* Read data from RXDR */\n    *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n    /* Increment Buffer pointer */\n    hi2c->pBuffPtr++;\n\n    hi2c->XferSize--;\n    hi2c->XferCount--;\n  }\n  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))\n  {\n    /* Write data to TXDR */\n    hi2c->Instance->TXDR = *hi2c->pBuffPtr;\n\n    /* Increment Buffer pointer */\n    hi2c->pBuffPtr++;\n\n    hi2c->XferSize--;\n    hi2c->XferCount--;\n  }\n  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\n  {\n    if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\n    {\n      devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD);\n\n      if (hi2c->XferCount > MAX_NBYTE_SIZE)\n      {\n        hi2c->XferSize = MAX_NBYTE_SIZE;\n        I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\n      }\n      else\n      {\n        hi2c->XferSize = hi2c->XferCount;\n        if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)\n        {\n          I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize,\n                             hi2c->XferOptions, I2C_NO_STARTSTOP);\n        }\n        else\n        {\n          I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize,\n                             I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\n        }\n      }\n    }\n    else\n    {\n      /* Call TxCpltCallback() if no stop mode is set */\n      if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\n      {\n        /* Call I2C Master Sequential complete process */\n        I2C_ITMasterSeqCplt(hi2c);\n      }\n      else\n      {\n        /* Wrong size Status regarding TCR flag event */\n        /* Call the corresponding callback to inform upper layer of End of Transfer */\n        I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\n      }\n    }\n  }\n  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\n  {\n    if (hi2c->XferCount == 0U)\n    {\n      if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\n      {\n        /* Generate a stop condition in case of no transfer option */\n        if (hi2c->XferOptions == I2C_NO_OPTION_FRAME)\n        {\n          /* Generate Stop */\n          hi2c->Instance->CR2 |= I2C_CR2_STOP;\n        }\n        else\n        {\n          /* Call I2C Master Sequential complete process */\n          I2C_ITMasterSeqCplt(hi2c);\n        }\n      }\n    }\n    else\n    {\n      /* Wrong size Status regarding TC flag event */\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n      I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\n    }\n  }\n  else\n  {\n    /* Nothing to do */\n  }\n\n  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\n  {\n    /* Call I2C Master complete process */\n    I2C_ITMasterCplt(hi2c, tmpITFlags);\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(hi2c);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  ITFlags Interrupt flags to handle.\n  * @param  ITSources Interrupt sources enabled.\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                          uint32_t ITSources)\n{\n  uint32_t tmpoptions = hi2c->XferOptions;\n  uint32_t tmpITFlags = ITFlags;\n\n  /* Process locked */\n  __HAL_LOCK(hi2c);\n\n  /* Check if STOPF is set */\n  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\n  {\n    /* Call I2C Slave complete process */\n    I2C_ITSlaveCplt(hi2c, tmpITFlags);\n  }\n\n  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\n  {\n    /* Check that I2C transfer finished */\n    /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */\n    /* Mean XferCount == 0*/\n    /* So clear Flag NACKF only */\n    if (hi2c->XferCount == 0U)\n    {\n      if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME))\n        /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for\n           Warning[Pa134]: left and right operands are identical */\n      {\n        /* Call I2C Listen complete process */\n        I2C_ITListenCplt(hi2c, tmpITFlags);\n      }\n      else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME))\n      {\n        /* Clear NACK Flag */\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n        /* Flush TX register */\n        I2C_Flush_TXDR(hi2c);\n\n        /* Last Byte is Transmitted */\n        /* Call I2C Slave Sequential complete process */\n        I2C_ITSlaveSeqCplt(hi2c);\n      }\n      else\n      {\n        /* Clear NACK Flag */\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n      }\n    }\n    else\n    {\n      /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/\n      /* Clear NACK Flag */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n      /* Set ErrorCode corresponding to a Non-Acknowledge */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\n\n      if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME))\n      {\n        /* Call the corresponding callback to inform upper layer of End of Transfer */\n        I2C_ITError(hi2c, hi2c->ErrorCode);\n      }\n    }\n  }\n  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))\n  {\n    if (hi2c->XferCount > 0U)\n    {\n      /* Read data from RXDR */\n      *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferSize--;\n      hi2c->XferCount--;\n    }\n\n    if ((hi2c->XferCount == 0U) && \\\n        (tmpoptions != I2C_NO_OPTION_FRAME))\n    {\n      /* Call I2C Slave Sequential complete process */\n      I2C_ITSlaveSeqCplt(hi2c);\n    }\n  }\n  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))\n  {\n    I2C_ITAddrCplt(hi2c, tmpITFlags);\n  }\n  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))\n  {\n    /* Write data to TXDR only if XferCount not reach \"0\" */\n    /* A TXIS flag can be set, during STOP treatment      */\n    /* Check if all Data have already been sent */\n    /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */\n    if (hi2c->XferCount > 0U)\n    {\n      /* Write data to TXDR */\n      hi2c->Instance->TXDR = *hi2c->pBuffPtr;\n\n      /* Increment Buffer pointer */\n      hi2c->pBuffPtr++;\n\n      hi2c->XferCount--;\n      hi2c->XferSize--;\n    }\n    else\n    {\n      if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME))\n      {\n        /* Last Byte is Transmitted */\n        /* Call I2C Slave Sequential complete process */\n        I2C_ITSlaveSeqCplt(hi2c);\n      }\n    }\n  }\n  else\n  {\n    /* Nothing to do */\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(hi2c);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  ITFlags Interrupt flags to handle.\n  * @param  ITSources Interrupt sources enabled.\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                            uint32_t ITSources)\n{\n  uint16_t devaddress;\n  uint32_t xfermode;\n\n  /* Process Locked */\n  __HAL_LOCK(hi2c);\n\n  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\n  {\n    /* Clear NACK Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n    /* Set corresponding Error Code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\n\n    /* No need to generate STOP, it is automatically done */\n    /* But enable STOP interrupt, to treat it */\n    /* Error callback will be send during stop flag treatment */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\n\n    /* Flush TX register */\n    I2C_Flush_TXDR(hi2c);\n  }\n  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\n  {\n    /* Disable TC interrupt */\n    __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI);\n\n    if (hi2c->XferCount != 0U)\n    {\n      /* Recover Slave address */\n      devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD);\n\n      /* Prepare the new XferSize to transfer */\n      if (hi2c->XferCount > MAX_NBYTE_SIZE)\n      {\n        hi2c->XferSize = MAX_NBYTE_SIZE;\n        xfermode = I2C_RELOAD_MODE;\n      }\n      else\n      {\n        hi2c->XferSize = hi2c->XferCount;\n        if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)\n        {\n          xfermode = hi2c->XferOptions;\n        }\n        else\n        {\n          xfermode = I2C_AUTOEND_MODE;\n        }\n      }\n\n      /* Set the new XferSize in Nbytes register */\n      I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);\n\n      /* Update XferCount value */\n      hi2c->XferCount -= hi2c->XferSize;\n\n      /* Enable DMA Request */\n      if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\n      {\n        hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\n      }\n      else\n      {\n        hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\n      }\n    }\n    else\n    {\n      /* Call TxCpltCallback() if no stop mode is set */\n      if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\n      {\n        /* Call I2C Master Sequential complete process */\n        I2C_ITMasterSeqCplt(hi2c);\n      }\n      else\n      {\n        /* Wrong size Status regarding TCR flag event */\n        /* Call the corresponding callback to inform upper layer of End of Transfer */\n        I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\n      }\n    }\n  }\n  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\n  {\n    if (hi2c->XferCount == 0U)\n    {\n      if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\n      {\n        /* Generate a stop condition in case of no transfer option */\n        if (hi2c->XferOptions == I2C_NO_OPTION_FRAME)\n        {\n          /* Generate Stop */\n          hi2c->Instance->CR2 |= I2C_CR2_STOP;\n        }\n        else\n        {\n          /* Call I2C Master Sequential complete process */\n          I2C_ITMasterSeqCplt(hi2c);\n        }\n      }\n    }\n    else\n    {\n      /* Wrong size Status regarding TC flag event */\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n      I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\n    }\n  }\n  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\n  {\n    /* Call I2C Master complete process */\n    I2C_ITMasterCplt(hi2c, ITFlags);\n  }\n  else\n  {\n    /* Nothing to do */\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(hi2c);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  ITFlags Interrupt flags to handle.\n  * @param  ITSources Interrupt sources enabled.\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,\n                                           uint32_t ITSources)\n{\n  uint32_t tmpoptions = hi2c->XferOptions;\n  uint32_t treatdmanack = 0U;\n  HAL_I2C_StateTypeDef tmpstate;\n\n  /* Process locked */\n  __HAL_LOCK(hi2c);\n\n  /* Check if STOPF is set */\n  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\n  {\n    /* Call I2C Slave complete process */\n    I2C_ITSlaveCplt(hi2c, ITFlags);\n  }\n\n  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \\\n      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\n  {\n    /* Check that I2C transfer finished */\n    /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */\n    /* Mean XferCount == 0 */\n    /* So clear Flag NACKF only */\n    if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) ||\n        (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET))\n    {\n      /* Split check of hdmarx, for MISRA compliance */\n      if (hi2c->hdmarx != NULL)\n      {\n        if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)\n        {\n          if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U)\n          {\n            treatdmanack = 1U;\n          }\n        }\n      }\n\n      /* Split check of hdmatx, for MISRA compliance  */\n      if (hi2c->hdmatx != NULL)\n      {\n        if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET)\n        {\n          if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U)\n          {\n            treatdmanack = 1U;\n          }\n        }\n      }\n\n      if (treatdmanack == 1U)\n      {\n        if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME))\n          /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for\n             Warning[Pa134]: left and right operands are identical */\n        {\n          /* Call I2C Listen complete process */\n          I2C_ITListenCplt(hi2c, ITFlags);\n        }\n        else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME))\n        {\n          /* Clear NACK Flag */\n          __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n          /* Flush TX register */\n          I2C_Flush_TXDR(hi2c);\n\n          /* Last Byte is Transmitted */\n          /* Call I2C Slave Sequential complete process */\n          I2C_ITSlaveSeqCplt(hi2c);\n        }\n        else\n        {\n          /* Clear NACK Flag */\n          __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n        }\n      }\n      else\n      {\n        /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/\n        /* Clear NACK Flag */\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n        /* Set ErrorCode corresponding to a Non-Acknowledge */\n        hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\n\n        /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */\n        tmpstate = hi2c->State;\n\n        if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME))\n        {\n          if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN))\n          {\n            hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX;\n          }\n          else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN))\n          {\n            hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;\n          }\n          else\n          {\n            /* Do nothing */\n          }\n\n          /* Call the corresponding callback to inform upper layer of End of Transfer */\n          I2C_ITError(hi2c, hi2c->ErrorCode);\n        }\n      }\n    }\n    else\n    {\n      /* Only Clear NACK Flag, no DMA treatment is pending */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n    }\n  }\n  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \\\n           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))\n  {\n    I2C_ITAddrCplt(hi2c, ITFlags);\n  }\n  else\n  {\n    /* Nothing to do */\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(hi2c);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Master sends target device address followed by internal memory address for write request.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  Timeout Timeout duration\n  * @param  Tickstart Tick start value\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,\n                                                uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,\n                                                uint32_t Tickstart)\n{\n  I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE);\n\n  /* Wait until TXIS flag is set */\n  if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\n  {\n    return HAL_ERROR;\n  }\n\n  /* If Memory address size is 8Bit */\n  if (MemAddSize == I2C_MEMADD_SIZE_8BIT)\n  {\n    /* Send Memory Address */\n    hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\n  }\n  /* If Memory address size is 16Bit */\n  else\n  {\n    /* Send MSB of Memory Address */\n    hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);\n\n    /* Wait until TXIS flag is set */\n    if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Send LSB of Memory Address */\n    hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\n  }\n\n  /* Wait until TCR flag is set */\n  if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK)\n  {\n    return HAL_ERROR;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Master sends target device address followed by internal memory address for read request.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  DevAddress Target device address: The device 7 bits address value\n  *         in datasheet must be shifted to the left before calling the interface\n  * @param  MemAddress Internal memory address\n  * @param  MemAddSize Size of internal memory address\n  * @param  Timeout Timeout duration\n  * @param  Tickstart Tick start value\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,\n                                               uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,\n                                               uint32_t Tickstart)\n{\n  I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE);\n\n  /* Wait until TXIS flag is set */\n  if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\n  {\n    return HAL_ERROR;\n  }\n\n  /* If Memory address size is 8Bit */\n  if (MemAddSize == I2C_MEMADD_SIZE_8BIT)\n  {\n    /* Send Memory Address */\n    hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\n  }\n  /* If Memory address size is 16Bit */\n  else\n  {\n    /* Send MSB of Memory Address */\n    hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);\n\n    /* Wait until TXIS flag is set */\n    if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Send LSB of Memory Address */\n    hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\n  }\n\n  /* Wait until TC flag is set */\n  if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK)\n  {\n    return HAL_ERROR;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  I2C Address complete process callback.\n  * @param  hi2c I2C handle.\n  * @param  ITFlags Interrupt flags to handle.\n  * @retval None\n  */\nstatic void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\n{\n  uint8_t transferdirection;\n  uint16_t slaveaddrcode;\n  uint16_t ownadd1code;\n  uint16_t ownadd2code;\n\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(ITFlags);\n\n  /* In case of Listen state, need to inform upper layer of address match code event */\n  if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\n  {\n    transferdirection = I2C_GET_DIR(hi2c);\n    slaveaddrcode     = I2C_GET_ADDR_MATCH(hi2c);\n    ownadd1code       = I2C_GET_OWN_ADDRESS1(hi2c);\n    ownadd2code       = I2C_GET_OWN_ADDRESS2(hi2c);\n\n    /* If 10bits addressing mode is selected */\n    if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)\n    {\n      if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK))\n      {\n        slaveaddrcode = ownadd1code;\n        hi2c->AddrEventCount++;\n        if (hi2c->AddrEventCount == 2U)\n        {\n          /* Reset Address Event counter */\n          hi2c->AddrEventCount = 0U;\n\n          /* Clear ADDR flag */\n          __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n\n          /* Process Unlocked */\n          __HAL_UNLOCK(hi2c);\n\n          /* Call Slave Addr callback */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n          hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);\n#else\n          HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n        }\n      }\n      else\n      {\n        slaveaddrcode = ownadd2code;\n\n        /* Disable ADDR Interrupts */\n        I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        /* Call Slave Addr callback */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n        hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);\n#else\n        HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n      }\n    }\n    /* else 7 bits addressing mode is selected */\n    else\n    {\n      /* Disable ADDR Interrupts */\n      I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Call Slave Addr callback */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n      hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);\n#else\n      HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n    }\n  }\n  /* Else clear address flag only */\n  else\n  {\n    /* Clear ADDR flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n  }\n}\n\n/**\n  * @brief  I2C Master sequential complete process.\n  * @param  hi2c I2C handle.\n  * @retval None\n  */\nstatic void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c)\n{\n  /* Reset I2C handle mode */\n  hi2c->Mode = HAL_I2C_MODE_NONE;\n\n  /* No Generate Stop, to permit restart mode */\n  /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */\n  if (hi2c->State == HAL_I2C_STATE_BUSY_TX)\n  {\n    hi2c->State         = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX;\n    hi2c->XferISR       = NULL;\n\n    /* Disable Interrupts */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->MasterTxCpltCallback(hi2c);\n#else\n    HAL_I2C_MasterTxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n  /* hi2c->State == HAL_I2C_STATE_BUSY_RX */\n  else\n  {\n    hi2c->State         = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;\n    hi2c->XferISR       = NULL;\n\n    /* Disable Interrupts */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->MasterRxCpltCallback(hi2c);\n#else\n    HAL_I2C_MasterRxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n}\n\n/**\n  * @brief  I2C Slave sequential complete process.\n  * @param  hi2c I2C handle.\n  * @retval None\n  */\nstatic void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c)\n{\n  uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1);\n\n  /* Reset I2C handle mode */\n  hi2c->Mode = HAL_I2C_MODE_NONE;\n\n  /* If a DMA is ongoing, Update handle size context */\n  if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET)\n  {\n    /* Disable DMA Request */\n    hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n  }\n  else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET)\n  {\n    /* Disable DMA Request */\n    hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n  }\n  else\n  {\n    /* Do nothing */\n  }\n\n  if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\n  {\n    /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */\n    hi2c->State         = HAL_I2C_STATE_LISTEN;\n    hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX;\n\n    /* Disable Interrupts */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->SlaveTxCpltCallback(hi2c);\n#else\n    HAL_I2C_SlaveTxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n\n  else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\n  {\n    /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */\n    hi2c->State         = HAL_I2C_STATE_LISTEN;\n    hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;\n\n    /* Disable Interrupts */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->SlaveRxCpltCallback(hi2c);\n#else\n    HAL_I2C_SlaveRxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n  else\n  {\n    /* Nothing to do */\n  }\n}\n\n/**\n  * @brief  I2C Master complete process.\n  * @param  hi2c I2C handle.\n  * @param  ITFlags Interrupt flags to handle.\n  * @retval None\n  */\nstatic void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\n{\n  uint32_t tmperror;\n  uint32_t tmpITFlags = ITFlags;\n  __IO uint32_t tmpreg;\n\n  /* Clear STOP Flag */\n  __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n  /* Disable Interrupts and Store Previous state */\n  if (hi2c->State == HAL_I2C_STATE_BUSY_TX)\n  {\n    I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\n    hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX;\n  }\n  else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\n  {\n    I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\n    hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;\n  }\n  else\n  {\n    /* Do nothing */\n  }\n\n  /* Clear Configuration Register 2 */\n  I2C_RESET_CR2(hi2c);\n\n  /* Reset handle parameters */\n  hi2c->XferISR       = NULL;\n  hi2c->XferOptions   = I2C_NO_OPTION_FRAME;\n\n  if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET)\n  {\n    /* Clear NACK Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n    /* Set acknowledge error code */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\n  }\n\n  /* Fetch Last receive data if any */\n  if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET))\n  {\n    /* Read data from RXDR */\n    tmpreg = (uint8_t)hi2c->Instance->RXDR;\n    UNUSED(tmpreg);\n  }\n\n  /* Flush TX register */\n  I2C_Flush_TXDR(hi2c);\n\n  /* Store current volatile hi2c->ErrorCode, misra rule */\n  tmperror = hi2c->ErrorCode;\n\n  /* Call the corresponding callback to inform upper layer of End of Transfer */\n  if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE))\n  {\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n    I2C_ITError(hi2c, hi2c->ErrorCode);\n  }\n  /* hi2c->State == HAL_I2C_STATE_BUSY_TX */\n  else if (hi2c->State == HAL_I2C_STATE_BUSY_TX)\n  {\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_NONE;\n\n    if (hi2c->Mode == HAL_I2C_MODE_MEM)\n    {\n      hi2c->Mode = HAL_I2C_MODE_NONE;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n      hi2c->MemTxCpltCallback(hi2c);\n#else\n      HAL_I2C_MemTxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n    }\n    else\n    {\n      hi2c->Mode = HAL_I2C_MODE_NONE;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n      hi2c->MasterTxCpltCallback(hi2c);\n#else\n      HAL_I2C_MasterTxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n    }\n  }\n  /* hi2c->State == HAL_I2C_STATE_BUSY_RX */\n  else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\n  {\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_NONE;\n\n    if (hi2c->Mode == HAL_I2C_MODE_MEM)\n    {\n      hi2c->Mode = HAL_I2C_MODE_NONE;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n      hi2c->MemRxCpltCallback(hi2c);\n#else\n      HAL_I2C_MemRxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n    }\n    else\n    {\n      hi2c->Mode = HAL_I2C_MODE_NONE;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n      hi2c->MasterRxCpltCallback(hi2c);\n#else\n      HAL_I2C_MasterRxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n    }\n  }\n  else\n  {\n    /* Nothing to do */\n  }\n}\n\n/**\n  * @brief  I2C Slave complete process.\n  * @param  hi2c I2C handle.\n  * @param  ITFlags Interrupt flags to handle.\n  * @retval None\n  */\nstatic void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\n{\n  uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1);\n  uint32_t tmpITFlags = ITFlags;\n  HAL_I2C_StateTypeDef tmpstate = hi2c->State;\n\n  /* Clear STOP Flag */\n  __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n  /* Disable Interrupts and Store Previous state */\n  if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN))\n  {\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);\n    hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX;\n  }\n  else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN))\n  {\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);\n    hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;\n  }\n  else\n  {\n    /* Do nothing */\n  }\n\n  /* Disable Address Acknowledge */\n  hi2c->Instance->CR2 |= I2C_CR2_NACK;\n\n  /* Clear Configuration Register 2 */\n  I2C_RESET_CR2(hi2c);\n\n  /* Flush TX register */\n  I2C_Flush_TXDR(hi2c);\n\n  /* If a DMA is ongoing, Update handle size context */\n  if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET)\n  {\n    /* Disable DMA Request */\n    hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n\n    if (hi2c->hdmatx != NULL)\n    {\n      hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx);\n    }\n  }\n  else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET)\n  {\n    /* Disable DMA Request */\n    hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n\n    if (hi2c->hdmarx != NULL)\n    {\n      hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx);\n    }\n  }\n  else\n  {\n    /* Do nothing */\n  }\n\n  /* Store Last receive data if any */\n  if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)\n  {\n    /* Remove RXNE flag on temporary variable as read done */\n    tmpITFlags &= ~I2C_FLAG_RXNE;\n\n    /* Read data from RXDR */\n    *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n    /* Increment Buffer pointer */\n    hi2c->pBuffPtr++;\n\n    if ((hi2c->XferSize > 0U))\n    {\n      hi2c->XferSize--;\n      hi2c->XferCount--;\n    }\n  }\n\n  /* All data are not transferred, so set error code accordingly */\n  if (hi2c->XferCount != 0U)\n  {\n    /* Set ErrorCode corresponding to a Non-Acknowledge */\n    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\n  }\n\n  hi2c->Mode = HAL_I2C_MODE_NONE;\n  hi2c->XferISR = NULL;\n\n  if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE)\n  {\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n    I2C_ITError(hi2c, hi2c->ErrorCode);\n\n    /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */\n    if (hi2c->State == HAL_I2C_STATE_LISTEN)\n    {\n      /* Call I2C Listen complete process */\n      I2C_ITListenCplt(hi2c, tmpITFlags);\n    }\n  }\n  else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)\n  {\n    /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */\n    I2C_ITSlaveSeqCplt(hi2c);\n\n    hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->ListenCpltCallback(hi2c);\n#else\n    HAL_I2C_ListenCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n  /* Call the corresponding callback to inform upper layer of End of Transfer */\n  else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\n  {\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->SlaveRxCpltCallback(hi2c);\n#else\n    HAL_I2C_SlaveRxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n  else\n  {\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->SlaveTxCpltCallback(hi2c);\n#else\n    HAL_I2C_SlaveTxCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n}\n\n/**\n  * @brief  I2C Listen complete process.\n  * @param  hi2c I2C handle.\n  * @param  ITFlags Interrupt flags to handle.\n  * @retval None\n  */\nstatic void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\n{\n  /* Reset handle parameters */\n  hi2c->XferOptions = I2C_NO_OPTION_FRAME;\n  hi2c->PreviousState = I2C_STATE_NONE;\n  hi2c->State = HAL_I2C_STATE_READY;\n  hi2c->Mode = HAL_I2C_MODE_NONE;\n  hi2c->XferISR = NULL;\n\n  /* Store Last receive data if any */\n  if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET)\n  {\n    /* Read data from RXDR */\n    *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\n\n    /* Increment Buffer pointer */\n    hi2c->pBuffPtr++;\n\n    if ((hi2c->XferSize > 0U))\n    {\n      hi2c->XferSize--;\n      hi2c->XferCount--;\n\n      /* Set ErrorCode corresponding to a Non-Acknowledge */\n      hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\n    }\n  }\n\n  /* Disable all Interrupts*/\n  I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);\n\n  /* Clear NACK Flag */\n  __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(hi2c);\n\n  /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n  hi2c->ListenCpltCallback(hi2c);\n#else\n  HAL_I2C_ListenCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  I2C interrupts error process.\n  * @param  hi2c I2C handle.\n  * @param  ErrorCode Error code to handle.\n  * @retval None\n  */\nstatic void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode)\n{\n  HAL_I2C_StateTypeDef tmpstate = hi2c->State;\n  uint32_t tmppreviousstate;\n\n  /* Reset handle parameters */\n  hi2c->Mode          = HAL_I2C_MODE_NONE;\n  hi2c->XferOptions   = I2C_NO_OPTION_FRAME;\n  hi2c->XferCount     = 0U;\n\n  /* Set new error code */\n  hi2c->ErrorCode |= ErrorCode;\n\n  /* Disable Interrupts */\n  if ((tmpstate == HAL_I2C_STATE_LISTEN)         ||\n      (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) ||\n      (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN))\n  {\n    /* Disable all interrupts, except interrupts related to LISTEN state */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT);\n\n    /* keep HAL_I2C_STATE_LISTEN if set */\n    hi2c->State         = HAL_I2C_STATE_LISTEN;\n    hi2c->XferISR       = I2C_Slave_ISR_IT;\n  }\n  else\n  {\n    /* Disable all interrupts */\n    I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);\n\n    /* If state is an abort treatment on going, don't change state */\n    /* This change will be do later */\n    if (hi2c->State != HAL_I2C_STATE_ABORT)\n    {\n      /* Set HAL_I2C_STATE_READY */\n      hi2c->State         = HAL_I2C_STATE_READY;\n    }\n    hi2c->XferISR       = NULL;\n  }\n\n  /* Abort DMA TX transfer if any */\n  tmppreviousstate = hi2c->PreviousState;\n  if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \\\n                                 (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX)))\n  {\n    if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\n    {\n      hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n    }\n\n    if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY)\n    {\n      /* Set the I2C DMA Abort callback :\n       will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n      hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Abort DMA TX */\n      if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\n      {\n        /* Call Directly XferAbortCallback function in case of error */\n        hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\n      }\n    }\n    else\n    {\n      I2C_TreatErrorCallback(hi2c);\n    }\n  }\n  /* Abort DMA RX transfer if any */\n  else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \\\n                                      (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX)))\n  {\n    if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\n    {\n      hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n    }\n\n    if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY)\n    {\n      /* Set the I2C DMA Abort callback :\n        will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\n      hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      /* Abort DMA RX */\n      if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\n      {\n        /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */\n        hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\n      }\n    }\n    else\n    {\n      I2C_TreatErrorCallback(hi2c);\n    }\n  }\n  else\n  {\n    I2C_TreatErrorCallback(hi2c);\n  }\n}\n\n/**\n  * @brief  I2C Error callback treatment.\n  * @param  hi2c I2C handle.\n  * @retval None\n  */\nstatic void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c)\n{\n  if (hi2c->State == HAL_I2C_STATE_ABORT)\n  {\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->PreviousState = I2C_STATE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->AbortCpltCallback(hi2c);\n#else\n    HAL_I2C_AbortCpltCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n  else\n  {\n    hi2c->PreviousState = I2C_STATE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\n    hi2c->ErrorCallback(hi2c);\n#else\n    HAL_I2C_ErrorCallback(hi2c);\n#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\n  }\n}\n\n/**\n  * @brief  I2C Tx data register flush process.\n  * @param  hi2c I2C handle.\n  * @retval None\n  */\nstatic void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c)\n{\n  /* If a pending TXIS flag is set */\n  /* Write a dummy data in TXDR to clear it */\n  if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET)\n  {\n    hi2c->Instance->TXDR = 0x00U;\n  }\n\n  /* Flush TX register if not empty */\n  if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET)\n  {\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE);\n  }\n}\n\n/**\n  * @brief  DMA I2C master transmit process complete callback.\n  * @param  hdma DMA handle\n  * @retval None\n  */\nstatic void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma)\n{\n  /* Derogation MISRAC2012-Rule-11.5 */\n  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);\n\n  /* Disable DMA Request */\n  hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n\n  /* If last transfer, enable STOP interrupt */\n  if (hi2c->XferCount == 0U)\n  {\n    /* Enable STOP interrupt */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\n  }\n  /* else prepare a new DMA transfer and enable TCReload interrupt */\n  else\n  {\n    /* Update Buffer pointer */\n    hi2c->pBuffPtr += hi2c->XferSize;\n\n    /* Set the XferSize to transfer */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n    }\n\n    /* Enable the DMA stream or channel depends on Instance */\n    if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR,\n                         hi2c->XferSize) != HAL_OK)\n    {\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n      I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);\n    }\n    else\n    {\n      /* Enable TC interrupts */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);\n    }\n  }\n}\n\n/**\n  * @brief  DMA I2C slave transmit process complete callback.\n  * @param  hdma DMA handle\n  * @retval None\n  */\nstatic void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma)\n{\n  /* Derogation MISRAC2012-Rule-11.5 */\n  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);\n  uint32_t tmpoptions = hi2c->XferOptions;\n\n  if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME))\n  {\n    /* Disable DMA Request */\n    hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\n\n    /* Last Byte is Transmitted */\n    /* Call I2C Slave Sequential complete process */\n    I2C_ITSlaveSeqCplt(hi2c);\n  }\n  else\n  {\n    /* No specific action, Master fully manage the generation of STOP condition */\n    /* Mean that this generation can arrive at any time, at the end or during DMA process */\n    /* So STOP condition should be manage through Interrupt treatment */\n  }\n}\n\n/**\n  * @brief DMA I2C master receive process complete callback.\n  * @param  hdma DMA handle\n  * @retval None\n  */\nstatic void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma)\n{\n  /* Derogation MISRAC2012-Rule-11.5 */\n  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);\n\n  /* Disable DMA Request */\n  hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n\n  /* If last transfer, enable STOP interrupt */\n  if (hi2c->XferCount == 0U)\n  {\n    /* Enable STOP interrupt */\n    I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\n  }\n  /* else prepare a new DMA transfer and enable TCReload interrupt */\n  else\n  {\n    /* Update Buffer pointer */\n    hi2c->pBuffPtr += hi2c->XferSize;\n\n    /* Set the XferSize to transfer */\n    if (hi2c->XferCount > MAX_NBYTE_SIZE)\n    {\n      hi2c->XferSize = MAX_NBYTE_SIZE;\n    }\n    else\n    {\n      hi2c->XferSize = hi2c->XferCount;\n    }\n\n    /* Enable the DMA stream or channel depends on Instance */\n    if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr,\n                         hi2c->XferSize) != HAL_OK)\n    {\n      /* Call the corresponding callback to inform upper layer of End of Transfer */\n      I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);\n    }\n    else\n    {\n      /* Enable TC interrupts */\n      I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);\n    }\n  }\n}\n\n/**\n  * @brief  DMA I2C slave receive process complete callback.\n  * @param  hdma DMA handle\n  * @retval None\n  */\nstatic void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma)\n{\n  /* Derogation MISRAC2012-Rule-11.5 */\n  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);\n  uint32_t tmpoptions = hi2c->XferOptions;\n\n  if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \\\n      (tmpoptions != I2C_NO_OPTION_FRAME))\n  {\n    /* Disable DMA Request */\n    hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\n\n    /* Call I2C Slave Sequential complete process */\n    I2C_ITSlaveSeqCplt(hi2c);\n  }\n  else\n  {\n    /* No specific action, Master fully manage the generation of STOP condition */\n    /* Mean that this generation can arrive at any time, at the end or during DMA process */\n    /* So STOP condition should be manage through Interrupt treatment */\n  }\n}\n\n/**\n  * @brief  DMA I2C communication error callback.\n  * @param hdma DMA handle\n  * @retval None\n  */\nstatic void I2C_DMAError(DMA_HandleTypeDef *hdma)\n{\n  uint32_t treatdmaerror = 0U;\n  /* Derogation MISRAC2012-Rule-11.5 */\n  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);\n\n  if (hi2c->hdmatx != NULL)\n  {\n    if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U)\n    {\n      treatdmaerror = 1U;\n    }\n  }\n\n  if (hi2c->hdmarx != NULL)\n  {\n    if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U)\n    {\n      treatdmaerror = 1U;\n    }\n  }\n\n  /* Check if a FIFO error is detected, if true normal use case, so no specific action to perform */\n  if (!((HAL_DMA_GetError(hdma) == HAL_DMA_ERROR_FE)) && (treatdmaerror != 0U))\n  {\n    /* Disable Acknowledge */\n    hi2c->Instance->CR2 |= I2C_CR2_NACK;\n\n    /* Call the corresponding callback to inform upper layer of End of Transfer */\n    I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);\n  }\n}\n\n/**\n  * @brief DMA I2C communication abort callback\n  *        (To be called at end of DMA Abort procedure).\n  * @param hdma DMA handle.\n  * @retval None\n  */\nstatic void I2C_DMAAbort(DMA_HandleTypeDef *hdma)\n{\n  /* Derogation MISRAC2012-Rule-11.5 */\n  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);\n\n  /* Reset AbortCpltCallback */\n  if (hi2c->hdmatx != NULL)\n  {\n    hi2c->hdmatx->XferAbortCallback = NULL;\n  }\n  if (hi2c->hdmarx != NULL)\n  {\n    hi2c->hdmarx->XferAbortCallback = NULL;\n  }\n\n  I2C_TreatErrorCallback(hi2c);\n}\n\n/**\n  * @brief  This function handles I2C Communication Timeout. It waits\n  *                until a flag is no longer in the specified status.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  Flag Specifies the I2C flag to check.\n  * @param  Status The actual Flag status (SET or RESET).\n  * @param  Timeout Timeout duration\n  * @param  Tickstart Tick start value\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status,\n                                                    uint32_t Timeout, uint32_t Tickstart)\n{\n  while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)\n  {\n    /* Check for the Timeout */\n    if (Timeout != HAL_MAX_DELAY)\n    {\n      if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\n      {\n        hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\n        hi2c->State = HAL_I2C_STATE_READY;\n        hi2c->Mode = HAL_I2C_MODE_NONE;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n        return HAL_ERROR;\n      }\n    }\n  }\n  return HAL_OK;\n}\n\n/**\n  * @brief  This function handles I2C Communication Timeout for specific usage of TXIS flag.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  Timeout Timeout duration\n  * @param  Tickstart Tick start value\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,\n                                                        uint32_t Tickstart)\n{\n  while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)\n  {\n    /* Check if an error is detected */\n    if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Check for the Timeout */\n    if (Timeout != HAL_MAX_DELAY)\n    {\n      if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\n      {\n        hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\n        hi2c->State = HAL_I2C_STATE_READY;\n        hi2c->Mode = HAL_I2C_MODE_NONE;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n    }\n  }\n  return HAL_OK;\n}\n\n/**\n  * @brief  This function handles I2C Communication Timeout for specific usage of STOP flag.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  Timeout Timeout duration\n  * @param  Tickstart Tick start value\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,\n                                                        uint32_t Tickstart)\n{\n  while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)\n  {\n    /* Check if an error is detected */\n    if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Check for the Timeout */\n    if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\n    {\n      hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\n      hi2c->State = HAL_I2C_STATE_READY;\n      hi2c->Mode = HAL_I2C_MODE_NONE;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n  }\n  return HAL_OK;\n}\n\n/**\n  * @brief  This function handles I2C Communication Timeout for specific usage of RXNE flag.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  Timeout Timeout duration\n  * @param  Tickstart Tick start value\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,\n                                                        uint32_t Tickstart)\n{\n  while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)\n  {\n    /* Check if an error is detected */\n    if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)\n    {\n      return HAL_ERROR;\n    }\n\n    /* Check if a STOPF is detected */\n    if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET)\n    {\n      /* Check if an RXNE is pending */\n      /* Store Last receive data if any */\n      if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U))\n      {\n        /* Return HAL_OK */\n        /* The Reading of data from RXDR will be done in caller function */\n        return HAL_OK;\n      }\n      else\n      {\n        if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET)\n        {\n          __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n          hi2c->ErrorCode = HAL_I2C_ERROR_AF;\n        }\n        else\n        {\n          hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\n        }\n\n        /* Clear STOP Flag */\n        __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n\n        /* Clear Configuration Register 2 */\n        I2C_RESET_CR2(hi2c);\n\n        hi2c->State = HAL_I2C_STATE_READY;\n        hi2c->Mode = HAL_I2C_MODE_NONE;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hi2c);\n\n        return HAL_ERROR;\n      }\n    }\n\n    /* Check for the Timeout */\n    if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\n    {\n      hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\n      hi2c->State = HAL_I2C_STATE_READY;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hi2c);\n\n      return HAL_ERROR;\n    }\n  }\n  return HAL_OK;\n}\n\n/**\n  * @brief  This function handles errors detection during an I2C Communication.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  Timeout Timeout duration\n  * @param  Tickstart Tick start value\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t itflag   = hi2c->Instance->ISR;\n  uint32_t error_code = 0;\n  uint32_t tickstart = Tickstart;\n  uint32_t tmp1;\n  HAL_I2C_ModeTypeDef tmp2;\n\n  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF))\n  {\n    /* Clear NACKF Flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\n\n    /* Wait until STOP Flag is set or timeout occurred */\n    /* AutoEnd should be initiate after AF */\n    while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK))\n    {\n      /* Check for the Timeout */\n      if (Timeout != HAL_MAX_DELAY)\n      {\n        if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\n        {\n          tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP);\n          tmp2 = hi2c->Mode;\n\n          /* In case of I2C still busy, try to regenerate a STOP manually */\n          if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \\\n              (tmp1 != I2C_CR2_STOP) && \\\n              (tmp2 != HAL_I2C_MODE_SLAVE))\n          {\n            /* Generate Stop */\n            hi2c->Instance->CR2 |= I2C_CR2_STOP;\n            \n            /* Update Tick with new reference */\n            tickstart = HAL_GetTick();\n          }\n          \n          while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)\n          {\n            /* Check for the Timeout */\n            if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF)\n            {\n              hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\n              hi2c->State = HAL_I2C_STATE_READY;\n              hi2c->Mode = HAL_I2C_MODE_NONE;\n              \n              /* Process Unlocked */\n              __HAL_UNLOCK(hi2c);\n              \n              status = HAL_ERROR;\n            }\n          }\n        }\n      }\n    }\n\n    /* In case STOP Flag is detected, clear it */\n    if (status == HAL_OK)\n    {\n      /* Clear STOP Flag */\n      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\n    }\n\n    error_code |= HAL_I2C_ERROR_AF;\n\n    status = HAL_ERROR;\n  }\n\n  /* Refresh Content of Status register */\n  itflag = hi2c->Instance->ISR;\n\n  /* Then verify if an additional errors occurs */\n  /* Check if a Bus error occurred */\n  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR))\n  {\n    error_code |= HAL_I2C_ERROR_BERR;\n\n    /* Clear BERR flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR);\n\n    status = HAL_ERROR;\n  }\n\n  /* Check if an Over-Run/Under-Run error occurred */\n  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR))\n  {\n    error_code |= HAL_I2C_ERROR_OVR;\n\n    /* Clear OVR flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR);\n\n    status = HAL_ERROR;\n  }\n\n  /* Check if an Arbitration Loss error occurred */\n  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO))\n  {\n    error_code |= HAL_I2C_ERROR_ARLO;\n\n    /* Clear ARLO flag */\n    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO);\n\n    status = HAL_ERROR;\n  }\n\n  if (status != HAL_OK)\n  {\n    /* Flush TX register */\n    I2C_Flush_TXDR(hi2c);\n\n    /* Clear Configuration Register 2 */\n    I2C_RESET_CR2(hi2c);\n\n    hi2c->ErrorCode |= error_code;\n    hi2c->State = HAL_I2C_STATE_READY;\n    hi2c->Mode = HAL_I2C_MODE_NONE;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag are set).\n  * @param  hi2c I2C handle.\n  * @param  DevAddress Specifies the slave address to be programmed.\n  * @param  Size Specifies the number of bytes to be programmed.\n  *   This parameter must be a value between 0 and 255.\n  * @param  Mode New state of the I2C START condition generation.\n  *   This parameter can be one of the following values:\n  *     @arg @ref I2C_RELOAD_MODE Enable Reload mode .\n  *     @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode.\n  *     @arg @ref I2C_SOFTEND_MODE Enable Software end mode.\n  * @param  Request New state of the I2C START condition generation.\n  *   This parameter can be one of the following values:\n  *     @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition.\n  *     @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0).\n  *     @arg @ref I2C_GENERATE_START_READ Generate Restart for read request.\n  *     @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request.\n  * @retval None\n  */\nstatic void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode,\n                               uint32_t Request)\n{\n  /* Check the parameters */\n  assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\n  assert_param(IS_TRANSFER_MODE(Mode));\n  assert_param(IS_TRANSFER_REQUEST(Request));\n\n  /* Declaration of tmp to prevent undefined behavior of volatile usage */\n  uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \\\n                            (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \\\n                              (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U));\n\n  /* update CR2 register */\n  MODIFY_REG(hi2c->Instance->CR2, \\\n             ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \\\n               (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \\\n                I2C_CR2_START | I2C_CR2_STOP)), tmp);\n}\n\n/**\n  * @brief  Manage the enabling of Interrupts.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  InterruptRequest Value of @ref I2C_Interrupt_configuration_definition.\n  * @retval None\n  */\nstatic void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest)\n{\n  uint32_t tmpisr = 0U;\n\n  if ((hi2c->XferISR == I2C_Master_ISR_DMA) || \\\n      (hi2c->XferISR == I2C_Slave_ISR_DMA))\n  {\n    if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)\n    {\n      /* Enable ERR, STOP, NACK and ADDR interrupts */\n      tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\n    }\n\n    if (InterruptRequest == I2C_XFER_ERROR_IT)\n    {\n      /* Enable ERR and NACK interrupts */\n      tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;\n    }\n\n    if (InterruptRequest == I2C_XFER_CPLT_IT)\n    {\n      /* Enable STOP interrupts */\n      tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI);\n    }\n\n    if (InterruptRequest == I2C_XFER_RELOAD_IT)\n    {\n      /* Enable TC interrupts */\n      tmpisr |= I2C_IT_TCI;\n    }\n  }\n  else\n  {\n    if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)\n    {\n      /* Enable ERR, STOP, NACK, and ADDR interrupts */\n      tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\n    }\n\n    if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)\n    {\n      /* Enable ERR, TC, STOP, NACK and RXI interrupts */\n      tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI;\n    }\n\n    if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)\n    {\n      /* Enable ERR, TC, STOP, NACK and TXI interrupts */\n      tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI;\n    }\n\n    if (InterruptRequest == I2C_XFER_CPLT_IT)\n    {\n      /* Enable STOP interrupts */\n      tmpisr |= I2C_IT_STOPI;\n    }\n  }\n\n  /* Enable interrupts only at the end */\n  /* to avoid the risk of I2C interrupt handle execution before */\n  /* all interrupts requested done */\n  __HAL_I2C_ENABLE_IT(hi2c, tmpisr);\n}\n\n/**\n  * @brief  Manage the disabling of Interrupts.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2C.\n  * @param  InterruptRequest Value of @ref I2C_Interrupt_configuration_definition.\n  * @retval None\n  */\nstatic void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest)\n{\n  uint32_t tmpisr = 0U;\n\n  if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)\n  {\n    /* Disable TC and TXI interrupts */\n    tmpisr |= I2C_IT_TCI | I2C_IT_TXI;\n\n    if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN)\n    {\n      /* Disable NACK and STOP interrupts */\n      tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\n    }\n  }\n\n  if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)\n  {\n    /* Disable TC and RXI interrupts */\n    tmpisr |= I2C_IT_TCI | I2C_IT_RXI;\n\n    if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN)\n    {\n      /* Disable NACK and STOP interrupts */\n      tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\n    }\n  }\n\n  if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)\n  {\n    /* Disable ADDR, NACK and STOP interrupts */\n    tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\n  }\n\n  if (InterruptRequest == I2C_XFER_ERROR_IT)\n  {\n    /* Enable ERR and NACK interrupts */\n    tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;\n  }\n\n  if (InterruptRequest == I2C_XFER_CPLT_IT)\n  {\n    /* Enable STOP interrupts */\n    tmpisr |= I2C_IT_STOPI;\n  }\n\n  if (InterruptRequest == I2C_XFER_RELOAD_IT)\n  {\n    /* Enable TC interrupts */\n    tmpisr |= I2C_IT_TCI;\n  }\n\n  /* Disable interrupts only at the end */\n  /* to avoid a breaking situation like at \"t\" time */\n  /* all disable interrupts request are not done */\n  __HAL_I2C_DISABLE_IT(hi2c, tmpisr);\n}\n\n/**\n  * @brief  Convert I2Cx OTHER_xxx XferOptions to functional XferOptions.\n  * @param  hi2c I2C handle.\n  * @retval None\n  */\nstatic void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c)\n{\n  /* if user set XferOptions to I2C_OTHER_FRAME            */\n  /* it request implicitly to generate a restart condition */\n  /* set XferOptions to I2C_FIRST_FRAME                    */\n  if (hi2c->XferOptions == I2C_OTHER_FRAME)\n  {\n    hi2c->XferOptions = I2C_FIRST_FRAME;\n  }\n  /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */\n  /* it request implicitly to generate a restart condition    */\n  /* then generate a stop condition at the end of transfer    */\n  /* set XferOptions to I2C_FIRST_AND_LAST_FRAME              */\n  else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME)\n  {\n    hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME;\n  }\n  else\n  {\n    /* Nothing to do */\n  }\n}\n\n/**\n  * @}\n  */\n\n#endif /* HAL_I2C_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_i2c_ex.c\n  * @author  MCD Application Team\n  * @brief   I2C Extended HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of I2C Extended peripheral:\n  *           + Filter Mode Functions\n  *           + WakeUp Mode Functions\n  *           + FastModePlus Functions\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n               ##### I2C peripheral Extended features  #####\n  ==============================================================================\n\n  [..] Comparing to other previous devices, the I2C interface for STM32H7xx\n       devices contains the following additional features\n\n       (+) Possibility to disable or enable Analog Noise Filter\n       (+) Use of a configured Digital Noise Filter\n       (+) Disable or enable wakeup from Stop mode(s)\n       (+) Disable or enable Fast Mode Plus\n\n                     ##### How to use this driver #####\n  ==============================================================================\n  [..] This driver provides functions to configure Noise Filter and Wake Up Feature\n    (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter()\n    (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter()\n    (#) Configure the enable or disable of I2C Wake Up Mode using the functions :\n          (++) HAL_I2CEx_EnableWakeUp()\n          (++) HAL_I2CEx_DisableWakeUp()\n    (#) Configure the enable or disable of fast mode plus driving capability using the functions :\n          (++) HAL_I2CEx_EnableFastModePlus()\n          (++) HAL_I2CEx_DisableFastModePlus()\n  @endverbatim\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup I2CEx I2CEx\n  * @brief I2C Extended HAL module driver\n  * @{\n  */\n\n#ifdef HAL_I2C_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n\n/** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions\n  * @{\n  */\n\n/** @defgroup I2CEx_Exported_Functions_Group1 Filter Mode Functions\n  * @brief    Filter Mode Functions\n  *\n@verbatim\n ===============================================================================\n                      ##### Filter Mode Functions #####\n ===============================================================================\n    [..] This section provides functions allowing to:\n      (+) Configure Noise Filters\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Configure I2C Analog noise filter.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2Cx peripheral.\n  * @param  AnalogFilter New state of the Analog filter.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter)\n{\n  /* Check the parameters */\n  assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\n  assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_BUSY;\n\n    /* Disable the selected I2C peripheral */\n    __HAL_I2C_DISABLE(hi2c);\n\n    /* Reset I2Cx ANOFF bit */\n    hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF);\n\n    /* Set analog filter bit*/\n    hi2c->Instance->CR1 |= AnalogFilter;\n\n    __HAL_I2C_ENABLE(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Configure I2C Digital noise filter.\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2Cx peripheral.\n  * @param  DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter)\n{\n  uint32_t tmpreg;\n\n  /* Check the parameters */\n  assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\n  assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_BUSY;\n\n    /* Disable the selected I2C peripheral */\n    __HAL_I2C_DISABLE(hi2c);\n\n    /* Get the old register value */\n    tmpreg = hi2c->Instance->CR1;\n\n    /* Reset I2Cx DNF bits [11:8] */\n    tmpreg &= ~(I2C_CR1_DNF);\n\n    /* Set I2Cx DNF coefficient */\n    tmpreg |= DigitalFilter << 8U;\n\n    /* Store the new register value */\n    hi2c->Instance->CR1 = tmpreg;\n\n    __HAL_I2C_ENABLE(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n/**\n  * @}\n  */\n\n/** @defgroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions\n  * @brief    WakeUp Mode Functions\n  *\n@verbatim\n ===============================================================================\n                      ##### WakeUp Mode Functions #####\n ===============================================================================\n    [..] This section provides functions allowing to:\n      (+) Configure Wake Up Feature\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Enable I2C wakeup from Stop mode(s).\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2Cx peripheral.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c)\n{\n  /* Check the parameters */\n  assert_param(IS_I2C_WAKEUP_FROMSTOP_INSTANCE(hi2c->Instance));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_BUSY;\n\n    /* Disable the selected I2C peripheral */\n    __HAL_I2C_DISABLE(hi2c);\n\n    /* Enable wakeup from stop mode */\n    hi2c->Instance->CR1 |= I2C_CR1_WUPEN;\n\n    __HAL_I2C_ENABLE(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Disable I2C wakeup from Stop mode(s).\n  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains\n  *                the configuration information for the specified I2Cx peripheral.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c)\n{\n  /* Check the parameters */\n  assert_param(IS_I2C_WAKEUP_FROMSTOP_INSTANCE(hi2c->Instance));\n\n  if (hi2c->State == HAL_I2C_STATE_READY)\n  {\n    /* Process Locked */\n    __HAL_LOCK(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_BUSY;\n\n    /* Disable the selected I2C peripheral */\n    __HAL_I2C_DISABLE(hi2c);\n\n    /* Enable wakeup from stop mode */\n    hi2c->Instance->CR1 &= ~(I2C_CR1_WUPEN);\n\n    __HAL_I2C_ENABLE(hi2c);\n\n    hi2c->State = HAL_I2C_STATE_READY;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hi2c);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n/**\n  * @}\n  */\n\n/** @defgroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions\n  * @brief    Fast Mode Plus Functions\n  *\n@verbatim\n ===============================================================================\n                      ##### Fast Mode Plus Functions #####\n ===============================================================================\n    [..] This section provides functions allowing to:\n      (+) Configure Fast Mode Plus\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief Enable the I2C fast mode plus driving capability.\n  * @param ConfigFastModePlus Selects the pin.\n  *   This parameter can be one of the @ref I2CEx_FastModePlus values\n  * @note  For I2C1, fast mode plus driving capability can be enabled on all selected\n  *        I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently\n  *        on each one of the following pins PB6, PB7, PB8 and PB9.\n  * @note  For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability\n  *        can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter.\n  * @note  For all I2C2 pins fast mode plus driving capability can be enabled\n  *        only by using I2C_FASTMODEPLUS_I2C2 parameter.\n  * @note  For all I2C3 pins fast mode plus driving capability can be enabled\n  *        only by using I2C_FASTMODEPLUS_I2C3 parameter.\n  * @note  For all I2C4 pins fast mode plus driving capability can be enabled\n  *        only by using I2C_FASTMODEPLUS_I2C4 parameter.\n  * @note  For all I2C5 pins fast mode plus driving capability can be enabled\n  *        only by using I2C_FASTMODEPLUS_I2C5 parameter.\n  * @retval None\n  */\nvoid HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus)\n{\n  /* Check the parameter */\n  assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus));\n\n  /* Enable SYSCFG clock */\n  __HAL_RCC_SYSCFG_CLK_ENABLE();\n\n  /* Enable fast mode plus driving capability for selected pin */\n  SET_BIT(SYSCFG->PMCR, (uint32_t)ConfigFastModePlus);\n}\n\n/**\n  * @brief Disable the I2C fast mode plus driving capability.\n  * @param ConfigFastModePlus Selects the pin.\n  *   This parameter can be one of the @ref I2CEx_FastModePlus values\n  * @note  For I2C1, fast mode plus driving capability can be disabled on all selected\n  *        I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently\n  *        on each one of the following pins PB6, PB7, PB8 and PB9.\n  * @note  For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability\n  *        can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter.\n  * @note  For all I2C2 pins fast mode plus driving capability can be disabled\n  *        only by using I2C_FASTMODEPLUS_I2C2 parameter.\n  * @note  For all I2C3 pins fast mode plus driving capability can be disabled\n  *        only by using I2C_FASTMODEPLUS_I2C3 parameter.\n  * @note  For all I2C4 pins fast mode plus driving capability can be disabled\n  *        only by using I2C_FASTMODEPLUS_I2C4 parameter.\n  * @note  For all I2C5 pins fast mode plus driving capability can be disabled\n  *        only by using I2C_FASTMODEPLUS_I2C5 parameter.\n  * @retval None\n  */\nvoid HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus)\n{\n  /* Check the parameter */\n  assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus));\n\n  /* Enable SYSCFG clock */\n  __HAL_RCC_SYSCFG_CLK_ENABLE();\n\n  /* Disable fast mode plus driving capability for selected pin */\n  CLEAR_BIT(SYSCFG->PMCR, (uint32_t)ConfigFastModePlus);\n}\n/**\n  * @}\n  */\n/**\n  * @}\n  */\n\n#endif /* HAL_I2C_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_mdma.c\n  * @author  MCD Application Team\n  * @brief  This file provides firmware functions to manage the following\n  *         functionalities of the Master Direct Memory Access (MDMA) peripheral:\n  *           + Initialization/de-initialization functions\n  *           + I/O operation functions\n  *           + Peripheral State and errors functions\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                        ##### How to use this driver #####\n  ==============================================================================\n  [..]\n   (#) Enable and configure the peripheral to be connected to the MDMA Channel\n       (except for internal SRAM/FLASH memories: no initialization is\n       necessary) please refer to Reference manual for connection between peripherals\n       and MDMA requests.\n\n   (#)\n       For a given Channel use HAL_MDMA_Init function to program the required configuration through the following parameters:\n       transfer request , channel priority, data endianness, Source increment, destination increment ,\n       source data size, destination data size, data alignment, source Burst, destination Burst ,\n       buffer Transfer Length, Transfer Trigger Mode (buffer transfer, block transfer, repeated block transfer\n       or full transfer) source and destination block address offset, mask address and data.\n\n       If using the MDMA in linked list mode then use function HAL_MDMA_LinkedList_CreateNode to fill a transfer node.\n       Note that parameters given to the function HAL_MDMA_Init corresponds always to the node zero.\n       Use function HAL_MDMA_LinkedList_AddNode to connect the created node to the linked list at a given position.\n       User can make a linked list circular using function HAL_MDMA_LinkedList_EnableCircularMode , this function will automatically connect the\n       last node of the list to the first one in order to make the list circular.\n       In this case the linked list will loop on node 1 : first node connected after the initial transfer defined by the HAL_MDMA_Init\n\n      -@-   The initial transfer itself (node 0 corresponding to the Init).\n            User can disable the circular mode using function HAL_MDMA_LinkedList_DisableCircularMode, this function will then remove\n            the connection between last node and first one.\n\n       Function HAL_MDMA_LinkedList_RemoveNode can be used to remove (disconnect) a node from the transfer linked list.\n       When a linked list is circular (last node connected to first one), if removing node1  (node where the linked list loops),\n       the linked list remains circular and node 2 becomes the first one.\n       Note that if the linked list is made circular the transfer will loop infinitely (or until aborted by the user).\n\n    [..]\n       (+) User can select the transfer trigger mode (parameter TransferTriggerMode) to define the amount of data to be\n           transfer upon a request :\n             (++) MDMA_BUFFER_TRANSFER : each request triggers a transfer of BufferTransferLength data\n               with BufferTransferLength defined within the HAL_MDMA_Init.\n             (++) MDMA_BLOCK_TRANSFER : each request triggers a transfer of a block\n               with block size defined within the function HAL_MDMA_Start/HAL_MDMA_Start_IT\n               or within the current linked list node parameters.\n             (++) MDMA_REPEAT_BLOCK_TRANSFER : each request triggers a transfer of a number of blocks\n               with block size and number of blocks defined within the function HAL_MDMA_Start/HAL_MDMA_Start_IT\n               or within the current linked list node parameters.\n             (++) MDMA_FULL_TRANSFER : each request triggers a full transfer\n              all blocks and all nodes(if a linked list has been created using HAL_MDMA_LinkedList_CreateNode \\ HAL_MDMA_LinkedList_AddNode).\n\n     *** Polling mode IO operation ***\n     =================================\n    [..]\n          (+) Use HAL_MDMA_Start() to start MDMA transfer after the configuration of Source\n              address and destination address and the Length of data to be transferred.\n          (+) Use HAL_MDMA_PollForTransfer() to poll for the end of current transfer or a transfer level\n             In this case a fixed Timeout can be configured by User depending from his application.\n          (+) Use HAL_MDMA_Abort() function to abort the current transfer : blocking method this API returns\n              when the abort ends or timeout (should not be called from an interrupt service routine).\n\n     *** Interrupt mode IO operation ***\n     ===================================\n    [..]\n          (+) Configure the MDMA interrupt priority using HAL_NVIC_SetPriority()\n          (+) Enable the MDMA IRQ handler using HAL_NVIC_EnableIRQ()\n          (+) Use HAL_MDMA_Start_IT() to start MDMA transfer after the configuration of\n              Source address and destination address and the Length of data to be transferred. In this\n              case the MDMA interrupt is configured.\n          (+) Use HAL_MDMA_IRQHandler() called under MDMA_IRQHandler() Interrupt subroutine\n          (+) At the end of data transfer HAL_MDMA_IRQHandler() function is executed and user can\n              add his own function by customization of function pointer XferCpltCallback and\n              XferErrorCallback (i.e a member of MDMA handle structure).\n\n          (+) Use HAL_MDMA_Abort_IT() function to abort the current transfer : non-blocking method. This API will finish the execution immediately\n              then the callback XferAbortCallback (if specified  by the user) is asserted once the MDMA channel has effectively aborted.\n              (could be called from an interrupt service routine).\n\n          (+) Use functions HAL_MDMA_RegisterCallback and HAL_MDMA_UnRegisterCallback respectevely to register unregister user callbacks\n              from the following list :\n              (++) XferCpltCallback            : transfer complete callback.\n              (++) XferBufferCpltCallback      : buffer transfer complete callback.\n              (++) XferBlockCpltCallback       : block transfer complete callback.\n              (++) XferRepeatBlockCpltCallback : repeated block transfer complete callback.\n              (++) XferErrorCallback           : transfer error callback.\n              (++) XferAbortCallback           : transfer abort complete callback.\n\n    [..]\n         (+)  If the transfer Request corresponds to SW request (MDMA_REQUEST_SW) User can use function HAL_MDMA_GenerateSWRequest to\n              trigger requests manually. Function HAL_MDMA_GenerateSWRequest must be used with the following precautions:\n              (++) This function returns an error if used while the Transfer has ended or not started.\n              (++) If used while the current request has not been served yet (current request transfer on going)\n                this function returns an error and the new request is ignored.\n\n              Generally this function should be used in conjunctions with the MDMA callbacks:\n              (++) example 1:\n                 (+++) Configure a transfer with request set to MDMA_REQUEST_SW and trigger mode set to MDMA_BUFFER_TRANSFER\n                 (+++) Register a callback for buffer transfer complete (using callback ID set to HAL_MDMA_XFER_BUFFERCPLT_CB_ID)\n                 (+++) After calling HAL_MDMA_Start_IT the MDMA will issue the transfer of a first BufferTransferLength data.\n                 (+++) When the buffer transfer complete callback is asserted first buffer has been transferred and user can ask for a new buffer transfer\n                   request using HAL_MDMA_GenerateSWRequest.\n\n              (++) example 2:\n                 (+++) Configure a transfer with request set to MDMA_REQUEST_SW and trigger mode set to MDMA_BLOCK_TRANSFER\n                 (+++) Register a callback for block transfer complete (using callback ID HAL_MDMA_XFER_BLOCKCPLT_CB_ID)\n                 (+++) After calling HAL_MDMA_Start_IT the MDMA will issue the transfer of a first block of data.\n                 (+++) When the block transfer complete callback is asserted the first block has been transferred and user can ask\n                   for a new block transfer request using HAL_MDMA_GenerateSWRequest.\n\n    [..]  Use HAL_MDMA_GetState() function to return the MDMA state and HAL_MDMA_GetError() in case of error detection.\n\n     *** MDMA HAL driver macros list ***\n     =============================================\n     [..]\n       Below the list of most used macros in MDMA HAL driver.\n\n      (+) __HAL_MDMA_ENABLE: Enable the specified MDMA Channel.\n      (+) __HAL_MDMA_DISABLE: Disable the specified MDMA Channel.\n      (+) __HAL_MDMA_GET_FLAG: Get the MDMA Channel pending flags.\n      (+) __HAL_MDMA_CLEAR_FLAG: Clear the MDMA Channel pending flags.\n      (+) __HAL_MDMA_ENABLE_IT: Enable the specified MDMA Channel interrupts.\n      (+) __HAL_MDMA_DISABLE_IT: Disable the specified MDMA Channel interrupts.\n      (+) __HAL_MDMA_GET_IT_SOURCE: Check whether the specified MDMA Channel interrupt has occurred or not.\n\n     [..]\n      (@) You can refer to the header file of the MDMA HAL driver for more useful macros.\n\n    [..]\n\n  @endverbatim\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup MDMA  MDMA\n  * @brief MDMA HAL module driver\n  * @{\n  */\n\n#ifdef HAL_MDMA_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private constants ---------------------------------------------------------*/\n/** @addtogroup MDMA_Private_Constants\n * @{\n */\n#define HAL_TIMEOUT_MDMA_ABORT    5U    /* 5 ms */\n#define HAL_MDMA_CHANNEL_SIZE     0x40U /* an MDMA instance channel size is 64 byte  */\n/**\n  * @}\n  */\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/** @addtogroup MDMA_Private_Functions_Prototypes\n  * @{\n  */\nstatic void MDMA_SetConfig(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t BlockDataLength, uint32_t BlockCount);\nstatic void MDMA_Init(MDMA_HandleTypeDef *hmdma);\n\n/**\n  * @}\n  */\n\n/** @addtogroup MDMA_Exported_Functions MDMA Exported Functions\n  * @{\n  */\n\n/** @addtogroup MDMA_Exported_Functions_Group1\n  *\n@verbatim\n ===============================================================================\n             ##### Initialization and de-initialization functions  #####\n ===============================================================================\n    [..]\n    This section provides functions allowing to :\n      Initialize and de-initialize the MDMA channel.\n      Register and Unregister MDMA callbacks\n    [..]\n    The HAL_MDMA_Init() function follows the MDMA channel configuration procedures as described in\n    reference manual.\n    The HAL_MDMA_DeInit function allows to deinitialize the MDMA channel.\n    HAL_MDMA_RegisterCallback and  HAL_MDMA_UnRegisterCallback functions allows\n    respectevely to register/unregister an MDMA callback function.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Initializes the MDMA according to the specified\n  *         parameters in the MDMA_InitTypeDef and create the associated handle.\n  * @param  hmdma: Pointer to a MDMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified MDMA Channel.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_Init(MDMA_HandleTypeDef *hmdma)\n{\n  uint32_t tickstart = HAL_GetTick();\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_MDMA_STREAM_ALL_INSTANCE(hmdma->Instance));\n  assert_param(IS_MDMA_PRIORITY(hmdma->Init.Priority));\n  assert_param(IS_MDMA_ENDIANNESS_MODE(hmdma->Init.Endianness));\n  assert_param(IS_MDMA_REQUEST(hmdma->Init.Request));\n  assert_param(IS_MDMA_SOURCE_INC(hmdma->Init.SourceInc));\n  assert_param(IS_MDMA_DESTINATION_INC(hmdma->Init.DestinationInc));\n  assert_param(IS_MDMA_SOURCE_DATASIZE(hmdma->Init.SourceDataSize));\n  assert_param(IS_MDMA_DESTINATION_DATASIZE(hmdma->Init.DestDataSize));\n  assert_param(IS_MDMA_DATA_ALIGNMENT(hmdma->Init.DataAlignment));\n  assert_param(IS_MDMA_SOURCE_BURST(hmdma->Init.SourceBurst));\n  assert_param(IS_MDMA_DESTINATION_BURST(hmdma->Init.DestBurst));\n  assert_param(IS_MDMA_BUFFER_TRANSFER_LENGTH(hmdma->Init.BufferTransferLength));\n  assert_param(IS_MDMA_TRANSFER_TRIGGER_MODE(hmdma->Init.TransferTriggerMode));\n  assert_param(IS_MDMA_BLOCK_ADDR_OFFSET(hmdma->Init.SourceBlockAddressOffset));\n  assert_param(IS_MDMA_BLOCK_ADDR_OFFSET(hmdma->Init.DestBlockAddressOffset));\n\n\n  /* Allocate lock resource */\n  __HAL_UNLOCK(hmdma);\n\n  /* Change MDMA peripheral state */\n  hmdma->State = HAL_MDMA_STATE_BUSY;\n\n  /* Disable the MDMA channel */\n  __HAL_MDMA_DISABLE(hmdma);\n\n  /* Check if the MDMA channel is effectively disabled */\n  while((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U)\n  {\n    /* Check for the Timeout */\n    if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_MDMA_ABORT)\n    {\n      /* Update error code */\n      hmdma->ErrorCode = HAL_MDMA_ERROR_TIMEOUT;\n\n      /* Change the MDMA state */\n      hmdma->State = HAL_MDMA_STATE_ERROR;\n\n      return HAL_ERROR;\n    }\n  }\n\n  /* Initialize the MDMA channel registers */\n  MDMA_Init(hmdma);\n\n  /* Reset the MDMA first/last linkedlist node addresses and node counter */\n  hmdma->FirstLinkedListNodeAddress  = 0;\n  hmdma->LastLinkedListNodeAddress   = 0;\n  hmdma->LinkedListNodeCounter  = 0;\n\n  /* Initialize the error code */\n  hmdma->ErrorCode = HAL_MDMA_ERROR_NONE;\n\n  /* Initialize the MDMA state */\n  hmdma->State = HAL_MDMA_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the MDMA peripheral\n  * @param  hmdma: pointer to a MDMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified MDMA Channel.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_DeInit(MDMA_HandleTypeDef *hmdma)\n{\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Disable the selected MDMA Channelx */\n  __HAL_MDMA_DISABLE(hmdma);\n\n  /* Reset MDMA Channel control register */\n  hmdma->Instance->CCR  = 0;\n  hmdma->Instance->CTCR = 0;\n  hmdma->Instance->CBNDTR = 0;\n  hmdma->Instance->CSAR = 0;\n  hmdma->Instance->CDAR = 0;\n  hmdma->Instance->CBRUR = 0;\n  hmdma->Instance->CLAR = 0;\n  hmdma->Instance->CTBR = 0;\n  hmdma->Instance->CMAR = 0;\n  hmdma->Instance->CMDR = 0;\n\n  /* Clear all flags */\n  __HAL_MDMA_CLEAR_FLAG(hmdma,(MDMA_FLAG_TE | MDMA_FLAG_CTC | MDMA_FLAG_BRT | MDMA_FLAG_BT | MDMA_FLAG_BFTC));\n\n  /* Reset the  MDMA first/last linkedlist node addresses and node counter */\n  hmdma->FirstLinkedListNodeAddress  = 0;\n  hmdma->LastLinkedListNodeAddress   = 0;\n  hmdma->LinkedListNodeCounter  = 0;\n\n  /* Initialize the error code */\n  hmdma->ErrorCode = HAL_MDMA_ERROR_NONE;\n\n  /* Initialize the MDMA state */\n  hmdma->State = HAL_MDMA_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(hmdma);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Config the Post request Mask address and Mask data\n  * @param  hmdma      : pointer to a MDMA_HandleTypeDef structure that contains\n  *                               the configuration information for the specified MDMA Channel.\n  * @param  MaskAddress: specifies the address to be updated (written) with MaskData after a request is served.\n  * @param  MaskData:    specifies the value to be written to MaskAddress after a request is served.\n  *                      MaskAddress and MaskData could be used to automatically clear a peripheral flag when the request is served.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_ConfigPostRequestMask(MDMA_HandleTypeDef *hmdma, uint32_t MaskAddress, uint32_t MaskData)\n{\n  HAL_StatusTypeDef  status = HAL_OK;\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    /* if HW request set Post Request MaskAddress and MaskData,  */\n    if((hmdma->Instance->CTCR & MDMA_CTCR_SWRM) == 0U)\n    {\n      /* Set the HW request clear Mask and Data */\n      hmdma->Instance->CMAR = MaskAddress;\n      hmdma->Instance->CMDR = MaskData;\n\n      /*\n      -If the request is done by SW : BWM could be set to 1 or 0.\n      -If the request is done by a peripheral :\n         If mask address not set (0) => BWM must be set to 0\n         If mask address set (different than 0) => BWM could be set to 1 or 0\n      */\n      if(MaskAddress == 0U)\n      {\n        hmdma->Instance->CTCR &=  ~MDMA_CTCR_BWM;\n      }\n      else\n      {\n        hmdma->Instance->CTCR |=  MDMA_CTCR_BWM;\n      }\n    }\n    else\n    {\n      /* Return error status */\n      status =  HAL_ERROR;\n    }\n  }\n  else\n  {\n    /* Return error status */\n    status =  HAL_ERROR;\n  }\n  /* Release Lock */\n  __HAL_UNLOCK(hmdma);\n\n  return status;\n}\n\n/**\n  * @brief  Register callbacks\n  * @param  hmdma:                pointer to a MDMA_HandleTypeDef structure that contains\n  *                               the configuration information for the specified MDMA Channel.\n  * @param  CallbackID:           User Callback identifier\n  * @param  pCallback:            pointer to callbacsk function.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_RegisterCallback(MDMA_HandleTypeDef *hmdma, HAL_MDMA_CallbackIDTypeDef CallbackID, void (* pCallback)(MDMA_HandleTypeDef *_hmdma))\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    switch (CallbackID)\n    {\n    case  HAL_MDMA_XFER_CPLT_CB_ID:\n      hmdma->XferCpltCallback = pCallback;\n      break;\n\n    case  HAL_MDMA_XFER_BUFFERCPLT_CB_ID:\n      hmdma->XferBufferCpltCallback = pCallback;\n      break;\n\n    case  HAL_MDMA_XFER_BLOCKCPLT_CB_ID:\n      hmdma->XferBlockCpltCallback = pCallback;\n      break;\n\n    case  HAL_MDMA_XFER_REPBLOCKCPLT_CB_ID:\n      hmdma->XferRepeatBlockCpltCallback = pCallback;\n      break;\n\n    case  HAL_MDMA_XFER_ERROR_CB_ID:\n      hmdma->XferErrorCallback = pCallback;\n      break;\n\n    case  HAL_MDMA_XFER_ABORT_CB_ID:\n      hmdma->XferAbortCallback = pCallback;\n      break;\n\n    default:\n      break;\n    }\n  }\n  else\n  {\n    /* Return error status */\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hmdma);\n\n  return status;\n}\n\n/**\n  * @brief  UnRegister callbacks\n  * @param  hmdma:                 pointer to a MDMA_HandleTypeDef structure that contains\n  *                               the configuration information for the specified MDMA Channel.\n  * @param  CallbackID:           User Callback identifier\n  *                               a HAL_MDMA_CallbackIDTypeDef ENUM as parameter.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_UnRegisterCallback(MDMA_HandleTypeDef *hmdma, HAL_MDMA_CallbackIDTypeDef CallbackID)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    switch (CallbackID)\n    {\n    case  HAL_MDMA_XFER_CPLT_CB_ID:\n      hmdma->XferCpltCallback = NULL;\n      break;\n\n    case  HAL_MDMA_XFER_BUFFERCPLT_CB_ID:\n      hmdma->XferBufferCpltCallback = NULL;\n      break;\n\n    case  HAL_MDMA_XFER_BLOCKCPLT_CB_ID:\n      hmdma->XferBlockCpltCallback = NULL;\n      break;\n\n    case  HAL_MDMA_XFER_REPBLOCKCPLT_CB_ID:\n      hmdma->XferRepeatBlockCpltCallback = NULL;\n      break;\n\n    case  HAL_MDMA_XFER_ERROR_CB_ID:\n      hmdma->XferErrorCallback = NULL;\n      break;\n\n    case  HAL_MDMA_XFER_ABORT_CB_ID:\n      hmdma->XferAbortCallback = NULL;\n      break;\n\n    case   HAL_MDMA_XFER_ALL_CB_ID:\n      hmdma->XferCpltCallback = NULL;\n      hmdma->XferBufferCpltCallback = NULL;\n      hmdma->XferBlockCpltCallback = NULL;\n      hmdma->XferRepeatBlockCpltCallback = NULL;\n      hmdma->XferErrorCallback = NULL;\n      hmdma->XferAbortCallback = NULL;\n      break;\n\n    default:\n      status = HAL_ERROR;\n      break;\n    }\n  }\n  else\n  {\n    status = HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(hmdma);\n\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/** @addtogroup MDMA_Exported_Functions_Group2\n *\n@verbatim\n ===============================================================================\n                      #####  Linked list operation functions  #####\n ===============================================================================\n    [..]  This section provides functions allowing to:\n      (+) Create a linked list node\n      (+) Add a node to the MDMA linked list\n      (+) Remove a node from the MDMA linked list\n      (+) Enable/Disable linked list circular mode\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Initializes an MDMA Link Node according to the specified\n  *         parameters in the pMDMA_LinkedListNodeConfig .\n  * @param  pNode: Pointer to a MDMA_LinkNodeTypeDef structure that contains Linked list node\n  *         registers configurations.\n  * @param  pNodeConfig: Pointer to a MDMA_LinkNodeConfTypeDef structure that contains\n  *               the configuration information for the specified MDMA Linked List Node.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_LinkedList_CreateNode(MDMA_LinkNodeTypeDef *pNode, MDMA_LinkNodeConfTypeDef *pNodeConfig)\n{\n  uint32_t addressMask;\n  uint32_t blockoffset;\n\n  /* Check the MDMA peripheral state */\n  if((pNode == NULL) || (pNodeConfig == NULL))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_MDMA_PRIORITY(pNodeConfig->Init.Priority));\n  assert_param(IS_MDMA_ENDIANNESS_MODE(pNodeConfig->Init.Endianness));\n  assert_param(IS_MDMA_REQUEST(pNodeConfig->Init.Request));\n  assert_param(IS_MDMA_SOURCE_INC(pNodeConfig->Init.SourceInc));\n  assert_param(IS_MDMA_DESTINATION_INC(pNodeConfig->Init.DestinationInc));\n  assert_param(IS_MDMA_SOURCE_DATASIZE(pNodeConfig->Init.SourceDataSize));\n  assert_param(IS_MDMA_DESTINATION_DATASIZE(pNodeConfig->Init.DestDataSize));\n  assert_param(IS_MDMA_DATA_ALIGNMENT(pNodeConfig->Init.DataAlignment));\n  assert_param(IS_MDMA_SOURCE_BURST(pNodeConfig->Init.SourceBurst));\n  assert_param(IS_MDMA_DESTINATION_BURST(pNodeConfig->Init.DestBurst));\n  assert_param(IS_MDMA_BUFFER_TRANSFER_LENGTH(pNodeConfig->Init.BufferTransferLength));\n  assert_param(IS_MDMA_TRANSFER_TRIGGER_MODE(pNodeConfig->Init.TransferTriggerMode));\n  assert_param(IS_MDMA_BLOCK_ADDR_OFFSET(pNodeConfig->Init.SourceBlockAddressOffset));\n  assert_param(IS_MDMA_BLOCK_ADDR_OFFSET(pNodeConfig->Init.DestBlockAddressOffset));\n\n  assert_param(IS_MDMA_TRANSFER_LENGTH(pNodeConfig->BlockDataLength));\n  assert_param(IS_MDMA_BLOCK_COUNT(pNodeConfig->BlockCount));\n\n\n  /* Configure next Link node Address Register to zero */\n  pNode->CLAR =  0;\n\n  /* Configure the Link Node registers*/\n  pNode->CTBR   = 0;\n  pNode->CMAR   = 0;\n  pNode->CMDR   = 0;\n  pNode->Reserved = 0;\n\n  /* Write new CTCR Register value */\n  pNode->CTCR =  pNodeConfig->Init.SourceInc | pNodeConfig->Init.DestinationInc | \\\n    pNodeConfig->Init.SourceDataSize | pNodeConfig->Init.DestDataSize           | \\\n      pNodeConfig->Init.DataAlignment| pNodeConfig->Init.SourceBurst            | \\\n        pNodeConfig->Init.DestBurst                                             | \\\n          ((pNodeConfig->Init.BufferTransferLength - 1U) << MDMA_CTCR_TLEN_Pos) | \\\n            pNodeConfig->Init.TransferTriggerMode;\n\n  /* If SW request set the CTCR register to SW Request Mode*/\n  if(pNodeConfig->Init.Request == MDMA_REQUEST_SW)\n  {\n    pNode->CTCR |= MDMA_CTCR_SWRM;\n  }\n\n  /*\n  -If the request is done by SW : BWM could be set to 1 or 0.\n  -If the request is done by a peripheral :\n     If mask address not set (0) => BWM must be set to 0\n     If mask address set (different than 0) => BWM could be set to 1 or 0\n  */\n  if((pNodeConfig->Init.Request == MDMA_REQUEST_SW) || (pNodeConfig->PostRequestMaskAddress != 0U))\n  {\n    pNode->CTCR |=  MDMA_CTCR_BWM;\n  }\n\n  /* Set the new CBNDTR Register value */\n  pNode->CBNDTR = ((pNodeConfig->BlockCount - 1U) << MDMA_CBNDTR_BRC_Pos) & MDMA_CBNDTR_BRC;\n\n  /* if block source address offset is negative set the Block Repeat Source address Update Mode to decrement */\n  if(pNodeConfig->Init.SourceBlockAddressOffset < 0)\n  {\n    pNode->CBNDTR |= MDMA_CBNDTR_BRSUM;\n    /*write new CBRUR Register value : source repeat block offset */\n    blockoffset = (uint32_t)(- pNodeConfig->Init.SourceBlockAddressOffset);\n    pNode->CBRUR = blockoffset & 0x0000FFFFU;\n  }\n  else\n  {\n    /*write new CBRUR Register value : source repeat block offset */\n    pNode->CBRUR = (((uint32_t) pNodeConfig->Init.SourceBlockAddressOffset) & 0x0000FFFFU);\n  }\n\n  /* if block destination address offset is negative set the Block Repeat destination address Update Mode to decrement */\n  if(pNodeConfig->Init.DestBlockAddressOffset < 0)\n  {\n    pNode->CBNDTR |= MDMA_CBNDTR_BRDUM;\n    /*write new CBRUR Register value : destination repeat block offset */\n    blockoffset = (uint32_t)(- pNodeConfig->Init.DestBlockAddressOffset);\n    pNode->CBRUR |= ((blockoffset & 0x0000FFFFU) << MDMA_CBRUR_DUV_Pos);\n  }\n  else\n  {\n    /*write new CBRUR Register value : destination repeat block offset */\n    pNode->CBRUR |= ((((uint32_t)pNodeConfig->Init.DestBlockAddressOffset) & 0x0000FFFFU) << MDMA_CBRUR_DUV_Pos);\n  }\n\n  /* Configure MDMA Link Node data length */\n  pNode->CBNDTR |=  pNodeConfig->BlockDataLength;\n\n  /* Configure MDMA Link Node destination address */\n  pNode->CDAR = pNodeConfig->DstAddress;\n\n  /* Configure MDMA Link Node Source address */\n  pNode->CSAR = pNodeConfig->SrcAddress;\n\n  /* if HW request set the HW request and the requet CleraMask and ClearData MaskData,  */\n  if(pNodeConfig->Init.Request != MDMA_REQUEST_SW)\n  {\n    /* Set the HW request in CTBR register  */\n    pNode->CTBR = pNodeConfig->Init.Request & MDMA_CTBR_TSEL;\n    /* Set the HW request clear Mask and Data */\n    pNode->CMAR = pNodeConfig->PostRequestMaskAddress;\n    pNode->CMDR = pNodeConfig->PostRequestMaskData;\n  }\n\n  addressMask = pNodeConfig->SrcAddress & 0xFF000000U;\n  if((addressMask == 0x20000000U) || (addressMask == 0x00000000U))\n  {\n    /*The AHBSbus is used as source (read operation) on channel x */\n    pNode->CTBR |= MDMA_CTBR_SBUS;\n  }\n\n  addressMask = pNodeConfig->DstAddress & 0xFF000000U;\n  if((addressMask == 0x20000000U) || (addressMask == 0x00000000U))\n  {\n    /*The AHB bus is used as destination (write operation) on channel x */\n    pNode->CTBR |= MDMA_CTBR_DBUS;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Connect a node to the linked list.\n  * @param  hmdma    : Pointer to a MDMA_HandleTypeDef structure that contains\n  *                    the configuration information for the specified MDMA Channel.\n  * @param  pNewNode : Pointer to a MDMA_LinkNodeTypeDef structure that contains Linked list node\n  *                    to be add to the list.\n  * @param pPrevNode : Pointer to the new node position in the linked list or zero to insert the new node\n  *                    at the end of the list\n  *\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_LinkedList_AddNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNewNode, MDMA_LinkNodeTypeDef *pPrevNode)\n{\n  MDMA_LinkNodeTypeDef *pNode;\n  uint32_t counter = 0, nodeInserted = 0;\n  HAL_StatusTypeDef hal_status = HAL_OK;\n\n  /* Check the MDMA peripheral handle */\n  if((hmdma == NULL) || (pNewNode == NULL))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    /* Change MDMA peripheral state */\n    hmdma->State = HAL_MDMA_STATE_BUSY;\n\n    /* Check if this is the first node (after the Inititlization node) */\n    if((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U)\n    {\n      if(pPrevNode == NULL)\n      {\n        /* if this is the first node after the initialization\n        connect this node to the node 0 by updating\n        the MDMA channel CLAR register to this node address */\n        hmdma->Instance->CLAR = (uint32_t)pNewNode;\n        /* Set the MDMA handle First linked List node*/\n        hmdma->FirstLinkedListNodeAddress = pNewNode;\n\n        /*reset New node link */\n        pNewNode->CLAR = 0;\n\n        /* Update the Handle last node address */\n        hmdma->LastLinkedListNodeAddress = pNewNode;\n\n        hmdma->LinkedListNodeCounter = 1;\n      }\n      else\n      {\n        hal_status = HAL_ERROR;\n      }\n    }\n    else if(hmdma->FirstLinkedListNodeAddress != pNewNode)\n    {\n      /* Check if the node to insert already exists*/\n      pNode = hmdma->FirstLinkedListNodeAddress;\n      while((counter < hmdma->LinkedListNodeCounter) && (hal_status == HAL_OK))\n      {\n        if(pNode->CLAR == (uint32_t)pNewNode)\n        {\n          hal_status = HAL_ERROR; /* error this node already exist in the linked list and it is not first node */\n        }\n        pNode = (MDMA_LinkNodeTypeDef *)pNode->CLAR;\n        counter++;\n      }\n\n      if(hal_status == HAL_OK)\n      {\n        /* Check if the previous node is the last one in the current list or zero */\n        if((pPrevNode == hmdma->LastLinkedListNodeAddress) || (pPrevNode == NULL))\n        {\n          /* insert the new node at the end of the list */\n          pNewNode->CLAR = hmdma->LastLinkedListNodeAddress->CLAR;\n          hmdma->LastLinkedListNodeAddress->CLAR = (uint32_t)pNewNode;\n          /* Update the Handle last node address */\n          hmdma->LastLinkedListNodeAddress = pNewNode;\n          /* Increment the linked list node counter */\n          hmdma->LinkedListNodeCounter++;\n        }\n        else\n        {\n          /*insert the new node after the pPreviousNode node */\n          pNode = hmdma->FirstLinkedListNodeAddress;\n          counter = 0;\n          while((counter < hmdma->LinkedListNodeCounter) && (nodeInserted == 0U))\n          {\n            counter++;\n            if(pNode == pPrevNode)\n            {\n              /*Insert the new node after the previous one */\n              pNewNode->CLAR = pNode->CLAR;\n              pNode->CLAR = (uint32_t)pNewNode;\n              /* Increment the linked list node counter */\n              hmdma->LinkedListNodeCounter++;\n              nodeInserted = 1;\n            }\n            else\n            {\n              pNode = (MDMA_LinkNodeTypeDef *)pNode->CLAR;\n            }\n          }\n\n          if(nodeInserted == 0U)\n          {\n            hal_status = HAL_ERROR;\n          }\n        }\n      }\n    }\n    else\n    {\n      hal_status = HAL_ERROR;\n    }\n\n    /* Process unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    hmdma->State = HAL_MDMA_STATE_READY;\n\n    return hal_status;\n  }\n  else\n  {\n    /* Process unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    /* Return error status */\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Disconnect/Remove a node from the transfer linked list.\n  * @param  hmdma : Pointer to a MDMA_HandleTypeDef structure that contains\n  *                 the configuration information for the specified MDMA Channel.\n  * @param  pNode : Pointer to a MDMA_LinkNodeTypeDef structure that contains Linked list node\n  *                 to be removed from the list.\n  *\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_LinkedList_RemoveNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNode)\n{\n  MDMA_LinkNodeTypeDef *ptmpNode;\n  uint32_t counter = 0, nodeDeleted = 0;\n  HAL_StatusTypeDef hal_status = HAL_OK;\n\n  /* Check the MDMA peripheral handle */\n  if((hmdma == NULL) || (pNode == NULL))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    /* Change MDMA peripheral state */\n    hmdma->State = HAL_MDMA_STATE_BUSY;\n\n    /* If first and last node are null (no nodes in the list) : return error*/\n    if(((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U) || ((uint32_t)hmdma->LastLinkedListNodeAddress == 0U) || (hmdma->LinkedListNodeCounter == 0U))\n    {\n      hal_status = HAL_ERROR;\n    }\n    else if(hmdma->FirstLinkedListNodeAddress == pNode) /* Deleting first node */\n    {\n      /* Delete 1st node */\n      if(hmdma->LastLinkedListNodeAddress == pNode)\n      {\n        /*if the last node is at the same time the first one (1 single node after the init node 0)\n        then update the last node too */\n\n        hmdma->FirstLinkedListNodeAddress = 0;\n        hmdma->LastLinkedListNodeAddress  = 0;\n        hmdma->LinkedListNodeCounter = 0;\n\n        hmdma->Instance->CLAR = 0;\n      }\n      else\n      {\n        if((uint32_t)hmdma->FirstLinkedListNodeAddress == hmdma->LastLinkedListNodeAddress->CLAR)\n        {\n          /* if last node is looping to first (circular list) one update the last node connection */\n          hmdma->LastLinkedListNodeAddress->CLAR = pNode->CLAR;\n        }\n\n        /* if deleting the first node after the initialization\n        connect the next node to the node 0 by updating\n        the MDMA channel CLAR register to this node address */\n        hmdma->Instance->CLAR = pNode->CLAR;\n        hmdma->FirstLinkedListNodeAddress = (MDMA_LinkNodeTypeDef *)hmdma->Instance->CLAR;\n        /* Update the Handle node counter */\n        hmdma->LinkedListNodeCounter--;\n      }\n    }\n    else /* Deleting any other node */\n    {\n      /*Deleted node is not the first one : find it  */\n      ptmpNode = hmdma->FirstLinkedListNodeAddress;\n      while((counter < hmdma->LinkedListNodeCounter) && (nodeDeleted == 0U))\n      {\n        counter++;\n        if(ptmpNode->CLAR == ((uint32_t)pNode))\n        {\n          /* if deleting the last node */\n          if(pNode == hmdma->LastLinkedListNodeAddress)\n          {\n            /*Update the linked list last node address in the handle*/\n            hmdma->LastLinkedListNodeAddress = ptmpNode;\n          }\n          /* update the next node link after deleting pMDMA_LinkedListNode */\n          ptmpNode->CLAR = pNode->CLAR;\n          nodeDeleted = 1;\n          /* Update the Handle node counter */\n          hmdma->LinkedListNodeCounter--;\n        }\n        else\n        {\n          ptmpNode = (MDMA_LinkNodeTypeDef *)ptmpNode->CLAR;\n        }\n      }\n\n      if(nodeDeleted == 0U)\n      {\n        /* last node reashed without finding the node to delete : return error */\n        hal_status = HAL_ERROR;\n      }\n    }\n\n    /* Process unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    hmdma->State = HAL_MDMA_STATE_READY;\n\n    return hal_status;\n  }\n  else\n  {\n    /* Process unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    /* Return error status */\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief  Make the linked list circular by connecting the last node to the first.\n  * @param  hmdma : Pointer to a MDMA_HandleTypeDef structure that contains\n  *                 the configuration information for the specified MDMA Channel.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_LinkedList_EnableCircularMode(MDMA_HandleTypeDef *hmdma)\n{\n  HAL_StatusTypeDef hal_status = HAL_OK;\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    /* Change MDMA peripheral state */\n    hmdma->State = HAL_MDMA_STATE_BUSY;\n\n    /* If first and last node are null (no nodes in the list) : return error*/\n    if(((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U) || ((uint32_t)hmdma->LastLinkedListNodeAddress == 0U) || (hmdma->LinkedListNodeCounter == 0U))\n    {\n      hal_status = HAL_ERROR;\n    }\n    else\n    {\n      /* to enable circular mode Last Node should be connected to first node */\n      hmdma->LastLinkedListNodeAddress->CLAR = (uint32_t)hmdma->FirstLinkedListNodeAddress;\n    }\n\n  }\n  /* Process unlocked */\n  __HAL_UNLOCK(hmdma);\n\n  hmdma->State = HAL_MDMA_STATE_READY;\n\n  return hal_status;\n}\n\n/**\n  * @brief  Disable the linked list circular mode by setting the last node connection to null\n  * @param  hmdma : Pointer to a MDMA_HandleTypeDef structure that contains\n  *                 the configuration information for the specified MDMA Channel.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_LinkedList_DisableCircularMode(MDMA_HandleTypeDef *hmdma)\n{\n  HAL_StatusTypeDef hal_status = HAL_OK;\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    /* Change MDMA peripheral state */\n    hmdma->State = HAL_MDMA_STATE_BUSY;\n\n    /* If first and last node are null (no nodes in the list) : return error*/\n    if(((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U) || ((uint32_t)hmdma->LastLinkedListNodeAddress == 0U) || (hmdma->LinkedListNodeCounter == 0U))\n    {\n      hal_status = HAL_ERROR;\n    }\n    else\n    {\n      /* to disable circular mode Last Node should be connected to NULL */\n      hmdma->LastLinkedListNodeAddress->CLAR = 0;\n    }\n\n  }\n  /* Process unlocked */\n  __HAL_UNLOCK(hmdma);\n\n  hmdma->State = HAL_MDMA_STATE_READY;\n\n  return hal_status;\n}\n\n/**\n  * @}\n  */\n\n/** @addtogroup MDMA_Exported_Functions_Group3\n *\n@verbatim\n ===============================================================================\n                      #####  IO operation functions  #####\n ===============================================================================\n    [..]  This section provides functions allowing to:\n      (+) Configure the source, destination address and data length and Start MDMA transfer\n      (+) Configure the source, destination address and data length and\n          Start MDMA transfer with interrupt\n      (+) Abort MDMA transfer\n      (+) Poll for transfer complete\n      (+) Generate a SW request (when Request is set to MDMA_REQUEST_SW)\n      (+) Handle MDMA interrupt request\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Starts the MDMA Transfer.\n  * @param  hmdma           : pointer to a MDMA_HandleTypeDef structure that contains\n  *                           the configuration information for the specified MDMA Channel.\n  * @param  SrcAddress      : The source memory Buffer address\n  * @param  DstAddress      : The destination memory Buffer address\n  * @param  BlockDataLength : The length of a block transfer in bytes\n  * @param  BlockCount      : The number of a blocks to be transfer\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_Start(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t BlockDataLength, uint32_t BlockCount)\n{\n  /* Check the parameters */\n  assert_param(IS_MDMA_TRANSFER_LENGTH(BlockDataLength));\n  assert_param(IS_MDMA_BLOCK_COUNT(BlockCount));\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    /* Change MDMA peripheral state */\n    hmdma->State = HAL_MDMA_STATE_BUSY;\n\n    /* Initialize the error code */\n    hmdma->ErrorCode = HAL_MDMA_ERROR_NONE;\n\n    /* Disable the peripheral */\n    __HAL_MDMA_DISABLE(hmdma);\n\n    /* Configure the source, destination address and the data length */\n    MDMA_SetConfig(hmdma, SrcAddress, DstAddress, BlockDataLength, BlockCount);\n\n    /* Enable the Peripheral */\n    __HAL_MDMA_ENABLE(hmdma);\n\n    if(hmdma->Init.Request == MDMA_REQUEST_SW)\n    {\n      /* activate If SW request mode*/\n      hmdma->Instance->CCR |=  MDMA_CCR_SWRQ;\n    }\n  }\n  else\n  {\n    /* Process unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    /* Return error status */\n    return HAL_BUSY;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the MDMA Transfer with interrupts enabled.\n  * @param  hmdma           : pointer to a MDMA_HandleTypeDef structure that contains\n  *                           the configuration information for the specified MDMA Channel.\n  * @param  SrcAddress      : The source memory Buffer address\n  * @param  DstAddress      : The destination memory Buffer address\n  * @param  BlockDataLength : The length of a block transfer in bytes\n  * @param  BlockCount      : The number of a blocks to be transfer\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_Start_IT(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t BlockDataLength, uint32_t BlockCount)\n{\n  /* Check the parameters */\n  assert_param(IS_MDMA_TRANSFER_LENGTH(BlockDataLength));\n  assert_param(IS_MDMA_BLOCK_COUNT(BlockCount));\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(hmdma);\n\n  if(HAL_MDMA_STATE_READY == hmdma->State)\n  {\n    /* Change MDMA peripheral state */\n    hmdma->State = HAL_MDMA_STATE_BUSY;\n\n    /* Initialize the error code */\n    hmdma->ErrorCode = HAL_MDMA_ERROR_NONE;\n\n    /* Disable the peripheral */\n    __HAL_MDMA_DISABLE(hmdma);\n\n    /* Configure the source, destination address and the data length */\n    MDMA_SetConfig(hmdma, SrcAddress, DstAddress, BlockDataLength, BlockCount);\n\n    /* Enable Common interrupts i.e Transfer Error IT and Channel Transfer Complete IT*/\n    __HAL_MDMA_ENABLE_IT(hmdma, (MDMA_IT_TE | MDMA_IT_CTC));\n\n    if(hmdma->XferBlockCpltCallback != NULL)\n    {\n      /* if Block transfer complete Callback is set enable the corresponding IT*/\n      __HAL_MDMA_ENABLE_IT(hmdma, MDMA_IT_BT);\n    }\n\n    if(hmdma->XferRepeatBlockCpltCallback != NULL)\n    {\n      /* if Repeated Block transfer complete Callback is set enable the corresponding IT*/\n      __HAL_MDMA_ENABLE_IT(hmdma, MDMA_IT_BRT);\n    }\n\n    if(hmdma->XferBufferCpltCallback != NULL)\n    {\n      /* if buffer transfer complete Callback is set enable the corresponding IT*/\n      __HAL_MDMA_ENABLE_IT(hmdma, MDMA_IT_BFTC);\n    }\n\n    /* Enable the Peripheral */\n    __HAL_MDMA_ENABLE(hmdma);\n\n    if(hmdma->Init.Request == MDMA_REQUEST_SW)\n    {\n      /* activate If SW request mode*/\n      hmdma->Instance->CCR |=  MDMA_CCR_SWRQ;\n    }\n  }\n  else\n  {\n    /* Process unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    /* Return error status */\n    return HAL_BUSY;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Aborts the MDMA Transfer.\n  * @param  hmdma  : pointer to a MDMA_HandleTypeDef structure that contains\n  *                 the configuration information for the specified MDMA Channel.\n  *\n  * @note  After disabling a MDMA Channel, a check for wait until the MDMA Channel is\n  *        effectively disabled is added. If a Channel is disabled\n  *        while a data transfer is ongoing, the current data will be transferred\n  *        and the Channel will be effectively disabled only after the transfer of\n  *        this single data is finished.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_Abort(MDMA_HandleTypeDef *hmdma)\n{\n  uint32_t tickstart =  HAL_GetTick();\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  if(HAL_MDMA_STATE_BUSY != hmdma->State)\n  {\n    hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER;\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    return HAL_ERROR;\n  }\n  else\n  {\n    /* Disable all the transfer interrupts */\n    __HAL_MDMA_DISABLE_IT(hmdma, (MDMA_IT_TE | MDMA_IT_CTC | MDMA_IT_BT | MDMA_IT_BRT | MDMA_IT_BFTC));\n\n    /* Disable the channel */\n    __HAL_MDMA_DISABLE(hmdma);\n\n    /* Check if the MDMA Channel is effectively disabled */\n    while((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U)\n    {\n      /* Check for the Timeout */\n      if( (HAL_GetTick()  - tickstart ) > HAL_TIMEOUT_MDMA_ABORT)\n      {\n        /* Update error code */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_TIMEOUT;\n\n        /* Process Unlocked */\n        __HAL_UNLOCK(hmdma);\n\n        /* Change the MDMA state */\n        hmdma->State = HAL_MDMA_STATE_ERROR;\n\n        return HAL_ERROR;\n      }\n    }\n\n    /* Clear all interrupt flags */\n    __HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_TE | MDMA_FLAG_CTC | MDMA_FLAG_BT | MDMA_FLAG_BRT | MDMA_FLAG_BFTC));\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    /* Change the MDMA state*/\n    hmdma->State = HAL_MDMA_STATE_READY;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Aborts the MDMA Transfer in Interrupt mode.\n  * @param  hmdma  : pointer to a MDMA_HandleTypeDef structure that contains\n  *                 the configuration information for the specified MDMA Channel.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_Abort_IT(MDMA_HandleTypeDef *hmdma)\n{\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  if(HAL_MDMA_STATE_BUSY != hmdma->State)\n  {\n    /* No transfer ongoing */\n    hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER;\n\n    return HAL_ERROR;\n  }\n  else\n  {\n    /* Set Abort State  */\n    hmdma->State = HAL_MDMA_STATE_ABORT;\n\n    /* Disable the stream */\n    __HAL_MDMA_DISABLE(hmdma);\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Polling for transfer complete.\n  * @param  hmdma:          pointer to a MDMA_HandleTypeDef structure that contains\n  *                        the configuration information for the specified MDMA Channel.\n  * @param  CompleteLevel: Specifies the MDMA level complete.\n  * @param  Timeout:       Timeout duration.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_PollForTransfer(MDMA_HandleTypeDef *hmdma, HAL_MDMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout)\n{\n  uint32_t levelFlag, errorFlag;\n  uint32_t tickstart;\n\n  /* Check the parameters */\n  assert_param(IS_MDMA_LEVEL_COMPLETE(CompleteLevel));\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  if(HAL_MDMA_STATE_BUSY != hmdma->State)\n  {\n    /* No transfer ongoing */\n    hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER;\n\n    return HAL_ERROR;\n  }\n\n  /* Get the level transfer complete flag */\n  levelFlag = ((CompleteLevel == HAL_MDMA_FULL_TRANSFER)  ? MDMA_FLAG_CTC  : \\\n               (CompleteLevel == HAL_MDMA_BUFFER_TRANSFER)? MDMA_FLAG_BFTC : \\\n               (CompleteLevel == HAL_MDMA_BLOCK_TRANSFER) ? MDMA_FLAG_BT   : \\\n               MDMA_FLAG_BRT);\n\n\n  /* Get timeout */\n  tickstart = HAL_GetTick();\n\n  while(__HAL_MDMA_GET_FLAG(hmdma, levelFlag) == 0U)\n  {\n    if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_TE) != 0U))\n    {\n      /* Get the transfer error source flag */\n      errorFlag = hmdma->Instance->CESR;\n\n      if((errorFlag & MDMA_CESR_TED) == 0U)\n      {\n        /* Update error code : Read Transfer error  */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_READ_XFER;\n      }\n      else\n      {\n        /* Update error code : Write Transfer error */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_WRITE_XFER;\n      }\n\n      if((errorFlag & MDMA_CESR_TEMD) != 0U)\n      {\n        /* Update error code : Error Mask Data */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_MASK_DATA;\n      }\n\n      if((errorFlag & MDMA_CESR_TELD) != 0U)\n      {\n        /* Update error code : Error Linked list */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_LINKED_LIST;\n      }\n\n      if((errorFlag & MDMA_CESR_ASE) != 0U)\n      {\n        /* Update error code : Address/Size alignment error */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_ALIGNMENT;\n      }\n\n      if((errorFlag & MDMA_CESR_BSE) != 0U)\n      {\n        /* Update error code : Block Size error */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_BLOCK_SIZE;\n      }\n\n      (void) HAL_MDMA_Abort(hmdma); /* if error then abort the current transfer */\n\n      /*\n        Note that the Abort function will\n          - Clear all transfer flags\n          - Unlock\n          - Set the State\n      */\n\n      return HAL_ERROR;\n\n    }\n\n    /* Check for the Timeout */\n    if(Timeout != HAL_MAX_DELAY)\n    {\n      if(((HAL_GetTick() - tickstart ) > Timeout) || (Timeout == 0U))\n      {\n        /* Update error code */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_TIMEOUT;\n\n        (void) HAL_MDMA_Abort(hmdma); /* if timeout then abort the current transfer */\n\n        /*\n          Note that the Abort function will\n            - Clear all transfer flags\n            - Unlock\n            - Set the State\n        */\n\n        return HAL_ERROR;\n      }\n    }\n  }\n\n  /* Clear the transfer level flag */\n  if(CompleteLevel == HAL_MDMA_BUFFER_TRANSFER)\n  {\n    __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BFTC);\n\n  }\n  else if(CompleteLevel == HAL_MDMA_BLOCK_TRANSFER)\n  {\n    __HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_BFTC | MDMA_FLAG_BT));\n\n  }\n  else if(CompleteLevel == HAL_MDMA_REPEAT_BLOCK_TRANSFER)\n  {\n    __HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_BFTC | MDMA_FLAG_BT | MDMA_FLAG_BRT));\n  }\n  else if(CompleteLevel == HAL_MDMA_FULL_TRANSFER)\n  {\n    __HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_BRT | MDMA_FLAG_BT | MDMA_FLAG_BFTC | MDMA_FLAG_CTC));\n\n    /* Process unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    hmdma->State = HAL_MDMA_STATE_READY;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Generate an MDMA SW request trigger to activate the request on the given Channel.\n  * @param  hmdma:       pointer to a MDMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified MDMA Stream.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MDMA_GenerateSWRequest(MDMA_HandleTypeDef *hmdma)\n{\n  uint32_t request_mode;\n\n  /* Check the MDMA peripheral handle */\n  if(hmdma == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Get the softawre request mode */\n  request_mode = hmdma->Instance->CTCR & MDMA_CTCR_SWRM;\n\n  if((hmdma->Instance->CCR &  MDMA_CCR_EN) == 0U)\n  {\n    /* if no Transfer on going (MDMA enable bit not set) return error */\n    hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER;\n\n    return HAL_ERROR;\n  }\n  else if(((hmdma->Instance->CISR &  MDMA_CISR_CRQA) != 0U) || (request_mode == 0U))\n  {\n    /* if an MDMA ongoing request has not yet end or if request mode is not SW request return error */\n    hmdma->ErrorCode = HAL_MDMA_ERROR_BUSY;\n\n    return HAL_ERROR;\n  }\n  else\n  {\n    /* Set the SW request bit to activate the request on the Channel */\n    hmdma->Instance->CCR |= MDMA_CCR_SWRQ;\n\n    return HAL_OK;\n  }\n}\n\n/**\n  * @brief  Handles MDMA interrupt request.\n  * @param  hmdma: pointer to a MDMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified MDMA Channel.\n  * @retval None\n  */\nvoid HAL_MDMA_IRQHandler(MDMA_HandleTypeDef *hmdma)\n{\n  __IO uint32_t count = 0;\n  uint32_t timeout = SystemCoreClock / 9600U;\n\n  uint32_t generalIntFlag, errorFlag;\n\n  /* General Interrupt Flag management ****************************************/\n  generalIntFlag =  1UL << ((((uint32_t)hmdma->Instance - (uint32_t)(MDMA_Channel0))/HAL_MDMA_CHANNEL_SIZE) & 0x1FU);\n  if((MDMA->GISR0 & generalIntFlag) == 0U)\n  {\n    return; /* the  General interrupt flag for the current channel is down , nothing to do */\n  }\n\n  /* Transfer Error Interrupt management ***************************************/\n  if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_TE) != 0U))\n  {\n    if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_TE) != 0U)\n    {\n      /* Disable the transfer error interrupt */\n      __HAL_MDMA_DISABLE_IT(hmdma, MDMA_IT_TE);\n\n      /* Get the transfer error source flag */\n      errorFlag = hmdma->Instance->CESR;\n\n      if((errorFlag & MDMA_CESR_TED) == 0U)\n      {\n        /* Update error code : Read Transfer error  */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_READ_XFER;\n      }\n      else\n      {\n        /* Update error code : Write Transfer error */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_WRITE_XFER;\n      }\n\n      if((errorFlag & MDMA_CESR_TEMD) != 0U)\n      {\n        /* Update error code : Error Mask Data */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_MASK_DATA;\n      }\n\n      if((errorFlag & MDMA_CESR_TELD) != 0U)\n      {\n        /* Update error code : Error Linked list */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_LINKED_LIST;\n      }\n\n      if((errorFlag & MDMA_CESR_ASE) != 0U)\n      {\n        /* Update error code : Address/Size alignment error */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_ALIGNMENT;\n      }\n\n      if((errorFlag & MDMA_CESR_BSE) != 0U)\n      {\n        /* Update error code : Block Size error error */\n        hmdma->ErrorCode |= HAL_MDMA_ERROR_BLOCK_SIZE;\n      }\n\n      /* Clear the transfer error flags */\n      __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_TE);\n    }\n  }\n\n  /* Buffer Transfer Complete Interrupt management ******************************/\n  if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_BFTC) != 0U))\n  {\n    if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_BFTC) != 0U)\n    {\n      /* Clear the buffer transfer complete flag */\n      __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BFTC);\n\n      if(hmdma->XferBufferCpltCallback != NULL)\n      {\n        /* Buffer transfer callback */\n        hmdma->XferBufferCpltCallback(hmdma);\n      }\n    }\n  }\n\n  /* Block Transfer Complete Interrupt management ******************************/\n  if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_BT) != 0U))\n  {\n    if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_BT) != 0U)\n    {\n      /* Clear the block transfer complete flag */\n      __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BT);\n\n      if(hmdma->XferBlockCpltCallback != NULL)\n      {\n        /* Block transfer callback */\n        hmdma->XferBlockCpltCallback(hmdma);\n      }\n    }\n  }\n\n  /* Repeated Block Transfer Complete Interrupt management ******************************/\n  if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_BRT) != 0U))\n  {\n    if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_BRT) != 0U)\n    {\n      /* Clear the repeat block transfer complete flag */\n      __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BRT);\n\n      if(hmdma->XferRepeatBlockCpltCallback != NULL)\n      {\n        /* Repeated Block transfer callback */\n        hmdma->XferRepeatBlockCpltCallback(hmdma);\n      }\n    }\n  }\n\n  /* Channel Transfer Complete Interrupt management ***********************************/\n  if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_CTC) != 0U))\n  {\n    if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_CTC) != 0U)\n    {\n      /* Disable all the transfer interrupts */\n      __HAL_MDMA_DISABLE_IT(hmdma, (MDMA_IT_TE | MDMA_IT_CTC | MDMA_IT_BT | MDMA_IT_BRT | MDMA_IT_BFTC));\n\n      if(HAL_MDMA_STATE_ABORT == hmdma->State)\n      {\n        /* Process Unlocked */\n        __HAL_UNLOCK(hmdma);\n\n        /* Change the DMA state */\n        hmdma->State = HAL_MDMA_STATE_READY;\n\n        if(hmdma->XferAbortCallback != NULL)\n        {\n          hmdma->XferAbortCallback(hmdma);\n        }\n        return;\n      }\n\n      /* Clear the Channel Transfer Complete flag */\n      __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_CTC);\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(hmdma);\n\n      /* Change MDMA peripheral state */\n      hmdma->State = HAL_MDMA_STATE_READY;\n\n      if(hmdma->XferCpltCallback != NULL)\n      {\n        /* Channel Transfer Complete callback */\n        hmdma->XferCpltCallback(hmdma);\n      }\n    }\n  }\n\n  /* manage error case */\n  if(hmdma->ErrorCode != HAL_MDMA_ERROR_NONE)\n  {\n    hmdma->State = HAL_MDMA_STATE_ABORT;\n\n    /* Disable the channel */\n    __HAL_MDMA_DISABLE(hmdma);\n\n    do\n    {\n      if (++count > timeout)\n      {\n        break;\n      }\n    }\n    while((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U);\n\n    /* Process Unlocked */\n    __HAL_UNLOCK(hmdma);\n\n    if((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U)\n    {\n      /* Change the MDMA state to error if MDMA disable fails */\n      hmdma->State = HAL_MDMA_STATE_ERROR;\n    }\n    else\n    {\n      /* Change the MDMA state to Ready if MDMA disable success */\n      hmdma->State = HAL_MDMA_STATE_READY;\n    }\n\n\n    if (hmdma->XferErrorCallback != NULL)\n    {\n      /* Transfer error callback */\n      hmdma->XferErrorCallback(hmdma);\n    }\n  }\n}\n\n/**\n  * @}\n  */\n\n/** @addtogroup MDMA_Exported_Functions_Group4\n *\n@verbatim\n ===============================================================================\n                    ##### State and Errors functions #####\n ===============================================================================\n    [..]\n    This subsection provides functions allowing to\n      (+) Check the MDMA state\n      (+) Get error code\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Returns the MDMA state.\n  * @param  hmdma: pointer to a MDMA_HandleTypeDef structure that contains\n  *               the configuration information for the specified MDMA Channel.\n  * @retval HAL state\n  */\nHAL_MDMA_StateTypeDef HAL_MDMA_GetState(MDMA_HandleTypeDef *hmdma)\n{\n  return hmdma->State;\n}\n\n/**\n  * @brief  Return the MDMA error code\n  * @param  hmdma : pointer to a MDMA_HandleTypeDef structure that contains\n  *              the configuration information for the specified MDMA Channel.\n  * @retval MDMA Error Code\n  */\nuint32_t HAL_MDMA_GetError(MDMA_HandleTypeDef *hmdma)\n{\n  return hmdma->ErrorCode;\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup MDMA_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief  Sets the MDMA Transfer parameter.\n  * @param  hmdma:       pointer to a MDMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified MDMA Channel.\n  * @param  SrcAddress: The source memory Buffer address\n  * @param  DstAddress: The destination memory Buffer address\n  * @param  BlockDataLength : The length of a block transfer in bytes\n  * @param  BlockCount: The number of blocks to be transferred\n  * @retval HAL status\n  */\nstatic void MDMA_SetConfig(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t BlockDataLength, uint32_t BlockCount)\n{\n  uint32_t addressMask;\n\n  /* Configure the MDMA Channel data length */\n  MODIFY_REG(hmdma->Instance->CBNDTR ,MDMA_CBNDTR_BNDT, (BlockDataLength & MDMA_CBNDTR_BNDT));\n\n  /* Configure the MDMA block repeat count */\n  MODIFY_REG(hmdma->Instance->CBNDTR , MDMA_CBNDTR_BRC , ((BlockCount - 1U) << MDMA_CBNDTR_BRC_Pos) & MDMA_CBNDTR_BRC);\n\n  /* Clear all interrupt flags */\n  __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_TE | MDMA_FLAG_CTC | MDMA_CISR_BRTIF | MDMA_CISR_BTIF | MDMA_CISR_TCIF);\n\n  /* Configure MDMA Channel destination address */\n  hmdma->Instance->CDAR = DstAddress;\n\n  /* Configure MDMA Channel Source address */\n  hmdma->Instance->CSAR = SrcAddress;\n\n  addressMask = SrcAddress & 0xFF000000U;\n  if((addressMask == 0x20000000U) || (addressMask == 0x00000000U))\n  {\n    /*The AHBSbus is used as source (read operation) on channel x */\n    hmdma->Instance->CTBR |= MDMA_CTBR_SBUS;\n  }\n  else\n  {\n    /*The AXI bus is used as source (read operation) on channel x */\n    hmdma->Instance->CTBR &= (~MDMA_CTBR_SBUS);\n  }\n\n  addressMask = DstAddress & 0xFF000000U;\n  if((addressMask == 0x20000000U) || (addressMask == 0x00000000U))\n  {\n    /*The AHB bus is used as destination (write operation) on channel x */\n    hmdma->Instance->CTBR |= MDMA_CTBR_DBUS;\n  }\n  else\n  {\n    /*The AXI bus is used as destination (write operation) on channel x */\n    hmdma->Instance->CTBR &= (~MDMA_CTBR_DBUS);\n  }\n\n  /* Set the linked list register to the first node of the list */\n  hmdma->Instance->CLAR = (uint32_t)hmdma->FirstLinkedListNodeAddress;\n}\n\n/**\n  * @brief  Initializes the MDMA handle according to the specified\n  *         parameters in the MDMA_InitTypeDef\n  * @param  hmdma:       pointer to a MDMA_HandleTypeDef structure that contains\n  *                     the configuration information for the specified MDMA Channel.\n  * @retval None\n  */\nstatic void MDMA_Init(MDMA_HandleTypeDef *hmdma)\n{\n  uint32_t blockoffset;\n\n  /* Prepare the MDMA Channel configuration */\n  hmdma->Instance->CCR = hmdma->Init.Priority  | hmdma->Init.Endianness;\n\n  /* Write new CTCR Register value */\n  hmdma->Instance->CTCR =  hmdma->Init.SourceInc      | hmdma->Init.DestinationInc | \\\n                           hmdma->Init.SourceDataSize | hmdma->Init.DestDataSize   | \\\n                           hmdma->Init.DataAlignment  | hmdma->Init.SourceBurst    | \\\n                           hmdma->Init.DestBurst                                   | \\\n                           ((hmdma->Init.BufferTransferLength - 1U) << MDMA_CTCR_TLEN_Pos) | \\\n                           hmdma->Init.TransferTriggerMode;\n\n  /* If SW request set the CTCR register to SW Request Mode */\n  if(hmdma->Init.Request == MDMA_REQUEST_SW)\n  {\n    /*\n    -If the request is done by SW : BWM could be set to 1 or 0.\n    -If the request is done by a peripheral :\n    If mask address not set (0) => BWM must be set to 0\n    If mask address set (different than 0) => BWM could be set to 1 or 0\n    */\n    hmdma->Instance->CTCR |= (MDMA_CTCR_SWRM | MDMA_CTCR_BWM);\n  }\n\n  /* Reset CBNDTR Register */\n  hmdma->Instance->CBNDTR = 0;\n\n  /* if block source address offset is negative set the Block Repeat Source address Update Mode to decrement */\n  if(hmdma->Init.SourceBlockAddressOffset < 0)\n  {\n    hmdma->Instance->CBNDTR |= MDMA_CBNDTR_BRSUM;\n    /* Write new CBRUR Register value : source repeat block offset */\n    blockoffset = (uint32_t)(- hmdma->Init.SourceBlockAddressOffset);\n    hmdma->Instance->CBRUR = (blockoffset & 0x0000FFFFU);\n  }\n  else\n  {\n    /* Write new CBRUR Register value : source repeat block offset */\n    hmdma->Instance->CBRUR = (((uint32_t)hmdma->Init.SourceBlockAddressOffset) & 0x0000FFFFU);\n  }\n\n  /* If block destination address offset is negative set the Block Repeat destination address Update Mode to decrement */\n  if(hmdma->Init.DestBlockAddressOffset < 0)\n  {\n    hmdma->Instance->CBNDTR |= MDMA_CBNDTR_BRDUM;\n    /* Write new CBRUR Register value : destination repeat block offset */\n    blockoffset = (uint32_t)(- hmdma->Init.DestBlockAddressOffset);\n    hmdma->Instance->CBRUR |= ((blockoffset & 0x0000FFFFU) << MDMA_CBRUR_DUV_Pos);\n  }\n  else\n  {\n    /*write new CBRUR Register value : destination repeat block offset */\n    hmdma->Instance->CBRUR |= ((((uint32_t)hmdma->Init.DestBlockAddressOffset) & 0x0000FFFFU) << MDMA_CBRUR_DUV_Pos);\n  }\n\n  /* if HW request set the HW request and the requet CleraMask and ClearData MaskData, */\n  if(hmdma->Init.Request != MDMA_REQUEST_SW)\n  {\n    /* Set the HW request in CTRB register  */\n    hmdma->Instance->CTBR = hmdma->Init.Request & MDMA_CTBR_TSEL;\n  }\n  else /* SW request : reset the CTBR register */\n  {\n    hmdma->Instance->CTBR = 0;\n  }\n\n  /* Write Link Address Register */\n  hmdma->Instance->CLAR =  0;\n}\n\n/**\n  * @}\n  */\n\n#endif /* HAL_MDMA_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_pwr.c\n  * @author  MCD Application Team\n  * @brief   PWR HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the Power Controller (PWR) peripheral:\n  *           + Initialization and de-initialization functions.\n  *           + Peripheral Control functions.\n  *           + Interrupt Handling functions.\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                        ##### PWR peripheral overview #####\n  ==============================================================================\n  [..]\n   (#) The Power control (PWR) provides an overview of the supply architecture\n       for the different power domains and of the supply configuration\n       controller.\n       In the H7 family, the number of power domains is different between\n       device lines. This difference is due to characteristics of each device.\n\n   (#) Domain architecture overview for the different H7 lines:\n      (+) Dual core lines are STM32H745, STM32H747, STM32H755 and STM32H757.\n          These devices have 3 power domains (D1, D2 and D3).\n          The domain D1 contains a CPU (Cortex-M7), a Flash memory and some\n          peripherals. The D2 domain contains peripherals and a CPU\n          (Cortex-M4). The D3 domain contains the system control, I/O logic\n          and low-power peripherals.\n      (+) STM32H72x, STM32H73x, STM32H742, STM32H743, STM32H750 and STM32H753 \n          devices have 3 power domains (D1, D2 and D3).\n          The domain D1 contains a CPU (Cortex-M7), a Flash memory and some\n          peripherals. The D2 domain contains peripherals. The D3 domains\n          contains the system control, I/O logic and low-power peripherals.\n      (+) STM32H7Axxx and STM32H7Bxxx devices have 2 power domains (CD and SRD).\n          The core domain (CD) contains a CPU (Cortex-M7), a Flash\n          memory and peripherals. The SmartRun domain contains the system\n          control, I/O logic and low-power peripherals.\n\n   (#) Every entity have low power mode as described below :\n   (#) The CPU low power modes are :\n      (+) CPU CRUN.\n      (+) CPU CSLEEP.\n      (+) CPU CSTOP.\n   (#) The domain low power modes are :\n      (+) DRUN.\n      (+) DSTOP.\n      (+) DSTANDBY.\n   (#) The SYSTEM low power modes are :\n      (+) RUN* : The Run* mode is entered after a POR reset and a wakeup from\n                 Standby. In Run* mode, the performance is limited and the\n                 system supply configuration shall be programmed. The system\n                 enters Run mode only when the ACTVOSRDY bit in PWR control\n                 status register 1 (PWR_CSR1) is set to 1.\n      (+) RUN.\n      (+) STOP.\n      (+) STANDBY.\n\n  ==============================================================================\n                        ##### How to use this driver #####\n  ==============================================================================\n  [..]\n   (#) Power management peripheral is active by default at startup level in\n       STM32h7xx lines.\n\n   (#) Call HAL_PWR_EnableBkUpAccess() and HAL_PWR_DisableBkUpAccess() functions\n       to enable/disable access to the backup domain (RTC registers, RTC backup\n       data registers and backup SRAM).\n\n   (#) Call HAL_PWR_ConfigPVD() after setting parameters to be configured (event\n       mode and voltage threshold) in order to set up the Power Voltage Detector,\n       then use HAL_PWR_EnablePVD() and  HAL_PWR_DisablePVD() functions to start\n       and stop the PVD detection.\n       (+) PVD level could be one of the following values :\n             (++) 1V95\n             (++) 2V1\n             (++) 2V25\n             (++) 2V4\n             (++) 2V55\n             (++) 2V7\n             (++) 2V85\n             (++) External voltage level\n\n   (#) Call HAL_PWR_EnableWakeUpPin() and HAL_PWR_DisableWakeUpPin() functions\n       with the right parameter to configure the wake up pin polarity (Low or\n       High) and to enable and disable it.\n\n   (#) Call HAL_PWR_EnterSLEEPMode() function to enter the current Core in SLEEP\n       mode. Wake-up from SLEEP mode could be following to an event or an\n       interrupt according to low power mode intrinsic request called (__WFI()\n       or __WFE()).\n       Please ensure to clear all CPU pending events by calling\n       HAL_PWREx_ClearPendingEvent() function when trying to enter the Cortex-Mx\n       in SLEEP mode with __WFE() entry.\n\n   (#) Call HAL_PWR_EnterSTOPMode() function to enter the whole system to Stop 0\n       mode for single core devices. For dual core devices, this API will enter\n       the domain (containing Cortex-Mx that executing this function) in DSTOP\n       mode. According to the used parameter, user could select the regulator to\n       be kept actif in low power mode and wake-up event type.\n       Please ensure to clear all CPU pending events by calling\n       HAL_PWREx_ClearPendingEvent() function when trying to enter the Cortex-Mx\n       in CSTOP mode with __WFE() entry.\n\n   (#) Call HAL_PWR_EnterSTANDBYMode() function to enter the whole system in\n       STANDBY mode for single core devices. For dual core devices, this API\n       will enter the domain (containing Cortex-Mx that executing this function)\n       in DSTANDBY mode.\n\n   (#) Call HAL_PWR_EnableSleepOnExit() and HAL_PWR_DisableSleepOnExit() APIs to\n       enable and disable the Cortex-Mx re-entring in SLEEP mode after an\n       interruption handling is over.\n\n   (#) Call HAL_PWR_EnableSEVOnPend() and HAL_PWR_DisableSEVOnPend() functions\n       to configure the Cortex-Mx to wake-up after any pending event / interrupt\n       even if it's disabled or has insufficient priority to cause exception\n       entry.\n\n   (#) Call HAL_PWR_PVD_IRQHandler() function to handle the PWR PVD interrupt\n       request.\n\n     *** PWR HAL driver macros list ***\n     =============================================\n     [..]\n       Below the list of most used macros in PWR HAL driver.\n\n      (+) __HAL_PWR_VOLTAGESCALING_CONFIG() : Configure the main internal\n                                              regulator output voltage.\n      (+) __HAL_PWR_GET_FLAG()              : Get the PWR pending flags.\n      (+) __HAL_PWR_CLEAR_FLAG()            : Clear the PWR pending flags.\n\n  @endverbatim\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup PWR PWR\n  * @brief PWR HAL module driver\n  * @{\n  */\n\n#ifdef HAL_PWR_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n\n/** @addtogroup PWR_Private_Constants PWR Private Constants\n  * @{\n  */\n\n/** @defgroup PWR_PVD_Mode_Mask PWR PVD Mode Mask\n  * @{\n  */\n#if !defined (DUAL_CORE)\n#define PVD_MODE_IT              (0x00010000U)\n#define PVD_MODE_EVT             (0x00020000U)\n#endif /* !defined (DUAL_CORE) */\n\n#define PVD_RISING_EDGE          (0x00000001U)\n#define PVD_FALLING_EDGE         (0x00000002U)\n#define PVD_RISING_FALLING_EDGE  (0x00000003U)\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n\n/** @defgroup PWR_Exported_Functions PWR Exported Functions\n  * @{\n  */\n\n/** @defgroup PWR_Exported_Functions_Group1 Initialization and De-Initialization Functions\n  * @brief    Initialization and De-Initialization functions\n  *\n@verbatim\n ===============================================================================\n              ##### Initialization and De-Initialization Functions #####\n ===============================================================================\n    [..]\n      This section provides functions allowing to deinitialize power peripheral.\n\n    [..]\n      After system reset, the backup domain (RTC registers, RTC backup data\n      registers and backup SRAM) is protected against possible unwanted write\n      accesses.\n      The HAL_PWR_EnableBkUpAccess() function enables the access to the backup\n      domain.\n      The HAL_PWR_DisableBkUpAccess() function disables the access to the backup\n      domain.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Deinitialize the HAL PWR peripheral registers to their default reset\n  *         values.\n  * @note   This functionality is not available in this product.\n  *         The prototype is kept just to maintain compatibility with other\n  *         products.\n  * @retval None.\n  */\nvoid HAL_PWR_DeInit (void)\n{\n}\n\n/**\n  * @brief  Enable access to the backup domain (RTC registers, RTC backup data\n  *         registers and backup SRAM).\n  * @note   If the HSE divided by 2, 3, ..31 is used as the RTC clock, the\n  *         Backup Domain Access should be kept enabled.\n  * @retval None.\n  */\nvoid HAL_PWR_EnableBkUpAccess (void)\n{\n  /* Enable access to RTC and backup registers */\n  SET_BIT (PWR->CR1, PWR_CR1_DBP);\n}\n\n/**\n  * @brief  Disable access to the backup domain (RTC registers, RTC backup data\n  *         registers and backup SRAM).\n  * @note   If the HSE divided by 2, 3, ..31 is used as the RTC clock, the\n  *         Backup Domain Access should be kept enabled.\n  * @retval None.\n  */\nvoid HAL_PWR_DisableBkUpAccess (void)\n{\n  /* Disable access to RTC and backup registers */\n  CLEAR_BIT (PWR->CR1, PWR_CR1_DBP);\n}\n/**\n  * @}\n  */\n\n/** @defgroup PWR_Exported_Functions_Group2 Peripheral Control Functions\n  *  @brief   Power Control functions\n  *\n@verbatim\n ===============================================================================\n                 ##### Peripheral Control Functions #####\n ===============================================================================\n    [..]\n      This section provides functions allowing to control power peripheral.\n\n    *** PVD configuration ***\n    =========================\n    [..]\n      (+) The PVD is used to monitor the VDD power supply by comparing it to a\n          threshold selected by the PVD Level (PLS[7:0] bits in the PWR_CR1\n          register).\n\n      (+) A PVDO flag is available to indicate if VDD is higher or lower\n          than the PVD threshold. This event is internally connected to the EXTI\n          line 16 to generate an interrupt if enabled.\n          It is configurable through __HAL_PWR_PVD_EXTI_ENABLE_IT() macro.\n\n      (+) The PVD is stopped in STANDBY mode.\n\n    *** Wake-up pin configuration ***\n    =================================\n    [..]\n      (+) Wake-up pin is used to wake up the system from STANDBY mode.\n          The pin pull is configurable through the WKUPEPR register to be in\n          No-pull, Pull-up and Pull-down.\n          The pin polarity is configurable through the WKUPEPR register to be\n          active on rising or falling edges.\n\n      (+) There are up to six Wake-up pin in the STM32H7 devices family.\n\n    *** Low Power modes configuration ***\n    =====================================\n    [..]\n     The device present 3 principles low-power modes features:\n      (+) SLEEP mode   : Cortex-Mx is stopped and all PWR domains are remaining\n                         active (Powered and Clocked).\n\n      (+) STOP mode    : Cortex-Mx is stopped, clocks are stopped and the\n                         regulator is running. The Main regulator or the LP\n                         regulator could be selected.\n\n      (+) STANDBY mode : All PWR domains enter DSTANDBY mode and the VCORE\n                         supply regulator is powered off.\n\n   *** SLEEP mode ***\n   ==================\n    [..]\n      (+) Entry:\n        The SLEEP mode is entered by using the HAL_PWR_EnterSLEEPMode(Regulator,\n        SLEEPEntry) function.\n\n          (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction.\n          (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction.\n\n      -@@- The Regulator parameter is not used for the STM32H7 family\n              and is kept as parameter just to maintain compatibility with the\n              lower power families (STM32L).\n\n      (+) Exit:\n        Any peripheral interrupt acknowledged by the nested vectored interrupt\n        controller (NVIC) can wake up the device from SLEEP mode.\n\n   *** STOP mode ***\n   =================\n    [..]\n      In system STOP mode, all clocks in the 1.2V domain are stopped, the PLL,\n      the HSI, and the HSE RC oscillators are disabled. Internal SRAM and\n      register contents are preserved.\n      The voltage regulator can be configured either in normal or low-power mode.\n      To minimize the consumption in STOP mode, FLASH can be powered off before\n      entering the STOP mode using the HAL_PWREx_EnableFlashPowerDown() function.\n      It can be switched on again by software after exiting the STOP mode using\n      the HAL_PWREx_DisableFlashPowerDown() function.\n\n      (+) Entry:\n         The STOP mode is entered using the HAL_PWR_EnterSTOPMode(Regulator,\n         STOPEntry) function with:\n\n         (++) Regulator:\n          (+++) PWR_MAINREGULATOR_ON: Main regulator ON.\n          (+++) PWR_LOWPOWERREGULATOR_ON: Low Power regulator ON.\n\n         (++) STOPEntry:\n          (+++) PWR_STOPENTRY_WFI: enter STOP mode with WFI instruction.\n          (+++) PWR_STOPENTRY_WFE: enter STOP mode with WFE instruction.\n\n      (+) Exit:\n         Any EXTI Line (Internal or External) configured in Interrupt/Event mode.\n\n   *** STANDBY mode ***\n   ====================\n    [..]\n    (+)\n      The system STANDBY mode allows to achieve the lowest power consumption.\n      It is based on the Cortex-Mx deep SLEEP mode, with the voltage regulator\n      disabled. The system is consequently powered off. The PLL, the HSI\n      oscillator and the HSE oscillator are also switched off. SRAM and register\n      contents are lost except for the RTC registers, RTC backup registers,\n      backup SRAM and standby circuitry.\n\n    [..]\n      The voltage regulator is OFF.\n\n      (++) Entry:\n        (+++) The STANDBY mode is entered using the HAL_PWR_EnterSTANDBYMode()\n              function.\n\n      (++) Exit:\n        (+++) WKUP pin rising or falling edge, RTC alarm (Alarm A and Alarm B),\n              RTC wakeup, tamper event, time stamp event, external reset in NRST\n              pin, IWDG reset.\n\n   *** Auto-wakeup (AWU) from low-power mode ***\n   =============================================\n    [..]\n     (+) The MCU can be woken up from low-power mode by an RTC Alarm event, an\n         RTC Wakeup event, a tamper event or a time-stamp event, without\n         depending on an external interrupt (Auto-wakeup mode).\n\n     (+) RTC auto-wakeup (AWU) from the STOP and STANDBY modes\n\n       (++) To wake up from the STOP mode with an RTC alarm event, it is\n            necessary to configure the RTC to generate the RTC alarm using the\n            HAL_RTC_SetAlarm_IT() function.\n\n       (++) To wake up from the STOP mode with an RTC Tamper or time stamp event,\n            it is necessary to configure the RTC to detect the tamper or time\n            stamp event using the HAL_RTCEx_SetTimeStamp_IT() or\n            HAL_RTCEx_SetTamper_IT() functions.\n\n       (++) To wake up from the STOP mode with an RTC WakeUp event, it is\n            necessary to configure the RTC to generate the RTC WakeUp event\n            using the HAL_RTCEx_SetWakeUpTimer_IT() function.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Configure the event mode and the voltage threshold detected by the\n  *         Programmable Voltage Detector(PVD).\n  * @param  sConfigPVD : Pointer to an PWR_PVDTypeDef structure that contains\n  *                      the configuration information for the PVD.\n  * @note   Refer to the electrical characteristics of your device datasheet for\n  *         more details about the voltage threshold corresponding to each\n  *         detection level.\n  * @note   For dual core devices, please ensure to configure the EXTI lines for\n  *         the different Cortex-Mx through PWR_Exported_Macro provided by this\n  *         driver. All combination are allowed: wake up only Cortex-M7, wake up\n  *         only Cortex-M4 or wake up Cortex-M7 and Cortex-M4.\n  * @retval None.\n  */\nvoid HAL_PWR_ConfigPVD (PWR_PVDTypeDef *sConfigPVD)\n{\n  /* Check the PVD configuration parameter */\n  if (sConfigPVD == NULL)\n  {\n    return;\n  }\n\n  /* Check the parameters */\n  assert_param (IS_PWR_PVD_LEVEL (sConfigPVD->PVDLevel));\n  assert_param (IS_PWR_PVD_MODE (sConfigPVD->Mode));\n\n  /* Set PLS[7:5] bits according to PVDLevel value */\n  MODIFY_REG (PWR->CR1, PWR_CR1_PLS, sConfigPVD->PVDLevel);\n\n  /* Clear previous config */\n#if !defined (DUAL_CORE)\n  __HAL_PWR_PVD_EXTI_DISABLE_EVENT ();\n  __HAL_PWR_PVD_EXTI_DISABLE_IT ();\n#endif /* !defined (DUAL_CORE) */\n\n  __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE ();\n  __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE ();\n\n#if !defined (DUAL_CORE)\n  /* Interrupt mode configuration */\n  if ((sConfigPVD->Mode & PVD_MODE_IT) == PVD_MODE_IT)\n  {\n    __HAL_PWR_PVD_EXTI_ENABLE_IT ();\n  }\n\n  /* Event mode configuration */\n  if ((sConfigPVD->Mode & PVD_MODE_EVT) == PVD_MODE_EVT)\n  {\n    __HAL_PWR_PVD_EXTI_ENABLE_EVENT ();\n  }\n#endif /* !defined (DUAL_CORE) */\n\n  /* Rising edge configuration */\n  if ((sConfigPVD->Mode & PVD_RISING_EDGE) == PVD_RISING_EDGE)\n  {\n    __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE ();\n  }\n\n  /* Falling edge configuration */\n  if ((sConfigPVD->Mode & PVD_FALLING_EDGE) == PVD_FALLING_EDGE)\n  {\n    __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE ();\n  }\n}\n\n/**\n  * @brief Enable the Programmable Voltage Detector (PVD).\n  * @retval None.\n  */\nvoid HAL_PWR_EnablePVD (void)\n{\n  /* Enable the power voltage detector */\n  SET_BIT (PWR->CR1, PWR_CR1_PVDEN);\n}\n\n/**\n  * @brief Disable the Programmable Voltage Detector (PVD).\n  * @retval None.\n  */\nvoid HAL_PWR_DisablePVD (void)\n{\n  /* Disable the power voltage detector */\n  CLEAR_BIT (PWR->CR1, PWR_CR1_PVDEN);\n}\n\n/**\n  * @brief  Enable the WakeUp PINx functionality.\n  * @param  WakeUpPinPolarity : Specifies which Wake-Up pin to enable.\n  *          This parameter can be one of the following legacy values, which\n  *          sets the default (rising edge):\n  *            @arg PWR_WAKEUP_PIN1, PWR_WAKEUP_PIN2, PWR_WAKEUP_PIN3,\n  *                 PWR_WAKEUP_PIN4, PWR_WAKEUP_PIN5, PWR_WAKEUP_PIN6.\n  *          or one of the following values where the user can explicitly states\n  *          the enabled pin and the chosen polarity:\n  *            @arg PWR_WAKEUP_PIN1_HIGH, PWR_WAKEUP_PIN1_LOW,\n  *                 PWR_WAKEUP_PIN2_HIGH, PWR_WAKEUP_PIN2_LOW,\n  *                 PWR_WAKEUP_PIN3_HIGH, PWR_WAKEUP_PIN3_LOW,\n  *                 PWR_WAKEUP_PIN4_HIGH, PWR_WAKEUP_PIN4_LOW,\n  *                 PWR_WAKEUP_PIN5_HIGH, PWR_WAKEUP_PIN5_LOW,\n  *                 PWR_WAKEUP_PIN6_HIGH, PWR_WAKEUP_PIN6_LOW.\n  * @note   PWR_WAKEUP_PINx and PWR_WAKEUP_PINx_HIGH are equivalent.\n  * @note   The PWR_WAKEUP_PIN3_HIGH, PWR_WAKEUP_PIN3_LOW, PWR_WAKEUP_PIN5_HIGH\n  *         and PWR_WAKEUP_PIN5_LOW are available only for devices that includes\n  *         GPIOI port.\n  * @retval None.\n  */\nvoid HAL_PWR_EnableWakeUpPin (uint32_t WakeUpPinPolarity)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_WAKEUP_PIN (WakeUpPinPolarity));\n\n  /*\n     Enable and Specify the Wake-Up pin polarity and the pull configuration\n     for the event detection (rising or falling edge).\n  */\n  MODIFY_REG (PWR->WKUPEPR, PWR_EWUP_MASK, WakeUpPinPolarity);\n}\n\n/**\n  * @brief  Disable the WakeUp PINx functionality.\n  * @param  WakeUpPinx : Specifies the Power Wake-Up pin to disable.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_WAKEUP_PIN1, PWR_WAKEUP_PIN2, PWR_WAKEUP_PIN3,\n  *                 PWR_WAKEUP_PIN4, PWR_WAKEUP_PIN5, PWR_WAKEUP_PIN6,\n  *                 PWR_WAKEUP_PIN1_HIGH, PWR_WAKEUP_PIN1_LOW,\n  *                 PWR_WAKEUP_PIN2_HIGH, PWR_WAKEUP_PIN2_LOW,\n  *                 PWR_WAKEUP_PIN3_HIGH, PWR_WAKEUP_PIN3_LOW,\n  *                 PWR_WAKEUP_PIN4_HIGH, PWR_WAKEUP_PIN4_LOW,\n  *                 PWR_WAKEUP_PIN5_HIGH, PWR_WAKEUP_PIN5_LOW,\n  *                 PWR_WAKEUP_PIN6_HIGH, PWR_WAKEUP_PIN6_LOW.\n  * @note   The PWR_WAKEUP_PIN3_HIGH, PWR_WAKEUP_PIN3_LOW, PWR_WAKEUP_PIN5_HIGH\n  *         and PWR_WAKEUP_PIN5_LOW are available only for devices that includes\n  *         GPIOI port.\n  * @retval None.\n  */\nvoid HAL_PWR_DisableWakeUpPin (uint32_t WakeUpPinx)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_WAKEUP_PIN (WakeUpPinx));\n\n  /* Disable the wake up pin selected */\n  CLEAR_BIT (PWR->WKUPEPR, (PWR_WKUPEPR_WKUPEN & WakeUpPinx));\n}\n\n/**\n  * @brief  Enter the current core in SLEEP mode (CSLEEP).\n  * @param  Regulator : Specifies the regulator state in SLEEP mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_MAINREGULATOR_ON     : SLEEP mode with regulator ON.\n  *            @arg PWR_LOWPOWERREGULATOR_ON : SLEEP mode with low power\n  *                                           regulator ON.\n  * @note   This parameter is not used for the STM32H7 family and is kept as\n  *         parameter just to maintain compatibility with the lower power\n  *         families.\n  * @param  SLEEPEntry : Specifies if SLEEP mode is entered with WFI or WFE\n  *                      intrinsic instruction.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_SLEEPENTRY_WFI : enter SLEEP mode with WFI instruction.\n  *            @arg PWR_SLEEPENTRY_WFE : enter SLEEP mode with WFE instruction.\n  * @note   Ensure to clear pending events before calling this API through\n  *         HAL_PWREx_ClearPendingEvent() when the SLEEP entry is WFE.\n  * @retval None.\n  */\nvoid HAL_PWR_EnterSLEEPMode (uint32_t Regulator, uint8_t SLEEPEntry)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_REGULATOR (Regulator));\n  assert_param (IS_PWR_SLEEP_ENTRY (SLEEPEntry));\n\n  /* Clear SLEEPDEEP bit of Cortex System Control Register */\n  CLEAR_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n  /* Select SLEEP mode entry */\n  if (SLEEPEntry == PWR_SLEEPENTRY_WFI)\n  {\n    /* Request Wait For Interrupt */\n    __WFI ();\n  }\n  else\n  {\n    /* Request Wait For Event */\n    __WFE ();\n  }\n}\n\n/**\n  * @brief  Enter STOP mode.\n  * @note   For single core devices, this API will enter the system in STOP mode\n  *         with all domains in DSTOP, if RUN_D3/RUN_SRD bit in CPUCR register is\n  *         cleared.\n  *         For dual core devices, this API will enter the domain (containing\n  *         Cortex-Mx that executing this function) in DSTOP mode. If all\n  *         Cortex-Mx domains are in DSTOP and RUN_D3 bit in CPUCR register is\n  *         cleared, all the system will enter in STOP mode.\n  * @param  Regulator : Specifies the regulator state in STOP mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_MAINREGULATOR_ON     : STOP mode with regulator ON.\n  *            @arg PWR_LOWPOWERREGULATOR_ON : STOP mode with low power\n  *                                            regulator ON.\n  * @param  STOPEntry : Specifies if STOP mode in entered with WFI or WFE\n  *                     intrinsic instruction.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_STOPENTRY_WFI : Enter STOP mode with WFI instruction.\n  *            @arg PWR_STOPENTRY_WFE : Enter STOP mode with WFE instruction.\n  * @note   In System STOP mode, all I/O pins keep the same state as in Run mode.\n  * @note   When exiting System STOP mode by issuing an interrupt or a wakeup\n  *         event, the HSI RC oscillator is selected as default system wakeup\n  *         clock.\n  * @note   In System STOP mode, when the voltage regulator operates in low\n  *         power mode, an additional startup delay is incurred when the system\n  *         is waking up. By keeping the internal regulator ON during STOP mode,\n  *         the consumption is higher although the startup time is reduced.\n  * @retval None.\n  */\nvoid HAL_PWR_EnterSTOPMode (uint32_t Regulator, uint8_t STOPEntry)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_REGULATOR (Regulator));\n  assert_param (IS_PWR_STOP_ENTRY (STOPEntry));\n\n  /* Select the regulator state in STOP mode */\n  MODIFY_REG (PWR->CR1, PWR_CR1_LPDS, Regulator);\n\n  /* Configure the PWR mode for the different Domains */\n#if defined (DUAL_CORE)\n  /* Check CPU ID */\n  if (HAL_GetCurrentCPUID () == CM7_CPUID)\n  {\n    /* Keep DSTOP mode when Cortex-M7 enters DEEP-SLEEP */\n    CLEAR_BIT (PWR->CPUCR, (PWR_CPUCR_PDDS_D1 | PWR_CPUCR_PDDS_D3));\n  }\n  else\n  {\n    /* Keep DSTOP mode when Cortex-M4 enters DEEP-SLEEP */\n    CLEAR_BIT (PWR->CPUCR, (PWR_CPUCR_PDDS_D2 | PWR_CPUCR_PDDS_D3));\n  }\n#else /* Single core devices */\n  /* Keep DSTOP mode when Cortex-M7 enter in DEEP-SLEEP */\n  CLEAR_BIT (PWR->CPUCR, (PWR_CPUCR_PDDS_D1 | PWR_CPUCR_PDDS_D3));\n\n#if defined (PWR_CPUCR_PDDS_D2)\n  /* Keep DSTOP mode when Cortex-M7 enter in DEEP-SLEEP */\n  CLEAR_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_D2);\n#endif /* PWR_CPUCR_PDDS_D2 */\n#endif /* defined (DUAL_CORE) */\n\n  /* Set SLEEPDEEP bit of Cortex System Control Register */\n  SET_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n  /* Ensure that all instructions are done before entering STOP mode */\n  __DSB ();\n  __ISB ();\n\n  /* Select STOP mode entry */\n  if (STOPEntry == PWR_STOPENTRY_WFI)\n  {\n    /* Request Wait For Interrupt */\n    __WFI ();\n  }\n  else\n  {\n    /* Request Wait For Event */\n    __WFE ();\n  }\n\n  /* Clear SLEEPDEEP bit of Cortex-Mx in the System Control Register */\n  CLEAR_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n}\n\n/**\n  * @brief  Enter STANDBY mode.\n  * @note   For single core devices, this API will enter the system in STANDBY\n  *         mode with all domains in DSTANDBY, if RUN_D3/RUN_SRD bit in CPUCR\n  *         register is cleared.\n  *         For dual core devices, this API will enter the domain (containing\n  *         Cortex-Mx that executing this function) in DSTANDBY mode. If all\n  *         Cortex-Mx domains are in DSTANDBY and RUN_D3 bit in CPUCR register\n  *         is cleared, all the system will enter in STANDBY mode.\n  * @note   The system enters Standby mode only when all domains are in DSTANDBY.\n  * @note   When the System exit STANDBY mode by issuing an interrupt or a\n  *         wakeup event, the HSI RC oscillator is selected as system clock.\n  * @note   It is recommended to disable all regulators before entring STANDBY\n  *         mode for power consumption saving purpose.\n  * @retval None.\n  */\nvoid HAL_PWR_EnterSTANDBYMode (void)\n{\n  /* Configure the PWR mode for the different Domains */\n#if defined (DUAL_CORE)\n  /* Check CPU ID */\n  if (HAL_GetCurrentCPUID () == CM7_CPUID)\n  {\n    /* Enter DSTANDBY mode when Cortex-M7 enters DEEP-SLEEP */\n    SET_BIT (PWR->CPUCR, (PWR_CPUCR_PDDS_D1 | PWR_CPUCR_PDDS_D3));\n    SET_BIT (PWR->CPU2CR, (PWR_CPU2CR_PDDS_D1 | PWR_CPU2CR_PDDS_D3));\n  }\n  else\n  {\n    /* Enter DSTANDBY mode when Cortex-M4 enters DEEP-SLEEP */\n    SET_BIT (PWR->CPUCR, (PWR_CPUCR_PDDS_D2 | PWR_CPUCR_PDDS_D3));\n    SET_BIT (PWR->CPU2CR, (PWR_CPU2CR_PDDS_D2 | PWR_CPU2CR_PDDS_D3));\n  }\n#else /* Single core devices */\n  /* Enter DSTANDBY mode when Cortex-M7 enters DEEP-SLEEP */\n  SET_BIT (PWR->CPUCR, (PWR_CPUCR_PDDS_D1 | PWR_CPUCR_PDDS_D3));\n\n#if defined (PWR_CPUCR_PDDS_D2)\n  /* Enter DSTANDBY mode when Cortex-M7 enters DEEP-SLEEP */\n  SET_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_D2);\n#endif /* PWR_CPUCR_PDDS_D2 */\n#endif /* defined (DUAL_CORE) */\n\n  /* Set SLEEPDEEP bit of Cortex System Control Register */\n  SET_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n  /* Ensure that all instructions are done before entering STOP mode */\n  __DSB ();\n  __ISB ();\n\n  /* This option is used to ensure that store operations are completed */\n#if defined (__CC_ARM)\n  __force_stores();\n#endif /* defined (__CC_ARM) */\n\n  /* Request Wait For Interrupt */\n  __WFI ();\n}\n\n/**\n  * @brief  Indicate Sleep-On-Exit feature when returning from Handler mode to\n  *         Thread mode.\n  * @note   Set SLEEPONEXIT bit of SCR register. When this bit is set, the\n  *         processor re-enters SLEEP mode when an interruption handling is over.\n  *         Setting this bit is useful when the processor is expected to run\n  *         only on interruptions handling.\n  * @retval None.\n  */\nvoid HAL_PWR_EnableSleepOnExit (void)\n{\n  /* Set SLEEPONEXIT bit of Cortex-Mx System Control Register */\n  SET_BIT (SCB->SCR, SCB_SCR_SLEEPONEXIT_Msk);\n}\n\n/**\n  * @brief  Disable Sleep-On-Exit feature when returning from Handler mode to\n  *         Thread mode.\n  * @note   Clears SLEEPONEXIT bit of SCR register. When this bit is set, the\n  *         processor re-enters SLEEP mode when an interruption handling is over.\n  * @retval None\n  */\nvoid HAL_PWR_DisableSleepOnExit (void)\n{\n  /* Clear SLEEPONEXIT bit of Cortex-Mx System Control Register */\n  CLEAR_BIT (SCB->SCR, SCB_SCR_SLEEPONEXIT_Msk);\n}\n\n/**\n  * @brief  Enable CORTEX SEVONPEND feature.\n  * @note   Sets SEVONPEND bit of SCR register. When this bit is set, any\n  *         pending event / interrupt even if it's disabled or has insufficient\n  *         priority to cause exception entry wakes up the Cortex-Mx.\n  * @retval None.\n  */\nvoid HAL_PWR_EnableSEVOnPend (void)\n{\n  /* Set SEVONPEND bit of Cortex-Mx System Control Register */\n  SET_BIT (SCB->SCR, SCB_SCR_SEVONPEND_Msk);\n}\n\n/**\n  * @brief  Disable CORTEX SEVONPEND feature.\n  * @note   Resets SEVONPEND bit of SCR register. When this bit is reset, only\n  *         enabled pending causes exception entry wakes up the Cortex-Mx.\n  * @retval None.\n  */\nvoid HAL_PWR_DisableSEVOnPend (void)\n{\n  /* Clear SEVONPEND bit of Cortex System Control Register */\n  CLEAR_BIT (SCB->SCR, SCB_SCR_SEVONPEND_Msk);\n}\n/**\n  * @}\n  */\n\n/** @defgroup PWR_Exported_Functions_Group3 Interrupt Handling Functions\n  *  @brief   Interrupt Handling functions\n  *\n@verbatim\n ===============================================================================\n                    ##### Interrupt Handling Functions #####\n ===============================================================================\n    [..]\n    This section provides functions allowing to handle the PVD pending\n    interrupts.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  This function handles the PWR PVD interrupt request.\n  * @note   This API should be called under the PVD_AVD_IRQHandler().\n  * @retval None.\n  */\nvoid HAL_PWR_PVD_IRQHandler (void)\n{\n#if defined (DUAL_CORE)\n  /* Check Cortex-Mx ID */\n  if (HAL_GetCurrentCPUID () == CM7_CPUID)\n  {\n    /* Check PWR EXTI D1 flag */\n    if(__HAL_PWR_PVD_EXTI_GET_FLAG () != 0U)\n    {\n      /* Clear PWR EXTI D1 pending bit */\n      __HAL_PWR_PVD_EXTI_CLEAR_FLAG ();\n\n      /* PWR PVD interrupt user callback */\n      HAL_PWR_PVDCallback ();\n    }\n  }\n  else\n  {\n    /* Check PWR EXTI D2 flag */\n    if (__HAL_PWR_PVD_EXTID2_GET_FLAG () != 0U)\n    {\n      /* Clear PWR EXTI D2 pending bit */\n      __HAL_PWR_PVD_EXTID2_CLEAR_FLAG ();\n\n      /* PWR PVD interrupt user callback */\n      HAL_PWR_PVDCallback ();\n    }\n  }\n#else /* Single core devices */\n  /* PVD EXTI line interrupt detected */\n  if (__HAL_PWR_PVD_EXTI_GET_FLAG () != 0U)\n  {\n    /* Clear PWR EXTI pending bit */\n    __HAL_PWR_PVD_EXTI_CLEAR_FLAG ();\n\n    /* PWR PVD interrupt user callback */\n    HAL_PWR_PVDCallback ();\n  }\n#endif /* defined (DUAL_CORE) */\n}\n\n/**\n  * @brief  PWR PVD interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWR_PVDCallback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWR_PVDCallback can be implemented in the user file\n  */\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#endif /* HAL_PWR_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_pwr_ex.c\n  * @author  MCD Application Team\n  * @brief   Extended PWR HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of PWR extension peripheral:\n  *           + Peripheral Extended features functions\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                        ##### How to use this driver #####\n  ==============================================================================\n  [..]\n   (#) Call HAL_PWREx_ConfigSupply() function to configure the regulator supply\n       with the following different setups according to hardware (support SMPS):\n       (+) PWR_DIRECT_SMPS_SUPPLY\n       (+) PWR_SMPS_1V8_SUPPLIES_LDO\n       (+) PWR_SMPS_2V5_SUPPLIES_LDO\n       (+) PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO\n       (+) PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO\n       (+) PWR_SMPS_1V8_SUPPLIES_EXT\n       (+) PWR_SMPS_2V5_SUPPLIES_EXT\n       (+) PWR_LDO_SUPPLY\n       (+) PWR_EXTERNAL_SOURCE_SUPPLY\n\n   (#) Call HAL_PWREx_GetSupplyConfig() function to get the current supply setup.\n\n   (#) Call HAL_PWREx_ControlVoltageScaling() function to configure the main\n       internal regulator output voltage. The voltage scaling could be one of\n       the following scales :\n       (+) PWR_REGULATOR_VOLTAGE_SCALE0\n       (+) PWR_REGULATOR_VOLTAGE_SCALE1\n       (+) PWR_REGULATOR_VOLTAGE_SCALE2\n       (+) PWR_REGULATOR_VOLTAGE_SCALE3\n\n   (#) Call HAL_PWREx_GetVoltageRange() function to get the current output\n       voltage applied to the main regulator.\n\n   (#) Call HAL_PWREx_ControlStopModeVoltageScaling() function to configure the\n       main internal regulator output voltage in STOP mode. The voltage scaling\n       in STOP mode could be one of the following scales :\n       (+) PWR_REGULATOR_SVOS_SCALE3\n       (+) PWR_REGULATOR_SVOS_SCALE4\n       (+) PWR_REGULATOR_SVOS_SCALE5\n\n   (#) Call HAL_PWREx_GetStopModeVoltageRange() function to get the current\n       output voltage applied to the main regulator in STOP mode.\n\n   (#) Call HAL_PWREx_EnterSTOP2Mode() function to enter the system in STOP mode\n       with core domain in D2STOP mode. This API is used only for STM32H7Axxx\n       and STM32H7Bxxx devices.\n       Please ensure to clear all CPU pending events by calling\n       HAL_PWREx_ClearPendingEvent() function when trying to enter the Cortex-Mx\n       in DEEP-SLEEP mode with __WFE() entry.\n\n   (#) Call HAL_PWREx_EnterSTOPMode() function to enter the selected domain in\n       DSTOP mode. Call this API with all available power domains to enter the\n       system in STOP mode.\n       Please ensure to clear all CPU pending events by calling\n       HAL_PWREx_ClearPendingEvent() function when trying to enter the Cortex-Mx\n       in DEEP-SLEEP mode with __WFE() entry.\n\n   (#) Call HAL_PWREx_ClearPendingEvent() function always before entring the\n       Cortex-Mx in any low power mode (SLEEP/DEEP-SLEEP) using WFE entry.\n\n   (#) Call HAL_PWREx_EnterSTANDBYMode() function to enter the selected domain\n       in DSTANDBY mode. Call this API with all available power domains to enter\n       the system in STANDBY mode.\n\n   (#) Call HAL_PWREx_ConfigD3Domain() function to setup the D3/SRD domain state\n       (RUN/STOP) when the system enter to low power mode.\n\n   (#) Call HAL_PWREx_ClearDomainFlags() function to clear the CPU flags for the\n       selected power domain. This API is used only for dual core devices.\n\n   (#) Call HAL_PWREx_HoldCore() and HAL_PWREx_ReleaseCore() functions to hold\n       and release the selected CPU and and their domain peripherals when\n       exiting STOP mode. These APIs are used only for dual core devices.\n\n   (#) Call HAL_PWREx_EnableFlashPowerDown() and\n       HAL_PWREx_DisableFlashPowerDown() functions to enable and disable the\n       Flash Power Down in STOP mode.\n\n   (#) Call HAL_PWREx_EnableMemoryShutOff() and\n       HAL_PWREx_DisableMemoryShutOff() functions to enable and disable the\n       memory block shut-off in DStop or DStop2. These APIs are used only for\n       STM32H7Axxx and STM32H7Bxxx lines.\n\n   (#) Call HAL_PWREx_EnableWakeUpPin() and HAL_PWREx_DisableWakeUpPin()\n       functions to enable and disable the Wake-up pin functionality for\n       the selected pin.\n\n   (#) Call HAL_PWREx_GetWakeupFlag() and HAL_PWREx_ClearWakeupFlag()\n       functions to manage wake-up flag for the selected pin.\n\n   (#) Call HAL_PWREx_WAKEUP_PIN_IRQHandler() function to handle all wake-up\n       pins interrupts.\n\n   (#) Call HAL_PWREx_EnableBkUpReg() and HAL_PWREx_DisableBkUpReg() functions\n       to enable and disable the backup domain regulator.\n\n   (#) Call HAL_PWREx_EnableUSBReg(), HAL_PWREx_DisableUSBReg(),\n       HAL_PWREx_EnableUSBVoltageDetector() and\n       HAL_PWREx_DisableUSBVoltageDetector() functions to manage USB power\n       regulation functionalities.\n\n   (#) Call HAL_PWREx_EnableBatteryCharging() and\n       HAL_PWREx_DisableBatteryCharging() functions to enable and disable the\n       battery charging feature with the selected resistor.\n\n   (#) Call HAL_PWREx_EnableAnalogBooster() and\n       HAL_PWREx_DisableAnalogBooster() functions to enable and disable the\n       AVD boost feature when the VDD supply voltage is below 2V7.\n\n   (#) Call HAL_PWREx_EnableMonitoring() and HAL_PWREx_DisableMonitoring()\n       functions to enable and disable the VBAT and Temperature monitoring.\n       When VBAT and Temperature monitoring feature is enables, use\n       HAL_PWREx_GetTemperatureLevel() and HAL_PWREx_GetVBATLevel() to get\n       respectively the Temperature level and VBAT level.\n\n   (#) Call HAL_PWREx_GetMMCVoltage() and HAL_PWREx_DisableMonitoring()\n       function to get VDDMMC voltage level. This API is used only for\n       STM32H7Axxx and STM32H7Bxxx lines\n\n   (#) Call HAL_PWREx_ConfigAVD() after setting parameter to be configured\n       (event mode and voltage threshold) in order to set up the Analog Voltage\n       Detector then use HAL_PWREx_EnableAVD() and  HAL_PWREx_DisableAVD()\n       functions to start and stop the AVD detection.\n       (+) AVD level could be one of the following values :\n             (++) 1V7\n             (++) 2V1\n             (++) 2V5\n             (++) 2V8\n\n   (#) Call HAL_PWREx_PVD_AVD_IRQHandler() function to handle the PWR PVD and\n       AVD interrupt request.\n\n  @endverbatim\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup PWREx PWREx\n  * @brief PWR Extended HAL module driver\n  * @{\n  */\n\n#ifdef HAL_PWR_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n\n/** @addtogroup PWREx_Private_Constants\n  * @{\n  */\n\n/** @defgroup PWREx_AVD_Mode_Mask PWR Extended AVD Mode Mask\n  * @{\n  */\n#define AVD_MODE_IT              (0x00010000U)\n#define AVD_MODE_EVT             (0x00020000U)\n#define AVD_RISING_EDGE          (0x00000001U)\n#define AVD_FALLING_EDGE         (0x00000002U)\n#define AVD_RISING_FALLING_EDGE  (0x00000003U)\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_REG_SET_TIMEOUT PWR Extended Flag Setting Time Out Value\n  * @{\n  */\n#define PWR_FLAG_SETTING_DELAY   (1000U)\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_WakeUp_Pins_Offsets PWREx Wake-Up Pins masks and offsets\n  * @{\n  */\n/* Wake-Up Pins EXTI register mask */\n#if defined (EXTI_IMR2_IM57)\n#define PWR_EXTI_WAKEUP_PINS_MASK  (EXTI_IMR2_IM55 | EXTI_IMR2_IM56 |\\\n                                    EXTI_IMR2_IM57 | EXTI_IMR2_IM58 |\\\n                                    EXTI_IMR2_IM59 | EXTI_IMR2_IM60)\n#else\n#define PWR_EXTI_WAKEUP_PINS_MASK  (EXTI_IMR2_IM55 | EXTI_IMR2_IM56 |\\\n                                    EXTI_IMR2_IM58 | EXTI_IMR2_IM60)\n#endif /* defined (EXTI_IMR2_IM57) */\n\n/* Wake-Up Pins PWR Pin Pull shift offsets */\n#define PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET (2U)\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private macro -------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/* Private functions ---------------------------------------------------------*/\n/* Exported types ------------------------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup PWREx_Exported_Functions PWREx Exported Functions\n  * @{\n  */\n\n/** @defgroup PWREx_Exported_Functions_Group1 Power Supply Control Functions\n  * @brief    Power supply control functions\n  *\n@verbatim\n ===============================================================================\n                  ##### Power supply control functions #####\n ===============================================================================\n    [..]\n   (#) When the system is powered on, the POR monitors VDD supply. Once VDD is\n       above the POR threshold level, the voltage regulator is enabled in the\n       default supply configuration:\n      (+) The Voltage converter output level is set at 1V0 in accordance with\n          the VOS3 level configured in PWR (D3/SRD) domain control register\n          (PWR_D3CR/PWR_SRDCR).\n      (+) The system is kept in reset mode as long as VCORE is not ok.\n      (+) Once VCORE is ok, the system is taken out of reset and the HSI\n          oscillator is enabled.\n      (+) Once the oscillator is stable, the system is initialized: Flash memory\n          and option bytes are loaded and the CPU starts in Run* mode.\n      (+) The software shall then initialize the system including supply\n          configuration programming using the HAL_PWREx_ConfigSupply().\n      (+) Once the supply configuration has been configured, the\n          HAL_PWREx_ConfigSupply() function checks the ACTVOSRDY bit in PWR\n          control status register 1 (PWR_CSR1) to guarantee a valid voltage\n          levels:\n       (++) As long as ACTVOSRDY indicates that voltage levels are invalid, the\n            system is in limited Run* mode, write accesses to the RAMs are not\n            permitted and VOS shall not be changed.\n       (++) Once ACTVOSRDY indicates that voltage levels are valid, the system\n            is in normal Run mode, write accesses to RAMs are allowed and VOS\n            can be changed.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief Configure the system Power Supply.\n  * @param  SupplySource : Specifies the Power Supply source to set after a\n  *                        system startup.\n  *         This parameter can be one of the following values :\n  *            @arg PWR_DIRECT_SMPS_SUPPLY : The SMPS supplies the Vcore Power\n  *                                          Domains. The LDO is Bypassed.\n  *            @arg PWR_SMPS_1V8_SUPPLIES_LDO : The SMPS 1.8V output supplies\n  *                                             the LDO. The Vcore Power Domains\n  *                                             are supplied from the LDO.\n  *            @arg PWR_SMPS_2V5_SUPPLIES_LDO : The SMPS 2.5V output supplies\n  *                                             the LDO. The Vcore Power Domains\n  *                                             are supplied from the LDO.\n  *            @arg PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO : The SMPS 1.8V output\n  *                                                     supplies external\n  *                                                     circuits and the LDO.\n  *                                                     The Vcore Power Domains\n  *                                                     are supplied from the\n  *                                                     LDO.\n  *            @arg PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO : The SMPS 2.5V output\n  *                                                     supplies external\n  *                                                     circuits and the LDO.\n  *                                                     The Vcore Power Domains\n  *                                                     are supplied from the\n  *                                                     LDO.\n  *            @arg PWR_SMPS_1V8_SUPPLIES_EXT : The SMPS 1.8V output supplies\n  *                                             external circuits. The LDO is\n  *                                             Bypassed. The Vcore Power\n  *                                             Domains are supplied from\n  *                                             external source.\n  *            @arg PWR_SMPS_2V5_SUPPLIES_EXT : The SMPS 2.5V output supplies\n  *                                             external circuits. The LDO is\n  *                                             Bypassed. The Vcore Power\n  *                                             Domains are supplied from\n  *                                             external source.\n  *            @arg PWR_LDO_SUPPLY : The LDO regulator supplies the Vcore Power\n  *                                  Domains. The SMPS regulator is Bypassed.\n  *            @arg PWR_EXTERNAL_SOURCE_SUPPLY : The SMPS and the LDO are\n  *                                              Bypassed. The Vcore Power\n  *                                              Domains are supplied from\n  *                                              external source.\n  * @note   The PWR_LDO_SUPPLY and PWR_EXTERNAL_SOURCE_SUPPLY are used by all\n  *         H7 lines.\n  *         The PWR_DIRECT_SMPS_SUPPLY, PWR_SMPS_1V8_SUPPLIES_LDO,\n  *         PWR_SMPS_2V5_SUPPLIES_LDO, PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO,\n  *         PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO, PWR_SMPS_1V8_SUPPLIES_EXT and\n  *         PWR_SMPS_2V5_SUPPLIES_EXT are used only for lines that supports SMPS\n  *         regulator.\n  * @retval HAL status.\n  */\nHAL_StatusTypeDef HAL_PWREx_ConfigSupply (uint32_t SupplySource)\n{\n  uint32_t tickstart;\n\n  /* Check the parameters */\n  assert_param (IS_PWR_SUPPLY (SupplySource));\n\n  /* Check if supply source was configured */\n#if defined (PWR_FLAG_SCUEN)\n  if (__HAL_PWR_GET_FLAG (PWR_FLAG_SCUEN) == 0U)\n#else\n  if ((PWR->CR3 & (PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)) != (PWR_CR3_SMPSEN | PWR_CR3_LDOEN))\n#endif /* defined (PWR_FLAG_SCUEN) */\n  {\n    /* Check supply configuration */\n    if ((PWR->CR3 & PWR_SUPPLY_CONFIG_MASK) != SupplySource)\n    {\n      /* Supply configuration update locked, can't apply a new supply config */\n      return HAL_ERROR;\n    }\n    else\n    {\n      /* Supply configuration update locked, but new supply configuration\n         matches with old supply configuration : nothing to do\n      */\n      return HAL_OK;\n    }\n  }\n\n  /* Set the power supply configuration */\n  MODIFY_REG (PWR->CR3, PWR_SUPPLY_CONFIG_MASK, SupplySource);\n\n  /* Get tick */\n  tickstart = HAL_GetTick ();\n\n  /* Wait till voltage level flag is set */\n  while (__HAL_PWR_GET_FLAG (PWR_FLAG_ACTVOSRDY) == 0U)\n  {\n    if ((HAL_GetTick () - tickstart) > PWR_FLAG_SETTING_DELAY)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n#if defined (SMPS)\n  /* When the SMPS supplies external circuits verify that SDEXTRDY flag is set */\n  if ((SupplySource == PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO) ||\n      (SupplySource == PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO) ||\n      (SupplySource == PWR_SMPS_1V8_SUPPLIES_EXT)         ||\n      (SupplySource == PWR_SMPS_2V5_SUPPLIES_EXT))\n  {\n    /* Get the current tick number */\n    tickstart = HAL_GetTick ();\n\n    /* Wait till SMPS external supply ready flag is set */\n    while (__HAL_PWR_GET_FLAG (PWR_FLAG_SMPSEXTRDY) == 0U)\n    {\n      if ((HAL_GetTick () - tickstart) > PWR_FLAG_SETTING_DELAY)\n      {\n        return HAL_ERROR;\n      }\n    }\n  }\n#endif /* defined (SMPS) */\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Get the power supply configuration.\n  * @retval The supply configuration.\n  */\nuint32_t HAL_PWREx_GetSupplyConfig (void)\n{\n  return (PWR->CR3 & PWR_SUPPLY_CONFIG_MASK);\n}\n\n/**\n  * @brief Configure the main internal regulator output voltage.\n  * @param  VoltageScaling : Specifies the regulator output voltage to achieve\n  *                          a tradeoff between performance and power\n  *                          consumption.\n  *          This parameter can be one of the following values :\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE0 : Regulator voltage output\n  *                                                Scale 0 mode.\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE1 : Regulator voltage output\n  *                                                range 1 mode.\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE2 : Regulator voltage output\n  *                                                range 2 mode.\n  *            @arg PWR_REGULATOR_VOLTAGE_SCALE3 : Regulator voltage output\n  *                                                range 3 mode.\n  * @note   For STM32H74x and STM32H75x lines, configuring Voltage Scale 0 is\n  *         only possible when Vcore is supplied from LDO (Low DropOut). The\n  *         SYSCFG Clock must be enabled through __HAL_RCC_SYSCFG_CLK_ENABLE()\n  *         macro before configuring Voltage Scale 0.\n  *         To enter low power mode , and if current regulator voltage is\n  *         Voltage Scale 0 then first switch to Voltage Scale 1 before entering\n  *         low power mode.\n  * @retval HAL Status\n  */\nHAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling (uint32_t VoltageScaling)\n{\n  uint32_t tickstart;\n\n  /* Check the parameters */\n  assert_param (IS_PWR_REGULATOR_VOLTAGE (VoltageScaling));\n\n  /* Get the voltage scaling  */\n  if ((PWR->CSR1 & PWR_CSR1_ACTVOS) == VoltageScaling)\n  {\n    /* Old and new voltage scaling configuration match : nothing to do */\n    return HAL_OK;\n  }\n\n#if defined (PWR_SRDCR_VOS)\n  /* Set the voltage range */\n  MODIFY_REG (PWR->SRDCR, PWR_SRDCR_VOS, VoltageScaling);\n#else\n#if defined(SYSCFG_PWRCR_ODEN) /* STM32H74xxx and STM32H75xxx lines */\n  if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE0)\n  {\n    if ((PWR->CR3 & PWR_CR3_LDOEN) == PWR_CR3_LDOEN)\n    {\n      /* Set the voltage range */\n      MODIFY_REG (PWR->D3CR, PWR_D3CR_VOS, PWR_REGULATOR_VOLTAGE_SCALE1);\n\n      /* Get tick */\n      tickstart = HAL_GetTick ();\n\n      /* Wait till voltage level flag is set */\n      while (__HAL_PWR_GET_FLAG (PWR_FLAG_ACTVOSRDY) == 0U)\n      {\n        if ((HAL_GetTick () - tickstart) > PWR_FLAG_SETTING_DELAY)\n        {\n          return HAL_ERROR;\n        }\n      }\n\n      /* Enable the PWR overdrive */\n      SET_BIT (SYSCFG->PWRCR, SYSCFG_PWRCR_ODEN);\n    }\n    else\n    {\n      /* The voltage scale 0 is only possible when LDO regulator is enabled */\n      return HAL_ERROR;\n    }\n  }\n  else\n  {\n    if ((PWR->CSR1 & PWR_CSR1_ACTVOS) == PWR_REGULATOR_VOLTAGE_SCALE1)\n    {\n      if ((SYSCFG->PWRCR & SYSCFG_PWRCR_ODEN) != 0U)\n      {\n        /* Disable the PWR overdrive */\n        CLEAR_BIT(SYSCFG->PWRCR, SYSCFG_PWRCR_ODEN);\n\n        /* Get tick */\n        tickstart = HAL_GetTick ();\n\n        /* Wait till voltage level flag is set */\n        while (__HAL_PWR_GET_FLAG (PWR_FLAG_ACTVOSRDY) == 0U)\n        {\n          if ((HAL_GetTick () - tickstart) > PWR_FLAG_SETTING_DELAY)\n          {\n            return HAL_ERROR;\n          }\n        }\n      }\n    }\n\n    /* Set the voltage range */\n    MODIFY_REG (PWR->D3CR, PWR_D3CR_VOS, VoltageScaling);\n  }\n#else  /* STM32H72xxx and STM32H73xxx lines */\n  /* Set the voltage range */\n  MODIFY_REG(PWR->D3CR, PWR_D3CR_VOS, VoltageScaling);\n#endif /* defined (SYSCFG_PWRCR_ODEN) */\n#endif /* defined (PWR_SRDCR_VOS) */\n\n  /* Get tick */\n  tickstart = HAL_GetTick ();\n\n  /* Wait till voltage level flag is set */\n  while (__HAL_PWR_GET_FLAG (PWR_FLAG_ACTVOSRDY) == 0U)\n  {\n    if ((HAL_GetTick() - tickstart) > PWR_FLAG_SETTING_DELAY)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Get the main internal regulator output voltage. Reflecting the last\n  *        VOS value applied to the PMU.\n  * @retval The current applied VOS selection.\n  */\nuint32_t HAL_PWREx_GetVoltageRange (void)\n{\n  /* Get the active voltage scaling */\n  return (PWR->CSR1 & PWR_CSR1_ACTVOS);\n}\n\n/**\n  * @brief Configure the main internal regulator output voltage in STOP mode.\n  * @param  VoltageScaling : Specifies the regulator output voltage when the\n  *         system enters Stop mode to achieve a tradeoff between performance\n  *         and power consumption.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_REGULATOR_SVOS_SCALE3 : Regulator voltage output range\n  *                                             3 mode.\n  *            @arg PWR_REGULATOR_SVOS_SCALE4 : Regulator voltage output range\n  *                                             4 mode.\n  *            @arg PWR_REGULATOR_SVOS_SCALE5 : Regulator voltage output range\n  *                                             5 mode.\n  * @note   The Stop mode voltage scaling for SVOS4 and SVOS5 sets the voltage\n  *         regulator in Low-power (LP) mode to further reduce power consumption.\n  *         When preselecting SVOS3, the use of the voltage regulator low-power\n  *         mode (LP) can be selected by LPDS register bit.\n  * @note   The selected SVOS4 and SVOS5 levels add an additional startup delay\n  *         when exiting from system Stop mode.\n  * @retval HAL Status.\n  */\nHAL_StatusTypeDef HAL_PWREx_ControlStopModeVoltageScaling (uint32_t VoltageScaling)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_STOP_MODE_REGULATOR_VOLTAGE (VoltageScaling));\n\n  /* Return the stop mode voltage range */\n  MODIFY_REG (PWR->CR1, PWR_CR1_SVOS, VoltageScaling);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Get the main internal regulator output voltage in STOP mode.\n  * @retval The actual applied VOS selection.\n  */\nuint32_t HAL_PWREx_GetStopModeVoltageRange (void)\n{\n  /* Return the stop voltage scaling */\n  return (PWR->CR1 & PWR_CR1_SVOS);\n}\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_Exported_Functions_Group2 Low Power Control Functions\n  * @brief    Low power control functions\n  *\n@verbatim\n ===============================================================================\n                     ##### Low power control functions #####\n ===============================================================================\n\n    *** Domains Low Power modes configuration ***\n    =============================================\n    [..]\n      This section provides the extended low power mode control APIs.\n      The system presents 3 principles domains (D1, D2 and D3) that can be\n      operated in low-power modes (DSTOP or DSTANDBY mode):\n\n      (+) DSTOP mode to enters a domain to STOP mode:\n       (++) D1 domain and/or D2 domain enters DSTOP mode only when the CPU\n            subsystem is in CSTOP mode and has allocated peripheral in the\n            domain.\n            In DSTOP mode the domain bus matrix clock is stopped.\n       (++) The system enters STOP mode using one of the following scenarios:\n        (+++) D1 domain enters DSTANDBY mode (powered off) and D2, D3 domains\n              enter DSTOP mode.\n        (+++) D2 domain enters DSTANDBY mode (powered off) and D1, D3 domains\n              enter DSTOP mode.\n        (+++) D3 domain enters DSTANDBY mode (powered off) and D1, D2 domains\n              enter DSTOP mode.\n        (+++) D1 and D2 domains enter DSTANDBY mode (powered off) and D3 domain\n              enters DSTOP mode.\n        (+++) D1 and D3 domains enter DSTANDBY mode (powered off) and D2 domain\n              enters DSTOP mode.\n        (+++) D2 and D3 domains enter DSTANDBY mode (powered off) and D1 domain\n              enters DSTOP mode.\n        (+++) D1, D2 and D3 domains enter DSTOP mode.\n       (++) When the system enters STOP mode, the clocks are stopped and the\n            regulator is running in main or low power mode.\n       (++) D3 domain can be kept in Run mode regardless of the CPU status when\n            enter STOP mode by using HAL_PWREx_ConfigD3Domain(D3State) function.\n\n      (+) DSTANDBY mode to enters a domain to STANDBY mode:\n       (++) The DSTANDBY mode is entered when the PDDS_Dn bit in PWR CPU control\n            register (PWR_CPUCR) for the Dn domain selects Standby mode.\n       (++) The system enters STANDBY mode only when D1, D2 and D3 domains enter\n            DSTANDBY mode. Consequently the VCORE supply regulator is powered\n            off.\n\n   *** DSTOP mode ***\n   ==================\n    [..]\n      In DStop mode the domain bus matrix clock is stopped.\n      The Flash memory can enter low-power Stop mode when it is enabled through\n      FLPS in PWR_CR1 register. This allows a trade-off between domain DStop\n      restart time and low power consumption.\n    [..]\n      In DStop mode domain peripherals using the LSI or LSE clock and\n      peripherals having a kernel clock request are still able to operate.\n    [..]\n      Before entering DSTOP mode it is recommended to call SCB_CleanDCache\n      function in order to clean the D-Cache and guarantee the data integrity\n      for the SRAM memories.\n\n      (+) Entry:\n         The DSTOP mode is entered using the HAL_PWREx_EnterSTOPMode(Regulator,\n         STOPEntry, Domain) function with:\n         (++) Regulator:\n          (+++) PWR_MAINREGULATOR_ON     : Main regulator ON.\n          (+++) PWR_LOWPOWERREGULATOR_ON : Low Power regulator ON.\n         (++) STOPEntry:\n          (+++) PWR_STOPENTRY_WFI : enter STOP mode with WFI instruction\n          (+++) PWR_STOPENTRY_WFE : enter STOP mode with WFE instruction\n         (++) Domain:\n          (+++) PWR_D1_DOMAIN : Enters D1/CD domain to DSTOP mode.\n          (+++) PWR_D2_DOMAIN : Enters D2 domain to DSTOP mode.\n          (+++) PWR_D3_DOMAIN : Enters D3/SRD domain to DSTOP mode.\n\n      (+) Exit:\n        Any EXTI Line (Internal or External) configured in Interrupt/Event mode.\n\n   *** DSTANDBY mode ***\n   =====================\n    [..]\n      In DStandby mode:\n        (+) The domain bus matrix clock is stopped.\n        (+) The domain is powered down and the domain RAM and register contents\n            are lost.\n    [..]\n      Before entering DSTANDBY mode it is recommended to call SCB_CleanDCache\n      function in order to clean the D-Cache and guarantee the data integrity\n      for the SRAM memories.\n\n      (+) Entry:\n         The DSTANDBY mode is entered using the HAL_PWREx_EnterSTANDBYMode\n         (Domain) function with:\n       (++) Domain:\n        (+++) PWR_D1_DOMAIN : Enters D1/CD domain to DSTANDBY mode.\n        (+++) PWR_D2_DOMAIN : Enters D2 domain to DSTANDBY mode.\n        (+++) PWR_D3_DOMAIN : Enters D3/SRD domain to DSTANDBY mode.\n\n      (+) Exit:\n        WKUP pin rising or falling edge, RTC alarm (Alarm A and Alarm B), RTC\n        wakeup, tamper event, time stamp event, external reset in NRST pin,\n        IWDG reset.\n\n   *** Keep D3/SRD in RUN mode ***\n   ===============================\n    [..]\n      D3/SRD domain can be kept in Run mode regardless of the CPU status when\n      entering STOP mode by using HAL_PWREx_ConfigD3Domain(D3State) function\n      with :\n       (+) D3State:\n        (++) PWR_D3_DOMAIN_STOP : D3/SDR domain follows the CPU sub-system\n                                  mode.\n        (++) PWR_D3_DOMAIN_RUN : D3/SRD domain remains in Run mode regardless\n                                 of CPU subsystem mode.\n\n    *** FLASH Power Down configuration ****\n    =======================================\n    [..]\n      By setting the FLPS bit in the PWR_CR1 register using the\n      HAL_PWREx_EnableFlashPowerDown() function, the Flash memory also enters\n      power down mode when the device enters STOP mode. When the Flash memory is\n      in power down mode, an additional startup delay is incurred when waking up\n      from STOP mode.\n\n    *** Wakeup Pins configuration ****\n    ===================================\n    [..]\n      Wakeup pins allow the system to exit from Standby mode. The configuration\n      of wakeup pins is done with the HAL_PWREx_EnableWakeUpPin(sPinParams)\n      function with:\n       (+) sPinParams: structure to enable and configure a wakeup pin:\n        (++) WakeUpPin: Wakeup pin to be enabled.\n        (++) PinPolarity: Wakeup pin polarity (rising or falling edge).\n        (++) PinPull: Wakeup pin pull (no pull, pull-up or pull-down).\n    [..]\n      The wakeup pins are internally connected to the EXTI lines [55-60] to\n      generate an interrupt if enabled. The EXTI lines configuration is done by\n      the HAL_EXTI_Dx_EventInputConfig() functions defined in the stm32h7xxhal.c\n      file.\n    [..]\n      When a wakeup pin event is received the HAL_PWREx_WAKEUP_PIN_IRQHandler is\n      called and the appropriate flag is set in the PWR_WKUPFR register. Then in\n      the HAL_PWREx_WAKEUP_PIN_IRQHandler function the wakeup pin flag will be\n      cleared and the appropriate user callback will be called. The user can add\n      his own code by customization of function pointer HAL_PWREx_WKUPx_Callback.\n\n@endverbatim\n  * @{\n  */\n\n#if defined (PWR_CPUCR_RETDS_CD)\n/**\n  * @brief Enter the system to STOP mode with main domain in DSTOP2.\n  * @note   In STOP mode, the domain bus matrix clock is stalled.\n  * @note   In STOP mode, memories and registers are maintained and peripherals\n  *         in CPU domain are no longer operational.\n  * @note   All clocks in the VCORE domain are stopped, the PLL, the HSI and the\n  *         HSE oscillators are disabled. Only Peripherals that have wakeup\n  *         capability can switch on the HSI to receive a frame, and switch off\n  *         the HSI after receiving the frame if it is not a wakeup frame. In\n  *         this case the HSI clock is propagated only to the peripheral\n  *         requesting it.\n  * @note   When exiting STOP mode by issuing an interrupt or a wakeup event,\n  *         the HSI RC oscillator is selected as system clock if STOPWUCK bit in\n  *         RCC_CFGR register is set.\n  * @param  Regulator : Specifies the regulator state in STOP mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_MAINREGULATOR_ON     : STOP mode with regulator ON.\n  *            @arg PWR_LOWPOWERREGULATOR_ON : STOP mode with low power\n  *                                            regulator ON.\n  * @param  STOPEntry : Specifies if STOP mode in entered with WFI or WFE\n  *                     intrinsic instruction.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_STOPENTRY_WFI : Enter STOP mode with WFI instruction.\n  *            @arg PWR_STOPENTRY_WFE : Enter STOP mode with WFE instruction.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnterSTOP2Mode (uint32_t Regulator, uint8_t STOPEntry)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_REGULATOR (Regulator));\n  assert_param (IS_PWR_STOP_ENTRY (STOPEntry));\n\n  /* Select the regulator state in Stop mode */\n  MODIFY_REG (PWR->CR1, PWR_CR1_LPDS, Regulator);\n\n  /* Go to DStop2 mode (deep retention) when CPU domain enters Deepsleep */\n  SET_BIT (PWR->CPUCR, PWR_CPUCR_RETDS_CD);\n\n  /* Keep DSTOP mode when SmartRun domain enters Deepsleep */\n  CLEAR_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_SRD);\n\n  /* Set SLEEPDEEP bit of Cortex System Control Register */\n  SET_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n  /* Ensure that all instructions are done before entering STOP mode */\n  __ISB ();\n  __DSB ();\n\n  /* Select Stop mode entry */\n  if (STOPEntry == PWR_STOPENTRY_WFI)\n  {\n    /* Request Wait For Interrupt */\n    __WFI ();\n  }\n  else\n  {\n    /* Request Wait For Event */\n    __WFE ();\n  }\n\n  /* Clear SLEEPDEEP bit of Cortex-Mx in the System Control Register */\n  CLEAR_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n}\n#endif /* defined (PWR_CPUCR_RETDS_CD) */\n\n/**\n  * @brief Enter a Domain to DSTOP mode.\n  * @note   This API gives flexibility to manage independently each domain STOP\n  *         mode. For dual core lines, this API should be executed with the\n  *         corresponding Cortex-Mx to enter domain to DSTOP mode. When it is\n  *         executed by all available Cortex-Mx, the system enter to STOP mode.\n  *         For single core lines, calling this API with domain parameter set to\n  *         PWR_D1_DOMAIN (D1/CD), the whole system will enter in STOP mode\n  *         independently of PWR_CPUCR_PDDS_Dx bits values if RUN_D3 bit in the\n  *         CPUCR_RUN_D3 is cleared.\n  * @note   In DStop mode the domain bus matrix clock is stopped.\n  * @note   The system D3/SRD domain enter Stop mode only when the CPU subsystem\n  *         is in CStop mode, the EXTI wakeup sources are inactive and at least\n  *         one PDDS_Dn bit in PWR CPU control register (PWR_CPUCR) for\n  *         any domain request Stop.\n  * @note   Before entering DSTOP mode it is recommended to call SCB_CleanDCache\n  *         function in order to clean the D-Cache and guarantee the data\n  *         integrity for the SRAM memories.\n  * @note   In System Stop mode, the domain peripherals that use the LSI or LSE\n  *         clock, and the peripherals that have a kernel clock request to\n  *         select HSI or CSI as source, are still able to operate.\n  * @param  Regulator : Specifies the regulator state in STOP mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_MAINREGULATOR_ON     : STOP mode with regulator ON.\n  *            @arg PWR_LOWPOWERREGULATOR_ON : STOP mode with low power\n  *                                            regulator ON.\n  * @param  STOPEntry : Specifies if STOP mode in entered with WFI or WFE\n  *                     intrinsic instruction.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_STOPENTRY_WFI : Enter STOP mode with WFI instruction.\n  *            @arg PWR_STOPENTRY_WFE : Enter STOP mode with WFE instruction.\n  * @param  Domain : Specifies the Domain to enter in DSTOP mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_D1_DOMAIN : Enter D1/CD Domain to DSTOP mode.\n  *            @arg PWR_D2_DOMAIN : Enter D2 Domain to DSTOP mode.\n  *            @arg PWR_D3_DOMAIN : Enter D3/SRD Domain to DSTOP mode.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnterSTOPMode (uint32_t Regulator, uint8_t STOPEntry, uint32_t Domain)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_REGULATOR (Regulator));\n  assert_param (IS_PWR_STOP_ENTRY (STOPEntry));\n  assert_param (IS_PWR_DOMAIN (Domain));\n\n  /* Select the regulator state in Stop mode */\n  MODIFY_REG (PWR->CR1, PWR_CR1_LPDS, Regulator);\n\n  /* Select the domain Power Down DeepSleep */\n  if (Domain == PWR_D1_DOMAIN)\n  {\n#if defined (DUAL_CORE)\n    /* Check current core */\n    if (HAL_GetCurrentCPUID () != CM7_CPUID)\n    {\n      /*\n         When the domain selected and the cortex-mx don't match, entering stop\n         mode will not be performed\n      */\n      return;\n    }\n#endif /* defined (DUAL_CORE) */\n\n    /* Keep DSTOP mode when D1/CD domain enters Deepsleep */\n    CLEAR_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_D1);\n\n    /* Set SLEEPDEEP bit of Cortex System Control Register */\n    SET_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n    /* Ensure that all instructions are done before entering STOP mode */\n    __DSB ();\n    __ISB ();\n\n    /* Select Stop mode entry */\n    if (STOPEntry == PWR_STOPENTRY_WFI)\n    {\n      /* Request Wait For Interrupt */\n      __WFI ();\n    }\n    else\n    {\n      /* Request Wait For Event */\n      __WFE ();\n    }\n\n    /* Clear SLEEPDEEP bit of Cortex-Mx in the System Control Register */\n    CLEAR_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n  }\n#if defined (PWR_CPUCR_PDDS_D2)\n  else if (Domain == PWR_D2_DOMAIN)\n  {\n#if defined (DUAL_CORE)\n    /* Check current core */\n    if (HAL_GetCurrentCPUID () != CM4_CPUID)\n    {\n      /*\n         When the domain selected and the cortex-mx don't match, entering stop\n         mode will not be performed\n      */\n      return;\n    }\n\n    /* Keep DSTOP mode when D2 domain enters Deepsleep */\n    CLEAR_BIT (PWR->CPU2CR, PWR_CPU2CR_PDDS_D2);\n\n    /* Set SLEEPDEEP bit of Cortex System Control Register */\n    SET_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n    /* Ensure that all instructions are done before entering STOP mode */\n    __DSB ();\n    __ISB ();\n\n    /* Select Stop mode entry */\n    if (STOPEntry == PWR_STOPENTRY_WFI)\n    {\n      /* Request Wait For Interrupt */\n      __WFI ();\n    }\n    else\n    {\n      /* Request Wait For Event */\n      __WFE ();\n    }\n\n    /* Clear SLEEPDEEP bit of Cortex-Mx in the System Control Register */\n    CLEAR_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n#else\n    /* Keep DSTOP mode when D2 domain enters Deepsleep */\n    CLEAR_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_D2);\n#endif  /* defined (DUAL_CORE) */\n  }\n#endif /* defined (PWR_CPUCR_PDDS_D2) */\n  else\n  {\n#if defined (DUAL_CORE)\n    /* Check current core */\n    if (HAL_GetCurrentCPUID () == CM7_CPUID)\n    {\n      /* Keep DSTOP mode when D3 domain enters Deepsleep */\n      CLEAR_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_D3);\n    }\n    else\n    {\n      /* Keep DSTOP mode when D3 domain enters Deepsleep */\n      CLEAR_BIT (PWR->CPU2CR, PWR_CPU2CR_PDDS_D3);\n    }\n#else\n    /* Keep DSTOP mode when D3/SRD domain enters Deepsleep */\n    CLEAR_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_D3);\n#endif  /* defined (DUAL_CORE) */\n  }\n}\n\n/**\n  * @brief Clear pending event.\n  * @note   This API clears the pending event in order to enter a given CPU\n  *         to CSLEEP or CSTOP. It should be called just before APIs performing\n  *         enter low power mode using Wait For Event request.\n  * @note   Cortex-M7 must be in CRUN mode when calling this API by Cortex-M4.\n  * @retval None.\n  */\nvoid HAL_PWREx_ClearPendingEvent (void)\n{\n#if defined (DUAL_CORE)\n  /* Check the current Core */\n  if (HAL_GetCurrentCPUID () == CM7_CPUID)\n  {\n    __WFE ();\n  }\n  else\n  {\n    __SEV ();\n    __WFE ();\n  }\n#else\n  __WFE ();\n#endif /* defined (DUAL_CORE) */\n}\n\n/**\n  * @brief Enter a Domain to DSTANDBY mode.\n  * @note   This API gives flexibility to manage independently each domain\n  *         STANDBY mode. For dual core lines, this API should be executed with\n  *         the corresponding Cortex-Mx to enter domain to DSTANDBY mode. When\n  *         it is executed by all available Cortex-Mx, the system enter STANDBY\n  *         mode.\n  *         For single core lines, calling this API with D1/SRD the selected\n  *         domain will enter the whole system in STOP if PWR_CPUCR_PDDS_D3 = 0\n  *         and enter the whole system in STANDBY if PWR_CPUCR_PDDS_D3 = 1.\n  * @note   The DStandby mode is entered when all PDDS_Dn bits in PWR_CPUCR for\n  *         the Dn domain select Standby mode. When the system enters Standby\n  *         mode, the voltage regulator is disabled.\n  * @note   When D2 or D3 domain is in DStandby mode and the CPU sets the\n  *         domain PDDS_Dn bit to select Stop mode, the domain remains in\n  *         DStandby mode. The domain will only exit DStandby when the CPU\n  *         allocates a peripheral in the domain.\n  * @note   The system D3/SRD domain enters Standby mode only when the D1 and D2\n  *         domain are in DStandby.\n  * @note   Before entering DSTANDBY mode it is recommended to call\n  *         SCB_CleanDCache function in order to clean the D-Cache and guarantee\n  *         the data integrity for the SRAM memories.\n  * @param  Domain : Specifies the Domain to enter to STANDBY mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_D1_DOMAIN: Enter D1/CD Domain to DSTANDBY mode.\n  *            @arg PWR_D2_DOMAIN: Enter D2 Domain to DSTANDBY mode.\n  *            @arg PWR_D3_DOMAIN: Enter D3/SRD Domain to DSTANDBY mode.\n  * @retval None\n  */\nvoid HAL_PWREx_EnterSTANDBYMode (uint32_t Domain)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_DOMAIN (Domain));\n\n  /* Select the domain Power Down DeepSleep */\n  if (Domain == PWR_D1_DOMAIN)\n  {\n#if defined (DUAL_CORE)\n    /* Check current core */\n    if (HAL_GetCurrentCPUID () != CM7_CPUID)\n    {\n      /*\n         When the domain selected and the cortex-mx don't match, entering\n         standby mode will not be performed\n      */\n      return;\n    }\n#endif /* defined (DUAL_CORE) */\n\n    /* Allow DSTANDBY mode when D1/CD domain enters Deepsleep */\n    SET_BIT (PWR-> CPUCR, PWR_CPUCR_PDDS_D1);\n\n#if defined (DUAL_CORE)\n    /* Allow DSTANDBY mode when D1/CD domain enters Deepsleep */\n    SET_BIT (PWR-> CPU2CR, PWR_CPU2CR_PDDS_D1);\n#endif /*DUAL_CORE*/\n\n    /* Set SLEEPDEEP bit of Cortex System Control Register */\n    SET_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n    /* This option is used to ensure that store operations are completed */\n#if defined (__CC_ARM)\n    __force_stores ();\n#endif /* defined (__CC_ARM) */\n\n    /* Request Wait For Interrupt */\n    __WFI ();\n  }\n#if defined (PWR_CPUCR_PDDS_D2)\n  else if (Domain == PWR_D2_DOMAIN)\n  {\n    /* Allow DSTANDBY mode when D2 domain enters Deepsleep */\n    SET_BIT (PWR-> CPUCR, PWR_CPUCR_PDDS_D2);\n\n#if defined (DUAL_CORE)\n    /* Check current core */\n    if (HAL_GetCurrentCPUID () != CM4_CPUID)\n    {\n      /*\n         When the domain selected and the cortex-mx don't match, entering\n         standby mode will not be performed\n      */\n      return;\n    }\n\n    /* Allow DSTANDBY mode when D2 domain enters Deepsleep */\n    SET_BIT (PWR-> CPU2CR, PWR_CPU2CR_PDDS_D2);\n\n    /* Set SLEEPDEEP bit of Cortex System Control Register */\n    SET_BIT (SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);\n\n    /* This option is used to ensure that store operations are completed */\n#if defined (__CC_ARM)\n    __force_stores ();\n#endif /* defined (__CC_ARM) */\n\n    /* Request Wait For Interrupt */\n    __WFI ();\n#endif /* defined (DUAL_CORE) */\n  }\n#endif /* defined (PWR_CPUCR_PDDS_D2) */\n  else\n  {\n    /* Allow DSTANDBY mode when D3/SRD domain enters Deepsleep */\n    SET_BIT (PWR->CPUCR, PWR_CPUCR_PDDS_D3);\n\n#if defined (DUAL_CORE)\n    /* Allow DSTANDBY mode when D3/SRD domain enters Deepsleep */\n    SET_BIT (PWR->CPU2CR, PWR_CPU2CR_PDDS_D3);\n#endif /* defined (DUAL_CORE) */\n  }\n}\n\n/**\n  * @brief Configure the D3/SRD Domain state when the System in low power mode.\n  * @param  D3State : Specifies the D3/SRD state.\n  *          This parameter can be one of the following values :\n  *            @arg PWR_D3_DOMAIN_STOP : D3/SRD domain will follow the most deep\n  *                                      CPU sub-system low power mode.\n  *            @arg PWR_D3_DOMAIN_RUN : D3/SRD domain will stay in RUN mode\n  *                                     regardless of the CPU sub-system low\n  *                                     power mode.\n  * @retval None\n  */\nvoid HAL_PWREx_ConfigD3Domain (uint32_t D3State)\n{\n  /* Check the parameter */\n  assert_param (IS_D3_STATE (D3State));\n\n  /* Keep D3/SRD in run mode */\n  MODIFY_REG (PWR->CPUCR, PWR_CPUCR_RUN_D3, D3State);\n}\n\n#if defined (DUAL_CORE)\n/**\n  * @brief Clear HOLD2F, HOLD1F, STOPF, SBF, SBF_D1, and SBF_D2 flags for a\n  *        given domain.\n  * @param  DomainFlags : Specifies the Domain flags to be cleared.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_D1_DOMAIN_FLAGS : Clear D1 Domain flags.\n  *            @arg PWR_D2_DOMAIN_FLAGS : Clear D2 Domain flags.\n  *            @arg PWR_ALL_DOMAIN_FLAGS : Clear D1 and D2 Domain flags.\n  * @retval None.\n  */\nvoid HAL_PWREx_ClearDomainFlags (uint32_t DomainFlags)\n{\n  /* Check the parameter */\n  assert_param (IS_PWR_DOMAIN_FLAG (DomainFlags));\n\n  /* D1 CPU flags */\n  if (DomainFlags == PWR_D1_DOMAIN_FLAGS)\n  {\n    /* Clear D1 domain flags (HOLD2F, STOPF, SBF, SBF_D1, and SBF_D2) */\n    SET_BIT (PWR->CPUCR, PWR_CPUCR_CSSF);\n  }\n  /* D2 CPU flags */\n  else if (DomainFlags == PWR_D2_DOMAIN_FLAGS)\n  {\n    /* Clear D2 domain flags (HOLD1F, STOPF, SBF, SBF_D1, and SBF_D2) */\n    SET_BIT (PWR->CPU2CR, PWR_CPU2CR_CSSF);\n  }\n  else\n  {\n    /* Clear D1 domain flags (HOLD2F, STOPF, SBF, SBF_D1, and SBF_D2) */\n    SET_BIT (PWR->CPUCR, PWR_CPUCR_CSSF);\n    /* Clear D2 domain flags (HOLD1F, STOPF, SBF, SBF_D1, and SBF_D2) */\n    SET_BIT (PWR->CPU2CR, PWR_CPU2CR_CSSF);\n  }\n}\n\n/**\n  * @brief Hold the CPU and their domain peripherals when exiting STOP mode.\n  * @param  CPU : Specifies the core to be held.\n  *         This parameter can be one of the following values:\n  *             @arg PWR_CORE_CPU1: Hold CPU1 and set CPU2 as master.\n  *             @arg PWR_CORE_CPU2: Hold CPU2 and set CPU1 as master.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_PWREx_HoldCore (uint32_t CPU)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param (IS_PWR_CORE (CPU));\n\n  /* Check CPU index */\n  if (CPU == PWR_CORE_CPU2)\n  {\n    /* If CPU1 is not held */\n    if ((PWR->CPU2CR & PWR_CPU2CR_HOLD1) != PWR_CPU2CR_HOLD1)\n    {\n      /* Set HOLD2 bit */\n      SET_BIT (PWR->CPUCR, PWR_CPUCR_HOLD2);\n    }\n    else\n    {\n      status = HAL_ERROR;\n    }\n  }\n  else\n  {\n    /* If CPU2 is not held */\n    if ((PWR->CPUCR & PWR_CPUCR_HOLD2) != PWR_CPUCR_HOLD2)\n    {\n      /* Set HOLD1 bit */\n      SET_BIT (PWR->CPU2CR, PWR_CPU2CR_HOLD1);\n    }\n    else\n    {\n      status = HAL_ERROR;\n    }\n  }\n\n  return status;\n}\n\n/**\n  * @brief Release the CPU and their domain peripherals after a wake-up from\n  *        STOP mode.\n  * @param  CPU: Specifies the core to be released.\n  *         This parameter can be one of the following values:\n  *             @arg  PWR_CORE_CPU1: Release the CPU1 and their domain\n  *                   peripherals from holding.\n  *             @arg  PWR_CORE_CPU2: Release the CPU2 and their domain\n  *                   peripherals from holding.\n  * @retval None\n  */\nvoid HAL_PWREx_ReleaseCore (uint32_t CPU)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_CORE (CPU));\n\n  /* Check CPU index */\n  if (CPU == PWR_CORE_CPU2)\n  {\n    /* Reset HOLD2 bit */\n    CLEAR_BIT (PWR->CPUCR, PWR_CPUCR_HOLD2);\n  }\n  else\n  {\n    /* Reset HOLD1 bit */\n    CLEAR_BIT (PWR->CPU2CR, PWR_CPU2CR_HOLD1);\n  }\n}\n#endif /* defined (DUAL_CORE) */\n\n\n/**\n  * @brief Enable the Flash Power Down in Stop mode.\n  * @note   When Flash Power Down is enabled  the Flash memory enters low-power\n  *         mode when D1/SRD domain is in DStop mode. This feature allows to\n  *         obtain the best trade-off between low-power consumption and restart\n  *         time when exiting from DStop mode.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnableFlashPowerDown (void)\n{\n  /* Enable the Flash Power Down */\n  SET_BIT (PWR->CR1, PWR_CR1_FLPS);\n}\n\n/**\n  * @brief Disable the Flash Power Down in Stop mode.\n  * @note   When Flash Power Down is disabled  the Flash memory is kept on\n  *         normal mode when D1/SRD domain is in DStop mode. This feature allows\n  *         to obtain the best trade-off between low-power consumption and\n  *         restart time when exiting from DStop mode.\n  * @retval None.\n  */\nvoid HAL_PWREx_DisableFlashPowerDown (void)\n{\n  /* Disable the Flash Power Down */\n  CLEAR_BIT (PWR->CR1, PWR_CR1_FLPS);\n}\n\n#if defined (PWR_CR1_SRDRAMSO)\n/**\n  * @brief Enable memory block shut-off in DStop or DStop2 modes\n  * @note   In DStop or DStop2 mode, the content of the memory blocks is\n  *         maintained. Further power optimization can be obtained by switching\n  *         off some memory blocks. This optimization implies loss of the memory\n  *         content. The user can select which memory is discarded during STOP\n  *         mode by means of xxSO bits.\n  * @param  MemoryBlock : Specifies the memory block to shut-off during DStop or\n  *                       DStop2 mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_SRD_AHB_MEMORY_BLOCK : SmartRun domain AHB memory.\n  *            @arg PWR_USB_FDCAN_MEMORY_BLOCK : High-speed interfaces USB and\n  *                                              FDCAN memories.\n  *            @arg PWR_GFXMMU_JPEG_MEMORY_BLOCK : GFXMMU and JPEG memories.\n  *            @arg PWR_TCM_ECM_MEMORY_BLOCK : Instruction TCM and ETM memories.\n  *            @arg PWR_RAM1_AHB_MEMORY_BLOCK : AHB RAM1 memory.\n  *            @arg PWR_RAM2_AHB_MEMORY_BLOCK : AHB RAM2 memory.\n  *            @arg PWR_RAM1_AXI_MEMORY_BLOCK : AXI RAM1 memory.\n  *            @arg PWR_RAM2_AXI_MEMORY_BLOCK : AXI RAM2 memory.\n  *            @arg PWR_RAM3_AXI_MEMORY_BLOCK : AXI RAM3 memory.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnableMemoryShutOff (uint32_t MemoryBlock)\n{\n  /* Check the parameter */\n  assert_param (IS_PWR_MEMORY_BLOCK (MemoryBlock));\n\n  /* Enable memory block shut-off */\n  SET_BIT (PWR->CR1, MemoryBlock);\n}\n\n/**\n  * @brief Disable memory block shut-off in DStop or DStop2 modes\n  * @param  MemoryBlock : Specifies the memory block to keep content during\n  *                       DStop or DStop2 mode.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_SRD_AHB_MEMORY_BLOCK : SmartRun domain AHB memory.\n  *            @arg PWR_USB_FDCAN_MEMORY_BLOCK : High-speed interfaces USB and\n  *                                              FDCAN memories.\n  *            @arg PWR_GFXMMU_JPEG_MEMORY_BLOCK : GFXMMU and JPEG memories.\n  *            @arg PWR_TCM_ECM_MEMORY_BLOCK : Instruction TCM and ETM memories.\n  *            @arg PWR_RAM1_AHB_MEMORY_BLOCK : AHB RAM1 memory.\n  *            @arg PWR_RAM2_AHB_MEMORY_BLOCK : AHB RAM2 memory.\n  *            @arg PWR_RAM1_AXI_MEMORY_BLOCK : AXI RAM1 memory.\n  *            @arg PWR_RAM2_AXI_MEMORY_BLOCK : AXI RAM2 memory.\n  *            @arg PWR_RAM3_AXI_MEMORY_BLOCK : AXI RAM3 memory.\n  * @retval None.\n  */\nvoid HAL_PWREx_DisableMemoryShutOff (uint32_t MemoryBlock)\n{\n  /* Check the parameter */\n  assert_param (IS_PWR_MEMORY_BLOCK (MemoryBlock));\n\n  /* Disable memory block shut-off */\n  CLEAR_BIT (PWR->CR1, MemoryBlock);\n}\n#endif /* defined (PWR_CR1_SRDRAMSO) */\n\n/**\n  * @brief Enable the Wake-up PINx functionality.\n  * @param  sPinParams : Pointer to a PWREx_WakeupPinTypeDef structure that\n  *                      contains the configuration information for the wake-up\n  *                      Pin.\n  * @note   For dual core devices, please ensure to configure the EXTI lines for\n  *         the different Cortex-Mx. All combination are allowed: wake up only\n  *         Cortex-M7, wake up only Cortex-M4 and wake up Cortex-M7 and\n  *         Cortex-M4.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnableWakeUpPin (PWREx_WakeupPinTypeDef *sPinParams)\n{\n  uint32_t pinConfig;\n  uint32_t regMask;\n  const uint32_t pullMask = PWR_WKUPEPR_WKUPPUPD1;\n\n  /* Check the parameters */\n  assert_param (IS_PWR_WAKEUP_PIN (sPinParams->WakeUpPin));\n  assert_param (IS_PWR_WAKEUP_PIN_POLARITY (sPinParams->PinPolarity));\n  assert_param (IS_PWR_WAKEUP_PIN_PULL (sPinParams->PinPull));\n\n  pinConfig = sPinParams->WakeUpPin | \\\n              (sPinParams->PinPolarity << ((POSITION_VAL(sPinParams->WakeUpPin) + PWR_WKUPEPR_WKUPP1_Pos) & 0x1FU)) | \\\n              (sPinParams->PinPull << (((POSITION_VAL(sPinParams->WakeUpPin) * PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET) + PWR_WKUPEPR_WKUPPUPD1_Pos) & 0x1FU));\n\n  regMask   = sPinParams->WakeUpPin | \\\n              (PWR_WKUPEPR_WKUPP1 << (POSITION_VAL(sPinParams->WakeUpPin) & 0x1FU)) | \\\n              (pullMask << ((POSITION_VAL(sPinParams->WakeUpPin) * PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET) & 0x1FU));\n\n  /* Enable and Specify the Wake-Up pin polarity and the pull configuration\n     for the event detection (rising or falling edge) */\n  MODIFY_REG (PWR->WKUPEPR, regMask, pinConfig);\n#ifndef DUAL_CORE\n  /* Configure the Wakeup Pin EXTI Line */\n  MODIFY_REG (EXTI->IMR2, PWR_EXTI_WAKEUP_PINS_MASK, (sPinParams->WakeUpPin << EXTI_IMR2_IM55_Pos));\n#endif /* !DUAL_CORE */\n}\n\n/**\n  * @brief Disable the Wake-up PINx functionality.\n  * @param  WakeUpPin : Specifies the Wake-Up pin to be disabled.\n  *          This parameter can be one of the following values:\n  *           @arg PWR_WAKEUP_PIN1 : Disable PA0  wake-up PIN.\n  *           @arg PWR_WAKEUP_PIN2 : Disable PA2  wake-up PIN.\n  *           @arg PWR_WAKEUP_PIN3 : Disable PI8  wake-up PIN.\n  *           @arg PWR_WAKEUP_PIN4 : Disable PC13 wake-up PIN.\n  *           @arg PWR_WAKEUP_PIN5 : Disable PI11 wake-up PIN.\n  *           @arg PWR_WAKEUP_PIN6 : Disable PC1  wake-up PIN.\n  * @note   The PWR_WAKEUP_PIN3 and PWR_WAKEUP_PIN5 are available only for\n  *         devices that support GPIOI port.\n  * @retval None\n  */\nvoid HAL_PWREx_DisableWakeUpPin (uint32_t WakeUpPin)\n{\n  /* Check the parameter */\n  assert_param (IS_PWR_WAKEUP_PIN (WakeUpPin));\n\n  /* Disable the WakeUpPin */\n  CLEAR_BIT (PWR->WKUPEPR, WakeUpPin);\n}\n\n/**\n  * @brief Get the Wake-Up Pin pending flags.\n  * @param  WakeUpFlag : Specifies the Wake-Up PIN flag to be checked.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_WAKEUP_FLAG1    : Get wakeup event received from PA0.\n  *            @arg PWR_WAKEUP_FLAG2    : Get wakeup event received from PA2.\n  *            @arg PWR_WAKEUP_FLAG3    : Get wakeup event received from PI8.\n  *            @arg PWR_WAKEUP_FLAG4    : Get wakeup event received from PC13.\n  *            @arg PWR_WAKEUP_FLAG5    : Get wakeup event received from PI11.\n  *            @arg PWR_WAKEUP_FLAG6    : Get wakeup event received from PC1.\n  *            @arg PWR_WAKEUP_FLAG_ALL : Get Wakeup event received from all\n  *                                      wake up pins.\n  * @note   The PWR_WAKEUP_FLAG3 and PWR_WAKEUP_FLAG5 are available only for\n  *         devices that support GPIOI port.\n  * @retval The Wake-Up pin flag.\n  */\nuint32_t HAL_PWREx_GetWakeupFlag (uint32_t WakeUpFlag)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_WAKEUP_FLAG (WakeUpFlag));\n\n  /* Return the wake up pin flag */\n  return (PWR->WKUPFR & WakeUpFlag);\n}\n\n/**\n  * @brief Clear the Wake-Up pin pending flag.\n  * @param  WakeUpFlag: Specifies the Wake-Up PIN flag to clear.\n  *          This parameter can be one of the following values:\n  *            @arg PWR_WAKEUP_FLAG1 : Clear the wakeup event received from PA0.\n  *            @arg PWR_WAKEUP_FLAG2 : Clear the wakeup event received from PA2.\n  *            @arg PWR_WAKEUP_FLAG3 : Clear the wakeup event received from PI8.\n  *            @arg PWR_WAKEUP_FLAG4 : Clear the wakeup event received from PC13.\n  *            @arg PWR_WAKEUP_FLAG5 : Clear the wakeup event received from PI11.\n  *            @arg PWR_WAKEUP_FLAG6 : Clear the wakeup event received from PC1.\n  *            @arg PWR_WAKEUP_FLAG_ALL : Clear the wakeup events received from\n  *                                      all wake up pins.\n  * @note   The PWR_WAKEUP_FLAG3 and PWR_WAKEUP_FLAG5 are available only for\n  *         devices that support GPIOI port.\n  * @retval HAL status.\n  */\nHAL_StatusTypeDef HAL_PWREx_ClearWakeupFlag (uint32_t WakeUpFlag)\n{\n  /* Check the parameter */\n  assert_param (IS_PWR_WAKEUP_FLAG (WakeUpFlag));\n\n  /* Clear the wake up event received from wake up pin x */\n  SET_BIT (PWR->WKUPCR, WakeUpFlag);\n\n  /* Check if the wake up event is well cleared */\n  if ((PWR->WKUPFR & WakeUpFlag) != 0U)\n  {\n    return HAL_ERROR;\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief This function handles the PWR WAKEUP PIN interrupt request.\n  * @note   This API should be called under the WAKEUP_PIN_IRQHandler().\n  * @retval None.\n  */\nvoid HAL_PWREx_WAKEUP_PIN_IRQHandler (void)\n{\n  /* Wakeup pin EXTI line interrupt detected */\n  if (READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF1) != 0U)\n  {\n    /* Clear PWR WKUPF1 flag */\n    __HAL_PWR_CLEAR_WAKEUPFLAG (PWR_FLAG_WKUP1);\n\n    /* PWR WKUP1 interrupt user callback */\n    HAL_PWREx_WKUP1_Callback ();\n  }\n  else if (READ_BIT (PWR->WKUPFR, PWR_WKUPFR_WKUPF2) != 0U)\n  {\n    /* Clear PWR WKUPF2 flag */\n    __HAL_PWR_CLEAR_WAKEUPFLAG (PWR_FLAG_WKUP2);\n\n    /* PWR WKUP2 interrupt user callback */\n    HAL_PWREx_WKUP2_Callback ();\n  }\n#if defined (PWR_WKUPFR_WKUPF3)\n  else if (READ_BIT (PWR->WKUPFR, PWR_WKUPFR_WKUPF3) != 0U)\n  {\n    /* Clear PWR WKUPF3 flag */\n    __HAL_PWR_CLEAR_WAKEUPFLAG (PWR_FLAG_WKUP3);\n\n    /* PWR WKUP3 interrupt user callback */\n    HAL_PWREx_WKUP3_Callback ();\n  }\n#endif /* defined (PWR_WKUPFR_WKUPF3) */\n  else if (READ_BIT (PWR->WKUPFR, PWR_WKUPFR_WKUPF4) != 0U)\n  {\n    /* Clear PWR WKUPF4 flag */\n    __HAL_PWR_CLEAR_WAKEUPFLAG (PWR_FLAG_WKUP4);\n\n    /* PWR WKUP4 interrupt user callback */\n    HAL_PWREx_WKUP4_Callback ();\n  }\n#if defined (PWR_WKUPFR_WKUPF5)\n  else if (READ_BIT (PWR->WKUPFR, PWR_WKUPFR_WKUPF5) != 0U)\n  {\n    /* Clear PWR WKUPF5 flag */\n    __HAL_PWR_CLEAR_WAKEUPFLAG (PWR_FLAG_WKUP5);\n\n    /* PWR WKUP5 interrupt user callback */\n    HAL_PWREx_WKUP5_Callback ();\n  }\n#endif /* defined (PWR_WKUPFR_WKUPF5) */\n  else\n  {\n    /* Clear PWR WKUPF6 flag */\n    __HAL_PWR_CLEAR_WAKEUPFLAG (PWR_FLAG_WKUP6);\n\n    /* PWR WKUP6 interrupt user callback */\n    HAL_PWREx_WKUP6_Callback ();\n  }\n}\n\n/**\n  * @brief PWR WKUP1 interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWREx_WKUP1_Callback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWREx_WKUP1Callback can be implemented in the user file\n  */\n}\n\n/**\n  * @brief PWR WKUP2 interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWREx_WKUP2_Callback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWREx_WKUP2Callback can be implemented in the user file\n  */\n}\n\n#if defined (PWR_WKUPFR_WKUPF3)\n/**\n  * @brief PWR WKUP3 interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWREx_WKUP3_Callback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWREx_WKUP3Callback can be implemented in the user file\n  */\n}\n#endif /* defined (PWR_WKUPFR_WKUPF3) */\n\n/**\n  * @brief PWR WKUP4 interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWREx_WKUP4_Callback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWREx_WKUP4Callback can be implemented in the user file\n  */\n}\n\n#if defined (PWR_WKUPFR_WKUPF5)\n/**\n  * @brief PWR WKUP5 interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWREx_WKUP5_Callback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWREx_WKUP5Callback can be implemented in the user file\n  */\n}\n#endif /* defined (PWR_WKUPFR_WKUPF5) */\n\n/**\n  * @brief PWR WKUP6 interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWREx_WKUP6_Callback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWREx_WKUP6Callback can be implemented in the user file\n  */\n}\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_Exported_Functions_Group3 Peripherals control functions\n  * @brief    Peripherals control functions\n  *\n@verbatim\n ===============================================================================\n                 ##### Peripherals control functions #####\n ===============================================================================\n\n    *** Main and Backup Regulators configuration ***\n    ================================================\n    [..]\n      (+) The backup domain includes 4 Kbytes of backup SRAM accessible only\n          from the CPU, and addressed in 32-bit, 16-bit or 8-bit mode. Its\n          content is retained even in Standby or VBAT mode when the low power\n          backup regulator is enabled. It can be considered as an internal\n          EEPROM when VBAT is always present. You can use the\n          HAL_PWREx_EnableBkUpReg() function to enable the low power backup\n          regulator.\n      (+) When the backup domain is supplied by VDD (analog switch connected to\n          VDD) the backup SRAM is powered from VDD which replaces the VBAT power\n          supply to save battery life.\n      (+) The backup SRAM is not mass erased by a tamper event. It is read\n          protected to prevent confidential data, such as cryptographic private\n          key, from being accessed. The backup SRAM can be erased only through\n          the Flash interface when a protection level change from level 1 to\n          level 0 is requested.\n      -@- Refer to the description of Read protection (RDP) in the Flash\n          programming manual.\n      (+) The main internal regulator can be configured to have a tradeoff\n          between performance and power consumption when the device does not\n          operate at the maximum frequency. This is done through\n          HAL_PWREx_ControlVoltageScaling(VOS) function which configure the VOS\n          bit in PWR_D3CR register.\n      (+) The main internal regulator can be configured to operate in Low Power\n          mode when the system enters STOP mode to further reduce power\n          consumption.\n          This is done through HAL_PWREx_ControlStopModeVoltageScaling(SVOS)\n          function which configure the SVOS bit in PWR_CR1 register.\n          The selected SVOS4 and SVOS5 levels add an additional startup delay\n          when exiting from system Stop mode.\n    -@- Refer to the product datasheets for more details.\n\n    *** USB Regulator configuration ***\n    ===================================\n    [..]\n      (+) The USB transceivers are supplied from a dedicated VDD33USB supply\n          that can be provided either by the integrated USB regulator, or by an\n          external USB supply.\n      (+) The USB regulator is enabled by HAL_PWREx_EnableUSBReg() function, the\n          VDD33USB is then provided from the USB regulator.\n      (+) When the USB regulator is enabled, the VDD33USB supply level detector\n          shall be enabled through  HAL_PWREx_EnableUSBVoltageDetector()\n          function.\n      (+) The USB regulator is disabled through HAL_PWREx_DisableUSBReg()\n          function and VDD33USB can be provided from an external supply. In this\n          case VDD33USB and VDD50USB shall be connected together.\n\n    *** VBAT battery charging ***\n    =============================\n    [..]\n      (+) When VDD is present, the external battery connected to VBAT can be\n          charged through an internal resistance. VBAT charging can be performed\n          either through a 5 KOhm resistor or through a 1.5 KOhm resistor.\n      (+) VBAT charging is enabled by HAL_PWREx_EnableBatteryCharging\n          (ResistorValue) function with:\n       (++) ResistorValue:\n        (+++) PWR_BATTERY_CHARGING_RESISTOR_5: 5 KOhm resistor.\n        (+++) PWR_BATTERY_CHARGING_RESISTOR_1_5: 1.5 KOhm resistor.\n      (+) VBAT charging is disabled by HAL_PWREx_DisableBatteryCharging()\n          function.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief Enable the Backup Regulator.\n  * @retval HAL status.\n  */\nHAL_StatusTypeDef HAL_PWREx_EnableBkUpReg (void)\n{\n  uint32_t tickstart;\n\n  /* Enable the Backup regulator */\n  SET_BIT (PWR->CR2, PWR_CR2_BREN);\n\n  /* Get tick */\n  tickstart = HAL_GetTick ();\n\n  /* Wait till Backup regulator ready flag is set */\n  while (__HAL_PWR_GET_FLAG (PWR_FLAG_BRR) == 0U)\n  {\n    if ((HAL_GetTick() - tickstart ) > PWR_FLAG_SETTING_DELAY)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Disable the Backup Regulator.\n  * @retval HAL status.\n  */\nHAL_StatusTypeDef HAL_PWREx_DisableBkUpReg (void)\n{\n  uint32_t tickstart;\n\n  /* Disable the Backup regulator */\n  CLEAR_BIT (PWR->CR2, PWR_CR2_BREN);\n\n  /* Get tick */\n  tickstart = HAL_GetTick ();\n\n  /* Wait till Backup regulator ready flag is reset */\n  while (__HAL_PWR_GET_FLAG (PWR_FLAG_BRR) != 0U)\n  {\n    if ((HAL_GetTick() - tickstart ) > PWR_FLAG_SETTING_DELAY)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Enable the USB Regulator.\n  * @retval HAL status.\n  */\nHAL_StatusTypeDef HAL_PWREx_EnableUSBReg (void)\n{\n  uint32_t tickstart;\n\n  /* Enable the USB regulator */\n  SET_BIT (PWR->CR3, PWR_CR3_USBREGEN);\n\n  /* Get tick */\n  tickstart = HAL_GetTick ();\n\n  /* Wait till the USB regulator ready flag is set */\n  while (__HAL_PWR_GET_FLAG (PWR_FLAG_USB33RDY) == 0U)\n  {\n    if ((HAL_GetTick() - tickstart ) > PWR_FLAG_SETTING_DELAY)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Disable the USB Regulator.\n  * @retval HAL status.\n  */\nHAL_StatusTypeDef HAL_PWREx_DisableUSBReg (void)\n{\n  uint32_t tickstart;\n\n  /* Disable the USB regulator */\n  CLEAR_BIT (PWR->CR3, PWR_CR3_USBREGEN);\n\n  /* Get tick */\n  tickstart = HAL_GetTick ();\n\n  /* Wait till the USB regulator ready flag is reset */\n  while(__HAL_PWR_GET_FLAG (PWR_FLAG_USB33RDY) != 0U)\n  {\n    if ((HAL_GetTick() - tickstart ) > PWR_FLAG_SETTING_DELAY)\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Enable the USB voltage level detector.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnableUSBVoltageDetector (void)\n{\n  /* Enable the USB voltage detector */\n  SET_BIT (PWR->CR3, PWR_CR3_USB33DEN);\n}\n\n/**\n  * @brief Disable the USB voltage level detector.\n  * @retval None.\n  */\nvoid HAL_PWREx_DisableUSBVoltageDetector (void)\n{\n  /* Disable the USB voltage detector */\n  CLEAR_BIT (PWR->CR3, PWR_CR3_USB33DEN);\n}\n\n/**\n  * @brief Enable the Battery charging.\n  * @note   When VDD is present, charge the external battery through an internal\n  *         resistor.\n  * @param  ResistorValue : Specifies the charging resistor.\n  *          This parameter can be one of the following values :\n  *            @arg PWR_BATTERY_CHARGING_RESISTOR_5 : 5 KOhm resistor.\n  *            @arg PWR_BATTERY_CHARGING_RESISTOR_1_5 : 1.5 KOhm resistor.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnableBatteryCharging (uint32_t ResistorValue)\n{\n  /* Check the parameter */\n  assert_param (IS_PWR_BATTERY_RESISTOR_SELECT (ResistorValue));\n\n  /* Specify the charging resistor */\n  MODIFY_REG (PWR->CR3, PWR_CR3_VBRS, ResistorValue);\n\n  /* Enable the Battery charging */\n  SET_BIT (PWR->CR3, PWR_CR3_VBE);\n}\n\n/**\n  * @brief Disable the Battery charging.\n  * @retval None.\n  */\nvoid HAL_PWREx_DisableBatteryCharging (void)\n{\n  /* Disable the Battery charging */\n  CLEAR_BIT (PWR->CR3, PWR_CR3_VBE);\n}\n\n#if defined (PWR_CR1_BOOSTE)\n/**\n  * @brief Enable the booster to guarantee the analog switch AC performance when\n  *        the VDD supply voltage is below 2V7.\n  * @note   The VDD supply voltage can be monitored through the PVD and the PLS\n  *         field bits.\n  * @retval None.\n  */\nvoid HAL_PWREx_EnableAnalogBooster (void)\n{\n  /* Enable the Analog voltage */\n  SET_BIT (PWR->CR1, PWR_CR1_AVD_READY);\n\n  /* Enable VDDA booster */\n  SET_BIT (PWR->CR1, PWR_CR1_BOOSTE);\n}\n\n/**\n  * @brief Disable the analog booster.\n  * @retval None.\n  */\nvoid HAL_PWREx_DisableAnalogBooster (void)\n{\n  /* Disable VDDA booster */\n  CLEAR_BIT (PWR->CR1, PWR_CR1_BOOSTE);\n\n  /* Disable the Analog voltage */\n  CLEAR_BIT (PWR->CR1, PWR_CR1_AVD_READY);\n}\n#endif /* defined (PWR_CR1_BOOSTE) */\n/**\n  * @}\n  */\n\n/** @defgroup PWREx_Exported_Functions_Group4 Power Monitoring functions\n  * @brief    Power Monitoring functions\n  *\n@verbatim\n ===============================================================================\n                 ##### Power Monitoring functions #####\n ===============================================================================\n\n    *** VBAT and Temperature supervision ***\n    ========================================\n    [..]\n      (+) The VBAT battery voltage supply can be monitored by comparing it with\n          two threshold levels: VBAThigh and VBATlow. VBATH flag and VBATL flags\n          in the PWR control register 2 (PWR_CR2), indicate if VBAT is higher or\n          lower than the threshold.\n      (+) The temperature can be monitored by comparing it with two threshold\n          levels, TEMPhigh and TEMPlow. TEMPH and TEMPL flags, in the PWR\n          control register 2 (PWR_CR2), indicate whether the device temperature\n          is higher or lower than the threshold.\n      (+) The VBAT and the temperature monitoring is enabled by\n          HAL_PWREx_EnableMonitoring() function and disabled by\n          HAL_PWREx_DisableMonitoring() function.\n      (+) The HAL_PWREx_GetVBATLevel() function returns the VBAT level which can\n          be : PWR_VBAT_BELOW_LOW_THRESHOLD or PWR_VBAT_ABOVE_HIGH_THRESHOLD or\n          PWR_VBAT_BETWEEN_HIGH_LOW_THRESHOLD.\n      (+) The HAL_PWREx_GetTemperatureLevel() function returns the Temperature\n          level which can be :\n          PWR_TEMP_BELOW_LOW_THRESHOLD or PWR_TEMP_ABOVE_HIGH_THRESHOLD or\n          PWR_TEMP_BETWEEN_HIGH_LOW_THRESHOLD.\n\n    *** AVD configuration ***\n    =========================\n    [..]\n      (+) The AVD is used to monitor the VDDA power supply by comparing it to a\n          threshold selected by the AVD Level (ALS[3:0] bits in the PWR_CR1\n          register).\n      (+) A AVDO flag is available to indicate if VDDA is higher or lower\n          than the AVD threshold. This event is internally connected to the EXTI\n          line 16 to generate an interrupt if enabled.\n          It is configurable through __HAL_PWR_AVD_EXTI_ENABLE_IT() macro.\n      (+) The AVD is stopped in System Standby mode.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief Enable the VBAT and temperature monitoring.\n  * @retval HAL status.\n  */\nvoid HAL_PWREx_EnableMonitoring (void)\n{\n  /* Enable the VBAT and Temperature monitoring */\n  SET_BIT (PWR->CR2, PWR_CR2_MONEN);\n}\n\n/**\n  * @brief Disable the VBAT and temperature monitoring.\n  * @retval HAL status.\n  */\nvoid HAL_PWREx_DisableMonitoring (void)\n{\n  /* Disable the VBAT and Temperature monitoring */\n  CLEAR_BIT (PWR->CR2, PWR_CR2_MONEN);\n}\n\n/**\n  * @brief Indicate whether the junction temperature is between, above or below\n  *        the thresholds.\n  * @retval Temperature level.\n  */\nuint32_t HAL_PWREx_GetTemperatureLevel (void)\n{\n  uint32_t tempLevel, regValue;\n\n  /* Read the temperature flags */\n  regValue = READ_BIT (PWR->CR2, (PWR_CR2_TEMPH | PWR_CR2_TEMPL));\n\n  /* Check if the temperature is below the threshold */\n  if (regValue == PWR_CR2_TEMPL)\n  {\n    tempLevel = PWR_TEMP_BELOW_LOW_THRESHOLD;\n  }\n  /* Check if the temperature is above the threshold */\n  else if (regValue == PWR_CR2_TEMPH)\n  {\n    tempLevel = PWR_TEMP_ABOVE_HIGH_THRESHOLD;\n  }\n  /* The temperature is between the thresholds */\n  else\n  {\n    tempLevel = PWR_TEMP_BETWEEN_HIGH_LOW_THRESHOLD;\n  }\n\n  return tempLevel;\n}\n\n/**\n  * @brief Indicate whether the Battery voltage level is between, above or below\n  *        the thresholds.\n  * @retval VBAT level.\n  */\nuint32_t HAL_PWREx_GetVBATLevel (void)\n{\n  uint32_t VBATLevel, regValue;\n\n  /* Read the VBAT flags */\n  regValue = READ_BIT (PWR->CR2, (PWR_CR2_VBATH | PWR_CR2_VBATL));\n\n  /* Check if the VBAT is below the threshold */\n  if (regValue == PWR_CR2_VBATL)\n  {\n    VBATLevel = PWR_VBAT_BELOW_LOW_THRESHOLD;\n  }\n  /* Check if the VBAT is above the threshold */\n  else if (regValue == PWR_CR2_VBATH)\n  {\n    VBATLevel = PWR_VBAT_ABOVE_HIGH_THRESHOLD;\n  }\n  /* The VBAT is between the thresholds */\n  else\n  {\n    VBATLevel = PWR_VBAT_BETWEEN_HIGH_LOW_THRESHOLD;\n  }\n\n  return VBATLevel;\n}\n\n#if defined (PWR_CSR1_MMCVDO)\n/**\n  * @brief Get the VDDMMC voltage level.\n  * @retval The VDDMMC voltage level.\n  */\nPWREx_MMC_VoltageLevel HAL_PWREx_GetMMCVoltage (void)\n{\n  PWREx_MMC_VoltageLevel mmc_voltage;\n\n  /* Check voltage detector output on VDDMMC value */\n  if ((PWR->CSR1 & PWR_CSR1_MMCVDO_Msk) == 0U)\n  {\n    mmc_voltage = PWR_MMC_VOLTAGE_BELOW_1V2;\n  }\n  else\n  {\n    mmc_voltage = PWR_MMC_VOLTAGE_EQUAL_ABOVE_1V2;\n  }\n\n  return mmc_voltage;\n}\n#endif /* defined (PWR_CSR1_MMCVDO) */\n\n/**\n  * @brief  Configure the event mode and the voltage threshold detected by the\n  *         Analog Voltage Detector (AVD).\n  * @param  sConfigAVD : Pointer to an PWREx_AVDTypeDef structure that contains\n  *                      the configuration information for the AVD.\n  * @note   Refer to the electrical characteristics of your device datasheet for\n  *         more details about the voltage threshold corresponding to each\n  *         detection level.\n  * @note   For dual core devices, please ensure to configure the EXTI lines for\n  *         the different Cortex-Mx through PWR_Exported_Macro provided by this\n  *         driver. All combination are allowed: wake up only Cortex-M7, wake up\n  *         only Cortex-M4 and wake up Cortex-M7 and Cortex-M4.\n  * @retval None.\n  */\nvoid HAL_PWREx_ConfigAVD (PWREx_AVDTypeDef *sConfigAVD)\n{\n  /* Check the parameters */\n  assert_param (IS_PWR_AVD_LEVEL (sConfigAVD->AVDLevel));\n  assert_param (IS_PWR_AVD_MODE (sConfigAVD->Mode));\n\n  /* Set the ALS[18:17] bits according to AVDLevel value */\n  MODIFY_REG (PWR->CR1, PWR_CR1_ALS, sConfigAVD->AVDLevel);\n\n  /* Clear any previous config */\n#if !defined (DUAL_CORE)\n  __HAL_PWR_AVD_EXTI_DISABLE_EVENT ();\n  __HAL_PWR_AVD_EXTI_DISABLE_IT ();\n#endif /* !defined (DUAL_CORE) */\n\n  __HAL_PWR_AVD_EXTI_DISABLE_RISING_EDGE ();\n  __HAL_PWR_AVD_EXTI_DISABLE_FALLING_EDGE ();\n\n#if !defined (DUAL_CORE)\n  /* Configure the interrupt mode */\n  if ((sConfigAVD->Mode & AVD_MODE_IT) == AVD_MODE_IT)\n  {\n    __HAL_PWR_AVD_EXTI_ENABLE_IT ();\n  }\n\n  /* Configure the event mode */\n  if ((sConfigAVD->Mode & AVD_MODE_EVT) == AVD_MODE_EVT)\n  {\n    __HAL_PWR_AVD_EXTI_ENABLE_EVENT ();\n  }\n#endif /* !defined (DUAL_CORE) */\n\n  /* Rising edge configuration */\n  if ((sConfigAVD->Mode & AVD_RISING_EDGE) == AVD_RISING_EDGE)\n  {\n    __HAL_PWR_AVD_EXTI_ENABLE_RISING_EDGE ();\n  }\n\n  /* Falling edge configuration */\n  if ((sConfigAVD->Mode & AVD_FALLING_EDGE) == AVD_FALLING_EDGE)\n  {\n    __HAL_PWR_AVD_EXTI_ENABLE_FALLING_EDGE ();\n  }\n}\n\n/**\n  * @brief Enable the Analog Voltage Detector (AVD).\n  * @retval None.\n  */\nvoid HAL_PWREx_EnableAVD (void)\n{\n  /* Enable the Analog Voltage Detector */\n  SET_BIT (PWR->CR1, PWR_CR1_AVDEN);\n}\n\n/**\n  * @brief Disable the Analog Voltage Detector(AVD).\n  * @retval None.\n  */\nvoid HAL_PWREx_DisableAVD (void)\n{\n  /* Disable the Analog Voltage Detector */\n  CLEAR_BIT (PWR->CR1, PWR_CR1_AVDEN);\n}\n\n/**\n  * @brief  This function handles the PWR PVD/AVD interrupt request.\n  * @note   This API should be called under the PVD_AVD_IRQHandler().\n  * @retval None\n  */\nvoid HAL_PWREx_PVD_AVD_IRQHandler (void)\n{\n  /* Check if the Programmable Voltage Detector is enabled (PVD) */\n  if (READ_BIT (PWR->CR1, PWR_CR1_PVDEN) != 0U)\n  {\n#if defined (DUAL_CORE)\n    if (HAL_GetCurrentCPUID () == CM7_CPUID)\n#endif /* defined (DUAL_CORE) */\n    {\n      /* Check PWR D1/CD EXTI flag */\n      if (__HAL_PWR_PVD_EXTI_GET_FLAG () != 0U)\n      {\n        /* PWR PVD interrupt user callback */\n        HAL_PWR_PVDCallback ();\n\n        /* Clear PWR EXTI D1/CD pending bit */\n        __HAL_PWR_PVD_EXTI_CLEAR_FLAG ();\n      }\n    }\n#if defined (DUAL_CORE)\n    else\n    {\n      /* Check PWR EXTI D2 flag */\n      if (__HAL_PWR_PVD_EXTID2_GET_FLAG () != 0U)\n      {\n        /* PWR PVD interrupt user callback */\n        HAL_PWR_PVDCallback ();\n\n        /* Clear PWR EXTI D2 pending bit */\n        __HAL_PWR_PVD_EXTID2_CLEAR_FLAG();\n      }\n    }\n#endif /* defined (DUAL_CORE) */\n  }\n\n  /* Check if the Analog Voltage Detector is enabled (AVD) */\n  if (READ_BIT (PWR->CR1, PWR_CR1_AVDEN) != 0U)\n  {\n#if defined (DUAL_CORE)\n    if (HAL_GetCurrentCPUID () == CM7_CPUID)\n#endif /* defined (DUAL_CORE) */\n    {\n      /* Check PWR EXTI D1/CD flag */\n      if (__HAL_PWR_AVD_EXTI_GET_FLAG () != 0U)\n      {\n        /* PWR AVD interrupt user callback */\n        HAL_PWREx_AVDCallback ();\n\n        /* Clear PWR EXTI D1/CD pending bit */\n        __HAL_PWR_AVD_EXTI_CLEAR_FLAG ();\n      }\n    }\n#if defined (DUAL_CORE)\n    else\n    {\n      /* Check PWR EXTI D2 flag */\n      if (__HAL_PWR_AVD_EXTID2_GET_FLAG () != 0U)\n      {\n        /* PWR AVD interrupt user callback */\n        HAL_PWREx_AVDCallback ();\n\n        /* Clear PWR EXTI D2 pending bit */\n        __HAL_PWR_AVD_EXTID2_CLEAR_FLAG ();\n      }\n    }\n#endif /* defined (DUAL_CORE) */\n  }\n}\n\n/**\n  * @brief PWR AVD interrupt callback.\n  * @retval None.\n  */\n__weak void HAL_PWREx_AVDCallback (void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_PWR_AVDCallback can be implemented in the user file\n  */\n}\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#endif /* HAL_PWR_MODULE_ENABLED */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_rcc.c\n  * @author  MCD Application Team\n  * @brief   RCC HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the Reset and Clock Control (RCC) peripheral:\n  *           + Initialization and de-initialization functions\n  *           + Peripheral Control functions\n  *\n  @verbatim\n  ==============================================================================\n                      ##### RCC specific features #####\n  ==============================================================================\n    [..]\n      After reset the device is running from Internal High Speed oscillator\n      (HSI 64MHz) with Flash 0 wait state,and all peripherals are off except\n      internal SRAM, Flash, JTAG and PWR\n      (+) There is no pre-scaler on High speed (AHB) and Low speed (APB) buses;\n          all peripherals mapped on these buses are running at HSI speed.\n      (+) The clock for all peripherals is switched off, except the SRAM and FLASH.\n      (+) All GPIOs are in analogue mode , except the JTAG pins which\n          are assigned to be used for debug purpose.\n\n    [..]\n      Once the device started from reset, the user application has to:\n      (+) Configure the clock source to be used to drive the System clock\n          (if the application needs higher frequency/performance)\n      (+) Configure the System clock frequency and Flash settings\n      (+) Configure the AHB and APB buses pre-scalers\n      (+) Enable the clock for the peripheral(s) to be used\n      (+) Configure the clock kernel source(s) for peripherals which clocks are not\n          derived from the System clock through :RCC_D1CCIPR,RCC_D2CCIP1R,RCC_D2CCIP2R\n          and RCC_D3CCIPR registers\n\n                      ##### RCC Limitations #####\n  ==============================================================================\n    [..]\n      A delay between an RCC peripheral clock enable and the effective peripheral\n      enabling should be taken into account in order to manage the peripheral read/write\n      from/to registers.\n      (+) This delay depends on the peripheral mapping.\n      (+) If peripheral is mapped on AHB: the delay is 2 AHB clock cycle\n          after the clock enable bit is set on the hardware register\n      (+) If peripheral is mapped on APB: the delay is 2 APB clock cycle\n          after the clock enable bit is set on the hardware register\n\n    [..]\n      Implemented Workaround:\n      (+) For AHB & APB peripherals, a dummy read to the peripheral register has been\n          inserted in each __HAL_RCC_PPP_CLK_ENABLE() macro.\n\n  @endverbatim\n ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup RCC  RCC\n  * @brief RCC HAL module driver\n  * @{\n  */\n\n#ifdef HAL_RCC_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/* Private macro -------------------------------------------------------------*/\n/** @defgroup RCC_Private_Macros RCC Private Macros\n  * @{\n  */\n#define MCO1_CLK_ENABLE()     __HAL_RCC_GPIOA_CLK_ENABLE()\n#define MCO1_GPIO_PORT        GPIOA\n#define MCO1_PIN              GPIO_PIN_8\n\n#define MCO2_CLK_ENABLE()      __HAL_RCC_GPIOC_CLK_ENABLE()\n#define MCO2_GPIO_PORT         GPIOC\n#define MCO2_PIN               GPIO_PIN_9\n\n/**\n  * @}\n  */\n/* Private variables ---------------------------------------------------------*/\n/** @defgroup RCC_Private_Variables RCC Private Variables\n  * @{\n  */\n\n/**\n  * @}\n  */\n/* Private function prototypes -----------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup RCC_Exported_Functions RCC Exported Functions\n  * @{\n  */\n\n/** @defgroup RCC_Exported_Functions_Group1 Initialization and de-initialization functions\n *  @brief    Initialization and Configuration functions\n *\n@verbatim\n ===============================================================================\n           ##### Initialization and de-initialization functions #####\n ===============================================================================\n    [..]\n      This section provides functions allowing to configure the internal/external oscillators\n      (HSE, HSI, LSE,CSI, LSI,HSI48, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB3, AHB1\n       AHB2,AHB4,APB3, APB1L, APB1H, APB2, and APB4).\n\n    [..] Internal/external clock and PLL configuration\n         (#) HSI (high-speed internal), 64 MHz factory-trimmed RC used directly or through\n             the PLL as System clock source.\n         (#) CSI is a low-power RC oscillator which can be used directly as system clock, peripheral\n             clock, or PLL input.But even with frequency calibration, is less accurate than an\n             external crystal oscillator or ceramic resonator.\n         (#) LSI (low-speed internal), 32 KHz low consumption RC used as IWDG and/or RTC\n             clock source.\n\n         (#) HSE (high-speed external), 4 to 48 MHz crystal oscillator used directly or\n             through the PLL as System clock source. Can be used also as RTC clock source.\n\n         (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source.\n\n         (#) PLL , The RCC features three independent PLLs (clocked by HSI , HSE or CSI),\n             featuring three different output clocks and able  to work either in integer or Fractional mode.\n           (++) A main PLL, PLL1, which is generally used to provide clocks to the CPU\n                and to some peripherals.\n           (++) Two dedicated PLLs, PLL2 and PLL3, which are used to generate the kernel clock for peripherals.\n\n\n         (#) CSS (Clock security system), once enabled and if a HSE clock failure occurs\n            (HSE used directly or through PLL as System clock source), the System clock\n             is automatically switched to HSI and an interrupt is generated if enabled.\n             The interrupt is linked to the Cortex-M NMI (Non-Mask-able Interrupt)\n             exception vector.\n\n         (#) MCO1 (micro controller clock output), used to output HSI, LSE, HSE, PLL1(PLL1_Q)\n             or HSI48 clock (through a configurable pre-scaler) on PA8 pin.\n\n         (#) MCO2 (micro controller clock output), used to output HSE, PLL2(PLL2_P), SYSCLK,\n             LSI, CSI, or PLL1(PLL1_P) clock (through a configurable pre-scaler) on PC9 pin.\n\n    [..] System, AHB and APB buses clocks configuration\n         (#) Several clock sources can be used to drive the System clock (SYSCLK): CSI,HSI,\n             HSE and PLL.\n             The AHB clock (HCLK) is derived from System core clock through configurable\n             pre-scaler and used to clock the CPU, memory and peripherals mapped\n             on AHB and APB bus of the 3 Domains (D1, D2, D3)* through configurable pre-scalers\n             and used to clock the peripherals mapped on these buses. You can use\n             \"HAL_RCC_GetSysClockFreq()\" function to retrieve system clock frequency.\n\n         -@- All the peripheral clocks are derived from the System clock (SYSCLK) except those\n             with dual clock domain where kernel source clock could be selected through\n             RCC_D1CCIPR,RCC_D2CCIP1R,RCC_D2CCIP2R and RCC_D3CCIPR registers.\n\n     (*) : 2 Domains (CD and SRD) for stm32h7a3xx and stm32h7b3xx family lines.\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Resets the RCC clock configuration to the default reset state.\n  * @note   The default reset state of the clock configuration is given below:\n  *            - HSI ON and used as system clock source\n  *            - HSE, PLL1, PLL2 and PLL3 OFF\n  *            - AHB, APB Bus pre-scaler set to 1.\n  *            - CSS, MCO1 and MCO2 OFF\n  *            - All interrupts disabled\n  * @note   This function doesn't modify the configuration of the\n  *            - Peripheral clocks\n  *            - LSI, LSE and RTC clocks\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_RCC_DeInit(void)\n{\n  uint32_t tickstart;\n\n        /* Increasing the CPU frequency */\n  if(FLASH_LATENCY_DEFAULT  > __HAL_FLASH_GET_LATENCY())\n  {\n    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\n    __HAL_FLASH_SET_LATENCY(FLASH_LATENCY_DEFAULT);\n\n    /* Check that the new number of wait states is taken into account to access the Flash\n    memory by reading the FLASH_ACR register */\n    if(__HAL_FLASH_GET_LATENCY() != FLASH_LATENCY_DEFAULT)\n    {\n      return HAL_ERROR;\n    }\n\n  }\n\n\n  /* Get Start Tick */\n  tickstart = HAL_GetTick();\n\n  /* Set HSION bit */\n  SET_BIT(RCC->CR, RCC_CR_HSION);\n\n  /* Wait till HSI is ready */\n  while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U)\n  {\n    if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)\n    {\n      return HAL_TIMEOUT;\n    }\n  }\n\n  /* Set HSITRIM[6:0] bits to the reset value */\n  SET_BIT(RCC->HSICFGR, RCC_HSICFGR_HSITRIM_6);\n\n  /* Reset CFGR register */\n  CLEAR_REG(RCC->CFGR);\n\n  /* Update the SystemCoreClock and SystemD2Clock global variables */\n  SystemCoreClock = HSI_VALUE;\n  SystemD2Clock = HSI_VALUE;\n\n  /* Adapt Systick interrupt period */\n  if(HAL_InitTick(uwTickPrio) != HAL_OK)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Get Start Tick */\n  tickstart = HAL_GetTick();\n\n  /* Wait till clock switch is ready */\n  while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != 0U)\n  {\n    if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)\n    {\n      return HAL_TIMEOUT;\n    }\n  }\n\n  /* Get Start Tick */\n  tickstart = HAL_GetTick();\n\n  /* Reset CSION, CSIKERON, HSEON, HSI48ON, HSECSSON, HSIDIV bits */\n  CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSIKERON| RCC_CR_HSIDIV| RCC_CR_HSIDIVF| RCC_CR_CSION | RCC_CR_CSIKERON  \\\n  | RCC_CR_HSI48ON | RCC_CR_CSSHSEON);\n\n  /* Wait till HSE is disabled */\n  while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U)\n  {\n    if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)\n    {\n      return HAL_TIMEOUT;\n    }\n  }\n\n  /* Get Start Tick */\n  tickstart = HAL_GetTick();\n\n  /* Clear PLLON bit */\n  CLEAR_BIT(RCC->CR, RCC_CR_PLL1ON);\n\n  /* Wait till PLL is disabled */\n  while (READ_BIT(RCC->CR, RCC_CR_PLL1RDY) != 0U)\n  {\n    if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)\n    {\n      return HAL_TIMEOUT;\n    }\n  }\n\n  /* Get Start Tick */\n  tickstart = HAL_GetTick();\n\n  /* Reset PLL2ON bit */\n  CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON);\n\n  /* Wait till PLL2 is disabled */\n  while (READ_BIT(RCC->CR, RCC_CR_PLL2RDY) != 0U)\n  {\n    if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)\n    {\n      return HAL_TIMEOUT;\n    }\n  }\n\n  /* Get Start Tick */\n  tickstart = HAL_GetTick();\n\n  /* Reset PLL3 bit */\n  CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON);\n\n  /* Wait till PLL3 is disabled */\n  while (READ_BIT(RCC->CR, RCC_CR_PLL3RDY) != 0U)\n  {\n    if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)\n    {\n      return HAL_TIMEOUT;\n    }\n  }\n\n#if defined(RCC_D1CFGR_HPRE)\n  /* Reset D1CFGR register */\n  CLEAR_REG(RCC->D1CFGR);\n\n  /* Reset D2CFGR register */\n  CLEAR_REG(RCC->D2CFGR);\n\n  /* Reset D3CFGR register */\n  CLEAR_REG(RCC->D3CFGR);\n#else\n  /* Reset CDCFGR1 register */\n  CLEAR_REG(RCC->CDCFGR1);\n\n  /* Reset CDCFGR2 register */\n  CLEAR_REG(RCC->CDCFGR2);\n\n  /* Reset SRDCFGR register */\n  CLEAR_REG(RCC->SRDCFGR);\n#endif\n\n  /* Reset PLLCKSELR register to default value */\n  RCC->PLLCKSELR= RCC_PLLCKSELR_DIVM1_5|RCC_PLLCKSELR_DIVM2_5|RCC_PLLCKSELR_DIVM3_5;\n\n  /* Reset PLLCFGR register to default value */\n  WRITE_REG(RCC->PLLCFGR, 0x01FF0000U);\n\n  /* Reset PLL1DIVR register to default value */\n  WRITE_REG(RCC->PLL1DIVR,0x01010280U);\n\n  /* Reset PLL1FRACR register */\n  CLEAR_REG(RCC->PLL1FRACR);\n\n  /* Reset PLL2DIVR register to default value */\n  WRITE_REG(RCC->PLL2DIVR,0x01010280U);\n\n  /* Reset PLL2FRACR register */\n  CLEAR_REG(RCC->PLL2FRACR);\n\n  /* Reset PLL3DIVR register to default value */\n  WRITE_REG(RCC->PLL3DIVR,0x01010280U);\n\n  /* Reset PLL3FRACR register */\n  CLEAR_REG(RCC->PLL3FRACR);\n\n#if defined(RCC_CR_HSEEXT)\n  /* Reset HSEEXT  */\n  CLEAR_BIT(RCC->CR, RCC_CR_HSEEXT);\n#endif /* RCC_CR_HSEEXT */\n\n  /* Reset HSEBYP bit */\n  CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);\n\n  /* Disable all interrupts */\n  CLEAR_REG(RCC->CIER);\n\n  /* Clear all interrupts flags */\n  WRITE_REG(RCC->CICR,0xFFFFFFFFU);\n\n  /* Reset all RSR flags */\n  SET_BIT(RCC->RSR, RCC_RSR_RMVF);\n\n      /* Decreasing the number of wait states because of lower CPU frequency */\n  if(FLASH_LATENCY_DEFAULT  < __HAL_FLASH_GET_LATENCY())\n  {\n    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\n    __HAL_FLASH_SET_LATENCY(FLASH_LATENCY_DEFAULT);\n\n    /* Check that the new number of wait states is taken into account to access the Flash\n    memory by reading the FLASH_ACR register */\n    if(__HAL_FLASH_GET_LATENCY() != FLASH_LATENCY_DEFAULT)\n    {\n      return HAL_ERROR;\n    }\n\n}\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the RCC Oscillators according to the specified parameters in the\n  *         RCC_OscInitTypeDef.\n  * @param  RCC_OscInitStruct: pointer to an RCC_OscInitTypeDef structure that\n  *         contains the configuration information for the RCC Oscillators.\n  * @note   The PLL is not disabled when used as system clock.\n  * @note   Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not\n  *         supported by this function. User should request a transition to LSE Off\n  *         first and then LSE On or LSE Bypass.\n  * @note   Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not\n  *         supported by this function. User should request a transition to HSE Off\n  *         first and then HSE On or HSE Bypass.\n  * @retval HAL status\n  */\n__weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct)\n{\n  uint32_t tickstart;\n  uint32_t temp1_pllckcfg, temp2_pllckcfg;\n\n    /* Check Null pointer */\n  if(RCC_OscInitStruct == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));\n  /*------------------------------- HSE Configuration ------------------------*/\n  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));\n\n    const uint32_t temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE();\n    const uint32_t temp_pllckselr = RCC->PLLCKSELR;\n    /* When the HSE is used as system clock or clock source for PLL in these cases HSE will not disabled */\n    if((temp_sysclksrc == RCC_CFGR_SWS_HSE) || ((temp_sysclksrc == RCC_CFGR_SWS_PLL1) && ((temp_pllckselr & RCC_PLLCKSELR_PLLSRC) == RCC_PLLCKSELR_PLLSRC_HSE)))\n    {\n      if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))\n      {\n        return HAL_ERROR;\n      }\n    }\n    else\n    {\n      /* Set the new HSE configuration ---------------------------------------*/\n      __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);\n\n      /* Check the HSE State */\n      if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)\n      {\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till HSE is ready */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)\n        {\n          if((uint32_t) (HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n      }\n      else\n      {\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till HSE is disabled */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U)\n        {\n          if((uint32_t) (HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n      }\n    }\n  }\n  /*----------------------------- HSI Configuration --------------------------*/\n  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));\n    assert_param(IS_RCC_HSICALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));\n\n    /* When the HSI is used as system clock it will not be disabled */\n    const uint32_t temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE();\n    const uint32_t temp_pllckselr = RCC->PLLCKSELR;\n    if((temp_sysclksrc == RCC_CFGR_SWS_HSI) || ((temp_sysclksrc == RCC_CFGR_SWS_PLL1) && ((temp_pllckselr & RCC_PLLCKSELR_PLLSRC) == RCC_PLLCKSELR_PLLSRC_HSI)))\n    {\n      /* When HSI is used as system clock it will not be disabled */\n      if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF))\n      {\n        return HAL_ERROR;\n      }\n      /* Otherwise, only HSI division and calibration are allowed */\n      else\n      {\n          /* Enable the Internal High Speed oscillator (HSI, HSIDIV2, HSIDIV4, or HSIDIV8) */\n          __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIState);\n\n          /* Get Start Tick*/\n          tickstart = HAL_GetTick();\n\n          /* Wait till HSI is ready */\n          while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)\n          {\n            if((uint32_t) (HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)\n            {\n              return HAL_TIMEOUT;\n            }\n          }\n        /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/\n        __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);\n      }\n    }\n\n    else\n    {\n      /* Check the HSI State */\n      if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)\n      {\n     /* Enable the Internal High Speed oscillator (HSI, HSIDIV2,HSIDIV4, or HSIDIV8) */\n        __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIState);\n\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till HSI is ready */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)\n        {\n          if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n\n        /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/\n        __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);\n      }\n      else\n      {\n        /* Disable the Internal High Speed oscillator (HSI). */\n        __HAL_RCC_HSI_DISABLE();\n\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till HSI is disabled */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U)\n        {\n          if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n      }\n    }\n  }\n  /*----------------------------- CSI Configuration --------------------------*/\n  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_CSI) == RCC_OSCILLATORTYPE_CSI)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_CSI(RCC_OscInitStruct->CSIState));\n    assert_param(IS_RCC_CSICALIBRATION_VALUE(RCC_OscInitStruct->CSICalibrationValue));\n\n    /* When the CSI is used as system clock it will not disabled */\n    const uint32_t temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE();\n    const uint32_t temp_pllckselr = RCC->PLLCKSELR;\n    if((temp_sysclksrc == RCC_CFGR_SWS_CSI) || ((temp_sysclksrc == RCC_CFGR_SWS_PLL1) && ((temp_pllckselr & RCC_PLLCKSELR_PLLSRC) == RCC_PLLCKSELR_PLLSRC_CSI)))\n    {\n      /* When CSI is used as system clock it will not disabled */\n      if((__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U) && (RCC_OscInitStruct->CSIState != RCC_CSI_ON))\n      {\n        return HAL_ERROR;\n      }\n      /* Otherwise, just the calibration is allowed */\n      else\n      {\n        /* Adjusts the Internal High Speed oscillator (CSI) calibration value.*/\n        __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->CSICalibrationValue);\n      }\n    }\n    else\n    {\n      /* Check the CSI State */\n      if((RCC_OscInitStruct->CSIState)!= RCC_CSI_OFF)\n      {\n        /* Enable the Internal High Speed oscillator (CSI). */\n        __HAL_RCC_CSI_ENABLE();\n\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till CSI is ready */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) == 0U)\n        {\n          if((HAL_GetTick() - tickstart ) > CSI_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n\n        /* Adjusts the Internal High Speed oscillator (CSI) calibration value.*/\n        __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->CSICalibrationValue);\n      }\n      else\n      {\n        /* Disable the Internal High Speed oscillator (CSI). */\n        __HAL_RCC_CSI_DISABLE();\n\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till CSI is disabled */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U)\n        {\n          if((HAL_GetTick() - tickstart ) > CSI_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n      }\n    }\n  }\n  /*------------------------------ LSI Configuration -------------------------*/\n  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));\n\n    /* Check the LSI State */\n    if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)\n    {\n      /* Enable the Internal Low Speed oscillator (LSI). */\n      __HAL_RCC_LSI_ENABLE();\n\n      /* Get Start Tick*/\n      tickstart = HAL_GetTick();\n\n      /* Wait till LSI is ready */\n      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U)\n      {\n        if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)\n        {\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n    else\n    {\n      /* Disable the Internal Low Speed oscillator (LSI). */\n      __HAL_RCC_LSI_DISABLE();\n\n      /* Get Start Tick*/\n      tickstart = HAL_GetTick();\n\n      /* Wait till LSI is ready */\n      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U)\n      {\n        if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)\n        {\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n\n  /*------------------------------ HSI48 Configuration -------------------------*/\n  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_HSI48(RCC_OscInitStruct->HSI48State));\n\n    /* Check the HSI48 State */\n    if((RCC_OscInitStruct->HSI48State)!= RCC_HSI48_OFF)\n    {\n      /* Enable the Internal Low Speed oscillator (HSI48). */\n      __HAL_RCC_HSI48_ENABLE();\n\n      /* Get time-out */\n      tickstart = HAL_GetTick();\n\n      /* Wait till HSI48 is ready */\n      while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U)\n      {\n        if((HAL_GetTick() - tickstart ) > HSI48_TIMEOUT_VALUE)\n        {\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n    else\n    {\n      /* Disable the Internal Low Speed oscillator (HSI48). */\n      __HAL_RCC_HSI48_DISABLE();\n\n      /* Get time-out */\n      tickstart = HAL_GetTick();\n\n      /* Wait till HSI48 is ready */\n      while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U)\n      {\n        if((HAL_GetTick() - tickstart ) > HSI48_TIMEOUT_VALUE)\n        {\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n  /*------------------------------ LSE Configuration -------------------------*/\n  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));\n\n    /* Enable write access to Backup domain */\n    PWR->CR1 |= PWR_CR1_DBP;\n\n    /* Wait for Backup domain Write protection disable */\n    tickstart = HAL_GetTick();\n\n    while((PWR->CR1 & PWR_CR1_DBP) == 0U)\n    {\n      if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n\n    /* Set the new LSE configuration -----------------------------------------*/\n    __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);\n    /* Check the LSE State */\n    if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)\n    {\n      /* Get Start Tick*/\n      tickstart = HAL_GetTick();\n\n      /* Wait till LSE is ready */\n      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)\n      {\n        if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)\n        {\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n    else\n    {\n      /* Get Start Tick*/\n      tickstart = HAL_GetTick();\n\n      /* Wait till LSE is disabled */\n      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U)\n      {\n        if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)\n        {\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n  /*-------------------------------- PLL Configuration -----------------------*/\n  /* Check the parameters */\n  assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));\n  if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)\n  {\n    /* Check if the PLL is used as system clock or not */\n    if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL1)\n    {\n      if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)\n      {\n        /* Check the parameters */\n        assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));\n        assert_param(IS_RCC_PLLRGE_VALUE(RCC_OscInitStruct->PLL.PLLRGE));\n        assert_param(IS_RCC_PLLVCO_VALUE(RCC_OscInitStruct->PLL.PLLVCOSEL));\n        assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->PLL.PLLM));\n        assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN));\n        assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP));\n        assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ));\n        assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR));\n        assert_param(IS_RCC_PLLFRACN_VALUE(RCC_OscInitStruct->PLL.PLLFRACN));\n\n        /* Disable the main PLL. */\n        __HAL_RCC_PLL_DISABLE();\n\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till PLL is disabled */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)\n        {\n          if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n\n        /* Configure the main PLL clock source, multiplication and division factors. */\n        __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,\n                             RCC_OscInitStruct->PLL.PLLM,\n                             RCC_OscInitStruct->PLL.PLLN,\n                             RCC_OscInitStruct->PLL.PLLP,\n                             RCC_OscInitStruct->PLL.PLLQ,\n                             RCC_OscInitStruct->PLL.PLLR);\n\n         /* Disable PLLFRACN . */\n         __HAL_RCC_PLLFRACN_DISABLE();\n\n         /* Configure PLL PLL1FRACN */\n         __HAL_RCC_PLLFRACN_CONFIG(RCC_OscInitStruct->PLL.PLLFRACN);\n\n        /* Select PLL1 input reference frequency range: VCI */\n        __HAL_RCC_PLL_VCIRANGE(RCC_OscInitStruct->PLL.PLLRGE) ;\n\n        /* Select PLL1 output frequency range : VCO */\n        __HAL_RCC_PLL_VCORANGE(RCC_OscInitStruct->PLL.PLLVCOSEL) ;\n\n        /* Enable PLL System Clock output. */\n         __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVP);\n\n        /* Enable PLL1Q Clock output. */\n         __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n        /* Enable PLL1R  Clock output. */\n         __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVR);\n\n        /* Enable PLL1FRACN . */\n         __HAL_RCC_PLLFRACN_ENABLE();\n\n        /* Enable the main PLL. */\n        __HAL_RCC_PLL_ENABLE();\n\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till PLL is ready */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)\n        {\n          if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n      }\n      else\n      {\n        /* Disable the main PLL. */\n        __HAL_RCC_PLL_DISABLE();\n\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till PLL is disabled */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)\n        {\n          if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n      }\n    }\n    else\n    {\n      /* Do not return HAL_ERROR if request repeats the current configuration */\n      temp1_pllckcfg = RCC->PLLCKSELR;\n      temp2_pllckcfg = RCC->PLL1DIVR;\n      if(((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||\n\t (READ_BIT(temp1_pllckcfg, RCC_PLLCKSELR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||\n         ((READ_BIT(temp1_pllckcfg, RCC_PLLCKSELR_DIVM1) >> RCC_PLLCKSELR_DIVM1_Pos) != RCC_OscInitStruct->PLL.PLLM) ||\n         (READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_N1) != (RCC_OscInitStruct->PLL.PLLN - 1U)) ||\n         ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_P1) >> RCC_PLL1DIVR_P1_Pos) != (RCC_OscInitStruct->PLL.PLLP - 1U)) ||\n         ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_Q1) >> RCC_PLL1DIVR_Q1_Pos) != (RCC_OscInitStruct->PLL.PLLQ - 1U)) ||\n         ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_R1) >> RCC_PLL1DIVR_R1_Pos) != (RCC_OscInitStruct->PLL.PLLR - 1U)))\n      {\n        return HAL_ERROR;\n      }\n    }\n  }\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the CPU, AHB and APB buses clocks according to the specified\n  *         parameters in the RCC_ClkInitStruct.\n  * @param  RCC_ClkInitStruct: pointer to an RCC_OscInitTypeDef structure that\n  *         contains the configuration information for the RCC peripheral.\n  * @param  FLatency: FLASH Latency, this parameter depend on device selected\n  *\n  * @note   The SystemCoreClock CMSIS variable is used to store System Core Clock Frequency\n  *         and updated by HAL_InitTick() function called within this function\n  *\n  * @note   The HSI is used (enabled by hardware) as system clock source after\n  *         start-up from Reset, wake-up from STOP and STANDBY mode, or in case\n  *         of failure of the HSE used directly or indirectly as system clock\n  *         (if the Clock Security System CSS is enabled).\n  *\n  * @note   A switch from one clock source to another occurs only if the target\n  *         clock source is ready (clock stable after start-up delay or PLL locked).\n  *         If a clock source which is not yet ready is selected, the switch will\n  *         occur when the clock source will be ready.\n  *         You can use HAL_RCC_GetClockConfig() function to know which clock is\n  *         currently used as system clock source.\n  * @note   Depending on the device voltage range, the software has to set correctly\n  *         D1CPRE[3:0] bits to ensure that  Domain1 core clock not exceed the maximum allowed frequency\n  *         (for more details refer to section above \"Initialization/de-initialization functions\")\n  * @retval None\n  */\nHAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t FLatency)\n{\n  HAL_StatusTypeDef halstatus;\n  uint32_t tickstart;\n  uint32_t common_system_clock;\n\n   /* Check Null pointer */\n  if(RCC_ClkInitStruct == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType));\n  assert_param(IS_FLASH_LATENCY(FLatency));\n\n  /* To correctly read data from FLASH memory, the number of wait states (LATENCY)\n    must be correctly programmed according to the frequency of the CPU clock\n    (HCLK) and the supply voltage of the device. */\n\n  /* Increasing the CPU frequency */\n  if(FLatency > __HAL_FLASH_GET_LATENCY())\n  {\n    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\n    __HAL_FLASH_SET_LATENCY(FLatency);\n\n    /* Check that the new number of wait states is taken into account to access the Flash\n    memory by reading the FLASH_ACR register */\n    if(__HAL_FLASH_GET_LATENCY() != FLatency)\n    {\n      return HAL_ERROR;\n    }\n\n  }\n\n  /* Increasing the BUS frequency divider */\n  /*-------------------------- D1PCLK1/CDPCLK1 Configuration ---------------------------*/\n  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D1PCLK1) == RCC_CLOCKTYPE_D1PCLK1)\n  {\n#if defined (RCC_D1CFGR_D1PPRE)\n    if((RCC_ClkInitStruct->APB3CLKDivider) > (RCC->D1CFGR & RCC_D1CFGR_D1PPRE))\n    {\n      assert_param(IS_RCC_D1PCLK1(RCC_ClkInitStruct->APB3CLKDivider));\n      MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1PPRE, RCC_ClkInitStruct->APB3CLKDivider);\n    }\n#else\n    if((RCC_ClkInitStruct->APB3CLKDivider) > (RCC->CDCFGR1 & RCC_CDCFGR1_CDPPRE))\n    {\n      assert_param(IS_RCC_CDPCLK1(RCC_ClkInitStruct->APB3CLKDivider));\n      MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_CDPPRE, RCC_ClkInitStruct->APB3CLKDivider);\n    }\n#endif\n  }\n\n  /*-------------------------- PCLK1 Configuration ---------------------------*/\n  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)\n  {\n#if defined (RCC_D2CFGR_D2PPRE1)\n    if((RCC_ClkInitStruct->APB1CLKDivider) > (RCC->D2CFGR & RCC_D2CFGR_D2PPRE1))\n    {\n      assert_param(IS_RCC_PCLK1(RCC_ClkInitStruct->APB1CLKDivider));\n      MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1, (RCC_ClkInitStruct->APB1CLKDivider));\n    }\n#else\n    if((RCC_ClkInitStruct->APB1CLKDivider) > (RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE1))\n    {\n      assert_param(IS_RCC_PCLK1(RCC_ClkInitStruct->APB1CLKDivider));\n      MODIFY_REG(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE1, (RCC_ClkInitStruct->APB1CLKDivider));\n  }\n#endif\n    }\n  /*-------------------------- PCLK2 Configuration ---------------------------*/\n  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)\n  {\n#if defined(RCC_D2CFGR_D2PPRE2)\n    if((RCC_ClkInitStruct->APB2CLKDivider) > (RCC->D2CFGR & RCC_D2CFGR_D2PPRE2))\n    {\n      assert_param(IS_RCC_PCLK2(RCC_ClkInitStruct->APB2CLKDivider));\n      MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2, (RCC_ClkInitStruct->APB2CLKDivider));\n    }\n#else\n     if((RCC_ClkInitStruct->APB2CLKDivider) > (RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE2))\n    {\n      assert_param(IS_RCC_PCLK2(RCC_ClkInitStruct->APB2CLKDivider));\n      MODIFY_REG(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE2, (RCC_ClkInitStruct->APB2CLKDivider));\n    }\n#endif\n  }\n\n  /*-------------------------- D3PCLK1 Configuration ---------------------------*/\n  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D3PCLK1) == RCC_CLOCKTYPE_D3PCLK1)\n  {\n#if defined(RCC_D3CFGR_D3PPRE)\n    if((RCC_ClkInitStruct->APB4CLKDivider) > (RCC->D3CFGR & RCC_D3CFGR_D3PPRE))\n    {\n      assert_param(IS_RCC_D3PCLK1(RCC_ClkInitStruct->APB4CLKDivider));\n      MODIFY_REG(RCC->D3CFGR, RCC_D3CFGR_D3PPRE, (RCC_ClkInitStruct->APB4CLKDivider) );\n    }\n#else\n    if((RCC_ClkInitStruct->APB4CLKDivider) > (RCC->SRDCFGR & RCC_SRDCFGR_SRDPPRE))\n    {\n      assert_param(IS_RCC_D3PCLK1(RCC_ClkInitStruct->APB4CLKDivider));\n      MODIFY_REG(RCC->SRDCFGR, RCC_SRDCFGR_SRDPPRE, (RCC_ClkInitStruct->APB4CLKDivider) );\n    }\n#endif\n  }\n\n   /*-------------------------- HCLK Configuration --------------------------*/\n  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)\n  {\n#if defined (RCC_D1CFGR_HPRE)\n    if((RCC_ClkInitStruct->AHBCLKDivider) > (RCC->D1CFGR & RCC_D1CFGR_HPRE))\n    {\n      /* Set the new HCLK clock divider */\n      assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));\n      MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);\n    }\n#else\n        if((RCC_ClkInitStruct->AHBCLKDivider) > (RCC->CDCFGR1 & RCC_CDCFGR1_HPRE))\n    {\n      /* Set the new HCLK clock divider */\n      assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));\n      MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_HPRE, RCC_ClkInitStruct->AHBCLKDivider);\n    }\n#endif\n  }\n\n    /*------------------------- SYSCLK Configuration -------------------------*/\n    if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)\n    {\n      assert_param(IS_RCC_SYSCLK(RCC_ClkInitStruct->SYSCLKDivider));\n      assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));\n#if defined(RCC_D1CFGR_D1CPRE)\n      MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1CPRE, RCC_ClkInitStruct->SYSCLKDivider);\n#else\n      MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_CDCPRE, RCC_ClkInitStruct->SYSCLKDivider);\n#endif\n      /* HSE is selected as System Clock Source */\n      if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)\n      {\n        /* Check the HSE ready flag */\n        if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)\n        {\n          return HAL_ERROR;\n        }\n      }\n      /* PLL is selected as System Clock Source */\n      else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)\n      {\n        /* Check the PLL ready flag */\n        if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)\n        {\n          return HAL_ERROR;\n        }\n      }\n      /* CSI is selected as System Clock Source */\n      else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_CSI)\n      {\n        /* Check the PLL ready flag */\n        if(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) == 0U)\n        {\n          return HAL_ERROR;\n        }\n      }\n      /* HSI is selected as System Clock Source */\n      else\n      {\n        /* Check the HSI ready flag */\n        if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)\n        {\n          return HAL_ERROR;\n        }\n      }\n      MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource);\n\n      /* Get Start Tick*/\n      tickstart = HAL_GetTick();\n\n        while (__HAL_RCC_GET_SYSCLK_SOURCE() !=  (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))\n        {\n          if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)\n          {\n            return HAL_TIMEOUT;\n          }\n        }\n\n    }\n\n    /* Decreasing the BUS frequency divider */\n   /*-------------------------- HCLK Configuration --------------------------*/\n  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)\n  {\n#if defined(RCC_D1CFGR_HPRE)\n    if((RCC_ClkInitStruct->AHBCLKDivider) < (RCC->D1CFGR & RCC_D1CFGR_HPRE))\n    {\n      /* Set the new HCLK clock divider */\n      assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));\n      MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);\n    }\n#else\n    if((RCC_ClkInitStruct->AHBCLKDivider) < (RCC->CDCFGR1 & RCC_CDCFGR1_HPRE))\n    {\n      /* Set the new HCLK clock divider */\n      assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));\n      MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_HPRE, RCC_ClkInitStruct->AHBCLKDivider);\n    }\n#endif\n  }\n\n  /* Decreasing the number of wait states because of lower CPU frequency */\n  if(FLatency < __HAL_FLASH_GET_LATENCY())\n  {\n    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\n    __HAL_FLASH_SET_LATENCY(FLatency);\n\n    /* Check that the new number of wait states is taken into account to access the Flash\n    memory by reading the FLASH_ACR register */\n    if(__HAL_FLASH_GET_LATENCY() != FLatency)\n    {\n      return HAL_ERROR;\n    }\n }\n\n  /*-------------------------- D1PCLK1/CDPCLK Configuration ---------------------------*/\n if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D1PCLK1) == RCC_CLOCKTYPE_D1PCLK1)\n {\n#if defined(RCC_D1CFGR_D1PPRE)\n   if((RCC_ClkInitStruct->APB3CLKDivider) < (RCC->D1CFGR & RCC_D1CFGR_D1PPRE))\n   {\n     assert_param(IS_RCC_D1PCLK1(RCC_ClkInitStruct->APB3CLKDivider));\n     MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1PPRE, RCC_ClkInitStruct->APB3CLKDivider);\n   }\n#else\n   if((RCC_ClkInitStruct->APB3CLKDivider) < (RCC->CDCFGR1 & RCC_CDCFGR1_CDPPRE))\n   {\n     assert_param(IS_RCC_CDPCLK1(RCC_ClkInitStruct->APB3CLKDivider));\n     MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_CDPPRE, RCC_ClkInitStruct->APB3CLKDivider);\n   }\n#endif\n }\n\n  /*-------------------------- PCLK1 Configuration ---------------------------*/\n if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)\n {\n#if defined(RCC_D2CFGR_D2PPRE1)\n   if((RCC_ClkInitStruct->APB1CLKDivider) < (RCC->D2CFGR & RCC_D2CFGR_D2PPRE1))\n   {\n     assert_param(IS_RCC_PCLK1(RCC_ClkInitStruct->APB1CLKDivider));\n     MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1, (RCC_ClkInitStruct->APB1CLKDivider));\n   }\n#else\n   if((RCC_ClkInitStruct->APB1CLKDivider) < (RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE1))\n   {\n     assert_param(IS_RCC_PCLK1(RCC_ClkInitStruct->APB1CLKDivider));\n     MODIFY_REG(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE1, (RCC_ClkInitStruct->APB1CLKDivider));\n   }\n#endif\n }\n\n  /*-------------------------- PCLK2 Configuration ---------------------------*/\n if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)\n {\n#if defined (RCC_D2CFGR_D2PPRE2)\n   if((RCC_ClkInitStruct->APB2CLKDivider) < (RCC->D2CFGR & RCC_D2CFGR_D2PPRE2))\n   {\n     assert_param(IS_RCC_PCLK2(RCC_ClkInitStruct->APB2CLKDivider));\n     MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2, (RCC_ClkInitStruct->APB2CLKDivider));\n   }\n#else\n   if((RCC_ClkInitStruct->APB2CLKDivider) < (RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE2))\n   {\n     assert_param(IS_RCC_PCLK2(RCC_ClkInitStruct->APB2CLKDivider));\n     MODIFY_REG(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE2, (RCC_ClkInitStruct->APB2CLKDivider));\n   }\n#endif\n }\n\n  /*-------------------------- D3PCLK1/SRDPCLK1 Configuration ---------------------------*/\n if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D3PCLK1) == RCC_CLOCKTYPE_D3PCLK1)\n {\n#if defined(RCC_D3CFGR_D3PPRE)\n   if((RCC_ClkInitStruct->APB4CLKDivider) < (RCC->D3CFGR & RCC_D3CFGR_D3PPRE))\n   {\n     assert_param(IS_RCC_D3PCLK1(RCC_ClkInitStruct->APB4CLKDivider));\n     MODIFY_REG(RCC->D3CFGR, RCC_D3CFGR_D3PPRE, (RCC_ClkInitStruct->APB4CLKDivider) );\n   }\n#else\n   if((RCC_ClkInitStruct->APB4CLKDivider) < (RCC->SRDCFGR & RCC_SRDCFGR_SRDPPRE))\n   {\n     assert_param(IS_RCC_SRDPCLK1(RCC_ClkInitStruct->APB4CLKDivider));\n     MODIFY_REG(RCC->SRDCFGR, RCC_SRDCFGR_SRDPPRE, (RCC_ClkInitStruct->APB4CLKDivider) );\n   }\n#endif\n }\n\n  /* Update the SystemCoreClock global variable */\n#if defined(RCC_D1CFGR_D1CPRE)\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos]) & 0x1FU);\n#else\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos]) & 0x1FU);\n#endif\n\n#if defined(RCC_D1CFGR_HPRE)\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU));\n#else\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_HPRE)>> RCC_CDCFGR1_HPRE_Pos]) & 0x1FU));\n#endif\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  SystemCoreClock = SystemD2Clock;\n#else\n  SystemCoreClock = common_system_clock;\n#endif /* DUAL_CORE && CORE_CM4 */\n\n  /* Configure the source of time base considering new system clocks settings*/\n  halstatus = HAL_InitTick (uwTickPrio);\n\n  return halstatus;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup RCC_Group2 Peripheral Control functions\n *  @brief   RCC clocks control functions\n *\n@verbatim\n ===============================================================================\n                      ##### Peripheral Control functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to control the RCC Clocks\n    frequencies.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Selects the clock source to output on MCO1 pin(PA8) or on MCO2 pin(PC9).\n  * @note   PA8/PC9 should be configured in alternate function mode.\n  * @param  RCC_MCOx: specifies the output direction for the clock source.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_MCO1: Clock source to output on MCO1 pin(PA8).\n  *            @arg RCC_MCO2: Clock source to output on MCO2 pin(PC9).\n  * @param  RCC_MCOSource: specifies the clock source to output.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_MCO1SOURCE_HSI: HSI clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_LSE: LSE clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_HSE: HSE clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_PLL1QCLK:  PLL1Q clock selected as MCO1 source\n  *            @arg RCC_MCO1SOURCE_HSI48: HSI48 (48MHZ) selected as MCO1 source\n  *            @arg RCC_MCO2SOURCE_SYSCLK: System clock (SYSCLK) selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_PLL2PCLK: PLL2P clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_HSE: HSE clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_PLLCLK:  PLL1P clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_CSICLK:  CSI clock selected as MCO2 source\n  *            @arg RCC_MCO2SOURCE_LSICLK:  LSI clock selected as MCO2 source\n  * @param  RCC_MCODiv: specifies the MCOx pre-scaler.\n  *          This parameter can be one of the following values:\n  *            @arg RCC_MCODIV_1 up to RCC_MCODIV_15  : divider applied to MCOx clock\n  * @retval None\n  */\nvoid HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv)\n{\n  GPIO_InitTypeDef GPIO_InitStruct;\n  /* Check the parameters */\n  assert_param(IS_RCC_MCO(RCC_MCOx));\n  assert_param(IS_RCC_MCODIV(RCC_MCODiv));\n  /* RCC_MCO1 */\n  if(RCC_MCOx == RCC_MCO1)\n  {\n    assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));\n\n    /* MCO1 Clock Enable */\n    MCO1_CLK_ENABLE();\n\n    /* Configure the MCO1 pin in alternate function mode */\n    GPIO_InitStruct.Pin = MCO1_PIN;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Alternate = GPIO_AF0_MCO;\n    HAL_GPIO_Init(MCO1_GPIO_PORT, &GPIO_InitStruct);\n\n    /* Mask MCO1 and MCO1PRE[3:0] bits then Select MCO1 clock source and pre-scaler */\n    MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), (RCC_MCOSource | RCC_MCODiv));\n  }\n  else\n  {\n    assert_param(IS_RCC_MCO2SOURCE(RCC_MCOSource));\n\n    /* MCO2 Clock Enable */\n    MCO2_CLK_ENABLE();\n\n    /* Configure the MCO2 pin in alternate function mode */\n    GPIO_InitStruct.Pin = MCO2_PIN;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Alternate = GPIO_AF0_MCO;\n    HAL_GPIO_Init(MCO2_GPIO_PORT, &GPIO_InitStruct);\n\n    /* Mask MCO2 and MCO2PRE[3:0] bits then Select MCO2 clock source and pre-scaler */\n    MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), (RCC_MCOSource | (RCC_MCODiv << 7U)));\n  }\n}\n\n/**\n  * @brief  Enables the Clock Security System.\n  * @note   If a failure is detected on the HSE oscillator clock, this oscillator\n  *         is automatically disabled and an interrupt is generated to inform the\n  *         software about the failure (Clock Security System Interrupt, CSSI),\n  *         allowing the MCU to perform rescue operations. The CSSI is linked to\n  *         the Cortex-M NMI (Non-Mask-able Interrupt) exception vector.\n  * @retval None\n  */\nvoid HAL_RCC_EnableCSS(void)\n{\n  SET_BIT(RCC->CR, RCC_CR_CSSHSEON) ;\n}\n\n/**\n  * @brief  Disables the Clock Security System.\n  * @retval None\n  */\nvoid HAL_RCC_DisableCSS(void)\n{\n  CLEAR_BIT(RCC->CR, RCC_CR_CSSHSEON);\n}\n\n/**\n  * @brief  Returns the SYSCLK frequency\n  *\n  * @note   The system frequency computed by this function is not the real\n  *         frequency in the chip. It is calculated based on the predefined\n  *         constant and the selected clock source:\n  * @note     If SYSCLK source is CSI, function returns values based on CSI_VALUE(*)\n  * @note     If SYSCLK source is HSI, function returns values based on HSI_VALUE(**)\n  * @note     If SYSCLK source is HSE, function returns values based on HSE_VALUE(***)\n  * @note     If SYSCLK source is PLL, function returns values based on CSI_VALUE(*),\n  *           HSI_VALUE(**) or HSE_VALUE(***) multiplied/divided by the PLL factors.\n  * @note     (*) CSI_VALUE is a constant defined in stm32h7xx_hal_conf.h file (default value\n  *               4 MHz) but the real value may vary depending on the variations\n  *               in voltage and temperature.\n  * @note     (**) HSI_VALUE is a constant defined in stm32h7xx_hal_conf.h file (default value\n  *               64 MHz) but the real value may vary depending on the variations\n  *               in voltage and temperature.\n  * @note     (***) HSE_VALUE is a constant defined in stm32h7xx_hal_conf.h file (default value\n  *                25 MHz), user has to ensure that HSE_VALUE is same as the real\n  *                frequency of the crystal used. Otherwise, this function may\n  *                have wrong result.\n  *\n  * @note   The result of this function could be not correct when using fractional\n  *         value for HSE crystal.\n  *\n  * @note   This function can be used by the user application to compute the\n  *         baud rate for the communication peripherals or configure other parameters.\n  *\n  * @note   Each time SYSCLK changes, this function must be called to update the\n  *         right SYSCLK value. Otherwise, any configuration based on this function will be incorrect.\n  *\n  *\n  * @retval SYSCLK frequency\n  */\nuint32_t HAL_RCC_GetSysClockFreq(void)\n{\n  uint32_t pllp, pllsource, pllm, pllfracen, hsivalue;\n  float_t fracn1, pllvco;\n  uint32_t sysclockfreq;\n\n  /* Get SYSCLK source -------------------------------------------------------*/\n\n  switch (RCC->CFGR & RCC_CFGR_SWS)\n  {\n  case RCC_CFGR_SWS_HSI:  /* HSI used as system clock source */\n\n   if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n      {\n        sysclockfreq = (uint32_t) (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n      }\n      else\n      {\n        sysclockfreq = (uint32_t) HSI_VALUE;\n      }\n\n    break;\n\n  case RCC_CFGR_SWS_CSI:  /* CSI used as system clock  source */\n    sysclockfreq = CSI_VALUE;\n    break;\n\n  case RCC_CFGR_SWS_HSE:  /* HSE used as system clock  source */\n    sysclockfreq = HSE_VALUE;\n    break;\n\n  case RCC_CFGR_SWS_PLL1:  /* PLL1 used as system clock  source */\n\n    /* PLL_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLLM) * PLLN\n    SYSCLK = PLL_VCO / PLLR\n    */\n    pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC);\n    pllm = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> 4)  ;\n    pllfracen = ((RCC-> PLLCFGR & RCC_PLLCFGR_PLL1FRACEN)>>RCC_PLLCFGR_PLL1FRACEN_Pos);\n    fracn1 = (float_t)(uint32_t)(pllfracen* ((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1)>> 3));\n\n    if (pllm != 0U)\n    {\n      switch (pllsource)\n      {\n      case RCC_PLLSOURCE_HSI:  /* HSI used as PLL clock source */\n\n       if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n        {\n          hsivalue= (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          pllvco = ( (float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        }\n        else\n        {\n          pllvco = ((float_t)HSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        }\n        break;\n\n      case RCC_PLLSOURCE_CSI:  /* CSI used as PLL clock source */\n        pllvco = ((float_t)CSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        break;\n\n      case RCC_PLLSOURCE_HSE:  /* HSE used as PLL clock source */\n        pllvco = ((float_t)HSE_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        break;\n\n      default:\n        pllvco = ((float_t)CSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n        break;\n      }\n      pllp = (((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >>9) + 1U ) ;\n      sysclockfreq =  (uint32_t)(float_t)(pllvco/(float_t)pllp);\n    }\n    else\n    {\n      sysclockfreq = 0U;\n    }\n    break;\n\n  default:\n    sysclockfreq = CSI_VALUE;\n    break;\n  }\n\n  return sysclockfreq;\n}\n\n\n/**\n  * @brief  Returns the HCLK frequency\n  * @note   Each time HCLK changes, this function must be called to update the\n  *         right HCLK value. Otherwise, any configuration based on this function will be incorrect.\n  *\n  * @note   The SystemD2Clock CMSIS variable is used to store System domain2 Clock Frequency\n  *         and updated within this function\n  * @retval HCLK frequency\n  */\nuint32_t HAL_RCC_GetHCLKFreq(void)\n{\nuint32_t common_system_clock;\n\n#if defined(RCC_D1CFGR_D1CPRE)\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> (D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos] & 0x1FU);\n#else\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> (D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos] & 0x1FU);\n#endif\n\n#if defined(RCC_D1CFGR_HPRE)\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU));\n#else\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_HPRE)>> RCC_CDCFGR1_HPRE_Pos]) & 0x1FU));\n#endif\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  SystemCoreClock = SystemD2Clock;\n#else\n  SystemCoreClock = common_system_clock;\n#endif /* DUAL_CORE && CORE_CM4 */\n\n  return SystemD2Clock;\n}\n\n\n/**\n  * @brief  Returns the PCLK1 frequency\n  * @note   Each time PCLK1 changes, this function must be called to update the\n  *         right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.\n  * @retval PCLK1 frequency\n  */\nuint32_t HAL_RCC_GetPCLK1Freq(void)\n{\n#if defined (RCC_D2CFGR_D2PPRE1)\n  /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/\n  return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->D2CFGR & RCC_D2CFGR_D2PPRE1)>> RCC_D2CFGR_D2PPRE1_Pos]) & 0x1FU));\n#else\n /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/\n  return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE1)>> RCC_CDCFGR2_CDPPRE1_Pos]) & 0x1FU));\n#endif\n}\n\n\n/**\n  * @brief  Returns the PCLK2 frequency\n  * @note   Each time PCLK2 changes, this function must be called to update the\n  *         right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.\n  * @retval PCLK1 frequency\n  */\nuint32_t HAL_RCC_GetPCLK2Freq(void)\n{\n  /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/\n#if defined(RCC_D2CFGR_D2PPRE2)\n  return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->D2CFGR & RCC_D2CFGR_D2PPRE2)>> RCC_D2CFGR_D2PPRE2_Pos]) & 0x1FU));\n#else\n  return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE2)>> RCC_CDCFGR2_CDPPRE2_Pos]) & 0x1FU));\n#endif\n}\n\n/**\n  * @brief  Configures the RCC_OscInitStruct according to the internal\n  * RCC configuration registers.\n  * @param  RCC_OscInitStruct: pointer to an RCC_OscInitTypeDef structure that\n  * will be configured.\n  * @retval None\n  */\nvoid HAL_RCC_GetOscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct)\n{\n  /* Set all possible values for the Oscillator type parameter ---------------*/\n  RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_CSI | \\\n                                      RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI| RCC_OSCILLATORTYPE_HSI48;\n\n  /* Get the HSE configuration -----------------------------------------------*/\n#if defined(RCC_CR_HSEEXT)\n  if((RCC->CR &(RCC_CR_HSEBYP | RCC_CR_HSEEXT)) == RCC_CR_HSEBYP)\n  {\n    RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;\n  }\n  else if((RCC->CR &(RCC_CR_HSEBYP | RCC_CR_HSEEXT)) == (RCC_CR_HSEBYP | RCC_CR_HSEEXT))\n  {\n    RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS_DIGITAL;\n  }\n  else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON)\n  {\n    RCC_OscInitStruct->HSEState = RCC_HSE_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->HSEState = RCC_HSE_OFF;\n  }\n#else\n  if((RCC->CR &RCC_CR_HSEBYP) == RCC_CR_HSEBYP)\n  {\n    RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;\n  }\n  else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON)\n  {\n    RCC_OscInitStruct->HSEState = RCC_HSE_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->HSEState = RCC_HSE_OFF;\n  }\n#endif /* RCC_CR_HSEEXT */\n\n   /* Get the CSI configuration -----------------------------------------------*/\n  if((RCC->CR &RCC_CR_CSION) == RCC_CR_CSION)\n  {\n    RCC_OscInitStruct->CSIState = RCC_CSI_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->CSIState = RCC_CSI_OFF;\n  }\n\n#if defined(RCC_VER_X)\n  if(HAL_GetREVID() <= REV_ID_Y)\n  {\n    RCC_OscInitStruct->CSICalibrationValue = (uint32_t)(READ_BIT(RCC->HSICFGR, HAL_RCC_REV_Y_CSITRIM_Msk) >> HAL_RCC_REV_Y_CSITRIM_Pos);\n  }\n  else\n  {\n    RCC_OscInitStruct->CSICalibrationValue = (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSITRIM) >> RCC_CSICFGR_CSITRIM_Pos);\n  }\n#else\n RCC_OscInitStruct->CSICalibrationValue = (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSITRIM) >> RCC_CSICFGR_CSITRIM_Pos);\n#endif /*RCC_VER_X*/\n\n  /* Get the HSI configuration -----------------------------------------------*/\n  if((RCC->CR &RCC_CR_HSION) == RCC_CR_HSION)\n  {\n    RCC_OscInitStruct->HSIState = RCC_HSI_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->HSIState = RCC_HSI_OFF;\n  }\n\n#if defined(RCC_VER_X)\n  if(HAL_GetREVID() <= REV_ID_Y)\n  {\n    RCC_OscInitStruct->HSICalibrationValue = (uint32_t)(READ_BIT(RCC->HSICFGR, HAL_RCC_REV_Y_HSITRIM_Msk) >> HAL_RCC_REV_Y_HSITRIM_Pos);\n  }\n  else\n  {\n    RCC_OscInitStruct->HSICalibrationValue = (uint32_t)(READ_BIT(RCC->HSICFGR, RCC_HSICFGR_HSITRIM) >> RCC_HSICFGR_HSITRIM_Pos);\n  }\n#else\n    RCC_OscInitStruct->HSICalibrationValue = (uint32_t)(READ_BIT(RCC->HSICFGR, RCC_HSICFGR_HSITRIM) >> RCC_HSICFGR_HSITRIM_Pos);\n#endif /*RCC_VER_X*/\n\n  /* Get the LSE configuration -----------------------------------------------*/\n#if defined(RCC_BDCR_LSEEXT)\n  if((RCC->BDCR &(RCC_BDCR_LSEBYP|RCC_BDCR_LSEEXT)) == RCC_BDCR_LSEBYP)\n  {\n    RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;\n  }\n  else if((RCC->BDCR &(RCC_BDCR_LSEBYP|RCC_BDCR_LSEEXT)) == (RCC_BDCR_LSEBYP|RCC_BDCR_LSEEXT))\n  {\n    RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS_DIGITAL;\n  }\n  else if((RCC->BDCR &RCC_BDCR_LSEON) == RCC_BDCR_LSEON)\n  {\n    RCC_OscInitStruct->LSEState = RCC_LSE_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->LSEState = RCC_LSE_OFF;\n  }\n#else\n  if((RCC->BDCR &RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)\n  {\n    RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;\n  }\n  else if((RCC->BDCR &RCC_BDCR_LSEON) == RCC_BDCR_LSEON)\n  {\n    RCC_OscInitStruct->LSEState = RCC_LSE_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->LSEState = RCC_LSE_OFF;\n  }\n#endif /* RCC_BDCR_LSEEXT */\n\n  /* Get the LSI configuration -----------------------------------------------*/\n  if((RCC->CSR &RCC_CSR_LSION) == RCC_CSR_LSION)\n  {\n    RCC_OscInitStruct->LSIState = RCC_LSI_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->LSIState = RCC_LSI_OFF;\n  }\n\n  /* Get the HSI48 configuration ---------------------------------------------*/\n  if((RCC->CR & RCC_CR_HSI48ON) == RCC_CR_HSI48ON)\n  {\n    RCC_OscInitStruct->HSI48State = RCC_HSI48_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->HSI48State = RCC_HSI48_OFF;\n  }\n\n  /* Get the PLL configuration -----------------------------------------------*/\n  if((RCC->CR &RCC_CR_PLLON) == RCC_CR_PLLON)\n  {\n    RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;\n  }\n  else\n  {\n    RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF;\n  }\n  RCC_OscInitStruct->PLL.PLLSource = (uint32_t)(RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC);\n  RCC_OscInitStruct->PLL.PLLM = (uint32_t)((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> RCC_PLLCKSELR_DIVM1_Pos);\n  RCC_OscInitStruct->PLL.PLLN = (uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_N1) >> RCC_PLL1DIVR_N1_Pos)+ 1U;\n  RCC_OscInitStruct->PLL.PLLR = (uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_R1) >> RCC_PLL1DIVR_R1_Pos)+ 1U;\n  RCC_OscInitStruct->PLL.PLLP = (uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >> RCC_PLL1DIVR_P1_Pos)+ 1U;\n  RCC_OscInitStruct->PLL.PLLQ = (uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_Q1) >> RCC_PLL1DIVR_Q1_Pos)+ 1U;\n  RCC_OscInitStruct->PLL.PLLRGE = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLL1RGE));\n  RCC_OscInitStruct->PLL.PLLVCOSEL = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLL1VCOSEL) >> RCC_PLLCFGR_PLL1VCOSEL_Pos);\n  RCC_OscInitStruct->PLL.PLLFRACN = (uint32_t)(((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1) >> RCC_PLL1FRACR_FRACN1_Pos));\n}\n\n/**\n  * @brief  Configures the RCC_ClkInitStruct according to the internal\n  * RCC configuration registers.\n  * @param  RCC_ClkInitStruct: pointer to an RCC_ClkInitTypeDef structure that\n  * will be configured.\n  * @param  pFLatency: Pointer on the Flash Latency.\n  * @retval None\n  */\nvoid HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t *pFLatency)\n{\n  /* Set all possible values for the Clock type parameter --------------------*/\n  RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_PCLK1 |\n                                 RCC_CLOCKTYPE_PCLK2 |  RCC_CLOCKTYPE_D3PCLK1  ;\n\n  /* Get the SYSCLK configuration --------------------------------------------*/\n  RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW);\n\n#if defined(RCC_D1CFGR_D1CPRE)\n  /* Get the SYSCLK configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->SYSCLKDivider = (uint32_t)(RCC->D1CFGR & RCC_D1CFGR_D1CPRE);\n\n  /* Get the D1HCLK configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->D1CFGR & RCC_D1CFGR_HPRE);\n\n  /* Get the APB3 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB3CLKDivider = (uint32_t)(RCC->D1CFGR & RCC_D1CFGR_D1PPRE);\n\n  /* Get the APB1 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->D2CFGR & RCC_D2CFGR_D2PPRE1);\n\n  /* Get the APB2 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)(RCC->D2CFGR & RCC_D2CFGR_D2PPRE2);\n\n  /* Get the APB4 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB4CLKDivider = (uint32_t)(RCC->D3CFGR & RCC_D3CFGR_D3PPRE);\n#else\n  /* Get the SYSCLK configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->SYSCLKDivider = (uint32_t)(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE);\n\n  /* Get the D1HCLK configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CDCFGR1 & RCC_CDCFGR1_HPRE);\n\n  /* Get the APB3 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB3CLKDivider = (uint32_t)(RCC->CDCFGR1 & RCC_CDCFGR1_CDPPRE);\n\n  /* Get the APB1 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE1);\n\n  /* Get the APB2 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE2);\n\n  /* Get the APB4 configuration ----------------------------------------------*/\n  RCC_ClkInitStruct->APB4CLKDivider = (uint32_t)(RCC->SRDCFGR & RCC_SRDCFGR_SRDPPRE);\n#endif\n\n  /* Get the Flash Wait State (Latency) configuration ------------------------*/\n  *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY);\n}\n\n/**\n  * @brief This function handles the RCC CSS interrupt request.\n  * @note This API should be called under the NMI_Handler().\n  * @retval None\n  */\nvoid HAL_RCC_NMI_IRQHandler(void)\n{\n  /* Check RCC CSSF flag  */\n  if(__HAL_RCC_GET_IT(RCC_IT_CSS))\n  {\n    /* RCC Clock Security System interrupt user callback */\n    HAL_RCC_CCSCallback();\n\n    /* Clear RCC CSS pending bit */\n    __HAL_RCC_CLEAR_IT(RCC_IT_CSS);\n  }\n}\n\n/**\n  * @brief  RCC Clock Security System interrupt callback\n  * @retval none\n  */\n__weak void HAL_RCC_CCSCallback(void)\n{\n  /* NOTE : This function Should not be modified, when the callback is needed,\n            the HAL_RCC_CCSCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n#endif /* HAL_RCC_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_rcc_ex.c\n  * @author  MCD Application Team\n  * @brief   Extended RCC HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities RCC extension peripheral:\n  *           + Extended Peripheral Control functions\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file in\n  * the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup RCCEx  RCCEx\n  * @brief RCC HAL module driver\n  * @{\n  */\n\n#ifdef HAL_RCC_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private defines -----------------------------------------------------------*/\n/** @defgroup RCCEx_Private_defines RCCEx Private Defines\n * @{\n */\n#define PLL2_TIMEOUT_VALUE         PLL_TIMEOUT_VALUE    /* 2 ms */\n#define PLL3_TIMEOUT_VALUE         PLL_TIMEOUT_VALUE    /* 2 ms */\n\n#define DIVIDER_P_UPDATE          0U\n#define DIVIDER_Q_UPDATE          1U\n#define DIVIDER_R_UPDATE          2U\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/** @defgroup RCCEx_Private_Macros RCCEx Private Macros\n * @{\n */\n/**\n  * @}\n  */\n\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\nstatic HAL_StatusTypeDef RCCEx_PLL2_Config(RCC_PLL2InitTypeDef *pll2, uint32_t Divider);\nstatic HAL_StatusTypeDef RCCEx_PLL3_Config(RCC_PLL3InitTypeDef *pll3, uint32_t Divider);\n\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup RCCEx_Exported_Functions RCCEx Exported Functions\n  * @{\n  */\n\n/** @defgroup RCCEx_Exported_Functions_Group1 Extended Peripheral Control functions\n *  @brief  Extended Peripheral Control functions\n *\n@verbatim\n ===============================================================================\n                ##### Extended Peripheral Control functions  #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to control the RCC Clocks\n    frequencies.\n    [..]\n    (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to\n        select the RTC clock source; in this case the Backup domain will be reset in\n        order to modify the RTC Clock source, as consequence RTC registers (including\n        the backup registers) and RCC_BDCR register are set to their reset values.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the RCC extended peripherals clocks according to the specified\n  *         parameters in the RCC_PeriphCLKInitTypeDef.\n  * @param  PeriphClkInit: pointer to an RCC_PeriphCLKInitTypeDef structure that\n  *         contains the configuration information for the Extended Peripherals\n  *         clocks (SDMMC, CKPER, FMC, QSPI*, OSPI*, DSI, SPI45, SPDIF, DFSDM1, DFSDM2*, FDCAN, SWPMI, SAI23*,SAI2A*, SAI2B*, SAI1, SPI123,\n  *         USART234578, USART16 (USART16910*), RNG, HRTIM1*, I2C123 (I2C1235*), USB, CEC, LPTIM1, LPUART1, I2C4, LPTIM2, LPTIM345, ADC,\n  *         SAI4A*, SAI4B*, SPI6, RTC).\n  * @note   Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select\n  *         the RTC clock source; in this case the Backup domain will be reset in\n  *         order to modify the RTC Clock source, as consequence RTC registers (including\n  *         the backup registers) are set to their reset values.\n  *\n  * (*) : Available on some STM32H7 lines only.\n  *\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit)\n{\n  uint32_t tmpreg;\n  uint32_t tickstart;\n  HAL_StatusTypeDef ret = HAL_OK;      /* Intermediate status */\n  HAL_StatusTypeDef status = HAL_OK;   /* Final status */\n\n  /*---------------------------- SPDIFRX configuration -------------------------------*/\n\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)\n  {\n\n    switch(PeriphClkInit->SpdifrxClockSelection)\n    {\n    case RCC_SPDIFRXCLKSOURCE_PLL:      /* PLL is used as clock source for SPDIFRX*/\n      /* Enable PLL1Q Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SPDIFRX clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPDIFRXCLKSOURCE_PLL2: /* PLL2 is used as clock source for SPDIFRX*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE);\n\n      /* SPDIFRX clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPDIFRXCLKSOURCE_PLL3:  /* PLL3 is used as clock source for SPDIFRX*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE);\n\n      /* SPDIFRX clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPDIFRXCLKSOURCE_HSI:\n      /* Internal OSC clock is used as source of SPDIFRX clock*/\n      /* SPDIFRX clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SPDIFRX clock*/\n      __HAL_RCC_SPDIFRX_CONFIG(PeriphClkInit->SpdifrxClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*---------------------------- SAI1 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1)\n  {\n    switch(PeriphClkInit->Sai1ClockSelection)\n    {\n    case RCC_SAI1CLKSOURCE_PLL:      /* PLL is used as clock source for SAI1*/\n      /* Enable SAI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI1CLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI1*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI1CLKSOURCE_PLL3:  /* PLL3 is used as clock source for SAI1*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE);\n\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI1CLKSOURCE_PIN:\n      /* External clock is used as source of SAI1 clock*/\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI1CLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of SAI1 clock */\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SAI1 clock*/\n      __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n#if defined(SAI3)\n  /*---------------------------- SAI2/3 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI23) == RCC_PERIPHCLK_SAI23)\n  {\n    switch(PeriphClkInit->Sai23ClockSelection)\n    {\n    case RCC_SAI23CLKSOURCE_PLL:      /* PLL is used as clock source for SAI2/3 */\n      /* Enable SAI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SAI2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI23CLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2/3 */\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* SAI2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI23CLKSOURCE_PLL3:  /* PLL3 is used as clock source for SAI2/3 */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE);\n\n      /* SAI2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI23CLKSOURCE_PIN:\n      /* External clock is used as source of SAI2/3 clock*/\n      /* SAI2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI23CLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of SAI2/3 clock */\n      /* SAI2/3 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SAI2/3 clock*/\n      __HAL_RCC_SAI23_CONFIG(PeriphClkInit->Sai23ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n#endif /* SAI3 */\n\n#if defined(RCC_CDCCIP1R_SAI2ASEL)\n  /*---------------------------- SAI2A configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2A) == RCC_PERIPHCLK_SAI2A)\n  {\n    switch(PeriphClkInit->Sai2AClockSelection)\n    {\n    case RCC_SAI2ACLKSOURCE_PLL:      /* PLL is used as clock source for SAI2A */\n      /* Enable SAI2A Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SAI2A clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2ACLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2A */\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* SAI2A clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2ACLKSOURCE_PLL3:  /* PLL3 is used as clock source for SAI2A */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE);\n\n      /* SAI2A clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2ACLKSOURCE_PIN:\n      /* External clock is used as source of SAI2A clock*/\n      /* SAI2A clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2ACLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of SAI2A clock */\n      /* SAI2A clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2ACLKSOURCE_SPDIF:\n      /* SPDIF clock is used as source of SAI2A clock */\n      /* SAI2A clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SAI2A clock*/\n      __HAL_RCC_SAI2A_CONFIG(PeriphClkInit->Sai2AClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n#endif  /*SAI2A*/\n\n#if defined(RCC_CDCCIP1R_SAI2BSEL)\n\n  /*---------------------------- SAI2B configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2B) == RCC_PERIPHCLK_SAI2B)\n  {\n    switch(PeriphClkInit->Sai2BClockSelection)\n    {\n    case RCC_SAI2BCLKSOURCE_PLL:      /* PLL is used as clock source for SAI2B */\n      /* Enable SAI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SAI2B clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2BCLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2B */\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* SAI2B clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2BCLKSOURCE_PLL3:  /* PLL3 is used as clock source for SAI2B */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE);\n\n      /* SAI2B clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2BCLKSOURCE_PIN:\n      /* External clock is used as source of SAI2B clock*/\n      /* SAI2B clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2BCLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of SAI2B clock */\n      /* SAI2B clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI2BCLKSOURCE_SPDIF:\n      /* SPDIF clock is used as source of SAI2B clock */\n      /* SAI2B clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SAI2B clock*/\n      __HAL_RCC_SAI2B_CONFIG(PeriphClkInit->Sai2BClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n#endif  /*SAI2B*/\n\n#if defined(SAI4)\n  /*---------------------------- SAI4A configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI4A) == RCC_PERIPHCLK_SAI4A)\n  {\n    switch(PeriphClkInit->Sai4AClockSelection)\n    {\n    case RCC_SAI4ACLKSOURCE_PLL:      /* PLL is used as clock source for SAI2*/\n      /* Enable SAI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4ACLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* SAI2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4ACLKSOURCE_PLL3:  /* PLL3 is used as clock source for SAI2*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE);\n\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4ACLKSOURCE_PIN:\n      /* External clock is used as source of SAI2 clock*/\n      /* SAI2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4ACLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of SAI2 clock */\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n \n#if defined(RCC_VER_3_0)\n    case RCC_SAI4ACLKSOURCE_SPDIF:\n      /* SPDIF clock is used as source of SAI4A clock */\n      /* SAI4A clock source configuration done later after clock selection check */\n      break;\n#endif /* RCC_VER_3_0 */\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SAI4A clock*/\n      __HAL_RCC_SAI4A_CONFIG(PeriphClkInit->Sai4AClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n  /*---------------------------- SAI4B configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI4B) == RCC_PERIPHCLK_SAI4B)\n  {\n    switch(PeriphClkInit->Sai4BClockSelection)\n    {\n    case RCC_SAI4BCLKSOURCE_PLL:      /* PLL is used as clock source for SAI2*/\n      /* Enable SAI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4BCLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* SAI2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4BCLKSOURCE_PLL3:  /* PLL3 is used as clock source for SAI2*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3), DIVIDER_P_UPDATE);\n\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4BCLKSOURCE_PIN:\n      /* External clock is used as source of SAI2 clock*/\n      /* SAI2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SAI4BCLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of SAI2 clock */\n      /* SAI1 clock source configuration done later after clock selection check */\n      break;\n\n#if defined(RCC_VER_3_0)\n    case RCC_SAI4BCLKSOURCE_SPDIF:\n      /* SPDIF clock is used as source of SAI4B clock */\n      /* SAI4B clock source configuration done later after clock selection check */\n      break;\n#endif /* RCC_VER_3_0 */\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SAI4B clock*/\n      __HAL_RCC_SAI4B_CONFIG(PeriphClkInit->Sai4BClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n#endif  /*SAI4*/\n\n#if defined(QUADSPI)\n  /*---------------------------- QSPI configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_QSPI) == RCC_PERIPHCLK_QSPI)\n  {\n    switch(PeriphClkInit->QspiClockSelection)\n    {\n    case RCC_QSPICLKSOURCE_PLL:      /* PLL is used as clock source for QSPI*/\n      /* Enable QSPI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* QSPI clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_QSPICLKSOURCE_PLL2: /* PLL2 is used as clock source for QSPI*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE);\n\n      /* QSPI clock source configuration done later after clock selection check */\n      break;\n\n\n    case RCC_QSPICLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of QSPI clock */\n      /* QSPI clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_QSPICLKSOURCE_D1HCLK:\n      /* Domain1 HCLK  clock selected as QSPI kernel peripheral clock */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of QSPI clock*/\n      __HAL_RCC_QSPI_CONFIG(PeriphClkInit->QspiClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n#endif  /*QUADSPI*/\n\n#if defined(OCTOSPI1) || defined(OCTOSPI2)\n  /*---------------------------- OCTOSPI configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_OSPI) == RCC_PERIPHCLK_OSPI)\n  {\n    switch(PeriphClkInit->OspiClockSelection)\n    {\n    case RCC_OSPICLKSOURCE_PLL:      /* PLL is used as clock source for OSPI*/\n      /* Enable OSPI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* OSPI clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_OSPICLKSOURCE_PLL2: /* PLL2 is used as clock source for OSPI*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE);\n\n      /* OSPI clock source configuration done later after clock selection check */\n      break;\n\n\n    case RCC_OSPICLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of OSPI clock */\n      /* OSPI clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_OSPICLKSOURCE_HCLK:\n      /* HCLK clock selected as OSPI kernel peripheral clock */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of OSPI clock*/\n      __HAL_RCC_OSPI_CONFIG(PeriphClkInit->OspiClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n#endif  /*OCTOSPI*/\n\n  /*---------------------------- SPI1/2/3 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPI123) == RCC_PERIPHCLK_SPI123)\n  {\n    switch(PeriphClkInit->Spi123ClockSelection)\n    {\n    case RCC_SPI123CLKSOURCE_PLL:      /* PLL is used as clock source for SPI1/2/3 */\n      /* Enable SPI Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SPI1/2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI123CLKSOURCE_PLL2: /* PLL2 is used as clock source for SPI1/2/3 */\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* SPI1/2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI123CLKSOURCE_PLL3:  /* PLL3 is used as clock source for SPI1/2/3 */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE);\n\n      /* SPI1/2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI123CLKSOURCE_PIN:\n      /* External clock is used as source of SPI1/2/3 clock*/\n      /* SPI1/2/3 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI123CLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of SPI1/2/3 clock */\n      /* SPI1/2/3 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SPI1/2/3 clock*/\n      __HAL_RCC_SPI123_CONFIG(PeriphClkInit->Spi123ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*---------------------------- SPI4/5 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPI45) == RCC_PERIPHCLK_SPI45)\n  {\n    switch(PeriphClkInit->Spi45ClockSelection)\n    {\n    case RCC_SPI45CLKSOURCE_PCLK1:      /* CD/D2 PCLK1 as clock source for SPI4/5 */\n      /* SPI4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI45CLKSOURCE_PLL2: /* PLL2 is used as clock source for SPI4/5 */\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE);\n\n      /* SPI4/5 clock source configuration done later after clock selection check */\n      break;\n    case RCC_SPI45CLKSOURCE_PLL3:  /* PLL3 is used as clock source for SPI4/5 */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE);\n      /* SPI4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI45CLKSOURCE_HSI:\n      /* HSI oscillator clock is used as source of SPI4/5 clock*/\n      /* SPI4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI45CLKSOURCE_CSI:\n      /*  CSI oscillator clock is used as source of SPI4/5 clock */\n      /* SPI4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI45CLKSOURCE_HSE:\n      /* HSE,  oscillator is used as source of SPI4/5 clock */\n      /* SPI4/5 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SPI4/5 clock*/\n      __HAL_RCC_SPI45_CONFIG(PeriphClkInit->Spi45ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*---------------------------- SPI6 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPI6) == RCC_PERIPHCLK_SPI6)\n  {\n    switch(PeriphClkInit->Spi6ClockSelection)\n    {\n    case RCC_SPI6CLKSOURCE_PCLK4:      /* SRD/D3 PCLK1 (PCLK4) as clock source for SPI6*/\n      /* SPI6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI6CLKSOURCE_PLL2: /* PLL2 is used as clock source for SPI6*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE);\n\n      /* SPI6 clock source configuration done later after clock selection check */\n      break;\n    case RCC_SPI6CLKSOURCE_PLL3:  /* PLL3 is used as clock source for SPI6*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE);\n      /* SPI6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI6CLKSOURCE_HSI:\n      /* HSI oscillator clock is used as source of SPI6 clock*/\n      /* SPI6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI6CLKSOURCE_CSI:\n      /*  CSI oscillator clock is used as source of SPI6 clock */\n      /* SPI6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SPI6CLKSOURCE_HSE:\n      /* HSE,  oscillator is used as source of SPI6 clock */\n      /* SPI6 clock source configuration done later after clock selection check */\n      break;\n#if defined(RCC_SPI6CLKSOURCE_PIN)\n    case RCC_SPI6CLKSOURCE_PIN:\n      /* 2S_CKIN is used as source of SPI6 clock */\n      /* SPI6 clock source configuration done later after clock selection check */\n      break;\n#endif\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SPI6 clock*/\n      __HAL_RCC_SPI6_CONFIG(PeriphClkInit->Spi6ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n#if defined(DSI)\n  /*---------------------------- DSI configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DSI) == RCC_PERIPHCLK_DSI)\n  {\n    switch(PeriphClkInit->DsiClockSelection)\n    {\n\n    case RCC_DSICLKSOURCE_PLL2: /* PLL2 is used as clock source for DSI*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE);\n\n      /* DSI clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_DSICLKSOURCE_PHY:\n      /* PHY is used as clock source for DSI*/\n      /* DSI clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of DSI clock*/\n      __HAL_RCC_DSI_CONFIG(PeriphClkInit->DsiClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n#endif /*DSI*/\n\n#if defined(FDCAN1) || defined(FDCAN2)\n  /*---------------------------- FDCAN configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_FDCAN) == RCC_PERIPHCLK_FDCAN)\n  {\n    switch(PeriphClkInit->FdcanClockSelection)\n    {\n    case RCC_FDCANCLKSOURCE_PLL:      /* PLL is used as clock source for FDCAN*/\n      /* Enable FDCAN Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* FDCAN clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_FDCANCLKSOURCE_PLL2: /* PLL2 is used as clock source for FDCAN*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE);\n\n      /* FDCAN clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_FDCANCLKSOURCE_HSE:\n      /* HSE is used as clock source for FDCAN*/\n      /* FDCAN clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of FDCAN clock*/\n      __HAL_RCC_FDCAN_CONFIG(PeriphClkInit->FdcanClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n#endif /*FDCAN1 || FDCAN2*/\n\n  /*---------------------------- FMC configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_FMC) == RCC_PERIPHCLK_FMC)\n  {\n    switch(PeriphClkInit->FmcClockSelection)\n    {\n    case RCC_FMCCLKSOURCE_PLL:      /* PLL is used as clock source for FMC*/\n      /* Enable FMC Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* FMC clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_FMCCLKSOURCE_PLL2: /* PLL2 is used as clock source for FMC*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE);\n\n      /* FMC clock source configuration done later after clock selection check */\n      break;\n\n\n    case RCC_FMCCLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of FMC clock */\n      /* FMC clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_FMCCLKSOURCE_HCLK:\n      /* D1/CD HCLK  clock selected as FMC kernel peripheral clock */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of FMC clock*/\n      __HAL_RCC_FMC_CONFIG(PeriphClkInit->FmcClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*---------------------------- RTC configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)\n  {\n    /* check for RTC Parameters used to output RTCCLK */\n    assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));\n\n    /* Enable write access to Backup domain */\n    SET_BIT(PWR->CR1, PWR_CR1_DBP);\n\n    /* Wait for Backup domain Write protection disable */\n    tickstart = HAL_GetTick();\n\n    while((PWR->CR1 & PWR_CR1_DBP) == 0U)\n    {\n      if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)\n      {\n        ret = HAL_TIMEOUT;\n        break;\n      }\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Reset the Backup domain only if the RTC Clock source selection is modified */\n      if((RCC->BDCR & RCC_BDCR_RTCSEL) != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))\n      {\n        /* Store the content of BDCR register before the reset of Backup Domain */\n        tmpreg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));\n        /* RTC Clock selection can be changed only if the Backup Domain is reset */\n        __HAL_RCC_BACKUPRESET_FORCE();\n        __HAL_RCC_BACKUPRESET_RELEASE();\n        /* Restore the Content of BDCR register */\n        RCC->BDCR = tmpreg;\n      }\n\n      /* If LSE is selected as RTC clock source (and enabled prior to Backup Domain reset), wait for LSE reactivation */\n      if(PeriphClkInit->RTCClockSelection == RCC_RTCCLKSOURCE_LSE)\n      {\n        /* Get Start Tick*/\n        tickstart = HAL_GetTick();\n\n        /* Wait till LSE is ready */\n        while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)\n        {\n          if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)\n          {\n            ret = HAL_TIMEOUT;\n            break;\n          }\n        }\n      }\n\n      if(ret == HAL_OK)\n      {\n        __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);\n      }\n      else\n      {\n        /* set overall return value */\n        status = ret;\n      }\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n\n  /*-------------------------- USART1/6 configuration --------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART16) == RCC_PERIPHCLK_USART16)\n  {\n    switch(PeriphClkInit->Usart16ClockSelection)\n    {\n    case RCC_USART16CLKSOURCE_PCLK2: /* CD/D2 PCLK2 as clock source for USART1/6 */\n      /* USART1/6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART16CLKSOURCE_PLL2: /* PLL2 is used as clock source for USART1/6 */\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE);\n      /* USART1/6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART16CLKSOURCE_PLL3: /* PLL3 is used as clock source for USART1/6 */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE);\n      /* USART1/6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART16CLKSOURCE_HSI:\n      /* HSI oscillator clock is used as source of USART1/6 clock */\n      /* USART1/6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART16CLKSOURCE_CSI:\n      /* CSI oscillator clock is used as source of USART1/6 clock */\n      /* USART1/6 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART16CLKSOURCE_LSE:\n      /* LSE,  oscillator is used as source of USART1/6 clock */\n      /* USART1/6 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of USART1/6 clock */\n      __HAL_RCC_USART16_CONFIG(PeriphClkInit->Usart16ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*-------------------------- USART2/3/4/5/7/8 Configuration --------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART234578) == RCC_PERIPHCLK_USART234578)\n  {\n    switch(PeriphClkInit->Usart234578ClockSelection)\n    {\n    case RCC_USART234578CLKSOURCE_PCLK1: /* CD/D2 PCLK1 as clock source for USART2/3/4/5/7/8 */\n      /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART234578CLKSOURCE_PLL2: /* PLL2 is used as clock source for USART2/3/4/5/7/8 */\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE);\n      /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART234578CLKSOURCE_PLL3: /* PLL3 is used as clock source for USART2/3/4/5/7/8 */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE);\n      /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART234578CLKSOURCE_HSI:\n      /* HSI oscillator clock is used as source of USART2/3/4/5/7/8 clock */\n      /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART234578CLKSOURCE_CSI:\n      /* CSI oscillator clock is used as source of USART2/3/4/5/7/8 clock */\n      /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USART234578CLKSOURCE_LSE:\n      /* LSE,  oscillator is used as source of USART2/3/4/5/7/8 clock */\n      /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of USART2/3/4/5/7/8 clock */\n      __HAL_RCC_USART234578_CONFIG(PeriphClkInit->Usart234578ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*-------------------------- LPUART1 Configuration -------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1)\n  {\n    switch(PeriphClkInit->Lpuart1ClockSelection)\n    {\n    case RCC_LPUART1CLKSOURCE_PCLK4: /* SRD/D3 PCLK1 (PCLK4) as clock source for LPUART1 */\n      /* LPUART1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPUART1CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPUART1 */\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE);\n      /* LPUART1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPUART1CLKSOURCE_PLL3: /* PLL3 is used as clock source for LPUART1 */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE);\n      /* LPUART1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPUART1CLKSOURCE_HSI:\n      /* HSI oscillator clock is used as source of LPUART1 clock */\n      /* LPUART1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPUART1CLKSOURCE_CSI:\n      /* CSI oscillator clock is used as source of LPUART1 clock */\n      /* LPUART1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPUART1CLKSOURCE_LSE:\n      /* LSE,  oscillator is used as source of LPUART1 clock */\n      /* LPUART1 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of LPUART1 clock */\n      __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*---------------------------- LPTIM1 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1)\n  {\n    switch(PeriphClkInit->Lptim1ClockSelection)\n    {\n    case RCC_LPTIM1CLKSOURCE_PCLK1:      /* CD/D2 PCLK1 as clock source for LPTIM1*/\n      /* LPTIM1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM1CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPTIM1*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* LPTIM1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM1CLKSOURCE_PLL3:  /* PLL3 is used as clock source for LPTIM1*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE);\n\n      /* LPTIM1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM1CLKSOURCE_LSE:\n      /* External low speed OSC clock is used as source of LPTIM1 clock*/\n      /* LPTIM1 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM1CLKSOURCE_LSI:\n      /* Internal  low speed OSC clock is used  as source of LPTIM1 clock*/\n      /* LPTIM1 clock source configuration done later after clock selection check */\n      break;\n    case RCC_LPTIM1CLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of LPTIM1 clock */\n      /* LPTIM1 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of LPTIM1 clock*/\n      __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*---------------------------- LPTIM2 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2)\n  {\n    switch(PeriphClkInit->Lptim2ClockSelection)\n    {\n    case RCC_LPTIM2CLKSOURCE_PCLK4:      /* SRD/D3 PCLK1 (PCLK4) as clock source for LPTIM2*/\n      /* LPTIM2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM2CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPTIM2*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* LPTIM2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM2CLKSOURCE_PLL3:  /* PLL3 is used as clock source for LPTIM2*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE);\n\n      /* LPTIM2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM2CLKSOURCE_LSE:\n      /* External low speed OSC clock is used as source of LPTIM2 clock*/\n      /* LPTIM2 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM2CLKSOURCE_LSI:\n      /* Internal  low speed OSC clock is used  as source of LPTIM2 clock*/\n      /* LPTIM2 clock source configuration done later after clock selection check */\n      break;\n    case RCC_LPTIM2CLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of LPTIM2 clock */\n      /* LPTIM2 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of LPTIM2 clock*/\n      __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*---------------------------- LPTIM345 configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM345) == RCC_PERIPHCLK_LPTIM345)\n  {\n    switch(PeriphClkInit->Lptim345ClockSelection)\n    {\n\n    case RCC_LPTIM345CLKSOURCE_PCLK4:      /* SRD/D3 PCLK1 (PCLK4) as clock source for LPTIM3/4/5 */\n      /* LPTIM3/4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM345CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPTIM3/4/5 */\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* LPTIM3/4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM345CLKSOURCE_PLL3:  /* PLL3 is used as clock source for LPTIM3/4/5 */\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE);\n\n      /* LPTIM3/4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM345CLKSOURCE_LSE:\n      /* External low speed OSC clock is used as source of LPTIM3/4/5 clock */\n      /* LPTIM3/4/5 clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_LPTIM345CLKSOURCE_LSI:\n      /* Internal  low speed OSC clock is used  as source of LPTIM3/4/5 clock */\n      /* LPTIM3/4/5 clock source configuration done later after clock selection check */\n      break;\n    case RCC_LPTIM345CLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of LPTIM3/4/5 clock */\n      /* LPTIM3/4/5 clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of LPTIM3/4/5 clock */\n      __HAL_RCC_LPTIM345_CONFIG(PeriphClkInit->Lptim345ClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*------------------------------ I2C1/2/3/5* Configuration ------------------------*/\n#if defined(I2C5)\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1235) == RCC_PERIPHCLK_I2C1235)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_I2C1235CLKSOURCE(PeriphClkInit->I2c1235ClockSelection));\n\n    if ((PeriphClkInit->I2c1235ClockSelection )== RCC_I2C1235CLKSOURCE_PLL3 )\n    {\n        if(RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE)!= HAL_OK)\n        {\n          status = HAL_ERROR;\n        }\n    }\n\n      __HAL_RCC_I2C1235_CONFIG(PeriphClkInit->I2c1235ClockSelection);\n\n  }\n#else\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C123) == RCC_PERIPHCLK_I2C123)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_I2C123CLKSOURCE(PeriphClkInit->I2c123ClockSelection));\n\n    if ((PeriphClkInit->I2c123ClockSelection )== RCC_I2C123CLKSOURCE_PLL3 )\n    {\n        if(RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE)!= HAL_OK)\n        {\n          status = HAL_ERROR;\n        }\n    }\n\n      __HAL_RCC_I2C123_CONFIG(PeriphClkInit->I2c123ClockSelection);\n\n  }\n#endif /* I2C5 */\n\n  /*------------------------------ I2C4 Configuration ------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection));\n\n    if ((PeriphClkInit->I2c4ClockSelection) == RCC_I2C4CLKSOURCE_PLL3 )\n    {\n      if(RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE)!= HAL_OK)\n      {\n        status = HAL_ERROR;\n      }\n    }\n\n      __HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection);\n\n  }\n\n  /*---------------------------- ADC configuration -------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC)\n  {\n    switch(PeriphClkInit->AdcClockSelection)\n    {\n\n    case RCC_ADCCLKSOURCE_PLL2: /* PLL2 is used as clock source for ADC*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE);\n\n      /* ADC clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_ADCCLKSOURCE_PLL3:  /* PLL3 is used as clock source for ADC*/\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE);\n\n      /* ADC clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_ADCCLKSOURCE_CLKP:\n      /* HSI, HSE, or CSI oscillator is used as source of ADC clock */\n      /* ADC clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of ADC clock*/\n      __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n  /*------------------------------ USB Configuration -------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB)\n  {\n\n    switch(PeriphClkInit->UsbClockSelection)\n    {\n    case RCC_USBCLKSOURCE_PLL:      /* PLL is used as clock source for USB*/\n      /* Enable USB Clock output generated form System USB . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* USB clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USBCLKSOURCE_PLL3: /* PLL3 is used as clock source for USB*/\n\n      ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE);\n\n      /* USB clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_USBCLKSOURCE_HSI48:\n      /* HSI48 oscillator is used as source of USB clock */\n      /* USB clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of USB clock*/\n      __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n\n  }\n\n  /*------------------------------------- SDMMC Configuration ------------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC) == RCC_PERIPHCLK_SDMMC)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_SDMMC(PeriphClkInit->SdmmcClockSelection));\n\n    switch(PeriphClkInit->SdmmcClockSelection)\n    {\n    case RCC_SDMMCCLKSOURCE_PLL:      /* PLL is used as clock source for SDMMC*/\n      /* Enable SDMMC Clock output generated form System PLL . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* SDMMC clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_SDMMCCLKSOURCE_PLL2: /* PLL2 is used as clock source for SDMMC*/\n\n      ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE);\n\n      /* SDMMC clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of SDMMC clock*/\n      __HAL_RCC_SDMMC_CONFIG(PeriphClkInit->SdmmcClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n  }\n\n#if defined(LTDC)\n  /*-------------------------------------- LTDC Configuration -----------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC)\n  {\n    if(RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE)!=HAL_OK)\n    {\n      status=HAL_ERROR;\n    }\n  }\n#endif /* LTDC */\n\n  /*------------------------------ RNG Configuration -------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RNG) == RCC_PERIPHCLK_RNG)\n  {\n\n    switch(PeriphClkInit->RngClockSelection)\n    {\n    case RCC_RNGCLKSOURCE_PLL:     /* PLL is used as clock source for RNG*/\n      /* Enable RNG Clock output generated form System RNG . */\n      __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ);\n\n      /* RNG clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_RNGCLKSOURCE_LSE: /* LSE is used as clock source for RNG*/\n\n      /* RNG clock source configuration done later after clock selection check */\n      break;\n\n    case RCC_RNGCLKSOURCE_LSI: /* LSI is used as clock source for RNG*/\n\n      /* RNG clock source configuration done later after clock selection check */\n      break;\n    case RCC_RNGCLKSOURCE_HSI48:\n      /* HSI48 oscillator is used as source of RNG clock */\n      /* RNG clock source configuration done later after clock selection check */\n      break;\n\n    default:\n      ret = HAL_ERROR;\n      break;\n    }\n\n    if(ret == HAL_OK)\n    {\n      /* Set the source of RNG clock*/\n      __HAL_RCC_RNG_CONFIG(PeriphClkInit->RngClockSelection);\n    }\n    else\n    {\n      /* set overall return value */\n      status = ret;\n    }\n\n  }\n\n  /*------------------------------ SWPMI1 Configuration ------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SWPMI1) == RCC_PERIPHCLK_SWPMI1)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_SWPMI1CLKSOURCE(PeriphClkInit->Swpmi1ClockSelection));\n\n    /* Configure the SWPMI1 interface clock source */\n    __HAL_RCC_SWPMI1_CONFIG(PeriphClkInit->Swpmi1ClockSelection);\n  }\n#if defined(HRTIM1)\n  /*------------------------------ HRTIM1 clock Configuration ----------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_HRTIM1) == RCC_PERIPHCLK_HRTIM1)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_HRTIM1CLKSOURCE(PeriphClkInit->Hrtim1ClockSelection));\n\n    /* Configure the HRTIM1 clock source */\n    __HAL_RCC_HRTIM1_CONFIG(PeriphClkInit->Hrtim1ClockSelection);\n  }\n#endif  /*HRTIM1*/\n  /*------------------------------ DFSDM1 Configuration ------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection));\n\n    /* Configure the DFSDM1 interface clock source */\n    __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection);\n  }\n\n#if defined(DFSDM2_BASE)\n  /*------------------------------ DFSDM2 Configuration ------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM2) == RCC_PERIPHCLK_DFSDM2)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_DFSDM2CLKSOURCE(PeriphClkInit->Dfsdm2ClockSelection));\n\n    /* Configure the DFSDM2 interface clock source */\n    __HAL_RCC_DFSDM2_CONFIG(PeriphClkInit->Dfsdm2ClockSelection);\n  }\n#endif  /* DFSDM2 */\n\n  /*------------------------------------ TIM configuration --------------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection));\n\n    /* Configure Timer Prescaler */\n    __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection);\n  }\n\n  /*------------------------------------ CKPER configuration --------------------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CKPER) == RCC_PERIPHCLK_CKPER)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_CLKPSOURCE(PeriphClkInit->CkperClockSelection));\n\n    /* Configure the CKPER clock source */\n    __HAL_RCC_CLKP_CONFIG(PeriphClkInit->CkperClockSelection);\n  }\n\n  /*------------------------------ CEC Configuration ------------------------*/\n  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC)\n  {\n    /* Check the parameters */\n    assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection));\n\n    /* Configure the CEC interface clock source */\n    __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection);\n  }\n\n  if (status == HAL_OK)\n  {\n    return HAL_OK;\n  }\n  return HAL_ERROR;\n}\n\n/**\n  * @brief  Get the RCC_ClkInitStruct according to the internal RCC configuration registers.\n  * @param  PeriphClkInit: pointer to an RCC_PeriphCLKInitTypeDef structure that\n  *         returns the configuration information for the Extended Peripherals clocks :\n  *         (SDMMC, CKPER, FMC, QSPI*, OSPI*, DSI*, SPI45, SPDIF, DFSDM1, DFSDM2*, FDCAN, SWPMI, SAI23*, SAI1, SPI123,\n  *         USART234578, USART16, RNG, HRTIM1*, I2C123 (I2C1235*), USB, CEC, LPTIM1, LPUART1, I2C4, LPTIM2, LPTIM345, ADC.\n  *         SAI4A*, SAI4B*, SPI6, RTC, TIM).\n  * @retval None\n  *\n  *   (*) : Available on some STM32H7 lines only.\n  */\nvoid HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit)\n{\n  /* Set all possible values for the extended clock type parameter------------*/\n  PeriphClkInit->PeriphClockSelection =\n                 RCC_PERIPHCLK_USART16 | RCC_PERIPHCLK_USART234578 | RCC_PERIPHCLK_LPUART1 |\n                 RCC_PERIPHCLK_I2C4    | RCC_PERIPHCLK_LPTIM1      | RCC_PERIPHCLK_LPTIM2  | RCC_PERIPHCLK_LPTIM345 |\n                 RCC_PERIPHCLK_SAI1    | RCC_PERIPHCLK_SPI123      | RCC_PERIPHCLK_SPI45   | RCC_PERIPHCLK_SPI6     |\n\t         RCC_PERIPHCLK_FDCAN   | RCC_PERIPHCLK_SDMMC       | RCC_PERIPHCLK_RNG     | RCC_PERIPHCLK_USB      |\n\t         RCC_PERIPHCLK_ADC     | RCC_PERIPHCLK_SWPMI1      | RCC_PERIPHCLK_DFSDM1  | RCC_PERIPHCLK_RTC      |\n\t         RCC_PERIPHCLK_CEC     | RCC_PERIPHCLK_FMC         | RCC_PERIPHCLK_SPDIFRX | RCC_PERIPHCLK_TIM      |\n\t         RCC_PERIPHCLK_CKPER;\n\n#if defined(I2C5)\nPeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2C1235;\n#else\nPeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2C123;\n#endif /*I2C5*/\n#if defined(RCC_CDCCIP1R_SAI2ASEL)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_SAI2A;\n#endif /* RCC_CDCCIP1R_SAI2ASEL */\n#if defined(RCC_CDCCIP1R_SAI2BSEL)\t\t \n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_SAI2B;\n#endif /* RCC_CDCCIP1R_SAI2BSEL */\n#if defined(SAI3)\t \n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_SAI23;\n#endif /* SAI3 */\n#if defined(SAI4)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_SAI4A;\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_SAI4B;\n#endif /* SAI4 */\n#if defined(DFSDM2_BASE)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_DFSDM2;\n#endif /* DFSDM2 */\n#if defined(QUADSPI)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_QSPI;\n#endif /* QUADSPI */\n#if defined(OCTOSPI1) || defined(OCTOSPI2)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_OSPI;\n#endif /* OCTOSPI1 || OCTOSPI2 */\n#if defined(HRTIM1)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_HRTIM1;\n#endif /* HRTIM1 */\n#if defined(LTDC)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_LTDC;\n#endif /* LTDC */\n#if defined(DSI)\n  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_DSI;\n#endif /* DSI */\n\n  /* Get the PLL3 Clock configuration -----------------------------------------------*/\n  PeriphClkInit->PLL3.PLL3M = (uint32_t)((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM3)>> RCC_PLLCKSELR_DIVM3_Pos);\n  PeriphClkInit->PLL3.PLL3N = (uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_N3) >> RCC_PLL3DIVR_N3_Pos)+ 1U;\n  PeriphClkInit->PLL3.PLL3R = (uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_R3) >> RCC_PLL3DIVR_R3_Pos)+ 1U;\n  PeriphClkInit->PLL3.PLL3P = (uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_P3) >> RCC_PLL3DIVR_P3_Pos)+ 1U;\n  PeriphClkInit->PLL3.PLL3Q = (uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_Q3) >> RCC_PLL3DIVR_Q3_Pos)+ 1U;\n  PeriphClkInit->PLL3.PLL3RGE = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLL3RGE) >> RCC_PLLCFGR_PLL3RGE_Pos);\n  PeriphClkInit->PLL3.PLL3VCOSEL = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLL3VCOSEL) >> RCC_PLLCFGR_PLL3VCOSEL_Pos);\n\n  /* Get the PLL2 Clock configuration -----------------------------------------------*/\n  PeriphClkInit->PLL2.PLL2M = (uint32_t)((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM2)>> RCC_PLLCKSELR_DIVM2_Pos);\n  PeriphClkInit->PLL2.PLL2N = (uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_N2) >> RCC_PLL2DIVR_N2_Pos)+ 1U;\n  PeriphClkInit->PLL2.PLL2R = (uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_R2) >> RCC_PLL2DIVR_R2_Pos)+ 1U;\n  PeriphClkInit->PLL2.PLL2P = (uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_P2) >> RCC_PLL2DIVR_P2_Pos)+ 1U;\n  PeriphClkInit->PLL2.PLL2Q = (uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_Q2) >> RCC_PLL2DIVR_Q2_Pos)+ 1U;\n  PeriphClkInit->PLL2.PLL2RGE = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLL2RGE) >> RCC_PLLCFGR_PLL2RGE_Pos);\n  PeriphClkInit->PLL2.PLL2VCOSEL = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLL2VCOSEL) >> RCC_PLLCFGR_PLL2VCOSEL_Pos);\n\n  /* Get the USART1 configuration --------------------------------------------*/\n  PeriphClkInit->Usart16ClockSelection      = __HAL_RCC_GET_USART16_SOURCE();\n  /* Get the USART2/3/4/5/7/8 clock source -----------------------------------*/\n  PeriphClkInit->Usart234578ClockSelection  = __HAL_RCC_GET_USART234578_SOURCE();\n  /* Get the LPUART1 clock source --------------------------------------------*/\n  PeriphClkInit->Lpuart1ClockSelection      = __HAL_RCC_GET_LPUART1_SOURCE();\n#if defined(I2C5)\n  /* Get the I2C1/2/3/5 clock source -----------------------------------------*/\n  PeriphClkInit->I2c1235ClockSelection       = __HAL_RCC_GET_I2C1_SOURCE();\n#else\n  /* Get the I2C1/2/3 clock source -------------------------------------------*/\n  PeriphClkInit->I2c123ClockSelection       = __HAL_RCC_GET_I2C1_SOURCE();\n#endif /*I2C5*/\n  /* Get the LPTIM1 clock source ---------------------------------------------*/\n  PeriphClkInit->Lptim1ClockSelection       = __HAL_RCC_GET_LPTIM1_SOURCE();\n  /* Get the LPTIM2 clock source ---------------------------------------------*/\n  PeriphClkInit->Lptim2ClockSelection       = __HAL_RCC_GET_LPTIM2_SOURCE();\n  /* Get the LPTIM3/4/5 clock source -----------------------------------------*/\n  PeriphClkInit->Lptim345ClockSelection     = __HAL_RCC_GET_LPTIM345_SOURCE();\n  /* Get the SAI1 clock source -----------------------------------------------*/\n  PeriphClkInit->Sai1ClockSelection         = __HAL_RCC_GET_SAI1_SOURCE();\n#if defined(SAI3)\n  /* Get the SAI2/3 clock source ---------------------------------------------*/\n  PeriphClkInit->Sai23ClockSelection        = __HAL_RCC_GET_SAI23_SOURCE();\n#endif  /*SAI3*/\n#if defined(RCC_CDCCIP1R_SAI2ASEL_0)\n  /* Get the SAI2A clock source ---------------------------------------------*/\n  PeriphClkInit->Sai2AClockSelection        = __HAL_RCC_GET_SAI2A_SOURCE();\n#endif  /*SAI2A*/\n#if defined(RCC_CDCCIP1R_SAI2BSEL_0)\n  /* Get the SAI2B clock source ---------------------------------------------*/\n  PeriphClkInit->Sai2BClockSelection        = __HAL_RCC_GET_SAI2B_SOURCE();\n#endif  /*SAI2B*/\n#if defined(SAI4)\n  /* Get the SAI4A clock source ----------------------------------------------*/\n  PeriphClkInit->Sai4AClockSelection        = __HAL_RCC_GET_SAI4A_SOURCE();\n  /* Get the SAI4B clock source ----------------------------------------------*/\n  PeriphClkInit->Sai4BClockSelection        = __HAL_RCC_GET_SAI4B_SOURCE();\n#endif  /*SAI4*/\n  /* Get the RTC clock source ------------------------------------------------*/\n  PeriphClkInit->RTCClockSelection          = __HAL_RCC_GET_RTC_SOURCE();\n  /* Get the USB clock source ------------------------------------------------*/\n  PeriphClkInit->UsbClockSelection          = __HAL_RCC_GET_USB_SOURCE();\n  /* Get the SDMMC clock source ----------------------------------------------*/\n  PeriphClkInit->SdmmcClockSelection        = __HAL_RCC_GET_SDMMC_SOURCE();\n  /* Get the RNG clock source ------------------------------------------------*/\n  PeriphClkInit->RngClockSelection          = __HAL_RCC_GET_RNG_SOURCE();\n#if defined(HRTIM1)\n  /* Get the HRTIM1 clock source ---------------------------------------------*/\n  PeriphClkInit->Hrtim1ClockSelection       = __HAL_RCC_GET_HRTIM1_SOURCE();\n#endif /* HRTIM1 */\n  /* Get the ADC clock source ------------------------------------------------*/\n  PeriphClkInit->AdcClockSelection          = __HAL_RCC_GET_ADC_SOURCE();\n  /* Get the SWPMI1 clock source ---------------------------------------------*/\n  PeriphClkInit->Swpmi1ClockSelection       = __HAL_RCC_GET_SWPMI1_SOURCE();\n  /* Get the DFSDM1 clock source ---------------------------------------------*/\n  PeriphClkInit->Dfsdm1ClockSelection       = __HAL_RCC_GET_DFSDM1_SOURCE();\n#if defined(DFSDM2_BASE)\n  /* Get the DFSDM2 clock source ---------------------------------------------*/\n  PeriphClkInit->Dfsdm2ClockSelection       = __HAL_RCC_GET_DFSDM2_SOURCE();\n#endif /* DFSDM2 */\n  /* Get the SPDIFRX clock source --------------------------------------------*/\n  PeriphClkInit->SpdifrxClockSelection      = __HAL_RCC_GET_SPDIFRX_SOURCE();\n  /* Get the SPI1/2/3 clock source -------------------------------------------*/\n  PeriphClkInit->Spi123ClockSelection       = __HAL_RCC_GET_SPI123_SOURCE();\n  /* Get the SPI4/5 clock source ---------------------------------------------*/\n  PeriphClkInit->Spi45ClockSelection        = __HAL_RCC_GET_SPI45_SOURCE();\n  /* Get the SPI6 clock source -----------------------------------------------*/\n  PeriphClkInit->Spi6ClockSelection         = __HAL_RCC_GET_SPI6_SOURCE();\n  /* Get the FDCAN clock source ----------------------------------------------*/\n  PeriphClkInit->FdcanClockSelection        = __HAL_RCC_GET_FDCAN_SOURCE();\n  /* Get the CEC clock source ------------------------------------------------*/\n  PeriphClkInit->CecClockSelection          = __HAL_RCC_GET_CEC_SOURCE();\n  /* Get the FMC clock source ------------------------------------------------*/\n  PeriphClkInit->FmcClockSelection          = __HAL_RCC_GET_FMC_SOURCE();\n#if defined(QUADSPI)\n  /* Get the QSPI clock source -----------------------------------------------*/\n  PeriphClkInit->QspiClockSelection         = __HAL_RCC_GET_QSPI_SOURCE();\n#endif /* QUADSPI */\n#if defined(OCTOSPI1) || defined(OCTOSPI2)\n  /* Get the OSPI clock source -----------------------------------------------*/\n  PeriphClkInit->OspiClockSelection         = __HAL_RCC_GET_OSPI_SOURCE();\n#endif /* OCTOSPI1 || OCTOSPI2 */\n\n#if defined(DSI)\n  /* Get the DSI clock source ------------------------------------------------*/\n  PeriphClkInit->DsiClockSelection          = __HAL_RCC_GET_DSI_SOURCE();\n#endif /*DSI*/\n\n  /* Get the CKPER clock source ----------------------------------------------*/\n  PeriphClkInit->CkperClockSelection        = __HAL_RCC_GET_CLKP_SOURCE();\n\n  /* Get the TIM Prescaler configuration -------------------------------------*/\n  if ((RCC->CFGR & RCC_CFGR_TIMPRE) == 0U)\n  {\n    PeriphClkInit->TIMPresSelection = RCC_TIMPRES_DESACTIVATED;\n  }\n  else\n  {\n    PeriphClkInit->TIMPresSelection = RCC_TIMPRES_ACTIVATED;\n  }\n}\n\n/**\n  * @brief  Return the peripheral clock frequency for a given peripheral(SAI..)\n  * @note   Return 0 if peripheral clock identifier not managed by this API\n  * @param  PeriphClk: Peripheral clock identifier\n  *         This parameter can be one of the following values:\n  *            @arg RCC_PERIPHCLK_SAI1  : SAI1 peripheral clock\n  *            @arg RCC_PERIPHCLK_SAI23 : SAI2/3  peripheral clock (*)\n  *            @arg RCC_PERIPHCLK_SAI2A : SAI2A peripheral clock (*)\n  *            @arg RCC_PERIPHCLK_SAI2B : SAI2B peripheral clock (*)\n  *            @arg RCC_PERIPHCLK_SAI4A : SAI4A peripheral clock (*)\n  *            @arg RCC_PERIPHCLK_SAI4B : SAI4B peripheral clock (*)\n  *            @arg RCC_PERIPHCLK_SPI123: SPI1/2/3 peripheral clock\n  *            @arg RCC_PERIPHCLK_ADC   : ADC peripheral clock\n  *            @arg RCC_PERIPHCLK_SDMMC : SDMMC peripheral clock\n  *            @arg RCC_PERIPHCLK_SPI6  : SPI6 peripheral clock\n  * @retval Frequency in KHz\n  *\n  *  (*) : Available on some STM32H7 lines only.\n  */\nuint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)\n{\n  PLL1_ClocksTypeDef pll1_clocks;\n  PLL2_ClocksTypeDef pll2_clocks;\n  PLL3_ClocksTypeDef pll3_clocks;\n\n  /* This variable is used to store the clock frequency (value in Hz) */\n  uint32_t frequency;\n  /* This variable is used to store the SAI and CKP clock source */\n  uint32_t saiclocksource;\n  uint32_t ckpclocksource;\n  uint32_t srcclk;\n\n  if (PeriphClk == RCC_PERIPHCLK_SAI1)\n    {\n\n      saiclocksource= __HAL_RCC_GET_SAI1_SOURCE();\n\n      switch (saiclocksource)\n      {\n      case RCC_SAI1CLKSOURCE_PLL: /* PLL1 is the clock source for SAI1 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n           HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n           frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SAI1CLKSOURCE_PLL2: /* PLL2 is the clock source for SAI1 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI1CLKSOURCE_PLL3: /* PLL3 is the clock source for SAI1 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI1CLKSOURCE_CLKP: /* CKPER is the clock source for SAI1*/\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n          if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n\n          break;\n        }\n\n      case (RCC_SAI1CLKSOURCE_PIN): /* External clock is the clock source for SAI1 */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n\n#if defined(SAI3)\n  else if (PeriphClk == RCC_PERIPHCLK_SAI23)\n    {\n\n      saiclocksource= __HAL_RCC_GET_SAI23_SOURCE();\n\n      switch (saiclocksource)\n      {\n      case RCC_SAI23CLKSOURCE_PLL: /* PLL1 is the clock source for SAI2/3 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SAI23CLKSOURCE_PLL2: /* PLL2 is the clock source for SAI2/3 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI23CLKSOURCE_PLL3: /* PLL3 is the clock source for SAI2/3 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI23CLKSOURCE_CLKP: /* CKPER is the clock source for SAI2/3 */\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n          if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n\n          break;\n        }\n\n      case (RCC_SAI23CLKSOURCE_PIN): /* External clock is the clock source for SAI2/3 */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n#endif /* SAI3 */\n\n#if  defined(RCC_CDCCIP1R_SAI2ASEL)\n\n    else if (PeriphClk == RCC_PERIPHCLK_SAI2A)\n    {\n      saiclocksource= __HAL_RCC_GET_SAI2A_SOURCE();\n\n      switch (saiclocksource)\n      {\n      case RCC_SAI2ACLKSOURCE_PLL: /* PLL1 is the clock source for SAI2A */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SAI2ACLKSOURCE_PLL2: /* PLLI2 is the clock source for SAI2A */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI2ACLKSOURCE_PLL3: /* PLLI3 is the clock source for SAI2A  */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI2ACLKSOURCE_CLKP: /* CKPER is the clock source for SAI2A  */\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n         if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n\n          break;\n        }\n\n      case (RCC_SAI2ACLKSOURCE_PIN): /* External clock is the clock source for SAI2A */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n\n    }\n#endif\n\n#if  defined(RCC_CDCCIP1R_SAI2BSEL_0)\n  else if (PeriphClk == RCC_PERIPHCLK_SAI2B)\n    {\n\n      saiclocksource= __HAL_RCC_GET_SAI2B_SOURCE();\n\n      switch (saiclocksource)\n      {\n      case RCC_SAI2BCLKSOURCE_PLL: /* PLL1 is the clock source for SAI2B */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SAI2BCLKSOURCE_PLL2: /* PLLI2 is the clock source for SAI2B */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI2BCLKSOURCE_PLL3: /* PLLI3 is the clock source for SAI2B */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI2BCLKSOURCE_CLKP: /* CKPER is the clock source for SAI2B*/\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n         if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n          break;\n        }\n\n      case (RCC_SAI2BCLKSOURCE_PIN): /* External clock is the clock source for SAI2B */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n#endif\n\n#if defined(SAI4)\n  else if (PeriphClk == RCC_PERIPHCLK_SAI4A)\n    {\n\n      saiclocksource= __HAL_RCC_GET_SAI4A_SOURCE();\n\n      switch (saiclocksource)\n      {\n      case RCC_SAI4ACLKSOURCE_PLL: /* PLL1 is the clock source for SAI4A */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SAI4ACLKSOURCE_PLL2: /* PLLI2 is the clock source for SAI4A */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI4ACLKSOURCE_PLL3: /* PLLI3 is the clock source for SAI4A */\n        {\n          if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI4ACLKSOURCE_CLKP: /* CKPER is the clock source for SAI4A*/\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n          if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n\n          break;\n        }\n\n      case RCC_SAI4ACLKSOURCE_PIN: /* External clock is the clock source for SAI4A */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n\n  else if (PeriphClk == RCC_PERIPHCLK_SAI4B)\n    {\n\n      saiclocksource= __HAL_RCC_GET_SAI4B_SOURCE();\n\n      switch (saiclocksource)\n      {\n      case RCC_SAI4BCLKSOURCE_PLL: /* PLL1 is the clock source for SAI4B */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SAI4BCLKSOURCE_PLL2: /* PLLI2 is the clock source for SAI4B */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n          }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI4BCLKSOURCE_PLL3: /* PLLI3 is the clock source for SAI4B */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SAI4BCLKSOURCE_CLKP: /* CKPER is the clock source for SAI4B*/\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n         if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n\n          break;\n        }\n\n      case RCC_SAI4BCLKSOURCE_PIN: /* External clock is the clock source for SAI4B */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n#endif /*SAI4*/\n  else if (PeriphClk == RCC_PERIPHCLK_SPI123)\n    {\n      /* Get SPI1/2/3 clock source */\n      srcclk= __HAL_RCC_GET_SPI123_SOURCE();\n\n      switch (srcclk)\n      {\n      case RCC_SPI123CLKSOURCE_PLL: /* PLL1 is the clock source for SPI123 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SPI123CLKSOURCE_PLL2: /* PLL2 is the clock source for SPI123 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SPI123CLKSOURCE_PLL3: /* PLL3 is the clock source for SPI123 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_SPI123CLKSOURCE_CLKP: /* CKPER is the clock source for SPI123 */\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n         if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n\n          break;\n        }\n\n      case (RCC_SPI123CLKSOURCE_PIN): /* External clock is the clock source for I2S */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n  else if (PeriphClk == RCC_PERIPHCLK_ADC)\n    {\n      /* Get ADC clock source */\n      srcclk= __HAL_RCC_GET_ADC_SOURCE();\n\n      switch (srcclk)\n      {\n      case RCC_ADCCLKSOURCE_PLL2:\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_P_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_ADCCLKSOURCE_PLL3:\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_R_Frequency;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n\n      case RCC_ADCCLKSOURCE_CLKP:\n        {\n\n          ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE();\n\n         if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI))\n          {\n            /* In Case the CKPER Source is HSI */\n            frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI))\n          {\n            /* In Case the CKPER Source is CSI */\n            frequency = CSI_VALUE;\n          }\n\n          else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE))\n          {\n            /* In Case the CKPER Source is HSE */\n            frequency = HSE_VALUE;\n          }\n\n          else\n          {\n            /* In Case the CKPER is disabled*/\n            frequency = 0;\n          }\n\n          break;\n        }\n\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n  else if (PeriphClk == RCC_PERIPHCLK_SDMMC)\n    {\n      /* Get SDMMC clock source */\n      srcclk= __HAL_RCC_GET_SDMMC_SOURCE();\n\n      switch (srcclk)\n      {\n      case RCC_SDMMCCLKSOURCE_PLL: /* PLL1 is the clock source for SDMMC */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n      case RCC_SDMMCCLKSOURCE_PLL2: /* PLL2 is the clock source for SDMMC */\n        {\n          if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_R_Frequency;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n  else if (PeriphClk == RCC_PERIPHCLK_SPI6)\n    {\n      /* Get SPI6 clock source */\n      srcclk= __HAL_RCC_GET_SPI6_SOURCE();\n\n      switch (srcclk)\n      {\n      case RCC_SPI6CLKSOURCE_D3PCLK1: /* D3PCLK1 (PCLK4) is the clock source for SPI6 */\n        {\n          frequency = HAL_RCCEx_GetD3PCLK1Freq();\n          break;\n        }\n      case RCC_SPI6CLKSOURCE_PLL2: /* PLL2 is the clock source for SPI6 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_Q_Frequency;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n      case RCC_SPI6CLKSOURCE_PLL3: /* PLL3 is the clock source for SPI6 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY))\n         {\n          HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n          frequency = pll3_clocks.PLL3_Q_Frequency;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n      case RCC_SPI6CLKSOURCE_HSI: /* HSI is the clock source for SPI6 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))\n         {\n          frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n      case RCC_SPI6CLKSOURCE_CSI: /* CSI is the clock source for SPI6 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY))\n         {\n          frequency = CSI_VALUE;\n         }\n         else\n         {\n           frequency = 0;\n         }\n          break;\n        }\n      case RCC_SPI6CLKSOURCE_HSE: /* HSE is the clock source for SPI6 */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY))\n         {\n          frequency = HSE_VALUE;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n#if defined(RCC_SPI6CLKSOURCE_PIN)\n      case RCC_SPI6CLKSOURCE_PIN: /* External clock is the clock source for SPI6 */\n        {\n          frequency = EXTERNAL_CLOCK_VALUE;\n          break;\n        }\n#endif /* RCC_SPI6CLKSOURCE_PIN */\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n  else if (PeriphClk == RCC_PERIPHCLK_FDCAN)\n    {\n      /* Get FDCAN clock source */\n      srcclk= __HAL_RCC_GET_FDCAN_SOURCE();\n\n      switch (srcclk)\n      {\n      case RCC_FDCANCLKSOURCE_HSE: /* HSE is the clock source for FDCAN */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY))\n         {\n          frequency = HSE_VALUE;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n      case RCC_FDCANCLKSOURCE_PLL: /* PLL is the clock source for FDCAN */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY))\n         {\n          HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks);\n          frequency = pll1_clocks.PLL1_Q_Frequency;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n      case RCC_FDCANCLKSOURCE_PLL2: /* PLL2 is the clock source for FDCAN */\n        {\n         if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY))\n         {\n          HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n          frequency = pll2_clocks.PLL2_Q_Frequency;\n         }\n         else\n         {\n          frequency = 0;\n         }\n          break;\n        }\n      default :\n        {\n          frequency = 0;\n          break;\n        }\n      }\n    }\n  else\n    {\n      frequency = 0;\n    }\n\n  return frequency;\n}\n\n\n/**\n  * @brief  Returns the D1PCLK1 frequency\n  * @note   Each time D1PCLK1 changes, this function must be called to update the\n  *         right D1PCLK1 value. Otherwise, any configuration based on this function will be incorrect.\n  * @retval D1PCLK1 frequency\n  */\nuint32_t HAL_RCCEx_GetD1PCLK1Freq(void)\n{\n#if defined(RCC_D1CFGR_D1PPRE)\n  /* Get HCLK source and Compute D1PCLK1 frequency ---------------------------*/\n  return (HAL_RCC_GetHCLKFreq() >> (D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1PPRE)>> RCC_D1CFGR_D1PPRE_Pos] & 0x1FU));\n#else\n/* Get HCLK source and Compute D1PCLK1 frequency ---------------------------*/\n  return (HAL_RCC_GetHCLKFreq() >> (D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDPPRE)>> RCC_CDCFGR1_CDPPRE_Pos] & 0x1FU));\n#endif\n}\n\n/**\n  * @brief  Returns the D3PCLK1 frequency\n  * @note   Each time D3PCLK1 changes, this function must be called to update the\n  *         right D3PCLK1 value. Otherwise, any configuration based on this function will be incorrect.\n  * @retval D3PCLK1 frequency\n  */\nuint32_t HAL_RCCEx_GetD3PCLK1Freq(void)\n{\n#if defined(RCC_D3CFGR_D3PPRE)\n  /* Get HCLK source and Compute D3PCLK1 frequency ---------------------------*/\n  return (HAL_RCC_GetHCLKFreq() >> (D1CorePrescTable[(RCC->D3CFGR & RCC_D3CFGR_D3PPRE)>> RCC_D3CFGR_D3PPRE_Pos] & 0x1FU));\n#else\n  /* Get HCLK source and Compute D3PCLK1 frequency ---------------------------*/\n  return (HAL_RCC_GetHCLKFreq() >> (D1CorePrescTable[(RCC->SRDCFGR & RCC_SRDCFGR_SRDPPRE)>> RCC_SRDCFGR_SRDPPRE_Pos] & 0x1FU));\n#endif\n}\n/**\n* @brief  Returns the PLL2 clock frequencies :PLL2_P_Frequency,PLL2_R_Frequency and PLL2_Q_Frequency\n  * @note   The PLL2 clock frequencies computed by this function is not the real\n  *         frequency in the chip. It is calculated based on the predefined\n  *         constant and the selected clock source:\n  * @note     The function returns values based on HSE_VALUE, HSI_VALUE or CSI Value multiplied/divided by the PLL factors.\n  * @note   This function can be used by the user application to compute the\n  *         baud-rate for the communication peripherals or configure other parameters.\n  *\n  * @note   Each time PLL2CLK changes, this function must be called to update the\n  *         right PLL2CLK value. Otherwise, any configuration based on this function will be incorrect.\n  * @param  PLL2_Clocks structure.\n  * @retval None\n  */\nvoid HAL_RCCEx_GetPLL2ClockFreq(PLL2_ClocksTypeDef* PLL2_Clocks)\n{\n  uint32_t  pllsource, pll2m,  pll2fracen, hsivalue;\n  float_t fracn2, pll2vco;\n\n  /* PLL_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLL2M) * PLL2N\n     PLL2xCLK = PLL2_VCO / PLL2x\n  */\n  pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC);\n  pll2m = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM2)>> 12);\n  pll2fracen = (RCC->PLLCFGR & RCC_PLLCFGR_PLL2FRACEN) >> RCC_PLLCFGR_PLL2FRACEN_Pos;\n  fracn2 =(float_t)(uint32_t)(pll2fracen* ((RCC->PLL2FRACR & RCC_PLL2FRACR_FRACN2)>> 3));\n\n  if (pll2m != 0U)\n  {\n    switch (pllsource)\n    {\n\n    case RCC_PLLSOURCE_HSI:  /* HSI used as PLL clock source */\n\n      if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n      {\n        hsivalue = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n        pll2vco = ( (float_t)hsivalue / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 );\n      }\n      else\n      {\n        pll2vco = ((float_t)HSI_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 );\n      }\n      break;\n\n    case RCC_PLLSOURCE_CSI:  /* CSI used as PLL clock source */\n      pll2vco = ((float_t)CSI_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 );\n      break;\n\n    case RCC_PLLSOURCE_HSE:  /* HSE used as PLL clock source */\n      pll2vco = ((float_t)HSE_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 );\n      break;\n\n    default:\n      pll2vco = ((float_t)CSI_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 );\n      break;\n    }\n    PLL2_Clocks->PLL2_P_Frequency = (uint32_t)(float_t)(pll2vco/((float_t)(uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_P2) >>9)  + (float_t)1 )) ;\n    PLL2_Clocks->PLL2_Q_Frequency = (uint32_t)(float_t)(pll2vco/((float_t)(uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_Q2) >>16) + (float_t)1 )) ;\n    PLL2_Clocks->PLL2_R_Frequency = (uint32_t)(float_t)(pll2vco/((float_t)(uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_R2) >>24) + (float_t)1 )) ;\n  }\n  else\n  {\n    PLL2_Clocks->PLL2_P_Frequency = 0U;\n    PLL2_Clocks->PLL2_Q_Frequency = 0U;\n    PLL2_Clocks->PLL2_R_Frequency = 0U;\n  }\n}\n\n/**\n* @brief  Returns the PLL3 clock frequencies :PLL3_P_Frequency,PLL3_R_Frequency and PLL3_Q_Frequency\n  * @note   The PLL3 clock frequencies computed by this function is not the real\n  *         frequency in the chip. It is calculated based on the predefined\n  *         constant and the selected clock source:\n  * @note     The function returns values based on HSE_VALUE, HSI_VALUE or CSI Value multiplied/divided by the PLL factors.\n  * @note   This function can be used by the user application to compute the\n  *         baud-rate for the communication peripherals or configure other parameters.\n  *\n  * @note   Each time PLL3CLK changes, this function must be called to update the\n  *         right PLL3CLK value. Otherwise, any configuration based on this function will be incorrect.\n  * @param  PLL3_Clocks structure.\n  * @retval None\n  */\nvoid HAL_RCCEx_GetPLL3ClockFreq(PLL3_ClocksTypeDef* PLL3_Clocks)\n{\n  uint32_t pllsource, pll3m, pll3fracen, hsivalue;\n  float_t fracn3, pll3vco;\n\n  /* PLL3_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLL3M) * PLL3N\n     PLL3xCLK = PLL3_VCO / PLLxR\n  */\n  pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC);\n  pll3m = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM3)>> 20)  ;\n  pll3fracen = (RCC->PLLCFGR & RCC_PLLCFGR_PLL3FRACEN) >> RCC_PLLCFGR_PLL3FRACEN_Pos;\n  fracn3 = (float_t)(uint32_t)(pll3fracen* ((RCC->PLL3FRACR & RCC_PLL3FRACR_FRACN3)>> 3));\n\n  if (pll3m != 0U)\n  {\n    switch (pllsource)\n    {\n    case RCC_PLLSOURCE_HSI:  /* HSI used as PLL clock source */\n\n      if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n      {\n        hsivalue = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n        pll3vco = ((float_t)hsivalue / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 );\n      }\n      else\n      {\n        pll3vco = ((float_t)HSI_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 );\n      }\n      break;\n    case RCC_PLLSOURCE_CSI:  /* CSI used as PLL clock source */\n      pll3vco = ((float_t)CSI_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 );\n      break;\n\n    case RCC_PLLSOURCE_HSE:  /* HSE used as PLL clock source */\n      pll3vco = ((float_t)HSE_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 );\n      break;\n\n    default:\n      pll3vco = ((float_t)CSI_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 );\n      break;\n    }\n    PLL3_Clocks->PLL3_P_Frequency = (uint32_t)(float_t)(pll3vco/((float_t)(uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_P3) >>9)  + (float_t)1 )) ;\n    PLL3_Clocks->PLL3_Q_Frequency = (uint32_t)(float_t)(pll3vco/((float_t)(uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_Q3) >>16) + (float_t)1 )) ;\n    PLL3_Clocks->PLL3_R_Frequency = (uint32_t)(float_t)(pll3vco/((float_t)(uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_R3) >>24) + (float_t)1 )) ;\n  }\n  else\n  {\n    PLL3_Clocks->PLL3_P_Frequency = 0U;\n    PLL3_Clocks->PLL3_Q_Frequency = 0U;\n    PLL3_Clocks->PLL3_R_Frequency = 0U;\n  }\n\n}\n\n/**\n* @brief  Returns the PLL1 clock frequencies :PLL1_P_Frequency,PLL1_R_Frequency and PLL1_Q_Frequency\n  * @note   The PLL1 clock frequencies computed by this function is not the real\n  *         frequency in the chip. It is calculated based on the predefined\n  *         constant and the selected clock source:\n  * @note     The function returns values based on HSE_VALUE, HSI_VALUE or CSI Value multiplied/divided by the PLL factors.\n  * @note   This function can be used by the user application to compute the\n  *         baud-rate for the communication peripherals or configure other parameters.\n  *\n  * @note   Each time PLL1CLK changes, this function must be called to update the\n  *         right PLL1CLK value. Otherwise, any configuration based on this function will be incorrect.\n  * @param  PLL1_Clocks structure.\n  * @retval None\n  */\nvoid HAL_RCCEx_GetPLL1ClockFreq(PLL1_ClocksTypeDef* PLL1_Clocks)\n{\n  uint32_t pllsource, pll1m, pll1fracen, hsivalue;\n  float_t fracn1, pll1vco;\n\n  pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC);\n  pll1m = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> 4);\n  pll1fracen = RCC->PLLCFGR & RCC_PLLCFGR_PLL1FRACEN;\n  fracn1 = (float_t)(uint32_t)(pll1fracen * ((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1)>> 3));\n\n  if (pll1m != 0U)\n  {\n    switch (pllsource)\n    {\n\n    case RCC_PLLSOURCE_HSI:  /* HSI used as PLL clock source */\n\n      if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n      {\n        hsivalue = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3));\n        pll1vco = ((float_t)hsivalue / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n      }\n      else\n      {\n        pll1vco = ((float_t)HSI_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n      }\n      break;\n    case RCC_PLLSOURCE_CSI:  /* CSI used as PLL clock source */\n      pll1vco = ((float_t)CSI_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n      break;\n\n    case RCC_PLLSOURCE_HSE:  /* HSE used as PLL clock source */\n      pll1vco = ((float_t)HSE_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n      break;\n\n    default:\n      pll1vco = ((float_t)HSI_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );\n      break;\n    }\n\n    PLL1_Clocks->PLL1_P_Frequency = (uint32_t)(float_t)(pll1vco/((float_t)(uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >>9)  + (float_t)1 )) ;\n    PLL1_Clocks->PLL1_Q_Frequency = (uint32_t)(float_t)(pll1vco/((float_t)(uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_Q1) >>16) + (float_t)1 )) ;\n    PLL1_Clocks->PLL1_R_Frequency = (uint32_t)(float_t)(pll1vco/((float_t)(uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_R1) >>24) + (float_t)1 )) ;\n  }\n  else\n  {\n    PLL1_Clocks->PLL1_P_Frequency = 0U;\n    PLL1_Clocks->PLL1_Q_Frequency = 0U;\n    PLL1_Clocks->PLL1_R_Frequency = 0U;\n  }\n\n}\n\n/**\n  * @brief  Returns the main System frequency\n  * @note   Each time System clock changes, this function must be called to update the\n  *         right core clock value. Otherwise, any configuration based on this function will be incorrect.\n  * @note   The SystemCoreClock CMSIS variable is used to store System current Core Clock Frequency\n  *         and updated within this function\n  * @retval HCLK frequency\n  */\nuint32_t HAL_RCCEx_GetD1SysClockFreq(void)\n{\nuint32_t common_system_clock;\n\n#if defined(RCC_D1CFGR_D1CPRE)\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> (D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos] & 0x1FU);\n#else\n  common_system_clock = HAL_RCC_GetSysClockFreq() >> (D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos] & 0x1FU);\n#endif\n\n  /* Update the SystemD2Clock global variable */\n#if defined(RCC_D1CFGR_HPRE)\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU));\n#else\n  SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_HPRE)>> RCC_CDCFGR1_HPRE_Pos]) & 0x1FU));\n#endif\n\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  SystemCoreClock = SystemD2Clock;\n#else\n  SystemCoreClock = common_system_clock;\n#endif /* DUAL_CORE && CORE_CM4 */\n\n  return common_system_clock;\n}\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_Exported_Functions_Group2 Extended System Control functions\n *  @brief  Extended Peripheral Control functions\n  * @{\n  */\n/**\n  * @brief  Enables the LSE Clock Security System.\n  * @note   Prior to enable the LSE Clock Security System, LSE oscillator is to be enabled\n  *         with HAL_RCC_OscConfig() and the LSE oscillator clock is to be selected as RTC\n  *         clock with HAL_RCCEx_PeriphCLKConfig().\n  * @retval None\n  */\nvoid HAL_RCCEx_EnableLSECSS(void)\n{\n  SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ;\n}\n\n/**\n  * @brief  Disables the LSE Clock Security System.\n  * @note   LSE Clock Security System can only be disabled after a LSE failure detection.\n  * @retval None\n  */\nvoid HAL_RCCEx_DisableLSECSS(void)\n{\n  CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ;\n  /* Disable LSE CSS IT if any */\n  __HAL_RCC_DISABLE_IT(RCC_IT_LSECSS);\n}\n\n/**\n  * @brief  Enable the LSE Clock Security System Interrupt & corresponding EXTI line.\n  * @note   LSE Clock Security System Interrupt is mapped on EXTI line 18\n  * @retval None\n  */\nvoid HAL_RCCEx_EnableLSECSS_IT(void)\n{\n  /* Enable LSE CSS */\n  SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ;\n\n  /* Enable LSE CSS IT */\n  __HAL_RCC_ENABLE_IT(RCC_IT_LSECSS);\n\n  /* Enable IT on EXTI Line 18 */\n#if defined(DUAL_CORE) && defined(CORE_CM4)\n  __HAL_RCC_C2_LSECSS_EXTI_ENABLE_IT();\n#else\n  __HAL_RCC_LSECSS_EXTI_ENABLE_IT();\n#endif /* DUAL_CORE && CORE_CM4 */\n  __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE();\n}\n\n/**\n  * @brief  Configure the oscillator clock source for wakeup from Stop and CSS backup clock\n  * @param  WakeUpClk: Wakeup clock\n  *         This parameter can be one of the following values:\n  *            @arg RCC_STOP_WAKEUPCLOCK_CSI: CSI oscillator selection\n  *            @arg RCC_STOP_WAKEUPCLOCK_HSI: HSI oscillator selection\n  * @note   This function shall not be called after the Clock Security System on HSE has been\n  *         enabled.\n  * @retval None\n  */\nvoid HAL_RCCEx_WakeUpStopCLKConfig(uint32_t WakeUpClk)\n{\n  assert_param(IS_RCC_STOP_WAKEUPCLOCK(WakeUpClk));\n\n  __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(WakeUpClk);\n}\n\n/**\n  * @brief  Configure the oscillator Kernel clock source for wakeup from Stop\n  * @param  WakeUpClk: Kernel Wakeup clock\n  *         This parameter can be one of the following values:\n  *            @arg RCC_STOP_KERWAKEUPCLOCK_CSI: CSI oscillator selection\n  *            @arg RCC_STOP_KERWAKEUPCLOCK_HSI: HSI oscillator selection\n  * @retval None\n  */\nvoid HAL_RCCEx_KerWakeUpStopCLKConfig(uint32_t WakeUpClk)\n{\n  assert_param(IS_RCC_STOP_KERWAKEUPCLOCK(WakeUpClk));\n\n  __HAL_RCC_KERWAKEUPSTOP_CLK_CONFIG(WakeUpClk);\n}\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Enable COREx boot independently of CMx_B option byte value\n  * @param  RCC_BootCx: Boot Core to be enabled\n  *         This parameter can be one of the following values:\n  *            @arg RCC_BOOT_C1: CM7 core selection\n  *            @arg RCC_BOOT_C2: CM4 core selection\n  * @note   This bit can be set by software but is cleared by hardware after a system reset or STANDBY\n  *\n  * @retval None\n  */\nvoid HAL_RCCEx_EnableBootCore(uint32_t RCC_BootCx)\n{\n  assert_param(IS_RCC_BOOT_CORE(RCC_BootCx));\n  SET_BIT(RCC->GCR, RCC_BootCx) ;\n}\n\n#endif /*DUAL_CORE*/\n\n#if defined(DUAL_CORE)\n/**\n  * @brief  Configure WWDGx to generate a system reset not only CPUx reset(default) when a time-out occurs\n  * @param  RCC_WWDGx: WWDGx to be configured\n  *         This parameter can be one of the following values:\n  *            @arg RCC_WWDG1: WWDG1 generates system reset\n  *            @arg RCC_WWDG2: WWDG2 generates system reset\n  * @note   This bit can be set by software but is cleared by hardware during a system reset\n  *\n  * @retval None\n  */\nvoid HAL_RCCEx_WWDGxSysResetConfig(uint32_t RCC_WWDGx)\n{\n  assert_param(IS_RCC_SCOPE_WWDG(RCC_WWDGx));\n  SET_BIT(RCC->GCR, RCC_WWDGx) ;\n}\n\n#else\n#if defined(RCC_GCR_WW1RSC)\n/**\n  * @brief  Configure WWDG1 to generate a system reset not only CPU reset(default) when a time-out occurs\n  * @param  RCC_WWDGx: WWDGx to be configured\n  *         This parameter can be one of the following values:\n  *            @arg RCC_WWDG1: WWDG1 generates system reset\n  * @note   This bit can be set by software but is cleared by hardware during a system reset\n  *\n  * @retval None\n  */\nvoid HAL_RCCEx_WWDGxSysResetConfig(uint32_t RCC_WWDGx)\n{\n  assert_param(IS_RCC_SCOPE_WWDG(RCC_WWDGx));\n  SET_BIT(RCC->GCR, RCC_WWDGx) ;\n}\n#endif\n#endif /*DUAL_CORE*/\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_Exported_Functions_Group3 Extended Clock Recovery System Control functions\n *  @brief  Extended Clock Recovery System Control functions\n *\n@verbatim\n ===============================================================================\n                ##### Extended Clock Recovery System Control functions  #####\n ===============================================================================\n    [..]\n      For devices with Clock Recovery System feature (CRS), RCC Extension HAL driver can be used as follows:\n\n      (#) In System clock config, HSI48 needs to be enabled\n\n      (#) Enable CRS clock in IP MSP init which will use CRS functions\n\n      (#) Call CRS functions as follows:\n          (##) Prepare synchronization configuration necessary for HSI48 calibration\n              (+++) Default values can be set for frequency Error Measurement (reload and error limit)\n                        and also HSI48 oscillator smooth trimming.\n              (+++) Macro __HAL_RCC_CRS_RELOADVALUE_CALCULATE can be also used to calculate\n                        directly reload value with target and synchronization frequencies values\n          (##) Call function HAL_RCCEx_CRSConfig which\n              (+++) Resets CRS registers to their default values.\n              (+++) Configures CRS registers with synchronization configuration\n              (+++) Enables automatic calibration and frequency error counter feature\n           Note: When using USB LPM (Link Power Management) and the device is in Sleep mode, the\n           periodic USB SOF will not be generated by the host. No SYNC signal will therefore be\n           provided to the CRS to calibrate the HSI48 on the run. To guarantee the required clock\n           precision after waking up from Sleep mode, the LSE or reference clock on the GPIOs\n           should be used as SYNC signal.\n\n          (##) A polling function is provided to wait for complete synchronization\n              (+++) Call function HAL_RCCEx_CRSWaitSynchronization()\n              (+++) According to CRS status, user can decide to adjust again the calibration or continue\n                        application if synchronization is OK\n\n      (#) User can retrieve information related to synchronization in calling function\n            HAL_RCCEx_CRSGetSynchronizationInfo()\n\n      (#) Regarding synchronization status and synchronization information, user can try a new calibration\n           in changing synchronization configuration and call again HAL_RCCEx_CRSConfig.\n           Note: When the SYNC event is detected during the down-counting phase (before reaching the zero value),\n           it means that the actual frequency is lower than the target (and so, that the TRIM value should be\n           incremented), while when it is detected during the up-counting phase it means that the actual frequency\n           is higher (and that the TRIM value should be decremented).\n\n      (#) In interrupt mode, user can resort to the available macros (__HAL_RCC_CRS_XXX_IT). Interrupts will go\n          through CRS Handler (CRS_IRQn/CRS_IRQHandler)\n              (++) Call function HAL_RCCEx_CRSConfig()\n              (++) Enable CRS_IRQn (thanks to NVIC functions)\n              (++) Enable CRS interrupt (__HAL_RCC_CRS_ENABLE_IT)\n              (++) Implement CRS status management in the following user callbacks called from\n                   HAL_RCCEx_CRS_IRQHandler():\n                   (+++) HAL_RCCEx_CRS_SyncOkCallback()\n                   (+++) HAL_RCCEx_CRS_SyncWarnCallback()\n                   (+++) HAL_RCCEx_CRS_ExpectedSyncCallback()\n                   (+++) HAL_RCCEx_CRS_ErrorCallback()\n\n      (#) To force a SYNC EVENT, user can use the function HAL_RCCEx_CRSSoftwareSynchronizationGenerate().\n          This function can be called before calling HAL_RCCEx_CRSConfig (for instance in Systick handler)\n\n@endverbatim\n * @{\n */\n\n/**\n  * @brief  Start automatic synchronization for polling mode\n  * @param  pInit Pointer on RCC_CRSInitTypeDef structure\n  * @retval None\n  */\nvoid HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit)\n{\n  uint32_t value;\n\n  /* Check the parameters */\n  assert_param(IS_RCC_CRS_SYNC_DIV(pInit->Prescaler));\n  assert_param(IS_RCC_CRS_SYNC_SOURCE(pInit->Source));\n  assert_param(IS_RCC_CRS_SYNC_POLARITY(pInit->Polarity));\n  assert_param(IS_RCC_CRS_RELOADVALUE(pInit->ReloadValue));\n  assert_param(IS_RCC_CRS_ERRORLIMIT(pInit->ErrorLimitValue));\n  assert_param(IS_RCC_CRS_HSI48CALIBRATION(pInit->HSI48CalibrationValue));\n\n  /* CONFIGURATION */\n\n  /* Before configuration, reset CRS registers to their default values*/\n  __HAL_RCC_CRS_FORCE_RESET();\n  __HAL_RCC_CRS_RELEASE_RESET();\n\n  /* Set the SYNCDIV[2:0] bits according to Pre-scaler value */\n  /* Set the SYNCSRC[1:0] bits according to Source value */\n  /* Set the SYNCSPOL bit according to Polarity value */\n  if ((HAL_GetREVID() <= REV_ID_Y) && (pInit->Source == RCC_CRS_SYNC_SOURCE_USB2))\n  {\n    /* Use Rev.Y value of USB2 */\n    value = (pInit->Prescaler | RCC_CRS_SYNC_SOURCE_PIN | pInit->Polarity);\n  }\n  else\n  {\n    value = (pInit->Prescaler | pInit->Source | pInit->Polarity);\n  }\n  /* Set the RELOAD[15:0] bits according to ReloadValue value */\n  value |= pInit->ReloadValue;\n  /* Set the FELIM[7:0] bits according to ErrorLimitValue value */\n  value |= (pInit->ErrorLimitValue << CRS_CFGR_FELIM_Pos);\n  WRITE_REG(CRS->CFGR, value);\n\n  /* Adjust HSI48 oscillator smooth trimming */\n  /* Set the TRIM[5:0] bits according to RCC_CRS_HSI48CalibrationValue value */\n  MODIFY_REG(CRS->CR, CRS_CR_TRIM, (pInit->HSI48CalibrationValue << CRS_CR_TRIM_Pos));\n\n  /* START AUTOMATIC SYNCHRONIZATION*/\n\n  /* Enable Automatic trimming & Frequency error counter */\n  SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN | CRS_CR_CEN);\n}\n\n/**\n  * @brief  Generate the software synchronization event\n  * @retval None\n  */\nvoid HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void)\n{\n  SET_BIT(CRS->CR, CRS_CR_SWSYNC);\n}\n\n/**\n  * @brief  Return synchronization info\n  * @param  pSynchroInfo Pointer on RCC_CRSSynchroInfoTypeDef structure\n  * @retval None\n  */\nvoid HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo)\n{\n  /* Check the parameter */\n  assert_param(pSynchroInfo != (void *)NULL);\n\n  /* Get the reload value */\n  pSynchroInfo->ReloadValue = (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_RELOAD));\n\n  /* Get HSI48 oscillator smooth trimming */\n  pSynchroInfo->HSI48CalibrationValue = (uint32_t)(READ_BIT(CRS->CR, CRS_CR_TRIM) >> CRS_CR_TRIM_Pos);\n\n  /* Get Frequency error capture */\n  pSynchroInfo->FreqErrorCapture = (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FECAP) >> CRS_ISR_FECAP_Pos);\n\n  /* Get Frequency error direction */\n  pSynchroInfo->FreqErrorDirection = (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FEDIR));\n}\n\n/**\n* @brief Wait for CRS Synchronization status.\n* @param Timeout  Duration of the time-out\n* @note  Timeout is based on the maximum time to receive a SYNC event based on synchronization\n*        frequency.\n* @note    If Time-out set to HAL_MAX_DELAY, HAL_TIMEOUT will be never returned.\n* @retval Combination of Synchronization status\n*          This parameter can be a combination of the following values:\n*            @arg @ref RCC_CRS_TIMEOUT\n*            @arg @ref RCC_CRS_SYNCOK\n*            @arg @ref RCC_CRS_SYNCWARN\n*            @arg @ref RCC_CRS_SYNCERR\n*            @arg @ref RCC_CRS_SYNCMISS\n*            @arg @ref RCC_CRS_TRIMOVF\n*/\nuint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout)\n{\n  uint32_t crsstatus = RCC_CRS_NONE;\n  uint32_t tickstart;\n\n  /* Get time-out */\n  tickstart = HAL_GetTick();\n\n  /* Wait for CRS flag or time-out detection */\n  do\n  {\n    if(Timeout != HAL_MAX_DELAY)\n    {\n      if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\n      {\n        crsstatus = RCC_CRS_TIMEOUT;\n      }\n    }\n    /* Check CRS SYNCOK flag  */\n    if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCOK))\n    {\n      /* CRS SYNC event OK */\n      crsstatus |= RCC_CRS_SYNCOK;\n\n      /* Clear CRS SYNC event OK bit */\n      __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCOK);\n    }\n\n    /* Check CRS SYNCWARN flag  */\n    if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCWARN))\n    {\n      /* CRS SYNC warning */\n      crsstatus |= RCC_CRS_SYNCWARN;\n\n      /* Clear CRS SYNCWARN bit */\n      __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCWARN);\n    }\n\n    /* Check CRS TRIM overflow flag  */\n    if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_TRIMOVF))\n    {\n      /* CRS SYNC Error */\n      crsstatus |= RCC_CRS_TRIMOVF;\n\n      /* Clear CRS Error bit */\n      __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_TRIMOVF);\n    }\n\n    /* Check CRS Error flag  */\n    if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCERR))\n    {\n      /* CRS SYNC Error */\n      crsstatus |= RCC_CRS_SYNCERR;\n\n      /* Clear CRS Error bit */\n      __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCERR);\n    }\n\n    /* Check CRS SYNC Missed flag  */\n    if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCMISS))\n    {\n      /* CRS SYNC Missed */\n      crsstatus |= RCC_CRS_SYNCMISS;\n\n      /* Clear CRS SYNC Missed bit */\n      __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCMISS);\n    }\n\n    /* Check CRS Expected SYNC flag  */\n    if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_ESYNC))\n    {\n      /* frequency error counter reached a zero value */\n      __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_ESYNC);\n    }\n  } while(RCC_CRS_NONE == crsstatus);\n\n  return crsstatus;\n}\n\n/**\n  * @brief Handle the Clock Recovery System interrupt request.\n  * @retval None\n  */\nvoid HAL_RCCEx_CRS_IRQHandler(void)\n{\n  uint32_t crserror = RCC_CRS_NONE;\n  /* Get current IT flags and IT sources values */\n  uint32_t itflags = READ_REG(CRS->ISR);\n  uint32_t itsources = READ_REG(CRS->CR);\n\n  /* Check CRS SYNCOK flag  */\n  if(((itflags & RCC_CRS_FLAG_SYNCOK) != 0U) && ((itsources & RCC_CRS_IT_SYNCOK) != 0U))\n  {\n    /* Clear CRS SYNC event OK flag */\n    WRITE_REG(CRS->ICR, CRS_ICR_SYNCOKC);\n\n    /* user callback */\n    HAL_RCCEx_CRS_SyncOkCallback();\n  }\n  /* Check CRS SYNCWARN flag  */\n  else if(((itflags & RCC_CRS_FLAG_SYNCWARN) != 0U) && ((itsources & RCC_CRS_IT_SYNCWARN) != 0U))\n  {\n    /* Clear CRS SYNCWARN flag */\n    WRITE_REG(CRS->ICR, CRS_ICR_SYNCWARNC);\n\n    /* user callback */\n    HAL_RCCEx_CRS_SyncWarnCallback();\n  }\n  /* Check CRS Expected SYNC flag  */\n  else if(((itflags & RCC_CRS_FLAG_ESYNC) != 0U) && ((itsources & RCC_CRS_IT_ESYNC) != 0U))\n  {\n    /* frequency error counter reached a zero value */\n    WRITE_REG(CRS->ICR, CRS_ICR_ESYNCC);\n\n    /* user callback */\n    HAL_RCCEx_CRS_ExpectedSyncCallback();\n  }\n  /* Check CRS Error flags  */\n  else\n  {\n    if(((itflags & RCC_CRS_FLAG_ERR) != 0U) && ((itsources & RCC_CRS_IT_ERR) != 0U))\n    {\n      if((itflags & RCC_CRS_FLAG_SYNCERR) != 0U)\n      {\n        crserror |= RCC_CRS_SYNCERR;\n      }\n      if((itflags & RCC_CRS_FLAG_SYNCMISS) != 0U)\n      {\n        crserror |= RCC_CRS_SYNCMISS;\n      }\n      if((itflags & RCC_CRS_FLAG_TRIMOVF) != 0U)\n      {\n        crserror |= RCC_CRS_TRIMOVF;\n      }\n\n      /* Clear CRS Error flags */\n      WRITE_REG(CRS->ICR, CRS_ICR_ERRC);\n\n      /* user error callback */\n      HAL_RCCEx_CRS_ErrorCallback(crserror);\n    }\n  }\n}\n\n/**\n  * @brief  RCCEx Clock Recovery System SYNCOK interrupt callback.\n  * @retval none\n  */\n__weak void HAL_RCCEx_CRS_SyncOkCallback(void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the @ref HAL_RCCEx_CRS_SyncOkCallback should be implemented in the user file\n   */\n}\n\n/**\n  * @brief  RCCEx Clock Recovery System SYNCWARN interrupt callback.\n  * @retval none\n  */\n__weak void HAL_RCCEx_CRS_SyncWarnCallback(void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the @ref HAL_RCCEx_CRS_SyncWarnCallback should be implemented in the user file\n   */\n}\n\n/**\n  * @brief  RCCEx Clock Recovery System Expected SYNC interrupt callback.\n  * @retval none\n  */\n__weak void HAL_RCCEx_CRS_ExpectedSyncCallback(void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the @ref HAL_RCCEx_CRS_ExpectedSyncCallback should be implemented in the user file\n   */\n}\n\n/**\n  * @brief  RCCEx Clock Recovery System Error interrupt callback.\n  * @param  Error Combination of Error status.\n  *         This parameter can be a combination of the following values:\n  *           @arg @ref RCC_CRS_SYNCERR\n  *           @arg @ref RCC_CRS_SYNCMISS\n  *           @arg @ref RCC_CRS_TRIMOVF\n  * @retval none\n  */\n__weak void HAL_RCCEx_CRS_ErrorCallback(uint32_t Error)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(Error);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the @ref HAL_RCCEx_CRS_ErrorCallback should be implemented in the user file\n   */\n}\n\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @defgroup RCCEx_Private_functions RCCEx Private Functions\n * @{\n */\n/**\n  * @brief  Configure the PLL2 VCI,VCO ranges, multiplication and division factors and enable it\n  * @param  pll2: Pointer to an RCC_PLL2InitTypeDef structure that\n  *         contains the configuration parameters  as well as VCI, VCO clock ranges.\n  * @param  Divider  divider parameter to be updated\n  * @note   PLL2 is temporary disabled to apply new parameters\n  *\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef RCCEx_PLL2_Config(RCC_PLL2InitTypeDef *pll2, uint32_t Divider)\n{\n\n  uint32_t tickstart;\n  HAL_StatusTypeDef status = HAL_OK;\n  assert_param(IS_RCC_PLL2M_VALUE(pll2->PLL2M));\n  assert_param(IS_RCC_PLL2N_VALUE(pll2->PLL2N));\n  assert_param(IS_RCC_PLL2P_VALUE(pll2->PLL2P));\n  assert_param(IS_RCC_PLL2R_VALUE(pll2->PLL2R));\n  assert_param(IS_RCC_PLL2Q_VALUE(pll2->PLL2Q));\n  assert_param(IS_RCC_PLL2RGE_VALUE(pll2->PLL2RGE));\n  assert_param(IS_RCC_PLL2VCO_VALUE(pll2->PLL2VCOSEL));\n  assert_param(IS_RCC_PLLFRACN_VALUE(pll2->PLL2FRACN));\n\n  /* Check that PLL2 OSC clock source is already set */\n  if(__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_NONE)\n  {\n    return HAL_ERROR;\n  }\n\n\n  else\n  {\n    /* Disable  PLL2. */\n    __HAL_RCC_PLL2_DISABLE();\n\n    /* Get Start Tick*/\n    tickstart = HAL_GetTick();\n\n    /* Wait till PLL is disabled */\n    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) != 0U)\n    {\n      if( (HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n\n    /* Configure PLL2 multiplication and division factors. */\n    __HAL_RCC_PLL2_CONFIG(pll2->PLL2M,\n                          pll2->PLL2N,\n                          pll2->PLL2P,\n                          pll2->PLL2Q,\n                          pll2->PLL2R);\n\n    /* Select PLL2 input reference frequency range: VCI */\n    __HAL_RCC_PLL2_VCIRANGE(pll2->PLL2RGE) ;\n\n    /* Select PLL2 output frequency range : VCO */\n    __HAL_RCC_PLL2_VCORANGE(pll2->PLL2VCOSEL) ;\n\n    /* Disable PLL2FRACN . */\n    __HAL_RCC_PLL2FRACN_DISABLE();\n\n    /* Configures PLL2 clock Fractional Part Of The Multiplication Factor */\n    __HAL_RCC_PLL2FRACN_CONFIG(pll2->PLL2FRACN);\n\n    /* Enable PLL2FRACN . */\n    __HAL_RCC_PLL2FRACN_ENABLE();\n\n    /* Enable the PLL2 clock output */\n    if(Divider == DIVIDER_P_UPDATE)\n    {\n      __HAL_RCC_PLL2CLKOUT_ENABLE(RCC_PLL2_DIVP);\n    }\n    else if(Divider == DIVIDER_Q_UPDATE)\n    {\n      __HAL_RCC_PLL2CLKOUT_ENABLE(RCC_PLL2_DIVQ);\n    }\n    else\n    {\n      __HAL_RCC_PLL2CLKOUT_ENABLE(RCC_PLL2_DIVR);\n    }\n\n    /* Enable  PLL2. */\n    __HAL_RCC_PLL2_ENABLE();\n\n    /* Get Start Tick*/\n    tickstart = HAL_GetTick();\n\n    /* Wait till PLL2 is ready */\n    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) == 0U)\n    {\n      if( (HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n\n  }\n\n\n  return status;\n}\n\n\n/**\n  * @brief  Configure the PLL3 VCI,VCO ranges, multiplication and division factors and enable it\n  * @param  pll3: Pointer to an RCC_PLL3InitTypeDef structure that\n  *         contains the configuration parameters  as well as VCI, VCO clock ranges.\n  * @param  Divider  divider parameter to be updated\n  * @note   PLL3 is temporary disabled to apply new parameters\n  *\n  * @retval HAL status\n  */\nstatic HAL_StatusTypeDef RCCEx_PLL3_Config(RCC_PLL3InitTypeDef *pll3, uint32_t Divider)\n{\n  uint32_t tickstart;\n  HAL_StatusTypeDef status = HAL_OK;\n  assert_param(IS_RCC_PLL3M_VALUE(pll3->PLL3M));\n  assert_param(IS_RCC_PLL3N_VALUE(pll3->PLL3N));\n  assert_param(IS_RCC_PLL3P_VALUE(pll3->PLL3P));\n  assert_param(IS_RCC_PLL3R_VALUE(pll3->PLL3R));\n  assert_param(IS_RCC_PLL3Q_VALUE(pll3->PLL3Q));\n  assert_param(IS_RCC_PLL3RGE_VALUE(pll3->PLL3RGE));\n  assert_param(IS_RCC_PLL3VCO_VALUE(pll3->PLL3VCOSEL));\n  assert_param(IS_RCC_PLLFRACN_VALUE(pll3->PLL3FRACN));\n\n  /* Check that PLL3 OSC clock source is already set */\n  if(__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_NONE)\n  {\n    return HAL_ERROR;\n  }\n\n\n  else\n  {\n    /* Disable  PLL3. */\n    __HAL_RCC_PLL3_DISABLE();\n\n    /* Get Start Tick*/\n    tickstart = HAL_GetTick();\n    /* Wait till PLL3 is ready */\n    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL3RDY) != 0U)\n    {\n      if( (HAL_GetTick() - tickstart ) > PLL3_TIMEOUT_VALUE)\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n\n    /* Configure the PLL3  multiplication and division factors. */\n    __HAL_RCC_PLL3_CONFIG(pll3->PLL3M,\n                          pll3->PLL3N,\n                          pll3->PLL3P,\n                          pll3->PLL3Q,\n                          pll3->PLL3R);\n\n    /* Select PLL3 input reference frequency range: VCI */\n    __HAL_RCC_PLL3_VCIRANGE(pll3->PLL3RGE) ;\n\n    /* Select PLL3 output frequency range : VCO */\n    __HAL_RCC_PLL3_VCORANGE(pll3->PLL3VCOSEL) ;\n\n    /* Disable PLL3FRACN . */\n    __HAL_RCC_PLL3FRACN_DISABLE();\n\n    /* Configures PLL3 clock Fractional Part Of The Multiplication Factor */\n    __HAL_RCC_PLL3FRACN_CONFIG(pll3->PLL3FRACN);\n\n    /* Enable PLL3FRACN . */\n    __HAL_RCC_PLL3FRACN_ENABLE();\n\n    /* Enable the PLL3 clock output */\n    if(Divider == DIVIDER_P_UPDATE)\n    {\n      __HAL_RCC_PLL3CLKOUT_ENABLE(RCC_PLL3_DIVP);\n    }\n    else if(Divider == DIVIDER_Q_UPDATE)\n    {\n      __HAL_RCC_PLL3CLKOUT_ENABLE(RCC_PLL3_DIVQ);\n    }\n    else\n    {\n      __HAL_RCC_PLL3CLKOUT_ENABLE(RCC_PLL3_DIVR);\n    }\n\n    /* Enable  PLL3. */\n    __HAL_RCC_PLL3_ENABLE();\n\n    /* Get Start Tick*/\n    tickstart = HAL_GetTick();\n\n    /* Wait till PLL3 is ready */\n    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL3RDY) == 0U)\n    {\n      if( (HAL_GetTick() - tickstart ) > PLL3_TIMEOUT_VALUE)\n      {\n        return HAL_TIMEOUT;\n      }\n    }\n\n  }\n\n\n  return status;\n}\n\n/**\n  * @brief Handle the RCC LSE Clock Security System interrupt request.\n  * @retval None\n  */\nvoid HAL_RCCEx_LSECSS_IRQHandler(void)\n{\n  /* Check RCC LSE CSSF flag  */\n  if(__HAL_RCC_GET_IT(RCC_IT_LSECSS))\n  {\n\n    /* Clear RCC LSE CSS pending bit */\n    __HAL_RCC_CLEAR_IT(RCC_IT_LSECSS);\n\n    /* RCC LSE Clock Security System interrupt user callback */\n    HAL_RCCEx_LSECSS_Callback();\n\n  }\n}\n\n/**\n  * @brief  RCCEx LSE Clock Security System interrupt callback.\n  * @retval none\n  */\n__weak void HAL_RCCEx_LSECSS_Callback(void)\n{\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the @ref HAL_RCCEx_LSECSS_Callback should be implemented in the user file\n  */\n}\n\n\n\n/**\n  * @}\n  */\n\n#endif /* HAL_RCC_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_tim.c\n  * @author  MCD Application Team\n  * @brief   TIM HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the Timer (TIM) peripheral:\n  *           + TIM Time Base Initialization\n  *           + TIM Time Base Start\n  *           + TIM Time Base Start Interruption\n  *           + TIM Time Base Start DMA\n  *           + TIM Output Compare/PWM Initialization\n  *           + TIM Output Compare/PWM Channel Configuration\n  *           + TIM Output Compare/PWM  Start\n  *           + TIM Output Compare/PWM  Start Interruption\n  *           + TIM Output Compare/PWM Start DMA\n  *           + TIM Input Capture Initialization\n  *           + TIM Input Capture Channel Configuration\n  *           + TIM Input Capture Start\n  *           + TIM Input Capture Start Interruption\n  *           + TIM Input Capture Start DMA\n  *           + TIM One Pulse Initialization\n  *           + TIM One Pulse Channel Configuration\n  *           + TIM One Pulse Start\n  *           + TIM Encoder Interface Initialization\n  *           + TIM Encoder Interface Start\n  *           + TIM Encoder Interface Start Interruption\n  *           + TIM Encoder Interface Start DMA\n  *           + Commutation Event configuration with Interruption and DMA\n  *           + TIM OCRef clear configuration\n  *           + TIM External Clock configuration\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                      ##### TIMER Generic features #####\n  ==============================================================================\n  [..] The Timer features include:\n       (#) 16-bit up, down, up/down auto-reload counter.\n       (#) 16-bit programmable prescaler allowing dividing (also on the fly) the\n           counter clock frequency either by any factor between 1 and 65536.\n       (#) Up to 4 independent channels for:\n           (++) Input Capture\n           (++) Output Compare\n           (++) PWM generation (Edge and Center-aligned Mode)\n           (++) One-pulse mode output\n       (#) Synchronization circuit to control the timer with external signals and to interconnect\n            several timers together.\n       (#) Supports incremental encoder for positioning purposes\n\n            ##### How to use this driver #####\n  ==============================================================================\n    [..]\n     (#) Initialize the TIM low level resources by implementing the following functions\n         depending on the selected feature:\n           (++) Time Base : HAL_TIM_Base_MspInit()\n           (++) Input Capture : HAL_TIM_IC_MspInit()\n           (++) Output Compare : HAL_TIM_OC_MspInit()\n           (++) PWM generation : HAL_TIM_PWM_MspInit()\n           (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit()\n           (++) Encoder mode output : HAL_TIM_Encoder_MspInit()\n\n     (#) Initialize the TIM low level resources :\n        (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE();\n        (##) TIM pins configuration\n            (+++) Enable the clock for the TIM GPIOs using the following function:\n             __HAL_RCC_GPIOx_CLK_ENABLE();\n            (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();\n\n     (#) The external Clock can be configured, if needed (the default clock is the\n         internal clock from the APBx), using the following function:\n         HAL_TIM_ConfigClockSource, the clock configuration should be done before\n         any start function.\n\n     (#) Configure the TIM in the desired functioning mode using one of the\n       Initialization function of this driver:\n       (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base\n       (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an\n            Output Compare signal.\n       (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a\n            PWM signal.\n       (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an\n            external signal.\n       (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer\n            in One Pulse Mode.\n       (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface.\n\n     (#) Activate the TIM peripheral using one of the start functions depending from the feature used:\n           (++) Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT()\n           (++) Input Capture :  HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT()\n           (++) Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT()\n           (++) PWM generation : HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT()\n           (++) One-pulse mode output : HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT()\n           (++) Encoder mode output : HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA(), HAL_TIM_Encoder_Start_IT().\n\n     (#) The DMA Burst is managed with the two following functions:\n         HAL_TIM_DMABurst_WriteStart()\n         HAL_TIM_DMABurst_ReadStart()\n\n    *** Callback registration ***\n  =============================================\n\n  [..]\n  The compilation define  USE_HAL_TIM_REGISTER_CALLBACKS when set to 1\n  allows the user to configure dynamically the driver callbacks.\n\n  [..]\n  Use Function HAL_TIM_RegisterCallback() to register a callback.\n  HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,\n  the Callback ID and a pointer to the user callback function.\n\n  [..]\n  Use function HAL_TIM_UnRegisterCallback() to reset a callback to the default\n  weak function.\n  HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,\n  and the Callback ID.\n\n  [..]\n  These functions allow to register/unregister following callbacks:\n    (+) Base_MspInitCallback              : TIM Base Msp Init Callback.\n    (+) Base_MspDeInitCallback            : TIM Base Msp DeInit Callback.\n    (+) IC_MspInitCallback                : TIM IC Msp Init Callback.\n    (+) IC_MspDeInitCallback              : TIM IC Msp DeInit Callback.\n    (+) OC_MspInitCallback                : TIM OC Msp Init Callback.\n    (+) OC_MspDeInitCallback              : TIM OC Msp DeInit Callback.\n    (+) PWM_MspInitCallback               : TIM PWM Msp Init Callback.\n    (+) PWM_MspDeInitCallback             : TIM PWM Msp DeInit Callback.\n    (+) OnePulse_MspInitCallback          : TIM One Pulse Msp Init Callback.\n    (+) OnePulse_MspDeInitCallback        : TIM One Pulse Msp DeInit Callback.\n    (+) Encoder_MspInitCallback           : TIM Encoder Msp Init Callback.\n    (+) Encoder_MspDeInitCallback         : TIM Encoder Msp DeInit Callback.\n    (+) HallSensor_MspInitCallback        : TIM Hall Sensor Msp Init Callback.\n    (+) HallSensor_MspDeInitCallback      : TIM Hall Sensor Msp DeInit Callback.\n    (+) PeriodElapsedCallback             : TIM Period Elapsed Callback.\n    (+) PeriodElapsedHalfCpltCallback     : TIM Period Elapsed half complete Callback.\n    (+) TriggerCallback                   : TIM Trigger Callback.\n    (+) TriggerHalfCpltCallback           : TIM Trigger half complete Callback.\n    (+) IC_CaptureCallback                : TIM Input Capture Callback.\n    (+) IC_CaptureHalfCpltCallback        : TIM Input Capture half complete Callback.\n    (+) OC_DelayElapsedCallback           : TIM Output Compare Delay Elapsed Callback.\n    (+) PWM_PulseFinishedCallback         : TIM PWM Pulse Finished Callback.\n    (+) PWM_PulseFinishedHalfCpltCallback : TIM PWM Pulse Finished half complete Callback.\n    (+) ErrorCallback                     : TIM Error Callback.\n    (+) CommutationCallback               : TIM Commutation Callback.\n    (+) CommutationHalfCpltCallback       : TIM Commutation half complete Callback.\n    (+) BreakCallback                     : TIM Break Callback.\n    (+) Break2Callback                    : TIM Break2 Callback.\n\n  [..]\nBy default, after the Init and when the state is HAL_TIM_STATE_RESET\nall interrupt callbacks are set to the corresponding weak functions:\n  examples HAL_TIM_TriggerCallback(), HAL_TIM_ErrorCallback().\n\n  [..]\n  Exception done for MspInit and MspDeInit functions that are reset to the legacy weak\n  functionalities in the Init / DeInit only when these callbacks are null\n  (not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit\n    keep and use the user MspInit / MspDeInit callbacks(registered beforehand)\n\n  [..]\n    Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.\n    Exception done MspInit / MspDeInit that can be registered / unregistered\n    in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,\n    thus registered(user) MspInit / DeInit callbacks can be used during the Init / DeInit.\n  In that case first register the MspInit/MspDeInit user callbacks\n      using HAL_TIM_RegisterCallback() before calling DeInit or Init function.\n\n  [..]\n      When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or\n      not defined, the callback registration feature is not available and all callbacks\n      are set to the corresponding weak functions.\n\n  @endverbatim\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup TIM TIM\n  * @brief TIM HAL module driver\n  * @{\n  */\n\n#ifdef HAL_TIM_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/* Private macros ------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/** @addtogroup TIM_Private_Functions\n  * @{\n  */\nstatic void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\nstatic void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\nstatic void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\nstatic void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\nstatic void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\nstatic void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);\nstatic void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\n                              uint32_t TIM_ICFilter);\nstatic void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);\nstatic void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\n                              uint32_t TIM_ICFilter);\nstatic void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\n                              uint32_t TIM_ICFilter);\nstatic void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource);\nstatic void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma);\nstatic void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma);\nstatic void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma);\nstatic void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);\nstatic void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);\nstatic HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,\n                                                  TIM_SlaveConfigTypeDef *sSlaveConfig);\n/**\n  * @}\n  */\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup TIM_Exported_Functions TIM Exported Functions\n  * @{\n  */\n\n/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions\n  *  @brief    Time Base functions\n  *\n@verbatim\n  ==============================================================================\n              ##### Time Base functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Initialize and configure the TIM base.\n    (+) De-initialize the TIM base.\n    (+) Start the Time Base.\n    (+) Stop the Time Base.\n    (+) Start the Time Base and enable interrupt.\n    (+) Stop the Time Base and disable interrupt.\n    (+) Start the Time Base and enable DMA transfer.\n    (+) Stop the Time Base and disable DMA transfer.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the TIM Time base Unit according to the specified\n  *         parameters in the TIM_HandleTypeDef and initialize the associated handle.\n  * @note   Switching from Center Aligned counter mode to Edge counter mode (or reverse)\n  *         requires a timer reset to avoid unexpected direction\n  *         due to DIR bit readonly in center aligned mode.\n  *         Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init()\n  * @param  htim TIM Base handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)\n{\n  /* Check the TIM handle allocation */\n  if (htim == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\n  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\n  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\n\n  if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    htim->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n    /* Reset interrupt callbacks to legacy weak callbacks */\n    TIM_ResetCallback(htim);\n\n    if (htim->Base_MspInitCallback == NULL)\n    {\n      htim->Base_MspInitCallback = HAL_TIM_Base_MspInit;\n    }\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    htim->Base_MspInitCallback(htim);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    HAL_TIM_Base_MspInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Set the Time Base configuration */\n  TIM_Base_SetConfig(htim->Instance, &htim->Init);\n\n  /* Initialize the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n\n  /* Initialize the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Initialize the TIM state*/\n  htim->State = HAL_TIM_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the TIM Base peripheral\n  * @param  htim TIM Base handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Disable the TIM Peripheral Clock */\n  __HAL_TIM_DISABLE(htim);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  if (htim->Base_MspDeInitCallback == NULL)\n  {\n    htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  htim->Base_MspDeInitCallback(htim);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\n  HAL_TIM_Base_MspDeInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  /* Change the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;\n\n  /* Change the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n\n  /* Change TIM state */\n  htim->State = HAL_TIM_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the TIM Base MSP.\n  * @param  htim TIM Base handle\n  * @retval None\n  */\n__weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_Base_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes TIM Base MSP.\n  * @param  htim TIM Base handle\n  * @retval None\n  */\n__weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_Base_MspDeInit could be implemented in the user file\n   */\n}\n\n\n/**\n  * @brief  Starts the TIM Base generation.\n  * @param  htim TIM Base handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)\n{\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  /* Check the TIM state */\n  if (htim->State != HAL_TIM_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Base generation.\n  * @param  htim TIM Base handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_READY;\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Base generation in interrupt mode.\n  * @param  htim TIM Base handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)\n{\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  /* Check the TIM state */\n  if (htim->State != HAL_TIM_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Enable the TIM Update interrupt */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Base generation in interrupt mode.\n  * @param  htim TIM Base handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  /* Disable the TIM Update interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_READY;\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Base generation in DMA mode.\n  * @param  htim TIM Base handle\n  * @param  pData The source Buffer address.\n  * @param  Length The length of data to be transferred from memory to peripheral.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)\n{\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));\n\n  /* Set the TIM state */\n  if (htim->State == HAL_TIM_STATE_BUSY)\n  {\n    return HAL_BUSY;\n  }\n  else if (htim->State == HAL_TIM_STATE_READY)\n  {\n    if ((pData == NULL) && (Length > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      htim->State = HAL_TIM_STATE_BUSY;\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the DMA Period elapsed callbacks */\n  htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;\n  htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt;\n\n  /* Set the DMA error callback */\n  htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;\n\n  /* Enable the DMA stream */\n  if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR,\n                       Length) != HAL_OK)\n  {\n    /* Return error status */\n    return HAL_ERROR;\n  }\n\n  /* Enable the TIM Update DMA request */\n  __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Base generation in DMA mode.\n  * @param  htim TIM Base handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));\n\n  /* Disable the TIM Update DMA request */\n  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE);\n\n  (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_READY;\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions\n  *  @brief    TIM Output Compare functions\n  *\n@verbatim\n  ==============================================================================\n                  ##### TIM Output Compare functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Initialize and configure the TIM Output Compare.\n    (+) De-initialize the TIM Output Compare.\n    (+) Start the TIM Output Compare.\n    (+) Stop the TIM Output Compare.\n    (+) Start the TIM Output Compare and enable interrupt.\n    (+) Stop the TIM Output Compare and disable interrupt.\n    (+) Start the TIM Output Compare and enable DMA transfer.\n    (+) Stop the TIM Output Compare and disable DMA transfer.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the TIM Output Compare according to the specified\n  *         parameters in the TIM_HandleTypeDef and initializes the associated handle.\n  * @note   Switching from Center Aligned counter mode to Edge counter mode (or reverse)\n  *         requires a timer reset to avoid unexpected direction\n  *         due to DIR bit readonly in center aligned mode.\n  *         Ex: call @ref HAL_TIM_OC_DeInit() before HAL_TIM_OC_Init()\n  * @param  htim TIM Output Compare handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim)\n{\n  /* Check the TIM handle allocation */\n  if (htim == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\n  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\n  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\n\n  if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    htim->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n    /* Reset interrupt callbacks to legacy weak callbacks */\n    TIM_ResetCallback(htim);\n\n    if (htim->OC_MspInitCallback == NULL)\n    {\n      htim->OC_MspInitCallback = HAL_TIM_OC_MspInit;\n    }\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    htim->OC_MspInitCallback(htim);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\n    HAL_TIM_OC_MspInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Init the base time for the Output Compare */\n  TIM_Base_SetConfig(htim->Instance,  &htim->Init);\n\n  /* Initialize the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n\n  /* Initialize the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Initialize the TIM state*/\n  htim->State = HAL_TIM_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the TIM peripheral\n  * @param  htim TIM Output Compare handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Disable the TIM Peripheral Clock */\n  __HAL_TIM_DISABLE(htim);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  if (htim->OC_MspDeInitCallback == NULL)\n  {\n    htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  htim->OC_MspDeInitCallback(htim);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */\n  HAL_TIM_OC_MspDeInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  /* Change the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;\n\n  /* Change the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n\n  /* Change TIM state */\n  htim->State = HAL_TIM_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the TIM Output Compare MSP.\n  * @param  htim TIM Output Compare handle\n  * @retval None\n  */\n__weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_OC_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes TIM Output Compare MSP.\n  * @param  htim TIM Output Compare handle\n  * @retval None\n  */\n__weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_OC_MspDeInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Starts the TIM Output Compare signal generation.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM channel state */\n  if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the Output compare channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Enable the main output */\n    __HAL_TIM_MOE_ENABLE(htim);\n  }\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Output Compare signal generation.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Disable the Output compare channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n  }\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Output Compare signal generation in interrupt mode.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM channel state */\n  if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Enable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Enable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Enable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Enable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the Output compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Enable the main output */\n      __HAL_TIM_MOE_ENABLE(htim);\n    }\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM Output Compare signal generation in interrupt mode.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Disable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Output compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Disable the Main Output */\n      __HAL_TIM_MOE_DISABLE(htim);\n    }\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM channel state */\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Starts the TIM Output Compare signal generation in DMA mode.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @param  pData The source Buffer address.\n  * @param  Length The length of data to be transferred from memory to TIM peripheral\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Set the TIM channel state */\n  if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY)\n  {\n    return HAL_BUSY;\n  }\n  else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)\n  {\n    if ((pData == NULL) && (Length > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n\n      /* Enable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n\n      /* Enable the TIM Capture/Compare 2 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 3 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 4 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the Output compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Enable the main output */\n      __HAL_TIM_MOE_ENABLE(htim);\n    }\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM Output Compare signal generation in DMA mode.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Disable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Output compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Disable the Main Output */\n      __HAL_TIM_MOE_DISABLE(htim);\n    }\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM channel state */\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions\n  *  @brief    TIM PWM functions\n  *\n@verbatim\n  ==============================================================================\n                          ##### TIM PWM functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Initialize and configure the TIM PWM.\n    (+) De-initialize the TIM PWM.\n    (+) Start the TIM PWM.\n    (+) Stop the TIM PWM.\n    (+) Start the TIM PWM and enable interrupt.\n    (+) Stop the TIM PWM and disable interrupt.\n    (+) Start the TIM PWM and enable DMA transfer.\n    (+) Stop the TIM PWM and disable DMA transfer.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the TIM PWM Time Base according to the specified\n  *         parameters in the TIM_HandleTypeDef and initializes the associated handle.\n  * @note   Switching from Center Aligned counter mode to Edge counter mode (or reverse)\n  *         requires a timer reset to avoid unexpected direction\n  *         due to DIR bit readonly in center aligned mode.\n  *         Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init()\n  * @param  htim TIM PWM handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)\n{\n  /* Check the TIM handle allocation */\n  if (htim == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\n  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\n  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\n\n  if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    htim->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n    /* Reset interrupt callbacks to legacy weak callbacks */\n    TIM_ResetCallback(htim);\n\n    if (htim->PWM_MspInitCallback == NULL)\n    {\n      htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit;\n    }\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    htim->PWM_MspInitCallback(htim);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\n    HAL_TIM_PWM_MspInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Init the base time for the PWM */\n  TIM_Base_SetConfig(htim->Instance, &htim->Init);\n\n  /* Initialize the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n\n  /* Initialize the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Initialize the TIM state*/\n  htim->State = HAL_TIM_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the TIM peripheral\n  * @param  htim TIM PWM handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Disable the TIM Peripheral Clock */\n  __HAL_TIM_DISABLE(htim);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  if (htim->PWM_MspDeInitCallback == NULL)\n  {\n    htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  htim->PWM_MspDeInitCallback(htim);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */\n  HAL_TIM_PWM_MspDeInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  /* Change the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;\n\n  /* Change the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n\n  /* Change TIM state */\n  htim->State = HAL_TIM_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the TIM PWM MSP.\n  * @param  htim TIM PWM handle\n  * @retval None\n  */\n__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_PWM_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes TIM PWM MSP.\n  * @param  htim TIM PWM handle\n  * @retval None\n  */\n__weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_PWM_MspDeInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Starts the PWM signal generation.\n  * @param  htim TIM handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM channel state */\n  if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the Capture compare channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Enable the main output */\n    __HAL_TIM_MOE_ENABLE(htim);\n  }\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the PWM signal generation.\n  * @param  htim TIM PWM handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Disable the Capture compare channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n  }\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the PWM signal generation in interrupt mode.\n  * @param  htim TIM PWM handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM channel state */\n  if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Enable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Enable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Enable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Enable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the Capture compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Enable the main output */\n      __HAL_TIM_MOE_ENABLE(htim);\n    }\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the PWM signal generation in interrupt mode.\n  * @param  htim TIM PWM handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Disable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Capture compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Disable the Main Output */\n      __HAL_TIM_MOE_DISABLE(htim);\n    }\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM channel state */\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Starts the TIM PWM signal generation in DMA mode.\n  * @param  htim TIM PWM handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @param  pData The source Buffer address.\n  * @param  Length The length of data to be transferred from memory to TIM peripheral\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Set the TIM channel state */\n  if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY)\n  {\n    return HAL_BUSY;\n  }\n  else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)\n  {\n    if ((pData == NULL) && (Length > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n\n      /* Enable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 2 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Output Capture/Compare 3 request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 4 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the Capture compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Enable the main output */\n      __HAL_TIM_MOE_ENABLE(htim);\n    }\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM PWM signal generation in DMA mode.\n  * @param  htim TIM PWM handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Disable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Capture compare channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n    {\n      /* Disable the Main Output */\n      __HAL_TIM_MOE_DISABLE(htim);\n    }\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM channel state */\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions\n  *  @brief    TIM Input Capture functions\n  *\n@verbatim\n  ==============================================================================\n              ##### TIM Input Capture functions #####\n  ==============================================================================\n [..]\n   This section provides functions allowing to:\n   (+) Initialize and configure the TIM Input Capture.\n   (+) De-initialize the TIM Input Capture.\n   (+) Start the TIM Input Capture.\n   (+) Stop the TIM Input Capture.\n   (+) Start the TIM Input Capture and enable interrupt.\n   (+) Stop the TIM Input Capture and disable interrupt.\n   (+) Start the TIM Input Capture and enable DMA transfer.\n   (+) Stop the TIM Input Capture and disable DMA transfer.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the TIM Input Capture Time base according to the specified\n  *         parameters in the TIM_HandleTypeDef and initializes the associated handle.\n  * @note   Switching from Center Aligned counter mode to Edge counter mode (or reverse)\n  *         requires a timer reset to avoid unexpected direction\n  *         due to DIR bit readonly in center aligned mode.\n  *         Ex: call @ref HAL_TIM_IC_DeInit() before HAL_TIM_IC_Init()\n  * @param  htim TIM Input Capture handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim)\n{\n  /* Check the TIM handle allocation */\n  if (htim == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\n  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\n  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\n\n  if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    htim->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n    /* Reset interrupt callbacks to legacy weak callbacks */\n    TIM_ResetCallback(htim);\n\n    if (htim->IC_MspInitCallback == NULL)\n    {\n      htim->IC_MspInitCallback = HAL_TIM_IC_MspInit;\n    }\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    htim->IC_MspInitCallback(htim);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\n    HAL_TIM_IC_MspInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Init the base time for the input capture */\n  TIM_Base_SetConfig(htim->Instance, &htim->Init);\n\n  /* Initialize the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n\n  /* Initialize the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Initialize the TIM state*/\n  htim->State = HAL_TIM_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the TIM peripheral\n  * @param  htim TIM Input Capture handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Disable the TIM Peripheral Clock */\n  __HAL_TIM_DISABLE(htim);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  if (htim->IC_MspDeInitCallback == NULL)\n  {\n    htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  htim->IC_MspDeInitCallback(htim);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */\n  HAL_TIM_IC_MspDeInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  /* Change the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;\n\n  /* Change the TIM channels state */\n  TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);\n\n  /* Change TIM state */\n  htim->State = HAL_TIM_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the TIM Input Capture MSP.\n  * @param  htim TIM Input Capture handle\n  * @retval None\n  */\n__weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_IC_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes TIM Input Capture MSP.\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_IC_MspDeInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Starts the TIM Input Capture measurement.\n  * @param  htim TIM Input Capture handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  uint32_t tmpsmcr;\n  HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM channel state */\n  if ((channel_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the Input Capture channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Input Capture measurement.\n  * @param  htim TIM Input Capture handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Disable the Input Capture channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Input Capture measurement in interrupt mode.\n  * @param  htim TIM Input Capture handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM channel state */\n  if ((channel_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Enable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Enable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Enable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Enable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the Input Capture channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM Input Capture measurement in interrupt mode.\n  * @param  htim TIM Input Capture handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Disable the TIM Capture/Compare 4 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Input Capture channel */\n    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM channel state */\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Starts the TIM Input Capture measurement in DMA mode.\n  * @param  htim TIM Input Capture handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @param  pData The destination Buffer address.\n  * @param  Length The length of data to be transferred from TIM peripheral to memory.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n  assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));\n\n  /* Set the TIM channel state */\n  if ((channel_state == HAL_TIM_CHANNEL_STATE_BUSY)\n      || (complementary_channel_state == HAL_TIM_CHANNEL_STATE_BUSY))\n  {\n    return HAL_BUSY;\n  }\n  else if ((channel_state == HAL_TIM_CHANNEL_STATE_READY)\n           && (complementary_channel_state == HAL_TIM_CHANNEL_STATE_READY))\n  {\n    if ((pData == NULL) && (Length > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  /* Enable the Input Capture channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 2  DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 3  DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 4  DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM Input Capture measurement in DMA mode.\n  * @param  htim TIM Input Capture handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n  assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));\n\n  /* Disable the Input Capture channel */\n  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3  DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Disable the TIM Capture/Compare 4  DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM channel state */\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions\n  *  @brief    TIM One Pulse functions\n  *\n@verbatim\n  ==============================================================================\n                        ##### TIM One Pulse functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Initialize and configure the TIM One Pulse.\n    (+) De-initialize the TIM One Pulse.\n    (+) Start the TIM One Pulse.\n    (+) Stop the TIM One Pulse.\n    (+) Start the TIM One Pulse and enable interrupt.\n    (+) Stop the TIM One Pulse and disable interrupt.\n    (+) Start the TIM One Pulse and enable DMA transfer.\n    (+) Stop the TIM One Pulse and disable DMA transfer.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the TIM One Pulse Time Base according to the specified\n  *         parameters in the TIM_HandleTypeDef and initializes the associated handle.\n  * @note   Switching from Center Aligned counter mode to Edge counter mode (or reverse)\n  *         requires a timer reset to avoid unexpected direction\n  *         due to DIR bit readonly in center aligned mode.\n  *         Ex: call @ref HAL_TIM_OnePulse_DeInit() before HAL_TIM_OnePulse_Init()\n  * @note   When the timer instance is initialized in One Pulse mode, timer\n  *         channels 1 and channel 2 are reserved and cannot be used for other\n  *         purpose.\n  * @param  htim TIM One Pulse handle\n  * @param  OnePulseMode Select the One pulse mode.\n  *         This parameter can be one of the following values:\n  *            @arg TIM_OPMODE_SINGLE: Only one pulse will be generated.\n  *            @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode)\n{\n  /* Check the TIM handle allocation */\n  if (htim == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\n  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\n  assert_param(IS_TIM_OPM_MODE(OnePulseMode));\n  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\n\n  if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    htim->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n    /* Reset interrupt callbacks to legacy weak callbacks */\n    TIM_ResetCallback(htim);\n\n    if (htim->OnePulse_MspInitCallback == NULL)\n    {\n      htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit;\n    }\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    htim->OnePulse_MspInitCallback(htim);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\n    HAL_TIM_OnePulse_MspInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Configure the Time base in the One Pulse Mode */\n  TIM_Base_SetConfig(htim->Instance, &htim->Init);\n\n  /* Reset the OPM Bit */\n  htim->Instance->CR1 &= ~TIM_CR1_OPM;\n\n  /* Configure the OPM Mode */\n  htim->Instance->CR1 |= OnePulseMode;\n\n  /* Initialize the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n\n  /* Initialize the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Initialize the TIM state*/\n  htim->State = HAL_TIM_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the TIM One Pulse\n  * @param  htim TIM One Pulse handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Disable the TIM Peripheral Clock */\n  __HAL_TIM_DISABLE(htim);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  if (htim->OnePulse_MspDeInitCallback == NULL)\n  {\n    htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  htim->OnePulse_MspDeInitCallback(htim);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\n  HAL_TIM_OnePulse_MspDeInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  /* Change the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET);\n\n  /* Change TIM state */\n  htim->State = HAL_TIM_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the TIM One Pulse MSP.\n  * @param  htim TIM One Pulse handle\n  * @retval None\n  */\n__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_OnePulse_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes TIM One Pulse MSP.\n  * @param  htim TIM One Pulse handle\n  * @retval None\n  */\n__weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Starts the TIM One Pulse signal generation.\n  * @note Though OutputChannel parameter is deprecated and ignored by the function\n  *        it has been kept to avoid HAL_TIM API compatibility break.\n  * @note The pulse output channel is determined when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel See note above\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(OutputChannel);\n\n  /* Check the TIM channels state */\n  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the Capture compare and the Input Capture channels\n    (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\n    if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\n    if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\n    whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together\n\n    No need to enable the counter, it's enabled automatically by hardware\n    (the counter starts in response to a stimulus and generate a pulse */\n\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Enable the main output */\n    __HAL_TIM_MOE_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM One Pulse signal generation.\n  * @note Though OutputChannel parameter is deprecated and ignored by the function\n  *        it has been kept to avoid HAL_TIM API compatibility break.\n  * @note The pulse output channel is determined when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel See note above\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(OutputChannel);\n\n  /* Disable the Capture compare and the Input Capture channels\n  (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\n  if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\n  if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\n  whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */\n\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n  }\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM One Pulse signal generation in interrupt mode.\n  * @note Though OutputChannel parameter is deprecated and ignored by the function\n  *        it has been kept to avoid HAL_TIM API compatibility break.\n  * @note The pulse output channel is determined when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel See note above\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(OutputChannel);\n\n  /* Check the TIM channels state */\n  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the Capture compare and the Input Capture channels\n    (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\n    if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\n    if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\n    whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together\n\n    No need to enable the counter, it's enabled automatically by hardware\n    (the counter starts in response to a stimulus and generate a pulse */\n\n  /* Enable the TIM Capture/Compare 1 interrupt */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n\n  /* Enable the TIM Capture/Compare 2 interrupt */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Enable the main output */\n    __HAL_TIM_MOE_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM One Pulse signal generation in interrupt mode.\n  * @note Though OutputChannel parameter is deprecated and ignored by the function\n  *        it has been kept to avoid HAL_TIM API compatibility break.\n  * @note The pulse output channel is determined when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel See note above\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(OutputChannel);\n\n  /* Disable the TIM Capture/Compare 1 interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n\n  /* Disable the TIM Capture/Compare 2 interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n\n  /* Disable the Capture compare and the Input Capture channels\n  (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\n  if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\n  if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\n  whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n\n  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\n  {\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n  }\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions\n  *  @brief    TIM Encoder functions\n  *\n@verbatim\n  ==============================================================================\n                          ##### TIM Encoder functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Initialize and configure the TIM Encoder.\n    (+) De-initialize the TIM Encoder.\n    (+) Start the TIM Encoder.\n    (+) Stop the TIM Encoder.\n    (+) Start the TIM Encoder and enable interrupt.\n    (+) Stop the TIM Encoder and disable interrupt.\n    (+) Start the TIM Encoder and enable DMA transfer.\n    (+) Stop the TIM Encoder and disable DMA transfer.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the TIM Encoder Interface and initialize the associated handle.\n  * @note   Switching from Center Aligned counter mode to Edge counter mode (or reverse)\n  *         requires a timer reset to avoid unexpected direction\n  *         due to DIR bit readonly in center aligned mode.\n  *         Ex: call @ref HAL_TIM_Encoder_DeInit() before HAL_TIM_Encoder_Init()\n  * @note   Encoder mode and External clock mode 2 are not compatible and must not be selected together\n  *         Ex: A call for @ref HAL_TIM_Encoder_Init will erase the settings of @ref HAL_TIM_ConfigClockSource\n  *         using TIM_CLOCKSOURCE_ETRMODE2 and vice versa\n  * @note   When the timer instance is initialized in Encoder mode, timer\n  *         channels 1 and channel 2 are reserved and cannot be used for other\n  *         purpose.\n  * @param  htim TIM Encoder Interface handle\n  * @param  sConfig TIM Encoder Interface configuration structure\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef *sConfig)\n{\n  uint32_t tmpsmcr;\n  uint32_t tmpccmr1;\n  uint32_t tmpccer;\n\n  /* Check the TIM handle allocation */\n  if (htim == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\n  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\n  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\n  assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));\n  assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));\n  assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));\n  assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity));\n  assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity));\n  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));\n  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));\n  assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));\n  assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter));\n\n  if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    htim->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n    /* Reset interrupt callbacks to legacy weak callbacks */\n    TIM_ResetCallback(htim);\n\n    if (htim->Encoder_MspInitCallback == NULL)\n    {\n      htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit;\n    }\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    htim->Encoder_MspInitCallback(htim);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\n    HAL_TIM_Encoder_MspInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Reset the SMS and ECE bits */\n  htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE);\n\n  /* Configure the Time base in the Encoder Mode */\n  TIM_Base_SetConfig(htim->Instance, &htim->Init);\n\n  /* Get the TIMx SMCR register value */\n  tmpsmcr = htim->Instance->SMCR;\n\n  /* Get the TIMx CCMR1 register value */\n  tmpccmr1 = htim->Instance->CCMR1;\n\n  /* Get the TIMx CCER register value */\n  tmpccer = htim->Instance->CCER;\n\n  /* Set the encoder Mode */\n  tmpsmcr |= sConfig->EncoderMode;\n\n  /* Select the Capture Compare 1 and the Capture Compare 2 as input */\n  tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S);\n  tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U));\n\n  /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */\n  tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC);\n  tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F);\n  tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U);\n  tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U);\n\n  /* Set the TI1 and the TI2 Polarities */\n  tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);\n  tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP);\n  tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U);\n\n  /* Write to TIMx SMCR */\n  htim->Instance->SMCR = tmpsmcr;\n\n  /* Write to TIMx CCMR1 */\n  htim->Instance->CCMR1 = tmpccmr1;\n\n  /* Write to TIMx CCER */\n  htim->Instance->CCER = tmpccer;\n\n  /* Initialize the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Initialize the TIM state*/\n  htim->State = HAL_TIM_STATE_READY;\n\n  return HAL_OK;\n}\n\n\n/**\n  * @brief  DeInitializes the TIM Encoder interface\n  * @param  htim TIM Encoder Interface handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Disable the TIM Peripheral Clock */\n  __HAL_TIM_DISABLE(htim);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  if (htim->Encoder_MspDeInitCallback == NULL)\n  {\n    htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  htim->Encoder_MspDeInitCallback(htim);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\n  HAL_TIM_Encoder_MspDeInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  /* Change the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET);\n\n  /* Change TIM state */\n  htim->State = HAL_TIM_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the TIM Encoder Interface MSP.\n  * @param  htim TIM Encoder Interface handle\n  * @retval None\n  */\n__weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_Encoder_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes TIM Encoder Interface MSP.\n  * @param  htim TIM Encoder Interface handle\n  * @retval None\n  */\n__weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_Encoder_MspDeInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Starts the TIM Encoder Interface.\n  * @param  htim TIM Encoder Interface handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Set the TIM channel(s) state */\n  if (Channel == TIM_CHANNEL_1)\n  {\n    if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else if (Channel == TIM_CHANNEL_2)\n  {\n    if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n\n  /* Enable the encoder interface channels */\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n      break;\n    }\n\n    default :\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n      break;\n    }\n  }\n  /* Enable the Peripheral */\n  __HAL_TIM_ENABLE(htim);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Encoder Interface.\n  * @param  htim TIM Encoder Interface handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Disable the Input Capture channels 1 and 2\n    (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n      break;\n    }\n\n    default :\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n      break;\n    }\n  }\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channel(s) state */\n  if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2))\n  {\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else\n  {\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Encoder Interface in interrupt mode.\n  * @param  htim TIM Encoder Interface handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Set the TIM channel(s) state */\n  if (Channel == TIM_CHANNEL_1)\n  {\n    if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else if (Channel == TIM_CHANNEL_2)\n  {\n    if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n        || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n\n  /* Enable the encoder interface channels */\n  /* Enable the capture compare Interrupts 1 and/or 2 */\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    default :\n    {\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n  }\n\n  /* Enable the Peripheral */\n  __HAL_TIM_ENABLE(htim);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Encoder Interface in interrupt mode.\n  * @param  htim TIM Encoder Interface handle\n  * @param  Channel TIM Channels to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Disable the Input Capture channels 1 and 2\n    (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */\n  if (Channel == TIM_CHANNEL_1)\n  {\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n\n    /* Disable the capture compare Interrupts 1 */\n    __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n  }\n  else if (Channel == TIM_CHANNEL_2)\n  {\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n\n    /* Disable the capture compare Interrupts 2 */\n    __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n  }\n  else\n  {\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n\n    /* Disable the capture compare Interrupts 1 and 2 */\n    __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n    __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n  }\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channel(s) state */\n  if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2))\n  {\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else\n  {\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Encoder Interface in DMA mode.\n  * @param  htim TIM Encoder Interface handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\n  * @param  pData1 The destination Buffer address for IC1.\n  * @param  pData2 The destination Buffer address for IC2.\n  * @param  Length The length of data to be transferred from TIM peripheral to memory.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,\n                                            uint32_t *pData2, uint16_t Length)\n{\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Set the TIM channel(s) state */\n  if (Channel == TIM_CHANNEL_1)\n  {\n    if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)\n        || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY))\n    {\n      return HAL_BUSY;\n    }\n    else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY)\n             && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY))\n    {\n      if ((pData1 == NULL) && (Length > 0U))\n      {\n        return HAL_ERROR;\n      }\n      else\n      {\n        TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n        TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      }\n    }\n    else\n    {\n      return HAL_ERROR;\n    }\n  }\n  else if (Channel == TIM_CHANNEL_2)\n  {\n    if ((channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)\n        || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY))\n    {\n      return HAL_BUSY;\n    }\n    else if ((channel_2_state == HAL_TIM_CHANNEL_STATE_READY)\n             && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY))\n    {\n      if ((pData2 == NULL) && (Length > 0U))\n      {\n        return HAL_ERROR;\n      }\n      else\n      {\n        TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n        TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n      }\n    }\n    else\n    {\n      return HAL_ERROR;\n    }\n  }\n  else\n  {\n    if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)\n        || (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)\n        || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)\n        || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY))\n    {\n      return HAL_BUSY;\n    }\n    else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY)\n             && (channel_2_state == HAL_TIM_CHANNEL_STATE_READY)\n             && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)\n             && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY))\n    {\n      if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))\n      {\n        return HAL_ERROR;\n      }\n      else\n      {\n        TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n        TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n        TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n        TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n      }\n    }\n    else\n    {\n      return HAL_ERROR;\n    }\n  }\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Input Capture DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n\n      /* Enable the Capture compare channel */\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n\n      /* Enable the Peripheral */\n      __HAL_TIM_ENABLE(htim);\n\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError;\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Input Capture  DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\n\n      /* Enable the Capture compare channel */\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n\n      /* Enable the Peripheral */\n      __HAL_TIM_ENABLE(htim);\n\n      break;\n    }\n\n    default:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n\n      /* Enable the TIM Input Capture  DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n      /* Enable the TIM Input Capture  DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\n\n      /* Enable the Capture compare channel */\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\n\n      /* Enable the Peripheral */\n      __HAL_TIM_ENABLE(htim);\n\n      break;\n    }\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Encoder Interface in DMA mode.\n  * @param  htim TIM Encoder Interface handle\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Disable the Input Capture channels 1 and 2\n    (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */\n  if (Channel == TIM_CHANNEL_1)\n  {\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n\n    /* Disable the capture compare DMA Request 1 */\n    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n    (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n  }\n  else if (Channel == TIM_CHANNEL_2)\n  {\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n\n    /* Disable the capture compare DMA Request 2 */\n    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\n    (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n  }\n  else\n  {\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\n\n    /* Disable the capture compare DMA Request 1 and 2 */\n    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\n    (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n    (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n  }\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channel(s) state */\n  if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2))\n  {\n    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else\n  {\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management\n  *  @brief    TIM IRQ handler management\n  *\n@verbatim\n  ==============================================================================\n                        ##### IRQ handler management #####\n  ==============================================================================\n  [..]\n    This section provides Timer IRQ handler function.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  This function handles TIM interrupts requests.\n  * @param  htim TIM  handle\n  * @retval None\n  */\nvoid HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)\n{\n  /* Capture compare 1 event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET)\n    {\n      {\n        __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);\n        htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n\n        /* Input capture event */\n        if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U)\n        {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n          htim->IC_CaptureCallback(htim);\n#else\n          HAL_TIM_IC_CaptureCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n        }\n        /* Output compare event */\n        else\n        {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n          htim->OC_DelayElapsedCallback(htim);\n          htim->PWM_PulseFinishedCallback(htim);\n#else\n          HAL_TIM_OC_DelayElapsedCallback(htim);\n          HAL_TIM_PWM_PulseFinishedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n        }\n        htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n      }\n    }\n  }\n  /* Capture compare 2 event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET)\n    {\n      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);\n      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n      /* Input capture event */\n      if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)\n      {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n        htim->IC_CaptureCallback(htim);\n#else\n        HAL_TIM_IC_CaptureCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n      }\n      /* Output compare event */\n      else\n      {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n        htim->OC_DelayElapsedCallback(htim);\n        htim->PWM_PulseFinishedCallback(htim);\n#else\n        HAL_TIM_OC_DelayElapsedCallback(htim);\n        HAL_TIM_PWM_PulseFinishedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n      }\n      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n    }\n  }\n  /* Capture compare 3 event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET)\n    {\n      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);\n      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n      /* Input capture event */\n      if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)\n      {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n        htim->IC_CaptureCallback(htim);\n#else\n        HAL_TIM_IC_CaptureCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n      }\n      /* Output compare event */\n      else\n      {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n        htim->OC_DelayElapsedCallback(htim);\n        htim->PWM_PulseFinishedCallback(htim);\n#else\n        HAL_TIM_OC_DelayElapsedCallback(htim);\n        HAL_TIM_PWM_PulseFinishedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n      }\n      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n    }\n  }\n  /* Capture compare 4 event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET)\n    {\n      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);\n      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\n      /* Input capture event */\n      if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)\n      {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n        htim->IC_CaptureCallback(htim);\n#else\n        HAL_TIM_IC_CaptureCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n      }\n      /* Output compare event */\n      else\n      {\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n        htim->OC_DelayElapsedCallback(htim);\n        htim->PWM_PulseFinishedCallback(htim);\n#else\n        HAL_TIM_OC_DelayElapsedCallback(htim);\n        HAL_TIM_PWM_PulseFinishedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n      }\n      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n    }\n  }\n  /* TIM Update event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)\n    {\n      __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n      htim->PeriodElapsedCallback(htim);\n#else\n      HAL_TIM_PeriodElapsedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n    }\n  }\n  /* TIM Break input event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)\n    {\n      __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK);\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n      htim->BreakCallback(htim);\n#else\n      HAL_TIMEx_BreakCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n    }\n  }\n  /* TIM Break2 input event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)\n    {\n      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2);\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n      htim->Break2Callback(htim);\n#else\n      HAL_TIMEx_Break2Callback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n    }\n  }\n  /* TIM Trigger detection event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET)\n    {\n      __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n      htim->TriggerCallback(htim);\n#else\n      HAL_TIM_TriggerCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n    }\n  }\n  /* TIM commutation event */\n  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET)\n  {\n    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET)\n    {\n      __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM);\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n      htim->CommutationCallback(htim);\n#else\n      HAL_TIMEx_CommutCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n    }\n  }\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions\n  *  @brief    TIM Peripheral Control functions\n  *\n@verbatim\n  ==============================================================================\n                   ##### Peripheral Control functions #####\n  ==============================================================================\n [..]\n   This section provides functions allowing to:\n      (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode.\n      (+) Configure External Clock source.\n      (+) Configure Complementary channels, break features and dead time.\n      (+) Configure Master and the Slave synchronization.\n      (+) Configure the DMA Burst Mode.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Initializes the TIM Output Compare Channels according to the specified\n  *         parameters in the TIM_OC_InitTypeDef.\n  * @param  htim TIM Output Compare handle\n  * @param  sConfig TIM Output Compare configuration structure\n  * @param  Channel TIM Channels to configure\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim,\n                                           TIM_OC_InitTypeDef *sConfig,\n                                           uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CHANNELS(Channel));\n  assert_param(IS_TIM_OC_MODE(sConfig->OCMode));\n  assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));\n\n  /* Process Locked */\n  __HAL_LOCK(htim);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n\n      /* Configure the TIM Channel 1 in Output Compare */\n      TIM_OC1_SetConfig(htim->Instance, sConfig);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n\n      /* Configure the TIM Channel 2 in Output Compare */\n      TIM_OC2_SetConfig(htim->Instance, sConfig);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\n\n      /* Configure the TIM Channel 3 in Output Compare */\n      TIM_OC3_SetConfig(htim->Instance, sConfig);\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\n\n      /* Configure the TIM Channel 4 in Output Compare */\n      TIM_OC4_SetConfig(htim->Instance, sConfig);\n      break;\n    }\n\n    case TIM_CHANNEL_5:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC5_INSTANCE(htim->Instance));\n\n      /* Configure the TIM Channel 5 in Output Compare */\n      TIM_OC5_SetConfig(htim->Instance, sConfig);\n      break;\n    }\n\n    case TIM_CHANNEL_6:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC6_INSTANCE(htim->Instance));\n\n      /* Configure the TIM Channel 6 in Output Compare */\n      TIM_OC6_SetConfig(htim->Instance, sConfig);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n\n/**\n  * @brief  Initializes the TIM Input Capture Channels according to the specified\n  *         parameters in the TIM_IC_InitTypeDef.\n  * @param  htim TIM IC handle\n  * @param  sConfig TIM Input Capture configuration structure\n  * @param  Channel TIM Channel to configure\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity));\n  assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection));\n  assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler));\n  assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter));\n\n  /* Process Locked */\n  __HAL_LOCK(htim);\n\n  if (Channel == TIM_CHANNEL_1)\n  {\n    /* TI1 Configuration */\n    TIM_TI1_SetConfig(htim->Instance,\n                      sConfig->ICPolarity,\n                      sConfig->ICSelection,\n                      sConfig->ICFilter);\n\n    /* Reset the IC1PSC Bits */\n    htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;\n\n    /* Set the IC1PSC value */\n    htim->Instance->CCMR1 |= sConfig->ICPrescaler;\n  }\n  else if (Channel == TIM_CHANNEL_2)\n  {\n    /* TI2 Configuration */\n    assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n\n    TIM_TI2_SetConfig(htim->Instance,\n                      sConfig->ICPolarity,\n                      sConfig->ICSelection,\n                      sConfig->ICFilter);\n\n    /* Reset the IC2PSC Bits */\n    htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;\n\n    /* Set the IC2PSC value */\n    htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8U);\n  }\n  else if (Channel == TIM_CHANNEL_3)\n  {\n    /* TI3 Configuration */\n    assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\n\n    TIM_TI3_SetConfig(htim->Instance,\n                      sConfig->ICPolarity,\n                      sConfig->ICSelection,\n                      sConfig->ICFilter);\n\n    /* Reset the IC3PSC Bits */\n    htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC;\n\n    /* Set the IC3PSC value */\n    htim->Instance->CCMR2 |= sConfig->ICPrescaler;\n  }\n  else if (Channel == TIM_CHANNEL_4)\n  {\n    /* TI4 Configuration */\n    assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\n\n    TIM_TI4_SetConfig(htim->Instance,\n                      sConfig->ICPolarity,\n                      sConfig->ICSelection,\n                      sConfig->ICFilter);\n\n    /* Reset the IC4PSC Bits */\n    htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC;\n\n    /* Set the IC4PSC value */\n    htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U);\n  }\n  else\n  {\n    status = HAL_ERROR;\n  }\n\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n\n/**\n  * @brief  Initializes the TIM PWM  channels according to the specified\n  *         parameters in the TIM_OC_InitTypeDef.\n  * @param  htim TIM PWM handle\n  * @param  sConfig TIM PWM configuration structure\n  * @param  Channel TIM Channels to be configured\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim,\n                                            TIM_OC_InitTypeDef *sConfig,\n                                            uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CHANNELS(Channel));\n  assert_param(IS_TIM_PWM_MODE(sConfig->OCMode));\n  assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));\n  assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode));\n\n  /* Process Locked */\n  __HAL_LOCK(htim);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n\n      /* Configure the Channel 1 in PWM mode */\n      TIM_OC1_SetConfig(htim->Instance, sConfig);\n\n      /* Set the Preload enable bit for channel1 */\n      htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE;\n\n      /* Configure the Output Fast mode */\n      htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE;\n      htim->Instance->CCMR1 |= sConfig->OCFastMode;\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n\n      /* Configure the Channel 2 in PWM mode */\n      TIM_OC2_SetConfig(htim->Instance, sConfig);\n\n      /* Set the Preload enable bit for channel2 */\n      htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE;\n\n      /* Configure the Output Fast mode */\n      htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE;\n      htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U;\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\n\n      /* Configure the Channel 3 in PWM mode */\n      TIM_OC3_SetConfig(htim->Instance, sConfig);\n\n      /* Set the Preload enable bit for channel3 */\n      htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE;\n\n      /* Configure the Output Fast mode */\n      htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE;\n      htim->Instance->CCMR2 |= sConfig->OCFastMode;\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\n\n      /* Configure the Channel 4 in PWM mode */\n      TIM_OC4_SetConfig(htim->Instance, sConfig);\n\n      /* Set the Preload enable bit for channel4 */\n      htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE;\n\n      /* Configure the Output Fast mode */\n      htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE;\n      htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U;\n      break;\n    }\n\n    case TIM_CHANNEL_5:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC5_INSTANCE(htim->Instance));\n\n      /* Configure the Channel 5 in PWM mode */\n      TIM_OC5_SetConfig(htim->Instance, sConfig);\n\n      /* Set the Preload enable bit for channel5*/\n      htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE;\n\n      /* Configure the Output Fast mode */\n      htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE;\n      htim->Instance->CCMR3 |= sConfig->OCFastMode;\n      break;\n    }\n\n    case TIM_CHANNEL_6:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC6_INSTANCE(htim->Instance));\n\n      /* Configure the Channel 6 in PWM mode */\n      TIM_OC6_SetConfig(htim->Instance, sConfig);\n\n      /* Set the Preload enable bit for channel6 */\n      htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE;\n\n      /* Configure the Output Fast mode */\n      htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE;\n      htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U;\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n\n/**\n  * @brief  Initializes the TIM One Pulse Channels according to the specified\n  *         parameters in the TIM_OnePulse_InitTypeDef.\n  * @param  htim TIM One Pulse handle\n  * @param  sConfig TIM One Pulse configuration structure\n  * @param  OutputChannel TIM output channel to configure\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  * @param  InputChannel TIM input Channel to configure\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  * @note  To output a waveform with a minimum delay user can enable the fast\n  *        mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx\n  *        output is forced in response to the edge detection on TIx input,\n  *        without taking in account the comparison.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim,  TIM_OnePulse_InitTypeDef *sConfig,\n                                                 uint32_t OutputChannel,  uint32_t InputChannel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  TIM_OC_InitTypeDef temp1;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_OPM_CHANNELS(OutputChannel));\n  assert_param(IS_TIM_OPM_CHANNELS(InputChannel));\n\n  if (OutputChannel != InputChannel)\n  {\n    /* Process Locked */\n    __HAL_LOCK(htim);\n\n    htim->State = HAL_TIM_STATE_BUSY;\n\n    /* Extract the Output compare configuration from sConfig structure */\n    temp1.OCMode = sConfig->OCMode;\n    temp1.Pulse = sConfig->Pulse;\n    temp1.OCPolarity = sConfig->OCPolarity;\n    temp1.OCNPolarity = sConfig->OCNPolarity;\n    temp1.OCIdleState = sConfig->OCIdleState;\n    temp1.OCNIdleState = sConfig->OCNIdleState;\n\n    switch (OutputChannel)\n    {\n      case TIM_CHANNEL_1:\n      {\n        assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n\n        TIM_OC1_SetConfig(htim->Instance, &temp1);\n        break;\n      }\n\n      case TIM_CHANNEL_2:\n      {\n        assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n\n        TIM_OC2_SetConfig(htim->Instance, &temp1);\n        break;\n      }\n\n      default:\n        status = HAL_ERROR;\n        break;\n    }\n\n    if (status == HAL_OK)\n    {\n      switch (InputChannel)\n      {\n        case TIM_CHANNEL_1:\n        {\n          assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n\n          TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity,\n                            sConfig->ICSelection, sConfig->ICFilter);\n\n          /* Reset the IC1PSC Bits */\n          htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;\n\n          /* Select the Trigger source */\n          htim->Instance->SMCR &= ~TIM_SMCR_TS;\n          htim->Instance->SMCR |= TIM_TS_TI1FP1;\n\n          /* Select the Slave Mode */\n          htim->Instance->SMCR &= ~TIM_SMCR_SMS;\n          htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;\n          break;\n        }\n\n        case TIM_CHANNEL_2:\n        {\n          assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n\n          TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity,\n                            sConfig->ICSelection, sConfig->ICFilter);\n\n          /* Reset the IC2PSC Bits */\n          htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;\n\n          /* Select the Trigger source */\n          htim->Instance->SMCR &= ~TIM_SMCR_TS;\n          htim->Instance->SMCR |= TIM_TS_TI2FP2;\n\n          /* Select the Slave Mode */\n          htim->Instance->SMCR &= ~TIM_SMCR_SMS;\n          htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;\n          break;\n        }\n\n        default:\n          status = HAL_ERROR;\n          break;\n      }\n    }\n\n    htim->State = HAL_TIM_STATE_READY;\n\n    __HAL_UNLOCK(htim);\n\n    return status;\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Configure the DMA Burst to transfer Data from the memory to the TIM peripheral\n  * @param  htim TIM handle\n  * @param  BurstBaseAddress TIM Base address from where the DMA  will start the Data write\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMABASE_CR1\n  *            @arg TIM_DMABASE_CR2\n  *            @arg TIM_DMABASE_SMCR\n  *            @arg TIM_DMABASE_DIER\n  *            @arg TIM_DMABASE_SR\n  *            @arg TIM_DMABASE_EGR\n  *            @arg TIM_DMABASE_CCMR1\n  *            @arg TIM_DMABASE_CCMR2\n  *            @arg TIM_DMABASE_CCER\n  *            @arg TIM_DMABASE_CNT\n  *            @arg TIM_DMABASE_PSC\n  *            @arg TIM_DMABASE_ARR\n  *            @arg TIM_DMABASE_RCR\n  *            @arg TIM_DMABASE_CCR1\n  *            @arg TIM_DMABASE_CCR2\n  *            @arg TIM_DMABASE_CCR3\n  *            @arg TIM_DMABASE_CCR4\n  *            @arg TIM_DMABASE_BDTR\n  *            @arg TIM_DMABASE_CCMR3\n  *            @arg TIM_DMABASE_CCR5\n  *            @arg TIM_DMABASE_CCR6\n  *            @arg TIM_DMABASE_AF1\n  *            @arg TIM_DMABASE_AF2\n  *            @arg TIM_DMABASE_TISEL\n  *\n  * @param  BurstRequestSrc TIM DMA Request sources\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMA_UPDATE: TIM update Interrupt source\n  *            @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source\n  *            @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source\n  *            @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source\n  *            @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source\n  *            @arg TIM_DMA_COM: TIM Commutation DMA source\n  *            @arg TIM_DMA_TRIGGER: TIM Trigger DMA source\n  * @param  BurstBuffer The Buffer address.\n  * @param  BurstLength DMA Burst length. This parameter can be one value\n  *         between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.\n  * @note   This function should be used only when BurstLength is equal to DMA data transfer length.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                              uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t  BurstLength)\n{\n  HAL_StatusTypeDef status;\n\n  status = HAL_TIM_DMABurst_MultiWriteStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength,\n                                            ((BurstLength) >> 8U) + 1U);\n\n\n\n  return status;\n}\n\n/**\n  * @brief  Configure the DMA Burst to transfer multiple Data from the memory to the TIM peripheral\n  * @param  htim TIM handle\n  * @param  BurstBaseAddress TIM Base address from where the DMA will start the Data write\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMABASE_CR1\n  *            @arg TIM_DMABASE_CR2\n  *            @arg TIM_DMABASE_SMCR\n  *            @arg TIM_DMABASE_DIER\n  *            @arg TIM_DMABASE_SR\n  *            @arg TIM_DMABASE_EGR\n  *            @arg TIM_DMABASE_CCMR1\n  *            @arg TIM_DMABASE_CCMR2\n  *            @arg TIM_DMABASE_CCER\n  *            @arg TIM_DMABASE_CNT\n  *            @arg TIM_DMABASE_PSC\n  *            @arg TIM_DMABASE_ARR\n  *            @arg TIM_DMABASE_RCR\n  *            @arg TIM_DMABASE_CCR1\n  *            @arg TIM_DMABASE_CCR2\n  *            @arg TIM_DMABASE_CCR3\n  *            @arg TIM_DMABASE_CCR4\n  *            @arg TIM_DMABASE_BDTR\n  *            @arg TIM_DMABASE_CCMR3\n  *            @arg TIM_DMABASE_CCR5\n  *            @arg TIM_DMABASE_CCR6\n  *            @arg TIM_DMABASE_AF1\n  *            @arg TIM_DMABASE_AF2\n  *            @arg TIM_DMABASE_TISEL\n  *\n  * @param  BurstRequestSrc TIM DMA Request sources\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMA_UPDATE: TIM update Interrupt source\n  *            @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source\n  *            @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source\n  *            @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source\n  *            @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source\n  *            @arg TIM_DMA_COM: TIM Commutation DMA source\n  *            @arg TIM_DMA_TRIGGER: TIM Trigger DMA source\n  * @param  BurstBuffer The Buffer address.\n  * @param  BurstLength DMA Burst length. This parameter can be one value\n  *         between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.\n  * @param  DataLength Data length. This parameter can be one value\n  *         between 1 and 0xFFFF.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                                   uint32_t BurstRequestSrc, uint32_t *BurstBuffer,\n                                                   uint32_t  BurstLength,  uint32_t  DataLength)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));\n  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\n  assert_param(IS_TIM_DMA_LENGTH(BurstLength));\n  assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength));\n\n  if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY)\n  {\n    return HAL_BUSY;\n  }\n  else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY)\n  {\n    if ((BurstBuffer == NULL) && (BurstLength > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY;\n    }\n  }\n  else\n  {\n    /* nothing to do */\n  }\n\n  switch (BurstRequestSrc)\n  {\n    case TIM_DMA_UPDATE:\n    {\n      /* Set the DMA Period elapsed callbacks */\n      htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;\n      htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer,\n                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC1:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer,\n                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC2:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer,\n                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC3:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer,\n                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC4:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;\n      htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer,\n                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_COM:\n    {\n      /* Set the DMA commutation callbacks */\n      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback =  TIMEx_DMACommutationCplt;\n      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback =  TIMEx_DMACommutationHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer,\n                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_TRIGGER:\n    {\n      /* Set the DMA trigger callbacks */\n      htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;\n      htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer,\n                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Configure the DMA Burst Mode */\n    htim->Instance->DCR = (BurstBaseAddress | BurstLength);\n    /* Enable the TIM DMA Request */\n    __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM DMA Burst mode\n  * @param  htim TIM handle\n  * @param  BurstRequestSrc TIM DMA Request sources to disable\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\n\n  /* Abort the DMA transfer (at least disable the DMA stream) */\n  switch (BurstRequestSrc)\n  {\n    case TIM_DMA_UPDATE:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]);\n      break;\n    }\n    case TIM_DMA_CC1:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n      break;\n    }\n    case TIM_DMA_CC2:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n      break;\n    }\n    case TIM_DMA_CC3:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\n      break;\n    }\n    case TIM_DMA_CC4:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\n      break;\n    }\n    case TIM_DMA_COM:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]);\n      break;\n    }\n    case TIM_DMA_TRIGGER:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]);\n      break;\n    }\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the TIM Update DMA request */\n    __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);\n\n    /* Change the DMA burst operation state */\n    htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Configure the DMA Burst to transfer Data from the TIM peripheral to the memory\n  * @param  htim TIM handle\n  * @param  BurstBaseAddress TIM Base address from where the DMA  will start the Data read\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMABASE_CR1\n  *            @arg TIM_DMABASE_CR2\n  *            @arg TIM_DMABASE_SMCR\n  *            @arg TIM_DMABASE_DIER\n  *            @arg TIM_DMABASE_SR\n  *            @arg TIM_DMABASE_EGR\n  *            @arg TIM_DMABASE_CCMR1\n  *            @arg TIM_DMABASE_CCMR2\n  *            @arg TIM_DMABASE_CCER\n  *            @arg TIM_DMABASE_CNT\n  *            @arg TIM_DMABASE_PSC\n  *            @arg TIM_DMABASE_ARR\n  *            @arg TIM_DMABASE_RCR\n  *            @arg TIM_DMABASE_CCR1\n  *            @arg TIM_DMABASE_CCR2\n  *            @arg TIM_DMABASE_CCR3\n  *            @arg TIM_DMABASE_CCR4\n  *            @arg TIM_DMABASE_BDTR\n  *            @arg TIM_DMABASE_CCMR3\n  *            @arg TIM_DMABASE_CCR5\n  *            @arg TIM_DMABASE_CCR6\n  *            @arg TIM_DMABASE_AF1\n  *            @arg TIM_DMABASE_AF2\n  *            @arg TIM_DMABASE_TISEL\n  *\n  * @param  BurstRequestSrc TIM DMA Request sources\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMA_UPDATE: TIM update Interrupt source\n  *            @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source\n  *            @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source\n  *            @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source\n  *            @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source\n  *            @arg TIM_DMA_COM: TIM Commutation DMA source\n  *            @arg TIM_DMA_TRIGGER: TIM Trigger DMA source\n  * @param  BurstBuffer The Buffer address.\n  * @param  BurstLength DMA Burst length. This parameter can be one value\n  *         between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.\n  * @note   This function should be used only when BurstLength is equal to DMA data transfer length.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                             uint32_t BurstRequestSrc, uint32_t  *BurstBuffer, uint32_t  BurstLength)\n{\n  HAL_StatusTypeDef status;\n\n  status = HAL_TIM_DMABurst_MultiReadStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength,\n                                           ((BurstLength) >> 8U) + 1U);\n\n\n  return status;\n}\n\n/**\n  * @brief  Configure the DMA Burst to transfer Data from the TIM peripheral to the memory\n  * @param  htim TIM handle\n  * @param  BurstBaseAddress TIM Base address from where the DMA  will start the Data read\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMABASE_CR1\n  *            @arg TIM_DMABASE_CR2\n  *            @arg TIM_DMABASE_SMCR\n  *            @arg TIM_DMABASE_DIER\n  *            @arg TIM_DMABASE_SR\n  *            @arg TIM_DMABASE_EGR\n  *            @arg TIM_DMABASE_CCMR1\n  *            @arg TIM_DMABASE_CCMR2\n  *            @arg TIM_DMABASE_CCER\n  *            @arg TIM_DMABASE_CNT\n  *            @arg TIM_DMABASE_PSC\n  *            @arg TIM_DMABASE_ARR\n  *            @arg TIM_DMABASE_RCR\n  *            @arg TIM_DMABASE_CCR1\n  *            @arg TIM_DMABASE_CCR2\n  *            @arg TIM_DMABASE_CCR3\n  *            @arg TIM_DMABASE_CCR4\n  *            @arg TIM_DMABASE_BDTR\n  *            @arg TIM_DMABASE_CCMR3\n  *            @arg TIM_DMABASE_CCR5\n  *            @arg TIM_DMABASE_CCR6\n  *            @arg TIM_DMABASE_AF1\n  *            @arg TIM_DMABASE_AF2\n  *            @arg TIM_DMABASE_TISEL\n  *\n  * @param  BurstRequestSrc TIM DMA Request sources\n  *         This parameter can be one of the following values:\n  *            @arg TIM_DMA_UPDATE: TIM update Interrupt source\n  *            @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source\n  *            @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source\n  *            @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source\n  *            @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source\n  *            @arg TIM_DMA_COM: TIM Commutation DMA source\n  *            @arg TIM_DMA_TRIGGER: TIM Trigger DMA source\n  * @param  BurstBuffer The Buffer address.\n  * @param  BurstLength DMA Burst length. This parameter can be one value\n  *         between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.\n  * @param  DataLength Data length. This parameter can be one value\n  *         between 1 and 0xFFFF.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,\n                                                  uint32_t BurstRequestSrc, uint32_t  *BurstBuffer,\n                                                  uint32_t  BurstLength, uint32_t  DataLength)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));\n  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\n  assert_param(IS_TIM_DMA_LENGTH(BurstLength));\n  assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength));\n\n  if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY)\n  {\n    return HAL_BUSY;\n  }\n  else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY)\n  {\n    if ((BurstBuffer == NULL) && (BurstLength > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY;\n    }\n  }\n  else\n  {\n    /* nothing to do */\n  }\n  switch (BurstRequestSrc)\n  {\n    case TIM_DMA_UPDATE:\n    {\n      /* Set the DMA Period elapsed callbacks */\n      htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;\n      htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,\n                           DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC1:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,\n                           DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC2:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,\n                           DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC3:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,\n                           DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_CC4:\n    {\n      /* Set the DMA capture callbacks */\n      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt;\n      htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,\n                           DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_COM:\n    {\n      /* Set the DMA commutation callbacks */\n      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback =  TIMEx_DMACommutationCplt;\n      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback =  TIMEx_DMACommutationHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,\n                           DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    case TIM_DMA_TRIGGER:\n    {\n      /* Set the DMA trigger callbacks */\n      htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;\n      htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,\n                           DataLength) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      break;\n    }\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Configure the DMA Burst Mode */\n    htim->Instance->DCR = (BurstBaseAddress | BurstLength);\n\n    /* Enable the TIM DMA Request */\n    __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stop the DMA burst reading\n  * @param  htim TIM handle\n  * @param  BurstRequestSrc TIM DMA Request sources to disable.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\n\n  /* Abort the DMA transfer (at least disable the DMA stream) */\n  switch (BurstRequestSrc)\n  {\n    case TIM_DMA_UPDATE:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]);\n      break;\n    }\n    case TIM_DMA_CC1:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n      break;\n    }\n    case TIM_DMA_CC2:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n      break;\n    }\n    case TIM_DMA_CC3:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\n      break;\n    }\n    case TIM_DMA_CC4:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\n      break;\n    }\n    case TIM_DMA_COM:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]);\n      break;\n    }\n    case TIM_DMA_TRIGGER:\n    {\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]);\n      break;\n    }\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the TIM Update DMA request */\n    __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);\n\n    /* Change the DMA burst operation state */\n    htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Generate a software event\n  * @param  htim TIM handle\n  * @param  EventSource specifies the event source.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_EVENTSOURCE_UPDATE: Timer update Event source\n  *            @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source\n  *            @arg TIM_EVENTSOURCE_CC2: Timer Capture Compare 2 Event source\n  *            @arg TIM_EVENTSOURCE_CC3: Timer Capture Compare 3 Event source\n  *            @arg TIM_EVENTSOURCE_CC4: Timer Capture Compare 4 Event source\n  *            @arg TIM_EVENTSOURCE_COM: Timer COM event source\n  *            @arg TIM_EVENTSOURCE_TRIGGER: Timer Trigger Event source\n  *            @arg TIM_EVENTSOURCE_BREAK: Timer Break event source\n  *            @arg TIM_EVENTSOURCE_BREAK2: Timer Break2 event source\n  * @note   Basic timers can only generate an update event.\n  * @note   TIM_EVENTSOURCE_COM is relevant only with advanced timer instances.\n  * @note   TIM_EVENTSOURCE_BREAK and TIM_EVENTSOURCE_BREAK2 are relevant\n  *         only for timer instances supporting break input(s).\n  * @retval HAL status\n  */\n\nHAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_EVENT_SOURCE(EventSource));\n\n  /* Process Locked */\n  __HAL_LOCK(htim);\n\n  /* Change the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Set the event sources */\n  htim->Instance->EGR = EventSource;\n\n  /* Change the TIM state */\n  htim->State = HAL_TIM_STATE_READY;\n\n  __HAL_UNLOCK(htim);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configures the OCRef clear feature\n  * @param  htim TIM handle\n  * @param  sClearInputConfig pointer to a TIM_ClearInputConfigTypeDef structure that\n  *         contains the OCREF clear feature and parameters for the TIM peripheral.\n  * @param  Channel specifies the TIM Channel\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1\n  *            @arg TIM_CHANNEL_2: TIM Channel 2\n  *            @arg TIM_CHANNEL_3: TIM Channel 3\n  *            @arg TIM_CHANNEL_4: TIM Channel 4\n  *            @arg TIM_CHANNEL_5: TIM Channel 5\n  *            @arg TIM_CHANNEL_6: TIM Channel 6\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim,\n                                           TIM_ClearInputConfigTypeDef *sClearInputConfig,\n                                           uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource));\n\n  /* Process Locked */\n  __HAL_LOCK(htim);\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  switch (sClearInputConfig->ClearInputSource)\n  {\n    case TIM_CLEARINPUTSOURCE_NONE:\n    {\n      /* Clear the OCREF clear selection bit and the the ETR Bits */\n      CLEAR_BIT(htim->Instance->SMCR, (TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP));\n      break;\n    }\n\n    case TIM_CLEARINPUTSOURCE_ETR:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity));\n      assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler));\n      assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter));\n\n      /* When OCRef clear feature is used with ETR source, ETR prescaler must be off */\n      if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)\n      {\n        htim->State = HAL_TIM_STATE_READY;\n        __HAL_UNLOCK(htim);\n        return HAL_ERROR;\n      }\n\n      TIM_ETR_SetConfig(htim->Instance,\n                        sClearInputConfig->ClearInputPrescaler,\n                        sClearInputConfig->ClearInputPolarity,\n                        sClearInputConfig->ClearInputFilter);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    switch (Channel)\n    {\n      case TIM_CHANNEL_1:\n      {\n        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\n        {\n          /* Enable the OCREF clear feature for Channel 1 */\n          SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);\n        }\n        else\n        {\n          /* Disable the OCREF clear feature for Channel 1 */\n          CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);\n        }\n        break;\n      }\n      case TIM_CHANNEL_2:\n      {\n        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\n        {\n          /* Enable the OCREF clear feature for Channel 2 */\n          SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);\n        }\n        else\n        {\n          /* Disable the OCREF clear feature for Channel 2 */\n          CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);\n        }\n        break;\n      }\n      case TIM_CHANNEL_3:\n      {\n        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\n        {\n          /* Enable the OCREF clear feature for Channel 3 */\n          SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);\n        }\n        else\n        {\n          /* Disable the OCREF clear feature for Channel 3 */\n          CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);\n        }\n        break;\n      }\n      case TIM_CHANNEL_4:\n      {\n        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\n        {\n          /* Enable the OCREF clear feature for Channel 4 */\n          SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);\n        }\n        else\n        {\n          /* Disable the OCREF clear feature for Channel 4 */\n          CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);\n        }\n        break;\n      }\n      case TIM_CHANNEL_5:\n      {\n        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\n        {\n          /* Enable the OCREF clear feature for Channel 5 */\n          SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);\n        }\n        else\n        {\n          /* Disable the OCREF clear feature for Channel 5 */\n          CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);\n        }\n        break;\n      }\n      case TIM_CHANNEL_6:\n      {\n        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\n        {\n          /* Enable the OCREF clear feature for Channel 6 */\n          SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);\n        }\n        else\n        {\n          /* Disable the OCREF clear feature for Channel 6 */\n          CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);\n        }\n        break;\n      }\n      default:\n        break;\n    }\n  }\n\n  htim->State = HAL_TIM_STATE_READY;\n\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n\n/**\n  * @brief   Configures the clock source to be used\n  * @param  htim TIM handle\n  * @param  sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that\n  *         contains the clock source information for the TIM peripheral.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Process Locked */\n  __HAL_LOCK(htim);\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource));\n\n  /* Reset the SMS, TS, ECE, ETPS and ETRF bits */\n  tmpsmcr = htim->Instance->SMCR;\n  tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);\n  tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);\n  htim->Instance->SMCR = tmpsmcr;\n\n  switch (sClockSourceConfig->ClockSource)\n  {\n    case TIM_CLOCKSOURCE_INTERNAL:\n    {\n      assert_param(IS_TIM_INSTANCE(htim->Instance));\n      break;\n    }\n\n    case TIM_CLOCKSOURCE_ETRMODE1:\n    {\n      /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/\n      assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance));\n\n      /* Check ETR input conditioning related parameters */\n      assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler));\n      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\n      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\n\n      /* Configure the ETR Clock source */\n      TIM_ETR_SetConfig(htim->Instance,\n                        sClockSourceConfig->ClockPrescaler,\n                        sClockSourceConfig->ClockPolarity,\n                        sClockSourceConfig->ClockFilter);\n\n      /* Select the External clock mode1 and the ETRF trigger */\n      tmpsmcr = htim->Instance->SMCR;\n      tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1);\n      /* Write to TIMx SMCR */\n      htim->Instance->SMCR = tmpsmcr;\n      break;\n    }\n\n    case TIM_CLOCKSOURCE_ETRMODE2:\n    {\n      /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/\n      assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance));\n\n      /* Check ETR input conditioning related parameters */\n      assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler));\n      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\n      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\n\n      /* Configure the ETR Clock source */\n      TIM_ETR_SetConfig(htim->Instance,\n                        sClockSourceConfig->ClockPrescaler,\n                        sClockSourceConfig->ClockPolarity,\n                        sClockSourceConfig->ClockFilter);\n      /* Enable the External clock mode2 */\n      htim->Instance->SMCR |= TIM_SMCR_ECE;\n      break;\n    }\n\n    case TIM_CLOCKSOURCE_TI1:\n    {\n      /* Check whether or not the timer instance supports external clock mode 1 */\n      assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));\n\n      /* Check TI1 input conditioning related parameters */\n      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\n      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\n\n      TIM_TI1_ConfigInputStage(htim->Instance,\n                               sClockSourceConfig->ClockPolarity,\n                               sClockSourceConfig->ClockFilter);\n      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1);\n      break;\n    }\n\n    case TIM_CLOCKSOURCE_TI2:\n    {\n      /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/\n      assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));\n\n      /* Check TI2 input conditioning related parameters */\n      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\n      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\n\n      TIM_TI2_ConfigInputStage(htim->Instance,\n                               sClockSourceConfig->ClockPolarity,\n                               sClockSourceConfig->ClockFilter);\n      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2);\n      break;\n    }\n\n    case TIM_CLOCKSOURCE_TI1ED:\n    {\n      /* Check whether or not the timer instance supports external clock mode 1 */\n      assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));\n\n      /* Check TI1 input conditioning related parameters */\n      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\n      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\n\n      TIM_TI1_ConfigInputStage(htim->Instance,\n                               sClockSourceConfig->ClockPolarity,\n                               sClockSourceConfig->ClockFilter);\n      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED);\n      break;\n    }\n\n    case TIM_CLOCKSOURCE_ITR0:\n    case TIM_CLOCKSOURCE_ITR1:\n    case TIM_CLOCKSOURCE_ITR2:\n    case TIM_CLOCKSOURCE_ITR3:\n    case TIM_CLOCKSOURCE_ITR4:\n    case TIM_CLOCKSOURCE_ITR5:\n    case TIM_CLOCKSOURCE_ITR6:\n    case TIM_CLOCKSOURCE_ITR7:\n    case TIM_CLOCKSOURCE_ITR8:\n    {\n      /* Check whether or not the timer instance supports internal trigger input */\n      assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));\n\n      TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n  htim->State = HAL_TIM_STATE_READY;\n\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n\n/**\n  * @brief  Selects the signal connected to the TI1 input: direct from CH1_input\n  *         or a XOR combination between CH1_input, CH2_input & CH3_input\n  * @param  htim TIM handle.\n  * @param  TI1_Selection Indicate whether or not channel 1 is connected to the\n  *         output of a XOR gate.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input\n  *            @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3\n  *            pins are connected to the TI1 input (XOR combination)\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection)\n{\n  uint32_t tmpcr2;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_TI1SELECTION(TI1_Selection));\n\n  /* Get the TIMx CR2 register value */\n  tmpcr2 = htim->Instance->CR2;\n\n  /* Reset the TI1 selection */\n  tmpcr2 &= ~TIM_CR2_TI1S;\n\n  /* Set the TI1 selection */\n  tmpcr2 |= TI1_Selection;\n\n  /* Write to TIMxCR2 */\n  htim->Instance->CR2 = tmpcr2;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configures the TIM in Slave mode\n  * @param  htim TIM handle.\n  * @param  sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that\n  *         contains the selected trigger (internal trigger input, filtered\n  *         timer input or external trigger input) and the Slave mode\n  *         (Disable, Reset, Gated, Trigger, External clock mode 1).\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));\n  assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));\n\n  __HAL_LOCK(htim);\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)\n  {\n    htim->State = HAL_TIM_STATE_READY;\n    __HAL_UNLOCK(htim);\n    return HAL_ERROR;\n  }\n\n  /* Disable Trigger Interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER);\n\n  /* Disable Trigger DMA request */\n  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);\n\n  htim->State = HAL_TIM_STATE_READY;\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configures the TIM in Slave mode in interrupt mode\n  * @param  htim TIM handle.\n  * @param  sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that\n  *         contains the selected trigger (internal trigger input, filtered\n  *         timer input or external trigger input) and the Slave mode\n  *         (Disable, Reset, Gated, Trigger, External clock mode 1).\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,\n                                                TIM_SlaveConfigTypeDef *sSlaveConfig)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));\n  assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));\n\n  __HAL_LOCK(htim);\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)\n  {\n    htim->State = HAL_TIM_STATE_READY;\n    __HAL_UNLOCK(htim);\n    return HAL_ERROR;\n  }\n\n  /* Enable Trigger Interrupt */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER);\n\n  /* Disable Trigger DMA request */\n  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);\n\n  htim->State = HAL_TIM_STATE_READY;\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Read the captured value from Capture Compare unit\n  * @param  htim TIM handle.\n  * @param  Channel TIM Channels to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected\n  * @retval Captured value\n  */\nuint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  uint32_t tmpreg = 0U;\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n\n      /* Return the capture 1 value */\n      tmpreg =  htim->Instance->CCR1;\n\n      break;\n    }\n    case TIM_CHANNEL_2:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n\n      /* Return the capture 2 value */\n      tmpreg =   htim->Instance->CCR2;\n\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\n\n      /* Return the capture 3 value */\n      tmpreg =   htim->Instance->CCR3;\n\n      break;\n    }\n\n    case TIM_CHANNEL_4:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\n\n      /* Return the capture 4 value */\n      tmpreg =   htim->Instance->CCR4;\n\n      break;\n    }\n\n    default:\n      break;\n  }\n\n  return tmpreg;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions\n  *  @brief    TIM Callbacks functions\n  *\n@verbatim\n  ==============================================================================\n                        ##### TIM Callbacks functions #####\n  ==============================================================================\n [..]\n   This section provides TIM callback functions:\n   (+) TIM Period elapsed callback\n   (+) TIM Output Compare callback\n   (+) TIM Input capture callback\n   (+) TIM Trigger callback\n   (+) TIM Error callback\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Period elapsed callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_PeriodElapsedCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Period elapsed half complete callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_PeriodElapsedHalfCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Output Compare callback in non-blocking mode\n  * @param  htim TIM OC handle\n  * @retval None\n  */\n__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Input Capture callback in non-blocking mode\n  * @param  htim TIM IC handle\n  * @retval None\n  */\n__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_IC_CaptureCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Input Capture half complete callback in non-blocking mode\n  * @param  htim TIM IC handle\n  * @retval None\n  */\n__weak void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_IC_CaptureHalfCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  PWM Pulse finished callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  PWM Pulse finished half complete callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_PWM_PulseFinishedHalfCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Hall Trigger detection callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_TriggerCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Hall Trigger detection half complete callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_TriggerHalfCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Timer error callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIM_ErrorCallback could be implemented in the user file\n   */\n}\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n/**\n  * @brief  Register a User TIM callback to be used instead of the weak predefined callback\n  * @param htim tim handle\n  * @param CallbackID ID of the callback to be registered\n  *        This parameter can be one of the following values:\n  *          @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID\n  *          @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID\n  *          @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID\n  *          @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID\n  *          @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID\n  *          @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID\n  *          @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID\n  *          @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID\n  *          @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID\n  *          @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID\n  *          @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID\n  *          @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID\n  *          @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID\n  *          @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID\n  *          @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID\n  *          @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID\n  *          @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID\n  *          @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID\n  *          @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID\n  *          @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID\n  *          @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID\n  *          @param pCallback pointer to the callback function\n  *          @retval status\n  */\nHAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,\n                                           pTIM_CallbackTypeDef pCallback)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  if (pCallback == NULL)\n  {\n    return HAL_ERROR;\n  }\n  /* Process locked */\n  __HAL_LOCK(htim);\n\n  if (htim->State == HAL_TIM_STATE_READY)\n  {\n    switch (CallbackID)\n    {\n      case HAL_TIM_BASE_MSPINIT_CB_ID :\n        htim->Base_MspInitCallback                 = pCallback;\n        break;\n\n      case HAL_TIM_BASE_MSPDEINIT_CB_ID :\n        htim->Base_MspDeInitCallback               = pCallback;\n        break;\n\n      case HAL_TIM_IC_MSPINIT_CB_ID :\n        htim->IC_MspInitCallback                   = pCallback;\n        break;\n\n      case HAL_TIM_IC_MSPDEINIT_CB_ID :\n        htim->IC_MspDeInitCallback                 = pCallback;\n        break;\n\n      case HAL_TIM_OC_MSPINIT_CB_ID :\n        htim->OC_MspInitCallback                   = pCallback;\n        break;\n\n      case HAL_TIM_OC_MSPDEINIT_CB_ID :\n        htim->OC_MspDeInitCallback                 = pCallback;\n        break;\n\n      case HAL_TIM_PWM_MSPINIT_CB_ID :\n        htim->PWM_MspInitCallback                  = pCallback;\n        break;\n\n      case HAL_TIM_PWM_MSPDEINIT_CB_ID :\n        htim->PWM_MspDeInitCallback                = pCallback;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\n        htim->OnePulse_MspInitCallback             = pCallback;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\n        htim->OnePulse_MspDeInitCallback           = pCallback;\n        break;\n\n      case HAL_TIM_ENCODER_MSPINIT_CB_ID :\n        htim->Encoder_MspInitCallback              = pCallback;\n        break;\n\n      case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\n        htim->Encoder_MspDeInitCallback            = pCallback;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\n        htim->HallSensor_MspInitCallback           = pCallback;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\n        htim->HallSensor_MspDeInitCallback         = pCallback;\n        break;\n\n      case HAL_TIM_PERIOD_ELAPSED_CB_ID :\n        htim->PeriodElapsedCallback                = pCallback;\n        break;\n\n      case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID :\n        htim->PeriodElapsedHalfCpltCallback        = pCallback;\n        break;\n\n      case HAL_TIM_TRIGGER_CB_ID :\n        htim->TriggerCallback                      = pCallback;\n        break;\n\n      case HAL_TIM_TRIGGER_HALF_CB_ID :\n        htim->TriggerHalfCpltCallback              = pCallback;\n        break;\n\n      case HAL_TIM_IC_CAPTURE_CB_ID :\n        htim->IC_CaptureCallback                   = pCallback;\n        break;\n\n      case HAL_TIM_IC_CAPTURE_HALF_CB_ID :\n        htim->IC_CaptureHalfCpltCallback           = pCallback;\n        break;\n\n      case HAL_TIM_OC_DELAY_ELAPSED_CB_ID :\n        htim->OC_DelayElapsedCallback              = pCallback;\n        break;\n\n      case HAL_TIM_PWM_PULSE_FINISHED_CB_ID :\n        htim->PWM_PulseFinishedCallback            = pCallback;\n        break;\n\n      case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID :\n        htim->PWM_PulseFinishedHalfCpltCallback    = pCallback;\n        break;\n\n      case HAL_TIM_ERROR_CB_ID :\n        htim->ErrorCallback                        = pCallback;\n        break;\n\n      case HAL_TIM_COMMUTATION_CB_ID :\n        htim->CommutationCallback                  = pCallback;\n        break;\n\n      case HAL_TIM_COMMUTATION_HALF_CB_ID :\n        htim->CommutationHalfCpltCallback          = pCallback;\n        break;\n\n      case HAL_TIM_BREAK_CB_ID :\n        htim->BreakCallback                        = pCallback;\n        break;\n\n      case HAL_TIM_BREAK2_CB_ID :\n        htim->Break2Callback                       = pCallback;\n        break;\n\n      default :\n        /* Return error status */\n        status = HAL_ERROR;\n        break;\n    }\n  }\n  else if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    switch (CallbackID)\n    {\n      case HAL_TIM_BASE_MSPINIT_CB_ID :\n        htim->Base_MspInitCallback         = pCallback;\n        break;\n\n      case HAL_TIM_BASE_MSPDEINIT_CB_ID :\n        htim->Base_MspDeInitCallback       = pCallback;\n        break;\n\n      case HAL_TIM_IC_MSPINIT_CB_ID :\n        htim->IC_MspInitCallback           = pCallback;\n        break;\n\n      case HAL_TIM_IC_MSPDEINIT_CB_ID :\n        htim->IC_MspDeInitCallback         = pCallback;\n        break;\n\n      case HAL_TIM_OC_MSPINIT_CB_ID :\n        htim->OC_MspInitCallback           = pCallback;\n        break;\n\n      case HAL_TIM_OC_MSPDEINIT_CB_ID :\n        htim->OC_MspDeInitCallback         = pCallback;\n        break;\n\n      case HAL_TIM_PWM_MSPINIT_CB_ID :\n        htim->PWM_MspInitCallback          = pCallback;\n        break;\n\n      case HAL_TIM_PWM_MSPDEINIT_CB_ID :\n        htim->PWM_MspDeInitCallback        = pCallback;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\n        htim->OnePulse_MspInitCallback     = pCallback;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\n        htim->OnePulse_MspDeInitCallback   = pCallback;\n        break;\n\n      case HAL_TIM_ENCODER_MSPINIT_CB_ID :\n        htim->Encoder_MspInitCallback      = pCallback;\n        break;\n\n      case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\n        htim->Encoder_MspDeInitCallback    = pCallback;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\n        htim->HallSensor_MspInitCallback   = pCallback;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\n        htim->HallSensor_MspDeInitCallback = pCallback;\n        break;\n\n      default :\n        /* Return error status */\n        status = HAL_ERROR;\n        break;\n    }\n  }\n  else\n  {\n    /* Return error status */\n    status = HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n\n/**\n  * @brief  Unregister a TIM callback\n  *         TIM callback is redirected to the weak predefined callback\n  * @param htim tim handle\n  * @param CallbackID ID of the callback to be unregistered\n  *        This parameter can be one of the following values:\n  *          @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID\n  *          @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID\n  *          @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID\n  *          @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID\n  *          @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID\n  *          @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID\n  *          @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID\n  *          @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID\n  *          @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID\n  *          @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID\n  *          @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID\n  *          @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID\n  *          @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID\n  *          @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID\n  *          @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID\n  *          @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID\n  *          @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID\n  *          @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID\n  *          @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID\n  *          @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID\n  *          @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID\n  *          @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID\n  *          @retval status\n  */\nHAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Process locked */\n  __HAL_LOCK(htim);\n\n  if (htim->State == HAL_TIM_STATE_READY)\n  {\n    switch (CallbackID)\n    {\n      case HAL_TIM_BASE_MSPINIT_CB_ID :\n        /* Legacy weak Base MspInit Callback */\n        htim->Base_MspInitCallback              = HAL_TIM_Base_MspInit;\n        break;\n\n      case HAL_TIM_BASE_MSPDEINIT_CB_ID :\n        /* Legacy weak Base Msp DeInit Callback */\n        htim->Base_MspDeInitCallback            = HAL_TIM_Base_MspDeInit;\n        break;\n\n      case HAL_TIM_IC_MSPINIT_CB_ID :\n        /* Legacy weak IC Msp Init Callback */\n        htim->IC_MspInitCallback                = HAL_TIM_IC_MspInit;\n        break;\n\n      case HAL_TIM_IC_MSPDEINIT_CB_ID :\n        /* Legacy weak IC Msp DeInit Callback */\n        htim->IC_MspDeInitCallback              = HAL_TIM_IC_MspDeInit;\n        break;\n\n      case HAL_TIM_OC_MSPINIT_CB_ID :\n        /* Legacy weak OC Msp Init Callback */\n        htim->OC_MspInitCallback                = HAL_TIM_OC_MspInit;\n        break;\n\n      case HAL_TIM_OC_MSPDEINIT_CB_ID :\n        /* Legacy weak OC Msp DeInit Callback */\n        htim->OC_MspDeInitCallback              = HAL_TIM_OC_MspDeInit;\n        break;\n\n      case HAL_TIM_PWM_MSPINIT_CB_ID :\n        /* Legacy weak PWM Msp Init Callback */\n        htim->PWM_MspInitCallback               = HAL_TIM_PWM_MspInit;\n        break;\n\n      case HAL_TIM_PWM_MSPDEINIT_CB_ID :\n        /* Legacy weak PWM Msp DeInit Callback */\n        htim->PWM_MspDeInitCallback             = HAL_TIM_PWM_MspDeInit;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\n        /* Legacy weak One Pulse Msp Init Callback */\n        htim->OnePulse_MspInitCallback          = HAL_TIM_OnePulse_MspInit;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\n        /* Legacy weak One Pulse Msp DeInit Callback */\n        htim->OnePulse_MspDeInitCallback        = HAL_TIM_OnePulse_MspDeInit;\n        break;\n\n      case HAL_TIM_ENCODER_MSPINIT_CB_ID :\n        /* Legacy weak Encoder Msp Init Callback */\n        htim->Encoder_MspInitCallback           = HAL_TIM_Encoder_MspInit;\n        break;\n\n      case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\n        /* Legacy weak Encoder Msp DeInit Callback */\n        htim->Encoder_MspDeInitCallback         = HAL_TIM_Encoder_MspDeInit;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\n        /* Legacy weak Hall Sensor Msp Init Callback */\n        htim->HallSensor_MspInitCallback        = HAL_TIMEx_HallSensor_MspInit;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\n        /* Legacy weak Hall Sensor Msp DeInit Callback */\n        htim->HallSensor_MspDeInitCallback      = HAL_TIMEx_HallSensor_MspDeInit;\n        break;\n\n      case HAL_TIM_PERIOD_ELAPSED_CB_ID :\n        /* Legacy weak Period Elapsed Callback */\n        htim->PeriodElapsedCallback             = HAL_TIM_PeriodElapsedCallback;\n        break;\n\n      case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID :\n        /* Legacy weak Period Elapsed half complete Callback */\n        htim->PeriodElapsedHalfCpltCallback     = HAL_TIM_PeriodElapsedHalfCpltCallback;\n        break;\n\n      case HAL_TIM_TRIGGER_CB_ID :\n        /* Legacy weak Trigger Callback */\n        htim->TriggerCallback                   = HAL_TIM_TriggerCallback;\n        break;\n\n      case HAL_TIM_TRIGGER_HALF_CB_ID :\n        /* Legacy weak Trigger half complete Callback */\n        htim->TriggerHalfCpltCallback           = HAL_TIM_TriggerHalfCpltCallback;\n        break;\n\n      case HAL_TIM_IC_CAPTURE_CB_ID :\n        /* Legacy weak IC Capture Callback */\n        htim->IC_CaptureCallback                = HAL_TIM_IC_CaptureCallback;\n        break;\n\n      case HAL_TIM_IC_CAPTURE_HALF_CB_ID :\n        /* Legacy weak IC Capture half complete Callback */\n        htim->IC_CaptureHalfCpltCallback        = HAL_TIM_IC_CaptureHalfCpltCallback;\n        break;\n\n      case HAL_TIM_OC_DELAY_ELAPSED_CB_ID :\n        /* Legacy weak OC Delay Elapsed Callback */\n        htim->OC_DelayElapsedCallback           = HAL_TIM_OC_DelayElapsedCallback;\n        break;\n\n      case HAL_TIM_PWM_PULSE_FINISHED_CB_ID :\n        /* Legacy weak PWM Pulse Finished Callback */\n        htim->PWM_PulseFinishedCallback         = HAL_TIM_PWM_PulseFinishedCallback;\n        break;\n\n      case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID :\n        /* Legacy weak PWM Pulse Finished half complete Callback */\n        htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback;\n        break;\n\n      case HAL_TIM_ERROR_CB_ID :\n        /* Legacy weak Error Callback */\n        htim->ErrorCallback                     = HAL_TIM_ErrorCallback;\n        break;\n\n      case HAL_TIM_COMMUTATION_CB_ID :\n        /* Legacy weak Commutation Callback */\n        htim->CommutationCallback               = HAL_TIMEx_CommutCallback;\n        break;\n\n      case HAL_TIM_COMMUTATION_HALF_CB_ID :\n        /* Legacy weak Commutation half complete Callback */\n        htim->CommutationHalfCpltCallback       = HAL_TIMEx_CommutHalfCpltCallback;\n        break;\n\n      case HAL_TIM_BREAK_CB_ID :\n        /* Legacy weak Break Callback */\n        htim->BreakCallback                     = HAL_TIMEx_BreakCallback;\n        break;\n\n      case HAL_TIM_BREAK2_CB_ID :\n        /* Legacy weak Break2 Callback */\n        htim->Break2Callback                    = HAL_TIMEx_Break2Callback;\n        break;\n\n      default :\n        /* Return error status */\n        status = HAL_ERROR;\n        break;\n    }\n  }\n  else if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    switch (CallbackID)\n    {\n      case HAL_TIM_BASE_MSPINIT_CB_ID :\n        /* Legacy weak Base MspInit Callback */\n        htim->Base_MspInitCallback         = HAL_TIM_Base_MspInit;\n        break;\n\n      case HAL_TIM_BASE_MSPDEINIT_CB_ID :\n        /* Legacy weak Base Msp DeInit Callback */\n        htim->Base_MspDeInitCallback       = HAL_TIM_Base_MspDeInit;\n        break;\n\n      case HAL_TIM_IC_MSPINIT_CB_ID :\n        /* Legacy weak IC Msp Init Callback */\n        htim->IC_MspInitCallback           = HAL_TIM_IC_MspInit;\n        break;\n\n      case HAL_TIM_IC_MSPDEINIT_CB_ID :\n        /* Legacy weak IC Msp DeInit Callback */\n        htim->IC_MspDeInitCallback         = HAL_TIM_IC_MspDeInit;\n        break;\n\n      case HAL_TIM_OC_MSPINIT_CB_ID :\n        /* Legacy weak OC Msp Init Callback */\n        htim->OC_MspInitCallback           = HAL_TIM_OC_MspInit;\n        break;\n\n      case HAL_TIM_OC_MSPDEINIT_CB_ID :\n        /* Legacy weak OC Msp DeInit Callback */\n        htim->OC_MspDeInitCallback         = HAL_TIM_OC_MspDeInit;\n        break;\n\n      case HAL_TIM_PWM_MSPINIT_CB_ID :\n        /* Legacy weak PWM Msp Init Callback */\n        htim->PWM_MspInitCallback          = HAL_TIM_PWM_MspInit;\n        break;\n\n      case HAL_TIM_PWM_MSPDEINIT_CB_ID :\n        /* Legacy weak PWM Msp DeInit Callback */\n        htim->PWM_MspDeInitCallback        = HAL_TIM_PWM_MspDeInit;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\n        /* Legacy weak One Pulse Msp Init Callback */\n        htim->OnePulse_MspInitCallback     = HAL_TIM_OnePulse_MspInit;\n        break;\n\n      case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\n        /* Legacy weak One Pulse Msp DeInit Callback */\n        htim->OnePulse_MspDeInitCallback   = HAL_TIM_OnePulse_MspDeInit;\n        break;\n\n      case HAL_TIM_ENCODER_MSPINIT_CB_ID :\n        /* Legacy weak Encoder Msp Init Callback */\n        htim->Encoder_MspInitCallback      = HAL_TIM_Encoder_MspInit;\n        break;\n\n      case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\n        /* Legacy weak Encoder Msp DeInit Callback */\n        htim->Encoder_MspDeInitCallback    = HAL_TIM_Encoder_MspDeInit;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\n        /* Legacy weak Hall Sensor Msp Init Callback */\n        htim->HallSensor_MspInitCallback   = HAL_TIMEx_HallSensor_MspInit;\n        break;\n\n      case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\n        /* Legacy weak Hall Sensor Msp DeInit Callback */\n        htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit;\n        break;\n\n      default :\n        /* Return error status */\n        status = HAL_ERROR;\n        break;\n    }\n  }\n  else\n  {\n    /* Return error status */\n    status = HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions\n  *  @brief   TIM Peripheral State functions\n  *\n@verbatim\n  ==============================================================================\n                        ##### Peripheral State functions #####\n  ==============================================================================\n    [..]\n    This subsection permits to get in run-time the status of the peripheral\n    and the data flow.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Return the TIM Base handle state.\n  * @param  htim TIM Base handle\n  * @retval HAL state\n  */\nHAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim)\n{\n  return htim->State;\n}\n\n/**\n  * @brief  Return the TIM OC handle state.\n  * @param  htim TIM Output Compare handle\n  * @retval HAL state\n  */\nHAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim)\n{\n  return htim->State;\n}\n\n/**\n  * @brief  Return the TIM PWM handle state.\n  * @param  htim TIM handle\n  * @retval HAL state\n  */\nHAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim)\n{\n  return htim->State;\n}\n\n/**\n  * @brief  Return the TIM Input Capture handle state.\n  * @param  htim TIM IC handle\n  * @retval HAL state\n  */\nHAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim)\n{\n  return htim->State;\n}\n\n/**\n  * @brief  Return the TIM One Pulse Mode handle state.\n  * @param  htim TIM OPM handle\n  * @retval HAL state\n  */\nHAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim)\n{\n  return htim->State;\n}\n\n/**\n  * @brief  Return the TIM Encoder Mode handle state.\n  * @param  htim TIM Encoder Interface handle\n  * @retval HAL state\n  */\nHAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim)\n{\n  return htim->State;\n}\n\n/**\n  * @brief  Return the TIM Encoder Mode handle state.\n  * @param  htim TIM handle\n  * @retval Active channel\n  */\nHAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(TIM_HandleTypeDef *htim)\n{\n  return htim->Channel;\n}\n\n/**\n  * @brief  Return actual state of the TIM channel.\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1\n  *            @arg TIM_CHANNEL_2: TIM Channel 2\n  *            @arg TIM_CHANNEL_3: TIM Channel 3\n  *            @arg TIM_CHANNEL_4: TIM Channel 4\n  *            @arg TIM_CHANNEL_5: TIM Channel 5\n  *            @arg TIM_CHANNEL_6: TIM Channel 6\n  * @retval TIM Channel state\n  */\nHAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(TIM_HandleTypeDef *htim,  uint32_t Channel)\n{\n  HAL_TIM_ChannelStateTypeDef channel_state;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\n\n  channel_state = TIM_CHANNEL_STATE_GET(htim, Channel);\n\n  return channel_state;\n}\n\n/**\n  * @brief  Return actual state of a DMA burst operation.\n  * @param  htim TIM handle\n  * @retval DMA burst state\n  */\nHAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));\n\n  return htim->DMABurstState;\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @defgroup TIM_Private_Functions TIM Private Functions\n  * @{\n  */\n\n/**\n  * @brief  TIM DMA error callback\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nvoid TIM_DMAError(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (hdma == htim->hdma[TIM_DMA_ID_CC1])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\n    TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else\n  {\n    htim->State = HAL_TIM_STATE_READY;\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->ErrorCallback(htim);\n#else\n  HAL_TIM_ErrorCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n}\n\n/**\n  * @brief  TIM DMA Delay Pulse complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nstatic void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (hdma == htim->hdma[TIM_DMA_ID_CC1])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else\n  {\n    /* nothing to do */\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->PWM_PulseFinishedCallback(htim);\n#else\n  HAL_TIM_PWM_PulseFinishedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n}\n\n/**\n  * @brief  TIM DMA Delay Pulse half complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nvoid TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (hdma == htim->hdma[TIM_DMA_ID_CC1])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\n  }\n  else\n  {\n    /* nothing to do */\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->PWM_PulseFinishedHalfCpltCallback(htim);\n#else\n  HAL_TIM_PWM_PulseFinishedHalfCpltCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n}\n\n/**\n  * @brief  TIM DMA Capture complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nvoid TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (hdma == htim->hdma[TIM_DMA_ID_CC1])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else\n  {\n    /* nothing to do */\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->IC_CaptureCallback(htim);\n#else\n  HAL_TIM_IC_CaptureCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n}\n\n/**\n  * @brief  TIM DMA Capture half complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nvoid TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (hdma == htim->hdma[TIM_DMA_ID_CC1])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\n  }\n  else\n  {\n    /* nothing to do */\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->IC_CaptureHalfCpltCallback(htim);\n#else\n  HAL_TIM_IC_CaptureHalfCpltCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n}\n\n/**\n  * @brief  TIM DMA Period Elapse complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nstatic void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (htim->hdma[TIM_DMA_ID_UPDATE]->Init.Mode == DMA_NORMAL)\n  {\n    htim->State = HAL_TIM_STATE_READY;\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->PeriodElapsedCallback(htim);\n#else\n  HAL_TIM_PeriodElapsedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  TIM DMA Period Elapse half complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nstatic void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->PeriodElapsedHalfCpltCallback(htim);\n#else\n  HAL_TIM_PeriodElapsedHalfCpltCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  TIM DMA Trigger callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nstatic void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (htim->hdma[TIM_DMA_ID_TRIGGER]->Init.Mode == DMA_NORMAL)\n  {\n    htim->State = HAL_TIM_STATE_READY;\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->TriggerCallback(htim);\n#else\n  HAL_TIM_TriggerCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  TIM DMA Trigger half complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nstatic void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->TriggerHalfCpltCallback(htim);\n#else\n  HAL_TIM_TriggerHalfCpltCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  Time Base configuration\n  * @param  TIMx TIM peripheral\n  * @param  Structure TIM Base configuration structure\n  * @retval None\n  */\nvoid TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)\n{\n  uint32_t tmpcr1;\n  tmpcr1 = TIMx->CR1;\n\n  /* Set TIM Time Base Unit parameters ---------------------------------------*/\n  if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))\n  {\n    /* Select the Counter Mode */\n    tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);\n    tmpcr1 |= Structure->CounterMode;\n  }\n\n  if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))\n  {\n    /* Set the clock division */\n    tmpcr1 &= ~TIM_CR1_CKD;\n    tmpcr1 |= (uint32_t)Structure->ClockDivision;\n  }\n\n  /* Set the auto-reload preload */\n  MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);\n\n  TIMx->CR1 = tmpcr1;\n\n  /* Set the Autoreload value */\n  TIMx->ARR = (uint32_t)Structure->Period ;\n\n  /* Set the Prescaler value */\n  TIMx->PSC = Structure->Prescaler;\n\n  if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))\n  {\n    /* Set the Repetition Counter value */\n    TIMx->RCR = Structure->RepetitionCounter;\n  }\n\n  /* Generate an update event to reload the Prescaler\n     and the repetition counter (only for advanced timer) value immediately */\n  TIMx->EGR = TIM_EGR_UG;\n}\n\n/**\n  * @brief  Timer Output Compare 1 configuration\n  * @param  TIMx to select the TIM peripheral\n  * @param  OC_Config The output configuration structure\n  * @retval None\n  */\nstatic void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\n{\n  uint32_t tmpccmrx;\n  uint32_t tmpccer;\n  uint32_t tmpcr2;\n\n  /* Disable the Channel 1: Reset the CC1E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC1E;\n\n  /* Get the TIMx CCER register value */\n  tmpccer = TIMx->CCER;\n  /* Get the TIMx CR2 register value */\n  tmpcr2 =  TIMx->CR2;\n\n  /* Get the TIMx CCMR1 register value */\n  tmpccmrx = TIMx->CCMR1;\n\n  /* Reset the Output Compare Mode Bits */\n  tmpccmrx &= ~TIM_CCMR1_OC1M;\n  tmpccmrx &= ~TIM_CCMR1_CC1S;\n  /* Select the Output Compare Mode */\n  tmpccmrx |= OC_Config->OCMode;\n\n  /* Reset the Output Polarity level */\n  tmpccer &= ~TIM_CCER_CC1P;\n  /* Set the Output Compare Polarity */\n  tmpccer |= OC_Config->OCPolarity;\n\n  if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1))\n  {\n    /* Check parameters */\n    assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));\n\n    /* Reset the Output N Polarity level */\n    tmpccer &= ~TIM_CCER_CC1NP;\n    /* Set the Output N Polarity */\n    tmpccer |= OC_Config->OCNPolarity;\n    /* Reset the Output N State */\n    tmpccer &= ~TIM_CCER_CC1NE;\n  }\n\n  if (IS_TIM_BREAK_INSTANCE(TIMx))\n  {\n    /* Check parameters */\n    assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));\n    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\n\n    /* Reset the Output Compare and Output Compare N IDLE State */\n    tmpcr2 &= ~TIM_CR2_OIS1;\n    tmpcr2 &= ~TIM_CR2_OIS1N;\n    /* Set the Output Idle state */\n    tmpcr2 |= OC_Config->OCIdleState;\n    /* Set the Output N Idle state */\n    tmpcr2 |= OC_Config->OCNIdleState;\n  }\n\n  /* Write to TIMx CR2 */\n  TIMx->CR2 = tmpcr2;\n\n  /* Write to TIMx CCMR1 */\n  TIMx->CCMR1 = tmpccmrx;\n\n  /* Set the Capture Compare Register value */\n  TIMx->CCR1 = OC_Config->Pulse;\n\n  /* Write to TIMx CCER */\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Timer Output Compare 2 configuration\n  * @param  TIMx to select the TIM peripheral\n  * @param  OC_Config The output configuration structure\n  * @retval None\n  */\nvoid TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\n{\n  uint32_t tmpccmrx;\n  uint32_t tmpccer;\n  uint32_t tmpcr2;\n\n  /* Disable the Channel 2: Reset the CC2E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC2E;\n\n  /* Get the TIMx CCER register value */\n  tmpccer = TIMx->CCER;\n  /* Get the TIMx CR2 register value */\n  tmpcr2 =  TIMx->CR2;\n\n  /* Get the TIMx CCMR1 register value */\n  tmpccmrx = TIMx->CCMR1;\n\n  /* Reset the Output Compare mode and Capture/Compare selection Bits */\n  tmpccmrx &= ~TIM_CCMR1_OC2M;\n  tmpccmrx &= ~TIM_CCMR1_CC2S;\n\n  /* Select the Output Compare Mode */\n  tmpccmrx |= (OC_Config->OCMode << 8U);\n\n  /* Reset the Output Polarity level */\n  tmpccer &= ~TIM_CCER_CC2P;\n  /* Set the Output Compare Polarity */\n  tmpccer |= (OC_Config->OCPolarity << 4U);\n\n  if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2))\n  {\n    assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));\n\n    /* Reset the Output N Polarity level */\n    tmpccer &= ~TIM_CCER_CC2NP;\n    /* Set the Output N Polarity */\n    tmpccer |= (OC_Config->OCNPolarity << 4U);\n    /* Reset the Output N State */\n    tmpccer &= ~TIM_CCER_CC2NE;\n\n  }\n\n  if (IS_TIM_BREAK_INSTANCE(TIMx))\n  {\n    /* Check parameters */\n    assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));\n    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\n\n    /* Reset the Output Compare and Output Compare N IDLE State */\n    tmpcr2 &= ~TIM_CR2_OIS2;\n    tmpcr2 &= ~TIM_CR2_OIS2N;\n    /* Set the Output Idle state */\n    tmpcr2 |= (OC_Config->OCIdleState << 2U);\n    /* Set the Output N Idle state */\n    tmpcr2 |= (OC_Config->OCNIdleState << 2U);\n  }\n\n  /* Write to TIMx CR2 */\n  TIMx->CR2 = tmpcr2;\n\n  /* Write to TIMx CCMR1 */\n  TIMx->CCMR1 = tmpccmrx;\n\n  /* Set the Capture Compare Register value */\n  TIMx->CCR2 = OC_Config->Pulse;\n\n  /* Write to TIMx CCER */\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Timer Output Compare 3 configuration\n  * @param  TIMx to select the TIM peripheral\n  * @param  OC_Config The output configuration structure\n  * @retval None\n  */\nstatic void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\n{\n  uint32_t tmpccmrx;\n  uint32_t tmpccer;\n  uint32_t tmpcr2;\n\n  /* Disable the Channel 3: Reset the CC2E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC3E;\n\n  /* Get the TIMx CCER register value */\n  tmpccer = TIMx->CCER;\n  /* Get the TIMx CR2 register value */\n  tmpcr2 =  TIMx->CR2;\n\n  /* Get the TIMx CCMR2 register value */\n  tmpccmrx = TIMx->CCMR2;\n\n  /* Reset the Output Compare mode and Capture/Compare selection Bits */\n  tmpccmrx &= ~TIM_CCMR2_OC3M;\n  tmpccmrx &= ~TIM_CCMR2_CC3S;\n  /* Select the Output Compare Mode */\n  tmpccmrx |= OC_Config->OCMode;\n\n  /* Reset the Output Polarity level */\n  tmpccer &= ~TIM_CCER_CC3P;\n  /* Set the Output Compare Polarity */\n  tmpccer |= (OC_Config->OCPolarity << 8U);\n\n  if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3))\n  {\n    assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));\n\n    /* Reset the Output N Polarity level */\n    tmpccer &= ~TIM_CCER_CC3NP;\n    /* Set the Output N Polarity */\n    tmpccer |= (OC_Config->OCNPolarity << 8U);\n    /* Reset the Output N State */\n    tmpccer &= ~TIM_CCER_CC3NE;\n  }\n\n  if (IS_TIM_BREAK_INSTANCE(TIMx))\n  {\n    /* Check parameters */\n    assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));\n    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\n\n    /* Reset the Output Compare and Output Compare N IDLE State */\n    tmpcr2 &= ~TIM_CR2_OIS3;\n    tmpcr2 &= ~TIM_CR2_OIS3N;\n    /* Set the Output Idle state */\n    tmpcr2 |= (OC_Config->OCIdleState << 4U);\n    /* Set the Output N Idle state */\n    tmpcr2 |= (OC_Config->OCNIdleState << 4U);\n  }\n\n  /* Write to TIMx CR2 */\n  TIMx->CR2 = tmpcr2;\n\n  /* Write to TIMx CCMR2 */\n  TIMx->CCMR2 = tmpccmrx;\n\n  /* Set the Capture Compare Register value */\n  TIMx->CCR3 = OC_Config->Pulse;\n\n  /* Write to TIMx CCER */\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Timer Output Compare 4 configuration\n  * @param  TIMx to select the TIM peripheral\n  * @param  OC_Config The output configuration structure\n  * @retval None\n  */\nstatic void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\n{\n  uint32_t tmpccmrx;\n  uint32_t tmpccer;\n  uint32_t tmpcr2;\n\n  /* Disable the Channel 4: Reset the CC4E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC4E;\n\n  /* Get the TIMx CCER register value */\n  tmpccer = TIMx->CCER;\n  /* Get the TIMx CR2 register value */\n  tmpcr2 =  TIMx->CR2;\n\n  /* Get the TIMx CCMR2 register value */\n  tmpccmrx = TIMx->CCMR2;\n\n  /* Reset the Output Compare mode and Capture/Compare selection Bits */\n  tmpccmrx &= ~TIM_CCMR2_OC4M;\n  tmpccmrx &= ~TIM_CCMR2_CC4S;\n\n  /* Select the Output Compare Mode */\n  tmpccmrx |= (OC_Config->OCMode << 8U);\n\n  /* Reset the Output Polarity level */\n  tmpccer &= ~TIM_CCER_CC4P;\n  /* Set the Output Compare Polarity */\n  tmpccer |= (OC_Config->OCPolarity << 12U);\n\n  if (IS_TIM_BREAK_INSTANCE(TIMx))\n  {\n    /* Check parameters */\n    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\n\n    /* Reset the Output Compare IDLE State */\n    tmpcr2 &= ~TIM_CR2_OIS4;\n\n    /* Set the Output Idle state */\n    tmpcr2 |= (OC_Config->OCIdleState << 6U);\n  }\n\n  /* Write to TIMx CR2 */\n  TIMx->CR2 = tmpcr2;\n\n  /* Write to TIMx CCMR2 */\n  TIMx->CCMR2 = tmpccmrx;\n\n  /* Set the Capture Compare Register value */\n  TIMx->CCR4 = OC_Config->Pulse;\n\n  /* Write to TIMx CCER */\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Timer Output Compare 5 configuration\n  * @param  TIMx to select the TIM peripheral\n  * @param  OC_Config The output configuration structure\n  * @retval None\n  */\nstatic void TIM_OC5_SetConfig(TIM_TypeDef *TIMx,\n                              TIM_OC_InitTypeDef *OC_Config)\n{\n  uint32_t tmpccmrx;\n  uint32_t tmpccer;\n  uint32_t tmpcr2;\n\n  /* Disable the output: Reset the CCxE Bit */\n  TIMx->CCER &= ~TIM_CCER_CC5E;\n\n  /* Get the TIMx CCER register value */\n  tmpccer = TIMx->CCER;\n  /* Get the TIMx CR2 register value */\n  tmpcr2 =  TIMx->CR2;\n  /* Get the TIMx CCMR1 register value */\n  tmpccmrx = TIMx->CCMR3;\n\n  /* Reset the Output Compare Mode Bits */\n  tmpccmrx &= ~(TIM_CCMR3_OC5M);\n  /* Select the Output Compare Mode */\n  tmpccmrx |= OC_Config->OCMode;\n\n  /* Reset the Output Polarity level */\n  tmpccer &= ~TIM_CCER_CC5P;\n  /* Set the Output Compare Polarity */\n  tmpccer |= (OC_Config->OCPolarity << 16U);\n\n  if (IS_TIM_BREAK_INSTANCE(TIMx))\n  {\n    /* Reset the Output Compare IDLE State */\n    tmpcr2 &= ~TIM_CR2_OIS5;\n    /* Set the Output Idle state */\n    tmpcr2 |= (OC_Config->OCIdleState << 8U);\n  }\n  /* Write to TIMx CR2 */\n  TIMx->CR2 = tmpcr2;\n\n  /* Write to TIMx CCMR3 */\n  TIMx->CCMR3 = tmpccmrx;\n\n  /* Set the Capture Compare Register value */\n  TIMx->CCR5 = OC_Config->Pulse;\n\n  /* Write to TIMx CCER */\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Timer Output Compare 6 configuration\n  * @param  TIMx to select the TIM peripheral\n  * @param  OC_Config The output configuration structure\n  * @retval None\n  */\nstatic void TIM_OC6_SetConfig(TIM_TypeDef *TIMx,\n                              TIM_OC_InitTypeDef *OC_Config)\n{\n  uint32_t tmpccmrx;\n  uint32_t tmpccer;\n  uint32_t tmpcr2;\n\n  /* Disable the output: Reset the CCxE Bit */\n  TIMx->CCER &= ~TIM_CCER_CC6E;\n\n  /* Get the TIMx CCER register value */\n  tmpccer = TIMx->CCER;\n  /* Get the TIMx CR2 register value */\n  tmpcr2 =  TIMx->CR2;\n  /* Get the TIMx CCMR1 register value */\n  tmpccmrx = TIMx->CCMR3;\n\n  /* Reset the Output Compare Mode Bits */\n  tmpccmrx &= ~(TIM_CCMR3_OC6M);\n  /* Select the Output Compare Mode */\n  tmpccmrx |= (OC_Config->OCMode << 8U);\n\n  /* Reset the Output Polarity level */\n  tmpccer &= (uint32_t)~TIM_CCER_CC6P;\n  /* Set the Output Compare Polarity */\n  tmpccer |= (OC_Config->OCPolarity << 20U);\n\n  if (IS_TIM_BREAK_INSTANCE(TIMx))\n  {\n    /* Reset the Output Compare IDLE State */\n    tmpcr2 &= ~TIM_CR2_OIS6;\n    /* Set the Output Idle state */\n    tmpcr2 |= (OC_Config->OCIdleState << 10U);\n  }\n\n  /* Write to TIMx CR2 */\n  TIMx->CR2 = tmpcr2;\n\n  /* Write to TIMx CCMR3 */\n  TIMx->CCMR3 = tmpccmrx;\n\n  /* Set the Capture Compare Register value */\n  TIMx->CCR6 = OC_Config->Pulse;\n\n  /* Write to TIMx CCER */\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Slave Timer configuration function\n  * @param  htim TIM handle\n  * @param  sSlaveConfig Slave timer configuration\n  * @retval None\n  */\nstatic HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,\n                                                  TIM_SlaveConfigTypeDef *sSlaveConfig)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n  uint32_t tmpccmr1;\n  uint32_t tmpccer;\n\n  /* Get the TIMx SMCR register value */\n  tmpsmcr = htim->Instance->SMCR;\n\n  /* Reset the Trigger Selection Bits */\n  tmpsmcr &= ~TIM_SMCR_TS;\n  /* Set the Input Trigger source */\n  tmpsmcr |= sSlaveConfig->InputTrigger;\n\n  /* Reset the slave mode Bits */\n  tmpsmcr &= ~TIM_SMCR_SMS;\n  /* Set the slave mode */\n  tmpsmcr |= sSlaveConfig->SlaveMode;\n\n  /* Write to TIMx SMCR */\n  htim->Instance->SMCR = tmpsmcr;\n\n  /* Configure the trigger prescaler, filter, and polarity */\n  switch (sSlaveConfig->InputTrigger)\n  {\n    case TIM_TS_ETRF:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance));\n      assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler));\n      assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));\n      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\n      /* Configure the ETR Trigger source */\n      TIM_ETR_SetConfig(htim->Instance,\n                        sSlaveConfig->TriggerPrescaler,\n                        sSlaveConfig->TriggerPolarity,\n                        sSlaveConfig->TriggerFilter);\n      break;\n    }\n\n    case TIM_TS_TI1F_ED:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\n\n      if (sSlaveConfig->SlaveMode == TIM_SLAVEMODE_GATED)\n      {\n        return HAL_ERROR;\n      }\n\n      /* Disable the Channel 1: Reset the CC1E Bit */\n      tmpccer = htim->Instance->CCER;\n      htim->Instance->CCER &= ~TIM_CCER_CC1E;\n      tmpccmr1 = htim->Instance->CCMR1;\n\n      /* Set the filter */\n      tmpccmr1 &= ~TIM_CCMR1_IC1F;\n      tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U);\n\n      /* Write to TIMx CCMR1 and CCER registers */\n      htim->Instance->CCMR1 = tmpccmr1;\n      htim->Instance->CCER = tmpccer;\n      break;\n    }\n\n    case TIM_TS_TI1FP1:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\n      assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));\n      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\n\n      /* Configure TI1 Filter and Polarity */\n      TIM_TI1_ConfigInputStage(htim->Instance,\n                               sSlaveConfig->TriggerPolarity,\n                               sSlaveConfig->TriggerFilter);\n      break;\n    }\n\n    case TIM_TS_TI2FP2:\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n      assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));\n      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\n\n      /* Configure TI2 Filter and Polarity */\n      TIM_TI2_ConfigInputStage(htim->Instance,\n                               sSlaveConfig->TriggerPolarity,\n                               sSlaveConfig->TriggerFilter);\n      break;\n    }\n\n    case TIM_TS_ITR0:\n    case TIM_TS_ITR1:\n    case TIM_TS_ITR2:\n    case TIM_TS_ITR3:\n    case TIM_TS_ITR4:\n    case TIM_TS_ITR5:\n    case TIM_TS_ITR6:\n    case TIM_TS_ITR7:\n    case TIM_TS_ITR8:\n    case TIM_TS_ITR9:\n    case TIM_TS_ITR10:\n    case TIM_TS_ITR11:\n    case TIM_TS_ITR12:\n    case TIM_TS_ITR13:\n    {\n      /* Check the parameter */\n      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Configure the TI1 as Input.\n  * @param  TIMx to select the TIM peripheral.\n  * @param  TIM_ICPolarity The Input Polarity.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICPOLARITY_RISING\n  *            @arg TIM_ICPOLARITY_FALLING\n  *            @arg TIM_ICPOLARITY_BOTHEDGE\n  * @param  TIM_ICSelection specifies the input to be used.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICSELECTION_DIRECTTI: TIM Input 1 is selected to be connected to IC1.\n  *            @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 1 is selected to be connected to IC2.\n  *            @arg TIM_ICSELECTION_TRC: TIM Input 1 is selected to be connected to TRC.\n  * @param  TIM_ICFilter Specifies the Input Capture Filter.\n  *          This parameter must be a value between 0x00 and 0x0F.\n  * @retval None\n  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI2FP1\n  *       (on channel2 path) is used as the input signal. Therefore CCMR1 must be\n  *        protected against un-initialized filter and polarity values.\n  */\nvoid TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\n                       uint32_t TIM_ICFilter)\n{\n  uint32_t tmpccmr1;\n  uint32_t tmpccer;\n\n  /* Disable the Channel 1: Reset the CC1E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC1E;\n  tmpccmr1 = TIMx->CCMR1;\n  tmpccer = TIMx->CCER;\n\n  /* Select the Input */\n  if (IS_TIM_CC2_INSTANCE(TIMx) != RESET)\n  {\n    tmpccmr1 &= ~TIM_CCMR1_CC1S;\n    tmpccmr1 |= TIM_ICSelection;\n  }\n  else\n  {\n    tmpccmr1 |= TIM_CCMR1_CC1S_0;\n  }\n\n  /* Set the filter */\n  tmpccmr1 &= ~TIM_CCMR1_IC1F;\n  tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F);\n\n  /* Select the Polarity and set the CC1E Bit */\n  tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);\n  tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP));\n\n  /* Write to TIMx CCMR1 and CCER registers */\n  TIMx->CCMR1 = tmpccmr1;\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Configure the Polarity and Filter for TI1.\n  * @param  TIMx to select the TIM peripheral.\n  * @param  TIM_ICPolarity The Input Polarity.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICPOLARITY_RISING\n  *            @arg TIM_ICPOLARITY_FALLING\n  *            @arg TIM_ICPOLARITY_BOTHEDGE\n  * @param  TIM_ICFilter Specifies the Input Capture Filter.\n  *          This parameter must be a value between 0x00 and 0x0F.\n  * @retval None\n  */\nstatic void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)\n{\n  uint32_t tmpccmr1;\n  uint32_t tmpccer;\n\n  /* Disable the Channel 1: Reset the CC1E Bit */\n  tmpccer = TIMx->CCER;\n  TIMx->CCER &= ~TIM_CCER_CC1E;\n  tmpccmr1 = TIMx->CCMR1;\n\n  /* Set the filter */\n  tmpccmr1 &= ~TIM_CCMR1_IC1F;\n  tmpccmr1 |= (TIM_ICFilter << 4U);\n\n  /* Select the Polarity and set the CC1E Bit */\n  tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);\n  tmpccer |= TIM_ICPolarity;\n\n  /* Write to TIMx CCMR1 and CCER registers */\n  TIMx->CCMR1 = tmpccmr1;\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Configure the TI2 as Input.\n  * @param  TIMx to select the TIM peripheral\n  * @param  TIM_ICPolarity The Input Polarity.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICPOLARITY_RISING\n  *            @arg TIM_ICPOLARITY_FALLING\n  *            @arg TIM_ICPOLARITY_BOTHEDGE\n  * @param  TIM_ICSelection specifies the input to be used.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICSELECTION_DIRECTTI: TIM Input 2 is selected to be connected to IC2.\n  *            @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 2 is selected to be connected to IC1.\n  *            @arg TIM_ICSELECTION_TRC: TIM Input 2 is selected to be connected to TRC.\n  * @param  TIM_ICFilter Specifies the Input Capture Filter.\n  *          This parameter must be a value between 0x00 and 0x0F.\n  * @retval None\n  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI1FP2\n  *       (on channel1 path) is used as the input signal. Therefore CCMR1 must be\n  *        protected against un-initialized filter and polarity values.\n  */\nstatic void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\n                              uint32_t TIM_ICFilter)\n{\n  uint32_t tmpccmr1;\n  uint32_t tmpccer;\n\n  /* Disable the Channel 2: Reset the CC2E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC2E;\n  tmpccmr1 = TIMx->CCMR1;\n  tmpccer = TIMx->CCER;\n\n  /* Select the Input */\n  tmpccmr1 &= ~TIM_CCMR1_CC2S;\n  tmpccmr1 |= (TIM_ICSelection << 8U);\n\n  /* Set the filter */\n  tmpccmr1 &= ~TIM_CCMR1_IC2F;\n  tmpccmr1 |= ((TIM_ICFilter << 12U) & TIM_CCMR1_IC2F);\n\n  /* Select the Polarity and set the CC2E Bit */\n  tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);\n  tmpccer |= ((TIM_ICPolarity << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP));\n\n  /* Write to TIMx CCMR1 and CCER registers */\n  TIMx->CCMR1 = tmpccmr1 ;\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Configure the Polarity and Filter for TI2.\n  * @param  TIMx to select the TIM peripheral.\n  * @param  TIM_ICPolarity The Input Polarity.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICPOLARITY_RISING\n  *            @arg TIM_ICPOLARITY_FALLING\n  *            @arg TIM_ICPOLARITY_BOTHEDGE\n  * @param  TIM_ICFilter Specifies the Input Capture Filter.\n  *          This parameter must be a value between 0x00 and 0x0F.\n  * @retval None\n  */\nstatic void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)\n{\n  uint32_t tmpccmr1;\n  uint32_t tmpccer;\n\n  /* Disable the Channel 2: Reset the CC2E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC2E;\n  tmpccmr1 = TIMx->CCMR1;\n  tmpccer = TIMx->CCER;\n\n  /* Set the filter */\n  tmpccmr1 &= ~TIM_CCMR1_IC2F;\n  tmpccmr1 |= (TIM_ICFilter << 12U);\n\n  /* Select the Polarity and set the CC2E Bit */\n  tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);\n  tmpccer |= (TIM_ICPolarity << 4U);\n\n  /* Write to TIMx CCMR1 and CCER registers */\n  TIMx->CCMR1 = tmpccmr1 ;\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Configure the TI3 as Input.\n  * @param  TIMx to select the TIM peripheral\n  * @param  TIM_ICPolarity The Input Polarity.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICPOLARITY_RISING\n  *            @arg TIM_ICPOLARITY_FALLING\n  *            @arg TIM_ICPOLARITY_BOTHEDGE\n  * @param  TIM_ICSelection specifies the input to be used.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICSELECTION_DIRECTTI: TIM Input 3 is selected to be connected to IC3.\n  *            @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 3 is selected to be connected to IC4.\n  *            @arg TIM_ICSELECTION_TRC: TIM Input 3 is selected to be connected to TRC.\n  * @param  TIM_ICFilter Specifies the Input Capture Filter.\n  *          This parameter must be a value between 0x00 and 0x0F.\n  * @retval None\n  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI3FP4\n  *       (on channel1 path) is used as the input signal. Therefore CCMR2 must be\n  *        protected against un-initialized filter and polarity values.\n  */\nstatic void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\n                              uint32_t TIM_ICFilter)\n{\n  uint32_t tmpccmr2;\n  uint32_t tmpccer;\n\n  /* Disable the Channel 3: Reset the CC3E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC3E;\n  tmpccmr2 = TIMx->CCMR2;\n  tmpccer = TIMx->CCER;\n\n  /* Select the Input */\n  tmpccmr2 &= ~TIM_CCMR2_CC3S;\n  tmpccmr2 |= TIM_ICSelection;\n\n  /* Set the filter */\n  tmpccmr2 &= ~TIM_CCMR2_IC3F;\n  tmpccmr2 |= ((TIM_ICFilter << 4U) & TIM_CCMR2_IC3F);\n\n  /* Select the Polarity and set the CC3E Bit */\n  tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP);\n  tmpccer |= ((TIM_ICPolarity << 8U) & (TIM_CCER_CC3P | TIM_CCER_CC3NP));\n\n  /* Write to TIMx CCMR2 and CCER registers */\n  TIMx->CCMR2 = tmpccmr2;\n  TIMx->CCER = tmpccer;\n}\n\n/**\n  * @brief  Configure the TI4 as Input.\n  * @param  TIMx to select the TIM peripheral\n  * @param  TIM_ICPolarity The Input Polarity.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICPOLARITY_RISING\n  *            @arg TIM_ICPOLARITY_FALLING\n  *            @arg TIM_ICPOLARITY_BOTHEDGE\n  * @param  TIM_ICSelection specifies the input to be used.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ICSELECTION_DIRECTTI: TIM Input 4 is selected to be connected to IC4.\n  *            @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 4 is selected to be connected to IC3.\n  *            @arg TIM_ICSELECTION_TRC: TIM Input 4 is selected to be connected to TRC.\n  * @param  TIM_ICFilter Specifies the Input Capture Filter.\n  *          This parameter must be a value between 0x00 and 0x0F.\n  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI4FP3\n  *       (on channel1 path) is used as the input signal. Therefore CCMR2 must be\n  *        protected against un-initialized filter and polarity values.\n  * @retval None\n  */\nstatic void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\n                              uint32_t TIM_ICFilter)\n{\n  uint32_t tmpccmr2;\n  uint32_t tmpccer;\n\n  /* Disable the Channel 4: Reset the CC4E Bit */\n  TIMx->CCER &= ~TIM_CCER_CC4E;\n  tmpccmr2 = TIMx->CCMR2;\n  tmpccer = TIMx->CCER;\n\n  /* Select the Input */\n  tmpccmr2 &= ~TIM_CCMR2_CC4S;\n  tmpccmr2 |= (TIM_ICSelection << 8U);\n\n  /* Set the filter */\n  tmpccmr2 &= ~TIM_CCMR2_IC4F;\n  tmpccmr2 |= ((TIM_ICFilter << 12U) & TIM_CCMR2_IC4F);\n\n  /* Select the Polarity and set the CC4E Bit */\n  tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP);\n  tmpccer |= ((TIM_ICPolarity << 12U) & (TIM_CCER_CC4P | TIM_CCER_CC4NP));\n\n  /* Write to TIMx CCMR2 and CCER registers */\n  TIMx->CCMR2 = tmpccmr2;\n  TIMx->CCER = tmpccer ;\n}\n\n/**\n  * @brief  Selects the Input Trigger source\n  * @param  TIMx to select the TIM peripheral\n  * @param  InputTriggerSource The Input Trigger source.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_TS_ITR0: Internal Trigger 0\n  *            @arg TIM_TS_ITR1: Internal Trigger 1\n  *            @arg TIM_TS_ITR2: Internal Trigger 2\n  *            @arg TIM_TS_ITR3: Internal Trigger 3\n  *            @arg TIM_TS_ITR4: Internal Trigger 4  (*)\n  *            @arg TIM_TS_ITR5: Internal Trigger 5\n  *            @arg TIM_TS_ITR6: Internal Trigger 6\n  *            @arg TIM_TS_ITR7: Internal Trigger 7\n  *            @arg TIM_TS_ITR8: Internal Trigger 8  (*)\n  *            @arg TIM_TS_ITR9: Internal Trigger 9  (*)\n  *            @arg TIM_TS_ITR10: Internal Trigger 10 (*)\n  *            @arg TIM_TS_ITR11: Internal Trigger 11 (*)\n  *            @arg TIM_TS_ITR12: Internal Trigger 12 (*)\n  *            @arg TIM_TS_ITR13: Internal Trigger 13 (*)\n  *            @arg TIM_TS_TI1F_ED: TI1 Edge Detector\n  *            @arg TIM_TS_TI1FP1: Filtered Timer Input 1\n  *            @arg TIM_TS_TI2FP2: Filtered Timer Input 2\n  *            @arg TIM_TS_ETRF: External Trigger input\n  *\n  *       (*)  Value not defined in all devices.\n  *\n  * @retval None\n  */\nstatic void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource)\n{\n  uint32_t tmpsmcr;\n\n  /* Get the TIMx SMCR register value */\n  tmpsmcr = TIMx->SMCR;\n  /* Reset the TS Bits */\n  tmpsmcr &= ~TIM_SMCR_TS;\n  /* Set the Input Trigger source and the slave mode*/\n  tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1);\n  /* Write to TIMx SMCR */\n  TIMx->SMCR = tmpsmcr;\n}\n/**\n  * @brief  Configures the TIMx External Trigger (ETR).\n  * @param  TIMx to select the TIM peripheral\n  * @param  TIM_ExtTRGPrescaler The external Trigger Prescaler.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ETRPRESCALER_DIV1: ETRP Prescaler OFF.\n  *            @arg TIM_ETRPRESCALER_DIV2: ETRP frequency divided by 2.\n  *            @arg TIM_ETRPRESCALER_DIV4: ETRP frequency divided by 4.\n  *            @arg TIM_ETRPRESCALER_DIV8: ETRP frequency divided by 8.\n  * @param  TIM_ExtTRGPolarity The external Trigger Polarity.\n  *          This parameter can be one of the following values:\n  *            @arg TIM_ETRPOLARITY_INVERTED: active low or falling edge active.\n  *            @arg TIM_ETRPOLARITY_NONINVERTED: active high or rising edge active.\n  * @param  ExtTRGFilter External Trigger Filter.\n  *          This parameter must be a value between 0x00 and 0x0F\n  * @retval None\n  */\nvoid TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler,\n                       uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter)\n{\n  uint32_t tmpsmcr;\n\n  tmpsmcr = TIMx->SMCR;\n\n  /* Reset the ETR Bits */\n  tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);\n\n  /* Set the Prescaler, the Filter value and the Polarity */\n  tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U)));\n\n  /* Write to TIMx SMCR */\n  TIMx->SMCR = tmpsmcr;\n}\n\n/**\n  * @brief  Enables or disables the TIM Capture Compare Channel x.\n  * @param  TIMx to select the TIM peripheral\n  * @param  Channel specifies the TIM Channel\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1\n  *            @arg TIM_CHANNEL_2: TIM Channel 2\n  *            @arg TIM_CHANNEL_3: TIM Channel 3\n  *            @arg TIM_CHANNEL_4: TIM Channel 4\n  *            @arg TIM_CHANNEL_5: TIM Channel 5 selected\n  *            @arg TIM_CHANNEL_6: TIM Channel 6 selected\n  * @param  ChannelState specifies the TIM Channel CCxE bit new state.\n  *          This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE.\n  * @retval None\n  */\nvoid TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState)\n{\n  uint32_t tmp;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CC1_INSTANCE(TIMx));\n  assert_param(IS_TIM_CHANNELS(Channel));\n\n  tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */\n\n  /* Reset the CCxE Bit */\n  TIMx->CCER &= ~tmp;\n\n  /* Set or reset the CCxE Bit */\n  TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */\n}\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n/**\n  * @brief  Reset interrupt callbacks to the legacy weak callbacks.\n  * @param  htim pointer to a TIM_HandleTypeDef structure that contains\n  *                the configuration information for TIM module.\n  * @retval None\n  */\nvoid TIM_ResetCallback(TIM_HandleTypeDef *htim)\n{\n  /* Reset the TIM callback to the legacy weak callbacks */\n  htim->PeriodElapsedCallback             = HAL_TIM_PeriodElapsedCallback;\n  htim->PeriodElapsedHalfCpltCallback     = HAL_TIM_PeriodElapsedHalfCpltCallback;\n  htim->TriggerCallback                   = HAL_TIM_TriggerCallback;\n  htim->TriggerHalfCpltCallback           = HAL_TIM_TriggerHalfCpltCallback;\n  htim->IC_CaptureCallback                = HAL_TIM_IC_CaptureCallback;\n  htim->IC_CaptureHalfCpltCallback        = HAL_TIM_IC_CaptureHalfCpltCallback;\n  htim->OC_DelayElapsedCallback           = HAL_TIM_OC_DelayElapsedCallback;\n  htim->PWM_PulseFinishedCallback         = HAL_TIM_PWM_PulseFinishedCallback;\n  htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback;\n  htim->ErrorCallback                     = HAL_TIM_ErrorCallback;\n  htim->CommutationCallback               = HAL_TIMEx_CommutCallback;\n  htim->CommutationHalfCpltCallback       = HAL_TIMEx_CommutHalfCpltCallback;\n  htim->BreakCallback                     = HAL_TIMEx_BreakCallback;\n  htim->Break2Callback                    = HAL_TIMEx_Break2Callback;\n}\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n\n#endif /* HAL_TIM_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_tim_ex.c\n  * @author  MCD Application Team\n  * @brief   TIM HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the Timer Extended peripheral:\n  *           + Time Hall Sensor Interface Initialization\n  *           + Time Hall Sensor Interface Start\n  *           + Time Complementary signal break and dead time configuration\n  *           + Time Master and Slave synchronization configuration\n  *           + Time Output Compare/PWM Channel Configuration (for channels 5 and 6)\n  *           + Timer remapping capabilities configuration\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n                      ##### TIMER Extended features #####\n  ==============================================================================\n  [..]\n    The Timer Extended features include:\n    (#) Complementary outputs with programmable dead-time for :\n        (++) Output Compare\n        (++) PWM generation (Edge and Center-aligned Mode)\n        (++) One-pulse mode output\n    (#) Synchronization circuit to control the timer with external signals and to\n        interconnect several timers together.\n    (#) Break input to put the timer output signals in reset state or in a known state.\n    (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for\n        positioning purposes\n\n            ##### How to use this driver #####\n  ==============================================================================\n    [..]\n     (#) Initialize the TIM low level resources by implementing the following functions\n         depending on the selected feature:\n           (++) Hall Sensor output : HAL_TIMEx_HallSensor_MspInit()\n\n     (#) Initialize the TIM low level resources :\n        (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE();\n        (##) TIM pins configuration\n            (+++) Enable the clock for the TIM GPIOs using the following function:\n              __HAL_RCC_GPIOx_CLK_ENABLE();\n            (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();\n\n     (#) The external Clock can be configured, if needed (the default clock is the\n         internal clock from the APBx), using the following function:\n         HAL_TIM_ConfigClockSource, the clock configuration should be done before\n         any start function.\n\n     (#) Configure the TIM in the desired functioning mode using one of the\n         initialization function of this driver:\n          (++) HAL_TIMEx_HallSensor_Init() and HAL_TIMEx_ConfigCommutEvent(): to use the\n               Timer Hall Sensor Interface and the commutation event with the corresponding\n               Interrupt and DMA request if needed (Note that One Timer is used to interface\n               with the Hall sensor Interface and another Timer should be used to use\n               the commutation event).\n\n     (#) Activate the TIM peripheral using one of the start functions:\n           (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(),\n                HAL_TIMEx_OCN_Start_IT()\n           (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(),\n                HAL_TIMEx_PWMN_Start_IT()\n           (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT()\n           (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(),\n                HAL_TIMEx_HallSensor_Start_IT().\n\n  @endverbatim\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup TIMEx TIMEx\n  * @brief TIM Extended HAL module driver\n  * @{\n  */\n\n#ifdef HAL_TIM_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n#if defined(TIM_BDTR_BKBID)\n/* Private constants ---------------------------------------------------------*/\n/** @defgroup TIMEx_Private_Constants TIM Extended Private Constants\n  * @{\n  */\n/* Timeout for break input rearm */\n#define TIM_BREAKINPUT_REARM_TIMEOUT    5UL /* 5 milliseconds */\n/**\n  * @}\n  */\n/* End of private constants --------------------------------------------------*/\n\n#endif /* TIM_BDTR_BKBID */\n/* Private macros ------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\nstatic void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma);\nstatic void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma);\nstatic void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState);\n\n/* Exported functions --------------------------------------------------------*/\n/** @defgroup TIMEx_Exported_Functions TIM Extended Exported Functions\n  * @{\n  */\n\n/** @defgroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions\n  * @brief    Timer Hall Sensor functions\n  *\n@verbatim\n  ==============================================================================\n                      ##### Timer Hall Sensor functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Initialize and configure TIM HAL Sensor.\n    (+) De-initialize TIM HAL Sensor.\n    (+) Start the Hall Sensor Interface.\n    (+) Stop the Hall Sensor Interface.\n    (+) Start the Hall Sensor Interface and enable interrupts.\n    (+) Stop the Hall Sensor Interface and disable interrupts.\n    (+) Start the Hall Sensor Interface and enable DMA transfers.\n    (+) Stop the Hall Sensor Interface and disable DMA transfers.\n\n@endverbatim\n  * @{\n  */\n/**\n  * @brief  Initializes the TIM Hall Sensor Interface and initialize the associated handle.\n  * @note   When the timer instance is initialized in Hall Sensor Interface mode,\n  *         timer channels 1 and channel 2 are reserved and cannot be used for\n  *         other purpose.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @param  sConfig TIM Hall Sensor configuration structure\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig)\n{\n  TIM_OC_InitTypeDef OC_Config;\n\n  /* Check the TIM handle allocation */\n  if (htim == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\n  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\n  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\n  assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));\n  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));\n  assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));\n\n  if (htim->State == HAL_TIM_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    htim->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n    /* Reset interrupt callbacks to legacy week callbacks */\n    TIM_ResetCallback(htim);\n\n    if (htim->HallSensor_MspInitCallback == NULL)\n    {\n      htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit;\n    }\n    /* Init the low level hardware : GPIO, CLOCK, NVIC */\n    htim->HallSensor_MspInitCallback(htim);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\n    HAL_TIMEx_HallSensor_MspInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n  }\n\n  /* Set the TIM state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Configure the Time base in the Encoder Mode */\n  TIM_Base_SetConfig(htim->Instance, &htim->Init);\n\n  /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the  Hall sensor */\n  TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter);\n\n  /* Reset the IC1PSC Bits */\n  htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;\n  /* Set the IC1PSC value */\n  htim->Instance->CCMR1 |= sConfig->IC1Prescaler;\n\n  /* Enable the Hall sensor interface (XOR function of the three inputs) */\n  htim->Instance->CR2 |= TIM_CR2_TI1S;\n\n  /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */\n  htim->Instance->SMCR &= ~TIM_SMCR_TS;\n  htim->Instance->SMCR |= TIM_TS_TI1F_ED;\n\n  /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */\n  htim->Instance->SMCR &= ~TIM_SMCR_SMS;\n  htim->Instance->SMCR |= TIM_SLAVEMODE_RESET;\n\n  /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/\n  OC_Config.OCFastMode = TIM_OCFAST_DISABLE;\n  OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET;\n  OC_Config.OCMode = TIM_OCMODE_PWM2;\n  OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET;\n  OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH;\n  OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH;\n  OC_Config.Pulse = sConfig->Commutation_Delay;\n\n  TIM_OC2_SetConfig(htim->Instance, &OC_Config);\n\n  /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2\n    register to 101 */\n  htim->Instance->CR2 &= ~TIM_CR2_MMS;\n  htim->Instance->CR2 |= TIM_TRGO_OC2REF;\n\n  /* Initialize the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;\n\n  /* Initialize the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Initialize the TIM state*/\n  htim->State = HAL_TIM_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  DeInitializes the TIM Hall Sensor interface\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_INSTANCE(htim->Instance));\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Disable the TIM Peripheral Clock */\n  __HAL_TIM_DISABLE(htim);\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  if (htim->HallSensor_MspDeInitCallback == NULL)\n  {\n    htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  htim->HallSensor_MspDeInitCallback(htim);\n#else\n  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\n  HAL_TIMEx_HallSensor_MspDeInit(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  /* Change the DMA burst operation state */\n  htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;\n\n  /* Change the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET);\n\n  /* Change TIM state */\n  htim->State = HAL_TIM_STATE_RESET;\n\n  /* Release Lock */\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Initializes the TIM Hall Sensor MSP.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval None\n  */\n__weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  DeInitializes TIM Hall Sensor MSP.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval None\n  */\n__weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Starts the TIM Hall Sensor Interface.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim)\n{\n  uint32_t tmpsmcr;\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Check the TIM channels state */\n  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the Input Capture channel 1\n  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,\n  TIM_CHANNEL_2 and TIM_CHANNEL_3) */\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Hall sensor Interface.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Disable the Input Capture channels 1, 2 and 3\n  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,\n  TIM_CHANNEL_2 and TIM_CHANNEL_3) */\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Hall Sensor Interface in interrupt mode.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim)\n{\n  uint32_t tmpsmcr;\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Check the TIM channels state */\n  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the capture compare Interrupts 1 event */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n\n  /* Enable the Input Capture channel 1\n  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,\n  TIM_CHANNEL_2 and TIM_CHANNEL_3) */\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Hall Sensor Interface in interrupt mode.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Disable the Input Capture channel 1\n  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,\n  TIM_CHANNEL_2 and TIM_CHANNEL_3) */\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n\n  /* Disable the capture compare Interrupts event */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Hall Sensor Interface in DMA mode.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @param  pData The destination Buffer address.\n  * @param  Length The length of data to be transferred from TIM peripheral to memory.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)\n{\n  uint32_t tmpsmcr;\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Set the TIM channel state */\n  if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)\n      || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY))\n  {\n    return HAL_BUSY;\n  }\n  else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY)\n           && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY))\n  {\n    if ((pData == NULL) && (Length > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  /* Enable the Input Capture channel 1\n  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,\n  TIM_CHANNEL_2 and TIM_CHANNEL_3) */\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\n\n  /* Set the DMA Input Capture 1 Callbacks */\n  htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\n  htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\n  /* Set the DMA error callback */\n  htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\n\n  /* Enable the DMA stream for Capture 1*/\n  if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length) != HAL_OK)\n  {\n    /* Return error status */\n    return HAL_ERROR;\n  }\n  /* Enable the capture compare 1 Interrupt */\n  __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Hall Sensor Interface in DMA mode.\n  * @param  htim TIM Hall Sensor Interface handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\n\n  /* Disable the Input Capture channel 1\n  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,\n  TIM_CHANNEL_2 and TIM_CHANNEL_3) */\n  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\n\n\n  /* Disable the capture compare Interrupts 1 event */\n  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n\n  (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM channel state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions\n  *  @brief   Timer Complementary Output Compare functions\n  *\n@verbatim\n  ==============================================================================\n              ##### Timer Complementary Output Compare functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Start the Complementary Output Compare/PWM.\n    (+) Stop the Complementary Output Compare/PWM.\n    (+) Start the Complementary Output Compare/PWM and enable interrupts.\n    (+) Stop the Complementary Output Compare/PWM and disable interrupts.\n    (+) Start the Complementary Output Compare/PWM and enable DMA transfers.\n    (+) Stop the Complementary Output Compare/PWM and disable DMA transfers.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Starts the TIM Output Compare signal generation on the complementary\n  *         output.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM complementary channel state */\n  if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM complementary channel state */\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the Capture compare channel N */\n  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\n\n  /* Enable the Main Output */\n  __HAL_TIM_MOE_ENABLE(htim);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM Output Compare signal generation on the complementary\n  *         output.\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Disable the Capture compare channel N */\n  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\n\n  /* Disable the Main Output */\n  __HAL_TIM_MOE_DISABLE(htim);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM complementary channel state */\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM Output Compare signal generation in interrupt mode\n  *         on the complementary output.\n  * @param  htim TIM OC handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM complementary channel state */\n  if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM complementary channel state */\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Enable the TIM Output Compare interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Enable the TIM Output Compare interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Enable the TIM Output Compare interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the TIM Break interrupt */\n    __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);\n\n    /* Enable the Capture compare channel N */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\n\n    /* Enable the Main Output */\n    __HAL_TIM_MOE_ENABLE(htim);\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM Output Compare signal generation in interrupt mode\n  *         on the complementary output.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpccer;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Output Compare interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Output Compare interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Output Compare interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Capture compare channel N */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\n\n    /* Disable the TIM Break interrupt (only if no more channel is active) */\n    tmpccer = htim->Instance->CCER;\n    if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)\n    {\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);\n    }\n\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM complementary channel state */\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Starts the TIM Output Compare signal generation in DMA mode\n  *         on the complementary output.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @param  pData The source Buffer address.\n  * @param  Length The length of data to be transferred from memory to TIM peripheral\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Set the TIM complementary channel state */\n  if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY)\n  {\n    return HAL_BUSY;\n  }\n  else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)\n  {\n    if ((pData == NULL) && (Length > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Output Compare DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Output Compare DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt;\n      htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Output Compare DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the Capture compare channel N */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\n\n    /* Enable the Main Output */\n    __HAL_TIM_MOE_ENABLE(htim);\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM Output Compare signal generation in DMA mode\n  *         on the complementary output.\n  * @param  htim TIM Output Compare handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Output Compare DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Output Compare DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Output Compare DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the Capture compare channel N */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\n\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM complementary channel state */\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions\n  * @brief    Timer Complementary PWM functions\n  *\n@verbatim\n  ==============================================================================\n                 ##### Timer Complementary PWM functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Start the Complementary PWM.\n    (+) Stop the Complementary PWM.\n    (+) Start the Complementary PWM and enable interrupts.\n    (+) Stop the Complementary PWM and disable interrupts.\n    (+) Start the Complementary PWM and enable DMA transfers.\n    (+) Stop the Complementary PWM and disable DMA transfers.\n    (+) Start the Complementary Input Capture measurement.\n    (+) Stop the Complementary Input Capture.\n    (+) Start the Complementary Input Capture and enable interrupts.\n    (+) Stop the Complementary Input Capture and disable interrupts.\n    (+) Start the Complementary Input Capture and enable DMA transfers.\n    (+) Stop the Complementary Input Capture and disable DMA transfers.\n    (+) Start the Complementary One Pulse generation.\n    (+) Stop the Complementary One Pulse.\n    (+) Start the Complementary One Pulse and enable interrupts.\n    (+) Stop the Complementary One Pulse and disable interrupts.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Starts the PWM signal generation on the complementary output.\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM complementary channel state */\n  if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM complementary channel state */\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the complementary PWM output  */\n  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\n\n  /* Enable the Main Output */\n  __HAL_TIM_MOE_ENABLE(htim);\n\n  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n  else\n  {\n    __HAL_TIM_ENABLE(htim);\n  }\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the PWM signal generation on the complementary output.\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Disable the complementary PWM output  */\n  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\n\n  /* Disable the Main Output */\n  __HAL_TIM_MOE_DISABLE(htim);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM complementary channel state */\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the PWM signal generation in interrupt mode on the\n  *         complementary output.\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Check the TIM complementary channel state */\n  if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM complementary channel state */\n  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Enable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Enable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Enable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the TIM Break interrupt */\n    __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);\n\n    /* Enable the complementary PWM output  */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\n\n    /* Enable the Main Output */\n    __HAL_TIM_MOE_ENABLE(htim);\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the PWM signal generation in interrupt mode on the\n  *         complementary output.\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpccer;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3 interrupt */\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the complementary PWM output  */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\n\n    /* Disable the TIM Break interrupt (only if no more channel is active) */\n    tmpccer = htim->Instance->CCER;\n    if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)\n    {\n      __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);\n    }\n\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM complementary channel state */\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Starts the TIM PWM signal generation in DMA mode on the\n  *         complementary output\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel to be enabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @param  pData The source Buffer address.\n  * @param  Length The length of data to be transferred from memory to TIM peripheral\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  /* Set the TIM complementary channel state */\n  if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY)\n  {\n    return HAL_BUSY;\n  }\n  else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)\n  {\n    if ((pData == NULL) && (Length > 0U))\n    {\n      return HAL_ERROR;\n    }\n    else\n    {\n      TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY);\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt;\n      htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt;\n      htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 2 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Set the DMA compare callbacks */\n      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt;\n      htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\n\n      /* Set the DMA error callback */\n      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ;\n\n      /* Enable the DMA stream */\n      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,\n                           Length) != HAL_OK)\n      {\n        /* Return error status */\n        return HAL_ERROR;\n      }\n      /* Enable the TIM Capture/Compare 3 DMA request */\n      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Enable the complementary PWM output  */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\n\n    /* Enable the Main Output */\n    __HAL_TIM_MOE_ENABLE(htim);\n\n    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\n    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n    {\n      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\n      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\n      {\n        __HAL_TIM_ENABLE(htim);\n      }\n    }\n    else\n    {\n      __HAL_TIM_ENABLE(htim);\n    }\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @brief  Stops the TIM PWM signal generation in DMA mode on the complementary\n  *         output\n  * @param  htim TIM handle\n  * @param  Channel TIM Channel to be disabled\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n    {\n      /* Disable the TIM Capture/Compare 1 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\n      break;\n    }\n\n    case TIM_CHANNEL_2:\n    {\n      /* Disable the TIM Capture/Compare 2 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\n      break;\n    }\n\n    case TIM_CHANNEL_3:\n    {\n      /* Disable the TIM Capture/Compare 3 DMA request */\n      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\n      (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\n      break;\n    }\n\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  if (status == HAL_OK)\n  {\n    /* Disable the complementary PWM output */\n    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\n\n    /* Disable the Main Output */\n    __HAL_TIM_MOE_DISABLE(htim);\n\n    /* Disable the Peripheral */\n    __HAL_TIM_DISABLE(htim);\n\n    /* Set the TIM complementary channel state */\n    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);\n  }\n\n  /* Return function status */\n  return status;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions\n  * @brief    Timer Complementary One Pulse functions\n  *\n@verbatim\n  ==============================================================================\n                ##### Timer Complementary One Pulse functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n    (+) Start the Complementary One Pulse generation.\n    (+) Stop the Complementary One Pulse.\n    (+) Start the Complementary One Pulse and enable interrupts.\n    (+) Stop the Complementary One Pulse and disable interrupts.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Starts the TIM One Pulse signal generation on the complementary\n  *         output.\n  * @note OutputChannel must match the pulse output channel chosen when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel pulse output channel to enable\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1;\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\n\n  /* Check the TIM channels state */\n  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the complementary One Pulse output channel and the Input Capture channel */\n  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);\n  TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE);\n\n  /* Enable the Main Output */\n  __HAL_TIM_MOE_ENABLE(htim);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM One Pulse signal generation on the complementary\n  *         output.\n  * @note OutputChannel must match the pulse output channel chosen when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel pulse output channel to disable\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\n\n  /* Disable the complementary One Pulse output channel and the Input Capture channel */\n  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);\n  TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE);\n\n  /* Disable the Main Output */\n  __HAL_TIM_MOE_DISABLE(htim);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM  channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Starts the TIM One Pulse signal generation in interrupt mode on the\n  *         complementary channel.\n  * @note OutputChannel must match the pulse output channel chosen when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel pulse output channel to enable\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1;\n  HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1);\n  HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2);\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\n\n  /* Check the TIM channels state */\n  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)\n      || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))\n  {\n    return HAL_ERROR;\n  }\n\n  /* Set the TIM channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);\n\n  /* Enable the TIM Capture/Compare 1 interrupt */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\n\n  /* Enable the TIM Capture/Compare 2 interrupt */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\n\n  /* Enable the complementary One Pulse output channel and the Input Capture channel */\n  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);\n  TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE);\n\n  /* Enable the Main Output */\n  __HAL_TIM_MOE_ENABLE(htim);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @brief  Stops the TIM One Pulse signal generation in interrupt mode on the\n  *         complementary channel.\n  * @note OutputChannel must match the pulse output channel chosen when calling\n  *       @ref HAL_TIM_OnePulse_ConfigChannel().\n  * @param  htim TIM One Pulse handle\n  * @param  OutputChannel pulse output channel to disable\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected\n  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\n{\n  uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\n\n  /* Disable the TIM Capture/Compare 1 interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\n\n  /* Disable the TIM Capture/Compare 2 interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\n\n  /* Disable the complementary One Pulse output channel and the Input Capture channel */\n  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);\n  TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE);\n\n  /* Disable the Main Output */\n  __HAL_TIM_MOE_DISABLE(htim);\n\n  /* Disable the Peripheral */\n  __HAL_TIM_DISABLE(htim);\n\n  /* Set the TIM  channels state */\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n\n  /* Return function status */\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions\n  * @brief    Peripheral Control functions\n  *\n@verbatim\n  ==============================================================================\n                    ##### Peripheral Control functions #####\n  ==============================================================================\n  [..]\n    This section provides functions allowing to:\n      (+) Configure the commutation event in case of use of the Hall sensor interface.\n      (+) Configure Output channels for OC and PWM mode.\n\n      (+) Configure Complementary channels, break features and dead time.\n      (+) Configure Master synchronization.\n      (+) Configure timer remapping capabilities.\n      (+) Select timer input source.\n      (+) Enable or disable channel grouping.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Configure the TIM commutation event sequence.\n  * @note  This function is mandatory to use the commutation event in order to\n  *        update the configuration at each commutation detection on the TRGI input of the Timer,\n  *        the typical use of this feature is with the use of another Timer(interface Timer)\n  *        configured in Hall sensor interface, this interface Timer will generate the\n  *        commutation at its TRGO output (connected to Timer used in this function) each time\n  *        the TI1 of the Interface Timer detect a commutation at its input TI1.\n  * @param  htim TIM handle\n  * @param  InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor\n  *          This parameter can be one of the following values:\n  *            @arg TIM_TS_ITR0: Internal trigger 0 selected\n  *            @arg TIM_TS_ITR1: Internal trigger 1 selected\n  *            @arg TIM_TS_ITR2: Internal trigger 2 selected\n  *            @arg TIM_TS_ITR3: Internal trigger 3 selected\n  *            @arg TIM_TS_ITR12: Internal trigger 12 selected (*)\n  *            @arg TIM_TS_ITR13: Internal trigger 13 selected (*)\n  *            @arg TIM_TS_NONE: No trigger is needed\n  * @param  CommutationSource the Commutation Event source\n  *          This parameter can be one of the following values:\n  *            @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer\n  *            @arg TIM_COMMUTATION_SOFTWARE:  Commutation source is set by software using the COMG bit\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t  InputTrigger,\n                                              uint32_t  CommutationSource)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));\n\n  __HAL_LOCK(htim);\n\n  if ((InputTrigger == TIM_TS_ITR0)  || (InputTrigger == TIM_TS_ITR1) ||\n      (InputTrigger == TIM_TS_ITR2)  || (InputTrigger == TIM_TS_ITR3) ||\n      (InputTrigger == TIM_TS_ITR12)  || (InputTrigger == TIM_TS_ITR13))\n  {\n    /* Select the Input trigger */\n    htim->Instance->SMCR &= ~TIM_SMCR_TS;\n    htim->Instance->SMCR |= InputTrigger;\n  }\n\n  /* Select the Capture Compare preload feature */\n  htim->Instance->CR2 |= TIM_CR2_CCPC;\n  /* Select the Commutation event source */\n  htim->Instance->CR2 &= ~TIM_CR2_CCUS;\n  htim->Instance->CR2 |= CommutationSource;\n\n  /* Disable Commutation Interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM);\n\n  /* Disable Commutation DMA request */\n  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM);\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configure the TIM commutation event sequence with interrupt.\n  * @note  This function is mandatory to use the commutation event in order to\n  *        update the configuration at each commutation detection on the TRGI input of the Timer,\n  *        the typical use of this feature is with the use of another Timer(interface Timer)\n  *        configured in Hall sensor interface, this interface Timer will generate the\n  *        commutation at its TRGO output (connected to Timer used in this function) each time\n  *        the TI1 of the Interface Timer detect a commutation at its input TI1.\n  * @param  htim TIM handle\n  * @param  InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor\n  *          This parameter can be one of the following values:\n  *            @arg TIM_TS_ITR0: Internal trigger 0 selected\n  *            @arg TIM_TS_ITR1: Internal trigger 1 selected\n  *            @arg TIM_TS_ITR2: Internal trigger 2 selected\n  *            @arg TIM_TS_ITR3: Internal trigger 3 selected\n  *            @arg TIM_TS_ITR2: Internal trigger 12 selected (*)\n  *            @arg TIM_TS_ITR3: Internal trigger 13 selected (*)\n  *            @arg TIM_TS_NONE: No trigger is needed\n  * @param  CommutationSource the Commutation Event source\n  *          This parameter can be one of the following values:\n  *            @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer\n  *            @arg TIM_COMMUTATION_SOFTWARE:  Commutation source is set by software using the COMG bit\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t  InputTrigger,\n                                                 uint32_t  CommutationSource)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));\n\n  __HAL_LOCK(htim);\n\n  if ((InputTrigger == TIM_TS_ITR0)  || (InputTrigger == TIM_TS_ITR1) ||\n      (InputTrigger == TIM_TS_ITR2)  || (InputTrigger == TIM_TS_ITR3) ||\n      (InputTrigger == TIM_TS_ITR12)  || (InputTrigger == TIM_TS_ITR13))\n  {\n    /* Select the Input trigger */\n    htim->Instance->SMCR &= ~TIM_SMCR_TS;\n    htim->Instance->SMCR |= InputTrigger;\n  }\n\n  /* Select the Capture Compare preload feature */\n  htim->Instance->CR2 |= TIM_CR2_CCPC;\n  /* Select the Commutation event source */\n  htim->Instance->CR2 &= ~TIM_CR2_CCUS;\n  htim->Instance->CR2 |= CommutationSource;\n\n  /* Disable Commutation DMA request */\n  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM);\n\n  /* Enable the Commutation Interrupt */\n  __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM);\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configure the TIM commutation event sequence with DMA.\n  * @note  This function is mandatory to use the commutation event in order to\n  *        update the configuration at each commutation detection on the TRGI input of the Timer,\n  *        the typical use of this feature is with the use of another Timer(interface Timer)\n  *        configured in Hall sensor interface, this interface Timer will generate the\n  *        commutation at its TRGO output (connected to Timer used in this function) each time\n  *        the TI1 of the Interface Timer detect a commutation at its input TI1.\n  * @note  The user should configure the DMA in his own software, in This function only the COMDE bit is set\n  * @param  htim TIM handle\n  * @param  InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor\n  *          This parameter can be one of the following values:\n  *            @arg TIM_TS_ITR0: Internal trigger 0 selected\n  *            @arg TIM_TS_ITR1: Internal trigger 1 selected\n  *            @arg TIM_TS_ITR2: Internal trigger 2 selected\n  *            @arg TIM_TS_ITR3: Internal trigger 3 selected\n  *            @arg TIM_TS_ITR2: Internal trigger 12 selected (*)\n  *            @arg TIM_TS_ITR3: Internal trigger 13 selected (*)\n  *            @arg TIM_TS_NONE: No trigger is needed\n  *\n  *         (*)  Value not defined in all devices.\n  *\n  * @param  CommutationSource the Commutation Event source\n  *          This parameter can be one of the following values:\n  *            @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer\n  *            @arg TIM_COMMUTATION_SOFTWARE:  Commutation source is set by software using the COMG bit\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t  InputTrigger,\n                                                  uint32_t  CommutationSource)\n{\n  /* Check the parameters */\n  assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));\n\n  __HAL_LOCK(htim);\n\n  if ((InputTrigger == TIM_TS_ITR0)  || (InputTrigger == TIM_TS_ITR1) ||\n      (InputTrigger == TIM_TS_ITR2)  || (InputTrigger == TIM_TS_ITR3) ||\n      (InputTrigger == TIM_TS_ITR12)  || (InputTrigger == TIM_TS_ITR13))\n  {\n    /* Select the Input trigger */\n    htim->Instance->SMCR &= ~TIM_SMCR_TS;\n    htim->Instance->SMCR |= InputTrigger;\n  }\n\n  /* Select the Capture Compare preload feature */\n  htim->Instance->CR2 |= TIM_CR2_CCPC;\n  /* Select the Commutation event source */\n  htim->Instance->CR2 &= ~TIM_CR2_CCUS;\n  htim->Instance->CR2 |= CommutationSource;\n\n  /* Enable the Commutation DMA Request */\n  /* Set the DMA Commutation Callback */\n  htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt;\n  htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt;\n  /* Set the DMA error callback */\n  htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError;\n\n  /* Disable Commutation Interrupt */\n  __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM);\n\n  /* Enable the Commutation DMA Request */\n  __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM);\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configures the TIM in master mode.\n  * @param  htim TIM handle.\n  * @param  sMasterConfig pointer to a TIM_MasterConfigTypeDef structure that\n  *         contains the selected trigger output (TRGO) and the Master/Slave\n  *         mode.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,\n                                                        TIM_MasterConfigTypeDef *sMasterConfig)\n{\n  uint32_t tmpcr2;\n  uint32_t tmpsmcr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));\n  assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));\n\n  /* Check input state */\n  __HAL_LOCK(htim);\n\n  /* Change the handler state */\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Get the TIMx CR2 register value */\n  tmpcr2 = htim->Instance->CR2;\n\n  /* Get the TIMx SMCR register value */\n  tmpsmcr = htim->Instance->SMCR;\n\n  /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */\n  if (IS_TIM_TRGO2_INSTANCE(htim->Instance))\n  {\n    /* Check the parameters */\n    assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2));\n\n    /* Clear the MMS2 bits */\n    tmpcr2 &= ~TIM_CR2_MMS2;\n    /* Select the TRGO2 source*/\n    tmpcr2 |= sMasterConfig->MasterOutputTrigger2;\n  }\n\n  /* Reset the MMS Bits */\n  tmpcr2 &= ~TIM_CR2_MMS;\n  /* Select the TRGO source */\n  tmpcr2 |=  sMasterConfig->MasterOutputTrigger;\n\n  /* Update TIMx CR2 */\n  htim->Instance->CR2 = tmpcr2;\n\n  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))\n  {\n    /* Reset the MSM Bit */\n    tmpsmcr &= ~TIM_SMCR_MSM;\n    /* Set master mode */\n    tmpsmcr |= sMasterConfig->MasterSlaveMode;\n\n    /* Update TIMx SMCR */\n    htim->Instance->SMCR = tmpsmcr;\n  }\n\n  /* Change the htim state */\n  htim->State = HAL_TIM_STATE_READY;\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Configures the Break feature, dead time, Lock level, OSSI/OSSR State\n  *         and the AOE(automatic output enable).\n  * @param  htim TIM handle\n  * @param  sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that\n  *         contains the BDTR Register configuration  information for the TIM peripheral.\n  * @note   Interrupts can be generated when an active level is detected on the\n  *         break input, the break 2 input or the system break input. Break\n  *         interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,\n                                                TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig)\n{\n  /* Keep this variable initialized to 0 as it is used to configure BDTR register */\n  uint32_t tmpbdtr = 0U;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode));\n  assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode));\n  assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel));\n  assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime));\n  assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState));\n  assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity));\n  assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->BreakFilter));\n  assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput));\n\n  /* Check input state */\n  __HAL_LOCK(htim);\n\n  /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State,\n     the OSSI State, the dead time value and the Automatic Output Enable Bit */\n\n  /* Set the BDTR bits */\n  MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime);\n  MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel);\n  MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode);\n  MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode);\n  MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState);\n  MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity);\n  MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput);\n  MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos));\n\n#if defined(TIM_BDTR_BKBID)\n  if (IS_TIM_ADVANCED_INSTANCE(htim->Instance))\n  {\n    /* Check the parameters */\n    assert_param(IS_TIM_BREAK_AFMODE(sBreakDeadTimeConfig->BreakAFMode));\n\n    /* Set BREAK AF mode */\n    MODIFY_REG(tmpbdtr, TIM_BDTR_BKBID, sBreakDeadTimeConfig->BreakAFMode);\n  }\n\n#endif /* TIM_BDTR_BKBID */\n  if (IS_TIM_BKIN2_INSTANCE(htim->Instance))\n  {\n    /* Check the parameters */\n    assert_param(IS_TIM_BREAK2_STATE(sBreakDeadTimeConfig->Break2State));\n    assert_param(IS_TIM_BREAK2_POLARITY(sBreakDeadTimeConfig->Break2Polarity));\n    assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->Break2Filter));\n\n    /* Set the BREAK2 input related BDTR bits */\n    MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (sBreakDeadTimeConfig->Break2Filter << TIM_BDTR_BK2F_Pos));\n    MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State);\n    MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity);\n#if defined(TIM_BDTR_BKBID)\n\n    if (IS_TIM_ADVANCED_INSTANCE(htim->Instance))\n    {\n      /* Check the parameters */\n      assert_param(IS_TIM_BREAK2_AFMODE(sBreakDeadTimeConfig->Break2AFMode));\n\n      /* Set BREAK2 AF mode */\n      MODIFY_REG(tmpbdtr, TIM_BDTR_BK2BID, sBreakDeadTimeConfig->Break2AFMode);\n    }\n#endif /* TIM_BDTR_BKBID */\n  }\n\n  /* Set TIMx_BDTR */\n  htim->Instance->BDTR = tmpbdtr;\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n#if defined(TIM_BREAK_INPUT_SUPPORT)\n\n/**\n  * @brief  Configures the break input source.\n  * @param  htim TIM handle.\n  * @param  BreakInput Break input to configure\n  *          This parameter can be one of the following values:\n  *            @arg TIM_BREAKINPUT_BRK: Timer break input\n  *            @arg TIM_BREAKINPUT_BRK2: Timer break 2 input\n  * @param  sBreakInputConfig Break input source configuration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,\n                                             uint32_t BreakInput,\n                                             TIMEx_BreakInputConfigTypeDef *sBreakInputConfig)\n\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmporx;\n  uint32_t bkin_enable_mask;\n  uint32_t bkin_polarity_mask;\n  uint32_t bkin_enable_bitpos;\n  uint32_t bkin_polarity_bitpos;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_BREAKINPUT(BreakInput));\n  assert_param(IS_TIM_BREAKINPUTSOURCE(sBreakInputConfig->Source));\n  assert_param(IS_TIM_BREAKINPUTSOURCE_STATE(sBreakInputConfig->Enable));\n  if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)\n  {\n    assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity));\n  }\n\n  /* Check input state */\n  __HAL_LOCK(htim);\n\n  switch (sBreakInputConfig->Source)\n  {\n    case TIM_BREAKINPUTSOURCE_BKIN:\n    {\n      bkin_enable_mask = TIM1_AF1_BKINE;\n      bkin_enable_bitpos = TIM1_AF1_BKINE_Pos;\n      bkin_polarity_mask = TIM1_AF1_BKINP;\n      bkin_polarity_bitpos = TIM1_AF1_BKINP_Pos;\n      break;\n    }\n    case TIM_BREAKINPUTSOURCE_COMP1:\n    {\n      bkin_enable_mask = TIM1_AF1_BKCMP1E;\n      bkin_enable_bitpos = TIM1_AF1_BKCMP1E_Pos;\n      bkin_polarity_mask = TIM1_AF1_BKCMP1P;\n      bkin_polarity_bitpos = TIM1_AF1_BKCMP1P_Pos;\n      break;\n    }\n    case TIM_BREAKINPUTSOURCE_COMP2:\n    {\n      bkin_enable_mask = TIM1_AF1_BKCMP2E;\n      bkin_enable_bitpos = TIM1_AF1_BKCMP2E_Pos;\n      bkin_polarity_mask = TIM1_AF1_BKCMP2P;\n      bkin_polarity_bitpos = TIM1_AF1_BKCMP2P_Pos;\n      break;\n    }\n    case TIM_BREAKINPUTSOURCE_DFSDM1:\n    {\n      bkin_enable_mask = TIM1_AF1_BKDF1BK0E;\n      bkin_enable_bitpos = TIM1_AF1_BKDF1BK0E_Pos;\n      bkin_polarity_mask = 0U;\n      bkin_polarity_bitpos = 0U;\n      break;\n    }\n\n    default:\n    {\n      bkin_enable_mask = 0U;\n      bkin_polarity_mask = 0U;\n      bkin_enable_bitpos = 0U;\n      bkin_polarity_bitpos = 0U;\n      break;\n    }\n  }\n\n  switch (BreakInput)\n  {\n    case TIM_BREAKINPUT_BRK:\n    {\n      /* Get the TIMx_AF1 register value */\n      tmporx = htim->Instance->AF1;\n\n      /* Enable the break input */\n      tmporx &= ~bkin_enable_mask;\n      tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask;\n\n      /* Set the break input polarity */\n      if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)\n      {\n        tmporx &= ~bkin_polarity_mask;\n        tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;\n      }\n\n      /* Set TIMx_AF1 */\n      htim->Instance->AF1 = tmporx;\n      break;\n    }\n    case TIM_BREAKINPUT_BRK2:\n    {\n      /* Get the TIMx_AF2 register value */\n      tmporx = htim->Instance->AF2;\n\n      /* Enable the break input */\n      tmporx &= ~bkin_enable_mask;\n      tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask;\n\n      /* Set the break input polarity */\n      if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)\n      {\n        tmporx &= ~bkin_polarity_mask;\n        tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;\n      }\n\n      /* Set TIMx_AF2 */\n      htim->Instance->AF2 = tmporx;\n      break;\n    }\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n#endif /*TIM_BREAK_INPUT_SUPPORT */\n\n/**\n  * @brief  Configures the TIMx Remapping input capabilities.\n  * @param  htim TIM handle.\n  * @param  Remap specifies the TIM remapping source.\n  *         For TIM1, the parameter is one of the following values:\n  *            @arg TIM_TIM1_ETR_GPIO:               TIM1_ETR is connected to GPIO\n  *            @arg TIM_TIM1_ETR_COMP1:              TIM1_ETR is connected to COMP1 output\n  *            @arg TIM_TIM1_ETR_COMP2:              TIM1_ETR is connected to COMP2 output\n  *            @arg TIM_TIM1_ETR_ADC1_AWD1:          TIM1_ETR is connected to ADC1 AWD1\n  *            @arg TIM_TIM1_ETR_ADC1_AWD2:          TIM1_ETR is connected to ADC1 AWD2\n  *            @arg TIM_TIM1_ETR_ADC1_AWD3:          TIM1_ETR is connected to ADC1 AWD3\n  *            @arg TIM_TIM1_ETR_ADC3_AWD1:          TIM1_ETR is connected to ADC3 AWD1\n  *            @arg TIM_TIM1_ETR_ADC3_AWD2:          TIM1_ETR is connected to ADC3 AWD2\n  *            @arg TIM_TIM1_ETR_ADC3_AWD3:          TIM1_ETR is connected to ADC3 AWD3\n  *\n  *         For TIM2, the parameter is one of the following values:\n  *            @arg TIM_TIM2_ETR_GPIO:               TIM2_ETR is connected to GPIO\n  *            @arg TIM_TIM2_ETR_COMP1:              TIM2_ETR is connected to COMP1 output\n  *            @arg TIM_TIM2_ETR_COMP2:              TIM2_ETR is connected to COMP2 output\n  *            @arg TIM_TIM2_ETR_LSE:                TIM2_ETR is connected to LSE\n  *            @arg TIM_TIM2_ETR_SAI1_FSA:           TIM2_ETR is connected to SAI1 FS_A\n  *            @arg TIM_TIM2_ETR_SAI1_FSB:           TIM2_ETR is connected to SAI1 FS_B\n  *\n  *         For TIM3, the parameter is one of the following values:\n  *            @arg TIM_TIM3_ETR_GPIO:               TIM3_ETR is connected to GPIO\n  *            @arg TIM_TIM3_ETR_COMP1:              TIM3_ETR is connected to COMP1 output\n  *\n  *         For TIM5, the parameter is one of the following values:\n  *            @arg TIM_TIM5_ETR_GPIO:               TIM5_ETR is connected to GPIO\n  *            @arg TIM_TIM5_ETR_SAI2_FSA:           TIM5_ETR is connected to SAI2 FS_A (*)\n  *            @arg TIM_TIM5_ETR_SAI2_FSB:           TIM5_ETR is connected to SAI2 FS_B (*)\n  *            @arg TIM_TIM5_ETR_SAI4_FSA:           TIM5_ETR is connected to SAI2 FS_A (*)\n  *            @arg TIM_TIM5_ETR_SAI4_FSB:           TIM5_ETR is connected to SAI2 FS_B (*)\n  *\n  *         For TIM8, the parameter is one of the following values:\n  *            @arg TIM_TIM8_ETR_GPIO:               TIM8_ETR is connected to GPIO\n  *            @arg TIM_TIM8_ETR_COMP1:              TIM8_ETR is connected to COMP1 output\n  *            @arg TIM_TIM8_ETR_COMP2:              TIM8_ETR is connected to COMP2 output\n  *            @arg TIM_TIM8_ETR_ADC2_AWD1:          TIM8_ETR is connected to ADC2 AWD1\n  *            @arg TIM_TIM8_ETR_ADC2_AWD2:          TIM8_ETR is connected to ADC2 AWD2\n  *            @arg TIM_TIM8_ETR_ADC2_AWD3:          TIM8_ETR is connected to ADC2 AWD3\n  *            @arg TIM_TIM8_ETR_ADC3_AWD1:          TIM8_ETR is connected to ADC3 AWD1\n  *            @arg TIM_TIM8_ETR_ADC3_AWD2:          TIM8_ETR is connected to ADC3 AWD2\n  *            @arg TIM_TIM8_ETR_ADC3_AWD3:          TIM8_ETR is connected to ADC3 AWD3\n  *\n  *         For TIM23, the parameter is one of the following values: (*)\n  *            @arg TIM_TIM23_ETR_GPIO               TIM23_ETR is connected to GPIO\n  *            @arg TIM_TIM23_ETR_COMP1              TIM23_ETR is connected to COMP1 output\n  *            @arg TIM_TIM23_ETR_COMP2              TIM23_ETR is connected to COMP2 output\n  *\n  *         For TIM24, the parameter is one of the following values: (*)\n  *           @arg TIM_TIM24_ETR_GPIO                TIM24_ETR is connected to GPIO\n  *           @arg TIM_TIM24_ETR_SAI4_FSA            TIM24_ETR is connected to SAI4 FS_A\n  *           @arg TIM_TIM24_ETR_SAI4_FSB            TIM24_ETR is connected to SAI4 FS_B\n  *           @arg TIM_TIM24_ETR_SAI1_FSA            TIM24_ETR is connected to SAI1 FS_A\n  *           @arg TIM_TIM24_ETR_SAI1_FSB            TIM24_ETR is connected to SAI1 FS_B\n  *\n  *         (*)  Value not defined in all devices.\n  *\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)\n{\n  /* Check parameters */\n  assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_REMAP(Remap));\n\n  __HAL_LOCK(htim);\n\n  MODIFY_REG(htim->Instance->AF1, TIM1_AF1_ETRSEL_Msk, Remap);\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Select the timer input source\n  * @param  htim TIM handle.\n  * @param  Channel specifies the TIM Channel\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TI1 input channel\n  *            @arg TIM_CHANNEL_2: TI2 input channel\n  *            @arg TIM_CHANNEL_3: TIM Channel 3\n  *            @arg TIM_CHANNEL_4: TIM Channel 4\n  * @param  TISelection parameter of the TIM_TISelectionStruct structure is detailed as follows:\n  *         For TIM1, the parameter is one of the following values:\n  *            @arg TIM_TIM1_TI1_GPIO:                TIM1 TI1 is connected to GPIO\n  *            @arg TIM_TIM1_TI1_COMP1:               TIM1 TI1 is connected to COMP1 output\n  *\n  *         For TIM2, the parameter is one of the following values:\n  *            @arg TIM_TIM2_TI4_GPIO:                TIM2 TI4 is connected to GPIO\n  *            @arg TIM_TIM2_TI4_COMP1:               TIM2 TI4 is connected to COMP1 output\n  *            @arg TIM_TIM2_TI4_COMP2:               TIM2 TI4 is connected to COMP2 output\n  *            @arg TIM_TIM2_TI4_COMP1_COMP2:         TIM2 TI4 is connected to logical OR between COMP1 and COMP2 output\n  *\n  *         For TIM3, the parameter is one of the following values:\n  *            @arg TIM_TIM3_TI1_GPIO:                TIM3 TI1 is connected to GPIO\n  *            @arg TIM_TIM3_TI1_COMP1:               TIM3 TI1 is connected to COMP1 output\n  *            @arg TIM_TIM3_TI1_COMP2:               TIM3 TI1 is connected to COMP2 output\n  *            @arg TIM_TIM3_TI1_COMP1_COMP2:         TIM3 TI1 is connected to logical OR between COMP1 and COMP2 output\n  *\n  *         For TIM5, the parameter is one of the following values:\n  *            @arg TIM_TIM5_TI1_GPIO:                TIM5 TI1 is connected to GPIO\n  *            @arg TIM_TIM5_TI1_CAN_TMP:             TIM5 TI1 is connected to CAN TMP\n  *            @arg TIM_TIM5_TI1_CAN_RTP:             TIM5 TI1 is connected to CAN RTP\n  *\n  *         For TIM8, the parameter is one of the following values:\n  *            @arg TIM_TIM8_TI1_GPIO:               TIM8 TI1 is connected to GPIO\n  *            @arg TIM_TIM8_TI1_COMP2:              TIM8 TI1 is connected to COMP2 output\n  *\n  *         For TIM12, the parameter can have the following values: (*)\n  *            @arg TIM_TIM12_TI1_GPIO:              TIM12 TI1 is connected to GPIO\n  *            @arg TIM_TIM12_TI1_SPDIF_FS:          TIM12 TI1 is connected to SPDIF FS\n  *\n  *         For TIM15, the parameter is one of the following values:\n  *            @arg TIM_TIM15_TI1_GPIO:              TIM15 TI1 is connected to GPIO\n  *            @arg TIM_TIM15_TI1_TIM2:              TIM15 TI1 is connected to TIM2 CH1\n  *            @arg TIM_TIM15_TI1_TIM3:              TIM15 TI1 is connected to TIM3 CH1\n  *            @arg TIM_TIM15_TI1_TIM4:              TIM15 TI1 is connected to TIM4 CH1\n  *            @arg TIM_TIM15_TI1_LSE:               TIM15 TI1 is connected to LSE\n  *            @arg TIM_TIM15_TI1_CSI:               TIM15 TI1 is connected to CSI\n  *            @arg TIM_TIM15_TI1_MCO2:              TIM15 TI1 is connected to MCO2\n  *            @arg TIM_TIM15_TI2_GPIO:              TIM15 TI2 is connected to GPIO\n  *            @arg TIM_TIM15_TI2_TIM2:              TIM15 TI2 is connected to TIM2 CH2\n  *            @arg TIM_TIM15_TI2_TIM3:              TIM15 TI2 is connected to TIM3 CH2\n  *            @arg TIM_TIM15_TI2_TIM4:              TIM15 TI2 is connected to TIM4 CH2\n  *\n  *         For TIM16, the parameter can have the following values:\n  *            @arg TIM_TIM16_TI1_GPIO:              TIM16 TI1 is connected to GPIO\n  *            @arg TIM_TIM16_TI1_LSI:               TIM16 TI1 is connected to LSI\n  *            @arg TIM_TIM16_TI1_LSE:               TIM16 TI1 is connected to LSE\n  *            @arg TIM_TIM16_TI1_RTC:               TIM16 TI1 is connected to RTC wakeup interrupt\n  *\n  *         For TIM17, the parameter can have the following values:\n  *            @arg TIM_TIM17_TI1_GPIO:              TIM17 TI1 is connected to GPIO\n  *            @arg TIM_TIM17_TI1_SPDIF_FS:          TIM17 TI1 is connected to SPDIF FS (*)\n  *            @arg TIM_TIM17_TI1_HSE_1MHZ:          TIM17 TI1 is connected to HSE 1MHz\n  *            @arg TIM_TIM17_TI1_MCO1:              TIM17 TI1 is connected to MCO1\n  *\n  *         For TIM23, the parameter can have the following values: (*)\n  *            @arg TIM_TIM23_TI4_GPIO               TIM23_TI4 is connected to GPIO\n  *            @arg TIM_TIM23_TI4_COMP1              TIM23_TI4 is connected to COMP1 output\n  *            @arg TIM_TIM23_TI4_COMP2              TIM23_TI4 is connected to COMP2 output\n  *            @arg TIM_TIM23_TI4_COMP1_COMP2        TIM23_TI4 is connected to COMP2 output\n  *\n  *         For TIM24, the parameter can have the following values: (*)\n  *            @arg TIM_TIM24_TI1_GPIO               TIM24_TI1 is connected to GPIO\n  *            @arg TIM_TIM24_TI1_CAN_TMP            TIM24_TI1 is connected to CAN_TMP\n  *            @arg TIM_TIM24_TI1_CAN_RTP            TIM24_TI1 is connected to CAN_RTP\n  *            @arg TIM_TIM24_TI1_CAN_SOC            TIM24_TI1 is connected to CAN_SOC\n  *\n  *         (*)  Value not defined in all devices. \\n\n  * @retval HAL status\n  */\nHAL_StatusTypeDef  HAL_TIMEx_TISelection(TIM_HandleTypeDef *htim, uint32_t TISelection, uint32_t Channel)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Check parameters */\n  assert_param(IS_TIM_TISEL_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_TISEL(TISelection));\n\n  __HAL_LOCK(htim);\n\n  switch (Channel)\n  {\n    case TIM_CHANNEL_1:\n      MODIFY_REG(htim->Instance->TISEL, TIM_TISEL_TI1SEL, TISelection);\n      break;\n    case TIM_CHANNEL_2:\n      MODIFY_REG(htim->Instance->TISEL, TIM_TISEL_TI2SEL, TISelection);\n      break;\n    case TIM_CHANNEL_3:\n      MODIFY_REG(htim->Instance->TISEL, TIM_TISEL_TI3SEL, TISelection);\n      break;\n    case TIM_CHANNEL_4:\n      MODIFY_REG(htim->Instance->TISEL, TIM_TISEL_TI4SEL, TISelection);\n      break;\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  __HAL_UNLOCK(htim);\n\n  return status;\n}\n\n/**\n  * @brief  Group channel 5 and channel 1, 2 or 3\n  * @param  htim TIM handle.\n  * @param  Channels specifies the reference signal(s) the OC5REF is combined with.\n  *         This parameter can be any combination of the following values:\n  *         TIM_GROUPCH5_NONE: No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC\n  *         TIM_GROUPCH5_OC1REFC: OC1REFC is the logical AND of OC1REFC and OC5REF\n  *         TIM_GROUPCH5_OC2REFC: OC2REFC is the logical AND of OC2REFC and OC5REF\n  *         TIM_GROUPCH5_OC3REFC: OC3REFC is the logical AND of OC3REFC and OC5REF\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels)\n{\n  /* Check parameters */\n  assert_param(IS_TIM_COMBINED3PHASEPWM_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_GROUPCH5(Channels));\n\n  /* Process Locked */\n  __HAL_LOCK(htim);\n\n  htim->State = HAL_TIM_STATE_BUSY;\n\n  /* Clear GC5Cx bit fields */\n  htim->Instance->CCR5 &= ~(TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1);\n\n  /* Set GC5Cx bit fields */\n  htim->Instance->CCR5 |= Channels;\n\n  /* Change the htim state */\n  htim->State = HAL_TIM_STATE_READY;\n\n  __HAL_UNLOCK(htim);\n\n  return HAL_OK;\n}\n#if defined(TIM_BDTR_BKBID)\n\n/**\n  * @brief  Disarm the designated break input (when it operates in bidirectional mode).\n  * @param  htim TIM handle.\n  * @param  BreakInput Break input to disarm\n  *          This parameter can be one of the following values:\n  *            @arg TIM_BREAKINPUT_BRK: Timer break input\n  *            @arg TIM_BREAKINPUT_BRK2: Timer break 2 input\n  * @note  The break input can be disarmed only when it is configured in\n  *        bidirectional mode and when when MOE is reset.\n  * @note  Purpose is to be able to have the input voltage back to high-state,\n  *        whatever the time constant on the output .\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_DisarmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tmpbdtr;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_ADVANCED_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_BREAKINPUT(BreakInput));\n\n  switch (BreakInput)\n  {\n    case TIM_BREAKINPUT_BRK:\n    {\n      /* Check initial conditions */\n      tmpbdtr = READ_REG(htim->Instance->BDTR);\n      if ((READ_BIT(tmpbdtr, TIM_BDTR_BKBID) == TIM_BDTR_BKBID) &&\n          (READ_BIT(tmpbdtr, TIM_BDTR_MOE) == 0U))\n      {\n        /* Break input BRK is disarmed */\n        SET_BIT(htim->Instance->BDTR, TIM_BDTR_BKDSRM);\n      }\n      break;\n    }\n\n    case TIM_BREAKINPUT_BRK2:\n    {\n      /* Check initial conditions */\n      tmpbdtr = READ_REG(htim->Instance->BDTR);\n      if ((READ_BIT(tmpbdtr, TIM_BDTR_BK2BID) == TIM_BDTR_BK2BID) &&\n          (READ_BIT(tmpbdtr, TIM_BDTR_MOE) == 0U))\n      {\n        /* Break input BRK is disarmed */\n        SET_BIT(htim->Instance->BDTR, TIM_BDTR_BK2DSRM);\n      }\n      break;\n    }\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  return status;\n}\n\n/**\n  * @brief  Arm the designated break input (when it operates in bidirectional mode).\n  * @param  htim TIM handle.\n  * @param  BreakInput Break input to arm\n  *          This parameter can be one of the following values:\n  *            @arg TIM_BREAKINPUT_BRK: Timer break input\n  *            @arg TIM_BREAKINPUT_BRK2: Timer break 2 input\n  * @note  Arming is possible at anytime, even if fault is present.\n  * @note  Break input is automatically armed as soon as MOE bit is set.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_TIMEx_ReArmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tickstart;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_ADVANCED_INSTANCE(htim->Instance));\n  assert_param(IS_TIM_BREAKINPUT(BreakInput));\n\n  switch (BreakInput)\n  {\n    case TIM_BREAKINPUT_BRK:\n    {\n      /* Check initial conditions */\n      if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BKBID) == TIM_BDTR_BKBID)\n      {\n        /* Break input BRK is re-armed automatically by hardware. Poll to check whether fault condition disappeared */\n        /* Init tickstart for timeout management */\n        tickstart = HAL_GetTick();\n        while (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BKDSRM) != 0UL)\n        {\n          if ((HAL_GetTick() - tickstart) > TIM_BREAKINPUT_REARM_TIMEOUT)\n          {\n            /* New check to avoid false timeout detection in case of preemption */\n            if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BKDSRM) != 0UL)\n            {\n              return HAL_TIMEOUT;\n            }\n          }\n        }\n      }\n      break;\n    }\n\n    case TIM_BREAKINPUT_BRK2:\n    {\n      /* Check initial conditions */\n      if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BK2BID) == TIM_BDTR_BK2BID)\n      {\n        /* Break input BRK2 is re-armed automatically by hardware. Poll to check whether fault condition disappeared */\n        /* Init tickstart for timeout management */\n        tickstart = HAL_GetTick();\n        while (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BK2DSRM) != 0UL)\n        {\n          if ((HAL_GetTick() - tickstart) > TIM_BREAKINPUT_REARM_TIMEOUT)\n          {\n            /* New check to avoid false timeout detection in case of preemption */\n            if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BK2DSRM) != 0UL)\n            {\n              return HAL_TIMEOUT;\n            }\n          }\n        }\n      }\n      break;\n    }\n    default:\n      status = HAL_ERROR;\n      break;\n  }\n\n  return status;\n}\n#endif /* TIM_BDTR_BKBID */\n\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions\n  * @brief    Extended Callbacks functions\n  *\n@verbatim\n  ==============================================================================\n                    ##### Extended Callbacks functions #####\n  ==============================================================================\n  [..]\n    This section provides Extended TIM callback functions:\n    (+) Timer Commutation callback\n    (+) Timer Break callback\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Hall commutation changed callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIMEx_CommutCallback could be implemented in the user file\n   */\n}\n/**\n  * @brief  Hall commutation changed half complete callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIMEx_CommutHalfCpltCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Hall Break detection callback in non-blocking mode\n  * @param  htim TIM handle\n  * @retval None\n  */\n__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_TIMEx_BreakCallback could be implemented in the user file\n   */\n}\n\n/**\n  * @brief  Hall Break2 detection callback in non blocking mode\n  * @param  htim: TIM handle\n  * @retval None\n  */\n__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(htim);\n\n  /* NOTE : This function Should not be modified, when the callback is needed,\n            the HAL_TIMEx_Break2Callback could be implemented in the user file\n   */\n}\n/**\n  * @}\n  */\n\n/** @defgroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions\n  * @brief    Extended Peripheral State functions\n  *\n@verbatim\n  ==============================================================================\n                ##### Extended Peripheral State functions #####\n  ==============================================================================\n  [..]\n    This subsection permits to get in run-time the status of the peripheral\n    and the data flow.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Return the TIM Hall Sensor interface handle state.\n  * @param  htim TIM Hall Sensor handle\n  * @retval HAL state\n  */\nHAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)\n{\n  return htim->State;\n}\n\n/**\n  * @brief  Return actual state of the TIM complementary channel.\n  * @param  htim TIM handle\n  * @param  ChannelN TIM Complementary channel\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1\n  *            @arg TIM_CHANNEL_2: TIM Channel 2\n  *            @arg TIM_CHANNEL_3: TIM Channel 3\n  * @retval TIM Complementary channel state\n  */\nHAL_TIM_ChannelStateTypeDef HAL_TIMEx_GetChannelNState(TIM_HandleTypeDef *htim,  uint32_t ChannelN)\n{\n  HAL_TIM_ChannelStateTypeDef channel_state;\n\n  /* Check the parameters */\n  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, ChannelN));\n\n  channel_state = TIM_CHANNEL_N_STATE_GET(htim, ChannelN);\n\n  return channel_state;\n}\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/* Private functions ---------------------------------------------------------*/\n/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions\n  * @{\n  */\n\n/**\n  * @brief  TIM DMA Commutation callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nvoid TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  /* Change the htim state */\n  htim->State = HAL_TIM_STATE_READY;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->CommutationCallback(htim);\n#else\n  HAL_TIMEx_CommutCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  TIM DMA Commutation half complete callback.\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nvoid TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  /* Change the htim state */\n  htim->State = HAL_TIM_STATE_READY;\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->CommutationHalfCpltCallback(htim);\n#else\n  HAL_TIMEx_CommutHalfCpltCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n}\n\n\n/**\n  * @brief  TIM DMA Delay Pulse complete callback (complementary channel).\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nstatic void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (hdma == htim->hdma[TIM_DMA_ID_CC1])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\n\n    if (hdma->Init.Mode == DMA_NORMAL)\n    {\n      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY);\n    }\n  }\n  else\n  {\n    /* nothing to do */\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->PWM_PulseFinishedCallback(htim);\n#else\n  HAL_TIM_PWM_PulseFinishedCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n}\n\n/**\n  * @brief  TIM DMA error callback (complementary channel)\n  * @param  hdma pointer to DMA handle.\n  * @retval None\n  */\nstatic void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma)\n{\n  TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  if (hdma == htim->hdma[TIM_DMA_ID_CC1])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\n  {\n    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\n    TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY);\n  }\n  else\n  {\n    /* nothing to do */\n  }\n\n#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\n  htim->ErrorCallback(htim);\n#else\n  HAL_TIM_ErrorCallback(htim);\n#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\n\n  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\n}\n\n/**\n  * @brief  Enables or disables the TIM Capture Compare Channel xN.\n  * @param  TIMx to select the TIM peripheral\n  * @param  Channel specifies the TIM Channel\n  *          This parameter can be one of the following values:\n  *            @arg TIM_CHANNEL_1: TIM Channel 1\n  *            @arg TIM_CHANNEL_2: TIM Channel 2\n  *            @arg TIM_CHANNEL_3: TIM Channel 3\n  * @param  ChannelNState specifies the TIM Channel CCxNE bit new state.\n  *          This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable.\n  * @retval None\n  */\nstatic void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState)\n{\n  uint32_t tmp;\n\n  tmp = TIM_CCER_CC1NE << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */\n\n  /* Reset the CCxNE Bit */\n  TIMx->CCER &=  ~tmp;\n\n  /* Set or reset the CCxNE Bit */\n  TIMx->CCER |= (uint32_t)(ChannelNState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */\n}\n/**\n  * @}\n  */\n\n#endif /* HAL_TIM_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_uart.c\n  * @author  MCD Application Team\n  * @brief   UART HAL module driver.\n  *          This file provides firmware functions to manage the following\n  *          functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART).\n  *           + Initialization and de-initialization functions\n  *           + IO operation functions\n  *           + Peripheral Control functions\n  *\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n ===============================================================================\n                        ##### How to use this driver #####\n ===============================================================================\n  [..]\n    The UART HAL driver can be used as follows:\n\n    (#) Declare a UART_HandleTypeDef handle structure (eg. UART_HandleTypeDef huart).\n    (#) Initialize the UART low level resources by implementing the HAL_UART_MspInit() API:\n        (++) Enable the USARTx interface clock.\n        (++) UART pins configuration:\n            (+++) Enable the clock for the UART GPIOs.\n            (+++) Configure these UART pins as alternate function pull-up.\n        (++) NVIC configuration if you need to use interrupt process (HAL_UART_Transmit_IT()\n             and HAL_UART_Receive_IT() APIs):\n            (+++) Configure the USARTx interrupt priority.\n            (+++) Enable the NVIC USART IRQ handle.\n        (++) UART interrupts handling:\n              -@@-  The specific UART interrupts (Transmission complete interrupt,\n                RXNE interrupt, RX/TX FIFOs related interrupts and Error Interrupts)\n                are managed using the macros __HAL_UART_ENABLE_IT() and __HAL_UART_DISABLE_IT()\n                inside the transmit and receive processes.\n        (++) DMA Configuration if you need to use DMA process (HAL_UART_Transmit_DMA()\n             and HAL_UART_Receive_DMA() APIs):\n            (+++) Declare a DMA handle structure for the Tx/Rx channel.\n            (+++) Enable the DMAx interface clock.\n            (+++) Configure the declared DMA handle structure with the required Tx/Rx parameters.\n            (+++) Configure the DMA Tx/Rx channel.\n            (+++) Associate the initialized DMA handle to the UART DMA Tx/Rx handle.\n            (+++) Configure the priority and enable the NVIC for the transfer complete\n                  interrupt on the DMA Tx/Rx channel.\n\n    (#) Program the Baud Rate, Word Length, Stop Bit, Parity, Prescaler value , Hardware\n        flow control and Mode (Receiver/Transmitter) in the huart handle Init structure.\n\n    (#) If required, program UART advanced features (TX/RX pins swap, auto Baud rate detection,...)\n        in the huart handle AdvancedInit structure.\n\n    (#) For the UART asynchronous mode, initialize the UART registers by calling\n        the HAL_UART_Init() API.\n\n    (#) For the UART Half duplex mode, initialize the UART registers by calling\n        the HAL_HalfDuplex_Init() API.\n\n    (#) For the UART LIN (Local Interconnection Network) mode, initialize the UART registers\n        by calling the HAL_LIN_Init() API.\n\n    (#) For the UART Multiprocessor mode, initialize the UART registers\n        by calling the HAL_MultiProcessor_Init() API.\n\n    (#) For the UART RS485 Driver Enabled mode, initialize the UART registers\n        by calling the HAL_RS485Ex_Init() API.\n\n    [..]\n    (@) These API's (HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init(), HAL_MultiProcessor_Init(),\n        also configure the low level Hardware GPIO, CLOCK, CORTEX...etc) by\n        calling the customized HAL_UART_MspInit() API.\n\n    ##### Callback registration #####\n    ==================================\n\n    [..]\n    The compilation define USE_HAL_UART_REGISTER_CALLBACKS when set to 1\n    allows the user to configure dynamically the driver callbacks.\n\n    [..]\n    Use Function HAL_UART_RegisterCallback() to register a user callback.\n    Function HAL_UART_RegisterCallback() allows to register following callbacks:\n    (+) TxHalfCpltCallback        : Tx Half Complete Callback.\n    (+) TxCpltCallback            : Tx Complete Callback.\n    (+) RxHalfCpltCallback        : Rx Half Complete Callback.\n    (+) RxCpltCallback            : Rx Complete Callback.\n    (+) ErrorCallback             : Error Callback.\n    (+) AbortCpltCallback         : Abort Complete Callback.\n    (+) AbortTransmitCpltCallback : Abort Transmit Complete Callback.\n    (+) AbortReceiveCpltCallback  : Abort Receive Complete Callback.\n    (+) WakeupCallback            : Wakeup Callback.\n    (+) RxFifoFullCallback        : Rx Fifo Full Callback.\n    (+) TxFifoEmptyCallback       : Tx Fifo Empty Callback.\n    (+) MspInitCallback           : UART MspInit.\n    (+) MspDeInitCallback         : UART MspDeInit.\n    This function takes as parameters the HAL peripheral handle, the Callback ID\n    and a pointer to the user callback function.\n\n    [..]\n    Use function HAL_UART_UnRegisterCallback() to reset a callback to the default\n    weak (surcharged) function.\n    HAL_UART_UnRegisterCallback() takes as parameters the HAL peripheral handle,\n    and the Callback ID.\n    This function allows to reset following callbacks:\n    (+) TxHalfCpltCallback        : Tx Half Complete Callback.\n    (+) TxCpltCallback            : Tx Complete Callback.\n    (+) RxHalfCpltCallback        : Rx Half Complete Callback.\n    (+) RxCpltCallback            : Rx Complete Callback.\n    (+) ErrorCallback             : Error Callback.\n    (+) AbortCpltCallback         : Abort Complete Callback.\n    (+) AbortTransmitCpltCallback : Abort Transmit Complete Callback.\n    (+) AbortReceiveCpltCallback  : Abort Receive Complete Callback.\n    (+) WakeupCallback            : Wakeup Callback.\n    (+) RxFifoFullCallback        : Rx Fifo Full Callback.\n    (+) TxFifoEmptyCallback       : Tx Fifo Empty Callback.\n    (+) MspInitCallback           : UART MspInit.\n    (+) MspDeInitCallback         : UART MspDeInit.\n\n    [..]\n    For specific callback RxEventCallback, use dedicated registration/reset functions:\n    respectively HAL_UART_RegisterRxEventCallback() , HAL_UART_UnRegisterRxEventCallback().\n\n    [..]\n    By default, after the HAL_UART_Init() and when the state is HAL_UART_STATE_RESET\n    all callbacks are set to the corresponding weak (surcharged) functions:\n    examples HAL_UART_TxCpltCallback(), HAL_UART_RxHalfCpltCallback().\n    Exception done for MspInit and MspDeInit functions that are respectively\n    reset to the legacy weak (surcharged) functions in the HAL_UART_Init()\n    and HAL_UART_DeInit() only when these callbacks are null (not registered beforehand).\n    If not, MspInit or MspDeInit are not null, the HAL_UART_Init() and HAL_UART_DeInit()\n    keep and use the user MspInit/MspDeInit callbacks (registered beforehand).\n\n    [..]\n    Callbacks can be registered/unregistered in HAL_UART_STATE_READY state only.\n    Exception done MspInit/MspDeInit that can be registered/unregistered\n    in HAL_UART_STATE_READY or HAL_UART_STATE_RESET state, thus registered (user)\n    MspInit/DeInit callbacks can be used during the Init/DeInit.\n    In that case first register the MspInit/MspDeInit user callbacks\n    using HAL_UART_RegisterCallback() before calling HAL_UART_DeInit()\n    or HAL_UART_Init() function.\n\n    [..]\n    When The compilation define USE_HAL_UART_REGISTER_CALLBACKS is set to 0 or\n    not defined, the callback registration feature is not available\n    and weak (surcharged) callbacks are used.\n\n\n  @endverbatim\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup UART UART\n  * @brief HAL UART module driver\n  * @{\n  */\n\n#ifdef HAL_UART_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/** @defgroup UART_Private_Constants UART Private Constants\n  * @{\n  */\n#define USART_CR1_FIELDS  ((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | \\\n                                      USART_CR1_OVER8 | USART_CR1_FIFOEN)) /*!< UART or USART CR1 fields of parameters set by UART_SetConfig API */\n\n#define USART_CR3_FIELDS  ((uint32_t)(USART_CR3_RTSE | USART_CR3_CTSE | USART_CR3_ONEBIT | USART_CR3_TXFTCFG | \\\n                                      USART_CR3_RXFTCFG)) /*!< UART or USART CR3 fields of parameters set by UART_SetConfig API */\n\n#define LPUART_BRR_MIN  0x00000300U  /* LPUART BRR minimum authorized value */\n#define LPUART_BRR_MAX  0x000FFFFFU  /* LPUART BRR maximum authorized value */\n\n#define UART_BRR_MIN    0x10U        /* UART BRR minimum authorized value */\n#define UART_BRR_MAX    0x0000FFFFU  /* UART BRR maximum authorized value */\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/** @addtogroup UART_Private_Functions\n  * @{\n  */\nstatic void UART_EndTxTransfer(UART_HandleTypeDef *huart);\nstatic void UART_EndRxTransfer(UART_HandleTypeDef *huart);\nstatic void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma);\nstatic void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma);\nstatic void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma);\nstatic void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma);\nstatic void UART_DMAError(DMA_HandleTypeDef *hdma);\nstatic void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma);\nstatic void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma);\nstatic void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma);\nstatic void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma);\nstatic void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma);\nstatic void UART_TxISR_8BIT(UART_HandleTypeDef *huart);\nstatic void UART_TxISR_16BIT(UART_HandleTypeDef *huart);\nstatic void UART_TxISR_8BIT_FIFOEN(UART_HandleTypeDef *huart);\nstatic void UART_TxISR_16BIT_FIFOEN(UART_HandleTypeDef *huart);\nstatic void UART_EndTransmit_IT(UART_HandleTypeDef *huart);\nstatic void UART_RxISR_8BIT(UART_HandleTypeDef *huart);\nstatic void UART_RxISR_16BIT(UART_HandleTypeDef *huart);\nstatic void UART_RxISR_8BIT_FIFOEN(UART_HandleTypeDef *huart);\nstatic void UART_RxISR_16BIT_FIFOEN(UART_HandleTypeDef *huart);\n/**\n  * @}\n  */\n\n/* Private variables ---------------------------------------------------------*/\n/** @addtogroup UART_Private_variables\n  * @{\n  */\nconst uint16_t UARTPrescTable[12] = {1U, 2U, 4U, 6U, 8U, 10U, 12U, 16U, 32U, 64U, 128U, 256U};\n/**\n  * @}\n  */\n\n/* Exported Constants --------------------------------------------------------*/\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup UART_Exported_Functions UART Exported Functions\n  * @{\n  */\n\n/** @defgroup UART_Exported_Functions_Group1 Initialization and de-initialization functions\n  *  @brief    Initialization and Configuration functions\n  *\n@verbatim\n===============================================================================\n            ##### Initialization and Configuration functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to initialize the USARTx or the UARTy\n    in asynchronous mode.\n      (+) For the asynchronous mode the parameters below can be configured:\n        (++) Baud Rate\n        (++) Word Length\n        (++) Stop Bit\n        (++) Parity: If the parity is enabled, then the MSB bit of the data written\n             in the data register is transmitted but is changed by the parity bit.\n        (++) Hardware flow control\n        (++) Receiver/transmitter modes\n        (++) Over Sampling Method\n        (++) One-Bit Sampling Method\n      (+) For the asynchronous mode, the following advanced features can be configured as well:\n        (++) TX and/or RX pin level inversion\n        (++) data logical level inversion\n        (++) RX and TX pins swap\n        (++) RX overrun detection disabling\n        (++) DMA disabling on RX error\n        (++) MSB first on communication line\n        (++) auto Baud rate detection\n    [..]\n    The HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init()and HAL_MultiProcessor_Init()API\n    follow respectively the UART asynchronous, UART Half duplex, UART LIN mode\n    and UART multiprocessor mode configuration procedures (details for the procedures\n    are available in reference manual).\n\n@endverbatim\n\n  Depending on the frame length defined by the M1 and M0 bits (7-bit,\n  8-bit or 9-bit), the possible UART formats are listed in the\n  following table.\n\n  Table 1. UART frame format.\n    +-----------------------------------------------------------------------+\n    |  M1 bit |  M0 bit |  PCE bit  |             UART frame                |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    0    |    0      |    | SB |    8 bit data   | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    0    |    1      |    | SB | 7 bit data | PB | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    1    |    0      |    | SB |    9 bit data   | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    1    |    1      |    | SB | 8 bit data | PB | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    1    |    0    |    0      |    | SB |    7 bit data   | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    1    |    0    |    1      |    | SB | 6 bit data | PB | STB |     |\n    +-----------------------------------------------------------------------+\n\n  * @{\n  */\n\n/**\n  * @brief Initialize the UART mode according to the specified\n  *        parameters in the UART_InitTypeDef and initialize the associated handle.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)\n{\n  /* Check the UART handle allocation */\n  if (huart == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  if (huart->Init.HwFlowCtl != UART_HWCONTROL_NONE)\n  {\n    /* Check the parameters */\n    assert_param(IS_UART_HWFLOW_INSTANCE(huart->Instance));\n  }\n  else\n  {\n    /* Check the parameters */\n    assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance)));\n  }\n\n  if (huart->gState == HAL_UART_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    huart->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    UART_InitCallbacksToDefault(huart);\n\n    if (huart->MspInitCallback == NULL)\n    {\n      huart->MspInitCallback = HAL_UART_MspInit;\n    }\n\n    /* Init the low level hardware */\n    huart->MspInitCallback(huart);\n#else\n    /* Init the low level hardware : GPIO, CLOCK */\n    HAL_UART_MspInit(huart);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n  }\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  __HAL_UART_DISABLE(huart);\n\n  /* Set the UART Communication parameters */\n  if (UART_SetConfig(huart) == HAL_ERROR)\n  {\n    return HAL_ERROR;\n  }\n\n  if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\n  {\n    UART_AdvFeatureConfig(huart);\n  }\n\n  /* In asynchronous mode, the following bits must be kept cleared:\n  - LINEN and CLKEN bits in the USART_CR2 register,\n  - SCEN, HDSEL and IREN  bits in the USART_CR3 register.*/\n  CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));\n  CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));\n\n  __HAL_UART_ENABLE(huart);\n\n  /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\n  return (UART_CheckIdleState(huart));\n}\n\n/**\n  * @brief Initialize the half-duplex mode according to the specified\n  *        parameters in the UART_InitTypeDef and creates the associated handle.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)\n{\n  /* Check the UART handle allocation */\n  if (huart == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check UART instance */\n  assert_param(IS_UART_HALFDUPLEX_INSTANCE(huart->Instance));\n\n  if (huart->gState == HAL_UART_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    huart->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    UART_InitCallbacksToDefault(huart);\n\n    if (huart->MspInitCallback == NULL)\n    {\n      huart->MspInitCallback = HAL_UART_MspInit;\n    }\n\n    /* Init the low level hardware */\n    huart->MspInitCallback(huart);\n#else\n    /* Init the low level hardware : GPIO, CLOCK */\n    HAL_UART_MspInit(huart);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n  }\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  __HAL_UART_DISABLE(huart);\n\n  /* Set the UART Communication parameters */\n  if (UART_SetConfig(huart) == HAL_ERROR)\n  {\n    return HAL_ERROR;\n  }\n\n  if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\n  {\n    UART_AdvFeatureConfig(huart);\n  }\n\n  /* In half-duplex mode, the following bits must be kept cleared:\n  - LINEN and CLKEN bits in the USART_CR2 register,\n  - SCEN and IREN bits in the USART_CR3 register.*/\n  CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));\n  CLEAR_BIT(huart->Instance->CR3, (USART_CR3_IREN | USART_CR3_SCEN));\n\n  /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */\n  SET_BIT(huart->Instance->CR3, USART_CR3_HDSEL);\n\n  __HAL_UART_ENABLE(huart);\n\n  /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\n  return (UART_CheckIdleState(huart));\n}\n\n\n/**\n  * @brief Initialize the LIN mode according to the specified\n  *        parameters in the UART_InitTypeDef and creates the associated handle.\n  * @param huart             UART handle.\n  * @param BreakDetectLength Specifies the LIN break detection length.\n  *        This parameter can be one of the following values:\n  *          @arg @ref UART_LINBREAKDETECTLENGTH_10B 10-bit break detection\n  *          @arg @ref UART_LINBREAKDETECTLENGTH_11B 11-bit break detection\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength)\n{\n  /* Check the UART handle allocation */\n  if (huart == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the LIN UART instance */\n  assert_param(IS_UART_LIN_INSTANCE(huart->Instance));\n  /* Check the Break detection length parameter */\n  assert_param(IS_UART_LIN_BREAK_DETECT_LENGTH(BreakDetectLength));\n\n  /* LIN mode limited to 16-bit oversampling only */\n  if (huart->Init.OverSampling == UART_OVERSAMPLING_8)\n  {\n    return HAL_ERROR;\n  }\n  /* LIN mode limited to 8-bit data length */\n  if (huart->Init.WordLength != UART_WORDLENGTH_8B)\n  {\n    return HAL_ERROR;\n  }\n\n  if (huart->gState == HAL_UART_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    huart->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    UART_InitCallbacksToDefault(huart);\n\n    if (huart->MspInitCallback == NULL)\n    {\n      huart->MspInitCallback = HAL_UART_MspInit;\n    }\n\n    /* Init the low level hardware */\n    huart->MspInitCallback(huart);\n#else\n    /* Init the low level hardware : GPIO, CLOCK */\n    HAL_UART_MspInit(huart);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n  }\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  __HAL_UART_DISABLE(huart);\n\n  /* Set the UART Communication parameters */\n  if (UART_SetConfig(huart) == HAL_ERROR)\n  {\n    return HAL_ERROR;\n  }\n\n  if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\n  {\n    UART_AdvFeatureConfig(huart);\n  }\n\n  /* In LIN mode, the following bits must be kept cleared:\n  - LINEN and CLKEN bits in the USART_CR2 register,\n  - SCEN and IREN bits in the USART_CR3 register.*/\n  CLEAR_BIT(huart->Instance->CR2, USART_CR2_CLKEN);\n  CLEAR_BIT(huart->Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN | USART_CR3_SCEN));\n\n  /* Enable the LIN mode by setting the LINEN bit in the CR2 register */\n  SET_BIT(huart->Instance->CR2, USART_CR2_LINEN);\n\n  /* Set the USART LIN Break detection length. */\n  MODIFY_REG(huart->Instance->CR2, USART_CR2_LBDL, BreakDetectLength);\n\n  __HAL_UART_ENABLE(huart);\n\n  /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\n  return (UART_CheckIdleState(huart));\n}\n\n\n/**\n  * @brief Initialize the multiprocessor mode according to the specified\n  *        parameters in the UART_InitTypeDef and initialize the associated handle.\n  * @param huart        UART handle.\n  * @param Address      UART node address (4-, 6-, 7- or 8-bit long).\n  * @param WakeUpMethod Specifies the UART wakeup method.\n  *        This parameter can be one of the following values:\n  *          @arg @ref UART_WAKEUPMETHOD_IDLELINE WakeUp by an idle line detection\n  *          @arg @ref UART_WAKEUPMETHOD_ADDRESSMARK WakeUp by an address mark\n  * @note  If the user resorts to idle line detection wake up, the Address parameter\n  *        is useless and ignored by the initialization function.\n  * @note  If the user resorts to address mark wake up, the address length detection\n  *        is configured by default to 4 bits only. For the UART to be able to\n  *        manage 6-, 7- or 8-bit long addresses detection, the API\n  *        HAL_MultiProcessorEx_AddressLength_Set() must be called after\n  *        HAL_MultiProcessor_Init().\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod)\n{\n  /* Check the UART handle allocation */\n  if (huart == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the wake up method parameter */\n  assert_param(IS_UART_WAKEUPMETHOD(WakeUpMethod));\n\n  if (huart->gState == HAL_UART_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    huart->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    UART_InitCallbacksToDefault(huart);\n\n    if (huart->MspInitCallback == NULL)\n    {\n      huart->MspInitCallback = HAL_UART_MspInit;\n    }\n\n    /* Init the low level hardware */\n    huart->MspInitCallback(huart);\n#else\n    /* Init the low level hardware : GPIO, CLOCK */\n    HAL_UART_MspInit(huart);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n  }\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  __HAL_UART_DISABLE(huart);\n\n  /* Set the UART Communication parameters */\n  if (UART_SetConfig(huart) == HAL_ERROR)\n  {\n    return HAL_ERROR;\n  }\n\n  if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\n  {\n    UART_AdvFeatureConfig(huart);\n  }\n\n  /* In multiprocessor mode, the following bits must be kept cleared:\n  - LINEN and CLKEN bits in the USART_CR2 register,\n  - SCEN, HDSEL and IREN  bits in the USART_CR3 register. */\n  CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));\n  CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));\n\n  if (WakeUpMethod == UART_WAKEUPMETHOD_ADDRESSMARK)\n  {\n    /* If address mark wake up method is chosen, set the USART address node */\n    MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)Address << UART_CR2_ADDRESS_LSB_POS));\n  }\n\n  /* Set the wake up method by setting the WAKE bit in the CR1 register */\n  MODIFY_REG(huart->Instance->CR1, USART_CR1_WAKE, WakeUpMethod);\n\n  __HAL_UART_ENABLE(huart);\n\n  /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\n  return (UART_CheckIdleState(huart));\n}\n\n\n/**\n  * @brief DeInitialize the UART peripheral.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)\n{\n  /* Check the UART handle allocation */\n  if (huart == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the parameters */\n  assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance)));\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  __HAL_UART_DISABLE(huart);\n\n  huart->Instance->CR1 = 0x0U;\n  huart->Instance->CR2 = 0x0U;\n  huart->Instance->CR3 = 0x0U;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  if (huart->MspDeInitCallback == NULL)\n  {\n    huart->MspDeInitCallback = HAL_UART_MspDeInit;\n  }\n  /* DeInit the low level hardware */\n  huart->MspDeInitCallback(huart);\n#else\n  /* DeInit the low level hardware */\n  HAL_UART_MspDeInit(huart);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n\n  huart->ErrorCode = HAL_UART_ERROR_NONE;\n  huart->gState = HAL_UART_STATE_RESET;\n  huart->RxState = HAL_UART_STATE_RESET;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Initialize the UART MSP.\n  * @param huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_MspInit(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_MspInit can be implemented in the user file\n   */\n}\n\n/**\n  * @brief DeInitialize the UART MSP.\n  * @param huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_MspDeInit can be implemented in the user file\n   */\n}\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n/**\n  * @brief  Register a User UART Callback\n  *         To be used instead of the weak predefined callback\n  * @param  huart uart handle\n  * @param  CallbackID ID of the callback to be registered\n  *         This parameter can be one of the following values:\n  *           @arg @ref HAL_UART_TX_HALFCOMPLETE_CB_ID Tx Half Complete Callback ID\n  *           @arg @ref HAL_UART_TX_COMPLETE_CB_ID Tx Complete Callback ID\n  *           @arg @ref HAL_UART_RX_HALFCOMPLETE_CB_ID Rx Half Complete Callback ID\n  *           @arg @ref HAL_UART_RX_COMPLETE_CB_ID Rx Complete Callback ID\n  *           @arg @ref HAL_UART_ERROR_CB_ID Error Callback ID\n  *           @arg @ref HAL_UART_ABORT_COMPLETE_CB_ID Abort Complete Callback ID\n  *           @arg @ref HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID Abort Transmit Complete Callback ID\n  *           @arg @ref HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID Abort Receive Complete Callback ID\n  *           @arg @ref HAL_UART_WAKEUP_CB_ID Wakeup Callback ID\n  *           @arg @ref HAL_UART_RX_FIFO_FULL_CB_ID Rx Fifo Full Callback ID\n  *           @arg @ref HAL_UART_TX_FIFO_EMPTY_CB_ID Tx Fifo Empty Callback ID\n  *           @arg @ref HAL_UART_MSPINIT_CB_ID MspInit Callback ID\n  *           @arg @ref HAL_UART_MSPDEINIT_CB_ID MspDeInit Callback ID\n  * @param  pCallback pointer to the Callback function\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID,\n                                            pUART_CallbackTypeDef pCallback)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  if (pCallback == NULL)\n  {\n    huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n    return HAL_ERROR;\n  }\n\n  __HAL_LOCK(huart);\n\n  if (huart->gState == HAL_UART_STATE_READY)\n  {\n    switch (CallbackID)\n    {\n      case HAL_UART_TX_HALFCOMPLETE_CB_ID :\n        huart->TxHalfCpltCallback = pCallback;\n        break;\n\n      case HAL_UART_TX_COMPLETE_CB_ID :\n        huart->TxCpltCallback = pCallback;\n        break;\n\n      case HAL_UART_RX_HALFCOMPLETE_CB_ID :\n        huart->RxHalfCpltCallback = pCallback;\n        break;\n\n      case HAL_UART_RX_COMPLETE_CB_ID :\n        huart->RxCpltCallback = pCallback;\n        break;\n\n      case HAL_UART_ERROR_CB_ID :\n        huart->ErrorCallback = pCallback;\n        break;\n\n      case HAL_UART_ABORT_COMPLETE_CB_ID :\n        huart->AbortCpltCallback = pCallback;\n        break;\n\n      case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID :\n        huart->AbortTransmitCpltCallback = pCallback;\n        break;\n\n      case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID :\n        huart->AbortReceiveCpltCallback = pCallback;\n        break;\n\n      case HAL_UART_WAKEUP_CB_ID :\n        huart->WakeupCallback = pCallback;\n        break;\n\n      case HAL_UART_RX_FIFO_FULL_CB_ID :\n        huart->RxFifoFullCallback = pCallback;\n        break;\n\n      case HAL_UART_TX_FIFO_EMPTY_CB_ID :\n        huart->TxFifoEmptyCallback = pCallback;\n        break;\n\n      case HAL_UART_MSPINIT_CB_ID :\n        huart->MspInitCallback = pCallback;\n        break;\n\n      case HAL_UART_MSPDEINIT_CB_ID :\n        huart->MspDeInitCallback = pCallback;\n        break;\n\n      default :\n        huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else if (huart->gState == HAL_UART_STATE_RESET)\n  {\n    switch (CallbackID)\n    {\n      case HAL_UART_MSPINIT_CB_ID :\n        huart->MspInitCallback = pCallback;\n        break;\n\n      case HAL_UART_MSPDEINIT_CB_ID :\n        huart->MspDeInitCallback = pCallback;\n        break;\n\n      default :\n        huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else\n  {\n    huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n    status =  HAL_ERROR;\n  }\n\n  __HAL_UNLOCK(huart);\n\n  return status;\n}\n\n/**\n  * @brief  Unregister an UART Callback\n  *         UART callaback is redirected to the weak predefined callback\n  * @param  huart uart handle\n  * @param  CallbackID ID of the callback to be unregistered\n  *         This parameter can be one of the following values:\n  *           @arg @ref HAL_UART_TX_HALFCOMPLETE_CB_ID Tx Half Complete Callback ID\n  *           @arg @ref HAL_UART_TX_COMPLETE_CB_ID Tx Complete Callback ID\n  *           @arg @ref HAL_UART_RX_HALFCOMPLETE_CB_ID Rx Half Complete Callback ID\n  *           @arg @ref HAL_UART_RX_COMPLETE_CB_ID Rx Complete Callback ID\n  *           @arg @ref HAL_UART_ERROR_CB_ID Error Callback ID\n  *           @arg @ref HAL_UART_ABORT_COMPLETE_CB_ID Abort Complete Callback ID\n  *           @arg @ref HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID Abort Transmit Complete Callback ID\n  *           @arg @ref HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID Abort Receive Complete Callback ID\n  *           @arg @ref HAL_UART_WAKEUP_CB_ID Wakeup Callback ID\n  *           @arg @ref HAL_UART_RX_FIFO_FULL_CB_ID Rx Fifo Full Callback ID\n  *           @arg @ref HAL_UART_TX_FIFO_EMPTY_CB_ID Tx Fifo Empty Callback ID\n  *           @arg @ref HAL_UART_MSPINIT_CB_ID MspInit Callback ID\n  *           @arg @ref HAL_UART_MSPDEINIT_CB_ID MspDeInit Callback ID\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  __HAL_LOCK(huart);\n\n  if (HAL_UART_STATE_READY == huart->gState)\n  {\n    switch (CallbackID)\n    {\n      case HAL_UART_TX_HALFCOMPLETE_CB_ID :\n        huart->TxHalfCpltCallback = HAL_UART_TxHalfCpltCallback;               /* Legacy weak  TxHalfCpltCallback    */\n        break;\n\n      case HAL_UART_TX_COMPLETE_CB_ID :\n        huart->TxCpltCallback = HAL_UART_TxCpltCallback;                       /* Legacy weak TxCpltCallback         */\n        break;\n\n      case HAL_UART_RX_HALFCOMPLETE_CB_ID :\n        huart->RxHalfCpltCallback = HAL_UART_RxHalfCpltCallback;               /* Legacy weak RxHalfCpltCallback     */\n        break;\n\n      case HAL_UART_RX_COMPLETE_CB_ID :\n        huart->RxCpltCallback = HAL_UART_RxCpltCallback;                       /* Legacy weak RxCpltCallback         */\n        break;\n\n      case HAL_UART_ERROR_CB_ID :\n        huart->ErrorCallback = HAL_UART_ErrorCallback;                         /* Legacy weak ErrorCallback          */\n        break;\n\n      case HAL_UART_ABORT_COMPLETE_CB_ID :\n        huart->AbortCpltCallback = HAL_UART_AbortCpltCallback;                 /* Legacy weak AbortCpltCallback      */\n        break;\n\n      case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID :\n        huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak\n                                                                                  AbortTransmitCpltCallback          */\n        break;\n\n      case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID :\n        huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback;   /* Legacy weak\n                                                                                  AbortReceiveCpltCallback           */\n        break;\n\n      case HAL_UART_WAKEUP_CB_ID :\n        huart->WakeupCallback = HAL_UARTEx_WakeupCallback;                     /* Legacy weak WakeupCallback         */\n        break;\n\n      case HAL_UART_RX_FIFO_FULL_CB_ID :\n        huart->RxFifoFullCallback = HAL_UARTEx_RxFifoFullCallback;             /* Legacy weak RxFifoFullCallback     */\n        break;\n\n      case HAL_UART_TX_FIFO_EMPTY_CB_ID :\n        huart->TxFifoEmptyCallback = HAL_UARTEx_TxFifoEmptyCallback;           /* Legacy weak TxFifoEmptyCallback    */\n        break;\n\n      case HAL_UART_MSPINIT_CB_ID :\n        huart->MspInitCallback = HAL_UART_MspInit;                             /* Legacy weak MspInitCallback        */\n        break;\n\n      case HAL_UART_MSPDEINIT_CB_ID :\n        huart->MspDeInitCallback = HAL_UART_MspDeInit;                         /* Legacy weak MspDeInitCallback      */\n        break;\n\n      default :\n        huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else if (HAL_UART_STATE_RESET == huart->gState)\n  {\n    switch (CallbackID)\n    {\n      case HAL_UART_MSPINIT_CB_ID :\n        huart->MspInitCallback = HAL_UART_MspInit;\n        break;\n\n      case HAL_UART_MSPDEINIT_CB_ID :\n        huart->MspDeInitCallback = HAL_UART_MspDeInit;\n        break;\n\n      default :\n        huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n        status =  HAL_ERROR;\n        break;\n    }\n  }\n  else\n  {\n    huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n    status =  HAL_ERROR;\n  }\n\n  __HAL_UNLOCK(huart);\n\n  return status;\n}\n\n/**\n  * @brief  Register a User UART Rx Event Callback\n  *         To be used instead of the weak predefined callback\n  * @param  huart     Uart handle\n  * @param  pCallback Pointer to the Rx Event Callback function\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_RegisterRxEventCallback(UART_HandleTypeDef *huart, pUART_RxEventCallbackTypeDef pCallback)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  if (pCallback == NULL)\n  {\n    huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n    return HAL_ERROR;\n  }\n\n  /* Process locked */\n  __HAL_LOCK(huart);\n\n  if (huart->gState == HAL_UART_STATE_READY)\n  {\n    huart->RxEventCallback = pCallback;\n  }\n  else\n  {\n    huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(huart);\n\n  return status;\n}\n\n/**\n  * @brief  UnRegister the UART Rx Event Callback\n  *         UART Rx Event Callback is redirected to the weak HAL_UARTEx_RxEventCallback() predefined callback\n  * @param  huart     Uart handle\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_UnRegisterRxEventCallback(UART_HandleTypeDef *huart)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n\n  /* Process locked */\n  __HAL_LOCK(huart);\n\n  if (huart->gState == HAL_UART_STATE_READY)\n  {\n    huart->RxEventCallback = HAL_UARTEx_RxEventCallback; /* Legacy weak UART Rx Event Callback  */\n  }\n  else\n  {\n    huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\n\n    status =  HAL_ERROR;\n  }\n\n  /* Release Lock */\n  __HAL_UNLOCK(huart);\n  return status;\n}\n\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n\n/**\n  * @}\n  */\n\n/** @defgroup UART_Exported_Functions_Group2 IO operation functions\n  * @brief UART Transmit/Receive functions\n  *\n@verbatim\n ===============================================================================\n                      ##### IO operation functions #####\n ===============================================================================\n    This subsection provides a set of functions allowing to manage the UART asynchronous\n    and Half duplex data transfers.\n\n    (#) There are two mode of transfer:\n       (+) Blocking mode: The communication is performed in polling mode.\n           The HAL status of all data processing is returned by the same function\n           after finishing transfer.\n       (+) Non-Blocking mode: The communication is performed using Interrupts\n           or DMA, These API's return the HAL status.\n           The end of the data processing will be indicated through the\n           dedicated UART IRQ when using Interrupt mode or the DMA IRQ when\n           using DMA mode.\n           The HAL_UART_TxCpltCallback(), HAL_UART_RxCpltCallback() user callbacks\n           will be executed respectively at the end of the transmit or Receive process\n           The HAL_UART_ErrorCallback()user callback will be executed when a communication error is detected\n\n    (#) Blocking mode API's are :\n        (+) HAL_UART_Transmit()\n        (+) HAL_UART_Receive()\n\n    (#) Non-Blocking mode API's with Interrupt are :\n        (+) HAL_UART_Transmit_IT()\n        (+) HAL_UART_Receive_IT()\n        (+) HAL_UART_IRQHandler()\n\n    (#) Non-Blocking mode API's with DMA are :\n        (+) HAL_UART_Transmit_DMA()\n        (+) HAL_UART_Receive_DMA()\n        (+) HAL_UART_DMAPause()\n        (+) HAL_UART_DMAResume()\n        (+) HAL_UART_DMAStop()\n\n    (#) A set of Transfer Complete Callbacks are provided in Non_Blocking mode:\n        (+) HAL_UART_TxHalfCpltCallback()\n        (+) HAL_UART_TxCpltCallback()\n        (+) HAL_UART_RxHalfCpltCallback()\n        (+) HAL_UART_RxCpltCallback()\n        (+) HAL_UART_ErrorCallback()\n\n    (#) Non-Blocking mode transfers could be aborted using Abort API's :\n        (+) HAL_UART_Abort()\n        (+) HAL_UART_AbortTransmit()\n        (+) HAL_UART_AbortReceive()\n        (+) HAL_UART_Abort_IT()\n        (+) HAL_UART_AbortTransmit_IT()\n        (+) HAL_UART_AbortReceive_IT()\n\n    (#) For Abort services based on interrupts (HAL_UART_Abortxxx_IT), a set of Abort Complete Callbacks are provided:\n        (+) HAL_UART_AbortCpltCallback()\n        (+) HAL_UART_AbortTransmitCpltCallback()\n        (+) HAL_UART_AbortReceiveCpltCallback()\n\n    (#) A Rx Event Reception Callback (Rx event notification) is available for Non_Blocking modes of enhanced\n        reception services:\n        (+) HAL_UARTEx_RxEventCallback()\n\n    (#) In Non-Blocking mode transfers, possible errors are split into 2 categories.\n        Errors are handled as follows :\n       (+) Error is considered as Recoverable and non blocking : Transfer could go till end, but error severity is\n           to be evaluated by user : this concerns Frame Error, Parity Error or Noise Error\n           in Interrupt mode reception .\n           Received character is then retrieved and stored in Rx buffer, Error code is set to allow user\n           to identify error type, and HAL_UART_ErrorCallback() user callback is executed.\n           Transfer is kept ongoing on UART side.\n           If user wants to abort it, Abort services should be called by user.\n       (+) Error is considered as Blocking : Transfer could not be completed properly and is aborted.\n           This concerns Overrun Error In Interrupt mode reception and all errors in DMA mode.\n           Error code is set to allow user to identify error type, and HAL_UART_ErrorCallback()\n           user callback is executed.\n\n    -@- In the Half duplex communication, it is forbidden to run the transmit\n        and receive process in parallel, the UART state HAL_UART_STATE_BUSY_TX_RX can't be useful.\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief Send an amount of data in blocking mode.\n  * @note   When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *         the sent data is handled as a set of u16. In this case, Size must indicate the number\n  *         of u16 provided through pData.\n  * @note When FIFO mode is enabled, writing a data in the TDR register adds one\n  *       data to the TXFIFO. Write operations to the TDR register are performed\n  *       when TXFNF flag is set. From hardware perspective, TXFNF flag and\n  *       TXE are mapped on the same bit-field.\n  * @param huart   UART handle.\n  * @param pData   Pointer to data buffer (u8 or u16 data elements).\n  * @param Size    Amount of data elements (u8 or u16) to be sent.\n  * @param Timeout Timeout duration.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)\n{\n  const uint8_t  *pdata8bits;\n  const uint16_t *pdata16bits;\n  uint32_t tickstart;\n\n  /* Check that a Tx process is not already ongoing */\n  if (huart->gState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return  HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    huart->ErrorCode = HAL_UART_ERROR_NONE;\n    huart->gState = HAL_UART_STATE_BUSY_TX;\n\n    /* Init tickstart for timeout management */\n    tickstart = HAL_GetTick();\n\n    huart->TxXferSize  = Size;\n    huart->TxXferCount = Size;\n\n    /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */\n    if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\n    {\n      pdata8bits  = NULL;\n      pdata16bits = (const uint16_t *) pData;\n    }\n    else\n    {\n      pdata8bits  = pData;\n      pdata16bits = NULL;\n    }\n\n    __HAL_UNLOCK(huart);\n\n    while (huart->TxXferCount > 0U)\n    {\n      if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)\n      {\n        return HAL_TIMEOUT;\n      }\n      if (pdata8bits == NULL)\n      {\n        huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU);\n        pdata16bits++;\n      }\n      else\n      {\n        huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU);\n        pdata8bits++;\n      }\n      huart->TxXferCount--;\n    }\n\n    if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)\n    {\n      return HAL_TIMEOUT;\n    }\n\n    /* At end of Tx process, restore huart->gState to Ready */\n    huart->gState = HAL_UART_STATE_READY;\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Receive an amount of data in blocking mode.\n  * @note   When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *         the received data is handled as a set of u16. In this case, Size must indicate the number\n  *         of u16 available through pData.\n  * @note When FIFO mode is enabled, the RXFNE flag is set as long as the RXFIFO\n  *       is not empty. Read operations from the RDR register are performed when\n  *       RXFNE flag is set. From hardware perspective, RXFNE flag and\n  *       RXNE are mapped on the same bit-field.\n  * @param huart   UART handle.\n  * @param pData   Pointer to data buffer (u8 or u16 data elements).\n  * @param Size    Amount of data elements (u8 or u16) to be received.\n  * @param Timeout Timeout duration.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)\n{\n  uint8_t  *pdata8bits;\n  uint16_t *pdata16bits;\n  uint16_t uhMask;\n  uint32_t tickstart;\n\n  /* Check that a Rx process is not already ongoing */\n  if (huart->RxState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return  HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    huart->ErrorCode = HAL_UART_ERROR_NONE;\n    huart->RxState = HAL_UART_STATE_BUSY_RX;\n    huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n    /* Init tickstart for timeout management */\n    tickstart = HAL_GetTick();\n\n    huart->RxXferSize  = Size;\n    huart->RxXferCount = Size;\n\n    /* Computation of UART mask to apply to RDR register */\n    UART_MASK_COMPUTATION(huart);\n    uhMask = huart->Mask;\n\n    /* In case of 9bits/No Parity transfer, pRxData needs to be handled as a uint16_t pointer */\n    if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\n    {\n      pdata8bits  = NULL;\n      pdata16bits = (uint16_t *) pData;\n    }\n    else\n    {\n      pdata8bits  = pData;\n      pdata16bits = NULL;\n    }\n\n    __HAL_UNLOCK(huart);\n\n    /* as long as data have to be received */\n    while (huart->RxXferCount > 0U)\n    {\n      if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK)\n      {\n        return HAL_TIMEOUT;\n      }\n      if (pdata8bits == NULL)\n      {\n        *pdata16bits = (uint16_t)(huart->Instance->RDR & uhMask);\n        pdata16bits++;\n      }\n      else\n      {\n        *pdata8bits = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask);\n        pdata8bits++;\n      }\n      huart->RxXferCount--;\n    }\n\n    /* At end of Rx process, restore huart->RxState to Ready */\n    huart->RxState = HAL_UART_STATE_READY;\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Send an amount of data in interrupt mode.\n  * @note   When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *         the sent data is handled as a set of u16. In this case, Size must indicate the number\n  *         of u16 provided through pData.\n  * @param huart UART handle.\n  * @param pData Pointer to data buffer (u8 or u16 data elements).\n  * @param Size  Amount of data elements (u8 or u16) to be sent.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)\n{\n  /* Check that a Tx process is not already ongoing */\n  if (huart->gState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    huart->pTxBuffPtr  = pData;\n    huart->TxXferSize  = Size;\n    huart->TxXferCount = Size;\n    huart->TxISR       = NULL;\n\n    huart->ErrorCode = HAL_UART_ERROR_NONE;\n    huart->gState = HAL_UART_STATE_BUSY_TX;\n\n    /* Configure Tx interrupt processing */\n    if (huart->FifoMode == UART_FIFOMODE_ENABLE)\n    {\n      /* Set the Tx ISR function pointer according to the data word length */\n      if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\n      {\n        huart->TxISR = UART_TxISR_16BIT_FIFOEN;\n      }\n      else\n      {\n        huart->TxISR = UART_TxISR_8BIT_FIFOEN;\n      }\n\n      __HAL_UNLOCK(huart);\n\n      /* Enable the TX FIFO threshold interrupt */\n      ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_TXFTIE);\n    }\n    else\n    {\n      /* Set the Tx ISR function pointer according to the data word length */\n      if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\n      {\n        huart->TxISR = UART_TxISR_16BIT;\n      }\n      else\n      {\n        huart->TxISR = UART_TxISR_8BIT;\n      }\n\n      __HAL_UNLOCK(huart);\n\n      /* Enable the Transmit Data Register Empty interrupt */\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE_TXFNFIE);\n    }\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Receive an amount of data in interrupt mode.\n  * @note   When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *         the received data is handled as a set of u16. In this case, Size must indicate the number\n  *         of u16 available through pData.\n  * @param huart UART handle.\n  * @param pData Pointer to data buffer (u8 or u16 data elements).\n  * @param Size  Amount of data elements (u8 or u16) to be received.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\n{\n  /* Check that a Rx process is not already ongoing */\n  if (huart->RxState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    /* Set Reception type to Standard reception */\n    huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n    if (!(IS_LPUART_INSTANCE(huart->Instance)))\n    {\n      /* Check that USART RTOEN bit is set */\n      if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U)\n      {\n        /* Enable the UART Receiver Timeout Interrupt */\n        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE);\n      }\n    }\n\n    return (UART_Start_Receive_IT(huart, pData, Size));\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Send an amount of data in DMA mode.\n  * @note   When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *         the sent data is handled as a set of u16. In this case, Size must indicate the number\n  *         of u16 provided through pData.\n  * @param huart UART handle.\n  * @param pData Pointer to data buffer (u8 or u16 data elements).\n  * @param Size  Amount of data elements (u8 or u16) to be sent.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)\n{\n  /* Check that a Tx process is not already ongoing */\n  if (huart->gState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    huart->pTxBuffPtr  = pData;\n    huart->TxXferSize  = Size;\n    huart->TxXferCount = Size;\n\n    huart->ErrorCode = HAL_UART_ERROR_NONE;\n    huart->gState = HAL_UART_STATE_BUSY_TX;\n\n    if (huart->hdmatx != NULL)\n    {\n      /* Set the UART DMA transfer complete callback */\n      huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt;\n\n      /* Set the UART DMA Half transfer complete callback */\n      huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt;\n\n      /* Set the DMA error callback */\n      huart->hdmatx->XferErrorCallback = UART_DMAError;\n\n      /* Set the DMA abort callback */\n      huart->hdmatx->XferAbortCallback = NULL;\n\n      /* Enable the UART transmit DMA channel */\n      if (HAL_DMA_Start_IT(huart->hdmatx, (uint32_t)huart->pTxBuffPtr, (uint32_t)&huart->Instance->TDR, Size) != HAL_OK)\n      {\n        /* Set error code to DMA */\n        huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n        __HAL_UNLOCK(huart);\n\n        /* Restore huart->gState to ready */\n        huart->gState = HAL_UART_STATE_READY;\n\n        return HAL_ERROR;\n      }\n    }\n    /* Clear the TC flag in the ICR register */\n    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);\n\n    __HAL_UNLOCK(huart);\n\n    /* Enable the DMA transfer for transmit request by setting the DMAT bit\n    in the UART CR3 register */\n    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Receive an amount of data in DMA mode.\n  * @note   When the UART parity is enabled (PCE = 1), the received data contain\n  *         the parity bit (MSB position).\n  * @note   When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *         the received data is handled as a set of u16. In this case, Size must indicate the number\n  *         of u16 available through pData.\n  * @param huart UART handle.\n  * @param pData Pointer to data buffer (u8 or u16 data elements).\n  * @param Size  Amount of data elements (u8 or u16) to be received.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\n{\n  /* Check that a Rx process is not already ongoing */\n  if (huart->RxState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    /* Set Reception type to Standard reception */\n    huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n    if (!(IS_LPUART_INSTANCE(huart->Instance)))\n    {\n      /* Check that USART RTOEN bit is set */\n      if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U)\n      {\n        /* Enable the UART Receiver Timeout Interrupt */\n        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE);\n      }\n    }\n\n    return (UART_Start_Receive_DMA(huart, pData, Size));\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Pause the DMA Transfer.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)\n{\n  const HAL_UART_StateTypeDef gstate = huart->gState;\n  const HAL_UART_StateTypeDef rxstate = huart->RxState;\n\n  __HAL_LOCK(huart);\n\n  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&\n      (gstate == HAL_UART_STATE_BUSY_TX))\n  {\n    /* Disable the UART DMA Tx request */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n  }\n  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&\n      (rxstate == HAL_UART_STATE_BUSY_RX))\n  {\n    /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n    /* Disable the UART DMA Rx request */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n  }\n\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Resume the DMA Transfer.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)\n{\n  __HAL_LOCK(huart);\n\n  if (huart->gState == HAL_UART_STATE_BUSY_TX)\n  {\n    /* Enable the UART DMA Tx request */\n    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n  }\n  if (huart->RxState == HAL_UART_STATE_BUSY_RX)\n  {\n    /* Clear the Overrun flag before resuming the Rx transfer */\n    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);\n\n    /* Re-enable PE and ERR (Frame error, noise error, overrun error) interrupts */\n    if (huart->Init.Parity != UART_PARITY_NONE)\n    {\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n    }\n    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n    /* Enable the UART DMA Rx request */\n    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n  }\n\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Stop the DMA Transfer.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)\n{\n  /* The Lock is not implemented on this API to allow the user application\n     to call the HAL UART API under callbacks HAL_UART_TxCpltCallback() / HAL_UART_RxCpltCallback() /\n     HAL_UART_TxHalfCpltCallback / HAL_UART_RxHalfCpltCallback:\n     indeed, when HAL_DMA_Abort() API is called, the DMA TX/RX Transfer or Half Transfer complete\n     interrupt is generated if the DMA transfer interruption occurs at the middle or at the end of\n     the stream and the corresponding call back is executed. */\n\n  const HAL_UART_StateTypeDef gstate = huart->gState;\n  const HAL_UART_StateTypeDef rxstate = huart->RxState;\n\n  /* Stop UART DMA Tx request if ongoing */\n  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&\n      (gstate == HAL_UART_STATE_BUSY_TX))\n  {\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n\n    /* Abort the UART DMA Tx channel */\n    if (huart->hdmatx != NULL)\n    {\n      if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK)\n      {\n        if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT)\n        {\n          /* Set error code to DMA */\n          huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n\n    UART_EndTxTransfer(huart);\n  }\n\n  /* Stop UART DMA Rx request if ongoing */\n  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&\n      (rxstate == HAL_UART_STATE_BUSY_RX))\n  {\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n    /* Abort the UART DMA Rx channel */\n    if (huart->hdmarx != NULL)\n    {\n      if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK)\n      {\n        if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT)\n        {\n          /* Set error code to DMA */\n          huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n\n    UART_EndRxTransfer(huart);\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Abort ongoing transfers (blocking mode).\n  * @param  huart UART handle.\n  * @note   This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode.\n  *         This procedure performs following operations :\n  *           - Disable UART Interrupts (Tx and Rx)\n  *           - Disable the DMA transfer in the peripheral register (if enabled)\n  *           - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode)\n  *           - Set handle State to READY\n  * @note   This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)\n{\n  /* Disable TXE, TC, RXNE, PE, RXFT, TXFT and ERR (Frame error, noise error, overrun error) interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE |\n                                          USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE);\n\n  /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */\n  if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n  {\n    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));\n  }\n\n  /* Abort the UART DMA Tx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\n  {\n    /* Disable the UART DMA Tx request if enabled */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n\n    /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */\n    if (huart->hdmatx != NULL)\n    {\n      /* Set the UART DMA Abort callback to Null.\n         No call back execution at end of DMA abort procedure */\n      huart->hdmatx->XferAbortCallback = NULL;\n\n      if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK)\n      {\n        if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT)\n        {\n          /* Set error code to DMA */\n          huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n\n  /* Abort the UART DMA Rx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\n  {\n    /* Disable the UART DMA Rx request if enabled */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n    /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */\n    if (huart->hdmarx != NULL)\n    {\n      /* Set the UART DMA Abort callback to Null.\n         No call back execution at end of DMA abort procedure */\n      huart->hdmarx->XferAbortCallback = NULL;\n\n      if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK)\n      {\n        if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT)\n        {\n          /* Set error code to DMA */\n          huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n\n  /* Reset Tx and Rx transfer counters */\n  huart->TxXferCount = 0U;\n  huart->RxXferCount = 0U;\n\n  /* Clear the Error flags in the ICR register */\n  __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n  /* Flush the whole TX FIFO (if needed) */\n  if (huart->FifoMode == UART_FIFOMODE_ENABLE)\n  {\n    __HAL_UART_SEND_REQ(huart, UART_TXDATA_FLUSH_REQUEST);\n  }\n\n  /* Discard the received data */\n  __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n\n  /* Restore huart->gState and huart->RxState to Ready */\n  huart->gState  = HAL_UART_STATE_READY;\n  huart->RxState = HAL_UART_STATE_READY;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  huart->ErrorCode = HAL_UART_ERROR_NONE;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Abort ongoing Transmit transfer (blocking mode).\n  * @param  huart UART handle.\n  * @note   This procedure could be used for aborting any ongoing Tx transfer started in Interrupt or DMA mode.\n  *         This procedure performs following operations :\n  *           - Disable UART Interrupts (Tx)\n  *           - Disable the DMA transfer in the peripheral register (if enabled)\n  *           - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode)\n  *           - Set handle State to READY\n  * @note   This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)\n{\n  /* Disable TCIE, TXEIE and TXFTIE interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TCIE | USART_CR1_TXEIE_TXFNFIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_TXFTIE);\n\n  /* Abort the UART DMA Tx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\n  {\n    /* Disable the UART DMA Tx request if enabled */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n\n    /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */\n    if (huart->hdmatx != NULL)\n    {\n      /* Set the UART DMA Abort callback to Null.\n         No call back execution at end of DMA abort procedure */\n      huart->hdmatx->XferAbortCallback = NULL;\n\n      if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK)\n      {\n        if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT)\n        {\n          /* Set error code to DMA */\n          huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n\n  /* Reset Tx transfer counter */\n  huart->TxXferCount = 0U;\n\n  /* Flush the whole TX FIFO (if needed) */\n  if (huart->FifoMode == UART_FIFOMODE_ENABLE)\n  {\n    __HAL_UART_SEND_REQ(huart, UART_TXDATA_FLUSH_REQUEST);\n  }\n\n  /* Restore huart->gState to Ready */\n  huart->gState = HAL_UART_STATE_READY;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Abort ongoing Receive transfer (blocking mode).\n  * @param  huart UART handle.\n  * @note   This procedure could be used for aborting any ongoing Rx transfer started in Interrupt or DMA mode.\n  *         This procedure performs following operations :\n  *           - Disable UART Interrupts (Rx)\n  *           - Disable the DMA transfer in the peripheral register (if enabled)\n  *           - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode)\n  *           - Set handle State to READY\n  * @note   This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)\n{\n  /* Disable PEIE, EIE, RXNEIE and RXFTIE interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE | USART_CR3_RXFTIE);\n\n  /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */\n  if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n  {\n    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));\n  }\n\n  /* Abort the UART DMA Rx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\n  {\n    /* Disable the UART DMA Rx request if enabled */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n    /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */\n    if (huart->hdmarx != NULL)\n    {\n      /* Set the UART DMA Abort callback to Null.\n         No call back execution at end of DMA abort procedure */\n      huart->hdmarx->XferAbortCallback = NULL;\n\n      if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK)\n      {\n        if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT)\n        {\n          /* Set error code to DMA */\n          huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n\n  /* Reset Rx transfer counter */\n  huart->RxXferCount = 0U;\n\n  /* Clear the Error flags in the ICR register */\n  __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n  /* Discard the received data */\n  __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n\n  /* Restore huart->RxState to Ready */\n  huart->RxState = HAL_UART_STATE_READY;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Abort ongoing transfers (Interrupt mode).\n  * @param  huart UART handle.\n  * @note   This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode.\n  *         This procedure performs following operations :\n  *           - Disable UART Interrupts (Tx and Rx)\n  *           - Disable the DMA transfer in the peripheral register (if enabled)\n  *           - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode)\n  *           - Set handle State to READY\n  *           - At abort completion, call user abort complete callback\n  * @note   This procedure is executed in Interrupt mode, meaning that abort procedure could be\n  *         considered as completed only when user abort complete callback is executed (not when exiting function).\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)\n{\n  uint32_t abortcplt = 1U;\n\n  /* Disable interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_PEIE | USART_CR1_TCIE | USART_CR1_RXNEIE_RXFNEIE |\n                                          USART_CR1_TXEIE_TXFNFIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE));\n\n  /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */\n  if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n  {\n    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));\n  }\n\n  /* If DMA Tx and/or DMA Rx Handles are associated to UART Handle, DMA Abort complete callbacks should be initialised\n     before any call to DMA Abort functions */\n  /* DMA Tx Handle is valid */\n  if (huart->hdmatx != NULL)\n  {\n    /* Set DMA Abort Complete callback if UART DMA Tx request if enabled.\n       Otherwise, set it to NULL */\n    if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\n    {\n      huart->hdmatx->XferAbortCallback = UART_DMATxAbortCallback;\n    }\n    else\n    {\n      huart->hdmatx->XferAbortCallback = NULL;\n    }\n  }\n  /* DMA Rx Handle is valid */\n  if (huart->hdmarx != NULL)\n  {\n    /* Set DMA Abort Complete callback if UART DMA Rx request if enabled.\n       Otherwise, set it to NULL */\n    if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\n    {\n      huart->hdmarx->XferAbortCallback = UART_DMARxAbortCallback;\n    }\n    else\n    {\n      huart->hdmarx->XferAbortCallback = NULL;\n    }\n  }\n\n  /* Abort the UART DMA Tx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\n  {\n    /* Disable DMA Tx at UART level */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n\n    /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */\n    if (huart->hdmatx != NULL)\n    {\n      /* UART Tx DMA Abort callback has already been initialised :\n         will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\n\n      /* Abort DMA TX */\n      if (HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK)\n      {\n        huart->hdmatx->XferAbortCallback = NULL;\n      }\n      else\n      {\n        abortcplt = 0U;\n      }\n    }\n  }\n\n  /* Abort the UART DMA Rx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\n  {\n    /* Disable the UART DMA Rx request if enabled */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n    /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */\n    if (huart->hdmarx != NULL)\n    {\n      /* UART Rx DMA Abort callback has already been initialised :\n         will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\n\n      /* Abort DMA RX */\n      if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)\n      {\n        huart->hdmarx->XferAbortCallback = NULL;\n        abortcplt = 1U;\n      }\n      else\n      {\n        abortcplt = 0U;\n      }\n    }\n  }\n\n  /* if no DMA abort complete callback execution is required => call user Abort Complete callback */\n  if (abortcplt == 1U)\n  {\n    /* Reset Tx and Rx transfer counters */\n    huart->TxXferCount = 0U;\n    huart->RxXferCount = 0U;\n\n    /* Clear ISR function pointers */\n    huart->RxISR = NULL;\n    huart->TxISR = NULL;\n\n    /* Reset errorCode */\n    huart->ErrorCode = HAL_UART_ERROR_NONE;\n\n    /* Clear the Error flags in the ICR register */\n    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n    /* Flush the whole TX FIFO (if needed) */\n    if (huart->FifoMode == UART_FIFOMODE_ENABLE)\n    {\n      __HAL_UART_SEND_REQ(huart, UART_TXDATA_FLUSH_REQUEST);\n    }\n\n    /* Discard the received data */\n    __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n\n    /* Restore huart->gState and huart->RxState to Ready */\n    huart->gState  = HAL_UART_STATE_READY;\n    huart->RxState = HAL_UART_STATE_READY;\n    huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n    /* As no DMA to be aborted, call directly user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /* Call registered Abort complete callback */\n    huart->AbortCpltCallback(huart);\n#else\n    /* Call legacy weak Abort complete callback */\n    HAL_UART_AbortCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Abort ongoing Transmit transfer (Interrupt mode).\n  * @param  huart UART handle.\n  * @note   This procedure could be used for aborting any ongoing Tx transfer started in Interrupt or DMA mode.\n  *         This procedure performs following operations :\n  *           - Disable UART Interrupts (Tx)\n  *           - Disable the DMA transfer in the peripheral register (if enabled)\n  *           - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode)\n  *           - Set handle State to READY\n  *           - At abort completion, call user abort complete callback\n  * @note   This procedure is executed in Interrupt mode, meaning that abort procedure could be\n  *         considered as completed only when user abort complete callback is executed (not when exiting function).\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)\n{\n  /* Disable interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TCIE | USART_CR1_TXEIE_TXFNFIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_TXFTIE);\n\n  /* Abort the UART DMA Tx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\n  {\n    /* Disable the UART DMA Tx request if enabled */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n\n    /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */\n    if (huart->hdmatx != NULL)\n    {\n      /* Set the UART DMA Abort callback :\n         will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\n      huart->hdmatx->XferAbortCallback = UART_DMATxOnlyAbortCallback;\n\n      /* Abort DMA TX */\n      if (HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK)\n      {\n        /* Call Directly huart->hdmatx->XferAbortCallback function in case of error */\n        huart->hdmatx->XferAbortCallback(huart->hdmatx);\n      }\n    }\n    else\n    {\n      /* Reset Tx transfer counter */\n      huart->TxXferCount = 0U;\n\n      /* Clear TxISR function pointers */\n      huart->TxISR = NULL;\n\n      /* Restore huart->gState to Ready */\n      huart->gState = HAL_UART_STATE_READY;\n\n      /* As no DMA to be aborted, call directly user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n      /* Call registered Abort Transmit Complete Callback */\n      huart->AbortTransmitCpltCallback(huart);\n#else\n      /* Call legacy weak Abort Transmit Complete Callback */\n      HAL_UART_AbortTransmitCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n    }\n  }\n  else\n  {\n    /* Reset Tx transfer counter */\n    huart->TxXferCount = 0U;\n\n    /* Clear TxISR function pointers */\n    huart->TxISR = NULL;\n\n    /* Flush the whole TX FIFO (if needed) */\n    if (huart->FifoMode == UART_FIFOMODE_ENABLE)\n    {\n      __HAL_UART_SEND_REQ(huart, UART_TXDATA_FLUSH_REQUEST);\n    }\n\n    /* Restore huart->gState to Ready */\n    huart->gState = HAL_UART_STATE_READY;\n\n    /* As no DMA to be aborted, call directly user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /* Call registered Abort Transmit Complete Callback */\n    huart->AbortTransmitCpltCallback(huart);\n#else\n    /* Call legacy weak Abort Transmit Complete Callback */\n    HAL_UART_AbortTransmitCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Abort ongoing Receive transfer (Interrupt mode).\n  * @param  huart UART handle.\n  * @note   This procedure could be used for aborting any ongoing Rx transfer started in Interrupt or DMA mode.\n  *         This procedure performs following operations :\n  *           - Disable UART Interrupts (Rx)\n  *           - Disable the DMA transfer in the peripheral register (if enabled)\n  *           - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode)\n  *           - Set handle State to READY\n  *           - At abort completion, call user abort complete callback\n  * @note   This procedure is executed in Interrupt mode, meaning that abort procedure could be\n  *         considered as completed only when user abort complete callback is executed (not when exiting function).\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)\n{\n  /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));\n\n  /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */\n  if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n  {\n    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));\n  }\n\n  /* Abort the UART DMA Rx channel if enabled */\n  if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\n  {\n    /* Disable the UART DMA Rx request if enabled */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n    /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */\n    if (huart->hdmarx != NULL)\n    {\n      /* Set the UART DMA Abort callback :\n         will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\n      huart->hdmarx->XferAbortCallback = UART_DMARxOnlyAbortCallback;\n\n      /* Abort DMA RX */\n      if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)\n      {\n        /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */\n        huart->hdmarx->XferAbortCallback(huart->hdmarx);\n      }\n    }\n    else\n    {\n      /* Reset Rx transfer counter */\n      huart->RxXferCount = 0U;\n\n      /* Clear RxISR function pointer */\n      huart->pRxBuffPtr = NULL;\n\n      /* Clear the Error flags in the ICR register */\n      __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n      /* Discard the received data */\n      __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n\n      /* Restore huart->RxState to Ready */\n      huart->RxState = HAL_UART_STATE_READY;\n      huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n      /* As no DMA to be aborted, call directly user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n      /* Call registered Abort Receive Complete Callback */\n      huart->AbortReceiveCpltCallback(huart);\n#else\n      /* Call legacy weak Abort Receive Complete Callback */\n      HAL_UART_AbortReceiveCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n    }\n  }\n  else\n  {\n    /* Reset Rx transfer counter */\n    huart->RxXferCount = 0U;\n\n    /* Clear RxISR function pointer */\n    huart->pRxBuffPtr = NULL;\n\n    /* Clear the Error flags in the ICR register */\n    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n    /* Restore huart->RxState to Ready */\n    huart->RxState = HAL_UART_STATE_READY;\n    huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n    /* As no DMA to be aborted, call directly user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /* Call registered Abort Receive Complete Callback */\n    huart->AbortReceiveCpltCallback(huart);\n#else\n    /* Call legacy weak Abort Receive Complete Callback */\n    HAL_UART_AbortReceiveCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Handle UART interrupt request.\n  * @param huart UART handle.\n  * @retval None\n  */\nvoid HAL_UART_IRQHandler(UART_HandleTypeDef *huart)\n{\n  uint32_t isrflags   = READ_REG(huart->Instance->ISR);\n  uint32_t cr1its     = READ_REG(huart->Instance->CR1);\n  uint32_t cr3its     = READ_REG(huart->Instance->CR3);\n\n  uint32_t errorflags;\n  uint32_t errorcode;\n\n  /* If no error occurs */\n  errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF));\n  if (errorflags == 0U)\n  {\n    /* UART in mode Receiver ---------------------------------------------------*/\n    if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U)\n        && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U)\n            || ((cr3its & USART_CR3_RXFTIE) != 0U)))\n    {\n      if (huart->RxISR != NULL)\n      {\n        huart->RxISR(huart);\n      }\n      return;\n    }\n  }\n\n  /* If some errors occur */\n  if ((errorflags != 0U)\n      && ((((cr3its & (USART_CR3_RXFTIE | USART_CR3_EIE)) != 0U)\n           || ((cr1its & (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE)) != 0U))))\n  {\n    /* UART parity error interrupt occurred -------------------------------------*/\n    if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))\n    {\n      __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);\n\n      huart->ErrorCode |= HAL_UART_ERROR_PE;\n    }\n\n    /* UART frame error interrupt occurred --------------------------------------*/\n    if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\n    {\n      __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);\n\n      huart->ErrorCode |= HAL_UART_ERROR_FE;\n    }\n\n    /* UART noise error interrupt occurred --------------------------------------*/\n    if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\n    {\n      __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);\n\n      huart->ErrorCode |= HAL_UART_ERROR_NE;\n    }\n\n    /* UART Over-Run interrupt occurred -----------------------------------------*/\n    if (((isrflags & USART_ISR_ORE) != 0U)\n        && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) ||\n            ((cr3its & (USART_CR3_RXFTIE | USART_CR3_EIE)) != 0U)))\n    {\n      __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);\n\n      huart->ErrorCode |= HAL_UART_ERROR_ORE;\n    }\n\n    /* UART Receiver Timeout interrupt occurred ---------------------------------*/\n    if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U))\n    {\n      __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);\n\n      huart->ErrorCode |= HAL_UART_ERROR_RTO;\n    }\n\n    /* Call UART Error Call back function if need be ----------------------------*/\n    if (huart->ErrorCode != HAL_UART_ERROR_NONE)\n    {\n      /* UART in mode Receiver --------------------------------------------------*/\n      if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U)\n          && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U)\n              || ((cr3its & USART_CR3_RXFTIE) != 0U)))\n      {\n        if (huart->RxISR != NULL)\n        {\n          huart->RxISR(huart);\n        }\n      }\n\n      /* If Error is to be considered as blocking :\n          - Receiver Timeout error in Reception\n          - Overrun error in Reception\n          - any error occurs in DMA mode reception\n      */\n      errorcode = huart->ErrorCode;\n      if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||\n          ((errorcode & (HAL_UART_ERROR_RTO | HAL_UART_ERROR_ORE)) != 0U))\n      {\n        /* Blocking error : transfer is aborted\n           Set the UART state ready to be able to start again the process,\n           Disable Rx Interrupts, and disable Rx DMA request, if ongoing */\n        UART_EndRxTransfer(huart);\n\n        /* Abort the UART DMA Rx channel if enabled */\n        if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\n        {\n          /* Disable the UART DMA Rx request if enabled */\n          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n          /* Abort the UART DMA Rx channel */\n          if (huart->hdmarx != NULL)\n          {\n            /* Set the UART DMA Abort callback :\n               will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */\n            huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError;\n\n            /* Abort DMA RX */\n            if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)\n            {\n              /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */\n              huart->hdmarx->XferAbortCallback(huart->hdmarx);\n            }\n          }\n          else\n          {\n            /* Call user error callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n            /*Call registered error callback*/\n            huart->ErrorCallback(huart);\n#else\n            /*Call legacy weak error callback*/\n            HAL_UART_ErrorCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n\n          }\n        }\n        else\n        {\n          /* Call user error callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n          /*Call registered error callback*/\n          huart->ErrorCallback(huart);\n#else\n          /*Call legacy weak error callback*/\n          HAL_UART_ErrorCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n        }\n      }\n      else\n      {\n        /* Non Blocking error : transfer could go on.\n           Error is notified to user through user error callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n        /*Call registered error callback*/\n        huart->ErrorCallback(huart);\n#else\n        /*Call legacy weak error callback*/\n        HAL_UART_ErrorCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n        huart->ErrorCode = HAL_UART_ERROR_NONE;\n      }\n    }\n    return;\n\n  } /* End if some error occurs */\n\n  /* Check current reception Mode :\n     If Reception till IDLE event has been selected : */\n  if ((huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n      && ((isrflags & USART_ISR_IDLE) != 0U)\n      && ((cr1its & USART_ISR_IDLE) != 0U))\n  {\n    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n\n    /* Check if DMA mode is enabled in UART */\n    if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\n    {\n      /* DMA mode enabled */\n      /* Check received length : If all expected data are received, do nothing,\n         (DMA cplt callback will be called).\n         Otherwise, if at least one data has already been received, IDLE event is to be notified to user */\n      uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->hdmarx);\n      if ((nb_remaining_rx_data > 0U)\n          && (nb_remaining_rx_data < huart->RxXferSize))\n      {\n        /* Reception is not complete */\n        huart->RxXferCount = nb_remaining_rx_data;\n\n        /* In Normal mode, end DMA xfer and HAL UART Rx process*/\n        if (huart->hdmarx->Init.Mode != DMA_CIRCULAR)\n        {\n          /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */\n          ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n          /* Disable the DMA transfer for the receiver request by resetting the DMAR bit\n             in the UART CR3 register */\n          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n          /* At end of Rx process, restore huart->RxState to Ready */\n          huart->RxState = HAL_UART_STATE_READY;\n          huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n          ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n\n          /* Last bytes received, so no need as the abort is immediate */\n          (void)HAL_DMA_Abort(huart->hdmarx);\n        }\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n        /*Call registered Rx Event callback*/\n        huart->RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount));\n#else\n        /*Call legacy weak Rx Event callback*/\n        HAL_UARTEx_RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount));\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n      }\n      return;\n    }\n    else\n    {\n      /* DMA mode not enabled */\n      /* Check received length : If all expected data are received, do nothing.\n         Otherwise, if at least one data has already been received, IDLE event is to be notified to user */\n      uint16_t nb_rx_data = huart->RxXferSize - huart->RxXferCount;\n      if ((huart->RxXferCount > 0U)\n          && (nb_rx_data > 0U))\n      {\n        /* Disable the UART Parity Error Interrupt and RXNE interrupts */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));\n\n        /* Disable the UART Error Interrupt:(Frame error, noise error, overrun error) and RX FIFO Threshold interrupt */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));\n\n        /* Rx process is completed, restore huart->RxState to Ready */\n        huart->RxState = HAL_UART_STATE_READY;\n        huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n        /* Clear RxISR function pointer */\n        huart->RxISR = NULL;\n\n        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n        /*Call registered Rx complete callback*/\n        huart->RxEventCallback(huart, nb_rx_data);\n#else\n        /*Call legacy weak Rx Event callback*/\n        HAL_UARTEx_RxEventCallback(huart, nb_rx_data);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n      }\n      return;\n    }\n  }\n\n  /* UART wakeup from Stop mode interrupt occurred ---------------------------*/\n  if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U))\n  {\n    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF);\n\n    /* UART Rx state is not reset as a reception process might be ongoing.\n       If UART handle state fields need to be reset to READY, this could be done in Wakeup callback */\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /* Call registered Wakeup Callback */\n    huart->WakeupCallback(huart);\n#else\n    /* Call legacy weak Wakeup Callback */\n    HAL_UARTEx_WakeupCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n    return;\n  }\n\n  /* UART in mode Transmitter ------------------------------------------------*/\n  if (((isrflags & USART_ISR_TXE_TXFNF) != 0U)\n      && (((cr1its & USART_CR1_TXEIE_TXFNFIE) != 0U)\n          || ((cr3its & USART_CR3_TXFTIE) != 0U)))\n  {\n    if (huart->TxISR != NULL)\n    {\n      huart->TxISR(huart);\n    }\n    return;\n  }\n\n  /* UART in mode Transmitter (transmission end) -----------------------------*/\n  if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U))\n  {\n    UART_EndTransmit_IT(huart);\n    return;\n  }\n\n  /* UART TX Fifo Empty occurred ----------------------------------------------*/\n  if (((isrflags & USART_ISR_TXFE) != 0U) && ((cr1its & USART_CR1_TXFEIE) != 0U))\n  {\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /* Call registered Tx Fifo Empty Callback */\n    huart->TxFifoEmptyCallback(huart);\n#else\n    /* Call legacy weak Tx Fifo Empty Callback */\n    HAL_UARTEx_TxFifoEmptyCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n    return;\n  }\n\n  /* UART RX Fifo Full occurred ----------------------------------------------*/\n  if (((isrflags & USART_ISR_RXFF) != 0U) && ((cr1its & USART_CR1_RXFFIE) != 0U))\n  {\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /* Call registered Rx Fifo Full Callback */\n    huart->RxFifoFullCallback(huart);\n#else\n    /* Call legacy weak Rx Fifo Full Callback */\n    HAL_UARTEx_RxFifoFullCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n    return;\n  }\n}\n\n/**\n  * @brief Tx Transfer completed callback.\n  * @param huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_TxCpltCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  Tx Half Transfer completed callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE: This function should not be modified, when the callback is needed,\n           the HAL_UART_TxHalfCpltCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  Rx Transfer completed callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_RxCpltCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  Rx Half Transfer completed callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE: This function should not be modified, when the callback is needed,\n           the HAL_UART_RxHalfCpltCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  UART error callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_ErrorCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  UART Abort Complete callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_AbortCpltCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  UART Abort Complete callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_AbortTransmitCpltCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  UART Abort Receive Complete callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UART_AbortReceiveCpltCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  Reception Event Callback (Rx event notification called after use of advanced reception service).\n  * @param  huart UART handle\n  * @param  Size  Number of data available in application reception buffer (indicates a position in\n  *               reception buffer until which, data are available)\n  * @retval None\n  */\n__weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n  UNUSED(Size);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UARTEx_RxEventCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup UART_Exported_Functions_Group3 Peripheral Control functions\n  *  @brief   UART control functions\n  *\n@verbatim\n ===============================================================================\n                      ##### Peripheral Control functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to control the UART.\n     (+) HAL_UART_ReceiverTimeout_Config() API allows to configure the receiver timeout value on the fly\n     (+) HAL_UART_EnableReceiverTimeout() API enables the receiver timeout feature\n     (+) HAL_UART_DisableReceiverTimeout() API disables the receiver timeout feature\n     (+) HAL_MultiProcessor_EnableMuteMode() API enables mute mode\n     (+) HAL_MultiProcessor_DisableMuteMode() API disables mute mode\n     (+) HAL_MultiProcessor_EnterMuteMode() API enters mute mode\n     (+) UART_SetConfig() API configures the UART peripheral\n     (+) UART_AdvFeatureConfig() API optionally configures the UART advanced features\n     (+) UART_CheckIdleState() API ensures that TEACK and/or REACK are set after initialization\n     (+) HAL_HalfDuplex_EnableTransmitter() API disables receiver and enables transmitter\n     (+) HAL_HalfDuplex_EnableReceiver() API disables transmitter and enables receiver\n     (+) HAL_LIN_SendBreak() API transmits the break characters\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief  Update on the fly the receiver timeout value in RTOR register.\n  * @param  huart Pointer to a UART_HandleTypeDef structure that contains\n  *                    the configuration information for the specified UART module.\n  * @param  TimeoutValue receiver timeout value in number of baud blocks. The timeout\n  *                     value must be less or equal to 0x0FFFFFFFF.\n  * @retval None\n  */\nvoid HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue)\n{\n  if (!(IS_LPUART_INSTANCE(huart->Instance)))\n  {\n    assert_param(IS_UART_RECEIVER_TIMEOUT_VALUE(TimeoutValue));\n    MODIFY_REG(huart->Instance->RTOR, USART_RTOR_RTO, TimeoutValue);\n  }\n}\n\n/**\n  * @brief  Enable the UART receiver timeout feature.\n  * @param  huart Pointer to a UART_HandleTypeDef structure that contains\n  *                    the configuration information for the specified UART module.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart)\n{\n  if (!(IS_LPUART_INSTANCE(huart->Instance)))\n  {\n    if (huart->gState == HAL_UART_STATE_READY)\n    {\n      /* Process Locked */\n      __HAL_LOCK(huart);\n\n      huart->gState = HAL_UART_STATE_BUSY;\n\n      /* Set the USART RTOEN bit */\n      SET_BIT(huart->Instance->CR2, USART_CR2_RTOEN);\n\n      huart->gState = HAL_UART_STATE_READY;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(huart);\n\n      return HAL_OK;\n    }\n    else\n    {\n      return HAL_BUSY;\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Disable the UART receiver timeout feature.\n  * @param  huart Pointer to a UART_HandleTypeDef structure that contains\n  *                    the configuration information for the specified UART module.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart)\n{\n  if (!(IS_LPUART_INSTANCE(huart->Instance)))\n  {\n    if (huart->gState == HAL_UART_STATE_READY)\n    {\n      /* Process Locked */\n      __HAL_LOCK(huart);\n\n      huart->gState = HAL_UART_STATE_BUSY;\n\n      /* Clear the USART RTOEN bit */\n      CLEAR_BIT(huart->Instance->CR2, USART_CR2_RTOEN);\n\n      huart->gState = HAL_UART_STATE_READY;\n\n      /* Process Unlocked */\n      __HAL_UNLOCK(huart);\n\n      return HAL_OK;\n    }\n    else\n    {\n      return HAL_BUSY;\n    }\n  }\n  else\n  {\n    return HAL_ERROR;\n  }\n}\n\n/**\n  * @brief  Enable UART in mute mode (does not mean UART enters mute mode;\n  *         to enter mute mode, HAL_MultiProcessor_EnterMuteMode() API must be called).\n  * @param  huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)\n{\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Enable USART mute mode by setting the MME bit in the CR1 register */\n  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_MME);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  return (UART_CheckIdleState(huart));\n}\n\n/**\n  * @brief  Disable UART mute mode (does not mean the UART actually exits mute mode\n  *         as it may not have been in mute mode at this very moment).\n  * @param  huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart)\n{\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Disable USART mute mode by clearing the MME bit in the CR1 register */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_MME);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  return (UART_CheckIdleState(huart));\n}\n\n/**\n  * @brief Enter UART mute mode (means UART actually enters mute mode).\n  * @note  To exit from mute mode, HAL_MultiProcessor_DisableMuteMode() API must be called.\n  * @param huart UART handle.\n  * @retval None\n  */\nvoid HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)\n{\n  __HAL_UART_SEND_REQ(huart, UART_MUTE_MODE_REQUEST);\n}\n\n/**\n  * @brief  Enable the UART transmitter and disable the UART receiver.\n  * @param  huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)\n{\n  __HAL_LOCK(huart);\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Clear TE and RE bits */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));\n\n  /* Enable the USART's transmit interface by setting the TE bit in the USART CR1 register */\n  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TE);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Enable the UART receiver and disable the UART transmitter.\n  * @param  huart UART handle.\n  * @retval HAL status.\n  */\nHAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)\n{\n  __HAL_LOCK(huart);\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Clear TE and RE bits */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));\n\n  /* Enable the USART's receive interface by setting the RE bit in the USART CR1 register */\n  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RE);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n\n/**\n  * @brief  Transmit break characters.\n  * @param  huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)\n{\n  /* Check the parameters */\n  assert_param(IS_UART_LIN_INSTANCE(huart->Instance));\n\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Send break characters */\n  __HAL_UART_SEND_REQ(huart, UART_SENDBREAK_REQUEST);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup UART_Exported_Functions_Group4 Peripheral State and Error functions\n  *  @brief   UART Peripheral State functions\n  *\n@verbatim\n  ==============================================================================\n            ##### Peripheral State and Error functions #####\n  ==============================================================================\n    [..]\n    This subsection provides functions allowing to :\n      (+) Return the UART handle state.\n      (+) Return the UART handle error code\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief Return the UART handle state.\n  * @param  huart Pointer to a UART_HandleTypeDef structure that contains\n  *               the configuration information for the specified UART.\n  * @retval HAL state\n  */\nHAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)\n{\n  uint32_t temp1;\n  uint32_t temp2;\n  temp1 = huart->gState;\n  temp2 = huart->RxState;\n\n  return (HAL_UART_StateTypeDef)(temp1 | temp2);\n}\n\n/**\n  * @brief  Return the UART handle error code.\n  * @param  huart Pointer to a UART_HandleTypeDef structure that contains\n  *               the configuration information for the specified UART.\n  * @retval UART Error Code\n  */\nuint32_t HAL_UART_GetError(UART_HandleTypeDef *huart)\n{\n  return huart->ErrorCode;\n}\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @defgroup UART_Private_Functions UART Private Functions\n  * @{\n  */\n\n/**\n  * @brief  Initialize the callbacks to their default values.\n  * @param  huart UART handle.\n  * @retval none\n  */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\nvoid UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)\n{\n  /* Init the UART Callback settings */\n  huart->TxHalfCpltCallback        = HAL_UART_TxHalfCpltCallback;        /* Legacy weak TxHalfCpltCallback        */\n  huart->TxCpltCallback            = HAL_UART_TxCpltCallback;            /* Legacy weak TxCpltCallback            */\n  huart->RxHalfCpltCallback        = HAL_UART_RxHalfCpltCallback;        /* Legacy weak RxHalfCpltCallback        */\n  huart->RxCpltCallback            = HAL_UART_RxCpltCallback;            /* Legacy weak RxCpltCallback            */\n  huart->ErrorCallback             = HAL_UART_ErrorCallback;             /* Legacy weak ErrorCallback             */\n  huart->AbortCpltCallback         = HAL_UART_AbortCpltCallback;         /* Legacy weak AbortCpltCallback         */\n  huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak AbortTransmitCpltCallback */\n  huart->AbortReceiveCpltCallback  = HAL_UART_AbortReceiveCpltCallback;  /* Legacy weak AbortReceiveCpltCallback  */\n  huart->WakeupCallback            = HAL_UARTEx_WakeupCallback;          /* Legacy weak WakeupCallback            */\n  huart->RxFifoFullCallback        = HAL_UARTEx_RxFifoFullCallback;      /* Legacy weak RxFifoFullCallback        */\n  huart->TxFifoEmptyCallback       = HAL_UARTEx_TxFifoEmptyCallback;     /* Legacy weak TxFifoEmptyCallback       */\n  huart->RxEventCallback           = HAL_UARTEx_RxEventCallback;         /* Legacy weak RxEventCallback           */\n\n}\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n\n/**\n  * @brief Configure the UART peripheral.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)\n{\n  uint32_t tmpreg;\n  uint16_t brrtemp;\n  UART_ClockSourceTypeDef clocksource;\n  uint32_t usartdiv;\n  HAL_StatusTypeDef ret               = HAL_OK;\n  uint32_t lpuart_ker_ck_pres;\n  PLL2_ClocksTypeDef pll2_clocks;\n  PLL3_ClocksTypeDef pll3_clocks;\n  uint32_t pclk;\n\n  /* Check the parameters */\n  assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate));\n  assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength));\n  if (UART_INSTANCE_LOWPOWER(huart))\n  {\n    assert_param(IS_LPUART_STOPBITS(huart->Init.StopBits));\n  }\n  else\n  {\n    assert_param(IS_UART_STOPBITS(huart->Init.StopBits));\n    assert_param(IS_UART_ONE_BIT_SAMPLE(huart->Init.OneBitSampling));\n  }\n\n  assert_param(IS_UART_PARITY(huart->Init.Parity));\n  assert_param(IS_UART_MODE(huart->Init.Mode));\n  assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart->Init.HwFlowCtl));\n  assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling));\n  assert_param(IS_UART_PRESCALER(huart->Init.ClockPrescaler));\n\n  /*-------------------------- USART CR1 Configuration -----------------------*/\n  /* Clear M, PCE, PS, TE, RE and OVER8 bits and configure\n  *  the UART Word Length, Parity, Mode and oversampling:\n  *  set the M bits according to huart->Init.WordLength value\n  *  set PCE and PS bits according to huart->Init.Parity value\n  *  set TE and RE bits according to huart->Init.Mode value\n  *  set OVER8 bit according to huart->Init.OverSampling value */\n  tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;\n  MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);\n\n  /*-------------------------- USART CR2 Configuration -----------------------*/\n  /* Configure the UART Stop Bits: Set STOP[13:12] bits according\n  * to huart->Init.StopBits value */\n  MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);\n\n  /*-------------------------- USART CR3 Configuration -----------------------*/\n  /* Configure\n  * - UART HardWare Flow Control: set CTSE and RTSE bits according\n  *   to huart->Init.HwFlowCtl value\n  * - one-bit sampling method versus three samples' majority rule according\n  *   to huart->Init.OneBitSampling (not applicable to LPUART) */\n  tmpreg = (uint32_t)huart->Init.HwFlowCtl;\n\n  if (!(UART_INSTANCE_LOWPOWER(huart)))\n  {\n    tmpreg |= huart->Init.OneBitSampling;\n  }\n  MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);\n\n  /*-------------------------- USART PRESC Configuration -----------------------*/\n  /* Configure\n  * - UART Clock Prescaler : set PRESCALER according to huart->Init.ClockPrescaler value */\n  MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler);\n\n  /*-------------------------- USART BRR Configuration -----------------------*/\n  UART_GETCLOCKSOURCE(huart, clocksource);\n\n  /* Check LPUART instance */\n  if (UART_INSTANCE_LOWPOWER(huart))\n  {\n    /* Retrieve frequency clock */\n    switch (clocksource)\n    {\n      case UART_CLOCKSOURCE_D3PCLK1:\n        pclk = HAL_RCCEx_GetD3PCLK1Freq();\n        break;\n      case UART_CLOCKSOURCE_PLL2:\n        HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n        pclk = pll2_clocks.PLL2_Q_Frequency;\n        break;\n      case UART_CLOCKSOURCE_PLL3:\n        HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n        pclk = pll3_clocks.PLL3_Q_Frequency;\n        break;\n      case UART_CLOCKSOURCE_HSI:\n        if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n        {\n          pclk = (uint32_t)(HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER() >> 3U));\n        }\n        else\n        {\n          pclk = (uint32_t) HSI_VALUE;\n        }\n        break;\n      case UART_CLOCKSOURCE_CSI:\n        pclk = (uint32_t) CSI_VALUE;\n        break;\n      case UART_CLOCKSOURCE_LSE:\n        pclk = (uint32_t) LSE_VALUE;\n        break;\n      default:\n        pclk = 0U;\n        ret = HAL_ERROR;\n        break;\n    }\n\n    /* If proper clock source reported */\n    if (pclk != 0U)\n    {\n      /* Compute clock after Prescaler */\n      lpuart_ker_ck_pres = (pclk / UARTPrescTable[huart->Init.ClockPrescaler]);\n\n      /* Ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */\n      if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) ||\n          (lpuart_ker_ck_pres > (4096U * huart->Init.BaudRate)))\n      {\n        ret = HAL_ERROR;\n      }\n      else\n      {\n        /* Check computed UsartDiv value is in allocated range\n           (it is forbidden to write values lower than 0x300 in the LPUART_BRR register) */\n        usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));\n        if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX))\n        {\n          huart->Instance->BRR = usartdiv;\n        }\n        else\n        {\n          ret = HAL_ERROR;\n        }\n      } /* if ( (lpuart_ker_ck_pres < (3 * huart->Init.BaudRate) ) ||\n                (lpuart_ker_ck_pres > (4096 * huart->Init.BaudRate) )) */\n    } /* if (pclk != 0) */\n  }\n  /* Check UART Over Sampling to set Baud Rate Register */\n  else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)\n  {\n    switch (clocksource)\n    {\n      case UART_CLOCKSOURCE_D2PCLK1:\n        pclk = HAL_RCC_GetPCLK1Freq();\n        break;\n      case UART_CLOCKSOURCE_D2PCLK2:\n        pclk = HAL_RCC_GetPCLK2Freq();\n        break;\n      case UART_CLOCKSOURCE_PLL2:\n        HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n        pclk = pll2_clocks.PLL2_Q_Frequency;\n        break;\n      case UART_CLOCKSOURCE_PLL3:\n        HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n        pclk = pll3_clocks.PLL3_Q_Frequency;\n        break;\n      case UART_CLOCKSOURCE_HSI:\n        if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n        {\n          pclk = (uint32_t)(HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER() >> 3U));\n        }\n        else\n        {\n          pclk = (uint32_t) HSI_VALUE;\n        }\n        break;\n      case UART_CLOCKSOURCE_CSI:\n        pclk = (uint32_t) CSI_VALUE;\n        break;\n      case UART_CLOCKSOURCE_LSE:\n        pclk = (uint32_t) LSE_VALUE;\n        break;\n      default:\n        pclk = 0U;\n        ret = HAL_ERROR;\n        break;\n    }\n\n    /* USARTDIV must be greater than or equal to 0d16 */\n    if (pclk != 0U)\n    {\n      usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));\n      if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))\n      {\n        brrtemp = (uint16_t)(usartdiv & 0xFFF0U);\n        brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);\n        huart->Instance->BRR = brrtemp;\n      }\n      else\n      {\n        ret = HAL_ERROR;\n      }\n    }\n  }\n  else\n  {\n    switch (clocksource)\n    {\n      case UART_CLOCKSOURCE_D2PCLK1:\n        pclk = HAL_RCC_GetPCLK1Freq();\n        break;\n      case UART_CLOCKSOURCE_D2PCLK2:\n        pclk = HAL_RCC_GetPCLK2Freq();\n        break;\n      case UART_CLOCKSOURCE_PLL2:\n        HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks);\n        pclk = pll2_clocks.PLL2_Q_Frequency;\n        break;\n      case UART_CLOCKSOURCE_PLL3:\n        HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks);\n        pclk = pll3_clocks.PLL3_Q_Frequency;\n        break;\n      case UART_CLOCKSOURCE_HSI:\n        if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)\n        {\n          pclk = (uint32_t)(HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER() >> 3U));\n        }\n        else\n        {\n          pclk = (uint32_t) HSI_VALUE;\n        }\n        break;\n      case UART_CLOCKSOURCE_CSI:\n        pclk = (uint32_t) CSI_VALUE;\n        break;\n      case UART_CLOCKSOURCE_LSE:\n        pclk = (uint32_t) LSE_VALUE;\n        break;\n      default:\n        pclk = 0U;\n        ret = HAL_ERROR;\n        break;\n    }\n\n    if (pclk != 0U)\n    {\n      /* USARTDIV must be greater than or equal to 0d16 */\n      usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));\n      if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))\n      {\n        huart->Instance->BRR = (uint16_t)usartdiv;\n      }\n      else\n      {\n        ret = HAL_ERROR;\n      }\n    }\n  }\n\n  /* Initialize the number of data to process during RX/TX ISR execution */\n  huart->NbTxDataToProcess = 1;\n  huart->NbRxDataToProcess = 1;\n\n  /* Clear ISR function pointers */\n  huart->RxISR = NULL;\n  huart->TxISR = NULL;\n\n  return ret;\n}\n\n/**\n  * @brief Configure the UART peripheral advanced features.\n  * @param huart UART handle.\n  * @retval None\n  */\nvoid UART_AdvFeatureConfig(UART_HandleTypeDef *huart)\n{\n  /* Check whether the set of advanced features to configure is properly set */\n  assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit));\n\n  /* if required, configure TX pin active level inversion */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))\n  {\n    assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert));\n    MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);\n  }\n\n  /* if required, configure RX pin active level inversion */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))\n  {\n    assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert));\n    MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);\n  }\n\n  /* if required, configure data inversion */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))\n  {\n    assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert));\n    MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);\n  }\n\n  /* if required, configure RX/TX pins swap */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))\n  {\n    assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap));\n    MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);\n  }\n\n  /* if required, configure RX overrun detection disabling */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))\n  {\n    assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable));\n    MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);\n  }\n\n  /* if required, configure DMA disabling on reception error */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))\n  {\n    assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError));\n    MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);\n  }\n\n  /* if required, configure auto Baud rate detection scheme */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))\n  {\n    assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance));\n    assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable));\n    MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);\n    /* set auto Baudrate detection parameters if detection is enabled */\n    if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)\n    {\n      assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode));\n      MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);\n    }\n  }\n\n  /* if required, configure MSB first on communication line */\n  if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))\n  {\n    assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst));\n    MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);\n  }\n}\n\n/**\n  * @brief Check the UART Idle State.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)\n{\n  uint32_t tickstart;\n\n  /* Initialize the UART ErrorCode */\n  huart->ErrorCode = HAL_UART_ERROR_NONE;\n\n  /* Init tickstart for timeout management */\n  tickstart = HAL_GetTick();\n\n  /* Check if the Transmitter is enabled */\n  if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)\n  {\n    /* Wait until TEACK flag is set */\n    if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)\n    {\n      /* Timeout occurred */\n      return HAL_TIMEOUT;\n    }\n  }\n\n  /* Check if the Receiver is enabled */\n  if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE)\n  {\n    /* Wait until REACK flag is set */\n    if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)\n    {\n      /* Timeout occurred */\n      return HAL_TIMEOUT;\n    }\n  }\n\n  /* Initialize the UART State */\n  huart->gState = HAL_UART_STATE_READY;\n  huart->RxState = HAL_UART_STATE_READY;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  This function handles UART Communication Timeout. It waits\n  *                  until a flag is no longer in the specified status.\n  * @param huart     UART handle.\n  * @param Flag      Specifies the UART flag to check\n  * @param Status    The actual Flag status (SET or RESET)\n  * @param Tickstart Tick start value\n  * @param Timeout   Timeout duration\n  * @retval HAL status\n  */\nHAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,\n                                              uint32_t Tickstart, uint32_t Timeout)\n{\n  /* Wait until flag is set */\n  while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)\n  {\n    /* Check for the Timeout */\n    if (Timeout != HAL_MAX_DELAY)\n    {\n      if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\n      {\n        /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)\n           interrupts for the interrupt process */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE |\n                                                USART_CR1_TXEIE_TXFNFIE));\n        ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n        huart->gState = HAL_UART_STATE_READY;\n        huart->RxState = HAL_UART_STATE_READY;\n\n        __HAL_UNLOCK(huart);\n\n        return HAL_TIMEOUT;\n      }\n\n      if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U)\n      {\n        if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET)\n        {\n          /* Clear Receiver Timeout flag*/\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);\n\n          /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)\n             interrupts for the interrupt process */\n          ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE |\n                                                  USART_CR1_TXEIE_TXFNFIE));\n          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n          huart->gState = HAL_UART_STATE_READY;\n          huart->RxState = HAL_UART_STATE_READY;\n          huart->ErrorCode = HAL_UART_ERROR_RTO;\n\n          /* Process Unlocked */\n          __HAL_UNLOCK(huart);\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n  }\n  return HAL_OK;\n}\n\n/**\n  * @brief  Start Receive operation in interrupt mode.\n  * @note   This function could be called by all HAL UART API providing reception in Interrupt mode.\n  * @note   When calling this function, parameters validity is considered as already checked,\n  *         i.e. Rx State, buffer address, ...\n  *         UART Handle is assumed as Locked.\n  * @param  huart UART handle.\n  * @param  pData Pointer to data buffer (u8 or u16 data elements).\n  * @param  Size  Amount of data elements (u8 or u16) to be received.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\n{\n  huart->pRxBuffPtr  = pData;\n  huart->RxXferSize  = Size;\n  huart->RxXferCount = Size;\n  huart->RxISR       = NULL;\n\n  /* Computation of UART mask to apply to RDR register */\n  UART_MASK_COMPUTATION(huart);\n\n  huart->ErrorCode = HAL_UART_ERROR_NONE;\n  huart->RxState = HAL_UART_STATE_BUSY_RX;\n\n  /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */\n  ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n  /* Configure Rx interrupt processing */\n  if ((huart->FifoMode == UART_FIFOMODE_ENABLE) && (Size >= huart->NbRxDataToProcess))\n  {\n    /* Set the Rx ISR function pointer according to the data word length */\n    if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\n    {\n      huart->RxISR = UART_RxISR_16BIT_FIFOEN;\n    }\n    else\n    {\n      huart->RxISR = UART_RxISR_8BIT_FIFOEN;\n    }\n\n    __HAL_UNLOCK(huart);\n\n    /* Enable the UART Parity Error interrupt and RX FIFO Threshold interrupt */\n    if (huart->Init.Parity != UART_PARITY_NONE)\n    {\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n    }\n    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_RXFTIE);\n  }\n  else\n  {\n    /* Set the Rx ISR function pointer according to the data word length */\n    if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\n    {\n      huart->RxISR = UART_RxISR_16BIT;\n    }\n    else\n    {\n      huart->RxISR = UART_RxISR_8BIT;\n    }\n\n    __HAL_UNLOCK(huart);\n\n    /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */\n    if (huart->Init.Parity != UART_PARITY_NONE)\n    {\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE);\n    }\n    else\n    {\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE);\n    }\n  }\n  return HAL_OK;\n}\n\n/**\n  * @brief  Start Receive operation in DMA mode.\n  * @note   This function could be called by all HAL UART API providing reception in DMA mode.\n  * @note   When calling this function, parameters validity is considered as already checked,\n  *         i.e. Rx State, buffer address, ...\n  *         UART Handle is assumed as Locked.\n  * @param  huart UART handle.\n  * @param  pData Pointer to data buffer (u8 or u16 data elements).\n  * @param  Size  Amount of data elements (u8 or u16) to be received.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef UART_Start_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\n{\n  huart->pRxBuffPtr = pData;\n  huart->RxXferSize = Size;\n\n  huart->ErrorCode = HAL_UART_ERROR_NONE;\n  huart->RxState = HAL_UART_STATE_BUSY_RX;\n\n  if (huart->hdmarx != NULL)\n  {\n    /* Set the UART DMA transfer complete callback */\n    huart->hdmarx->XferCpltCallback = UART_DMAReceiveCplt;\n\n    /* Set the UART DMA Half transfer complete callback */\n    huart->hdmarx->XferHalfCpltCallback = UART_DMARxHalfCplt;\n\n    /* Set the DMA error callback */\n    huart->hdmarx->XferErrorCallback = UART_DMAError;\n\n    /* Set the DMA abort callback */\n    huart->hdmarx->XferAbortCallback = NULL;\n\n    /* Enable the DMA channel */\n    if (HAL_DMA_Start_IT(huart->hdmarx, (uint32_t)&huart->Instance->RDR, (uint32_t)huart->pRxBuffPtr, Size) != HAL_OK)\n    {\n      /* Set error code to DMA */\n      huart->ErrorCode = HAL_UART_ERROR_DMA;\n\n      __HAL_UNLOCK(huart);\n\n      /* Restore huart->RxState to ready */\n      huart->RxState = HAL_UART_STATE_READY;\n\n      return HAL_ERROR;\n    }\n  }\n  __HAL_UNLOCK(huart);\n\n  /* Enable the UART Parity Error Interrupt */\n  if (huart->Init.Parity != UART_PARITY_NONE)\n  {\n    ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n  }\n\n  /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */\n  ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n  /* Enable the DMA transfer for the receiver request by setting the DMAR bit\n  in the UART CR3 register */\n  ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n  return HAL_OK;\n}\n\n\n/**\n  * @brief  End ongoing Tx transfer on UART peripheral (following error detection or Transmit completion).\n  * @param  huart UART handle.\n  * @retval None\n  */\nstatic void UART_EndTxTransfer(UART_HandleTypeDef *huart)\n{\n  /* Disable TXEIE, TCIE, TXFT interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_TXFTIE));\n\n  /* At end of Tx process, restore huart->gState to Ready */\n  huart->gState = HAL_UART_STATE_READY;\n}\n\n\n/**\n  * @brief  End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).\n  * @param  huart UART handle.\n  * @retval None\n  */\nstatic void UART_EndRxTransfer(UART_HandleTypeDef *huart)\n{\n  /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));\n  ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));\n\n  /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */\n  if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n  {\n    ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n  }\n\n  /* At end of Rx process, restore huart->RxState to Ready */\n  huart->RxState = HAL_UART_STATE_READY;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  /* Reset RxIsr function pointer */\n  huart->RxISR = NULL;\n}\n\n\n/**\n  * @brief DMA UART transmit process complete callback.\n  * @param hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n  /* DMA Normal mode */\n  if (hdma->Init.Mode != DMA_CIRCULAR)\n  {\n    huart->TxXferCount = 0U;\n\n    /* Disable the DMA transfer for transmit request by resetting the DMAT bit\n       in the UART CR3 register */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\n\n    /* Enable the UART Transmit Complete Interrupt */\n    ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\n  }\n  /* DMA Circular mode */\n  else\n  {\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /*Call registered Tx complete callback*/\n    huart->TxCpltCallback(huart);\n#else\n    /*Call legacy weak Tx complete callback*/\n    HAL_UART_TxCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n}\n\n/**\n  * @brief DMA UART transmit process half complete callback.\n  * @param hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /*Call registered Tx Half complete callback*/\n  huart->TxHalfCpltCallback(huart);\n#else\n  /*Call legacy weak Tx Half complete callback*/\n  HAL_UART_TxHalfCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief DMA UART receive process complete callback.\n  * @param hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n  /* DMA Normal mode */\n  if (hdma->Init.Mode != DMA_CIRCULAR)\n  {\n    huart->RxXferCount = 0U;\n\n    /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n    /* Disable the DMA transfer for the receiver request by resetting the DMAR bit\n       in the UART CR3 register */\n    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\n\n    /* At end of Rx process, restore huart->RxState to Ready */\n    huart->RxState = HAL_UART_STATE_READY;\n\n    /* If Reception till IDLE event has been selected, Disable IDLE Interrupt */\n    if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n    {\n      ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n    }\n  }\n\n  /* Check current reception Mode :\n     If Reception till IDLE event has been selected : use Rx Event callback */\n  if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n  {\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /*Call registered Rx Event callback*/\n    huart->RxEventCallback(huart, huart->RxXferSize);\n#else\n    /*Call legacy weak Rx Event callback*/\n    HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n  else\n  {\n    /* In other cases : use Rx Complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /*Call registered Rx complete callback*/\n    huart->RxCpltCallback(huart);\n#else\n    /*Call legacy weak Rx complete callback*/\n    HAL_UART_RxCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n}\n\n/**\n  * @brief DMA UART receive process half complete callback.\n  * @param hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n  /* Check current reception Mode :\n     If Reception till IDLE event has been selected : use Rx Event callback */\n  if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n  {\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /*Call registered Rx Event callback*/\n    huart->RxEventCallback(huart, huart->RxXferSize / 2U);\n#else\n    /*Call legacy weak Rx Event callback*/\n    HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize / 2U);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n  else\n  {\n    /* In other cases : use Rx Half Complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    /*Call registered Rx Half complete callback*/\n    huart->RxHalfCpltCallback(huart);\n#else\n    /*Call legacy weak Rx Half complete callback*/\n    HAL_UART_RxHalfCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n  }\n}\n\n/**\n  * @brief DMA UART communication error callback.\n  * @param hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMAError(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n  const HAL_UART_StateTypeDef gstate = huart->gState;\n  const HAL_UART_StateTypeDef rxstate = huart->RxState;\n\n  /* Stop UART DMA Tx request if ongoing */\n  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&\n      (gstate == HAL_UART_STATE_BUSY_TX))\n  {\n    huart->TxXferCount = 0U;\n    UART_EndTxTransfer(huart);\n  }\n\n  /* Stop UART DMA Rx request if ongoing */\n  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&\n      (rxstate == HAL_UART_STATE_BUSY_RX))\n  {\n    huart->RxXferCount = 0U;\n    UART_EndRxTransfer(huart);\n  }\n\n  huart->ErrorCode |= HAL_UART_ERROR_DMA;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /*Call registered error callback*/\n  huart->ErrorCallback(huart);\n#else\n  /*Call legacy weak error callback*/\n  HAL_UART_ErrorCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  DMA UART communication abort callback, when initiated by HAL services on Error\n  *         (To be called at end of DMA Abort procedure following error occurrence).\n  * @param  hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n  huart->RxXferCount = 0U;\n  huart->TxXferCount = 0U;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /*Call registered error callback*/\n  huart->ErrorCallback(huart);\n#else\n  /*Call legacy weak error callback*/\n  HAL_UART_ErrorCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  DMA UART Tx communication abort callback, when initiated by user\n  *         (To be called at end of DMA Tx Abort procedure following user abort request).\n  * @note   When this callback is executed, User Abort complete call back is called only if no\n  *         Abort still ongoing for Rx DMA Handle.\n  * @param  hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n  huart->hdmatx->XferAbortCallback = NULL;\n\n  /* Check if an Abort process is still ongoing */\n  if (huart->hdmarx != NULL)\n  {\n    if (huart->hdmarx->XferAbortCallback != NULL)\n    {\n      return;\n    }\n  }\n\n  /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */\n  huart->TxXferCount = 0U;\n  huart->RxXferCount = 0U;\n\n  /* Reset errorCode */\n  huart->ErrorCode = HAL_UART_ERROR_NONE;\n\n  /* Clear the Error flags in the ICR register */\n  __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n  /* Flush the whole TX FIFO (if needed) */\n  if (huart->FifoMode == UART_FIFOMODE_ENABLE)\n  {\n    __HAL_UART_SEND_REQ(huart, UART_TXDATA_FLUSH_REQUEST);\n  }\n\n  /* Restore huart->gState and huart->RxState to Ready */\n  huart->gState  = HAL_UART_STATE_READY;\n  huart->RxState = HAL_UART_STATE_READY;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  /* Call user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /* Call registered Abort complete callback */\n  huart->AbortCpltCallback(huart);\n#else\n  /* Call legacy weak Abort complete callback */\n  HAL_UART_AbortCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n\n/**\n  * @brief  DMA UART Rx communication abort callback, when initiated by user\n  *         (To be called at end of DMA Rx Abort procedure following user abort request).\n  * @note   When this callback is executed, User Abort complete call back is called only if no\n  *         Abort still ongoing for Tx DMA Handle.\n  * @param  hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n  huart->hdmarx->XferAbortCallback = NULL;\n\n  /* Check if an Abort process is still ongoing */\n  if (huart->hdmatx != NULL)\n  {\n    if (huart->hdmatx->XferAbortCallback != NULL)\n    {\n      return;\n    }\n  }\n\n  /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */\n  huart->TxXferCount = 0U;\n  huart->RxXferCount = 0U;\n\n  /* Reset errorCode */\n  huart->ErrorCode = HAL_UART_ERROR_NONE;\n\n  /* Clear the Error flags in the ICR register */\n  __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n  /* Discard the received data */\n  __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n\n  /* Restore huart->gState and huart->RxState to Ready */\n  huart->gState  = HAL_UART_STATE_READY;\n  huart->RxState = HAL_UART_STATE_READY;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  /* Call user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /* Call registered Abort complete callback */\n  huart->AbortCpltCallback(huart);\n#else\n  /* Call legacy weak Abort complete callback */\n  HAL_UART_AbortCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n\n/**\n  * @brief  DMA UART Tx communication abort callback, when initiated by user by a call to\n  *         HAL_UART_AbortTransmit_IT API (Abort only Tx transfer)\n  *         (This callback is executed at end of DMA Tx Abort procedure following user abort request,\n  *         and leads to user Tx Abort Complete callback execution).\n  * @param  hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\n\n  huart->TxXferCount = 0U;\n\n  /* Flush the whole TX FIFO (if needed) */\n  if (huart->FifoMode == UART_FIFOMODE_ENABLE)\n  {\n    __HAL_UART_SEND_REQ(huart, UART_TXDATA_FLUSH_REQUEST);\n  }\n\n  /* Restore huart->gState to Ready */\n  huart->gState = HAL_UART_STATE_READY;\n\n  /* Call user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /* Call registered Abort Transmit Complete Callback */\n  huart->AbortTransmitCpltCallback(huart);\n#else\n  /* Call legacy weak Abort Transmit Complete Callback */\n  HAL_UART_AbortTransmitCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief  DMA UART Rx communication abort callback, when initiated by user by a call to\n  *         HAL_UART_AbortReceive_IT API (Abort only Rx transfer)\n  *         (This callback is executed at end of DMA Rx Abort procedure following user abort request,\n  *         and leads to user Rx Abort Complete callback execution).\n  * @param  hdma DMA handle.\n  * @retval None\n  */\nstatic void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma)\n{\n  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\n\n  huart->RxXferCount = 0U;\n\n  /* Clear the Error flags in the ICR register */\n  __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\n\n  /* Discard the received data */\n  __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n\n  /* Restore huart->RxState to Ready */\n  huart->RxState = HAL_UART_STATE_READY;\n  huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n  /* Call user Abort complete callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /* Call registered Abort Receive Complete Callback */\n  huart->AbortReceiveCpltCallback(huart);\n#else\n  /* Call legacy weak Abort Receive Complete Callback */\n  HAL_UART_AbortReceiveCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief TX interrupt handler for 7 or 8 bits data word length .\n  * @note   Function is called under interruption only, once\n  *         interruptions have been enabled by HAL_UART_Transmit_IT().\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_TxISR_8BIT(UART_HandleTypeDef *huart)\n{\n  /* Check that a Tx process is ongoing */\n  if (huart->gState == HAL_UART_STATE_BUSY_TX)\n  {\n    if (huart->TxXferCount == 0U)\n    {\n      /* Disable the UART Transmit Data Register Empty Interrupt */\n      ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE_TXFNFIE);\n\n      /* Enable the UART Transmit Complete Interrupt */\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\n    }\n    else\n    {\n      huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF);\n      huart->pTxBuffPtr++;\n      huart->TxXferCount--;\n    }\n  }\n}\n\n/**\n  * @brief TX interrupt handler for 9 bits data word length.\n  * @note   Function is called under interruption only, once\n  *         interruptions have been enabled by HAL_UART_Transmit_IT().\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_TxISR_16BIT(UART_HandleTypeDef *huart)\n{\n  const uint16_t *tmp;\n\n  /* Check that a Tx process is ongoing */\n  if (huart->gState == HAL_UART_STATE_BUSY_TX)\n  {\n    if (huart->TxXferCount == 0U)\n    {\n      /* Disable the UART Transmit Data Register Empty Interrupt */\n      ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE_TXFNFIE);\n\n      /* Enable the UART Transmit Complete Interrupt */\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\n    }\n    else\n    {\n      tmp = (const uint16_t *) huart->pTxBuffPtr;\n      huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);\n      huart->pTxBuffPtr += 2U;\n      huart->TxXferCount--;\n    }\n  }\n}\n\n/**\n  * @brief TX interrupt handler for 7 or 8 bits data word length and FIFO mode is enabled.\n  * @note   Function is called under interruption only, once\n  *         interruptions have been enabled by HAL_UART_Transmit_IT().\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_TxISR_8BIT_FIFOEN(UART_HandleTypeDef *huart)\n{\n  uint16_t  nb_tx_data;\n\n  /* Check that a Tx process is ongoing */\n  if (huart->gState == HAL_UART_STATE_BUSY_TX)\n  {\n    for (nb_tx_data = huart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--)\n    {\n      if (huart->TxXferCount == 0U)\n      {\n        /* Disable the TX FIFO threshold interrupt */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_TXFTIE);\n\n        /* Enable the UART Transmit Complete Interrupt */\n        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\n\n        break; /* force exit loop */\n      }\n      else if (READ_BIT(huart->Instance->ISR, USART_ISR_TXE_TXFNF) != 0U)\n      {\n        huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF);\n        huart->pTxBuffPtr++;\n        huart->TxXferCount--;\n      }\n      else\n      {\n        /* Nothing to do */\n      }\n    }\n  }\n}\n\n/**\n  * @brief TX interrupt handler for 9 bits data word length and FIFO mode is enabled.\n  * @note   Function is called under interruption only, once\n  *         interruptions have been enabled by HAL_UART_Transmit_IT().\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_TxISR_16BIT_FIFOEN(UART_HandleTypeDef *huart)\n{\n  const uint16_t *tmp;\n  uint16_t  nb_tx_data;\n\n  /* Check that a Tx process is ongoing */\n  if (huart->gState == HAL_UART_STATE_BUSY_TX)\n  {\n    for (nb_tx_data = huart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--)\n    {\n      if (huart->TxXferCount == 0U)\n      {\n        /* Disable the TX FIFO threshold interrupt */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_TXFTIE);\n\n        /* Enable the UART Transmit Complete Interrupt */\n        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\n\n        break; /* force exit loop */\n      }\n      else if (READ_BIT(huart->Instance->ISR, USART_ISR_TXE_TXFNF) != 0U)\n      {\n        tmp = (const uint16_t *) huart->pTxBuffPtr;\n        huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);\n        huart->pTxBuffPtr += 2U;\n        huart->TxXferCount--;\n      }\n      else\n      {\n        /* Nothing to do */\n      }\n    }\n  }\n}\n\n/**\n  * @brief  Wrap up transmission in non-blocking mode.\n  * @param  huart pointer to a UART_HandleTypeDef structure that contains\n  *                the configuration information for the specified UART module.\n  * @retval None\n  */\nstatic void UART_EndTransmit_IT(UART_HandleTypeDef *huart)\n{\n  /* Disable the UART Transmit Complete Interrupt */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);\n\n  /* Tx process is ended, restore huart->gState to Ready */\n  huart->gState = HAL_UART_STATE_READY;\n\n  /* Cleat TxISR function pointer */\n  huart->TxISR = NULL;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n  /*Call registered Tx complete callback*/\n  huart->TxCpltCallback(huart);\n#else\n  /*Call legacy weak Tx complete callback*/\n  HAL_UART_TxCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n}\n\n/**\n  * @brief RX interrupt handler for 7 or 8 bits data word length .\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_RxISR_8BIT(UART_HandleTypeDef *huart)\n{\n  uint16_t uhMask = huart->Mask;\n  uint16_t  uhdata;\n\n  /* Check that a Rx process is ongoing */\n  if (huart->RxState == HAL_UART_STATE_BUSY_RX)\n  {\n    uhdata = (uint16_t) READ_REG(huart->Instance->RDR);\n    *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask);\n    huart->pRxBuffPtr++;\n    huart->RxXferCount--;\n\n    if (huart->RxXferCount == 0U)\n    {\n      /* Disable the UART Parity Error Interrupt and RXNE interrupts */\n      ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));\n\n      /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */\n      ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n      /* Rx process is completed, restore huart->RxState to Ready */\n      huart->RxState = HAL_UART_STATE_READY;\n\n      /* Clear RxISR function pointer */\n      huart->RxISR = NULL;\n\n      /* Check current reception Mode :\n         If Reception till IDLE event has been selected : */\n      if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n      {\n        /* Set reception type to Standard */\n        huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n        /* Disable IDLE interrupt */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n\n        if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET)\n        {\n          /* Clear IDLE Flag */\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n        }\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n        /*Call registered Rx Event callback*/\n        huart->RxEventCallback(huart, huart->RxXferSize);\n#else\n        /*Call legacy weak Rx Event callback*/\n        HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n      }\n      else\n      {\n        /* Standard reception API called */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n        /*Call registered Rx complete callback*/\n        huart->RxCpltCallback(huart);\n#else\n        /*Call legacy weak Rx complete callback*/\n        HAL_UART_RxCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n      }\n    }\n  }\n  else\n  {\n    /* Clear RXNE interrupt flag */\n    __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n  }\n}\n\n/**\n  * @brief RX interrupt handler for 9 bits data word length .\n  * @note   Function is called under interruption only, once\n  *         interruptions have been enabled by HAL_UART_Receive_IT()\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_RxISR_16BIT(UART_HandleTypeDef *huart)\n{\n  uint16_t *tmp;\n  uint16_t uhMask = huart->Mask;\n  uint16_t  uhdata;\n\n  /* Check that a Rx process is ongoing */\n  if (huart->RxState == HAL_UART_STATE_BUSY_RX)\n  {\n    uhdata = (uint16_t) READ_REG(huart->Instance->RDR);\n    tmp = (uint16_t *) huart->pRxBuffPtr ;\n    *tmp = (uint16_t)(uhdata & uhMask);\n    huart->pRxBuffPtr += 2U;\n    huart->RxXferCount--;\n\n    if (huart->RxXferCount == 0U)\n    {\n      /* Disable the UART Parity Error Interrupt and RXNE interrupt*/\n      ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));\n\n      /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */\n      ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\n\n      /* Rx process is completed, restore huart->RxState to Ready */\n      huart->RxState = HAL_UART_STATE_READY;\n\n      /* Clear RxISR function pointer */\n      huart->RxISR = NULL;\n\n      /* Check current reception Mode :\n         If Reception till IDLE event has been selected : */\n      if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n      {\n        /* Set reception type to Standard */\n        huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n        /* Disable IDLE interrupt */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n\n        if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET)\n        {\n          /* Clear IDLE Flag */\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n        }\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n        /*Call registered Rx Event callback*/\n        huart->RxEventCallback(huart, huart->RxXferSize);\n#else\n        /*Call legacy weak Rx Event callback*/\n        HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n      }\n      else\n      {\n        /* Standard reception API called */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n        /*Call registered Rx complete callback*/\n        huart->RxCpltCallback(huart);\n#else\n        /*Call legacy weak Rx complete callback*/\n        HAL_UART_RxCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n      }\n    }\n  }\n  else\n  {\n    /* Clear RXNE interrupt flag */\n    __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n  }\n}\n\n/**\n  * @brief RX interrupt handler for 7 or 8  bits data word length and FIFO mode is enabled.\n  * @note   Function is called under interruption only, once\n  *         interruptions have been enabled by HAL_UART_Receive_IT()\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_RxISR_8BIT_FIFOEN(UART_HandleTypeDef *huart)\n{\n  uint16_t  uhMask = huart->Mask;\n  uint16_t  uhdata;\n  uint16_t  nb_rx_data;\n  uint16_t  rxdatacount;\n  uint32_t  isrflags = READ_REG(huart->Instance->ISR);\n  uint32_t  cr1its   = READ_REG(huart->Instance->CR1);\n  uint32_t  cr3its   = READ_REG(huart->Instance->CR3);\n\n  /* Check that a Rx process is ongoing */\n  if (huart->RxState == HAL_UART_STATE_BUSY_RX)\n  {\n    nb_rx_data = huart->NbRxDataToProcess;\n    while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U))\n    {\n      uhdata = (uint16_t) READ_REG(huart->Instance->RDR);\n      *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask);\n      huart->pRxBuffPtr++;\n      huart->RxXferCount--;\n      isrflags = READ_REG(huart->Instance->ISR);\n\n      /* If some non blocking errors occurred */\n      if ((isrflags & (USART_ISR_PE | USART_ISR_FE | USART_ISR_NE)) != 0U)\n      {\n        /* UART parity error interrupt occurred -------------------------------------*/\n        if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))\n        {\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);\n\n          huart->ErrorCode |= HAL_UART_ERROR_PE;\n        }\n\n        /* UART frame error interrupt occurred --------------------------------------*/\n        if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\n        {\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);\n\n          huart->ErrorCode |= HAL_UART_ERROR_FE;\n        }\n\n        /* UART noise error interrupt occurred --------------------------------------*/\n        if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\n        {\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);\n\n          huart->ErrorCode |= HAL_UART_ERROR_NE;\n        }\n\n        /* Call UART Error Call back function if need be ----------------------------*/\n        if (huart->ErrorCode != HAL_UART_ERROR_NONE)\n        {\n          /* Non Blocking error : transfer could go on.\n          Error is notified to user through user error callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n          /*Call registered error callback*/\n          huart->ErrorCallback(huart);\n#else\n          /*Call legacy weak error callback*/\n          HAL_UART_ErrorCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n          huart->ErrorCode = HAL_UART_ERROR_NONE;\n        }\n      }\n\n      if (huart->RxXferCount == 0U)\n      {\n        /* Disable the UART Parity Error Interrupt and RXFT interrupt*/\n        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n\n        /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error)\n           and RX FIFO Threshold interrupt */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));\n\n        /* Rx process is completed, restore huart->RxState to Ready */\n        huart->RxState = HAL_UART_STATE_READY;\n\n        /* Clear RxISR function pointer */\n        huart->RxISR = NULL;\n\n        /* Check current reception Mode :\n           If Reception till IDLE event has been selected : */\n        if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n        {\n          /* Set reception type to Standard */\n          huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n          /* Disable IDLE interrupt */\n          ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n\n          if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET)\n          {\n            /* Clear IDLE Flag */\n            __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n          }\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n          /*Call registered Rx Event callback*/\n          huart->RxEventCallback(huart, huart->RxXferSize);\n#else\n          /*Call legacy weak Rx Event callback*/\n          HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n        }\n        else\n        {\n          /* Standard reception API called */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n          /*Call registered Rx complete callback*/\n          huart->RxCpltCallback(huart);\n#else\n          /*Call legacy weak Rx complete callback*/\n          HAL_UART_RxCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n        }\n      }\n    }\n\n    /* When remaining number of bytes to receive is less than the RX FIFO\n    threshold, next incoming frames are processed as if FIFO mode was\n    disabled (i.e. one interrupt per received frame).\n    */\n    rxdatacount = huart->RxXferCount;\n    if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess))\n    {\n      /* Disable the UART RXFT interrupt*/\n      ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_RXFTIE);\n\n      /* Update the RxISR function pointer */\n      huart->RxISR = UART_RxISR_8BIT;\n\n      /* Enable the UART Data Register Not Empty interrupt */\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE);\n    }\n  }\n  else\n  {\n    /* Clear RXNE interrupt flag */\n    __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n  }\n}\n\n/**\n  * @brief RX interrupt handler for 9 bits data word length and FIFO mode is enabled.\n  * @note   Function is called under interruption only, once\n  *         interruptions have been enabled by HAL_UART_Receive_IT()\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UART_RxISR_16BIT_FIFOEN(UART_HandleTypeDef *huart)\n{\n  uint16_t *tmp;\n  uint16_t  uhMask = huart->Mask;\n  uint16_t  uhdata;\n  uint16_t  nb_rx_data;\n  uint16_t  rxdatacount;\n  uint32_t  isrflags = READ_REG(huart->Instance->ISR);\n  uint32_t  cr1its   = READ_REG(huart->Instance->CR1);\n  uint32_t  cr3its   = READ_REG(huart->Instance->CR3);\n\n  /* Check that a Rx process is ongoing */\n  if (huart->RxState == HAL_UART_STATE_BUSY_RX)\n  {\n    nb_rx_data = huart->NbRxDataToProcess;\n    while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U))\n    {\n      uhdata = (uint16_t) READ_REG(huart->Instance->RDR);\n      tmp = (uint16_t *) huart->pRxBuffPtr ;\n      *tmp = (uint16_t)(uhdata & uhMask);\n      huart->pRxBuffPtr += 2U;\n      huart->RxXferCount--;\n      isrflags = READ_REG(huart->Instance->ISR);\n\n      /* If some non blocking errors occurred */\n      if ((isrflags & (USART_ISR_PE | USART_ISR_FE | USART_ISR_NE)) != 0U)\n      {\n        /* UART parity error interrupt occurred -------------------------------------*/\n        if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))\n        {\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);\n\n          huart->ErrorCode |= HAL_UART_ERROR_PE;\n        }\n\n        /* UART frame error interrupt occurred --------------------------------------*/\n        if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\n        {\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);\n\n          huart->ErrorCode |= HAL_UART_ERROR_FE;\n        }\n\n        /* UART noise error interrupt occurred --------------------------------------*/\n        if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\n        {\n          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);\n\n          huart->ErrorCode |= HAL_UART_ERROR_NE;\n        }\n\n        /* Call UART Error Call back function if need be ----------------------------*/\n        if (huart->ErrorCode != HAL_UART_ERROR_NONE)\n        {\n          /* Non Blocking error : transfer could go on.\n          Error is notified to user through user error callback */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n          /*Call registered error callback*/\n          huart->ErrorCallback(huart);\n#else\n          /*Call legacy weak error callback*/\n          HAL_UART_ErrorCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n          huart->ErrorCode = HAL_UART_ERROR_NONE;\n        }\n      }\n\n      if (huart->RxXferCount == 0U)\n      {\n        /* Disable the UART Parity Error Interrupt and RXFT interrupt*/\n        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);\n\n        /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error)\n           and RX FIFO Threshold interrupt */\n        ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));\n\n        /* Rx process is completed, restore huart->RxState to Ready */\n        huart->RxState = HAL_UART_STATE_READY;\n\n        /* Clear RxISR function pointer */\n        huart->RxISR = NULL;\n\n        /* Check current reception Mode :\n           If Reception till IDLE event has been selected : */\n        if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n        {\n          /* Set reception type to Standard */\n          huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;\n\n          /* Disable IDLE interrupt */\n          ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n\n          if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET)\n          {\n            /* Clear IDLE Flag */\n            __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n          }\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n          /*Call registered Rx Event callback*/\n          huart->RxEventCallback(huart, huart->RxXferSize);\n#else\n          /*Call legacy weak Rx Event callback*/\n          HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n        }\n        else\n        {\n          /* Standard reception API called */\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n          /*Call registered Rx complete callback*/\n          huart->RxCpltCallback(huart);\n#else\n          /*Call legacy weak Rx complete callback*/\n          HAL_UART_RxCpltCallback(huart);\n#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\n        }\n      }\n    }\n\n    /* When remaining number of bytes to receive is less than the RX FIFO\n    threshold, next incoming frames are processed as if FIFO mode was\n    disabled (i.e. one interrupt per received frame).\n    */\n    rxdatacount = huart->RxXferCount;\n    if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess))\n    {\n      /* Disable the UART RXFT interrupt*/\n      ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_RXFTIE);\n\n      /* Update the RxISR function pointer */\n      huart->RxISR = UART_RxISR_16BIT;\n\n      /* Enable the UART Data Register Not Empty interrupt */\n      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE);\n    }\n  }\n  else\n  {\n    /* Clear RXNE interrupt flag */\n    __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\n  }\n}\n\n/**\n  * @}\n  */\n\n#endif /* HAL_UART_MODULE_ENABLED */\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c",
    "content": "/**\n  ******************************************************************************\n  * @file    stm32h7xx_hal_uart_ex.c\n  * @author  MCD Application Team\n  * @brief   Extended UART HAL module driver.\n  *          This file provides firmware functions to manage the following extended\n  *          functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART).\n  *           + Initialization and de-initialization functions\n  *           + Peripheral Control functions\n  *\n  *\n  ******************************************************************************\n  * @attention\n  *\n  * Copyright (c) 2017 STMicroelectronics.\n  * All rights reserved.\n  *\n  * This software is licensed under terms that can be found in the LICENSE file\n  * in the root directory of this software component.\n  * If no LICENSE file comes with this software, it is provided AS-IS.\n  *\n  ******************************************************************************\n  @verbatim\n  ==============================================================================\n               ##### UART peripheral extended features  #####\n  ==============================================================================\n\n    (#) Declare a UART_HandleTypeDef handle structure.\n\n    (#) For the UART RS485 Driver Enable mode, initialize the UART registers\n        by calling the HAL_RS485Ex_Init() API.\n\n    (#) FIFO mode enabling/disabling and RX/TX FIFO threshold programming.\n\n        -@- When UART operates in FIFO mode, FIFO mode must be enabled prior\n            starting RX/TX transfers. Also RX/TX FIFO thresholds must be\n            configured prior starting RX/TX transfers.\n\n  @endverbatim\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"stm32h7xx_hal.h\"\n\n/** @addtogroup STM32H7xx_HAL_Driver\n  * @{\n  */\n\n/** @defgroup UARTEx UARTEx\n  * @brief UART Extended HAL module driver\n  * @{\n  */\n\n#ifdef HAL_UART_MODULE_ENABLED\n\n/* Private typedef -----------------------------------------------------------*/\n/* Private define ------------------------------------------------------------*/\n/** @defgroup UARTEX_Private_Constants UARTEx Private Constants\n  * @{\n  */\n/* UART RX FIFO depth */\n#define RX_FIFO_DEPTH 16U\n\n/* UART TX FIFO depth */\n#define TX_FIFO_DEPTH 16U\n/**\n  * @}\n  */\n\n/* Private macros ------------------------------------------------------------*/\n/* Private variables ---------------------------------------------------------*/\n/* Private function prototypes -----------------------------------------------*/\n/** @defgroup UARTEx_Private_Functions UARTEx Private Functions\n  * @{\n  */\nstatic void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);\nstatic void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart);\n/**\n  * @}\n  */\n\n/* Exported functions --------------------------------------------------------*/\n\n/** @defgroup UARTEx_Exported_Functions  UARTEx Exported Functions\n  * @{\n  */\n\n/** @defgroup UARTEx_Exported_Functions_Group1 Initialization and de-initialization functions\n  * @brief    Extended Initialization and Configuration Functions\n  *\n@verbatim\n===============================================================================\n            ##### Initialization and Configuration functions #####\n ===============================================================================\n    [..]\n    This subsection provides a set of functions allowing to initialize the USARTx or the UARTy\n    in asynchronous mode.\n      (+) For the asynchronous mode the parameters below can be configured:\n        (++) Baud Rate\n        (++) Word Length\n        (++) Stop Bit\n        (++) Parity: If the parity is enabled, then the MSB bit of the data written\n             in the data register is transmitted but is changed by the parity bit.\n        (++) Hardware flow control\n        (++) Receiver/transmitter modes\n        (++) Over Sampling Method\n        (++) One-Bit Sampling Method\n      (+) For the asynchronous mode, the following advanced features can be configured as well:\n        (++) TX and/or RX pin level inversion\n        (++) data logical level inversion\n        (++) RX and TX pins swap\n        (++) RX overrun detection disabling\n        (++) DMA disabling on RX error\n        (++) MSB first on communication line\n        (++) auto Baud rate detection\n    [..]\n    The HAL_RS485Ex_Init() API follows the UART RS485 mode configuration\n     procedures (details for the procedures are available in reference manual).\n\n@endverbatim\n\n  Depending on the frame length defined by the M1 and M0 bits (7-bit,\n  8-bit or 9-bit), the possible UART formats are listed in the\n  following table.\n\n    Table 1. UART frame format.\n    +-----------------------------------------------------------------------+\n    |  M1 bit |  M0 bit |  PCE bit  |             UART frame                |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    0    |    0      |    | SB |    8 bit data   | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    0    |    1      |    | SB | 7 bit data | PB | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    1    |    0      |    | SB |    9 bit data   | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    0    |    1    |    1      |    | SB | 8 bit data | PB | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    1    |    0    |    0      |    | SB |    7 bit data   | STB |     |\n    |---------|---------|-----------|---------------------------------------|\n    |    1    |    0    |    1      |    | SB | 6 bit data | PB | STB |     |\n    +-----------------------------------------------------------------------+\n\n  * @{\n  */\n\n/**\n  * @brief Initialize the RS485 Driver enable feature according to the specified\n  *         parameters in the UART_InitTypeDef and creates the associated handle.\n  * @param huart            UART handle.\n  * @param Polarity         Select the driver enable polarity.\n  *          This parameter can be one of the following values:\n  *          @arg @ref UART_DE_POLARITY_HIGH DE signal is active high\n  *          @arg @ref UART_DE_POLARITY_LOW  DE signal is active low\n  * @param AssertionTime    Driver Enable assertion time:\n  *       5-bit value defining the time between the activation of the DE (Driver Enable)\n  *       signal and the beginning of the start bit. It is expressed in sample time\n  *       units (1/8 or 1/16 bit time, depending on the oversampling rate)\n  * @param DeassertionTime  Driver Enable deassertion time:\n  *       5-bit value defining the time between the end of the last stop bit, in a\n  *       transmitted message, and the de-activation of the DE (Driver Enable) signal.\n  *       It is expressed in sample time units (1/8 or 1/16 bit time, depending on the\n  *       oversampling rate).\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime,\n                                   uint32_t DeassertionTime)\n{\n  uint32_t temp;\n\n  /* Check the UART handle allocation */\n  if (huart == NULL)\n  {\n    return HAL_ERROR;\n  }\n  /* Check the Driver Enable UART instance */\n  assert_param(IS_UART_DRIVER_ENABLE_INSTANCE(huart->Instance));\n\n  /* Check the Driver Enable polarity */\n  assert_param(IS_UART_DE_POLARITY(Polarity));\n\n  /* Check the Driver Enable assertion time */\n  assert_param(IS_UART_ASSERTIONTIME(AssertionTime));\n\n  /* Check the Driver Enable deassertion time */\n  assert_param(IS_UART_DEASSERTIONTIME(DeassertionTime));\n\n  if (huart->gState == HAL_UART_STATE_RESET)\n  {\n    /* Allocate lock resource and initialize it */\n    huart->Lock = HAL_UNLOCKED;\n\n#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\n    UART_InitCallbacksToDefault(huart);\n\n    if (huart->MspInitCallback == NULL)\n    {\n      huart->MspInitCallback = HAL_UART_MspInit;\n    }\n\n    /* Init the low level hardware */\n    huart->MspInitCallback(huart);\n#else\n    /* Init the low level hardware : GPIO, CLOCK, CORTEX */\n    HAL_UART_MspInit(huart);\n#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\n  }\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Disable the Peripheral */\n  __HAL_UART_DISABLE(huart);\n\n  /* Set the UART Communication parameters */\n  if (UART_SetConfig(huart) == HAL_ERROR)\n  {\n    return HAL_ERROR;\n  }\n\n  if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\n  {\n    UART_AdvFeatureConfig(huart);\n  }\n\n  /* Enable the Driver Enable mode by setting the DEM bit in the CR3 register */\n  SET_BIT(huart->Instance->CR3, USART_CR3_DEM);\n\n  /* Set the Driver Enable polarity */\n  MODIFY_REG(huart->Instance->CR3, USART_CR3_DEP, Polarity);\n\n  /* Set the Driver Enable assertion and deassertion times */\n  temp = (AssertionTime << UART_CR1_DEAT_ADDRESS_LSB_POS);\n  temp |= (DeassertionTime << UART_CR1_DEDT_ADDRESS_LSB_POS);\n  MODIFY_REG(huart->Instance->CR1, (USART_CR1_DEDT | USART_CR1_DEAT), temp);\n\n  /* Enable the Peripheral */\n  __HAL_UART_ENABLE(huart);\n\n  /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\n  return (UART_CheckIdleState(huart));\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup UARTEx_Exported_Functions_Group2 IO operation functions\n  *  @brief Extended functions\n  *\n@verbatim\n ===============================================================================\n                      ##### IO operation functions #####\n ===============================================================================\n    This subsection provides a set of Wakeup and FIFO mode related callback functions.\n\n    (#) Wakeup from Stop mode Callback:\n        (+) HAL_UARTEx_WakeupCallback()\n\n    (#) TX/RX Fifos Callbacks:\n        (+) HAL_UARTEx_RxFifoFullCallback()\n        (+) HAL_UARTEx_TxFifoEmptyCallback()\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief UART wakeup from Stop mode callback.\n  * @param huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UARTEx_WakeupCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  UART RX Fifo full callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UARTEx_RxFifoFullCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UARTEx_RxFifoFullCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @brief  UART TX Fifo empty callback.\n  * @param  huart UART handle.\n  * @retval None\n  */\n__weak void HAL_UARTEx_TxFifoEmptyCallback(UART_HandleTypeDef *huart)\n{\n  /* Prevent unused argument(s) compilation warning */\n  UNUSED(huart);\n\n  /* NOTE : This function should not be modified, when the callback is needed,\n            the HAL_UARTEx_TxFifoEmptyCallback can be implemented in the user file.\n   */\n}\n\n/**\n  * @}\n  */\n\n/** @defgroup UARTEx_Exported_Functions_Group3 Peripheral Control functions\n  * @brief    Extended Peripheral Control functions\n  *\n@verbatim\n ===============================================================================\n                      ##### Peripheral Control functions #####\n ===============================================================================\n    [..] This section provides the following functions:\n     (+) HAL_MultiProcessorEx_AddressLength_Set() API optionally sets the UART node address\n         detection length to more than 4 bits for multiprocessor address mark wake up.\n     (+) HAL_UARTEx_StopModeWakeUpSourceConfig() API defines the wake-up from stop mode\n         trigger: address match, Start Bit detection or RXNE bit status.\n     (+) HAL_UARTEx_EnableStopMode() API enables the UART to wake up the MCU from stop mode\n     (+) HAL_UARTEx_DisableStopMode() API disables the above functionality\n     (+) HAL_UARTEx_EnableFifoMode() API enables the FIFO mode\n     (+) HAL_UARTEx_DisableFifoMode() API disables the FIFO mode\n     (+) HAL_UARTEx_SetTxFifoThreshold() API sets the TX FIFO threshold\n     (+) HAL_UARTEx_SetRxFifoThreshold() API sets the RX FIFO threshold\n\n    [..] This subsection also provides a set of additional functions providing enhanced reception\n    services to user. (For example, these functions allow application to handle use cases\n    where number of data to be received is unknown).\n\n    (#) Compared to standard reception services which only consider number of received\n        data elements as reception completion criteria, these functions also consider additional events\n        as triggers for updating reception status to caller :\n       (+) Detection of inactivity period (RX line has not been active for a given period).\n          (++) RX inactivity detected by IDLE event, i.e. RX line has been in idle state (normally high state)\n               for 1 frame time, after last received byte.\n          (++) RX inactivity detected by RTO, i.e. line has been in idle state\n               for a programmable time, after last received byte.\n       (+) Detection that a specific character has been received.\n\n    (#) There are two mode of transfer:\n       (+) Blocking mode: The reception is performed in polling mode, until either expected number of data is received,\n           or till IDLE event occurs. Reception is handled only during function execution.\n           When function exits, no data reception could occur. HAL status and number of actually received data elements,\n           are returned by function after finishing transfer.\n       (+) Non-Blocking mode: The reception is performed using Interrupts or DMA.\n           These API's return the HAL status.\n           The end of the data processing will be indicated through the\n           dedicated UART IRQ when using Interrupt mode or the DMA IRQ when using DMA mode.\n           The HAL_UARTEx_RxEventCallback() user callback will be executed during Receive process\n           The HAL_UART_ErrorCallback()user callback will be executed when a reception error is detected.\n\n    (#) Blocking mode API:\n        (+) HAL_UARTEx_ReceiveToIdle()\n\n    (#) Non-Blocking mode API with Interrupt:\n        (+) HAL_UARTEx_ReceiveToIdle_IT()\n\n    (#) Non-Blocking mode API with DMA:\n        (+) HAL_UARTEx_ReceiveToIdle_DMA()\n\n@endverbatim\n  * @{\n  */\n\n/**\n  * @brief By default in multiprocessor mode, when the wake up method is set\n  *        to address mark, the UART handles only 4-bit long addresses detection;\n  *        this API allows to enable longer addresses detection (6-, 7- or 8-bit\n  *        long).\n  * @note  Addresses detection lengths are: 6-bit address detection in 7-bit data mode,\n  *        7-bit address detection in 8-bit data mode, 8-bit address detection in 9-bit data mode.\n  * @param huart         UART handle.\n  * @param AddressLength This parameter can be one of the following values:\n  *          @arg @ref UART_ADDRESS_DETECT_4B 4-bit long address\n  *          @arg @ref UART_ADDRESS_DETECT_7B 6-, 7- or 8-bit long address\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength)\n{\n  /* Check the UART handle allocation */\n  if (huart == NULL)\n  {\n    return HAL_ERROR;\n  }\n\n  /* Check the address length parameter */\n  assert_param(IS_UART_ADDRESSLENGTH_DETECT(AddressLength));\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Disable the Peripheral */\n  __HAL_UART_DISABLE(huart);\n\n  /* Set the address length */\n  MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, AddressLength);\n\n  /* Enable the Peripheral */\n  __HAL_UART_ENABLE(huart);\n\n  /* TEACK and/or REACK to check before moving huart->gState to Ready */\n  return (UART_CheckIdleState(huart));\n}\n\n/**\n  * @brief Set Wakeup from Stop mode interrupt flag selection.\n  * @note It is the application responsibility to enable the interrupt used as\n  *       usart_wkup interrupt source before entering low-power mode.\n  * @param huart           UART handle.\n  * @param WakeUpSelection Address match, Start Bit detection or RXNE/RXFNE bit status.\n  *          This parameter can be one of the following values:\n  *          @arg @ref UART_WAKEUP_ON_ADDRESS\n  *          @arg @ref UART_WAKEUP_ON_STARTBIT\n  *          @arg @ref UART_WAKEUP_ON_READDATA_NONEMPTY\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection)\n{\n  HAL_StatusTypeDef status = HAL_OK;\n  uint32_t tickstart;\n\n  /* check the wake-up from stop mode UART instance */\n  assert_param(IS_UART_WAKEUP_FROMSTOP_INSTANCE(huart->Instance));\n  /* check the wake-up selection parameter */\n  assert_param(IS_UART_WAKEUP_SELECTION(WakeUpSelection.WakeUpEvent));\n\n  /* Process Locked */\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Disable the Peripheral */\n  __HAL_UART_DISABLE(huart);\n\n  /* Set the wake-up selection scheme */\n  MODIFY_REG(huart->Instance->CR3, USART_CR3_WUS, WakeUpSelection.WakeUpEvent);\n\n  if (WakeUpSelection.WakeUpEvent == UART_WAKEUP_ON_ADDRESS)\n  {\n    UARTEx_Wakeup_AddressConfig(huart, WakeUpSelection);\n  }\n\n  /* Enable the Peripheral */\n  __HAL_UART_ENABLE(huart);\n\n  /* Init tickstart for timeout management */\n  tickstart = HAL_GetTick();\n\n  /* Wait until REACK flag is set */\n  if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)\n  {\n    status = HAL_TIMEOUT;\n  }\n  else\n  {\n    /* Initialize the UART State */\n    huart->gState = HAL_UART_STATE_READY;\n  }\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(huart);\n\n  return status;\n}\n\n/**\n  * @brief Enable UART Stop Mode.\n  * @note The UART is able to wake up the MCU from Stop 1 mode as long as UART clock is HSI or LSE.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart)\n{\n  /* Process Locked */\n  __HAL_LOCK(huart);\n\n  /* Set UESM bit */\n  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_UESM);\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Disable UART Stop Mode.\n  * @param huart UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart)\n{\n  /* Process Locked */\n  __HAL_LOCK(huart);\n\n  /* Clear UESM bit */\n  ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_UESM);\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Enable the FIFO mode.\n  * @param huart      UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_EnableFifoMode(UART_HandleTypeDef *huart)\n{\n  uint32_t tmpcr1;\n\n  /* Check parameters */\n  assert_param(IS_UART_FIFO_INSTANCE(huart->Instance));\n\n  /* Process Locked */\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Save actual UART configuration */\n  tmpcr1 = READ_REG(huart->Instance->CR1);\n\n  /* Disable UART */\n  __HAL_UART_DISABLE(huart);\n\n  /* Enable FIFO mode */\n  SET_BIT(tmpcr1, USART_CR1_FIFOEN);\n  huart->FifoMode = UART_FIFOMODE_ENABLE;\n\n  /* Restore UART configuration */\n  WRITE_REG(huart->Instance->CR1, tmpcr1);\n\n  /* Determine the number of data to process during RX/TX ISR execution */\n  UARTEx_SetNbDataToProcess(huart);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Disable the FIFO mode.\n  * @param huart      UART handle.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart)\n{\n  uint32_t tmpcr1;\n\n  /* Check parameters */\n  assert_param(IS_UART_FIFO_INSTANCE(huart->Instance));\n\n  /* Process Locked */\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Save actual UART configuration */\n  tmpcr1 = READ_REG(huart->Instance->CR1);\n\n  /* Disable UART */\n  __HAL_UART_DISABLE(huart);\n\n  /* Enable FIFO mode */\n  CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN);\n  huart->FifoMode = UART_FIFOMODE_DISABLE;\n\n  /* Restore UART configuration */\n  WRITE_REG(huart->Instance->CR1, tmpcr1);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Set the TXFIFO threshold.\n  * @param huart      UART handle.\n  * @param Threshold  TX FIFO threshold value\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_TXFIFO_THRESHOLD_1_8\n  *            @arg @ref UART_TXFIFO_THRESHOLD_1_4\n  *            @arg @ref UART_TXFIFO_THRESHOLD_1_2\n  *            @arg @ref UART_TXFIFO_THRESHOLD_3_4\n  *            @arg @ref UART_TXFIFO_THRESHOLD_7_8\n  *            @arg @ref UART_TXFIFO_THRESHOLD_8_8\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold)\n{\n  uint32_t tmpcr1;\n\n  /* Check parameters */\n  assert_param(IS_UART_FIFO_INSTANCE(huart->Instance));\n  assert_param(IS_UART_TXFIFO_THRESHOLD(Threshold));\n\n  /* Process Locked */\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Save actual UART configuration */\n  tmpcr1 = READ_REG(huart->Instance->CR1);\n\n  /* Disable UART */\n  __HAL_UART_DISABLE(huart);\n\n  /* Update TX threshold configuration */\n  MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold);\n\n  /* Determine the number of data to process during RX/TX ISR execution */\n  UARTEx_SetNbDataToProcess(huart);\n\n  /* Restore UART configuration */\n  WRITE_REG(huart->Instance->CR1, tmpcr1);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief  Set the RXFIFO threshold.\n  * @param huart      UART handle.\n  * @param Threshold  RX FIFO threshold value\n  *          This parameter can be one of the following values:\n  *            @arg @ref UART_RXFIFO_THRESHOLD_1_8\n  *            @arg @ref UART_RXFIFO_THRESHOLD_1_4\n  *            @arg @ref UART_RXFIFO_THRESHOLD_1_2\n  *            @arg @ref UART_RXFIFO_THRESHOLD_3_4\n  *            @arg @ref UART_RXFIFO_THRESHOLD_7_8\n  *            @arg @ref UART_RXFIFO_THRESHOLD_8_8\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold)\n{\n  uint32_t tmpcr1;\n\n  /* Check the parameters */\n  assert_param(IS_UART_FIFO_INSTANCE(huart->Instance));\n  assert_param(IS_UART_RXFIFO_THRESHOLD(Threshold));\n\n  /* Process Locked */\n  __HAL_LOCK(huart);\n\n  huart->gState = HAL_UART_STATE_BUSY;\n\n  /* Save actual UART configuration */\n  tmpcr1 = READ_REG(huart->Instance->CR1);\n\n  /* Disable UART */\n  __HAL_UART_DISABLE(huart);\n\n  /* Update RX threshold configuration */\n  MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold);\n\n  /* Determine the number of data to process during RX/TX ISR execution */\n  UARTEx_SetNbDataToProcess(huart);\n\n  /* Restore UART configuration */\n  WRITE_REG(huart->Instance->CR1, tmpcr1);\n\n  huart->gState = HAL_UART_STATE_READY;\n\n  /* Process Unlocked */\n  __HAL_UNLOCK(huart);\n\n  return HAL_OK;\n}\n\n/**\n  * @brief Receive an amount of data in blocking mode till either the expected number of data\n  *        is received or an IDLE event occurs.\n  * @note  HAL_OK is returned if reception is completed (expected number of data has been received)\n  *        or if reception is stopped after IDLE event (less than the expected number of data has been received)\n  *        In this case, RxLen output parameter indicates number of data available in reception buffer.\n  * @note  When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *        the received data is handled as a set of uint16_t. In this case, Size must indicate the number\n  *        of uint16_t available through pData.\n  * @note When FIFO mode is enabled, the RXFNE flag is set as long as the RXFIFO\n  *       is not empty. Read operations from the RDR register are performed when\n  *       RXFNE flag is set. From hardware perspective, RXFNE flag and\n  *       RXNE are mapped on the same bit-field.\n  * @param huart   UART handle.\n  * @param pData   Pointer to data buffer (uint8_t or uint16_t data elements).\n  * @param Size    Amount of data elements (uint8_t or uint16_t) to be received.\n  * @param RxLen   Number of data elements finally received\n  *                (could be lower than Size, in case reception ends on IDLE event)\n  * @param Timeout Timeout duration expressed in ms (covers the whole reception sequence).\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen,\n                                           uint32_t Timeout)\n{\n  uint8_t  *pdata8bits;\n  uint16_t *pdata16bits;\n  uint16_t uhMask;\n  uint32_t tickstart;\n\n  /* Check that a Rx process is not already ongoing */\n  if (huart->RxState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return  HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    huart->ErrorCode = HAL_UART_ERROR_NONE;\n    huart->RxState = HAL_UART_STATE_BUSY_RX;\n    huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE;\n\n    /* Init tickstart for timeout management */\n    tickstart = HAL_GetTick();\n\n    huart->RxXferSize  = Size;\n    huart->RxXferCount = Size;\n\n    /* Computation of UART mask to apply to RDR register */\n    UART_MASK_COMPUTATION(huart);\n    uhMask = huart->Mask;\n\n    /* In case of 9bits/No Parity transfer, pRxData needs to be handled as a uint16_t pointer */\n    if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\n    {\n      pdata8bits  = NULL;\n      pdata16bits = (uint16_t *) pData;\n    }\n    else\n    {\n      pdata8bits  = pData;\n      pdata16bits = NULL;\n    }\n\n    __HAL_UNLOCK(huart);\n\n    /* Initialize output number of received elements */\n    *RxLen = 0U;\n\n    /* as long as data have to be received */\n    while (huart->RxXferCount > 0U)\n    {\n      /* Check if IDLE flag is set */\n      if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE))\n      {\n        /* Clear IDLE flag in ISR */\n        __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n\n        /* If Set, but no data ever received, clear flag without exiting loop */\n        /* If Set, and data has already been received, this means Idle Event is valid : End reception */\n        if (*RxLen > 0U)\n        {\n          huart->RxState = HAL_UART_STATE_READY;\n\n          return HAL_OK;\n        }\n      }\n\n      /* Check if RXNE flag is set */\n      if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RXNE))\n      {\n        if (pdata8bits == NULL)\n        {\n          *pdata16bits = (uint16_t)(huart->Instance->RDR & uhMask);\n          pdata16bits++;\n        }\n        else\n        {\n          *pdata8bits = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask);\n          pdata8bits++;\n        }\n        /* Increment number of received elements */\n        *RxLen += 1U;\n        huart->RxXferCount--;\n      }\n\n      /* Check for the Timeout */\n      if (Timeout != HAL_MAX_DELAY)\n      {\n        if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\n        {\n          huart->RxState = HAL_UART_STATE_READY;\n\n          return HAL_TIMEOUT;\n        }\n      }\n    }\n\n    /* Set number of received elements in output parameter : RxLen */\n    *RxLen = huart->RxXferSize - huart->RxXferCount;\n    /* At end of Rx process, restore huart->RxState to Ready */\n    huart->RxState = HAL_UART_STATE_READY;\n\n    return HAL_OK;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Receive an amount of data in interrupt mode till either the expected number of data\n  *        is received or an IDLE event occurs.\n  * @note  Reception is initiated by this function call. Further progress of reception is achieved thanks\n  *        to UART interrupts raised by RXNE and IDLE events. Callback is called at end of reception indicating\n  *        number of received data elements.\n  * @note  When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *        the received data is handled as a set of uint16_t. In this case, Size must indicate the number\n  *        of uint16_t available through pData.\n  * @param huart UART handle.\n  * @param pData Pointer to data buffer (uint8_t or uint16_t data elements).\n  * @param Size  Amount of data elements (uint8_t or uint16_t) to be received.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\n{\n  HAL_StatusTypeDef status;\n\n  /* Check that a Rx process is not already ongoing */\n  if (huart->RxState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    /* Set Reception type to reception till IDLE Event*/\n    huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE;\n\n    status =  UART_Start_Receive_IT(huart, pData, Size);\n\n    /* Check Rx process has been successfully started */\n    if (status == HAL_OK)\n    {\n      if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n      {\n        __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n      }\n      else\n      {\n        /* In case of errors already pending when reception is started,\n           Interrupts may have already been raised and lead to reception abortion.\n           (Overrun error for instance).\n           In such case Reception Type has been reset to HAL_UART_RECEPTION_STANDARD. */\n        status = HAL_ERROR;\n      }\n    }\n\n    return status;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @brief Receive an amount of data in DMA mode till either the expected number\n  *        of data is received or an IDLE event occurs.\n  * @note  Reception is initiated by this function call. Further progress of reception is achieved thanks\n  *        to DMA services, transferring automatically received data elements in user reception buffer and\n  *        calling registered callbacks at half/end of reception. UART IDLE events are also used to consider\n  *        reception phase as ended. In all cases, callback execution will indicate number of received data elements.\n  * @note  When the UART parity is enabled (PCE = 1), the received data contain\n  *        the parity bit (MSB position).\n  * @note  When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),\n  *        the received data is handled as a set of uint16_t. In this case, Size must indicate the number\n  *        of uint16_t available through pData.\n  * @param huart UART handle.\n  * @param pData Pointer to data buffer (uint8_t or uint16_t data elements).\n  * @param Size  Amount of data elements (uint8_t or uint16_t) to be received.\n  * @retval HAL status\n  */\nHAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\n{\n  HAL_StatusTypeDef status;\n\n  /* Check that a Rx process is not already ongoing */\n  if (huart->RxState == HAL_UART_STATE_READY)\n  {\n    if ((pData == NULL) || (Size == 0U))\n    {\n      return HAL_ERROR;\n    }\n\n    __HAL_LOCK(huart);\n\n    /* Set Reception type to reception till IDLE Event*/\n    huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE;\n\n    status =  UART_Start_Receive_DMA(huart, pData, Size);\n\n    /* Check Rx process has been successfully started */\n    if (status == HAL_OK)\n    {\n      if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)\n      {\n        __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);\n        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);\n      }\n      else\n      {\n        /* In case of errors already pending when reception is started,\n           Interrupts may have already been raised and lead to reception abortion.\n           (Overrun error for instance).\n           In such case Reception Type has been reset to HAL_UART_RECEPTION_STANDARD. */\n        status = HAL_ERROR;\n      }\n    }\n\n    return status;\n  }\n  else\n  {\n    return HAL_BUSY;\n  }\n}\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n/** @addtogroup UARTEx_Private_Functions\n  * @{\n  */\n\n/**\n  * @brief Initialize the UART wake-up from stop mode parameters when triggered by address detection.\n  * @param huart           UART handle.\n  * @param WakeUpSelection UART wake up from stop mode parameters.\n  * @retval None\n  */\nstatic void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection)\n{\n  assert_param(IS_UART_ADDRESSLENGTH_DETECT(WakeUpSelection.AddressLength));\n\n  /* Set the USART address length */\n  MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, WakeUpSelection.AddressLength);\n\n  /* Set the USART address node */\n  MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)WakeUpSelection.Address << UART_CR2_ADDRESS_LSB_POS));\n}\n\n/**\n  * @brief Calculate the number of data to process in RX/TX ISR.\n  * @note The RX FIFO depth and the TX FIFO depth is extracted from\n  *       the UART configuration registers.\n  * @param huart UART handle.\n  * @retval None\n  */\nstatic void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart)\n{\n  uint8_t rx_fifo_depth;\n  uint8_t tx_fifo_depth;\n  uint8_t rx_fifo_threshold;\n  uint8_t tx_fifo_threshold;\n  static const uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U};\n  static const uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U};\n\n  if (huart->FifoMode == UART_FIFOMODE_DISABLE)\n  {\n    huart->NbTxDataToProcess = 1U;\n    huart->NbRxDataToProcess = 1U;\n  }\n  else\n  {\n    rx_fifo_depth = RX_FIFO_DEPTH;\n    tx_fifo_depth = TX_FIFO_DEPTH;\n    rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos);\n    tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos);\n    huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /\n                               (uint16_t)denominator[tx_fifo_threshold];\n    huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /\n                               (uint16_t)denominator[rx_fifo_threshold];\n  }\n}\n/**\n  * @}\n  */\n\n#endif /* HAL_UART_MODULE_ENABLED */\n\n/**\n  * @}\n  */\n\n/**\n  * @}\n  */\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/.vscode/c_cpp_properties.json",
    "content": "{\n    \"configurations\": [\n        {\n            \"name\": \"hexapod\",\n            \"includePath\": [\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Core\\\\Inc\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Drivers\\\\STM32H7xx_HAL_Driver\\\\Inc\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Drivers\\\\STM32H7xx_HAL_Driver\\\\Inc\\\\Legacy\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Drivers\\\\CMSIS\\\\Device\\\\ST\\\\STM32H7xx\\\\Include\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Drivers\\\\CMSIS\\\\Include\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\MDK-ARM\\\\USER\\\\APP\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Middlewares\\\\Third_Party\\\\FreeRTOS\\\\Source\\\\include\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Middlewares\\\\Third_Party\\\\FreeRTOS\\\\Source\\\\CMSIS_RTOS\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Middlewares\\\\Third_Party\\\\FreeRTOS\\\\Source\\\\portable\\\\RVDS\\\\ARM_CM4F\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\MDK-ARM\\\\USER\\\\TASK\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Middlewares\\\\ST\\\\ARM\\\\DSP\\\\Inc\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Drivers\\\\CMSIS\\\\DSP\\\\Lib\\\\ARM\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\MDK-ARM\\\\USER\\\\DMP\",\n                \"D:\\\\stm32\\\\UV5\\\\Keil\\\\Keil5\\\\ARM\\\\ARMCC\\\\include\",\n                \"D:\\\\stm32\\\\UV5\\\\Keil\\\\Keil5\\\\ARM\\\\ARMCC\\\\include\\\\rw\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\MDK-ARM\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Core\\\\Src\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Drivers\\\\STM32H7xx_HAL_Driver\\\\Src\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Middlewares\\\\Third_Party\\\\FreeRTOS\\\\Source\",\n                \"e:\\\\Hexapod\\\\Hexapod\\\\SourceCode\\\\Middlewares\\\\Third_Party\\\\FreeRTOS\\\\Source\\\\portable\\\\MemMang\"\n            ],\n            \"defines\": [\n                \"USE_HAL_DRIVER\",\n                \"STM32H750xx\",\n                \"ARM_MATH_CM7\",\n                \"__CC_ARM\",\n                \"__arm__\",\n                \"__align(x)=\",\n                \"__ALIGNOF__(x)=\",\n                \"__alignof__(x)=\",\n                \"__asm(x)=\",\n                \"__forceinline=\",\n                \"__restrict=\",\n                \"__global_reg(n)=\",\n                \"__inline=\",\n                \"__int64=long long\",\n                \"__INTADDR__(expr)=0\",\n                \"__irq=\",\n                \"__packed=\",\n                \"__pure=\",\n                \"__smc(n)=\",\n                \"__svc(n)=\",\n                \"__svc_indirect(n)=\",\n                \"__svc_indirect_r7(n)=\",\n                \"__value_in_regs=\",\n                \"__weak=\",\n                \"__writeonly=\",\n                \"__declspec(x)=\",\n                \"__attribute__(x)=\",\n                \"__nonnull__(x)=\",\n                \"__register=\",\n                \"__breakpoint(x)=\",\n                \"__cdp(x,y,z)=\",\n                \"__clrex()=\",\n                \"__clz(x)=0U\",\n                \"__current_pc()=0U\",\n                \"__current_sp()=0U\",\n                \"__disable_fiq()=\",\n                \"__disable_irq()=\",\n                \"__dmb(x)=\",\n                \"__dsb(x)=\",\n                \"__enable_fiq()=\",\n                \"__enable_irq()=\",\n                \"__fabs(x)=0.0\",\n                \"__fabsf(x)=0.0f\",\n                \"__force_loads()=\",\n                \"__force_stores()=\",\n                \"__isb(x)=\",\n                \"__ldrex(x)=0U\",\n                \"__ldrexd(x)=0U\",\n                \"__ldrt(x)=0U\",\n                \"__memory_changed()=\",\n                \"__nop()=\",\n                \"__pld(...)=\",\n                \"__pli(...)=\",\n                \"__qadd(x,y)=0\",\n                \"__qdbl(x)=0\",\n                \"__qsub(x,y)=0\",\n                \"__rbit(x)=0U\",\n                \"__rev(x)=0U\",\n                \"__return_address()=0U\",\n                \"__ror(x,y)=0U\",\n                \"__schedule_barrier()=\",\n                \"__semihost(x,y)=0\",\n                \"__sev()=\",\n                \"__sqrt(x)=0.0\",\n                \"__sqrtf(x)=0.0f\",\n                \"__ssat(x,y)=0\",\n                \"__strex(x,y)=0U\",\n                \"__strexd(x,y)=0\",\n                \"__strt(x,y)=\",\n                \"__swp(x,y)=0U\",\n                \"__usat(x,y)=0U\",\n                \"__wfe()=\",\n                \"__wfi()=\",\n                \"__yield()=\",\n                \"__vfp_status(x,y)=0\"\n            ],\n            \"intelliSenseMode\": \"${default}\"\n        }\n    ],\n    \"version\": 4\n}"
  },
  {
    "path": "SourceCode/MDK-ARM/.vscode/keil-assistant.log",
    "content": "[info] Log at : 2023/3/24|14:31:14|GMT+0800\n\n[info] Log at : 2023/3/24|14:31:22|GMT+0800\n\n[info] Log at : 2023/3/24|18:41:13|GMT+0800\n\n[info] Log at : 2023/3/25|12:23:14|GMT+0800\n\n[info] Log at : 2023/3/25|17:16:03|GMT+0800\n\n[info] Log at : 2023/3/25|17:32:02|GMT+0800\n\n[info] Log at : 2023/3/27|18:47:20|GMT+0800\n\n[info] Log at : 2023/3/27|19:25:03|GMT+0800\n\n[info] Log at : 2023/3/28|17:49:23|GMT+0800\n\n[info] Log at : 2023/3/29|15:40:14|GMT+0800\n\n[info] Log at : 2023/3/30|16:59:17|GMT+0800\n\n[info] Log at : 2023/3/31|18:24:58|GMT+0800\n\n[info] Log at : 2023/4/1|13:29:52|GMT+0800\n\n[info] Log at : 2023/4/1|15:08:19|GMT+0800\n\n[info] Log at : 2023/4/1|16:24:43|GMT+0800\n\n[info] Log at : 2023/4/1|23:26:04|GMT+0800\n\n[info] Log at : 2023/4/2|02:22:51|GMT+0800\n\n[info] Log at : 2023/4/2|15:50:38|GMT+0800\n\n[info] Log at : 2023/4/3|02:00:35|GMT+0800\n\n[info] Log at : 2023/4/3|15:52:59|GMT+0800\n\n[info] Log at : 2023/4/4|02:45:19|GMT+0800\n\n[info] Log at : 2023/4/4|18:27:22|GMT+0800\n\n[info] Log at : 2023/4/5|09:24:24|GMT+0800\n\n[info] Log at : 2023/4/5|18:29:34|GMT+0800\n\n[info] Log at : 2023/4/6|18:56:42|GMT+0800\n\n[info] Log at : 2023/4/7|17:28:33|GMT+0800\n\n[info] Log at : 2023/4/8|15:56:24|GMT+0800\n\n[info] Log at : 2023/4/8|17:08:48|GMT+0800\n\n[info] Log at : 2023/4/9|15:48:55|GMT+0800\n\n[info] Log at : 2023/4/12|02:23:46|GMT+0800\n\n[info] Log at : 2023/4/13|22:05:00|GMT+0800\n\n[info] Log at : 2023/4/14|20:25:02|GMT+0800\n\n[info] Log at : 2023/4/15|20:49:32|GMT+0800\n\n[info] Log at : 2023/4/16|15:06:30|GMT+0800\n\n[info] Log at : 2023/4/17|15:40:41|GMT+0800\n\n[info] Log at : 2023/4/18|13:13:56|GMT+0800\n\n[info] Log at : 2023/4/18|18:02:39|GMT+0800\n\n[info] Log at : 2023/4/19|14:16:22|GMT+0800\n\n[info] Log at : 2023/4/19|21:54:08|GMT+0800\n\n[info] Log at : 2023/4/20|14:37:24|GMT+0800\n\n[info] Log at : 2023/4/20|23:59:53|GMT+0800\n\n[info] Log at : 2023/4/25|22:45:20|GMT+0800\n\n[info] Log at : 2023/4/25|22:45:29|GMT+0800\n\n[info] Log at : 2023/4/26|21:13:26|GMT+0800\n\n[info] Log at : 2023/4/29|22:55:01|GMT+0800\n\n[info] Log at : 2023/5/5|20:32:50|GMT+0800\n\n[info] Log at : 2023/5/9|21:51:41|GMT+0800\n\n[info] Log at : 2023/5/11|16:37:54|GMT+0800\n\n[info] Log at : 2023/5/14|09:41:35|GMT+0800\n\n[info] Log at : 2023/5/14|09:44:45|GMT+0800\n\n[info] Log at : 2023/5/17|20:56:55|GMT+0800\n\n[info] Log at : 2023/5/17|22:26:39|GMT+0800\n\n[info] Log at : 2023/5/20|14:21:36|GMT+0800\n\n[info] Log at : 2023/5/23|16:46:54|GMT+0800\n\n[info] Log at : 2023/6/1|15:45:13|GMT+0800\n\n[info] Log at : 2023/6/4|15:18:31|GMT+0800\n\n[info] Log at : 2023/6/5|16:25:32|GMT+0800\n\n[info] Log at : 2023/6/6|15:43:06|GMT+0800\n\n[info] Log at : 2023/9/3|10:49:59|GMT+0800\n\n[info] Log at : 2023/10/11|13:26:23|GMT+0800\n\n[info] Log at : 2023/10/26|10:45:18|GMT+0800\n\n[info] Log at : 2023/10/29|20:43:45|GMT+0800\n\n[info] Log at : 2023/11/20|16:25:55|GMT+0800\n\n[info] Log at : 2023/11/20|17:05:24|GMT+0800\n\n[info] Log at : 2023/11/20|18:33:00|GMT+0800\n\n[info] Log at : 2023/11/20|18:33:06|GMT+0800\n\n[info] Log at : 2023/11/20|20:21:18|GMT+0800\n\n[info] Log at : 2023/11/22|15:10:19|GMT+0800\n\n[info] Log at : 2023/11/23|13:20:57|GMT+0800\n\n[info] Log at : 2024/1/3|15:59:37|GMT+0800\n\n[info] Log at : 2024/1/3|18:45:07|GMT+0800\n\n[info] Log at : 2024/1/5|17:14:01|GMT+0800\n\n[info] Log at : 2024/1/6|22:12:29|GMT+0800\n\n[info] Log at : 2024/1/10|16:44:42|GMT+0800\n\n[info] Log at : 2024/1/10|16:44:54|GMT+0800\n\n[info] Log at : 2024/1/11|11:58:52|GMT+0800\n\n[info] Log at : 2024/1/13|17:50:29|GMT+0800\n\n[info] Log at : 2024/1/15|17:27:11|GMT+0800\n\n[info] Log at : 2024/3/28|14:51:46|GMT+0800\n\n[info] Log at : 2024/3/28|20:27:17|GMT+0800\n\n[info] Log at : 2024/4/21|22:33:08|GMT+0800\n\n[info] Log at : 2024/4/25|21:20:30|GMT+0800\n\n[info] Log at : 2024/4/25|21:23:43|GMT+0800\n\n[info] Log at : 2024/4/26|12:12:35|GMT+0800\n\n[info] Log at : 2024/4/26|14:41:15|GMT+0800\n\n[info] Log at : 2024/6/11|00:23:05|GMT+0800\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/.vscode/settings.json",
    "content": "{\n    \"files.associations\": {\n        \"*.m\": \"matlab\",\n        \"atomic\": \"cpp\",\n        \"bit\": \"cpp\",\n        \"cstdint\": \"cpp\",\n        \"array\": \"cpp\",\n        \"remote.h\": \"c\",\n        \"dma.h\": \"c\",\n        \"string\": \"cpp\",\n        \"xstring\": \"cpp\",\n        \"xutility\": \"cpp\",\n        \"cmath\": \"cpp\",\n        \"my_math.h\": \"c\",\n        \"debug_uart.h\": \"c\",\n        \"usart.h\": \"c\",\n        \"initializer_list\": \"cpp\",\n        \"exception\": \"cpp\",\n        \"new\": \"cpp\",\n        \"typeinfo\": \"cpp\",\n        \"cctype\": \"cpp\",\n        \"compare\": \"cpp\",\n        \"concepts\": \"cpp\",\n        \"cstddef\": \"cpp\",\n        \"cstdio\": \"cpp\",\n        \"cstdlib\": \"cpp\",\n        \"cstring\": \"cpp\",\n        \"ctime\": \"cpp\",\n        \"cwchar\": \"cpp\",\n        \"iosfwd\": \"cpp\",\n        \"limits\": \"cpp\",\n        \"memory\": \"cpp\",\n        \"tuple\": \"cpp\",\n        \"type_traits\": \"cpp\",\n        \"utility\": \"cpp\",\n        \"xmemory\": \"cpp\",\n        \"xstddef\": \"cpp\",\n        \"xtr1common\": \"cpp\",\n        \"inv_mpu.h\": \"c\",\n        \"dmp_interface.h\": \"c\",\n        \"mpu6050.h\": \"c\",\n        \"i2c.h\": \"c\",\n        \"main.h\": \"c\",\n        \"math.h\": \"c\",\n        \"stdlib.h\": \"c\",\n        \"stdint.h\": \"c\",\n        \"string.h\": \"c\",\n        \"dmpkey.h\": \"c\",\n        \"dmpmap.h\": \"c\",\n        \"inv_mpu_dmp_motion_driver.h\": \"c\",\n        \"cmsis_os.h\": \"c\"\n    }\n}"
  },
  {
    "path": "SourceCode/MDK-ARM/.vscode/uv4.log",
    "content": "*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\\stm32\\UV5\\Keil\\Keil5\\ARM\\ARMCC\\Bin'\nBuild target 'hexapod'\ncompiling Servo.cpp...\ncompiling LegControl_task.cpp...\ncompiling gait_prg.cpp...\nlinking...\nProgram Size: Code=39888 RO-data=1284 RW-data=232 ZI-data=29344  \n\"app_test\\Hexapod.axf\" - 0 Error(s), 0 Warning(s).\nBuild Time Elapsed:  00:00:07\n"
  },
  {
    "path": "SourceCode/MDK-ARM/DebugConfig/Hexapod_STM32H750VBTx_1.1.0.dbgconf",
    "content": "// File: STM32H742_743_753_750.dbgconf\n// Version: 1.0.0\n// Note: refer to STM32H742, STM32H743/753 and STM32H750 reference manual (RM0433)\n//       refer to STM32H742xI/G STM32H743xI/G datasheets\n//       refer to STM32H753xI datasheet\n//       refer to STM32H750VB STM32H750IB STM32H750XB datasheets\n\n// <<< Use Configuration Wizard in Context Menu >>>\n\n// <h> DBGMCU configuration register (DBGMCU_CR)\n//   <o.28> TRGOEN                   <i> External trigger output enable\n//   <o.8>  DBGSTBY_D3               <i> Allow debug in D3 Standby mode\n//   <o.7>  DBGSTOP_D3               <i> Allow debug in D3 Stop mode\n//   <o.2>  DBGSTBY_D1               <i> Allow D1 domain debug in Standby mode\n//   <o.1>  DBGSTOP_D1               <i> Allow D1 domain debug in Stop mode\n//   <o.0>  DBGSLEEP_D1              <i> Allow D1 domain debug in Sleep mode\n// </h>\nDbgMCU_CR = 0x00000007;\n\n// <h> DBGMCU APB3 peripheral freeze register (DBGMCU_APB3FZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.6>  WWDG1                    <i> WWDG1 stop in debug\n// </h>\nDbgMCU_APB3_Fz1 = 0x00000000;\n\n// <h> DBGMCU APB1L peripheral freeze register (DBGMCU_APB1LFZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.23> DBG_I2C3                 <i> I2C3 SMBUS timeout stop in debug\n//   <o.22> DBG_I2C2                 <i> I2C2 SMBUS timeout stop in debug\n//   <o.21> DBG_I2C1                 <i> I2C1 SMBUS timeout stop in debug\n//   <o.9>  DBG_LPTIM1               <i> LPTIM1 stop in debug\n//   <o.8>  DBG_TIM14                <i> TIM14 stop in debug\n//   <o.7>  DBG_TIM13                <i> TIM13 stop in debug\n//   <o.6>  DBG_TIM12                <i> TIM12 stop in debug\n//   <o.5>  DBG_TIM7                 <i> TIM7 stop in debug\n//   <o.4>  DBG_TIM6                 <i> TIM6 stop in debug\n//   <o.3>  DBG_TIM5                 <i> TIM5 stop in debug\n//   <o.2>  DBG_TIM4                 <i> TIM4 stop in debug\n//   <o.1>  DBG_TIM3                 <i> TIM3 stop in debug\n//   <o.0>  DBG_TIM2                 <i> TIM2 stop in debug\n// </h>\nDbgMCU_APB1L_Fz1 = 0x00000000;\n\n// <h> DBGMCU APB2 peripheral freeze register (DBGMCU_APB2FZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.29> DBG_HRTIM                <i> HRTIM stop in debug\n//   <o.18> DBG_TIM17                <i> TIM17 stop in debug\n//   <o.17> DBG_TIM16                <i> TIM16 stop in debug\n//   <o.16> DBG_TIM15                <i> TIM15 stop in debug\n//   <o.1>  DBG_TIM8                 <i> TIM8 stop in debug\n//   <o.0>  DBG_TIM1                 <i> TIM1 stop in debug\n// </h>\nDbgMCU_APB2_Fz1 = 0x00000000;\n\n// <h> DBGMCU APB4 peripheral freeze register (DBGMCU_APB4FZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.18> DBG_IIWDG1               <i> Independent watchdog for D1 stop in debug\n//   <o.16> DBG_RTC                  <i> RTC stop in debug\n//   <o.12> DBG_LPTIM5               <i> LPTIM5 stop in debug\n//   <o.11> DBG_LPTIM4               <i> LPTIM4 stop in debug\n//   <o.10> DBG_LPTIM3               <i> LPTIM2 stop in debug\n//   <o.9>  DBG_LPTIM2               <i> LPTIM2 stop in debug\n//   <o.7>  DBG_I2C4                 <i> I2C4 SMBUS timeout stop in debug\n// </h>\nDbgMCU_APB4_Fz1 = 0x00000000;\n\n// <h> TPIU Pin Routing (TRACECLK fixed on Pin PE2)\n//   <i> TRACECLK: Pin PE2\n//   <o1> TRACED0\n//     <i> ETM Trace Data 0\n//       <0x00040003=> Pin PE3\n//       <0x00020001=> Pin PC1\n//       <0x0006000D=> Pin PG13\n//   <o2> TRACED1\n//     <i> ETM Trace Data 1\n//       <0x00040004=> Pin PE4\n//       <0x00020008=> Pin PC8\n//       <0x0006000E=> Pin PG14\n//   <o3> TRACED2\n//     <i> ETM Trace Data 2\n//       <0x00040005=> Pin PE5\n//       <0x00030002=> Pin PD2\n//   <o4> TRACED3\n//     <i> ETM Trace Data 3\n//       <0x00040006=> Pin PE6\n//       <0x0002000C=> Pin PC12\n// </h>\nTraceClk_Pin = 0x00040002;\nTraceD0_Pin  = 0x00040003;\nTraceD1_Pin  = 0x00040004;\nTraceD2_Pin  = 0x00040005;\nTraceD3_Pin  = 0x00040006;\n\n// <<< end of configuration section >>>\n"
  },
  {
    "path": "SourceCode/MDK-ARM/DebugConfig/app_test_STM32H750VBTx_1.1.0.dbgconf",
    "content": "// File: STM32H742_743_753_750.dbgconf\n// Version: 1.0.0\n// Note: refer to STM32H742, STM32H743/753 and STM32H750 reference manual (RM0433)\n//       refer to STM32H742xI/G STM32H743xI/G datasheets\n//       refer to STM32H753xI datasheet\n//       refer to STM32H750VB STM32H750IB STM32H750XB datasheets\n\n// <<< Use Configuration Wizard in Context Menu >>>\n\n// <h> DBGMCU configuration register (DBGMCU_CR)\n//   <o.28> TRGOEN                   <i> External trigger output enable\n//   <o.8>  DBGSTBY_D3               <i> Allow debug in D3 Standby mode\n//   <o.7>  DBGSTOP_D3               <i> Allow debug in D3 Stop mode\n//   <o.2>  DBGSTBY_D1               <i> Allow D1 domain debug in Standby mode\n//   <o.1>  DBGSTOP_D1               <i> Allow D1 domain debug in Stop mode\n//   <o.0>  DBGSLEEP_D1              <i> Allow D1 domain debug in Sleep mode\n// </h>\nDbgMCU_CR = 0x00000007;\n\n// <h> DBGMCU APB3 peripheral freeze register (DBGMCU_APB3FZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.6>  WWDG1                    <i> WWDG1 stop in debug\n// </h>\nDbgMCU_APB3_Fz1 = 0x00000000;\n\n// <h> DBGMCU APB1L peripheral freeze register (DBGMCU_APB1LFZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.23> DBG_I2C3                 <i> I2C3 SMBUS timeout stop in debug\n//   <o.22> DBG_I2C2                 <i> I2C2 SMBUS timeout stop in debug\n//   <o.21> DBG_I2C1                 <i> I2C1 SMBUS timeout stop in debug\n//   <o.9>  DBG_LPTIM1               <i> LPTIM1 stop in debug\n//   <o.8>  DBG_TIM14                <i> TIM14 stop in debug\n//   <o.7>  DBG_TIM13                <i> TIM13 stop in debug\n//   <o.6>  DBG_TIM12                <i> TIM12 stop in debug\n//   <o.5>  DBG_TIM7                 <i> TIM7 stop in debug\n//   <o.4>  DBG_TIM6                 <i> TIM6 stop in debug\n//   <o.3>  DBG_TIM5                 <i> TIM5 stop in debug\n//   <o.2>  DBG_TIM4                 <i> TIM4 stop in debug\n//   <o.1>  DBG_TIM3                 <i> TIM3 stop in debug\n//   <o.0>  DBG_TIM2                 <i> TIM2 stop in debug\n// </h>\nDbgMCU_APB1L_Fz1 = 0x00000000;\n\n// <h> DBGMCU APB2 peripheral freeze register (DBGMCU_APB2FZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.29> DBG_HRTIM                <i> HRTIM stop in debug\n//   <o.18> DBG_TIM17                <i> TIM17 stop in debug\n//   <o.17> DBG_TIM16                <i> TIM16 stop in debug\n//   <o.16> DBG_TIM15                <i> TIM15 stop in debug\n//   <o.1>  DBG_TIM8                 <i> TIM8 stop in debug\n//   <o.0>  DBG_TIM1                 <i> TIM1 stop in debug\n// </h>\nDbgMCU_APB2_Fz1 = 0x00000000;\n\n// <h> DBGMCU APB4 peripheral freeze register (DBGMCU_APB4FZ1)\n//                                   <i> Reserved bits must be kept at reset value\n//   <o.18> DBG_IIWDG1               <i> Independent watchdog for D1 stop in debug\n//   <o.16> DBG_RTC                  <i> RTC stop in debug\n//   <o.12> DBG_LPTIM5               <i> LPTIM5 stop in debug\n//   <o.11> DBG_LPTIM4               <i> LPTIM4 stop in debug\n//   <o.10> DBG_LPTIM3               <i> LPTIM2 stop in debug\n//   <o.9>  DBG_LPTIM2               <i> LPTIM2 stop in debug\n//   <o.7>  DBG_I2C4                 <i> I2C4 SMBUS timeout stop in debug\n// </h>\nDbgMCU_APB4_Fz1 = 0x00000000;\n\n// <h> TPIU Pin Routing (TRACECLK fixed on Pin PE2)\n//   <i> TRACECLK: Pin PE2\n//   <o1> TRACED0\n//     <i> ETM Trace Data 0\n//       <0x00040003=> Pin PE3\n//       <0x00020001=> Pin PC1\n//       <0x0006000D=> Pin PG13\n//   <o2> TRACED1\n//     <i> ETM Trace Data 1\n//       <0x00040004=> Pin PE4\n//       <0x00020008=> Pin PC8\n//       <0x0006000E=> Pin PG14\n//   <o3> TRACED2\n//     <i> ETM Trace Data 2\n//       <0x00040005=> Pin PE5\n//       <0x00030002=> Pin PD2\n//   <o4> TRACED3\n//     <i> ETM Trace Data 3\n//       <0x00040006=> Pin PE6\n//       <0x0002000C=> Pin PC12\n// </h>\nTraceClk_Pin = 0x00040002;\nTraceD0_Pin  = 0x00040003;\nTraceD1_Pin  = 0x00040004;\nTraceD2_Pin  = 0x00040005;\nTraceD3_Pin  = 0x00040006;\n\n// <<< end of configuration section >>>\n"
  },
  {
    "path": "SourceCode/MDK-ARM/EventRecorderStub.scvd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<component_viewer schemaVersion=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\" xs:noNamespaceSchemaLocation=\"Component_Viewer.xsd\">\n\n<component name=\"EventRecorderStub\" version=\"1.0.0\"/>       <!--name and version of the component-->\n  <events>\n  </events>\n\n</component_viewer>\n"
  },
  {
    "path": "SourceCode/MDK-ARM/Hexapod.uvguix.97088",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n<ProjectGui xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"project_guix.xsd\">\n\n  <SchemaVersion>-6.1</SchemaVersion>\n\n  <Header>### uVision Project, (C) Keil Software</Header>\n\n  <ViewPool/>\n\n  <SECTreeCtrl>\n    <View>\n      <WinId>38003</WinId>\n      <ViewName>Registers</ViewName>\n      <TableColWidths>144 144</TableColWidths>\n    </View>\n    <View>\n      <WinId>346</WinId>\n      <ViewName>Code Coverage</ViewName>\n      <TableColWidths>1010 160</TableColWidths>\n    </View>\n    <View>\n      <WinId>204</WinId>\n      <ViewName>Performance Analyzer</ViewName>\n      <TableColWidths>1170</TableColWidths>\n    </View>\n  </SECTreeCtrl>\n\n  <TreeListPane>\n    <View>\n      <WinId>1506</WinId>\n      <ViewName>Symbols</ViewName>\n      <UserString></UserString>\n      <TableColWidths>64 64 64</TableColWidths>\n    </View>\n    <View>\n      <WinId>1936</WinId>\n      <ViewName>Watch 1</ViewName>\n      <UserString></UserString>\n      <TableColWidths>200 133 133</TableColWidths>\n    </View>\n    <View>\n      <WinId>1937</WinId>\n      <ViewName>Watch 2</ViewName>\n      <UserString></UserString>\n      <TableColWidths>200 133 133</TableColWidths>\n    </View>\n    <View>\n      <WinId>1935</WinId>\n      <ViewName>Call Stack + Locals</ViewName>\n      <UserString></UserString>\n      <TableColWidths>200 133 133</TableColWidths>\n    </View>\n    <View>\n      <WinId>2506</WinId>\n      <ViewName>Trace Data</ViewName>\n      <UserString></UserString>\n      <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>\n    </View>\n    <View>\n      <WinId>466</WinId>\n      <ViewName>Source Browser - *** Not Enabled ***</ViewName>\n      <UserString>500</UserString>\n      <TableColWidths>166</TableColWidths>\n    </View>\n  </TreeListPane>\n\n  <CompViewPool/>\n\n  <WindowSettings>\n    <LogicAnalizer>\n      <ShowLACursor>0</ShowLACursor>\n      <ShowSignalInfo>0</ShowSignalInfo>\n      <ShowCycles>0</ShowCycles>\n      <LeftSideBarSize>50</LeftSideBarSize>\n      <TimeBaseIndex>16</TimeBaseIndex>\n    </LogicAnalizer>\n  </WindowSettings>\n\n  <WinLayoutEx>\n    <sActiveDebugView></sActiveDebugView>\n    <WindowPosition>\n      <length>44</length>\n      <flags>2</flags>\n      <showCmd>3</showCmd>\n      <MinPosition>\n        <xPos>-1</xPos>\n        <yPos>-1</yPos>\n      </MinPosition>\n      <MaxPosition>\n        <xPos>-1</xPos>\n        <yPos>-1</yPos>\n      </MaxPosition>\n      <NormalPosition>\n        <Top>166</Top>\n        <Left>0</Left>\n        <Right>955</Right>\n        <Bottom>824</Bottom>\n      </NormalPosition>\n    </WindowPosition>\n    <MDIClientArea>\n      <RegID>0</RegID>\n      <MDITabState>\n        <Len>794</Len>\n        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000700000003000000010000002D453A5C48657861706F645C48657861706F645C536F75726365436F64655C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4D453A5C48657861706F645C48657861706F645C536F75726365436F64655C4D6964646C6577617265735C54686972645F50617274795C4672656552544F535C536F757263655C7461736B732E6300000000077461736B732E6300000000FFDC7800FFFFFFFF3C453A5C48657861706F645C48657861706F645C536F75726365436F64655C4D444B2D41524D5C555345525C5441534B5C4D50555F7461736B2E637070000000000C4D50555F7461736B2E63707000000000BECEA100FFFFFFFF43453A5C48657861706F645C48657861706F645C536F75726365436F64655C4D444B2D41524D5C555345525C5441534B5C4C6567436F6E74726F6C5F7461736B2E63707000000000134C6567436F6E74726F6C5F7461736B2E63707000000000F0A0A100FFFFFFFF37453A5C48657861706F645C48657861706F645C536F75726365436F64655C4D444B2D41524D5C555345525C4150505C72656D6F74652E63000000000872656D6F74652E6300000000BCA8E100FFFFFFFF3B453A5C48657861706F645C48657861706F645C536F75726365436F64655C4D444B2D41524D5C555345525C4150505C676169745F7072672E637070000000000D676169745F7072672E6370702A000000009CC1B600FFFFFFFF39453A5C48657861706F645C48657861706F645C536F75726365436F64655C4D444B2D41524D5C555345525C4150505C676169745F7072672E68000000000B676169745F7072672E682A00000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000002E01000066000000000600007B020000</Data>\n      </MDITabState>\n    </MDIClientArea>\n    <ViewEx>\n      <ViewType>0</ViewType>\n      <ViewName>Build</ViewName>\n      <Window>\n        <RegID>-1</RegID>\n        <PaneID>-1</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F40000004F00000090050000DF000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>F40000006600000090050000F6000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1005</RegID>\n        <PaneID>1005</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100004B020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>109</RegID>\n        <PaneID>109</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100004B020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000F40100002F030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1465</RegID>\n        <PaneID>1465</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1466</RegID>\n        <PaneID>1466</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1467</RegID>\n        <PaneID>1467</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1468</RegID>\n        <PaneID>1468</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1506</RegID>\n        <PaneID>1506</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>16384</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1913</RegID>\n        <PaneID>1913</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1935</RegID>\n        <PaneID>1935</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1936</RegID>\n        <PaneID>1936</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1937</RegID>\n        <PaneID>1937</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1939</RegID>\n        <PaneID>1939</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1940</RegID>\n        <PaneID>1940</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1941</RegID>\n        <PaneID>1941</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1942</RegID>\n        <PaneID>1942</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>195</RegID>\n        <PaneID>195</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100004B020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000F40100002F030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>196</RegID>\n        <PaneID>196</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100004B020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000F40100002F030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>197</RegID>\n        <PaneID>197</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>000000007C020000000600000E030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>198</RegID>\n        <PaneID>198</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>000000001902000090050000BD020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>199</RegID>\n        <PaneID>199</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000007F0200007D070000F5020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>203</RegID>\n        <PaneID>203</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>204</RegID>\n        <PaneID>204</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>221</RegID>\n        <PaneID>221</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>00000000000000000000000000000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>2506</RegID>\n        <PaneID>2506</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>2507</RegID>\n        <PaneID>2507</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>343</RegID>\n        <PaneID>343</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>346</RegID>\n        <PaneID>346</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35141</RegID>\n        <PaneID>35141</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35824</RegID>\n        <PaneID>35824</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35885</RegID>\n        <PaneID>35885</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35886</RegID>\n        <PaneID>35886</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35887</RegID>\n        <PaneID>35887</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35888</RegID>\n        <PaneID>35888</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35889</RegID>\n        <PaneID>35889</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35890</RegID>\n        <PaneID>35890</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35891</RegID>\n        <PaneID>35891</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35892</RegID>\n        <PaneID>35892</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35893</RegID>\n        <PaneID>35893</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35894</RegID>\n        <PaneID>35894</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35895</RegID>\n        <PaneID>35895</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35896</RegID>\n        <PaneID>35896</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35897</RegID>\n        <PaneID>35897</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35898</RegID>\n        <PaneID>35898</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35899</RegID>\n        <PaneID>35899</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35900</RegID>\n        <PaneID>35900</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35901</RegID>\n        <PaneID>35901</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35902</RegID>\n        <PaneID>35902</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35903</RegID>\n        <PaneID>35903</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35904</RegID>\n        <PaneID>35904</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35905</RegID>\n        <PaneID>35905</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>38003</RegID>\n        <PaneID>38003</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000660000002701000023030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000F40100002F030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>38007</RegID>\n        <PaneID>38007</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000007F0200007D070000F5020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>436</RegID>\n        <PaneID>436</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000007F0200007D070000F5020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000F40100002F030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>437</RegID>\n        <PaneID>437</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>440</RegID>\n        <PaneID>440</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>463</RegID>\n        <PaneID>463</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000007F0200007D070000F5020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000F40100002F030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>466</RegID>\n        <PaneID>466</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000007F0200007D070000F5020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000F40100002F030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>470</RegID>\n        <PaneID>470</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>F7000000660000008D050000C6000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000A00300007F010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50000</RegID>\n        <PaneID>50000</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50001</RegID>\n        <PaneID>50001</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50002</RegID>\n        <PaneID>50002</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50003</RegID>\n        <PaneID>50003</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50004</RegID>\n        <PaneID>50004</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50005</RegID>\n        <PaneID>50005</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50006</RegID>\n        <PaneID>50006</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50007</RegID>\n        <PaneID>50007</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50008</RegID>\n        <PaneID>50008</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50009</RegID>\n        <PaneID>50009</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50010</RegID>\n        <PaneID>50010</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50011</RegID>\n        <PaneID>50011</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50012</RegID>\n        <PaneID>50012</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50013</RegID>\n        <PaneID>50013</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50014</RegID>\n        <PaneID>50014</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50015</RegID>\n        <PaneID>50015</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50016</RegID>\n        <PaneID>50016</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50017</RegID>\n        <PaneID>50017</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50018</RegID>\n        <PaneID>50018</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50019</RegID>\n        <PaneID>50019</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D05000010020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59392</RegID>\n        <PaneID>59392</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>953</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0000000000000000C40300001C000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59393</RegID>\n        <PaneID>0</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>000000000E0300000006000021030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59399</RegID>\n        <PaneID>59399</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>476</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>1</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>000000001C000000E701000038000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59400</RegID>\n        <PaneID>59400</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>612</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>2</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>00000000380000006F02000054000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>824</RegID>\n        <PaneID>824</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>03000000300200008D050000A4020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>D8000000EF000000C8010000BA010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <DockMan>\n        <Len>3339</Len>\n        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF2A0100004F0000002E0100006402000001000000020000100400000001000000B6FEFFFF2B060000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000002A01000053030000000000004F0000002A010000640200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000640200000006000068020000010000000100001004000000010000005CFDFFFFE8000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000005703000080070000FD0300000000000068020000000600000E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>\n      </DockMan>\n      <ToolBar>\n        <RegID>59392</RegID>\n        <Name>File</Name>\n        <Buttons>\n          <Len>2480</Len>\n          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000002000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000361726D960000000000000013000361726D047A65726F04526F6C6C04715B315D0364777407446174615B305D0A64656275675F554152540974696D657374616D70066765745F6D730864656C61795F6D730D646D705F726561645F6669666F146D70755F726561645F6669666F5F73747265616D03706F730350777306505F6C6567730B52656D6F74655F496E69741148414C5F4750494F5F577269746550696E0E7732357178785F4454524D6F6465187732357178785F53657452656164506172616D657465727300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data>\n        </Buttons>\n        <OriginalItems>\n          <Len>1423</Len>\n          <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>\n        </OriginalItems>\n        <OrigResetItems>\n          <Len>1423</Len>\n          <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>\n        </OrigResetItems>\n      </ToolBar>\n      <ToolBar>\n        <RegID>59399</RegID>\n        <Name>Build</Name>\n        <Buttons>\n          <Len>974</Len>\n          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000768657861706F64960000000000000001000768657861706F64000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>\n        </Buttons>\n        <OriginalItems>\n          <Len>583</Len>\n          <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>\n        </OriginalItems>\n        <OrigResetItems>\n          <Len>583</Len>\n          <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>\n        </OrigResetItems>\n      </ToolBar>\n      <ToolBar>\n        <RegID>59400</RegID>\n        <Name>Debug</Name>\n        <Buttons>\n          <Len>2373</Len>\n          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>\n        </Buttons>\n        <OriginalItems>\n          <Len>898</Len>\n          <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>\n        </OriginalItems>\n        <OrigResetItems>\n          <Len>898</Len>\n          <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>\n        </OrigResetItems>\n      </ToolBar>\n      <ControlBarsSummary>\n        <Bars>0</Bars>\n        <ScreenCX>1536</ScreenCX>\n        <ScreenCY>864</ScreenCY>\n      </ControlBarsSummary>\n    </ViewEx>\n    <ViewEx>\n      <ViewType>1</ViewType>\n      <ViewName>Debug</ViewName>\n      <Window>\n        <RegID>-1</RegID>\n        <PaneID>-1</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DB0400001E0100008007000044030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>DB04000035010000800700005B030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1005</RegID>\n        <PaneID>1005</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>00000000630000002A01000044030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>109</RegID>\n        <PaneID>109</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000003E01000076020000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1465</RegID>\n        <PaneID>1465</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1466</RegID>\n        <PaneID>1466</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1467</RegID>\n        <PaneID>1467</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1468</RegID>\n        <PaneID>1468</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1506</RegID>\n        <PaneID>1506</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>16384</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1913</RegID>\n        <PaneID>1913</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1935</RegID>\n        <PaneID>1935</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1936</RegID>\n        <PaneID>1936</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1937</RegID>\n        <PaneID>1937</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1939</RegID>\n        <PaneID>1939</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1940</RegID>\n        <PaneID>1940</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1941</RegID>\n        <PaneID>1941</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>1942</RegID>\n        <PaneID>1942</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>195</RegID>\n        <PaneID>195</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000003E01000076020000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>196</RegID>\n        <PaneID>196</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000003E01000076020000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>197</RegID>\n        <PaneID>197</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000006E0300007D070000CD030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>198</RegID>\n        <PaneID>198</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>000000004803000080070000E6030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>199</RegID>\n        <PaneID>199</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000006E0300007D070000CD030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>203</RegID>\n        <PaneID>203</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>204</RegID>\n        <PaneID>204</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>221</RegID>\n        <PaneID>221</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>00000000000000000000000000000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>2506</RegID>\n        <PaneID>2506</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>2507</RegID>\n        <PaneID>2507</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>343</RegID>\n        <PaneID>343</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>346</RegID>\n        <PaneID>346</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35141</RegID>\n        <PaneID>35141</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35824</RegID>\n        <PaneID>35824</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35885</RegID>\n        <PaneID>35885</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35886</RegID>\n        <PaneID>35886</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35887</RegID>\n        <PaneID>35887</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35888</RegID>\n        <PaneID>35888</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35889</RegID>\n        <PaneID>35889</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35890</RegID>\n        <PaneID>35890</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35891</RegID>\n        <PaneID>35891</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35892</RegID>\n        <PaneID>35892</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35893</RegID>\n        <PaneID>35893</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35894</RegID>\n        <PaneID>35894</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35895</RegID>\n        <PaneID>35895</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35896</RegID>\n        <PaneID>35896</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35897</RegID>\n        <PaneID>35897</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35898</RegID>\n        <PaneID>35898</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35899</RegID>\n        <PaneID>35899</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35900</RegID>\n        <PaneID>35900</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35901</RegID>\n        <PaneID>35901</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35902</RegID>\n        <PaneID>35902</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35903</RegID>\n        <PaneID>35903</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35904</RegID>\n        <PaneID>35904</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>35905</RegID>\n        <PaneID>35905</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>38003</RegID>\n        <PaneID>38003</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0300000066000000270100002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000003E01000076020000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>38007</RegID>\n        <PaneID>38007</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000006E0300007D070000CD030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>436</RegID>\n        <PaneID>436</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000006E0300007D070000CD030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000003E01000076020000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>437</RegID>\n        <PaneID>437</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>440</RegID>\n        <PaneID>440</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>463</RegID>\n        <PaneID>463</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000006E0300007D070000CD030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000003E01000076020000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>466</RegID>\n        <PaneID>466</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>030000006E0300007D070000CD030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000003E01000076020000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>470</RegID>\n        <PaneID>470</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>31010000660000007D07000001010000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>2200000039000000EA020000C8000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50000</RegID>\n        <PaneID>50000</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50001</RegID>\n        <PaneID>50001</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50002</RegID>\n        <PaneID>50002</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50003</RegID>\n        <PaneID>50003</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50004</RegID>\n        <PaneID>50004</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50005</RegID>\n        <PaneID>50005</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50006</RegID>\n        <PaneID>50006</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50007</RegID>\n        <PaneID>50007</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50008</RegID>\n        <PaneID>50008</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50009</RegID>\n        <PaneID>50009</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50010</RegID>\n        <PaneID>50010</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50011</RegID>\n        <PaneID>50011</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50012</RegID>\n        <PaneID>50012</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50013</RegID>\n        <PaneID>50013</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50014</RegID>\n        <PaneID>50014</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50015</RegID>\n        <PaneID>50015</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50016</RegID>\n        <PaneID>50016</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50017</RegID>\n        <PaneID>50017</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50018</RegID>\n        <PaneID>50018</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>50019</RegID>\n        <PaneID>50019</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>A3040000660000008D0500000D020000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>22000000390000001201000004010000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59392</RegID>\n        <PaneID>59392</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>953</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>0000000000000000C40300001C000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59393</RegID>\n        <PaneID>0</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>4096</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>00000000E603000080070000F9030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59399</RegID>\n        <PaneID>59399</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>476</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>1</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>000000001C000000E701000038000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>59400</RegID>\n        <PaneID>59400</PaneID>\n        <IsVisible>1</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>612</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>8192</RecentFrameAlignment>\n        <RecentRowIndex>2</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>000000001C0000006F02000038000000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>0A0000000A0000006E0000006E000000</Data>\n        </RectRecentFloat>\n      </Window>\n      <Window>\n        <RegID>824</RegID>\n        <PaneID>824</PaneID>\n        <IsVisible>0</IsVisible>\n        <IsFloating>0</IsFloating>\n        <IsTabbed>0</IsTabbed>\n        <IsActivated>0</IsActivated>\n        <MRUWidth>32767</MRUWidth>\n        <PinState>0</PinState>\n        <RecentFrameAlignment>32768</RecentFrameAlignment>\n        <RecentRowIndex>0</RecentRowIndex>\n        <RectRecentDocked>\n          <Len>16</Len>\n          <Data>DE040000350100007D0700002B030000</Data>\n        </RectRecentDocked>\n        <RectRecentFloat>\n          <Len>16</Len>\n          <Data>3B03000006020000F706000010030000</Data>\n        </RectRecentFloat>\n      </Window>\n      <DockMan>\n        <Len>3421</Len>\n        <Data>000000000C000000000000000040000001000000FFFFFFFFFFFFFFFFD70400001E010000DB040000440300000100000002000010040000000100000091FCFFFF1203000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000FFFF02000B004354616262656450616E650040000001000000DB04000035010000800700005B030000DB0400001E010000800700004403000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032010000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000020000001000000FFFFFFFFFFFFFFFF2E0100001A010000800700001E01000001000000010000100400000001000000BDFEFFFFA7010000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000018000200000010000002E0100006600000080070000310100002E0100004F000000800700001A0100000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373010000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000026020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A004000066000000900500003D020000A00400004F000000900500002602000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF2A0100004F0000002E010000440300000100000002000010040000000100000000FFFFFFCC030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000002A0100005B030000000000004F0000002A010000440300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000044030000800700004803000001000000010000100400000001000000E6FEFFFFA800000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC0030000DC020000C4030000E603000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000530300008007000057030000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000006E03000080070000FD030000000000005703000080070000E60300000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>\n      </DockMan>\n      <ToolBar>\n        <RegID>59392</RegID>\n        <Name>File</Name>\n        <Buttons>\n          <Len>2530</Len>\n          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000974696D657374616D70960000000000000012000974696D657374616D70066765745F6D730864656C61795F6D730D646D705F726561645F6669666F146D70755F726561645F6669666F5F73747265616D03706F730350777306505F6C6567730B52656D6F74655F496E69741148414C5F4750494F5F577269746550696E0E7732357178785F4454524D6F6465187732357178785F53657452656164506172616D65746572730E7732357178785F5150494D6F6465036D6170074454524D6F64651B515350495F456E61626C654D656D6F72794D61707065644D6F64650C5732357178785F57726974651548414C5F515350495F4D656D6F72794D6170706564000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data>\n        </Buttons>\n        <OriginalItems>\n          <Len>1423</Len>\n          <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>\n        </OriginalItems>\n        <OrigResetItems>\n          <Len>1423</Len>\n          <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>\n        </OrigResetItems>\n      </ToolBar>\n      <ToolBar>\n        <RegID>59399</RegID>\n        <Name>Build</Name>\n        <Buttons>\n          <Len>976</Len>\n          <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000086170705F7465737496000000000000000100086170705F74657374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>\n        </Buttons>\n        <OriginalItems>\n          <Len>583</Len>\n          <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>\n        </OriginalItems>\n        <OrigResetItems>\n          <Len>583</Len>\n          <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>\n        </OrigResetItems>\n      </ToolBar>\n      <ToolBar>\n        <RegID>59400</RegID>\n        <Name>Debug</Name>\n        <Buttons>\n          <Len>2362</Len>\n          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020000002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>\n        </Buttons>\n        <OriginalItems>\n          <Len>898</Len>\n          <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>\n        </OriginalItems>\n        <OrigResetItems>\n          <Len>898</Len>\n          <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>\n        </OrigResetItems>\n      </ToolBar>\n      <ControlBarsSummary>\n        <Bars>0</Bars>\n        <ScreenCX>1920</ScreenCX>\n        <ScreenCY>1080</ScreenCY>\n      </ControlBarsSummary>\n    </ViewEx>\n  </WinLayoutEx>\n\n  <MDIGroups>\n    <Orientation>1</Orientation>\n    <ActiveMDIGroup>0</ActiveMDIGroup>\n    <MDIGroup>\n      <Size>100</Size>\n      <ActiveTab>3</ActiveTab>\n      <Doc>\n        <Name>../Core/Src/main.c</Name>\n        <ColumnNumber>0</ColumnNumber>\n        <TopLine>80</TopLine>\n        <CurrentLine>81</CurrentLine>\n        <Folding>1</Folding>\n        <ContractedFolders></ContractedFolders>\n        <PaneID>0</PaneID>\n      </Doc>\n      <Doc>\n        <Name>../Middlewares/Third_Party/FreeRTOS/Source/tasks.c</Name>\n        <ColumnNumber>0</ColumnNumber>\n        <TopLine>3640</TopLine>\n        <CurrentLine>3663</CurrentLine>\n        <Folding>1</Folding>\n        <ContractedFolders></ContractedFolders>\n        <PaneID>0</PaneID>\n      </Doc>\n      <Doc>\n        <Name>.\\USER\\TASK\\MPU_task.cpp</Name>\n        <ColumnNumber>3</ColumnNumber>\n        <TopLine>1</TopLine>\n        <CurrentLine>17</CurrentLine>\n        <Folding>1</Folding>\n        <ContractedFolders></ContractedFolders>\n        <PaneID>0</PaneID>\n      </Doc>\n      <Doc>\n        <Name>.\\USER\\TASK\\LegControl_task.cpp</Name>\n        <ColumnNumber>14</ColumnNumber>\n        <TopLine>218</TopLine>\n        <CurrentLine>237</CurrentLine>\n        <Folding>1</Folding>\n        <ContractedFolders></ContractedFolders>\n        <PaneID>0</PaneID>\n      </Doc>\n      <Doc>\n        <Name>.\\USER\\APP\\remote.c</Name>\n        <ColumnNumber>22</ColumnNumber>\n        <TopLine>1</TopLine>\n        <CurrentLine>5</CurrentLine>\n        <Folding>1</Folding>\n        <ContractedFolders></ContractedFolders>\n        <PaneID>0</PaneID>\n      </Doc>\n      <Doc>\n        <Name>.\\USER\\APP\\gait_prg.cpp</Name>\n        <ColumnNumber>13</ColumnNumber>\n        <TopLine>1</TopLine>\n        <CurrentLine>1</CurrentLine>\n        <Folding>1</Folding>\n        <ContractedFolders></ContractedFolders>\n        <PaneID>0</PaneID>\n      </Doc>\n      <Doc>\n        <Name>./USER/APP/gait_prg.h</Name>\n        <ColumnNumber>7</ColumnNumber>\n        <TopLine>43</TopLine>\n        <CurrentLine>60</CurrentLine>\n        <Folding>1</Folding>\n        <ContractedFolders></ContractedFolders>\n        <PaneID>0</PaneID>\n      </Doc>\n    </MDIGroup>\n  </MDIGroups>\n\n</ProjectGui>\n"
  },
  {
    "path": "SourceCode/MDK-ARM/Hexapod.uvoptx",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n<ProjectOpt xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"project_optx.xsd\">\n\n  <SchemaVersion>1.0</SchemaVersion>\n\n  <Header>### uVision Project, (C) Keil Software</Header>\n\n  <Extensions>\n    <cExt>*.c</cExt>\n    <aExt>*.s*; *.src; *.a*</aExt>\n    <oExt>*.obj; *.o</oExt>\n    <lExt>*.lib</lExt>\n    <tExt>*.txt; *.h; *.inc</tExt>\n    <pExt>*.plm</pExt>\n    <CppX>*.cpp</CppX>\n    <nMigrate>0</nMigrate>\n  </Extensions>\n\n  <DaveTm>\n    <dwLowDateTime>0</dwLowDateTime>\n    <dwHighDateTime>0</dwHighDateTime>\n  </DaveTm>\n\n  <Target>\n    <TargetName>hexapod</TargetName>\n    <ToolsetNumber>0x4</ToolsetNumber>\n    <ToolsetName>ARM-ADS</ToolsetName>\n    <TargetOption>\n      <CLKADS>25000000</CLKADS>\n      <OPTTT>\n        <gFlags>1</gFlags>\n        <BeepAtEnd>1</BeepAtEnd>\n        <RunSim>0</RunSim>\n        <RunTarget>1</RunTarget>\n        <RunAbUc>0</RunAbUc>\n      </OPTTT>\n      <OPTHX>\n        <HexSelection>1</HexSelection>\n        <FlashByte>65535</FlashByte>\n        <HexRangeLowAddress>0</HexRangeLowAddress>\n        <HexRangeHighAddress>0</HexRangeHighAddress>\n        <HexOffset>0</HexOffset>\n      </OPTHX>\n      <OPTLEX>\n        <PageWidth>79</PageWidth>\n        <PageLength>66</PageLength>\n        <TabStop>8</TabStop>\n        <ListingPath></ListingPath>\n      </OPTLEX>\n      <ListingPage>\n        <CreateCListing>1</CreateCListing>\n        <CreateAListing>1</CreateAListing>\n        <CreateLListing>1</CreateLListing>\n        <CreateIListing>0</CreateIListing>\n        <AsmCond>1</AsmCond>\n        <AsmSymb>1</AsmSymb>\n        <AsmXref>0</AsmXref>\n        <CCond>1</CCond>\n        <CCode>0</CCode>\n        <CListInc>0</CListInc>\n        <CSymb>0</CSymb>\n        <LinkerCodeListing>0</LinkerCodeListing>\n      </ListingPage>\n      <OPTXL>\n        <LMap>1</LMap>\n        <LComments>1</LComments>\n        <LGenerateSymbols>1</LGenerateSymbols>\n        <LLibSym>1</LLibSym>\n        <LLines>1</LLines>\n        <LLocSym>1</LLocSym>\n        <LPubSym>1</LPubSym>\n        <LXref>0</LXref>\n        <LExpSel>0</LExpSel>\n      </OPTXL>\n      <OPTFL>\n        <tvExp>1</tvExp>\n        <tvExpOptDlg>0</tvExpOptDlg>\n        <IsCurrentTarget>1</IsCurrentTarget>\n      </OPTFL>\n      <CpuCode>18</CpuCode>\n      <DebugOpt>\n        <uSim>0</uSim>\n        <uTrg>1</uTrg>\n        <sLdApp>1</sLdApp>\n        <sGomain>1</sGomain>\n        <sRbreak>1</sRbreak>\n        <sRwatch>1</sRwatch>\n        <sRmem>1</sRmem>\n        <sRfunc>1</sRfunc>\n        <sRbox>1</sRbox>\n        <tLdApp>1</tLdApp>\n        <tGomain>1</tGomain>\n        <tRbreak>1</tRbreak>\n        <tRwatch>1</tRwatch>\n        <tRmem>1</tRmem>\n        <tRfunc>1</tRfunc>\n        <tRbox>1</tRbox>\n        <tRtrace>1</tRtrace>\n        <sRSysVw>1</sRSysVw>\n        <tRSysVw>1</tRSysVw>\n        <sRunDeb>0</sRunDeb>\n        <sLrtime>0</sLrtime>\n        <bEvRecOn>1</bEvRecOn>\n        <bSchkAxf>0</bSchkAxf>\n        <bTchkAxf>0</bTchkAxf>\n        <nTsel>4</nTsel>\n        <sDll></sDll>\n        <sDllPa></sDllPa>\n        <sDlgDll></sDlgDll>\n        <sDlgPa></sDlgPa>\n        <sIfile></sIfile>\n        <tDll></tDll>\n        <tDllPa></tDllPa>\n        <tDlgDll></tDlgDll>\n        <tDlgPa></tDlgPa>\n        <tIfile></tIfile>\n        <pMon>Segger\\JL2CM3.dll</pMon>\n      </DebugOpt>\n      <TargetDriverDllRegistry>\n        <SetRegEntry>\n          <Number>0</Number>\n          <Key>ARMRTXEVENTFLAGS</Key>\n          <Name>-L70 -Z18 -C0 -M0 -T1</Name>\n        </SetRegEntry>\n        <SetRegEntry>\n          <Number>0</Number>\n          <Key>DLGTARM</Key>\n          <Name>(1010=-1,-1,-1,-1,0)(6017=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(6016=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)</Name>\n        </SetRegEntry>\n        <SetRegEntry>\n          <Number>0</Number>\n          <Key>ARMDBGFLAGS</Key>\n          <Name></Name>\n        </SetRegEntry>\n        <SetRegEntry>\n          <Number>0</Number>\n          <Key>DLGUARM</Key>\n          <Name></Name>\n        </SetRegEntry>\n        <SetRegEntry>\n          <Number>0</Number>\n          <Key>JL2CM3</Key>\n          <Name>-U59701273 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00(\"ARM CoreSight SW-DP\") -D00(6BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD24000000 -FC8000 -FN1 -FF0STM32H7xx_W25Q128_WeActStudio -FS090000000 -FL01000000</Name>\n        </SetRegEntry>\n        <SetRegEntry>\n          <Number>0</Number>\n          <Key>UL2CM3</Key>\n          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC8000 -FN1 -FF0STM32H7x_128k -FS08000000 -FL020000 -FP0($$Device:STM32H750VBTx$CMSIS\\Flash\\STM32H7x_128k.FLM))</Name>\n        </SetRegEntry>\n        <SetRegEntry>\n          <Number>0</Number>\n          <Key>ST-LINKIII-KEIL_SWO</Key>\n          <Name>-U-O142 -O2190 -S0 -C0 -N00(\"ARM CoreSight SW-DP\") -D00(5BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32H7x_128k.FLM -FS08000000 -FL020000 -FP0($$Device:STM32H750VBTx$CMSIS\\Flash\\STM32H7x_128k.FLM)</Name>\n        </SetRegEntry>\n      </TargetDriverDllRegistry>\n      <Breakpoint/>\n      <WatchWindow1>\n        <Ww>\n          <count>0</count>\n          <WinNumber>1</WinNumber>\n          <ItemText>code_time</ItemText>\n        </Ww>\n        <Ww>\n          <count>1</count>\n          <WinNumber>1</WinNumber>\n          <ItemText>hexapod,0x0A</ItemText>\n        </Ww>\n        <Ww>\n          <count>2</count>\n          <WinNumber>1</WinNumber>\n          <ItemText>rc_remote_data</ItemText>\n        </Ww>\n      </WatchWindow1>\n      <WatchWindow2>\n        <Ww>\n          <count>0</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>Vec_Leg_Start2CEN_s[6]</ItemText>\n        </Ww>\n        <Ww>\n          <count>1</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>P_legs</ItemText>\n        </Ww>\n        <Ww>\n          <count>2</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>Pws</ItemText>\n        </Ww>\n        <Ww>\n          <count>3</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>point</ItemText>\n        </Ww>\n        <Ww>\n          <count>4</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>thetas</ItemText>\n        </Ww>\n        <Ww>\n          <count>5</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>R</ItemText>\n        </Ww>\n        <Ww>\n          <count>6</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>pos1</ItemText>\n        </Ww>\n        <Ww>\n          <count>7</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>alpha1</ItemText>\n        </Ww>\n        <Ww>\n          <count>8</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>alpha_r</ItemText>\n        </Ww>\n        <Ww>\n          <count>9</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>Vec_CEN2leg_ends</ItemText>\n        </Ww>\n        <Ww>\n          <count>10</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>Pws</ItemText>\n        </Ww>\n        <Ww>\n          <count>11</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>P_legs</ItemText>\n        </Ww>\n        <Ww>\n          <count>12</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>CEN</ItemText>\n        </Ww>\n        <Ww>\n          <count>13</count>\n          <WinNumber>2</WinNumber>\n          <ItemText>\\\\Hexapod\\USER/TASK/LegControl_task.cpp\\velocity</ItemText>\n        </Ww>\n      </WatchWindow2>\n      <MemoryWindow1>\n        <Mm>\n          <WinNumber>1</WinNumber>\n          <SubType>2</SubType>\n          <ItemText>0x24002918</ItemText>\n          <AccSizeX>0</AccSizeX>\n        </Mm>\n      </MemoryWindow1>\n      <Tracepoint>\n        <THDelay>0</THDelay>\n      </Tracepoint>\n      <DebugFlag>\n        <trace>0</trace>\n        <periodic>1</periodic>\n        <aLwin>1</aLwin>\n        <aCover>0</aCover>\n        <aSer1>0</aSer1>\n        <aSer2>0</aSer2>\n        <aPa>0</aPa>\n        <viewmode>1</viewmode>\n        <vrSel>0</vrSel>\n        <aSym>0</aSym>\n        <aTbox>0</aTbox>\n        <AscS1>0</AscS1>\n        <AscS2>0</AscS2>\n        <AscS3>0</AscS3>\n        <aSer3>0</aSer3>\n        <eProf>0</eProf>\n        <aLa>0</aLa>\n        <aPa1>0</aPa1>\n        <AscS4>0</AscS4>\n        <aSer4>0</aSer4>\n        <StkLoc>1</StkLoc>\n        <TrcWin>0</TrcWin>\n        <newCpu>0</newCpu>\n        <uProt>0</uProt>\n      </DebugFlag>\n      <LintExecutable></LintExecutable>\n      <LintConfigFile></LintConfigFile>\n      <bLintAuto>0</bLintAuto>\n      <bAutoGenD>0</bAutoGenD>\n      <LntExFlags>0</LntExFlags>\n      <pMisraName></pMisraName>\n      <pszMrule></pszMrule>\n      <pSingCmds></pSingCmds>\n      <pMultCmds></pMultCmds>\n      <pMisraNamep></pMisraNamep>\n      <pszMrulep></pszMrulep>\n      <pSingCmdsp></pSingCmdsp>\n      <pMultCmdsp></pMultCmdsp>\n      <DebugDescription>\n        <Enable>1</Enable>\n        <EnableLog>0</EnableLog>\n        <Protocol>2</Protocol>\n        <DbgClock>10000000</DbgClock>\n      </DebugDescription>\n    </TargetOption>\n  </Target>\n\n  <Group>\n    <GroupName>Application/MDK-ARM</GroupName>\n    <tvExp>0</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>1</GroupNumber>\n      <FileNumber>1</FileNumber>\n      <FileType>2</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>startup_stm32h750xx.s</PathWithFileName>\n      <FilenameWithoutPath>startup_stm32h750xx.s</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>Application/User/Core</GroupName>\n    <tvExp>0</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>2</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/main.c</PathWithFileName>\n      <FilenameWithoutPath>main.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>3</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/gpio.c</PathWithFileName>\n      <FilenameWithoutPath>gpio.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>4</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/freertos.c</PathWithFileName>\n      <FilenameWithoutPath>freertos.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>5</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/dma.c</PathWithFileName>\n      <FilenameWithoutPath>dma.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>6</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/i2c.c</PathWithFileName>\n      <FilenameWithoutPath>i2c.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>7</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/usart.c</PathWithFileName>\n      <FilenameWithoutPath>usart.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>8</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/stm32h7xx_it.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_it.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>9</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/stm32h7xx_hal_msp.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_msp.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>2</GroupNumber>\n      <FileNumber>10</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/stm32h7xx_hal_timebase_tim.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_timebase_tim.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>Drivers/STM32H7xx_HAL_Driver</GroupName>\n    <tvExp>0</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>11</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_cortex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>12</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_rcc.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>13</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_rcc_ex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>14</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_flash.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>15</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_flash_ex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>16</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_gpio.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>17</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_hsem.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>18</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_dma.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>19</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_dma_ex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>20</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_mdma.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>21</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_pwr.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>22</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_pwr_ex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>23</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>24</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_i2c.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>25</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_i2c_ex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>26</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_exti.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>27</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_tim.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>28</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_tim_ex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>29</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_uart.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>3</GroupNumber>\n      <FileNumber>30</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c</PathWithFileName>\n      <FilenameWithoutPath>stm32h7xx_hal_uart_ex.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>Drivers/CMSIS</GroupName>\n    <tvExp>0</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>4</GroupNumber>\n      <FileNumber>31</FileNumber>\n      <FileType>4</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>..\\Drivers\\CMSIS\\DSP\\Lib\\ARM\\arm_cortexM7l_math.lib</PathWithFileName>\n      <FilenameWithoutPath>arm_cortexM7l_math.lib</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>4</GroupNumber>\n      <FileNumber>32</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Core/Src/system_stm32h7xx.c</PathWithFileName>\n      <FilenameWithoutPath>system_stm32h7xx.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>Middlewares/FreeRTOS</GroupName>\n    <tvExp>0</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>33</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/croutine.c</PathWithFileName>\n      <FilenameWithoutPath>croutine.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>34</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c</PathWithFileName>\n      <FilenameWithoutPath>event_groups.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>35</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/list.c</PathWithFileName>\n      <FilenameWithoutPath>list.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>36</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/queue.c</PathWithFileName>\n      <FilenameWithoutPath>queue.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>37</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c</PathWithFileName>\n      <FilenameWithoutPath>stream_buffer.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>38</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/tasks.c</PathWithFileName>\n      <FilenameWithoutPath>tasks.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>39</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/timers.c</PathWithFileName>\n      <FilenameWithoutPath>timers.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>40</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c</PathWithFileName>\n      <FilenameWithoutPath>cmsis_os.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>41</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c</PathWithFileName>\n      <FilenameWithoutPath>heap_4.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>5</GroupNumber>\n      <FileNumber>42</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c</PathWithFileName>\n      <FilenameWithoutPath>port.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>TASK</GroupName>\n    <tvExp>1</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>6</GroupNumber>\n      <FileNumber>43</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\TASK\\led_task.cpp</PathWithFileName>\n      <FilenameWithoutPath>led_task.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>6</GroupNumber>\n      <FileNumber>44</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\TASK\\LegControl_task.cpp</PathWithFileName>\n      <FilenameWithoutPath>LegControl_task.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>6</GroupNumber>\n      <FileNumber>45</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\TASK\\MPU_task.cpp</PathWithFileName>\n      <FilenameWithoutPath>MPU_task.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>APP</GroupName>\n    <tvExp>1</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>46</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\debug_uart.c</PathWithFileName>\n      <FilenameWithoutPath>debug_uart.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>47</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\remote.c</PathWithFileName>\n      <FilenameWithoutPath>remote.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>48</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\leg.cpp</PathWithFileName>\n      <FilenameWithoutPath>leg.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>49</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\Servo.cpp</PathWithFileName>\n      <FilenameWithoutPath>Servo.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>50</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\my_math.cpp</PathWithFileName>\n      <FilenameWithoutPath>my_math.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>51</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\gait_prg.cpp</PathWithFileName>\n      <FilenameWithoutPath>gait_prg.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>52</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\dwt_delay_us.c</PathWithFileName>\n      <FilenameWithoutPath>dwt_delay_us.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>53</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\mpu6050.cpp</PathWithFileName>\n      <FilenameWithoutPath>mpu6050.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>7</GroupNumber>\n      <FileNumber>54</FileNumber>\n      <FileType>8</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\APP\\arm.cpp</PathWithFileName>\n      <FilenameWithoutPath>arm.cpp</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>DMP</GroupName>\n    <tvExp>1</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>0</RteFlg>\n    <File>\n      <GroupNumber>8</GroupNumber>\n      <FileNumber>55</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\DMP\\inv_mpu.c</PathWithFileName>\n      <FilenameWithoutPath>inv_mpu.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>8</GroupNumber>\n      <FileNumber>56</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\DMP\\inv_mpu_dmp_motion_driver.c</PathWithFileName>\n      <FilenameWithoutPath>inv_mpu_dmp_motion_driver.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n    <File>\n      <GroupNumber>8</GroupNumber>\n      <FileNumber>57</FileNumber>\n      <FileType>1</FileType>\n      <tvExp>0</tvExp>\n      <tvExpOptDlg>0</tvExpOptDlg>\n      <bDave2>0</bDave2>\n      <PathWithFileName>.\\USER\\DMP\\dmp_interface.c</PathWithFileName>\n      <FilenameWithoutPath>dmp_interface.c</FilenameWithoutPath>\n      <RteFlg>0</RteFlg>\n      <bShared>0</bShared>\n    </File>\n  </Group>\n\n  <Group>\n    <GroupName>::CMSIS</GroupName>\n    <tvExp>0</tvExp>\n    <tvExpOptDlg>0</tvExpOptDlg>\n    <cbSel>0</cbSel>\n    <RteFlg>1</RteFlg>\n  </Group>\n\n</ProjectOpt>\n"
  },
  {
    "path": "SourceCode/MDK-ARM/Hexapod.uvprojx",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n<Project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"project_projx.xsd\">\n\n  <SchemaVersion>2.1</SchemaVersion>\n\n  <Header>### uVision Project, (C) Keil Software</Header>\n\n  <Targets>\n    <Target>\n      <TargetName>hexapod</TargetName>\n      <ToolsetNumber>0x4</ToolsetNumber>\n      <ToolsetName>ARM-ADS</ToolsetName>\n      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>\n      <uAC6>0</uAC6>\n      <TargetOption>\n        <TargetCommonOption>\n          <Device>STM32H750VBTx</Device>\n          <Vendor>STMicroelectronics</Vendor>\n          <PackID>Keil.STM32H7xx_DFP.3.0.0</PackID>\n          <PackURL>http://www.keil.com/pack/</PackURL>\n          <Cpu>IRAM(0x20000000-0x2001FFFF) IRAM2(0x24000000-0x2407FFFF) IROM(0x8000000-0x801FFFF) CLOCK(12000000) FPU3(DFPU) CPUTYPE(\"Cortex-M7\") ELITTLE TZ</Cpu>\n          <FlashUtilSpec></FlashUtilSpec>\n          <StartupFile></StartupFile>\n          <FlashDriverDll></FlashDriverDll>\n          <DeviceId>0</DeviceId>\n          <RegisterFile></RegisterFile>\n          <MemoryEnv></MemoryEnv>\n          <Cmp></Cmp>\n          <Asm></Asm>\n          <Linker></Linker>\n          <OHString></OHString>\n          <InfinionOptionDll></InfinionOptionDll>\n          <SLE66CMisc></SLE66CMisc>\n          <SLE66AMisc></SLE66AMisc>\n          <SLE66LinkerMisc></SLE66LinkerMisc>\n          <SFDFile>$$Device:STM32H750VBTx$CMSIS\\SVD\\STM32H750x.svd</SFDFile>\n          <bCustSvd>0</bCustSvd>\n          <UseEnv>0</UseEnv>\n          <BinPath></BinPath>\n          <IncludePath></IncludePath>\n          <LibPath></LibPath>\n          <RegisterFilePath></RegisterFilePath>\n          <DBRegisterFilePath></DBRegisterFilePath>\n          <TargetStatus>\n            <Error>0</Error>\n            <ExitCodeStop>0</ExitCodeStop>\n            <ButtonStop>0</ButtonStop>\n            <NotGenerated>0</NotGenerated>\n            <InvalidFlash>1</InvalidFlash>\n          </TargetStatus>\n          <OutputDirectory>app_test\\</OutputDirectory>\n          <OutputName>Hexapod</OutputName>\n          <CreateExecutable>1</CreateExecutable>\n          <CreateLib>0</CreateLib>\n          <CreateHexFile>0</CreateHexFile>\n          <DebugInformation>1</DebugInformation>\n          <BrowseInformation>0</BrowseInformation>\n          <ListingPath></ListingPath>\n          <HexFormatSelection>1</HexFormatSelection>\n          <Merge32K>0</Merge32K>\n          <CreateBatchFile>0</CreateBatchFile>\n          <BeforeCompile>\n            <RunUserProg1>0</RunUserProg1>\n            <RunUserProg2>0</RunUserProg2>\n            <UserProg1Name></UserProg1Name>\n            <UserProg2Name></UserProg2Name>\n            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>\n            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>\n            <nStopU1X>0</nStopU1X>\n            <nStopU2X>0</nStopU2X>\n          </BeforeCompile>\n          <BeforeMake>\n            <RunUserProg1>0</RunUserProg1>\n            <RunUserProg2>0</RunUserProg2>\n            <UserProg1Name></UserProg1Name>\n            <UserProg2Name></UserProg2Name>\n            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>\n            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>\n            <nStopB1X>0</nStopB1X>\n            <nStopB2X>0</nStopB2X>\n          </BeforeMake>\n          <AfterMake>\n            <RunUserProg1>0</RunUserProg1>\n            <RunUserProg2>0</RunUserProg2>\n            <UserProg1Name></UserProg1Name>\n            <UserProg2Name></UserProg2Name>\n            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>\n            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>\n            <nStopA1X>0</nStopA1X>\n            <nStopA2X>0</nStopA2X>\n          </AfterMake>\n          <SelectedForBatchBuild>1</SelectedForBatchBuild>\n          <SVCSIdString></SVCSIdString>\n        </TargetCommonOption>\n        <CommonProperty>\n          <UseCPPCompiler>0</UseCPPCompiler>\n          <RVCTCodeConst>0</RVCTCodeConst>\n          <RVCTZI>0</RVCTZI>\n          <RVCTOtherData>0</RVCTOtherData>\n          <ModuleSelection>0</ModuleSelection>\n          <IncludeInBuild>1</IncludeInBuild>\n          <AlwaysBuild>0</AlwaysBuild>\n          <GenerateAssemblyFile>0</GenerateAssemblyFile>\n          <AssembleAssemblyFile>0</AssembleAssemblyFile>\n          <PublicsOnly>0</PublicsOnly>\n          <StopOnExitCode>3</StopOnExitCode>\n          <CustomArgument></CustomArgument>\n          <IncludeLibraryModules></IncludeLibraryModules>\n          <ComprImg>0</ComprImg>\n        </CommonProperty>\n        <DllOption>\n          <SimDllName>SARMCM3.DLL</SimDllName>\n          <SimDllArguments>-REMAP -MPU</SimDllArguments>\n          <SimDlgDll>DCM.DLL</SimDlgDll>\n          <SimDlgDllArguments>-pCM7</SimDlgDllArguments>\n          <TargetDllName>SARMCM3.DLL</TargetDllName>\n          <TargetDllArguments>-MPU</TargetDllArguments>\n          <TargetDlgDll>TCM.DLL</TargetDlgDll>\n          <TargetDlgDllArguments>-pCM7</TargetDlgDllArguments>\n        </DllOption>\n        <DebugOption>\n          <OPTHX>\n            <HexSelection>1</HexSelection>\n            <HexRangeLowAddress>0</HexRangeLowAddress>\n            <HexRangeHighAddress>0</HexRangeHighAddress>\n            <HexOffset>0</HexOffset>\n            <Oh166RecLen>16</Oh166RecLen>\n          </OPTHX>\n        </DebugOption>\n        <Utilities>\n          <Flash1>\n            <UseTargetDll>1</UseTargetDll>\n            <UseExternalTool>0</UseExternalTool>\n            <RunIndependent>0</RunIndependent>\n            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>\n            <Capability>1</Capability>\n            <DriverSelection>4101</DriverSelection>\n          </Flash1>\n          <bUseTDR>1</bUseTDR>\n          <Flash2>BIN\\UL2V8M.DLL</Flash2>\n          <Flash3>\"\" ()</Flash3>\n          <Flash4></Flash4>\n          <pFcarmOut></pFcarmOut>\n          <pFcarmGrp></pFcarmGrp>\n          <pFcArmRoot></pFcArmRoot>\n          <FcArmLst>0</FcArmLst>\n        </Utilities>\n        <TargetArmAds>\n          <ArmAdsMisc>\n            <GenerateListings>0</GenerateListings>\n            <asHll>1</asHll>\n            <asAsm>1</asAsm>\n            <asMacX>1</asMacX>\n            <asSyms>1</asSyms>\n            <asFals>1</asFals>\n            <asDbgD>1</asDbgD>\n            <asForm>1</asForm>\n            <ldLst>0</ldLst>\n            <ldmm>1</ldmm>\n            <ldXref>1</ldXref>\n            <BigEnd>0</BigEnd>\n            <AdsALst>1</AdsALst>\n            <AdsACrf>1</AdsACrf>\n            <AdsANop>0</AdsANop>\n            <AdsANot>0</AdsANot>\n            <AdsLLst>1</AdsLLst>\n            <AdsLmap>1</AdsLmap>\n            <AdsLcgr>1</AdsLcgr>\n            <AdsLsym>1</AdsLsym>\n            <AdsLszi>1</AdsLszi>\n            <AdsLtoi>1</AdsLtoi>\n            <AdsLsun>1</AdsLsun>\n            <AdsLven>1</AdsLven>\n            <AdsLsxf>1</AdsLsxf>\n            <RvctClst>0</RvctClst>\n            <GenPPlst>0</GenPPlst>\n            <AdsCpuType>\"Cortex-M7\"</AdsCpuType>\n            <RvctDeviceName></RvctDeviceName>\n            <mOS>0</mOS>\n            <uocRom>0</uocRom>\n            <uocRam>0</uocRam>\n            <hadIROM>1</hadIROM>\n            <hadIRAM>1</hadIRAM>\n            <hadXRAM>0</hadXRAM>\n            <uocXRam>0</uocXRam>\n            <RvdsVP>3</RvdsVP>\n            <hadIRAM2>1</hadIRAM2>\n            <hadIROM2>0</hadIROM2>\n            <StupSel>8</StupSel>\n            <useUlib>0</useUlib>\n            <EndSel>0</EndSel>\n            <uLtcg>0</uLtcg>\n            <nSecure>0</nSecure>\n            <RoSelD>3</RoSelD>\n            <RwSelD>4</RwSelD>\n            <CodeSel>0</CodeSel>\n            <OptFeed>0</OptFeed>\n            <NoZi1>0</NoZi1>\n            <NoZi2>0</NoZi2>\n            <NoZi3>0</NoZi3>\n            <NoZi4>0</NoZi4>\n            <NoZi5>0</NoZi5>\n            <Ro1Chk>0</Ro1Chk>\n            <Ro2Chk>0</Ro2Chk>\n            <Ro3Chk>0</Ro3Chk>\n            <Ir1Chk>1</Ir1Chk>\n            <Ir2Chk>0</Ir2Chk>\n            <Ra1Chk>0</Ra1Chk>\n            <Ra2Chk>0</Ra2Chk>\n            <Ra3Chk>0</Ra3Chk>\n            <Im1Chk>1</Im1Chk>\n            <Im2Chk>1</Im2Chk>\n            <OnChipMemories>\n              <Ocm1>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </Ocm1>\n              <Ocm2>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </Ocm2>\n              <Ocm3>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </Ocm3>\n              <Ocm4>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </Ocm4>\n              <Ocm5>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </Ocm5>\n              <Ocm6>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </Ocm6>\n              <IRAM>\n                <Type>0</Type>\n                <StartAddress>0x20000000</StartAddress>\n                <Size>0x20000</Size>\n              </IRAM>\n              <IROM>\n                <Type>1</Type>\n                <StartAddress>0x8000000</StartAddress>\n                <Size>0x20000</Size>\n              </IROM>\n              <XRAM>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </XRAM>\n              <OCR_RVCT1>\n                <Type>1</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </OCR_RVCT1>\n              <OCR_RVCT2>\n                <Type>1</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </OCR_RVCT2>\n              <OCR_RVCT3>\n                <Type>1</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </OCR_RVCT3>\n              <OCR_RVCT4>\n                <Type>1</Type>\n                <StartAddress>0x90000000</StartAddress>\n                <Size>0x800000</Size>\n              </OCR_RVCT4>\n              <OCR_RVCT5>\n                <Type>1</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </OCR_RVCT5>\n              <OCR_RVCT6>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </OCR_RVCT6>\n              <OCR_RVCT7>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </OCR_RVCT7>\n              <OCR_RVCT8>\n                <Type>0</Type>\n                <StartAddress>0x0</StartAddress>\n                <Size>0x0</Size>\n              </OCR_RVCT8>\n              <OCR_RVCT9>\n                <Type>0</Type>\n                <StartAddress>0x20001000</StartAddress>\n                <Size>0x1f000</Size>\n              </OCR_RVCT9>\n              <OCR_RVCT10>\n                <Type>0</Type>\n                <StartAddress>0x24000000</StartAddress>\n                <Size>0x80000</Size>\n              </OCR_RVCT10>\n            </OnChipMemories>\n            <RvctStartVector></RvctStartVector>\n          </ArmAdsMisc>\n          <Cads>\n            <interw>1</interw>\n            <Optim>4</Optim>\n            <oTime>0</oTime>\n            <SplitLS>0</SplitLS>\n            <OneElfS>1</OneElfS>\n            <Strict>0</Strict>\n            <EnumInt>0</EnumInt>\n            <PlainCh>0</PlainCh>\n            <Ropi>0</Ropi>\n            <Rwpi>0</Rwpi>\n            <wLevel>3</wLevel>\n            <uThumb>0</uThumb>\n            <uSurpInc>0</uSurpInc>\n            <uC99>1</uC99>\n            <uGnu>1</uGnu>\n            <useXO>0</useXO>\n            <v6Lang>5</v6Lang>\n            <v6LangP>3</v6LangP>\n            <vShortEn>1</vShortEn>\n            <vShortWch>1</vShortWch>\n            <v6Lto>0</v6Lto>\n            <v6WtE>0</v6WtE>\n            <v6Rtti>0</v6Rtti>\n            <VariousControls>\n              <MiscControls></MiscControls>\n              <Define>USE_HAL_DRIVER,STM32H750xx,ARM_MATH_CM7,__CC_ARM</Define>\n              <Undefine></Undefine>\n              <IncludePath>../Core/Inc;../Drivers/STM32H7xx_HAL_Driver/Inc;../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32H7xx/Include;../Drivers/CMSIS/Include;./USER/APP;../Middlewares/Third_Party/FreeRTOS/Source/include;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F;./USER/TASK;../Middlewares/ST/ARM/DSP/Inc;../Drivers/CMSIS/DSP/Lib/ARM;./USER/DMP</IncludePath>\n            </VariousControls>\n          </Cads>\n          <Aads>\n            <interw>1</interw>\n            <Ropi>0</Ropi>\n            <Rwpi>0</Rwpi>\n            <thumb>0</thumb>\n            <SplitLS>0</SplitLS>\n            <SwStkChk>0</SwStkChk>\n            <NoWarn>0</NoWarn>\n            <uSurpInc>0</uSurpInc>\n            <useXO>0</useXO>\n            <uClangAs>0</uClangAs>\n            <VariousControls>\n              <MiscControls></MiscControls>\n              <Define></Define>\n              <Undefine></Undefine>\n              <IncludePath>..\\Core\\Inc</IncludePath>\n            </VariousControls>\n          </Aads>\n          <LDads>\n            <umfTarg>1</umfTarg>\n            <Ropi>0</Ropi>\n            <Rwpi>0</Rwpi>\n            <noStLib>0</noStLib>\n            <RepFail>1</RepFail>\n            <useFile>0</useFile>\n            <TextAddressRange></TextAddressRange>\n            <DataAddressRange></DataAddressRange>\n            <pXoBase></pXoBase>\n            <ScatterFile></ScatterFile>\n            <IncludeLibs></IncludeLibs>\n            <IncludeLibsPath></IncludeLibsPath>\n            <Misc></Misc>\n            <LinkerInputFile></LinkerInputFile>\n            <DisabledWarnings></DisabledWarnings>\n          </LDads>\n        </TargetArmAds>\n      </TargetOption>\n      <Groups>\n        <Group>\n          <GroupName>Application/MDK-ARM</GroupName>\n          <Files>\n            <File>\n              <FileName>startup_stm32h750xx.s</FileName>\n              <FileType>2</FileType>\n              <FilePath>startup_stm32h750xx.s</FilePath>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>Application/User/Core</GroupName>\n          <Files>\n            <File>\n              <FileName>main.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/main.c</FilePath>\n            </File>\n            <File>\n              <FileName>gpio.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/gpio.c</FilePath>\n            </File>\n            <File>\n              <FileName>freertos.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/freertos.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>dma.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/dma.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>i2c.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/i2c.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>usart.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/usart.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>stm32h7xx_it.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/stm32h7xx_it.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_msp.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/stm32h7xx_hal_msp.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_timebase_tim.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/stm32h7xx_hal_timebase_tim.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>Drivers/STM32H7xx_HAL_Driver</GroupName>\n          <Files>\n            <File>\n              <FileName>stm32h7xx_hal_cortex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_rcc.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_rcc_ex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_flash.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_flash_ex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_gpio.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_hsem.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_dma.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_dma_ex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_mdma.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_pwr.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_pwr_ex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_i2c.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_i2c_ex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_exti.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_tim.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_tim_ex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c</FilePath>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_uart.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>stm32h7xx_hal_uart_ex.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>Drivers/CMSIS</GroupName>\n          <Files>\n            <File>\n              <FileName>arm_cortexM7l_math.lib</FileName>\n              <FileType>4</FileType>\n              <FilePath>..\\Drivers\\CMSIS\\DSP\\Lib\\ARM\\arm_cortexM7l_math.lib</FilePath>\n            </File>\n            <File>\n              <FileName>system_stm32h7xx.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Core/Src/system_stm32h7xx.c</FilePath>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>Middlewares/FreeRTOS</GroupName>\n          <GroupOption>\n            <CommonProperty>\n              <UseCPPCompiler>0</UseCPPCompiler>\n              <RVCTCodeConst>0</RVCTCodeConst>\n              <RVCTZI>0</RVCTZI>\n              <RVCTOtherData>0</RVCTOtherData>\n              <ModuleSelection>0</ModuleSelection>\n              <IncludeInBuild>2</IncludeInBuild>\n              <AlwaysBuild>2</AlwaysBuild>\n              <GenerateAssemblyFile>2</GenerateAssemblyFile>\n              <AssembleAssemblyFile>2</AssembleAssemblyFile>\n              <PublicsOnly>2</PublicsOnly>\n              <StopOnExitCode>11</StopOnExitCode>\n              <CustomArgument></CustomArgument>\n              <IncludeLibraryModules></IncludeLibraryModules>\n              <ComprImg>1</ComprImg>\n            </CommonProperty>\n            <GroupArmAds>\n              <Cads>\n                <interw>2</interw>\n                <Optim>0</Optim>\n                <oTime>2</oTime>\n                <SplitLS>2</SplitLS>\n                <OneElfS>2</OneElfS>\n                <Strict>2</Strict>\n                <EnumInt>2</EnumInt>\n                <PlainCh>2</PlainCh>\n                <Ropi>2</Ropi>\n                <Rwpi>2</Rwpi>\n                <wLevel>4</wLevel>\n                <uThumb>2</uThumb>\n                <uSurpInc>2</uSurpInc>\n                <uC99>2</uC99>\n                <uGnu>2</uGnu>\n                <useXO>2</useXO>\n                <v6Lang>0</v6Lang>\n                <v6LangP>0</v6LangP>\n                <vShortEn>2</vShortEn>\n                <vShortWch>2</vShortWch>\n                <v6Lto>2</v6Lto>\n                <v6WtE>2</v6WtE>\n                <v6Rtti>2</v6Rtti>\n                <VariousControls>\n                  <MiscControls></MiscControls>\n                  <Define></Define>\n                  <Undefine></Undefine>\n                  <IncludePath></IncludePath>\n                </VariousControls>\n              </Cads>\n              <Aads>\n                <interw>2</interw>\n                <Ropi>2</Ropi>\n                <Rwpi>2</Rwpi>\n                <thumb>2</thumb>\n                <SplitLS>2</SplitLS>\n                <SwStkChk>2</SwStkChk>\n                <NoWarn>2</NoWarn>\n                <uSurpInc>2</uSurpInc>\n                <useXO>2</useXO>\n                <uClangAs>2</uClangAs>\n                <VariousControls>\n                  <MiscControls></MiscControls>\n                  <Define></Define>\n                  <Undefine></Undefine>\n                  <IncludePath></IncludePath>\n                </VariousControls>\n              </Aads>\n            </GroupArmAds>\n          </GroupOption>\n          <Files>\n            <File>\n              <FileName>croutine.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/croutine.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>event_groups.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>list.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/list.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>queue.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/queue.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>stream_buffer.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>tasks.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/tasks.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>timers.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/timers.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>cmsis_os.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>heap_4.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n            <File>\n              <FileName>port.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c</FilePath>\n              <FileOption>\n                <CommonProperty>\n                  <UseCPPCompiler>2</UseCPPCompiler>\n                  <RVCTCodeConst>0</RVCTCodeConst>\n                  <RVCTZI>0</RVCTZI>\n                  <RVCTOtherData>0</RVCTOtherData>\n                  <ModuleSelection>0</ModuleSelection>\n                  <IncludeInBuild>1</IncludeInBuild>\n                  <AlwaysBuild>2</AlwaysBuild>\n                  <GenerateAssemblyFile>2</GenerateAssemblyFile>\n                  <AssembleAssemblyFile>2</AssembleAssemblyFile>\n                  <PublicsOnly>2</PublicsOnly>\n                  <StopOnExitCode>11</StopOnExitCode>\n                  <CustomArgument></CustomArgument>\n                  <IncludeLibraryModules></IncludeLibraryModules>\n                  <ComprImg>1</ComprImg>\n                </CommonProperty>\n                <FileArmAds>\n                  <Cads>\n                    <interw>2</interw>\n                    <Optim>0</Optim>\n                    <oTime>2</oTime>\n                    <SplitLS>2</SplitLS>\n                    <OneElfS>2</OneElfS>\n                    <Strict>2</Strict>\n                    <EnumInt>2</EnumInt>\n                    <PlainCh>2</PlainCh>\n                    <Ropi>2</Ropi>\n                    <Rwpi>2</Rwpi>\n                    <wLevel>0</wLevel>\n                    <uThumb>2</uThumb>\n                    <uSurpInc>2</uSurpInc>\n                    <uC99>2</uC99>\n                    <uGnu>2</uGnu>\n                    <useXO>2</useXO>\n                    <v6Lang>0</v6Lang>\n                    <v6LangP>0</v6LangP>\n                    <vShortEn>2</vShortEn>\n                    <vShortWch>2</vShortWch>\n                    <v6Lto>2</v6Lto>\n                    <v6WtE>2</v6WtE>\n                    <v6Rtti>2</v6Rtti>\n                    <VariousControls>\n                      <MiscControls></MiscControls>\n                      <Define></Define>\n                      <Undefine></Undefine>\n                      <IncludePath></IncludePath>\n                    </VariousControls>\n                  </Cads>\n                </FileArmAds>\n              </FileOption>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>TASK</GroupName>\n          <Files>\n            <File>\n              <FileName>led_task.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\TASK\\led_task.cpp</FilePath>\n            </File>\n            <File>\n              <FileName>LegControl_task.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\TASK\\LegControl_task.cpp</FilePath>\n            </File>\n            <File>\n              <FileName>MPU_task.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\TASK\\MPU_task.cpp</FilePath>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>APP</GroupName>\n          <Files>\n            <File>\n              <FileName>debug_uart.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>.\\USER\\APP\\debug_uart.c</FilePath>\n            </File>\n            <File>\n              <FileName>remote.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>.\\USER\\APP\\remote.c</FilePath>\n            </File>\n            <File>\n              <FileName>leg.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\APP\\leg.cpp</FilePath>\n            </File>\n            <File>\n              <FileName>Servo.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\APP\\Servo.cpp</FilePath>\n            </File>\n            <File>\n              <FileName>my_math.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\APP\\my_math.cpp</FilePath>\n            </File>\n            <File>\n              <FileName>gait_prg.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\APP\\gait_prg.cpp</FilePath>\n            </File>\n            <File>\n              <FileName>dwt_delay_us.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>.\\USER\\APP\\dwt_delay_us.c</FilePath>\n            </File>\n            <File>\n              <FileName>mpu6050.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\APP\\mpu6050.cpp</FilePath>\n            </File>\n            <File>\n              <FileName>arm.cpp</FileName>\n              <FileType>8</FileType>\n              <FilePath>.\\USER\\APP\\arm.cpp</FilePath>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>DMP</GroupName>\n          <Files>\n            <File>\n              <FileName>inv_mpu.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>.\\USER\\DMP\\inv_mpu.c</FilePath>\n            </File>\n            <File>\n              <FileName>inv_mpu_dmp_motion_driver.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>.\\USER\\DMP\\inv_mpu_dmp_motion_driver.c</FilePath>\n            </File>\n            <File>\n              <FileName>dmp_interface.c</FileName>\n              <FileType>1</FileType>\n              <FilePath>.\\USER\\DMP\\dmp_interface.c</FilePath>\n            </File>\n          </Files>\n        </Group>\n        <Group>\n          <GroupName>::CMSIS</GroupName>\n        </Group>\n      </Groups>\n    </Target>\n  </Targets>\n\n  <RTE>\n    <apis/>\n    <components>\n      <component Cclass=\"CMSIS\" Cgroup=\"CORE\" Cvendor=\"ARM\" Cversion=\"4.3.0\" condition=\"CMSIS Core\">\n        <package name=\"CMSIS\" schemaVersion=\"1.3\" url=\"http://www.keil.com/pack/\" vendor=\"ARM\" version=\"4.5.0\"/>\n        <targetInfos>\n          <targetInfo name=\"hexapod\"/>\n        </targetInfos>\n      </component>\n    </components>\n    <files/>\n  </RTE>\n\n</Project>\n"
  },
  {
    "path": "SourceCode/MDK-ARM/JLinkLog.txt",
    "content": "T6DC4 376:244 SEGGER J-Link V6.30h Log File (0003ms, 2667ms total)\nT6DC4 376:244 DLL Compiled: Mar 16 2018 18:02:51 (0003ms, 2667ms total)\nT6DC4 376:244 Logging started @ 2024-03-28 15:19 (0003ms, 2667ms total)\nT6DC4 376:247 JLINK_SetWarnOutHandler(...) (0000ms, 2667ms total)\nT6DC4 376:247 JLINK_OpenEx(...)\nFirmware: J-Link V9 compiled May  7 2021 16:26:12\nHardware: V9.70\nS/N: 59701273\nFeature(s): RDI, GDB, FlashDL, FlashBP, JFlash\nTELNET listener socket opened on port 19021Device \"CORTEX-M7\" selected.WEBSRV \nStarting webserver (0112ms, 2779ms total)\nT6DC4 376:247 WEBSRV Webserver running on local port 19080 (0112ms, 2779ms total)\nT6DC4 376:247   returns O.K. (0112ms, 2779ms total)\nT6DC4 376:359 JLINK_GetEmuCaps()  returns 0xB9FF7BBF (0000ms, 2779ms total)\nT6DC4 376:359 JLINK_TIF_GetAvailable(...) (0000ms, 2779ms total)\nT6DC4 376:360 JLINK_SetErrorOutHandler(...) (0000ms, 2779ms total)\nT6DC4 376:360 JLINK_ExecCommand(\"ProjectFile = \"E:\\Hexapod\\Hexapod\\SourceCode\\MDK-ARM\\JLinkSettings.ini\"\", ...). Device \"CORTEX-M7\" selected.  returns 0x00 (0004ms, 2783ms total)\nT6DC4 376:370 JLINK_ExecCommand(\"Device = STM32H750VBTx\", ...). Device \"CORTEX-M7\" selected.  returns 0x00 (0004ms, 2787ms total)\nT6DC4 376:374 JLINK_ExecCommand(\"DisableConnectionTimeout\", ...).   returns 0x01 (0000ms, 2787ms total)\nT6DC4 376:374 JLINK_GetHardwareVersion()  returns 0x17AE8 (0000ms, 2787ms total)\nT6DC4 376:374 JLINK_GetDLLVersion()  returns 63008 (0000ms, 2787ms total)\nT6DC4 376:374 JLINK_GetFirmwareString(...) (0000ms, 2787ms total)\nT6DC4 376:397 JLINK_GetDLLVersion()  returns 63008 (0000ms, 2787ms total)\nT6DC4 376:397 JLINK_GetCompileDateTime() (0000ms, 2787ms total)\nT6DC4 376:401 JLINK_GetFirmwareString(...) (0000ms, 2787ms total)\nT6DC4 376:405 JLINK_GetHardwareVersion()  returns 0x17AE8 (0000ms, 2787ms total)\nT6DC4 376:421 JLINK_TIF_Select(JLINKARM_TIF_SWD)  returns 0x00 (0001ms, 2788ms total)\nT6DC4 376:422 JLINK_SetSpeed(5000) (0000ms, 2788ms total)\nT6DC4 376:422 JLINK_GetId() >0x10B TIF>Found SW-DP with ID 0x6BA02477 >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x28 TIF>Scanning AP map to find all available APs >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x21 TIF>\nAP[3]: Stopped AP scan as end of AP map has been reachedAP[0]: AHB-AP (IDR: 0x84770001)AP[1]: AHB-AP (IDR: 0x84770001)AP[2]: APB-AP (IDR: 0x54770002)Iterating through AP map to find AHB-AP to use >0x42 TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x21 TIF> >0x42 TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x21 TIF>AP[0]: Core foundAP[0]: AHB-AP ROM base: 0xE00FE000 >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF>\n >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x21 TIF>CPUID register: 0x411FC271. Implementer code: 0x41 (ARM)Found Cortex-M7 r1p1, Little endian. -- CPU_ReadMem(4 bytes @ 0xE000EDF0) -- CPU_WriteMem(4 bytes @ 0xE000EDF0) -- CPU_ReadMem(4 bytes @ 0xE0002000)FPUnit: 8 code (BP) slots and 0 literal slots -- CPU_ReadMem(4 bytes @ 0xE000EDFC) -- CPU_WriteMem(4 bytes @ 0xE000EDFC) -- CPU_ReadMem(4 bytes @ 0xE0001000) -- CPU_WriteMem(4 bytes @ 0xE0001000) -- CPU_ReadMem(4 bytes @ 0xE000ED88)\n -- CPU_WriteMem(4 bytes @ 0xE000ED88) -- CPU_ReadMem(4 bytes @ 0xE000ED88) -- CPU_WriteMem(4 bytes @ 0xE000ED88)CoreSight components:ROMTbl[0] @ E00FE000 -- CPU_ReadMem(16 bytes @ 0xE00FE000) -- CPU_ReadMem(16 bytes @ 0xE00FFFF0) -- CPU_ReadMem(16 bytes @ 0xE00FFFE0)ROMTbl[0][0]: E00FF000, CID: B105100D, PID: 000BB4C7 ROM TableROMTbl[1] @ E00FF000 -- CPU_ReadMem(16 bytes @ 0xE00FF000) -- CPU_ReadMem(16 bytes @ 0xE000EFF0) -- CPU_ReadMem(16 bytes @ 0xE000EFE0)\nROMTbl[1][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS-M7 -- CPU_ReadMem(16 bytes @ 0xE0001FF0) -- CPU_ReadMem(16 bytes @ 0xE0001FE0)ROMTbl[1][1]: E0001000, CID: B105E00D, PID: 000BB002 DWT -- CPU_ReadMem(16 bytes @ 0xE0002FF0) -- CPU_ReadMem(16 bytes @ 0xE0002FE0)ROMTbl[1][2]: E0002000, CID: B105E00D, PID: 000BB00E FPB-M7 -- CPU_ReadMem(16 bytes @ 0xE0000FF0) -- CPU_ReadMem(16 bytes @ 0xE0000FE0)ROMTbl[1][3]: E0000000, CID: B105E00D, PID: 000BB001 ITM -- CPU_ReadMem(16 bytes @ 0xE00FF010)\n -- CPU_ReadMem(16 bytes @ 0xE0041FF0) -- CPU_ReadMem(16 bytes @ 0xE0041FE0)ROMTbl[0][1]: E0041000, CID: B105900D, PID: 001BB975 ETM-M7 -- CPU_ReadMem(16 bytes @ 0xE0043FF0) -- CPU_ReadMem(16 bytes @ 0xE0043FE0)ROMTbl[0][2]: E0043000, CID: B105900D, PID: 004BB906 CTI -- CPU_ReadMem(16 bytes @ 0xE00FE010) -- CPU_ReadMem(4 bytes @ 0xE000ED78)Cache: Separate I- and D-cache. (0228ms, 3016ms total)\nT6DC4 376:422  -- CPU_WriteMem(4 bytes @ 0xE000ED84) -- CPU_ReadMem(4 bytes @ 0xE000ED80)I-Cache L1: 16 KB, 256 Sets, 32 Bytes/Line, 2-Way -- CPU_WriteMem(4 bytes @ 0xE000ED84) -- CPU_ReadMem(4 bytes @ 0xE000ED80)D-Cache L1: 16 KB, 128 Sets, 32 Bytes/Line, 4-Way >0x0D TIF> >0x21 TIF>  returns 0x6BA02477 (0238ms, 3026ms total)\nT6DC4 376:660 JLINK_GetDLLVersion()  returns 63008 (0000ms, 3026ms total)\nT6DC4 376:660 JLINK_CORE_GetFound()  returns 0xE0100FF (0000ms, 3026ms total)\nT6DC4 376:660 JLINK_GetDebugInfo(0x100 = JLINKARM_ROM_TABLE_ADDR_INDEX) -- Value=0xE00FE000  returns 0x00 (0000ms, 3026ms total)\nT6DC4 376:663 JLINK_GetDebugInfo(0x100 = JLINKARM_ROM_TABLE_ADDR_INDEX) -- Value=0xE00FE000  returns 0x00 (0000ms, 3026ms total)\nT6DC4 376:663 JLINK_GetDebugInfo(0x101 = JLINKARM_DEBUG_INFO_ETM_ADDR_INDEX) -- Value=0xE0041000  returns 0x00 (0000ms, 3026ms total)\nT6DC4 376:663 JLINK_ReadMemEx(0xE0041FD0, 0x0020 Bytes, ..., Flags = 0x02000004) -- CPU_ReadMem(32 bytes @ 0xE0041FD0) - Data: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...  returns 0x20 (0000ms, 3026ms total)\nT6DC4 376:663 JLINK_GetDebugInfo(0x102 = JLINKARM_DEBUG_INFO_MTB_ADDR_INDEX) -- Value=0x00000000  returns 0x00 (0000ms, 3026ms total)\nT6DC4 376:663 JLINK_GetDebugInfo(0x103 = JLINKARM_DEBUG_INFO_TPIU_ADDR_INDEX) -- Value=0x00000000  returns 0x00 (0000ms, 3026ms total)\nT6DC4 376:663 JLINK_ReadMemEx(0xE0040FF0, 0x0010 Bytes, ..., Flags = 0x02000004) -- CPU_ReadMem(16 bytes @ 0xE0040FF0) - Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  returns 0x10 (0001ms, 3027ms total)\nT6DC4 376:664 JLINK_GetDebugInfo(0x104 = JLINKARM_DEBUG_INFO_ITM_ADDR_INDEX) -- Value=0xE0000000  returns 0x00 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_GetDebugInfo(0x105 = JLINKARM_DEBUG_INFO_DWT_ADDR_INDEX) -- Value=0xE0001000  returns 0x00 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_GetDebugInfo(0x106 = JLINKARM_DEBUG_INFO_FPB_ADDR_INDEX) -- Value=0xE0002000  returns 0x00 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_GetDebugInfo(0x107 = JLINKARM_DEBUG_INFO_NVIC_ADDR_INDEX) -- Value=0xE000E000  returns 0x00 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_GetDebugInfo(0x10C = JLINKARM_DEBUG_INFO_DBG_ADDR_INDEX) -- Value=0xE000EDF0  returns 0x00 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_GetDebugInfo(0x01 = Unknown) -- Value=0x00000001  returns 0x00 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_ReadMemU32(0xE000ED00, 0x0001 Items, ...) -- CPU_ReadMem(4 bytes @ 0xE000ED00) - Data: 71 C2 1F 41  returns 0x01 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_GetDebugInfo(0x10F = JLINKARM_DEBUG_INFO_HAS_CORTEX_M_SECURITY_EXT_INDEX) -- Value=0x00000000  returns 0x00 (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_SetResetType(JLINKARM_CM3_RESET_TYPE_NORMAL)  returns JLINKARM_CM3_RESET_TYPE_NORMAL (0000ms, 3027ms total)\nT6DC4 376:664 JLINK_Reset() -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE000EDF0) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE000EDFC)Reset: Halt core after reset via DEMCR.VC_CORERESET. >0x35 TIF>Reset: Reset device via AIRCR.SYSRESETREQ. -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE000ED0C) >0x0D TIF> >0x28 TIF> -- CPU_ReadMem(4 bytes @ 0xE000EDF0) -- CPU_ReadMem(4 bytes @ 0xE000EDF0) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE000EDF0) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE000EDFC)\n -- CPU_ReadMem(4 bytes @ 0xE000EDF0) -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE000EDFC) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0069ms, 3096ms total)\nT6DC4 376:733 JLINK_Halt()  returns 0x00 (0000ms, 3096ms total)\nT6DC4 376:733 JLINK_ReadMemU32(0xE000EDF0, 0x0001 Items, ...) -- CPU_ReadMem(4 bytes @ 0xE000EDF0) - Data: 03 00 03 00  returns 0x01 (0000ms, 3096ms total)\nT6DC4 376:734 JLINK_WriteU32(0xE000EDF0, 0xA05F0003) -- CPU_WriteMem(4 bytes @ 0xE000EDF0)  returns 0x00 (0000ms, 3096ms total)\nT6DC4 376:734 JLINK_WriteU32(0xE000EDFC, 0x01000000) -- CPU_WriteMem(4 bytes @ 0xE000EDFC)  returns 0x00 (0000ms, 3096ms total)\nT6DC4 376:750 JLINK_GetHWStatus(...)  returns 0x00 (0000ms, 3096ms total)\nT6DC4 376:762 JLINK_GetNumBPUnits(Type = 0xFFFFFF00)  returns 0x08 (0000ms, 3096ms total)\nT6DC4 376:762 JLINK_GetNumBPUnits(Type = 0xF0)  returns 0x2000 (0000ms, 3096ms total)\nT6DC4 376:762 JLINK_GetNumWPUnits()  returns 0x04 (0000ms, 3096ms total)\nT6DC4 376:769 JLINK_GetSpeed()  returns 0xFA0 (0000ms, 3096ms total)\nT6DC4 376:775 JLINK_ReadMemU32(0xE000E004, 0x0001 Items, ...) -- CPU_ReadMem(4 bytes @ 0xE000E004) - Data: 04 00 00 00  returns 0x01 (0000ms, 3096ms total)\nT6DC4 376:775 JLINK_ReadMemU32(0xE000E004, 0x0001 Items, ...) -- CPU_ReadMem(4 bytes @ 0xE000E004) - Data: 04 00 00 00  returns 0x01 (0000ms, 3096ms total)\nT6DC4 376:775 JLINK_WriteMemEx(0xE0001000, 0x001C Bytes, ..., Flags = 0x02000004) - Data: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... -- CPU_WriteMem(28 bytes @ 0xE0001000)  returns 0x1C (0001ms, 3097ms total)\nT6DC4 376:776 JLINK_Halt()  returns 0x00 (0000ms, 3097ms total)\nT6DC4 376:776 JLINK_IsHalted()  returns TRUE (0000ms, 3097ms total)\nT6DC4 376:780 JLINK_WriteMem(0x24000000, 0x0BA8 Bytes, ...) - Data: 00 BE 0A E0 0D 78 2D 06 68 40 08 24 40 00 00 D3 ... -- CPU_WriteMem(2984 bytes @ 0x24000000)  returns 0xBA8 (0011ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R0, 0x90000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R1, 0x017D7840)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R2, 0x00000001)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(R15 (PC), 0x24000068)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000001 (0000ms, 3108ms total)\nT6DC4 376:791 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) -- CPU_WriteMem(4 bytes @ 0xE0002008) -- CPU_WriteMem(4 bytes @ 0xE000200C) -- CPU_WriteMem(4 bytes @ 0xE0002010) -- CPU_WriteMem(4 bytes @ 0xE0002014) -- CPU_WriteMem(4 bytes @ 0xE0002018) -- CPU_WriteMem(4 bytes @ 0xE000201C) -- CPU_WriteMem(4 bytes @ 0xE0002020) -- CPU_WriteMem(4 bytes @ 0xE0002024) -- CPU_WriteMem(4 bytes @ 0xE0001004) (0003ms, 3111ms total)\nT6DC4 376:794 JLINK_IsHalted()  returns FALSE (0001ms, 3112ms total)\nT6DC4 376:882 JLINK_IsHalted()  returns TRUE (0001ms, 3112ms total)\nT6DC4 376:883 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3111ms total)\nT6DC4 376:883 JLINK_ClrBPEx(BPHandle = 0x00000001)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:883 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R0, 0x90000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000002 (0000ms, 3111ms total)\nT6DC4 376:884 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3113ms total)\nT6DC4 376:886 JLINK_IsHalted()  returns TRUE (0002ms, 3115ms total)\nT6DC4 376:888 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_ClrBPEx(BPHandle = 0x00000002)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R0, 0x90000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3113ms total)\nT6DC4 376:888 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0004ms, 3117ms total)\nT6DC4 376:892 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3117ms total)\nT6DC4 376:892 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3117ms total)\nT6DC4 376:892 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000003 (0000ms, 3117ms total)\nT6DC4 376:892 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3119ms total)\nT6DC4 376:894 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:899 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:900 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:902 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:904 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:906 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:908 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:910 JLINK_IsHalted()  returns FALSE (0001ms, 3120ms total)\nT6DC4 376:912 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:914 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:915 JLINK_IsHalted()  returns FALSE (0002ms, 3121ms total)\nT6DC4 376:922 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:925 JLINK_IsHalted()  returns FALSE (0001ms, 3120ms total)\nT6DC4 376:927 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:929 JLINK_IsHalted()  returns FALSE (0001ms, 3120ms total)\nT6DC4 376:932 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:936 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:938 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:940 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:942 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:944 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:945 JLINK_IsHalted()  returns FALSE (0001ms, 3120ms total)\nT6DC4 376:948 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:949 JLINK_IsHalted()  returns FALSE (0001ms, 3120ms total)\nT6DC4 376:951 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:953 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:955 JLINK_IsHalted()  returns FALSE (0000ms, 3119ms total)\nT6DC4 376:957 JLINK_IsHalted()  returns TRUE (0001ms, 3120ms total)\nT6DC4 376:958 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3119ms total)\nT6DC4 376:958 JLINK_ClrBPEx(BPHandle = 0x00000003)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:958 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R0, 0x90001000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000004 (0000ms, 3119ms total)\nT6DC4 376:961 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3121ms total)\nT6DC4 376:963 JLINK_IsHalted()  returns TRUE (0002ms, 3123ms total)\nT6DC4 376:965 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_ClrBPEx(BPHandle = 0x00000004)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R0, 0x90001000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000005 (0000ms, 3121ms total)\nT6DC4 376:965 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3123ms total)\nT6DC4 376:967 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:972 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:974 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:976 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:977 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:979 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:981 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:983 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:985 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:987 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:989 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 376:992 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:000 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:002 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:004 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:005 JLINK_IsHalted()  returns FALSE (0001ms, 3124ms total)\nT6DC4 377:007 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:010 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:012 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:014 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:016 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:018 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:020 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:022 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:024 JLINK_IsHalted()  returns FALSE (0000ms, 3123ms total)\nT6DC4 377:033 JLINK_IsHalted()  returns TRUE (0002ms, 3125ms total)\nT6DC4 377:035 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_ClrBPEx(BPHandle = 0x00000005)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R0, 0x90002000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000006 (0000ms, 3123ms total)\nT6DC4 377:035 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3126ms total)\nT6DC4 377:038 JLINK_IsHalted()  returns TRUE (0002ms, 3128ms total)\nT6DC4 377:040 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_ClrBPEx(BPHandle = 0x00000006)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R0, 0x90002000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000007 (0000ms, 3126ms total)\nT6DC4 377:040 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0001ms, 3127ms total)\nT6DC4 377:041 JLINK_IsHalted()  returns FALSE (0001ms, 3128ms total)\nT6DC4 377:044 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:046 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:048 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:050 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:052 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:057 JLINK_IsHalted()  returns FALSE (0001ms, 3128ms total)\nT6DC4 377:060 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:064 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:066 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:068 JLINK_IsHalted()  returns FALSE (0001ms, 3128ms total)\nT6DC4 377:073 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:076 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:078 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:080 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:082 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:086 JLINK_IsHalted()  returns FALSE (0001ms, 3128ms total)\nT6DC4 377:088 JLINK_IsHalted()  returns FALSE (0001ms, 3128ms total)\nT6DC4 377:093 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:095 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:097 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:100 JLINK_IsHalted()  returns FALSE (0000ms, 3127ms total)\nT6DC4 377:101 JLINK_IsHalted()  returns TRUE (0002ms, 3129ms total)\nT6DC4 377:103 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3127ms total)\nT6DC4 377:103 JLINK_ClrBPEx(BPHandle = 0x00000007)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:103 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R0, 0x90003000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3127ms total)\nT6DC4 377:104 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0004ms, 3131ms total)\nT6DC4 377:108 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3131ms total)\nT6DC4 377:108 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3131ms total)\nT6DC4 377:108 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000008 (0000ms, 3131ms total)\nT6DC4 377:108 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3133ms total)\nT6DC4 377:110 JLINK_IsHalted()  returns TRUE (0003ms, 3136ms total)\nT6DC4 377:113 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_ClrBPEx(BPHandle = 0x00000008)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R0, 0x90003000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000009 (0000ms, 3133ms total)\nT6DC4 377:113 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0001ms, 3134ms total)\nT6DC4 377:114 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:123 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:125 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:127 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:129 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:131 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:132 JLINK_IsHalted()  returns FALSE (0001ms, 3135ms total)\nT6DC4 377:139 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:141 JLINK_IsHalted()  returns FALSE (0001ms, 3135ms total)\nT6DC4 377:145 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:146 JLINK_IsHalted()  returns FALSE (0001ms, 3135ms total)\nT6DC4 377:154 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:156 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:158 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:160 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:162 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:164 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:169 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:171 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:174 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:176 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:178 JLINK_IsHalted()  returns FALSE (0000ms, 3134ms total)\nT6DC4 377:181 JLINK_IsHalted()  returns TRUE (0002ms, 3136ms total)\nT6DC4 377:183 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3134ms total)\nT6DC4 377:183 JLINK_ClrBPEx(BPHandle = 0x00000009)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:183 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R0, 0x90004000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000000A (0000ms, 3134ms total)\nT6DC4 377:184 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3137ms total)\nT6DC4 377:187 JLINK_IsHalted()  returns TRUE (0002ms, 3139ms total)\nT6DC4 377:189 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_ClrBPEx(BPHandle = 0x0000000A)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R0, 0x90004000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000000B (0000ms, 3137ms total)\nT6DC4 377:189 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3139ms total)\nT6DC4 377:191 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:201 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:205 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:207 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:208 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:210 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:212 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:214 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:216 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:218 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:220 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:222 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:224 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:226 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:228 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:230 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:232 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:234 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:236 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:238 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:240 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:244 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:246 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:248 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:250 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:252 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:254 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:256 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:258 JLINK_IsHalted()  returns FALSE (0000ms, 3139ms total)\nT6DC4 377:260 JLINK_IsHalted()  returns TRUE (0001ms, 3140ms total)\nT6DC4 377:261 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3139ms total)\nT6DC4 377:261 JLINK_ClrBPEx(BPHandle = 0x0000000B)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:261 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R0, 0x90005000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000000C (0000ms, 3139ms total)\nT6DC4 377:262 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3141ms total)\nT6DC4 377:264 JLINK_IsHalted()  returns TRUE (0002ms, 3143ms total)\nT6DC4 377:266 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_ClrBPEx(BPHandle = 0x0000000C)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R0, 0x90005000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000000D (0000ms, 3141ms total)\nT6DC4 377:266 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3143ms total)\nT6DC4 377:268 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:270 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:272 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:274 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:276 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:278 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:280 JLINK_IsHalted()  returns FALSE (0001ms, 3144ms total)\nT6DC4 377:282 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:284 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:286 JLINK_IsHalted()  returns FALSE (0001ms, 3144ms total)\nT6DC4 377:291 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:293 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:295 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:297 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:299 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:301 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:303 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:306 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:308 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:310 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:312 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:314 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:316 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:318 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:319 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:321 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:323 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:325 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:327 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:329 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:331 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:333 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:335 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:337 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:339 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:341 JLINK_IsHalted()  returns FALSE (0000ms, 3143ms total)\nT6DC4 377:342 JLINK_IsHalted()  returns TRUE (0002ms, 3145ms total)\nT6DC4 377:344 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3143ms total)\nT6DC4 377:344 JLINK_ClrBPEx(BPHandle = 0x0000000D)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:344 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R0, 0x90006000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000000E (0000ms, 3143ms total)\nT6DC4 377:345 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3145ms total)\nT6DC4 377:347 JLINK_IsHalted()  returns TRUE (0002ms, 3147ms total)\nT6DC4 377:349 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_ClrBPEx(BPHandle = 0x0000000E)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R0, 0x90006000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000000F (0000ms, 3145ms total)\nT6DC4 377:349 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3147ms total)\nT6DC4 377:351 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:358 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:360 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:362 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:363 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:365 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:368 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:370 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:372 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:374 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:376 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:378 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:380 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:382 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:383 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:385 JLINK_IsHalted()  returns FALSE (0001ms, 3148ms total)\nT6DC4 377:387 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:389 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:391 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:393 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:395 JLINK_IsHalted()  returns FALSE (0001ms, 3148ms total)\nT6DC4 377:405 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:407 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:409 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:411 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:413 JLINK_IsHalted()  returns FALSE (0000ms, 3147ms total)\nT6DC4 377:414 JLINK_IsHalted()  returns TRUE (0001ms, 3148ms total)\nT6DC4 377:415 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3147ms total)\nT6DC4 377:415 JLINK_ClrBPEx(BPHandle = 0x0000000F)  returns 0x00 (0000ms, 3147ms total)\nT6DC4 377:415 JLINK_ReadReg(R0)  returns 0x00000000 (0001ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R0, 0x90007000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000010 (0000ms, 3148ms total)\nT6DC4 377:417 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3150ms total)\nT6DC4 377:419 JLINK_IsHalted()  returns TRUE (0002ms, 3152ms total)\nT6DC4 377:421 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3150ms total)\nT6DC4 377:421 JLINK_ClrBPEx(BPHandle = 0x00000010)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:421 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3150ms total)\nT6DC4 377:421 JLINK_WriteReg(R0, 0x90007000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:421 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000011 (0000ms, 3150ms total)\nT6DC4 377:422 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3152ms total)\nT6DC4 377:424 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:426 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:428 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:430 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:432 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:434 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:436 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:438 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:440 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:442 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:444 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:446 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:448 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:450 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:452 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:454 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:456 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:458 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:460 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:466 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:468 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:470 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:472 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:474 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:476 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:477 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:479 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:481 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:483 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:485 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:487 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:489 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:491 JLINK_IsHalted()  returns FALSE (0000ms, 3152ms total)\nT6DC4 377:493 JLINK_IsHalted()  returns TRUE (0001ms, 3153ms total)\nT6DC4 377:494 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0001ms, 3153ms total)\nT6DC4 377:495 JLINK_ClrBPEx(BPHandle = 0x00000011)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:495 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R0, 0x90008000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000012 (0000ms, 3153ms total)\nT6DC4 377:496 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3155ms total)\nT6DC4 377:498 JLINK_IsHalted()  returns TRUE (0002ms, 3157ms total)\nT6DC4 377:500 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_ClrBPEx(BPHandle = 0x00000012)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R0, 0x90008000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000013 (0000ms, 3155ms total)\nT6DC4 377:500 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3157ms total)\nT6DC4 377:502 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:504 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:506 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:509 JLINK_IsHalted()  returns FALSE (0001ms, 3158ms total)\nT6DC4 377:512 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:514 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:516 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:518 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:520 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:522 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:523 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:525 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:527 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:529 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:531 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:533 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:535 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:537 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:539 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:541 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:543 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:545 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:547 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:548 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:550 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:552 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:554 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:555 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:557 JLINK_IsHalted()  returns FALSE (0001ms, 3158ms total)\nT6DC4 377:559 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:561 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:563 JLINK_IsHalted()  returns FALSE (0000ms, 3157ms total)\nT6DC4 377:565 JLINK_IsHalted()  returns TRUE (0002ms, 3159ms total)\nT6DC4 377:567 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3157ms total)\nT6DC4 377:567 JLINK_ClrBPEx(BPHandle = 0x00000013)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:567 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R0, 0x90009000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000014 (0000ms, 3157ms total)\nT6DC4 377:569 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3159ms total)\nT6DC4 377:571 JLINK_IsHalted()  returns TRUE (0002ms, 3161ms total)\nT6DC4 377:573 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_ClrBPEx(BPHandle = 0x00000014)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R0, 0x90009000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000015 (0000ms, 3159ms total)\nT6DC4 377:573 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3162ms total)\nT6DC4 377:576 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:579 JLINK_IsHalted()  returns FALSE (0001ms, 3163ms total)\nT6DC4 377:581 JLINK_IsHalted()  returns FALSE (0001ms, 3163ms total)\nT6DC4 377:583 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:585 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:587 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:588 JLINK_IsHalted()  returns FALSE (0001ms, 3163ms total)\nT6DC4 377:590 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:592 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:594 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:596 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:598 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:600 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:608 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:610 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:612 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:614 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:623 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:625 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:627 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:629 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:631 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:635 JLINK_IsHalted()  returns FALSE (0000ms, 3162ms total)\nT6DC4 377:637 JLINK_IsHalted()  returns TRUE (0002ms, 3164ms total)\nT6DC4 377:639 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_ClrBPEx(BPHandle = 0x00000015)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R0, 0x9000A000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(R15 (PC), 0x240000A6)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000016 (0000ms, 3162ms total)\nT6DC4 377:639 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3165ms total)\nT6DC4 377:642 JLINK_IsHalted()  returns TRUE (0002ms, 3167ms total)\nT6DC4 377:644 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_ClrBPEx(BPHandle = 0x00000016)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_ReadReg(R0)  returns 0x00000001 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R0, 0x9000A000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(R15 (PC), 0x24000094)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000017 (0000ms, 3165ms total)\nT6DC4 377:644 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3167ms total)\nT6DC4 377:646 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:648 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:653 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:655 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:657 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:659 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:661 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:663 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:665 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:667 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:669 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:671 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:673 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:675 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:677 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:683 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:685 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:687 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:689 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:691 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:693 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:694 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:696 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:698 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:700 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:702 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:704 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:706 JLINK_IsHalted()  returns FALSE (0000ms, 3167ms total)\nT6DC4 377:708 JLINK_IsHalted()  returns TRUE (0002ms, 3169ms total)\nT6DC4 377:710 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_ClrBPEx(BPHandle = 0x00000017)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R0, 0x00000001)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R2, 0x000000FF)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(R15 (PC), 0x24000086)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000018 (0000ms, 3167ms total)\nT6DC4 377:710 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3169ms total)\nT6DC4 377:712 JLINK_IsHalted()  returns TRUE (0002ms, 3171ms total)\nT6DC4 377:714 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3169ms total)\nT6DC4 377:714 JLINK_ClrBPEx(BPHandle = 0x00000018)  returns 0x00 (0000ms, 3169ms total)\nT6DC4 377:714 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3169ms total)\nT6DC4 377:775 JLINK_WriteMem(0x24000000, 0x0BA8 Bytes, ...) - Data: 00 BE 0A E0 0D 78 2D 06 68 40 08 24 40 00 00 D3 ... -- CPU_WriteMem(2984 bytes @ 0x24000000)  returns 0xBA8 (0009ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R0, 0x90000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R1, 0x017D7840)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R2, 0x00000002)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(R15 (PC), 0x24000068)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000019 (0000ms, 3178ms total)\nT6DC4 377:784 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3180ms total)\nT6DC4 377:786 JLINK_IsHalted()  returns FALSE (0001ms, 3181ms total)\nT6DC4 377:798 JLINK_IsHalted()  returns TRUE (0002ms, 3182ms total)\nT6DC4 377:800 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3180ms total)\nT6DC4 377:800 JLINK_ClrBPEx(BPHandle = 0x00000019)  returns 0x00 (0000ms, 3180ms total)\nT6DC4 377:800 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3180ms total)\nT6DC4 377:800 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: A8 73 00 24 FD 03 00 90 BF 53 00 90 09 4D 00 90 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3181ms total)\nT6DC4 377:801 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 17 04 00 90 17 04 00 90 17 04 00 90 17 04 00 90 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3185ms total)\nT6DC4 377:805 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 24 FA 05 F6 5E 40 12 BF 16 43 B2 FA 82 F5 02 FA ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3188ms total)\nT6DC4 377:808 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 00 D9 09 1D 81 65 08 46 70 47 21 F0 FF 01 F9 E7 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3192ms total)\nT6DC4 377:812 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 02 48 03 F0 5D BF 00 00 A0 00 00 24 38 05 00 24 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3195ms total)\nT6DC4 377:815 JLINK_WriteReg(R0, 0x90000000)  returns 0x00 (0001ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000001A (0000ms, 3196ms total)\nT6DC4 377:816 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3198ms total)\nT6DC4 377:818 JLINK_IsHalted()  returns FALSE (0000ms, 3198ms total)\nT6DC4 377:825 JLINK_IsHalted()  returns TRUE (0002ms, 3200ms total)\nT6DC4 377:827 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3198ms total)\nT6DC4 377:827 JLINK_ClrBPEx(BPHandle = 0x0000001A)  returns 0x00 (0000ms, 3198ms total)\nT6DC4 377:827 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3198ms total)\nT6DC4 377:828 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 41 65 01 20 BD E8 F0 9F 90 4C 90 4B 01 68 18 3C ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0000ms, 3198ms total)\nT6DC4 377:828 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: AC F1 60 0C 61 45 19 D0 DF F8 FC C1 AC F1 48 0C ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3202ms total)\nT6DC4 377:832 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 08 54 02 58 2D E9 FC 5F 04 46 F7 4E 00 20 DF F8 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3206ms total)\nT6DC4 377:836 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 41 69 21 F0 80 01 41 61 20 6C 08 B9 A0 6C 20 B1 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0003ms, 3209ms total)\nT6DC4 377:839 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: C0 1B 05 28 01 D9 20 21 1C E1 20 68 00 68 C0 07 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R0, 0x90001000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000001B (0000ms, 3213ms total)\nT6DC4 377:843 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3215ms total)\nT6DC4 377:845 JLINK_IsHalted()  returns FALSE (0000ms, 3215ms total)\nT6DC4 377:850 JLINK_IsHalted()  returns FALSE (0000ms, 3215ms total)\nT6DC4 377:854 JLINK_IsHalted()  returns TRUE (0002ms, 3217ms total)\nT6DC4 377:856 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3215ms total)\nT6DC4 377:856 JLINK_ClrBPEx(BPHandle = 0x0000001B)  returns 0x00 (0000ms, 3215ms total)\nT6DC4 377:856 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3215ms total)\nT6DC4 377:856 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 66 4A 30 32 90 42 13 D0 64 4A 48 32 90 42 0F D0 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3216ms total)\nT6DC4 377:857 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 20 B1 20 68 02 68 42 F0 04 02 02 60 20 68 88 42 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3220ms total)\nT6DC4 377:861 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 0C 06 03 D1 4F F0 00 0C 41 E0 6C E0 DF F8 F4 C0 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3223ms total)\nT6DC4 377:864 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 01 EE 90 1A 11 68 C4 F3 C1 04 F8 EE 61 2A E3 40 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3227ms total)\nT6DC4 377:868 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: D4 F8 A8 20 D9 F8 00 10 21 F0 E0 61 11 43 C9 F8 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R0, 0x90002000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000001C (0000ms, 3230ms total)\nT6DC4 377:871 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3233ms total)\nT6DC4 377:874 JLINK_IsHalted()  returns FALSE (0000ms, 3233ms total)\nT6DC4 377:877 JLINK_IsHalted()  returns FALSE (0000ms, 3233ms total)\nT6DC4 377:878 JLINK_IsHalted()  returns FALSE (0000ms, 3233ms total)\nT6DC4 377:880 JLINK_IsHalted()  returns TRUE (0002ms, 3235ms total)\nT6DC4 377:882 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3233ms total)\nT6DC4 377:882 JLINK_ClrBPEx(BPHandle = 0x0000001C)  returns 0x00 (0000ms, 3233ms total)\nT6DC4 377:882 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3233ms total)\nT6DC4 377:883 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 11 DC 10 B3 B0 F1 80 5F 15 D0 B0 F1 00 5F 10 D1 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3234ms total)\nT6DC4 377:884 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: B0 F5 40 6F 24 D0 11 DC 10 B3 B0 F5 80 6F 15 D0 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3237ms total)\nT6DC4 377:887 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 00 20 22 F0 07 02 02 43 CA F8 00 20 FF F7 A0 F8 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3241ms total)\nT6DC4 377:891 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 0C E0 FE F7 A5 FE 06 46 05 E0 00 BF FE F7 A0 FE ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0003ms, 3244ms total)\nT6DC4 377:894 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 28 68 01 E0 17 E0 1D E0 40 F0 80 70 28 60 FE F7 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R0, 0x90003000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000001D (0000ms, 3248ms total)\nT6DC4 377:898 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3250ms total)\nT6DC4 377:900 JLINK_IsHalted()  returns FALSE (0001ms, 3251ms total)\nT6DC4 377:904 JLINK_IsHalted()  returns FALSE (0000ms, 3250ms total)\nT6DC4 377:906 JLINK_IsHalted()  returns FALSE (0000ms, 3250ms total)\nT6DC4 377:908 JLINK_IsHalted()  returns TRUE (0002ms, 3252ms total)\nT6DC4 377:910 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3250ms total)\nT6DC4 377:910 JLINK_ClrBPEx(BPHandle = 0x0000001D)  returns 0x00 (0000ms, 3250ms total)\nT6DC4 377:910 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3250ms total)\nT6DC4 377:910 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 82 60 20 46 01 F0 34 FD 22 68 20 21 00 20 15 60 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3251ms total)\nT6DC4 377:911 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 00 20 15 60 C4 F8 84 10 84 F8 80 00 70 BD 02 20 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3255ms total)\nT6DC4 377:915 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 41 68 21 F4 90 41 41 60 20 68 81 68 21 F0 2A 01 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3258ms total)\nT6DC4 377:918 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 7E E7 74 4A 01 21 90 42 44 D1 CD F8 78 80 68 46 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3262ms total)\nT6DC4 377:922 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: C8 E7 00 00 70 B5 04 46 D0 F8 84 00 20 28 44 D1 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R0, 0x90004000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000001E (0000ms, 3266ms total)\nT6DC4 377:926 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3268ms total)\nT6DC4 377:928 JLINK_IsHalted()  returns FALSE (0000ms, 3268ms total)\nT6DC4 377:930 JLINK_IsHalted()  returns FALSE (0000ms, 3268ms total)\nT6DC4 377:932 JLINK_IsHalted()  returns FALSE (0000ms, 3268ms total)\nT6DC4 377:934 JLINK_IsHalted()  returns FALSE (0000ms, 3268ms total)\nT6DC4 377:936 JLINK_IsHalted()  returns TRUE (0001ms, 3269ms total)\nT6DC4 377:937 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3268ms total)\nT6DC4 377:937 JLINK_ClrBPEx(BPHandle = 0x0000001E)  returns 0x00 (0000ms, 3268ms total)\nT6DC4 377:937 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3268ms total)\nT6DC4 377:938 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: CD E9 01 54 58 46 03 94 FD F7 A4 F9 1B 20 00 90 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3270ms total)\nT6DC4 377:939 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 00 08 02 58 00 0C 02 58 18 48 00 21 10 B5 16 4C ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3273ms total)\nT6DC4 377:942 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: C0 00 10 43 08 60 0A 68 A0 69 22 F0 20 02 02 43 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3277ms total)\nT6DC4 377:946 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 08 B1 72 B6 FE E7 09 22 1A 95 CD E9 16 25 4F F4 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0003ms, 3280ms total)\nT6DC4 377:949 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 22 F0 80 02 41 E8 00 23 00 2B F5 D1 02 68 52 E8 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R0, 0x90005000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000001F (0000ms, 3284ms total)\nT6DC4 377:953 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3286ms total)\nT6DC4 377:955 JLINK_IsHalted()  returns FALSE (0001ms, 3287ms total)\nT6DC4 377:960 JLINK_IsHalted()  returns FALSE (0000ms, 3286ms total)\nT6DC4 377:962 JLINK_IsHalted()  returns FALSE (0000ms, 3286ms total)\nT6DC4 377:964 JLINK_IsHalted()  returns TRUE (0001ms, 3287ms total)\nT6DC4 377:965 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3286ms total)\nT6DC4 377:965 JLINK_ClrBPEx(BPHandle = 0x0000001F)  returns 0x00 (0000ms, 3286ms total)\nT6DC4 377:965 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3286ms total)\nT6DC4 377:966 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 08 70 A0 6D 40 1C A0 65 B4 F8 5E 00 40 1E A4 F8 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3287ms total)\nT6DC4 377:967 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 08 D0 21 68 04 20 08 62 D4 F8 8C 00 40 F0 02 00 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3290ms total)\nT6DC4 377:970 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: C0 F3 C1 00 C1 40 B1 B1 63 6A 60 68 38 F8 13 30 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3294ms total)\nT6DC4 377:974 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: F0 EE 40 0A 01 F0 8E FD 20 46 AF F3 00 80 96 E8 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3298ms total)\nT6DC4 377:978 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: D0 0F C9 3F 00 F1 90 01 81 EC 03 0A FF F7 14 BF ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R0, 0x90006000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000020 (0000ms, 3301ms total)\nT6DC4 377:981 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3304ms total)\nT6DC4 377:984 JLINK_IsHalted()  returns FALSE (0000ms, 3304ms total)\nT6DC4 377:987 JLINK_IsHalted()  returns FALSE (0000ms, 3304ms total)\nT6DC4 377:989 JLINK_IsHalted()  returns FALSE (0000ms, 3304ms total)\nT6DC4 377:991 JLINK_IsHalted()  returns TRUE (0001ms, 3305ms total)\nT6DC4 377:992 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3304ms total)\nT6DC4 377:992 JLINK_ClrBPEx(BPHandle = 0x00000020)  returns 0x00 (0000ms, 3304ms total)\nT6DC4 377:992 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3304ms total)\nT6DC4 377:993 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 04 E0 00 22 03 E0 80 F8 F0 13 02 E0 02 22 80 F8 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3305ms total)\nT6DC4 377:994 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 10 0A 04 F2 CC 40 B8 EE C0 0A 20 EE 28 0A FF F7 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3308ms total)\nT6DC4 377:997 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 8C 22 01 46 04 F5 2F 70 F9 F7 A8 F8 6E 49 23 A8 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3311ms total)\nT6DC4 378:000 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 94 ED 42 0A 00 F0 91 FD F0 EE 40 8A 94 ED 43 0A ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3315ms total)\nT6DC4 378:004 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: A0 FB DB 4F 09 EB 86 06 41 46 18 37 07 EB 85 00 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3318ms total)\nT6DC4 378:007 JLINK_WriteReg(R0, 0x90007000)  returns 0x00 (0000ms, 3318ms total)\nT6DC4 378:007 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3318ms total)\nT6DC4 378:007 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3318ms total)\nT6DC4 378:007 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3318ms total)\nT6DC4 378:007 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3318ms total)\nT6DC4 378:007 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3318ms total)\nT6DC4 378:008 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000021 (0000ms, 3319ms total)\nT6DC4 378:008 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3321ms total)\nT6DC4 378:010 JLINK_IsHalted()  returns FALSE (0001ms, 3322ms total)\nT6DC4 378:019 JLINK_IsHalted()  returns TRUE (0002ms, 3323ms total)\nT6DC4 378:021 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3321ms total)\nT6DC4 378:021 JLINK_ClrBPEx(BPHandle = 0x00000021)  returns 0x00 (0000ms, 3321ms total)\nT6DC4 378:021 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3321ms total)\nT6DC4 378:021 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 16 E0 00 F0 C0 F9 B0 EE 40 BA 02 20 98 ED 08 0A ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3322ms total)\nT6DC4 378:022 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 24 4A 05 EB 45 0B 69 46 DF F8 88 80 48 3A 22 48 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3326ms total)\nT6DC4 378:026 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: D4 ED 00 0A 30 EE 20 0A 8D ED 00 0A D5 ED 01 0A ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3329ms total)\nT6DC4 378:029 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: DB 0F 49 40 DB 0F 49 C0 00 00 C9 BF 22 AA FD B9 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3333ms total)\nT6DC4 378:033 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 01 0A 10 EE 10 0A 00 F5 00 60 6F F3 0B 00 00 EE ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R0, 0x90008000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000022 (0000ms, 3336ms total)\nT6DC4 378:036 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3339ms total)\nT6DC4 378:039 JLINK_IsHalted()  returns FALSE (0000ms, 3339ms total)\nT6DC4 378:046 JLINK_IsHalted()  returns TRUE (0001ms, 3340ms total)\nT6DC4 378:047 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3339ms total)\nT6DC4 378:048 JLINK_ClrBPEx(BPHandle = 0x00000022)  returns 0x00 (0000ms, 3339ms total)\nT6DC4 378:048 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3339ms total)\nT6DC4 378:048 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 41 F0 FC 51 00 EE 90 1A 74 E7 B3 F1 80 7F 06 D2 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3340ms total)\nT6DC4 378:049 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 10 40 00 F0 AC B9 B0 F1 FF 4F 0F D0 C1 F3 C7 52 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3344ms total)\nT6DC4 378:053 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 0C FC F2 40 45 EA 08 05 4C EA 02 06 A4 FB 03 4C ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3347ms total)\nT6DC4 378:056 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: BF F3 4F 8F BF F3 6F 8F FE E7 20 6B 00 F0 56 FA ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3351ms total)\nT6DC4 378:060 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: C1 60 01 61 70 47 00 21 01 61 70 47 30 B5 0B 68 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R0, 0x90009000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:063 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000023 (0000ms, 3354ms total)\nT6DC4 378:064 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3356ms total)\nT6DC4 378:066 JLINK_IsHalted()  returns FALSE (0000ms, 3356ms total)\nT6DC4 378:070 JLINK_IsHalted()  returns FALSE (0000ms, 3356ms total)\nT6DC4 378:071 JLINK_IsHalted()  returns FALSE (0000ms, 3356ms total)\nT6DC4 378:073 JLINK_IsHalted()  returns TRUE (0001ms, 3357ms total)\nT6DC4 378:074 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3356ms total)\nT6DC4 378:074 JLINK_ClrBPEx(BPHandle = 0x00000023)  returns 0x00 (0000ms, 3356ms total)\nT6DC4 378:074 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3356ms total)\nT6DC4 378:075 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: F0 9F 28 46 FF F7 86 FE 4F F0 FF 30 F6 E7 F0 B5 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3357ms total)\nT6DC4 378:076 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 01 48 C0 68 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3360ms total)\nT6DC4 378:079 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: E8 00 00 00 D4 02 00 90 60 A5 00 90 E8 00 00 24 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3364ms total)\nT6DC4 378:083 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3368ms total)\nT6DC4 378:087 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R0, 0x9000A000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R1, 0x00000560)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(R15 (PC), 0x240000AA)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:090 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:091 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3371ms total)\nT6DC4 378:091 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000024 (0000ms, 3371ms total)\nT6DC4 378:091 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3373ms total)\nT6DC4 378:093 JLINK_IsHalted()  returns FALSE (0000ms, 3373ms total)\nT6DC4 378:095 JLINK_IsHalted()  returns TRUE (0002ms, 3375ms total)\nT6DC4 378:097 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_ClrBPEx(BPHandle = 0x00000024)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R0, 0x00000002)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R1, 0x00000560)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(R15 (PC), 0x24000086)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000025 (0000ms, 3373ms total)\nT6DC4 378:097 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3376ms total)\nT6DC4 378:100 JLINK_IsHalted()  returns TRUE (0001ms, 3377ms total)\nT6DC4 378:101 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3376ms total)\nT6DC4 378:101 JLINK_ClrBPEx(BPHandle = 0x00000025)  returns 0x00 (0000ms, 3376ms total)\nT6DC4 378:101 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3376ms total)\nT6DC4 378:163 JLINK_WriteMem(0x24000000, 0x0BA8 Bytes, ...) - Data: 00 BE 0A E0 0D 78 2D 06 68 40 08 24 40 00 00 D3 ... -- CPU_WriteMem(2984 bytes @ 0x24000000)  returns 0xBA8 (0009ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R0, 0x90000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R1, 0x017D7840)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R2, 0x00000003)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3385ms total)\nT6DC4 378:172 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0001ms, 3386ms total)\nT6DC4 378:173 JLINK_WriteReg(R15 (PC), 0x24000068)  returns 0x00 (0000ms, 3386ms total)\nT6DC4 378:173 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3386ms total)\nT6DC4 378:173 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3386ms total)\nT6DC4 378:173 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3386ms total)\nT6DC4 378:173 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3386ms total)\nT6DC4 378:173 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000026 (0000ms, 3386ms total)\nT6DC4 378:173 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3388ms total)\nT6DC4 378:175 JLINK_IsHalted()  returns FALSE (0000ms, 3388ms total)\nT6DC4 378:190 JLINK_IsHalted()  returns TRUE (0001ms, 3389ms total)\nT6DC4 378:191 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3388ms total)\nT6DC4 378:191 JLINK_ClrBPEx(BPHandle = 0x00000026)  returns 0x00 (0000ms, 3388ms total)\nT6DC4 378:191 JLINK_ReadReg(R0)  returns 0x00000000 (0001ms, 3389ms total)\nT6DC4 378:192 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: A8 73 00 24 FD 03 00 90 BF 53 00 90 09 4D 00 90 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0000ms, 3389ms total)\nT6DC4 378:192 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 17 04 00 90 17 04 00 90 17 04 00 90 17 04 00 90 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3393ms total)\nT6DC4 378:196 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 24 FA 05 F6 5E 40 12 BF 16 43 B2 FA 82 F5 02 FA ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3396ms total)\nT6DC4 378:199 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 00 D9 09 1D 81 65 08 46 70 47 21 F0 FF 01 F9 E7 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3400ms total)\nT6DC4 378:203 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 02 48 03 F0 5D BF 00 00 A0 00 00 24 38 05 00 24 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R0, 0x90000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3403ms total)\nT6DC4 378:206 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0001ms, 3404ms total)\nT6DC4 378:207 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3404ms total)\nT6DC4 378:207 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3404ms total)\nT6DC4 378:207 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3404ms total)\nT6DC4 378:207 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3404ms total)\nT6DC4 378:207 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000027 (0000ms, 3404ms total)\nT6DC4 378:207 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0001ms, 3405ms total)\nT6DC4 378:208 JLINK_IsHalted()  returns FALSE (0001ms, 3406ms total)\nT6DC4 378:215 JLINK_IsHalted()  returns TRUE (0002ms, 3407ms total)\nT6DC4 378:217 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3405ms total)\nT6DC4 378:217 JLINK_ClrBPEx(BPHandle = 0x00000027)  returns 0x00 (0000ms, 3405ms total)\nT6DC4 378:217 JLINK_ReadReg(R0)  returns 0x90001000 (0000ms, 3405ms total)\nT6DC4 378:217 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 41 65 01 20 BD E8 F0 9F 90 4C 90 4B 01 68 18 3C ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3406ms total)\nT6DC4 378:218 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: AC F1 60 0C 61 45 19 D0 DF F8 FC C1 AC F1 48 0C ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3410ms total)\nT6DC4 378:222 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 08 54 02 58 2D E9 FC 5F 04 46 F7 4E 00 20 DF F8 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3413ms total)\nT6DC4 378:225 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 41 69 21 F0 80 01 41 61 20 6C 08 B9 A0 6C 20 B1 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3417ms total)\nT6DC4 378:229 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: C0 1B 05 28 01 D9 20 21 1C E1 20 68 00 68 C0 07 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R0, 0x90001000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000028 (0000ms, 3420ms total)\nT6DC4 378:232 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3422ms total)\nT6DC4 378:234 JLINK_IsHalted()  returns FALSE (0001ms, 3423ms total)\nT6DC4 378:238 JLINK_IsHalted()  returns TRUE (0001ms, 3423ms total)\nT6DC4 378:239 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3422ms total)\nT6DC4 378:239 JLINK_ClrBPEx(BPHandle = 0x00000028)  returns 0x00 (0000ms, 3422ms total)\nT6DC4 378:239 JLINK_ReadReg(R0)  returns 0x90002000 (0000ms, 3422ms total)\nT6DC4 378:240 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 66 4A 30 32 90 42 13 D0 64 4A 48 32 90 42 0F D0 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3423ms total)\nT6DC4 378:241 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 20 B1 20 68 02 68 42 F0 04 02 02 60 20 68 88 42 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3426ms total)\nT6DC4 378:244 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 0C 06 03 D1 4F F0 00 0C 41 E0 6C E0 DF F8 F4 C0 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3430ms total)\nT6DC4 378:248 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 01 EE 90 1A 11 68 C4 F3 C1 04 F8 EE 61 2A E3 40 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3434ms total)\nT6DC4 378:252 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: D4 F8 A8 20 D9 F8 00 10 21 F0 E0 61 11 43 C9 F8 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3437ms total)\nT6DC4 378:255 JLINK_WriteReg(R0, 0x90002000)  returns 0x00 (0000ms, 3437ms total)\nT6DC4 378:255 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3437ms total)\nT6DC4 378:255 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0001ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000029 (0000ms, 3438ms total)\nT6DC4 378:256 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3440ms total)\nT6DC4 378:258 JLINK_IsHalted()  returns FALSE (0000ms, 3440ms total)\nT6DC4 378:260 JLINK_IsHalted()  returns TRUE (0001ms, 3441ms total)\nT6DC4 378:261 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3440ms total)\nT6DC4 378:261 JLINK_ClrBPEx(BPHandle = 0x00000029)  returns 0x00 (0000ms, 3440ms total)\nT6DC4 378:261 JLINK_ReadReg(R0)  returns 0x90003000 (0000ms, 3440ms total)\nT6DC4 378:262 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 11 DC 10 B3 B0 F1 80 5F 15 D0 B0 F1 00 5F 10 D1 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0000ms, 3440ms total)\nT6DC4 378:263 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: B0 F5 40 6F 24 D0 11 DC 10 B3 B0 F5 80 6F 15 D0 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3444ms total)\nT6DC4 378:266 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 00 20 22 F0 07 02 02 43 CA F8 00 20 FF F7 A0 F8 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3448ms total)\nT6DC4 378:270 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 0C E0 FE F7 A5 FE 06 46 05 E0 00 BF FE F7 A0 FE ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3452ms total)\nT6DC4 378:274 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 28 68 01 E0 17 E0 1D E0 40 F0 80 70 28 60 FE F7 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R0, 0x90003000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000002A (0000ms, 3455ms total)\nT6DC4 378:277 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3458ms total)\nT6DC4 378:280 JLINK_IsHalted()  returns FALSE (0000ms, 3458ms total)\nT6DC4 378:283 JLINK_IsHalted()  returns TRUE (0001ms, 3459ms total)\nT6DC4 378:284 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3458ms total)\nT6DC4 378:284 JLINK_ClrBPEx(BPHandle = 0x0000002A)  returns 0x00 (0000ms, 3458ms total)\nT6DC4 378:284 JLINK_ReadReg(R0)  returns 0x90004000 (0000ms, 3458ms total)\nT6DC4 378:285 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 82 60 20 46 01 F0 34 FD 22 68 20 21 00 20 15 60 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3459ms total)\nT6DC4 378:286 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 00 20 15 60 C4 F8 84 10 84 F8 80 00 70 BD 02 20 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3463ms total)\nT6DC4 378:290 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 41 68 21 F4 90 41 41 60 20 68 81 68 21 F0 2A 01 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0002ms, 3465ms total)\nT6DC4 378:292 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 7E E7 74 4A 01 21 90 42 44 D1 CD F8 78 80 68 46 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3469ms total)\nT6DC4 378:296 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: C8 E7 00 00 70 B5 04 46 D0 F8 84 00 20 28 44 D1 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R0, 0x90004000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000002B (0000ms, 3473ms total)\nT6DC4 378:300 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3475ms total)\nT6DC4 378:302 JLINK_IsHalted()  returns FALSE (0000ms, 3475ms total)\nT6DC4 378:304 JLINK_IsHalted()  returns TRUE (0001ms, 3476ms total)\nT6DC4 378:305 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3475ms total)\nT6DC4 378:305 JLINK_ClrBPEx(BPHandle = 0x0000002B)  returns 0x00 (0000ms, 3475ms total)\nT6DC4 378:305 JLINK_ReadReg(R0)  returns 0x90005000 (0000ms, 3475ms total)\nT6DC4 378:306 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: CD E9 01 54 58 46 03 94 FD F7 A4 F9 1B 20 00 90 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0000ms, 3475ms total)\nT6DC4 378:306 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 00 08 02 58 00 0C 02 58 18 48 00 21 10 B5 16 4C ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3479ms total)\nT6DC4 378:310 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: C0 00 10 43 08 60 0A 68 A0 69 22 F0 20 02 02 43 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0003ms, 3482ms total)\nT6DC4 378:313 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 08 B1 72 B6 FE E7 09 22 1A 95 CD E9 16 25 4F F4 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3486ms total)\nT6DC4 378:317 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 22 F0 80 02 41 E8 00 23 00 2B F5 D1 02 68 52 E8 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R0, 0x90005000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000002C (0000ms, 3490ms total)\nT6DC4 378:321 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3492ms total)\nT6DC4 378:323 JLINK_IsHalted()  returns FALSE (0000ms, 3492ms total)\nT6DC4 378:325 JLINK_IsHalted()  returns TRUE (0001ms, 3493ms total)\nT6DC4 378:326 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3492ms total)\nT6DC4 378:326 JLINK_ClrBPEx(BPHandle = 0x0000002C)  returns 0x00 (0000ms, 3492ms total)\nT6DC4 378:326 JLINK_ReadReg(R0)  returns 0x90006000 (0000ms, 3492ms total)\nT6DC4 378:327 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 08 70 A0 6D 40 1C A0 65 B4 F8 5E 00 40 1E A4 F8 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3493ms total)\nT6DC4 378:328 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 08 D0 21 68 04 20 08 62 D4 F8 8C 00 40 F0 02 00 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3496ms total)\nT6DC4 378:331 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: C0 F3 C1 00 C1 40 B1 B1 63 6A 60 68 38 F8 13 30 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3500ms total)\nT6DC4 378:335 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: F0 EE 40 0A 01 F0 8E FD 20 46 AF F3 00 80 96 E8 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3504ms total)\nT6DC4 378:339 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: D0 0F C9 3F 00 F1 90 01 81 EC 03 0A FF F7 14 BF ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R0, 0x90006000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000002D (0000ms, 3507ms total)\nT6DC4 378:342 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3509ms total)\nT6DC4 378:344 JLINK_IsHalted()  returns FALSE (0001ms, 3510ms total)\nT6DC4 378:348 JLINK_IsHalted()  returns TRUE (0002ms, 3511ms total)\nT6DC4 378:350 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3509ms total)\nT6DC4 378:350 JLINK_ClrBPEx(BPHandle = 0x0000002D)  returns 0x00 (0000ms, 3509ms total)\nT6DC4 378:350 JLINK_ReadReg(R0)  returns 0x90007000 (0000ms, 3509ms total)\nT6DC4 378:350 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 04 E0 00 22 03 E0 80 F8 F0 13 02 E0 02 22 80 F8 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0000ms, 3509ms total)\nT6DC4 378:350 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 10 0A 04 F2 CC 40 B8 EE C0 0A 20 EE 28 0A FF F7 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0004ms, 3513ms total)\nT6DC4 378:354 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 8C 22 01 46 04 F5 2F 70 F9 F7 A8 F8 6E 49 23 A8 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3517ms total)\nT6DC4 378:358 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 94 ED 42 0A 00 F0 91 FD F0 EE 40 8A 94 ED 43 0A ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0003ms, 3520ms total)\nT6DC4 378:361 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: A0 FB DB 4F 09 EB 86 06 41 46 18 37 07 EB 85 00 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R0, 0x90007000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000002E (0000ms, 3524ms total)\nT6DC4 378:365 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3526ms total)\nT6DC4 378:367 JLINK_IsHalted()  returns FALSE (0001ms, 3527ms total)\nT6DC4 378:369 JLINK_IsHalted()  returns TRUE (0001ms, 3527ms total)\nT6DC4 378:370 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3526ms total)\nT6DC4 378:370 JLINK_ClrBPEx(BPHandle = 0x0000002E)  returns 0x00 (0000ms, 3526ms total)\nT6DC4 378:371 JLINK_ReadReg(R0)  returns 0x90008000 (0000ms, 3527ms total)\nT6DC4 378:371 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 16 E0 00 F0 C0 F9 B0 EE 40 BA 02 20 98 ED 08 0A ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3528ms total)\nT6DC4 378:372 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 24 4A 05 EB 45 0B 69 46 DF F8 88 80 48 3A 22 48 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3531ms total)\nT6DC4 378:375 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: D4 ED 00 0A 30 EE 20 0A 8D ED 00 0A D5 ED 01 0A ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3535ms total)\nT6DC4 378:379 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: DB 0F 49 40 DB 0F 49 C0 00 00 C9 BF 22 AA FD B9 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0004ms, 3539ms total)\nT6DC4 378:383 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 01 0A 10 EE 10 0A 00 F5 00 60 6F F3 0B 00 00 EE ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R0, 0x90008000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x0000002F (0000ms, 3542ms total)\nT6DC4 378:386 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3545ms total)\nT6DC4 378:389 JLINK_IsHalted()  returns FALSE (0000ms, 3545ms total)\nT6DC4 378:393 JLINK_IsHalted()  returns TRUE (0001ms, 3546ms total)\nT6DC4 378:394 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3545ms total)\nT6DC4 378:394 JLINK_ClrBPEx(BPHandle = 0x0000002F)  returns 0x00 (0000ms, 3545ms total)\nT6DC4 378:394 JLINK_ReadReg(R0)  returns 0x90009000 (0000ms, 3545ms total)\nT6DC4 378:395 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: 41 F0 FC 51 00 EE 90 1A 74 E7 B3 F1 80 7F 06 D2 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3546ms total)\nT6DC4 378:396 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 10 40 00 F0 AC B9 B0 F1 FF 4F 0F D0 C1 F3 C7 52 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3549ms total)\nT6DC4 378:399 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: 0C FC F2 40 45 EA 08 05 4C EA 02 06 A4 FB 03 4C ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3553ms total)\nT6DC4 378:403 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: BF F3 4F 8F BF F3 6F 8F FE E7 20 6B 00 F0 56 FA ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0003ms, 3556ms total)\nT6DC4 378:406 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: C1 60 01 61 70 47 00 21 01 61 70 47 30 B5 0B 68 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0004ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R0, 0x90009000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R1, 0x00001000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000030 (0000ms, 3560ms total)\nT6DC4 378:410 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0002ms, 3562ms total)\nT6DC4 378:412 JLINK_IsHalted()  returns FALSE (0000ms, 3562ms total)\nT6DC4 378:419 JLINK_IsHalted()  returns TRUE (0002ms, 3564ms total)\nT6DC4 378:421 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3562ms total)\nT6DC4 378:421 JLINK_ClrBPEx(BPHandle = 0x00000030)  returns 0x00 (0000ms, 3562ms total)\nT6DC4 378:421 JLINK_ReadReg(R0)  returns 0x9000A000 (0000ms, 3562ms total)\nT6DC4 378:421 JLINK_WriteMem(0x24002BA8, 0x0058 Bytes, ...) - Data: F0 9F 28 46 FF F7 86 FE 4F F0 FF 30 F6 E7 F0 B5 ... -- CPU_WriteMem(88 bytes @ 0x24002BA8)  returns 0x58 (0001ms, 3563ms total)\nT6DC4 378:422 JLINK_WriteMem(0x24002C00, 0x0400 Bytes, ...) - Data: 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 01 48 C0 68 ... -- CPU_WriteMem(1024 bytes @ 0x24002C00)  returns 0x400 (0003ms, 3566ms total)\nT6DC4 378:425 JLINK_WriteMem(0x24003000, 0x0400 Bytes, ...) - Data: E8 00 00 00 D4 02 00 90 60 A5 00 90 E8 00 00 24 ... -- CPU_WriteMem(1024 bytes @ 0x24003000)  returns 0x400 (0004ms, 3570ms total)\nT6DC4 378:429 JLINK_WriteMem(0x24003400, 0x0400 Bytes, ...) - Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... -- CPU_WriteMem(1024 bytes @ 0x24003400)  returns 0x400 (0003ms, 3573ms total)\nT6DC4 378:432 JLINK_WriteMem(0x24003800, 0x03A8 Bytes, ...) - Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... -- CPU_WriteMem(936 bytes @ 0x24003800)  returns 0x3A8 (0003ms, 3576ms total)\nT6DC4 378:435 JLINK_WriteReg(R0, 0x9000A000)  returns 0x00 (0001ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R1, 0x00000560)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(R15 (PC), 0x240000C2)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000031 (0000ms, 3577ms total)\nT6DC4 378:437 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0001ms, 3578ms total)\nT6DC4 378:438 JLINK_IsHalted()  returns TRUE (0002ms, 3580ms total)\nT6DC4 378:440 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3578ms total)\nT6DC4 378:440 JLINK_ClrBPEx(BPHandle = 0x00000031)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:440 JLINK_ReadReg(R0)  returns 0x9000A560 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R0, 0x00000003)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R1, 0x00000560)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R2, 0x24002BA8)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R3, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R4, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R5, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R6, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R7, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R8, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R9, 0x24000B98)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R10, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R11, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R12, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R13 (SP), 0x24008000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R14, 0x24000001)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(R15 (PC), 0x24000086)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(XPSR, 0x01000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(MSP, 0x24008000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(PSP, 0x24008000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_WriteReg(CFBP, 0x00000000)  returns 0x00 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_SetBPEx(Addr = 0x24000000, Type = 0xFFFFFFF2)  returns 0x00000032 (0000ms, 3578ms total)\nT6DC4 378:441 JLINK_Go() -- CPU_WriteMem(4 bytes @ 0xE0002000) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0003ms, 3581ms total)\nT6DC4 378:444 JLINK_IsHalted()  returns TRUE (0001ms, 3582ms total)\nT6DC4 378:445 JLINK_ReadReg(R15 (PC))  returns 0x24000000 (0000ms, 3581ms total)\nT6DC4 378:445 JLINK_ClrBPEx(BPHandle = 0x00000032)  returns 0x00 (0000ms, 3581ms total)\nT6DC4 378:445 JLINK_ReadReg(R0)  returns 0x00000000 (0000ms, 3581ms total)\nT6DC4 378:501 JLINK_WriteMemEx(0x24000000, 0x0002 Bytes, ..., Flags = 0x02000000) - Data: FE E7 -- CPU_WriteMem(2 bytes @ 0x24000000)  returns 0x02 (0001ms, 3582ms total)\nT6DC4 378:502 JLINK_SetResetType(JLINKARM_CM3_RESET_TYPE_NORMAL)  returns JLINKARM_CM3_RESET_TYPE_NORMAL (0000ms, 3582ms total)\nT6DC4 378:502 JLINK_Reset() -- CPU_WriteMem(4 bytes @ 0xE000EDF0) -- CPU_WriteMem(4 bytes @ 0xE000EDFC)Reset: Halt core after reset via DEMCR.VC_CORERESET. >0x35 TIF>Reset: Reset device via AIRCR.SYSRESETREQ. -- CPU_WriteMem(4 bytes @ 0xE000ED0C) >0x0D TIF> >0x28 TIF> -- CPU_ReadMem(4 bytes @ 0xE000EDF0) -- CPU_ReadMem(4 bytes @ 0xE000EDF0) -- CPU_WriteMem(4 bytes @ 0xE000EDF0) -- CPU_WriteMem(4 bytes @ 0xE000EDFC) -- CPU_ReadMem(4 bytes @ 0xE000EDF0) -- CPU_WriteMem(4 bytes @ 0xE0002000)\n -- CPU_ReadMem(4 bytes @ 0xE000EDFC) -- CPU_ReadMem(4 bytes @ 0xE0001000) (0068ms, 3650ms total)\nT6DC4 378:571 JLINK_Go() -- CPU_ReadMem(4 bytes @ 0xE0001000) -- CPU_WriteMem(4 bytes @ 0xE0002008) -- CPU_WriteMem(4 bytes @ 0xE000200C) -- CPU_WriteMem(4 bytes @ 0xE0002010) -- CPU_WriteMem(4 bytes @ 0xE0002014) -- CPU_WriteMem(4 bytes @ 0xE0002018) -- CPU_WriteMem(4 bytes @ 0xE000201C) -- CPU_WriteMem(4 bytes @ 0xE0002020) -- CPU_WriteMem(4 bytes @ 0xE0002024) -- CPU_WriteMem(4 bytes @ 0xE0001004) (0002ms, 3652ms total)\nT6DC4 378:614 JLINK_Close() -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE0002008) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE000200C) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE0002010) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE0002014) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE0002018) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE000201C) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE0002020) -- CPU is running -- CPU_WriteMem(4 bytes @ 0xE0002024) >0x0D TIF> >0x28 TIF> >0x0D TIF>\n >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x28 TIF> >0x0D TIF> >0x21 TIF> >0x0D TIF> >0x28 TIF> (0011ms, 3663ms total)\nT6DC4 378:614  (0011ms, 3663ms total)\nT6DC4 378:614 Closed (0011ms, 3663ms total)\n"
  },
  {
    "path": "SourceCode/MDK-ARM/JLinkSettings.ini",
    "content": "[BREAKPOINTS]\nForceImpTypeAny = 0\nShowInfoWin = 1\nEnableFlashBP = 2\nBPDuringExecution = 0\n[CFI]\nCFISize = 0x00\nCFIAddr = 0x00\n[CPU]\nMonModeVTableAddr = 0xFFFFFFFF\nMonModeDebug = 0\nMaxNumAPs = 0\nLowPowerHandlingMode = 0\nOverrideMemMap = 0\nAllowSimulation = 1\nScriptFile=\"\"\n[FLASH]\nCacheExcludeSize = 0x00\nCacheExcludeAddr = 0x00\nMinNumBytesFlashDL = 0\nSkipProgOnCRCMatch = 1\nVerifyDownload = 1\nAllowCaching = 1\nEnableFlashDL = 2\nOverride = 1\nDevice=\"Cortex-M7\"\n[GENERAL]\nWorkRAMSize = 0x00\nWorkRAMAddr = 0x00\nRAMUsageLimit = 0x00\n[SWO]\nSWOLogFile=\"\"\n[MEM]\nRdOverrideOrMask = 0x00\nRdOverrideAndMask = 0xFFFFFFFF\nRdOverrideAddr = 0xFFFFFFFF\nWrOverrideOrMask = 0x00\nWrOverrideAndMask = 0xFFFFFFFF\nWrOverrideAddr = 0xFFFFFFFF\n"
  },
  {
    "path": "SourceCode/MDK-ARM/RTE/_Hexapod/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'Hexapod' \n * Target:  'hexapod' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"stm32h7xx.h\"\n\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/MDK-ARM/RTE/_app_test/RTE_Components.h",
    "content": "\n/*\n * Auto generated Run-Time-Environment Component Configuration File\n *      *** Do not modify ! ***\n *\n * Project: 'app_test' \n * Target:  'app_test' \n */\n\n#ifndef RTE_COMPONENTS_H\n#define RTE_COMPONENTS_H\n\n\n/*\n * Define the Device Header File: \n */\n#define CMSIS_device_header \"stm32h7xx.h\"\n\n\n#endif /* RTE_COMPONENTS_H */\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/Servo.cpp",
    "content": "#include \"Servo.h\"\n#include \"gait_prg.h\"\n\nvolatile uint8_t cmd_send_buffer[12] = {0x55, 0x55};\n\nvoid Servo::set_angle(float angle)\n{\n\tthis->angle = angle / PI * 750 + 500; // תΪֵ\n}\n\nvoid Servo::set_time(uint16_t move_time)\n{\n\tthis->move_time = move_time;\n}\n\n// У\nstatic uint8_t check_sum(uint8_t *send_data, uint8_t data_len)\n{\n\tstatic uint16_t checksum;\n\tchecksum = send_data[2] + send_data[3] + send_data[4];\n\tfor (int i = 0; i < data_len - 3; i++)\n\t{\n\t\tchecksum += send_data[5 + i];\n\t}\n\tuint8_t i;\n\ti = uint8_t(~checksum); // ȡ\n\treturn i;\n}\n\n// Ͷƶָ\nvoid Servo::move(uint8_t *send_buffer)\n{\n\tsend_buffer[0] = 0x55;\n\tsend_buffer[1] = 0x55;\n\tsend_buffer[2] = this->id;\n\tsend_buffer[3] = SERVO_MOVE_TIME_WRITE_LEN;\n\tsend_buffer[4] = SERVO_MOVE_TIME_WRITE;\n\tsend_buffer[5] = this->angle;\n\tsend_buffer[6] = this->angle >> 8;\n\tsend_buffer[7] = this->move_time;\n\tsend_buffer[8] = this->move_time >> 8;\n\tsend_buffer[9] = check_sum(send_buffer, SERVO_MOVE_TIME_WRITE_LEN);\n}\n\n// 趨ǶȣҪȴʼָſʼƶ\nvoid Servo::move_wait(uint8_t *send_buffer)\n{\n\tsend_buffer[0] = 0x55;\n\tsend_buffer[1] = 0x55;\n\tsend_buffer[2] = this->id;\n\tsend_buffer[3] = SERVO_MOVE_TIME_WAIT_WRITE;\n\tsend_buffer[4] = SERVO_MOVE_TIME_WAIT_WRITE_LEN;\n\tsend_buffer[5] = this->angle;\n\tsend_buffer[6] = this->angle >> 8;\n\tsend_buffer[7] = this->move_time;\n\tsend_buffer[8] = this->move_time >> 8;\n\tsend_buffer[9] = check_sum(send_buffer, SERVO_MOVE_TIME_WAIT_WRITE_LEN);\n}\n\nvoid Servo::read_angle(uint8_t *send_buffer)\n{\n\tsend_buffer[0] = 0x55;\n\tsend_buffer[1] = 0x55;\n\tsend_buffer[2] = this->id;\n\tsend_buffer[3] = SERVO_POS_READ;\n\tsend_buffer[4] = SERVO_POS_READ_LEN;\n\tsend_buffer[5] = check_sum(send_buffer,SERVO_POS_READ_LEN);\n}\n\n/*************㲥ָ***********/\nvoid Servo_Broad_Cast::move_start(uint8_t *send_buffer)\n{\n\tsend_buffer[0] = 0x55;\n\tsend_buffer[1] = 0x55;\n\tsend_buffer[2] = SERVO_BROADCAST_ID;\n\tsend_buffer[3] = SERVO_MOVE_START;\n\tsend_buffer[4] = SERVO_MOVE_START_LEN;\n\tsend_buffer[5] = check_sum(send_buffer, SERVO_MOVE_START_LEN);\n}\n\nvoid Servo_Broad_Cast::move_stop(uint8_t *send_buffer)\n{\n\tsend_buffer[0] = 0x55;\n\tsend_buffer[1] = 0x55;\n\tsend_buffer[2] = SERVO_BROADCAST_ID;\n\tsend_buffer[3] = SERVO_MOVE_STOP;\n\tsend_buffer[4] = SERVO_MOVE_STOP_LEN;\n\tsend_buffer[5] = check_sum(send_buffer, SERVO_MOVE_STOP_LEN);\n}\n\nvoid Servo_Broad_Cast::unload(uint8_t *send_buffer)\n{\n\tsend_buffer[0] = 0x55;\n\tsend_buffer[1] = 0x55;\n\tsend_buffer[2] = SERVO_BROADCAST_ID;\n\tsend_buffer[3] = SERVO_LOAD_OR_UNLOAD_WRITE;\n\tsend_buffer[4] = SERVO_LOAD_OR_UNLOAD_WRITE_LEN;\n\tsend_buffer[5] = 0; // 0ʾ\n\tsend_buffer[6] = check_sum(send_buffer, SERVO_LOAD_OR_UNLOAD_WRITE_LEN);\n}\n\nvoid Servo_Broad_Cast::load(uint8_t *send_buffer)\n{\n\tsend_buffer[0] = 0x55;\n\tsend_buffer[1] = 0x55;\n\tsend_buffer[2] = SERVO_BROADCAST_ID;\n\tsend_buffer[3] = SERVO_LOAD_OR_UNLOAD_WRITE;\n\tsend_buffer[4] = SERVO_LOAD_OR_UNLOAD_WRITE_LEN;\n\tsend_buffer[5] = 1; // 1ʾϵ\n\tsend_buffer[6] = check_sum(send_buffer, SERVO_LOAD_OR_UNLOAD_WRITE_LEN);\n}\n\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/Servo.h",
    "content": "#ifndef SERVO_H\n#define SERVO_H\n\n#include \"main.h\"\n#include \"usart.h\"\n\nclass Servo\n{\nprivate:\n\tuint16_t angle;\t\t// Ƕ0-1000Ӧ-120ȵ120\n\tuint16_t move_time; // ƶ趨Ƕȵʱ䣬λmsΧ0-30000ms\n\tuint8_t id;\t\t\t// id\npublic:\n\tServo(){};\n\tServo(uint8_t id){this->id=id;};\n\tvoid set_angle(float angle);\n\tvoid set_time(uint16_t move_time);\n\tvoid move(uint8_t* send_buffer);\t   // ֱƶ\n\tvoid move_wait(uint8_t* send_buffer); // 趨ǶȣҪȴʼָſʼƶ\n\tvoid read_angle(uint8_t* send_buffer);          //ȡǶ\n};\n\nclass Servo_Broad_Cast\n{\npublic:\n\tvoid move_start(uint8_t* send_buffer); // ʼƶ\n\tvoid move_stop(uint8_t* send_buffer);\t// ֹͣƶ\n\tvoid unload(uint8_t* send_buffer);\t\t// \n\tvoid load(uint8_t* send_buffer);\t\t// ϵ\n};\n\n// ָ\n#define SERVO_MOVE_TIME_WRITE 1\n#define SERVO_MOVE_TIME_READ 2\n#define SERVO_MOVE_TIME_WAIT_WRITE 7\n#define SERVO_MOVE_TIME_WAIT_READ 8\n#define SERVO_MOVE_START 11\n#define SERVO_MOVE_STOP 12\n#define SERVO_ID_WRITE 13\n#define SERVO_ID_READ 14\n#define SERVO_ANGLE_OFFSET_ADJUST 17\n#define SERVO_ANGLE_OFFSET_WRITE 18\n#define SERVO_ANGLE_OFFSET_READ 19\n#define SERVO_ANGLE_LIMIT_WRITE 20\n#define SERVO_ANGLE_LIMIT_READ 21\n#define SERVO_VIN_LIMIT_WRITE 22\n#define SERVO_VIN_LIMIT_READ 23\n#define SERVO_TEMP_MAX_LIMIT_WRITE 24\n#define SERVO_TEMP_MAX_LIMIT_READ 25\n#define SERVO_TEMP_READ 26\n#define SERVO_VIN_READ 27\n#define SERVO_POS_READ 28\n#define SERVO_OR_MOTOR_MODE_WRITE 29\n#define SERVO_OR_MOTOR_MODE_READ 30\n#define SERVO_LOAD_OR_UNLOAD_WRITE 31\n#define SERVO_LOAD_OR_UNLOAD_READ 32\n#define SERVO_LED_CTRL_WRITE 33\n#define SERVO_LED_CTRL_READ 34\n#define SERVO_LED_ERROR_WRITE 35\n#define SERVO_LED_ERROR_READ 36\n\n// ָ\n#define SERVO_MOVE_TIME_WRITE_LEN 7\n#define SERVO_MOVE_TIME_READ_LEN 3\n#define SERVO_MOVE_TIME_WAIT_WRITE_LEN 7\n#define SERVO_MOVE_TIME_WAIT_READ_LEN 3\n#define SERVO_MOVE_START_LEN 3\n#define SERVO_MOVE_STOP_LEN 3\n#define SERVO_ID_WRITE_LEN 4\n#define SERVO_ID_READ_LEN 3\n#define SERVO_ANGLE_OFFSET_ADJUST_LEN 4\n#define SERVO_ANGLE_OFFSET_WRITE_LEN 3\n#define SERVO_ANGLE_OFFSET_READ_LEN 3\n#define SERVO_ANGLE_LIMIT_WRITE_LEN 7\n#define SERVO_ANGLE_LIMIT_READ_LEN 3\n#define SERVO_VIN_LIMIT_WRITE_LEN 7\n#define SERVO_VIN_LIMIT_READ_LEN 3\n#define SERVO_TEMP_MAX_LIMIT_WRITE_LEN 4\n#define SERVO_TEMP_MAX_LIMIT_READ_LEN 3\n#define SERVO_TEMP_READ_LEN 3\n#define SERVO_VIN_READ_LEN 3\n#define SERVO_POS_READ_LEN 3\n#define SERVO_OR_MOTOR_MODE_WRITE_LEN 7\n#define SERVO_OR_MOTOR_MODE_READ_LEN 3\n#define SERVO_LOAD_OR_UNLOAD_WRITE_LEN 4\n#define SERVO_LOAD_OR_UNLOAD_READ_LEN 3\n#define SERVO_LED_CTRL_WRITE_LEN 4\n#define SERVO_LED_CTRL_READ_LEN 3\n#define SERVO_LED_ERROR_WRITE_LEN 4\n#define SERVO_LED_ERROR_READ_LEN 3\n\n\n//ָ\n#define RECV_SERVO_MOVE_TIME_READ_LEN 7\n#define RECV_SERVO_MOVE_TIME_WAIT_READ_LEN 7\n#define RECV_SERVO_ID_READ_LEN 4\n#define RECV_SERVO_ANGLE_OFFSET_READ_LEN 4\n#define RECV_SERVO_ANGLE_LIMIT_READ_LEN 7\n#define RECV_SERVO_VIN_LIMIT_READ_LEN 7\n#define RECV_SERVO_TEMP_MAX_LIMIT_READ_LEN 4\n#define RECV_SERVO_TEMP_READ_LEN 4\n#define RECV_SERVO_VIN_READ_LEN 5\n#define RECV_SERVO_POS_READ_LEN 5\n#define RECV_SERVO_OR_MOTOR_MODE_READ_LEN 7\n#define RECV_SERVO_LOAD_OR_UNLOAD_READ_LEN 4\n#define RECV_SERVO_LED_CTRL_READ_LEN 4\n#define RECV_SERVO_LED_ERROR_READ_LEN 4\n\n#define SERVO_BROADCAST_ID 0xFE // 㲥id\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/arm.cpp",
    "content": "#include \"arm.h\"\n\nArm::Arm(UART_HandleTypeDef *huart)\n{\n\tthis->huart = huart;\n\tservos[0] = Servo(1);\n\tservos[1] = Servo(2);\n\tservos[2] = Servo(3);\n\tgrip_pawl_servo = Servo(4);\n\tthis->end_pos.x = 0;\n\tthis->end_pos.y = 150;\n\tthis->end_pos.z = 200;\n}\n\nvoid Arm::TX_Enable()\n{\n    __ARM_TXEN();\n}\n\nvoid Arm::TX_Unable()\n{\n    __ARM_TXUEN();\n}\n\nvoid Arm::move_DMA()\n{\n\tthis->ikine();\n    this->TX_Enable();\n\tthis->servos[0].move(this->send_buffer);\n\tthis->servos[1].move(this->send_buffer + SERVO_MOVE_TIME_WRITE_LEN + 3);\n\tthis->servos[2].move(this->send_buffer + (SERVO_MOVE_TIME_WRITE_LEN + 3) * 2);\n    this->grip_pawl_servo.move(this->send_buffer + (SERVO_MOVE_TIME_WRITE_LEN + 3) * 3);\n\tHAL_UART_Transmit_DMA(this->huart, this->send_buffer, (SERVO_MOVE_TIME_WRITE_LEN + 3) * 4);\n}\n\nvoid Arm::move_UART()\n{\n    this->TX_Enable();\n\tthis->servos[0].move(this->send_buffer);\n\tthis->servos[1].move(this->send_buffer + SERVO_MOVE_TIME_WRITE_LEN + 3);\n\tthis->servos[2].move(this->send_buffer + (SERVO_MOVE_TIME_WRITE_LEN + 3) * 2);\n    this->grip_pawl_servo.move(this->send_buffer + (SERVO_MOVE_TIME_WRITE_LEN + 3) * 3);\n\tHAL_UART_Transmit(this->huart, this->send_buffer, (SERVO_MOVE_TIME_WRITE_LEN + 3) * 4,1000);\n}\n\nvoid Arm::set_thetas(Thetas theta)\n{\n\tthis->theta.angle[0] = theta.angle[0];\n\tthis->theta.angle[1] = theta.angle[1];\n\tthis->theta.angle[2] = theta.angle[2];\n\tthis->servos[0].set_angle(theta.angle[0]);\n\tthis->servos[1].set_angle(theta.angle[1]);\n\tthis->servos[2].set_angle(theta.angle[2]);   \n}\n\nvoid Arm::set_grip_theta(float theta)\n{\n    this->grip_pawl_servo.set_angle(theta);\n}\n\nvoid Arm::set_time(uint16_t move_time)\n{\n    servos[0].set_time(move_time);\n\tservos[1].set_time(move_time);\n\tservos[2].set_time(move_time);\n    grip_pawl_servo.set_time(move_time);\n}\n\nbool Arm::set_pos(Position3 end_pos)\n{\n\tthis->end_pos = end_pos;\n\treturn this->ikine();\n}\n\nPosition3 Arm::get_pos()\n{\n\treturn this->end_pos;\n}\n\n\nbool Arm::ikine()\n{\n\tstatic Position3 pos1;\n    static float R, Lr, alpha_r, alpha1, alpha2;\n    pos1 = this->end_pos;\n    R = sqrt(pow(pos1.x, 2) + pow(pos1.y, 2));\n    Lr = sqrt(pow(pos1.z, 2) + pow((R - ARM_LINK_LEN1), 2));\n    alpha_r = atan(-pos1.z / (R - ARM_LINK_LEN1));\n    alpha1 = acos((pow(ARM_LINK_LEN2, 2) + pow(Lr, 2) - pow(ARM_LINK_LEN3, 2)) / (2 * Lr * ARM_LINK_LEN2));\n    alpha2 = acos((pow(Lr, 2) + pow(ARM_LINK_LEN3, 2) - pow(ARM_LINK_LEN2, 2)) / (2 * Lr * ARM_LINK_LEN3));\n    Thetas thetas(atan2(pos1.y, pos1.x), alpha1 - alpha_r, -(alpha1 + alpha2));\n\tthetas.angle[0] -= PI/2;\n\tthetas.angle[1] = PI/2 - thetas.angle[1];\n\tthetas.angle[2] = -thetas.angle[2];\n    //value_limit(thetas.angle[1], MIN_JOINT2_RAD, MAX_JOINT2_RAD);\n    //value_limit(thetas.angle[2], MIN_JOINT3_RAD, MAX_JOINT3_RAD);\n\tif(isnan(thetas.angle[0])||isnan(thetas.angle[1])||isnan(thetas.angle[2])) //޽öĽǶȣflase\n\t\treturn false;\n\t\t\n\tset_thetas(thetas);\n\treturn true;\n    //this->theta = thetas;\n}\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/arm.h",
    "content": "#ifndef ARM_H\n#define ARM_H\n\n#include \"Servo.h\"\n#include \"usart.h\"\n#include \"my_math.h\"\n#include \"bsp.h\"\n\n#define ARM_LINK_LEN1 0.0f\n#define ARM_LINK_LEN2 160.f\n#define ARM_LINK_LEN3 200.f\n\nclass Arm\n{\nprivate:\n\tuint8_t send_buffer[100]; //ͻ\n\tServo servos[3],grip_pawl_servo;\n\tThetas theta;\n\tServo_Broad_Cast servo_broad_cast;\n\tUART_HandleTypeDef *huart;\n\tPosition3 end_pos;\n\tvoid TX_Enable();\n\tvoid TX_Unable();\npublic:\n\tArm(UART_HandleTypeDef *huart); // 캯\n\tArm(){};\t\t\t\t\t\t// ޲ι\n\tvoid set_thetas(Thetas thetas); // ûе۵ĽǶ\n    void set_grip_theta(float theta); //üצǶ\n\tvoid set_time(uint16_t tims);\t// ûеƶʱ\n\tvoid move_DMA();\t\t\t\t\t// еƶ\n\tvoid move_UART();\n\tbool set_pos(Position3 end_pos);\t\t\t\t\t//ĩλ\t\t\t\t\n\tPosition3 get_pos();\n\tbool ikine();\t\t\t\t\t//˶\n};\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/bsp.h",
    "content": "#ifndef BSP_H\n#define BSP_H\n\n//õĺ궨\n#define BIT(n) (1<<(n))\n\n#define     BYTE0(n)            ((unsigned char)((unsigned short)(n)))\n#define     BYTE1(n)            ((unsigned char)(((unsigned short)(n))>>8))\n#define     BYTE2(n)            ((unsigned char)(((unsigned short)(((unsigned long)(n))>>8))>>8))\n#define     BYTE3(n)            ((unsigned char)(((unsigned short)(((unsigned long)(n))>>16))>>8))\n\n#define TRUE   1\n#define FALSE  0\n#define NULL   0\n\n\n#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))\n#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))\n#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))\n//IOڵַӳ\n#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C \n#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C \n#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C \n#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C \t \n#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C \n#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C    \n#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C    \n\n#define GPIOA_IDR_Addr    (GPIOA_BASE+8) //0x40010808 \n#define GPIOB_IDR_Addr    (GPIOB_BASE+8) //0x40010C08 \n#define GPIOC_IDR_Addr    (GPIOC_BASE+8) //0x40011008 \n#define GPIOD_IDR_Addr    (GPIOD_BASE+8) //0x40011408 \n#define GPIOE_IDR_Addr    (GPIOE_BASE+8) //0x40011808 \n#define GPIOF_IDR_Addr    (GPIOF_BASE+8) //0x40011A08 \n#define GPIOG_IDR_Addr    (GPIOG_BASE+8) //0x40011E08 \n\n//IOڲ,ֻԵһIO!\n//ȷnֵС16!\n#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  // \n#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  // \n\n#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  // \n#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  // \n\n#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  // \n#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  // \n\n#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  // \n#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  // \n\n#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  // \n#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //\n\n#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  // \n#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //\n\n#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  // \n#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //\n\n\ninline  void __LEG1_TXEN() {HAL_GPIO_WritePin(LEG1_TXE_GPIO_Port,LEG1_TXE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(LEG1_RXE_GPIO_Port,LEG1_RXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG1_TXUEN() {HAL_GPIO_WritePin(LEG1_TXE_GPIO_Port,LEG1_TXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG1_RXEN() {HAL_GPIO_WritePin(LEG1_TXE_GPIO_Port,LEG1_TXE_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LEG1_RXE_GPIO_Port,LEG1_RXE_Pin,GPIO_PIN_SET);}\n\ninline  void __LEG2_TXEN() {HAL_GPIO_WritePin(LEG2_TXE_GPIO_Port,LEG2_TXE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(LEG2_RXE_GPIO_Port,LEG2_RXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG2_TXUEN() {HAL_GPIO_WritePin(LEG2_TXE_GPIO_Port,LEG2_TXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG2_RXEN() {HAL_GPIO_WritePin(LEG2_TXE_GPIO_Port,LEG2_TXE_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LEG2_RXE_GPIO_Port,LEG2_RXE_Pin,GPIO_PIN_SET);}\n\ninline  void __LEG3_TXEN() {HAL_GPIO_WritePin(LEG3_TXE_GPIO_Port,LEG3_TXE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(LEG3_RXE_GPIO_Port,LEG3_RXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG3_TXUEN() {HAL_GPIO_WritePin(LEG3_TXE_GPIO_Port,LEG3_TXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG3_RXEN() {HAL_GPIO_WritePin(LEG3_TXE_GPIO_Port,LEG3_TXE_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LEG3_RXE_GPIO_Port,LEG3_RXE_Pin,GPIO_PIN_SET);}\n\ninline  void __LEG4_TXEN() {HAL_GPIO_WritePin(LEG4_TXE_GPIO_Port,LEG4_TXE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(LEG4_RXE_GPIO_Port,LEG4_RXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG4_TXUEN() {HAL_GPIO_WritePin(LEG4_TXE_GPIO_Port,LEG4_TXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG4_RXEN() {HAL_GPIO_WritePin(LEG4_TXE_GPIO_Port,LEG4_TXE_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LEG4_RXE_GPIO_Port,LEG4_RXE_Pin,GPIO_PIN_SET);}\n\ninline  void __LEG5_TXEN() {HAL_GPIO_WritePin(LEG5_TXE_GPIO_Port,LEG5_TXE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(LEG5_RXE_GPIO_Port,LEG5_RXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG5_TXUEN() {HAL_GPIO_WritePin(LEG5_TXE_GPIO_Port,LEG5_TXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG5_RXEN() {HAL_GPIO_WritePin(LEG5_TXE_GPIO_Port,LEG5_TXE_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LEG5_RXE_GPIO_Port,LEG5_RXE_Pin,GPIO_PIN_SET);}\n\ninline  void __LEG6_TXEN() {HAL_GPIO_WritePin(LEG6_TXE_GPIO_Port,LEG6_TXE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(ARM_RXE_GPIO_Port,ARM_RXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG6_TXUEN() {HAL_GPIO_WritePin(LEG6_TXE_GPIO_Port,LEG6_TXE_Pin,GPIO_PIN_RESET);}\ninline  void __LEG6_RXEN() {HAL_GPIO_WritePin(LEG6_TXE_GPIO_Port,LEG6_TXE_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(ARM_RXE_GPIO_Port,ARM_RXE_Pin,GPIO_PIN_SET);}\n\ninline  void __ARM_TXEN() {HAL_GPIO_WritePin(ARM_TXE_GPIO_Port,ARM_TXE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(ARM_RXE_GPIO_Port,ARM_RXE_Pin,GPIO_PIN_RESET);}\ninline  void __ARM_TXUEN() {HAL_GPIO_WritePin(ARM_TXE_GPIO_Port,ARM_TXE_Pin,GPIO_PIN_RESET);}\ninline  void __ARM_RXEN() {HAL_GPIO_WritePin(ARM_TXE_GPIO_Port,ARM_TXE_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(ARM_RXE_GPIO_Port,ARM_RXE_Pin,GPIO_PIN_SET);}\n\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/debug_uart.c",
    "content": "#include \"debug_uart.h\"\n#include \"main.h\"\n#include \"usart.h\"\n\nuint8_t debug_str[DEBUG_STR_LEN];\n\n/**\n * @brief ڳʼʼ\n * @param \n * @return \n */\n\nstatic uint8_t msg;\nvoid Debug_UART_Init(void)\n{\n\tHAL_DEBUG_UART_Init();\n\tHAL_UART_Receive_IT(&DEBUG_UART_h, &msg, 1); // ڿʼ\n}\n\n/**\n * @brief жϻص\n * @param p_args\n */\nvoid Debug_UART_Callback(UART_HandleTypeDef *huart)\n{\n\tHAL_UART_Transmit(&DEBUG_UART_h, &msg, 1, 1000); // ԭⲻȥ\n\tHAL_UART_Receive_IT(&DEBUG_UART_h, &msg, 1);\t // ڿʼ\n}\n\n/**\n * @brief ΪֱʹprintfҪ޸CҪѣҪ/nֶfflushߵȻ˲Żӡֲд˸Զprint\n * @param str ַ\n * @param bytes ַ\n */\nvoid Debug_UART_print(uint8_t *str, int bytes)\n{\n\t// HAL_UART_Transmit(&DEBUG_UART_h, str, bytes, 0xffff);\n\tHAL_UART_Transmit_DMA(&DEBUG_UART_h, str, bytes);\n}\n\n// ضfputc\n#ifdef __GNUC__\n#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)\n#else\n#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)\n#endif\nPUTCHAR_PROTOTYPE\n{\n\tHAL_UART_Transmit(&DEBUG_UART_h, (uint8_t *)&ch, 1, 0xFFFF);\n\n\treturn ch;\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/debug_uart.h",
    "content": "#ifndef DEBUG_UART_H\n#define DEBUG_UART_H\n\n#include \"main.h\"\n#include \"stdio.h\"\n\n/***********ĴںŵĻҪ****************/\n#define HAL_DEBUG_UART_Init MX_UART8_Init\n#define DEBUG_UART UART8\n#define DEBUG_UART_h huart8  \n/************************************************/\n\n#define DEBUG_STR_LEN 0x1000 //\n\n#define APP_PRINT(fn, ...) Debug_UART_print(debug_str,sprintf((char *)debug_str, fn , ##__VA_ARGS__));\nextern uint8_t debug_str[DEBUG_STR_LEN];\n\n#ifdef __cplusplus\nextern \"C\"{\n#endif\nvoid Debug_UART_print(uint8_t *str, int bytes); //ԶĴڴӡϺAPP_PRINTʹûֱö\n\nvoid Debug_UART_Init(void); //APP_PRINTǰǵóʼ\n\nvoid Debug_UART_Callback(UART_HandleTypeDef *huart); //жϻص\n#ifdef __cplusplus\t\n}\n#endif\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/dwt_delay_us.c",
    "content": "#include \"dwt_delay_us.h\"\n\n/**\n * @brief  Initializes DWT_Clock_Cycle_Count for DWT_Delay_us function ʼDWTʱ\n * @return Error DWT counter\n *         1: clock cycle counter not started\n *         0: clock cycle counter works\n */\nuint32_t DWT_Delay_Init(void) {\n  /* Disable TRC */\n  CoreDebug->DEMCR &= ~CoreDebug_DEMCR_TRCENA_Msk; // ~0x01000000;\n  /* Enable TRC */\n  CoreDebug->DEMCR |=  CoreDebug_DEMCR_TRCENA_Msk; // 0x01000000;\n\n  /* Disable clock cycle counter */\n  DWT->CTRL &= ~DWT_CTRL_CYCCNTENA_Msk; //~0x00000001;\n  /* Enable  clock cycle counter */\n  DWT->CTRL |=  DWT_CTRL_CYCCNTENA_Msk; //0x00000001;\n\n  /* Reset the clock cycle counter value */\n  DWT->CYCCNT = 0;\n\n     /* 3 NO OPERATION instructions */\n     __ASM volatile (\"NOP\");\n     __ASM volatile (\"NOP\");\n  __ASM volatile (\"NOP\");\n\n  /* Check if clock cycle counter has started */\n     if(DWT->CYCCNT)\n     {\n       return 0; /*clock cycle counter started*/\n     }\n     else\n  {\n    return 1; /*clock cycle counter not started*/\n  }\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/dwt_delay_us.h",
    "content": "#ifndef DWT_DELAY_US_H\n#define DWT_DELAY_US_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include \"stm32h7xx_hal.h\"\n\n/**\n * @brief  Initializes DWT_Cycle_Count for DWT_Delay_us function\n * @return Error DWT counter\n *         1: DWT counter Error\n *         0: DWT counter works\n */\nuint32_t DWT_Delay_Init(void);\n\n/**\n * @brief  This function provides a delay (in microseconds), Զ΢뼶ʱԼʵʱϵͳ\n * @param  microseconds: delay in microseconds\n */\n__STATIC_INLINE void DWT_Delay_us(volatile uint32_t microseconds)   \n{\n  uint32_t clk_cycle_start = DWT->CYCCNT;\n\n  /* Go to number of cycles for system */\n  microseconds *= (HAL_RCC_GetHCLKFreq() / 1000000);\n\n  /* Delay till end */\n  while ((DWT->CYCCNT - clk_cycle_start) < microseconds);\n}\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/gait_prg.cpp",
    "content": "#include \"gait_prg.h\"\n#include \"cmsis_os.h\"\n#include <cmath>\n#include \"remote.h\"\n#include \"my_math.h\"\n#include \"arm_math.h\"\nusing namespace std;\n\n// ȫֱ\nextern uint32_t LegControl_round; // ƻغ\n\n// \nstatic Position3 fkine(Thetas thetas);\nstatic Thetas ikine(Position3 &pos);\n\nvoid Gait_prg::Init()\n{\n    // еʼ˵ĩ\n    Pws[0] = fkine(Thetas(PI / 4, THETA_STAND_2, THETA_STAND_3));\n    Pws[1] = fkine(Thetas(0, THETA_STAND_2, THETA_STAND_3));\n    Pws[2] = fkine(Thetas(-PI / 4, THETA_STAND_2, THETA_STAND_3));\n    Pws[3] = fkine(Thetas(3 * PI / 4, THETA_STAND_2, THETA_STAND_3));\n    Pws[4] = fkine(Thetas(PI, THETA_STAND_2, THETA_STAND_3));\n    Pws[5] = fkine(Thetas(5 * PI / 4, THETA_STAND_2, THETA_STAND_3));\n    // Ĭվ꣬copyһ\n    memcpy(Pws_default, Pws, sizeof(Position3) * 6);\n    // еʼڻĵ\n    P_legs[0] = Position3(CHASSIS_FRONT_WIDTH / 2, CHASSIS_LEN / 2, 0);\n    P_legs[1] = Position3(CHASSIS_WIDTH / 2, 0, 0);\n    P_legs[2] = Position3(CHASSIS_FRONT_WIDTH / 2, -CHASSIS_LEN / 2, 0);\n    P_legs[3] = Position3(-CHASSIS_FRONT_WIDTH / 2, CHASSIS_LEN / 2, 0);\n    P_legs[4] = Position3(-CHASSIS_WIDTH / 2, 0, 0);\n    P_legs[5] = Position3(-CHASSIS_FRONT_WIDTH / 2, -CHASSIS_LEN / 2, 0);\n}\n\n/*\n * ˶\n */\nstatic Position3 fkine(Thetas thetas)\n{\n    Position3 position3(cos(thetas.angle[0]) * (LEG_LEN1 + LEG_LEN3 * cos(thetas.angle[1] + thetas.angle[2]) + LEG_LEN2 * cos(thetas.angle[1])),\n                        sin(thetas.angle[0]) * (LEG_LEN1 + LEG_LEN3 * cos(thetas.angle[1] + thetas.angle[2]) + LEG_LEN2 * cos(thetas.angle[1])),\n                        LEG_LEN3 * sin(thetas.angle[1] + thetas.angle[2]) + LEG_LEN2 * sin(thetas.angle[1]));\n\n    return position3;\n}\n\n/*\n * ˶\n */\nstatic Thetas ikine(Position3 &pos)\n{\n    static Position3 pos1;\n    static float R, Lr, alpha_r, alpha1, alpha2;\n    pos1 = pos;\n    R = sqrt(pow(pos1.x, 2) + pow(pos1.y, 2));\n    Lr = sqrt(pow(pos1.z, 2) + pow((R - LEG_LEN1), 2));\n    alpha_r = atan(-pos1.z / (R - LEG_LEN1));\n    alpha1 = acos((pow(LEG_LEN2, 2) + pow(Lr, 2) - pow(LEG_LEN3, 2)) / (2 * Lr * LEG_LEN2));\n    alpha2 = acos((pow(Lr, 2) + pow(LEG_LEN3, 2) - pow(LEG_LEN2, 2)) / (2 * Lr * LEG_LEN3));\n    Thetas thetas(atan2(pos1.y, pos1.x), alpha1 - alpha_r, -(alpha1 + alpha2));\n    value_limit(thetas.angle[1], MIN_JOINT2_RAD, MAX_JOINT2_RAD);\n    value_limit(thetas.angle[2], MIN_JOINT3_RAD, MAX_JOINT3_RAD);\n    return thetas;\n}\n\nfloat Gait_prg::move_point()\n{\n    float fun,m_velocity;\n    m_velocity = sqrt(pow(velocity.Vx,2)+pow(velocity.Vy,2));\n    fun = (body_pos.x * velocity.Vx + body_pos.y * velocity.Vy)/(m_velocity)*K_W;\n    return fun;\n}\n\n\n\n\n/*\n *@brief û˸߶\n *@param height ˵ĸ߶\n */\nvoid Gait_prg::set_height(float height)\n{\n    for (int i = 0; i < 6; i++)\n    {\n        Pws[i].z = Pws_default[i].z + height;\n    }\n}\n\n/*\n *@brief ûλ\n *@param body_pos ˵λ\n */\nvoid Gait_prg::set_body_position(Position3 &body_pos)\n{\n    this->body_pos = body_pos;\n    for (int i = 0; i < 6; i++)\n    {\n        Pws[i] = Pws_default[i] - body_pos;\n    }\n}\n\n/*\n *@brief ûٶ\n *@param velocity ٶ\n */\nvoid Gait_prg::set_velocity(Velocity &velocity)\n{\n    this->velocity = velocity;\n}\n\n/*\n * ԲλúͲСѼִʱ\n */\nvoid Gait_prg::CEN_and_pace_cal()\n{\n    // Ԥ0\n    if (velocity.Vx == 0)\n        velocity.Vx += 0.001f;\n    if (velocity.Vy == 0)\n        velocity.Vy += 0.001f;\n    if (velocity.omega == 0)\n        velocity.omega += 0.001f;\n\n    if (velocity.omega < 0)\n    {\n        velocity.Vx = -velocity.Vx;\n        velocity.Vy = -velocity.Vy;\n    }\n\n    // Բģ\n    float module_CEN = K_CEN / velocity.omega * sqrt(pow(velocity.Vx, 2) + pow(velocity.Vy, 2));\n    Velocity velocity_s; // ת90\n    velocity_s.Vx = -velocity.Vy;\n    velocity_s.Vy = velocity.Vx;\n    if (velocity_s.Vx >= 0)\n        CEN.x = sqrt(pow(module_CEN, 2) / (1 + pow(velocity.Vx, 2) / pow(velocity.Vy, 2)));\n    else\n        CEN.x = -sqrt(pow(module_CEN, 2) / (1 + pow(velocity.Vx, 2) / pow(velocity.Vy, 2)));\n    // 㲽С\n    float module_speed = pow(abs(pow(velocity.Vx, 3) + pow(velocity.Vy, 3) + pow(velocity.omega, 3)), 1.0f / 3);\n    if (module_speed > MAX_SPEED)\n        module_speed = MAX_SPEED; // ٶ\n    R_pace = KR_2 * module_speed;\n    // 㲽ʱ\n    if (R_pace > MAX_R_PACE)\n        this->pace_time = 1000 / (R_pace / MAX_R_PACE); // 󲽷ССʱ\n    else\n        this->pace_time = 1000; // С󲽷С̶ʱ\n    if (R_pace > MAX_R_PACE)\n        R_pace = MAX_R_PACE; // ƲС\n    CEN.y = -CEN.x * velocity.Vx / velocity.Vy;\n}\n\n/*\n * ̬滮\n */\nvoid Gait_prg::gait_proggraming()\n{\n    Position3 Vec_CEN2leg_ends[6];    // ԲĵȲĩ˵\n    static float angle_off[6];        // Բеĩ˵ļн\n    static float norm_CEN2legs[6];    // Բĵеĩ˵ģ\n    static float Rp_ratios[6];        // еȲ̬滮ĴС\n    Position3 Vec_Leg_Start2CEN_s[6]; // Ȳʼ˵Բʼ˵\n    for (int i = 0; i < 6; i++)\n    {\n        Vec_CEN2leg_ends[i] = Pws[i] + P_legs[i] - CEN;                                         // ԲĵÿȲĩ˵\n        angle_off[i] = atan2(Vec_CEN2leg_ends[i].y, Vec_CEN2leg_ends[i].x);                     // Բеĩ˵ļн\n        norm_CEN2legs[i] = sqrt(pow(Vec_CEN2leg_ends[i].x, 2) + pow(Vec_CEN2leg_ends[i].y, 2)); // Բеĩ˵ģ\n        Vec_Leg_Start2CEN_s[i] = CEN - P_legs[i];                                               // Ȳʼ˵Բʼ˵\n    }\n    float max_norm_CEN2legs = 0;\n    for (int i = 0; i < 6; i++)\n        if (norm_CEN2legs[i] > max_norm_CEN2legs)\n            max_norm_CEN2legs = norm_CEN2legs[i]; // ѡģ\n\n    static float R_paces[6]; // еȵĲ\n    for (int i = 0; i < 6; i++)\n    {\n        Rp_ratios[i] = norm_CEN2legs[i] / max_norm_CEN2legs; // еȲ̬滮ĴС\n        R_paces[i] = Rp_ratios[i] * R_pace;                  // еȲ̬ĴС\n    }\n    float d_theta = 2 * R_paces[0] / norm_CEN2legs[0]; // еһԲĹյĽǶȣһ\n    float step_size = d_theta / (N_POINTS / 2);\n\n    /*********ȶ135̬滮***********/\n    static float angle_t;   // ڼõĽǶ\n    static float y_temp;    // ڼz߶ȵʱ\n    static Position3 point; // ڴ洢ĩ\n    for (int i = 0; i < 5; i += 2)\n    {\n        if (LegControl_round < N_POINTS / 2) // 0-9, °Բ\n        {\n            angle_t = angle_off[i] + d_theta / 2 - step_size * LegControl_round;  // ĽǶ\n            point.x = Vec_Leg_Start2CEN_s[i].x + norm_CEN2legs[i] * cos(angle_t); // x(ڻеʼ)\n            point.y = Vec_Leg_Start2CEN_s[i].y + norm_CEN2legs[i] * sin(angle_t); // y(ڻеʼ)\n            point.z = Pws[i].z;                                                   // ǰ벿ŵ棬ȡվʱz\n        }\n        else // 10-19ϰԲ\n        {\n            angle_t = angle_off[i] - d_theta / 2 + step_size * (LegControl_round - N_POINTS / 2); // ĽǶ\n            point.x = Vec_Leg_Start2CEN_s[i].x + norm_CEN2legs[i] * cos(angle_t);                 // x(ڻеʼ)\n            point.y = Vec_Leg_Start2CEN_s[i].y + norm_CEN2legs[i] * sin(angle_t);                 // y(ڻеʼ)\n            y_temp = -R_pace + (LegControl_round - N_POINTS / 2) * (R_pace * 4 / N_POINTS);\n            // ԲĴССz߶,Ǩϵеĩ,ΪվʱzᶼһģһPw\n            if (R_pace > 0.5f && R_pace < MIN_Z_PACE)\n                point.z = sqrt(pow(R_pace, 2) - pow(y_temp, 2)) * Rp_ratios[i] * 3 + Pws[i].z;\n            else\n                point.z = sqrt(pow(R_pace, 2) - pow(y_temp, 2)) * Rp_ratios[i] + Pws[i].z;\n        }\n        actions[i].thetas[LegControl_round] = ikine(point);\n    }\n\n    /*********246̬滮***********/\n    for (int i = 1; i <= 5; i += 2)\n    {\n        if (LegControl_round < N_POINTS / 2) // 0-9, ϰԲ\n        {\n            angle_t = angle_off[i] - d_theta / 2 + step_size * LegControl_round;  // ĽǶ\n            point.x = Vec_Leg_Start2CEN_s[i].x + norm_CEN2legs[i] * cos(angle_t); // x(ڻеʼ)\n            point.y = Vec_Leg_Start2CEN_s[i].y + norm_CEN2legs[i] * sin(angle_t); // y(ڻеʼ)\n            y_temp = -R_pace + LegControl_round * (R_pace * 4 / N_POINTS);\n            // ԲĴССz߶,Ǩϵеĩ,ΪվʱzᶼһģһPw\n            if (R_pace > 0.5f && R_pace < MIN_Z_PACE)\n                point.z = sqrt(pow(R_pace, 2) - pow(y_temp, 2)) * Rp_ratios[i] * 3 + Pws[i].z;\n            else\n                point.z = sqrt(pow(R_pace, 2) - pow(y_temp, 2)) * Rp_ratios[i] + Pws[i].z;\n        }\n        else // 10-19, °Բ\n        {\n            angle_t = angle_off[i] + d_theta / 2 - step_size * (LegControl_round - N_POINTS / 2); // ĽǶ\n            point.x = Vec_Leg_Start2CEN_s[i].x + norm_CEN2legs[i] * cos(angle_t);                 // x(ڻеʼ)\n            point.y = Vec_Leg_Start2CEN_s[i].y + norm_CEN2legs[i] * sin(angle_t);                 // y(ڻеʼ)\n            point.z = Pws[i].z;\n        }\n        actions[i].thetas[LegControl_round] = ikine(point);\n    }  \n}\n\nuint32_t Gait_prg::get_pace_time()\n{\n    return this->pace_time;\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/gait_prg.h",
    "content": "#ifndef GAIT_PRG_H\n#define GAIT_PRG_H\n\n#include \"my_math.h\"\n#include \"main.h\"\n\n#define LEG_LEN1 53.f  // Ȳһ˳ȣλmm\n#define LEG_LEN2 80.f  // Ȳڶ˳ȣλmm\n#define LEG_LEN3 144.f // Ȳ˳ȣλmm\n\n#define CHASSIS_LEN 162.2f        // ̳ȣy᷽\n#define CHASSIS_WIDTH 161.5f      // ̿ȣx᷽\n#define CHASSIS_FRONT_WIDTH 93.3f // ǰ˿ȣx᷽\n\n#define N_POINTS 100                      // ż\n#define THETA_STAND_2 40.0f / 180.0f * PI // еվʱؽڵĽǶ\n#define THETA_STAND_3 -110.0f / 180.0f * PI\n\n#define K_CEN 500.0f     // ȷԲģϵ\n#define KR_1 1           //%ڼ㲽Сϵ\n#define KR_2 1.0f        //%ڼ㲽Сϵ\n#define MAX_R_PACE 60.0f // 󲽷뾶\n#define MAX_SPEED 0.3f * 660\n\n#define MIN_Z_PACE 15.0f\n\n#define MAX_JOINT2_RAD PI / 2.0f          // 2ؽ󻡶\n#define MIN_JOINT2_RAD -0.1f * PI         // 2ؽС\n#define MAX_JOINT3_RAD -(1.0f / 6.0f) * PI // 3ؽ󻡶\n#define MIN_JOINT3_RAD -(7.0f / 9.0f) * PI // 3ؽС\n\n#define K_W (1.0f/56.56854f) // 1/|B|_max\n\nclass Velocity\n{\npublic:\n    float Vx;    // xٶ\n    float Vy;    // yٶ\n    float omega; // ٶ\n};\n\ntypedef struct\n{\n    Thetas thetas[N_POINTS];\n} action;\n\nclass Gait_prg\n{\nprivate:\n    uint32_t pace_time;       // һѵʱ\n    Position3 Pws[6];         // еĩվ״̬ʼ˵λ\n    Position3 Pws_default[6]; // Ĭ»еĩվ״̬ʼ˵λ\n    Position3 P_legs[6];      // еʼڻĵ\n    Position3 CEN;            // Բĵ\n    float R_pace;             // Сλmm\n    Position3 body_pos;       //λ\n    Velocity velocity;       //ٶ\n    Position3 rotate_angle; // תǶ\n    float move_point();\npublic:\n    action actions[6];\n    void Init(); // ʼ\n    void CEN_and_pace_cal();\n    void gait_proggraming();\n    uint32_t get_pace_time();\n    void set_height(float height);\n    void set_body_position(Position3 &body_pos);\n    void set_velocity(Velocity &velocity);\n};\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/leg.cpp",
    "content": "#include \"leg.h\"\n#include \"stdlib.h\"\n#include \"cmsis_os.h\"\n#include \"main.h\"\n#include \"usart.h\"\n#include \"bsp.h\"\n\n\nuint8_t receive_buffer[100];\n\nLeg::Leg(UART_HandleTypeDef *huart)\n{\n\tthis->huart = huart;\n\tservos[0] = Servo(1);\n\tservos[1] = Servo(2);\n\tservos[2] = Servo(3);\n}\n\nvoid Leg::set_thetas(Thetas theta)\n{\n\tthis->theta.angle[0] = theta.angle[0];\n\tthis->theta.angle[1] = theta.angle[1];\n\tthis->theta.angle[2] = theta.angle[2];\n\tthis->servos[0].set_angle(theta.angle[0]);\n\tthis->servos[1].set_angle(theta.angle[1]);\n\tthis->servos[2].set_angle(theta.angle[2]);\n}\n\nvoid Leg::set_time(uint16_t move_time)\n{\n\tservos[0].set_time(move_time);\n\tservos[1].set_time(move_time);\n\tservos[2].set_time(move_time);\n}\n\nvoid Leg::move_DMA()\n{\n\tthis->TX_Enable();\n\tthis->servos[0].move(this->send_buffer);\n\tthis->servos[1].move(this->send_buffer + SERVO_MOVE_TIME_WRITE_LEN + 3);\n\tthis->servos[2].move(this->send_buffer + (SERVO_MOVE_TIME_WRITE_LEN + 3) * 2);\n\tHAL_UART_Transmit_DMA(this->huart, this->send_buffer, (SERVO_MOVE_TIME_WRITE_LEN + 3) * 3);\n}\n\nvoid Leg::move_UART()\n{\n\tthis->TX_Enable();\n\tthis->servos[0].move(this->send_buffer);\n\tthis->servos[1].move(this->send_buffer + SERVO_MOVE_TIME_WRITE_LEN + 3);\n\tthis->servos[2].move(this->send_buffer + (SERVO_MOVE_TIME_WRITE_LEN + 3) * 2);\n\tHAL_UART_Transmit(this->huart, this->send_buffer, (SERVO_MOVE_TIME_WRITE_LEN + 3) * 3, 1000);\n}\n\nvoid Leg::move_wait()\n{\n\tthis->TX_Enable();\n\tthis->servos[0].move_wait(this->send_buffer);\n\tthis->servos[1].move_wait(this->send_buffer + SERVO_MOVE_TIME_WAIT_WRITE_LEN + 3);\n\tthis->servos[2].move(this->send_buffer + (SERVO_MOVE_TIME_WAIT_WRITE_LEN + 3) * 2);\n\tHAL_UART_Transmit_DMA(this->huart, this->send_buffer, (SERVO_MOVE_TIME_WAIT_WRITE_LEN + 3) * 3);\n}\n\nvoid Leg::move_start()\n{\n\tthis->TX_Enable();\n\tthis->servo_broad_cast.move_start(this->send_buffer);\n\tHAL_UART_Transmit_DMA(this->huart, this->send_buffer, SERVO_MOVE_START_LEN + 3);\n}\n\nvoid Leg::load()\n{\n\tthis->servo_broad_cast.load(this->send_buffer);\n\tHAL_UART_Transmit_DMA(this->huart, this->send_buffer, SERVO_LOAD_OR_UNLOAD_WRITE_LEN + 3);\n}\n\nvoid Leg::unload()\n{\n\tthis->servo_broad_cast.unload(this->send_buffer);\n\tHAL_UART_Transmit_DMA(this->huart, this->send_buffer, SERVO_LOAD_OR_UNLOAD_WRITE_LEN + 3);\n}\n\nvoid Leg::read_angle(uint32_t id)\n{\n\tthis->TX_Enable();\n\tthis->servos[id - 1].read_angle(this->send_buffer);\n\tHAL_UART_Transmit_DMA(this->huart, this->send_buffer, SERVO_POS_READ_LEN + 3); // ΪڷɺٿգﲻʹDMA\n\twhile (__HAL_UART_GET_FLAG(this->huart, UART_FLAG_TC))\n\t\t; // ȴڷ\n\n\tthis->RX_Enable(); // ʹܽ\n\tHAL_UART_Receive(this->huart, receive_buffer, RECV_SERVO_POS_READ_LEN + 3, 1000);\n\tfloat angle = (((uint16_t)receive_buffer[5] | ((uint16_t)receive_buffer[6] << 8)) - 500) / 750 * PI;\n\tthis->theta.angle[id - 1] = angle;\n\tthis->servos[id - 1].set_angle(angle);\n\n\tthis->TX_Enable(); // Ϻʹܷ\n}\n\n// ʹܽ\nvoid Leg::RX_Enable()\n{\n\tswitch ((uint32_t)(this->huart->Instance))\n\t{\n\tcase (uint32_t)USART1:\n\t\t__LEG1_RXEN();\n\t\tbreak;\n\tcase (uint32_t)USART2:\n\t\t__LEG2_RXEN();\n\t\tbreak;\n\tcase (uint32_t)USART3:\n\t\t__LEG3_RXEN();\n\t\tbreak;\n\tcase (uint32_t)UART4:\n\t\t__LEG4_RXEN();\n\t\tbreak;\n\tcase (uint32_t)UART5:\n\t\t__LEG5_RXEN();\n\t\tbreak;\n\tcase (uint32_t)USART6:\n\t\t__LEG6_RXEN();\n\t\tbreak;\n\tcase (uint32_t)UART8:\n\t\t__ARM_RXEN();\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n}\n\n// ʹܷ\nvoid Leg::TX_Enable()\n{\n\tswitch ((uint32_t)(this->huart->Instance))\n\t{\n\tcase (uint32_t)USART1:\n\t\t__LEG1_TXEN();\n\t\tbreak;\n\tcase (uint32_t)USART2:\n\t\t__LEG2_TXEN();\n\t\tbreak;\n\tcase (uint32_t)USART3:\n\t\t__LEG3_TXEN();\n\t\tbreak;\n\tcase (uint32_t)UART4:\n\t\t__LEG4_TXEN();\n\t\tbreak;\n\tcase (uint32_t)UART5:\n\t\t__LEG5_TXEN();\n\t\tbreak;\n\tcase (uint32_t)USART6:\n\t\t__LEG6_TXEN();\n\t\tbreak;\n\tcase (uint32_t)UART8:\n\t\t__ARM_TXEN();\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n}\n\nvoid Leg::TX_Unable()\n{\n\tswitch ((uint32_t)(this->huart->Instance))\n\t{\n\tcase (uint32_t)USART1:\n\t\t__LEG1_TXUEN();\n\t\tbreak;\n\tcase (uint32_t)USART2:\n\t\t__LEG2_TXUEN();\n\t\tbreak;\n\tcase (uint32_t)USART3:\n\t\t__LEG3_TXUEN();\n\t\tbreak;\n\tcase (uint32_t)UART4:\n\t\t__LEG4_TXUEN();\n\t\tbreak;\n\tcase (uint32_t)UART5:\n\t\t__LEG5_TXUEN();\n\t\tbreak;\n\tcase (uint32_t)USART6:\n\t\t__LEG6_TXUEN();\n\t\tbreak;\n\tcase (uint32_t)UART8:\n\t\t__ARM_TXUEN();\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n}\n\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/leg.h",
    "content": "#ifndef LEG_H\n#define LEG_H\n\n#include \"Servo.h\"\n#include \"usart.h\"\n#include \"my_math.h\"\n\nclass Leg\n{\nprivate:\n\tuint8_t send_buffer[100]; //ͻ\n\tServo servos[3];\n\tThetas theta;\n\tServo_Broad_Cast servo_broad_cast;\n\tUART_HandleTypeDef *huart;\n\tvoid TX_Enable();\n\tvoid RX_Enable();\n\tvoid TX_Unable();\npublic:\n\tLeg(UART_HandleTypeDef *huart); // 캯\n\tLeg(){};\t\t\t\t\t\t// ޲ι\n\tvoid set_thetas(Thetas thetas); // ûеȵĽǶ\n\tvoid set_time(uint16_t tims);\t// ûеƶʱ\n\tvoid move_DMA();\t\t\t\t\t// еƶ\n\tvoid move_UART();\n\tvoid move_wait();\t\t\t\t// ûеȽǶȣҪȴʼƶ\n\tvoid move_start();\t\t\t\t// ûеȿʼ˶\n\tvoid load();\t\t\t\t\t// ϵ\n\tvoid unload();\t\t\t\t\t// \n\tvoid read_angle(uint32_t id);\t// ȡǶ\n};\n\n\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/mpu6050.cpp",
    "content": "#include \"mpu6050.h\"\n#include \"inv_mpu.h\"\n#include \"my_math.h\"\n\nMPU_6050 mpu6050;\n\nvoid MPU_6050::Init()\n{\n    MX_I2C4_Init();\n    this->hi2c = &hi2c4;\n    // this->I2C_Write(MPU6050_RA_PWR_MGMT_1, 0x00); // ״̬\n    // this->set_gyro_sampling_fre(200);             // ǲ\n    // this->I2C_Write(MPU6050_RA_CONFIG, 0x06);\n    // this->I2C_Write(MPU6050_RA_ACCEL_CONFIG, 0x01); // üٶȴ4Gģʽ\n    // this->I2C_Write(MPU6050_RA_GYRO_CONFIG, 0x18);  // Լ켰Χֵ0x18(Լ죬2000deg/s)\n    atk_ms6050_dmp_init();                          // ʼdmp\n}\n\n/*\n *@brief I2Cһֽ\n *@param\n */\nvoid MPU_6050::I2C_Write(uint16_t MemAddress, uint8_t data)\n{\n    HAL_I2C_Mem_Write(this->hi2c, MPU_DEFAULT_ID, MemAddress, I2C_MEMADD_SIZE_8BIT, &data, 1, 1000);\n}\n/*\n *@brief I2Cһַ\n *@param\n */\nvoid MPU_6050::I2C_Write(uint16_t MemAddress, uint8_t *str, uint8_t str_len)\n{\n    HAL_I2C_Mem_Write(this->hi2c, MPU_DEFAULT_ID, MemAddress, I2C_MEMADD_SIZE_8BIT, str, str_len, 1000);\n}\n\nvoid MPU_6050::I2C_Read(uint16_t MemAddress, uint8_t *str, uint8_t str_len)\n{\n    HAL_I2C_Mem_Read(this->hi2c, MPU_DEFAULT_ID, MemAddress, I2C_MEMADD_SIZE_8BIT, str, str_len, 1000);\n}\n\n// λ\nvoid MPU_6050::sw_reset()\n{\n    this->I2C_Write(MPU6050_RA_PWR_MGMT_1, 0x80);\n}\n\nvoid MPU_6050::Read_Gyro()\n{\n    this->I2C_Read(MPU6050_GYRO_OUT, receive_buffer, 6);\n    this->gyro_accel.x = receive_buffer[0] << 8 | receive_buffer[1];\n    this->gyro_accel.y = receive_buffer[2] << 8 | receive_buffer[3];\n    this->gyro_accel.z = receive_buffer[4] << 8 | receive_buffer[5];\n}\n\nPosition3 MPU_6050::get_angle()\n{\n\t\tPosition3 angle_rad(this->angle.x/180*PI, this->angle.y/180*PI,this->angle.z/180*PI); //תΪ\n    return angle_rad;\n}\n\n/*\n *@brief ò\n *@param fre  4-1000Hz\n */\nvoid MPU_6050::set_gyro_sampling_fre(uint32_t fre)\n{\n    if (fre > 1000)\n        fre = 1000;\n    if (fre < 4)\n        fre = 4;\n\n    uint32_t sample_division = 1000 / fre - 1;\n    this->I2C_Write(MPU6050_RA_SMPLRT_DIV, sample_division);\n}\n\nvoid MPU_6050::dmp_get_data()\n{\n    atk_ms6050_dmp_get_data(&(this->angle.x), &(this->angle.y), &(this->angle.z));  //Ϊ\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/mpu6050.h",
    "content": "#ifndef MPU6050_H\n#define MPU6050_H\n\n#include \"main.h\"\n#include \"i2c.h\"\n#include \"my_math.h\"\n\n/* ATK_MS6050Ĵַ */\n#define MPU6050_WHO_AM_I        0x75\n#define MPU6050_SMPLRT_DIV      0  //8000Hz\n#define MPU6050_DLPF_CFG        0\n#define MPU6050_GYRO_OUT        0x43     //MPU6050ݼĴַ\n#define MPU6050_ACC_OUT         0x3B     //MPU6050ٶݼĴַ\n\n\n\n#define MPU6050_RA_XG_OFFS_TC       0x00 //[7] PWR_MODE, [6:1] XG_OFFS_TC, [0] OTP_BNK_VLD\n#define MPU6050_RA_YG_OFFS_TC       0x01 //[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD\n#define MPU6050_RA_ZG_OFFS_TC       0x02 //[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD\n#define MPU6050_RA_X_FINE_GAIN      0x03 //[7:0] X_FINE_GAIN\n#define MPU6050_RA_Y_FINE_GAIN      0x04 //[7:0] Y_FINE_GAIN\n#define MPU6050_RA_Z_FINE_GAIN      0x05 //[7:0] Z_FINE_GAIN\n#define MPU6050_RA_XA_OFFS_H        0x06 //[15:0] XA_OFFS\n#define MPU6050_RA_XA_OFFS_L_TC     0x07\n#define MPU6050_RA_YA_OFFS_H        0x08 //[15:0] YA_OFFS\n#define MPU6050_RA_YA_OFFS_L_TC     0x09\n#define MPU6050_RA_ZA_OFFS_H        0x0A //[15:0] ZA_OFFS\n#define MPU6050_RA_ZA_OFFS_L_TC     0x0B\n#define MPU6050_RA_XG_OFFS_USRH     0x13 //[15:0] XG_OFFS_USR\n#define MPU6050_RA_XG_OFFS_USRL     0x14\n#define MPU6050_RA_YG_OFFS_USRH     0x15 //[15:0] YG_OFFS_USR\n#define MPU6050_RA_YG_OFFS_USRL     0x16\n#define MPU6050_RA_ZG_OFFS_USRH     0x17 //[15:0] ZG_OFFS_USR\n#define MPU6050_RA_ZG_OFFS_USRL     0x18\n#define MPU6050_RA_SMPLRT_DIV       0x19\n#define MPU6050_RA_CONFIG           0x1A\n#define MPU6050_RA_GYRO_CONFIG      0x1B\n#define MPU6050_RA_ACCEL_CONFIG     0x1C\n#define MPU6050_RA_FF_THR           0x1D\n#define MPU6050_RA_FF_DUR           0x1E\n#define MPU6050_RA_MOT_THR          0x1F\n#define MPU6050_RA_MOT_DUR          0x20\n#define MPU6050_RA_ZRMOT_THR        0x21\n#define MPU6050_RA_ZRMOT_DUR        0x22\n#define MPU6050_RA_FIFO_EN          0x23\n#define MPU6050_RA_I2C_MST_CTRL     0x24\n#define MPU6050_RA_I2C_SLV0_ADDR    0x25\n#define MPU6050_RA_I2C_SLV0_REG     0x26\n#define MPU6050_RA_I2C_SLV0_CTRL    0x27\n#define MPU6050_RA_I2C_SLV1_ADDR    0x28\n#define MPU6050_RA_I2C_SLV1_REG     0x29\n#define MPU6050_RA_I2C_SLV1_CTRL    0x2A\n#define MPU6050_RA_I2C_SLV2_ADDR    0x2B\n#define MPU6050_RA_I2C_SLV2_REG     0x2C\n#define MPU6050_RA_I2C_SLV2_CTRL    0x2D\n#define MPU6050_RA_I2C_SLV3_ADDR    0x2E\n#define MPU6050_RA_I2C_SLV3_REG     0x2F\n#define MPU6050_RA_I2C_SLV3_CTRL    0x30\n#define MPU6050_RA_I2C_SLV4_ADDR    0x31\n#define MPU6050_RA_I2C_SLV4_REG     0x32\n#define MPU6050_RA_I2C_SLV4_DO      0x33\n#define MPU6050_RA_I2C_SLV4_CTRL    0x34\n#define MPU6050_RA_I2C_SLV4_DI      0x35\n#define MPU6050_RA_I2C_MST_STATUS   0x36\n#define MPU6050_RA_INT_PIN_CFG      0x37\n#define MPU6050_RA_INT_ENABLE       0x38\n#define MPU6050_RA_DMP_INT_STATUS   0x39\n#define MPU6050_RA_INT_STATUS       0x3A\n#define MPU6050_RA_ACCEL_XOUT_H     0x3B\n#define MPU6050_RA_ACCEL_XOUT_L     0x3C\n#define MPU6050_RA_ACCEL_YOUT_H     0x3D\n#define MPU6050_RA_ACCEL_YOUT_L     0x3E\n#define MPU6050_RA_ACCEL_ZOUT_H     0x3F\n#define MPU6050_RA_ACCEL_ZOUT_L     0x40\n#define MPU6050_RA_TEMP_OUT_H       0x41\n#define MPU6050_RA_TEMP_OUT_L       0x42\n#define MPU6050_RA_GYRO_XOUT_H      0x43\n#define MPU6050_RA_GYRO_XOUT_L      0x44\n#define MPU6050_RA_GYRO_YOUT_H      0x45\n#define MPU6050_RA_GYRO_YOUT_L      0x46\n#define MPU6050_RA_GYRO_ZOUT_H      0x47\n#define MPU6050_RA_GYRO_ZOUT_L      0x48\n#define MPU6050_RA_EXT_SENS_DATA_00 0x49\n#define MPU6050_RA_EXT_SENS_DATA_01 0x4A\n#define MPU6050_RA_EXT_SENS_DATA_02 0x4B\n#define MPU6050_RA_EXT_SENS_DATA_03 0x4C\n#define MPU6050_RA_EXT_SENS_DATA_04 0x4D\n#define MPU6050_RA_EXT_SENS_DATA_05 0x4E\n#define MPU6050_RA_EXT_SENS_DATA_06 0x4F\n#define MPU6050_RA_EXT_SENS_DATA_07 0x50\n#define MPU6050_RA_EXT_SENS_DATA_08 0x51\n#define MPU6050_RA_EXT_SENS_DATA_09 0x52\n#define MPU6050_RA_EXT_SENS_DATA_10 0x53\n#define MPU6050_RA_EXT_SENS_DATA_11 0x54\n#define MPU6050_RA_EXT_SENS_DATA_12 0x55\n#define MPU6050_RA_EXT_SENS_DATA_13 0x56\n#define MPU6050_RA_EXT_SENS_DATA_14 0x57\n#define MPU6050_RA_EXT_SENS_DATA_15 0x58\n#define MPU6050_RA_EXT_SENS_DATA_16 0x59\n#define MPU6050_RA_EXT_SENS_DATA_17 0x5A\n#define MPU6050_RA_EXT_SENS_DATA_18 0x5B\n#define MPU6050_RA_EXT_SENS_DATA_19 0x5C\n#define MPU6050_RA_EXT_SENS_DATA_20 0x5D\n#define MPU6050_RA_EXT_SENS_DATA_21 0x5E\n#define MPU6050_RA_EXT_SENS_DATA_22 0x5F\n#define MPU6050_RA_EXT_SENS_DATA_23 0x60\n#define MPU6050_RA_MOT_DETECT_STATUS    0x61\n#define MPU6050_RA_I2C_SLV0_DO      0x63\n#define MPU6050_RA_I2C_SLV1_DO      0x64\n#define MPU6050_RA_I2C_SLV2_DO      0x65\n#define MPU6050_RA_I2C_SLV3_DO      0x66\n#define MPU6050_RA_I2C_MST_DELAY_CTRL   0x67\n#define MPU6050_RA_SIGNAL_PATH_RESET    0x68\n#define MPU6050_RA_MOT_DETECT_CTRL      0x69\n#define MPU6050_RA_USER_CTRL        0x6A\n#define MPU6050_RA_PWR_MGMT_1       0x6B\n#define MPU6050_RA_PWR_MGMT_2       0x6C\n#define MPU6050_RA_BANK_SEL         0x6D\n#define MPU6050_RA_MEM_START_ADDR   0x6E\n#define MPU6050_RA_MEM_R_W          0x6F\n#define MPU6050_RA_DMP_CFG_1        0x70\n#define MPU6050_RA_DMP_CFG_2        0x71\n#define MPU6050_RA_FIFO_COUNTH      0x72\n#define MPU6050_RA_FIFO_COUNTL      0x73\n#define MPU6050_RA_FIFO_R_W         0x74\n#define MPU6050_RA_WHO_AM_I         0x75\n\n#define MPU_DEFAULT_ID          0xD0    //ջ߽ӵʱĬid,ԭidΪ0x68,׼iic7λַҪһλõ0x0D\n\n\nclass MPU_6050\n{\nprivate:\n    uint8_t send_buffer[50]; //ͻ\n    uint8_t receive_buffer[200]; //ջ\n    Position3 angular_v; //ٶ\n    Position3 gyro_accel;  //Ǽٶ\n    Position3 angle; //Ƕȣxpitchyrollzyaw\n    I2C_HandleTypeDef *hi2c;\n    void I2C_Write(uint16_t MemAddress, uint8_t data);\n    void I2C_Write(uint16_t MemAddress, uint8_t *str, uint8_t str_len);\n    void sw_reset(); //λ\n    void I2C_Read(uint16_t MemAddress, uint8_t *str, uint8_t str_len);\n    void set_gyro_sampling_fre(uint32_t fre); //òʣ\npublic:\n     void Init(); //ʼ\n     void Read_Gyro(); //ȡǶȣжã\n\t Position3 get_angle(); //ȡǶȣûʹã\n     void dmp_get_data(); //ȡdmp\n};\n\n\n\n\nextern MPU_6050 mpu6050;\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/my_math.cpp",
    "content": "#include \"my_math.h\"\n\nvoid Position3::zero()\n{\n    x = 0;\n    y = 0;\n    z = 0;\n}\n\nPosition3 operator+(const Position3 &pos1, const Position3 &pos2)\n{\n    Position3 pos;\n    pos.x = pos1.x + pos2.x;\n    pos.y = pos1.y + pos2.y;\n    pos.z = pos1.z + pos2.z;\n    return pos;\n}\n\nPosition3 operator-(const Position3 &pos1, const Position3 &pos2)\n{\n    Position3 pos;\n    pos.x = pos1.x - pos2.x;\n    pos.y = pos1.y - pos2.y;\n    pos.z = pos1.z - pos2.z;\n    return pos;\n}\n\nThetas operator+(const Thetas &theta1, const Thetas &theta2)\n{\n    Thetas theta;\n    theta.angle[0] = theta1.angle[0] + theta2.angle[0];\n    theta.angle[1] = theta1.angle[1] + theta2.angle[1];\n    theta.angle[2] = theta1.angle[2] + theta2.angle[2];\n    return theta;\n}\n\nThetas operator-(const Thetas &theta1, const Thetas &theta2)\n{\n    Thetas theta;\n    theta.angle[0] = theta1.angle[0] - theta2.angle[0];\n    theta.angle[1] = theta1.angle[1] - theta2.angle[1];\n    theta.angle[2] = theta1.angle[2] - theta2.angle[2];\n    return theta;\n}\n\nThetas &Thetas::operator=(const float angles[3])\n{\n    this->angle[0] = angles[0];\n    this->angle[1] = angles[1];\n    this->angle[2] = angles[2];\n    return *this;\n}\n\nThetas::Thetas(const float angles[3])\n{\n    this->angle[0] = angles[0];\n    this->angle[1] = angles[1];\n    this->angle[2] = angles[2];\n}\n\nvoid value_limit(float &val, float min, float max)\n{\n    if (val > max)\n        val = max;\n    if (val < min)\n        val = min;\n}\n\nPID::PID(float kp, float ki, float kd, Cir_mode cicir_moder)\n{\n    this->kp = kp;\n    this->ki = ki;\n    this->kd = kd;\n    this->cir_mode = cir_mode;\n}\n\nfloat PID::cal(float current_val, float set_val)\n{\n    this->error[2] = this->error[1];\n    this->error[1] = this->error[0];\n    this->current_val = current_val;\n    this->set_val = set_val;\n    this->error[0] = set_val - current_val;\n\n    switch (this->cir_mode)\n    {\n    case CIR_OFF:\n        break;\n    case CIR_ON:\n        if (this->error[0] > PI / 2)\n            this->error[0] -= PI;\n        else if (this->error[0] < -PI / 2)\n            this->error[0] += PI;\n        break;\n    default:\n        break;\n    }\n    this->pout = this->kp * this->error[0]; // \n    this->iout = this->ki * this->error[0]; // \n    // ΢\n    this->Derror[2] = this->Derror[1];\n    this->Derror[1] = this->Derror[0];\n    this->Derror[0] = (this->error[0] - this->error[1]);\n    this->dout = this->kd * this->Derror[0];\n    this->out = this->pout + this->iout + this->dout;\n    return this->out;\n}\n\nvoid PID::Init(float kp, float ki, float kd, Cir_mode cir_mode)\n{\n    this->kp = kp;\n    this->ki = ki;\n    this->kd = kd;\n    this->cir_mode = cir_mode;\n}\n\nvoid First_order_filter::set_k_filter(float k_filter)\n{\n    this->k_filter = k_filter;\n}\n\nfloat First_order_filter::cal(float input)\n{\n    this->out = this->k_filter * input + (1 - k_filter) * this->last_input;\n    this->last_input = this->out;\n    return this->out;\n}\n\nvoid Diff_Limit::set_diff(float diff)\n{\n    this->diff = diff;\n}\n\nvoid Diff_Limit::set_fre(uint32_t fre)\n{\n    this->fre = fre;\n}\n\nfloat Diff_Limit::cal(float goal_value)\n{\n    float temp;\n    this->goal_value = goal_value;\n    if (goal_value > current_value)\n    {\n        temp = current_value + diff / fre;\n        if(temp>goal_value)\n        {\n            current_value = goal_value;\n            return current_value;\n        }\n        else current_value = temp;\n    }\n    else\n    {\n        temp = current_value - diff / fre;\n        if(temp<goal_value)\n        {\n            current_value = goal_value;\n            return current_value;\n        }\n        else current_value=temp;\n    }\n    return temp;\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/my_math.h",
    "content": "#ifndef MY_MATH_H\n#define MY_MATH_H\n\n#define PI 3.14159f // Բ\n\n#include \"main.h\"\n\nclass Thetas\n{\npublic:\n    float angle[3];\n    Thetas(float angle_0 = 0, float angle_1 = 0, float angle_2 = 0)\n    {\n        this->angle[0] = angle_0;\n        this->angle[1] = angle_1;\n        this->angle[2] = angle_2;\n    }\n    Thetas &operator=(const float angles[3]);\n    Thetas(const float angles[3]);\n};\n\nThetas operator+(const Thetas &theta1, const Thetas &theta2);\nThetas operator-(const Thetas &theta1, const Thetas &theta2);\n\nclass Position3\n{\npublic:\n    float x;\n    float y;\n    float z;\n    Position3(float x = 0, float y = 0, float z = 0)\n    {\n        this->x = x;\n        this->y = y;\n        this->z = z;\n    }\n    void zero(); // \n};\nPosition3 operator+(const Position3 &pos1, const Position3 &pos2);\nPosition3 operator-(const Position3 &pos1, const Position3 &pos2);\n\ntypedef enum\n{\n    CIR_ON,\n    CIR_OFF,\n} Cir_mode;\n\nclass PID\n{\nprivate:\n    float kp, ki, kd;\n    float pout, iout, dout, out;\n    float Derror[3]; // ΢ 0 1һ 2ϴ\n    float error[3];  //  0 1һ 2ϴ\n    float current_val;\n    float set_val;\n    Cir_mode cir_mode;\n\npublic:\n    PID(float kp, float ki, float kd, Cir_mode cir_mode);\n    PID(){}; // չ\n    float cal(float current_val, float set_val);\n    void Init(float kp, float ki, float kd, Cir_mode cir_mode);\n};\n\nclass First_order_filter\n{\nprivate:\n    float last_input; // һ\n    float out;        // \n    float k_filter;   // ˲\npublic:\n    First_order_filter(float k_filter = 1) { this->k_filter = k_filter; };\n    float cal(float input);\n    void set_k_filter(float k_filter);\n};\n\nclass Diff_Limit\n{\nprivate:\n    float goal_value; //Ŀֵ\n    float current_value; //ǰֵ\n    float diff; //\n    uint32_t fre; //ƵʣHz\npublic:\n    Diff_Limit(float diff=1,uint32_t fre=100){this->diff = diff; this->fre = fre;};\n    void set_diff(float diff);\n    void set_fre(uint32_t fre);\n    float cal(float goal_value);\n};\n\nvoid value_limit(float &val, float min, float max);\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/remote.c",
    "content": "#include \"remote.h\"\n#include \"usart.h\"\n#include \"debug_uart.h\"\n\nRC_remote_data_t rc_remote_data;\nvolatile uint8_t RC_remote_buffer[REMOTE_DATA_LEN];\nuint32_t remote_hock;\nuint8_t msg;\n\n//ʼ\nvoid Remote_Init()\n{\n\tHAL_REMOTE_UART_Init();  //ʼ\n\t//HAL_REMOTE_DMA_Init();   //ʼDMA\n\t//HAL_UART_Receive_DMA(&REMOTE_UART_h,(uint8_t *)&rc_remote_data,REMOTE_DATA_LEN); //ʼDMA\n\tHAL_UART_Receive_IT(&REMOTE_UART_h,(uint8_t*)RC_remote_buffer,REMOTE_DATA_LEN);\n}\n\n\n\n//ң\nRC_remote_data_t Remote_read_data()\n{\n\t//ΪݿڴĹбDMAǣҪһݳ\n\tstatic RC_remote_data_t remote_data_buffer;\n\tstatic RC_remote_data_t zero_data; //if remote data is vaild ,return zero data\n\tremote_data_buffer = rc_remote_data;\n\t//Ԥ\n\tremote_data_buffer.left_HRZC -=1024;\n\tremote_data_buffer.left_VETC -=1024;\n\tremote_data_buffer.right_HRZC -=1024;\n\tremote_data_buffer.right_VETC -=1024;\n\tremote_data_buffer.thumb_wheel -=1024;\n\t//check if the data is vaild\n\tif(remote_data_buffer.left_HRZC>800 || remote_data_buffer.left_HRZC<-800||\n\t\t remote_data_buffer.left_VETC>800 || remote_data_buffer.left_VETC<-800||\n\t\t remote_data_buffer.right_HRZC>800 || remote_data_buffer.right_HRZC<-800||\n\t\t remote_data_buffer.right_VETC>800 || remote_data_buffer.right_VETC<-800||\n\t\t remote_data_buffer.thumb_wheel>800 || remote_data_buffer.thumb_wheel<-800||\n\t\t remote_data_buffer.S1==0 || remote_data_buffer.S1==0||\n\t\t (remote_data_buffer.mouse_l !=0 && remote_data_buffer.mouse_l !=1)||\n\t\t (remote_data_buffer.mouse_r !=0 && remote_data_buffer.mouse_r !=1)\n\t  )\n\t{\n\t\t//restart remote uart\n\t\tHAL_UART_DeInit(&REMOTE_UART_h);\n\t\tRemote_Init();\n\t\t//__HAL_DMA_SET_COUNTER(REMOTE_UART_h.hdmarx,REMOTE_DATA_LEN);\n\t\treturn zero_data;\n\t}\n\t//\n\tif(remote_data_buffer.left_HRZC>-25&&remote_data_buffer.left_HRZC<25)\n\t\tremote_data_buffer.left_HRZC = 0;\n\tif(remote_data_buffer.left_VETC>-25&&remote_data_buffer.left_VETC<25)\n\t\tremote_data_buffer.left_VETC = 0;\n\tif(remote_data_buffer.right_HRZC>-25&&remote_data_buffer.right_HRZC<25)\n\t\tremote_data_buffer.right_HRZC = 0;\n\tif(remote_data_buffer.right_VETC>-25&&remote_data_buffer.right_VETC<25)\n\t\tremote_data_buffer.right_VETC = 0;\n\tif(remote_data_buffer.thumb_wheel>-25&&remote_data_buffer.thumb_wheel<25)\n\t\tremote_data_buffer.thumb_wheel = 0;\n\t\n\treturn remote_data_buffer;\n}\n\n\n\nvoid Remote_UART_Callback(UART_HandleTypeDef *huart)\n{\n\t//ݴ\n\trc_remote_data.right_HRZC = ((int16_t)RC_remote_buffer[0] | ((int16_t)RC_remote_buffer[1] << 8)) & 0x07ff;\t\t   //!< Channel 0\n\trc_remote_data.right_VETC = (((int16_t)RC_remote_buffer[1] >> 3) | ((int16_t)RC_remote_buffer[2] << 5)) & 0x07ff; //!< Channel 1\n\trc_remote_data.left_HRZC = (((int16_t)RC_remote_buffer[2] >> 6) | ((int16_t)RC_remote_buffer[3] << 2) |\t\t   //!< Channel 2\n\t\t\t\t\t\t                  ((int16_t)RC_remote_buffer[4] << 10)) & 0x07ff;\n\trc_remote_data.left_VETC = ((int16_t)(RC_remote_buffer[4] >> 1) | ((int16_t)RC_remote_buffer[5] << 7)) & 0x07ff; //!< Channel 3\n\t\n\tif(rc_remote_data.left_HRZC<1024)rc_remote_data.left_HRZC+=520; //У׼ƫ\n\trc_remote_data.S1 = ((RC_remote_buffer[5] >> 4) & 0x0003);\t\t\t\t\t\t\t   //!< Switch left\n\trc_remote_data.S2 = ((RC_remote_buffer[5] >> 4) & 0x000C) >> 2;\t\t\t\t\t\t   //!< Switch right\n\trc_remote_data.mouse_x = RC_remote_buffer[6] | (RC_remote_buffer[7] << 8);\t\t\t\t\t   //!< Mouse X axis\n\trc_remote_data.mouse_y = RC_remote_buffer[8] | (RC_remote_buffer[9] << 8);\t\t\t\t\t   //!< Mouse Y axis\n\trc_remote_data.mouse_z = RC_remote_buffer[10] | (RC_remote_buffer[11] << 8);\t\t\t\t   //!< Mouse Z axis\n\trc_remote_data.mouse_l = RC_remote_buffer[12];\t\t\t\t\t\t\t\t\t\t   //!< Mouse Left Is Press ?\n\trc_remote_data.mouse_r = RC_remote_buffer[13];\t\t\t\t\t\t\t\t\t\t   //!< Mouse Right Is Press ?\n\trc_remote_data.thumb_wheel = RC_remote_buffer[16] | (RC_remote_buffer[17] << 8);\t\t\t\t   //NULL\n\n\tHAL_UART_Receive_IT(&REMOTE_UART_h,(uint8_t *)RC_remote_buffer,REMOTE_DATA_LEN);\n\tremote_hock=0;  //յݺ\n}\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/APP/remote.h",
    "content": "#ifndef REMOTE_H\n#define REMOTE_H\n\n#include \"main.h\"\n#include \"dma.h\"\n\n/***********ĴںŵĻҪ****************/\n#define HAL_REMOTE_UART_Init MX_UART7_Init\n#define REMOTE_UART_Callback HAL_UART_RxCpltCallback\n#define REMOTE_UART UART7\n#define REMOTE_UART_h huart7\n#define HAL_REMOTE_DMA_Init MX_DMA_Init\n/************************************************/\n\n\n\n#define REMOTE_DATA_LEN 18  //һ֡18ֽ\n#ifdef __cplusplus\nextern \"C\"{\n#endif\ntypedef struct\n{\n\tint16_t right_HRZC;  //ұˮƽҡ\n\tint16_t right_VETC;\t//ұߴֱҡ\n\tint16_t left_HRZC;\t\t//ˮƽҡ\n\tint16_t left_VETC;\t\t//ߴֱҡ\n\tuint8_t S1;\t\t\t\t\t\t//\n\tuint8_t S2;\t\t\t\t\t\t//\n\tint16_t mouse_x;\n\tint16_t mouse_y;\n\tint16_t mouse_z;\n\tuint8_t mouse_l;\n\tuint8_t mouse_r;\n\tuint16_t blank; //ռգʱʹ\n\tint16_t thumb_wheel;   //\n}RC_remote_data_t;\n\n\n\nvoid Remote_Init(void);\nRC_remote_data_t Remote_read_data(void);\nvoid Remote_UART_Callback(UART_HandleTypeDef *huart);\n\nextern uint32_t remote_hock;\n\n#ifdef __cplusplus\n}\n#endif\n\t\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/dmpKey.h",
    "content": "/*\n $License:\n    Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.\n $\n */\n#ifndef DMPKEY_H__\n#define DMPKEY_H__\n\n#define KEY_CFG_25                  (0)\n#define KEY_CFG_24                  (KEY_CFG_25 + 1)\n#define KEY_CFG_26                  (KEY_CFG_24 + 1)\n#define KEY_CFG_27                  (KEY_CFG_26 + 1)\n#define KEY_CFG_21                  (KEY_CFG_27 + 1)\n#define KEY_CFG_20                  (KEY_CFG_21 + 1)\n#define KEY_CFG_TAP4                (KEY_CFG_20 + 1)\n#define KEY_CFG_TAP5                (KEY_CFG_TAP4 + 1)\n#define KEY_CFG_TAP6                (KEY_CFG_TAP5 + 1)\n#define KEY_CFG_TAP7                (KEY_CFG_TAP6 + 1)\n#define KEY_CFG_TAP0                (KEY_CFG_TAP7 + 1)\n#define KEY_CFG_TAP1                (KEY_CFG_TAP0 + 1)\n#define KEY_CFG_TAP2                (KEY_CFG_TAP1 + 1)\n#define KEY_CFG_TAP3                (KEY_CFG_TAP2 + 1)\n#define KEY_CFG_TAP_QUANTIZE        (KEY_CFG_TAP3 + 1)\n#define KEY_CFG_TAP_JERK            (KEY_CFG_TAP_QUANTIZE + 1)\n#define KEY_CFG_DR_INT              (KEY_CFG_TAP_JERK + 1)\n#define KEY_CFG_AUTH                (KEY_CFG_DR_INT + 1)\n#define KEY_CFG_TAP_SAVE_ACCB       (KEY_CFG_AUTH + 1)\n#define KEY_CFG_TAP_CLEAR_STICKY    (KEY_CFG_TAP_SAVE_ACCB + 1)\n#define KEY_CFG_FIFO_ON_EVENT       (KEY_CFG_TAP_CLEAR_STICKY + 1)\n#define KEY_FCFG_ACCEL_INPUT        (KEY_CFG_FIFO_ON_EVENT + 1)\n#define KEY_FCFG_ACCEL_INIT         (KEY_FCFG_ACCEL_INPUT + 1)\n#define KEY_CFG_23                  (KEY_FCFG_ACCEL_INIT + 1)\n#define KEY_FCFG_1                  (KEY_CFG_23 + 1)\n#define KEY_FCFG_3                  (KEY_FCFG_1 + 1)\n#define KEY_FCFG_2                  (KEY_FCFG_3 + 1)\n#define KEY_CFG_3D                  (KEY_FCFG_2 + 1)\n#define KEY_CFG_3B                  (KEY_CFG_3D + 1)\n#define KEY_CFG_3C                  (KEY_CFG_3B + 1)\n#define KEY_FCFG_5                  (KEY_CFG_3C + 1)\n#define KEY_FCFG_4                  (KEY_FCFG_5 + 1)\n#define KEY_FCFG_7                  (KEY_FCFG_4 + 1)\n#define KEY_FCFG_FSCALE             (KEY_FCFG_7 + 1)\n#define KEY_FCFG_AZ                 (KEY_FCFG_FSCALE + 1)\n#define KEY_FCFG_6                  (KEY_FCFG_AZ + 1)\n#define KEY_FCFG_LSB4               (KEY_FCFG_6 + 1)\n#define KEY_CFG_12                  (KEY_FCFG_LSB4 + 1)\n#define KEY_CFG_14                  (KEY_CFG_12 + 1)\n#define KEY_CFG_15                  (KEY_CFG_14 + 1)\n#define KEY_CFG_16                  (KEY_CFG_15 + 1)\n#define KEY_CFG_18                  (KEY_CFG_16 + 1)\n#define KEY_CFG_6                   (KEY_CFG_18 + 1)\n#define KEY_CFG_7                   (KEY_CFG_6 + 1)\n#define KEY_CFG_4                   (KEY_CFG_7 + 1)\n#define KEY_CFG_5                   (KEY_CFG_4 + 1)\n#define KEY_CFG_2                   (KEY_CFG_5 + 1)\n#define KEY_CFG_3                   (KEY_CFG_2 + 1)\n#define KEY_CFG_1                   (KEY_CFG_3 + 1)\n#define KEY_CFG_EXTERNAL            (KEY_CFG_1 + 1)\n#define KEY_CFG_8                   (KEY_CFG_EXTERNAL + 1)\n#define KEY_CFG_9                   (KEY_CFG_8 + 1)\n#define KEY_CFG_ORIENT_3            (KEY_CFG_9 + 1)\n#define KEY_CFG_ORIENT_2            (KEY_CFG_ORIENT_3 + 1)\n#define KEY_CFG_ORIENT_1            (KEY_CFG_ORIENT_2 + 1)\n#define KEY_CFG_GYRO_SOURCE         (KEY_CFG_ORIENT_1 + 1)\n#define KEY_CFG_ORIENT_IRQ_1        (KEY_CFG_GYRO_SOURCE + 1)\n#define KEY_CFG_ORIENT_IRQ_2        (KEY_CFG_ORIENT_IRQ_1 + 1)\n#define KEY_CFG_ORIENT_IRQ_3        (KEY_CFG_ORIENT_IRQ_2 + 1)\n#define KEY_FCFG_MAG_VAL            (KEY_CFG_ORIENT_IRQ_3 + 1)\n#define KEY_FCFG_MAG_MOV            (KEY_FCFG_MAG_VAL + 1)\n#define KEY_CFG_LP_QUAT             (KEY_FCFG_MAG_MOV + 1)\n\n/* MPU6050 keys */\n#define KEY_CFG_ACCEL_FILTER        (KEY_CFG_LP_QUAT + 1)\n#define KEY_CFG_MOTION_BIAS         (KEY_CFG_ACCEL_FILTER + 1)\n#define KEY_TEMPLABEL               (KEY_CFG_MOTION_BIAS + 1)\n\n#define KEY_D_0_22                  (KEY_TEMPLABEL + 1)\n#define KEY_D_0_24                  (KEY_D_0_22 + 1)\n#define KEY_D_0_36                  (KEY_D_0_24 + 1)\n#define KEY_D_0_52                  (KEY_D_0_36 + 1)\n#define KEY_D_0_96                  (KEY_D_0_52 + 1)\n#define KEY_D_0_104                 (KEY_D_0_96 + 1)\n#define KEY_D_0_108                 (KEY_D_0_104 + 1)\n#define KEY_D_0_163                 (KEY_D_0_108 + 1)\n#define KEY_D_0_188                 (KEY_D_0_163 + 1)\n#define KEY_D_0_192                 (KEY_D_0_188 + 1)\n#define KEY_D_0_224                 (KEY_D_0_192 + 1)\n#define KEY_D_0_228                 (KEY_D_0_224 + 1)\n#define KEY_D_0_232                 (KEY_D_0_228 + 1)\n#define KEY_D_0_236                 (KEY_D_0_232 + 1)\n\n#define KEY_DMP_PREVPTAT            (KEY_D_0_236 + 1)\n#define KEY_D_1_2                   (KEY_DMP_PREVPTAT + 1)\n#define KEY_D_1_4                   (KEY_D_1_2 + 1)\n#define KEY_D_1_8                   (KEY_D_1_4 + 1)\n#define KEY_D_1_10                  (KEY_D_1_8 + 1)\n#define KEY_D_1_24                  (KEY_D_1_10 + 1)\n#define KEY_D_1_28                  (KEY_D_1_24 + 1)\n#define KEY_D_1_36                  (KEY_D_1_28 + 1)\n#define KEY_D_1_40                  (KEY_D_1_36 + 1)\n#define KEY_D_1_44                  (KEY_D_1_40 + 1)\n#define KEY_D_1_72                  (KEY_D_1_44 + 1)\n#define KEY_D_1_74                  (KEY_D_1_72 + 1)\n#define KEY_D_1_79                  (KEY_D_1_74 + 1)\n#define KEY_D_1_88                  (KEY_D_1_79 + 1)\n#define KEY_D_1_90                  (KEY_D_1_88 + 1)\n#define KEY_D_1_92                  (KEY_D_1_90 + 1)\n#define KEY_D_1_96                  (KEY_D_1_92 + 1)\n#define KEY_D_1_98                  (KEY_D_1_96 + 1)\n#define KEY_D_1_100                 (KEY_D_1_98 + 1)\n#define KEY_D_1_106                 (KEY_D_1_100 + 1)\n#define KEY_D_1_108                 (KEY_D_1_106 + 1)\n#define KEY_D_1_112                 (KEY_D_1_108 + 1)\n#define KEY_D_1_128                 (KEY_D_1_112 + 1)\n#define KEY_D_1_152                 (KEY_D_1_128 + 1)\n#define KEY_D_1_160                 (KEY_D_1_152 + 1)\n#define KEY_D_1_168                 (KEY_D_1_160 + 1)\n#define KEY_D_1_175                 (KEY_D_1_168 + 1)\n#define KEY_D_1_176                 (KEY_D_1_175 + 1)\n#define KEY_D_1_178                 (KEY_D_1_176 + 1)\n#define KEY_D_1_179                 (KEY_D_1_178 + 1)\n#define KEY_D_1_218                 (KEY_D_1_179 + 1)\n#define KEY_D_1_232                 (KEY_D_1_218 + 1)\n#define KEY_D_1_236                 (KEY_D_1_232 + 1)\n#define KEY_D_1_240                 (KEY_D_1_236 + 1)\n#define KEY_D_1_244                 (KEY_D_1_240 + 1)\n#define KEY_D_1_250                 (KEY_D_1_244 + 1)\n#define KEY_D_1_252                 (KEY_D_1_250 + 1)\n#define KEY_D_2_12                  (KEY_D_1_252 + 1)\n#define KEY_D_2_96                  (KEY_D_2_12 + 1)\n#define KEY_D_2_108                 (KEY_D_2_96 + 1)\n#define KEY_D_2_208                 (KEY_D_2_108 + 1)\n#define KEY_FLICK_MSG               (KEY_D_2_208 + 1)\n#define KEY_FLICK_COUNTER           (KEY_FLICK_MSG + 1)\n#define KEY_FLICK_LOWER             (KEY_FLICK_COUNTER + 1)\n#define KEY_CFG_FLICK_IN            (KEY_FLICK_LOWER + 1)\n#define KEY_FLICK_UPPER             (KEY_CFG_FLICK_IN + 1)\n#define KEY_CGNOTICE_INTR           (KEY_FLICK_UPPER + 1)\n#define KEY_D_2_224                 (KEY_CGNOTICE_INTR + 1)\n#define KEY_D_2_244                 (KEY_D_2_224 + 1)\n#define KEY_D_2_248                 (KEY_D_2_244 + 1)\n#define KEY_D_2_252                 (KEY_D_2_248 + 1)\n\n#define KEY_D_GYRO_BIAS_X               (KEY_D_2_252 + 1)\n#define KEY_D_GYRO_BIAS_Y               (KEY_D_GYRO_BIAS_X + 1)\n#define KEY_D_GYRO_BIAS_Z               (KEY_D_GYRO_BIAS_Y + 1)\n#define KEY_D_ACC_BIAS_X                (KEY_D_GYRO_BIAS_Z + 1)\n#define KEY_D_ACC_BIAS_Y                (KEY_D_ACC_BIAS_X + 1)\n#define KEY_D_ACC_BIAS_Z                (KEY_D_ACC_BIAS_Y + 1)\n#define KEY_D_GYRO_ENABLE               (KEY_D_ACC_BIAS_Z + 1)\n#define KEY_D_ACCEL_ENABLE              (KEY_D_GYRO_ENABLE + 1)\n#define KEY_D_QUAT_ENABLE               (KEY_D_ACCEL_ENABLE +1)\n#define KEY_D_OUTPUT_ENABLE             (KEY_D_QUAT_ENABLE + 1)\n#define KEY_D_CR_TIME_G                 (KEY_D_OUTPUT_ENABLE + 1)\n#define KEY_D_CR_TIME_A                 (KEY_D_CR_TIME_G + 1)\n#define KEY_D_CR_TIME_Q                 (KEY_D_CR_TIME_A + 1)\n#define KEY_D_CS_TAX                    (KEY_D_CR_TIME_Q + 1)\n#define KEY_D_CS_TAY                    (KEY_D_CS_TAX + 1)\n#define KEY_D_CS_TAZ                    (KEY_D_CS_TAY + 1)\n#define KEY_D_CS_TGX                    (KEY_D_CS_TAZ + 1)\n#define KEY_D_CS_TGY                    (KEY_D_CS_TGX + 1)\n#define KEY_D_CS_TGZ                    (KEY_D_CS_TGY + 1)\n#define KEY_D_CS_TQ0                    (KEY_D_CS_TGZ + 1)\n#define KEY_D_CS_TQ1                    (KEY_D_CS_TQ0 + 1)\n#define KEY_D_CS_TQ2                    (KEY_D_CS_TQ1 + 1)\n#define KEY_D_CS_TQ3                    (KEY_D_CS_TQ2 + 1)\n\n/* Compass keys */\n#define KEY_CPASS_BIAS_X            (KEY_D_CS_TQ3 + 1)\n#define KEY_CPASS_BIAS_Y            (KEY_CPASS_BIAS_X + 1)\n#define KEY_CPASS_BIAS_Z            (KEY_CPASS_BIAS_Y + 1)\n#define KEY_CPASS_MTX_00            (KEY_CPASS_BIAS_Z + 1)\n#define KEY_CPASS_MTX_01            (KEY_CPASS_MTX_00 + 1)\n#define KEY_CPASS_MTX_02            (KEY_CPASS_MTX_01 + 1)\n#define KEY_CPASS_MTX_10            (KEY_CPASS_MTX_02 + 1)\n#define KEY_CPASS_MTX_11            (KEY_CPASS_MTX_10 + 1)\n#define KEY_CPASS_MTX_12            (KEY_CPASS_MTX_11 + 1)\n#define KEY_CPASS_MTX_20            (KEY_CPASS_MTX_12 + 1)\n#define KEY_CPASS_MTX_21            (KEY_CPASS_MTX_20 + 1)\n#define KEY_CPASS_MTX_22            (KEY_CPASS_MTX_21 + 1)\n\n/* Gesture Keys */\n#define KEY_DMP_TAPW_MIN            (KEY_CPASS_MTX_22 + 1)\n#define KEY_DMP_TAP_THR_X           (KEY_DMP_TAPW_MIN + 1)\n#define KEY_DMP_TAP_THR_Y           (KEY_DMP_TAP_THR_X + 1)\n#define KEY_DMP_TAP_THR_Z           (KEY_DMP_TAP_THR_Y + 1)\n#define KEY_DMP_SH_TH_Y             (KEY_DMP_TAP_THR_Z + 1)\n#define KEY_DMP_SH_TH_X             (KEY_DMP_SH_TH_Y + 1)\n#define KEY_DMP_SH_TH_Z             (KEY_DMP_SH_TH_X + 1)\n#define KEY_DMP_ORIENT              (KEY_DMP_SH_TH_Z + 1)\n#define KEY_D_ACT0                  (KEY_DMP_ORIENT + 1)\n#define KEY_D_ACSX                  (KEY_D_ACT0 + 1)\n#define KEY_D_ACSY                  (KEY_D_ACSX + 1)\n#define KEY_D_ACSZ                  (KEY_D_ACSY + 1)\n\n#define KEY_X_GRT_Y_TMP             (KEY_D_ACSZ + 1)\n#define KEY_SKIP_X_GRT_Y_TMP        (KEY_X_GRT_Y_TMP + 1)\n#define KEY_SKIP_END_COMPARE        (KEY_SKIP_X_GRT_Y_TMP + 1)\n#define KEY_END_COMPARE_Y_X_TMP2    (KEY_SKIP_END_COMPARE + 1)       \n#define KEY_CFG_ANDROID_ORIENT_INT  (KEY_END_COMPARE_Y_X_TMP2 + 1)\n#define KEY_NO_ORIENT_INTERRUPT     (KEY_CFG_ANDROID_ORIENT_INT + 1)\n#define KEY_END_COMPARE_Y_X_TMP     (KEY_NO_ORIENT_INTERRUPT + 1)\n#define KEY_END_ORIENT_1            (KEY_END_COMPARE_Y_X_TMP + 1)\n#define KEY_END_COMPARE_Y_X         (KEY_END_ORIENT_1 + 1) \n#define KEY_END_ORIENT              (KEY_END_COMPARE_Y_X + 1)\n#define KEY_X_GRT_Y                 (KEY_END_ORIENT + 1)\n#define KEY_NOT_TIME_MINUS_1        (KEY_X_GRT_Y + 1)       \n#define KEY_END_COMPARE_Y_X_TMP3    (KEY_NOT_TIME_MINUS_1 + 1) \n#define KEY_X_GRT_Y_TMP2            (KEY_END_COMPARE_Y_X_TMP3 + 1)\n\n/* Authenticate Keys */\n#define KEY_D_AUTH_OUT              (KEY_X_GRT_Y_TMP2 + 1)\n#define KEY_D_AUTH_IN               (KEY_D_AUTH_OUT + 1)\n#define KEY_D_AUTH_A                (KEY_D_AUTH_IN + 1)\n#define KEY_D_AUTH_B                (KEY_D_AUTH_A + 1)\n\n/* Pedometer standalone only keys */\n#define KEY_D_PEDSTD_BP_B           (KEY_D_AUTH_B + 1)\n#define KEY_D_PEDSTD_HP_A           (KEY_D_PEDSTD_BP_B + 1)\n#define KEY_D_PEDSTD_HP_B           (KEY_D_PEDSTD_HP_A + 1)\n#define KEY_D_PEDSTD_BP_A4          (KEY_D_PEDSTD_HP_B + 1)\n#define KEY_D_PEDSTD_BP_A3          (KEY_D_PEDSTD_BP_A4 + 1)\n#define KEY_D_PEDSTD_BP_A2          (KEY_D_PEDSTD_BP_A3 + 1)\n#define KEY_D_PEDSTD_BP_A1          (KEY_D_PEDSTD_BP_A2 + 1)\n#define KEY_D_PEDSTD_INT_THRSH      (KEY_D_PEDSTD_BP_A1 + 1)\n#define KEY_D_PEDSTD_CLIP           (KEY_D_PEDSTD_INT_THRSH + 1)\n#define KEY_D_PEDSTD_SB             (KEY_D_PEDSTD_CLIP + 1)\n#define KEY_D_PEDSTD_SB_TIME        (KEY_D_PEDSTD_SB + 1)\n#define KEY_D_PEDSTD_PEAKTHRSH      (KEY_D_PEDSTD_SB_TIME + 1)\n#define KEY_D_PEDSTD_TIML           (KEY_D_PEDSTD_PEAKTHRSH + 1)\n#define KEY_D_PEDSTD_TIMH           (KEY_D_PEDSTD_TIML + 1)\n#define KEY_D_PEDSTD_PEAK           (KEY_D_PEDSTD_TIMH + 1)\n#define KEY_D_PEDSTD_TIMECTR        (KEY_D_PEDSTD_PEAK + 1)\n#define KEY_D_PEDSTD_STEPCTR        (KEY_D_PEDSTD_TIMECTR + 1)\n#define KEY_D_PEDSTD_WALKTIME       (KEY_D_PEDSTD_STEPCTR + 1)\n#define KEY_D_PEDSTD_DECI           (KEY_D_PEDSTD_WALKTIME + 1)\n\n/*Host Based No Motion*/\n#define KEY_D_HOST_NO_MOT           (KEY_D_PEDSTD_DECI + 1)\n\n/* EIS keys */\n#define KEY_P_EIS_FIFO_FOOTER       (KEY_D_HOST_NO_MOT + 1)\n#define KEY_P_EIS_FIFO_YSHIFT       (KEY_P_EIS_FIFO_FOOTER + 1)\n#define KEY_P_EIS_DATA_RATE         (KEY_P_EIS_FIFO_YSHIFT + 1)\n#define KEY_P_EIS_FIFO_XSHIFT       (KEY_P_EIS_DATA_RATE + 1)\n#define KEY_P_EIS_FIFO_SYNC         (KEY_P_EIS_FIFO_XSHIFT + 1)\n#define KEY_P_EIS_FIFO_ZSHIFT       (KEY_P_EIS_FIFO_SYNC + 1)\n#define KEY_P_EIS_FIFO_READY        (KEY_P_EIS_FIFO_ZSHIFT + 1)\n#define KEY_DMP_FOOTER              (KEY_P_EIS_FIFO_READY + 1)\n#define KEY_DMP_INTX_HC             (KEY_DMP_FOOTER + 1)\n#define KEY_DMP_INTX_PH             (KEY_DMP_INTX_HC + 1)\n#define KEY_DMP_INTX_SH             (KEY_DMP_INTX_PH + 1)\n#define KEY_DMP_AINV_SH             (KEY_DMP_INTX_SH + 1)\n#define KEY_DMP_A_INV_XH            (KEY_DMP_AINV_SH + 1)\n#define KEY_DMP_AINV_PH             (KEY_DMP_A_INV_XH + 1)\n#define KEY_DMP_CTHX_H              (KEY_DMP_AINV_PH + 1)\n#define KEY_DMP_CTHY_H              (KEY_DMP_CTHX_H + 1)\n#define KEY_DMP_CTHZ_H              (KEY_DMP_CTHY_H + 1)\n#define KEY_DMP_NCTHX_H             (KEY_DMP_CTHZ_H + 1)\n#define KEY_DMP_NCTHY_H             (KEY_DMP_NCTHX_H + 1)\n#define KEY_DMP_NCTHZ_H             (KEY_DMP_NCTHY_H + 1)\n#define KEY_DMP_CTSQ_XH             (KEY_DMP_NCTHZ_H + 1)\n#define KEY_DMP_CTSQ_YH             (KEY_DMP_CTSQ_XH + 1)\n#define KEY_DMP_CTSQ_ZH             (KEY_DMP_CTSQ_YH + 1)\n#define KEY_DMP_INTX_H              (KEY_DMP_CTSQ_ZH + 1)\n#define KEY_DMP_INTY_H              (KEY_DMP_INTX_H + 1)\n#define KEY_DMP_INTZ_H              (KEY_DMP_INTY_H + 1)\n//#define KEY_DMP_HPX_H               (KEY_DMP_INTZ_H + 1)\n//#define KEY_DMP_HPY_H               (KEY_DMP_HPX_H + 1)\n//#define KEY_DMP_HPZ_H               (KEY_DMP_HPY_H + 1)\n\n/* Stream keys */\n#define KEY_STREAM_P_GYRO_Z         (KEY_DMP_INTZ_H + 1)\n#define KEY_STREAM_P_GYRO_Y         (KEY_STREAM_P_GYRO_Z + 1)\n#define KEY_STREAM_P_GYRO_X         (KEY_STREAM_P_GYRO_Y + 1)\n#define KEY_STREAM_P_TEMP           (KEY_STREAM_P_GYRO_X + 1)\n#define KEY_STREAM_P_AUX_Y          (KEY_STREAM_P_TEMP + 1)\n#define KEY_STREAM_P_AUX_X          (KEY_STREAM_P_AUX_Y + 1)\n#define KEY_STREAM_P_AUX_Z          (KEY_STREAM_P_AUX_X + 1)\n#define KEY_STREAM_P_ACCEL_Y        (KEY_STREAM_P_AUX_Z + 1)\n#define KEY_STREAM_P_ACCEL_X        (KEY_STREAM_P_ACCEL_Y + 1)\n#define KEY_STREAM_P_FOOTER         (KEY_STREAM_P_ACCEL_X + 1)\n#define KEY_STREAM_P_ACCEL_Z        (KEY_STREAM_P_FOOTER + 1)\n\n#define NUM_KEYS                    (KEY_STREAM_P_ACCEL_Z + 1)\n\ntypedef struct {\n    unsigned short key;\n    unsigned short addr;\n} tKeyLabel;\n\n#define DINA0A 0x0a\n#define DINA22 0x22\n#define DINA42 0x42\n#define DINA5A 0x5a\n\n#define DINA06 0x06\n#define DINA0E 0x0e\n#define DINA16 0x16\n#define DINA1E 0x1e\n#define DINA26 0x26\n#define DINA2E 0x2e\n#define DINA36 0x36\n#define DINA3E 0x3e\n#define DINA46 0x46\n#define DINA4E 0x4e\n#define DINA56 0x56\n#define DINA5E 0x5e\n#define DINA66 0x66\n#define DINA6E 0x6e\n#define DINA76 0x76\n#define DINA7E 0x7e\n\n#define DINA00 0x00\n#define DINA08 0x08\n#define DINA10 0x10\n#define DINA18 0x18\n#define DINA20 0x20\n#define DINA28 0x28\n#define DINA30 0x30\n#define DINA38 0x38\n#define DINA40 0x40\n#define DINA48 0x48\n#define DINA50 0x50\n#define DINA58 0x58\n#define DINA60 0x60\n#define DINA68 0x68\n#define DINA70 0x70\n#define DINA78 0x78\n\n#define DINA04 0x04\n#define DINA0C 0x0c\n#define DINA14 0x14\n#define DINA1C 0x1C\n#define DINA24 0x24\n#define DINA2C 0x2c\n#define DINA34 0x34\n#define DINA3C 0x3c\n#define DINA44 0x44\n#define DINA4C 0x4c\n#define DINA54 0x54\n#define DINA5C 0x5c\n#define DINA64 0x64\n#define DINA6C 0x6c\n#define DINA74 0x74\n#define DINA7C 0x7c\n\n#define DINA01 0x01\n#define DINA09 0x09\n#define DINA11 0x11\n#define DINA19 0x19\n#define DINA21 0x21\n#define DINA29 0x29\n#define DINA31 0x31\n#define DINA39 0x39\n#define DINA41 0x41\n#define DINA49 0x49\n#define DINA51 0x51\n#define DINA59 0x59\n#define DINA61 0x61\n#define DINA69 0x69\n#define DINA71 0x71\n#define DINA79 0x79\n\n#define DINA25 0x25\n#define DINA2D 0x2d\n#define DINA35 0x35\n#define DINA3D 0x3d\n#define DINA4D 0x4d\n#define DINA55 0x55\n#define DINA5D 0x5D\n#define DINA6D 0x6d\n#define DINA75 0x75\n#define DINA7D 0x7d\n\n#define DINADC 0xdc\n#define DINAF2 0xf2\n#define DINAAB 0xab\n#define DINAAA 0xaa\n#define DINAF1 0xf1\n#define DINADF 0xdf\n#define DINADA 0xda\n#define DINAB1 0xb1\n#define DINAB9 0xb9\n#define DINAF3 0xf3\n#define DINA8B 0x8b\n#define DINAA3 0xa3\n#define DINA91 0x91\n#define DINAB6 0xb6\n#define DINAB4 0xb4\n\n\n#define DINC00 0x00\n#define DINC01 0x01\n#define DINC02 0x02\n#define DINC03 0x03\n#define DINC08 0x08\n#define DINC09 0x09\n#define DINC0A 0x0a\n#define DINC0B 0x0b\n#define DINC10 0x10\n#define DINC11 0x11\n#define DINC12 0x12\n#define DINC13 0x13\n#define DINC18 0x18\n#define DINC19 0x19\n#define DINC1A 0x1a\n#define DINC1B 0x1b\n\n#define DINC20 0x20\n#define DINC21 0x21\n#define DINC22 0x22\n#define DINC23 0x23\n#define DINC28 0x28\n#define DINC29 0x29\n#define DINC2A 0x2a\n#define DINC2B 0x2b\n#define DINC30 0x30\n#define DINC31 0x31\n#define DINC32 0x32\n#define DINC33 0x33\n#define DINC38 0x38\n#define DINC39 0x39\n#define DINC3A 0x3a\n#define DINC3B 0x3b\n\n#define DINC40 0x40\n#define DINC41 0x41\n#define DINC42 0x42\n#define DINC43 0x43\n#define DINC48 0x48\n#define DINC49 0x49\n#define DINC4A 0x4a\n#define DINC4B 0x4b\n#define DINC50 0x50\n#define DINC51 0x51\n#define DINC52 0x52\n#define DINC53 0x53\n#define DINC58 0x58\n#define DINC59 0x59\n#define DINC5A 0x5a\n#define DINC5B 0x5b\n\n#define DINC60 0x60\n#define DINC61 0x61\n#define DINC62 0x62\n#define DINC63 0x63\n#define DINC68 0x68\n#define DINC69 0x69\n#define DINC6A 0x6a\n#define DINC6B 0x6b\n#define DINC70 0x70\n#define DINC71 0x71\n#define DINC72 0x72\n#define DINC73 0x73\n#define DINC78 0x78\n#define DINC79 0x79\n#define DINC7A 0x7a\n#define DINC7B 0x7b\n\n#define DIND40 0x40\n\n\n#define DINA80 0x80\n#define DINA90 0x90\n#define DINAA0 0xa0\n#define DINAC9 0xc9\n#define DINACB 0xcb\n#define DINACD 0xcd\n#define DINACF 0xcf\n#define DINAC8 0xc8\n#define DINACA 0xca\n#define DINACC 0xcc\n#define DINACE 0xce\n#define DINAD8 0xd8\n#define DINADD 0xdd\n#define DINAF8 0xf0\n#define DINAFE 0xfe\n\n#define DINBF8 0xf8\n#define DINAC0 0xb0\n#define DINAC1 0xb1\n#define DINAC2 0xb4\n#define DINAC3 0xb5\n#define DINAC4 0xb8\n#define DINAC5 0xb9\n#define DINBC0 0xc0\n#define DINBC2 0xc2\n#define DINBC4 0xc4\n#define DINBC6 0xc6\n\n\n\n#endif // DMPKEY_H__\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/dmp_interface.c",
    "content": "#include \"dmp_interface.h\"\n#include \"i2c.h\"\n#include \"main.h\"\n\n\nvoid my_get_ms(unsigned long *tick)\n{\n    if(!tick)\n        return;\n    *tick = xTaskGetTickCount();\t\n}\n\nvoid my_delay_ms(uint32_t ms)\n{\n    osDelay(ms);\n}\n\nuint8_t hal_i2c_write(uint8_t addr,uint8_t reg, uint8_t len, uint8_t *dat)\n{\n    return HAL_I2C_Mem_Write(&hi2c4,addr<<1,reg,I2C_MEMADD_SIZE_8BIT,dat,len,1000);\n}\n\nuint8_t hal_i2c_read(uint8_t addr,uint8_t reg, uint8_t len, uint8_t *dat)\n{\n    return HAL_I2C_Mem_Read(&hi2c4,addr<<1,reg,I2C_MEMADD_SIZE_8BIT,dat,len,1000);\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/dmp_interface.h",
    "content": "#ifndef DMP_INTERFACE_H\n#define DMP_INTERFACE_H\n\n#include \"main.h\"\n#include \"cmsis_os.h\"\n\n\nvoid my_get_ms(unsigned long *tick);\nvoid my_delay_ms(uint32_t ms);\nuint8_t hal_i2c_write(uint8_t addr,uint8_t reg, uint8_t len, uint8_t *dat);\nuint8_t hal_i2c_read(uint8_t addr,uint8_t reg, uint8_t len, uint8_t *dat);\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/dmpmap.h",
    "content": "/*\n $License:\n    Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.\n $\n */\n#ifndef DMPMAP_H\n#define DMPMAP_H\n\n#ifdef __cplusplus\nextern \"C\"\n{\n#endif\n\n#define DMP_PTAT    0\n#define DMP_XGYR    2\n#define DMP_YGYR    4\n#define DMP_ZGYR    6\n#define DMP_XACC    8\n#define DMP_YACC    10\n#define DMP_ZACC    12\n#define DMP_ADC1    14\n#define DMP_ADC2    16\n#define DMP_ADC3    18\n#define DMP_BIASUNC    20\n#define DMP_FIFORT    22\n#define DMP_INVGSFH    24\n#define DMP_INVGSFL    26\n#define DMP_1H    28\n#define DMP_1L    30\n#define DMP_BLPFSTCH    32\n#define DMP_BLPFSTCL    34\n#define DMP_BLPFSXH    36\n#define DMP_BLPFSXL    38\n#define DMP_BLPFSYH    40\n#define DMP_BLPFSYL    42\n#define DMP_BLPFSZH    44\n#define DMP_BLPFSZL    46\n#define DMP_BLPFMTC    48\n#define DMP_SMC    50\n#define DMP_BLPFMXH    52\n#define DMP_BLPFMXL    54\n#define DMP_BLPFMYH    56\n#define DMP_BLPFMYL    58\n#define DMP_BLPFMZH    60\n#define DMP_BLPFMZL    62\n#define DMP_BLPFC    64\n#define DMP_SMCTH    66\n#define DMP_0H2    68\n#define DMP_0L2    70\n#define DMP_BERR2H    72\n#define DMP_BERR2L    74\n#define DMP_BERR2NH    76\n#define DMP_SMCINC    78\n#define DMP_ANGVBXH    80\n#define DMP_ANGVBXL    82\n#define DMP_ANGVBYH    84\n#define DMP_ANGVBYL    86\n#define DMP_ANGVBZH    88\n#define DMP_ANGVBZL    90\n#define DMP_BERR1H    92\n#define DMP_BERR1L    94\n#define DMP_ATCH    96\n#define DMP_BIASUNCSF    98\n#define DMP_ACT2H    100\n#define DMP_ACT2L    102\n#define DMP_GSFH    104\n#define DMP_GSFL    106\n#define DMP_GH    108\n#define DMP_GL    110\n#define DMP_0_5H    112\n#define DMP_0_5L    114\n#define DMP_0_0H    116\n#define DMP_0_0L    118\n#define DMP_1_0H    120\n#define DMP_1_0L    122\n#define DMP_1_5H    124\n#define DMP_1_5L    126\n#define DMP_TMP1AH    128\n#define DMP_TMP1AL    130\n#define DMP_TMP2AH    132\n#define DMP_TMP2AL    134\n#define DMP_TMP3AH    136\n#define DMP_TMP3AL    138\n#define DMP_TMP4AH    140\n#define DMP_TMP4AL    142\n#define DMP_XACCW    144\n#define DMP_TMP5    146\n#define DMP_XACCB    148\n#define DMP_TMP8    150\n#define DMP_YACCB    152\n#define DMP_TMP9    154\n#define DMP_ZACCB    156\n#define DMP_TMP10    158\n#define DMP_DZH    160\n#define DMP_DZL    162\n#define DMP_XGCH    164\n#define DMP_XGCL    166\n#define DMP_YGCH    168\n#define DMP_YGCL    170\n#define DMP_ZGCH    172\n#define DMP_ZGCL    174\n#define DMP_YACCW    176\n#define DMP_TMP7    178\n#define DMP_AFB1H    180\n#define DMP_AFB1L    182\n#define DMP_AFB2H    184\n#define DMP_AFB2L    186\n#define DMP_MAGFBH    188\n#define DMP_MAGFBL    190\n#define DMP_QT1H    192\n#define DMP_QT1L    194\n#define DMP_QT2H    196\n#define DMP_QT2L    198\n#define DMP_QT3H    200\n#define DMP_QT3L    202\n#define DMP_QT4H    204\n#define DMP_QT4L    206\n#define DMP_CTRL1H    208\n#define DMP_CTRL1L    210\n#define DMP_CTRL2H    212\n#define DMP_CTRL2L    214\n#define DMP_CTRL3H    216\n#define DMP_CTRL3L    218\n#define DMP_CTRL4H    220\n#define DMP_CTRL4L    222\n#define DMP_CTRLS1    224\n#define DMP_CTRLSF1    226\n#define DMP_CTRLS2    228\n#define DMP_CTRLSF2    230\n#define DMP_CTRLS3    232\n#define DMP_CTRLSFNLL    234\n#define DMP_CTRLS4    236\n#define DMP_CTRLSFNL2    238\n#define DMP_CTRLSFNL    240\n#define DMP_TMP30    242\n#define DMP_CTRLSFJT    244\n#define DMP_TMP31    246\n#define DMP_TMP11    248\n#define DMP_CTRLSF2_2    250\n#define DMP_TMP12    252\n#define DMP_CTRLSF1_2    254\n#define DMP_PREVPTAT    256\n#define DMP_ACCZB    258\n#define DMP_ACCXB    264\n#define DMP_ACCYB    266\n#define DMP_1HB    272\n#define DMP_1LB    274\n#define DMP_0H    276\n#define DMP_0L    278\n#define DMP_ASR22H    280\n#define DMP_ASR22L    282\n#define DMP_ASR6H    284\n#define DMP_ASR6L    286\n#define DMP_TMP13    288\n#define DMP_TMP14    290\n#define DMP_FINTXH    292\n#define DMP_FINTXL    294\n#define DMP_FINTYH    296\n#define DMP_FINTYL    298\n#define DMP_FINTZH    300\n#define DMP_FINTZL    302\n#define DMP_TMP1BH    304\n#define DMP_TMP1BL    306\n#define DMP_TMP2BH    308\n#define DMP_TMP2BL    310\n#define DMP_TMP3BH    312\n#define DMP_TMP3BL    314\n#define DMP_TMP4BH    316\n#define DMP_TMP4BL    318\n#define DMP_STXG    320\n#define DMP_ZCTXG    322\n#define DMP_STYG    324\n#define DMP_ZCTYG    326\n#define DMP_STZG    328\n#define DMP_ZCTZG    330\n#define DMP_CTRLSFJT2    332\n#define DMP_CTRLSFJTCNT    334\n#define DMP_PVXG    336\n#define DMP_TMP15    338\n#define DMP_PVYG    340\n#define DMP_TMP16    342\n#define DMP_PVZG    344\n#define DMP_TMP17    346\n#define DMP_MNMFLAGH    352\n#define DMP_MNMFLAGL    354\n#define DMP_MNMTMH    356\n#define DMP_MNMTML    358\n#define DMP_MNMTMTHRH    360\n#define DMP_MNMTMTHRL    362\n#define DMP_MNMTHRH    364\n#define DMP_MNMTHRL    366\n#define DMP_ACCQD4H    368\n#define DMP_ACCQD4L    370\n#define DMP_ACCQD5H    372\n#define DMP_ACCQD5L    374\n#define DMP_ACCQD6H    376\n#define DMP_ACCQD6L    378\n#define DMP_ACCQD7H    380\n#define DMP_ACCQD7L    382\n#define DMP_ACCQD0H    384\n#define DMP_ACCQD0L    386\n#define DMP_ACCQD1H    388\n#define DMP_ACCQD1L    390\n#define DMP_ACCQD2H    392\n#define DMP_ACCQD2L    394\n#define DMP_ACCQD3H    396\n#define DMP_ACCQD3L    398\n#define DMP_XN2H    400\n#define DMP_XN2L    402\n#define DMP_XN1H    404\n#define DMP_XN1L    406\n#define DMP_YN2H    408\n#define DMP_YN2L    410\n#define DMP_YN1H    412\n#define DMP_YN1L    414\n#define DMP_YH    416\n#define DMP_YL    418\n#define DMP_B0H    420\n#define DMP_B0L    422\n#define DMP_A1H    424\n#define DMP_A1L    426\n#define DMP_A2H    428\n#define DMP_A2L    430\n#define DMP_SEM1    432\n#define DMP_FIFOCNT    434\n#define DMP_SH_TH_X    436\n#define DMP_PACKET    438\n#define DMP_SH_TH_Y    440\n#define DMP_FOOTER    442\n#define DMP_SH_TH_Z    444\n#define DMP_TEMP29    448\n#define DMP_TEMP30    450\n#define DMP_XACCB_PRE    452\n#define DMP_XACCB_PREL    454\n#define DMP_YACCB_PRE    456\n#define DMP_YACCB_PREL    458\n#define DMP_ZACCB_PRE    460\n#define DMP_ZACCB_PREL    462\n#define DMP_TMP22    464\n#define DMP_TAP_TIMER    466\n#define DMP_TAP_THX    468\n#define DMP_TAP_THY    472\n#define DMP_TAP_THZ    476\n#define DMP_TAPW_MIN    478\n#define DMP_TMP25    480\n#define DMP_TMP26    482\n#define DMP_TMP27    484\n#define DMP_TMP28    486\n#define DMP_ORIENT    488\n#define DMP_THRSH    490\n#define DMP_ENDIANH    492\n#define DMP_ENDIANL    494\n#define DMP_BLPFNMTCH    496\n#define DMP_BLPFNMTCL    498\n#define DMP_BLPFNMXH    500\n#define DMP_BLPFNMXL    502\n#define DMP_BLPFNMYH    504\n#define DMP_BLPFNMYL    506\n#define DMP_BLPFNMZH    508\n#define DMP_BLPFNMZL    510\n#ifdef __cplusplus\n}\n#endif\n#endif // DMPMAP_H\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/inv_mpu.c",
    "content": "/*\n $License:\n    Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.\n    See included License.txt for License information.\n $\n */\n/**\n *  @addtogroup  DRIVERS Sensor Driver Layer\n *  @brief       Hardware drivers to communicate with sensors via I2C.\n *\n *  @{\n *      @file       inv_mpu.c\n *      @brief      An I2C-based driver for Invensense gyroscopes.\n *      @details    This driver currently works for the following devices:\n *                  MPU6050\n *                  MPU6500\n *                  MPU9150 (or MPU6050 w/ AK8975 on the auxiliary bus)\n *                  MPU9250 (or MPU6500 w/ AK8963 on the auxiliary bus)\n */\n#include <stdio.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n#include \"inv_mpu.h\"\n             \n/* The following functions must be defined for this platform:\n * i2c_write(unsigned char slave_addr, unsigned char reg_addr,\n *      unsigned char length, unsigned char const *data)\n * i2c_read(unsigned char slave_addr, unsigned char reg_addr,\n *      unsigned char length, unsigned char *data)\n * delay_ms(unsigned long num_ms)\n * get_ms(unsigned long *count)\n * reg_int_cb(void (*cb)(void), unsigned char port, unsigned char pin)\n * labs(long x)\n * fabsf(float x)\n * min(int a, int b)\n */\n#if defined MOTION_DRIVER_TARGET_MSP430\n// #include \"msp430.h\"\n// #include \"msp430_i2c.h\"\n// #include \"msp430_clock.h\"\n// #include \"msp430_interrupt.h\"\n#include \"dmp_interface.h\"\n#define i2c_write   hal_i2c_write\n#define i2c_read    hal_i2c_read\n#define delay_ms    my_delay_ms\n#define get_ms      my_get_ms\nstatic inline int reg_int_cb(struct int_param_s *int_param)  /* жϻصδʵ֣ */\n{\n    // return msp430_reg_int_cb(int_param->cb, int_param->pin, int_param->lp_exit,\n    //     int_param->active_low);\n    return 0;\n}\n#define log_i(...)     do {} while (0)\n#define log_e(...)     do {} while (0)\n/* labs is already defined by TI's toolchain. */\n/* fabs is for doubles. fabsf is for floats. */\n#define fabs        fabsf\n#define min(a,b) ((a<b)?a:b)\n#elif defined EMPL_TARGET_MSP430\n#include \"msp430.h\"\n#include \"msp430_i2c.h\"\n#include \"msp430_clock.h\"\n#include \"msp430_interrupt.h\"\n#include \"log.h\"\n#define i2c_write   msp430_i2c_write\n#define i2c_read    msp430_i2c_read\n#define delay_ms    msp430_delay_ms\n#define get_ms      msp430_get_clock_ms\nstatic inline int reg_int_cb(struct int_param_s *int_param)\n{\n    return msp430_reg_int_cb(int_param->cb, int_param->pin, int_param->lp_exit,\n        int_param->active_low);\n}\n#define log_i       MPL_LOGI\n#define log_e       MPL_LOGE\n/* labs is already defined by TI's toolchain. */\n/* fabs is for doubles. fabsf is for floats. */\n#define fabs        fabsf\n#define min(a,b) ((a<b)?a:b)\n#elif defined EMPL_TARGET_UC3L0\n/* Instead of using the standard TWI driver from the ASF library, we're using\n * a TWI driver that follows the slave address + register address convention.\n */\n#include \"twi.h\"\n#include \"delay.h\"\n#include \"sysclk.h\"\n#include \"log.h\"\n#include \"sensors_xplained.h\"\n#include \"uc3l0_clock.h\"\n#define i2c_write(a, b, c, d)   twi_write(a, b, d, c)\n#define i2c_read(a, b, c, d)    twi_read(a, b, d, c)\n/* delay_ms is a function already defined in ASF. */\n#define get_ms  uc3l0_get_clock_ms\nstatic inline int reg_int_cb(struct int_param_s *int_param)\n{\n    sensor_board_irq_connect(int_param->pin, int_param->cb, int_param->arg);\n    return 0;\n}\n#define log_i       MPL_LOGI\n#define log_e       MPL_LOGE\n/* UC3 is a 32-bit processor, so abs and labs are equivalent. */\n#define labs        abs\n#define fabs(x)     (((x)>0)?(x):-(x))\n#else\n#error  Gyro driver is missing the system layer implementations.\n#endif\n\n#if !defined MPU6050 && !defined MPU9150 && !defined MPU6500 && !defined MPU9250\n#error  Which gyro are you using? Define MPUxxxx in your compiler options.\n#endif\n\n/* Time for some messy macro work. =]\n * #define MPU9150\n * is equivalent to..\n * #define MPU6050\n * #define AK8975_SECONDARY\n *\n * #define MPU9250\n * is equivalent to..\n * #define MPU6500\n * #define AK8963_SECONDARY\n */\n#if defined MPU9150\n#ifndef MPU6050\n#define MPU6050\n#endif                          /* #ifndef MPU6050 */\n#if defined AK8963_SECONDARY\n#error \"MPU9150 and AK8963_SECONDARY cannot both be defined.\"\n#elif !defined AK8975_SECONDARY /* #if defined AK8963_SECONDARY */\n#define AK8975_SECONDARY\n#endif                          /* #if defined AK8963_SECONDARY */\n#elif defined MPU9250           /* #if defined MPU9150 */\n#ifndef MPU6500\n#define MPU6500\n#endif                          /* #ifndef MPU6500 */\n#if defined AK8975_SECONDARY\n#error \"MPU9250 and AK8975_SECONDARY cannot both be defined.\"\n#elif !defined AK8963_SECONDARY /* #if defined AK8975_SECONDARY */\n#define AK8963_SECONDARY\n#endif                          /* #if defined AK8975_SECONDARY */\n#endif                          /* #if defined MPU9150 */\n\n#if defined AK8975_SECONDARY || defined AK8963_SECONDARY\n#define AK89xx_SECONDARY\n#else\n/* #warning \"No compass = less profit for Invensense. Lame.\" */\n#endif\n\nstatic int set_int_enable(unsigned char enable);\n\n/* Hardware registers needed by driver. */\nstruct gyro_reg_s {\n    unsigned char who_am_i;\n    unsigned char rate_div;\n    unsigned char lpf;\n    unsigned char prod_id;\n    unsigned char user_ctrl;\n    unsigned char fifo_en;\n    unsigned char gyro_cfg;\n    unsigned char accel_cfg;\n    unsigned char accel_cfg2;\n    unsigned char lp_accel_odr;\n    unsigned char motion_thr;\n    unsigned char motion_dur;\n    unsigned char fifo_count_h;\n    unsigned char fifo_r_w;\n    unsigned char raw_gyro;\n    unsigned char raw_accel;\n    unsigned char temp;\n    unsigned char int_enable;\n    unsigned char dmp_int_status;\n    unsigned char int_status;\n    unsigned char accel_intel;\n    unsigned char pwr_mgmt_1;\n    unsigned char pwr_mgmt_2;\n    unsigned char int_pin_cfg;\n    unsigned char mem_r_w;\n    unsigned char accel_offs;\n    unsigned char i2c_mst;\n    unsigned char bank_sel;\n    unsigned char mem_start_addr;\n    unsigned char prgm_start_h;\n#if defined AK89xx_SECONDARY\n    unsigned char s0_addr;\n    unsigned char s0_reg;\n    unsigned char s0_ctrl;\n    unsigned char s1_addr;\n    unsigned char s1_reg;\n    unsigned char s1_ctrl;\n    unsigned char s4_ctrl;\n    unsigned char s0_do;\n    unsigned char s1_do;\n    unsigned char i2c_delay_ctrl;\n    unsigned char raw_compass;\n    /* The I2C_MST_VDDIO bit is in this register. */\n    unsigned char yg_offs_tc;\n#endif\n};\n\n/* Information specific to a particular device. */\nstruct hw_s {\n    unsigned char addr;\n    unsigned short max_fifo;\n    unsigned char num_reg;\n    unsigned short temp_sens;\n    short temp_offset;\n    unsigned short bank_size;\n#if defined AK89xx_SECONDARY\n    unsigned short compass_fsr;\n#endif\n};\n\n/* When entering motion interrupt mode, the driver keeps track of the\n * previous state so that it can be restored at a later time.\n * TODO: This is tacky. Fix it.\n */\nstruct motion_int_cache_s {\n    unsigned short gyro_fsr;\n    unsigned char accel_fsr;\n    unsigned short lpf;\n    unsigned short sample_rate;\n    unsigned char sensors_on;\n    unsigned char fifo_sensors;\n    unsigned char dmp_on;\n};\n\n/* Cached chip configuration data.\n * TODO: A lot of these can be handled with a bitmask.\n */\nstruct chip_cfg_s {\n    /* Matches gyro_cfg >> 3 & 0x03 */\n    unsigned char gyro_fsr;\n    /* Matches accel_cfg >> 3 & 0x03 */\n    unsigned char accel_fsr;\n    /* Enabled sensors. Uses same masks as fifo_en, NOT pwr_mgmt_2. */\n    unsigned char sensors;\n    /* Matches config register. */\n    unsigned char lpf;\n    unsigned char clk_src;\n    /* Sample rate, NOT rate divider. */\n    unsigned short sample_rate;\n    /* Matches fifo_en register. */\n    unsigned char fifo_enable;\n    /* Matches int enable register. */\n    unsigned char int_enable;\n    /* 1 if devices on auxiliary I2C bus appear on the primary. */\n    unsigned char bypass_mode;\n    /* 1 if half-sensitivity.\n     * NOTE: This doesn't belong here, but everything else in hw_s is const,\n     * and this allows us to save some precious RAM.\n     */\n    unsigned char accel_half;\n    /* 1 if device in low-power accel-only mode. */\n    unsigned char lp_accel_mode;\n    /* 1 if interrupts are only triggered on motion events. */\n    unsigned char int_motion_only;\n    struct motion_int_cache_s cache;\n    /* 1 for active low interrupts. */\n    unsigned char active_low_int;\n    /* 1 for latched interrupts. */\n    unsigned char latched_int;\n    /* 1 if DMP is enabled. */\n    unsigned char dmp_on;\n    /* Ensures that DMP will only be loaded once. */\n    unsigned char dmp_loaded;\n    /* Sampling rate used when DMP is enabled. */\n    unsigned short dmp_sample_rate;\n#ifdef AK89xx_SECONDARY\n    /* Compass sample rate. */\n    unsigned short compass_sample_rate;\n    unsigned char compass_addr;\n    short mag_sens_adj[3];\n#endif\n};\n\n/* Information for self-test. */\nstruct test_s {\n    unsigned long gyro_sens;\n    unsigned long accel_sens;\n    unsigned char reg_rate_div;\n    unsigned char reg_lpf;\n    unsigned char reg_gyro_fsr;\n    unsigned char reg_accel_fsr;\n    unsigned short wait_ms;\n    unsigned char packet_thresh;\n    float min_dps;\n    float max_dps;\n    float max_gyro_var;\n    float min_g;\n    float max_g;\n    float max_accel_var;\n};\n\n/* Gyro driver state variables. */\nstruct gyro_state_s {\n    const struct gyro_reg_s *reg;\n    const struct hw_s *hw;\n    struct chip_cfg_s chip_cfg;\n    const struct test_s *test;\n};\n\n/* Filter configurations. */\nenum lpf_e {\n    INV_FILTER_256HZ_NOLPF2 = 0,\n    INV_FILTER_188HZ,\n    INV_FILTER_98HZ,\n    INV_FILTER_42HZ,\n    INV_FILTER_20HZ,\n    INV_FILTER_10HZ,\n    INV_FILTER_5HZ,\n    INV_FILTER_2100HZ_NOLPF,\n    NUM_FILTER\n};\n\n/* Full scale ranges. */\nenum gyro_fsr_e {\n    INV_FSR_250DPS = 0,\n    INV_FSR_500DPS,\n    INV_FSR_1000DPS,\n    INV_FSR_2000DPS,\n    NUM_GYRO_FSR\n};\n\n/* Full scale ranges. */\nenum accel_fsr_e {\n    INV_FSR_2G = 0,\n    INV_FSR_4G,\n    INV_FSR_8G,\n    INV_FSR_16G,\n    NUM_ACCEL_FSR\n};\n\n/* Clock sources. */\nenum clock_sel_e {\n    INV_CLK_INTERNAL = 0,\n    INV_CLK_PLL,\n    NUM_CLK\n};\n\n/* Low-power accel wakeup rates. */\nenum lp_accel_rate_e {\n#if defined MPU6050\n    INV_LPA_1_25HZ,\n    INV_LPA_5HZ,\n    INV_LPA_20HZ,\n    INV_LPA_40HZ\n#elif defined MPU6500\n    INV_LPA_0_3125HZ,\n    INV_LPA_0_625HZ,\n    INV_LPA_1_25HZ,\n    INV_LPA_2_5HZ,\n    INV_LPA_5HZ,\n    INV_LPA_10HZ,\n    INV_LPA_20HZ,\n    INV_LPA_40HZ,\n    INV_LPA_80HZ,\n    INV_LPA_160HZ,\n    INV_LPA_320HZ,\n    INV_LPA_640HZ\n#endif\n};\n\n#define BIT_I2C_MST_VDDIO   (0x80)\n#define BIT_FIFO_EN         (0x40)\n#define BIT_DMP_EN          (0x80)\n#define BIT_FIFO_RST        (0x04)\n#define BIT_DMP_RST         (0x08)\n#define BIT_FIFO_OVERFLOW   (0x10)\n#define BIT_DATA_RDY_EN     (0x01)\n#define BIT_DMP_INT_EN      (0x02)\n#define BIT_MOT_INT_EN      (0x40)\n#define BITS_FSR            (0x18)\n#define BITS_LPF            (0x07)\n#define BITS_HPF            (0x07)\n#define BITS_CLK            (0x07)\n#define BIT_FIFO_SIZE_1024  (0x40)\n#define BIT_FIFO_SIZE_2048  (0x80)\n#define BIT_FIFO_SIZE_4096  (0xC0)\n#define BIT_RESET           (0x80)\n#define BIT_SLEEP           (0x40)\n#define BIT_S0_DELAY_EN     (0x01)\n#define BIT_S2_DELAY_EN     (0x04)\n#define BITS_SLAVE_LENGTH   (0x0F)\n#define BIT_SLAVE_BYTE_SW   (0x40)\n#define BIT_SLAVE_GROUP     (0x10)\n#define BIT_SLAVE_EN        (0x80)\n#define BIT_I2C_READ        (0x80)\n#define BITS_I2C_MASTER_DLY (0x1F)\n#define BIT_AUX_IF_EN       (0x20)\n#define BIT_ACTL            (0x80)\n#define BIT_LATCH_EN        (0x20)\n#define BIT_ANY_RD_CLR      (0x10)\n#define BIT_BYPASS_EN       (0x02)\n#define BITS_WOM_EN         (0xC0)\n#define BIT_LPA_CYCLE       (0x20)\n#define BIT_STBY_XA         (0x20)\n#define BIT_STBY_YA         (0x10)\n#define BIT_STBY_ZA         (0x08)\n#define BIT_STBY_XG         (0x04)\n#define BIT_STBY_YG         (0x02)\n#define BIT_STBY_ZG         (0x01)\n#define BIT_STBY_XYZA       (BIT_STBY_XA | BIT_STBY_YA | BIT_STBY_ZA)\n#define BIT_STBY_XYZG       (BIT_STBY_XG | BIT_STBY_YG | BIT_STBY_ZG)\n\n#if defined AK8975_SECONDARY\n#define SUPPORTS_AK89xx_HIGH_SENS   (0x00)\n#define AK89xx_FSR                  (9830)\n#elif defined AK8963_SECONDARY\n#define SUPPORTS_AK89xx_HIGH_SENS   (0x10)\n#define AK89xx_FSR                  (4915)\n#endif\n\n#ifdef AK89xx_SECONDARY\n#define AKM_REG_WHOAMI      (0x00)\n\n#define AKM_REG_ST1         (0x02)\n#define AKM_REG_HXL         (0x03)\n#define AKM_REG_ST2         (0x09)\n\n#define AKM_REG_CNTL        (0x0A)\n#define AKM_REG_ASTC        (0x0C)\n#define AKM_REG_ASAX        (0x10)\n#define AKM_REG_ASAY        (0x11)\n#define AKM_REG_ASAZ        (0x12)\n\n#define AKM_DATA_READY      (0x01)\n#define AKM_DATA_OVERRUN    (0x02)\n#define AKM_OVERFLOW        (0x80)\n#define AKM_DATA_ERROR      (0x40)\n\n#define AKM_BIT_SELF_TEST   (0x40)\n\n#define AKM_POWER_DOWN          (0x00 | SUPPORTS_AK89xx_HIGH_SENS)\n#define AKM_SINGLE_MEASUREMENT  (0x01 | SUPPORTS_AK89xx_HIGH_SENS)\n#define AKM_FUSE_ROM_ACCESS     (0x0F | SUPPORTS_AK89xx_HIGH_SENS)\n#define AKM_MODE_SELF_TEST      (0x08 | SUPPORTS_AK89xx_HIGH_SENS)\n\n#define AKM_WHOAMI      (0x48)\n#endif\n\n#if defined MPU6050\nconst struct gyro_reg_s reg = {\n    .who_am_i       = 0x75,\n    .rate_div       = 0x19,\n    .lpf            = 0x1A,\n    .prod_id        = 0x0C,\n    .user_ctrl      = 0x6A,\n    .fifo_en        = 0x23,\n    .gyro_cfg       = 0x1B,\n    .accel_cfg      = 0x1C,\n    .motion_thr     = 0x1F,\n    .motion_dur     = 0x20,\n    .fifo_count_h   = 0x72,\n    .fifo_r_w       = 0x74,\n    .raw_gyro       = 0x43,\n    .raw_accel      = 0x3B,\n    .temp           = 0x41,\n    .int_enable     = 0x38,\n    .dmp_int_status = 0x39,\n    .int_status     = 0x3A,\n    .pwr_mgmt_1     = 0x6B,\n    .pwr_mgmt_2     = 0x6C,\n    .int_pin_cfg    = 0x37,\n    .mem_r_w        = 0x6F,\n    .accel_offs     = 0x06,\n    .i2c_mst        = 0x24,\n    .bank_sel       = 0x6D,\n    .mem_start_addr = 0x6E,\n    .prgm_start_h   = 0x70\n#ifdef AK89xx_SECONDARY\n    ,.raw_compass   = 0x49,\n    .yg_offs_tc     = 0x01,\n    .s0_addr        = 0x25,\n    .s0_reg         = 0x26,\n    .s0_ctrl        = 0x27,\n    .s1_addr        = 0x28,\n    .s1_reg         = 0x29,\n    .s1_ctrl        = 0x2A,\n    .s4_ctrl        = 0x34,\n    .s0_do          = 0x63,\n    .s1_do          = 0x64,\n    .i2c_delay_ctrl = 0x67\n#endif\n};\nconst struct hw_s hw = {\n    .addr           = 0x68,\n    .max_fifo       = 1024,\n    .num_reg        = 118,\n    .temp_sens      = 340,\n    .temp_offset    = -521,\n    .bank_size      = 256\n#if defined AK89xx_SECONDARY\n    ,.compass_fsr    = AK89xx_FSR\n#endif\n};\n\nconst struct test_s test = {\n    .gyro_sens      = 32768/250,\n    .accel_sens     = 32768/16,\n    .reg_rate_div   = 0,    /* 1kHz. */\n    .reg_lpf        = 1,    /* 188Hz. */\n    .reg_gyro_fsr   = 0,    /* 250dps. */\n    .reg_accel_fsr  = 0x18, /* 16g. */\n    .wait_ms        = 50,\n    .packet_thresh  = 5,    /* 5% */\n    .min_dps        = 10.f,\n    .max_dps        = 105.f,\n    .max_gyro_var   = 0.14f,\n    .min_g          = 0.3f,\n    .max_g          = 0.95f,\n    .max_accel_var  = 0.14f\n};\n\nstatic struct gyro_state_s st = {\n    .reg = &reg,\n    .hw = &hw,\n    .test = &test\n};\n#elif defined MPU6500\nconst struct gyro_reg_s reg = {\n    .who_am_i       = 0x75,\n    .rate_div       = 0x19,\n    .lpf            = 0x1A,\n    .prod_id        = 0x0C,\n    .user_ctrl      = 0x6A,\n    .fifo_en        = 0x23,\n    .gyro_cfg       = 0x1B,\n    .accel_cfg      = 0x1C,\n    .accel_cfg2     = 0x1D,\n    .lp_accel_odr   = 0x1E,\n    .motion_thr     = 0x1F,\n    .motion_dur     = 0x20,\n    .fifo_count_h   = 0x72,\n    .fifo_r_w       = 0x74,\n    .raw_gyro       = 0x43,\n    .raw_accel      = 0x3B,\n    .temp           = 0x41,\n    .int_enable     = 0x38,\n    .dmp_int_status = 0x39,\n    .int_status     = 0x3A,\n    .accel_intel    = 0x69,\n    .pwr_mgmt_1     = 0x6B,\n    .pwr_mgmt_2     = 0x6C,\n    .int_pin_cfg    = 0x37,\n    .mem_r_w        = 0x6F,\n    .accel_offs     = 0x77,\n    .i2c_mst        = 0x24,\n    .bank_sel       = 0x6D,\n    .mem_start_addr = 0x6E,\n    .prgm_start_h   = 0x70\n#ifdef AK89xx_SECONDARY\n    ,.raw_compass   = 0x49,\n    .s0_addr        = 0x25,\n    .s0_reg         = 0x26,\n    .s0_ctrl        = 0x27,\n    .s1_addr        = 0x28,\n    .s1_reg         = 0x29,\n    .s1_ctrl        = 0x2A,\n    .s4_ctrl        = 0x34,\n    .s0_do          = 0x63,\n    .s1_do          = 0x64,\n    .i2c_delay_ctrl = 0x67\n#endif\n};\nconst struct hw_s hw = {\n    .addr           = 0x68,\n    .max_fifo       = 1024,\n    .num_reg        = 128,\n    .temp_sens      = 321,\n    .temp_offset    = 0,\n    .bank_size      = 256\n#if defined AK89xx_SECONDARY\n    ,.compass_fsr    = AK89xx_FSR\n#endif\n};\n\nconst struct test_s test = {\n    .gyro_sens      = 32768/250,\n    .accel_sens     = 32768/16,\n    .reg_rate_div   = 0,    /* 1kHz. */\n    .reg_lpf        = 1,    /* 188Hz. */\n    .reg_gyro_fsr   = 0,    /* 250dps. */\n    .reg_accel_fsr  = 0x18, /* 16g. */\n    .wait_ms        = 50,\n    .packet_thresh  = 5,    /* 5% */\n    .min_dps        = 10.f,\n    .max_dps        = 105.f,\n    .max_gyro_var   = 0.14f,\n    .min_g          = 0.3f,\n    .max_g          = 0.95f,\n    .max_accel_var  = 0.14f\n};\n\nstatic struct gyro_state_s st = {\n    .reg = &reg,\n    .hw = &hw,\n    .test = &test\n};\n#endif\n\n#define MAX_PACKET_LENGTH (12)\n\n#ifdef AK89xx_SECONDARY\nstatic int setup_compass(void);\n#define MAX_COMPASS_SAMPLE_RATE (100)\n#endif\n\n/**\n *  @brief      Enable/disable data ready interrupt.\n *  If the DMP is on, the DMP interrupt is enabled. Otherwise, the data ready\n *  interrupt is used.\n *  @param[in]  enable      1 to enable interrupt.\n *  @return     0 if successful.\n */\nstatic int set_int_enable(unsigned char enable)\n{\n    unsigned char tmp;\n\n    if (st.chip_cfg.dmp_on) {\n        if (enable)\n            tmp = BIT_DMP_INT_EN;\n        else\n            tmp = 0x00;\n        if (i2c_write(st.hw->addr, st.reg->int_enable, 1, &tmp))\n            return -1;\n        st.chip_cfg.int_enable = tmp;\n    } else {\n        if (!st.chip_cfg.sensors)\n            return -1;\n        if (enable && st.chip_cfg.int_enable)\n            return 0;\n        if (enable)\n            tmp = BIT_DATA_RDY_EN;\n        else\n            tmp = 0x00;\n        if (i2c_write(st.hw->addr, st.reg->int_enable, 1, &tmp))\n            return -1;\n        st.chip_cfg.int_enable = tmp;\n    }\n    return 0;\n}\n\n/**\n *  @brief      Register dump for testing.\n *  @return     0 if successful.\n */\nint mpu_reg_dump(void)\n{\n    unsigned char ii;\n    unsigned char data;\n\n    for (ii = 0; ii < st.hw->num_reg; ii++) {\n        if (ii == st.reg->fifo_r_w || ii == st.reg->mem_r_w)\n            continue;\n        if (i2c_read(st.hw->addr, ii, 1, &data))\n            return -1;\n        log_i(\"%#5x: %#5x\\r\\n\", ii, data);\n    }\n    return 0;\n}\n\n/**\n *  @brief      Read from a single register.\n *  NOTE: The memory and FIFO read/write registers cannot be accessed.\n *  @param[in]  reg     Register address.\n *  @param[out] data    Register data.\n *  @return     0 if successful.\n */\nint mpu_read_reg(unsigned char reg, unsigned char *data)\n{\n    if (reg == st.reg->fifo_r_w || reg == st.reg->mem_r_w)\n        return -1;\n    if (reg >= st.hw->num_reg)\n        return -1;\n    return i2c_read(st.hw->addr, reg, 1, data);\n}\n\n/**\n *  @brief      Initialize hardware.\n *  Initial configuration:\\n\n *  Gyro FSR: +/- 2000DPS\\n\n *  Accel FSR +/- 2G\\n\n *  DLPF: 42Hz\\n\n *  FIFO rate: 50Hz\\n\n *  Clock source: Gyro PLL\\n\n *  FIFO: Disabled.\\n\n *  Data ready interrupt: Disabled, active low, unlatched.\n *  @param[in]  int_param   Platform-specific parameters to interrupt API.\n *  @return     0 if successful.\n */\nint mpu_init(struct int_param_s *int_param)\n{\n    unsigned char data[6], rev;\n\n    /* Reset device. */\n    data[0] = BIT_RESET;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, data))\n        return -1;\n    delay_ms(100);\n\n    /* Wake up chip. */\n    data[0] = 0x00;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, data))\n        return -1;\n\n#if defined MPU6050\n    /* Check product revision. */\n    if (i2c_read(st.hw->addr, st.reg->accel_offs, 6, data))\n        return -1;\n    rev = ((data[5] & 0x01) << 2) | ((data[3] & 0x01) << 1) |\n        (data[1] & 0x01);\n\n    if (rev) {\n        /* Congrats, these parts are better. */\n        if (rev == 1)\n            st.chip_cfg.accel_half = 1;\n        else if (rev == 2)\n            st.chip_cfg.accel_half = 0;\n        else {\n            log_e(\"Unsupported software product rev %d.\\n\", rev);\n            return -1;\n        }\n    } else {\n        if (i2c_read(st.hw->addr, st.reg->prod_id, 1, data))\n            return -1;\n        rev = data[0] & 0x0F;\n        if (!rev) {\n            log_e(\"Product ID read as 0 indicates device is either \"\n                \"incompatible or an MPU3050.\\n\");\n            return -1;\n        } else if (rev == 4) {\n            log_i(\"Half sensitivity part found.\\n\");\n            st.chip_cfg.accel_half = 1;\n        } else\n            st.chip_cfg.accel_half = 0;\n    }\n#elif defined MPU6500\n#define MPU6500_MEM_REV_ADDR    (0x17)\n    if (mpu_read_mem(MPU6500_MEM_REV_ADDR, 1, &rev))\n        return -1;\n    if (rev == 0x1)\n        st.chip_cfg.accel_half = 0;\n    else {\n        log_e(\"Unsupported software product rev %d.\\n\", rev);\n        return -1;\n    }\n\n    /* MPU6500 shares 4kB of memory between the DMP and the FIFO. Since the\n     * first 3kB are needed by the DMP, we'll use the last 1kB for the FIFO.\n     */\n    data[0] = BIT_FIFO_SIZE_1024 | 0x8;\n    if (i2c_write(st.hw->addr, st.reg->accel_cfg2, 1, data))\n        return -1;\n#endif\n\n    /* Set to invalid values to ensure no I2C writes are skipped. */\n    st.chip_cfg.sensors = 0xFF;\n    st.chip_cfg.gyro_fsr = 0xFF;\n    st.chip_cfg.accel_fsr = 0xFF;\n    st.chip_cfg.lpf = 0xFF;\n    st.chip_cfg.sample_rate = 0xFFFF;\n    st.chip_cfg.fifo_enable = 0xFF;\n    st.chip_cfg.bypass_mode = 0xFF;\n#ifdef AK89xx_SECONDARY\n    st.chip_cfg.compass_sample_rate = 0xFFFF;\n#endif\n    /* mpu_set_sensors always preserves this setting. */\n    st.chip_cfg.clk_src = INV_CLK_PLL;\n    /* Handled in next call to mpu_set_bypass. */\n    st.chip_cfg.active_low_int = 1;\n    st.chip_cfg.latched_int = 0;\n    st.chip_cfg.int_motion_only = 0;\n    st.chip_cfg.lp_accel_mode = 0;\n    memset(&st.chip_cfg.cache, 0, sizeof(st.chip_cfg.cache));\n    st.chip_cfg.dmp_on = 0;\n    st.chip_cfg.dmp_loaded = 0;\n    st.chip_cfg.dmp_sample_rate = 0;\n\n    if (mpu_set_gyro_fsr(2000))\n        return -1;\n    if (mpu_set_accel_fsr(2))\n        return -1;\n    if (mpu_set_lpf(42))\n        return -1;\n    if (mpu_set_sample_rate(50))\n        return -1;\n    if (mpu_configure_fifo(0))\n        return -1;\n\n    if (int_param)\n        reg_int_cb(int_param);\n\n#ifdef AK89xx_SECONDARY\n    setup_compass();\n    if (mpu_set_compass_sample_rate(10))\n        return -1;\n#else\n    /* Already disabled by setup_compass. */\n    if (mpu_set_bypass(0))\n        return -1;\n#endif\n\n    mpu_set_sensors(0);\n    return 0;\n}\n\n/**\n *  @brief      Enter low-power accel-only mode.\n *  In low-power accel mode, the chip goes to sleep and only wakes up to sample\n *  the accelerometer at one of the following frequencies:\n *  \\n MPU6050: 1.25Hz, 5Hz, 20Hz, 40Hz\n *  \\n MPU6500: 1.25Hz, 2.5Hz, 5Hz, 10Hz, 20Hz, 40Hz, 80Hz, 160Hz, 320Hz, 640Hz\n *  \\n If the requested rate is not one listed above, the device will be set to\n *  the next highest rate. Requesting a rate above the maximum supported\n *  frequency will result in an error.\n *  \\n To select a fractional wake-up frequency, round down the value passed to\n *  @e rate.\n *  @param[in]  rate        Minimum sampling rate, or zero to disable LP\n *                          accel mode.\n *  @return     0 if successful.\n */\nint mpu_lp_accel_mode(unsigned char rate)\n{\n    unsigned char tmp[2];\n\n    if (rate > 40)\n        return -1;\n\n    if (!rate) {\n        mpu_set_int_latched(0);\n        tmp[0] = 0;\n        tmp[1] = BIT_STBY_XYZG;\n        if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 2, tmp))\n            return -1;\n        st.chip_cfg.lp_accel_mode = 0;\n        return 0;\n    }\n    /* For LP accel, we automatically configure the hardware to produce latched\n     * interrupts. In LP accel mode, the hardware cycles into sleep mode before\n     * it gets a chance to deassert the interrupt pin; therefore, we shift this\n     * responsibility over to the MCU.\n     *\n     * Any register read will clear the interrupt.\n     */\n    mpu_set_int_latched(1);\n#if defined MPU6050\n    tmp[0] = BIT_LPA_CYCLE;\n    if (rate == 1) {\n        tmp[1] = INV_LPA_1_25HZ;\n        mpu_set_lpf(5);\n    } else if (rate <= 5) {\n        tmp[1] = INV_LPA_5HZ;\n        mpu_set_lpf(5);\n    } else if (rate <= 20) {\n        tmp[1] = INV_LPA_20HZ;\n        mpu_set_lpf(10);\n    } else {\n        tmp[1] = INV_LPA_40HZ;\n        mpu_set_lpf(20);\n    }\n    tmp[1] = (tmp[1] << 6) | BIT_STBY_XYZG;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 2, tmp))\n        return -1;\n#elif defined MPU6500\n    /* Set wake frequency. */\n    if (rate == 1)\n        tmp[0] = INV_LPA_1_25HZ;\n    else if (rate == 2)\n        tmp[0] = INV_LPA_2_5HZ;\n    else if (rate <= 5)\n        tmp[0] = INV_LPA_5HZ;\n    else if (rate <= 10)\n        tmp[0] = INV_LPA_10HZ;\n    else if (rate <= 20)\n        tmp[0] = INV_LPA_20HZ;\n    else if (rate <= 40)\n        tmp[0] = INV_LPA_40HZ;\n    else if (rate <= 80)\n        tmp[0] = INV_LPA_80HZ;\n    else if (rate <= 160)\n        tmp[0] = INV_LPA_160HZ;\n    else if (rate <= 320)\n        tmp[0] = INV_LPA_320HZ;\n    else\n        tmp[0] = INV_LPA_640HZ;\n    if (i2c_write(st.hw->addr, st.reg->lp_accel_odr, 1, tmp))\n        return -1;\n    tmp[0] = BIT_LPA_CYCLE;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, tmp))\n        return -1;\n#endif\n    st.chip_cfg.sensors = INV_XYZ_ACCEL;\n    st.chip_cfg.clk_src = 0;\n    st.chip_cfg.lp_accel_mode = 1;\n    mpu_configure_fifo(0);\n\n    return 0;\n}\n\n/**\n *  @brief      Read raw gyro data directly from the registers.\n *  @param[out] data        Raw data in hardware units.\n *  @param[out] timestamp   Timestamp in milliseconds. Null if not needed.\n *  @return     0 if successful.\n */\nint mpu_get_gyro_reg(short *data, unsigned long *timestamp)\n{\n    unsigned char tmp[6];\n\n    if (!(st.chip_cfg.sensors & INV_XYZ_GYRO))\n        return -1;\n\n    if (i2c_read(st.hw->addr, st.reg->raw_gyro, 6, tmp))\n        return -1;\n    data[0] = (tmp[0] << 8) | tmp[1];\n    data[1] = (tmp[2] << 8) | tmp[3];\n    data[2] = (tmp[4] << 8) | tmp[5];\n    if (timestamp)\n        get_ms(timestamp);\n    return 0;\n}\n\n/**\n *  @brief      Read raw accel data directly from the registers.\n *  @param[out] data        Raw data in hardware units.\n *  @param[out] timestamp   Timestamp in milliseconds. Null if not needed.\n *  @return     0 if successful.\n */\nint mpu_get_accel_reg(short *data, unsigned long *timestamp)\n{\n    unsigned char tmp[6];\n\n    if (!(st.chip_cfg.sensors & INV_XYZ_ACCEL))\n        return -1;\n\n    if (i2c_read(st.hw->addr, st.reg->raw_accel, 6, tmp))\n        return -1;\n    data[0] = (tmp[0] << 8) | tmp[1];\n    data[1] = (tmp[2] << 8) | tmp[3];\n    data[2] = (tmp[4] << 8) | tmp[5];\n    if (timestamp)\n        get_ms(timestamp);\n    return 0;\n}\n\n/**\n *  @brief      Read temperature data directly from the registers.\n *  @param[out] data        Data in q16 format.\n *  @param[out] timestamp   Timestamp in milliseconds. Null if not needed.\n *  @return     0 if successful.\n */\nint mpu_get_temperature(long *data, unsigned long *timestamp)\n{\n    unsigned char tmp[2];\n    short raw;\n\n    if (!(st.chip_cfg.sensors))\n        return -1;\n\n    if (i2c_read(st.hw->addr, st.reg->temp, 2, tmp))\n        return -1;\n    raw = (tmp[0] << 8) | tmp[1];\n    if (timestamp)\n        get_ms(timestamp);\n\n    data[0] = (long)((35 + ((raw - (float)st.hw->temp_offset) / st.hw->temp_sens)) * 65536L);\n    return 0;\n}\n\n/**\n *  @brief      Push biases to the accel bias registers.\n *  This function expects biases relative to the current sensor output, and\n *  these biases will be added to the factory-supplied values.\n *  @param[in]  accel_bias  New biases.\n *  @return     0 if successful.\n */\nint mpu_set_accel_bias(const long *accel_bias)\n{\n    unsigned char data[6];\n    short accel_hw[3];\n    short got_accel[3];\n    short fg[3];\n\n    if (!accel_bias)\n        return -1;\n    if (!accel_bias[0] && !accel_bias[1] && !accel_bias[2])\n        return 0;\n\n    if (i2c_read(st.hw->addr, 3, 3, data))\n        return -1;\n    fg[0] = ((data[0] >> 4) + 8) & 0xf;\n    fg[1] = ((data[1] >> 4) + 8) & 0xf;\n    fg[2] = ((data[2] >> 4) + 8) & 0xf;\n\n    accel_hw[0] = (short)(accel_bias[0] * 2 / (64 + fg[0]));\n    accel_hw[1] = (short)(accel_bias[1] * 2 / (64 + fg[1]));\n    accel_hw[2] = (short)(accel_bias[2] * 2 / (64 + fg[2]));\n\n    if (i2c_read(st.hw->addr, 0x06, 6, data))\n        return -1;\n\n    got_accel[0] = ((short)data[0] << 8) | data[1];\n    got_accel[1] = ((short)data[2] << 8) | data[3];\n    got_accel[2] = ((short)data[4] << 8) | data[5];\n\n    accel_hw[0] += got_accel[0];\n    accel_hw[1] += got_accel[1];\n    accel_hw[2] += got_accel[2];\n\n    data[0] = (accel_hw[0] >> 8) & 0xff;\n    data[1] = (accel_hw[0]) & 0xff;\n    data[2] = (accel_hw[1] >> 8) & 0xff;\n    data[3] = (accel_hw[1]) & 0xff;\n    data[4] = (accel_hw[2] >> 8) & 0xff;\n    data[5] = (accel_hw[2]) & 0xff;\n\n    if (i2c_write(st.hw->addr, 0x06, 6, data))\n        return -1;\n    return 0;\n}\n\n/**\n *  @brief  Reset FIFO read/write pointers.\n *  @return 0 if successful.\n */\nint mpu_reset_fifo(void)\n{\n    unsigned char data;\n\n    if (!(st.chip_cfg.sensors))\n        return -1;\n\n    data = 0;\n    if (i2c_write(st.hw->addr, st.reg->int_enable, 1, &data))\n        return -1;\n    if (i2c_write(st.hw->addr, st.reg->fifo_en, 1, &data))\n        return -1;\n    if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &data))\n        return -1;\n\n    if (st.chip_cfg.dmp_on) {\n        data = BIT_FIFO_RST | BIT_DMP_RST;\n        if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &data))\n            return -1;\n        delay_ms(50);\n        data = BIT_DMP_EN | BIT_FIFO_EN;\n        if (st.chip_cfg.sensors & INV_XYZ_COMPASS)\n            data |= BIT_AUX_IF_EN;\n        if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &data))\n            return -1;\n        if (st.chip_cfg.int_enable)\n            data = BIT_DMP_INT_EN;\n        else\n            data = 0;\n        if (i2c_write(st.hw->addr, st.reg->int_enable, 1, &data))\n            return -1;\n        data = 0;\n        if (i2c_write(st.hw->addr, st.reg->fifo_en, 1, &data))\n            return -1;\n    } else {\n        data = BIT_FIFO_RST;\n        if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &data))\n            return -1;\n        if (st.chip_cfg.bypass_mode || !(st.chip_cfg.sensors & INV_XYZ_COMPASS))\n            data = BIT_FIFO_EN;\n        else\n            data = BIT_FIFO_EN | BIT_AUX_IF_EN;\n        if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &data))\n            return -1;\n        delay_ms(50);\n        if (st.chip_cfg.int_enable)\n            data = BIT_DATA_RDY_EN;\n        else\n            data = 0;\n        if (i2c_write(st.hw->addr, st.reg->int_enable, 1, &data))\n            return -1;\n        if (i2c_write(st.hw->addr, st.reg->fifo_en, 1, &st.chip_cfg.fifo_enable))\n            return -1;\n    }\n    return 0;\n}\n\n/**\n *  @brief      Get the gyro full-scale range.\n *  @param[out] fsr Current full-scale range.\n *  @return     0 if successful.\n */\nint mpu_get_gyro_fsr(unsigned short *fsr)\n{\n    switch (st.chip_cfg.gyro_fsr) {\n    case INV_FSR_250DPS:\n        fsr[0] = 250;\n        break;\n    case INV_FSR_500DPS:\n        fsr[0] = 500;\n        break;\n    case INV_FSR_1000DPS:\n        fsr[0] = 1000;\n        break;\n    case INV_FSR_2000DPS:\n        fsr[0] = 2000;\n        break;\n    default:\n        fsr[0] = 0;\n        break;\n    }\n    return 0;\n}\n\n/**\n *  @brief      Set the gyro full-scale range.\n *  @param[in]  fsr Desired full-scale range.\n *  @return     0 if successful.\n */\nint mpu_set_gyro_fsr(unsigned short fsr)\n{\n    unsigned char data;\n\n    if (!(st.chip_cfg.sensors))\n        return -1;\n\n    switch (fsr) {\n    case 250:\n        data = INV_FSR_250DPS << 3;\n        break;\n    case 500:\n        data = INV_FSR_500DPS << 3;\n        break;\n    case 1000:\n        data = INV_FSR_1000DPS << 3;\n        break;\n    case 2000:\n        data = INV_FSR_2000DPS << 3;\n        break;\n    default:\n        return -1;\n    }\n\n    if (st.chip_cfg.gyro_fsr == (data >> 3))\n        return 0;\n    if (i2c_write(st.hw->addr, st.reg->gyro_cfg, 1, &data))\n        return -1;\n    st.chip_cfg.gyro_fsr = data >> 3;\n    return 0;\n}\n\n/**\n *  @brief      Get the accel full-scale range.\n *  @param[out] fsr Current full-scale range.\n *  @return     0 if successful.\n */\nint mpu_get_accel_fsr(unsigned char *fsr)\n{\n    switch (st.chip_cfg.accel_fsr) {\n    case INV_FSR_2G:\n        fsr[0] = 2;\n        break;\n    case INV_FSR_4G:\n        fsr[0] = 4;\n        break;\n    case INV_FSR_8G:\n        fsr[0] = 8;\n        break;\n    case INV_FSR_16G:\n        fsr[0] = 16;\n        break;\n    default:\n        return -1;\n    }\n    if (st.chip_cfg.accel_half)\n        fsr[0] <<= 1;\n    return 0;\n}\n\n/**\n *  @brief      Set the accel full-scale range.\n *  @param[in]  fsr Desired full-scale range.\n *  @return     0 if successful.\n */\nint mpu_set_accel_fsr(unsigned char fsr)\n{\n    unsigned char data;\n\n    if (!(st.chip_cfg.sensors))\n        return -1;\n\n    switch (fsr) {\n    case 2:\n        data = INV_FSR_2G << 3;\n        break;\n    case 4:\n        data = INV_FSR_4G << 3;\n        break;\n    case 8:\n        data = INV_FSR_8G << 3;\n        break;\n    case 16:\n        data = INV_FSR_16G << 3;\n        break;\n    default:\n        return -1;\n    }\n\n    if (st.chip_cfg.accel_fsr == (data >> 3))\n        return 0;\n    if (i2c_write(st.hw->addr, st.reg->accel_cfg, 1, &data))\n        return -1;\n    st.chip_cfg.accel_fsr = data >> 3;\n    return 0;\n}\n\n/**\n *  @brief      Get the current DLPF setting.\n *  @param[out] lpf Current LPF setting.\n *  0 if successful.\n */\nint mpu_get_lpf(unsigned short *lpf)\n{\n    switch (st.chip_cfg.lpf) {\n    case INV_FILTER_188HZ:\n        lpf[0] = 188;\n        break;\n    case INV_FILTER_98HZ:\n        lpf[0] = 98;\n        break;\n    case INV_FILTER_42HZ:\n        lpf[0] = 42;\n        break;\n    case INV_FILTER_20HZ:\n        lpf[0] = 20;\n        break;\n    case INV_FILTER_10HZ:\n        lpf[0] = 10;\n        break;\n    case INV_FILTER_5HZ:\n        lpf[0] = 5;\n        break;\n    case INV_FILTER_256HZ_NOLPF2:\n    case INV_FILTER_2100HZ_NOLPF:\n    default:\n        lpf[0] = 0;\n        break;\n    }\n    return 0;\n}\n\n/**\n *  @brief      Set digital low pass filter.\n *  The following LPF settings are supported: 188, 98, 42, 20, 10, 5.\n *  @param[in]  lpf Desired LPF setting.\n *  @return     0 if successful.\n */\nint mpu_set_lpf(unsigned short lpf)\n{\n    unsigned char data;\n\n    if (!(st.chip_cfg.sensors))\n        return -1;\n\n    if (lpf >= 188)\n        data = INV_FILTER_188HZ;\n    else if (lpf >= 98)\n        data = INV_FILTER_98HZ;\n    else if (lpf >= 42)\n        data = INV_FILTER_42HZ;\n    else if (lpf >= 20)\n        data = INV_FILTER_20HZ;\n    else if (lpf >= 10)\n        data = INV_FILTER_10HZ;\n    else\n        data = INV_FILTER_5HZ;\n\n    if (st.chip_cfg.lpf == data)\n        return 0;\n    if (i2c_write(st.hw->addr, st.reg->lpf, 1, &data))\n        return -1;\n    st.chip_cfg.lpf = data;\n    return 0;\n}\n\n/**\n *  @brief      Get sampling rate.\n *  @param[out] rate    Current sampling rate (Hz).\n *  @return     0 if successful.\n */\nint mpu_get_sample_rate(unsigned short *rate)\n{\n    if (st.chip_cfg.dmp_on)\n        return -1;\n    else\n        rate[0] = st.chip_cfg.sample_rate;\n    return 0;\n}\n\n/**\n *  @brief      Set sampling rate.\n *  Sampling rate must be between 4Hz and 1kHz.\n *  @param[in]  rate    Desired sampling rate (Hz).\n *  @return     0 if successful.\n */\nint mpu_set_sample_rate(unsigned short rate)\n{\n    unsigned char data;\n\n    if (!(st.chip_cfg.sensors))\n        return -1;\n\n    if (st.chip_cfg.dmp_on)\n        return -1;\n    else {\n        if (st.chip_cfg.lp_accel_mode) {\n            if (rate && (rate <= 40)) {\n                /* Just stay in low-power accel mode. */\n                mpu_lp_accel_mode(rate);\n                return 0;\n            }\n            /* Requested rate exceeds the allowed frequencies in LP accel mode,\n             * switch back to full-power mode.\n             */\n            mpu_lp_accel_mode(0);\n        }\n        if (rate < 4)\n            rate = 4;\n        else if (rate > 1000)\n            rate = 1000;\n\n        data = 1000 / rate - 1;\n        if (i2c_write(st.hw->addr, st.reg->rate_div, 1, &data))\n            return -1;\n\n        st.chip_cfg.sample_rate = 1000 / (1 + data);\n\n#ifdef AK89xx_SECONDARY\n        mpu_set_compass_sample_rate(min(st.chip_cfg.compass_sample_rate, MAX_COMPASS_SAMPLE_RATE));\n#endif\n\n        /* Automatically set LPF to 1/2 sampling rate. */\n        mpu_set_lpf(st.chip_cfg.sample_rate >> 1);\n        return 0;\n    }\n}\n\n/**\n *  @brief      Get compass sampling rate.\n *  @param[out] rate    Current compass sampling rate (Hz).\n *  @return     0 if successful.\n */\nint mpu_get_compass_sample_rate(unsigned short *rate)\n{\n#ifdef AK89xx_SECONDARY\n    rate[0] = st.chip_cfg.compass_sample_rate;\n    return 0;\n#else\n    rate[0] = 0;\n    return -1;\n#endif\n}\n\n/**\n *  @brief      Set compass sampling rate.\n *  The compass on the auxiliary I2C bus is read by the MPU hardware at a\n *  maximum of 100Hz. The actual rate can be set to a fraction of the gyro\n *  sampling rate.\n *\n *  \\n WARNING: The new rate may be different than what was requested. Call\n *  mpu_get_compass_sample_rate to check the actual setting.\n *  @param[in]  rate    Desired compass sampling rate (Hz).\n *  @return     0 if successful.\n */\nint mpu_set_compass_sample_rate(unsigned short rate)\n{\n#ifdef AK89xx_SECONDARY\n    unsigned char div;\n    if (!rate || rate > st.chip_cfg.sample_rate || rate > MAX_COMPASS_SAMPLE_RATE)\n        return -1;\n\n    div = st.chip_cfg.sample_rate / rate - 1;\n    if (i2c_write(st.hw->addr, st.reg->s4_ctrl, 1, &div))\n        return -1;\n    st.chip_cfg.compass_sample_rate = st.chip_cfg.sample_rate / (div + 1);\n    return 0;\n#else\n    return -1;\n#endif\n}\n\n/**\n *  @brief      Get gyro sensitivity scale factor.\n *  @param[out] sens    Conversion from hardware units to dps.\n *  @return     0 if successful.\n */\nint mpu_get_gyro_sens(float *sens)\n{\n    switch (st.chip_cfg.gyro_fsr) {\n    case INV_FSR_250DPS:\n        sens[0] = 131.f;\n        break;\n    case INV_FSR_500DPS:\n        sens[0] = 65.5f;\n        break;\n    case INV_FSR_1000DPS:\n        sens[0] = 32.8f;\n        break;\n    case INV_FSR_2000DPS:\n        sens[0] = 16.4f;\n        break;\n    default:\n        return -1;\n    }\n    return 0;\n}\n\n/**\n *  @brief      Get accel sensitivity scale factor.\n *  @param[out] sens    Conversion from hardware units to g's.\n *  @return     0 if successful.\n */\nint mpu_get_accel_sens(unsigned short *sens)\n{\n    switch (st.chip_cfg.accel_fsr) {\n    case INV_FSR_2G:\n        sens[0] = 16384;\n        break;\n    case INV_FSR_4G:\n        sens[0] = 8092;\n        break;\n    case INV_FSR_8G:\n        sens[0] = 4096;\n        break;\n    case INV_FSR_16G:\n        sens[0] = 2048;\n        break;\n    default:\n        return -1;\n    }\n    if (st.chip_cfg.accel_half)\n        sens[0] >>= 1;\n    return 0;\n}\n\n/**\n *  @brief      Get current FIFO configuration.\n *  @e sensors can contain a combination of the following flags:\n *  \\n INV_X_GYRO, INV_Y_GYRO, INV_Z_GYRO\n *  \\n INV_XYZ_GYRO\n *  \\n INV_XYZ_ACCEL\n *  @param[out] sensors Mask of sensors in FIFO.\n *  @return     0 if successful.\n */\nint mpu_get_fifo_config(unsigned char *sensors)\n{\n    sensors[0] = st.chip_cfg.fifo_enable;\n    return 0;\n}\n\n/**\n *  @brief      Select which sensors are pushed to FIFO.\n *  @e sensors can contain a combination of the following flags:\n *  \\n INV_X_GYRO, INV_Y_GYRO, INV_Z_GYRO\n *  \\n INV_XYZ_GYRO\n *  \\n INV_XYZ_ACCEL\n *  @param[in]  sensors Mask of sensors to push to FIFO.\n *  @return     0 if successful.\n */\nint mpu_configure_fifo(unsigned char sensors)\n{\n    unsigned char prev;\n    int result = 0;\n\n    /* Compass data isn't going into the FIFO. Stop trying. */\n    sensors &= ~INV_XYZ_COMPASS;\n\n    if (st.chip_cfg.dmp_on)\n        return 0;\n    else {\n        if (!(st.chip_cfg.sensors))\n            return -1;\n        prev = st.chip_cfg.fifo_enable;\n        st.chip_cfg.fifo_enable = sensors & st.chip_cfg.sensors;\n        if (st.chip_cfg.fifo_enable != sensors)\n            /* You're not getting what you asked for. Some sensors are\n             * asleep.\n             */\n            result = -1;\n        else\n            result = 0;\n        if (sensors || st.chip_cfg.lp_accel_mode)\n            set_int_enable(1);\n        else\n            set_int_enable(0);\n        if (sensors) {\n            if (mpu_reset_fifo()) {\n                st.chip_cfg.fifo_enable = prev;\n                return -1;\n            }\n        }\n    }\n\n    return result;\n}\n\n/**\n *  @brief      Get current power state.\n *  @param[in]  power_on    1 if turned on, 0 if suspended.\n *  @return     0 if successful.\n */\nint mpu_get_power_state(unsigned char *power_on)\n{\n    if (st.chip_cfg.sensors)\n        power_on[0] = 1;\n    else\n        power_on[0] = 0;\n    return 0;\n}\n\n/**\n *  @brief      Turn specific sensors on/off.\n *  @e sensors can contain a combination of the following flags:\n *  \\n INV_X_GYRO, INV_Y_GYRO, INV_Z_GYRO\n *  \\n INV_XYZ_GYRO\n *  \\n INV_XYZ_ACCEL\n *  \\n INV_XYZ_COMPASS\n *  @param[in]  sensors    Mask of sensors to wake.\n *  @return     0 if successful.\n */\nint mpu_set_sensors(unsigned char sensors)\n{\n    unsigned char data;\n#ifdef AK89xx_SECONDARY\n    unsigned char user_ctrl;\n#endif\n\n    if (sensors & INV_XYZ_GYRO)\n        data = INV_CLK_PLL;\n    else if (sensors)\n        data = 0;\n    else\n        data = BIT_SLEEP;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, &data)) {\n        st.chip_cfg.sensors = 0;\n        return -1;\n    }\n    st.chip_cfg.clk_src = data & ~BIT_SLEEP;\n\n    data = 0;\n    if (!(sensors & INV_X_GYRO))\n        data |= BIT_STBY_XG;\n    if (!(sensors & INV_Y_GYRO))\n        data |= BIT_STBY_YG;\n    if (!(sensors & INV_Z_GYRO))\n        data |= BIT_STBY_ZG;\n    if (!(sensors & INV_XYZ_ACCEL))\n        data |= BIT_STBY_XYZA;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_2, 1, &data)) {\n        st.chip_cfg.sensors = 0;\n        return -1;\n    }\n\n    if (sensors && (sensors != INV_XYZ_ACCEL))\n        /* Latched interrupts only used in LP accel mode. */\n        mpu_set_int_latched(0);\n\n#ifdef AK89xx_SECONDARY\n#ifdef AK89xx_BYPASS\n    if (sensors & INV_XYZ_COMPASS)\n        mpu_set_bypass(1);\n    else\n        mpu_set_bypass(0);\n#else\n    if (i2c_read(st.hw->addr, st.reg->user_ctrl, 1, &user_ctrl))\n        return -1;\n    /* Handle AKM power management. */\n    if (sensors & INV_XYZ_COMPASS) {\n        data = AKM_SINGLE_MEASUREMENT;\n        user_ctrl |= BIT_AUX_IF_EN;\n    } else {\n        data = AKM_POWER_DOWN;\n        user_ctrl &= ~BIT_AUX_IF_EN;\n    }\n    if (st.chip_cfg.dmp_on)\n        user_ctrl |= BIT_DMP_EN;\n    else\n        user_ctrl &= ~BIT_DMP_EN;\n    if (i2c_write(st.hw->addr, st.reg->s1_do, 1, &data))\n        return -1;\n    /* Enable/disable I2C master mode. */\n    if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &user_ctrl))\n        return -1;\n#endif\n#endif\n\n    st.chip_cfg.sensors = sensors;\n    st.chip_cfg.lp_accel_mode = 0;\n    delay_ms(50);\n    return 0;\n}\n\n/**\n *  @brief      Read the MPU interrupt status registers.\n *  @param[out] status  Mask of interrupt bits.\n *  @return     0 if successful.\n */\nint mpu_get_int_status(short *status)\n{\n    unsigned char tmp[2];\n    if (!st.chip_cfg.sensors)\n        return -1;\n    if (i2c_read(st.hw->addr, st.reg->dmp_int_status, 2, tmp))\n        return -1;\n    status[0] = (tmp[0] << 8) | tmp[1];\n    return 0;\n}\n\n/**\n *  @brief      Get one packet from the FIFO.\n *  If @e sensors does not contain a particular sensor, disregard the data\n *  returned to that pointer.\n *  \\n @e sensors can contain a combination of the following flags:\n *  \\n INV_X_GYRO, INV_Y_GYRO, INV_Z_GYRO\n *  \\n INV_XYZ_GYRO\n *  \\n INV_XYZ_ACCEL\n *  \\n If the FIFO has no new data, @e sensors will be zero.\n *  \\n If the FIFO is disabled, @e sensors will be zero and this function will\n *  return a non-zero error code.\n *  @param[out] gyro        Gyro data in hardware units.\n *  @param[out] accel       Accel data in hardware units.\n *  @param[out] timestamp   Timestamp in milliseconds.\n *  @param[out] sensors     Mask of sensors read from FIFO.\n *  @param[out] more        Number of remaining packets.\n *  @return     0 if successful.\n */\nint mpu_read_fifo(short *gyro, short *accel, unsigned long *timestamp,\n        unsigned char *sensors, unsigned char *more)\n{\n    /* Assumes maximum packet size is gyro (6) + accel (6). */\n    unsigned char data[MAX_PACKET_LENGTH];\n    unsigned char packet_size = 0;\n    unsigned short fifo_count, index = 0;\n\n    if (st.chip_cfg.dmp_on)\n        return -1;\n\n    sensors[0] = 0;\n    if (!st.chip_cfg.sensors)\n        return -1;\n    if (!st.chip_cfg.fifo_enable)\n        return -1;\n\n    if (st.chip_cfg.fifo_enable & INV_X_GYRO)\n        packet_size += 2;\n    if (st.chip_cfg.fifo_enable & INV_Y_GYRO)\n        packet_size += 2;\n    if (st.chip_cfg.fifo_enable & INV_Z_GYRO)\n        packet_size += 2;\n    if (st.chip_cfg.fifo_enable & INV_XYZ_ACCEL)\n        packet_size += 6;\n\n    if (i2c_read(st.hw->addr, st.reg->fifo_count_h, 2, data))\n        return -1;\n    fifo_count = (data[0] << 8) | data[1];\n    if (fifo_count < packet_size)\n        return 0;\n//    log_i(\"FIFO count: %hd\\n\", fifo_count);\n    if (fifo_count > (st.hw->max_fifo >> 1)) {\n        /* FIFO is 50% full, better check overflow bit. */\n        if (i2c_read(st.hw->addr, st.reg->int_status, 1, data))\n            return -1;\n        if (data[0] & BIT_FIFO_OVERFLOW) {\n            mpu_reset_fifo();\n            return -2;\n        }\n    }\n    get_ms((unsigned long*)timestamp);\n\n    if (i2c_read(st.hw->addr, st.reg->fifo_r_w, packet_size, data))\n        return -1;\n    more[0] = fifo_count / packet_size - 1;\n    sensors[0] = 0;\n\n    if ((index != packet_size) && st.chip_cfg.fifo_enable & INV_XYZ_ACCEL) {\n        accel[0] = (data[index+0] << 8) | data[index+1];\n        accel[1] = (data[index+2] << 8) | data[index+3];\n        accel[2] = (data[index+4] << 8) | data[index+5];\n        sensors[0] |= INV_XYZ_ACCEL;\n        index += 6;\n    }\n    if ((index != packet_size) && st.chip_cfg.fifo_enable & INV_X_GYRO) {\n        gyro[0] = (data[index+0] << 8) | data[index+1];\n        sensors[0] |= INV_X_GYRO;\n        index += 2;\n    }\n    if ((index != packet_size) && st.chip_cfg.fifo_enable & INV_Y_GYRO) {\n        gyro[1] = (data[index+0] << 8) | data[index+1];\n        sensors[0] |= INV_Y_GYRO;\n        index += 2;\n    }\n    if ((index != packet_size) && st.chip_cfg.fifo_enable & INV_Z_GYRO) {\n        gyro[2] = (data[index+0] << 8) | data[index+1];\n        sensors[0] |= INV_Z_GYRO;\n        index += 2;\n    }\n\n    return 0;\n}\n\n/**\n *  @brief      Get one unparsed packet from the FIFO.\n *  This function should be used if the packet is to be parsed elsewhere.\n *  @param[in]  length  Length of one FIFO packet.\n *  @param[in]  data    FIFO packet.\n *  @param[in]  more    Number of remaining packets.\n */\nint mpu_read_fifo_stream(unsigned short length, unsigned char *data,\n    unsigned char *more)\n{\n    unsigned char tmp[2];\n    unsigned short fifo_count;\n    if (!st.chip_cfg.dmp_on)\n        return -1;\n    if (!st.chip_cfg.sensors)\n        return -1;\n\n    if (i2c_read(st.hw->addr, st.reg->fifo_count_h, 2, tmp))\n        return -1;\n    fifo_count = (tmp[0] << 8) | tmp[1];\n    if (fifo_count < length) {\n        more[0] = 0;\n        return -1;\n    }\n    if (fifo_count > (st.hw->max_fifo >> 1)) {\n        /* FIFO is 50% full, better check overflow bit. */\n        if (i2c_read(st.hw->addr, st.reg->int_status, 1, tmp))\n            return -1;\n        if (tmp[0] & BIT_FIFO_OVERFLOW) {\n            mpu_reset_fifo();\n            return -2;\n        }\n    }\n\n    if (i2c_read(st.hw->addr, st.reg->fifo_r_w, length, data))\n        return -1;\n    more[0] = fifo_count / length - 1;\n    return 0;\n}\n\n/**\n *  @brief      Set device to bypass mode.\n *  @param[in]  bypass_on   1 to enable bypass mode.\n *  @return     0 if successful.\n */\nint mpu_set_bypass(unsigned char bypass_on)\n{\n    unsigned char tmp;\n\n    if (st.chip_cfg.bypass_mode == bypass_on)\n        return 0;\n\n    if (bypass_on) {\n        if (i2c_read(st.hw->addr, st.reg->user_ctrl, 1, &tmp))\n            return -1;\n        tmp &= ~BIT_AUX_IF_EN;\n        if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &tmp))\n            return -1;\n        delay_ms(3);\n        tmp = BIT_BYPASS_EN;\n        if (st.chip_cfg.active_low_int)\n            tmp |= BIT_ACTL;\n        if (st.chip_cfg.latched_int)\n            tmp |= BIT_LATCH_EN | BIT_ANY_RD_CLR;\n        if (i2c_write(st.hw->addr, st.reg->int_pin_cfg, 1, &tmp))\n            return -1;\n    } else {\n        /* Enable I2C master mode if compass is being used. */\n        if (i2c_read(st.hw->addr, st.reg->user_ctrl, 1, &tmp))\n            return -1;\n        if (st.chip_cfg.sensors & INV_XYZ_COMPASS)\n            tmp |= BIT_AUX_IF_EN;\n        else\n            tmp &= ~BIT_AUX_IF_EN;\n        if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, &tmp))\n            return -1;\n        delay_ms(3);\n        if (st.chip_cfg.active_low_int)\n            tmp = BIT_ACTL;\n        else\n            tmp = 0;\n        if (st.chip_cfg.latched_int)\n            tmp |= BIT_LATCH_EN | BIT_ANY_RD_CLR;\n        if (i2c_write(st.hw->addr, st.reg->int_pin_cfg, 1, &tmp))\n            return -1;\n    }\n    st.chip_cfg.bypass_mode = bypass_on;\n    return 0;\n}\n\n/**\n *  @brief      Set interrupt level.\n *  @param[in]  active_low  1 for active low, 0 for active high.\n *  @return     0 if successful.\n */\nint mpu_set_int_level(unsigned char active_low)\n{\n    st.chip_cfg.active_low_int = active_low;\n    return 0;\n}\n\n/**\n *  @brief      Enable latched interrupts.\n *  Any MPU register will clear the interrupt.\n *  @param[in]  enable  1 to enable, 0 to disable.\n *  @return     0 if successful.\n */\nint mpu_set_int_latched(unsigned char enable)\n{\n    unsigned char tmp;\n    if (st.chip_cfg.latched_int == enable)\n        return 0;\n\n    if (enable)\n        tmp = BIT_LATCH_EN | BIT_ANY_RD_CLR;\n    else\n        tmp = 0;\n    if (st.chip_cfg.bypass_mode)\n        tmp |= BIT_BYPASS_EN;\n    if (st.chip_cfg.active_low_int)\n        tmp |= BIT_ACTL;\n    if (i2c_write(st.hw->addr, st.reg->int_pin_cfg, 1, &tmp))\n        return -1;\n    st.chip_cfg.latched_int = enable;\n    return 0;\n}\n\n#ifdef MPU6050\nstatic int get_accel_prod_shift(float *st_shift)\n{\n    unsigned char tmp[4], shift_code[3], ii;\n\n    if (i2c_read(st.hw->addr, 0x0D, 4, tmp))\n        return 0x07;\n\n    shift_code[0] = ((tmp[0] & 0xE0) >> 3) | ((tmp[3] & 0x30) >> 4);\n    shift_code[1] = ((tmp[1] & 0xE0) >> 3) | ((tmp[3] & 0x0C) >> 2);\n    shift_code[2] = ((tmp[2] & 0xE0) >> 3) | (tmp[3] & 0x03);\n    for (ii = 0; ii < 3; ii++) {\n        if (!shift_code[ii]) {\n            st_shift[ii] = 0.f;\n            continue;\n        }\n        /* Equivalent to..\n         * st_shift[ii] = 0.34f * powf(0.92f/0.34f, (shift_code[ii]-1) / 30.f)\n         */\n        st_shift[ii] = 0.34f;\n        while (--shift_code[ii])\n            st_shift[ii] *= 1.034f;\n    }\n    return 0;\n}\n\nstatic int accel_self_test(long *bias_regular, long *bias_st)\n{\n    int jj, result = 0;\n    float st_shift[3], st_shift_cust, st_shift_var;\n\n    get_accel_prod_shift(st_shift);\n    for(jj = 0; jj < 3; jj++) {\n        st_shift_cust = labs(bias_regular[jj] - bias_st[jj]) / 65536.f;\n        if (st_shift[jj]) {\n            st_shift_var = st_shift_cust / st_shift[jj] - 1.f;\n            if (fabs(st_shift_var) > test.max_accel_var)\n                result |= 1 << jj;\n        } else if ((st_shift_cust < test.min_g) ||\n            (st_shift_cust > test.max_g))\n            result |= 1 << jj;\n    }\n\n    return result;\n}\n\nstatic int gyro_self_test(long *bias_regular, long *bias_st)\n{\n    int jj, result = 0;\n    unsigned char tmp[3];\n    float st_shift, st_shift_cust, st_shift_var;\n\n    if (i2c_read(st.hw->addr, 0x0D, 3, tmp))\n        return 0x07;\n\n    tmp[0] &= 0x1F;\n    tmp[1] &= 0x1F;\n    tmp[2] &= 0x1F;\n\n    for (jj = 0; jj < 3; jj++) {\n        st_shift_cust = labs(bias_regular[jj] - bias_st[jj]) / 65536.f;\n        if (tmp[jj]) {\n            st_shift = 3275.f / test.gyro_sens;\n            while (--tmp[jj])\n                st_shift *= 1.046f;\n            st_shift_var = st_shift_cust / st_shift - 1.f;\n            if (fabs(st_shift_var) > test.max_gyro_var)\n                result |= 1 << jj;\n        } else if ((st_shift_cust < test.min_dps) ||\n            (st_shift_cust > test.max_dps))\n            result |= 1 << jj;\n    }\n    return result;\n}\n\n#ifdef AK89xx_SECONDARY\nstatic int compass_self_test(void)\n{\n    unsigned char tmp[6];\n    unsigned char tries = 10;\n    int result = 0x07;\n    short data;\n\n    mpu_set_bypass(1);\n\n    tmp[0] = AKM_POWER_DOWN;\n    if (i2c_write(st.chip_cfg.compass_addr, AKM_REG_CNTL, 1, tmp))\n        return 0x07;\n    tmp[0] = AKM_BIT_SELF_TEST;\n    if (i2c_write(st.chip_cfg.compass_addr, AKM_REG_ASTC, 1, tmp))\n        goto AKM_restore;\n    tmp[0] = AKM_MODE_SELF_TEST;\n    if (i2c_write(st.chip_cfg.compass_addr, AKM_REG_CNTL, 1, tmp))\n        goto AKM_restore;\n\n    do {\n        delay_ms(10);\n        if (i2c_read(st.chip_cfg.compass_addr, AKM_REG_ST1, 1, tmp))\n            goto AKM_restore;\n        if (tmp[0] & AKM_DATA_READY)\n            break;\n    } while (tries--);\n    if (!(tmp[0] & AKM_DATA_READY))\n        goto AKM_restore;\n\n    if (i2c_read(st.chip_cfg.compass_addr, AKM_REG_HXL, 6, tmp))\n        goto AKM_restore;\n\n    result = 0;\n    data = (short)(tmp[1] << 8) | tmp[0];\n    if ((data > 100) || (data < -100))\n        result |= 0x01;\n    data = (short)(tmp[3] << 8) | tmp[2];\n    if ((data > 100) || (data < -100))\n        result |= 0x02;\n    data = (short)(tmp[5] << 8) | tmp[4];\n    if ((data > -300) || (data < -1000))\n        result |= 0x04;\n\nAKM_restore:\n    tmp[0] = 0 | SUPPORTS_AK89xx_HIGH_SENS;\n    i2c_write(st.chip_cfg.compass_addr, AKM_REG_ASTC, 1, tmp);\n    tmp[0] = SUPPORTS_AK89xx_HIGH_SENS;\n    i2c_write(st.chip_cfg.compass_addr, AKM_REG_CNTL, 1, tmp);\n    mpu_set_bypass(0);\n    return result;\n}\n#endif\n#endif\n\nstatic int get_st_biases(long *gyro, long *accel, unsigned char hw_test)\n{\n    unsigned char data[MAX_PACKET_LENGTH];\n    unsigned char packet_count, ii;\n    unsigned short fifo_count;\n\n    data[0] = 0x01;\n    data[1] = 0;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 2, data))\n        return -1;\n    delay_ms(200);\n    data[0] = 0;\n    if (i2c_write(st.hw->addr, st.reg->int_enable, 1, data))\n        return -1;\n    if (i2c_write(st.hw->addr, st.reg->fifo_en, 1, data))\n        return -1;\n    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, data))\n        return -1;\n    if (i2c_write(st.hw->addr, st.reg->i2c_mst, 1, data))\n        return -1;\n    if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, data))\n        return -1;\n    data[0] = BIT_FIFO_RST | BIT_DMP_RST;\n    if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, data))\n        return -1;\n    delay_ms(15);\n    data[0] = st.test->reg_lpf;\n    if (i2c_write(st.hw->addr, st.reg->lpf, 1, data))\n        return -1;\n    data[0] = st.test->reg_rate_div;\n    if (i2c_write(st.hw->addr, st.reg->rate_div, 1, data))\n        return -1;\n    if (hw_test)\n        data[0] = st.test->reg_gyro_fsr | 0xE0;\n    else\n        data[0] = st.test->reg_gyro_fsr;\n    if (i2c_write(st.hw->addr, st.reg->gyro_cfg, 1, data))\n        return -1;\n\n    if (hw_test)\n        data[0] = st.test->reg_accel_fsr | 0xE0;\n    else\n        data[0] = test.reg_accel_fsr;\n    if (i2c_write(st.hw->addr, st.reg->accel_cfg, 1, data))\n        return -1;\n    if (hw_test)\n        delay_ms(200);\n\n    /* Fill FIFO for test.wait_ms milliseconds. */\n    data[0] = BIT_FIFO_EN;\n    if (i2c_write(st.hw->addr, st.reg->user_ctrl, 1, data))\n        return -1;\n\n    data[0] = INV_XYZ_GYRO | INV_XYZ_ACCEL;\n    if (i2c_write(st.hw->addr, st.reg->fifo_en, 1, data))\n        return -1;\n    delay_ms(test.wait_ms);\n    data[0] = 0;\n    if (i2c_write(st.hw->addr, st.reg->fifo_en, 1, data))\n        return -1;\n\n    if (i2c_read(st.hw->addr, st.reg->fifo_count_h, 2, data))\n        return -1;\n\n    fifo_count = (data[0] << 8) | data[1];\n    packet_count = fifo_count / MAX_PACKET_LENGTH;\n    gyro[0] = gyro[1] = gyro[2] = 0;\n    accel[0] = accel[1] = accel[2] = 0;\n\n    for (ii = 0; ii < packet_count; ii++) {\n        short accel_cur[3], gyro_cur[3];\n        if (i2c_read(st.hw->addr, st.reg->fifo_r_w, MAX_PACKET_LENGTH, data))\n            return -1;\n        accel_cur[0] = ((short)data[0] << 8) | data[1];\n        accel_cur[1] = ((short)data[2] << 8) | data[3];\n        accel_cur[2] = ((short)data[4] << 8) | data[5];\n        accel[0] += (long)accel_cur[0];\n        accel[1] += (long)accel_cur[1];\n        accel[2] += (long)accel_cur[2];\n        gyro_cur[0] = (((short)data[6] << 8) | data[7]);\n        gyro_cur[1] = (((short)data[8] << 8) | data[9]);\n        gyro_cur[2] = (((short)data[10] << 8) | data[11]);\n        gyro[0] += (long)gyro_cur[0];\n        gyro[1] += (long)gyro_cur[1];\n        gyro[2] += (long)gyro_cur[2];\n    }\n#ifdef EMPL_NO_64BIT\n    gyro[0] = (long)(((float)gyro[0]*65536.f) / test.gyro_sens / packet_count);\n    gyro[1] = (long)(((float)gyro[1]*65536.f) / test.gyro_sens / packet_count);\n    gyro[2] = (long)(((float)gyro[2]*65536.f) / test.gyro_sens / packet_count);\n    if (has_accel) {\n        accel[0] = (long)(((float)accel[0]*65536.f) / test.accel_sens /\n            packet_count);\n        accel[1] = (long)(((float)accel[1]*65536.f) / test.accel_sens /\n            packet_count);\n        accel[2] = (long)(((float)accel[2]*65536.f) / test.accel_sens /\n            packet_count);\n        /* Don't remove gravity! */\n        accel[2] -= 65536L;\n    }\n#else\n    gyro[0] = (long)(((long long)gyro[0]<<16) / test.gyro_sens / packet_count);\n    gyro[1] = (long)(((long long)gyro[1]<<16) / test.gyro_sens / packet_count);\n    gyro[2] = (long)(((long long)gyro[2]<<16) / test.gyro_sens / packet_count);\n    accel[0] = (long)(((long long)accel[0]<<16) / test.accel_sens /\n        packet_count);\n    accel[1] = (long)(((long long)accel[1]<<16) / test.accel_sens /\n        packet_count);\n    accel[2] = (long)(((long long)accel[2]<<16) / test.accel_sens /\n        packet_count);\n    /* Don't remove gravity! */\n    if (accel[2] > 0L)\n        accel[2] -= 65536L;\n    else\n        accel[2] += 65536L;\n#endif\n\n    return 0;\n}\n\n/**\n *  @brief      Trigger gyro/accel/compass self-test.\n *  On success/error, the self-test returns a mask representing the sensor(s)\n *  that failed. For each bit, a one (1) represents a \"pass\" case; conversely,\n *  a zero (0) indicates a failure.\n *\n *  \\n The mask is defined as follows:\n *  \\n Bit 0:   Gyro.\n *  \\n Bit 1:   Accel.\n *  \\n Bit 2:   Compass.\n *\n *  \\n Currently, the hardware self-test is unsupported for MPU6500. However,\n *  this function can still be used to obtain the accel and gyro biases.\n *\n *  \\n This function must be called with the device either face-up or face-down\n *  (z-axis is parallel to gravity).\n *  @param[out] gyro        Gyro biases in q16 format.\n *  @param[out] accel       Accel biases (if applicable) in q16 format.\n *  @return     Result mask (see above).\n */\nint mpu_run_self_test(long *gyro, long *accel)\n{\n#ifdef MPU6050\n    const unsigned char tries = 2;\n    long gyro_st[3], accel_st[3];\n    unsigned char accel_result, gyro_result;\n#ifdef AK89xx_SECONDARY\n    unsigned char compass_result;\n#endif\n    int ii;\n#endif\n    int result;\n    unsigned char accel_fsr, fifo_sensors, sensors_on;\n    unsigned short gyro_fsr, sample_rate, lpf;\n    unsigned char dmp_was_on;\n\n    if (st.chip_cfg.dmp_on) {\n        mpu_set_dmp_state(0);\n        dmp_was_on = 1;\n    } else\n        dmp_was_on = 0;\n\n    /* Get initial settings. */\n    mpu_get_gyro_fsr(&gyro_fsr);\n    mpu_get_accel_fsr(&accel_fsr);\n    mpu_get_lpf(&lpf);\n    mpu_get_sample_rate(&sample_rate);\n    sensors_on = st.chip_cfg.sensors;\n    mpu_get_fifo_config(&fifo_sensors);\n\n    /* For older chips, the self-test will be different. */\n#if defined MPU6050\n    for (ii = 0; ii < tries; ii++)\n        if (!get_st_biases(gyro, accel, 0))\n            break;\n    if (ii == tries) {\n        /* If we reach this point, we most likely encountered an I2C error.\n         * We'll just report an error for all three sensors.\n         */\n        result = 0;\n        goto restore;\n    }\n    for (ii = 0; ii < tries; ii++)\n        if (!get_st_biases(gyro_st, accel_st, 1))\n            break;\n    if (ii == tries) {\n        /* Again, probably an I2C error. */\n        result = 0;\n        goto restore;\n    }\n    accel_result = accel_self_test(accel, accel_st);\n    gyro_result = gyro_self_test(gyro, gyro_st);\n\n    result = 0;\n    if (!gyro_result)\n        result |= 0x01;\n    if (!accel_result)\n        result |= 0x02;\n\n#ifdef AK89xx_SECONDARY\n    compass_result = compass_self_test();\n    if (!compass_result)\n        result |= 0x04;\n#endif\nrestore:\n#elif defined MPU6500\n    /* For now, this function will return a \"pass\" result for all three sensors\n     * for compatibility with current test applications.\n     */\n    get_st_biases(gyro, accel, 0);\n    result = 0x7;\n#endif\n    /* Set to invalid values to ensure no I2C writes are skipped. */\n    st.chip_cfg.gyro_fsr = 0xFF;\n    st.chip_cfg.accel_fsr = 0xFF;\n    st.chip_cfg.lpf = 0xFF;\n    st.chip_cfg.sample_rate = 0xFFFF;\n    st.chip_cfg.sensors = 0xFF;\n    st.chip_cfg.fifo_enable = 0xFF;\n    st.chip_cfg.clk_src = INV_CLK_PLL;\n    mpu_set_gyro_fsr(gyro_fsr);\n    mpu_set_accel_fsr(accel_fsr);\n    mpu_set_lpf(lpf);\n    mpu_set_sample_rate(sample_rate);\n    mpu_set_sensors(sensors_on);\n    mpu_configure_fifo(fifo_sensors);\n\n    if (dmp_was_on)\n        mpu_set_dmp_state(1);\n\n    return result;\n}\n\n/**\n *  @brief      Write to the DMP memory.\n *  This function prevents I2C writes past the bank boundaries. The DMP memory\n *  is only accessible when the chip is awake.\n *  @param[in]  mem_addr    Memory location (bank << 8 | start address)\n *  @param[in]  length      Number of bytes to write.\n *  @param[in]  data        Bytes to write to memory.\n *  @return     0 if successful.\n */\nint mpu_write_mem(unsigned short mem_addr, unsigned short length,\n        unsigned char *data)\n{\n    unsigned char tmp[2];\n\n    if (!data)\n        return -1;\n    if (!st.chip_cfg.sensors)\n        return -1;\n\n    tmp[0] = (unsigned char)(mem_addr >> 8);\n    tmp[1] = (unsigned char)(mem_addr & 0xFF);\n\n    /* Check bank boundaries. */\n    if (tmp[1] + length > st.hw->bank_size)\n        return -1;\n\n    if (i2c_write(st.hw->addr, st.reg->bank_sel, 2, tmp))\n        return -1;\n    if (i2c_write(st.hw->addr, st.reg->mem_r_w, length, data))\n        return -1;\n    return 0;\n}\n\n/**\n *  @brief      Read from the DMP memory.\n *  This function prevents I2C reads past the bank boundaries. The DMP memory\n *  is only accessible when the chip is awake.\n *  @param[in]  mem_addr    Memory location (bank << 8 | start address)\n *  @param[in]  length      Number of bytes to read.\n *  @param[out] data        Bytes read from memory.\n *  @return     0 if successful.\n */\nint mpu_read_mem(unsigned short mem_addr, unsigned short length,\n        unsigned char *data)\n{\n    unsigned char tmp[2];\n\n    if (!data)\n        return -1;\n    if (!st.chip_cfg.sensors)\n        return -1;\n\n    tmp[0] = (unsigned char)(mem_addr >> 8);\n    tmp[1] = (unsigned char)(mem_addr & 0xFF);\n\n    /* Check bank boundaries. */\n    if (tmp[1] + length > st.hw->bank_size)\n        return -1;\n\n    if (i2c_write(st.hw->addr, st.reg->bank_sel, 2, tmp))\n        return -1;\n    if (i2c_read(st.hw->addr, st.reg->mem_r_w, length, data))\n        return -1;\n    return 0;\n}\n\n/**\n *  @brief      Load and verify DMP image.\n *  @param[in]  length      Length of DMP image.\n *  @param[in]  firmware    DMP code.\n *  @param[in]  start_addr  Starting address of DMP code memory.\n *  @param[in]  sample_rate Fixed sampling rate used when DMP is enabled.\n *  @return     0 if successful.\n */\nint mpu_load_firmware(unsigned short length, const unsigned char *firmware,\n    unsigned short start_addr, unsigned short sample_rate)\n{\n    unsigned short ii;\n    unsigned short this_write;\n    /* Must divide evenly into st.hw->bank_size to avoid bank crossings. */\n#define LOAD_CHUNK  (16)\n    unsigned char cur[LOAD_CHUNK], tmp[2];\n\n    if (st.chip_cfg.dmp_loaded)\n        /* DMP should only be loaded once. */\n        return -1;\n\n    if (!firmware)\n        return -1;\n    for (ii = 0; ii < length; ii += this_write) {\n        this_write = min(LOAD_CHUNK, length - ii);\n        if (mpu_write_mem(ii, this_write, (unsigned char*)&firmware[ii]))\n            return -1;\n        if (mpu_read_mem(ii, this_write, cur))\n            return -1;\n        if (memcmp(firmware+ii, cur, this_write))\n            return -2;\n    }\n\n    /* Set program start address. */\n    tmp[0] = start_addr >> 8;\n    tmp[1] = start_addr & 0xFF;\n    if (i2c_write(st.hw->addr, st.reg->prgm_start_h, 2, tmp))\n        return -1;\n\n    st.chip_cfg.dmp_loaded = 1;\n    st.chip_cfg.dmp_sample_rate = sample_rate;\n    return 0;\n}\n\n/**\n *  @brief      Enable/disable DMP support.\n *  @param[in]  enable  1 to turn on the DMP.\n *  @return     0 if successful.\n */\nint mpu_set_dmp_state(unsigned char enable)\n{\n    unsigned char tmp;\n    if (st.chip_cfg.dmp_on == enable)\n        return 0;\n\n    if (enable) {\n        if (!st.chip_cfg.dmp_loaded)\n            return -1;\n        /* Disable data ready interrupt. */\n        set_int_enable(0);\n        /* Disable bypass mode. */\n        mpu_set_bypass(0);\n        /* Keep constant sample rate, FIFO rate controlled by DMP. */\n        mpu_set_sample_rate(st.chip_cfg.dmp_sample_rate);\n        /* Remove FIFO elements. */\n        tmp = 0;\n        i2c_write(st.hw->addr, 0x23, 1, &tmp);\n        st.chip_cfg.dmp_on = 1;\n        /* Enable DMP interrupt. */\n        set_int_enable(1);\n        mpu_reset_fifo();\n    } else {\n        /* Disable DMP interrupt. */\n        set_int_enable(0);\n        /* Restore FIFO settings. */\n        tmp = st.chip_cfg.fifo_enable;\n        i2c_write(st.hw->addr, 0x23, 1, &tmp);\n        st.chip_cfg.dmp_on = 0;\n        mpu_reset_fifo();\n    }\n    return 0;\n}\n\n/**\n *  @brief      Get DMP state.\n *  @param[out] enabled 1 if enabled.\n *  @return     0 if successful.\n */\nint mpu_get_dmp_state(unsigned char *enabled)\n{\n    enabled[0] = st.chip_cfg.dmp_on;\n    return 0;\n}\n\n\n/* This initialization is similar to the one in ak8975.c. */\nstatic int setup_compass(void)\n{\n#ifdef AK89xx_SECONDARY\n    unsigned char data[4], akm_addr;\n\n    mpu_set_bypass(1);\n\n    /* Find compass. Possible addresses range from 0x0C to 0x0F. */\n    for (akm_addr = 0x0C; akm_addr <= 0x0F; akm_addr++) {\n        int result;\n        result = i2c_read(akm_addr, AKM_REG_WHOAMI, 1, data);\n        if (!result && (data[0] == AKM_WHOAMI))\n            break;\n    }\n\n    if (akm_addr > 0x0F) {\n        /* TODO: Handle this case in all compass-related functions. */\n        log_e(\"Compass not found.\\n\");\n        return -1;\n    }\n\n    st.chip_cfg.compass_addr = akm_addr;\n\n    data[0] = AKM_POWER_DOWN;\n    if (i2c_write(st.chip_cfg.compass_addr, AKM_REG_CNTL, 1, data))\n        return -1;\n    delay_ms(1);\n\n    data[0] = AKM_FUSE_ROM_ACCESS;\n    if (i2c_write(st.chip_cfg.compass_addr, AKM_REG_CNTL, 1, data))\n        return -1;\n    delay_ms(1);\n\n    /* Get sensitivity adjustment data from fuse ROM. */\n    if (i2c_read(st.chip_cfg.compass_addr, AKM_REG_ASAX, 3, data))\n        return -1;\n    st.chip_cfg.mag_sens_adj[0] = (long)data[0] + 128;\n    st.chip_cfg.mag_sens_adj[1] = (long)data[1] + 128;\n    st.chip_cfg.mag_sens_adj[2] = (long)data[2] + 128;\n\n    data[0] = AKM_POWER_DOWN;\n    if (i2c_write(st.chip_cfg.compass_addr, AKM_REG_CNTL, 1, data))\n        return -1;\n    delay_ms(1);\n\n    mpu_set_bypass(0);\n\n    /* Set up master mode, master clock, and ES bit. */\n    data[0] = 0x40;\n    if (i2c_write(st.hw->addr, st.reg->i2c_mst, 1, data))\n        return -1;\n\n    /* Slave 0 reads from AKM data registers. */\n    data[0] = BIT_I2C_READ | st.chip_cfg.compass_addr;\n    if (i2c_write(st.hw->addr, st.reg->s0_addr, 1, data))\n        return -1;\n\n    /* Compass reads start at this register. */\n    data[0] = AKM_REG_ST1;\n    if (i2c_write(st.hw->addr, st.reg->s0_reg, 1, data))\n        return -1;\n\n    /* Enable slave 0, 8-byte reads. */\n    data[0] = BIT_SLAVE_EN | 8;\n    if (i2c_write(st.hw->addr, st.reg->s0_ctrl, 1, data))\n        return -1;\n\n    /* Slave 1 changes AKM measurement mode. */\n    data[0] = st.chip_cfg.compass_addr;\n    if (i2c_write(st.hw->addr, st.reg->s1_addr, 1, data))\n        return -1;\n\n    /* AKM measurement mode register. */\n    data[0] = AKM_REG_CNTL;\n    if (i2c_write(st.hw->addr, st.reg->s1_reg, 1, data))\n        return -1;\n\n    /* Enable slave 1, 1-byte writes. */\n    data[0] = BIT_SLAVE_EN | 1;\n    if (i2c_write(st.hw->addr, st.reg->s1_ctrl, 1, data))\n        return -1;\n\n    /* Set slave 1 data. */\n    data[0] = AKM_SINGLE_MEASUREMENT;\n    if (i2c_write(st.hw->addr, st.reg->s1_do, 1, data))\n        return -1;\n\n    /* Trigger slave 0 and slave 1 actions at each sample. */\n    data[0] = 0x03;\n    if (i2c_write(st.hw->addr, st.reg->i2c_delay_ctrl, 1, data))\n        return -1;\n\n#ifdef MPU9150\n    /* For the MPU9150, the auxiliary I2C bus needs to be set to VDD. */\n    data[0] = BIT_I2C_MST_VDDIO;\n    if (i2c_write(st.hw->addr, st.reg->yg_offs_tc, 1, data))\n        return -1;\n#endif\n\n    return 0;\n#else\n    return -1;\n#endif\n}\n\n/**\n *  @brief      Read raw compass data.\n *  @param[out] data        Raw data in hardware units.\n *  @param[out] timestamp   Timestamp in milliseconds. Null if not needed.\n *  @return     0 if successful.\n */\nint mpu_get_compass_reg(short *data, unsigned long *timestamp)\n{\n#ifdef AK89xx_SECONDARY\n    unsigned char tmp[9];\n\n    if (!(st.chip_cfg.sensors & INV_XYZ_COMPASS))\n        return -1;\n\n#ifdef AK89xx_BYPASS\n    if (i2c_read(st.chip_cfg.compass_addr, AKM_REG_ST1, 8, tmp))\n        return -1;\n    tmp[8] = AKM_SINGLE_MEASUREMENT;\n    if (i2c_write(st.chip_cfg.compass_addr, AKM_REG_CNTL, 1, tmp+8))\n        return -1;\n#else\n    if (i2c_read(st.hw->addr, st.reg->raw_compass, 8, tmp))\n        return -1;\n#endif\n\n#if defined AK8975_SECONDARY\n    /* AK8975 doesn't have the overrun error bit. */\n    if (!(tmp[0] & AKM_DATA_READY))\n        return -2;\n    if ((tmp[7] & AKM_OVERFLOW) || (tmp[7] & AKM_DATA_ERROR))\n        return -3;\n#elif defined AK8963_SECONDARY\n    /* AK8963 doesn't have the data read error bit. */\n    if (!(tmp[0] & AKM_DATA_READY) || (tmp[0] & AKM_DATA_OVERRUN))\n        return -2;\n    if (tmp[7] & AKM_OVERFLOW)\n        return -3;\n#endif\n    data[0] = (tmp[2] << 8) | tmp[1];\n    data[1] = (tmp[4] << 8) | tmp[3];\n    data[2] = (tmp[6] << 8) | tmp[5];\n\n    data[0] = ((long)data[0] * st.chip_cfg.mag_sens_adj[0]) >> 8;\n    data[1] = ((long)data[1] * st.chip_cfg.mag_sens_adj[1]) >> 8;\n    data[2] = ((long)data[2] * st.chip_cfg.mag_sens_adj[2]) >> 8;\n\n    if (timestamp)\n        get_ms(timestamp);\n    return 0;\n#else\n    return -1;\n#endif\n}\n\n/**\n *  @brief      Get the compass full-scale range.\n *  @param[out] fsr Current full-scale range.\n *  @return     0 if successful.\n */\nint mpu_get_compass_fsr(unsigned short *fsr)\n{\n#ifdef AK89xx_SECONDARY\n    fsr[0] = st.hw->compass_fsr;\n    return 0;\n#else\n    return -1;\n#endif\n}\n\n/**\n *  @brief      Enters LP accel motion interrupt mode.\n *  The behavior of this feature is very different between the MPU6050 and the\n *  MPU6500. Each chip's version of this feature is explained below.\n *\n *  \\n MPU6050:\n *  \\n When this mode is first enabled, the hardware captures a single accel\n *  sample, and subsequent samples are compared with this one to determine if\n *  the device is in motion. Therefore, whenever this \"locked\" sample needs to\n *  be changed, this function must be called again.\n *\n *  \\n The hardware motion threshold can be between 32mg and 8160mg in 32mg\n *  increments.\n *\n *  \\n Low-power accel mode supports the following frequencies:\n *  \\n 1.25Hz, 5Hz, 20Hz, 40Hz\n *\n *  \\n MPU6500:\n *  \\n Unlike the MPU6050 version, the hardware does not \"lock in\" a reference\n *  sample. The hardware monitors the accel data and detects any large change\n *  over a short period of time.\n *\n *  \\n The hardware motion threshold can be between 4mg and 1020mg in 4mg\n *  increments.\n *\n *  \\n MPU6500 Low-power accel mode supports the following frequencies:\n *  \\n 1.25Hz, 2.5Hz, 5Hz, 10Hz, 20Hz, 40Hz, 80Hz, 160Hz, 320Hz, 640Hz\n *\n *  \\n\\n NOTES:\n *  \\n The driver will round down @e thresh to the nearest supported value if\n *  an unsupported threshold is selected.\n *  \\n To select a fractional wake-up frequency, round down the value passed to\n *  @e lpa_freq.\n *  \\n The MPU6500 does not support a delay parameter. If this function is used\n *  for the MPU6500, the value passed to @e time will be ignored.\n *  \\n To disable this mode, set @e lpa_freq to zero. The driver will restore\n *  the previous configuration.\n *\n *  @param[in]  thresh      Motion threshold in mg.\n *  @param[in]  time        Duration in milliseconds that the accel data must\n *                          exceed @e thresh before motion is reported.\n *  @param[in]  lpa_freq    Minimum sampling rate, or zero to disable.\n *  @return     0 if successful.\n */\nint mpu_lp_motion_interrupt(unsigned short thresh, unsigned char time,\n    unsigned char lpa_freq)\n{\n    unsigned char data[3];\n\n    if (lpa_freq) {\n        unsigned char thresh_hw;\n\n#if defined MPU6050\n        /* TODO: Make these const/#defines. */\n        /* 1LSb = 32mg. */\n        if (thresh > 8160)\n            thresh_hw = 255;\n        else if (thresh < 32)\n            thresh_hw = 1;\n        else\n            thresh_hw = thresh >> 5;\n#elif defined MPU6500\n        /* 1LSb = 4mg. */\n        if (thresh > 1020)\n            thresh_hw = 255;\n        else if (thresh < 4)\n            thresh_hw = 1;\n        else\n            thresh_hw = thresh >> 2;\n#endif\n\n        if (!time)\n            /* Minimum duration must be 1ms. */\n            time = 1;\n\n#if defined MPU6050\n        if (lpa_freq > 40)\n#elif defined MPU6500\n        if (lpa_freq > 640)\n#endif\n            /* At this point, the chip has not been re-configured, so the\n             * function can safely exit.\n             */\n            return -1;\n\n        if (!st.chip_cfg.int_motion_only) {\n            /* Store current settings for later. */\n            if (st.chip_cfg.dmp_on) {\n                mpu_set_dmp_state(0);\n                st.chip_cfg.cache.dmp_on = 1;\n            } else\n                st.chip_cfg.cache.dmp_on = 0;\n            mpu_get_gyro_fsr(&st.chip_cfg.cache.gyro_fsr);\n            mpu_get_accel_fsr(&st.chip_cfg.cache.accel_fsr);\n            mpu_get_lpf(&st.chip_cfg.cache.lpf);\n            mpu_get_sample_rate(&st.chip_cfg.cache.sample_rate);\n            st.chip_cfg.cache.sensors_on = st.chip_cfg.sensors;\n            mpu_get_fifo_config(&st.chip_cfg.cache.fifo_sensors);\n        }\n\n#ifdef MPU6050\n        /* Disable hardware interrupts for now. */\n        set_int_enable(0);\n\n        /* Enter full-power accel-only mode. */\n        mpu_lp_accel_mode(0);\n\n        /* Override current LPF (and HPF) settings to obtain a valid accel\n         * reading.\n         */\n        data[0] = INV_FILTER_256HZ_NOLPF2;\n        if (i2c_write(st.hw->addr, st.reg->lpf, 1, data))\n            return -1;\n\n        /* NOTE: Digital high pass filter should be configured here. Since this\n         * driver doesn't modify those bits anywhere, they should already be\n         * cleared by default.\n         */\n\n        /* Configure the device to send motion interrupts. */\n        /* Enable motion interrupt. */\n        data[0] = BIT_MOT_INT_EN;\n        if (i2c_write(st.hw->addr, st.reg->int_enable, 1, data))\n            goto lp_int_restore;\n\n        /* Set motion interrupt parameters. */\n        data[0] = thresh_hw;\n        data[1] = time;\n        if (i2c_write(st.hw->addr, st.reg->motion_thr, 2, data))\n            goto lp_int_restore;\n\n        /* Force hardware to \"lock\" current accel sample. */\n        delay_ms(5);\n        data[0] = (st.chip_cfg.accel_fsr << 3) | BITS_HPF;\n        if (i2c_write(st.hw->addr, st.reg->accel_cfg, 1, data))\n            goto lp_int_restore;\n\n        /* Set up LP accel mode. */\n        data[0] = BIT_LPA_CYCLE;\n        if (lpa_freq == 1)\n            data[1] = INV_LPA_1_25HZ;\n        else if (lpa_freq <= 5)\n            data[1] = INV_LPA_5HZ;\n        else if (lpa_freq <= 20)\n            data[1] = INV_LPA_20HZ;\n        else\n            data[1] = INV_LPA_40HZ;\n        data[1] = (data[1] << 6) | BIT_STBY_XYZG;\n        if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 2, data))\n            goto lp_int_restore;\n\n        st.chip_cfg.int_motion_only = 1;\n        return 0;\n#elif defined MPU6500\n        /* Disable hardware interrupts. */\n        set_int_enable(0);\n\n        /* Enter full-power accel-only mode, no FIFO/DMP. */\n        data[0] = 0;\n        data[1] = 0;\n        data[2] = BIT_STBY_XYZG;\n        if (i2c_write(st.hw->addr, st.reg->user_ctrl, 3, data))\n            goto lp_int_restore;\n\n        /* Set motion threshold. */\n        data[0] = thresh_hw;\n        if (i2c_write(st.hw->addr, st.reg->motion_thr, 1, data))\n            goto lp_int_restore;\n\n        /* Set wake frequency. */\n        if (lpa_freq == 1)\n            data[0] = INV_LPA_1_25HZ;\n        else if (lpa_freq == 2)\n            data[0] = INV_LPA_2_5HZ;\n        else if (lpa_freq <= 5)\n            data[0] = INV_LPA_5HZ;\n        else if (lpa_freq <= 10)\n            data[0] = INV_LPA_10HZ;\n        else if (lpa_freq <= 20)\n            data[0] = INV_LPA_20HZ;\n        else if (lpa_freq <= 40)\n            data[0] = INV_LPA_40HZ;\n        else if (lpa_freq <= 80)\n            data[0] = INV_LPA_80HZ;\n        else if (lpa_freq <= 160)\n            data[0] = INV_LPA_160HZ;\n        else if (lpa_freq <= 320)\n            data[0] = INV_LPA_320HZ;\n        else\n            data[0] = INV_LPA_640HZ;\n        if (i2c_write(st.hw->addr, st.reg->lp_accel_odr, 1, data))\n            goto lp_int_restore;\n\n        /* Enable motion interrupt (MPU6500 version). */\n        data[0] = BITS_WOM_EN;\n        if (i2c_write(st.hw->addr, st.reg->accel_intel, 1, data))\n            goto lp_int_restore;\n\n        /* Enable cycle mode. */\n        data[0] = BIT_LPA_CYCLE;\n        if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, data))\n            goto lp_int_restore;\n\n        /* Enable interrupt. */\n        data[0] = BIT_MOT_INT_EN;\n        if (i2c_write(st.hw->addr, st.reg->int_enable, 1, data))\n            goto lp_int_restore;\n\n        st.chip_cfg.int_motion_only = 1;\n        return 0;\n#endif\n    } else {\n        /* Don't \"restore\" the previous state if no state has been saved. */\n        int ii;\n        char *cache_ptr = (char*)&st.chip_cfg.cache;\n        for (ii = 0; ii < sizeof(st.chip_cfg.cache); ii++) {\n            if (cache_ptr[ii] != 0)\n                goto lp_int_restore;\n        }\n        /* If we reach this point, motion interrupt mode hasn't been used yet. */\n        return -1;\n    }\nlp_int_restore:\n    /* Set to invalid values to ensure no I2C writes are skipped. */\n    st.chip_cfg.gyro_fsr = 0xFF;\n    st.chip_cfg.accel_fsr = 0xFF;\n    st.chip_cfg.lpf = 0xFF;\n    st.chip_cfg.sample_rate = 0xFFFF;\n    st.chip_cfg.sensors = 0xFF;\n    st.chip_cfg.fifo_enable = 0xFF;\n    st.chip_cfg.clk_src = INV_CLK_PLL;\n    mpu_set_sensors(st.chip_cfg.cache.sensors_on);\n    mpu_set_gyro_fsr(st.chip_cfg.cache.gyro_fsr);\n    mpu_set_accel_fsr(st.chip_cfg.cache.accel_fsr);\n    mpu_set_lpf(st.chip_cfg.cache.lpf);\n    mpu_set_sample_rate(st.chip_cfg.cache.sample_rate);\n    mpu_configure_fifo(st.chip_cfg.cache.fifo_sensors);\n\n    if (st.chip_cfg.cache.dmp_on)\n        mpu_set_dmp_state(1);\n\n#ifdef MPU6500\n    /* Disable motion interrupt (MPU6500 version). */\n    data[0] = 0;\n    if (i2c_write(st.hw->addr, st.reg->accel_intel, 1, data))\n        goto lp_int_restore;\n#endif\n\n    st.chip_cfg.int_motion_only = 0;\n    return 0;\n}\n\n\n#include \"inv_mpu_dmp_motion_driver.h\"\n/* ATK-MS6050Ƿò */\nstatic signed char gyro_orientation[9] = { 1, 0, 0,\n                                           0, 1, 0,\n                                           0, 0, 1};\n\n/**\n * @brief       inv_orientation_matrix_to_scalar()ĸ\n * @param       row: \n * @retval      \n */\nstatic inline unsigned short inv_row_2_scale(const signed char *row)\n{\n    unsigned short b;\n    \n    if (row[0] > 0)\n        b = 0;\n    else if (row[0] < 0)\n        b = 4;\n    else if (row[1] > 0)\n        b = 1;\n    else if (row[1] < 0)\n        b = 5;\n    else if (row[2] > 0)\n        b = 2;\n    else if (row[2] < 0)\n        b = 6;\n    else\n        b = 7;      // error\n    \n    return b;\n}\n\n\n/**\n * @brief       תΪʾԹDMPʹ\n * @param       mtx: \n * @retval      ʾķ\n */\nstatic inline unsigned short inv_orientation_matrix_to_scalar(const signed char *mtx)\n{\n    unsigned short scalar;\n    \n    /*\n       XYZ  010_001_000 Identity Matrix\n       XZY  001_010_000\n       YXZ  010_000_001\n       YZX  000_010_001\n       ZXY  001_000_010\n       ZYX  000_001_010\n     */\n    \n    scalar = inv_row_2_scale(mtx);\n    scalar |= inv_row_2_scale(mtx + 3) << 3;\n    scalar |= inv_row_2_scale(mtx + 6) << 6;\n    \n    return scalar;\n}\n\n/**\n * @brief       ATK-MS6050 DMPʼ\n * @param       \n * @retval      0: ִгɹ\n *              1: ִʧ\n */\nuint8_t atk_ms6050_dmp_init(void)\n{\n    volatile uint8_t ret=0;\n    \n    ret  = mpu_init(NULL);                                      /* Ӳʼ */\n    ret += mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL);       /* ָ */\n    ret += mpu_configure_fifo(INV_XYZ_GYRO | INV_XYZ_ACCEL);    /* FIFO */\n    ret += mpu_set_sample_rate(DEFAULT_MPU_HZ);                 /* ò */\n    ret += dmp_load_motion_driver_firmware();                   /* DMP */\n    ret += dmp_set_orientation(                                 /* Ƿ */\n                                inv_orientation_matrix_to_scalar(gyro_orientation));\n    ret += dmp_enable_feature(  DMP_FEATURE_6X_LP_QUAT      |   /* DMP */\n                                DMP_FEATURE_TAP             |\n                                DMP_FEATURE_ANDROID_ORIENT  |\n                                DMP_FEATURE_SEND_RAW_ACCEL  |\n                                DMP_FEATURE_SEND_CAL_GYRO   |\n                                DMP_FEATURE_GYRO_CAL);\n    ret += dmp_set_fifo_rate(DEFAULT_MPU_HZ);                   /* DMP */\n    ret += mpu_set_dmp_state(1);                                /* ʹDMP */\n    ret += atk_ms6050_run_self_test();                          /* Բ */\n    \n    return ((ret == 0) ? 0 : 1);\n}\n\n/**\n * @brief       ATK-MS6050ԲԺ\n * @param       \n * @retval      0: ִгɹ\n *              1: ִʧ\n */\nuint8_t atk_ms6050_run_self_test(void)\n{\n    int result;\n    long gyro[3], accel[3];;\n    \n    result = mpu_run_self_test(gyro, accel);\n    if (result == 0x03)\n    {\n        /* Test passed. We can trust the gyro data here, so let's push it down\n         * to the DMP.\n         */\n        float sens;\n        unsigned short accel_sens;\n        \n        mpu_get_gyro_sens(&sens);\n        gyro[0] = (long)(gyro[0] * sens);\n        gyro[1] = (long)(gyro[1] * sens);\n        gyro[2] = (long)(gyro[2] * sens);\n        dmp_set_gyro_bias(gyro);\n        mpu_get_accel_sens(&accel_sens);\n\t\t\t\taccel_sens=0;\n        accel[0] *= accel_sens;\n        accel[1] *= accel_sens;\n        accel[2] *= accel_sens;\n        dmp_set_accel_bias(accel);\n        \n        return 0;\n    }\n    else\n    {\n        return 1;\n    }\n}\n\n/**\n * @brief       ȡATK-MS6050 DMP\n * @note        ȡݵƵDEFAULT_MPU_HZƵһ£\n *              ȡ̫죬ATK-MS6050δݲFIFOݣӶȡʧܣ\n *              ȡ̫޷ʱATK-MS6050 FIFOеݣFIFOӶȡʧ\n * @param       pitch: ǣ: 0.1 Χ:  -90.0 <--->  +90.0㣩\n *              roll : ǣ: 0.1 Χ: -180.0 <---> +180.0㣩\n *              yaw  : ǣ: 0.1 Χ: -180.0 <---> +180.0㣩\n * @retval      0: ִгɹ\n *              1: ִʧ\n */\nuint8_t atk_ms6050_dmp_get_data(float *pitch, float *roll, float *yaw)\n{\n    float q0 = 0.0f;\n    float q1 = 0.0f;\n    float q2 = 0.0f;\n    float q3 = 0.0f;\n    short gyro[3], accel[3], sensors;\n    unsigned long sensor_timestamp;\n    unsigned char more;\n    long quat[4];\n    \n    /* ȡATK-MS6050 FIFOݵƵDEFAULT_MPU_HZƵһֱ\n     * ȡ̫̫ܵ¶ȡʧ\n     * ȡ̫죺ATK-MS6050δFIFOݣȡʧ\n     * ȡ̫ATK-MS6050FIFOȡʧ\n     */\n    if (dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more) != 0)\n    {\n        return 1;\n    }\n    \n    if (sensors & INV_WXYZ_QUAT)\n    {\n        /* ATK-MS6050DMP̬Ԫ\n         * q30ʽŴ230η\n         * ΪԪǽǶźţΪ˵õŷǣ\n         * ҪATK-MS6050DMPת\n         */\n        q0 = quat[0] / q30;\n        q1 = quat[1] / q30;\n        q2 = quat[2] / q30;\n        q3 = quat[3] / q30;\n        \n        /* 㸩ǡǡ\n         * 57.3ΪתǶȵתϵ180/PI\n         */\n        *pitch  = asin(-2 * q1 * q3 + 2 * q0 * q2) * 57.3;\n        *roll   = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2 * q2 + 1) * 57.3;\n        *yaw    = atan2(2 * (q1 * q2 + q0 * q3), q0 * q0 + q1 * q1 - q2 * q2 - q3 * q3) * 57.3;\n    }\n    else\n    {\n        return 1;\n    }\n    \n    return 0;\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/inv_mpu.h",
    "content": "/*\n $License:\n    Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.\n    See included License.txt for License information.\n $\n */\n/**\n *  @addtogroup  DRIVERS Sensor Driver Layer\n *  @brief       Hardware drivers to communicate with sensors via I2C.\n *\n *  @{\n *      @file       inv_mpu.h\n *      @brief      An I2C-based driver for Invensense gyroscopes.\n *      @details    This driver currently works for the following devices:\n *                  MPU6050\n *                  MPU6500\n *                  MPU9150 (or MPU6050 w/ AK8975 on the auxiliary bus)\n *                  MPU9250 (or MPU6500 w/ AK8963 on the auxiliary bus)\n */\n\n#ifndef _INV_MPU_H_\n#define _INV_MPU_H_\n\n#ifdef __cplusplus\nextern \"C\"{\n#endif\n\n/*USER CODE BEGIN*/\n#include \"main.h\"\n#define DEFAULT_MPU_HZ  (100)           /*  */\n#define q30             (1073741824.0f) /* 2^30 = 1073741824 */\n\n#define MPU6050                         /* ΪʹõĴMPU6050 */\n#define MOTION_DRIVER_TARGET_MSP430     /* ֣MSP430ֲSTM32 */\nuint8_t atk_ms6050_dmp_init(void);\nuint8_t atk_ms6050_run_self_test(void);\nuint8_t atk_ms6050_dmp_get_data(float *pitch, float *roll, float *yaw);\n/*USER CODE END*/\n#define INV_X_GYRO      (0x40)\n#define INV_Y_GYRO      (0x20)\n#define INV_Z_GYRO      (0x10)\n#define INV_XYZ_GYRO    (INV_X_GYRO | INV_Y_GYRO | INV_Z_GYRO)\n#define INV_XYZ_ACCEL   (0x08)\n#define INV_XYZ_COMPASS (0x01)\n\nstruct int_param_s {\n#if defined EMPL_TARGET_MSP430 || defined MOTION_DRIVER_TARGET_MSP430\n    void (*cb)(void);\n    unsigned short pin;\n    unsigned char lp_exit;\n    unsigned char active_low;\n#elif defined EMPL_TARGET_UC3L0\n    unsigned long pin;\n    void (*cb)(volatile void*);\n    void *arg;\n#endif\n};\n\n#define MPU_INT_STATUS_DATA_READY       (0x0001)\n#define MPU_INT_STATUS_DMP              (0x0002)\n#define MPU_INT_STATUS_PLL_READY        (0x0004)\n#define MPU_INT_STATUS_I2C_MST          (0x0008)\n#define MPU_INT_STATUS_FIFO_OVERFLOW    (0x0010)\n#define MPU_INT_STATUS_ZMOT             (0x0020)\n#define MPU_INT_STATUS_MOT              (0x0040)\n#define MPU_INT_STATUS_FREE_FALL        (0x0080)\n#define MPU_INT_STATUS_DMP_0            (0x0100)\n#define MPU_INT_STATUS_DMP_1            (0x0200)\n#define MPU_INT_STATUS_DMP_2            (0x0400)\n#define MPU_INT_STATUS_DMP_3            (0x0800)\n#define MPU_INT_STATUS_DMP_4            (0x1000)\n#define MPU_INT_STATUS_DMP_5            (0x2000)\n\n/* Set up APIs */\nint mpu_init(struct int_param_s *int_param);\nint mpu_init_slave(void);\nint mpu_set_bypass(unsigned char bypass_on);\n\n/* Configuration APIs */\nint mpu_lp_accel_mode(unsigned char rate);\nint mpu_lp_motion_interrupt(unsigned short thresh, unsigned char time,\n    unsigned char lpa_freq);\nint mpu_set_int_level(unsigned char active_low);\nint mpu_set_int_latched(unsigned char enable);\n\nint mpu_set_dmp_state(unsigned char enable);\nint mpu_get_dmp_state(unsigned char *enabled);\n\nint mpu_get_lpf(unsigned short *lpf);\nint mpu_set_lpf(unsigned short lpf);\n\nint mpu_get_gyro_fsr(unsigned short *fsr);\nint mpu_set_gyro_fsr(unsigned short fsr);\n\nint mpu_get_accel_fsr(unsigned char *fsr);\nint mpu_set_accel_fsr(unsigned char fsr);\n\nint mpu_get_compass_fsr(unsigned short *fsr);\n\nint mpu_get_gyro_sens(float *sens);\nint mpu_get_accel_sens(unsigned short *sens);\n\nint mpu_get_sample_rate(unsigned short *rate);\nint mpu_set_sample_rate(unsigned short rate);\nint mpu_get_compass_sample_rate(unsigned short *rate);\nint mpu_set_compass_sample_rate(unsigned short rate);\n\nint mpu_get_fifo_config(unsigned char *sensors);\nint mpu_configure_fifo(unsigned char sensors);\n\nint mpu_get_power_state(unsigned char *power_on);\nint mpu_set_sensors(unsigned char sensors);\n\nint mpu_set_accel_bias(const long *accel_bias);\n\n/* Data getter/setter APIs */\nint mpu_get_gyro_reg(short *data, unsigned long *timestamp);\nint mpu_get_accel_reg(short *data, unsigned long *timestamp);\nint mpu_get_compass_reg(short *data, unsigned long *timestamp);\nint mpu_get_temperature(long *data, unsigned long *timestamp);\n\nint mpu_get_int_status(short *status);\nint mpu_read_fifo(short *gyro, short *accel, unsigned long *timestamp,\n    unsigned char *sensors, unsigned char *more);\nint mpu_read_fifo_stream(unsigned short length, unsigned char *data,\n    unsigned char *more);\nint mpu_reset_fifo(void);\n\nint mpu_write_mem(unsigned short mem_addr, unsigned short length,\n    unsigned char *data);\nint mpu_read_mem(unsigned short mem_addr, unsigned short length,\n    unsigned char *data);\nint mpu_load_firmware(unsigned short length, const unsigned char *firmware,\n    unsigned short start_addr, unsigned short sample_rate);\n\nint mpu_reg_dump(void);\nint mpu_read_reg(unsigned char reg, unsigned char *data);\nint mpu_run_self_test(long *gyro, long *accel);\nint mpu_register_tap_cb(void (*func)(unsigned char, unsigned char));\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif  /* #ifndef _INV_MPU_H_ */\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/inv_mpu_dmp_motion_driver.c",
    "content": "/*\n $License:\n    Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.\n    See included License.txt for License information.\n $\n */\n/**\n *  @addtogroup  DRIVERS Sensor Driver Layer\n *  @brief       Hardware drivers to communicate with sensors via I2C.\n *\n *  @{\n *      @file       inv_mpu_dmp_motion_driver.c\n *      @brief      DMP image and interface functions.\n *      @details    All functions are preceded by the dmp_ prefix to\n *                  differentiate among MPL and general driver function calls.\n */\n#include <stdio.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n#include \"inv_mpu.h\"\n#include \"inv_mpu_dmp_motion_driver.h\"\n#include \"dmpKey.h\"\n#include \"dmpmap.h\"\n\n\n/* The following functions must be defined for this platform:\n * i2c_write(unsigned char slave_addr, unsigned char reg_addr,\n *      unsigned char length, unsigned char const *data)\n * i2c_read(unsigned char slave_addr, unsigned char reg_addr,\n *      unsigned char length, unsigned char *data)\n * delay_ms(unsigned long num_ms)\n * get_ms(unsigned long *count)\n */\n#if defined MOTION_DRIVER_TARGET_MSP430\n//#include \"msp430.h\"\n//#include \"msp430_clock.h\"\n#include \"dmp_interface.h\"\n\n#define delay_ms    my_delay_ms\n#define get_ms      my_get_ms\t\t // ȡǰsystickʱ\n#define log_i(...)     do {} while (0)\n#define log_e(...)     do {} while (0)\n\n#elif defined EMPL_TARGET_MSP430\n#include \"msp430.h\"\n#include \"msp430_clock.h\"\n#include \"log.h\"\n#define delay_ms    msp430_delay_ms\n#define get_ms      msp430_get_clock_ms\n#define log_i       MPL_LOGI\n#define log_e       MPL_LOGE\n\n#elif defined EMPL_TARGET_UC3L0\n/* Instead of using the standard TWI driver from the ASF library, we're using\n * a TWI driver that follows the slave address + register address convention.\n */\n#include \"delay.h\"\n#include \"sysclk.h\"\n#include \"log.h\"\n#include \"uc3l0_clock.h\"\n/* delay_ms is a function already defined in ASF. */\n#define get_ms  uc3l0_get_clock_ms\n#define log_i       MPL_LOGI\n#define log_e       MPL_LOGE\n\n#else\n#error  Gyro driver is missing the system layer implementations.\n#endif\n\n/* These defines are copied from dmpDefaultMPU6050.c in the general MPL\n * releases. These defines may change for each DMP image, so be sure to modify\n * these values when switching to a new image.\n */\n#define CFG_LP_QUAT             (2712)\n#define END_ORIENT_TEMP         (1866)\n#define CFG_27                  (2742)\n#define CFG_20                  (2224)\n#define CFG_23                  (2745)\n#define CFG_FIFO_ON_EVENT       (2690)\n#define END_PREDICTION_UPDATE   (1761)\n#define CGNOTICE_INTR           (2620)\n#define X_GRT_Y_TMP             (1358)\n#define CFG_DR_INT              (1029)\n#define CFG_AUTH                (1035)\n#define UPDATE_PROP_ROT         (1835)\n#define END_COMPARE_Y_X_TMP2    (1455)\n#define SKIP_X_GRT_Y_TMP        (1359)\n#define SKIP_END_COMPARE        (1435)\n#define FCFG_3                  (1088)\n#define FCFG_2                  (1066)\n#define FCFG_1                  (1062)\n#define END_COMPARE_Y_X_TMP3    (1434)\n#define FCFG_7                  (1073)\n#define FCFG_6                  (1106)\n#define FLAT_STATE_END          (1713)\n#define SWING_END_4             (1616)\n#define SWING_END_2             (1565)\n#define SWING_END_3             (1587)\n#define SWING_END_1             (1550)\n#define CFG_8                   (2718)\n#define CFG_15                  (2727)\n#define CFG_16                  (2746)\n#define CFG_EXT_GYRO_BIAS       (1189)\n#define END_COMPARE_Y_X_TMP     (1407)\n#define DO_NOT_UPDATE_PROP_ROT  (1839)\n#define CFG_7                   (1205)\n#define FLAT_STATE_END_TEMP     (1683)\n#define END_COMPARE_Y_X         (1484)\n#define SKIP_SWING_END_1        (1551)\n#define SKIP_SWING_END_3        (1588)\n#define SKIP_SWING_END_2        (1566)\n#define TILTG75_START           (1672)\n#define CFG_6                   (2753)\n#define TILTL75_END             (1669)\n#define END_ORIENT              (1884)\n#define CFG_FLICK_IN            (2573)\n#define TILTL75_START           (1643)\n#define CFG_MOTION_BIAS         (1208)\n#define X_GRT_Y                 (1408)\n#define TEMPLABEL               (2324)\n#define CFG_ANDROID_ORIENT_INT  (1853)\n#define CFG_GYRO_RAW_DATA       (2722)\n#define X_GRT_Y_TMP2            (1379)\n\n#define D_0_22                  (22+512)\n#define D_0_24                  (24+512)\n\n#define D_0_36                  (36)\n#define D_0_52                  (52)\n#define D_0_96                  (96)\n#define D_0_104                 (104)\n#define D_0_108                 (108)\n#define D_0_163                 (163)\n#define D_0_188                 (188)\n#define D_0_192                 (192)\n#define D_0_224                 (224)\n#define D_0_228                 (228)\n#define D_0_232                 (232)\n#define D_0_236                 (236)\n\n#define D_1_2                   (256 + 2)\n#define D_1_4                   (256 + 4)\n#define D_1_8                   (256 + 8)\n#define D_1_10                  (256 + 10)\n#define D_1_24                  (256 + 24)\n#define D_1_28                  (256 + 28)\n#define D_1_36                  (256 + 36)\n#define D_1_40                  (256 + 40)\n#define D_1_44                  (256 + 44)\n#define D_1_72                  (256 + 72)\n#define D_1_74                  (256 + 74)\n#define D_1_79                  (256 + 79)\n#define D_1_88                  (256 + 88)\n#define D_1_90                  (256 + 90)\n#define D_1_92                  (256 + 92)\n#define D_1_96                  (256 + 96)\n#define D_1_98                  (256 + 98)\n#define D_1_106                 (256 + 106)\n#define D_1_108                 (256 + 108)\n#define D_1_112                 (256 + 112)\n#define D_1_128                 (256 + 144)\n#define D_1_152                 (256 + 12)\n#define D_1_160                 (256 + 160)\n#define D_1_176                 (256 + 176)\n#define D_1_178                 (256 + 178)\n#define D_1_218                 (256 + 218)\n#define D_1_232                 (256 + 232)\n#define D_1_236                 (256 + 236)\n#define D_1_240                 (256 + 240)\n#define D_1_244                 (256 + 244)\n#define D_1_250                 (256 + 250)\n#define D_1_252                 (256 + 252)\n#define D_2_12                  (512 + 12)\n#define D_2_96                  (512 + 96)\n#define D_2_108                 (512 + 108)\n#define D_2_208                 (512 + 208)\n#define D_2_224                 (512 + 224)\n#define D_2_236                 (512 + 236)\n#define D_2_244                 (512 + 244)\n#define D_2_248                 (512 + 248)\n#define D_2_252                 (512 + 252)\n\n#define CPASS_BIAS_X            (35 * 16 + 4)\n#define CPASS_BIAS_Y            (35 * 16 + 8)\n#define CPASS_BIAS_Z            (35 * 16 + 12)\n#define CPASS_MTX_00            (36 * 16)\n#define CPASS_MTX_01            (36 * 16 + 4)\n#define CPASS_MTX_02            (36 * 16 + 8)\n#define CPASS_MTX_10            (36 * 16 + 12)\n#define CPASS_MTX_11            (37 * 16)\n#define CPASS_MTX_12            (37 * 16 + 4)\n#define CPASS_MTX_20            (37 * 16 + 8)\n#define CPASS_MTX_21            (37 * 16 + 12)\n#define CPASS_MTX_22            (43 * 16 + 12)\n#define D_EXT_GYRO_BIAS_X       (61 * 16)\n#define D_EXT_GYRO_BIAS_Y       (61 * 16) + 4\n#define D_EXT_GYRO_BIAS_Z       (61 * 16) + 8\n#define D_ACT0                  (40 * 16)\n#define D_ACSX                  (40 * 16 + 4)\n#define D_ACSY                  (40 * 16 + 8)\n#define D_ACSZ                  (40 * 16 + 12)\n\n#define FLICK_MSG               (45 * 16 + 4)\n#define FLICK_COUNTER           (45 * 16 + 8)\n#define FLICK_LOWER             (45 * 16 + 12)\n#define FLICK_UPPER             (46 * 16 + 12)\n\n#define D_AUTH_OUT              (992)\n#define D_AUTH_IN               (996)\n#define D_AUTH_A                (1000)\n#define D_AUTH_B                (1004)\n\n#define D_PEDSTD_BP_B           (768 + 0x1C)\n#define D_PEDSTD_HP_A           (768 + 0x78)\n#define D_PEDSTD_HP_B           (768 + 0x7C)\n#define D_PEDSTD_BP_A4          (768 + 0x40)\n#define D_PEDSTD_BP_A3          (768 + 0x44)\n#define D_PEDSTD_BP_A2          (768 + 0x48)\n#define D_PEDSTD_BP_A1          (768 + 0x4C)\n#define D_PEDSTD_INT_THRSH      (768 + 0x68)\n#define D_PEDSTD_CLIP           (768 + 0x6C)\n#define D_PEDSTD_SB             (768 + 0x28)\n#define D_PEDSTD_SB_TIME        (768 + 0x2C)\n#define D_PEDSTD_PEAKTHRSH      (768 + 0x98)\n#define D_PEDSTD_TIML           (768 + 0x2A)\n#define D_PEDSTD_TIMH           (768 + 0x2E)\n#define D_PEDSTD_PEAK           (768 + 0X94)\n#define D_PEDSTD_STEPCTR        (768 + 0x60)\n#define D_PEDSTD_TIMECTR        (964)\n#define D_PEDSTD_DECI           (768 + 0xA0)\n\n#define D_HOST_NO_MOT           (976)\n#define D_ACCEL_BIAS            (660)\n\n#define D_ORIENT_GAP            (76)\n\n#define D_TILT0_H               (48)\n#define D_TILT0_L               (50)\n#define D_TILT1_H               (52)\n#define D_TILT1_L               (54)\n#define D_TILT2_H               (56)\n#define D_TILT2_L               (58)\n#define D_TILT3_H               (60)\n#define D_TILT3_L               (62)\n\n#define DMP_CODE_SIZE           (3062)\n\nstatic const unsigned char dmp_memory[DMP_CODE_SIZE] = {\n    /* bank # 0 */\n    0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00,\n    0x00, 0x65, 0x00, 0x54, 0xff, 0xef, 0x00, 0x00, 0xfa, 0x80, 0x00, 0x0b, 0x12, 0x82, 0x00, 0x01,\n    0x03, 0x0c, 0x30, 0xc3, 0x0e, 0x8c, 0x8c, 0xe9, 0x14, 0xd5, 0x40, 0x02, 0x13, 0x71, 0x0f, 0x8e,\n    0x38, 0x83, 0xf8, 0x83, 0x30, 0x00, 0xf8, 0x83, 0x25, 0x8e, 0xf8, 0x83, 0x30, 0x00, 0xf8, 0x83,\n    0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xa9, 0xd6, 0x24, 0x00, 0x04, 0x00, 0x1a, 0x82, 0x79, 0xa1,\n    0x00, 0x00, 0x00, 0x3c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x83, 0x6f, 0xa2,\n    0x00, 0x3e, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xca, 0xe3, 0x09, 0x3e, 0x80, 0x00, 0x00,\n    0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,\n    0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x6e, 0x00, 0x00, 0x06, 0x92, 0x0a, 0x16, 0xc0, 0xdf,\n    0xff, 0xff, 0x02, 0x56, 0xfd, 0x8c, 0xd3, 0x77, 0xff, 0xe1, 0xc4, 0x96, 0xe0, 0xc5, 0xbe, 0xaa,\n    0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x2b, 0x00, 0x00, 0x16, 0x57, 0x00, 0x00, 0x03, 0x59,\n    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfa, 0x00, 0x02, 0x6c, 0x1d, 0x00, 0x00, 0x00, 0x00,\n    0x3f, 0xff, 0xdf, 0xeb, 0x00, 0x3e, 0xb3, 0xb6, 0x00, 0x0d, 0x22, 0x78, 0x00, 0x00, 0x2f, 0x3c,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x42, 0xb5, 0x00, 0x00, 0x39, 0xa2, 0x00, 0x00, 0xb3, 0x65,\n    0xd9, 0x0e, 0x9f, 0xc9, 0x1d, 0xcf, 0x4c, 0x34, 0x30, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00,\n    0x3b, 0xb6, 0x7a, 0xe8, 0x00, 0x64, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    /* bank # 1 */\n    0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0xfa, 0x92, 0x10, 0x00, 0x22, 0x5e, 0x00, 0x0d, 0x22, 0x9f,\n    0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0xff, 0x46, 0x00, 0x00, 0x63, 0xd4, 0x00, 0x00,\n    0x10, 0x00, 0x00, 0x00, 0x04, 0xd6, 0x00, 0x00, 0x04, 0xcc, 0x00, 0x00, 0x04, 0xcc, 0x00, 0x00,\n    0x00, 0x00, 0x10, 0x72, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x64, 0x00, 0x20, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00,\n    0x00, 0x00, 0x00, 0x32, 0xf8, 0x98, 0x00, 0x00, 0xff, 0x65, 0x00, 0x00, 0x83, 0x0f, 0x00, 0x00,\n    0xff, 0x9b, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\n    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x02, 0x00, 0x00,\n    0x00, 0x01, 0xfb, 0x83, 0x00, 0x68, 0x00, 0x00, 0x00, 0xd9, 0xfc, 0x00, 0x7c, 0xf1, 0xff, 0x83,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x03, 0xe8, 0x00, 0x64, 0x00, 0x28,\n    0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x16, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\n    0x00, 0x00, 0x10, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0x00, 0x00, 0x10, 0x00,\n    /* bank # 2 */\n    0x00, 0x28, 0x00, 0x00, 0xff, 0xff, 0x45, 0x81, 0xff, 0xff, 0xfa, 0x72, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x05, 0x00, 0x05, 0xba, 0xc6, 0x00, 0x47, 0x78, 0xa2,\n    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14,\n    0x00, 0x00, 0x25, 0x4d, 0x00, 0x2f, 0x70, 0x6d, 0x00, 0x00, 0x05, 0xae, 0x00, 0x0c, 0x02, 0xd0,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x64, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e,\n    0x00, 0x00, 0x0a, 0xc7, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xff, 0xff, 0xff, 0x9c,\n    0x00, 0x00, 0x0b, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x64,\n    0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    /* bank # 3 */\n    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x24, 0x26, 0xd3,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x96, 0x00, 0x3c,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x0c, 0x0a, 0x4e, 0x68, 0xcd, 0xcf, 0x77, 0x09, 0x50, 0x16, 0x67, 0x59, 0xc6, 0x19, 0xce, 0x82,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xd7, 0x84, 0x00, 0x03, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x93, 0x8f, 0x9d, 0x1e, 0x1b, 0x1c, 0x19,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x18, 0x85, 0x00, 0x00, 0x40, 0x00,\n    0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x67, 0x7d, 0xdf, 0x7e, 0x72, 0x90, 0x2e, 0x55, 0x4c, 0xf6, 0xe6, 0x88,\n    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\n    /* bank # 4 */\n    0xd8, 0xdc, 0xb4, 0xb8, 0xb0, 0xd8, 0xb9, 0xab, 0xf3, 0xf8, 0xfa, 0xb3, 0xb7, 0xbb, 0x8e, 0x9e,\n    0xae, 0xf1, 0x32, 0xf5, 0x1b, 0xf1, 0xb4, 0xb8, 0xb0, 0x80, 0x97, 0xf1, 0xa9, 0xdf, 0xdf, 0xdf,\n    0xaa, 0xdf, 0xdf, 0xdf, 0xf2, 0xaa, 0xc5, 0xcd, 0xc7, 0xa9, 0x0c, 0xc9, 0x2c, 0x97, 0xf1, 0xa9,\n    0x89, 0x26, 0x46, 0x66, 0xb2, 0x89, 0x99, 0xa9, 0x2d, 0x55, 0x7d, 0xb0, 0xb0, 0x8a, 0xa8, 0x96,\n    0x36, 0x56, 0x76, 0xf1, 0xba, 0xa3, 0xb4, 0xb2, 0x80, 0xc0, 0xb8, 0xa8, 0x97, 0x11, 0xb2, 0x83,\n    0x98, 0xba, 0xa3, 0xf0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xb2, 0xb9, 0xb4, 0x98, 0x83, 0xf1,\n    0xa3, 0x29, 0x55, 0x7d, 0xba, 0xb5, 0xb1, 0xa3, 0x83, 0x93, 0xf0, 0x00, 0x28, 0x50, 0xf5, 0xb2,\n    0xb6, 0xaa, 0x83, 0x93, 0x28, 0x54, 0x7c, 0xf1, 0xb9, 0xa3, 0x82, 0x93, 0x61, 0xba, 0xa2, 0xda,\n    0xde, 0xdf, 0xdb, 0x81, 0x9a, 0xb9, 0xae, 0xf5, 0x60, 0x68, 0x70, 0xf1, 0xda, 0xba, 0xa2, 0xdf,\n    0xd9, 0xba, 0xa2, 0xfa, 0xb9, 0xa3, 0x82, 0x92, 0xdb, 0x31, 0xba, 0xa2, 0xd9, 0xba, 0xa2, 0xf8,\n    0xdf, 0x85, 0xa4, 0xd0, 0xc1, 0xbb, 0xad, 0x83, 0xc2, 0xc5, 0xc7, 0xb8, 0xa2, 0xdf, 0xdf, 0xdf,\n    0xba, 0xa0, 0xdf, 0xdf, 0xdf, 0xd8, 0xd8, 0xf1, 0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35,\n    0x5d, 0xb2, 0xb6, 0xba, 0xaf, 0x8c, 0x96, 0x19, 0x8f, 0x9f, 0xa7, 0x0e, 0x16, 0x1e, 0xb4, 0x9a,\n    0xb8, 0xaa, 0x87, 0x2c, 0x54, 0x7c, 0xba, 0xa4, 0xb0, 0x8a, 0xb6, 0x91, 0x32, 0x56, 0x76, 0xb2,\n    0x84, 0x94, 0xa4, 0xc8, 0x08, 0xcd, 0xd8, 0xb8, 0xb4, 0xb0, 0xf1, 0x99, 0x82, 0xa8, 0x2d, 0x55,\n    0x7d, 0x98, 0xa8, 0x0e, 0x16, 0x1e, 0xa2, 0x2c, 0x54, 0x7c, 0x92, 0xa4, 0xf0, 0x2c, 0x50, 0x78,\n    /* bank # 5 */\n    0xf1, 0x84, 0xa8, 0x98, 0xc4, 0xcd, 0xfc, 0xd8, 0x0d, 0xdb, 0xa8, 0xfc, 0x2d, 0xf3, 0xd9, 0xba,\n    0xa6, 0xf8, 0xda, 0xba, 0xa6, 0xde, 0xd8, 0xba, 0xb2, 0xb6, 0x86, 0x96, 0xa6, 0xd0, 0xf3, 0xc8,\n    0x41, 0xda, 0xa6, 0xc8, 0xf8, 0xd8, 0xb0, 0xb4, 0xb8, 0x82, 0xa8, 0x92, 0xf5, 0x2c, 0x54, 0x88,\n    0x98, 0xf1, 0x35, 0xd9, 0xf4, 0x18, 0xd8, 0xf1, 0xa2, 0xd0, 0xf8, 0xf9, 0xa8, 0x84, 0xd9, 0xc7,\n    0xdf, 0xf8, 0xf8, 0x83, 0xc5, 0xda, 0xdf, 0x69, 0xdf, 0x83, 0xc1, 0xd8, 0xf4, 0x01, 0x14, 0xf1,\n    0xa8, 0x82, 0x4e, 0xa8, 0x84, 0xf3, 0x11, 0xd1, 0x82, 0xf5, 0xd9, 0x92, 0x28, 0x97, 0x88, 0xf1,\n    0x09, 0xf4, 0x1c, 0x1c, 0xd8, 0x84, 0xa8, 0xf3, 0xc0, 0xf9, 0xd1, 0xd9, 0x97, 0x82, 0xf1, 0x29,\n    0xf4, 0x0d, 0xd8, 0xf3, 0xf9, 0xf9, 0xd1, 0xd9, 0x82, 0xf4, 0xc2, 0x03, 0xd8, 0xde, 0xdf, 0x1a,\n    0xd8, 0xf1, 0xa2, 0xfa, 0xf9, 0xa8, 0x84, 0x98, 0xd9, 0xc7, 0xdf, 0xf8, 0xf8, 0xf8, 0x83, 0xc7,\n    0xda, 0xdf, 0x69, 0xdf, 0xf8, 0x83, 0xc3, 0xd8, 0xf4, 0x01, 0x14, 0xf1, 0x98, 0xa8, 0x82, 0x2e,\n    0xa8, 0x84, 0xf3, 0x11, 0xd1, 0x82, 0xf5, 0xd9, 0x92, 0x50, 0x97, 0x88, 0xf1, 0x09, 0xf4, 0x1c,\n    0xd8, 0x84, 0xa8, 0xf3, 0xc0, 0xf8, 0xf9, 0xd1, 0xd9, 0x97, 0x82, 0xf1, 0x49, 0xf4, 0x0d, 0xd8,\n    0xf3, 0xf9, 0xf9, 0xd1, 0xd9, 0x82, 0xf4, 0xc4, 0x03, 0xd8, 0xde, 0xdf, 0xd8, 0xf1, 0xad, 0x88,\n    0x98, 0xcc, 0xa8, 0x09, 0xf9, 0xd9, 0x82, 0x92, 0xa8, 0xf5, 0x7c, 0xf1, 0x88, 0x3a, 0xcf, 0x94,\n    0x4a, 0x6e, 0x98, 0xdb, 0x69, 0x31, 0xda, 0xad, 0xf2, 0xde, 0xf9, 0xd8, 0x87, 0x95, 0xa8, 0xf2,\n    0x21, 0xd1, 0xda, 0xa5, 0xf9, 0xf4, 0x17, 0xd9, 0xf1, 0xae, 0x8e, 0xd0, 0xc0, 0xc3, 0xae, 0x82,\n    /* bank # 6 */\n    0xc6, 0x84, 0xc3, 0xa8, 0x85, 0x95, 0xc8, 0xa5, 0x88, 0xf2, 0xc0, 0xf1, 0xf4, 0x01, 0x0e, 0xf1,\n    0x8e, 0x9e, 0xa8, 0xc6, 0x3e, 0x56, 0xf5, 0x54, 0xf1, 0x88, 0x72, 0xf4, 0x01, 0x15, 0xf1, 0x98,\n    0x45, 0x85, 0x6e, 0xf5, 0x8e, 0x9e, 0x04, 0x88, 0xf1, 0x42, 0x98, 0x5a, 0x8e, 0x9e, 0x06, 0x88,\n    0x69, 0xf4, 0x01, 0x1c, 0xf1, 0x98, 0x1e, 0x11, 0x08, 0xd0, 0xf5, 0x04, 0xf1, 0x1e, 0x97, 0x02,\n    0x02, 0x98, 0x36, 0x25, 0xdb, 0xf9, 0xd9, 0x85, 0xa5, 0xf3, 0xc1, 0xda, 0x85, 0xa5, 0xf3, 0xdf,\n    0xd8, 0x85, 0x95, 0xa8, 0xf3, 0x09, 0xda, 0xa5, 0xfa, 0xd8, 0x82, 0x92, 0xa8, 0xf5, 0x78, 0xf1,\n    0x88, 0x1a, 0x84, 0x9f, 0x26, 0x88, 0x98, 0x21, 0xda, 0xf4, 0x1d, 0xf3, 0xd8, 0x87, 0x9f, 0x39,\n    0xd1, 0xaf, 0xd9, 0xdf, 0xdf, 0xfb, 0xf9, 0xf4, 0x0c, 0xf3, 0xd8, 0xfa, 0xd0, 0xf8, 0xda, 0xf9,\n    0xf9, 0xd0, 0xdf, 0xd9, 0xf9, 0xd8, 0xf4, 0x0b, 0xd8, 0xf3, 0x87, 0x9f, 0x39, 0xd1, 0xaf, 0xd9,\n    0xdf, 0xdf, 0xf4, 0x1d, 0xf3, 0xd8, 0xfa, 0xfc, 0xa8, 0x69, 0xf9, 0xf9, 0xaf, 0xd0, 0xda, 0xde,\n    0xfa, 0xd9, 0xf8, 0x8f, 0x9f, 0xa8, 0xf1, 0xcc, 0xf3, 0x98, 0xdb, 0x45, 0xd9, 0xaf, 0xdf, 0xd0,\n    0xf8, 0xd8, 0xf1, 0x8f, 0x9f, 0xa8, 0xca, 0xf3, 0x88, 0x09, 0xda, 0xaf, 0x8f, 0xcb, 0xf8, 0xd8,\n    0xf2, 0xad, 0x97, 0x8d, 0x0c, 0xd9, 0xa5, 0xdf, 0xf9, 0xba, 0xa6, 0xf3, 0xfa, 0xf4, 0x12, 0xf2,\n    0xd8, 0x95, 0x0d, 0xd1, 0xd9, 0xba, 0xa6, 0xf3, 0xfa, 0xda, 0xa5, 0xf2, 0xc1, 0xba, 0xa6, 0xf3,\n    0xdf, 0xd8, 0xf1, 0xba, 0xb2, 0xb6, 0x86, 0x96, 0xa6, 0xd0, 0xca, 0xf3, 0x49, 0xda, 0xa6, 0xcb,\n    0xf8, 0xd8, 0xb0, 0xb4, 0xb8, 0xd8, 0xad, 0x84, 0xf2, 0xc0, 0xdf, 0xf1, 0x8f, 0xcb, 0xc3, 0xa8,\n    /* bank # 7 */\n    0xb2, 0xb6, 0x86, 0x96, 0xc8, 0xc1, 0xcb, 0xc3, 0xf3, 0xb0, 0xb4, 0x88, 0x98, 0xa8, 0x21, 0xdb,\n    0x71, 0x8d, 0x9d, 0x71, 0x85, 0x95, 0x21, 0xd9, 0xad, 0xf2, 0xfa, 0xd8, 0x85, 0x97, 0xa8, 0x28,\n    0xd9, 0xf4, 0x08, 0xd8, 0xf2, 0x8d, 0x29, 0xda, 0xf4, 0x05, 0xd9, 0xf2, 0x85, 0xa4, 0xc2, 0xf2,\n    0xd8, 0xa8, 0x8d, 0x94, 0x01, 0xd1, 0xd9, 0xf4, 0x11, 0xf2, 0xd8, 0x87, 0x21, 0xd8, 0xf4, 0x0a,\n    0xd8, 0xf2, 0x84, 0x98, 0xa8, 0xc8, 0x01, 0xd1, 0xd9, 0xf4, 0x11, 0xd8, 0xf3, 0xa4, 0xc8, 0xbb,\n    0xaf, 0xd0, 0xf2, 0xde, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xd8, 0xf1, 0xb8, 0xf6,\n    0xb5, 0xb9, 0xb0, 0x8a, 0x95, 0xa3, 0xde, 0x3c, 0xa3, 0xd9, 0xf8, 0xd8, 0x5c, 0xa3, 0xd9, 0xf8,\n    0xd8, 0x7c, 0xa3, 0xd9, 0xf8, 0xd8, 0xf8, 0xf9, 0xd1, 0xa5, 0xd9, 0xdf, 0xda, 0xfa, 0xd8, 0xb1,\n    0x85, 0x30, 0xf7, 0xd9, 0xde, 0xd8, 0xf8, 0x30, 0xad, 0xda, 0xde, 0xd8, 0xf2, 0xb4, 0x8c, 0x99,\n    0xa3, 0x2d, 0x55, 0x7d, 0xa0, 0x83, 0xdf, 0xdf, 0xdf, 0xb5, 0x91, 0xa0, 0xf6, 0x29, 0xd9, 0xfb,\n    0xd8, 0xa0, 0xfc, 0x29, 0xd9, 0xfa, 0xd8, 0xa0, 0xd0, 0x51, 0xd9, 0xf8, 0xd8, 0xfc, 0x51, 0xd9,\n    0xf9, 0xd8, 0x79, 0xd9, 0xfb, 0xd8, 0xa0, 0xd0, 0xfc, 0x79, 0xd9, 0xfa, 0xd8, 0xa1, 0xf9, 0xf9,\n    0xf9, 0xf9, 0xf9, 0xa0, 0xda, 0xdf, 0xdf, 0xdf, 0xd8, 0xa1, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xac,\n    0xde, 0xf8, 0xad, 0xde, 0x83, 0x93, 0xac, 0x2c, 0x54, 0x7c, 0xf1, 0xa8, 0xdf, 0xdf, 0xdf, 0xf6,\n    0x9d, 0x2c, 0xda, 0xa0, 0xdf, 0xd9, 0xfa, 0xdb, 0x2d, 0xf8, 0xd8, 0xa8, 0x50, 0xda, 0xa0, 0xd0,\n    0xde, 0xd9, 0xd0, 0xf8, 0xf8, 0xf8, 0xdb, 0x55, 0xf8, 0xd8, 0xa8, 0x78, 0xda, 0xa0, 0xd0, 0xdf,\n    /* bank # 8 */\n    0xd9, 0xd0, 0xfa, 0xf8, 0xf8, 0xf8, 0xf8, 0xdb, 0x7d, 0xf8, 0xd8, 0x9c, 0xa8, 0x8c, 0xf5, 0x30,\n    0xdb, 0x38, 0xd9, 0xd0, 0xde, 0xdf, 0xa0, 0xd0, 0xde, 0xdf, 0xd8, 0xa8, 0x48, 0xdb, 0x58, 0xd9,\n    0xdf, 0xd0, 0xde, 0xa0, 0xdf, 0xd0, 0xde, 0xd8, 0xa8, 0x68, 0xdb, 0x70, 0xd9, 0xdf, 0xdf, 0xa0,\n    0xdf, 0xdf, 0xd8, 0xf1, 0xa8, 0x88, 0x90, 0x2c, 0x54, 0x7c, 0x98, 0xa8, 0xd0, 0x5c, 0x38, 0xd1,\n    0xda, 0xf2, 0xae, 0x8c, 0xdf, 0xf9, 0xd8, 0xb0, 0x87, 0xa8, 0xc1, 0xc1, 0xb1, 0x88, 0xa8, 0xc6,\n    0xf9, 0xf9, 0xda, 0x36, 0xd8, 0xa8, 0xf9, 0xda, 0x36, 0xd8, 0xa8, 0xf9, 0xda, 0x36, 0xd8, 0xa8,\n    0xf9, 0xda, 0x36, 0xd8, 0xa8, 0xf9, 0xda, 0x36, 0xd8, 0xf7, 0x8d, 0x9d, 0xad, 0xf8, 0x18, 0xda,\n    0xf2, 0xae, 0xdf, 0xd8, 0xf7, 0xad, 0xfa, 0x30, 0xd9, 0xa4, 0xde, 0xf9, 0xd8, 0xf2, 0xae, 0xde,\n    0xfa, 0xf9, 0x83, 0xa7, 0xd9, 0xc3, 0xc5, 0xc7, 0xf1, 0x88, 0x9b, 0xa7, 0x7a, 0xad, 0xf7, 0xde,\n    0xdf, 0xa4, 0xf8, 0x84, 0x94, 0x08, 0xa7, 0x97, 0xf3, 0x00, 0xae, 0xf2, 0x98, 0x19, 0xa4, 0x88,\n    0xc6, 0xa3, 0x94, 0x88, 0xf6, 0x32, 0xdf, 0xf2, 0x83, 0x93, 0xdb, 0x09, 0xd9, 0xf2, 0xaa, 0xdf,\n    0xd8, 0xd8, 0xae, 0xf8, 0xf9, 0xd1, 0xda, 0xf3, 0xa4, 0xde, 0xa7, 0xf1, 0x88, 0x9b, 0x7a, 0xd8,\n    0xf3, 0x84, 0x94, 0xae, 0x19, 0xf9, 0xda, 0xaa, 0xf1, 0xdf, 0xd8, 0xa8, 0x81, 0xc0, 0xc3, 0xc5,\n    0xc7, 0xa3, 0x92, 0x83, 0xf6, 0x28, 0xad, 0xde, 0xd9, 0xf8, 0xd8, 0xa3, 0x50, 0xad, 0xd9, 0xf8,\n    0xd8, 0xa3, 0x78, 0xad, 0xd9, 0xf8, 0xd8, 0xf8, 0xf9, 0xd1, 0xa1, 0xda, 0xde, 0xc3, 0xc5, 0xc7,\n    0xd8, 0xa1, 0x81, 0x94, 0xf8, 0x18, 0xf2, 0xb0, 0x89, 0xac, 0xc3, 0xc5, 0xc7, 0xf1, 0xd8, 0xb8,\n    /* bank # 9 */\n    0xb4, 0xb0, 0x97, 0x86, 0xa8, 0x31, 0x9b, 0x06, 0x99, 0x07, 0xab, 0x97, 0x28, 0x88, 0x9b, 0xf0,\n    0x0c, 0x20, 0x14, 0x40, 0xb0, 0xb4, 0xb8, 0xf0, 0xa8, 0x8a, 0x9a, 0x28, 0x50, 0x78, 0xb7, 0x9b,\n    0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31, 0xf1, 0xbb, 0xab,\n    0x88, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0xb3, 0x8b, 0xb8, 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0xb0,\n    0x88, 0xb4, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xbb, 0xab, 0xb3, 0x8b, 0x02, 0x26, 0x46, 0x66, 0xb0,\n    0xb8, 0xf0, 0x8a, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x8b, 0x29, 0x51, 0x79, 0x8a, 0x24, 0x70, 0x59,\n    0x8b, 0x20, 0x58, 0x71, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, 0x40, 0x68, 0x8a, 0x64, 0x48, 0x31,\n    0x8b, 0x30, 0x49, 0x60, 0x88, 0xf1, 0xac, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0x8c, 0xa8, 0x04, 0x28,\n    0x50, 0x78, 0xf1, 0x88, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xac, 0x8c, 0x02, 0x26, 0x46, 0x66, 0xf0,\n    0x89, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31, 0xa9,\n    0x88, 0x09, 0x20, 0x59, 0x70, 0xab, 0x11, 0x38, 0x40, 0x69, 0xa8, 0x19, 0x31, 0x48, 0x60, 0x8c,\n    0xa8, 0x3c, 0x41, 0x5c, 0x20, 0x7c, 0x00, 0xf1, 0x87, 0x98, 0x19, 0x86, 0xa8, 0x6e, 0x76, 0x7e,\n    0xa9, 0x99, 0x88, 0x2d, 0x55, 0x7d, 0xd8, 0xb1, 0xb5, 0xb9, 0xa3, 0xdf, 0xdf, 0xdf, 0xae, 0xd0,\n    0xdf, 0xaa, 0xd0, 0xde, 0xf2, 0xab, 0xf8, 0xf9, 0xd9, 0xb0, 0x87, 0xc4, 0xaa, 0xf1, 0xdf, 0xdf,\n    0xbb, 0xaf, 0xdf, 0xdf, 0xb9, 0xd8, 0xb1, 0xf1, 0xa3, 0x97, 0x8e, 0x60, 0xdf, 0xb0, 0x84, 0xf2,\n    0xc8, 0xf8, 0xf9, 0xd9, 0xde, 0xd8, 0x93, 0x85, 0xf1, 0x4a, 0xb1, 0x83, 0xa3, 0x08, 0xb5, 0x83,\n    /* bank # 10 */\n    0x9a, 0x08, 0x10, 0xb7, 0x9f, 0x10, 0xd8, 0xf1, 0xb0, 0xba, 0xae, 0xb0, 0x8a, 0xc2, 0xb2, 0xb6,\n    0x8e, 0x9e, 0xf1, 0xfb, 0xd9, 0xf4, 0x1d, 0xd8, 0xf9, 0xd9, 0x0c, 0xf1, 0xd8, 0xf8, 0xf8, 0xad,\n    0x61, 0xd9, 0xae, 0xfb, 0xd8, 0xf4, 0x0c, 0xf1, 0xd8, 0xf8, 0xf8, 0xad, 0x19, 0xd9, 0xae, 0xfb,\n    0xdf, 0xd8, 0xf4, 0x16, 0xf1, 0xd8, 0xf8, 0xad, 0x8d, 0x61, 0xd9, 0xf4, 0xf4, 0xac, 0xf5, 0x9c,\n    0x9c, 0x8d, 0xdf, 0x2b, 0xba, 0xb6, 0xae, 0xfa, 0xf8, 0xf4, 0x0b, 0xd8, 0xf1, 0xae, 0xd0, 0xf8,\n    0xad, 0x51, 0xda, 0xae, 0xfa, 0xf8, 0xf1, 0xd8, 0xb9, 0xb1, 0xb6, 0xa3, 0x83, 0x9c, 0x08, 0xb9,\n    0xb1, 0x83, 0x9a, 0xb5, 0xaa, 0xc0, 0xfd, 0x30, 0x83, 0xb7, 0x9f, 0x10, 0xb5, 0x8b, 0x93, 0xf2,\n    0x02, 0x02, 0xd1, 0xab, 0xda, 0xde, 0xd8, 0xf1, 0xb0, 0x80, 0xba, 0xab, 0xc0, 0xc3, 0xb2, 0x84,\n    0xc1, 0xc3, 0xd8, 0xb1, 0xb9, 0xf3, 0x8b, 0xa3, 0x91, 0xb6, 0x09, 0xb4, 0xd9, 0xab, 0xde, 0xb0,\n    0x87, 0x9c, 0xb9, 0xa3, 0xdd, 0xf1, 0xb3, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0xb0, 0x87, 0xa3, 0xa3,\n    0xa3, 0xa3, 0xb2, 0x8b, 0xb6, 0x9b, 0xf2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,\n    0xa3, 0xf1, 0xb0, 0x87, 0xb5, 0x9a, 0xa3, 0xf3, 0x9b, 0xa3, 0xa3, 0xdc, 0xba, 0xac, 0xdf, 0xb9,\n    0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,\n    0xd8, 0xd8, 0xd8, 0xbb, 0xb3, 0xb7, 0xf1, 0xaa, 0xf9, 0xda, 0xff, 0xd9, 0x80, 0x9a, 0xaa, 0x28,\n    0xb4, 0x80, 0x98, 0xa7, 0x20, 0xb7, 0x97, 0x87, 0xa8, 0x66, 0x88, 0xf0, 0x79, 0x51, 0xf1, 0x90,\n    0x2c, 0x87, 0x0c, 0xa7, 0x81, 0x97, 0x62, 0x93, 0xf0, 0x71, 0x71, 0x60, 0x85, 0x94, 0x01, 0x29,\n    /* bank # 11 */\n    0x51, 0x79, 0x90, 0xa5, 0xf1, 0x28, 0x4c, 0x6c, 0x87, 0x0c, 0x95, 0x18, 0x85, 0x78, 0xa3, 0x83,\n    0x90, 0x28, 0x4c, 0x6c, 0x88, 0x6c, 0xd8, 0xf3, 0xa2, 0x82, 0x00, 0xf2, 0x10, 0xa8, 0x92, 0x19,\n    0x80, 0xa2, 0xf2, 0xd9, 0x26, 0xd8, 0xf1, 0x88, 0xa8, 0x4d, 0xd9, 0x48, 0xd8, 0x96, 0xa8, 0x39,\n    0x80, 0xd9, 0x3c, 0xd8, 0x95, 0x80, 0xa8, 0x39, 0xa6, 0x86, 0x98, 0xd9, 0x2c, 0xda, 0x87, 0xa7,\n    0x2c, 0xd8, 0xa8, 0x89, 0x95, 0x19, 0xa9, 0x80, 0xd9, 0x38, 0xd8, 0xa8, 0x89, 0x39, 0xa9, 0x80,\n    0xda, 0x3c, 0xd8, 0xa8, 0x2e, 0xa8, 0x39, 0x90, 0xd9, 0x0c, 0xd8, 0xa8, 0x95, 0x31, 0x98, 0xd9,\n    0x0c, 0xd8, 0xa8, 0x09, 0xd9, 0xff, 0xd8, 0x01, 0xda, 0xff, 0xd8, 0x95, 0x39, 0xa9, 0xda, 0x26,\n    0xff, 0xd8, 0x90, 0xa8, 0x0d, 0x89, 0x99, 0xa8, 0x10, 0x80, 0x98, 0x21, 0xda, 0x2e, 0xd8, 0x89,\n    0x99, 0xa8, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xa8, 0x86, 0x96, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xa8,\n    0x87, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xa8, 0x82, 0x92, 0xf3, 0x41, 0x80, 0xf1, 0xd9, 0x2e, 0xd8,\n    0xa8, 0x82, 0xf3, 0x19, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0x82, 0xac, 0xf3, 0xc0, 0xa2, 0x80, 0x22,\n    0xf1, 0xa6, 0x2e, 0xa7, 0x2e, 0xa9, 0x22, 0x98, 0xa8, 0x29, 0xda, 0xac, 0xde, 0xff, 0xd8, 0xa2,\n    0xf2, 0x2a, 0xf1, 0xa9, 0x2e, 0x82, 0x92, 0xa8, 0xf2, 0x31, 0x80, 0xa6, 0x96, 0xf1, 0xd9, 0x00,\n    0xac, 0x8c, 0x9c, 0x0c, 0x30, 0xac, 0xde, 0xd0, 0xde, 0xff, 0xd8, 0x8c, 0x9c, 0xac, 0xd0, 0x10,\n    0xac, 0xde, 0x80, 0x92, 0xa2, 0xf2, 0x4c, 0x82, 0xa8, 0xf1, 0xca, 0xf2, 0x35, 0xf1, 0x96, 0x88,\n    0xa6, 0xd9, 0x00, 0xd8, 0xf1, 0xff\n};\n\nstatic const unsigned short sStartAddress = 0x0400;\n\n/* END OF SECTION COPIED FROM dmpDefaultMPU6050.c */\n\n#define INT_SRC_TAP             (0x01)\n#define INT_SRC_ANDROID_ORIENT  (0x08)\n\n#define DMP_FEATURE_SEND_ANY_GYRO   (DMP_FEATURE_SEND_RAW_GYRO | \\\n                                     DMP_FEATURE_SEND_CAL_GYRO)\n\n#define MAX_PACKET_LENGTH   (32)\n\n#define DMP_SAMPLE_RATE     (200)\n#define GYRO_SF             (46850825LL * 200 / DMP_SAMPLE_RATE)\n\n#define FIFO_CORRUPTION_CHECK\n#ifdef FIFO_CORRUPTION_CHECK\n#define QUAT_ERROR_THRESH       (1L<<24)\n#define QUAT_MAG_SQ_NORMALIZED  (1L<<28)\n#define QUAT_MAG_SQ_MIN         (QUAT_MAG_SQ_NORMALIZED - QUAT_ERROR_THRESH)\n#define QUAT_MAG_SQ_MAX         (QUAT_MAG_SQ_NORMALIZED + QUAT_ERROR_THRESH)\n#endif\n\nstruct dmp_s {\n    void (*tap_cb)(unsigned char count, unsigned char direction);\n    void (*android_orient_cb)(unsigned char orientation);\n    unsigned short orient;\n    unsigned short feature_mask;\n    unsigned short fifo_rate;\n    unsigned char packet_length;\n};\n\nstatic struct dmp_s dmp = {\n    .tap_cb = NULL,\n    .android_orient_cb = NULL,\n    .orient = 0,\n    .feature_mask = 0,\n    .fifo_rate = 0,\n    .packet_length = 0\n};\n\n/**\n *  @brief  Load the DMP with this image.\n *  @return 0 if successful.\n */\nint dmp_load_motion_driver_firmware(void)\n{\n    return mpu_load_firmware(DMP_CODE_SIZE, dmp_memory, sStartAddress,\n        DMP_SAMPLE_RATE);\n}\n\n/**\n *  @brief      Push gyro and accel orientation to the DMP.\n *  The orientation is represented here as the output of\n *  @e inv_orientation_matrix_to_scalar.\n *  @param[in]  orient  Gyro and accel orientation in body frame.\n *  @return     0 if successful.\n */\nint dmp_set_orientation(unsigned short orient)\n{\n    unsigned char gyro_regs[3], accel_regs[3];\n    const unsigned char gyro_axes[3] = {DINA4C, DINACD, DINA6C};\n    const unsigned char accel_axes[3] = {DINA0C, DINAC9, DINA2C};\n    const unsigned char gyro_sign[3] = {DINA36, DINA56, DINA76};\n    const unsigned char accel_sign[3] = {DINA26, DINA46, DINA66};\n\n    gyro_regs[0] = gyro_axes[orient & 3];\n    gyro_regs[1] = gyro_axes[(orient >> 3) & 3];\n    gyro_regs[2] = gyro_axes[(orient >> 6) & 3];\n    accel_regs[0] = accel_axes[orient & 3];\n    accel_regs[1] = accel_axes[(orient >> 3) & 3];\n    accel_regs[2] = accel_axes[(orient >> 6) & 3];\n\n    /* Chip-to-body, axes only. */\n    if (mpu_write_mem(FCFG_1, 3, gyro_regs))\n        return -1;\n    if (mpu_write_mem(FCFG_2, 3, accel_regs))\n        return -1;\n\n    memcpy(gyro_regs, gyro_sign, 3);\n    memcpy(accel_regs, accel_sign, 3);\n    if (orient & 4) {\n        gyro_regs[0] |= 1;\n        accel_regs[0] |= 1;\n    }\n    if (orient & 0x20) {\n        gyro_regs[1] |= 1;\n        accel_regs[1] |= 1;\n    }\n    if (orient & 0x100) {\n        gyro_regs[2] |= 1;\n        accel_regs[2] |= 1;\n    }\n\n    /* Chip-to-body, sign only. */\n    if (mpu_write_mem(FCFG_3, 3, gyro_regs))\n        return -1;\n    if (mpu_write_mem(FCFG_7, 3, accel_regs))\n        return -1;\n    dmp.orient = orient;\n    return 0;\n}\n\n/**\n *  @brief      Push gyro biases to the DMP.\n *  Because the gyro integration is handled in the DMP, any gyro biases\n *  calculated by the MPL should be pushed down to DMP memory to remove\n *  3-axis quaternion drift.\n *  \\n NOTE: If the DMP-based gyro calibration is enabled, the DMP will\n *  overwrite the biases written to this location once a new one is computed.\n *  @param[in]  bias    Gyro biases in q16.\n *  @return     0 if successful.\n */\nint dmp_set_gyro_bias(long *bias)\n{\n    long gyro_bias_body[3];\n    unsigned char regs[4];\n\n    gyro_bias_body[0] = bias[dmp.orient & 3];\n    if (dmp.orient & 4)\n        gyro_bias_body[0] *= -1;\n    gyro_bias_body[1] = bias[(dmp.orient >> 3) & 3];\n    if (dmp.orient & 0x20)\n        gyro_bias_body[1] *= -1;\n    gyro_bias_body[2] = bias[(dmp.orient >> 6) & 3];\n    if (dmp.orient & 0x100)\n        gyro_bias_body[2] *= -1;\n\n#ifdef EMPL_NO_64BIT\n    gyro_bias_body[0] = (long)(((float)gyro_bias_body[0] * GYRO_SF) / 1073741824.f);\n    gyro_bias_body[1] = (long)(((float)gyro_bias_body[1] * GYRO_SF) / 1073741824.f);\n    gyro_bias_body[2] = (long)(((float)gyro_bias_body[2] * GYRO_SF) / 1073741824.f);\n#else\n    gyro_bias_body[0] = (long)(((long long)gyro_bias_body[0] * GYRO_SF) >> 30);\n    gyro_bias_body[1] = (long)(((long long)gyro_bias_body[1] * GYRO_SF) >> 30);\n    gyro_bias_body[2] = (long)(((long long)gyro_bias_body[2] * GYRO_SF) >> 30);\n#endif\n\n    regs[0] = (unsigned char)((gyro_bias_body[0] >> 24) & 0xFF);\n    regs[1] = (unsigned char)((gyro_bias_body[0] >> 16) & 0xFF);\n    regs[2] = (unsigned char)((gyro_bias_body[0] >> 8) & 0xFF);\n    regs[3] = (unsigned char)(gyro_bias_body[0] & 0xFF);\n    if (mpu_write_mem(D_EXT_GYRO_BIAS_X, 4, regs))\n        return -1;\n\n    regs[0] = (unsigned char)((gyro_bias_body[1] >> 24) & 0xFF);\n    regs[1] = (unsigned char)((gyro_bias_body[1] >> 16) & 0xFF);\n    regs[2] = (unsigned char)((gyro_bias_body[1] >> 8) & 0xFF);\n    regs[3] = (unsigned char)(gyro_bias_body[1] & 0xFF);\n    if (mpu_write_mem(D_EXT_GYRO_BIAS_Y, 4, regs))\n        return -1;\n\n    regs[0] = (unsigned char)((gyro_bias_body[2] >> 24) & 0xFF);\n    regs[1] = (unsigned char)((gyro_bias_body[2] >> 16) & 0xFF);\n    regs[2] = (unsigned char)((gyro_bias_body[2] >> 8) & 0xFF);\n    regs[3] = (unsigned char)(gyro_bias_body[2] & 0xFF);\n    return mpu_write_mem(D_EXT_GYRO_BIAS_Z, 4, regs);\n}\n\n/**\n *  @brief      Push accel biases to the DMP.\n *  These biases will be removed from the DMP 6-axis quaternion.\n *  @param[in]  bias    Accel biases in q16.\n *  @return     0 if successful.\n */\nint dmp_set_accel_bias(long *bias)\n{\n    long accel_bias_body[3];\n    unsigned char regs[12];\n    long long accel_sf;\n    unsigned short accel_sens;\n\n    mpu_get_accel_sens(&accel_sens);\n    accel_sf = (long long)accel_sens << 15;\n    // __no_operation();\n\n    accel_bias_body[0] = bias[dmp.orient & 3];\n    if (dmp.orient & 4)\n        accel_bias_body[0] *= -1;\n    accel_bias_body[1] = bias[(dmp.orient >> 3) & 3];\n    if (dmp.orient & 0x20)\n        accel_bias_body[1] *= -1;\n    accel_bias_body[2] = bias[(dmp.orient >> 6) & 3];\n    if (dmp.orient & 0x100)\n        accel_bias_body[2] *= -1;\n\n#ifdef EMPL_NO_64BIT\n    accel_bias_body[0] = (long)(((float)accel_bias_body[0] * accel_sf) / 1073741824.f);\n    accel_bias_body[1] = (long)(((float)accel_bias_body[1] * accel_sf) / 1073741824.f);\n    accel_bias_body[2] = (long)(((float)accel_bias_body[2] * accel_sf) / 1073741824.f);\n#else\n    accel_bias_body[0] = (long)(((long long)accel_bias_body[0] * accel_sf) >> 30);\n    accel_bias_body[1] = (long)(((long long)accel_bias_body[1] * accel_sf) >> 30);\n    accel_bias_body[2] = (long)(((long long)accel_bias_body[2] * accel_sf) >> 30);\n#endif\n\n    regs[0] = (unsigned char)((accel_bias_body[0] >> 24) & 0xFF);\n    regs[1] = (unsigned char)((accel_bias_body[0] >> 16) & 0xFF);\n    regs[2] = (unsigned char)((accel_bias_body[0] >> 8) & 0xFF);\n    regs[3] = (unsigned char)(accel_bias_body[0] & 0xFF);\n    regs[4] = (unsigned char)((accel_bias_body[1] >> 24) & 0xFF);\n    regs[5] = (unsigned char)((accel_bias_body[1] >> 16) & 0xFF);\n    regs[6] = (unsigned char)((accel_bias_body[1] >> 8) & 0xFF);\n    regs[7] = (unsigned char)(accel_bias_body[1] & 0xFF);\n    regs[8] = (unsigned char)((accel_bias_body[2] >> 24) & 0xFF);\n    regs[9] = (unsigned char)((accel_bias_body[2] >> 16) & 0xFF);\n    regs[10] = (unsigned char)((accel_bias_body[2] >> 8) & 0xFF);\n    regs[11] = (unsigned char)(accel_bias_body[2] & 0xFF);\n    return mpu_write_mem(D_ACCEL_BIAS, 12, regs);\n}\n\n/**\n *  @brief      Set DMP output rate.\n *  Only used when DMP is on.\n *  @param[in]  rate    Desired fifo rate (Hz).\n *  @return     0 if successful.\n */\nint dmp_set_fifo_rate(unsigned short rate)\n{\n    const unsigned char regs_end[12] = {DINAFE, DINAF2, DINAAB,\n        0xc4, DINAAA, DINAF1, DINADF, DINADF, 0xBB, 0xAF, DINADF, DINADF};\n    unsigned short div;\n    unsigned char tmp[8];\n\n    if (rate > DMP_SAMPLE_RATE)\n        return -1;\n    div = DMP_SAMPLE_RATE / rate - 1;\n    tmp[0] = (unsigned char)((div >> 8) & 0xFF);\n    tmp[1] = (unsigned char)(div & 0xFF);\n    if (mpu_write_mem(D_0_22, 2, tmp))\n        return -1;\n    if (mpu_write_mem(CFG_6, 12, (unsigned char*)regs_end))\n        return -1;\n\n    dmp.fifo_rate = rate;\n    return 0;\n}\n\n/**\n *  @brief      Get DMP output rate.\n *  @param[out] rate    Current fifo rate (Hz).\n *  @return     0 if successful.\n */\nint dmp_get_fifo_rate(unsigned short *rate)\n{\n    rate[0] = dmp.fifo_rate;\n    return 0;\n}\n\n/**\n *  @brief      Set tap threshold for a specific axis.\n *  @param[in]  axis    1, 2, and 4 for XYZ accel, respectively.\n *  @param[in]  thresh  Tap threshold, in mg/ms.\n *  @return     0 if successful.\n */\nint dmp_set_tap_thresh(unsigned char axis, unsigned short thresh)\n{\n    unsigned char tmp[4], accel_fsr;\n    float scaled_thresh;\n    unsigned short dmp_thresh, dmp_thresh_2;\n    if (!(axis & TAP_XYZ) || thresh > 1600)\n        return -1;\n\n    scaled_thresh = (float)thresh / DMP_SAMPLE_RATE;\n\n    mpu_get_accel_fsr(&accel_fsr);\n    switch (accel_fsr) {\n    case 2:\n        dmp_thresh = (unsigned short)(scaled_thresh * 16384);\n        /* dmp_thresh * 0.75 */\n        dmp_thresh_2 = (unsigned short)(scaled_thresh * 12288);\n        break;\n    case 4:\n        dmp_thresh = (unsigned short)(scaled_thresh * 8192);\n        /* dmp_thresh * 0.75 */\n        dmp_thresh_2 = (unsigned short)(scaled_thresh * 6144);\n        break;\n    case 8:\n        dmp_thresh = (unsigned short)(scaled_thresh * 4096);\n        /* dmp_thresh * 0.75 */\n        dmp_thresh_2 = (unsigned short)(scaled_thresh * 3072);\n        break;\n    case 16:\n        dmp_thresh = (unsigned short)(scaled_thresh * 2048);\n        /* dmp_thresh * 0.75 */\n        dmp_thresh_2 = (unsigned short)(scaled_thresh * 1536);\n        break;\n    default:\n        return -1;\n    }\n    tmp[0] = (unsigned char)(dmp_thresh >> 8);\n    tmp[1] = (unsigned char)(dmp_thresh & 0xFF);\n    tmp[2] = (unsigned char)(dmp_thresh_2 >> 8);\n    tmp[3] = (unsigned char)(dmp_thresh_2 & 0xFF);\n\n    if (axis & TAP_X) {\n        if (mpu_write_mem(DMP_TAP_THX, 2, tmp))\n            return -1;\n        if (mpu_write_mem(D_1_36, 2, tmp+2))\n            return -1;\n    }\n    if (axis & TAP_Y) {\n        if (mpu_write_mem(DMP_TAP_THY, 2, tmp))\n            return -1;\n        if (mpu_write_mem(D_1_40, 2, tmp+2))\n            return -1;\n    }\n    if (axis & TAP_Z) {\n        if (mpu_write_mem(DMP_TAP_THZ, 2, tmp))\n            return -1;\n        if (mpu_write_mem(D_1_44, 2, tmp+2))\n            return -1;\n    }\n    return 0;\n}\n\n/**\n *  @brief      Set which axes will register a tap.\n *  @param[in]  axis    1, 2, and 4 for XYZ, respectively.\n *  @return     0 if successful.\n */\nint dmp_set_tap_axes(unsigned char axis)\n{\n    unsigned char tmp = 0;\n\n    if (axis & TAP_X)\n        tmp |= 0x30;\n    if (axis & TAP_Y)\n        tmp |= 0x0C;\n    if (axis & TAP_Z)\n        tmp |= 0x03;\n    return mpu_write_mem(D_1_72, 1, &tmp);\n}\n\n/**\n *  @brief      Set minimum number of taps needed for an interrupt.\n *  @param[in]  min_taps    Minimum consecutive taps (1-4).\n *  @return     0 if successful.\n */\nint dmp_set_tap_count(unsigned char min_taps)\n{\n    unsigned char tmp;\n\n    if (min_taps < 1)\n        min_taps = 1;\n    else if (min_taps > 4)\n        min_taps = 4;\n\n    tmp = min_taps - 1;\n    return mpu_write_mem(D_1_79, 1, &tmp);\n}\n\n/**\n *  @brief      Set length between valid taps.\n *  @param[in]  time    Milliseconds between taps.\n *  @return     0 if successful.\n */\nint dmp_set_tap_time(unsigned short time)\n{\n    unsigned short dmp_time;\n    unsigned char tmp[2];\n\n    dmp_time = time / (1000 / DMP_SAMPLE_RATE);\n    tmp[0] = (unsigned char)(dmp_time >> 8);\n    tmp[1] = (unsigned char)(dmp_time & 0xFF);\n    return mpu_write_mem(DMP_TAPW_MIN, 2, tmp);\n}\n\n/**\n *  @brief      Set max time between taps to register as a multi-tap.\n *  @param[in]  time    Max milliseconds between taps.\n *  @return     0 if successful.\n */\nint dmp_set_tap_time_multi(unsigned short time)\n{\n    unsigned short dmp_time;\n    unsigned char tmp[2];\n\n    dmp_time = time / (1000 / DMP_SAMPLE_RATE);\n    tmp[0] = (unsigned char)(dmp_time >> 8);\n    tmp[1] = (unsigned char)(dmp_time & 0xFF);\n    return mpu_write_mem(D_1_218, 2, tmp);\n}\n\n/**\n *  @brief      Set shake rejection threshold.\n *  If the DMP detects a gyro sample larger than @e thresh, taps are rejected.\n *  @param[in]  sf      Gyro scale factor.\n *  @param[in]  thresh  Gyro threshold in dps.\n *  @return     0 if successful.\n */\nint dmp_set_shake_reject_thresh(long sf, unsigned short thresh)\n{\n    unsigned char tmp[4];\n    long thresh_scaled = sf / 1000 * thresh;\n    tmp[0] = (unsigned char)(((long)thresh_scaled >> 24) & 0xFF);\n    tmp[1] = (unsigned char)(((long)thresh_scaled >> 16) & 0xFF);\n    tmp[2] = (unsigned char)(((long)thresh_scaled >> 8) & 0xFF);\n    tmp[3] = (unsigned char)((long)thresh_scaled & 0xFF);\n    return mpu_write_mem(D_1_92, 4, tmp);\n}\n\n/**\n *  @brief      Set shake rejection time.\n *  Sets the length of time that the gyro must be outside of the threshold set\n *  by @e gyro_set_shake_reject_thresh before taps are rejected. A mandatory\n *  60 ms is added to this parameter.\n *  @param[in]  time    Time in milliseconds.\n *  @return     0 if successful.\n */\nint dmp_set_shake_reject_time(unsigned short time)\n{\n    unsigned char tmp[2];\n\n    time /= (1000 / DMP_SAMPLE_RATE);\n    tmp[0] = time >> 8;\n    tmp[1] = time & 0xFF;\n    return mpu_write_mem(D_1_90,2,tmp);\n}\n\n/**\n *  @brief      Set shake rejection timeout.\n *  Sets the length of time after a shake rejection that the gyro must stay\n *  inside of the threshold before taps can be detected again. A mandatory\n *  60 ms is added to this parameter.\n *  @param[in]  time    Time in milliseconds.\n *  @return     0 if successful.\n */\nint dmp_set_shake_reject_timeout(unsigned short time)\n{\n    unsigned char tmp[2];\n\n    time /= (1000 / DMP_SAMPLE_RATE);\n    tmp[0] = time >> 8;\n    tmp[1] = time & 0xFF;\n    return mpu_write_mem(D_1_88,2,tmp);\n}\n\n/**\n *  @brief      Get current step count.\n *  @param[out] count   Number of steps detected.\n *  @return     0 if successful.\n */\nint dmp_get_pedometer_step_count(unsigned long *count)\n{\n    unsigned char tmp[4];\n    if (!count)\n        return -1;\n\n    if (mpu_read_mem(D_PEDSTD_STEPCTR, 4, tmp))\n        return -1;\n\n    count[0] = ((unsigned long)tmp[0] << 24) | ((unsigned long)tmp[1] << 16) |\n        ((unsigned long)tmp[2] << 8) | tmp[3];\n    return 0;\n}\n\n/**\n *  @brief      Overwrite current step count.\n *  WARNING: This function writes to DMP memory and could potentially encounter\n *  a race condition if called while the pedometer is enabled.\n *  @param[in]  count   New step count.\n *  @return     0 if successful.\n */\nint dmp_set_pedometer_step_count(unsigned long count)\n{\n    unsigned char tmp[4];\n\n    tmp[0] = (unsigned char)((count >> 24) & 0xFF);\n    tmp[1] = (unsigned char)((count >> 16) & 0xFF);\n    tmp[2] = (unsigned char)((count >> 8) & 0xFF);\n    tmp[3] = (unsigned char)(count & 0xFF);\n    return mpu_write_mem(D_PEDSTD_STEPCTR, 4, tmp);\n}\n\n/**\n *  @brief      Get duration of walking time.\n *  @param[in]  time    Walk time in milliseconds.\n *  @return     0 if successful.\n */\nint dmp_get_pedometer_walk_time(unsigned long *time)\n{\n    unsigned char tmp[4];\n    if (!time)\n        return -1;\n\n    if (mpu_read_mem(D_PEDSTD_TIMECTR, 4, tmp))\n        return -1;\n\n    time[0] = (((unsigned long)tmp[0] << 24) | ((unsigned long)tmp[1] << 16) |\n        ((unsigned long)tmp[2] << 8) | tmp[3]) * 20;\n    return 0;\n}\n\n/**\n *  @brief      Overwrite current walk time.\n *  WARNING: This function writes to DMP memory and could potentially encounter\n *  a race condition if called while the pedometer is enabled.\n *  @param[in]  time    New walk time in milliseconds.\n */\nint dmp_set_pedometer_walk_time(unsigned long time)\n{\n    unsigned char tmp[4];\n\n    time /= 20;\n\n    tmp[0] = (unsigned char)((time >> 24) & 0xFF);\n    tmp[1] = (unsigned char)((time >> 16) & 0xFF);\n    tmp[2] = (unsigned char)((time >> 8) & 0xFF);\n    tmp[3] = (unsigned char)(time & 0xFF);\n    return mpu_write_mem(D_PEDSTD_TIMECTR, 4, tmp);\n}\n\n/**\n *  @brief      Enable DMP features.\n *  The following \\#define's are used in the input mask:\n *  \\n DMP_FEATURE_TAP\n *  \\n DMP_FEATURE_ANDROID_ORIENT\n *  \\n DMP_FEATURE_LP_QUAT\n *  \\n DMP_FEATURE_6X_LP_QUAT\n *  \\n DMP_FEATURE_GYRO_CAL\n *  \\n DMP_FEATURE_SEND_RAW_ACCEL\n *  \\n DMP_FEATURE_SEND_RAW_GYRO\n *  \\n NOTE: DMP_FEATURE_LP_QUAT and DMP_FEATURE_6X_LP_QUAT are mutually\n *  exclusive.\n *  \\n NOTE: DMP_FEATURE_SEND_RAW_GYRO and DMP_FEATURE_SEND_CAL_GYRO are also\n *  mutually exclusive.\n *  @param[in]  mask    Mask of features to enable.\n *  @return     0 if successful.\n */\nint dmp_enable_feature(unsigned short mask)\n{\n    unsigned char tmp[10];\n\n    /* TODO: All of these settings can probably be integrated into the default\n     * DMP image.\n     */\n    /* Set integration scale factor. */\n    tmp[0] = (unsigned char)((GYRO_SF >> 24) & 0xFF);\n    tmp[1] = (unsigned char)((GYRO_SF >> 16) & 0xFF);\n    tmp[2] = (unsigned char)((GYRO_SF >> 8) & 0xFF);\n    tmp[3] = (unsigned char)(GYRO_SF & 0xFF);\n    mpu_write_mem(D_0_104, 4, tmp);\n\n    /* Send sensor data to the FIFO. */\n    tmp[0] = 0xA3;\n    if (mask & DMP_FEATURE_SEND_RAW_ACCEL) {\n        tmp[1] = 0xC0;\n        tmp[2] = 0xC8;\n        tmp[3] = 0xC2;\n    } else {\n        tmp[1] = 0xA3;\n        tmp[2] = 0xA3;\n        tmp[3] = 0xA3;\n    }\n    if (mask & DMP_FEATURE_SEND_ANY_GYRO) {\n        tmp[4] = 0xC4;\n        tmp[5] = 0xCC;\n        tmp[6] = 0xC6;\n    } else {\n        tmp[4] = 0xA3;\n        tmp[5] = 0xA3;\n        tmp[6] = 0xA3;\n    }\n    tmp[7] = 0xA3;\n    tmp[8] = 0xA3;\n    tmp[9] = 0xA3;\n    mpu_write_mem(CFG_15,10,tmp);\n\n    /* Send gesture data to the FIFO. */\n    if (mask & (DMP_FEATURE_TAP | DMP_FEATURE_ANDROID_ORIENT))\n        tmp[0] = DINA20;\n    else\n        tmp[0] = 0xD8;\n    mpu_write_mem(CFG_27,1,tmp);\n\n    if (mask & DMP_FEATURE_GYRO_CAL)\n        dmp_enable_gyro_cal(1);\n    else\n        dmp_enable_gyro_cal(0);\n\n    if (mask & DMP_FEATURE_SEND_ANY_GYRO) {\n        if (mask & DMP_FEATURE_SEND_CAL_GYRO) {\n            tmp[0] = 0xB2;\n            tmp[1] = 0x8B;\n            tmp[2] = 0xB6;\n            tmp[3] = 0x9B;\n        } else {\n            tmp[0] = DINAC0;\n            tmp[1] = DINA80;\n            tmp[2] = DINAC2;\n            tmp[3] = DINA90;\n        }\n        mpu_write_mem(CFG_GYRO_RAW_DATA, 4, tmp);\n    }\n\n    if (mask & DMP_FEATURE_TAP) {\n        /* Enable tap. */\n        tmp[0] = 0xF8;\n        mpu_write_mem(CFG_20, 1, tmp);\n        dmp_set_tap_thresh(TAP_XYZ, 250);\n        dmp_set_tap_axes(TAP_XYZ);\n        dmp_set_tap_count(1);\n        dmp_set_tap_time(100);\n        dmp_set_tap_time_multi(500);\n\n        dmp_set_shake_reject_thresh(GYRO_SF, 200);\n        dmp_set_shake_reject_time(40);\n        dmp_set_shake_reject_timeout(10);\n    } else {\n        tmp[0] = 0xD8;\n        mpu_write_mem(CFG_20, 1, tmp);\n    }\n\n    if (mask & DMP_FEATURE_ANDROID_ORIENT) {\n        tmp[0] = 0xD9;\n    } else\n        tmp[0] = 0xD8;\n    mpu_write_mem(CFG_ANDROID_ORIENT_INT, 1, tmp);\n\n    if (mask & DMP_FEATURE_LP_QUAT)\n        dmp_enable_lp_quat(1);\n    else\n        dmp_enable_lp_quat(0);\n\n    if (mask & DMP_FEATURE_6X_LP_QUAT)\n        dmp_enable_6x_lp_quat(1);\n    else\n        dmp_enable_6x_lp_quat(0);\n\n    /* Pedometer is always enabled. */\n    dmp.feature_mask = mask | DMP_FEATURE_PEDOMETER;\n    mpu_reset_fifo();\n\n    dmp.packet_length = 0;\n    if (mask & DMP_FEATURE_SEND_RAW_ACCEL)\n        dmp.packet_length += 6;\n    if (mask & DMP_FEATURE_SEND_ANY_GYRO)\n        dmp.packet_length += 6;\n    if (mask & (DMP_FEATURE_LP_QUAT | DMP_FEATURE_6X_LP_QUAT))\n        dmp.packet_length += 16;\n    if (mask & (DMP_FEATURE_TAP | DMP_FEATURE_ANDROID_ORIENT))\n        dmp.packet_length += 4;\n\n    return 0;\n}\n\n/**\n *  @brief      Get list of currently enabled DMP features.\n *  @param[out] Mask of enabled features.\n *  @return     0 if successful.\n */\nint dmp_get_enabled_features(unsigned short *mask)\n{\n    mask[0] = dmp.feature_mask;\n    return 0;\n}\n\n/**\n *  @brief      Calibrate the gyro data in the DMP.\n *  After eight seconds of no motion, the DMP will compute gyro biases and\n *  subtract them from the quaternion output. If @e dmp_enable_feature is\n *  called with @e DMP_FEATURE_SEND_CAL_GYRO, the biases will also be\n *  subtracted from the gyro output.\n *  @param[in]  enable  1 to enable gyro calibration.\n *  @return     0 if successful.\n */\nint dmp_enable_gyro_cal(unsigned char enable)\n{\n    if (enable) {\n        unsigned char regs[9] = {0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35, 0x5d};\n        return mpu_write_mem(CFG_MOTION_BIAS, 9, regs);\n    } else {\n        unsigned char regs[9] = {0xb8, 0xaa, 0xaa, 0xaa, 0xb0, 0x88, 0xc3, 0xc5, 0xc7};\n        return mpu_write_mem(CFG_MOTION_BIAS, 9, regs);\n    }\n}\n\n/**\n *  @brief      Generate 3-axis quaternions from the DMP.\n *  In this driver, the 3-axis and 6-axis DMP quaternion features are mutually\n *  exclusive.\n *  @param[in]  enable  1 to enable 3-axis quaternion.\n *  @return     0 if successful.\n */\nint dmp_enable_lp_quat(unsigned char enable)\n{\n    unsigned char regs[4];\n    if (enable) {\n        regs[0] = DINBC0;\n        regs[1] = DINBC2;\n        regs[2] = DINBC4;\n        regs[3] = DINBC6;\n    }\n    else\n        memset(regs, 0x8B, 4);\n\n    mpu_write_mem(CFG_LP_QUAT, 4, regs);\n\n    return mpu_reset_fifo();\n}\n\n/**\n *  @brief       Generate 6-axis quaternions from the DMP.\n *  In this driver, the 3-axis and 6-axis DMP quaternion features are mutually\n *  exclusive.\n *  @param[in]   enable  1 to enable 6-axis quaternion.\n *  @return      0 if successful.\n */\nint dmp_enable_6x_lp_quat(unsigned char enable)\n{\n    unsigned char regs[4];\n    if (enable) {\n        regs[0] = DINA20;\n        regs[1] = DINA28;\n        regs[2] = DINA30;\n        regs[3] = DINA38;\n    } else\n        memset(regs, 0xA3, 4);\n\n    mpu_write_mem(CFG_8, 4, regs);\n\n    return mpu_reset_fifo();\n}\n\n/**\n *  @brief      Decode the four-byte gesture data and execute any callbacks.\n *  @param[in]  gesture Gesture data from DMP packet.\n *  @return     0 if successful.\n */\nstatic int decode_gesture(unsigned char *gesture)\n{\n    unsigned char tap, android_orient;\n\n    android_orient = gesture[3] & 0xC0;\n    tap = 0x3F & gesture[3];\n\n    if (gesture[1] & INT_SRC_TAP) {\n        unsigned char direction, count;\n        direction = tap >> 3;\n        count = (tap % 8) + 1;\n        if (dmp.tap_cb)\n            dmp.tap_cb(direction, count);\n    }\n\n    if (gesture[1] & INT_SRC_ANDROID_ORIENT) {\n        if (dmp.android_orient_cb)\n            dmp.android_orient_cb(android_orient >> 6);\n    }\n\n    return 0;\n}\n\n/**\n *  @brief      Specify when a DMP interrupt should occur.\n *  A DMP interrupt can be configured to trigger on either of the two\n *  conditions below:\n *  \\n a. One FIFO period has elapsed (set by @e mpu_set_sample_rate).\n *  \\n b. A tap event has been detected.\n *  @param[in]  mode    DMP_INT_GESTURE or DMP_INT_CONTINUOUS.\n *  @return     0 if successful.\n */\nint dmp_set_interrupt_mode(unsigned char mode)\n{\n    const unsigned char regs_continuous[11] =\n        {0xd8, 0xb1, 0xb9, 0xf3, 0x8b, 0xa3, 0x91, 0xb6, 0x09, 0xb4, 0xd9};\n    const unsigned char regs_gesture[11] =\n        {0xda, 0xb1, 0xb9, 0xf3, 0x8b, 0xa3, 0x91, 0xb6, 0xda, 0xb4, 0xda};\n\n    switch (mode) {\n    case DMP_INT_CONTINUOUS:\n        return mpu_write_mem(CFG_FIFO_ON_EVENT, 11,\n            (unsigned char*)regs_continuous);\n    case DMP_INT_GESTURE:\n        return mpu_write_mem(CFG_FIFO_ON_EVENT, 11,\n            (unsigned char*)regs_gesture);\n    default:\n        return -1;\n    }\n}\n\n/**\n *  @brief      Get one packet from the FIFO.\n *  If @e sensors does not contain a particular sensor, disregard the data\n *  returned to that pointer.\n *  \\n @e sensors can contain a combination of the following flags:\n *  \\n INV_X_GYRO, INV_Y_GYRO, INV_Z_GYRO\n *  \\n INV_XYZ_GYRO\n *  \\n INV_XYZ_ACCEL\n *  \\n INV_WXYZ_QUAT\n *  \\n If the FIFO has no new data, @e sensors will be zero.\n *  \\n If the FIFO is disabled, @e sensors will be zero and this function will\n *  return a non-zero error code.\n *  @param[out] gyro        Gyro data in hardware units.\n *  @param[out] accel       Accel data in hardware units.\n *  @param[out] quat        3-axis quaternion data in hardware units.\n *  @param[out] timestamp   Timestamp in milliseconds.\n *  @param[out] sensors     Mask of sensors read from FIFO.\n *  @param[out] more        Number of remaining packets.\n *  @return     0 if successful.\n */\nint dmp_read_fifo(short *gyro, short *accel, long *quat,\n    unsigned long *timestamp, short *sensors, unsigned char *more)\n{\n    unsigned char fifo_data[MAX_PACKET_LENGTH];\n    unsigned char ii = 0;\n\n    /* TODO: sensors[0] only changes when dmp_enable_feature is called. We can\n     * cache this value and save some cycles.\n     */\n    sensors[0] = 0;\n\n    /* Get a packet. */\n    if (mpu_read_fifo_stream(dmp.packet_length, fifo_data, more))\n        return -1;\n\n    /* Parse DMP packet. */\n    if (dmp.feature_mask & (DMP_FEATURE_LP_QUAT | DMP_FEATURE_6X_LP_QUAT)) {\n#ifdef FIFO_CORRUPTION_CHECK\n        long quat_q14[4], quat_mag_sq;\n#endif\n        quat[0] = ((long)fifo_data[0] << 24) | ((long)fifo_data[1] << 16) |\n            ((long)fifo_data[2] << 8) | fifo_data[3];\n        quat[1] = ((long)fifo_data[4] << 24) | ((long)fifo_data[5] << 16) |\n            ((long)fifo_data[6] << 8) | fifo_data[7];\n        quat[2] = ((long)fifo_data[8] << 24) | ((long)fifo_data[9] << 16) |\n            ((long)fifo_data[10] << 8) | fifo_data[11];\n        quat[3] = ((long)fifo_data[12] << 24) | ((long)fifo_data[13] << 16) |\n            ((long)fifo_data[14] << 8) | fifo_data[15];\n        ii += 16;\n#ifdef FIFO_CORRUPTION_CHECK\n        /* We can detect a corrupted FIFO by monitoring the quaternion data and\n         * ensuring that the magnitude is always normalized to one. This\n         * shouldn't happen in normal operation, but if an I2C error occurs,\n         * the FIFO reads might become misaligned.\n         *\n         * Let's start by scaling down the quaternion data to avoid long long\n         * math.\n         */\n        quat_q14[0] = quat[0] >> 16;\n        quat_q14[1] = quat[1] >> 16;\n        quat_q14[2] = quat[2] >> 16;\n        quat_q14[3] = quat[3] >> 16;\n        quat_mag_sq = quat_q14[0] * quat_q14[0] + quat_q14[1] * quat_q14[1] +\n            quat_q14[2] * quat_q14[2] + quat_q14[3] * quat_q14[3];\n        if ((quat_mag_sq < QUAT_MAG_SQ_MIN) ||\n            (quat_mag_sq > QUAT_MAG_SQ_MAX)) {\n            /* Quaternion is outside of the acceptable threshold. */\n            mpu_reset_fifo();\n            sensors[0] = 0;\n            return -1;\n        }\n        sensors[0] |= INV_WXYZ_QUAT;\n#endif\n    }\n\n    if (dmp.feature_mask & DMP_FEATURE_SEND_RAW_ACCEL) {\n        accel[0] = ((short)fifo_data[ii+0] << 8) | fifo_data[ii+1];\n        accel[1] = ((short)fifo_data[ii+2] << 8) | fifo_data[ii+3];\n        accel[2] = ((short)fifo_data[ii+4] << 8) | fifo_data[ii+5];\n        ii += 6;\n        sensors[0] |= INV_XYZ_ACCEL;\n    }\n\n    if (dmp.feature_mask & DMP_FEATURE_SEND_ANY_GYRO) {\n        gyro[0] = ((short)fifo_data[ii+0] << 8) | fifo_data[ii+1];\n        gyro[1] = ((short)fifo_data[ii+2] << 8) | fifo_data[ii+3];\n        gyro[2] = ((short)fifo_data[ii+4] << 8) | fifo_data[ii+5];\n        ii += 6;\n        sensors[0] |= INV_XYZ_GYRO;\n    }\n\n    /* Gesture data is at the end of the DMP packet. Parse it and call\n     * the gesture callbacks (if registered).\n     */\n    if (dmp.feature_mask & (DMP_FEATURE_TAP | DMP_FEATURE_ANDROID_ORIENT))\n        decode_gesture(fifo_data + ii);\n\n    //get_ms(timestamp);\n    return 0;\n}\n\n/**\n *  @brief      Register a function to be executed on a tap event.\n *  The tap direction is represented by one of the following:\n *  \\n TAP_X_UP\n *  \\n TAP_X_DOWN\n *  \\n TAP_Y_UP\n *  \\n TAP_Y_DOWN\n *  \\n TAP_Z_UP\n *  \\n TAP_Z_DOWN\n *  @param[in]  func    Callback function.\n *  @return     0 if successful.\n */\nint dmp_register_tap_cb(void (*func)(unsigned char, unsigned char))\n{\n    dmp.tap_cb = func;\n    return 0;\n}\n\n/**\n *  @brief      Register a function to be executed on a android orientation event.\n *  @param[in]  func    Callback function.\n *  @return     0 if successful.\n */\nint dmp_register_android_orient_cb(void (*func)(unsigned char))\n{\n    dmp.android_orient_cb = func;\n    return 0;\n}\n\n/**\n *  @}\n */\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/DMP/inv_mpu_dmp_motion_driver.h",
    "content": "/*\n $License:\n    Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.\n    See included License.txt for License information.\n $\n */\n/**\n *  @addtogroup  DRIVERS Sensor Driver Layer\n *  @brief       Hardware drivers to communicate with sensors via I2C.\n *\n *  @{\n *      @file       inv_mpu_dmp_motion_driver.h\n *      @brief      DMP image and interface functions.\n *      @details    All functions are preceded by the dmp_ prefix to\n *                  differentiate among MPL and general driver function calls.\n */\n#ifndef _INV_MPU_DMP_MOTION_DRIVER_H_\n#define _INV_MPU_DMP_MOTION_DRIVER_H_\n\n#define TAP_X               (0x01)\n#define TAP_Y               (0x02)\n#define TAP_Z               (0x04)\n#define TAP_XYZ             (0x07)\n\n#define TAP_X_UP            (0x01)\n#define TAP_X_DOWN          (0x02)\n#define TAP_Y_UP            (0x03)\n#define TAP_Y_DOWN          (0x04)\n#define TAP_Z_UP            (0x05)\n#define TAP_Z_DOWN          (0x06)\n\n#define ANDROID_ORIENT_PORTRAIT             (0x00)\n#define ANDROID_ORIENT_LANDSCAPE            (0x01)\n#define ANDROID_ORIENT_REVERSE_PORTRAIT     (0x02)\n#define ANDROID_ORIENT_REVERSE_LANDSCAPE    (0x03)\n\n#define DMP_INT_GESTURE     (0x01)\n#define DMP_INT_CONTINUOUS  (0x02)\n\n#define DMP_FEATURE_TAP             (0x001)\n#define DMP_FEATURE_ANDROID_ORIENT  (0x002)\n#define DMP_FEATURE_LP_QUAT         (0x004)\n#define DMP_FEATURE_PEDOMETER       (0x008)\n#define DMP_FEATURE_6X_LP_QUAT      (0x010)\n#define DMP_FEATURE_GYRO_CAL        (0x020)\n#define DMP_FEATURE_SEND_RAW_ACCEL  (0x040)\n#define DMP_FEATURE_SEND_RAW_GYRO   (0x080)\n#define DMP_FEATURE_SEND_CAL_GYRO   (0x100)\n\n#define INV_WXYZ_QUAT       (0x100)\n\n/* Set up functions. */\nint dmp_load_motion_driver_firmware(void);\nint dmp_set_fifo_rate(unsigned short rate);\nint dmp_get_fifo_rate(unsigned short *rate);\nint dmp_enable_feature(unsigned short mask);\nint dmp_get_enabled_features(unsigned short *mask);\nint dmp_set_interrupt_mode(unsigned char mode);\nint dmp_set_orientation(unsigned short orient);\nint dmp_set_gyro_bias(long *bias);\nint dmp_set_accel_bias(long *bias);\n\n/* Tap functions. */\nint dmp_register_tap_cb(void (*func)(unsigned char, unsigned char));\nint dmp_set_tap_thresh(unsigned char axis, unsigned short thresh);\nint dmp_set_tap_axes(unsigned char axis);\nint dmp_set_tap_count(unsigned char min_taps);\nint dmp_set_tap_time(unsigned short time);\nint dmp_set_tap_time_multi(unsigned short time);\nint dmp_set_shake_reject_thresh(long sf, unsigned short thresh);\nint dmp_set_shake_reject_time(unsigned short time);\nint dmp_set_shake_reject_timeout(unsigned short time);\n\n/* Android orientation functions. */\nint dmp_register_android_orient_cb(void (*func)(unsigned char));\n\n/* LP quaternion functions. */\nint dmp_enable_lp_quat(unsigned char enable);\nint dmp_enable_6x_lp_quat(unsigned char enable);\n\n/* Pedometer functions. */\nint dmp_get_pedometer_step_count(unsigned long *count);\nint dmp_set_pedometer_step_count(unsigned long count);\nint dmp_get_pedometer_walk_time(unsigned long *time);\nint dmp_set_pedometer_walk_time(unsigned long time);\n\n/* DMP gyro calibration functions. */\nint dmp_enable_gyro_cal(unsigned char enable);\n\n/* Read function. This function should be called whenever the MPU interrupt is\n * detected.\n */\nint dmp_read_fifo(short *gyro, short *accel, long *quat,\n    unsigned long *timestamp, short *sensors, unsigned char *more);\n\n#endif  /* #ifndef _INV_MPU_DMP_MOTION_DRIVER_H_ */\n\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/TASK/LegControl_task.cpp",
    "content": "#include \"LegControl_task.h\"\n#include \"gait_prg.h\"\n#include \"cmsis_os.h\"\n#include \"leg.h\"\n#include \"main.h\"\n#include \"usart.h\"\n#include \"gpio.h\"\n#include \"bsp.h\"\n#include \"remote.h\"\n#include \"dwt_delay_us.h\"\n#include \"mpu6050.h\"\n\nusing namespace std;\n\n// ȫֱ\nuint32_t LegControl_round; // ˻غ\nHexapod hexapod;\t\t   // ˽ṹ\n\nGait_prg gait_prg;\t  // ̬滮\nuint32_t round_time;  // غʱ\nThetas leg_offset[6]; // ȲؽڽƫƣڽԻ˱ĽǶȻԶĽǶ\n\n// \nstatic void remote_deal(void);\nextern \"C\"\n{\n\tvoid LegControl_Task(void const *argument)\n\t{\n\t\thexapod.Init();\n\t\tgait_prg.Init();\n\t\tosDelay(100);\n\t\tstatic uint32_t code_time_start, code_time_end, code_time; // ڼʱ䣬֤һʱһ\n\t\twhile (1)\n\t\t{\n\t\t\tcode_time_start = xTaskGetTickCount(); // ȡǰsystickʱ\n\n\t\t\tremote_deal();\n\t\t\tif (hexapod.velocity.omega >= 0)\n\t\t\t\tLegControl_round = (++LegControl_round) % N_POINTS; // ƻغ\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (LegControl_round == 0)\n\t\t\t\t\tLegControl_round = N_POINTS - 1;\n\t\t\t\telse\n\t\t\t\t\tLegControl_round--;\n\t\t\t}\n\t\t\t/*̬*/\n\t\t\tgait_prg.CEN_and_pace_cal();\n\t\t\tgait_prg.gait_proggraming();\n\t\t\t/*ʼƶ*/\n\t\t\tround_time = gait_prg.get_pace_time() / N_POINTS;\n\t\t\thexapod.move(round_time);\n\t\t\t// ʱ\n\t\t\tcode_time_end = xTaskGetTickCount();\t\t // ȡǰsystickʱ\n\t\t\tcode_time = code_time_end - code_time_start; // ȡʱ䣨8ms\n\t\t\tif (code_time < round_time)\n\t\t\t\tosDelay(round_time - code_time); // ִ֤ڵڻغʱ\n\t\t\telse\n\t\t\t\tosDelay(1); // ʱ1ms\n\t\t}\n\t}\n}\n\n// ʼȲʼڣʹܴڷ\nvoid Hexapod::Init(void)\n{\n\tlegs[0] = Leg(&huart1);\n\tlegs[1] = Leg(&huart2);\n\tlegs[2] = Leg(&huart3);\n\tlegs[3] = Leg(&huart4);\n\tlegs[4] = Leg(&huart5);\n\tlegs[5] = Leg(&huart6);\n\tarm = Arm(&huart8);\n\tMX_USART1_UART_Init();\n\tMX_USART2_UART_Init();\n\tMX_USART3_UART_Init();\n\tMX_UART4_Init();\n\tMX_UART5_Init();\n\tMX_USART6_UART_Init();\n\tMX_UART8_Init();\n\tleg_offset[0] = Thetas(PI / 4, LEG_JOINT2_OFFSET, LEG_JOINT3_OFFSET);\n\tleg_offset[1] = Thetas(0.0f, LEG_JOINT2_OFFSET, LEG_JOINT3_OFFSET);\n\tleg_offset[2] = Thetas(-PI / 4, LEG_JOINT2_OFFSET, LEG_JOINT3_OFFSET);\n\tleg_offset[3] = Thetas(3 * PI / 4, LEG_JOINT2_OFFSET, LEG_JOINT3_OFFSET);\n\tleg_offset[4] = Thetas(PI, LEG_JOINT2_OFFSET, LEG_JOINT3_OFFSET);\n\tleg_offset[5] = Thetas(-3 * PI / 4, LEG_JOINT2_OFFSET, LEG_JOINT3_OFFSET);\n\tmpu_pid_x.Init(MPU_X_PID_KP, MPU_X_PID_KI, MPU_X_PID_KD, CIR_OFF);\n\tmpu_pid_y.Init(MPU_Y_PID_KP, MPU_Y_PID_KI, MPU_Y_PID_KD, CIR_OFF);\n\tvelocity_fof[0].set_k_filter(VELOCITY_FOF_K);\n\tvelocity_fof[1].set_k_filter(VELOCITY_FOF_K);\n\tvelocity_fof[2].set_k_filter(VELOCITY_FOF_K);\n\tbody_pos_fof[0].set_k_filter(BODY_POS_FOF_K);\n\tbody_pos_fof[1].set_k_filter(BODY_POS_FOF_K);\n\tbody_pos_fof[2].set_k_filter(BODY_POS_FOF_K);\n\tbody_angle_fof[0].set_k_filter(BODY_ANGLE_FOF_K);\n\tbody_angle_fof[1].set_k_filter(BODY_ANGLE_FOF_K);\n\tbody_angle_fof[2].set_k_filter(BODY_ANGLE_FOF_K);\n\n\tarm_end_pos.x = 0;\n\tarm_end_pos.y = 200;\n\tarm_end_pos.z = 0;\n}\n\n// ٶ\nvoid Hexapod::velocity_cal(const RC_remote_data_t &remote_data)\n{\n\tif (this->mode != HEXAPOD_MOVE || this->arm_sw==ARM_ON) // ģʽٶΪ0\n\t{\n\t\tvelocity.Vx = 0;\n\t\tvelocity.Vy = 0;\n\t\tvelocity.omega = 0;\n\t}\n\telse\n\t{\n\t\tvelocity.Vx = velocity_fof[0].cal(0.3f * remote_data.right_HRZC);\n\t\tvelocity.Vy = velocity_fof[1].cal(0.3f * remote_data.right_VETC);\n\t\tvelocity.omega = velocity_fof[2].cal(-0.3f * remote_data.left_HRZC);\n\t}\n\tif(velocity.Vx>-0.0001f && velocity.Vx<0.0001f)velocity.Vx=0;\n\tif(velocity.Vy>-0.0001f && velocity.Vy<0.0001f)velocity.Vy=0;\n\tif(velocity.omega>-0.0001f && velocity.omega<0.0001f)velocity.omega=0;\n\tgait_prg.set_velocity(velocity);\n}\n\nvoid Hexapod::body_position_cal(const RC_remote_data_t &remote_data)\n{\n\tif(arm_sw==ARM_ON)return;\n\n\tif (this->mode != HEXAPOD_BODY_ANGEL_CONTROL) // ̬ģʽ¶ܿz߶\n\t\tbody_pos.z += ROTATE_BODY_POS_SENSI * remote_data.left_VETC;\n\tif (this->mode == HEXAPOD_BODY_POS_CONTROL) // λÿģʽxyλ\n\t{\n\t\t// body_pos.y += ROTATE_BODY_POS_SENSI * remote_data.right_VETC;\n\t\t// body_pos.x += ROTATE_BODY_POS_SENSI * remote_data.right_HRZC;\n\t\tbody_pos.y = HEXAPOD_MAX_Y/660.0f * remote_data.right_VETC;\n\t\tbody_pos.x = -HEXAPOD_MIN_X/660.0f * remote_data.right_HRZC;\n\t}   \n\t//ֵ\n\tvalue_limit(body_pos.z, HEXAPOD_MIN_HEIGHT, HEXAPOD_MAX_HEIGHT);\n\tvalue_limit(body_pos.y, HEXAPOD_MIN_Y, HEXAPOD_MAX_Y);\n\tvalue_limit(body_pos.x, HEXAPOD_MIN_X, HEXAPOD_MAX_X);\n\t//һ׵ͨ˲\n\tbody_pos.y = body_angle_fof[1].cal(body_pos.y);\n\tbody_pos.x = body_angle_fof[2].cal(body_pos.x);\n\tgait_prg.set_body_position(body_pos);\n}\n\n\nvoid Hexapod::arm_position_cal(const RC_remote_data_t &remote_data)\n{\n\tthis->arm_end_last_pos = this->arm_end_pos;\n\tswitch (this->arm_sw)\n\t{\n\tcase ARM_ON:\n\t\tthis->arm_end_pos.x += remote_data.right_HRZC*ROTATE_BODY_POS_SENSI;\n\t\tthis->arm_end_pos.y += remote_data.right_VETC*ROTATE_BODY_POS_SENSI;\n\t\tthis->arm_end_pos.z += remote_data.left_VETC*ROTATE_BODY_POS_SENSI;\n\t\tthis->arm_grip_pawl_angle +=remote_data.left_HRZC*ROTATE_BODY_ANGLE_SENSI;\n\t\tvalue_limit(this->arm_grip_pawl_angle,-1.3f,0);\n\t\tthis->arm.set_grip_theta(this->arm_grip_pawl_angle); \n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\tif(!arm.set_pos(arm_end_pos)) //޽\n\t\tthis->arm_end_pos=this->arm_end_last_pos;\n}\n\n/*\n *@brief 鲦ݣҪ͹\n *@param remote_data ң\n */\nvoid Hexapod::body_pos_zero(const RC_remote_data_t &remote_data)\n{\n\tif (remote_data.thumb_wheel > 500)\n\t{\n\t\tthis->body_pos.zero();\n\t}\n}\n\nvoid Hexapod::mode_select(const RC_remote_data_t &remote_data)\n{\n\tswitch (remote_data.S1)\n\t{\n\tcase 1:\t\t\t\t\t // \n\t\tmode = HEXAPOD_MOVE; // ƶģʽ\n\t\tbreak;\n\tcase 2:\t\t\t\t\t\t\t\t   // \n\t\tmode = HEXAPOD_BODY_ANGEL_CONTROL; // תǶȿ\n\t\tbreak;\n\tcase 3:\t\t\t\t\t\t\t\t // м\n\t\tmode = HEXAPOD_BODY_POS_CONTROL; // λÿ\n\tdefault:\n\t\tbreak;\n\t}\n\tarm_sw = ARM_OFF;\n\t// switch (remote_data.S2)\n\t// {\n\t// case 0:\n\t// \tmpu_sw = MPU_ON;\n\t// \tbreak;\n\t// case 1:\n\t// \tmpu_sw = MPU_OFF;\n\t// \tbreak;\n\t// default:\n\t// \tbreak;\n\t// }\n\t// //ʱĳɻеۣ˲\n\t// switch (remote_data.S2)\n\t// {\n\t// case 0:\n\t// \tarm_sw = ARM_ON;\n\t// \tbreak;\n\t// case 1:\n\t// \tarm_sw = ARM_OFF;\n\t// \tbreak;\n\t// default:\n\t// \tbreak;\n\t// }\n}\n\nstatic void remote_deal(void)\n{\n\tstatic RC_remote_data_t remote_data;\n\tremote_data = Remote_read_data();\n\thexapod.mode_select(remote_data);\n\thexapod.velocity_cal(remote_data);\n\thexapod.body_position_cal(remote_data);\n\thexapod.body_pos_zero(remote_data);\n\thexapod.arm_position_cal(remote_data);\n}\n\n\n/*\n * @brief û˶\n * @param round_time غʱ䣬λms\n */\nvoid Hexapod::move(uint32_t round_time)\n{\n\t// // 1-6ĽǶ\n\t// for (int i = 0; i < 6; i++)\n\t// {\n\t// \tlegs[i].set_thetas((gait_prg.actions[i].thetas[LegControl_round]) - leg_offset[i]); // ûеȽǶ\n\t// \tlegs[i].set_time(round_time);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ûеƶʱ\n\t// }\n\t// // 5ĽǶ\n\t// if (gait_prg.actions[4].thetas[LegControl_round].angle[0] <= 0)\n\t// {\n\t// \tThetas theta_temp;\n\t// \ttheta_temp = (gait_prg.actions[4].thetas[LegControl_round]) - leg_offset[4];\n\t// \ttheta_temp.angle[0] += 2 * PI;\n\t// \tlegs[4].set_thetas(theta_temp); // ûеȽǶ\n\t// }\n\tThetas theta_temp;\n\tfor (int i = 0; i < 6;i++)\n\t{\n\t\ttheta_temp = (gait_prg.actions[i].thetas[LegControl_round]) - leg_offset[i];\n\t\tif(theta_temp.angle[0] <= -2.0f/3.0f*PI )\n\t\t{\n\t\t\ttheta_temp.angle[0] += 2 * PI;\n\t\t}\n\t\tlegs[i].set_thetas(theta_temp); // ûеȽǶ\n\t\tlegs[i].set_time(round_time);\n\t\tlegs[i].move_DMA();\n\t}\n\tarm.set_time(round_time);\n\tarm.move_DMA();\n\t// legs[0].move_DMA();\n\t// legs[1].move_DMA();\n\t// legs[2].move_DMA();\n\t// legs[3].move_DMA();\n\t// legs[4].move_DMA();\n\t// legs[5].move_DMA();\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/TASK/LegControl_task.h",
    "content": "#ifndef LEGCONTROL_TASK_H\n#define LEGCONTROL_TASK_H\n\n#include \"my_math.h\"\n#include \"leg.h\"\n#include \"remote.h\"\n#include \"gait_prg.h\"\n#include \"arm.h\"\n\n#define LEG_JOINT2_OFFSET PI / 2\n#define LEG_JOINT3_OFFSET -2 * PI / 9\n\n#define HEXAPOD_MIN_HEIGHT -70.0f\n#define HEXAPOD_MAX_HEIGHT 70.0f\n#define HEXAPOD_MIN_X -40.0f\n#define HEXAPOD_MAX_X 40.0f\n#define HEXAPOD_MIN_Y -40.0f\n#define HEXAPOD_MAX_Y 40.0f\n\n\n#define HEXAPOD_MIN_X_ROTATE -15.0f / 180 * PI // XתǶСΪ-15\n#define HEXAPOD_MAX_X_ROTATE 15.0f / 180 * PI  // XתǶΪ 15\n#define HEXAPOD_MIN_Y_ROTATE -10.0f / 180 * PI // XתǶСΪ-10\n#define HEXAPOD_MAX_Y_ROTATE 10.0f / 180 * PI  // XתǶΪ 10\n#define HEXAPOD_MIN_Z_ROTATE -25.0f / 180 * PI // XתǶСΪ-25\n#define HEXAPOD_MAX_Z_ROTATE 25.0f / 180 * PI  // XתǶΪ 25\n\n/*PID*/\n#define MPU_X_PID_KP 0.015f\n#define MPU_X_PID_KI 0.0f\n#define MPU_X_PID_KD 0.5f\n\n#define MPU_Y_PID_KP 0.015f\n#define MPU_Y_PID_KI 0.0f\n#define MPU_Y_PID_KD 0.5f\n\n\n/*FOFһ׵ͨ˲*/\n#define VELOCITY_FOF_K 0.3f\n#define BODY_POS_FOF_K 0.1f\n#define BODY_ANGLE_FOF_K 0.1f\n\n\n#define ROTATE_BODY_ANGLE_SENSI 0.00002f//ƽǶ\n#define ROTATE_BODY_POS_SENSI 0.006f//λ\n\n\ntypedef enum\n{\n    HEXAPOD_MOVE,\n    HEXAPOD_BODY_ANGEL_CONTROL,\n    HEXAPOD_BODY_POS_CONTROL,\n} Hexapod_mode_e;\n\ntypedef enum\n{\n    MPU_ON,\n    MPU_OFF,\n}MPU_SW_e;\n\ntypedef enum\n{\n    ARM_ON,\n    ARM_OFF,\n}ARM_SW_e;\n\nclass Hexapod\n{\npublic:\n    Leg legs[6];                 // \n    Arm arm;    //3е\n    Velocity velocity;           // ٶ\n    Hexapod_mode_e mode; // ģʽ\n    MPU_SW_e mpu_sw;    //Ƿǿ\n    ARM_SW_e arm_sw; //Ƿƻе\n    Position3 body_pos;     //λ\n    Position3 arm_end_pos;\n    float arm_grip_pawl_angle;  //צǶ  \n    Position3 arm_end_last_pos; //һλ\n    PID mpu_pid_x; //xpid\n    PID mpu_pid_y; //ypid\n    First_order_filter velocity_fof[3];\n    First_order_filter body_pos_fof[3];\n    First_order_filter body_angle_fof[3];\n    bool mpu_flag;\n    void Init();          \n    void velocity_cal(const RC_remote_data_t &remote_data);\n    void body_position_cal(const RC_remote_data_t &remote_data);\n    void mode_select(const RC_remote_data_t &remote_data);\n    void body_pos_zero(const RC_remote_data_t &remote_data);\n    void arm_position_cal(const RC_remote_data_t &remote_data);\n    void move(uint32_t round_time);\n};\n\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/TASK/MPU_task.cpp",
    "content": "#include \"MPU_task.h\"\n#include \"mpu6050.h\"\n#include \"cmsis_os.h\"\n\nextern \"C\"\n{\n  void MPU_Task(void const *argument)\n  {\n    osDelay(100);\n    //mpu6050.Init();\n    osDelay(8000); //ȴǳʼ\n    while (1)\n    {\n      //mpu6050.dmp_get_data();\n      osDelay(10);\n    }\n  }\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/TASK/MPU_task.h",
    "content": "#ifndef MPU_TASK_H\n#define MPU_TASK_H\n\n\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/TASK/led_task.cpp",
    "content": "#include \"led_task.h\"\n#include \"cmsis_os.h\"\n#include \"debug_uart.h\"\n#include \"remote.h\"\n#include \"usart.h\"\n\n\n\n\nextern \"C\"{\nvoid LED_Task(void const * argument)\n{\n\tosDelay(100);\n\tosDelay(100);\n\twhile(1)\n\t{\n\t\tif((remote_hock++)>3)\n\t\t{\n\t\t\tHAL_UART_DeInit(&REMOTE_UART_h); //ң\n\t\t\tRemote_Init();\n\t\t}\n\t\tHAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);\n\t\tosDelay(100);\n\t}\n}\n}\n"
  },
  {
    "path": "SourceCode/MDK-ARM/USER/TASK/led_task.h",
    "content": "#ifndef LED_TASK_H\n#define LED_TASK_H\n\n#include \"main.h\"\n\n\n\n#endif\n"
  },
  {
    "path": "SourceCode/MDK-ARM/startup_stm32h750xx.lst",
    "content": "\n\n\nARM Macro Assembler    Page 1 \n\n\n    1 00000000         ;*******************************************************\n                       *************************\n    2 00000000         ;* File Name          : startup_stm32h750xx.s\n    3 00000000         ;* @author  MCD Application Team\n    4 00000000         ;* Description        : STM32H7xx devices vector table f\n                       or MDK-ARM toolchain. \n    5 00000000         ;*                      This module performs:\n    6 00000000         ;*                      - Set the initial SP\n    7 00000000         ;*                      - Set the initial PC == Reset_Ha\n                       ndler\n    8 00000000         ;*                      - Set the vector table entries w\n                       ith the exceptions ISR address\n    9 00000000         ;*                      - Branches to __main in the C li\n                       brary (which eventually\n   10 00000000         ;*                        calls main()).\n   11 00000000         ;*                      After Reset the Cortex-M process\n                       or is in Thread mode,\n   12 00000000         ;*                      priority is Privileged, and the \n                       Stack is set to Main.\n   13 00000000         ;* <<< Use Configuration Wizard in Context Menu >>>   \n   14 00000000         ;*******************************************************\n                       ***********************\n   15 00000000         ;* @attention\n   16 00000000         ;*\n   17 00000000         ;* Copyright (c) 2018 STMicroelectronics.\n   18 00000000         ;* All rights reserved.\n   19 00000000         ;*\n   20 00000000         ;* This software is licensed under terms that can be fou\n                       nd in the LICENSE file\n   21 00000000         ;* in the root directory of this software component.\n   22 00000000         ;* If no LICENSE file comes with this software, it is pr\n                       ovided AS-IS.\n   23 00000000         ;*\n   24 00000000         ;*******************************************************\n                       ************************\n   25 00000000         \n   26 00000000         ; Amount of memory (in bytes) allocated for Stack\n   27 00000000         ; Tailor this value to your application needs\n   28 00000000         ; <h> Stack Configuration\n   29 00000000         ;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n   30 00000000         ; </h>\n   31 00000000         \n   32 00000000 00000400 \n                       Stack_Size\n                               EQU              0x400\n   33 00000000         \n   34 00000000                 AREA             STACK, NOINIT, READWRITE, ALIGN\n=3\n   35 00000000         Stack_Mem\n                               SPACE            Stack_Size\n   36 00000400         __initial_sp\n   37 00000400         \n   38 00000400         \n   39 00000400         ; <h> Heap Configuration\n   40 00000400         ;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n   41 00000400         ; </h>\n   42 00000400         \n   43 00000400 00000200 \n                       Heap_Size\n\n\n\nARM Macro Assembler    Page 2 \n\n\n                               EQU              0x200\n   44 00000400         \n   45 00000400                 AREA             HEAP, NOINIT, READWRITE, ALIGN=\n3\n   46 00000000         __heap_base\n   47 00000000         Heap_Mem\n                               SPACE            Heap_Size\n   48 00000200         __heap_limit\n   49 00000200         \n   50 00000200                 PRESERVE8\n   51 00000200                 THUMB\n   52 00000200         \n   53 00000200         \n   54 00000200         ; Vector Table Mapped to Address 0 at Reset\n   55 00000200                 AREA             RESET, DATA, READONLY\n   56 00000000                 EXPORT           __Vectors\n   57 00000000                 EXPORT           __Vectors_End\n   58 00000000                 EXPORT           __Vectors_Size\n   59 00000000         \n   60 00000000 00000000 \n                       __Vectors\n                               DCD              __initial_sp ; Top of Stack\n   61 00000004 00000000        DCD              Reset_Handler ; Reset Handler\n   62 00000008 00000000        DCD              NMI_Handler ; NMI Handler\n   63 0000000C 00000000        DCD              HardFault_Handler ; Hard Fault \n                                                            Handler\n   64 00000010 00000000        DCD              MemManage_Handler \n                                                            ; MPU Fault Handler\n                                                            \n   65 00000014 00000000        DCD              BusFault_Handler \n                                                            ; Bus Fault Handler\n                                                            \n   66 00000018 00000000        DCD              UsageFault_Handler ; Usage Faul\n                                                            t Handler\n   67 0000001C 00000000        DCD              0           ; Reserved\n   68 00000020 00000000        DCD              0           ; Reserved\n   69 00000024 00000000        DCD              0           ; Reserved\n   70 00000028 00000000        DCD              0           ; Reserved\n   71 0000002C 00000000        DCD              SVC_Handler ; SVCall Handler\n   72 00000030 00000000        DCD              DebugMon_Handler ; Debug Monito\n                                                            r Handler\n   73 00000034 00000000        DCD              0           ; Reserved\n   74 00000038 00000000        DCD              PendSV_Handler ; PendSV Handler\n                                                            \n   75 0000003C 00000000        DCD              SysTick_Handler \n                                                            ; SysTick Handler\n   76 00000040         \n   77 00000040         ; External Interrupts\n   78 00000040 00000000        DCD              WWDG_IRQHandler ; Window WatchD\n                                                            og interrupt ( wwdg\n                                                            1_it)              \n                                                                               \n                                                                    \n   79 00000044 00000000        DCD              PVD_AVD_IRQHandler ; PVD/AVD th\n                                                            rough EXTI Line det\n                                                            ection             \n                                                                       \n   80 00000048 00000000        DCD              TAMP_STAMP_IRQHandler ; Tamper \n                                                            and TimeStamps thro\n\n\n\nARM Macro Assembler    Page 3 \n\n\n                                                            ugh the EXTI line  \n                                                                      \n   81 0000004C 00000000        DCD              RTC_WKUP_IRQHandler ; RTC Wakeu\n                                                            p through the EXTI \n                                                            line               \n                                                                    \n   82 00000050 00000000        DCD              FLASH_IRQHandler ; FLASH       \n                                                                               \n                                                                             \n   83 00000054 00000000        DCD              RCC_IRQHandler ; RCC           \n                                                                               \n                                                                           \n   84 00000058 00000000        DCD              EXTI0_IRQHandler ; EXTI Line0  \n                                                                               \n                                                                               \n                                                                 \n   85 0000005C 00000000        DCD              EXTI1_IRQHandler ; EXTI Line1  \n                                                                               \n                                                                               \n                                                                 \n   86 00000060 00000000        DCD              EXTI2_IRQHandler ; EXTI Line2  \n                                                                               \n                                                                               \n                                                                 \n   87 00000064 00000000        DCD              EXTI3_IRQHandler ; EXTI Line3  \n                                                                               \n                                                                               \n                                                                 \n   88 00000068 00000000        DCD              EXTI4_IRQHandler ; EXTI Line4 \n   89 0000006C 00000000        DCD              DMA1_Stream0_IRQHandler \n                                                            ; DMA1 Stream 0\n   90 00000070 00000000        DCD              DMA1_Stream1_IRQHandler ; DMA1 \n                                                            Stream 1           \n                                                                               \n                                                                 \n   91 00000074 00000000        DCD              DMA1_Stream2_IRQHandler ; DMA1 \n                                                            Stream 2           \n                                                                               \n                                                                 \n   92 00000078 00000000        DCD              DMA1_Stream3_IRQHandler ; DMA1 \n                                                            Stream 3           \n                                                                               \n                                                                 \n   93 0000007C 00000000        DCD              DMA1_Stream4_IRQHandler ; DMA1 \n                                                            Stream 4           \n                                                                               \n                                                                 \n   94 00000080 00000000        DCD              DMA1_Stream5_IRQHandler ; DMA1 \n                                                            Stream 5           \n                                                                               \n                                                                 \n   95 00000084 00000000        DCD              DMA1_Stream6_IRQHandler \n                                                            ; DMA1 Stream 6  \n   96 00000088 00000000        DCD              ADC_IRQHandler ; ADC1, ADC2    \n                                                                               \n                                                                  \n   97 0000008C 00000000        DCD              FDCAN1_IT0_IRQHandler ; FDCAN1 \n                                                            interrupt line 0   \n                                                                               \n\n\n\nARM Macro Assembler    Page 4 \n\n\n                                                              \n   98 00000090 00000000        DCD              FDCAN2_IT0_IRQHandler ; FDCAN2 \n                                                            interrupt line 0   \n                                                                               \n                                                                     \n   99 00000094 00000000        DCD              FDCAN1_IT1_IRQHandler ; FDCAN1 \n                                                            interrupt line 1   \n                                                                               \n                                                              \n  100 00000098 00000000        DCD              FDCAN2_IT1_IRQHandler ; FDCAN2 \n                                                            interrupt line 1   \n                                                                               \n                                                                               \n                                                                  \n  101 0000009C 00000000        DCD              EXTI9_5_IRQHandler ; External L\n                                                            ine[9:5]s          \n                                                                               \n                                                                   \n  102 000000A0 00000000        DCD              TIM1_BRK_IRQHandler ; TIM1 Brea\n                                                            k interrupt        \n                                                                       \n  103 000000A4 00000000        DCD              TIM1_UP_IRQHandler ; TIM1 Updat\n                                                            e Interrupt        \n                                                                     \n  104 000000A8 00000000        DCD              TIM1_TRG_COM_IRQHandler ; TIM1 \n                                                            Trigger and Commuta\n                                                            tion Interrupt \n  105 000000AC 00000000        DCD              TIM1_CC_IRQHandler ; TIM1 Captu\n                                                            re Compare         \n                                                                               \n                                                                   \n  106 000000B0 00000000        DCD              TIM2_IRQHandler ; TIM2         \n                                                                               \n                                                                            \n  107 000000B4 00000000        DCD              TIM3_IRQHandler ; TIM3         \n                                                                               \n                                                                            \n  108 000000B8 00000000        DCD              TIM4_IRQHandler ; TIM4         \n                                                                               \n                                                                            \n  109 000000BC 00000000        DCD              I2C1_EV_IRQHandler ; I2C1 Event\n                                                                               \n                                                                               \n                                                                   \n  110 000000C0 00000000        DCD              I2C1_ER_IRQHandler ; I2C1 Error\n                                                                               \n                                                                               \n                                                                   \n  111 000000C4 00000000        DCD              I2C2_EV_IRQHandler ; I2C2 Event\n                                                                               \n                                                                               \n                                                                   \n  112 000000C8 00000000        DCD              I2C2_ER_IRQHandler ; I2C2 Error\n                                                                               \n                                                                               \n                                                                     \n  113 000000CC 00000000        DCD              SPI1_IRQHandler ; SPI1         \n                                                                               \n                                                                            \n\n\n\nARM Macro Assembler    Page 5 \n\n\n  114 000000D0 00000000        DCD              SPI2_IRQHandler ; SPI2         \n                                                                               \n                                                                            \n  115 000000D4 00000000        DCD              USART1_IRQHandler ; USART1     \n                                                                               \n                                                                              \n  116 000000D8 00000000        DCD              USART2_IRQHandler ; USART2     \n                                                                               \n                                                                              \n  117 000000DC 00000000        DCD              USART3_IRQHandler ; USART3     \n                                                                               \n                                                                              \n  118 000000E0 00000000        DCD              EXTI15_10_IRQHandler ; External\n                                                             Line[15:10]  \n  119 000000E4 00000000        DCD              RTC_Alarm_IRQHandler ; RTC Alar\n                                                            m (A and B) through\n                                                             EXTI Line\n  120 000000E8 00000000        DCD              0           ; Reserved         \n                                                                               \n                                                                          \n  121 000000EC 00000000        DCD              TIM8_BRK_TIM12_IRQHandler ; TIM\n                                                            8 Break Interrupt a\n                                                            nd TIM12 global int\n                                                            errupt             \n                                                                \n  122 000000F0 00000000        DCD              TIM8_UP_TIM13_IRQHandler ; TIM8\n                                                             Update Interrupt a\n                                                            nd TIM13 global int\n                                                            errupt\n  123 000000F4 00000000        DCD              TIM8_TRG_COM_TIM14_IRQHandler ;\n                                                             TIM8 Trigger and C\n                                                            ommutation Interrup\n                                                            t and TIM14 global \n                                                            interrupt\n  124 000000F8 00000000        DCD              TIM8_CC_IRQHandler ; TIM8 Captu\n                                                            re Compare Interrup\n                                                            t\n  125 000000FC 00000000        DCD              DMA1_Stream7_IRQHandler ; DMA1 \n                                                            Stream7            \n                                                                               \n                                                                        \n  126 00000100 00000000        DCD              FMC_IRQHandler ; FMC           \n                                                                              \n  127 00000104 00000000        DCD              SDMMC1_IRQHandler ; SDMMC1     \n                                                                               \n                                                                \n  128 00000108 00000000        DCD              TIM5_IRQHandler ; TIM5         \n                                                                               \n                                                            \n  129 0000010C 00000000        DCD              SPI3_IRQHandler ; SPI3         \n                                                                               \n                                                            \n  130 00000110 00000000        DCD              UART4_IRQHandler ; UART4       \n                                                                               \n                                                             \n  131 00000114 00000000        DCD              UART5_IRQHandler ; UART5       \n                                                                               \n                                                             \n  132 00000118 00000000        DCD              TIM6_DAC_IRQHandler ; TIM6 and \n\n\n\nARM Macro Assembler    Page 6 \n\n\n                                                            DAC1&2 underrun err\n                                                            ors           \n  133 0000011C 00000000        DCD              TIM7_IRQHandler \n                                                            ; TIM7           \n  134 00000120 00000000        DCD              DMA2_Stream0_IRQHandler ; DMA2 \n                                                            Stream 0           \n                                                                    \n  135 00000124 00000000        DCD              DMA2_Stream1_IRQHandler ; DMA2 \n                                                            Stream 1           \n                                                                    \n  136 00000128 00000000        DCD              DMA2_Stream2_IRQHandler ; DMA2 \n                                                            Stream 2           \n                                                                    \n  137 0000012C 00000000        DCD              DMA2_Stream3_IRQHandler ; DMA2 \n                                                            Stream 3           \n                                                                    \n  138 00000130 00000000        DCD              DMA2_Stream4_IRQHandler ; DMA2 \n                                                            Stream 4           \n                                                                    \n  139 00000134 00000000        DCD              ETH_IRQHandler ; Ethernet      \n                                                                              \n  140 00000138 00000000        DCD              ETH_WKUP_IRQHandler ; Ethernet \n                                                            Wakeup through EXTI\n                                                             line              \n                                                            \n  141 0000013C 00000000        DCD              FDCAN_CAL_IRQHandler ; FDCAN ca\n                                                            libration unit inte\n                                                            rrupt              \n                                                                      \n  142 00000140 00000000        DCD              0           ; Reserved         \n                                                                               \n                                                              \n  143 00000144 00000000        DCD              0           ; Reserved \n  144 00000148 00000000        DCD              0           ; Reserved \n  145 0000014C 00000000        DCD              0           ; Reserved         \n                                                                         \n  146 00000150 00000000        DCD              DMA2_Stream5_IRQHandler ; DMA2 \n                                                            Stream 5           \n                                                                    \n  147 00000154 00000000        DCD              DMA2_Stream6_IRQHandler ; DMA2 \n                                                            Stream 6           \n                                                                    \n  148 00000158 00000000        DCD              DMA2_Stream7_IRQHandler ; DMA2 \n                                                            Stream 7           \n                                                                    \n  149 0000015C 00000000        DCD              USART6_IRQHandler ; USART6     \n                                                                               \n                                                               \n  150 00000160 00000000        DCD              I2C3_EV_IRQHandler ; I2C3 event\n                                                                               \n                                                                      \n  151 00000164 00000000        DCD              I2C3_ER_IRQHandler ; I2C3 error\n                                                                               \n                                                                      \n  152 00000168 00000000        DCD              OTG_HS_EP1_OUT_IRQHandler ; USB\n                                                             OTG HS End Point 1\n                                                             Out               \n                                                                   \n  153 0000016C 00000000        DCD              OTG_HS_EP1_IN_IRQHandler ; USB \n\n\n\nARM Macro Assembler    Page 7 \n\n\n                                                            OTG HS End Point 1 \n                                                            In                 \n                                                                  \n  154 00000170 00000000        DCD              OTG_HS_WKUP_IRQHandler ; USB OT\n                                                            G HS Wakeup through\n                                                             EXTI              \n                                                                       \n  155 00000174 00000000        DCD              OTG_HS_IRQHandler ; USB OTG HS \n                                                                               \n                                                            \n  156 00000178 00000000        DCD              DCMI_IRQHandler ; DCMI         \n                                                                               \n                                                            \n  157 0000017C 00000000        DCD              CRYP_IRQHandler ; CRYP crypto  \n                                                                               \n                                                            \n  158 00000180 00000000        DCD              HASH_RNG_IRQHandler \n                                                            ; Hash and Rng\n  159 00000184 00000000        DCD              FPU_IRQHandler ; FPU\n  160 00000188 00000000        DCD              UART7_IRQHandler ; UART7\n  161 0000018C 00000000        DCD              UART8_IRQHandler ; UART8\n  162 00000190 00000000        DCD              SPI4_IRQHandler ; SPI4\n  163 00000194 00000000        DCD              SPI5_IRQHandler ; SPI5\n  164 00000198 00000000        DCD              SPI6_IRQHandler ; SPI6\n  165 0000019C 00000000        DCD              SAI1_IRQHandler ; SAI1\n  166 000001A0 00000000        DCD              LTDC_IRQHandler ; LTDC\n  167 000001A4 00000000        DCD              LTDC_ER_IRQHandler ; LTDC error\n                                                            \n  168 000001A8 00000000        DCD              DMA2D_IRQHandler ; DMA2D\n  169 000001AC 00000000        DCD              SAI2_IRQHandler ; SAI2\n  170 000001B0 00000000        DCD              QUADSPI_IRQHandler ; QUADSPI\n  171 000001B4 00000000        DCD              LPTIM1_IRQHandler ; LPTIM1\n  172 000001B8 00000000        DCD              CEC_IRQHandler ; HDMI_CEC\n  173 000001BC 00000000        DCD              I2C4_EV_IRQHandler ; I2C4 Event\n                                                                               \n                                                                      \n  174 000001C0 00000000        DCD              I2C4_ER_IRQHandler \n                                                            ; I2C4 Error \n  175 000001C4 00000000        DCD              SPDIF_RX_IRQHandler ; SPDIF_RX\n  176 000001C8 00000000        DCD              OTG_FS_EP1_OUT_IRQHandler ; USB\n                                                             OTG FS End Point 1\n                                                             Out               \n                                                                   \n  177 000001CC 00000000        DCD              OTG_FS_EP1_IN_IRQHandler ; USB \n                                                            OTG FS End Point 1 \n                                                            In                 \n                                                                  \n  178 000001D0 00000000        DCD              OTG_FS_WKUP_IRQHandler ; USB OT\n                                                            G FS Wakeup through\n                                                             EXTI              \n                                                                       \n  179 000001D4 00000000        DCD              OTG_FS_IRQHandler ; USB OTG FS \n                                                                            \n  180 000001D8 00000000        DCD              DMAMUX1_OVR_IRQHandler ; DMAMUX\n                                                            1 Overrun interrupt\n                                                              \n  181 000001DC 00000000        DCD              HRTIM1_Master_IRQHandler ; HRTI\n                                                            M Master Timer glob\n                                                            al Interrupts      \n\n\n\nARM Macro Assembler    Page 8 \n\n\n                                                                               \n                                                                 \n  182 000001E0 00000000        DCD              HRTIM1_TIMA_IRQHandler ; HRTIM \n                                                            Timer A global Inte\n                                                            rrupt              \n                                                                               \n                                                               \n  183 000001E4 00000000        DCD              HRTIM1_TIMB_IRQHandler ; HRTIM \n                                                            Timer B global Inte\n                                                            rrupt              \n                                                                               \n                                                               \n  184 000001E8 00000000        DCD              HRTIM1_TIMC_IRQHandler ; HRTIM \n                                                            Timer C global Inte\n                                                            rrupt              \n                                                                               \n                                                               \n  185 000001EC 00000000        DCD              HRTIM1_TIMD_IRQHandler ; HRTIM \n                                                            Timer D global Inte\n                                                            rrupt              \n                                                                               \n                                                               \n  186 000001F0 00000000        DCD              HRTIM1_TIME_IRQHandler ; HRTIM \n                                                            Timer E global Inte\n                                                            rrupt              \n                                                                               \n                                                               \n  187 000001F4 00000000        DCD              HRTIM1_FLT_IRQHandler ; HRTIM F\n                                                            ault global Interru\n                                                            pt \n  188 000001F8 00000000        DCD              DFSDM1_FLT0_IRQHandler ; DFSDM \n                                                            Filter0 Interrupt  \n                                                             \n  189 000001FC 00000000        DCD              DFSDM1_FLT1_IRQHandler ; DFSDM \n                                                            Filter1 Interrupt  \n                                                                               \n                                                                               \n                                                                \n  190 00000200 00000000        DCD              DFSDM1_FLT2_IRQHandler ; DFSDM \n                                                            Filter2 Interrupt  \n                                                                               \n                                                                               \n                                                                \n  191 00000204 00000000        DCD              DFSDM1_FLT3_IRQHandler ; DFSDM \n                                                            Filter3 Interrupt  \n                                                                               \n                                                                               \n                                                                               \n                                                                               \n                                                                  \n  192 00000208 00000000        DCD              SAI3_IRQHandler ; SAI3 global I\n                                                            nterrupt           \n                                                                               \n                                                                           \n  193 0000020C 00000000        DCD              SWPMI1_IRQHandler ; Serial Wire\n                                                             Interface 1 global\n                                                             interrupt         \n                                                                             \n  194 00000210 00000000        DCD              TIM15_IRQHandler ; TIM15 global\n\n\n\nARM Macro Assembler    Page 9 \n\n\n                                                             Interrupt         \n                                                                               \n                                                                            \n  195 00000214 00000000        DCD              TIM16_IRQHandler ; TIM16 global\n                                                             Interrupt         \n                                                                               \n                                                                            \n  196 00000218 00000000        DCD              TIM17_IRQHandler ; TIM17 global\n                                                             Interrupt         \n                                                                               \n                                                                            \n  197 0000021C 00000000        DCD              MDIOS_WKUP_IRQHandler ; MDIOS W\n                                                            akeup  Interrupt   \n                                                                               \n                                                                               \n                                                              \n  198 00000220 00000000        DCD              MDIOS_IRQHandler ; MDIOS global\n                                                             Interrupt         \n                                                                               \n                                                                            \n  199 00000224 00000000        DCD              JPEG_IRQHandler ; JPEG global I\n                                                            nterrupt           \n                                                                               \n                                                                           \n  200 00000228 00000000        DCD              MDMA_IRQHandler ; MDMA global I\n                                                            nterrupt           \n                                                                               \n                                                                           \n  201 0000022C 00000000        DCD              0           ; Reserved         \n                                                                               \n                                                                               \n                                                            \n  202 00000230 00000000        DCD              SDMMC2_IRQHandler ; SDMMC2 glob\n                                                            al Interrupt       \n                                                                               \n                                                                             \n  203 00000234 00000000        DCD              HSEM1_IRQHandler ; HSEM1 global\n                                                             Interrupt         \n                                                                               \n                                                                             \n  204 00000238 00000000        DCD              0           ; Reserved         \n                                                                               \n                                                                              \n  205 0000023C 00000000        DCD              ADC3_IRQHandler ; ADC3 global I\n                                                            nterrupt           \n                                                                               \n                                                                            \n  206 00000240 00000000        DCD              DMAMUX2_OVR_IRQHandler ; DMAMUX\n                                                             Overrun interrupt \n                                                                               \n                                                                               \n                                                                \n  207 00000244 00000000        DCD              BDMA_Channel0_IRQHandler ; BDMA\n                                                             Channel 0 global I\n                                                            nterrupt           \n                                                                               \n                                                                  \n  208 00000248 00000000        DCD              BDMA_Channel1_IRQHandler ; BDMA\n                                                             Channel 1 global I\n\n\n\nARM Macro Assembler    Page 10 \n\n\n                                                            nterrupt           \n                                                                               \n                                                                  \n  209 0000024C 00000000        DCD              BDMA_Channel2_IRQHandler ; BDMA\n                                                             Channel 2 global I\n                                                            nterrupt           \n                                                                               \n                                                                  \n  210 00000250 00000000        DCD              BDMA_Channel3_IRQHandler ; BDMA\n                                                             Channel 3 global I\n                                                            nterrupt           \n                                                                               \n                                                                  \n  211 00000254 00000000        DCD              BDMA_Channel4_IRQHandler ; BDMA\n                                                             Channel 4 global I\n                                                            nterrupt           \n                                                                               \n                                                                  \n  212 00000258 00000000        DCD              BDMA_Channel5_IRQHandler ; BDMA\n                                                             Channel 5 global I\n                                                            nterrupt           \n                                                                               \n                                                                  \n  213 0000025C 00000000        DCD              BDMA_Channel6_IRQHandler ; BDMA\n                                                             Channel 6 global I\n                                                            nterrupt           \n                                                                               \n                                                                  \n  214 00000260 00000000        DCD              BDMA_Channel7_IRQHandler ; BDMA\n                                                             Channel 7 global I\n                                                            nterrupt           \n                                                                               \n                                                                  \n  215 00000264 00000000        DCD              COMP1_IRQHandler ; COMP1 global\n                                                             Interrupt         \n                                                                               \n                                                                            \n  216 00000268 00000000        DCD              LPTIM2_IRQHandler ; LP TIM2 glo\n                                                            bal interrupt      \n                                                                               \n                                                                             \n  217 0000026C 00000000        DCD              LPTIM3_IRQHandler ; LP TIM3 glo\n                                                            bal interrupt      \n                                                                               \n                                                                             \n  218 00000270 00000000        DCD              LPTIM4_IRQHandler ; LP TIM4 glo\n                                                            bal interrupt      \n                                                                               \n                                                                             \n  219 00000274 00000000        DCD              LPTIM5_IRQHandler ; LP TIM5 glo\n                                                            bal interrupt      \n                                                                               \n                                                                             \n  220 00000278 00000000        DCD              LPUART1_IRQHandler ; LP UART1 i\n                                                            nterrupt           \n                                                                               \n                                                                              \n  221 0000027C 00000000        DCD              0           ; Reserved         \n                                                                               \n\n\n\nARM Macro Assembler    Page 11 \n\n\n                                                                               \n                                                                               \n                                                                        \n  222 00000280 00000000        DCD              CRS_IRQHandler ; Clock Recovery\n                                                             Global Interrupt  \n                                                                               \n                                                                          \n  223 00000284 00000000        DCD              ECC_IRQHandler ; ECC diagnostic\n                                                             Global Interrupt  \n                                                                               \n                                                                               \n                                                                  \n  224 00000288 00000000        DCD              SAI4_IRQHandler ; SAI4 global i\n                                                            nterrupt           \n                                                                               \n                                                                              \n  225 0000028C 00000000        DCD              0           ; Reserved         \n                                                                               \n                                                                 \n  226 00000290 00000000        DCD              0           ; Reserved         \n                                                                               \n                                                                    \n  227 00000294 00000000        DCD              WAKEUP_PIN_IRQHandler ; Interru\n                                                            pt for all 6 wake-u\n                                                            p pins \n  228 00000298         \n  229 00000298         \n  230 00000298         __Vectors_End\n  231 00000298         \n  232 00000298 00000298 \n                       __Vectors_Size\n                               EQU              __Vectors_End - __Vectors\n  233 00000298         \n  234 00000298                 AREA             |.text|, CODE, READONLY\n  235 00000000         \n  236 00000000         ; Reset handler\n  237 00000000         Reset_Handler\n                               PROC\n  238 00000000                 EXPORT           Reset_Handler                  \n  [WEAK]\n  239 00000000                 IMPORT           SystemInit\n  240 00000000                 IMPORT           __main\n  241 00000000         \n  242 00000000 4809            LDR              R0, =SystemInit\n  243 00000002 4780            BLX              R0\n  244 00000004 4809            LDR              R0, =__main\n  245 00000006 4700            BX               R0\n  246 00000008                 ENDP\n  247 00000008         \n  248 00000008         ; Dummy Exception Handlers (infinite loops which can be \n                       modified)\n  249 00000008         \n  250 00000008         NMI_Handler\n                               PROC\n  251 00000008                 EXPORT           NMI_Handler                    \n  [WEAK]\n  252 00000008 E7FE            B                .\n  253 0000000A                 ENDP\n  255 0000000A         HardFault_Handler\n\n\n\nARM Macro Assembler    Page 12 \n\n\n                               PROC\n  256 0000000A                 EXPORT           HardFault_Handler              \n  [WEAK]\n  257 0000000A E7FE            B                .\n  258 0000000C                 ENDP\n  260 0000000C         MemManage_Handler\n                               PROC\n  261 0000000C                 EXPORT           MemManage_Handler              \n  [WEAK]\n  262 0000000C E7FE            B                .\n  263 0000000E                 ENDP\n  265 0000000E         BusFault_Handler\n                               PROC\n  266 0000000E                 EXPORT           BusFault_Handler               \n  [WEAK]\n  267 0000000E E7FE            B                .\n  268 00000010                 ENDP\n  270 00000010         UsageFault_Handler\n                               PROC\n  271 00000010                 EXPORT           UsageFault_Handler             \n  [WEAK]\n  272 00000010 E7FE            B                .\n  273 00000012                 ENDP\n  274 00000012         SVC_Handler\n                               PROC\n  275 00000012                 EXPORT           SVC_Handler                    \n  [WEAK]\n  276 00000012 E7FE            B                .\n  277 00000014                 ENDP\n  279 00000014         DebugMon_Handler\n                               PROC\n  280 00000014                 EXPORT           DebugMon_Handler               \n   [WEAK]\n  281 00000014 E7FE            B                .\n  282 00000016                 ENDP\n  283 00000016         PendSV_Handler\n                               PROC\n  284 00000016                 EXPORT           PendSV_Handler                 \n   [WEAK]\n  285 00000016 E7FE            B                .\n  286 00000018                 ENDP\n  287 00000018         SysTick_Handler\n                               PROC\n  288 00000018                 EXPORT           SysTick_Handler                \n   [WEAK]\n  289 00000018 E7FE            B                .\n  290 0000001A                 ENDP\n  291 0000001A         \n  292 0000001A         Default_Handler\n                               PROC\n  293 0000001A         \n  294 0000001A                 EXPORT           WWDG_IRQHandler                \n   [WEAK]\n  295 0000001A                 EXPORT           PVD_AVD_IRQHandler             \n   [WEAK]\n  296 0000001A                 EXPORT           TAMP_STAMP_IRQHandler          \n   [WEAK]\n  297 0000001A                 EXPORT           RTC_WKUP_IRQHandler            \n   [WEAK]\n\n\n\nARM Macro Assembler    Page 13 \n\n\n  298 0000001A                 EXPORT           FLASH_IRQHandler               \n   [WEAK]\n  299 0000001A                 EXPORT           RCC_IRQHandler                 \n   [WEAK]\n  300 0000001A                 EXPORT           EXTI0_IRQHandler               \n   [WEAK]\n  301 0000001A                 EXPORT           EXTI1_IRQHandler               \n   [WEAK]\n  302 0000001A                 EXPORT           EXTI2_IRQHandler               \n   [WEAK]\n  303 0000001A                 EXPORT           EXTI3_IRQHandler               \n   [WEAK]\n  304 0000001A                 EXPORT           EXTI4_IRQHandler               \n   [WEAK]\n  305 0000001A                 EXPORT           DMA1_Stream0_IRQHandler        \n   [WEAK]\n  306 0000001A                 EXPORT           DMA1_Stream1_IRQHandler        \n   [WEAK]\n  307 0000001A                 EXPORT           DMA1_Stream2_IRQHandler        \n   [WEAK]\n  308 0000001A                 EXPORT           DMA1_Stream3_IRQHandler        \n   [WEAK]\n  309 0000001A                 EXPORT           DMA1_Stream4_IRQHandler        \n   [WEAK]\n  310 0000001A                 EXPORT           DMA1_Stream5_IRQHandler        \n   [WEAK]\n  311 0000001A                 EXPORT           DMA1_Stream6_IRQHandler        \n   [WEAK]\n  312 0000001A                 EXPORT           DMA1_Stream7_IRQHandler        \n   [WEAK]\n  313 0000001A                 EXPORT           ADC_IRQHandler                 \n   [WEAK]\n  314 0000001A                 EXPORT           FDCAN1_IT0_IRQHandler          \n   [WEAK]\n  315 0000001A                 EXPORT           FDCAN2_IT0_IRQHandler          \n   [WEAK]\n  316 0000001A                 EXPORT           FDCAN1_IT1_IRQHandler          \n   [WEAK]\n  317 0000001A                 EXPORT           FDCAN2_IT1_IRQHandler          \n   [WEAK]\n  318 0000001A                 EXPORT           EXTI9_5_IRQHandler             \n   [WEAK]\n  319 0000001A                 EXPORT           TIM1_BRK_IRQHandler            \n   [WEAK]\n  320 0000001A                 EXPORT           TIM1_UP_IRQHandler             \n   [WEAK]\n  321 0000001A                 EXPORT           TIM1_TRG_COM_IRQHandler        \n   [WEAK]\n  322 0000001A                 EXPORT           TIM1_CC_IRQHandler             \n   [WEAK]\n  323 0000001A                 EXPORT           TIM2_IRQHandler                \n   [WEAK]\n  324 0000001A                 EXPORT           TIM3_IRQHandler                \n   [WEAK]\n  325 0000001A                 EXPORT           TIM4_IRQHandler                \n   [WEAK]\n  326 0000001A                 EXPORT           I2C1_EV_IRQHandler             \n   [WEAK]\n  327 0000001A                 EXPORT           I2C1_ER_IRQHandler             \n\n\n\nARM Macro Assembler    Page 14 \n\n\n   [WEAK]\n  328 0000001A                 EXPORT           I2C2_EV_IRQHandler             \n   [WEAK]\n  329 0000001A                 EXPORT           I2C2_ER_IRQHandler             \n   [WEAK]\n  330 0000001A                 EXPORT           SPI1_IRQHandler                \n   [WEAK]\n  331 0000001A                 EXPORT           SPI2_IRQHandler                \n   [WEAK]\n  332 0000001A                 EXPORT           USART1_IRQHandler              \n   [WEAK]\n  333 0000001A                 EXPORT           USART2_IRQHandler              \n   [WEAK]\n  334 0000001A                 EXPORT           USART3_IRQHandler              \n   [WEAK]\n  335 0000001A                 EXPORT           EXTI15_10_IRQHandler           \n   [WEAK]\n  336 0000001A                 EXPORT           RTC_Alarm_IRQHandler           \n   [WEAK]\n  337 0000001A                 EXPORT           TIM8_BRK_TIM12_IRQHandler      \n   [WEAK]\n  338 0000001A                 EXPORT           TIM8_UP_TIM13_IRQHandler       \n   [WEAK]\n  339 0000001A                 EXPORT           TIM8_TRG_COM_TIM14_IRQHandler  \n   [WEAK]\n  340 0000001A                 EXPORT           TIM8_CC_IRQHandler             \n   [WEAK]\n  341 0000001A                 EXPORT           DMA1_Stream7_IRQHandler        \n   [WEAK]\n  342 0000001A                 EXPORT           FMC_IRQHandler                 \n   [WEAK]\n  343 0000001A                 EXPORT           SDMMC1_IRQHandler              \n   [WEAK]\n  344 0000001A                 EXPORT           TIM5_IRQHandler                \n   [WEAK]\n  345 0000001A                 EXPORT           SPI3_IRQHandler                \n   [WEAK]\n  346 0000001A                 EXPORT           UART4_IRQHandler               \n   [WEAK]\n  347 0000001A                 EXPORT           UART5_IRQHandler               \n   [WEAK]\n  348 0000001A                 EXPORT           TIM6_DAC_IRQHandler            \n   [WEAK]\n  349 0000001A                 EXPORT           TIM7_IRQHandler                \n   [WEAK]\n  350 0000001A                 EXPORT           DMA2_Stream0_IRQHandler        \n   [WEAK]\n  351 0000001A                 EXPORT           DMA2_Stream1_IRQHandler        \n   [WEAK]\n  352 0000001A                 EXPORT           DMA2_Stream2_IRQHandler        \n   [WEAK]\n  353 0000001A                 EXPORT           DMA2_Stream3_IRQHandler        \n   [WEAK]\n  354 0000001A                 EXPORT           DMA2_Stream4_IRQHandler        \n   [WEAK]\n  355 0000001A                 EXPORT           ETH_IRQHandler                 \n   [WEAK]\n  356 0000001A                 EXPORT           ETH_WKUP_IRQHandler            \n   [WEAK]\n\n\n\nARM Macro Assembler    Page 15 \n\n\n  357 0000001A                 EXPORT           FDCAN_CAL_IRQHandler           \n   [WEAK]\n  358 0000001A                 EXPORT           DMA2_Stream5_IRQHandler        \n   [WEAK]\n  359 0000001A                 EXPORT           DMA2_Stream6_IRQHandler        \n   [WEAK]\n  360 0000001A                 EXPORT           DMA2_Stream7_IRQHandler        \n   [WEAK]\n  361 0000001A                 EXPORT           USART6_IRQHandler              \n   [WEAK]\n  362 0000001A                 EXPORT           I2C3_EV_IRQHandler             \n   [WEAK]\n  363 0000001A                 EXPORT           I2C3_ER_IRQHandler             \n   [WEAK]\n  364 0000001A                 EXPORT           OTG_HS_EP1_OUT_IRQHandler      \n   [WEAK]\n  365 0000001A                 EXPORT           OTG_HS_EP1_IN_IRQHandler       \n   [WEAK]\n  366 0000001A                 EXPORT           OTG_HS_WKUP_IRQHandler         \n   [WEAK]\n  367 0000001A                 EXPORT           OTG_HS_IRQHandler              \n   [WEAK]\n  368 0000001A                 EXPORT           DCMI_IRQHandler                \n   [WEAK]\n  369 0000001A                 EXPORT           CRYP_IRQHandler                \n   [WEAK]\n  370 0000001A                 EXPORT           HASH_RNG_IRQHandler            \n   [WEAK]\n  371 0000001A                 EXPORT           FPU_IRQHandler                 \n   [WEAK]\n  372 0000001A                 EXPORT           UART7_IRQHandler               \n   [WEAK]\n  373 0000001A                 EXPORT           UART8_IRQHandler               \n   [WEAK]\n  374 0000001A                 EXPORT           SPI4_IRQHandler                \n   [WEAK]\n  375 0000001A                 EXPORT           SPI5_IRQHandler                \n   [WEAK]\n  376 0000001A                 EXPORT           SPI6_IRQHandler                \n   [WEAK]\n  377 0000001A                 EXPORT           SAI1_IRQHandler                \n   [WEAK]\n  378 0000001A                 EXPORT           LTDC_IRQHandler                \n   [WEAK]\n  379 0000001A                 EXPORT           LTDC_ER_IRQHandler             \n   [WEAK]\n  380 0000001A                 EXPORT           DMA2D_IRQHandler               \n   [WEAK]\n  381 0000001A                 EXPORT           SAI2_IRQHandler                \n   [WEAK]\n  382 0000001A                 EXPORT           QUADSPI_IRQHandler             \n   [WEAK]\n  383 0000001A                 EXPORT           LPTIM1_IRQHandler              \n   [WEAK]\n  384 0000001A                 EXPORT           CEC_IRQHandler                 \n   [WEAK]\n  385 0000001A                 EXPORT           I2C4_EV_IRQHandler             \n   [WEAK]\n  386 0000001A                 EXPORT           I2C4_ER_IRQHandler             \n\n\n\nARM Macro Assembler    Page 16 \n\n\n   [WEAK]\n  387 0000001A                 EXPORT           SPDIF_RX_IRQHandler            \n   [WEAK]\n  388 0000001A                 EXPORT           OTG_FS_EP1_OUT_IRQHandler      \n   [WEAK]\n  389 0000001A                 EXPORT           OTG_FS_EP1_IN_IRQHandler       \n   [WEAK]\n  390 0000001A                 EXPORT           OTG_FS_WKUP_IRQHandler         \n   [WEAK]\n  391 0000001A                 EXPORT           OTG_FS_IRQHandler              \n   [WEAK]\n  392 0000001A                 EXPORT           DMAMUX1_OVR_IRQHandler         \n   [WEAK]\n  393 0000001A                 EXPORT           HRTIM1_Master_IRQHandler       \n   [WEAK]\n  394 0000001A                 EXPORT           HRTIM1_TIMA_IRQHandler         \n   [WEAK]\n  395 0000001A                 EXPORT           HRTIM1_TIMB_IRQHandler         \n   [WEAK]\n  396 0000001A                 EXPORT           HRTIM1_TIMC_IRQHandler         \n   [WEAK]\n  397 0000001A                 EXPORT           HRTIM1_TIMD_IRQHandler         \n   [WEAK]\n  398 0000001A                 EXPORT           HRTIM1_TIME_IRQHandler         \n   [WEAK]\n  399 0000001A                 EXPORT           HRTIM1_FLT_IRQHandler          \n   [WEAK]\n  400 0000001A                 EXPORT           DFSDM1_FLT0_IRQHandler         \n   [WEAK]\n  401 0000001A                 EXPORT           DFSDM1_FLT1_IRQHandler         \n   [WEAK]\n  402 0000001A                 EXPORT           DFSDM1_FLT2_IRQHandler         \n   [WEAK]\n  403 0000001A                 EXPORT           DFSDM1_FLT3_IRQHandler         \n   [WEAK]\n  404 0000001A                 EXPORT           SAI3_IRQHandler                \n   [WEAK]\n  405 0000001A                 EXPORT           SWPMI1_IRQHandler              \n   [WEAK]\n  406 0000001A                 EXPORT           TIM15_IRQHandler               \n   [WEAK]\n  407 0000001A                 EXPORT           TIM16_IRQHandler               \n   [WEAK]\n  408 0000001A                 EXPORT           TIM17_IRQHandler               \n   [WEAK]\n  409 0000001A                 EXPORT           MDIOS_WKUP_IRQHandler          \n   [WEAK]\n  410 0000001A                 EXPORT           MDIOS_IRQHandler               \n   [WEAK]\n  411 0000001A                 EXPORT           JPEG_IRQHandler                \n   [WEAK]\n  412 0000001A                 EXPORT           MDMA_IRQHandler                \n   [WEAK]\n  413 0000001A                 EXPORT           SDMMC2_IRQHandler              \n   [WEAK]\n  414 0000001A                 EXPORT           HSEM1_IRQHandler               \n   [WEAK]\n  415 0000001A                 EXPORT           ADC3_IRQHandler                \n   [WEAK]\n\n\n\nARM Macro Assembler    Page 17 \n\n\n  416 0000001A                 EXPORT           DMAMUX2_OVR_IRQHandler         \n   [WEAK]\n  417 0000001A                 EXPORT           BDMA_Channel0_IRQHandler       \n   [WEAK]\n  418 0000001A                 EXPORT           BDMA_Channel1_IRQHandler       \n   [WEAK]\n  419 0000001A                 EXPORT           BDMA_Channel2_IRQHandler       \n   [WEAK]\n  420 0000001A                 EXPORT           BDMA_Channel3_IRQHandler       \n   [WEAK]\n  421 0000001A                 EXPORT           BDMA_Channel4_IRQHandler       \n   [WEAK]\n  422 0000001A                 EXPORT           BDMA_Channel5_IRQHandler       \n   [WEAK]\n  423 0000001A                 EXPORT           BDMA_Channel6_IRQHandler       \n   [WEAK]\n  424 0000001A                 EXPORT           BDMA_Channel7_IRQHandler       \n   [WEAK]\n  425 0000001A                 EXPORT           COMP1_IRQHandler               \n   [WEAK]\n  426 0000001A                 EXPORT           LPTIM2_IRQHandler              \n   [WEAK]\n  427 0000001A                 EXPORT           LPTIM3_IRQHandler              \n   [WEAK]\n  428 0000001A                 EXPORT           LPTIM4_IRQHandler              \n   [WEAK]\n  429 0000001A                 EXPORT           LPTIM5_IRQHandler              \n   [WEAK]\n  430 0000001A                 EXPORT           LPUART1_IRQHandler             \n   [WEAK]\n  431 0000001A                 EXPORT           CRS_IRQHandler                 \n   [WEAK]\n  432 0000001A                 EXPORT           ECC_IRQHandler                 \n   [WEAK]\n  433 0000001A                 EXPORT           SAI4_IRQHandler                \n   [WEAK]\n  434 0000001A                 EXPORT           WAKEUP_PIN_IRQHandler          \n   [WEAK]\n  435 0000001A         \n  436 0000001A         \n  437 0000001A         WWDG_IRQHandler\n  438 0000001A         PVD_AVD_IRQHandler\n  439 0000001A         TAMP_STAMP_IRQHandler\n  440 0000001A         RTC_WKUP_IRQHandler\n  441 0000001A         FLASH_IRQHandler\n  442 0000001A         RCC_IRQHandler\n  443 0000001A         EXTI0_IRQHandler\n  444 0000001A         EXTI1_IRQHandler\n  445 0000001A         EXTI2_IRQHandler\n  446 0000001A         EXTI3_IRQHandler\n  447 0000001A         EXTI4_IRQHandler\n  448 0000001A         DMA1_Stream0_IRQHandler\n  449 0000001A         DMA1_Stream1_IRQHandler\n  450 0000001A         DMA1_Stream2_IRQHandler\n  451 0000001A         DMA1_Stream3_IRQHandler\n  452 0000001A         DMA1_Stream4_IRQHandler\n  453 0000001A         DMA1_Stream5_IRQHandler\n  454 0000001A         DMA1_Stream6_IRQHandler\n  455 0000001A         ADC_IRQHandler\n\n\n\nARM Macro Assembler    Page 18 \n\n\n  456 0000001A         FDCAN1_IT0_IRQHandler\n  457 0000001A         FDCAN2_IT0_IRQHandler\n  458 0000001A         FDCAN1_IT1_IRQHandler\n  459 0000001A         FDCAN2_IT1_IRQHandler\n  460 0000001A         EXTI9_5_IRQHandler\n  461 0000001A         TIM1_BRK_IRQHandler\n  462 0000001A         TIM1_UP_IRQHandler\n  463 0000001A         TIM1_TRG_COM_IRQHandler\n  464 0000001A         TIM1_CC_IRQHandler\n  465 0000001A         TIM2_IRQHandler\n  466 0000001A         TIM3_IRQHandler\n  467 0000001A         TIM4_IRQHandler\n  468 0000001A         I2C1_EV_IRQHandler\n  469 0000001A         I2C1_ER_IRQHandler\n  470 0000001A         I2C2_EV_IRQHandler\n  471 0000001A         I2C2_ER_IRQHandler\n  472 0000001A         SPI1_IRQHandler\n  473 0000001A         SPI2_IRQHandler\n  474 0000001A         USART1_IRQHandler\n  475 0000001A         USART2_IRQHandler\n  476 0000001A         USART3_IRQHandler\n  477 0000001A         EXTI15_10_IRQHandler\n  478 0000001A         RTC_Alarm_IRQHandler\n  479 0000001A         TIM8_BRK_TIM12_IRQHandler\n  480 0000001A         TIM8_UP_TIM13_IRQHandler\n  481 0000001A         TIM8_TRG_COM_TIM14_IRQHandler\n  482 0000001A         TIM8_CC_IRQHandler\n  483 0000001A         DMA1_Stream7_IRQHandler\n  484 0000001A         FMC_IRQHandler\n  485 0000001A         SDMMC1_IRQHandler\n  486 0000001A         TIM5_IRQHandler\n  487 0000001A         SPI3_IRQHandler\n  488 0000001A         UART4_IRQHandler\n  489 0000001A         UART5_IRQHandler\n  490 0000001A         TIM6_DAC_IRQHandler\n  491 0000001A         TIM7_IRQHandler\n  492 0000001A         DMA2_Stream0_IRQHandler\n  493 0000001A         DMA2_Stream1_IRQHandler\n  494 0000001A         DMA2_Stream2_IRQHandler\n  495 0000001A         DMA2_Stream3_IRQHandler\n  496 0000001A         DMA2_Stream4_IRQHandler\n  497 0000001A         ETH_IRQHandler\n  498 0000001A         ETH_WKUP_IRQHandler\n  499 0000001A         FDCAN_CAL_IRQHandler\n  500 0000001A         DMA2_Stream5_IRQHandler\n  501 0000001A         DMA2_Stream6_IRQHandler\n  502 0000001A         DMA2_Stream7_IRQHandler\n  503 0000001A         USART6_IRQHandler\n  504 0000001A         I2C3_EV_IRQHandler\n  505 0000001A         I2C3_ER_IRQHandler\n  506 0000001A         OTG_HS_EP1_OUT_IRQHandler\n  507 0000001A         OTG_HS_EP1_IN_IRQHandler\n  508 0000001A         OTG_HS_WKUP_IRQHandler\n  509 0000001A         OTG_HS_IRQHandler\n  510 0000001A         DCMI_IRQHandler\n  511 0000001A         CRYP_IRQHandler\n  512 0000001A         HASH_RNG_IRQHandler\n  513 0000001A         FPU_IRQHandler\n  514 0000001A         UART7_IRQHandler\n\n\n\nARM Macro Assembler    Page 19 \n\n\n  515 0000001A         UART8_IRQHandler\n  516 0000001A         SPI4_IRQHandler\n  517 0000001A         SPI5_IRQHandler\n  518 0000001A         SPI6_IRQHandler\n  519 0000001A         SAI1_IRQHandler\n  520 0000001A         LTDC_IRQHandler\n  521 0000001A         LTDC_ER_IRQHandler\n  522 0000001A         DMA2D_IRQHandler\n  523 0000001A         SAI2_IRQHandler\n  524 0000001A         QUADSPI_IRQHandler\n  525 0000001A         LPTIM1_IRQHandler\n  526 0000001A         CEC_IRQHandler\n  527 0000001A         I2C4_EV_IRQHandler\n  528 0000001A         I2C4_ER_IRQHandler\n  529 0000001A         SPDIF_RX_IRQHandler\n  530 0000001A         OTG_FS_EP1_OUT_IRQHandler\n  531 0000001A         OTG_FS_EP1_IN_IRQHandler\n  532 0000001A         OTG_FS_WKUP_IRQHandler\n  533 0000001A         OTG_FS_IRQHandler\n  534 0000001A         DMAMUX1_OVR_IRQHandler\n  535 0000001A         HRTIM1_Master_IRQHandler\n  536 0000001A         HRTIM1_TIMA_IRQHandler\n  537 0000001A         HRTIM1_TIMB_IRQHandler\n  538 0000001A         HRTIM1_TIMC_IRQHandler\n  539 0000001A         HRTIM1_TIMD_IRQHandler\n  540 0000001A         HRTIM1_TIME_IRQHandler\n  541 0000001A         HRTIM1_FLT_IRQHandler\n  542 0000001A         DFSDM1_FLT0_IRQHandler\n  543 0000001A         DFSDM1_FLT1_IRQHandler\n  544 0000001A         DFSDM1_FLT2_IRQHandler\n  545 0000001A         DFSDM1_FLT3_IRQHandler\n  546 0000001A         SAI3_IRQHandler\n  547 0000001A         SWPMI1_IRQHandler\n  548 0000001A         TIM15_IRQHandler\n  549 0000001A         TIM16_IRQHandler\n  550 0000001A         TIM17_IRQHandler\n  551 0000001A         MDIOS_WKUP_IRQHandler\n  552 0000001A         MDIOS_IRQHandler\n  553 0000001A         JPEG_IRQHandler\n  554 0000001A         MDMA_IRQHandler\n  555 0000001A         SDMMC2_IRQHandler\n  556 0000001A         HSEM1_IRQHandler\n  557 0000001A         ADC3_IRQHandler\n  558 0000001A         DMAMUX2_OVR_IRQHandler\n  559 0000001A         BDMA_Channel0_IRQHandler\n  560 0000001A         BDMA_Channel1_IRQHandler\n  561 0000001A         BDMA_Channel2_IRQHandler\n  562 0000001A         BDMA_Channel3_IRQHandler\n  563 0000001A         BDMA_Channel4_IRQHandler\n  564 0000001A         BDMA_Channel5_IRQHandler\n  565 0000001A         BDMA_Channel6_IRQHandler\n  566 0000001A         BDMA_Channel7_IRQHandler\n  567 0000001A         COMP1_IRQHandler\n  568 0000001A         LPTIM2_IRQHandler\n  569 0000001A         LPTIM3_IRQHandler\n  570 0000001A         LPTIM4_IRQHandler\n  571 0000001A         LPTIM5_IRQHandler\n  572 0000001A         LPUART1_IRQHandler\n  573 0000001A         CRS_IRQHandler\n\n\n\nARM Macro Assembler    Page 20 \n\n\n  574 0000001A         ECC_IRQHandler\n  575 0000001A         SAI4_IRQHandler\n  576 0000001A         WAKEUP_PIN_IRQHandler\n  577 0000001A         \n  578 0000001A E7FE            B                .\n  579 0000001C         \n  580 0000001C                 ENDP\n  581 0000001C         \n  582 0000001C                 ALIGN\n  583 0000001C         \n  584 0000001C         ;*******************************************************\n                       ************************\n  585 0000001C         ; User Stack and Heap initialization\n  586 0000001C         ;*******************************************************\n                       ************************\n  587 0000001C                 IF               :DEF:__MICROLIB\n  594 0000001C         \n  595 0000001C                 IMPORT           __use_two_region_memory\n  596 0000001C                 EXPORT           __user_initial_stackheap\n  597 0000001C         \n  598 0000001C         __user_initial_stackheap\n  599 0000001C         \n  600 0000001C 4804            LDR              R0, =  Heap_Mem\n  601 0000001E 4905            LDR              R1, =(Stack_Mem + Stack_Size)\n  602 00000020 4A05            LDR              R2, = (Heap_Mem +  Heap_Size)\n  603 00000022 4B06            LDR              R3, = Stack_Mem\n  604 00000024 4770            BX               LR\n  605 00000026         \n  606 00000026 00 00           ALIGN\n  607 00000028         \n  608 00000028                 ENDIF\n  609 00000028         \n  610 00000028                 END\n              00000000 \n              00000000 \n              00000000 \n              00000400 \n              00000200 \n              00000000 \nCommand Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M7.fp.dp --apcs=\ninterwork --depend=app_test\\startup_stm32h750xx.d -oapp_test\\startup_stm32h750x\nx.o -I..\\Core\\Inc -I.\\RTE\\_hexapod -ID:\\stm32\\UV5\\Keil\\Keil5\\ARM\\PACK\\ARM\\CMSIS\n\\5.3.0\\CMSIS\\Include -ID:\\stm32\\UV5\\Keil\\Keil5\\ARM\\PACK\\Keil\\STM32H7xx_DFP\\3.0.\n0\\Drivers\\CMSIS\\Device\\ST\\STM32H7xx\\Include --predefine=\"__UVISION_VERSION SETA\n 525\" --predefine=\"_RTE_ SETA 1\" --predefine=\"STM32H750xx SETA 1\" --list=startu\np_stm32h750xx.lst startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 1 Alphabetic symbol ordering\nRelocatable symbols\n\nSTACK 00000000\n\nSymbol: STACK\n   Definitions\n      At line 34 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: STACK unused\nStack_Mem 00000000\n\nSymbol: Stack_Mem\n   Definitions\n      At line 35 in file startup_stm32h750xx.s\n   Uses\n      At line 601 in file startup_stm32h750xx.s\n      At line 603 in file startup_stm32h750xx.s\n\n__initial_sp 00000400\n\nSymbol: __initial_sp\n   Definitions\n      At line 36 in file startup_stm32h750xx.s\n   Uses\n      At line 60 in file startup_stm32h750xx.s\nComment: __initial_sp used once\n3 symbols\n\n\n\nARM Macro Assembler    Page 1 Alphabetic symbol ordering\nRelocatable symbols\n\nHEAP 00000000\n\nSymbol: HEAP\n   Definitions\n      At line 45 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: HEAP unused\nHeap_Mem 00000000\n\nSymbol: Heap_Mem\n   Definitions\n      At line 47 in file startup_stm32h750xx.s\n   Uses\n      At line 600 in file startup_stm32h750xx.s\n      At line 602 in file startup_stm32h750xx.s\n\n__heap_base 00000000\n\nSymbol: __heap_base\n   Definitions\n      At line 46 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: __heap_base unused\n__heap_limit 00000200\n\nSymbol: __heap_limit\n   Definitions\n      At line 48 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: __heap_limit unused\n4 symbols\n\n\n\nARM Macro Assembler    Page 1 Alphabetic symbol ordering\nRelocatable symbols\n\nRESET 00000000\n\nSymbol: RESET\n   Definitions\n      At line 55 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: RESET unused\n__Vectors 00000000\n\nSymbol: __Vectors\n   Definitions\n      At line 60 in file startup_stm32h750xx.s\n   Uses\n      At line 56 in file startup_stm32h750xx.s\n      At line 232 in file startup_stm32h750xx.s\n\n__Vectors_End 00000298\n\nSymbol: __Vectors_End\n   Definitions\n      At line 230 in file startup_stm32h750xx.s\n   Uses\n      At line 57 in file startup_stm32h750xx.s\n      At line 232 in file startup_stm32h750xx.s\n\n3 symbols\n\n\n\nARM Macro Assembler    Page 1 Alphabetic symbol ordering\nRelocatable symbols\n\n.text 00000000\n\nSymbol: .text\n   Definitions\n      At line 234 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: .text unused\nADC3_IRQHandler 0000001A\n\nSymbol: ADC3_IRQHandler\n   Definitions\n      At line 557 in file startup_stm32h750xx.s\n   Uses\n      At line 205 in file startup_stm32h750xx.s\n      At line 415 in file startup_stm32h750xx.s\n\nADC_IRQHandler 0000001A\n\nSymbol: ADC_IRQHandler\n   Definitions\n      At line 455 in file startup_stm32h750xx.s\n   Uses\n      At line 96 in file startup_stm32h750xx.s\n      At line 313 in file startup_stm32h750xx.s\n\nBDMA_Channel0_IRQHandler 0000001A\n\nSymbol: BDMA_Channel0_IRQHandler\n   Definitions\n      At line 559 in file startup_stm32h750xx.s\n   Uses\n      At line 207 in file startup_stm32h750xx.s\n      At line 417 in file startup_stm32h750xx.s\n\nBDMA_Channel1_IRQHandler 0000001A\n\nSymbol: BDMA_Channel1_IRQHandler\n   Definitions\n      At line 560 in file startup_stm32h750xx.s\n   Uses\n      At line 208 in file startup_stm32h750xx.s\n      At line 418 in file startup_stm32h750xx.s\n\nBDMA_Channel2_IRQHandler 0000001A\n\nSymbol: BDMA_Channel2_IRQHandler\n   Definitions\n      At line 561 in file startup_stm32h750xx.s\n   Uses\n      At line 209 in file startup_stm32h750xx.s\n      At line 419 in file startup_stm32h750xx.s\n\nBDMA_Channel3_IRQHandler 0000001A\n\nSymbol: BDMA_Channel3_IRQHandler\n   Definitions\n      At line 562 in file startup_stm32h750xx.s\n   Uses\n\n\n\nARM Macro Assembler    Page 2 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 210 in file startup_stm32h750xx.s\n      At line 420 in file startup_stm32h750xx.s\n\nBDMA_Channel4_IRQHandler 0000001A\n\nSymbol: BDMA_Channel4_IRQHandler\n   Definitions\n      At line 563 in file startup_stm32h750xx.s\n   Uses\n      At line 211 in file startup_stm32h750xx.s\n      At line 421 in file startup_stm32h750xx.s\n\nBDMA_Channel5_IRQHandler 0000001A\n\nSymbol: BDMA_Channel5_IRQHandler\n   Definitions\n      At line 564 in file startup_stm32h750xx.s\n   Uses\n      At line 212 in file startup_stm32h750xx.s\n      At line 422 in file startup_stm32h750xx.s\n\nBDMA_Channel6_IRQHandler 0000001A\n\nSymbol: BDMA_Channel6_IRQHandler\n   Definitions\n      At line 565 in file startup_stm32h750xx.s\n   Uses\n      At line 213 in file startup_stm32h750xx.s\n      At line 423 in file startup_stm32h750xx.s\n\nBDMA_Channel7_IRQHandler 0000001A\n\nSymbol: BDMA_Channel7_IRQHandler\n   Definitions\n      At line 566 in file startup_stm32h750xx.s\n   Uses\n      At line 214 in file startup_stm32h750xx.s\n      At line 424 in file startup_stm32h750xx.s\n\nBusFault_Handler 0000000E\n\nSymbol: BusFault_Handler\n   Definitions\n      At line 265 in file startup_stm32h750xx.s\n   Uses\n      At line 65 in file startup_stm32h750xx.s\n      At line 266 in file startup_stm32h750xx.s\n\nCEC_IRQHandler 0000001A\n\nSymbol: CEC_IRQHandler\n   Definitions\n      At line 526 in file startup_stm32h750xx.s\n   Uses\n      At line 172 in file startup_stm32h750xx.s\n      At line 384 in file startup_stm32h750xx.s\n\nCOMP1_IRQHandler 0000001A\n\n\n\n\nARM Macro Assembler    Page 3 Alphabetic symbol ordering\nRelocatable symbols\n\nSymbol: COMP1_IRQHandler\n   Definitions\n      At line 567 in file startup_stm32h750xx.s\n   Uses\n      At line 215 in file startup_stm32h750xx.s\n      At line 425 in file startup_stm32h750xx.s\n\nCRS_IRQHandler 0000001A\n\nSymbol: CRS_IRQHandler\n   Definitions\n      At line 573 in file startup_stm32h750xx.s\n   Uses\n      At line 222 in file startup_stm32h750xx.s\n      At line 431 in file startup_stm32h750xx.s\n\nCRYP_IRQHandler 0000001A\n\nSymbol: CRYP_IRQHandler\n   Definitions\n      At line 511 in file startup_stm32h750xx.s\n   Uses\n      At line 157 in file startup_stm32h750xx.s\n      At line 369 in file startup_stm32h750xx.s\n\nDCMI_IRQHandler 0000001A\n\nSymbol: DCMI_IRQHandler\n   Definitions\n      At line 510 in file startup_stm32h750xx.s\n   Uses\n      At line 156 in file startup_stm32h750xx.s\n      At line 368 in file startup_stm32h750xx.s\n\nDFSDM1_FLT0_IRQHandler 0000001A\n\nSymbol: DFSDM1_FLT0_IRQHandler\n   Definitions\n      At line 542 in file startup_stm32h750xx.s\n   Uses\n      At line 188 in file startup_stm32h750xx.s\n      At line 400 in file startup_stm32h750xx.s\n\nDFSDM1_FLT1_IRQHandler 0000001A\n\nSymbol: DFSDM1_FLT1_IRQHandler\n   Definitions\n      At line 543 in file startup_stm32h750xx.s\n   Uses\n      At line 189 in file startup_stm32h750xx.s\n      At line 401 in file startup_stm32h750xx.s\n\nDFSDM1_FLT2_IRQHandler 0000001A\n\nSymbol: DFSDM1_FLT2_IRQHandler\n   Definitions\n      At line 544 in file startup_stm32h750xx.s\n   Uses\n      At line 190 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 4 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 402 in file startup_stm32h750xx.s\n\nDFSDM1_FLT3_IRQHandler 0000001A\n\nSymbol: DFSDM1_FLT3_IRQHandler\n   Definitions\n      At line 545 in file startup_stm32h750xx.s\n   Uses\n      At line 191 in file startup_stm32h750xx.s\n      At line 403 in file startup_stm32h750xx.s\n\nDMA1_Stream0_IRQHandler 0000001A\n\nSymbol: DMA1_Stream0_IRQHandler\n   Definitions\n      At line 448 in file startup_stm32h750xx.s\n   Uses\n      At line 89 in file startup_stm32h750xx.s\n      At line 305 in file startup_stm32h750xx.s\n\nDMA1_Stream1_IRQHandler 0000001A\n\nSymbol: DMA1_Stream1_IRQHandler\n   Definitions\n      At line 449 in file startup_stm32h750xx.s\n   Uses\n      At line 90 in file startup_stm32h750xx.s\n      At line 306 in file startup_stm32h750xx.s\n\nDMA1_Stream2_IRQHandler 0000001A\n\nSymbol: DMA1_Stream2_IRQHandler\n   Definitions\n      At line 450 in file startup_stm32h750xx.s\n   Uses\n      At line 91 in file startup_stm32h750xx.s\n      At line 307 in file startup_stm32h750xx.s\n\nDMA1_Stream3_IRQHandler 0000001A\n\nSymbol: DMA1_Stream3_IRQHandler\n   Definitions\n      At line 451 in file startup_stm32h750xx.s\n   Uses\n      At line 92 in file startup_stm32h750xx.s\n      At line 308 in file startup_stm32h750xx.s\n\nDMA1_Stream4_IRQHandler 0000001A\n\nSymbol: DMA1_Stream4_IRQHandler\n   Definitions\n      At line 452 in file startup_stm32h750xx.s\n   Uses\n      At line 93 in file startup_stm32h750xx.s\n      At line 309 in file startup_stm32h750xx.s\n\nDMA1_Stream5_IRQHandler 0000001A\n\nSymbol: DMA1_Stream5_IRQHandler\n\n\n\nARM Macro Assembler    Page 5 Alphabetic symbol ordering\nRelocatable symbols\n\n   Definitions\n      At line 453 in file startup_stm32h750xx.s\n   Uses\n      At line 94 in file startup_stm32h750xx.s\n      At line 310 in file startup_stm32h750xx.s\n\nDMA1_Stream6_IRQHandler 0000001A\n\nSymbol: DMA1_Stream6_IRQHandler\n   Definitions\n      At line 454 in file startup_stm32h750xx.s\n   Uses\n      At line 95 in file startup_stm32h750xx.s\n      At line 311 in file startup_stm32h750xx.s\n\nDMA1_Stream7_IRQHandler 0000001A\n\nSymbol: DMA1_Stream7_IRQHandler\n   Definitions\n      At line 483 in file startup_stm32h750xx.s\n   Uses\n      At line 125 in file startup_stm32h750xx.s\n      At line 312 in file startup_stm32h750xx.s\n      At line 341 in file startup_stm32h750xx.s\n\nDMA2D_IRQHandler 0000001A\n\nSymbol: DMA2D_IRQHandler\n   Definitions\n      At line 522 in file startup_stm32h750xx.s\n   Uses\n      At line 168 in file startup_stm32h750xx.s\n      At line 380 in file startup_stm32h750xx.s\n\nDMA2_Stream0_IRQHandler 0000001A\n\nSymbol: DMA2_Stream0_IRQHandler\n   Definitions\n      At line 492 in file startup_stm32h750xx.s\n   Uses\n      At line 134 in file startup_stm32h750xx.s\n      At line 350 in file startup_stm32h750xx.s\n\nDMA2_Stream1_IRQHandler 0000001A\n\nSymbol: DMA2_Stream1_IRQHandler\n   Definitions\n      At line 493 in file startup_stm32h750xx.s\n   Uses\n      At line 135 in file startup_stm32h750xx.s\n      At line 351 in file startup_stm32h750xx.s\n\nDMA2_Stream2_IRQHandler 0000001A\n\nSymbol: DMA2_Stream2_IRQHandler\n   Definitions\n      At line 494 in file startup_stm32h750xx.s\n   Uses\n      At line 136 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 6 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 352 in file startup_stm32h750xx.s\n\nDMA2_Stream3_IRQHandler 0000001A\n\nSymbol: DMA2_Stream3_IRQHandler\n   Definitions\n      At line 495 in file startup_stm32h750xx.s\n   Uses\n      At line 137 in file startup_stm32h750xx.s\n      At line 353 in file startup_stm32h750xx.s\n\nDMA2_Stream4_IRQHandler 0000001A\n\nSymbol: DMA2_Stream4_IRQHandler\n   Definitions\n      At line 496 in file startup_stm32h750xx.s\n   Uses\n      At line 138 in file startup_stm32h750xx.s\n      At line 354 in file startup_stm32h750xx.s\n\nDMA2_Stream5_IRQHandler 0000001A\n\nSymbol: DMA2_Stream5_IRQHandler\n   Definitions\n      At line 500 in file startup_stm32h750xx.s\n   Uses\n      At line 146 in file startup_stm32h750xx.s\n      At line 358 in file startup_stm32h750xx.s\n\nDMA2_Stream6_IRQHandler 0000001A\n\nSymbol: DMA2_Stream6_IRQHandler\n   Definitions\n      At line 501 in file startup_stm32h750xx.s\n   Uses\n      At line 147 in file startup_stm32h750xx.s\n      At line 359 in file startup_stm32h750xx.s\n\nDMA2_Stream7_IRQHandler 0000001A\n\nSymbol: DMA2_Stream7_IRQHandler\n   Definitions\n      At line 502 in file startup_stm32h750xx.s\n   Uses\n      At line 148 in file startup_stm32h750xx.s\n      At line 360 in file startup_stm32h750xx.s\n\nDMAMUX1_OVR_IRQHandler 0000001A\n\nSymbol: DMAMUX1_OVR_IRQHandler\n   Definitions\n      At line 534 in file startup_stm32h750xx.s\n   Uses\n      At line 180 in file startup_stm32h750xx.s\n      At line 392 in file startup_stm32h750xx.s\n\nDMAMUX2_OVR_IRQHandler 0000001A\n\nSymbol: DMAMUX2_OVR_IRQHandler\n\n\n\nARM Macro Assembler    Page 7 Alphabetic symbol ordering\nRelocatable symbols\n\n   Definitions\n      At line 558 in file startup_stm32h750xx.s\n   Uses\n      At line 206 in file startup_stm32h750xx.s\n      At line 416 in file startup_stm32h750xx.s\n\nDebugMon_Handler 00000014\n\nSymbol: DebugMon_Handler\n   Definitions\n      At line 279 in file startup_stm32h750xx.s\n   Uses\n      At line 72 in file startup_stm32h750xx.s\n      At line 280 in file startup_stm32h750xx.s\n\nDefault_Handler 0000001A\n\nSymbol: Default_Handler\n   Definitions\n      At line 292 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: Default_Handler unused\nECC_IRQHandler 0000001A\n\nSymbol: ECC_IRQHandler\n   Definitions\n      At line 574 in file startup_stm32h750xx.s\n   Uses\n      At line 223 in file startup_stm32h750xx.s\n      At line 432 in file startup_stm32h750xx.s\n\nETH_IRQHandler 0000001A\n\nSymbol: ETH_IRQHandler\n   Definitions\n      At line 497 in file startup_stm32h750xx.s\n   Uses\n      At line 139 in file startup_stm32h750xx.s\n      At line 355 in file startup_stm32h750xx.s\n\nETH_WKUP_IRQHandler 0000001A\n\nSymbol: ETH_WKUP_IRQHandler\n   Definitions\n      At line 498 in file startup_stm32h750xx.s\n   Uses\n      At line 140 in file startup_stm32h750xx.s\n      At line 356 in file startup_stm32h750xx.s\n\nEXTI0_IRQHandler 0000001A\n\nSymbol: EXTI0_IRQHandler\n   Definitions\n      At line 443 in file startup_stm32h750xx.s\n   Uses\n      At line 84 in file startup_stm32h750xx.s\n      At line 300 in file startup_stm32h750xx.s\n\n\n\n\nARM Macro Assembler    Page 8 Alphabetic symbol ordering\nRelocatable symbols\n\nEXTI15_10_IRQHandler 0000001A\n\nSymbol: EXTI15_10_IRQHandler\n   Definitions\n      At line 477 in file startup_stm32h750xx.s\n   Uses\n      At line 118 in file startup_stm32h750xx.s\n      At line 335 in file startup_stm32h750xx.s\n\nEXTI1_IRQHandler 0000001A\n\nSymbol: EXTI1_IRQHandler\n   Definitions\n      At line 444 in file startup_stm32h750xx.s\n   Uses\n      At line 85 in file startup_stm32h750xx.s\n      At line 301 in file startup_stm32h750xx.s\n\nEXTI2_IRQHandler 0000001A\n\nSymbol: EXTI2_IRQHandler\n   Definitions\n      At line 445 in file startup_stm32h750xx.s\n   Uses\n      At line 86 in file startup_stm32h750xx.s\n      At line 302 in file startup_stm32h750xx.s\n\nEXTI3_IRQHandler 0000001A\n\nSymbol: EXTI3_IRQHandler\n   Definitions\n      At line 446 in file startup_stm32h750xx.s\n   Uses\n      At line 87 in file startup_stm32h750xx.s\n      At line 303 in file startup_stm32h750xx.s\n\nEXTI4_IRQHandler 0000001A\n\nSymbol: EXTI4_IRQHandler\n   Definitions\n      At line 447 in file startup_stm32h750xx.s\n   Uses\n      At line 88 in file startup_stm32h750xx.s\n      At line 304 in file startup_stm32h750xx.s\n\nEXTI9_5_IRQHandler 0000001A\n\nSymbol: EXTI9_5_IRQHandler\n   Definitions\n      At line 460 in file startup_stm32h750xx.s\n   Uses\n      At line 101 in file startup_stm32h750xx.s\n      At line 318 in file startup_stm32h750xx.s\n\nFDCAN1_IT0_IRQHandler 0000001A\n\nSymbol: FDCAN1_IT0_IRQHandler\n   Definitions\n      At line 456 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 9 Alphabetic symbol ordering\nRelocatable symbols\n\n   Uses\n      At line 97 in file startup_stm32h750xx.s\n      At line 314 in file startup_stm32h750xx.s\n\nFDCAN1_IT1_IRQHandler 0000001A\n\nSymbol: FDCAN1_IT1_IRQHandler\n   Definitions\n      At line 458 in file startup_stm32h750xx.s\n   Uses\n      At line 99 in file startup_stm32h750xx.s\n      At line 316 in file startup_stm32h750xx.s\n\nFDCAN2_IT0_IRQHandler 0000001A\n\nSymbol: FDCAN2_IT0_IRQHandler\n   Definitions\n      At line 457 in file startup_stm32h750xx.s\n   Uses\n      At line 98 in file startup_stm32h750xx.s\n      At line 315 in file startup_stm32h750xx.s\n\nFDCAN2_IT1_IRQHandler 0000001A\n\nSymbol: FDCAN2_IT1_IRQHandler\n   Definitions\n      At line 459 in file startup_stm32h750xx.s\n   Uses\n      At line 100 in file startup_stm32h750xx.s\n      At line 317 in file startup_stm32h750xx.s\n\nFDCAN_CAL_IRQHandler 0000001A\n\nSymbol: FDCAN_CAL_IRQHandler\n   Definitions\n      At line 499 in file startup_stm32h750xx.s\n   Uses\n      At line 141 in file startup_stm32h750xx.s\n      At line 357 in file startup_stm32h750xx.s\n\nFLASH_IRQHandler 0000001A\n\nSymbol: FLASH_IRQHandler\n   Definitions\n      At line 441 in file startup_stm32h750xx.s\n   Uses\n      At line 82 in file startup_stm32h750xx.s\n      At line 298 in file startup_stm32h750xx.s\n\nFMC_IRQHandler 0000001A\n\nSymbol: FMC_IRQHandler\n   Definitions\n      At line 484 in file startup_stm32h750xx.s\n   Uses\n      At line 126 in file startup_stm32h750xx.s\n      At line 342 in file startup_stm32h750xx.s\n\nFPU_IRQHandler 0000001A\n\n\n\nARM Macro Assembler    Page 10 Alphabetic symbol ordering\nRelocatable symbols\n\n\nSymbol: FPU_IRQHandler\n   Definitions\n      At line 513 in file startup_stm32h750xx.s\n   Uses\n      At line 159 in file startup_stm32h750xx.s\n      At line 371 in file startup_stm32h750xx.s\n\nHASH_RNG_IRQHandler 0000001A\n\nSymbol: HASH_RNG_IRQHandler\n   Definitions\n      At line 512 in file startup_stm32h750xx.s\n   Uses\n      At line 158 in file startup_stm32h750xx.s\n      At line 370 in file startup_stm32h750xx.s\n\nHRTIM1_FLT_IRQHandler 0000001A\n\nSymbol: HRTIM1_FLT_IRQHandler\n   Definitions\n      At line 541 in file startup_stm32h750xx.s\n   Uses\n      At line 187 in file startup_stm32h750xx.s\n      At line 399 in file startup_stm32h750xx.s\n\nHRTIM1_Master_IRQHandler 0000001A\n\nSymbol: HRTIM1_Master_IRQHandler\n   Definitions\n      At line 535 in file startup_stm32h750xx.s\n   Uses\n      At line 181 in file startup_stm32h750xx.s\n      At line 393 in file startup_stm32h750xx.s\n\nHRTIM1_TIMA_IRQHandler 0000001A\n\nSymbol: HRTIM1_TIMA_IRQHandler\n   Definitions\n      At line 536 in file startup_stm32h750xx.s\n   Uses\n      At line 182 in file startup_stm32h750xx.s\n      At line 394 in file startup_stm32h750xx.s\n\nHRTIM1_TIMB_IRQHandler 0000001A\n\nSymbol: HRTIM1_TIMB_IRQHandler\n   Definitions\n      At line 537 in file startup_stm32h750xx.s\n   Uses\n      At line 183 in file startup_stm32h750xx.s\n      At line 395 in file startup_stm32h750xx.s\n\nHRTIM1_TIMC_IRQHandler 0000001A\n\nSymbol: HRTIM1_TIMC_IRQHandler\n   Definitions\n      At line 538 in file startup_stm32h750xx.s\n   Uses\n\n\n\nARM Macro Assembler    Page 11 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 184 in file startup_stm32h750xx.s\n      At line 396 in file startup_stm32h750xx.s\n\nHRTIM1_TIMD_IRQHandler 0000001A\n\nSymbol: HRTIM1_TIMD_IRQHandler\n   Definitions\n      At line 539 in file startup_stm32h750xx.s\n   Uses\n      At line 185 in file startup_stm32h750xx.s\n      At line 397 in file startup_stm32h750xx.s\n\nHRTIM1_TIME_IRQHandler 0000001A\n\nSymbol: HRTIM1_TIME_IRQHandler\n   Definitions\n      At line 540 in file startup_stm32h750xx.s\n   Uses\n      At line 186 in file startup_stm32h750xx.s\n      At line 398 in file startup_stm32h750xx.s\n\nHSEM1_IRQHandler 0000001A\n\nSymbol: HSEM1_IRQHandler\n   Definitions\n      At line 556 in file startup_stm32h750xx.s\n   Uses\n      At line 203 in file startup_stm32h750xx.s\n      At line 414 in file startup_stm32h750xx.s\n\nHardFault_Handler 0000000A\n\nSymbol: HardFault_Handler\n   Definitions\n      At line 255 in file startup_stm32h750xx.s\n   Uses\n      At line 63 in file startup_stm32h750xx.s\n      At line 256 in file startup_stm32h750xx.s\n\nI2C1_ER_IRQHandler 0000001A\n\nSymbol: I2C1_ER_IRQHandler\n   Definitions\n      At line 469 in file startup_stm32h750xx.s\n   Uses\n      At line 110 in file startup_stm32h750xx.s\n      At line 327 in file startup_stm32h750xx.s\n\nI2C1_EV_IRQHandler 0000001A\n\nSymbol: I2C1_EV_IRQHandler\n   Definitions\n      At line 468 in file startup_stm32h750xx.s\n   Uses\n      At line 109 in file startup_stm32h750xx.s\n      At line 326 in file startup_stm32h750xx.s\n\nI2C2_ER_IRQHandler 0000001A\n\n\n\n\nARM Macro Assembler    Page 12 Alphabetic symbol ordering\nRelocatable symbols\n\nSymbol: I2C2_ER_IRQHandler\n   Definitions\n      At line 471 in file startup_stm32h750xx.s\n   Uses\n      At line 112 in file startup_stm32h750xx.s\n      At line 329 in file startup_stm32h750xx.s\n\nI2C2_EV_IRQHandler 0000001A\n\nSymbol: I2C2_EV_IRQHandler\n   Definitions\n      At line 470 in file startup_stm32h750xx.s\n   Uses\n      At line 111 in file startup_stm32h750xx.s\n      At line 328 in file startup_stm32h750xx.s\n\nI2C3_ER_IRQHandler 0000001A\n\nSymbol: I2C3_ER_IRQHandler\n   Definitions\n      At line 505 in file startup_stm32h750xx.s\n   Uses\n      At line 151 in file startup_stm32h750xx.s\n      At line 363 in file startup_stm32h750xx.s\n\nI2C3_EV_IRQHandler 0000001A\n\nSymbol: I2C3_EV_IRQHandler\n   Definitions\n      At line 504 in file startup_stm32h750xx.s\n   Uses\n      At line 150 in file startup_stm32h750xx.s\n      At line 362 in file startup_stm32h750xx.s\n\nI2C4_ER_IRQHandler 0000001A\n\nSymbol: I2C4_ER_IRQHandler\n   Definitions\n      At line 528 in file startup_stm32h750xx.s\n   Uses\n      At line 174 in file startup_stm32h750xx.s\n      At line 386 in file startup_stm32h750xx.s\n\nI2C4_EV_IRQHandler 0000001A\n\nSymbol: I2C4_EV_IRQHandler\n   Definitions\n      At line 527 in file startup_stm32h750xx.s\n   Uses\n      At line 173 in file startup_stm32h750xx.s\n      At line 385 in file startup_stm32h750xx.s\n\nJPEG_IRQHandler 0000001A\n\nSymbol: JPEG_IRQHandler\n   Definitions\n      At line 553 in file startup_stm32h750xx.s\n   Uses\n      At line 199 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 13 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 411 in file startup_stm32h750xx.s\n\nLPTIM1_IRQHandler 0000001A\n\nSymbol: LPTIM1_IRQHandler\n   Definitions\n      At line 525 in file startup_stm32h750xx.s\n   Uses\n      At line 171 in file startup_stm32h750xx.s\n      At line 383 in file startup_stm32h750xx.s\n\nLPTIM2_IRQHandler 0000001A\n\nSymbol: LPTIM2_IRQHandler\n   Definitions\n      At line 568 in file startup_stm32h750xx.s\n   Uses\n      At line 216 in file startup_stm32h750xx.s\n      At line 426 in file startup_stm32h750xx.s\n\nLPTIM3_IRQHandler 0000001A\n\nSymbol: LPTIM3_IRQHandler\n   Definitions\n      At line 569 in file startup_stm32h750xx.s\n   Uses\n      At line 217 in file startup_stm32h750xx.s\n      At line 427 in file startup_stm32h750xx.s\n\nLPTIM4_IRQHandler 0000001A\n\nSymbol: LPTIM4_IRQHandler\n   Definitions\n      At line 570 in file startup_stm32h750xx.s\n   Uses\n      At line 218 in file startup_stm32h750xx.s\n      At line 428 in file startup_stm32h750xx.s\n\nLPTIM5_IRQHandler 0000001A\n\nSymbol: LPTIM5_IRQHandler\n   Definitions\n      At line 571 in file startup_stm32h750xx.s\n   Uses\n      At line 219 in file startup_stm32h750xx.s\n      At line 429 in file startup_stm32h750xx.s\n\nLPUART1_IRQHandler 0000001A\n\nSymbol: LPUART1_IRQHandler\n   Definitions\n      At line 572 in file startup_stm32h750xx.s\n   Uses\n      At line 220 in file startup_stm32h750xx.s\n      At line 430 in file startup_stm32h750xx.s\n\nLTDC_ER_IRQHandler 0000001A\n\nSymbol: LTDC_ER_IRQHandler\n\n\n\nARM Macro Assembler    Page 14 Alphabetic symbol ordering\nRelocatable symbols\n\n   Definitions\n      At line 521 in file startup_stm32h750xx.s\n   Uses\n      At line 167 in file startup_stm32h750xx.s\n      At line 379 in file startup_stm32h750xx.s\n\nLTDC_IRQHandler 0000001A\n\nSymbol: LTDC_IRQHandler\n   Definitions\n      At line 520 in file startup_stm32h750xx.s\n   Uses\n      At line 166 in file startup_stm32h750xx.s\n      At line 378 in file startup_stm32h750xx.s\n\nMDIOS_IRQHandler 0000001A\n\nSymbol: MDIOS_IRQHandler\n   Definitions\n      At line 552 in file startup_stm32h750xx.s\n   Uses\n      At line 198 in file startup_stm32h750xx.s\n      At line 410 in file startup_stm32h750xx.s\n\nMDIOS_WKUP_IRQHandler 0000001A\n\nSymbol: MDIOS_WKUP_IRQHandler\n   Definitions\n      At line 551 in file startup_stm32h750xx.s\n   Uses\n      At line 197 in file startup_stm32h750xx.s\n      At line 409 in file startup_stm32h750xx.s\n\nMDMA_IRQHandler 0000001A\n\nSymbol: MDMA_IRQHandler\n   Definitions\n      At line 554 in file startup_stm32h750xx.s\n   Uses\n      At line 200 in file startup_stm32h750xx.s\n      At line 412 in file startup_stm32h750xx.s\n\nMemManage_Handler 0000000C\n\nSymbol: MemManage_Handler\n   Definitions\n      At line 260 in file startup_stm32h750xx.s\n   Uses\n      At line 64 in file startup_stm32h750xx.s\n      At line 261 in file startup_stm32h750xx.s\n\nNMI_Handler 00000008\n\nSymbol: NMI_Handler\n   Definitions\n      At line 250 in file startup_stm32h750xx.s\n   Uses\n      At line 62 in file startup_stm32h750xx.s\n      At line 251 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 15 Alphabetic symbol ordering\nRelocatable symbols\n\n\nOTG_FS_EP1_IN_IRQHandler 0000001A\n\nSymbol: OTG_FS_EP1_IN_IRQHandler\n   Definitions\n      At line 531 in file startup_stm32h750xx.s\n   Uses\n      At line 177 in file startup_stm32h750xx.s\n      At line 389 in file startup_stm32h750xx.s\n\nOTG_FS_EP1_OUT_IRQHandler 0000001A\n\nSymbol: OTG_FS_EP1_OUT_IRQHandler\n   Definitions\n      At line 530 in file startup_stm32h750xx.s\n   Uses\n      At line 176 in file startup_stm32h750xx.s\n      At line 388 in file startup_stm32h750xx.s\n\nOTG_FS_IRQHandler 0000001A\n\nSymbol: OTG_FS_IRQHandler\n   Definitions\n      At line 533 in file startup_stm32h750xx.s\n   Uses\n      At line 179 in file startup_stm32h750xx.s\n      At line 391 in file startup_stm32h750xx.s\n\nOTG_FS_WKUP_IRQHandler 0000001A\n\nSymbol: OTG_FS_WKUP_IRQHandler\n   Definitions\n      At line 532 in file startup_stm32h750xx.s\n   Uses\n      At line 178 in file startup_stm32h750xx.s\n      At line 390 in file startup_stm32h750xx.s\n\nOTG_HS_EP1_IN_IRQHandler 0000001A\n\nSymbol: OTG_HS_EP1_IN_IRQHandler\n   Definitions\n      At line 507 in file startup_stm32h750xx.s\n   Uses\n      At line 153 in file startup_stm32h750xx.s\n      At line 365 in file startup_stm32h750xx.s\n\nOTG_HS_EP1_OUT_IRQHandler 0000001A\n\nSymbol: OTG_HS_EP1_OUT_IRQHandler\n   Definitions\n      At line 506 in file startup_stm32h750xx.s\n   Uses\n      At line 152 in file startup_stm32h750xx.s\n      At line 364 in file startup_stm32h750xx.s\n\nOTG_HS_IRQHandler 0000001A\n\nSymbol: OTG_HS_IRQHandler\n   Definitions\n\n\n\nARM Macro Assembler    Page 16 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 509 in file startup_stm32h750xx.s\n   Uses\n      At line 155 in file startup_stm32h750xx.s\n      At line 367 in file startup_stm32h750xx.s\n\nOTG_HS_WKUP_IRQHandler 0000001A\n\nSymbol: OTG_HS_WKUP_IRQHandler\n   Definitions\n      At line 508 in file startup_stm32h750xx.s\n   Uses\n      At line 154 in file startup_stm32h750xx.s\n      At line 366 in file startup_stm32h750xx.s\n\nPVD_AVD_IRQHandler 0000001A\n\nSymbol: PVD_AVD_IRQHandler\n   Definitions\n      At line 438 in file startup_stm32h750xx.s\n   Uses\n      At line 79 in file startup_stm32h750xx.s\n      At line 295 in file startup_stm32h750xx.s\n\nPendSV_Handler 00000016\n\nSymbol: PendSV_Handler\n   Definitions\n      At line 283 in file startup_stm32h750xx.s\n   Uses\n      At line 74 in file startup_stm32h750xx.s\n      At line 284 in file startup_stm32h750xx.s\n\nQUADSPI_IRQHandler 0000001A\n\nSymbol: QUADSPI_IRQHandler\n   Definitions\n      At line 524 in file startup_stm32h750xx.s\n   Uses\n      At line 170 in file startup_stm32h750xx.s\n      At line 382 in file startup_stm32h750xx.s\n\nRCC_IRQHandler 0000001A\n\nSymbol: RCC_IRQHandler\n   Definitions\n      At line 442 in file startup_stm32h750xx.s\n   Uses\n      At line 83 in file startup_stm32h750xx.s\n      At line 299 in file startup_stm32h750xx.s\n\nRTC_Alarm_IRQHandler 0000001A\n\nSymbol: RTC_Alarm_IRQHandler\n   Definitions\n      At line 478 in file startup_stm32h750xx.s\n   Uses\n      At line 119 in file startup_stm32h750xx.s\n      At line 336 in file startup_stm32h750xx.s\n\n\n\n\nARM Macro Assembler    Page 17 Alphabetic symbol ordering\nRelocatable symbols\n\nRTC_WKUP_IRQHandler 0000001A\n\nSymbol: RTC_WKUP_IRQHandler\n   Definitions\n      At line 440 in file startup_stm32h750xx.s\n   Uses\n      At line 81 in file startup_stm32h750xx.s\n      At line 297 in file startup_stm32h750xx.s\n\nReset_Handler 00000000\n\nSymbol: Reset_Handler\n   Definitions\n      At line 237 in file startup_stm32h750xx.s\n   Uses\n      At line 61 in file startup_stm32h750xx.s\n      At line 238 in file startup_stm32h750xx.s\n\nSAI1_IRQHandler 0000001A\n\nSymbol: SAI1_IRQHandler\n   Definitions\n      At line 519 in file startup_stm32h750xx.s\n   Uses\n      At line 165 in file startup_stm32h750xx.s\n      At line 377 in file startup_stm32h750xx.s\n\nSAI2_IRQHandler 0000001A\n\nSymbol: SAI2_IRQHandler\n   Definitions\n      At line 523 in file startup_stm32h750xx.s\n   Uses\n      At line 169 in file startup_stm32h750xx.s\n      At line 381 in file startup_stm32h750xx.s\n\nSAI3_IRQHandler 0000001A\n\nSymbol: SAI3_IRQHandler\n   Definitions\n      At line 546 in file startup_stm32h750xx.s\n   Uses\n      At line 192 in file startup_stm32h750xx.s\n      At line 404 in file startup_stm32h750xx.s\n\nSAI4_IRQHandler 0000001A\n\nSymbol: SAI4_IRQHandler\n   Definitions\n      At line 575 in file startup_stm32h750xx.s\n   Uses\n      At line 224 in file startup_stm32h750xx.s\n      At line 433 in file startup_stm32h750xx.s\n\nSDMMC1_IRQHandler 0000001A\n\nSymbol: SDMMC1_IRQHandler\n   Definitions\n      At line 485 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 18 Alphabetic symbol ordering\nRelocatable symbols\n\n   Uses\n      At line 127 in file startup_stm32h750xx.s\n      At line 343 in file startup_stm32h750xx.s\n\nSDMMC2_IRQHandler 0000001A\n\nSymbol: SDMMC2_IRQHandler\n   Definitions\n      At line 555 in file startup_stm32h750xx.s\n   Uses\n      At line 202 in file startup_stm32h750xx.s\n      At line 413 in file startup_stm32h750xx.s\n\nSPDIF_RX_IRQHandler 0000001A\n\nSymbol: SPDIF_RX_IRQHandler\n   Definitions\n      At line 529 in file startup_stm32h750xx.s\n   Uses\n      At line 175 in file startup_stm32h750xx.s\n      At line 387 in file startup_stm32h750xx.s\n\nSPI1_IRQHandler 0000001A\n\nSymbol: SPI1_IRQHandler\n   Definitions\n      At line 472 in file startup_stm32h750xx.s\n   Uses\n      At line 113 in file startup_stm32h750xx.s\n      At line 330 in file startup_stm32h750xx.s\n\nSPI2_IRQHandler 0000001A\n\nSymbol: SPI2_IRQHandler\n   Definitions\n      At line 473 in file startup_stm32h750xx.s\n   Uses\n      At line 114 in file startup_stm32h750xx.s\n      At line 331 in file startup_stm32h750xx.s\n\nSPI3_IRQHandler 0000001A\n\nSymbol: SPI3_IRQHandler\n   Definitions\n      At line 487 in file startup_stm32h750xx.s\n   Uses\n      At line 129 in file startup_stm32h750xx.s\n      At line 345 in file startup_stm32h750xx.s\n\nSPI4_IRQHandler 0000001A\n\nSymbol: SPI4_IRQHandler\n   Definitions\n      At line 516 in file startup_stm32h750xx.s\n   Uses\n      At line 162 in file startup_stm32h750xx.s\n      At line 374 in file startup_stm32h750xx.s\n\nSPI5_IRQHandler 0000001A\n\n\n\nARM Macro Assembler    Page 19 Alphabetic symbol ordering\nRelocatable symbols\n\n\nSymbol: SPI5_IRQHandler\n   Definitions\n      At line 517 in file startup_stm32h750xx.s\n   Uses\n      At line 163 in file startup_stm32h750xx.s\n      At line 375 in file startup_stm32h750xx.s\n\nSPI6_IRQHandler 0000001A\n\nSymbol: SPI6_IRQHandler\n   Definitions\n      At line 518 in file startup_stm32h750xx.s\n   Uses\n      At line 164 in file startup_stm32h750xx.s\n      At line 376 in file startup_stm32h750xx.s\n\nSVC_Handler 00000012\n\nSymbol: SVC_Handler\n   Definitions\n      At line 274 in file startup_stm32h750xx.s\n   Uses\n      At line 71 in file startup_stm32h750xx.s\n      At line 275 in file startup_stm32h750xx.s\n\nSWPMI1_IRQHandler 0000001A\n\nSymbol: SWPMI1_IRQHandler\n   Definitions\n      At line 547 in file startup_stm32h750xx.s\n   Uses\n      At line 193 in file startup_stm32h750xx.s\n      At line 405 in file startup_stm32h750xx.s\n\nSysTick_Handler 00000018\n\nSymbol: SysTick_Handler\n   Definitions\n      At line 287 in file startup_stm32h750xx.s\n   Uses\n      At line 75 in file startup_stm32h750xx.s\n      At line 288 in file startup_stm32h750xx.s\n\nTAMP_STAMP_IRQHandler 0000001A\n\nSymbol: TAMP_STAMP_IRQHandler\n   Definitions\n      At line 439 in file startup_stm32h750xx.s\n   Uses\n      At line 80 in file startup_stm32h750xx.s\n      At line 296 in file startup_stm32h750xx.s\n\nTIM15_IRQHandler 0000001A\n\nSymbol: TIM15_IRQHandler\n   Definitions\n      At line 548 in file startup_stm32h750xx.s\n   Uses\n\n\n\nARM Macro Assembler    Page 20 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 194 in file startup_stm32h750xx.s\n      At line 406 in file startup_stm32h750xx.s\n\nTIM16_IRQHandler 0000001A\n\nSymbol: TIM16_IRQHandler\n   Definitions\n      At line 549 in file startup_stm32h750xx.s\n   Uses\n      At line 195 in file startup_stm32h750xx.s\n      At line 407 in file startup_stm32h750xx.s\n\nTIM17_IRQHandler 0000001A\n\nSymbol: TIM17_IRQHandler\n   Definitions\n      At line 550 in file startup_stm32h750xx.s\n   Uses\n      At line 196 in file startup_stm32h750xx.s\n      At line 408 in file startup_stm32h750xx.s\n\nTIM1_BRK_IRQHandler 0000001A\n\nSymbol: TIM1_BRK_IRQHandler\n   Definitions\n      At line 461 in file startup_stm32h750xx.s\n   Uses\n      At line 102 in file startup_stm32h750xx.s\n      At line 319 in file startup_stm32h750xx.s\n\nTIM1_CC_IRQHandler 0000001A\n\nSymbol: TIM1_CC_IRQHandler\n   Definitions\n      At line 464 in file startup_stm32h750xx.s\n   Uses\n      At line 105 in file startup_stm32h750xx.s\n      At line 322 in file startup_stm32h750xx.s\n\nTIM1_TRG_COM_IRQHandler 0000001A\n\nSymbol: TIM1_TRG_COM_IRQHandler\n   Definitions\n      At line 463 in file startup_stm32h750xx.s\n   Uses\n      At line 104 in file startup_stm32h750xx.s\n      At line 321 in file startup_stm32h750xx.s\n\nTIM1_UP_IRQHandler 0000001A\n\nSymbol: TIM1_UP_IRQHandler\n   Definitions\n      At line 462 in file startup_stm32h750xx.s\n   Uses\n      At line 103 in file startup_stm32h750xx.s\n      At line 320 in file startup_stm32h750xx.s\n\nTIM2_IRQHandler 0000001A\n\n\n\n\nARM Macro Assembler    Page 21 Alphabetic symbol ordering\nRelocatable symbols\n\nSymbol: TIM2_IRQHandler\n   Definitions\n      At line 465 in file startup_stm32h750xx.s\n   Uses\n      At line 106 in file startup_stm32h750xx.s\n      At line 323 in file startup_stm32h750xx.s\n\nTIM3_IRQHandler 0000001A\n\nSymbol: TIM3_IRQHandler\n   Definitions\n      At line 466 in file startup_stm32h750xx.s\n   Uses\n      At line 107 in file startup_stm32h750xx.s\n      At line 324 in file startup_stm32h750xx.s\n\nTIM4_IRQHandler 0000001A\n\nSymbol: TIM4_IRQHandler\n   Definitions\n      At line 467 in file startup_stm32h750xx.s\n   Uses\n      At line 108 in file startup_stm32h750xx.s\n      At line 325 in file startup_stm32h750xx.s\n\nTIM5_IRQHandler 0000001A\n\nSymbol: TIM5_IRQHandler\n   Definitions\n      At line 486 in file startup_stm32h750xx.s\n   Uses\n      At line 128 in file startup_stm32h750xx.s\n      At line 344 in file startup_stm32h750xx.s\n\nTIM6_DAC_IRQHandler 0000001A\n\nSymbol: TIM6_DAC_IRQHandler\n   Definitions\n      At line 490 in file startup_stm32h750xx.s\n   Uses\n      At line 132 in file startup_stm32h750xx.s\n      At line 348 in file startup_stm32h750xx.s\n\nTIM7_IRQHandler 0000001A\n\nSymbol: TIM7_IRQHandler\n   Definitions\n      At line 491 in file startup_stm32h750xx.s\n   Uses\n      At line 133 in file startup_stm32h750xx.s\n      At line 349 in file startup_stm32h750xx.s\n\nTIM8_BRK_TIM12_IRQHandler 0000001A\n\nSymbol: TIM8_BRK_TIM12_IRQHandler\n   Definitions\n      At line 479 in file startup_stm32h750xx.s\n   Uses\n      At line 121 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 22 Alphabetic symbol ordering\nRelocatable symbols\n\n      At line 337 in file startup_stm32h750xx.s\n\nTIM8_CC_IRQHandler 0000001A\n\nSymbol: TIM8_CC_IRQHandler\n   Definitions\n      At line 482 in file startup_stm32h750xx.s\n   Uses\n      At line 124 in file startup_stm32h750xx.s\n      At line 340 in file startup_stm32h750xx.s\n\nTIM8_TRG_COM_TIM14_IRQHandler 0000001A\n\nSymbol: TIM8_TRG_COM_TIM14_IRQHandler\n   Definitions\n      At line 481 in file startup_stm32h750xx.s\n   Uses\n      At line 123 in file startup_stm32h750xx.s\n      At line 339 in file startup_stm32h750xx.s\n\nTIM8_UP_TIM13_IRQHandler 0000001A\n\nSymbol: TIM8_UP_TIM13_IRQHandler\n   Definitions\n      At line 480 in file startup_stm32h750xx.s\n   Uses\n      At line 122 in file startup_stm32h750xx.s\n      At line 338 in file startup_stm32h750xx.s\n\nUART4_IRQHandler 0000001A\n\nSymbol: UART4_IRQHandler\n   Definitions\n      At line 488 in file startup_stm32h750xx.s\n   Uses\n      At line 130 in file startup_stm32h750xx.s\n      At line 346 in file startup_stm32h750xx.s\n\nUART5_IRQHandler 0000001A\n\nSymbol: UART5_IRQHandler\n   Definitions\n      At line 489 in file startup_stm32h750xx.s\n   Uses\n      At line 131 in file startup_stm32h750xx.s\n      At line 347 in file startup_stm32h750xx.s\n\nUART7_IRQHandler 0000001A\n\nSymbol: UART7_IRQHandler\n   Definitions\n      At line 514 in file startup_stm32h750xx.s\n   Uses\n      At line 160 in file startup_stm32h750xx.s\n      At line 372 in file startup_stm32h750xx.s\n\nUART8_IRQHandler 0000001A\n\nSymbol: UART8_IRQHandler\n\n\n\nARM Macro Assembler    Page 23 Alphabetic symbol ordering\nRelocatable symbols\n\n   Definitions\n      At line 515 in file startup_stm32h750xx.s\n   Uses\n      At line 161 in file startup_stm32h750xx.s\n      At line 373 in file startup_stm32h750xx.s\n\nUSART1_IRQHandler 0000001A\n\nSymbol: USART1_IRQHandler\n   Definitions\n      At line 474 in file startup_stm32h750xx.s\n   Uses\n      At line 115 in file startup_stm32h750xx.s\n      At line 332 in file startup_stm32h750xx.s\n\nUSART2_IRQHandler 0000001A\n\nSymbol: USART2_IRQHandler\n   Definitions\n      At line 475 in file startup_stm32h750xx.s\n   Uses\n      At line 116 in file startup_stm32h750xx.s\n      At line 333 in file startup_stm32h750xx.s\n\nUSART3_IRQHandler 0000001A\n\nSymbol: USART3_IRQHandler\n   Definitions\n      At line 476 in file startup_stm32h750xx.s\n   Uses\n      At line 117 in file startup_stm32h750xx.s\n      At line 334 in file startup_stm32h750xx.s\n\nUSART6_IRQHandler 0000001A\n\nSymbol: USART6_IRQHandler\n   Definitions\n      At line 503 in file startup_stm32h750xx.s\n   Uses\n      At line 149 in file startup_stm32h750xx.s\n      At line 361 in file startup_stm32h750xx.s\n\nUsageFault_Handler 00000010\n\nSymbol: UsageFault_Handler\n   Definitions\n      At line 270 in file startup_stm32h750xx.s\n   Uses\n      At line 66 in file startup_stm32h750xx.s\n      At line 271 in file startup_stm32h750xx.s\n\nWAKEUP_PIN_IRQHandler 0000001A\n\nSymbol: WAKEUP_PIN_IRQHandler\n   Definitions\n      At line 576 in file startup_stm32h750xx.s\n   Uses\n      At line 227 in file startup_stm32h750xx.s\n      At line 434 in file startup_stm32h750xx.s\n\n\n\nARM Macro Assembler    Page 24 Alphabetic symbol ordering\nRelocatable symbols\n\n\nWWDG_IRQHandler 0000001A\n\nSymbol: WWDG_IRQHandler\n   Definitions\n      At line 437 in file startup_stm32h750xx.s\n   Uses\n      At line 78 in file startup_stm32h750xx.s\n      At line 294 in file startup_stm32h750xx.s\n\n__user_initial_stackheap 0000001C\n\nSymbol: __user_initial_stackheap\n   Definitions\n      At line 598 in file startup_stm32h750xx.s\n   Uses\n      At line 596 in file startup_stm32h750xx.s\nComment: __user_initial_stackheap used once\n153 symbols\n\n\n\nARM Macro Assembler    Page 1 Alphabetic symbol ordering\nAbsolute symbols\n\nHeap_Size 00000200\n\nSymbol: Heap_Size\n   Definitions\n      At line 43 in file startup_stm32h750xx.s\n   Uses\n      At line 47 in file startup_stm32h750xx.s\n      At line 602 in file startup_stm32h750xx.s\n\nStack_Size 00000400\n\nSymbol: Stack_Size\n   Definitions\n      At line 32 in file startup_stm32h750xx.s\n   Uses\n      At line 35 in file startup_stm32h750xx.s\n      At line 601 in file startup_stm32h750xx.s\n\n__Vectors_Size 00000298\n\nSymbol: __Vectors_Size\n   Definitions\n      At line 232 in file startup_stm32h750xx.s\n   Uses\n      At line 58 in file startup_stm32h750xx.s\nComment: __Vectors_Size used once\n3 symbols\n\n\n\nARM Macro Assembler    Page 1 Alphabetic symbol ordering\nExternal symbols\n\nSystemInit 00000000\n\nSymbol: SystemInit\n   Definitions\n      At line 239 in file startup_stm32h750xx.s\n   Uses\n      At line 242 in file startup_stm32h750xx.s\nComment: SystemInit used once\n__main 00000000\n\nSymbol: __main\n   Definitions\n      At line 240 in file startup_stm32h750xx.s\n   Uses\n      At line 244 in file startup_stm32h750xx.s\nComment: __main used once\n__use_two_region_memory 00000000\n\nSymbol: __use_two_region_memory\n   Definitions\n      At line 595 in file startup_stm32h750xx.s\n   Uses\n      None\nComment: __use_two_region_memory unused\n3 symbols\n507 symbols in table\n"
  },
  {
    "path": "SourceCode/MDK-ARM/startup_stm32h750xx.s",
    "content": ";********************************************************************************\n;* File Name          : startup_stm32h750xx.s\n;* @author  MCD Application Team\n;* Description        : STM32H7xx devices vector table for MDK-ARM toolchain. \n;*                      This module performs:\n;*                      - Set the initial SP\n;*                      - Set the initial PC == Reset_Handler\n;*                      - Set the vector table entries with the exceptions ISR address\n;*                      - Branches to __main in the C library (which eventually\n;*                        calls main()).\n;*                      After Reset the Cortex-M processor is in Thread mode,\n;*                      priority is Privileged, and the Stack is set to Main.\n;* <<< Use Configuration Wizard in Context Menu >>>   \n;******************************************************************************\n;* @attention\n;*\n;* Copyright (c) 2018 STMicroelectronics.\n;* All rights reserved.\n;*\n;* This software is licensed under terms that can be found in the LICENSE file\n;* in the root directory of this software component.\n;* If no LICENSE file comes with this software, it is provided AS-IS.\n;*\n;*******************************************************************************\n\n; Amount of memory (in bytes) allocated for Stack\n; Tailor this value to your application needs\n; <h> Stack Configuration\n;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nStack_Size\t\tEQU     0x400\n\n                AREA    STACK, NOINIT, READWRITE, ALIGN=3\nStack_Mem       SPACE   Stack_Size\n__initial_sp\n\n\n; <h> Heap Configuration\n;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\n; </h>\n\nHeap_Size      EQU     0x200\n\n                AREA    HEAP, NOINIT, READWRITE, ALIGN=3\n__heap_base\nHeap_Mem        SPACE   Heap_Size\n__heap_limit\n\n                PRESERVE8\n                THUMB\n\n\n; Vector Table Mapped to Address 0 at Reset\n                AREA    RESET, DATA, READONLY\n                EXPORT  __Vectors\n                EXPORT  __Vectors_End\n                EXPORT  __Vectors_Size\n\n__Vectors       DCD     __initial_sp                      ; Top of Stack\n                DCD     Reset_Handler                     ; Reset Handler\n                DCD     NMI_Handler                       ; NMI Handler\n                DCD     HardFault_Handler                 ; Hard Fault Handler\n                DCD     MemManage_Handler                 ; MPU Fault Handler\n                DCD     BusFault_Handler                  ; Bus Fault Handler\n                DCD     UsageFault_Handler                ; Usage Fault Handler\n                DCD     0                                 ; Reserved\n                DCD     0                                 ; Reserved\n                DCD     0                                 ; Reserved\n                DCD     0                                 ; Reserved\n                DCD     SVC_Handler                       ; SVCall Handler\n                DCD     DebugMon_Handler                  ; Debug Monitor Handler\n                DCD     0                                 ; Reserved\n                DCD     PendSV_Handler                    ; PendSV Handler\n                DCD     SysTick_Handler                   ; SysTick Handler\n\n                ; External Interrupts\n                DCD     WWDG_IRQHandler                   ; Window WatchDog interrupt ( wwdg1_it)                                         \n                DCD     PVD_AVD_IRQHandler                ; PVD/AVD through EXTI Line detection                        \n                DCD     TAMP_STAMP_IRQHandler             ; Tamper and TimeStamps through the EXTI line            \n                DCD     RTC_WKUP_IRQHandler               ; RTC Wakeup through the EXTI line                       \n                DCD     FLASH_IRQHandler                  ; FLASH                                           \n                DCD     RCC_IRQHandler                    ; RCC                                             \n                DCD     EXTI0_IRQHandler                  ; EXTI Line0                                             \n                DCD     EXTI1_IRQHandler                  ; EXTI Line1                                             \n                DCD     EXTI2_IRQHandler                  ; EXTI Line2                                             \n                DCD     EXTI3_IRQHandler                  ; EXTI Line3                                             \n                DCD     EXTI4_IRQHandler                  ; EXTI Line4 \n                DCD     DMA1_Stream0_IRQHandler           ; DMA1 Stream 0\n                DCD     DMA1_Stream1_IRQHandler           ; DMA1 Stream 1                                   \n                DCD     DMA1_Stream2_IRQHandler           ; DMA1 Stream 2                                   \n                DCD     DMA1_Stream3_IRQHandler           ; DMA1 Stream 3                                   \n                DCD     DMA1_Stream4_IRQHandler           ; DMA1 Stream 4                                   \n                DCD     DMA1_Stream5_IRQHandler           ; DMA1 Stream 5                                   \n                DCD     DMA1_Stream6_IRQHandler           ; DMA1 Stream 6  \n                DCD     ADC_IRQHandler                    ; ADC1, ADC2                             \n                DCD     FDCAN1_IT0_IRQHandler             ; FDCAN1 interrupt line 0                        \n                DCD     FDCAN2_IT0_IRQHandler             ; FDCAN2 interrupt line 0                               \n                DCD     FDCAN1_IT1_IRQHandler             ; FDCAN1 interrupt line 1                        \n                DCD     FDCAN2_IT1_IRQHandler             ; FDCAN2 interrupt line 1                                               \n                DCD     EXTI9_5_IRQHandler                ; External Line[9:5]s                                    \n                DCD     TIM1_BRK_IRQHandler               ; TIM1 Break interrupt                   \n                DCD     TIM1_UP_IRQHandler                ; TIM1 Update Interrupt                 \n                DCD     TIM1_TRG_COM_IRQHandler           ; TIM1 Trigger and Commutation Interrupt \n                DCD     TIM1_CC_IRQHandler                ; TIM1 Capture Compare                                   \n                DCD     TIM2_IRQHandler                   ; TIM2                                            \n                DCD     TIM3_IRQHandler                   ; TIM3                                            \n                DCD     TIM4_IRQHandler                   ; TIM4                                            \n                DCD     I2C1_EV_IRQHandler                ; I2C1 Event                                             \n                DCD     I2C1_ER_IRQHandler                ; I2C1 Error                                             \n                DCD     I2C2_EV_IRQHandler                ; I2C2 Event                                             \n                DCD     I2C2_ER_IRQHandler                ; I2C2 Error                                               \n                DCD     SPI1_IRQHandler                   ; SPI1                                            \n                DCD     SPI2_IRQHandler                   ; SPI2                                            \n                DCD     USART1_IRQHandler                 ; USART1                                          \n                DCD     USART2_IRQHandler                 ; USART2                                          \n                DCD     USART3_IRQHandler                 ; USART3                                          \n                DCD     EXTI15_10_IRQHandler              ; External Line[15:10]  \n                DCD     RTC_Alarm_IRQHandler              ; RTC Alarm (A and B) through EXTI Line\n                DCD     0                                 ; Reserved                                          \n                DCD     TIM8_BRK_TIM12_IRQHandler         ; TIM8 Break Interrupt and TIM12 global interrupt                 \n                DCD     TIM8_UP_TIM13_IRQHandler          ; TIM8 Update Interrupt and TIM13 global interrupt\n                DCD     TIM8_TRG_COM_TIM14_IRQHandler     ; TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt\n                DCD     TIM8_CC_IRQHandler                ; TIM8 Capture Compare Interrupt\n                DCD     DMA1_Stream7_IRQHandler           ; DMA1 Stream7                                           \n                DCD     FMC_IRQHandler                    ; FMC                             \n                DCD     SDMMC1_IRQHandler                 ; SDMMC1                            \n                DCD     TIM5_IRQHandler                   ; TIM5                            \n                DCD     SPI3_IRQHandler                   ; SPI3                            \n                DCD     UART4_IRQHandler                  ; UART4                           \n                DCD     UART5_IRQHandler                  ; UART5                           \n                DCD     TIM6_DAC_IRQHandler               ; TIM6 and DAC1&2 underrun errors           \n                DCD     TIM7_IRQHandler                   ; TIM7           \n                DCD     DMA2_Stream0_IRQHandler           ; DMA2 Stream 0                   \n                DCD     DMA2_Stream1_IRQHandler           ; DMA2 Stream 1                   \n                DCD     DMA2_Stream2_IRQHandler           ; DMA2 Stream 2                   \n                DCD     DMA2_Stream3_IRQHandler           ; DMA2 Stream 3                   \n                DCD     DMA2_Stream4_IRQHandler           ; DMA2 Stream 4                   \n                DCD     ETH_IRQHandler                    ; Ethernet                        \n                DCD     ETH_WKUP_IRQHandler               ; Ethernet Wakeup through EXTI line              \n                DCD     FDCAN_CAL_IRQHandler              ; FDCAN calibration unit interrupt                        \n                DCD     0                                 ; Reserved                              \n                DCD     0                                 ; Reserved \n                DCD     0                                 ; Reserved \n                DCD     0                                 ; Reserved                      \n                DCD     DMA2_Stream5_IRQHandler           ; DMA2 Stream 5                   \n                DCD     DMA2_Stream6_IRQHandler           ; DMA2 Stream 6                   \n                DCD     DMA2_Stream7_IRQHandler           ; DMA2 Stream 7                   \n                DCD     USART6_IRQHandler                 ; USART6                           \n                DCD     I2C3_EV_IRQHandler                ; I2C3 event                             \n                DCD     I2C3_ER_IRQHandler                ; I2C3 error                             \n                DCD     OTG_HS_EP1_OUT_IRQHandler         ; USB OTG HS End Point 1 Out                      \n                DCD     OTG_HS_EP1_IN_IRQHandler          ; USB OTG HS End Point 1 In                       \n                DCD     OTG_HS_WKUP_IRQHandler            ; USB OTG HS Wakeup through EXTI                         \n                DCD     OTG_HS_IRQHandler                 ; USB OTG HS                    \n                DCD     DCMI_IRQHandler                   ; DCMI                            \n                DCD     CRYP_IRQHandler                   ; CRYP crypto                     \n                DCD     HASH_RNG_IRQHandler               ; Hash and Rng\n                DCD     FPU_IRQHandler                    ; FPU\n                DCD     UART7_IRQHandler                  ; UART7\n                DCD     UART8_IRQHandler                  ; UART8\n                DCD     SPI4_IRQHandler                   ; SPI4\n                DCD     SPI5_IRQHandler                   ; SPI5\n                DCD     SPI6_IRQHandler                   ; SPI6\n                DCD     SAI1_IRQHandler                   ; SAI1\n                DCD     LTDC_IRQHandler                   ; LTDC\n                DCD     LTDC_ER_IRQHandler                ; LTDC error\n                DCD     DMA2D_IRQHandler                  ; DMA2D\n                DCD     SAI2_IRQHandler                   ; SAI2\n                DCD     QUADSPI_IRQHandler                ; QUADSPI\n                DCD     LPTIM1_IRQHandler                 ; LPTIM1\n                DCD     CEC_IRQHandler                    ; HDMI_CEC\n                DCD     I2C4_EV_IRQHandler                ; I2C4 Event                             \n                DCD     I2C4_ER_IRQHandler                ; I2C4 Error \n                DCD     SPDIF_RX_IRQHandler               ; SPDIF_RX\n                DCD     OTG_FS_EP1_OUT_IRQHandler         ; USB OTG FS End Point 1 Out                      \n                DCD     OTG_FS_EP1_IN_IRQHandler          ; USB OTG FS End Point 1 In                       \n                DCD     OTG_FS_WKUP_IRQHandler            ; USB OTG FS Wakeup through EXTI                         \n                DCD     OTG_FS_IRQHandler                 ; USB OTG FS                 \n                DCD     DMAMUX1_OVR_IRQHandler            ; DMAMUX1 Overrun interrupt  \n                DCD     HRTIM1_Master_IRQHandler          ; HRTIM Master Timer global Interrupts                              \n                DCD     HRTIM1_TIMA_IRQHandler            ; HRTIM Timer A global Interrupt                                    \n                DCD     HRTIM1_TIMB_IRQHandler            ; HRTIM Timer B global Interrupt                                    \n                DCD     HRTIM1_TIMC_IRQHandler            ; HRTIM Timer C global Interrupt                                    \n                DCD     HRTIM1_TIMD_IRQHandler            ; HRTIM Timer D global Interrupt                                    \n                DCD     HRTIM1_TIME_IRQHandler            ; HRTIM Timer E global Interrupt                                    \n                DCD     HRTIM1_FLT_IRQHandler             ; HRTIM Fault global Interrupt \n                DCD     DFSDM1_FLT0_IRQHandler            ; DFSDM Filter0 Interrupt   \n                DCD     DFSDM1_FLT1_IRQHandler            ; DFSDM Filter1 Interrupt                                            \n                DCD     DFSDM1_FLT2_IRQHandler            ; DFSDM Filter2 Interrupt                                            \n                DCD     DFSDM1_FLT3_IRQHandler            ; DFSDM Filter3 Interrupt                                                                                    \n                DCD     SAI3_IRQHandler                   ; SAI3 global Interrupt                                             \n                DCD     SWPMI1_IRQHandler                 ; Serial Wire Interface 1 global interrupt                          \n                DCD     TIM15_IRQHandler                  ; TIM15 global Interrupt                                            \n                DCD     TIM16_IRQHandler                  ; TIM16 global Interrupt                                            \n                DCD     TIM17_IRQHandler                  ; TIM17 global Interrupt                                            \n                DCD     MDIOS_WKUP_IRQHandler             ; MDIOS Wakeup  Interrupt                                           \n                DCD     MDIOS_IRQHandler                  ; MDIOS global Interrupt                                            \n                DCD     JPEG_IRQHandler                   ; JPEG global Interrupt                                             \n                DCD     MDMA_IRQHandler                   ; MDMA global Interrupt                                             \n                DCD     0                                 ; Reserved                                               \n                DCD     SDMMC2_IRQHandler                 ; SDMMC2 global Interrupt                                           \n                DCD     HSEM1_IRQHandler                  ; HSEM1 global Interrupt                                             \n                DCD     0                                 ; Reserved                                              \n                DCD     ADC3_IRQHandler                   ; ADC3 global Interrupt                                              \n                DCD     DMAMUX2_OVR_IRQHandler            ; DMAMUX Overrun interrupt                                           \n                DCD     BDMA_Channel0_IRQHandler          ; BDMA Channel 0 global Interrupt                                    \n                DCD     BDMA_Channel1_IRQHandler          ; BDMA Channel 1 global Interrupt                                    \n                DCD     BDMA_Channel2_IRQHandler          ; BDMA Channel 2 global Interrupt                                    \n                DCD     BDMA_Channel3_IRQHandler          ; BDMA Channel 3 global Interrupt                                    \n                DCD     BDMA_Channel4_IRQHandler          ; BDMA Channel 4 global Interrupt                                    \n                DCD     BDMA_Channel5_IRQHandler          ; BDMA Channel 5 global Interrupt                                    \n                DCD     BDMA_Channel6_IRQHandler          ; BDMA Channel 6 global Interrupt                                    \n                DCD     BDMA_Channel7_IRQHandler          ; BDMA Channel 7 global Interrupt                                    \n                DCD     COMP1_IRQHandler                  ; COMP1 global Interrupt                                            \n                DCD     LPTIM2_IRQHandler                 ; LP TIM2 global interrupt                                          \n                DCD     LPTIM3_IRQHandler                 ; LP TIM3 global interrupt                                          \n                DCD     LPTIM4_IRQHandler                 ; LP TIM4 global interrupt                                          \n                DCD     LPTIM5_IRQHandler                 ; LP TIM5 global interrupt                                          \n                DCD     LPUART1_IRQHandler                ; LP UART1 interrupt                                                \n                DCD     0                                 ; Reserved                                                                              \n                DCD     CRS_IRQHandler                    ; Clock Recovery Global Interrupt                                   \n                DCD     ECC_IRQHandler                    ; ECC diagnostic Global Interrupt                                              \n                DCD     SAI4_IRQHandler                   ; SAI4 global interrupt                                                \n                DCD     0                                 ; Reserved                                 \n                DCD     0                                 ; Reserved                                    \n                DCD     WAKEUP_PIN_IRQHandler             ; Interrupt for all 6 wake-up pins \n                \n\n__Vectors_End\n\n__Vectors_Size  EQU  __Vectors_End - __Vectors\n\n                AREA    |.text|, CODE, READONLY\n\n; Reset handler\nReset_Handler    PROC\n                 EXPORT  Reset_Handler                    [WEAK]\n        IMPORT  SystemInit\n        IMPORT  __main\n\n                 LDR     R0, =SystemInit\n                 BLX     R0\n                 LDR     R0, =__main\n                 BX      R0\n                 ENDP\n\n; Dummy Exception Handlers (infinite loops which can be modified)\n\nNMI_Handler     PROC\n                EXPORT  NMI_Handler                      [WEAK]\n                B       .\n                ENDP\nHardFault_Handler\\\n                PROC\n                EXPORT  HardFault_Handler                [WEAK]\n                B       .\n                ENDP\nMemManage_Handler\\\n                PROC\n                EXPORT  MemManage_Handler                [WEAK]\n                B       .\n                ENDP\nBusFault_Handler\\\n                PROC\n                EXPORT  BusFault_Handler                 [WEAK]\n                B       .\n                ENDP\nUsageFault_Handler\\\n                PROC\n                EXPORT  UsageFault_Handler               [WEAK]\n                B       .\n                ENDP\nSVC_Handler     PROC\n                EXPORT  SVC_Handler                      [WEAK]\n                B       .\n                ENDP\nDebugMon_Handler\\\n                PROC\n                EXPORT  DebugMon_Handler                  [WEAK]\n                B       .\n                ENDP\nPendSV_Handler  PROC\n                EXPORT  PendSV_Handler                    [WEAK]\n                B       .\n                ENDP\nSysTick_Handler PROC\n                EXPORT  SysTick_Handler                   [WEAK]\n                B       .\n                ENDP                                     \n                                                          \nDefault_Handler PROC                                      \n\n                EXPORT  WWDG_IRQHandler                   [WEAK]                                       \n                EXPORT  PVD_AVD_IRQHandler                [WEAK]                         \n                EXPORT  TAMP_STAMP_IRQHandler             [WEAK]   \n                EXPORT  RTC_WKUP_IRQHandler               [WEAK]             \n                EXPORT  FLASH_IRQHandler                  [WEAK]                                        \n                EXPORT  RCC_IRQHandler                    [WEAK]                                          \n                EXPORT  EXTI0_IRQHandler                  [WEAK]                                            \n                EXPORT  EXTI1_IRQHandler                  [WEAK]                                           \n                EXPORT  EXTI2_IRQHandler                  [WEAK]                                            \n                EXPORT  EXTI3_IRQHandler                  [WEAK]                                            \n                EXPORT  EXTI4_IRQHandler                  [WEAK]\n                EXPORT  DMA1_Stream0_IRQHandler           [WEAK] \n                EXPORT  DMA1_Stream1_IRQHandler           [WEAK]                        \n                EXPORT  DMA1_Stream2_IRQHandler           [WEAK]                     \n                EXPORT  DMA1_Stream3_IRQHandler           [WEAK]                    \n                EXPORT  DMA1_Stream4_IRQHandler           [WEAK]                        \n                EXPORT  DMA1_Stream5_IRQHandler           [WEAK]                          \n                EXPORT  DMA1_Stream6_IRQHandler           [WEAK]\n                EXPORT  DMA1_Stream7_IRQHandler           [WEAK]\n                EXPORT  ADC_IRQHandler                    [WEAK]                          \n                EXPORT  FDCAN1_IT0_IRQHandler             [WEAK]                                            \n                EXPORT  FDCAN2_IT0_IRQHandler             [WEAK] \n                EXPORT  FDCAN1_IT1_IRQHandler             [WEAK]                                            \n                EXPORT  FDCAN2_IT1_IRQHandler             [WEAK]   \n                EXPORT  EXTI9_5_IRQHandler                [WEAK]                                    \n                EXPORT  TIM1_BRK_IRQHandler               [WEAK]                  \n                EXPORT  TIM1_UP_IRQHandler                [WEAK]                \n                EXPORT  TIM1_TRG_COM_IRQHandler           [WEAK] \n                EXPORT  TIM1_CC_IRQHandler                [WEAK]                                   \n                EXPORT  TIM2_IRQHandler                   [WEAK]                                            \n                EXPORT  TIM3_IRQHandler                   [WEAK]                                            \n                EXPORT  TIM4_IRQHandler                   [WEAK]                                            \n                EXPORT  I2C1_EV_IRQHandler                [WEAK]                                             \n                EXPORT  I2C1_ER_IRQHandler                [WEAK]                                             \n                EXPORT  I2C2_EV_IRQHandler                [WEAK]                                            \n                EXPORT  I2C2_ER_IRQHandler                [WEAK]                                               \n                EXPORT  SPI1_IRQHandler                   [WEAK]                                           \n                EXPORT  SPI2_IRQHandler                   [WEAK]                                            \n                EXPORT  USART1_IRQHandler                 [WEAK]                                          \n                EXPORT  USART2_IRQHandler                 [WEAK]                                          \n                EXPORT  USART3_IRQHandler                 [WEAK]                                         \n                EXPORT  EXTI15_10_IRQHandler              [WEAK]                                  \n                EXPORT  RTC_Alarm_IRQHandler              [WEAK]                                       \n                EXPORT  TIM8_BRK_TIM12_IRQHandler         [WEAK]                 \n                EXPORT  TIM8_UP_TIM13_IRQHandler          [WEAK]                 \n                EXPORT  TIM8_TRG_COM_TIM14_IRQHandler     [WEAK] \n                EXPORT  TIM8_CC_IRQHandler                [WEAK]                                   \n                EXPORT  DMA1_Stream7_IRQHandler           [WEAK]                                          \n                EXPORT  FMC_IRQHandler                    [WEAK]                                             \n                EXPORT  SDMMC1_IRQHandler                 [WEAK]                                             \n                EXPORT  TIM5_IRQHandler                   [WEAK]                                             \n                EXPORT  SPI3_IRQHandler                   [WEAK]                                             \n                EXPORT  UART4_IRQHandler                  [WEAK]                                            \n                EXPORT  UART5_IRQHandler                  [WEAK]                                            \n                EXPORT  TIM6_DAC_IRQHandler               [WEAK]                   \n                EXPORT  TIM7_IRQHandler                   [WEAK]                    \n                EXPORT  DMA2_Stream0_IRQHandler           [WEAK]                                  \n                EXPORT  DMA2_Stream1_IRQHandler           [WEAK]                                   \n                EXPORT  DMA2_Stream2_IRQHandler           [WEAK]                                    \n                EXPORT  DMA2_Stream3_IRQHandler           [WEAK]                                    \n                EXPORT  DMA2_Stream4_IRQHandler           [WEAK]                                 \n                EXPORT  ETH_IRQHandler                    [WEAK]                                         \n                EXPORT  ETH_WKUP_IRQHandler               [WEAK]                     \n                EXPORT  FDCAN_CAL_IRQHandler              [WEAK]                                                                                                                                                                              \n                EXPORT  DMA2_Stream5_IRQHandler           [WEAK]                                   \n                EXPORT  DMA2_Stream6_IRQHandler           [WEAK]                                   \n                EXPORT  DMA2_Stream7_IRQHandler           [WEAK]                                   \n                EXPORT  USART6_IRQHandler                 [WEAK]                                           \n                EXPORT  I2C3_EV_IRQHandler                [WEAK]                                              \n                EXPORT  I2C3_ER_IRQHandler                [WEAK]                                              \n                EXPORT  OTG_HS_EP1_OUT_IRQHandler         [WEAK]                      \n                EXPORT  OTG_HS_EP1_IN_IRQHandler          [WEAK]                      \n                EXPORT  OTG_HS_WKUP_IRQHandler            [WEAK]                        \n                EXPORT  OTG_HS_IRQHandler                 [WEAK]                                      \n                EXPORT  DCMI_IRQHandler                   [WEAK]                                             \n                EXPORT  CRYP_IRQHandler                   [WEAK]                                     \n                EXPORT  HASH_RNG_IRQHandler               [WEAK]\n                EXPORT  FPU_IRQHandler                    [WEAK]\n                EXPORT  UART7_IRQHandler                  [WEAK]\n                EXPORT  UART8_IRQHandler                  [WEAK]\n                EXPORT  SPI4_IRQHandler                   [WEAK]\n                EXPORT  SPI5_IRQHandler                   [WEAK]\n                EXPORT  SPI6_IRQHandler                   [WEAK]\n                EXPORT  SAI1_IRQHandler                   [WEAK]\n                EXPORT  LTDC_IRQHandler                   [WEAK]\n                EXPORT  LTDC_ER_IRQHandler                [WEAK]\n                EXPORT  DMA2D_IRQHandler                  [WEAK]\n                EXPORT  SAI2_IRQHandler                   [WEAK]   \n                EXPORT  QUADSPI_IRQHandler                [WEAK]\n                EXPORT  LPTIM1_IRQHandler                 [WEAK]\n                EXPORT  CEC_IRQHandler                    [WEAK]   \n                EXPORT  I2C4_EV_IRQHandler                [WEAK]\n                EXPORT  I2C4_ER_IRQHandler                [WEAK] \n                EXPORT  SPDIF_RX_IRQHandler               [WEAK]\n                EXPORT  OTG_FS_EP1_OUT_IRQHandler         [WEAK]\n                EXPORT  OTG_FS_EP1_IN_IRQHandler          [WEAK]                      \n                EXPORT  OTG_FS_WKUP_IRQHandler            [WEAK]                      \n                EXPORT  OTG_FS_IRQHandler                 [WEAK]                        \n                EXPORT  DMAMUX1_OVR_IRQHandler            [WEAK]\n                EXPORT  HRTIM1_Master_IRQHandler          [WEAK] \n                EXPORT  HRTIM1_TIMA_IRQHandler            [WEAK]                                      \n                EXPORT  HRTIM1_TIMB_IRQHandler            [WEAK]                                      \n                EXPORT  HRTIM1_TIMC_IRQHandler            [WEAK]                                      \n                EXPORT  HRTIM1_TIMD_IRQHandler            [WEAK]                                      \n                EXPORT  HRTIM1_TIME_IRQHandler            [WEAK]                                      \n                EXPORT  HRTIM1_FLT_IRQHandler             [WEAK]\n                EXPORT  DFSDM1_FLT0_IRQHandler            [WEAK] \n                EXPORT  DFSDM1_FLT1_IRQHandler            [WEAK]                                             \n                EXPORT  DFSDM1_FLT2_IRQHandler            [WEAK]                                             \n                EXPORT  DFSDM1_FLT3_IRQHandler            [WEAK]                                                                                        \n                EXPORT  SAI3_IRQHandler                   [WEAK]                                             \n                EXPORT  SWPMI1_IRQHandler                 [WEAK]                            \n                EXPORT  TIM15_IRQHandler                  [WEAK]                                             \n                EXPORT  TIM16_IRQHandler                  [WEAK]                                              \n                EXPORT  TIM17_IRQHandler                  [WEAK]                                            \n                EXPORT  MDIOS_WKUP_IRQHandler             [WEAK]                                             \n                EXPORT  MDIOS_IRQHandler                  [WEAK]                                              \n                EXPORT  JPEG_IRQHandler                   [WEAK]                                               \n                EXPORT  MDMA_IRQHandler                   [WEAK]                                                                                             \n                EXPORT  SDMMC2_IRQHandler                 [WEAK]                                             \n                EXPORT  HSEM1_IRQHandler                  [WEAK]                                                                                                             \n                EXPORT  ADC3_IRQHandler                   [WEAK]                                                \n                EXPORT  DMAMUX2_OVR_IRQHandler            [WEAK]                                            \n                EXPORT  BDMA_Channel0_IRQHandler          [WEAK]                                      \n                EXPORT  BDMA_Channel1_IRQHandler          [WEAK]                                      \n                EXPORT  BDMA_Channel2_IRQHandler          [WEAK]                                      \n                EXPORT  BDMA_Channel3_IRQHandler          [WEAK]                                      \n                EXPORT  BDMA_Channel4_IRQHandler          [WEAK]                                     \n                EXPORT  BDMA_Channel5_IRQHandler          [WEAK]                                      \n                EXPORT  BDMA_Channel6_IRQHandler          [WEAK]                                      \n                EXPORT  BDMA_Channel7_IRQHandler          [WEAK]                                     \n                EXPORT  COMP1_IRQHandler                  [WEAK]                                              \n                EXPORT  LPTIM2_IRQHandler                 [WEAK]                                           \n                EXPORT  LPTIM3_IRQHandler                 [WEAK]                                            \n                EXPORT  LPTIM4_IRQHandler                 [WEAK]                                            \n                EXPORT  LPTIM5_IRQHandler                 [WEAK]                                            \n                EXPORT  LPUART1_IRQHandler                [WEAK]                                                  \n                EXPORT  CRS_IRQHandler                    [WEAK]                                   \n                EXPORT  ECC_IRQHandler                    [WEAK] \t\t\t\t\n                EXPORT  SAI4_IRQHandler                   [WEAK]                                                                                     \n                EXPORT  WAKEUP_PIN_IRQHandler             [WEAK] \n\n\nWWDG_IRQHandler                                                          \nPVD_AVD_IRQHandler                                             \nTAMP_STAMP_IRQHandler                \nRTC_WKUP_IRQHandler                            \nFLASH_IRQHandler                                                          \nRCC_IRQHandler                                                              \nEXTI0_IRQHandler                                                              \nEXTI1_IRQHandler                                                             \nEXTI2_IRQHandler                                                              \nEXTI3_IRQHandler                                                              \nEXTI4_IRQHandler \nDMA1_Stream0_IRQHandler\nDMA1_Stream1_IRQHandler                                  \nDMA1_Stream2_IRQHandler                               \nDMA1_Stream3_IRQHandler                              \nDMA1_Stream4_IRQHandler                                  \nDMA1_Stream5_IRQHandler                                    \nDMA1_Stream6_IRQHandler                   \nADC_IRQHandler                                           \nFDCAN1_IT0_IRQHandler\nFDCAN2_IT0_IRQHandler\nFDCAN1_IT1_IRQHandler\nFDCAN2_IT1_IRQHandler\nEXTI9_5_IRQHandler                                                \nTIM1_BRK_IRQHandler                        \nTIM1_UP_IRQHandler                      \nTIM1_TRG_COM_IRQHandler  \nTIM1_CC_IRQHandler                                               \nTIM2_IRQHandler                                                           \nTIM3_IRQHandler                                                           \nTIM4_IRQHandler                                                           \nI2C1_EV_IRQHandler                                                         \nI2C1_ER_IRQHandler                                                         \nI2C2_EV_IRQHandler                                                        \nI2C2_ER_IRQHandler                                                           \nSPI1_IRQHandler                                                          \nSPI2_IRQHandler                                                           \nUSART1_IRQHandler                                                       \nUSART2_IRQHandler                                                       \nUSART3_IRQHandler                                                      \nEXTI15_10_IRQHandler                                            \nRTC_Alarm_IRQHandler                                                           \nTIM8_BRK_TIM12_IRQHandler                      \nTIM8_UP_TIM13_IRQHandler                       \nTIM8_TRG_COM_TIM14_IRQHandler  \nTIM8_CC_IRQHandler                                               \nDMA1_Stream7_IRQHandler                                                 \nFMC_IRQHandler                                                            \nSDMMC1_IRQHandler                                                            \nTIM5_IRQHandler                                                            \nSPI3_IRQHandler                                                            \nUART4_IRQHandler                                                          \nUART5_IRQHandler                                                          \nTIM6_DAC_IRQHandler                            \nTIM7_IRQHandler                              \nDMA2_Stream0_IRQHandler                                         \nDMA2_Stream1_IRQHandler                                          \nDMA2_Stream2_IRQHandler                                           \nDMA2_Stream3_IRQHandler                                           \nDMA2_Stream4_IRQHandler                                        \nETH_IRQHandler                                                         \nETH_WKUP_IRQHandler                                \nFDCAN_CAL_IRQHandler                                                                                                                                                                                                                            \nDMA2_Stream5_IRQHandler                                          \nDMA2_Stream6_IRQHandler                                          \nDMA2_Stream7_IRQHandler                                          \nUSART6_IRQHandler                                                        \nI2C3_EV_IRQHandler                                                          \nI2C3_ER_IRQHandler                                                          \nOTG_HS_EP1_OUT_IRQHandler \nOTG_HS_EP1_IN_IRQHandler \nOTG_HS_WKUP_IRQHandler   \nOTG_HS_IRQHandler        \nDCMI_IRQHandler                                                            \nCRYP_IRQHandler                                                    \nHASH_RNG_IRQHandler\nFPU_IRQHandler  \nUART7_IRQHandler                  \nUART8_IRQHandler                  \nSPI4_IRQHandler                   \nSPI5_IRQHandler                   \nSPI6_IRQHandler                   \nSAI1_IRQHandler                   \nLTDC_IRQHandler                   \nLTDC_ER_IRQHandler                 \nDMA2D_IRQHandler   \nSAI2_IRQHandler        \nQUADSPI_IRQHandler\nLPTIM1_IRQHandler\nCEC_IRQHandler\nI2C4_EV_IRQHandler\nI2C4_ER_IRQHandler\nSPDIF_RX_IRQHandler\nOTG_FS_EP1_OUT_IRQHandler\nOTG_FS_EP1_IN_IRQHandler \nOTG_FS_WKUP_IRQHandler   \nOTG_FS_IRQHandler        \nDMAMUX1_OVR_IRQHandler\nHRTIM1_Master_IRQHandler               \nHRTIM1_TIMA_IRQHandler                                                      \nHRTIM1_TIMB_IRQHandler                                                      \nHRTIM1_TIMC_IRQHandler                                                      \nHRTIM1_TIMD_IRQHandler                                                      \nHRTIM1_TIME_IRQHandler                                                      \nHRTIM1_FLT_IRQHandler \nDFSDM1_FLT0_IRQHandler\nDFSDM1_FLT1_IRQHandler                                                                \nDFSDM1_FLT2_IRQHandler                                                                \nDFSDM1_FLT3_IRQHandler                                                                                                                                \nSAI3_IRQHandler                                                                    \nSWPMI1_IRQHandler                                                 \nTIM15_IRQHandler                                                                   \nTIM16_IRQHandler                                                                    \nTIM17_IRQHandler                                                                  \nMDIOS_WKUP_IRQHandler                                                              \nMDIOS_IRQHandler                                                                    \nJPEG_IRQHandler                                                                      \nMDMA_IRQHandler                                                                                                                                            \nSDMMC2_IRQHandler                                                                  \nHSEM1_IRQHandler                                                                                                                                       \nADC3_IRQHandler                                                                       \nDMAMUX2_OVR_IRQHandler                                                            \nBDMA_Channel0_IRQHandler                                                     \nBDMA_Channel1_IRQHandler                                                     \nBDMA_Channel2_IRQHandler                                                     \nBDMA_Channel3_IRQHandler                                                     \nBDMA_Channel4_IRQHandler                                                    \nBDMA_Channel5_IRQHandler                                                     \nBDMA_Channel6_IRQHandler                                                     \nBDMA_Channel7_IRQHandler                                                    \nCOMP1_IRQHandler                                                                    \nLPTIM2_IRQHandler                                                                \nLPTIM3_IRQHandler                                                                 \nLPTIM4_IRQHandler                                                                 \nLPTIM5_IRQHandler                                                                 \nLPUART1_IRQHandler                                                                                                                         \nCRS_IRQHandler                                                            \nECC_IRQHandler                                                            \nSAI4_IRQHandler      \nWAKEUP_PIN_IRQHandler\n\n                B       .\n\n                ENDP\n\n                ALIGN\n\n;*******************************************************************************\n; User Stack and Heap initialization\n;*******************************************************************************\n                 IF      :DEF:__MICROLIB\n                \n                 EXPORT  __initial_sp\n                 EXPORT  __heap_base\n                 EXPORT  __heap_limit\n                \n                 ELSE\n                \n                 IMPORT  __use_two_region_memory\n                 EXPORT  __user_initial_stackheap\n                 \n__user_initial_stackheap\n\n                 LDR     R0, =  Heap_Mem\n                 LDR     R1, =(Stack_Mem + Stack_Size)\n                 LDR     R2, = (Heap_Mem +  Heap_Size)\n                 LDR     R3, = Stack_Mem\n                 BX      LR\n\n                 ALIGN\n\n                 ENDIF\n\n                 END\n\n"
  },
  {
    "path": "SourceCode/Middlewares/ST/ARM/DSP/Inc/arm_math.h",
    "content": "/******************************************************************************\n * @file     arm_math.h\n * @brief    Public header file for CMSIS DSP LibraryU\n * @version  V1.5.3\n * @date     10. January 2018\n ******************************************************************************/\n/*\n * Copyright (c) 2010-2018 Arm Limited or its affiliates. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the License); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n   \\mainpage CMSIS DSP Software Library\n   *\n   * Introduction\n   * ------------\n   *\n   * This user manual describes the CMSIS DSP software library,\n   * a suite of common signal processing functions for use on Cortex-M processor based devices.\n   *\n   * The library is divided into a number of functions each covering a specific category:\n   * - Basic math functions\n   * - Fast math functions\n   * - Complex math functions\n   * - Filters\n   * - Matrix functions\n   * - Transforms\n   * - Motor control functions\n   * - Statistical functions\n   * - Support functions\n   * - Interpolation functions\n   *\n   * The library has separate functions for operating on 8-bit integers, 16-bit integers,\n   * 32-bit integer and 32-bit floating-point values.\n   *\n   * Using the Library\n   * ------------\n   *\n   * The library installer contains prebuilt versions of the libraries in the <code>Lib</code> folder.\n   * - arm_cortexM7lfdp_math.lib (Cortex-M7, Little endian, Double Precision Floating Point Unit)\n   * - arm_cortexM7bfdp_math.lib (Cortex-M7, Big endian, Double Precision Floating Point Unit)\n   * - arm_cortexM7lfsp_math.lib (Cortex-M7, Little endian, Single Precision Floating Point Unit)\n   * - arm_cortexM7bfsp_math.lib (Cortex-M7, Big endian and Single Precision Floating Point Unit on)\n   * - arm_cortexM7l_math.lib (Cortex-M7, Little endian)\n   * - arm_cortexM7b_math.lib (Cortex-M7, Big endian)\n   * - arm_cortexM4lf_math.lib (Cortex-M4, Little endian, Floating Point Unit)\n   * - arm_cortexM4bf_math.lib (Cortex-M4, Big endian, Floating Point Unit)\n   * - arm_cortexM4l_math.lib (Cortex-M4, Little endian)\n   * - arm_cortexM4b_math.lib (Cortex-M4, Big endian)\n   * - arm_cortexM3l_math.lib (Cortex-M3, Little endian)\n   * - arm_cortexM3b_math.lib (Cortex-M3, Big endian)\n   * - arm_cortexM0l_math.lib (Cortex-M0 / Cortex-M0+, Little endian)\n   * - arm_cortexM0b_math.lib (Cortex-M0 / Cortex-M0+, Big endian)\n   * - arm_ARMv8MBLl_math.lib (Armv8-M Baseline, Little endian)\n   * - arm_ARMv8MMLl_math.lib (Armv8-M Mainline, Little endian)\n   * - arm_ARMv8MMLlfsp_math.lib (Armv8-M Mainline, Little endian, Single Precision Floating Point Unit)\n   * - arm_ARMv8MMLld_math.lib (Armv8-M Mainline, Little endian, DSP instructions)\n   * - arm_ARMv8MMLldfsp_math.lib (Armv8-M Mainline, Little endian, DSP instructions, Single Precision Floating Point Unit)\n   *\n   * The library functions are declared in the public file <code>arm_math.h</code> which is placed in the <code>Include</code> folder.\n   * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single\n   * public header file <code> arm_math.h</code> for Cortex-M cores with little endian and big endian. Same header file will be used for floating point unit(FPU) variants.\n   * Define the appropriate preprocessor macro ARM_MATH_CM7 or ARM_MATH_CM4 or ARM_MATH_CM3 or\n   * ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application.\n   * For Armv8-M cores define preprocessor macro ARM_MATH_ARMV8MBL or ARM_MATH_ARMV8MML.\n   * Set preprocessor macro __DSP_PRESENT if Armv8-M Mainline core supports DSP instructions.\n   * \n   *\n   * Examples\n   * --------\n   *\n   * The library ships with a number of examples which demonstrate how to use the library functions.\n   *\n   * Toolchain Support\n   * ------------\n   *\n   * The library has been developed and tested with MDK version 5.14.0.0\n   * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly.\n   *\n   * Building the Library\n   * ------------\n   *\n   * The library installer contains a project file to rebuild libraries on MDK toolchain in the <code>CMSIS\\\\DSP_Lib\\\\Source\\\\ARM</code> folder.\n   * - arm_cortexM_math.uvprojx\n   *\n   *\n   * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional preprocessor macros detailed above.\n   *\n   * Preprocessor Macros\n   * ------------\n   *\n   * Each library project have different preprocessor macros.\n   *\n   * - UNALIGNED_SUPPORT_DISABLE:\n   *\n   * Define macro UNALIGNED_SUPPORT_DISABLE, If the silicon does not support unaligned memory access\n   *\n   * - ARM_MATH_BIG_ENDIAN:\n   *\n   * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.\n   *\n   * - ARM_MATH_MATRIX_CHECK:\n   *\n   * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices\n   *\n   * - ARM_MATH_ROUNDING:\n   *\n   * Define macro ARM_MATH_ROUNDING for rounding on support functions\n   *\n   * - ARM_MATH_CMx:\n   *\n   * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target\n   * and ARM_MATH_CM0 for building library on Cortex-M0 target, ARM_MATH_CM0PLUS for building library on Cortex-M0+ target, and\n   * ARM_MATH_CM7 for building the library on cortex-M7.\n   *\n   * - ARM_MATH_ARMV8MxL:\n   *\n   * Define macro ARM_MATH_ARMV8MBL for building the library on Armv8-M Baseline target, ARM_MATH_ARMV8MML for building library\n   * on Armv8-M Mainline target.\n   *\n   * - __FPU_PRESENT:\n   *\n   * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for floating point libraries.\n   *\n   * - __DSP_PRESENT:\n   *\n   * Initialize macro __DSP_PRESENT = 1 when Armv8-M Mainline core supports DSP instructions.\n   *\n   * <hr>\n   * CMSIS-DSP in ARM::CMSIS Pack\n   * -----------------------------\n   *\n   * The following files relevant to CMSIS-DSP are present in the <b>ARM::CMSIS</b> Pack directories:\n   * |File/Folder                   |Content                                                                 |\n   * |------------------------------|------------------------------------------------------------------------|\n   * |\\b CMSIS\\\\Documentation\\\\DSP  | This documentation                                                     |\n   * |\\b CMSIS\\\\DSP_Lib             | Software license agreement (license.txt)                               |\n   * |\\b CMSIS\\\\DSP_Lib\\\\Examples   | Example projects demonstrating the usage of the library functions      |\n   * |\\b CMSIS\\\\DSP_Lib\\\\Source     | Source files for rebuilding the library                                |\n   *\n   * <hr>\n   * Revision History of CMSIS-DSP\n   * ------------\n   * Please refer to \\ref ChangeLog_pg.\n   *\n   * Copyright Notice\n   * ------------\n   *\n   * Copyright (C) 2010-2015 Arm Limited. All rights reserved.\n   */\n\n\n/**\n * @defgroup groupMath Basic Math Functions\n */\n\n/**\n * @defgroup groupFastMath Fast Math Functions\n * This set of functions provides a fast approximation to sine, cosine, and square root.\n * As compared to most of the other functions in the CMSIS math library, the fast math functions\n * operate on individual values and not arrays.\n * There are separate functions for Q15, Q31, and floating-point data.\n *\n */\n\n/**\n * @defgroup groupCmplxMath Complex Math Functions\n * This set of functions operates on complex data vectors.\n * The data in the complex arrays is stored in an interleaved fashion\n * (real, imag, real, imag, ...).\n * In the API functions, the number of samples in a complex array refers\n * to the number of complex values; the array contains twice this number of\n * real values.\n */\n\n/**\n * @defgroup groupFilters Filtering Functions\n */\n\n/**\n * @defgroup groupMatrix Matrix Functions\n *\n * This set of functions provides basic matrix math operations.\n * The functions operate on matrix data structures.  For example,\n * the type\n * definition for the floating-point matrix structure is shown\n * below:\n * <pre>\n *     typedef struct\n *     {\n *       uint16_t numRows;     // number of rows of the matrix.\n *       uint16_t numCols;     // number of columns of the matrix.\n *       float32_t *pData;     // points to the data of the matrix.\n *     } arm_matrix_instance_f32;\n * </pre>\n * There are similar definitions for Q15 and Q31 data types.\n *\n * The structure specifies the size of the matrix and then points to\n * an array of data.  The array is of size <code>numRows X numCols</code>\n * and the values are arranged in row order.  That is, the\n * matrix element (i, j) is stored at:\n * <pre>\n *     pData[i*numCols + j]\n * </pre>\n *\n * \\par Init Functions\n * There is an associated initialization function for each type of matrix\n * data structure.\n * The initialization function sets the values of the internal structure fields.\n * Refer to the function <code>arm_mat_init_f32()</code>, <code>arm_mat_init_q31()</code>\n * and <code>arm_mat_init_q15()</code> for floating-point, Q31 and Q15 types,  respectively.\n *\n * \\par\n * Use of the initialization function is optional. However, if initialization function is used\n * then the instance structure cannot be placed into a const data section.\n * To place the instance structure in a const data\n * section, manually initialize the data structure.  For example:\n * <pre>\n * <code>arm_matrix_instance_f32 S = {nRows, nColumns, pData};</code>\n * <code>arm_matrix_instance_q31 S = {nRows, nColumns, pData};</code>\n * <code>arm_matrix_instance_q15 S = {nRows, nColumns, pData};</code>\n * </pre>\n * where <code>nRows</code> specifies the number of rows, <code>nColumns</code>\n * specifies the number of columns, and <code>pData</code> points to the\n * data array.\n *\n * \\par Size Checking\n * By default all of the matrix functions perform size checking on the input and\n * output matrices. For example, the matrix addition function verifies that the\n * two input matrices and the output matrix all have the same number of rows and\n * columns. If the size check fails the functions return:\n * <pre>\n *     ARM_MATH_SIZE_MISMATCH\n * </pre>\n * Otherwise the functions return\n * <pre>\n *     ARM_MATH_SUCCESS\n * </pre>\n * There is some overhead associated with this matrix size checking.\n * The matrix size checking is enabled via the \\#define\n * <pre>\n *     ARM_MATH_MATRIX_CHECK\n * </pre>\n * within the library project settings.  By default this macro is defined\n * and size checking is enabled. By changing the project settings and\n * undefining this macro size checking is eliminated and the functions\n * run a bit faster. With size checking disabled the functions always\n * return <code>ARM_MATH_SUCCESS</code>.\n */\n\n/**\n * @defgroup groupTransforms Transform Functions\n */\n\n/**\n * @defgroup groupController Controller Functions\n */\n\n/**\n * @defgroup groupStats Statistics Functions\n */\n/**\n * @defgroup groupSupport Support Functions\n */\n\n/**\n * @defgroup groupInterpolation Interpolation Functions\n * These functions perform 1- and 2-dimensional interpolation of data.\n * Linear interpolation is used for 1-dimensional data and\n * bilinear interpolation is used for 2-dimensional data.\n */\n\n/**\n * @defgroup groupExamples Examples\n */\n#ifndef _ARM_MATH_H\n#define _ARM_MATH_H\n\n/* Compiler specific diagnostic adjustment */\n#if   defined ( __CC_ARM )\n\n#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n\n#elif defined ( __GNUC__ )\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wsign-conversion\"\n#pragma GCC diagnostic ignored \"-Wconversion\"\n#pragma GCC diagnostic ignored \"-Wunused-parameter\"\n\n#elif defined ( __ICCARM__ )\n\n#elif defined ( __TI_ARM__ )\n\n#elif defined ( __CSMC__ )\n\n#elif defined ( __TASKING__ )\n\n#else\n  #error Unknown compiler\n#endif\n\n\n#define __CMSIS_GENERIC         /* disable NVIC and Systick functions */\n\n#if defined(ARM_MATH_CM7)\n  #include \"core_cm7.h\"\n  #define ARM_MATH_DSP\n#elif defined (ARM_MATH_CM4)\n  #include \"core_cm4.h\"\n  #define ARM_MATH_DSP\n#elif defined (ARM_MATH_CM3)\n  #include \"core_cm3.h\"\n#elif defined (ARM_MATH_CM0)\n  #include \"core_cm0.h\"\n  #define ARM_MATH_CM0_FAMILY\n#elif defined (ARM_MATH_CM0PLUS)\n  #include \"core_cm0plus.h\"\n  #define ARM_MATH_CM0_FAMILY\n#elif defined (ARM_MATH_ARMV8MBL)\n  #include \"core_armv8mbl.h\"\n  #define ARM_MATH_CM0_FAMILY\n#elif defined (ARM_MATH_ARMV8MML)\n  #include \"core_armv8mml.h\"\n  #if (defined (__DSP_PRESENT) && (__DSP_PRESENT == 1))\n    #define ARM_MATH_DSP\n  #endif\n#else\n  #error \"Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_MATH_ARMV8MBL, ARM_MATH_ARMV8MML\"\n#endif\n\n#undef  __CMSIS_GENERIC         /* enable NVIC and Systick functions */\n#include \"string.h\"\n#include \"math.h\"\n#ifdef   __cplusplus\nextern \"C\"\n{\n#endif\n\n\n  /**\n   * @brief Macros required for reciprocal calculation in Normalized LMS\n   */\n\n#define DELTA_Q31          (0x100)\n#define DELTA_Q15          0x5\n#define INDEX_MASK         0x0000003F\n#ifndef PI\n  #define PI               3.14159265358979f\n#endif\n\n  /**\n   * @brief Macros required for SINE and COSINE Fast math approximations\n   */\n\n#define FAST_MATH_TABLE_SIZE  512\n#define FAST_MATH_Q31_SHIFT   (32 - 10)\n#define FAST_MATH_Q15_SHIFT   (16 - 10)\n#define CONTROLLER_Q31_SHIFT  (32 - 9)\n#define TABLE_SPACING_Q31     0x400000\n#define TABLE_SPACING_Q15     0x80\n\n  /**\n   * @brief Macros required for SINE and COSINE Controller functions\n   */\n  /* 1.31(q31) Fixed value of 2/360 */\n  /* -1 to +1 is divided into 360 values so total spacing is (2/360) */\n#define INPUT_SPACING         0xB60B61\n\n  /**\n   * @brief Macro for Unaligned Support\n   */\n#ifndef UNALIGNED_SUPPORT_DISABLE\n    #define ALIGN4\n#else\n  #if defined  (__GNUC__)\n    #define ALIGN4 __attribute__((aligned(4)))\n  #else\n    #define ALIGN4 __align(4)\n  #endif\n#endif   /* #ifndef UNALIGNED_SUPPORT_DISABLE */\n\n  /**\n   * @brief Error status returned by some functions in the library.\n   */\n\n  typedef enum\n  {\n    ARM_MATH_SUCCESS = 0,                /**< No error */\n    ARM_MATH_ARGUMENT_ERROR = -1,        /**< One or more arguments are incorrect */\n    ARM_MATH_LENGTH_ERROR = -2,          /**< Length of data buffer is incorrect */\n    ARM_MATH_SIZE_MISMATCH = -3,         /**< Size of matrices is not compatible with the operation. */\n    ARM_MATH_NANINF = -4,                /**< Not-a-number (NaN) or infinity is generated */\n    ARM_MATH_SINGULAR = -5,              /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */\n    ARM_MATH_TEST_FAILURE = -6           /**< Test Failed  */\n  } arm_status;\n\n  /**\n   * @brief 8-bit fractional data type in 1.7 format.\n   */\n  typedef int8_t q7_t;\n\n  /**\n   * @brief 16-bit fractional data type in 1.15 format.\n   */\n  typedef int16_t q15_t;\n\n  /**\n   * @brief 32-bit fractional data type in 1.31 format.\n   */\n  typedef int32_t q31_t;\n\n  /**\n   * @brief 64-bit fractional data type in 1.63 format.\n   */\n  typedef int64_t q63_t;\n\n  /**\n   * @brief 32-bit floating-point type definition.\n   */\n  typedef float float32_t;\n\n  /**\n   * @brief 64-bit floating-point type definition.\n   */\n  typedef double float64_t;\n\n  /**\n   * @brief definition to read/write two 16 bit values.\n   */\n#if   defined ( __CC_ARM )\n  #define __SIMD32_TYPE int32_t __packed\n  #define CMSIS_UNUSED __attribute__((unused))\n  #define CMSIS_INLINE __attribute__((always_inline))\n\n#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n  #define __SIMD32_TYPE int32_t\n  #define CMSIS_UNUSED __attribute__((unused))\n  #define CMSIS_INLINE __attribute__((always_inline))\n\n#elif defined ( __GNUC__ )\n  #define __SIMD32_TYPE int32_t\n  #define CMSIS_UNUSED __attribute__((unused))\n  #define CMSIS_INLINE __attribute__((always_inline))\n\n#elif defined ( __ICCARM__ )\n  #define __SIMD32_TYPE int32_t __packed\n  #define CMSIS_UNUSED\n  #define CMSIS_INLINE\n\n#elif defined ( __TI_ARM__ )\n  #define __SIMD32_TYPE int32_t\n  #define CMSIS_UNUSED __attribute__((unused))\n  #define CMSIS_INLINE\n\n#elif defined ( __CSMC__ )\n  #define __SIMD32_TYPE int32_t\n  #define CMSIS_UNUSED\n  #define CMSIS_INLINE\n\n#elif defined ( __TASKING__ )\n  #define __SIMD32_TYPE __unaligned int32_t\n  #define CMSIS_UNUSED\n  #define CMSIS_INLINE\n\n#else\n  #error Unknown compiler\n#endif\n\n#define __SIMD32(addr)        (*(__SIMD32_TYPE **) & (addr))\n#define __SIMD32_CONST(addr)  ((__SIMD32_TYPE *)(addr))\n#define _SIMD32_OFFSET(addr)  (*(__SIMD32_TYPE *)  (addr))\n#define __SIMD64(addr)        (*(int64_t **) & (addr))\n\n#if !defined (ARM_MATH_DSP)\n  /**\n   * @brief definition to pack two 16 bit values.\n   */\n#define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0x0000FFFF) | \\\n                                    (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000)  )\n#define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0xFFFF0000) | \\\n                                    (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF)  )\n\n#endif /* !defined (ARM_MATH_DSP) */\n\n   /**\n   * @brief definition to pack four 8 bit values.\n   */\n#ifndef ARM_MATH_BIG_ENDIAN\n\n#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) | \\\n                                (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) | \\\n                                (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \\\n                                (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )\n#else\n\n#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) | \\\n                                (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) | \\\n                                (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \\\n                                (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )\n\n#endif\n\n\n  /**\n   * @brief Clips Q63 to Q31 values.\n   */\n  CMSIS_INLINE __STATIC_INLINE q31_t clip_q63_to_q31(\n  q63_t x)\n  {\n    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?\n      ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x;\n  }\n\n  /**\n   * @brief Clips Q63 to Q15 values.\n   */\n  CMSIS_INLINE __STATIC_INLINE q15_t clip_q63_to_q15(\n  q63_t x)\n  {\n    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?\n      ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15);\n  }\n\n  /**\n   * @brief Clips Q31 to Q7 values.\n   */\n  CMSIS_INLINE __STATIC_INLINE q7_t clip_q31_to_q7(\n  q31_t x)\n  {\n    return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?\n      ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x;\n  }\n\n  /**\n   * @brief Clips Q31 to Q15 values.\n   */\n  CMSIS_INLINE __STATIC_INLINE q15_t clip_q31_to_q15(\n  q31_t x)\n  {\n    return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?\n      ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x;\n  }\n\n  /**\n   * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format.\n   */\n\n  CMSIS_INLINE __STATIC_INLINE q63_t mult32x64(\n  q63_t x,\n  q31_t y)\n  {\n    return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +\n            (((q63_t) (x >> 32) * y)));\n  }\n\n  /**\n   * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type.\n   */\n\n  CMSIS_INLINE __STATIC_INLINE uint32_t arm_recip_q31(\n  q31_t in,\n  q31_t * dst,\n  q31_t * pRecipTable)\n  {\n    q31_t out;\n    uint32_t tempVal;\n    uint32_t index, i;\n    uint32_t signBits;\n\n    if (in > 0)\n    {\n      signBits = ((uint32_t) (__CLZ( in) - 1));\n    }\n    else\n    {\n      signBits = ((uint32_t) (__CLZ(-in) - 1));\n    }\n\n    /* Convert input sample to 1.31 format */\n    in = (in << signBits);\n\n    /* calculation of index for initial approximated Val */\n    index = (uint32_t)(in >> 24);\n    index = (index & INDEX_MASK);\n\n    /* 1.31 with exp 1 */\n    out = pRecipTable[index];\n\n    /* calculation of reciprocal value */\n    /* running approximation for two iterations */\n    for (i = 0U; i < 2U; i++)\n    {\n      tempVal = (uint32_t) (((q63_t) in * out) >> 31);\n      tempVal = 0x7FFFFFFFu - tempVal;\n      /*      1.31 with exp 1 */\n      /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */\n      out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30);\n    }\n\n    /* write output */\n    *dst = out;\n\n    /* return num of signbits of out = 1/in value */\n    return (signBits + 1U);\n  }\n\n\n  /**\n   * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type.\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t arm_recip_q15(\n  q15_t in,\n  q15_t * dst,\n  q15_t * pRecipTable)\n  {\n    q15_t out = 0;\n    uint32_t tempVal = 0;\n    uint32_t index = 0, i = 0;\n    uint32_t signBits = 0;\n\n    if (in > 0)\n    {\n      signBits = ((uint32_t)(__CLZ( in) - 17));\n    }\n    else\n    {\n      signBits = ((uint32_t)(__CLZ(-in) - 17));\n    }\n\n    /* Convert input sample to 1.15 format */\n    in = (in << signBits);\n\n    /* calculation of index for initial approximated Val */\n    index = (uint32_t)(in >>  8);\n    index = (index & INDEX_MASK);\n\n    /*      1.15 with exp 1  */\n    out = pRecipTable[index];\n\n    /* calculation of reciprocal value */\n    /* running approximation for two iterations */\n    for (i = 0U; i < 2U; i++)\n    {\n      tempVal = (uint32_t) (((q31_t) in * out) >> 15);\n      tempVal = 0x7FFFu - tempVal;\n      /*      1.15 with exp 1 */\n      out = (q15_t) (((q31_t) out * tempVal) >> 14);\n      /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */\n    }\n\n    /* write output */\n    *dst = out;\n\n    /* return num of signbits of out = 1/in value */\n    return (signBits + 1);\n  }\n\n\n/*\n * @brief C custom defined intrinsic function for M3 and M0 processors\n */\n#if !defined (ARM_MATH_DSP)\n\n  /*\n   * @brief C custom defined QADD8 for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __QADD8(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s, t, u;\n\n    r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;\n    s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;\n    t = __SSAT(((((q31_t)x <<  8) >> 24) + (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;\n    u = __SSAT(((((q31_t)x      ) >> 24) + (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;\n\n    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QSUB8 for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __QSUB8(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s, t, u;\n\n    r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;\n    s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;\n    t = __SSAT(((((q31_t)x <<  8) >> 24) - (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;\n    u = __SSAT(((((q31_t)x      ) >> 24) - (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;\n\n    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QADD16 for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __QADD16(\n  uint32_t x,\n  uint32_t y)\n  {\n/*  q31_t r,     s;  without initialisation 'arm_offset_q15 test' fails  but 'intrinsic' tests pass! for armCC */\n    q31_t r = 0, s = 0;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHADD16 for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SHADD16(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QSUB16 for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __QSUB16(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHSUB16 for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SHSUB16(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QASX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __QASX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHASX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SHASX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined QSAX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __QSAX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;\n    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SHSAX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SHSAX(\n  uint32_t x,\n  uint32_t y)\n  {\n    q31_t r, s;\n\n    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n    s = (((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;\n\n    return ((uint32_t)((s << 16) | (r      )));\n  }\n\n\n  /*\n   * @brief C custom defined SMUSDX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SMUSDX(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));\n  }\n\n  /*\n   * @brief C custom defined SMUADX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SMUADX(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));\n  }\n\n\n  /*\n   * @brief C custom defined QADD for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE int32_t __QADD(\n  int32_t x,\n  int32_t y)\n  {\n    return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y)));\n  }\n\n\n  /*\n   * @brief C custom defined QSUB for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE int32_t __QSUB(\n  int32_t x,\n  int32_t y)\n  {\n    return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y)));\n  }\n\n\n  /*\n   * @brief C custom defined SMLAD for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SMLAD(\n  uint32_t x,\n  uint32_t y,\n  uint32_t sum)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ( ((q31_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLADX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SMLADX(\n  uint32_t x,\n  uint32_t y,\n  uint32_t sum)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ( ((q31_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLSDX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SMLSDX(\n  uint32_t x,\n  uint32_t y,\n  uint32_t sum)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ( ((q31_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLALD for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint64_t __SMLALD(\n  uint32_t x,\n  uint32_t y,\n  uint64_t sum)\n  {\n/*  return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */\n    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ( ((q63_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMLALDX for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint64_t __SMLALDX(\n  uint32_t x,\n  uint32_t y,\n  uint64_t sum)\n  {\n/*  return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */\n    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ( ((q63_t)sum    )                                  )   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMUAD for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SMUAD(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));\n  }\n\n\n  /*\n   * @brief C custom defined SMUSD for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SMUSD(\n  uint32_t x,\n  uint32_t y)\n  {\n    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) -\n                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));\n  }\n\n\n  /*\n   * @brief C custom defined SXTB16 for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE uint32_t __SXTB16(\n  uint32_t x)\n  {\n    return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) |\n                       ((((q31_t)x <<  8) >>  8) & (q31_t)0xFFFF0000)  ));\n  }\n\n  /*\n   * @brief C custom defined SMMLA for M3 and M0 processors\n   */\n  CMSIS_INLINE __STATIC_INLINE int32_t __SMMLA(\n  int32_t x,\n  int32_t y,\n  int32_t sum)\n  {\n    return (sum + (int32_t) (((int64_t) x * y) >> 32));\n  }\n\n#endif /* !defined (ARM_MATH_DSP) */\n\n\n  /**\n   * @brief Instance structure for the Q7 FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;        /**< number of filter coefficients in the filter. */\n    q7_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    q7_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\n  } arm_fir_instance_q7;\n\n  /**\n   * @brief Instance structure for the Q15 FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;         /**< number of filter coefficients in the filter. */\n    q15_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    q15_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\n  } arm_fir_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;         /**< number of filter coefficients in the filter. */\n    q31_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    q31_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps. */\n  } arm_fir_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;     /**< number of filter coefficients in the filter. */\n    float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */\n  } arm_fir_instance_f32;\n\n\n  /**\n   * @brief Processing function for the Q7 FIR filter.\n   * @param[in]  S          points to an instance of the Q7 FIR filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_q7(\n  const arm_fir_instance_q7 * S,\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q7 FIR filter.\n   * @param[in,out] S          points to an instance of the Q7 FIR structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed.\n   */\n  void arm_fir_init_q7(\n  arm_fir_instance_q7 * S,\n  uint16_t numTaps,\n  q7_t * pCoeffs,\n  q7_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 FIR filter.\n   * @param[in]  S          points to an instance of the Q15 FIR structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_q15(\n  const arm_fir_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q15 FIR filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_fast_q15(\n  const arm_fir_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 FIR filter.\n   * @param[in,out] S          points to an instance of the Q15 FIR filter structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter. Must be even and greater than or equal to 4.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed at a time.\n   * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if\n   * <code>numTaps</code> is not a supported value.\n   */\n  arm_status arm_fir_init_q15(\n  arm_fir_instance_q15 * S,\n  uint16_t numTaps,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 FIR filter.\n   * @param[in]  S          points to an instance of the Q31 FIR filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_q31(\n  const arm_fir_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q31 FIR structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_fast_q31(\n  const arm_fir_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 FIR filter.\n   * @param[in,out] S          points to an instance of the Q31 FIR structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed at a time.\n   */\n  void arm_fir_init_q31(\n  arm_fir_instance_q31 * S,\n  uint16_t numTaps,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the floating-point FIR filter.\n   * @param[in]  S          points to an instance of the floating-point FIR structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_f32(\n  const arm_fir_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point FIR filter.\n   * @param[in,out] S          points to an instance of the floating-point FIR filter structure.\n   * @param[in]     numTaps    Number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of samples that are processed at a time.\n   */\n  void arm_fir_init_f32(\n  arm_fir_instance_f32 * S,\n  uint16_t numTaps,\n  float32_t * pCoeffs,\n  float32_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 Biquad cascade filter.\n   */\n  typedef struct\n  {\n    int8_t numStages;        /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n    q15_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\n    q15_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */\n    int8_t postShift;        /**< Additional shift, in bits, applied to each output sample. */\n  } arm_biquad_casd_df1_inst_q15;\n\n  /**\n   * @brief Instance structure for the Q31 Biquad cascade filter.\n   */\n  typedef struct\n  {\n    uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n    q31_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\n    q31_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */\n    uint8_t postShift;       /**< Additional shift, in bits, applied to each output sample. */\n  } arm_biquad_casd_df1_inst_q31;\n\n  /**\n   * @brief Instance structure for the floating-point Biquad cascade filter.\n   */\n  typedef struct\n  {\n    uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n    float32_t *pState;       /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\n    float32_t *pCoeffs;      /**< Points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_casd_df1_inst_f32;\n\n\n  /**\n   * @brief Processing function for the Q15 Biquad cascade filter.\n   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the Q15 Biquad cascade structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format\n   */\n  void arm_biquad_cascade_df1_init_q15(\n  arm_biquad_casd_df1_inst_q15 * S,\n  uint8_t numStages,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  int8_t postShift);\n\n\n  /**\n   * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_fast_q15(\n  const arm_biquad_casd_df1_inst_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 Biquad cascade filter\n   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_fast_q31(\n  const arm_biquad_casd_df1_inst_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the Q31 Biquad cascade structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format\n   */\n  void arm_biquad_cascade_df1_init_q31(\n  arm_biquad_casd_df1_inst_q31 * S,\n  uint8_t numStages,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  int8_t postShift);\n\n\n  /**\n   * @brief Processing function for the floating-point Biquad cascade filter.\n   * @param[in]  S          points to an instance of the floating-point Biquad cascade structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df1_f32(\n  const arm_biquad_casd_df1_inst_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the floating-point Biquad cascade structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_df1_init_f32(\n  arm_biquad_casd_df1_inst_f32 * S,\n  uint8_t numStages,\n  float32_t * pCoeffs,\n  float32_t * pState);\n\n\n  /**\n   * @brief Instance structure for the floating-point matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    float32_t *pData;     /**< points to the data of the matrix. */\n  } arm_matrix_instance_f32;\n\n\n  /**\n   * @brief Instance structure for the floating-point matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    float64_t *pData;     /**< points to the data of the matrix. */\n  } arm_matrix_instance_f64;\n\n  /**\n   * @brief Instance structure for the Q15 matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    q15_t *pData;         /**< points to the data of the matrix. */\n  } arm_matrix_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 matrix structure.\n   */\n  typedef struct\n  {\n    uint16_t numRows;     /**< number of rows of the matrix.     */\n    uint16_t numCols;     /**< number of columns of the matrix.  */\n    q31_t *pData;         /**< points to the data of the matrix. */\n  } arm_matrix_instance_q31;\n\n\n  /**\n   * @brief Floating-point matrix addition.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_add_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\n\n  /**\n   * @brief Q15 matrix addition.\n   * @param[in]   pSrcA  points to the first input matrix structure\n   * @param[in]   pSrcB  points to the second input matrix structure\n   * @param[out]  pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_add_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst);\n\n\n  /**\n   * @brief Q31 matrix addition.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_add_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\n\n  /**\n   * @brief Floating-point, complex, matrix multiplication.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_cmplx_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\n\n  /**\n   * @brief Q15, complex,  matrix multiplication.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_cmplx_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst,\n  q15_t * pScratch);\n\n\n  /**\n   * @brief Q31, complex, matrix multiplication.\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_cmplx_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\n\n  /**\n   * @brief Floating-point matrix transpose.\n   * @param[in]  pSrc  points to the input matrix\n   * @param[out] pDst  points to the output matrix\n   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\n   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_trans_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  arm_matrix_instance_f32 * pDst);\n\n\n  /**\n   * @brief Q15 matrix transpose.\n   * @param[in]  pSrc  points to the input matrix\n   * @param[out] pDst  points to the output matrix\n   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\n   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_trans_q15(\n  const arm_matrix_instance_q15 * pSrc,\n  arm_matrix_instance_q15 * pDst);\n\n\n  /**\n   * @brief Q31 matrix transpose.\n   * @param[in]  pSrc  points to the input matrix\n   * @param[out] pDst  points to the output matrix\n   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\n   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_trans_q31(\n  const arm_matrix_instance_q31 * pSrc,\n  arm_matrix_instance_q31 * pDst);\n\n\n  /**\n   * @brief Floating-point matrix multiplication\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_mult_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\n\n  /**\n   * @brief Q15 matrix multiplication\n   * @param[in]  pSrcA   points to the first input matrix structure\n   * @param[in]  pSrcB   points to the second input matrix structure\n   * @param[out] pDst    points to output matrix structure\n   * @param[in]  pState  points to the array for storing intermediate results\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_mult_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst,\n  q15_t * pState);\n\n\n  /**\n   * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA   points to the first input matrix structure\n   * @param[in]  pSrcB   points to the second input matrix structure\n   * @param[out] pDst    points to output matrix structure\n   * @param[in]  pState  points to the array for storing intermediate results\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_mult_fast_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst,\n  q15_t * pState);\n\n\n  /**\n   * @brief Q31 matrix multiplication\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_mult_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\n\n  /**\n   * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_mult_fast_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\n\n  /**\n   * @brief Floating-point matrix subtraction\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_sub_f32(\n  const arm_matrix_instance_f32 * pSrcA,\n  const arm_matrix_instance_f32 * pSrcB,\n  arm_matrix_instance_f32 * pDst);\n\n\n  /**\n   * @brief Q15 matrix subtraction\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_sub_q15(\n  const arm_matrix_instance_q15 * pSrcA,\n  const arm_matrix_instance_q15 * pSrcB,\n  arm_matrix_instance_q15 * pDst);\n\n\n  /**\n   * @brief Q31 matrix subtraction\n   * @param[in]  pSrcA  points to the first input matrix structure\n   * @param[in]  pSrcB  points to the second input matrix structure\n   * @param[out] pDst   points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_sub_q31(\n  const arm_matrix_instance_q31 * pSrcA,\n  const arm_matrix_instance_q31 * pSrcB,\n  arm_matrix_instance_q31 * pDst);\n\n\n  /**\n   * @brief Floating-point matrix scaling.\n   * @param[in]  pSrc   points to the input matrix\n   * @param[in]  scale  scale factor\n   * @param[out] pDst   points to the output matrix\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_scale_f32(\n  const arm_matrix_instance_f32 * pSrc,\n  float32_t scale,\n  arm_matrix_instance_f32 * pDst);\n\n\n  /**\n   * @brief Q15 matrix scaling.\n   * @param[in]  pSrc        points to input matrix\n   * @param[in]  scaleFract  fractional portion of the scale factor\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to output matrix\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_scale_q15(\n  const arm_matrix_instance_q15 * pSrc,\n  q15_t scaleFract,\n  int32_t shift,\n  arm_matrix_instance_q15 * pDst);\n\n\n  /**\n   * @brief Q31 matrix scaling.\n   * @param[in]  pSrc        points to input matrix\n   * @param[in]  scaleFract  fractional portion of the scale factor\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to output matrix structure\n   * @return     The function returns either\n   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\n   */\n  arm_status arm_mat_scale_q31(\n  const arm_matrix_instance_q31 * pSrc,\n  q31_t scaleFract,\n  int32_t shift,\n  arm_matrix_instance_q31 * pDst);\n\n\n  /**\n   * @brief  Q31 matrix initialization.\n   * @param[in,out] S         points to an instance of the floating-point matrix structure.\n   * @param[in]     nRows     number of rows in the matrix.\n   * @param[in]     nColumns  number of columns in the matrix.\n   * @param[in]     pData     points to the matrix data array.\n   */\n  void arm_mat_init_q31(\n  arm_matrix_instance_q31 * S,\n  uint16_t nRows,\n  uint16_t nColumns,\n  q31_t * pData);\n\n\n  /**\n   * @brief  Q15 matrix initialization.\n   * @param[in,out] S         points to an instance of the floating-point matrix structure.\n   * @param[in]     nRows     number of rows in the matrix.\n   * @param[in]     nColumns  number of columns in the matrix.\n   * @param[in]     pData     points to the matrix data array.\n   */\n  void arm_mat_init_q15(\n  arm_matrix_instance_q15 * S,\n  uint16_t nRows,\n  uint16_t nColumns,\n  q15_t * pData);\n\n\n  /**\n   * @brief  Floating-point matrix initialization.\n   * @param[in,out] S         points to an instance of the floating-point matrix structure.\n   * @param[in]     nRows     number of rows in the matrix.\n   * @param[in]     nColumns  number of columns in the matrix.\n   * @param[in]     pData     points to the matrix data array.\n   */\n  void arm_mat_init_f32(\n  arm_matrix_instance_f32 * S,\n  uint16_t nRows,\n  uint16_t nColumns,\n  float32_t * pData);\n\n\n\n  /**\n   * @brief Instance structure for the Q15 PID Control.\n   */\n  typedef struct\n  {\n    q15_t A0;           /**< The derived gain, A0 = Kp + Ki + Kd . */\n#if !defined (ARM_MATH_DSP)\n    q15_t A1;\n    q15_t A2;\n#else\n    q31_t A1;           /**< The derived gain A1 = -Kp - 2Kd | Kd.*/\n#endif\n    q15_t state[3];     /**< The state array of length 3. */\n    q15_t Kp;           /**< The proportional gain. */\n    q15_t Ki;           /**< The integral gain. */\n    q15_t Kd;           /**< The derivative gain. */\n  } arm_pid_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 PID Control.\n   */\n  typedef struct\n  {\n    q31_t A0;            /**< The derived gain, A0 = Kp + Ki + Kd . */\n    q31_t A1;            /**< The derived gain, A1 = -Kp - 2Kd. */\n    q31_t A2;            /**< The derived gain, A2 = Kd . */\n    q31_t state[3];      /**< The state array of length 3. */\n    q31_t Kp;            /**< The proportional gain. */\n    q31_t Ki;            /**< The integral gain. */\n    q31_t Kd;            /**< The derivative gain. */\n  } arm_pid_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point PID Control.\n   */\n  typedef struct\n  {\n    float32_t A0;          /**< The derived gain, A0 = Kp + Ki + Kd . */\n    float32_t A1;          /**< The derived gain, A1 = -Kp - 2Kd. */\n    float32_t A2;          /**< The derived gain, A2 = Kd . */\n    float32_t state[3];    /**< The state array of length 3. */\n    float32_t Kp;          /**< The proportional gain. */\n    float32_t Ki;          /**< The integral gain. */\n    float32_t Kd;          /**< The derivative gain. */\n  } arm_pid_instance_f32;\n\n\n\n  /**\n   * @brief  Initialization function for the floating-point PID Control.\n   * @param[in,out] S               points to an instance of the PID structure.\n   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\n   */\n  void arm_pid_init_f32(\n  arm_pid_instance_f32 * S,\n  int32_t resetStateFlag);\n\n\n  /**\n   * @brief  Reset function for the floating-point PID Control.\n   * @param[in,out] S  is an instance of the floating-point PID Control structure\n   */\n  void arm_pid_reset_f32(\n  arm_pid_instance_f32 * S);\n\n\n  /**\n   * @brief  Initialization function for the Q31 PID Control.\n   * @param[in,out] S               points to an instance of the Q15 PID structure.\n   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\n   */\n  void arm_pid_init_q31(\n  arm_pid_instance_q31 * S,\n  int32_t resetStateFlag);\n\n\n  /**\n   * @brief  Reset function for the Q31 PID Control.\n   * @param[in,out] S   points to an instance of the Q31 PID Control structure\n   */\n\n  void arm_pid_reset_q31(\n  arm_pid_instance_q31 * S);\n\n\n  /**\n   * @brief  Initialization function for the Q15 PID Control.\n   * @param[in,out] S               points to an instance of the Q15 PID structure.\n   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\n   */\n  void arm_pid_init_q15(\n  arm_pid_instance_q15 * S,\n  int32_t resetStateFlag);\n\n\n  /**\n   * @brief  Reset function for the Q15 PID Control.\n   * @param[in,out] S  points to an instance of the q15 PID Control structure\n   */\n  void arm_pid_reset_q15(\n  arm_pid_instance_q15 * S);\n\n\n  /**\n   * @brief Instance structure for the floating-point Linear Interpolate function.\n   */\n  typedef struct\n  {\n    uint32_t nValues;           /**< nValues */\n    float32_t x1;               /**< x1 */\n    float32_t xSpacing;         /**< xSpacing */\n    float32_t *pYData;          /**< pointer to the table of Y values */\n  } arm_linear_interp_instance_f32;\n\n  /**\n   * @brief Instance structure for the floating-point bilinear interpolation function.\n   */\n  typedef struct\n  {\n    uint16_t numRows;   /**< number of rows in the data table. */\n    uint16_t numCols;   /**< number of columns in the data table. */\n    float32_t *pData;   /**< points to the data table. */\n  } arm_bilinear_interp_instance_f32;\n\n   /**\n   * @brief Instance structure for the Q31 bilinear interpolation function.\n   */\n  typedef struct\n  {\n    uint16_t numRows;   /**< number of rows in the data table. */\n    uint16_t numCols;   /**< number of columns in the data table. */\n    q31_t *pData;       /**< points to the data table. */\n  } arm_bilinear_interp_instance_q31;\n\n   /**\n   * @brief Instance structure for the Q15 bilinear interpolation function.\n   */\n  typedef struct\n  {\n    uint16_t numRows;   /**< number of rows in the data table. */\n    uint16_t numCols;   /**< number of columns in the data table. */\n    q15_t *pData;       /**< points to the data table. */\n  } arm_bilinear_interp_instance_q15;\n\n   /**\n   * @brief Instance structure for the Q15 bilinear interpolation function.\n   */\n  typedef struct\n  {\n    uint16_t numRows;   /**< number of rows in the data table. */\n    uint16_t numCols;   /**< number of columns in the data table. */\n    q7_t *pData;        /**< points to the data table. */\n  } arm_bilinear_interp_instance_q7;\n\n\n  /**\n   * @brief Q7 vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Floating-point vector multiplication.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_mult_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                 /**< length of the FFT. */\n    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    q15_t *pTwiddle;                 /**< points to the Sin twiddle factor table. */\n    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix2_instance_q15;\n\n/* Deprecated */\n  arm_status arm_cfft_radix2_init_q15(\n  arm_cfft_radix2_instance_q15 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix2_q15(\n  const arm_cfft_radix2_instance_q15 * S,\n  q15_t * pSrc);\n\n\n  /**\n   * @brief Instance structure for the Q15 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                 /**< length of the FFT. */\n    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    q15_t *pTwiddle;                 /**< points to the twiddle factor table. */\n    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix4_instance_q15;\n\n/* Deprecated */\n  arm_status arm_cfft_radix4_init_q15(\n  arm_cfft_radix4_instance_q15 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix4_q15(\n  const arm_cfft_radix4_instance_q15 * S,\n  q15_t * pSrc);\n\n  /**\n   * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                 /**< length of the FFT. */\n    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    q31_t *pTwiddle;                 /**< points to the Twiddle factor table. */\n    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix2_instance_q31;\n\n/* Deprecated */\n  arm_status arm_cfft_radix2_init_q31(\n  arm_cfft_radix2_instance_q31 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix2_q31(\n  const arm_cfft_radix2_instance_q31 * S,\n  q31_t * pSrc);\n\n  /**\n   * @brief Instance structure for the Q31 CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                 /**< length of the FFT. */\n    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    q31_t *pTwiddle;                 /**< points to the twiddle factor table. */\n    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */\n    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n  } arm_cfft_radix4_instance_q31;\n\n/* Deprecated */\n  void arm_cfft_radix4_q31(\n  const arm_cfft_radix4_instance_q31 * S,\n  q31_t * pSrc);\n\n/* Deprecated */\n  arm_status arm_cfft_radix4_init_q31(\n  arm_cfft_radix4_instance_q31 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the floating-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                   /**< length of the FFT. */\n    uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n    uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    float32_t *pTwiddle;               /**< points to the Twiddle factor table. */\n    uint16_t *pBitRevTable;            /**< points to the bit reversal table. */\n    uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n    float32_t onebyfftLen;             /**< value of 1/fftLen. */\n  } arm_cfft_radix2_instance_f32;\n\n/* Deprecated */\n  arm_status arm_cfft_radix2_init_f32(\n  arm_cfft_radix2_instance_f32 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix2_f32(\n  const arm_cfft_radix2_instance_f32 * S,\n  float32_t * pSrc);\n\n  /**\n   * @brief Instance structure for the floating-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                   /**< length of the FFT. */\n    uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\n    uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\n    float32_t *pTwiddle;               /**< points to the Twiddle factor table. */\n    uint16_t *pBitRevTable;            /**< points to the bit reversal table. */\n    uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\n    float32_t onebyfftLen;             /**< value of 1/fftLen. */\n  } arm_cfft_radix4_instance_f32;\n\n/* Deprecated */\n  arm_status arm_cfft_radix4_init_f32(\n  arm_cfft_radix4_instance_f32 * S,\n  uint16_t fftLen,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag);\n\n/* Deprecated */\n  void arm_cfft_radix4_f32(\n  const arm_cfft_radix4_instance_f32 * S,\n  float32_t * pSrc);\n\n  /**\n   * @brief Instance structure for the fixed-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                   /**< length of the FFT. */\n    const q15_t *pTwiddle;             /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */\n    uint16_t bitRevLength;             /**< bit reversal table length. */\n  } arm_cfft_instance_q15;\n\nvoid arm_cfft_q15(\n    const arm_cfft_instance_q15 * S,\n    q15_t * p1,\n    uint8_t ifftFlag,\n    uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the fixed-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                   /**< length of the FFT. */\n    const q31_t *pTwiddle;             /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */\n    uint16_t bitRevLength;             /**< bit reversal table length. */\n  } arm_cfft_instance_q31;\n\nvoid arm_cfft_q31(\n    const arm_cfft_instance_q31 * S,\n    q31_t * p1,\n    uint8_t ifftFlag,\n    uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the floating-point CFFT/CIFFT function.\n   */\n  typedef struct\n  {\n    uint16_t fftLen;                   /**< length of the FFT. */\n    const float32_t *pTwiddle;         /**< points to the Twiddle factor table. */\n    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */\n    uint16_t bitRevLength;             /**< bit reversal table length. */\n  } arm_cfft_instance_f32;\n\n  void arm_cfft_f32(\n  const arm_cfft_instance_f32 * S,\n  float32_t * p1,\n  uint8_t ifftFlag,\n  uint8_t bitReverseFlag);\n\n  /**\n   * @brief Instance structure for the Q15 RFFT/RIFFT function.\n   */\n  typedef struct\n  {\n    uint32_t fftLenReal;                      /**< length of the real FFT. */\n    uint8_t ifftFlagR;                        /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\n    uint8_t bitReverseFlagR;                  /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\n    uint32_t twidCoefRModifier;               /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    q15_t *pTwiddleAReal;                     /**< points to the real twiddle factor table. */\n    q15_t *pTwiddleBReal;                     /**< points to the imag twiddle factor table. */\n    const arm_cfft_instance_q15 *pCfft;       /**< points to the complex FFT instance. */\n  } arm_rfft_instance_q15;\n\n  arm_status arm_rfft_init_q15(\n  arm_rfft_instance_q15 * S,\n  uint32_t fftLenReal,\n  uint32_t ifftFlagR,\n  uint32_t bitReverseFlag);\n\n  void arm_rfft_q15(\n  const arm_rfft_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst);\n\n  /**\n   * @brief Instance structure for the Q31 RFFT/RIFFT function.\n   */\n  typedef struct\n  {\n    uint32_t fftLenReal;                        /**< length of the real FFT. */\n    uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\n    uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\n    uint32_t twidCoefRModifier;                 /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    q31_t *pTwiddleAReal;                       /**< points to the real twiddle factor table. */\n    q31_t *pTwiddleBReal;                       /**< points to the imag twiddle factor table. */\n    const arm_cfft_instance_q31 *pCfft;         /**< points to the complex FFT instance. */\n  } arm_rfft_instance_q31;\n\n  arm_status arm_rfft_init_q31(\n  arm_rfft_instance_q31 * S,\n  uint32_t fftLenReal,\n  uint32_t ifftFlagR,\n  uint32_t bitReverseFlag);\n\n  void arm_rfft_q31(\n  const arm_rfft_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst);\n\n  /**\n   * @brief Instance structure for the floating-point RFFT/RIFFT function.\n   */\n  typedef struct\n  {\n    uint32_t fftLenReal;                        /**< length of the real FFT. */\n    uint16_t fftLenBy2;                         /**< length of the complex FFT. */\n    uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\n    uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\n    uint32_t twidCoefRModifier;                     /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\n    float32_t *pTwiddleAReal;                   /**< points to the real twiddle factor table. */\n    float32_t *pTwiddleBReal;                   /**< points to the imag twiddle factor table. */\n    arm_cfft_radix4_instance_f32 *pCfft;        /**< points to the complex FFT instance. */\n  } arm_rfft_instance_f32;\n\n  arm_status arm_rfft_init_f32(\n  arm_rfft_instance_f32 * S,\n  arm_cfft_radix4_instance_f32 * S_CFFT,\n  uint32_t fftLenReal,\n  uint32_t ifftFlagR,\n  uint32_t bitReverseFlag);\n\n  void arm_rfft_f32(\n  const arm_rfft_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst);\n\n  /**\n   * @brief Instance structure for the floating-point RFFT/RIFFT function.\n   */\ntypedef struct\n  {\n    arm_cfft_instance_f32 Sint;      /**< Internal CFFT structure. */\n    uint16_t fftLenRFFT;             /**< length of the real sequence */\n    float32_t * pTwiddleRFFT;        /**< Twiddle factors real stage  */\n  } arm_rfft_fast_instance_f32 ;\n\narm_status arm_rfft_fast_init_f32 (\n   arm_rfft_fast_instance_f32 * S,\n   uint16_t fftLen);\n\nvoid arm_rfft_fast_f32(\n  arm_rfft_fast_instance_f32 * S,\n  float32_t * p, float32_t * pOut,\n  uint8_t ifftFlag);\n\n  /**\n   * @brief Instance structure for the floating-point DCT4/IDCT4 function.\n   */\n  typedef struct\n  {\n    uint16_t N;                          /**< length of the DCT4. */\n    uint16_t Nby2;                       /**< half of the length of the DCT4. */\n    float32_t normalize;                 /**< normalizing factor. */\n    float32_t *pTwiddle;                 /**< points to the twiddle factor table. */\n    float32_t *pCosFactor;               /**< points to the cosFactor table. */\n    arm_rfft_instance_f32 *pRfft;        /**< points to the real FFT instance. */\n    arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */\n  } arm_dct4_instance_f32;\n\n\n  /**\n   * @brief  Initialization function for the floating-point DCT4/IDCT4.\n   * @param[in,out] S          points to an instance of floating-point DCT4/IDCT4 structure.\n   * @param[in]     S_RFFT     points to an instance of floating-point RFFT/RIFFT structure.\n   * @param[in]     S_CFFT     points to an instance of floating-point CFFT/CIFFT structure.\n   * @param[in]     N          length of the DCT4.\n   * @param[in]     Nby2       half of the length of the DCT4.\n   * @param[in]     normalize  normalizing factor.\n   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.\n   */\n  arm_status arm_dct4_init_f32(\n  arm_dct4_instance_f32 * S,\n  arm_rfft_instance_f32 * S_RFFT,\n  arm_cfft_radix4_instance_f32 * S_CFFT,\n  uint16_t N,\n  uint16_t Nby2,\n  float32_t normalize);\n\n\n  /**\n   * @brief Processing function for the floating-point DCT4/IDCT4.\n   * @param[in]     S              points to an instance of the floating-point DCT4/IDCT4 structure.\n   * @param[in]     pState         points to state buffer.\n   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.\n   */\n  void arm_dct4_f32(\n  const arm_dct4_instance_f32 * S,\n  float32_t * pState,\n  float32_t * pInlineBuffer);\n\n\n  /**\n   * @brief Instance structure for the Q31 DCT4/IDCT4 function.\n   */\n  typedef struct\n  {\n    uint16_t N;                          /**< length of the DCT4. */\n    uint16_t Nby2;                       /**< half of the length of the DCT4. */\n    q31_t normalize;                     /**< normalizing factor. */\n    q31_t *pTwiddle;                     /**< points to the twiddle factor table. */\n    q31_t *pCosFactor;                   /**< points to the cosFactor table. */\n    arm_rfft_instance_q31 *pRfft;        /**< points to the real FFT instance. */\n    arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */\n  } arm_dct4_instance_q31;\n\n\n  /**\n   * @brief  Initialization function for the Q31 DCT4/IDCT4.\n   * @param[in,out] S          points to an instance of Q31 DCT4/IDCT4 structure.\n   * @param[in]     S_RFFT     points to an instance of Q31 RFFT/RIFFT structure\n   * @param[in]     S_CFFT     points to an instance of Q31 CFFT/CIFFT structure\n   * @param[in]     N          length of the DCT4.\n   * @param[in]     Nby2       half of the length of the DCT4.\n   * @param[in]     normalize  normalizing factor.\n   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.\n   */\n  arm_status arm_dct4_init_q31(\n  arm_dct4_instance_q31 * S,\n  arm_rfft_instance_q31 * S_RFFT,\n  arm_cfft_radix4_instance_q31 * S_CFFT,\n  uint16_t N,\n  uint16_t Nby2,\n  q31_t normalize);\n\n\n  /**\n   * @brief Processing function for the Q31 DCT4/IDCT4.\n   * @param[in]     S              points to an instance of the Q31 DCT4 structure.\n   * @param[in]     pState         points to state buffer.\n   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.\n   */\n  void arm_dct4_q31(\n  const arm_dct4_instance_q31 * S,\n  q31_t * pState,\n  q31_t * pInlineBuffer);\n\n\n  /**\n   * @brief Instance structure for the Q15 DCT4/IDCT4 function.\n   */\n  typedef struct\n  {\n    uint16_t N;                          /**< length of the DCT4. */\n    uint16_t Nby2;                       /**< half of the length of the DCT4. */\n    q15_t normalize;                     /**< normalizing factor. */\n    q15_t *pTwiddle;                     /**< points to the twiddle factor table. */\n    q15_t *pCosFactor;                   /**< points to the cosFactor table. */\n    arm_rfft_instance_q15 *pRfft;        /**< points to the real FFT instance. */\n    arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */\n  } arm_dct4_instance_q15;\n\n\n  /**\n   * @brief  Initialization function for the Q15 DCT4/IDCT4.\n   * @param[in,out] S          points to an instance of Q15 DCT4/IDCT4 structure.\n   * @param[in]     S_RFFT     points to an instance of Q15 RFFT/RIFFT structure.\n   * @param[in]     S_CFFT     points to an instance of Q15 CFFT/CIFFT structure.\n   * @param[in]     N          length of the DCT4.\n   * @param[in]     Nby2       half of the length of the DCT4.\n   * @param[in]     normalize  normalizing factor.\n   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.\n   */\n  arm_status arm_dct4_init_q15(\n  arm_dct4_instance_q15 * S,\n  arm_rfft_instance_q15 * S_RFFT,\n  arm_cfft_radix4_instance_q15 * S_CFFT,\n  uint16_t N,\n  uint16_t Nby2,\n  q15_t normalize);\n\n\n  /**\n   * @brief Processing function for the Q15 DCT4/IDCT4.\n   * @param[in]     S              points to an instance of the Q15 DCT4 structure.\n   * @param[in]     pState         points to state buffer.\n   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.\n   */\n  void arm_dct4_q15(\n  const arm_dct4_instance_q15 * S,\n  q15_t * pState,\n  q15_t * pInlineBuffer);\n\n\n  /**\n   * @brief Floating-point vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q7 vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector addition.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_add_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Floating-point vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q7 vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector subtraction.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_sub_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a floating-point vector by a scalar.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  scale      scale factor to be applied\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_scale_f32(\n  float32_t * pSrc,\n  float32_t scale,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a Q7 vector by a scalar.\n   * @param[in]  pSrc        points to the input vector\n   * @param[in]  scaleFract  fractional portion of the scale value\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to the output vector\n   * @param[in]  blockSize   number of samples in the vector\n   */\n  void arm_scale_q7(\n  q7_t * pSrc,\n  q7_t scaleFract,\n  int8_t shift,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a Q15 vector by a scalar.\n   * @param[in]  pSrc        points to the input vector\n   * @param[in]  scaleFract  fractional portion of the scale value\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to the output vector\n   * @param[in]  blockSize   number of samples in the vector\n   */\n  void arm_scale_q15(\n  q15_t * pSrc,\n  q15_t scaleFract,\n  int8_t shift,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Multiplies a Q31 vector by a scalar.\n   * @param[in]  pSrc        points to the input vector\n   * @param[in]  scaleFract  fractional portion of the scale value\n   * @param[in]  shift       number of bits to shift the result by\n   * @param[out] pDst        points to the output vector\n   * @param[in]  blockSize   number of samples in the vector\n   */\n  void arm_scale_q31(\n  q31_t * pSrc,\n  q31_t scaleFract,\n  int8_t shift,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q7 vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Floating-point vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q15 vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Q31 vector absolute value.\n   * @param[in]  pSrc       points to the input buffer\n   * @param[out] pDst       points to the output buffer\n   * @param[in]  blockSize  number of samples in each vector\n   */\n  void arm_abs_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Dot product of floating-point vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  uint32_t blockSize,\n  float32_t * result);\n\n\n  /**\n   * @brief Dot product of Q7 vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_q7(\n  q7_t * pSrcA,\n  q7_t * pSrcB,\n  uint32_t blockSize,\n  q31_t * result);\n\n\n  /**\n   * @brief Dot product of Q15 vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  uint32_t blockSize,\n  q63_t * result);\n\n\n  /**\n   * @brief Dot product of Q31 vectors.\n   * @param[in]  pSrcA      points to the first input vector\n   * @param[in]  pSrcB      points to the second input vector\n   * @param[in]  blockSize  number of samples in each vector\n   * @param[out] result     output result returned here\n   */\n  void arm_dot_prod_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  uint32_t blockSize,\n  q63_t * result);\n\n\n  /**\n   * @brief  Shifts the elements of a Q7 vector a specified number of bits.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_shift_q7(\n  q7_t * pSrc,\n  int8_t shiftBits,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Shifts the elements of a Q15 vector a specified number of bits.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_shift_q15(\n  q15_t * pSrc,\n  int8_t shiftBits,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Shifts the elements of a Q31 vector a specified number of bits.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_shift_q31(\n  q31_t * pSrc,\n  int8_t shiftBits,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a floating-point vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_f32(\n  float32_t * pSrc,\n  float32_t offset,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a Q7 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_q7(\n  q7_t * pSrc,\n  q7_t offset,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a Q15 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_q15(\n  q15_t * pSrc,\n  q15_t offset,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Adds a constant offset to a Q31 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[in]  offset     is the offset to be added\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_offset_q31(\n  q31_t * pSrc,\n  q31_t offset,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a floating-point vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a Q7 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a Q15 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Negates the elements of a Q31 vector.\n   * @param[in]  pSrc       points to the input vector\n   * @param[out] pDst       points to the output vector\n   * @param[in]  blockSize  number of samples in the vector\n   */\n  void arm_negate_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a floating-point vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a Q7 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_q7(\n  q7_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a Q15 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Copies the elements of a Q31 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_copy_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a floating-point vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_f32(\n  float32_t value,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a Q7 vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_q7(\n  q7_t value,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a Q15 vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_q15(\n  q15_t value,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Fills a constant value into a Q31 vector.\n   * @param[in]  value      input value to be filled\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_fill_q31(\n  q31_t value,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n/**\n * @brief Convolution of floating-point sequences.\n * @param[in]  pSrcA    points to the first input sequence.\n * @param[in]  srcALen  length of the first input sequence.\n * @param[in]  pSrcB    points to the second input sequence.\n * @param[in]  srcBLen  length of the second input sequence.\n * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.\n */\n  void arm_conv_f32(\n  float32_t * pSrcA,\n  uint32_t srcALen,\n  float32_t * pSrcB,\n  uint32_t srcBLen,\n  float32_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q15 sequences.\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.\n   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).\n   */\n  void arm_conv_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\n\n/**\n * @brief Convolution of Q15 sequences.\n * @param[in]  pSrcA    points to the first input sequence.\n * @param[in]  srcALen  length of the first input sequence.\n * @param[in]  pSrcB    points to the second input sequence.\n * @param[in]  srcBLen  length of the second input sequence.\n * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.\n */\n  void arm_conv_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_fast_q15(\n          q15_t * pSrcA,\n          uint32_t srcALen,\n          q15_t * pSrcB,\n          uint32_t srcBLen,\n          q15_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.\n   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).\n   */\n  void arm_conv_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\n\n  /**\n   * @brief Convolution of Q31 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\n\n  /**\n   * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\n\n    /**\n   * @brief Convolution of Q7 sequences.\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.\n   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n   */\n  void arm_conv_opt_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\n\n  /**\n   * @brief Convolution of Q7 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.\n   */\n  void arm_conv_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst);\n\n\n  /**\n   * @brief Partial convolution of floating-point sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_f32(\n  float32_t * pSrcA,\n  uint32_t srcALen,\n  float32_t * pSrcB,\n  uint32_t srcBLen,\n  float32_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\n\n  /**\n   * @brief Partial convolution of Q31 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n\n  /**\n   * @brief Partial convolution of Q7 sequences\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @param[in]  pScratch1   points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2   points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_opt_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\n\n/**\n   * @brief Partial convolution of Q7 sequences.\n   * @param[in]  pSrcA       points to the first input sequence.\n   * @param[in]  srcALen     length of the first input sequence.\n   * @param[in]  pSrcB       points to the second input sequence.\n   * @param[in]  srcBLen     length of the second input sequence.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  firstIndex  is the first output sample to start with.\n   * @param[in]  numPoints   is the number of output points to be computed.\n   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\n   */\n  arm_status arm_conv_partial_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst,\n  uint32_t firstIndex,\n  uint32_t numPoints);\n\n\n  /**\n   * @brief Instance structure for the Q15 FIR decimator.\n   */\n  typedef struct\n  {\n    uint8_t M;                  /**< decimation factor. */\n    uint16_t numTaps;           /**< number of coefficients in the filter. */\n    q15_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/\n    q15_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n  } arm_fir_decimate_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR decimator.\n   */\n  typedef struct\n  {\n    uint8_t M;                  /**< decimation factor. */\n    uint16_t numTaps;           /**< number of coefficients in the filter. */\n    q31_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/\n    q31_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n  } arm_fir_decimate_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point FIR decimator.\n   */\n  typedef struct\n  {\n    uint8_t M;                  /**< decimation factor. */\n    uint16_t numTaps;           /**< number of coefficients in the filter. */\n    float32_t *pCoeffs;         /**< points to the coefficient array. The array is of length numTaps.*/\n    float32_t *pState;          /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n  } arm_fir_decimate_instance_f32;\n\n\n  /**\n   * @brief Processing function for the floating-point FIR decimator.\n   * @param[in]  S          points to an instance of the floating-point FIR decimator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_decimate_f32(\n  const arm_fir_decimate_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point FIR decimator.\n   * @param[in,out] S          points to an instance of the floating-point FIR decimator structure.\n   * @param[in]     numTaps    number of coefficients in the filter.\n   * @param[in]     M          decimation factor.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * <code>blockSize</code> is not a multiple of <code>M</code>.\n   */\n  arm_status arm_fir_decimate_init_f32(\n  arm_fir_decimate_instance_f32 * S,\n  uint16_t numTaps,\n  uint8_t M,\n  float32_t * pCoeffs,\n  float32_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 FIR decimator.\n   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_decimate_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_decimate_fast_q15(\n  const arm_fir_decimate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 FIR decimator.\n   * @param[in,out] S          points to an instance of the Q15 FIR decimator structure.\n   * @param[in]     numTaps    number of coefficients in the filter.\n   * @param[in]     M          decimation factor.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * <code>blockSize</code> is not a multiple of <code>M</code>.\n   */\n  arm_status arm_fir_decimate_init_q15(\n  arm_fir_decimate_instance_q15 * S,\n  uint16_t numTaps,\n  uint8_t M,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 FIR decimator.\n   * @param[in]  S     points to an instance of the Q31 FIR decimator structure.\n   * @param[in]  pSrc  points to the block of input data.\n   * @param[out] pDst  points to the block of output data\n   * @param[in] blockSize number of input samples to process per call.\n   */\n  void arm_fir_decimate_q31(\n  const arm_fir_decimate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n  /**\n   * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.\n   * @param[in]  S          points to an instance of the Q31 FIR decimator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_decimate_fast_q31(\n  arm_fir_decimate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 FIR decimator.\n   * @param[in,out] S          points to an instance of the Q31 FIR decimator structure.\n   * @param[in]     numTaps    number of coefficients in the filter.\n   * @param[in]     M          decimation factor.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * <code>blockSize</code> is not a multiple of <code>M</code>.\n   */\n  arm_status arm_fir_decimate_init_q31(\n  arm_fir_decimate_instance_q31 * S,\n  uint16_t numTaps,\n  uint8_t M,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 FIR interpolator.\n   */\n  typedef struct\n  {\n    uint8_t L;                      /**< upsample factor. */\n    uint16_t phaseLength;           /**< length of each polyphase filter component. */\n    q15_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */\n    q15_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */\n  } arm_fir_interpolate_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR interpolator.\n   */\n  typedef struct\n  {\n    uint8_t L;                      /**< upsample factor. */\n    uint16_t phaseLength;           /**< length of each polyphase filter component. */\n    q31_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */\n    q31_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */\n  } arm_fir_interpolate_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point FIR interpolator.\n   */\n  typedef struct\n  {\n    uint8_t L;                     /**< upsample factor. */\n    uint16_t phaseLength;          /**< length of each polyphase filter component. */\n    float32_t *pCoeffs;            /**< points to the coefficient array. The array is of length L*phaseLength. */\n    float32_t *pState;             /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */\n  } arm_fir_interpolate_instance_f32;\n\n\n  /**\n   * @brief Processing function for the Q15 FIR interpolator.\n   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_interpolate_q15(\n  const arm_fir_interpolate_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 FIR interpolator.\n   * @param[in,out] S          points to an instance of the Q15 FIR interpolator structure.\n   * @param[in]     L          upsample factor.\n   * @param[in]     numTaps    number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficient buffer.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\n   */\n  arm_status arm_fir_interpolate_init_q15(\n  arm_fir_interpolate_instance_q15 * S,\n  uint8_t L,\n  uint16_t numTaps,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 FIR interpolator.\n   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_interpolate_q31(\n  const arm_fir_interpolate_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 FIR interpolator.\n   * @param[in,out] S          points to an instance of the Q31 FIR interpolator structure.\n   * @param[in]     L          upsample factor.\n   * @param[in]     numTaps    number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficient buffer.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\n   */\n  arm_status arm_fir_interpolate_init_q31(\n  arm_fir_interpolate_instance_q31 * S,\n  uint8_t L,\n  uint16_t numTaps,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the floating-point FIR interpolator.\n   * @param[in]  S          points to an instance of the floating-point FIR interpolator structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of input samples to process per call.\n   */\n  void arm_fir_interpolate_f32(\n  const arm_fir_interpolate_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point FIR interpolator.\n   * @param[in,out] S          points to an instance of the floating-point FIR interpolator structure.\n   * @param[in]     L          upsample factor.\n   * @param[in]     numTaps    number of filter coefficients in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficient buffer.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     blockSize  number of input samples to process per call.\n   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\n   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\n   */\n  arm_status arm_fir_interpolate_init_f32(\n  arm_fir_interpolate_instance_f32 * S,\n  uint8_t L,\n  uint16_t numTaps,\n  float32_t * pCoeffs,\n  float32_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the high precision Q31 Biquad cascade filter.\n   */\n  typedef struct\n  {\n    uint8_t numStages;       /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n    q63_t *pState;           /**< points to the array of state coefficients.  The array is of length 4*numStages. */\n    q31_t *pCoeffs;          /**< points to the array of coefficients.  The array is of length 5*numStages. */\n    uint8_t postShift;       /**< additional shift, in bits, applied to each output sample. */\n  } arm_biquad_cas_df1_32x64_ins_q31;\n\n\n  /**\n   * @param[in]  S          points to an instance of the high precision Q31 Biquad cascade filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cas_df1_32x64_q31(\n  const arm_biquad_cas_df1_32x64_ins_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @param[in,out] S          points to an instance of the high precision Q31 Biquad cascade filter structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     postShift  shift to be applied to the output. Varies according to the coefficients format\n   */\n  void arm_biquad_cas_df1_32x64_init_q31(\n  arm_biquad_cas_df1_32x64_ins_q31 * S,\n  uint8_t numStages,\n  q31_t * pCoeffs,\n  q63_t * pState,\n  uint8_t postShift);\n\n\n  /**\n   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.\n   */\n  typedef struct\n  {\n    uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n    float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */\n    float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_cascade_df2T_instance_f32;\n\n  /**\n   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.\n   */\n  typedef struct\n  {\n    uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n    float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 4*numStages. */\n    float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_cascade_stereo_df2T_instance_f32;\n\n  /**\n   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.\n   */\n  typedef struct\n  {\n    uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\n    float64_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */\n    float64_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */\n  } arm_biquad_cascade_df2T_instance_f64;\n\n\n  /**\n   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in]  S          points to an instance of the filter data structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df2T_f32(\n  const arm_biquad_cascade_df2T_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels\n   * @param[in]  S          points to an instance of the filter data structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_stereo_df2T_f32(\n  const arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in]  S          points to an instance of the filter data structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_biquad_cascade_df2T_f64(\n  const arm_biquad_cascade_df2T_instance_f64 * S,\n  float64_t * pSrc,\n  float64_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the filter data structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_df2T_init_f32(\n  arm_biquad_cascade_df2T_instance_f32 * S,\n  uint8_t numStages,\n  float32_t * pCoeffs,\n  float32_t * pState);\n\n\n  /**\n   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the filter data structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_stereo_df2T_init_f32(\n  arm_biquad_cascade_stereo_df2T_instance_f32 * S,\n  uint8_t numStages,\n  float32_t * pCoeffs,\n  float32_t * pState);\n\n\n  /**\n   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.\n   * @param[in,out] S          points to an instance of the filter data structure.\n   * @param[in]     numStages  number of 2nd order stages in the filter.\n   * @param[in]     pCoeffs    points to the filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   */\n  void arm_biquad_cascade_df2T_init_f64(\n  arm_biquad_cascade_df2T_instance_f64 * S,\n  uint8_t numStages,\n  float64_t * pCoeffs,\n  float64_t * pState);\n\n\n  /**\n   * @brief Instance structure for the Q15 FIR lattice filter.\n   */\n  typedef struct\n  {\n    uint16_t numStages;                  /**< number of filter stages. */\n    q15_t *pState;                       /**< points to the state variable array. The array is of length numStages. */\n    q15_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */\n  } arm_fir_lattice_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 FIR lattice filter.\n   */\n  typedef struct\n  {\n    uint16_t numStages;                  /**< number of filter stages. */\n    q31_t *pState;                       /**< points to the state variable array. The array is of length numStages. */\n    q31_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */\n  } arm_fir_lattice_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point FIR lattice filter.\n   */\n  typedef struct\n  {\n    uint16_t numStages;                  /**< number of filter stages. */\n    float32_t *pState;                   /**< points to the state variable array. The array is of length numStages. */\n    float32_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numStages. */\n  } arm_fir_lattice_instance_f32;\n\n\n  /**\n   * @brief Initialization function for the Q15 FIR lattice filter.\n   * @param[in] S          points to an instance of the Q15 FIR lattice structure.\n   * @param[in] numStages  number of filter stages.\n   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.\n   * @param[in] pState     points to the state buffer.  The array is of length numStages.\n   */\n  void arm_fir_lattice_init_q15(\n  arm_fir_lattice_instance_q15 * S,\n  uint16_t numStages,\n  q15_t * pCoeffs,\n  q15_t * pState);\n\n\n  /**\n   * @brief Processing function for the Q15 FIR lattice filter.\n   * @param[in]  S          points to an instance of the Q15 FIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_lattice_q15(\n  const arm_fir_lattice_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for the Q31 FIR lattice filter.\n   * @param[in] S          points to an instance of the Q31 FIR lattice structure.\n   * @param[in] numStages  number of filter stages.\n   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.\n   * @param[in] pState     points to the state buffer.   The array is of length numStages.\n   */\n  void arm_fir_lattice_init_q31(\n  arm_fir_lattice_instance_q31 * S,\n  uint16_t numStages,\n  q31_t * pCoeffs,\n  q31_t * pState);\n\n\n  /**\n   * @brief Processing function for the Q31 FIR lattice filter.\n   * @param[in]  S          points to an instance of the Q31 FIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_lattice_q31(\n  const arm_fir_lattice_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n/**\n * @brief Initialization function for the floating-point FIR lattice filter.\n * @param[in] S          points to an instance of the floating-point FIR lattice structure.\n * @param[in] numStages  number of filter stages.\n * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.\n * @param[in] pState     points to the state buffer.  The array is of length numStages.\n */\n  void arm_fir_lattice_init_f32(\n  arm_fir_lattice_instance_f32 * S,\n  uint16_t numStages,\n  float32_t * pCoeffs,\n  float32_t * pState);\n\n\n  /**\n   * @brief Processing function for the floating-point FIR lattice filter.\n   * @param[in]  S          points to an instance of the floating-point FIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_fir_lattice_f32(\n  const arm_fir_lattice_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 IIR lattice filter.\n   */\n  typedef struct\n  {\n    uint16_t numStages;                  /**< number of stages in the filter. */\n    q15_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */\n    q15_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */\n    q15_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */\n  } arm_iir_lattice_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q31 IIR lattice filter.\n   */\n  typedef struct\n  {\n    uint16_t numStages;                  /**< number of stages in the filter. */\n    q31_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */\n    q31_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */\n    q31_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */\n  } arm_iir_lattice_instance_q31;\n\n  /**\n   * @brief Instance structure for the floating-point IIR lattice filter.\n   */\n  typedef struct\n  {\n    uint16_t numStages;                  /**< number of stages in the filter. */\n    float32_t *pState;                   /**< points to the state variable array. The array is of length numStages+blockSize. */\n    float32_t *pkCoeffs;                 /**< points to the reflection coefficient array. The array is of length numStages. */\n    float32_t *pvCoeffs;                 /**< points to the ladder coefficient array. The array is of length numStages+1. */\n  } arm_iir_lattice_instance_f32;\n\n\n  /**\n   * @brief Processing function for the floating-point IIR lattice filter.\n   * @param[in]  S          points to an instance of the floating-point IIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_f32(\n  const arm_iir_lattice_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for the floating-point IIR lattice filter.\n   * @param[in] S          points to an instance of the floating-point IIR lattice structure.\n   * @param[in] numStages  number of stages in the filter.\n   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.\n   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.\n   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize-1.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_init_f32(\n  arm_iir_lattice_instance_f32 * S,\n  uint16_t numStages,\n  float32_t * pkCoeffs,\n  float32_t * pvCoeffs,\n  float32_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 IIR lattice filter.\n   * @param[in]  S          points to an instance of the Q31 IIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_q31(\n  const arm_iir_lattice_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for the Q31 IIR lattice filter.\n   * @param[in] S          points to an instance of the Q31 IIR lattice structure.\n   * @param[in] numStages  number of stages in the filter.\n   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.\n   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.\n   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_init_q31(\n  arm_iir_lattice_instance_q31 * S,\n  uint16_t numStages,\n  q31_t * pkCoeffs,\n  q31_t * pvCoeffs,\n  q31_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 IIR lattice filter.\n   * @param[in]  S          points to an instance of the Q15 IIR lattice structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[out] pDst       points to the block of output data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_iir_lattice_q15(\n  const arm_iir_lattice_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n/**\n * @brief Initialization function for the Q15 IIR lattice filter.\n * @param[in] S          points to an instance of the fixed-point Q15 IIR lattice structure.\n * @param[in] numStages  number of stages in the filter.\n * @param[in] pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages.\n * @param[in] pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1.\n * @param[in] pState     points to state buffer.  The array is of length numStages+blockSize.\n * @param[in] blockSize  number of samples to process per call.\n */\n  void arm_iir_lattice_init_q15(\n  arm_iir_lattice_instance_q15 * S,\n  uint16_t numStages,\n  q15_t * pkCoeffs,\n  q15_t * pvCoeffs,\n  q15_t * pState,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the floating-point LMS filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;    /**< number of coefficients in the filter. */\n    float32_t *pState;   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    float32_t *pCoeffs;  /**< points to the coefficient array. The array is of length numTaps. */\n    float32_t mu;        /**< step size that controls filter coefficient updates. */\n  } arm_lms_instance_f32;\n\n\n  /**\n   * @brief Processing function for floating-point LMS filter.\n   * @param[in]  S          points to an instance of the floating-point LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_f32(\n  const arm_lms_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for floating-point LMS filter.\n   * @param[in] S          points to an instance of the floating-point LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to the coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_lms_init_f32(\n  arm_lms_instance_f32 * S,\n  uint16_t numTaps,\n  float32_t * pCoeffs,\n  float32_t * pState,\n  float32_t mu,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q15 LMS filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;    /**< number of coefficients in the filter. */\n    q15_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    q15_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */\n    q15_t mu;            /**< step size that controls filter coefficient updates. */\n    uint32_t postShift;  /**< bit shift applied to coefficients. */\n  } arm_lms_instance_q15;\n\n\n  /**\n   * @brief Initialization function for the Q15 LMS filter.\n   * @param[in] S          points to an instance of the Q15 LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to the coefficient buffer.\n   * @param[in] pState     points to the state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_init_q15(\n  arm_lms_instance_q15 * S,\n  uint16_t numTaps,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  q15_t mu,\n  uint32_t blockSize,\n  uint32_t postShift);\n\n\n  /**\n   * @brief Processing function for Q15 LMS filter.\n   * @param[in]  S          points to an instance of the Q15 LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_q15(\n  const arm_lms_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pRef,\n  q15_t * pOut,\n  q15_t * pErr,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q31 LMS filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;    /**< number of coefficients in the filter. */\n    q31_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    q31_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */\n    q31_t mu;            /**< step size that controls filter coefficient updates. */\n    uint32_t postShift;  /**< bit shift applied to coefficients. */\n  } arm_lms_instance_q31;\n\n\n  /**\n   * @brief Processing function for Q31 LMS filter.\n   * @param[in]  S          points to an instance of the Q15 LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_q31(\n  const arm_lms_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pRef,\n  q31_t * pOut,\n  q31_t * pErr,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for Q31 LMS filter.\n   * @param[in] S          points to an instance of the Q31 LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_init_q31(\n  arm_lms_instance_q31 * S,\n  uint16_t numTaps,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  q31_t mu,\n  uint32_t blockSize,\n  uint32_t postShift);\n\n\n  /**\n   * @brief Instance structure for the floating-point normalized LMS filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;     /**< number of coefficients in the filter. */\n    float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */\n    float32_t mu;         /**< step size that control filter coefficient updates. */\n    float32_t energy;     /**< saves previous frame energy. */\n    float32_t x0;         /**< saves previous input sample. */\n  } arm_lms_norm_instance_f32;\n\n\n  /**\n   * @brief Processing function for floating-point normalized LMS filter.\n   * @param[in]  S          points to an instance of the floating-point normalized LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_norm_f32(\n  arm_lms_norm_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pRef,\n  float32_t * pOut,\n  float32_t * pErr,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for floating-point normalized LMS filter.\n   * @param[in] S          points to an instance of the floating-point LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   */\n  void arm_lms_norm_init_f32(\n  arm_lms_norm_instance_f32 * S,\n  uint16_t numTaps,\n  float32_t * pCoeffs,\n  float32_t * pState,\n  float32_t mu,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Instance structure for the Q31 normalized LMS filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;     /**< number of coefficients in the filter. */\n    q31_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    q31_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */\n    q31_t mu;             /**< step size that controls filter coefficient updates. */\n    uint8_t postShift;    /**< bit shift applied to coefficients. */\n    q31_t *recipTable;    /**< points to the reciprocal initial value table. */\n    q31_t energy;         /**< saves previous frame energy. */\n    q31_t x0;             /**< saves previous input sample. */\n  } arm_lms_norm_instance_q31;\n\n\n  /**\n   * @brief Processing function for Q31 normalized LMS filter.\n   * @param[in]  S          points to an instance of the Q31 normalized LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_norm_q31(\n  arm_lms_norm_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pRef,\n  q31_t * pOut,\n  q31_t * pErr,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for Q31 normalized LMS filter.\n   * @param[in] S          points to an instance of the Q31 normalized LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_norm_init_q31(\n  arm_lms_norm_instance_q31 * S,\n  uint16_t numTaps,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  q31_t mu,\n  uint32_t blockSize,\n  uint8_t postShift);\n\n\n  /**\n   * @brief Instance structure for the Q15 normalized LMS filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;     /**< Number of coefficients in the filter. */\n    q15_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\n    q15_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */\n    q15_t mu;             /**< step size that controls filter coefficient updates. */\n    uint8_t postShift;    /**< bit shift applied to coefficients. */\n    q15_t *recipTable;    /**< Points to the reciprocal initial value table. */\n    q15_t energy;         /**< saves previous frame energy. */\n    q15_t x0;             /**< saves previous input sample. */\n  } arm_lms_norm_instance_q15;\n\n\n  /**\n   * @brief Processing function for Q15 normalized LMS filter.\n   * @param[in]  S          points to an instance of the Q15 normalized LMS filter structure.\n   * @param[in]  pSrc       points to the block of input data.\n   * @param[in]  pRef       points to the block of reference data.\n   * @param[out] pOut       points to the block of output data.\n   * @param[out] pErr       points to the block of error data.\n   * @param[in]  blockSize  number of samples to process.\n   */\n  void arm_lms_norm_q15(\n  arm_lms_norm_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pRef,\n  q15_t * pOut,\n  q15_t * pErr,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Initialization function for Q15 normalized LMS filter.\n   * @param[in] S          points to an instance of the Q15 normalized LMS filter structure.\n   * @param[in] numTaps    number of filter coefficients.\n   * @param[in] pCoeffs    points to coefficient buffer.\n   * @param[in] pState     points to state buffer.\n   * @param[in] mu         step size that controls filter coefficient updates.\n   * @param[in] blockSize  number of samples to process.\n   * @param[in] postShift  bit shift applied to coefficients.\n   */\n  void arm_lms_norm_init_q15(\n  arm_lms_norm_instance_q15 * S,\n  uint16_t numTaps,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  q15_t mu,\n  uint32_t blockSize,\n  uint8_t postShift);\n\n\n  /**\n   * @brief Correlation of floating-point sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n  void arm_correlate_f32(\n  float32_t * pSrcA,\n  uint32_t srcALen,\n  float32_t * pSrcB,\n  uint32_t srcBLen,\n  float32_t * pDst);\n\n\n   /**\n   * @brief Correlation of Q15 sequences\n   * @param[in]  pSrcA     points to the first input sequence.\n   * @param[in]  srcALen   length of the first input sequence.\n   * @param[in]  pSrcB     points to the second input sequence.\n   * @param[in]  srcBLen   length of the second input sequence.\n   * @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   * @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   */\n  void arm_correlate_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch);\n\n\n  /**\n   * @brief Correlation of Q15 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n\n  void arm_correlate_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst);\n\n\n  /**\n   * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n\n  void arm_correlate_fast_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst);\n\n\n  /**\n   * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.\n   * @param[in]  pSrcA     points to the first input sequence.\n   * @param[in]  srcALen   length of the first input sequence.\n   * @param[in]  pSrcB     points to the second input sequence.\n   * @param[in]  srcBLen   length of the second input sequence.\n   * @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   * @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   */\n  void arm_correlate_fast_opt_q15(\n  q15_t * pSrcA,\n  uint32_t srcALen,\n  q15_t * pSrcB,\n  uint32_t srcBLen,\n  q15_t * pDst,\n  q15_t * pScratch);\n\n\n  /**\n   * @brief Correlation of Q31 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n  void arm_correlate_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\n\n  /**\n   * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n  void arm_correlate_fast_q31(\n  q31_t * pSrcA,\n  uint32_t srcALen,\n  q31_t * pSrcB,\n  uint32_t srcBLen,\n  q31_t * pDst);\n\n\n /**\n   * @brief Correlation of Q7 sequences.\n   * @param[in]  pSrcA      points to the first input sequence.\n   * @param[in]  srcALen    length of the first input sequence.\n   * @param[in]  pSrcB      points to the second input sequence.\n   * @param[in]  srcBLen    length of the second input sequence.\n   * @param[out] pDst       points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.\n   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).\n   */\n  void arm_correlate_opt_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst,\n  q15_t * pScratch1,\n  q15_t * pScratch2);\n\n\n  /**\n   * @brief Correlation of Q7 sequences.\n   * @param[in]  pSrcA    points to the first input sequence.\n   * @param[in]  srcALen  length of the first input sequence.\n   * @param[in]  pSrcB    points to the second input sequence.\n   * @param[in]  srcBLen  length of the second input sequence.\n   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\n   */\n  void arm_correlate_q7(\n  q7_t * pSrcA,\n  uint32_t srcALen,\n  q7_t * pSrcB,\n  uint32_t srcBLen,\n  q7_t * pDst);\n\n\n  /**\n   * @brief Instance structure for the floating-point sparse FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;             /**< number of coefficients in the filter. */\n    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n    float32_t *pState;            /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    float32_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\n    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_f32;\n\n  /**\n   * @brief Instance structure for the Q31 sparse FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;             /**< number of coefficients in the filter. */\n    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n    q31_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    q31_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/\n    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_q31;\n\n  /**\n   * @brief Instance structure for the Q15 sparse FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;             /**< number of coefficients in the filter. */\n    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n    q15_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    q15_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/\n    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_q15;\n\n  /**\n   * @brief Instance structure for the Q7 sparse FIR filter.\n   */\n  typedef struct\n  {\n    uint16_t numTaps;             /**< number of coefficients in the filter. */\n    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\n    q7_t *pState;                 /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\n    q7_t *pCoeffs;                /**< points to the coefficient array. The array is of length numTaps.*/\n    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\n    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\n  } arm_fir_sparse_instance_q7;\n\n\n  /**\n   * @brief Processing function for the floating-point sparse FIR filter.\n   * @param[in]  S           points to an instance of the floating-point sparse FIR structure.\n   * @param[in]  pSrc        points to the block of input data.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize   number of input samples to process per call.\n   */\n  void arm_fir_sparse_f32(\n  arm_fir_sparse_instance_f32 * S,\n  float32_t * pSrc,\n  float32_t * pDst,\n  float32_t * pScratchIn,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the floating-point sparse FIR filter.\n   * @param[in,out] S          points to an instance of the floating-point sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_f32(\n  arm_fir_sparse_instance_f32 * S,\n  uint16_t numTaps,\n  float32_t * pCoeffs,\n  float32_t * pState,\n  int32_t * pTapDelay,\n  uint16_t maxDelay,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q31 sparse FIR filter.\n   * @param[in]  S           points to an instance of the Q31 sparse FIR structure.\n   * @param[in]  pSrc        points to the block of input data.\n   * @param[out] pDst        points to the block of output data\n   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize   number of input samples to process per call.\n   */\n  void arm_fir_sparse_q31(\n  arm_fir_sparse_instance_q31 * S,\n  q31_t * pSrc,\n  q31_t * pDst,\n  q31_t * pScratchIn,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q31 sparse FIR filter.\n   * @param[in,out] S          points to an instance of the Q31 sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_q31(\n  arm_fir_sparse_instance_q31 * S,\n  uint16_t numTaps,\n  q31_t * pCoeffs,\n  q31_t * pState,\n  int32_t * pTapDelay,\n  uint16_t maxDelay,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q15 sparse FIR filter.\n   * @param[in]  S            points to an instance of the Q15 sparse FIR structure.\n   * @param[in]  pSrc         points to the block of input data.\n   * @param[out] pDst         points to the block of output data\n   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.\n   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize    number of input samples to process per call.\n   */\n  void arm_fir_sparse_q15(\n  arm_fir_sparse_instance_q15 * S,\n  q15_t * pSrc,\n  q15_t * pDst,\n  q15_t * pScratchIn,\n  q31_t * pScratchOut,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q15 sparse FIR filter.\n   * @param[in,out] S          points to an instance of the Q15 sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_q15(\n  arm_fir_sparse_instance_q15 * S,\n  uint16_t numTaps,\n  q15_t * pCoeffs,\n  q15_t * pState,\n  int32_t * pTapDelay,\n  uint16_t maxDelay,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Processing function for the Q7 sparse FIR filter.\n   * @param[in]  S            points to an instance of the Q7 sparse FIR structure.\n   * @param[in]  pSrc         points to the block of input data.\n   * @param[out] pDst         points to the block of output data\n   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.\n   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.\n   * @param[in]  blockSize    number of input samples to process per call.\n   */\n  void arm_fir_sparse_q7(\n  arm_fir_sparse_instance_q7 * S,\n  q7_t * pSrc,\n  q7_t * pDst,\n  q7_t * pScratchIn,\n  q31_t * pScratchOut,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Initialization function for the Q7 sparse FIR filter.\n   * @param[in,out] S          points to an instance of the Q7 sparse FIR structure.\n   * @param[in]     numTaps    number of nonzero coefficients in the filter.\n   * @param[in]     pCoeffs    points to the array of filter coefficients.\n   * @param[in]     pState     points to the state buffer.\n   * @param[in]     pTapDelay  points to the array of offset times.\n   * @param[in]     maxDelay   maximum offset time supported.\n   * @param[in]     blockSize  number of samples that will be processed per block.\n   */\n  void arm_fir_sparse_init_q7(\n  arm_fir_sparse_instance_q7 * S,\n  uint16_t numTaps,\n  q7_t * pCoeffs,\n  q7_t * pState,\n  int32_t * pTapDelay,\n  uint16_t maxDelay,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Floating-point sin_cos function.\n   * @param[in]  theta   input value in degrees\n   * @param[out] pSinVal  points to the processed sine output.\n   * @param[out] pCosVal  points to the processed cos output.\n   */\n  void arm_sin_cos_f32(\n  float32_t theta,\n  float32_t * pSinVal,\n  float32_t * pCosVal);\n\n\n  /**\n   * @brief  Q31 sin_cos function.\n   * @param[in]  theta    scaled input value in degrees\n   * @param[out] pSinVal  points to the processed sine output.\n   * @param[out] pCosVal  points to the processed cosine output.\n   */\n  void arm_sin_cos_q31(\n  q31_t theta,\n  q31_t * pSinVal,\n  q31_t * pCosVal);\n\n\n  /**\n   * @brief  Floating-point complex conjugate.\n   * @param[in]  pSrc        points to the input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_conj_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples);\n\n  /**\n   * @brief  Q31 complex conjugate.\n   * @param[in]  pSrc        points to the input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_conj_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex conjugate.\n   * @param[in]  pSrc        points to the input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_conj_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Floating-point complex magnitude squared\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_squared_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex magnitude squared\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_squared_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex magnitude squared\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_squared_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples);\n\n\n /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup PID PID Motor Control\n   *\n   * A Proportional Integral Derivative (PID) controller is a generic feedback control\n   * loop mechanism widely used in industrial control systems.\n   * A PID controller is the most commonly used type of feedback controller.\n   *\n   * This set of functions implements (PID) controllers\n   * for Q15, Q31, and floating-point data types.  The functions operate on a single sample\n   * of data and each call to the function returns a single processed value.\n   * <code>S</code> points to an instance of the PID control data structure.  <code>in</code>\n   * is the input sample value. The functions return the output value.\n   *\n   * \\par Algorithm:\n   * <pre>\n   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]\n   *    A0 = Kp + Ki + Kd\n   *    A1 = (-Kp ) - (2 * Kd )\n   *    A2 = Kd  </pre>\n   *\n   * \\par\n   * where \\c Kp is proportional constant, \\c Ki is Integral constant and \\c Kd is Derivative constant\n   *\n   * \\par\n   * \\image html PID.gif \"Proportional Integral Derivative Controller\"\n   *\n   * \\par\n   * The PID controller calculates an \"error\" value as the difference between\n   * the measured output and the reference input.\n   * The controller attempts to minimize the error by adjusting the process control inputs.\n   * The proportional value determines the reaction to the current error,\n   * the integral value determines the reaction based on the sum of recent errors,\n   * and the derivative value determines the reaction based on the rate at which the error has been changing.\n   *\n   * \\par Instance Structure\n   * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure.\n   * A separate instance structure must be defined for each PID Controller.\n   * There are separate instance structure declarations for each of the 3 supported data types.\n   *\n   * \\par Reset Functions\n   * There is also an associated reset function for each data type which clears the state array.\n   *\n   * \\par Initialization Functions\n   * There is also an associated initialization function for each data type.\n   * The initialization function performs the following operations:\n   * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains.\n   * - Zeros out the values in the state buffer.\n   *\n   * \\par\n   * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.\n   *\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the fixed-point versions of the PID Controller functions.\n   * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup PID\n   * @{\n   */\n\n  /**\n   * @brief  Process function for the floating-point PID Control.\n   * @param[in,out] S   is an instance of the floating-point PID Control structure\n   * @param[in]     in  input sample to process\n   * @return out processed output sample.\n   */\n  CMSIS_INLINE __STATIC_INLINE float32_t arm_pid_f32(\n  arm_pid_instance_f32 * S,\n  float32_t in)\n  {\n    float32_t out;\n\n    /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]  */\n    out = (S->A0 * in) +\n      (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]);\n\n    /* Update state */\n    S->state[1] = S->state[0];\n    S->state[0] = in;\n    S->state[2] = out;\n\n    /* return to application */\n    return (out);\n\n  }\n\n  /**\n   * @brief  Process function for the Q31 PID Control.\n   * @param[in,out] S  points to an instance of the Q31 PID Control structure\n   * @param[in]     in  input sample to process\n   * @return out processed output sample.\n   *\n   * <b>Scaling and Overflow Behavior:</b>\n   * \\par\n   * The function is implemented using an internal 64-bit accumulator.\n   * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\n   * Thus, if the accumulator result overflows it wraps around rather than clip.\n   * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions.\n   * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.\n   */\n  CMSIS_INLINE __STATIC_INLINE q31_t arm_pid_q31(\n  arm_pid_instance_q31 * S,\n  q31_t in)\n  {\n    q63_t acc;\n    q31_t out;\n\n    /* acc = A0 * x[n]  */\n    acc = (q63_t) S->A0 * in;\n\n    /* acc += A1 * x[n-1] */\n    acc += (q63_t) S->A1 * S->state[0];\n\n    /* acc += A2 * x[n-2]  */\n    acc += (q63_t) S->A2 * S->state[1];\n\n    /* convert output to 1.31 format to add y[n-1] */\n    out = (q31_t) (acc >> 31U);\n\n    /* out += y[n-1] */\n    out += S->state[2];\n\n    /* Update state */\n    S->state[1] = S->state[0];\n    S->state[0] = in;\n    S->state[2] = out;\n\n    /* return to application */\n    return (out);\n  }\n\n\n  /**\n   * @brief  Process function for the Q15 PID Control.\n   * @param[in,out] S   points to an instance of the Q15 PID Control structure\n   * @param[in]     in  input sample to process\n   * @return out processed output sample.\n   *\n   * <b>Scaling and Overflow Behavior:</b>\n   * \\par\n   * The function is implemented using a 64-bit internal accumulator.\n   * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\n   * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\n   * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\n   * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\n   * Lastly, the accumulator is saturated to yield a result in 1.15 format.\n   */\n  CMSIS_INLINE __STATIC_INLINE q15_t arm_pid_q15(\n  arm_pid_instance_q15 * S,\n  q15_t in)\n  {\n    q63_t acc;\n    q15_t out;\n\n#if defined (ARM_MATH_DSP)\n    __SIMD32_TYPE *vstate;\n\n    /* Implementation of PID controller */\n\n    /* acc = A0 * x[n]  */\n    acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in);\n\n    /* acc += A1 * x[n-1] + A2 * x[n-2]  */\n    vstate = __SIMD32_CONST(S->state);\n    acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)*vstate, (uint64_t)acc);\n#else\n    /* acc = A0 * x[n]  */\n    acc = ((q31_t) S->A0) * in;\n\n    /* acc += A1 * x[n-1] + A2 * x[n-2]  */\n    acc += (q31_t) S->A1 * S->state[0];\n    acc += (q31_t) S->A2 * S->state[1];\n#endif\n\n    /* acc += y[n-1] */\n    acc += (q31_t) S->state[2] << 15;\n\n    /* saturate the output */\n    out = (q15_t) (__SSAT((acc >> 15), 16));\n\n    /* Update state */\n    S->state[1] = S->state[0];\n    S->state[0] = in;\n    S->state[2] = out;\n\n    /* return to application */\n    return (out);\n  }\n\n  /**\n   * @} end of PID group\n   */\n\n\n  /**\n   * @brief Floating-point matrix inverse.\n   * @param[in]  src   points to the instance of the input floating-point matrix structure.\n   * @param[out] dst   points to the instance of the output floating-point matrix structure.\n   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.\n   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.\n   */\n  arm_status arm_mat_inverse_f32(\n  const arm_matrix_instance_f32 * src,\n  arm_matrix_instance_f32 * dst);\n\n\n  /**\n   * @brief Floating-point matrix inverse.\n   * @param[in]  src   points to the instance of the input floating-point matrix structure.\n   * @param[out] dst   points to the instance of the output floating-point matrix structure.\n   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.\n   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.\n   */\n  arm_status arm_mat_inverse_f64(\n  const arm_matrix_instance_f64 * src,\n  arm_matrix_instance_f64 * dst);\n\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup clarke Vector Clarke Transform\n   * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.\n   * Generally the Clarke transform uses three-phase currents <code>Ia, Ib and Ic</code> to calculate currents\n   * in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>.\n   * When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below\n   * \\image html clarke.gif Stator current space vector and its components in (a,b).\n   * and <code>Ia + Ib + Ic = 0</code>, in this condition <code>Ialpha</code> and <code>Ibeta</code>\n   * can be calculated using only <code>Ia</code> and <code>Ib</code>.\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html clarkeFormula.gif\n   * where <code>Ia</code> and <code>Ib</code> are the instantaneous stator phases and\n   * <code>pIalpha</code> and <code>pIbeta</code> are the two coordinates of time invariant vector.\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Clarke transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup clarke\n   * @{\n   */\n\n  /**\n   *\n   * @brief  Floating-point Clarke transform\n   * @param[in]  Ia       input three-phase coordinate <code>a</code>\n   * @param[in]  Ib       input three-phase coordinate <code>b</code>\n   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_clarke_f32(\n  float32_t Ia,\n  float32_t Ib,\n  float32_t * pIalpha,\n  float32_t * pIbeta)\n  {\n    /* Calculate pIalpha using the equation, pIalpha = Ia */\n    *pIalpha = Ia;\n\n    /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */\n    *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);\n  }\n\n\n  /**\n   * @brief  Clarke transform for Q31 version\n   * @param[in]  Ia       input three-phase coordinate <code>a</code>\n   * @param[in]  Ib       input three-phase coordinate <code>b</code>\n   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n   *\n   * <b>Scaling and Overflow Behavior:</b>\n   * \\par\n   * The function is implemented using an internal 32-bit accumulator.\n   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n   * There is saturation on the addition, hence there is no risk of overflow.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_clarke_q31(\n  q31_t Ia,\n  q31_t Ib,\n  q31_t * pIalpha,\n  q31_t * pIbeta)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n\n    /* Calculating pIalpha from Ia by equation pIalpha = Ia */\n    *pIalpha = Ia;\n\n    /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */\n    product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);\n\n    /* Intermediate product is calculated by (2/sqrt(3) * Ib) */\n    product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);\n\n    /* pIbeta is calculated by adding the intermediate products */\n    *pIbeta = __QADD(product1, product2);\n  }\n\n  /**\n   * @} end of clarke group\n   */\n\n  /**\n   * @brief  Converts the elements of the Q7 vector to Q31 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_q7_to_q31(\n  q7_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup inv_clarke Vector Inverse Clarke Transform\n   * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html clarkeInvFormula.gif\n   * where <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and\n   * <code>Ialpha</code> and <code>Ibeta</code> are the two coordinates of time invariant vector.\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Clarke transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup inv_clarke\n   * @{\n   */\n\n   /**\n   * @brief  Floating-point Inverse Clarke transform\n   * @param[in]  Ialpha  input two-phase orthogonal vector axis alpha\n   * @param[in]  Ibeta   input two-phase orthogonal vector axis beta\n   * @param[out] pIa     points to output three-phase coordinate <code>a</code>\n   * @param[out] pIb     points to output three-phase coordinate <code>b</code>\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_inv_clarke_f32(\n  float32_t Ialpha,\n  float32_t Ibeta,\n  float32_t * pIa,\n  float32_t * pIb)\n  {\n    /* Calculating pIa from Ialpha by equation pIa = Ialpha */\n    *pIa = Ialpha;\n\n    /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */\n    *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;\n  }\n\n\n  /**\n   * @brief  Inverse Clarke transform for Q31 version\n   * @param[in]  Ialpha  input two-phase orthogonal vector axis alpha\n   * @param[in]  Ibeta   input two-phase orthogonal vector axis beta\n   * @param[out] pIa     points to output three-phase coordinate <code>a</code>\n   * @param[out] pIb     points to output three-phase coordinate <code>b</code>\n   *\n   * <b>Scaling and Overflow Behavior:</b>\n   * \\par\n   * The function is implemented using an internal 32-bit accumulator.\n   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n   * There is saturation on the subtraction, hence there is no risk of overflow.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_inv_clarke_q31(\n  q31_t Ialpha,\n  q31_t Ibeta,\n  q31_t * pIa,\n  q31_t * pIb)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n\n    /* Calculating pIa from Ialpha by equation pIa = Ialpha */\n    *pIa = Ialpha;\n\n    /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */\n    product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);\n\n    /* Intermediate product is calculated by (1/sqrt(3) * pIb) */\n    product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);\n\n    /* pIb is calculated by subtracting the products */\n    *pIb = __QSUB(product2, product1);\n  }\n\n  /**\n   * @} end of inv_clarke group\n   */\n\n  /**\n   * @brief  Converts the elements of the Q7 vector to Q15 vector.\n   * @param[in]  pSrc       input pointer\n   * @param[out] pDst       output pointer\n   * @param[in]  blockSize  number of samples to process\n   */\n  void arm_q7_to_q15(\n  q7_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup park Vector Park Transform\n   *\n   * Forward Park transform converts the input two-coordinate vector to flux and torque components.\n   * The Park transform can be used to realize the transformation of the <code>Ialpha</code> and the <code>Ibeta</code> currents\n   * from the stationary to the moving reference frame and control the spatial relationship between\n   * the stator vector current and rotor flux vector.\n   * If we consider the d axis aligned with the rotor flux, the diagram below shows the\n   * current vector and the relationship from the two reference frames:\n   * \\image html park.gif \"Stator current space vector and its component in (a,b) and in the d,q rotating reference frame\"\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html parkFormula.gif\n   * where <code>Ialpha</code> and <code>Ibeta</code> are the stator vector components,\n   * <code>pId</code> and <code>pIq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the\n   * cosine and sine values of theta (rotor flux position).\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Park transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup park\n   * @{\n   */\n\n  /**\n   * @brief Floating-point Park transform\n   * @param[in]  Ialpha  input two-phase vector coordinate alpha\n   * @param[in]  Ibeta   input two-phase vector coordinate beta\n   * @param[out] pId     points to output   rotor reference frame d\n   * @param[out] pIq     points to output   rotor reference frame q\n   * @param[in]  sinVal  sine value of rotation angle theta\n   * @param[in]  cosVal  cosine value of rotation angle theta\n   *\n   * The function implements the forward Park transform.\n   *\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_park_f32(\n  float32_t Ialpha,\n  float32_t Ibeta,\n  float32_t * pId,\n  float32_t * pIq,\n  float32_t sinVal,\n  float32_t cosVal)\n  {\n    /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */\n    *pId = Ialpha * cosVal + Ibeta * sinVal;\n\n    /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */\n    *pIq = -Ialpha * sinVal + Ibeta * cosVal;\n  }\n\n\n  /**\n   * @brief  Park transform for Q31 version\n   * @param[in]  Ialpha  input two-phase vector coordinate alpha\n   * @param[in]  Ibeta   input two-phase vector coordinate beta\n   * @param[out] pId     points to output rotor reference frame d\n   * @param[out] pIq     points to output rotor reference frame q\n   * @param[in]  sinVal  sine value of rotation angle theta\n   * @param[in]  cosVal  cosine value of rotation angle theta\n   *\n   * <b>Scaling and Overflow Behavior:</b>\n   * \\par\n   * The function is implemented using an internal 32-bit accumulator.\n   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n   * There is saturation on the addition and subtraction, hence there is no risk of overflow.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_park_q31(\n  q31_t Ialpha,\n  q31_t Ibeta,\n  q31_t * pId,\n  q31_t * pIq,\n  q31_t sinVal,\n  q31_t cosVal)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */\n\n    /* Intermediate product is calculated by (Ialpha * cosVal) */\n    product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);\n\n    /* Intermediate product is calculated by (Ibeta * sinVal) */\n    product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);\n\n\n    /* Intermediate product is calculated by (Ialpha * sinVal) */\n    product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);\n\n    /* Intermediate product is calculated by (Ibeta * cosVal) */\n    product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);\n\n    /* Calculate pId by adding the two intermediate products 1 and 2 */\n    *pId = __QADD(product1, product2);\n\n    /* Calculate pIq by subtracting the two intermediate products 3 from 4 */\n    *pIq = __QSUB(product4, product3);\n  }\n\n  /**\n   * @} end of park group\n   */\n\n  /**\n   * @brief  Converts the elements of the Q7 vector to floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q7_to_float(\n  q7_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @ingroup groupController\n   */\n\n  /**\n   * @defgroup inv_park Vector Inverse Park transform\n   * Inverse Park transform converts the input flux and torque components to two-coordinate vector.\n   *\n   * The function operates on a single sample of data and each call to the function returns the processed output.\n   * The library provides separate functions for Q31 and floating-point data types.\n   * \\par Algorithm\n   * \\image html parkInvFormula.gif\n   * where <code>pIalpha</code> and <code>pIbeta</code> are the stator vector components,\n   * <code>Id</code> and <code>Iq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the\n   * cosine and sine values of theta (rotor flux position).\n   * \\par Fixed-Point Behavior\n   * Care must be taken when using the Q31 version of the Park transform.\n   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\n   * Refer to the function specific documentation below for usage guidelines.\n   */\n\n  /**\n   * @addtogroup inv_park\n   * @{\n   */\n\n   /**\n   * @brief  Floating-point Inverse Park transform\n   * @param[in]  Id       input coordinate of rotor reference frame d\n   * @param[in]  Iq       input coordinate of rotor reference frame q\n   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n   * @param[in]  sinVal   sine value of rotation angle theta\n   * @param[in]  cosVal   cosine value of rotation angle theta\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_inv_park_f32(\n  float32_t Id,\n  float32_t Iq,\n  float32_t * pIalpha,\n  float32_t * pIbeta,\n  float32_t sinVal,\n  float32_t cosVal)\n  {\n    /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */\n    *pIalpha = Id * cosVal - Iq * sinVal;\n\n    /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */\n    *pIbeta = Id * sinVal + Iq * cosVal;\n  }\n\n\n  /**\n   * @brief  Inverse Park transform for   Q31 version\n   * @param[in]  Id       input coordinate of rotor reference frame d\n   * @param[in]  Iq       input coordinate of rotor reference frame q\n   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha\n   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta\n   * @param[in]  sinVal   sine value of rotation angle theta\n   * @param[in]  cosVal   cosine value of rotation angle theta\n   *\n   * <b>Scaling and Overflow Behavior:</b>\n   * \\par\n   * The function is implemented using an internal 32-bit accumulator.\n   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\n   * There is saturation on the addition, hence there is no risk of overflow.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_inv_park_q31(\n  q31_t Id,\n  q31_t Iq,\n  q31_t * pIalpha,\n  q31_t * pIbeta,\n  q31_t sinVal,\n  q31_t cosVal)\n  {\n    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\n    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */\n\n    /* Intermediate product is calculated by (Id * cosVal) */\n    product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31);\n\n    /* Intermediate product is calculated by (Iq * sinVal) */\n    product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);\n\n\n    /* Intermediate product is calculated by (Id * sinVal) */\n    product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31);\n\n    /* Intermediate product is calculated by (Iq * cosVal) */\n    product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);\n\n    /* Calculate pIalpha by using the two intermediate products 1 and 2 */\n    *pIalpha = __QSUB(product1, product2);\n\n    /* Calculate pIbeta by using the two intermediate products 3 and 4 */\n    *pIbeta = __QADD(product4, product3);\n  }\n\n  /**\n   * @} end of Inverse park group\n   */\n\n\n  /**\n   * @brief  Converts the elements of the Q31 vector to floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q31_to_float(\n  q31_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n  /**\n   * @ingroup groupInterpolation\n   */\n\n  /**\n   * @defgroup LinearInterpolate Linear Interpolation\n   *\n   * Linear interpolation is a method of curve fitting using linear polynomials.\n   * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line\n   *\n   * \\par\n   * \\image html LinearInterp.gif \"Linear interpolation\"\n   *\n   * \\par\n   * A  Linear Interpolate function calculates an output value(y), for the input(x)\n   * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)\n   *\n   * \\par Algorithm:\n   * <pre>\n   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))\n   *       where x0, x1 are nearest values of input x\n   *             y0, y1 are nearest values to output y\n   * </pre>\n   *\n   * \\par\n   * This set of functions implements Linear interpolation process\n   * for Q7, Q15, Q31, and floating-point data types.  The functions operate on a single\n   * sample of data and each call to the function returns a single processed value.\n   * <code>S</code> points to an instance of the Linear Interpolate function data structure.\n   * <code>x</code> is the input sample value. The functions returns the output value.\n   *\n   * \\par\n   * if x is outside of the table boundary, Linear interpolation returns first value of the table\n   * if x is below input range and returns last value of table if x is above range.\n   */\n\n  /**\n   * @addtogroup LinearInterpolate\n   * @{\n   */\n\n  /**\n   * @brief  Process function for the floating-point Linear Interpolation Function.\n   * @param[in,out] S  is an instance of the floating-point Linear Interpolation structure\n   * @param[in]     x  input sample to process\n   * @return y processed output sample.\n   *\n   */\n  CMSIS_INLINE __STATIC_INLINE float32_t arm_linear_interp_f32(\n  arm_linear_interp_instance_f32 * S,\n  float32_t x)\n  {\n    float32_t y;\n    float32_t x0, x1;                            /* Nearest input values */\n    float32_t y0, y1;                            /* Nearest output values */\n    float32_t xSpacing = S->xSpacing;            /* spacing between input values */\n    int32_t i;                                   /* Index variable */\n    float32_t *pYData = S->pYData;               /* pointer to output table */\n\n    /* Calculation of index */\n    i = (int32_t) ((x - S->x1) / xSpacing);\n\n    if (i < 0)\n    {\n      /* Iniatilize output for below specified range as least output value of table */\n      y = pYData[0];\n    }\n    else if ((uint32_t)i >= S->nValues)\n    {\n      /* Iniatilize output for above specified range as last output value of table */\n      y = pYData[S->nValues - 1];\n    }\n    else\n    {\n      /* Calculation of nearest input values */\n      x0 = S->x1 +  i      * xSpacing;\n      x1 = S->x1 + (i + 1) * xSpacing;\n\n      /* Read of nearest output values */\n      y0 = pYData[i];\n      y1 = pYData[i + 1];\n\n      /* Calculation of output */\n      y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));\n\n    }\n\n    /* returns output value */\n    return (y);\n  }\n\n\n   /**\n   *\n   * @brief  Process function for the Q31 Linear Interpolation Function.\n   * @param[in] pYData   pointer to Q31 Linear Interpolation table\n   * @param[in] x        input sample to process\n   * @param[in] nValues  number of table values\n   * @return y processed output sample.\n   *\n   * \\par\n   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\n   * This function can support maximum of table size 2^12.\n   *\n   */\n  CMSIS_INLINE __STATIC_INLINE q31_t arm_linear_interp_q31(\n  q31_t * pYData,\n  q31_t x,\n  uint32_t nValues)\n  {\n    q31_t y;                                     /* output */\n    q31_t y0, y1;                                /* Nearest output values */\n    q31_t fract;                                 /* fractional part */\n    int32_t index;                               /* Index to read nearest output values */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    index = ((x & (q31_t)0xFFF00000) >> 20);\n\n    if (index >= (int32_t)(nValues - 1))\n    {\n      return (pYData[nValues - 1]);\n    }\n    else if (index < 0)\n    {\n      return (pYData[0]);\n    }\n    else\n    {\n      /* 20 bits for the fractional part */\n      /* shift left by 11 to keep fract in 1.31 format */\n      fract = (x & 0x000FFFFF) << 11;\n\n      /* Read two nearest output values from the index in 1.31(q31) format */\n      y0 = pYData[index];\n      y1 = pYData[index + 1];\n\n      /* Calculation of y0 * (1-fract) and y is in 2.30 format */\n      y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));\n\n      /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */\n      y += ((q31_t) (((q63_t) y1 * fract) >> 32));\n\n      /* Convert y to 1.31 format */\n      return (y << 1U);\n    }\n  }\n\n\n  /**\n   *\n   * @brief  Process function for the Q15 Linear Interpolation Function.\n   * @param[in] pYData   pointer to Q15 Linear Interpolation table\n   * @param[in] x        input sample to process\n   * @param[in] nValues  number of table values\n   * @return y processed output sample.\n   *\n   * \\par\n   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\n   * This function can support maximum of table size 2^12.\n   *\n   */\n  CMSIS_INLINE __STATIC_INLINE q15_t arm_linear_interp_q15(\n  q15_t * pYData,\n  q31_t x,\n  uint32_t nValues)\n  {\n    q63_t y;                                     /* output */\n    q15_t y0, y1;                                /* Nearest output values */\n    q31_t fract;                                 /* fractional part */\n    int32_t index;                               /* Index to read nearest output values */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    index = ((x & (int32_t)0xFFF00000) >> 20);\n\n    if (index >= (int32_t)(nValues - 1))\n    {\n      return (pYData[nValues - 1]);\n    }\n    else if (index < 0)\n    {\n      return (pYData[0]);\n    }\n    else\n    {\n      /* 20 bits for the fractional part */\n      /* fract is in 12.20 format */\n      fract = (x & 0x000FFFFF);\n\n      /* Read two nearest output values from the index */\n      y0 = pYData[index];\n      y1 = pYData[index + 1];\n\n      /* Calculation of y0 * (1-fract) and y is in 13.35 format */\n      y = ((q63_t) y0 * (0xFFFFF - fract));\n\n      /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */\n      y += ((q63_t) y1 * (fract));\n\n      /* convert y to 1.15 format */\n      return (q15_t) (y >> 20);\n    }\n  }\n\n\n  /**\n   *\n   * @brief  Process function for the Q7 Linear Interpolation Function.\n   * @param[in] pYData   pointer to Q7 Linear Interpolation table\n   * @param[in] x        input sample to process\n   * @param[in] nValues  number of table values\n   * @return y processed output sample.\n   *\n   * \\par\n   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\n   * This function can support maximum of table size 2^12.\n   */\n  CMSIS_INLINE __STATIC_INLINE q7_t arm_linear_interp_q7(\n  q7_t * pYData,\n  q31_t x,\n  uint32_t nValues)\n  {\n    q31_t y;                                     /* output */\n    q7_t y0, y1;                                 /* Nearest output values */\n    q31_t fract;                                 /* fractional part */\n    uint32_t index;                              /* Index to read nearest output values */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    if (x < 0)\n    {\n      return (pYData[0]);\n    }\n    index = (x >> 20) & 0xfff;\n\n    if (index >= (nValues - 1))\n    {\n      return (pYData[nValues - 1]);\n    }\n    else\n    {\n      /* 20 bits for the fractional part */\n      /* fract is in 12.20 format */\n      fract = (x & 0x000FFFFF);\n\n      /* Read two nearest output values from the index and are in 1.7(q7) format */\n      y0 = pYData[index];\n      y1 = pYData[index + 1];\n\n      /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */\n      y = ((y0 * (0xFFFFF - fract)));\n\n      /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */\n      y += (y1 * fract);\n\n      /* convert y to 1.7(q7) format */\n      return (q7_t) (y >> 20);\n     }\n  }\n\n  /**\n   * @} end of LinearInterpolate group\n   */\n\n  /**\n   * @brief  Fast approximation to the trigonometric sine function for floating-point data.\n   * @param[in] x  input value in radians.\n   * @return  sin(x).\n   */\n  float32_t arm_sin_f32(\n  float32_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric sine function for Q31 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  sin(x).\n   */\n  q31_t arm_sin_q31(\n  q31_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric sine function for Q15 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  sin(x).\n   */\n  q15_t arm_sin_q15(\n  q15_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric cosine function for floating-point data.\n   * @param[in] x  input value in radians.\n   * @return  cos(x).\n   */\n  float32_t arm_cos_f32(\n  float32_t x);\n\n\n  /**\n   * @brief Fast approximation to the trigonometric cosine function for Q31 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  cos(x).\n   */\n  q31_t arm_cos_q31(\n  q31_t x);\n\n\n  /**\n   * @brief  Fast approximation to the trigonometric cosine function for Q15 data.\n   * @param[in] x  Scaled input value in radians.\n   * @return  cos(x).\n   */\n  q15_t arm_cos_q15(\n  q15_t x);\n\n\n  /**\n   * @ingroup groupFastMath\n   */\n\n\n  /**\n   * @defgroup SQRT Square Root\n   *\n   * Computes the square root of a number.\n   * There are separate functions for Q15, Q31, and floating-point data types.\n   * The square root function is computed using the Newton-Raphson algorithm.\n   * This is an iterative algorithm of the form:\n   * <pre>\n   *      x1 = x0 - f(x0)/f'(x0)\n   * </pre>\n   * where <code>x1</code> is the current estimate,\n   * <code>x0</code> is the previous estimate, and\n   * <code>f'(x0)</code> is the derivative of <code>f()</code> evaluated at <code>x0</code>.\n   * For the square root function, the algorithm reduces to:\n   * <pre>\n   *     x0 = in/2                         [initial guess]\n   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]\n   * </pre>\n   */\n\n\n  /**\n   * @addtogroup SQRT\n   * @{\n   */\n\n  /**\n   * @brief  Floating-point square root function.\n   * @param[in]  in    input value.\n   * @param[out] pOut  square root of input value.\n   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if\n   * <code>in</code> is negative value and returns zero output for negative values.\n   */\n  CMSIS_INLINE __STATIC_INLINE arm_status arm_sqrt_f32(\n  float32_t in,\n  float32_t * pOut)\n  {\n    if (in >= 0.0f)\n    {\n\n#if   (__FPU_USED == 1) && defined ( __CC_ARM   )\n      *pOut = __sqrtf(in);\n#elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))\n      *pOut = __builtin_sqrtf(in);\n#elif (__FPU_USED == 1) && defined(__GNUC__)\n      *pOut = __builtin_sqrtf(in);\n#elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000)\n      __ASM(\"VSQRT.F32 %0,%1\" : \"=t\"(*pOut) : \"t\"(in));\n#else\n      *pOut = sqrtf(in);\n#endif\n\n      return (ARM_MATH_SUCCESS);\n    }\n    else\n    {\n      *pOut = 0.0f;\n      return (ARM_MATH_ARGUMENT_ERROR);\n    }\n  }\n\n\n  /**\n   * @brief Q31 square root function.\n   * @param[in]  in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF.\n   * @param[out] pOut  square root of input value.\n   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if\n   * <code>in</code> is negative value and returns zero output for negative values.\n   */\n  arm_status arm_sqrt_q31(\n  q31_t in,\n  q31_t * pOut);\n\n\n  /**\n   * @brief  Q15 square root function.\n   * @param[in]  in    input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF.\n   * @param[out] pOut  square root of input value.\n   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if\n   * <code>in</code> is negative value and returns zero output for negative values.\n   */\n  arm_status arm_sqrt_q15(\n  q15_t in,\n  q15_t * pOut);\n\n  /**\n   * @} end of SQRT group\n   */\n\n\n  /**\n   * @brief floating-point Circular write function.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_f32(\n  int32_t * circBuffer,\n  int32_t L,\n  uint16_t * writeOffset,\n  int32_t bufferInc,\n  const int32_t * src,\n  int32_t srcInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t wOffset;\n\n    /* Copy the value of Index pointer that points\n     * to the current location where the input samples to be copied */\n    wOffset = *writeOffset;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the input sample to the circular buffer */\n      circBuffer[wOffset] = *src;\n\n      /* Update the input pointer */\n      src += srcInc;\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      wOffset += bufferInc;\n      if (wOffset >= L)\n        wOffset -= L;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *writeOffset = (uint16_t)wOffset;\n  }\n\n\n\n  /**\n   * @brief floating-point Circular Read function.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_circularRead_f32(\n  int32_t * circBuffer,\n  int32_t L,\n  int32_t * readOffset,\n  int32_t bufferInc,\n  int32_t * dst,\n  int32_t * dst_base,\n  int32_t dst_length,\n  int32_t dstInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t rOffset, dst_end;\n\n    /* Copy the value of Index pointer that points\n     * to the current location from where the input samples to be read */\n    rOffset = *readOffset;\n    dst_end = (int32_t) (dst_base + dst_length);\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the sample from the circular buffer to the destination buffer */\n      *dst = circBuffer[rOffset];\n\n      /* Update the input pointer */\n      dst += dstInc;\n\n      if (dst == (int32_t *) dst_end)\n      {\n        dst = dst_base;\n      }\n\n      /* Circularly update rOffset.  Watch out for positive and negative value  */\n      rOffset += bufferInc;\n\n      if (rOffset >= L)\n      {\n        rOffset -= L;\n      }\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *readOffset = rOffset;\n  }\n\n\n  /**\n   * @brief Q15 Circular write function.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_q15(\n  q15_t * circBuffer,\n  int32_t L,\n  uint16_t * writeOffset,\n  int32_t bufferInc,\n  const q15_t * src,\n  int32_t srcInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t wOffset;\n\n    /* Copy the value of Index pointer that points\n     * to the current location where the input samples to be copied */\n    wOffset = *writeOffset;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the input sample to the circular buffer */\n      circBuffer[wOffset] = *src;\n\n      /* Update the input pointer */\n      src += srcInc;\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      wOffset += bufferInc;\n      if (wOffset >= L)\n        wOffset -= L;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *writeOffset = (uint16_t)wOffset;\n  }\n\n\n  /**\n   * @brief Q15 Circular Read function.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_circularRead_q15(\n  q15_t * circBuffer,\n  int32_t L,\n  int32_t * readOffset,\n  int32_t bufferInc,\n  q15_t * dst,\n  q15_t * dst_base,\n  int32_t dst_length,\n  int32_t dstInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0;\n    int32_t rOffset, dst_end;\n\n    /* Copy the value of Index pointer that points\n     * to the current location from where the input samples to be read */\n    rOffset = *readOffset;\n\n    dst_end = (int32_t) (dst_base + dst_length);\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the sample from the circular buffer to the destination buffer */\n      *dst = circBuffer[rOffset];\n\n      /* Update the input pointer */\n      dst += dstInc;\n\n      if (dst == (q15_t *) dst_end)\n      {\n        dst = dst_base;\n      }\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      rOffset += bufferInc;\n\n      if (rOffset >= L)\n      {\n        rOffset -= L;\n      }\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *readOffset = rOffset;\n  }\n\n\n  /**\n   * @brief Q7 Circular write function.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_q7(\n  q7_t * circBuffer,\n  int32_t L,\n  uint16_t * writeOffset,\n  int32_t bufferInc,\n  const q7_t * src,\n  int32_t srcInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0U;\n    int32_t wOffset;\n\n    /* Copy the value of Index pointer that points\n     * to the current location where the input samples to be copied */\n    wOffset = *writeOffset;\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the input sample to the circular buffer */\n      circBuffer[wOffset] = *src;\n\n      /* Update the input pointer */\n      src += srcInc;\n\n      /* Circularly update wOffset.  Watch out for positive and negative value */\n      wOffset += bufferInc;\n      if (wOffset >= L)\n        wOffset -= L;\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *writeOffset = (uint16_t)wOffset;\n  }\n\n\n  /**\n   * @brief Q7 Circular Read function.\n   */\n  CMSIS_INLINE __STATIC_INLINE void arm_circularRead_q7(\n  q7_t * circBuffer,\n  int32_t L,\n  int32_t * readOffset,\n  int32_t bufferInc,\n  q7_t * dst,\n  q7_t * dst_base,\n  int32_t dst_length,\n  int32_t dstInc,\n  uint32_t blockSize)\n  {\n    uint32_t i = 0;\n    int32_t rOffset, dst_end;\n\n    /* Copy the value of Index pointer that points\n     * to the current location from where the input samples to be read */\n    rOffset = *readOffset;\n\n    dst_end = (int32_t) (dst_base + dst_length);\n\n    /* Loop over the blockSize */\n    i = blockSize;\n\n    while (i > 0U)\n    {\n      /* copy the sample from the circular buffer to the destination buffer */\n      *dst = circBuffer[rOffset];\n\n      /* Update the input pointer */\n      dst += dstInc;\n\n      if (dst == (q7_t *) dst_end)\n      {\n        dst = dst_base;\n      }\n\n      /* Circularly update rOffset.  Watch out for positive and negative value */\n      rOffset += bufferInc;\n\n      if (rOffset >= L)\n      {\n        rOffset -= L;\n      }\n\n      /* Decrement the loop counter */\n      i--;\n    }\n\n    /* Update the index pointer */\n    *readOffset = rOffset;\n  }\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q63_t * pResult);\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q63_t * pResult);\n\n\n  /**\n   * @brief  Sum of the squares of the elements of a Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_power_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\n\n  /**\n   * @brief  Mean value of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_mean_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\n\n  /**\n   * @brief  Variance of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_var_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\n\n  /**\n   * @brief  Variance of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_var_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\n\n  /**\n   * @brief  Variance of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_var_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\n\n  /**\n   * @brief  Root Mean Square of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_rms_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\n\n  /**\n   * @brief  Root Mean Square of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_rms_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\n\n  /**\n   * @brief  Root Mean Square of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_rms_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\n\n  /**\n   * @brief  Standard deviation of the elements of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_std_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult);\n\n\n  /**\n   * @brief  Standard deviation of the elements of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_std_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult);\n\n\n  /**\n   * @brief  Standard deviation of the elements of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output value.\n   */\n  void arm_std_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult);\n\n\n  /**\n   * @brief  Floating-point complex magnitude\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_f32(\n  float32_t * pSrc,\n  float32_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex magnitude\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_q31(\n  q31_t * pSrc,\n  q31_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex magnitude\n   * @param[in]  pSrc        points to the complex input vector\n   * @param[out] pDst        points to the real output vector\n   * @param[in]  numSamples  number of complex samples in the input vector\n   */\n  void arm_cmplx_mag_q15(\n  q15_t * pSrc,\n  q15_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q15 complex dot product\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   * @param[out] realResult  real part of the result returned here\n   * @param[out] imagResult  imaginary part of the result returned here\n   */\n  void arm_cmplx_dot_prod_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  uint32_t numSamples,\n  q31_t * realResult,\n  q31_t * imagResult);\n\n\n  /**\n   * @brief  Q31 complex dot product\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   * @param[out] realResult  real part of the result returned here\n   * @param[out] imagResult  imaginary part of the result returned here\n   */\n  void arm_cmplx_dot_prod_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  uint32_t numSamples,\n  q63_t * realResult,\n  q63_t * imagResult);\n\n\n  /**\n   * @brief  Floating-point complex dot product\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   * @param[out] realResult  real part of the result returned here\n   * @param[out] imagResult  imaginary part of the result returned here\n   */\n  void arm_cmplx_dot_prod_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  uint32_t numSamples,\n  float32_t * realResult,\n  float32_t * imagResult);\n\n\n  /**\n   * @brief  Q15 complex-by-real multiplication\n   * @param[in]  pSrcCmplx   points to the complex input vector\n   * @param[in]  pSrcReal    points to the real input vector\n   * @param[out] pCmplxDst   points to the complex output vector\n   * @param[in]  numSamples  number of samples in each vector\n   */\n  void arm_cmplx_mult_real_q15(\n  q15_t * pSrcCmplx,\n  q15_t * pSrcReal,\n  q15_t * pCmplxDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex-by-real multiplication\n   * @param[in]  pSrcCmplx   points to the complex input vector\n   * @param[in]  pSrcReal    points to the real input vector\n   * @param[out] pCmplxDst   points to the complex output vector\n   * @param[in]  numSamples  number of samples in each vector\n   */\n  void arm_cmplx_mult_real_q31(\n  q31_t * pSrcCmplx,\n  q31_t * pSrcReal,\n  q31_t * pCmplxDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Floating-point complex-by-real multiplication\n   * @param[in]  pSrcCmplx   points to the complex input vector\n   * @param[in]  pSrcReal    points to the real input vector\n   * @param[out] pCmplxDst   points to the complex output vector\n   * @param[in]  numSamples  number of samples in each vector\n   */\n  void arm_cmplx_mult_real_f32(\n  float32_t * pSrcCmplx,\n  float32_t * pSrcReal,\n  float32_t * pCmplxDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Minimum value of a Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] result     is output pointer\n   * @param[in]  index      is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * result,\n  uint32_t * index);\n\n\n  /**\n   * @brief  Minimum value of a Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output pointer\n   * @param[in]  pIndex     is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult,\n  uint32_t * pIndex);\n\n\n  /**\n   * @brief  Minimum value of a Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output pointer\n   * @param[out] pIndex     is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult,\n  uint32_t * pIndex);\n\n\n  /**\n   * @brief  Minimum value of a floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[in]  blockSize  is the number of samples to process\n   * @param[out] pResult    is output pointer\n   * @param[out] pIndex     is the array index of the minimum value in the input buffer.\n   */\n  void arm_min_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a Q7 vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_q7(\n  q7_t * pSrc,\n  uint32_t blockSize,\n  q7_t * pResult,\n  uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a Q15 vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_q15(\n  q15_t * pSrc,\n  uint32_t blockSize,\n  q15_t * pResult,\n  uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a Q31 vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_q31(\n  q31_t * pSrc,\n  uint32_t blockSize,\n  q31_t * pResult,\n  uint32_t * pIndex);\n\n\n/**\n * @brief Maximum value of a floating-point vector.\n * @param[in]  pSrc       points to the input buffer\n * @param[in]  blockSize  length of the input vector\n * @param[out] pResult    maximum value returned here\n * @param[out] pIndex     index of maximum value returned here\n */\n  void arm_max_f32(\n  float32_t * pSrc,\n  uint32_t blockSize,\n  float32_t * pResult,\n  uint32_t * pIndex);\n\n\n  /**\n   * @brief  Q15 complex-by-complex multiplication\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_mult_cmplx_q15(\n  q15_t * pSrcA,\n  q15_t * pSrcB,\n  q15_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Q31 complex-by-complex multiplication\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_mult_cmplx_q31(\n  q31_t * pSrcA,\n  q31_t * pSrcB,\n  q31_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief  Floating-point complex-by-complex multiplication\n   * @param[in]  pSrcA       points to the first input vector\n   * @param[in]  pSrcB       points to the second input vector\n   * @param[out] pDst        points to the output vector\n   * @param[in]  numSamples  number of complex samples in each vector\n   */\n  void arm_cmplx_mult_cmplx_f32(\n  float32_t * pSrcA,\n  float32_t * pSrcB,\n  float32_t * pDst,\n  uint32_t numSamples);\n\n\n  /**\n   * @brief Converts the elements of the floating-point vector to Q31 vector.\n   * @param[in]  pSrc       points to the floating-point input vector\n   * @param[out] pDst       points to the Q31 output vector\n   * @param[in]  blockSize  length of the input vector\n   */\n  void arm_float_to_q31(\n  float32_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Converts the elements of the floating-point vector to Q15 vector.\n   * @param[in]  pSrc       points to the floating-point input vector\n   * @param[out] pDst       points to the Q15 output vector\n   * @param[in]  blockSize  length of the input vector\n   */\n  void arm_float_to_q15(\n  float32_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief Converts the elements of the floating-point vector to Q7 vector.\n   * @param[in]  pSrc       points to the floating-point input vector\n   * @param[out] pDst       points to the Q7 output vector\n   * @param[in]  blockSize  length of the input vector\n   */\n  void arm_float_to_q7(\n  float32_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q31 vector to Q15 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q31_to_q15(\n  q31_t * pSrc,\n  q15_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q31 vector to Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q31_to_q7(\n  q31_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q15 vector to floating-point vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q15_to_float(\n  q15_t * pSrc,\n  float32_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q15 vector to Q31 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q15_to_q31(\n  q15_t * pSrc,\n  q31_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @brief  Converts the elements of the Q15 vector to Q7 vector.\n   * @param[in]  pSrc       is input pointer\n   * @param[out] pDst       is output pointer\n   * @param[in]  blockSize  is the number of samples to process\n   */\n  void arm_q15_to_q7(\n  q15_t * pSrc,\n  q7_t * pDst,\n  uint32_t blockSize);\n\n\n  /**\n   * @ingroup groupInterpolation\n   */\n\n  /**\n   * @defgroup BilinearInterpolate Bilinear Interpolation\n   *\n   * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid.\n   * The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process\n   * determines values between the grid points.\n   * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension.\n   * Bilinear interpolation is often used in image processing to rescale images.\n   * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.\n   *\n   * <b>Algorithm</b>\n   * \\par\n   * The instance structure used by the bilinear interpolation functions describes a two dimensional data table.\n   * For floating-point, the instance structure is defined as:\n   * <pre>\n   *   typedef struct\n   *   {\n   *     uint16_t numRows;\n   *     uint16_t numCols;\n   *     float32_t *pData;\n   * } arm_bilinear_interp_instance_f32;\n   * </pre>\n   *\n   * \\par\n   * where <code>numRows</code> specifies the number of rows in the table;\n   * <code>numCols</code> specifies the number of columns in the table;\n   * and <code>pData</code> points to an array of size <code>numRows*numCols</code> values.\n   * The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes.\n   * That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.\n   *\n   * \\par\n   * Let <code>(x, y)</code> specify the desired interpolation point.  Then define:\n   * <pre>\n   *     XF = floor(x)\n   *     YF = floor(y)\n   * </pre>\n   * \\par\n   * The interpolated output point is computed as:\n   * <pre>\n   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))\n   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))\n   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)\n   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)\n   * </pre>\n   * Note that the coordinates (x, y) contain integer and fractional components.\n   * The integer components specify which portion of the table to use while the\n   * fractional components control the interpolation processor.\n   *\n   * \\par\n   * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output.\n   */\n\n  /**\n   * @addtogroup BilinearInterpolate\n   * @{\n   */\n\n\n  /**\n  *\n  * @brief  Floating-point bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate.\n  * @param[in]     Y  interpolation coordinate.\n  * @return out interpolated value.\n  */\n  CMSIS_INLINE __STATIC_INLINE float32_t arm_bilinear_interp_f32(\n  const arm_bilinear_interp_instance_f32 * S,\n  float32_t X,\n  float32_t Y)\n  {\n    float32_t out;\n    float32_t f00, f01, f10, f11;\n    float32_t *pData = S->pData;\n    int32_t xIndex, yIndex, index;\n    float32_t xdiff, ydiff;\n    float32_t b1, b2, b3, b4;\n\n    xIndex = (int32_t) X;\n    yIndex = (int32_t) Y;\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* Calculation of index for two nearest points in X-direction */\n    index = (xIndex - 1) + (yIndex - 1) * S->numCols;\n\n\n    /* Read two nearest points in X-direction */\n    f00 = pData[index];\n    f01 = pData[index + 1];\n\n    /* Calculation of index for two nearest points in Y-direction */\n    index = (xIndex - 1) + (yIndex) * S->numCols;\n\n\n    /* Read two nearest points in Y-direction */\n    f10 = pData[index];\n    f11 = pData[index + 1];\n\n    /* Calculation of intermediate values */\n    b1 = f00;\n    b2 = f01 - f00;\n    b3 = f10 - f00;\n    b4 = f00 - f01 - f10 + f11;\n\n    /* Calculation of fractional part in X */\n    xdiff = X - xIndex;\n\n    /* Calculation of fractional part in Y */\n    ydiff = Y - yIndex;\n\n    /* Calculation of bi-linear interpolated output */\n    out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;\n\n    /* return to application */\n    return (out);\n  }\n\n\n  /**\n  *\n  * @brief  Q31 bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate in 12.20 format.\n  * @param[in]     Y  interpolation coordinate in 12.20 format.\n  * @return out interpolated value.\n  */\n  CMSIS_INLINE __STATIC_INLINE q31_t arm_bilinear_interp_q31(\n  arm_bilinear_interp_instance_q31 * S,\n  q31_t X,\n  q31_t Y)\n  {\n    q31_t out;                                   /* Temporary output */\n    q31_t acc = 0;                               /* output */\n    q31_t xfract, yfract;                        /* X, Y fractional parts */\n    q31_t x1, x2, y1, y2;                        /* Nearest output values */\n    int32_t rI, cI;                              /* Row and column indices */\n    q31_t *pYData = S->pData;                    /* pointer to output table values */\n    uint32_t nCols = S->numCols;                 /* num of rows */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    rI = ((X & (q31_t)0xFFF00000) >> 20);\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    cI = ((Y & (q31_t)0xFFF00000) >> 20);\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* 20 bits for the fractional part */\n    /* shift left xfract by 11 to keep 1.31 format */\n    xfract = (X & 0x000FFFFF) << 11U;\n\n    /* Read two nearest output values from the index */\n    x1 = pYData[(rI) + (int32_t)nCols * (cI)    ];\n    x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];\n\n    /* 20 bits for the fractional part */\n    /* shift left yfract by 11 to keep 1.31 format */\n    yfract = (Y & 0x000FFFFF) << 11U;\n\n    /* Read two nearest output values from the index */\n    y1 = pYData[(rI) + (int32_t)nCols * (cI + 1)    ];\n    y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];\n\n    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */\n    out = ((q31_t) (((q63_t) x1  * (0x7FFFFFFF - xfract)) >> 32));\n    acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));\n\n    /* x2 * (xfract) * (1-yfract)  in 3.29(q29) and adding to acc */\n    out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));\n    acc += ((q31_t) ((q63_t) out * (xfract) >> 32));\n\n    /* y1 * (1 - xfract) * (yfract)  in 3.29(q29) and adding to acc */\n    out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));\n    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));\n\n    /* y2 * (xfract) * (yfract)  in 3.29(q29) and adding to acc */\n    out = ((q31_t) ((q63_t) y2 * (xfract) >> 32));\n    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));\n\n    /* Convert acc to 1.31(q31) format */\n    return ((q31_t)(acc << 2));\n  }\n\n\n  /**\n  * @brief  Q15 bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate in 12.20 format.\n  * @param[in]     Y  interpolation coordinate in 12.20 format.\n  * @return out interpolated value.\n  */\n  CMSIS_INLINE __STATIC_INLINE q15_t arm_bilinear_interp_q15(\n  arm_bilinear_interp_instance_q15 * S,\n  q31_t X,\n  q31_t Y)\n  {\n    q63_t acc = 0;                               /* output */\n    q31_t out;                                   /* Temporary output */\n    q15_t x1, x2, y1, y2;                        /* Nearest output values */\n    q31_t xfract, yfract;                        /* X, Y fractional parts */\n    int32_t rI, cI;                              /* Row and column indices */\n    q15_t *pYData = S->pData;                    /* pointer to output table values */\n    uint32_t nCols = S->numCols;                 /* num of rows */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    rI = ((X & (q31_t)0xFFF00000) >> 20);\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    cI = ((Y & (q31_t)0xFFF00000) >> 20);\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* 20 bits for the fractional part */\n    /* xfract should be in 12.20 format */\n    xfract = (X & 0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];\n    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];\n\n    /* 20 bits for the fractional part */\n    /* yfract should be in 12.20 format */\n    yfract = (Y & 0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];\n    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];\n\n    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */\n\n    /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */\n    /* convert 13.35 to 13.31 by right shifting  and out is in 1.31 */\n    out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4U);\n    acc = ((q63_t) out * (0xFFFFF - yfract));\n\n    /* x2 * (xfract) * (1-yfract)  in 1.51 and adding to acc */\n    out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4U);\n    acc += ((q63_t) out * (xfract));\n\n    /* y1 * (1 - xfract) * (yfract)  in 1.51 and adding to acc */\n    out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4U);\n    acc += ((q63_t) out * (yfract));\n\n    /* y2 * (xfract) * (yfract)  in 1.51 and adding to acc */\n    out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U);\n    acc += ((q63_t) out * (yfract));\n\n    /* acc is in 13.51 format and down shift acc by 36 times */\n    /* Convert out to 1.15 format */\n    return ((q15_t)(acc >> 36));\n  }\n\n\n  /**\n  * @brief  Q7 bilinear interpolation.\n  * @param[in,out] S  points to an instance of the interpolation structure.\n  * @param[in]     X  interpolation coordinate in 12.20 format.\n  * @param[in]     Y  interpolation coordinate in 12.20 format.\n  * @return out interpolated value.\n  */\n  CMSIS_INLINE __STATIC_INLINE q7_t arm_bilinear_interp_q7(\n  arm_bilinear_interp_instance_q7 * S,\n  q31_t X,\n  q31_t Y)\n  {\n    q63_t acc = 0;                               /* output */\n    q31_t out;                                   /* Temporary output */\n    q31_t xfract, yfract;                        /* X, Y fractional parts */\n    q7_t x1, x2, y1, y2;                         /* Nearest output values */\n    int32_t rI, cI;                              /* Row and column indices */\n    q7_t *pYData = S->pData;                     /* pointer to output table values */\n    uint32_t nCols = S->numCols;                 /* num of rows */\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    rI = ((X & (q31_t)0xFFF00000) >> 20);\n\n    /* Input is in 12.20 format */\n    /* 12 bits for the table index */\n    /* Index value calculation */\n    cI = ((Y & (q31_t)0xFFF00000) >> 20);\n\n    /* Care taken for table outside boundary */\n    /* Returns zero output when values are outside table boundary */\n    if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))\n    {\n      return (0);\n    }\n\n    /* 20 bits for the fractional part */\n    /* xfract should be in 12.20 format */\n    xfract = (X & (q31_t)0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];\n    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];\n\n    /* 20 bits for the fractional part */\n    /* yfract should be in 12.20 format */\n    yfract = (Y & (q31_t)0x000FFFFF);\n\n    /* Read two nearest output values from the index */\n    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];\n    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];\n\n    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */\n    out = ((x1 * (0xFFFFF - xfract)));\n    acc = (((q63_t) out * (0xFFFFF - yfract)));\n\n    /* x2 * (xfract) * (1-yfract)  in 2.22 and adding to acc */\n    out = ((x2 * (0xFFFFF - yfract)));\n    acc += (((q63_t) out * (xfract)));\n\n    /* y1 * (1 - xfract) * (yfract)  in 2.22 and adding to acc */\n    out = ((y1 * (0xFFFFF - xfract)));\n    acc += (((q63_t) out * (yfract)));\n\n    /* y2 * (xfract) * (yfract)  in 2.22 and adding to acc */\n    out = ((y2 * (yfract)));\n    acc += (((q63_t) out * (xfract)));\n\n    /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */\n    return ((q7_t)(acc >> 40));\n  }\n\n  /**\n   * @} end of BilinearInterpolate group\n   */\n\n\n/* SMMLAR */\n#define multAcc_32x32_keep32_R(a, x, y) \\\n    a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)\n\n/* SMMLSR */\n#define multSub_32x32_keep32_R(a, x, y) \\\n    a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)\n\n/* SMMULR */\n#define mult_32x32_keep32_R(a, x, y) \\\n    a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)\n\n/* SMMLA */\n#define multAcc_32x32_keep32(a, x, y) \\\n    a += (q31_t) (((q63_t) x * y) >> 32)\n\n/* SMMLS */\n#define multSub_32x32_keep32(a, x, y) \\\n    a -= (q31_t) (((q63_t) x * y) >> 32)\n\n/* SMMUL */\n#define mult_32x32_keep32(a, x, y) \\\n    a = (q31_t) (((q63_t) x * y ) >> 32)\n\n\n#if   defined ( __CC_ARM )\n  /* Enter low optimization region - place directly above function definition */\n  #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)\n    #define LOW_OPTIMIZATION_ENTER \\\n       _Pragma (\"push\")         \\\n       _Pragma (\"O1\")\n  #else\n    #define LOW_OPTIMIZATION_ENTER\n  #endif\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 )\n    #define LOW_OPTIMIZATION_EXIT \\\n       _Pragma (\"pop\")\n  #else\n    #define LOW_OPTIMIZATION_EXIT\n  #endif\n\n  /* Enter low optimization region - place directly above function definition */\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __GNUC__ )\n  #define LOW_OPTIMIZATION_ENTER \\\n       __attribute__(( optimize(\"-O1\") ))\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __ICCARM__ )\n  /* Enter low optimization region - place directly above function definition */\n  #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 )\n    #define LOW_OPTIMIZATION_ENTER \\\n       _Pragma (\"optimize=low\")\n  #else\n    #define LOW_OPTIMIZATION_ENTER\n  #endif\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #define LOW_OPTIMIZATION_EXIT\n\n  /* Enter low optimization region - place directly above function definition */\n  #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 )\n    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \\\n       _Pragma (\"optimize=low\")\n  #else\n    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #endif\n\n  /* Exit low optimization region - place directly after end of function definition */\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __TI_ARM__ )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __CSMC__ )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#elif defined ( __TASKING__ )\n  #define LOW_OPTIMIZATION_ENTER\n  #define LOW_OPTIMIZATION_EXIT\n  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER\n  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT\n\n#endif\n\n\n#ifdef   __cplusplus\n}\n#endif\n\n/* Compiler specific diagnostic adjustment */\n#if   defined ( __CC_ARM )\n\n#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )\n\n#elif defined ( __GNUC__ )\n#pragma GCC diagnostic pop\n\n#elif defined ( __ICCARM__ )\n\n#elif defined ( __TI_ARM__ )\n\n#elif defined ( __CSMC__ )\n\n#elif defined ( __TASKING__ )\n\n#else\n  #error Unknown compiler\n#endif\n\n#endif /* _ARM_MATH_H */\n\n/**\n *\n * End of file.\n */\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c",
    "content": "/* ----------------------------------------------------------------------\n * $Date:        5. February 2013\n * $Revision:    V1.02\n *\n * Project:      CMSIS-RTOS API\n * Title:        cmsis_os.c\n *\n * Version 0.02\n *    Initial Proposal Phase\n * Version 0.03\n *    osKernelStart added, optional feature: main started as thread\n *    osSemaphores have standard behavior\n *    osTimerCreate does not start the timer, added osTimerStart\n *    osThreadPass is renamed to osThreadYield\n * Version 1.01\n *    Support for C++ interface\n *     - const attribute removed from the osXxxxDef_t typedef's\n *     - const attribute added to the osXxxxDef macros\n *    Added: osTimerDelete, osMutexDelete, osSemaphoreDelete\n *    Added: osKernelInitialize\n * Version 1.02\n *    Control functions for short timeouts in microsecond resolution:\n *    Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec\n *    Removed: osSignalGet \n *    \n *  \n *----------------------------------------------------------------------------\n *\n * Portions Copyright  2016 STMicroelectronics International N.V. All rights reserved.\n * Portions Copyright (c) 2013 ARM LIMITED\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *  - Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  - Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n *  - Neither the name of ARM  nor the names of its contributors may be used\n *    to endorse or promote products derived from this software without\n *    specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *---------------------------------------------------------------------------*/\n\n#include <string.h>\n#include \"cmsis_os.h\"\n\n/*\n * ARM Compiler 4/5\n */\n#if   defined ( __CC_ARM )\n\n  #define __ASM            __asm                                      \n  #define __INLINE         __inline                                     \n  #define __STATIC_INLINE  static __inline\n\n  #include \"cmsis_armcc.h\"\n\n/*\n * GNU Compiler\n */\n#elif defined ( __GNUC__ )\n\n  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */\n  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */\n  #define __STATIC_INLINE  static inline\n\n  #include \"cmsis_gcc.h\"\n\n\n/*\n * IAR Compiler\n */\n#elif defined ( __ICCARM__ )\n\n  #ifndef   __ASM\n    #define __ASM                     __asm\n  #endif\n  #ifndef   __INLINE\n    #define __INLINE                  inline\n  #endif\n  #ifndef   __STATIC_INLINE\n    #define __STATIC_INLINE           static inline\n  #endif\n\n  #include <cmsis_iar.h>\n#endif\n\nextern void xPortSysTickHandler(void);\n\n/* Convert from CMSIS type osPriority to FreeRTOS priority number */\nstatic unsigned portBASE_TYPE makeFreeRtosPriority (osPriority priority)\n{\n  unsigned portBASE_TYPE fpriority = tskIDLE_PRIORITY;\n  \n  if (priority != osPriorityError) {\n    fpriority += (priority - osPriorityIdle);\n  }\n  \n  return fpriority;\n}\n\n#if (INCLUDE_uxTaskPriorityGet == 1)\n/* Convert from FreeRTOS priority number to CMSIS type osPriority */\nstatic osPriority makeCmsisPriority (unsigned portBASE_TYPE fpriority)\n{\n  osPriority priority = osPriorityError;\n  \n  if ((fpriority - tskIDLE_PRIORITY) <= (osPriorityRealtime - osPriorityIdle)) {\n    priority = (osPriority)((int)osPriorityIdle + (int)(fpriority - tskIDLE_PRIORITY));\n  }\n  \n  return priority;\n}\n#endif\n\n\n/* Determine whether we are in thread mode or handler mode. */\nstatic int inHandlerMode (void)\n{\n  return __get_IPSR() != 0;\n}\n\n/*********************** Kernel Control Functions *****************************/\n/**\n* @brief  Initialize the RTOS Kernel for creating objects.\n* @retval status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osKernelInitialize shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osKernelInitialize (void);\n\n/**\n* @brief  Start the RTOS Kernel with executing the specified thread.\n* @param  thread_def    thread definition referenced with \\ref osThread.\n* @param  argument      pointer that is passed to the thread function as start argument.\n* @retval status code that indicates the execution status of the function\n* @note   MUST REMAIN UNCHANGED: \\b osKernelStart shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osKernelStart (void)\n{\n  vTaskStartScheduler();\n  \n  return osOK;\n}\n\n/**\n* @brief  Check if the RTOS kernel is already started\n* @param  None\n* @retval (0) RTOS is not started\n*         (1) RTOS is started\n*         (-1) if this feature is disabled in FreeRTOSConfig.h \n* @note  MUST REMAIN UNCHANGED: \\b osKernelRunning shall be consistent in every CMSIS-RTOS.\n*/\nint32_t osKernelRunning(void)\n{\n#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n  if (xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED)\n    return 0;\n  else\n    return 1;\n#else\n\treturn (-1);\n#endif\t\n}\n\n#if (defined (osFeature_SysTick)  &&  (osFeature_SysTick != 0))     // System Timer available\n/**\n* @brief  Get the value of the Kernel SysTick timer\n* @param  None\n* @retval None\n* @note   MUST REMAIN UNCHANGED: \\b osKernelSysTick shall be consistent in every CMSIS-RTOS.\n*/\nuint32_t osKernelSysTick(void)\n{\n  if (inHandlerMode()) {\n    return xTaskGetTickCountFromISR();\n  }\n  else {\n    return xTaskGetTickCount();\n  }\n}\n#endif    // System Timer available\n/*********************** Thread Management *****************************/\n/**\n* @brief  Create a thread and add it to Active Threads and set it to state READY.\n* @param  thread_def    thread definition referenced with \\ref osThread.\n* @param  argument      pointer that is passed to the thread function as start argument.\n* @retval thread ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osThreadCreate shall be consistent in every CMSIS-RTOS.\n*/\nosThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument)\n{\n  TaskHandle_t handle;\n  \n#if( configSUPPORT_STATIC_ALLOCATION == 1 ) &&  ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n  if((thread_def->buffer != NULL) && (thread_def->controlblock != NULL)) {\n    handle = xTaskCreateStatic((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name,\n              thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority),\n              thread_def->buffer, thread_def->controlblock);\n  }\n  else {\n    if (xTaskCreate((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name,\n              thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority),\n              &handle) != pdPASS)  {\n      return NULL;\n    } \n  }\n#elif( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n    handle = xTaskCreateStatic((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name,\n              thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority),\n              thread_def->buffer, thread_def->controlblock);\n#else\n  if (xTaskCreate((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name,\n                   thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority),\n                   &handle) != pdPASS)  {\n    return NULL;\n  }     \n#endif\n  \n  return handle;\n}\n\n/**\n* @brief  Return the thread ID of the current running thread.\n* @retval thread ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osThreadGetId shall be consistent in every CMSIS-RTOS.\n*/\nosThreadId osThreadGetId (void)\n{\n#if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) )\n  return xTaskGetCurrentTaskHandle();\n#else\n\treturn NULL;\n#endif\n}\n\n/**\n* @brief  Terminate execution of a thread and remove it from Active Threads.\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osThreadTerminate shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osThreadTerminate (osThreadId thread_id)\n{\n#if (INCLUDE_vTaskDelete == 1)\n  vTaskDelete(thread_id);\n  return osOK;\n#else\n  return osErrorOS;\n#endif\n}\n\n/**\n* @brief  Pass control to next thread that is in state \\b READY.\n* @retval status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osThreadYield shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osThreadYield (void)\n{\n  taskYIELD();\n  \n  return osOK;\n}\n\n/**\n* @brief   Change priority of an active thread.\n* @param   thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @param   priority      new priority value for the thread function.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osThreadSetPriority shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osThreadSetPriority (osThreadId thread_id, osPriority priority)\n{\n#if (INCLUDE_vTaskPrioritySet == 1)\n  vTaskPrioritySet(thread_id, makeFreeRtosPriority(priority));\n  return osOK;\n#else\n  return osErrorOS;\n#endif\n}\n\n/**\n* @brief   Get current priority of an active thread.\n* @param   thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  current priority value of the thread function.\n* @note   MUST REMAIN UNCHANGED: \\b osThreadGetPriority shall be consistent in every CMSIS-RTOS.\n*/\nosPriority osThreadGetPriority (osThreadId thread_id)\n{\n#if (INCLUDE_uxTaskPriorityGet == 1)\n  if (inHandlerMode())\n  {\n    return makeCmsisPriority(uxTaskPriorityGetFromISR(thread_id));  \n  }\n  else\n  {  \n    return makeCmsisPriority(uxTaskPriorityGet(thread_id));\n  }\n#else\n  return osPriorityError;\n#endif\n}\n\n/*********************** Generic Wait Functions *******************************/\n/**\n* @brief   Wait for Timeout (Time Delay)\n* @param   millisec      time delay value\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osDelay (uint32_t millisec)\n{\n#if INCLUDE_vTaskDelay\n  TickType_t ticks = millisec / portTICK_PERIOD_MS;\n  \n  vTaskDelay(ticks ? ticks : 1);          /* Minimum delay = 1 tick */\n  \n  return osOK;\n#else\n  (void) millisec;\n  \n  return osErrorResource;\n#endif\n}\n\n#if (defined (osFeature_Wait)  &&  (osFeature_Wait != 0)) /* Generic Wait available */\n/**\n* @brief  Wait for Signal, Message, Mail, or Timeout\n* @param   millisec  timeout value or 0 in case of no time-out\n* @retval  event that contains signal, message, or mail information or error code.\n* @note   MUST REMAIN UNCHANGED: \\b osWait shall be consistent in every CMSIS-RTOS.\n*/\nosEvent osWait (uint32_t millisec);\n\n#endif  /* Generic Wait available */\n\n/***********************  Timer Management Functions ***************************/\n/**\n* @brief  Create a timer.\n* @param  timer_def     timer object referenced with \\ref osTimer.\n* @param  type          osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.\n* @param  argument      argument to the timer call back function.\n* @retval  timer ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osTimerCreate shall be consistent in every CMSIS-RTOS.\n*/\nosTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument)\n{\n#if (configUSE_TIMERS == 1)\n\n#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) \n  if(timer_def->controlblock != NULL) {\n    return xTimerCreateStatic((const char *)\"\",\n                      1, // period should be filled when starting the Timer using osTimerStart\n                      (type == osTimerPeriodic) ? pdTRUE : pdFALSE,\n                      (void *) argument,\n                      (TimerCallbackFunction_t)timer_def->ptimer,\n                      (StaticTimer_t *)timer_def->controlblock);\n  }\n  else {\n    return xTimerCreate((const char *)\"\",\n                      1, // period should be filled when starting the Timer using osTimerStart\n                      (type == osTimerPeriodic) ? pdTRUE : pdFALSE,\n                      (void *) argument,\n                      (TimerCallbackFunction_t)timer_def->ptimer);\n }\n#elif( configSUPPORT_STATIC_ALLOCATION == 1 )\n  return xTimerCreateStatic((const char *)\"\",\n                      1, // period should be filled when starting the Timer using osTimerStart\n                      (type == osTimerPeriodic) ? pdTRUE : pdFALSE,\n                      (void *) argument,\n                      (TimerCallbackFunction_t)timer_def->ptimer,\n                      (StaticTimer_t *)timer_def->controlblock);  \n#else\n  return xTimerCreate((const char *)\"\",\n                      1, // period should be filled when starting the Timer using osTimerStart\n                      (type == osTimerPeriodic) ? pdTRUE : pdFALSE,\n                      (void *) argument,\n                      (TimerCallbackFunction_t)timer_def->ptimer);\n#endif\n\n#else \n\treturn NULL;\n#endif\n}\n\n/**\n* @brief  Start or restart a timer.\n* @param  timer_id      timer ID obtained by \\ref osTimerCreate.\n* @param  millisec      time delay value of the timer.\n* @retval  status code that indicates the execution status of the function\n* @note   MUST REMAIN UNCHANGED: \\b osTimerStart shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osTimerStart (osTimerId timer_id, uint32_t millisec)\n{\n  osStatus result = osOK;\n#if (configUSE_TIMERS == 1)  \n  portBASE_TYPE taskWoken = pdFALSE;\n  TickType_t ticks = millisec / portTICK_PERIOD_MS;\n\n  if (ticks == 0)\n    ticks = 1;\n    \n  if (inHandlerMode()) \n  {\n    if (xTimerChangePeriodFromISR(timer_id, ticks, &taskWoken) != pdPASS)\n    {\n      result = osErrorOS;\n    }\n    else\n    {\n      portEND_SWITCHING_ISR(taskWoken);     \n    }\n  }\n  else \n  {\n    if (xTimerChangePeriod(timer_id, ticks, 0) != pdPASS)\n      result = osErrorOS;\n  }\n\n#else \n  result = osErrorOS;\n#endif\n  return result;\n}\n\n/**\n* @brief  Stop a timer.\n* @param  timer_id      timer ID obtained by \\ref osTimerCreate\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osTimerStop shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osTimerStop (osTimerId timer_id)\n{\n  osStatus result = osOK;\n#if (configUSE_TIMERS == 1)  \n  portBASE_TYPE taskWoken = pdFALSE;\n\n  if (inHandlerMode()) {\n    if (xTimerStopFromISR(timer_id, &taskWoken) != pdPASS) {\n      return osErrorOS;\n    }\n    portEND_SWITCHING_ISR(taskWoken);\n  }\n  else {\n    if (xTimerStop(timer_id, 0) != pdPASS) {\n      result = osErrorOS;\n    }\n  }\n#else \n  result = osErrorOS;\n#endif \n  return result;\n}\n\n/**\n* @brief  Delete a timer.\n* @param  timer_id      timer ID obtained by \\ref osTimerCreate\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osTimerDelete shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osTimerDelete (osTimerId timer_id)\n{\nosStatus result = osOK;\n\n#if (configUSE_TIMERS == 1)\n\n   if (inHandlerMode()) {\n     return osErrorISR;\n  }\n  else { \n    if ((xTimerDelete(timer_id, osWaitForever )) != pdPASS) {\n      result = osErrorOS;\n    }\n  } \n    \n#else \n  result = osErrorOS;\n#endif \n \n  return result;\n}\n\n/***************************  Signal Management ********************************/\n/**\n* @brief  Set the specified Signal Flags of an active thread.\n* @param  thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @param  signals       specifies the signal flags of the thread that should be set.\n* @retval previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.\n* @note   MUST REMAIN UNCHANGED: \\b osSignalSet shall be consistent in every CMSIS-RTOS.\n*/\nint32_t osSignalSet (osThreadId thread_id, int32_t signal)\n{\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\t\n  BaseType_t xHigherPriorityTaskWoken = pdFALSE;\n  uint32_t ulPreviousNotificationValue = 0;\n  \n  if (inHandlerMode())\n  {\n    if(xTaskGenericNotifyFromISR( thread_id , (uint32_t)signal, eSetBits, &ulPreviousNotificationValue, &xHigherPriorityTaskWoken ) != pdPASS )\n      return 0x80000000;\n    \n    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\n  }  \n  else if(xTaskGenericNotify( thread_id , (uint32_t)signal, eSetBits, &ulPreviousNotificationValue) != pdPASS )\n    return 0x80000000;\n  \n  return ulPreviousNotificationValue;\n#else\n  (void) thread_id;\n  (void) signal;\n\n  return 0x80000000; /* Task Notification not supported */ \t\n#endif\n}\n\n/**\n* @brief  Clear the specified Signal Flags of an active thread.\n* @param  thread_id  thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @param  signals    specifies the signal flags of the thread that shall be cleared.\n* @retval  previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.\n* @note   MUST REMAIN UNCHANGED: \\b osSignalClear shall be consistent in every CMSIS-RTOS.\n*/\nint32_t osSignalClear (osThreadId thread_id, int32_t signal);\n\n/**\n* @brief  Wait for one or more Signal Flags to become signaled for the current \\b RUNNING thread.\n* @param  signals   wait until all specified signal flags set or 0 for any single signal flag.\n* @param  millisec  timeout value or 0 in case of no time-out.\n* @retval  event flag information or error code.\n* @note   MUST REMAIN UNCHANGED: \\b osSignalWait shall be consistent in every CMSIS-RTOS.\n*/\nosEvent osSignalWait (int32_t signals, uint32_t millisec)\n{\n  osEvent ret;\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\t\n  TickType_t ticks;\n\n  ret.value.signals = 0;  \n  ticks = 0;\n  if (millisec == osWaitForever) {\n    ticks = portMAX_DELAY;\n  }\n  else if (millisec != 0) {\n    ticks = millisec / portTICK_PERIOD_MS;\n    if (ticks == 0) {\n      ticks = 1;\n    }\n  }  \n  \n  if (inHandlerMode())\n  {\n    ret.status = osErrorISR;  /*Not allowed in ISR*/\n  }\n  else\n  {\n    if(xTaskNotifyWait( 0,(uint32_t) signals, (uint32_t *)&ret.value.signals, ticks) != pdTRUE)\n    {\n      if(ticks == 0)  ret.status = osOK;\n      else  ret.status = osEventTimeout;\n    }\n    else if(ret.value.signals < 0)\n    {\n      ret.status =  osErrorValue;     \n    }\n    else  ret.status =  osEventSignal;\n  }\n#else\n  (void) signals;\n  (void) millisec;\n\t\n  ret.status =  osErrorOS;\t/* Task Notification not supported */\n#endif\n  \n  return ret;\n}\n\n/****************************  Mutex Management ********************************/\n/**\n* @brief  Create and Initialize a Mutex object\n* @param  mutex_def     mutex definition referenced with \\ref osMutex.\n* @retval  mutex ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osMutexCreate shall be consistent in every CMSIS-RTOS.\n*/\nosMutexId osMutexCreate (const osMutexDef_t *mutex_def)\n{\n#if ( configUSE_MUTEXES == 1)\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n  if (mutex_def->controlblock != NULL) {\n    return xSemaphoreCreateMutexStatic( mutex_def->controlblock );\n     }\n  else {\n    return xSemaphoreCreateMutex(); \n  }\n#elif ( configSUPPORT_STATIC_ALLOCATION == 1 )\n  return xSemaphoreCreateMutexStatic( mutex_def->controlblock );\n#else  \n    return xSemaphoreCreateMutex(); \n#endif\n#else\n  return NULL;\n#endif\n}\n\n/**\n* @brief Wait until a Mutex becomes available\n* @param mutex_id      mutex ID obtained by \\ref osMutexCreate.\n* @param millisec      timeout value or 0 in case of no time-out.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osMutexWait shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osMutexWait (osMutexId mutex_id, uint32_t millisec)\n{\n  TickType_t ticks;\n  portBASE_TYPE taskWoken = pdFALSE;  \n  \n  \n  if (mutex_id == NULL) {\n    return osErrorParameter;\n  }\n  \n  ticks = 0;\n  if (millisec == osWaitForever) {\n    ticks = portMAX_DELAY;\n  }\n  else if (millisec != 0) {\n    ticks = millisec / portTICK_PERIOD_MS;\n    if (ticks == 0) {\n      ticks = 1;\n    }\n  }\n  \n  if (inHandlerMode()) {\n    if (xSemaphoreTakeFromISR(mutex_id, &taskWoken) != pdTRUE) {\n      return osErrorOS;\n    }\n\tportEND_SWITCHING_ISR(taskWoken);\n  } \n  else if (xSemaphoreTake(mutex_id, ticks) != pdTRUE) {\n    return osErrorOS;\n  }\n  \n  return osOK;\n}\n\n/**\n* @brief Release a Mutex that was obtained by \\ref osMutexWait\n* @param mutex_id      mutex ID obtained by \\ref osMutexCreate.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osMutexRelease shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osMutexRelease (osMutexId mutex_id)\n{\n  osStatus result = osOK;\n  portBASE_TYPE taskWoken = pdFALSE;\n  \n  if (inHandlerMode()) {\n    if (xSemaphoreGiveFromISR(mutex_id, &taskWoken) != pdTRUE) {\n      return osErrorOS;\n    }\n    portEND_SWITCHING_ISR(taskWoken);\n  }\n  else if (xSemaphoreGive(mutex_id) != pdTRUE) \n  {\n    result = osErrorOS;\n  }\n  return result;\n}\n\n/**\n* @brief Delete a Mutex\n* @param mutex_id  mutex ID obtained by \\ref osMutexCreate.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osMutexDelete shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osMutexDelete (osMutexId mutex_id)\n{\n  if (inHandlerMode()) {\n    return osErrorISR;\n  }\n\n  vQueueDelete(mutex_id);\n\n  return osOK;\n}\n\n/********************  Semaphore Management Functions **************************/\n\n#if (defined (osFeature_Semaphore)  &&  (osFeature_Semaphore != 0))\n\n/**\n* @brief Create and Initialize a Semaphore object used for managing resources\n* @param semaphore_def semaphore definition referenced with \\ref osSemaphore.\n* @param count         number of available resources.\n* @retval  semaphore ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osSemaphoreCreate shall be consistent in every CMSIS-RTOS.\n*/\nosSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count)\n{ \n#if( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n  osSemaphoreId sema;\n  \n  if (semaphore_def->controlblock != NULL){\n    if (count == 1) {\n      return xSemaphoreCreateBinaryStatic( semaphore_def->controlblock );\n    }\n    else {\n#if (configUSE_COUNTING_SEMAPHORES == 1 )\n      return xSemaphoreCreateCountingStatic( count, count, semaphore_def->controlblock );\n#else\n      return NULL;\n#endif\n    }\n  }\n  else {\n    if (count == 1) {\n      vSemaphoreCreateBinary(sema);\n      return sema;\n    }\n    else {\n#if (configUSE_COUNTING_SEMAPHORES == 1 )\t\n      return xSemaphoreCreateCounting(count, count);\n#else\n      return NULL;\n#endif    \n    }\n  }\n#elif ( configSUPPORT_STATIC_ALLOCATION == 1 ) // configSUPPORT_DYNAMIC_ALLOCATION == 0\n  if(count == 1) {\n    return xSemaphoreCreateBinaryStatic( semaphore_def->controlblock );\n  }\n  else\n  {\n#if (configUSE_COUNTING_SEMAPHORES == 1 )\n      return xSemaphoreCreateCountingStatic( count, count, semaphore_def->controlblock );\n#else\n      return NULL;\n#endif    \n  }\n#else  // configSUPPORT_STATIC_ALLOCATION == 0  && configSUPPORT_DYNAMIC_ALLOCATION == 1\n  osSemaphoreId sema;\n \n  if (count == 1) {\n    vSemaphoreCreateBinary(sema);\n    return sema;\n  }\n  else {\n#if (configUSE_COUNTING_SEMAPHORES == 1 )\t\n    return xSemaphoreCreateCounting(count, count);\n#else\n    return NULL;\n#endif\n  }\n#endif\n}\n\n/**\n* @brief Wait until a Semaphore token becomes available\n* @param  semaphore_id  semaphore object referenced with \\ref osSemaphore.\n* @param  millisec      timeout value or 0 in case of no time-out.\n* @retval  number of available tokens, or -1 in case of incorrect parameters.\n* @note   MUST REMAIN UNCHANGED: \\b osSemaphoreWait shall be consistent in every CMSIS-RTOS.\n*/\nint32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec)\n{\n  TickType_t ticks;\n  portBASE_TYPE taskWoken = pdFALSE;  \n  \n  \n  if (semaphore_id == NULL) {\n    return osErrorParameter;\n  }\n  \n  ticks = 0;\n  if (millisec == osWaitForever) {\n    ticks = portMAX_DELAY;\n  }\n  else if (millisec != 0) {\n    ticks = millisec / portTICK_PERIOD_MS;\n    if (ticks == 0) {\n      ticks = 1;\n    }\n  }\n  \n  if (inHandlerMode()) {\n    if (xSemaphoreTakeFromISR(semaphore_id, &taskWoken) != pdTRUE) {\n      return osErrorOS;\n    }\n\tportEND_SWITCHING_ISR(taskWoken);\n  }  \n  else if (xSemaphoreTake(semaphore_id, ticks) != pdTRUE) {\n    return osErrorOS;\n  }\n  \n  return osOK;\n}\n\n/**\n* @brief Release a Semaphore token\n* @param  semaphore_id  semaphore object referenced with \\ref osSemaphore.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osSemaphoreRelease shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osSemaphoreRelease (osSemaphoreId semaphore_id)\n{\n  osStatus result = osOK;\n  portBASE_TYPE taskWoken = pdFALSE;\n  \n  \n  if (inHandlerMode()) {\n    if (xSemaphoreGiveFromISR(semaphore_id, &taskWoken) != pdTRUE) {\n      return osErrorOS;\n    }\n    portEND_SWITCHING_ISR(taskWoken);\n  }\n  else {\n    if (xSemaphoreGive(semaphore_id) != pdTRUE) {\n      result = osErrorOS;\n    }\n  }\n  \n  return result;\n}\n\n/**\n* @brief Delete a Semaphore\n* @param  semaphore_id  semaphore object referenced with \\ref osSemaphore.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osSemaphoreDelete shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osSemaphoreDelete (osSemaphoreId semaphore_id)\n{\n  if (inHandlerMode()) {\n    return osErrorISR;\n  }\n\n  vSemaphoreDelete(semaphore_id);\n\n  return osOK; \n}\n\n#endif    /* Use Semaphores */\n\n/*******************   Memory Pool Management Functions  ***********************/\n\n#if (defined (osFeature_Pool)  &&  (osFeature_Pool != 0)) \n\n//TODO\n//This is a primitive and inefficient wrapper around the existing FreeRTOS memory management.\n//A better implementation will have to modify heap_x.c!\n\n\ntypedef struct os_pool_cb {\n  void *pool;\n  uint8_t *markers;\n  uint32_t pool_sz;\n  uint32_t item_sz;\n  uint32_t currentIndex;\n} os_pool_cb_t;\n\n\n/**\n* @brief Create and Initialize a memory pool\n* @param  pool_def      memory pool definition referenced with \\ref osPool.\n* @retval  memory pool ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osPoolCreate shall be consistent in every CMSIS-RTOS.\n*/\nosPoolId osPoolCreate (const osPoolDef_t *pool_def)\n{\n#if (configSUPPORT_DYNAMIC_ALLOCATION == 1)\n  osPoolId thePool;\n  int itemSize = 4 * ((pool_def->item_sz + 3) / 4);\n  uint32_t i;\n  \n  /* First have to allocate memory for the pool control block. */\n thePool = pvPortMalloc(sizeof(os_pool_cb_t));\n\n  \n  if (thePool) {\n    thePool->pool_sz = pool_def->pool_sz;\n    thePool->item_sz = itemSize;\n    thePool->currentIndex = 0;\n    \n    /* Memory for markers */\n    thePool->markers = pvPortMalloc(pool_def->pool_sz);\n   \n    if (thePool->markers) {\n      /* Now allocate the pool itself. */\n     thePool->pool = pvPortMalloc(pool_def->pool_sz * itemSize);\n      \n      if (thePool->pool) {\n        for (i = 0; i < pool_def->pool_sz; i++) {\n          thePool->markers[i] = 0;\n        }\n      }\n      else {\n        vPortFree(thePool->markers);\n        vPortFree(thePool);\n        thePool = NULL;\n      }\n    }\n    else {\n      vPortFree(thePool);\n      thePool = NULL;\n    }\n  }\n\n  return thePool;\n \n#else\n  return NULL;\n#endif\n}\n\n/**\n* @brief Allocate a memory block from a memory pool\n* @param pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n* @retval  address of the allocated memory block or NULL in case of no memory available.\n* @note   MUST REMAIN UNCHANGED: \\b osPoolAlloc shall be consistent in every CMSIS-RTOS.\n*/\nvoid *osPoolAlloc (osPoolId pool_id)\n{\n  int dummy = 0;\n  void *p = NULL;\n  uint32_t i;\n  uint32_t index;\n  \n  if (inHandlerMode()) {\n    dummy = portSET_INTERRUPT_MASK_FROM_ISR();\n  }\n  else {\n    vPortEnterCritical();\n  }\n  \n  for (i = 0; i < pool_id->pool_sz; i++) {\n    index = (pool_id->currentIndex + i) % pool_id->pool_sz;\n    \n    if (pool_id->markers[index] == 0) {\n      pool_id->markers[index] = 1;\n      p = (void *)((uint32_t)(pool_id->pool) + (index * pool_id->item_sz));\n      pool_id->currentIndex = index;\n      break;\n    }\n  }\n  \n  if (inHandlerMode()) {\n    portCLEAR_INTERRUPT_MASK_FROM_ISR(dummy);\n  }\n  else {\n    vPortExitCritical();\n  }\n  \n  return p;\n}\n\n/**\n* @brief Allocate a memory block from a memory pool and set memory block to zero\n* @param  pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n* @retval  address of the allocated memory block or NULL in case of no memory available.\n* @note   MUST REMAIN UNCHANGED: \\b osPoolCAlloc shall be consistent in every CMSIS-RTOS.\n*/\nvoid *osPoolCAlloc (osPoolId pool_id)\n{\n  void *p = osPoolAlloc(pool_id);\n  \n  if (p != NULL)\n  {\n    memset(p, 0, sizeof(pool_id->pool_sz));\n  }\n  \n  return p;\n}\n\n/**\n* @brief Return an allocated memory block back to a specific memory pool\n* @param  pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n* @param  block         address of the allocated memory block that is returned to the memory pool.\n* @retval  status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osPoolFree shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osPoolFree (osPoolId pool_id, void *block)\n{\n  uint32_t index;\n  \n  if (pool_id == NULL) {\n    return osErrorParameter;\n  }\n  \n  if (block == NULL) {\n    return osErrorParameter;\n  }\n  \n  if (block < pool_id->pool) {\n    return osErrorParameter;\n  }\n  \n  index = (uint32_t)block - (uint32_t)(pool_id->pool);\n  if (index % pool_id->item_sz) {\n    return osErrorParameter;\n  }\n  index = index / pool_id->item_sz;\n  if (index >= pool_id->pool_sz) {\n    return osErrorParameter;\n  }\n  \n  pool_id->markers[index] = 0;\n  \n  return osOK;\n}\n\n\n#endif   /* Use Memory Pool Management */\n\n/*******************   Message Queue Management Functions  *********************/\n\n#if (defined (osFeature_MessageQ)  &&  (osFeature_MessageQ != 0)) /* Use Message Queues */\n\n/**\n* @brief Create and Initialize a Message Queue\n* @param queue_def     queue definition referenced with \\ref osMessageQ.\n* @param  thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n* @retval  message queue ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osMessageCreate shall be consistent in every CMSIS-RTOS.\n*/\nosMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id)\n{\n  (void) thread_id;\n  \n#if( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n  if ((queue_def->buffer != NULL) && (queue_def->controlblock != NULL)) {\n    return xQueueCreateStatic(queue_def->queue_sz, queue_def->item_sz, queue_def->buffer, queue_def->controlblock);\n  }\n  else {\n    return xQueueCreate(queue_def->queue_sz, queue_def->item_sz);\n  }\n#elif ( configSUPPORT_STATIC_ALLOCATION == 1 )\n  return xQueueCreateStatic(queue_def->queue_sz, queue_def->item_sz, queue_def->buffer, queue_def->controlblock);\n#else  \n  return xQueueCreate(queue_def->queue_sz, queue_def->item_sz);\n#endif\n}\n\n/**\n* @brief Put a Message to a Queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @param  info      message information.\n* @param  millisec  timeout value or 0 in case of no time-out.\n* @retval status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osMessagePut shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec)\n{\n  portBASE_TYPE taskWoken = pdFALSE;\n  TickType_t ticks;\n  \n  ticks = millisec / portTICK_PERIOD_MS;\n  if (ticks == 0) {\n    ticks = 1;\n  }\n  \n  if (inHandlerMode()) {\n    if (xQueueSendFromISR(queue_id, &info, &taskWoken) != pdTRUE) {\n      return osErrorOS;\n    }\n    portEND_SWITCHING_ISR(taskWoken);\n  }\n  else {\n    if (xQueueSend(queue_id, &info, ticks) != pdTRUE) {\n      return osErrorOS;\n    }\n  }\n  \n  return osOK;\n}\n\n/**\n* @brief Get a Message or Wait for a Message from a Queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @param  millisec  timeout value or 0 in case of no time-out.\n* @retval event information that includes status code.\n* @note   MUST REMAIN UNCHANGED: \\b osMessageGet shall be consistent in every CMSIS-RTOS.\n*/\nosEvent osMessageGet (osMessageQId queue_id, uint32_t millisec)\n{\n  portBASE_TYPE taskWoken;\n  TickType_t ticks;\n  osEvent event;\n  \n  event.def.message_id = queue_id;\n  event.value.v = 0;\n  \n  if (queue_id == NULL) {\n    event.status = osErrorParameter;\n    return event;\n  }\n  \n  taskWoken = pdFALSE;\n  \n  ticks = 0;\n  if (millisec == osWaitForever) {\n    ticks = portMAX_DELAY;\n  }\n  else if (millisec != 0) {\n    ticks = millisec / portTICK_PERIOD_MS;\n    if (ticks == 0) {\n      ticks = 1;\n    }\n  }\n  \n  if (inHandlerMode()) {\n    if (xQueueReceiveFromISR(queue_id, &event.value.v, &taskWoken) == pdTRUE) {\n      /* We have mail */\n      event.status = osEventMessage;\n    }\n    else {\n      event.status = osOK;\n    }\n    portEND_SWITCHING_ISR(taskWoken);\n  }\n  else {\n    if (xQueueReceive(queue_id, &event.value.v, ticks) == pdTRUE) {\n      /* We have mail */\n      event.status = osEventMessage;\n    }\n    else {\n      event.status = (ticks == 0) ? osOK : osEventTimeout;\n    }\n  }\n  \n  return event;\n}\n\n#endif     /* Use Message Queues */\n\n/********************   Mail Queue Management Functions  ***********************/\n#if (defined (osFeature_MailQ)  &&  (osFeature_MailQ != 0))  /* Use Mail Queues */\n\n\ntypedef struct os_mailQ_cb {\n  const osMailQDef_t *queue_def;\n  QueueHandle_t handle;\n  osPoolId pool;\n} os_mailQ_cb_t;\n\n/**\n* @brief Create and Initialize mail queue\n* @param  queue_def     reference to the mail queue definition obtain with \\ref osMailQ\n* @param   thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n* @retval mail queue ID for reference by other functions or NULL in case of error.\n* @note   MUST REMAIN UNCHANGED: \\b osMailCreate shall be consistent in every CMSIS-RTOS.\n*/\nosMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id)\n{\n#if (configSUPPORT_DYNAMIC_ALLOCATION == 1)\n  (void) thread_id;\n  \n  osPoolDef_t pool_def = {queue_def->queue_sz, queue_def->item_sz, NULL};\n  \n  /* Create a mail queue control block */\n\n  *(queue_def->cb) = pvPortMalloc(sizeof(struct os_mailQ_cb));\n\n  if (*(queue_def->cb) == NULL) {\n    return NULL;\n  }\n  (*(queue_def->cb))->queue_def = queue_def;\n  \n  /* Create a queue in FreeRTOS */\n  (*(queue_def->cb))->handle = xQueueCreate(queue_def->queue_sz, sizeof(void *));\n\n\n  if ((*(queue_def->cb))->handle == NULL) {\n    vPortFree(*(queue_def->cb));\n    return NULL;\n  }\n  \n  /* Create a mail pool */\n  (*(queue_def->cb))->pool = osPoolCreate(&pool_def);\n  if ((*(queue_def->cb))->pool == NULL) {\n    //TODO: Delete queue. How to do it in FreeRTOS?\n    vPortFree(*(queue_def->cb));\n    return NULL;\n  }\n  \n  return *(queue_def->cb);\n#else\n  return NULL;\n#endif\n}\n\n/**\n* @brief Allocate a memory block from a mail\n* @param  queue_id      mail queue ID obtained with \\ref osMailCreate.\n* @param  millisec      timeout value or 0 in case of no time-out.\n* @retval pointer to memory block that can be filled with mail or NULL in case error.\n* @note   MUST REMAIN UNCHANGED: \\b osMailAlloc shall be consistent in every CMSIS-RTOS.\n*/\nvoid *osMailAlloc (osMailQId queue_id, uint32_t millisec)\n{\n  (void) millisec;\n  void *p;\n  \n  \n  if (queue_id == NULL) {\n    return NULL;\n  }\n  \n  p = osPoolAlloc(queue_id->pool);\n  \n  return p;\n}\n\n/**\n* @brief Allocate a memory block from a mail and set memory block to zero\n* @param  queue_id      mail queue ID obtained with \\ref osMailCreate.\n* @param  millisec      timeout value or 0 in case of no time-out.\n* @retval pointer to memory block that can be filled with mail or NULL in case error.\n* @note   MUST REMAIN UNCHANGED: \\b osMailCAlloc shall be consistent in every CMSIS-RTOS.\n*/\nvoid *osMailCAlloc (osMailQId queue_id, uint32_t millisec)\n{\n  uint32_t i;\n  void *p = osMailAlloc(queue_id, millisec);\n  \n  if (p) {\n    for (i = 0; i < queue_id->queue_def->item_sz; i++) {\n      ((uint8_t *)p)[i] = 0;\n    }\n  }\n  \n  return p;\n}\n\n/**\n* @brief Put a mail to a queue\n* @param  queue_id      mail queue ID obtained with \\ref osMailCreate.\n* @param  mail          memory block previously allocated with \\ref osMailAlloc or \\ref osMailCAlloc.\n* @retval status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osMailPut shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osMailPut (osMailQId queue_id, void *mail)\n{\n  portBASE_TYPE taskWoken;\n  \n  \n  if (queue_id == NULL) {\n    return osErrorParameter;\n  }\n  \n  taskWoken = pdFALSE;\n  \n  if (inHandlerMode()) {\n    if (xQueueSendFromISR(queue_id->handle, &mail, &taskWoken) != pdTRUE) {\n      return osErrorOS;\n    }\n    portEND_SWITCHING_ISR(taskWoken);\n  }\n  else {\n    if (xQueueSend(queue_id->handle, &mail, 0) != pdTRUE) { \n      return osErrorOS;\n    }\n  }\n  \n  return osOK;\n}\n\n/**\n* @brief Get a mail from a queue\n* @param  queue_id   mail queue ID obtained with \\ref osMailCreate.\n* @param millisec    timeout value or 0 in case of no time-out\n* @retval event that contains mail information or error code.\n* @note   MUST REMAIN UNCHANGED: \\b osMailGet shall be consistent in every CMSIS-RTOS.\n*/\nosEvent osMailGet (osMailQId queue_id, uint32_t millisec)\n{\n  portBASE_TYPE taskWoken;\n  TickType_t ticks;\n  osEvent event;\n  \n  event.def.mail_id = queue_id;\n  \n  if (queue_id == NULL) {\n    event.status = osErrorParameter;\n    return event;\n  }\n  \n  taskWoken = pdFALSE;\n  \n  ticks = 0;\n  if (millisec == osWaitForever) {\n    ticks = portMAX_DELAY;\n  }\n  else if (millisec != 0) {\n    ticks = millisec / portTICK_PERIOD_MS;\n    if (ticks == 0) {\n      ticks = 1;\n    }\n  }\n  \n  if (inHandlerMode()) {\n    if (xQueueReceiveFromISR(queue_id->handle, &event.value.p, &taskWoken) == pdTRUE) {\n      /* We have mail */\n      event.status = osEventMail;\n    }\n    else {\n      event.status = osOK;\n    }\n    portEND_SWITCHING_ISR(taskWoken);\n  }\n  else {\n    if (xQueueReceive(queue_id->handle, &event.value.p, ticks) == pdTRUE) {\n      /* We have mail */\n      event.status = osEventMail;\n    }\n    else {\n      event.status = (ticks == 0) ? osOK : osEventTimeout;\n    }\n  }\n  \n  return event;\n}\n\n/**\n* @brief Free a memory block from a mail\n* @param  queue_id mail queue ID obtained with \\ref osMailCreate.\n* @param  mail     pointer to the memory block that was obtained with \\ref osMailGet.\n* @retval status code that indicates the execution status of the function.\n* @note   MUST REMAIN UNCHANGED: \\b osMailFree shall be consistent in every CMSIS-RTOS.\n*/\nosStatus osMailFree (osMailQId queue_id, void *mail)\n{\n  if (queue_id == NULL) {\n    return osErrorParameter;\n  }\n  \n  return osPoolFree(queue_id->pool, mail);\n}\n#endif  /* Use Mail Queues */\n\n/*************************** Additional specific APIs to Free RTOS ************/\n/**\n* @brief  Handles the tick increment\n* @param  none.\n* @retval none.\n*/\nvoid osSystickHandler(void)\n{\n\n#if (INCLUDE_xTaskGetSchedulerState  == 1 )\n  if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)\n  {\n#endif  /* INCLUDE_xTaskGetSchedulerState */  \n    xPortSysTickHandler();\n#if (INCLUDE_xTaskGetSchedulerState  == 1 )\n  }\n#endif  /* INCLUDE_xTaskGetSchedulerState */  \n}\n\n#if ( INCLUDE_eTaskGetState == 1 )\n/**\n* @brief  Obtain the state of any thread.\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  the stae of the thread, states are encoded by the osThreadState enumerated type.\n*/\nosThreadState osThreadGetState(osThreadId thread_id)\n{\n  eTaskState ThreadState;\n  osThreadState result;\n  \n  ThreadState = eTaskGetState(thread_id);\n  \n  switch (ThreadState)\n  {\n  case eRunning :\n    result = osThreadRunning;\n    break;\n  case eReady :\n    result = osThreadReady;\n    break;\n  case eBlocked :\n    result = osThreadBlocked;\n    break;\n  case eSuspended :\n    result = osThreadSuspended;\n    break;\n  case eDeleted :\n    result = osThreadDeleted;\n    break;\n  default:\n    result = osThreadError;\n  } \n  \n  return result;\n}\n#endif /* INCLUDE_eTaskGetState */\n\n#if (INCLUDE_eTaskGetState == 1)\n/**\n* @brief Check if a thread is already suspended or not.\n* @param thread_id thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval status code that indicates the execution status of the function.\n*/\nosStatus osThreadIsSuspended(osThreadId thread_id)\n{\n  if (eTaskGetState(thread_id) == eSuspended)\n    return osOK;\n  else\n    return osErrorOS;\n}\n#endif /* INCLUDE_eTaskGetState */\n/**\n* @brief  Suspend execution of a thread.\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadSuspend (osThreadId thread_id)\n{\n#if (INCLUDE_vTaskSuspend == 1)\n    vTaskSuspend(thread_id);\n  \n  return osOK;\n#else\n  return osErrorResource;\n#endif\n}\n\n/**\n* @brief  Resume execution of a suspended thread.\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadResume (osThreadId thread_id)\n{\n#if (INCLUDE_vTaskSuspend == 1)  \n  if(inHandlerMode())\n  {\n    if (xTaskResumeFromISR(thread_id) == pdTRUE)\n    {\n      portYIELD_FROM_ISR(pdTRUE);\n    }\n  }\n  else\n  {\n    vTaskResume(thread_id);\n  }\n  return osOK;\n#else\n  return osErrorResource;\n#endif\n}\n\n/**\n* @brief  Suspend execution of a all active threads.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadSuspendAll (void)\n{\n  vTaskSuspendAll();\n  \n  return osOK;\n}\n\n/**\n* @brief  Resume execution of a all suspended threads.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadResumeAll (void)\n{\n  if (xTaskResumeAll() == pdTRUE)\n    return osOK;\n  else\n    return osErrorOS;\n  \n}\n\n/**\n* @brief  Delay a task until a specified time\n* @param   PreviousWakeTime   Pointer to a variable that holds the time at which the \n*          task was last unblocked. PreviousWakeTime must be initialised with the current time\n*          prior to its first use (PreviousWakeTime = osKernelSysTick() )\n* @param   millisec    time delay value\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osDelayUntil (uint32_t *PreviousWakeTime, uint32_t millisec)\n{\n#if INCLUDE_vTaskDelayUntil\n  TickType_t ticks = (millisec / portTICK_PERIOD_MS);\n  vTaskDelayUntil((TickType_t *) PreviousWakeTime, ticks ? ticks : 1);\n  \n  return osOK;\n#else\n  (void) millisec;\n  (void) PreviousWakeTime;\n  \n  return osErrorResource;\n#endif\n}\n\n/**\n* @brief   Abort the delay for a specific thread\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId   \n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osAbortDelay(osThreadId thread_id)\n{\n#if INCLUDE_xTaskAbortDelay\n  \n  xTaskAbortDelay(thread_id);\n  \n  return osOK;\n#else\n  (void) thread_id;\n  \n  return osErrorResource;\n#endif\n}\n\n/**\n* @brief   Lists all the current threads, along with their current state \n*          and stack usage high water mark.\n* @param   buffer   A buffer into which the above mentioned details\n*          will be written\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadList (uint8_t *buffer)\n{\n#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) )\n  vTaskList((char *)buffer);\n#endif\n  return osOK;\n}\n\n/**\n* @brief  Receive an item from a queue without removing the item from the queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @param  millisec  timeout value or 0 in case of no time-out.\n* @retval event information that includes status code.\n*/\nosEvent osMessagePeek (osMessageQId queue_id, uint32_t millisec)\n{\n  TickType_t ticks;\n  osEvent event;\n  \n  event.def.message_id = queue_id;\n  \n  if (queue_id == NULL) {\n    event.status = osErrorParameter;\n    return event;\n  }\n  \n  ticks = 0;\n  if (millisec == osWaitForever) {\n    ticks = portMAX_DELAY;\n  }\n  else if (millisec != 0) {\n    ticks = millisec / portTICK_PERIOD_MS;\n    if (ticks == 0) {\n      ticks = 1;\n    }\n  }\n  \n  if (xQueuePeek(queue_id, &event.value.v, ticks) == pdTRUE) \n  {\n    /* We have mail */\n    event.status = osEventMessage;\n  }\n  else \n  {\n    event.status = (ticks == 0) ? osOK : osEventTimeout;\n  }\n  \n  return event;\n}\n\n/**\n* @brief  Get the number of messaged stored in a queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @retval number of messages stored in a queue.\n*/\nuint32_t osMessageWaiting(osMessageQId queue_id)\n{\n  if (inHandlerMode()) {\n    return uxQueueMessagesWaitingFromISR(queue_id);\n  }\n  else\n  {\n    return uxQueueMessagesWaiting(queue_id);\n  }\n}\n\n/**\n* @brief  Get the available space in a message queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @retval available space in a message queue.\n*/\nuint32_t osMessageAvailableSpace(osMessageQId queue_id)  \n{\n  return uxQueueSpacesAvailable(queue_id);\n}\n\n/**\n* @brief Delete a Message Queue\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osMessageDelete (osMessageQId queue_id)\n{\n  if (inHandlerMode()) {\n    return osErrorISR;\n  }\n\n  vQueueDelete(queue_id);\n\n  return osOK; \n}\n\n/**\n* @brief  Create and Initialize a Recursive Mutex\n* @param  mutex_def     mutex definition referenced with \\ref osMutex.\n* @retval  mutex ID for reference by other functions or NULL in case of error..\n*/\nosMutexId osRecursiveMutexCreate (const osMutexDef_t *mutex_def)\n{\n#if (configUSE_RECURSIVE_MUTEXES == 1)\n#if( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n  if (mutex_def->controlblock != NULL){\n    return xSemaphoreCreateRecursiveMutexStatic( mutex_def->controlblock );\n  }\n  else {\n    return xSemaphoreCreateRecursiveMutex();\n  }\n#elif ( configSUPPORT_STATIC_ALLOCATION == 1 )\n  return xSemaphoreCreateRecursiveMutexStatic( mutex_def->controlblock );\n#else \n  return xSemaphoreCreateRecursiveMutex();\n#endif\n#else\n  return NULL;\n#endif\t\n}\n\n/**\n* @brief  Release a Recursive Mutex\n* @param   mutex_id      mutex ID obtained by \\ref osRecursiveMutexCreate.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osRecursiveMutexRelease (osMutexId mutex_id)\n{\n#if (configUSE_RECURSIVE_MUTEXES == 1)\n  osStatus result = osOK;\n \n  if (xSemaphoreGiveRecursive(mutex_id) != pdTRUE) \n  {\n    result = osErrorOS;\n  }\n  return result;\n#else\n\treturn osErrorResource;\n#endif\n}\n\n/**\n* @brief  Release a Recursive Mutex\n* @param   mutex_id    mutex ID obtained by \\ref osRecursiveMutexCreate.\n* @param millisec      timeout value or 0 in case of no time-out.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osRecursiveMutexWait (osMutexId mutex_id, uint32_t millisec)\n{\n#if (configUSE_RECURSIVE_MUTEXES == 1)\n  TickType_t ticks;\n  \n  if (mutex_id == NULL)\n  {\n    return osErrorParameter;\n  }\n  \n  ticks = 0;\n  if (millisec == osWaitForever) \n  {\n    ticks = portMAX_DELAY;\n  }\n  else if (millisec != 0) \n  {\n    ticks = millisec / portTICK_PERIOD_MS;\n    if (ticks == 0) \n    {\n      ticks = 1;\n    }\n  }\n  \n  if (xSemaphoreTakeRecursive(mutex_id, ticks) != pdTRUE) \n  {\n    return osErrorOS;\n  }\n  return osOK;\n#else\n\treturn osErrorResource;\n#endif\n}\n\n/**\n* @brief  Returns the current count value of a counting semaphore\n* @param  semaphore_id  semaphore_id ID obtained by \\ref osSemaphoreCreate.\n* @retval  count value\n*/\nuint32_t osSemaphoreGetCount(osSemaphoreId semaphore_id)\n{\n  return uxSemaphoreGetCount(semaphore_id);\n}\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h",
    "content": "/* ----------------------------------------------------------------------\n * $Date:        5. February 2013\n * $Revision:    V1.02\n *\n * Project:      CMSIS-RTOS API\n * Title:        cmsis_os.h header file\n *\n * Version 0.02\n *    Initial Proposal Phase\n * Version 0.03\n *    osKernelStart added, optional feature: main started as thread\n *    osSemaphores have standard behavior\n *    osTimerCreate does not start the timer, added osTimerStart\n *    osThreadPass is renamed to osThreadYield\n * Version 1.01\n *    Support for C++ interface\n *     - const attribute removed from the osXxxxDef_t typedef's\n *     - const attribute added to the osXxxxDef macros\n *    Added: osTimerDelete, osMutexDelete, osSemaphoreDelete\n *    Added: osKernelInitialize\n * Version 1.02\n *    Control functions for short timeouts in microsecond resolution:\n *    Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec\n *    Removed: osSignalGet \n *    \n *  \n *----------------------------------------------------------------------------\n *\n * Portions Copyright  2016 STMicroelectronics International N.V. All rights reserved.\n * Portions Copyright (c) 2013 ARM LIMITED\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *  - Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  - Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n *  - Neither the name of ARM  nor the names of its contributors may be used\n *    to endorse or promote products derived from this software without\n *    specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *---------------------------------------------------------------------------*/\n\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"timers.h\"\n#include \"queue.h\"\n#include \"semphr.h\"\n#include \"event_groups.h\"\n\n/**\n\\page cmsis_os_h Header File Template: cmsis_os.h\n\nThe file \\b cmsis_os.h is a template header file for a CMSIS-RTOS compliant Real-Time Operating System (RTOS).\nEach RTOS that is compliant with CMSIS-RTOS shall provide a specific \\b cmsis_os.h header file that represents\nits implementation.\n\nThe file cmsis_os.h contains:\n - CMSIS-RTOS API function definitions\n - struct definitions for parameters and return types\n - status and priority values used by CMSIS-RTOS API functions\n - macros for defining threads and other kernel objects\n\n\n<b>Name conventions and header file modifications</b>\n\nAll definitions are prefixed with \\b os to give an unique name space for CMSIS-RTOS functions.\nDefinitions that are prefixed \\b os_ are not used in the application code but local to this header file.\nAll definitions and functions that belong to a module are grouped and have a common prefix, i.e. \\b osThread.\n\nDefinitions that are marked with <b>CAN BE CHANGED</b> can be adapted towards the needs of the actual CMSIS-RTOS implementation.\nThese definitions can be specific to the underlying RTOS kernel.\n\nDefinitions that are marked with <b>MUST REMAIN UNCHANGED</b> cannot be altered. Otherwise the CMSIS-RTOS implementation is no longer\ncompliant to the standard. Note that some functions are optional and need not to be provided by every CMSIS-RTOS implementation.\n\n\n<b>Function calls from interrupt service routines</b>\n\nThe following CMSIS-RTOS functions can be called from threads and interrupt service routines (ISR):\n  - \\ref osSignalSet\n  - \\ref osSemaphoreRelease\n  - \\ref osPoolAlloc, \\ref osPoolCAlloc, \\ref osPoolFree\n  - \\ref osMessagePut, \\ref osMessageGet\n  - \\ref osMailAlloc, \\ref osMailCAlloc, \\ref osMailGet, \\ref osMailPut, \\ref osMailFree\n\nFunctions that cannot be called from an ISR are verifying the interrupt status and return in case that they are called\nfrom an ISR context the status code \\b osErrorISR. In some implementations this condition might be caught using the HARD FAULT vector.\n\nSome CMSIS-RTOS implementations support CMSIS-RTOS function calls from multiple ISR at the same time.\nIf this is impossible, the CMSIS-RTOS rejects calls by nested ISR functions with the status code \\b osErrorISRRecursive.\n\n\n<b>Define and reference object definitions</b>\n\nWith <b>\\#define osObjectsExternal</b> objects are defined as external symbols. This allows to create a consistent header file\nthat is used throughout a project as shown below:\n\n<i>Header File</i>\n\\code\n#include <cmsis_os.h>                                         // CMSIS RTOS header file\n\n// Thread definition\nextern void thread_sample (void const *argument);             // function prototype\nosThreadDef (thread_sample, osPriorityBelowNormal, 1, 100);\n\n// Pool definition\nosPoolDef(MyPool, 10, long);\n\\endcode\n\n\nThis header file defines all objects when included in a C/C++ source file. When <b>\\#define osObjectsExternal</b> is\npresent before the header file, the objects are defined as external symbols. A single consistent header file can therefore be\nused throughout the whole project.\n\n<i>Example</i>\n\\code\n#include \"osObjects.h\"     // Definition of the CMSIS-RTOS objects\n\\endcode\n\n\\code\n#define osObjectExternal   // Objects will be defined as external symbols\n#include \"osObjects.h\"     // Reference to the CMSIS-RTOS objects\n\\endcode\n\n*/\n\n#ifndef _CMSIS_OS_H\n#define _CMSIS_OS_H\n\n/// \\note MUST REMAIN UNCHANGED: \\b osCMSIS identifies the CMSIS-RTOS API version.\n#define osCMSIS           0x10002      ///< API version (main [31:16] .sub [15:0])\n\n/// \\note CAN BE CHANGED: \\b osCMSIS_KERNEL identifies the underlying RTOS kernel and version number.\n#define osCMSIS_KERNEL    0x10000\t   ///< RTOS identification and version (main [31:16] .sub [15:0])\n\n/// \\note MUST REMAIN UNCHANGED: \\b osKernelSystemId shall be consistent in every CMSIS-RTOS.\n#define osKernelSystemId \"KERNEL V1.00\"   ///< RTOS identification string\n\n/// \\note MUST REMAIN UNCHANGED: \\b osFeature_xxx shall be consistent in every CMSIS-RTOS.\n#define osFeature_MainThread   1       ///< main thread      1=main can be thread, 0=not available\n#define osFeature_Pool         1       ///< Memory Pools:    1=available, 0=not available\n#define osFeature_MailQ        1       ///< Mail Queues:     1=available, 0=not available\n#define osFeature_MessageQ     1       ///< Message Queues:  1=available, 0=not available\n#define osFeature_Signals      8       ///< maximum number of Signal Flags available per thread\n#define osFeature_Semaphore    1      ///< osFeature_Semaphore function: 1=available, 0=not available\n#define osFeature_Wait         0       ///< osWait function: 1=available, 0=not available\n#define osFeature_SysTick      1       ///< osKernelSysTick functions: 1=available, 0=not available\n\n#ifdef  __cplusplus\nextern \"C\"\n{\n#endif\n\n\n// ==== Enumeration, structures, defines ====\n\n/// Priority used for thread control.\n/// \\note MUST REMAIN UNCHANGED: \\b osPriority shall be consistent in every CMSIS-RTOS.\ntypedef enum  {\n  osPriorityIdle          = -3,          ///< priority: idle (lowest)\n  osPriorityLow           = -2,          ///< priority: low\n  osPriorityBelowNormal   = -1,          ///< priority: below normal\n  osPriorityNormal        =  0,          ///< priority: normal (default)\n  osPriorityAboveNormal   = +1,          ///< priority: above normal\n  osPriorityHigh          = +2,          ///< priority: high\n  osPriorityRealtime      = +3,          ///< priority: realtime (highest)\n  osPriorityError         =  0x84        ///< system cannot determine priority or thread has illegal priority\n} osPriority;\n\n/// Timeout value.\n/// \\note MUST REMAIN UNCHANGED: \\b osWaitForever shall be consistent in every CMSIS-RTOS.\n#define osWaitForever     0xFFFFFFFF     ///< wait forever timeout value\n\n/// Status code values returned by CMSIS-RTOS functions.\n/// \\note MUST REMAIN UNCHANGED: \\b osStatus shall be consistent in every CMSIS-RTOS.\ntypedef enum  {\n  osOK                    =     0,       ///< function completed; no error or event occurred.\n  osEventSignal           =  0x08,       ///< function completed; signal event occurred.\n  osEventMessage          =  0x10,       ///< function completed; message event occurred.\n  osEventMail             =  0x20,       ///< function completed; mail event occurred.\n  osEventTimeout          =  0x40,       ///< function completed; timeout occurred.\n  osErrorParameter        =  0x80,       ///< parameter error: a mandatory parameter was missing or specified an incorrect object.\n  osErrorResource         =  0x81,       ///< resource not available: a specified resource was not available.\n  osErrorTimeoutResource  =  0xC1,       ///< resource not available within given time: a specified resource was not available within the timeout period.\n  osErrorISR              =  0x82,       ///< not allowed in ISR context: the function cannot be called from interrupt service routines.\n  osErrorISRRecursive     =  0x83,       ///< function called multiple times from ISR with same object.\n  osErrorPriority         =  0x84,       ///< system cannot determine priority or thread has illegal priority.\n  osErrorNoMemory         =  0x85,       ///< system is out of memory: it was impossible to allocate or reserve memory for the operation.\n  osErrorValue            =  0x86,       ///< value of a parameter is out of range.\n  osErrorOS               =  0xFF,       ///< unspecified RTOS error: run-time error but no other error message fits.\n  os_status_reserved      =  0x7FFFFFFF  ///< prevent from enum down-size compiler optimization.\n} osStatus;\n\n#if ( INCLUDE_eTaskGetState == 1 )\n/* Thread state returned by osThreadGetState */\ntypedef enum {\n\tosThreadRunning   = 0x0,\t      /* A thread is querying the state of itself, so must be running. */\n\tosThreadReady     = 0x1 ,\t\t\t        /* The thread being queried is in a read or pending ready list. */\n\tosThreadBlocked   = 0x2,\t\t        /* The thread being queried is in the Blocked state. */\n\tosThreadSuspended = 0x3,\t      /* The thread being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */\n\tosThreadDeleted   = 0x4,\t\t          /* The thread being queried has been deleted, but its TCB has not yet been freed. */   \n  osThreadError     = 0x7FFFFFFF\n} osThreadState;\n#endif /* INCLUDE_eTaskGetState */\n\n/// Timer type value for the timer definition.\n/// \\note MUST REMAIN UNCHANGED: \\b os_timer_type shall be consistent in every CMSIS-RTOS.\ntypedef enum  {\n  osTimerOnce             =     0,       ///< one-shot timer\n  osTimerPeriodic         =     1        ///< repeating timer\n} os_timer_type;\n\n/// Entry point of a thread.\n/// \\note MUST REMAIN UNCHANGED: \\b os_pthread shall be consistent in every CMSIS-RTOS.\ntypedef void (*os_pthread) (void const *argument);\n\n/// Entry point of a timer call back function.\n/// \\note MUST REMAIN UNCHANGED: \\b os_ptimer shall be consistent in every CMSIS-RTOS.\ntypedef void (*os_ptimer) (void const *argument);\n\n// >>> the following data type definitions may shall adapted towards a specific RTOS\n\n/// Thread ID identifies the thread (pointer to a thread control block).\n/// \\note CAN BE CHANGED: \\b os_thread_cb is implementation specific in every CMSIS-RTOS.\ntypedef TaskHandle_t osThreadId;\n\n/// Timer ID identifies the timer (pointer to a timer control block).\n/// \\note CAN BE CHANGED: \\b os_timer_cb is implementation specific in every CMSIS-RTOS.\ntypedef TimerHandle_t osTimerId;\n\n/// Mutex ID identifies the mutex (pointer to a mutex control block).\n/// \\note CAN BE CHANGED: \\b os_mutex_cb is implementation specific in every CMSIS-RTOS.\ntypedef SemaphoreHandle_t osMutexId;\n\n/// Semaphore ID identifies the semaphore (pointer to a semaphore control block).\n/// \\note CAN BE CHANGED: \\b os_semaphore_cb is implementation specific in every CMSIS-RTOS.\ntypedef SemaphoreHandle_t osSemaphoreId;\n\n/// Pool ID identifies the memory pool (pointer to a memory pool control block).\n/// \\note CAN BE CHANGED: \\b os_pool_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_pool_cb *osPoolId;\n\n/// Message ID identifies the message queue (pointer to a message queue control block).\n/// \\note CAN BE CHANGED: \\b os_messageQ_cb is implementation specific in every CMSIS-RTOS.\ntypedef QueueHandle_t osMessageQId;\n\n/// Mail ID identifies the mail queue (pointer to a mail queue control block).\n/// \\note CAN BE CHANGED: \\b os_mailQ_cb is implementation specific in every CMSIS-RTOS.\ntypedef struct os_mailQ_cb *osMailQId;\n\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\ntypedef StaticTask_t               osStaticThreadDef_t;\ntypedef StaticTimer_t              osStaticTimerDef_t;\ntypedef StaticSemaphore_t          osStaticMutexDef_t;         \ntypedef StaticSemaphore_t          osStaticSemaphoreDef_t;\ntypedef StaticQueue_t              osStaticMessageQDef_t;\n\n#endif\n\n\n\n\n/// Thread Definition structure contains startup information of a thread.\n/// \\note CAN BE CHANGED: \\b os_thread_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_thread_def  {\n  char                   *name;        ///< Thread name \n  os_pthread             pthread;      ///< start address of thread function\n  osPriority             tpriority;    ///< initial thread priority\n  uint32_t               instances;    ///< maximum number of instances of that thread function\n  uint32_t               stacksize;    ///< stack size requirements in bytes; 0 is default stack size\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n  uint32_t               *buffer;      ///< stack buffer for static allocation; NULL for dynamic allocation\n  osStaticThreadDef_t    *controlblock;     ///< control block to hold thread's data for static allocation; NULL for dynamic allocation\n#endif\n} osThreadDef_t;\n\n/// Timer Definition structure contains timer parameters.\n/// \\note CAN BE CHANGED: \\b os_timer_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_timer_def  {\n  os_ptimer                 ptimer;    ///< start address of a timer function\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n  osStaticTimerDef_t        *controlblock;      ///< control block to hold timer's data for static allocation; NULL for dynamic allocation\n#endif\n} osTimerDef_t;\n\n/// Mutex Definition structure contains setup information for a mutex.\n/// \\note CAN BE CHANGED: \\b os_mutex_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_mutex_def  {\n  uint32_t                   dummy;    ///< dummy value.\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n  osStaticMutexDef_t         *controlblock;      ///< control block for static allocation; NULL for dynamic allocation\n#endif\n} osMutexDef_t;\n\n/// Semaphore Definition structure contains setup information for a semaphore.\n/// \\note CAN BE CHANGED: \\b os_semaphore_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_semaphore_def  {\n  uint32_t                   dummy;    ///< dummy value.\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n  osStaticSemaphoreDef_t     *controlblock;      ///< control block for static allocation; NULL for dynamic allocation\n#endif\n} osSemaphoreDef_t;\n\n/// Definition structure for memory block allocation.\n/// \\note CAN BE CHANGED: \\b os_pool_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_pool_def  {\n  uint32_t                 pool_sz;    ///< number of items (elements) in the pool\n  uint32_t                 item_sz;    ///< size of an item\n  void                       *pool;    ///< pointer to memory for pool\n} osPoolDef_t;\n\n/// Definition structure for message queue.\n/// \\note CAN BE CHANGED: \\b os_messageQ_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_messageQ_def  {\n  uint32_t                queue_sz;    ///< number of elements in the queue\n  uint32_t                item_sz;    ///< size of an item\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n  uint8_t                 *buffer;      ///< buffer for static allocation; NULL for dynamic allocation\n  osStaticMessageQDef_t   *controlblock;     ///< control block to hold queue's data for static allocation; NULL for dynamic allocation\n#endif\n  //void                       *pool;    ///< memory array for messages\n} osMessageQDef_t;\n\n/// Definition structure for mail queue.\n/// \\note CAN BE CHANGED: \\b os_mailQ_def is implementation specific in every CMSIS-RTOS.\ntypedef struct os_mailQ_def  {\n  uint32_t                queue_sz;    ///< number of elements in the queue\n  uint32_t                 item_sz;    ///< size of an item\n  struct os_mailQ_cb **cb;\n} osMailQDef_t;\n\n/// Event structure contains detailed information about an event.\n/// \\note MUST REMAIN UNCHANGED: \\b os_event shall be consistent in every CMSIS-RTOS.\n///       However the struct may be extended at the end.\ntypedef struct  {\n  osStatus                 status;     ///< status code: event or error information\n  union  {\n    uint32_t                    v;     ///< message as 32-bit value\n    void                       *p;     ///< message or mail as void pointer\n    int32_t               signals;     ///< signal flags\n  } value;                             ///< event value\n  union  {\n    osMailQId             mail_id;     ///< mail id obtained by \\ref osMailCreate\n    osMessageQId       message_id;     ///< message id obtained by \\ref osMessageCreate\n  } def;                               ///< event definition\n} osEvent;\n\n\n//  ==== Kernel Control Functions ====\n\n/// Initialize the RTOS Kernel for creating objects.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osKernelInitialize shall be consistent in every CMSIS-RTOS.\nosStatus osKernelInitialize (void);\n\n/// Start the RTOS Kernel.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osKernelStart shall be consistent in every CMSIS-RTOS.\nosStatus osKernelStart (void);\n\n/// Check if the RTOS kernel is already started.\n/// \\note MUST REMAIN UNCHANGED: \\b osKernelRunning shall be consistent in every CMSIS-RTOS.\n/// \\return 0 RTOS is not started, 1 RTOS is started.\nint32_t osKernelRunning(void);\n\n#if (defined (osFeature_SysTick)  &&  (osFeature_SysTick != 0))     // System Timer available\n\n/// Get the RTOS kernel system timer counter \n/// \\note MUST REMAIN UNCHANGED: \\b osKernelSysTick shall be consistent in every CMSIS-RTOS.\n/// \\return RTOS kernel system timer as 32-bit value \nuint32_t osKernelSysTick (void);\n\n/// The RTOS kernel system timer frequency in Hz\n/// \\note Reflects the system timer setting and is typically defined in a configuration file.\n#define osKernelSysTickFrequency      (configTICK_RATE_HZ)\n\n/// Convert a microseconds value to a RTOS kernel system timer value.\n/// \\param         microsec     time value in microseconds.\n/// \\return time value normalized to the \\ref osKernelSysTickFrequency\n#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)\n\n#endif    // System Timer available\n\n//  ==== Thread Management ====\n\n/// Create a Thread Definition with function, priority, and stack requirements.\n/// \\param         name         name of the thread function.\n/// \\param         priority     initial priority of the thread function.\n/// \\param         instances    number of possible thread instances.\n/// \\param         stacksz      stack size (in bytes) requirements for the thread function.\n/// \\note CAN BE CHANGED: The parameters to \\b osThreadDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osThreadDef(name, thread, priority, instances, stacksz)  \\\nextern const osThreadDef_t os_thread_def_##name\n#else                            // define the object\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n#define osThreadDef(name, thread, priority, instances, stacksz)  \\\nconst osThreadDef_t os_thread_def_##name = \\\n{ #name, (thread), (priority), (instances), (stacksz), NULL, NULL }\n\n#define osThreadStaticDef(name, thread, priority, instances, stacksz, buffer, control)  \\\nconst osThreadDef_t os_thread_def_##name = \\\n{ #name, (thread), (priority), (instances), (stacksz), (buffer), (control) }\n#else //configSUPPORT_STATIC_ALLOCATION == 0\n\n#define osThreadDef(name, thread, priority, instances, stacksz)  \\\nconst osThreadDef_t os_thread_def_##name = \\\n{ #name, (thread), (priority), (instances), (stacksz)}\n#endif\n#endif\n\n/// Access a Thread definition.\n/// \\param         name          name of the thread definition object.\n/// \\note CAN BE CHANGED: The parameter to \\b osThread shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osThread(name)  \\\n&os_thread_def_##name\n\n/// Create a thread and add it to Active Threads and set it to state READY.\n/// \\param[in]     thread_def    thread definition referenced with \\ref osThread.\n/// \\param[in]     argument      pointer that is passed to the thread function as start argument.\n/// \\return thread ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadCreate shall be consistent in every CMSIS-RTOS.\nosThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument);\n\n/// Return the thread ID of the current running thread.\n/// \\return thread ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadGetId shall be consistent in every CMSIS-RTOS.\nosThreadId osThreadGetId (void);\n\n/// Terminate execution of a thread and remove it from Active Threads.\n/// \\param[in]     thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadTerminate shall be consistent in every CMSIS-RTOS.\nosStatus osThreadTerminate (osThreadId thread_id);\n\n/// Pass control to next thread that is in state \\b READY.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadYield shall be consistent in every CMSIS-RTOS.\nosStatus osThreadYield (void);\n\n/// Change priority of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     priority      new priority value for the thread function.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadSetPriority shall be consistent in every CMSIS-RTOS.\nosStatus osThreadSetPriority (osThreadId thread_id, osPriority priority);\n\n/// Get current priority of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\return current priority value of the thread function.\n/// \\note MUST REMAIN UNCHANGED: \\b osThreadGetPriority shall be consistent in every CMSIS-RTOS.\nosPriority osThreadGetPriority (osThreadId thread_id);\n\n\n//  ==== Generic Wait Functions ====\n\n/// Wait for Timeout (Time Delay).\n/// \\param[in]     millisec      time delay value\n/// \\return status code that indicates the execution status of the function.\nosStatus osDelay (uint32_t millisec);\n\n#if (defined (osFeature_Wait)  &&  (osFeature_Wait != 0))     // Generic Wait available\n\n/// Wait for Signal, Message, Mail, or Timeout.\n/// \\param[in] millisec          timeout value or 0 in case of no time-out\n/// \\return event that contains signal, message, or mail information or error code.\n/// \\note MUST REMAIN UNCHANGED: \\b osWait shall be consistent in every CMSIS-RTOS.\nosEvent osWait (uint32_t millisec);\n\n#endif  // Generic Wait available\n\n\n//  ==== Timer Management Functions ====\n/// Define a Timer object.\n/// \\param         name          name of the timer object.\n/// \\param         function      name of the timer call back function.\n/// \\note CAN BE CHANGED: The parameter to \\b osTimerDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osTimerDef(name, function)  \\\nextern const osTimerDef_t os_timer_def_##name\n#else                            // define the object\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 ) \n#define osTimerDef(name, function)  \\\nconst osTimerDef_t os_timer_def_##name = \\\n{ (function), NULL }\n\n#define osTimerStaticDef(name, function, control)  \\\nconst osTimerDef_t os_timer_def_##name = \\\n{ (function), (control) }\n#else //configSUPPORT_STATIC_ALLOCATION == 0\n#define osTimerDef(name, function)  \\\nconst osTimerDef_t os_timer_def_##name = \\\n{ (function) }\n#endif\n#endif\n\n/// Access a Timer definition.\n/// \\param         name          name of the timer object.\n/// \\note CAN BE CHANGED: The parameter to \\b osTimer shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osTimer(name) \\\n&os_timer_def_##name\n\n/// Create a timer.\n/// \\param[in]     timer_def     timer object referenced with \\ref osTimer.\n/// \\param[in]     type          osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.\n/// \\param[in]     argument      argument to the timer call back function.\n/// \\return timer ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerCreate shall be consistent in every CMSIS-RTOS.\nosTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument);\n\n/// Start or restart a timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\param[in]     millisec      time delay value of the timer.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerStart shall be consistent in every CMSIS-RTOS.\nosStatus osTimerStart (osTimerId timer_id, uint32_t millisec);\n\n/// Stop the timer.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerStop shall be consistent in every CMSIS-RTOS.\nosStatus osTimerStop (osTimerId timer_id);\n\n/// Delete a timer that was created by \\ref osTimerCreate.\n/// \\param[in]     timer_id      timer ID obtained by \\ref osTimerCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osTimerDelete shall be consistent in every CMSIS-RTOS.\nosStatus osTimerDelete (osTimerId timer_id);\n\n\n//  ==== Signal Management ====\n\n/// Set the specified Signal Flags of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     signals       specifies the signal flags of the thread that should be set.\n/// \\return osOK if successful, osErrorOS if failed.\n/// \\note MUST REMAIN UNCHANGED: \\b osSignalSet shall be consistent in every CMSIS-RTOS.\nint32_t osSignalSet (osThreadId thread_id, int32_t signals);\n\n/// Clear the specified Signal Flags of an active thread.\n/// \\param[in]     thread_id     thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n/// \\param[in]     signals       specifies the signal flags of the thread that shall be cleared.\n/// \\return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.\n/// \\note MUST REMAIN UNCHANGED: \\b osSignalClear shall be consistent in every CMSIS-RTOS.\nint32_t osSignalClear (osThreadId thread_id, int32_t signals);\n\n/// Wait for one or more Signal Flags to become signaled for the current \\b RUNNING thread.\n/// \\param[in]     signals       wait until all specified signal flags set or 0 for any single signal flag.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out.\n/// \\return event flag information or error code.\n/// \\note MUST REMAIN UNCHANGED: \\b osSignalWait shall be consistent in every CMSIS-RTOS.\nosEvent osSignalWait (int32_t signals, uint32_t millisec);\n\n\n//  ==== Mutex Management ====\n\n/// Define a Mutex.\n/// \\param         name          name of the mutex object.\n/// \\note CAN BE CHANGED: The parameter to \\b osMutexDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMutexDef(name)  \\\nextern const osMutexDef_t os_mutex_def_##name\n#else                            // define the object\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n#define osMutexDef(name)  \\\nconst osMutexDef_t os_mutex_def_##name = { 0, NULL }\n\n#define osMutexStaticDef(name, control)  \\\nconst osMutexDef_t os_mutex_def_##name = { 0, (control) }\n#else //configSUPPORT_STATIC_ALLOCATION == 0\n#define osMutexDef(name)  \\\nconst osMutexDef_t os_mutex_def_##name = { 0 }\n\n#endif\n\n#endif\n\n/// Access a Mutex definition.\n/// \\param         name          name of the mutex object.\n/// \\note CAN BE CHANGED: The parameter to \\b osMutex shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMutex(name)  \\\n&os_mutex_def_##name\n\n/// Create and Initialize a Mutex object.\n/// \\param[in]     mutex_def     mutex definition referenced with \\ref osMutex.\n/// \\return mutex ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexCreate shall be consistent in every CMSIS-RTOS.\nosMutexId osMutexCreate (const osMutexDef_t *mutex_def);\n\n/// Wait until a Mutex becomes available.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexWait shall be consistent in every CMSIS-RTOS.\nosStatus osMutexWait (osMutexId mutex_id, uint32_t millisec);\n\n/// Release a Mutex that was obtained by \\ref osMutexWait.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexRelease shall be consistent in every CMSIS-RTOS.\nosStatus osMutexRelease (osMutexId mutex_id);\n\n/// Delete a Mutex that was created by \\ref osMutexCreate.\n/// \\param[in]     mutex_id      mutex ID obtained by \\ref osMutexCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMutexDelete shall be consistent in every CMSIS-RTOS.\nosStatus osMutexDelete (osMutexId mutex_id);\n\n\n//  ==== Semaphore Management Functions ====\n\n#if (defined (osFeature_Semaphore)  &&  (osFeature_Semaphore != 0))     // Semaphore available\n\n/// Define a Semaphore object.\n/// \\param         name          name of the semaphore object.\n/// \\note CAN BE CHANGED: The parameter to \\b osSemaphoreDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osSemaphoreDef(name)  \\\nextern const osSemaphoreDef_t os_semaphore_def_##name\n#else                            // define the object\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n#define osSemaphoreDef(name)  \\\nconst osSemaphoreDef_t os_semaphore_def_##name = { 0, NULL }\n\n#define osSemaphoreStaticDef(name, control)  \\\nconst osSemaphoreDef_t os_semaphore_def_##name = { 0, (control) }\n\n#else //configSUPPORT_STATIC_ALLOCATION == 0\n#define osSemaphoreDef(name)  \\\nconst osSemaphoreDef_t os_semaphore_def_##name = { 0 }\n#endif\n#endif\n\n/// Access a Semaphore definition.\n/// \\param         name          name of the semaphore object.\n/// \\note CAN BE CHANGED: The parameter to \\b osSemaphore shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osSemaphore(name)  \\\n&os_semaphore_def_##name\n\n/// Create and Initialize a Semaphore object used for managing resources.\n/// \\param[in]     semaphore_def semaphore definition referenced with \\ref osSemaphore.\n/// \\param[in]     count         number of available resources.\n/// \\return semaphore ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreCreate shall be consistent in every CMSIS-RTOS.\nosSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count);\n\n/// Wait until a Semaphore token becomes available.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out.\n/// \\return number of available tokens, or -1 in case of incorrect parameters.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreWait shall be consistent in every CMSIS-RTOS.\nint32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec);\n\n/// Release a Semaphore token.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreRelease shall be consistent in every CMSIS-RTOS.\nosStatus osSemaphoreRelease (osSemaphoreId semaphore_id);\n\n/// Delete a Semaphore that was created by \\ref osSemaphoreCreate.\n/// \\param[in]     semaphore_id  semaphore object referenced with \\ref osSemaphoreCreate.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osSemaphoreDelete shall be consistent in every CMSIS-RTOS.\nosStatus osSemaphoreDelete (osSemaphoreId semaphore_id);\n\n#endif     // Semaphore available\n\n\n//  ==== Memory Pool Management Functions ====\n\n#if (defined (osFeature_Pool)  &&  (osFeature_Pool != 0))  // Memory Pool Management available\n\n/// \\brief Define a Memory Pool.\n/// \\param         name          name of the memory pool.\n/// \\param         no            maximum number of blocks (objects) in the memory pool.\n/// \\param         type          data type of a single block (object).\n/// \\note CAN BE CHANGED: The parameter to \\b osPoolDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osPoolDef(name, no, type)   \\\nextern const osPoolDef_t os_pool_def_##name\n#else                            // define the object\n#define osPoolDef(name, no, type)   \\\nconst osPoolDef_t os_pool_def_##name = \\\n{ (no), sizeof(type), NULL }\n#endif\n\n/// \\brief Access a Memory Pool definition.\n/// \\param         name          name of the memory pool\n/// \\note CAN BE CHANGED: The parameter to \\b osPool shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osPool(name) \\\n&os_pool_def_##name\n\n/// Create and Initialize a memory pool.\n/// \\param[in]     pool_def      memory pool definition referenced with \\ref osPool.\n/// \\return memory pool ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolCreate shall be consistent in every CMSIS-RTOS.\nosPoolId osPoolCreate (const osPoolDef_t *pool_def);\n\n/// Allocate a memory block from a memory pool.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\return address of the allocated memory block or NULL in case of no memory available.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osPoolAlloc (osPoolId pool_id);\n\n/// Allocate a memory block from a memory pool and set memory block to zero.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\return address of the allocated memory block or NULL in case of no memory available.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolCAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osPoolCAlloc (osPoolId pool_id);\n\n/// Return an allocated memory block back to a specific memory pool.\n/// \\param[in]     pool_id       memory pool ID obtain referenced with \\ref osPoolCreate.\n/// \\param[in]     block         address of the allocated memory block that is returned to the memory pool.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osPoolFree shall be consistent in every CMSIS-RTOS.\nosStatus osPoolFree (osPoolId pool_id, void *block);\n\n#endif   // Memory Pool Management available\n\n\n//  ==== Message Queue Management Functions ====\n\n#if (defined (osFeature_MessageQ)  &&  (osFeature_MessageQ != 0))     // Message Queues available\n\n/// \\brief Create a Message Queue Definition.\n/// \\param         name          name of the queue.\n/// \\param         queue_sz      maximum number of messages in the queue.\n/// \\param         type          data type of a single message element (for debugger).\n/// \\note CAN BE CHANGED: The parameter to \\b osMessageQDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMessageQDef(name, queue_sz, type)   \\\nextern const osMessageQDef_t os_messageQ_def_##name\n#else                            // define the object\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n#define osMessageQDef(name, queue_sz, type)   \\\nconst osMessageQDef_t os_messageQ_def_##name = \\\n{ (queue_sz), sizeof (type), NULL, NULL  }\n\n#define osMessageQStaticDef(name, queue_sz, type, buffer, control)   \\\nconst osMessageQDef_t os_messageQ_def_##name = \\\n{ (queue_sz), sizeof (type) , (buffer), (control)}\n#else //configSUPPORT_STATIC_ALLOCATION == 1\n#define osMessageQDef(name, queue_sz, type)   \\\nconst osMessageQDef_t os_messageQ_def_##name = \\\n{ (queue_sz), sizeof (type) }\n\n#endif\n#endif\n\n/// \\brief Access a Message Queue Definition.\n/// \\param         name          name of the queue\n/// \\note CAN BE CHANGED: The parameter to \\b osMessageQ shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMessageQ(name) \\\n&os_messageQ_def_##name\n\n/// Create and Initialize a Message Queue.\n/// \\param[in]     queue_def     queue definition referenced with \\ref osMessageQ.\n/// \\param[in]     thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n/// \\return message queue ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMessageCreate shall be consistent in every CMSIS-RTOS.\nosMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id);\n\n/// Put a Message to a Queue.\n/// \\param[in]     queue_id      message queue ID obtained with \\ref osMessageCreate.\n/// \\param[in]     info          message information.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMessagePut shall be consistent in every CMSIS-RTOS.\nosStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec);\n\n/// Get a Message or Wait for a Message from a Queue.\n/// \\param[in]     queue_id      message queue ID obtained with \\ref osMessageCreate.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out.\n/// \\return event information that includes status code.\n/// \\note MUST REMAIN UNCHANGED: \\b osMessageGet shall be consistent in every CMSIS-RTOS.\nosEvent osMessageGet (osMessageQId queue_id, uint32_t millisec);\n\n#endif     // Message Queues available\n\n\n//  ==== Mail Queue Management Functions ====\n\n#if (defined (osFeature_MailQ)  &&  (osFeature_MailQ != 0))     // Mail Queues available\n\n/// \\brief Create a Mail Queue Definition.\n/// \\param         name          name of the queue\n/// \\param         queue_sz      maximum number of messages in queue\n/// \\param         type          data type of a single message element\n/// \\note CAN BE CHANGED: The parameter to \\b osMailQDef shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#if defined (osObjectsExternal)  // object is external\n#define osMailQDef(name, queue_sz, type) \\\nextern struct os_mailQ_cb *os_mailQ_cb_##name \\\nextern osMailQDef_t os_mailQ_def_##name\n#else                            // define the object\n#define osMailQDef(name, queue_sz, type) \\\nstruct os_mailQ_cb *os_mailQ_cb_##name; \\\nconst osMailQDef_t os_mailQ_def_##name =  \\\n{ (queue_sz), sizeof (type), (&os_mailQ_cb_##name) }\n#endif\n\n/// \\brief Access a Mail Queue Definition.\n/// \\param         name          name of the queue\n/// \\note CAN BE CHANGED: The parameter to \\b osMailQ shall be consistent but the\n///       macro body is implementation specific in every CMSIS-RTOS.\n#define osMailQ(name)  \\\n&os_mailQ_def_##name\n\n/// Create and Initialize mail queue.\n/// \\param[in]     queue_def     reference to the mail queue definition obtain with \\ref osMailQ\n/// \\param[in]     thread_id     thread ID (obtained by \\ref osThreadCreate or \\ref osThreadGetId) or NULL.\n/// \\return mail queue ID for reference by other functions or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailCreate shall be consistent in every CMSIS-RTOS.\nosMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id);\n\n/// Allocate a memory block from a mail.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out\n/// \\return pointer to memory block that can be filled with mail or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osMailAlloc (osMailQId queue_id, uint32_t millisec);\n\n/// Allocate a memory block from a mail and set memory block to zero.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out\n/// \\return pointer to memory block that can be filled with mail or NULL in case of error.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailCAlloc shall be consistent in every CMSIS-RTOS.\nvoid *osMailCAlloc (osMailQId queue_id, uint32_t millisec);\n\n/// Put a mail to a queue.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     mail          memory block previously allocated with \\ref osMailAlloc or \\ref osMailCAlloc.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailPut shall be consistent in every CMSIS-RTOS.\nosStatus osMailPut (osMailQId queue_id, void *mail);\n\n/// Get a mail from a queue.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     millisec      timeout value or 0 in case of no time-out\n/// \\return event that contains mail information or error code.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailGet shall be consistent in every CMSIS-RTOS.\nosEvent osMailGet (osMailQId queue_id, uint32_t millisec);\n\n/// Free a memory block from a mail.\n/// \\param[in]     queue_id      mail queue ID obtained with \\ref osMailCreate.\n/// \\param[in]     mail          pointer to the memory block that was obtained with \\ref osMailGet.\n/// \\return status code that indicates the execution status of the function.\n/// \\note MUST REMAIN UNCHANGED: \\b osMailFree shall be consistent in every CMSIS-RTOS.\nosStatus osMailFree (osMailQId queue_id, void *mail);\n\n#endif  // Mail Queues available\n\n/*************************** Additional specific APIs to Free RTOS ************/\n/**\n* @brief  Handles the tick increment\n* @param  none.\n* @retval none.\n*/\nvoid osSystickHandler(void);\n\n#if ( INCLUDE_eTaskGetState == 1 )\n/**\n* @brief  Obtain the state of any thread.\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  the stae of the thread, states are encoded by the osThreadState enumerated type.\n*/\nosThreadState osThreadGetState(osThreadId thread_id);\n#endif /* INCLUDE_eTaskGetState */\n\n#if ( INCLUDE_eTaskGetState == 1 )\n/**\n* @brief Check if a thread is already suspended or not.\n* @param thread_id thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval status code that indicates the execution status of the function.\n*/\n\nosStatus osThreadIsSuspended(osThreadId thread_id);\n\n#endif /* INCLUDE_eTaskGetState */\n\n/**\n* @brief  Suspend execution of a thread.\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadSuspend (osThreadId thread_id);\n\n/**\n* @brief  Resume execution of a suspended thread.\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadResume (osThreadId thread_id);\n\n/**\n* @brief  Suspend execution of a all active threads.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadSuspendAll (void);\n\n/**\n* @brief  Resume execution of a all suspended threads.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadResumeAll (void);\n\n/**\n* @brief  Delay a task until a specified time\n* @param   PreviousWakeTime   Pointer to a variable that holds the time at which the \n*          task was last unblocked. PreviousWakeTime must be initialised with the current time\n*          prior to its first use (PreviousWakeTime = osKernelSysTick() )\n* @param   millisec    time delay value\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osDelayUntil (uint32_t *PreviousWakeTime, uint32_t millisec);\n\n/**\n* @brief   Abort the delay for a specific thread\n* @param   thread_id   thread ID obtained by \\ref osThreadCreate or \\ref osThreadGetId   \n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osAbortDelay(osThreadId thread_id);\n\n/**\n* @brief   Lists all the current threads, along with their current state \n*          and stack usage high water mark.\n* @param   buffer   A buffer into which the above mentioned details\n*          will be written\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osThreadList (uint8_t *buffer);\n\n/**\n* @brief  Receive an item from a queue without removing the item from the queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @param  millisec  timeout value or 0 in case of no time-out.\n* @retval event information that includes status code.\n*/\nosEvent osMessagePeek (osMessageQId queue_id, uint32_t millisec);\n\n/**\n* @brief  Get the number of messaged stored in a queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @retval number of messages stored in a queue.\n*/\nuint32_t osMessageWaiting(osMessageQId queue_id);\n\n/**\n* @brief  Get the available space in a message queue.\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @retval available space in a message queue.\n*/\nuint32_t osMessageAvailableSpace(osMessageQId queue_id);\n\n/**\n* @brief Delete a Message Queue\n* @param  queue_id  message queue ID obtained with \\ref osMessageCreate.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osMessageDelete (osMessageQId queue_id);\n\n/**\n* @brief  Create and Initialize a Recursive Mutex\n* @param  mutex_def     mutex definition referenced with \\ref osMutex.\n* @retval  mutex ID for reference by other functions or NULL in case of error..\n*/\nosMutexId osRecursiveMutexCreate (const osMutexDef_t *mutex_def);\n\n/**\n* @brief  Release a Recursive Mutex\n* @param   mutex_id      mutex ID obtained by \\ref osRecursiveMutexCreate.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osRecursiveMutexRelease (osMutexId mutex_id);\n\n/**\n* @brief  Release a Recursive Mutex\n* @param   mutex_id    mutex ID obtained by \\ref osRecursiveMutexCreate.\n* @param millisec      timeout value or 0 in case of no time-out.\n* @retval  status code that indicates the execution status of the function.\n*/\nosStatus osRecursiveMutexWait (osMutexId mutex_id, uint32_t millisec);\n\n/**\n* @brief  Returns the current count value of a counting semaphore\n* @param   semaphore_id  semaphore_id ID obtained by \\ref osSemaphoreCreate.\n* @retval  count value\n*/\nuint32_t osSemaphoreGetCount(osSemaphoreId semaphore_id);\n\n#ifdef  __cplusplus\n}\n#endif\n\n#endif  // _CMSIS_OS_H\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/LICENSE",
    "content": "Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/croutine.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"croutine.h\"\n\n/* Remove the whole file is co-routines are not being used. */\n#if( configUSE_CO_ROUTINES != 0 )\n\n/*\n * Some kernel aware debuggers require data to be viewed to be global, rather\n * than file scope.\n */\n#ifdef portREMOVE_STATIC_QUALIFIER\n\t#define static\n#endif\n\n\n/* Lists for ready and blocked co-routines. --------------------*/\nstatic List_t pxReadyCoRoutineLists[ configMAX_CO_ROUTINE_PRIORITIES ];\t/*< Prioritised ready co-routines. */\nstatic List_t xDelayedCoRoutineList1;\t\t\t\t\t\t\t\t\t/*< Delayed co-routines. */\nstatic List_t xDelayedCoRoutineList2;\t\t\t\t\t\t\t\t\t/*< Delayed co-routines (two lists are used - one for delays that have overflowed the current tick count. */\nstatic List_t * pxDelayedCoRoutineList;\t\t\t\t\t\t\t\t\t/*< Points to the delayed co-routine list currently being used. */\nstatic List_t * pxOverflowDelayedCoRoutineList;\t\t\t\t\t\t\t/*< Points to the delayed co-routine list currently being used to hold co-routines that have overflowed the current tick count. */\nstatic List_t xPendingReadyCoRoutineList;\t\t\t\t\t\t\t\t/*< Holds co-routines that have been readied by an external event.  They cannot be added directly to the ready lists as the ready lists cannot be accessed by interrupts. */\n\n/* Other file private variables. --------------------------------*/\nCRCB_t * pxCurrentCoRoutine = NULL;\nstatic UBaseType_t uxTopCoRoutineReadyPriority = 0;\nstatic TickType_t xCoRoutineTickCount = 0, xLastTickCount = 0, xPassedTicks = 0;\n\n/* The initial state of the co-routine when it is created. */\n#define corINITIAL_STATE\t( 0 )\n\n/*\n * Place the co-routine represented by pxCRCB into the appropriate ready queue\n * for the priority.  It is inserted at the end of the list.\n *\n * This macro accesses the co-routine ready lists and therefore must not be\n * used from within an ISR.\n */\n#define prvAddCoRoutineToReadyQueue( pxCRCB )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tif( pxCRCB->uxPriority > uxTopCoRoutineReadyPriority )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tuxTopCoRoutineReadyPriority = pxCRCB->uxPriority;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tvListInsertEnd( ( List_t * ) &( pxReadyCoRoutineLists[ pxCRCB->uxPriority ] ), &( pxCRCB->xGenericListItem ) );\t\\\n}\n\n/*\n * Utility to ready all the lists used by the scheduler.  This is called\n * automatically upon the creation of the first co-routine.\n */\nstatic void prvInitialiseCoRoutineLists( void );\n\n/*\n * Co-routines that are readied by an interrupt cannot be placed directly into\n * the ready lists (there is no mutual exclusion).  Instead they are placed in\n * in the pending ready list in order that they can later be moved to the ready\n * list by the co-routine scheduler.\n */\nstatic void prvCheckPendingReadyList( void );\n\n/*\n * Macro that looks at the list of co-routines that are currently delayed to\n * see if any require waking.\n *\n * Co-routines are stored in the queue in the order of their wake time -\n * meaning once one co-routine has been found whose timer has not expired\n * we need not look any further down the list.\n */\nstatic void prvCheckDelayedList( void );\n\n/*-----------------------------------------------------------*/\n\nBaseType_t xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex )\n{\nBaseType_t xReturn;\nCRCB_t *pxCoRoutine;\n\n\t/* Allocate the memory that will store the co-routine control block. */\n\tpxCoRoutine = ( CRCB_t * ) pvPortMalloc( sizeof( CRCB_t ) );\n\tif( pxCoRoutine )\n\t{\n\t\t/* If pxCurrentCoRoutine is NULL then this is the first co-routine to\n\t\tbe created and the co-routine data structures need initialising. */\n\t\tif( pxCurrentCoRoutine == NULL )\n\t\t{\n\t\t\tpxCurrentCoRoutine = pxCoRoutine;\n\t\t\tprvInitialiseCoRoutineLists();\n\t\t}\n\n\t\t/* Check the priority is within limits. */\n\t\tif( uxPriority >= configMAX_CO_ROUTINE_PRIORITIES )\n\t\t{\n\t\t\tuxPriority = configMAX_CO_ROUTINE_PRIORITIES - 1;\n\t\t}\n\n\t\t/* Fill out the co-routine control block from the function parameters. */\n\t\tpxCoRoutine->uxState = corINITIAL_STATE;\n\t\tpxCoRoutine->uxPriority = uxPriority;\n\t\tpxCoRoutine->uxIndex = uxIndex;\n\t\tpxCoRoutine->pxCoRoutineFunction = pxCoRoutineCode;\n\n\t\t/* Initialise all the other co-routine control block parameters. */\n\t\tvListInitialiseItem( &( pxCoRoutine->xGenericListItem ) );\n\t\tvListInitialiseItem( &( pxCoRoutine->xEventListItem ) );\n\n\t\t/* Set the co-routine control block as a link back from the ListItem_t.\n\t\tThis is so we can get back to the containing CRCB from a generic item\n\t\tin a list. */\n\t\tlistSET_LIST_ITEM_OWNER( &( pxCoRoutine->xGenericListItem ), pxCoRoutine );\n\t\tlistSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine );\n\n\t\t/* Event lists are always in priority order. */\n\t\tlistSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), ( ( TickType_t ) configMAX_CO_ROUTINE_PRIORITIES - ( TickType_t ) uxPriority ) );\n\n\t\t/* Now the co-routine has been initialised it can be added to the ready\n\t\tlist at the correct priority. */\n\t\tprvAddCoRoutineToReadyQueue( pxCoRoutine );\n\n\t\txReturn = pdPASS;\n\t}\n\telse\n\t{\n\t\txReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nvoid vCoRoutineAddToDelayedList( TickType_t xTicksToDelay, List_t *pxEventList )\n{\nTickType_t xTimeToWake;\n\n\t/* Calculate the time to wake - this may overflow but this is\n\tnot a problem. */\n\txTimeToWake = xCoRoutineTickCount + xTicksToDelay;\n\n\t/* We must remove ourselves from the ready list before adding\n\tourselves to the blocked list as the same list item is used for\n\tboth lists. */\n\t( void ) uxListRemove( ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) );\n\n\t/* The list item will be inserted in wake time order. */\n\tlistSET_LIST_ITEM_VALUE( &( pxCurrentCoRoutine->xGenericListItem ), xTimeToWake );\n\n\tif( xTimeToWake < xCoRoutineTickCount )\n\t{\n\t\t/* Wake time has overflowed.  Place this item in the\n\t\toverflow list. */\n\t\tvListInsert( ( List_t * ) pxOverflowDelayedCoRoutineList, ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) );\n\t}\n\telse\n\t{\n\t\t/* The wake time has not overflowed, so we can use the\n\t\tcurrent block list. */\n\t\tvListInsert( ( List_t * ) pxDelayedCoRoutineList, ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) );\n\t}\n\n\tif( pxEventList )\n\t{\n\t\t/* Also add the co-routine to an event list.  If this is done then the\n\t\tfunction must be called with interrupts disabled. */\n\t\tvListInsert( pxEventList, &( pxCurrentCoRoutine->xEventListItem ) );\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvCheckPendingReadyList( void )\n{\n\t/* Are there any co-routines waiting to get moved to the ready list?  These\n\tare co-routines that have been readied by an ISR.  The ISR cannot access\n\tthe\tready lists itself. */\n\twhile( listLIST_IS_EMPTY( &xPendingReadyCoRoutineList ) == pdFALSE )\n\t{\n\t\tCRCB_t *pxUnblockedCRCB;\n\n\t\t/* The pending ready list can be accessed by an ISR. */\n\t\tportDISABLE_INTERRUPTS();\n\t\t{\n\t\t\tpxUnblockedCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( (&xPendingReadyCoRoutineList) );\n\t\t\t( void ) uxListRemove( &( pxUnblockedCRCB->xEventListItem ) );\n\t\t}\n\t\tportENABLE_INTERRUPTS();\n\n\t\t( void ) uxListRemove( &( pxUnblockedCRCB->xGenericListItem ) );\n\t\tprvAddCoRoutineToReadyQueue( pxUnblockedCRCB );\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvCheckDelayedList( void )\n{\nCRCB_t *pxCRCB;\n\n\txPassedTicks = xTaskGetTickCount() - xLastTickCount;\n\twhile( xPassedTicks )\n\t{\n\t\txCoRoutineTickCount++;\n\t\txPassedTicks--;\n\n\t\t/* If the tick count has overflowed we need to swap the ready lists. */\n\t\tif( xCoRoutineTickCount == 0 )\n\t\t{\n\t\t\tList_t * pxTemp;\n\n\t\t\t/* Tick count has overflowed so we need to swap the delay lists.  If there are\n\t\t\tany items in pxDelayedCoRoutineList here then there is an error! */\n\t\t\tpxTemp = pxDelayedCoRoutineList;\n\t\t\tpxDelayedCoRoutineList = pxOverflowDelayedCoRoutineList;\n\t\t\tpxOverflowDelayedCoRoutineList = pxTemp;\n\t\t}\n\n\t\t/* See if this tick has made a timeout expire. */\n\t\twhile( listLIST_IS_EMPTY( pxDelayedCoRoutineList ) == pdFALSE )\n\t\t{\n\t\t\tpxCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedCoRoutineList );\n\n\t\t\tif( xCoRoutineTickCount < listGET_LIST_ITEM_VALUE( &( pxCRCB->xGenericListItem ) ) )\n\t\t\t{\n\t\t\t\t/* Timeout not yet expired. */\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tportDISABLE_INTERRUPTS();\n\t\t\t{\n\t\t\t\t/* The event could have occurred just before this critical\n\t\t\t\tsection.  If this is the case then the generic list item will\n\t\t\t\thave been moved to the pending ready list and the following\n\t\t\t\tline is still valid.  Also the pvContainer parameter will have\n\t\t\t\tbeen set to NULL so the following lines are also valid. */\n\t\t\t\t( void ) uxListRemove( &( pxCRCB->xGenericListItem ) );\n\n\t\t\t\t/* Is the co-routine waiting on an event also? */\n\t\t\t\tif( pxCRCB->xEventListItem.pxContainer )\n\t\t\t\t{\n\t\t\t\t\t( void ) uxListRemove( &( pxCRCB->xEventListItem ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\tportENABLE_INTERRUPTS();\n\n\t\t\tprvAddCoRoutineToReadyQueue( pxCRCB );\n\t\t}\n\t}\n\n\txLastTickCount = xCoRoutineTickCount;\n}\n/*-----------------------------------------------------------*/\n\nvoid vCoRoutineSchedule( void )\n{\n\t/* See if any co-routines readied by events need moving to the ready lists. */\n\tprvCheckPendingReadyList();\n\n\t/* See if any delayed co-routines have timed out. */\n\tprvCheckDelayedList();\n\n\t/* Find the highest priority queue that contains ready co-routines. */\n\twhile( listLIST_IS_EMPTY( &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ) )\n\t{\n\t\tif( uxTopCoRoutineReadyPriority == 0 )\n\t\t{\n\t\t\t/* No more co-routines to check. */\n\t\t\treturn;\n\t\t}\n\t\t--uxTopCoRoutineReadyPriority;\n\t}\n\n\t/* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the co-routines\n\t of the\tsame priority get an equal share of the processor time. */\n\tlistGET_OWNER_OF_NEXT_ENTRY( pxCurrentCoRoutine, &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) );\n\n\t/* Call the co-routine. */\n\t( pxCurrentCoRoutine->pxCoRoutineFunction )( pxCurrentCoRoutine, pxCurrentCoRoutine->uxIndex );\n\n\treturn;\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvInitialiseCoRoutineLists( void )\n{\nUBaseType_t uxPriority;\n\n\tfor( uxPriority = 0; uxPriority < configMAX_CO_ROUTINE_PRIORITIES; uxPriority++ )\n\t{\n\t\tvListInitialise( ( List_t * ) &( pxReadyCoRoutineLists[ uxPriority ] ) );\n\t}\n\n\tvListInitialise( ( List_t * ) &xDelayedCoRoutineList1 );\n\tvListInitialise( ( List_t * ) &xDelayedCoRoutineList2 );\n\tvListInitialise( ( List_t * ) &xPendingReadyCoRoutineList );\n\n\t/* Start with pxDelayedCoRoutineList using list1 and the\n\tpxOverflowDelayedCoRoutineList using list2. */\n\tpxDelayedCoRoutineList = &xDelayedCoRoutineList1;\n\tpxOverflowDelayedCoRoutineList = &xDelayedCoRoutineList2;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xCoRoutineRemoveFromEventList( const List_t *pxEventList )\n{\nCRCB_t *pxUnblockedCRCB;\nBaseType_t xReturn;\n\n\t/* This function is called from within an interrupt.  It can only access\n\tevent lists and the pending ready list.  This function assumes that a\n\tcheck has already been made to ensure pxEventList is not empty. */\n\tpxUnblockedCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList );\n\t( void ) uxListRemove( &( pxUnblockedCRCB->xEventListItem ) );\n\tvListInsertEnd( ( List_t * ) &( xPendingReadyCoRoutineList ), &( pxUnblockedCRCB->xEventListItem ) );\n\n\tif( pxUnblockedCRCB->uxPriority >= pxCurrentCoRoutine->uxPriority )\n\t{\n\t\txReturn = pdTRUE;\n\t}\n\telse\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\n\treturn xReturn;\n}\n\n#endif /* configUSE_CO_ROUTINES == 0 */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/* Standard includes. */\n#include <stdlib.h>\n\n/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\nall the API functions to use the MPU wrappers.  That should only be done when\ntask.h is included from an application file. */\n#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n/* FreeRTOS includes. */\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"timers.h\"\n#include \"event_groups.h\"\n\n/* Lint e961, e750 and e9021 are suppressed as a MISRA exception justified\nbecause the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined\nfor the header files above, but not in this file, in order to generate the\ncorrect privileged Vs unprivileged linkage and placement. */\n#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021 See comment above. */\n\n/* The following bit fields convey control information in a task's event list\nitem value.  It is important they don't clash with the\ntaskEVENT_LIST_ITEM_VALUE_IN_USE definition. */\n#if configUSE_16_BIT_TICKS == 1\n\t#define eventCLEAR_EVENTS_ON_EXIT_BIT\t0x0100U\n\t#define eventUNBLOCKED_DUE_TO_BIT_SET\t0x0200U\n\t#define eventWAIT_FOR_ALL_BITS\t\t\t0x0400U\n\t#define eventEVENT_BITS_CONTROL_BYTES\t0xff00U\n#else\n\t#define eventCLEAR_EVENTS_ON_EXIT_BIT\t0x01000000UL\n\t#define eventUNBLOCKED_DUE_TO_BIT_SET\t0x02000000UL\n\t#define eventWAIT_FOR_ALL_BITS\t\t\t0x04000000UL\n\t#define eventEVENT_BITS_CONTROL_BYTES\t0xff000000UL\n#endif\n\ntypedef struct EventGroupDef_t\n{\n\tEventBits_t uxEventBits;\n\tList_t xTasksWaitingForBits;\t\t/*< List of tasks waiting for a bit to be set. */\n\n\t#if( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t uxEventGroupNumber;\n\t#endif\n\n\t#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\t\tuint8_t ucStaticallyAllocated; /*< Set to pdTRUE if the event group is statically allocated to ensure no attempt is made to free the memory. */\n\t#endif\n} EventGroup_t;\n\n/*-----------------------------------------------------------*/\n\n/*\n * Test the bits set in uxCurrentEventBits to see if the wait condition is met.\n * The wait condition is defined by xWaitForAllBits.  If xWaitForAllBits is\n * pdTRUE then the wait condition is met if all the bits set in uxBitsToWaitFor\n * are also set in uxCurrentEventBits.  If xWaitForAllBits is pdFALSE then the\n * wait condition is met if any of the bits set in uxBitsToWait for are also set\n * in uxCurrentEventBits.\n */\nstatic BaseType_t prvTestWaitCondition( const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits ) PRIVILEGED_FUNCTION;\n\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n\tEventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer )\n\t{\n\tEventGroup_t *pxEventBits;\n\n\t\t/* A StaticEventGroup_t object must be provided. */\n\t\tconfigASSERT( pxEventGroupBuffer );\n\n\t\t#if( configASSERT_DEFINED == 1 )\n\t\t{\n\t\t\t/* Sanity check that the size of the structure used to declare a\n\t\t\tvariable of type StaticEventGroup_t equals the size of the real\n\t\t\tevent group structure. */\n\t\t\tvolatile size_t xSize = sizeof( StaticEventGroup_t );\n\t\t\tconfigASSERT( xSize == sizeof( EventGroup_t ) );\n\t\t} /*lint !e529 xSize is referenced if configASSERT() is defined. */\n\t\t#endif /* configASSERT_DEFINED */\n\n\t\t/* The user has provided a statically allocated event group - use it. */\n\t\tpxEventBits = ( EventGroup_t * ) pxEventGroupBuffer; /*lint !e740 !e9087 EventGroup_t and StaticEventGroup_t are deliberately aliased for data hiding purposes and guaranteed to have the same size and alignment requirement - checked by configASSERT(). */\n\n\t\tif( pxEventBits != NULL )\n\t\t{\n\t\t\tpxEventBits->uxEventBits = 0;\n\t\t\tvListInitialise( &( pxEventBits->xTasksWaitingForBits ) );\n\n\t\t\t#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t\t\t{\n\t\t\t\t/* Both static and dynamic allocation can be used, so note that\n\t\t\t\tthis event group was created statically in case the event group\n\t\t\t\tis later deleted. */\n\t\t\t\tpxEventBits->ucStaticallyAllocated = pdTRUE;\n\t\t\t}\n\t\t\t#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n\n\t\t\ttraceEVENT_GROUP_CREATE( pxEventBits );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* xEventGroupCreateStatic should only ever be called with\n\t\t\tpxEventGroupBuffer pointing to a pre-allocated (compile time\n\t\t\tallocated) StaticEventGroup_t variable. */\n\t\t\ttraceEVENT_GROUP_CREATE_FAILED();\n\t\t}\n\n\t\treturn pxEventBits;\n\t}\n\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n\tEventGroupHandle_t xEventGroupCreate( void )\n\t{\n\tEventGroup_t *pxEventBits;\n\n\t\t/* Allocate the event group.  Justification for MISRA deviation as\n\t\tfollows:  pvPortMalloc() always ensures returned memory blocks are\n\t\taligned per the requirements of the MCU stack.  In this case\n\t\tpvPortMalloc() must return a pointer that is guaranteed to meet the\n\t\talignment requirements of the EventGroup_t structure - which (if you\n\t\tfollow it through) is the alignment requirements of the TickType_t type\n\t\t(EventBits_t being of TickType_t itself).  Therefore, whenever the\n\t\tstack alignment requirements are greater than or equal to the\n\t\tTickType_t alignment requirements the cast is safe.  In other cases,\n\t\twhere the natural word size of the architecture is less than\n\t\tsizeof( TickType_t ), the TickType_t variables will be accessed in two\n\t\tor more reads operations, and the alignment requirements is only that\n\t\tof each individual read. */\n\t\tpxEventBits = ( EventGroup_t * ) pvPortMalloc( sizeof( EventGroup_t ) ); /*lint !e9087 !e9079 see comment above. */\n\n\t\tif( pxEventBits != NULL )\n\t\t{\n\t\t\tpxEventBits->uxEventBits = 0;\n\t\t\tvListInitialise( &( pxEventBits->xTasksWaitingForBits ) );\n\n\t\t\t#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t\t\t{\n\t\t\t\t/* Both static and dynamic allocation can be used, so note this\n\t\t\t\tevent group was allocated statically in case the event group is\n\t\t\t\tlater deleted. */\n\t\t\t\tpxEventBits->ucStaticallyAllocated = pdFALSE;\n\t\t\t}\n\t\t\t#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n\t\t\ttraceEVENT_GROUP_CREATE( pxEventBits );\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceEVENT_GROUP_CREATE_FAILED(); /*lint !e9063 Else branch only exists to allow tracing and does not generate code if trace macros are not defined. */\n\t\t}\n\n\t\treturn pxEventBits;\n\t}\n\n#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\nEventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait )\n{\nEventBits_t uxOriginalBitValue, uxReturn;\nEventGroup_t *pxEventBits = xEventGroup;\nBaseType_t xAlreadyYielded;\nBaseType_t xTimeoutOccurred = pdFALSE;\n\n\tconfigASSERT( ( uxBitsToWaitFor & eventEVENT_BITS_CONTROL_BYTES ) == 0 );\n\tconfigASSERT( uxBitsToWaitFor != 0 );\n\t#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n\t{\n\t\tconfigASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );\n\t}\n\t#endif\n\n\tvTaskSuspendAll();\n\t{\n\t\tuxOriginalBitValue = pxEventBits->uxEventBits;\n\n\t\t( void ) xEventGroupSetBits( xEventGroup, uxBitsToSet );\n\n\t\tif( ( ( uxOriginalBitValue | uxBitsToSet ) & uxBitsToWaitFor ) == uxBitsToWaitFor )\n\t\t{\n\t\t\t/* All the rendezvous bits are now set - no need to block. */\n\t\t\tuxReturn = ( uxOriginalBitValue | uxBitsToSet );\n\n\t\t\t/* Rendezvous always clear the bits.  They will have been cleared\n\t\t\talready unless this is the only task in the rendezvous. */\n\t\t\tpxEventBits->uxEventBits &= ~uxBitsToWaitFor;\n\n\t\t\txTicksToWait = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif( xTicksToWait != ( TickType_t ) 0 )\n\t\t\t{\n\t\t\t\ttraceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor );\n\n\t\t\t\t/* Store the bits that the calling task is waiting for in the\n\t\t\t\ttask's event list item so the kernel knows when a match is\n\t\t\t\tfound.  Then enter the blocked state. */\n\t\t\t\tvTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | eventCLEAR_EVENTS_ON_EXIT_BIT | eventWAIT_FOR_ALL_BITS ), xTicksToWait );\n\n\t\t\t\t/* This assignment is obsolete as uxReturn will get set after\n\t\t\t\tthe task unblocks, but some compilers mistakenly generate a\n\t\t\t\twarning about uxReturn being returned without being set if the\n\t\t\t\tassignment is omitted. */\n\t\t\t\tuxReturn = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* The rendezvous bits were not set, but no block time was\n\t\t\t\tspecified - just return the current event bit value. */\n\t\t\t\tuxReturn = pxEventBits->uxEventBits;\n\t\t\t\txTimeoutOccurred = pdTRUE;\n\t\t\t}\n\t\t}\n\t}\n\txAlreadyYielded = xTaskResumeAll();\n\n\tif( xTicksToWait != ( TickType_t ) 0 )\n\t{\n\t\tif( xAlreadyYielded == pdFALSE )\n\t\t{\n\t\t\tportYIELD_WITHIN_API();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\t/* The task blocked to wait for its required bits to be set - at this\n\t\tpoint either the required bits were set or the block time expired.  If\n\t\tthe required bits were set they will have been stored in the task's\n\t\tevent list item, and they should now be retrieved then cleared. */\n\t\tuxReturn = uxTaskResetEventItemValue();\n\n\t\tif( ( uxReturn & eventUNBLOCKED_DUE_TO_BIT_SET ) == ( EventBits_t ) 0 )\n\t\t{\n\t\t\t/* The task timed out, just return the current event bit value. */\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\tuxReturn = pxEventBits->uxEventBits;\n\n\t\t\t\t/* Although the task got here because it timed out before the\n\t\t\t\tbits it was waiting for were set, it is possible that since it\n\t\t\t\tunblocked another task has set the bits.  If this is the case\n\t\t\t\tthen it needs to clear the bits before exiting. */\n\t\t\t\tif( ( uxReturn & uxBitsToWaitFor ) == uxBitsToWaitFor )\n\t\t\t\t{\n\t\t\t\t\tpxEventBits->uxEventBits &= ~uxBitsToWaitFor;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\n\t\t\txTimeoutOccurred = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The task unblocked because the bits were set. */\n\t\t}\n\n\t\t/* Control bits might be set as the task had blocked should not be\n\t\treturned. */\n\t\tuxReturn &= ~eventEVENT_BITS_CONTROL_BYTES;\n\t}\n\n\ttraceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred );\n\n\t/* Prevent compiler warnings when trace macros are not used. */\n\t( void ) xTimeoutOccurred;\n\n\treturn uxReturn;\n}\n/*-----------------------------------------------------------*/\n\nEventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait )\n{\nEventGroup_t *pxEventBits = xEventGroup;\nEventBits_t uxReturn, uxControlBits = 0;\nBaseType_t xWaitConditionMet, xAlreadyYielded;\nBaseType_t xTimeoutOccurred = pdFALSE;\n\n\t/* Check the user is not attempting to wait on the bits used by the kernel\n\titself, and that at least one bit is being requested. */\n\tconfigASSERT( xEventGroup );\n\tconfigASSERT( ( uxBitsToWaitFor & eventEVENT_BITS_CONTROL_BYTES ) == 0 );\n\tconfigASSERT( uxBitsToWaitFor != 0 );\n\t#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n\t{\n\t\tconfigASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );\n\t}\n\t#endif\n\n\tvTaskSuspendAll();\n\t{\n\t\tconst EventBits_t uxCurrentEventBits = pxEventBits->uxEventBits;\n\n\t\t/* Check to see if the wait condition is already met or not. */\n\t\txWaitConditionMet = prvTestWaitCondition( uxCurrentEventBits, uxBitsToWaitFor, xWaitForAllBits );\n\n\t\tif( xWaitConditionMet != pdFALSE )\n\t\t{\n\t\t\t/* The wait condition has already been met so there is no need to\n\t\t\tblock. */\n\t\t\tuxReturn = uxCurrentEventBits;\n\t\t\txTicksToWait = ( TickType_t ) 0;\n\n\t\t\t/* Clear the wait bits if requested to do so. */\n\t\t\tif( xClearOnExit != pdFALSE )\n\t\t\t{\n\t\t\t\tpxEventBits->uxEventBits &= ~uxBitsToWaitFor;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse if( xTicksToWait == ( TickType_t ) 0 )\n\t\t{\n\t\t\t/* The wait condition has not been met, but no block time was\n\t\t\tspecified, so just return the current value. */\n\t\t\tuxReturn = uxCurrentEventBits;\n\t\t\txTimeoutOccurred = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The task is going to block to wait for its required bits to be\n\t\t\tset.  uxControlBits are used to remember the specified behaviour of\n\t\t\tthis call to xEventGroupWaitBits() - for use when the event bits\n\t\t\tunblock the task. */\n\t\t\tif( xClearOnExit != pdFALSE )\n\t\t\t{\n\t\t\t\tuxControlBits |= eventCLEAR_EVENTS_ON_EXIT_BIT;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\tif( xWaitForAllBits != pdFALSE )\n\t\t\t{\n\t\t\t\tuxControlBits |= eventWAIT_FOR_ALL_BITS;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\t/* Store the bits that the calling task is waiting for in the\n\t\t\ttask's event list item so the kernel knows when a match is\n\t\t\tfound.  Then enter the blocked state. */\n\t\t\tvTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | uxControlBits ), xTicksToWait );\n\n\t\t\t/* This is obsolete as it will get set after the task unblocks, but\n\t\t\tsome compilers mistakenly generate a warning about the variable\n\t\t\tbeing returned without being set if it is not done. */\n\t\t\tuxReturn = 0;\n\n\t\t\ttraceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor );\n\t\t}\n\t}\n\txAlreadyYielded = xTaskResumeAll();\n\n\tif( xTicksToWait != ( TickType_t ) 0 )\n\t{\n\t\tif( xAlreadyYielded == pdFALSE )\n\t\t{\n\t\t\tportYIELD_WITHIN_API();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\t/* The task blocked to wait for its required bits to be set - at this\n\t\tpoint either the required bits were set or the block time expired.  If\n\t\tthe required bits were set they will have been stored in the task's\n\t\tevent list item, and they should now be retrieved then cleared. */\n\t\tuxReturn = uxTaskResetEventItemValue();\n\n\t\tif( ( uxReturn & eventUNBLOCKED_DUE_TO_BIT_SET ) == ( EventBits_t ) 0 )\n\t\t{\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\t/* The task timed out, just return the current event bit value. */\n\t\t\t\tuxReturn = pxEventBits->uxEventBits;\n\n\t\t\t\t/* It is possible that the event bits were updated between this\n\t\t\t\ttask leaving the Blocked state and running again. */\n\t\t\t\tif( prvTestWaitCondition( uxReturn, uxBitsToWaitFor, xWaitForAllBits ) != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xClearOnExit != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tpxEventBits->uxEventBits &= ~uxBitsToWaitFor;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t\txTimeoutOccurred = pdTRUE;\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The task unblocked because the bits were set. */\n\t\t}\n\n\t\t/* The task blocked so control bits may have been set. */\n\t\tuxReturn &= ~eventEVENT_BITS_CONTROL_BYTES;\n\t}\n\ttraceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred );\n\n\t/* Prevent compiler warnings when trace macros are not used. */\n\t( void ) xTimeoutOccurred;\n\n\treturn uxReturn;\n}\n/*-----------------------------------------------------------*/\n\nEventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear )\n{\nEventGroup_t *pxEventBits = xEventGroup;\nEventBits_t uxReturn;\n\n\t/* Check the user is not attempting to clear the bits used by the kernel\n\titself. */\n\tconfigASSERT( xEventGroup );\n\tconfigASSERT( ( uxBitsToClear & eventEVENT_BITS_CONTROL_BYTES ) == 0 );\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\ttraceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear );\n\n\t\t/* The value returned is the event group value prior to the bits being\n\t\tcleared. */\n\t\tuxReturn = pxEventBits->uxEventBits;\n\n\t\t/* Clear the bits. */\n\t\tpxEventBits->uxEventBits &= ~uxBitsToClear;\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn uxReturn;\n}\n/*-----------------------------------------------------------*/\n\n#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 1 ) )\n\n\tBaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear )\n\t{\n\t\tBaseType_t xReturn;\n\n\t\ttraceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear );\n\t\txReturn = xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToClear, NULL ); /*lint !e9087 Can't avoid cast to void* as a generic callback function not specific to this use case. Callback casts back to original type so safe. */\n\n\t\treturn xReturn;\n\t}\n\n#endif\n/*-----------------------------------------------------------*/\n\nEventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup )\n{\nUBaseType_t uxSavedInterruptStatus;\nEventGroup_t const * const pxEventBits = xEventGroup;\nEventBits_t uxReturn;\n\n\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\tuxReturn = pxEventBits->uxEventBits;\n\t}\n\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn uxReturn;\n} /*lint !e818 EventGroupHandle_t is a typedef used in other functions to so can't be pointer to const. */\n/*-----------------------------------------------------------*/\n\nEventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet )\n{\nListItem_t *pxListItem, *pxNext;\nListItem_t const *pxListEnd;\nList_t const * pxList;\nEventBits_t uxBitsToClear = 0, uxBitsWaitedFor, uxControlBits;\nEventGroup_t *pxEventBits = xEventGroup;\nBaseType_t xMatchFound = pdFALSE;\n\n\t/* Check the user is not attempting to set the bits used by the kernel\n\titself. */\n\tconfigASSERT( xEventGroup );\n\tconfigASSERT( ( uxBitsToSet & eventEVENT_BITS_CONTROL_BYTES ) == 0 );\n\n\tpxList = &( pxEventBits->xTasksWaitingForBits );\n\tpxListEnd = listGET_END_MARKER( pxList ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM.  This is checked and valid. */\n\tvTaskSuspendAll();\n\t{\n\t\ttraceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet );\n\n\t\tpxListItem = listGET_HEAD_ENTRY( pxList );\n\n\t\t/* Set the bits. */\n\t\tpxEventBits->uxEventBits |= uxBitsToSet;\n\n\t\t/* See if the new bit value should unblock any tasks. */\n\t\twhile( pxListItem != pxListEnd )\n\t\t{\n\t\t\tpxNext = listGET_NEXT( pxListItem );\n\t\t\tuxBitsWaitedFor = listGET_LIST_ITEM_VALUE( pxListItem );\n\t\t\txMatchFound = pdFALSE;\n\n\t\t\t/* Split the bits waited for from the control bits. */\n\t\t\tuxControlBits = uxBitsWaitedFor & eventEVENT_BITS_CONTROL_BYTES;\n\t\t\tuxBitsWaitedFor &= ~eventEVENT_BITS_CONTROL_BYTES;\n\n\t\t\tif( ( uxControlBits & eventWAIT_FOR_ALL_BITS ) == ( EventBits_t ) 0 )\n\t\t\t{\n\t\t\t\t/* Just looking for single bit being set. */\n\t\t\t\tif( ( uxBitsWaitedFor & pxEventBits->uxEventBits ) != ( EventBits_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\txMatchFound = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if( ( uxBitsWaitedFor & pxEventBits->uxEventBits ) == uxBitsWaitedFor )\n\t\t\t{\n\t\t\t\t/* All bits are set. */\n\t\t\t\txMatchFound = pdTRUE;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Need all bits to be set, but not all the bits were set. */\n\t\t\t}\n\n\t\t\tif( xMatchFound != pdFALSE )\n\t\t\t{\n\t\t\t\t/* The bits match.  Should the bits be cleared on exit? */\n\t\t\t\tif( ( uxControlBits & eventCLEAR_EVENTS_ON_EXIT_BIT ) != ( EventBits_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\tuxBitsToClear |= uxBitsWaitedFor;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\t/* Store the actual event flag value in the task's event list\n\t\t\t\titem before removing the task from the event list.  The\n\t\t\t\teventUNBLOCKED_DUE_TO_BIT_SET bit is set so the task knows\n\t\t\t\tthat is was unblocked due to its required bits matching, rather\n\t\t\t\tthan because it timed out. */\n\t\t\t\tvTaskRemoveFromUnorderedEventList( pxListItem, pxEventBits->uxEventBits | eventUNBLOCKED_DUE_TO_BIT_SET );\n\t\t\t}\n\n\t\t\t/* Move onto the next list item.  Note pxListItem->pxNext is not\n\t\t\tused here as the list item may have been removed from the event list\n\t\t\tand inserted into the ready/pending reading list. */\n\t\t\tpxListItem = pxNext;\n\t\t}\n\n\t\t/* Clear any bits that matched when the eventCLEAR_EVENTS_ON_EXIT_BIT\n\t\tbit was set in the control word. */\n\t\tpxEventBits->uxEventBits &= ~uxBitsToClear;\n\t}\n\t( void ) xTaskResumeAll();\n\n\treturn pxEventBits->uxEventBits;\n}\n/*-----------------------------------------------------------*/\n\nvoid vEventGroupDelete( EventGroupHandle_t xEventGroup )\n{\nEventGroup_t *pxEventBits = xEventGroup;\nconst List_t *pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits );\n\n\tvTaskSuspendAll();\n\t{\n\t\ttraceEVENT_GROUP_DELETE( xEventGroup );\n\n\t\twhile( listCURRENT_LIST_LENGTH( pxTasksWaitingForBits ) > ( UBaseType_t ) 0 )\n\t\t{\n\t\t\t/* Unblock the task, returning 0 as the event list is being deleted\n\t\t\tand cannot therefore have any bits set. */\n\t\t\tconfigASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( const ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) );\n\t\t\tvTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET );\n\t\t}\n\n\t\t#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) )\n\t\t{\n\t\t\t/* The event group can only have been allocated dynamically - free\n\t\t\tit again. */\n\t\t\tvPortFree( pxEventBits );\n\t\t}\n\t\t#elif( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )\n\t\t{\n\t\t\t/* The event group could have been allocated statically or\n\t\t\tdynamically, so check before attempting to free the memory. */\n\t\t\tif( pxEventBits->ucStaticallyAllocated == ( uint8_t ) pdFALSE )\n\t\t\t{\n\t\t\t\tvPortFree( pxEventBits );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n\t}\n\t( void ) xTaskResumeAll();\n}\n/*-----------------------------------------------------------*/\n\n/* For internal use only - execute a 'set bits' command that was pended from\nan interrupt. */\nvoid vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet )\n{\n\t( void ) xEventGroupSetBits( pvEventGroup, ( EventBits_t ) ulBitsToSet ); /*lint !e9079 Can't avoid cast to void* as a generic timer callback prototype. Callback casts back to original type so safe. */\n}\n/*-----------------------------------------------------------*/\n\n/* For internal use only - execute a 'clear bits' command that was pended from\nan interrupt. */\nvoid vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear )\n{\n\t( void ) xEventGroupClearBits( pvEventGroup, ( EventBits_t ) ulBitsToClear ); /*lint !e9079 Can't avoid cast to void* as a generic timer callback prototype. Callback casts back to original type so safe. */\n}\n/*-----------------------------------------------------------*/\n\nstatic BaseType_t prvTestWaitCondition( const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits )\n{\nBaseType_t xWaitConditionMet = pdFALSE;\n\n\tif( xWaitForAllBits == pdFALSE )\n\t{\n\t\t/* Task only has to wait for one bit within uxBitsToWaitFor to be\n\t\tset.  Is one already set? */\n\t\tif( ( uxCurrentEventBits & uxBitsToWaitFor ) != ( EventBits_t ) 0 )\n\t\t{\n\t\t\txWaitConditionMet = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Task has to wait for all the bits in uxBitsToWaitFor to be set.\n\t\tAre they set already? */\n\t\tif( ( uxCurrentEventBits & uxBitsToWaitFor ) == uxBitsToWaitFor )\n\t\t{\n\t\t\txWaitConditionMet = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n\treturn xWaitConditionMet;\n}\n/*-----------------------------------------------------------*/\n\n#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 1 ) )\n\n\tBaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken )\n\t{\n\tBaseType_t xReturn;\n\n\t\ttraceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet );\n\t\txReturn = xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken ); /*lint !e9087 Can't avoid cast to void* as a generic callback function not specific to this use case. Callback casts back to original type so safe. */\n\n\t\treturn xReturn;\n\t}\n\n#endif\n/*-----------------------------------------------------------*/\n\n#if (configUSE_TRACE_FACILITY == 1)\n\n\tUBaseType_t uxEventGroupGetNumber( void* xEventGroup )\n\t{\n\tUBaseType_t xReturn;\n\tEventGroup_t const *pxEventBits = ( EventGroup_t * ) xEventGroup; /*lint !e9087 !e9079 EventGroupHandle_t is a pointer to an EventGroup_t, but EventGroupHandle_t is kept opaque outside of this file for data hiding purposes. */\n\n\t\tif( xEventGroup == NULL )\n\t\t{\n\t\t\txReturn = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pxEventBits->uxEventGroupNumber;\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tvoid vEventGroupSetNumber( void * xEventGroup, UBaseType_t uxEventGroupNumber )\n\t{\n\t\t( ( EventGroup_t * ) xEventGroup )->uxEventGroupNumber = uxEventGroupNumber; /*lint !e9087 !e9079 EventGroupHandle_t is a pointer to an EventGroup_t, but EventGroupHandle_t is kept opaque outside of this file for data hiding purposes. */\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef INC_FREERTOS_H\n#define INC_FREERTOS_H\n\n/*\n * Include the generic headers required for the FreeRTOS port being used.\n */\n#include <stddef.h>\n\n/*\n * If stdint.h cannot be located then:\n *   + If using GCC ensure the -nostdint options is *not* being used.\n *   + Ensure the project's include path includes the directory in which your\n *     compiler stores stdint.h.\n *   + Set any compiler options necessary for it to support C99, as technically\n *     stdint.h is only mandatory with C99 (FreeRTOS does not require C99 in any\n *     other way).\n *   + The FreeRTOS download includes a simple stdint.h definition that can be\n *     used in cases where none is provided by the compiler.  The files only\n *     contains the typedefs required to build FreeRTOS.  Read the instructions\n *     in FreeRTOS/source/stdint.readme for more information.\n */\n#include <stdint.h> /* READ COMMENT ABOVE. */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Application specific configuration options. */\n#include \"FreeRTOSConfig.h\"\n\n/* Basic FreeRTOS definitions. */\n#include \"projdefs.h\"\n\n/* Definitions specific to the port being used. */\n#include \"portable.h\"\n\n/* Must be defaulted before configUSE_NEWLIB_REENTRANT is used below. */\n#ifndef configUSE_NEWLIB_REENTRANT\n\t#define configUSE_NEWLIB_REENTRANT 0\n#endif\n\n/* Required if struct _reent is used. */\n#if ( configUSE_NEWLIB_REENTRANT == 1 )\n\t#include <reent.h>\n#endif\n/*\n * Check all the required application specific macros have been defined.\n * These macros are application specific and (as downloaded) are defined\n * within FreeRTOSConfig.h.\n */\n\n#ifndef configMINIMAL_STACK_SIZE\n\t#error Missing definition:  configMINIMAL_STACK_SIZE must be defined in FreeRTOSConfig.h.  configMINIMAL_STACK_SIZE defines the size (in words) of the stack allocated to the idle task.  Refer to the demo project provided for your port for a suitable value.\n#endif\n\n#ifndef configMAX_PRIORITIES\n\t#error Missing definition:  configMAX_PRIORITIES must be defined in FreeRTOSConfig.h.  See the Configuration section of the FreeRTOS API documentation for details.\n#endif\n\n#if configMAX_PRIORITIES < 1\n\t#error configMAX_PRIORITIES must be defined to be greater than or equal to 1.\n#endif\n\n#ifndef configUSE_PREEMPTION\n\t#error Missing definition:  configUSE_PREEMPTION must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\n#endif\n\n#ifndef configUSE_IDLE_HOOK\n\t#error Missing definition:  configUSE_IDLE_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\n#endif\n\n#ifndef configUSE_TICK_HOOK\n\t#error Missing definition:  configUSE_TICK_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\n#endif\n\n#ifndef configUSE_16_BIT_TICKS\n\t#error Missing definition:  configUSE_16_BIT_TICKS must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\n#endif\n\n#ifndef configUSE_CO_ROUTINES\n\t#define configUSE_CO_ROUTINES 0\n#endif\n\n#ifndef INCLUDE_vTaskPrioritySet\n\t#define INCLUDE_vTaskPrioritySet 0\n#endif\n\n#ifndef INCLUDE_uxTaskPriorityGet\n\t#define INCLUDE_uxTaskPriorityGet 0\n#endif\n\n#ifndef INCLUDE_vTaskDelete\n\t#define INCLUDE_vTaskDelete 0\n#endif\n\n#ifndef INCLUDE_vTaskSuspend\n\t#define INCLUDE_vTaskSuspend 0\n#endif\n\n#ifndef INCLUDE_vTaskDelayUntil\n\t#define INCLUDE_vTaskDelayUntil 0\n#endif\n\n#ifndef INCLUDE_vTaskDelay\n\t#define INCLUDE_vTaskDelay 0\n#endif\n\n#ifndef INCLUDE_xTaskGetIdleTaskHandle\n\t#define INCLUDE_xTaskGetIdleTaskHandle 0\n#endif\n\n#ifndef INCLUDE_xTaskAbortDelay\n\t#define INCLUDE_xTaskAbortDelay 0\n#endif\n\n#ifndef INCLUDE_xQueueGetMutexHolder\n\t#define INCLUDE_xQueueGetMutexHolder 0\n#endif\n\n#ifndef INCLUDE_xSemaphoreGetMutexHolder\n\t#define INCLUDE_xSemaphoreGetMutexHolder INCLUDE_xQueueGetMutexHolder\n#endif\n\n#ifndef INCLUDE_xTaskGetHandle\n\t#define INCLUDE_xTaskGetHandle 0\n#endif\n\n#ifndef INCLUDE_uxTaskGetStackHighWaterMark\n\t#define INCLUDE_uxTaskGetStackHighWaterMark 0\n#endif\n\n#ifndef INCLUDE_uxTaskGetStackHighWaterMark2\n\t#define INCLUDE_uxTaskGetStackHighWaterMark2 0\n#endif\n\n#ifndef INCLUDE_eTaskGetState\n\t#define INCLUDE_eTaskGetState 0\n#endif\n\n#ifndef INCLUDE_xTaskResumeFromISR\n\t#define INCLUDE_xTaskResumeFromISR 1\n#endif\n\n#ifndef INCLUDE_xTimerPendFunctionCall\n\t#define INCLUDE_xTimerPendFunctionCall 0\n#endif\n\n#ifndef INCLUDE_xTaskGetSchedulerState\n\t#define INCLUDE_xTaskGetSchedulerState 0\n#endif\n\n#ifndef INCLUDE_xTaskGetCurrentTaskHandle\n\t#define INCLUDE_xTaskGetCurrentTaskHandle 0\n#endif\n\n#if configUSE_CO_ROUTINES != 0\n\t#ifndef configMAX_CO_ROUTINE_PRIORITIES\n\t\t#error configMAX_CO_ROUTINE_PRIORITIES must be greater than or equal to 1.\n\t#endif\n#endif\n\n#ifndef configUSE_DAEMON_TASK_STARTUP_HOOK\n\t#define configUSE_DAEMON_TASK_STARTUP_HOOK 0\n#endif\n\n#ifndef configUSE_APPLICATION_TASK_TAG\n\t#define configUSE_APPLICATION_TASK_TAG 0\n#endif\n\n#ifndef configNUM_THREAD_LOCAL_STORAGE_POINTERS\n\t#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0\n#endif\n\n#ifndef configUSE_RECURSIVE_MUTEXES\n\t#define configUSE_RECURSIVE_MUTEXES 0\n#endif\n\n#ifndef configUSE_MUTEXES\n\t#define configUSE_MUTEXES 0\n#endif\n\n#ifndef configUSE_TIMERS\n\t#define configUSE_TIMERS 0\n#endif\n\n#ifndef configUSE_COUNTING_SEMAPHORES\n\t#define configUSE_COUNTING_SEMAPHORES 0\n#endif\n\n#ifndef configUSE_ALTERNATIVE_API\n\t#define configUSE_ALTERNATIVE_API 0\n#endif\n\n#ifndef portCRITICAL_NESTING_IN_TCB\n\t#define portCRITICAL_NESTING_IN_TCB 0\n#endif\n\n#ifndef configMAX_TASK_NAME_LEN\n\t#define configMAX_TASK_NAME_LEN 16\n#endif\n\n#ifndef configIDLE_SHOULD_YIELD\n\t#define configIDLE_SHOULD_YIELD\t\t1\n#endif\n\n#if configMAX_TASK_NAME_LEN < 1\n\t#error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h\n#endif\n\n#ifndef configASSERT\n\t#define configASSERT( x )\n\t#define configASSERT_DEFINED 0\n#else\n\t#define configASSERT_DEFINED 1\n#endif\n\n/* configPRECONDITION should be defined as configASSERT.\nThe CBMC proofs need a way to track assumptions and assertions.\nA configPRECONDITION statement should express an implicit invariant or\nassumption made.  A configASSERT statement should express an invariant that must\nhold explicit before calling the code. */\n#ifndef configPRECONDITION\n\t#define configPRECONDITION( X ) configASSERT(X)\n\t#define configPRECONDITION_DEFINED 0\n#else\n\t#define configPRECONDITION_DEFINED 1\n#endif\n\n#ifndef portMEMORY_BARRIER\n\t#define portMEMORY_BARRIER()\n#endif\n\n#ifndef portSOFTWARE_BARRIER\n\t#define portSOFTWARE_BARRIER()\n#endif\n\n/* The timers module relies on xTaskGetSchedulerState(). */\n#if configUSE_TIMERS == 1\n\n\t#ifndef configTIMER_TASK_PRIORITY\n\t\t#error If configUSE_TIMERS is set to 1 then configTIMER_TASK_PRIORITY must also be defined.\n\t#endif /* configTIMER_TASK_PRIORITY */\n\n\t#ifndef configTIMER_QUEUE_LENGTH\n\t\t#error If configUSE_TIMERS is set to 1 then configTIMER_QUEUE_LENGTH must also be defined.\n\t#endif /* configTIMER_QUEUE_LENGTH */\n\n\t#ifndef configTIMER_TASK_STACK_DEPTH\n\t\t#error If configUSE_TIMERS is set to 1 then configTIMER_TASK_STACK_DEPTH must also be defined.\n\t#endif /* configTIMER_TASK_STACK_DEPTH */\n\n#endif /* configUSE_TIMERS */\n\n#ifndef portSET_INTERRUPT_MASK_FROM_ISR\n\t#define portSET_INTERRUPT_MASK_FROM_ISR() 0\n#endif\n\n#ifndef portCLEAR_INTERRUPT_MASK_FROM_ISR\n\t#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue ) ( void ) uxSavedStatusValue\n#endif\n\n#ifndef portCLEAN_UP_TCB\n\t#define portCLEAN_UP_TCB( pxTCB ) ( void ) pxTCB\n#endif\n\n#ifndef portPRE_TASK_DELETE_HOOK\n\t#define portPRE_TASK_DELETE_HOOK( pvTaskToDelete, pxYieldPending )\n#endif\n\n#ifndef portSETUP_TCB\n\t#define portSETUP_TCB( pxTCB ) ( void ) pxTCB\n#endif\n\n#ifndef configQUEUE_REGISTRY_SIZE\n\t#define configQUEUE_REGISTRY_SIZE 0U\n#endif\n\n#if ( configQUEUE_REGISTRY_SIZE < 1 )\n\t#define vQueueAddToRegistry( xQueue, pcName )\n\t#define vQueueUnregisterQueue( xQueue )\n\t#define pcQueueGetName( xQueue )\n#endif\n\n#ifndef portPOINTER_SIZE_TYPE\n\t#define portPOINTER_SIZE_TYPE uint32_t\n#endif\n\n/* Remove any unused trace macros. */\n#ifndef traceSTART\n\t/* Used to perform any necessary initialisation - for example, open a file\n\tinto which trace is to be written. */\n\t#define traceSTART()\n#endif\n\n#ifndef traceEND\n\t/* Use to close a trace, for example close a file into which trace has been\n\twritten. */\n\t#define traceEND()\n#endif\n\n#ifndef traceTASK_SWITCHED_IN\n\t/* Called after a task has been selected to run.  pxCurrentTCB holds a pointer\n\tto the task control block of the selected task. */\n\t#define traceTASK_SWITCHED_IN()\n#endif\n\n#ifndef traceINCREASE_TICK_COUNT\n\t/* Called before stepping the tick count after waking from tickless idle\n\tsleep. */\n\t#define traceINCREASE_TICK_COUNT( x )\n#endif\n\n#ifndef traceLOW_POWER_IDLE_BEGIN\n\t/* Called immediately before entering tickless idle. */\n\t#define traceLOW_POWER_IDLE_BEGIN()\n#endif\n\n#ifndef\ttraceLOW_POWER_IDLE_END\n\t/* Called when returning to the Idle task after a tickless idle. */\n\t#define traceLOW_POWER_IDLE_END()\n#endif\n\n#ifndef traceTASK_SWITCHED_OUT\n\t/* Called before a task has been selected to run.  pxCurrentTCB holds a pointer\n\tto the task control block of the task being switched out. */\n\t#define traceTASK_SWITCHED_OUT()\n#endif\n\n#ifndef traceTASK_PRIORITY_INHERIT\n\t/* Called when a task attempts to take a mutex that is already held by a\n\tlower priority task.  pxTCBOfMutexHolder is a pointer to the TCB of the task\n\tthat holds the mutex.  uxInheritedPriority is the priority the mutex holder\n\twill inherit (the priority of the task that is attempting to obtain the\n\tmuted. */\n\t#define traceTASK_PRIORITY_INHERIT( pxTCBOfMutexHolder, uxInheritedPriority )\n#endif\n\n#ifndef traceTASK_PRIORITY_DISINHERIT\n\t/* Called when a task releases a mutex, the holding of which had resulted in\n\tthe task inheriting the priority of a higher priority task.\n\tpxTCBOfMutexHolder is a pointer to the TCB of the task that is releasing the\n\tmutex.  uxOriginalPriority is the task's configured (base) priority. */\n\t#define traceTASK_PRIORITY_DISINHERIT( pxTCBOfMutexHolder, uxOriginalPriority )\n#endif\n\n#ifndef traceBLOCKING_ON_QUEUE_RECEIVE\n\t/* Task is about to block because it cannot read from a\n\tqueue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore\n\tupon which the read was attempted.  pxCurrentTCB points to the TCB of the\n\ttask that attempted the read. */\n\t#define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue )\n#endif\n\n#ifndef traceBLOCKING_ON_QUEUE_PEEK\n\t/* Task is about to block because it cannot read from a\n\tqueue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore\n\tupon which the read was attempted.  pxCurrentTCB points to the TCB of the\n\ttask that attempted the read. */\n\t#define traceBLOCKING_ON_QUEUE_PEEK( pxQueue )\n#endif\n\n#ifndef traceBLOCKING_ON_QUEUE_SEND\n\t/* Task is about to block because it cannot write to a\n\tqueue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore\n\tupon which the write was attempted.  pxCurrentTCB points to the TCB of the\n\ttask that attempted the write. */\n\t#define traceBLOCKING_ON_QUEUE_SEND( pxQueue )\n#endif\n\n#ifndef configCHECK_FOR_STACK_OVERFLOW\n\t#define configCHECK_FOR_STACK_OVERFLOW 0\n#endif\n\n#ifndef configRECORD_STACK_HIGH_ADDRESS\n\t#define configRECORD_STACK_HIGH_ADDRESS 0\n#endif\n\n#ifndef configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H\n\t#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 0\n#endif\n\n/* The following event macros are embedded in the kernel API calls. */\n\n#ifndef traceMOVED_TASK_TO_READY_STATE\n\t#define traceMOVED_TASK_TO_READY_STATE( pxTCB )\n#endif\n\n#ifndef tracePOST_MOVED_TASK_TO_READY_STATE\n\t#define tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB )\n#endif\n\n#ifndef traceQUEUE_CREATE\n\t#define traceQUEUE_CREATE( pxNewQueue )\n#endif\n\n#ifndef traceQUEUE_CREATE_FAILED\n\t#define traceQUEUE_CREATE_FAILED( ucQueueType )\n#endif\n\n#ifndef traceCREATE_MUTEX\n\t#define traceCREATE_MUTEX( pxNewQueue )\n#endif\n\n#ifndef traceCREATE_MUTEX_FAILED\n\t#define traceCREATE_MUTEX_FAILED()\n#endif\n\n#ifndef traceGIVE_MUTEX_RECURSIVE\n\t#define traceGIVE_MUTEX_RECURSIVE( pxMutex )\n#endif\n\n#ifndef traceGIVE_MUTEX_RECURSIVE_FAILED\n\t#define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex )\n#endif\n\n#ifndef traceTAKE_MUTEX_RECURSIVE\n\t#define traceTAKE_MUTEX_RECURSIVE( pxMutex )\n#endif\n\n#ifndef traceTAKE_MUTEX_RECURSIVE_FAILED\n\t#define traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex )\n#endif\n\n#ifndef traceCREATE_COUNTING_SEMAPHORE\n\t#define traceCREATE_COUNTING_SEMAPHORE()\n#endif\n\n#ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED\n\t#define traceCREATE_COUNTING_SEMAPHORE_FAILED()\n#endif\n\n#ifndef traceQUEUE_SEND\n\t#define traceQUEUE_SEND( pxQueue )\n#endif\n\n#ifndef traceQUEUE_SEND_FAILED\n\t#define traceQUEUE_SEND_FAILED( pxQueue )\n#endif\n\n#ifndef traceQUEUE_RECEIVE\n\t#define traceQUEUE_RECEIVE( pxQueue )\n#endif\n\n#ifndef traceQUEUE_PEEK\n\t#define traceQUEUE_PEEK( pxQueue )\n#endif\n\n#ifndef traceQUEUE_PEEK_FAILED\n\t#define traceQUEUE_PEEK_FAILED( pxQueue )\n#endif\n\n#ifndef traceQUEUE_PEEK_FROM_ISR\n\t#define traceQUEUE_PEEK_FROM_ISR( pxQueue )\n#endif\n\n#ifndef traceQUEUE_RECEIVE_FAILED\n\t#define traceQUEUE_RECEIVE_FAILED( pxQueue )\n#endif\n\n#ifndef traceQUEUE_SEND_FROM_ISR\n\t#define traceQUEUE_SEND_FROM_ISR( pxQueue )\n#endif\n\n#ifndef traceQUEUE_SEND_FROM_ISR_FAILED\n\t#define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue )\n#endif\n\n#ifndef traceQUEUE_RECEIVE_FROM_ISR\n\t#define traceQUEUE_RECEIVE_FROM_ISR( pxQueue )\n#endif\n\n#ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED\n\t#define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue )\n#endif\n\n#ifndef traceQUEUE_PEEK_FROM_ISR_FAILED\n\t#define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue )\n#endif\n\n#ifndef traceQUEUE_DELETE\n\t#define traceQUEUE_DELETE( pxQueue )\n#endif\n\n#ifndef traceTASK_CREATE\n\t#define traceTASK_CREATE( pxNewTCB )\n#endif\n\n#ifndef traceTASK_CREATE_FAILED\n\t#define traceTASK_CREATE_FAILED()\n#endif\n\n#ifndef traceTASK_DELETE\n\t#define traceTASK_DELETE( pxTaskToDelete )\n#endif\n\n#ifndef traceTASK_DELAY_UNTIL\n\t#define traceTASK_DELAY_UNTIL( x )\n#endif\n\n#ifndef traceTASK_DELAY\n\t#define traceTASK_DELAY()\n#endif\n\n#ifndef traceTASK_PRIORITY_SET\n\t#define traceTASK_PRIORITY_SET( pxTask, uxNewPriority )\n#endif\n\n#ifndef traceTASK_SUSPEND\n\t#define traceTASK_SUSPEND( pxTaskToSuspend )\n#endif\n\n#ifndef traceTASK_RESUME\n\t#define traceTASK_RESUME( pxTaskToResume )\n#endif\n\n#ifndef traceTASK_RESUME_FROM_ISR\n\t#define traceTASK_RESUME_FROM_ISR( pxTaskToResume )\n#endif\n\n#ifndef traceTASK_INCREMENT_TICK\n\t#define traceTASK_INCREMENT_TICK( xTickCount )\n#endif\n\n#ifndef traceTIMER_CREATE\n\t#define traceTIMER_CREATE( pxNewTimer )\n#endif\n\n#ifndef traceTIMER_CREATE_FAILED\n\t#define traceTIMER_CREATE_FAILED()\n#endif\n\n#ifndef traceTIMER_COMMAND_SEND\n\t#define traceTIMER_COMMAND_SEND( xTimer, xMessageID, xMessageValueValue, xReturn )\n#endif\n\n#ifndef traceTIMER_EXPIRED\n\t#define traceTIMER_EXPIRED( pxTimer )\n#endif\n\n#ifndef traceTIMER_COMMAND_RECEIVED\n\t#define traceTIMER_COMMAND_RECEIVED( pxTimer, xMessageID, xMessageValue )\n#endif\n\n#ifndef traceMALLOC\n    #define traceMALLOC( pvAddress, uiSize )\n#endif\n\n#ifndef traceFREE\n    #define traceFREE( pvAddress, uiSize )\n#endif\n\n#ifndef traceEVENT_GROUP_CREATE\n\t#define traceEVENT_GROUP_CREATE( xEventGroup )\n#endif\n\n#ifndef traceEVENT_GROUP_CREATE_FAILED\n\t#define traceEVENT_GROUP_CREATE_FAILED()\n#endif\n\n#ifndef traceEVENT_GROUP_SYNC_BLOCK\n\t#define traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor )\n#endif\n\n#ifndef traceEVENT_GROUP_SYNC_END\n\t#define traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred\n#endif\n\n#ifndef traceEVENT_GROUP_WAIT_BITS_BLOCK\n\t#define traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor )\n#endif\n\n#ifndef traceEVENT_GROUP_WAIT_BITS_END\n\t#define traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred\n#endif\n\n#ifndef traceEVENT_GROUP_CLEAR_BITS\n\t#define traceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear )\n#endif\n\n#ifndef traceEVENT_GROUP_CLEAR_BITS_FROM_ISR\n\t#define traceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear )\n#endif\n\n#ifndef traceEVENT_GROUP_SET_BITS\n\t#define traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet )\n#endif\n\n#ifndef traceEVENT_GROUP_SET_BITS_FROM_ISR\n\t#define traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet )\n#endif\n\n#ifndef traceEVENT_GROUP_DELETE\n\t#define traceEVENT_GROUP_DELETE( xEventGroup )\n#endif\n\n#ifndef tracePEND_FUNC_CALL\n\t#define tracePEND_FUNC_CALL(xFunctionToPend, pvParameter1, ulParameter2, ret)\n#endif\n\n#ifndef tracePEND_FUNC_CALL_FROM_ISR\n\t#define tracePEND_FUNC_CALL_FROM_ISR(xFunctionToPend, pvParameter1, ulParameter2, ret)\n#endif\n\n#ifndef traceQUEUE_REGISTRY_ADD\n\t#define traceQUEUE_REGISTRY_ADD(xQueue, pcQueueName)\n#endif\n\n#ifndef traceTASK_NOTIFY_TAKE_BLOCK\n\t#define traceTASK_NOTIFY_TAKE_BLOCK()\n#endif\n\n#ifndef traceTASK_NOTIFY_TAKE\n\t#define traceTASK_NOTIFY_TAKE()\n#endif\n\n#ifndef traceTASK_NOTIFY_WAIT_BLOCK\n\t#define traceTASK_NOTIFY_WAIT_BLOCK()\n#endif\n\n#ifndef traceTASK_NOTIFY_WAIT\n\t#define traceTASK_NOTIFY_WAIT()\n#endif\n\n#ifndef traceTASK_NOTIFY\n\t#define traceTASK_NOTIFY()\n#endif\n\n#ifndef traceTASK_NOTIFY_FROM_ISR\n\t#define traceTASK_NOTIFY_FROM_ISR()\n#endif\n\n#ifndef traceTASK_NOTIFY_GIVE_FROM_ISR\n\t#define traceTASK_NOTIFY_GIVE_FROM_ISR()\n#endif\n\n#ifndef traceSTREAM_BUFFER_CREATE_FAILED\n\t#define traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_CREATE_STATIC_FAILED\n\t#define traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_CREATE\n\t#define traceSTREAM_BUFFER_CREATE( pxStreamBuffer, xIsMessageBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_DELETE\n\t#define traceSTREAM_BUFFER_DELETE( xStreamBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_RESET\n\t#define traceSTREAM_BUFFER_RESET( xStreamBuffer )\n#endif\n\n#ifndef traceBLOCKING_ON_STREAM_BUFFER_SEND\n\t#define traceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_SEND\n\t#define traceSTREAM_BUFFER_SEND( xStreamBuffer, xBytesSent )\n#endif\n\n#ifndef traceSTREAM_BUFFER_SEND_FAILED\n\t#define traceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_SEND_FROM_ISR\n\t#define traceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xBytesSent )\n#endif\n\n#ifndef traceBLOCKING_ON_STREAM_BUFFER_RECEIVE\n\t#define traceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_RECEIVE\n\t#define traceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength )\n#endif\n\n#ifndef traceSTREAM_BUFFER_RECEIVE_FAILED\n\t#define traceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer )\n#endif\n\n#ifndef traceSTREAM_BUFFER_RECEIVE_FROM_ISR\n\t#define traceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength )\n#endif\n\n#ifndef configGENERATE_RUN_TIME_STATS\n\t#define configGENERATE_RUN_TIME_STATS 0\n#endif\n\n#if ( configGENERATE_RUN_TIME_STATS == 1 )\n\n\t#ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS\n\t\t#error If configGENERATE_RUN_TIME_STATS is defined then portCONFIGURE_TIMER_FOR_RUN_TIME_STATS must also be defined.  portCONFIGURE_TIMER_FOR_RUN_TIME_STATS should call a port layer function to setup a peripheral timer/counter that can then be used as the run time counter time base.\n\t#endif /* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS */\n\n\t#ifndef portGET_RUN_TIME_COUNTER_VALUE\n\t\t#ifndef portALT_GET_RUN_TIME_COUNTER_VALUE\n\t\t\t#error If configGENERATE_RUN_TIME_STATS is defined then either portGET_RUN_TIME_COUNTER_VALUE or portALT_GET_RUN_TIME_COUNTER_VALUE must also be defined.  See the examples provided and the FreeRTOS web site for more information.\n\t\t#endif /* portALT_GET_RUN_TIME_COUNTER_VALUE */\n\t#endif /* portGET_RUN_TIME_COUNTER_VALUE */\n\n#endif /* configGENERATE_RUN_TIME_STATS */\n\n#ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS\n\t#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()\n#endif\n\n#ifndef configUSE_MALLOC_FAILED_HOOK\n\t#define configUSE_MALLOC_FAILED_HOOK 0\n#endif\n\n#ifndef portPRIVILEGE_BIT\n\t#define portPRIVILEGE_BIT ( ( UBaseType_t ) 0x00 )\n#endif\n\n#ifndef portYIELD_WITHIN_API\n\t#define portYIELD_WITHIN_API portYIELD\n#endif\n\n#ifndef portSUPPRESS_TICKS_AND_SLEEP\n\t#define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime )\n#endif\n\n#ifndef configEXPECTED_IDLE_TIME_BEFORE_SLEEP\n\t#define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 2\n#endif\n\n#if configEXPECTED_IDLE_TIME_BEFORE_SLEEP < 2\n\t#error configEXPECTED_IDLE_TIME_BEFORE_SLEEP must not be less than 2\n#endif\n\n#ifndef configUSE_TICKLESS_IDLE\n\t#define configUSE_TICKLESS_IDLE 0\n#endif\n\n#ifndef configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING\n\t#define configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( x )\n#endif\n\n#ifndef configPRE_SLEEP_PROCESSING\n\t#define configPRE_SLEEP_PROCESSING( x )\n#endif\n\n#ifndef configPOST_SLEEP_PROCESSING\n\t#define configPOST_SLEEP_PROCESSING( x )\n#endif\n\n#ifndef configUSE_QUEUE_SETS\n\t#define configUSE_QUEUE_SETS 0\n#endif\n\n#ifndef portTASK_USES_FLOATING_POINT\n\t#define portTASK_USES_FLOATING_POINT()\n#endif\n\n#ifndef portALLOCATE_SECURE_CONTEXT\n\t#define portALLOCATE_SECURE_CONTEXT( ulSecureStackSize )\n#endif\n\n#ifndef portDONT_DISCARD\n\t#define portDONT_DISCARD\n#endif\n\n#ifndef configUSE_TIME_SLICING\n\t#define configUSE_TIME_SLICING 1\n#endif\n\n#ifndef configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS\n\t#define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0\n#endif\n\n#ifndef configUSE_STATS_FORMATTING_FUNCTIONS\n\t#define configUSE_STATS_FORMATTING_FUNCTIONS 0\n#endif\n\n#ifndef portASSERT_IF_INTERRUPT_PRIORITY_INVALID\n\t#define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()\n#endif\n\n#ifndef configUSE_TRACE_FACILITY\n\t#define configUSE_TRACE_FACILITY 0\n#endif\n\n#ifndef mtCOVERAGE_TEST_MARKER\n\t#define mtCOVERAGE_TEST_MARKER()\n#endif\n\n#ifndef mtCOVERAGE_TEST_DELAY\n\t#define mtCOVERAGE_TEST_DELAY()\n#endif\n\n#ifndef portASSERT_IF_IN_ISR\n\t#define portASSERT_IF_IN_ISR()\n#endif\n\n#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION\n\t#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0\n#endif\n\n#ifndef configAPPLICATION_ALLOCATED_HEAP\n\t#define configAPPLICATION_ALLOCATED_HEAP 0\n#endif\n\n#ifndef configUSE_TASK_NOTIFICATIONS\n\t#define configUSE_TASK_NOTIFICATIONS 1\n#endif\n\n#ifndef configUSE_POSIX_ERRNO\n\t#define configUSE_POSIX_ERRNO 0\n#endif\n\n#ifndef portTICK_TYPE_IS_ATOMIC\n\t#define portTICK_TYPE_IS_ATOMIC 0\n#endif\n\n#ifndef configSUPPORT_STATIC_ALLOCATION\n\t/* Defaults to 0 for backward compatibility. */\n\t#define configSUPPORT_STATIC_ALLOCATION 0\n#endif\n\n#ifndef configSUPPORT_DYNAMIC_ALLOCATION\n\t/* Defaults to 1 for backward compatibility. */\n\t#define configSUPPORT_DYNAMIC_ALLOCATION 1\n#endif\n\n#ifndef configSTACK_DEPTH_TYPE\n\t/* Defaults to uint16_t for backward compatibility, but can be overridden\n\tin FreeRTOSConfig.h if uint16_t is too restrictive. */\n\t#define configSTACK_DEPTH_TYPE uint16_t\n#endif\n\n#ifndef configMESSAGE_BUFFER_LENGTH_TYPE\n\t/* Defaults to size_t for backward compatibility, but can be overridden\n\tin FreeRTOSConfig.h if lengths will always be less than the number of bytes\n\tin a size_t. */\n\t#define configMESSAGE_BUFFER_LENGTH_TYPE size_t\n#endif\n\n/* Sanity check the configuration. */\n#if( configUSE_TICKLESS_IDLE != 0 )\n\t#if( INCLUDE_vTaskSuspend != 1 )\n\t\t#error INCLUDE_vTaskSuspend must be set to 1 if configUSE_TICKLESS_IDLE is not set to 0\n\t#endif /* INCLUDE_vTaskSuspend */\n#endif /* configUSE_TICKLESS_IDLE */\n\n#if( ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) )\n\t#error configSUPPORT_STATIC_ALLOCATION and configSUPPORT_DYNAMIC_ALLOCATION cannot both be 0, but can both be 1.\n#endif\n\n#if( ( configUSE_RECURSIVE_MUTEXES == 1 ) && ( configUSE_MUTEXES != 1 ) )\n\t#error configUSE_MUTEXES must be set to 1 to use recursive mutexes\n#endif\n\n#ifndef configINITIAL_TICK_COUNT\n\t#define configINITIAL_TICK_COUNT 0\n#endif\n\n#if( portTICK_TYPE_IS_ATOMIC == 0 )\n\t/* Either variables of tick type cannot be read atomically, or\n\tportTICK_TYPE_IS_ATOMIC was not set - map the critical sections used when\n\tthe tick count is returned to the standard critical section macros. */\n\t#define portTICK_TYPE_ENTER_CRITICAL() portENTER_CRITICAL()\n\t#define portTICK_TYPE_EXIT_CRITICAL() portEXIT_CRITICAL()\n\t#define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR()\n\t#define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( ( x ) )\n#else\n\t/* The tick type can be read atomically, so critical sections used when the\n\ttick count is returned can be defined away. */\n\t#define portTICK_TYPE_ENTER_CRITICAL()\n\t#define portTICK_TYPE_EXIT_CRITICAL()\n\t#define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() 0\n\t#define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) ( void ) x\n#endif\n\n/* Definitions to allow backward compatibility with FreeRTOS versions prior to\nV8 if desired. */\n#ifndef configENABLE_BACKWARD_COMPATIBILITY\n\t#define configENABLE_BACKWARD_COMPATIBILITY 1\n#endif\n\n#ifndef configPRINTF\n\t/* configPRINTF() was not defined, so define it away to nothing.  To use\n\tconfigPRINTF() then define it as follows (where MyPrintFunction() is\n\tprovided by the application writer):\n\n\tvoid MyPrintFunction(const char *pcFormat, ... );\n\t#define configPRINTF( X )   MyPrintFunction X\n\n\tThen call like a standard printf() function, but placing brackets around\n\tall parameters so they are passed as a single parameter.  For example:\n\tconfigPRINTF( (\"Value = %d\", MyVariable) ); */\n\t#define configPRINTF( X )\n#endif\n\n#ifndef configMAX\n\t/* The application writer has not provided their own MAX macro, so define\n\tthe following generic implementation. */\n\t#define configMAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )\n#endif\n\n#ifndef configMIN\n\t/* The application writer has not provided their own MAX macro, so define\n\tthe following generic implementation. */\n\t#define configMIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) )\n#endif\n\n#if configENABLE_BACKWARD_COMPATIBILITY == 1\n\t#define eTaskStateGet eTaskGetState\n\t#define portTickType TickType_t\n\t#define xTaskHandle TaskHandle_t\n\t#define xQueueHandle QueueHandle_t\n\t#define xSemaphoreHandle SemaphoreHandle_t\n\t#define xQueueSetHandle QueueSetHandle_t\n\t#define xQueueSetMemberHandle QueueSetMemberHandle_t\n\t#define xTimeOutType TimeOut_t\n\t#define xMemoryRegion MemoryRegion_t\n\t#define xTaskParameters TaskParameters_t\n\t#define xTaskStatusType\tTaskStatus_t\n\t#define xTimerHandle TimerHandle_t\n\t#define xCoRoutineHandle CoRoutineHandle_t\n\t#define pdTASK_HOOK_CODE TaskHookFunction_t\n\t#define portTICK_RATE_MS portTICK_PERIOD_MS\n\t#define pcTaskGetTaskName pcTaskGetName\n\t#define pcTimerGetTimerName pcTimerGetName\n\t#define pcQueueGetQueueName pcQueueGetName\n\t#define vTaskGetTaskInfo vTaskGetInfo\n\t#define xTaskGetIdleRunTimeCounter ulTaskGetIdleRunTimeCounter\n\n\t/* Backward compatibility within the scheduler code only - these definitions\n\tare not really required but are included for completeness. */\n\t#define tmrTIMER_CALLBACK TimerCallbackFunction_t\n\t#define pdTASK_CODE TaskFunction_t\n\t#define xListItem ListItem_t\n\t#define xList List_t\n\n\t/* For libraries that break the list data hiding, and access list structure\n\tmembers directly (which is not supposed to be done). */\n\t#define pxContainer pvContainer\n#endif /* configENABLE_BACKWARD_COMPATIBILITY */\n\n#if( configUSE_ALTERNATIVE_API != 0 )\n\t#error The alternative API was deprecated some time ago, and was removed in FreeRTOS V9.0 0\n#endif\n\n/* Set configUSE_TASK_FPU_SUPPORT to 0 to omit floating point support even\nif floating point hardware is otherwise supported by the FreeRTOS port in use.\nThis constant is not supported by all FreeRTOS ports that include floating\npoint support. */\n#ifndef configUSE_TASK_FPU_SUPPORT\n\t#define configUSE_TASK_FPU_SUPPORT 1\n#endif\n\n/* Set configENABLE_MPU to 1 to enable MPU support and 0 to disable it. This is\ncurrently used in ARMv8M ports. */\n#ifndef configENABLE_MPU\n\t#define configENABLE_MPU 0\n#endif\n\n/* Set configENABLE_FPU to 1 to enable FPU support and 0 to disable it. This is\ncurrently used in ARMv8M ports. */\n#ifndef configENABLE_FPU\n\t#define configENABLE_FPU 1\n#endif\n\n/* Set configENABLE_TRUSTZONE to 1 enable TrustZone support and 0 to disable it.\nThis is currently used in ARMv8M ports. */\n#ifndef configENABLE_TRUSTZONE\n\t#define configENABLE_TRUSTZONE 1\n#endif\n\n/* Set configRUN_FREERTOS_SECURE_ONLY to 1 to run the FreeRTOS ARMv8M port on\nthe Secure Side only. */\n#ifndef configRUN_FREERTOS_SECURE_ONLY\n\t#define configRUN_FREERTOS_SECURE_ONLY 0\n#endif\n\n/* Sometimes the FreeRTOSConfig.h settings only allow a task to be created using\n * dynamically allocated RAM, in which case when any task is deleted it is known\n * that both the task's stack and TCB need to be freed.  Sometimes the\n * FreeRTOSConfig.h settings only allow a task to be created using statically\n * allocated RAM, in which case when any task is deleted it is known that neither\n * the task's stack or TCB should be freed.  Sometimes the FreeRTOSConfig.h\n * settings allow a task to be created using either statically or dynamically\n * allocated RAM, in which case a member of the TCB is used to record whether the\n * stack and/or TCB were allocated statically or dynamically, so when a task is\n * deleted the RAM that was allocated dynamically is freed again and no attempt is\n * made to free the RAM that was allocated statically.\n * tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE is only true if it is possible for a\n * task to be created using either statically or dynamically allocated RAM.  Note\n * that if portUSING_MPU_WRAPPERS is 1 then a protected task can be created with\n * a statically allocated stack and a dynamically allocated TCB.\n *\n * The following table lists various combinations of portUSING_MPU_WRAPPERS,\n * configSUPPORT_DYNAMIC_ALLOCATION and configSUPPORT_STATIC_ALLOCATION and\n * when it is possible to have both static and dynamic allocation:\n *  +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+\n * | MPU | Dynamic | Static |     Available Functions     |       Possible Allocations        | Both Dynamic and | Need Free |\n * |     |         |        |                             |                                   | Static Possible  |           |\n * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+\n * | 0   | 0       | 1      | xTaskCreateStatic           | TCB - Static, Stack - Static      | No               | No        |\n * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|\n * | 0   | 1       | 0      | xTaskCreate                 | TCB - Dynamic, Stack - Dynamic    | No               | Yes       |\n * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|\n * | 0   | 1       | 1      | xTaskCreate,                | 1. TCB - Dynamic, Stack - Dynamic | Yes              | Yes       |\n * |     |         |        | xTaskCreateStatic           | 2. TCB - Static, Stack - Static   |                  |           |\n * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|\n * | 1   | 0       | 1      | xTaskCreateStatic,          | TCB - Static, Stack - Static      | No               | No        |\n * |     |         |        | xTaskCreateRestrictedStatic |                                   |                  |           |\n * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|\n * | 1   | 1       | 0      | xTaskCreate,                | 1. TCB - Dynamic, Stack - Dynamic | Yes              | Yes       |\n * |     |         |        | xTaskCreateRestricted       | 2. TCB - Dynamic, Stack - Static  |                  |           |\n * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|\n * | 1   | 1       | 1      | xTaskCreate,                | 1. TCB - Dynamic, Stack - Dynamic | Yes              | Yes       |\n * |     |         |        | xTaskCreateStatic,          | 2. TCB - Dynamic, Stack - Static  |                  |           |\n * |     |         |        | xTaskCreateRestricted,      | 3. TCB - Static, Stack - Static   |                  |           |\n * |     |         |        | xTaskCreateRestrictedStatic |                                   |                  |           |\n * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+\n */\n#define tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE\t( ( ( portUSING_MPU_WRAPPERS == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) || \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t  ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) )\n\n/*\n * In line with software engineering best practice, FreeRTOS implements a strict\n * data hiding policy, so the real structures used by FreeRTOS to maintain the\n * state of tasks, queues, semaphores, etc. are not accessible to the application\n * code.  However, if the application writer wants to statically allocate such\n * an object then the size of the object needs to be know.  Dummy structures\n * that are guaranteed to have the same size and alignment requirements of the\n * real objects are used for this purpose.  The dummy list and list item\n * structures below are used for inclusion in such a dummy structure.\n */\nstruct xSTATIC_LIST_ITEM\n{\n\t#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )\n\t\tTickType_t xDummy1;\n\t#endif\n\tTickType_t xDummy2;\n\tvoid *pvDummy3[ 4 ];\n\t#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )\n\t\tTickType_t xDummy4;\n\t#endif\n};\ntypedef struct xSTATIC_LIST_ITEM StaticListItem_t;\n\n/* See the comments above the struct xSTATIC_LIST_ITEM definition. */\nstruct xSTATIC_MINI_LIST_ITEM\n{\n\t#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )\n\t\tTickType_t xDummy1;\n\t#endif\n\tTickType_t xDummy2;\n\tvoid *pvDummy3[ 2 ];\n};\ntypedef struct xSTATIC_MINI_LIST_ITEM StaticMiniListItem_t;\n\n/* See the comments above the struct xSTATIC_LIST_ITEM definition. */\ntypedef struct xSTATIC_LIST\n{\n\t#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )\n\t\tTickType_t xDummy1;\n\t#endif\n\tUBaseType_t uxDummy2;\n\tvoid *pvDummy3;\n\tStaticMiniListItem_t xDummy4;\n\t#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )\n\t\tTickType_t xDummy5;\n\t#endif\n} StaticList_t;\n\n/*\n * In line with software engineering best practice, especially when supplying a\n * library that is likely to change in future versions, FreeRTOS implements a\n * strict data hiding policy.  This means the Task structure used internally by\n * FreeRTOS is not accessible to application code.  However, if the application\n * writer wants to statically allocate the memory required to create a task then\n * the size of the task object needs to be know.  The StaticTask_t structure\n * below is provided for this purpose.  Its sizes and alignment requirements are\n * guaranteed to match those of the genuine structure, no matter which\n * architecture is being used, and no matter how the values in FreeRTOSConfig.h\n * are set.  Its contents are somewhat obfuscated in the hope users will\n * recognise that it would be unwise to make direct use of the structure members.\n */\ntypedef struct xSTATIC_TCB\n{\n\tvoid\t\t\t\t*pxDummy1;\n\t#if ( portUSING_MPU_WRAPPERS == 1 )\n\t\txMPU_SETTINGS\txDummy2;\n\t#endif\n\tStaticListItem_t\txDummy3[ 2 ];\n\tUBaseType_t\t\t\tuxDummy5;\n\tvoid\t\t\t\t*pxDummy6;\n\tuint8_t\t\t\t\tucDummy7[ configMAX_TASK_NAME_LEN ];\n\t#if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) )\n\t\tvoid\t\t\t*pxDummy8;\n\t#endif\n\t#if ( portCRITICAL_NESTING_IN_TCB == 1 )\n\t\tUBaseType_t\t\tuxDummy9;\n\t#endif\n\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t\t\tuxDummy10[ 2 ];\n\t#endif\n\t#if ( configUSE_MUTEXES == 1 )\n\t\tUBaseType_t\t\tuxDummy12[ 2 ];\n\t#endif\n\t#if ( configUSE_APPLICATION_TASK_TAG == 1 )\n\t\tvoid\t\t\t*pxDummy14;\n\t#endif\n\t#if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 )\n\t\tvoid\t\t\t*pvDummy15[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ];\n\t#endif\n\t#if ( configGENERATE_RUN_TIME_STATS == 1 )\n\t\tuint32_t\t\tulDummy16;\n\t#endif\n\t#if ( configUSE_NEWLIB_REENTRANT == 1 )\n\t\tstruct\t_reent\txDummy17;\n\t#endif\n\t#if ( configUSE_TASK_NOTIFICATIONS == 1 )\n\t\tuint32_t \t\tulDummy18;\n\t\tuint8_t \t\tucDummy19;\n\t#endif\n\t#if ( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 )\n\t\tuint8_t\t\t\tuxDummy20;\n\t#endif\n\n\t#if( INCLUDE_xTaskAbortDelay == 1 )\n\t\tuint8_t ucDummy21;\n\t#endif\n\t#if ( configUSE_POSIX_ERRNO == 1 )\n\t\tint\t\t\t\tiDummy22;\n\t#endif\n} StaticTask_t;\n\n/*\n * In line with software engineering best practice, especially when supplying a\n * library that is likely to change in future versions, FreeRTOS implements a\n * strict data hiding policy.  This means the Queue structure used internally by\n * FreeRTOS is not accessible to application code.  However, if the application\n * writer wants to statically allocate the memory required to create a queue\n * then the size of the queue object needs to be know.  The StaticQueue_t\n * structure below is provided for this purpose.  Its sizes and alignment\n * requirements are guaranteed to match those of the genuine structure, no\n * matter which architecture is being used, and no matter how the values in\n * FreeRTOSConfig.h are set.  Its contents are somewhat obfuscated in the hope\n * users will recognise that it would be unwise to make direct use of the\n * structure members.\n */\ntypedef struct xSTATIC_QUEUE\n{\n\tvoid *pvDummy1[ 3 ];\n\n\tunion\n\t{\n\t\tvoid *pvDummy2;\n\t\tUBaseType_t uxDummy2;\n\t} u;\n\n\tStaticList_t xDummy3[ 2 ];\n\tUBaseType_t uxDummy4[ 3 ];\n\tuint8_t ucDummy5[ 2 ];\n\n\t#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\t\tuint8_t ucDummy6;\n\t#endif\n\n\t#if ( configUSE_QUEUE_SETS == 1 )\n\t\tvoid *pvDummy7;\n\t#endif\n\n\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t uxDummy8;\n\t\tuint8_t ucDummy9;\n\t#endif\n\n} StaticQueue_t;\ntypedef StaticQueue_t StaticSemaphore_t;\n\n/*\n * In line with software engineering best practice, especially when supplying a\n * library that is likely to change in future versions, FreeRTOS implements a\n * strict data hiding policy.  This means the event group structure used\n * internally by FreeRTOS is not accessible to application code.  However, if\n * the application writer wants to statically allocate the memory required to\n * create an event group then the size of the event group object needs to be\n * know.  The StaticEventGroup_t structure below is provided for this purpose.\n * Its sizes and alignment requirements are guaranteed to match those of the\n * genuine structure, no matter which architecture is being used, and no matter\n * how the values in FreeRTOSConfig.h are set.  Its contents are somewhat\n * obfuscated in the hope users will recognise that it would be unwise to make\n * direct use of the structure members.\n */\ntypedef struct xSTATIC_EVENT_GROUP\n{\n\tTickType_t xDummy1;\n\tStaticList_t xDummy2;\n\n\t#if( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t uxDummy3;\n\t#endif\n\n\t#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\t\t\tuint8_t ucDummy4;\n\t#endif\n\n} StaticEventGroup_t;\n\n/*\n * In line with software engineering best practice, especially when supplying a\n * library that is likely to change in future versions, FreeRTOS implements a\n * strict data hiding policy.  This means the software timer structure used\n * internally by FreeRTOS is not accessible to application code.  However, if\n * the application writer wants to statically allocate the memory required to\n * create a software timer then the size of the queue object needs to be know.\n * The StaticTimer_t structure below is provided for this purpose.  Its sizes\n * and alignment requirements are guaranteed to match those of the genuine\n * structure, no matter which architecture is being used, and no matter how the\n * values in FreeRTOSConfig.h are set.  Its contents are somewhat obfuscated in\n * the hope users will recognise that it would be unwise to make direct use of\n * the structure members.\n */\ntypedef struct xSTATIC_TIMER\n{\n\tvoid\t\t\t\t*pvDummy1;\n\tStaticListItem_t\txDummy2;\n\tTickType_t\t\t\txDummy3;\n\tvoid \t\t\t\t*pvDummy5;\n\tTaskFunction_t\t\tpvDummy6;\n\t#if( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t\t\tuxDummy7;\n\t#endif\n\tuint8_t \t\t\tucDummy8;\n\n} StaticTimer_t;\n\n/*\n* In line with software engineering best practice, especially when supplying a\n* library that is likely to change in future versions, FreeRTOS implements a\n* strict data hiding policy.  This means the stream buffer structure used\n* internally by FreeRTOS is not accessible to application code.  However, if\n* the application writer wants to statically allocate the memory required to\n* create a stream buffer then the size of the stream buffer object needs to be\n* know.  The StaticStreamBuffer_t structure below is provided for this purpose.\n* Its size and alignment requirements are guaranteed to match those of the\n* genuine structure, no matter which architecture is being used, and no matter\n* how the values in FreeRTOSConfig.h are set.  Its contents are somewhat\n* obfuscated in the hope users will recognise that it would be unwise to make\n* direct use of the structure members.\n*/\ntypedef struct xSTATIC_STREAM_BUFFER\n{\n\tsize_t uxDummy1[ 4 ];\n\tvoid * pvDummy2[ 3 ];\n\tuint8_t ucDummy3;\n\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t uxDummy4;\n\t#endif\n} StaticStreamBuffer_t;\n\n/* Message buffers are built on stream buffers. */\ntypedef StaticStreamBuffer_t StaticMessageBuffer_t;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* INC_FREERTOS_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef STACK_MACROS_H\n#define STACK_MACROS_H\n\n#ifndef _MSC_VER /* Visual Studio doesn't support #warning. */\n\t#warning The name of this file has changed to stack_macros.h.  Please update your code accordingly.  This source file (which has the original name) will be removed in future released.\n#endif\n\n/*\n * Call the stack overflow hook function if the stack of the task being swapped\n * out is currently overflowed, or looks like it might have overflowed in the\n * past.\n *\n * Setting configCHECK_FOR_STACK_OVERFLOW to 1 will cause the macro to check\n * the current stack state only - comparing the current top of stack value to\n * the stack limit.  Setting configCHECK_FOR_STACK_OVERFLOW to greater than 1\n * will also cause the last few stack bytes to be checked to ensure the value\n * to which the bytes were set when the task was created have not been\n * overwritten.  Note this second test does not guarantee that an overflowed\n * stack will always be recognised.\n */\n\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) )\n\n\t/* Only the current stack state is to be checked. */\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Is the currently saved stack pointer within the stack limit? */\t\t\t\t\t\t\t\t\\\n\t\tif( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack )\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) )\n\n\t/* Only the current stack state is to be checked. */\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Is the currently saved stack pointer within the stack limit? */\t\t\t\t\t\t\t\t\\\n\t\tif( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack )\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) )\n\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tconst uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack;\t\t\t\t\t\t\t\\\n\t\tconst uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5;\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( ( pulStack[ 0 ] != ulCheckValue ) ||\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pulStack[ 1 ] != ulCheckValue ) ||\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pulStack[ 2 ] != ulCheckValue ) ||\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pulStack[ 3 ] != ulCheckValue ) )\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) )\n\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tint8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tstatic const uint8_t ucExpectedStackBytes[] = {\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE };\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tpcEndOfStack -= sizeof( ucExpectedStackBytes );\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Has the extremity of the task stack ever been written over? */\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 )\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */\n/*-----------------------------------------------------------*/\n\n/* Remove stack overflow macro if not being used. */\n#ifndef taskCHECK_FOR_STACK_OVERFLOW\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\n#endif\n\n\n\n#endif /* STACK_MACROS_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/**\n * @file atomic.h\n * @brief FreeRTOS atomic operation support.\n *\n * This file implements atomic functions by disabling interrupts globally.\n * Implementations with architecture specific atomic instructions can be\n * provided under each compiler directory.\n */\n\n#ifndef ATOMIC_H\n#define ATOMIC_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h must appear in source files before include atomic.h\"\n#endif\n\n/* Standard includes. */\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n * Port specific definitions -- entering/exiting critical section.\n * Refer template -- ./lib/FreeRTOS/portable/Compiler/Arch/portmacro.h\n *\n * Every call to ATOMIC_EXIT_CRITICAL() must be closely paired with\n * ATOMIC_ENTER_CRITICAL().\n *\n */\n#if defined( portSET_INTERRUPT_MASK_FROM_ISR )\n\n\t/* Nested interrupt scheme is supported in this port. */\n\t#define ATOMIC_ENTER_CRITICAL()\t \\\n\t\tUBaseType_t uxCriticalSectionType = portSET_INTERRUPT_MASK_FROM_ISR()\n\n\t#define ATOMIC_EXIT_CRITICAL()\t  \\\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxCriticalSectionType )\n\n#else\n\n\t/* Nested interrupt scheme is NOT supported in this port. */\n\t#define ATOMIC_ENTER_CRITICAL()\t portENTER_CRITICAL()\n\t#define ATOMIC_EXIT_CRITICAL()\t  portEXIT_CRITICAL()\n\n#endif /* portSET_INTERRUPT_MASK_FROM_ISR() */\n\n/*\n * Port specific definition -- \"always inline\".\n * Inline is compiler specific, and may not always get inlined depending on your\n * optimization level.  Also, inline is considered as performance optimization\n * for atomic.  Thus, if portFORCE_INLINE is not provided by portmacro.h,\n * instead of resulting error, simply define it away.\n */\n#ifndef portFORCE_INLINE\n\t#define portFORCE_INLINE\n#endif\n\n#define ATOMIC_COMPARE_AND_SWAP_SUCCESS\t 0x1U\t\t/**< Compare and swap succeeded, swapped. */\n#define ATOMIC_COMPARE_AND_SWAP_FAILURE\t 0x0U\t\t/**< Compare and swap failed, did not swap. */\n\n/*----------------------------- Swap && CAS ------------------------------*/\n\n/**\n * Atomic compare-and-swap\n *\n * @brief Performs an atomic compare-and-swap operation on the specified values.\n *\n * @param[in, out] pulDestination  Pointer to memory location from where value is\n *                               to be loaded and checked.\n * @param[in] ulExchange         If condition meets, write this value to memory.\n * @param[in] ulComparand        Swap condition.\n *\n * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped.\n *\n * @note This function only swaps *pulDestination with ulExchange, if previous\n *       *pulDestination value equals ulComparand.\n */\nstatic portFORCE_INLINE uint32_t Atomic_CompareAndSwap_u32( uint32_t volatile * pulDestination,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuint32_t ulExchange,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuint32_t ulComparand )\n{\nuint32_t ulReturnValue;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tif( *pulDestination == ulComparand )\n\t\t{\n\t\t\t*pulDestination = ulExchange;\n\t\t\tulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE;\n\t\t}\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulReturnValue;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic swap (pointers)\n *\n * @brief Atomically sets the address pointed to by *ppvDestination to the value\n *        of *pvExchange.\n *\n * @param[in, out] ppvDestination  Pointer to memory location from where a pointer\n *                                 value is to be loaded and written back to.\n * @param[in] pvExchange           Pointer value to be written to *ppvDestination.\n *\n * @return The initial value of *ppvDestination.\n */\nstatic portFORCE_INLINE void * Atomic_SwapPointers_p32( void * volatile * ppvDestination,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvoid * pvExchange )\n{\nvoid * pReturnValue;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tpReturnValue = *ppvDestination;\n\t\t*ppvDestination = pvExchange;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn pReturnValue;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic compare-and-swap (pointers)\n *\n * @brief Performs an atomic compare-and-swap operation on the specified pointer\n *        values.\n *\n * @param[in, out] ppvDestination  Pointer to memory location from where a pointer\n *                                 value is to be loaded and checked.\n * @param[in] pvExchange           If condition meets, write this value to memory.\n * @param[in] pvComparand          Swap condition.\n *\n * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped.\n *\n * @note This function only swaps *ppvDestination with pvExchange, if previous\n *       *ppvDestination value equals pvComparand.\n */\nstatic portFORCE_INLINE uint32_t Atomic_CompareAndSwapPointers_p32( void * volatile * ppvDestination,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvoid * pvExchange,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvoid * pvComparand )\n{\nuint32_t ulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tif( *ppvDestination == pvComparand )\n\t\t{\n\t\t\t*ppvDestination = pvExchange;\n\t\t\tulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS;\n\t\t}\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulReturnValue;\n}\n\n\n/*----------------------------- Arithmetic ------------------------------*/\n\n/**\n * Atomic add\n *\n * @brief Atomically adds count to the value of the specified pointer points to.\n *\n * @param[in,out] pulAddend  Pointer to memory location from where value is to be\n *                         loaded and written back to.\n * @param[in] ulCount      Value to be added to *pulAddend.\n *\n * @return previous *pulAddend value.\n */\nstatic portFORCE_INLINE uint32_t Atomic_Add_u32( uint32_t volatile * pulAddend,\n\t\t\t\t\t\t\t\t\t\t\t\t uint32_t ulCount )\n{\n\tuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulAddend;\n\t\t*pulAddend += ulCount;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic subtract\n *\n * @brief Atomically subtracts count from the value of the specified pointer\n *        pointers to.\n *\n * @param[in,out] pulAddend  Pointer to memory location from where value is to be\n *                         loaded and written back to.\n * @param[in] ulCount      Value to be subtract from *pulAddend.\n *\n * @return previous *pulAddend value.\n */\nstatic portFORCE_INLINE uint32_t Atomic_Subtract_u32( uint32_t volatile * pulAddend,\n\t\t\t\t\t\t\t\t\t\t\t\t\t  uint32_t ulCount )\n{\n\tuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulAddend;\n\t\t*pulAddend -= ulCount;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic increment\n *\n * @brief Atomically increments the value of the specified pointer points to.\n *\n * @param[in,out] pulAddend  Pointer to memory location from where value is to be\n *                         loaded and written back to.\n *\n * @return *pulAddend value before increment.\n */\nstatic portFORCE_INLINE uint32_t Atomic_Increment_u32( uint32_t volatile * pulAddend )\n{\nuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulAddend;\n\t\t*pulAddend += 1;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic decrement\n *\n * @brief Atomically decrements the value of the specified pointer points to\n *\n * @param[in,out] pulAddend  Pointer to memory location from where value is to be\n *                         loaded and written back to.\n *\n * @return *pulAddend value before decrement.\n */\nstatic portFORCE_INLINE uint32_t Atomic_Decrement_u32( uint32_t volatile * pulAddend )\n{\nuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulAddend;\n\t\t*pulAddend -= 1;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n\n/*----------------------------- Bitwise Logical ------------------------------*/\n\n/**\n * Atomic OR\n *\n * @brief Performs an atomic OR operation on the specified values.\n *\n * @param [in, out] pulDestination  Pointer to memory location from where value is\n *                                to be loaded and written back to.\n * @param [in] ulValue            Value to be ORed with *pulDestination.\n *\n * @return The original value of *pulDestination.\n */\nstatic portFORCE_INLINE uint32_t Atomic_OR_u32( uint32_t volatile * pulDestination,\n\t\t\t\t\t\t\t\t\t\t\t\tuint32_t ulValue )\n{\nuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulDestination;\n\t\t*pulDestination |= ulValue;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic AND\n *\n * @brief Performs an atomic AND operation on the specified values.\n *\n * @param [in, out] pulDestination  Pointer to memory location from where value is\n *                                to be loaded and written back to.\n * @param [in] ulValue            Value to be ANDed with *pulDestination.\n *\n * @return The original value of *pulDestination.\n */\nstatic portFORCE_INLINE uint32_t Atomic_AND_u32( uint32_t volatile * pulDestination,\n\t\t\t\t\t\t\t\t\t\t\t\t uint32_t ulValue )\n{\nuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulDestination;\n\t\t*pulDestination &= ulValue;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic NAND\n *\n * @brief Performs an atomic NAND operation on the specified values.\n *\n * @param [in, out] pulDestination  Pointer to memory location from where value is\n *                                to be loaded and written back to.\n * @param [in] ulValue            Value to be NANDed with *pulDestination.\n *\n * @return The original value of *pulDestination.\n */\nstatic portFORCE_INLINE uint32_t Atomic_NAND_u32( uint32_t volatile * pulDestination,\n\t\t\t\t\t\t\t\t\t\t\t\t  uint32_t ulValue )\n{\nuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulDestination;\n\t\t*pulDestination = ~( ulCurrent & ulValue );\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n/*-----------------------------------------------------------*/\n\n/**\n * Atomic XOR\n *\n * @brief Performs an atomic XOR operation on the specified values.\n *\n * @param [in, out] pulDestination  Pointer to memory location from where value is\n *                                to be loaded and written back to.\n * @param [in] ulValue            Value to be XORed with *pulDestination.\n *\n * @return The original value of *pulDestination.\n */\nstatic portFORCE_INLINE uint32_t Atomic_XOR_u32( uint32_t volatile * pulDestination,\n\t\t\t\t\t\t\t\t\t\t\t\t uint32_t ulValue )\n{\nuint32_t ulCurrent;\n\n\tATOMIC_ENTER_CRITICAL();\n\t{\n\t\tulCurrent = *pulDestination;\n\t\t*pulDestination ^= ulValue;\n\t}\n\tATOMIC_EXIT_CRITICAL();\n\n\treturn ulCurrent;\n}\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* ATOMIC_H */\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef CO_ROUTINE_H\n#define CO_ROUTINE_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h must appear in source files before include croutine.h\"\n#endif\n\n#include \"list.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Used to hide the implementation of the co-routine control block.  The\ncontrol block structure however has to be included in the header due to\nthe macro implementation of the co-routine functionality. */\ntypedef void * CoRoutineHandle_t;\n\n/* Defines the prototype to which co-routine functions must conform. */\ntypedef void (*crCOROUTINE_CODE)( CoRoutineHandle_t, UBaseType_t );\n\ntypedef struct corCoRoutineControlBlock\n{\n\tcrCOROUTINE_CODE \tpxCoRoutineFunction;\n\tListItem_t\t\t\txGenericListItem;\t/*< List item used to place the CRCB in ready and blocked queues. */\n\tListItem_t\t\t\txEventListItem;\t\t/*< List item used to place the CRCB in event lists. */\n\tUBaseType_t \t\tuxPriority;\t\t\t/*< The priority of the co-routine in relation to other co-routines. */\n\tUBaseType_t \t\tuxIndex;\t\t\t/*< Used to distinguish between co-routines when multiple co-routines use the same co-routine function. */\n\tuint16_t \t\t\tuxState;\t\t\t/*< Used internally by the co-routine implementation. */\n} CRCB_t; /* Co-routine control block.  Note must be identical in size down to uxPriority with TCB_t. */\n\n/**\n * croutine. h\n *<pre>\n BaseType_t xCoRoutineCreate(\n                                 crCOROUTINE_CODE pxCoRoutineCode,\n                                 UBaseType_t uxPriority,\n                                 UBaseType_t uxIndex\n                               );</pre>\n *\n * Create a new co-routine and add it to the list of co-routines that are\n * ready to run.\n *\n * @param pxCoRoutineCode Pointer to the co-routine function.  Co-routine\n * functions require special syntax - see the co-routine section of the WEB\n * documentation for more information.\n *\n * @param uxPriority The priority with respect to other co-routines at which\n *  the co-routine will run.\n *\n * @param uxIndex Used to distinguish between different co-routines that\n * execute the same function.  See the example below and the co-routine section\n * of the WEB documentation for further information.\n *\n * @return pdPASS if the co-routine was successfully created and added to a ready\n * list, otherwise an error code defined with ProjDefs.h.\n *\n * Example usage:\n   <pre>\n // Co-routine to be created.\n void vFlashCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n // Variables in co-routines must be declared static if they must maintain value across a blocking call.\n // This may not be necessary for const variables.\n static const char cLedToFlash[ 2 ] = { 5, 6 };\n static const TickType_t uxFlashRates[ 2 ] = { 200, 400 };\n\n     // Must start every co-routine with a call to crSTART();\n     crSTART( xHandle );\n\n     for( ;; )\n     {\n         // This co-routine just delays for a fixed period, then toggles\n         // an LED.  Two co-routines are created using this function, so\n         // the uxIndex parameter is used to tell the co-routine which\n         // LED to flash and how int32_t to delay.  This assumes xQueue has\n         // already been created.\n         vParTestToggleLED( cLedToFlash[ uxIndex ] );\n         crDELAY( xHandle, uxFlashRates[ uxIndex ] );\n     }\n\n     // Must end every co-routine with a call to crEND();\n     crEND();\n }\n\n // Function that creates two co-routines.\n void vOtherFunction( void )\n {\n uint8_t ucParameterToPass;\n TaskHandle_t xHandle;\n\n     // Create two co-routines at priority 0.  The first is given index 0\n     // so (from the code above) toggles LED 5 every 200 ticks.  The second\n     // is given index 1 so toggles LED 6 every 400 ticks.\n     for( uxIndex = 0; uxIndex < 2; uxIndex++ )\n     {\n         xCoRoutineCreate( vFlashCoRoutine, 0, uxIndex );\n     }\n }\n   </pre>\n * \\defgroup xCoRoutineCreate xCoRoutineCreate\n * \\ingroup Tasks\n */\nBaseType_t xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex );\n\n\n/**\n * croutine. h\n *<pre>\n void vCoRoutineSchedule( void );</pre>\n *\n * Run a co-routine.\n *\n * vCoRoutineSchedule() executes the highest priority co-routine that is able\n * to run.  The co-routine will execute until it either blocks, yields or is\n * preempted by a task.  Co-routines execute cooperatively so one\n * co-routine cannot be preempted by another, but can be preempted by a task.\n *\n * If an application comprises of both tasks and co-routines then\n * vCoRoutineSchedule should be called from the idle task (in an idle task\n * hook).\n *\n * Example usage:\n   <pre>\n // This idle task hook will schedule a co-routine each time it is called.\n // The rest of the idle task will execute between co-routine calls.\n void vApplicationIdleHook( void )\n {\n\tvCoRoutineSchedule();\n }\n\n // Alternatively, if you do not require any other part of the idle task to\n // execute, the idle task hook can call vCoRoutineSchedule() within an\n // infinite loop.\n void vApplicationIdleHook( void )\n {\n    for( ;; )\n    {\n        vCoRoutineSchedule();\n    }\n }\n </pre>\n * \\defgroup vCoRoutineSchedule vCoRoutineSchedule\n * \\ingroup Tasks\n */\nvoid vCoRoutineSchedule( void );\n\n/**\n * croutine. h\n * <pre>\n crSTART( CoRoutineHandle_t xHandle );</pre>\n *\n * This macro MUST always be called at the start of a co-routine function.\n *\n * Example usage:\n   <pre>\n // Co-routine to be created.\n void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n // Variables in co-routines must be declared static if they must maintain value across a blocking call.\n static int32_t ulAVariable;\n\n     // Must start every co-routine with a call to crSTART();\n     crSTART( xHandle );\n\n     for( ;; )\n     {\n          // Co-routine functionality goes here.\n     }\n\n     // Must end every co-routine with a call to crEND();\n     crEND();\n }</pre>\n * \\defgroup crSTART crSTART\n * \\ingroup Tasks\n */\n#define crSTART( pxCRCB ) switch( ( ( CRCB_t * )( pxCRCB ) )->uxState ) { case 0:\n\n/**\n * croutine. h\n * <pre>\n crEND();</pre>\n *\n * This macro MUST always be called at the end of a co-routine function.\n *\n * Example usage:\n   <pre>\n // Co-routine to be created.\n void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n // Variables in co-routines must be declared static if they must maintain value across a blocking call.\n static int32_t ulAVariable;\n\n     // Must start every co-routine with a call to crSTART();\n     crSTART( xHandle );\n\n     for( ;; )\n     {\n          // Co-routine functionality goes here.\n     }\n\n     // Must end every co-routine with a call to crEND();\n     crEND();\n }</pre>\n * \\defgroup crSTART crSTART\n * \\ingroup Tasks\n */\n#define crEND() }\n\n/*\n * These macros are intended for internal use by the co-routine implementation\n * only.  The macros should not be used directly by application writers.\n */\n#define crSET_STATE0( xHandle ) ( ( CRCB_t * )( xHandle ) )->uxState = (__LINE__ * 2); return; case (__LINE__ * 2):\n#define crSET_STATE1( xHandle ) ( ( CRCB_t * )( xHandle ) )->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1):\n\n/**\n * croutine. h\n *<pre>\n crDELAY( CoRoutineHandle_t xHandle, TickType_t xTicksToDelay );</pre>\n *\n * Delay a co-routine for a fixed period of time.\n *\n * crDELAY can only be called from the co-routine function itself - not\n * from within a function called by the co-routine function.  This is because\n * co-routines do not maintain their own stack.\n *\n * @param xHandle The handle of the co-routine to delay.  This is the xHandle\n * parameter of the co-routine function.\n *\n * @param xTickToDelay The number of ticks that the co-routine should delay\n * for.  The actual amount of time this equates to is defined by\n * configTICK_RATE_HZ (set in FreeRTOSConfig.h).  The constant portTICK_PERIOD_MS\n * can be used to convert ticks to milliseconds.\n *\n * Example usage:\n   <pre>\n // Co-routine to be created.\n void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n // Variables in co-routines must be declared static if they must maintain value across a blocking call.\n // This may not be necessary for const variables.\n // We are to delay for 200ms.\n static const xTickType xDelayTime = 200 / portTICK_PERIOD_MS;\n\n     // Must start every co-routine with a call to crSTART();\n     crSTART( xHandle );\n\n     for( ;; )\n     {\n        // Delay for 200ms.\n        crDELAY( xHandle, xDelayTime );\n\n        // Do something here.\n     }\n\n     // Must end every co-routine with a call to crEND();\n     crEND();\n }</pre>\n * \\defgroup crDELAY crDELAY\n * \\ingroup Tasks\n */\n#define crDELAY( xHandle, xTicksToDelay )\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tif( ( xTicksToDelay ) > 0 )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tvCoRoutineAddToDelayedList( ( xTicksToDelay ), NULL );\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tcrSET_STATE0( ( xHandle ) );\n\n/**\n * <pre>\n crQUEUE_SEND(\n                  CoRoutineHandle_t xHandle,\n                  QueueHandle_t pxQueue,\n                  void *pvItemToQueue,\n                  TickType_t xTicksToWait,\n                  BaseType_t *pxResult\n             )</pre>\n *\n * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine\n * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks.\n *\n * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas\n * xQueueSend() and xQueueReceive() can only be used from tasks.\n *\n * crQUEUE_SEND can only be called from the co-routine function itself - not\n * from within a function called by the co-routine function.  This is because\n * co-routines do not maintain their own stack.\n *\n * See the co-routine section of the WEB documentation for information on\n * passing data between tasks and co-routines and between ISR's and\n * co-routines.\n *\n * @param xHandle The handle of the calling co-routine.  This is the xHandle\n * parameter of the co-routine function.\n *\n * @param pxQueue The handle of the queue on which the data will be posted.\n * The handle is obtained as the return value when the queue is created using\n * the xQueueCreate() API function.\n *\n * @param pvItemToQueue A pointer to the data being posted onto the queue.\n * The number of bytes of each queued item is specified when the queue is\n * created.  This number of bytes is copied from pvItemToQueue into the queue\n * itself.\n *\n * @param xTickToDelay The number of ticks that the co-routine should block\n * to wait for space to become available on the queue, should space not be\n * available immediately. The actual amount of time this equates to is defined\n * by configTICK_RATE_HZ (set in FreeRTOSConfig.h).  The constant\n * portTICK_PERIOD_MS can be used to convert ticks to milliseconds (see example\n * below).\n *\n * @param pxResult The variable pointed to by pxResult will be set to pdPASS if\n * data was successfully posted onto the queue, otherwise it will be set to an\n * error defined within ProjDefs.h.\n *\n * Example usage:\n   <pre>\n // Co-routine function that blocks for a fixed period then posts a number onto\n // a queue.\n static void prvCoRoutineFlashTask( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n // Variables in co-routines must be declared static if they must maintain value across a blocking call.\n static BaseType_t xNumberToPost = 0;\n static BaseType_t xResult;\n\n    // Co-routines must begin with a call to crSTART().\n    crSTART( xHandle );\n\n    for( ;; )\n    {\n        // This assumes the queue has already been created.\n        crQUEUE_SEND( xHandle, xCoRoutineQueue, &xNumberToPost, NO_DELAY, &xResult );\n\n        if( xResult != pdPASS )\n        {\n            // The message was not posted!\n        }\n\n        // Increment the number to be posted onto the queue.\n        xNumberToPost++;\n\n        // Delay for 100 ticks.\n        crDELAY( xHandle, 100 );\n    }\n\n    // Co-routines must end with a call to crEND().\n    crEND();\n }</pre>\n * \\defgroup crQUEUE_SEND crQUEUE_SEND\n * \\ingroup Tasks\n */\n#define crQUEUE_SEND( xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult )\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t*( pxResult ) = xQueueCRSend( ( pxQueue) , ( pvItemToQueue) , ( xTicksToWait ) );\t\\\n\tif( *( pxResult ) == errQUEUE_BLOCKED )\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tcrSET_STATE0( ( xHandle ) );\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t*pxResult = xQueueCRSend( ( pxQueue ), ( pvItemToQueue ), 0 );\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tif( *pxResult == errQUEUE_YIELD )\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tcrSET_STATE1( ( xHandle ) );\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t*pxResult = pdPASS;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n}\n\n/**\n * croutine. h\n * <pre>\n  crQUEUE_RECEIVE(\n                     CoRoutineHandle_t xHandle,\n                     QueueHandle_t pxQueue,\n                     void *pvBuffer,\n                     TickType_t xTicksToWait,\n                     BaseType_t *pxResult\n                 )</pre>\n *\n * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine\n * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks.\n *\n * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas\n * xQueueSend() and xQueueReceive() can only be used from tasks.\n *\n * crQUEUE_RECEIVE can only be called from the co-routine function itself - not\n * from within a function called by the co-routine function.  This is because\n * co-routines do not maintain their own stack.\n *\n * See the co-routine section of the WEB documentation for information on\n * passing data between tasks and co-routines and between ISR's and\n * co-routines.\n *\n * @param xHandle The handle of the calling co-routine.  This is the xHandle\n * parameter of the co-routine function.\n *\n * @param pxQueue The handle of the queue from which the data will be received.\n * The handle is obtained as the return value when the queue is created using\n * the xQueueCreate() API function.\n *\n * @param pvBuffer The buffer into which the received item is to be copied.\n * The number of bytes of each queued item is specified when the queue is\n * created.  This number of bytes is copied into pvBuffer.\n *\n * @param xTickToDelay The number of ticks that the co-routine should block\n * to wait for data to become available from the queue, should data not be\n * available immediately. The actual amount of time this equates to is defined\n * by configTICK_RATE_HZ (set in FreeRTOSConfig.h).  The constant\n * portTICK_PERIOD_MS can be used to convert ticks to milliseconds (see the\n * crQUEUE_SEND example).\n *\n * @param pxResult The variable pointed to by pxResult will be set to pdPASS if\n * data was successfully retrieved from the queue, otherwise it will be set to\n * an error code as defined within ProjDefs.h.\n *\n * Example usage:\n <pre>\n // A co-routine receives the number of an LED to flash from a queue.  It\n // blocks on the queue until the number is received.\n static void prvCoRoutineFlashWorkTask( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n // Variables in co-routines must be declared static if they must maintain value across a blocking call.\n static BaseType_t xResult;\n static UBaseType_t uxLEDToFlash;\n\n    // All co-routines must start with a call to crSTART().\n    crSTART( xHandle );\n\n    for( ;; )\n    {\n        // Wait for data to become available on the queue.\n        crQUEUE_RECEIVE( xHandle, xCoRoutineQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );\n\n        if( xResult == pdPASS )\n        {\n            // We received the LED to flash - flash it!\n            vParTestToggleLED( uxLEDToFlash );\n        }\n    }\n\n    crEND();\n }</pre>\n * \\defgroup crQUEUE_RECEIVE crQUEUE_RECEIVE\n * \\ingroup Tasks\n */\n#define crQUEUE_RECEIVE( xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult )\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t*( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), ( xTicksToWait ) );\t\t\\\n\tif( *( pxResult ) == errQUEUE_BLOCKED ) \t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tcrSET_STATE0( ( xHandle ) );\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t*( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), 0 );\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tif( *( pxResult ) == errQUEUE_YIELD )\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tcrSET_STATE1( ( xHandle ) );\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t*( pxResult ) = pdPASS;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n}\n\n/**\n * croutine. h\n * <pre>\n  crQUEUE_SEND_FROM_ISR(\n                            QueueHandle_t pxQueue,\n                            void *pvItemToQueue,\n                            BaseType_t xCoRoutinePreviouslyWoken\n                       )</pre>\n *\n * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the\n * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR()\n * functions used by tasks.\n *\n * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to\n * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and\n * xQueueReceiveFromISR() can only be used to pass data between a task and and\n * ISR.\n *\n * crQUEUE_SEND_FROM_ISR can only be called from an ISR to send data to a queue\n * that is being used from within a co-routine.\n *\n * See the co-routine section of the WEB documentation for information on\n * passing data between tasks and co-routines and between ISR's and\n * co-routines.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param xCoRoutinePreviouslyWoken This is included so an ISR can post onto\n * the same queue multiple times from a single interrupt.  The first call\n * should always pass in pdFALSE.  Subsequent calls should pass in\n * the value returned from the previous call.\n *\n * @return pdTRUE if a co-routine was woken by posting onto the queue.  This is\n * used by the ISR to determine if a context switch may be required following\n * the ISR.\n *\n * Example usage:\n <pre>\n // A co-routine that blocks on a queue waiting for characters to be received.\n static void vReceivingCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n char cRxedChar;\n BaseType_t xResult;\n\n     // All co-routines must start with a call to crSTART().\n     crSTART( xHandle );\n\n     for( ;; )\n     {\n         // Wait for data to become available on the queue.  This assumes the\n         // queue xCommsRxQueue has already been created!\n         crQUEUE_RECEIVE( xHandle, xCommsRxQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );\n\n         // Was a character received?\n         if( xResult == pdPASS )\n         {\n             // Process the character here.\n         }\n     }\n\n     // All co-routines must end with a call to crEND().\n     crEND();\n }\n\n // An ISR that uses a queue to send characters received on a serial port to\n // a co-routine.\n void vUART_ISR( void )\n {\n char cRxedChar;\n BaseType_t xCRWokenByPost = pdFALSE;\n\n     // We loop around reading characters until there are none left in the UART.\n     while( UART_RX_REG_NOT_EMPTY() )\n     {\n         // Obtain the character from the UART.\n         cRxedChar = UART_RX_REG;\n\n         // Post the character onto a queue.  xCRWokenByPost will be pdFALSE\n         // the first time around the loop.  If the post causes a co-routine\n         // to be woken (unblocked) then xCRWokenByPost will be set to pdTRUE.\n         // In this manner we can ensure that if more than one co-routine is\n         // blocked on the queue only one is woken by this ISR no matter how\n         // many characters are posted to the queue.\n         xCRWokenByPost = crQUEUE_SEND_FROM_ISR( xCommsRxQueue, &cRxedChar, xCRWokenByPost );\n     }\n }</pre>\n * \\defgroup crQUEUE_SEND_FROM_ISR crQUEUE_SEND_FROM_ISR\n * \\ingroup Tasks\n */\n#define crQUEUE_SEND_FROM_ISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken ) xQueueCRSendFromISR( ( pxQueue ), ( pvItemToQueue ), ( xCoRoutinePreviouslyWoken ) )\n\n\n/**\n * croutine. h\n * <pre>\n  crQUEUE_SEND_FROM_ISR(\n                            QueueHandle_t pxQueue,\n                            void *pvBuffer,\n                            BaseType_t * pxCoRoutineWoken\n                       )</pre>\n *\n * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the\n * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR()\n * functions used by tasks.\n *\n * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to\n * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and\n * xQueueReceiveFromISR() can only be used to pass data between a task and and\n * ISR.\n *\n * crQUEUE_RECEIVE_FROM_ISR can only be called from an ISR to receive data\n * from a queue that is being used from within a co-routine (a co-routine\n * posted to the queue).\n *\n * See the co-routine section of the WEB documentation for information on\n * passing data between tasks and co-routines and between ISR's and\n * co-routines.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvBuffer A pointer to a buffer into which the received item will be\n * placed.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from the queue into\n * pvBuffer.\n *\n * @param pxCoRoutineWoken A co-routine may be blocked waiting for space to become\n * available on the queue.  If crQUEUE_RECEIVE_FROM_ISR causes such a\n * co-routine to unblock *pxCoRoutineWoken will get set to pdTRUE, otherwise\n * *pxCoRoutineWoken will remain unchanged.\n *\n * @return pdTRUE an item was successfully received from the queue, otherwise\n * pdFALSE.\n *\n * Example usage:\n <pre>\n // A co-routine that posts a character to a queue then blocks for a fixed\n // period.  The character is incremented each time.\n static void vSendingCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )\n {\n // cChar holds its value while this co-routine is blocked and must therefore\n // be declared static.\n static char cCharToTx = 'a';\n BaseType_t xResult;\n\n     // All co-routines must start with a call to crSTART().\n     crSTART( xHandle );\n\n     for( ;; )\n     {\n         // Send the next character to the queue.\n         crQUEUE_SEND( xHandle, xCoRoutineQueue, &cCharToTx, NO_DELAY, &xResult );\n\n         if( xResult == pdPASS )\n         {\n             // The character was successfully posted to the queue.\n         }\n\t\t else\n\t\t {\n\t\t\t// Could not post the character to the queue.\n\t\t }\n\n         // Enable the UART Tx interrupt to cause an interrupt in this\n\t\t // hypothetical UART.  The interrupt will obtain the character\n\t\t // from the queue and send it.\n\t\t ENABLE_RX_INTERRUPT();\n\n\t\t // Increment to the next character then block for a fixed period.\n\t\t // cCharToTx will maintain its value across the delay as it is\n\t\t // declared static.\n\t\t cCharToTx++;\n\t\t if( cCharToTx > 'x' )\n\t\t {\n\t\t\tcCharToTx = 'a';\n\t\t }\n\t\t crDELAY( 100 );\n     }\n\n     // All co-routines must end with a call to crEND().\n     crEND();\n }\n\n // An ISR that uses a queue to receive characters to send on a UART.\n void vUART_ISR( void )\n {\n char cCharToTx;\n BaseType_t xCRWokenByPost = pdFALSE;\n\n     while( UART_TX_REG_EMPTY() )\n     {\n         // Are there any characters in the queue waiting to be sent?\n\t\t // xCRWokenByPost will automatically be set to pdTRUE if a co-routine\n\t\t // is woken by the post - ensuring that only a single co-routine is\n\t\t // woken no matter how many times we go around this loop.\n         if( crQUEUE_RECEIVE_FROM_ISR( pxQueue, &cCharToTx, &xCRWokenByPost ) )\n\t\t {\n\t\t\t SEND_CHARACTER( cCharToTx );\n\t\t }\n     }\n }</pre>\n * \\defgroup crQUEUE_RECEIVE_FROM_ISR crQUEUE_RECEIVE_FROM_ISR\n * \\ingroup Tasks\n */\n#define crQUEUE_RECEIVE_FROM_ISR( pxQueue, pvBuffer, pxCoRoutineWoken ) xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) )\n\n/*\n * This function is intended for internal use by the co-routine macros only.\n * The macro nature of the co-routine implementation requires that the\n * prototype appears here.  The function should not be used by application\n * writers.\n *\n * Removes the current co-routine from its ready list and places it in the\n * appropriate delayed list.\n */\nvoid vCoRoutineAddToDelayedList( TickType_t xTicksToDelay, List_t *pxEventList );\n\n/*\n * This function is intended for internal use by the queue implementation only.\n * The function should not be used by application writers.\n *\n * Removes the highest priority co-routine from the event list and places it in\n * the pending ready list.\n */\nBaseType_t xCoRoutineRemoveFromEventList( const List_t *pxEventList );\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* CO_ROUTINE_H */\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef DEPRECATED_DEFINITIONS_H\n#define DEPRECATED_DEFINITIONS_H\n\n\n/* Each FreeRTOS port has a unique portmacro.h header file.  Originally a\npre-processor definition was used to ensure the pre-processor found the correct\nportmacro.h file for the port being used.  That scheme was deprecated in favour\nof setting the compiler's include path such that it found the correct\nportmacro.h file - removing the need for the constant and allowing the\nportmacro.h file to be located anywhere in relation to the port being used.  The\ndefinitions below remain in the code for backward compatibility only.  New\nprojects should not use them. */\n\n#ifdef OPEN_WATCOM_INDUSTRIAL_PC_PORT\n\t#include \"..\\..\\Source\\portable\\owatcom\\16bitdos\\pc\\portmacro.h\"\n\ttypedef void ( __interrupt __far *pxISR )();\n#endif\n\n#ifdef OPEN_WATCOM_FLASH_LITE_186_PORT\n\t#include \"..\\..\\Source\\portable\\owatcom\\16bitdos\\flsh186\\portmacro.h\"\n\ttypedef void ( __interrupt __far *pxISR )();\n#endif\n\n#ifdef GCC_MEGA_AVR\n\t#include \"../portable/GCC/ATMega323/portmacro.h\"\n#endif\n\n#ifdef IAR_MEGA_AVR\n\t#include \"../portable/IAR/ATMega323/portmacro.h\"\n#endif\n\n#ifdef MPLAB_PIC24_PORT\n\t#include \"../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h\"\n#endif\n\n#ifdef MPLAB_DSPIC_PORT\n\t#include \"../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h\"\n#endif\n\n#ifdef MPLAB_PIC18F_PORT\n\t#include \"../../Source/portable/MPLAB/PIC18F/portmacro.h\"\n#endif\n\n#ifdef MPLAB_PIC32MX_PORT\n\t#include \"../../Source/portable/MPLAB/PIC32MX/portmacro.h\"\n#endif\n\n#ifdef _FEDPICC\n\t#include \"libFreeRTOS/Include/portmacro.h\"\n#endif\n\n#ifdef SDCC_CYGNAL\n\t#include \"../../Source/portable/SDCC/Cygnal/portmacro.h\"\n#endif\n\n#ifdef GCC_ARM7\n\t#include \"../../Source/portable/GCC/ARM7_LPC2000/portmacro.h\"\n#endif\n\n#ifdef GCC_ARM7_ECLIPSE\n\t#include \"portmacro.h\"\n#endif\n\n#ifdef ROWLEY_LPC23xx\n\t#include \"../../Source/portable/GCC/ARM7_LPC23xx/portmacro.h\"\n#endif\n\n#ifdef IAR_MSP430\n\t#include \"..\\..\\Source\\portable\\IAR\\MSP430\\portmacro.h\"\n#endif\n\n#ifdef GCC_MSP430\n\t#include \"../../Source/portable/GCC/MSP430F449/portmacro.h\"\n#endif\n\n#ifdef ROWLEY_MSP430\n\t#include \"../../Source/portable/Rowley/MSP430F449/portmacro.h\"\n#endif\n\n#ifdef ARM7_LPC21xx_KEIL_RVDS\n\t#include \"..\\..\\Source\\portable\\RVDS\\ARM7_LPC21xx\\portmacro.h\"\n#endif\n\n#ifdef SAM7_GCC\n\t#include \"../../Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h\"\n#endif\n\n#ifdef SAM7_IAR\n\t#include \"..\\..\\Source\\portable\\IAR\\AtmelSAM7S64\\portmacro.h\"\n#endif\n\n#ifdef SAM9XE_IAR\n\t#include \"..\\..\\Source\\portable\\IAR\\AtmelSAM9XE\\portmacro.h\"\n#endif\n\n#ifdef LPC2000_IAR\n\t#include \"..\\..\\Source\\portable\\IAR\\LPC2000\\portmacro.h\"\n#endif\n\n#ifdef STR71X_IAR\n\t#include \"..\\..\\Source\\portable\\IAR\\STR71x\\portmacro.h\"\n#endif\n\n#ifdef STR75X_IAR\n\t#include \"..\\..\\Source\\portable\\IAR\\STR75x\\portmacro.h\"\n#endif\n\n#ifdef STR75X_GCC\n\t#include \"..\\..\\Source\\portable\\GCC\\STR75x\\portmacro.h\"\n#endif\n\n#ifdef STR91X_IAR\n\t#include \"..\\..\\Source\\portable\\IAR\\STR91x\\portmacro.h\"\n#endif\n\n#ifdef GCC_H8S\n\t#include \"../../Source/portable/GCC/H8S2329/portmacro.h\"\n#endif\n\n#ifdef GCC_AT91FR40008\n\t#include \"../../Source/portable/GCC/ARM7_AT91FR40008/portmacro.h\"\n#endif\n\n#ifdef RVDS_ARMCM3_LM3S102\n\t#include \"../../Source/portable/RVDS/ARM_CM3/portmacro.h\"\n#endif\n\n#ifdef GCC_ARMCM3_LM3S102\n\t#include \"../../Source/portable/GCC/ARM_CM3/portmacro.h\"\n#endif\n\n#ifdef GCC_ARMCM3\n\t#include \"../../Source/portable/GCC/ARM_CM3/portmacro.h\"\n#endif\n\n#ifdef IAR_ARM_CM3\n\t#include \"../../Source/portable/IAR/ARM_CM3/portmacro.h\"\n#endif\n\n#ifdef IAR_ARMCM3_LM\n\t#include \"../../Source/portable/IAR/ARM_CM3/portmacro.h\"\n#endif\n\n#ifdef HCS12_CODE_WARRIOR\n\t#include \"../../Source/portable/CodeWarrior/HCS12/portmacro.h\"\n#endif\n\n#ifdef MICROBLAZE_GCC\n\t#include \"../../Source/portable/GCC/MicroBlaze/portmacro.h\"\n#endif\n\n#ifdef TERN_EE\n\t#include \"..\\..\\Source\\portable\\Paradigm\\Tern_EE\\small\\portmacro.h\"\n#endif\n\n#ifdef GCC_HCS12\n\t#include \"../../Source/portable/GCC/HCS12/portmacro.h\"\n#endif\n\n#ifdef GCC_MCF5235\n    #include \"../../Source/portable/GCC/MCF5235/portmacro.h\"\n#endif\n\n#ifdef COLDFIRE_V2_GCC\n\t#include \"../../../Source/portable/GCC/ColdFire_V2/portmacro.h\"\n#endif\n\n#ifdef COLDFIRE_V2_CODEWARRIOR\n\t#include \"../../Source/portable/CodeWarrior/ColdFire_V2/portmacro.h\"\n#endif\n\n#ifdef GCC_PPC405\n\t#include \"../../Source/portable/GCC/PPC405_Xilinx/portmacro.h\"\n#endif\n\n#ifdef GCC_PPC440\n\t#include \"../../Source/portable/GCC/PPC440_Xilinx/portmacro.h\"\n#endif\n\n#ifdef _16FX_SOFTUNE\n\t#include \"..\\..\\Source\\portable\\Softune\\MB96340\\portmacro.h\"\n#endif\n\n#ifdef BCC_INDUSTRIAL_PC_PORT\n\t/* A short file name has to be used in place of the normal\n\tFreeRTOSConfig.h when using the Borland compiler. */\n\t#include \"frconfig.h\"\n\t#include \"..\\portable\\BCC\\16BitDOS\\PC\\prtmacro.h\"\n    typedef void ( __interrupt __far *pxISR )();\n#endif\n\n#ifdef BCC_FLASH_LITE_186_PORT\n\t/* A short file name has to be used in place of the normal\n\tFreeRTOSConfig.h when using the Borland compiler. */\n\t#include \"frconfig.h\"\n\t#include \"..\\portable\\BCC\\16BitDOS\\flsh186\\prtmacro.h\"\n    typedef void ( __interrupt __far *pxISR )();\n#endif\n\n#ifdef __GNUC__\n   #ifdef __AVR32_AVR32A__\n\t   #include \"portmacro.h\"\n   #endif\n#endif\n\n#ifdef __ICCAVR32__\n   #ifdef __CORE__\n      #if __CORE__ == __AVR32A__\n\t      #include \"portmacro.h\"\n      #endif\n   #endif\n#endif\n\n#ifdef __91467D\n\t#include \"portmacro.h\"\n#endif\n\n#ifdef __96340\n\t#include \"portmacro.h\"\n#endif\n\n\n#ifdef __IAR_V850ES_Fx3__\n\t#include \"../../Source/portable/IAR/V850ES/portmacro.h\"\n#endif\n\n#ifdef __IAR_V850ES_Jx3__\n\t#include \"../../Source/portable/IAR/V850ES/portmacro.h\"\n#endif\n\n#ifdef __IAR_V850ES_Jx3_L__\n\t#include \"../../Source/portable/IAR/V850ES/portmacro.h\"\n#endif\n\n#ifdef __IAR_V850ES_Jx2__\n\t#include \"../../Source/portable/IAR/V850ES/portmacro.h\"\n#endif\n\n#ifdef __IAR_V850ES_Hx2__\n\t#include \"../../Source/portable/IAR/V850ES/portmacro.h\"\n#endif\n\n#ifdef __IAR_78K0R_Kx3__\n\t#include \"../../Source/portable/IAR/78K0R/portmacro.h\"\n#endif\n\n#ifdef __IAR_78K0R_Kx3L__\n\t#include \"../../Source/portable/IAR/78K0R/portmacro.h\"\n#endif\n\n#endif /* DEPRECATED_DEFINITIONS_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef EVENT_GROUPS_H\n#define EVENT_GROUPS_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h\" must appear in source files before \"include event_groups.h\"\n#endif\n\n/* FreeRTOS includes. */\n#include \"timers.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * An event group is a collection of bits to which an application can assign a\n * meaning.  For example, an application may create an event group to convey\n * the status of various CAN bus related events in which bit 0 might mean \"A CAN\n * message has been received and is ready for processing\", bit 1 might mean \"The\n * application has queued a message that is ready for sending onto the CAN\n * network\", and bit 2 might mean \"It is time to send a SYNC message onto the\n * CAN network\" etc.  A task can then test the bit values to see which events\n * are active, and optionally enter the Blocked state to wait for a specified\n * bit or a group of specified bits to be active.  To continue the CAN bus\n * example, a CAN controlling task can enter the Blocked state (and therefore\n * not consume any processing time) until either bit 0, bit 1 or bit 2 are\n * active, at which time the bit that was actually active would inform the task\n * which action it had to take (process a received message, send a message, or\n * send a SYNC).\n *\n * The event groups implementation contains intelligence to avoid race\n * conditions that would otherwise occur were an application to use a simple\n * variable for the same purpose.  This is particularly important with respect\n * to when a bit within an event group is to be cleared, and when bits have to\n * be set and then tested atomically - as is the case where event groups are\n * used to create a synchronisation point between multiple tasks (a\n * 'rendezvous').\n *\n * \\defgroup EventGroup\n */\n\n\n\n/**\n * event_groups.h\n *\n * Type by which event groups are referenced.  For example, a call to\n * xEventGroupCreate() returns an EventGroupHandle_t variable that can then\n * be used as a parameter to other event group functions.\n *\n * \\defgroup EventGroupHandle_t EventGroupHandle_t\n * \\ingroup EventGroup\n */\nstruct EventGroupDef_t;\ntypedef struct EventGroupDef_t * EventGroupHandle_t;\n\n/*\n * The type that holds event bits always matches TickType_t - therefore the\n * number of bits it holds is set by configUSE_16_BIT_TICKS (16 bits if set to 1,\n * 32 bits if set to 0.\n *\n * \\defgroup EventBits_t EventBits_t\n * \\ingroup EventGroup\n */\ntypedef TickType_t EventBits_t;\n\n/**\n * event_groups.h\n *<pre>\n EventGroupHandle_t xEventGroupCreate( void );\n </pre>\n *\n * Create a new event group.\n *\n * Internally, within the FreeRTOS implementation, event groups use a [small]\n * block of memory, in which the event group's structure is stored.  If an event\n * groups is created using xEventGropuCreate() then the required memory is\n * automatically dynamically allocated inside the xEventGroupCreate() function.\n * (see http://www.freertos.org/a00111.html).  If an event group is created\n * using xEventGropuCreateStatic() then the application writer must instead\n * provide the memory that will get used by the event group.\n * xEventGroupCreateStatic() therefore allows an event group to be created\n * without using any dynamic memory allocation.\n *\n * Although event groups are not related to ticks, for internal implementation\n * reasons the number of bits available for use in an event group is dependent\n * on the configUSE_16_BIT_TICKS setting in FreeRTOSConfig.h.  If\n * configUSE_16_BIT_TICKS is 1 then each event group contains 8 usable bits (bit\n * 0 to bit 7).  If configUSE_16_BIT_TICKS is set to 0 then each event group has\n * 24 usable bits (bit 0 to bit 23).  The EventBits_t type is used to store\n * event bits within an event group.\n *\n * @return If the event group was created then a handle to the event group is\n * returned.  If there was insufficient FreeRTOS heap available to create the\n * event group then NULL is returned.  See http://www.freertos.org/a00111.html\n *\n * Example usage:\n   <pre>\n\t// Declare a variable to hold the created event group.\n\tEventGroupHandle_t xCreatedEventGroup;\n\n\t// Attempt to create the event group.\n\txCreatedEventGroup = xEventGroupCreate();\n\n\t// Was the event group created successfully?\n\tif( xCreatedEventGroup == NULL )\n\t{\n\t\t// The event group was not created because there was insufficient\n\t\t// FreeRTOS heap available.\n\t}\n\telse\n\t{\n\t\t// The event group was created.\n\t}\n   </pre>\n * \\defgroup xEventGroupCreate xEventGroupCreate\n * \\ingroup EventGroup\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\tEventGroupHandle_t xEventGroupCreate( void ) PRIVILEGED_FUNCTION;\n#endif\n\n/**\n * event_groups.h\n *<pre>\n EventGroupHandle_t xEventGroupCreateStatic( EventGroupHandle_t * pxEventGroupBuffer );\n </pre>\n *\n * Create a new event group.\n *\n * Internally, within the FreeRTOS implementation, event groups use a [small]\n * block of memory, in which the event group's structure is stored.  If an event\n * groups is created using xEventGropuCreate() then the required memory is\n * automatically dynamically allocated inside the xEventGroupCreate() function.\n * (see http://www.freertos.org/a00111.html).  If an event group is created\n * using xEventGropuCreateStatic() then the application writer must instead\n * provide the memory that will get used by the event group.\n * xEventGroupCreateStatic() therefore allows an event group to be created\n * without using any dynamic memory allocation.\n *\n * Although event groups are not related to ticks, for internal implementation\n * reasons the number of bits available for use in an event group is dependent\n * on the configUSE_16_BIT_TICKS setting in FreeRTOSConfig.h.  If\n * configUSE_16_BIT_TICKS is 1 then each event group contains 8 usable bits (bit\n * 0 to bit 7).  If configUSE_16_BIT_TICKS is set to 0 then each event group has\n * 24 usable bits (bit 0 to bit 23).  The EventBits_t type is used to store\n * event bits within an event group.\n *\n * @param pxEventGroupBuffer pxEventGroupBuffer must point to a variable of type\n * StaticEventGroup_t, which will be then be used to hold the event group's data\n * structures, removing the need for the memory to be allocated dynamically.\n *\n * @return If the event group was created then a handle to the event group is\n * returned.  If pxEventGroupBuffer was NULL then NULL is returned.\n *\n * Example usage:\n   <pre>\n\t// StaticEventGroup_t is a publicly accessible structure that has the same\n\t// size and alignment requirements as the real event group structure.  It is\n\t// provided as a mechanism for applications to know the size of the event\n\t// group (which is dependent on the architecture and configuration file\n\t// settings) without breaking the strict data hiding policy by exposing the\n\t// real event group internals.  This StaticEventGroup_t variable is passed\n\t// into the xSemaphoreCreateEventGroupStatic() function and is used to store\n\t// the event group's data structures\n\tStaticEventGroup_t xEventGroupBuffer;\n\n\t// Create the event group without dynamically allocating any memory.\n\txEventGroup = xEventGroupCreateStatic( &xEventGroupBuffer );\n   </pre>\n */\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\tEventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) PRIVILEGED_FUNCTION;\n#endif\n\n/**\n * event_groups.h\n *<pre>\n\tEventBits_t xEventGroupWaitBits( \tEventGroupHandle_t xEventGroup,\n\t\t\t\t\t\t\t\t\t\tconst EventBits_t uxBitsToWaitFor,\n\t\t\t\t\t\t\t\t\t\tconst BaseType_t xClearOnExit,\n\t\t\t\t\t\t\t\t\t\tconst BaseType_t xWaitForAllBits,\n\t\t\t\t\t\t\t\t\t\tconst TickType_t xTicksToWait );\n </pre>\n *\n * [Potentially] block to wait for one or more bits to be set within a\n * previously created event group.\n *\n * This function cannot be called from an interrupt.\n *\n * @param xEventGroup The event group in which the bits are being tested.  The\n * event group must have previously been created using a call to\n * xEventGroupCreate().\n *\n * @param uxBitsToWaitFor A bitwise value that indicates the bit or bits to test\n * inside the event group.  For example, to wait for bit 0 and/or bit 2 set\n * uxBitsToWaitFor to 0x05.  To wait for bits 0 and/or bit 1 and/or bit 2 set\n * uxBitsToWaitFor to 0x07.  Etc.\n *\n * @param xClearOnExit If xClearOnExit is set to pdTRUE then any bits within\n * uxBitsToWaitFor that are set within the event group will be cleared before\n * xEventGroupWaitBits() returns if the wait condition was met (if the function\n * returns for a reason other than a timeout).  If xClearOnExit is set to\n * pdFALSE then the bits set in the event group are not altered when the call to\n * xEventGroupWaitBits() returns.\n *\n * @param xWaitForAllBits If xWaitForAllBits is set to pdTRUE then\n * xEventGroupWaitBits() will return when either all the bits in uxBitsToWaitFor\n * are set or the specified block time expires.  If xWaitForAllBits is set to\n * pdFALSE then xEventGroupWaitBits() will return when any one of the bits set\n * in uxBitsToWaitFor is set or the specified block time expires.  The block\n * time is specified by the xTicksToWait parameter.\n *\n * @param xTicksToWait The maximum amount of time (specified in 'ticks') to wait\n * for one/all (depending on the xWaitForAllBits value) of the bits specified by\n * uxBitsToWaitFor to become set.\n *\n * @return The value of the event group at the time either the bits being waited\n * for became set, or the block time expired.  Test the return value to know\n * which bits were set.  If xEventGroupWaitBits() returned because its timeout\n * expired then not all the bits being waited for will be set.  If\n * xEventGroupWaitBits() returned because the bits it was waiting for were set\n * then the returned value is the event group value before any bits were\n * automatically cleared in the case that xClearOnExit parameter was set to\n * pdTRUE.\n *\n * Example usage:\n   <pre>\n   #define BIT_0\t( 1 << 0 )\n   #define BIT_4\t( 1 << 4 )\n\n   void aFunction( EventGroupHandle_t xEventGroup )\n   {\n   EventBits_t uxBits;\n   const TickType_t xTicksToWait = 100 / portTICK_PERIOD_MS;\n\n\t\t// Wait a maximum of 100ms for either bit 0 or bit 4 to be set within\n\t\t// the event group.  Clear the bits before exiting.\n\t\tuxBits = xEventGroupWaitBits(\n\t\t\t\t\txEventGroup,\t// The event group being tested.\n\t\t\t\t\tBIT_0 | BIT_4,\t// The bits within the event group to wait for.\n\t\t\t\t\tpdTRUE,\t\t\t// BIT_0 and BIT_4 should be cleared before returning.\n\t\t\t\t\tpdFALSE,\t\t// Don't wait for both bits, either bit will do.\n\t\t\t\t\txTicksToWait );\t// Wait a maximum of 100ms for either bit to be set.\n\n\t\tif( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )\n\t\t{\n\t\t\t// xEventGroupWaitBits() returned because both bits were set.\n\t\t}\n\t\telse if( ( uxBits & BIT_0 ) != 0 )\n\t\t{\n\t\t\t// xEventGroupWaitBits() returned because just BIT_0 was set.\n\t\t}\n\t\telse if( ( uxBits & BIT_4 ) != 0 )\n\t\t{\n\t\t\t// xEventGroupWaitBits() returned because just BIT_4 was set.\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// xEventGroupWaitBits() returned because xTicksToWait ticks passed\n\t\t\t// without either BIT_0 or BIT_4 becoming set.\n\t\t}\n   }\n   </pre>\n * \\defgroup xEventGroupWaitBits xEventGroupWaitBits\n * \\ingroup EventGroup\n */\nEventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * event_groups.h\n *<pre>\n\tEventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear );\n </pre>\n *\n * Clear bits within an event group.  This function cannot be called from an\n * interrupt.\n *\n * @param xEventGroup The event group in which the bits are to be cleared.\n *\n * @param uxBitsToClear A bitwise value that indicates the bit or bits to clear\n * in the event group.  For example, to clear bit 3 only, set uxBitsToClear to\n * 0x08.  To clear bit 3 and bit 0 set uxBitsToClear to 0x09.\n *\n * @return The value of the event group before the specified bits were cleared.\n *\n * Example usage:\n   <pre>\n   #define BIT_0\t( 1 << 0 )\n   #define BIT_4\t( 1 << 4 )\n\n   void aFunction( EventGroupHandle_t xEventGroup )\n   {\n   EventBits_t uxBits;\n\n\t\t// Clear bit 0 and bit 4 in xEventGroup.\n\t\tuxBits = xEventGroupClearBits(\n\t\t\t\t\t\t\t\txEventGroup,\t// The event group being updated.\n\t\t\t\t\t\t\t\tBIT_0 | BIT_4 );// The bits being cleared.\n\n\t\tif( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )\n\t\t{\n\t\t\t// Both bit 0 and bit 4 were set before xEventGroupClearBits() was\n\t\t\t// called.  Both will now be clear (not set).\n\t\t}\n\t\telse if( ( uxBits & BIT_0 ) != 0 )\n\t\t{\n\t\t\t// Bit 0 was set before xEventGroupClearBits() was called.  It will\n\t\t\t// now be clear.\n\t\t}\n\t\telse if( ( uxBits & BIT_4 ) != 0 )\n\t\t{\n\t\t\t// Bit 4 was set before xEventGroupClearBits() was called.  It will\n\t\t\t// now be clear.\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Neither bit 0 nor bit 4 were set in the first place.\n\t\t}\n   }\n   </pre>\n * \\defgroup xEventGroupClearBits xEventGroupClearBits\n * \\ingroup EventGroup\n */\nEventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;\n\n/**\n * event_groups.h\n *<pre>\n\tBaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );\n </pre>\n *\n * A version of xEventGroupClearBits() that can be called from an interrupt.\n *\n * Setting bits in an event group is not a deterministic operation because there\n * are an unknown number of tasks that may be waiting for the bit or bits being\n * set.  FreeRTOS does not allow nondeterministic operations to be performed\n * while interrupts are disabled, so protects event groups that are accessed\n * from tasks by suspending the scheduler rather than disabling interrupts.  As\n * a result event groups cannot be accessed directly from an interrupt service\n * routine.  Therefore xEventGroupClearBitsFromISR() sends a message to the\n * timer task to have the clear operation performed in the context of the timer\n * task.\n *\n * @param xEventGroup The event group in which the bits are to be cleared.\n *\n * @param uxBitsToClear A bitwise value that indicates the bit or bits to clear.\n * For example, to clear bit 3 only, set uxBitsToClear to 0x08.  To clear bit 3\n * and bit 0 set uxBitsToClear to 0x09.\n *\n * @return If the request to execute the function was posted successfully then\n * pdPASS is returned, otherwise pdFALSE is returned.  pdFALSE will be returned\n * if the timer service queue was full.\n *\n * Example usage:\n   <pre>\n   #define BIT_0\t( 1 << 0 )\n   #define BIT_4\t( 1 << 4 )\n\n   // An event group which it is assumed has already been created by a call to\n   // xEventGroupCreate().\n   EventGroupHandle_t xEventGroup;\n\n   void anInterruptHandler( void )\n   {\n\t\t// Clear bit 0 and bit 4 in xEventGroup.\n\t\txResult = xEventGroupClearBitsFromISR(\n\t\t\t\t\t\t\txEventGroup,\t // The event group being updated.\n\t\t\t\t\t\t\tBIT_0 | BIT_4 ); // The bits being set.\n\n\t\tif( xResult == pdPASS )\n\t\t{\n\t\t\t// The message was posted successfully.\n\t\t}\n  }\n   </pre>\n * \\defgroup xEventGroupClearBitsFromISR xEventGroupClearBitsFromISR\n * \\ingroup EventGroup\n */\n#if( configUSE_TRACE_FACILITY == 1 )\n\tBaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;\n#else\n\t#define xEventGroupClearBitsFromISR( xEventGroup, uxBitsToClear ) xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToClear, NULL )\n#endif\n\n/**\n * event_groups.h\n *<pre>\n\tEventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );\n </pre>\n *\n * Set bits within an event group.\n * This function cannot be called from an interrupt.  xEventGroupSetBitsFromISR()\n * is a version that can be called from an interrupt.\n *\n * Setting bits in an event group will automatically unblock tasks that are\n * blocked waiting for the bits.\n *\n * @param xEventGroup The event group in which the bits are to be set.\n *\n * @param uxBitsToSet A bitwise value that indicates the bit or bits to set.\n * For example, to set bit 3 only, set uxBitsToSet to 0x08.  To set bit 3\n * and bit 0 set uxBitsToSet to 0x09.\n *\n * @return The value of the event group at the time the call to\n * xEventGroupSetBits() returns.  There are two reasons why the returned value\n * might have the bits specified by the uxBitsToSet parameter cleared.  First,\n * if setting a bit results in a task that was waiting for the bit leaving the\n * blocked state then it is possible the bit will be cleared automatically\n * (see the xClearBitOnExit parameter of xEventGroupWaitBits()).  Second, any\n * unblocked (or otherwise Ready state) task that has a priority above that of\n * the task that called xEventGroupSetBits() will execute and may change the\n * event group value before the call to xEventGroupSetBits() returns.\n *\n * Example usage:\n   <pre>\n   #define BIT_0\t( 1 << 0 )\n   #define BIT_4\t( 1 << 4 )\n\n   void aFunction( EventGroupHandle_t xEventGroup )\n   {\n   EventBits_t uxBits;\n\n\t\t// Set bit 0 and bit 4 in xEventGroup.\n\t\tuxBits = xEventGroupSetBits(\n\t\t\t\t\t\t\txEventGroup,\t// The event group being updated.\n\t\t\t\t\t\t\tBIT_0 | BIT_4 );// The bits being set.\n\n\t\tif( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )\n\t\t{\n\t\t\t// Both bit 0 and bit 4 remained set when the function returned.\n\t\t}\n\t\telse if( ( uxBits & BIT_0 ) != 0 )\n\t\t{\n\t\t\t// Bit 0 remained set when the function returned, but bit 4 was\n\t\t\t// cleared.  It might be that bit 4 was cleared automatically as a\n\t\t\t// task that was waiting for bit 4 was removed from the Blocked\n\t\t\t// state.\n\t\t}\n\t\telse if( ( uxBits & BIT_4 ) != 0 )\n\t\t{\n\t\t\t// Bit 4 remained set when the function returned, but bit 0 was\n\t\t\t// cleared.  It might be that bit 0 was cleared automatically as a\n\t\t\t// task that was waiting for bit 0 was removed from the Blocked\n\t\t\t// state.\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Neither bit 0 nor bit 4 remained set.  It might be that a task\n\t\t\t// was waiting for both of the bits to be set, and the bits were\n\t\t\t// cleared as the task left the Blocked state.\n\t\t}\n   }\n   </pre>\n * \\defgroup xEventGroupSetBits xEventGroupSetBits\n * \\ingroup EventGroup\n */\nEventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) PRIVILEGED_FUNCTION;\n\n/**\n * event_groups.h\n *<pre>\n\tBaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken );\n </pre>\n *\n * A version of xEventGroupSetBits() that can be called from an interrupt.\n *\n * Setting bits in an event group is not a deterministic operation because there\n * are an unknown number of tasks that may be waiting for the bit or bits being\n * set.  FreeRTOS does not allow nondeterministic operations to be performed in\n * interrupts or from critical sections.  Therefore xEventGroupSetBitsFromISR()\n * sends a message to the timer task to have the set operation performed in the\n * context of the timer task - where a scheduler lock is used in place of a\n * critical section.\n *\n * @param xEventGroup The event group in which the bits are to be set.\n *\n * @param uxBitsToSet A bitwise value that indicates the bit or bits to set.\n * For example, to set bit 3 only, set uxBitsToSet to 0x08.  To set bit 3\n * and bit 0 set uxBitsToSet to 0x09.\n *\n * @param pxHigherPriorityTaskWoken As mentioned above, calling this function\n * will result in a message being sent to the timer daemon task.  If the\n * priority of the timer daemon task is higher than the priority of the\n * currently running task (the task the interrupt interrupted) then\n * *pxHigherPriorityTaskWoken will be set to pdTRUE by\n * xEventGroupSetBitsFromISR(), indicating that a context switch should be\n * requested before the interrupt exits.  For that reason\n * *pxHigherPriorityTaskWoken must be initialised to pdFALSE.  See the\n * example code below.\n *\n * @return If the request to execute the function was posted successfully then\n * pdPASS is returned, otherwise pdFALSE is returned.  pdFALSE will be returned\n * if the timer service queue was full.\n *\n * Example usage:\n   <pre>\n   #define BIT_0\t( 1 << 0 )\n   #define BIT_4\t( 1 << 4 )\n\n   // An event group which it is assumed has already been created by a call to\n   // xEventGroupCreate().\n   EventGroupHandle_t xEventGroup;\n\n   void anInterruptHandler( void )\n   {\n   BaseType_t xHigherPriorityTaskWoken, xResult;\n\n\t\t// xHigherPriorityTaskWoken must be initialised to pdFALSE.\n\t\txHigherPriorityTaskWoken = pdFALSE;\n\n\t\t// Set bit 0 and bit 4 in xEventGroup.\n\t\txResult = xEventGroupSetBitsFromISR(\n\t\t\t\t\t\t\txEventGroup,\t// The event group being updated.\n\t\t\t\t\t\t\tBIT_0 | BIT_4   // The bits being set.\n\t\t\t\t\t\t\t&xHigherPriorityTaskWoken );\n\n\t\t// Was the message posted successfully?\n\t\tif( xResult == pdPASS )\n\t\t{\n\t\t\t// If xHigherPriorityTaskWoken is now set to pdTRUE then a context\n\t\t\t// switch should be requested.  The macro used is port specific and\n\t\t\t// will be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() -\n\t\t\t// refer to the documentation page for the port being used.\n\t\t\tportYIELD_FROM_ISR( xHigherPriorityTaskWoken );\n\t\t}\n  }\n   </pre>\n * \\defgroup xEventGroupSetBitsFromISR xEventGroupSetBitsFromISR\n * \\ingroup EventGroup\n */\n#if( configUSE_TRACE_FACILITY == 1 )\n\tBaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n#else\n\t#define xEventGroupSetBitsFromISR( xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken ) xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken )\n#endif\n\n/**\n * event_groups.h\n *<pre>\n\tEventBits_t xEventGroupSync(\tEventGroupHandle_t xEventGroup,\n\t\t\t\t\t\t\t\t\tconst EventBits_t uxBitsToSet,\n\t\t\t\t\t\t\t\t\tconst EventBits_t uxBitsToWaitFor,\n\t\t\t\t\t\t\t\t\tTickType_t xTicksToWait );\n </pre>\n *\n * Atomically set bits within an event group, then wait for a combination of\n * bits to be set within the same event group.  This functionality is typically\n * used to synchronise multiple tasks, where each task has to wait for the other\n * tasks to reach a synchronisation point before proceeding.\n *\n * This function cannot be used from an interrupt.\n *\n * The function will return before its block time expires if the bits specified\n * by the uxBitsToWait parameter are set, or become set within that time.  In\n * this case all the bits specified by uxBitsToWait will be automatically\n * cleared before the function returns.\n *\n * @param xEventGroup The event group in which the bits are being tested.  The\n * event group must have previously been created using a call to\n * xEventGroupCreate().\n *\n * @param uxBitsToSet The bits to set in the event group before determining\n * if, and possibly waiting for, all the bits specified by the uxBitsToWait\n * parameter are set.\n *\n * @param uxBitsToWaitFor A bitwise value that indicates the bit or bits to test\n * inside the event group.  For example, to wait for bit 0 and bit 2 set\n * uxBitsToWaitFor to 0x05.  To wait for bits 0 and bit 1 and bit 2 set\n * uxBitsToWaitFor to 0x07.  Etc.\n *\n * @param xTicksToWait The maximum amount of time (specified in 'ticks') to wait\n * for all of the bits specified by uxBitsToWaitFor to become set.\n *\n * @return The value of the event group at the time either the bits being waited\n * for became set, or the block time expired.  Test the return value to know\n * which bits were set.  If xEventGroupSync() returned because its timeout\n * expired then not all the bits being waited for will be set.  If\n * xEventGroupSync() returned because all the bits it was waiting for were\n * set then the returned value is the event group value before any bits were\n * automatically cleared.\n *\n * Example usage:\n <pre>\n // Bits used by the three tasks.\n #define TASK_0_BIT\t\t( 1 << 0 )\n #define TASK_1_BIT\t\t( 1 << 1 )\n #define TASK_2_BIT\t\t( 1 << 2 )\n\n #define ALL_SYNC_BITS ( TASK_0_BIT | TASK_1_BIT | TASK_2_BIT )\n\n // Use an event group to synchronise three tasks.  It is assumed this event\n // group has already been created elsewhere.\n EventGroupHandle_t xEventBits;\n\n void vTask0( void *pvParameters )\n {\n EventBits_t uxReturn;\n TickType_t xTicksToWait = 100 / portTICK_PERIOD_MS;\n\n\t for( ;; )\n\t {\n\t\t// Perform task functionality here.\n\n\t\t// Set bit 0 in the event flag to note this task has reached the\n\t\t// sync point.  The other two tasks will set the other two bits defined\n\t\t// by ALL_SYNC_BITS.  All three tasks have reached the synchronisation\n\t\t// point when all the ALL_SYNC_BITS are set.  Wait a maximum of 100ms\n\t\t// for this to happen.\n\t\tuxReturn = xEventGroupSync( xEventBits, TASK_0_BIT, ALL_SYNC_BITS, xTicksToWait );\n\n\t\tif( ( uxReturn & ALL_SYNC_BITS ) == ALL_SYNC_BITS )\n\t\t{\n\t\t\t// All three tasks reached the synchronisation point before the call\n\t\t\t// to xEventGroupSync() timed out.\n\t\t}\n\t}\n }\n\n void vTask1( void *pvParameters )\n {\n\t for( ;; )\n\t {\n\t\t// Perform task functionality here.\n\n\t\t// Set bit 1 in the event flag to note this task has reached the\n\t\t// synchronisation point.  The other two tasks will set the other two\n\t\t// bits defined by ALL_SYNC_BITS.  All three tasks have reached the\n\t\t// synchronisation point when all the ALL_SYNC_BITS are set.  Wait\n\t\t// indefinitely for this to happen.\n\t\txEventGroupSync( xEventBits, TASK_1_BIT, ALL_SYNC_BITS, portMAX_DELAY );\n\n\t\t// xEventGroupSync() was called with an indefinite block time, so\n\t\t// this task will only reach here if the syncrhonisation was made by all\n\t\t// three tasks, so there is no need to test the return value.\n\t }\n }\n\n void vTask2( void *pvParameters )\n {\n\t for( ;; )\n\t {\n\t\t// Perform task functionality here.\n\n\t\t// Set bit 2 in the event flag to note this task has reached the\n\t\t// synchronisation point.  The other two tasks will set the other two\n\t\t// bits defined by ALL_SYNC_BITS.  All three tasks have reached the\n\t\t// synchronisation point when all the ALL_SYNC_BITS are set.  Wait\n\t\t// indefinitely for this to happen.\n\t\txEventGroupSync( xEventBits, TASK_2_BIT, ALL_SYNC_BITS, portMAX_DELAY );\n\n\t\t// xEventGroupSync() was called with an indefinite block time, so\n\t\t// this task will only reach here if the syncrhonisation was made by all\n\t\t// three tasks, so there is no need to test the return value.\n\t}\n }\n\n </pre>\n * \\defgroup xEventGroupSync xEventGroupSync\n * \\ingroup EventGroup\n */\nEventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n\n/**\n * event_groups.h\n *<pre>\n\tEventBits_t xEventGroupGetBits( EventGroupHandle_t xEventGroup );\n </pre>\n *\n * Returns the current value of the bits in an event group.  This function\n * cannot be used from an interrupt.\n *\n * @param xEventGroup The event group being queried.\n *\n * @return The event group bits at the time xEventGroupGetBits() was called.\n *\n * \\defgroup xEventGroupGetBits xEventGroupGetBits\n * \\ingroup EventGroup\n */\n#define xEventGroupGetBits( xEventGroup ) xEventGroupClearBits( xEventGroup, 0 )\n\n/**\n * event_groups.h\n *<pre>\n\tEventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup );\n </pre>\n *\n * A version of xEventGroupGetBits() that can be called from an ISR.\n *\n * @param xEventGroup The event group being queried.\n *\n * @return The event group bits at the time xEventGroupGetBitsFromISR() was called.\n *\n * \\defgroup xEventGroupGetBitsFromISR xEventGroupGetBitsFromISR\n * \\ingroup EventGroup\n */\nEventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;\n\n/**\n * event_groups.h\n *<pre>\n\tvoid xEventGroupDelete( EventGroupHandle_t xEventGroup );\n </pre>\n *\n * Delete an event group that was previously created by a call to\n * xEventGroupCreate().  Tasks that are blocked on the event group will be\n * unblocked and obtain 0 as the event group's value.\n *\n * @param xEventGroup The event group being deleted.\n */\nvoid vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;\n\n/* For internal use only. */\nvoid vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION;\nvoid vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION;\n\n\n#if (configUSE_TRACE_FACILITY == 1)\n\tUBaseType_t uxEventGroupGetNumber( void* xEventGroup ) PRIVILEGED_FUNCTION;\n\tvoid vEventGroupSetNumber( void* xEventGroup, UBaseType_t uxEventGroupNumber ) PRIVILEGED_FUNCTION;\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* EVENT_GROUPS_H */\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/list.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/*\n * This is the list implementation used by the scheduler.  While it is tailored\n * heavily for the schedulers needs, it is also available for use by\n * application code.\n *\n * list_ts can only store pointers to list_item_ts.  Each ListItem_t contains a\n * numeric value (xItemValue).  Most of the time the lists are sorted in\n * descending item value order.\n *\n * Lists are created already containing one list item.  The value of this\n * item is the maximum possible that can be stored, it is therefore always at\n * the end of the list and acts as a marker.  The list member pxHead always\n * points to this marker - even though it is at the tail of the list.  This\n * is because the tail contains a wrap back pointer to the true head of\n * the list.\n *\n * In addition to it's value, each list item contains a pointer to the next\n * item in the list (pxNext), a pointer to the list it is in (pxContainer)\n * and a pointer to back to the object that contains it.  These later two\n * pointers are included for efficiency of list manipulation.  There is\n * effectively a two way link between the object containing the list item and\n * the list item itself.\n *\n *\n * \\page ListIntroduction List Implementation\n * \\ingroup FreeRTOSIntro\n */\n\n#ifndef INC_FREERTOS_H\n\t#error FreeRTOS.h must be included before list.h\n#endif\n\n#ifndef LIST_H\n#define LIST_H\n\n/*\n * The list structure members are modified from within interrupts, and therefore\n * by rights should be declared volatile.  However, they are only modified in a\n * functionally atomic way (within critical sections of with the scheduler\n * suspended) and are either passed by reference into a function or indexed via\n * a volatile variable.  Therefore, in all use cases tested so far, the volatile\n * qualifier can be omitted in order to provide a moderate performance\n * improvement without adversely affecting functional behaviour.  The assembly\n * instructions generated by the IAR, ARM and GCC compilers when the respective\n * compiler's options were set for maximum optimisation has been inspected and\n * deemed to be as intended.  That said, as compiler technology advances, and\n * especially if aggressive cross module optimisation is used (a use case that\n * has not been exercised to any great extend) then it is feasible that the\n * volatile qualifier will be needed for correct optimisation.  It is expected\n * that a compiler removing essential code because, without the volatile\n * qualifier on the list structure members and with aggressive cross module\n * optimisation, the compiler deemed the code unnecessary will result in\n * complete and obvious failure of the scheduler.  If this is ever experienced\n * then the volatile qualifier can be inserted in the relevant places within the\n * list structures by simply defining configLIST_VOLATILE to volatile in\n * FreeRTOSConfig.h (as per the example at the bottom of this comment block).\n * If configLIST_VOLATILE is not defined then the preprocessor directives below\n * will simply #define configLIST_VOLATILE away completely.\n *\n * To use volatile list structure members then add the following line to\n * FreeRTOSConfig.h (without the quotes):\n * \"#define configLIST_VOLATILE volatile\"\n */\n#ifndef configLIST_VOLATILE\n\t#define configLIST_VOLATILE\n#endif /* configSUPPORT_CROSS_MODULE_OPTIMISATION */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Macros that can be used to place known values within the list structures,\nthen check that the known values do not get corrupted during the execution of\nthe application.   These may catch the list data structures being overwritten in\nmemory.  They will not catch data errors caused by incorrect configuration or\nuse of FreeRTOS.*/\n#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 0 )\n\t/* Define the macros to do nothing. */\n\t#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE\n\t#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE\n\t#define listFIRST_LIST_INTEGRITY_CHECK_VALUE\n\t#define listSECOND_LIST_INTEGRITY_CHECK_VALUE\n\t#define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )\n\t#define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )\n\t#define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList )\n\t#define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList )\n\t#define listTEST_LIST_ITEM_INTEGRITY( pxItem )\n\t#define listTEST_LIST_INTEGRITY( pxList )\n#else\n\t/* Define macros that add new members into the list structures. */\n\t#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE\t\t\t\tTickType_t xListItemIntegrityValue1;\n\t#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE\t\t\t\tTickType_t xListItemIntegrityValue2;\n\t#define listFIRST_LIST_INTEGRITY_CHECK_VALUE\t\t\t\t\tTickType_t xListIntegrityValue1;\n\t#define listSECOND_LIST_INTEGRITY_CHECK_VALUE\t\t\t\t\tTickType_t xListIntegrityValue2;\n\n\t/* Define macros that set the new structure members to known values. */\n\t#define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )\t\t( pxItem )->xListItemIntegrityValue1 = pdINTEGRITY_CHECK_VALUE\n\t#define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )\t( pxItem )->xListItemIntegrityValue2 = pdINTEGRITY_CHECK_VALUE\n\t#define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList )\t\t( pxList )->xListIntegrityValue1 = pdINTEGRITY_CHECK_VALUE\n\t#define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList )\t\t( pxList )->xListIntegrityValue2 = pdINTEGRITY_CHECK_VALUE\n\n\t/* Define macros that will assert if one of the structure members does not\n\tcontain its expected value. */\n\t#define listTEST_LIST_ITEM_INTEGRITY( pxItem )\t\tconfigASSERT( ( ( pxItem )->xListItemIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxItem )->xListItemIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) )\n\t#define listTEST_LIST_INTEGRITY( pxList )\t\t\tconfigASSERT( ( ( pxList )->xListIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxList )->xListIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) )\n#endif /* configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES */\n\n\n/*\n * Definition of the only type of object that a list can contain.\n */\nstruct xLIST;\nstruct xLIST_ITEM\n{\n\tlistFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE\t\t\t/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */\n\tconfigLIST_VOLATILE TickType_t xItemValue;\t\t\t/*< The value being listed.  In most cases this is used to sort the list in descending order. */\n\tstruct xLIST_ITEM * configLIST_VOLATILE pxNext;\t\t/*< Pointer to the next ListItem_t in the list. */\n\tstruct xLIST_ITEM * configLIST_VOLATILE pxPrevious;\t/*< Pointer to the previous ListItem_t in the list. */\n\tvoid * pvOwner;\t\t\t\t\t\t\t\t\t\t/*< Pointer to the object (normally a TCB) that contains the list item.  There is therefore a two way link between the object containing the list item and the list item itself. */\n\tstruct xLIST * configLIST_VOLATILE pxContainer;\t\t/*< Pointer to the list in which this list item is placed (if any). */\n\tlistSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE\t\t\t/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */\n};\ntypedef struct xLIST_ITEM ListItem_t;\t\t\t\t\t/* For some reason lint wants this as two separate definitions. */\n\nstruct xMINI_LIST_ITEM\n{\n\tlistFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE\t\t\t/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */\n\tconfigLIST_VOLATILE TickType_t xItemValue;\n\tstruct xLIST_ITEM * configLIST_VOLATILE pxNext;\n\tstruct xLIST_ITEM * configLIST_VOLATILE pxPrevious;\n};\ntypedef struct xMINI_LIST_ITEM MiniListItem_t;\n\n/*\n * Definition of the type of queue used by the scheduler.\n */\ntypedef struct xLIST\n{\n\tlistFIRST_LIST_INTEGRITY_CHECK_VALUE\t\t\t\t/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */\n\tvolatile UBaseType_t uxNumberOfItems;\n\tListItem_t * configLIST_VOLATILE pxIndex;\t\t\t/*< Used to walk through the list.  Points to the last item returned by a call to listGET_OWNER_OF_NEXT_ENTRY (). */\n\tMiniListItem_t xListEnd;\t\t\t\t\t\t\t/*< List item that contains the maximum possible item value meaning it is always at the end of the list and is therefore used as a marker. */\n\tlistSECOND_LIST_INTEGRITY_CHECK_VALUE\t\t\t\t/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */\n} List_t;\n\n/*\n * Access macro to set the owner of a list item.  The owner of a list item\n * is the object (usually a TCB) that contains the list item.\n *\n * \\page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER\n * \\ingroup LinkedList\n */\n#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner )\t\t( ( pxListItem )->pvOwner = ( void * ) ( pxOwner ) )\n\n/*\n * Access macro to get the owner of a list item.  The owner of a list item\n * is the object (usually a TCB) that contains the list item.\n *\n * \\page listGET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER\n * \\ingroup LinkedList\n */\n#define listGET_LIST_ITEM_OWNER( pxListItem )\t( ( pxListItem )->pvOwner )\n\n/*\n * Access macro to set the value of the list item.  In most cases the value is\n * used to sort the list in descending order.\n *\n * \\page listSET_LIST_ITEM_VALUE listSET_LIST_ITEM_VALUE\n * \\ingroup LinkedList\n */\n#define listSET_LIST_ITEM_VALUE( pxListItem, xValue )\t( ( pxListItem )->xItemValue = ( xValue ) )\n\n/*\n * Access macro to retrieve the value of the list item.  The value can\n * represent anything - for example the priority of a task, or the time at\n * which a task should be unblocked.\n *\n * \\page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE\n * \\ingroup LinkedList\n */\n#define listGET_LIST_ITEM_VALUE( pxListItem )\t( ( pxListItem )->xItemValue )\n\n/*\n * Access macro to retrieve the value of the list item at the head of a given\n * list.\n *\n * \\page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE\n * \\ingroup LinkedList\n */\n#define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList )\t( ( ( pxList )->xListEnd ).pxNext->xItemValue )\n\n/*\n * Return the list item at the head of the list.\n *\n * \\page listGET_HEAD_ENTRY listGET_HEAD_ENTRY\n * \\ingroup LinkedList\n */\n#define listGET_HEAD_ENTRY( pxList )\t( ( ( pxList )->xListEnd ).pxNext )\n\n/*\n * Return the next list item.\n *\n * \\page listGET_NEXT listGET_NEXT\n * \\ingroup LinkedList\n */\n#define listGET_NEXT( pxListItem )\t( ( pxListItem )->pxNext )\n\n/*\n * Return the list item that marks the end of the list\n *\n * \\page listGET_END_MARKER listGET_END_MARKER\n * \\ingroup LinkedList\n */\n#define listGET_END_MARKER( pxList )\t( ( ListItem_t const * ) ( &( ( pxList )->xListEnd ) ) )\n\n/*\n * Access macro to determine if a list contains any items.  The macro will\n * only have the value true if the list is empty.\n *\n * \\page listLIST_IS_EMPTY listLIST_IS_EMPTY\n * \\ingroup LinkedList\n */\n#define listLIST_IS_EMPTY( pxList )\t( ( ( pxList )->uxNumberOfItems == ( UBaseType_t ) 0 ) ? pdTRUE : pdFALSE )\n\n/*\n * Access macro to return the number of items in the list.\n */\n#define listCURRENT_LIST_LENGTH( pxList )\t( ( pxList )->uxNumberOfItems )\n\n/*\n * Access function to obtain the owner of the next entry in a list.\n *\n * The list member pxIndex is used to walk through a list.  Calling\n * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list\n * and returns that entry's pxOwner parameter.  Using multiple calls to this\n * function it is therefore possible to move through every item contained in\n * a list.\n *\n * The pxOwner parameter of a list item is a pointer to the object that owns\n * the list item.  In the scheduler this is normally a task control block.\n * The pxOwner parameter effectively creates a two way link between the list\n * item and its owner.\n *\n * @param pxTCB pxTCB is set to the address of the owner of the next list item.\n * @param pxList The list from which the next item owner is to be returned.\n *\n * \\page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY\n * \\ingroup LinkedList\n */\n#define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList )\t\t\t\t\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\nList_t * const pxConstList = ( pxList );\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t/* Increment the index to the next item and return the item, ensuring */\t\t\t\t\\\n\t/* we don't return the marker used at the end of the list.  */\t\t\t\t\t\t\t\\\n\t( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext;\t\t\t\t\t\t\t\\\n\tif( ( void * ) ( pxConstList )->pxIndex == ( void * ) &( ( pxConstList )->xListEnd ) )\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext;\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t( pxTCB ) = ( pxConstList )->pxIndex->pvOwner;\t\t\t\t\t\t\t\t\t\t\t\\\n}\n\n\n/*\n * Access function to obtain the owner of the first entry in a list.  Lists\n * are normally sorted in ascending item value order.\n *\n * This function returns the pxOwner member of the first item in the list.\n * The pxOwner parameter of a list item is a pointer to the object that owns\n * the list item.  In the scheduler this is normally a task control block.\n * The pxOwner parameter effectively creates a two way link between the list\n * item and its owner.\n *\n * @param pxList The list from which the owner of the head item is to be\n * returned.\n *\n * \\page listGET_OWNER_OF_HEAD_ENTRY listGET_OWNER_OF_HEAD_ENTRY\n * \\ingroup LinkedList\n */\n#define listGET_OWNER_OF_HEAD_ENTRY( pxList )  ( (&( ( pxList )->xListEnd ))->pxNext->pvOwner )\n\n/*\n * Check to see if a list item is within a list.  The list item maintains a\n * \"container\" pointer that points to the list it is in.  All this macro does\n * is check to see if the container and the list match.\n *\n * @param pxList The list we want to know if the list item is within.\n * @param pxListItem The list item we want to know if is in the list.\n * @return pdTRUE if the list item is in the list, otherwise pdFALSE.\n */\n#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( ( pxListItem )->pxContainer == ( pxList ) ) ? ( pdTRUE ) : ( pdFALSE ) )\n\n/*\n * Return the list a list item is contained within (referenced from).\n *\n * @param pxListItem The list item being queried.\n * @return A pointer to the List_t object that references the pxListItem\n */\n#define listLIST_ITEM_CONTAINER( pxListItem ) ( ( pxListItem )->pxContainer )\n\n/*\n * This provides a crude means of knowing if a list has been initialised, as\n * pxList->xListEnd.xItemValue is set to portMAX_DELAY by the vListInitialise()\n * function.\n */\n#define listLIST_IS_INITIALISED( pxList ) ( ( pxList )->xListEnd.xItemValue == portMAX_DELAY )\n\n/*\n * Must be called before a list is used!  This initialises all the members\n * of the list structure and inserts the xListEnd item into the list as a\n * marker to the back of the list.\n *\n * @param pxList Pointer to the list being initialised.\n *\n * \\page vListInitialise vListInitialise\n * \\ingroup LinkedList\n */\nvoid vListInitialise( List_t * const pxList ) PRIVILEGED_FUNCTION;\n\n/*\n * Must be called before a list item is used.  This sets the list container to\n * null so the item does not think that it is already contained in a list.\n *\n * @param pxItem Pointer to the list item being initialised.\n *\n * \\page vListInitialiseItem vListInitialiseItem\n * \\ingroup LinkedList\n */\nvoid vListInitialiseItem( ListItem_t * const pxItem ) PRIVILEGED_FUNCTION;\n\n/*\n * Insert a list item into a list.  The item will be inserted into the list in\n * a position determined by its item value (descending item value order).\n *\n * @param pxList The list into which the item is to be inserted.\n *\n * @param pxNewListItem The item that is to be placed in the list.\n *\n * \\page vListInsert vListInsert\n * \\ingroup LinkedList\n */\nvoid vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) PRIVILEGED_FUNCTION;\n\n/*\n * Insert a list item into a list.  The item will be inserted in a position\n * such that it will be the last item within the list returned by multiple\n * calls to listGET_OWNER_OF_NEXT_ENTRY.\n *\n * The list member pxIndex is used to walk through a list.  Calling\n * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list.\n * Placing an item in a list using vListInsertEnd effectively places the item\n * in the list position pointed to by pxIndex.  This means that every other\n * item within the list will be returned by listGET_OWNER_OF_NEXT_ENTRY before\n * the pxIndex parameter again points to the item being inserted.\n *\n * @param pxList The list into which the item is to be inserted.\n *\n * @param pxNewListItem The list item to be inserted into the list.\n *\n * \\page vListInsertEnd vListInsertEnd\n * \\ingroup LinkedList\n */\nvoid vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) PRIVILEGED_FUNCTION;\n\n/*\n * Remove an item from a list.  The list item has a pointer to the list that\n * it is in, so only the list item need be passed into the function.\n *\n * @param uxListRemove The item to be removed.  The item will remove itself from\n * the list pointed to by it's pxContainer parameter.\n *\n * @return The number of items that remain in the list after the list item has\n * been removed.\n *\n * \\page uxListRemove uxListRemove\n * \\ingroup LinkedList\n */\nUBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) PRIVILEGED_FUNCTION;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n\n/*\n * Message buffers build functionality on top of FreeRTOS stream buffers.\n * Whereas stream buffers are used to send a continuous stream of data from one\n * task or interrupt to another, message buffers are used to send variable\n * length discrete messages from one task or interrupt to another.  Their\n * implementation is light weight, making them particularly suited for interrupt\n * to task and core to core communication scenarios.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xMessageBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xMessageBufferRead()) inside a critical section and set the receive\n * timeout to 0.\n *\n * Message buffers hold variable length messages.  To enable that, when a\n * message is written to the message buffer an additional sizeof( size_t ) bytes\n * are also written to store the message's length (that happens internally, with\n * the API function).  sizeof( size_t ) is typically 4 bytes on a 32-bit\n * architecture, so writing a 10 byte message to a message buffer on a 32-bit\n * architecture will actually reduce the available space in the message buffer\n * by 14 bytes (10 byte are used by the message, and 4 bytes to hold the length\n * of the message).\n */\n\n#ifndef FREERTOS_MESSAGE_BUFFER_H\n#define FREERTOS_MESSAGE_BUFFER_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h must appear in source files before include message_buffer.h\"\n#endif\n\n/* Message buffers are built onto of stream buffers. */\n#include \"stream_buffer.h\"\n\n#if defined( __cplusplus )\nextern \"C\" {\n#endif\n\n/**\n * Type by which message buffers are referenced.  For example, a call to\n * xMessageBufferCreate() returns an MessageBufferHandle_t variable that can\n * then be used as a parameter to xMessageBufferSend(), xMessageBufferReceive(),\n * etc.\n */\ntypedef void * MessageBufferHandle_t;\n\n/*-----------------------------------------------------------*/\n\n/**\n * message_buffer.h\n *\n<pre>\nMessageBufferHandle_t xMessageBufferCreate( size_t xBufferSizeBytes );\n</pre>\n *\n * Creates a new message buffer using dynamically allocated memory.  See\n * xMessageBufferCreateStatic() for a version that uses statically allocated\n * memory (memory that is allocated at compile time).\n *\n * configSUPPORT_DYNAMIC_ALLOCATION must be set to 1 or left undefined in\n * FreeRTOSConfig.h for xMessageBufferCreate() to be available.\n *\n * @param xBufferSizeBytes The total number of bytes (not messages) the message\n * buffer will be able to hold at any one time.  When a message is written to\n * the message buffer an additional sizeof( size_t ) bytes are also written to\n * store the message's length.  sizeof( size_t ) is typically 4 bytes on a\n * 32-bit architecture, so on most 32-bit architectures a 10 byte message will\n * take up 14 bytes of message buffer space.\n *\n * @return If NULL is returned, then the message buffer cannot be created\n * because there is insufficient heap memory available for FreeRTOS to allocate\n * the message buffer data structures and storage area.  A non-NULL value being\n * returned indicates that the message buffer has been created successfully -\n * the returned value should be stored as the handle to the created message\n * buffer.\n *\n * Example use:\n<pre>\n\nvoid vAFunction( void )\n{\nMessageBufferHandle_t xMessageBuffer;\nconst size_t xMessageBufferSizeBytes = 100;\n\n    // Create a message buffer that can hold 100 bytes.  The memory used to hold\n    // both the message buffer structure and the messages themselves is allocated\n    // dynamically.  Each message added to the buffer consumes an additional 4\n    // bytes which are used to hold the lengh of the message.\n    xMessageBuffer = xMessageBufferCreate( xMessageBufferSizeBytes );\n\n    if( xMessageBuffer == NULL )\n    {\n        // There was not enough heap memory space available to create the\n        // message buffer.\n    }\n    else\n    {\n        // The message buffer was created successfully and can now be used.\n    }\n\n</pre>\n * \\defgroup xMessageBufferCreate xMessageBufferCreate\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferCreate( xBufferSizeBytes ) ( MessageBufferHandle_t ) xStreamBufferGenericCreate( xBufferSizeBytes, ( size_t ) 0, pdTRUE )\n\n/**\n * message_buffer.h\n *\n<pre>\nMessageBufferHandle_t xMessageBufferCreateStatic( size_t xBufferSizeBytes,\n                                                  uint8_t *pucMessageBufferStorageArea,\n                                                  StaticMessageBuffer_t *pxStaticMessageBuffer );\n</pre>\n * Creates a new message buffer using statically allocated memory.  See\n * xMessageBufferCreate() for a version that uses dynamically allocated memory.\n *\n * @param xBufferSizeBytes The size, in bytes, of the buffer pointed to by the\n * pucMessageBufferStorageArea parameter.  When a message is written to the\n * message buffer an additional sizeof( size_t ) bytes are also written to store\n * the message's length.  sizeof( size_t ) is typically 4 bytes on a 32-bit\n * architecture, so on most 32-bit architecture a 10 byte message will take up\n * 14 bytes of message buffer space.  The maximum number of bytes that can be\n * stored in the message buffer is actually (xBufferSizeBytes - 1).\n *\n * @param pucMessageBufferStorageArea Must point to a uint8_t array that is at\n * least xBufferSizeBytes + 1 big.  This is the array to which messages are\n * copied when they are written to the message buffer.\n *\n * @param pxStaticMessageBuffer Must point to a variable of type\n * StaticMessageBuffer_t, which will be used to hold the message buffer's data\n * structure.\n *\n * @return If the message buffer is created successfully then a handle to the\n * created message buffer is returned. If either pucMessageBufferStorageArea or\n * pxStaticmessageBuffer are NULL then NULL is returned.\n *\n * Example use:\n<pre>\n\n// Used to dimension the array used to hold the messages.  The available space\n// will actually be one less than this, so 999.\n#define STORAGE_SIZE_BYTES 1000\n\n// Defines the memory that will actually hold the messages within the message\n// buffer.\nstatic uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];\n\n// The variable used to hold the message buffer structure.\nStaticMessageBuffer_t xMessageBufferStruct;\n\nvoid MyFunction( void )\n{\nMessageBufferHandle_t xMessageBuffer;\n\n    xMessageBuffer = xMessageBufferCreateStatic( sizeof( ucBufferStorage ),\n                                                 ucBufferStorage,\n                                                 &xMessageBufferStruct );\n\n    // As neither the pucMessageBufferStorageArea or pxStaticMessageBuffer\n    // parameters were NULL, xMessageBuffer will not be NULL, and can be used to\n    // reference the created message buffer in other message buffer API calls.\n\n    // Other code that uses the message buffer can go here.\n}\n\n</pre>\n * \\defgroup xMessageBufferCreateStatic xMessageBufferCreateStatic\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferCreateStatic( xBufferSizeBytes, pucMessageBufferStorageArea, pxStaticMessageBuffer ) ( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer )\n\n/**\n * message_buffer.h\n *\n<pre>\nsize_t xMessageBufferSend( MessageBufferHandle_t xMessageBuffer,\n                           const void *pvTxData,\n                           size_t xDataLengthBytes,\n                           TickType_t xTicksToWait );\n<pre>\n *\n * Sends a discrete message to the message buffer.  The message can be any\n * length that fits within the buffer's free space, and is copied into the\n * buffer.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xMessageBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xMessageBufferRead()) inside a critical section and set the receive\n * block time to 0.\n *\n * Use xMessageBufferSend() to write to a message buffer from a task.  Use\n * xMessageBufferSendFromISR() to write to a message buffer from an interrupt\n * service routine (ISR).\n *\n * @param xMessageBuffer The handle of the message buffer to which a message is\n * being sent.\n *\n * @param pvTxData A pointer to the message that is to be copied into the\n * message buffer.\n *\n * @param xDataLengthBytes The length of the message.  That is, the number of\n * bytes to copy from pvTxData into the message buffer.  When a message is\n * written to the message buffer an additional sizeof( size_t ) bytes are also\n * written to store the message's length.  sizeof( size_t ) is typically 4 bytes\n * on a 32-bit architecture, so on most 32-bit architecture setting\n * xDataLengthBytes to 20 will reduce the free space in the message buffer by 24\n * bytes (20 bytes of message data and 4 bytes to hold the message length).\n *\n * @param xTicksToWait The maximum amount of time the calling task should remain\n * in the Blocked state to wait for enough space to become available in the\n * message buffer, should the message buffer have insufficient space when\n * xMessageBufferSend() is called.  The calling task will never block if\n * xTicksToWait is zero.  The block time is specified in tick periods, so the\n * absolute time it represents is dependent on the tick frequency.  The macro\n * pdMS_TO_TICKS() can be used to convert a time specified in milliseconds into\n * a time specified in ticks.  Setting xTicksToWait to portMAX_DELAY will cause\n * the task to wait indefinitely (without timing out), provided\n * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h.  Tasks do not use any\n * CPU time when they are in the Blocked state.\n *\n * @return The number of bytes written to the message buffer.  If the call to\n * xMessageBufferSend() times out before there was enough space to write the\n * message into the message buffer then zero is returned.  If the call did not\n * time out then xDataLengthBytes is returned.\n *\n * Example use:\n<pre>\nvoid vAFunction( MessageBufferHandle_t xMessageBuffer )\n{\nsize_t xBytesSent;\nuint8_t ucArrayToSend[] = { 0, 1, 2, 3 };\nchar *pcStringToSend = \"String to send\";\nconst TickType_t x100ms = pdMS_TO_TICKS( 100 );\n\n    // Send an array to the message buffer, blocking for a maximum of 100ms to\n    // wait for enough space to be available in the message buffer.\n    xBytesSent = xMessageBufferSend( xMessageBuffer, ( void * ) ucArrayToSend, sizeof( ucArrayToSend ), x100ms );\n\n    if( xBytesSent != sizeof( ucArrayToSend ) )\n    {\n        // The call to xMessageBufferSend() times out before there was enough\n        // space in the buffer for the data to be written.\n    }\n\n    // Send the string to the message buffer.  Return immediately if there is\n    // not enough space in the buffer.\n    xBytesSent = xMessageBufferSend( xMessageBuffer, ( void * ) pcStringToSend, strlen( pcStringToSend ), 0 );\n\n    if( xBytesSent != strlen( pcStringToSend ) )\n    {\n        // The string could not be added to the message buffer because there was\n        // not enough free space in the buffer.\n    }\n}\n</pre>\n * \\defgroup xMessageBufferSend xMessageBufferSend\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferSend( xMessageBuffer, pvTxData, xDataLengthBytes, xTicksToWait ) xStreamBufferSend( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, xTicksToWait )\n\n/**\n * message_buffer.h\n *\n<pre>\nsize_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer,\n                                  const void *pvTxData,\n                                  size_t xDataLengthBytes,\n                                  BaseType_t *pxHigherPriorityTaskWoken );\n<pre>\n *\n * Interrupt safe version of the API function that sends a discrete message to\n * the message buffer.  The message can be any length that fits within the\n * buffer's free space, and is copied into the buffer.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xMessageBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xMessageBufferRead()) inside a critical section and set the receive\n * block time to 0.\n *\n * Use xMessageBufferSend() to write to a message buffer from a task.  Use\n * xMessageBufferSendFromISR() to write to a message buffer from an interrupt\n * service routine (ISR).\n *\n * @param xMessageBuffer The handle of the message buffer to which a message is\n * being sent.\n *\n * @param pvTxData A pointer to the message that is to be copied into the\n * message buffer.\n *\n * @param xDataLengthBytes The length of the message.  That is, the number of\n * bytes to copy from pvTxData into the message buffer.  When a message is\n * written to the message buffer an additional sizeof( size_t ) bytes are also\n * written to store the message's length.  sizeof( size_t ) is typically 4 bytes\n * on a 32-bit architecture, so on most 32-bit architecture setting\n * xDataLengthBytes to 20 will reduce the free space in the message buffer by 24\n * bytes (20 bytes of message data and 4 bytes to hold the message length).\n *\n * @param pxHigherPriorityTaskWoken  It is possible that a message buffer will\n * have a task blocked on it waiting for data.  Calling\n * xMessageBufferSendFromISR() can make data available, and so cause a task that\n * was waiting for data to leave the Blocked state.  If calling\n * xMessageBufferSendFromISR() causes a task to leave the Blocked state, and the\n * unblocked task has a priority higher than the currently executing task (the\n * task that was interrupted), then, internally, xMessageBufferSendFromISR()\n * will set *pxHigherPriorityTaskWoken to pdTRUE.  If\n * xMessageBufferSendFromISR() sets this value to pdTRUE, then normally a\n * context switch should be performed before the interrupt is exited.  This will\n * ensure that the interrupt returns directly to the highest priority Ready\n * state task.  *pxHigherPriorityTaskWoken should be set to pdFALSE before it\n * is passed into the function.  See the code example below for an example.\n *\n * @return The number of bytes actually written to the message buffer.  If the\n * message buffer didn't have enough free space for the message to be stored\n * then 0 is returned, otherwise xDataLengthBytes is returned.\n *\n * Example use:\n<pre>\n// A message buffer that has already been created.\nMessageBufferHandle_t xMessageBuffer;\n\nvoid vAnInterruptServiceRoutine( void )\n{\nsize_t xBytesSent;\nchar *pcStringToSend = \"String to send\";\nBaseType_t xHigherPriorityTaskWoken = pdFALSE; // Initialised to pdFALSE.\n\n    // Attempt to send the string to the message buffer.\n    xBytesSent = xMessageBufferSendFromISR( xMessageBuffer,\n                                            ( void * ) pcStringToSend,\n                                            strlen( pcStringToSend ),\n                                            &xHigherPriorityTaskWoken );\n\n    if( xBytesSent != strlen( pcStringToSend ) )\n    {\n        // The string could not be added to the message buffer because there was\n        // not enough free space in the buffer.\n    }\n\n    // If xHigherPriorityTaskWoken was set to pdTRUE inside\n    // xMessageBufferSendFromISR() then a task that has a priority above the\n    // priority of the currently executing task was unblocked and a context\n    // switch should be performed to ensure the ISR returns to the unblocked\n    // task.  In most FreeRTOS ports this is done by simply passing\n    // xHigherPriorityTaskWoken into portYIELD_FROM_ISR(), which will test the\n    // variables value, and perform the context switch if necessary.  Check the\n    // documentation for the port in use for port specific instructions.\n    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\n}\n</pre>\n * \\defgroup xMessageBufferSendFromISR xMessageBufferSendFromISR\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferSendFromISR( xMessageBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken ) xStreamBufferSendFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken )\n\n/**\n * message_buffer.h\n *\n<pre>\nsize_t xMessageBufferReceive( MessageBufferHandle_t xMessageBuffer,\n                              void *pvRxData,\n                              size_t xBufferLengthBytes,\n                              TickType_t xTicksToWait );\n</pre>\n *\n * Receives a discrete message from a message buffer.  Messages can be of\n * variable length and are copied out of the buffer.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xMessageBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xMessageBufferRead()) inside a critical section and set the receive\n * block time to 0.\n *\n * Use xMessageBufferReceive() to read from a message buffer from a task.  Use\n * xMessageBufferReceiveFromISR() to read from a message buffer from an\n * interrupt service routine (ISR).\n *\n * @param xMessageBuffer The handle of the message buffer from which a message\n * is being received.\n *\n * @param pvRxData A pointer to the buffer into which the received message is\n * to be copied.\n *\n * @param xBufferLengthBytes The length of the buffer pointed to by the pvRxData\n * parameter.  This sets the maximum length of the message that can be received.\n * If xBufferLengthBytes is too small to hold the next message then the message\n * will be left in the message buffer and 0 will be returned.\n *\n * @param xTicksToWait The maximum amount of time the task should remain in the\n * Blocked state to wait for a message, should the message buffer be empty.\n * xMessageBufferReceive() will return immediately if xTicksToWait is zero and\n * the message buffer is empty.  The block time is specified in tick periods, so\n * the absolute time it represents is dependent on the tick frequency.  The\n * macro pdMS_TO_TICKS() can be used to convert a time specified in milliseconds\n * into a time specified in ticks.  Setting xTicksToWait to portMAX_DELAY will\n * cause the task to wait indefinitely (without timing out), provided\n * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h.  Tasks do not use any\n * CPU time when they are in the Blocked state.\n *\n * @return The length, in bytes, of the message read from the message buffer, if\n * any.  If xMessageBufferReceive() times out before a message became available\n * then zero is returned.  If the length of the message is greater than\n * xBufferLengthBytes then the message will be left in the message buffer and\n * zero is returned.\n *\n * Example use:\n<pre>\nvoid vAFunction( MessageBuffer_t xMessageBuffer )\n{\nuint8_t ucRxData[ 20 ];\nsize_t xReceivedBytes;\nconst TickType_t xBlockTime = pdMS_TO_TICKS( 20 );\n\n    // Receive the next message from the message buffer.  Wait in the Blocked\n    // state (so not using any CPU processing time) for a maximum of 100ms for\n    // a message to become available.\n    xReceivedBytes = xMessageBufferReceive( xMessageBuffer,\n                                            ( void * ) ucRxData,\n                                            sizeof( ucRxData ),\n                                            xBlockTime );\n\n    if( xReceivedBytes > 0 )\n    {\n        // A ucRxData contains a message that is xReceivedBytes long.  Process\n        // the message here....\n    }\n}\n</pre>\n * \\defgroup xMessageBufferReceive xMessageBufferReceive\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferReceive( xMessageBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ) xStreamBufferReceive( ( StreamBufferHandle_t ) xMessageBuffer, pvRxData, xBufferLengthBytes, xTicksToWait )\n\n\n/**\n * message_buffer.h\n *\n<pre>\nsize_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer,\n                                     void *pvRxData,\n                                     size_t xBufferLengthBytes,\n                                     BaseType_t *pxHigherPriorityTaskWoken );\n</pre>\n *\n * An interrupt safe version of the API function that receives a discrete\n * message from a message buffer.  Messages can be of variable length and are\n * copied out of the buffer.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xMessageBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xMessageBufferRead()) inside a critical section and set the receive\n * block time to 0.\n *\n * Use xMessageBufferReceive() to read from a message buffer from a task.  Use\n * xMessageBufferReceiveFromISR() to read from a message buffer from an\n * interrupt service routine (ISR).\n *\n * @param xMessageBuffer The handle of the message buffer from which a message\n * is being received.\n *\n * @param pvRxData A pointer to the buffer into which the received message is\n * to be copied.\n *\n * @param xBufferLengthBytes The length of the buffer pointed to by the pvRxData\n * parameter.  This sets the maximum length of the message that can be received.\n * If xBufferLengthBytes is too small to hold the next message then the message\n * will be left in the message buffer and 0 will be returned.\n *\n * @param pxHigherPriorityTaskWoken  It is possible that a message buffer will\n * have a task blocked on it waiting for space to become available.  Calling\n * xMessageBufferReceiveFromISR() can make space available, and so cause a task\n * that is waiting for space to leave the Blocked state.  If calling\n * xMessageBufferReceiveFromISR() causes a task to leave the Blocked state, and\n * the unblocked task has a priority higher than the currently executing task\n * (the task that was interrupted), then, internally,\n * xMessageBufferReceiveFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE.\n * If xMessageBufferReceiveFromISR() sets this value to pdTRUE, then normally a\n * context switch should be performed before the interrupt is exited.  That will\n * ensure the interrupt returns directly to the highest priority Ready state\n * task.  *pxHigherPriorityTaskWoken should be set to pdFALSE before it is\n * passed into the function.  See the code example below for an example.\n *\n * @return The length, in bytes, of the message read from the message buffer, if\n * any.\n *\n * Example use:\n<pre>\n// A message buffer that has already been created.\nMessageBuffer_t xMessageBuffer;\n\nvoid vAnInterruptServiceRoutine( void )\n{\nuint8_t ucRxData[ 20 ];\nsize_t xReceivedBytes;\nBaseType_t xHigherPriorityTaskWoken = pdFALSE;  // Initialised to pdFALSE.\n\n    // Receive the next message from the message buffer.\n    xReceivedBytes = xMessageBufferReceiveFromISR( xMessageBuffer,\n                                                  ( void * ) ucRxData,\n                                                  sizeof( ucRxData ),\n                                                  &xHigherPriorityTaskWoken );\n\n    if( xReceivedBytes > 0 )\n    {\n        // A ucRxData contains a message that is xReceivedBytes long.  Process\n        // the message here....\n    }\n\n    // If xHigherPriorityTaskWoken was set to pdTRUE inside\n    // xMessageBufferReceiveFromISR() then a task that has a priority above the\n    // priority of the currently executing task was unblocked and a context\n    // switch should be performed to ensure the ISR returns to the unblocked\n    // task.  In most FreeRTOS ports this is done by simply passing\n    // xHigherPriorityTaskWoken into portYIELD_FROM_ISR(), which will test the\n    // variables value, and perform the context switch if necessary.  Check the\n    // documentation for the port in use for port specific instructions.\n    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\n}\n</pre>\n * \\defgroup xMessageBufferReceiveFromISR xMessageBufferReceiveFromISR\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferReceiveFromISR( xMessageBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken ) xStreamBufferReceiveFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken )\n\n/**\n * message_buffer.h\n *\n<pre>\nvoid vMessageBufferDelete( MessageBufferHandle_t xMessageBuffer );\n</pre>\n *\n * Deletes a message buffer that was previously created using a call to\n * xMessageBufferCreate() or xMessageBufferCreateStatic().  If the message\n * buffer was created using dynamic memory (that is, by xMessageBufferCreate()),\n * then the allocated memory is freed.\n *\n * A message buffer handle must not be used after the message buffer has been\n * deleted.\n *\n * @param xMessageBuffer The handle of the message buffer to be deleted.\n *\n */\n#define vMessageBufferDelete( xMessageBuffer ) vStreamBufferDelete( ( StreamBufferHandle_t ) xMessageBuffer )\n\n/**\n * message_buffer.h\n<pre>\nBaseType_t xMessageBufferIsFull( MessageBufferHandle_t xMessageBuffer ) );\n</pre>\n *\n * Tests to see if a message buffer is full.  A message buffer is full if it\n * cannot accept any more messages, of any size, until space is made available\n * by a message being removed from the message buffer.\n *\n * @param xMessageBuffer The handle of the message buffer being queried.\n *\n * @return If the message buffer referenced by xMessageBuffer is full then\n * pdTRUE is returned.  Otherwise pdFALSE is returned.\n */\n#define xMessageBufferIsFull( xMessageBuffer ) xStreamBufferIsFull( ( StreamBufferHandle_t ) xMessageBuffer )\n\n/**\n * message_buffer.h\n<pre>\nBaseType_t xMessageBufferIsEmpty( MessageBufferHandle_t xMessageBuffer ) );\n</pre>\n *\n * Tests to see if a message buffer is empty (does not contain any messages).\n *\n * @param xMessageBuffer The handle of the message buffer being queried.\n *\n * @return If the message buffer referenced by xMessageBuffer is empty then\n * pdTRUE is returned.  Otherwise pdFALSE is returned.\n *\n */\n#define xMessageBufferIsEmpty( xMessageBuffer ) xStreamBufferIsEmpty( ( StreamBufferHandle_t ) xMessageBuffer )\n\n/**\n * message_buffer.h\n<pre>\nBaseType_t xMessageBufferReset( MessageBufferHandle_t xMessageBuffer );\n</pre>\n *\n * Resets a message buffer to its initial empty state, discarding any message it\n * contained.\n *\n * A message buffer can only be reset if there are no tasks blocked on it.\n *\n * @param xMessageBuffer The handle of the message buffer being reset.\n *\n * @return If the message buffer was reset then pdPASS is returned.  If the\n * message buffer could not be reset because either there was a task blocked on\n * the message queue to wait for space to become available, or to wait for a\n * a message to be available, then pdFAIL is returned.\n *\n * \\defgroup xMessageBufferReset xMessageBufferReset\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferReset( xMessageBuffer ) xStreamBufferReset( ( StreamBufferHandle_t ) xMessageBuffer )\n\n\n/**\n * message_buffer.h\n<pre>\nsize_t xMessageBufferSpaceAvailable( MessageBufferHandle_t xMessageBuffer ) );\n</pre>\n * Returns the number of bytes of free space in the message buffer.\n *\n * @param xMessageBuffer The handle of the message buffer being queried.\n *\n * @return The number of bytes that can be written to the message buffer before\n * the message buffer would be full.  When a message is written to the message\n * buffer an additional sizeof( size_t ) bytes are also written to store the\n * message's length.  sizeof( size_t ) is typically 4 bytes on a 32-bit\n * architecture, so if xMessageBufferSpacesAvailable() returns 10, then the size\n * of the largest message that can be written to the message buffer is 6 bytes.\n *\n * \\defgroup xMessageBufferSpaceAvailable xMessageBufferSpaceAvailable\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferSpaceAvailable( xMessageBuffer ) xStreamBufferSpacesAvailable( ( StreamBufferHandle_t ) xMessageBuffer )\n#define xMessageBufferSpacesAvailable( xMessageBuffer ) xStreamBufferSpacesAvailable( ( StreamBufferHandle_t ) xMessageBuffer ) /* Corrects typo in original macro name. */\n\n/**\n * message_buffer.h\n <pre>\n size_t xMessageBufferNextLengthBytes( MessageBufferHandle_t xMessageBuffer ) );\n </pre>\n * Returns the length (in bytes) of the next message in a message buffer.\n * Useful if xMessageBufferReceive() returned 0 because the size of the buffer\n * passed into xMessageBufferReceive() was too small to hold the next message.\n *\n * @param xMessageBuffer The handle of the message buffer being queried.\n *\n * @return The length (in bytes) of the next message in the message buffer, or 0\n * if the message buffer is empty.\n *\n * \\defgroup xMessageBufferNextLengthBytes xMessageBufferNextLengthBytes\n * \\ingroup MessageBufferManagement\n */\n#define xMessageBufferNextLengthBytes( xMessageBuffer ) xStreamBufferNextMessageLengthBytes( ( StreamBufferHandle_t ) xMessageBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * message_buffer.h\n *\n<pre>\nBaseType_t xMessageBufferSendCompletedFromISR( MessageBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );\n</pre>\n *\n * For advanced users only.\n *\n * The sbSEND_COMPLETED() macro is called from within the FreeRTOS APIs when\n * data is sent to a message buffer or stream buffer.  If there was a task that\n * was blocked on the message or stream buffer waiting for data to arrive then\n * the sbSEND_COMPLETED() macro sends a notification to the task to remove it\n * from the Blocked state.  xMessageBufferSendCompletedFromISR() does the same\n * thing.  It is provided to enable application writers to implement their own\n * version of sbSEND_COMPLETED(), and MUST NOT BE USED AT ANY OTHER TIME.\n *\n * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for\n * additional information.\n *\n * @param xStreamBuffer The handle of the stream buffer to which data was\n * written.\n *\n * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be\n * initialised to pdFALSE before it is passed into\n * xMessageBufferSendCompletedFromISR().  If calling\n * xMessageBufferSendCompletedFromISR() removes a task from the Blocked state,\n * and the task has a priority above the priority of the currently running task,\n * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a\n * context switch should be performed before exiting the ISR.\n *\n * @return If a task was removed from the Blocked state then pdTRUE is returned.\n * Otherwise pdFALSE is returned.\n *\n * \\defgroup xMessageBufferSendCompletedFromISR xMessageBufferSendCompletedFromISR\n * \\ingroup StreamBufferManagement\n */\n#define xMessageBufferSendCompletedFromISR( xMessageBuffer, pxHigherPriorityTaskWoken ) xStreamBufferSendCompletedFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pxHigherPriorityTaskWoken )\n\n/**\n * message_buffer.h\n *\n<pre>\nBaseType_t xMessageBufferReceiveCompletedFromISR( MessageBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );\n</pre>\n *\n * For advanced users only.\n *\n * The sbRECEIVE_COMPLETED() macro is called from within the FreeRTOS APIs when\n * data is read out of a message buffer or stream buffer.  If there was a task\n * that was blocked on the message or stream buffer waiting for data to arrive\n * then the sbRECEIVE_COMPLETED() macro sends a notification to the task to\n * remove it from the Blocked state.  xMessageBufferReceiveCompletedFromISR()\n * does the same thing.  It is provided to enable application writers to\n * implement their own version of sbRECEIVE_COMPLETED(), and MUST NOT BE USED AT\n * ANY OTHER TIME.\n *\n * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for\n * additional information.\n *\n * @param xStreamBuffer The handle of the stream buffer from which data was\n * read.\n *\n * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be\n * initialised to pdFALSE before it is passed into\n * xMessageBufferReceiveCompletedFromISR().  If calling\n * xMessageBufferReceiveCompletedFromISR() removes a task from the Blocked state,\n * and the task has a priority above the priority of the currently running task,\n * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a\n * context switch should be performed before exiting the ISR.\n *\n * @return If a task was removed from the Blocked state then pdTRUE is returned.\n * Otherwise pdFALSE is returned.\n *\n * \\defgroup xMessageBufferReceiveCompletedFromISR xMessageBufferReceiveCompletedFromISR\n * \\ingroup StreamBufferManagement\n */\n#define xMessageBufferReceiveCompletedFromISR( xMessageBuffer, pxHigherPriorityTaskWoken ) xStreamBufferReceiveCompletedFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pxHigherPriorityTaskWoken )\n\n#if defined( __cplusplus )\n} /* extern \"C\" */\n#endif\n\n#endif\t/* !defined( FREERTOS_MESSAGE_BUFFER_H ) */\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/*\n * When the MPU is used the standard (non MPU) API functions are mapped to\n * equivalents that start \"MPU_\", the prototypes for which are defined in this\n * header files.  This will cause the application code to call the MPU_ version\n * which wraps the non-MPU version with privilege promoting then demoting code,\n * so the kernel code always runs will full privileges.\n */\n\n\n#ifndef MPU_PROTOTYPES_H\n#define MPU_PROTOTYPES_H\n\n/* MPU versions of tasks.h API functions. */\nBaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask ) FREERTOS_SYSTEM_CALL;\nTaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;\neTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskStartScheduler( void ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskSuspendAll( void ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskResumeAll( void ) FREERTOS_SYSTEM_CALL;\nTickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL;\nchar * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) FREERTOS_SYSTEM_CALL;\nTaskHandle_t MPU_xTaskGetHandle( const char *pcNameToQuery ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;\nconfigSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL;\nTaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) FREERTOS_SYSTEM_CALL;\nvoid * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) FREERTOS_SYSTEM_CALL;\nTaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL;\nuint32_t MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskList( char * pcWriteBuffer ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskGetRunTimeStats( char *pcWriteBuffer ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nuint32_t MPU_ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskNotifyStateClear( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;\nuint32_t MPU_ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskIncrementTick( void ) FREERTOS_SYSTEM_CALL;\nTaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTaskMissedYield( void ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) FREERTOS_SYSTEM_CALL;\n\n/* MPU versions of queue.h API functions. */\nBaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vQueueDelete( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;\nQueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;\nQueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) FREERTOS_SYSTEM_CALL;\nQueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) FREERTOS_SYSTEM_CALL;\nQueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) FREERTOS_SYSTEM_CALL;\nTaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcName ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;\nconst char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;\nQueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;\nQueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;\nQueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;\nQueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxQueueGetQueueNumber( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;\nuint8_t MPU_ucQueueGetQueueType( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;\n\n/* MPU versions of timers.h API functions. */\nTimerHandle_t MPU_xTimerCreate( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction ) FREERTOS_SYSTEM_CALL;\nTimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction, StaticTimer_t *pxTimerBuffer ) FREERTOS_SYSTEM_CALL;\nvoid * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;\nTaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nconst char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;\nTickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;\nTickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTimerCreateTimerTask( void ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\n\n/* MPU versions of event_group.h API functions. */\nEventGroupHandle_t MPU_xEventGroupCreate( void ) FREERTOS_SYSTEM_CALL;\nEventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) FREERTOS_SYSTEM_CALL;\nEventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nEventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;\nEventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL;\nEventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) FREERTOS_SYSTEM_CALL;\nUBaseType_t MPU_uxEventGroupGetNumber( void* xEventGroup ) FREERTOS_SYSTEM_CALL;\n\n/* MPU versions of message/stream_buffer.h API functions. */\nsize_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, const void *pvTxData, size_t xDataLengthBytes, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nsize_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, void *pvRxData, size_t xBufferLengthBytes, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;\nsize_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;\nvoid MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;\nsize_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;\nsize_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;\nBaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL;\nStreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer ) FREERTOS_SYSTEM_CALL;\nStreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer, uint8_t * const pucStreamBufferStorageArea, StaticStreamBuffer_t * const pxStaticStreamBuffer ) FREERTOS_SYSTEM_CALL;\n\n\n\n#endif /* MPU_PROTOTYPES_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef MPU_WRAPPERS_H\n#define MPU_WRAPPERS_H\n\n/* This file redefines API functions to be called through a wrapper macro, but\nonly for ports that are using the MPU. */\n#ifdef portUSING_MPU_WRAPPERS\n\n\t/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE will be defined when this file is\n\tincluded from queue.c or task.c to prevent it from having an effect within\n\tthose files. */\n\t#ifndef MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n\t\t/*\n\t\t * Map standard (non MPU) API functions to equivalents that start\n\t\t * \"MPU_\".  This will cause the application code to call the MPU_\n\t\t * version, which wraps the non-MPU version with privilege promoting\n\t\t * then demoting code, so the kernel code always runs will full\n\t\t * privileges.\n\t\t */\n\n\t\t/* Map standard tasks.h API functions to the MPU equivalents. */\n\t\t#define xTaskCreate\t\t\t\t\t\t\t\tMPU_xTaskCreate\n\t\t#define xTaskCreateStatic\t\t\t\t\t\tMPU_xTaskCreateStatic\n\t\t#define xTaskCreateRestricted\t\t\t\t\tMPU_xTaskCreateRestricted\n\t\t#define vTaskAllocateMPURegions\t\t\t\t\tMPU_vTaskAllocateMPURegions\n\t\t#define vTaskDelete\t\t\t\t\t\t\t\tMPU_vTaskDelete\n\t\t#define vTaskDelay\t\t\t\t\t\t\t\tMPU_vTaskDelay\n\t\t#define vTaskDelayUntil\t\t\t\t\t\t\tMPU_vTaskDelayUntil\n\t\t#define xTaskAbortDelay\t\t\t\t\t\t\tMPU_xTaskAbortDelay\n\t\t#define uxTaskPriorityGet\t\t\t\t\t\tMPU_uxTaskPriorityGet\n\t\t#define eTaskGetState\t\t\t\t\t\t\tMPU_eTaskGetState\n\t\t#define vTaskGetInfo\t\t\t\t\t\t\tMPU_vTaskGetInfo\n\t\t#define vTaskPrioritySet\t\t\t\t\t\tMPU_vTaskPrioritySet\n\t\t#define vTaskSuspend\t\t\t\t\t\t\tMPU_vTaskSuspend\n\t\t#define vTaskResume\t\t\t\t\t\t\t\tMPU_vTaskResume\n\t\t#define vTaskSuspendAll\t\t\t\t\t\t\tMPU_vTaskSuspendAll\n\t\t#define xTaskResumeAll\t\t\t\t\t\t\tMPU_xTaskResumeAll\n\t\t#define xTaskGetTickCount\t\t\t\t\t\tMPU_xTaskGetTickCount\n\t\t#define uxTaskGetNumberOfTasks\t\t\t\t\tMPU_uxTaskGetNumberOfTasks\n\t\t#define pcTaskGetName\t\t\t\t\t\t\tMPU_pcTaskGetName\n\t\t#define xTaskGetHandle\t\t\t\t\t\t\tMPU_xTaskGetHandle\n\t\t#define uxTaskGetStackHighWaterMark\t\t\t\tMPU_uxTaskGetStackHighWaterMark\n\t\t#define uxTaskGetStackHighWaterMark2\t\t\tMPU_uxTaskGetStackHighWaterMark2\n\t\t#define vTaskSetApplicationTaskTag\t\t\t\tMPU_vTaskSetApplicationTaskTag\n\t\t#define xTaskGetApplicationTaskTag\t\t\t\tMPU_xTaskGetApplicationTaskTag\n\t\t#define vTaskSetThreadLocalStoragePointer\t\tMPU_vTaskSetThreadLocalStoragePointer\n\t\t#define pvTaskGetThreadLocalStoragePointer\t\tMPU_pvTaskGetThreadLocalStoragePointer\n\t\t#define xTaskCallApplicationTaskHook\t\t\tMPU_xTaskCallApplicationTaskHook\n\t\t#define xTaskGetIdleTaskHandle\t\t\t\t\tMPU_xTaskGetIdleTaskHandle\n\t\t#define uxTaskGetSystemState\t\t\t\t\tMPU_uxTaskGetSystemState\n\t\t#define vTaskList\t\t\t\t\t\t\t\tMPU_vTaskList\n\t\t#define vTaskGetRunTimeStats\t\t\t\t\tMPU_vTaskGetRunTimeStats\n\t\t#define ulTaskGetIdleRunTimeCounter\t\t\t\tMPU_ulTaskGetIdleRunTimeCounter\n\t\t#define xTaskGenericNotify\t\t\t\t\t\tMPU_xTaskGenericNotify\n\t\t#define xTaskNotifyWait\t\t\t\t\t\t\tMPU_xTaskNotifyWait\n\t\t#define ulTaskNotifyTake\t\t\t\t\t\tMPU_ulTaskNotifyTake\n\t\t#define xTaskNotifyStateClear\t\t\t\t\tMPU_xTaskNotifyStateClear\n\t\t#define ulTaskNotifyValueClear\t\t\t\t\tMPU_ulTaskNotifyValueClear\n\t\t#define xTaskCatchUpTicks\t\t\t\t\t\tMPU_xTaskCatchUpTicks\n\n\t\t#define xTaskGetCurrentTaskHandle\t\t\t\tMPU_xTaskGetCurrentTaskHandle\n\t\t#define vTaskSetTimeOutState\t\t\t\t\tMPU_vTaskSetTimeOutState\n\t\t#define xTaskCheckForTimeOut\t\t\t\t\tMPU_xTaskCheckForTimeOut\n\t\t#define xTaskGetSchedulerState\t\t\t\t\tMPU_xTaskGetSchedulerState\n\n\t\t/* Map standard queue.h API functions to the MPU equivalents. */\n\t\t#define xQueueGenericSend\t\t\t\t\t\tMPU_xQueueGenericSend\n\t\t#define xQueueReceive\t\t\t\t\t\t\tMPU_xQueueReceive\n\t\t#define xQueuePeek\t\t\t\t\t\t\t\tMPU_xQueuePeek\n\t\t#define xQueueSemaphoreTake\t\t\t\t\t\tMPU_xQueueSemaphoreTake\n\t\t#define uxQueueMessagesWaiting\t\t\t\t\tMPU_uxQueueMessagesWaiting\n\t\t#define uxQueueSpacesAvailable\t\t\t\t\tMPU_uxQueueSpacesAvailable\n\t\t#define vQueueDelete\t\t\t\t\t\t\tMPU_vQueueDelete\n\t\t#define xQueueCreateMutex\t\t\t\t\t\tMPU_xQueueCreateMutex\n\t\t#define xQueueCreateMutexStatic\t\t\t\t\tMPU_xQueueCreateMutexStatic\n\t\t#define xQueueCreateCountingSemaphore\t\t\tMPU_xQueueCreateCountingSemaphore\n\t\t#define xQueueCreateCountingSemaphoreStatic\t\tMPU_xQueueCreateCountingSemaphoreStatic\n\t\t#define xQueueGetMutexHolder\t\t\t\t\tMPU_xQueueGetMutexHolder\n\t\t#define xQueueTakeMutexRecursive\t\t\t\tMPU_xQueueTakeMutexRecursive\n\t\t#define xQueueGiveMutexRecursive\t\t\t\tMPU_xQueueGiveMutexRecursive\n\t\t#define xQueueGenericCreate\t\t\t\t\t\tMPU_xQueueGenericCreate\n\t\t#define xQueueGenericCreateStatic\t\t\t\tMPU_xQueueGenericCreateStatic\n\t\t#define xQueueCreateSet\t\t\t\t\t\t\tMPU_xQueueCreateSet\n\t\t#define xQueueAddToSet\t\t\t\t\t\t\tMPU_xQueueAddToSet\n\t\t#define xQueueRemoveFromSet\t\t\t\t\t\tMPU_xQueueRemoveFromSet\n\t\t#define xQueueSelectFromSet\t\t\t\t\t\tMPU_xQueueSelectFromSet\n\t\t#define xQueueGenericReset\t\t\t\t\t\tMPU_xQueueGenericReset\n\n\t\t#if( configQUEUE_REGISTRY_SIZE > 0 )\n\t\t\t#define vQueueAddToRegistry\t\t\t\t\t\tMPU_vQueueAddToRegistry\n\t\t\t#define vQueueUnregisterQueue\t\t\t\t\tMPU_vQueueUnregisterQueue\n\t\t\t#define pcQueueGetName\t\t\t\t\t\t\tMPU_pcQueueGetName\n\t\t#endif\n\n\t\t/* Map standard timer.h API functions to the MPU equivalents. */\n\t\t#define xTimerCreate\t\t\t\t\t\t\tMPU_xTimerCreate\n\t\t#define xTimerCreateStatic\t\t\t\t\t\tMPU_xTimerCreateStatic\n\t\t#define pvTimerGetTimerID\t\t\t\t\t\tMPU_pvTimerGetTimerID\n\t\t#define vTimerSetTimerID\t\t\t\t\t\tMPU_vTimerSetTimerID\n\t\t#define xTimerIsTimerActive\t\t\t\t\t\tMPU_xTimerIsTimerActive\n\t\t#define xTimerGetTimerDaemonTaskHandle\t\t\tMPU_xTimerGetTimerDaemonTaskHandle\n\t\t#define xTimerPendFunctionCall\t\t\t\t\tMPU_xTimerPendFunctionCall\n\t\t#define pcTimerGetName\t\t\t\t\t\t\tMPU_pcTimerGetName\n\t\t#define vTimerSetReloadMode\t\t\t\t\t\tMPU_vTimerSetReloadMode\n\t\t#define uxTimerGetReloadMode\t\t\t\t\tMPU_uxTimerGetReloadMode\n\t\t#define xTimerGetPeriod\t\t\t\t\t\t\tMPU_xTimerGetPeriod\n\t\t#define xTimerGetExpiryTime\t\t\t\t\t\tMPU_xTimerGetExpiryTime\n\t\t#define xTimerGenericCommand\t\t\t\t\tMPU_xTimerGenericCommand\n\n\t\t/* Map standard event_group.h API functions to the MPU equivalents. */\n\t\t#define xEventGroupCreate\t\t\t\t\t\tMPU_xEventGroupCreate\n\t\t#define xEventGroupCreateStatic\t\t\t\t\tMPU_xEventGroupCreateStatic\n\t\t#define xEventGroupWaitBits\t\t\t\t\t\tMPU_xEventGroupWaitBits\n\t\t#define xEventGroupClearBits\t\t\t\t\tMPU_xEventGroupClearBits\n\t\t#define xEventGroupSetBits\t\t\t\t\t\tMPU_xEventGroupSetBits\n\t\t#define xEventGroupSync\t\t\t\t\t\t\tMPU_xEventGroupSync\n\t\t#define vEventGroupDelete\t\t\t\t\t\tMPU_vEventGroupDelete\n\n\t\t/* Map standard message/stream_buffer.h API functions to the MPU\n\t\tequivalents. */\n\t\t#define xStreamBufferSend\t\t\t\t\t\tMPU_xStreamBufferSend\n\t\t#define xStreamBufferReceive\t\t\t\t\tMPU_xStreamBufferReceive\n\t\t#define xStreamBufferNextMessageLengthBytes\t\tMPU_xStreamBufferNextMessageLengthBytes\n\t\t#define vStreamBufferDelete\t\t\t\t\t\tMPU_vStreamBufferDelete\n\t\t#define xStreamBufferIsFull\t\t\t\t\t\tMPU_xStreamBufferIsFull\n\t\t#define xStreamBufferIsEmpty\t\t\t\t\tMPU_xStreamBufferIsEmpty\n\t\t#define xStreamBufferReset\t\t\t\t\t\tMPU_xStreamBufferReset\n\t\t#define xStreamBufferSpacesAvailable\t\t\tMPU_xStreamBufferSpacesAvailable\n\t\t#define xStreamBufferBytesAvailable\t\t\t\tMPU_xStreamBufferBytesAvailable\n\t\t#define xStreamBufferSetTriggerLevel\t\t\tMPU_xStreamBufferSetTriggerLevel\n\t\t#define xStreamBufferGenericCreate\t\t\t\tMPU_xStreamBufferGenericCreate\n\t\t#define xStreamBufferGenericCreateStatic\t\tMPU_xStreamBufferGenericCreateStatic\n\n\n\t\t/* Remove the privileged function macro, but keep the PRIVILEGED_DATA\n\t\tmacro so applications can place data in privileged access sections\n\t\t(useful when using statically allocated objects). */\n\t\t#define PRIVILEGED_FUNCTION\n\t\t#define PRIVILEGED_DATA __attribute__((section(\"privileged_data\")))\n\t\t#define FREERTOS_SYSTEM_CALL\n\n\t#else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */\n\n\t\t/* Ensure API functions go in the privileged execution section. */\n\t\t#define PRIVILEGED_FUNCTION __attribute__((section(\"privileged_functions\")))\n\t\t#define PRIVILEGED_DATA __attribute__((section(\"privileged_data\")))\n\t\t#define FREERTOS_SYSTEM_CALL __attribute__((section( \"freertos_system_calls\")))\n\n\t#endif /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */\n\n#else /* portUSING_MPU_WRAPPERS */\n\n\t#define PRIVILEGED_FUNCTION\n\t#define PRIVILEGED_DATA\n\t#define FREERTOS_SYSTEM_CALL\n\t#define portUSING_MPU_WRAPPERS 0\n\n#endif /* portUSING_MPU_WRAPPERS */\n\n\n#endif /* MPU_WRAPPERS_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/*-----------------------------------------------------------\n * Portable layer API.  Each function must be defined for each port.\n *----------------------------------------------------------*/\n\n#ifndef PORTABLE_H\n#define PORTABLE_H\n\n/* Each FreeRTOS port has a unique portmacro.h header file.  Originally a\npre-processor definition was used to ensure the pre-processor found the correct\nportmacro.h file for the port being used.  That scheme was deprecated in favour\nof setting the compiler's include path such that it found the correct\nportmacro.h file - removing the need for the constant and allowing the\nportmacro.h file to be located anywhere in relation to the port being used.\nPurely for reasons of backward compatibility the old method is still valid, but\nto make it clear that new projects should not use it, support for the port\nspecific constants has been moved into the deprecated_definitions.h header\nfile. */\n#include \"deprecated_definitions.h\"\n\n/* If portENTER_CRITICAL is not defined then including deprecated_definitions.h\ndid not result in a portmacro.h header file being included - and it should be\nincluded here.  In this case the path to the correct portmacro.h header file\nmust be set in the compiler's include path. */\n#ifndef portENTER_CRITICAL\n\t#include \"portmacro.h\"\n#endif\n\n#if portBYTE_ALIGNMENT == 32\n\t#define portBYTE_ALIGNMENT_MASK ( 0x001f )\n#endif\n\n#if portBYTE_ALIGNMENT == 16\n\t#define portBYTE_ALIGNMENT_MASK ( 0x000f )\n#endif\n\n#if portBYTE_ALIGNMENT == 8\n\t#define portBYTE_ALIGNMENT_MASK ( 0x0007 )\n#endif\n\n#if portBYTE_ALIGNMENT == 4\n\t#define portBYTE_ALIGNMENT_MASK\t( 0x0003 )\n#endif\n\n#if portBYTE_ALIGNMENT == 2\n\t#define portBYTE_ALIGNMENT_MASK\t( 0x0001 )\n#endif\n\n#if portBYTE_ALIGNMENT == 1\n\t#define portBYTE_ALIGNMENT_MASK\t( 0x0000 )\n#endif\n\n#ifndef portBYTE_ALIGNMENT_MASK\n\t#error \"Invalid portBYTE_ALIGNMENT definition\"\n#endif\n\n#ifndef portNUM_CONFIGURABLE_REGIONS\n\t#define portNUM_CONFIGURABLE_REGIONS 1\n#endif\n\n#ifndef portHAS_STACK_OVERFLOW_CHECKING\n\t#define portHAS_STACK_OVERFLOW_CHECKING 0\n#endif\n\n#ifndef portARCH_NAME\n\t#define portARCH_NAME NULL\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include \"mpu_wrappers.h\"\n\n/*\n * Setup the stack of a new task so it is ready to be placed under the\n * scheduler control.  The registers have to be placed on the stack in\n * the order that the port expects to find them.\n *\n */\n#if( portUSING_MPU_WRAPPERS == 1 )\n\t#if( portHAS_STACK_OVERFLOW_CHECKING == 1 )\n\t\tStackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged ) PRIVILEGED_FUNCTION;\n\t#else\n\t\tStackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged ) PRIVILEGED_FUNCTION;\n\t#endif\n#else\n\t#if( portHAS_STACK_OVERFLOW_CHECKING == 1 )\n\t\tStackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters ) PRIVILEGED_FUNCTION;\n\t#else\n\t\tStackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) PRIVILEGED_FUNCTION;\n\t#endif\n#endif\n\n/* Used by heap_5.c to define the start address and size of each memory region\nthat together comprise the total FreeRTOS heap space. */\ntypedef struct HeapRegion\n{\n\tuint8_t *pucStartAddress;\n\tsize_t xSizeInBytes;\n} HeapRegion_t;\n\n/* Used to pass information about the heap out of vPortGetHeapStats(). */\ntypedef struct xHeapStats\n{\n\tsize_t xAvailableHeapSpaceInBytes;\t\t/* The total heap size currently available - this is the sum of all the free blocks, not the largest block that can be allocated. */\n\tsize_t xSizeOfLargestFreeBlockInBytes; \t/* The maximum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */\n\tsize_t xSizeOfSmallestFreeBlockInBytes; /* The minimum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */\n\tsize_t xNumberOfFreeBlocks;\t\t\t\t/* The number of free memory blocks within the heap at the time vPortGetHeapStats() is called. */\n\tsize_t xMinimumEverFreeBytesRemaining;\t/* The minimum amount of total free memory (sum of all free blocks) there has been in the heap since the system booted. */\n\tsize_t xNumberOfSuccessfulAllocations;\t/* The number of calls to pvPortMalloc() that have returned a valid memory block. */\n\tsize_t xNumberOfSuccessfulFrees;\t\t/* The number of calls to vPortFree() that has successfully freed a block of memory. */\n} HeapStats_t;\n\n/*\n * Used to define multiple heap regions for use by heap_5.c.  This function\n * must be called before any calls to pvPortMalloc() - not creating a task,\n * queue, semaphore, mutex, software timer, event group, etc. will result in\n * pvPortMalloc being called.\n *\n * pxHeapRegions passes in an array of HeapRegion_t structures - each of which\n * defines a region of memory that can be used as the heap.  The array is\n * terminated by a HeapRegions_t structure that has a size of 0.  The region\n * with the lowest start address must appear first in the array.\n */\nvoid vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions ) PRIVILEGED_FUNCTION;\n\n/*\n * Returns a HeapStats_t structure filled with information about the current\n * heap state.\n */\nvoid vPortGetHeapStats( HeapStats_t *pxHeapStats );\n\n/*\n * Map to the memory management routines required for the port.\n */\nvoid *pvPortMalloc( size_t xSize ) PRIVILEGED_FUNCTION;\nvoid vPortFree( void *pv ) PRIVILEGED_FUNCTION;\nvoid vPortInitialiseBlocks( void ) PRIVILEGED_FUNCTION;\nsize_t xPortGetFreeHeapSize( void ) PRIVILEGED_FUNCTION;\nsize_t xPortGetMinimumEverFreeHeapSize( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Setup the hardware ready for the scheduler to take control.  This generally\n * sets up a tick interrupt and sets timers for the correct tick frequency.\n */\nBaseType_t xPortStartScheduler( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Undo any hardware/ISR setup that was performed by xPortStartScheduler() so\n * the hardware is left in its original condition after the scheduler stops\n * executing.\n */\nvoid vPortEndScheduler( void ) PRIVILEGED_FUNCTION;\n\n/*\n * The structures and methods of manipulating the MPU are contained within the\n * port layer.\n *\n * Fills the xMPUSettings structure with the memory region information\n * contained in xRegions.\n */\n#if( portUSING_MPU_WRAPPERS == 1 )\n\tstruct xMEMORY_REGION;\n\tvoid vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth ) PRIVILEGED_FUNCTION;\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* PORTABLE_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef PROJDEFS_H\n#define PROJDEFS_H\n\n/*\n * Defines the prototype to which task functions must conform.  Defined in this\n * file to ensure the type is known before portable.h is included.\n */\ntypedef void (*TaskFunction_t)( void * );\n\n/* Converts a time in milliseconds to a time in ticks.  This macro can be\noverridden by a macro of the same name defined in FreeRTOSConfig.h in case the\ndefinition here is not suitable for your application. */\n#ifndef pdMS_TO_TICKS\n\t#define pdMS_TO_TICKS( xTimeInMs ) ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000 ) )\n#endif\n\n#define pdFALSE\t\t\t( ( BaseType_t ) 0 )\n#define pdTRUE\t\t\t( ( BaseType_t ) 1 )\n\n#define pdPASS\t\t\t( pdTRUE )\n#define pdFAIL\t\t\t( pdFALSE )\n#define errQUEUE_EMPTY\t( ( BaseType_t ) 0 )\n#define errQUEUE_FULL\t( ( BaseType_t ) 0 )\n\n/* FreeRTOS error definitions. */\n#define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY\t( -1 )\n#define errQUEUE_BLOCKED\t\t\t\t\t\t( -4 )\n#define errQUEUE_YIELD\t\t\t\t\t\t\t( -5 )\n\n/* Macros used for basic data corruption checks. */\n#ifndef configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES\n\t#define configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 0\n#endif\n\n#if( configUSE_16_BIT_TICKS == 1 )\n\t#define pdINTEGRITY_CHECK_VALUE 0x5a5a\n#else\n\t#define pdINTEGRITY_CHECK_VALUE 0x5a5a5a5aUL\n#endif\n\n/* The following errno values are used by FreeRTOS+ components, not FreeRTOS\nitself. */\n#define pdFREERTOS_ERRNO_NONE\t\t\t0\t/* No errors */\n#define\tpdFREERTOS_ERRNO_ENOENT\t\t\t2\t/* No such file or directory */\n#define\tpdFREERTOS_ERRNO_EINTR\t\t\t4\t/* Interrupted system call */\n#define\tpdFREERTOS_ERRNO_EIO\t\t\t5\t/* I/O error */\n#define\tpdFREERTOS_ERRNO_ENXIO\t\t\t6\t/* No such device or address */\n#define\tpdFREERTOS_ERRNO_EBADF\t\t\t9\t/* Bad file number */\n#define\tpdFREERTOS_ERRNO_EAGAIN\t\t\t11\t/* No more processes */\n#define\tpdFREERTOS_ERRNO_EWOULDBLOCK\t11\t/* Operation would block */\n#define\tpdFREERTOS_ERRNO_ENOMEM\t\t\t12\t/* Not enough memory */\n#define\tpdFREERTOS_ERRNO_EACCES\t\t\t13\t/* Permission denied */\n#define\tpdFREERTOS_ERRNO_EFAULT\t\t\t14\t/* Bad address */\n#define\tpdFREERTOS_ERRNO_EBUSY\t\t\t16\t/* Mount device busy */\n#define\tpdFREERTOS_ERRNO_EEXIST\t\t\t17\t/* File exists */\n#define\tpdFREERTOS_ERRNO_EXDEV\t\t\t18\t/* Cross-device link */\n#define\tpdFREERTOS_ERRNO_ENODEV\t\t\t19\t/* No such device */\n#define\tpdFREERTOS_ERRNO_ENOTDIR\t\t20\t/* Not a directory */\n#define\tpdFREERTOS_ERRNO_EISDIR\t\t\t21\t/* Is a directory */\n#define\tpdFREERTOS_ERRNO_EINVAL\t\t\t22\t/* Invalid argument */\n#define\tpdFREERTOS_ERRNO_ENOSPC\t\t\t28\t/* No space left on device */\n#define\tpdFREERTOS_ERRNO_ESPIPE\t\t\t29\t/* Illegal seek */\n#define\tpdFREERTOS_ERRNO_EROFS\t\t\t30\t/* Read only file system */\n#define\tpdFREERTOS_ERRNO_EUNATCH\t\t42\t/* Protocol driver not attached */\n#define\tpdFREERTOS_ERRNO_EBADE\t\t\t50\t/* Invalid exchange */\n#define\tpdFREERTOS_ERRNO_EFTYPE\t\t\t79\t/* Inappropriate file type or format */\n#define\tpdFREERTOS_ERRNO_ENMFILE\t\t89\t/* No more files */\n#define\tpdFREERTOS_ERRNO_ENOTEMPTY\t\t90\t/* Directory not empty */\n#define\tpdFREERTOS_ERRNO_ENAMETOOLONG \t91\t/* File or path name too long */\n#define\tpdFREERTOS_ERRNO_EOPNOTSUPP\t\t95\t/* Operation not supported on transport endpoint */\n#define\tpdFREERTOS_ERRNO_ENOBUFS\t\t105\t/* No buffer space available */\n#define\tpdFREERTOS_ERRNO_ENOPROTOOPT\t109\t/* Protocol not available */\n#define\tpdFREERTOS_ERRNO_EADDRINUSE\t\t112\t/* Address already in use */\n#define\tpdFREERTOS_ERRNO_ETIMEDOUT\t\t116\t/* Connection timed out */\n#define\tpdFREERTOS_ERRNO_EINPROGRESS\t119\t/* Connection already in progress */\n#define\tpdFREERTOS_ERRNO_EALREADY\t\t120\t/* Socket already connected */\n#define\tpdFREERTOS_ERRNO_EADDRNOTAVAIL \t125\t/* Address not available */\n#define\tpdFREERTOS_ERRNO_EISCONN\t\t127\t/* Socket is already connected */\n#define\tpdFREERTOS_ERRNO_ENOTCONN\t\t128\t/* Socket is not connected */\n#define\tpdFREERTOS_ERRNO_ENOMEDIUM\t\t135\t/* No medium inserted */\n#define\tpdFREERTOS_ERRNO_EILSEQ\t\t\t138\t/* An invalid UTF-16 sequence was encountered. */\n#define\tpdFREERTOS_ERRNO_ECANCELED\t\t140\t/* Operation canceled. */\n\n/* The following endian values are used by FreeRTOS+ components, not FreeRTOS\nitself. */\n#define pdFREERTOS_LITTLE_ENDIAN\t\t0\n#define pdFREERTOS_BIG_ENDIAN\t\t\t1\n\n/* Re-defining endian values for generic naming. */\n#define pdLITTLE_ENDIAN\t\t\t\t\tpdFREERTOS_LITTLE_ENDIAN\n#define pdBIG_ENDIAN\t\t\t\t\tpdFREERTOS_BIG_ENDIAN\n\n\n#endif /* PROJDEFS_H */\n\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n\n#ifndef QUEUE_H\n#define QUEUE_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h\" must appear in source files before \"include queue.h\"\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include \"task.h\"\n\n/**\n * Type by which queues are referenced.  For example, a call to xQueueCreate()\n * returns an QueueHandle_t variable that can then be used as a parameter to\n * xQueueSend(), xQueueReceive(), etc.\n */\nstruct QueueDefinition; /* Using old naming convention so as not to break kernel aware debuggers. */\ntypedef struct QueueDefinition * QueueHandle_t;\n\n/**\n * Type by which queue sets are referenced.  For example, a call to\n * xQueueCreateSet() returns an xQueueSet variable that can then be used as a\n * parameter to xQueueSelectFromSet(), xQueueAddToSet(), etc.\n */\ntypedef struct QueueDefinition * QueueSetHandle_t;\n\n/**\n * Queue sets can contain both queues and semaphores, so the\n * QueueSetMemberHandle_t is defined as a type to be used where a parameter or\n * return value can be either an QueueHandle_t or an SemaphoreHandle_t.\n */\ntypedef struct QueueDefinition * QueueSetMemberHandle_t;\n\n/* For internal use only. */\n#define\tqueueSEND_TO_BACK\t\t( ( BaseType_t ) 0 )\n#define\tqueueSEND_TO_FRONT\t\t( ( BaseType_t ) 1 )\n#define queueOVERWRITE\t\t\t( ( BaseType_t ) 2 )\n\n/* For internal use only.  These definitions *must* match those in queue.c. */\n#define queueQUEUE_TYPE_BASE\t\t\t\t( ( uint8_t ) 0U )\n#define queueQUEUE_TYPE_SET\t\t\t\t\t( ( uint8_t ) 0U )\n#define queueQUEUE_TYPE_MUTEX \t\t\t\t( ( uint8_t ) 1U )\n#define queueQUEUE_TYPE_COUNTING_SEMAPHORE\t( ( uint8_t ) 2U )\n#define queueQUEUE_TYPE_BINARY_SEMAPHORE\t( ( uint8_t ) 3U )\n#define queueQUEUE_TYPE_RECURSIVE_MUTEX\t\t( ( uint8_t ) 4U )\n\n/**\n * queue. h\n * <pre>\n QueueHandle_t xQueueCreate(\n\t\t\t\t\t\t\t  UBaseType_t uxQueueLength,\n\t\t\t\t\t\t\t  UBaseType_t uxItemSize\n\t\t\t\t\t\t  );\n * </pre>\n *\n * Creates a new queue instance, and returns a handle by which the new queue\n * can be referenced.\n *\n * Internally, within the FreeRTOS implementation, queues use two blocks of\n * memory.  The first block is used to hold the queue's data structures.  The\n * second block is used to hold items placed into the queue.  If a queue is\n * created using xQueueCreate() then both blocks of memory are automatically\n * dynamically allocated inside the xQueueCreate() function.  (see\n * http://www.freertos.org/a00111.html).  If a queue is created using\n * xQueueCreateStatic() then the application writer must provide the memory that\n * will get used by the queue.  xQueueCreateStatic() therefore allows a queue to\n * be created without using any dynamic memory allocation.\n *\n * http://www.FreeRTOS.org/Embedded-RTOS-Queues.html\n *\n * @param uxQueueLength The maximum number of items that the queue can contain.\n *\n * @param uxItemSize The number of bytes each item in the queue will require.\n * Items are queued by copy, not by reference, so this is the number of bytes\n * that will be copied for each posted item.  Each item on the queue must be\n * the same size.\n *\n * @return If the queue is successfully create then a handle to the newly\n * created queue is returned.  If the queue cannot be created then 0 is\n * returned.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n };\n\n void vATask( void *pvParameters )\n {\n QueueHandle_t xQueue1, xQueue2;\n\n\t// Create a queue capable of containing 10 uint32_t values.\n\txQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );\n\tif( xQueue1 == 0 )\n\t{\n\t\t// Queue was not created and must not be used.\n\t}\n\n\t// Create a queue capable of containing 10 pointers to AMessage structures.\n\t// These should be passed by pointer as they contain a lot of data.\n\txQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\n\tif( xQueue2 == 0 )\n\t{\n\t\t// Queue was not created and must not be used.\n\t}\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueueCreate xQueueCreate\n * \\ingroup QueueManagement\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t#define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) )\n#endif\n\n/**\n * queue. h\n * <pre>\n QueueHandle_t xQueueCreateStatic(\n\t\t\t\t\t\t\t  UBaseType_t uxQueueLength,\n\t\t\t\t\t\t\t  UBaseType_t uxItemSize,\n\t\t\t\t\t\t\t  uint8_t *pucQueueStorageBuffer,\n\t\t\t\t\t\t\t  StaticQueue_t *pxQueueBuffer\n\t\t\t\t\t\t  );\n * </pre>\n *\n * Creates a new queue instance, and returns a handle by which the new queue\n * can be referenced.\n *\n * Internally, within the FreeRTOS implementation, queues use two blocks of\n * memory.  The first block is used to hold the queue's data structures.  The\n * second block is used to hold items placed into the queue.  If a queue is\n * created using xQueueCreate() then both blocks of memory are automatically\n * dynamically allocated inside the xQueueCreate() function.  (see\n * http://www.freertos.org/a00111.html).  If a queue is created using\n * xQueueCreateStatic() then the application writer must provide the memory that\n * will get used by the queue.  xQueueCreateStatic() therefore allows a queue to\n * be created without using any dynamic memory allocation.\n *\n * http://www.FreeRTOS.org/Embedded-RTOS-Queues.html\n *\n * @param uxQueueLength The maximum number of items that the queue can contain.\n *\n * @param uxItemSize The number of bytes each item in the queue will require.\n * Items are queued by copy, not by reference, so this is the number of bytes\n * that will be copied for each posted item.  Each item on the queue must be\n * the same size.\n *\n * @param pucQueueStorageBuffer If uxItemSize is not zero then\n * pucQueueStorageBuffer must point to a uint8_t array that is at least large\n * enough to hold the maximum number of items that can be in the queue at any\n * one time - which is ( uxQueueLength * uxItemsSize ) bytes.  If uxItemSize is\n * zero then pucQueueStorageBuffer can be NULL.\n *\n * @param pxQueueBuffer Must point to a variable of type StaticQueue_t, which\n * will be used to hold the queue's data structure.\n *\n * @return If the queue is created then a handle to the created queue is\n * returned.  If pxQueueBuffer is NULL then NULL is returned.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n };\n\n #define QUEUE_LENGTH 10\n #define ITEM_SIZE sizeof( uint32_t )\n\n // xQueueBuffer will hold the queue structure.\n StaticQueue_t xQueueBuffer;\n\n // ucQueueStorage will hold the items posted to the queue.  Must be at least\n // [(queue length) * ( queue item size)] bytes long.\n uint8_t ucQueueStorage[ QUEUE_LENGTH * ITEM_SIZE ];\n\n void vATask( void *pvParameters )\n {\n QueueHandle_t xQueue1;\n\n\t// Create a queue capable of containing 10 uint32_t values.\n\txQueue1 = xQueueCreate( QUEUE_LENGTH, // The number of items the queue can hold.\n\t\t\t\t\t\t\tITEM_SIZE\t  // The size of each item in the queue\n\t\t\t\t\t\t\t&( ucQueueStorage[ 0 ] ), // The buffer that will hold the items in the queue.\n\t\t\t\t\t\t\t&xQueueBuffer ); // The buffer that will hold the queue structure.\n\n\t// The queue is guaranteed to be created successfully as no dynamic memory\n\t// allocation is used.  Therefore xQueue1 is now a handle to a valid queue.\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueueCreateStatic xQueueCreateStatic\n * \\ingroup QueueManagement\n */\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t#define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueSendToToFront(\n\t\t\t\t\t\t\t\t   QueueHandle_t\txQueue,\n\t\t\t\t\t\t\t\t   const void\t\t*pvItemToQueue,\n\t\t\t\t\t\t\t\t   TickType_t\t\txTicksToWait\n\t\t\t\t\t\t\t   );\n * </pre>\n *\n * Post an item to the front of a queue.  The item is queued by copy, not by\n * reference.  This function must not be called from an interrupt service\n * routine.  See xQueueSendFromISR () for an alternative which may be used\n * in an ISR.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param xTicksToWait The maximum amount of time the task should block\n * waiting for space to become available on the queue, should it already\n * be full.  The call will return immediately if this is set to 0 and the\n * queue is full.  The time is defined in tick periods so the constant\n * portTICK_PERIOD_MS should be used to convert to real time if this is required.\n *\n * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n } xMessage;\n\n uint32_t ulVar = 10UL;\n\n void vATask( void *pvParameters )\n {\n QueueHandle_t xQueue1, xQueue2;\n struct AMessage *pxMessage;\n\n\t// Create a queue capable of containing 10 uint32_t values.\n\txQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );\n\n\t// Create a queue capable of containing 10 pointers to AMessage structures.\n\t// These should be passed by pointer as they contain a lot of data.\n\txQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\n\n\t// ...\n\n\tif( xQueue1 != 0 )\n\t{\n\t\t// Send an uint32_t.  Wait for 10 ticks for space to become\n\t\t// available if necessary.\n\t\tif( xQueueSendToFront( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )\n\t\t{\n\t\t\t// Failed to post the message, even after 10 ticks.\n\t\t}\n\t}\n\n\tif( xQueue2 != 0 )\n\t{\n\t\t// Send a pointer to a struct AMessage object.  Don't block if the\n\t\t// queue is already full.\n\t\tpxMessage = & xMessage;\n\t\txQueueSendToFront( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );\n\t}\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueueSend xQueueSend\n * \\ingroup QueueManagement\n */\n#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT )\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueSendToBack(\n\t\t\t\t\t\t\t\t   QueueHandle_t\txQueue,\n\t\t\t\t\t\t\t\t   const void\t\t*pvItemToQueue,\n\t\t\t\t\t\t\t\t   TickType_t\t\txTicksToWait\n\t\t\t\t\t\t\t   );\n * </pre>\n *\n * This is a macro that calls xQueueGenericSend().\n *\n * Post an item to the back of a queue.  The item is queued by copy, not by\n * reference.  This function must not be called from an interrupt service\n * routine.  See xQueueSendFromISR () for an alternative which may be used\n * in an ISR.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param xTicksToWait The maximum amount of time the task should block\n * waiting for space to become available on the queue, should it already\n * be full.  The call will return immediately if this is set to 0 and the queue\n * is full.  The  time is defined in tick periods so the constant\n * portTICK_PERIOD_MS should be used to convert to real time if this is required.\n *\n * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n } xMessage;\n\n uint32_t ulVar = 10UL;\n\n void vATask( void *pvParameters )\n {\n QueueHandle_t xQueue1, xQueue2;\n struct AMessage *pxMessage;\n\n\t// Create a queue capable of containing 10 uint32_t values.\n\txQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );\n\n\t// Create a queue capable of containing 10 pointers to AMessage structures.\n\t// These should be passed by pointer as they contain a lot of data.\n\txQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\n\n\t// ...\n\n\tif( xQueue1 != 0 )\n\t{\n\t\t// Send an uint32_t.  Wait for 10 ticks for space to become\n\t\t// available if necessary.\n\t\tif( xQueueSendToBack( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )\n\t\t{\n\t\t\t// Failed to post the message, even after 10 ticks.\n\t\t}\n\t}\n\n\tif( xQueue2 != 0 )\n\t{\n\t\t// Send a pointer to a struct AMessage object.  Don't block if the\n\t\t// queue is already full.\n\t\tpxMessage = & xMessage;\n\t\txQueueSendToBack( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );\n\t}\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueueSend xQueueSend\n * \\ingroup QueueManagement\n */\n#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueSend(\n\t\t\t\t\t\t\t  QueueHandle_t xQueue,\n\t\t\t\t\t\t\t  const void * pvItemToQueue,\n\t\t\t\t\t\t\t  TickType_t xTicksToWait\n\t\t\t\t\t\t );\n * </pre>\n *\n * This is a macro that calls xQueueGenericSend().  It is included for\n * backward compatibility with versions of FreeRTOS.org that did not\n * include the xQueueSendToFront() and xQueueSendToBack() macros.  It is\n * equivalent to xQueueSendToBack().\n *\n * Post an item on a queue.  The item is queued by copy, not by reference.\n * This function must not be called from an interrupt service routine.\n * See xQueueSendFromISR () for an alternative which may be used in an ISR.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param xTicksToWait The maximum amount of time the task should block\n * waiting for space to become available on the queue, should it already\n * be full.  The call will return immediately if this is set to 0 and the\n * queue is full.  The time is defined in tick periods so the constant\n * portTICK_PERIOD_MS should be used to convert to real time if this is required.\n *\n * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n } xMessage;\n\n uint32_t ulVar = 10UL;\n\n void vATask( void *pvParameters )\n {\n QueueHandle_t xQueue1, xQueue2;\n struct AMessage *pxMessage;\n\n\t// Create a queue capable of containing 10 uint32_t values.\n\txQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );\n\n\t// Create a queue capable of containing 10 pointers to AMessage structures.\n\t// These should be passed by pointer as they contain a lot of data.\n\txQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\n\n\t// ...\n\n\tif( xQueue1 != 0 )\n\t{\n\t\t// Send an uint32_t.  Wait for 10 ticks for space to become\n\t\t// available if necessary.\n\t\tif( xQueueSend( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )\n\t\t{\n\t\t\t// Failed to post the message, even after 10 ticks.\n\t\t}\n\t}\n\n\tif( xQueue2 != 0 )\n\t{\n\t\t// Send a pointer to a struct AMessage object.  Don't block if the\n\t\t// queue is already full.\n\t\tpxMessage = & xMessage;\n\t\txQueueSend( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );\n\t}\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueueSend xQueueSend\n * \\ingroup QueueManagement\n */\n#define xQueueSend( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueOverwrite(\n\t\t\t\t\t\t\t  QueueHandle_t xQueue,\n\t\t\t\t\t\t\t  const void * pvItemToQueue\n\t\t\t\t\t\t );\n * </pre>\n *\n * Only for use with queues that have a length of one - so the queue is either\n * empty or full.\n *\n * Post an item on a queue.  If the queue is already full then overwrite the\n * value held in the queue.  The item is queued by copy, not by reference.\n *\n * This function must not be called from an interrupt service routine.\n * See xQueueOverwriteFromISR () for an alternative which may be used in an ISR.\n *\n * @param xQueue The handle of the queue to which the data is being sent.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @return xQueueOverwrite() is a macro that calls xQueueGenericSend(), and\n * therefore has the same return values as xQueueSendToFront().  However, pdPASS\n * is the only value that can be returned because xQueueOverwrite() will write\n * to the queue even when the queue is already full.\n *\n * Example usage:\n   <pre>\n\n void vFunction( void *pvParameters )\n {\n QueueHandle_t xQueue;\n uint32_t ulVarToSend, ulValReceived;\n\n\t// Create a queue to hold one uint32_t value.  It is strongly\n\t// recommended *not* to use xQueueOverwrite() on queues that can\n\t// contain more than one value, and doing so will trigger an assertion\n\t// if configASSERT() is defined.\n\txQueue = xQueueCreate( 1, sizeof( uint32_t ) );\n\n\t// Write the value 10 to the queue using xQueueOverwrite().\n\tulVarToSend = 10;\n\txQueueOverwrite( xQueue, &ulVarToSend );\n\n\t// Peeking the queue should now return 10, but leave the value 10 in\n\t// the queue.  A block time of zero is used as it is known that the\n\t// queue holds a value.\n\tulValReceived = 0;\n\txQueuePeek( xQueue, &ulValReceived, 0 );\n\n\tif( ulValReceived != 10 )\n\t{\n\t\t// Error unless the item was removed by a different task.\n\t}\n\n\t// The queue is still full.  Use xQueueOverwrite() to overwrite the\n\t// value held in the queue with 100.\n\tulVarToSend = 100;\n\txQueueOverwrite( xQueue, &ulVarToSend );\n\n\t// This time read from the queue, leaving the queue empty once more.\n\t// A block time of 0 is used again.\n\txQueueReceive( xQueue, &ulValReceived, 0 );\n\n\t// The value read should be the last value written, even though the\n\t// queue was already full when the value was written.\n\tif( ulValReceived != 100 )\n\t{\n\t\t// Error!\n\t}\n\n\t// ...\n}\n </pre>\n * \\defgroup xQueueOverwrite xQueueOverwrite\n * \\ingroup QueueManagement\n */\n#define xQueueOverwrite( xQueue, pvItemToQueue ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), 0, queueOVERWRITE )\n\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueGenericSend(\n\t\t\t\t\t\t\t\t\tQueueHandle_t xQueue,\n\t\t\t\t\t\t\t\t\tconst void * pvItemToQueue,\n\t\t\t\t\t\t\t\t\tTickType_t xTicksToWait\n\t\t\t\t\t\t\t\t\tBaseType_t xCopyPosition\n\t\t\t\t\t\t\t\t);\n * </pre>\n *\n * It is preferred that the macros xQueueSend(), xQueueSendToFront() and\n * xQueueSendToBack() are used in place of calling this function directly.\n *\n * Post an item on a queue.  The item is queued by copy, not by reference.\n * This function must not be called from an interrupt service routine.\n * See xQueueSendFromISR () for an alternative which may be used in an ISR.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param xTicksToWait The maximum amount of time the task should block\n * waiting for space to become available on the queue, should it already\n * be full.  The call will return immediately if this is set to 0 and the\n * queue is full.  The time is defined in tick periods so the constant\n * portTICK_PERIOD_MS should be used to convert to real time if this is required.\n *\n * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the\n * item at the back of the queue, or queueSEND_TO_FRONT to place the item\n * at the front of the queue (for high priority messages).\n *\n * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n } xMessage;\n\n uint32_t ulVar = 10UL;\n\n void vATask( void *pvParameters )\n {\n QueueHandle_t xQueue1, xQueue2;\n struct AMessage *pxMessage;\n\n\t// Create a queue capable of containing 10 uint32_t values.\n\txQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );\n\n\t// Create a queue capable of containing 10 pointers to AMessage structures.\n\t// These should be passed by pointer as they contain a lot of data.\n\txQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\n\n\t// ...\n\n\tif( xQueue1 != 0 )\n\t{\n\t\t// Send an uint32_t.  Wait for 10 ticks for space to become\n\t\t// available if necessary.\n\t\tif( xQueueGenericSend( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10, queueSEND_TO_BACK ) != pdPASS )\n\t\t{\n\t\t\t// Failed to post the message, even after 10 ticks.\n\t\t}\n\t}\n\n\tif( xQueue2 != 0 )\n\t{\n\t\t// Send a pointer to a struct AMessage object.  Don't block if the\n\t\t// queue is already full.\n\t\tpxMessage = & xMessage;\n\t\txQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0, queueSEND_TO_BACK );\n\t}\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueueSend xQueueSend\n * \\ingroup QueueManagement\n */\nBaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueuePeek(\n\t\t\t\t\t\t\t QueueHandle_t xQueue,\n\t\t\t\t\t\t\t void * const pvBuffer,\n\t\t\t\t\t\t\t TickType_t xTicksToWait\n\t\t\t\t\t\t );</pre>\n *\n * Receive an item from a queue without removing the item from the queue.\n * The item is received by copy so a buffer of adequate size must be\n * provided.  The number of bytes copied into the buffer was defined when\n * the queue was created.\n *\n * Successfully received items remain on the queue so will be returned again\n * by the next call, or a call to xQueueReceive().\n *\n * This macro must not be used in an interrupt service routine.  See\n * xQueuePeekFromISR() for an alternative that can be called from an interrupt\n * service routine.\n *\n * @param xQueue The handle to the queue from which the item is to be\n * received.\n *\n * @param pvBuffer Pointer to the buffer into which the received item will\n * be copied.\n *\n * @param xTicksToWait The maximum amount of time the task should block\n * waiting for an item to receive should the queue be empty at the time\n * of the call.\t The time is defined in tick periods so the constant\n * portTICK_PERIOD_MS should be used to convert to real time if this is required.\n * xQueuePeek() will return immediately if xTicksToWait is 0 and the queue\n * is empty.\n *\n * @return pdTRUE if an item was successfully received from the queue,\n * otherwise pdFALSE.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n } xMessage;\n\n QueueHandle_t xQueue;\n\n // Task to create a queue and post a value.\n void vATask( void *pvParameters )\n {\n struct AMessage *pxMessage;\n\n\t// Create a queue capable of containing 10 pointers to AMessage structures.\n\t// These should be passed by pointer as they contain a lot of data.\n\txQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\n\tif( xQueue == 0 )\n\t{\n\t\t// Failed to create the queue.\n\t}\n\n\t// ...\n\n\t// Send a pointer to a struct AMessage object.  Don't block if the\n\t// queue is already full.\n\tpxMessage = & xMessage;\n\txQueueSend( xQueue, ( void * ) &pxMessage, ( TickType_t ) 0 );\n\n\t// ... Rest of task code.\n }\n\n // Task to peek the data from the queue.\n void vADifferentTask( void *pvParameters )\n {\n struct AMessage *pxRxedMessage;\n\n\tif( xQueue != 0 )\n\t{\n\t\t// Peek a message on the created queue.  Block for 10 ticks if a\n\t\t// message is not immediately available.\n\t\tif( xQueuePeek( xQueue, &( pxRxedMessage ), ( TickType_t ) 10 ) )\n\t\t{\n\t\t\t// pcRxedMessage now points to the struct AMessage variable posted\n\t\t\t// by vATask, but the item still remains on the queue.\n\t\t}\n\t}\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueuePeek xQueuePeek\n * \\ingroup QueueManagement\n */\nBaseType_t xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueuePeekFromISR(\n\t\t\t\t\t\t\t\t\tQueueHandle_t xQueue,\n\t\t\t\t\t\t\t\t\tvoid *pvBuffer,\n\t\t\t\t\t\t\t\t);</pre>\n *\n * A version of xQueuePeek() that can be called from an interrupt service\n * routine (ISR).\n *\n * Receive an item from a queue without removing the item from the queue.\n * The item is received by copy so a buffer of adequate size must be\n * provided.  The number of bytes copied into the buffer was defined when\n * the queue was created.\n *\n * Successfully received items remain on the queue so will be returned again\n * by the next call, or a call to xQueueReceive().\n *\n * @param xQueue The handle to the queue from which the item is to be\n * received.\n *\n * @param pvBuffer Pointer to the buffer into which the received item will\n * be copied.\n *\n * @return pdTRUE if an item was successfully received from the queue,\n * otherwise pdFALSE.\n *\n * \\defgroup xQueuePeekFromISR xQueuePeekFromISR\n * \\ingroup QueueManagement\n */\nBaseType_t xQueuePeekFromISR( QueueHandle_t xQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueReceive(\n\t\t\t\t\t\t\t\t QueueHandle_t xQueue,\n\t\t\t\t\t\t\t\t void *pvBuffer,\n\t\t\t\t\t\t\t\t TickType_t xTicksToWait\n\t\t\t\t\t\t\t);</pre>\n *\n * Receive an item from a queue.  The item is received by copy so a buffer of\n * adequate size must be provided.  The number of bytes copied into the buffer\n * was defined when the queue was created.\n *\n * Successfully received items are removed from the queue.\n *\n * This function must not be used in an interrupt service routine.  See\n * xQueueReceiveFromISR for an alternative that can.\n *\n * @param xQueue The handle to the queue from which the item is to be\n * received.\n *\n * @param pvBuffer Pointer to the buffer into which the received item will\n * be copied.\n *\n * @param xTicksToWait The maximum amount of time the task should block\n * waiting for an item to receive should the queue be empty at the time\n * of the call.\t xQueueReceive() will return immediately if xTicksToWait\n * is zero and the queue is empty.  The time is defined in tick periods so the\n * constant portTICK_PERIOD_MS should be used to convert to real time if this is\n * required.\n *\n * @return pdTRUE if an item was successfully received from the queue,\n * otherwise pdFALSE.\n *\n * Example usage:\n   <pre>\n struct AMessage\n {\n\tchar ucMessageID;\n\tchar ucData[ 20 ];\n } xMessage;\n\n QueueHandle_t xQueue;\n\n // Task to create a queue and post a value.\n void vATask( void *pvParameters )\n {\n struct AMessage *pxMessage;\n\n\t// Create a queue capable of containing 10 pointers to AMessage structures.\n\t// These should be passed by pointer as they contain a lot of data.\n\txQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\n\tif( xQueue == 0 )\n\t{\n\t\t// Failed to create the queue.\n\t}\n\n\t// ...\n\n\t// Send a pointer to a struct AMessage object.  Don't block if the\n\t// queue is already full.\n\tpxMessage = & xMessage;\n\txQueueSend( xQueue, ( void * ) &pxMessage, ( TickType_t ) 0 );\n\n\t// ... Rest of task code.\n }\n\n // Task to receive from the queue.\n void vADifferentTask( void *pvParameters )\n {\n struct AMessage *pxRxedMessage;\n\n\tif( xQueue != 0 )\n\t{\n\t\t// Receive a message on the created queue.  Block for 10 ticks if a\n\t\t// message is not immediately available.\n\t\tif( xQueueReceive( xQueue, &( pxRxedMessage ), ( TickType_t ) 10 ) )\n\t\t{\n\t\t\t// pcRxedMessage now points to the struct AMessage variable posted\n\t\t\t// by vATask.\n\t\t}\n\t}\n\n\t// ... Rest of task code.\n }\n </pre>\n * \\defgroup xQueueReceive xQueueReceive\n * \\ingroup QueueManagement\n */\nBaseType_t xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue );</pre>\n *\n * Return the number of messages stored in a queue.\n *\n * @param xQueue A handle to the queue being queried.\n *\n * @return The number of messages available in the queue.\n *\n * \\defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting\n * \\ingroup QueueManagement\n */\nUBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue );</pre>\n *\n * Return the number of free spaces available in a queue.  This is equal to the\n * number of items that can be sent to the queue before the queue becomes full\n * if no items are removed.\n *\n * @param xQueue A handle to the queue being queried.\n *\n * @return The number of spaces available in the queue.\n *\n * \\defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting\n * \\ingroup QueueManagement\n */\nUBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>void vQueueDelete( QueueHandle_t xQueue );</pre>\n *\n * Delete a queue - freeing all the memory allocated for storing of items\n * placed on the queue.\n *\n * @param xQueue A handle to the queue to be deleted.\n *\n * \\defgroup vQueueDelete vQueueDelete\n * \\ingroup QueueManagement\n */\nvoid vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueSendToFrontFromISR(\n\t\t\t\t\t\t\t\t\t\t QueueHandle_t xQueue,\n\t\t\t\t\t\t\t\t\t\t const void *pvItemToQueue,\n\t\t\t\t\t\t\t\t\t\t BaseType_t *pxHigherPriorityTaskWoken\n\t\t\t\t\t\t\t\t\t  );\n </pre>\n *\n * This is a macro that calls xQueueGenericSendFromISR().\n *\n * Post an item to the front of a queue.  It is safe to use this macro from\n * within an interrupt service routine.\n *\n * Items are queued by copy not reference so it is preferable to only\n * queue small items, especially when called from an ISR.  In most cases\n * it would be preferable to store a pointer to the item being queued.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param pxHigherPriorityTaskWoken xQueueSendToFrontFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task\n * to unblock, and the unblocked task has a priority higher than the currently\n * running task.  If xQueueSendToFromFromISR() sets this value to pdTRUE then\n * a context switch should be requested before the interrupt is exited.\n *\n * @return pdTRUE if the data was successfully sent to the queue, otherwise\n * errQUEUE_FULL.\n *\n * Example usage for buffered IO (where the ISR can obtain more than one value\n * per call):\n   <pre>\n void vBufferISR( void )\n {\n char cIn;\n BaseType_t xHigherPrioritTaskWoken;\n\n\t// We have not woken a task at the start of the ISR.\n\txHigherPriorityTaskWoken = pdFALSE;\n\n\t// Loop until the buffer is empty.\n\tdo\n\t{\n\t\t// Obtain a byte from the buffer.\n\t\tcIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\n\n\t\t// Post the byte.\n\t\txQueueSendToFrontFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\n\n\t} while( portINPUT_BYTE( BUFFER_COUNT ) );\n\n\t// Now the buffer is empty we can switch context if necessary.\n\tif( xHigherPriorityTaskWoken )\n\t{\n\t\ttaskYIELD ();\n\t}\n }\n </pre>\n *\n * \\defgroup xQueueSendFromISR xQueueSendFromISR\n * \\ingroup QueueManagement\n */\n#define xQueueSendToFrontFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_FRONT )\n\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueSendToBackFromISR(\n\t\t\t\t\t\t\t\t\t\t QueueHandle_t xQueue,\n\t\t\t\t\t\t\t\t\t\t const void *pvItemToQueue,\n\t\t\t\t\t\t\t\t\t\t BaseType_t *pxHigherPriorityTaskWoken\n\t\t\t\t\t\t\t\t\t  );\n </pre>\n *\n * This is a macro that calls xQueueGenericSendFromISR().\n *\n * Post an item to the back of a queue.  It is safe to use this macro from\n * within an interrupt service routine.\n *\n * Items are queued by copy not reference so it is preferable to only\n * queue small items, especially when called from an ISR.  In most cases\n * it would be preferable to store a pointer to the item being queued.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param pxHigherPriorityTaskWoken xQueueSendToBackFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task\n * to unblock, and the unblocked task has a priority higher than the currently\n * running task.  If xQueueSendToBackFromISR() sets this value to pdTRUE then\n * a context switch should be requested before the interrupt is exited.\n *\n * @return pdTRUE if the data was successfully sent to the queue, otherwise\n * errQUEUE_FULL.\n *\n * Example usage for buffered IO (where the ISR can obtain more than one value\n * per call):\n   <pre>\n void vBufferISR( void )\n {\n char cIn;\n BaseType_t xHigherPriorityTaskWoken;\n\n\t// We have not woken a task at the start of the ISR.\n\txHigherPriorityTaskWoken = pdFALSE;\n\n\t// Loop until the buffer is empty.\n\tdo\n\t{\n\t\t// Obtain a byte from the buffer.\n\t\tcIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\n\n\t\t// Post the byte.\n\t\txQueueSendToBackFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\n\n\t} while( portINPUT_BYTE( BUFFER_COUNT ) );\n\n\t// Now the buffer is empty we can switch context if necessary.\n\tif( xHigherPriorityTaskWoken )\n\t{\n\t\ttaskYIELD ();\n\t}\n }\n </pre>\n *\n * \\defgroup xQueueSendFromISR xQueueSendFromISR\n * \\ingroup QueueManagement\n */\n#define xQueueSendToBackFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueOverwriteFromISR(\n\t\t\t\t\t\t\t  QueueHandle_t xQueue,\n\t\t\t\t\t\t\t  const void * pvItemToQueue,\n\t\t\t\t\t\t\t  BaseType_t *pxHigherPriorityTaskWoken\n\t\t\t\t\t\t );\n * </pre>\n *\n * A version of xQueueOverwrite() that can be used in an interrupt service\n * routine (ISR).\n *\n * Only for use with queues that can hold a single item - so the queue is either\n * empty or full.\n *\n * Post an item on a queue.  If the queue is already full then overwrite the\n * value held in the queue.  The item is queued by copy, not by reference.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param pxHigherPriorityTaskWoken xQueueOverwriteFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task\n * to unblock, and the unblocked task has a priority higher than the currently\n * running task.  If xQueueOverwriteFromISR() sets this value to pdTRUE then\n * a context switch should be requested before the interrupt is exited.\n *\n * @return xQueueOverwriteFromISR() is a macro that calls\n * xQueueGenericSendFromISR(), and therefore has the same return values as\n * xQueueSendToFrontFromISR().  However, pdPASS is the only value that can be\n * returned because xQueueOverwriteFromISR() will write to the queue even when\n * the queue is already full.\n *\n * Example usage:\n   <pre>\n\n QueueHandle_t xQueue;\n\n void vFunction( void *pvParameters )\n {\n \t// Create a queue to hold one uint32_t value.  It is strongly\n\t// recommended *not* to use xQueueOverwriteFromISR() on queues that can\n\t// contain more than one value, and doing so will trigger an assertion\n\t// if configASSERT() is defined.\n\txQueue = xQueueCreate( 1, sizeof( uint32_t ) );\n}\n\nvoid vAnInterruptHandler( void )\n{\n// xHigherPriorityTaskWoken must be set to pdFALSE before it is used.\nBaseType_t xHigherPriorityTaskWoken = pdFALSE;\nuint32_t ulVarToSend, ulValReceived;\n\n\t// Write the value 10 to the queue using xQueueOverwriteFromISR().\n\tulVarToSend = 10;\n\txQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );\n\n\t// The queue is full, but calling xQueueOverwriteFromISR() again will still\n\t// pass because the value held in the queue will be overwritten with the\n\t// new value.\n\tulVarToSend = 100;\n\txQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );\n\n\t// Reading from the queue will now return 100.\n\n\t// ...\n\n\tif( xHigherPrioritytaskWoken == pdTRUE )\n\t{\n\t\t// Writing to the queue caused a task to unblock and the unblocked task\n\t\t// has a priority higher than or equal to the priority of the currently\n\t\t// executing task (the task this interrupt interrupted).  Perform a context\n\t\t// switch so this interrupt returns directly to the unblocked task.\n\t\tportYIELD_FROM_ISR(); // or portEND_SWITCHING_ISR() depending on the port.\n\t}\n}\n </pre>\n * \\defgroup xQueueOverwriteFromISR xQueueOverwriteFromISR\n * \\ingroup QueueManagement\n */\n#define xQueueOverwriteFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE )\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueSendFromISR(\n\t\t\t\t\t\t\t\t\t QueueHandle_t xQueue,\n\t\t\t\t\t\t\t\t\t const void *pvItemToQueue,\n\t\t\t\t\t\t\t\t\t BaseType_t *pxHigherPriorityTaskWoken\n\t\t\t\t\t\t\t\t);\n </pre>\n *\n * This is a macro that calls xQueueGenericSendFromISR().  It is included\n * for backward compatibility with versions of FreeRTOS.org that did not\n * include the xQueueSendToBackFromISR() and xQueueSendToFrontFromISR()\n * macros.\n *\n * Post an item to the back of a queue.  It is safe to use this function from\n * within an interrupt service routine.\n *\n * Items are queued by copy not reference so it is preferable to only\n * queue small items, especially when called from an ISR.  In most cases\n * it would be preferable to store a pointer to the item being queued.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param pxHigherPriorityTaskWoken xQueueSendFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task\n * to unblock, and the unblocked task has a priority higher than the currently\n * running task.  If xQueueSendFromISR() sets this value to pdTRUE then\n * a context switch should be requested before the interrupt is exited.\n *\n * @return pdTRUE if the data was successfully sent to the queue, otherwise\n * errQUEUE_FULL.\n *\n * Example usage for buffered IO (where the ISR can obtain more than one value\n * per call):\n   <pre>\n void vBufferISR( void )\n {\n char cIn;\n BaseType_t xHigherPriorityTaskWoken;\n\n\t// We have not woken a task at the start of the ISR.\n\txHigherPriorityTaskWoken = pdFALSE;\n\n\t// Loop until the buffer is empty.\n\tdo\n\t{\n\t\t// Obtain a byte from the buffer.\n\t\tcIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\n\n\t\t// Post the byte.\n\t\txQueueSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\n\n\t} while( portINPUT_BYTE( BUFFER_COUNT ) );\n\n\t// Now the buffer is empty we can switch context if necessary.\n\tif( xHigherPriorityTaskWoken )\n\t{\n\t\t// Actual macro used here is port specific.\n\t\tportYIELD_FROM_ISR ();\n\t}\n }\n </pre>\n *\n * \\defgroup xQueueSendFromISR xQueueSendFromISR\n * \\ingroup QueueManagement\n */\n#define xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueGenericSendFromISR(\n\t\t\t\t\t\t\t\t\t\t   QueueHandle_t\t\txQueue,\n\t\t\t\t\t\t\t\t\t\t   const\tvoid\t*pvItemToQueue,\n\t\t\t\t\t\t\t\t\t\t   BaseType_t\t*pxHigherPriorityTaskWoken,\n\t\t\t\t\t\t\t\t\t\t   BaseType_t\txCopyPosition\n\t\t\t\t\t\t\t\t\t   );\n </pre>\n *\n * It is preferred that the macros xQueueSendFromISR(),\n * xQueueSendToFrontFromISR() and xQueueSendToBackFromISR() be used in place\n * of calling this function directly.  xQueueGiveFromISR() is an\n * equivalent for use by semaphores that don't actually copy any data.\n *\n * Post an item on a queue.  It is safe to use this function from within an\n * interrupt service routine.\n *\n * Items are queued by copy not reference so it is preferable to only\n * queue small items, especially when called from an ISR.  In most cases\n * it would be preferable to store a pointer to the item being queued.\n *\n * @param xQueue The handle to the queue on which the item is to be posted.\n *\n * @param pvItemToQueue A pointer to the item that is to be placed on the\n * queue.  The size of the items the queue will hold was defined when the\n * queue was created, so this many bytes will be copied from pvItemToQueue\n * into the queue storage area.\n *\n * @param pxHigherPriorityTaskWoken xQueueGenericSendFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task\n * to unblock, and the unblocked task has a priority higher than the currently\n * running task.  If xQueueGenericSendFromISR() sets this value to pdTRUE then\n * a context switch should be requested before the interrupt is exited.\n *\n * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the\n * item at the back of the queue, or queueSEND_TO_FRONT to place the item\n * at the front of the queue (for high priority messages).\n *\n * @return pdTRUE if the data was successfully sent to the queue, otherwise\n * errQUEUE_FULL.\n *\n * Example usage for buffered IO (where the ISR can obtain more than one value\n * per call):\n   <pre>\n void vBufferISR( void )\n {\n char cIn;\n BaseType_t xHigherPriorityTaskWokenByPost;\n\n\t// We have not woken a task at the start of the ISR.\n\txHigherPriorityTaskWokenByPost = pdFALSE;\n\n\t// Loop until the buffer is empty.\n\tdo\n\t{\n\t\t// Obtain a byte from the buffer.\n\t\tcIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\n\n\t\t// Post each byte.\n\t\txQueueGenericSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWokenByPost, queueSEND_TO_BACK );\n\n\t} while( portINPUT_BYTE( BUFFER_COUNT ) );\n\n\t// Now the buffer is empty we can switch context if necessary.  Note that the\n\t// name of the yield function required is port specific.\n\tif( xHigherPriorityTaskWokenByPost )\n\t{\n\t\tportYIELD_FROM_ISR();\n\t}\n }\n </pre>\n *\n * \\defgroup xQueueSendFromISR xQueueSendFromISR\n * \\ingroup QueueManagement\n */\nBaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;\nBaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n/**\n * queue. h\n * <pre>\n BaseType_t xQueueReceiveFromISR(\n\t\t\t\t\t\t\t\t\t   QueueHandle_t\txQueue,\n\t\t\t\t\t\t\t\t\t   void\t*pvBuffer,\n\t\t\t\t\t\t\t\t\t   BaseType_t *pxTaskWoken\n\t\t\t\t\t\t\t\t   );\n * </pre>\n *\n * Receive an item from a queue.  It is safe to use this function from within an\n * interrupt service routine.\n *\n * @param xQueue The handle to the queue from which the item is to be\n * received.\n *\n * @param pvBuffer Pointer to the buffer into which the received item will\n * be copied.\n *\n * @param pxTaskWoken A task may be blocked waiting for space to become\n * available on the queue.  If xQueueReceiveFromISR causes such a task to\n * unblock *pxTaskWoken will get set to pdTRUE, otherwise *pxTaskWoken will\n * remain unchanged.\n *\n * @return pdTRUE if an item was successfully received from the queue,\n * otherwise pdFALSE.\n *\n * Example usage:\n   <pre>\n\n QueueHandle_t xQueue;\n\n // Function to create a queue and post some values.\n void vAFunction( void *pvParameters )\n {\n char cValueToPost;\n const TickType_t xTicksToWait = ( TickType_t )0xff;\n\n\t// Create a queue capable of containing 10 characters.\n\txQueue = xQueueCreate( 10, sizeof( char ) );\n\tif( xQueue == 0 )\n\t{\n\t\t// Failed to create the queue.\n\t}\n\n\t// ...\n\n\t// Post some characters that will be used within an ISR.  If the queue\n\t// is full then this task will block for xTicksToWait ticks.\n\tcValueToPost = 'a';\n\txQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );\n\tcValueToPost = 'b';\n\txQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );\n\n\t// ... keep posting characters ... this task may block when the queue\n\t// becomes full.\n\n\tcValueToPost = 'c';\n\txQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );\n }\n\n // ISR that outputs all the characters received on the queue.\n void vISR_Routine( void )\n {\n BaseType_t xTaskWokenByReceive = pdFALSE;\n char cRxedChar;\n\n\twhile( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) )\n\t{\n\t\t// A character was received.  Output the character now.\n\t\tvOutputCharacter( cRxedChar );\n\n\t\t// If removing the character from the queue woke the task that was\n\t\t// posting onto the queue cTaskWokenByReceive will have been set to\n\t\t// pdTRUE.  No matter how many times this loop iterates only one\n\t\t// task will be woken.\n\t}\n\n\tif( cTaskWokenByPost != ( char ) pdFALSE;\n\t{\n\t\ttaskYIELD ();\n\t}\n }\n </pre>\n * \\defgroup xQueueReceiveFromISR xQueueReceiveFromISR\n * \\ingroup QueueManagement\n */\nBaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n/*\n * Utilities to query queues that are safe to use from an ISR.  These utilities\n * should be used only from witin an ISR, or within a critical section.\n */\nBaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\nBaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\nUBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\n\n/*\n * The functions defined above are for passing data to and from tasks.  The\n * functions below are the equivalents for passing data to and from\n * co-routines.\n *\n * These functions are called from the co-routine macro implementation and\n * should not be called directly from application code.  Instead use the macro\n * wrappers defined within croutine.h.\n */\nBaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken );\nBaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken );\nBaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait );\nBaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait );\n\n/*\n * For internal use only.  Use xSemaphoreCreateMutex(),\n * xSemaphoreCreateCounting() or xSemaphoreGetMutexHolder() instead of calling\n * these functions directly.\n */\nQueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;\nQueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;\nQueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;\nQueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;\nBaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\nTaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;\nTaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;\n\n/*\n * For internal use only.  Use xSemaphoreTakeMutexRecursive() or\n * xSemaphoreGiveMutexRecursive() instead of calling these functions directly.\n */\nBaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\nBaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION;\n\n/*\n * Reset a queue back to its original empty state.  The return value is now\n * obsolete and is always set to pdPASS.\n */\n#define xQueueReset( xQueue ) xQueueGenericReset( xQueue, pdFALSE )\n\n/*\n * The registry is provided as a means for kernel aware debuggers to\n * locate queues, semaphores and mutexes.  Call vQueueAddToRegistry() add\n * a queue, semaphore or mutex handle to the registry if you want the handle\n * to be available to a kernel aware debugger.  If you are not using a kernel\n * aware debugger then this function can be ignored.\n *\n * configQUEUE_REGISTRY_SIZE defines the maximum number of handles the\n * registry can hold.  configQUEUE_REGISTRY_SIZE must be greater than 0\n * within FreeRTOSConfig.h for the registry to be available.  Its value\n * does not effect the number of queues, semaphores and mutexes that can be\n * created - just the number that the registry can hold.\n *\n * @param xQueue The handle of the queue being added to the registry.  This\n * is the handle returned by a call to xQueueCreate().  Semaphore and mutex\n * handles can also be passed in here.\n *\n * @param pcName The name to be associated with the handle.  This is the\n * name that the kernel aware debugger will display.  The queue registry only\n * stores a pointer to the string - so the string must be persistent (global or\n * preferably in ROM/Flash), not on the stack.\n */\n#if( configQUEUE_REGISTRY_SIZE > 0 )\n\tvoid vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcQueueName ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n#endif\n\n/*\n * The registry is provided as a means for kernel aware debuggers to\n * locate queues, semaphores and mutexes.  Call vQueueAddToRegistry() add\n * a queue, semaphore or mutex handle to the registry if you want the handle\n * to be available to a kernel aware debugger, and vQueueUnregisterQueue() to\n * remove the queue, semaphore or mutex from the register.  If you are not using\n * a kernel aware debugger then this function can be ignored.\n *\n * @param xQueue The handle of the queue being removed from the registry.\n */\n#if( configQUEUE_REGISTRY_SIZE > 0 )\n\tvoid vQueueUnregisterQueue( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\n#endif\n\n/*\n * The queue registry is provided as a means for kernel aware debuggers to\n * locate queues, semaphores and mutexes.  Call pcQueueGetName() to look\n * up and return the name of a queue in the queue registry from the queue's\n * handle.\n *\n * @param xQueue The handle of the queue the name of which will be returned.\n * @return If the queue is in the registry then a pointer to the name of the\n * queue is returned.  If the queue is not in the registry then NULL is\n * returned.\n */\n#if( configQUEUE_REGISTRY_SIZE > 0 )\n\tconst char *pcQueueGetName( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n#endif\n\n/*\n * Generic version of the function used to creaet a queue using dynamic memory\n * allocation.  This is called by other functions and macros that create other\n * RTOS objects that use the queue structure as their base.\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\tQueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;\n#endif\n\n/*\n * Generic version of the function used to creaet a queue using dynamic memory\n * allocation.  This is called by other functions and macros that create other\n * RTOS objects that use the queue structure as their base.\n */\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\tQueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;\n#endif\n\n/*\n * Queue sets provide a mechanism to allow a task to block (pend) on a read\n * operation from multiple queues or semaphores simultaneously.\n *\n * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this\n * function.\n *\n * A queue set must be explicitly created using a call to xQueueCreateSet()\n * before it can be used.  Once created, standard FreeRTOS queues and semaphores\n * can be added to the set using calls to xQueueAddToSet().\n * xQueueSelectFromSet() is then used to determine which, if any, of the queues\n * or semaphores contained in the set is in a state where a queue read or\n * semaphore take operation would be successful.\n *\n * Note 1:  See the documentation on http://wwwFreeRTOS.org/RTOS-queue-sets.html\n * for reasons why queue sets are very rarely needed in practice as there are\n * simpler methods of blocking on multiple objects.\n *\n * Note 2:  Blocking on a queue set that contains a mutex will not cause the\n * mutex holder to inherit the priority of the blocked task.\n *\n * Note 3:  An additional 4 bytes of RAM is required for each space in a every\n * queue added to a queue set.  Therefore counting semaphores that have a high\n * maximum count value should not be added to a queue set.\n *\n * Note 4:  A receive (in the case of a queue) or take (in the case of a\n * semaphore) operation must not be performed on a member of a queue set unless\n * a call to xQueueSelectFromSet() has first returned a handle to that set member.\n *\n * @param uxEventQueueLength Queue sets store events that occur on\n * the queues and semaphores contained in the set.  uxEventQueueLength specifies\n * the maximum number of events that can be queued at once.  To be absolutely\n * certain that events are not lost uxEventQueueLength should be set to the\n * total sum of the length of the queues added to the set, where binary\n * semaphores and mutexes have a length of 1, and counting semaphores have a\n * length set by their maximum count value.  Examples:\n *  + If a queue set is to hold a queue of length 5, another queue of length 12,\n *    and a binary semaphore, then uxEventQueueLength should be set to\n *    (5 + 12 + 1), or 18.\n *  + If a queue set is to hold three binary semaphores then uxEventQueueLength\n *    should be set to (1 + 1 + 1 ), or 3.\n *  + If a queue set is to hold a counting semaphore that has a maximum count of\n *    5, and a counting semaphore that has a maximum count of 3, then\n *    uxEventQueueLength should be set to (5 + 3), or 8.\n *\n * @return If the queue set is created successfully then a handle to the created\n * queue set is returned.  Otherwise NULL is returned.\n */\nQueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;\n\n/*\n * Adds a queue or semaphore to a queue set that was previously created by a\n * call to xQueueCreateSet().\n *\n * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this\n * function.\n *\n * Note 1:  A receive (in the case of a queue) or take (in the case of a\n * semaphore) operation must not be performed on a member of a queue set unless\n * a call to xQueueSelectFromSet() has first returned a handle to that set member.\n *\n * @param xQueueOrSemaphore The handle of the queue or semaphore being added to\n * the queue set (cast to an QueueSetMemberHandle_t type).\n *\n * @param xQueueSet The handle of the queue set to which the queue or semaphore\n * is being added.\n *\n * @return If the queue or semaphore was successfully added to the queue set\n * then pdPASS is returned.  If the queue could not be successfully added to the\n * queue set because it is already a member of a different queue set then pdFAIL\n * is returned.\n */\nBaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;\n\n/*\n * Removes a queue or semaphore from a queue set.  A queue or semaphore can only\n * be removed from a set if the queue or semaphore is empty.\n *\n * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this\n * function.\n *\n * @param xQueueOrSemaphore The handle of the queue or semaphore being removed\n * from the queue set (cast to an QueueSetMemberHandle_t type).\n *\n * @param xQueueSet The handle of the queue set in which the queue or semaphore\n * is included.\n *\n * @return If the queue or semaphore was successfully removed from the queue set\n * then pdPASS is returned.  If the queue was not in the queue set, or the\n * queue (or semaphore) was not empty, then pdFAIL is returned.\n */\nBaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;\n\n/*\n * xQueueSelectFromSet() selects from the members of a queue set a queue or\n * semaphore that either contains data (in the case of a queue) or is available\n * to take (in the case of a semaphore).  xQueueSelectFromSet() effectively\n * allows a task to block (pend) on a read operation on all the queues and\n * semaphores in a queue set simultaneously.\n *\n * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this\n * function.\n *\n * Note 1:  See the documentation on http://wwwFreeRTOS.org/RTOS-queue-sets.html\n * for reasons why queue sets are very rarely needed in practice as there are\n * simpler methods of blocking on multiple objects.\n *\n * Note 2:  Blocking on a queue set that contains a mutex will not cause the\n * mutex holder to inherit the priority of the blocked task.\n *\n * Note 3:  A receive (in the case of a queue) or take (in the case of a\n * semaphore) operation must not be performed on a member of a queue set unless\n * a call to xQueueSelectFromSet() has first returned a handle to that set member.\n *\n * @param xQueueSet The queue set on which the task will (potentially) block.\n *\n * @param xTicksToWait The maximum time, in ticks, that the calling task will\n * remain in the Blocked state (with other tasks executing) to wait for a member\n * of the queue set to be ready for a successful queue read or semaphore take\n * operation.\n *\n * @return xQueueSelectFromSet() will return the handle of a queue (cast to\n * a QueueSetMemberHandle_t type) contained in the queue set that contains data,\n * or the handle of a semaphore (cast to a QueueSetMemberHandle_t type) contained\n * in the queue set that is available, or NULL if no such queue or semaphore\n * exists before before the specified block time expires.\n */\nQueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/*\n * A version of xQueueSelectFromSet() that can be used from an ISR.\n */\nQueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;\n\n/* Not public API functions. */\nvoid vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION;\nBaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;\nvoid vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION;\nUBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\nuint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* QUEUE_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef SEMAPHORE_H\n#define SEMAPHORE_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h\" must appear in source files before \"include semphr.h\"\n#endif\n\n#include \"queue.h\"\n\ntypedef QueueHandle_t SemaphoreHandle_t;\n\n#define semBINARY_SEMAPHORE_QUEUE_LENGTH\t( ( uint8_t ) 1U )\n#define semSEMAPHORE_QUEUE_ITEM_LENGTH\t\t( ( uint8_t ) 0U )\n#define semGIVE_BLOCK_TIME\t\t\t\t\t( ( TickType_t ) 0U )\n\n\n/**\n * semphr. h\n * <pre>vSemaphoreCreateBinary( SemaphoreHandle_t xSemaphore )</pre>\n *\n * In many usage scenarios it is faster and more memory efficient to use a\n * direct to task notification in place of a binary semaphore!\n * http://www.freertos.org/RTOS-task-notifications.html\n *\n * This old vSemaphoreCreateBinary() macro is now deprecated in favour of the\n * xSemaphoreCreateBinary() function.  Note that binary semaphores created using\n * the vSemaphoreCreateBinary() macro are created in a state such that the\n * first call to 'take' the semaphore would pass, whereas binary semaphores\n * created using xSemaphoreCreateBinary() are created in a state such that the\n * the semaphore must first be 'given' before it can be 'taken'.\n *\n * <i>Macro</i> that implements a semaphore by using the existing queue mechanism.\n * The queue length is 1 as this is a binary semaphore.  The data size is 0\n * as we don't want to actually store any data - we just want to know if the\n * queue is empty or full.\n *\n * This type of semaphore can be used for pure synchronisation between tasks or\n * between an interrupt and a task.  The semaphore need not be given back once\n * obtained, so one task/interrupt can continuously 'give' the semaphore while\n * another continuously 'takes' the semaphore.  For this reason this type of\n * semaphore does not use a priority inheritance mechanism.  For an alternative\n * that does use priority inheritance see xSemaphoreCreateMutex().\n *\n * @param xSemaphore Handle to the created semaphore.  Should be of type SemaphoreHandle_t.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore = NULL;\n\n void vATask( void * pvParameters )\n {\n    // Semaphore cannot be used before a call to vSemaphoreCreateBinary ().\n    // This is a macro so pass the variable in directly.\n    vSemaphoreCreateBinary( xSemaphore );\n\n    if( xSemaphore != NULL )\n    {\n        // The semaphore was created successfully.\n        // The semaphore can now be used.\n    }\n }\n </pre>\n * \\defgroup vSemaphoreCreateBinary vSemaphoreCreateBinary\n * \\ingroup Semaphores\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t#define vSemaphoreCreateBinary( xSemaphore )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( xSemaphore ) = xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE );\t\\\n\t\t\tif( ( xSemaphore ) != NULL )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t( void ) xSemaphoreGive( ( xSemaphore ) );\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t}\n#endif\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateBinary( void )</pre>\n *\n * Creates a new binary semaphore instance, and returns a handle by which the\n * new semaphore can be referenced.\n *\n * In many usage scenarios it is faster and more memory efficient to use a\n * direct to task notification in place of a binary semaphore!\n * http://www.freertos.org/RTOS-task-notifications.html\n *\n * Internally, within the FreeRTOS implementation, binary semaphores use a block\n * of memory, in which the semaphore structure is stored.  If a binary semaphore\n * is created using xSemaphoreCreateBinary() then the required memory is\n * automatically dynamically allocated inside the xSemaphoreCreateBinary()\n * function.  (see http://www.freertos.org/a00111.html).  If a binary semaphore\n * is created using xSemaphoreCreateBinaryStatic() then the application writer\n * must provide the memory.  xSemaphoreCreateBinaryStatic() therefore allows a\n * binary semaphore to be created without using any dynamic memory allocation.\n *\n * The old vSemaphoreCreateBinary() macro is now deprecated in favour of this\n * xSemaphoreCreateBinary() function.  Note that binary semaphores created using\n * the vSemaphoreCreateBinary() macro are created in a state such that the\n * first call to 'take' the semaphore would pass, whereas binary semaphores\n * created using xSemaphoreCreateBinary() are created in a state such that the\n * the semaphore must first be 'given' before it can be 'taken'.\n *\n * This type of semaphore can be used for pure synchronisation between tasks or\n * between an interrupt and a task.  The semaphore need not be given back once\n * obtained, so one task/interrupt can continuously 'give' the semaphore while\n * another continuously 'takes' the semaphore.  For this reason this type of\n * semaphore does not use a priority inheritance mechanism.  For an alternative\n * that does use priority inheritance see xSemaphoreCreateMutex().\n *\n * @return Handle to the created semaphore, or NULL if the memory required to\n * hold the semaphore's data structures could not be allocated.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore = NULL;\n\n void vATask( void * pvParameters )\n {\n    // Semaphore cannot be used before a call to xSemaphoreCreateBinary().\n    // This is a macro so pass the variable in directly.\n    xSemaphore = xSemaphoreCreateBinary();\n\n    if( xSemaphore != NULL )\n    {\n        // The semaphore was created successfully.\n        // The semaphore can now be used.\n    }\n }\n </pre>\n * \\defgroup xSemaphoreCreateBinary xSemaphoreCreateBinary\n * \\ingroup Semaphores\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t#define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE )\n#endif\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateBinaryStatic( StaticSemaphore_t *pxSemaphoreBuffer )</pre>\n *\n * Creates a new binary semaphore instance, and returns a handle by which the\n * new semaphore can be referenced.\n *\n * NOTE: In many usage scenarios it is faster and more memory efficient to use a\n * direct to task notification in place of a binary semaphore!\n * http://www.freertos.org/RTOS-task-notifications.html\n *\n * Internally, within the FreeRTOS implementation, binary semaphores use a block\n * of memory, in which the semaphore structure is stored.  If a binary semaphore\n * is created using xSemaphoreCreateBinary() then the required memory is\n * automatically dynamically allocated inside the xSemaphoreCreateBinary()\n * function.  (see http://www.freertos.org/a00111.html).  If a binary semaphore\n * is created using xSemaphoreCreateBinaryStatic() then the application writer\n * must provide the memory.  xSemaphoreCreateBinaryStatic() therefore allows a\n * binary semaphore to be created without using any dynamic memory allocation.\n *\n * This type of semaphore can be used for pure synchronisation between tasks or\n * between an interrupt and a task.  The semaphore need not be given back once\n * obtained, so one task/interrupt can continuously 'give' the semaphore while\n * another continuously 'takes' the semaphore.  For this reason this type of\n * semaphore does not use a priority inheritance mechanism.  For an alternative\n * that does use priority inheritance see xSemaphoreCreateMutex().\n *\n * @param pxSemaphoreBuffer Must point to a variable of type StaticSemaphore_t,\n * which will then be used to hold the semaphore's data structure, removing the\n * need for the memory to be allocated dynamically.\n *\n * @return If the semaphore is created then a handle to the created semaphore is\n * returned.  If pxSemaphoreBuffer is NULL then NULL is returned.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore = NULL;\n StaticSemaphore_t xSemaphoreBuffer;\n\n void vATask( void * pvParameters )\n {\n    // Semaphore cannot be used before a call to xSemaphoreCreateBinary().\n    // The semaphore's data structures will be placed in the xSemaphoreBuffer\n    // variable, the address of which is passed into the function.  The\n    // function's parameter is not NULL, so the function will not attempt any\n    // dynamic memory allocation, and therefore the function will not return\n    // return NULL.\n    xSemaphore = xSemaphoreCreateBinary( &xSemaphoreBuffer );\n\n    // Rest of task code goes here.\n }\n </pre>\n * \\defgroup xSemaphoreCreateBinaryStatic xSemaphoreCreateBinaryStatic\n * \\ingroup Semaphores\n */\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t#define xSemaphoreCreateBinaryStatic( pxStaticSemaphore ) xQueueGenericCreateStatic( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, NULL, pxStaticSemaphore, queueQUEUE_TYPE_BINARY_SEMAPHORE )\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n/**\n * semphr. h\n * <pre>xSemaphoreTake(\n *                   SemaphoreHandle_t xSemaphore,\n *                   TickType_t xBlockTime\n *               )</pre>\n *\n * <i>Macro</i> to obtain a semaphore.  The semaphore must have previously been\n * created with a call to xSemaphoreCreateBinary(), xSemaphoreCreateMutex() or\n * xSemaphoreCreateCounting().\n *\n * @param xSemaphore A handle to the semaphore being taken - obtained when\n * the semaphore was created.\n *\n * @param xBlockTime The time in ticks to wait for the semaphore to become\n * available.  The macro portTICK_PERIOD_MS can be used to convert this to a\n * real time.  A block time of zero can be used to poll the semaphore.  A block\n * time of portMAX_DELAY can be used to block indefinitely (provided\n * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h).\n *\n * @return pdTRUE if the semaphore was obtained.  pdFALSE\n * if xBlockTime expired without the semaphore becoming available.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore = NULL;\n\n // A task that creates a semaphore.\n void vATask( void * pvParameters )\n {\n    // Create the semaphore to guard a shared resource.\n    xSemaphore = xSemaphoreCreateBinary();\n }\n\n // A task that uses the semaphore.\n void vAnotherTask( void * pvParameters )\n {\n    // ... Do other things.\n\n    if( xSemaphore != NULL )\n    {\n        // See if we can obtain the semaphore.  If the semaphore is not available\n        // wait 10 ticks to see if it becomes free.\n        if( xSemaphoreTake( xSemaphore, ( TickType_t ) 10 ) == pdTRUE )\n        {\n            // We were able to obtain the semaphore and can now access the\n            // shared resource.\n\n            // ...\n\n            // We have finished accessing the shared resource.  Release the\n            // semaphore.\n            xSemaphoreGive( xSemaphore );\n        }\n        else\n        {\n            // We could not obtain the semaphore and can therefore not access\n            // the shared resource safely.\n        }\n    }\n }\n </pre>\n * \\defgroup xSemaphoreTake xSemaphoreTake\n * \\ingroup Semaphores\n */\n#define xSemaphoreTake( xSemaphore, xBlockTime )\t\txQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) )\n\n/**\n * semphr. h\n * xSemaphoreTakeRecursive(\n *                          SemaphoreHandle_t xMutex,\n *                          TickType_t xBlockTime\n *                        )\n *\n * <i>Macro</i> to recursively obtain, or 'take', a mutex type semaphore.\n * The mutex must have previously been created using a call to\n * xSemaphoreCreateRecursiveMutex();\n *\n * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this\n * macro to be available.\n *\n * This macro must not be used on mutexes created using xSemaphoreCreateMutex().\n *\n * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex\n * doesn't become available again until the owner has called\n * xSemaphoreGiveRecursive() for each successful 'take' request.  For example,\n * if a task successfully 'takes' the same mutex 5 times then the mutex will\n * not be available to any other task until it has also  'given' the mutex back\n * exactly five times.\n *\n * @param xMutex A handle to the mutex being obtained.  This is the\n * handle returned by xSemaphoreCreateRecursiveMutex();\n *\n * @param xBlockTime The time in ticks to wait for the semaphore to become\n * available.  The macro portTICK_PERIOD_MS can be used to convert this to a\n * real time.  A block time of zero can be used to poll the semaphore.  If\n * the task already owns the semaphore then xSemaphoreTakeRecursive() will\n * return immediately no matter what the value of xBlockTime.\n *\n * @return pdTRUE if the semaphore was obtained.  pdFALSE if xBlockTime\n * expired without the semaphore becoming available.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xMutex = NULL;\n\n // A task that creates a mutex.\n void vATask( void * pvParameters )\n {\n    // Create the mutex to guard a shared resource.\n    xMutex = xSemaphoreCreateRecursiveMutex();\n }\n\n // A task that uses the mutex.\n void vAnotherTask( void * pvParameters )\n {\n    // ... Do other things.\n\n    if( xMutex != NULL )\n    {\n        // See if we can obtain the mutex.  If the mutex is not available\n        // wait 10 ticks to see if it becomes free.\n        if( xSemaphoreTakeRecursive( xSemaphore, ( TickType_t ) 10 ) == pdTRUE )\n        {\n            // We were able to obtain the mutex and can now access the\n            // shared resource.\n\n            // ...\n            // For some reason due to the nature of the code further calls to\n            // xSemaphoreTakeRecursive() are made on the same mutex.  In real\n            // code these would not be just sequential calls as this would make\n            // no sense.  Instead the calls are likely to be buried inside\n            // a more complex call structure.\n            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );\n            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );\n\n            // The mutex has now been 'taken' three times, so will not be\n            // available to another task until it has also been given back\n            // three times.  Again it is unlikely that real code would have\n            // these calls sequentially, but instead buried in a more complex\n            // call structure.  This is just for illustrative purposes.\n            xSemaphoreGiveRecursive( xMutex );\n            xSemaphoreGiveRecursive( xMutex );\n            xSemaphoreGiveRecursive( xMutex );\n\n            // Now the mutex can be taken by other tasks.\n        }\n        else\n        {\n            // We could not obtain the mutex and can therefore not access\n            // the shared resource safely.\n        }\n    }\n }\n </pre>\n * \\defgroup xSemaphoreTakeRecursive xSemaphoreTakeRecursive\n * \\ingroup Semaphores\n */\n#if( configUSE_RECURSIVE_MUTEXES == 1 )\n\t#define xSemaphoreTakeRecursive( xMutex, xBlockTime )\txQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) )\n#endif\n\n/**\n * semphr. h\n * <pre>xSemaphoreGive( SemaphoreHandle_t xSemaphore )</pre>\n *\n * <i>Macro</i> to release a semaphore.  The semaphore must have previously been\n * created with a call to xSemaphoreCreateBinary(), xSemaphoreCreateMutex() or\n * xSemaphoreCreateCounting(). and obtained using sSemaphoreTake().\n *\n * This macro must not be used from an ISR.  See xSemaphoreGiveFromISR () for\n * an alternative which can be used from an ISR.\n *\n * This macro must also not be used on semaphores created using\n * xSemaphoreCreateRecursiveMutex().\n *\n * @param xSemaphore A handle to the semaphore being released.  This is the\n * handle returned when the semaphore was created.\n *\n * @return pdTRUE if the semaphore was released.  pdFALSE if an error occurred.\n * Semaphores are implemented using queues.  An error can occur if there is\n * no space on the queue to post a message - indicating that the\n * semaphore was not first obtained correctly.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore = NULL;\n\n void vATask( void * pvParameters )\n {\n    // Create the semaphore to guard a shared resource.\n    xSemaphore = vSemaphoreCreateBinary();\n\n    if( xSemaphore != NULL )\n    {\n        if( xSemaphoreGive( xSemaphore ) != pdTRUE )\n        {\n            // We would expect this call to fail because we cannot give\n            // a semaphore without first \"taking\" it!\n        }\n\n        // Obtain the semaphore - don't block if the semaphore is not\n        // immediately available.\n        if( xSemaphoreTake( xSemaphore, ( TickType_t ) 0 ) )\n        {\n            // We now have the semaphore and can access the shared resource.\n\n            // ...\n\n            // We have finished accessing the shared resource so can free the\n            // semaphore.\n            if( xSemaphoreGive( xSemaphore ) != pdTRUE )\n            {\n                // We would not expect this call to fail because we must have\n                // obtained the semaphore to get here.\n            }\n        }\n    }\n }\n </pre>\n * \\defgroup xSemaphoreGive xSemaphoreGive\n * \\ingroup Semaphores\n */\n#define xSemaphoreGive( xSemaphore )\t\txQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK )\n\n/**\n * semphr. h\n * <pre>xSemaphoreGiveRecursive( SemaphoreHandle_t xMutex )</pre>\n *\n * <i>Macro</i> to recursively release, or 'give', a mutex type semaphore.\n * The mutex must have previously been created using a call to\n * xSemaphoreCreateRecursiveMutex();\n *\n * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this\n * macro to be available.\n *\n * This macro must not be used on mutexes created using xSemaphoreCreateMutex().\n *\n * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex\n * doesn't become available again until the owner has called\n * xSemaphoreGiveRecursive() for each successful 'take' request.  For example,\n * if a task successfully 'takes' the same mutex 5 times then the mutex will\n * not be available to any other task until it has also  'given' the mutex back\n * exactly five times.\n *\n * @param xMutex A handle to the mutex being released, or 'given'.  This is the\n * handle returned by xSemaphoreCreateMutex();\n *\n * @return pdTRUE if the semaphore was given.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xMutex = NULL;\n\n // A task that creates a mutex.\n void vATask( void * pvParameters )\n {\n    // Create the mutex to guard a shared resource.\n    xMutex = xSemaphoreCreateRecursiveMutex();\n }\n\n // A task that uses the mutex.\n void vAnotherTask( void * pvParameters )\n {\n    // ... Do other things.\n\n    if( xMutex != NULL )\n    {\n        // See if we can obtain the mutex.  If the mutex is not available\n        // wait 10 ticks to see if it becomes free.\n        if( xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 ) == pdTRUE )\n        {\n            // We were able to obtain the mutex and can now access the\n            // shared resource.\n\n            // ...\n            // For some reason due to the nature of the code further calls to\n\t\t\t// xSemaphoreTakeRecursive() are made on the same mutex.  In real\n\t\t\t// code these would not be just sequential calls as this would make\n\t\t\t// no sense.  Instead the calls are likely to be buried inside\n\t\t\t// a more complex call structure.\n            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );\n            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );\n\n            // The mutex has now been 'taken' three times, so will not be\n\t\t\t// available to another task until it has also been given back\n\t\t\t// three times.  Again it is unlikely that real code would have\n\t\t\t// these calls sequentially, it would be more likely that the calls\n\t\t\t// to xSemaphoreGiveRecursive() would be called as a call stack\n\t\t\t// unwound.  This is just for demonstrative purposes.\n            xSemaphoreGiveRecursive( xMutex );\n\t\t\txSemaphoreGiveRecursive( xMutex );\n\t\t\txSemaphoreGiveRecursive( xMutex );\n\n\t\t\t// Now the mutex can be taken by other tasks.\n        }\n        else\n        {\n            // We could not obtain the mutex and can therefore not access\n            // the shared resource safely.\n        }\n    }\n }\n </pre>\n * \\defgroup xSemaphoreGiveRecursive xSemaphoreGiveRecursive\n * \\ingroup Semaphores\n */\n#if( configUSE_RECURSIVE_MUTEXES == 1 )\n\t#define xSemaphoreGiveRecursive( xMutex )\txQueueGiveMutexRecursive( ( xMutex ) )\n#endif\n\n/**\n * semphr. h\n * <pre>\n xSemaphoreGiveFromISR(\n                          SemaphoreHandle_t xSemaphore,\n                          BaseType_t *pxHigherPriorityTaskWoken\n                      )</pre>\n *\n * <i>Macro</i> to  release a semaphore.  The semaphore must have previously been\n * created with a call to xSemaphoreCreateBinary() or xSemaphoreCreateCounting().\n *\n * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex())\n * must not be used with this macro.\n *\n * This macro can be used from an ISR.\n *\n * @param xSemaphore A handle to the semaphore being released.  This is the\n * handle returned when the semaphore was created.\n *\n * @param pxHigherPriorityTaskWoken xSemaphoreGiveFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if giving the semaphore caused a task\n * to unblock, and the unblocked task has a priority higher than the currently\n * running task.  If xSemaphoreGiveFromISR() sets this value to pdTRUE then\n * a context switch should be requested before the interrupt is exited.\n *\n * @return pdTRUE if the semaphore was successfully given, otherwise errQUEUE_FULL.\n *\n * Example usage:\n <pre>\n \\#define LONG_TIME 0xffff\n \\#define TICKS_TO_WAIT\t10\n SemaphoreHandle_t xSemaphore = NULL;\n\n // Repetitive task.\n void vATask( void * pvParameters )\n {\n    for( ;; )\n    {\n        // We want this task to run every 10 ticks of a timer.  The semaphore\n        // was created before this task was started.\n\n        // Block waiting for the semaphore to become available.\n        if( xSemaphoreTake( xSemaphore, LONG_TIME ) == pdTRUE )\n        {\n            // It is time to execute.\n\n            // ...\n\n            // We have finished our task.  Return to the top of the loop where\n            // we will block on the semaphore until it is time to execute\n            // again.  Note when using the semaphore for synchronisation with an\n\t\t\t// ISR in this manner there is no need to 'give' the semaphore back.\n        }\n    }\n }\n\n // Timer ISR\n void vTimerISR( void * pvParameters )\n {\n static uint8_t ucLocalTickCount = 0;\n static BaseType_t xHigherPriorityTaskWoken;\n\n    // A timer tick has occurred.\n\n    // ... Do other time functions.\n\n    // Is it time for vATask () to run?\n\txHigherPriorityTaskWoken = pdFALSE;\n    ucLocalTickCount++;\n    if( ucLocalTickCount >= TICKS_TO_WAIT )\n    {\n        // Unblock the task by releasing the semaphore.\n        xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );\n\n        // Reset the count so we release the semaphore again in 10 ticks time.\n        ucLocalTickCount = 0;\n    }\n\n    if( xHigherPriorityTaskWoken != pdFALSE )\n    {\n        // We can force a context switch here.  Context switching from an\n        // ISR uses port specific syntax.  Check the demo task for your port\n        // to find the syntax required.\n    }\n }\n </pre>\n * \\defgroup xSemaphoreGiveFromISR xSemaphoreGiveFromISR\n * \\ingroup Semaphores\n */\n#define xSemaphoreGiveFromISR( xSemaphore, pxHigherPriorityTaskWoken )\txQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) )\n\n/**\n * semphr. h\n * <pre>\n xSemaphoreTakeFromISR(\n                          SemaphoreHandle_t xSemaphore,\n                          BaseType_t *pxHigherPriorityTaskWoken\n                      )</pre>\n *\n * <i>Macro</i> to  take a semaphore from an ISR.  The semaphore must have\n * previously been created with a call to xSemaphoreCreateBinary() or\n * xSemaphoreCreateCounting().\n *\n * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex())\n * must not be used with this macro.\n *\n * This macro can be used from an ISR, however taking a semaphore from an ISR\n * is not a common operation.  It is likely to only be useful when taking a\n * counting semaphore when an interrupt is obtaining an object from a resource\n * pool (when the semaphore count indicates the number of resources available).\n *\n * @param xSemaphore A handle to the semaphore being taken.  This is the\n * handle returned when the semaphore was created.\n *\n * @param pxHigherPriorityTaskWoken xSemaphoreTakeFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if taking the semaphore caused a task\n * to unblock, and the unblocked task has a priority higher than the currently\n * running task.  If xSemaphoreTakeFromISR() sets this value to pdTRUE then\n * a context switch should be requested before the interrupt is exited.\n *\n * @return pdTRUE if the semaphore was successfully taken, otherwise\n * pdFALSE\n */\n#define xSemaphoreTakeFromISR( xSemaphore, pxHigherPriorityTaskWoken )\txQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) )\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateMutex( void )</pre>\n *\n * Creates a new mutex type semaphore instance, and returns a handle by which\n * the new mutex can be referenced.\n *\n * Internally, within the FreeRTOS implementation, mutex semaphores use a block\n * of memory, in which the mutex structure is stored.  If a mutex is created\n * using xSemaphoreCreateMutex() then the required memory is automatically\n * dynamically allocated inside the xSemaphoreCreateMutex() function.  (see\n * http://www.freertos.org/a00111.html).  If a mutex is created using\n * xSemaphoreCreateMutexStatic() then the application writer must provided the\n * memory.  xSemaphoreCreateMutexStatic() therefore allows a mutex to be created\n * without using any dynamic memory allocation.\n *\n * Mutexes created using this function can be accessed using the xSemaphoreTake()\n * and xSemaphoreGive() macros.  The xSemaphoreTakeRecursive() and\n * xSemaphoreGiveRecursive() macros must not be used.\n *\n * This type of semaphore uses a priority inheritance mechanism so a task\n * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the\n * semaphore it is no longer required.\n *\n * Mutex type semaphores cannot be used from within interrupt service routines.\n *\n * See xSemaphoreCreateBinary() for an alternative implementation that can be\n * used for pure synchronisation (where one task or interrupt always 'gives' the\n * semaphore and another always 'takes' the semaphore) and from within interrupt\n * service routines.\n *\n * @return If the mutex was successfully created then a handle to the created\n * semaphore is returned.  If there was not enough heap to allocate the mutex\n * data structures then NULL is returned.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore;\n\n void vATask( void * pvParameters )\n {\n    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().\n    // This is a macro so pass the variable in directly.\n    xSemaphore = xSemaphoreCreateMutex();\n\n    if( xSemaphore != NULL )\n    {\n        // The semaphore was created successfully.\n        // The semaphore can now be used.\n    }\n }\n </pre>\n * \\defgroup xSemaphoreCreateMutex xSemaphoreCreateMutex\n * \\ingroup Semaphores\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t#define xSemaphoreCreateMutex() xQueueCreateMutex( queueQUEUE_TYPE_MUTEX )\n#endif\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateMutexStatic( StaticSemaphore_t *pxMutexBuffer )</pre>\n *\n * Creates a new mutex type semaphore instance, and returns a handle by which\n * the new mutex can be referenced.\n *\n * Internally, within the FreeRTOS implementation, mutex semaphores use a block\n * of memory, in which the mutex structure is stored.  If a mutex is created\n * using xSemaphoreCreateMutex() then the required memory is automatically\n * dynamically allocated inside the xSemaphoreCreateMutex() function.  (see\n * http://www.freertos.org/a00111.html).  If a mutex is created using\n * xSemaphoreCreateMutexStatic() then the application writer must provided the\n * memory.  xSemaphoreCreateMutexStatic() therefore allows a mutex to be created\n * without using any dynamic memory allocation.\n *\n * Mutexes created using this function can be accessed using the xSemaphoreTake()\n * and xSemaphoreGive() macros.  The xSemaphoreTakeRecursive() and\n * xSemaphoreGiveRecursive() macros must not be used.\n *\n * This type of semaphore uses a priority inheritance mechanism so a task\n * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the\n * semaphore it is no longer required.\n *\n * Mutex type semaphores cannot be used from within interrupt service routines.\n *\n * See xSemaphoreCreateBinary() for an alternative implementation that can be\n * used for pure synchronisation (where one task or interrupt always 'gives' the\n * semaphore and another always 'takes' the semaphore) and from within interrupt\n * service routines.\n *\n * @param pxMutexBuffer Must point to a variable of type StaticSemaphore_t,\n * which will be used to hold the mutex's data structure, removing the need for\n * the memory to be allocated dynamically.\n *\n * @return If the mutex was successfully created then a handle to the created\n * mutex is returned.  If pxMutexBuffer was NULL then NULL is returned.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore;\n StaticSemaphore_t xMutexBuffer;\n\n void vATask( void * pvParameters )\n {\n    // A mutex cannot be used before it has been created.  xMutexBuffer is\n    // into xSemaphoreCreateMutexStatic() so no dynamic memory allocation is\n    // attempted.\n    xSemaphore = xSemaphoreCreateMutexStatic( &xMutexBuffer );\n\n    // As no dynamic memory allocation was performed, xSemaphore cannot be NULL,\n    // so there is no need to check it.\n }\n </pre>\n * \\defgroup xSemaphoreCreateMutexStatic xSemaphoreCreateMutexStatic\n * \\ingroup Semaphores\n */\n #if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t#define xSemaphoreCreateMutexStatic( pxMutexBuffer ) xQueueCreateMutexStatic( queueQUEUE_TYPE_MUTEX, ( pxMutexBuffer ) )\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateRecursiveMutex( void )</pre>\n *\n * Creates a new recursive mutex type semaphore instance, and returns a handle\n * by which the new recursive mutex can be referenced.\n *\n * Internally, within the FreeRTOS implementation, recursive mutexs use a block\n * of memory, in which the mutex structure is stored.  If a recursive mutex is\n * created using xSemaphoreCreateRecursiveMutex() then the required memory is\n * automatically dynamically allocated inside the\n * xSemaphoreCreateRecursiveMutex() function.  (see\n * http://www.freertos.org/a00111.html).  If a recursive mutex is created using\n * xSemaphoreCreateRecursiveMutexStatic() then the application writer must\n * provide the memory that will get used by the mutex.\n * xSemaphoreCreateRecursiveMutexStatic() therefore allows a recursive mutex to\n * be created without using any dynamic memory allocation.\n *\n * Mutexes created using this macro can be accessed using the\n * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros.  The\n * xSemaphoreTake() and xSemaphoreGive() macros must not be used.\n *\n * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex\n * doesn't become available again until the owner has called\n * xSemaphoreGiveRecursive() for each successful 'take' request.  For example,\n * if a task successfully 'takes' the same mutex 5 times then the mutex will\n * not be available to any other task until it has also  'given' the mutex back\n * exactly five times.\n *\n * This type of semaphore uses a priority inheritance mechanism so a task\n * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the\n * semaphore it is no longer required.\n *\n * Mutex type semaphores cannot be used from within interrupt service routines.\n *\n * See xSemaphoreCreateBinary() for an alternative implementation that can be\n * used for pure synchronisation (where one task or interrupt always 'gives' the\n * semaphore and another always 'takes' the semaphore) and from within interrupt\n * service routines.\n *\n * @return xSemaphore Handle to the created mutex semaphore.  Should be of type\n * SemaphoreHandle_t.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore;\n\n void vATask( void * pvParameters )\n {\n    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().\n    // This is a macro so pass the variable in directly.\n    xSemaphore = xSemaphoreCreateRecursiveMutex();\n\n    if( xSemaphore != NULL )\n    {\n        // The semaphore was created successfully.\n        // The semaphore can now be used.\n    }\n }\n </pre>\n * \\defgroup xSemaphoreCreateRecursiveMutex xSemaphoreCreateRecursiveMutex\n * \\ingroup Semaphores\n */\n#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) )\n\t#define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex( queueQUEUE_TYPE_RECURSIVE_MUTEX )\n#endif\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateRecursiveMutexStatic( StaticSemaphore_t *pxMutexBuffer )</pre>\n *\n * Creates a new recursive mutex type semaphore instance, and returns a handle\n * by which the new recursive mutex can be referenced.\n *\n * Internally, within the FreeRTOS implementation, recursive mutexs use a block\n * of memory, in which the mutex structure is stored.  If a recursive mutex is\n * created using xSemaphoreCreateRecursiveMutex() then the required memory is\n * automatically dynamically allocated inside the\n * xSemaphoreCreateRecursiveMutex() function.  (see\n * http://www.freertos.org/a00111.html).  If a recursive mutex is created using\n * xSemaphoreCreateRecursiveMutexStatic() then the application writer must\n * provide the memory that will get used by the mutex.\n * xSemaphoreCreateRecursiveMutexStatic() therefore allows a recursive mutex to\n * be created without using any dynamic memory allocation.\n *\n * Mutexes created using this macro can be accessed using the\n * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros.  The\n * xSemaphoreTake() and xSemaphoreGive() macros must not be used.\n *\n * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex\n * doesn't become available again until the owner has called\n * xSemaphoreGiveRecursive() for each successful 'take' request.  For example,\n * if a task successfully 'takes' the same mutex 5 times then the mutex will\n * not be available to any other task until it has also  'given' the mutex back\n * exactly five times.\n *\n * This type of semaphore uses a priority inheritance mechanism so a task\n * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the\n * semaphore it is no longer required.\n *\n * Mutex type semaphores cannot be used from within interrupt service routines.\n *\n * See xSemaphoreCreateBinary() for an alternative implementation that can be\n * used for pure synchronisation (where one task or interrupt always 'gives' the\n * semaphore and another always 'takes' the semaphore) and from within interrupt\n * service routines.\n *\n * @param pxMutexBuffer Must point to a variable of type StaticSemaphore_t,\n * which will then be used to hold the recursive mutex's data structure,\n * removing the need for the memory to be allocated dynamically.\n *\n * @return If the recursive mutex was successfully created then a handle to the\n * created recursive mutex is returned.  If pxMutexBuffer was NULL then NULL is\n * returned.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore;\n StaticSemaphore_t xMutexBuffer;\n\n void vATask( void * pvParameters )\n {\n    // A recursive semaphore cannot be used before it is created.  Here a\n    // recursive mutex is created using xSemaphoreCreateRecursiveMutexStatic().\n    // The address of xMutexBuffer is passed into the function, and will hold\n    // the mutexes data structures - so no dynamic memory allocation will be\n    // attempted.\n    xSemaphore = xSemaphoreCreateRecursiveMutexStatic( &xMutexBuffer );\n\n    // As no dynamic memory allocation was performed, xSemaphore cannot be NULL,\n    // so there is no need to check it.\n }\n </pre>\n * \\defgroup xSemaphoreCreateRecursiveMutexStatic xSemaphoreCreateRecursiveMutexStatic\n * \\ingroup Semaphores\n */\n#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) )\n\t#define xSemaphoreCreateRecursiveMutexStatic( pxStaticSemaphore ) xQueueCreateMutexStatic( queueQUEUE_TYPE_RECURSIVE_MUTEX, pxStaticSemaphore )\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount )</pre>\n *\n * Creates a new counting semaphore instance, and returns a handle by which the\n * new counting semaphore can be referenced.\n *\n * In many usage scenarios it is faster and more memory efficient to use a\n * direct to task notification in place of a counting semaphore!\n * http://www.freertos.org/RTOS-task-notifications.html\n *\n * Internally, within the FreeRTOS implementation, counting semaphores use a\n * block of memory, in which the counting semaphore structure is stored.  If a\n * counting semaphore is created using xSemaphoreCreateCounting() then the\n * required memory is automatically dynamically allocated inside the\n * xSemaphoreCreateCounting() function.  (see\n * http://www.freertos.org/a00111.html).  If a counting semaphore is created\n * using xSemaphoreCreateCountingStatic() then the application writer can\n * instead optionally provide the memory that will get used by the counting\n * semaphore.  xSemaphoreCreateCountingStatic() therefore allows a counting\n * semaphore to be created without using any dynamic memory allocation.\n *\n * Counting semaphores are typically used for two things:\n *\n * 1) Counting events.\n *\n *    In this usage scenario an event handler will 'give' a semaphore each time\n *    an event occurs (incrementing the semaphore count value), and a handler\n *    task will 'take' a semaphore each time it processes an event\n *    (decrementing the semaphore count value).  The count value is therefore\n *    the difference between the number of events that have occurred and the\n *    number that have been processed.  In this case it is desirable for the\n *    initial count value to be zero.\n *\n * 2) Resource management.\n *\n *    In this usage scenario the count value indicates the number of resources\n *    available.  To obtain control of a resource a task must first obtain a\n *    semaphore - decrementing the semaphore count value.  When the count value\n *    reaches zero there are no free resources.  When a task finishes with the\n *    resource it 'gives' the semaphore back - incrementing the semaphore count\n *    value.  In this case it is desirable for the initial count value to be\n *    equal to the maximum count value, indicating that all resources are free.\n *\n * @param uxMaxCount The maximum count value that can be reached.  When the\n *        semaphore reaches this value it can no longer be 'given'.\n *\n * @param uxInitialCount The count value assigned to the semaphore when it is\n *        created.\n *\n * @return Handle to the created semaphore.  Null if the semaphore could not be\n *         created.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore;\n\n void vATask( void * pvParameters )\n {\n SemaphoreHandle_t xSemaphore = NULL;\n\n    // Semaphore cannot be used before a call to xSemaphoreCreateCounting().\n    // The max value to which the semaphore can count should be 10, and the\n    // initial value assigned to the count should be 0.\n    xSemaphore = xSemaphoreCreateCounting( 10, 0 );\n\n    if( xSemaphore != NULL )\n    {\n        // The semaphore was created successfully.\n        // The semaphore can now be used.\n    }\n }\n </pre>\n * \\defgroup xSemaphoreCreateCounting xSemaphoreCreateCounting\n * \\ingroup Semaphores\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t#define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) )\n#endif\n\n/**\n * semphr. h\n * <pre>SemaphoreHandle_t xSemaphoreCreateCountingStatic( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount, StaticSemaphore_t *pxSemaphoreBuffer )</pre>\n *\n * Creates a new counting semaphore instance, and returns a handle by which the\n * new counting semaphore can be referenced.\n *\n * In many usage scenarios it is faster and more memory efficient to use a\n * direct to task notification in place of a counting semaphore!\n * http://www.freertos.org/RTOS-task-notifications.html\n *\n * Internally, within the FreeRTOS implementation, counting semaphores use a\n * block of memory, in which the counting semaphore structure is stored.  If a\n * counting semaphore is created using xSemaphoreCreateCounting() then the\n * required memory is automatically dynamically allocated inside the\n * xSemaphoreCreateCounting() function.  (see\n * http://www.freertos.org/a00111.html).  If a counting semaphore is created\n * using xSemaphoreCreateCountingStatic() then the application writer must\n * provide the memory.  xSemaphoreCreateCountingStatic() therefore allows a\n * counting semaphore to be created without using any dynamic memory allocation.\n *\n * Counting semaphores are typically used for two things:\n *\n * 1) Counting events.\n *\n *    In this usage scenario an event handler will 'give' a semaphore each time\n *    an event occurs (incrementing the semaphore count value), and a handler\n *    task will 'take' a semaphore each time it processes an event\n *    (decrementing the semaphore count value).  The count value is therefore\n *    the difference between the number of events that have occurred and the\n *    number that have been processed.  In this case it is desirable for the\n *    initial count value to be zero.\n *\n * 2) Resource management.\n *\n *    In this usage scenario the count value indicates the number of resources\n *    available.  To obtain control of a resource a task must first obtain a\n *    semaphore - decrementing the semaphore count value.  When the count value\n *    reaches zero there are no free resources.  When a task finishes with the\n *    resource it 'gives' the semaphore back - incrementing the semaphore count\n *    value.  In this case it is desirable for the initial count value to be\n *    equal to the maximum count value, indicating that all resources are free.\n *\n * @param uxMaxCount The maximum count value that can be reached.  When the\n *        semaphore reaches this value it can no longer be 'given'.\n *\n * @param uxInitialCount The count value assigned to the semaphore when it is\n *        created.\n *\n * @param pxSemaphoreBuffer Must point to a variable of type StaticSemaphore_t,\n * which will then be used to hold the semaphore's data structure, removing the\n * need for the memory to be allocated dynamically.\n *\n * @return If the counting semaphore was successfully created then a handle to\n * the created counting semaphore is returned.  If pxSemaphoreBuffer was NULL\n * then NULL is returned.\n *\n * Example usage:\n <pre>\n SemaphoreHandle_t xSemaphore;\n StaticSemaphore_t xSemaphoreBuffer;\n\n void vATask( void * pvParameters )\n {\n SemaphoreHandle_t xSemaphore = NULL;\n\n    // Counting semaphore cannot be used before they have been created.  Create\n    // a counting semaphore using xSemaphoreCreateCountingStatic().  The max\n    // value to which the semaphore can count is 10, and the initial value\n    // assigned to the count will be 0.  The address of xSemaphoreBuffer is\n    // passed in and will be used to hold the semaphore structure, so no dynamic\n    // memory allocation will be used.\n    xSemaphore = xSemaphoreCreateCounting( 10, 0, &xSemaphoreBuffer );\n\n    // No memory allocation was attempted so xSemaphore cannot be NULL, so there\n    // is no need to check its value.\n }\n </pre>\n * \\defgroup xSemaphoreCreateCountingStatic xSemaphoreCreateCountingStatic\n * \\ingroup Semaphores\n */\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t#define xSemaphoreCreateCountingStatic( uxMaxCount, uxInitialCount, pxSemaphoreBuffer ) xQueueCreateCountingSemaphoreStatic( ( uxMaxCount ), ( uxInitialCount ), ( pxSemaphoreBuffer ) )\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n/**\n * semphr. h\n * <pre>void vSemaphoreDelete( SemaphoreHandle_t xSemaphore );</pre>\n *\n * Delete a semaphore.  This function must be used with care.  For example,\n * do not delete a mutex type semaphore if the mutex is held by a task.\n *\n * @param xSemaphore A handle to the semaphore to be deleted.\n *\n * \\defgroup vSemaphoreDelete vSemaphoreDelete\n * \\ingroup Semaphores\n */\n#define vSemaphoreDelete( xSemaphore ) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) )\n\n/**\n * semphr.h\n * <pre>TaskHandle_t xSemaphoreGetMutexHolder( SemaphoreHandle_t xMutex );</pre>\n *\n * If xMutex is indeed a mutex type semaphore, return the current mutex holder.\n * If xMutex is not a mutex type semaphore, or the mutex is available (not held\n * by a task), return NULL.\n *\n * Note: This is a good way of determining if the calling task is the mutex\n * holder, but not a good way of determining the identity of the mutex holder as\n * the holder may change between the function exiting and the returned value\n * being tested.\n */\n#define xSemaphoreGetMutexHolder( xSemaphore ) xQueueGetMutexHolder( ( xSemaphore ) )\n\n/**\n * semphr.h\n * <pre>TaskHandle_t xSemaphoreGetMutexHolderFromISR( SemaphoreHandle_t xMutex );</pre>\n *\n * If xMutex is indeed a mutex type semaphore, return the current mutex holder.\n * If xMutex is not a mutex type semaphore, or the mutex is available (not held\n * by a task), return NULL.\n *\n */\n#define xSemaphoreGetMutexHolderFromISR( xSemaphore ) xQueueGetMutexHolderFromISR( ( xSemaphore ) )\n\n/**\n * semphr.h\n * <pre>UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore );</pre>\n *\n * If the semaphore is a counting semaphore then uxSemaphoreGetCount() returns\n * its current count value.  If the semaphore is a binary semaphore then\n * uxSemaphoreGetCount() returns 1 if the semaphore is available, and 0 if the\n * semaphore is not available.\n *\n */\n#define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )\n\n#endif /* SEMAPHORE_H */\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#ifndef STACK_MACROS_H\n#define STACK_MACROS_H\n\n/*\n * Call the stack overflow hook function if the stack of the task being swapped\n * out is currently overflowed, or looks like it might have overflowed in the\n * past.\n *\n * Setting configCHECK_FOR_STACK_OVERFLOW to 1 will cause the macro to check\n * the current stack state only - comparing the current top of stack value to\n * the stack limit.  Setting configCHECK_FOR_STACK_OVERFLOW to greater than 1\n * will also cause the last few stack bytes to be checked to ensure the value\n * to which the bytes were set when the task was created have not been\n * overwritten.  Note this second test does not guarantee that an overflowed\n * stack will always be recognised.\n */\n\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) )\n\n\t/* Only the current stack state is to be checked. */\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Is the currently saved stack pointer within the stack limit? */\t\t\t\t\t\t\t\t\\\n\t\tif( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack )\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) )\n\n\t/* Only the current stack state is to be checked. */\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Is the currently saved stack pointer within the stack limit? */\t\t\t\t\t\t\t\t\\\n\t\tif( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack )\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) )\n\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tconst uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack;\t\t\t\t\t\t\t\\\n\t\tconst uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5;\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( ( pulStack[ 0 ] != ulCheckValue ) ||\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pulStack[ 1 ] != ulCheckValue ) ||\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pulStack[ 2 ] != ulCheckValue ) ||\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pulStack[ 3 ] != ulCheckValue ) )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */\n/*-----------------------------------------------------------*/\n\n#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) )\n\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tint8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tstatic const uint8_t ucExpectedStackBytes[] = {\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\ttskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE };\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tpcEndOfStack -= sizeof( ucExpectedStackBytes );\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Has the extremity of the task stack ever been written over? */\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 )\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tvApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */\n/*-----------------------------------------------------------*/\n\n/* Remove stack overflow macro if not being used. */\n#ifndef taskCHECK_FOR_STACK_OVERFLOW\n\t#define taskCHECK_FOR_STACK_OVERFLOW()\n#endif\n\n\n\n#endif /* STACK_MACROS_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/*\n * Stream buffers are used to send a continuous stream of data from one task or\n * interrupt to another.  Their implementation is light weight, making them\n * particularly suited for interrupt to task and core to core communication\n * scenarios.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xStreamBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xStreamBufferReceive()) inside a critical section section and set the\n * receive block time to 0.\n *\n */\n\n#ifndef STREAM_BUFFER_H\n#define STREAM_BUFFER_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h must appear in source files before include stream_buffer.h\"\n#endif\n\n#if defined( __cplusplus )\nextern \"C\" {\n#endif\n\n/**\n * Type by which stream buffers are referenced.  For example, a call to\n * xStreamBufferCreate() returns an StreamBufferHandle_t variable that can\n * then be used as a parameter to xStreamBufferSend(), xStreamBufferReceive(),\n * etc.\n */\nstruct StreamBufferDef_t;\ntypedef struct StreamBufferDef_t * StreamBufferHandle_t;\n\n\n/**\n * message_buffer.h\n *\n<pre>\nStreamBufferHandle_t xStreamBufferCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes );\n</pre>\n *\n * Creates a new stream buffer using dynamically allocated memory.  See\n * xStreamBufferCreateStatic() for a version that uses statically allocated\n * memory (memory that is allocated at compile time).\n *\n * configSUPPORT_DYNAMIC_ALLOCATION must be set to 1 or left undefined in\n * FreeRTOSConfig.h for xStreamBufferCreate() to be available.\n *\n * @param xBufferSizeBytes The total number of bytes the stream buffer will be\n * able to hold at any one time.\n *\n * @param xTriggerLevelBytes The number of bytes that must be in the stream\n * buffer before a task that is blocked on the stream buffer to wait for data is\n * moved out of the blocked state.  For example, if a task is blocked on a read\n * of an empty stream buffer that has a trigger level of 1 then the task will be\n * unblocked when a single byte is written to the buffer or the task's block\n * time expires.  As another example, if a task is blocked on a read of an empty\n * stream buffer that has a trigger level of 10 then the task will not be\n * unblocked until the stream buffer contains at least 10 bytes or the task's\n * block time expires.  If a reading task's block time expires before the\n * trigger level is reached then the task will still receive however many bytes\n * are actually available.  Setting a trigger level of 0 will result in a\n * trigger level of 1 being used.  It is not valid to specify a trigger level\n * that is greater than the buffer size.\n *\n * @return If NULL is returned, then the stream buffer cannot be created\n * because there is insufficient heap memory available for FreeRTOS to allocate\n * the stream buffer data structures and storage area.  A non-NULL value being\n * returned indicates that the stream buffer has been created successfully -\n * the returned value should be stored as the handle to the created stream\n * buffer.\n *\n * Example use:\n<pre>\n\nvoid vAFunction( void )\n{\nStreamBufferHandle_t xStreamBuffer;\nconst size_t xStreamBufferSizeBytes = 100, xTriggerLevel = 10;\n\n    // Create a stream buffer that can hold 100 bytes.  The memory used to hold\n    // both the stream buffer structure and the data in the stream buffer is\n    // allocated dynamically.\n    xStreamBuffer = xStreamBufferCreate( xStreamBufferSizeBytes, xTriggerLevel );\n\n    if( xStreamBuffer == NULL )\n    {\n        // There was not enough heap memory space available to create the\n        // stream buffer.\n    }\n    else\n    {\n        // The stream buffer was created successfully and can now be used.\n    }\n}\n</pre>\n * \\defgroup xStreamBufferCreate xStreamBufferCreate\n * \\ingroup StreamBufferManagement\n */\n#define xStreamBufferCreate( xBufferSizeBytes, xTriggerLevelBytes ) xStreamBufferGenericCreate( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE )\n\n/**\n * stream_buffer.h\n *\n<pre>\nStreamBufferHandle_t xStreamBufferCreateStatic( size_t xBufferSizeBytes,\n                                                size_t xTriggerLevelBytes,\n                                                uint8_t *pucStreamBufferStorageArea,\n                                                StaticStreamBuffer_t *pxStaticStreamBuffer );\n</pre>\n * Creates a new stream buffer using statically allocated memory.  See\n * xStreamBufferCreate() for a version that uses dynamically allocated memory.\n *\n * configSUPPORT_STATIC_ALLOCATION must be set to 1 in FreeRTOSConfig.h for\n * xStreamBufferCreateStatic() to be available.\n *\n * @param xBufferSizeBytes The size, in bytes, of the buffer pointed to by the\n * pucStreamBufferStorageArea parameter.\n *\n * @param xTriggerLevelBytes The number of bytes that must be in the stream\n * buffer before a task that is blocked on the stream buffer to wait for data is\n * moved out of the blocked state.  For example, if a task is blocked on a read\n * of an empty stream buffer that has a trigger level of 1 then the task will be\n * unblocked when a single byte is written to the buffer or the task's block\n * time expires.  As another example, if a task is blocked on a read of an empty\n * stream buffer that has a trigger level of 10 then the task will not be\n * unblocked until the stream buffer contains at least 10 bytes or the task's\n * block time expires.  If a reading task's block time expires before the\n * trigger level is reached then the task will still receive however many bytes\n * are actually available.  Setting a trigger level of 0 will result in a\n * trigger level of 1 being used.  It is not valid to specify a trigger level\n * that is greater than the buffer size.\n *\n * @param pucStreamBufferStorageArea Must point to a uint8_t array that is at\n * least xBufferSizeBytes + 1 big.  This is the array to which streams are\n * copied when they are written to the stream buffer.\n *\n * @param pxStaticStreamBuffer Must point to a variable of type\n * StaticStreamBuffer_t, which will be used to hold the stream buffer's data\n * structure.\n *\n * @return If the stream buffer is created successfully then a handle to the\n * created stream buffer is returned. If either pucStreamBufferStorageArea or\n * pxStaticstreamBuffer are NULL then NULL is returned.\n *\n * Example use:\n<pre>\n\n// Used to dimension the array used to hold the streams.  The available space\n// will actually be one less than this, so 999.\n#define STORAGE_SIZE_BYTES 1000\n\n// Defines the memory that will actually hold the streams within the stream\n// buffer.\nstatic uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];\n\n// The variable used to hold the stream buffer structure.\nStaticStreamBuffer_t xStreamBufferStruct;\n\nvoid MyFunction( void )\n{\nStreamBufferHandle_t xStreamBuffer;\nconst size_t xTriggerLevel = 1;\n\n    xStreamBuffer = xStreamBufferCreateStatic( sizeof( ucBufferStorage ),\n                                               xTriggerLevel,\n                                               ucBufferStorage,\n                                               &xStreamBufferStruct );\n\n    // As neither the pucStreamBufferStorageArea or pxStaticStreamBuffer\n    // parameters were NULL, xStreamBuffer will not be NULL, and can be used to\n    // reference the created stream buffer in other stream buffer API calls.\n\n    // Other code that uses the stream buffer can go here.\n}\n\n</pre>\n * \\defgroup xStreamBufferCreateStatic xStreamBufferCreateStatic\n * \\ingroup StreamBufferManagement\n */\n#define xStreamBufferCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer )\n\n/**\n * stream_buffer.h\n *\n<pre>\nsize_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,\n                          const void *pvTxData,\n                          size_t xDataLengthBytes,\n                          TickType_t xTicksToWait );\n</pre>\n *\n * Sends bytes to a stream buffer.  The bytes are copied into the stream buffer.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xStreamBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xStreamBufferReceive()) inside a critical section and set the receive\n * block time to 0.\n *\n * Use xStreamBufferSend() to write to a stream buffer from a task.  Use\n * xStreamBufferSendFromISR() to write to a stream buffer from an interrupt\n * service routine (ISR).\n *\n * @param xStreamBuffer The handle of the stream buffer to which a stream is\n * being sent.\n *\n * @param pvTxData A pointer to the buffer that holds the bytes to be copied\n * into the stream buffer.\n *\n * @param xDataLengthBytes   The maximum number of bytes to copy from pvTxData\n * into the stream buffer.\n *\n * @param xTicksToWait The maximum amount of time the task should remain in the\n * Blocked state to wait for enough space to become available in the stream\n * buffer, should the stream buffer contain too little space to hold the\n * another xDataLengthBytes bytes.  The block time is specified in tick periods,\n * so the absolute time it represents is dependent on the tick frequency.  The\n * macro pdMS_TO_TICKS() can be used to convert a time specified in milliseconds\n * into a time specified in ticks.  Setting xTicksToWait to portMAX_DELAY will\n * cause the task to wait indefinitely (without timing out), provided\n * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h.  If a task times out\n * before it can write all xDataLengthBytes into the buffer it will still write\n * as many bytes as possible.  A task does not use any CPU time when it is in\n * the blocked state.\n *\n * @return The number of bytes written to the stream buffer.  If a task times\n * out before it can write all xDataLengthBytes into the buffer it will still\n * write as many bytes as possible.\n *\n * Example use:\n<pre>\nvoid vAFunction( StreamBufferHandle_t xStreamBuffer )\n{\nsize_t xBytesSent;\nuint8_t ucArrayToSend[] = { 0, 1, 2, 3 };\nchar *pcStringToSend = \"String to send\";\nconst TickType_t x100ms = pdMS_TO_TICKS( 100 );\n\n    // Send an array to the stream buffer, blocking for a maximum of 100ms to\n    // wait for enough space to be available in the stream buffer.\n    xBytesSent = xStreamBufferSend( xStreamBuffer, ( void * ) ucArrayToSend, sizeof( ucArrayToSend ), x100ms );\n\n    if( xBytesSent != sizeof( ucArrayToSend ) )\n    {\n        // The call to xStreamBufferSend() times out before there was enough\n        // space in the buffer for the data to be written, but it did\n        // successfully write xBytesSent bytes.\n    }\n\n    // Send the string to the stream buffer.  Return immediately if there is not\n    // enough space in the buffer.\n    xBytesSent = xStreamBufferSend( xStreamBuffer, ( void * ) pcStringToSend, strlen( pcStringToSend ), 0 );\n\n    if( xBytesSent != strlen( pcStringToSend ) )\n    {\n        // The entire string could not be added to the stream buffer because\n        // there was not enough free space in the buffer, but xBytesSent bytes\n        // were sent.  Could try again to send the remaining bytes.\n    }\n}\n</pre>\n * \\defgroup xStreamBufferSend xStreamBufferSend\n * \\ingroup StreamBufferManagement\n */\nsize_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t  const void *pvTxData,\n\t\t\t\t\t\t  size_t xDataLengthBytes,\n\t\t\t\t\t\t  TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nsize_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,\n                                 const void *pvTxData,\n                                 size_t xDataLengthBytes,\n                                 BaseType_t *pxHigherPriorityTaskWoken );\n</pre>\n *\n * Interrupt safe version of the API function that sends a stream of bytes to\n * the stream buffer.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xStreamBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xStreamBufferReceive()) inside a critical section and set the receive\n * block time to 0.\n *\n * Use xStreamBufferSend() to write to a stream buffer from a task.  Use\n * xStreamBufferSendFromISR() to write to a stream buffer from an interrupt\n * service routine (ISR).\n *\n * @param xStreamBuffer The handle of the stream buffer to which a stream is\n * being sent.\n *\n * @param pvTxData A pointer to the data that is to be copied into the stream\n * buffer.\n *\n * @param xDataLengthBytes The maximum number of bytes to copy from pvTxData\n * into the stream buffer.\n *\n * @param pxHigherPriorityTaskWoken  It is possible that a stream buffer will\n * have a task blocked on it waiting for data.  Calling\n * xStreamBufferSendFromISR() can make data available, and so cause a task that\n * was waiting for data to leave the Blocked state.  If calling\n * xStreamBufferSendFromISR() causes a task to leave the Blocked state, and the\n * unblocked task has a priority higher than the currently executing task (the\n * task that was interrupted), then, internally, xStreamBufferSendFromISR()\n * will set *pxHigherPriorityTaskWoken to pdTRUE.  If\n * xStreamBufferSendFromISR() sets this value to pdTRUE, then normally a\n * context switch should be performed before the interrupt is exited.  This will\n * ensure that the interrupt returns directly to the highest priority Ready\n * state task.  *pxHigherPriorityTaskWoken should be set to pdFALSE before it\n * is passed into the function.  See the example code below for an example.\n *\n * @return The number of bytes actually written to the stream buffer, which will\n * be less than xDataLengthBytes if the stream buffer didn't have enough free\n * space for all the bytes to be written.\n *\n * Example use:\n<pre>\n// A stream buffer that has already been created.\nStreamBufferHandle_t xStreamBuffer;\n\nvoid vAnInterruptServiceRoutine( void )\n{\nsize_t xBytesSent;\nchar *pcStringToSend = \"String to send\";\nBaseType_t xHigherPriorityTaskWoken = pdFALSE; // Initialised to pdFALSE.\n\n    // Attempt to send the string to the stream buffer.\n    xBytesSent = xStreamBufferSendFromISR( xStreamBuffer,\n                                           ( void * ) pcStringToSend,\n                                           strlen( pcStringToSend ),\n                                           &xHigherPriorityTaskWoken );\n\n    if( xBytesSent != strlen( pcStringToSend ) )\n    {\n        // There was not enough free space in the stream buffer for the entire\n        // string to be written, ut xBytesSent bytes were written.\n    }\n\n    // If xHigherPriorityTaskWoken was set to pdTRUE inside\n    // xStreamBufferSendFromISR() then a task that has a priority above the\n    // priority of the currently executing task was unblocked and a context\n    // switch should be performed to ensure the ISR returns to the unblocked\n    // task.  In most FreeRTOS ports this is done by simply passing\n    // xHigherPriorityTaskWoken into taskYIELD_FROM_ISR(), which will test the\n    // variables value, and perform the context switch if necessary.  Check the\n    // documentation for the port in use for port specific instructions.\n    taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );\n}\n</pre>\n * \\defgroup xStreamBufferSendFromISR xStreamBufferSendFromISR\n * \\ingroup StreamBufferManagement\n */\nsize_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t\t\t const void *pvTxData,\n\t\t\t\t\t\t\t\t size_t xDataLengthBytes,\n\t\t\t\t\t\t\t\t BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nsize_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,\n                             void *pvRxData,\n                             size_t xBufferLengthBytes,\n                             TickType_t xTicksToWait );\n</pre>\n *\n * Receives bytes from a stream buffer.\n *\n * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer\n * implementation (so also the message buffer implementation, as message buffers\n * are built on top of stream buffers) assumes there is only one task or\n * interrupt that will write to the buffer (the writer), and only one task or\n * interrupt that will read from the buffer (the reader).  It is safe for the\n * writer and reader to be different tasks or interrupts, but, unlike other\n * FreeRTOS objects, it is not safe to have multiple different writers or\n * multiple different readers.  If there are to be multiple different writers\n * then the application writer must place each call to a writing API function\n * (such as xStreamBufferSend()) inside a critical section and set the send\n * block time to 0.  Likewise, if there are to be multiple different readers\n * then the application writer must place each call to a reading API function\n * (such as xStreamBufferReceive()) inside a critical section and set the receive\n * block time to 0.\n *\n * Use xStreamBufferReceive() to read from a stream buffer from a task.  Use\n * xStreamBufferReceiveFromISR() to read from a stream buffer from an\n * interrupt service routine (ISR).\n *\n * @param xStreamBuffer The handle of the stream buffer from which bytes are to\n * be received.\n *\n * @param pvRxData A pointer to the buffer into which the received bytes will be\n * copied.\n *\n * @param xBufferLengthBytes The length of the buffer pointed to by the\n * pvRxData parameter.  This sets the maximum number of bytes to receive in one\n * call.  xStreamBufferReceive will return as many bytes as possible up to a\n * maximum set by xBufferLengthBytes.\n *\n * @param xTicksToWait The maximum amount of time the task should remain in the\n * Blocked state to wait for data to become available if the stream buffer is\n * empty.  xStreamBufferReceive() will return immediately if xTicksToWait is\n * zero.  The block time is specified in tick periods, so the absolute time it\n * represents is dependent on the tick frequency.  The macro pdMS_TO_TICKS() can\n * be used to convert a time specified in milliseconds into a time specified in\n * ticks.  Setting xTicksToWait to portMAX_DELAY will cause the task to wait\n * indefinitely (without timing out), provided INCLUDE_vTaskSuspend is set to 1\n * in FreeRTOSConfig.h.  A task does not use any CPU time when it is in the\n * Blocked state.\n *\n * @return The number of bytes actually read from the stream buffer, which will\n * be less than xBufferLengthBytes if the call to xStreamBufferReceive() timed\n * out before xBufferLengthBytes were available.\n *\n * Example use:\n<pre>\nvoid vAFunction( StreamBuffer_t xStreamBuffer )\n{\nuint8_t ucRxData[ 20 ];\nsize_t xReceivedBytes;\nconst TickType_t xBlockTime = pdMS_TO_TICKS( 20 );\n\n    // Receive up to another sizeof( ucRxData ) bytes from the stream buffer.\n    // Wait in the Blocked state (so not using any CPU processing time) for a\n    // maximum of 100ms for the full sizeof( ucRxData ) number of bytes to be\n    // available.\n    xReceivedBytes = xStreamBufferReceive( xStreamBuffer,\n                                           ( void * ) ucRxData,\n                                           sizeof( ucRxData ),\n                                           xBlockTime );\n\n    if( xReceivedBytes > 0 )\n    {\n        // A ucRxData contains another xRecievedBytes bytes of data, which can\n        // be processed here....\n    }\n}\n</pre>\n * \\defgroup xStreamBufferReceive xStreamBufferReceive\n * \\ingroup StreamBufferManagement\n */\nsize_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t\t void *pvRxData,\n\t\t\t\t\t\t\t size_t xBufferLengthBytes,\n\t\t\t\t\t\t\t TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nsize_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,\n                                    void *pvRxData,\n                                    size_t xBufferLengthBytes,\n                                    BaseType_t *pxHigherPriorityTaskWoken );\n</pre>\n *\n * An interrupt safe version of the API function that receives bytes from a\n * stream buffer.\n *\n * Use xStreamBufferReceive() to read bytes from a stream buffer from a task.\n * Use xStreamBufferReceiveFromISR() to read bytes from a stream buffer from an\n * interrupt service routine (ISR).\n *\n * @param xStreamBuffer The handle of the stream buffer from which a stream\n * is being received.\n *\n * @param pvRxData A pointer to the buffer into which the received bytes are\n * copied.\n *\n * @param xBufferLengthBytes The length of the buffer pointed to by the\n * pvRxData parameter.  This sets the maximum number of bytes to receive in one\n * call.  xStreamBufferReceive will return as many bytes as possible up to a\n * maximum set by xBufferLengthBytes.\n *\n * @param pxHigherPriorityTaskWoken  It is possible that a stream buffer will\n * have a task blocked on it waiting for space to become available.  Calling\n * xStreamBufferReceiveFromISR() can make space available, and so cause a task\n * that is waiting for space to leave the Blocked state.  If calling\n * xStreamBufferReceiveFromISR() causes a task to leave the Blocked state, and\n * the unblocked task has a priority higher than the currently executing task\n * (the task that was interrupted), then, internally,\n * xStreamBufferReceiveFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE.\n * If xStreamBufferReceiveFromISR() sets this value to pdTRUE, then normally a\n * context switch should be performed before the interrupt is exited.  That will\n * ensure the interrupt returns directly to the highest priority Ready state\n * task.  *pxHigherPriorityTaskWoken should be set to pdFALSE before it is\n * passed into the function.  See the code example below for an example.\n *\n * @return The number of bytes read from the stream buffer, if any.\n *\n * Example use:\n<pre>\n// A stream buffer that has already been created.\nStreamBuffer_t xStreamBuffer;\n\nvoid vAnInterruptServiceRoutine( void )\n{\nuint8_t ucRxData[ 20 ];\nsize_t xReceivedBytes;\nBaseType_t xHigherPriorityTaskWoken = pdFALSE;  // Initialised to pdFALSE.\n\n    // Receive the next stream from the stream buffer.\n    xReceivedBytes = xStreamBufferReceiveFromISR( xStreamBuffer,\n                                                  ( void * ) ucRxData,\n                                                  sizeof( ucRxData ),\n                                                  &xHigherPriorityTaskWoken );\n\n    if( xReceivedBytes > 0 )\n    {\n        // ucRxData contains xReceivedBytes read from the stream buffer.\n        // Process the stream here....\n    }\n\n    // If xHigherPriorityTaskWoken was set to pdTRUE inside\n    // xStreamBufferReceiveFromISR() then a task that has a priority above the\n    // priority of the currently executing task was unblocked and a context\n    // switch should be performed to ensure the ISR returns to the unblocked\n    // task.  In most FreeRTOS ports this is done by simply passing\n    // xHigherPriorityTaskWoken into taskYIELD_FROM_ISR(), which will test the\n    // variables value, and perform the context switch if necessary.  Check the\n    // documentation for the port in use for port specific instructions.\n    taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );\n}\n</pre>\n * \\defgroup xStreamBufferReceiveFromISR xStreamBufferReceiveFromISR\n * \\ingroup StreamBufferManagement\n */\nsize_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t\t\t\tvoid *pvRxData,\n\t\t\t\t\t\t\t\t\tsize_t xBufferLengthBytes,\n\t\t\t\t\t\t\t\t\tBaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nvoid vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer );\n</pre>\n *\n * Deletes a stream buffer that was previously created using a call to\n * xStreamBufferCreate() or xStreamBufferCreateStatic().  If the stream\n * buffer was created using dynamic memory (that is, by xStreamBufferCreate()),\n * then the allocated memory is freed.\n *\n * A stream buffer handle must not be used after the stream buffer has been\n * deleted.\n *\n * @param xStreamBuffer The handle of the stream buffer to be deleted.\n *\n * \\defgroup vStreamBufferDelete vStreamBufferDelete\n * \\ingroup StreamBufferManagement\n */\nvoid vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nBaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer );\n</pre>\n *\n * Queries a stream buffer to see if it is full.  A stream buffer is full if it\n * does not have any free space, and therefore cannot accept any more data.\n *\n * @param xStreamBuffer The handle of the stream buffer being queried.\n *\n * @return If the stream buffer is full then pdTRUE is returned.  Otherwise\n * pdFALSE is returned.\n *\n * \\defgroup xStreamBufferIsFull xStreamBufferIsFull\n * \\ingroup StreamBufferManagement\n */\nBaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nBaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer );\n</pre>\n *\n * Queries a stream buffer to see if it is empty.  A stream buffer is empty if\n * it does not contain any data.\n *\n * @param xStreamBuffer The handle of the stream buffer being queried.\n *\n * @return If the stream buffer is empty then pdTRUE is returned.  Otherwise\n * pdFALSE is returned.\n *\n * \\defgroup xStreamBufferIsEmpty xStreamBufferIsEmpty\n * \\ingroup StreamBufferManagement\n */\nBaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nBaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer );\n</pre>\n *\n * Resets a stream buffer to its initial, empty, state.  Any data that was in\n * the stream buffer is discarded.  A stream buffer can only be reset if there\n * are no tasks blocked waiting to either send to or receive from the stream\n * buffer.\n *\n * @param xStreamBuffer The handle of the stream buffer being reset.\n *\n * @return If the stream buffer is reset then pdPASS is returned.  If there was\n * a task blocked waiting to send to or read from the stream buffer then the\n * stream buffer is not reset and pdFAIL is returned.\n *\n * \\defgroup xStreamBufferReset xStreamBufferReset\n * \\ingroup StreamBufferManagement\n */\nBaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nsize_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer );\n</pre>\n *\n * Queries a stream buffer to see how much free space it contains, which is\n * equal to the amount of data that can be sent to the stream buffer before it\n * is full.\n *\n * @param xStreamBuffer The handle of the stream buffer being queried.\n *\n * @return The number of bytes that can be written to the stream buffer before\n * the stream buffer would be full.\n *\n * \\defgroup xStreamBufferSpacesAvailable xStreamBufferSpacesAvailable\n * \\ingroup StreamBufferManagement\n */\nsize_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nsize_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer );\n</pre>\n *\n * Queries a stream buffer to see how much data it contains, which is equal to\n * the number of bytes that can be read from the stream buffer before the stream\n * buffer would be empty.\n *\n * @param xStreamBuffer The handle of the stream buffer being queried.\n *\n * @return The number of bytes that can be read from the stream buffer before\n * the stream buffer would be empty.\n *\n * \\defgroup xStreamBufferBytesAvailable xStreamBufferBytesAvailable\n * \\ingroup StreamBufferManagement\n */\nsize_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nBaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel );\n</pre>\n *\n * A stream buffer's trigger level is the number of bytes that must be in the\n * stream buffer before a task that is blocked on the stream buffer to\n * wait for data is moved out of the blocked state.  For example, if a task is\n * blocked on a read of an empty stream buffer that has a trigger level of 1\n * then the task will be unblocked when a single byte is written to the buffer\n * or the task's block time expires.  As another example, if a task is blocked\n * on a read of an empty stream buffer that has a trigger level of 10 then the\n * task will not be unblocked until the stream buffer contains at least 10 bytes\n * or the task's block time expires.  If a reading task's block time expires\n * before the trigger level is reached then the task will still receive however\n * many bytes are actually available.  Setting a trigger level of 0 will result\n * in a trigger level of 1 being used.  It is not valid to specify a trigger\n * level that is greater than the buffer size.\n *\n * A trigger level is set when the stream buffer is created, and can be modified\n * using xStreamBufferSetTriggerLevel().\n *\n * @param xStreamBuffer The handle of the stream buffer being updated.\n *\n * @param xTriggerLevel The new trigger level for the stream buffer.\n *\n * @return If xTriggerLevel was less than or equal to the stream buffer's length\n * then the trigger level will be updated and pdTRUE is returned.  Otherwise\n * pdFALSE is returned.\n *\n * \\defgroup xStreamBufferSetTriggerLevel xStreamBufferSetTriggerLevel\n * \\ingroup StreamBufferManagement\n */\nBaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nBaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );\n</pre>\n *\n * For advanced users only.\n *\n * The sbSEND_COMPLETED() macro is called from within the FreeRTOS APIs when\n * data is sent to a message buffer or stream buffer.  If there was a task that\n * was blocked on the message or stream buffer waiting for data to arrive then\n * the sbSEND_COMPLETED() macro sends a notification to the task to remove it\n * from the Blocked state.  xStreamBufferSendCompletedFromISR() does the same\n * thing.  It is provided to enable application writers to implement their own\n * version of sbSEND_COMPLETED(), and MUST NOT BE USED AT ANY OTHER TIME.\n *\n * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for\n * additional information.\n *\n * @param xStreamBuffer The handle of the stream buffer to which data was\n * written.\n *\n * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be\n * initialised to pdFALSE before it is passed into\n * xStreamBufferSendCompletedFromISR().  If calling\n * xStreamBufferSendCompletedFromISR() removes a task from the Blocked state,\n * and the task has a priority above the priority of the currently running task,\n * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a\n * context switch should be performed before exiting the ISR.\n *\n * @return If a task was removed from the Blocked state then pdTRUE is returned.\n * Otherwise pdFALSE is returned.\n *\n * \\defgroup xStreamBufferSendCompletedFromISR xStreamBufferSendCompletedFromISR\n * \\ingroup StreamBufferManagement\n */\nBaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n/**\n * stream_buffer.h\n *\n<pre>\nBaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );\n</pre>\n *\n * For advanced users only.\n *\n * The sbRECEIVE_COMPLETED() macro is called from within the FreeRTOS APIs when\n * data is read out of a message buffer or stream buffer.  If there was a task\n * that was blocked on the message or stream buffer waiting for data to arrive\n * then the sbRECEIVE_COMPLETED() macro sends a notification to the task to\n * remove it from the Blocked state.  xStreamBufferReceiveCompletedFromISR()\n * does the same thing.  It is provided to enable application writers to\n * implement their own version of sbRECEIVE_COMPLETED(), and MUST NOT BE USED AT\n * ANY OTHER TIME.\n *\n * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for\n * additional information.\n *\n * @param xStreamBuffer The handle of the stream buffer from which data was\n * read.\n *\n * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be\n * initialised to pdFALSE before it is passed into\n * xStreamBufferReceiveCompletedFromISR().  If calling\n * xStreamBufferReceiveCompletedFromISR() removes a task from the Blocked state,\n * and the task has a priority above the priority of the currently running task,\n * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a\n * context switch should be performed before exiting the ISR.\n *\n * @return If a task was removed from the Blocked state then pdTRUE is returned.\n * Otherwise pdFALSE is returned.\n *\n * \\defgroup xStreamBufferReceiveCompletedFromISR xStreamBufferReceiveCompletedFromISR\n * \\ingroup StreamBufferManagement\n */\nBaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n/* Functions below here are not part of the public API. */\nStreamBufferHandle_t xStreamBufferGenericCreate( size_t xBufferSizeBytes,\n\t\t\t\t\t\t\t\t\t\t\t\t size_t xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t\t\t BaseType_t xIsMessageBuffer ) PRIVILEGED_FUNCTION;\n\nStreamBufferHandle_t xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,\n\t\t\t\t\t\t\t\t\t\t\t\t\t   size_t xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t\t\t\t   BaseType_t xIsMessageBuffer,\n\t\t\t\t\t\t\t\t\t\t\t\t\t   uint8_t * const pucStreamBufferStorageArea,\n\t\t\t\t\t\t\t\t\t\t\t\t\t   StaticStreamBuffer_t * const pxStaticStreamBuffer ) PRIVILEGED_FUNCTION;\n\nsize_t xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\n#if( configUSE_TRACE_FACILITY == 1 )\n\tvoid vStreamBufferSetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer, UBaseType_t uxStreamBufferNumber ) PRIVILEGED_FUNCTION;\n\tUBaseType_t uxStreamBufferGetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n\tuint8_t ucStreamBufferGetStreamBufferType( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;\n#endif\n\n#if defined( __cplusplus )\n}\n#endif\n\n#endif\t/* !defined( STREAM_BUFFER_H ) */\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/task.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n\n#ifndef INC_TASK_H\n#define INC_TASK_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h must appear in source files before include task.h\"\n#endif\n\n#include \"list.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*-----------------------------------------------------------\n * MACROS AND DEFINITIONS\n *----------------------------------------------------------*/\n\n#define tskKERNEL_VERSION_NUMBER \"V10.3.1\"\n#define tskKERNEL_VERSION_MAJOR 10\n#define tskKERNEL_VERSION_MINOR 3\n#define tskKERNEL_VERSION_BUILD 1\n\n/* MPU region parameters passed in ulParameters\n * of MemoryRegion_t struct. */\n#define tskMPU_REGION_READ_ONLY\t\t\t( 1UL << 0UL )\n#define tskMPU_REGION_READ_WRITE\t\t( 1UL << 1UL )\n#define tskMPU_REGION_EXECUTE_NEVER\t\t( 1UL << 2UL )\n#define tskMPU_REGION_NORMAL_MEMORY\t\t( 1UL << 3UL )\n#define tskMPU_REGION_DEVICE_MEMORY\t\t( 1UL << 4UL )\n\n/**\n * task. h\n *\n * Type by which tasks are referenced.  For example, a call to xTaskCreate\n * returns (via a pointer parameter) an TaskHandle_t variable that can then\n * be used as a parameter to vTaskDelete to delete the task.\n *\n * \\defgroup TaskHandle_t TaskHandle_t\n * \\ingroup Tasks\n */\nstruct tskTaskControlBlock; /* The old naming convention is used to prevent breaking kernel aware debuggers. */\ntypedef struct tskTaskControlBlock* TaskHandle_t;\n\n/*\n * Defines the prototype to which the application task hook function must\n * conform.\n */\ntypedef BaseType_t (*TaskHookFunction_t)( void * );\n\n/* Task states returned by eTaskGetState. */\ntypedef enum\n{\n\teRunning = 0,\t/* A task is querying the state of itself, so must be running. */\n\teReady,\t\t\t/* The task being queried is in a read or pending ready list. */\n\teBlocked,\t\t/* The task being queried is in the Blocked state. */\n\teSuspended,\t\t/* The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */\n\teDeleted,\t\t/* The task being queried has been deleted, but its TCB has not yet been freed. */\n\teInvalid\t\t/* Used as an 'invalid state' value. */\n} eTaskState;\n\n/* Actions that can be performed when vTaskNotify() is called. */\ntypedef enum\n{\n\teNoAction = 0,\t\t\t\t/* Notify the task without updating its notify value. */\n\teSetBits,\t\t\t\t\t/* Set bits in the task's notification value. */\n\teIncrement,\t\t\t\t\t/* Increment the task's notification value. */\n\teSetValueWithOverwrite,\t\t/* Set the task's notification value to a specific value even if the previous value has not yet been read by the task. */\n\teSetValueWithoutOverwrite\t/* Set the task's notification value if the previous value has been read by the task. */\n} eNotifyAction;\n\n/*\n * Used internally only.\n */\ntypedef struct xTIME_OUT\n{\n\tBaseType_t xOverflowCount;\n\tTickType_t xTimeOnEntering;\n} TimeOut_t;\n\n/*\n * Defines the memory ranges allocated to the task when an MPU is used.\n */\ntypedef struct xMEMORY_REGION\n{\n\tvoid *pvBaseAddress;\n\tuint32_t ulLengthInBytes;\n\tuint32_t ulParameters;\n} MemoryRegion_t;\n\n/*\n * Parameters required to create an MPU protected task.\n */\ntypedef struct xTASK_PARAMETERS\n{\n\tTaskFunction_t pvTaskCode;\n\tconst char * const pcName;\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\tconfigSTACK_DEPTH_TYPE usStackDepth;\n\tvoid *pvParameters;\n\tUBaseType_t uxPriority;\n\tStackType_t *puxStackBuffer;\n\tMemoryRegion_t xRegions[ portNUM_CONFIGURABLE_REGIONS ];\n\t#if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )\n\t\tStaticTask_t * const pxTaskBuffer;\n\t#endif\n} TaskParameters_t;\n\n/* Used with the uxTaskGetSystemState() function to return the state of each task\nin the system. */\ntypedef struct xTASK_STATUS\n{\n\tTaskHandle_t xHandle;\t\t\t/* The handle of the task to which the rest of the information in the structure relates. */\n\tconst char *pcTaskName;\t\t\t/* A pointer to the task's name.  This value will be invalid if the task was deleted since the structure was populated! */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\tUBaseType_t xTaskNumber;\t\t/* A number unique to the task. */\n\teTaskState eCurrentState;\t\t/* The state in which the task existed when the structure was populated. */\n\tUBaseType_t uxCurrentPriority;\t/* The priority at which the task was running (may be inherited) when the structure was populated. */\n\tUBaseType_t uxBasePriority;\t\t/* The priority to which the task will return if the task's current priority has been inherited to avoid unbounded priority inversion when obtaining a mutex.  Only valid if configUSE_MUTEXES is defined as 1 in FreeRTOSConfig.h. */\n\tuint32_t ulRunTimeCounter;\t\t/* The total run time allocated to the task so far, as defined by the run time stats clock.  See http://www.freertos.org/rtos-run-time-stats.html.  Only valid when configGENERATE_RUN_TIME_STATS is defined as 1 in FreeRTOSConfig.h. */\n\tStackType_t *pxStackBase;\t\t/* Points to the lowest address of the task's stack area. */\n\tconfigSTACK_DEPTH_TYPE usStackHighWaterMark;\t/* The minimum amount of stack space that has remained for the task since the task was created.  The closer this value is to zero the closer the task has come to overflowing its stack. */\n} TaskStatus_t;\n\n/* Possible return values for eTaskConfirmSleepModeStatus(). */\ntypedef enum\n{\n\teAbortSleep = 0,\t\t/* A task has been made ready or a context switch pended since portSUPPORESS_TICKS_AND_SLEEP() was called - abort entering a sleep mode. */\n\teStandardSleep,\t\t\t/* Enter a sleep mode that will not last any longer than the expected idle time. */\n\teNoTasksWaitingTimeout\t/* No tasks are waiting for a timeout so it is safe to enter a sleep mode that can only be exited by an external interrupt. */\n} eSleepModeStatus;\n\n/**\n * Defines the priority used by the idle task.  This must not be modified.\n *\n * \\ingroup TaskUtils\n */\n#define tskIDLE_PRIORITY\t\t\t( ( UBaseType_t ) 0U )\n\n/**\n * task. h\n *\n * Macro for forcing a context switch.\n *\n * \\defgroup taskYIELD taskYIELD\n * \\ingroup SchedulerControl\n */\n#define taskYIELD()\t\t\t\t\tportYIELD()\n\n/**\n * task. h\n *\n * Macro to mark the start of a critical code region.  Preemptive context\n * switches cannot occur when in a critical region.\n *\n * NOTE: This may alter the stack (depending on the portable implementation)\n * so must be used with care!\n *\n * \\defgroup taskENTER_CRITICAL taskENTER_CRITICAL\n * \\ingroup SchedulerControl\n */\n#define taskENTER_CRITICAL()\t\tportENTER_CRITICAL()\n#define taskENTER_CRITICAL_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR()\n\n/**\n * task. h\n *\n * Macro to mark the end of a critical code region.  Preemptive context\n * switches cannot occur when in a critical region.\n *\n * NOTE: This may alter the stack (depending on the portable implementation)\n * so must be used with care!\n *\n * \\defgroup taskEXIT_CRITICAL taskEXIT_CRITICAL\n * \\ingroup SchedulerControl\n */\n#define taskEXIT_CRITICAL()\t\t\tportEXIT_CRITICAL()\n#define taskEXIT_CRITICAL_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( x )\n/**\n * task. h\n *\n * Macro to disable all maskable interrupts.\n *\n * \\defgroup taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS\n * \\ingroup SchedulerControl\n */\n#define taskDISABLE_INTERRUPTS()\tportDISABLE_INTERRUPTS()\n\n/**\n * task. h\n *\n * Macro to enable microcontroller interrupts.\n *\n * \\defgroup taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS\n * \\ingroup SchedulerControl\n */\n#define taskENABLE_INTERRUPTS()\t\tportENABLE_INTERRUPTS()\n\n/* Definitions returned by xTaskGetSchedulerState().  taskSCHEDULER_SUSPENDED is\n0 to generate more optimal code when configASSERT() is defined as the constant\nis used in assert() statements. */\n#define taskSCHEDULER_SUSPENDED\t\t( ( BaseType_t ) 0 )\n#define taskSCHEDULER_NOT_STARTED\t( ( BaseType_t ) 1 )\n#define taskSCHEDULER_RUNNING\t\t( ( BaseType_t ) 2 )\n\n\n/*-----------------------------------------------------------\n * TASK CREATION API\n *----------------------------------------------------------*/\n\n/**\n * task. h\n *<pre>\n BaseType_t xTaskCreate(\n\t\t\t\t\t\t\t  TaskFunction_t pvTaskCode,\n\t\t\t\t\t\t\t  const char * const pcName,\n\t\t\t\t\t\t\t  configSTACK_DEPTH_TYPE usStackDepth,\n\t\t\t\t\t\t\t  void *pvParameters,\n\t\t\t\t\t\t\t  UBaseType_t uxPriority,\n\t\t\t\t\t\t\t  TaskHandle_t *pvCreatedTask\n\t\t\t\t\t\t  );</pre>\n *\n * Create a new task and add it to the list of tasks that are ready to run.\n *\n * Internally, within the FreeRTOS implementation, tasks use two blocks of\n * memory.  The first block is used to hold the task's data structures.  The\n * second block is used by the task as its stack.  If a task is created using\n * xTaskCreate() then both blocks of memory are automatically dynamically\n * allocated inside the xTaskCreate() function.  (see\n * http://www.freertos.org/a00111.html).  If a task is created using\n * xTaskCreateStatic() then the application writer must provide the required\n * memory.  xTaskCreateStatic() therefore allows a task to be created without\n * using any dynamic memory allocation.\n *\n * See xTaskCreateStatic() for a version that does not use any dynamic memory\n * allocation.\n *\n * xTaskCreate() can only be used to create a task that has unrestricted\n * access to the entire microcontroller memory map.  Systems that include MPU\n * support can alternatively create an MPU constrained task using\n * xTaskCreateRestricted().\n *\n * @param pvTaskCode Pointer to the task entry function.  Tasks\n * must be implemented to never return (i.e. continuous loop).\n *\n * @param pcName A descriptive name for the task.  This is mainly used to\n * facilitate debugging.  Max length defined by configMAX_TASK_NAME_LEN - default\n * is 16.\n *\n * @param usStackDepth The size of the task stack specified as the number of\n * variables the stack can hold - not the number of bytes.  For example, if\n * the stack is 16 bits wide and usStackDepth is defined as 100, 200 bytes\n * will be allocated for stack storage.\n *\n * @param pvParameters Pointer that will be used as the parameter for the task\n * being created.\n *\n * @param uxPriority The priority at which the task should run.  Systems that\n * include MPU support can optionally create tasks in a privileged (system)\n * mode by setting bit portPRIVILEGE_BIT of the priority parameter.  For\n * example, to create a privileged task at priority 2 the uxPriority parameter\n * should be set to ( 2 | portPRIVILEGE_BIT ).\n *\n * @param pvCreatedTask Used to pass back a handle by which the created task\n * can be referenced.\n *\n * @return pdPASS if the task was successfully created and added to a ready\n * list, otherwise an error code defined in the file projdefs.h\n *\n * Example usage:\n   <pre>\n // Task to be created.\n void vTaskCode( void * pvParameters )\n {\n\t for( ;; )\n\t {\n\t\t // Task code goes here.\n\t }\n }\n\n // Function that creates a task.\n void vOtherFunction( void )\n {\n static uint8_t ucParameterToPass;\n TaskHandle_t xHandle = NULL;\n\n\t // Create the task, storing the handle.  Note that the passed parameter ucParameterToPass\n\t // must exist for the lifetime of the task, so in this case is declared static.  If it was just an\n\t // an automatic stack variable it might no longer exist, or at least have been corrupted, by the time\n\t // the new task attempts to access it.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );\n\t configASSERT( xHandle );\n\n\t // Use the handle to delete the task.\n\t if( xHandle != NULL )\n\t {\n\t \tvTaskDelete( xHandle );\n\t }\n }\n   </pre>\n * \\defgroup xTaskCreate xTaskCreate\n * \\ingroup Tasks\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\tBaseType_t xTaskCreate(\tTaskFunction_t pxTaskCode,\n\t\t\t\t\t\t\tconst char * const pcName,\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\tconst configSTACK_DEPTH_TYPE usStackDepth,\n\t\t\t\t\t\t\tvoid * const pvParameters,\n\t\t\t\t\t\t\tUBaseType_t uxPriority,\n\t\t\t\t\t\t\tTaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION;\n#endif\n\n/**\n * task. h\n *<pre>\n TaskHandle_t xTaskCreateStatic( TaskFunction_t pvTaskCode,\n\t\t\t\t\t\t\t\t const char * const pcName,\n\t\t\t\t\t\t\t\t uint32_t ulStackDepth,\n\t\t\t\t\t\t\t\t void *pvParameters,\n\t\t\t\t\t\t\t\t UBaseType_t uxPriority,\n\t\t\t\t\t\t\t\t StackType_t *pxStackBuffer,\n\t\t\t\t\t\t\t\t StaticTask_t *pxTaskBuffer );</pre>\n *\n * Create a new task and add it to the list of tasks that are ready to run.\n *\n * Internally, within the FreeRTOS implementation, tasks use two blocks of\n * memory.  The first block is used to hold the task's data structures.  The\n * second block is used by the task as its stack.  If a task is created using\n * xTaskCreate() then both blocks of memory are automatically dynamically\n * allocated inside the xTaskCreate() function.  (see\n * http://www.freertos.org/a00111.html).  If a task is created using\n * xTaskCreateStatic() then the application writer must provide the required\n * memory.  xTaskCreateStatic() therefore allows a task to be created without\n * using any dynamic memory allocation.\n *\n * @param pvTaskCode Pointer to the task entry function.  Tasks\n * must be implemented to never return (i.e. continuous loop).\n *\n * @param pcName A descriptive name for the task.  This is mainly used to\n * facilitate debugging.  The maximum length of the string is defined by\n * configMAX_TASK_NAME_LEN in FreeRTOSConfig.h.\n *\n * @param ulStackDepth The size of the task stack specified as the number of\n * variables the stack can hold - not the number of bytes.  For example, if\n * the stack is 32-bits wide and ulStackDepth is defined as 100 then 400 bytes\n * will be allocated for stack storage.\n *\n * @param pvParameters Pointer that will be used as the parameter for the task\n * being created.\n *\n * @param uxPriority The priority at which the task will run.\n *\n * @param pxStackBuffer Must point to a StackType_t array that has at least\n * ulStackDepth indexes - the array will then be used as the task's stack,\n * removing the need for the stack to be allocated dynamically.\n *\n * @param pxTaskBuffer Must point to a variable of type StaticTask_t, which will\n * then be used to hold the task's data structures, removing the need for the\n * memory to be allocated dynamically.\n *\n * @return If neither pxStackBuffer or pxTaskBuffer are NULL, then the task will\n * be created and a handle to the created task is returned.  If either\n * pxStackBuffer or pxTaskBuffer are NULL then the task will not be created and\n * NULL is returned.\n *\n * Example usage:\n   <pre>\n\n    // Dimensions the buffer that the task being created will use as its stack.\n    // NOTE:  This is the number of words the stack will hold, not the number of\n    // bytes.  For example, if each stack item is 32-bits, and this is set to 100,\n    // then 400 bytes (100 * 32-bits) will be allocated.\n    #define STACK_SIZE 200\n\n    // Structure that will hold the TCB of the task being created.\n    StaticTask_t xTaskBuffer;\n\n    // Buffer that the task being created will use as its stack.  Note this is\n    // an array of StackType_t variables.  The size of StackType_t is dependent on\n    // the RTOS port.\n    StackType_t xStack[ STACK_SIZE ];\n\n    // Function that implements the task being created.\n    void vTaskCode( void * pvParameters )\n    {\n        // The parameter value is expected to be 1 as 1 is passed in the\n        // pvParameters value in the call to xTaskCreateStatic().\n        configASSERT( ( uint32_t ) pvParameters == 1UL );\n\n        for( ;; )\n        {\n            // Task code goes here.\n        }\n    }\n\n    // Function that creates a task.\n    void vOtherFunction( void )\n    {\n        TaskHandle_t xHandle = NULL;\n\n        // Create the task without using any dynamic memory allocation.\n        xHandle = xTaskCreateStatic(\n                      vTaskCode,       // Function that implements the task.\n                      \"NAME\",          // Text name for the task.\n                      STACK_SIZE,      // Stack size in words, not bytes.\n                      ( void * ) 1,    // Parameter passed into the task.\n                      tskIDLE_PRIORITY,// Priority at which the task is created.\n                      xStack,          // Array to use as the task's stack.\n                      &xTaskBuffer );  // Variable to hold the task's data structure.\n\n        // puxStackBuffer and pxTaskBuffer were not NULL, so the task will have\n        // been created, and xHandle will be the task's handle.  Use the handle\n        // to suspend the task.\n        vTaskSuspend( xHandle );\n    }\n   </pre>\n * \\defgroup xTaskCreateStatic xTaskCreateStatic\n * \\ingroup Tasks\n */\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\tTaskHandle_t xTaskCreateStatic(\tTaskFunction_t pxTaskCode,\n\t\t\t\t\t\t\t\t\tconst char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\tconst uint32_t ulStackDepth,\n\t\t\t\t\t\t\t\t\tvoid * const pvParameters,\n\t\t\t\t\t\t\t\t\tUBaseType_t uxPriority,\n\t\t\t\t\t\t\t\t\tStackType_t * const puxStackBuffer,\n\t\t\t\t\t\t\t\t\tStaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION;\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n/**\n * task. h\n *<pre>\n BaseType_t xTaskCreateRestricted( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );</pre>\n *\n * Only available when configSUPPORT_DYNAMIC_ALLOCATION is set to 1.\n *\n * xTaskCreateRestricted() should only be used in systems that include an MPU\n * implementation.\n *\n * Create a new task and add it to the list of tasks that are ready to run.\n * The function parameters define the memory regions and associated access\n * permissions allocated to the task.\n *\n * See xTaskCreateRestrictedStatic() for a version that does not use any\n * dynamic memory allocation.\n *\n * @param pxTaskDefinition Pointer to a structure that contains a member\n * for each of the normal xTaskCreate() parameters (see the xTaskCreate() API\n * documentation) plus an optional stack buffer and the memory region\n * definitions.\n *\n * @param pxCreatedTask Used to pass back a handle by which the created task\n * can be referenced.\n *\n * @return pdPASS if the task was successfully created and added to a ready\n * list, otherwise an error code defined in the file projdefs.h\n *\n * Example usage:\n   <pre>\n// Create an TaskParameters_t structure that defines the task to be created.\nstatic const TaskParameters_t xCheckTaskParameters =\n{\n\tvATask,\t\t// pvTaskCode - the function that implements the task.\n\t\"ATask\",\t// pcName - just a text name for the task to assist debugging.\n\t100,\t\t// usStackDepth\t- the stack size DEFINED IN WORDS.\n\tNULL,\t\t// pvParameters - passed into the task function as the function parameters.\n\t( 1UL | portPRIVILEGE_BIT ),// uxPriority - task priority, set the portPRIVILEGE_BIT if the task should run in a privileged state.\n\tcStackBuffer,// puxStackBuffer - the buffer to be used as the task stack.\n\n\t// xRegions - Allocate up to three separate memory regions for access by\n\t// the task, with appropriate access permissions.  Different processors have\n\t// different memory alignment requirements - refer to the FreeRTOS documentation\n\t// for full information.\n\t{\n\t\t// Base address\t\t\t\t\tLength\tParameters\n\t\t{ cReadWriteArray,\t\t\t\t32,\t\tportMPU_REGION_READ_WRITE },\n\t\t{ cReadOnlyArray,\t\t\t\t32,\t\tportMPU_REGION_READ_ONLY },\n\t\t{ cPrivilegedOnlyAccessArray,\t128,\tportMPU_REGION_PRIVILEGED_READ_WRITE }\n\t}\n};\n\nint main( void )\n{\nTaskHandle_t xHandle;\n\n\t// Create a task from the const structure defined above.  The task handle\n\t// is requested (the second parameter is not NULL) but in this case just for\n\t// demonstration purposes as its not actually used.\n\txTaskCreateRestricted( &xRegTest1Parameters, &xHandle );\n\n\t// Start the scheduler.\n\tvTaskStartScheduler();\n\n\t// Will only get here if there was insufficient memory to create the idle\n\t// and/or timer task.\n\tfor( ;; );\n}\n   </pre>\n * \\defgroup xTaskCreateRestricted xTaskCreateRestricted\n * \\ingroup Tasks\n */\n#if( portUSING_MPU_WRAPPERS == 1 )\n\tBaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) PRIVILEGED_FUNCTION;\n#endif\n\n/**\n * task. h\n *<pre>\n BaseType_t xTaskCreateRestrictedStatic( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );</pre>\n *\n * Only available when configSUPPORT_STATIC_ALLOCATION is set to 1.\n *\n * xTaskCreateRestrictedStatic() should only be used in systems that include an\n * MPU implementation.\n *\n * Internally, within the FreeRTOS implementation, tasks use two blocks of\n * memory.  The first block is used to hold the task's data structures.  The\n * second block is used by the task as its stack.  If a task is created using\n * xTaskCreateRestricted() then the stack is provided by the application writer,\n * and the memory used to hold the task's data structure is automatically\n * dynamically allocated inside the xTaskCreateRestricted() function.  If a task\n * is created using xTaskCreateRestrictedStatic() then the application writer\n * must provide the memory used to hold the task's data structures too.\n * xTaskCreateRestrictedStatic() therefore allows a memory protected task to be\n * created without using any dynamic memory allocation.\n *\n * @param pxTaskDefinition Pointer to a structure that contains a member\n * for each of the normal xTaskCreate() parameters (see the xTaskCreate() API\n * documentation) plus an optional stack buffer and the memory region\n * definitions.  If configSUPPORT_STATIC_ALLOCATION is set to 1 the structure\n * contains an additional member, which is used to point to a variable of type\n * StaticTask_t - which is then used to hold the task's data structure.\n *\n * @param pxCreatedTask Used to pass back a handle by which the created task\n * can be referenced.\n *\n * @return pdPASS if the task was successfully created and added to a ready\n * list, otherwise an error code defined in the file projdefs.h\n *\n * Example usage:\n   <pre>\n// Create an TaskParameters_t structure that defines the task to be created.\n// The StaticTask_t variable is only included in the structure when\n// configSUPPORT_STATIC_ALLOCATION is set to 1.  The PRIVILEGED_DATA macro can\n// be used to force the variable into the RTOS kernel's privileged data area.\nstatic PRIVILEGED_DATA StaticTask_t xTaskBuffer;\nstatic const TaskParameters_t xCheckTaskParameters =\n{\n\tvATask,\t\t// pvTaskCode - the function that implements the task.\n\t\"ATask\",\t// pcName - just a text name for the task to assist debugging.\n\t100,\t\t// usStackDepth\t- the stack size DEFINED IN WORDS.\n\tNULL,\t\t// pvParameters - passed into the task function as the function parameters.\n\t( 1UL | portPRIVILEGE_BIT ),// uxPriority - task priority, set the portPRIVILEGE_BIT if the task should run in a privileged state.\n\tcStackBuffer,// puxStackBuffer - the buffer to be used as the task stack.\n\n\t// xRegions - Allocate up to three separate memory regions for access by\n\t// the task, with appropriate access permissions.  Different processors have\n\t// different memory alignment requirements - refer to the FreeRTOS documentation\n\t// for full information.\n\t{\n\t\t// Base address\t\t\t\t\tLength\tParameters\n\t\t{ cReadWriteArray,\t\t\t\t32,\t\tportMPU_REGION_READ_WRITE },\n\t\t{ cReadOnlyArray,\t\t\t\t32,\t\tportMPU_REGION_READ_ONLY },\n\t\t{ cPrivilegedOnlyAccessArray,\t128,\tportMPU_REGION_PRIVILEGED_READ_WRITE }\n\t}\n\n\t&xTaskBuffer; // Holds the task's data structure.\n};\n\nint main( void )\n{\nTaskHandle_t xHandle;\n\n\t// Create a task from the const structure defined above.  The task handle\n\t// is requested (the second parameter is not NULL) but in this case just for\n\t// demonstration purposes as its not actually used.\n\txTaskCreateRestricted( &xRegTest1Parameters, &xHandle );\n\n\t// Start the scheduler.\n\tvTaskStartScheduler();\n\n\t// Will only get here if there was insufficient memory to create the idle\n\t// and/or timer task.\n\tfor( ;; );\n}\n   </pre>\n * \\defgroup xTaskCreateRestrictedStatic xTaskCreateRestrictedStatic\n * \\ingroup Tasks\n */\n#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )\n\tBaseType_t xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) PRIVILEGED_FUNCTION;\n#endif\n\n/**\n * task. h\n *<pre>\n void vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions );</pre>\n *\n * Memory regions are assigned to a restricted task when the task is created by\n * a call to xTaskCreateRestricted().  These regions can be redefined using\n * vTaskAllocateMPURegions().\n *\n * @param xTask The handle of the task being updated.\n *\n * @param xRegions A pointer to an MemoryRegion_t structure that contains the\n * new memory region definitions.\n *\n * Example usage:\n   <pre>\n// Define an array of MemoryRegion_t structures that configures an MPU region\n// allowing read/write access for 1024 bytes starting at the beginning of the\n// ucOneKByte array.  The other two of the maximum 3 definable regions are\n// unused so set to zero.\nstatic const MemoryRegion_t xAltRegions[ portNUM_CONFIGURABLE_REGIONS ] =\n{\n\t// Base address\t\tLength\t\tParameters\n\t{ ucOneKByte,\t\t1024,\t\tportMPU_REGION_READ_WRITE },\n\t{ 0,\t\t\t\t0,\t\t\t0 },\n\t{ 0,\t\t\t\t0,\t\t\t0 }\n};\n\nvoid vATask( void *pvParameters )\n{\n\t// This task was created such that it has access to certain regions of\n\t// memory as defined by the MPU configuration.  At some point it is\n\t// desired that these MPU regions are replaced with that defined in the\n\t// xAltRegions const struct above.  Use a call to vTaskAllocateMPURegions()\n\t// for this purpose.  NULL is used as the task handle to indicate that this\n\t// function should modify the MPU regions of the calling task.\n\tvTaskAllocateMPURegions( NULL, xAltRegions );\n\n\t// Now the task can continue its function, but from this point on can only\n\t// access its stack and the ucOneKByte array (unless any other statically\n\t// defined or shared regions have been declared elsewhere).\n}\n   </pre>\n * \\defgroup xTaskCreateRestricted xTaskCreateRestricted\n * \\ingroup Tasks\n */\nvoid vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskDelete( TaskHandle_t xTask );</pre>\n *\n * INCLUDE_vTaskDelete must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n * Remove a task from the RTOS real time kernel's management.  The task being\n * deleted will be removed from all ready, blocked, suspended and event lists.\n *\n * NOTE:  The idle task is responsible for freeing the kernel allocated\n * memory from tasks that have been deleted.  It is therefore important that\n * the idle task is not starved of microcontroller processing time if your\n * application makes any calls to vTaskDelete ().  Memory allocated by the\n * task code is not automatically freed, and should be freed before the task\n * is deleted.\n *\n * See the demo application file death.c for sample code that utilises\n * vTaskDelete ().\n *\n * @param xTask The handle of the task to be deleted.  Passing NULL will\n * cause the calling task to be deleted.\n *\n * Example usage:\n   <pre>\n void vOtherFunction( void )\n {\n TaskHandle_t xHandle;\n\n\t // Create the task, storing the handle.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\n\n\t // Use the handle to delete the task.\n\t vTaskDelete( xHandle );\n }\n   </pre>\n * \\defgroup vTaskDelete vTaskDelete\n * \\ingroup Tasks\n */\nvoid vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;\n\n/*-----------------------------------------------------------\n * TASK CONTROL API\n *----------------------------------------------------------*/\n\n/**\n * task. h\n * <pre>void vTaskDelay( const TickType_t xTicksToDelay );</pre>\n *\n * Delay a task for a given number of ticks.  The actual time that the\n * task remains blocked depends on the tick rate.  The constant\n * portTICK_PERIOD_MS can be used to calculate real time from the tick\n * rate - with the resolution of one tick period.\n *\n * INCLUDE_vTaskDelay must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n *\n * vTaskDelay() specifies a time at which the task wishes to unblock relative to\n * the time at which vTaskDelay() is called.  For example, specifying a block\n * period of 100 ticks will cause the task to unblock 100 ticks after\n * vTaskDelay() is called.  vTaskDelay() does not therefore provide a good method\n * of controlling the frequency of a periodic task as the path taken through the\n * code, as well as other task and interrupt activity, will effect the frequency\n * at which vTaskDelay() gets called and therefore the time at which the task\n * next executes.  See vTaskDelayUntil() for an alternative API function designed\n * to facilitate fixed frequency execution.  It does this by specifying an\n * absolute time (rather than a relative time) at which the calling task should\n * unblock.\n *\n * @param xTicksToDelay The amount of time, in tick periods, that\n * the calling task should block.\n *\n * Example usage:\n\n void vTaskFunction( void * pvParameters )\n {\n // Block for 500ms.\n const TickType_t xDelay = 500 / portTICK_PERIOD_MS;\n\n\t for( ;; )\n\t {\n\t\t // Simply toggle the LED every 500ms, blocking between each toggle.\n\t\t vToggleLED();\n\t\t vTaskDelay( xDelay );\n\t }\n }\n\n * \\defgroup vTaskDelay vTaskDelay\n * \\ingroup TaskCtrl\n */\nvoid vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskDelayUntil( TickType_t *pxPreviousWakeTime, const TickType_t xTimeIncrement );</pre>\n *\n * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n * Delay a task until a specified time.  This function can be used by periodic\n * tasks to ensure a constant execution frequency.\n *\n * This function differs from vTaskDelay () in one important aspect:  vTaskDelay () will\n * cause a task to block for the specified number of ticks from the time vTaskDelay () is\n * called.  It is therefore difficult to use vTaskDelay () by itself to generate a fixed\n * execution frequency as the time between a task starting to execute and that task\n * calling vTaskDelay () may not be fixed [the task may take a different path though the\n * code between calls, or may get interrupted or preempted a different number of times\n * each time it executes].\n *\n * Whereas vTaskDelay () specifies a wake time relative to the time at which the function\n * is called, vTaskDelayUntil () specifies the absolute (exact) time at which it wishes to\n * unblock.\n *\n * The constant portTICK_PERIOD_MS can be used to calculate real time from the tick\n * rate - with the resolution of one tick period.\n *\n * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the\n * task was last unblocked.  The variable must be initialised with the current time\n * prior to its first use (see the example below).  Following this the variable is\n * automatically updated within vTaskDelayUntil ().\n *\n * @param xTimeIncrement The cycle time period.  The task will be unblocked at\n * time *pxPreviousWakeTime + xTimeIncrement.  Calling vTaskDelayUntil with the\n * same xTimeIncrement parameter value will cause the task to execute with\n * a fixed interface period.\n *\n * Example usage:\n   <pre>\n // Perform an action every 10 ticks.\n void vTaskFunction( void * pvParameters )\n {\n TickType_t xLastWakeTime;\n const TickType_t xFrequency = 10;\n\n\t // Initialise the xLastWakeTime variable with the current time.\n\t xLastWakeTime = xTaskGetTickCount ();\n\t for( ;; )\n\t {\n\t\t // Wait for the next cycle.\n\t\t vTaskDelayUntil( &xLastWakeTime, xFrequency );\n\n\t\t // Perform action here.\n\t }\n }\n   </pre>\n * \\defgroup vTaskDelayUntil vTaskDelayUntil\n * \\ingroup TaskCtrl\n */\nvoid vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>BaseType_t xTaskAbortDelay( TaskHandle_t xTask );</pre>\n *\n * INCLUDE_xTaskAbortDelay must be defined as 1 in FreeRTOSConfig.h for this\n * function to be available.\n *\n * A task will enter the Blocked state when it is waiting for an event.  The\n * event it is waiting for can be a temporal event (waiting for a time), such\n * as when vTaskDelay() is called, or an event on an object, such as when\n * xQueueReceive() or ulTaskNotifyTake() is called.  If the handle of a task\n * that is in the Blocked state is used in a call to xTaskAbortDelay() then the\n * task will leave the Blocked state, and return from whichever function call\n * placed the task into the Blocked state.\n *\n * There is no 'FromISR' version of this function as an interrupt would need to\n * know which object a task was blocked on in order to know which actions to\n * take.  For example, if the task was blocked on a queue the interrupt handler\n * would then need to know if the queue was locked.\n *\n * @param xTask The handle of the task to remove from the Blocked state.\n *\n * @return If the task referenced by xTask was not in the Blocked state then\n * pdFAIL is returned.  Otherwise pdPASS is returned.\n *\n * \\defgroup xTaskAbortDelay xTaskAbortDelay\n * \\ingroup TaskCtrl\n */\nBaseType_t xTaskAbortDelay( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );</pre>\n *\n * INCLUDE_uxTaskPriorityGet must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n * Obtain the priority of any task.\n *\n * @param xTask Handle of the task to be queried.  Passing a NULL\n * handle results in the priority of the calling task being returned.\n *\n * @return The priority of xTask.\n *\n * Example usage:\n   <pre>\n void vAFunction( void )\n {\n TaskHandle_t xHandle;\n\n\t // Create a task, storing the handle.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\n\n\t // ...\n\n\t // Use the handle to obtain the priority of the created task.\n\t // It was created with tskIDLE_PRIORITY, but may have changed\n\t // it itself.\n\t if( uxTaskPriorityGet( xHandle ) != tskIDLE_PRIORITY )\n\t {\n\t\t // The task has changed it's priority.\n\t }\n\n\t // ...\n\n\t // Is our priority higher than the created task?\n\t if( uxTaskPriorityGet( xHandle ) < uxTaskPriorityGet( NULL ) )\n\t {\n\t\t // Our priority (obtained using NULL handle) is higher.\n\t }\n }\n   </pre>\n * \\defgroup uxTaskPriorityGet uxTaskPriorityGet\n * \\ingroup TaskCtrl\n */\nUBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask );</pre>\n *\n * A version of uxTaskPriorityGet() that can be used from an ISR.\n */\nUBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>eTaskState eTaskGetState( TaskHandle_t xTask );</pre>\n *\n * INCLUDE_eTaskGetState must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n * Obtain the state of any task.  States are encoded by the eTaskState\n * enumerated type.\n *\n * @param xTask Handle of the task to be queried.\n *\n * @return The state of xTask at the time the function was called.  Note the\n * state of the task might change between the function being called, and the\n * functions return value being tested by the calling task.\n */\neTaskState eTaskGetState( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState );</pre>\n *\n * configUSE_TRACE_FACILITY must be defined as 1 for this function to be\n * available.  See the configuration section for more information.\n *\n * Populates a TaskStatus_t structure with information about a task.\n *\n * @param xTask Handle of the task being queried.  If xTask is NULL then\n * information will be returned about the calling task.\n *\n * @param pxTaskStatus A pointer to the TaskStatus_t structure that will be\n * filled with information about the task referenced by the handle passed using\n * the xTask parameter.\n *\n * @xGetFreeStackSpace The TaskStatus_t structure contains a member to report\n * the stack high water mark of the task being queried.  Calculating the stack\n * high water mark takes a relatively long time, and can make the system\n * temporarily unresponsive - so the xGetFreeStackSpace parameter is provided to\n * allow the high water mark checking to be skipped.  The high watermark value\n * will only be written to the TaskStatus_t structure if xGetFreeStackSpace is\n * not set to pdFALSE;\n *\n * @param eState The TaskStatus_t structure contains a member to report the\n * state of the task being queried.  Obtaining the task state is not as fast as\n * a simple assignment - so the eState parameter is provided to allow the state\n * information to be omitted from the TaskStatus_t structure.  To obtain state\n * information then set eState to eInvalid - otherwise the value passed in\n * eState will be reported as the task state in the TaskStatus_t structure.\n *\n * Example usage:\n   <pre>\n void vAFunction( void )\n {\n TaskHandle_t xHandle;\n TaskStatus_t xTaskDetails;\n\n    // Obtain the handle of a task from its name.\n    xHandle = xTaskGetHandle( \"Task_Name\" );\n\n    // Check the handle is not NULL.\n    configASSERT( xHandle );\n\n    // Use the handle to obtain further information about the task.\n    vTaskGetInfo( xHandle,\n                  &xTaskDetails,\n                  pdTRUE, // Include the high water mark in xTaskDetails.\n                  eInvalid ); // Include the task state in xTaskDetails.\n }\n   </pre>\n * \\defgroup vTaskGetInfo vTaskGetInfo\n * \\ingroup TaskCtrl\n */\nvoid vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );</pre>\n *\n * INCLUDE_vTaskPrioritySet must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n * Set the priority of any task.\n *\n * A context switch will occur before the function returns if the priority\n * being set is higher than the currently executing task.\n *\n * @param xTask Handle to the task for which the priority is being set.\n * Passing a NULL handle results in the priority of the calling task being set.\n *\n * @param uxNewPriority The priority to which the task will be set.\n *\n * Example usage:\n   <pre>\n void vAFunction( void )\n {\n TaskHandle_t xHandle;\n\n\t // Create a task, storing the handle.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\n\n\t // ...\n\n\t // Use the handle to raise the priority of the created task.\n\t vTaskPrioritySet( xHandle, tskIDLE_PRIORITY + 1 );\n\n\t // ...\n\n\t // Use a NULL handle to raise our priority to the same value.\n\t vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );\n }\n   </pre>\n * \\defgroup vTaskPrioritySet vTaskPrioritySet\n * \\ingroup TaskCtrl\n */\nvoid vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskSuspend( TaskHandle_t xTaskToSuspend );</pre>\n *\n * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n * Suspend any task.  When suspended a task will never get any microcontroller\n * processing time, no matter what its priority.\n *\n * Calls to vTaskSuspend are not accumulative -\n * i.e. calling vTaskSuspend () twice on the same task still only requires one\n * call to vTaskResume () to ready the suspended task.\n *\n * @param xTaskToSuspend Handle to the task being suspended.  Passing a NULL\n * handle will cause the calling task to be suspended.\n *\n * Example usage:\n   <pre>\n void vAFunction( void )\n {\n TaskHandle_t xHandle;\n\n\t // Create a task, storing the handle.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\n\n\t // ...\n\n\t // Use the handle to suspend the created task.\n\t vTaskSuspend( xHandle );\n\n\t // ...\n\n\t // The created task will not run during this period, unless\n\t // another task calls vTaskResume( xHandle ).\n\n\t //...\n\n\n\t // Suspend ourselves.\n\t vTaskSuspend( NULL );\n\n\t // We cannot get here unless another task calls vTaskResume\n\t // with our handle as the parameter.\n }\n   </pre>\n * \\defgroup vTaskSuspend vTaskSuspend\n * \\ingroup TaskCtrl\n */\nvoid vTaskSuspend( TaskHandle_t xTaskToSuspend ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskResume( TaskHandle_t xTaskToResume );</pre>\n *\n * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available.\n * See the configuration section for more information.\n *\n * Resumes a suspended task.\n *\n * A task that has been suspended by one or more calls to vTaskSuspend ()\n * will be made available for running again by a single call to\n * vTaskResume ().\n *\n * @param xTaskToResume Handle to the task being readied.\n *\n * Example usage:\n   <pre>\n void vAFunction( void )\n {\n TaskHandle_t xHandle;\n\n\t // Create a task, storing the handle.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\n\n\t // ...\n\n\t // Use the handle to suspend the created task.\n\t vTaskSuspend( xHandle );\n\n\t // ...\n\n\t // The created task will not run during this period, unless\n\t // another task calls vTaskResume( xHandle ).\n\n\t //...\n\n\n\t // Resume the suspended task ourselves.\n\t vTaskResume( xHandle );\n\n\t // The created task will once again get microcontroller processing\n\t // time in accordance with its priority within the system.\n }\n   </pre>\n * \\defgroup vTaskResume vTaskResume\n * \\ingroup TaskCtrl\n */\nvoid vTaskResume( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void xTaskResumeFromISR( TaskHandle_t xTaskToResume );</pre>\n *\n * INCLUDE_xTaskResumeFromISR must be defined as 1 for this function to be\n * available.  See the configuration section for more information.\n *\n * An implementation of vTaskResume() that can be called from within an ISR.\n *\n * A task that has been suspended by one or more calls to vTaskSuspend ()\n * will be made available for running again by a single call to\n * xTaskResumeFromISR ().\n *\n * xTaskResumeFromISR() should not be used to synchronise a task with an\n * interrupt if there is a chance that the interrupt could arrive prior to the\n * task being suspended - as this can lead to interrupts being missed. Use of a\n * semaphore as a synchronisation mechanism would avoid this eventuality.\n *\n * @param xTaskToResume Handle to the task being readied.\n *\n * @return pdTRUE if resuming the task should result in a context switch,\n * otherwise pdFALSE. This is used by the ISR to determine if a context switch\n * may be required following the ISR.\n *\n * \\defgroup vTaskResumeFromISR vTaskResumeFromISR\n * \\ingroup TaskCtrl\n */\nBaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;\n\n/*-----------------------------------------------------------\n * SCHEDULER CONTROL\n *----------------------------------------------------------*/\n\n/**\n * task. h\n * <pre>void vTaskStartScheduler( void );</pre>\n *\n * Starts the real time kernel tick processing.  After calling the kernel\n * has control over which tasks are executed and when.\n *\n * See the demo application file main.c for an example of creating\n * tasks and starting the kernel.\n *\n * Example usage:\n   <pre>\n void vAFunction( void )\n {\n\t // Create at least one task before starting the kernel.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\n\n\t // Start the real time kernel with preemption.\n\t vTaskStartScheduler ();\n\n\t // Will not get here unless a task calls vTaskEndScheduler ()\n }\n   </pre>\n *\n * \\defgroup vTaskStartScheduler vTaskStartScheduler\n * \\ingroup SchedulerControl\n */\nvoid vTaskStartScheduler( void ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskEndScheduler( void );</pre>\n *\n * NOTE:  At the time of writing only the x86 real mode port, which runs on a PC\n * in place of DOS, implements this function.\n *\n * Stops the real time kernel tick.  All created tasks will be automatically\n * deleted and multitasking (either preemptive or cooperative) will\n * stop.  Execution then resumes from the point where vTaskStartScheduler ()\n * was called, as if vTaskStartScheduler () had just returned.\n *\n * See the demo application file main. c in the demo/PC directory for an\n * example that uses vTaskEndScheduler ().\n *\n * vTaskEndScheduler () requires an exit function to be defined within the\n * portable layer (see vPortEndScheduler () in port. c for the PC port).  This\n * performs hardware specific operations such as stopping the kernel tick.\n *\n * vTaskEndScheduler () will cause all of the resources allocated by the\n * kernel to be freed - but will not free resources allocated by application\n * tasks.\n *\n * Example usage:\n   <pre>\n void vTaskCode( void * pvParameters )\n {\n\t for( ;; )\n\t {\n\t\t // Task code goes here.\n\n\t\t // At some point we want to end the real time kernel processing\n\t\t // so call ...\n\t\t vTaskEndScheduler ();\n\t }\n }\n\n void vAFunction( void )\n {\n\t // Create at least one task before starting the kernel.\n\t xTaskCreate( vTaskCode, \"NAME\", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\n\n\t // Start the real time kernel with preemption.\n\t vTaskStartScheduler ();\n\n\t // Will only get here when the vTaskCode () task has called\n\t // vTaskEndScheduler ().  When we get here we are back to single task\n\t // execution.\n }\n   </pre>\n *\n * \\defgroup vTaskEndScheduler vTaskEndScheduler\n * \\ingroup SchedulerControl\n */\nvoid vTaskEndScheduler( void ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>void vTaskSuspendAll( void );</pre>\n *\n * Suspends the scheduler without disabling interrupts.  Context switches will\n * not occur while the scheduler is suspended.\n *\n * After calling vTaskSuspendAll () the calling task will continue to execute\n * without risk of being swapped out until a call to xTaskResumeAll () has been\n * made.\n *\n * API functions that have the potential to cause a context switch (for example,\n * vTaskDelayUntil(), xQueueSend(), etc.) must not be called while the scheduler\n * is suspended.\n *\n * Example usage:\n   <pre>\n void vTask1( void * pvParameters )\n {\n\t for( ;; )\n\t {\n\t\t // Task code goes here.\n\n\t\t // ...\n\n\t\t // At some point the task wants to perform a long operation during\n\t\t // which it does not want to get swapped out.  It cannot use\n\t\t // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the\n\t\t // operation may cause interrupts to be missed - including the\n\t\t // ticks.\n\n\t\t // Prevent the real time kernel swapping out the task.\n\t\t vTaskSuspendAll ();\n\n\t\t // Perform the operation here.  There is no need to use critical\n\t\t // sections as we have all the microcontroller processing time.\n\t\t // During this time interrupts will still operate and the kernel\n\t\t // tick count will be maintained.\n\n\t\t // ...\n\n\t\t // The operation is complete.  Restart the kernel.\n\t\t xTaskResumeAll ();\n\t }\n }\n   </pre>\n * \\defgroup vTaskSuspendAll vTaskSuspendAll\n * \\ingroup SchedulerControl\n */\nvoid vTaskSuspendAll( void ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <pre>BaseType_t xTaskResumeAll( void );</pre>\n *\n * Resumes scheduler activity after it was suspended by a call to\n * vTaskSuspendAll().\n *\n * xTaskResumeAll() only resumes the scheduler.  It does not unsuspend tasks\n * that were previously suspended by a call to vTaskSuspend().\n *\n * @return If resuming the scheduler caused a context switch then pdTRUE is\n *\t\t  returned, otherwise pdFALSE is returned.\n *\n * Example usage:\n   <pre>\n void vTask1( void * pvParameters )\n {\n\t for( ;; )\n\t {\n\t\t // Task code goes here.\n\n\t\t // ...\n\n\t\t // At some point the task wants to perform a long operation during\n\t\t // which it does not want to get swapped out.  It cannot use\n\t\t // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the\n\t\t // operation may cause interrupts to be missed - including the\n\t\t // ticks.\n\n\t\t // Prevent the real time kernel swapping out the task.\n\t\t vTaskSuspendAll ();\n\n\t\t // Perform the operation here.  There is no need to use critical\n\t\t // sections as we have all the microcontroller processing time.\n\t\t // During this time interrupts will still operate and the real\n\t\t // time kernel tick count will be maintained.\n\n\t\t // ...\n\n\t\t // The operation is complete.  Restart the kernel.  We want to force\n\t\t // a context switch - but there is no point if resuming the scheduler\n\t\t // caused a context switch already.\n\t\t if( !xTaskResumeAll () )\n\t\t {\n\t\t\t  taskYIELD ();\n\t\t }\n\t }\n }\n   </pre>\n * \\defgroup xTaskResumeAll xTaskResumeAll\n * \\ingroup SchedulerControl\n */\nBaseType_t xTaskResumeAll( void ) PRIVILEGED_FUNCTION;\n\n/*-----------------------------------------------------------\n * TASK UTILITIES\n *----------------------------------------------------------*/\n\n/**\n * task. h\n * <PRE>TickType_t xTaskGetTickCount( void );</PRE>\n *\n * @return The count of ticks since vTaskStartScheduler was called.\n *\n * \\defgroup xTaskGetTickCount xTaskGetTickCount\n * \\ingroup TaskUtils\n */\nTickType_t xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>TickType_t xTaskGetTickCountFromISR( void );</PRE>\n *\n * @return The count of ticks since vTaskStartScheduler was called.\n *\n * This is a version of xTaskGetTickCount() that is safe to be called from an\n * ISR - provided that TickType_t is the natural word size of the\n * microcontroller being used or interrupt nesting is either not supported or\n * not being used.\n *\n * \\defgroup xTaskGetTickCountFromISR xTaskGetTickCountFromISR\n * \\ingroup TaskUtils\n */\nTickType_t xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>uint16_t uxTaskGetNumberOfTasks( void );</PRE>\n *\n * @return The number of tasks that the real time kernel is currently managing.\n * This includes all ready, blocked and suspended tasks.  A task that\n * has been deleted but not yet freed by the idle task will also be\n * included in the count.\n *\n * \\defgroup uxTaskGetNumberOfTasks uxTaskGetNumberOfTasks\n * \\ingroup TaskUtils\n */\nUBaseType_t uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>char *pcTaskGetName( TaskHandle_t xTaskToQuery );</PRE>\n *\n * @return The text (human readable) name of the task referenced by the handle\n * xTaskToQuery.  A task can query its own name by either passing in its own\n * handle, or by setting xTaskToQuery to NULL.\n *\n * \\defgroup pcTaskGetName pcTaskGetName\n * \\ingroup TaskUtils\n */\nchar *pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\n/**\n * task. h\n * <PRE>TaskHandle_t xTaskGetHandle( const char *pcNameToQuery );</PRE>\n *\n * NOTE:  This function takes a relatively long time to complete and should be\n * used sparingly.\n *\n * @return The handle of the task that has the human readable name pcNameToQuery.\n * NULL is returned if no matching name is found.  INCLUDE_xTaskGetHandle\n * must be set to 1 in FreeRTOSConfig.h for pcTaskGetHandle() to be available.\n *\n * \\defgroup pcTaskGetHandle pcTaskGetHandle\n * \\ingroup TaskUtils\n */\nTaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\n/**\n * task.h\n * <PRE>UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );</PRE>\n *\n * INCLUDE_uxTaskGetStackHighWaterMark must be set to 1 in FreeRTOSConfig.h for\n * this function to be available.\n *\n * Returns the high water mark of the stack associated with xTask.  That is,\n * the minimum free stack space there has been (in words, so on a 32 bit machine\n * a value of 1 means 4 bytes) since the task started.  The smaller the returned\n * number the closer the task has come to overflowing its stack.\n *\n * uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the\n * same except for their return type.  Using configSTACK_DEPTH_TYPE allows the\n * user to determine the return type.  It gets around the problem of the value\n * overflowing on 8-bit types without breaking backward compatibility for\n * applications that expect an 8-bit return type.\n *\n * @param xTask Handle of the task associated with the stack to be checked.\n * Set xTask to NULL to check the stack of the calling task.\n *\n * @return The smallest amount of free stack space there has been (in words, so\n * actual spaces on the stack rather than bytes) since the task referenced by\n * xTask was created.\n */\nUBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n/**\n * task.h\n * <PRE>configSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask );</PRE>\n *\n * INCLUDE_uxTaskGetStackHighWaterMark2 must be set to 1 in FreeRTOSConfig.h for\n * this function to be available.\n *\n * Returns the high water mark of the stack associated with xTask.  That is,\n * the minimum free stack space there has been (in words, so on a 32 bit machine\n * a value of 1 means 4 bytes) since the task started.  The smaller the returned\n * number the closer the task has come to overflowing its stack.\n *\n * uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the\n * same except for their return type.  Using configSTACK_DEPTH_TYPE allows the\n * user to determine the return type.  It gets around the problem of the value\n * overflowing on 8-bit types without breaking backward compatibility for\n * applications that expect an 8-bit return type.\n *\n * @param xTask Handle of the task associated with the stack to be checked.\n * Set xTask to NULL to check the stack of the calling task.\n *\n * @return The smallest amount of free stack space there has been (in words, so\n * actual spaces on the stack rather than bytes) since the task referenced by\n * xTask was created.\n */\nconfigSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n/* When using trace macros it is sometimes necessary to include task.h before\nFreeRTOS.h.  When this is done TaskHookFunction_t will not yet have been defined,\nso the following two prototypes will cause a compilation error.  This can be\nfixed by simply guarding against the inclusion of these two prototypes unless\nthey are explicitly required by the configUSE_APPLICATION_TASK_TAG configuration\nconstant. */\n#ifdef configUSE_APPLICATION_TASK_TAG\n\t#if configUSE_APPLICATION_TASK_TAG == 1\n\t\t/**\n\t\t * task.h\n\t\t * <pre>void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction );</pre>\n\t\t *\n\t\t * Sets pxHookFunction to be the task hook function used by the task xTask.\n\t\t * Passing xTask as NULL has the effect of setting the calling tasks hook\n\t\t * function.\n\t\t */\n\t\tvoid vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) PRIVILEGED_FUNCTION;\n\n\t\t/**\n\t\t * task.h\n\t\t * <pre>void xTaskGetApplicationTaskTag( TaskHandle_t xTask );</pre>\n\t\t *\n\t\t * Returns the pxHookFunction value assigned to the task xTask.  Do not\n\t\t * call from an interrupt service routine - call\n\t\t * xTaskGetApplicationTaskTagFromISR() instead.\n\t\t */\n\t\tTaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n\t\t/**\n\t\t * task.h\n\t\t * <pre>void xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask );</pre>\n\t\t *\n\t\t * Returns the pxHookFunction value assigned to the task xTask.  Can\n\t\t * be called from an interrupt service routine.\n\t\t */\n\t\tTaskHookFunction_t xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\t#endif /* configUSE_APPLICATION_TASK_TAG ==1 */\n#endif /* ifdef configUSE_APPLICATION_TASK_TAG */\n\n#if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 )\n\n\t/* Each task contains an array of pointers that is dimensioned by the\n\tconfigNUM_THREAD_LOCAL_STORAGE_POINTERS setting in FreeRTOSConfig.h.  The\n\tkernel does not use the pointers itself, so the application writer can use\n\tthe pointers for any purpose they wish.  The following two functions are\n\tused to set and query a pointer respectively. */\n\tvoid vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) PRIVILEGED_FUNCTION;\n\tvoid *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/**\n * task.h\n * <pre>BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter );</pre>\n *\n * Calls the hook function associated with xTask.  Passing xTask as NULL has\n * the effect of calling the Running tasks (the calling task) hook function.\n *\n * pvParameter is passed to the hook function for the task to interpret as it\n * wants.  The return value is the value returned by the task hook function\n * registered by the user.\n */\nBaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) PRIVILEGED_FUNCTION;\n\n/**\n * xTaskGetIdleTaskHandle() is only available if\n * INCLUDE_xTaskGetIdleTaskHandle is set to 1 in FreeRTOSConfig.h.\n *\n * Simply returns the handle of the idle task.  It is not valid to call\n * xTaskGetIdleTaskHandle() before the scheduler has been started.\n */\nTaskHandle_t xTaskGetIdleTaskHandle( void ) PRIVILEGED_FUNCTION;\n\n/**\n * configUSE_TRACE_FACILITY must be defined as 1 in FreeRTOSConfig.h for\n * uxTaskGetSystemState() to be available.\n *\n * uxTaskGetSystemState() populates an TaskStatus_t structure for each task in\n * the system.  TaskStatus_t structures contain, among other things, members\n * for the task handle, task name, task priority, task state, and total amount\n * of run time consumed by the task.  See the TaskStatus_t structure\n * definition in this file for the full member list.\n *\n * NOTE:  This function is intended for debugging use only as its use results in\n * the scheduler remaining suspended for an extended period.\n *\n * @param pxTaskStatusArray A pointer to an array of TaskStatus_t structures.\n * The array must contain at least one TaskStatus_t structure for each task\n * that is under the control of the RTOS.  The number of tasks under the control\n * of the RTOS can be determined using the uxTaskGetNumberOfTasks() API function.\n *\n * @param uxArraySize The size of the array pointed to by the pxTaskStatusArray\n * parameter.  The size is specified as the number of indexes in the array, or\n * the number of TaskStatus_t structures contained in the array, not by the\n * number of bytes in the array.\n *\n * @param pulTotalRunTime If configGENERATE_RUN_TIME_STATS is set to 1 in\n * FreeRTOSConfig.h then *pulTotalRunTime is set by uxTaskGetSystemState() to the\n * total run time (as defined by the run time stats clock, see\n * http://www.freertos.org/rtos-run-time-stats.html) since the target booted.\n * pulTotalRunTime can be set to NULL to omit the total run time information.\n *\n * @return The number of TaskStatus_t structures that were populated by\n * uxTaskGetSystemState().  This should equal the number returned by the\n * uxTaskGetNumberOfTasks() API function, but will be zero if the value passed\n * in the uxArraySize parameter was too small.\n *\n * Example usage:\n   <pre>\n    // This example demonstrates how a human readable table of run time stats\n\t// information is generated from raw data provided by uxTaskGetSystemState().\n\t// The human readable table is written to pcWriteBuffer\n\tvoid vTaskGetRunTimeStats( char *pcWriteBuffer )\n\t{\n\tTaskStatus_t *pxTaskStatusArray;\n\tvolatile UBaseType_t uxArraySize, x;\n\tuint32_t ulTotalRunTime, ulStatsAsPercentage;\n\n\t\t// Make sure the write buffer does not contain a string.\n\t\t*pcWriteBuffer = 0x00;\n\n\t\t// Take a snapshot of the number of tasks in case it changes while this\n\t\t// function is executing.\n\t\tuxArraySize = uxTaskGetNumberOfTasks();\n\n\t\t// Allocate a TaskStatus_t structure for each task.  An array could be\n\t\t// allocated statically at compile time.\n\t\tpxTaskStatusArray = pvPortMalloc( uxArraySize * sizeof( TaskStatus_t ) );\n\n\t\tif( pxTaskStatusArray != NULL )\n\t\t{\n\t\t\t// Generate raw status information about each task.\n\t\t\tuxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalRunTime );\n\n\t\t\t// For percentage calculations.\n\t\t\tulTotalRunTime /= 100UL;\n\n\t\t\t// Avoid divide by zero errors.\n\t\t\tif( ulTotalRunTime > 0 )\n\t\t\t{\n\t\t\t\t// For each populated position in the pxTaskStatusArray array,\n\t\t\t\t// format the raw data as human readable ASCII data\n\t\t\t\tfor( x = 0; x < uxArraySize; x++ )\n\t\t\t\t{\n\t\t\t\t\t// What percentage of the total run time has the task used?\n\t\t\t\t\t// This will always be rounded down to the nearest integer.\n\t\t\t\t\t// ulTotalRunTimeDiv100 has already been divided by 100.\n\t\t\t\t\tulStatsAsPercentage = pxTaskStatusArray[ x ].ulRunTimeCounter / ulTotalRunTime;\n\n\t\t\t\t\tif( ulStatsAsPercentage > 0UL )\n\t\t\t\t\t{\n\t\t\t\t\t\tsprintf( pcWriteBuffer, \"%s\\t\\t%lu\\t\\t%lu%%\\r\\n\", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter, ulStatsAsPercentage );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// If the percentage is zero here then the task has\n\t\t\t\t\t\t// consumed less than 1% of the total run time.\n\t\t\t\t\t\tsprintf( pcWriteBuffer, \"%s\\t\\t%lu\\t\\t<1%%\\r\\n\", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter );\n\t\t\t\t\t}\n\n\t\t\t\t\tpcWriteBuffer += strlen( ( char * ) pcWriteBuffer );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// The array is no longer needed, free the memory it consumes.\n\t\t\tvPortFree( pxTaskStatusArray );\n\t\t}\n\t}\n\t</pre>\n */\nUBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>void vTaskList( char *pcWriteBuffer );</PRE>\n *\n * configUSE_TRACE_FACILITY and configUSE_STATS_FORMATTING_FUNCTIONS must\n * both be defined as 1 for this function to be available.  See the\n * configuration section of the FreeRTOS.org website for more information.\n *\n * NOTE 1: This function will disable interrupts for its duration.  It is\n * not intended for normal application runtime use but as a debug aid.\n *\n * Lists all the current tasks, along with their current state and stack\n * usage high water mark.\n *\n * Tasks are reported as blocked ('B'), ready ('R'), deleted ('D') or\n * suspended ('S').\n *\n * PLEASE NOTE:\n *\n * This function is provided for convenience only, and is used by many of the\n * demo applications.  Do not consider it to be part of the scheduler.\n *\n * vTaskList() calls uxTaskGetSystemState(), then formats part of the\n * uxTaskGetSystemState() output into a human readable table that displays task\n * names, states and stack usage.\n *\n * vTaskList() has a dependency on the sprintf() C library function that might\n * bloat the code size, use a lot of stack, and provide different results on\n * different platforms.  An alternative, tiny, third party, and limited\n * functionality implementation of sprintf() is provided in many of the\n * FreeRTOS/Demo sub-directories in a file called printf-stdarg.c (note\n * printf-stdarg.c does not provide a full snprintf() implementation!).\n *\n * It is recommended that production systems call uxTaskGetSystemState()\n * directly to get access to raw stats data, rather than indirectly through a\n * call to vTaskList().\n *\n * @param pcWriteBuffer A buffer into which the above mentioned details\n * will be written, in ASCII form.  This buffer is assumed to be large\n * enough to contain the generated report.  Approximately 40 bytes per\n * task should be sufficient.\n *\n * \\defgroup vTaskList vTaskList\n * \\ingroup TaskUtils\n */\nvoid vTaskList( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\n/**\n * task. h\n * <PRE>void vTaskGetRunTimeStats( char *pcWriteBuffer );</PRE>\n *\n * configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS\n * must both be defined as 1 for this function to be available.  The application\n * must also then provide definitions for\n * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE()\n * to configure a peripheral timer/counter and return the timers current count\n * value respectively.  The counter should be at least 10 times the frequency of\n * the tick count.\n *\n * NOTE 1: This function will disable interrupts for its duration.  It is\n * not intended for normal application runtime use but as a debug aid.\n *\n * Setting configGENERATE_RUN_TIME_STATS to 1 will result in a total\n * accumulated execution time being stored for each task.  The resolution\n * of the accumulated time value depends on the frequency of the timer\n * configured by the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() macro.\n * Calling vTaskGetRunTimeStats() writes the total execution time of each\n * task into a buffer, both as an absolute count value and as a percentage\n * of the total system execution time.\n *\n * NOTE 2:\n *\n * This function is provided for convenience only, and is used by many of the\n * demo applications.  Do not consider it to be part of the scheduler.\n *\n * vTaskGetRunTimeStats() calls uxTaskGetSystemState(), then formats part of the\n * uxTaskGetSystemState() output into a human readable table that displays the\n * amount of time each task has spent in the Running state in both absolute and\n * percentage terms.\n *\n * vTaskGetRunTimeStats() has a dependency on the sprintf() C library function\n * that might bloat the code size, use a lot of stack, and provide different\n * results on different platforms.  An alternative, tiny, third party, and\n * limited functionality implementation of sprintf() is provided in many of the\n * FreeRTOS/Demo sub-directories in a file called printf-stdarg.c (note\n * printf-stdarg.c does not provide a full snprintf() implementation!).\n *\n * It is recommended that production systems call uxTaskGetSystemState() directly\n * to get access to raw stats data, rather than indirectly through a call to\n * vTaskGetRunTimeStats().\n *\n * @param pcWriteBuffer A buffer into which the execution times will be\n * written, in ASCII form.  This buffer is assumed to be large enough to\n * contain the generated report.  Approximately 40 bytes per task should\n * be sufficient.\n *\n * \\defgroup vTaskGetRunTimeStats vTaskGetRunTimeStats\n * \\ingroup TaskUtils\n */\nvoid vTaskGetRunTimeStats( char *pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\n/**\n* task. h\n* <PRE>uint32_t ulTaskGetIdleRunTimeCounter( void );</PRE>\n*\n* configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS\n* must both be defined as 1 for this function to be available.  The application\n* must also then provide definitions for\n* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE()\n* to configure a peripheral timer/counter and return the timers current count\n* value respectively.  The counter should be at least 10 times the frequency of\n* the tick count.\n*\n* Setting configGENERATE_RUN_TIME_STATS to 1 will result in a total\n* accumulated execution time being stored for each task.  The resolution\n* of the accumulated time value depends on the frequency of the timer\n* configured by the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() macro.\n* While uxTaskGetSystemState() and vTaskGetRunTimeStats() writes the total\n* execution time of each task into a buffer, ulTaskGetIdleRunTimeCounter()\n* returns the total execution time of just the idle task.\n*\n* @return The total run time of the idle task.  This is the amount of time the\n* idle task has actually been executing.  The unit of time is dependent on the\n* frequency configured using the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and\n* portGET_RUN_TIME_COUNTER_VALUE() macros.\n*\n* \\defgroup ulTaskGetIdleRunTimeCounter ulTaskGetIdleRunTimeCounter\n* \\ingroup TaskUtils\n*/\nuint32_t ulTaskGetIdleRunTimeCounter( void ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>BaseType_t xTaskNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction );</PRE>\n *\n * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this\n * function to be available.\n *\n * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private\n * \"notification value\", which is a 32-bit unsigned integer (uint32_t).\n *\n * Events can be sent to a task using an intermediary object.  Examples of such\n * objects are queues, semaphores, mutexes and event groups.  Task notifications\n * are a method of sending an event directly to a task without the need for such\n * an intermediary object.\n *\n * A notification sent to a task can optionally perform an action, such as\n * update, overwrite or increment the task's notification value.  In that way\n * task notifications can be used to send data to a task, or be used as light\n * weight and fast binary or counting semaphores.\n *\n * A notification sent to a task will remain pending until it is cleared by the\n * task calling xTaskNotifyWait() or ulTaskNotifyTake().  If the task was\n * already in the Blocked state to wait for a notification when the notification\n * arrives then the task will automatically be removed from the Blocked state\n * (unblocked) and the notification cleared.\n *\n * A task can use xTaskNotifyWait() to [optionally] block to wait for a\n * notification to be pending, or ulTaskNotifyTake() to [optionally] block\n * to wait for its notification value to have a non-zero value.  The task does\n * not consume any CPU time while it is in the Blocked state.\n *\n * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details.\n *\n * @param xTaskToNotify The handle of the task being notified.  The handle to a\n * task can be returned from the xTaskCreate() API function used to create the\n * task, and the handle of the currently running task can be obtained by calling\n * xTaskGetCurrentTaskHandle().\n *\n * @param ulValue Data that can be sent with the notification.  How the data is\n * used depends on the value of the eAction parameter.\n *\n * @param eAction Specifies how the notification updates the task's notification\n * value, if at all.  Valid values for eAction are as follows:\n *\n * eSetBits -\n * The task's notification value is bitwise ORed with ulValue.  xTaskNofify()\n * always returns pdPASS in this case.\n *\n * eIncrement -\n * The task's notification value is incremented.  ulValue is not used and\n * xTaskNotify() always returns pdPASS in this case.\n *\n * eSetValueWithOverwrite -\n * The task's notification value is set to the value of ulValue, even if the\n * task being notified had not yet processed the previous notification (the\n * task already had a notification pending).  xTaskNotify() always returns\n * pdPASS in this case.\n *\n * eSetValueWithoutOverwrite -\n * If the task being notified did not already have a notification pending then\n * the task's notification value is set to ulValue and xTaskNotify() will\n * return pdPASS.  If the task being notified already had a notification\n * pending then no action is performed and pdFAIL is returned.\n *\n * eNoAction -\n * The task receives a notification without its notification value being\n * updated.  ulValue is not used and xTaskNotify() always returns pdPASS in\n * this case.\n *\n *  pulPreviousNotificationValue -\n *  Can be used to pass out the subject task's notification value before any\n *  bits are modified by the notify function.\n *\n * @return Dependent on the value of eAction.  See the description of the\n * eAction parameter.\n *\n * \\defgroup xTaskNotify xTaskNotify\n * \\ingroup TaskNotifications\n */\nBaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) PRIVILEGED_FUNCTION;\n#define xTaskNotify( xTaskToNotify, ulValue, eAction ) xTaskGenericNotify( ( xTaskToNotify ), ( ulValue ), ( eAction ), NULL )\n#define xTaskNotifyAndQuery( xTaskToNotify, ulValue, eAction, pulPreviousNotifyValue ) xTaskGenericNotify( ( xTaskToNotify ), ( ulValue ), ( eAction ), ( pulPreviousNotifyValue ) )\n\n/**\n * task. h\n * <PRE>BaseType_t xTaskNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, BaseType_t *pxHigherPriorityTaskWoken );</PRE>\n *\n * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this\n * function to be available.\n *\n * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private\n * \"notification value\", which is a 32-bit unsigned integer (uint32_t).\n *\n * A version of xTaskNotify() that can be used from an interrupt service routine\n * (ISR).\n *\n * Events can be sent to a task using an intermediary object.  Examples of such\n * objects are queues, semaphores, mutexes and event groups.  Task notifications\n * are a method of sending an event directly to a task without the need for such\n * an intermediary object.\n *\n * A notification sent to a task can optionally perform an action, such as\n * update, overwrite or increment the task's notification value.  In that way\n * task notifications can be used to send data to a task, or be used as light\n * weight and fast binary or counting semaphores.\n *\n * A notification sent to a task will remain pending until it is cleared by the\n * task calling xTaskNotifyWait() or ulTaskNotifyTake().  If the task was\n * already in the Blocked state to wait for a notification when the notification\n * arrives then the task will automatically be removed from the Blocked state\n * (unblocked) and the notification cleared.\n *\n * A task can use xTaskNotifyWait() to [optionally] block to wait for a\n * notification to be pending, or ulTaskNotifyTake() to [optionally] block\n * to wait for its notification value to have a non-zero value.  The task does\n * not consume any CPU time while it is in the Blocked state.\n *\n * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details.\n *\n * @param xTaskToNotify The handle of the task being notified.  The handle to a\n * task can be returned from the xTaskCreate() API function used to create the\n * task, and the handle of the currently running task can be obtained by calling\n * xTaskGetCurrentTaskHandle().\n *\n * @param ulValue Data that can be sent with the notification.  How the data is\n * used depends on the value of the eAction parameter.\n *\n * @param eAction Specifies how the notification updates the task's notification\n * value, if at all.  Valid values for eAction are as follows:\n *\n * eSetBits -\n * The task's notification value is bitwise ORed with ulValue.  xTaskNofify()\n * always returns pdPASS in this case.\n *\n * eIncrement -\n * The task's notification value is incremented.  ulValue is not used and\n * xTaskNotify() always returns pdPASS in this case.\n *\n * eSetValueWithOverwrite -\n * The task's notification value is set to the value of ulValue, even if the\n * task being notified had not yet processed the previous notification (the\n * task already had a notification pending).  xTaskNotify() always returns\n * pdPASS in this case.\n *\n * eSetValueWithoutOverwrite -\n * If the task being notified did not already have a notification pending then\n * the task's notification value is set to ulValue and xTaskNotify() will\n * return pdPASS.  If the task being notified already had a notification\n * pending then no action is performed and pdFAIL is returned.\n *\n * eNoAction -\n * The task receives a notification without its notification value being\n * updated.  ulValue is not used and xTaskNotify() always returns pdPASS in\n * this case.\n *\n * @param pxHigherPriorityTaskWoken  xTaskNotifyFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if sending the notification caused the\n * task to which the notification was sent to leave the Blocked state, and the\n * unblocked task has a priority higher than the currently running task.  If\n * xTaskNotifyFromISR() sets this value to pdTRUE then a context switch should\n * be requested before the interrupt is exited.  How a context switch is\n * requested from an ISR is dependent on the port - see the documentation page\n * for the port in use.\n *\n * @return Dependent on the value of eAction.  See the description of the\n * eAction parameter.\n *\n * \\defgroup xTaskNotify xTaskNotify\n * \\ingroup TaskNotifications\n */\nBaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n#define xTaskNotifyFromISR( xTaskToNotify, ulValue, eAction, pxHigherPriorityTaskWoken ) xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( ulValue ), ( eAction ), NULL, ( pxHigherPriorityTaskWoken ) )\n#define xTaskNotifyAndQueryFromISR( xTaskToNotify, ulValue, eAction, pulPreviousNotificationValue, pxHigherPriorityTaskWoken ) xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( ulValue ), ( eAction ), ( pulPreviousNotificationValue ), ( pxHigherPriorityTaskWoken ) )\n\n/**\n * task. h\n * <PRE>BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait );</pre>\n *\n * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this\n * function to be available.\n *\n * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private\n * \"notification value\", which is a 32-bit unsigned integer (uint32_t).\n *\n * Events can be sent to a task using an intermediary object.  Examples of such\n * objects are queues, semaphores, mutexes and event groups.  Task notifications\n * are a method of sending an event directly to a task without the need for such\n * an intermediary object.\n *\n * A notification sent to a task can optionally perform an action, such as\n * update, overwrite or increment the task's notification value.  In that way\n * task notifications can be used to send data to a task, or be used as light\n * weight and fast binary or counting semaphores.\n *\n * A notification sent to a task will remain pending until it is cleared by the\n * task calling xTaskNotifyWait() or ulTaskNotifyTake().  If the task was\n * already in the Blocked state to wait for a notification when the notification\n * arrives then the task will automatically be removed from the Blocked state\n * (unblocked) and the notification cleared.\n *\n * A task can use xTaskNotifyWait() to [optionally] block to wait for a\n * notification to be pending, or ulTaskNotifyTake() to [optionally] block\n * to wait for its notification value to have a non-zero value.  The task does\n * not consume any CPU time while it is in the Blocked state.\n *\n * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details.\n *\n * @param ulBitsToClearOnEntry Bits that are set in ulBitsToClearOnEntry value\n * will be cleared in the calling task's notification value before the task\n * checks to see if any notifications are pending, and optionally blocks if no\n * notifications are pending.  Setting ulBitsToClearOnEntry to ULONG_MAX (if\n * limits.h is included) or 0xffffffffUL (if limits.h is not included) will have\n * the effect of resetting the task's notification value to 0.  Setting\n * ulBitsToClearOnEntry to 0 will leave the task's notification value unchanged.\n *\n * @param ulBitsToClearOnExit If a notification is pending or received before\n * the calling task exits the xTaskNotifyWait() function then the task's\n * notification value (see the xTaskNotify() API function) is passed out using\n * the pulNotificationValue parameter.  Then any bits that are set in\n * ulBitsToClearOnExit will be cleared in the task's notification value (note\n * *pulNotificationValue is set before any bits are cleared).  Setting\n * ulBitsToClearOnExit to ULONG_MAX (if limits.h is included) or 0xffffffffUL\n * (if limits.h is not included) will have the effect of resetting the task's\n * notification value to 0 before the function exits.  Setting\n * ulBitsToClearOnExit to 0 will leave the task's notification value unchanged\n * when the function exits (in which case the value passed out in\n * pulNotificationValue will match the task's notification value).\n *\n * @param pulNotificationValue Used to pass the task's notification value out\n * of the function.  Note the value passed out will not be effected by the\n * clearing of any bits caused by ulBitsToClearOnExit being non-zero.\n *\n * @param xTicksToWait The maximum amount of time that the task should wait in\n * the Blocked state for a notification to be received, should a notification\n * not already be pending when xTaskNotifyWait() was called.  The task\n * will not consume any processing time while it is in the Blocked state.  This\n * is specified in kernel ticks, the macro pdMS_TO_TICSK( value_in_ms ) can be\n * used to convert a time specified in milliseconds to a time specified in\n * ticks.\n *\n * @return If a notification was received (including notifications that were\n * already pending when xTaskNotifyWait was called) then pdPASS is\n * returned.  Otherwise pdFAIL is returned.\n *\n * \\defgroup xTaskNotifyWait xTaskNotifyWait\n * \\ingroup TaskNotifications\n */\nBaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>BaseType_t xTaskNotifyGive( TaskHandle_t xTaskToNotify );</PRE>\n *\n * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this macro\n * to be available.\n *\n * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private\n * \"notification value\", which is a 32-bit unsigned integer (uint32_t).\n *\n * Events can be sent to a task using an intermediary object.  Examples of such\n * objects are queues, semaphores, mutexes and event groups.  Task notifications\n * are a method of sending an event directly to a task without the need for such\n * an intermediary object.\n *\n * A notification sent to a task can optionally perform an action, such as\n * update, overwrite or increment the task's notification value.  In that way\n * task notifications can be used to send data to a task, or be used as light\n * weight and fast binary or counting semaphores.\n *\n * xTaskNotifyGive() is a helper macro intended for use when task notifications\n * are used as light weight and faster binary or counting semaphore equivalents.\n * Actual FreeRTOS semaphores are given using the xSemaphoreGive() API function,\n * the equivalent action that instead uses a task notification is\n * xTaskNotifyGive().\n *\n * When task notifications are being used as a binary or counting semaphore\n * equivalent then the task being notified should wait for the notification\n * using the ulTaskNotificationTake() API function rather than the\n * xTaskNotifyWait() API function.\n *\n * See http://www.FreeRTOS.org/RTOS-task-notifications.html for more details.\n *\n * @param xTaskToNotify The handle of the task being notified.  The handle to a\n * task can be returned from the xTaskCreate() API function used to create the\n * task, and the handle of the currently running task can be obtained by calling\n * xTaskGetCurrentTaskHandle().\n *\n * @return xTaskNotifyGive() is a macro that calls xTaskNotify() with the\n * eAction parameter set to eIncrement - so pdPASS is always returned.\n *\n * \\defgroup xTaskNotifyGive xTaskNotifyGive\n * \\ingroup TaskNotifications\n */\n#define xTaskNotifyGive( xTaskToNotify ) xTaskGenericNotify( ( xTaskToNotify ), ( 0 ), eIncrement, NULL )\n\n/**\n * task. h\n * <PRE>void vTaskNotifyGiveFromISR( TaskHandle_t xTaskHandle, BaseType_t *pxHigherPriorityTaskWoken );\n *\n * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this macro\n * to be available.\n *\n * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private\n * \"notification value\", which is a 32-bit unsigned integer (uint32_t).\n *\n * A version of xTaskNotifyGive() that can be called from an interrupt service\n * routine (ISR).\n *\n * Events can be sent to a task using an intermediary object.  Examples of such\n * objects are queues, semaphores, mutexes and event groups.  Task notifications\n * are a method of sending an event directly to a task without the need for such\n * an intermediary object.\n *\n * A notification sent to a task can optionally perform an action, such as\n * update, overwrite or increment the task's notification value.  In that way\n * task notifications can be used to send data to a task, or be used as light\n * weight and fast binary or counting semaphores.\n *\n * vTaskNotifyGiveFromISR() is intended for use when task notifications are\n * used as light weight and faster binary or counting semaphore equivalents.\n * Actual FreeRTOS semaphores are given from an ISR using the\n * xSemaphoreGiveFromISR() API function, the equivalent action that instead uses\n * a task notification is vTaskNotifyGiveFromISR().\n *\n * When task notifications are being used as a binary or counting semaphore\n * equivalent then the task being notified should wait for the notification\n * using the ulTaskNotificationTake() API function rather than the\n * xTaskNotifyWait() API function.\n *\n * See http://www.FreeRTOS.org/RTOS-task-notifications.html for more details.\n *\n * @param xTaskToNotify The handle of the task being notified.  The handle to a\n * task can be returned from the xTaskCreate() API function used to create the\n * task, and the handle of the currently running task can be obtained by calling\n * xTaskGetCurrentTaskHandle().\n *\n * @param pxHigherPriorityTaskWoken  vTaskNotifyGiveFromISR() will set\n * *pxHigherPriorityTaskWoken to pdTRUE if sending the notification caused the\n * task to which the notification was sent to leave the Blocked state, and the\n * unblocked task has a priority higher than the currently running task.  If\n * vTaskNotifyGiveFromISR() sets this value to pdTRUE then a context switch\n * should be requested before the interrupt is exited.  How a context switch is\n * requested from an ISR is dependent on the port - see the documentation page\n * for the port in use.\n *\n * \\defgroup xTaskNotifyWait xTaskNotifyWait\n * \\ingroup TaskNotifications\n */\nvoid vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait );</pre>\n *\n * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this\n * function to be available.\n *\n * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private\n * \"notification value\", which is a 32-bit unsigned integer (uint32_t).\n *\n * Events can be sent to a task using an intermediary object.  Examples of such\n * objects are queues, semaphores, mutexes and event groups.  Task notifications\n * are a method of sending an event directly to a task without the need for such\n * an intermediary object.\n *\n * A notification sent to a task can optionally perform an action, such as\n * update, overwrite or increment the task's notification value.  In that way\n * task notifications can be used to send data to a task, or be used as light\n * weight and fast binary or counting semaphores.\n *\n * ulTaskNotifyTake() is intended for use when a task notification is used as a\n * faster and lighter weight binary or counting semaphore alternative.  Actual\n * FreeRTOS semaphores are taken using the xSemaphoreTake() API function, the\n * equivalent action that instead uses a task notification is\n * ulTaskNotifyTake().\n *\n * When a task is using its notification value as a binary or counting semaphore\n * other tasks should send notifications to it using the xTaskNotifyGive()\n * macro, or xTaskNotify() function with the eAction parameter set to\n * eIncrement.\n *\n * ulTaskNotifyTake() can either clear the task's notification value to\n * zero on exit, in which case the notification value acts like a binary\n * semaphore, or decrement the task's notification value on exit, in which case\n * the notification value acts like a counting semaphore.\n *\n * A task can use ulTaskNotifyTake() to [optionally] block to wait for a\n * the task's notification value to be non-zero.  The task does not consume any\n * CPU time while it is in the Blocked state.\n *\n * Where as xTaskNotifyWait() will return when a notification is pending,\n * ulTaskNotifyTake() will return when the task's notification value is\n * not zero.\n *\n * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details.\n *\n * @param xClearCountOnExit if xClearCountOnExit is pdFALSE then the task's\n * notification value is decremented when the function exits.  In this way the\n * notification value acts like a counting semaphore.  If xClearCountOnExit is\n * not pdFALSE then the task's notification value is cleared to zero when the\n * function exits.  In this way the notification value acts like a binary\n * semaphore.\n *\n * @param xTicksToWait The maximum amount of time that the task should wait in\n * the Blocked state for the task's notification value to be greater than zero,\n * should the count not already be greater than zero when\n * ulTaskNotifyTake() was called.  The task will not consume any processing\n * time while it is in the Blocked state.  This is specified in kernel ticks,\n * the macro pdMS_TO_TICSK( value_in_ms ) can be used to convert a time\n * specified in milliseconds to a time specified in ticks.\n *\n * @return The task's notification count before it is either cleared to zero or\n * decremented (see the xClearCountOnExit parameter).\n *\n * \\defgroup ulTaskNotifyTake ulTaskNotifyTake\n * \\ingroup TaskNotifications\n */\nuint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * task. h\n * <PRE>BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask );</pre>\n *\n * If the notification state of the task referenced by the handle xTask is\n * eNotified, then set the task's notification state to eNotWaitingNotification.\n * The task's notification value is not altered.  Set xTask to NULL to clear the\n * notification state of the calling task.\n *\n * @return pdTRUE if the task's notification state was set to\n * eNotWaitingNotification, otherwise pdFALSE.\n * \\defgroup xTaskNotifyStateClear xTaskNotifyStateClear\n * \\ingroup TaskNotifications\n */\nBaseType_t xTaskNotifyStateClear( TaskHandle_t xTask );\n\n/**\n* task. h\n* <PRE>uint32_t ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear );</pre>\n*\n* Clears the bits specified by the ulBitsToClear bit mask in the notification\n* value of the task referenced by xTask.\n*\n* Set ulBitsToClear to 0xffffffff (UINT_MAX on 32-bit architectures) to clear\n* the notification value to 0.  Set ulBitsToClear to 0 to query the task's\n* notification value without clearing any bits.\n*\n* @return The value of the target task's notification value before the bits\n* specified by ulBitsToClear were cleared.\n* \\defgroup ulTaskNotifyValueClear ulTaskNotifyValueClear\n* \\ingroup TaskNotifications\n*/\nuint32_t ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION;\n\n/**\n * task.h\n * <pre>void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut )</pre>\n *\n * Capture the current time for future use with xTaskCheckForTimeOut().\n *\n * @param pxTimeOut Pointer to a timeout object into which the current time\n * is to be captured.  The captured time includes the tick count and the number\n * of times the tick count has overflowed since the system first booted.\n * \\defgroup vTaskSetTimeOutState vTaskSetTimeOutState\n * \\ingroup TaskCtrl\n */\nvoid vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION;\n\n/**\n * task.h\n * <pre>BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait );</pre>\n *\n * Determines if pxTicksToWait ticks has passed since a time was captured\n * using a call to vTaskSetTimeOutState().  The captured time includes the tick\n * count and the number of times the tick count has overflowed.\n *\n * @param pxTimeOut The time status as captured previously using\n * vTaskSetTimeOutState. If the timeout has not yet occurred, it is updated\n * to reflect the current time status.\n * @param pxTicksToWait The number of ticks to check for timeout i.e. if\n * pxTicksToWait ticks have passed since pxTimeOut was last updated (either by\n * vTaskSetTimeOutState() or xTaskCheckForTimeOut()), the timeout has occurred.\n * If the timeout has not occurred, pxTIcksToWait is updated to reflect the\n * number of remaining ticks.\n *\n * @return If timeout has occurred, pdTRUE is returned. Otherwise pdFALSE is\n * returned and pxTicksToWait is updated to reflect the number of remaining\n * ticks.\n *\n * @see https://www.freertos.org/xTaskCheckForTimeOut.html\n *\n * Example Usage:\n * <pre>\n\t// Driver library function used to receive uxWantedBytes from an Rx buffer\n\t// that is filled by a UART interrupt. If there are not enough bytes in the\n\t// Rx buffer then the task enters the Blocked state until it is notified that\n\t// more data has been placed into the buffer. If there is still not enough\n\t// data then the task re-enters the Blocked state, and xTaskCheckForTimeOut()\n\t// is used to re-calculate the Block time to ensure the total amount of time\n\t// spent in the Blocked state does not exceed MAX_TIME_TO_WAIT. This\n\t// continues until either the buffer contains at least uxWantedBytes bytes,\n\t// or the total amount of time spent in the Blocked state reaches\n\t// MAX_TIME_TO_WAIT – at which point the task reads however many bytes are\n\t// available up to a maximum of uxWantedBytes.\n\n\tsize_t xUART_Receive( uint8_t *pucBuffer, size_t uxWantedBytes )\n\t{\n\tsize_t uxReceived = 0;\n\tTickType_t xTicksToWait = MAX_TIME_TO_WAIT;\n\tTimeOut_t xTimeOut;\n\n\t\t// Initialize xTimeOut.  This records the time at which this function\n\t\t// was entered.\n\t\tvTaskSetTimeOutState( &xTimeOut );\n\n\t\t// Loop until the buffer contains the wanted number of bytes, or a\n\t\t// timeout occurs.\n\t\twhile( UART_bytes_in_rx_buffer( pxUARTInstance ) < uxWantedBytes )\n\t\t{\n\t\t\t// The buffer didn't contain enough data so this task is going to\n\t\t\t// enter the Blocked state. Adjusting xTicksToWait to account for\n\t\t\t// any time that has been spent in the Blocked state within this\n\t\t\t// function so far to ensure the total amount of time spent in the\n\t\t\t// Blocked state does not exceed MAX_TIME_TO_WAIT.\n\t\t\tif( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) != pdFALSE )\n\t\t\t{\n\t\t\t\t//Timed out before the wanted number of bytes were available,\n\t\t\t\t// exit the loop.\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Wait for a maximum of xTicksToWait ticks to be notified that the\n\t\t\t// receive interrupt has placed more data into the buffer.\n\t\t\tulTaskNotifyTake( pdTRUE, xTicksToWait );\n\t\t}\n\n\t\t// Attempt to read uxWantedBytes from the receive buffer into pucBuffer.\n\t\t// The actual number of bytes read (which might be less than\n\t\t// uxWantedBytes) is returned.\n\t\tuxReceived = UART_read_from_receive_buffer( pxUARTInstance,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpucBuffer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tuxWantedBytes );\n\n\t\treturn uxReceived;\n\t}\n </pre>\n * \\defgroup xTaskCheckForTimeOut xTaskCheckForTimeOut\n * \\ingroup TaskCtrl\n */\nBaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) PRIVILEGED_FUNCTION;\n\n/*-----------------------------------------------------------\n * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES\n *----------------------------------------------------------*/\n\n/*\n * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS ONLY\n * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS\n * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\n *\n * Called from the real time kernel tick (either preemptive or cooperative),\n * this increments the tick count and checks if any tasks that are blocked\n * for a finite period required removing from a blocked list and placing on\n * a ready list.  If a non-zero value is returned then a context switch is\n * required because either:\n *   + A task was removed from a blocked list because its timeout had expired,\n *     or\n *   + Time slicing is in use and there is a task of equal priority to the\n *     currently running task.\n */\nBaseType_t xTaskIncrementTick( void ) PRIVILEGED_FUNCTION;\n\n/*\n * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS AN\n * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\n *\n * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED.\n *\n * Removes the calling task from the ready list and places it both\n * on the list of tasks waiting for a particular event, and the\n * list of delayed tasks.  The task will be removed from both lists\n * and replaced on the ready list should either the event occur (and\n * there be no higher priority tasks waiting on the same event) or\n * the delay period expires.\n *\n * The 'unordered' version replaces the event list item value with the\n * xItemValue value, and inserts the list item at the end of the list.\n *\n * The 'ordered' version uses the existing event list item value (which is the\n * owning tasks priority) to insert the list item into the event list is task\n * priority order.\n *\n * @param pxEventList The list containing tasks that are blocked waiting\n * for the event to occur.\n *\n * @param xItemValue The item value to use for the event list item when the\n * event list is not ordered by task priority.\n *\n * @param xTicksToWait The maximum amount of time that the task should wait\n * for the event to occur.  This is specified in kernel ticks,the constant\n * portTICK_PERIOD_MS can be used to convert kernel ticks into a real time\n * period.\n */\nvoid vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\nvoid vTaskPlaceOnUnorderedEventList( List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/*\n * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS AN\n * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\n *\n * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED.\n *\n * This function performs nearly the same function as vTaskPlaceOnEventList().\n * The difference being that this function does not permit tasks to block\n * indefinitely, whereas vTaskPlaceOnEventList() does.\n *\n */\nvoid vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION;\n\n/*\n * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS AN\n * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\n *\n * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED.\n *\n * Removes a task from both the specified event list and the list of blocked\n * tasks, and places it on a ready queue.\n *\n * xTaskRemoveFromEventList()/vTaskRemoveFromUnorderedEventList() will be called\n * if either an event occurs to unblock a task, or the block timeout period\n * expires.\n *\n * xTaskRemoveFromEventList() is used when the event list is in task priority\n * order.  It removes the list item from the head of the event list as that will\n * have the highest priority owning task of all the tasks on the event list.\n * vTaskRemoveFromUnorderedEventList() is used when the event list is not\n * ordered and the event list items hold something other than the owning tasks\n * priority.  In this case the event list item value is updated to the value\n * passed in the xItemValue parameter.\n *\n * @return pdTRUE if the task being removed has a higher priority than the task\n * making the call, otherwise pdFALSE.\n */\nBaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) PRIVILEGED_FUNCTION;\nvoid vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue ) PRIVILEGED_FUNCTION;\n\n/*\n * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS ONLY\n * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS\n * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\n *\n * Sets the pointer to the current TCB to the TCB of the highest priority task\n * that is ready to run.\n */\nportDONT_DISCARD void vTaskSwitchContext( void ) PRIVILEGED_FUNCTION;\n\n/*\n * THESE FUNCTIONS MUST NOT BE USED FROM APPLICATION CODE.  THEY ARE USED BY\n * THE EVENT BITS MODULE.\n */\nTickType_t uxTaskResetEventItemValue( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Return the handle of the calling task.\n */\nTaskHandle_t xTaskGetCurrentTaskHandle( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Shortcut used by the queue implementation to prevent unnecessary call to\n * taskYIELD();\n */\nvoid vTaskMissedYield( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Returns the scheduler state as taskSCHEDULER_RUNNING,\n * taskSCHEDULER_NOT_STARTED or taskSCHEDULER_SUSPENDED.\n */\nBaseType_t xTaskGetSchedulerState( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Raises the priority of the mutex holder to that of the calling task should\n * the mutex holder have a priority less than the calling task.\n */\nBaseType_t xTaskPriorityInherit( TaskHandle_t const pxMutexHolder ) PRIVILEGED_FUNCTION;\n\n/*\n * Set the priority of a task back to its proper priority in the case that it\n * inherited a higher priority while it was holding a semaphore.\n */\nBaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder ) PRIVILEGED_FUNCTION;\n\n/*\n * If a higher priority task attempting to obtain a mutex caused a lower\n * priority task to inherit the higher priority task's priority - but the higher\n * priority task then timed out without obtaining the mutex, then the lower\n * priority task will disinherit the priority again - but only down as far as\n * the highest priority task that is still waiting for the mutex (if there were\n * more than one task waiting for the mutex).\n */\nvoid vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask ) PRIVILEGED_FUNCTION;\n\n/*\n * Get the uxTCBNumber assigned to the task referenced by the xTask parameter.\n */\nUBaseType_t uxTaskGetTaskNumber( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n/*\n * Set the uxTaskNumber of the task referenced by the xTask parameter to\n * uxHandle.\n */\nvoid vTaskSetTaskNumber( TaskHandle_t xTask, const UBaseType_t uxHandle ) PRIVILEGED_FUNCTION;\n\n/*\n * Only available when configUSE_TICKLESS_IDLE is set to 1.\n * If tickless mode is being used, or a low power mode is implemented, then\n * the tick interrupt will not execute during idle periods.  When this is the\n * case, the tick count value maintained by the scheduler needs to be kept up\n * to date with the actual execution time by being skipped forward by a time\n * equal to the idle period.\n */\nvoid vTaskStepTick( const TickType_t xTicksToJump ) PRIVILEGED_FUNCTION;\n\n/* Correct the tick count value after the application code has held\ninterrupts disabled for an extended period.  xTicksToCatchUp is the number\nof tick interrupts that have been missed due to interrupts being disabled.\nIts value is not computed automatically, so must be computed by the\napplication writer.\n\nThis function is similar to vTaskStepTick(), however, unlike\nvTaskStepTick(), xTaskCatchUpTicks() may move the tick count forward past a\ntime at which a task should be removed from the blocked state.  That means\ntasks may have to be removed from the blocked state as the tick count is\nmoved. */\nBaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) PRIVILEGED_FUNCTION;\n\n/*\n * Only available when configUSE_TICKLESS_IDLE is set to 1.\n * Provided for use within portSUPPRESS_TICKS_AND_SLEEP() to allow the port\n * specific sleep function to determine if it is ok to proceed with the sleep,\n * and if it is ok to proceed, if it is ok to sleep indefinitely.\n *\n * This function is necessary because portSUPPRESS_TICKS_AND_SLEEP() is only\n * called with the scheduler suspended, not from within a critical section.  It\n * is therefore possible for an interrupt to request a context switch between\n * portSUPPRESS_TICKS_AND_SLEEP() and the low power mode actually being\n * entered.  eTaskConfirmSleepModeStatus() should be called from a short\n * critical section between the timer being stopped and the sleep mode being\n * entered to ensure it is ok to proceed into the sleep mode.\n */\neSleepModeStatus eTaskConfirmSleepModeStatus( void ) PRIVILEGED_FUNCTION;\n\n/*\n * For internal use only.  Increment the mutex held count when a mutex is\n * taken and return the handle of the task that has taken the mutex.\n */\nTaskHandle_t pvTaskIncrementMutexHeldCount( void ) PRIVILEGED_FUNCTION;\n\n/*\n * For internal use only.  Same as vTaskSetTimeOutState(), but without a critial\n * section.\n */\nvoid vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION;\n\n\n#ifdef __cplusplus\n}\n#endif\n#endif /* INC_TASK_H */\n\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n\n#ifndef TIMERS_H\n#define TIMERS_H\n\n#ifndef INC_FREERTOS_H\n\t#error \"include FreeRTOS.h must appear in source files before include timers.h\"\n#endif\n\n/*lint -save -e537 This headers are only multiply included if the application code\nhappens to also be including task.h. */\n#include \"task.h\"\n/*lint -restore */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*-----------------------------------------------------------\n * MACROS AND DEFINITIONS\n *----------------------------------------------------------*/\n\n/* IDs for commands that can be sent/received on the timer queue.  These are to\nbe used solely through the macros that make up the public software timer API,\nas defined below.  The commands that are sent from interrupts must use the\nhighest numbers as tmrFIRST_FROM_ISR_COMMAND is used to determine if the task\nor interrupt version of the queue send function should be used. */\n#define tmrCOMMAND_EXECUTE_CALLBACK_FROM_ISR \t( ( BaseType_t ) -2 )\n#define tmrCOMMAND_EXECUTE_CALLBACK\t\t\t\t( ( BaseType_t ) -1 )\n#define tmrCOMMAND_START_DONT_TRACE\t\t\t\t( ( BaseType_t ) 0 )\n#define tmrCOMMAND_START\t\t\t\t\t    ( ( BaseType_t ) 1 )\n#define tmrCOMMAND_RESET\t\t\t\t\t\t( ( BaseType_t ) 2 )\n#define tmrCOMMAND_STOP\t\t\t\t\t\t\t( ( BaseType_t ) 3 )\n#define tmrCOMMAND_CHANGE_PERIOD\t\t\t\t( ( BaseType_t ) 4 )\n#define tmrCOMMAND_DELETE\t\t\t\t\t\t( ( BaseType_t ) 5 )\n\n#define tmrFIRST_FROM_ISR_COMMAND\t\t\t\t( ( BaseType_t ) 6 )\n#define tmrCOMMAND_START_FROM_ISR\t\t\t\t( ( BaseType_t ) 6 )\n#define tmrCOMMAND_RESET_FROM_ISR\t\t\t\t( ( BaseType_t ) 7 )\n#define tmrCOMMAND_STOP_FROM_ISR\t\t\t\t( ( BaseType_t ) 8 )\n#define tmrCOMMAND_CHANGE_PERIOD_FROM_ISR\t\t( ( BaseType_t ) 9 )\n\n\n/**\n * Type by which software timers are referenced.  For example, a call to\n * xTimerCreate() returns an TimerHandle_t variable that can then be used to\n * reference the subject timer in calls to other software timer API functions\n * (for example, xTimerStart(), xTimerReset(), etc.).\n */\nstruct tmrTimerControl; /* The old naming convention is used to prevent breaking kernel aware debuggers. */\ntypedef struct tmrTimerControl * TimerHandle_t;\n\n/*\n * Defines the prototype to which timer callback functions must conform.\n */\ntypedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer );\n\n/*\n * Defines the prototype to which functions used with the\n * xTimerPendFunctionCallFromISR() function must conform.\n */\ntypedef void (*PendedFunction_t)( void *, uint32_t );\n\n/**\n * TimerHandle_t xTimerCreate( \tconst char * const pcTimerName,\n * \t\t\t\t\t\t\t\tTickType_t xTimerPeriodInTicks,\n * \t\t\t\t\t\t\t\tUBaseType_t uxAutoReload,\n * \t\t\t\t\t\t\t\tvoid * pvTimerID,\n * \t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction );\n *\n * Creates a new software timer instance, and returns a handle by which the\n * created software timer can be referenced.\n *\n * Internally, within the FreeRTOS implementation, software timers use a block\n * of memory, in which the timer data structure is stored.  If a software timer\n * is created using xTimerCreate() then the required memory is automatically\n * dynamically allocated inside the xTimerCreate() function.  (see\n * http://www.freertos.org/a00111.html).  If a software timer is created using\n * xTimerCreateStatic() then the application writer must provide the memory that\n * will get used by the software timer.  xTimerCreateStatic() therefore allows a\n * software timer to be created without using any dynamic memory allocation.\n *\n * Timers are created in the dormant state.  The xTimerStart(), xTimerReset(),\n * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and\n * xTimerChangePeriodFromISR() API functions can all be used to transition a\n * timer into the active state.\n *\n * @param pcTimerName A text name that is assigned to the timer.  This is done\n * purely to assist debugging.  The kernel itself only ever references a timer\n * by its handle, and never by its name.\n *\n * @param xTimerPeriodInTicks The timer period.  The time is defined in tick\n * periods so the constant portTICK_PERIOD_MS can be used to convert a time that\n * has been specified in milliseconds.  For example, if the timer must expire\n * after 100 ticks, then xTimerPeriodInTicks should be set to 100.\n * Alternatively, if the timer must expire after 500ms, then xPeriod can be set\n * to ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than or\n * equal to 1000.  Time timer period must be greater than 0.\n *\n * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will\n * expire repeatedly with a frequency set by the xTimerPeriodInTicks parameter.\n * If uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and\n * enter the dormant state after it expires.\n *\n * @param pvTimerID An identifier that is assigned to the timer being created.\n * Typically this would be used in the timer callback function to identify which\n * timer expired when the same callback function is assigned to more than one\n * timer.\n *\n * @param pxCallbackFunction The function to call when the timer expires.\n * Callback functions must have the prototype defined by TimerCallbackFunction_t,\n * which is\t\"void vCallbackFunction( TimerHandle_t xTimer );\".\n *\n * @return If the timer is successfully created then a handle to the newly\n * created timer is returned.  If the timer cannot be created because there is\n * insufficient FreeRTOS heap remaining to allocate the timer\n * structures then NULL is returned.\n *\n * Example usage:\n * @verbatim\n * #define NUM_TIMERS 5\n *\n * // An array to hold handles to the created timers.\n * TimerHandle_t xTimers[ NUM_TIMERS ];\n *\n * // An array to hold a count of the number of times each timer expires.\n * int32_t lExpireCounters[ NUM_TIMERS ] = { 0 };\n *\n * // Define a callback function that will be used by multiple timer instances.\n * // The callback function does nothing but count the number of times the\n * // associated timer expires, and stop the timer once the timer has expired\n * // 10 times.\n * void vTimerCallback( TimerHandle_t pxTimer )\n * {\n * int32_t lArrayIndex;\n * const int32_t xMaxExpiryCountBeforeStopping = 10;\n *\n * \t   // Optionally do something if the pxTimer parameter is NULL.\n * \t   configASSERT( pxTimer );\n *\n *     // Which timer expired?\n *     lArrayIndex = ( int32_t ) pvTimerGetTimerID( pxTimer );\n *\n *     // Increment the number of times that pxTimer has expired.\n *     lExpireCounters[ lArrayIndex ] += 1;\n *\n *     // If the timer has expired 10 times then stop it from running.\n *     if( lExpireCounters[ lArrayIndex ] == xMaxExpiryCountBeforeStopping )\n *     {\n *         // Do not use a block time if calling a timer API function from a\n *         // timer callback function, as doing so could cause a deadlock!\n *         xTimerStop( pxTimer, 0 );\n *     }\n * }\n *\n * void main( void )\n * {\n * int32_t x;\n *\n *     // Create then start some timers.  Starting the timers before the scheduler\n *     // has been started means the timers will start running immediately that\n *     // the scheduler starts.\n *     for( x = 0; x < NUM_TIMERS; x++ )\n *     {\n *         xTimers[ x ] = xTimerCreate(    \"Timer\",       // Just a text name, not used by the kernel.\n *                                         ( 100 * x ),   // The timer period in ticks.\n *                                         pdTRUE,        // The timers will auto-reload themselves when they expire.\n *                                         ( void * ) x,  // Assign each timer a unique id equal to its array index.\n *                                         vTimerCallback // Each timer calls the same callback when it expires.\n *                                     );\n *\n *         if( xTimers[ x ] == NULL )\n *         {\n *             // The timer was not created.\n *         }\n *         else\n *         {\n *             // Start the timer.  No block time is specified, and even if one was\n *             // it would be ignored because the scheduler has not yet been\n *             // started.\n *             if( xTimerStart( xTimers[ x ], 0 ) != pdPASS )\n *             {\n *                 // The timer could not be set into the Active state.\n *             }\n *         }\n *     }\n *\n *     // ...\n *     // Create tasks here.\n *     // ...\n *\n *     // Starting the scheduler will start the timers running as they have already\n *     // been set into the active state.\n *     vTaskStartScheduler();\n *\n *     // Should not reach here.\n *     for( ;; );\n * }\n * @endverbatim\n */\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\tTimerHandle_t xTimerCreate(\tconst char * const pcTimerName,\t\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\tconst TickType_t xTimerPeriodInTicks,\n\t\t\t\t\t\t\t\tconst UBaseType_t uxAutoReload,\n\t\t\t\t\t\t\t\tvoid * const pvTimerID,\n\t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction ) PRIVILEGED_FUNCTION;\n#endif\n\n/**\n * TimerHandle_t xTimerCreateStatic(const char * const pcTimerName,\n * \t\t\t\t\t\t\t\t\tTickType_t xTimerPeriodInTicks,\n * \t\t\t\t\t\t\t\t\tUBaseType_t uxAutoReload,\n * \t\t\t\t\t\t\t\t\tvoid * pvTimerID,\n * \t\t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction,\n *\t\t\t\t\t\t\t\t\tStaticTimer_t *pxTimerBuffer );\n *\n * Creates a new software timer instance, and returns a handle by which the\n * created software timer can be referenced.\n *\n * Internally, within the FreeRTOS implementation, software timers use a block\n * of memory, in which the timer data structure is stored.  If a software timer\n * is created using xTimerCreate() then the required memory is automatically\n * dynamically allocated inside the xTimerCreate() function.  (see\n * http://www.freertos.org/a00111.html).  If a software timer is created using\n * xTimerCreateStatic() then the application writer must provide the memory that\n * will get used by the software timer.  xTimerCreateStatic() therefore allows a\n * software timer to be created without using any dynamic memory allocation.\n *\n * Timers are created in the dormant state.  The xTimerStart(), xTimerReset(),\n * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and\n * xTimerChangePeriodFromISR() API functions can all be used to transition a\n * timer into the active state.\n *\n * @param pcTimerName A text name that is assigned to the timer.  This is done\n * purely to assist debugging.  The kernel itself only ever references a timer\n * by its handle, and never by its name.\n *\n * @param xTimerPeriodInTicks The timer period.  The time is defined in tick\n * periods so the constant portTICK_PERIOD_MS can be used to convert a time that\n * has been specified in milliseconds.  For example, if the timer must expire\n * after 100 ticks, then xTimerPeriodInTicks should be set to 100.\n * Alternatively, if the timer must expire after 500ms, then xPeriod can be set\n * to ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than or\n * equal to 1000.  The timer period must be greater than 0.\n *\n * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will\n * expire repeatedly with a frequency set by the xTimerPeriodInTicks parameter.\n * If uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and\n * enter the dormant state after it expires.\n *\n * @param pvTimerID An identifier that is assigned to the timer being created.\n * Typically this would be used in the timer callback function to identify which\n * timer expired when the same callback function is assigned to more than one\n * timer.\n *\n * @param pxCallbackFunction The function to call when the timer expires.\n * Callback functions must have the prototype defined by TimerCallbackFunction_t,\n * which is \"void vCallbackFunction( TimerHandle_t xTimer );\".\n *\n * @param pxTimerBuffer Must point to a variable of type StaticTimer_t, which\n * will be then be used to hold the software timer's data structures, removing\n * the need for the memory to be allocated dynamically.\n *\n * @return If the timer is created then a handle to the created timer is\n * returned.  If pxTimerBuffer was NULL then NULL is returned.\n *\n * Example usage:\n * @verbatim\n *\n * // The buffer used to hold the software timer's data structure.\n * static StaticTimer_t xTimerBuffer;\n *\n * // A variable that will be incremented by the software timer's callback\n * // function.\n * UBaseType_t uxVariableToIncrement = 0;\n *\n * // A software timer callback function that increments a variable passed to\n * // it when the software timer was created.  After the 5th increment the\n * // callback function stops the software timer.\n * static void prvTimerCallback( TimerHandle_t xExpiredTimer )\n * {\n * UBaseType_t *puxVariableToIncrement;\n * BaseType_t xReturned;\n *\n *     // Obtain the address of the variable to increment from the timer ID.\n *     puxVariableToIncrement = ( UBaseType_t * ) pvTimerGetTimerID( xExpiredTimer );\n *\n *     // Increment the variable to show the timer callback has executed.\n *     ( *puxVariableToIncrement )++;\n *\n *     // If this callback has executed the required number of times, stop the\n *     // timer.\n *     if( *puxVariableToIncrement == 5 )\n *     {\n *         // This is called from a timer callback so must not block.\n *         xTimerStop( xExpiredTimer, staticDONT_BLOCK );\n *     }\n * }\n *\n *\n * void main( void )\n * {\n *     // Create the software time.  xTimerCreateStatic() has an extra parameter\n *     // than the normal xTimerCreate() API function.  The parameter is a pointer\n *     // to the StaticTimer_t structure that will hold the software timer\n *     // structure.  If the parameter is passed as NULL then the structure will be\n *     // allocated dynamically, just as if xTimerCreate() had been called.\n *     xTimer = xTimerCreateStatic( \"T1\",             // Text name for the task.  Helps debugging only.  Not used by FreeRTOS.\n *                                  xTimerPeriod,     // The period of the timer in ticks.\n *                                  pdTRUE,           // This is an auto-reload timer.\n *                                  ( void * ) &uxVariableToIncrement,    // A variable incremented by the software timer's callback function\n *                                  prvTimerCallback, // The function to execute when the timer expires.\n *                                  &xTimerBuffer );  // The buffer that will hold the software timer structure.\n *\n *     // The scheduler has not started yet so a block time is not used.\n *     xReturned = xTimerStart( xTimer, 0 );\n *\n *     // ...\n *     // Create tasks here.\n *     // ...\n *\n *     // Starting the scheduler will start the timers running as they have already\n *     // been set into the active state.\n *     vTaskStartScheduler();\n *\n *     // Should not reach here.\n *     for( ;; );\n * }\n * @endverbatim\n */\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\tTimerHandle_t xTimerCreateStatic(\tconst char * const pcTimerName,\t\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\t\tconst TickType_t xTimerPeriodInTicks,\n\t\t\t\t\t\t\t\t\t\tconst UBaseType_t uxAutoReload,\n\t\t\t\t\t\t\t\t\t\tvoid * const pvTimerID,\n\t\t\t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction,\n\t\t\t\t\t\t\t\t\t\tStaticTimer_t *pxTimerBuffer ) PRIVILEGED_FUNCTION;\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n/**\n * void *pvTimerGetTimerID( TimerHandle_t xTimer );\n *\n * Returns the ID assigned to the timer.\n *\n * IDs are assigned to timers using the pvTimerID parameter of the call to\n * xTimerCreated() that was used to create the timer, and by calling the\n * vTimerSetTimerID() API function.\n *\n * If the same callback function is assigned to multiple timers then the timer\n * ID can be used as time specific (timer local) storage.\n *\n * @param xTimer The timer being queried.\n *\n * @return The ID assigned to the timer being queried.\n *\n * Example usage:\n *\n * See the xTimerCreate() API function example usage scenario.\n */\nvoid *pvTimerGetTimerID( const TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\n\n/**\n * void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID );\n *\n * Sets the ID assigned to the timer.\n *\n * IDs are assigned to timers using the pvTimerID parameter of the call to\n * xTimerCreated() that was used to create the timer.\n *\n * If the same callback function is assigned to multiple timers then the timer\n * ID can be used as time specific (timer local) storage.\n *\n * @param xTimer The timer being updated.\n *\n * @param pvNewID The ID to assign to the timer.\n *\n * Example usage:\n *\n * See the xTimerCreate() API function example usage scenario.\n */\nvoid vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) PRIVILEGED_FUNCTION;\n\n/**\n * BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer );\n *\n * Queries a timer to see if it is active or dormant.\n *\n * A timer will be dormant if:\n *     1) It has been created but not started, or\n *     2) It is an expired one-shot timer that has not been restarted.\n *\n * Timers are created in the dormant state.  The xTimerStart(), xTimerReset(),\n * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and\n * xTimerChangePeriodFromISR() API functions can all be used to transition a timer into the\n * active state.\n *\n * @param xTimer The timer being queried.\n *\n * @return pdFALSE will be returned if the timer is dormant.  A value other than\n * pdFALSE will be returned if the timer is active.\n *\n * Example usage:\n * @verbatim\n * // This function assumes xTimer has already been created.\n * void vAFunction( TimerHandle_t xTimer )\n * {\n *     if( xTimerIsTimerActive( xTimer ) != pdFALSE ) // or more simply and equivalently \"if( xTimerIsTimerActive( xTimer ) )\"\n *     {\n *         // xTimer is active, do something.\n *     }\n *     else\n *     {\n *         // xTimer is not active, do something else.\n *     }\n * }\n * @endverbatim\n */\nBaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\n\n/**\n * TaskHandle_t xTimerGetTimerDaemonTaskHandle( void );\n *\n * Simply returns the handle of the timer service/daemon task.  It it not valid\n * to call xTimerGetTimerDaemonTaskHandle() before the scheduler has been started.\n */\nTaskHandle_t xTimerGetTimerDaemonTaskHandle( void ) PRIVILEGED_FUNCTION;\n\n/**\n * BaseType_t xTimerStart( TimerHandle_t xTimer, TickType_t xTicksToWait );\n *\n * Timer functionality is provided by a timer service/daemon task.  Many of the\n * public FreeRTOS timer API functions send commands to the timer service task\n * through a queue called the timer command queue.  The timer command queue is\n * private to the kernel itself and is not directly accessible to application\n * code.  The length of the timer command queue is set by the\n * configTIMER_QUEUE_LENGTH configuration constant.\n *\n * xTimerStart() starts a timer that was previously created using the\n * xTimerCreate() API function.  If the timer had already been started and was\n * already in the active state, then xTimerStart() has equivalent functionality\n * to the xTimerReset() API function.\n *\n * Starting a timer ensures the timer is in the active state.  If the timer\n * is not stopped, deleted, or reset in the mean time, the callback function\n * associated with the timer will get called 'n' ticks after xTimerStart() was\n * called, where 'n' is the timers defined period.\n *\n * It is valid to call xTimerStart() before the scheduler has been started, but\n * when this is done the timer will not actually start until the scheduler is\n * started, and the timers expiry time will be relative to when the scheduler is\n * started, not relative to when xTimerStart() was called.\n *\n * The configUSE_TIMERS configuration constant must be set to 1 for xTimerStart()\n * to be available.\n *\n * @param xTimer The handle of the timer being started/restarted.\n *\n * @param xTicksToWait Specifies the time, in ticks, that the calling task should\n * be held in the Blocked state to wait for the start command to be successfully\n * sent to the timer command queue, should the queue already be full when\n * xTimerStart() was called.  xTicksToWait is ignored if xTimerStart() is called\n * before the scheduler is started.\n *\n * @return pdFAIL will be returned if the start command could not be sent to\n * the timer command queue even after xTicksToWait ticks had passed.  pdPASS will\n * be returned if the command was successfully sent to the timer command queue.\n * When the command is actually processed will depend on the priority of the\n * timer service/daemon task relative to other tasks in the system, although the\n * timers expiry time is relative to when xTimerStart() is actually called.  The\n * timer service/daemon task priority is set by the configTIMER_TASK_PRIORITY\n * configuration constant.\n *\n * Example usage:\n *\n * See the xTimerCreate() API function example usage scenario.\n *\n */\n#define xTimerStart( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) )\n\n/**\n * BaseType_t xTimerStop( TimerHandle_t xTimer, TickType_t xTicksToWait );\n *\n * Timer functionality is provided by a timer service/daemon task.  Many of the\n * public FreeRTOS timer API functions send commands to the timer service task\n * through a queue called the timer command queue.  The timer command queue is\n * private to the kernel itself and is not directly accessible to application\n * code.  The length of the timer command queue is set by the\n * configTIMER_QUEUE_LENGTH configuration constant.\n *\n * xTimerStop() stops a timer that was previously started using either of the\n * The xTimerStart(), xTimerReset(), xTimerStartFromISR(), xTimerResetFromISR(),\n * xTimerChangePeriod() or xTimerChangePeriodFromISR() API functions.\n *\n * Stopping a timer ensures the timer is not in the active state.\n *\n * The configUSE_TIMERS configuration constant must be set to 1 for xTimerStop()\n * to be available.\n *\n * @param xTimer The handle of the timer being stopped.\n *\n * @param xTicksToWait Specifies the time, in ticks, that the calling task should\n * be held in the Blocked state to wait for the stop command to be successfully\n * sent to the timer command queue, should the queue already be full when\n * xTimerStop() was called.  xTicksToWait is ignored if xTimerStop() is called\n * before the scheduler is started.\n *\n * @return pdFAIL will be returned if the stop command could not be sent to\n * the timer command queue even after xTicksToWait ticks had passed.  pdPASS will\n * be returned if the command was successfully sent to the timer command queue.\n * When the command is actually processed will depend on the priority of the\n * timer service/daemon task relative to other tasks in the system.  The timer\n * service/daemon task priority is set by the configTIMER_TASK_PRIORITY\n * configuration constant.\n *\n * Example usage:\n *\n * See the xTimerCreate() API function example usage scenario.\n *\n */\n#define xTimerStop( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP, 0U, NULL, ( xTicksToWait ) )\n\n/**\n * BaseType_t xTimerChangePeriod( \tTimerHandle_t xTimer,\n *\t\t\t\t\t\t\t\t\t\tTickType_t xNewPeriod,\n *\t\t\t\t\t\t\t\t\t\tTickType_t xTicksToWait );\n *\n * Timer functionality is provided by a timer service/daemon task.  Many of the\n * public FreeRTOS timer API functions send commands to the timer service task\n * through a queue called the timer command queue.  The timer command queue is\n * private to the kernel itself and is not directly accessible to application\n * code.  The length of the timer command queue is set by the\n * configTIMER_QUEUE_LENGTH configuration constant.\n *\n * xTimerChangePeriod() changes the period of a timer that was previously\n * created using the xTimerCreate() API function.\n *\n * xTimerChangePeriod() can be called to change the period of an active or\n * dormant state timer.\n *\n * The configUSE_TIMERS configuration constant must be set to 1 for\n * xTimerChangePeriod() to be available.\n *\n * @param xTimer The handle of the timer that is having its period changed.\n *\n * @param xNewPeriod The new period for xTimer. Timer periods are specified in\n * tick periods, so the constant portTICK_PERIOD_MS can be used to convert a time\n * that has been specified in milliseconds.  For example, if the timer must\n * expire after 100 ticks, then xNewPeriod should be set to 100.  Alternatively,\n * if the timer must expire after 500ms, then xNewPeriod can be set to\n * ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than\n * or equal to 1000.\n *\n * @param xTicksToWait Specifies the time, in ticks, that the calling task should\n * be held in the Blocked state to wait for the change period command to be\n * successfully sent to the timer command queue, should the queue already be\n * full when xTimerChangePeriod() was called.  xTicksToWait is ignored if\n * xTimerChangePeriod() is called before the scheduler is started.\n *\n * @return pdFAIL will be returned if the change period command could not be\n * sent to the timer command queue even after xTicksToWait ticks had passed.\n * pdPASS will be returned if the command was successfully sent to the timer\n * command queue.  When the command is actually processed will depend on the\n * priority of the timer service/daemon task relative to other tasks in the\n * system.  The timer service/daemon task priority is set by the\n * configTIMER_TASK_PRIORITY configuration constant.\n *\n * Example usage:\n * @verbatim\n * // This function assumes xTimer has already been created.  If the timer\n * // referenced by xTimer is already active when it is called, then the timer\n * // is deleted.  If the timer referenced by xTimer is not active when it is\n * // called, then the period of the timer is set to 500ms and the timer is\n * // started.\n * void vAFunction( TimerHandle_t xTimer )\n * {\n *     if( xTimerIsTimerActive( xTimer ) != pdFALSE ) // or more simply and equivalently \"if( xTimerIsTimerActive( xTimer ) )\"\n *     {\n *         // xTimer is already active - delete it.\n *         xTimerDelete( xTimer );\n *     }\n *     else\n *     {\n *         // xTimer is not active, change its period to 500ms.  This will also\n *         // cause the timer to start.  Block for a maximum of 100 ticks if the\n *         // change period command cannot immediately be sent to the timer\n *         // command queue.\n *         if( xTimerChangePeriod( xTimer, 500 / portTICK_PERIOD_MS, 100 ) == pdPASS )\n *         {\n *             // The command was successfully sent.\n *         }\n *         else\n *         {\n *             // The command could not be sent, even after waiting for 100 ticks\n *             // to pass.  Take appropriate action here.\n *         }\n *     }\n * }\n * @endverbatim\n */\n #define xTimerChangePeriod( xTimer, xNewPeriod, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_CHANGE_PERIOD, ( xNewPeriod ), NULL, ( xTicksToWait ) )\n\n/**\n * BaseType_t xTimerDelete( TimerHandle_t xTimer, TickType_t xTicksToWait );\n *\n * Timer functionality is provided by a timer service/daemon task.  Many of the\n * public FreeRTOS timer API functions send commands to the timer service task\n * through a queue called the timer command queue.  The timer command queue is\n * private to the kernel itself and is not directly accessible to application\n * code.  The length of the timer command queue is set by the\n * configTIMER_QUEUE_LENGTH configuration constant.\n *\n * xTimerDelete() deletes a timer that was previously created using the\n * xTimerCreate() API function.\n *\n * The configUSE_TIMERS configuration constant must be set to 1 for\n * xTimerDelete() to be available.\n *\n * @param xTimer The handle of the timer being deleted.\n *\n * @param xTicksToWait Specifies the time, in ticks, that the calling task should\n * be held in the Blocked state to wait for the delete command to be\n * successfully sent to the timer command queue, should the queue already be\n * full when xTimerDelete() was called.  xTicksToWait is ignored if xTimerDelete()\n * is called before the scheduler is started.\n *\n * @return pdFAIL will be returned if the delete command could not be sent to\n * the timer command queue even after xTicksToWait ticks had passed.  pdPASS will\n * be returned if the command was successfully sent to the timer command queue.\n * When the command is actually processed will depend on the priority of the\n * timer service/daemon task relative to other tasks in the system.  The timer\n * service/daemon task priority is set by the configTIMER_TASK_PRIORITY\n * configuration constant.\n *\n * Example usage:\n *\n * See the xTimerChangePeriod() API function example usage scenario.\n */\n#define xTimerDelete( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_DELETE, 0U, NULL, ( xTicksToWait ) )\n\n/**\n * BaseType_t xTimerReset( TimerHandle_t xTimer, TickType_t xTicksToWait );\n *\n * Timer functionality is provided by a timer service/daemon task.  Many of the\n * public FreeRTOS timer API functions send commands to the timer service task\n * through a queue called the timer command queue.  The timer command queue is\n * private to the kernel itself and is not directly accessible to application\n * code.  The length of the timer command queue is set by the\n * configTIMER_QUEUE_LENGTH configuration constant.\n *\n * xTimerReset() re-starts a timer that was previously created using the\n * xTimerCreate() API function.  If the timer had already been started and was\n * already in the active state, then xTimerReset() will cause the timer to\n * re-evaluate its expiry time so that it is relative to when xTimerReset() was\n * called.  If the timer was in the dormant state then xTimerReset() has\n * equivalent functionality to the xTimerStart() API function.\n *\n * Resetting a timer ensures the timer is in the active state.  If the timer\n * is not stopped, deleted, or reset in the mean time, the callback function\n * associated with the timer will get called 'n' ticks after xTimerReset() was\n * called, where 'n' is the timers defined period.\n *\n * It is valid to call xTimerReset() before the scheduler has been started, but\n * when this is done the timer will not actually start until the scheduler is\n * started, and the timers expiry time will be relative to when the scheduler is\n * started, not relative to when xTimerReset() was called.\n *\n * The configUSE_TIMERS configuration constant must be set to 1 for xTimerReset()\n * to be available.\n *\n * @param xTimer The handle of the timer being reset/started/restarted.\n *\n * @param xTicksToWait Specifies the time, in ticks, that the calling task should\n * be held in the Blocked state to wait for the reset command to be successfully\n * sent to the timer command queue, should the queue already be full when\n * xTimerReset() was called.  xTicksToWait is ignored if xTimerReset() is called\n * before the scheduler is started.\n *\n * @return pdFAIL will be returned if the reset command could not be sent to\n * the timer command queue even after xTicksToWait ticks had passed.  pdPASS will\n * be returned if the command was successfully sent to the timer command queue.\n * When the command is actually processed will depend on the priority of the\n * timer service/daemon task relative to other tasks in the system, although the\n * timers expiry time is relative to when xTimerStart() is actually called.  The\n * timer service/daemon task priority is set by the configTIMER_TASK_PRIORITY\n * configuration constant.\n *\n * Example usage:\n * @verbatim\n * // When a key is pressed, an LCD back-light is switched on.  If 5 seconds pass\n * // without a key being pressed, then the LCD back-light is switched off.  In\n * // this case, the timer is a one-shot timer.\n *\n * TimerHandle_t xBacklightTimer = NULL;\n *\n * // The callback function assigned to the one-shot timer.  In this case the\n * // parameter is not used.\n * void vBacklightTimerCallback( TimerHandle_t pxTimer )\n * {\n *     // The timer expired, therefore 5 seconds must have passed since a key\n *     // was pressed.  Switch off the LCD back-light.\n *     vSetBacklightState( BACKLIGHT_OFF );\n * }\n *\n * // The key press event handler.\n * void vKeyPressEventHandler( char cKey )\n * {\n *     // Ensure the LCD back-light is on, then reset the timer that is\n *     // responsible for turning the back-light off after 5 seconds of\n *     // key inactivity.  Wait 10 ticks for the command to be successfully sent\n *     // if it cannot be sent immediately.\n *     vSetBacklightState( BACKLIGHT_ON );\n *     if( xTimerReset( xBacklightTimer, 100 ) != pdPASS )\n *     {\n *         // The reset command was not executed successfully.  Take appropriate\n *         // action here.\n *     }\n *\n *     // Perform the rest of the key processing here.\n * }\n *\n * void main( void )\n * {\n * int32_t x;\n *\n *     // Create then start the one-shot timer that is responsible for turning\n *     // the back-light off if no keys are pressed within a 5 second period.\n *     xBacklightTimer = xTimerCreate( \"BacklightTimer\",           // Just a text name, not used by the kernel.\n *                                     ( 5000 / portTICK_PERIOD_MS), // The timer period in ticks.\n *                                     pdFALSE,                    // The timer is a one-shot timer.\n *                                     0,                          // The id is not used by the callback so can take any value.\n *                                     vBacklightTimerCallback     // The callback function that switches the LCD back-light off.\n *                                   );\n *\n *     if( xBacklightTimer == NULL )\n *     {\n *         // The timer was not created.\n *     }\n *     else\n *     {\n *         // Start the timer.  No block time is specified, and even if one was\n *         // it would be ignored because the scheduler has not yet been\n *         // started.\n *         if( xTimerStart( xBacklightTimer, 0 ) != pdPASS )\n *         {\n *             // The timer could not be set into the Active state.\n *         }\n *     }\n *\n *     // ...\n *     // Create tasks here.\n *     // ...\n *\n *     // Starting the scheduler will start the timer running as it has already\n *     // been set into the active state.\n *     vTaskStartScheduler();\n *\n *     // Should not reach here.\n *     for( ;; );\n * }\n * @endverbatim\n */\n#define xTimerReset( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_RESET, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) )\n\n/**\n * BaseType_t xTimerStartFromISR( \tTimerHandle_t xTimer,\n *\t\t\t\t\t\t\t\t\tBaseType_t *pxHigherPriorityTaskWoken );\n *\n * A version of xTimerStart() that can be called from an interrupt service\n * routine.\n *\n * @param xTimer The handle of the timer being started/restarted.\n *\n * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most\n * of its time in the Blocked state, waiting for messages to arrive on the timer\n * command queue.  Calling xTimerStartFromISR() writes a message to the timer\n * command queue, so has the potential to transition the timer service/daemon\n * task out of the Blocked state.  If calling xTimerStartFromISR() causes the\n * timer service/daemon task to leave the Blocked state, and the timer service/\n * daemon task has a priority equal to or greater than the currently executing\n * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will\n * get set to pdTRUE internally within the xTimerStartFromISR() function.  If\n * xTimerStartFromISR() sets this value to pdTRUE then a context switch should\n * be performed before the interrupt exits.\n *\n * @return pdFAIL will be returned if the start command could not be sent to\n * the timer command queue.  pdPASS will be returned if the command was\n * successfully sent to the timer command queue.  When the command is actually\n * processed will depend on the priority of the timer service/daemon task\n * relative to other tasks in the system, although the timers expiry time is\n * relative to when xTimerStartFromISR() is actually called.  The timer\n * service/daemon task priority is set by the configTIMER_TASK_PRIORITY\n * configuration constant.\n *\n * Example usage:\n * @verbatim\n * // This scenario assumes xBacklightTimer has already been created.  When a\n * // key is pressed, an LCD back-light is switched on.  If 5 seconds pass\n * // without a key being pressed, then the LCD back-light is switched off.  In\n * // this case, the timer is a one-shot timer, and unlike the example given for\n * // the xTimerReset() function, the key press event handler is an interrupt\n * // service routine.\n *\n * // The callback function assigned to the one-shot timer.  In this case the\n * // parameter is not used.\n * void vBacklightTimerCallback( TimerHandle_t pxTimer )\n * {\n *     // The timer expired, therefore 5 seconds must have passed since a key\n *     // was pressed.  Switch off the LCD back-light.\n *     vSetBacklightState( BACKLIGHT_OFF );\n * }\n *\n * // The key press interrupt service routine.\n * void vKeyPressEventInterruptHandler( void )\n * {\n * BaseType_t xHigherPriorityTaskWoken = pdFALSE;\n *\n *     // Ensure the LCD back-light is on, then restart the timer that is\n *     // responsible for turning the back-light off after 5 seconds of\n *     // key inactivity.  This is an interrupt service routine so can only\n *     // call FreeRTOS API functions that end in \"FromISR\".\n *     vSetBacklightState( BACKLIGHT_ON );\n *\n *     // xTimerStartFromISR() or xTimerResetFromISR() could be called here\n *     // as both cause the timer to re-calculate its expiry time.\n *     // xHigherPriorityTaskWoken was initialised to pdFALSE when it was\n *     // declared (in this function).\n *     if( xTimerStartFromISR( xBacklightTimer, &xHigherPriorityTaskWoken ) != pdPASS )\n *     {\n *         // The start command was not executed successfully.  Take appropriate\n *         // action here.\n *     }\n *\n *     // Perform the rest of the key processing here.\n *\n *     // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch\n *     // should be performed.  The syntax required to perform a context switch\n *     // from inside an ISR varies from port to port, and from compiler to\n *     // compiler.  Inspect the demos for the port you are using to find the\n *     // actual syntax required.\n *     if( xHigherPriorityTaskWoken != pdFALSE )\n *     {\n *         // Call the interrupt safe yield function here (actual function\n *         // depends on the FreeRTOS port being used).\n *     }\n * }\n * @endverbatim\n */\n#define xTimerStartFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START_FROM_ISR, ( xTaskGetTickCountFromISR() ), ( pxHigherPriorityTaskWoken ), 0U )\n\n/**\n * BaseType_t xTimerStopFromISR( \tTimerHandle_t xTimer,\n *\t\t\t\t\t\t\t\t\tBaseType_t *pxHigherPriorityTaskWoken );\n *\n * A version of xTimerStop() that can be called from an interrupt service\n * routine.\n *\n * @param xTimer The handle of the timer being stopped.\n *\n * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most\n * of its time in the Blocked state, waiting for messages to arrive on the timer\n * command queue.  Calling xTimerStopFromISR() writes a message to the timer\n * command queue, so has the potential to transition the timer service/daemon\n * task out of the Blocked state.  If calling xTimerStopFromISR() causes the\n * timer service/daemon task to leave the Blocked state, and the timer service/\n * daemon task has a priority equal to or greater than the currently executing\n * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will\n * get set to pdTRUE internally within the xTimerStopFromISR() function.  If\n * xTimerStopFromISR() sets this value to pdTRUE then a context switch should\n * be performed before the interrupt exits.\n *\n * @return pdFAIL will be returned if the stop command could not be sent to\n * the timer command queue.  pdPASS will be returned if the command was\n * successfully sent to the timer command queue.  When the command is actually\n * processed will depend on the priority of the timer service/daemon task\n * relative to other tasks in the system.  The timer service/daemon task\n * priority is set by the configTIMER_TASK_PRIORITY configuration constant.\n *\n * Example usage:\n * @verbatim\n * // This scenario assumes xTimer has already been created and started.  When\n * // an interrupt occurs, the timer should be simply stopped.\n *\n * // The interrupt service routine that stops the timer.\n * void vAnExampleInterruptServiceRoutine( void )\n * {\n * BaseType_t xHigherPriorityTaskWoken = pdFALSE;\n *\n *     // The interrupt has occurred - simply stop the timer.\n *     // xHigherPriorityTaskWoken was set to pdFALSE where it was defined\n *     // (within this function).  As this is an interrupt service routine, only\n *     // FreeRTOS API functions that end in \"FromISR\" can be used.\n *     if( xTimerStopFromISR( xTimer, &xHigherPriorityTaskWoken ) != pdPASS )\n *     {\n *         // The stop command was not executed successfully.  Take appropriate\n *         // action here.\n *     }\n *\n *     // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch\n *     // should be performed.  The syntax required to perform a context switch\n *     // from inside an ISR varies from port to port, and from compiler to\n *     // compiler.  Inspect the demos for the port you are using to find the\n *     // actual syntax required.\n *     if( xHigherPriorityTaskWoken != pdFALSE )\n *     {\n *         // Call the interrupt safe yield function here (actual function\n *         // depends on the FreeRTOS port being used).\n *     }\n * }\n * @endverbatim\n */\n#define xTimerStopFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP_FROM_ISR, 0, ( pxHigherPriorityTaskWoken ), 0U )\n\n/**\n * BaseType_t xTimerChangePeriodFromISR( TimerHandle_t xTimer,\n *\t\t\t\t\t\t\t\t\t\t TickType_t xNewPeriod,\n *\t\t\t\t\t\t\t\t\t\t BaseType_t *pxHigherPriorityTaskWoken );\n *\n * A version of xTimerChangePeriod() that can be called from an interrupt\n * service routine.\n *\n * @param xTimer The handle of the timer that is having its period changed.\n *\n * @param xNewPeriod The new period for xTimer. Timer periods are specified in\n * tick periods, so the constant portTICK_PERIOD_MS can be used to convert a time\n * that has been specified in milliseconds.  For example, if the timer must\n * expire after 100 ticks, then xNewPeriod should be set to 100.  Alternatively,\n * if the timer must expire after 500ms, then xNewPeriod can be set to\n * ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than\n * or equal to 1000.\n *\n * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most\n * of its time in the Blocked state, waiting for messages to arrive on the timer\n * command queue.  Calling xTimerChangePeriodFromISR() writes a message to the\n * timer command queue, so has the potential to transition the timer service/\n * daemon task out of the Blocked state.  If calling xTimerChangePeriodFromISR()\n * causes the timer service/daemon task to leave the Blocked state, and the\n * timer service/daemon task has a priority equal to or greater than the\n * currently executing task (the task that was interrupted), then\n * *pxHigherPriorityTaskWoken will get set to pdTRUE internally within the\n * xTimerChangePeriodFromISR() function.  If xTimerChangePeriodFromISR() sets\n * this value to pdTRUE then a context switch should be performed before the\n * interrupt exits.\n *\n * @return pdFAIL will be returned if the command to change the timers period\n * could not be sent to the timer command queue.  pdPASS will be returned if the\n * command was successfully sent to the timer command queue.  When the command\n * is actually processed will depend on the priority of the timer service/daemon\n * task relative to other tasks in the system.  The timer service/daemon task\n * priority is set by the configTIMER_TASK_PRIORITY configuration constant.\n *\n * Example usage:\n * @verbatim\n * // This scenario assumes xTimer has already been created and started.  When\n * // an interrupt occurs, the period of xTimer should be changed to 500ms.\n *\n * // The interrupt service routine that changes the period of xTimer.\n * void vAnExampleInterruptServiceRoutine( void )\n * {\n * BaseType_t xHigherPriorityTaskWoken = pdFALSE;\n *\n *     // The interrupt has occurred - change the period of xTimer to 500ms.\n *     // xHigherPriorityTaskWoken was set to pdFALSE where it was defined\n *     // (within this function).  As this is an interrupt service routine, only\n *     // FreeRTOS API functions that end in \"FromISR\" can be used.\n *     if( xTimerChangePeriodFromISR( xTimer, &xHigherPriorityTaskWoken ) != pdPASS )\n *     {\n *         // The command to change the timers period was not executed\n *         // successfully.  Take appropriate action here.\n *     }\n *\n *     // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch\n *     // should be performed.  The syntax required to perform a context switch\n *     // from inside an ISR varies from port to port, and from compiler to\n *     // compiler.  Inspect the demos for the port you are using to find the\n *     // actual syntax required.\n *     if( xHigherPriorityTaskWoken != pdFALSE )\n *     {\n *         // Call the interrupt safe yield function here (actual function\n *         // depends on the FreeRTOS port being used).\n *     }\n * }\n * @endverbatim\n */\n#define xTimerChangePeriodFromISR( xTimer, xNewPeriod, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_CHANGE_PERIOD_FROM_ISR, ( xNewPeriod ), ( pxHigherPriorityTaskWoken ), 0U )\n\n/**\n * BaseType_t xTimerResetFromISR( \tTimerHandle_t xTimer,\n *\t\t\t\t\t\t\t\t\tBaseType_t *pxHigherPriorityTaskWoken );\n *\n * A version of xTimerReset() that can be called from an interrupt service\n * routine.\n *\n * @param xTimer The handle of the timer that is to be started, reset, or\n * restarted.\n *\n * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most\n * of its time in the Blocked state, waiting for messages to arrive on the timer\n * command queue.  Calling xTimerResetFromISR() writes a message to the timer\n * command queue, so has the potential to transition the timer service/daemon\n * task out of the Blocked state.  If calling xTimerResetFromISR() causes the\n * timer service/daemon task to leave the Blocked state, and the timer service/\n * daemon task has a priority equal to or greater than the currently executing\n * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will\n * get set to pdTRUE internally within the xTimerResetFromISR() function.  If\n * xTimerResetFromISR() sets this value to pdTRUE then a context switch should\n * be performed before the interrupt exits.\n *\n * @return pdFAIL will be returned if the reset command could not be sent to\n * the timer command queue.  pdPASS will be returned if the command was\n * successfully sent to the timer command queue.  When the command is actually\n * processed will depend on the priority of the timer service/daemon task\n * relative to other tasks in the system, although the timers expiry time is\n * relative to when xTimerResetFromISR() is actually called.  The timer service/daemon\n * task priority is set by the configTIMER_TASK_PRIORITY configuration constant.\n *\n * Example usage:\n * @verbatim\n * // This scenario assumes xBacklightTimer has already been created.  When a\n * // key is pressed, an LCD back-light is switched on.  If 5 seconds pass\n * // without a key being pressed, then the LCD back-light is switched off.  In\n * // this case, the timer is a one-shot timer, and unlike the example given for\n * // the xTimerReset() function, the key press event handler is an interrupt\n * // service routine.\n *\n * // The callback function assigned to the one-shot timer.  In this case the\n * // parameter is not used.\n * void vBacklightTimerCallback( TimerHandle_t pxTimer )\n * {\n *     // The timer expired, therefore 5 seconds must have passed since a key\n *     // was pressed.  Switch off the LCD back-light.\n *     vSetBacklightState( BACKLIGHT_OFF );\n * }\n *\n * // The key press interrupt service routine.\n * void vKeyPressEventInterruptHandler( void )\n * {\n * BaseType_t xHigherPriorityTaskWoken = pdFALSE;\n *\n *     // Ensure the LCD back-light is on, then reset the timer that is\n *     // responsible for turning the back-light off after 5 seconds of\n *     // key inactivity.  This is an interrupt service routine so can only\n *     // call FreeRTOS API functions that end in \"FromISR\".\n *     vSetBacklightState( BACKLIGHT_ON );\n *\n *     // xTimerStartFromISR() or xTimerResetFromISR() could be called here\n *     // as both cause the timer to re-calculate its expiry time.\n *     // xHigherPriorityTaskWoken was initialised to pdFALSE when it was\n *     // declared (in this function).\n *     if( xTimerResetFromISR( xBacklightTimer, &xHigherPriorityTaskWoken ) != pdPASS )\n *     {\n *         // The reset command was not executed successfully.  Take appropriate\n *         // action here.\n *     }\n *\n *     // Perform the rest of the key processing here.\n *\n *     // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch\n *     // should be performed.  The syntax required to perform a context switch\n *     // from inside an ISR varies from port to port, and from compiler to\n *     // compiler.  Inspect the demos for the port you are using to find the\n *     // actual syntax required.\n *     if( xHigherPriorityTaskWoken != pdFALSE )\n *     {\n *         // Call the interrupt safe yield function here (actual function\n *         // depends on the FreeRTOS port being used).\n *     }\n * }\n * @endverbatim\n */\n#define xTimerResetFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_RESET_FROM_ISR, ( xTaskGetTickCountFromISR() ), ( pxHigherPriorityTaskWoken ), 0U )\n\n\n/**\n * BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend,\n *                                          void *pvParameter1,\n *                                          uint32_t ulParameter2,\n *                                          BaseType_t *pxHigherPriorityTaskWoken );\n *\n *\n * Used from application interrupt service routines to defer the execution of a\n * function to the RTOS daemon task (the timer service task, hence this function\n * is implemented in timers.c and is prefixed with 'Timer').\n *\n * Ideally an interrupt service routine (ISR) is kept as short as possible, but\n * sometimes an ISR either has a lot of processing to do, or needs to perform\n * processing that is not deterministic.  In these cases\n * xTimerPendFunctionCallFromISR() can be used to defer processing of a function\n * to the RTOS daemon task.\n *\n * A mechanism is provided that allows the interrupt to return directly to the\n * task that will subsequently execute the pended callback function.  This\n * allows the callback function to execute contiguously in time with the\n * interrupt - just as if the callback had executed in the interrupt itself.\n *\n * @param xFunctionToPend The function to execute from the timer service/\n * daemon task.  The function must conform to the PendedFunction_t\n * prototype.\n *\n * @param pvParameter1 The value of the callback function's first parameter.\n * The parameter has a void * type to allow it to be used to pass any type.\n * For example, unsigned longs can be cast to a void *, or the void * can be\n * used to point to a structure.\n *\n * @param ulParameter2 The value of the callback function's second parameter.\n *\n * @param pxHigherPriorityTaskWoken As mentioned above, calling this function\n * will result in a message being sent to the timer daemon task.  If the\n * priority of the timer daemon task (which is set using\n * configTIMER_TASK_PRIORITY in FreeRTOSConfig.h) is higher than the priority of\n * the currently running task (the task the interrupt interrupted) then\n * *pxHigherPriorityTaskWoken will be set to pdTRUE within\n * xTimerPendFunctionCallFromISR(), indicating that a context switch should be\n * requested before the interrupt exits.  For that reason\n * *pxHigherPriorityTaskWoken must be initialised to pdFALSE.  See the\n * example code below.\n *\n * @return pdPASS is returned if the message was successfully sent to the\n * timer daemon task, otherwise pdFALSE is returned.\n *\n * Example usage:\n * @verbatim\n *\n *\t// The callback function that will execute in the context of the daemon task.\n *  // Note callback functions must all use this same prototype.\n *  void vProcessInterface( void *pvParameter1, uint32_t ulParameter2 )\n *\t{\n *\t\tBaseType_t xInterfaceToService;\n *\n *\t\t// The interface that requires servicing is passed in the second\n *      // parameter.  The first parameter is not used in this case.\n *\t\txInterfaceToService = ( BaseType_t ) ulParameter2;\n *\n *\t\t// ...Perform the processing here...\n *\t}\n *\n *\t// An ISR that receives data packets from multiple interfaces\n *  void vAnISR( void )\n *\t{\n *\t\tBaseType_t xInterfaceToService, xHigherPriorityTaskWoken;\n *\n *\t\t// Query the hardware to determine which interface needs processing.\n *\t\txInterfaceToService = prvCheckInterfaces();\n *\n *      // The actual processing is to be deferred to a task.  Request the\n *      // vProcessInterface() callback function is executed, passing in the\n *\t\t// number of the interface that needs processing.  The interface to\n *\t\t// service is passed in the second parameter.  The first parameter is\n *\t\t// not used in this case.\n *\t\txHigherPriorityTaskWoken = pdFALSE;\n *\t\txTimerPendFunctionCallFromISR( vProcessInterface, NULL, ( uint32_t ) xInterfaceToService, &xHigherPriorityTaskWoken );\n *\n *\t\t// If xHigherPriorityTaskWoken is now set to pdTRUE then a context\n *\t\t// switch should be requested.  The macro used is port specific and will\n *\t\t// be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() - refer to\n *\t\t// the documentation page for the port being used.\n *\t\tportYIELD_FROM_ISR( xHigherPriorityTaskWoken );\n *\n *\t}\n * @endverbatim\n */\nBaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\n\n /**\n  * BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend,\n  *                                    void *pvParameter1,\n  *                                    uint32_t ulParameter2,\n  *                                    TickType_t xTicksToWait );\n  *\n  *\n  * Used to defer the execution of a function to the RTOS daemon task (the timer\n  * service task, hence this function is implemented in timers.c and is prefixed\n  * with 'Timer').\n  *\n  * @param xFunctionToPend The function to execute from the timer service/\n  * daemon task.  The function must conform to the PendedFunction_t\n  * prototype.\n  *\n  * @param pvParameter1 The value of the callback function's first parameter.\n  * The parameter has a void * type to allow it to be used to pass any type.\n  * For example, unsigned longs can be cast to a void *, or the void * can be\n  * used to point to a structure.\n  *\n  * @param ulParameter2 The value of the callback function's second parameter.\n  *\n  * @param xTicksToWait Calling this function will result in a message being\n  * sent to the timer daemon task on a queue.  xTicksToWait is the amount of\n  * time the calling task should remain in the Blocked state (so not using any\n  * processing time) for space to become available on the timer queue if the\n  * queue is found to be full.\n  *\n  * @return pdPASS is returned if the message was successfully sent to the\n  * timer daemon task, otherwise pdFALSE is returned.\n  *\n  */\nBaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n/**\n * const char * const pcTimerGetName( TimerHandle_t xTimer );\n *\n * Returns the name that was assigned to a timer when the timer was created.\n *\n * @param xTimer The handle of the timer being queried.\n *\n * @return The name assigned to the timer specified by the xTimer parameter.\n */\nconst char * pcTimerGetName( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\n/**\n * void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload );\n *\n * Updates a timer to be either an auto-reload timer, in which case the timer\n * automatically resets itself each time it expires, or a one-shot timer, in\n * which case the timer will only expire once unless it is manually restarted.\n *\n * @param xTimer The handle of the timer being updated.\n *\n * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will\n * expire repeatedly with a frequency set by the timer's period (see the\n * xTimerPeriodInTicks parameter of the xTimerCreate() API function).  If\n * uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and\n * enter the dormant state after it expires.\n */\nvoid vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) PRIVILEGED_FUNCTION;\n\n/**\n* UBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer );\n*\n* Queries a timer to determine if it is an auto-reload timer, in which case the timer\n* automatically resets itself each time it expires, or a one-shot timer, in\n* which case the timer will only expire once unless it is manually restarted.\n*\n* @param xTimer The handle of the timer being queried.\n*\n* @return If the timer is an auto-reload timer then pdTRUE is returned, otherwise\n* pdFALSE is returned.\n*/\nUBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\n\n/**\n * TickType_t xTimerGetPeriod( TimerHandle_t xTimer );\n *\n * Returns the period of a timer.\n *\n * @param xTimer The handle of the timer being queried.\n *\n * @return The period of the timer in ticks.\n */\nTickType_t xTimerGetPeriod( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\n\n/**\n* TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer );\n*\n* Returns the time in ticks at which the timer will expire.  If this is less\n* than the current tick count then the expiry time has overflowed from the\n* current time.\n*\n* @param xTimer The handle of the timer being queried.\n*\n* @return If the timer is running then the time in ticks at which the timer\n* will next expire is returned.  If the timer is not running then the return\n* value is undefined.\n*/\nTickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\n\n/*\n * Functions beyond this part are not part of the public API and are intended\n * for use by the kernel only.\n */\nBaseType_t xTimerCreateTimerTask( void ) PRIVILEGED_FUNCTION;\nBaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\n\n#if( configUSE_TRACE_FACILITY == 1 )\n\tvoid vTimerSetTimerNumber( TimerHandle_t xTimer, UBaseType_t uxTimerNumber ) PRIVILEGED_FUNCTION;\n\tUBaseType_t uxTimerGetTimerNumber( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n#endif /* TIMERS_H */\n\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/list.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n\n#include <stdlib.h>\n#include \"FreeRTOS.h\"\n#include \"list.h\"\n\n/*-----------------------------------------------------------\n * PUBLIC LIST API documented in list.h\n *----------------------------------------------------------*/\n\nvoid vListInitialise( List_t * const pxList )\n{\n\t/* The list structure contains a list item which is used to mark the\n\tend of the list.  To initialise the list the list end is inserted\n\tas the only list entry. */\n\tpxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd );\t\t\t/*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM.  This is checked and valid. */\n\n\t/* The list end value is the highest possible value in the list to\n\tensure it remains at the end of the list. */\n\tpxList->xListEnd.xItemValue = portMAX_DELAY;\n\n\t/* The list end next and previous pointers point to itself so we know\n\twhen the list is empty. */\n\tpxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd );\t/*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM.  This is checked and valid. */\n\tpxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );/*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM.  This is checked and valid. */\n\n\tpxList->uxNumberOfItems = ( UBaseType_t ) 0U;\n\n\t/* Write known values into the list if\n\tconfigUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */\n\tlistSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList );\n\tlistSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList );\n}\n/*-----------------------------------------------------------*/\n\nvoid vListInitialiseItem( ListItem_t * const pxItem )\n{\n\t/* Make sure the list item is not recorded as being on a list. */\n\tpxItem->pxContainer = NULL;\n\n\t/* Write known values into the list item if\n\tconfigUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */\n\tlistSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem );\n\tlistSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem );\n}\n/*-----------------------------------------------------------*/\n\nvoid vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem )\n{\nListItem_t * const pxIndex = pxList->pxIndex;\n\n\t/* Only effective when configASSERT() is also defined, these tests may catch\n\tthe list data structures being overwritten in memory.  They will not catch\n\tdata errors caused by incorrect configuration or use of FreeRTOS. */\n\tlistTEST_LIST_INTEGRITY( pxList );\n\tlistTEST_LIST_ITEM_INTEGRITY( pxNewListItem );\n\n\t/* Insert a new list item into pxList, but rather than sort the list,\n\tmakes the new list item the last item to be removed by a call to\n\tlistGET_OWNER_OF_NEXT_ENTRY(). */\n\tpxNewListItem->pxNext = pxIndex;\n\tpxNewListItem->pxPrevious = pxIndex->pxPrevious;\n\n\t/* Only used during decision coverage testing. */\n\tmtCOVERAGE_TEST_DELAY();\n\n\tpxIndex->pxPrevious->pxNext = pxNewListItem;\n\tpxIndex->pxPrevious = pxNewListItem;\n\n\t/* Remember which list the item is in. */\n\tpxNewListItem->pxContainer = pxList;\n\n\t( pxList->uxNumberOfItems )++;\n}\n/*-----------------------------------------------------------*/\n\nvoid vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem )\n{\nListItem_t *pxIterator;\nconst TickType_t xValueOfInsertion = pxNewListItem->xItemValue;\n\n\t/* Only effective when configASSERT() is also defined, these tests may catch\n\tthe list data structures being overwritten in memory.  They will not catch\n\tdata errors caused by incorrect configuration or use of FreeRTOS. */\n\tlistTEST_LIST_INTEGRITY( pxList );\n\tlistTEST_LIST_ITEM_INTEGRITY( pxNewListItem );\n\n\t/* Insert the new list item into the list, sorted in xItemValue order.\n\n\tIf the list already contains a list item with the same item value then the\n\tnew list item should be placed after it.  This ensures that TCBs which are\n\tstored in ready lists (all of which have the same xItemValue value) get a\n\tshare of the CPU.  However, if the xItemValue is the same as the back marker\n\tthe iteration loop below will not end.  Therefore the value is checked\n\tfirst, and the algorithm slightly modified if necessary. */\n\tif( xValueOfInsertion == portMAX_DELAY )\n\t{\n\t\tpxIterator = pxList->xListEnd.pxPrevious;\n\t}\n\telse\n\t{\n\t\t/* *** NOTE ***********************************************************\n\t\tIf you find your application is crashing here then likely causes are\n\t\tlisted below.  In addition see https://www.freertos.org/FAQHelp.html for\n\t\tmore tips, and ensure configASSERT() is defined!\n\t\thttps://www.freertos.org/a00110.html#configASSERT\n\n\t\t\t1) Stack overflow -\n\t\t\t   see https://www.freertos.org/Stacks-and-stack-overflow-checking.html\n\t\t\t2) Incorrect interrupt priority assignment, especially on Cortex-M\n\t\t\t   parts where numerically high priority values denote low actual\n\t\t\t   interrupt priorities, which can seem counter intuitive.  See\n\t\t\t   https://www.freertos.org/RTOS-Cortex-M3-M4.html and the definition\n\t\t\t   of configMAX_SYSCALL_INTERRUPT_PRIORITY on\n\t\t\t   https://www.freertos.org/a00110.html\n\t\t\t3) Calling an API function from within a critical section or when\n\t\t\t   the scheduler is suspended, or calling an API function that does\n\t\t\t   not end in \"FromISR\" from an interrupt.\n\t\t\t4) Using a queue or semaphore before it has been initialised or\n\t\t\t   before the scheduler has been started (are interrupts firing\n\t\t\t   before vTaskStartScheduler() has been called?).\n\t\t**********************************************************************/\n\n\t\tfor( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM.  This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */\n\t\t{\n\t\t\t/* There is nothing to do here, just iterating to the wanted\n\t\t\tinsertion position. */\n\t\t}\n\t}\n\n\tpxNewListItem->pxNext = pxIterator->pxNext;\n\tpxNewListItem->pxNext->pxPrevious = pxNewListItem;\n\tpxNewListItem->pxPrevious = pxIterator;\n\tpxIterator->pxNext = pxNewListItem;\n\n\t/* Remember which list the item is in.  This allows fast removal of the\n\titem later. */\n\tpxNewListItem->pxContainer = pxList;\n\n\t( pxList->uxNumberOfItems )++;\n}\n/*-----------------------------------------------------------*/\n\nUBaseType_t uxListRemove( ListItem_t * const pxItemToRemove )\n{\n/* The list item knows which list it is in.  Obtain the list from the list\nitem. */\nList_t * const pxList = pxItemToRemove->pxContainer;\n\n\tpxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;\n\tpxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;\n\n\t/* Only used during decision coverage testing. */\n\tmtCOVERAGE_TEST_DELAY();\n\n\t/* Make sure the index is left pointing to a valid item. */\n\tif( pxList->pxIndex == pxItemToRemove )\n\t{\n\t\tpxList->pxIndex = pxItemToRemove->pxPrevious;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\tpxItemToRemove->pxContainer = NULL;\n\t( pxList->uxNumberOfItems )--;\n\n\treturn pxList->uxNumberOfItems;\n}\n/*-----------------------------------------------------------*/\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/*\n * A sample implementation of pvPortMalloc() and vPortFree() that combines\n * (coalescences) adjacent memory blocks as they are freed, and in so doing\n * limits memory fragmentation.\n *\n * See heap_1.c, heap_2.c and heap_3.c for alternative implementations, and the\n * memory management pages of http://www.FreeRTOS.org for more information.\n */\n#include <stdlib.h>\n\n/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\nall the API functions to use the MPU wrappers.  That should only be done when\ntask.h is included from an application file. */\n#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n\n#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 0 )\n\t#error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0\n#endif\n\n/* Block sizes must not get too small. */\n#define heapMINIMUM_BLOCK_SIZE\t( ( size_t ) ( xHeapStructSize << 1 ) )\n\n/* Assumes 8bit bytes! */\n#define heapBITS_PER_BYTE\t\t( ( size_t ) 8 )\n\n/* Allocate the memory for the heap. */\n#if( configAPPLICATION_ALLOCATED_HEAP == 1 )\n\t/* The application writer has already defined the array used for the RTOS\n\theap - probably so it can be placed in a special segment or address. */\n\textern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];\n#else\n\tstatic uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];\n#endif /* configAPPLICATION_ALLOCATED_HEAP */\n\n/* Define the linked list structure.  This is used to link free blocks in order\nof their memory address. */\ntypedef struct A_BLOCK_LINK\n{\n\tstruct A_BLOCK_LINK *pxNextFreeBlock;\t/*<< The next free block in the list. */\n\tsize_t xBlockSize;\t\t\t\t\t\t/*<< The size of the free block. */\n} BlockLink_t;\n\n/*-----------------------------------------------------------*/\n\n/*\n * Inserts a block of memory that is being freed into the correct position in\n * the list of free memory blocks.  The block being freed will be merged with\n * the block in front it and/or the block behind it if the memory blocks are\n * adjacent to each other.\n */\nstatic void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert );\n\n/*\n * Called automatically to setup the required heap structures the first time\n * pvPortMalloc() is called.\n */\nstatic void prvHeapInit( void );\n\n/*-----------------------------------------------------------*/\n\n/* The size of the structure placed at the beginning of each allocated memory\nblock must by correctly byte aligned. */\nstatic const size_t xHeapStructSize\t= ( sizeof( BlockLink_t ) + ( ( size_t ) ( portBYTE_ALIGNMENT - 1 ) ) ) & ~( ( size_t ) portBYTE_ALIGNMENT_MASK );\n\n/* Create a couple of list links to mark the start and end of the list. */\nstatic BlockLink_t xStart, *pxEnd = NULL;\n\n/* Keeps track of the number of calls to allocate and free memory as well as the\nnumber of free bytes remaining, but says nothing about fragmentation. */\nstatic size_t xFreeBytesRemaining = 0U;\nstatic size_t xMinimumEverFreeBytesRemaining = 0U;\nstatic size_t xNumberOfSuccessfulAllocations = 0;\nstatic size_t xNumberOfSuccessfulFrees = 0;\n\n/* Gets set to the top bit of an size_t type.  When this bit in the xBlockSize\nmember of an BlockLink_t structure is set then the block belongs to the\napplication.  When the bit is free the block is still part of the free heap\nspace. */\nstatic size_t xBlockAllocatedBit = 0;\n\n/*-----------------------------------------------------------*/\n\nvoid *pvPortMalloc( size_t xWantedSize )\n{\nBlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink;\nvoid *pvReturn = NULL;\n\n\tvTaskSuspendAll();\n\t{\n\t\t/* If this is the first call to malloc then the heap will require\n\t\tinitialisation to setup the list of free blocks. */\n\t\tif( pxEnd == NULL )\n\t\t{\n\t\t\tprvHeapInit();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\t/* Check the requested block size is not so large that the top bit is\n\t\tset.  The top bit of the block size member of the BlockLink_t structure\n\t\tis used to determine who owns the block - the application or the\n\t\tkernel, so it must be free. */\n\t\tif( ( xWantedSize & xBlockAllocatedBit ) == 0 )\n\t\t{\n\t\t\t/* The wanted size is increased so it can contain a BlockLink_t\n\t\t\tstructure in addition to the requested amount of bytes. */\n\t\t\tif( xWantedSize > 0 )\n\t\t\t{\n\t\t\t\txWantedSize += xHeapStructSize;\n\n\t\t\t\t/* Ensure that blocks are always aligned to the required number\n\t\t\t\tof bytes. */\n\t\t\t\tif( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 )\n\t\t\t\t{\n\t\t\t\t\t/* Byte alignment required. */\n\t\t\t\t\txWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) );\n\t\t\t\t\tconfigASSERT( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) == 0 );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\tif( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) )\n\t\t\t{\n\t\t\t\t/* Traverse the list from the start\t(lowest address) block until\n\t\t\t\tone\tof adequate size is found. */\n\t\t\t\tpxPreviousBlock = &xStart;\n\t\t\t\tpxBlock = xStart.pxNextFreeBlock;\n\t\t\t\twhile( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) )\n\t\t\t\t{\n\t\t\t\t\tpxPreviousBlock = pxBlock;\n\t\t\t\t\tpxBlock = pxBlock->pxNextFreeBlock;\n\t\t\t\t}\n\n\t\t\t\t/* If the end marker was reached then a block of adequate size\n\t\t\t\twas\tnot found. */\n\t\t\t\tif( pxBlock != pxEnd )\n\t\t\t\t{\n\t\t\t\t\t/* Return the memory space pointed to - jumping over the\n\t\t\t\t\tBlockLink_t structure at its start. */\n\t\t\t\t\tpvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize );\n\n\t\t\t\t\t/* This block is being returned for use so must be taken out\n\t\t\t\t\tof the list of free blocks. */\n\t\t\t\t\tpxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock;\n\n\t\t\t\t\t/* If the block is larger than required it can be split into\n\t\t\t\t\ttwo. */\n\t\t\t\t\tif( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* This block is to be split into two.  Create a new\n\t\t\t\t\t\tblock following the number of bytes requested. The void\n\t\t\t\t\t\tcast is used to prevent byte alignment warnings from the\n\t\t\t\t\t\tcompiler. */\n\t\t\t\t\t\tpxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize );\n\t\t\t\t\t\tconfigASSERT( ( ( ( size_t ) pxNewBlockLink ) & portBYTE_ALIGNMENT_MASK ) == 0 );\n\n\t\t\t\t\t\t/* Calculate the sizes of two blocks split from the\n\t\t\t\t\t\tsingle block. */\n\t\t\t\t\t\tpxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize;\n\t\t\t\t\t\tpxBlock->xBlockSize = xWantedSize;\n\n\t\t\t\t\t\t/* Insert the new block into the list of free blocks. */\n\t\t\t\t\t\tprvInsertBlockIntoFreeList( pxNewBlockLink );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\txFreeBytesRemaining -= pxBlock->xBlockSize;\n\n\t\t\t\t\tif( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining )\n\t\t\t\t\t{\n\t\t\t\t\t\txMinimumEverFreeBytesRemaining = xFreeBytesRemaining;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* The block is being returned - it is allocated and owned\n\t\t\t\t\tby the application and has no \"next\" block. */\n\t\t\t\t\tpxBlock->xBlockSize |= xBlockAllocatedBit;\n\t\t\t\t\tpxBlock->pxNextFreeBlock = NULL;\n\t\t\t\t\txNumberOfSuccessfulAllocations++;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\ttraceMALLOC( pvReturn, xWantedSize );\n\t}\n\t( void ) xTaskResumeAll();\n\n\t#if( configUSE_MALLOC_FAILED_HOOK == 1 )\n\t{\n\t\tif( pvReturn == NULL )\n\t\t{\n\t\t\textern void vApplicationMallocFailedHook( void );\n\t\t\tvApplicationMallocFailedHook();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\t#endif\n\n\tconfigASSERT( ( ( ( size_t ) pvReturn ) & ( size_t ) portBYTE_ALIGNMENT_MASK ) == 0 );\n\treturn pvReturn;\n}\n/*-----------------------------------------------------------*/\n\nvoid vPortFree( void *pv )\n{\nuint8_t *puc = ( uint8_t * ) pv;\nBlockLink_t *pxLink;\n\n\tif( pv != NULL )\n\t{\n\t\t/* The memory being freed will have an BlockLink_t structure immediately\n\t\tbefore it. */\n\t\tpuc -= xHeapStructSize;\n\n\t\t/* This casting is to keep the compiler from issuing warnings. */\n\t\tpxLink = ( void * ) puc;\n\n\t\t/* Check the block is actually allocated. */\n\t\tconfigASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 );\n\t\tconfigASSERT( pxLink->pxNextFreeBlock == NULL );\n\n\t\tif( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 )\n\t\t{\n\t\t\tif( pxLink->pxNextFreeBlock == NULL )\n\t\t\t{\n\t\t\t\t/* The block is being returned to the heap - it is no longer\n\t\t\t\tallocated. */\n\t\t\t\tpxLink->xBlockSize &= ~xBlockAllocatedBit;\n\n\t\t\t\tvTaskSuspendAll();\n\t\t\t\t{\n\t\t\t\t\t/* Add this block to the list of free blocks. */\n\t\t\t\t\txFreeBytesRemaining += pxLink->xBlockSize;\n\t\t\t\t\ttraceFREE( pv, pxLink->xBlockSize );\n\t\t\t\t\tprvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) );\n\t\t\t\t\txNumberOfSuccessfulFrees++;\n\t\t\t\t}\n\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n}\n/*-----------------------------------------------------------*/\n\nsize_t xPortGetFreeHeapSize( void )\n{\n\treturn xFreeBytesRemaining;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xPortGetMinimumEverFreeHeapSize( void )\n{\n\treturn xMinimumEverFreeBytesRemaining;\n}\n/*-----------------------------------------------------------*/\n\nvoid vPortInitialiseBlocks( void )\n{\n\t/* This just exists to keep the linker quiet. */\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvHeapInit( void )\n{\nBlockLink_t *pxFirstFreeBlock;\nuint8_t *pucAlignedHeap;\nsize_t uxAddress;\nsize_t xTotalHeapSize = configTOTAL_HEAP_SIZE;\n\n\t/* Ensure the heap starts on a correctly aligned boundary. */\n\tuxAddress = ( size_t ) ucHeap;\n\n\tif( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 )\n\t{\n\t\tuxAddress += ( portBYTE_ALIGNMENT - 1 );\n\t\tuxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK );\n\t\txTotalHeapSize -= uxAddress - ( size_t ) ucHeap;\n\t}\n\n\tpucAlignedHeap = ( uint8_t * ) uxAddress;\n\n\t/* xStart is used to hold a pointer to the first item in the list of free\n\tblocks.  The void cast is used to prevent compiler warnings. */\n\txStart.pxNextFreeBlock = ( void * ) pucAlignedHeap;\n\txStart.xBlockSize = ( size_t ) 0;\n\n\t/* pxEnd is used to mark the end of the list of free blocks and is inserted\n\tat the end of the heap space. */\n\tuxAddress = ( ( size_t ) pucAlignedHeap ) + xTotalHeapSize;\n\tuxAddress -= xHeapStructSize;\n\tuxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK );\n\tpxEnd = ( void * ) uxAddress;\n\tpxEnd->xBlockSize = 0;\n\tpxEnd->pxNextFreeBlock = NULL;\n\n\t/* To start with there is a single free block that is sized to take up the\n\tentire heap space, minus the space taken by pxEnd. */\n\tpxFirstFreeBlock = ( void * ) pucAlignedHeap;\n\tpxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock;\n\tpxFirstFreeBlock->pxNextFreeBlock = pxEnd;\n\n\t/* Only one block exists - and it covers the entire usable heap space. */\n\txMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize;\n\txFreeBytesRemaining = pxFirstFreeBlock->xBlockSize;\n\n\t/* Work out the position of the top bit in a size_t variable. */\n\txBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 );\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert )\n{\nBlockLink_t *pxIterator;\nuint8_t *puc;\n\n\t/* Iterate through the list until a block is found that has a higher address\n\tthan the block being inserted. */\n\tfor( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock )\n\t{\n\t\t/* Nothing to do here, just iterate to the right position. */\n\t}\n\n\t/* Do the block being inserted, and the block it is being inserted after\n\tmake a contiguous block of memory? */\n\tpuc = ( uint8_t * ) pxIterator;\n\tif( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert )\n\t{\n\t\tpxIterator->xBlockSize += pxBlockToInsert->xBlockSize;\n\t\tpxBlockToInsert = pxIterator;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\t/* Do the block being inserted, and the block it is being inserted before\n\tmake a contiguous block of memory? */\n\tpuc = ( uint8_t * ) pxBlockToInsert;\n\tif( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock )\n\t{\n\t\tif( pxIterator->pxNextFreeBlock != pxEnd )\n\t\t{\n\t\t\t/* Form one big block from the two blocks. */\n\t\t\tpxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize;\n\t\t\tpxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpxBlockToInsert->pxNextFreeBlock = pxEnd;\n\t\t}\n\t}\n\telse\n\t{\n\t\tpxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock;\n\t}\n\n\t/* If the block being inserted plugged a gab, so was merged with the block\n\tbefore and the block after, then it's pxNextFreeBlock pointer will have\n\talready been set, and should not be set here as that would make it point\n\tto itself. */\n\tif( pxIterator != pxBlockToInsert )\n\t{\n\t\tpxIterator->pxNextFreeBlock = pxBlockToInsert;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n}\n/*-----------------------------------------------------------*/\n\nvoid vPortGetHeapStats( HeapStats_t *pxHeapStats )\n{\nBlockLink_t *pxBlock;\nsize_t xBlocks = 0, xMaxSize = 0, xMinSize = portMAX_DELAY; /* portMAX_DELAY used as a portable way of getting the maximum value. */\n\n\tvTaskSuspendAll();\n\t{\n\t\tpxBlock = xStart.pxNextFreeBlock;\n\n\t\t/* pxBlock will be NULL if the heap has not been initialised.  The heap\n\t\tis initialised automatically when the first allocation is made. */\n\t\tif( pxBlock != NULL )\n\t\t{\n\t\t\tdo\n\t\t\t{\n\t\t\t\t/* Increment the number of blocks and record the largest block seen\n\t\t\t\tso far. */\n\t\t\t\txBlocks++;\n\n\t\t\t\tif( pxBlock->xBlockSize > xMaxSize )\n\t\t\t\t{\n\t\t\t\t\txMaxSize = pxBlock->xBlockSize;\n\t\t\t\t}\n\n\t\t\t\tif( pxBlock->xBlockSize < xMinSize )\n\t\t\t\t{\n\t\t\t\t\txMinSize = pxBlock->xBlockSize;\n\t\t\t\t}\n\n\t\t\t\t/* Move to the next block in the chain until the last block is\n\t\t\t\treached. */\n\t\t\t\tpxBlock = pxBlock->pxNextFreeBlock;\n\t\t\t} while( pxBlock != pxEnd );\n\t\t}\n\t}\n\txTaskResumeAll();\n\n\tpxHeapStats->xSizeOfLargestFreeBlockInBytes = xMaxSize;\n\tpxHeapStats->xSizeOfSmallestFreeBlockInBytes = xMinSize;\n\tpxHeapStats->xNumberOfFreeBlocks = xBlocks;\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tpxHeapStats->xAvailableHeapSpaceInBytes = xFreeBytesRemaining;\n\t\tpxHeapStats->xNumberOfSuccessfulAllocations = xNumberOfSuccessfulAllocations;\n\t\tpxHeapStats->xNumberOfSuccessfulFrees = xNumberOfSuccessfulFrees;\n\t\tpxHeapStats->xMinimumEverFreeBytesRemaining = xMinimumEverFreeBytesRemaining;\n\t}\n\ttaskEXIT_CRITICAL();\n}\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/*-----------------------------------------------------------\n * Implementation of functions defined in portable.h for the ARM CM4F port.\n *----------------------------------------------------------*/\n\n/* Scheduler includes. */\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n\n#ifndef __TARGET_FPU_VFP\n\t#error This port can only be used when the project options are configured to enable hardware floating point support.\n#endif\n\n#if configMAX_SYSCALL_INTERRUPT_PRIORITY == 0\n\t#error configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html\n#endif\n\n#ifndef configSYSTICK_CLOCK_HZ\n\t#define configSYSTICK_CLOCK_HZ configCPU_CLOCK_HZ\n\t/* Ensure the SysTick is clocked at the same frequency as the core. */\n\t#define portNVIC_SYSTICK_CLK_BIT\t( 1UL << 2UL )\n#else\n\t/* The way the SysTick is clocked is not modified in case it is not the same\n\tas the core. */\n\t#define portNVIC_SYSTICK_CLK_BIT\t( 0 )\n#endif\n\n/* Legacy macro for backward compatibility only.  This macro used to be used to\nreplace the function that configures the clock used to generate the tick\ninterrupt (prvSetupTimerInterrupt()), but now the function is declared weak so\nthe application writer can override it by simply defining a function of the\nsame name (vApplicationSetupTickInterrupt()). */\n#ifndef configOVERRIDE_DEFAULT_TICK_CONFIGURATION\n\t#define configOVERRIDE_DEFAULT_TICK_CONFIGURATION 0\n#endif\n\n/* Constants required to manipulate the core.  Registers first... */\n#define portNVIC_SYSTICK_CTRL_REG\t\t\t( * ( ( volatile uint32_t * ) 0xe000e010 ) )\n#define portNVIC_SYSTICK_LOAD_REG\t\t\t( * ( ( volatile uint32_t * ) 0xe000e014 ) )\n#define portNVIC_SYSTICK_CURRENT_VALUE_REG\t( * ( ( volatile uint32_t * ) 0xe000e018 ) )\n#define portNVIC_SYSPRI2_REG\t\t\t\t( * ( ( volatile uint32_t * ) 0xe000ed20 ) )\n/* ...then bits in the registers. */\n#define portNVIC_SYSTICK_INT_BIT\t\t\t( 1UL << 1UL )\n#define portNVIC_SYSTICK_ENABLE_BIT\t\t\t( 1UL << 0UL )\n#define portNVIC_SYSTICK_COUNT_FLAG_BIT\t\t( 1UL << 16UL )\n#define portNVIC_PENDSVCLEAR_BIT \t\t\t( 1UL << 27UL )\n#define portNVIC_PEND_SYSTICK_CLEAR_BIT\t\t( 1UL << 25UL )\n\n/* Constants used to detect a Cortex-M7 r0p1 core, which should use the ARM_CM7\nr0p1 port. */\n#define portCPUID\t\t\t\t\t\t\t( * ( ( volatile uint32_t * ) 0xE000ed00 ) )\n#define portCORTEX_M7_r0p1_ID\t\t\t\t( 0x410FC271UL )\n#define portCORTEX_M7_r0p0_ID\t\t\t\t( 0x410FC270UL )\n\n#define portNVIC_PENDSV_PRI\t\t\t\t\t( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 16UL )\n#define portNVIC_SYSTICK_PRI\t\t\t\t( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 24UL )\n\n/* Constants required to check the validity of an interrupt priority. */\n#define portFIRST_USER_INTERRUPT_NUMBER\t\t( 16 )\n#define portNVIC_IP_REGISTERS_OFFSET_16 \t( 0xE000E3F0 )\n#define portAIRCR_REG\t\t\t\t\t\t( * ( ( volatile uint32_t * ) 0xE000ED0C ) )\n#define portMAX_8_BIT_VALUE\t\t\t\t\t( ( uint8_t ) 0xff )\n#define portTOP_BIT_OF_BYTE\t\t\t\t\t( ( uint8_t ) 0x80 )\n#define portMAX_PRIGROUP_BITS\t\t\t\t( ( uint8_t ) 7 )\n#define portPRIORITY_GROUP_MASK\t\t\t\t( 0x07UL << 8UL )\n#define portPRIGROUP_SHIFT\t\t\t\t\t( 8UL )\n\n/* Masks off all bits but the VECTACTIVE bits in the ICSR register. */\n#define portVECTACTIVE_MASK\t\t\t\t\t( 0xFFUL )\n\n/* Constants required to manipulate the VFP. */\n#define portFPCCR\t\t\t\t\t( ( volatile uint32_t * ) 0xe000ef34 ) /* Floating point context control register. */\n#define portASPEN_AND_LSPEN_BITS\t( 0x3UL << 30UL )\n\n/* Constants required to set up the initial stack. */\n#define portINITIAL_XPSR\t\t\t( 0x01000000 )\n#define portINITIAL_EXC_RETURN\t\t( 0xfffffffd )\n\n/* The systick is a 24-bit counter. */\n#define portMAX_24_BIT_NUMBER\t\t( 0xffffffUL )\n\n/* A fiddle factor to estimate the number of SysTick counts that would have\noccurred while the SysTick counter is stopped during tickless idle\ncalculations. */\n#define portMISSED_COUNTS_FACTOR\t( 45UL )\n\n/* For strict compliance with the Cortex-M spec the task start address should\nhave bit-0 clear, as it is loaded into the PC on exit from an ISR. */\n#define portSTART_ADDRESS_MASK\t\t( ( StackType_t ) 0xfffffffeUL )\n\n/*\n * Setup the timer to generate the tick interrupts.  The implementation in this\n * file is weak to allow application writers to change the timer used to\n * generate the tick interrupt.\n */\nvoid vPortSetupTimerInterrupt( void );\n\n/*\n * Exception handlers.\n */\nvoid xPortPendSVHandler( void );\nvoid xPortSysTickHandler( void );\nvoid vPortSVCHandler( void );\n\n/*\n * Start first task is a separate function so it can be tested in isolation.\n */\nstatic void prvStartFirstTask( void );\n\n/*\n * Functions defined in portasm.s to enable the VFP.\n */\nstatic void prvEnableVFP( void );\n\n/*\n * Used to catch tasks that attempt to return from their implementing function.\n */\nstatic void prvTaskExitError( void );\n\n/*-----------------------------------------------------------*/\n\n/* Each task maintains its own interrupt status in the critical nesting\nvariable. */\nstatic UBaseType_t uxCriticalNesting = 0xaaaaaaaa;\n\n/*\n * The number of SysTick increments that make up one tick period.\n */\n#if( configUSE_TICKLESS_IDLE == 1 )\n\tstatic uint32_t ulTimerCountsForOneTick = 0;\n#endif /* configUSE_TICKLESS_IDLE */\n\n/*\n * The maximum number of tick periods that can be suppressed is limited by the\n * 24 bit resolution of the SysTick timer.\n */\n#if( configUSE_TICKLESS_IDLE == 1 )\n\tstatic uint32_t xMaximumPossibleSuppressedTicks = 0;\n#endif /* configUSE_TICKLESS_IDLE */\n\n/*\n * Compensate for the CPU cycles that pass while the SysTick is stopped (low\n * power functionality only.\n */\n#if( configUSE_TICKLESS_IDLE == 1 )\n\tstatic uint32_t ulStoppedTimerCompensation = 0;\n#endif /* configUSE_TICKLESS_IDLE */\n\n/*\n * Used by the portASSERT_IF_INTERRUPT_PRIORITY_INVALID() macro to ensure\n * FreeRTOS API functions are not called from interrupts that have been assigned\n * a priority above configMAX_SYSCALL_INTERRUPT_PRIORITY.\n */\n#if ( configASSERT_DEFINED == 1 )\n\t static uint8_t ucMaxSysCallPriority = 0;\n\t static uint32_t ulMaxPRIGROUPValue = 0;\n\t static const volatile uint8_t * const pcInterruptPriorityRegisters = ( uint8_t * ) portNVIC_IP_REGISTERS_OFFSET_16;\n#endif /* configASSERT_DEFINED */\n\n/*-----------------------------------------------------------*/\n\n/*\n * See header file for description.\n */\nStackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )\n{\n\t/* Simulate the stack frame as it would be created by a context switch\n\tinterrupt. */\n\n\t/* Offset added to account for the way the MCU uses the stack on entry/exit\n\tof interrupts, and to ensure alignment. */\n\tpxTopOfStack--;\n\n\t*pxTopOfStack = portINITIAL_XPSR;\t/* xPSR */\n\tpxTopOfStack--;\n\t*pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;\t/* PC */\n\tpxTopOfStack--;\n\t*pxTopOfStack = ( StackType_t ) prvTaskExitError;\t/* LR */\n\n\t/* Save code space by skipping register initialisation. */\n\tpxTopOfStack -= 5;\t/* R12, R3, R2 and R1. */\n\t*pxTopOfStack = ( StackType_t ) pvParameters;\t/* R0 */\n\n\t/* A save method is being used that requires each task to maintain its\n\town exec return value. */\n\tpxTopOfStack--;\n\t*pxTopOfStack = portINITIAL_EXC_RETURN;\n\n\tpxTopOfStack -= 8;\t/* R11, R10, R9, R8, R7, R6, R5 and R4. */\n\n\treturn pxTopOfStack;\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvTaskExitError( void )\n{\n\t/* A function that implements a task must not exit or attempt to return to\n\tits caller as there is nothing to return to.  If a task wants to exit it\n\tshould instead call vTaskDelete( NULL ).\n\n\tArtificially force an assert() to be triggered if configASSERT() is\n\tdefined, then stop here so application writers can catch the error. */\n\tconfigASSERT( uxCriticalNesting == ~0UL );\n\tportDISABLE_INTERRUPTS();\n\tfor( ;; );\n}\n/*-----------------------------------------------------------*/\n\n__asm void vPortSVCHandler( void )\n{\n\tPRESERVE8\n\n\t/* Get the location of the current TCB. */\n\tldr\tr3, =pxCurrentTCB\n\tldr r1, [r3]\n\tldr r0, [r1]\n\t/* Pop the core registers. */\n\tldmia r0!, {r4-r11, r14}\n\tmsr psp, r0\n\tisb\n\tmov r0, #0\n\tmsr\tbasepri, r0\n\tbx r14\n}\n/*-----------------------------------------------------------*/\n\n__asm void prvStartFirstTask( void )\n{\n\tPRESERVE8\n\n\t/* Use the NVIC offset register to locate the stack. */\n\tldr r0, =0xE000ED08\n\tldr r0, [r0]\n\tldr r0, [r0]\n\t/* Set the msp back to the start of the stack. */\n\tmsr msp, r0\n\t/* Clear the bit that indicates the FPU is in use in case the FPU was used\n\tbefore the scheduler was started - which would otherwise result in the\n\tunnecessary leaving of space in the SVC stack for lazy saving of FPU\n\tregisters. */\n\tmov r0, #0\n\tmsr control, r0\n\t/* Globally enable interrupts. */\n\tcpsie i\n\tcpsie f\n\tdsb\n\tisb\n\t/* Call SVC to start the first task. */\n\tsvc 0\n\tnop\n\tnop\n}\n/*-----------------------------------------------------------*/\n\n__asm void prvEnableVFP( void )\n{\n\tPRESERVE8\n\n\t/* The FPU enable bits are in the CPACR. */\n\tldr.w r0, =0xE000ED88\n\tldr\tr1, [r0]\n\n\t/* Enable CP10 and CP11 coprocessors, then save back. */\n\torr\tr1, r1, #( 0xf << 20 )\n\tstr r1, [r0]\n\tbx\tr14\n\tnop\n}\n/*-----------------------------------------------------------*/\n\n/*\n * See header file for description.\n */\nBaseType_t xPortStartScheduler( void )\n{\n\t/* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.\n\tSee http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\n\tconfigASSERT( configMAX_SYSCALL_INTERRUPT_PRIORITY );\n\n\t/* This port can be used on all revisions of the Cortex-M7 core other than\n\tthe r0p1 parts.  r0p1 parts should use the port from the\n\t/source/portable/GCC/ARM_CM7/r0p1 directory. */\n\tconfigASSERT( portCPUID != portCORTEX_M7_r0p1_ID );\n\tconfigASSERT( portCPUID != portCORTEX_M7_r0p0_ID );\n\n\t#if( configASSERT_DEFINED == 1 )\n\t{\n\t\tvolatile uint32_t ulOriginalPriority;\n\t\tvolatile uint8_t * const pucFirstUserPriorityRegister = ( uint8_t * ) ( portNVIC_IP_REGISTERS_OFFSET_16 + portFIRST_USER_INTERRUPT_NUMBER );\n\t\tvolatile uint8_t ucMaxPriorityValue;\n\n\t\t/* Determine the maximum priority from which ISR safe FreeRTOS API\n\t\tfunctions can be called.  ISR safe functions are those that end in\n\t\t\"FromISR\".  FreeRTOS maintains separate thread and ISR API functions to\n\t\tensure interrupt entry is as fast and simple as possible.\n\n\t\tSave the interrupt priority value that is about to be clobbered. */\n\t\tulOriginalPriority = *pucFirstUserPriorityRegister;\n\n\t\t/* Determine the number of priority bits available.  First write to all\n\t\tpossible bits. */\n\t\t*pucFirstUserPriorityRegister = portMAX_8_BIT_VALUE;\n\n\t\t/* Read the value back to see how many bits stuck. */\n\t\tucMaxPriorityValue = *pucFirstUserPriorityRegister;\n\n\t\t/* The kernel interrupt priority should be set to the lowest\n\t\tpriority. */\n\t\tconfigASSERT( ucMaxPriorityValue == ( configKERNEL_INTERRUPT_PRIORITY & ucMaxPriorityValue ) );\n\n\t\t/* Use the same mask on the maximum system call priority. */\n\t\tucMaxSysCallPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY & ucMaxPriorityValue;\n\n\t\t/* Calculate the maximum acceptable priority group value for the number\n\t\tof bits read back. */\n\t\tulMaxPRIGROUPValue = portMAX_PRIGROUP_BITS;\n\t\twhile( ( ucMaxPriorityValue & portTOP_BIT_OF_BYTE ) == portTOP_BIT_OF_BYTE )\n\t\t{\n\t\t\tulMaxPRIGROUPValue--;\n\t\t\tucMaxPriorityValue <<= ( uint8_t ) 0x01;\n\t\t}\n\n\t\t#ifdef __NVIC_PRIO_BITS\n\t\t{\n\t\t\t/* Check the CMSIS configuration that defines the number of\n\t\t\tpriority bits matches the number of priority bits actually queried\n\t\t\tfrom the hardware. */\n\t\t\tconfigASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\n\t\t}\n\t\t#endif\n\n\t\t#ifdef configPRIO_BITS\n\t\t{\n\t\t\t/* Check the FreeRTOS configuration that defines the number of\n\t\t\tpriority bits matches the number of priority bits actually queried\n\t\t\tfrom the hardware. */\n\t\t\tconfigASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\n\t\t}\n\t\t#endif\n\n\t\t/* Shift the priority group value back to its position within the AIRCR\n\t\tregister. */\n\t\tulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\n\t\tulMaxPRIGROUPValue &= portPRIORITY_GROUP_MASK;\n\n\t\t/* Restore the clobbered interrupt priority register to its original\n\t\tvalue. */\n\t\t*pucFirstUserPriorityRegister = ulOriginalPriority;\n\t}\n\t#endif /* conifgASSERT_DEFINED */\n\n\t/* Make PendSV and SysTick the lowest priority interrupts. */\n\tportNVIC_SYSPRI2_REG |= portNVIC_PENDSV_PRI;\n\tportNVIC_SYSPRI2_REG |= portNVIC_SYSTICK_PRI;\n\n\t/* Start the timer that generates the tick ISR.  Interrupts are disabled\n\there already. */\n\tvPortSetupTimerInterrupt();\n\n\t/* Initialise the critical nesting count ready for the first task. */\n\tuxCriticalNesting = 0;\n\n\t/* Ensure the VFP is enabled - it should be anyway. */\n\tprvEnableVFP();\n\n\t/* Lazy save always. */\n\t*( portFPCCR ) |= portASPEN_AND_LSPEN_BITS;\n\n\t/* Start the first task. */\n\tprvStartFirstTask();\n\n\t/* Should not get here! */\n\treturn 0;\n}\n/*-----------------------------------------------------------*/\n\nvoid vPortEndScheduler( void )\n{\n\t/* Not implemented in ports where there is nothing to return to.\n\tArtificially force an assert. */\n\tconfigASSERT( uxCriticalNesting == 1000UL );\n}\n/*-----------------------------------------------------------*/\n\nvoid vPortEnterCritical( void )\n{\n\tportDISABLE_INTERRUPTS();\n\tuxCriticalNesting++;\n\n\t/* This is not the interrupt safe version of the enter critical function so\n\tassert() if it is being called from an interrupt context.  Only API\n\tfunctions that end in \"FromISR\" can be used in an interrupt.  Only assert if\n\tthe critical nesting count is 1 to protect against recursive calls if the\n\tassert function also uses a critical section. */\n\tif( uxCriticalNesting == 1 )\n\t{\n\t\tconfigASSERT( ( portNVIC_INT_CTRL_REG & portVECTACTIVE_MASK ) == 0 );\n\t}\n}\n/*-----------------------------------------------------------*/\n\nvoid vPortExitCritical( void )\n{\n\tconfigASSERT( uxCriticalNesting );\n\tuxCriticalNesting--;\n\tif( uxCriticalNesting == 0 )\n\t{\n\t\tportENABLE_INTERRUPTS();\n\t}\n}\n/*-----------------------------------------------------------*/\n\n__asm void xPortPendSVHandler( void )\n{\n\textern uxCriticalNesting;\n\textern pxCurrentTCB;\n\textern vTaskSwitchContext;\n\n\tPRESERVE8\n\n\tmrs r0, psp\n\tisb\n\t/* Get the location of the current TCB. */\n\tldr\tr3, =pxCurrentTCB\n\tldr\tr2, [r3]\n\n\t/* Is the task using the FPU context?  If so, push high vfp registers. */\n\ttst r14, #0x10\n\tit eq\n\tvstmdbeq r0!, {s16-s31}\n\n\t/* Save the core registers. */\n\tstmdb r0!, {r4-r11, r14}\n\n\t/* Save the new top of stack into the first member of the TCB. */\n\tstr r0, [r2]\n\n\tstmdb sp!, {r0, r3}\n\tmov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY\n\tmsr basepri, r0\n\tdsb\n\tisb\n\tbl vTaskSwitchContext\n\tmov r0, #0\n\tmsr basepri, r0\n\tldmia sp!, {r0, r3}\n\n\t/* The first item in pxCurrentTCB is the task top of stack. */\n\tldr r1, [r3]\n\tldr r0, [r1]\n\n\t/* Pop the core registers. */\n\tldmia r0!, {r4-r11, r14}\n\n\t/* Is the task using the FPU context?  If so, pop the high vfp registers\n\ttoo. */\n\ttst r14, #0x10\n\tit eq\n\tvldmiaeq r0!, {s16-s31}\n\n\tmsr psp, r0\n\tisb\n\t#ifdef WORKAROUND_PMU_CM001 /* XMC4000 specific errata */\n\t\t#if WORKAROUND_PMU_CM001 == 1\n\t\t\tpush { r14 }\n\t\t\tpop { pc }\n\t\t\tnop\n\t\t#endif\n\t#endif\n\n\tbx r14\n}\n/*-----------------------------------------------------------*/\n\nvoid xPortSysTickHandler( void )\n{\n\t/* The SysTick runs at the lowest interrupt priority, so when this interrupt\n\texecutes all interrupts must be unmasked.  There is therefore no need to\n\tsave and then restore the interrupt mask value as its value is already\n\tknown - therefore the slightly faster vPortRaiseBASEPRI() function is used\n\tin place of portSET_INTERRUPT_MASK_FROM_ISR(). */\n\tvPortRaiseBASEPRI();\n\t{\n\t\t/* Increment the RTOS tick. */\n\t\tif( xTaskIncrementTick() != pdFALSE )\n\t\t{\n\t\t\t/* A context switch is required.  Context switching is performed in\n\t\t\tthe PendSV interrupt.  Pend the PendSV interrupt. */\n\t\t\tportNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\n\t\t}\n\t}\n\tvPortClearBASEPRIFromISR();\n}\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TICKLESS_IDLE == 1 )\n\n\t__weak void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime )\n\t{\n\tuint32_t ulReloadValue, ulCompleteTickPeriods, ulCompletedSysTickDecrements;\n\tTickType_t xModifiableIdleTime;\n\n\t\t/* Make sure the SysTick reload value does not overflow the counter. */\n\t\tif( xExpectedIdleTime > xMaximumPossibleSuppressedTicks )\n\t\t{\n\t\t\txExpectedIdleTime = xMaximumPossibleSuppressedTicks;\n\t\t}\n\n\t\t/* Stop the SysTick momentarily.  The time the SysTick is stopped for\n\t\tis accounted for as best it can be, but using the tickless mode will\n\t\tinevitably result in some tiny drift of the time maintained by the\n\t\tkernel with respect to calendar time. */\n\t\tportNVIC_SYSTICK_CTRL_REG &= ~portNVIC_SYSTICK_ENABLE_BIT;\n\n\t\t/* Calculate the reload value required to wait xExpectedIdleTime\n\t\ttick periods.  -1 is used because this code will execute part way\n\t\tthrough one of the tick periods. */\n\t\tulReloadValue = portNVIC_SYSTICK_CURRENT_VALUE_REG + ( ulTimerCountsForOneTick * ( xExpectedIdleTime - 1UL ) );\n\t\tif( ulReloadValue > ulStoppedTimerCompensation )\n\t\t{\n\t\t\tulReloadValue -= ulStoppedTimerCompensation;\n\t\t}\n\n\t\t/* Enter a critical section but don't use the taskENTER_CRITICAL()\n\t\tmethod as that will mask interrupts that should exit sleep mode. */\n\t\t__disable_irq();\n\t\t__dsb( portSY_FULL_READ_WRITE );\n\t\t__isb( portSY_FULL_READ_WRITE );\n\n\t\t/* If a context switch is pending or a task is waiting for the scheduler\n\t\tto be unsuspended then abandon the low power entry. */\n\t\tif( eTaskConfirmSleepModeStatus() == eAbortSleep )\n\t\t{\n\t\t\t/* Restart from whatever is left in the count register to complete\n\t\t\tthis tick period. */\n\t\t\tportNVIC_SYSTICK_LOAD_REG = portNVIC_SYSTICK_CURRENT_VALUE_REG;\n\n\t\t\t/* Restart SysTick. */\n\t\t\tportNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT;\n\n\t\t\t/* Reset the reload register to the value required for normal tick\n\t\t\tperiods. */\n\t\t\tportNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL;\n\n\t\t\t/* Re-enable interrupts - see comments above __disable_irq() call\n\t\t\tabove. */\n\t\t\t__enable_irq();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Set the new reload value. */\n\t\t\tportNVIC_SYSTICK_LOAD_REG = ulReloadValue;\n\n\t\t\t/* Clear the SysTick count flag and set the count value back to\n\t\t\tzero. */\n\t\t\tportNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL;\n\n\t\t\t/* Restart SysTick. */\n\t\t\tportNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT;\n\n\t\t\t/* Sleep until something happens.  configPRE_SLEEP_PROCESSING() can\n\t\t\tset its parameter to 0 to indicate that its implementation contains\n\t\t\tits own wait for interrupt or wait for event instruction, and so wfi\n\t\t\tshould not be executed again.  However, the original expected idle\n\t\t\ttime variable must remain unmodified, so a copy is taken. */\n\t\t\txModifiableIdleTime = xExpectedIdleTime;\n\t\t\tconfigPRE_SLEEP_PROCESSING( xModifiableIdleTime );\n\t\t\tif( xModifiableIdleTime > 0 )\n\t\t\t{\n\t\t\t\t__dsb( portSY_FULL_READ_WRITE );\n\t\t\t\t__wfi();\n\t\t\t\t__isb( portSY_FULL_READ_WRITE );\n\t\t\t}\n\t\t\tconfigPOST_SLEEP_PROCESSING( xExpectedIdleTime );\n\n\t\t\t/* Re-enable interrupts to allow the interrupt that brought the MCU\n\t\t\tout of sleep mode to execute immediately.  see comments above\n\t\t\t__disable_interrupt() call above. */\n\t\t\t__enable_irq();\n\t\t\t__dsb( portSY_FULL_READ_WRITE );\n\t\t\t__isb( portSY_FULL_READ_WRITE );\n\n\t\t\t/* Disable interrupts again because the clock is about to be stopped\n\t\t\tand interrupts that execute while the clock is stopped will increase\n\t\t\tany slippage between the time maintained by the RTOS and calendar\n\t\t\ttime. */\n\t\t\t__disable_irq();\n\t\t\t__dsb( portSY_FULL_READ_WRITE );\n\t\t\t__isb( portSY_FULL_READ_WRITE );\n\n\t\t\t/* Disable the SysTick clock without reading the\n\t\t\tportNVIC_SYSTICK_CTRL_REG register to ensure the\n\t\t\tportNVIC_SYSTICK_COUNT_FLAG_BIT is not cleared if it is set.  Again,\n\t\t\tthe time the SysTick is stopped for is accounted for as best it can\n\t\t\tbe, but using the tickless mode will inevitably result in some tiny\n\t\t\tdrift of the time maintained by the kernel with respect to calendar\n\t\t\ttime*/\n\t\t\tportNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT );\n\n\t\t\t/* Determine if the SysTick clock has already counted to zero and\n\t\t\tbeen set back to the current reload value (the reload back being\n\t\t\tcorrect for the entire expected idle time) or if the SysTick is yet\n\t\t\tto count to zero (in which case an interrupt other than the SysTick\n\t\t\tmust have brought the system out of sleep mode). */\n\t\t\tif( ( portNVIC_SYSTICK_CTRL_REG & portNVIC_SYSTICK_COUNT_FLAG_BIT ) != 0 )\n\t\t\t{\n\t\t\t\tuint32_t ulCalculatedLoadValue;\n\n\t\t\t\t/* The tick interrupt is already pending, and the SysTick count\n\t\t\t\treloaded with ulReloadValue.  Reset the\n\t\t\t\tportNVIC_SYSTICK_LOAD_REG with whatever remains of this tick\n\t\t\t\tperiod. */\n\t\t\t\tulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ) - ( ulReloadValue - portNVIC_SYSTICK_CURRENT_VALUE_REG );\n\n\t\t\t\t/* Don't allow a tiny value, or values that have somehow\n\t\t\t\tunderflowed because the post sleep hook did something\n\t\t\t\tthat took too long. */\n\t\t\t\tif( ( ulCalculatedLoadValue < ulStoppedTimerCompensation ) || ( ulCalculatedLoadValue > ulTimerCountsForOneTick ) )\n\t\t\t\t{\n\t\t\t\t\tulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL );\n\t\t\t\t}\n\n\t\t\t\tportNVIC_SYSTICK_LOAD_REG = ulCalculatedLoadValue;\n\n\t\t\t\t/* As the pending tick will be processed as soon as this\n\t\t\t\tfunction exits, the tick value maintained by the tick is stepped\n\t\t\t\tforward by one less than the time spent waiting. */\n\t\t\t\tulCompleteTickPeriods = xExpectedIdleTime - 1UL;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Something other than the tick interrupt ended the sleep.\n\t\t\t\tWork out how long the sleep lasted rounded to complete tick\n\t\t\t\tperiods (not the ulReload value which accounted for part\n\t\t\t\tticks). */\n\t\t\t\tulCompletedSysTickDecrements = ( xExpectedIdleTime * ulTimerCountsForOneTick ) - portNVIC_SYSTICK_CURRENT_VALUE_REG;\n\n\t\t\t\t/* How many complete tick periods passed while the processor\n\t\t\t\twas waiting? */\n\t\t\t\tulCompleteTickPeriods = ulCompletedSysTickDecrements / ulTimerCountsForOneTick;\n\n\t\t\t\t/* The reload value is set to whatever fraction of a single tick\n\t\t\t\tperiod remains. */\n\t\t\t\tportNVIC_SYSTICK_LOAD_REG = ( ( ulCompleteTickPeriods + 1UL ) * ulTimerCountsForOneTick ) - ulCompletedSysTickDecrements;\n\t\t\t}\n\n\t\t\t/* Restart SysTick so it runs from portNVIC_SYSTICK_LOAD_REG\n\t\t\tagain, then set portNVIC_SYSTICK_LOAD_REG back to its standard\n\t\t\tvalue. */\n\t\t\tportNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL;\n\t\t\tportNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT;\n\t\t\tvTaskStepTick( ulCompleteTickPeriods );\n\t\t\tportNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL;\n\n\t\t\t/* Exit with interrupts enabled. */\n\t\t\t__enable_irq();\n\t\t}\n\t}\n\n#endif /* #if configUSE_TICKLESS_IDLE */\n\n/*-----------------------------------------------------------*/\n\n/*\n * Setup the SysTick timer to generate the tick interrupts at the required\n * frequency.\n */\n#if( configOVERRIDE_DEFAULT_TICK_CONFIGURATION == 0 )\n\n\t__weak void vPortSetupTimerInterrupt( void )\n\t{\n\t\t/* Calculate the constants required to configure the tick interrupt. */\n\t\t#if( configUSE_TICKLESS_IDLE == 1 )\n\t\t{\n\t\t\tulTimerCountsForOneTick = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ );\n\t\t\txMaximumPossibleSuppressedTicks = portMAX_24_BIT_NUMBER / ulTimerCountsForOneTick;\n\t\t\tulStoppedTimerCompensation = portMISSED_COUNTS_FACTOR / ( configCPU_CLOCK_HZ / configSYSTICK_CLOCK_HZ );\n\t\t}\n\t\t#endif /* configUSE_TICKLESS_IDLE */\n\n\t\t/* Stop and clear the SysTick. */\n\t\tportNVIC_SYSTICK_CTRL_REG = 0UL;\n\t\tportNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL;\n\n\t\t/* Configure SysTick to interrupt at the requested rate. */\n\t\tportNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\n\t\tportNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );\n\t}\n\n#endif /* configOVERRIDE_DEFAULT_TICK_CONFIGURATION */\n/*-----------------------------------------------------------*/\n\n__asm uint32_t vPortGetIPSR( void )\n{\n\tPRESERVE8\n\n\tmrs r0, ipsr\n\tbx r14\n}\n/*-----------------------------------------------------------*/\n\n#if( configASSERT_DEFINED == 1 )\n\n\tvoid vPortValidateInterruptPriority( void )\n\t{\n\tuint32_t ulCurrentInterrupt;\n\tuint8_t ucCurrentPriority;\n\n\t\t/* Obtain the number of the currently executing interrupt. */\n\t\tulCurrentInterrupt = vPortGetIPSR();\n\n\t\t/* Is the interrupt number a user defined interrupt? */\n\t\tif( ulCurrentInterrupt >= portFIRST_USER_INTERRUPT_NUMBER )\n\t\t{\n\t\t\t/* Look up the interrupt's priority. */\n\t\t\tucCurrentPriority = pcInterruptPriorityRegisters[ ulCurrentInterrupt ];\n\n\t\t\t/* The following assertion will fail if a service routine (ISR) for\n\t\t\tan interrupt that has been assigned a priority above\n\t\t\tconfigMAX_SYSCALL_INTERRUPT_PRIORITY calls an ISR safe FreeRTOS API\n\t\t\tfunction.  ISR safe FreeRTOS API functions must *only* be called\n\t\t\tfrom interrupts that have been assigned a priority at or below\n\t\t\tconfigMAX_SYSCALL_INTERRUPT_PRIORITY.\n\n\t\t\tNumerically low interrupt priority numbers represent logically high\n\t\t\tinterrupt priorities, therefore the priority of the interrupt must\n\t\t\tbe set to a value equal to or numerically *higher* than\n\t\t\tconfigMAX_SYSCALL_INTERRUPT_PRIORITY.\n\n\t\t\tInterrupts that\tuse the FreeRTOS API must not be left at their\n\t\t\tdefault priority of\tzero as that is the highest possible priority,\n\t\t\twhich is guaranteed to be above configMAX_SYSCALL_INTERRUPT_PRIORITY,\n\t\t\tand\ttherefore also guaranteed to be invalid.\n\n\t\t\tFreeRTOS maintains separate thread and ISR API functions to ensure\n\t\t\tinterrupt entry is as fast and simple as possible.\n\n\t\t\tThe following links provide detailed information:\n\t\t\thttp://www.freertos.org/RTOS-Cortex-M3-M4.html\n\t\t\thttp://www.freertos.org/FAQHelp.html */\n\t\t\tconfigASSERT( ucCurrentPriority >= ucMaxSysCallPriority );\n\t\t}\n\n\t\t/* Priority grouping:  The interrupt controller (NVIC) allows the bits\n\t\tthat define each interrupt's priority to be split between bits that\n\t\tdefine the interrupt's pre-emption priority bits and bits that define\n\t\tthe interrupt's sub-priority.  For simplicity all bits must be defined\n\t\tto be pre-emption priority bits.  The following assertion will fail if\n\t\tthis is not the case (if some bits represent a sub-priority).\n\n\t\tIf the application only uses CMSIS libraries for interrupt\n\t\tconfiguration then the correct setting can be achieved on all Cortex-M\n\t\tdevices by calling NVIC_SetPriorityGrouping( 0 ); before starting the\n\t\tscheduler.  Note however that some vendor specific peripheral libraries\n\t\tassume a non-zero priority group setting, in which cases using a value\n\t\tof zero will result in unpredictable behaviour. */\n\t\tconfigASSERT( ( portAIRCR_REG & portPRIORITY_GROUP_MASK ) <= ulMaxPRIGROUPValue );\n\t}\n\n#endif /* configASSERT_DEFINED */\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/portmacro.h",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n\n#ifndef PORTMACRO_H\n#define PORTMACRO_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*-----------------------------------------------------------\n * Port specific definitions.\n *\n * The settings in this file configure FreeRTOS correctly for the\n * given hardware and compiler.\n *\n * These settings should not be altered.\n *-----------------------------------------------------------\n */\n\n/* Type definitions. */\n#define portCHAR\t\tchar\n#define portFLOAT\t\tfloat\n#define portDOUBLE\t\tdouble\n#define portLONG\t\tlong\n#define portSHORT\t\tshort\n#define portSTACK_TYPE\tuint32_t\n#define portBASE_TYPE\tlong\n\ntypedef portSTACK_TYPE StackType_t;\ntypedef long BaseType_t;\ntypedef unsigned long UBaseType_t;\n\n#if( configUSE_16_BIT_TICKS == 1 )\n\ttypedef uint16_t TickType_t;\n\t#define portMAX_DELAY ( TickType_t ) 0xffff\n#else\n\ttypedef uint32_t TickType_t;\n\t#define portMAX_DELAY ( TickType_t ) 0xffffffffUL\n\n\t/* 32-bit tick type on a 32-bit architecture, so reads of the tick count do\n\tnot need to be guarded with a critical section. */\n\t#define portTICK_TYPE_IS_ATOMIC 1\n#endif\n/*-----------------------------------------------------------*/\n\n/* Architecture specifics. */\n#define portSTACK_GROWTH\t\t\t( -1 )\n#define portTICK_PERIOD_MS\t\t\t( ( TickType_t ) 1000 / configTICK_RATE_HZ )\n#define portBYTE_ALIGNMENT\t\t\t8\n\n/* Constants used with memory barrier intrinsics. */\n#define portSY_FULL_READ_WRITE\t\t( 15 )\n\n/*-----------------------------------------------------------*/\n\n/* Scheduler utilities. */\n#define portYIELD()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t/* Set a PendSV to request a context switch. */\t\t\t\t\t\t\t\t\\\n\tportNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t/* Barriers are normally not required but do ensure the code is completely\t\\\n\twithin the specified behaviour for the architecture. */\t\t\t\t\t\t\\\n\t__dsb( portSY_FULL_READ_WRITE );\t\t\t\t\t\t\t\t\t\t\t\\\n\t__isb( portSY_FULL_READ_WRITE );\t\t\t\t\t\t\t\t\t\t\t\\\n}\n/*-----------------------------------------------------------*/\n\n#define portNVIC_INT_CTRL_REG\t\t( * ( ( volatile uint32_t * ) 0xe000ed04 ) )\n#define portNVIC_PENDSVSET_BIT\t\t( 1UL << 28UL )\n#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired != pdFALSE ) portYIELD()\n#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )\n/*-----------------------------------------------------------*/\n\n/* Critical section management. */\nextern void vPortEnterCritical( void );\nextern void vPortExitCritical( void );\n\n#define portDISABLE_INTERRUPTS()\t\t\t\tvPortRaiseBASEPRI()\n#define portENABLE_INTERRUPTS()\t\t\t\t\tvPortSetBASEPRI( 0 )\n#define portENTER_CRITICAL()\t\t\t\t\tvPortEnterCritical()\n#define portEXIT_CRITICAL()\t\t\t\t\t\tvPortExitCritical()\n#define portSET_INTERRUPT_MASK_FROM_ISR()\t\tulPortRaiseBASEPRI()\n#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x)\tvPortSetBASEPRI(x)\n\n/*-----------------------------------------------------------*/\n\n/* Tickless idle/low power functionality. */\n#ifndef portSUPPRESS_TICKS_AND_SLEEP\n\textern void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime );\n\t#define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime )\n#endif\n/*-----------------------------------------------------------*/\n\n/* Port specific optimisations. */\n#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION\n\t#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1\n#endif\n\n#if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1\n\n\t/* Check the configuration. */\n\t#if( configMAX_PRIORITIES > 32 )\n\t\t#error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32.  It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.\n\t#endif\n\n\t/* Store/clear the ready priorities in a bit map. */\n\t#define portRECORD_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )\n\t#define portRESET_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )\n\n\t/*-----------------------------------------------------------*/\n\n\t#define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) uxTopPriority = ( 31UL - ( uint32_t ) __clz( ( uxReadyPriorities ) ) )\n\n#endif /* taskRECORD_READY_PRIORITY */\n/*-----------------------------------------------------------*/\n\n/* Task function macros as described on the FreeRTOS.org WEB site.  These are\nnot necessary for to use this port.  They are defined so the common demo files\n(which build with all the ports) will build. */\n#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )\n#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )\n/*-----------------------------------------------------------*/\n\n#ifdef configASSERT\n\tvoid vPortValidateInterruptPriority( void );\n\t#define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() \tvPortValidateInterruptPriority()\n#endif\n\n/* portNOP() is not required by this port. */\n#define portNOP()\n\n#define portINLINE __inline\n\n#ifndef portFORCE_INLINE\n\t#define portFORCE_INLINE __forceinline\n#endif\n\n/*-----------------------------------------------------------*/\n\nstatic portFORCE_INLINE void vPortSetBASEPRI( uint32_t ulBASEPRI )\n{\n\t__asm\n\t{\n\t\t/* Barrier instructions are not used as this function is only used to\n\t\tlower the BASEPRI value. */\n\t\tmsr basepri, ulBASEPRI\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic portFORCE_INLINE void vPortRaiseBASEPRI( void )\n{\nuint32_t ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;\n\n\t__asm\n\t{\n\t\t/* Set BASEPRI to the max syscall priority to effect a critical\n\t\tsection. */\n\t\tmsr basepri, ulNewBASEPRI\n\t\tdsb\n\t\tisb\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic portFORCE_INLINE void vPortClearBASEPRIFromISR( void )\n{\n\t__asm\n\t{\n\t\t/* Set BASEPRI to 0 so no interrupts are masked.  This function is only\n\t\tused to lower the mask in an interrupt, so memory barriers are not \n\t\tused. */\n\t\tmsr basepri, #0\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic portFORCE_INLINE uint32_t ulPortRaiseBASEPRI( void )\n{\nuint32_t ulReturn, ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;\n\n\t__asm\n\t{\n\t\t/* Set BASEPRI to the max syscall priority to effect a critical\n\t\tsection. */\n\t\tmrs ulReturn, basepri\n\t\tmsr basepri, ulNewBASEPRI\n\t\tdsb\n\t\tisb\n\t}\n\n\treturn ulReturn;\n}\n/*-----------------------------------------------------------*/\n\nstatic portFORCE_INLINE BaseType_t xPortIsInsideInterrupt( void )\n{\nuint32_t ulCurrentInterrupt;\nBaseType_t xReturn;\n\n\t/* Obtain the number of the currently executing interrupt. */\n\t__asm\n\t{\n\t\tmrs ulCurrentInterrupt, ipsr\n\t}\n\n\tif( ulCurrentInterrupt == 0 )\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\telse\n\t{\n\t\txReturn = pdTRUE;\n\t}\n\n\treturn xReturn;\n}\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* PORTMACRO_H */\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/queue.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n#include <stdlib.h>\n#include <string.h>\n\n/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\nall the API functions to use the MPU wrappers.  That should only be done when\ntask.h is included from an application file. */\n#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"queue.h\"\n\n#if ( configUSE_CO_ROUTINES == 1 )\n\t#include \"croutine.h\"\n#endif\n\n/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified\nbecause the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined\nfor the header files above, but not in this file, in order to generate the\ncorrect privileged Vs unprivileged linkage and placement. */\n#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */\n\n\n/* Constants used with the cRxLock and cTxLock structure members. */\n#define queueUNLOCKED\t\t\t\t\t( ( int8_t ) -1 )\n#define queueLOCKED_UNMODIFIED\t\t\t( ( int8_t ) 0 )\n\n/* When the Queue_t structure is used to represent a base queue its pcHead and\npcTail members are used as pointers into the queue storage area.  When the\nQueue_t structure is used to represent a mutex pcHead and pcTail pointers are\nnot necessary, and the pcHead pointer is set to NULL to indicate that the\nstructure instead holds a pointer to the mutex holder (if any).  Map alternative\nnames to the pcHead and structure member to ensure the readability of the code\nis maintained.  The QueuePointers_t and SemaphoreData_t types are used to form\na union as their usage is mutually exclusive dependent on what the queue is\nbeing used for. */\n#define uxQueueType\t\t\t\t\t\tpcHead\n#define queueQUEUE_IS_MUTEX\t\t\t\tNULL\n\ntypedef struct QueuePointers\n{\n\tint8_t *pcTail;\t\t\t\t\t/*< Points to the byte at the end of the queue storage area.  Once more byte is allocated than necessary to store the queue items, this is used as a marker. */\n\tint8_t *pcReadFrom;\t\t\t\t/*< Points to the last place that a queued item was read from when the structure is used as a queue. */\n} QueuePointers_t;\n\ntypedef struct SemaphoreData\n{\n\tTaskHandle_t xMutexHolder;\t\t /*< The handle of the task that holds the mutex. */\n\tUBaseType_t uxRecursiveCallCount;/*< Maintains a count of the number of times a recursive mutex has been recursively 'taken' when the structure is used as a mutex. */\n} SemaphoreData_t;\n\n/* Semaphores do not actually store or copy data, so have an item size of\nzero. */\n#define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( ( UBaseType_t ) 0 )\n#define queueMUTEX_GIVE_BLOCK_TIME\t\t ( ( TickType_t ) 0U )\n\n#if( configUSE_PREEMPTION == 0 )\n\t/* If the cooperative scheduler is being used then a yield should not be\n\tperformed just because a higher priority task has been woken. */\n\t#define queueYIELD_IF_USING_PREEMPTION()\n#else\n\t#define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API()\n#endif\n\n/*\n * Definition of the queue used by the scheduler.\n * Items are queued by copy, not reference.  See the following link for the\n * rationale: https://www.freertos.org/Embedded-RTOS-Queues.html\n */\ntypedef struct QueueDefinition \t\t/* The old naming convention is used to prevent breaking kernel aware debuggers. */\n{\n\tint8_t *pcHead;\t\t\t\t\t/*< Points to the beginning of the queue storage area. */\n\tint8_t *pcWriteTo;\t\t\t\t/*< Points to the free next place in the storage area. */\n\n\tunion\n\t{\n\t\tQueuePointers_t xQueue;\t\t/*< Data required exclusively when this structure is used as a queue. */\n\t\tSemaphoreData_t xSemaphore; /*< Data required exclusively when this structure is used as a semaphore. */\n\t} u;\n\n\tList_t xTasksWaitingToSend;\t\t/*< List of tasks that are blocked waiting to post onto this queue.  Stored in priority order. */\n\tList_t xTasksWaitingToReceive;\t/*< List of tasks that are blocked waiting to read from this queue.  Stored in priority order. */\n\n\tvolatile UBaseType_t uxMessagesWaiting;/*< The number of items currently in the queue. */\n\tUBaseType_t uxLength;\t\t\t/*< The length of the queue defined as the number of items it will hold, not the number of bytes. */\n\tUBaseType_t uxItemSize;\t\t\t/*< The size of each items that the queue will hold. */\n\n\tvolatile int8_t cRxLock;\t\t/*< Stores the number of items received from the queue (removed from the queue) while the queue was locked.  Set to queueUNLOCKED when the queue is not locked. */\n\tvolatile int8_t cTxLock;\t\t/*< Stores the number of items transmitted to the queue (added to the queue) while the queue was locked.  Set to queueUNLOCKED when the queue is not locked. */\n\n\t#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\t\tuint8_t ucStaticallyAllocated;\t/*< Set to pdTRUE if the memory used by the queue was statically allocated to ensure no attempt is made to free the memory. */\n\t#endif\n\n\t#if ( configUSE_QUEUE_SETS == 1 )\n\t\tstruct QueueDefinition *pxQueueSetContainer;\n\t#endif\n\n\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t uxQueueNumber;\n\t\tuint8_t ucQueueType;\n\t#endif\n\n} xQUEUE;\n\n/* The old xQUEUE name is maintained above then typedefed to the new Queue_t\nname below to enable the use of older kernel aware debuggers. */\ntypedef xQUEUE Queue_t;\n\n/*-----------------------------------------------------------*/\n\n/*\n * The queue registry is just a means for kernel aware debuggers to locate\n * queue structures.  It has no other purpose so is an optional component.\n */\n#if ( configQUEUE_REGISTRY_SIZE > 0 )\n\n\t/* The type stored within the queue registry array.  This allows a name\n\tto be assigned to each queue making kernel aware debugging a little\n\tmore user friendly. */\n\ttypedef struct QUEUE_REGISTRY_ITEM\n\t{\n\t\tconst char *pcQueueName; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\tQueueHandle_t xHandle;\n\t} xQueueRegistryItem;\n\n\t/* The old xQueueRegistryItem name is maintained above then typedefed to the\n\tnew xQueueRegistryItem name below to enable the use of older kernel aware\n\tdebuggers. */\n\ttypedef xQueueRegistryItem QueueRegistryItem_t;\n\n\t/* The queue registry is simply an array of QueueRegistryItem_t structures.\n\tThe pcQueueName member of a structure being NULL is indicative of the\n\tarray position being vacant. */\n\tPRIVILEGED_DATA QueueRegistryItem_t xQueueRegistry[ configQUEUE_REGISTRY_SIZE ];\n\n#endif /* configQUEUE_REGISTRY_SIZE */\n\n/*\n * Unlocks a queue locked by a call to prvLockQueue.  Locking a queue does not\n * prevent an ISR from adding or removing items to the queue, but does prevent\n * an ISR from removing tasks from the queue event lists.  If an ISR finds a\n * queue is locked it will instead increment the appropriate queue lock count\n * to indicate that a task may require unblocking.  When the queue in unlocked\n * these lock counts are inspected, and the appropriate action taken.\n */\nstatic void prvUnlockQueue( Queue_t * const pxQueue ) PRIVILEGED_FUNCTION;\n\n/*\n * Uses a critical section to determine if there is any data in a queue.\n *\n * @return pdTRUE if the queue contains no items, otherwise pdFALSE.\n */\nstatic BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue ) PRIVILEGED_FUNCTION;\n\n/*\n * Uses a critical section to determine if there is any space in a queue.\n *\n * @return pdTRUE if there is no space, otherwise pdFALSE;\n */\nstatic BaseType_t prvIsQueueFull( const Queue_t *pxQueue ) PRIVILEGED_FUNCTION;\n\n/*\n * Copies an item into the queue, either at the front of the queue or the\n * back of the queue.\n */\nstatic BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ) PRIVILEGED_FUNCTION;\n\n/*\n * Copies an item out of a queue.\n */\nstatic void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION;\n\n#if ( configUSE_QUEUE_SETS == 1 )\n\t/*\n\t * Checks to see if a queue is a member of a queue set, and if so, notifies\n\t * the queue set that the queue contains data.\n\t */\n\tstatic BaseType_t prvNotifyQueueSetContainer( const Queue_t * const pxQueue ) PRIVILEGED_FUNCTION;\n#endif\n\n/*\n * Called after a Queue_t structure has been allocated either statically or\n * dynamically to fill in the structure's members.\n */\nstatic void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue ) PRIVILEGED_FUNCTION;\n\n/*\n * Mutexes are a special type of queue.  When a mutex is created, first the\n * queue is created, then prvInitialiseMutex() is called to configure the queue\n * as a mutex.\n */\n#if( configUSE_MUTEXES == 1 )\n\tstatic void prvInitialiseMutex( Queue_t *pxNewQueue ) PRIVILEGED_FUNCTION;\n#endif\n\n#if( configUSE_MUTEXES == 1 )\n\t/*\n\t * If a task waiting for a mutex causes the mutex holder to inherit a\n\t * priority, but the waiting task times out, then the holder should\n\t * disinherit the priority - but only down to the highest priority of any\n\t * other tasks that are waiting for the same mutex.  This function returns\n\t * that priority.\n\t */\n\tstatic UBaseType_t prvGetDisinheritPriorityAfterTimeout( const Queue_t * const pxQueue ) PRIVILEGED_FUNCTION;\n#endif\n/*-----------------------------------------------------------*/\n\n/*\n * Macro to mark a queue as locked.  Locking a queue prevents an ISR from\n * accessing the queue event lists.\n */\n#define prvLockQueue( pxQueue )\t\t\t\t\t\t\t\t\\\n\ttaskENTER_CRITICAL();\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( ( pxQueue )->cRxLock == queueUNLOCKED )\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pxQueue )->cRxLock = queueLOCKED_UNMODIFIED;\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( ( pxQueue )->cTxLock == queueUNLOCKED )\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t( pxQueue )->cTxLock = queueLOCKED_UNMODIFIED;\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\ttaskEXIT_CRITICAL()\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue )\n{\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tpxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */\n\t\tpxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;\n\t\tpxQueue->pcWriteTo = pxQueue->pcHead;\n\t\tpxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - 1U ) * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */\n\t\tpxQueue->cRxLock = queueUNLOCKED;\n\t\tpxQueue->cTxLock = queueUNLOCKED;\n\n\t\tif( xNewQueue == pdFALSE )\n\t\t{\n\t\t\t/* If there are tasks blocked waiting to read from the queue, then\n\t\t\tthe tasks will remain blocked as after this function exits the queue\n\t\t\twill still be empty.  If there are tasks blocked waiting to write to\n\t\t\tthe queue, then one should be unblocked as after this function exits\n\t\t\tit will be possible to write to it. */\n\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )\n\t\t\t{\n\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Ensure the event queues start in the correct state. */\n\t\t\tvListInitialise( &( pxQueue->xTasksWaitingToSend ) );\n\t\t\tvListInitialise( &( pxQueue->xTasksWaitingToReceive ) );\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\t/* A value is returned for calling semantic consistency with previous\n\tversions. */\n\treturn pdPASS;\n}\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n\tQueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType )\n\t{\n\tQueue_t *pxNewQueue;\n\n\t\tconfigASSERT( uxQueueLength > ( UBaseType_t ) 0 );\n\n\t\t/* The StaticQueue_t structure and the queue storage area must be\n\t\tsupplied. */\n\t\tconfigASSERT( pxStaticQueue != NULL );\n\n\t\t/* A queue storage area should be provided if the item size is not 0, and\n\t\tshould not be provided if the item size is 0. */\n\t\tconfigASSERT( !( ( pucQueueStorage != NULL ) && ( uxItemSize == 0 ) ) );\n\t\tconfigASSERT( !( ( pucQueueStorage == NULL ) && ( uxItemSize != 0 ) ) );\n\n\t\t#if( configASSERT_DEFINED == 1 )\n\t\t{\n\t\t\t/* Sanity check that the size of the structure used to declare a\n\t\t\tvariable of type StaticQueue_t or StaticSemaphore_t equals the size of\n\t\t\tthe real queue and semaphore structures. */\n\t\t\tvolatile size_t xSize = sizeof( StaticQueue_t );\n\t\t\tconfigASSERT( xSize == sizeof( Queue_t ) );\n\t\t\t( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */\n\t\t}\n\t\t#endif /* configASSERT_DEFINED */\n\n\t\t/* The address of a statically allocated queue was passed in, use it.\n\t\tThe address of a statically allocated storage area was also passed in\n\t\tbut is already set. */\n\t\tpxNewQueue = ( Queue_t * ) pxStaticQueue; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */\n\n\t\tif( pxNewQueue != NULL )\n\t\t{\n\t\t\t#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t\t\t{\n\t\t\t\t/* Queues can be allocated wither statically or dynamically, so\n\t\t\t\tnote this queue was allocated statically in case the queue is\n\t\t\t\tlater deleted. */\n\t\t\t\tpxNewQueue->ucStaticallyAllocated = pdTRUE;\n\t\t\t}\n\t\t\t#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n\n\t\t\tprvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue );\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceQUEUE_CREATE_FAILED( ucQueueType );\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn pxNewQueue;\n\t}\n\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n\tQueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType )\n\t{\n\tQueue_t *pxNewQueue;\n\tsize_t xQueueSizeInBytes;\n\tuint8_t *pucQueueStorage;\n\n\t\tconfigASSERT( uxQueueLength > ( UBaseType_t ) 0 );\n\n\t\t/* Allocate enough space to hold the maximum number of items that\n\t\tcan be in the queue at any time.  It is valid for uxItemSize to be\n\t\tzero in the case the queue is used as a semaphore. */\n\t\txQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\n\t\t/* Allocate the queue and storage area.  Justification for MISRA\n\t\tdeviation as follows:  pvPortMalloc() always ensures returned memory\n\t\tblocks are aligned per the requirements of the MCU stack.  In this case\n\t\tpvPortMalloc() must return a pointer that is guaranteed to meet the\n\t\talignment requirements of the Queue_t structure - which in this case\n\t\tis an int8_t *.  Therefore, whenever the stack alignment requirements\n\t\tare greater than or equal to the pointer to char requirements the cast\n\t\tis safe.  In other cases alignment requirements are not strict (one or\n\t\ttwo bytes). */\n\t\tpxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) + xQueueSizeInBytes ); /*lint !e9087 !e9079 see comment above. */\n\n\t\tif( pxNewQueue != NULL )\n\t\t{\n\t\t\t/* Jump past the queue structure to find the location of the queue\n\t\t\tstorage area. */\n\t\t\tpucQueueStorage = ( uint8_t * ) pxNewQueue;\n\t\t\tpucQueueStorage += sizeof( Queue_t ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */\n\n\t\t\t#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t\t\t{\n\t\t\t\t/* Queues can be created either statically or dynamically, so\n\t\t\t\tnote this task was created dynamically in case it is later\n\t\t\t\tdeleted. */\n\t\t\t\tpxNewQueue->ucStaticallyAllocated = pdFALSE;\n\t\t\t}\n\t\t\t#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n\t\t\tprvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue );\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceQUEUE_CREATE_FAILED( ucQueueType );\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn pxNewQueue;\n\t}\n\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\nstatic void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue )\n{\n\t/* Remove compiler warnings about unused parameters should\n\tconfigUSE_TRACE_FACILITY not be set to 1. */\n\t( void ) ucQueueType;\n\n\tif( uxItemSize == ( UBaseType_t ) 0 )\n\t{\n\t\t/* No RAM was allocated for the queue storage area, but PC head cannot\n\t\tbe set to NULL because NULL is used as a key to say the queue is used as\n\t\ta mutex.  Therefore just set pcHead to point to the queue as a benign\n\t\tvalue that is known to be within the memory map. */\n\t\tpxNewQueue->pcHead = ( int8_t * ) pxNewQueue;\n\t}\n\telse\n\t{\n\t\t/* Set the head to the start of the queue storage area. */\n\t\tpxNewQueue->pcHead = ( int8_t * ) pucQueueStorage;\n\t}\n\n\t/* Initialise the queue members as described where the queue type is\n\tdefined. */\n\tpxNewQueue->uxLength = uxQueueLength;\n\tpxNewQueue->uxItemSize = uxItemSize;\n\t( void ) xQueueGenericReset( pxNewQueue, pdTRUE );\n\n\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t{\n\t\tpxNewQueue->ucQueueType = ucQueueType;\n\t}\n\t#endif /* configUSE_TRACE_FACILITY */\n\n\t#if( configUSE_QUEUE_SETS == 1 )\n\t{\n\t\tpxNewQueue->pxQueueSetContainer = NULL;\n\t}\n\t#endif /* configUSE_QUEUE_SETS */\n\n\ttraceQUEUE_CREATE( pxNewQueue );\n}\n/*-----------------------------------------------------------*/\n\n#if( configUSE_MUTEXES == 1 )\n\n\tstatic void prvInitialiseMutex( Queue_t *pxNewQueue )\n\t{\n\t\tif( pxNewQueue != NULL )\n\t\t{\n\t\t\t/* The queue create function will set all the queue structure members\n\t\t\tcorrectly for a generic queue, but this function is creating a\n\t\t\tmutex.  Overwrite those members that need to be set differently -\n\t\t\tin particular the information required for priority inheritance. */\n\t\t\tpxNewQueue->u.xSemaphore.xMutexHolder = NULL;\n\t\t\tpxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX;\n\n\t\t\t/* In case this is a recursive mutex. */\n\t\t\tpxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0;\n\n\t\t\ttraceCREATE_MUTEX( pxNewQueue );\n\n\t\t\t/* Start with the semaphore in the expected state. */\n\t\t\t( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK );\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceCREATE_MUTEX_FAILED();\n\t\t}\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\n\tQueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType )\n\t{\n\tQueueHandle_t xNewQueue;\n\tconst UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0;\n\n\t\txNewQueue = xQueueGenericCreate( uxMutexLength, uxMutexSize, ucQueueType );\n\t\tprvInitialiseMutex( ( Queue_t * ) xNewQueue );\n\n\t\treturn xNewQueue;\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )\n\n\tQueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue )\n\t{\n\tQueueHandle_t xNewQueue;\n\tconst UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0;\n\n\t\t/* Prevent compiler warnings about unused parameters if\n\t\tconfigUSE_TRACE_FACILITY does not equal 1. */\n\t\t( void ) ucQueueType;\n\n\t\txNewQueue = xQueueGenericCreateStatic( uxMutexLength, uxMutexSize, NULL, pxStaticQueue, ucQueueType );\n\t\tprvInitialiseMutex( ( Queue_t * ) xNewQueue );\n\n\t\treturn xNewQueue;\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )\n\n\tTaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore )\n\t{\n\tTaskHandle_t pxReturn;\n\tQueue_t * const pxSemaphore = ( Queue_t * ) xSemaphore;\n\n\t\t/* This function is called by xSemaphoreGetMutexHolder(), and should not\n\t\tbe called directly.  Note:  This is a good way of determining if the\n\t\tcalling task is the mutex holder, but not a good way of determining the\n\t\tidentity of the mutex holder, as the holder may change between the\n\t\tfollowing critical section exiting and the function returning. */\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\tif( pxSemaphore->uxQueueType == queueQUEUE_IS_MUTEX )\n\t\t\t{\n\t\t\t\tpxReturn = pxSemaphore->u.xSemaphore.xMutexHolder;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpxReturn = NULL;\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn pxReturn;\n\t} /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */\n\n#endif\n/*-----------------------------------------------------------*/\n\n#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )\n\n\tTaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore )\n\t{\n\tTaskHandle_t pxReturn;\n\n\t\tconfigASSERT( xSemaphore );\n\n\t\t/* Mutexes cannot be used in interrupt service routines, so the mutex\n\t\tholder should not change in an ISR, and therefore a critical section is\n\t\tnot required here. */\n\t\tif( ( ( Queue_t * ) xSemaphore )->uxQueueType == queueQUEUE_IS_MUTEX )\n\t\t{\n\t\t\tpxReturn = ( ( Queue_t * ) xSemaphore )->u.xSemaphore.xMutexHolder;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpxReturn = NULL;\n\t\t}\n\n\t\treturn pxReturn;\n\t} /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */\n\n#endif\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_RECURSIVE_MUTEXES == 1 )\n\n\tBaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex )\n\t{\n\tBaseType_t xReturn;\n\tQueue_t * const pxMutex = ( Queue_t * ) xMutex;\n\n\t\tconfigASSERT( pxMutex );\n\n\t\t/* If this is the task that holds the mutex then xMutexHolder will not\n\t\tchange outside of this task.  If this task does not hold the mutex then\n\t\tpxMutexHolder can never coincidentally equal the tasks handle, and as\n\t\tthis is the only condition we are interested in it does not matter if\n\t\tpxMutexHolder is accessed simultaneously by another task.  Therefore no\n\t\tmutual exclusion is required to test the pxMutexHolder variable. */\n\t\tif( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() )\n\t\t{\n\t\t\ttraceGIVE_MUTEX_RECURSIVE( pxMutex );\n\n\t\t\t/* uxRecursiveCallCount cannot be zero if xMutexHolder is equal to\n\t\t\tthe task handle, therefore no underflow check is required.  Also,\n\t\t\tuxRecursiveCallCount is only modified by the mutex holder, and as\n\t\t\tthere can only be one, no mutual exclusion is required to modify the\n\t\t\tuxRecursiveCallCount member. */\n\t\t\t( pxMutex->u.xSemaphore.uxRecursiveCallCount )--;\n\n\t\t\t/* Has the recursive call count unwound to 0? */\n\t\t\tif( pxMutex->u.xSemaphore.uxRecursiveCallCount == ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\t/* Return the mutex.  This will automatically unblock any other\n\t\t\t\ttask that might be waiting to access the mutex. */\n\t\t\t\t( void ) xQueueGenericSend( pxMutex, NULL, queueMUTEX_GIVE_BLOCK_TIME, queueSEND_TO_BACK );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The mutex cannot be given because the calling task is not the\n\t\t\tholder. */\n\t\t\txReturn = pdFAIL;\n\n\t\t\ttraceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex );\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_RECURSIVE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_RECURSIVE_MUTEXES == 1 )\n\n\tBaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait )\n\t{\n\tBaseType_t xReturn;\n\tQueue_t * const pxMutex = ( Queue_t * ) xMutex;\n\n\t\tconfigASSERT( pxMutex );\n\n\t\t/* Comments regarding mutual exclusion as per those within\n\t\txQueueGiveMutexRecursive(). */\n\n\t\ttraceTAKE_MUTEX_RECURSIVE( pxMutex );\n\n\t\tif( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() )\n\t\t{\n\t\t\t( pxMutex->u.xSemaphore.uxRecursiveCallCount )++;\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = xQueueSemaphoreTake( pxMutex, xTicksToWait );\n\n\t\t\t/* pdPASS will only be returned if the mutex was successfully\n\t\t\tobtained.  The calling task may have entered the Blocked state\n\t\t\tbefore reaching here. */\n\t\t\tif( xReturn != pdFAIL )\n\t\t\t{\n\t\t\t\t( pxMutex->u.xSemaphore.uxRecursiveCallCount )++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttraceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex );\n\t\t\t}\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_RECURSIVE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )\n\n\tQueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue )\n\t{\n\tQueueHandle_t xHandle;\n\n\t\tconfigASSERT( uxMaxCount != 0 );\n\t\tconfigASSERT( uxInitialCount <= uxMaxCount );\n\n\t\txHandle = xQueueGenericCreateStatic( uxMaxCount, queueSEMAPHORE_QUEUE_ITEM_LENGTH, NULL, pxStaticQueue, queueQUEUE_TYPE_COUNTING_SEMAPHORE );\n\n\t\tif( xHandle != NULL )\n\t\t{\n\t\t\t( ( Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount;\n\n\t\t\ttraceCREATE_COUNTING_SEMAPHORE();\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceCREATE_COUNTING_SEMAPHORE_FAILED();\n\t\t}\n\n\t\treturn xHandle;\n\t}\n\n#endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */\n/*-----------------------------------------------------------*/\n\n#if( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\n\tQueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount )\n\t{\n\tQueueHandle_t xHandle;\n\n\t\tconfigASSERT( uxMaxCount != 0 );\n\t\tconfigASSERT( uxInitialCount <= uxMaxCount );\n\n\t\txHandle = xQueueGenericCreate( uxMaxCount, queueSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_COUNTING_SEMAPHORE );\n\n\t\tif( xHandle != NULL )\n\t\t{\n\t\t\t( ( Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount;\n\n\t\t\ttraceCREATE_COUNTING_SEMAPHORE();\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceCREATE_COUNTING_SEMAPHORE_FAILED();\n\t\t}\n\n\t\treturn xHandle;\n\t}\n\n#endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition )\n{\nBaseType_t xEntryTimeSet = pdFALSE, xYieldRequired;\nTimeOut_t xTimeOut;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\tconfigASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) );\n\tconfigASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) );\n\t#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n\t{\n\t\tconfigASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );\n\t}\n\t#endif\n\n\n\t/*lint -save -e904 This function relaxes the coding standard somewhat to\n\tallow return statements within the function itself.  This is done in the\n\tinterest of execution time efficiency. */\n\tfor( ;; )\n\t{\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* Is there room on the queue now?  The running task must be the\n\t\t\thighest priority task wanting to access the queue.  If the head item\n\t\t\tin the queue is to be overwritten then it does not matter if the\n\t\t\tqueue is full. */\n\t\t\tif( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) )\n\t\t\t{\n\t\t\t\ttraceQUEUE_SEND( pxQueue );\n\n\t\t\t\t#if ( configUSE_QUEUE_SETS == 1 )\n\t\t\t\t{\n\t\t\t\tconst UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting;\n\n\t\t\t\t\txYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );\n\n\t\t\t\t\tif( pxQueue->pxQueueSetContainer != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( ( xCopyPosition == queueOVERWRITE ) && ( uxPreviousMessagesWaiting != ( UBaseType_t ) 0 ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Do not notify the queue set as an existing item\n\t\t\t\t\t\t\twas overwritten in the queue so the number of items\n\t\t\t\t\t\t\tin the queue has not changed. */\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The queue is a member of a queue set, and posting\n\t\t\t\t\t\t\tto the queue set caused a higher priority task to\n\t\t\t\t\t\t\tunblock. A context switch is required. */\n\t\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If there was a task waiting for data to arrive on the\n\t\t\t\t\t\tqueue then unblock it now. */\n\t\t\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t/* The unblocked task has a priority higher than\n\t\t\t\t\t\t\t\tour own so yield immediately.  Yes it is ok to\n\t\t\t\t\t\t\t\tdo this from within the critical section - the\n\t\t\t\t\t\t\t\tkernel takes care of that. */\n\t\t\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if( xYieldRequired != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* This path is a special case that will only get\n\t\t\t\t\t\t\texecuted if the task was holding multiple mutexes\n\t\t\t\t\t\t\tand the mutexes were given back in an order that is\n\t\t\t\t\t\t\tdifferent to that in which they were taken. */\n\t\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#else /* configUSE_QUEUE_SETS */\n\t\t\t\t{\n\t\t\t\t\txYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );\n\n\t\t\t\t\t/* If there was a task waiting for data to arrive on the\n\t\t\t\t\tqueue then unblock it now. */\n\t\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The unblocked task has a priority higher than\n\t\t\t\t\t\t\tour own so yield immediately.  Yes it is ok to do\n\t\t\t\t\t\t\tthis from within the critical section - the kernel\n\t\t\t\t\t\t\ttakes care of that. */\n\t\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if( xYieldRequired != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* This path is a special case that will only get\n\t\t\t\t\t\texecuted if the task was holding multiple mutexes and\n\t\t\t\t\t\tthe mutexes were given back in an order that is\n\t\t\t\t\t\tdifferent to that in which they were taken. */\n\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif /* configUSE_QUEUE_SETS */\n\n\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\treturn pdPASS;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( xTicksToWait == ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\t/* The queue was full and no block time is specified (or\n\t\t\t\t\tthe block time has expired) so leave now. */\n\t\t\t\t\ttaskEXIT_CRITICAL();\n\n\t\t\t\t\t/* Return to the original privilege level before exiting\n\t\t\t\t\tthe function. */\n\t\t\t\t\ttraceQUEUE_SEND_FAILED( pxQueue );\n\t\t\t\t\treturn errQUEUE_FULL;\n\t\t\t\t}\n\t\t\t\telse if( xEntryTimeSet == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* The queue was full and a block time was specified so\n\t\t\t\t\tconfigure the timeout structure. */\n\t\t\t\t\tvTaskInternalSetTimeOutState( &xTimeOut );\n\t\t\t\t\txEntryTimeSet = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* Entry time was already set. */\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\t/* Interrupts and other tasks can send to and receive from the queue\n\t\tnow the critical section has been exited. */\n\n\t\tvTaskSuspendAll();\n\t\tprvLockQueue( pxQueue );\n\n\t\t/* Update the timeout state to see if it has expired yet. */\n\t\tif( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\n\t\t{\n\t\t\tif( prvIsQueueFull( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceBLOCKING_ON_QUEUE_SEND( pxQueue );\n\t\t\t\tvTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait );\n\n\t\t\t\t/* Unlocking the queue means queue events can effect the\n\t\t\t\tevent list.  It is possible that interrupts occurring now\n\t\t\t\tremove this task from the event list again - but as the\n\t\t\t\tscheduler is suspended the task will go onto the pending\n\t\t\t\tready last instead of the actual ready list. */\n\t\t\t\tprvUnlockQueue( pxQueue );\n\n\t\t\t\t/* Resuming the scheduler will move tasks from the pending\n\t\t\t\tready list into the ready list - so it is feasible that this\n\t\t\t\ttask is already in a ready list before it yields - in which\n\t\t\t\tcase the yield will not cause a context switch unless there\n\t\t\t\tis also a higher priority task in the pending ready list. */\n\t\t\t\tif( xTaskResumeAll() == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Try again. */\n\t\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The timeout has expired. */\n\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t( void ) xTaskResumeAll();\n\n\t\t\ttraceQUEUE_SEND_FAILED( pxQueue );\n\t\t\treturn errQUEUE_FULL;\n\t\t}\n\t} /*lint -restore */\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition )\n{\nBaseType_t xReturn;\nUBaseType_t uxSavedInterruptStatus;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\tconfigASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) );\n\tconfigASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) );\n\n\t/* RTOS ports that support interrupt nesting have the concept of a maximum\n\tsystem call (or maximum API call) interrupt priority.  Interrupts that are\n\tabove the maximum system call priority are kept permanently enabled, even\n\twhen the RTOS kernel is in a critical section, but cannot make any calls to\n\tFreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\n\tthen portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\tfailure if a FreeRTOS API function is called from an interrupt that has been\n\tassigned a priority above the configured maximum system call priority.\n\tOnly FreeRTOS functions that end in FromISR can be called from interrupts\n\tthat have been assigned a priority at or (logically) below the maximum\n\tsystem call\tinterrupt priority.  FreeRTOS maintains a separate interrupt\n\tsafe API to ensure interrupt entry is as fast and as simple as possible.\n\tMore information (albeit Cortex-M specific) is provided on the following\n\tlink: http://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\t/* Similar to xQueueGenericSend, except without blocking if there is no room\n\tin the queue.  Also don't directly wake a task that was blocked on a queue\n\tread, instead return a flag to say whether a context switch is required or\n\tnot (i.e. has a task with a higher priority than us been woken by this\n\tpost). */\n\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\tif( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) )\n\t\t{\n\t\t\tconst int8_t cTxLock = pxQueue->cTxLock;\n\t\t\tconst UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting;\n\n\t\t\ttraceQUEUE_SEND_FROM_ISR( pxQueue );\n\n\t\t\t/* Semaphores use xQueueGiveFromISR(), so pxQueue will not be a\n\t\t\tsemaphore or mutex.  That means prvCopyDataToQueue() cannot result\n\t\t\tin a task disinheriting a priority and prvCopyDataToQueue() can be\n\t\t\tcalled here even though the disinherit function does not check if\n\t\t\tthe scheduler is suspended before accessing the ready lists. */\n\t\t\t( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );\n\n\t\t\t/* The event list is not altered if the queue is locked.  This will\n\t\t\tbe done when the queue is unlocked later. */\n\t\t\tif( cTxLock == queueUNLOCKED )\n\t\t\t{\n\t\t\t\t#if ( configUSE_QUEUE_SETS == 1 )\n\t\t\t\t{\n\t\t\t\t\tif( pxQueue->pxQueueSetContainer != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( ( xCopyPosition == queueOVERWRITE ) && ( uxPreviousMessagesWaiting != ( UBaseType_t ) 0 ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Do not notify the queue set as an existing item\n\t\t\t\t\t\t\twas overwritten in the queue so the number of items\n\t\t\t\t\t\t\tin the queue has not changed. */\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The queue is a member of a queue set, and posting\n\t\t\t\t\t\t\tto the queue set caused a higher priority task to\n\t\t\t\t\t\t\tunblock.  A context switch is required. */\n\t\t\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t/* The task waiting has a higher priority so\n\t\t\t\t\t\t\t\trecord that a context switch is required. */\n\t\t\t\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#else /* configUSE_QUEUE_SETS */\n\t\t\t\t{\n\t\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The task waiting has a higher priority so record that a\n\t\t\t\t\t\t\tcontext\tswitch is required. */\n\t\t\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Not used in this path. */\n\t\t\t\t\t( void ) uxPreviousMessagesWaiting;\n\t\t\t\t}\n\t\t\t\t#endif /* configUSE_QUEUE_SETS */\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Increment the lock count so the task that unlocks the queue\n\t\t\t\tknows that data was posted while it was locked. */\n\t\t\t\tpxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 );\n\t\t\t}\n\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceQUEUE_SEND_FROM_ISR_FAILED( pxQueue );\n\t\t\txReturn = errQUEUE_FULL;\n\t\t}\n\t}\n\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken )\n{\nBaseType_t xReturn;\nUBaseType_t uxSavedInterruptStatus;\nQueue_t * const pxQueue = xQueue;\n\n\t/* Similar to xQueueGenericSendFromISR() but used with semaphores where the\n\titem size is 0.  Don't directly wake a task that was blocked on a queue\n\tread, instead return a flag to say whether a context switch is required or\n\tnot (i.e. has a task with a higher priority than us been woken by this\n\tpost). */\n\n\tconfigASSERT( pxQueue );\n\n\t/* xQueueGenericSendFromISR() should be used instead of xQueueGiveFromISR()\n\tif the item size is not 0. */\n\tconfigASSERT( pxQueue->uxItemSize == 0 );\n\n\t/* Normally a mutex would not be given from an interrupt, especially if\n\tthere is a mutex holder, as priority inheritance makes no sense for an\n\tinterrupts, only tasks. */\n\tconfigASSERT( !( ( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) && ( pxQueue->u.xSemaphore.xMutexHolder != NULL ) ) );\n\n\t/* RTOS ports that support interrupt nesting have the concept of a maximum\n\tsystem call (or maximum API call) interrupt priority.  Interrupts that are\n\tabove the maximum system call priority are kept permanently enabled, even\n\twhen the RTOS kernel is in a critical section, but cannot make any calls to\n\tFreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\n\tthen portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\tfailure if a FreeRTOS API function is called from an interrupt that has been\n\tassigned a priority above the configured maximum system call priority.\n\tOnly FreeRTOS functions that end in FromISR can be called from interrupts\n\tthat have been assigned a priority at or (logically) below the maximum\n\tsystem call\tinterrupt priority.  FreeRTOS maintains a separate interrupt\n\tsafe API to ensure interrupt entry is as fast and as simple as possible.\n\tMore information (albeit Cortex-M specific) is provided on the following\n\tlink: http://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\tconst UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting;\n\n\t\t/* When the queue is used to implement a semaphore no data is ever\n\t\tmoved through the queue but it is still valid to see if the queue 'has\n\t\tspace'. */\n\t\tif( uxMessagesWaiting < pxQueue->uxLength )\n\t\t{\n\t\t\tconst int8_t cTxLock = pxQueue->cTxLock;\n\n\t\t\ttraceQUEUE_SEND_FROM_ISR( pxQueue );\n\n\t\t\t/* A task can only have an inherited priority if it is a mutex\n\t\t\tholder - and if there is a mutex holder then the mutex cannot be\n\t\t\tgiven from an ISR.  As this is the ISR version of the function it\n\t\t\tcan be assumed there is no mutex holder and no need to determine if\n\t\t\tpriority disinheritance is needed.  Simply increase the count of\n\t\t\tmessages (semaphores) available. */\n\t\t\tpxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1;\n\n\t\t\t/* The event list is not altered if the queue is locked.  This will\n\t\t\tbe done when the queue is unlocked later. */\n\t\t\tif( cTxLock == queueUNLOCKED )\n\t\t\t{\n\t\t\t\t#if ( configUSE_QUEUE_SETS == 1 )\n\t\t\t\t{\n\t\t\t\t\tif( pxQueue->pxQueueSetContainer != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The semaphore is a member of a queue set, and\n\t\t\t\t\t\t\tposting\tto the queue set caused a higher priority\n\t\t\t\t\t\t\ttask to\tunblock.  A context switch is required. */\n\t\t\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t/* The task waiting has a higher priority so\n\t\t\t\t\t\t\t\trecord that a context switch is required. */\n\t\t\t\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#else /* configUSE_QUEUE_SETS */\n\t\t\t\t{\n\t\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The task waiting has a higher priority so record that a\n\t\t\t\t\t\t\tcontext\tswitch is required. */\n\t\t\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif /* configUSE_QUEUE_SETS */\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Increment the lock count so the task that unlocks the queue\n\t\t\t\tknows that data was posted while it was locked. */\n\t\t\t\tpxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 );\n\t\t\t}\n\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceQUEUE_SEND_FROM_ISR_FAILED( pxQueue );\n\t\t\txReturn = errQUEUE_FULL;\n\t\t}\n\t}\n\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait )\n{\nBaseType_t xEntryTimeSet = pdFALSE;\nTimeOut_t xTimeOut;\nQueue_t * const pxQueue = xQueue;\n\n\t/* Check the pointer is not NULL. */\n\tconfigASSERT( ( pxQueue ) );\n\n\t/* The buffer into which data is received can only be NULL if the data size\n\tis zero (so no data is copied into the buffer. */\n\tconfigASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) );\n\n\t/* Cannot block if the scheduler is suspended. */\n\t#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n\t{\n\t\tconfigASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );\n\t}\n\t#endif\n\n\n\t/*lint -save -e904  This function relaxes the coding standard somewhat to\n\tallow return statements within the function itself.  This is done in the\n\tinterest of execution time efficiency. */\n\tfor( ;; )\n\t{\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\tconst UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting;\n\n\t\t\t/* Is there data in the queue now?  To be running the calling task\n\t\t\tmust be the highest priority task wanting to access the queue. */\n\t\t\tif( uxMessagesWaiting > ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\t/* Data available, remove one item. */\n\t\t\t\tprvCopyDataFromQueue( pxQueue, pvBuffer );\n\t\t\t\ttraceQUEUE_RECEIVE( pxQueue );\n\t\t\t\tpxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1;\n\n\t\t\t\t/* There is now space in the queue, were any tasks waiting to\n\t\t\t\tpost to the queue?  If so, unblock the highest priority waiting\n\t\t\t\ttask. */\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\treturn pdPASS;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( xTicksToWait == ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\t/* The queue was empty and no block time is specified (or\n\t\t\t\t\tthe block time has expired) so leave now. */\n\t\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\t\ttraceQUEUE_RECEIVE_FAILED( pxQueue );\n\t\t\t\t\treturn errQUEUE_EMPTY;\n\t\t\t\t}\n\t\t\t\telse if( xEntryTimeSet == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* The queue was empty and a block time was specified so\n\t\t\t\t\tconfigure the timeout structure. */\n\t\t\t\t\tvTaskInternalSetTimeOutState( &xTimeOut );\n\t\t\t\t\txEntryTimeSet = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* Entry time was already set. */\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\t/* Interrupts and other tasks can send to and receive from the queue\n\t\tnow the critical section has been exited. */\n\n\t\tvTaskSuspendAll();\n\t\tprvLockQueue( pxQueue );\n\n\t\t/* Update the timeout state to see if it has expired yet. */\n\t\tif( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\n\t\t{\n\t\t\t/* The timeout has not expired.  If the queue is still empty place\n\t\t\tthe task on the list of tasks waiting to receive from the queue. */\n\t\t\tif( prvIsQueueEmpty( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceBLOCKING_ON_QUEUE_RECEIVE( pxQueue );\n\t\t\t\tvTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );\n\t\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t\tif( xTaskResumeAll() == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* The queue contains data again.  Loop back to try and read the\n\t\t\t\tdata. */\n\t\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Timed out.  If there is no data in the queue exit, otherwise loop\n\t\t\tback and attempt to read the data. */\n\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t( void ) xTaskResumeAll();\n\n\t\t\tif( prvIsQueueEmpty( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceQUEUE_RECEIVE_FAILED( pxQueue );\n\t\t\t\treturn errQUEUE_EMPTY;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t} /*lint -restore */\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait )\n{\nBaseType_t xEntryTimeSet = pdFALSE;\nTimeOut_t xTimeOut;\nQueue_t * const pxQueue = xQueue;\n\n#if( configUSE_MUTEXES == 1 )\n\tBaseType_t xInheritanceOccurred = pdFALSE;\n#endif\n\n\t/* Check the queue pointer is not NULL. */\n\tconfigASSERT( ( pxQueue ) );\n\n\t/* Check this really is a semaphore, in which case the item size will be\n\t0. */\n\tconfigASSERT( pxQueue->uxItemSize == 0 );\n\n\t/* Cannot block if the scheduler is suspended. */\n\t#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n\t{\n\t\tconfigASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );\n\t}\n\t#endif\n\n\n\t/*lint -save -e904 This function relaxes the coding standard somewhat to allow return\n\tstatements within the function itself.  This is done in the interest\n\tof execution time efficiency. */\n\tfor( ;; )\n\t{\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* Semaphores are queues with an item size of 0, and where the\n\t\t\tnumber of messages in the queue is the semaphore's count value. */\n\t\t\tconst UBaseType_t uxSemaphoreCount = pxQueue->uxMessagesWaiting;\n\n\t\t\t/* Is there data in the queue now?  To be running the calling task\n\t\t\tmust be the highest priority task wanting to access the queue. */\n\t\t\tif( uxSemaphoreCount > ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\ttraceQUEUE_RECEIVE( pxQueue );\n\n\t\t\t\t/* Semaphores are queues with a data size of zero and where the\n\t\t\t\tmessages waiting is the semaphore's count.  Reduce the count. */\n\t\t\t\tpxQueue->uxMessagesWaiting = uxSemaphoreCount - ( UBaseType_t ) 1;\n\n\t\t\t\t#if ( configUSE_MUTEXES == 1 )\n\t\t\t\t{\n\t\t\t\t\tif( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Record the information required to implement\n\t\t\t\t\t\tpriority inheritance should it become necessary. */\n\t\t\t\t\t\tpxQueue->u.xSemaphore.xMutexHolder = pvTaskIncrementMutexHeldCount();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif /* configUSE_MUTEXES */\n\n\t\t\t\t/* Check to see if other tasks are blocked waiting to give the\n\t\t\t\tsemaphore, and if so, unblock the highest priority such task. */\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\treturn pdPASS;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( xTicksToWait == ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\t/* For inheritance to have occurred there must have been an\n\t\t\t\t\tinitial timeout, and an adjusted timeout cannot become 0, as\n\t\t\t\t\tif it were 0 the function would have exited. */\n\t\t\t\t\t#if( configUSE_MUTEXES == 1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tconfigASSERT( xInheritanceOccurred == pdFALSE );\n\t\t\t\t\t}\n\t\t\t\t\t#endif /* configUSE_MUTEXES */\n\n\t\t\t\t\t/* The semaphore count was 0 and no block time is specified\n\t\t\t\t\t(or the block time has expired) so exit now. */\n\t\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\t\ttraceQUEUE_RECEIVE_FAILED( pxQueue );\n\t\t\t\t\treturn errQUEUE_EMPTY;\n\t\t\t\t}\n\t\t\t\telse if( xEntryTimeSet == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* The semaphore count was 0 and a block time was specified\n\t\t\t\t\tso configure the timeout structure ready to block. */\n\t\t\t\t\tvTaskInternalSetTimeOutState( &xTimeOut );\n\t\t\t\t\txEntryTimeSet = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* Entry time was already set. */\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\t/* Interrupts and other tasks can give to and take from the semaphore\n\t\tnow the critical section has been exited. */\n\n\t\tvTaskSuspendAll();\n\t\tprvLockQueue( pxQueue );\n\n\t\t/* Update the timeout state to see if it has expired yet. */\n\t\tif( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\n\t\t{\n\t\t\t/* A block time is specified and not expired.  If the semaphore\n\t\t\tcount is 0 then enter the Blocked state to wait for a semaphore to\n\t\t\tbecome available.  As semaphores are implemented with queues the\n\t\t\tqueue being empty is equivalent to the semaphore count being 0. */\n\t\t\tif( prvIsQueueEmpty( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceBLOCKING_ON_QUEUE_RECEIVE( pxQueue );\n\n\t\t\t\t#if ( configUSE_MUTEXES == 1 )\n\t\t\t\t{\n\t\t\t\t\tif( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\n\t\t\t\t\t{\n\t\t\t\t\t\ttaskENTER_CRITICAL();\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txInheritanceOccurred = xTaskPriorityInherit( pxQueue->u.xSemaphore.xMutexHolder );\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\n\t\t\t\tvTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );\n\t\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t\tif( xTaskResumeAll() == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* There was no timeout and the semaphore count was not 0, so\n\t\t\t\tattempt to take the semaphore again. */\n\t\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Timed out. */\n\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t( void ) xTaskResumeAll();\n\n\t\t\t/* If the semaphore count is 0 exit now as the timeout has\n\t\t\texpired.  Otherwise return to attempt to take the semaphore that is\n\t\t\tknown to be available.  As semaphores are implemented by queues the\n\t\t\tqueue being empty is equivalent to the semaphore count being 0. */\n\t\t\tif( prvIsQueueEmpty( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\t#if ( configUSE_MUTEXES == 1 )\n\t\t\t\t{\n\t\t\t\t\t/* xInheritanceOccurred could only have be set if\n\t\t\t\t\tpxQueue->uxQueueType == queueQUEUE_IS_MUTEX so no need to\n\t\t\t\t\ttest the mutex type again to check it is actually a mutex. */\n\t\t\t\t\tif( xInheritanceOccurred != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\ttaskENTER_CRITICAL();\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUBaseType_t uxHighestWaitingPriority;\n\n\t\t\t\t\t\t\t/* This task blocking on the mutex caused another\n\t\t\t\t\t\t\ttask to inherit this task's priority.  Now this task\n\t\t\t\t\t\t\thas timed out the priority should be disinherited\n\t\t\t\t\t\t\tagain, but only as low as the next highest priority\n\t\t\t\t\t\t\ttask that is waiting for the same mutex. */\n\t\t\t\t\t\t\tuxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout( pxQueue );\n\t\t\t\t\t\t\tvTaskPriorityDisinheritAfterTimeout( pxQueue->u.xSemaphore.xMutexHolder, uxHighestWaitingPriority );\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif /* configUSE_MUTEXES */\n\n\t\t\t\ttraceQUEUE_RECEIVE_FAILED( pxQueue );\n\t\t\t\treturn errQUEUE_EMPTY;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t} /*lint -restore */\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait )\n{\nBaseType_t xEntryTimeSet = pdFALSE;\nTimeOut_t xTimeOut;\nint8_t *pcOriginalReadPosition;\nQueue_t * const pxQueue = xQueue;\n\n\t/* Check the pointer is not NULL. */\n\tconfigASSERT( ( pxQueue ) );\n\n\t/* The buffer into which data is received can only be NULL if the data size\n\tis zero (so no data is copied into the buffer. */\n\tconfigASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) );\n\n\t/* Cannot block if the scheduler is suspended. */\n\t#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n\t{\n\t\tconfigASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );\n\t}\n\t#endif\n\n\n\t/*lint -save -e904  This function relaxes the coding standard somewhat to\n\tallow return statements within the function itself.  This is done in the\n\tinterest of execution time efficiency. */\n\tfor( ;; )\n\t{\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\tconst UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting;\n\n\t\t\t/* Is there data in the queue now?  To be running the calling task\n\t\t\tmust be the highest priority task wanting to access the queue. */\n\t\t\tif( uxMessagesWaiting > ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\t/* Remember the read position so it can be reset after the data\n\t\t\t\tis read from the queue as this function is only peeking the\n\t\t\t\tdata, not removing it. */\n\t\t\t\tpcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom;\n\n\t\t\t\tprvCopyDataFromQueue( pxQueue, pvBuffer );\n\t\t\t\ttraceQUEUE_PEEK( pxQueue );\n\n\t\t\t\t/* The data is not being removed, so reset the read pointer. */\n\t\t\t\tpxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition;\n\n\t\t\t\t/* The data is being left in the queue, so see if there are\n\t\t\t\tany other tasks waiting for the data. */\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The task waiting has a higher priority than this task. */\n\t\t\t\t\t\tqueueYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\treturn pdPASS;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( xTicksToWait == ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\t/* The queue was empty and no block time is specified (or\n\t\t\t\t\tthe block time has expired) so leave now. */\n\t\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\t\ttraceQUEUE_PEEK_FAILED( pxQueue );\n\t\t\t\t\treturn errQUEUE_EMPTY;\n\t\t\t\t}\n\t\t\t\telse if( xEntryTimeSet == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* The queue was empty and a block time was specified so\n\t\t\t\t\tconfigure the timeout structure ready to enter the blocked\n\t\t\t\t\tstate. */\n\t\t\t\t\tvTaskInternalSetTimeOutState( &xTimeOut );\n\t\t\t\t\txEntryTimeSet = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* Entry time was already set. */\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\t/* Interrupts and other tasks can send to and receive from the queue\n\t\tnow the critical section has been exited. */\n\n\t\tvTaskSuspendAll();\n\t\tprvLockQueue( pxQueue );\n\n\t\t/* Update the timeout state to see if it has expired yet. */\n\t\tif( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\n\t\t{\n\t\t\t/* Timeout has not expired yet, check to see if there is data in the\n\t\t\tqueue now, and if not enter the Blocked state to wait for data. */\n\t\t\tif( prvIsQueueEmpty( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceBLOCKING_ON_QUEUE_PEEK( pxQueue );\n\t\t\t\tvTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );\n\t\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t\tif( xTaskResumeAll() == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* There is data in the queue now, so don't enter the blocked\n\t\t\t\tstate, instead return to try and obtain the data. */\n\t\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The timeout has expired.  If there is still no data in the queue\n\t\t\texit, otherwise go back and try to read the data again. */\n\t\t\tprvUnlockQueue( pxQueue );\n\t\t\t( void ) xTaskResumeAll();\n\n\t\t\tif( prvIsQueueEmpty( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceQUEUE_PEEK_FAILED( pxQueue );\n\t\t\t\treturn errQUEUE_EMPTY;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t} /*lint -restore */\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken )\n{\nBaseType_t xReturn;\nUBaseType_t uxSavedInterruptStatus;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\tconfigASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) );\n\n\t/* RTOS ports that support interrupt nesting have the concept of a maximum\n\tsystem call (or maximum API call) interrupt priority.  Interrupts that are\n\tabove the maximum system call priority are kept permanently enabled, even\n\twhen the RTOS kernel is in a critical section, but cannot make any calls to\n\tFreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\n\tthen portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\tfailure if a FreeRTOS API function is called from an interrupt that has been\n\tassigned a priority above the configured maximum system call priority.\n\tOnly FreeRTOS functions that end in FromISR can be called from interrupts\n\tthat have been assigned a priority at or (logically) below the maximum\n\tsystem call\tinterrupt priority.  FreeRTOS maintains a separate interrupt\n\tsafe API to ensure interrupt entry is as fast and as simple as possible.\n\tMore information (albeit Cortex-M specific) is provided on the following\n\tlink: http://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\tconst UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting;\n\n\t\t/* Cannot block in an ISR, so check there is data available. */\n\t\tif( uxMessagesWaiting > ( UBaseType_t ) 0 )\n\t\t{\n\t\t\tconst int8_t cRxLock = pxQueue->cRxLock;\n\n\t\t\ttraceQUEUE_RECEIVE_FROM_ISR( pxQueue );\n\n\t\t\tprvCopyDataFromQueue( pxQueue, pvBuffer );\n\t\t\tpxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1;\n\n\t\t\t/* If the queue is locked the event list will not be modified.\n\t\t\tInstead update the lock count so the task that unlocks the queue\n\t\t\twill know that an ISR has removed data while the queue was\n\t\t\tlocked. */\n\t\t\tif( cRxLock == queueUNLOCKED )\n\t\t\t{\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The task waiting has a higher priority than us so\n\t\t\t\t\t\tforce a context switch. */\n\t\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Increment the lock count so the task that unlocks the queue\n\t\t\t\tknows that data was removed while it was locked. */\n\t\t\t\tpxQueue->cRxLock = ( int8_t ) ( cRxLock + 1 );\n\t\t\t}\n\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFAIL;\n\t\t\ttraceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue );\n\t\t}\n\t}\n\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueuePeekFromISR( QueueHandle_t xQueue,  void * const pvBuffer )\n{\nBaseType_t xReturn;\nUBaseType_t uxSavedInterruptStatus;\nint8_t *pcOriginalReadPosition;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\tconfigASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) );\n\tconfigASSERT( pxQueue->uxItemSize != 0 ); /* Can't peek a semaphore. */\n\n\t/* RTOS ports that support interrupt nesting have the concept of a maximum\n\tsystem call (or maximum API call) interrupt priority.  Interrupts that are\n\tabove the maximum system call priority are kept permanently enabled, even\n\twhen the RTOS kernel is in a critical section, but cannot make any calls to\n\tFreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\n\tthen portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\tfailure if a FreeRTOS API function is called from an interrupt that has been\n\tassigned a priority above the configured maximum system call priority.\n\tOnly FreeRTOS functions that end in FromISR can be called from interrupts\n\tthat have been assigned a priority at or (logically) below the maximum\n\tsystem call\tinterrupt priority.  FreeRTOS maintains a separate interrupt\n\tsafe API to ensure interrupt entry is as fast and as simple as possible.\n\tMore information (albeit Cortex-M specific) is provided on the following\n\tlink: http://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\t/* Cannot block in an ISR, so check there is data available. */\n\t\tif( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 )\n\t\t{\n\t\t\ttraceQUEUE_PEEK_FROM_ISR( pxQueue );\n\n\t\t\t/* Remember the read position so it can be reset as nothing is\n\t\t\tactually being removed from the queue. */\n\t\t\tpcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom;\n\t\t\tprvCopyDataFromQueue( pxQueue, pvBuffer );\n\t\t\tpxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition;\n\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFAIL;\n\t\t\ttraceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue );\n\t\t}\n\t}\n\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nUBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue )\n{\nUBaseType_t uxReturn;\n\n\tconfigASSERT( xQueue );\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tuxReturn = ( ( Queue_t * ) xQueue )->uxMessagesWaiting;\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn uxReturn;\n} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */\n/*-----------------------------------------------------------*/\n\nUBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue )\n{\nUBaseType_t uxReturn;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tuxReturn = pxQueue->uxLength - pxQueue->uxMessagesWaiting;\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn uxReturn;\n} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */\n/*-----------------------------------------------------------*/\n\nUBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue )\n{\nUBaseType_t uxReturn;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\tuxReturn = pxQueue->uxMessagesWaiting;\n\n\treturn uxReturn;\n} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */\n/*-----------------------------------------------------------*/\n\nvoid vQueueDelete( QueueHandle_t xQueue )\n{\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\ttraceQUEUE_DELETE( pxQueue );\n\n\t#if ( configQUEUE_REGISTRY_SIZE > 0 )\n\t{\n\t\tvQueueUnregisterQueue( pxQueue );\n\t}\n\t#endif\n\n\t#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) )\n\t{\n\t\t/* The queue can only have been allocated dynamically - free it\n\t\tagain. */\n\t\tvPortFree( pxQueue );\n\t}\n\t#elif( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )\n\t{\n\t\t/* The queue could have been allocated statically or dynamically, so\n\t\tcheck before attempting to free the memory. */\n\t\tif( pxQueue->ucStaticallyAllocated == ( uint8_t ) pdFALSE )\n\t\t{\n\t\t\tvPortFree( pxQueue );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\t#else\n\t{\n\t\t/* The queue must have been statically allocated, so is not going to be\n\t\tdeleted.  Avoid compiler warnings about the unused parameter. */\n\t\t( void ) pxQueue;\n\t}\n\t#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n}\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tUBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue )\n\t{\n\t\treturn ( ( Queue_t * ) xQueue )->uxQueueNumber;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tvoid vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber )\n\t{\n\t\t( ( Queue_t * ) xQueue )->uxQueueNumber = uxQueueNumber;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tuint8_t ucQueueGetQueueType( QueueHandle_t xQueue )\n\t{\n\t\treturn ( ( Queue_t * ) xQueue )->ucQueueType;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_MUTEXES == 1 )\n\n\tstatic UBaseType_t prvGetDisinheritPriorityAfterTimeout( const Queue_t * const pxQueue )\n\t{\n\tUBaseType_t uxHighestPriorityOfWaitingTasks;\n\n\t\t/* If a task waiting for a mutex causes the mutex holder to inherit a\n\t\tpriority, but the waiting task times out, then the holder should\n\t\tdisinherit the priority - but only down to the highest priority of any\n\t\tother tasks that are waiting for the same mutex.  For this purpose,\n\t\treturn the priority of the highest priority task that is waiting for the\n\t\tmutex. */\n\t\tif( listCURRENT_LIST_LENGTH( &( pxQueue->xTasksWaitingToReceive ) ) > 0U )\n\t\t{\n\t\t\tuxHighestPriorityOfWaitingTasks = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) listGET_ITEM_VALUE_OF_HEAD_ENTRY( &( pxQueue->xTasksWaitingToReceive ) );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tuxHighestPriorityOfWaitingTasks = tskIDLE_PRIORITY;\n\t\t}\n\n\t\treturn uxHighestPriorityOfWaitingTasks;\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\nstatic BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition )\n{\nBaseType_t xReturn = pdFALSE;\nUBaseType_t uxMessagesWaiting;\n\n\t/* This function is called from a critical section. */\n\n\tuxMessagesWaiting = pxQueue->uxMessagesWaiting;\n\n\tif( pxQueue->uxItemSize == ( UBaseType_t ) 0 )\n\t{\n\t\t#if ( configUSE_MUTEXES == 1 )\n\t\t{\n\t\t\tif( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\n\t\t\t{\n\t\t\t\t/* The mutex is no longer being held. */\n\t\t\t\txReturn = xTaskPriorityDisinherit( pxQueue->u.xSemaphore.xMutexHolder );\n\t\t\t\tpxQueue->u.xSemaphore.xMutexHolder = NULL;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* configUSE_MUTEXES */\n\t}\n\telse if( xPosition == queueSEND_TO_BACK )\n\t{\n\t\t( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0.  Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */\n\t\tpxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */\n\t\tif( pxQueue->pcWriteTo >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */\n\t\t{\n\t\t\tpxQueue->pcWriteTo = pxQueue->pcHead;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\t( void ) memcpy( ( void * ) pxQueue->u.xQueue.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e9087 !e418 MISRA exception as the casts are only redundant for some ports.  Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes.  Assert checks null pointer only used when length is 0. */\n\t\tpxQueue->u.xQueue.pcReadFrom -= pxQueue->uxItemSize;\n\t\tif( pxQueue->u.xQueue.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */\n\t\t{\n\t\t\tpxQueue->u.xQueue.pcReadFrom = ( pxQueue->u.xQueue.pcTail - pxQueue->uxItemSize );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\tif( xPosition == queueOVERWRITE )\n\t\t{\n\t\t\tif( uxMessagesWaiting > ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\t/* An item is not being added but overwritten, so subtract\n\t\t\t\tone from the recorded number of items in the queue so when\n\t\t\t\tone is added again below the number of recorded items remains\n\t\t\t\tcorrect. */\n\t\t\t\t--uxMessagesWaiting;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n\tpxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1;\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer )\n{\n\tif( pxQueue->uxItemSize != ( UBaseType_t ) 0 )\n\t{\n\t\tpxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */\n\t\tif( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */\n\t\t{\n\t\t\tpxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t\t( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports.  Also previous logic ensures a null pointer can only be passed to memcpy() when the count is 0.  Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvUnlockQueue( Queue_t * const pxQueue )\n{\n\t/* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. */\n\n\t/* The lock counts contains the number of extra data items placed or\n\tremoved from the queue while the queue was locked.  When a queue is\n\tlocked items can be added or removed, but the event lists cannot be\n\tupdated. */\n\ttaskENTER_CRITICAL();\n\t{\n\t\tint8_t cTxLock = pxQueue->cTxLock;\n\n\t\t/* See if data was added to the queue while it was locked. */\n\t\twhile( cTxLock > queueLOCKED_UNMODIFIED )\n\t\t{\n\t\t\t/* Data was posted while the queue was locked.  Are any tasks\n\t\t\tblocked waiting for data to become available? */\n\t\t\t#if ( configUSE_QUEUE_SETS == 1 )\n\t\t\t{\n\t\t\t\tif( pxQueue->pxQueueSetContainer != NULL )\n\t\t\t\t{\n\t\t\t\t\tif( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The queue is a member of a queue set, and posting to\n\t\t\t\t\t\tthe queue set caused a higher priority task to unblock.\n\t\t\t\t\t\tA context switch is required. */\n\t\t\t\t\t\tvTaskMissedYield();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* Tasks that are removed from the event list will get\n\t\t\t\t\tadded to the pending ready list as the scheduler is still\n\t\t\t\t\tsuspended. */\n\t\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The task waiting has a higher priority so record that a\n\t\t\t\t\t\t\tcontext\tswitch is required. */\n\t\t\t\t\t\t\tvTaskMissedYield();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t#else /* configUSE_QUEUE_SETS */\n\t\t\t{\n\t\t\t\t/* Tasks that are removed from the event list will get added to\n\t\t\t\tthe pending ready list as the scheduler is still suspended. */\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The task waiting has a higher priority so record that\n\t\t\t\t\t\ta context switch is required. */\n\t\t\t\t\t\tvTaskMissedYield();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t#endif /* configUSE_QUEUE_SETS */\n\n\t\t\t--cTxLock;\n\t\t}\n\n\t\tpxQueue->cTxLock = queueUNLOCKED;\n\t}\n\ttaskEXIT_CRITICAL();\n\n\t/* Do the same for the Rx lock. */\n\ttaskENTER_CRITICAL();\n\t{\n\t\tint8_t cRxLock = pxQueue->cRxLock;\n\n\t\twhile( cRxLock > queueLOCKED_UNMODIFIED )\n\t\t{\n\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )\n\t\t\t{\n\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tvTaskMissedYield();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\t--cRxLock;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tpxQueue->cRxLock = queueUNLOCKED;\n\t}\n\ttaskEXIT_CRITICAL();\n}\n/*-----------------------------------------------------------*/\n\nstatic BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue )\n{\nBaseType_t xReturn;\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tif( pxQueue->uxMessagesWaiting == ( UBaseType_t )  0 )\n\t\t{\n\t\t\txReturn = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFALSE;\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue )\n{\nBaseType_t xReturn;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\tif( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 )\n\t{\n\t\txReturn = pdTRUE;\n\t}\n\telse\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\n\treturn xReturn;\n} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */\n/*-----------------------------------------------------------*/\n\nstatic BaseType_t prvIsQueueFull( const Queue_t *pxQueue )\n{\nBaseType_t xReturn;\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tif( pxQueue->uxMessagesWaiting == pxQueue->uxLength )\n\t\t{\n\t\t\txReturn = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFALSE;\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue )\n{\nBaseType_t xReturn;\nQueue_t * const pxQueue = xQueue;\n\n\tconfigASSERT( pxQueue );\n\tif( pxQueue->uxMessagesWaiting == pxQueue->uxLength )\n\t{\n\t\txReturn = pdTRUE;\n\t}\n\telse\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\n\treturn xReturn;\n} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_CO_ROUTINES == 1 )\n\n\tBaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait )\n\t{\n\tBaseType_t xReturn;\n\tQueue_t * const pxQueue = xQueue;\n\n\t\t/* If the queue is already full we may have to block.  A critical section\n\t\tis required to prevent an interrupt removing something from the queue\n\t\tbetween the check to see if the queue is full and blocking on the queue. */\n\t\tportDISABLE_INTERRUPTS();\n\t\t{\n\t\t\tif( prvIsQueueFull( pxQueue ) != pdFALSE )\n\t\t\t{\n\t\t\t\t/* The queue is full - do we want to block or just leave without\n\t\t\t\tposting? */\n\t\t\t\tif( xTicksToWait > ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\t/* As this is called from a coroutine we cannot block directly, but\n\t\t\t\t\treturn indicating that we need to block. */\n\t\t\t\t\tvCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToSend ) );\n\t\t\t\t\tportENABLE_INTERRUPTS();\n\t\t\t\t\treturn errQUEUE_BLOCKED;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tportENABLE_INTERRUPTS();\n\t\t\t\t\treturn errQUEUE_FULL;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tportENABLE_INTERRUPTS();\n\n\t\tportDISABLE_INTERRUPTS();\n\t\t{\n\t\t\tif( pxQueue->uxMessagesWaiting < pxQueue->uxLength )\n\t\t\t{\n\t\t\t\t/* There is room in the queue, copy the data into the queue. */\n\t\t\t\tprvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK );\n\t\t\t\txReturn = pdPASS;\n\n\t\t\t\t/* Were any co-routines waiting for data to become available? */\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* In this instance the co-routine could be placed directly\n\t\t\t\t\tinto the ready list as we are within a critical section.\n\t\t\t\t\tInstead the same pending ready list mechanism is used as if\n\t\t\t\t\tthe event were caused from within an interrupt. */\n\t\t\t\t\tif( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The co-routine waiting has a higher priority so record\n\t\t\t\t\t\tthat a yield might be appropriate. */\n\t\t\t\t\t\txReturn = errQUEUE_YIELD;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\txReturn = errQUEUE_FULL;\n\t\t\t}\n\t\t}\n\t\tportENABLE_INTERRUPTS();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_CO_ROUTINES */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_CO_ROUTINES == 1 )\n\n\tBaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait )\n\t{\n\tBaseType_t xReturn;\n\tQueue_t * const pxQueue = xQueue;\n\n\t\t/* If the queue is already empty we may have to block.  A critical section\n\t\tis required to prevent an interrupt adding something to the queue\n\t\tbetween the check to see if the queue is empty and blocking on the queue. */\n\t\tportDISABLE_INTERRUPTS();\n\t\t{\n\t\t\tif( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\t/* There are no messages in the queue, do we want to block or just\n\t\t\t\tleave with nothing? */\n\t\t\t\tif( xTicksToWait > ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\t/* As this is a co-routine we cannot block directly, but return\n\t\t\t\t\tindicating that we need to block. */\n\t\t\t\t\tvCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToReceive ) );\n\t\t\t\t\tportENABLE_INTERRUPTS();\n\t\t\t\t\treturn errQUEUE_BLOCKED;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tportENABLE_INTERRUPTS();\n\t\t\t\t\treturn errQUEUE_FULL;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\tportENABLE_INTERRUPTS();\n\n\t\tportDISABLE_INTERRUPTS();\n\t\t{\n\t\t\tif( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\t/* Data is available from the queue. */\n\t\t\t\tpxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize;\n\t\t\t\tif( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail )\n\t\t\t\t{\n\t\t\t\t\tpxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t\t--( pxQueue->uxMessagesWaiting );\n\t\t\t\t( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( unsigned ) pxQueue->uxItemSize );\n\n\t\t\t\txReturn = pdPASS;\n\n\t\t\t\t/* Were any co-routines waiting for space to become available? */\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* In this instance the co-routine could be placed directly\n\t\t\t\t\tinto the ready list as we are within a critical section.\n\t\t\t\t\tInstead the same pending ready list mechanism is used as if\n\t\t\t\t\tthe event were caused from within an interrupt. */\n\t\t\t\t\tif( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\txReturn = errQUEUE_YIELD;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\txReturn = pdFAIL;\n\t\t\t}\n\t\t}\n\t\tportENABLE_INTERRUPTS();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_CO_ROUTINES */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_CO_ROUTINES == 1 )\n\n\tBaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken )\n\t{\n\tQueue_t * const pxQueue = xQueue;\n\n\t\t/* Cannot block within an ISR so if there is no space on the queue then\n\t\texit without doing anything. */\n\t\tif( pxQueue->uxMessagesWaiting < pxQueue->uxLength )\n\t\t{\n\t\t\tprvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK );\n\n\t\t\t/* We only want to wake one co-routine per ISR, so check that a\n\t\t\tco-routine has not already been woken. */\n\t\t\tif( xCoRoutinePreviouslyWoken == pdFALSE )\n\t\t\t{\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn xCoRoutinePreviouslyWoken;\n\t}\n\n#endif /* configUSE_CO_ROUTINES */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_CO_ROUTINES == 1 )\n\n\tBaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxCoRoutineWoken )\n\t{\n\tBaseType_t xReturn;\n\tQueue_t * const pxQueue = xQueue;\n\n\t\t/* We cannot block from an ISR, so check there is data available. If\n\t\tnot then just leave without doing anything. */\n\t\tif( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 )\n\t\t{\n\t\t\t/* Copy the data from the queue. */\n\t\t\tpxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize;\n\t\t\tif( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail )\n\t\t\t{\n\t\t\t\tpxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t\t--( pxQueue->uxMessagesWaiting );\n\t\t\t( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( unsigned ) pxQueue->uxItemSize );\n\n\t\t\tif( ( *pxCoRoutineWoken ) == pdFALSE )\n\t\t\t{\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t*pxCoRoutineWoken = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFAIL;\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_CO_ROUTINES */\n/*-----------------------------------------------------------*/\n\n#if ( configQUEUE_REGISTRY_SIZE > 0 )\n\n\tvoid vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcQueueName ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t{\n\tUBaseType_t ux;\n\n\t\t/* See if there is an empty space in the registry.  A NULL name denotes\n\t\ta free slot. */\n\t\tfor( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )\n\t\t{\n\t\t\tif( xQueueRegistry[ ux ].pcQueueName == NULL )\n\t\t\t{\n\t\t\t\t/* Store the information on this queue. */\n\t\t\t\txQueueRegistry[ ux ].pcQueueName = pcQueueName;\n\t\t\t\txQueueRegistry[ ux ].xHandle = xQueue;\n\n\t\t\t\ttraceQUEUE_REGISTRY_ADD( xQueue, pcQueueName );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t}\n\n#endif /* configQUEUE_REGISTRY_SIZE */\n/*-----------------------------------------------------------*/\n\n#if ( configQUEUE_REGISTRY_SIZE > 0 )\n\n\tconst char *pcQueueGetName( QueueHandle_t xQueue ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t{\n\tUBaseType_t ux;\n\tconst char *pcReturn = NULL; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\n\t\t/* Note there is nothing here to protect against another task adding or\n\t\tremoving entries from the registry while it is being searched. */\n\t\tfor( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )\n\t\t{\n\t\t\tif( xQueueRegistry[ ux ].xHandle == xQueue )\n\t\t\t{\n\t\t\t\tpcReturn = xQueueRegistry[ ux ].pcQueueName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\n\t\treturn pcReturn;\n\t} /*lint !e818 xQueue cannot be a pointer to const because it is a typedef. */\n\n#endif /* configQUEUE_REGISTRY_SIZE */\n/*-----------------------------------------------------------*/\n\n#if ( configQUEUE_REGISTRY_SIZE > 0 )\n\n\tvoid vQueueUnregisterQueue( QueueHandle_t xQueue )\n\t{\n\tUBaseType_t ux;\n\n\t\t/* See if the handle of the queue being unregistered in actually in the\n\t\tregistry. */\n\t\tfor( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )\n\t\t{\n\t\t\tif( xQueueRegistry[ ux ].xHandle == xQueue )\n\t\t\t{\n\t\t\t\t/* Set the name to NULL to show that this slot if free again. */\n\t\t\t\txQueueRegistry[ ux ].pcQueueName = NULL;\n\n\t\t\t\t/* Set the handle to NULL to ensure the same queue handle cannot\n\t\t\t\tappear in the registry twice if it is added, removed, then\n\t\t\t\tadded again. */\n\t\t\t\txQueueRegistry[ ux ].xHandle = ( QueueHandle_t ) 0;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\n\t} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */\n\n#endif /* configQUEUE_REGISTRY_SIZE */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TIMERS == 1 )\n\n\tvoid vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely )\n\t{\n\tQueue_t * const pxQueue = xQueue;\n\n\t\t/* This function should not be called by application code hence the\n\t\t'Restricted' in its name.  It is not part of the public API.  It is\n\t\tdesigned for use by kernel code, and has special calling requirements.\n\t\tIt can result in vListInsert() being called on a list that can only\n\t\tpossibly ever have one item in it, so the list will be fast, but even\n\t\tso it should be called with the scheduler locked and not from a critical\n\t\tsection. */\n\n\t\t/* Only do anything if there are no messages in the queue.  This function\n\t\twill not actually cause the task to block, just place it on a blocked\n\t\tlist.  It will not block until the scheduler is unlocked - at which\n\t\ttime a yield will be performed.  If an item is added to the queue while\n\t\tthe queue is locked, and the calling task blocks on the queue, then the\n\t\tcalling task will be immediately unblocked when the queue is unlocked. */\n\t\tprvLockQueue( pxQueue );\n\t\tif( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0U )\n\t\t{\n\t\t\t/* There is nothing in the queue, block for the specified period. */\n\t\t\tvTaskPlaceOnEventListRestricted( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait, xWaitIndefinitely );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t\tprvUnlockQueue( pxQueue );\n\t}\n\n#endif /* configUSE_TIMERS */\n/*-----------------------------------------------------------*/\n\n#if( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\n\tQueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength )\n\t{\n\tQueueSetHandle_t pxQueue;\n\n\t\tpxQueue = xQueueGenericCreate( uxEventQueueLength, ( UBaseType_t ) sizeof( Queue_t * ), queueQUEUE_TYPE_SET );\n\n\t\treturn pxQueue;\n\t}\n\n#endif /* configUSE_QUEUE_SETS */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_QUEUE_SETS == 1 )\n\n\tBaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet )\n\t{\n\tBaseType_t xReturn;\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\tif( ( ( Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer != NULL )\n\t\t\t{\n\t\t\t\t/* Cannot add a queue/semaphore to more than one queue set. */\n\t\t\t\txReturn = pdFAIL;\n\t\t\t}\n\t\t\telse if( ( ( Queue_t * ) xQueueOrSemaphore )->uxMessagesWaiting != ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\t/* Cannot add a queue/semaphore to a queue set if there are already\n\t\t\t\titems in the queue/semaphore. */\n\t\t\t\txReturn = pdFAIL;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t( ( Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer = xQueueSet;\n\t\t\t\txReturn = pdPASS;\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_QUEUE_SETS */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_QUEUE_SETS == 1 )\n\n\tBaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet )\n\t{\n\tBaseType_t xReturn;\n\tQueue_t * const pxQueueOrSemaphore = ( Queue_t * ) xQueueOrSemaphore;\n\n\t\tif( pxQueueOrSemaphore->pxQueueSetContainer != xQueueSet )\n\t\t{\n\t\t\t/* The queue was not a member of the set. */\n\t\t\txReturn = pdFAIL;\n\t\t}\n\t\telse if( pxQueueOrSemaphore->uxMessagesWaiting != ( UBaseType_t ) 0 )\n\t\t{\n\t\t\t/* It is dangerous to remove a queue from a set when the queue is\n\t\t\tnot empty because the queue set will still hold pending events for\n\t\t\tthe queue. */\n\t\t\txReturn = pdFAIL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\t/* The queue is no longer contained in the set. */\n\t\t\t\tpxQueueOrSemaphore->pxQueueSetContainer = NULL;\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\t\t\txReturn = pdPASS;\n\t\t}\n\n\t\treturn xReturn;\n\t} /*lint !e818 xQueueSet could not be declared as pointing to const as it is a typedef. */\n\n#endif /* configUSE_QUEUE_SETS */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_QUEUE_SETS == 1 )\n\n\tQueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, TickType_t const xTicksToWait )\n\t{\n\tQueueSetMemberHandle_t xReturn = NULL;\n\n\t\t( void ) xQueueReceive( ( QueueHandle_t ) xQueueSet, &xReturn, xTicksToWait ); /*lint !e961 Casting from one typedef to another is not redundant. */\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_QUEUE_SETS */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_QUEUE_SETS == 1 )\n\n\tQueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet )\n\t{\n\tQueueSetMemberHandle_t xReturn = NULL;\n\n\t\t( void ) xQueueReceiveFromISR( ( QueueHandle_t ) xQueueSet, &xReturn, NULL ); /*lint !e961 Casting from one typedef to another is not redundant. */\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_QUEUE_SETS */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_QUEUE_SETS == 1 )\n\n\tstatic BaseType_t prvNotifyQueueSetContainer( const Queue_t * const pxQueue )\n\t{\n\tQueue_t *pxQueueSetContainer = pxQueue->pxQueueSetContainer;\n\tBaseType_t xReturn = pdFALSE;\n\n\t\t/* This function must be called form a critical section. */\n\n\t\tconfigASSERT( pxQueueSetContainer );\n\t\tconfigASSERT( pxQueueSetContainer->uxMessagesWaiting < pxQueueSetContainer->uxLength );\n\n\t\tif( pxQueueSetContainer->uxMessagesWaiting < pxQueueSetContainer->uxLength )\n\t\t{\n\t\t\tconst int8_t cTxLock = pxQueueSetContainer->cTxLock;\n\n\t\t\ttraceQUEUE_SEND( pxQueueSetContainer );\n\n\t\t\t/* The data copied is the handle of the queue that contains data. */\n\t\t\txReturn = prvCopyDataToQueue( pxQueueSetContainer, &pxQueue, queueSEND_TO_BACK );\n\n\t\t\tif( cTxLock == queueUNLOCKED )\n\t\t\t{\n\t\t\t\tif( listLIST_IS_EMPTY( &( pxQueueSetContainer->xTasksWaitingToReceive ) ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( xTaskRemoveFromEventList( &( pxQueueSetContainer->xTasksWaitingToReceive ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The task waiting has a higher priority. */\n\t\t\t\t\t\txReturn = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpxQueueSetContainer->cTxLock = ( int8_t ) ( cTxLock + 1 );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_QUEUE_SETS */\n\n\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/* Standard includes. */\n#include <stdint.h>\n#include <string.h>\n\n/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\nall the API functions to use the MPU wrappers.  That should only be done when\ntask.h is included from an application file. */\n#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n/* FreeRTOS includes. */\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"stream_buffer.h\"\n\n#if( configUSE_TASK_NOTIFICATIONS != 1 )\n\t#error configUSE_TASK_NOTIFICATIONS must be set to 1 to build stream_buffer.c\n#endif\n\n/* Lint e961, e9021 and e750 are suppressed as a MISRA exception justified\nbecause the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined\nfor the header files above, but not in this file, in order to generate the\ncorrect privileged Vs unprivileged linkage and placement. */\n#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */\n\n/* If the user has not provided application specific Rx notification macros,\nor #defined the notification macros away, them provide default implementations\nthat uses task notifications. */\n/*lint -save -e9026 Function like macros allowed and needed here so they can be overidden. */\n#ifndef sbRECEIVE_COMPLETED\n\t#define sbRECEIVE_COMPLETED( pxStreamBuffer )\t\t\t\t\t\t\t\t\t\t\\\n\t\tvTaskSuspendAll();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tif( ( pxStreamBuffer )->xTaskWaitingToSend != NULL )\t\t\t\t\t\t\\\n\t\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToSend,\t\t\t\\\n\t\t\t\t\t\t\t\t\t  ( uint32_t ) 0,\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t  eNoAction );\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t( pxStreamBuffer )->xTaskWaitingToSend = NULL;\t\t\t\t\t\t\t\\\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t( void ) xTaskResumeAll();\n#endif /* sbRECEIVE_COMPLETED */\n\n#ifndef sbRECEIVE_COMPLETED_FROM_ISR\n\t#define sbRECEIVE_COMPLETED_FROM_ISR( pxStreamBuffer,\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t  pxHigherPriorityTaskWoken )\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tUBaseType_t uxSavedInterruptStatus;\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tuxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR();\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tif( ( pxStreamBuffer )->xTaskWaitingToSend != NULL )\t\t\t\t\t\t\\\n\t\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToSend,\t\\\n\t\t\t\t\t\t\t\t\t\t\t ( uint32_t ) 0,\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t eNoAction,\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t pxHigherPriorityTaskWoken );\t\t\t\t\\\n\t\t\t\t( pxStreamBuffer )->xTaskWaitingToSend = NULL;\t\t\t\t\t\t\t\\\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\t\t\t\t\t\\\n\t}\n#endif /* sbRECEIVE_COMPLETED_FROM_ISR */\n\n/* If the user has not provided an application specific Tx notification macro,\nor #defined the notification macro away, them provide a default implementation\nthat uses task notifications. */\n#ifndef sbSEND_COMPLETED\n\t#define sbSEND_COMPLETED( pxStreamBuffer )\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tvTaskSuspendAll();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tif( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL )\t\t\t\t\t\t\\\n\t\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToReceive,\t\t\\\n\t\t\t\t\t\t\t\t\t  ( uint32_t ) 0,\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t  eNoAction );\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t( pxStreamBuffer )->xTaskWaitingToReceive = NULL;\t\t\t\t\t\t\\\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t( void ) xTaskResumeAll();\n#endif /* sbSEND_COMPLETED */\n\n#ifndef sbSEND_COMPLETE_FROM_ISR\n\t#define sbSEND_COMPLETE_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken )\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tUBaseType_t uxSavedInterruptStatus;\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tuxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR();\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tif( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL )\t\t\t\t\t\t\\\n\t\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToReceive,\t\\\n\t\t\t\t\t\t\t\t\t\t\t ( uint32_t ) 0,\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t eNoAction,\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t pxHigherPriorityTaskWoken );\t\t\t\t\\\n\t\t\t\t( pxStreamBuffer )->xTaskWaitingToReceive = NULL;\t\t\t\t\t\t\\\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\t\t\t\t\t\\\n\t}\n#endif /* sbSEND_COMPLETE_FROM_ISR */\n/*lint -restore (9026) */\n\n/* The number of bytes used to hold the length of a message in the buffer. */\n#define sbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( configMESSAGE_BUFFER_LENGTH_TYPE ) )\n\n/* Bits stored in the ucFlags field of the stream buffer. */\n#define sbFLAGS_IS_MESSAGE_BUFFER\t\t( ( uint8_t ) 1 ) /* Set if the stream buffer was created as a message buffer, in which case it holds discrete messages rather than a stream. */\n#define sbFLAGS_IS_STATICALLY_ALLOCATED ( ( uint8_t ) 2 ) /* Set if the stream buffer was created using statically allocated memory. */\n\n/*-----------------------------------------------------------*/\n\n/* Structure that hold state information on the buffer. */\ntypedef struct StreamBufferDef_t /*lint !e9058 Style convention uses tag. */\n{\n\tvolatile size_t xTail;\t\t\t\t/* Index to the next item to read within the buffer. */\n\tvolatile size_t xHead;\t\t\t\t/* Index to the next item to write within the buffer. */\n\tsize_t xLength;\t\t\t\t\t\t/* The length of the buffer pointed to by pucBuffer. */\n\tsize_t xTriggerLevelBytes;\t\t\t/* The number of bytes that must be in the stream buffer before a task that is waiting for data is unblocked. */\n\tvolatile TaskHandle_t xTaskWaitingToReceive; /* Holds the handle of a task waiting for data, or NULL if no tasks are waiting. */\n\tvolatile TaskHandle_t xTaskWaitingToSend;\t/* Holds the handle of a task waiting to send data to a message buffer that is full. */\n\tuint8_t *pucBuffer;\t\t\t\t\t/* Points to the buffer itself - that is - the RAM that stores the data passed through the buffer. */\n\tuint8_t ucFlags;\n\n\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t uxStreamBufferNumber;\t\t/* Used for tracing purposes. */\n\t#endif\n} StreamBuffer_t;\n\n/*\n * The number of bytes available to be read from the buffer.\n */\nstatic size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer ) PRIVILEGED_FUNCTION;\n\n/*\n * Add xCount bytes from pucData into the pxStreamBuffer message buffer.\n * Returns the number of bytes written, which will either equal xCount in the\n * success case, or 0 if there was not enough space in the buffer (in which case\n * no data is written into the buffer).\n */\nstatic size_t prvWriteBytesToBuffer( StreamBuffer_t * const pxStreamBuffer, const uint8_t *pucData, size_t xCount ) PRIVILEGED_FUNCTION;\n\n/*\n * If the stream buffer is being used as a message buffer, then reads an entire\n * message out of the buffer.  If the stream buffer is being used as a stream\n * buffer then read as many bytes as possible from the buffer.\n * prvReadBytesFromBuffer() is called to actually extract the bytes from the\n * buffer's data storage area.\n */\nstatic size_t prvReadMessageFromBuffer( StreamBuffer_t *pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t\tvoid *pvRxData,\n\t\t\t\t\t\t\t\t\t\tsize_t xBufferLengthBytes,\n\t\t\t\t\t\t\t\t\t\tsize_t xBytesAvailable,\n\t\t\t\t\t\t\t\t\t\tsize_t xBytesToStoreMessageLength ) PRIVILEGED_FUNCTION;\n\n/*\n * If the stream buffer is being used as a message buffer, then writes an entire\n * message to the buffer.  If the stream buffer is being used as a stream\n * buffer then write as many bytes as possible to the buffer.\n * prvWriteBytestoBuffer() is called to actually send the bytes to the buffer's\n * data storage area.\n */\nstatic size_t prvWriteMessageToBuffer(  StreamBuffer_t * const pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t\tconst void * pvTxData,\n\t\t\t\t\t\t\t\t\t\tsize_t xDataLengthBytes,\n\t\t\t\t\t\t\t\t\t\tsize_t xSpace,\n\t\t\t\t\t\t\t\t\t\tsize_t xRequiredSpace ) PRIVILEGED_FUNCTION;\n\n/*\n * Read xMaxCount bytes from the pxStreamBuffer message buffer and write them\n * to pucData.\n */\nstatic size_t prvReadBytesFromBuffer( StreamBuffer_t *pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t  uint8_t *pucData,\n\t\t\t\t\t\t\t\t\t  size_t xMaxCount,\n\t\t\t\t\t\t\t\t\t  size_t xBytesAvailable ) PRIVILEGED_FUNCTION;\n\n/*\n * Called by both pxStreamBufferCreate() and pxStreamBufferCreateStatic() to\n * initialise the members of the newly created stream buffer structure.\n */\nstatic void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t\t  uint8_t * const pucBuffer,\n\t\t\t\t\t\t\t\t\t\t  size_t xBufferSizeBytes,\n\t\t\t\t\t\t\t\t\t\t  size_t xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t  uint8_t ucFlags ) PRIVILEGED_FUNCTION;\n\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n\tStreamBufferHandle_t xStreamBufferGenericCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer )\n\t{\n\tuint8_t *pucAllocatedMemory;\n\tuint8_t ucFlags;\n\n\t\t/* In case the stream buffer is going to be used as a message buffer\n\t\t(that is, it will hold discrete messages with a little meta data that\n\t\tsays how big the next message is) check the buffer will be large enough\n\t\tto hold at least one message. */\n\t\tif( xIsMessageBuffer == pdTRUE )\n\t\t{\n\t\t\t/* Is a message buffer but not statically allocated. */\n\t\t\tucFlags = sbFLAGS_IS_MESSAGE_BUFFER;\n\t\t\tconfigASSERT( xBufferSizeBytes > sbBYTES_TO_STORE_MESSAGE_LENGTH );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Not a message buffer and not statically allocated. */\n\t\t\tucFlags = 0;\n\t\t\tconfigASSERT( xBufferSizeBytes > 0 );\n\t\t}\n\t\tconfigASSERT( xTriggerLevelBytes <= xBufferSizeBytes );\n\n\t\t/* A trigger level of 0 would cause a waiting task to unblock even when\n\t\tthe buffer was empty. */\n\t\tif( xTriggerLevelBytes == ( size_t ) 0 )\n\t\t{\n\t\t\txTriggerLevelBytes = ( size_t ) 1;\n\t\t}\n\n\t\t/* A stream buffer requires a StreamBuffer_t structure and a buffer.\n\t\tBoth are allocated in a single call to pvPortMalloc().  The\n\t\tStreamBuffer_t structure is placed at the start of the allocated memory\n\t\tand the buffer follows immediately after.  The requested size is\n\t\tincremented so the free space is returned as the user would expect -\n\t\tthis is a quirk of the implementation that means otherwise the free\n\t\tspace would be reported as one byte smaller than would be logically\n\t\texpected. */\n\t\txBufferSizeBytes++;\n\t\tpucAllocatedMemory = ( uint8_t * ) pvPortMalloc( xBufferSizeBytes + sizeof( StreamBuffer_t ) ); /*lint !e9079 malloc() only returns void*. */\n\n\t\tif( pucAllocatedMemory != NULL )\n\t\t{\n\t\t\tprvInitialiseNewStreamBuffer( ( StreamBuffer_t * ) pucAllocatedMemory, /* Structure at the start of the allocated memory. */ /*lint !e9087 Safe cast as allocated memory is aligned. */ /*lint !e826 Area is not too small and alignment is guaranteed provided malloc() behaves as expected and returns aligned buffer. */\n\t\t\t\t\t\t\t\t\t\t   pucAllocatedMemory + sizeof( StreamBuffer_t ),  /* Storage area follows. */ /*lint !e9016 Indexing past structure valid for uint8_t pointer, also storage area has no alignment requirement. */\n\t\t\t\t\t\t\t\t\t\t   xBufferSizeBytes,\n\t\t\t\t\t\t\t\t\t\t   xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t   ucFlags );\n\n\t\t\ttraceSTREAM_BUFFER_CREATE( ( ( StreamBuffer_t * ) pucAllocatedMemory ), xIsMessageBuffer );\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttraceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer );\n\t\t}\n\n\t\treturn ( StreamBufferHandle_t ) pucAllocatedMemory; /*lint !e9087 !e826 Safe cast as allocated memory is aligned. */\n\t}\n\n#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n\tStreamBufferHandle_t xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t   size_t xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t   BaseType_t xIsMessageBuffer,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t   uint8_t * const pucStreamBufferStorageArea,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t   StaticStreamBuffer_t * const pxStaticStreamBuffer )\n\t{\n\tStreamBuffer_t * const pxStreamBuffer = ( StreamBuffer_t * ) pxStaticStreamBuffer; /*lint !e740 !e9087 Safe cast as StaticStreamBuffer_t is opaque Streambuffer_t. */\n\tStreamBufferHandle_t xReturn;\n\tuint8_t ucFlags;\n\n\t\tconfigASSERT( pucStreamBufferStorageArea );\n\t\tconfigASSERT( pxStaticStreamBuffer );\n\t\tconfigASSERT( xTriggerLevelBytes <= xBufferSizeBytes );\n\n\t\t/* A trigger level of 0 would cause a waiting task to unblock even when\n\t\tthe buffer was empty. */\n\t\tif( xTriggerLevelBytes == ( size_t ) 0 )\n\t\t{\n\t\t\txTriggerLevelBytes = ( size_t ) 1;\n\t\t}\n\n\t\tif( xIsMessageBuffer != pdFALSE )\n\t\t{\n\t\t\t/* Statically allocated message buffer. */\n\t\t\tucFlags = sbFLAGS_IS_MESSAGE_BUFFER | sbFLAGS_IS_STATICALLY_ALLOCATED;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Statically allocated stream buffer. */\n\t\t\tucFlags = sbFLAGS_IS_STATICALLY_ALLOCATED;\n\t\t}\n\n\t\t/* In case the stream buffer is going to be used as a message buffer\n\t\t(that is, it will hold discrete messages with a little meta data that\n\t\tsays how big the next message is) check the buffer will be large enough\n\t\tto hold at least one message. */\n\t\tconfigASSERT( xBufferSizeBytes > sbBYTES_TO_STORE_MESSAGE_LENGTH );\n\n\t\t#if( configASSERT_DEFINED == 1 )\n\t\t{\n\t\t\t/* Sanity check that the size of the structure used to declare a\n\t\t\tvariable of type StaticStreamBuffer_t equals the size of the real\n\t\t\tmessage buffer structure. */\n\t\t\tvolatile size_t xSize = sizeof( StaticStreamBuffer_t );\n\t\t\tconfigASSERT( xSize == sizeof( StreamBuffer_t ) );\n\t\t} /*lint !e529 xSize is referenced is configASSERT() is defined. */\n\t\t#endif /* configASSERT_DEFINED */\n\n\t\tif( ( pucStreamBufferStorageArea != NULL ) && ( pxStaticStreamBuffer != NULL ) )\n\t\t{\n\t\t\tprvInitialiseNewStreamBuffer( pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t\t  pucStreamBufferStorageArea,\n\t\t\t\t\t\t\t\t\t\t  xBufferSizeBytes,\n\t\t\t\t\t\t\t\t\t\t  xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t  ucFlags );\n\n\t\t\t/* Remember this was statically allocated in case it is ever deleted\n\t\t\tagain. */\n\t\t\tpxStreamBuffer->ucFlags |= sbFLAGS_IS_STATICALLY_ALLOCATED;\n\n\t\t\ttraceSTREAM_BUFFER_CREATE( pxStreamBuffer, xIsMessageBuffer );\n\n\t\t\txReturn = ( StreamBufferHandle_t ) pxStaticStreamBuffer; /*lint !e9087 Data hiding requires cast to opaque type. */\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = NULL;\n\t\t\ttraceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer );\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* ( configSUPPORT_STATIC_ALLOCATION == 1 ) */\n/*-----------------------------------------------------------*/\n\nvoid vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer )\n{\nStreamBuffer_t * pxStreamBuffer = xStreamBuffer;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\ttraceSTREAM_BUFFER_DELETE( xStreamBuffer );\n\n\tif( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) pdFALSE )\n\t{\n\t\t#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t\t{\n\t\t\t/* Both the structure and the buffer were allocated using a single call\n\t\t\tto pvPortMalloc(), hence only one call to vPortFree() is required. */\n\t\t\tvPortFree( ( void * ) pxStreamBuffer ); /*lint !e9087 Standard free() semantics require void *, plus pxStreamBuffer was allocated by pvPortMalloc(). */\n\t\t}\n\t\t#else\n\t\t{\n\t\t\t/* Should not be possible to get here, ucFlags must be corrupt.\n\t\t\tForce an assert. */\n\t\t\tconfigASSERT( xStreamBuffer == ( StreamBufferHandle_t ) ~0 );\n\t\t}\n\t\t#endif\n\t}\n\telse\n\t{\n\t\t/* The structure and buffer were not allocated dynamically and cannot be\n\t\tfreed - just scrub the structure so future use will assert. */\n\t\t( void ) memset( pxStreamBuffer, 0x00, sizeof( StreamBuffer_t ) );\n\t}\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nBaseType_t xReturn = pdFAIL;\n\n#if( configUSE_TRACE_FACILITY == 1 )\n\tUBaseType_t uxStreamBufferNumber;\n#endif\n\n\tconfigASSERT( pxStreamBuffer );\n\n\t#if( configUSE_TRACE_FACILITY == 1 )\n\t{\n\t\t/* Store the stream buffer number so it can be restored after the\n\t\treset. */\n\t\tuxStreamBufferNumber = pxStreamBuffer->uxStreamBufferNumber;\n\t}\n\t#endif\n\n\t/* Can only reset a message buffer if there are no tasks blocked on it. */\n\ttaskENTER_CRITICAL();\n\t{\n\t\tif( pxStreamBuffer->xTaskWaitingToReceive == NULL )\n\t\t{\n\t\t\tif( pxStreamBuffer->xTaskWaitingToSend == NULL )\n\t\t\t{\n\t\t\t\tprvInitialiseNewStreamBuffer( pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t\t\t  pxStreamBuffer->pucBuffer,\n\t\t\t\t\t\t\t\t\t\t\t  pxStreamBuffer->xLength,\n\t\t\t\t\t\t\t\t\t\t\t  pxStreamBuffer->xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t\t  pxStreamBuffer->ucFlags );\n\t\t\t\txReturn = pdPASS;\n\n\t\t\t\t#if( configUSE_TRACE_FACILITY == 1 )\n\t\t\t\t{\n\t\t\t\t\tpxStreamBuffer->uxStreamBufferNumber = uxStreamBufferNumber;\n\t\t\t\t}\n\t\t\t\t#endif\n\n\t\t\t\ttraceSTREAM_BUFFER_RESET( xStreamBuffer );\n\t\t\t}\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nBaseType_t xReturn;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* It is not valid for the trigger level to be 0. */\n\tif( xTriggerLevel == ( size_t ) 0 )\n\t{\n\t\txTriggerLevel = ( size_t ) 1;\n\t}\n\n\t/* The trigger level is the number of bytes that must be in the stream\n\tbuffer before a task that is waiting for data is unblocked. */\n\tif( xTriggerLevel <= pxStreamBuffer->xLength )\n\t{\n\t\tpxStreamBuffer->xTriggerLevelBytes = xTriggerLevel;\n\t\txReturn = pdPASS;\n\t}\n\telse\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer )\n{\nconst StreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nsize_t xSpace;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\txSpace = pxStreamBuffer->xLength + pxStreamBuffer->xTail;\n\txSpace -= pxStreamBuffer->xHead;\n\txSpace -= ( size_t ) 1;\n\n\tif( xSpace >= pxStreamBuffer->xLength )\n\t{\n\t\txSpace -= pxStreamBuffer->xLength;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\treturn xSpace;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer )\n{\nconst StreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nsize_t xReturn;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\txReturn = prvBytesInBuffer( pxStreamBuffer );\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t  const void *pvTxData,\n\t\t\t\t\t\t  size_t xDataLengthBytes,\n\t\t\t\t\t\t  TickType_t xTicksToWait )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nsize_t xReturn, xSpace = 0;\nsize_t xRequiredSpace = xDataLengthBytes;\nTimeOut_t xTimeOut;\n\n\tconfigASSERT( pvTxData );\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* This send function is used to write to both message buffers and stream\n\tbuffers.  If this is a message buffer then the space needed must be\n\tincreased by the amount of bytes needed to store the length of the\n\tmessage. */\n\tif( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 )\n\t{\n\t\txRequiredSpace += sbBYTES_TO_STORE_MESSAGE_LENGTH;\n\n\t\t/* Overflow? */\n\t\tconfigASSERT( xRequiredSpace > xDataLengthBytes );\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\tif( xTicksToWait != ( TickType_t ) 0 )\n\t{\n\t\tvTaskSetTimeOutState( &xTimeOut );\n\n\t\tdo\n\t\t{\n\t\t\t/* Wait until the required number of bytes are free in the message\n\t\t\tbuffer. */\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\txSpace = xStreamBufferSpacesAvailable( pxStreamBuffer );\n\n\t\t\t\tif( xSpace < xRequiredSpace )\n\t\t\t\t{\n\t\t\t\t\t/* Clear notification state as going to wait for space. */\n\t\t\t\t\t( void ) xTaskNotifyStateClear( NULL );\n\n\t\t\t\t\t/* Should only be one writer. */\n\t\t\t\t\tconfigASSERT( pxStreamBuffer->xTaskWaitingToSend == NULL );\n\t\t\t\t\tpxStreamBuffer->xTaskWaitingToSend = xTaskGetCurrentTaskHandle();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttaskEXIT_CRITICAL();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\n\t\t\ttraceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer );\n\t\t\t( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait );\n\t\t\tpxStreamBuffer->xTaskWaitingToSend = NULL;\n\n\t\t} while( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE );\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\tif( xSpace == ( size_t ) 0 )\n\t{\n\t\txSpace = xStreamBufferSpacesAvailable( pxStreamBuffer );\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\txReturn = prvWriteMessageToBuffer( pxStreamBuffer, pvTxData, xDataLengthBytes, xSpace, xRequiredSpace );\n\n\tif( xReturn > ( size_t ) 0 )\n\t{\n\t\ttraceSTREAM_BUFFER_SEND( xStreamBuffer, xReturn );\n\n\t\t/* Was a task waiting for the data? */\n\t\tif( prvBytesInBuffer( pxStreamBuffer ) >= pxStreamBuffer->xTriggerLevelBytes )\n\t\t{\n\t\t\tsbSEND_COMPLETED( pxStreamBuffer );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t\ttraceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer );\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t\t\t const void *pvTxData,\n\t\t\t\t\t\t\t\t size_t xDataLengthBytes,\n\t\t\t\t\t\t\t\t BaseType_t * const pxHigherPriorityTaskWoken )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nsize_t xReturn, xSpace;\nsize_t xRequiredSpace = xDataLengthBytes;\n\n\tconfigASSERT( pvTxData );\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* This send function is used to write to both message buffers and stream\n\tbuffers.  If this is a message buffer then the space needed must be\n\tincreased by the amount of bytes needed to store the length of the\n\tmessage. */\n\tif( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 )\n\t{\n\t\txRequiredSpace += sbBYTES_TO_STORE_MESSAGE_LENGTH;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\txSpace = xStreamBufferSpacesAvailable( pxStreamBuffer );\n\txReturn = prvWriteMessageToBuffer( pxStreamBuffer, pvTxData, xDataLengthBytes, xSpace, xRequiredSpace );\n\n\tif( xReturn > ( size_t ) 0 )\n\t{\n\t\t/* Was a task waiting for the data? */\n\t\tif( prvBytesInBuffer( pxStreamBuffer ) >= pxStreamBuffer->xTriggerLevelBytes )\n\t\t{\n\t\t\tsbSEND_COMPLETE_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\ttraceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xReturn );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nstatic size_t prvWriteMessageToBuffer( StreamBuffer_t * const pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t   const void * pvTxData,\n\t\t\t\t\t\t\t\t\t   size_t xDataLengthBytes,\n\t\t\t\t\t\t\t\t\t   size_t xSpace,\n\t\t\t\t\t\t\t\t\t   size_t xRequiredSpace )\n{\n\tBaseType_t xShouldWrite;\n\tsize_t xReturn;\n\n\tif( xSpace == ( size_t ) 0 )\n\t{\n\t\t/* Doesn't matter if this is a stream buffer or a message buffer, there\n\t\tis no space to write. */\n\t\txShouldWrite = pdFALSE;\n\t}\n\telse if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) == ( uint8_t ) 0 )\n\t{\n\t\t/* This is a stream buffer, as opposed to a message buffer, so writing a\n\t\tstream of bytes rather than discrete messages.  Write as many bytes as\n\t\tpossible. */\n\t\txShouldWrite = pdTRUE;\n\t\txDataLengthBytes = configMIN( xDataLengthBytes, xSpace );\n\t}\n\telse if( xSpace >= xRequiredSpace )\n\t{\n\t\t/* This is a message buffer, as opposed to a stream buffer, and there\n\t\tis enough space to write both the message length and the message itself\n\t\tinto the buffer.  Start by writing the length of the data, the data\n\t\titself will be written later in this function. */\n\t\txShouldWrite = pdTRUE;\n\t\t( void ) prvWriteBytesToBuffer( pxStreamBuffer, ( const uint8_t * ) &( xDataLengthBytes ), sbBYTES_TO_STORE_MESSAGE_LENGTH );\n\t}\n\telse\n\t{\n\t\t/* There is space available, but not enough space. */\n\t\txShouldWrite = pdFALSE;\n\t}\n\n\tif( xShouldWrite != pdFALSE )\n\t{\n\t\t/* Writes the data itself. */\n\t\txReturn = prvWriteBytesToBuffer( pxStreamBuffer, ( const uint8_t * ) pvTxData, xDataLengthBytes ); /*lint !e9079 Storage buffer is implemented as uint8_t for ease of sizing, alighment and access. */\n\t}\n\telse\n\t{\n\t\txReturn = 0;\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t\t void *pvRxData,\n\t\t\t\t\t\t\t size_t xBufferLengthBytes,\n\t\t\t\t\t\t\t TickType_t xTicksToWait )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nsize_t xReceivedLength = 0, xBytesAvailable, xBytesToStoreMessageLength;\n\n\tconfigASSERT( pvRxData );\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* This receive function is used by both message buffers, which store\n\tdiscrete messages, and stream buffers, which store a continuous stream of\n\tbytes.  Discrete messages include an additional\n\tsbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the\n\tmessage. */\n\tif( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 )\n\t{\n\t\txBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH;\n\t}\n\telse\n\t{\n\t\txBytesToStoreMessageLength = 0;\n\t}\n\n\tif( xTicksToWait != ( TickType_t ) 0 )\n\t{\n\t\t/* Checking if there is data and clearing the notification state must be\n\t\tperformed atomically. */\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\txBytesAvailable = prvBytesInBuffer( pxStreamBuffer );\n\n\t\t\t/* If this function was invoked by a message buffer read then\n\t\t\txBytesToStoreMessageLength holds the number of bytes used to hold\n\t\t\tthe length of the next discrete message.  If this function was\n\t\t\tinvoked by a stream buffer read then xBytesToStoreMessageLength will\n\t\t\tbe 0. */\n\t\t\tif( xBytesAvailable <= xBytesToStoreMessageLength )\n\t\t\t{\n\t\t\t\t/* Clear notification state as going to wait for data. */\n\t\t\t\t( void ) xTaskNotifyStateClear( NULL );\n\n\t\t\t\t/* Should only be one reader. */\n\t\t\t\tconfigASSERT( pxStreamBuffer->xTaskWaitingToReceive == NULL );\n\t\t\t\tpxStreamBuffer->xTaskWaitingToReceive = xTaskGetCurrentTaskHandle();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\tif( xBytesAvailable <= xBytesToStoreMessageLength )\n\t\t{\n\t\t\t/* Wait for data to be available. */\n\t\t\ttraceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer );\n\t\t\t( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait );\n\t\t\tpxStreamBuffer->xTaskWaitingToReceive = NULL;\n\n\t\t\t/* Recheck the data available after blocking. */\n\t\t\txBytesAvailable = prvBytesInBuffer( pxStreamBuffer );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\txBytesAvailable = prvBytesInBuffer( pxStreamBuffer );\n\t}\n\n\t/* Whether receiving a discrete message (where xBytesToStoreMessageLength\n\tholds the number of bytes used to store the message length) or a stream of\n\tbytes (where xBytesToStoreMessageLength is zero), the number of bytes\n\tavailable must be greater than xBytesToStoreMessageLength to be able to\n\tread bytes from the buffer. */\n\tif( xBytesAvailable > xBytesToStoreMessageLength )\n\t{\n\t\txReceivedLength = prvReadMessageFromBuffer( pxStreamBuffer, pvRxData, xBufferLengthBytes, xBytesAvailable, xBytesToStoreMessageLength );\n\n\t\t/* Was a task waiting for space in the buffer? */\n\t\tif( xReceivedLength != ( size_t ) 0 )\n\t\t{\n\t\t\ttraceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength );\n\t\t\tsbRECEIVE_COMPLETED( pxStreamBuffer );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\ttraceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer );\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\treturn xReceivedLength;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nsize_t xReturn, xBytesAvailable, xOriginalTail;\nconfigMESSAGE_BUFFER_LENGTH_TYPE xTempReturn;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* Ensure the stream buffer is being used as a message buffer. */\n\tif( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 )\n\t{\n\t\txBytesAvailable = prvBytesInBuffer( pxStreamBuffer );\n\t\tif( xBytesAvailable > sbBYTES_TO_STORE_MESSAGE_LENGTH )\n\t\t{\n\t\t\t/* The number of bytes available is greater than the number of bytes\n\t\t\trequired to hold the length of the next message, so another message\n\t\t\tis available.  Return its length without removing the length bytes\n\t\t\tfrom the buffer.  A copy of the tail is stored so the buffer can be\n\t\t\treturned to its prior state as the message is not actually being\n\t\t\tremoved from the buffer. */\n\t\t\txOriginalTail = pxStreamBuffer->xTail;\n\t\t\t( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempReturn, sbBYTES_TO_STORE_MESSAGE_LENGTH, xBytesAvailable );\n\t\t\txReturn = ( size_t ) xTempReturn;\n\t\t\tpxStreamBuffer->xTail = xOriginalTail;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The minimum amount of bytes in a message buffer is\n\t\t\t( sbBYTES_TO_STORE_MESSAGE_LENGTH + 1 ), so if xBytesAvailable is\n\t\t\tless than sbBYTES_TO_STORE_MESSAGE_LENGTH the only other valid\n\t\t\tvalue is 0. */\n\t\t\tconfigASSERT( xBytesAvailable == 0 );\n\t\t\txReturn = 0;\n\t\t}\n\t}\n\telse\n\t{\n\t\txReturn = 0;\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nsize_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,\n\t\t\t\t\t\t\t\t\tvoid *pvRxData,\n\t\t\t\t\t\t\t\t\tsize_t xBufferLengthBytes,\n\t\t\t\t\t\t\t\t\tBaseType_t * const pxHigherPriorityTaskWoken )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nsize_t xReceivedLength = 0, xBytesAvailable, xBytesToStoreMessageLength;\n\n\tconfigASSERT( pvRxData );\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* This receive function is used by both message buffers, which store\n\tdiscrete messages, and stream buffers, which store a continuous stream of\n\tbytes.  Discrete messages include an additional\n\tsbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the\n\tmessage. */\n\tif( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 )\n\t{\n\t\txBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH;\n\t}\n\telse\n\t{\n\t\txBytesToStoreMessageLength = 0;\n\t}\n\n\txBytesAvailable = prvBytesInBuffer( pxStreamBuffer );\n\n\t/* Whether receiving a discrete message (where xBytesToStoreMessageLength\n\tholds the number of bytes used to store the message length) or a stream of\n\tbytes (where xBytesToStoreMessageLength is zero), the number of bytes\n\tavailable must be greater than xBytesToStoreMessageLength to be able to\n\tread bytes from the buffer. */\n\tif( xBytesAvailable > xBytesToStoreMessageLength )\n\t{\n\t\txReceivedLength = prvReadMessageFromBuffer( pxStreamBuffer, pvRxData, xBufferLengthBytes, xBytesAvailable, xBytesToStoreMessageLength );\n\n\t\t/* Was a task waiting for space in the buffer? */\n\t\tif( xReceivedLength != ( size_t ) 0 )\n\t\t{\n\t\t\tsbRECEIVE_COMPLETED_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\ttraceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength );\n\n\treturn xReceivedLength;\n}\n/*-----------------------------------------------------------*/\n\nstatic size_t prvReadMessageFromBuffer( StreamBuffer_t *pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t\tvoid *pvRxData,\n\t\t\t\t\t\t\t\t\t\tsize_t xBufferLengthBytes,\n\t\t\t\t\t\t\t\t\t\tsize_t xBytesAvailable,\n\t\t\t\t\t\t\t\t\t\tsize_t xBytesToStoreMessageLength )\n{\nsize_t xOriginalTail, xReceivedLength, xNextMessageLength;\nconfigMESSAGE_BUFFER_LENGTH_TYPE xTempNextMessageLength;\n\n\tif( xBytesToStoreMessageLength != ( size_t ) 0 )\n\t{\n\t\t/* A discrete message is being received.  First receive the length\n\t\tof the message.  A copy of the tail is stored so the buffer can be\n\t\treturned to its prior state if the length of the message is too\n\t\tlarge for the provided buffer. */\n\t\txOriginalTail = pxStreamBuffer->xTail;\n\t\t( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempNextMessageLength, xBytesToStoreMessageLength, xBytesAvailable );\n\t\txNextMessageLength = ( size_t ) xTempNextMessageLength;\n\n\t\t/* Reduce the number of bytes available by the number of bytes just\n\t\tread out. */\n\t\txBytesAvailable -= xBytesToStoreMessageLength;\n\n\t\t/* Check there is enough space in the buffer provided by the\n\t\tuser. */\n\t\tif( xNextMessageLength > xBufferLengthBytes )\n\t\t{\n\t\t\t/* The user has provided insufficient space to read the message\n\t\t\tso return the buffer to its previous state (so the length of\n\t\t\tthe message is in the buffer again). */\n\t\t\tpxStreamBuffer->xTail = xOriginalTail;\n\t\t\txNextMessageLength = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* A stream of bytes is being received (as opposed to a discrete\n\t\tmessage), so read as many bytes as possible. */\n\t\txNextMessageLength = xBufferLengthBytes;\n\t}\n\n\t/* Read the actual data. */\n\txReceivedLength = prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) pvRxData, xNextMessageLength, xBytesAvailable ); /*lint !e9079 Data storage area is implemented as uint8_t array for ease of sizing, indexing and alignment. */\n\n\treturn xReceivedLength;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer )\n{\nconst StreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nBaseType_t xReturn;\nsize_t xTail;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* True if no bytes are available. */\n\txTail = pxStreamBuffer->xTail;\n\tif( pxStreamBuffer->xHead == xTail )\n\t{\n\t\txReturn = pdTRUE;\n\t}\n\telse\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer )\n{\nBaseType_t xReturn;\nsize_t xBytesToStoreMessageLength;\nconst StreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\t/* This generic version of the receive function is used by both message\n\tbuffers, which store discrete messages, and stream buffers, which store a\n\tcontinuous stream of bytes.  Discrete messages include an additional\n\tsbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the message. */\n\tif( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 )\n\t{\n\t\txBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH;\n\t}\n\telse\n\t{\n\t\txBytesToStoreMessageLength = 0;\n\t}\n\n\t/* True if the available space equals zero. */\n\tif( xStreamBufferSpacesAvailable( xStreamBuffer ) <= xBytesToStoreMessageLength )\n\t{\n\t\txReturn = pdTRUE;\n\t}\n\telse\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nBaseType_t xReturn;\nUBaseType_t uxSavedInterruptStatus;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\tuxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\tif( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL )\n\t\t{\n\t\t\t( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToReceive,\n\t\t\t\t\t\t\t\t\t\t ( uint32_t ) 0,\n\t\t\t\t\t\t\t\t\t\t eNoAction,\n\t\t\t\t\t\t\t\t\t\t pxHigherPriorityTaskWoken );\n\t\t\t( pxStreamBuffer )->xTaskWaitingToReceive = NULL;\n\t\t\txReturn = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFALSE;\n\t\t}\n\t}\n\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken )\n{\nStreamBuffer_t * const pxStreamBuffer = xStreamBuffer;\nBaseType_t xReturn;\nUBaseType_t uxSavedInterruptStatus;\n\n\tconfigASSERT( pxStreamBuffer );\n\n\tuxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\tif( ( pxStreamBuffer )->xTaskWaitingToSend != NULL )\n\t\t{\n\t\t\t( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToSend,\n\t\t\t\t\t\t\t\t\t\t ( uint32_t ) 0,\n\t\t\t\t\t\t\t\t\t\t eNoAction,\n\t\t\t\t\t\t\t\t\t\t pxHigherPriorityTaskWoken );\n\t\t\t( pxStreamBuffer )->xTaskWaitingToSend = NULL;\n\t\t\txReturn = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFALSE;\n\t\t}\n\t}\n\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nstatic size_t prvWriteBytesToBuffer( StreamBuffer_t * const pxStreamBuffer, const uint8_t *pucData, size_t xCount )\n{\nsize_t xNextHead, xFirstLength;\n\n\tconfigASSERT( xCount > ( size_t ) 0 );\n\n\txNextHead = pxStreamBuffer->xHead;\n\n\t/* Calculate the number of bytes that can be added in the first write -\n\twhich may be less than the total number of bytes that need to be added if\n\tthe buffer will wrap back to the beginning. */\n\txFirstLength = configMIN( pxStreamBuffer->xLength - xNextHead, xCount );\n\n\t/* Write as many bytes as can be written in the first write. */\n\tconfigASSERT( ( xNextHead + xFirstLength ) <= pxStreamBuffer->xLength );\n\t( void ) memcpy( ( void* ) ( &( pxStreamBuffer->pucBuffer[ xNextHead ] ) ), ( const void * ) pucData, xFirstLength ); /*lint !e9087 memcpy() requires void *. */\n\n\t/* If the number of bytes written was less than the number that could be\n\twritten in the first write... */\n\tif( xCount > xFirstLength )\n\t{\n\t\t/* ...then write the remaining bytes to the start of the buffer. */\n\t\tconfigASSERT( ( xCount - xFirstLength ) <= pxStreamBuffer->xLength );\n\t\t( void ) memcpy( ( void * ) pxStreamBuffer->pucBuffer, ( const void * ) &( pucData[ xFirstLength ] ), xCount - xFirstLength ); /*lint !e9087 memcpy() requires void *. */\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\txNextHead += xCount;\n\tif( xNextHead >= pxStreamBuffer->xLength )\n\t{\n\t\txNextHead -= pxStreamBuffer->xLength;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\tpxStreamBuffer->xHead = xNextHead;\n\n\treturn xCount;\n}\n/*-----------------------------------------------------------*/\n\nstatic size_t prvReadBytesFromBuffer( StreamBuffer_t *pxStreamBuffer, uint8_t *pucData, size_t xMaxCount, size_t xBytesAvailable )\n{\nsize_t xCount, xFirstLength, xNextTail;\n\n\t/* Use the minimum of the wanted bytes and the available bytes. */\n\txCount = configMIN( xBytesAvailable, xMaxCount );\n\n\tif( xCount > ( size_t ) 0 )\n\t{\n\t\txNextTail = pxStreamBuffer->xTail;\n\n\t\t/* Calculate the number of bytes that can be read - which may be\n\t\tless than the number wanted if the data wraps around to the start of\n\t\tthe buffer. */\n\t\txFirstLength = configMIN( pxStreamBuffer->xLength - xNextTail, xCount );\n\n\t\t/* Obtain the number of bytes it is possible to obtain in the first\n\t\tread.  Asserts check bounds of read and write. */\n\t\tconfigASSERT( xFirstLength <= xMaxCount );\n\t\tconfigASSERT( ( xNextTail + xFirstLength ) <= pxStreamBuffer->xLength );\n\t\t( void ) memcpy( ( void * ) pucData, ( const void * ) &( pxStreamBuffer->pucBuffer[ xNextTail ] ), xFirstLength ); /*lint !e9087 memcpy() requires void *. */\n\n\t\t/* If the total number of wanted bytes is greater than the number\n\t\tthat could be read in the first read... */\n\t\tif( xCount > xFirstLength )\n\t\t{\n\t\t\t/*...then read the remaining bytes from the start of the buffer. */\n\t\t\tconfigASSERT( xCount <= xMaxCount );\n\t\t\t( void ) memcpy( ( void * ) &( pucData[ xFirstLength ] ), ( void * ) ( pxStreamBuffer->pucBuffer ), xCount - xFirstLength ); /*lint !e9087 memcpy() requires void *. */\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\t/* Move the tail pointer to effectively remove the data read from\n\t\tthe buffer. */\n\t\txNextTail += xCount;\n\n\t\tif( xNextTail >= pxStreamBuffer->xLength )\n\t\t{\n\t\t\txNextTail -= pxStreamBuffer->xLength;\n\t\t}\n\n\t\tpxStreamBuffer->xTail = xNextTail;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\treturn xCount;\n}\n/*-----------------------------------------------------------*/\n\nstatic size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer )\n{\n/* Returns the distance between xTail and xHead. */\nsize_t xCount;\n\n\txCount = pxStreamBuffer->xLength + pxStreamBuffer->xHead;\n\txCount -= pxStreamBuffer->xTail;\n\tif ( xCount >= pxStreamBuffer->xLength )\n\t{\n\t\txCount -= pxStreamBuffer->xLength;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\treturn xCount;\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer,\n\t\t\t\t\t\t\t\t\t\t  uint8_t * const pucBuffer,\n\t\t\t\t\t\t\t\t\t\t  size_t xBufferSizeBytes,\n\t\t\t\t\t\t\t\t\t\t  size_t xTriggerLevelBytes,\n\t\t\t\t\t\t\t\t\t\t  uint8_t ucFlags )\n{\n\t/* Assert here is deliberately writing to the entire buffer to ensure it can\n\tbe written to without generating exceptions, and is setting the buffer to a\n\tknown value to assist in development/debugging. */\n\t#if( configASSERT_DEFINED == 1 )\n\t{\n\t\t/* The value written just has to be identifiable when looking at the\n\t\tmemory.  Don't use 0xA5 as that is the stack fill value and could\n\t\tresult in confusion as to what is actually being observed. */\n\t\tconst BaseType_t xWriteValue = 0x55;\n\t\tconfigASSERT( memset( pucBuffer, ( int ) xWriteValue, xBufferSizeBytes ) == pucBuffer );\n\t} /*lint !e529 !e438 xWriteValue is only used if configASSERT() is defined. */\n\t#endif\n\n\t( void ) memset( ( void * ) pxStreamBuffer, 0x00, sizeof( StreamBuffer_t ) ); /*lint !e9087 memset() requires void *. */\n\tpxStreamBuffer->pucBuffer = pucBuffer;\n\tpxStreamBuffer->xLength = xBufferSizeBytes;\n\tpxStreamBuffer->xTriggerLevelBytes = xTriggerLevelBytes;\n\tpxStreamBuffer->ucFlags = ucFlags;\n}\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tUBaseType_t uxStreamBufferGetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer )\n\t{\n\t\treturn xStreamBuffer->uxStreamBufferNumber;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tvoid vStreamBufferSetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer, UBaseType_t uxStreamBufferNumber )\n\t{\n\t\txStreamBuffer->uxStreamBufferNumber = uxStreamBufferNumber;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tuint8_t ucStreamBufferGetStreamBufferType( StreamBufferHandle_t xStreamBuffer )\n\t{\n\t\treturn ( xStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER );\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/tasks.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/* Standard includes. */\n#include <stdlib.h>\n#include <string.h>\n\n/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\nall the API functions to use the MPU wrappers.  That should only be done when\ntask.h is included from an application file. */\n#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n/* FreeRTOS includes. */\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"timers.h\"\n#include \"stack_macros.h\"\n\n/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified\nbecause the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined\nfor the header files above, but not in this file, in order to generate the\ncorrect privileged Vs unprivileged linkage and placement. */\n#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */\n\n/* Set configUSE_STATS_FORMATTING_FUNCTIONS to 2 to include the stats formatting\nfunctions but without including stdio.h here. */\n#if ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 )\n\t/* At the bottom of this file are two optional functions that can be used\n\tto generate human readable text from the raw data generated by the\n\tuxTaskGetSystemState() function.  Note the formatting functions are provided\n\tfor convenience only, and are NOT considered part of the kernel. */\n\t#include <stdio.h>\n#endif /* configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) */\n\n#if( configUSE_PREEMPTION == 0 )\n\t/* If the cooperative scheduler is being used then a yield should not be\n\tperformed just because a higher priority task has been woken. */\n\t#define taskYIELD_IF_USING_PREEMPTION()\n#else\n\t#define taskYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API()\n#endif\n\n/* Values that can be assigned to the ucNotifyState member of the TCB. */\n#define taskNOT_WAITING_NOTIFICATION\t( ( uint8_t ) 0 )\n#define taskWAITING_NOTIFICATION\t\t( ( uint8_t ) 1 )\n#define taskNOTIFICATION_RECEIVED\t\t( ( uint8_t ) 2 )\n\n/*\n * The value used to fill the stack of a task when the task is created.  This\n * is used purely for checking the high water mark for tasks.\n */\n#define tskSTACK_FILL_BYTE\t( 0xa5U )\n\n/* Bits used to recored how a task's stack and TCB were allocated. */\n#define tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB \t\t( ( uint8_t ) 0 )\n#define tskSTATICALLY_ALLOCATED_STACK_ONLY \t\t\t( ( uint8_t ) 1 )\n#define tskSTATICALLY_ALLOCATED_STACK_AND_TCB\t\t( ( uint8_t ) 2 )\n\n/* If any of the following are set then task stacks are filled with a known\nvalue so the high water mark can be determined.  If none of the following are\nset then don't fill the stack so there is no unnecessary dependency on memset. */\n#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) )\n\t#define tskSET_NEW_STACKS_TO_KNOWN_VALUE\t1\n#else\n\t#define tskSET_NEW_STACKS_TO_KNOWN_VALUE\t0\n#endif\n\n/*\n * Macros used by vListTask to indicate which state a task is in.\n */\n#define tskRUNNING_CHAR\t\t( 'X' )\n#define tskBLOCKED_CHAR\t\t( 'B' )\n#define tskREADY_CHAR\t\t( 'R' )\n#define tskDELETED_CHAR\t\t( 'D' )\n#define tskSUSPENDED_CHAR\t( 'S' )\n\n/*\n * Some kernel aware debuggers require the data the debugger needs access to be\n * global, rather than file scope.\n */\n#ifdef portREMOVE_STATIC_QUALIFIER\n\t#define static\n#endif\n\n/* The name allocated to the Idle task.  This can be overridden by defining\nconfigIDLE_TASK_NAME in FreeRTOSConfig.h. */\n#ifndef configIDLE_TASK_NAME\n\t#define configIDLE_TASK_NAME \"IDLE\"\n#endif\n\n#if ( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 )\n\n\t/* If configUSE_PORT_OPTIMISED_TASK_SELECTION is 0 then task selection is\n\tperformed in a generic way that is not optimised to any particular\n\tmicrocontroller architecture. */\n\n\t/* uxTopReadyPriority holds the priority of the highest priority ready\n\tstate task. */\n\t#define taskRECORD_READY_PRIORITY( uxPriority )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( ( uxPriority ) > uxTopReadyPriority )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tuxTopReadyPriority = ( uxPriority );\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t} /* taskRECORD_READY_PRIORITY */\n\n\t/*-----------------------------------------------------------*/\n\n\t#define taskSELECT_HIGHEST_PRIORITY_TASK()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tUBaseType_t uxTopPriority = uxTopReadyPriority;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Find the highest priority queue that contains ready tasks. */\t\t\t\t\t\t\t\t\\\n\t\twhile( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopPriority ] ) ) )\t\t\t\t\t\t\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tconfigASSERT( uxTopPriority );\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t--uxTopPriority;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* listGET_OWNER_OF_NEXT_ENTRY indexes through the list, so the tasks of\t\t\t\t\t\t\\\n\t\tthe\tsame priority get an equal share of the processor time. */\t\t\t\t\t\t\t\t\t\\\n\t\tlistGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopPriority ] ) );\t\t\t\\\n\t\tuxTopReadyPriority = uxTopPriority;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t} /* taskSELECT_HIGHEST_PRIORITY_TASK */\n\n\t/*-----------------------------------------------------------*/\n\n\t/* Define away taskRESET_READY_PRIORITY() and portRESET_READY_PRIORITY() as\n\tthey are only required when a port optimised method of task selection is\n\tbeing used. */\n\t#define taskRESET_READY_PRIORITY( uxPriority )\n\t#define portRESET_READY_PRIORITY( uxPriority, uxTopReadyPriority )\n\n#else /* configUSE_PORT_OPTIMISED_TASK_SELECTION */\n\n\t/* If configUSE_PORT_OPTIMISED_TASK_SELECTION is 1 then task selection is\n\tperformed in a way that is tailored to the particular microcontroller\n\tarchitecture being used. */\n\n\t/* A port optimised version is provided.  Call the port defined macros. */\n\t#define taskRECORD_READY_PRIORITY( uxPriority )\tportRECORD_READY_PRIORITY( uxPriority, uxTopReadyPriority )\n\n\t/*-----------------------------------------------------------*/\n\n\t#define taskSELECT_HIGHEST_PRIORITY_TASK()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tUBaseType_t uxTopPriority;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t/* Find the highest priority list that contains ready tasks. */\t\t\t\t\t\t\t\t\\\n\t\tportGET_HIGHEST_PRIORITY( uxTopPriority, uxTopReadyPriority );\t\t\t\t\t\t\t\t\\\n\t\tconfigASSERT( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ uxTopPriority ] ) ) > 0 );\t\t\\\n\t\tlistGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopPriority ] ) );\t\t\\\n\t} /* taskSELECT_HIGHEST_PRIORITY_TASK() */\n\n\t/*-----------------------------------------------------------*/\n\n\t/* A port optimised version is provided, call it only if the TCB being reset\n\tis being referenced from a ready list.  If it is referenced from a delayed\n\tor suspended list then it won't be in a ready list. */\n\t#define taskRESET_READY_PRIORITY( uxPriority )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\tif( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ ( uxPriority ) ] ) ) == ( UBaseType_t ) 0 )\t\\\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\tportRESET_READY_PRIORITY( ( uxPriority ), ( uxTopReadyPriority ) );\t\t\t\t\t\t\t\\\n\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */\n\n/*-----------------------------------------------------------*/\n\n/* pxDelayedTaskList and pxOverflowDelayedTaskList are switched when the tick\ncount overflows. */\n#define taskSWITCH_DELAYED_LISTS()\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tList_t *pxTemp;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t/* The delayed tasks list should be empty when the lists are switched. */\t\t\t\t\t\t\\\n\tconfigASSERT( ( listLIST_IS_EMPTY( pxDelayedTaskList ) ) );\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tpxTemp = pxDelayedTaskList;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tpxDelayedTaskList = pxOverflowDelayedTaskList;\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tpxOverflowDelayedTaskList = pxTemp;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\txNumOfOverflows++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tprvResetNextTaskUnblockTime();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n}\n\n/*-----------------------------------------------------------*/\n\n/*\n * Place the task represented by pxTCB into the appropriate ready list for\n * the task.  It is inserted at the end of the list.\n */\n#define prvAddTaskToReadyList( pxTCB )\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\ttraceMOVED_TASK_TO_READY_STATE( pxTCB );\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\ttaskRECORD_READY_PRIORITY( ( pxTCB )->uxPriority );\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tvListInsertEnd( &( pxReadyTasksLists[ ( pxTCB )->uxPriority ] ), &( ( pxTCB )->xStateListItem ) ); \\\n\ttracePOST_MOVED_TASK_TO_READY_STATE( pxTCB )\n/*-----------------------------------------------------------*/\n\n/*\n * Several functions take an TaskHandle_t parameter that can optionally be NULL,\n * where NULL is used to indicate that the handle of the currently executing\n * task should be used in place of the parameter.  This macro simply checks to\n * see if the parameter is NULL and returns a pointer to the appropriate TCB.\n */\n#define prvGetTCBFromHandle( pxHandle ) ( ( ( pxHandle ) == NULL ) ? pxCurrentTCB : ( pxHandle ) )\n\n/* The item value of the event list item is normally used to hold the priority\nof the task to which it belongs (coded to allow it to be held in reverse\npriority order).  However, it is occasionally borrowed for other purposes.  It\nis important its value is not updated due to a task priority change while it is\nbeing used for another purpose.  The following bit definition is used to inform\nthe scheduler that the value should not be changed - in which case it is the\nresponsibility of whichever module is using the value to ensure it gets set back\nto its original value when it is released. */\n#if( configUSE_16_BIT_TICKS == 1 )\n\t#define taskEVENT_LIST_ITEM_VALUE_IN_USE\t0x8000U\n#else\n\t#define taskEVENT_LIST_ITEM_VALUE_IN_USE\t0x80000000UL\n#endif\n\n/*\n * Task control block.  A task control block (TCB) is allocated for each task,\n * and stores task state information, including a pointer to the task's context\n * (the task's run time environment, including register values)\n */\ntypedef struct tskTaskControlBlock \t\t\t/* The old naming convention is used to prevent breaking kernel aware debuggers. */\n{\n\tvolatile StackType_t\t*pxTopOfStack;\t/*< Points to the location of the last item placed on the tasks stack.  THIS MUST BE THE FIRST MEMBER OF THE TCB STRUCT. */\n\n\t#if ( portUSING_MPU_WRAPPERS == 1 )\n\t\txMPU_SETTINGS\txMPUSettings;\t\t/*< The MPU settings are defined as part of the port layer.  THIS MUST BE THE SECOND MEMBER OF THE TCB STRUCT. */\n\t#endif\n\n\tListItem_t\t\t\txStateListItem;\t/*< The list that the state list item of a task is reference from denotes the state of that task (Ready, Blocked, Suspended ). */\n\tListItem_t\t\t\txEventListItem;\t\t/*< Used to reference a task from an event list. */\n\tUBaseType_t\t\t\tuxPriority;\t\t\t/*< The priority of the task.  0 is the lowest priority. */\n\tStackType_t\t\t\t*pxStack;\t\t\t/*< Points to the start of the stack. */\n\tchar\t\t\t\tpcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created.  Facilitates debugging only. */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\n\t#if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) )\n\t\tStackType_t\t\t*pxEndOfStack;\t\t/*< Points to the highest valid address for the stack. */\n\t#endif\n\n\t#if ( portCRITICAL_NESTING_IN_TCB == 1 )\n\t\tUBaseType_t\t\tuxCriticalNesting;\t/*< Holds the critical section nesting depth for ports that do not maintain their own count in the port layer. */\n\t#endif\n\n\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t\t\tuxTCBNumber;\t\t/*< Stores a number that increments each time a TCB is created.  It allows debuggers to determine when a task has been deleted and then recreated. */\n\t\tUBaseType_t\t\tuxTaskNumber;\t\t/*< Stores a number specifically for use by third party trace code. */\n\t#endif\n\n\t#if ( configUSE_MUTEXES == 1 )\n\t\tUBaseType_t\t\tuxBasePriority;\t\t/*< The priority last assigned to the task - used by the priority inheritance mechanism. */\n\t\tUBaseType_t\t\tuxMutexesHeld;\n\t#endif\n\n\t#if ( configUSE_APPLICATION_TASK_TAG == 1 )\n\t\tTaskHookFunction_t pxTaskTag;\n\t#endif\n\n\t#if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 )\n\t\tvoid\t\t\t*pvThreadLocalStoragePointers[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ];\n\t#endif\n\n\t#if( configGENERATE_RUN_TIME_STATS == 1 )\n\t\tuint32_t\t\tulRunTimeCounter;\t/*< Stores the amount of time the task has spent in the Running state. */\n\t#endif\n\n\t#if ( configUSE_NEWLIB_REENTRANT == 1 )\n\t\t/* Allocate a Newlib reent structure that is specific to this task.\n\t\tNote Newlib support has been included by popular demand, but is not\n\t\tused by the FreeRTOS maintainers themselves.  FreeRTOS is not\n\t\tresponsible for resulting newlib operation.  User must be familiar with\n\t\tnewlib and must provide system-wide implementations of the necessary\n\t\tstubs. Be warned that (at the time of writing) the current newlib design\n\t\timplements a system-wide malloc() that must be provided with locks.\n\n\t\tSee the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html\n\t\tfor additional information. */\n\t\tstruct\t_reent xNewLib_reent;\n\t#endif\n\n\t#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\t\tvolatile uint32_t ulNotifiedValue;\n\t\tvolatile uint8_t ucNotifyState;\n\t#endif\n\n\t/* See the comments in FreeRTOS.h with the definition of\n\ttskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE. */\n\t#if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */\n\t\tuint8_t\tucStaticallyAllocated; \t\t/*< Set to pdTRUE if the task is a statically allocated to ensure no attempt is made to free the memory. */\n\t#endif\n\n\t#if( INCLUDE_xTaskAbortDelay == 1 )\n\t\tuint8_t ucDelayAborted;\n\t#endif\n\n\t#if( configUSE_POSIX_ERRNO == 1 )\n\t\tint iTaskErrno;\n\t#endif\n\n} tskTCB;\n\n/* The old tskTCB name is maintained above then typedefed to the new TCB_t name\nbelow to enable the use of older kernel aware debuggers. */\ntypedef tskTCB TCB_t;\n\n/*lint -save -e956 A manual analysis and inspection has been used to determine\nwhich static variables must be declared volatile. */\nPRIVILEGED_DATA TCB_t * volatile pxCurrentTCB = NULL;\n\n/* Lists for ready and blocked tasks. --------------------\nxDelayedTaskList1 and xDelayedTaskList2 could be move to function scople but\ndoing so breaks some kernel aware debuggers and debuggers that rely on removing\nthe static qualifier. */\nPRIVILEGED_DATA static List_t pxReadyTasksLists[ configMAX_PRIORITIES ];/*< Prioritised ready tasks. */\nPRIVILEGED_DATA static List_t xDelayedTaskList1;\t\t\t\t\t\t/*< Delayed tasks. */\nPRIVILEGED_DATA static List_t xDelayedTaskList2;\t\t\t\t\t\t/*< Delayed tasks (two lists are used - one for delays that have overflowed the current tick count. */\nPRIVILEGED_DATA static List_t * volatile pxDelayedTaskList;\t\t\t\t/*< Points to the delayed task list currently being used. */\nPRIVILEGED_DATA static List_t * volatile pxOverflowDelayedTaskList;\t\t/*< Points to the delayed task list currently being used to hold tasks that have overflowed the current tick count. */\nPRIVILEGED_DATA static List_t xPendingReadyList;\t\t\t\t\t\t/*< Tasks that have been readied while the scheduler was suspended.  They will be moved to the ready list when the scheduler is resumed. */\n\n#if( INCLUDE_vTaskDelete == 1 )\n\n\tPRIVILEGED_DATA static List_t xTasksWaitingTermination;\t\t\t\t/*< Tasks that have been deleted - but their memory not yet freed. */\n\tPRIVILEGED_DATA static volatile UBaseType_t uxDeletedTasksWaitingCleanUp = ( UBaseType_t ) 0U;\n\n#endif\n\n#if ( INCLUDE_vTaskSuspend == 1 )\n\n\tPRIVILEGED_DATA static List_t xSuspendedTaskList;\t\t\t\t\t/*< Tasks that are currently suspended. */\n\n#endif\n\n/* Global POSIX errno. Its value is changed upon context switching to match\nthe errno of the currently running task. */\n#if ( configUSE_POSIX_ERRNO == 1 )\n\tint FreeRTOS_errno = 0;\n#endif\n\n/* Other file private variables. --------------------------------*/\nPRIVILEGED_DATA static volatile UBaseType_t uxCurrentNumberOfTasks \t= ( UBaseType_t ) 0U;\nPRIVILEGED_DATA static volatile TickType_t xTickCount \t\t\t\t= ( TickType_t ) configINITIAL_TICK_COUNT;\nPRIVILEGED_DATA static volatile UBaseType_t uxTopReadyPriority \t\t= tskIDLE_PRIORITY;\nPRIVILEGED_DATA static volatile BaseType_t xSchedulerRunning \t\t= pdFALSE;\nPRIVILEGED_DATA static volatile TickType_t xPendedTicks \t\t\t= ( TickType_t ) 0U;\nPRIVILEGED_DATA static volatile BaseType_t xYieldPending \t\t\t= pdFALSE;\nPRIVILEGED_DATA static volatile BaseType_t xNumOfOverflows \t\t\t= ( BaseType_t ) 0;\nPRIVILEGED_DATA static UBaseType_t uxTaskNumber \t\t\t\t\t= ( UBaseType_t ) 0U;\nPRIVILEGED_DATA static volatile TickType_t xNextTaskUnblockTime\t\t= ( TickType_t ) 0U; /* Initialised to portMAX_DELAY before the scheduler starts. */\nPRIVILEGED_DATA static TaskHandle_t xIdleTaskHandle\t\t\t\t\t= NULL;\t\t\t/*< Holds the handle of the idle task.  The idle task is created automatically when the scheduler is started. */\n\n/* Context switches are held pending while the scheduler is suspended.  Also,\ninterrupts must not manipulate the xStateListItem of a TCB, or any of the\nlists the xStateListItem can be referenced from, if the scheduler is suspended.\nIf an interrupt needs to unblock a task while the scheduler is suspended then it\nmoves the task's event list item into the xPendingReadyList, ready for the\nkernel to move the task from the pending ready list into the real ready list\nwhen the scheduler is unsuspended.  The pending ready list itself can only be\naccessed from a critical section. */\nPRIVILEGED_DATA static volatile UBaseType_t uxSchedulerSuspended\t= ( UBaseType_t ) pdFALSE;\n\n#if ( configGENERATE_RUN_TIME_STATS == 1 )\n\n\t/* Do not move these variables to function scope as doing so prevents the\n\tcode working with debuggers that need to remove the static qualifier. */\n\tPRIVILEGED_DATA static uint32_t ulTaskSwitchedInTime = 0UL;\t/*< Holds the value of a timer/counter the last time a task was switched in. */\n\tPRIVILEGED_DATA static uint32_t ulTotalRunTime = 0UL;\t\t/*< Holds the total amount of execution time as defined by the run time counter clock. */\n\n#endif\n\n/*lint -restore */\n\n/*-----------------------------------------------------------*/\n\n/* Callback function prototypes. --------------------------*/\n#if(  configCHECK_FOR_STACK_OVERFLOW > 0 )\n\n\textern void vApplicationStackOverflowHook( TaskHandle_t xTask, char *pcTaskName );\n\n#endif\n\n#if( configUSE_TICK_HOOK > 0 )\n\n\textern void vApplicationTickHook( void ); /*lint !e526 Symbol not defined as it is an application callback. */\n\n#endif\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n\textern void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize ); /*lint !e526 Symbol not defined as it is an application callback. */\n\n#endif\n\n/* File private functions. --------------------------------*/\n\n/**\n * Utility task that simply returns pdTRUE if the task referenced by xTask is\n * currently in the Suspended state, or pdFALSE if the task referenced by xTask\n * is in any other state.\n */\n#if ( INCLUDE_vTaskSuspend == 1 )\n\n\tstatic BaseType_t prvTaskIsTaskSuspended( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;\n\n#endif /* INCLUDE_vTaskSuspend */\n\n/*\n * Utility to ready all the lists used by the scheduler.  This is called\n * automatically upon the creation of the first task.\n */\nstatic void prvInitialiseTaskLists( void ) PRIVILEGED_FUNCTION;\n\n/*\n * The idle task, which as all tasks is implemented as a never ending loop.\n * The idle task is automatically created and added to the ready lists upon\n * creation of the first user task.\n *\n * The portTASK_FUNCTION_PROTO() macro is used to allow port/compiler specific\n * language extensions.  The equivalent prototype for this function is:\n *\n * void prvIdleTask( void *pvParameters );\n *\n */\nstatic portTASK_FUNCTION_PROTO( prvIdleTask, pvParameters );\n\n/*\n * Utility to free all memory allocated by the scheduler to hold a TCB,\n * including the stack pointed to by the TCB.\n *\n * This does not free memory allocated by the task itself (i.e. memory\n * allocated by calls to pvPortMalloc from within the tasks application code).\n */\n#if ( INCLUDE_vTaskDelete == 1 )\n\n\tstatic void prvDeleteTCB( TCB_t *pxTCB ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/*\n * Used only by the idle task.  This checks to see if anything has been placed\n * in the list of tasks waiting to be deleted.  If so the task is cleaned up\n * and its TCB deleted.\n */\nstatic void prvCheckTasksWaitingTermination( void ) PRIVILEGED_FUNCTION;\n\n/*\n * The currently executing task is entering the Blocked state.  Add the task to\n * either the current or the overflow delayed task list.\n */\nstatic void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) PRIVILEGED_FUNCTION;\n\n/*\n * Fills an TaskStatus_t structure with information on each task that is\n * referenced from the pxList list (which may be a ready list, a delayed list,\n * a suspended list, etc.).\n *\n * THIS FUNCTION IS INTENDED FOR DEBUGGING ONLY, AND SHOULD NOT BE CALLED FROM\n * NORMAL APPLICATION CODE.\n */\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tstatic UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/*\n * Searches pxList for a task with name pcNameToQuery - returning a handle to\n * the task if it is found, or NULL if the task is not found.\n */\n#if ( INCLUDE_xTaskGetHandle == 1 )\n\n\tstatic TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/*\n * When a task is created, the stack of the task is filled with a known value.\n * This function determines the 'high water mark' of the task stack by\n * determining how much of the stack remains at the original preset value.\n */\n#if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) )\n\n\tstatic configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/*\n * Return the amount of time, in ticks, that will pass before the kernel will\n * next move a task from the Blocked state to the Running state.\n *\n * This conditional compilation should use inequality to 0, not equality to 1.\n * This is to ensure portSUPPRESS_TICKS_AND_SLEEP() can be called when user\n * defined low power mode implementations require configUSE_TICKLESS_IDLE to be\n * set to a value other than 1.\n */\n#if ( configUSE_TICKLESS_IDLE != 0 )\n\n\tstatic TickType_t prvGetExpectedIdleTime( void ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/*\n * Set xNextTaskUnblockTime to the time at which the next Blocked state task\n * will exit the Blocked state.\n */\nstatic void prvResetNextTaskUnblockTime( void );\n\n#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) )\n\n\t/*\n\t * Helper function used to pad task names with spaces when printing out\n\t * human readable tables of task information.\n\t */\n\tstatic char *prvWriteNameToBuffer( char *pcBuffer, const char *pcTaskName ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/*\n * Called after a Task_t structure has been allocated either statically or\n * dynamically to fill in the structure's members.\n */\nstatic void prvInitialiseNewTask( \tTaskFunction_t pxTaskCode,\n\t\t\t\t\t\t\t\t\tconst char * const pcName, \t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\tconst uint32_t ulStackDepth,\n\t\t\t\t\t\t\t\t\tvoid * const pvParameters,\n\t\t\t\t\t\t\t\t\tUBaseType_t uxPriority,\n\t\t\t\t\t\t\t\t\tTaskHandle_t * const pxCreatedTask,\n\t\t\t\t\t\t\t\t\tTCB_t *pxNewTCB,\n\t\t\t\t\t\t\t\t\tconst MemoryRegion_t * const xRegions ) PRIVILEGED_FUNCTION;\n\n/*\n * Called after a new task has been created and initialised to place the task\n * under the control of the scheduler.\n */\nstatic void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION;\n\n/*\n * freertos_tasks_c_additions_init() should only be called if the user definable\n * macro FREERTOS_TASKS_C_ADDITIONS_INIT() is defined, as that is the only macro\n * called by the function.\n */\n#ifdef FREERTOS_TASKS_C_ADDITIONS_INIT\n\n\tstatic void freertos_tasks_c_additions_init( void ) PRIVILEGED_FUNCTION;\n\n#endif\n\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n\tTaskHandle_t xTaskCreateStatic(\tTaskFunction_t pxTaskCode,\n\t\t\t\t\t\t\t\t\tconst char * const pcName,\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\tconst uint32_t ulStackDepth,\n\t\t\t\t\t\t\t\t\tvoid * const pvParameters,\n\t\t\t\t\t\t\t\t\tUBaseType_t uxPriority,\n\t\t\t\t\t\t\t\t\tStackType_t * const puxStackBuffer,\n\t\t\t\t\t\t\t\t\tStaticTask_t * const pxTaskBuffer )\n\t{\n\tTCB_t *pxNewTCB;\n\tTaskHandle_t xReturn;\n\n\t\tconfigASSERT( puxStackBuffer != NULL );\n\t\tconfigASSERT( pxTaskBuffer != NULL );\n\n\t\t#if( configASSERT_DEFINED == 1 )\n\t\t{\n\t\t\t/* Sanity check that the size of the structure used to declare a\n\t\t\tvariable of type StaticTask_t equals the size of the real task\n\t\t\tstructure. */\n\t\t\tvolatile size_t xSize = sizeof( StaticTask_t );\n\t\t\tconfigASSERT( xSize == sizeof( TCB_t ) );\n\t\t\t( void ) xSize; /* Prevent lint warning when configASSERT() is not used. */\n\t\t}\n\t\t#endif /* configASSERT_DEFINED */\n\n\n\t\tif( ( pxTaskBuffer != NULL ) && ( puxStackBuffer != NULL ) )\n\t\t{\n\t\t\t/* The memory used for the task's TCB and stack are passed into this\n\t\t\tfunction - use them. */\n\t\t\tpxNewTCB = ( TCB_t * ) pxTaskBuffer; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */\n\t\t\tpxNewTCB->pxStack = ( StackType_t * ) puxStackBuffer;\n\n\t\t\t#if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */\n\t\t\t{\n\t\t\t\t/* Tasks can be created statically or dynamically, so note this\n\t\t\t\ttask was created statically in case the task is later deleted. */\n\t\t\t\tpxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB;\n\t\t\t}\n\t\t\t#endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */\n\n\t\t\tprvInitialiseNewTask( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, &xReturn, pxNewTCB, NULL );\n\t\t\tprvAddNewTaskToReadyList( pxNewTCB );\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = NULL;\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* SUPPORT_STATIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\n#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )\n\n\tBaseType_t xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask )\n\t{\n\tTCB_t *pxNewTCB;\n\tBaseType_t xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;\n\n\t\tconfigASSERT( pxTaskDefinition->puxStackBuffer != NULL );\n\t\tconfigASSERT( pxTaskDefinition->pxTaskBuffer != NULL );\n\n\t\tif( ( pxTaskDefinition->puxStackBuffer != NULL ) && ( pxTaskDefinition->pxTaskBuffer != NULL ) )\n\t\t{\n\t\t\t/* Allocate space for the TCB.  Where the memory comes from depends\n\t\t\ton the implementation of the port malloc function and whether or\n\t\t\tnot static allocation is being used. */\n\t\t\tpxNewTCB = ( TCB_t * ) pxTaskDefinition->pxTaskBuffer;\n\n\t\t\t/* Store the stack location in the TCB. */\n\t\t\tpxNewTCB->pxStack = pxTaskDefinition->puxStackBuffer;\n\n\t\t\t#if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 )\n\t\t\t{\n\t\t\t\t/* Tasks can be created statically or dynamically, so note this\n\t\t\t\ttask was created statically in case the task is later deleted. */\n\t\t\t\tpxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB;\n\t\t\t}\n\t\t\t#endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */\n\n\t\t\tprvInitialiseNewTask(\tpxTaskDefinition->pvTaskCode,\n\t\t\t\t\t\t\t\t\tpxTaskDefinition->pcName,\n\t\t\t\t\t\t\t\t\t( uint32_t ) pxTaskDefinition->usStackDepth,\n\t\t\t\t\t\t\t\t\tpxTaskDefinition->pvParameters,\n\t\t\t\t\t\t\t\t\tpxTaskDefinition->uxPriority,\n\t\t\t\t\t\t\t\t\tpxCreatedTask, pxNewTCB,\n\t\t\t\t\t\t\t\t\tpxTaskDefinition->xRegions );\n\n\t\t\tprvAddNewTaskToReadyList( pxNewTCB );\n\t\t\txReturn = pdPASS;\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) */\n/*-----------------------------------------------------------*/\n\n#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\n\tBaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask )\n\t{\n\tTCB_t *pxNewTCB;\n\tBaseType_t xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;\n\n\t\tconfigASSERT( pxTaskDefinition->puxStackBuffer );\n\n\t\tif( pxTaskDefinition->puxStackBuffer != NULL )\n\t\t{\n\t\t\t/* Allocate space for the TCB.  Where the memory comes from depends\n\t\t\ton the implementation of the port malloc function and whether or\n\t\t\tnot static allocation is being used. */\n\t\t\tpxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) );\n\n\t\t\tif( pxNewTCB != NULL )\n\t\t\t{\n\t\t\t\t/* Store the stack location in the TCB. */\n\t\t\t\tpxNewTCB->pxStack = pxTaskDefinition->puxStackBuffer;\n\n\t\t\t\t#if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Tasks can be created statically or dynamically, so note\n\t\t\t\t\tthis task had a statically allocated stack in case it is\n\t\t\t\t\tlater deleted.  The TCB was allocated dynamically. */\n\t\t\t\t\tpxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_ONLY;\n\t\t\t\t}\n\t\t\t\t#endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */\n\n\t\t\t\tprvInitialiseNewTask(\tpxTaskDefinition->pvTaskCode,\n\t\t\t\t\t\t\t\t\t\tpxTaskDefinition->pcName,\n\t\t\t\t\t\t\t\t\t\t( uint32_t ) pxTaskDefinition->usStackDepth,\n\t\t\t\t\t\t\t\t\t\tpxTaskDefinition->pvParameters,\n\t\t\t\t\t\t\t\t\t\tpxTaskDefinition->uxPriority,\n\t\t\t\t\t\t\t\t\t\tpxCreatedTask, pxNewTCB,\n\t\t\t\t\t\t\t\t\t\tpxTaskDefinition->xRegions );\n\n\t\t\t\tprvAddNewTaskToReadyList( pxNewTCB );\n\t\t\t\txReturn = pdPASS;\n\t\t\t}\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* portUSING_MPU_WRAPPERS */\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n\tBaseType_t xTaskCreate(\tTaskFunction_t pxTaskCode,\n\t\t\t\t\t\t\tconst char * const pcName,\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\tconst configSTACK_DEPTH_TYPE usStackDepth,\n\t\t\t\t\t\t\tvoid * const pvParameters,\n\t\t\t\t\t\t\tUBaseType_t uxPriority,\n\t\t\t\t\t\t\tTaskHandle_t * const pxCreatedTask )\n\t{\n\tTCB_t *pxNewTCB;\n\tBaseType_t xReturn;\n\n\t\t/* If the stack grows down then allocate the stack then the TCB so the stack\n\t\tdoes not grow into the TCB.  Likewise if the stack grows up then allocate\n\t\tthe TCB then the stack. */\n\t\t#if( portSTACK_GROWTH > 0 )\n\t\t{\n\t\t\t/* Allocate space for the TCB.  Where the memory comes from depends on\n\t\t\tthe implementation of the port malloc function and whether or not static\n\t\t\tallocation is being used. */\n\t\t\tpxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) );\n\n\t\t\tif( pxNewTCB != NULL )\n\t\t\t{\n\t\t\t\t/* Allocate space for the stack used by the task being created.\n\t\t\t\tThe base of the stack memory stored in the TCB so the task can\n\t\t\t\tbe deleted later if required. */\n\t\t\t\tpxNewTCB->pxStack = ( StackType_t * ) pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\n\t\t\t\tif( pxNewTCB->pxStack == NULL )\n\t\t\t\t{\n\t\t\t\t\t/* Could not allocate the stack.  Delete the allocated TCB. */\n\t\t\t\t\tvPortFree( pxNewTCB );\n\t\t\t\t\tpxNewTCB = NULL;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#else /* portSTACK_GROWTH */\n\t\t{\n\t\tStackType_t *pxStack;\n\n\t\t\t/* Allocate space for the stack used by the task being created. */\n\t\t\tpxStack = pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */\n\n\t\t\tif( pxStack != NULL )\n\t\t\t{\n\t\t\t\t/* Allocate space for the TCB. */\n\t\t\t\tpxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of TCB_t is always a pointer to the task's stack. */\n\n\t\t\t\tif( pxNewTCB != NULL )\n\t\t\t\t{\n\t\t\t\t\t/* Store the stack location in the TCB. */\n\t\t\t\t\tpxNewTCB->pxStack = pxStack;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* The stack cannot be used as the TCB was not created.  Free\n\t\t\t\t\tit again. */\n\t\t\t\t\tvPortFree( pxStack );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpxNewTCB = NULL;\n\t\t\t}\n\t\t}\n\t\t#endif /* portSTACK_GROWTH */\n\n\t\tif( pxNewTCB != NULL )\n\t\t{\n\t\t\t#if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e9029 !e731 Macro has been consolidated for readability reasons. */\n\t\t\t{\n\t\t\t\t/* Tasks can be created statically or dynamically, so note this\n\t\t\t\ttask was created dynamically in case it is later deleted. */\n\t\t\t\tpxNewTCB->ucStaticallyAllocated = tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB;\n\t\t\t}\n\t\t\t#endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */\n\n\t\t\tprvInitialiseNewTask( pxTaskCode, pcName, ( uint32_t ) usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB, NULL );\n\t\t\tprvAddNewTaskToReadyList( pxNewTCB );\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\nstatic void prvInitialiseNewTask( \tTaskFunction_t pxTaskCode,\n\t\t\t\t\t\t\t\t\tconst char * const pcName,\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\tconst uint32_t ulStackDepth,\n\t\t\t\t\t\t\t\t\tvoid * const pvParameters,\n\t\t\t\t\t\t\t\t\tUBaseType_t uxPriority,\n\t\t\t\t\t\t\t\t\tTaskHandle_t * const pxCreatedTask,\n\t\t\t\t\t\t\t\t\tTCB_t *pxNewTCB,\n\t\t\t\t\t\t\t\t\tconst MemoryRegion_t * const xRegions )\n{\nStackType_t *pxTopOfStack;\nUBaseType_t x;\n\n\t#if( portUSING_MPU_WRAPPERS == 1 )\n\t\t/* Should the task be created in privileged mode? */\n\t\tBaseType_t xRunPrivileged;\n\t\tif( ( uxPriority & portPRIVILEGE_BIT ) != 0U )\n\t\t{\n\t\t\txRunPrivileged = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txRunPrivileged = pdFALSE;\n\t\t}\n\t\tuxPriority &= ~portPRIVILEGE_BIT;\n\t#endif /* portUSING_MPU_WRAPPERS == 1 */\n\n\t/* Avoid dependency on memset() if it is not required. */\n\t#if( tskSET_NEW_STACKS_TO_KNOWN_VALUE == 1 )\n\t{\n\t\t/* Fill the stack with a known value to assist debugging. */\n\t\t( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) ulStackDepth * sizeof( StackType_t ) );\n\t}\n\t#endif /* tskSET_NEW_STACKS_TO_KNOWN_VALUE */\n\n\t/* Calculate the top of stack address.  This depends on whether the stack\n\tgrows from high memory to low (as per the 80x86) or vice versa.\n\tportSTACK_GROWTH is used to make the result positive or negative as required\n\tby the port. */\n\t#if( portSTACK_GROWTH < 0 )\n\t{\n\t\tpxTopOfStack = &( pxNewTCB->pxStack[ ulStackDepth - ( uint32_t ) 1 ] );\n\t\tpxTopOfStack = ( StackType_t * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); /*lint !e923 !e9033 !e9078 MISRA exception.  Avoiding casts between pointers and integers is not practical.  Size differences accounted for using portPOINTER_SIZE_TYPE type.  Checked by assert(). */\n\n\t\t/* Check the alignment of the calculated top of stack is correct. */\n\t\tconfigASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) );\n\n\t\t#if( configRECORD_STACK_HIGH_ADDRESS == 1 )\n\t\t{\n\t\t\t/* Also record the stack's high address, which may assist\n\t\t\tdebugging. */\n\t\t\tpxNewTCB->pxEndOfStack = pxTopOfStack;\n\t\t}\n\t\t#endif /* configRECORD_STACK_HIGH_ADDRESS */\n\t}\n\t#else /* portSTACK_GROWTH */\n\t{\n\t\tpxTopOfStack = pxNewTCB->pxStack;\n\n\t\t/* Check the alignment of the stack buffer is correct. */\n\t\tconfigASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxNewTCB->pxStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) );\n\n\t\t/* The other extreme of the stack space is required if stack checking is\n\t\tperformed. */\n\t\tpxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 );\n\t}\n\t#endif /* portSTACK_GROWTH */\n\n\t/* Store the task name in the TCB. */\n\tif( pcName != NULL )\n\t{\n\t\tfor( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ )\n\t\t{\n\t\t\tpxNewTCB->pcTaskName[ x ] = pcName[ x ];\n\n\t\t\t/* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than\n\t\t\tconfigMAX_TASK_NAME_LEN characters just in case the memory after the\n\t\t\tstring is not accessible (extremely unlikely). */\n\t\t\tif( pcName[ x ] == ( char ) 0x00 )\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\n\t\t/* Ensure the name string is terminated in the case that the string length\n\t\twas greater or equal to configMAX_TASK_NAME_LEN. */\n\t\tpxNewTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\\0';\n\t}\n\telse\n\t{\n\t\t/* The task has not been given a name, so just ensure there is a NULL\n\t\tterminator when it is read out. */\n\t\tpxNewTCB->pcTaskName[ 0 ] = 0x00;\n\t}\n\n\t/* This is used as an array index so must ensure it's not too large.  First\n\tremove the privilege bit if one is present. */\n\tif( uxPriority >= ( UBaseType_t ) configMAX_PRIORITIES )\n\t{\n\t\tuxPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\tpxNewTCB->uxPriority = uxPriority;\n\t#if ( configUSE_MUTEXES == 1 )\n\t{\n\t\tpxNewTCB->uxBasePriority = uxPriority;\n\t\tpxNewTCB->uxMutexesHeld = 0;\n\t}\n\t#endif /* configUSE_MUTEXES */\n\n\tvListInitialiseItem( &( pxNewTCB->xStateListItem ) );\n\tvListInitialiseItem( &( pxNewTCB->xEventListItem ) );\n\n\t/* Set the pxNewTCB as a link back from the ListItem_t.  This is so we can get\n\tback to\tthe containing TCB from a generic item in a list. */\n\tlistSET_LIST_ITEM_OWNER( &( pxNewTCB->xStateListItem ), pxNewTCB );\n\n\t/* Event lists are always in priority order. */\n\tlistSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\tlistSET_LIST_ITEM_OWNER( &( pxNewTCB->xEventListItem ), pxNewTCB );\n\n\t#if ( portCRITICAL_NESTING_IN_TCB == 1 )\n\t{\n\t\tpxNewTCB->uxCriticalNesting = ( UBaseType_t ) 0U;\n\t}\n\t#endif /* portCRITICAL_NESTING_IN_TCB */\n\n\t#if ( configUSE_APPLICATION_TASK_TAG == 1 )\n\t{\n\t\tpxNewTCB->pxTaskTag = NULL;\n\t}\n\t#endif /* configUSE_APPLICATION_TASK_TAG */\n\n\t#if ( configGENERATE_RUN_TIME_STATS == 1 )\n\t{\n\t\tpxNewTCB->ulRunTimeCounter = 0UL;\n\t}\n\t#endif /* configGENERATE_RUN_TIME_STATS */\n\n\t#if ( portUSING_MPU_WRAPPERS == 1 )\n\t{\n\t\tvPortStoreTaskMPUSettings( &( pxNewTCB->xMPUSettings ), xRegions, pxNewTCB->pxStack, ulStackDepth );\n\t}\n\t#else\n\t{\n\t\t/* Avoid compiler warning about unreferenced parameter. */\n\t\t( void ) xRegions;\n\t}\n\t#endif\n\n\t#if( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )\n\t{\n\t\tfor( x = 0; x < ( UBaseType_t ) configNUM_THREAD_LOCAL_STORAGE_POINTERS; x++ )\n\t\t{\n\t\t\tpxNewTCB->pvThreadLocalStoragePointers[ x ] = NULL;\n\t\t}\n\t}\n\t#endif\n\n\t#if ( configUSE_TASK_NOTIFICATIONS == 1 )\n\t{\n\t\tpxNewTCB->ulNotifiedValue = 0;\n\t\tpxNewTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION;\n\t}\n\t#endif\n\n\t#if ( configUSE_NEWLIB_REENTRANT == 1 )\n\t{\n\t\t/* Initialise this task's Newlib reent structure.\n\t\tSee the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html\n\t\tfor additional information. */\n\t\t_REENT_INIT_PTR( ( &( pxNewTCB->xNewLib_reent ) ) );\n\t}\n\t#endif\n\n\t#if( INCLUDE_xTaskAbortDelay == 1 )\n\t{\n\t\tpxNewTCB->ucDelayAborted = pdFALSE;\n\t}\n\t#endif\n\n\t/* Initialize the TCB stack to look as if the task was already running,\n\tbut had been interrupted by the scheduler.  The return address is set\n\tto the start of the task function. Once the stack has been initialised\n\tthe top of stack variable is updated. */\n\t#if( portUSING_MPU_WRAPPERS == 1 )\n\t{\n\t\t/* If the port has capability to detect stack overflow,\n\t\tpass the stack end address to the stack initialization\n\t\tfunction as well. */\n\t\t#if( portHAS_STACK_OVERFLOW_CHECKING == 1 )\n\t\t{\n\t\t\t#if( portSTACK_GROWTH < 0 )\n\t\t\t{\n\t\t\t\tpxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxStack, pxTaskCode, pvParameters, xRunPrivileged );\n\t\t\t}\n\t\t\t#else /* portSTACK_GROWTH */\n\t\t\t{\n\t\t\t\tpxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxEndOfStack, pxTaskCode, pvParameters, xRunPrivileged );\n\t\t\t}\n\t\t\t#endif /* portSTACK_GROWTH */\n\t\t}\n\t\t#else /* portHAS_STACK_OVERFLOW_CHECKING */\n\t\t{\n\t\t\tpxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters, xRunPrivileged );\n\t\t}\n\t\t#endif /* portHAS_STACK_OVERFLOW_CHECKING */\n\t}\n\t#else /* portUSING_MPU_WRAPPERS */\n\t{\n\t\t/* If the port has capability to detect stack overflow,\n\t\tpass the stack end address to the stack initialization\n\t\tfunction as well. */\n\t\t#if( portHAS_STACK_OVERFLOW_CHECKING == 1 )\n\t\t{\n\t\t\t#if( portSTACK_GROWTH < 0 )\n\t\t\t{\n\t\t\t\tpxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxStack, pxTaskCode, pvParameters );\n\t\t\t}\n\t\t\t#else /* portSTACK_GROWTH */\n\t\t\t{\n\t\t\t\tpxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxEndOfStack, pxTaskCode, pvParameters );\n\t\t\t}\n\t\t\t#endif /* portSTACK_GROWTH */\n\t\t}\n\t\t#else /* portHAS_STACK_OVERFLOW_CHECKING */\n\t\t{\n\t\t\tpxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters );\n\t\t}\n\t\t#endif /* portHAS_STACK_OVERFLOW_CHECKING */\n\t}\n\t#endif /* portUSING_MPU_WRAPPERS */\n\n\tif( pxCreatedTask != NULL )\n\t{\n\t\t/* Pass the handle out in an anonymous way.  The handle can be used to\n\t\tchange the created task's priority, delete the created task, etc.*/\n\t\t*pxCreatedTask = ( TaskHandle_t ) pxNewTCB;\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )\n{\n\t/* Ensure interrupts don't access the task lists while the lists are being\n\tupdated. */\n\ttaskENTER_CRITICAL();\n\t{\n\t\tuxCurrentNumberOfTasks++;\n\t\tif( pxCurrentTCB == NULL )\n\t\t{\n\t\t\t/* There are no other tasks, or all the other tasks are in\n\t\t\tthe suspended state - make this the current task. */\n\t\t\tpxCurrentTCB = pxNewTCB;\n\n\t\t\tif( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 )\n\t\t\t{\n\t\t\t\t/* This is the first task to be created so do the preliminary\n\t\t\t\tinitialisation required.  We will not recover if this call\n\t\t\t\tfails, but we will report the failure. */\n\t\t\t\tprvInitialiseTaskLists();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* If the scheduler is not already running, make this task the\n\t\t\tcurrent task if it is the highest priority task to be created\n\t\t\tso far. */\n\t\t\tif( xSchedulerRunning == pdFALSE )\n\t\t\t{\n\t\t\t\tif( pxCurrentTCB->uxPriority <= pxNewTCB->uxPriority )\n\t\t\t\t{\n\t\t\t\t\tpxCurrentTCB = pxNewTCB;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\n\t\tuxTaskNumber++;\n\n\t\t#if ( configUSE_TRACE_FACILITY == 1 )\n\t\t{\n\t\t\t/* Add a counter into the TCB for tracing only. */\n\t\t\tpxNewTCB->uxTCBNumber = uxTaskNumber;\n\t\t}\n\t\t#endif /* configUSE_TRACE_FACILITY */\n\t\ttraceTASK_CREATE( pxNewTCB );\n\n\t\tprvAddTaskToReadyList( pxNewTCB );\n\n\t\tportSETUP_TCB( pxNewTCB );\n\t}\n\ttaskEXIT_CRITICAL();\n\n\tif( xSchedulerRunning != pdFALSE )\n\t{\n\t\t/* If the created task is of a higher priority than the current task\n\t\tthen it should run now. */\n\t\tif( pxCurrentTCB->uxPriority < pxNewTCB->uxPriority )\n\t\t{\n\t\t\ttaskYIELD_IF_USING_PREEMPTION();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n}\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskDelete == 1 )\n\n\tvoid vTaskDelete( TaskHandle_t xTaskToDelete )\n\t{\n\tTCB_t *pxTCB;\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* If null is passed in here then it is the calling task that is\n\t\t\tbeing deleted. */\n\t\t\tpxTCB = prvGetTCBFromHandle( xTaskToDelete );\n\n\t\t\t/* Remove task from the ready/delayed list. */\n\t\t\tif( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\ttaskRESET_READY_PRIORITY( pxTCB->uxPriority );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\t/* Is the task waiting on an event also? */\n\t\t\tif( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL )\n\t\t\t{\n\t\t\t\t( void ) uxListRemove( &( pxTCB->xEventListItem ) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\t/* Increment the uxTaskNumber also so kernel aware debuggers can\n\t\t\tdetect that the task lists need re-generating.  This is done before\n\t\t\tportPRE_TASK_DELETE_HOOK() as in the Windows port that macro will\n\t\t\tnot return. */\n\t\t\tuxTaskNumber++;\n\n\t\t\tif( pxTCB == pxCurrentTCB )\n\t\t\t{\n\t\t\t\t/* A task is deleting itself.  This cannot complete within the\n\t\t\t\ttask itself, as a context switch to another task is required.\n\t\t\t\tPlace the task in the termination list.  The idle task will\n\t\t\t\tcheck the termination list and free up any memory allocated by\n\t\t\t\tthe scheduler for the TCB and stack of the deleted task. */\n\t\t\t\tvListInsertEnd( &xTasksWaitingTermination, &( pxTCB->xStateListItem ) );\n\n\t\t\t\t/* Increment the ucTasksDeleted variable so the idle task knows\n\t\t\t\tthere is a task that has been deleted and that it should therefore\n\t\t\t\tcheck the xTasksWaitingTermination list. */\n\t\t\t\t++uxDeletedTasksWaitingCleanUp;\n\n\t\t\t\t/* Call the delete hook before portPRE_TASK_DELETE_HOOK() as\n\t\t\t\tportPRE_TASK_DELETE_HOOK() does not return in the Win32 port. */\n\t\t\t\ttraceTASK_DELETE( pxTCB );\n\n\t\t\t\t/* The pre-delete hook is primarily for the Windows simulator,\n\t\t\t\tin which Windows specific clean up operations are performed,\n\t\t\t\tafter which it is not possible to yield away from this task -\n\t\t\t\thence xYieldPending is used to latch that a context switch is\n\t\t\t\trequired. */\n\t\t\t\tportPRE_TASK_DELETE_HOOK( pxTCB, &xYieldPending );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t--uxCurrentNumberOfTasks;\n\t\t\t\ttraceTASK_DELETE( pxTCB );\n\t\t\t\tprvDeleteTCB( pxTCB );\n\n\t\t\t\t/* Reset the next expected unblock time in case it referred to\n\t\t\t\tthe task that has just been deleted. */\n\t\t\t\tprvResetNextTaskUnblockTime();\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\t/* Force a reschedule if it is the currently running task that has just\n\t\tbeen deleted. */\n\t\tif( xSchedulerRunning != pdFALSE )\n\t\t{\n\t\t\tif( pxTCB == pxCurrentTCB )\n\t\t\t{\n\t\t\t\tconfigASSERT( uxSchedulerSuspended == 0 );\n\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t}\n\n#endif /* INCLUDE_vTaskDelete */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskDelayUntil == 1 )\n\n\tvoid vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement )\n\t{\n\tTickType_t xTimeToWake;\n\tBaseType_t xAlreadyYielded, xShouldDelay = pdFALSE;\n\n\t\tconfigASSERT( pxPreviousWakeTime );\n\t\tconfigASSERT( ( xTimeIncrement > 0U ) );\n\t\tconfigASSERT( uxSchedulerSuspended == 0 );\n\n\t\tvTaskSuspendAll();\n\t\t{\n\t\t\t/* Minor optimisation.  The tick count cannot change in this\n\t\t\tblock. */\n\t\t\tconst TickType_t xConstTickCount = xTickCount;\n\n\t\t\t/* Generate the tick time at which the task wants to wake. */\n\t\t\txTimeToWake = *pxPreviousWakeTime + xTimeIncrement;\n\n\t\t\tif( xConstTickCount < *pxPreviousWakeTime )\n\t\t\t{\n\t\t\t\t/* The tick count has overflowed since this function was\n\t\t\t\tlasted called.  In this case the only time we should ever\n\t\t\t\tactually delay is if the wake time has also\toverflowed,\n\t\t\t\tand the wake time is greater than the tick time.  When this\n\t\t\t\tis the case it is as if neither time had overflowed. */\n\t\t\t\tif( ( xTimeToWake < *pxPreviousWakeTime ) && ( xTimeToWake > xConstTickCount ) )\n\t\t\t\t{\n\t\t\t\t\txShouldDelay = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* The tick time has not overflowed.  In this case we will\n\t\t\t\tdelay if either the wake time has overflowed, and/or the\n\t\t\t\ttick time is less than the wake time. */\n\t\t\t\tif( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xConstTickCount ) )\n\t\t\t\t{\n\t\t\t\t\txShouldDelay = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* Update the wake time ready for the next call. */\n\t\t\t*pxPreviousWakeTime = xTimeToWake;\n\n\t\t\tif( xShouldDelay != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceTASK_DELAY_UNTIL( xTimeToWake );\n\n\t\t\t\t/* prvAddCurrentTaskToDelayedList() needs the block time, not\n\t\t\t\tthe time to wake, so subtract the current tick count. */\n\t\t\t\tprvAddCurrentTaskToDelayedList( xTimeToWake - xConstTickCount, pdFALSE );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\txAlreadyYielded = xTaskResumeAll();\n\n\t\t/* Force a reschedule if xTaskResumeAll has not already done so, we may\n\t\thave put ourselves to sleep. */\n\t\tif( xAlreadyYielded == pdFALSE )\n\t\t{\n\t\t\tportYIELD_WITHIN_API();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* INCLUDE_vTaskDelayUntil */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskDelay == 1 )\n\n\tvoid vTaskDelay( const TickType_t xTicksToDelay )\n\t{\n\tBaseType_t xAlreadyYielded = pdFALSE;\n\n\t\t/* A delay time of zero just forces a reschedule. */\n\t\tif( xTicksToDelay > ( TickType_t ) 0U )\n\t\t{\n\t\t\tconfigASSERT( uxSchedulerSuspended == 0 );\n\t\t\tvTaskSuspendAll();\n\t\t\t{\n\t\t\t\ttraceTASK_DELAY();\n\n\t\t\t\t/* A task that is removed from the event list while the\n\t\t\t\tscheduler is suspended will not get placed in the ready\n\t\t\t\tlist or removed from the blocked list until the scheduler\n\t\t\t\tis resumed.\n\n\t\t\t\tThis task cannot be in an event list as it is the currently\n\t\t\t\texecuting task. */\n\t\t\t\tprvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE );\n\t\t\t}\n\t\t\txAlreadyYielded = xTaskResumeAll();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\t/* Force a reschedule if xTaskResumeAll has not already done so, we may\n\t\thave put ourselves to sleep. */\n\t\tif( xAlreadyYielded == pdFALSE )\n\t\t{\n\t\t\tportYIELD_WITHIN_API();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* INCLUDE_vTaskDelay */\n/*-----------------------------------------------------------*/\n\n#if( ( INCLUDE_eTaskGetState == 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_xTaskAbortDelay == 1 ) )\n\n\teTaskState eTaskGetState( TaskHandle_t xTask )\n\t{\n\teTaskState eReturn;\n\tList_t const * pxStateList, *pxDelayedList, *pxOverflowedDelayedList;\n\tconst TCB_t * const pxTCB = xTask;\n\n\t\tconfigASSERT( pxTCB );\n\n\t\tif( pxTCB == pxCurrentTCB )\n\t\t{\n\t\t\t/* The task calling this function is querying its own state. */\n\t\t\teReturn = eRunning;\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\tpxStateList = listLIST_ITEM_CONTAINER( &( pxTCB->xStateListItem ) );\n\t\t\t\tpxDelayedList = pxDelayedTaskList;\n\t\t\t\tpxOverflowedDelayedList = pxOverflowDelayedTaskList;\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\n\t\t\tif( ( pxStateList == pxDelayedList ) || ( pxStateList == pxOverflowedDelayedList ) )\n\t\t\t{\n\t\t\t\t/* The task being queried is referenced from one of the Blocked\n\t\t\t\tlists. */\n\t\t\t\teReturn = eBlocked;\n\t\t\t}\n\n\t\t\t#if ( INCLUDE_vTaskSuspend == 1 )\n\t\t\t\telse if( pxStateList == &xSuspendedTaskList )\n\t\t\t\t{\n\t\t\t\t\t/* The task being queried is referenced from the suspended\n\t\t\t\t\tlist.  Is it genuinely suspended or is it blocked\n\t\t\t\t\tindefinitely? */\n\t\t\t\t\tif( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\t#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* The task does not appear on the event list item of\n\t\t\t\t\t\t\tand of the RTOS objects, but could still be in the\n\t\t\t\t\t\t\tblocked state if it is waiting on its notification\n\t\t\t\t\t\t\trather than waiting on an object. */\n\t\t\t\t\t\t\tif( pxTCB->ucNotifyState == taskWAITING_NOTIFICATION )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teReturn = eBlocked;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teReturn = eSuspended;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\teReturn = eSuspended;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\teReturn = eBlocked;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t#endif\n\n\t\t\t#if ( INCLUDE_vTaskDelete == 1 )\n\t\t\t\telse if( ( pxStateList == &xTasksWaitingTermination ) || ( pxStateList == NULL ) )\n\t\t\t\t{\n\t\t\t\t\t/* The task being queried is referenced from the deleted\n\t\t\t\t\ttasks list, or it is not referenced from any lists at\n\t\t\t\t\tall. */\n\t\t\t\t\teReturn = eDeleted;\n\t\t\t\t}\n\t\t\t#endif\n\n\t\t\telse /*lint !e525 Negative indentation is intended to make use of pre-processor clearer. */\n\t\t\t{\n\t\t\t\t/* If the task is not in any other state, it must be in the\n\t\t\t\tReady (including pending ready) state. */\n\t\t\t\teReturn = eReady;\n\t\t\t}\n\t\t}\n\n\t\treturn eReturn;\n\t} /*lint !e818 xTask cannot be a pointer to const because it is a typedef. */\n\n#endif /* INCLUDE_eTaskGetState */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_uxTaskPriorityGet == 1 )\n\n\tUBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask )\n\t{\n\tTCB_t const *pxTCB;\n\tUBaseType_t uxReturn;\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* If null is passed in here then it is the priority of the task\n\t\t\tthat called uxTaskPriorityGet() that is being queried. */\n\t\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\t\t\tuxReturn = pxTCB->uxPriority;\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn uxReturn;\n\t}\n\n#endif /* INCLUDE_uxTaskPriorityGet */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_uxTaskPriorityGet == 1 )\n\n\tUBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask )\n\t{\n\tTCB_t const *pxTCB;\n\tUBaseType_t uxReturn, uxSavedInterruptState;\n\n\t\t/* RTOS ports that support interrupt nesting have the concept of a\n\t\tmaximum\tsystem call (or maximum API call) interrupt priority.\n\t\tInterrupts that are\tabove the maximum system call priority are keep\n\t\tpermanently enabled, even when the RTOS kernel is in a critical section,\n\t\tbut cannot make any calls to FreeRTOS API functions.  If configASSERT()\n\t\tis defined in FreeRTOSConfig.h then\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\t\tfailure if a FreeRTOS API function is called from an interrupt that has\n\t\tbeen assigned a priority above the configured maximum system call\n\t\tpriority.  Only FreeRTOS functions that end in FromISR can be called\n\t\tfrom interrupts\tthat have been assigned a priority at or (logically)\n\t\tbelow the maximum system call interrupt priority.  FreeRTOS maintains a\n\t\tseparate interrupt safe API to ensure interrupt entry is as fast and as\n\t\tsimple as possible.  More information (albeit Cortex-M specific) is\n\t\tprovided on the following link:\n\t\thttps://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\t\tuxSavedInterruptState = portSET_INTERRUPT_MASK_FROM_ISR();\n\t\t{\n\t\t\t/* If null is passed in here then it is the priority of the calling\n\t\t\ttask that is being queried. */\n\t\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\t\t\tuxReturn = pxTCB->uxPriority;\n\t\t}\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptState );\n\n\t\treturn uxReturn;\n\t}\n\n#endif /* INCLUDE_uxTaskPriorityGet */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskPrioritySet == 1 )\n\n\tvoid vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority )\n\t{\n\tTCB_t *pxTCB;\n\tUBaseType_t uxCurrentBasePriority, uxPriorityUsedOnEntry;\n\tBaseType_t xYieldRequired = pdFALSE;\n\n\t\tconfigASSERT( ( uxNewPriority < configMAX_PRIORITIES ) );\n\n\t\t/* Ensure the new priority is valid. */\n\t\tif( uxNewPriority >= ( UBaseType_t ) configMAX_PRIORITIES )\n\t\t{\n\t\t\tuxNewPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* If null is passed in here then it is the priority of the calling\n\t\t\ttask that is being changed. */\n\t\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\t\ttraceTASK_PRIORITY_SET( pxTCB, uxNewPriority );\n\n\t\t\t#if ( configUSE_MUTEXES == 1 )\n\t\t\t{\n\t\t\t\tuxCurrentBasePriority = pxTCB->uxBasePriority;\n\t\t\t}\n\t\t\t#else\n\t\t\t{\n\t\t\t\tuxCurrentBasePriority = pxTCB->uxPriority;\n\t\t\t}\n\t\t\t#endif\n\n\t\t\tif( uxCurrentBasePriority != uxNewPriority )\n\t\t\t{\n\t\t\t\t/* The priority change may have readied a task of higher\n\t\t\t\tpriority than the calling task. */\n\t\t\t\tif( uxNewPriority > uxCurrentBasePriority )\n\t\t\t\t{\n\t\t\t\t\tif( pxTCB != pxCurrentTCB )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The priority of a task other than the currently\n\t\t\t\t\t\trunning task is being raised.  Is the priority being\n\t\t\t\t\t\traised above that of the running task? */\n\t\t\t\t\t\tif( uxNewPriority >= pxCurrentTCB->uxPriority )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txYieldRequired = pdTRUE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The priority of the running task is being raised,\n\t\t\t\t\t\tbut the running task must already be the highest\n\t\t\t\t\t\tpriority task able to run so no yield is required. */\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( pxTCB == pxCurrentTCB )\n\t\t\t\t{\n\t\t\t\t\t/* Setting the priority of the running task down means\n\t\t\t\t\tthere may now be another task of higher priority that\n\t\t\t\t\tis ready to execute. */\n\t\t\t\t\txYieldRequired = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* Setting the priority of any other task down does not\n\t\t\t\t\trequire a yield as the running task must be above the\n\t\t\t\t\tnew priority of the task being modified. */\n\t\t\t\t}\n\n\t\t\t\t/* Remember the ready list the task might be referenced from\n\t\t\t\tbefore its uxPriority member is changed so the\n\t\t\t\ttaskRESET_READY_PRIORITY() macro can function correctly. */\n\t\t\t\tuxPriorityUsedOnEntry = pxTCB->uxPriority;\n\n\t\t\t\t#if ( configUSE_MUTEXES == 1 )\n\t\t\t\t{\n\t\t\t\t\t/* Only change the priority being used if the task is not\n\t\t\t\t\tcurrently using an inherited priority. */\n\t\t\t\t\tif( pxTCB->uxBasePriority == pxTCB->uxPriority )\n\t\t\t\t\t{\n\t\t\t\t\t\tpxTCB->uxPriority = uxNewPriority;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* The base priority gets set whatever. */\n\t\t\t\t\tpxTCB->uxBasePriority = uxNewPriority;\n\t\t\t\t}\n\t\t\t\t#else\n\t\t\t\t{\n\t\t\t\t\tpxTCB->uxPriority = uxNewPriority;\n\t\t\t\t}\n\t\t\t\t#endif\n\n\t\t\t\t/* Only reset the event list item value if the value is not\n\t\t\t\tbeing used for anything else. */\n\t\t\t\tif( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL )\n\t\t\t\t{\n\t\t\t\t\tlistSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxNewPriority ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\t/* If the task is in the blocked or suspended list we need do\n\t\t\t\tnothing more than change its priority variable. However, if\n\t\t\t\tthe task is in a ready list it needs to be removed and placed\n\t\t\t\tin the list appropriate to its new priority. */\n\t\t\t\tif( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* The task is currently in its ready list - remove before\n\t\t\t\t\tadding it to it's new ready list.  As we are in a critical\n\t\t\t\t\tsection we can do this even if the scheduler is suspended. */\n\t\t\t\t\tif( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* It is known that the task is in its ready list so\n\t\t\t\t\t\tthere is no need to check again and the port level\n\t\t\t\t\t\treset macro can be called directly. */\n\t\t\t\t\t\tportRESET_READY_PRIORITY( uxPriorityUsedOnEntry, uxTopReadyPriority );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\tif( xYieldRequired != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\ttaskYIELD_IF_USING_PREEMPTION();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\t/* Remove compiler warning about unused variables when the port\n\t\t\t\toptimised task selection is not being used. */\n\t\t\t\t( void ) uxPriorityUsedOnEntry;\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\t}\n\n#endif /* INCLUDE_vTaskPrioritySet */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskSuspend == 1 )\n\n\tvoid vTaskSuspend( TaskHandle_t xTaskToSuspend )\n\t{\n\tTCB_t *pxTCB;\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* If null is passed in here then it is the running task that is\n\t\t\tbeing suspended. */\n\t\t\tpxTCB = prvGetTCBFromHandle( xTaskToSuspend );\n\n\t\t\ttraceTASK_SUSPEND( pxTCB );\n\n\t\t\t/* Remove task from the ready/delayed list and place in the\n\t\t\tsuspended list. */\n\t\t\tif( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )\n\t\t\t{\n\t\t\t\ttaskRESET_READY_PRIORITY( pxTCB->uxPriority );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\t/* Is the task waiting on an event also? */\n\t\t\tif( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL )\n\t\t\t{\n\t\t\t\t( void ) uxListRemove( &( pxTCB->xEventListItem ) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\tvListInsertEnd( &xSuspendedTaskList, &( pxTCB->xStateListItem ) );\n\n\t\t\t#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\t\t\t{\n\t\t\t\tif( pxTCB->ucNotifyState == taskWAITING_NOTIFICATION )\n\t\t\t\t{\n\t\t\t\t\t/* The task was blocked to wait for a notification, but is\n\t\t\t\t\tnow suspended, so no notification was received. */\n\t\t\t\t\tpxTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION;\n\t\t\t\t}\n\t\t\t}\n\t\t\t#endif\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\tif( xSchedulerRunning != pdFALSE )\n\t\t{\n\t\t\t/* Reset the next expected unblock time in case it referred to the\n\t\t\ttask that is now in the Suspended state. */\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\tprvResetNextTaskUnblockTime();\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\tif( pxTCB == pxCurrentTCB )\n\t\t{\n\t\t\tif( xSchedulerRunning != pdFALSE )\n\t\t\t{\n\t\t\t\t/* The current task has just been suspended. */\n\t\t\t\tconfigASSERT( uxSchedulerSuspended == 0 );\n\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* The scheduler is not running, but the task that was pointed\n\t\t\t\tto by pxCurrentTCB has just been suspended and pxCurrentTCB\n\t\t\t\tmust be adjusted to point to a different task. */\n\t\t\t\tif( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == uxCurrentNumberOfTasks ) /*lint !e931 Right has no side effect, just volatile. */\n\t\t\t\t{\n\t\t\t\t\t/* No other tasks are ready, so set pxCurrentTCB back to\n\t\t\t\t\tNULL so when the next task is created pxCurrentTCB will\n\t\t\t\t\tbe set to point to it no matter what its relative priority\n\t\t\t\t\tis. */\n\t\t\t\t\tpxCurrentTCB = NULL;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvTaskSwitchContext();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* INCLUDE_vTaskSuspend */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskSuspend == 1 )\n\n\tstatic BaseType_t prvTaskIsTaskSuspended( const TaskHandle_t xTask )\n\t{\n\tBaseType_t xReturn = pdFALSE;\n\tconst TCB_t * const pxTCB = xTask;\n\n\t\t/* Accesses xPendingReadyList so must be called from a critical\n\t\tsection. */\n\n\t\t/* It does not make sense to check if the calling task is suspended. */\n\t\tconfigASSERT( xTask );\n\n\t\t/* Is the task being resumed actually in the suspended list? */\n\t\tif( listIS_CONTAINED_WITHIN( &xSuspendedTaskList, &( pxTCB->xStateListItem ) ) != pdFALSE )\n\t\t{\n\t\t\t/* Has the task already been resumed from within an ISR? */\n\t\t\tif( listIS_CONTAINED_WITHIN( &xPendingReadyList, &( pxTCB->xEventListItem ) ) == pdFALSE )\n\t\t\t{\n\t\t\t\t/* Is it in the suspended list because it is in the\tSuspended\n\t\t\t\tstate, or because is is blocked with no timeout? */\n\t\t\t\tif( listIS_CONTAINED_WITHIN( NULL, &( pxTCB->xEventListItem ) ) != pdFALSE ) /*lint !e961.  The cast is only redundant when NULL is used. */\n\t\t\t\t{\n\t\t\t\t\txReturn = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn xReturn;\n\t} /*lint !e818 xTask cannot be a pointer to const because it is a typedef. */\n\n#endif /* INCLUDE_vTaskSuspend */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskSuspend == 1 )\n\n\tvoid vTaskResume( TaskHandle_t xTaskToResume )\n\t{\n\tTCB_t * const pxTCB = xTaskToResume;\n\n\t\t/* It does not make sense to resume the calling task. */\n\t\tconfigASSERT( xTaskToResume );\n\n\t\t/* The parameter cannot be NULL as it is impossible to resume the\n\t\tcurrently executing task. */\n\t\tif( ( pxTCB != pxCurrentTCB ) && ( pxTCB != NULL ) )\n\t\t{\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\tif( prvTaskIsTaskSuspended( pxTCB ) != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\ttraceTASK_RESUME( pxTCB );\n\n\t\t\t\t\t/* The ready list can be accessed even if the scheduler is\n\t\t\t\t\tsuspended because this is inside a critical section. */\n\t\t\t\t\t( void ) uxListRemove(  &( pxTCB->xStateListItem ) );\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\n\t\t\t\t\t/* A higher priority task may have just been resumed. */\n\t\t\t\t\tif( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* This yield may not cause the task just resumed to run,\n\t\t\t\t\t\tbut will leave the lists in the correct state for the\n\t\t\t\t\t\tnext yield. */\n\t\t\t\t\t\ttaskYIELD_IF_USING_PREEMPTION();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* INCLUDE_vTaskSuspend */\n\n/*-----------------------------------------------------------*/\n\n#if ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) )\n\n\tBaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume )\n\t{\n\tBaseType_t xYieldRequired = pdFALSE;\n\tTCB_t * const pxTCB = xTaskToResume;\n\tUBaseType_t uxSavedInterruptStatus;\n\n\t\tconfigASSERT( xTaskToResume );\n\n\t\t/* RTOS ports that support interrupt nesting have the concept of a\n\t\tmaximum\tsystem call (or maximum API call) interrupt priority.\n\t\tInterrupts that are\tabove the maximum system call priority are keep\n\t\tpermanently enabled, even when the RTOS kernel is in a critical section,\n\t\tbut cannot make any calls to FreeRTOS API functions.  If configASSERT()\n\t\tis defined in FreeRTOSConfig.h then\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\t\tfailure if a FreeRTOS API function is called from an interrupt that has\n\t\tbeen assigned a priority above the configured maximum system call\n\t\tpriority.  Only FreeRTOS functions that end in FromISR can be called\n\t\tfrom interrupts\tthat have been assigned a priority at or (logically)\n\t\tbelow the maximum system call interrupt priority.  FreeRTOS maintains a\n\t\tseparate interrupt safe API to ensure interrupt entry is as fast and as\n\t\tsimple as possible.  More information (albeit Cortex-M specific) is\n\t\tprovided on the following link:\n\t\thttps://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\t\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t\t{\n\t\t\tif( prvTaskIsTaskSuspended( pxTCB ) != pdFALSE )\n\t\t\t{\n\t\t\t\ttraceTASK_RESUME_FROM_ISR( pxTCB );\n\n\t\t\t\t/* Check the ready lists can be accessed. */\n\t\t\t\tif( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* Ready lists can be accessed so move the task from the\n\t\t\t\t\tsuspended list to the ready list directly. */\n\t\t\t\t\tif( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )\n\t\t\t\t\t{\n\t\t\t\t\t\txYieldRequired = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* The delayed or ready lists cannot be accessed so the task\n\t\t\t\t\tis held in the pending ready list until the scheduler is\n\t\t\t\t\tunsuspended. */\n\t\t\t\t\tvListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\t\treturn xYieldRequired;\n\t}\n\n#endif /* ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) */\n/*-----------------------------------------------------------*/\n\nvoid vTaskStartScheduler( void )\n{\nBaseType_t xReturn;\n\n\t/* Add the idle task at the lowest priority. */\n\t#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t{\n\t\tStaticTask_t *pxIdleTaskTCBBuffer = NULL;\n\t\tStackType_t *pxIdleTaskStackBuffer = NULL;\n\t\tuint32_t ulIdleTaskStackSize;\n\n\t\t/* The Idle task is created using user provided RAM - obtain the\n\t\taddress of the RAM then create the idle task. */\n\t\tvApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &ulIdleTaskStackSize );\n\t\txIdleTaskHandle = xTaskCreateStatic(\tprvIdleTask,\n\t\t\t\t\t\t\t\t\t\t\t\tconfigIDLE_TASK_NAME,\n\t\t\t\t\t\t\t\t\t\t\t\tulIdleTaskStackSize,\n\t\t\t\t\t\t\t\t\t\t\t\t( void * ) NULL, /*lint !e961.  The cast is not redundant for all compilers. */\n\t\t\t\t\t\t\t\t\t\t\t\tportPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */\n\t\t\t\t\t\t\t\t\t\t\t\tpxIdleTaskStackBuffer,\n\t\t\t\t\t\t\t\t\t\t\t\tpxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */\n\n\t\tif( xIdleTaskHandle != NULL )\n\t\t{\n\t\t\txReturn = pdPASS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFAIL;\n\t\t}\n\t}\n\t#else\n\t{\n\t\t/* The Idle task is being created using dynamically allocated RAM. */\n\t\txReturn = xTaskCreate(\tprvIdleTask,\n\t\t\t\t\t\t\t\tconfigIDLE_TASK_NAME,\n\t\t\t\t\t\t\t\tconfigMINIMAL_STACK_SIZE,\n\t\t\t\t\t\t\t\t( void * ) NULL,\n\t\t\t\t\t\t\t\tportPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */\n\t\t\t\t\t\t\t\t&xIdleTaskHandle ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */\n\t}\n\t#endif /* configSUPPORT_STATIC_ALLOCATION */\n\n\t#if ( configUSE_TIMERS == 1 )\n\t{\n\t\tif( xReturn == pdPASS )\n\t\t{\n\t\t\txReturn = xTimerCreateTimerTask();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\t#endif /* configUSE_TIMERS */\n\n\tif( xReturn == pdPASS )\n\t{\n\t\t/* freertos_tasks_c_additions_init() should only be called if the user\n\t\tdefinable macro FREERTOS_TASKS_C_ADDITIONS_INIT() is defined, as that is\n\t\tthe only macro called by the function. */\n\t\t#ifdef FREERTOS_TASKS_C_ADDITIONS_INIT\n\t\t{\n\t\t\tfreertos_tasks_c_additions_init();\n\t\t}\n\t\t#endif\n\n\t\t/* Interrupts are turned off here, to ensure a tick does not occur\n\t\tbefore or during the call to xPortStartScheduler().  The stacks of\n\t\tthe created tasks contain a status word with interrupts switched on\n\t\tso interrupts will automatically get re-enabled when the first task\n\t\tstarts to run. */\n\t\tportDISABLE_INTERRUPTS();\n\n\t\t#if ( configUSE_NEWLIB_REENTRANT == 1 )\n\t\t{\n\t\t\t/* Switch Newlib's _impure_ptr variable to point to the _reent\n\t\t\tstructure specific to the task that will run first.\n\t\t\tSee the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html\n\t\t\tfor additional information. */\n\t\t\t_impure_ptr = &( pxCurrentTCB->xNewLib_reent );\n\t\t}\n\t\t#endif /* configUSE_NEWLIB_REENTRANT */\n\n\t\txNextTaskUnblockTime = portMAX_DELAY;\n\t\txSchedulerRunning = pdTRUE;\n\t\txTickCount = ( TickType_t ) configINITIAL_TICK_COUNT;\n\n\t\t/* If configGENERATE_RUN_TIME_STATS is defined then the following\n\t\tmacro must be defined to configure the timer/counter used to generate\n\t\tthe run time counter time base.   NOTE:  If configGENERATE_RUN_TIME_STATS\n\t\tis set to 0 and the following line fails to build then ensure you do not\n\t\thave portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() defined in your\n\t\tFreeRTOSConfig.h file. */\n\t\tportCONFIGURE_TIMER_FOR_RUN_TIME_STATS();\n\n\t\ttraceTASK_SWITCHED_IN();\n\n\t\t/* Setting up the timer tick is hardware specific and thus in the\n\t\tportable interface. */\n\t\tif( xPortStartScheduler() != pdFALSE )\n\t\t{\n\t\t\t/* Should not reach here as if the scheduler is running the\n\t\t\tfunction will not return. */\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Should only reach here if a task calls xTaskEndScheduler(). */\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* This line will only be reached if the kernel could not be started,\n\t\tbecause there was not enough FreeRTOS heap to create the idle task\n\t\tor the timer task. */\n\t\tconfigASSERT( xReturn != errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY );\n\t}\n\n\t/* Prevent compiler warnings if INCLUDE_xTaskGetIdleTaskHandle is set to 0,\n\tmeaning xIdleTaskHandle is not used anywhere else. */\n\t( void ) xIdleTaskHandle;\n}\n/*-----------------------------------------------------------*/\n\nvoid vTaskEndScheduler( void )\n{\n\t/* Stop the scheduler interrupts and call the portable scheduler end\n\troutine so the original ISRs can be restored if necessary.  The port\n\tlayer must ensure interrupts enable\tbit is left in the correct state. */\n\tportDISABLE_INTERRUPTS();\n\txSchedulerRunning = pdFALSE;\n\tvPortEndScheduler();\n}\n/*----------------------------------------------------------*/\n\nvoid vTaskSuspendAll( void )\n{\n\t/* A critical section is not required as the variable is of type\n\tBaseType_t.  Please read Richard Barry's reply in the following link to a\n\tpost in the FreeRTOS support forum before reporting this as a bug! -\n\thttp://goo.gl/wu4acr */\n\n\t/* portSOFRWARE_BARRIER() is only implemented for emulated/simulated ports that\n\tdo not otherwise exhibit real time behaviour. */\n\tportSOFTWARE_BARRIER();\n\n\t/* The scheduler is suspended if uxSchedulerSuspended is non-zero.  An increment\n\tis used to allow calls to vTaskSuspendAll() to nest. */\n\t++uxSchedulerSuspended;\n\n\t/* Enforces ordering for ports and optimised compilers that may otherwise place\n\tthe above increment elsewhere. */\n\tportMEMORY_BARRIER();\n}\n/*----------------------------------------------------------*/\n\n#if ( configUSE_TICKLESS_IDLE != 0 )\n\n\tstatic TickType_t prvGetExpectedIdleTime( void )\n\t{\n\tTickType_t xReturn;\n\tUBaseType_t uxHigherPriorityReadyTasks = pdFALSE;\n\n\t\t/* uxHigherPriorityReadyTasks takes care of the case where\n\t\tconfigUSE_PREEMPTION is 0, so there may be tasks above the idle priority\n\t\ttask that are in the Ready state, even though the idle task is\n\t\trunning. */\n\t\t#if( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 )\n\t\t{\n\t\t\tif( uxTopReadyPriority > tskIDLE_PRIORITY )\n\t\t\t{\n\t\t\t\tuxHigherPriorityReadyTasks = pdTRUE;\n\t\t\t}\n\t\t}\n\t\t#else\n\t\t{\n\t\t\tconst UBaseType_t uxLeastSignificantBit = ( UBaseType_t ) 0x01;\n\n\t\t\t/* When port optimised task selection is used the uxTopReadyPriority\n\t\t\tvariable is used as a bit map.  If bits other than the least\n\t\t\tsignificant bit are set then there are tasks that have a priority\n\t\t\tabove the idle priority that are in the Ready state.  This takes\n\t\t\tcare of the case where the co-operative scheduler is in use. */\n\t\t\tif( uxTopReadyPriority > uxLeastSignificantBit )\n\t\t\t{\n\t\t\t\tuxHigherPriorityReadyTasks = pdTRUE;\n\t\t\t}\n\t\t}\n\t\t#endif\n\n\t\tif( pxCurrentTCB->uxPriority > tskIDLE_PRIORITY )\n\t\t{\n\t\t\txReturn = 0;\n\t\t}\n\t\telse if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > 1 )\n\t\t{\n\t\t\t/* There are other idle priority tasks in the ready state.  If\n\t\t\ttime slicing is used then the very next tick interrupt must be\n\t\t\tprocessed. */\n\t\t\txReturn = 0;\n\t\t}\n\t\telse if( uxHigherPriorityReadyTasks != pdFALSE )\n\t\t{\n\t\t\t/* There are tasks in the Ready state that have a priority above the\n\t\t\tidle priority.  This path can only be reached if\n\t\t\tconfigUSE_PREEMPTION is 0. */\n\t\t\txReturn = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = xNextTaskUnblockTime - xTickCount;\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_TICKLESS_IDLE */\n/*----------------------------------------------------------*/\n\nBaseType_t xTaskResumeAll( void )\n{\nTCB_t *pxTCB = NULL;\nBaseType_t xAlreadyYielded = pdFALSE;\n\n\t/* If uxSchedulerSuspended is zero then this function does not match a\n\tprevious call to vTaskSuspendAll(). */\n\tconfigASSERT( uxSchedulerSuspended );\n\n\t/* It is possible that an ISR caused a task to be removed from an event\n\tlist while the scheduler was suspended.  If this was the case then the\n\tremoved task will have been added to the xPendingReadyList.  Once the\n\tscheduler has been resumed it is safe to move all the pending ready\n\ttasks from this list into their appropriate ready list. */\n\ttaskENTER_CRITICAL();\n\t{\n\t\t--uxSchedulerSuspended;\n\n\t\tif( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )\n\t\t{\n\t\t\tif( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U )\n\t\t\t{\n\t\t\t\t/* Move any readied tasks from the pending list into the\n\t\t\t\tappropriate ready list. */\n\t\t\t\twhile( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tpxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xEventListItem ) );\n\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\n\t\t\t\t\t/* If the moved task has a priority higher than the current\n\t\t\t\t\ttask then a yield must be performed. */\n\t\t\t\t\tif( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )\n\t\t\t\t\t{\n\t\t\t\t\t\txYieldPending = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif( pxTCB != NULL )\n\t\t\t\t{\n\t\t\t\t\t/* A task was unblocked while the scheduler was suspended,\n\t\t\t\t\twhich may have prevented the next unblock time from being\n\t\t\t\t\tre-calculated, in which case re-calculate it now.  Mainly\n\t\t\t\t\timportant for low power tickless implementations, where\n\t\t\t\t\tthis can prevent an unnecessary exit from low power\n\t\t\t\t\tstate. */\n\t\t\t\t\tprvResetNextTaskUnblockTime();\n\t\t\t\t}\n\n\t\t\t\t/* If any ticks occurred while the scheduler was suspended then\n\t\t\t\tthey should be processed now.  This ensures the tick count does\n\t\t\t\tnot\tslip, and that any delayed tasks are resumed at the correct\n\t\t\t\ttime. */\n\t\t\t\t{\n\t\t\t\t\tTickType_t xPendedCounts = xPendedTicks; /* Non-volatile copy. */\n\n\t\t\t\t\tif( xPendedCounts > ( TickType_t ) 0U )\n\t\t\t\t\t{\n\t\t\t\t\t\tdo\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( xTaskIncrementTick() != pdFALSE )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\txYieldPending = pdTRUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t--xPendedCounts;\n\t\t\t\t\t\t} while( xPendedCounts > ( TickType_t ) 0U );\n\n\t\t\t\t\t\txPendedTicks = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif( xYieldPending != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t#if( configUSE_PREEMPTION != 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\txAlreadyYielded = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t\ttaskYIELD_IF_USING_PREEMPTION();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn xAlreadyYielded;\n}\n/*-----------------------------------------------------------*/\n\nTickType_t xTaskGetTickCount( void )\n{\nTickType_t xTicks;\n\n\t/* Critical section required if running on a 16 bit processor. */\n\tportTICK_TYPE_ENTER_CRITICAL();\n\t{\n\t\txTicks = xTickCount;\n\t}\n\tportTICK_TYPE_EXIT_CRITICAL();\n\n\treturn xTicks;\n}\n/*-----------------------------------------------------------*/\n\nTickType_t xTaskGetTickCountFromISR( void )\n{\nTickType_t xReturn;\nUBaseType_t uxSavedInterruptStatus;\n\n\t/* RTOS ports that support interrupt nesting have the concept of a maximum\n\tsystem call (or maximum API call) interrupt priority.  Interrupts that are\n\tabove the maximum system call priority are kept permanently enabled, even\n\twhen the RTOS kernel is in a critical section, but cannot make any calls to\n\tFreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\n\tthen portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\tfailure if a FreeRTOS API function is called from an interrupt that has been\n\tassigned a priority above the configured maximum system call priority.\n\tOnly FreeRTOS functions that end in FromISR can be called from interrupts\n\tthat have been assigned a priority at or (logically) below the maximum\n\tsystem call\tinterrupt priority.  FreeRTOS maintains a separate interrupt\n\tsafe API to ensure interrupt entry is as fast and as simple as possible.\n\tMore information (albeit Cortex-M specific) is provided on the following\n\tlink: https://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\tuxSavedInterruptStatus = portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR();\n\t{\n\t\txReturn = xTickCount;\n\t}\n\tportTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nUBaseType_t uxTaskGetNumberOfTasks( void )\n{\n\t/* A critical section is not required because the variables are of type\n\tBaseType_t. */\n\treturn uxCurrentNumberOfTasks;\n}\n/*-----------------------------------------------------------*/\n\nchar *pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n{\nTCB_t *pxTCB;\n\n\t/* If null is passed in here then the name of the calling task is being\n\tqueried. */\n\tpxTCB = prvGetTCBFromHandle( xTaskToQuery );\n\tconfigASSERT( pxTCB );\n\treturn &( pxTCB->pcTaskName[ 0 ] );\n}\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_xTaskGetHandle == 1 )\n\n\tstatic TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] )\n\t{\n\tTCB_t *pxNextTCB, *pxFirstTCB, *pxReturn = NULL;\n\tUBaseType_t x;\n\tchar cNextChar;\n\tBaseType_t xBreakLoop;\n\n\t\t/* This function is called with the scheduler suspended. */\n\n\t\tif( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 )\n\t\t{\n\t\t\tlistGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList );  /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\n\t\t\tdo\n\t\t\t{\n\t\t\t\tlistGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\n\t\t\t\t/* Check each character in the name looking for a match or\n\t\t\t\tmismatch. */\n\t\t\t\txBreakLoop = pdFALSE;\n\t\t\t\tfor( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ )\n\t\t\t\t{\n\t\t\t\t\tcNextChar = pxNextTCB->pcTaskName[ x ];\n\n\t\t\t\t\tif( cNextChar != pcNameToQuery[ x ] )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Characters didn't match. */\n\t\t\t\t\t\txBreakLoop = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse if( cNextChar == ( char ) 0x00 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Both strings terminated, a match must have been\n\t\t\t\t\t\tfound. */\n\t\t\t\t\t\tpxReturn = pxNextTCB;\n\t\t\t\t\t\txBreakLoop = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\tif( xBreakLoop != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif( pxReturn != NULL )\n\t\t\t\t{\n\t\t\t\t\t/* The handle has been found. */\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t} while( pxNextTCB != pxFirstTCB );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn pxReturn;\n\t}\n\n#endif /* INCLUDE_xTaskGetHandle */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_xTaskGetHandle == 1 )\n\n\tTaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t{\n\tUBaseType_t uxQueue = configMAX_PRIORITIES;\n\tTCB_t* pxTCB;\n\n\t\t/* Task names will be truncated to configMAX_TASK_NAME_LEN - 1 bytes. */\n\t\tconfigASSERT( strlen( pcNameToQuery ) < configMAX_TASK_NAME_LEN );\n\n\t\tvTaskSuspendAll();\n\t\t{\n\t\t\t/* Search the ready lists. */\n\t\t\tdo\n\t\t\t{\n\t\t\t\tuxQueue--;\n\t\t\t\tpxTCB = prvSearchForNameWithinSingleList( ( List_t * ) &( pxReadyTasksLists[ uxQueue ] ), pcNameToQuery );\n\n\t\t\t\tif( pxTCB != NULL )\n\t\t\t\t{\n\t\t\t\t\t/* Found the handle. */\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t} while( uxQueue > ( UBaseType_t ) tskIDLE_PRIORITY ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\n\t\t\t/* Search the delayed lists. */\n\t\t\tif( pxTCB == NULL )\n\t\t\t{\n\t\t\t\tpxTCB = prvSearchForNameWithinSingleList( ( List_t * ) pxDelayedTaskList, pcNameToQuery );\n\t\t\t}\n\n\t\t\tif( pxTCB == NULL )\n\t\t\t{\n\t\t\t\tpxTCB = prvSearchForNameWithinSingleList( ( List_t * ) pxOverflowDelayedTaskList, pcNameToQuery );\n\t\t\t}\n\n\t\t\t#if ( INCLUDE_vTaskSuspend == 1 )\n\t\t\t{\n\t\t\t\tif( pxTCB == NULL )\n\t\t\t\t{\n\t\t\t\t\t/* Search the suspended list. */\n\t\t\t\t\tpxTCB = prvSearchForNameWithinSingleList( &xSuspendedTaskList, pcNameToQuery );\n\t\t\t\t}\n\t\t\t}\n\t\t\t#endif\n\n\t\t\t#if( INCLUDE_vTaskDelete == 1 )\n\t\t\t{\n\t\t\t\tif( pxTCB == NULL )\n\t\t\t\t{\n\t\t\t\t\t/* Search the deleted list. */\n\t\t\t\t\tpxTCB = prvSearchForNameWithinSingleList( &xTasksWaitingTermination, pcNameToQuery );\n\t\t\t\t}\n\t\t\t}\n\t\t\t#endif\n\t\t}\n\t\t( void ) xTaskResumeAll();\n\n\t\treturn pxTCB;\n\t}\n\n#endif /* INCLUDE_xTaskGetHandle */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tUBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime )\n\t{\n\tUBaseType_t uxTask = 0, uxQueue = configMAX_PRIORITIES;\n\n\t\tvTaskSuspendAll();\n\t\t{\n\t\t\t/* Is there a space in the array for each task in the system? */\n\t\t\tif( uxArraySize >= uxCurrentNumberOfTasks )\n\t\t\t{\n\t\t\t\t/* Fill in an TaskStatus_t structure with information on each\n\t\t\t\ttask in the Ready state. */\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tuxQueue--;\n\t\t\t\t\tuxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &( pxReadyTasksLists[ uxQueue ] ), eReady );\n\n\t\t\t\t} while( uxQueue > ( UBaseType_t ) tskIDLE_PRIORITY ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\n\t\t\t\t/* Fill in an TaskStatus_t structure with information on each\n\t\t\t\ttask in the Blocked state. */\n\t\t\t\tuxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), ( List_t * ) pxDelayedTaskList, eBlocked );\n\t\t\t\tuxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), ( List_t * ) pxOverflowDelayedTaskList, eBlocked );\n\n\t\t\t\t#if( INCLUDE_vTaskDelete == 1 )\n\t\t\t\t{\n\t\t\t\t\t/* Fill in an TaskStatus_t structure with information on\n\t\t\t\t\teach task that has been deleted but not yet cleaned up. */\n\t\t\t\t\tuxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xTasksWaitingTermination, eDeleted );\n\t\t\t\t}\n\t\t\t\t#endif\n\n\t\t\t\t#if ( INCLUDE_vTaskSuspend == 1 )\n\t\t\t\t{\n\t\t\t\t\t/* Fill in an TaskStatus_t structure with information on\n\t\t\t\t\teach task in the Suspended state. */\n\t\t\t\t\tuxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xSuspendedTaskList, eSuspended );\n\t\t\t\t}\n\t\t\t\t#endif\n\n\t\t\t\t#if ( configGENERATE_RUN_TIME_STATS == 1)\n\t\t\t\t{\n\t\t\t\t\tif( pulTotalRunTime != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\t#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE\n\t\t\t\t\t\t\tportALT_GET_RUN_TIME_COUNTER_VALUE( ( *pulTotalRunTime ) );\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\t*pulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();\n\t\t\t\t\t\t#endif\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#else\n\t\t\t\t{\n\t\t\t\t\tif( pulTotalRunTime != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\t*pulTotalRunTime = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t( void ) xTaskResumeAll();\n\n\t\treturn uxTask;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*----------------------------------------------------------*/\n\n#if ( INCLUDE_xTaskGetIdleTaskHandle == 1 )\n\n\tTaskHandle_t xTaskGetIdleTaskHandle( void )\n\t{\n\t\t/* If xTaskGetIdleTaskHandle() is called before the scheduler has been\n\t\tstarted, then xIdleTaskHandle will be NULL. */\n\t\tconfigASSERT( ( xIdleTaskHandle != NULL ) );\n\t\treturn xIdleTaskHandle;\n\t}\n\n#endif /* INCLUDE_xTaskGetIdleTaskHandle */\n/*----------------------------------------------------------*/\n\n/* This conditional compilation should use inequality to 0, not equality to 1.\nThis is to ensure vTaskStepTick() is available when user defined low power mode\nimplementations require configUSE_TICKLESS_IDLE to be set to a value other than\n1. */\n#if ( configUSE_TICKLESS_IDLE != 0 )\n\n\tvoid vTaskStepTick( const TickType_t xTicksToJump )\n\t{\n\t\t/* Correct the tick count value after a period during which the tick\n\t\twas suppressed.  Note this does *not* call the tick hook function for\n\t\teach stepped tick. */\n\t\tconfigASSERT( ( xTickCount + xTicksToJump ) <= xNextTaskUnblockTime );\n\t\txTickCount += xTicksToJump;\n\t\ttraceINCREASE_TICK_COUNT( xTicksToJump );\n\t}\n\n#endif /* configUSE_TICKLESS_IDLE */\n/*----------------------------------------------------------*/\n\nBaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp )\n{\nBaseType_t xYieldRequired = pdFALSE;\n\n\t/* Must not be called with the scheduler suspended as the implementation\n\trelies on xPendedTicks being wound down to 0 in xTaskResumeAll(). */\n\tconfigASSERT( uxSchedulerSuspended == 0 );\n\n\t/* Use xPendedTicks to mimic xTicksToCatchUp number of ticks occurring when\n\tthe scheduler is suspended so the ticks are executed in xTaskResumeAll(). */\n\tvTaskSuspendAll();\n\txPendedTicks += xTicksToCatchUp;\n\txYieldRequired = xTaskResumeAll();\n\n\treturn xYieldRequired;\n}\n/*----------------------------------------------------------*/\n\n#if ( INCLUDE_xTaskAbortDelay == 1 )\n\n\tBaseType_t xTaskAbortDelay( TaskHandle_t xTask )\n\t{\n\tTCB_t *pxTCB = xTask;\n\tBaseType_t xReturn;\n\n\t\tconfigASSERT( pxTCB );\n\n\t\tvTaskSuspendAll();\n\t\t{\n\t\t\t/* A task can only be prematurely removed from the Blocked state if\n\t\t\tit is actually in the Blocked state. */\n\t\t\tif( eTaskGetState( xTask ) == eBlocked )\n\t\t\t{\n\t\t\t\txReturn = pdPASS;\n\n\t\t\t\t/* Remove the reference to the task from the blocked list.  An\n\t\t\t\tinterrupt won't touch the xStateListItem because the\n\t\t\t\tscheduler is suspended. */\n\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\n\t\t\t\t/* Is the task waiting on an event also?  If so remove it from\n\t\t\t\tthe event list too.  Interrupts can touch the event list item,\n\t\t\t\teven though the scheduler is suspended, so a critical section\n\t\t\t\tis used. */\n\t\t\t\ttaskENTER_CRITICAL();\n\t\t\t\t{\n\t\t\t\t\tif( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xEventListItem ) );\n\n\t\t\t\t\t\t/* This lets the task know it was forcibly removed from the\n\t\t\t\t\t\tblocked state so it should not re-evaluate its block time and\n\t\t\t\t\t\tthen block again. */\n\t\t\t\t\t\tpxTCB->ucDelayAborted = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttaskEXIT_CRITICAL();\n\n\t\t\t\t/* Place the unblocked task into the appropriate ready list. */\n\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\n\t\t\t\t/* A task being unblocked cannot cause an immediate context\n\t\t\t\tswitch if preemption is turned off. */\n\t\t\t\t#if (  configUSE_PREEMPTION == 1 )\n\t\t\t\t{\n\t\t\t\t\t/* Preemption is on, but a context switch should only be\n\t\t\t\t\tperformed if the unblocked task has a priority that is\n\t\t\t\t\tequal to or higher than the currently executing task. */\n\t\t\t\t\tif( pxTCB->uxPriority > pxCurrentTCB->uxPriority )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Pend the yield to be performed when the scheduler\n\t\t\t\t\t\tis unsuspended. */\n\t\t\t\t\t\txYieldPending = pdTRUE;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif /* configUSE_PREEMPTION */\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\txReturn = pdFAIL;\n\t\t\t}\n\t\t}\n\t\t( void ) xTaskResumeAll();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* INCLUDE_xTaskAbortDelay */\n/*----------------------------------------------------------*/\n\nBaseType_t xTaskIncrementTick( void )\n{\nTCB_t * pxTCB;\nTickType_t xItemValue;\nBaseType_t xSwitchRequired = pdFALSE;\n\n\t/* Called by the portable layer each time a tick interrupt occurs.\n\tIncrements the tick then checks to see if the new tick value will cause any\n\ttasks to be unblocked. */\n\ttraceTASK_INCREMENT_TICK( xTickCount );\n\tif( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )\n\t{\n\t\t/* Minor optimisation.  The tick count cannot change in this\n\t\tblock. */\n\t\tconst TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1;\n\n\t\t/* Increment the RTOS tick, switching the delayed and overflowed\n\t\tdelayed lists if it wraps to 0. */\n\t\txTickCount = xConstTickCount;\n\n\t\tif( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */\n\t\t{\n\t\t\ttaskSWITCH_DELAYED_LISTS();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\t/* See if this tick has made a timeout expire.  Tasks are stored in\n\t\tthe\tqueue in the order of their wake time - meaning once one task\n\t\thas been found whose block time has not expired there is no need to\n\t\tlook any further down the list. */\n\t\tif( xConstTickCount >= xNextTaskUnblockTime )\n\t\t{\n\t\t\tfor( ;; )\n\t\t\t{\n\t\t\t\tif( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* The delayed list is empty.  Set xNextTaskUnblockTime\n\t\t\t\t\tto the maximum possible value so it is extremely\n\t\t\t\t\tunlikely that the\n\t\t\t\t\tif( xTickCount >= xNextTaskUnblockTime ) test will pass\n\t\t\t\t\tnext time through. */\n\t\t\t\t\txNextTaskUnblockTime = portMAX_DELAY; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* The delayed list is not empty, get the value of the\n\t\t\t\t\titem at the head of the delayed list.  This is the time\n\t\t\t\t\tat which the task at the head of the delayed list must\n\t\t\t\t\tbe removed from the Blocked state. */\n\t\t\t\t\tpxTCB = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\t\t\t\t\txItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) );\n\n\t\t\t\t\tif( xConstTickCount < xItemValue )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* It is not time to unblock this item yet, but the\n\t\t\t\t\t\titem value is the time at which the task at the head\n\t\t\t\t\t\tof the blocked list must be removed from the Blocked\n\t\t\t\t\t\tstate -\tso record the item value in\n\t\t\t\t\t\txNextTaskUnblockTime. */\n\t\t\t\t\t\txNextTaskUnblockTime = xItemValue;\n\t\t\t\t\t\tbreak; /*lint !e9011 Code structure here is deedmed easier to understand with multiple breaks. */\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* It is time to remove the item from the Blocked state. */\n\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\n\t\t\t\t\t/* Is the task waiting on an event also?  If so remove\n\t\t\t\t\tit from the event list. */\n\t\t\t\t\tif( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xEventListItem ) );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Place the unblocked task into the appropriate ready\n\t\t\t\t\tlist. */\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\n\t\t\t\t\t/* A task being unblocked cannot cause an immediate\n\t\t\t\t\tcontext switch if preemption is turned off. */\n\t\t\t\t\t#if (  configUSE_PREEMPTION == 1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Preemption is on, but a context switch should\n\t\t\t\t\t\tonly be performed if the unblocked task has a\n\t\t\t\t\t\tpriority that is equal to or higher than the\n\t\t\t\t\t\tcurrently executing task. */\n\t\t\t\t\t\tif( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txSwitchRequired = pdTRUE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t#endif /* configUSE_PREEMPTION */\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* Tasks of equal priority to the currently running task will share\n\t\tprocessing time (time slice) if preemption is on, and the application\n\t\twriter has not explicitly turned time slicing off. */\n\t\t#if ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) )\n\t\t{\n\t\t\tif( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 )\n\t\t\t{\n\t\t\t\txSwitchRequired = pdTRUE;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) */\n\n\t\t#if ( configUSE_TICK_HOOK == 1 )\n\t\t{\n\t\t\t/* Guard against the tick hook being called when the pended tick\n\t\t\tcount is being unwound (when the scheduler is being unlocked). */\n\t\t\tif( xPendedTicks == ( TickType_t ) 0 )\n\t\t\t{\n\t\t\t\tvApplicationTickHook();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* configUSE_TICK_HOOK */\n\n\t\t#if ( configUSE_PREEMPTION == 1 )\n\t\t{\n\t\t\tif( xYieldPending != pdFALSE )\n\t\t\t{\n\t\t\t\txSwitchRequired = pdTRUE;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* configUSE_PREEMPTION */\n\t}\n\telse\n\t{\n\t\t++xPendedTicks;\n\n\t\t/* The tick hook gets called at regular intervals, even if the\n\t\tscheduler is locked. */\n\t\t#if ( configUSE_TICK_HOOK == 1 )\n\t\t{\n\t\t\tvApplicationTickHook();\n\t\t}\n\t\t#endif\n\t}\n\n\treturn xSwitchRequired;\n}\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_APPLICATION_TASK_TAG == 1 )\n\n\tvoid vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction )\n\t{\n\tTCB_t *xTCB;\n\n\t\t/* If xTask is NULL then it is the task hook of the calling task that is\n\t\tgetting set. */\n\t\tif( xTask == NULL )\n\t\t{\n\t\t\txTCB = ( TCB_t * ) pxCurrentTCB;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txTCB = xTask;\n\t\t}\n\n\t\t/* Save the hook function in the TCB.  A critical section is required as\n\t\tthe value can be accessed from an interrupt. */\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\txTCB->pxTaskTag = pxHookFunction;\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\t}\n\n#endif /* configUSE_APPLICATION_TASK_TAG */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_APPLICATION_TASK_TAG == 1 )\n\n\tTaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask )\n\t{\n\tTCB_t *pxTCB;\n\tTaskHookFunction_t xReturn;\n\n\t\t/* If xTask is NULL then set the calling task's hook. */\n\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\t/* Save the hook function in the TCB.  A critical section is required as\n\t\tthe value can be accessed from an interrupt. */\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\txReturn = pxTCB->pxTaskTag;\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_APPLICATION_TASK_TAG */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_APPLICATION_TASK_TAG == 1 )\n\n\tTaskHookFunction_t xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask )\n\t{\n\tTCB_t *pxTCB;\n\tTaskHookFunction_t xReturn;\n\tUBaseType_t uxSavedInterruptStatus;\n\n\t\t/* If xTask is NULL then set the calling task's hook. */\n\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\t/* Save the hook function in the TCB.  A critical section is required as\n\t\tthe value can be accessed from an interrupt. */\n\t\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t\t{\n\t\t\txReturn = pxTCB->pxTaskTag;\n\t\t}\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_APPLICATION_TASK_TAG */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_APPLICATION_TASK_TAG == 1 )\n\n\tBaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter )\n\t{\n\tTCB_t *xTCB;\n\tBaseType_t xReturn;\n\n\t\t/* If xTask is NULL then we are calling our own task hook. */\n\t\tif( xTask == NULL )\n\t\t{\n\t\t\txTCB = pxCurrentTCB;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txTCB = xTask;\n\t\t}\n\n\t\tif( xTCB->pxTaskTag != NULL )\n\t\t{\n\t\t\txReturn = xTCB->pxTaskTag( pvParameter );\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdFAIL;\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_APPLICATION_TASK_TAG */\n/*-----------------------------------------------------------*/\n\nvoid vTaskSwitchContext( void )\n{\n\tif( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE )\n\t{\n\t\t/* The scheduler is currently suspended - do not allow a context\n\t\tswitch. */\n\t\txYieldPending = pdTRUE;\n\t}\n\telse\n\t{\n\t\txYieldPending = pdFALSE;\n\t\ttraceTASK_SWITCHED_OUT();\n\n\t\t#if ( configGENERATE_RUN_TIME_STATS == 1 )\n\t\t{\n\t\t\t#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE\n\t\t\t\tportALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalRunTime );\n\t\t\t#else\n\t\t\t\tulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();\n\t\t\t#endif\n\n\t\t\t/* Add the amount of time the task has been running to the\n\t\t\taccumulated time so far.  The time the task started running was\n\t\t\tstored in ulTaskSwitchedInTime.  Note that there is no overflow\n\t\t\tprotection here so count values are only valid until the timer\n\t\t\toverflows.  The guard against negative values is to protect\n\t\t\tagainst suspect run time stat counter implementations - which\n\t\t\tare provided by the application, not the kernel. */\n\t\t\tif( ulTotalRunTime > ulTaskSwitchedInTime )\n\t\t\t{\n\t\t\t\tpxCurrentTCB->ulRunTimeCounter += ( ulTotalRunTime - ulTaskSwitchedInTime );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t\tulTaskSwitchedInTime = ulTotalRunTime;\n\t\t}\n\t\t#endif /* configGENERATE_RUN_TIME_STATS */\n\n\t\t/* Check for stack overflow, if configured. */\n\t\ttaskCHECK_FOR_STACK_OVERFLOW();\n\n\t\t/* Before the currently running task is switched out, save its errno. */\n\t\t#if( configUSE_POSIX_ERRNO == 1 )\n\t\t{\n\t\t\tpxCurrentTCB->iTaskErrno = FreeRTOS_errno;\n\t\t}\n\t\t#endif\n\n\t\t/* Select a new task to run using either the generic C or port\n\t\toptimised asm code. */\n\t\ttaskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\t\ttraceTASK_SWITCHED_IN();\n\n\t\t/* After the new task is switched in, update the global errno. */\n\t\t#if( configUSE_POSIX_ERRNO == 1 )\n\t\t{\n\t\t\tFreeRTOS_errno = pxCurrentTCB->iTaskErrno;\n\t\t}\n\t\t#endif\n\n\t\t#if ( configUSE_NEWLIB_REENTRANT == 1 )\n\t\t{\n\t\t\t/* Switch Newlib's _impure_ptr variable to point to the _reent\n\t\t\tstructure specific to this task.\n\t\t\tSee the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html\n\t\t\tfor additional information. */\n\t\t\t_impure_ptr = &( pxCurrentTCB->xNewLib_reent );\n\t\t}\n\t\t#endif /* configUSE_NEWLIB_REENTRANT */\n\t}\n}\n/*-----------------------------------------------------------*/\n\nvoid vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait )\n{\n\tconfigASSERT( pxEventList );\n\n\t/* THIS FUNCTION MUST BE CALLED WITH EITHER INTERRUPTS DISABLED OR THE\n\tSCHEDULER SUSPENDED AND THE QUEUE BEING ACCESSED LOCKED. */\n\n\t/* Place the event list item of the TCB in the appropriate event list.\n\tThis is placed in the list in priority order so the highest priority task\n\tis the first to be woken by the event.  The queue that contains the event\n\tlist is locked, preventing simultaneous access from interrupts. */\n\tvListInsert( pxEventList, &( pxCurrentTCB->xEventListItem ) );\n\n\tprvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE );\n}\n/*-----------------------------------------------------------*/\n\nvoid vTaskPlaceOnUnorderedEventList( List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait )\n{\n\tconfigASSERT( pxEventList );\n\n\t/* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED.  It is used by\n\tthe event groups implementation. */\n\tconfigASSERT( uxSchedulerSuspended != 0 );\n\n\t/* Store the item value in the event list item.  It is safe to access the\n\tevent list item here as interrupts won't access the event list item of a\n\ttask that is not in the Blocked state. */\n\tlistSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ), xItemValue | taskEVENT_LIST_ITEM_VALUE_IN_USE );\n\n\t/* Place the event list item of the TCB at the end of the appropriate event\n\tlist.  It is safe to access the event list here because it is part of an\n\tevent group implementation - and interrupts don't access event groups\n\tdirectly (instead they access them indirectly by pending function calls to\n\tthe task level). */\n\tvListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) );\n\n\tprvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE );\n}\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TIMERS == 1 )\n\n\tvoid vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely )\n\t{\n\t\tconfigASSERT( pxEventList );\n\n\t\t/* This function should not be called by application code hence the\n\t\t'Restricted' in its name.  It is not part of the public API.  It is\n\t\tdesigned for use by kernel code, and has special calling requirements -\n\t\tit should be called with the scheduler suspended. */\n\n\n\t\t/* Place the event list item of the TCB in the appropriate event list.\n\t\tIn this case it is assume that this is the only task that is going to\n\t\tbe waiting on this event list, so the faster vListInsertEnd() function\n\t\tcan be used in place of vListInsert. */\n\t\tvListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) );\n\n\t\t/* If the task should block indefinitely then set the block time to a\n\t\tvalue that will be recognised as an indefinite delay inside the\n\t\tprvAddCurrentTaskToDelayedList() function. */\n\t\tif( xWaitIndefinitely != pdFALSE )\n\t\t{\n\t\t\txTicksToWait = portMAX_DELAY;\n\t\t}\n\n\t\ttraceTASK_DELAY_UNTIL( ( xTickCount + xTicksToWait ) );\n\t\tprvAddCurrentTaskToDelayedList( xTicksToWait, xWaitIndefinitely );\n\t}\n\n#endif /* configUSE_TIMERS */\n/*-----------------------------------------------------------*/\n\nBaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList )\n{\nTCB_t *pxUnblockedTCB;\nBaseType_t xReturn;\n\n\t/* THIS FUNCTION MUST BE CALLED FROM A CRITICAL SECTION.  It can also be\n\tcalled from a critical section within an ISR. */\n\n\t/* The event list is sorted in priority order, so the first in the list can\n\tbe removed as it is known to be the highest priority.  Remove the TCB from\n\tthe delayed list, and add it to the ready list.\n\n\tIf an event is for a queue that is locked then this function will never\n\tget called - the lock count on the queue will get modified instead.  This\n\tmeans exclusive access to the event list is guaranteed here.\n\n\tThis function assumes that a check has already been made to ensure that\n\tpxEventList is not empty. */\n\tpxUnblockedTCB = listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\tconfigASSERT( pxUnblockedTCB );\n\t( void ) uxListRemove( &( pxUnblockedTCB->xEventListItem ) );\n\n\tif( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )\n\t{\n\t\t( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) );\n\t\tprvAddTaskToReadyList( pxUnblockedTCB );\n\n\t\t#if( configUSE_TICKLESS_IDLE != 0 )\n\t\t{\n\t\t\t/* If a task is blocked on a kernel object then xNextTaskUnblockTime\n\t\t\tmight be set to the blocked task's time out time.  If the task is\n\t\t\tunblocked for a reason other than a timeout xNextTaskUnblockTime is\n\t\t\tnormally left unchanged, because it is automatically reset to a new\n\t\t\tvalue when the tick count equals xNextTaskUnblockTime.  However if\n\t\t\ttickless idling is used it might be more important to enter sleep mode\n\t\t\tat the earliest possible time - so reset xNextTaskUnblockTime here to\n\t\t\tensure it is updated at the earliest possible time. */\n\t\t\tprvResetNextTaskUnblockTime();\n\t\t}\n\t\t#endif\n\t}\n\telse\n\t{\n\t\t/* The delayed and ready lists cannot be accessed, so hold this task\n\t\tpending until the scheduler is resumed. */\n\t\tvListInsertEnd( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) );\n\t}\n\n\tif( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority )\n\t{\n\t\t/* Return true if the task removed from the event list has a higher\n\t\tpriority than the calling task.  This allows the calling task to know if\n\t\tit should force a context switch now. */\n\t\txReturn = pdTRUE;\n\n\t\t/* Mark that a yield is pending in case the user is not using the\n\t\t\"xHigherPriorityTaskWoken\" parameter to an ISR safe FreeRTOS function. */\n\t\txYieldPending = pdTRUE;\n\t}\n\telse\n\t{\n\t\txReturn = pdFALSE;\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nvoid vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue )\n{\nTCB_t *pxUnblockedTCB;\n\n\t/* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED.  It is used by\n\tthe event flags implementation. */\n\tconfigASSERT( uxSchedulerSuspended != pdFALSE );\n\n\t/* Store the new item value in the event list. */\n\tlistSET_LIST_ITEM_VALUE( pxEventListItem, xItemValue | taskEVENT_LIST_ITEM_VALUE_IN_USE );\n\n\t/* Remove the event list form the event flag.  Interrupts do not access\n\tevent flags. */\n\tpxUnblockedTCB = listGET_LIST_ITEM_OWNER( pxEventListItem ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\tconfigASSERT( pxUnblockedTCB );\n\t( void ) uxListRemove( pxEventListItem );\n\n\t#if( configUSE_TICKLESS_IDLE != 0 )\n\t{\n\t\t/* If a task is blocked on a kernel object then xNextTaskUnblockTime\n\t\tmight be set to the blocked task's time out time.  If the task is\n\t\tunblocked for a reason other than a timeout xNextTaskUnblockTime is\n\t\tnormally left unchanged, because it is automatically reset to a new\n\t\tvalue when the tick count equals xNextTaskUnblockTime.  However if\n\t\ttickless idling is used it might be more important to enter sleep mode\n\t\tat the earliest possible time - so reset xNextTaskUnblockTime here to\n\t\tensure it is updated at the earliest possible time. */\n\t\tprvResetNextTaskUnblockTime();\n\t}\n\t#endif\n\n\t/* Remove the task from the delayed list and add it to the ready list.  The\n\tscheduler is suspended so interrupts will not be accessing the ready\n\tlists. */\n\t( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) );\n\tprvAddTaskToReadyList( pxUnblockedTCB );\n\n\tif( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority )\n\t{\n\t\t/* The unblocked task has a priority above that of the calling task, so\n\t\ta context switch is required.  This function is called with the\n\t\tscheduler suspended so xYieldPending is set so the context switch\n\t\toccurs immediately that the scheduler is resumed (unsuspended). */\n\t\txYieldPending = pdTRUE;\n\t}\n}\n/*-----------------------------------------------------------*/\n\nvoid vTaskSetTimeOutState( TimeOut_t * const pxTimeOut )\n{\n\tconfigASSERT( pxTimeOut );\n\ttaskENTER_CRITICAL();\n\t{\n\t\tpxTimeOut->xOverflowCount = xNumOfOverflows;\n\t\tpxTimeOut->xTimeOnEntering = xTickCount;\n\t}\n\ttaskEXIT_CRITICAL();\n}\n/*-----------------------------------------------------------*/\n\nvoid vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut )\n{\n\t/* For internal use only as it does not use a critical section. */\n\tpxTimeOut->xOverflowCount = xNumOfOverflows;\n\tpxTimeOut->xTimeOnEntering = xTickCount;\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait )\n{\nBaseType_t xReturn;\n\n\tconfigASSERT( pxTimeOut );\n\tconfigASSERT( pxTicksToWait );\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\t/* Minor optimisation.  The tick count cannot change in this block. */\n\t\tconst TickType_t xConstTickCount = xTickCount;\n\t\tconst TickType_t xElapsedTime = xConstTickCount - pxTimeOut->xTimeOnEntering;\n\n\t\t#if( INCLUDE_xTaskAbortDelay == 1 )\n\t\t\tif( pxCurrentTCB->ucDelayAborted != ( uint8_t ) pdFALSE )\n\t\t\t{\n\t\t\t\t/* The delay was aborted, which is not the same as a time out,\n\t\t\t\tbut has the same result. */\n\t\t\t\tpxCurrentTCB->ucDelayAborted = pdFALSE;\n\t\t\t\txReturn = pdTRUE;\n\t\t\t}\n\t\t\telse\n\t\t#endif\n\n\t\t#if ( INCLUDE_vTaskSuspend == 1 )\n\t\t\tif( *pxTicksToWait == portMAX_DELAY )\n\t\t\t{\n\t\t\t\t/* If INCLUDE_vTaskSuspend is set to 1 and the block time\n\t\t\t\tspecified is the maximum block time then the task should block\n\t\t\t\tindefinitely, and therefore never time out. */\n\t\t\t\txReturn = pdFALSE;\n\t\t\t}\n\t\t\telse\n\t\t#endif\n\n\t\tif( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */\n\t\t{\n\t\t\t/* The tick count is greater than the time at which\n\t\t\tvTaskSetTimeout() was called, but has also overflowed since\n\t\t\tvTaskSetTimeOut() was called.  It must have wrapped all the way\n\t\t\taround and gone past again. This passed since vTaskSetTimeout()\n\t\t\twas called. */\n\t\t\txReturn = pdTRUE;\n\t\t}\n\t\telse if( xElapsedTime < *pxTicksToWait ) /*lint !e961 Explicit casting is only redundant with some compilers, whereas others require it to prevent integer conversion errors. */\n\t\t{\n\t\t\t/* Not a genuine timeout. Adjust parameters for time remaining. */\n\t\t\t*pxTicksToWait -= xElapsedTime;\n\t\t\tvTaskInternalSetTimeOutState( pxTimeOut );\n\t\t\txReturn = pdFALSE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t*pxTicksToWait = 0;\n\t\t\txReturn = pdTRUE;\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nvoid vTaskMissedYield( void )\n{\n\txYieldPending = pdTRUE;\n}\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tUBaseType_t uxTaskGetTaskNumber( TaskHandle_t xTask )\n\t{\n\tUBaseType_t uxReturn;\n\tTCB_t const *pxTCB;\n\n\t\tif( xTask != NULL )\n\t\t{\n\t\t\tpxTCB = xTask;\n\t\t\tuxReturn = pxTCB->uxTaskNumber;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tuxReturn = 0U;\n\t\t}\n\n\t\treturn uxReturn;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tvoid vTaskSetTaskNumber( TaskHandle_t xTask, const UBaseType_t uxHandle )\n\t{\n\tTCB_t * pxTCB;\n\n\t\tif( xTask != NULL )\n\t\t{\n\t\t\tpxTCB = xTask;\n\t\t\tpxTCB->uxTaskNumber = uxHandle;\n\t\t}\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n\n/*\n * -----------------------------------------------------------\n * The Idle task.\n * ----------------------------------------------------------\n *\n * The portTASK_FUNCTION() macro is used to allow port/compiler specific\n * language extensions.  The equivalent prototype for this function is:\n *\n * void prvIdleTask( void *pvParameters );\n *\n */\nstatic portTASK_FUNCTION( prvIdleTask, pvParameters )\n{\n\t/* Stop warnings. */\n\t( void ) pvParameters;\n\n\t/** THIS IS THE RTOS IDLE TASK - WHICH IS CREATED AUTOMATICALLY WHEN THE\n\tSCHEDULER IS STARTED. **/\n\n\t/* In case a task that has a secure context deletes itself, in which case\n\tthe idle task is responsible for deleting the task's secure context, if\n\tany. */\n\tportALLOCATE_SECURE_CONTEXT( configMINIMAL_SECURE_STACK_SIZE );\n\n\tfor( ;; )\n\t{\n\t\t/* See if any tasks have deleted themselves - if so then the idle task\n\t\tis responsible for freeing the deleted task's TCB and stack. */\n\t\tprvCheckTasksWaitingTermination();\n\n\t\t#if ( configUSE_PREEMPTION == 0 )\n\t\t{\n\t\t\t/* If we are not using preemption we keep forcing a task switch to\n\t\t\tsee if any other task has become available.  If we are using\n\t\t\tpreemption we don't need to do this as any task becoming available\n\t\t\twill automatically get the processor anyway. */\n\t\t\ttaskYIELD();\n\t\t}\n\t\t#endif /* configUSE_PREEMPTION */\n\n\t\t#if ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) )\n\t\t{\n\t\t\t/* When using preemption tasks of equal priority will be\n\t\t\ttimesliced.  If a task that is sharing the idle priority is ready\n\t\t\tto run then the idle task should yield before the end of the\n\t\t\ttimeslice.\n\n\t\t\tA critical region is not required here as we are just reading from\n\t\t\tthe list, and an occasional incorrect value will not matter.  If\n\t\t\tthe ready list at the idle priority contains more than one task\n\t\t\tthen a task other than the idle task is ready to execute. */\n\t\t\tif( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 )\n\t\t\t{\n\t\t\t\ttaskYIELD();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) ) */\n\n\t\t#if ( configUSE_IDLE_HOOK == 1 )\n\t\t{\n\t\t\textern void vApplicationIdleHook( void );\n\n\t\t\t/* Call the user defined function from within the idle task.  This\n\t\t\tallows the application designer to add background functionality\n\t\t\twithout the overhead of a separate task.\n\t\t\tNOTE: vApplicationIdleHook() MUST NOT, UNDER ANY CIRCUMSTANCES,\n\t\t\tCALL A FUNCTION THAT MIGHT BLOCK. */\n\t\t\tvApplicationIdleHook();\n\t\t}\n\t\t#endif /* configUSE_IDLE_HOOK */\n\n\t\t/* This conditional compilation should use inequality to 0, not equality\n\t\tto 1.  This is to ensure portSUPPRESS_TICKS_AND_SLEEP() is called when\n\t\tuser defined low power mode\timplementations require\n\t\tconfigUSE_TICKLESS_IDLE to be set to a value other than 1. */\n\t\t#if ( configUSE_TICKLESS_IDLE != 0 )\n\t\t{\n\t\tTickType_t xExpectedIdleTime;\n\n\t\t\t/* It is not desirable to suspend then resume the scheduler on\n\t\t\teach iteration of the idle task.  Therefore, a preliminary\n\t\t\ttest of the expected idle time is performed without the\n\t\t\tscheduler suspended.  The result here is not necessarily\n\t\t\tvalid. */\n\t\t\txExpectedIdleTime = prvGetExpectedIdleTime();\n\n\t\t\tif( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP )\n\t\t\t{\n\t\t\t\tvTaskSuspendAll();\n\t\t\t\t{\n\t\t\t\t\t/* Now the scheduler is suspended, the expected idle\n\t\t\t\t\ttime can be sampled again, and this time its value can\n\t\t\t\t\tbe used. */\n\t\t\t\t\tconfigASSERT( xNextTaskUnblockTime >= xTickCount );\n\t\t\t\t\txExpectedIdleTime = prvGetExpectedIdleTime();\n\n\t\t\t\t\t/* Define the following macro to set xExpectedIdleTime to 0\n\t\t\t\t\tif the application does not want\n\t\t\t\t\tportSUPPRESS_TICKS_AND_SLEEP() to be called. */\n\t\t\t\t\tconfigPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( xExpectedIdleTime );\n\n\t\t\t\t\tif( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP )\n\t\t\t\t\t{\n\t\t\t\t\t\ttraceLOW_POWER_IDLE_BEGIN();\n\t\t\t\t\t\tportSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime );\n\t\t\t\t\t\ttraceLOW_POWER_IDLE_END();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* configUSE_TICKLESS_IDLE */\n\t}\n}\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TICKLESS_IDLE != 0 )\n\n\teSleepModeStatus eTaskConfirmSleepModeStatus( void )\n\t{\n\t/* The idle task exists in addition to the application tasks. */\n\tconst UBaseType_t uxNonApplicationTasks = 1;\n\teSleepModeStatus eReturn = eStandardSleep;\n\n\t\t/* This function must be called from a critical section. */\n\n\t\tif( listCURRENT_LIST_LENGTH( &xPendingReadyList ) != 0 )\n\t\t{\n\t\t\t/* A task was made ready while the scheduler was suspended. */\n\t\t\teReturn = eAbortSleep;\n\t\t}\n\t\telse if( xYieldPending != pdFALSE )\n\t\t{\n\t\t\t/* A yield was pended while the scheduler was suspended. */\n\t\t\teReturn = eAbortSleep;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* If all the tasks are in the suspended list (which might mean they\n\t\t\thave an infinite block time rather than actually being suspended)\n\t\t\tthen it is safe to turn all clocks off and just wait for external\n\t\t\tinterrupts. */\n\t\t\tif( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == ( uxCurrentNumberOfTasks - uxNonApplicationTasks ) )\n\t\t\t{\n\t\t\t\teReturn = eNoTasksWaitingTimeout;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\n\t\treturn eReturn;\n\t}\n\n#endif /* configUSE_TICKLESS_IDLE */\n/*-----------------------------------------------------------*/\n\n#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )\n\n\tvoid vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue )\n\t{\n\tTCB_t *pxTCB;\n\n\t\tif( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS )\n\t\t{\n\t\t\tpxTCB = prvGetTCBFromHandle( xTaskToSet );\n\t\t\tconfigASSERT( pxTCB != NULL );\n\t\t\tpxTCB->pvThreadLocalStoragePointers[ xIndex ] = pvValue;\n\t\t}\n\t}\n\n#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */\n/*-----------------------------------------------------------*/\n\n#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )\n\n\tvoid *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex )\n\t{\n\tvoid *pvReturn = NULL;\n\tTCB_t *pxTCB;\n\n\t\tif( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS )\n\t\t{\n\t\t\tpxTCB = prvGetTCBFromHandle( xTaskToQuery );\n\t\t\tpvReturn = pxTCB->pvThreadLocalStoragePointers[ xIndex ];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpvReturn = NULL;\n\t\t}\n\n\t\treturn pvReturn;\n\t}\n\n#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */\n/*-----------------------------------------------------------*/\n\n#if ( portUSING_MPU_WRAPPERS == 1 )\n\n\tvoid vTaskAllocateMPURegions( TaskHandle_t xTaskToModify, const MemoryRegion_t * const xRegions )\n\t{\n\tTCB_t *pxTCB;\n\n\t\t/* If null is passed in here then we are modifying the MPU settings of\n\t\tthe calling task. */\n\t\tpxTCB = prvGetTCBFromHandle( xTaskToModify );\n\n\t\tvPortStoreTaskMPUSettings( &( pxTCB->xMPUSettings ), xRegions, NULL, 0 );\n\t}\n\n#endif /* portUSING_MPU_WRAPPERS */\n/*-----------------------------------------------------------*/\n\nstatic void prvInitialiseTaskLists( void )\n{\nUBaseType_t uxPriority;\n\n\tfor( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ )\n\t{\n\t\tvListInitialise( &( pxReadyTasksLists[ uxPriority ] ) );\n\t}\n\n\tvListInitialise( &xDelayedTaskList1 );\n\tvListInitialise( &xDelayedTaskList2 );\n\tvListInitialise( &xPendingReadyList );\n\n\t#if ( INCLUDE_vTaskDelete == 1 )\n\t{\n\t\tvListInitialise( &xTasksWaitingTermination );\n\t}\n\t#endif /* INCLUDE_vTaskDelete */\n\n\t#if ( INCLUDE_vTaskSuspend == 1 )\n\t{\n\t\tvListInitialise( &xSuspendedTaskList );\n\t}\n\t#endif /* INCLUDE_vTaskSuspend */\n\n\t/* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList\n\tusing list2. */\n\tpxDelayedTaskList = &xDelayedTaskList1;\n\tpxOverflowDelayedTaskList = &xDelayedTaskList2;\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvCheckTasksWaitingTermination( void )\n{\n\n\t/** THIS FUNCTION IS CALLED FROM THE RTOS IDLE TASK **/\n\n\t#if ( INCLUDE_vTaskDelete == 1 )\n\t{\n\t\tTCB_t *pxTCB;\n\n\t\t/* uxDeletedTasksWaitingCleanUp is used to prevent taskENTER_CRITICAL()\n\t\tbeing called too often in the idle task. */\n\t\twhile( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )\n\t\t{\n\t\t\ttaskENTER_CRITICAL();\n\t\t\t{\n\t\t\t\tpxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\t\t\t\t--uxCurrentNumberOfTasks;\n\t\t\t\t--uxDeletedTasksWaitingCleanUp;\n\t\t\t}\n\t\t\ttaskEXIT_CRITICAL();\n\n\t\t\tprvDeleteTCB( pxTCB );\n\t\t}\n\t}\n\t#endif /* INCLUDE_vTaskDelete */\n}\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TRACE_FACILITY == 1 )\n\n\tvoid vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState )\n\t{\n\tTCB_t *pxTCB;\n\n\t\t/* xTask is NULL then get the state of the calling task. */\n\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\tpxTaskStatus->xHandle = ( TaskHandle_t ) pxTCB;\n\t\tpxTaskStatus->pcTaskName = ( const char * ) &( pxTCB->pcTaskName [ 0 ] );\n\t\tpxTaskStatus->uxCurrentPriority = pxTCB->uxPriority;\n\t\tpxTaskStatus->pxStackBase = pxTCB->pxStack;\n\t\tpxTaskStatus->xTaskNumber = pxTCB->uxTCBNumber;\n\n\t\t#if ( configUSE_MUTEXES == 1 )\n\t\t{\n\t\t\tpxTaskStatus->uxBasePriority = pxTCB->uxBasePriority;\n\t\t}\n\t\t#else\n\t\t{\n\t\t\tpxTaskStatus->uxBasePriority = 0;\n\t\t}\n\t\t#endif\n\n\t\t#if ( configGENERATE_RUN_TIME_STATS == 1 )\n\t\t{\n\t\t\tpxTaskStatus->ulRunTimeCounter = pxTCB->ulRunTimeCounter;\n\t\t}\n\t\t#else\n\t\t{\n\t\t\tpxTaskStatus->ulRunTimeCounter = 0;\n\t\t}\n\t\t#endif\n\n\t\t/* Obtaining the task state is a little fiddly, so is only done if the\n\t\tvalue of eState passed into this function is eInvalid - otherwise the\n\t\tstate is just set to whatever is passed in. */\n\t\tif( eState != eInvalid )\n\t\t{\n\t\t\tif( pxTCB == pxCurrentTCB )\n\t\t\t{\n\t\t\t\tpxTaskStatus->eCurrentState = eRunning;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpxTaskStatus->eCurrentState = eState;\n\n\t\t\t\t#if ( INCLUDE_vTaskSuspend == 1 )\n\t\t\t\t{\n\t\t\t\t\t/* If the task is in the suspended list then there is a\n\t\t\t\t\tchance it is actually just blocked indefinitely - so really\n\t\t\t\t\tit should be reported as being in the Blocked state. */\n\t\t\t\t\tif( eState == eSuspended )\n\t\t\t\t\t{\n\t\t\t\t\t\tvTaskSuspendAll();\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpxTaskStatus->eCurrentState = eBlocked;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif /* INCLUDE_vTaskSuspend */\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpxTaskStatus->eCurrentState = eTaskGetState( pxTCB );\n\t\t}\n\n\t\t/* Obtaining the stack space takes some time, so the xGetFreeStackSpace\n\t\tparameter is provided to allow it to be skipped. */\n\t\tif( xGetFreeStackSpace != pdFALSE )\n\t\t{\n\t\t\t#if ( portSTACK_GROWTH > 0 )\n\t\t\t{\n\t\t\t\tpxTaskStatus->usStackHighWaterMark = prvTaskCheckFreeStackSpace( ( uint8_t * ) pxTCB->pxEndOfStack );\n\t\t\t}\n\t\t\t#else\n\t\t\t{\n\t\t\t\tpxTaskStatus->usStackHighWaterMark = prvTaskCheckFreeStackSpace( ( uint8_t * ) pxTCB->pxStack );\n\t\t\t}\n\t\t\t#endif\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpxTaskStatus->usStackHighWaterMark = 0;\n\t\t}\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tstatic UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState )\n\t{\n\tconfigLIST_VOLATILE TCB_t *pxNextTCB, *pxFirstTCB;\n\tUBaseType_t uxTask = 0;\n\n\t\tif( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 )\n\t\t{\n\t\t\tlistGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\n\t\t\t/* Populate an TaskStatus_t structure within the\n\t\t\tpxTaskStatusArray array for each task that is referenced from\n\t\t\tpxList.  See the definition of TaskStatus_t in task.h for the\n\t\t\tmeaning of each TaskStatus_t structure member. */\n\t\t\tdo\n\t\t\t{\n\t\t\t\tlistGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\t\t\t\tvTaskGetInfo( ( TaskHandle_t ) pxNextTCB, &( pxTaskStatusArray[ uxTask ] ), pdTRUE, eState );\n\t\t\t\tuxTask++;\n\t\t\t} while( pxNextTCB != pxFirstTCB );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn uxTask;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) )\n\n\tstatic configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte )\n\t{\n\tuint32_t ulCount = 0U;\n\n\t\twhile( *pucStackByte == ( uint8_t ) tskSTACK_FILL_BYTE )\n\t\t{\n\t\t\tpucStackByte -= portSTACK_GROWTH;\n\t\t\tulCount++;\n\t\t}\n\n\t\tulCount /= ( uint32_t ) sizeof( StackType_t ); /*lint !e961 Casting is not redundant on smaller architectures. */\n\n\t\treturn ( configSTACK_DEPTH_TYPE ) ulCount;\n\t}\n\n#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 )\n\n\t/* uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the\n\tsame except for their return type.  Using configSTACK_DEPTH_TYPE allows the\n\tuser to determine the return type.  It gets around the problem of the value\n\toverflowing on 8-bit types without breaking backward compatibility for\n\tapplications that expect an 8-bit return type. */\n\tconfigSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask )\n\t{\n\tTCB_t *pxTCB;\n\tuint8_t *pucEndOfStack;\n\tconfigSTACK_DEPTH_TYPE uxReturn;\n\n\t\t/* uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are\n\t\tthe same except for their return type.  Using configSTACK_DEPTH_TYPE\n\t\tallows the user to determine the return type.  It gets around the\n\t\tproblem of the value overflowing on 8-bit types without breaking\n\t\tbackward compatibility for applications that expect an 8-bit return\n\t\ttype. */\n\n\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\t#if portSTACK_GROWTH < 0\n\t\t{\n\t\t\tpucEndOfStack = ( uint8_t * ) pxTCB->pxStack;\n\t\t}\n\t\t#else\n\t\t{\n\t\t\tpucEndOfStack = ( uint8_t * ) pxTCB->pxEndOfStack;\n\t\t}\n\t\t#endif\n\n\t\tuxReturn = prvTaskCheckFreeStackSpace( pucEndOfStack );\n\n\t\treturn uxReturn;\n\t}\n\n#endif /* INCLUDE_uxTaskGetStackHighWaterMark2 */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 )\n\n\tUBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask )\n\t{\n\tTCB_t *pxTCB;\n\tuint8_t *pucEndOfStack;\n\tUBaseType_t uxReturn;\n\n\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\t#if portSTACK_GROWTH < 0\n\t\t{\n\t\t\tpucEndOfStack = ( uint8_t * ) pxTCB->pxStack;\n\t\t}\n\t\t#else\n\t\t{\n\t\t\tpucEndOfStack = ( uint8_t * ) pxTCB->pxEndOfStack;\n\t\t}\n\t\t#endif\n\n\t\tuxReturn = ( UBaseType_t ) prvTaskCheckFreeStackSpace( pucEndOfStack );\n\n\t\treturn uxReturn;\n\t}\n\n#endif /* INCLUDE_uxTaskGetStackHighWaterMark */\n/*-----------------------------------------------------------*/\n\n#if ( INCLUDE_vTaskDelete == 1 )\n\n\tstatic void prvDeleteTCB( TCB_t *pxTCB )\n\t{\n\t\t/* This call is required specifically for the TriCore port.  It must be\n\t\tabove the vPortFree() calls.  The call is also used by ports/demos that\n\t\twant to allocate and clean RAM statically. */\n\t\tportCLEAN_UP_TCB( pxTCB );\n\n\t\t/* Free up the memory allocated by the scheduler for the task.  It is up\n\t\tto the task to free any memory allocated at the application level.\n\t\tSee the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html\n\t\tfor additional information. */\n\t\t#if ( configUSE_NEWLIB_REENTRANT == 1 )\n\t\t{\n\t\t\t_reclaim_reent( &( pxTCB->xNewLib_reent ) );\n\t\t}\n\t\t#endif /* configUSE_NEWLIB_REENTRANT */\n\n\t\t#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( portUSING_MPU_WRAPPERS == 0 ) )\n\t\t{\n\t\t\t/* The task can only have been allocated dynamically - free both\n\t\t\tthe stack and TCB. */\n\t\t\tvPortFree( pxTCB->pxStack );\n\t\t\tvPortFree( pxTCB );\n\t\t}\n\t\t#elif( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */\n\t\t{\n\t\t\t/* The task could have been allocated statically or dynamically, so\n\t\t\tcheck what was statically allocated before trying to free the\n\t\t\tmemory. */\n\t\t\tif( pxTCB->ucStaticallyAllocated == tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB )\n\t\t\t{\n\t\t\t\t/* Both the stack and TCB were allocated dynamically, so both\n\t\t\t\tmust be freed. */\n\t\t\t\tvPortFree( pxTCB->pxStack );\n\t\t\t\tvPortFree( pxTCB );\n\t\t\t}\n\t\t\telse if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_ONLY )\n\t\t\t{\n\t\t\t\t/* Only the stack was statically allocated, so the TCB is the\n\t\t\t\tonly memory that must be freed. */\n\t\t\t\tvPortFree( pxTCB );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Neither the stack nor the TCB were allocated dynamically, so\n\t\t\t\tnothing needs to be freed. */\n\t\t\t\tconfigASSERT( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB\t);\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n\t}\n\n#endif /* INCLUDE_vTaskDelete */\n/*-----------------------------------------------------------*/\n\nstatic void prvResetNextTaskUnblockTime( void )\n{\nTCB_t *pxTCB;\n\n\tif( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE )\n\t{\n\t\t/* The new current delayed list is empty.  Set xNextTaskUnblockTime to\n\t\tthe maximum possible value so it is\textremely unlikely that the\n\t\tif( xTickCount >= xNextTaskUnblockTime ) test will pass until\n\t\tthere is an item in the delayed list. */\n\t\txNextTaskUnblockTime = portMAX_DELAY;\n\t}\n\telse\n\t{\n\t\t/* The new current delayed list is not empty, get the value of\n\t\tthe item at the head of the delayed list.  This is the time at\n\t\twhich the task at the head of the delayed list should be removed\n\t\tfrom the Blocked state. */\n\t\t( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\t\txNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) );\n\t}\n}\n/*-----------------------------------------------------------*/\n\n#if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) )\n\n\tTaskHandle_t xTaskGetCurrentTaskHandle( void )\n\t{\n\tTaskHandle_t xReturn;\n\n\t\t/* A critical section is not required as this is not called from\n\t\tan interrupt and the current TCB will always be the same for any\n\t\tindividual execution thread. */\n\t\txReturn = pxCurrentTCB;\n\n\t\treturn xReturn;\n\t}\n\n#endif /* ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */\n/*-----------------------------------------------------------*/\n\n#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )\n\n\tBaseType_t xTaskGetSchedulerState( void )\n\t{\n\tBaseType_t xReturn;\n\n\t\tif( xSchedulerRunning == pdFALSE )\n\t\t{\n\t\t\txReturn = taskSCHEDULER_NOT_STARTED;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )\n\t\t\t{\n\t\t\t\txReturn = taskSCHEDULER_RUNNING;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\txReturn = taskSCHEDULER_SUSPENDED;\n\t\t\t}\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_MUTEXES == 1 )\n\n\tBaseType_t xTaskPriorityInherit( TaskHandle_t const pxMutexHolder )\n\t{\n\tTCB_t * const pxMutexHolderTCB = pxMutexHolder;\n\tBaseType_t xReturn = pdFALSE;\n\n\t\t/* If the mutex was given back by an interrupt while the queue was\n\t\tlocked then the mutex holder might now be NULL.  _RB_ Is this still\n\t\tneeded as interrupts can no longer use mutexes? */\n\t\tif( pxMutexHolder != NULL )\n\t\t{\n\t\t\t/* If the holder of the mutex has a priority below the priority of\n\t\t\tthe task attempting to obtain the mutex then it will temporarily\n\t\t\tinherit the priority of the task attempting to obtain the mutex. */\n\t\t\tif( pxMutexHolderTCB->uxPriority < pxCurrentTCB->uxPriority )\n\t\t\t{\n\t\t\t\t/* Adjust the mutex holder state to account for its new\n\t\t\t\tpriority.  Only reset the event list item value if the value is\n\t\t\t\tnot being used for anything else. */\n\t\t\t\tif( ( listGET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL )\n\t\t\t\t{\n\t\t\t\t\tlistSET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\n\t\t\t\t/* If the task being modified is in the ready state it will need\n\t\t\t\tto be moved into a new list. */\n\t\t\t\tif( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxMutexHolderTCB->uxPriority ] ), &( pxMutexHolderTCB->xStateListItem ) ) != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tif( uxListRemove( &( pxMutexHolderTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* It is known that the task is in its ready list so\n\t\t\t\t\t\tthere is no need to check again and the port level\n\t\t\t\t\t\treset macro can be called directly. */\n\t\t\t\t\t\tportRESET_READY_PRIORITY( pxMutexHolderTCB->uxPriority, uxTopReadyPriority );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Inherit the priority before being moved into the new list. */\n\t\t\t\t\tpxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority;\n\t\t\t\t\tprvAddTaskToReadyList( pxMutexHolderTCB );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* Just inherit the priority. */\n\t\t\t\t\tpxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority;\n\t\t\t\t}\n\n\t\t\t\ttraceTASK_PRIORITY_INHERIT( pxMutexHolderTCB, pxCurrentTCB->uxPriority );\n\n\t\t\t\t/* Inheritance occurred. */\n\t\t\t\txReturn = pdTRUE;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( pxMutexHolderTCB->uxBasePriority < pxCurrentTCB->uxPriority )\n\t\t\t\t{\n\t\t\t\t\t/* The base priority of the mutex holder is lower than the\n\t\t\t\t\tpriority of the task attempting to take the mutex, but the\n\t\t\t\t\tcurrent priority of the mutex holder is not lower than the\n\t\t\t\t\tpriority of the task attempting to take the mutex.\n\t\t\t\t\tTherefore the mutex holder must have already inherited a\n\t\t\t\t\tpriority, but inheritance would have occurred if that had\n\t\t\t\t\tnot been the case. */\n\t\t\t\t\txReturn = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_MUTEXES == 1 )\n\n\tBaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder )\n\t{\n\tTCB_t * const pxTCB = pxMutexHolder;\n\tBaseType_t xReturn = pdFALSE;\n\n\t\tif( pxMutexHolder != NULL )\n\t\t{\n\t\t\t/* A task can only have an inherited priority if it holds the mutex.\n\t\t\tIf the mutex is held by a task then it cannot be given from an\n\t\t\tinterrupt, and if a mutex is given by the holding task then it must\n\t\t\tbe the running state task. */\n\t\t\tconfigASSERT( pxTCB == pxCurrentTCB );\n\t\t\tconfigASSERT( pxTCB->uxMutexesHeld );\n\t\t\t( pxTCB->uxMutexesHeld )--;\n\n\t\t\t/* Has the holder of the mutex inherited the priority of another\n\t\t\ttask? */\n\t\t\tif( pxTCB->uxPriority != pxTCB->uxBasePriority )\n\t\t\t{\n\t\t\t\t/* Only disinherit if no other mutexes are held. */\n\t\t\t\tif( pxTCB->uxMutexesHeld == ( UBaseType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\t/* A task can only have an inherited priority if it holds\n\t\t\t\t\tthe mutex.  If the mutex is held by a task then it cannot be\n\t\t\t\t\tgiven from an interrupt, and if a mutex is given by the\n\t\t\t\t\tholding task then it must be the running state task.  Remove\n\t\t\t\t\tthe holding task from the ready/delayed list. */\n\t\t\t\t\tif( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\ttaskRESET_READY_PRIORITY( pxTCB->uxPriority );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Disinherit the priority before adding the task into the\n\t\t\t\t\tnew\tready list. */\n\t\t\t\t\ttraceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority );\n\t\t\t\t\tpxTCB->uxPriority = pxTCB->uxBasePriority;\n\n\t\t\t\t\t/* Reset the event list item value.  It cannot be in use for\n\t\t\t\t\tany other purpose if this task is running, and it must be\n\t\t\t\t\trunning to give back the mutex. */\n\t\t\t\t\tlistSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\n\t\t\t\t\t/* Return true to indicate that a context switch is required.\n\t\t\t\t\tThis is only actually required in the corner case whereby\n\t\t\t\t\tmultiple mutexes were held and the mutexes were given back\n\t\t\t\t\tin an order different to that in which they were taken.\n\t\t\t\t\tIf a context switch did not occur when the first mutex was\n\t\t\t\t\treturned, even if a task was waiting on it, then a context\n\t\t\t\t\tswitch should occur when the last mutex is returned whether\n\t\t\t\t\ta task is waiting on it or not. */\n\t\t\t\t\txReturn = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_MUTEXES == 1 )\n\n\tvoid vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask )\n\t{\n\tTCB_t * const pxTCB = pxMutexHolder;\n\tUBaseType_t uxPriorityUsedOnEntry, uxPriorityToUse;\n\tconst UBaseType_t uxOnlyOneMutexHeld = ( UBaseType_t ) 1;\n\n\t\tif( pxMutexHolder != NULL )\n\t\t{\n\t\t\t/* If pxMutexHolder is not NULL then the holder must hold at least\n\t\t\tone mutex. */\n\t\t\tconfigASSERT( pxTCB->uxMutexesHeld );\n\n\t\t\t/* Determine the priority to which the priority of the task that\n\t\t\tholds the mutex should be set.  This will be the greater of the\n\t\t\tholding task's base priority and the priority of the highest\n\t\t\tpriority task that is waiting to obtain the mutex. */\n\t\t\tif( pxTCB->uxBasePriority < uxHighestPriorityWaitingTask )\n\t\t\t{\n\t\t\t\tuxPriorityToUse = uxHighestPriorityWaitingTask;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuxPriorityToUse = pxTCB->uxBasePriority;\n\t\t\t}\n\n\t\t\t/* Does the priority need to change? */\n\t\t\tif( pxTCB->uxPriority != uxPriorityToUse )\n\t\t\t{\n\t\t\t\t/* Only disinherit if no other mutexes are held.  This is a\n\t\t\t\tsimplification in the priority inheritance implementation.  If\n\t\t\t\tthe task that holds the mutex is also holding other mutexes then\n\t\t\t\tthe other mutexes may have caused the priority inheritance. */\n\t\t\t\tif( pxTCB->uxMutexesHeld == uxOnlyOneMutexHeld )\n\t\t\t\t{\n\t\t\t\t\t/* If a task has timed out because it already holds the\n\t\t\t\t\tmutex it was trying to obtain then it cannot of inherited\n\t\t\t\t\tits own priority. */\n\t\t\t\t\tconfigASSERT( pxTCB != pxCurrentTCB );\n\n\t\t\t\t\t/* Disinherit the priority, remembering the previous\n\t\t\t\t\tpriority to facilitate determining the subject task's\n\t\t\t\t\tstate. */\n\t\t\t\t\ttraceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority );\n\t\t\t\t\tuxPriorityUsedOnEntry = pxTCB->uxPriority;\n\t\t\t\t\tpxTCB->uxPriority = uxPriorityToUse;\n\n\t\t\t\t\t/* Only reset the event list item value if the value is not\n\t\t\t\t\tbeing used for anything else. */\n\t\t\t\t\tif( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL )\n\t\t\t\t\t{\n\t\t\t\t\t\tlistSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriorityToUse ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* If the running task is not the task that holds the mutex\n\t\t\t\t\tthen the task that holds the mutex could be in either the\n\t\t\t\t\tReady, Blocked or Suspended states.  Only remove the task\n\t\t\t\t\tfrom its current state list if it is in the Ready state as\n\t\t\t\t\tthe task's priority is going to change and there is one\n\t\t\t\t\tReady list per priority. */\n\t\t\t\t\tif( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\tif( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* It is known that the task is in its ready list so\n\t\t\t\t\t\t\tthere is no need to check again and the port level\n\t\t\t\t\t\t\treset macro can be called directly. */\n\t\t\t\t\t\t\tportRESET_READY_PRIORITY( pxTCB->uxPriority, uxTopReadyPriority );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if ( portCRITICAL_NESTING_IN_TCB == 1 )\n\n\tvoid vTaskEnterCritical( void )\n\t{\n\t\tportDISABLE_INTERRUPTS();\n\n\t\tif( xSchedulerRunning != pdFALSE )\n\t\t{\n\t\t\t( pxCurrentTCB->uxCriticalNesting )++;\n\n\t\t\t/* This is not the interrupt safe version of the enter critical\n\t\t\tfunction so\tassert() if it is being called from an interrupt\n\t\t\tcontext.  Only API functions that end in \"FromISR\" can be used in an\n\t\t\tinterrupt.  Only assert if the critical nesting count is 1 to\n\t\t\tprotect against recursive calls if the assert function also uses a\n\t\t\tcritical section. */\n\t\t\tif( pxCurrentTCB->uxCriticalNesting == 1 )\n\t\t\t{\n\t\t\t\tportASSERT_IF_IN_ISR();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* portCRITICAL_NESTING_IN_TCB */\n/*-----------------------------------------------------------*/\n\n#if ( portCRITICAL_NESTING_IN_TCB == 1 )\n\n\tvoid vTaskExitCritical( void )\n\t{\n\t\tif( xSchedulerRunning != pdFALSE )\n\t\t{\n\t\t\tif( pxCurrentTCB->uxCriticalNesting > 0U )\n\t\t\t{\n\t\t\t\t( pxCurrentTCB->uxCriticalNesting )--;\n\n\t\t\t\tif( pxCurrentTCB->uxCriticalNesting == 0U )\n\t\t\t\t{\n\t\t\t\t\tportENABLE_INTERRUPTS();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* portCRITICAL_NESTING_IN_TCB */\n/*-----------------------------------------------------------*/\n\n#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) )\n\n\tstatic char *prvWriteNameToBuffer( char *pcBuffer, const char *pcTaskName )\n\t{\n\tsize_t x;\n\n\t\t/* Start by copying the entire string. */\n\t\tstrcpy( pcBuffer, pcTaskName );\n\n\t\t/* Pad the end of the string with spaces to ensure columns line up when\n\t\tprinted out. */\n\t\tfor( x = strlen( pcBuffer ); x < ( size_t ) ( configMAX_TASK_NAME_LEN - 1 ); x++ )\n\t\t{\n\t\t\tpcBuffer[ x ] = ' ';\n\t\t}\n\n\t\t/* Terminate. */\n\t\tpcBuffer[ x ] = ( char ) 0x00;\n\n\t\t/* Return the new end of string. */\n\t\treturn &( pcBuffer[ x ] );\n\t}\n\n#endif /* ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) */\n/*-----------------------------------------------------------*/\n\n#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\n\tvoid vTaskList( char * pcWriteBuffer )\n\t{\n\tTaskStatus_t *pxTaskStatusArray;\n\tUBaseType_t uxArraySize, x;\n\tchar cStatus;\n\n\t\t/*\n\t\t * PLEASE NOTE:\n\t\t *\n\t\t * This function is provided for convenience only, and is used by many\n\t\t * of the demo applications.  Do not consider it to be part of the\n\t\t * scheduler.\n\t\t *\n\t\t * vTaskList() calls uxTaskGetSystemState(), then formats part of the\n\t\t * uxTaskGetSystemState() output into a human readable table that\n\t\t * displays task names, states and stack usage.\n\t\t *\n\t\t * vTaskList() has a dependency on the sprintf() C library function that\n\t\t * might bloat the code size, use a lot of stack, and provide different\n\t\t * results on different platforms.  An alternative, tiny, third party,\n\t\t * and limited functionality implementation of sprintf() is provided in\n\t\t * many of the FreeRTOS/Demo sub-directories in a file called\n\t\t * printf-stdarg.c (note printf-stdarg.c does not provide a full\n\t\t * snprintf() implementation!).\n\t\t *\n\t\t * It is recommended that production systems call uxTaskGetSystemState()\n\t\t * directly to get access to raw stats data, rather than indirectly\n\t\t * through a call to vTaskList().\n\t\t */\n\n\n\t\t/* Make sure the write buffer does not contain a string. */\n\t\t*pcWriteBuffer = ( char ) 0x00;\n\n\t\t/* Take a snapshot of the number of tasks in case it changes while this\n\t\tfunction is executing. */\n\t\tuxArraySize = uxCurrentNumberOfTasks;\n\n\t\t/* Allocate an array index for each task.  NOTE!  if\n\t\tconfigSUPPORT_DYNAMIC_ALLOCATION is set to 0 then pvPortMalloc() will\n\t\tequate to NULL. */\n\t\tpxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( TaskStatus_t ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation allocates a struct that has the alignment requirements of a pointer. */\n\n\t\tif( pxTaskStatusArray != NULL )\n\t\t{\n\t\t\t/* Generate the (binary) data. */\n\t\t\tuxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, NULL );\n\n\t\t\t/* Create a human readable table from the binary data. */\n\t\t\tfor( x = 0; x < uxArraySize; x++ )\n\t\t\t{\n\t\t\t\tswitch( pxTaskStatusArray[ x ].eCurrentState )\n\t\t\t\t{\n\t\t\t\t\tcase eRunning:\t\tcStatus = tskRUNNING_CHAR;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase eReady:\t\tcStatus = tskREADY_CHAR;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase eBlocked:\t\tcStatus = tskBLOCKED_CHAR;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase eSuspended:\tcStatus = tskSUSPENDED_CHAR;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase eDeleted:\t\tcStatus = tskDELETED_CHAR;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase eInvalid:\t\t/* Fall through. */\n\t\t\t\t\tdefault:\t\t\t/* Should not get here, but it is included\n\t\t\t\t\t\t\t\t\t\tto prevent static checking errors. */\n\t\t\t\t\t\t\t\t\t\tcStatus = ( char ) 0x00;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t/* Write the task name to the string, padding with spaces so it\n\t\t\t\tcan be printed in tabular form more easily. */\n\t\t\t\tpcWriteBuffer = prvWriteNameToBuffer( pcWriteBuffer, pxTaskStatusArray[ x ].pcTaskName );\n\n\t\t\t\t/* Write the rest of the string. */\n\t\t\t\tsprintf( pcWriteBuffer, \"\\t%c\\t%u\\t%u\\t%u\\r\\n\", cStatus, ( unsigned int ) pxTaskStatusArray[ x ].uxCurrentPriority, ( unsigned int ) pxTaskStatusArray[ x ].usStackHighWaterMark, ( unsigned int ) pxTaskStatusArray[ x ].xTaskNumber ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */\n\t\t\t\tpcWriteBuffer += strlen( pcWriteBuffer ); /*lint !e9016 Pointer arithmetic ok on char pointers especially as in this case where it best denotes the intent of the code. */\n\t\t\t}\n\n\t\t\t/* Free the array again.  NOTE!  If configSUPPORT_DYNAMIC_ALLOCATION\n\t\t\tis 0 then vPortFree() will be #defined to nothing. */\n\t\t\tvPortFree( pxTaskStatusArray );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */\n/*----------------------------------------------------------*/\n\n#if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\n\n\tvoid vTaskGetRunTimeStats( char *pcWriteBuffer )\n\t{\n\tTaskStatus_t *pxTaskStatusArray;\n\tUBaseType_t uxArraySize, x;\n\tuint32_t ulTotalTime, ulStatsAsPercentage;\n\n\t\t#if( configUSE_TRACE_FACILITY != 1 )\n\t\t{\n\t\t\t#error configUSE_TRACE_FACILITY must also be set to 1 in FreeRTOSConfig.h to use vTaskGetRunTimeStats().\n\t\t}\n\t\t#endif\n\n\t\t/*\n\t\t * PLEASE NOTE:\n\t\t *\n\t\t * This function is provided for convenience only, and is used by many\n\t\t * of the demo applications.  Do not consider it to be part of the\n\t\t * scheduler.\n\t\t *\n\t\t * vTaskGetRunTimeStats() calls uxTaskGetSystemState(), then formats part\n\t\t * of the uxTaskGetSystemState() output into a human readable table that\n\t\t * displays the amount of time each task has spent in the Running state\n\t\t * in both absolute and percentage terms.\n\t\t *\n\t\t * vTaskGetRunTimeStats() has a dependency on the sprintf() C library\n\t\t * function that might bloat the code size, use a lot of stack, and\n\t\t * provide different results on different platforms.  An alternative,\n\t\t * tiny, third party, and limited functionality implementation of\n\t\t * sprintf() is provided in many of the FreeRTOS/Demo sub-directories in\n\t\t * a file called printf-stdarg.c (note printf-stdarg.c does not provide\n\t\t * a full snprintf() implementation!).\n\t\t *\n\t\t * It is recommended that production systems call uxTaskGetSystemState()\n\t\t * directly to get access to raw stats data, rather than indirectly\n\t\t * through a call to vTaskGetRunTimeStats().\n\t\t */\n\n\t\t/* Make sure the write buffer does not contain a string. */\n\t\t*pcWriteBuffer = ( char ) 0x00;\n\n\t\t/* Take a snapshot of the number of tasks in case it changes while this\n\t\tfunction is executing. */\n\t\tuxArraySize = uxCurrentNumberOfTasks;\n\n\t\t/* Allocate an array index for each task.  NOTE!  If\n\t\tconfigSUPPORT_DYNAMIC_ALLOCATION is set to 0 then pvPortMalloc() will\n\t\tequate to NULL. */\n\t\tpxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( TaskStatus_t ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation allocates a struct that has the alignment requirements of a pointer. */\n\n\t\tif( pxTaskStatusArray != NULL )\n\t\t{\n\t\t\t/* Generate the (binary) data. */\n\t\t\tuxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalTime );\n\n\t\t\t/* For percentage calculations. */\n\t\t\tulTotalTime /= 100UL;\n\n\t\t\t/* Avoid divide by zero errors. */\n\t\t\tif( ulTotalTime > 0UL )\n\t\t\t{\n\t\t\t\t/* Create a human readable table from the binary data. */\n\t\t\t\tfor( x = 0; x < uxArraySize; x++ )\n\t\t\t\t{\n\t\t\t\t\t/* What percentage of the total run time has the task used?\n\t\t\t\t\tThis will always be rounded down to the nearest integer.\n\t\t\t\t\tulTotalRunTimeDiv100 has already been divided by 100. */\n\t\t\t\t\tulStatsAsPercentage = pxTaskStatusArray[ x ].ulRunTimeCounter / ulTotalTime;\n\n\t\t\t\t\t/* Write the task name to the string, padding with\n\t\t\t\t\tspaces so it can be printed in tabular form more\n\t\t\t\t\teasily. */\n\t\t\t\t\tpcWriteBuffer = prvWriteNameToBuffer( pcWriteBuffer, pxTaskStatusArray[ x ].pcTaskName );\n\n\t\t\t\t\tif( ulStatsAsPercentage > 0UL )\n\t\t\t\t\t{\n\t\t\t\t\t\t#ifdef portLU_PRINTF_SPECIFIER_REQUIRED\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsprintf( pcWriteBuffer, \"\\t%lu\\t\\t%lu%%\\r\\n\", pxTaskStatusArray[ x ].ulRunTimeCounter, ulStatsAsPercentage );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* sizeof( int ) == sizeof( long ) so a smaller\n\t\t\t\t\t\t\tprintf() library can be used. */\n\t\t\t\t\t\t\tsprintf( pcWriteBuffer, \"\\t%u\\t\\t%u%%\\r\\n\", ( unsigned int ) pxTaskStatusArray[ x ].ulRunTimeCounter, ( unsigned int ) ulStatsAsPercentage ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If the percentage is zero here then the task has\n\t\t\t\t\t\tconsumed less than 1% of the total run time. */\n\t\t\t\t\t\t#ifdef portLU_PRINTF_SPECIFIER_REQUIRED\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsprintf( pcWriteBuffer, \"\\t%lu\\t\\t<1%%\\r\\n\", pxTaskStatusArray[ x ].ulRunTimeCounter );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* sizeof( int ) == sizeof( long ) so a smaller\n\t\t\t\t\t\t\tprintf() library can be used. */\n\t\t\t\t\t\t\tsprintf( pcWriteBuffer, \"\\t%u\\t\\t<1%%\\r\\n\", ( unsigned int ) pxTaskStatusArray[ x ].ulRunTimeCounter ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t}\n\n\t\t\t\t\tpcWriteBuffer += strlen( pcWriteBuffer ); /*lint !e9016 Pointer arithmetic ok on char pointers especially as in this case where it best denotes the intent of the code. */\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\t/* Free the array again.  NOTE!  If configSUPPORT_DYNAMIC_ALLOCATION\n\t\t\tis 0 then vPortFree() will be #defined to nothing. */\n\t\t\tvPortFree( pxTaskStatusArray );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n#endif /* ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */\n/*-----------------------------------------------------------*/\n\nTickType_t uxTaskResetEventItemValue( void )\n{\nTickType_t uxReturn;\n\n\tuxReturn = listGET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ) );\n\n\t/* Reset the event list item to its normal value - so it can be used with\n\tqueues and semaphores. */\n\tlistSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ), ( ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\n\treturn uxReturn;\n}\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_MUTEXES == 1 )\n\n\tTaskHandle_t pvTaskIncrementMutexHeldCount( void )\n\t{\n\t\t/* If xSemaphoreCreateMutex() is called before any tasks have been created\n\t\tthen pxCurrentTCB will be NULL. */\n\t\tif( pxCurrentTCB != NULL )\n\t\t{\n\t\t\t( pxCurrentTCB->uxMutexesHeld )++;\n\t\t}\n\n\t\treturn pxCurrentTCB;\n\t}\n\n#endif /* configUSE_MUTEXES */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\n\tuint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait )\n\t{\n\tuint32_t ulReturn;\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* Only block if the notification count is not already non-zero. */\n\t\t\tif( pxCurrentTCB->ulNotifiedValue == 0UL )\n\t\t\t{\n\t\t\t\t/* Mark this task as waiting for a notification. */\n\t\t\t\tpxCurrentTCB->ucNotifyState = taskWAITING_NOTIFICATION;\n\n\t\t\t\tif( xTicksToWait > ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\tprvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE );\n\t\t\t\t\ttraceTASK_NOTIFY_TAKE_BLOCK();\n\n\t\t\t\t\t/* All ports are written to allow a yield in a critical\n\t\t\t\t\tsection (some will yield immediately, others wait until the\n\t\t\t\t\tcritical section exits) - but it is not something that\n\t\t\t\t\tapplication code should ever do. */\n\t\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\ttraceTASK_NOTIFY_TAKE();\n\t\t\tulReturn = pxCurrentTCB->ulNotifiedValue;\n\n\t\t\tif( ulReturn != 0UL )\n\t\t\t{\n\t\t\t\tif( xClearCountOnExit != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\tpxCurrentTCB->ulNotifiedValue = 0UL;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpxCurrentTCB->ulNotifiedValue = ulReturn - ( uint32_t ) 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\tpxCurrentTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION;\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn ulReturn;\n\t}\n\n#endif /* configUSE_TASK_NOTIFICATIONS */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\n\tBaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait )\n\t{\n\tBaseType_t xReturn;\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* Only block if a notification is not already pending. */\n\t\t\tif( pxCurrentTCB->ucNotifyState != taskNOTIFICATION_RECEIVED )\n\t\t\t{\n\t\t\t\t/* Clear bits in the task's notification value as bits may get\n\t\t\t\tset\tby the notifying task or interrupt.  This can be used to\n\t\t\t\tclear the value to zero. */\n\t\t\t\tpxCurrentTCB->ulNotifiedValue &= ~ulBitsToClearOnEntry;\n\n\t\t\t\t/* Mark this task as waiting for a notification. */\n\t\t\t\tpxCurrentTCB->ucNotifyState = taskWAITING_NOTIFICATION;\n\n\t\t\t\tif( xTicksToWait > ( TickType_t ) 0 )\n\t\t\t\t{\n\t\t\t\t\tprvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE );\n\t\t\t\t\ttraceTASK_NOTIFY_WAIT_BLOCK();\n\n\t\t\t\t\t/* All ports are written to allow a yield in a critical\n\t\t\t\t\tsection (some will yield immediately, others wait until the\n\t\t\t\t\tcritical section exits) - but it is not something that\n\t\t\t\t\tapplication code should ever do. */\n\t\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\ttraceTASK_NOTIFY_WAIT();\n\n\t\t\tif( pulNotificationValue != NULL )\n\t\t\t{\n\t\t\t\t/* Output the current notification value, which may or may not\n\t\t\t\thave changed. */\n\t\t\t\t*pulNotificationValue = pxCurrentTCB->ulNotifiedValue;\n\t\t\t}\n\n\t\t\t/* If ucNotifyValue is set then either the task never entered the\n\t\t\tblocked state (because a notification was already pending) or the\n\t\t\ttask unblocked because of a notification.  Otherwise the task\n\t\t\tunblocked because of a timeout. */\n\t\t\tif( pxCurrentTCB->ucNotifyState != taskNOTIFICATION_RECEIVED )\n\t\t\t{\n\t\t\t\t/* A notification was not received. */\n\t\t\t\txReturn = pdFALSE;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* A notification was already pending or a notification was\n\t\t\t\treceived while the task was waiting. */\n\t\t\t\tpxCurrentTCB->ulNotifiedValue &= ~ulBitsToClearOnExit;\n\t\t\t\txReturn = pdTRUE;\n\t\t\t}\n\n\t\t\tpxCurrentTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION;\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_TASK_NOTIFICATIONS */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\n\tBaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue )\n\t{\n\tTCB_t * pxTCB;\n\tBaseType_t xReturn = pdPASS;\n\tuint8_t ucOriginalNotifyState;\n\n\t\tconfigASSERT( xTaskToNotify );\n\t\tpxTCB = xTaskToNotify;\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\tif( pulPreviousNotificationValue != NULL )\n\t\t\t{\n\t\t\t\t*pulPreviousNotificationValue = pxTCB->ulNotifiedValue;\n\t\t\t}\n\n\t\t\tucOriginalNotifyState = pxTCB->ucNotifyState;\n\n\t\t\tpxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED;\n\n\t\t\tswitch( eAction )\n\t\t\t{\n\t\t\t\tcase eSetBits\t:\n\t\t\t\t\tpxTCB->ulNotifiedValue |= ulValue;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eIncrement\t:\n\t\t\t\t\t( pxTCB->ulNotifiedValue )++;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eSetValueWithOverwrite\t:\n\t\t\t\t\tpxTCB->ulNotifiedValue = ulValue;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eSetValueWithoutOverwrite :\n\t\t\t\t\tif( ucOriginalNotifyState != taskNOTIFICATION_RECEIVED )\n\t\t\t\t\t{\n\t\t\t\t\t\tpxTCB->ulNotifiedValue = ulValue;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The value could not be written to the task. */\n\t\t\t\t\t\txReturn = pdFAIL;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eNoAction:\n\t\t\t\t\t/* The task is being notified without its notify value being\n\t\t\t\t\tupdated. */\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\t/* Should not get here if all enums are handled.\n\t\t\t\t\tArtificially force an assert by testing a value the\n\t\t\t\t\tcompiler can't assume is const. */\n\t\t\t\t\tconfigASSERT( pxTCB->ulNotifiedValue == ~0UL );\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttraceTASK_NOTIFY();\n\n\t\t\t/* If the task is in the blocked state specifically to wait for a\n\t\t\tnotification then unblock it now. */\n\t\t\tif( ucOriginalNotifyState == taskWAITING_NOTIFICATION )\n\t\t\t{\n\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\n\t\t\t\t/* The task should not have been on an event list. */\n\t\t\t\tconfigASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL );\n\n\t\t\t\t#if( configUSE_TICKLESS_IDLE != 0 )\n\t\t\t\t{\n\t\t\t\t\t/* If a task is blocked waiting for a notification then\n\t\t\t\t\txNextTaskUnblockTime might be set to the blocked task's time\n\t\t\t\t\tout time.  If the task is unblocked for a reason other than\n\t\t\t\t\ta timeout xNextTaskUnblockTime is normally left unchanged,\n\t\t\t\t\tbecause it will automatically get reset to a new value when\n\t\t\t\t\tthe tick count equals xNextTaskUnblockTime.  However if\n\t\t\t\t\ttickless idling is used it might be more important to enter\n\t\t\t\t\tsleep mode at the earliest possible time - so reset\n\t\t\t\t\txNextTaskUnblockTime here to ensure it is updated at the\n\t\t\t\t\tearliest possible time. */\n\t\t\t\t\tprvResetNextTaskUnblockTime();\n\t\t\t\t}\n\t\t\t\t#endif\n\n\t\t\t\tif( pxTCB->uxPriority > pxCurrentTCB->uxPriority )\n\t\t\t\t{\n\t\t\t\t\t/* The notified task has a priority above the currently\n\t\t\t\t\texecuting task so a yield is required. */\n\t\t\t\t\ttaskYIELD_IF_USING_PREEMPTION();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_TASK_NOTIFICATIONS */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\n\tBaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken )\n\t{\n\tTCB_t * pxTCB;\n\tuint8_t ucOriginalNotifyState;\n\tBaseType_t xReturn = pdPASS;\n\tUBaseType_t uxSavedInterruptStatus;\n\n\t\tconfigASSERT( xTaskToNotify );\n\n\t\t/* RTOS ports that support interrupt nesting have the concept of a\n\t\tmaximum\tsystem call (or maximum API call) interrupt priority.\n\t\tInterrupts that are\tabove the maximum system call priority are keep\n\t\tpermanently enabled, even when the RTOS kernel is in a critical section,\n\t\tbut cannot make any calls to FreeRTOS API functions.  If configASSERT()\n\t\tis defined in FreeRTOSConfig.h then\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\t\tfailure if a FreeRTOS API function is called from an interrupt that has\n\t\tbeen assigned a priority above the configured maximum system call\n\t\tpriority.  Only FreeRTOS functions that end in FromISR can be called\n\t\tfrom interrupts\tthat have been assigned a priority at or (logically)\n\t\tbelow the maximum system call interrupt priority.  FreeRTOS maintains a\n\t\tseparate interrupt safe API to ensure interrupt entry is as fast and as\n\t\tsimple as possible.  More information (albeit Cortex-M specific) is\n\t\tprovided on the following link:\n\t\thttp://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\t\tpxTCB = xTaskToNotify;\n\n\t\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t\t{\n\t\t\tif( pulPreviousNotificationValue != NULL )\n\t\t\t{\n\t\t\t\t*pulPreviousNotificationValue = pxTCB->ulNotifiedValue;\n\t\t\t}\n\n\t\t\tucOriginalNotifyState = pxTCB->ucNotifyState;\n\t\t\tpxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED;\n\n\t\t\tswitch( eAction )\n\t\t\t{\n\t\t\t\tcase eSetBits\t:\n\t\t\t\t\tpxTCB->ulNotifiedValue |= ulValue;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eIncrement\t:\n\t\t\t\t\t( pxTCB->ulNotifiedValue )++;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eSetValueWithOverwrite\t:\n\t\t\t\t\tpxTCB->ulNotifiedValue = ulValue;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eSetValueWithoutOverwrite :\n\t\t\t\t\tif( ucOriginalNotifyState != taskNOTIFICATION_RECEIVED )\n\t\t\t\t\t{\n\t\t\t\t\t\tpxTCB->ulNotifiedValue = ulValue;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The value could not be written to the task. */\n\t\t\t\t\t\txReturn = pdFAIL;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase eNoAction :\n\t\t\t\t\t/* The task is being notified without its notify value being\n\t\t\t\t\tupdated. */\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\t/* Should not get here if all enums are handled.\n\t\t\t\t\tArtificially force an assert by testing a value the\n\t\t\t\t\tcompiler can't assume is const. */\n\t\t\t\t\tconfigASSERT( pxTCB->ulNotifiedValue == ~0UL );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttraceTASK_NOTIFY_FROM_ISR();\n\n\t\t\t/* If the task is in the blocked state specifically to wait for a\n\t\t\tnotification then unblock it now. */\n\t\t\tif( ucOriginalNotifyState == taskWAITING_NOTIFICATION )\n\t\t\t{\n\t\t\t\t/* The task should not have been on an event list. */\n\t\t\t\tconfigASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL );\n\n\t\t\t\tif( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* The delayed and ready lists cannot be accessed, so hold\n\t\t\t\t\tthis task pending until the scheduler is resumed. */\n\t\t\t\t\tvListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) );\n\t\t\t\t}\n\n\t\t\t\tif( pxTCB->uxPriority > pxCurrentTCB->uxPriority )\n\t\t\t\t{\n\t\t\t\t\t/* The notified task has a priority above the currently\n\t\t\t\t\texecuting task so a yield is required. */\n\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Mark that a yield is pending in case the user is not\n\t\t\t\t\tusing the \"xHigherPriorityTaskWoken\" parameter to an ISR\n\t\t\t\t\tsafe FreeRTOS function. */\n\t\t\t\t\txYieldPending = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_TASK_NOTIFICATIONS */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\n\tvoid vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPriorityTaskWoken )\n\t{\n\tTCB_t * pxTCB;\n\tuint8_t ucOriginalNotifyState;\n\tUBaseType_t uxSavedInterruptStatus;\n\n\t\tconfigASSERT( xTaskToNotify );\n\n\t\t/* RTOS ports that support interrupt nesting have the concept of a\n\t\tmaximum\tsystem call (or maximum API call) interrupt priority.\n\t\tInterrupts that are\tabove the maximum system call priority are keep\n\t\tpermanently enabled, even when the RTOS kernel is in a critical section,\n\t\tbut cannot make any calls to FreeRTOS API functions.  If configASSERT()\n\t\tis defined in FreeRTOSConfig.h then\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\n\t\tfailure if a FreeRTOS API function is called from an interrupt that has\n\t\tbeen assigned a priority above the configured maximum system call\n\t\tpriority.  Only FreeRTOS functions that end in FromISR can be called\n\t\tfrom interrupts\tthat have been assigned a priority at or (logically)\n\t\tbelow the maximum system call interrupt priority.  FreeRTOS maintains a\n\t\tseparate interrupt safe API to ensure interrupt entry is as fast and as\n\t\tsimple as possible.  More information (albeit Cortex-M specific) is\n\t\tprovided on the following link:\n\t\thttp://www.freertos.org/RTOS-Cortex-M3-M4.html */\n\t\tportASSERT_IF_INTERRUPT_PRIORITY_INVALID();\n\n\t\tpxTCB = xTaskToNotify;\n\n\t\tuxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();\n\t\t{\n\t\t\tucOriginalNotifyState = pxTCB->ucNotifyState;\n\t\t\tpxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED;\n\n\t\t\t/* 'Giving' is equivalent to incrementing a count in a counting\n\t\t\tsemaphore. */\n\t\t\t( pxTCB->ulNotifiedValue )++;\n\n\t\t\ttraceTASK_NOTIFY_GIVE_FROM_ISR();\n\n\t\t\t/* If the task is in the blocked state specifically to wait for a\n\t\t\tnotification then unblock it now. */\n\t\t\tif( ucOriginalNotifyState == taskWAITING_NOTIFICATION )\n\t\t\t{\n\t\t\t\t/* The task should not have been on an event list. */\n\t\t\t\tconfigASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL );\n\n\t\t\t\tif( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t( void ) uxListRemove( &( pxTCB->xStateListItem ) );\n\t\t\t\t\tprvAddTaskToReadyList( pxTCB );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* The delayed and ready lists cannot be accessed, so hold\n\t\t\t\t\tthis task pending until the scheduler is resumed. */\n\t\t\t\t\tvListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) );\n\t\t\t\t}\n\n\t\t\t\tif( pxTCB->uxPriority > pxCurrentTCB->uxPriority )\n\t\t\t\t{\n\t\t\t\t\t/* The notified task has a priority above the currently\n\t\t\t\t\texecuting task so a yield is required. */\n\t\t\t\t\tif( pxHigherPriorityTaskWoken != NULL )\n\t\t\t\t\t{\n\t\t\t\t\t\t*pxHigherPriorityTaskWoken = pdTRUE;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Mark that a yield is pending in case the user is not\n\t\t\t\t\tusing the \"xHigherPriorityTaskWoken\" parameter in an ISR\n\t\t\t\t\tsafe FreeRTOS function. */\n\t\t\t\t\txYieldPending = pdTRUE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tportCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );\n\t}\n\n#endif /* configUSE_TASK_NOTIFICATIONS */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\n\tBaseType_t xTaskNotifyStateClear( TaskHandle_t xTask )\n\t{\n\tTCB_t *pxTCB;\n\tBaseType_t xReturn;\n\n\t\t/* If null is passed in here then it is the calling task that is having\n\t\tits notification state cleared. */\n\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\tif( pxTCB->ucNotifyState == taskNOTIFICATION_RECEIVED )\n\t\t\t{\n\t\t\t\tpxTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION;\n\t\t\t\txReturn = pdPASS;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\txReturn = pdFAIL;\n\t\t\t}\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn xReturn;\n\t}\n\n#endif /* configUSE_TASK_NOTIFICATIONS */\n/*-----------------------------------------------------------*/\n\n#if( configUSE_TASK_NOTIFICATIONS == 1 )\n\n\tuint32_t ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear )\n\t{\n\tTCB_t *pxTCB;\n\tuint32_t ulReturn;\n\n\t\t/* If null is passed in here then it is the calling task that is having\n\t\tits notification state cleared. */\n\t\tpxTCB = prvGetTCBFromHandle( xTask );\n\n\t\ttaskENTER_CRITICAL();\n\t\t{\n\t\t\t/* Return the notification as it was before the bits were cleared,\n\t\t\tthen clear the bit mask. */\n\t\t\tulReturn = pxCurrentTCB->ulNotifiedValue;\n\t\t\tpxTCB->ulNotifiedValue &= ~ulBitsToClear;\n\t\t}\n\t\ttaskEXIT_CRITICAL();\n\n\t\treturn ulReturn;\n\t}\n\n#endif /* configUSE_TASK_NOTIFICATIONS */\n/*-----------------------------------------------------------*/\n\n#if( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )\n\n\tuint32_t ulTaskGetIdleRunTimeCounter( void )\n\t{\n\t\treturn xIdleTaskHandle->ulRunTimeCounter;\n\t}\n\n#endif\n/*-----------------------------------------------------------*/\n\nstatic void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely )\n{\nTickType_t xTimeToWake;\nconst TickType_t xConstTickCount = xTickCount;\n\n\t#if( INCLUDE_xTaskAbortDelay == 1 )\n\t{\n\t\t/* About to enter a delayed list, so ensure the ucDelayAborted flag is\n\t\treset to pdFALSE so it can be detected as having been set to pdTRUE\n\t\twhen the task leaves the Blocked state. */\n\t\tpxCurrentTCB->ucDelayAborted = pdFALSE;\n\t}\n\t#endif\n\n\t/* Remove the task from the ready list before adding it to the blocked list\n\tas the same list item is used for both lists. */\n\tif( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )\n\t{\n\t\t/* The current task must be in a ready list, so there is no need to\n\t\tcheck, and the port reset macro can be called directly. */\n\t\tportRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); /*lint !e931 pxCurrentTCB cannot change as it is the calling task.  pxCurrentTCB->uxPriority and uxTopReadyPriority cannot change as called with scheduler suspended or in a critical section. */\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\t#if ( INCLUDE_vTaskSuspend == 1 )\n\t{\n\t\tif( ( xTicksToWait == portMAX_DELAY ) && ( xCanBlockIndefinitely != pdFALSE ) )\n\t\t{\n\t\t\t/* Add the task to the suspended task list instead of a delayed task\n\t\t\tlist to ensure it is not woken by a timing event.  It will block\n\t\t\tindefinitely. */\n\t\t\tvListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xStateListItem ) );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Calculate the time at which the task should be woken if the event\n\t\t\tdoes not occur.  This may overflow but this doesn't matter, the\n\t\t\tkernel will manage it correctly. */\n\t\t\txTimeToWake = xConstTickCount + xTicksToWait;\n\n\t\t\t/* The list item will be inserted in wake time order. */\n\t\t\tlistSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake );\n\n\t\t\tif( xTimeToWake < xConstTickCount )\n\t\t\t{\n\t\t\t\t/* Wake time has overflowed.  Place this item in the overflow\n\t\t\t\tlist. */\n\t\t\t\tvListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* The wake time has not overflowed, so the current block list\n\t\t\t\tis used. */\n\t\t\t\tvListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) );\n\n\t\t\t\t/* If the task entering the blocked state was placed at the\n\t\t\t\thead of the list of blocked tasks then xNextTaskUnblockTime\n\t\t\t\tneeds to be updated too. */\n\t\t\t\tif( xTimeToWake < xNextTaskUnblockTime )\n\t\t\t\t{\n\t\t\t\t\txNextTaskUnblockTime = xTimeToWake;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t#else /* INCLUDE_vTaskSuspend */\n\t{\n\t\t/* Calculate the time at which the task should be woken if the event\n\t\tdoes not occur.  This may overflow but this doesn't matter, the kernel\n\t\twill manage it correctly. */\n\t\txTimeToWake = xConstTickCount + xTicksToWait;\n\n\t\t/* The list item will be inserted in wake time order. */\n\t\tlistSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake );\n\n\t\tif( xTimeToWake < xConstTickCount )\n\t\t{\n\t\t\t/* Wake time has overflowed.  Place this item in the overflow list. */\n\t\t\tvListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* The wake time has not overflowed, so the current block list is used. */\n\t\t\tvListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) );\n\n\t\t\t/* If the task entering the blocked state was placed at the head of the\n\t\t\tlist of blocked tasks then xNextTaskUnblockTime needs to be updated\n\t\t\ttoo. */\n\t\t\tif( xTimeToWake < xNextTaskUnblockTime )\n\t\t\t{\n\t\t\t\txNextTaskUnblockTime = xTimeToWake;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\n\t\t/* Avoid compiler warning when INCLUDE_vTaskSuspend is not 1. */\n\t\t( void ) xCanBlockIndefinitely;\n\t}\n\t#endif /* INCLUDE_vTaskSuspend */\n}\n\n/* Code below here allows additional code to be inserted into this source file,\nespecially where access to file scope functions and data is needed (for example\nwhen performing module tests). */\n\n#ifdef FREERTOS_MODULE_TEST\n\t#include \"tasks_test_access_functions.h\"\n#endif\n\n\n#if( configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H == 1 )\n\n\t#include \"freertos_tasks_c_additions.h\"\n\n\t#ifdef FREERTOS_TASKS_C_ADDITIONS_INIT\n\t\tstatic void freertos_tasks_c_additions_init( void )\n\t\t{\n\t\t\tFREERTOS_TASKS_C_ADDITIONS_INIT();\n\t\t}\n\t#endif\n\n#endif\n\n\n"
  },
  {
    "path": "SourceCode/Middlewares/Third_Party/FreeRTOS/Source/timers.c",
    "content": "/*\n * FreeRTOS Kernel V10.3.1\n * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * http://www.FreeRTOS.org\n * http://aws.amazon.com/freertos\n *\n * 1 tab == 4 spaces!\n */\n\n/* Standard includes. */\n#include <stdlib.h>\n\n/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\nall the API functions to use the MPU wrappers.  That should only be done when\ntask.h is included from an application file. */\n#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\n\n#include \"FreeRTOS.h\"\n#include \"task.h\"\n#include \"queue.h\"\n#include \"timers.h\"\n\n#if ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 0 )\n\t#error configUSE_TIMERS must be set to 1 to make the xTimerPendFunctionCall() function available.\n#endif\n\n/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified\nbecause the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined\nfor the header files above, but not in this file, in order to generate the\ncorrect privileged Vs unprivileged linkage and placement. */\n#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e9021 !e961 !e750. */\n\n\n/* This entire source file will be skipped if the application is not configured\nto include software timer functionality.  This #if is closed at the very bottom\nof this file.  If you want to include software timer functionality then ensure\nconfigUSE_TIMERS is set to 1 in FreeRTOSConfig.h. */\n#if ( configUSE_TIMERS == 1 )\n\n/* Misc definitions. */\n#define tmrNO_DELAY\t\t( TickType_t ) 0U\n\n/* The name assigned to the timer service task.  This can be overridden by\ndefining trmTIMER_SERVICE_TASK_NAME in FreeRTOSConfig.h. */\n#ifndef configTIMER_SERVICE_TASK_NAME\n\t#define configTIMER_SERVICE_TASK_NAME \"Tmr Svc\"\n#endif\n\n/* Bit definitions used in the ucStatus member of a timer structure. */\n#define tmrSTATUS_IS_ACTIVE\t\t\t\t\t( ( uint8_t ) 0x01 )\n#define tmrSTATUS_IS_STATICALLY_ALLOCATED\t( ( uint8_t ) 0x02 )\n#define tmrSTATUS_IS_AUTORELOAD\t\t\t\t( ( uint8_t ) 0x04 )\n\n/* The definition of the timers themselves. */\ntypedef struct tmrTimerControl /* The old naming convention is used to prevent breaking kernel aware debuggers. */\n{\n\tconst char\t\t\t\t*pcTimerName;\t\t/*<< Text name.  This is not used by the kernel, it is included simply to make debugging easier. */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\tListItem_t\t\t\t\txTimerListItem;\t\t/*<< Standard linked list item as used by all kernel features for event management. */\n\tTickType_t\t\t\t\txTimerPeriodInTicks;/*<< How quickly and often the timer expires. */\n\tvoid \t\t\t\t\t*pvTimerID;\t\t\t/*<< An ID to identify the timer.  This allows the timer to be identified when the same callback is used for multiple timers. */\n\tTimerCallbackFunction_t\tpxCallbackFunction;\t/*<< The function that will be called when the timer expires. */\n\t#if( configUSE_TRACE_FACILITY == 1 )\n\t\tUBaseType_t\t\t\tuxTimerNumber;\t\t/*<< An ID assigned by trace tools such as FreeRTOS+Trace */\n\t#endif\n\tuint8_t \t\t\t\tucStatus;\t\t\t/*<< Holds bits to say if the timer was statically allocated or not, and if it is active or not. */\n} xTIMER;\n\n/* The old xTIMER name is maintained above then typedefed to the new Timer_t\nname below to enable the use of older kernel aware debuggers. */\ntypedef xTIMER Timer_t;\n\n/* The definition of messages that can be sent and received on the timer queue.\nTwo types of message can be queued - messages that manipulate a software timer,\nand messages that request the execution of a non-timer related callback.  The\ntwo message types are defined in two separate structures, xTimerParametersType\nand xCallbackParametersType respectively. */\ntypedef struct tmrTimerParameters\n{\n\tTickType_t\t\t\txMessageValue;\t\t/*<< An optional value used by a subset of commands, for example, when changing the period of a timer. */\n\tTimer_t *\t\t\tpxTimer;\t\t\t/*<< The timer to which the command will be applied. */\n} TimerParameter_t;\n\n\ntypedef struct tmrCallbackParameters\n{\n\tPendedFunction_t\tpxCallbackFunction;\t/* << The callback function to execute. */\n\tvoid *pvParameter1;\t\t\t\t\t\t/* << The value that will be used as the callback functions first parameter. */\n\tuint32_t ulParameter2;\t\t\t\t\t/* << The value that will be used as the callback functions second parameter. */\n} CallbackParameters_t;\n\n/* The structure that contains the two message types, along with an identifier\nthat is used to determine which message type is valid. */\ntypedef struct tmrTimerQueueMessage\n{\n\tBaseType_t\t\t\txMessageID;\t\t\t/*<< The command being sent to the timer service task. */\n\tunion\n\t{\n\t\tTimerParameter_t xTimerParameters;\n\n\t\t/* Don't include xCallbackParameters if it is not going to be used as\n\t\tit makes the structure (and therefore the timer queue) larger. */\n\t\t#if ( INCLUDE_xTimerPendFunctionCall == 1 )\n\t\t\tCallbackParameters_t xCallbackParameters;\n\t\t#endif /* INCLUDE_xTimerPendFunctionCall */\n\t} u;\n} DaemonTaskMessage_t;\n\n/*lint -save -e956 A manual analysis and inspection has been used to determine\nwhich static variables must be declared volatile. */\n\n/* The list in which active timers are stored.  Timers are referenced in expire\ntime order, with the nearest expiry time at the front of the list.  Only the\ntimer service task is allowed to access these lists.\nxActiveTimerList1 and xActiveTimerList2 could be at function scope but that\nbreaks some kernel aware debuggers, and debuggers that reply on removing the\nstatic qualifier. */\nPRIVILEGED_DATA static List_t xActiveTimerList1;\nPRIVILEGED_DATA static List_t xActiveTimerList2;\nPRIVILEGED_DATA static List_t *pxCurrentTimerList;\nPRIVILEGED_DATA static List_t *pxOverflowTimerList;\n\n/* A queue that is used to send commands to the timer service task. */\nPRIVILEGED_DATA static QueueHandle_t xTimerQueue = NULL;\nPRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL;\n\n/*lint -restore */\n\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n\t/* If static allocation is supported then the application must provide the\n\tfollowing callback function - which enables the application to optionally\n\tprovide the memory that will be used by the timer task as the task's stack\n\tand TCB. */\n\textern void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize );\n\n#endif\n\n/*\n * Initialise the infrastructure used by the timer service task if it has not\n * been initialised already.\n */\nstatic void prvCheckForValidListAndQueue( void ) PRIVILEGED_FUNCTION;\n\n/*\n * The timer service task (daemon).  Timer functionality is controlled by this\n * task.  Other tasks communicate with the timer service task using the\n * xTimerQueue queue.\n */\nstatic portTASK_FUNCTION_PROTO( prvTimerTask, pvParameters ) PRIVILEGED_FUNCTION;\n\n/*\n * Called by the timer service task to interpret and process a command it\n * received on the timer queue.\n */\nstatic void prvProcessReceivedCommands( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Insert the timer into either xActiveTimerList1, or xActiveTimerList2,\n * depending on if the expire time causes a timer counter overflow.\n */\nstatic BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ) PRIVILEGED_FUNCTION;\n\n/*\n * An active timer has reached its expire time.  Reload the timer if it is an\n * auto-reload timer, then call its callback.\n */\nstatic void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ) PRIVILEGED_FUNCTION;\n\n/*\n * The tick count has overflowed.  Switch the timer lists after ensuring the\n * current timer list does not still reference some timers.\n */\nstatic void prvSwitchTimerLists( void ) PRIVILEGED_FUNCTION;\n\n/*\n * Obtain the current tick count, setting *pxTimerListsWereSwitched to pdTRUE\n * if a tick count overflow occurred since prvSampleTimeNow() was last called.\n */\nstatic TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ) PRIVILEGED_FUNCTION;\n\n/*\n * If the timer list contains any active timers then return the expire time of\n * the timer that will expire first and set *pxListWasEmpty to false.  If the\n * timer list does not contain any timers then return 0 and set *pxListWasEmpty\n * to pdTRUE.\n */\nstatic TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) PRIVILEGED_FUNCTION;\n\n/*\n * If a timer has expired, process it.  Otherwise, block the timer service task\n * until either a timer does expire or a command is received.\n */\nstatic void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION;\n\n/*\n * Called after a Timer_t structure has been allocated either statically or\n * dynamically to fill in the structure's members.\n */\nstatic void prvInitialiseNewTimer(\tconst char * const pcTimerName,\t\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\tconst TickType_t xTimerPeriodInTicks,\n\t\t\t\t\t\t\t\t\tconst UBaseType_t uxAutoReload,\n\t\t\t\t\t\t\t\t\tvoid * const pvTimerID,\n\t\t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction,\n\t\t\t\t\t\t\t\t\tTimer_t *pxNewTimer ) PRIVILEGED_FUNCTION;\n/*-----------------------------------------------------------*/\n\nBaseType_t xTimerCreateTimerTask( void )\n{\nBaseType_t xReturn = pdFAIL;\n\n\t/* This function is called when the scheduler is started if\n\tconfigUSE_TIMERS is set to 1.  Check that the infrastructure used by the\n\ttimer service task has been created/initialised.  If timers have already\n\tbeen created then the initialisation will already have been performed. */\n\tprvCheckForValidListAndQueue();\n\n\tif( xTimerQueue != NULL )\n\t{\n\t\t#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t\t{\n\t\t\tStaticTask_t *pxTimerTaskTCBBuffer = NULL;\n\t\t\tStackType_t *pxTimerTaskStackBuffer = NULL;\n\t\t\tuint32_t ulTimerTaskStackSize;\n\n\t\t\tvApplicationGetTimerTaskMemory( &pxTimerTaskTCBBuffer, &pxTimerTaskStackBuffer, &ulTimerTaskStackSize );\n\t\t\txTimerTaskHandle = xTaskCreateStatic(\tprvTimerTask,\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfigTIMER_SERVICE_TASK_NAME,\n\t\t\t\t\t\t\t\t\t\t\t\t\tulTimerTaskStackSize,\n\t\t\t\t\t\t\t\t\t\t\t\t\tNULL,\n\t\t\t\t\t\t\t\t\t\t\t\t\t( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpxTimerTaskStackBuffer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpxTimerTaskTCBBuffer );\n\n\t\t\tif( xTimerTaskHandle != NULL )\n\t\t\t{\n\t\t\t\txReturn = pdPASS;\n\t\t\t}\n\t\t}\n\t\t#else\n\t\t{\n\t\t\txReturn = xTaskCreate(\tprvTimerTask,\n\t\t\t\t\t\t\t\t\tconfigTIMER_SERVICE_TASK_NAME,\n\t\t\t\t\t\t\t\t\tconfigTIMER_TASK_STACK_DEPTH,\n\t\t\t\t\t\t\t\t\tNULL,\n\t\t\t\t\t\t\t\t\t( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT,\n\t\t\t\t\t\t\t\t\t&xTimerTaskHandle );\n\t\t}\n\t\t#endif /* configSUPPORT_STATIC_ALLOCATION */\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\tconfigASSERT( xReturn );\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\n\tTimerHandle_t xTimerCreate(\tconst char * const pcTimerName,\t\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\tconst TickType_t xTimerPeriodInTicks,\n\t\t\t\t\t\t\t\tconst UBaseType_t uxAutoReload,\n\t\t\t\t\t\t\t\tvoid * const pvTimerID,\n\t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction )\n\t{\n\tTimer_t *pxNewTimer;\n\n\t\tpxNewTimer = ( Timer_t * ) pvPortMalloc( sizeof( Timer_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of Timer_t is always a pointer to the timer's mame. */\n\n\t\tif( pxNewTimer != NULL )\n\t\t{\n\t\t\t/* Status is thus far zero as the timer is not created statically\n\t\t\tand has not been started.  The auto-reload bit may get set in\n\t\t\tprvInitialiseNewTimer. */\n\t\t\tpxNewTimer->ucStatus = 0x00;\n\t\t\tprvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer );\n\t\t}\n\n\t\treturn pxNewTimer;\n\t}\n\n#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\n#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\n\tTimerHandle_t xTimerCreateStatic(\tconst char * const pcTimerName,\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\t\tconst TickType_t xTimerPeriodInTicks,\n\t\t\t\t\t\t\t\t\t\tconst UBaseType_t uxAutoReload,\n\t\t\t\t\t\t\t\t\t\tvoid * const pvTimerID,\n\t\t\t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction,\n\t\t\t\t\t\t\t\t\t\tStaticTimer_t *pxTimerBuffer )\n\t{\n\tTimer_t *pxNewTimer;\n\n\t\t#if( configASSERT_DEFINED == 1 )\n\t\t{\n\t\t\t/* Sanity check that the size of the structure used to declare a\n\t\t\tvariable of type StaticTimer_t equals the size of the real timer\n\t\t\tstructure. */\n\t\t\tvolatile size_t xSize = sizeof( StaticTimer_t );\n\t\t\tconfigASSERT( xSize == sizeof( Timer_t ) );\n\t\t\t( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */\n\t\t}\n\t\t#endif /* configASSERT_DEFINED */\n\n\t\t/* A pointer to a StaticTimer_t structure MUST be provided, use it. */\n\t\tconfigASSERT( pxTimerBuffer );\n\t\tpxNewTimer = ( Timer_t * ) pxTimerBuffer; /*lint !e740 !e9087 StaticTimer_t is a pointer to a Timer_t, so guaranteed to be aligned and sized correctly (checked by an assert()), so this is safe. */\n\n\t\tif( pxNewTimer != NULL )\n\t\t{\n\t\t\t/* Timers can be created statically or dynamically so note this\n\t\t\ttimer was created statically in case it is later deleted.  The\n\t\t\tauto-reload bit may get set in prvInitialiseNewTimer(). */\n\t\t\tpxNewTimer->ucStatus = tmrSTATUS_IS_STATICALLY_ALLOCATED;\n\n\t\t\tprvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer );\n\t\t}\n\n\t\treturn pxNewTimer;\n\t}\n\n#endif /* configSUPPORT_STATIC_ALLOCATION */\n/*-----------------------------------------------------------*/\n\nstatic void prvInitialiseNewTimer(\tconst char * const pcTimerName,\t\t\t/*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n\t\t\t\t\t\t\t\t\tconst TickType_t xTimerPeriodInTicks,\n\t\t\t\t\t\t\t\t\tconst UBaseType_t uxAutoReload,\n\t\t\t\t\t\t\t\t\tvoid * const pvTimerID,\n\t\t\t\t\t\t\t\t\tTimerCallbackFunction_t pxCallbackFunction,\n\t\t\t\t\t\t\t\t\tTimer_t *pxNewTimer )\n{\n\t/* 0 is not a valid value for xTimerPeriodInTicks. */\n\tconfigASSERT( ( xTimerPeriodInTicks > 0 ) );\n\n\tif( pxNewTimer != NULL )\n\t{\n\t\t/* Ensure the infrastructure used by the timer service task has been\n\t\tcreated/initialised. */\n\t\tprvCheckForValidListAndQueue();\n\n\t\t/* Initialise the timer structure members using the function\n\t\tparameters. */\n\t\tpxNewTimer->pcTimerName = pcTimerName;\n\t\tpxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks;\n\t\tpxNewTimer->pvTimerID = pvTimerID;\n\t\tpxNewTimer->pxCallbackFunction = pxCallbackFunction;\n\t\tvListInitialiseItem( &( pxNewTimer->xTimerListItem ) );\n\t\tif( uxAutoReload != pdFALSE )\n\t\t{\n\t\t\tpxNewTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD;\n\t\t}\n\t\ttraceTIMER_CREATE( pxNewTimer );\n\t}\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait )\n{\nBaseType_t xReturn = pdFAIL;\nDaemonTaskMessage_t xMessage;\n\n\tconfigASSERT( xTimer );\n\n\t/* Send a message to the timer service task to perform a particular action\n\ton a particular timer definition. */\n\tif( xTimerQueue != NULL )\n\t{\n\t\t/* Send a command to the timer service task to start the xTimer timer. */\n\t\txMessage.xMessageID = xCommandID;\n\t\txMessage.u.xTimerParameters.xMessageValue = xOptionalValue;\n\t\txMessage.u.xTimerParameters.pxTimer = xTimer;\n\n\t\tif( xCommandID < tmrFIRST_FROM_ISR_COMMAND )\n\t\t{\n\t\t\tif( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING )\n\t\t\t{\n\t\t\t\txReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\txReturn = xQueueSendToBack( xTimerQueue, &xMessage, tmrNO_DELAY );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = xQueueSendToBackFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken );\n\t\t}\n\n\t\ttraceTIMER_COMMAND_SEND( xTimer, xCommandID, xOptionalValue, xReturn );\n\t}\n\telse\n\t{\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nTaskHandle_t xTimerGetTimerDaemonTaskHandle( void )\n{\n\t/* If xTimerGetTimerDaemonTaskHandle() is called before the scheduler has been\n\tstarted, then xTimerTaskHandle will be NULL. */\n\tconfigASSERT( ( xTimerTaskHandle != NULL ) );\n\treturn xTimerTaskHandle;\n}\n/*-----------------------------------------------------------*/\n\nTickType_t xTimerGetPeriod( TimerHandle_t xTimer )\n{\nTimer_t *pxTimer = xTimer;\n\n\tconfigASSERT( xTimer );\n\treturn pxTimer->xTimerPeriodInTicks;\n}\n/*-----------------------------------------------------------*/\n\nvoid vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload )\n{\nTimer_t * pxTimer =  xTimer;\n\n\tconfigASSERT( xTimer );\n\ttaskENTER_CRITICAL();\n\t{\n\t\tif( uxAutoReload != pdFALSE )\n\t\t{\n\t\t\tpxTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpxTimer->ucStatus &= ~tmrSTATUS_IS_AUTORELOAD;\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n}\n/*-----------------------------------------------------------*/\n\nUBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer )\n{\nTimer_t * pxTimer =  xTimer;\nUBaseType_t uxReturn;\n\n\tconfigASSERT( xTimer );\n\ttaskENTER_CRITICAL();\n\t{\n\t\tif( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0 )\n\t\t{\n\t\t\t/* Not an auto-reload timer. */\n\t\t\tuxReturn = ( UBaseType_t ) pdFALSE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Is an auto-reload timer. */\n\t\t\tuxReturn = ( UBaseType_t ) pdTRUE;\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn uxReturn;\n}\n/*-----------------------------------------------------------*/\n\nTickType_t xTimerGetExpiryTime( TimerHandle_t xTimer )\n{\nTimer_t * pxTimer =  xTimer;\nTickType_t xReturn;\n\n\tconfigASSERT( xTimer );\n\txReturn = listGET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ) );\n\treturn xReturn;\n}\n/*-----------------------------------------------------------*/\n\nconst char * pcTimerGetName( TimerHandle_t xTimer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\n{\nTimer_t *pxTimer = xTimer;\n\n\tconfigASSERT( xTimer );\n\treturn pxTimer->pcTimerName;\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow )\n{\nBaseType_t xResult;\nTimer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\n\t/* Remove the timer from the list of active timers.  A check has already\n\tbeen performed to ensure the list is not empty. */\n\t( void ) uxListRemove( &( pxTimer->xTimerListItem ) );\n\ttraceTIMER_EXPIRED( pxTimer );\n\n\t/* If the timer is an auto-reload timer then calculate the next\n\texpiry time and re-insert the timer in the list of active timers. */\n\tif( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )\n\t{\n\t\t/* The timer is inserted into a list using a time relative to anything\n\t\tother than the current time.  It will therefore be inserted into the\n\t\tcorrect list relative to the time this task thinks it is now. */\n\t\tif( prvInsertTimerInActiveList( pxTimer, ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ), xTimeNow, xNextExpireTime ) != pdFALSE )\n\t\t{\n\t\t\t/* The timer expired before it was added to the active timer\n\t\t\tlist.  Reload it now.  */\n\t\t\txResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY );\n\t\t\tconfigASSERT( xResult );\n\t\t\t( void ) xResult;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\telse\n\t{\n\t\tpxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE;\n\t\tmtCOVERAGE_TEST_MARKER();\n\t}\n\n\t/* Call the timer callback. */\n\tpxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );\n}\n/*-----------------------------------------------------------*/\n\nstatic portTASK_FUNCTION( prvTimerTask, pvParameters )\n{\nTickType_t xNextExpireTime;\nBaseType_t xListWasEmpty;\n\n\t/* Just to avoid compiler warnings. */\n\t( void ) pvParameters;\n\n\t#if( configUSE_DAEMON_TASK_STARTUP_HOOK == 1 )\n\t{\n\t\textern void vApplicationDaemonTaskStartupHook( void );\n\n\t\t/* Allow the application writer to execute some code in the context of\n\t\tthis task at the point the task starts executing.  This is useful if the\n\t\tapplication includes initialisation code that would benefit from\n\t\texecuting after the scheduler has been started. */\n\t\tvApplicationDaemonTaskStartupHook();\n\t}\n\t#endif /* configUSE_DAEMON_TASK_STARTUP_HOOK */\n\n\tfor( ;; )\n\t{\n\t\t/* Query the timers list to see if it contains any timers, and if so,\n\t\tobtain the time at which the next timer will expire. */\n\t\txNextExpireTime = prvGetNextExpireTime( &xListWasEmpty );\n\n\t\t/* If a timer has expired, process it.  Otherwise, block this task\n\t\tuntil either a timer does expire, or a command is received. */\n\t\tprvProcessTimerOrBlockTask( xNextExpireTime, xListWasEmpty );\n\n\t\t/* Empty the command queue. */\n\t\tprvProcessReceivedCommands();\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty )\n{\nTickType_t xTimeNow;\nBaseType_t xTimerListsWereSwitched;\n\n\tvTaskSuspendAll();\n\t{\n\t\t/* Obtain the time now to make an assessment as to whether the timer\n\t\thas expired or not.  If obtaining the time causes the lists to switch\n\t\tthen don't process this timer as any timers that remained in the list\n\t\twhen the lists were switched will have been processed within the\n\t\tprvSampleTimeNow() function. */\n\t\txTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched );\n\t\tif( xTimerListsWereSwitched == pdFALSE )\n\t\t{\n\t\t\t/* The tick count has not overflowed, has the timer expired? */\n\t\t\tif( ( xListWasEmpty == pdFALSE ) && ( xNextExpireTime <= xTimeNow ) )\n\t\t\t{\n\t\t\t\t( void ) xTaskResumeAll();\n\t\t\t\tprvProcessExpiredTimer( xNextExpireTime, xTimeNow );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* The tick count has not overflowed, and the next expire\n\t\t\t\ttime has not been reached yet.  This task should therefore\n\t\t\t\tblock to wait for the next expire time or a command to be\n\t\t\t\treceived - whichever comes first.  The following line cannot\n\t\t\t\tbe reached unless xNextExpireTime > xTimeNow, except in the\n\t\t\t\tcase when the current timer list is empty. */\n\t\t\t\tif( xListWasEmpty != pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* The current timer list is empty - is the overflow list\n\t\t\t\t\talso empty? */\n\t\t\t\t\txListWasEmpty = listLIST_IS_EMPTY( pxOverflowTimerList );\n\t\t\t\t}\n\n\t\t\t\tvQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty );\n\n\t\t\t\tif( xTaskResumeAll() == pdFALSE )\n\t\t\t\t{\n\t\t\t\t\t/* Yield to wait for either a command to arrive, or the\n\t\t\t\t\tblock time to expire.  If a command arrived between the\n\t\t\t\t\tcritical section being exited and this yield then the yield\n\t\t\t\t\twill not cause the task to block. */\n\t\t\t\t\tportYIELD_WITHIN_API();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t( void ) xTaskResumeAll();\n\t\t}\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty )\n{\nTickType_t xNextExpireTime;\n\n\t/* Timers are listed in expiry time order, with the head of the list\n\treferencing the task that will expire first.  Obtain the time at which\n\tthe timer with the nearest expiry time will expire.  If there are no\n\tactive timers then just set the next expire time to 0.  That will cause\n\tthis task to unblock when the tick count overflows, at which point the\n\ttimer lists will be switched and the next expiry time can be\n\tre-assessed.  */\n\t*pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList );\n\tif( *pxListWasEmpty == pdFALSE )\n\t{\n\t\txNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList );\n\t}\n\telse\n\t{\n\t\t/* Ensure the task unblocks when the tick count rolls over. */\n\t\txNextExpireTime = ( TickType_t ) 0U;\n\t}\n\n\treturn xNextExpireTime;\n}\n/*-----------------------------------------------------------*/\n\nstatic TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched )\n{\nTickType_t xTimeNow;\nPRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */\n\n\txTimeNow = xTaskGetTickCount();\n\n\tif( xTimeNow < xLastTime )\n\t{\n\t\tprvSwitchTimerLists();\n\t\t*pxTimerListsWereSwitched = pdTRUE;\n\t}\n\telse\n\t{\n\t\t*pxTimerListsWereSwitched = pdFALSE;\n\t}\n\n\txLastTime = xTimeNow;\n\n\treturn xTimeNow;\n}\n/*-----------------------------------------------------------*/\n\nstatic BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime )\n{\nBaseType_t xProcessTimerNow = pdFALSE;\n\n\tlistSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xNextExpiryTime );\n\tlistSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer );\n\n\tif( xNextExpiryTime <= xTimeNow )\n\t{\n\t\t/* Has the expiry time elapsed between the command to start/reset a\n\t\ttimer was issued, and the time the command was processed? */\n\t\tif( ( ( TickType_t ) ( xTimeNow - xCommandTime ) ) >= pxTimer->xTimerPeriodInTicks ) /*lint !e961 MISRA exception as the casts are only redundant for some ports. */\n\t\t{\n\t\t\t/* The time between a command being issued and the command being\n\t\t\tprocessed actually exceeds the timers period.  */\n\t\t\txProcessTimerNow = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvListInsert( pxOverflowTimerList, &( pxTimer->xTimerListItem ) );\n\t\t}\n\t}\n\telse\n\t{\n\t\tif( ( xTimeNow < xCommandTime ) && ( xNextExpiryTime >= xCommandTime ) )\n\t\t{\n\t\t\t/* If, since the command was issued, the tick count has overflowed\n\t\t\tbut the expiry time has not, then the timer must have already passed\n\t\t\tits expiry time and should be processed immediately. */\n\t\t\txProcessTimerNow = pdTRUE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) );\n\t\t}\n\t}\n\n\treturn xProcessTimerNow;\n}\n/*-----------------------------------------------------------*/\n\nstatic void\tprvProcessReceivedCommands( void )\n{\nDaemonTaskMessage_t xMessage;\nTimer_t *pxTimer;\nBaseType_t xTimerListsWereSwitched, xResult;\nTickType_t xTimeNow;\n\n\twhile( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL ) /*lint !e603 xMessage does not have to be initialised as it is passed out, not in, and it is not used unless xQueueReceive() returns pdTRUE. */\n\t{\n\t\t#if ( INCLUDE_xTimerPendFunctionCall == 1 )\n\t\t{\n\t\t\t/* Negative commands are pended function calls rather than timer\n\t\t\tcommands. */\n\t\t\tif( xMessage.xMessageID < ( BaseType_t ) 0 )\n\t\t\t{\n\t\t\t\tconst CallbackParameters_t * const pxCallback = &( xMessage.u.xCallbackParameters );\n\n\t\t\t\t/* The timer uses the xCallbackParameters member to request a\n\t\t\t\tcallback be executed.  Check the callback is not NULL. */\n\t\t\t\tconfigASSERT( pxCallback );\n\n\t\t\t\t/* Call the function. */\n\t\t\t\tpxCallback->pxCallbackFunction( pxCallback->pvParameter1, pxCallback->ulParameter2 );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\t\t}\n\t\t#endif /* INCLUDE_xTimerPendFunctionCall */\n\n\t\t/* Commands that are positive are timer commands rather than pended\n\t\tfunction calls. */\n\t\tif( xMessage.xMessageID >= ( BaseType_t ) 0 )\n\t\t{\n\t\t\t/* The messages uses the xTimerParameters member to work on a\n\t\t\tsoftware timer. */\n\t\t\tpxTimer = xMessage.u.xTimerParameters.pxTimer;\n\n\t\t\tif( listIS_CONTAINED_WITHIN( NULL, &( pxTimer->xTimerListItem ) ) == pdFALSE ) /*lint !e961. The cast is only redundant when NULL is passed into the macro. */\n\t\t\t{\n\t\t\t\t/* The timer is in a list, remove it. */\n\t\t\t\t( void ) uxListRemove( &( pxTimer->xTimerListItem ) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t}\n\n\t\t\ttraceTIMER_COMMAND_RECEIVED( pxTimer, xMessage.xMessageID, xMessage.u.xTimerParameters.xMessageValue );\n\n\t\t\t/* In this case the xTimerListsWereSwitched parameter is not used, but\n\t\t\tit must be present in the function call.  prvSampleTimeNow() must be\n\t\t\tcalled after the message is received from xTimerQueue so there is no\n\t\t\tpossibility of a higher priority task adding a message to the message\n\t\t\tqueue with a time that is ahead of the timer daemon task (because it\n\t\t\tpre-empted the timer daemon task after the xTimeNow value was set). */\n\t\t\txTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched );\n\n\t\t\tswitch( xMessage.xMessageID )\n\t\t\t{\n\t\t\t\tcase tmrCOMMAND_START :\n\t\t\t\tcase tmrCOMMAND_START_FROM_ISR :\n\t\t\t\tcase tmrCOMMAND_RESET :\n\t\t\t\tcase tmrCOMMAND_RESET_FROM_ISR :\n\t\t\t\tcase tmrCOMMAND_START_DONT_TRACE :\n\t\t\t\t\t/* Start or restart a timer. */\n\t\t\t\t\tpxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE;\n\t\t\t\t\tif( prvInsertTimerInActiveList( pxTimer,  xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow, xMessage.u.xTimerParameters.xMessageValue ) != pdFALSE )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The timer expired before it was added to the active\n\t\t\t\t\t\ttimer list.  Process it now. */\n\t\t\t\t\t\tpxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );\n\t\t\t\t\t\ttraceTIMER_EXPIRED( pxTimer );\n\n\t\t\t\t\t\tif( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY );\n\t\t\t\t\t\t\tconfigASSERT( xResult );\n\t\t\t\t\t\t\t( void ) xResult;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase tmrCOMMAND_STOP :\n\t\t\t\tcase tmrCOMMAND_STOP_FROM_ISR :\n\t\t\t\t\t/* The timer has already been removed from the active list. */\n\t\t\t\t\tpxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase tmrCOMMAND_CHANGE_PERIOD :\n\t\t\t\tcase tmrCOMMAND_CHANGE_PERIOD_FROM_ISR :\n\t\t\t\t\tpxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE;\n\t\t\t\t\tpxTimer->xTimerPeriodInTicks = xMessage.u.xTimerParameters.xMessageValue;\n\t\t\t\t\tconfigASSERT( ( pxTimer->xTimerPeriodInTicks > 0 ) );\n\n\t\t\t\t\t/* The new period does not really have a reference, and can\n\t\t\t\t\tbe longer or shorter than the old one.  The command time is\n\t\t\t\t\ttherefore set to the current time, and as the period cannot\n\t\t\t\t\tbe zero the next expiry time can only be in the future,\n\t\t\t\t\tmeaning (unlike for the xTimerStart() case above) there is\n\t\t\t\t\tno fail case that needs to be handled here. */\n\t\t\t\t\t( void ) prvInsertTimerInActiveList( pxTimer, ( xTimeNow + pxTimer->xTimerPeriodInTicks ), xTimeNow, xTimeNow );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase tmrCOMMAND_DELETE :\n\t\t\t\t\t#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* The timer has already been removed from the active list,\n\t\t\t\t\t\tjust free up the memory if the memory was dynamically\n\t\t\t\t\t\tallocated. */\n\t\t\t\t\t\tif( ( pxTimer->ucStatus & tmrSTATUS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvPortFree( pxTimer );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t#else\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If dynamic allocation is not enabled, the memory\n\t\t\t\t\t\tcould not have been dynamically allocated. So there is\n\t\t\t\t\t\tno need to free the memory - just mark the timer as\n\t\t\t\t\t\t\"not active\". */\n\t\t\t\t\t\tpxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE;\n\t\t\t\t\t}\n\t\t\t\t\t#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault\t:\n\t\t\t\t\t/* Don't expect to get here. */\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvSwitchTimerLists( void )\n{\nTickType_t xNextExpireTime, xReloadTime;\nList_t *pxTemp;\nTimer_t *pxTimer;\nBaseType_t xResult;\n\n\t/* The tick count has overflowed.  The timer lists must be switched.\n\tIf there are any timers still referenced from the current timer list\n\tthen they must have expired and should be processed before the lists\n\tare switched. */\n\twhile( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE )\n\t{\n\t\txNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList );\n\n\t\t/* Remove the timer from the list. */\n\t\tpxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too.  Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */\n\t\t( void ) uxListRemove( &( pxTimer->xTimerListItem ) );\n\t\ttraceTIMER_EXPIRED( pxTimer );\n\n\t\t/* Execute its callback, then send a command to restart the timer if\n\t\tit is an auto-reload timer.  It cannot be restarted here as the lists\n\t\thave not yet been switched. */\n\t\tpxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );\n\n\t\tif( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )\n\t\t{\n\t\t\t/* Calculate the reload value, and if the reload value results in\n\t\t\tthe timer going into the same timer list then it has already expired\n\t\t\tand the timer should be re-inserted into the current list so it is\n\t\t\tprocessed again within this loop.  Otherwise a command should be sent\n\t\t\tto restart the timer to ensure it is only inserted into a list after\n\t\t\tthe lists have been swapped. */\n\t\t\txReloadTime = ( xNextExpireTime + pxTimer->xTimerPeriodInTicks );\n\t\t\tif( xReloadTime > xNextExpireTime )\n\t\t\t{\n\t\t\t\tlistSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xReloadTime );\n\t\t\t\tlistSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer );\n\t\t\t\tvListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\txResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY );\n\t\t\t\tconfigASSERT( xResult );\n\t\t\t\t( void ) xResult;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\n\tpxTemp = pxCurrentTimerList;\n\tpxCurrentTimerList = pxOverflowTimerList;\n\tpxOverflowTimerList = pxTemp;\n}\n/*-----------------------------------------------------------*/\n\nstatic void prvCheckForValidListAndQueue( void )\n{\n\t/* Check that the list from which active timers are referenced, and the\n\tqueue used to communicate with the timer service, have been\n\tinitialised. */\n\ttaskENTER_CRITICAL();\n\t{\n\t\tif( xTimerQueue == NULL )\n\t\t{\n\t\t\tvListInitialise( &xActiveTimerList1 );\n\t\t\tvListInitialise( &xActiveTimerList2 );\n\t\t\tpxCurrentTimerList = &xActiveTimerList1;\n\t\t\tpxOverflowTimerList = &xActiveTimerList2;\n\n\t\t\t#if( configSUPPORT_STATIC_ALLOCATION == 1 )\n\t\t\t{\n\t\t\t\t/* The timer queue is allocated statically in case\n\t\t\t\tconfigSUPPORT_DYNAMIC_ALLOCATION is 0. */\n\t\t\t\tstatic StaticQueue_t xStaticTimerQueue; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */\n\t\t\t\tstatic uint8_t ucStaticTimerQueueStorage[ ( size_t ) configTIMER_QUEUE_LENGTH * sizeof( DaemonTaskMessage_t ) ]; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */\n\n\t\t\t\txTimerQueue = xQueueCreateStatic( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, ( UBaseType_t ) sizeof( DaemonTaskMessage_t ), &( ucStaticTimerQueueStorage[ 0 ] ), &xStaticTimerQueue );\n\t\t\t}\n\t\t\t#else\n\t\t\t{\n\t\t\t\txTimerQueue = xQueueCreate( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, sizeof( DaemonTaskMessage_t ) );\n\t\t\t}\n\t\t\t#endif\n\n\t\t\t#if ( configQUEUE_REGISTRY_SIZE > 0 )\n\t\t\t{\n\t\t\t\tif( xTimerQueue != NULL )\n\t\t\t\t{\n\t\t\t\t\tvQueueAddToRegistry( xTimerQueue, \"TmrQ\" );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t\t\t}\n\t\t\t}\n\t\t\t#endif /* configQUEUE_REGISTRY_SIZE */\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmtCOVERAGE_TEST_MARKER();\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n}\n/*-----------------------------------------------------------*/\n\nBaseType_t xTimerIsTimerActive( TimerHandle_t xTimer )\n{\nBaseType_t xReturn;\nTimer_t *pxTimer = xTimer;\n\n\tconfigASSERT( xTimer );\n\n\t/* Is the timer in the list of active timers? */\n\ttaskENTER_CRITICAL();\n\t{\n\t\tif( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0 )\n\t\t{\n\t\t\txReturn = pdFALSE;\n\t\t}\n\t\telse\n\t\t{\n\t\t\txReturn = pdTRUE;\n\t\t}\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn xReturn;\n} /*lint !e818 Can't be pointer to const due to the typedef. */\n/*-----------------------------------------------------------*/\n\nvoid *pvTimerGetTimerID( const TimerHandle_t xTimer )\n{\nTimer_t * const pxTimer = xTimer;\nvoid *pvReturn;\n\n\tconfigASSERT( xTimer );\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tpvReturn = pxTimer->pvTimerID;\n\t}\n\ttaskEXIT_CRITICAL();\n\n\treturn pvReturn;\n}\n/*-----------------------------------------------------------*/\n\nvoid vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID )\n{\nTimer_t * const pxTimer = xTimer;\n\n\tconfigASSERT( xTimer );\n\n\ttaskENTER_CRITICAL();\n\t{\n\t\tpxTimer->pvTimerID = pvNewID;\n\t}\n\ttaskEXIT_CRITICAL();\n}\n/*-----------------------------------------------------------*/\n\n#if( INCLUDE_xTimerPendFunctionCall == 1 )\n\n\tBaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, BaseType_t *pxHigherPriorityTaskWoken )\n\t{\n\tDaemonTaskMessage_t xMessage;\n\tBaseType_t xReturn;\n\n\t\t/* Complete the message with the function parameters and post it to the\n\t\tdaemon task. */\n\t\txMessage.xMessageID = tmrCOMMAND_EXECUTE_CALLBACK_FROM_ISR;\n\t\txMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend;\n\t\txMessage.u.xCallbackParameters.pvParameter1 = pvParameter1;\n\t\txMessage.u.xCallbackParameters.ulParameter2 = ulParameter2;\n\n\t\txReturn = xQueueSendFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken );\n\n\t\ttracePEND_FUNC_CALL_FROM_ISR( xFunctionToPend, pvParameter1, ulParameter2, xReturn );\n\n\t\treturn xReturn;\n\t}\n\n#endif /* INCLUDE_xTimerPendFunctionCall */\n/*-----------------------------------------------------------*/\n\n#if( INCLUDE_xTimerPendFunctionCall == 1 )\n\n\tBaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait )\n\t{\n\tDaemonTaskMessage_t xMessage;\n\tBaseType_t xReturn;\n\n\t\t/* This function can only be called after a timer has been created or\n\t\tafter the scheduler has been started because, until then, the timer\n\t\tqueue does not exist. */\n\t\tconfigASSERT( xTimerQueue );\n\n\t\t/* Complete the message with the function parameters and post it to the\n\t\tdaemon task. */\n\t\txMessage.xMessageID = tmrCOMMAND_EXECUTE_CALLBACK;\n\t\txMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend;\n\t\txMessage.u.xCallbackParameters.pvParameter1 = pvParameter1;\n\t\txMessage.u.xCallbackParameters.ulParameter2 = ulParameter2;\n\n\t\txReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait );\n\n\t\ttracePEND_FUNC_CALL( xFunctionToPend, pvParameter1, ulParameter2, xReturn );\n\n\t\treturn xReturn;\n\t}\n\n#endif /* INCLUDE_xTimerPendFunctionCall */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tUBaseType_t uxTimerGetTimerNumber( TimerHandle_t xTimer )\n\t{\n\t\treturn ( ( Timer_t * ) xTimer )->uxTimerNumber;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n#if ( configUSE_TRACE_FACILITY == 1 )\n\n\tvoid vTimerSetTimerNumber( TimerHandle_t xTimer, UBaseType_t uxTimerNumber )\n\t{\n\t\t( ( Timer_t * ) xTimer )->uxTimerNumber = uxTimerNumber;\n\t}\n\n#endif /* configUSE_TRACE_FACILITY */\n/*-----------------------------------------------------------*/\n\n/* This entire source file will be skipped if the application is not configured\nto include software timer functionality.  If you want to include software timer\nfunctionality then ensure configUSE_TIMERS is set to 1 in FreeRTOSConfig.h. */\n#endif /* configUSE_TIMERS == 1 */\n\n\n\n"
  },
  {
    "path": "SourceCode/hexapod.ioc",
    "content": "#MicroXplorer Configuration settings - do not modify\nCORTEX_M7.IPParameters=default_mode_Activation\nCORTEX_M7.default_mode_Activation=1\nDma.Request0=UART8_TX\nDma.Request1=USART1_TX\nDma.Request2=USART2_TX\nDma.Request3=USART3_TX\nDma.Request4=UART4_TX\nDma.Request5=UART5_TX\nDma.Request6=USART6_TX\nDma.RequestsNb=7\nDma.UART4_TX.4.Direction=DMA_MEMORY_TO_PERIPH\nDma.UART4_TX.4.EventEnable=DISABLE\nDma.UART4_TX.4.FIFOMode=DMA_FIFOMODE_DISABLE\nDma.UART4_TX.4.Instance=DMA2_Stream0\nDma.UART4_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE\nDma.UART4_TX.4.MemInc=DMA_MINC_ENABLE\nDma.UART4_TX.4.Mode=DMA_NORMAL\nDma.UART4_TX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE\nDma.UART4_TX.4.PeriphInc=DMA_PINC_DISABLE\nDma.UART4_TX.4.Polarity=HAL_DMAMUX_REQ_GEN_RISING\nDma.UART4_TX.4.Priority=DMA_PRIORITY_LOW\nDma.UART4_TX.4.RequestNumber=1\nDma.UART4_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber\nDma.UART4_TX.4.SignalID=NONE\nDma.UART4_TX.4.SyncEnable=DISABLE\nDma.UART4_TX.4.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT\nDma.UART4_TX.4.SyncRequestNumber=1\nDma.UART4_TX.4.SyncSignalID=NONE\nDma.UART5_TX.5.Direction=DMA_MEMORY_TO_PERIPH\nDma.UART5_TX.5.EventEnable=DISABLE\nDma.UART5_TX.5.FIFOMode=DMA_FIFOMODE_DISABLE\nDma.UART5_TX.5.Instance=DMA2_Stream1\nDma.UART5_TX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE\nDma.UART5_TX.5.MemInc=DMA_MINC_ENABLE\nDma.UART5_TX.5.Mode=DMA_NORMAL\nDma.UART5_TX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE\nDma.UART5_TX.5.PeriphInc=DMA_PINC_DISABLE\nDma.UART5_TX.5.Polarity=HAL_DMAMUX_REQ_GEN_RISING\nDma.UART5_TX.5.Priority=DMA_PRIORITY_LOW\nDma.UART5_TX.5.RequestNumber=1\nDma.UART5_TX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber\nDma.UART5_TX.5.SignalID=NONE\nDma.UART5_TX.5.SyncEnable=DISABLE\nDma.UART5_TX.5.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT\nDma.UART5_TX.5.SyncRequestNumber=1\nDma.UART5_TX.5.SyncSignalID=NONE\nDma.UART8_TX.0.Direction=DMA_MEMORY_TO_PERIPH\nDma.UART8_TX.0.EventEnable=DISABLE\nDma.UART8_TX.0.FIFOMode=DMA_FIFOMODE_DISABLE\nDma.UART8_TX.0.Instance=DMA1_Stream1\nDma.UART8_TX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE\nDma.UART8_TX.0.MemInc=DMA_MINC_ENABLE\nDma.UART8_TX.0.Mode=DMA_NORMAL\nDma.UART8_TX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE\nDma.UART8_TX.0.PeriphInc=DMA_PINC_DISABLE\nDma.UART8_TX.0.Polarity=HAL_DMAMUX_REQ_GEN_RISING\nDma.UART8_TX.0.Priority=DMA_PRIORITY_LOW\nDma.UART8_TX.0.RequestNumber=1\nDma.UART8_TX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber\nDma.UART8_TX.0.SignalID=NONE\nDma.UART8_TX.0.SyncEnable=DISABLE\nDma.UART8_TX.0.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT\nDma.UART8_TX.0.SyncRequestNumber=1\nDma.UART8_TX.0.SyncSignalID=NONE\nDma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH\nDma.USART1_TX.1.EventEnable=DISABLE\nDma.USART1_TX.1.FIFOMode=DMA_FIFOMODE_DISABLE\nDma.USART1_TX.1.Instance=DMA1_Stream2\nDma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE\nDma.USART1_TX.1.MemInc=DMA_MINC_ENABLE\nDma.USART1_TX.1.Mode=DMA_NORMAL\nDma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE\nDma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE\nDma.USART1_TX.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING\nDma.USART1_TX.1.Priority=DMA_PRIORITY_LOW\nDma.USART1_TX.1.RequestNumber=1\nDma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber\nDma.USART1_TX.1.SignalID=NONE\nDma.USART1_TX.1.SyncEnable=DISABLE\nDma.USART1_TX.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT\nDma.USART1_TX.1.SyncRequestNumber=1\nDma.USART1_TX.1.SyncSignalID=NONE\nDma.USART2_TX.2.Direction=DMA_MEMORY_TO_PERIPH\nDma.USART2_TX.2.EventEnable=DISABLE\nDma.USART2_TX.2.FIFOMode=DMA_FIFOMODE_DISABLE\nDma.USART2_TX.2.Instance=DMA1_Stream3\nDma.USART2_TX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE\nDma.USART2_TX.2.MemInc=DMA_MINC_ENABLE\nDma.USART2_TX.2.Mode=DMA_NORMAL\nDma.USART2_TX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE\nDma.USART2_TX.2.PeriphInc=DMA_PINC_DISABLE\nDma.USART2_TX.2.Polarity=HAL_DMAMUX_REQ_GEN_RISING\nDma.USART2_TX.2.Priority=DMA_PRIORITY_LOW\nDma.USART2_TX.2.RequestNumber=1\nDma.USART2_TX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber\nDma.USART2_TX.2.SignalID=NONE\nDma.USART2_TX.2.SyncEnable=DISABLE\nDma.USART2_TX.2.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT\nDma.USART2_TX.2.SyncRequestNumber=1\nDma.USART2_TX.2.SyncSignalID=NONE\nDma.USART3_TX.3.Direction=DMA_MEMORY_TO_PERIPH\nDma.USART3_TX.3.EventEnable=DISABLE\nDma.USART3_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE\nDma.USART3_TX.3.Instance=DMA1_Stream0\nDma.USART3_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE\nDma.USART3_TX.3.MemInc=DMA_MINC_ENABLE\nDma.USART3_TX.3.Mode=DMA_NORMAL\nDma.USART3_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE\nDma.USART3_TX.3.PeriphInc=DMA_PINC_DISABLE\nDma.USART3_TX.3.Polarity=HAL_DMAMUX_REQ_GEN_RISING\nDma.USART3_TX.3.Priority=DMA_PRIORITY_LOW\nDma.USART3_TX.3.RequestNumber=1\nDma.USART3_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber\nDma.USART3_TX.3.SignalID=NONE\nDma.USART3_TX.3.SyncEnable=DISABLE\nDma.USART3_TX.3.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT\nDma.USART3_TX.3.SyncRequestNumber=1\nDma.USART3_TX.3.SyncSignalID=NONE\nDma.USART6_TX.6.Direction=DMA_MEMORY_TO_PERIPH\nDma.USART6_TX.6.EventEnable=DISABLE\nDma.USART6_TX.6.FIFOMode=DMA_FIFOMODE_DISABLE\nDma.USART6_TX.6.Instance=DMA2_Stream2\nDma.USART6_TX.6.MemDataAlignment=DMA_MDATAALIGN_BYTE\nDma.USART6_TX.6.MemInc=DMA_MINC_ENABLE\nDma.USART6_TX.6.Mode=DMA_NORMAL\nDma.USART6_TX.6.PeriphDataAlignment=DMA_PDATAALIGN_BYTE\nDma.USART6_TX.6.PeriphInc=DMA_PINC_DISABLE\nDma.USART6_TX.6.Polarity=HAL_DMAMUX_REQ_GEN_RISING\nDma.USART6_TX.6.Priority=DMA_PRIORITY_LOW\nDma.USART6_TX.6.RequestNumber=1\nDma.USART6_TX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber\nDma.USART6_TX.6.SignalID=NONE\nDma.USART6_TX.6.SyncEnable=DISABLE\nDma.USART6_TX.6.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT\nDma.USART6_TX.6.SyncRequestNumber=1\nDma.USART6_TX.6.SyncSignalID=NONE\nFREERTOS.FootprintOK=true\nFREERTOS.IPParameters=Tasks01,configENABLE_FPU,FootprintOK\nFREERTOS.Tasks01=defaultTask,0,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;LED_task,-3,128,LED_Task,As external,NULL,Dynamic,NULL,NULL;LegControl_task,3,1024,LegControl_Task,As external,NULL,Dynamic,NULL,NULL;MPU_task,3,512,MPU_Task,As external,NULL,Dynamic,NULL,NULL\nFREERTOS.configENABLE_FPU=1\nFile.Version=6\nGPIO.groupedBy=Group By Peripherals\nI2C4.I2C_Speed_Mode=I2C_Fast\nI2C4.IPParameters=Timing,I2C_Speed_Mode\nI2C4.Timing=0x00501E6C\nKeepUserPlacement=false\nMcu.CPN=STM32H750VBT6\nMcu.Family=STM32H7\nMcu.IP0=CORTEX_M7\nMcu.IP1=DEBUG\nMcu.IP10=UART7\nMcu.IP11=UART8\nMcu.IP12=USART1\nMcu.IP13=USART2\nMcu.IP14=USART3\nMcu.IP15=USART6\nMcu.IP2=DMA\nMcu.IP3=FREERTOS\nMcu.IP4=I2C4\nMcu.IP5=NVIC\nMcu.IP6=RCC\nMcu.IP7=SYS\nMcu.IP8=UART4\nMcu.IP9=UART5\nMcu.IPNb=16\nMcu.Name=STM32H750VBTx\nMcu.Package=LQFP100\nMcu.Pin0=PE2\nMcu.Pin1=PE3\nMcu.Pin10=PE15\nMcu.Pin11=PB10\nMcu.Pin12=PB11\nMcu.Pin13=PB12\nMcu.Pin14=PB13\nMcu.Pin15=PB14\nMcu.Pin16=PB15\nMcu.Pin17=PD11\nMcu.Pin18=PD12\nMcu.Pin19=PD13\nMcu.Pin2=PH0-OSC_IN (PH0)\nMcu.Pin20=PC6\nMcu.Pin21=PC7\nMcu.Pin22=PC8\nMcu.Pin23=PC9\nMcu.Pin24=PA9\nMcu.Pin25=PA10\nMcu.Pin26=PA11\nMcu.Pin27=PA12\nMcu.Pin28=PA13 (JTMS/SWDIO)\nMcu.Pin29=PA14 (JTCK/SWCLK)\nMcu.Pin3=PH1-OSC_OUT (PH1)\nMcu.Pin30=PA15 (JTDI)\nMcu.Pin31=PC12\nMcu.Pin32=PD0\nMcu.Pin33=PD1\nMcu.Pin34=PD2\nMcu.Pin35=PD3\nMcu.Pin36=PD4\nMcu.Pin37=PD5\nMcu.Pin38=PD6\nMcu.Pin39=PB3 (JTDO/TRACESWO)\nMcu.Pin4=PA0\nMcu.Pin40=PB6\nMcu.Pin41=PB7\nMcu.Pin42=PB8\nMcu.Pin43=PB9\nMcu.Pin44=PE0\nMcu.Pin45=PE1\nMcu.Pin46=VP_FREERTOS_VS_CMSIS_V1\nMcu.Pin47=VP_SYS_VS_tim1\nMcu.Pin48=VP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.3.0_1.3.0\nMcu.Pin5=PA1\nMcu.Pin6=PB2\nMcu.Pin7=PE7\nMcu.Pin8=PE8\nMcu.Pin9=PE14\nMcu.PinsNb=49\nMcu.ThirdParty0=STMicroelectronics.X-CUBE-ALGOBUILD.1.3.0\nMcu.ThirdPartyNb=1\nMcu.UserConstants=\nMcu.UserName=STM32H750VBTx\nMxCube.Version=6.5.0\nMxDb.Version=DB.6.0.50\nNVIC.BusFault_IRQn=true\\:0\\:0\\:false\\:false\\:true\\:false\\:false\\:false\\:true\nNVIC.DMA1_Stream0_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:false\\:true\\:true\nNVIC.DMA1_Stream1_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:false\\:true\\:true\nNVIC.DMA1_Stream2_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:false\\:true\\:true\nNVIC.DMA1_Stream3_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:false\\:true\\:true\nNVIC.DMA2_Stream0_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:false\\:false\\:true\\:true\nNVIC.DMA2_Stream1_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:false\\:false\\:true\\:true\nNVIC.DMA2_Stream2_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:false\\:false\\:true\\:true\nNVIC.DebugMonitor_IRQn=true\\:0\\:0\\:false\\:false\\:true\\:false\\:false\\:false\\:true\nNVIC.EXTI9_5_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.ForceEnableDMAVector=true\nNVIC.HardFault_IRQn=true\\:0\\:0\\:false\\:false\\:true\\:false\\:false\\:false\\:true\nNVIC.I2C4_EV_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.MemoryManagement_IRQn=true\\:0\\:0\\:false\\:false\\:true\\:false\\:false\\:false\\:true\nNVIC.NonMaskableInt_IRQn=true\\:0\\:0\\:false\\:false\\:true\\:false\\:false\\:false\\:true\nNVIC.PendSV_IRQn=true\\:15\\:0\\:false\\:false\\:false\\:true\\:false\\:false\\:true\nNVIC.PriorityGroup=NVIC_PRIORITYGROUP_4\nNVIC.SVCall_IRQn=true\\:0\\:0\\:false\\:false\\:false\\:false\\:false\\:false\\:true\nNVIC.SavedPendsvIrqHandlerGenerated=true\nNVIC.SavedSvcallIrqHandlerGenerated=true\nNVIC.SavedSystickIrqHandlerGenerated=true\nNVIC.SysTick_IRQn=true\\:15\\:0\\:false\\:false\\:false\\:true\\:false\\:true\\:true\nNVIC.TIM1_UP_IRQn=true\\:15\\:0\\:false\\:false\\:true\\:false\\:false\\:true\\:true\nNVIC.TimeBase=TIM1_UP_IRQn\nNVIC.TimeBaseIP=TIM1\nNVIC.UART4_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.UART5_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.UART7_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.UART8_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.USART1_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.USART2_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.USART3_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.USART6_IRQn=true\\:5\\:0\\:false\\:false\\:true\\:true\\:true\\:true\\:true\nNVIC.UsageFault_IRQn=true\\:0\\:0\\:false\\:false\\:true\\:false\\:false\\:false\\:true\nPA0.GPIOParameters=GPIO_Label\nPA0.GPIO_Label=ARM_TXE\nPA0.Locked=true\nPA0.Signal=GPIO_Output\nPA1.GPIOParameters=GPIO_Label\nPA1.GPIO_Label=ARM_RXE\nPA1.Locked=true\nPA1.Signal=GPIO_Output\nPA10.GPIOParameters=GPIO_Label\nPA10.GPIO_Label=LEG4_TXE\nPA10.Locked=true\nPA10.Signal=GPIO_Output\nPA11.Locked=true\nPA11.Mode=Asynchronous\nPA11.Signal=UART4_RX\nPA12.Locked=true\nPA12.Mode=Asynchronous\nPA12.Signal=UART4_TX\nPA13\\ (JTMS/SWDIO).Mode=JTAG_4_pins\nPA13\\ (JTMS/SWDIO).Signal=DEBUG_JTMS-SWDIO\nPA14\\ (JTCK/SWCLK).Mode=JTAG_4_pins\nPA14\\ (JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK\nPA15\\ (JTDI).Mode=JTAG_4_pins\nPA15\\ (JTDI).Signal=DEBUG_JTDI\nPA9.GPIOParameters=GPIO_Label\nPA9.GPIO_Label=LEG4_RXE\nPA9.Locked=true\nPA9.Signal=GPIO_Output\nPB10.Mode=Asynchronous\nPB10.Signal=USART3_TX\nPB11.GPIOParameters=GPIO_Speed\nPB11.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH\nPB11.Locked=true\nPB11.Mode=Asynchronous\nPB11.Signal=USART3_RX\nPB12.GPIOParameters=GPIO_Label\nPB12.GPIO_Label=LEG1_TXE\nPB12.Locked=true\nPB12.Signal=GPIO_Output\nPB13.GPIOParameters=GPIO_Label\nPB13.GPIO_Label=LEG1_RXE\nPB13.Locked=true\nPB13.Signal=GPIO_Output\nPB14.Locked=true\nPB14.Mode=Asynchronous\nPB14.Signal=USART1_TX\nPB15.Locked=true\nPB15.Mode=Asynchronous\nPB15.Signal=USART1_RX\nPB2.Locked=true\nPB3\\ (JTDO/TRACESWO).Mode=JTAG_4_pins\nPB3\\ (JTDO/TRACESWO).Signal=DEBUG_JTDO-SWO\nPB6.Locked=true\nPB7.GPIOParameters=GPIO_Label\nPB7.GPIO_Label=MPU6050_SDA\nPB7.Mode=I2C\nPB7.Signal=I2C4_SDA\nPB8.GPIOParameters=GPIO_Label\nPB8.GPIO_Label=MPU6050_SCL\nPB8.Mode=I2C\nPB8.Signal=I2C4_SCL\nPB9.GPIOParameters=GPIO_PuPd,GPIO_Label\nPB9.GPIO_Label=MPU6050_INT\nPB9.GPIO_PuPd=GPIO_PULLUP\nPB9.Locked=true\nPB9.Signal=GPXTI9\nPC12.Locked=true\nPC12.Mode=Asynchronous\nPC12.Signal=UART5_TX\nPC6.Locked=true\nPC6.Mode=Asynchronous\nPC6.Signal=USART6_TX\nPC7.Locked=true\nPC7.Mode=Asynchronous\nPC7.Signal=USART6_RX\nPC8.GPIOParameters=GPIO_Label\nPC8.GPIO_Label=LEG6_TXE\nPC8.Locked=true\nPC8.Signal=GPIO_Output\nPC9.GPIOParameters=GPIO_Label\nPC9.GPIO_Label=LEG6_RXE\nPC9.Locked=true\nPC9.Signal=GPIO_Output\nPD0.GPIOParameters=GPIO_Label\nPD0.GPIO_Label=LEG5_TXE\nPD0.Locked=true\nPD0.Signal=GPIO_Output\nPD1.GPIOParameters=GPIO_Label\nPD1.GPIO_Label=LEG5_RXE\nPD1.Locked=true\nPD1.Signal=GPIO_Output\nPD11.Locked=true\nPD12.Locked=true\nPD13.Locked=true\nPD2.Locked=true\nPD2.Mode=Asynchronous\nPD2.Signal=UART5_RX\nPD3.GPIOParameters=GPIO_Label\nPD3.GPIO_Label=LEG2_TXE\nPD3.Locked=true\nPD3.Signal=GPIO_Output\nPD4.GPIOParameters=GPIO_Label\nPD4.GPIO_Label=LEG2_RXE\nPD4.Locked=true\nPD4.Signal=GPIO_Output\nPD5.Locked=true\nPD5.Mode=Asynchronous\nPD5.Signal=USART2_TX\nPD6.Locked=true\nPD6.Mode=Asynchronous\nPD6.Signal=USART2_RX\nPE0.Locked=true\nPE0.Mode=Asynchronous\nPE0.Signal=UART8_RX\nPE1.Locked=true\nPE1.Mode=Asynchronous\nPE1.Signal=UART8_TX\nPE14.GPIOParameters=GPIO_Label\nPE14.GPIO_Label=LEG3_TXE\nPE14.Locked=true\nPE14.Signal=GPIO_Output\nPE15.GPIOParameters=GPIO_Label\nPE15.GPIO_Label=LEG3_RXE\nPE15.Locked=true\nPE15.Signal=GPIO_Output\nPE2.Locked=true\nPE3.GPIOParameters=GPIO_Label\nPE3.GPIO_Label=LED\nPE3.Locked=true\nPE3.Signal=GPIO_Output\nPE7.Locked=true\nPE7.Mode=Asynchronous\nPE7.Signal=UART7_RX\nPE8.Locked=true\nPE8.Mode=Asynchronous\nPE8.Signal=UART7_TX\nPH0-OSC_IN\\ (PH0).Mode=HSE-External-Oscillator\nPH0-OSC_IN\\ (PH0).Signal=RCC_OSC_IN\nPH1-OSC_OUT\\ (PH1).Mode=HSE-External-Oscillator\nPH1-OSC_OUT\\ (PH1).Signal=RCC_OSC_OUT\nPinOutPanel.RotationAngle=0\nProjectManager.AskForMigrate=true\nProjectManager.BackupPrevious=false\nProjectManager.CompilerOptimize=6\nProjectManager.ComputerToolchain=false\nProjectManager.CoupleFile=true\nProjectManager.CustomerFirmwarePackage=\nProjectManager.DefaultFWLocation=true\nProjectManager.DeletePrevious=true\nProjectManager.DeviceId=STM32H750VBTx\nProjectManager.FirmwarePackage=STM32Cube FW_H7 V1.10.0\nProjectManager.FreePins=false\nProjectManager.HalAssertFull=false\nProjectManager.HeapSize=0x200\nProjectManager.KeepUserCode=true\nProjectManager.LastFirmware=true\nProjectManager.LibraryCopy=1\nProjectManager.MainLocation=Core/Src\nProjectManager.NoMain=true\nProjectManager.PreviousToolchain=\nProjectManager.ProjectBuild=false\nProjectManager.ProjectFileName=hexapod.ioc\nProjectManager.ProjectName=hexapod\nProjectManager.RegisterCallBack=\nProjectManager.StackSize=0x400\nProjectManager.TargetToolchain=MDK-ARM V5.32\nProjectManager.ToolChainLocation=\nProjectManager.UnderRoot=false\nProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART3_UART_Init-USART3-false-HAL-true,5-MX_UART8_Init-UART8-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_USART2_UART_Init-USART2-false-HAL-true,8-MX_UART4_Init-UART4-false-HAL-true,9-MX_UART5_Init-UART5-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true,11-MX_UART7_Init-UART7-false-HAL-true,12-MX_I2C4_Init-I2C4-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true\nRCC.ADCFreq_Value=129000000\nRCC.AHB12Freq_Value=120000000\nRCC.AHB4Freq_Value=120000000\nRCC.APB1Freq_Value=60000000\nRCC.APB2Freq_Value=60000000\nRCC.APB3Freq_Value=60000000\nRCC.APB4Freq_Value=60000000\nRCC.AXIClockFreq_Value=120000000\nRCC.CECFreq_Value=32000\nRCC.CKPERFreq_Value=64000000\nRCC.CortexFreq_Value=480000000\nRCC.CpuClockFreq_Value=480000000\nRCC.D1CPREFreq_Value=480000000\nRCC.D1PPRE=RCC_APB3_DIV2\nRCC.D2PPRE1=RCC_APB1_DIV2\nRCC.D2PPRE2=RCC_APB2_DIV2\nRCC.D3PPRE=RCC_APB4_DIV2\nRCC.DFSDMACLkFreq_Value=480000000\nRCC.DFSDMFreq_Value=60000000\nRCC.DIVM1=4\nRCC.DIVN1=60\nRCC.DIVP1Freq_Value=480000000\nRCC.DIVP2Freq_Value=129000000\nRCC.DIVP3Freq_Value=129000000\nRCC.DIVQ1Freq_Value=480000000\nRCC.DIVQ2Freq_Value=129000000\nRCC.DIVQ3Freq_Value=129000000\nRCC.DIVR1Freq_Value=480000000\nRCC.DIVR2Freq_Value=129000000\nRCC.DIVR3Freq_Value=129000000\nRCC.FDCANFreq_Value=480000000\nRCC.FMCFreq_Value=120000000\nRCC.FamilyName=M\nRCC.HCLK3ClockFreq_Value=120000000\nRCC.HCLKFreq_Value=120000000\nRCC.HPRE=RCC_HCLK_DIV4\nRCC.HRTIMFreq_Value=120000000\nRCC.I2C123Freq_Value=60000000\nRCC.I2C4Freq_Value=60000000\nRCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVN1,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HRTIMFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PWR_Regulator_Voltage_Scale,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI23Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value\nRCC.LPTIM1Freq_Value=60000000\nRCC.LPTIM2Freq_Value=60000000\nRCC.LPTIM345Freq_Value=60000000\nRCC.LPUART1Freq_Value=60000000\nRCC.LTDCFreq_Value=129000000\nRCC.MCO1PinFreq_Value=64000000\nRCC.MCO2PinFreq_Value=480000000\nRCC.PLL2FRACN=0\nRCC.PLL3FRACN=0\nRCC.PLLFRACN=0\nRCC.PWR_Regulator_Voltage_Scale=PWR_REGULATOR_VOLTAGE_SCALE0\nRCC.QSPIFreq_Value=120000000\nRCC.RNGFreq_Value=48000000\nRCC.RTCFreq_Value=32000\nRCC.SAI1Freq_Value=480000000\nRCC.SAI23Freq_Value=480000000\nRCC.SAI4AFreq_Value=480000000\nRCC.SAI4BFreq_Value=480000000\nRCC.SDMMCFreq_Value=480000000\nRCC.SPDIFRXFreq_Value=480000000\nRCC.SPI123Freq_Value=480000000\nRCC.SPI45Freq_Value=60000000\nRCC.SPI6Freq_Value=60000000\nRCC.SWPMI1Freq_Value=60000000\nRCC.SYSCLKFreq_VALUE=480000000\nRCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK\nRCC.Tim1OutputFreq_Value=120000000\nRCC.Tim2OutputFreq_Value=120000000\nRCC.TraceFreq_Value=480000000\nRCC.USART16Freq_Value=60000000\nRCC.USART234578Freq_Value=60000000\nRCC.USBFreq_Value=480000000\nRCC.VCO1OutputFreq_Value=960000000\nRCC.VCO2OutputFreq_Value=258000000\nRCC.VCO3OutputFreq_Value=258000000\nRCC.VCOInput1Freq_Value=16000000\nRCC.VCOInput2Freq_Value=2000000\nRCC.VCOInput3Freq_Value=2000000\nSH.GPXTI9.0=GPIO_EXTI9\nSH.GPXTI9.ConfNb=1\nSTMicroelectronics.X-CUBE-ALGOBUILD.1.3.0.DSPOoLibraryJjLibrary_Checked=true\nSTMicroelectronics.X-CUBE-ALGOBUILD.1.3.0.IPParameters=LibraryCcDSPOoLibraryJjDSPOoLibrary\nSTMicroelectronics.X-CUBE-ALGOBUILD.1.3.0.LibraryCcDSPOoLibraryJjDSPOoLibrary=true\nSTMicroelectronics.X-CUBE-ALGOBUILD.1.3.0_SwParameter=LibraryCcDSPOoLibraryJjDSPOoLibrary\\:true;\nUART7.BaudRate=100000\nUART7.IPParameters=BaudRate,Parity,RxPinLevelInvertParam,Mode\nUART7.Mode=MODE_RX\nUART7.Parity=PARITY_EVEN\nUART7.RxPinLevelInvertParam=UART_ADVFEATURE_RXINV_ENABLE\nUART8.BaudRate=115200\nUART8.FIFOMode=FIFOMODE_DISABLE\nUART8.IPParameters=BaudRate,OverrunDisableParam,FIFOMode\nUART8.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE\nUSART1.IPParameters=VirtualMode-Asynchronous\nUSART1.VirtualMode-Asynchronous=VM_ASYNC\nUSART2.IPParameters=VirtualMode-Asynchronous\nUSART2.VirtualMode-Asynchronous=VM_ASYNC\nUSART3.BaudRate=115200\nUSART3.DataInvertParam=ADVFEATURE_DATAINV_DISABLE\nUSART3.FIFOMode=FIFOMODE_DISABLE\nUSART3.IPParameters=VirtualMode-Asynchronous,BaudRate,Parity,RxPinLevelInvertParam,Mode,SwapParam,OverrunDisableParam,DataInvertParam,TxPinLevelInvertParam,FIFOMode\nUSART3.Mode=MODE_TX_RX\nUSART3.OverrunDisableParam=ADVFEATURE_OVERRUN_DISABLE\nUSART3.Parity=PARITY_NONE\nUSART3.RxPinLevelInvertParam=ADVFEATURE_RXINV_DISABLE\nUSART3.SwapParam=ADVFEATURE_SWAP_DISABLE\nUSART3.TxPinLevelInvertParam=ADVFEATURE_TXINV_DISABLE\nUSART3.VirtualMode-Asynchronous=VM_ASYNC\nUSART6.IPParameters=VirtualMode\nUSART6.VirtualMode=VM_ASYNC\nVP_FREERTOS_VS_CMSIS_V1.Mode=CMSIS_V1\nVP_FREERTOS_VS_CMSIS_V1.Signal=FREERTOS_VS_CMSIS_V1\nVP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.3.0_1.3.0.Mode=DSPOoLibraryJjLibrary\nVP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.3.0_1.3.0.Signal=STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.3.0_1.3.0\nVP_SYS_VS_tim1.Mode=TIM1\nVP_SYS_VS_tim1.Signal=SYS_VS_tim1\nboard=custom\n"
  },
  {
    "path": "SourceCode/kill.bat",
    "content": "del *.bak /s\ndel *.ddk /s\ndel *.edk /s\ndel *.lst /s\ndel *.lnp /s\ndel *.mpf /s\ndel *.mpj /s\ndel *.obj /s\ndel *.omf /s\n::del *.opt /s  ::不允许删除JTAG的设置\ndel *.plg /s\ndel *.rpt /s\ndel *.tmp /s\ndel *.__i /s\ndel *.crf /s\ndel *.o /s\ndel *.d /s\ndel *.axf /s\ndel *.tra /s\ndel *.dep /s           \ndel JLinkLog.txt /s\n\ndel *.iex /s\ndel *.htm /s\ndel *.sct /s\ndel *.map /s\nexit"
  },
  {
    "path": "readme.txt",
    "content": "这是六足机器人项目：\nBootLoader注意事项：\n1. 在main函数第一行加入SCB->VTOR = 0x90000000; /* 设置中断向量表地址 */\n2. 注释掉MPU_Config\n3. 不要修改和qspi有关的任何参数\n4. HCLK3必须维持在120MHz\n\n核心代码路径MDK-ARM/USER,机器人运动解算在gait_prg.cpp和gait_prg.h。\n\n若需要迁移到其他六足机器人上，则需要根据舵机特性修改leg.cpp和leg.h，并修改gait_prag.h的机械特性宏定义。\n"
  }
]